diff --git a/.config/lingua.dic b/.config/lingua.dic index 189f2a9e2d5c..59ca5caa72e2 100644 --- a/.config/lingua.dic +++ b/.config/lingua.dic @@ -1,109 +1,239 @@ -150 -adversary/SM -annualised/MS -Apache-2.0/M -api/SM +90 + +&& +1KB +1MB +5MB += API/SM APIs -assignee/SM -async +AccountId/MS +Apache-2.0/M +Autogenerated BFT/M +BTC/S +Best/MS +BlockId +BlockNumber +BridgeStorage +CLI/MS +Chain1 +Chain2 +ChainSpec +ChainTime +DOT/S +ERC-20 +Ethereum +FN +FinalizationError +GPL/M +GPLv3/M +GiB/S +Handler/MS +Hasher +HeaderA +HeaderId +InitiateChange +Instance1 +Instance2 +Instance42 +InstantCurrencyPayments +KSM/S +KYC/M +KeyPair +Kovan +Lane1 +Lane2 +Lane3 +LaneId +MIN_SIZE +MIT/M +MMR +MaxUnrewardedRelayerEntriesAtInboundLane +MaybeExtra +MaybeOrphan +Merklized +MessageNonce +MessageNonces +MessagePayload +MetricsParams +Millau/MS +OldHeader +OutboundMessages +PoA +PoV/MS +Pre +RLP +RPC/MS +Rialto/MS +Relayer/MS +Runtime1 +Runtime2 +SIZE_FACTOR +SS58 +SS58Prefix +STALL_SYNC_TIMEOUT +SURI +ServiceFactory/MS +SignedExtension +Stringified +Submitter1 +S|N +TCP +ThisChain +TODO +U256 +Unparsed +Vec +WND/S +Westend/MS +Wococo/MS +XCM/S +XCMP/M +annualised/MS +api/SM +aren +arg +args +async +auth +auths/SM +backoff +benchmarking/MS +best_substrate_header bitfield/MS blake2/MS blockchain/MS borked -BTC -BTC/S -CLI/MS -codec/SM +chain_getBlock +choosen config/MS crypto/MS customizable/B debian/M decodable/MS -dispatchable/SM -DMP/SM -DOT/S +delivery_and_dispatch_fee +dev +dispatchable +dispatchables +doesn ed25519 enum/MS -ERC-20 -ETH +entrypoint/MS ethereum/MS externality/MS extrinsic/MS extrinsics fedora/M -GiB/S -GPL/M -GPLv3/M -Handler/MS -HMP/SM +functor +fuzzer +hasher +hardcoded https +implementers include/BG inherent/MS initialize/RG instantiate/B intrinsic/MS -intrinsics +invariant/MS +invariants io +isn isolate/BG -jaeger/MS js +jsonrpsee +keccak keccak256/M -KSM/S +keyring +keystore/MS kusama/S -KYC/M +lane +malus +max_value merkle/MS +metadata +millau misbehavior/SM misbehaviors -MIT/M -MQC/SM multivalidator/SM -NFT/SM +natively +no_std +nonces +number +ok oneshot/MS others' +pallet_bridge_grandpa +pallet_bridge_messages +pallet_message_lane parablock/MS parachain/MS +param/MS parameterize/D -picosecond/SM +plancks polkadot/MS pov-block/MS -PoV/MS +precommit promethius promethius' provisioner/MS +probabilistically +prune_depth +prune_end +receival +reconnection redhat/M repo/MS -RPC/MS runtime/MS rustc/MS +relayer/MS +shouldn +source_at_target +source_latest_confirmed +source_latest_generated +sp_finality_grandpa +spawner sr25519 +src +stringified struct/MS +submitters/MS subsystem/MS subsystems' +subcommand/MS +synchronizer +target_at_source +target_latest_confirmed +target_latest_received taskmanager/MS -TCP teleport/RG teleportation/SM teleporter/SM teleporters testnet/MS +timeframe +tokio +timestamp trie/MS trustless/Y -tuple/SM +tuple +u32 ubuntu/M -UDP -UI -unfinalize/B +undeliverable +unfinalized union/MSG +unpruned unservable/B +unsynced +updatable validator/SM -VMP/SM -VRF/SM +ve +vec +verifier w3f/MS +wakeup wasm/M -WND/S -XCM/S -XCMP/M -instantiation/SM -NFA +websocket +x2 +~ diff --git a/.config/spellcheck.toml b/.config/spellcheck.toml index 0b66d54e2413..e061c29ac222 100644 --- a/.config/spellcheck.toml +++ b/.config/spellcheck.toml @@ -2,12 +2,12 @@ lang = "en_US" search_dirs = ["."] extra_dictionaries = ["lingua.dic"] +skip_os_lookups = true +use_builtin = true [hunspell.quirks] # `Type`'s # 5x -# He tagged it as 'TheGreatestOfAllTimes' -# Transforms' -transform_regex = ["^'([^\\s])'$", "^[0-9]+(?:\\.[0-9]*)?(x|%)$", "^(.*)'$", "^\\+$"] +transform_regex = ["^'([^\\s])'$", "^[0-9]+(?:\\.[0-9]*)?x$", "^'s$", "^\\+$", "[><+-]"] allow_concatenation = true allow_dashes = true diff --git a/.dockerignore b/.dockerignore index 45051abf40fe..f4ceea785605 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1 @@ -doc -**/target +**/target/ diff --git a/.editorconfig b/.editorconfig index 6b736d884f22..e2375881ea06 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,26 +1,19 @@ root = true - -[*.rs] +[*] indent_style=tab indent_size=tab tab_width=4 -max_line_length=120 end_of_line=lf charset=utf-8 trim_trailing_whitespace=true +max_line_length=100 insert_final_newline=true -[*.yml] +[*.{yml,md,yaml,sh}] indent_style=space indent_size=2 tab_width=8 end_of_line=lf -charset=utf-8 -trim_trailing_whitespace=true -insert_final_newline=true -[*.sh] -indent_style=space -indent_size=2 -tab_width=8 -end_of_line=lf +[*.md] +max_line_length=80 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 9f4d769e94de..000000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -bridges/* @tomusdrw @svyatonik @hcastano diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index c2214ab7d932..000000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -- It would help if you submit info about the system you are running, e.g.: operating system, kernel version, amount of available memory and swap, etc. -- Logs could be very helpful. If possible, submit the whole log. Please format it as ```code blocks```. -- Describe the role your node plays, e.g. validator, full node or light client. -- Any command-line options were passed? diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md deleted file mode 100644 index 0f4862e5d51e..000000000000 --- a/.github/ISSUE_TEMPLATE/release.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -name: Release issue template -about: Tracking issue for new releases -title: Polkadot {{ env.VERSION }} Release checklist ---- -# Release Checklist - -This is the release checklist for Polkadot {{ env.VERSION }}. **All** following -checks should be completed before publishing a new release of the -Polkadot/Kusama/Westend runtime or client. The current release candidate can be -checked out with `git checkout release-{{ env.VERSION }}` - -### Runtime Releases - -These checks should be performed on the codebase prior to forking to a release- -candidate branch. - -- [ ] Verify [`spec_version`](#spec-version) has been incremented since the - last release for any native runtimes from any existing use on public - (non-private/test) networks. -- [ ] Verify previously [completed migrations](#old-migrations-removed) are - removed for any public (non-private/test) networks. -- [ ] Verify pallet and [extrinsic ordering](#extrinsic-ordering) has stayed - the same. Bump `transaction_version` if not. -- [ ] Verify new extrinsics have been correctly whitelisted/blacklisted for - [proxy filters](#proxy-filtering). -- [ ] Verify [benchmarks](#benchmarks) have been updated for any modified - runtime logic. - -The following checks can be performed after we have forked off to the release- -candidate branch or started an additional release candidate branch (rc-2, rc-3, etc) - -- [ ] Verify [new migrations](#new-migrations) complete successfully, and the - runtime state is correctly updated for any public (non-private/test) - networks. -- [ ] Verify [Polkadot JS API](#polkadot-js) are up to date with the latest - runtime changes. -- [ ] Push runtime upgrade to Westend and verify network stability. - -### All Releases - -- [ ] Check that the new client versions have [run on the network](#burn-in) - without issue for 12 hours. -- [ ] Check that a draft release has been created at - https://github.com/paritytech/polkadot/releases with relevant [release - notes](#release-notes) -- [ ] Check that [build artifacts](#build-artifacts) have been added to the - draft-release - -## Notes - -### Burn In - -Ensure that Parity DevOps has run the new release on Westend, Kusama, and -Polkadot validators for at least 12 hours prior to publishing the release. - -### Build Artifacts - -Add any necessary assets to the release. They should include: - -- Linux binary -- GPG signature of the Linux binary -- SHA256 of binary -- Source code -- Wasm binaries of any runtimes - -### Release notes - -The release notes should list: - -- The priority of the release (i.e., how quickly users should upgrade) - this is - based on the max priority of any *client* changes. -- Which native runtimes and their versions are included -- The proposal hashes of the runtimes as built with - [srtool](https://gitlab.com/chevdor/srtool) -- Any changes in this release that are still awaiting audit - -The release notes may also list: - -- Free text at the beginning of the notes mentioning anything important - regarding this release -- Notable changes (those labelled with B[1-9]-* labels) separated into sections - -### Spec Version - -A runtime upgrade must bump the spec number. This may follow a pattern with the -client release (e.g. runtime v12 corresponds to v0.8.12, even if the current -runtime is not v11). - -### Old Migrations Removed - -Any previous `on_runtime_upgrade` functions from old upgrades must be removed -to prevent them from executing a second time. The `on_runtime_upgrade` function -can be found in `runtime//src/lib.rs`. - -### New Migrations - -Ensure that any migrations that are required due to storage or logic changes -are included in the `on_runtime_upgrade` function of the appropriate pallets. - -### Extrinsic Ordering - -Offline signing libraries depend on a consistent ordering of call indices and -functions. Compare the metadata of the current and new runtimes and ensure that -the `module index, call index` tuples map to the same set of functions. In case -of a breaking change, increase `transaction_version`. - -To verify the order has not changed: - -1. Download the latest release-candidate binary either from the draft-release -on Github, or -[AWS](https://releases.parity.io/polkadot/x86_64-debian:stretch/{{ env.VERSION }}-rc1/polkadot) -(adjust the rc in this URL as necessary). -2. Run the release-candidate binary using a local chain: -`./polkadot --chain=polkadot-local` or `./polkadot --chain=kusama.local` -3. Use [`polkadot-js-tools`](https://github.com/polkadot-js/tools) to compare -the metadata: - - For Polkadot: `docker run --network host jacogr/polkadot-js-tools metadata wss://rpc.polkadot.io ws://localhost:9944` - - For Kusama: `docker run --network host jacogr/polkadot-js-tools metadata wss://kusama-rpc.polkadot.io ws://localhost:9944` -4. Things to look for in the output are lines like: - - `[Identity] idx 28 -> 25 (calls 15)` - indicates the index for `Identity` has changed - - `[+] Society, Recovery` - indicates the new version includes 2 additional modules/pallets. - - If no indices have changed, every modules line should look something like `[Identity] idx 25 (calls 15)` - -Note: Adding new functions to the runtime does not constitute a breaking change -as long as they are added to the end of a pallet (i.e., does not break any -other call index). - -### Proxy Filtering - -The runtime contains proxy filters that map proxy types to allowable calls. If -the new runtime contains any new calls, verify that the proxy filters are up to -date to include them. - -### Benchmarks - -Run the benchmarking suite with the new runtime and update any function weights -if necessary. - -### Polkadot JS - -Ensure that a release of [Polkadot JS API]() contains any new types or -interfaces necessary to interact with the new runtime. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b03aff183046..a06d573703d8 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,17 +1,42 @@ version: 2 updates: - - package-ecosystem: "cargo" - directory: "/" - labels: ["A2-insubstantial", "B0-silent", "C1-low 📌"] - # Handle updates for crates from github.com/paritytech/substrate manually. - ignore: - - dependency-name: "substrate-*" - - dependency-name: "sc-*" - - dependency-name: "sp-*" - - dependency-name: "frame-*" - - dependency-name: "fork-tree" - - dependency-name: "pallet-*" - - dependency-name: "beefy-*" - - dependency-name: "try-runtime-*" - schedule: - interval: "daily" +- package-ecosystem: cargo + directory: "/" + schedule: + interval: weekly + time: "03:00" + timezone: Europe/Berlin + open-pull-requests-limit: 20 + ignore: + - dependency-name: frame-* + versions: + - ">= 0" + - dependency-name: node-inspect + versions: + - ">= 0" + - dependency-name: pallet-* + versions: + - ">= 0" + - dependency-name: sc-* + versions: + - ">= 0" + - dependency-name: sp-* + versions: + - ">= 0" + - dependency-name: substrate-* + versions: + - ">= 0" + - dependency-name: vergen + versions: + - 4.0.1 + - 4.0.2 + - 4.1.0 + - 4.2.0 + - dependency-name: jsonrpc-core + versions: + - 17.0.0 + - dependency-name: finality-grandpa + versions: + - 0.13.0 + - 0.14.0 + rebase-strategy: disabled diff --git a/.github/workflows/auto-label-prs.yml b/.github/workflows/auto-label-prs.yml deleted file mode 100644 index f0b8e9b343e2..000000000000 --- a/.github/workflows/auto-label-prs.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Label PRs -on: - pull_request: - types: [opened,ready_for_review] - -jobs: - label-new-prs: - runs-on: ubuntu-latest - steps: - - name: Label drafts - uses: andymckay/labeler@master - if: github.event.pull_request.draft == true - with: - add-labels: 'A3-inprogress' - remove-labels: 'A0-pleasereview' - - name: Label PRs - uses: andymckay/labeler@master - if: github.event.pull_request.draft == false && ! contains(github.event.pull_request.labels.*.name, 'A2-insubstantial') - with: - add-labels: 'A0-pleasereview' - remove-labels: 'A3-inprogress' diff --git a/.github/workflows/burnin-label-notification.yml b/.github/workflows/burnin-label-notification.yml deleted file mode 100644 index 5b9fbcab9662..000000000000 --- a/.github/workflows/burnin-label-notification.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Notify devops when burn-in label applied -on: - pull_request: - types: [labeled] - -jobs: - notify-devops: - runs-on: ubuntu-latest - steps: - - name: Notify devops - if: github.event.label.name == 'A1-needsburnin' - uses: s3krit/matrix-message-action@v0.0.3 - with: - room_id: ${{ secrets.POLKADOT_DEVOPS_MATRIX_ROOM_ID }} - access_token: ${{ secrets.POLKADOT_DEVOPS_MATRIX_ACCESS_TOKEN }} - message: "@room Burn-in request received for the following PR: ${{ github.event.pull_request.html_url }}" - server: "matrix.parity.io" diff --git a/.github/workflows/check-labels.yml b/.github/workflows/check-labels.yml deleted file mode 100644 index e70bfddfd3e3..000000000000 --- a/.github/workflows/check-labels.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Check labels - -on: - pull_request: - types: [labeled, opened, synchronize, unlabeled] - -jobs: - check-labels: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - ref: ${{ github.event.pull_request.head.ref }} - repository: ${{ github.event.pull_request.head.repo.full_name }} - - name: Check labels - run: bash ${{ github.workspace }}/scripts/github/check_labels.sh - env: - GITHUB_PR: ${{ github.event.pull_request.number }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HEAD_SHA: ${{ github.event.pull_request.head.sha }} - BASE_SHA: ${{ github.event.pull_request.base.sha }} diff --git a/.github/workflows/honggfuzz.yml b/.github/workflows/honggfuzz.yml deleted file mode 100644 index af0de3eb5017..000000000000 --- a/.github/workflows/honggfuzz.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Run nightly fuzzer jobs - -on: - schedule: - - cron: '0 0 * * *' - -jobs: - erasure-coding-round-trip: - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - - name: Install minimal stable Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install minimal nightly Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - target: wasm32-unknown-unknown - - - name: Install honggfuzz deps - run: sudo apt-get install --no-install-recommends binutils-dev libunwind8-dev - - - name: Install honggfuzz - uses: actions-rs/cargo@v1 - with: - command: install - args: honggfuzz --version "0.5.54" - - - name: Build fuzzer binaries - working-directory: erasure-coding/fuzzer - run: cargo hfuzz build - - - name: Run fuzzer - working-directory: erasure-coding/fuzzer - run: bash $GITHUB_WORKSPACE/scripts/github/run_fuzzer.sh round_trip - - erasure-coding-reconstruct: - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - - name: Install minimal stable Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install minimal nightly Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - target: wasm32-unknown-unknown - - - name: Install honggfuzz deps - run: sudo apt-get install --no-install-recommends binutils-dev libunwind8-dev - - - name: Install honggfuzz - uses: actions-rs/cargo@v1 - with: - command: install - args: honggfuzz --version "0.5.54" - - - name: Build fuzzer binaries - working-directory: erasure-coding/fuzzer - run: cargo hfuzz build - - - name: Run fuzzer - working-directory: erasure-coding/fuzzer - run: bash $GITHUB_WORKSPACE/scripts/github/run_fuzzer.sh reconstruct diff --git a/.github/workflows/publish-docker-release.yml b/.github/workflows/publish-docker-release.yml deleted file mode 100644 index 811849c561a5..000000000000 --- a/.github/workflows/publish-docker-release.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Publish Docker image for new releases - -on: - release: - types: - - published - -jobs: - main: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to Dockerhub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - push: true - file: scripts/docker/release.Dockerfile - tags: | - parity/polkadot:latest - parity/polkadot:${{ github.event.release.tag_name }} - build-args: | - POLKADOT_VERSION=${{ github.event.release.tag_name }} - VCS_REF=${{ github.ref }} - BUILD_DATE=${{ github.event.release.published_at }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/publish-draft-release.yml b/.github/workflows/publish-draft-release.yml deleted file mode 100644 index b40bc8ba9274..000000000000 --- a/.github/workflows/publish-draft-release.yml +++ /dev/null @@ -1,145 +0,0 @@ -name: Publish draft release - -on: - push: - tags: - # Catches v1.2.3 and v1.2.3-rc1 - - v[0-9]+.[0-9]+.[0-9]+* - -jobs: - get-rust-versions: - runs-on: ubuntu-latest - container: - image: paritytech/ci-linux:production - outputs: - rustc-stable: ${{ steps.get-rust-versions.outputs.stable }} - rustc-nightly: ${{ steps.get-rust-versions.outputs.nightly }} - steps: - - id: get-rust-versions - run: | - echo "::set-output name=stable::$(rustc +stable --version)" - echo "::set-output name=nightly::$(rustc +nightly --version)" - - build-runtimes: - runs-on: ubuntu-latest - strategy: - matrix: - runtime: ['polkadot', 'kusama'] - container: - image: paritytech/srtool:nightly-2021-03-15 - volumes: - - ${{ github.workspace }}:/build - env: - PACKAGE: ${{ matrix.runtime }}-runtime - RUSTC_VERSION: nightly-2020-10-27 - steps: - - uses: actions/checkout@v2 - - name: Cache target dir - uses: actions/cache@v2 - with: - path: '${{ github.workspace }}/runtime/${{ matrix.runtime }}/target' - key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} - restore-keys: | - srtool-target-${{ matrix.runtime }}- - srtool-target- - - name: Build ${{ matrix.runtime }} runtime - id: build-runtime - shell: bash - env: - srtool_output_filename: ${{ matrix.runtime }}_srtool_output.json - run: | - cd /build - pwd - ls -la - build --json | tee $srtool_output_filename - cat $srtool_output_filename - while IFS= read -r line; do - echo "::set-output name=$line::$(jq -r ".$line" < $srtool_output_filename)" - done <<< "$(jq -r 'keys[]' < $srtool_output_filename)" - - name: Upload ${{ matrix.runtime }} srtool json - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.runtime }}-srtool-json - path: ${{ matrix.runtime }}_srtool_output.json - - name: Upload ${{ matrix.runtime }} runtime - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.runtime }}-runtime - path: "${{ steps.build-runtime.outputs.wasm }}" - - publish-draft-release: - runs-on: ubuntu-latest - needs: ['get-rust-versions', 'build-runtimes'] - outputs: - release_url: ${{ steps.create-release.outputs.html_url }} - asset_upload_url: ${{ steps.create-release.outputs.upload_url }} - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - path: polkadot - - name: Set up Ruby 2.7 - uses: actions/setup-ruby@v1 - with: - ruby-version: 2.7 - - name: Download srtool json output - uses: actions/download-artifact@v2 - - name: Generate release text - env: - RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }} - RUSTC_NIGHTLY: ${{ needs.get-rust-versions.outputs.rustc-nightly }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gem install changelogerator git toml - ruby $GITHUB_WORKSPACE/polkadot/scripts/github/generate_release_text.rb | tee release_text.md - - name: Create draft release - id: create-release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Polkadot ${{ github.ref }} - body_path: ./release_text.md - draft: true - publish-runtimes: - runs-on: ubuntu-latest - needs: ['publish-draft-release'] - strategy: - matrix: - runtime: ['polkadot', 'kusama'] - steps: - - uses: actions/checkout@v2 - - uses: actions/download-artifact@v2 - - name: Set up Ruby 2.7 - uses: actions/setup-ruby@v1 - with: - ruby-version: 2.7 - - name: Get runtime version - id: get-runtime-ver - run: | - ls - ls "${{ matrix.runtime }}-runtime" - runtime_ver="$(ruby -e 'require "./scripts/github/lib.rb"; puts get_runtime("${{ matrix.runtime }}")')" - echo "::set-output name=runtime_ver::$runtime_ver" - - name: Upload ${{ matrix.runtime }} wasm - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.publish-draft-release.outputs.asset_upload_url }} - asset_path: "${{ matrix.runtime }}-runtime/${{ matrix.runtime }}_runtime.compact.wasm" - asset_name: ${{ matrix.runtime }}_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.wasm - asset_content_type: application/wasm - - post_to_matrix: - runs-on: ubuntu-latest - needs: publish-draft-release - steps: - - name: Internal polkadot channel - uses: s3krit/matrix-message-action@v0.0.2 - with: - room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }} - access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} - message: "**New version of polkadot tagged**: ${{ github.ref }}
Draft release created: ${{ needs.publish-draft-release.outputs.release_url }}" - server: "matrix.parity.io" diff --git a/.github/workflows/release-bot.yml b/.github/workflows/release-bot.yml deleted file mode 100644 index 20c6474cc3f5..000000000000 --- a/.github/workflows/release-bot.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Send new release notification to matrix channels -on: - release: - types: - - published -jobs: - ping_matrix: - strategy: - matrix: - channel: - - '!LhjZccBOqFNYKLdmbb:polkadot.builders' # #KusamaValidatorLounge:polkadot.builders - - '!FMwxpQnYhRCNDRsYGI:matrix.parity.io' # #kusama-announcements:matrix.parity.io - - '!NZrbtteFeqYKCUGQtr:matrix.parity.io' # #polkadotvalidatorlounge:web3.foundation - - '!UqHPWiCBGZWxrmYBkF:matrix.parity.io' # #polkadot-announcements:matrix.parity.io - - '!NTogofoetwjbTwOoPi:matrix.parity.io' # Internal release-notes channel - runs-on: ubuntu-latest - steps: - - uses: s3krit/matrix-message-action@v0.0.3 - with: - room_id: ${{ matrix.channel }} # heh - access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} - message: "***Polkadot ${{github.event.release.tag_name}} has been released!***
${{github.event.release.html_url}}

${{github.event.release.body}}
" - server: "matrix.parity.io" diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml deleted file mode 100644 index 515d9a143b4f..000000000000 --- a/.github/workflows/release-candidate.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Release-candidate automation -on: - push: - branches: - - release-v[0-9]+.[0-9]+.[0-9]+ -jobs: - tag_rc: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - id: compute_tag - name: Compute next rc tag - shell: bash - run: | - # Get last rc tag if exists, else set it to {version}-rc1 - version=${GITHUB_REF#refs/heads/release-} - echo "$version" - echo "::set-output name=version::$version" - git tag -l - last_rc=$(git tag -l "$version-rc*" | sort -V | tail -n 1) - if [ -n "$last_rc" ]; then - suffix=$(echo "$last_rc" | grep -Eo '[0-9]+$') - echo $suffix - ((suffix++)) - echo $suffix - echo "::set-output name=new_tag::$version-rc$suffix" - echo "::set-output name=first_rc::false" - else - echo "::set-output name=new_tag::$version-rc1" - echo "::set-output name=first_rc::true" - fi - - name: Apply new tag - uses: tvdias/github-tagger@v0.0.2 - with: - # We can't use the normal GITHUB_TOKEN for the following reason: - # https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token - # RELEASE_BRANCH_TOKEN requires public_repo OAuth scope - repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}" - tag: ${{ steps.compute_tag.outputs.new_tag }} - - id: create-issue - uses: JasonEtco/create-an-issue@v2 - # Only create the issue if it's the first release candidate - if: steps.compute_tag.outputs.first_rc == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERSION: ${{ steps.compute_tag.outputs.version }} - with: - filename: .github/ISSUE_TEMPLATE/release.md - - uses: s3krit/matrix-message-action@v0.0.2 - if: steps.create-issue.outputs.url != '' - with: - room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }} - access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} - server: "matrix.parity.io" - message: "Release process for polkadot ${{ steps.compute_tag.outputs.version }} has been started. Tracking issue: ${{ steps.create-issue.outputs.url }}" diff --git a/.gitignore b/.gitignore index a654e51fd7c8..5d10cfa41a44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,26 @@ **/target/ +**/.env +**/.env2 +**/rust-toolchain +hfuzz_target +hfuzz_workspace +**/Cargo.lock + **/*.rs.bk -*.swp -.wasm-binaries -runtime/wasm/target/ -**/._* -.idea -.vscode -polkadot.* -!polkadot.service -!.rpm/* + +*.o +*.so +*.rlib +*.dll +.gdb_history + +*.exe + .DS_Store + .cargo +.idea +.vscode +*.iml +*.swp +*.swo diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 079621cbdc54..0e69a91af165 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,33 +1,22 @@ -# .gitlab-ci.yml -# -# polkadot -# -# pipelines can be triggered manually in the web -# setting DEPLOY_TAG will only deploy the tagged image -# -# please do not add new jobs without "rules:" and "*-env". There are &rules-test for everything, -# &rules-pr-only preset. And "kubernetes-env" with "docker-env" to set a runner -# which executes the job. - stages: + - lint + - check - test - build - publish - - deploy - -image: paritytech/ci-linux:production workflow: rules: - if: $CI_COMMIT_TAG - if: $CI_COMMIT_BRANCH -variables: +variables: &default-vars GIT_STRATEGY: fetch GIT_DEPTH: 100 - CI_SERVER_NAME: "GitLab CI" - DOCKER_OS: "debian:stretch" + CARGO_INCREMENTAL: 0 ARCH: "x86_64" + CI_IMAGE: "paritytech/bridges-ci:staging" + RUST_BACKTRACE: full default: cache: {} @@ -36,16 +25,23 @@ default: artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" when: on_success - expire_in: 28 days + expire_in: 7 days paths: - - ./artifacts/ + - artifacts/ -.kubernetes-env: &kubernetes-env +.kubernetes-build: &kubernetes-build tags: - kubernetes-parity-build interruptible: true .docker-env: &docker-env + image: "${CI_IMAGE}" + before_script: + - rustup show + - cargo --version + - rustup +nightly show + - cargo +nightly --version + - sccache -s retry: max: 2 when: @@ -56,336 +52,240 @@ default: tags: - linux-docker -.compiler-info: &compiler-info - before_script: - - rustup show - - cargo --version - - sccache -s +.test-refs: &test-refs + rules: + # FIXME: This is the cause why pipelines wouldn't start. The problem might be in our custom + # mirroring. This should be investigated further, but for now let's have the working + # pipeline. + # - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH + # changes: + # - '**.md' + # - diagrams/* + # - docs/* + # when: never + - if: $CI_PIPELINE_SOURCE == "pipeline" + - if: $CI_PIPELINE_SOURCE == "web" + - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_COMMIT_REF_NAME == "master" + - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs + - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 -.rules-test: &rules-test - # these jobs run always* +.build-refs: &build-refs rules: - - if: $CI_COMMIT_REF_NAME == "rococo-v1" + # won't run on the CI image update pipeline + - if: $CI_PIPELINE_SOURCE == "pipeline" when: never - - when: always + - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 + - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]{4}-[0-9]{2}-[0-9]{2}.*$/ # i.e. v2021-09-27, v2021-09-27-1 + # there are two types of nightly pipelines: + # 1. this one is triggered by the schedule with $PIPELINE == "nightly", it's for releasing. + # this job runs only on nightly pipeline with the mentioned variable, against `master` branch + - if: $CI_PIPELINE_SOURCE == "schedule" && $PIPELINE == "nightly" -.pr-only: &rules-pr-only - # these jobs run only on PRs +.nightly-test: &nightly-test rules: - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - when: never - - if: $CI_PIPELINE_SOURCE == "schedule" - when: never - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs + # 2. another is triggered by scripts repo $CI_PIPELINE_SOURCE == "pipeline" it's for the CI image + # update, it also runs all the nightly checks. + - if: $CI_PIPELINE_SOURCE == "pipeline" -#### stage: test +#### stage: lint -check-runtime: - stage: test - image: paritytech/tools:latest - <<: *kubernetes-env - <<: *rules-pr-only - variables: - GITLAB_API: "https://gitlab.parity.io/api/v4" - GITHUB_API_PROJECT: "parity%2Finfrastructure%2Fgithub-api" +clippy-nightly: + stage: lint + <<: *docker-env + <<: *test-refs script: - - ./scripts/gitlab/check_runtime.sh - allow_failure: true + - SKIP_WASM_BUILD=1 cargo +nightly clippy --all-targets -- -A clippy::redundant_closure -check-line-width: - stage: test - image: paritytech/tools:latest - <<: *kubernetes-env - <<: *rules-pr-only +fmt: + stage: lint + <<: *docker-env + <<: *test-refs script: - - ./scripts/gitlab/check_line_width.sh - allow_failure: true + - cargo +nightly fmt --all -- --check -test-deterministic-wasm: - stage: test - <<: *rules-test +spellcheck: + stage: lint <<: *docker-env - <<: *compiler-info + <<: *test-refs script: - - ./scripts/gitlab/test_deterministic_wasm.sh + - cargo spellcheck check -vvvv --cfg=.config/spellcheck.toml --checkers hunspell -m 1 -test-build-linux-stable: - stage: test +#### stage: check + +check: + stage: check <<: *docker-env - <<: *compiler-info - <<: *collect-artifacts - variables: - RUST_TOOLCHAIN: stable - # Enable debug assertions since we are running optimized builds for testing - # but still want to have debug assertions. - RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" + <<: *test-refs + script: &check-script + - SKIP_WASM_BUILD=1 time cargo check --locked --verbose --workspace + # Check Rialto benchmarks runtime + - SKIP_WASM_BUILD=1 time cargo check -p rialto-runtime --locked --features runtime-benchmarks --verbose + # Check Millau benchmarks runtime + - SKIP_WASM_BUILD=1 time cargo check -p millau-runtime --locked --features runtime-benchmarks --verbose + +check-nightly: + stage: check + <<: *docker-env + <<: *nightly-test script: - - ./scripts/gitlab/test_linux_stable.sh - # we're using the bin built here, instead of having a parallel `build-linux-release` - - time cargo build --release --verbose --bin polkadot - - sccache -s - # pack-artifacts - - mkdir -p ./artifacts - - VERSION="${CI_COMMIT_REF_NAME}" # will be tag or branch name - - mv ./target/release/polkadot ./artifacts/. - - sha256sum ./artifacts/polkadot | tee ./artifacts/polkadot.sha256 - - EXTRATAG="$(./artifacts/polkadot --version | - sed -n -r 's/^polkadot ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p')" - - EXTRATAG="${CI_COMMIT_REF_NAME}-${EXTRATAG}-$(cut -c 1-8 ./artifacts/polkadot.sha256)" - - echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})" - - echo -n ${VERSION} > ./artifacts/VERSION - - echo -n ${EXTRATAG} > ./artifacts/EXTRATAG - - cp -r scripts/docker/* ./artifacts + - rustup default nightly + - *check-script + +#### stage: test -check-web-wasm: +test: stage: test - <<: *rules-test <<: *docker-env - <<: *compiler-info - script: - # WASM support is in progress. As more and more crates support WASM, we should - # add entries here. See https://github.com/paritytech/polkadot/issues/625 - - ./scripts/gitlab/check_web_wasm.sh - - sccache -s + <<: *test-refs +# variables: +# RUSTFLAGS: "-D warnings" + script: &test-script + - time cargo fetch + - time cargo fetch --manifest-path=`cargo metadata --format-version=1 | jq --compact-output --raw-output ".packages[] | select(.name == \"polkadot-test-runtime\").manifest_path"` + - time cargo fetch --manifest-path=`cargo metadata --format-version=1 | jq --compact-output --raw-output ".packages[] | select(.name == \"polkadot-runtime\").manifest_path"` + - CARGO_NET_OFFLINE=true time cargo test --verbose --workspace -check-runtime-benchmarks: +test-nightly: stage: test - <<: *rules-test <<: *docker-env - <<: *compiler-info + <<: *nightly-test script: - # Check that the node will compile with `runtime-benchmarks` feature flag. - - ./scripts/gitlab/check_runtime_benchmarks.sh - - sccache -s + - rustup default nightly + - *test-script -build-adder-collator: +deny: stage: test + <<: *docker-env + <<: *nightly-test <<: *collect-artifacts + script: + - cargo deny check advisories --hide-inclusion-graph + - cargo deny check bans sources --hide-inclusion-graph + after_script: + - mkdir -p ./artifacts + - echo "___Complete logs can be found in the artifacts___" + - cargo deny check advisories 2> advisories.log + - cargo deny check bans sources 2> bans_sources.log + # this job is allowed to fail, only licenses check is important + allow_failure: true + +deny-licenses: + stage: test <<: *docker-env - <<: *compiler-info - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" + <<: *test-refs + <<: *collect-artifacts script: - - time cargo build --release --verbose -p test-parachain-adder-collator - - sccache -s - # pack artifacts + - cargo deny check licenses --hide-inclusion-graph + after_script: - mkdir -p ./artifacts - - mv ./target/release/adder-collator ./artifacts/. - - echo -n "${CI_COMMIT_REF_NAME}" > ./artifacts/VERSION - - echo -n "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" > ./artifacts/EXTRATAG - - echo "adder-collator version = $(cat ./artifacts/VERSION) (EXTRATAG = $(cat ./artifacts/EXTRATAG))" - - cp -r scripts/docker/* ./artifacts + - echo "___Complete logs can be found in the artifacts___" + - cargo deny check licenses 2> licenses.log #### stage: build -check-transaction-versions: - image: node:15 +build: stage: build - <<: *rules-test <<: *docker-env - needs: - - job: test-build-linux-stable - artifacts: true - before_script: - - apt-get -y update; apt-get -y install jq lsof - - npm install --ignore-scripts -g @polkadot/metadata-cmp - - git fetch origin release - script: - - scripts/gitlab/check_extrinsics_ordering.sh + <<: *build-refs + <<: *collect-artifacts + # master + script: &build-script + - time cargo fetch + - time cargo fetch --manifest-path=`cargo metadata --format-version=1 | jq --compact-output --raw-output ".packages[] | select(.name == \"polkadot-test-runtime\").manifest_path"` + - time cargo fetch --manifest-path=`cargo metadata --format-version=1 | jq --compact-output --raw-output ".packages[] | select(.name == \"polkadot-runtime\").manifest_path"` + - CARGO_NET_OFFLINE=true time cargo build --release --verbose --workspace + after_script: + # Prepare artifacts + - mkdir -p ./artifacts + - strip ./target/release/rialto-bridge-node + - mv -v ./target/release/rialto-bridge-node ./artifacts/ + - strip ./target/release/rialto-parachain-collator + - mv -v ./target/release/rialto-parachain-collator ./artifacts/ + - strip ./target/release/millau-bridge-node + - mv -v ./target/release/millau-bridge-node ./artifacts/ + - strip ./target/release/substrate-relay + - mv -v ./target/release/substrate-relay ./artifacts/ + - mv -v ./deployments/local-scripts/bridge-entrypoint.sh ./artifacts/ + - mv -v ./ci.Dockerfile ./artifacts/ -generate-impl-guide: +build-nightly: stage: build - <<: *rules-test <<: *docker-env - image: - name: michaelfbryan/mdbook-docker-image:v0.4.4 - entrypoint: [""] + <<: *collect-artifacts + <<: *nightly-test script: - - mdbook build roadmap/implementers-guide + - rustup default nightly + - *build-script + +#### stage: publish .build-push-image: &build-push-image - <<: *kubernetes-env + <<: *kubernetes-build image: quay.io/buildah/stable + <<: *build-refs variables: &image-variables GIT_STRATEGY: none - DOCKER_USER: ${PARITYPR_USER} - DOCKER_PASS: ${PARITYPR_PASS} + DOCKERFILE: ci.Dockerfile + IMAGE_NAME: docker.io/paritytech/$CI_JOB_NAME + VAULT_SERVER_URL: "https://vault.parity-mgmt-vault.parity.io" + VAULT_AUTH_PATH: "gitlab-parity-io-jwt" + VAULT_AUTH_ROLE: "cicd_gitlab_parity_${CI_PROJECT_NAME}" + needs: + - job: build + artifacts: true before_script: &check-versions - - test -s ./artifacts/VERSION || exit 1 - - test -s ./artifacts/EXTRATAG || exit 1 - - VERSION="$(cat ./artifacts/VERSION)" - - EXTRATAG="$(cat ./artifacts/EXTRATAG)" - - echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})" + - if [[ "${CI_COMMIT_TAG}" ]]; then + VERSION=${CI_COMMIT_TAG}; + elif [[ "${CI_COMMIT_REF_NAME}" ]]; then + VERSION=$(echo ${CI_COMMIT_REF_NAME} | sed -r 's#/+#-#g'); + fi + - echo "Effective tags = ${VERSION} sha-${CI_COMMIT_SHORT_SHA} latest" + secrets: + DOCKER_HUB_USER: + vault: cicd/gitlab/parity/DOCKER_HUB_USER@kv + file: false + DOCKER_HUB_PASS: + vault: cicd/gitlab/parity/DOCKER_HUB_PASS@kv + file: false script: - - test "$DOCKER_USER" -a "$DOCKER_PASS" || + - test "${DOCKER_HUB_USER}" -a "${DOCKER_HUB_PASS}" || ( echo "no docker credentials provided"; exit 1 ) - cd ./artifacts - buildah bud --format=docker - --build-arg VCS_REF="${CI_COMMIT_SHA}" - --build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" - --build-arg IMAGE_NAME="${IMAGE_NAME}" - --tag "$IMAGE_NAME:$VERSION" - --tag "$IMAGE_NAME:$EXTRATAG" - --file ${DOCKERFILE} . + --build-arg VCS_REF="${CI_COMMIT_SHORT_SHA}" + --build-arg BUILD_DATE="$(date +%d-%m-%Y)" + --build-arg PROJECT="${CI_JOB_NAME}" + --build-arg VERSION="${VERSION}" + --tag "${IMAGE_NAME}:${VERSION}" + --tag "${IMAGE_NAME}:sha-${CI_COMMIT_SHORT_SHA}" + --tag "${IMAGE_NAME}:latest" + --file "${DOCKERFILE}" . # The job will success only on the protected branch - - echo "$DOCKER_PASS" | - buildah login --username "$DOCKER_USER" --password-stdin docker.io + - echo "${DOCKER_HUB_PASS}" | + buildah login --username "${DOCKER_HUB_USER}" --password-stdin docker.io - buildah info - - buildah push --format=v2s2 "$IMAGE_NAME:$VERSION" - - buildah push --format=v2s2 "$IMAGE_NAME:$EXTRATAG" + - buildah push --format=v2s2 "${IMAGE_NAME}:${VERSION}" + - buildah push --format=v2s2 "${IMAGE_NAME}:sha-${CI_COMMIT_SHORT_SHA}" + - buildah push --format=v2s2 "${IMAGE_NAME}:latest" after_script: - - buildah logout "$IMAGE_NAME" - # pass artifacts to the trigger-simnet job - - echo "IMAGE_NAME=${IMAGE_NAME}" > ./artifacts/build.env - - echo "IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" >> ./artifacts/build.env - artifacts: - reports: - # this artifact is used in trigger-simnet job - # https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#with-variable-inheritance - dotenv: ./artifacts/build.env + - env REGISTRY_AUTH_FILE= buildah logout --all -publish-polkadot-image: - stage: build +rialto-bridge-node: + stage: publish <<: *build-push-image - variables: - <<: *image-variables - # scripts/docker/Dockerfile - DOCKERFILE: Dockerfile - IMAGE_NAME: docker.io/paritypr/synth-wave - rules: - # Don't run on releases - this is handled by the Github Action here: - # .github/workflows/publish-docker-release.yml - - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - when: never - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - variables: - <<: *image-variables - IMAGE_NAME: docker.io/parity/rococo - DOCKER_USER: ${Docker_Hub_User_Parity} - DOCKER_PASS: ${Docker_Hub_Pass_Parity} - needs: - - job: test-build-linux-stable - artifacts: true -publish-adder-collator-image: - # service image for Simnet - stage: build +rialto-parachain-collator: + stage: publish <<: *build-push-image - variables: - <<: *image-variables - # scripts/docker/collator.Dockerfile - DOCKERFILE: collator.Dockerfile - IMAGE_NAME: docker.io/paritypr/colander - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - needs: - - job: build-adder-collator - artifacts: true - after_script: - - buildah logout "$IMAGE_NAME" - # pass artifacts to the trigger-simnet job - - echo "COLLATOR_IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" > ./artifacts/collator.env - artifacts: - reports: - # this artifact is used in trigger-simnet job - dotenv: ./artifacts/collator.env - -#### stage: publish -publish-s3-release: &publish-s3 +millau-bridge-node: stage: publish - needs: - - job: test-build-linux-stable - artifacts: true - <<: *kubernetes-env - image: paritytech/awscli:latest - variables: - GIT_STRATEGY: none - PREFIX: "builds/polkadot/${ARCH}-${DOCKER_OS}" - rules: - # publishing binaries nightly - - if: $CI_PIPELINE_SOURCE == "schedule" - before_script: - - *check-versions - script: - - echo "uploading objects to https://releases.parity.io/${PREFIX}/${VERSION}" - - aws s3 sync --acl public-read ./artifacts/ s3://${AWS_BUCKET}/${PREFIX}/${VERSION}/ - - echo "update objects at https://releases.parity.io/${PREFIX}/${EXTRATAG}" - - find ./artifacts -type f | while read file; do - name="${file#./artifacts/}"; - aws s3api copy-object - --copy-source ${AWS_BUCKET}/${PREFIX}/${VERSION}/${name} - --bucket ${AWS_BUCKET} --key ${PREFIX}/${EXTRATAG}/${name}; - done - - | - cat <<-EOM - | - | polkadot binary paths: - | - | - https://releases.parity.io/${PREFIX}/${EXTRATAG}/polkadot - | - https://releases.parity.io/${PREFIX}/${VERSION}/polkadot - | - EOM - after_script: - - aws s3 ls s3://${AWS_BUCKET}/${PREFIX}/${EXTRATAG}/ - --recursive --human-readable --summarize - -#### stage: deploy + <<: *build-push-image -deploy-polkasync-kusama: - stage: deploy - rules: - # former .rules-build - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - when: never - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - variables: - POLKADOT_CI_COMMIT_NAME: "${CI_COMMIT_REF_NAME}" - POLKADOT_CI_COMMIT_REF: "${CI_COMMIT_SHORT_SHA}" - allow_failure: true - trigger: "parity/infrastructure/parity-testnet" +substrate-relay: + stage: publish + <<: *build-push-image -trigger-simnet: - stage: deploy - image: paritytech/tools:latest - <<: *kubernetes-env - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - needs: - - job: publish-polkadot-image - - job: publish-adder-collator-image - # `build.env` brings here `$IMAGE_NAME` and `$IMAGE_TAG` (`$EXTRATAG` here, - # i.e. `2643-0.8.29-5f689e0a-6b24dc54`). - # `collator.env` bears adder-collator unique build tag. In non-triggered builds it - # can be called by `master` tag. - # Simnet uses an image published on PRs with this exact version for triggered runs - # on commits. And parity/rococo:rococo-v1 for the runs not launched by this job. - variables: - TRGR_PROJECT: ${CI_PROJECT_NAME} - TRGR_REF: ${CI_COMMIT_REF_NAME} - # simnet project ID - DWNSTRM_ID: 332 - script: - # API trigger for a simnet job, argument value is set in the project variables - - ./scripts/gitlab/trigger_pipeline.sh --simnet-version=${SIMNET_REF} - allow_failure: true +# FIXME: publish binaries diff --git a/.maintain/millau-weight-template.hbs b/.maintain/millau-weight-template.hbs new file mode 100644 index 000000000000..7a2a67627bb2 --- /dev/null +++ b/.maintain/millau-weight-template.hbs @@ -0,0 +1,103 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Autogenerated weights for `{{pallet}}` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} +//! DATE: {{date}}, STEPS: {{cmd.steps}}, REPEAT: {{cmd.repeat}} +//! LOW RANGE: {{cmd.lowest_range_values}}, HIGH RANGE: {{cmd.highest_range_values}} +//! EXECUTION: {{cmd.execution}}, WASM-EXECUTION: {{cmd.wasm_execution}} +//! CHAIN: {{cmd.chain}}, DB CACHE: {{cmd.db_cache}} + +// Executed Command: +{{#each args as |arg|~}} +// {{arg}} +{{/each}} + +#![allow(clippy::all)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for `{{pallet}}`. +pub trait WeightInfo { + {{~#each benchmarks as |benchmark|}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{c.name}}: u32, {{/each~}} + ) -> Weight; + {{~/each}} +} + +/// Weights for `{{pallet}}` using the Millau node and recommended hardware. +pub struct MillauWeight(PhantomData); +impl WeightInfo for MillauWeight { + {{~#each benchmarks as |benchmark|}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + ({{underscore benchmark.base_weight}} as Weight) + {{~#each benchmark.component_weight as |cw|}} + .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) + {{~/each}} + {{~#if (ne benchmark.base_reads "0")}} + .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}} as Weight)) + {{~/if}} + {{~#each benchmark.component_reads as |cr|}} + .saturating_add(T::DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) + {{~/each}} + {{~#if (ne benchmark.base_writes "0")}} + .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}} as Weight)) + {{~/if}} + {{~#each benchmark.component_writes as |cw|}} + .saturating_add(T::DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) + {{~/each}} + } + {{~/each}} +} + +// For backwards compatibility and tests +impl WeightInfo for () { + {{~#each benchmarks as |benchmark|}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + ({{underscore benchmark.base_weight}} as Weight) + {{~#each benchmark.component_weight as |cw|}} + .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) + {{~/each}} + {{~#if (ne benchmark.base_reads "0")}} + .saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}} as Weight)) + {{~/if}} + {{~#each benchmark.component_reads as |cr|}} + .saturating_add(RocksDbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) + {{~/each}} + {{~#if (ne benchmark.base_writes "0")}} + .saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}} as Weight)) + {{~/if}} + {{~#each benchmark.component_writes as |cw|}} + .saturating_add(RocksDbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) + {{~/each}} + } + {{~/each}} +} diff --git a/bridges/.maintain/rialto-weight-template.hbs b/.maintain/rialto-weight-template.hbs similarity index 95% rename from bridges/.maintain/rialto-weight-template.hbs rename to .maintain/rialto-weight-template.hbs index 4bf856948ae3..297b58e0d3bf 100644 --- a/bridges/.maintain/rialto-weight-template.hbs +++ b/.maintain/rialto-weight-template.hbs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -//! Autogenerated weights for {{pallet}} +//! Autogenerated weights for `{{pallet}}` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} //! DATE: {{date}}, STEPS: {{cmd.steps}}, REPEAT: {{cmd.repeat}} @@ -34,7 +34,7 @@ use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; -/// Weight functions needed for {{pallet}}. +/// Weight functions needed for `{{pallet}}`. pub trait WeightInfo { {{~#each benchmarks as |benchmark|}} fn {{benchmark.name~}} @@ -45,7 +45,7 @@ pub trait WeightInfo { {{~/each}} } -/// Weights for {{pallet}} using the Rialto node and recommended hardware. +/// Weights for `{{pallet}}` using the Rialto node and recommended hardware. pub struct RialtoWeight(PhantomData); impl WeightInfo for RialtoWeight { {{~#each benchmarks as |benchmark|}} diff --git a/.rpm/polkadot.spec b/.rpm/polkadot.spec deleted file mode 100644 index 06fa0f57504d..000000000000 --- a/.rpm/polkadot.spec +++ /dev/null @@ -1,48 +0,0 @@ -%define debug_package %{nil} - -Name: polkadot -Summary: Implementation of a https://polkadot.network node in Rust based on the Substrate framework. -Version: @@VERSION@@ -Release: @@RELEASE@@%{?dist} -License: GPLv3 -Group: Applications/System -Source0: %{name}-%{version}.tar.gz - -Requires: systemd, shadow-utils -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root - -%description -%{summary} - - -%prep -%setup -q - - -%install -rm -rf %{buildroot} -mkdir -p %{buildroot} -cp -a * %{buildroot} - -%post -config_file="/etc/default/polkadot" -getent group polkadot >/dev/null || groupadd -r polkadot -getent passwd polkadot >/dev/null || \ - useradd -r -g polkadot -d /home/polkadot -m -s /sbin/nologin \ - -c "User account for running polkadot as a service" polkadot -if [ ! -e "$config_file" ]; then - echo 'POLKADOT_CLI_ARGS=""' > /etc/default/polkadot -fi -exit 0 - -%clean -rm -rf %{buildroot} - -%files -%defattr(-,root,root,-) -%{_bindir}/* -/usr/lib/systemd/system/polkadot.service diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 4180defedfd6..000000000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Request an environment that provides sudo (that goes with larger containers) -# and a minimal language environment. -sudo: true -language: minimal - -cache: cargo - -branches: - only: - - master - -env: - global: - - RUST_BACKTRACE=1 - matrix: - - RUST_TOOLCHAIN=nightly TARGET=wasm - - RUST_TOOLCHAIN=stable TARGET=native - -before_install: - # Check how much space we've got on this machine. - - df -h - -script: - - ./ci/script.sh - -after_script: - # Check how much free disk space left after the build - - df -h diff --git a/BRIDGES.md b/BRIDGES.md deleted file mode 100644 index fb61132fbbb5..000000000000 --- a/BRIDGES.md +++ /dev/null @@ -1,47 +0,0 @@ -# Using Parity Bridges Common dependency (`git subtree`). - -In `./bridges` sub-directory you can find a `git subtree` imported version of: -[parity-bridges-common](https://github.com/paritytech/parity-bridges-common/) repository. - -# How to fix broken Bridges code? - -To fix Bridges code simply create a commit in current (`polkadot`) repo. Best if -the commit is isolated to changes in `./bridges` sub-directory, because it makes -it easier to import that change back to upstream repo. - -# How to pull latest Bridges code or contribute back? - -Note that it's totally fine to ping the Bridges Team to do that for you. The point -of adding the code as `git subtree` is to **reduce maintenance cost** for Polkadot -developers. - -If you still would like to either update the code to match latest code from the repo -or create an upstream PR read below. The following commands should be run in the -current (`polkadot`) repo. - -1. Add Bridges repo as a local remote: -``` -$ git remote add -f bridges git@github.com:paritytech/parity-bridges-common.git -``` - -If you plan to contribute back, consider forking the repository on Github and adding -your personal fork as a remote as well. -``` -$ git remote add -f my-bridges git@github.com:tomusdrw/parity-bridges-common.git -``` - -2. To update Bridges: -``` -$ git fetch bridges master -$ git subtree pull --prefix=bridges bridges master --squash -```` - -We use `--squash` to avoid adding individual commits and rather squashing them -all into one. - -3. Contributing back to Bridges (creating upstream PR) -``` -$ git subtree push --prefix=bridges my-bridges master -``` -This command will push changes to your personal fork of Bridges repo, from where -you can simply create a PR to the main repo. diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 000000000000..3941ba8451a1 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,21 @@ +# Lists some code owners. +# +# A codeowner just oversees some part of the codebase. If an owned file is changed then the +# corresponding codeowner receives a review request. An approval of the codeowner might be +# required for merging a PR (depends on repository settings). +# +# For details about syntax, see: +# https://help.github.com/en/articles/about-code-owners +# But here are some important notes: +# +# - Glob syntax is git-like, e.g. `/core` means the core directory in the root, unlike `core` +# which can be everywhere. +# - Multiple owners are supported. +# - Either handle (e.g, @github_user or @github_org/team) or email can be used. Keep in mind, +# that handles might work better because they are more recognizable on GitHub, +# eyou can use them for mentioning unlike an email. +# - The latest matching rule, if multiple, takes precedence. + +# CI +/.github/ @paritytech/ci +/.gitlab-ci.yml @paritytech/ci diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 400c9b3901e2..70541fb72fa2 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,7 +2,11 @@ ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers +pledge to making participation in our project and our community a harassment-free experience for +everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity +and expression, level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. ## Our Standards @@ -19,34 +23,58 @@ Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Publishing others' private information, such as a physical or electronic address, without explicit + permission * Other conduct which could reasonably be considered inappropriate in a professional setting ### Facilitation, Not Strongarming -We recognise that this software is merely a tool for users to create and maintain their blockchain of preference. We see that blockchains are naturally community platforms with users being the ultimate decision makers. We assert that good software will maximise user agency by facilitate user-expression on the network. As such: +We recognise that this software is merely a tool for users to create and maintain their blockchain +of preference. We see that blockchains are naturally community platforms with users being the +ultimate decision makers. We assert that good software will maximise user agency by facilitate +user-expression on the network. As such: -* This project will strive to give users as much choice as is both reasonable and possible over what protocol they adhere to; but -* use of the project's technical forums, commenting systems, pull requests and issue trackers as a means to express individual protocol preferences is forbidden. +- This project will strive to give users as much choice as is both reasonable and possible over what + protocol they adhere to; but +- use of the project's technical forums, commenting systems, pull requests and issue trackers as a + means to express individual protocol preferences is forbidden. ## Our Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +Project maintainers are responsible for clarifying the standards of acceptable behavior and are +expected to take appropriate and fair corrective action in response to any instances of unacceptable +behavior. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, +code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or +to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. ## Scope -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies both within project spaces and in public spaces when an individual is +representing the project or its community. Examples of representing a project or community include +using an official project e-mail address, posting via an official social media account, or acting as +an appointed representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting +the project team at admin@parity.io. All complaints will be reviewed and investigated and will +result in a response that is deemed necessary and appropriate to the circumstances. The project team +is obligated to maintain confidentiality with regard to the reporter of an incident. Further +details of specific enforcement policies may be posted separately. -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face +temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://contributor-covenant.org/version/1/4 +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html -[homepage]: https://contributor-covenant.org +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 47ae56b90caa..000000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,52 +0,0 @@ -# Contributing - -`Substrate` projects is a **OPENISH Open Source Project** - -## What? - -Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit. A project is more like an open wiki than a standard guarded open source project. - -## Rules - -There are a few basic ground-rules for contributors (including the maintainer(s) of the project): - -- **No `--force` pushes** or modifying the Git history in any way. If you need to rebase, ensure you do it in your own repo. -- **Non-master branches**, prefixed with a short name moniker (e.g. `gav-my-feature`) must be used for ongoing work. -- **All modifications** must be made in a **pull-request** to solicit feedback from other contributors. -- A pull-request _must not be merged until CI_ has finished successfully. -- Contributors should adhere to the [house coding style](https://github.com/paritytech/polkadot/wiki/Style-Guide). - -#### Merging pull requests once CI is successful: - -- A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged [`insubstantial`](https://github.com/paritytech/substrate/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial) and merged by its author. -- A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well. -- All other PRs should sit for 48 hours with the [`pleasereview`](https://github.com/paritytech/substrate/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview) tag in order to garner feedback. -- No PR should be merged until all reviews' comments are addressed. - -#### Reviewing pull requests: - -When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in: - -- Buggy behaviour. -- Undue maintenance burden. -- Breaking with house coding style. -- Pessimisation (i.e. reduction of speed as measured in the projects benchmarks). -- Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on). -- Uselessness (i.e. it does not strictly add a feature or fix a known issue). - -#### Reviews may not be used as an effective veto for a PR because: - -- There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix. -- It does not fit well with some other contributors' longer-term vision for the project. - -## Releases - -Declaring formal releases remains the prerogative of the project maintainer(s). - -## Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change. - -## Heritage - -These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: https://github.com/Level/community/blob/master/CONTRIBUTING.md diff --git a/Cargo.lock b/Cargo.lock index 587fa692b8ea..43988571e19c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,93 +14,79 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.14.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli 0.23.0", + "gimli 0.25.0", ] [[package]] name = "addr2line" -version = "0.15.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "gimli 0.24.0", + "gimli 0.26.1", ] [[package]] name = "adler" -version = "0.2.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccc9a9dd069569f212bc4330af9f17c4afb5e8ce185e83dbb14f1349dda18b10" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" -version = "0.3.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ "generic-array 0.14.4", ] [[package]] name = "aes" -version = "0.4.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "aes-soft", - "aesni", - "block-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", ] [[package]] name = "aes-gcm" -version = "0.6.0" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f5007801316299f922a6198d1d09a0bae95786815d066d5880d13f7c45ead1" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ "aead", "aes", - "block-cipher", + "cipher", + "ctr", "ghash", - "subtle 2.2.3", -] - -[[package]] -name = "aes-soft" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4925647ee64e5056cf231608957ce7c81e12d6d6e316b9ce1404778cc1d35fa7" -dependencies = [ - "block-cipher", - "byteorder", - "opaque-debug 0.2.3", + "subtle", ] [[package]] -name = "aesni" -version = "0.7.0" +name = "ahash" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050d39b0b7688b3a3254394c3e30a9d66c41dcf9b05b0e2dbdc623f6505d264" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "block-cipher", - "opaque-debug 0.2.3", + "getrandom 0.2.3", + "once_cell", + "version_check", ] -[[package]] -name = "ahash" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6789e291be47ace86a60303502173d84af8327e3627ecf334356ee0f87a164c" - [[package]] name = "aho-corasick" -version = "0.7.13" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] @@ -131,24 +117,30 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.39" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cddc5f91628367664cc7c69714ff08deee8a3efc54623011c772544d7b2767" +checksum = "0a03e93e97a28fbc9f42fbc5ba0886a3c67eb637b476dbee711f80a6ffe8223d" [[package]] name = "approx" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" +checksum = "072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99e" dependencies = [ "num-traits", ] [[package]] -name = "arc-swap" -version = "0.4.7" +name = "arbitrary" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" +checksum = "510c76ecefdceada737ea728f4f9a84bd2e1ef29f1ba555e560940fe279954de" + +[[package]] +name = "array_tool" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f8cb5d814eb646a863c4f24978cff2880c4be96ad8cde2c0f0678732902e271" [[package]] name = "arrayref" @@ -173,28 +165,15 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a2f58b0bb10c380af2b26e57212856b8c9a59e0925b4c20f4a174a49734eaf7" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "asn1_der" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6e24d2cce90c53b948c46271bfb053e4bdc2db9b5d3f65e20f8cf28a1b7fc3" - -[[package]] -name = "assert_cmd" -version = "1.0.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dc1679af9a1ab4bea16f228b05d18f8363f8327b1fa8db00d2760cfafc6b61e" -dependencies = [ - "doc-comment", - "predicates", - "predicates-core", - "predicates-tree", - "wait-timeout", -] +checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" [[package]] name = "assert_matches" @@ -214,9 +193,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" dependencies = [ "concurrent-queue", "event-listener", @@ -255,20 +234,19 @@ dependencies = [ [[package]] name = "async-io" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" +checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" dependencies = [ "concurrent-queue", - "fastrand", "futures-lite", "libc", "log", - "nb-connect", "once_cell", "parking", "polling", - "vec-arena", + "slab", + "socket2 0.4.2", "waker-fn", "winapi 0.3.9", ] @@ -293,15 +271,16 @@ dependencies = [ [[package]] name = "async-process" -version = "1.0.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8cea09c1fb10a317d1b5af8024eeba256d6554763e85ecd90ff8df31c7bbda" +checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" dependencies = [ "async-io", "blocking", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "event-listener", "futures-lite", + "libc", "once_cell", "signal-hook", "winapi 0.3.9", @@ -309,9 +288,9 @@ dependencies = [ [[package]] name = "async-std" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" +checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" dependencies = [ "async-attributes", "async-channel", @@ -319,7 +298,7 @@ dependencies = [ "async-io", "async-lock", "async-process", - "crossbeam-utils 0.8.1", + "crossbeam-utils", "futures-channel", "futures-core", "futures-io", @@ -330,7 +309,7 @@ dependencies = [ "memchr", "num_cpus", "once_cell", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", "pin-utils", "slab", "wasm-bindgen-futures", @@ -338,9 +317,9 @@ dependencies = [ [[package]] name = "async-std-resolver" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665c56111e244fe38e7708ee10948a4356ad6a548997c21f5a63a0f4e0edc4d" +checksum = "ed4e2c3da14d8ad45acb1e3191db7a918e9505b6f155b218e70a7c9a1a48c638" dependencies = [ "async-std", "async-trait", @@ -358,9 +337,9 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" dependencies = [ "proc-macro2", "quote", @@ -373,11 +352,11 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", ] [[package]] @@ -386,18 +365,18 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", ] [[package]] name = "atomic" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281" +checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" dependencies = [ "autocfg", ] @@ -421,24 +400,48 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "backoff" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +checksum = "721c249ab59cbc483ad4294c9ee2671835c1e43e9ffc277e6b4ecfef733cfdc5" +dependencies = [ + "instant", + "rand 0.7.3", +] [[package]] name = "backtrace" -version = "0.3.56" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" dependencies = [ - "addr2line 0.14.1", + "addr2line 0.17.0", + "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.23.0", + "object", "rustc-demangle", ] +[[package]] +name = "bae" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107f431ee3d8a8e45e6dd117adab769556ef463959e77bf6a4888d5fd500cf" +dependencies = [ + "heck", + "proc-macro-error 0.4.12", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "base-x" version = "0.2.8" @@ -447,21 +450,9 @@ checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - -[[package]] -name = "base64" -version = "0.12.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" @@ -471,49 +462,49 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "beef" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6736e2428df2ca2848d846c43e88745121a6654696e349ce0054a420815a7409" +checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" dependencies = [ "serde", ] [[package]] name = "beefy-gadget" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#29244671a1db0ee9c30b04f9a56f6bf2489522a5" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "beefy-primitives", - "futures 0.3.15", - "hex", + "fnv", + "futures 0.3.18", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-client-api", "sc-keystore", "sc-network", "sc-network-gossip", + "sc-utils", "sp-api", "sp-application-crypto", "sp-arithmetic", "sp-blockchain", - "sp-consensus", "sp-core", "sp-keystore", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", + "wasm-timer", ] [[package]] name = "beefy-gadget-rpc" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#29244671a1db0ee9c30b04f9a56f6bf2489522a5" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "beefy-gadget", "beefy-primitives", - "futures 0.3.15", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -522,17 +513,22 @@ dependencies = [ "parity-scale-codec", "sc-rpc", "serde", - "serde_json", "sp-core", "sp-runtime", ] +[[package]] +name = "beefy-merkle-tree" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" + [[package]] name = "beefy-primitives" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#29244671a1db0ee9c30b04f9a56f6bf2489522a5" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-application-crypto", "sp-core", @@ -540,21 +536,26 @@ dependencies = [ "sp-std", ] +[[package]] +name = "bimap" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ae17cabbc8a38a1e3e4c1a6a664e9a09672dc14d0896fa8d865d3a5a446b07" + [[package]] name = "bincode" -version = "1.3.1" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "byteorder", "serde", ] [[package]] name = "bindgen" -version = "0.57.0" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4865004a46a0aafb2a0a5eb19d3c9fc46ee5f063a6cfc605c69ac9ecf5263d" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags", "cexpr", @@ -571,15 +572,15 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" -version = "0.20.1" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5011ffc90248764d7005b0e10c7294f5aa1bd87d9dd7248f4ad475b347c294d" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ "funty", "radium", @@ -589,15 +590,13 @@ dependencies = [ [[package]] name = "blake2" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84ce5b6108f8e154604bd4eb76a2f726066c3464d5a552a4229262a18c9bb471" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" dependencies = [ - "byte-tools", - "byteorder", "crypto-mac 0.8.0", "digest 0.9.0", - "opaque-debug 0.2.3", + "opaque-debug 0.3.0", ] [[package]] @@ -612,9 +611,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -634,9 +633,9 @@ dependencies = [ [[package]] name = "blake3" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -656,7 +655,7 @@ dependencies = [ "block-padding 0.1.5", "byte-tools", "byteorder", - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -669,15 +668,6 @@ dependencies = [ "generic-array 0.14.4", ] -[[package]] -name = "block-cipher" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10" -dependencies = [ - "generic-array 0.14.4", -] - [[package]] name = "block-padding" version = "0.1.5" @@ -695,9 +685,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" +checksum = "046e47d4b2d391b1f6f8b407b1deb8dee56c1852ccd868becf2710f601b5f427" dependencies = [ "async-channel", "async-task", @@ -707,6 +697,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "bounded-vec" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afdd1dffefe5fc66262a524b91087c43b16e478b2e3dc49eb11b0e2fd6b6ec90" +dependencies = [ + "thiserror", +] + [[package]] name = "bp-header-chain" version = "0.1.0" @@ -716,6 +715,7 @@ dependencies = [ "finality-grandpa", "frame-support", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-finality-grandpa", @@ -723,6 +723,31 @@ dependencies = [ "sp-std", ] +[[package]] +name = "bp-kusama" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "smallvec", + "sp-api", + "sp-std", + "sp-version", +] + +[[package]] +name = "bp-message-dispatch" +version = "0.1.0" +dependencies = [ + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "sp-std", +] + [[package]] name = "bp-messages" version = "0.1.0" @@ -733,8 +758,46 @@ dependencies = [ "frame-system", "impl-trait-for-tuples", "parity-scale-codec", + "scale-info", + "serde", + "sp-std", +] + +[[package]] +name = "bp-millau" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bp-runtime", + "fixed-hash", + "frame-support", + "frame-system", + "hash256-std-hasher", + "impl-codec", + "impl-serde", + "parity-util-mem", + "scale-info", "serde", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-trie", +] + +[[package]] +name = "bp-polkadot" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "smallvec", + "sp-api", "sp-std", + "sp-version", ] [[package]] @@ -747,6 +810,7 @@ dependencies = [ "frame-system", "hex", "parity-scale-codec", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -754,6 +818,34 @@ dependencies = [ "sp-version", ] +[[package]] +name = "bp-rialto" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "sp-api", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "bp-rialto-parachain" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "sp-api", + "sp-core", + "sp-runtime", + "sp-std", +] + [[package]] name = "bp-rococo" version = "0.1.0" @@ -763,7 +855,7 @@ dependencies = [ "bp-runtime", "frame-support", "parity-scale-codec", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-runtime", "sp-std", @@ -778,6 +870,7 @@ dependencies = [ "hash-db", "num-traits", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -800,6 +893,35 @@ dependencies = [ "sp-std", ] +[[package]] +name = "bp-token-swap" +version = "0.1.0" +dependencies = [ + "frame-support", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-std", +] + +[[package]] +name = "bp-westend" +version = "0.1.0" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "smallvec", + "sp-api", + "sp-runtime", + "sp-std", + "sp-version", +] + [[package]] name = "bp-wococo" version = "0.1.0" @@ -814,6 +936,29 @@ dependencies = [ "sp-std", ] +[[package]] +name = "bridge-runtime-common" +version = "0.1.0" +dependencies = [ + "bp-message-dispatch", + "bp-messages", + "bp-runtime", + "ed25519-dalek", + "frame-support", + "hash-db", + "pallet-bridge-dispatch", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", +] + [[package]] name = "bs58" version = "0.4.0" @@ -822,9 +967,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "0.2.13" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "memchr", ] @@ -840,15 +985,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.4.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" [[package]] name = "byte-slice-cast" -version = "1.0.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81" +checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" [[package]] name = "byte-tools" @@ -858,9 +1003,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -869,21 +1014,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ "byteorder", - "either", "iovec", ] [[package]] name = "bytes" -version = "0.5.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cache-padded" @@ -891,42 +1029,57 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" +[[package]] +name = "camino" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2b" +dependencies = [ + "serde", +] + [[package]] name = "cargo-platform" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0226944a63d1bf35a3b5f948dd7c59e263db83695c9e8bffc4037de02e30f1d7" +checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714a157da7991e23d90686b9524b9e12e0407a108647f52e9328f4b3d51ac7f" +checksum = "ba2ae6de944143141f6155a473a6b02f66c7c3f9f47316f802f80204ebfe6e12" dependencies = [ + "camino", "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", + "semver 1.0.4", "serde", "serde_json", ] +[[package]] +name = "castaway" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed247d1586918e46f2bbe0f13b06498db8dab5a8c1093f156652e9f2e0a73fc3" + [[package]] name = "cc" -version = "1.0.67" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" dependencies = [ "jobserver", ] [[package]] name = "cexpr" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] @@ -951,24 +1104,26 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chacha20" -version = "0.4.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "086c0f07ac275808b7bf9a39f2fd013aae1498be83632814c8c4e0bd53f2dc58" +checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" dependencies = [ - "stream-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.1.5", "zeroize", ] [[package]] name = "chacha20poly1305" -version = "0.5.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18b0c90556d8e3fec7cf18d84a2f53d27b21288f2fe481b830fadcf809e48205" +checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" dependencies = [ "aead", "chacha20", + "cipher", "poly1305", - "stream-cipher", "zeroize", ] @@ -978,53 +1133,51 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ - "js-sys", "libc", "num-integer", "num-traits", - "time", - "wasm-bindgen", + "time 0.1.44", "winapi 0.3.9", ] [[package]] name = "cid" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d88f30b1e74e7063df5711496f3ee6e74a9735d62062242d70cddf77717f18e" +checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" dependencies = [ "multibase", - "multihash", + "multihash 0.13.2", "unsigned-varint 0.5.1", ] [[package]] name = "cipher" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ "generic-array 0.14.4", ] [[package]] name = "ckb-merkle-mountain-range" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e486fe53bb9f2ca0f58cb60e8679a5354fd6687a839942ef0a75967250289ca6" +checksum = "4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5b" dependencies = [ "cfg-if 0.1.10", ] [[package]] name = "clang-sys" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853eda514c284c2287f4bf20ae614f8781f40a81d32ecda6e91449304dfe077c" +checksum = "fa66045b9cb23c2e9c1520732030608b02ee07e5cfaa5a521ec15ded7fa24c90" dependencies = [ "glob", "libc", - "libloading 0.7.0", + "libloading 0.7.2", ] [[package]] @@ -1051,28 +1204,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "cloudabi" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" -dependencies = [ - "bitflags", -] - -[[package]] -name = "color-eyre" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f1885697ee8a177096d42f158922251a41973117f6d8a234cee94b9509157b7" -dependencies = [ - "backtrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", -] - [[package]] name = "concurrent-queue" version = "1.2.2" @@ -1083,14 +1214,10 @@ dependencies = [ ] [[package]] -name = "console_error_panic_hook" -version = "0.1.6" +name = "const_fn" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" -dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen", -] +checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" [[package]] name = "constant_time_eq" @@ -1106,93 +1233,78 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" -dependencies = [ - "core-foundation-sys 0.7.0", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" dependencies = [ - "core-foundation-sys 0.8.2", + "core-foundation-sys", "libc", ] [[package]] name = "core-foundation-sys" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" - -[[package]] -name = "core-foundation-sys" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpp_demangle" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44919ecaf6f99e8e737bc239408931c9a01e9a6c74814fee8242dd2506b65390" +checksum = "931ab2a3e6330a07900b8e7ca4e106cdcbb93f2b9a52df55e54ee53d8305b55d" dependencies = [ "cfg-if 1.0.0", - "glob", ] [[package]] name = "cpufeatures" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" +checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" dependencies = [ "libc", ] [[package]] -name = "cpuid-bool" -version = "0.1.0" +name = "cpufeatures" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d375c433320f6c5057ae04a04376eef4d04ce2801448cf8863a78da99107be4" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] [[package]] name = "cranelift-bforest" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ca3560686e7c9c7ed7e0fe77469f2410ba5d7781b1acaa9adc8d8deea28e3e" +checksum = "cc0cb7df82c8cf8f2e6a8dd394a0932a71369c160cc9b027dca414fced242513" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf9bf1ffffb6ce3d2e5ebc83549bd2436426c99b31cc550d521364cbe35d276" +checksum = "fe4463c15fa42eee909e61e5eac4866b7c6d22d0d8c621e57a0c5380753bfa8c" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.24.0", + "gimli 0.25.0", "log", "regalloc", - "serde", - "smallvec 1.6.1", + "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc21936a5a6d07e23849ffe83e5c1f6f50305c074f4b2970ca50c13bf55b821" +checksum = "793f6a94a053a55404ea16e1700202a88101672b8cd6b4df63e13cde950852bf" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1200,125 +1312,107 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5b6ffaa87560bebe69a5446449da18090b126037920b0c1c6d5945f72faf6b" -dependencies = [ - "serde", -] +checksum = "44aa1846df275bce5eb30379d65964c7afc63c05a117076e62a119c25fe174be" [[package]] name = "cranelift-entity" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6b4a8bef04f82e4296782646f733c641d09497df2fabf791323fefaa44c64c" +checksum = "a3a45d8d6318bf8fc518154d9298eab2a8154ec068a8885ff113f6db8d69bb3a" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b783b351f966fce33e3c03498cb116d16d97a8f9978164a60920bd0d3a99c" +checksum = "e07339bd461766deb7605169de039e01954768ff730fa1254e149001884a8525" dependencies = [ "cranelift-codegen", "log", - "smallvec 1.6.1", + "smallvec", "target-lexicon", ] [[package]] name = "cranelift-native" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c88d3dd48021ff1e37e978a00098524abd3513444ae252c08d37b310b3d2a" +checksum = "03e2fca76ff57e0532936a71e3fc267eae6a19a86656716479c66e7f912e3d7b" dependencies = [ "cranelift-codegen", + "libc", "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb6d408e2da77cdbbd65466298d44c86ae71c1785d2ab0d8657753cdb4d9d89" +checksum = "1f46fec547a1f8a32c54ea61c28be4f4ad234ad95342b718a9a9adcaadb0c778" dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools 0.10.0", + "itertools", "log", - "serde", - "smallvec 1.6.1", - "thiserror", + "smallvec", "wasmparser", + "wasmtime-types", ] [[package]] name = "crc32fast" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -dependencies = [ - "cfg-if 0.1.10", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.3" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +checksum = "3825b1e8580894917dc4468cb634a1b4e9745fddc854edad72d9c04644c0319f" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "cfg-if 1.0.0", ] [[package]] -name = "crossbeam-epoch" -version = "0.8.2" +name = "crossbeam-channel" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.5", - "scopeguard", + "cfg-if 1.0.0", + "crossbeam-utils", ] [[package]] -name = "crossbeam-queue" -version = "0.2.3" +name = "crossbeam-deque" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "crossbeam-utils" -version = "0.7.2" +name = "crossbeam-epoch" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ - "autocfg", - "cfg-if 0.1.10", + "cfg-if 1.0.0", + "crossbeam-utils", "lazy_static", + "memoffset", + "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.1" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "autocfg", "cfg-if 1.0.0", "lazy_static", ] @@ -1331,43 +1425,52 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.12.3", - "subtle 1.0.0", + "generic-array 0.14.4", + "subtle", ] [[package]] name = "crypto-mac" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array 0.14.4", - "subtle 2.2.3", + "subtle", ] [[package]] name = "ct-logs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672e" +checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" dependencies = [ "sct", ] [[package]] name = "ctor" -version = "0.1.16" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484" +checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa" dependencies = [ "quote", "syn", ] +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + [[package]] name = "cuckoofilter" version = "0.5.0" @@ -1380,91 +1483,460 @@ dependencies = [ ] [[package]] -name = "curve25519-dalek" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5" +name = "cumulus-client-cli" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle 2.2.3", - "zeroize", + "sc-cli", + "sc-service", + "structopt", ] [[package]] -name = "curve25519-dalek" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8492de420e9e60bc9a1d66e2dbb91825390b738a388606600663fc529b4b307" +name = "cumulus-client-collator" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle 2.2.3", - "zeroize", + "cumulus-client-consensus-common", + "cumulus-client-network", + "cumulus-primitives-core", + "futures 0.3.18", + "parity-scale-codec", + "parking_lot 0.10.2", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sc-client-api", + "sp-api", + "sp-consensus", + "sp-core", + "sp-runtime", + "tracing", ] [[package]] -name = "data-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" - -[[package]] -name = "data-encoding-macro" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a94feec3d2ba66c0b6621bca8bc6f68415b1e5c69af3586fdd0af9fd9f29b17" +name = "cumulus-client-consensus-aura" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "data-encoding", - "data-encoding-macro-internal", + "async-trait", + "cumulus-client-consensus-common", + "cumulus-primitives-core", + "futures 0.3.18", + "parity-scale-codec", + "polkadot-client", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-consensus-slots", + "sc-telemetry", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "substrate-prometheus-endpoint", + "tracing", ] [[package]] -name = "data-encoding-macro-internal" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f83e699727abca3c56e187945f303389590305ab2f0185ea445aa66e8d5f2a" +name = "cumulus-client-consensus-common" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "data-encoding", - "syn", + "async-trait", + "dyn-clone", + "futures 0.3.18", + "parity-scale-codec", + "polkadot-primitives", + "sc-client-api", + "sc-consensus", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-runtime", + "sp-trie", + "tracing", ] [[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +name = "cumulus-client-network" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "proc-macro2", - "quote", - "syn", + "derive_more", + "futures 0.3.18", + "futures-timer 3.0.2", + "parity-scale-codec", + "parking_lot 0.10.2", + "polkadot-client", + "polkadot-node-primitives", + "polkadot-parachain", + "polkadot-primitives", + "sc-client-api", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "tracing", ] [[package]] -name = "derive_more" -version = "0.99.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc7b9cef1e351660e5443924e4f43ab25fbbed3e9a5f052df3677deb4d6b320" +name = "cumulus-client-pov-recovery" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "syn", + "cumulus-primitives-core", + "futures 0.3.18", + "futures-timer 3.0.2", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "rand 0.8.4", + "sc-client-api", + "sc-consensus", + "sp-api", + "sp-consensus", + "sp-maybe-compressed-blob", + "sp-runtime", + "tracing", ] [[package]] -name = "diff" +name = "cumulus-client-service" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-client-collator", + "cumulus-client-consensus-common", + "cumulus-client-pov-recovery", + "cumulus-primitives-core", + "parity-scale-codec", + "parking_lot 0.10.2", + "polkadot-overseer", + "polkadot-primitives", + "polkadot-service", + "sc-chain-spec", + "sc-client-api", + "sc-consensus", + "sc-consensus-babe", + "sc-service", + "sc-telemetry", + "sc-tracing", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "tracing", +] + +[[package]] +name = "cumulus-pallet-aura-ext" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "frame-executive", + "frame-support", + "frame-system", + "pallet-aura", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "cumulus-pallet-dmp-queue" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", + "xcm", + "xcm-executor", +] + +[[package]] +name = "cumulus-pallet-parachain-system" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "environmental", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "polkadot-parachain", + "scale-info", + "serde", + "sp-core", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", + "xcm", +] + +[[package]] +name = "cumulus-pallet-parachain-system-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "cumulus-pallet-xcm" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", + "sp-std", + "xcm", +] + +[[package]] +name = "cumulus-pallet-xcmp-queue" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "rand_chacha 0.3.1", + "scale-info", + "sp-runtime", + "sp-std", + "xcm", + "xcm-executor", +] + +[[package]] +name = "cumulus-primitives-core" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain", + "polkadot-primitives", + "sp-api", + "sp-runtime", + "sp-std", + "sp-trie", +] + +[[package]] +name = "cumulus-primitives-parachain-inherent" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "async-trait", + "cumulus-primitives-core", + "cumulus-test-relay-sproof-builder", + "parity-scale-codec", + "polkadot-client", + "sc-client-api", + "scale-info", + "sp-api", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "tracing", +] + +[[package]] +name = "cumulus-primitives-timestamp" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "sp-inherents", + "sp-std", + "sp-timestamp", +] + +[[package]] +name = "cumulus-primitives-utility" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain", + "polkadot-primitives", + "sp-runtime", + "sp-std", + "sp-trie", + "xcm", +] + +[[package]] +name = "cumulus-test-relay-sproof-builder" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "parity-scale-codec", + "polkadot-primitives", + "sp-runtime", + "sp-state-machine", + "sp-std", +] + +[[package]] +name = "curl" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc6d233563261f8db6ffb83bbaad5a73837a6e6b28868e926337ebbdece0be3" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.4.2", + "winapi 0.3.9", +] + +[[package]] +name = "curl-sys" +version = "0.4.51+curl-7.80.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d130987e6a6a34fe0889e1083022fa48cd90e6709a84be3fb8dd95801de5af20" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi 0.3.9", +] + +[[package]] +name = "curve25519-dalek" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" +dependencies = [ + "byteorder", + "digest 0.8.1", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "data-encoding-macro" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499" +checksum = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] [[package]] -name = "difference" -version = "2.0.0" +name = "data-encoding-macro-internal" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" +checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" +dependencies = [ + "data-encoding", + "syn", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn", +] [[package]] name = "digest" @@ -1472,7 +1944,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -1486,9 +1958,9 @@ dependencies = [ [[package]] name = "directories" -version = "3.0.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0f" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ "dirs-sys", ] @@ -1505,12 +1977,12 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", - "redox_users 0.3.4", + "redox_users", "winapi 0.3.9", ] @@ -1521,18 +1993,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.0", + "redox_users", "winapi 0.3.9", ] [[package]] -name = "dlmalloc" -version = "0.2.1" +name = "discard" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332570860c2edf2d57914987bf9e24835425f75825086b6ba7d1e6a3e4f1f254" -dependencies = [ - "libc", -] +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "dns-parser" @@ -1556,6 +2025,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -1579,15 +2054,15 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c53dc3a653e0f64081026e4bf048d48fec9fce90c66e8326ca7292df0ff2d82" +checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" [[package]] name = "ed25519" -version = "1.0.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf038a7b6fd7ef78ad3348b63f3a17550877b0e28f8d68bcc94894d1412158bc" +checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" dependencies = [ "signature", ] @@ -1598,19 +2073,28 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek 3.0.0", + "curve25519-dalek 3.2.0", "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.2", + "sha2 0.9.8", "zeroize", ] [[package]] name = "either" -version = "1.6.0" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "encoding_rs" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +checksum = "a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] name = "enum-as-inner" @@ -1675,32 +2159,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" dependencies = [ "atty", - "humantime 2.0.1", + "humantime 2.1.0", "log", "regex", "termcolor", ] [[package]] -name = "environmental" -version = "1.1.3" +name = "env_logger" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime 2.1.0", + "log", + "regex", + "termcolor", +] [[package]] -name = "erased-serde" -version = "0.3.12" +name = "environmental" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" -dependencies = [ - "serde", -] +checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" [[package]] name = "errno" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b480f641ccf0faf324e20c1d3e53d81b7484c698b42ea677f6907ae4db195371" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ "errno-dragonfly", "libc", @@ -1709,19 +2197,19 @@ dependencies = [ [[package]] name = "errno-dragonfly" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ - "gcc", + "cc", "libc", ] [[package]] name = "ethbloom" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779864b9c7f7ead1f092972c3257496c6a84b46dba2ce131dd8a282cb2cc5972" +checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8" dependencies = [ "crunchy", "fixed-hash", @@ -1732,9 +2220,9 @@ dependencies = [ [[package]] name = "ethereum-types" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64b5df66a228d85e4b17e5d6c6aa43b0310898ffe8a85988c4c032357aaabfd" +checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf" dependencies = [ "ethbloom", "fixed-hash", @@ -1756,39 +2244,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.15", -] - -[[package]] -name = "eyre" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534ce924bff9118be8b28b24ede6bf7e96a00b53e4ded25050aa7b526e051e1a" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "futures 0.3.18", ] [[package]] @@ -1805,9 +2261,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" +checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e" dependencies = [ "instant", ] @@ -1821,27 +2277,11 @@ dependencies = [ "libc", ] -[[package]] -name = "femme" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af1a24f391a5a94d756db5092c6576aad494b88a71a5a36b20c67b63e0df034" -dependencies = [ - "cfg-if 0.1.10", - "js-sys", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "file-per-thread-logger" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b3937f028664bd0e13df401ba49a4567ccda587420365823242977f06609ed1" +checksum = "4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126" dependencies = [ "env_logger 0.7.1", "log", @@ -1849,17 +2289,33 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74a1bfdcc776e63e49f741c7ce6116fa1b887e8ac2e3ccb14dd4aa113e54feb9" +checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "log", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", + "scale-info", +] + +[[package]] +name = "finality-relay" +version = "0.1.0" +dependencies = [ + "async-std", + "async-trait", + "backoff", + "bp-header-chain", + "futures 0.3.18", + "log", + "num-traits", + "parking_lot 0.11.2", + "relay-utils", ] [[package]] @@ -1876,17 +2332,17 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e" [[package]] name = "flate2" -version = "1.0.16" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c90b0fc46cf89d227cc78b40e494ff81287a92dd07631e5af0d06fe3cf885e" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "crc32fast", "libc", "libz-sys", @@ -1902,16 +2358,16 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", ] [[package]] name = "form_urlencoded" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ "matches", "percent-encoding 2.1.0", @@ -1919,15 +2375,16 @@ dependencies = [ [[package]] name = "frame-benchmarking" -version = "3.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "linregress", "log", "parity-scale-codec", - "paste 1.0.5", + "paste", + "scale-info", "sp-api", "sp-io", "sp-runtime", @@ -1938,13 +2395,16 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "Inflector", "chrono", "frame-benchmarking", + "frame-support", "handlebars", + "linked-hash-map", + "log", "parity-scale-codec", "sc-cli", "sc-client-db", @@ -1961,12 +2421,13 @@ dependencies = [ [[package]] name = "frame-election-provider-support" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-arithmetic", "sp-npos-elections", "sp-std", @@ -1974,12 +2435,13 @@ dependencies = [ [[package]] name = "frame-executive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -1989,33 +2451,35 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "14.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0" dependencies = [ + "cfg-if 1.0.0", "parity-scale-codec", + "scale-info", "serde", - "sp-core", - "sp-std", ] [[package]] name = "frame-support" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "bitflags", "frame-metadata", "frame-support-procedural", "impl-trait-for-tuples", "log", - "max-encoded-len", "once_cell", "parity-scale-codec", - "paste 1.0.5", + "paste", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-core", + "sp-core-hashing-proc-macro", "sp-inherents", "sp-io", "sp-runtime", @@ -2023,12 +2487,13 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-tracing", + "tt-call", ] [[package]] name = "frame-support-procedural" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2039,11 +2504,11 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -2052,42 +2517,22 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "frame-support-test" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "frame-metadata", - "frame-support", - "frame-system", - "parity-scale-codec", - "pretty_assertions 0.6.1", - "rustversion", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-std", - "trybuild", -] - [[package]] name = "frame-system" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", - "impl-trait-for-tuples", "log", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -2098,13 +2543,14 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-runtime", "sp-std", @@ -2112,8 +2558,8 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", "sp-api", @@ -2121,11 +2567,10 @@ dependencies = [ [[package]] name = "frame-try-runtime" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", - "parity-scale-codec", "sp-api", "sp-runtime", "sp-std", @@ -2133,9 +2578,9 @@ dependencies = [ [[package]] name = "fs-err" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcd1163ae48bda72a20ae26d66a04d3094135cadab911cff418ae5e33f253431" +checksum = "5ebd3504ad6116843b8375ad70df74e7bfe83cac77a1f3fe73200c844d43bfe0" [[package]] name = "fs-swap" @@ -2159,18 +2604,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "fs_extra" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -2195,15 +2628,15 @@ checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] name = "futures" -version = "0.1.29" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" +checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e" dependencies = [ "futures-channel", "futures-core", @@ -2216,9 +2649,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" dependencies = [ "futures-core", "futures-sink", @@ -2226,25 +2659,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.29", - "num_cpus", -] +checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" [[package]] name = "futures-executor" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" +checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97" dependencies = [ "futures-core", "futures-task", @@ -2254,33 +2677,31 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" +checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11" [[package]] name = "futures-lite" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" dependencies = [ "fastrand", "futures-core", "futures-io", "memchr", "parking", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", "waker-fn", ] [[package]] name = "futures-macro" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" +checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd" dependencies = [ - "autocfg", - "proc-macro-hack", "proc-macro2", "quote", "syn", @@ -2293,21 +2714,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" dependencies = [ "futures-io", - "rustls 0.19.1", + "rustls", "webpki", ] [[package]] name = "futures-sink" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" +checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" [[package]] name = "futures-task" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" +checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12" [[package]] name = "futures-timer" @@ -2320,19 +2741,14 @@ name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] [[package]] name = "futures-util" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e" dependencies = [ - "autocfg", - "futures 0.1.29", + "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -2340,46 +2756,16 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" - -[[package]] -name = "generator" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" -dependencies = [ - "cc", - "libc", - "log", - "rustc_version", - "winapi 0.3.9", -] - [[package]] name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.13.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" dependencies = [ "typenum", ] @@ -2396,11 +2782,12 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", "wasm-bindgen", @@ -2408,43 +2795,42 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", - "js-sys", "libc", "wasi 0.10.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] name = "ghash" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ + "opaque-debug 0.3.0", "polyval", ] [[package]] name = "gimli" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" - -[[package]] -name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" + [[package]] name = "glob" version = "0.3.0" @@ -2453,9 +2839,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "globset" -version = "0.4.5" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad1da430bd7281dde2576f44c84cc3f0f7b475e7202cd503042dff01a8c8120" +checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" dependencies = [ "aho-corasick", "bstr", @@ -2479,51 +2865,33 @@ dependencies = [ [[package]] name = "h2" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "fnv", - "futures 0.1.29", - "http 0.1.21", - "indexmap", - "log", - "slab", - "string", - "tokio-io", -] - -[[package]] -name = "h2" -version = "0.2.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b7246d7e4b979c03fa093da39cfb3617a96bbeee6310af63991668d7e843ff" +checksum = "7fd819562fcebdac5afc5c113c3ec36f902840b70fd4fc458799c8ce4607ae55" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.1", + "http", "indexmap", - "log", "slab", - "tokio 0.2.21", + "tokio", "tokio-util", + "tracing", ] [[package]] name = "handlebars" -version = "3.5.1" +version = "4.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2764f9796c0ddca4b82c07f25dd2cb3db30b9a8f47940e78e1c883d9e95c3db9" +checksum = "8ad84da8f63da982543fc85fcabaee2ad1fdd809d99d64a48887e2e942ddfe46" dependencies = [ "log", "pest", "pest_derive", - "quick-error 2.0.0", + "quick-error 2.0.1", "serde", "serde_json", ] @@ -2545,42 +2913,42 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.9.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ "ahash", ] [[package]] name = "heck" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] [[package]] name = "hex" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-literal" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "hex_fmt" @@ -2590,33 +2958,44 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" [[package]] name = "hmac" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] name = "hmac" -version = "0.8.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac 0.11.1", "digest 0.9.0", ] [[package]] name = "hmac-drbg" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "digest 0.8.1", - "generic-array 0.12.3", - "hmac 0.7.1", + "digest 0.9.0", + "generic-array 0.14.4", + "hmac 0.8.1", +] + +[[package]] +name = "honggfuzz" +version = "0.5.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea09577d948a98a5f59b7c891e274c4fb35ad52f67782b3d0cb53b9c05301f1" +dependencies = [ + "arbitrary", + "lazy_static", + "memmap", ] [[package]] @@ -2632,70 +3011,37 @@ dependencies = [ [[package]] name = "http" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", "itoa", ] [[package]] name = "http-body" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "http 0.1.21", - "tokio-buf", -] - -[[package]] -name = "http-body" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -dependencies = [ - "bytes 0.5.6", - "http 0.2.1", -] - -[[package]] -name = "http-body" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ - "bytes 1.0.1", - "http 0.2.1", - "pin-project-lite 0.2.4", + "bytes 1.1.0", + "http", + "pin-project-lite 0.2.7", ] [[package]] name = "httparse" -version = "1.3.4" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "humantime" @@ -2708,101 +3054,48 @@ dependencies = [ [[package]] name = "humantime" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a" - -[[package]] -name = "hyper" -version = "0.12.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "http-body 0.1.0", - "httparse", - "iovec", - "itoa", - "log", - "net2", - "rustc_version", - "time", - "tokio 0.1.22", - "tokio-buf", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "want 0.2.0", -] - -[[package]] -name = "hyper" -version = "0.13.9" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf" -dependencies = [ - "bytes 0.5.6", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.2.5", - "http 0.2.1", - "http-body 0.3.1", - "httparse", - "httpdate", - "itoa", - "pin-project 1.0.7", - "socket2 0.3.17", - "tokio 0.2.21", - "tower-service", - "tracing", - "want 0.3.0", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.5" +version = "0.14.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf09f61b52cfcf4c00de50df88ae423d6c02354e385a86341133b5338630ad1" +checksum = "436ec0091e4f20e655156a30a0df3770fe2900aa301e548e08446ec794b6953c" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-channel", "futures-core", "futures-util", - "http 0.2.1", - "http-body 0.4.2", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", - "pin-project 1.0.7", - "tokio 1.6.1", + "pin-project-lite 0.2.7", + "socket2 0.4.2", + "tokio", "tower-service", "tracing", - "want 0.3.0", + "want", ] [[package]] name = "hyper-rustls" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "bytes 0.5.6", "ct-logs", "futures-util", - "hyper 0.13.9", + "hyper", "log", - "rustls 0.18.0", - "rustls-native-certs 0.4.0", - "tokio 0.2.21", - "tokio-rustls 0.14.0", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", "webpki", ] @@ -2819,9 +3112,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -2830,9 +3123,9 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48" +checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de" dependencies = [ "if-addrs-sys", "libc", @@ -2851,12 +3144,12 @@ dependencies = [ [[package]] name = "if-watch" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6d52908d4ea4ab2bc22474ba149bf1011c8e2c3ebc1ff593ae28ac44f494b6" +checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" dependencies = [ "async-io", - "futures 0.3.15", + "futures 0.3.18", "futures-lite", "if-addrs", "ipnet", @@ -2867,9 +3160,9 @@ dependencies = [ [[package]] name = "impl-codec" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df170efa359aebdd5cb7fe78edcc67107748e4737bdca8a8fb40d15ea7a877ed" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" dependencies = [ "parity-scale-codec", ] @@ -2885,9 +3178,9 @@ dependencies = [ [[package]] name = "impl-serde" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" dependencies = [ "serde", ] @@ -2903,17 +3196,11 @@ dependencies = [ "syn", ] -[[package]] -name = "indenter" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bd112d44d9d870a6819eb505d04dd92b5e4d94bb8c304924a0872ae7016fb5" - [[package]] name = "indexmap" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", "hashbrown", @@ -2922,26 +3209,27 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.6" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "js-sys", - "wasm-bindgen", - "web-sys", + "cfg-if 1.0.0", ] [[package]] name = "integer-encoding" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4ebd0bd29be0f11973e9b3e219005661042a019fd757798c36a47c87852625" +checksum = "48dc51180a9b377fd75814d0cc02199c20f8e99433d6762f650d39cdbbd3b56f" [[package]] name = "integer-sqrt" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65877bf7d44897a473350b1046277941cee20b263397e90869c50b6e766088b" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] [[package]] name = "intervalier" @@ -2949,10 +3237,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "futures-timer 2.0.2", ] +[[package]] +name = "io-lifetimes" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278e90d6f8a6c76a8334b336e306efa3c5f2b604048cbfd486d6f49878e3af14" +dependencies = [ + "rustc_version 0.4.0", + "winapi 0.3.9", +] + [[package]] name = "iovec" version = "0.1.4" @@ -2964,9 +3262,9 @@ dependencies = [ [[package]] name = "ip_network" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee15951c035f79eddbef745611ec962f63f4558f1dadf98ab723cc603487c6f" +checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" @@ -2974,7 +3272,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" dependencies = [ - "socket2 0.3.17", + "socket2 0.3.19", "widestring", "winapi 0.3.9", "winreg", @@ -2982,81 +3280,91 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" +checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" [[package]] -name = "itertools" -version = "0.9.0" +name = "isahc" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "d140e84730d325378912ede32d7cd53ef1542725503b3353e5ec8113c7c6f588" dependencies = [ - "either", + "async-channel", + "castaway", + "crossbeam-utils", + "curl", + "curl-sys", + "encoding_rs", + "event-listener", + "futures-lite", + "http", + "log", + "mime", + "once_cell", + "polling", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url 2.2.2", + "waker-fn", ] [[package]] name = "itertools" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" - -[[package]] -name = "jemalloc-sys" -version = "0.3.2" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" -dependencies = [ - "cc", - "fs_extra", - "libc", -] +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] -name = "jemallocator" -version = "0.3.2" +name = "jobserver" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" dependencies = [ - "jemalloc-sys", "libc", ] [[package]] -name = "jobserver" -version = "0.1.21" +name = "js-sys" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" dependencies = [ - "libc", + "wasm-bindgen", ] [[package]] -name = "js-sys" -version = "0.3.50" +name = "jsonpath_lib" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" +checksum = "61352ec23883402b7d30b3313c16cbabefb8907361c4eb669d990cbb87ceee5a" dependencies = [ - "wasm-bindgen", + "array_tool", + "env_logger 0.7.1", + "log", + "serde", + "serde_json", ] [[package]] name = "jsonrpc-client-transports" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7" +checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ - "failure", - "futures 0.1.29", + "derive_more", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -3067,11 +3375,13 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.1.29", + "futures 0.3.18", + "futures-executor", + "futures-util", "log", "serde", "serde_derive", @@ -3080,18 +3390,19 @@ dependencies = [ [[package]] name = "jsonrpc-core-client" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94db" +checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ + "futures 0.3.18", "jsonrpc-client-transports", ] [[package]] name = "jsonrpc-derive" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3" +checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -3101,129 +3412,216 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb5c4513b7b542f42da107942b7b759f27120b5cc894729f88254b28dff44b7" +checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "hyper 0.12.35", + "futures 0.3.18", + "hyper", "jsonrpc-core", "jsonrpc-server-utils", "log", "net2", - "parking_lot 0.10.2", + "parking_lot 0.11.2", "unicase", ] [[package]] name = "jsonrpc-ipc-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf50e53e4eea8f421a7316c5f63e395f7bc7c4e786a6dc54d76fab6ff7aa7ce7" +checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" dependencies = [ + "futures 0.3.18", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-tokio-ipc", - "parking_lot 0.10.2", - "tokio-service", + "parking_lot 0.11.2", + "tower-service", ] [[package]] name = "jsonrpc-pubsub" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77" +checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ + "futures 0.3.18", "jsonrpc-core", + "lazy_static", "log", - "parking_lot 0.10.2", + "parking_lot 0.11.2", "rand 0.7.3", "serde", ] [[package]] name = "jsonrpc-server-utils" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f1f3990650c033bd8f6bd46deac76d990f9bbfb5f8dc8c4767bf0a00392176" +checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ - "bytes 0.4.12", + "bytes 1.1.0", + "futures 0.3.18", "globset", "jsonrpc-core", "lazy_static", "log", - "tokio 0.1.22", - "tokio-codec", + "tokio", + "tokio-stream", + "tokio-util", "unicase", ] [[package]] -name = "jsonrpc-ws-server" -version = "15.1.0" +name = "jsonrpc-ws-server" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" +dependencies = [ + "futures 0.3.18", + "jsonrpc-core", + "jsonrpc-server-utils", + "log", + "parity-ws", + "parking_lot 0.11.2", + "slab", +] + +[[package]] +name = "jsonrpsee" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373a33d987866ccfe1af4bc11b089dce941764313f9fd8b7cf13fcb51b72dc5" +dependencies = [ + "jsonrpsee-proc-macros 0.4.1", + "jsonrpsee-types 0.4.1", + "jsonrpsee-utils", + "jsonrpsee-ws-client 0.4.1", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8edb341d35279b59c79d7fe9e060a51aec29d45af99cc7c72ea7caa350fa71a4" +dependencies = [ + "Inflector", + "bae", + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d802063f7a3c867456955f9d2f15eb3ee0edb5ec9ec2b5526324756759221c0f" +dependencies = [ + "log", + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498" +dependencies = [ + "async-trait", + "beef", + "futures-channel", + "futures-util", + "hyper", + "log", + "serde", + "serde_json", + "soketto 0.6.0", + "thiserror", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6596fe75209b73a2a75ebe1dce4e60e03b88a2b25e8807b667597f6315150d22" +checksum = "62f778cf245158fbd8f5d50823a2e9e4c708a40be164766bd35e9fb1d86715b2" dependencies = [ - "jsonrpc-core", - "jsonrpc-server-utils", + "anyhow", + "async-trait", + "beef", + "futures-channel", + "futures-util", + "hyper", "log", - "parity-ws", - "parking_lot 0.10.2", - "slab", + "serde", + "serde_json", + "soketto 0.7.1", + "thiserror", ] [[package]] -name = "jsonrpsee-proc-macros" -version = "0.2.0" +name = "jsonrpsee-utils" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b4c85cfa6767333f3e5f3b2f2f765dad2727b0033ee270ae07c599bf43ed5ae" +checksum = "0109c4f972058f3b1925b73a17210aff7b63b65967264d0045d15ee88fe84f0c" dependencies = [ - "Inflector", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", + "arrayvec 0.7.2", + "beef", + "jsonrpsee-types 0.4.1", ] [[package]] -name = "jsonrpsee-types" -version = "0.2.0" +name = "jsonrpsee-ws-client" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cf7bd4e93b3b56e59131de7f24afbea871faf914e97bcdd942c86927ab0172" +checksum = "9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30" dependencies = [ "async-trait", - "beef", - "futures-channel", - "futures-util", - "hyper 0.14.5", + "fnv", + "futures 0.3.18", + "jsonrpsee-types 0.3.1", "log", + "pin-project 1.0.8", + "rustls", + "rustls-native-certs", "serde", "serde_json", - "soketto 0.5.0", + "soketto 0.6.0", "thiserror", + "tokio", + "tokio-rustls", + "tokio-util", + "url 2.2.2", ] [[package]] name = "jsonrpsee-ws-client" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ec51150965544e1a4468f372bdab8545243a1b045d4ab272023aac74c60de32" +checksum = "559aa56fc402af206c00fc913dc2be1d9d788dcde045d14df141a535245d35ef" dependencies = [ + "arrayvec 0.7.2", "async-trait", "fnv", - "futures 0.3.15", - "jsonrpsee-types", + "futures 0.3.18", + "http", + "jsonrpsee-types 0.4.1", "log", - "pin-project 1.0.7", - "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "pin-project 1.0.8", + "rustls-native-certs", "serde", "serde_json", - "soketto 0.5.0", + "soketto 0.7.1", "thiserror", - "tokio 0.2.21", - "tokio-rustls 0.15.0", + "tokio", + "tokio-rustls", "tokio-util", - "url 2.2.0", ] [[package]] @@ -3242,96 +3640,6 @@ dependencies = [ "winapi-build", ] -[[package]] -name = "kusama-runtime" -version = "0.9.7" -dependencies = [ - "beefy-primitives", - "bitvec", - "frame-benchmarking", - "frame-election-provider-support", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "hex-literal", - "libsecp256k1", - "log", - "max-encoded-len", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-bounties", - "pallet-collective", - "pallet-democracy", - "pallet-election-provider-multi-phase", - "pallet-elections-phragmen", - "pallet-gilt", - "pallet-grandpa", - "pallet-identity", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-mmr-primitives", - "pallet-multisig", - "pallet-nicks", - "pallet-offences", - "pallet-offences-benchmarking", - "pallet-proxy", - "pallet-recovery", - "pallet-scheduler", - "pallet-session", - "pallet-session-benchmarking", - "pallet-society", - "pallet-staking", - "pallet-staking-reward-fn", - "pallet-timestamp", - "pallet-tips", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "pallet-vesting", - "pallet-xcm", - "parity-scale-codec", - "polkadot-primitives", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "rustc-hex", - "separator", - "serde", - "serde_derive", - "serde_json", - "smallvec 1.6.1", - "sp-api", - "sp-arithmetic", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-npos-elections", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-trie", - "sp-version", - "static_assertions", - "substrate-wasm-builder", - "tiny-keccak", - "xcm", - "xcm-builder", - "xcm-executor", -] - [[package]] name = "kv-log-macro" version = "1.0.7" @@ -3343,30 +3651,30 @@ dependencies = [ [[package]] name = "kvdb" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8891bd853eff90e33024195d79d578dc984c82f9e0715fcd2b525a0c19d52811" +checksum = "45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512" dependencies = [ "parity-util-mem", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "kvdb-memorydb" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a0da8e08caf08d384a620ec19bb6c9b85c84137248e202617fb91881f25912" +checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot 0.11.2", ] [[package]] name = "kvdb-rocksdb" -version = "0.11.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b27cdb788bf1c8ade782289f9dbee626940be2961fd75c7cde993fa2f1ded1" +checksum = "0d169dbb316aa0fa185d02d847c047f1aa20e292cf1563d790c13536a2a732c8" dependencies = [ "fs-swap", "kvdb", @@ -3374,28 +3682,28 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "regex", "rocksdb", - "smallvec 1.6.1", + "smallvec", ] [[package]] -name = "kvdb-web" -version = "0.9.0" +name = "kvdb-rocksdb" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1e98ba343d0b35f9009a8844cd2b87fa3192f7e79033ac05b00aeae0f3b0b5" +checksum = "9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35a" dependencies = [ - "futures 0.3.15", - "js-sys", + "fs-swap", "kvdb", - "kvdb-memorydb", "log", + "num_cpus", + "owning_ref", "parity-util-mem", - "parking_lot 0.11.1", - "send_wrapper 0.5.0", - "wasm-bindgen", - "web-sys", + "parking_lot 0.11.2", + "regex", + "rocksdb", + "smallvec", ] [[package]] @@ -3406,21 +3714,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" - -[[package]] -name = "leb128" -version = "0.2.4" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.91" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8916b1f6ca17130ec6568feccee27c156ad12037880833a3b842a823236502e7" +checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" [[package]] name = "libloading" @@ -3434,9 +3736,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +checksum = "afe203d669ec979b7128619bae5a63b7b42e9203c1b29146079ee05e2f604b52" dependencies = [ "cfg-if 1.0.0", "winapi 0.3.9", @@ -3448,15 +3750,25 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +[[package]] +name = "libnghttp2-sys" +version = "0.1.7+1.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "libp2p" -version = "0.37.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08053fbef67cd777049ef7a95ebaca2ece370b4ed7712c3fa404d69a88cb741b" +checksum = "3bec54343492ba5940a6c555e512c6721139835d28c59bc22febece72dfd0d9d" dependencies = [ "atomic", - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "lazy_static", "libp2p-core", "libp2p-deflate", @@ -3466,12 +3778,14 @@ dependencies = [ "libp2p-identify", "libp2p-kad", "libp2p-mdns", + "libp2p-metrics", "libp2p-mplex", "libp2p-noise", "libp2p-ping", "libp2p-plaintext", "libp2p-pnet", "libp2p-relay", + "libp2p-rendezvous", "libp2p-request-response", "libp2p-swarm", "libp2p-swarm-derive", @@ -3480,102 +3794,102 @@ dependencies = [ "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.7", - "smallvec 1.6.1", + "multiaddr", + "parking_lot 0.11.2", + "pin-project 1.0.8", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-core" -version = "0.28.2" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71dd51b562e14846e65bad00e5808d0644376e6588668c490d3c48e1dfeb4a9a" +checksum = "bef22d9bba1e8bcb7ec300073e6802943fe8abb8190431842262b5f1c30abba1" dependencies = [ "asn1_der", "bs58", "ed25519-dalek", "either", "fnv", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "lazy_static", "libsecp256k1", "log", - "multihash", + "multiaddr", + "multihash 0.14.0", "multistream-select", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "parking_lot 0.11.2", + "pin-project 1.0.8", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.4", "ring", "rw-stream-sink", - "sha2 0.9.2", - "smallvec 1.6.1", + "sha2 0.9.8", + "smallvec", "thiserror", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", "zeroize", ] [[package]] name = "libp2p-deflate" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2181a641cd15f9b6ba71b1335800f309012a0a97a29ffaabbbf40e9d3d58f08" +checksum = "51a800adb195f33de63f4b17b63fe64cfc23bf2c6a0d3d0d5321328664e65197" dependencies = [ "flate2", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", ] [[package]] name = "libp2p-dns" -version = "0.28.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e63dab8b5ff35e0c101a3e51e843ba782c07bbb1682f5fd827622e0d02b98b" +checksum = "bb8f89d15cb6e3c5bc22afff7513b11bab7856f2872d3cfba86f7f63a06bc498" dependencies = [ "async-std-resolver", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "log", - "smallvec 1.6.1", + "smallvec", "trust-dns-resolver", ] [[package]] name = "libp2p-floodsub" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a9b570f6766301d9c4aa00fce3554cad1598e2f466debbc4dde909028417cf" +checksum = "aab3d7210901ea51b7bae2b581aa34521797af8c4ec738c980bda4a06434067f" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "libp2p-gossipsub" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73cb9a89a301afde1e588c73f7e9131e12a5388725f290a9047b878862db1b53" +checksum = "dfeead619eb5dac46e65acc78c535a60aaec803d1428cca6407c3a4fc74d698d" dependencies = [ "asynchronous-codec 0.6.0", - "base64 0.13.0", + "base64", "byteorder", - "bytes 1.0.1", + "bytes 1.1.0", "fnv", - "futures 0.3.15", + "futures 0.3.18", "hex_fmt", "libp2p-core", "libp2p-swarm", @@ -3584,122 +3898,137 @@ dependencies = [ "prost-build", "rand 0.7.3", "regex", - "sha2 0.9.2", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "sha2 0.9.8", + "smallvec", + "unsigned-varint 0.7.1", "wasm-timer", ] [[package]] name = "libp2p-identify" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f668f00efd9883e8b7bcc582eaf0164615792608f886f6577da18bcbeea0a46" +checksum = "cca1275574183f288ff8b72d535d5ffa5ea9292ef7829af8b47dcb197c7b0dcd" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", + "lru 0.6.6", "prost", "prost-build", - "smallvec 1.6.1", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-kad" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07312ebe5ee4fd2404447a0609814574df55c65d4e20838b957bbd34907d820" +checksum = "a2297dc0ca285f3a09d1368bde02449e539b46f94d32d53233f53f6625bcd3ba" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "either", "fnv", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "sha2 0.9.2", - "smallvec 1.6.1", + "sha2 0.9.8", + "smallvec", "uint", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", "wasm-timer", ] [[package]] name = "libp2p-mdns" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c221897b3fd7f215de7ecfec215c5eba598e5b61c605b5f8b56fe8a4fb507724" +checksum = "14c864b64bdc8a84ff3910a0df88e6535f256191a450870f1e7e10cbf8e64d45" dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.15", + "futures 0.3.18", "if-watch", "lazy_static", "libp2p-core", "libp2p-swarm", "log", "rand 0.8.4", - "smallvec 1.6.1", - "socket2 0.4.0", + "smallvec", + "socket2 0.4.2", "void", ] +[[package]] +name = "libp2p-metrics" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4af432fcdd2f8ba4579b846489f8f0812cfd738ced2c0af39df9b1c48bbb6ab2" +dependencies = [ + "libp2p-core", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-swarm", + "open-metrics-client", +] + [[package]] name = "libp2p-mplex" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e9b544335d1ed30af71daa96edbefadef6f19c7a55f078b9fc92c87163105d" +checksum = "7f2cd64ef597f40e14bfce0497f50ecb63dd6d201c61796daeb4227078834fbf" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "smallvec", + "unsigned-varint 0.7.1", ] [[package]] name = "libp2p-noise" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36db0f0db3b0433f5b9463f1c0cd9eadc0a3734a9170439ce501ff99733a88bd" +checksum = "a8772c7a99088221bb7ca9c5c0574bf55046a7ab4c319f3619b275f28c8fb87a" dependencies = [ - "bytes 1.0.1", - "curve25519-dalek 3.0.0", - "futures 0.3.15", + "bytes 1.1.0", + "curve25519-dalek 3.2.0", + "futures 0.3.18", "lazy_static", "libp2p-core", "log", "prost", "prost-build", - "rand 0.7.3", - "sha2 0.9.2", + "rand 0.8.4", + "sha2 0.9.8", "snow", "static_assertions", - "x25519-dalek 1.1.0", + "x25519-dalek", "zeroize", ] [[package]] name = "libp2p-ping" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4bfaffac63bf3c7ec11ed9d8879d455966ddea7e78ee14737f0b6dce0d1cd1" +checksum = "80ef7b0ec5cf06530d9eb6cf59ae49d46a2c45663bde31c25a12f682664adbcf" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", @@ -3710,30 +4039,30 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8c37b4d2a075b4be8442760a5f8c037180f0c8dd5b5734b9978ab868b3aa11" +checksum = "5fba1a6ff33e4a274c89a3b1d78b9f34f32af13265cc5c46c16938262d4e945a" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "libp2p-core", "log", "prost", "prost-build", - "unsigned-varint 0.7.0", + "unsigned-varint 0.7.1", "void", ] [[package]] name = "libp2p-pnet" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599" +checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "log", - "pin-project 1.0.7", + "pin-project 1.0.8", "rand 0.7.3", "salsa20", "sha3", @@ -3741,68 +4070,89 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8786aca3f18671d8776289706a5521f6c9124a820f69e358de214b9939440d" +checksum = "2852b61c90fa8ce3c8fcc2aba76e6cefc20d648f9df29157d6b3a916278ef3e3" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "futures-timer 3.0.2", "libp2p-core", "libp2p-swarm", "log", - "pin-project 1.0.7", + "pin-project 1.0.8", "prost", "prost-build", "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "smallvec", + "unsigned-varint 0.7.1", + "void", + "wasm-timer", +] + +[[package]] +name = "libp2p-rendezvous" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14a6d2b9e7677eff61dc3d2854876aaf3976d84a01ef6664b610c77a0c9407c5" +dependencies = [ + "asynchronous-codec 0.6.0", + "bimap", + "futures 0.3.18", + "libp2p-core", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.4", + "sha2 0.9.8", + "thiserror", + "unsigned-varint 0.7.1", "void", "wasm-timer", ] [[package]] name = "libp2p-request-response" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdbe172f08e6d0f95fa8634e273d4c4268c4063de2e33e7435194b0130c62e3" +checksum = "a877a4ced6d46bf84677e1974e8cf61fb434af73b2e96fb48d6cb6223a4634d8" dependencies = [ "async-trait", - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "libp2p-core", "libp2p-swarm", "log", - "lru", - "minicbor", + "lru 0.7.0", "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", + "smallvec", + "unsigned-varint 0.7.1", "wasm-timer", ] [[package]] name = "libp2p-swarm" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e04d8e1eef675029ec728ba14e8d0da7975d84b6679b699b4ae91a1de9c3a92" +checksum = "3f5184a508f223bc100a12665517773fb8730e9f36fc09eefb670bf01b107ae9" dependencies = [ "either", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "log", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "void", "wasm-timer", ] [[package]] name = "libp2p-swarm-derive" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365b0a699fea5168676840567582a012ea297b1ca02eee467e58301b9c9c5eed" +checksum = "072c290f727d39bdc4e9d6d1c847978693d25a673bd757813681e33e5f6c00c2" dependencies = [ "quote", "syn", @@ -3810,40 +4160,40 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b1a27d21c477951799e99d5c105d78868258502ce092988040a808d5a19bbd9" +checksum = "7399c5b6361ef525d41c11fcf51635724f832baf5819b30d3d873eabb4fbae4b" dependencies = [ "async-io", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "if-watch", "ipnet", "libc", "libp2p-core", "log", - "socket2 0.4.0", + "socket2 0.4.2", ] [[package]] name = "libp2p-uds" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd6564bb3b7ff203661ccbb69003c2b551e34cef974f2d6c6a28306a12170b5" +checksum = "b8b7563e46218165dfd60f64b96f7ce84590d75f53ecbdc74a7dd01450dc5973" dependencies = [ "async-std", - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.28.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef45d61e43c313531b5e903e4e8415212ff6338e0c54c47da5b9b412b5760de" +checksum = "1008a302b73c5020251f9708c653f5ed08368e530e247cc9cd2f109ff30042cf" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -3853,40 +4203,40 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace60995ef6f637e4752cccbb2590f6bc358e8741a0d066307636c69a4b3a74" +checksum = "22e12df82d1ed64969371a9e65ea92b91064658604cc2576c2757f18ead9a1cf" dependencies = [ "either", - "futures 0.3.15", + "futures 0.3.18", "futures-rustls", "libp2p-core", "log", "quicksink", "rw-stream-sink", - "soketto 0.4.1", - "url 2.2.0", + "soketto 0.7.1", + "url 2.2.2", "webpki-roots", ] [[package]] name = "libp2p-yamux" -version = "0.32.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f35da42cfc6d5cb0dcf3ad6881bc68d146cdf38f98655e09e33fbba4d13eabc4" +checksum = "4e7362abb8867d7187e7e93df17f460d554c997fc5c8ac57dc1259057f6889af" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "libp2p-core", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "thiserror", "yamux", ] [[package]] name = "librocksdb-sys" -version = "6.17.3" +version = "6.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da125e1c0f22c7cae785982115523a0738728498547f415c9054cb17c7e89f9" +checksum = "c309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25d" dependencies = [ "bindgen", "cc", @@ -3896,25 +4246,57 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", + "base64", + "digest 0.9.0", "hmac-drbg", - "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.2.3", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.4", + "serde", + "sha2 0.9.8", "typenum", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "libz-sys" -version = "1.0.25" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" dependencies = [ "cc", "libc", @@ -3924,29 +4306,35 @@ dependencies = [ [[package]] name = "linked-hash-map" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "linked_hash_set" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7c91c4c7bbeb4f2f7c4e5be11e6a05bd6830bc37249c47ce1ad86ad453ff9c" +checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" dependencies = [ "linked-hash-map", ] [[package]] name = "linregress" -version = "0.4.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0ad4b5cc8385a881c561fac3501353d63d2a2b7a357b5064d71815c9a92724" +checksum = "d6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8" dependencies = [ "nalgebra", "statrs", ] +[[package]] +name = "linux-raw-sys" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687387ff42ec7ea4f2149035a5675fedb675d26f98db90a1846ac63d3addb5f5" + [[package]] name = "lock_api" version = "0.3.4" @@ -3958,9 +4346,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" +checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" dependencies = [ "scopeguard", ] @@ -3976,23 +4364,19 @@ dependencies = [ ] [[package]] -name = "loom" -version = "0.3.6" +name = "lru" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed" +checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" dependencies = [ - "cfg-if 0.1.10", - "generator", - "scoped-tls", - "serde", - "serde_json", + "hashbrown", ] [[package]] name = "lru" -version = "0.6.5" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90ba" +checksum = "6c748cfe47cb8da225c37595b3108bea1c198c84aaae8ea0ba76d01dda9fc803" dependencies = [ "hashbrown", ] @@ -4006,6 +4390,26 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "lz4" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724c" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acae" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "mach" version = "0.3.2" @@ -4038,85 +4442,67 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "matrixmultiply" -version = "0.2.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f" +checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" dependencies = [ "rawpointer", ] [[package]] -name = "max-encoded-len" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "impl-trait-for-tuples", - "max-encoded-len-derive", - "parity-scale-codec", - "primitive-types", -] - -[[package]] -name = "max-encoded-len-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" +name = "memchr" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] -name = "memchr" -version = "2.3.3" +name = "memmap" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi 0.3.9", +] [[package]] name = "memmap2" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73be3b7d04a0123e933fea1d50d126cc7196bbc0362c0ce426694f777194eee" +checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" dependencies = [ "libc", ] [[package]] -name = "memoffset" -version = "0.5.5" +name = "memmap2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "4647a11b578fead29cdbb34d4adef8dd3dc35b876c9c6d5240d83f205abfe96e" dependencies = [ - "autocfg", + "libc", ] [[package]] name = "memoffset" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" dependencies = [ "autocfg", ] [[package]] name = "memory-db" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "814bbecfc0451fc314eeea34f05bbcd5b98a7ad7af37faee088b86a1e633f1d4" +checksum = "de006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5" dependencies = [ "hash-db", "hashbrown", @@ -4129,7 +4515,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "beeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860a" dependencies = [ - "lru", + "lru 0.6.6", ] [[package]] @@ -4140,9 +4526,9 @@ checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" [[package]] name = "merlin" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6feca46f4fa3443a01769d768727f10c10a20fdb65e52dc16a81f0c8269bb78" +checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" dependencies = [ "byteorder", "keccak", @@ -4151,60 +4537,160 @@ dependencies = [ ] [[package]] -name = "metered-channel" +name = "messages-relay" version = "0.1.0" dependencies = [ - "assert_matches", + "async-std", + "async-trait", + "bp-messages", + "bp-runtime", + "futures 0.3.18", + "hex", + "log", + "num-traits", + "parking_lot 0.11.2", + "relay-utils", + "sp-arithmetic", +] + +[[package]] +name = "metered-channel" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ "derive_more", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", + "thiserror", + "tracing", ] [[package]] name = "mick-jaeger" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c023c3f16109e7f33aa451f773fd61070e265b4977d0b6e344a51049296dd7df" +checksum = "eaa77fad8461bb1e0d01be11299e24c6e544007715ed442bfec29f165dc487ae" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "rand 0.7.3", "thrift", ] [[package]] -name = "minicbor" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea79ce4ab9f445ec6b71833a2290ac0a29c9dde0fa7cae4c481eecae021d9bd9" +name = "millau-bridge-node" +version = "0.1.0" dependencies = [ - "minicbor-derive", + "bp-millau", + "bp-runtime", + "frame-benchmarking", + "frame-benchmarking-cli", + "jsonrpc-core", + "millau-runtime", + "node-inspect", + "pallet-bridge-messages", + "pallet-transaction-payment-rpc", + "sc-basic-authorship", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-executor", + "sc-finality-grandpa", + "sc-finality-grandpa-rpc", + "sc-keystore", + "sc-rpc", + "sc-service", + "sc-telemetry", + "sc-transaction-pool", + "serde_json", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-finality-grandpa", + "sp-runtime", + "sp-timestamp", + "structopt", + "substrate-build-script-utils", + "substrate-frame-rpc-system", ] [[package]] -name = "minicbor-derive" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce18b5423c573a13e80cb3046ea0af6379ef725dc3af4886bdb8f4e5093068" +name = "millau-runtime" +version = "0.1.0" dependencies = [ - "proc-macro2", - "quote", - "syn", + "bp-header-chain", + "bp-messages", + "bp-millau", + "bp-rialto", + "bp-runtime", + "bp-westend", + "bridge-runtime-common", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "hex-literal", + "pallet-aura", + "pallet-balances", + "pallet-bridge-dispatch", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-token-swap", + "pallet-grandpa", + "pallet-randomness-collective-flip", + "pallet-session", + "pallet-shift-session-manager", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-finality-grandpa", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-trie", + "sp-version", + "substrate-wasm-builder", ] +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" -version = "0.4.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0f75932c1f6cfae3c04000e40114adf955636e19040f9c0a2c380702aa1c7f" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", + "autocfg", ] [[package]] name = "mio" -version = "0.6.22" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" dependencies = [ "cfg-if 0.1.10", "fuchsia-zircon", @@ -4213,52 +4699,42 @@ dependencies = [ "kernel32-sys", "libc", "log", - "miow 0.2.1", + "miow 0.2.2", "net2", "slab", "winapi 0.2.8", ] [[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio", - "slab", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.7" +name = "mio" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ + "libc", "log", - "mio", - "miow 0.3.5", + "miow 0.3.7", + "ntapi", "winapi 0.3.9", ] [[package]] -name = "mio-uds" -version = "0.6.8" +name = "mio-extras" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "iovec", - "libc", - "mio", + "lazycell", + "log", + "mio 0.6.23", + "slab", ] [[package]] name = "miow" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" dependencies = [ "kernel32-sys", "net2", @@ -4268,19 +4744,36 @@ dependencies = [ [[package]] name = "miow" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "socket2 0.3.17", "winapi 0.3.9", ] [[package]] name = "more-asserts" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "multiaddr" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash 0.14.0", + "percent-encoding 2.1.0", + "serde", + "static_assertions", + "unsigned-varint 0.7.1", + "url 2.2.2", +] [[package]] name = "multibase" @@ -4295,9 +4788,9 @@ dependencies = [ [[package]] name = "multihash" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb63389ee5fcd4df3f8727600f4a0c3df53c541f0ed4e8b50a9ae51a80fc1efe" +checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab" dependencies = [ "blake2b_simd", "blake2s_simd", @@ -4305,19 +4798,32 @@ dependencies = [ "digest 0.9.0", "generic-array 0.14.4", "multihash-derive", - "sha2 0.9.2", + "sha2 0.9.8", "sha3", "unsigned-varint 0.5.1", ] +[[package]] +name = "multihash" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.4", + "multihash-derive", + "sha2 0.9.8", + "unsigned-varint 0.7.1", +] + [[package]] name = "multihash-derive" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5653449cd45d502a53480ee08d7a599e8f4893d2bacb33c63d65bc20af6c1a" +checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro-error", + "proc-macro-crate 1.1.0", + "proc-macro-error 1.0.4", "proc-macro2", "quote", "syn", @@ -4326,66 +4832,67 @@ dependencies = [ [[package]] name = "multimap" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ce" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.10.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ddc0eb0117736f19d556355464fc87efc8ad98b29e3fd84f02531eb6e90840" +checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" dependencies = [ - "bytes 1.0.1", - "futures 0.3.15", + "bytes 1.1.0", + "futures 0.3.18", "log", - "pin-project 1.0.7", - "smallvec 1.6.1", - "unsigned-varint 0.6.0", + "pin-project 1.0.8", + "smallvec", + "unsigned-varint 0.7.1", ] [[package]] name = "nalgebra" -version = "0.21.1" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6147c3d50b4f3cdabfe2ecc94a0191fd3d6ad58aefd9664cf396285883486" +checksum = "462fffe4002f4f2e1f6a9dcf12cc1a6fc0e15989014efc02a941d3e0f5dc2120" dependencies = [ "approx", - "generic-array 0.13.2", "matrixmultiply", + "nalgebra-macros", "num-complex", - "num-rational", + "num-rational 0.4.0", "num-traits", - "rand 0.7.3", + "rand 0.8.4", "rand_distr", "simba", "typenum", ] [[package]] -name = "names" -version = "0.11.0" +name = "nalgebra-macros" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" dependencies = [ - "rand 0.3.23", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "nb-connect" -version = "1.0.2" +name = "names" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998" +checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" dependencies = [ - "libc", - "winapi 0.3.9", + "rand 0.8.4", ] [[package]] name = "net2" -version = "0.2.34" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" dependencies = [ "cfg-if 0.1.10", "libc", @@ -4393,15 +4900,20 @@ dependencies = [ ] [[package]] -name = "nix" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" +name = "node-inspect" +version = "0.9.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "bitflags", - "cc", - "cfg-if 1.0.0", - "libc", + "derive_more", + "parity-scale-codec", + "sc-cli", + "sc-client-api", + "sc-executor", + "sc-service", + "sp-blockchain", + "sp-core", + "sp-runtime", + "structopt", ] [[package]] @@ -4418,14 +4930,24 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "5.1.2" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" dependencies = [ "memchr", + "minimal-lexical", "version_check", ] +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "num-bigint" version = "0.2.6" @@ -4439,32 +4961,52 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.2.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" dependencies = [ - "autocfg", "num-traits", ] +[[package]] +name = "num-format" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +dependencies = [ + "arrayvec 0.4.12", + "itoa", +] + [[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ "autocfg", + "num-bigint", + "num-integer", "num-traits", ] [[package]] name = "num-rational" -version = "0.2.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" dependencies = [ "autocfg", - "num-bigint", "num-integer", "num-traits", ] @@ -4491,28 +5033,20 @@ dependencies = [ [[package]] name = "object" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" - -[[package]] -name = "object" -version = "0.24.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "crc32fast", "indexmap", + "memchr", ] [[package]] name = "once_cell" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad167a2f54e832b82dbe003a046280dceffe5227b5f79e08e363a29638cfddd" -dependencies = [ - "parking_lot 0.11.1", -] +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "opaque-debug" @@ -4526,28 +5060,55 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "open-metrics-client" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7337d80c23c2d8b1349563981bc4fb531220733743ba8115454a67b181173f0d" +dependencies = [ + "dtoa", + "itoa", + "open-metrics-client-derive-text-encode", + "owning_ref", +] + +[[package]] +name = "open-metrics-client-derive-text-encode" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c83b586f00268c619c1cb3340ec1a6f59dd9ba1d9833a273a68e6d5cd8ffc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "openssl-probe" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] -name = "ordered-float" -version = "1.1.0" +name = "openssl-sys" +version = "0.9.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3741934be594d77de1c8461ebcbbe866f585ea616a9753aa78f2bdc69f0e4579" +checksum = "7df13d165e607909b363a4757a6f133f8a818a74e9d3a98d09c6128e15fa4c73" dependencies = [ - "num-traits", + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] -name = "output_vt100" -version = "0.1.2" +name = "ordered-float" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" dependencies = [ - "winapi 0.3.9", + "num-traits", ] [[package]] @@ -4560,20 +5121,31 @@ dependencies = [ ] [[package]] -name = "owo-colors" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" +name = "pallet-aura" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "frame-support", + "frame-system", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", +] [[package]] name = "pallet-authority-discovery" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "pallet-session", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-authority-discovery", "sp-runtime", @@ -4582,13 +5154,14 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "parity-scale-codec", + "scale-info", "sp-authorship", "sp-runtime", "sp-std", @@ -4596,8 +5169,8 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", @@ -4607,6 +5180,7 @@ dependencies = [ "pallet-session", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-consensus-babe", "sp-consensus-vrf", @@ -4617,46 +5191,107 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-bags-list" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-balances" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", - "max-encoded-len", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "pallet-beefy" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#29244671a1db0ee9c30b04f9a56f6bf2489522a5" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "beefy-primitives", + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-beefy-mmr" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ + "beefy-merkle-tree", "beefy-primitives", "frame-support", "frame-system", + "hex", + "libsecp256k1", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-mmr-primitives", "pallet-session", "parity-scale-codec", + "scale-info", "serde", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] [[package]] name = "pallet-bounties" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-treasury", "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-bridge-dispatch" +version = "0.1.0" +dependencies = [ + "bp-message-dispatch", + "bp-runtime", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] @@ -4675,7 +5310,9 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", + "scale-info", "serde", + "sp-core", "sp-finality-grandpa", "sp-io", "sp-runtime", @@ -4684,15 +5321,24 @@ dependencies = [ ] [[package]] -name = "pallet-collective" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-bridge-messages" +version = "0.1.0" dependencies = [ + "bitvec", + "bp-message-dispatch", + "bp-messages", + "bp-runtime", "frame-benchmarking", "frame-support", "frame-system", + "hex", + "hex-literal", "log", + "num-traits", + "pallet-balances", "parity-scale-codec", + "scale-info", + "serde", "sp-core", "sp-io", "sp-runtime", @@ -4700,76 +5346,103 @@ dependencies = [ ] [[package]] -name = "pallet-democracy" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-bridge-token-swap" +version = "0.1.0" dependencies = [ + "bp-message-dispatch", + "bp-messages", + "bp-runtime", + "bp-token-swap", "frame-benchmarking", "frame-support", "frame-system", + "log", + "pallet-balances", + "pallet-bridge-dispatch", + "pallet-bridge-messages", "parity-scale-codec", + "scale-info", "serde", + "sp-core", "sp-io", "sp-runtime", "sp-std", ] [[package]] -name = "pallet-election-provider-multi-phase" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-collective" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", - "frame-election-provider-support", "frame-support", "frame-system", "log", "parity-scale-codec", - "rand 0.7.3", - "sp-arithmetic", + "scale-info", "sp-core", "sp-io", - "sp-npos-elections", "sp-runtime", "sp-std", - "static_assertions", ] [[package]] -name = "pallet-elections-phragmen" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-democracy" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-election-provider-multi-phase" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "frame-election-provider-support", + "frame-support", + "frame-system", "log", "parity-scale-codec", + "scale-info", + "sp-arithmetic", "sp-core", "sp-io", "sp-npos-elections", "sp-runtime", "sp-std", + "static_assertions", ] [[package]] -name = "pallet-gilt" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-elections-phragmen" +version = "5.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", + "log", "parity-scale-codec", - "sp-arithmetic", + "scale-info", + "sp-core", + "sp-io", + "sp-npos-elections", "sp-runtime", "sp-std", ] [[package]] name = "pallet-grandpa" -version = "3.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", @@ -4778,6 +5451,7 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-core", "sp-finality-grandpa", @@ -4790,14 +5464,15 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "enumflags2", "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4805,15 +5480,15 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "log", "pallet-authorship", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-core", "sp-io", @@ -4824,13 +5499,13 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-keyring", @@ -4840,14 +5515,16 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", + "sp-core", "sp-io", "sp-runtime", "sp-std", @@ -4855,8 +5532,8 @@ dependencies = [ [[package]] name = "pallet-mmr" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4864,6 +5541,7 @@ dependencies = [ "frame-system", "pallet-mmr-primitives", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -4872,8 +5550,8 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", @@ -4889,7 +5567,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4900,20 +5578,18 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-core", - "sp-rpc", "sp-runtime", ] [[package]] name = "pallet-multisig" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", - "sp-core", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4921,12 +5597,13 @@ dependencies = [ [[package]] name = "pallet-nicks" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4934,82 +5611,60 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "log", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-runtime", "sp-staking", "sp-std", ] -[[package]] -name = "pallet-offences-benchmarking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "pallet-babe", - "pallet-balances", - "pallet-grandpa", - "pallet-im-online", - "pallet-offences", - "pallet-session", - "pallet-staking", - "parity-scale-codec", - "sp-runtime", - "sp-staking", - "sp-std", -] - [[package]] name = "pallet-proxy" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", - "max-encoded-len", "parity-scale-codec", - "sp-core", + "scale-info", "sp-io", "sp-runtime", "sp-std", ] [[package]] -name = "pallet-recovery" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-randomness-collective-flip" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "enumflags2", "frame-support", "frame-system", "parity-scale-codec", - "sp-io", + "safe-mix", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "pallet-scheduler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5017,8 +5672,8 @@ dependencies = [ [[package]] name = "pallet-session" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", @@ -5026,6 +5681,7 @@ dependencies = [ "log", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -5036,40 +5692,25 @@ dependencies = [ ] [[package]] -name = "pallet-session-benchmarking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "pallet-shift-session-manager" +version = "0.1.0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "pallet-session", - "pallet-staking", - "rand 0.7.3", - "sp-runtime", - "sp-session", - "sp-std", -] - -[[package]] -name = "pallet-society" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "frame-support", - "frame-system", "parity-scale-codec", - "rand_chacha 0.2.2", + "scale-info", + "sp-core", "sp-runtime", + "sp-staking", "sp-std", ] [[package]] name = "pallet-staking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-election-provider-support", "frame-support", "frame-system", @@ -5077,45 +5718,35 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", - "paste 1.0.5", - "rand_chacha 0.2.2", + "scale-info", "serde", "sp-application-crypto", "sp-io", "sp-runtime", "sp-staking", "sp-std", - "static_assertions", ] [[package]] name = "pallet-staking-reward-curve" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", ] -[[package]] -name = "pallet-staking-reward-fn" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "log", - "sp-arithmetic", -] - [[package]] name = "pallet-sudo" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5123,15 +5754,15 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "impl-trait-for-tuples", "log", "parity-scale-codec", + "scale-info", "sp-inherents", "sp-io", "sp-runtime", @@ -5141,29 +5772,33 @@ dependencies = [ [[package]] name = "pallet-tips" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-treasury", "parity-scale-codec", + "scale-info", "serde", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] [[package]] name = "pallet-transaction-payment" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-io", "sp-runtime", @@ -5172,8 +5807,8 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5189,8 +5824,8 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5200,15 +5835,15 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "impl-trait-for-tuples", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-runtime", "sp-std", @@ -5216,13 +5851,13 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -5231,37 +5866,54 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "enumflags2", - "frame-benchmarking", +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ "frame-support", "frame-system", + "log", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "pallet-xcm" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "frame-support", "frame-system", + "log", "parity-scale-codec", + "scale-info", "serde", + "sp-core", "sp-runtime", "sp-std", "xcm", "xcm-executor", ] +[[package]] +name = "parachain-info" +version = "0.1.0" +source = "git+https://github.com/paritytech/cumulus?branch=master#5b245a21eb84ff7b1da6b47ad4386bda3dfb5880" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", +] + [[package]] name = "parity-db" -version = "0.2.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e337f62db341435f0da05b8f6b97e984ef4ea5800510cd07c2d624688c40b47" +checksum = "78a95abf24f1097c6e3181abbbbfc3630b3b5e681470940f719b69acb4911c7f" dependencies = [ "blake2-rfc", "crc32fast", @@ -5269,49 +5921,34 @@ dependencies = [ "hex", "libc", "log", - "memmap2", - "parking_lot 0.11.1", + "lz4", + "memmap2 0.2.3", + "parking_lot 0.11.2", "rand 0.8.4", -] - -[[package]] -name = "parity-multiaddr" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58341485071825827b7f03cf7efd1cb21e6a709bea778fb50227fd45d2f361b4" -dependencies = [ - "arrayref", - "bs58", - "byteorder", - "data-encoding", - "multihash", - "percent-encoding 2.1.0", - "serde", - "static_assertions", - "unsigned-varint 0.7.0", - "url 2.2.0", + "snap", ] [[package]] name = "parity-scale-codec" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f4d179ed52b1c7eeb29baf29c604ea9301b889b23ce93660220a5465d5c6f" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.0", + "arrayvec 0.7.2", "bitvec", "byte-slice-cast", + "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44c5f94427bd0b5076e8f7e15ca3f60a4d8ac0077e4793884e6fdfd8915344e" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 0.1.5", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5325,39 +5962,33 @@ checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" [[package]] name = "parity-tokio-ipc" -version = "0.4.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e57fea504fea33f9fbb5f49f378359030e7e026a6ab849bb9e8f0787376f1bf" +checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", + "futures 0.3.18", "libc", "log", - "mio-named-pipes", - "miow 0.3.5", "rand 0.7.3", - "tokio 0.1.22", - "tokio-named-pipes", - "tokio-uds", + "tokio", "winapi 0.3.9", ] [[package]] name = "parity-util-mem" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664a8c6b8e62d8f9f2f937e391982eb433ab285b4cd9545b342441e04a906e42" +checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" dependencies = [ "cfg-if 1.0.0", "ethereum-types", "hashbrown", "impl-trait-for-tuples", - "jemallocator", - "lru", + "lru 0.6.6", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "primitive-types", - "smallvec 1.6.1", + "smallvec", "winapi 0.3.9", ] @@ -5389,20 +6020,20 @@ checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" [[package]] name = "parity-ws" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e02a625dd75084c2a7024f07c575b61b782f729d18702dabb3cdbf31911dc61" +checksum = "5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6" dependencies = [ "byteorder", "bytes 0.4.12", "httparse", "log", - "mio", + "mio 0.6.23", "mio-extras", "rand 0.7.3", "sha-1 0.8.2", "slab", - "url 2.2.0", + "url 2.2.2", ] [[package]] @@ -5411,17 +6042,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version", -] - [[package]] name = "parking_lot" version = "0.10.2" @@ -5434,28 +6054,13 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", - "lock_api 0.4.1", - "parking_lot_core 0.8.0", -] - -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi 0.0.3", - "libc", - "redox_syscall 0.1.56", - "rustc_version", - "smallvec 0.6.13", - "winapi 0.3.9", + "lock_api 0.4.5", + "parking_lot_core 0.8.5", ] [[package]] @@ -5465,62 +6070,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" dependencies = [ "cfg-if 0.1.10", - "cloudabi 0.0.3", + "cloudabi", "libc", - "redox_syscall 0.1.56", - "smallvec 1.6.1", + "redox_syscall 0.1.57", + "smallvec", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.8.0" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "cfg-if 0.1.10", - "cloudabi 0.1.0", + "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.1.56", - "smallvec 1.6.1", + "redox_syscall 0.2.10", + "smallvec", "winapi 0.3.9", ] [[package]] name = "paste" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" -dependencies = [ - "paste-impl", - "proc-macro-hack", -] - -[[package]] -name = "paste" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" - -[[package]] -name = "paste-impl" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" -dependencies = [ - "proc-macro-hack", -] - -[[package]] -name = "pbkdf2" -version = "0.3.0" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -dependencies = [ - "byteorder", - "crypto-mac 0.7.0", -] +checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" [[package]] name = "pbkdf2" @@ -5532,10 +6107,13 @@ dependencies = [ ] [[package]] -name = "pdqselect" -version = "0.1.0" +name = "pbkdf2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.1", +] [[package]] name = "peeking_take_while" @@ -5600,9 +6178,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" dependencies = [ "fixedbitset", "indexmap", @@ -5610,27 +6188,27 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.23" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" +checksum = "918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0f" dependencies = [ - "pin-project-internal 0.4.23", + "pin-project-internal 0.4.28", ] [[package]] name = "pin-project" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" dependencies = [ - "pin-project-internal 1.0.7", + "pin-project-internal 1.0.8", ] [[package]] name = "pin-project-internal" -version = "0.4.23" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f" +checksum = "3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5e" dependencies = [ "proc-macro2", "quote", @@ -5639,9 +6217,9 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" dependencies = [ "proc-macro2", "quote", @@ -5650,15 +6228,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.7" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" +checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" [[package]] name = "pin-utils" @@ -5668,134 +6246,92 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.17" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" [[package]] name = "platforms" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" - -[[package]] -name = "polkadot" -version = "0.9.7" -dependencies = [ - "assert_cmd", - "color-eyre", - "nix", - "parity-util-mem", - "polkadot-cli", - "tempfile", -] +checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" [[package]] name = "polkadot-approval-distribution" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "env_logger 0.8.4", - "futures 0.3.15", - "log", + "futures 0.3.18", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand_core 0.5.1", - "schnorrkel", - "sp-core", "tracing", ] [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "bitvec", - "env_logger 0.8.4", - "futures 0.3.15", - "log", - "maplit", + "futures 0.3.18", "polkadot-node-network-protocol", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", - "sp-application-crypto", - "sp-core", - "sp-keystore", "tracing", ] [[package]] name = "polkadot-availability-distribution" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "futures 0.3.15", - "futures-timer 3.0.2", - "lru", - "maplit", + "derive_more", + "futures 0.3.18", + "lru 0.7.0", "parity-scale-codec", "polkadot-erasure-coding", - "polkadot-node-core-runtime-api", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "rand 0.8.4", - "sc-keystore", - "sc-network", - "smallvec 1.6.1", - "sp-application-crypto", "sp-core", - "sp-keyring", "sp-keystore", - "sp-tracing", "thiserror", "tracing", ] [[package]] name = "polkadot-availability-recovery" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "env_logger 0.8.4", - "futures 0.3.15", - "futures-timer 3.0.2", - "log", - "lru", + "futures 0.3.18", + "lru 0.7.0", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "rand 0.8.4", "sc-network", - "smallvec 1.6.1", - "sp-application-crypto", - "sp-core", - "sp-keyring", "thiserror", "tracing", ] [[package]] name = "polkadot-cli" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "frame-benchmarking-cli", - "futures 0.3.15", + "futures 0.3.18", "log", "polkadot-node-core-pvf", "polkadot-service", @@ -5804,28 +6340,25 @@ dependencies = [ "sp-core", "sp-trie", "structopt", - "substrate-browser-utils", "substrate-build-script-utils", "thiserror", "try-runtime-cli", - "wasm-bindgen", - "wasm-bindgen-futures", ] [[package]] name = "polkadot-client" -version = "0.9.3" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "beefy-primitives", "frame-benchmarking", "frame-system-rpc-runtime-api", - "kusama-runtime", "pallet-mmr-primitives", "pallet-transaction-payment-rpc-runtime-api", "polkadot-primitives", "polkadot-runtime", - "rococo-runtime", "sc-client-api", + "sc-consensus", "sc-executor", "sc-service", "sp-api", @@ -5840,27 +6373,23 @@ dependencies = [ "sp-session", "sp-storage", "sp-transaction-pool", - "westend-runtime", ] [[package]] name = "polkadot-collator-protocol" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "always-assert", - "assert_matches", - "env_logger 0.8.4", - "futures 0.3.15", + "derive_more", + "futures 0.3.18", "futures-timer 3.0.2", - "log", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-core", - "sp-keyring", "sp-keystore", "sp-runtime", "thiserror", @@ -5869,18 +6398,43 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "parity-scale-codec", "parity-util-mem", + "scale-info", "sp-core", "sp-runtime", "sp-std", ] +[[package]] +name = "polkadot-dispute-distribution" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ + "derive_more", + "futures 0.3.18", + "lru 0.7.0", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sc-network", + "sp-application-crypto", + "sp-keystore", + "thiserror", + "tracing", +] + [[package]] name = "polkadot-erasure-coding" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -5893,60 +6447,53 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "futures 0.3.15", + "futures 0.3.18", + "futures-timer 3.0.2", "polkadot-node-network-protocol", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "rand 0.8.4", "rand_chacha 0.3.1", - "sc-keystore", + "sc-network", "sp-application-crypto", - "sp-consensus-babe", "sp-core", - "sp-keyring", "sp-keystore", "tracing", ] [[package]] name = "polkadot-network-bridge" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "async-trait", - "futures 0.3.15", - "futures-timer 3.0.2", + "futures 0.3.18", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "polkadot-node-network-protocol", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", + "polkadot-overseer", "polkadot-primitives", - "sc-authority-discovery", "sc-network", "sp-consensus", - "sp-core", - "sp-keyring", - "strum", "tracing", ] [[package]] name = "polkadot-node-collation-generation" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-core", @@ -5957,101 +6504,77 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "bitvec", "derive_more", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "kvdb", - "kvdb-memorydb", - "lru", - "maplit", + "lru 0.7.0", "merlin", "parity-scale-codec", - "parking_lot 0.11.1", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-overseer", "polkadot-primitives", - "rand_core 0.5.1", - "sc-client-api", "sc-keystore", "schnorrkel", "sp-application-crypto", - "sp-blockchain", "sp-consensus", - "sp-consensus-babe", "sp-consensus-slots", - "sp-core", - "sp-keyring", - "sp-keystore", "sp-runtime", "tracing", ] [[package]] name = "polkadot-node-core-av-store" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "bitvec", - "env_logger 0.8.4", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "kvdb", - "kvdb-memorydb", - "log", "parity-scale-codec", - "parking_lot 0.11.1", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-overseer", "polkadot-primitives", - "sp-core", - "sp-keyring", "thiserror", "tracing", ] [[package]] name = "polkadot-node-core-backing" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "bitvec", - "futures 0.3.15", + "futures 0.3.18", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "polkadot-statement-table", - "sc-keystore", - "sp-application-crypto", - "sp-core", - "sp-keyring", "sp-keystore", - "sp-tracing", "thiserror", "tracing", ] [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-keystore", @@ -6062,112 +6585,82 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "async-trait", - "futures 0.3.15", + "futures 0.3.18", "parity-scale-codec", "polkadot-node-core-pvf", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-parachain", "polkadot-primitives", - "sp-core", - "sp-keyring", "sp-maybe-compressed-blob", "tracing", ] [[package]] name = "polkadot-node-core-chain-api" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", - "maplit", - "parity-scale-codec", - "polkadot-node-primitives", + "futures 0.3.18", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sc-client-api", "sc-consensus-babe", "sp-blockchain", - "sp-core", "tracing", ] [[package]] name = "polkadot-node-core-chain-selection" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "futures 0.3.15", + "futures 0.3.18", + "futures-timer 3.0.2", "kvdb", "parity-scale-codec", - "parking_lot 0.11.1", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", - "sp-core", "thiserror", "tracing", ] [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "bitvec", "derive_more", - "futures 0.3.15", + "futures 0.3.18", "kvdb", - "kvdb-memorydb", "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sc-keystore", - "sp-core", - "sp-keyring", - "sp-keystore", - "thiserror", - "tracing", -] - -[[package]] -name = "polkadot-node-core-dispute-participation" -version = "0.1.0" -dependencies = [ - "assert_matches", - "futures 0.3.15", - "parity-scale-codec", - "polkadot-node-primitives", - "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", - "polkadot-primitives", - "sp-core", "thiserror", "tracing", ] [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "async-trait", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-subsystem", - "polkadot-overseer", "polkadot-primitives", "sp-blockchain", "sp-inherents", @@ -6178,36 +6671,34 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "bitvec", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", - "sp-application-crypto", - "sp-keystore", "thiserror", "tracing", ] [[package]] name = "polkadot-node-core-pvf" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "always-assert", "assert_matches", "async-process", "async-std", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", - "hex-literal", "libc", "parity-scale-codec", - "pin-project 1.0.7", + "pin-project 1.0.8", "polkadot-core-primitives", + "polkadot-node-subsystem-util", "polkadot-parachain", "rand 0.8.4", "sc-executor", @@ -6217,23 +6708,21 @@ dependencies = [ "sp-core", "sp-externalities", "sp-io", + "sp-maybe-compressed-blob", + "sp-tracing", "sp-wasm-interface", - "tempfile", - "test-parachain-adder", - "test-parachain-halt", "tracing", ] [[package]] name = "polkadot-node-core-runtime-api" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "memory-lru", "parity-util-mem", - "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-api", @@ -6245,14 +6734,15 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "async-std", "lazy_static", "log", "mick-jaeger", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "polkadot-node-primitives", "polkadot-primitives", "sc-network", @@ -6260,29 +6750,45 @@ dependencies = [ "thiserror", ] +[[package]] +name = "polkadot-node-metrics" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ + "futures 0.3.18", + "futures-timer 3.0.2", + "metered-channel", + "substrate-prometheus-endpoint", +] + [[package]] name = "polkadot-node-network-protocol" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", + "async-trait", + "derive_more", + "futures 0.3.18", "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-primitives", + "sc-authority-discovery", "sc-network", - "strum", + "strum 0.23.0", "thiserror", ] [[package]] name = "polkadot-node-primitives" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", + "bounded-vec", + "futures 0.3.18", "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", - "polkadot-statement-table", "schnorrkel", "serde", "sp-application-crypto", @@ -6291,127 +6797,127 @@ dependencies = [ "sp-core", "sp-keystore", "sp-maybe-compressed-blob", - "sp-runtime", "thiserror", "zstd", ] [[package]] name = "polkadot-node-subsystem" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "async-std", - "async-trait", - "derive_more", - "futures 0.3.15", - "futures-timer 3.0.2", - "lazy_static", - "log", - "mick-jaeger", - "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.7", "polkadot-node-jaeger", - "polkadot-node-network-protocol", - "polkadot-node-primitives", - "polkadot-node-subsystem-test-helpers", - "polkadot-primitives", - "polkadot-procmacro-subsystem-dispatch-gen", - "polkadot-statement-table", - "sc-network", - "smallvec 1.6.1", - "sp-core", - "substrate-prometheus-endpoint", - "thiserror", - "tracing", + "polkadot-node-subsystem-types", + "polkadot-overseer", ] [[package]] -name = "polkadot-node-subsystem-test-helpers" -version = "0.1.0" +name = "polkadot-node-subsystem-types" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "async-trait", - "futures 0.3.15", - "futures-timer 3.0.2", - "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "derive_more", + "futures 0.3.18", + "polkadot-node-jaeger", + "polkadot-node-network-protocol", "polkadot-node-primitives", - "polkadot-node-subsystem", - "polkadot-node-subsystem-util", - "polkadot-overseer", + "polkadot-overseer-gen", "polkadot-primitives", "polkadot-statement-table", "sc-network", - "smallvec 1.6.1", - "sp-core", - "tracing", + "smallvec", + "substrate-prometheus-endpoint", + "thiserror", ] [[package]] name = "polkadot-node-subsystem-util" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", "async-trait", - "env_logger 0.8.4", - "futures 0.3.15", - "futures-timer 3.0.2", - "itertools 0.10.0", - "log", - "lru", + "derive_more", + "futures 0.3.18", + "itertools", + "lru 0.7.0", "metered-channel", "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "pin-project 1.0.8", "polkadot-node-jaeger", + "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", + "polkadot-overseer", "polkadot-primitives", "rand 0.8.4", - "sc-network", "sp-application-crypto", "sp-core", "sp-keystore", - "substrate-prometheus-endpoint", "thiserror", "tracing", ] [[package]] name = "polkadot-overseer" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "assert_matches", - "async-trait", - "femme", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", - "kv-log-macro", - "lru", + "lru 0.7.0", + "parity-util-mem", + "parking_lot 0.11.2", + "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", - "polkadot-node-subsystem", - "polkadot-node-subsystem-util", + "polkadot-node-subsystem-types", + "polkadot-overseer-gen", "polkadot-primitives", - "polkadot-procmacro-overseer-subsystems-gen", "sc-client-api", "sp-api", - "sp-core", "tracing", ] +[[package]] +name = "polkadot-overseer-gen" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ + "async-trait", + "futures 0.3.18", + "futures-timer 3.0.2", + "metered-channel", + "pin-project 1.0.8", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-overseer-gen-proc-macro", + "thiserror", + "tracing", +] + +[[package]] +name = "polkadot-overseer-gen-proc-macro" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "polkadot-parachain" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "derive_more", + "frame-support", "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", + "scale-info", "serde", "sp-core", "sp-runtime", @@ -6420,7 +6926,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "bitvec", "frame-system", @@ -6429,7 +6936,7 @@ dependencies = [ "parity-util-mem", "polkadot-core-primitives", "polkadot-parachain", - "pretty_assertions 0.7.2", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -6441,46 +6948,22 @@ dependencies = [ "sp-io", "sp-keystore", "sp-runtime", - "sp-serializer", "sp-staking", "sp-std", "sp-trie", "sp-version", - "thiserror", -] - -[[package]] -name = "polkadot-procmacro-overseer-subsystems-gen" -version = "0.1.0" -dependencies = [ - "assert_matches", - "proc-macro2", - "quote", - "syn", - "trybuild", -] - -[[package]] -name = "polkadot-procmacro-subsystem-dispatch-gen" -version = "0.1.0" -dependencies = [ - "assert_matches", - "proc-macro2", - "quote", - "syn", - "trybuild", ] [[package]] name = "polkadot-rpc" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", "jsonrpc-core", "pallet-mmr-rpc", "pallet-transaction-payment-rpc", - "parity-scale-codec", "polkadot-primitives", "sc-chain-spec", "sc-client-api", @@ -6489,9 +6972,9 @@ dependencies = [ "sc-consensus-epochs", "sc-finality-grandpa", "sc-finality-grandpa-rpc", - "sc-keystore", "sc-rpc", "sc-sync-state-rpc", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", @@ -6499,31 +6982,27 @@ dependencies = [ "sp-consensus-babe", "sp-keystore", "sp-runtime", - "sp-transaction-pool", "substrate-frame-rpc-system", ] [[package]] name = "polkadot-runtime" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "beefy-primitives", "bitvec", - "frame-benchmarking", "frame-election-provider-support", "frame-executive", "frame-support", "frame-system", - "frame-system-benchmarking", "frame-system-rpc-runtime-api", "frame-try-runtime", - "hex-literal", - "libsecp256k1", "log", - "max-encoded-len", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-bounties", "pallet-collective", @@ -6539,11 +7018,9 @@ dependencies = [ "pallet-multisig", "pallet-nicks", "pallet-offences", - "pallet-offences-benchmarking", "pallet-proxy", "pallet-scheduler", "pallet-session", - "pallet-session-benchmarking", "pallet-staking", "pallet-staking-reward-curve", "pallet-timestamp", @@ -6553,15 +7030,16 @@ dependencies = [ "pallet-treasury", "pallet-utility", "pallet-vesting", + "pallet-xcm", "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", + "polkadot-runtime-parachains", "rustc-hex", - "separator", + "scale-info", "serde", "serde_derive", - "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-authority-discovery", "sp-block-builder", @@ -6569,7 +7047,6 @@ dependencies = [ "sp-core", "sp-inherents", "sp-io", - "sp-keyring", "sp-npos-elections", "sp-offchain", "sp-runtime", @@ -6577,37 +7054,34 @@ dependencies = [ "sp-staking", "sp-std", "sp-transaction-pool", - "sp-trie", "sp-version", "static_assertions", "substrate-wasm-builder", - "tiny-keccak", - "trie-db", + "xcm", + "xcm-builder", + "xcm-executor", ] [[package]] name = "polkadot-runtime-common" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "beefy-primitives", "bitvec", - "frame-benchmarking", + "frame-election-provider-support", "frame-support", - "frame-support-test", "frame-system", - "hex-literal", "impl-trait-for-tuples", "libsecp256k1", "log", "pallet-authorship", - "pallet-babe", + "pallet-bags-list", "pallet-balances", - "pallet-beefy", - "pallet-mmr", - "pallet-offences", + "pallet-beefy-mmr", + "pallet-election-provider-multi-phase", "pallet-session", "pallet-staking", - "pallet-staking-reward-curve", "pallet-timestamp", "pallet-transaction-payment", "pallet-treasury", @@ -6616,91 +7090,76 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "serde", "serde_derive", - "serde_json", "slot-range-helper", "sp-api", - "sp-application-crypto", "sp-core", "sp-inherents", "sp-io", - "sp-keyring", - "sp-keystore", + "sp-npos-elections", "sp-runtime", "sp-session", "sp-staking", "sp-std", - "sp-trie", "static_assertions", - "trie-db", "xcm", ] [[package]] name = "polkadot-runtime-parachains" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ + "bitflags", "bitvec", "derive_more", - "frame-benchmarking", "frame-support", - "frame-support-test", "frame-system", - "futures 0.3.15", - "hex-literal", - "libsecp256k1", "log", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", "pallet-balances", - "pallet-offences", "pallet-session", "pallet-staking", - "pallet-staking-reward-curve", "pallet-timestamp", - "pallet-treasury", "pallet-vesting", "parity-scale-codec", "polkadot-primitives", "rand 0.8.4", "rand_chacha 0.3.1", "rustc-hex", - "sc-keystore", + "scale-info", "serde", - "serde_json", "sp-api", - "sp-application-crypto", "sp-core", "sp-inherents", "sp-io", - "sp-keyring", "sp-keystore", "sp-runtime", "sp-session", "sp-staking", "sp-std", - "sp-trie", - "sp-version", "xcm", "xcm-executor", ] [[package]] name = "polkadot-service" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "async-trait", "beefy-gadget", "beefy-primitives", - "env_logger 0.8.4", "frame-system-rpc-runtime-api", - "futures 0.3.15", + "futures 0.3.18", "hex-literal", - "kusama-runtime", "kvdb", - "kvdb-rocksdb", + "kvdb-rocksdb 0.14.0", + "lru 0.7.0", "pallet-babe", "pallet-im-online", "pallet-mmr-primitives", @@ -6712,6 +7171,7 @@ dependencies = [ "polkadot-availability-recovery", "polkadot-client", "polkadot-collator-protocol", + "polkadot-dispute-distribution", "polkadot-gossip-support", "polkadot-network-bridge", "polkadot-node-collation-generation", @@ -6721,9 +7181,12 @@ dependencies = [ "polkadot-node-core-bitfield-signing", "polkadot-node-core-candidate-validation", "polkadot-node-core-chain-api", + "polkadot-node-core-chain-selection", + "polkadot-node-core-dispute-coordinator", "polkadot-node-core-parachains-inherent", "polkadot-node-core-provisioner", "polkadot-node-core-runtime-api", + "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -6734,8 +7197,6 @@ dependencies = [ "polkadot-runtime", "polkadot-runtime-parachains", "polkadot-statement-distribution", - "polkadot-test-client", - "rococo-runtime", "sc-authority-discovery", "sc-basic-authorship", "sc-block-builder", @@ -6748,10 +7209,11 @@ dependencies = [ "sc-consensus-uncles", "sc-executor", "sc-finality-grandpa", - "sc-finality-grandpa-warp-sync", "sc-keystore", "sc-network", + "sc-offchain", "sc-service", + "sc-sync-state-rpc", "sc-telemetry", "sc-transaction-pool", "serde", @@ -6777,90 +7239,43 @@ dependencies = [ "substrate-prometheus-endpoint", "thiserror", "tracing", - "westend-runtime", ] [[package]] name = "polkadot-statement-distribution" -version = "0.1.0" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "arrayvec 0.5.2", - "assert_matches", - "futures 0.3.15", - "futures-timer 3.0.2", + "derive_more", + "futures 0.3.18", "indexmap", "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", "polkadot-primitives", - "sc-keystore", - "sc-network", - "sp-application-crypto", - "sp-core", - "sp-keyring", "sp-keystore", "sp-staking", - "sp-tracing", "thiserror", "tracing", ] [[package]] name = "polkadot-statement-table" -version = "0.9.7" -dependencies = [ - "parity-scale-codec", - "polkadot-primitives", - "sp-core", -] - -[[package]] -name = "polkadot-test-client" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ - "futures 0.3.15", "parity-scale-codec", - "polkadot-node-subsystem", "polkadot-primitives", - "polkadot-test-runtime", - "polkadot-test-service", - "sc-block-builder", - "sc-consensus", - "sc-service", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", "sp-core", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "sp-timestamp", - "substrate-test-client", -] - -[[package]] -name = "polkadot-test-malus" -version = "0.9.4" -dependencies = [ - "assert_matches", - "async-trait", - "color-eyre", - "parity-util-mem", - "polkadot-cli", - "polkadot-node-core-candidate-validation", - "polkadot-node-subsystem", - "polkadot-node-subsystem-util", - "structopt", ] [[package]] name = "polkadot-test-runtime" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "beefy-primitives", "bitvec", @@ -6869,8 +7284,6 @@ dependencies = [ "frame-support", "frame-system", "frame-system-rpc-runtime-api", - "hex-literal", - "libsecp256k1", "log", "pallet-authority-discovery", "pallet-authorship", @@ -6889,16 +7302,17 @@ dependencies = [ "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-vesting", + "pallet-xcm", "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "serde", "serde_derive", - "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-authority-discovery", "sp-block-builder", @@ -6906,27 +7320,28 @@ dependencies = [ "sp-core", "sp-inherents", "sp-io", - "sp-keyring", "sp-offchain", "sp-runtime", "sp-session", "sp-staking", "sp-std", "sp-transaction-pool", - "sp-trie", "sp-version", "substrate-wasm-builder", - "tiny-keccak", + "xcm", + "xcm-builder", + "xcm-executor", ] [[package]] name = "polkadot-test-service" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "frame-benchmarking", "frame-system", - "futures 0.1.29", - "futures 0.3.15", + "futures 0.1.31", + "futures 0.3.18", "hex", "pallet-balances", "pallet-staking", @@ -6954,7 +7369,6 @@ dependencies = [ "sc-service", "sc-tracing", "sc-transaction-pool", - "serde_json", "sp-arithmetic", "sp-authority-discovery", "sp-blockchain", @@ -6967,110 +7381,64 @@ dependencies = [ "sp-runtime", "sp-state-machine", "substrate-test-client", - "substrate-test-utils", "tempfile", - "tokio 0.2.21", - "tracing", -] - -[[package]] -name = "polling" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "log", - "wepoll-sys", - "winapi 0.3.9", -] - -[[package]] -name = "poly1305" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b42192ab143ed7619bf888a7f9c6733a9a2153b218e2cd557cfdb52fbf9bb1" -dependencies = [ - "universal-hash", -] - -[[package]] -name = "polyval" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a50142b55ab3ed0e9f68dfb3709f1d90d29da24e91033f28b96330643107dc" -dependencies = [ - "cfg-if 0.1.10", - "universal-hash", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" - -[[package]] -name = "predicates" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347a1b6f0b21e636bc9872fb60b83b8e185f6f5516298b8238699f7f9a531030" -dependencies = [ - "difference", - "predicates-core", + "tokio", + "tracing", ] [[package]] -name = "predicates-core" -version = "1.0.0" +name = "polling" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06075c3a3e92559ff8929e7a280684489ea27fe44805174c3ebd9328dcb37178" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi 0.3.9", +] [[package]] -name = "predicates-tree" -version = "1.0.0" +name = "poly1305" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e63c4859013b38a76eca2414c64911fba30def9e3202ac461a2d22831220124" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "predicates-core", - "treeline", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", + "universal-hash", ] [[package]] -name = "pretty_assertions" -version = "0.6.1" +name = "polyval" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "ansi_term 0.11.0", - "ctor", - "difference", - "output_vt100", + "cfg-if 1.0.0", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", + "universal-hash", ] [[package]] -name = "pretty_assertions" -version = "0.7.2" +name = "ppv-lite86" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cab0e7c02cf376875e9335e0ba1da535775beb5450d21e1dffca068818ed98b" -dependencies = [ - "ansi_term 0.12.1", - "ctor", - "diff", - "output_vt100", -] +checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" [[package]] name = "primitive-types" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2415937401cb030a2a0a4d922483f945fa068f52a7dbb22ce0fe5f2b6f6adace" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" dependencies = [ "fixed-hash", "impl-codec", "impl-rlp", "impl-serde", + "scale-info", "uint", ] @@ -7085,24 +7453,50 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", ] +[[package]] +name = "proc-macro-error" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7" +dependencies = [ + "proc-macro-error-attr 0.4.12", + "proc-macro2", + "quote", + "syn", + "version_check", +] + [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "proc-macro-error-attr", + "proc-macro-error-attr 1.0.4", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" +dependencies = [ "proc-macro2", "quote", "syn", + "syn-mid", "version_check", ] @@ -7123,71 +7517,67 @@ version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -[[package]] -name = "proc-macro-nested" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" - [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ "unicode-xid", ] [[package]] name = "prometheus" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" dependencies = [ "cfg-if 1.0.0", "fnv", "lazy_static", - "parking_lot 0.11.1", - "regex", + "memchr", + "parking_lot 0.11.2", "thiserror", ] [[package]] name = "prost" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost-derive", ] [[package]] name = "prost-build" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "heck", - "itertools 0.9.0", + "itertools", + "lazy_static", "log", "multimap", "petgraph", "prost", "prost-types", + "regex", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", - "itertools 0.9.0", + "itertools", "proc-macro2", "quote", "syn", @@ -7195,28 +7585,28 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost", ] [[package]] name = "psm" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3abf49e5417290756acfd26501536358560c4a5cc4a0934d390939acb3e7083a" +checksum = "cd136ff4382c4753fc061cb9e4712ab2af263376b95bbd5bd8cd50c020b78e69" dependencies = [ "cc", ] [[package]] name = "pwasm-utils" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e517f47d9964362883182404b68d0b6949382c0baa40aa5ffca94f5f1e3481" +checksum = "880b3384fb00b8f6ecccd5d358b93bd2201900ae3daad213791d1864f6441f5c" dependencies = [ "byteorder", "log", @@ -7231,9 +7621,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-error" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cda" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quicksink" @@ -7243,14 +7633,14 @@ checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858" dependencies = [ "futures-core", "futures-sink", - "pin-project-lite 0.1.7", + "pin-project-lite 0.1.12", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -7261,36 +7651,13 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.14", + "getrandom 0.1.16", "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", @@ -7306,8 +7673,8 @@ checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.1", - "rand_hc 0.3.0", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] @@ -7327,49 +7694,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.1", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", + "rand_core 0.6.3", ] -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.14", + "getrandom 0.1.16", ] [[package]] name = "rand_core" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.1", + "getrandom 0.2.3", ] [[package]] name = "rand_distr" -version = "0.2.2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" +checksum = "964d548f8e7d12e102ef183a0de7e98180c9f8729f555897a857b96e48122d2f" dependencies = [ - "rand 0.7.3", + "num-traits", + "rand 0.8.4", ] [[package]] @@ -7383,11 +7736,11 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.6.1", + "rand_core 0.6.3", ] [[package]] @@ -7407,9 +7760,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f02856753d04e03e26929f820d0a0a337ebe71f849801eea335d464b349080" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -7419,60 +7772,40 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.7.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92e15d89083484e11353891f1af602cc661426deb9564c298b270c726973280" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ + "crossbeam-channel", "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils 0.7.2", + "crossbeam-utils", "lazy_static", "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "redox_syscall" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.4" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] -[[package]] -name = "redox_users" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" -dependencies = [ - "getrandom 0.1.14", - "redox_syscall 0.1.56", - "rust-argon2", -] - [[package]] name = "redox_users" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.1", - "redox_syscall 0.2.4", + "getrandom 0.2.3", + "redox_syscall 0.2.10", ] [[package]] @@ -7483,25 +7816,25 @@ checksum = "3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221" dependencies = [ "derive_more", "fs-err", - "itertools 0.10.0", + "itertools", "static_init", "thiserror", ] [[package]] name = "ref-cast" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745c1787167ddae5569661d5ffb8b25ae5fedbf46717eaa92d652221cec72623" +checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144" +checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" dependencies = [ "proc-macro2", "quote", @@ -7510,65 +7843,265 @@ dependencies = [ [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "a6304468554ed921da3d32c355ea107b8d13d7b8996c3adfb7aab48d3bc321f4" dependencies = [ "log", "rustc-hash", - "serde", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "regex" -version = "1.4.2" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", "regex-syntax", - "thread_local", ] [[package]] -name = "regex-automata" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "region" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +dependencies = [ + "bitflags", + "libc", + "mach", + "winapi 0.3.9", +] + +[[package]] +name = "relay-kusama-client" +version = "0.1.0" +dependencies = [ + "bp-header-chain", + "bp-kusama", + "bp-message-dispatch", + "bp-messages", + "bp-polkadot", + "bp-polkadot-core", + "bp-runtime", + "bridge-runtime-common", + "frame-support", + "pallet-bridge-dispatch", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "scale-info", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "relay-millau-client" +version = "0.1.0" +dependencies = [ + "bp-millau", + "frame-support", + "frame-system", + "millau-runtime", + "pallet-transaction-payment", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "relay-polkadot-client" +version = "0.1.0" +dependencies = [ + "bp-header-chain", + "bp-kusama", + "bp-message-dispatch", + "bp-messages", + "bp-polkadot", + "bp-polkadot-core", + "bp-runtime", + "bridge-runtime-common", + "frame-support", + "pallet-bridge-dispatch", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "scale-info", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "relay-rialto-client" +version = "0.1.0" +dependencies = [ + "bp-rialto", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "rialto-runtime", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "relay-rialto-parachain-client" +version = "0.1.0" +dependencies = [ + "bp-rialto", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "relay-substrate-client", + "relay-utils", + "rialto-parachain-runtime", +] + +[[package]] +name = "relay-rococo-client" +version = "0.1.0" +dependencies = [ + "bp-header-chain", + "bp-message-dispatch", + "bp-messages", + "bp-polkadot-core", + "bp-rococo", + "bp-runtime", + "bp-wococo", + "bridge-runtime-common", + "frame-support", + "pallet-bridge-dispatch", + "pallet-bridge-messages", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "scale-info", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "relay-substrate-client" +version = "0.1.0" +dependencies = [ + "async-std", + "async-trait", + "bp-header-chain", + "bp-runtime", + "finality-relay", + "frame-support", + "frame-system", + "futures 0.3.18", + "jsonrpsee-proc-macros 0.3.1", + "jsonrpsee-ws-client 0.3.1", + "log", + "num-traits", + "pallet-balances", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "rand 0.7.3", + "relay-utils", + "sc-rpc-api", + "sc-transaction-pool-api", + "sp-core", + "sp-finality-grandpa", + "sp-rpc", + "sp-runtime", + "sp-storage", + "sp-trie", + "sp-version", + "thiserror", + "tokio", +] + +[[package]] +name = "relay-utils" +version = "0.1.0" dependencies = [ - "byteorder", - "regex-syntax", + "ansi_term 0.12.1", + "anyhow", + "async-std", + "async-trait", + "backoff", + "bp-runtime", + "env_logger 0.8.4", + "futures 0.3.18", + "isahc", + "jsonpath_lib", + "log", + "num-traits", + "serde_json", + "substrate-prometheus-endpoint", + "sysinfo", + "thiserror", + "time 0.2.27", ] [[package]] -name = "regex-syntax" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" +name = "relay-westend-client" +version = "0.1.0" +dependencies = [ + "bp-westend", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "sp-core", + "sp-runtime", +] [[package]] -name = "region" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +name = "relay-wococo-client" +version = "0.1.0" dependencies = [ - "bitflags", - "libc", - "mach", - "winapi 0.3.9", + "bp-header-chain", + "bp-message-dispatch", + "bp-messages", + "bp-polkadot-core", + "bp-rococo", + "bp-runtime", + "bp-wococo", + "bridge-runtime-common", + "frame-support", + "pallet-bridge-dispatch", + "pallet-bridge-messages", + "parity-scale-codec", + "relay-substrate-client", + "relay-utils", + "scale-info", + "sp-core", + "sp-runtime", ] [[package]] name = "remote-externalities" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "env_logger 0.8.4", - "hex", - "jsonrpsee-proc-macros", - "jsonrpsee-ws-client", + "env_logger 0.9.0", + "jsonrpsee", "log", "parity-scale-codec", "serde", @@ -7576,6 +8109,7 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", + "sp-version", ] [[package]] @@ -7599,138 +8133,330 @@ dependencies = [ [[package]] name = "retain_mut" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c17925a9027d298a4603d286befe3f9dc0e8ed02523141914eb628798d6e5b" +checksum = "448296241d034b96c11173591deaa1302f2c17b56092106c1f92c1bc0183a8c9" [[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +name = "rialto-bridge-node" +version = "0.1.0" dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.9", + "bp-rialto", + "bp-runtime", + "frame-benchmarking", + "frame-benchmarking-cli", + "frame-system-rpc-runtime-api", + "futures 0.3.18", + "jsonrpc-core", + "kvdb", + "kvdb-rocksdb 0.12.1", + "lru 0.7.0", + "node-inspect", + "pallet-bridge-messages", + "pallet-transaction-payment-rpc", + "pallet-transaction-payment-rpc-runtime-api", + "polkadot-approval-distribution", + "polkadot-availability-bitfield-distribution", + "polkadot-availability-distribution", + "polkadot-availability-recovery", + "polkadot-collator-protocol", + "polkadot-dispute-distribution", + "polkadot-gossip-support", + "polkadot-network-bridge", + "polkadot-node-collation-generation", + "polkadot-node-core-approval-voting", + "polkadot-node-core-av-store", + "polkadot-node-core-backing", + "polkadot-node-core-bitfield-signing", + "polkadot-node-core-candidate-validation", + "polkadot-node-core-chain-api", + "polkadot-node-core-chain-selection", + "polkadot-node-core-dispute-coordinator", + "polkadot-node-core-parachains-inherent", + "polkadot-node-core-provisioner", + "polkadot-node-core-pvf", + "polkadot-node-core-runtime-api", + "polkadot-node-network-protocol", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "polkadot-runtime-parachains", + "polkadot-statement-distribution", + "rialto-runtime", + "sc-authority-discovery", + "sc-basic-authorship", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-babe", + "sc-consensus-slots", + "sc-consensus-uncles", + "sc-executor", + "sc-finality-grandpa", + "sc-finality-grandpa-rpc", + "sc-keystore", + "sc-network", + "sc-rpc", + "sc-service", + "sc-telemetry", + "sc-transaction-pool", + "serde_json", + "sp-api", + "sp-authority-discovery", + "sp-authorship", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-finality-grandpa", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-timestamp", + "sp-transaction-pool", + "structopt", + "substrate-build-script-utils", + "substrate-frame-rpc-system", + "substrate-prometheus-endpoint", + "thiserror", ] [[package]] -name = "rlp" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54369147e3e7796c9b885c7304db87ca3d09a0a98f72843d532868675bbfba8" +name = "rialto-parachain-collator" +version = "0.1.0" dependencies = [ - "bytes 1.0.1", - "rustc-hex", + "cumulus-client-cli", + "cumulus-client-collator", + "cumulus-client-consensus-aura", + "cumulus-client-consensus-common", + "cumulus-client-network", + "cumulus-client-service", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "derive_more", + "frame-benchmarking", + "frame-benchmarking-cli", + "hex-literal", + "jsonrpc-core", + "log", + "pallet-transaction-payment-rpc", + "parity-scale-codec", + "polkadot-cli", + "polkadot-parachain", + "polkadot-primitives", + "polkadot-service", + "polkadot-test-service", + "rialto-parachain-runtime", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-rpc", + "sc-rpc-api", + "sc-service", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "serde", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-timestamp", + "sp-transaction-pool", + "structopt", + "substrate-build-script-utils", + "substrate-frame-rpc-system", + "substrate-prometheus-endpoint", ] [[package]] -name = "rocksdb" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c749134fda8bfc90d0de643d59bfc841dcb3ac8a1062e12b6754bd60235c48b3" +name = "rialto-parachain-runtime" +version = "0.1.0" dependencies = [ - "libc", - "librocksdb-sys", + "bp-rialto-parachain", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-timestamp", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "log", + "pallet-aura", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-xcm", + "parachain-info", + "parity-scale-codec", + "polkadot-parachain", + "scale-info", + "serde", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder", + "xcm", + "xcm-builder", + "xcm-executor", ] [[package]] -name = "rococo-runtime" -version = "0.9.7" +name = "rialto-runtime" +version = "0.1.0" dependencies = [ - "beefy-primitives", - "bp-rococo", - "bp-wococo", + "bp-header-chain", + "bp-message-dispatch", + "bp-messages", + "bp-millau", + "bp-rialto", + "bp-runtime", + "bridge-runtime-common", + "frame-benchmarking", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", "hex-literal", + "libsecp256k1", "log", - "max-encoded-len", "pallet-authority-discovery", - "pallet-authorship", "pallet-babe", "pallet-balances", - "pallet-beefy", + "pallet-bridge-dispatch", "pallet-bridge-grandpa", - "pallet-collective", + "pallet-bridge-messages", "pallet-grandpa", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-mmr", - "pallet-mmr-primitives", - "pallet-offences", - "pallet-proxy", "pallet-session", - "pallet-staking", - "pallet-staking-reward-curve", + "pallet-shift-session-manager", "pallet-sudo", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", - "pallet-utility", - "pallet-xcm", "parity-scale-codec", - "polkadot-parachain", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", + "scale-info", "serde", - "serde_derive", - "smallvec 1.6.1", "sp-api", "sp-authority-discovery", "sp-block-builder", "sp-consensus-babe", "sp-core", + "sp-finality-grandpa", "sp-inherents", "sp-io", "sp-offchain", "sp-runtime", "sp-session", - "sp-staking", "sp-std", "sp-transaction-pool", + "sp-trie", "sp-version", "substrate-wasm-builder", - "xcm", - "xcm-builder", - "xcm-executor", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "rlp" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5" +dependencies = [ + "bytes 1.1.0", + "rustc-hex", +] + +[[package]] +name = "rocksdb" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7" +dependencies = [ + "libc", + "librocksdb-sys", ] [[package]] name = "rpassword" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d755237fc0f99d98641540e66abac8bc46a0652f19148ac9e21de2da06b326c9" +checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" dependencies = [ "libc", "winapi 0.3.9", ] [[package]] -name = "rust-argon2" -version = "0.7.0" +name = "rsix" +version = "0.23.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" +checksum = "1f64c5788d5aab8b75441499d99576a24eb09f76fb267b36fec7e3d970c66431" dependencies = [ - "base64 0.11.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils 0.7.2", + "bitflags", + "cc", + "errno", + "io-lifetimes", + "itoa", + "libc", + "linux-raw-sys", + "once_cell", + "rustc_version 0.4.0", ] [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustc-hash" @@ -7754,16 +8480,21 @@ dependencies = [ ] [[package]] -name = "rustls" -version = "0.18.0" +name = "rustc_version" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac94b333ee2aac3284c5b8a1b7fb4dd11cba88c244e3fe33cdbd047af0eb693" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" dependencies = [ - "base64 0.12.3", - "log", - "ring", - "sct", - "webpki", + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.4", ] [[package]] @@ -7772,25 +8503,13 @@ version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64 0.13.0", + "base64", "log", "ring", "sct", "webpki", ] -[[package]] -name = "rustls-native-certs" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8" -dependencies = [ - "openssl-probe", - "rustls 0.18.0", - "schannel", - "security-framework 1.0.0", -] - [[package]] name = "rustls-native-certs" version = "0.5.0" @@ -7798,26 +8517,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" dependencies = [ "openssl-probe", - "rustls 0.19.1", + "rustls", "schannel", - "security-framework 2.2.0", + "security-framework", ] [[package]] name = "rustversion" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" - -[[package]] -name = "ruzstd" -version = "0.2.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d425143485a37727c7a46e689bbe3b883a00f42b4a52c4ac0f44855c1009b00" -dependencies = [ - "byteorder", - "twox-hash", -] +checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" [[package]] name = "rw-stream-sink" @@ -7825,8 +8534,8 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.15", - "pin-project 0.4.23", + "futures 0.3.18", + "pin-project 0.4.28", "static_assertions", ] @@ -7836,11 +8545,20 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + [[package]] name = "salsa20" -version = "0.7.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" dependencies = [ "cipher", ] @@ -7854,15 +8572,25 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sc-allocator" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "log", + "sp-core", + "sp-wasm-interface", + "thiserror", +] + [[package]] name = "sc-authority-discovery" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "derive_more", - "either", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "ip_network", "libp2p", @@ -7873,7 +8601,6 @@ dependencies = [ "rand 0.7.3", "sc-client-api", "sc-network", - "serde_json", "sp-api", "sp-authority-discovery", "sp-blockchain", @@ -7885,10 +8612,10 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-scale-codec", @@ -7896,20 +8623,20 @@ dependencies = [ "sc-client-api", "sc-proposer-metrics", "sc-telemetry", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-inherents", "sp-runtime", - "sp-transaction-pool", "substrate-prometheus-endpoint", ] [[package]] name = "sc-block-builder" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7924,31 +8651,27 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "impl-trait-for-tuples", + "memmap2 0.5.0", "parity-scale-codec", "sc-chain-spec-derive", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-finality-grandpa", "sc-network", "sc-telemetry", "serde", "serde_json", - "sp-chain-spec", - "sp-consensus-babe", "sp-core", "sp-runtime", ] [[package]] name = "sc-chain-spec-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -7956,12 +8679,12 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "chrono", "fdlimit", - "futures 0.3.15", + "futures 0.3.18", "hex", "libp2p", "log", @@ -7976,6 +8699,7 @@ dependencies = [ "sc-service", "sc-telemetry", "sc-tracing", + "sc-utils", "serde", "serde_json", "sp-blockchain", @@ -7984,115 +8708,141 @@ dependencies = [ "sp-keystore", "sp-panic-handler", "sp-runtime", - "sp-utils", "sp-version", "structopt", "thiserror", "tiny-bip39", - "tokio 0.2.21", + "tokio", ] [[package]] name = "sc-client-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "derive_more", "fnv", - "futures 0.3.15", + "futures 0.3.18", "hash-db", - "kvdb", - "lazy_static", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-executor", + "sc-transaction-pool-api", + "sc-utils", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-database", "sp-externalities", - "sp-inherents", "sp-keystore", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", - "sp-transaction-pool", "sp-trie", - "sp-utils", - "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "blake2-rfc", "hash-db", "kvdb", "kvdb-memorydb", - "kvdb-rocksdb", + "kvdb-rocksdb 0.14.0", "linked-hash-map", "log", "parity-db", "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-client-api", - "sc-executor", "sc-state-db", "sp-arithmetic", "sp-blockchain", - "sp-consensus", "sp-core", "sp-database", "sp-runtime", "sp-state-machine", "sp-trie", - "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "async-trait", + "futures 0.3.18", + "futures-timer 3.0.2", + "libp2p", + "log", + "parking_lot 0.11.2", + "sc-client-api", + "sc-utils", + "serde", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", + "substrate-prometheus-endpoint", + "thiserror", +] + +[[package]] +name = "sc-consensus-aura" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", - "parking_lot 0.11.1", + "derive_more", + "futures 0.3.18", + "log", + "parity-scale-codec", + "sc-block-builder", "sc-client-api", + "sc-consensus", + "sc-consensus-slots", + "sc-telemetry", + "sp-api", + "sp-application-crypto", + "sp-block-builder", "sp-blockchain", "sp-consensus", + "sp-consensus-aura", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-keystore", "sp-runtime", + "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "derive_more", "fork-tree", - "futures 0.3.15", - "futures-timer 3.0.2", + "futures 0.3.18", "log", "merlin", "num-bigint", - "num-rational", + "num-rational 0.2.4", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", - "pdqselect", + "parking_lot 0.11.2", "rand 0.7.3", "retain_mut", "sc-client-api", + "sc-consensus", "sc-consensus-epochs", "sc-consensus-slots", - "sc-consensus-uncles", "sc-keystore", "sc-telemetry", "schnorrkel", @@ -8110,18 +8860,17 @@ dependencies = [ "sp-io", "sp-keystore", "sp-runtime", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus-babe-rpc" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "derive_more", - "futures 0.3.15", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -8141,8 +8890,8 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8154,19 +8903,18 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", - "impl-trait-for-tuples", "log", "parity-scale-codec", "sc-client-api", + "sc-consensus", "sc-telemetry", "sp-api", - "sp-application-crypto", "sp-arithmetic", "sp-blockchain", "sp-consensus", @@ -8176,14 +8924,13 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-timestamp", - "sp-trie", "thiserror", ] [[package]] name = "sc-consensus-uncles" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "sc-client-api", "sp-authorship", @@ -8193,26 +8940,24 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "derive_more", "lazy_static", "libsecp256k1", "log", "parity-scale-codec", - "parity-wasm 0.42.2", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", "sp-api", "sp-core", + "sp-core-hashing-proc-macro", "sp-externalities", "sp-io", "sp-panic-handler", "sp-runtime-interface", - "sp-serializer", "sp-tasks", "sp-trie", "sp-version", @@ -8222,13 +8967,14 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "derive_more", + "environmental", "parity-scale-codec", "pwasm-utils", - "sp-allocator", + "sc-allocator", "sp-core", "sp-maybe-compressed-blob", "sp-serializer", @@ -8239,13 +8985,14 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "log", "parity-scale-codec", + "sc-allocator", "sc-executor-common", - "sp-allocator", + "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -8254,17 +9001,16 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "cfg-if 1.0.0", "libc", "log", "parity-scale-codec", "parity-wasm 0.42.2", + "sc-allocator", "sc-executor-common", - "scoped-tls", - "sp-allocator", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -8273,22 +9019,20 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "derive_more", "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", - "linked-hash-map", "log", "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.7", - "rand 0.7.3", + "parking_lot 0.11.2", + "rand 0.8.4", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -8296,6 +9040,7 @@ dependencies = [ "sc-network", "sc-network-gossip", "sc-telemetry", + "sc-utils", "serde_json", "sp-api", "sp-application-crypto", @@ -8304,22 +9049,19 @@ dependencies = [ "sp-consensus", "sp-core", "sp-finality-grandpa", - "sp-inherents", "sp-keystore", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", - "wasm-timer", ] [[package]] name = "sc-finality-grandpa-rpc" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "derive_more", "finality-grandpa", - "futures 0.3.15", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -8336,102 +9078,54 @@ dependencies = [ "sp-runtime", ] -[[package]] -name = "sc-finality-grandpa-warp-sync" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "derive_more", - "futures 0.3.15", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.11.1", - "prost", - "sc-client-api", - "sc-finality-grandpa", - "sc-network", - "sc-service", - "sp-blockchain", - "sp-finality-grandpa", - "sp-runtime", -] - [[package]] name = "sc-informant" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "ansi_term 0.12.1", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "log", "parity-util-mem", "sc-client-api", "sc-network", + "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", - "sp-transaction-pool", - "wasm-timer", ] [[package]] name = "sc-keystore" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "derive_more", - "futures 0.3.15", - "futures-util", "hex", - "merlin", - "parking_lot 0.11.1", - "rand 0.7.3", + "parking_lot 0.11.2", "serde_json", "sp-application-crypto", "sp-core", "sp-keystore", - "subtle 2.2.3", -] - -[[package]] -name = "sc-light" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "hash-db", - "lazy_static", - "parity-scale-codec", - "parking_lot 0.11.1", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", ] [[package]] name = "sc-network" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-std", "async-trait", "asynchronous-codec 0.5.0", "bitflags", - "bs58", - "bytes 1.0.1", + "bytes 1.1.0", "cid", "derive_more", "either", - "erased-serde", "fnv", "fork-tree", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "hex", "ip_network", @@ -8439,96 +9133,95 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log", - "lru", - "nohash-hasher", + "lru 0.7.0", "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "parking_lot 0.11.2", + "pin-project 1.0.8", "prost", "prost-build", "rand 0.7.3", "sc-block-builder", "sc-client-api", + "sc-consensus", "sc-peerset", + "sc-utils", "serde", "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-core", + "sp-finality-grandpa", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", "unsigned-varint 0.6.0", "void", - "wasm-timer", "zeroize", ] [[package]] name = "sc-network-gossip" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "libp2p", "log", - "lru", + "lru 0.7.0", "sc-network", "sp-runtime", "substrate-prometheus-endpoint", "tracing", - "wasm-timer", ] [[package]] name = "sc-offchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "hex", - "hyper 0.13.9", + "hyper", "hyper-rustls", - "log", "num_cpus", + "once_cell", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "rand 0.7.3", "sc-client-api", - "sc-keystore", "sc-network", + "sc-utils", "sp-api", "sp-core", "sp-offchain", "sp-runtime", - "sp-utils", "threadpool", + "tracing", ] [[package]] name = "sc-peerset" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "libp2p", "log", + "sc-utils", "serde_json", - "sp-utils", "wasm-timer", ] [[package]] name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8536,111 +9229,104 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-block-builder", + "sc-chain-spec", "sc-client-api", - "sc-executor", - "sc-keystore", "sc-rpc-api", "sc-tracing", + "sc-transaction-pool-api", + "sc-utils", "serde_json", "sp-api", "sp-blockchain", - "sp-chain-spec", "sp-core", "sp-keystore", "sp-offchain", "sp-rpc", "sp-runtime", "sp-session", - "sp-state-machine", - "sp-tracing", - "sp-transaction-pool", - "sp-utils", "sp-version", ] [[package]] name = "sc-rpc-api" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "derive_more", - "futures 0.3.15", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", + "sc-chain-spec", + "sc-transaction-pool-api", "serde", "serde_json", - "sp-chain-spec", "sp-core", "sp-rpc", "sp-runtime", "sp-tracing", - "sp-transaction-pool", "sp-version", + "thiserror", ] [[package]] name = "sc-rpc-server" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.1.29", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-http-server", "jsonrpc-ipc-server", "jsonrpc-pubsub", "jsonrpc-ws-server", "log", - "serde", "serde_json", - "sp-runtime", "substrate-prometheus-endpoint", + "tokio", ] [[package]] name = "sc-service" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.1.29", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", - "lazy_static", "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "parking_lot 0.11.2", + "pin-project 1.0.8", "rand 0.7.3", "sc-block-builder", "sc-chain-spec", "sc-client-api", "sc-client-db", + "sc-consensus", "sc-executor", "sc-informant", "sc-keystore", - "sc-light", "sc-network", "sc-offchain", "sc-rpc", @@ -8648,6 +9334,8 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-api", + "sc-utils", "serde", "serde_json", "sp-api", @@ -8658,7 +9346,6 @@ dependencies = [ "sp-core", "sp-externalities", "sp-inherents", - "sp-io", "sp-keystore", "sp-runtime", "sp-session", @@ -8668,45 +9355,45 @@ dependencies = [ "sp-transaction-pool", "sp-transaction-storage-proof", "sp-trie", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", "tempfile", "thiserror", + "tokio", "tracing", "tracing-futures", - "wasm-timer", ] [[package]] name = "sc-state-db" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "log", "parity-scale-codec", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sc-client-api", "sp-core", - "thiserror", ] [[package]] name = "sc-sync-state-rpc" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", + "parity-scale-codec", "sc-chain-spec", "sc-client-api", "sc-consensus-babe", "sc-consensus-epochs", "sc-finality-grandpa", "sc-rpc-api", + "serde", "serde_json", "sp-blockchain", "sp-runtime", @@ -8715,117 +9402,140 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "chrono", - "futures 0.3.15", + "futures 0.3.18", "libp2p", "log", - "parking_lot 0.11.1", - "pin-project 1.0.7", + "parking_lot 0.11.2", + "pin-project 1.0.8", "rand 0.7.3", "serde", "serde_json", - "take_mut", "thiserror", - "void", "wasm-timer", ] [[package]] name = "sc-tracing" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "ansi_term 0.12.1", "atty", - "erased-serde", + "chrono", "lazy_static", + "libc", "log", "once_cell", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "regex", "rustc-hash", "sc-client-api", "sc-rpc-server", - "sc-telemetry", "sc-tracing-proc-macro", "serde", - "serde_json", "sp-api", - "sp-block-builder", "sp-blockchain", "sp-core", "sp-rpc", "sp-runtime", - "sp-storage", "sp-tracing", "thiserror", "tracing", "tracing-log", "tracing-subscriber", - "wasm-bindgen", - "wasm-timer", - "web-sys", ] [[package]] name = "sc-tracing-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", ] [[package]] -name = "sc-transaction-graph" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "sc-transaction-pool" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "derive_more", - "futures 0.3.15", + "futures 0.3.18", + "intervalier", "linked-hash-map", "log", + "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "retain_mut", + "sc-client-api", + "sc-transaction-pool-api", + "sc-utils", "serde", + "sp-api", "sp-blockchain", "sp-core", "sp-runtime", + "sp-tracing", "sp-transaction-pool", - "sp-utils", + "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] -name = "sc-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "sc-transaction-pool-api" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", - "intervalier", + "derive_more", + "futures 0.3.18", "log", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "sc-client-api", - "sc-transaction-graph", - "sp-api", + "serde", "sp-blockchain", - "sp-core", "sp-runtime", - "sp-tracing", - "sp-transaction-pool", - "sp-utils", - "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", +] + +[[package]] +name = "sc-utils" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "futures 0.3.18", + "futures-timer 3.0.2", + "lazy_static", + "prometheus", +] + +[[package]] +name = "scale-info" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" +dependencies = [ + "bitvec", + "cfg-if 1.0.0", + "derive_more", + "parity-scale-codec", + "scale-info-derive", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -8846,13 +9556,13 @@ checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" dependencies = [ "arrayref", "arrayvec 0.5.2", - "curve25519-dalek 2.1.0", - "getrandom 0.1.14", + "curve25519-dalek 2.1.3", + "getrandom 0.1.16", "merlin", "rand 0.7.3", "rand_core 0.5.1", "sha2 0.8.2", - "subtle 2.2.3", + "subtle", "zeroize", ] @@ -8868,31 +9578,11 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scroll" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e367622f934864ffa1c704ba2b82280aab856e3d8213c84c5720257eb34b15b9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "sct" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ "ring", "untrusted", @@ -8900,56 +9590,33 @@ dependencies = [ [[package]] name = "secrecy" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" dependencies = [ "zeroize", ] [[package]] name = "security-framework" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2b" -dependencies = [ - "bitflags", - "core-foundation 0.7.0", - "core-foundation-sys 0.7.0", - "libc", - "security-framework-sys 1.0.0", -] - -[[package]] -name = "security-framework" -version = "2.2.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84" +checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" dependencies = [ "bitflags", - "core-foundation 0.9.1", - "core-foundation-sys 0.8.2", - "libc", - "security-framework-sys 2.2.0", -] - -[[package]] -name = "security-framework-sys" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7" -dependencies = [ - "core-foundation-sys 0.7.0", + "core-foundation", + "core-foundation-sys", "libc", + "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "2.2.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339" +checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" dependencies = [ - "core-foundation-sys 0.8.2", + "core-foundation-sys", "libc", ] @@ -8978,6 +9645,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ "semver-parser 0.10.2", +] + +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +dependencies = [ "serde", ] @@ -8996,38 +9671,20 @@ dependencies = [ "pest", ] -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" - -[[package]] -name = "separator" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5" - [[package]] name = "serde" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ "proc-macro2", "quote", @@ -9036,10 +9693,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527" dependencies = [ + "indexmap", "itoa", "ryu", "serde", @@ -9059,17 +9717,23 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures", + "cpufeatures 0.2.1", "digest 0.9.0", "opaque-debug 0.3.0", ] +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" + [[package]] name = "sha2" version = "0.8.2" @@ -9084,13 +9748,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpuid-bool", + "cpufeatures 0.2.1", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -9109,25 +9773,24 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" dependencies = [ "lazy_static", - "loom", ] [[package]] name = "shlex" -version = "0.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" -version = "0.1.16" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604508c1418b99dfe1925ca9224829bb2a8a9a04dda655cc01fcad46f4ab05ed" +checksum = "9c98891d737e271a2954825ef19e46bd16bdb98e2746f2eec4f7a4ef7946efd1" dependencies = [ "libc", "signal-hook-registry", @@ -9135,117 +9798,115 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ - "arc-swap", "libc", ] [[package]] name = "signature" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65211b7b6fc3f14ff9fc7a2011a434e3e6880585bd2e9e9396315ae24cbf7852" +checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" [[package]] name = "simba" -version = "0.1.5" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb931b1367faadea6b1ab1c306a860ec17aaa5fa39f367d0c744e69d971a1fb2" +checksum = "8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5c" dependencies = [ "approx", "num-complex", "num-traits", - "paste 0.1.18", + "paste", ] [[package]] name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - -[[package]] -name = "slog" -version = "2.7.0" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" -dependencies = [ - "erased-serde", -] +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "enumn", "parity-scale-codec", - "paste 1.0.5", + "paste", "sp-runtime", "sp-std", ] [[package]] name = "slotmap" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3003725ae562cf995f3dc82bb99e70926e09000396816765bb6d7adbe740b1" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" dependencies = [ "version_check", ] [[package]] -name = "smallvec" -version = "0.6.13" +name = "sluice" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" dependencies = [ - "maybe-uninit", + "async-channel", + "futures-core", + "futures-io", ] [[package]] name = "smallvec" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" + +[[package]] +name = "snap" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32bf8474159a95551661246cda4976e89356999e3cbfef36f493dacc3fae1e8e" +checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "rand 0.7.3", - "rand_core 0.5.1", + "rand 0.8.4", + "rand_core 0.6.3", "ring", - "rustc_version", - "sha2 0.9.2", - "subtle 2.2.3", - "x25519-dalek 0.6.0", + "rustc_version 0.3.3", + "sha2 0.9.8", + "subtle", + "x25519-dalek", ] [[package]] name = "socket2" -version = "0.3.17" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c29947abdee2a218277abeca306f25789c938e500ea5a9d4b12a5a504466902" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.1.56", "winapi 0.3.9", ] [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" dependencies = [ "libc", "winapi 0.3.9", @@ -9253,51 +9914,39 @@ dependencies = [ [[package]] name = "soketto" -version = "0.4.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85457366ae0c6ce56bf05a958aef14cd38513c236568618edbcd9a8c52cb80b0" +checksum = "a74e48087dbeed4833785c2f3352b59140095dc192dce966a3bfc155020a439f" dependencies = [ - "base64 0.12.3", - "bytes 0.5.6", - "flate2", - "futures 0.3.15", + "base64", + "bytes 1.1.0", + "futures 0.3.18", "httparse", "log", - "rand 0.7.3", - "sha-1 0.8.2", + "rand 0.8.4", + "sha-1 0.9.8", ] [[package]] name = "soketto" -version = "0.5.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4919971d141dbadaa0e82b5d369e2d7666c98e4625046140615ca363e50d4daa" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.13.0", - "bytes 1.0.1", - "futures 0.3.15", + "base64", + "bytes 1.1.0", + "flate2", + "futures 0.3.18", "httparse", "log", "rand 0.8.4", - "sha-1 0.9.6", -] - -[[package]] -name = "sp-allocator" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "log", - "sp-core", - "sp-std", - "sp-wasm-interface", - "thiserror", + "sha-1 0.9.8", ] [[package]] name = "sp-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "hash-db", "log", @@ -9313,11 +9962,11 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "blake2-rfc", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9325,11 +9974,11 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "max-encoded-len", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -9338,12 +9987,13 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", + "scale-info", "serde", "sp-debug-derive", "sp-std", @@ -9352,10 +10002,11 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-application-crypto", "sp-runtime", @@ -9364,8 +10015,8 @@ dependencies = [ [[package]] name = "sp-authorship" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "parity-scale-codec", @@ -9376,8 +10027,8 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", "sp-api", @@ -9388,14 +10039,14 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "log", - "lru", + "lru 0.7.0", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sp-api", "sp-consensus", "sp-database", @@ -9404,50 +10055,52 @@ dependencies = [ "thiserror", ] -[[package]] -name = "sp-chain-spec" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "sp-consensus" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", - "futures 0.3.15", + "futures 0.3.18", "futures-timer 3.0.2", - "libp2p", "log", "parity-scale-codec", - "parking_lot 0.11.1", - "serde", - "sp-api", "sp-core", "sp-inherents", "sp-runtime", "sp-state-machine", "sp-std", - "sp-trie", - "sp-utils", "sp-version", - "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-consensus", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "merlin", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -9464,18 +10117,20 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", + "serde", "sp-arithmetic", "sp-runtime", ] [[package]] name = "sp-consensus-vrf" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9486,15 +10141,16 @@ dependencies = [ [[package]] name = "sp-core" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "base58", + "bitflags", "blake2-rfc", "byteorder", "dyn-clonable", "ed25519-dalek", - "futures 0.3.15", + "futures 0.3.18", "hash-db", "hash256-std-hasher", "hex", @@ -9502,24 +10158,26 @@ dependencies = [ "lazy_static", "libsecp256k1", "log", - "max-encoded-len", "merlin", "num-traits", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "primitive-types", "rand 0.7.3", "regex", + "scale-info", "schnorrkel", "secrecy", "serde", - "sha2 0.9.2", + "sha2 0.9.8", + "sp-core-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", "sp-std", "sp-storage", + "ss58-registry", "substrate-bip39", "thiserror", "tiny-bip39", @@ -9529,19 +10187,43 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "blake2-rfc", + "byteorder", + "sha2 0.9.8", + "sp-std", + "tiny-keccak", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" +dependencies = [ + "proc-macro2", + "quote", + "sp-core-hashing", + "syn", +] + [[package]] name = "sp-database" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "kvdb", - "parking_lot 0.11.1", + "parking_lot 0.11.2", ] [[package]] name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "proc-macro2", "quote", @@ -9550,8 +10232,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "environmental", "parity-scale-codec", @@ -9561,12 +10243,13 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "finality-grandpa", "log", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -9578,8 +10261,8 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9592,19 +10275,18 @@ dependencies = [ [[package]] name = "sp-io" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "hash-db", "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "sp-core", "sp-externalities", "sp-keystore", - "sp-maybe-compressed-blob", "sp-runtime-interface", "sp-state-machine", "sp-std", @@ -9617,26 +10299,26 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "lazy_static", "sp-core", "sp-runtime", - "strum", + "strum 0.22.0", ] [[package]] name = "sp-keystore" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "derive_more", - "futures 0.3.15", + "futures 0.3.18", "merlin", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "schnorrkel", "serde", "sp-core", @@ -9645,32 +10327,33 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "ruzstd", "zstd", ] [[package]] name = "sp-npos-elections" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", "serde", "sp-arithmetic", "sp-core", - "sp-npos-elections-compact", + "sp-npos-elections-solution-type", + "sp-runtime", "sp-std", ] [[package]] -name = "sp-npos-elections-compact" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "sp-npos-elections-solution-type" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9678,8 +10361,8 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "sp-api", "sp-core", @@ -9688,37 +10371,38 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "backtrace", + "lazy_static", + "regex", ] [[package]] name = "sp-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "rustc-hash", "serde", "sp-core", - "tracing-core", ] [[package]] name = "sp-runtime" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", - "max-encoded-len", "parity-scale-codec", "parity-util-mem", - "paste 1.0.5", + "paste", "rand 0.7.3", + "scale-info", "serde", "sp-application-crypto", "sp-arithmetic", @@ -9729,8 +10413,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9746,11 +10430,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "Inflector", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9758,8 +10442,8 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "serde", "serde_json", @@ -9767,10 +10451,11 @@ dependencies = [ [[package]] name = "sp-session" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -9780,26 +10465,27 @@ dependencies = [ [[package]] name = "sp-staking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "sp-state-machine" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "hash-db", "log", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-externalities", "sp-panic-handler", @@ -9813,13 +10499,13 @@ dependencies = [ [[package]] name = "sp-std" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" [[package]] name = "sp-storage" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9831,8 +10517,8 @@ dependencies = [ [[package]] name = "sp-tasks" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "log", "sp-core", @@ -9844,8 +10530,8 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9856,21 +10542,14 @@ dependencies = [ "sp-runtime", "sp-std", "thiserror", - "wasm-timer", ] [[package]] name = "sp-tracing" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "erased-serde", - "log", "parity-scale-codec", - "parking_lot 0.10.2", - "serde", - "serde_json", - "slog", "sp-std", "tracing", "tracing-core", @@ -9879,28 +10558,22 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "derive_more", - "futures 0.3.15", - "log", - "parity-scale-codec", - "serde", "sp-api", - "sp-blockchain", "sp-runtime", - "thiserror", ] [[package]] name = "sp-transaction-storage-proof" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-inherents", "sp-runtime", @@ -9910,50 +10583,41 @@ dependencies = [ [[package]] name = "sp-trie" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "hash-db", "memory-db", "parity-scale-codec", + "scale-info", "sp-core", "sp-std", "trie-db", "trie-root", ] -[[package]] -name = "sp-utils" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "futures 0.3.15", - "futures-core", - "futures-timer 3.0.2", - "lazy_static", - "prometheus", -] - [[package]] name = "sp-version" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "impl-serde", "parity-scale-codec", + "parity-wasm 0.42.2", + "scale-info", "serde", "sp-runtime", "sp-std", "sp-version-proc-macro", + "thiserror", ] [[package]] name = "sp-version-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "parity-scale-codec", - "proc-macro-crate 1.0.0", "proc-macro2", "quote", "syn", @@ -9961,8 +10625,8 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9976,11 +10640,34 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "ss58-registry" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78abb01d308934b82e34e9cf1f45846d31539246501745b129539176f4f3368d" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + [[package]] name = "stable_deref_trait" -version = "1.1.1" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "standback" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] [[package]] name = "static_assertions" @@ -9996,7 +10683,7 @@ checksum = "11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369c" dependencies = [ "cfg_aliases", "libc", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "static_init_macro", ] @@ -10015,29 +10702,78 @@ dependencies = [ [[package]] name = "statrs" -version = "0.12.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce16f6de653e88beca7bd13780d08e09d4489dbca1f9210e041bc4852481382" +checksum = "05bdbb8e4e78216a85785a85d3ec3183144f98d0097b9281802c019bb07a6f05" dependencies = [ - "rand 0.7.3", + "approx", + "lazy_static", + "nalgebra", + "num-traits", + "rand 0.8.4", ] [[package]] -name = "stream-cipher" -version = "0.4.1" +name = "stdweb" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f8ed9974042b8c3672ff3030a69fcc03b74c47c3d1ecb7755e8a3626011e88" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" dependencies = [ - "generic-array 0.14.4", + "discard", + "rustc_version 0.2.3", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", ] [[package]] -name = "string" -version = "0.2.1" +name = "stdweb-derive" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ - "bytes 0.4.12", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "storage-proof-fuzzer" +version = "0.1.0" +dependencies = [ + "bp-runtime", + "env_logger 0.8.4", + "honggfuzz", + "log", + "sp-core", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] @@ -10048,9 +10784,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" +checksum = "40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87c" dependencies = [ "clap", "lazy_static", @@ -10059,12 +10795,12 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", - "proc-macro-error", + "proc-macro-error 1.0.4", "proc-macro2", "quote", "syn", @@ -10072,18 +10808,36 @@ dependencies = [ [[package]] name = "strum" -version = "0.20.0" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" +dependencies = [ + "strum_macros 0.21.1", +] + +[[package]] +name = "strum" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" +dependencies = [ + "strum_macros 0.22.0", +] + +[[package]] +name = "strum" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" dependencies = [ - "strum_macros", + "strum_macros 0.23.1", ] [[package]] name = "strum_macros" -version = "0.20.1" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" dependencies = [ "heck", "proc-macro2", @@ -10092,59 +10846,58 @@ dependencies = [ ] [[package]] -name = "substrate-bip39" -version = "0.4.2" +name = "strum_macros" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236" +checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" dependencies = [ - "hmac 0.7.1", - "pbkdf2 0.3.0", - "schnorrkel", - "sha2 0.8.2", - "zeroize", + "heck", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "substrate-browser-utils" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +name = "strum_macros" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" dependencies = [ - "chrono", - "console_error_panic_hook", - "futures 0.1.29", - "futures 0.3.15", - "futures-timer 3.0.2", - "getrandom 0.2.1", - "js-sys", - "kvdb-web", - "libp2p-wasm-ext", - "log", - "rand 0.7.3", - "sc-chain-spec", - "sc-informant", - "sc-network", - "sc-service", - "sc-tracing", - "sp-database", - "wasm-bindgen", - "wasm-bindgen-futures", + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "substrate-bip39" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733c" +dependencies = [ + "hmac 0.11.0", + "pbkdf2 0.8.0", + "schnorrkel", + "sha2 0.9.8", + "zeroize", ] [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "platforms", ] [[package]] name = "substrate-frame-rpc-system" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.15", + "futures 0.3.18", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -10152,45 +10905,141 @@ dependencies = [ "parity-scale-codec", "sc-client-api", "sc-rpc-api", - "serde", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", "sp-core", "sp-runtime", - "sp-transaction-pool", ] [[package]] name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-std", "derive_more", "futures-util", - "hyper 0.13.9", + "hyper", "log", "prometheus", - "tokio 0.2.21", + "tokio", +] + +[[package]] +name = "substrate-relay" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-std", + "bp-header-chain", + "bp-kusama", + "bp-message-dispatch", + "bp-messages", + "bp-millau", + "bp-polkadot", + "bp-rialto", + "bp-rialto-parachain", + "bp-rococo", + "bp-runtime", + "bp-token-swap", + "bp-westend", + "bp-wococo", + "bridge-runtime-common", + "finality-grandpa", + "finality-relay", + "frame-support", + "futures 0.3.18", + "hex", + "hex-literal", + "log", + "messages-relay", + "millau-runtime", + "num-format", + "num-traits", + "pallet-balances", + "pallet-bridge-dispatch", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-token-swap", + "parity-scale-codec", + "paste", + "polkadot-parachain", + "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "rand 0.8.4", + "relay-kusama-client", + "relay-millau-client", + "relay-polkadot-client", + "relay-rialto-client", + "relay-rialto-parachain-client", + "relay-rococo-client", + "relay-substrate-client", + "relay-utils", + "relay-westend-client", + "relay-wococo-client", + "rialto-parachain-runtime", + "rialto-runtime", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-version", + "structopt", + "strum 0.21.0", + "substrate-relay-helper", + "tempfile", +] + +[[package]] +name = "substrate-relay-helper" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-std", + "async-trait", + "bp-header-chain", + "bp-messages", + "bp-millau", + "bp-rococo", + "bp-runtime", + "bp-wococo", + "bridge-runtime-common", + "finality-grandpa", + "finality-relay", + "frame-support", + "futures 0.3.18", + "log", + "messages-relay", + "num-traits", + "pallet-bridge-messages", + "parity-scale-codec", + "relay-rococo-client", + "relay-substrate-client", + "relay-utils", + "relay-wococo-client", + "rialto-runtime", + "sp-core", + "sp-finality-grandpa", + "sp-runtime", + "thiserror", ] [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "async-trait", - "futures 0.1.29", - "futures 0.3.15", - "hash-db", + "futures 0.3.18", "hex", "parity-scale-codec", "sc-client-api", "sc-client-db", "sc-consensus", "sc-executor", - "sc-light", "sc-offchain", "sc-service", "serde", @@ -10204,36 +11053,15 @@ dependencies = [ "sp-state-machine", ] -[[package]] -name = "substrate-test-utils" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "futures 0.3.15", - "substrate-test-utils-derive", - "tokio 0.2.21", -] - -[[package]] -name = "substrate-test-utils-derive" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" -dependencies = [ - "proc-macro-crate 1.0.0", - "quote", - "syn", -] - [[package]] name = "substrate-wasm-builder" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79091baab813855ddf65b191de9fe53e656b6b67c1e9bd23fdcbff8788164684" +version = "5.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ "ansi_term 0.12.1", - "atty", "build-helper", "cargo_metadata", + "sp-maybe-compressed-blob", "tempfile", "toml", "walkdir", @@ -10242,32 +11070,37 @@ dependencies = [ [[package]] name = "subtle" -version = "1.0.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] -name = "subtle" -version = "2.2.3" +name = "syn" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502d53007c02d7605a05df1c1a73ee436952781653da5d0bf57ad608f66932c1" +checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] [[package]] -name = "syn" -version = "1.0.67" +name = "syn-mid" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6498a9efc342871f91cc2d0d694c674368b4ceb40f62b65a7a08c3792935e702" +checksum = "baa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "syn", ] [[package]] name = "synstructure" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -10276,22 +11109,33 @@ dependencies = [ ] [[package]] -name = "take_mut" -version = "0.2.2" +name = "sysinfo" +version = "0.15.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +checksum = "de94457a09609f33fec5e7fceaf907488967c6c7c75d64da6a7ce6ffdb8b5abd" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "core-foundation-sys", + "doc-comment", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi 0.3.9", +] [[package]] name = "tap" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36474e732d1affd3a6ed582781b3683df3d0563714c59c39591e8ff707cf078e" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ae3b39281e4b14b8123bdbaddd472b7dfe215e444181f2f9d2443c2444f834" +checksum = "d9bffcddbc2458fa3e6058414599e3c838a022abae82e5c67b4f7f80298d5bff" [[package]] name = "tempfile" @@ -10302,79 +11146,20 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.4", - "redox_syscall 0.2.4", + "redox_syscall 0.2.10", "remove_dir_all", "winapi 0.3.9", ] [[package]] name = "termcolor" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" dependencies = [ "winapi-util", ] -[[package]] -name = "test-parachain-adder" -version = "0.9.7" -dependencies = [ - "dlmalloc", - "parity-scale-codec", - "polkadot-parachain", - "sp-io", - "sp-std", - "substrate-wasm-builder", - "tiny-keccak", -] - -[[package]] -name = "test-parachain-adder-collator" -version = "0.9.7" -dependencies = [ - "futures 0.3.15", - "futures-timer 3.0.2", - "log", - "parity-scale-codec", - "polkadot-cli", - "polkadot-node-core-pvf", - "polkadot-node-primitives", - "polkadot-node-subsystem", - "polkadot-parachain", - "polkadot-primitives", - "polkadot-service", - "polkadot-test-service", - "sc-authority-discovery", - "sc-cli", - "sc-service", - "sp-core", - "sp-keyring", - "structopt", - "substrate-test-utils", - "test-parachain-adder", - "tokio 0.2.21", -] - -[[package]] -name = "test-parachain-halt" -version = "0.9.7" -dependencies = [ - "substrate-wasm-builder", -] - -[[package]] -name = "test-parachains" -version = "0.9.7" -dependencies = [ - "parity-scale-codec", - "polkadot-parachain", - "sp-core", - "test-parachain-adder", - "test-parachain-halt", - "tiny-keccak", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -10386,18 +11171,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -10437,19 +11222,58 @@ dependencies = [ [[package]] name = "time" -version = "0.1.43" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" dependencies = [ + "const_fn", "libc", + "standback", + "stdweb", + "time-macros", + "version_check", "winapi 0.3.9", ] +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn", +] + [[package]] name = "tiny-bip39" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" dependencies = [ "anyhow", "hmac 0.8.1", @@ -10457,9 +11281,10 @@ dependencies = [ "pbkdf2 0.4.0", "rand 0.7.3", "rustc-hash", - "sha2 0.9.2", + "sha2 0.9.8", "thiserror", "unicode-normalization", + "wasm-bindgen", "zeroize", ] @@ -10474,15 +11299,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed" - -[[package]] -name = "tinyvec" -version = "1.1.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] @@ -10495,335 +11314,104 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "mio", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - -[[package]] -name = "tokio" -version = "0.2.21" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d099fa27b9702bed751524694adbe393e18b36b204da91eb1cbbbbb4a5ee2d58" +checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", + "autocfg", + "bytes 1.1.0", "libc", "memchr", - "mio", - "mio-uds", + "mio 0.7.14", "num_cpus", - "pin-project-lite 0.1.7", + "once_cell", + "pin-project-lite 0.2.7", "signal-hook-registry", - "slab", "tokio-macros", "winapi 0.3.9", ] -[[package]] -name = "tokio" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a38d31d7831c6ed7aad00aa4c12d9375fd225a6dd77da1d25b707346319a975" -dependencies = [ - "autocfg", - "pin-project-lite 0.2.4", -] - -[[package]] -name = "tokio-buf" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -dependencies = [ - "bytes 0.4.12", - "either", - "futures 0.1.29", -] - -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.29", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.29", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.29", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "log", -] - [[package]] name = "tokio-macros" -version = "0.2.5" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" +checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "tokio-named-pipes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "mio", - "mio-named-pipes", - "tokio 0.1.22", -] - -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.29", - "lazy_static", - "log", - "mio", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - -[[package]] -name = "tokio-rustls" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228139ddd4fea3fa345a29233009635235833e52807af7ea6448ead03890d6a9" -dependencies = [ - "futures-core", - "rustls 0.18.0", - "tokio 0.2.21", - "webpki", -] - [[package]] name = "tokio-rustls" -version = "0.15.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d15e5669243a45f630a5167d101b942174ca94b615445b2057eace1c818736" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "futures-core", - "rustls 0.19.1", - "tokio 0.2.21", + "rustls", + "tokio", "webpki", ] [[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -dependencies = [ - "futures 0.1.29", -] - -[[package]] -name = "tokio-sync" +name = "tokio-stream" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" dependencies = [ - "fnv", - "futures 0.1.29", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "iovec", - "mio", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.29", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.29", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "log", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.29", - "iovec", - "libc", - "log", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "futures-core", + "pin-project-lite 0.2.7", + "tokio", ] [[package]] name = "tokio-util" -version = "0.3.1" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-core", "futures-io", "futures-sink", "log", - "pin-project-lite 0.1.7", - "tokio 0.2.21", + "pin-project-lite 0.2.7", + "tokio", ] [[package]] name = "toml" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ "cfg-if 1.0.0", "log", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.7", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ "proc-macro2", "quote", @@ -10832,20 +11420,20 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" dependencies = [ "lazy_static", ] [[package]] name = "tracing-futures" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 0.4.23", + "pin-project 1.0.8", "tracing", ] @@ -10872,19 +11460,20 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.18" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ "ansi_term 0.12.1", "chrono", "lazy_static", "matchers", + "parking_lot 0.11.2", "regex", "serde", "serde_json", "sharded-slab", - "smallvec 1.6.1", + "smallvec", "thread_local", "tracing", "tracing-core", @@ -10892,23 +11481,17 @@ dependencies = [ "tracing-serde", ] -[[package]] -name = "treeline" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" - [[package]] name = "trie-db" -version = "0.22.5" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd81fe0c8bc2b528a51c9d2c31dae4483367a26a723a3c9a4a8120311d7774e3" +checksum = "9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fa" dependencies = [ "hash-db", "hashbrown", "log", "rustc-hex", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -10922,9 +11505,9 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d57e219ba600dd96c2f6d82eb79645068e14edbc5c7e27514af40436b88150c" +checksum = "ad0d7f5db438199a6e2609debe3f69f808d074e0a2888ee0bccb45fe234d03f4" dependencies = [ "async-trait", "cfg-if 1.0.0", @@ -10933,22 +11516,22 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 0.2.0", + "idna 0.2.3", "ipnet", "lazy_static", "log", "rand 0.8.4", - "smallvec 1.6.1", + "smallvec", "thiserror", - "tinyvec 1.1.1", - "url 2.2.0", + "tinyvec", + "url 2.2.2", ] [[package]] name = "trust-dns-resolver" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0437eea3a6da51acc1e946545ff53d5b8fb2611ff1c3bed58522dde100536ae" +checksum = "f6ad17b608a64bd0735e67bde16b0636f8aa8591f831a25d18443ed00a699770" dependencies = [ "cfg-if 1.0.0", "futures-util", @@ -10956,75 +11539,65 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "resolv-conf", - "smallvec 1.6.1", + "smallvec", "thiserror", "trust-dns-proto", ] [[package]] name = "try-lock" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#df5012292cea6f5a747ff0e32d2e3c25b73001d9" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3fdb445b3b14880017680a3af85e89fb591666a0" dependencies = [ - "frame-try-runtime", + "jsonrpsee", "log", "parity-scale-codec", "remote-externalities", "sc-chain-spec", "sc-cli", - "sc-client-api", "sc-executor", "sc-service", "serde", - "sp-api", - "sp-blockchain", "sp-core", "sp-externalities", "sp-io", "sp-keystore", "sp-runtime", "sp-state-machine", + "sp-version", "structopt", ] [[package]] -name = "trybuild" -version = "1.0.42" +name = "tt-call" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1768998d9a3b179411618e377dbb134c58a88cda284b0aa71c42c40660127d46" -dependencies = [ - "glob", - "lazy_static", - "serde", - "serde_json", - "termcolor", - "toml", -] +checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" [[package]] name = "twox-hash" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59" +checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" dependencies = [ - "cfg-if 0.1.10", - "rand 0.7.3", + "cfg-if 1.0.0", + "rand 0.8.4", "static_assertions", ] [[package]] name = "typenum" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" [[package]] name = "ucd-trie" @@ -11034,9 +11607,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "uint" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382e" +checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" dependencies = [ "byteorder", "crunchy", @@ -11055,48 +11628,45 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" -version = "0.1.13" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ - "tinyvec 0.3.3", + "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "universal-hash" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ "generic-array 0.14.4", - "subtle 2.2.3", + "subtle", ] [[package]] @@ -11112,19 +11682,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2" dependencies = [ "asynchronous-codec 0.5.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] [[package]] name = "unsigned-varint" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7f" +checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] @@ -11148,36 +11718,31 @@ dependencies = [ [[package]] name = "url" -version = "2.2.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", - "idna 0.2.0", + "idna 0.2.3", "matches", "percent-encoding 2.1.0", ] [[package]] name = "value-bag" -version = "1.0.0-alpha.6" +version = "1.0.0-alpha.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1" +checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f" dependencies = [ "ctor", + "version_check", ] [[package]] name = "vcpkg" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" - -[[package]] -name = "vec-arena" -version = "1.0.0" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" @@ -11187,9 +11752,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "void" @@ -11197,15 +11762,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - [[package]] name = "waker-fn" version = "1.1.0" @@ -11214,26 +11770,15 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi 0.3.9", "winapi-util", ] -[[package]] -name = "want" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -dependencies = [ - "futures 0.1.29", - "log", - "try-lock", -] - [[package]] name = "want" version = "0.3.0" @@ -11258,21 +11803,19 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.73" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" +checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ "cfg-if 1.0.0", - "serde", - "serde_json", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.73" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" +checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" dependencies = [ "bumpalo", "lazy_static", @@ -11285,9 +11828,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.23" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea" +checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -11297,9 +11840,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.73" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" +checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11307,9 +11850,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.73" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" +checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" dependencies = [ "proc-macro2", "quote", @@ -11320,9 +11863,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.73" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" +checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" [[package]] name = "wasm-gc-api" @@ -11341,9 +11884,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "js-sys", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "pin-utils", "wasm-bindgen", "wasm-bindgen-futures", @@ -11352,14 +11895,14 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ee05bba3d1d994652079893941a2ef9324d2b58a63c31b40678fb7eddd7a5a" +checksum = "ca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795d" dependencies = [ "downcast-rs", "libc", "memory_units", - "num-rational", + "num-rational 0.2.4", "num-traits", "parity-wasm 0.42.2", "wasmi-validation", @@ -11367,24 +11910,24 @@ dependencies = [ [[package]] name = "wasmi-validation" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb8e860796d8be48efef530b60eebf84e74a88bce107374fffb0da97d504b8" +checksum = "165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937" dependencies = [ "parity-wasm 0.42.2", ] [[package]] name = "wasmparser" -version = "0.78.2" +version = "0.81.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" +checksum = "98930446519f63d00a836efdc22f67766ceae8dbcc1571379f2bcabc6b2b9abc" [[package]] name = "wasmtime" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b310b9d20fcf59385761d1ade7a3ef06aecc380e3d3172035b919eaf7465d9f7" +checksum = "311d06b0c49346d1fbf48a17052e844036b95a7753c1afb34e8c0af3f6b5bb13" dependencies = [ "anyhow", "backtrace", @@ -11395,40 +11938,38 @@ dependencies = [ "lazy_static", "libc", "log", - "paste 1.0.5", + "object", + "paste", "psm", + "rayon", "region", "rustc-demangle", "serde", - "smallvec 1.6.1", "target-lexicon", "wasmparser", "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", - "wasmtime-fiber", "wasmtime-jit", - "wasmtime-profiling", "wasmtime-runtime", - "wat", "winapi 0.3.9", ] [[package]] name = "wasmtime-cache" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14d500d5c3dc5f5c097158feee123d64b3097f0d836a2a27dff9c761c73c843" +checksum = "36147930a4995137dc096e5b17a573b446799be2bbaea433e821ce6a80abe2c5" dependencies = [ "anyhow", - "base64 0.13.0", + "base64", "bincode", "directories-next", - "errno", "file-per-thread-logger", - "libc", "log", + "rsix", "serde", - "sha2 0.9.2", + "sha2 0.9.8", "toml", "winapi 0.3.9", "zstd", @@ -11436,29 +11977,20 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c525b39f062eada7db3c1298287b96dcb6e472b9f6b22501300b28d9fa7582f6" +checksum = "ab3083a47e1ede38aac06a1d9831640d673f9aeda0b82a64e4ce002f3432e2e7" dependencies = [ + "anyhow", "cranelift-codegen", "cranelift-entity", "cranelift-frontend", + "cranelift-native", "cranelift-wasm", - "target-lexicon", - "wasmparser", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-debug" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d2a763e7a6fc734218e0e463196762a4f409c483063d81e0e85f96343b2e0a" -dependencies = [ - "anyhow", - "gimli 0.24.0", + "gimli 0.25.0", + "log", "more-asserts", - "object 0.24.0", + "object", "target-lexicon", "thiserror", "wasmparser", @@ -11467,105 +11999,55 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64d0c2d881c31b0d65c1f2695e022d71eb60b9fbdd336aacca28208b58eac90" +checksum = "1c2d194b655321053bc4111a1aa4ead552655c8a17d17264bc97766e70073510" dependencies = [ + "anyhow", "cfg-if 1.0.0", - "cranelift-codegen", "cranelift-entity", - "cranelift-wasm", - "gimli 0.24.0", + "gimli 0.25.0", "indexmap", "log", "more-asserts", + "object", "serde", + "target-lexicon", "thiserror", "wasmparser", -] - -[[package]] -name = "wasmtime-fiber" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a089d44cd7e2465d41a53b840a5b4fca1bf6d1ecfebc970eac9592b34ea5f0b3" -dependencies = [ - "cc", - "libc", - "winapi 0.3.9", + "wasmtime-types", ] [[package]] name = "wasmtime-jit" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4539ea734422b7c868107e2187d7746d8affbcaa71916d72639f53757ad707" +checksum = "864ac8dfe4ce310ac59f16fdbd560c257389cb009ee5d030ac6e30523b023d11" dependencies = [ - "addr2line 0.15.1", + "addr2line 0.16.0", "anyhow", + "bincode", "cfg-if 1.0.0", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.24.0", + "gimli 0.25.0", "log", "more-asserts", - "object 0.24.0", - "rayon", + "object", "region", + "rsix", "serde", "target-lexicon", "thiserror", "wasmparser", - "wasmtime-cranelift", - "wasmtime-debug", "wasmtime-environ", - "wasmtime-obj", - "wasmtime-profiling", "wasmtime-runtime", "winapi 0.3.9", ] -[[package]] -name = "wasmtime-obj" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1a8ff85246d091828e2225af521a6208ed28c997bb5c39eb697366dc2e2f2b" -dependencies = [ - "anyhow", - "more-asserts", - "object 0.24.0", - "target-lexicon", - "wasmtime-debug", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-profiling" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24364d522dcd67c897c8fffc42e5bdfc57207bbb6d7eeade0da9d4a7d70105b" -dependencies = [ - "anyhow", - "cfg-if 1.0.0", - "gimli 0.24.0", - "lazy_static", - "libc", - "object 0.24.0", - "scroll", - "serde", - "target-lexicon", - "wasmtime-environ", - "wasmtime-runtime", -] - [[package]] name = "wasmtime-runtime" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51e57976e8a19a18a18e002c6eb12e5769554204238e47ff155fda1809ef0f7" +checksum = "ab97da813a26b98c9abfd3b0c2d99e42f6b78b749c0646344e2e262d212d8c8b" dependencies = [ "anyhow", "backtrace", @@ -11576,39 +12058,33 @@ dependencies = [ "libc", "log", "mach", - "memoffset 0.6.1", + "memoffset", "more-asserts", "rand 0.8.4", "region", + "rsix", "thiserror", "wasmtime-environ", - "wasmtime-fiber", "winapi 0.3.9", ] [[package]] -name = "wast" -version = "35.0.1" +name = "wasmtime-types" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5800e9f86a1eae935e38bea11e60fd253f6d514d153fb39b3e5535a7b37b56" +checksum = "ff94409cc3557bfbbcce6b14520ccd6bd3727e965c0fe68d63ef2c185bf379c6" dependencies = [ - "leb128", -] - -[[package]] -name = "wat" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec280a739b69173e0ffd12c1658507996836ba4e992ed9bc1e5385a0bd72a02" -dependencies = [ - "wast", + "cranelift-entity", + "serde", + "thiserror", + "wasmparser", ] [[package]] name = "web-sys" -version = "0.3.46" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" dependencies = [ "js-sys", "wasm-bindgen", @@ -11616,9 +12092,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.21.3" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" dependencies = [ "ring", "untrusted", @@ -11626,117 +12102,31 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" dependencies = [ "webpki", ] [[package]] -name = "wepoll-sys" -version = "3.0.1" +name = "wepoll-ffi" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" dependencies = [ "cc", ] -[[package]] -name = "westend-runtime" -version = "0.9.7" -dependencies = [ - "beefy-primitives", - "bitvec", - "frame-benchmarking", - "frame-election-provider-support", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "hex-literal", - "libsecp256k1", - "log", - "max-encoded-len", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-collective", - "pallet-democracy", - "pallet-election-provider-multi-phase", - "pallet-elections-phragmen", - "pallet-grandpa", - "pallet-identity", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-mmr-primitives", - "pallet-multisig", - "pallet-nicks", - "pallet-offences", - "pallet-offences-benchmarking", - "pallet-proxy", - "pallet-recovery", - "pallet-scheduler", - "pallet-session", - "pallet-session-benchmarking", - "pallet-society", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "pallet-vesting", - "pallet-xcm", - "parity-scale-codec", - "polkadot-parachain", - "polkadot-primitives", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "rustc-hex", - "serde", - "serde_derive", - "serde_json", - "smallvec 1.6.1", - "sp-api", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keyring", - "sp-npos-elections", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-trie", - "sp-version", - "static_assertions", - "substrate-wasm-builder", - "tiny-keccak", - "xcm", - "xcm-builder", - "xcm-executor", -] - [[package]] name = "which" -version = "4.0.2" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef" +checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" dependencies = [ + "either", + "lazy_static", "libc", - "thiserror", ] [[package]] @@ -11815,45 +12205,40 @@ checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" [[package]] name = "x25519-dalek" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" -dependencies = [ - "curve25519-dalek 2.1.0", - "rand_core 0.5.1", - "zeroize", -] - -[[package]] -name = "x25519-dalek" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088" +checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" dependencies = [ - "curve25519-dalek 3.0.0", + "curve25519-dalek 3.2.0", "rand_core 0.5.1", "zeroize", ] [[package]] name = "xcm" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "derivative", "impl-trait-for-tuples", + "log", "parity-scale-codec", + "scale-info", + "xcm-procedural", ] [[package]] name = "xcm-builder" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "frame-support", "frame-system", - "impl-trait-for-tuples", + "log", "pallet-transaction-payment", "parity-scale-codec", "polkadot-parachain", + "scale-info", "sp-arithmetic", "sp-io", "sp-runtime", @@ -11864,7 +12249,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.7" +version = "0.9.13" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -11878,34 +12264,44 @@ dependencies = [ "xcm", ] +[[package]] +name = "xcm-procedural" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot?branch=master#bd69f54b6853e9a2f5e0869e5e76213259d4573d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "yamux" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" dependencies = [ - "futures 0.3.15", + "futures 0.3.18", "log", "nohash-hasher", - "parking_lot 0.11.1", + "parking_lot 0.11.2", "rand 0.8.4", "static_assertions", ] [[package]] name = "zeroize" -version = "1.2.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.0.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" +checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" dependencies = [ "proc-macro2", "quote", @@ -11915,18 +12311,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.6.1+zstd.1.4.9" +version = "0.9.0+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de55e77f798f205d8561b8fe2ef57abfb6e0ff2abe7fd3c089e119cdb5631a3" +checksum = "07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccd" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "3.0.1+zstd.1.4.9" +version = "4.1.1+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1387cabcd938127b30ce78c4bf00b30387dddf704e3f0881dbc4ff62b5566f8c" +checksum = "c91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079" dependencies = [ "libc", "zstd-sys", @@ -11934,9 +12330,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.4.20+zstd.1.4.9" +version = "1.6.1+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd5b733d7cf2d9447e2c3e76a5589b4f5e5ae065c22a2bc0b023cbc331b6c8e" +checksum = "615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index 9c6f10b826ba..1090a0fe5ba8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,132 +1,11 @@ -[[bin]] -name = "polkadot" -path = "src/main.rs" - -[package] -name = "polkadot" -description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework." -license = "GPL-3.0-only" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -readme = "README.md" - -[dependencies] -polkadot-cli = { path = "cli", features = [ "kusama-native", "westend-native", "rococo-native" ] } -color-eyre = { version = "0.5.11", default-features = false } -parity-util-mem = { version = "*", default-features = false, features = ["jemalloc-global"] } - -[dev-dependencies] -assert_cmd = "1.0.2" -nix = "0.19.1" -tempfile = "3.2.0" - [workspace] -members = [ - "cli", - "core-primitives", - "erasure-coding", - "primitives", - "runtime/common", - "runtime/common/slot_range_helper", - "runtime/parachains", - "runtime/polkadot", - "runtime/kusama", - "runtime/rococo", - "runtime/westend", - "runtime/test-runtime", - "statement-table", - "xcm", - "xcm/xcm-builder", - "xcm/xcm-executor", - "xcm/pallet-xcm", - "node/client", - "node/collation-generation", - "node/core/approval-voting", - "node/core/av-store", - "node/core/backing", - "node/core/bitfield-signing", - "node/core/candidate-validation", - "node/core/chain-api", - "node/core/chain-selection", - "node/core/dispute-coordinator", - "node/core/dispute-participation", - "node/core/parachains-inherent", - "node/core/provisioner", - "node/core/pvf", - "node/core/runtime-api", - "node/network/approval-distribution", - "node/network/bridge", - "node/network/protocol", - "node/network/statement-distribution", - "node/network/bitfield-distribution", - "node/network/availability-distribution", - "node/network/availability-recovery", - "node/network/collator-protocol", - "node/network/gossip-support", - "node/overseer", - "node/malus", - "node/primitives", - "node/service", - "node/subsystem", - "node/subsystem/dispatch-gen", - "node/subsystem-test-helpers", - "node/subsystem-util", - "node/jaeger", - "node/metered-channel", - "node/test/client", - "node/test/service", - "parachain/test-parachains", - "parachain/test-parachains/adder", - "parachain/test-parachains/adder/collator", -] - -# We want to be able to build the bridge relayer without pulling it (and all of its -# dependencies into the Polkadot workspace) -exclude = ["bridges/relays/bin-substrate", "bridges/bin/rialto/runtime", "bridges/bin/millau/runtime"] - -[badges] -maintenance = { status = "actively-developed" } - -# make sure dev builds with backtrace do -# not slow us down -[profile.dev.package.backtrace] -opt-level = 3 +resolver = "2" -[profile.release] -# Polkadot runtime requires unwinding. -panic = "unwind" - -[features] -runtime-benchmarks= [ "polkadot-cli/runtime-benchmarks" ] -try-runtime = [ "polkadot-cli/try-runtime" ] - -# Configuration for building a .deb package - for use with `cargo-deb` -[package.metadata.deb] -name = "polkadot" -extended-description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework." -section = "misc" -maintainer = "martin@parity.io" -license-file = ["LICENSE", "0"] -# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html -maintainer-scripts = "scripts/packaging/deb-maintainer-scripts" -assets = [ - ["target/release/polkadot", "/usr/bin/", "755"], - ["scripts/packaging/polkadot.service", "/lib/systemd/system/", "644"] -] -conf-files = [ - "/etc/default/polkadot" +members = [ + "bin/*/node", + "bin/*/runtime", + "fuzz/*", + "modules/*", + "primitives/*", + "relays/*", ] - -# Configuration for building an .rpm package - for use with `cargo-rpm` -[package.metadata.rpm] -package = "polkadot" - -[package.metadata.rpm.cargo] -buildflags = ["--release"] - -[package.metadata.rpm.targets] -polkadot = { path = "/usr/bin/polkadot" } - -[package.metadata.rpm.files] -"../scripts/packaging/polkadot.service" = { path = "/usr/lib/systemd/system/polkadot.service", mode = "644" } diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000000..ff88c6a5a0a5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,71 @@ +# Builds images used by the bridge. +# +# In particular, it can be used to build Substrate nodes and bridge relayers. The binary that gets +# built can be specified with the `PROJECT` build-arg. For example, to build the `substrate-relay` +# you would do the following: +# +# `docker build . -t local/substrate-relay --build-arg=PROJECT=substrate-relay` +# +# See the `deployments/README.md` for all the available `PROJECT` values. + +FROM paritytech/bridges-ci:latest as builder +WORKDIR /parity-bridges-common + +COPY . . + +ARG PROJECT=substrate-relay +RUN cargo build --release --verbose -p ${PROJECT} && \ + strip ./target/release/${PROJECT} + +# In this final stage we copy over the final binary and do some checks +# to make sure that everything looks good. +FROM ubuntu:20.04 as runtime + +# show backtraces +ENV RUST_BACKTRACE 1 +ENV DEBIAN_FRONTEND=noninteractive + +RUN set -eux; \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + curl ca-certificates libssl-dev && \ + update-ca-certificates && \ + groupadd -g 1000 user && \ + useradd -u 1000 -g user -s /bin/sh -m user && \ + # apt clean up + apt-get autoremove -y && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# switch to non-root user +USER user + +WORKDIR /home/user + +ARG PROJECT=substrate-relay + +COPY --chown=user:user --from=builder /parity-bridges-common/target/release/${PROJECT} ./ +COPY --chown=user:user --from=builder /parity-bridges-common/deployments/local-scripts/bridge-entrypoint.sh ./ + +# check if executable works in this container +RUN ./${PROJECT} --version + +ENV PROJECT=$PROJECT +ENTRYPOINT ["/home/user/bridge-entrypoint.sh"] + +# metadata +ARG VCS_REF=master +ARG BUILD_DATE="" +ARG VERSION="" + +LABEL org.opencontainers.image.title="${PROJECT}" \ + org.opencontainers.image.description="${PROJECT} - component of Parity Bridges Common" \ + org.opencontainers.image.source="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/Dockerfile" \ + org.opencontainers.image.url="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/Dockerfile" \ + org.opencontainers.image.documentation="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/README.md" \ + org.opencontainers.image.created="${BUILD_DATE}" \ + org.opencontainers.image.version="${VERSION}" \ + org.opencontainers.image.revision="${VCS_REF}" \ + org.opencontainers.image.authors="devops-team@parity.io" \ + org.opencontainers.image.vendor="Parity Technologies" \ + org.opencontainers.image.licenses="GPL-3.0 License" diff --git a/Process.json b/Process.json deleted file mode 100644 index 10dfb219bf0c..000000000000 --- a/Process.json +++ /dev/null @@ -1,15 +0,0 @@ -[{ - "project_name": "Batch: Availability and Validity", - "owner": "rphmeier", - "matrix_room_id": "!wQXGIDhhJQSVXKqPwi:matrix.parity.io" -}, -{ - "project_name": "Batch: Codebase Restructure", - "owner": "rphmeier", - "matrix_room_id": "!wQXGIDhhJQSVXKqPwi:matrix.parity.io" -}, -{ - "project_name": "Cumulus", - "owner": "bkchr", - "matrix_room_id": "!wQXGIDhhJQSVXKqPwi:matrix.parity.io" -}] diff --git a/README.md b/README.md index 5281d40803a5..ac3e49b94c6a 100644 --- a/README.md +++ b/README.md @@ -1,252 +1,247 @@ -# Polkadot +# Parity Bridges Common -Implementation of a https://polkadot.network node in Rust based on the Substrate framework. +This is a collection of components for building bridges. -> **NOTE:** In 2018, we split our implementation of "Polkadot" from its development framework -> "Substrate". See the [Substrate][substrate-repo] repo for git history prior to 2018. +These components include Substrate pallets for syncing headers, passing arbitrary messages, as well +as libraries for building relayers to provide cross-chain communication capabilities. -[substrate-repo]: https://github.com/paritytech/substrate +Three bridge nodes are also available. The nodes can be used to run test networks which bridge other +Substrate chains. -This repo contains runtimes for the Polkadot, Kusama, and Westend networks. The README provides -information about installing the `polkadot` binary and developing on the codebase. For more -specific guides, like how to be a validator, see the -[Polkadot Wiki](https://wiki.polkadot.network/docs/en/). +🚧 The bridges are currently under construction - a hardhat is recommended beyond this point 🚧 -## Installation - -If you just wish to run a Polkadot node without compiling it yourself, you may -either run the latest binary from our -[releases](https://github.com/paritytech/polkadot/releases) page, or install -Polkadot from one of our package repositories. - -Installation from the debian or rpm repositories will create a `systemd` -service that can be used to run a Polkadot node. This is disabled by default, -and can be started by running `systemctl start polkadot` on demand (use -`systemctl enable polkadot` to make it auto-start after reboot). By default, it -will run as the `polkadot` user. Command-line flags passed to the binary can -be customized by editing `/etc/default/polkadot`. This file will not be -overwritten on updating polkadot. You may also just run the node directly from -the command-line. +## Contents -### Debian-based (Debian, Ubuntu) +- [Installation](#installation) +- [High-Level Architecture](#high-level-architecture) +- [Project Layout](#project-layout) +- [Running the Bridge](#running-the-bridge) +- [How to send a message](#how-to-send-a-message) +- [Community](#community) -Currently supports Debian 10 (Buster) and Ubuntu 20.04 (Focal), and -derivatives. Run the following commands as the `root` user. +## Installation -``` -# Import the security@parity.io GPG key -gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798 -gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg -# Add the Parity repository and update the package index -echo 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list -apt update -# Install the `parity-keyring` package - This will ensure the GPG key -# used by APT remains up-to-date -apt install parity-keyring -# Install polkadot -apt install polkadot +To get up and running you need both stable and nightly Rust. Rust nightly is used to build the Web +Assembly (WASM) runtime for the node. You can configure the WASM support as so: +```bash +rustup install nightly +rustup target add wasm32-unknown-unknown --toolchain nightly ``` -### RPM-based (Fedora, CentOS) - -Currently supports Fedora 32 and CentOS 8, and derivatives. +Once this is configured you can build and test the repo as follows: ``` -# Install dnf-plugins-core (This might already be installed) -dnf install dnf-plugins-core -# Add the repository and enable it -dnf config-manager --add-repo https://releases.parity.io/rpm/polkadot.repo -dnf config-manager --set-enabled polkadot -# Install polkadot (You may have to confirm the import of the GPG key, which -# should have the following fingerprint: 9D4B2B6EB8F97156D19669A9FF0812D491B96798) -dnf install polkadot +git clone https://github.com/paritytech/parity-bridges-common.git +cd parity-bridges-common +cargo build --all +cargo test --all ``` -## Building - -### Install via Cargo - -Make sure you have the support software installed from the **Build from Source** section -below this section. - -If you want to install Polkadot in your PATH, you can do so with with: +Also you can build the repo with +[Parity CI Docker image](https://github.com/paritytech/scripts/tree/master/dockerfiles/bridges-ci): ```bash -cargo install --git https://github.com/paritytech/polkadot --tag polkadot --locked +docker pull paritytech/bridges-ci:production +mkdir ~/cache +chown 1000:1000 ~/cache #processes in the container runs as "nonroot" user with UID 1000 +docker run --rm -it -w /shellhere/parity-bridges-common \ + -v /home/$(whoami)/cache/:/cache/ \ + -v "$(pwd)":/shellhere/parity-bridges-common \ + -e CARGO_HOME=/cache/cargo/ \ + -e SCCACHE_DIR=/cache/sccache/ \ + -e CARGO_TARGET_DIR=/cache/target/ paritytech/bridges-ci:production cargo build --all +#artifacts can be found in ~/cache/target ``` -### Build from Source - -If you'd like to build from source, first install Rust. You may need to add Cargo's bin directory -to your PATH environment variable. Restarting your computer will do this for you automatically. +If you want to reproduce other steps of CI process you can use the following +[guide](https://github.com/paritytech/scripts#reproduce-ci-locally). -```bash -curl https://sh.rustup.rs -sSf | sh -``` - -If you already have Rust installed, make sure you're using the latest version by running: +If you need more information about setting up your development environment Substrate's +[Getting Started](https://substrate.dev/docs/en/knowledgebase/getting-started/) page is a good +resource. -```bash -rustup update -``` +## High-Level Architecture -Once done, finish installing the support software: +This repo has support for bridging foreign chains together using a combination of Substrate pallets +and external processes called relayers. A bridge chain is one that is able to follow the consensus +of a foreign chain independently. For example, consider the case below where we want to bridge two +Substrate based chains. -```bash -sudo apt install build-essential git clang libclang-dev pkg-config libssl-dev ``` - -Build the client by cloning this repository and running the following commands from the root -directory of the repo: - -```bash -git checkout -./scripts/init.sh -cargo build --release ++---------------+ +---------------+ +| | | | +| Rialto | | Millau | +| | | | ++-------+-------+ +-------+-------+ + ^ ^ + | +---------------+ | + | | | | + +-----> | Bridge Relay | <-------+ + | | + +---------------+ ``` -Note that compilation is a memory intensive process. We recommend having 4 GiB of physical RAM or swap available (keep in mind that if a build hits swap it tends to be very slow). +The Millau chain must be able to accept Rialto headers and verify their integrity. It does this by +using a runtime module designed to track GRANDPA finality. Since two blockchains can't interact +directly they need an external service, called a relayer, to communicate. The relayer will subscribe +to new Rialto headers via RPC and submit them to the Millau chain for verification. -## Networks +Take a look at [Bridge High Level Documentation](./docs/high-level-overview.md) for more in-depth +description of the bridge interaction. -This repo supports runtimes for Polkadot, Kusama, and Westend. +## Project Layout -### Connect to Polkadot Mainnet +Here's an overview of how the project is laid out. The main bits are the `node`, which is the actual +"blockchain", the `modules` which are used to build the blockchain's logic (a.k.a the runtime) and +the `relays` which are used to pass messages between chains. -Connect to the global Polkadot Mainnet network by running: - -```bash -./target/release/polkadot --chain=polkadot +``` +├── bin // Node and Runtime for the various Substrate chains +│ └── ... +├── deployments // Useful tools for deploying test networks +│ └── ... +├── diagrams // Pretty pictures of the project architecture +│ └── ... +├── modules // Substrate Runtime Modules (a.k.a Pallets) +│ ├── grandpa // On-Chain GRANDPA Light Client +│ ├── messages // Cross Chain Message Passing +│ ├── dispatch // Target Chain Message Execution +│ └── ... +├── primitives // Code shared between modules, runtimes, and relays +│ └── ... +├── relays // Application for sending headers and messages between chains +│ └── ... +└── scripts // Useful development and maintenance scripts ``` -You can see your node on [telemetry] (set a custom name with `--name "my custom name"`). - -[telemetry]: https://telemetry.polkadot.io/#list/Polkadot - -### Connect to the "Kusama" Canary Network - -Connect to the global Kusama canary network by running: +## Running the Bridge -```bash -./target/release/polkadot --chain=kusama -``` +To run the Bridge you need to be able to connect the bridge relay node to the RPC interface of nodes +on each side of the bridge (source and target chain). -You can see your node on [telemetry] (set a custom name with `--name "my custom name"`). +There are 2 ways to run the bridge, described below: -[telemetry]: https://telemetry.polkadot.io/#list/Kusama +- building & running from source +- running a Docker Compose setup (recommended). -### Connect to the Westend Testnet +### Using the Source -Connect to the global Westend testnet by running: +First you'll need to build the bridge nodes and relay. This can be done as follows: ```bash -./target/release/polkadot --chain=westend +# In `parity-bridges-common` folder +cargo build -p rialto-bridge-node +cargo build -p millau-bridge-node +cargo build -p substrate-relay ``` -You can see your node on [telemetry] (set a custom name with `--name "my custom name"`). +### Running a Dev network -[telemetry]: https://telemetry.polkadot.io/#list/Westend +We will launch a dev network to demonstrate how to relay a message between two Substrate based +chains (named Rialto and Millau). -### Obtaining DOTs +To do this we will need two nodes, two relayers which will relay headers, and two relayers which +will relay messages. -If you want to do anything on Polkadot, Kusama, or Westend, then you'll need to get an account and -some DOT, KSM, or WND tokens, respectively. See the -[claims instructions](https://claims.polkadot.network/) for Polkadot if you have DOTs to claim. For -Westend's WND tokens, see the faucet -[instructions](https://wiki.polkadot.network/docs/en/learn-DOT#getting-westies) on the Wiki. +#### Running from local scripts -## Hacking on Polkadot +To run a simple dev network you can use the scripts located in the +[`deployments/local-scripts` folder](./deployments/local-scripts). -If you'd actually like to hack on Polkadot, you can grab the source code and build it. Ensure you have -Rust and the support software installed. This script will install or update Rust and install the -required dependencies (this may take up to 30 minutes on Mac machines): +First, we must run the two Substrate nodes. ```bash -curl https://getsubstrate.io -sSf | bash -s -- --fast +# In `parity-bridges-common` folder +./deployments/local-scripts/run-rialto-node.sh +./deployments/local-scripts/run-millau-node.sh ``` -Then, grab the Polkadot source code: +After the nodes are up we can run the header relayers. ```bash -git clone https://github.com/paritytech/polkadot.git -cd polkadot +./deployments/local-scripts/relay-millau-to-rialto.sh +./deployments/local-scripts/relay-rialto-to-millau.sh ``` -Then build the code. You will need to build in release mode (`--release`) to start a network. Only -use debug mode for development (faster compile times for development and testing). +At this point you should see the relayer submitting headers from the Millau Substrate chain to the +Rialto Substrate chain. -```bash -./scripts/init.sh # Install WebAssembly. Update Rust -cargo build # Builds all native code ``` - -You can run the tests if you like: - -```bash -cargo test --all +# Header Relayer Logs +[Millau_to_Rialto_Sync] [date] DEBUG bridge Going to submit finality proof of Millau header #147 to Rialto +[...] [date] INFO bridge Synced 147 of 147 headers +[...] [date] DEBUG bridge Going to submit finality proof of Millau header #148 to Rialto +[...] [date] INFO bridge Synced 148 of 149 headers ``` -You can start a development chain with: +Finally, we can run the message relayers. ```bash -cargo run -- --dev +./deployments/local-scripts/relay-messages-millau-to-rialto.sh +./deployments/local-scripts/relay-messages-rialto-to-millau.sh ``` -Detailed logs may be shown by running the node with the following environment variables set: +You will also see the message lane relayers listening for new messages. -```bash -RUST_LOG=debug RUST_BACKTRACE=1 cargo run -- --dev ``` - -### Development - -You can run a simple single-node development "network" on your machine by running: - -```bash -polkadot --dev +# Message Relayer Logs +[Millau_to_Rialto_MessageLane_00000000] [date] DEBUG bridge Asking Millau::ReceivingConfirmationsDelivery about best message nonces +[...] [date] INFO bridge Synced Some(2) of Some(3) nonces in Millau::MessagesDelivery -> Rialto::MessagesDelivery race +[...] [date] DEBUG bridge Asking Millau::MessagesDelivery about message nonces +[...] [date] DEBUG bridge Received best nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces { latest_nonce: 0, nonces_data: () } +[...] [date] DEBUG bridge Asking Millau::ReceivingConfirmationsDelivery about finalized message nonces +[...] [date] DEBUG bridge Received finalized nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces { latest_nonce: 0, nonces_data: () } +[...] [date] DEBUG bridge Received nonces from Millau::MessagesDelivery: SourceClientNonces { new_nonces: {}, confirmed_nonce: Some(0) } +[...] [date] DEBUG bridge Asking Millau node about its state +[...] [date] DEBUG bridge Received state from Millau node: ClientState { best_self: HeaderId(1593, 0xacac***), best_finalized_self: HeaderId(1590, 0x0be81d...), best_finalized_peer_at_best_self: HeaderId(0, 0xdcdd89...) } ``` -You can muck around by heading to https://polkadot.js.org/apps and choose "Local Node" from the -Settings menu. +To send a message see the ["How to send a message" section](#how-to-send-a-message). -### Local Two-node Testnet +### Full Network Docker Compose Setup -If you want to see the multi-node consensus algorithm in action locally, then you can create a -local testnet. You'll need two terminals open. In one, run: +For a more sophisticated deployment which includes bidirectional header sync, message passing, +monitoring dashboards, etc. see the [Deployments README](./deployments/README.md). -```bash -polkadot --chain=polkadot-local --alice -d /tmp/alice -``` +You should note that you can find images for all the bridge components published on +[Docker Hub](https://hub.docker.com/u/paritytech). -And in the other, run: +To run a Rialto node for example, you can use the following command: ```bash -polkadot --chain=polkadot-local --bob -d /tmp/bob --port 30334 --bootnodes '/ip4/127.0.0.1/tcp/30333/p2p/ALICE_BOOTNODE_ID_HERE' +docker run -p 30333:30333 -p 9933:9933 -p 9944:9944 \ + -it paritytech/rialto-bridge-node --dev --tmp \ + --rpc-cors=all --unsafe-rpc-external --unsafe-ws-external ``` -Ensure you replace `ALICE_BOOTNODE_ID_HERE` with the node ID from the output of the first terminal. - -### Using Docker -[Using Docker](doc/docker.md) +### How to send a message -### Shell Completion -[Shell Completion](doc/shell-completion.md) +In this section we'll show you how to quickly send a bridge message, if you want to +interact with and test the bridge see more details in [send message](./docs/send-message.md) -## Contributing - -### Contributing Guidelines - -[Contribution Guidelines](CONTRIBUTING.md) +```bash +# In `parity-bridges-common` folder +./scripts/send-message-from-millau-rialto.sh remark +``` -### Contributor Code of Conduct +After sending a message you will see the following logs showing a message was successfully sent: -[Code of Conduct](CODE_OF_CONDUCT.md) +``` +INFO bridge Sending message to Rialto. Size: 286. Dispatch weight: 1038000. Fee: 275,002,568 +INFO bridge Signed Millau Call: 0x7904... +TRACE bridge Sent transaction to Millau node: 0x5e68... +``` -## License +## Community -Polkadot is [GPL 3.0 licensed](LICENSE). +Main hangout for the community is [Element](https://element.io/) (formerly Riot). Element is a chat +server like, for example, Discord. Most discussions around Polkadot and Substrate happen +in various Element "rooms" (channels). So, joining Element might be a good idea, anyway. -## Important Notice +If you are interested in information exchange and development of Polkadot related bridges please +feel free to join the [Polkadot Bridges](https://app.element.io/#/room/#bridges:web3.foundation) +Element channel. -https://polkadot.network/testnetdisclaimer +The [Substrate Technical](https://app.element.io/#/room/#substrate-technical:matrix.org) Element +channel is most suited for discussions regarding Substrate itself. diff --git a/RELEASE.md b/RELEASE.md deleted file mode 100644 index 554cfb8e455e..000000000000 --- a/RELEASE.md +++ /dev/null @@ -1,56 +0,0 @@ -Polkadot Release Process ------------------------- - -### Branches -* release-candidate branch: The branch used for staging of the next release. - Named like `release-v0.8.26` -* release branch: The branch to which successful release-candidates are merged - and tagged with the new version. Named literally `release`. - -### Notes -* The release-candidate branch *must* be made in the paritytech/polkadot repo in -order for release automation to work correctly -* Any new pushes/merges to the release-candidate branch (for example, -refs/heads/release-v0.8.26) will result in the rc index being bumped (e.g., v0.8.26-rc1 -to v0.8.26-rc2) and new wasms built. - -### Release workflow - -Below are the steps of the release workflow. Steps prefixed with NOACTION are -automated and require no human action. - -1. To initiate the release process, branch master off to a release branch and push it to Github: - - `git checkout master; git pull; git checkout -b release-v0.8.26; git push origin refs/heads/release-v0.8.26` -2. NOACTION: The current HEAD of the release-candidate branch is tagged `v0.8.26-rc1` -3. NOACTION: A draft release and runtime WASMs are created for this - release-candidate automatically. A link to the draft release will be linked in - the internal polkadot matrix channel. -4. NOACTION: A new Github issue is created containing a checklist of manual - steps to be completed before we are confident with the release. This will be - linked in Matrix. -5. Complete the steps in the issue created in step 4, signing them off as - completed -6. (optional) If a fix is required to the release-candidate: - 1. Merge the fix with `master` first - 2. Cherry-pick the commit from `master` to `release-v0.8.26`, fixing any - merge conflicts. Try to avoid unnecessarily bumping crates. - 3. Push the release-candidate branch to Github - this is now the new release- - candidate - 4. Depending on the cherry-picked changes, it may be necessary to perform some - or all of the manual tests again. -7. Once happy with the release-candidate, perform the release using the release - script located at `scripts/release.sh` (or perform the steps in that script - manually): - - `./scripts/release.sh v0.8.26` -8. NOACTION: The HEAD of the `release` branch will be tagged with `v0.8.26`, - and a final draft release will be created on Github. - -### Security releases - -Occasionally there may be changes that need to be made to the most recently -released version of Polkadot, without taking *every* change to `master` since -the last release. For example, in the event of a security vulnerability being -found, where releasing a fixed version is a matter of some expediency. In cases -like this, the fix should first be merged with master, cherry-picked to a branch -forked from `release`, tested, and then finally merged with `release`. A -sensible versioning scheme for changes like this is `vX.Y.Z-1`. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index db81bcaab4d0..000000000000 --- a/SECURITY.md +++ /dev/null @@ -1,101 +0,0 @@ -# Security Policy - -Parity Technologies is committed to resolving security vulnerabilities in our software quickly and carefully. We take the necessary steps to minimize risk, provide timely information, and deliver vulnerability fixes and mitigations required to address security issues. - -## Reporting a Vulnerability - -Security vulnerabilities in Parity software should be reported by email to security@parity.io. If you think your report might be eligible for the Parity Bug Bounty Program, your email should be sent to bugbounty@parity.io. - -Your report should include the following: - -- your name -- description of the vulnerability -- attack scenario (if any) -- components -- reproduction -- other details - -Try to include as much information in your report as you can, including a description of the vulnerability, its potential impact, and steps for reproducing it. Be sure to use a descriptive subject line. - -You'll receive a response to your email within two business days indicating the next steps in handling your report. We encourage finders to use encrypted communication channels to protect the confidentiality of vulnerability reports. You can encrypt your report using our public key. This key is [on MIT's key server](https://pgp.mit.edu/pks/lookup?op=get&search=0x5D0F03018D07DE73) server and reproduced below. - -After the initial reply to your report, our team will endeavor to keep you informed of the progress being made towards a fix. These updates will be sent at least every five business days. - -Thank you for taking the time to responsibly disclose any vulnerabilities you find. - -## Responsible Investigation and Reporting - -Responsible investigation and reporting includes, but isn't limited to, the following: - -- Don't violate the privacy of other users, destroy data, etc. -- Don’t defraud or harm Parity Technologies Ltd or its users during your research; you should make a good faith effort to not interrupt or degrade our services. -- Don't target our physical security measures, or attempt to use social engineering, spam, distributed denial of service (DDOS) attacks, etc. -- Initially report the bug only to us and not to anyone else. -- Give us a reasonable amount of time to fix the bug before disclosing it to anyone else, and give us adequate written warning before disclosing it to anyone else. -- In general, please investigate and report bugs in a way that makes a reasonable, good faith effort not to be disruptive or harmful to us or our users. Otherwise your actions might be interpreted as an attack rather than an effort to be helpful. - -## Bug Bounty Program - -Our Bug Bounty Program allows us to recognise and reward members of the Parity community for helping us find and address significant bugs, in accordance with the terms of the Parity Bug Bounty Program. A detailed description on eligibility, rewards, legal information and terms & conditions for contributors can be found on [our website](https://paritytech.io/bug-bounty.html). - - - - - - -## Plaintext PGP Key - -``` ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBF0vHwQBEADKui4qAo4bzdzRhMm+uhUpYGf8jjjmET3zJ8kKQIpp6JTsV+HJ -6m1We0QYeMRXoOYH1xVHBf2zNCuHS0nSQdUCQA7SHWsPB05STa2hvlR7fSdQnCCp -gnLOJWXvvedlRDIAhvqI6cwLdUlXgVSKEwrwmrpiBhh4NxI3qX+LyIa+Ovkchu2S -d/YCnE4GqojSGRfJYiGwe2N+sF7OfaoKhQuTrtdDExHrMU4cWnTXW2wyxTr4xkj9 -jS2WeLVZWflvkDHT8JD9N6jNxBVEF/Qvjk83zI0kCOzkhek8x+YUgfLq3/rHOYbX -3pW21ccHYPacHjHWvKE+xRebjeEhJ4KxKHfCVjQcxybwDBqDka1AniZt4CQ7UORf -MU/ue2oSZ9nNg0uMdb/0AbQPZ04OlMcYPAPWzFL08nVPox9wT9uqlL6JtcOeC90h -oOeDmfgwmjMmdwWTRgt9qQjcbgXzVvuAzIGbzj1X3MdLspWdHs/d2+US4nji1TkN -oYIW7vE+xkd3aB+NZunIlm9Rwd/0mSgDg+DaNa5KceOLhq0/qKgcXC/RRU29I8II -tusRoR/oesGJGYTjh4k6PJkG+nvDPsoQrwYT44bhnniS1xYkxWYXF99JFI7LgMdD -e1SgKeIDVpvm873k82E6arp5655Wod1XOjaXBggCwFp84eKcEZEN+1qEWwARAQAB -tClQYXJpdHkgU2VjdXJpdHkgVGVhbSA8c2VjdXJpdHlAcGFyaXR5LmlvPokCVAQT -AQoAPhYhBJ1LK264+XFW0ZZpqf8IEtSRuWeYBQJdLx8EAhsDBQkDwmcABQsJCAcC -BhUKCQgLAgQWAgMBAh4BAheAAAoJEP8IEtSRuWeYL84QAI6NwnwS561DWYYRAd4y -ocGPr3CnwFSt1GjkSkRy3B+tMhzexBg1y7EbLRUefIrO4LwOlywtRk8tTRGgEI4i -5xRLHbOkeolfgCFSpOj5d8cMKCt5HEIv18hsv6dkrzlSYA5NLX/GRBEh3F/0sGny -vCXapfxa1cx72sU7631JBK7t2Tf+MfwxdfyFZ9TI9WdtP5AfVjgTkIVkEDFcZPTc -n3CYXqTYFIBCNUD8LP4iTi3xUt7pTGJQQoFT8l15nJCgzRYQ+tXpoTRlf+/LtXmw -6iidPV87E06jHdK9666rBouIabAtx7i0/4kwo+bSZ8DiSKRUaehiHGd212HSEmdF -jxquWE4pEzoUowYznhSIfR+WWIqRBHxEYarP4m98Hi+VXZ7Fw1ytzO8+BAKnLXnj -2W2+T9qJks5gqVEoaWNnqpvya6JA11QZvZ0w7Om2carDc2ILNm2Xx9J0mRUye8P0 -KxcgqJuKNGFtugebQAsXagkxOKsdKna1PlDlxEfTf6AgI3ST8qSiMAwaaIMB/REF -VKUapGoslQX4tOCjibI2pzEgE//D8NAaSVu2A9+BUcFERdZRxsI7fydIXNeZ2R46 -N2qfW+DP3YR/14QgdRxDItEavUoE1vByRXwIufKAkVemOZzIoFXKFsDeXwqTVW5i -6CXu6OddZ3QHDiT9TEbRny4QuQINBF0vKCwBEACnP5J7LEGbpxNBrPvGdxZUo0YA -U8RgeKDRPxJTvMo27V1IPZGaKRCRq8LBfg/eHhqZhQ7SLJBjBljd8kuT5dHDBTRe -jE1UIOhmnlSlrEJjAmpVO08irlGpq1o+8mGcvkBsR0poCVjeNeSnwYfRnR+c3GK5 -Er6/JRqfN4mJvnEC9/Pbm6C7ql6YLKxC3yqzF97JL5brbbuozrW7nixY/yAI8619 -VlBIMP7PAUbGcnSQyuV5b/Wr2Sgr6NJclnNSLjh2U9/Du6w/0tDGlMBts8HjRnWJ -BXbkTdQKCTaqgK68kTKSiN1/x+lynxHC2AavMpH/08Kopg2ZCzJowMKIgcB+4Z/I -DJKZWHWKumhaZMGXcWgzgcByog9IpamuROEZFJNEUAFf7YIncEckPSif4looiOdS -VurKZGvYXXaGSsZbGgHxI5CWu7ZxMdLBLvtOcCYmRQrG+g/h+PGU5BT0bNAfNTkm -V3/n1B/TWbpWRmB3AwT2emQivXHkaubGI0VivhaO43AuI9JWoqiMqFtxbuTeoxwD -xlu2Dzcp0v+AR4T5cIG9D5/+yiPc25aIY7cIKxuNFHIDL4td5fwSGC7vU6998PIG -2Y48TGBnw7zpEfDfMayqAeBjX0YU6PTNsvS5O6bP3j4ojTOUYD7Z8QdCvgISDID3 -WMGAdmSwmCRvsQ/OJwARAQABiQI8BBgBCgAmFiEEnUsrbrj5cVbRlmmp/wgS1JG5 -Z5gFAl0vKCwCGwwFCQB2pwAACgkQ/wgS1JG5Z5hdbw//ZqR+JcWm59NUIHjauETJ -sYDYhcAfa3txTacRn5uPz/TQiTd7wZ82+G8Et0ZnpEHy6eWyBqHpG0hiPhFBzxjY -nhjHl8jJeyo2mQIVJhzkL58BHBZk8WM2TlaU7VxZ6TYOmP2y3qf6FD6mCcrQ4Fml -E9f0lyVUoI/5Zs9oF0izRk8vkwaY3UvLM7XEY6nM8GnFG8kaiZMYmx26Zo7Uz31G -7EGGZFsrVDXfNhSJyz79Gyn+Lx9jOTdoR0sH/THYIIosE83awMGE6jKeuDYTbVWu -+ZtHQef+pRteki3wvNLJK+kC1y3BtHqDJS9Lqx0s8SCiVozlC+fZfC9hCtU7bXJK -0UJZ4qjSvj6whzfaNgOZAqJpmwgOnd8W/3YJk1DwUeX98FcU38MR23SOkx2EDdDE -77Kdu62vTs/tLmOTuyKBvYPaHaYulYjQTxurG+o8vhHtaL87ARvuq+83dj+nO5z3 -5O9vkcVJYWjOEnJe7ZvCTxeLJehpCmHIbyUuDx5P24MWVbyXOxIlxNxTqlub5GlW -rQF6Qsa/0k9TRk7Htbct6fAA0/VahJS0g096MrTH8AxBXDNE8lIoNeGikVlaxK9Z -S+aannlWYIJymZ4FygIPPaRlzhAoXBuJd8OaR5giC7dS1xquxKOiQEXTGsLeGFaI -BZYiIhW7GG4ozvKDqyNm4eg= -=yKcB ------END PGP PUBLIC KEY BLOCK----- -``` diff --git a/bridges/bin/.keep b/bin/.keep similarity index 100% rename from bridges/bin/.keep rename to bin/.keep diff --git a/bin/millau/node/Cargo.toml b/bin/millau/node/Cargo.toml new file mode 100644 index 000000000000..b650bd478a62 --- /dev/null +++ b/bin/millau/node/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = "millau-bridge-node" +description = "Substrate node compatible with Millau runtime" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +build = "build.rs" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +jsonrpc-core = "18.0" +structopt = "0.3.21" +serde_json = "1.0.59" + +# Bridge dependencies + +bp-millau = { path = "../../../primitives/chain-millau" } +bp-runtime = { path = "../../../primitives/runtime" } +millau-runtime = { path = "../runtime" } +pallet-bridge-messages = { path = "../../../modules/messages" } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } +node-inspect = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = [] +runtime-benchmarks = [ + "millau-runtime/runtime-benchmarks", +] diff --git a/bridges/bin/millau/node/build.rs b/bin/millau/node/build.rs similarity index 100% rename from bridges/bin/millau/node/build.rs rename to bin/millau/node/build.rs diff --git a/bin/millau/node/src/chain_spec.rs b/bin/millau/node/src/chain_spec.rs new file mode 100644 index 000000000000..05496bb64f63 --- /dev/null +++ b/bin/millau/node/src/chain_spec.rs @@ -0,0 +1,222 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use bp_millau::derive_account_from_rialto_id; +use millau_runtime::{ + AccountId, AuraConfig, BalancesConfig, BridgeRialtoMessagesConfig, BridgeWestendGrandpaConfig, + GenesisConfig, GrandpaConfig, SessionConfig, SessionKeys, Signature, SudoConfig, SystemConfig, + WASM_BINARY, +}; +use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_core::{sr25519, Pair, Public}; +use sp_finality_grandpa::AuthorityId as GrandpaId; +use sp_runtime::traits::{IdentifyAccount, Verify}; + +/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. +pub type ChainSpec = sc_service::GenericChainSpec; + +/// The chain specification option. This is expected to come in from the CLI and +/// is little more than one of a number of alternatives which can easily be converted +/// from a string (`--chain=...`) into a `ChainSpec`. +#[derive(Clone, Debug)] +pub enum Alternative { + /// Whatever the current runtime is, with just Alice as an auth. + Development, + /// Whatever the current runtime is, with simple Alice/Bob/Charlie/Dave/Eve auths. + LocalTestnet, +} + +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +type AccountPublic = ::Signer; + +/// Helper function to generate an account ID from seed +pub fn get_account_id_from_seed(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_from_seed::(seed)).into_account() +} + +/// Helper function to generate an authority key for Aura +pub fn get_authority_keys_from_seed(s: &str) -> (AccountId, AuraId, GrandpaId) { + ( + get_account_id_from_seed::(s), + get_from_seed::(s), + get_from_seed::(s), + ) +} + +impl Alternative { + /// Get an actual chain config from one of the alternatives. + pub(crate) fn load(self) -> ChainSpec { + let properties = Some( + serde_json::json!({ + "tokenDecimals": 9, + "tokenSymbol": "MLAU" + }) + .as_object() + .expect("Map given; qed") + .clone(), + ); + match self { + Alternative::Development => ChainSpec::from_genesis( + "Millau Development", + "millau_dev", + sc_service::ChainType::Development, + || { + testnet_genesis( + vec![get_authority_keys_from_seed("Alice")], + get_account_id_from_seed::("Alice"), + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Alice"), + )), + ], + true, + ) + }, + vec![], + None, + None, + properties, + None, + ), + Alternative::LocalTestnet => ChainSpec::from_genesis( + "Millau Local", + "millau_local", + sc_service::ChainType::Local, + || { + testnet_genesis( + vec![ + get_authority_keys_from_seed("Alice"), + get_authority_keys_from_seed("Bob"), + get_authority_keys_from_seed("Charlie"), + get_authority_keys_from_seed("Dave"), + get_authority_keys_from_seed("Eve"), + ], + get_account_id_from_seed::("Alice"), + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("George"), + get_account_id_from_seed::("Harry"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + get_account_id_from_seed::("George//stash"), + get_account_id_from_seed::("Harry//stash"), + get_account_id_from_seed::("RialtoMessagesOwner"), + get_account_id_from_seed::("WithRialtoTokenSwap"), + pallet_bridge_messages::relayer_fund_account_id::< + bp_millau::AccountId, + bp_millau::AccountIdConverter, + >(), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Alice"), + )), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Bob"), + )), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Charlie"), + )), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Dave"), + )), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Eve"), + )), + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Ferdie"), + )), + ], + true, + ) + }, + vec![], + None, + None, + properties, + None, + ), + } + } +} + +fn session_keys(aura: AuraId, grandpa: GrandpaId) -> SessionKeys { + SessionKeys { aura, grandpa } +} + +fn testnet_genesis( + initial_authorities: Vec<(AccountId, AuraId, GrandpaId)>, + root_key: AccountId, + endowed_accounts: Vec, + _enable_println: bool, +) -> GenesisConfig { + GenesisConfig { + system: SystemConfig { + code: WASM_BINARY.expect("Millau development WASM not available").to_vec(), + }, + balances: BalancesConfig { + balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 50)).collect(), + }, + aura: AuraConfig { authorities: Vec::new() }, + grandpa: GrandpaConfig { authorities: Vec::new() }, + sudo: SudoConfig { key: root_key }, + session: SessionConfig { + keys: initial_authorities + .iter() + .map(|x| (x.0.clone(), x.0.clone(), session_keys(x.1.clone(), x.2.clone()))) + .collect::>(), + }, + bridge_westend_grandpa: BridgeWestendGrandpaConfig { + // for our deployments to avoid multiple same-nonces transactions: + // //Alice is already used to initialize Rialto<->Millau bridge + // => let's use //George to initialize Westend->Millau bridge + owner: Some(get_account_id_from_seed::("George")), + ..Default::default() + }, + bridge_rialto_messages: BridgeRialtoMessagesConfig { + owner: Some(get_account_id_from_seed::("RialtoMessagesOwner")), + ..Default::default() + }, + } +} + +#[test] +fn derived_dave_account_is_as_expected() { + let dave = get_account_id_from_seed::("Dave"); + let derived: AccountId = + derive_account_from_rialto_id(bp_runtime::SourceAccount::Account(dave)); + assert_eq!(derived.to_string(), "5DNW6UVnb7TN6wX5KwXtDYR3Eccecbdzuw89HqjyNfkzce6J".to_string()); +} diff --git a/bin/millau/node/src/cli.rs b/bin/millau/node/src/cli.rs new file mode 100644 index 000000000000..086def633c59 --- /dev/null +++ b/bin/millau/node/src/cli.rs @@ -0,0 +1,70 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use sc_cli::RunCmd; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +pub struct Cli { + #[structopt(subcommand)] + pub subcommand: Option, + + #[structopt(flatten)] + pub run: RunCmd, +} + +/// Possible subcommands of the main binary. +#[derive(Debug, StructOpt)] +pub enum Subcommand { + /// Key management CLI utilities + Key(sc_cli::KeySubcommand), + + /// Verify a signature for a message, provided on `STDIN`, with a given (public or secret) key. + Verify(sc_cli::VerifyCmd), + + /// Generate a seed that provides a vanity address. + Vanity(sc_cli::VanityCmd), + + /// Sign a message, with a given (secret) key. + Sign(sc_cli::SignCmd), + + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), + + /// Validate blocks. + CheckBlock(sc_cli::CheckBlockCmd), + + /// Export blocks. + ExportBlocks(sc_cli::ExportBlocksCmd), + + /// Export the state of a given block into a chain spec. + ExportState(sc_cli::ExportStateCmd), + + /// Import blocks. + ImportBlocks(sc_cli::ImportBlocksCmd), + + /// Remove the whole chain. + PurgeChain(sc_cli::PurgeChainCmd), + + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + + /// Inspect blocks or extrinsics. + Inspect(node_inspect::cli::InspectCmd), + + /// Benchmark runtime pallets. + Benchmark(frame_benchmarking_cli::BenchmarkCmd), +} diff --git a/bin/millau/node/src/command.rs b/bin/millau/node/src/command.rs new file mode 100644 index 000000000000..4dbf9575dfec --- /dev/null +++ b/bin/millau/node/src/command.rs @@ -0,0 +1,153 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + cli::{Cli, Subcommand}, + service, + service::new_partial, +}; +use millau_runtime::{Block, RuntimeApi}; +use sc_cli::{ChainSpec, RuntimeVersion, SubstrateCli}; +use sc_service::PartialComponents; + +impl SubstrateCli for Cli { + fn impl_name() -> String { + "Millau Bridge Node".into() + } + + fn impl_version() -> String { + env!("CARGO_PKG_VERSION").into() + } + + fn description() -> String { + "Millau Bridge Node".into() + } + + fn author() -> String { + "Parity Technologies".into() + } + + fn support_url() -> String { + "https://github.com/paritytech/parity-bridges-common/".into() + } + + fn copyright_start_year() -> i32 { + 2019 + } + + fn executable_name() -> String { + "millau-bridge-node".into() + } + + fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { + &millau_runtime::VERSION + } + + fn load_spec(&self, id: &str) -> Result, String> { + Ok(Box::new( + match id { + "" | "dev" => crate::chain_spec::Alternative::Development, + "local" => crate::chain_spec::Alternative::LocalTestnet, + _ => return Err(format!("Unsupported chain specification: {}", id)), + } + .load(), + )) + } +} + +/// Parse and run command line arguments +pub fn run() -> sc_cli::Result<()> { + let cli = Cli::from_args(); + // make sure to set correct crypto version. + sp_core::crypto::set_default_ss58_version(sp_core::crypto::Ss58AddressFormat::custom( + millau_runtime::SS58Prefix::get() as u16, + )); + + match &cli.subcommand { + Some(Subcommand::Benchmark(cmd)) => + if cfg!(feature = "runtime-benchmarks") { + let runner = cli.create_runner(cmd)?; + + runner.sync_run(|config| cmd.run::(config)) + } else { + println!( + "Benchmarking wasn't enabled when building the node. \ + You can enable it with `--features runtime-benchmarks`." + ); + Ok(()) + }, + Some(Subcommand::Key(cmd)) => cmd.run(&cli), + Some(Subcommand::Sign(cmd)) => cmd.run(), + Some(Subcommand::Verify(cmd)) => cmd.run(), + Some(Subcommand::Vanity(cmd)) => cmd.run(), + Some(Subcommand::BuildSpec(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) + }, + Some(Subcommand::CheckBlock(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + let PartialComponents { client, task_manager, import_queue, .. } = + new_partial(&config)?; + Ok((cmd.run(client, import_queue), task_manager)) + }) + }, + Some(Subcommand::ExportBlocks(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + let PartialComponents { client, task_manager, .. } = new_partial(&config)?; + Ok((cmd.run(client, config.database), task_manager)) + }) + }, + Some(Subcommand::ExportState(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + let PartialComponents { client, task_manager, .. } = new_partial(&config)?; + Ok((cmd.run(client, config.chain_spec), task_manager)) + }) + }, + Some(Subcommand::ImportBlocks(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + let PartialComponents { client, task_manager, import_queue, .. } = + new_partial(&config)?; + Ok((cmd.run(client, import_queue), task_manager)) + }) + }, + Some(Subcommand::PurgeChain(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.database)) + }, + Some(Subcommand::Revert(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + let PartialComponents { client, task_manager, backend, .. } = new_partial(&config)?; + Ok((cmd.run(client, backend), task_manager)) + }) + }, + Some(Subcommand::Inspect(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner + .sync_run(|config| cmd.run::(config)) + }, + None => { + let runner = cli.create_runner(&cli.run)?; + runner.run_node_until_exit(|config| async move { + service::new_full(config).map_err(sc_cli::Error::Service) + }) + }, + } +} diff --git a/bridges/bin/millau/node/src/lib.rs b/bin/millau/node/src/lib.rs similarity index 100% rename from bridges/bin/millau/node/src/lib.rs rename to bin/millau/node/src/lib.rs diff --git a/bridges/bin/millau/node/src/main.rs b/bin/millau/node/src/main.rs similarity index 100% rename from bridges/bin/millau/node/src/main.rs rename to bin/millau/node/src/main.rs diff --git a/bin/millau/node/src/service.rs b/bin/millau/node/src/service.rs new file mode 100644 index 000000000000..4085982494b8 --- /dev/null +++ b/bin/millau/node/src/service.rs @@ -0,0 +1,397 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Service and ServiceFactory implementation. Specialized wrapper over substrate service. + +// ===================================================================================== +// ===================================================================================== +// ===================================================================================== +// UPDATE GUIDE: +// 1) replace everything with node-template/src/service.rs contents (found in main Substrate repo); +// 2) the only thing to keep from old code, is `rpc_extensions_builder` - we use our own custom +// RPCs; 3) fix compilation errors; +// 4) test :) +// ===================================================================================== +// ===================================================================================== +// ===================================================================================== + +use millau_runtime::{self, opaque::Block, RuntimeApi}; +use sc_client_api::ExecutorProvider; +use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams}; +pub use sc_executor::NativeElseWasmExecutor; +use sc_finality_grandpa::SharedVoterState; +use sc_keystore::LocalKeystore; +use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; +use sc_telemetry::{Telemetry, TelemetryWorker}; +use sp_consensus::SlotData; +use sp_consensus_aura::sr25519::AuthorityPair as AuraPair; +use std::{sync::Arc, time::Duration}; + +// Our native executor instance. +pub struct ExecutorDispatch; + +impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option> { + millau_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + millau_runtime::native_version() + } +} + +type FullClient = + sc_service::TFullClient>; +type FullBackend = sc_service::TFullBackend; +type FullSelectChain = sc_consensus::LongestChain; + +pub fn new_partial( + config: &Configuration, +) -> Result< + sc_service::PartialComponents< + FullClient, + FullBackend, + FullSelectChain, + sc_consensus::DefaultImportQueue, + sc_transaction_pool::FullPool, + ( + sc_finality_grandpa::GrandpaBlockImport< + FullBackend, + Block, + FullClient, + FullSelectChain, + >, + sc_finality_grandpa::LinkHalf, + Option, + ), + >, + ServiceError, +> { + if config.keystore_remote.is_some() { + return Err(ServiceError::Other(format!("Remote Keystores are not supported."))) + } + + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let executor = NativeElseWasmExecutor::::new( + config.wasm_method, + config.default_heap_pages, + config.max_runtime_instances, + ); + + let (client, backend, keystore_container, task_manager) = + sc_service::new_full_parts::( + &config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + )?; + let client = Arc::new(client); + + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager.spawn_handle().spawn("telemetry", None, worker.run()); + telemetry + }); + + let select_chain = sc_consensus::LongestChain::new(backend.clone()); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.role.is_authority().into(), + config.prometheus_registry(), + task_manager.spawn_essential_handle(), + client.clone(), + ); + + let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( + client.clone(), + &(client.clone() as Arc<_>), + select_chain.clone(), + telemetry.as_ref().map(|x| x.handle()), + )?; + + let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); + + let import_queue = + sc_consensus_aura::import_queue::(ImportQueueParams { + block_import: grandpa_block_import.clone(), + justification_import: Some(Box::new(grandpa_block_import.clone())), + client: client.clone(), + create_inherent_data_providers: move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot)) + }, + spawner: &task_manager.spawn_essential_handle(), + can_author_with: sp_consensus::CanAuthorWithNativeVersion::new( + client.executor().clone(), + ), + registry: config.prometheus_registry(), + check_for_equivocation: Default::default(), + telemetry: telemetry.as_ref().map(|x| x.handle()), + })?; + + Ok(sc_service::PartialComponents { + client, + backend, + task_manager, + import_queue, + keystore_container, + select_chain, + transaction_pool, + other: (grandpa_block_import, grandpa_link, telemetry), + }) +} + +fn remote_keystore(_url: &String) -> Result, &'static str> { + // FIXME: here would the concrete keystore be built, + // must return a concrete type (NOT `LocalKeystore`) that + // implements `CryptoStore` and `SyncCryptoStore` + Err("Remote Keystore not supported.") +} + +/// Builds a new service for a full client. +pub fn new_full(mut config: Configuration) -> Result { + let sc_service::PartialComponents { + client, + backend, + mut task_manager, + import_queue, + mut keystore_container, + select_chain, + transaction_pool, + other: (block_import, grandpa_link, mut telemetry), + } = new_partial(&config)?; + + if let Some(url) = &config.keystore_remote { + match remote_keystore(url) { + Ok(k) => keystore_container.set_remote_keystore(k), + Err(e) => + return Err(ServiceError::Other(format!( + "Error hooking up remote keystore for {}: {}", + url, e + ))), + }; + } + + config.network.extra_sets.push(sc_finality_grandpa::grandpa_peers_set_config()); + let warp_sync = Arc::new(sc_finality_grandpa::warp_proof::NetworkProvider::new( + backend.clone(), + grandpa_link.shared_authority_set().clone(), + Vec::default(), + )); + + let (network, system_rpc_tx, network_starter) = + sc_service::build_network(sc_service::BuildNetworkParams { + config: &config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue, + block_announce_validator_builder: None, + warp_sync: Some(warp_sync), + })?; + + if config.offchain_worker.enabled { + sc_service::build_offchain_workers( + &config, + task_manager.spawn_handle(), + client.clone(), + network.clone(), + ); + } + + let role = config.role.clone(); + let force_authoring = config.force_authoring; + let backoff_authoring_blocks: Option<()> = None; + let name = config.network.node_name.clone(); + let enable_grandpa = !config.disable_grandpa; + let prometheus_registry = config.prometheus_registry().cloned(); + let shared_voter_state = SharedVoterState::empty(); + + let rpc_extensions_builder = { + use sc_finality_grandpa::FinalityProofProvider as GrandpaFinalityProofProvider; + + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + use sc_finality_grandpa_rpc::{GrandpaApi, GrandpaRpcHandler}; + use sc_rpc::DenyUnsafe; + use substrate_frame_rpc_system::{FullSystem, SystemApi}; + + let backend = backend.clone(); + let client = client.clone(); + let pool = transaction_pool.clone(); + + let justification_stream = grandpa_link.justification_stream(); + let shared_authority_set = grandpa_link.shared_authority_set().clone(); + let shared_voter_state = shared_voter_state.clone(); + + let finality_proof_provider = GrandpaFinalityProofProvider::new_for_service( + backend, + Some(shared_authority_set.clone()), + ); + + Box::new(move |_, subscription_executor| { + let mut io = jsonrpc_core::IoHandler::default(); + io.extend_with(SystemApi::to_delegate(FullSystem::new( + client.clone(), + pool.clone(), + DenyUnsafe::No, + ))); + io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new( + client.clone(), + ))); + io.extend_with(GrandpaApi::to_delegate(GrandpaRpcHandler::new( + shared_authority_set.clone(), + shared_voter_state.clone(), + justification_stream.clone(), + subscription_executor, + finality_proof_provider.clone(), + ))); + Ok(io) + }) + }; + + let _rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { + network: network.clone(), + client: client.clone(), + keystore: keystore_container.sync_keystore(), + task_manager: &mut task_manager, + transaction_pool: transaction_pool.clone(), + rpc_extensions_builder, + backend, + system_rpc_tx, + config, + telemetry: telemetry.as_mut(), + })?; + + if role.is_authority() { + let proposer_factory = sc_basic_authorship::ProposerFactory::new( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry.as_ref(), + telemetry.as_ref().map(|x| x.handle()), + ); + + let can_author_with = + sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); + + let slot_duration = sc_consensus_aura::slot_duration(&*client)?; + let raw_slot_duration = slot_duration.slot_duration(); + + let aura = sc_consensus_aura::start_aura::( + StartAuraParams { + slot_duration, + client: client.clone(), + select_chain, + block_import, + proposer_factory, + create_inherent_data_providers: move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + raw_slot_duration, + ); + + Ok((timestamp, slot)) + }, + force_authoring, + backoff_authoring_blocks, + keystore: keystore_container.sync_keystore(), + can_author_with, + sync_oracle: network.clone(), + justification_sync_link: network.clone(), + block_proposal_slot_portion: SlotProportion::new(2f32 / 3f32), + max_block_proposal_slot_portion: None, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }, + )?; + + // the AURA authoring task is considered essential, i.e. if it + // fails we take down the service with it. + task_manager + .spawn_essential_handle() + .spawn_blocking("aura", Some("block-authoring"), aura); + } + + // if the node isn't actively participating in consensus then it doesn't + // need a keystore, regardless of which protocol we use below. + let keystore = + if role.is_authority() { Some(keystore_container.sync_keystore()) } else { None }; + + let grandpa_config = sc_finality_grandpa::Config { + // FIXME #1578 make this available through chainspec + gossip_duration: Duration::from_millis(333), + justification_period: 512, + name: Some(name), + observer_enabled: false, + keystore, + local_role: role, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; + + if enable_grandpa { + // start the full GRANDPA voter + // NOTE: non-authorities could run the GRANDPA observer protocol, but at + // this point the full voter should provide better guarantees of block + // and vote data availability than the observer. The observer has not + // been tested extensively yet and having most nodes in a network run it + // could lead to finality stalls. + let grandpa_config = sc_finality_grandpa::GrandpaParams { + config: grandpa_config, + link: grandpa_link, + network, + voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(), + prometheus_registry, + shared_voter_state, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; + + // the GRANDPA voter task is considered infallible, i.e. + // if it fails we take down the service with it. + task_manager.spawn_essential_handle().spawn_blocking( + "grandpa-voter", + None, + sc_finality_grandpa::run_grandpa_voter(grandpa_config)?, + ); + } + + network_starter.start_network(); + Ok(task_manager) +} diff --git a/bin/millau/runtime/Cargo.toml b/bin/millau/runtime/Cargo.toml new file mode 100644 index 000000000000..c8d7f0a15958 --- /dev/null +++ b/bin/millau/runtime/Cargo.toml @@ -0,0 +1,114 @@ +[package] +name = "millau-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +hex-literal = "0.3" +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true, features = ["derive"] } + +# Bridge dependencies + +bp-header-chain = { path = "../../../primitives/header-chain", default-features = false } +bp-messages = { path = "../../../primitives/messages", default-features = false } +bp-millau = { path = "../../../primitives/chain-millau", default-features = false } +bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false } +bp-runtime = { path = "../../../primitives/runtime", default-features = false } +bp-westend = { path = "../../../primitives/chain-westend", default-features = false } +bridge-runtime-common = { path = "../../runtime-common", default-features = false } +pallet-bridge-dispatch = { path = "../../../modules/dispatch", default-features = false } +pallet-bridge-grandpa = { path = "../../../modules/grandpa", default-features = false } +pallet-bridge-messages = { path = "../../../modules/messages", default-features = false } +pallet-bridge-token-swap = { path = "../../../modules/token-swap", default-features = false } +pallet-shift-session-manager = { path = "../../../modules/shift-session-manager", default-features = false } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "bp-header-chain/std", + "bp-messages/std", + "bp-millau/std", + "bp-rialto/std", + "bp-runtime/std", + "bp-westend/std", + "bridge-runtime-common/std", + "codec/std", + "frame-executive/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "pallet-aura/std", + "pallet-balances/std", + "pallet-bridge-dispatch/std", + "pallet-bridge-grandpa/std", + "pallet-bridge-messages/std", + "pallet-bridge-token-swap/std", + "pallet-grandpa/std", + "pallet-randomness-collective-flip/std", + "pallet-session/std", + "pallet-shift-session-manager/std", + "pallet-sudo/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "scale-info/std", + "serde", + "sp-api/std", + "sp-block-builder/std", + "sp-consensus-aura/std", + "sp-core/std", + "sp-finality-grandpa/std", + "sp-inherents/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-trie/std", + "sp-version/std", +] +runtime-benchmarks = [ + "frame-benchmarking", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "pallet-bridge-token-swap/runtime-benchmarks", +] diff --git a/bridges/bin/millau/runtime/build.rs b/bin/millau/runtime/build.rs similarity index 100% rename from bridges/bin/millau/runtime/build.rs rename to bin/millau/runtime/build.rs diff --git a/bin/millau/runtime/src/lib.rs b/bin/millau/runtime/src/lib.rs new file mode 100644 index 000000000000..b713211b1e48 --- /dev/null +++ b/bin/millau/runtime/src/lib.rs @@ -0,0 +1,847 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! The Millau runtime. This can be compiled with `#[no_std]`, ready for Wasm. + +#![cfg_attr(not(feature = "std"), no_std)] +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit = "256"] +// Runtime-generated enums +#![allow(clippy::large_enum_variant)] +// Runtime-generated DecodeLimit::decode_all_With_depth_limit +#![allow(clippy::unnecessary_mut_passed)] +// From construct_runtime macro +#![allow(clippy::from_over_into)] + +// Make the WASM binary available. +#[cfg(feature = "std")] +include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); + +pub mod rialto_messages; + +use crate::rialto_messages::{ToRialtoMessagePayload, WithRialtoMessageBridge}; + +use bridge_runtime_common::messages::{ + source::estimate_message_dispatch_and_delivery_fee, MessageBridge, +}; +use pallet_grandpa::{ + fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList, +}; +use pallet_transaction_payment::{FeeDetails, Multiplier, RuntimeDispatchInfo}; +use sp_api::impl_runtime_apis; +use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; +use sp_runtime::{ + create_runtime_str, generic, impl_opaque_keys, + traits::{Block as BlockT, IdentityLookup, NumberFor, OpaqueKeys}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, FixedPointNumber, MultiSignature, MultiSigner, Perquintill, +}; +use sp_std::prelude::*; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; + +// A few exports that help ease life for downstream crates. +pub use frame_support::{ + construct_runtime, parameter_types, + traits::{Currency, ExistenceRequirement, Imbalance, KeyOwnerProofSystem}, + weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, RuntimeDbWeight, Weight}, + StorageValue, +}; + +pub use frame_system::Call as SystemCall; +pub use pallet_balances::Call as BalancesCall; +pub use pallet_bridge_grandpa::Call as BridgeGrandpaCall; +pub use pallet_bridge_messages::Call as MessagesCall; +pub use pallet_sudo::Call as SudoCall; +pub use pallet_timestamp::Call as TimestampCall; + +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; +pub use sp_runtime::{Perbill, Permill}; + +/// An index to a block. +pub type BlockNumber = bp_millau::BlockNumber; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = bp_millau::Signature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = bp_millau::AccountId; + +/// The type for looking up accounts. We don't expect more than 4 billion of them, but you +/// never know... +pub type AccountIndex = u32; + +/// Balance of an account. +pub type Balance = bp_millau::Balance; + +/// Index of a transaction in the chain. +pub type Index = bp_millau::Index; + +/// A hash of some data used by the chain. +pub type Hash = bp_millau::Hash; + +/// Hashing algorithm used by the chain. +pub type Hashing = bp_millau::Hasher; + +/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know +/// the specifics of the runtime. They can then be made to be agnostic over specific formats +/// of data like extrinsics, allowing for them to continue syncing the network through upgrades +/// to even the core data structures. +pub mod opaque { + use super::*; + + pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic; + + /// Opaque block header type. + pub type Header = generic::Header; + /// Opaque block type. + pub type Block = generic::Block; + /// Opaque block identifier type. + pub type BlockId = generic::BlockId; +} + +impl_opaque_keys! { + pub struct SessionKeys { + pub aura: Aura, + pub grandpa: Grandpa, + } +} + +/// This runtime version. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("millau-runtime"), + impl_name: create_runtime_str!("millau-runtime"), + authoring_version: 1, + spec_version: 1, + impl_version: 1, + apis: RUNTIME_API_VERSIONS, + transaction_version: 1, +}; + +/// The version information used to identify this runtime when compiled natively. +#[cfg(feature = "std")] +pub fn native_version() -> NativeVersion { + NativeVersion { runtime_version: VERSION, can_author_with: Default::default() } +} + +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const Version: RuntimeVersion = VERSION; + pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 60_000_000, // ~0.06 ms = ~60 µs + write: 200_000_000, // ~0.2 ms = 200 µs + }; + pub const SS58Prefix: u8 = 60; +} + +impl frame_system::Config for Runtime { + /// The basic call filter to use in dispatchable. + type BaseCallFilter = frame_support::traits::Everything; + /// The identifier used to distinguish between accounts. + type AccountId = AccountId; + /// The aggregated dispatch type that is available for extrinsics. + type Call = Call; + /// The lookup mechanism to get account ID from whatever is passed in dispatchers. + type Lookup = IdentityLookup; + /// The index type for storing how many extrinsics an account has signed. + type Index = Index; + /// The index type for blocks. + type BlockNumber = BlockNumber; + /// The type for hashing blocks and tries. + type Hash = Hash; + /// The hashing algorithm used. + type Hashing = Hashing; + /// The header type. + type Header = generic::Header; + /// The ubiquitous event type. + type Event = Event; + /// The ubiquitous origin type. + type Origin = Origin; + /// Maximum number of block number to block hash mappings to keep (oldest pruned first). + type BlockHashCount = BlockHashCount; + /// Version of the runtime. + type Version = Version; + /// Provides information about the pallet setup in the runtime. + type PalletInfo = PalletInfo; + /// What to do if a new account is created. + type OnNewAccount = (); + /// What to do if an account is fully reaped from the system. + type OnKilledAccount = (); + /// The data to be stored in an account. + type AccountData = pallet_balances::AccountData; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + /// Weight information for the extrinsics of this pallet. + type SystemWeightInfo = (); + /// Block and extrinsics weights: base values and limits. + type BlockWeights = bp_millau::BlockWeights; + /// The maximum length of a block (in bytes). + type BlockLength = bp_millau::BlockLength; + /// The weight of database operations that the runtime can invoke. + type DbWeight = DbWeight; + /// The designated SS58 prefix of this chain. + type SS58Prefix = SS58Prefix; + /// The set code logic, just the default since we're not a parachain. + type OnSetCode = (); +} + +impl pallet_randomness_collective_flip::Config for Runtime {} + +parameter_types! { + pub const MaxAuthorities: u32 = 10; +} + +impl pallet_aura::Config for Runtime { + type AuthorityId = AuraId; + type MaxAuthorities = MaxAuthorities; + type DisabledValidators = (); +} +impl pallet_bridge_dispatch::Config for Runtime { + type Event = Event; + type BridgeMessageId = (bp_messages::LaneId, bp_messages::MessageNonce); + type Call = Call; + type CallFilter = frame_support::traits::Everything; + type EncodedCall = crate::rialto_messages::FromRialtoEncodedCall; + type SourceChainAccountId = bp_rialto::AccountId; + type TargetChainAccountPublic = MultiSigner; + type TargetChainSignature = MultiSignature; + type AccountIdConverter = bp_millau::AccountIdConverter; +} + +impl pallet_grandpa::Config for Runtime { + type Event = Event; + type Call = Call; + type KeyOwnerProofSystem = (); + type KeyOwnerProof = + >::Proof; + type KeyOwnerIdentification = >::IdentificationTuple; + type HandleEquivocation = (); + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; +} + +parameter_types! { + pub const MinimumPeriod: u64 = bp_millau::SLOT_DURATION / 2; +} + +impl pallet_timestamp::Config for Runtime { + /// A timestamp: milliseconds since the UNIX epoch. + type Moment = u64; + type OnTimestampSet = Aura; + type MinimumPeriod = MinimumPeriod; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); +} + +parameter_types! { + pub const ExistentialDeposit: bp_millau::Balance = 500; + // For weight estimation, we assume that the most locks on an individual account will be 50. + // This number may need to be adjusted in the future if this assumption no longer holds true. + pub const MaxLocks: u32 = 50; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for Runtime { + /// The type for recording an account's balance. + type Balance = Balance; + /// The ubiquitous event type. + type Event = Event; + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); + type MaxLocks = MaxLocks; + type MaxReserves = MaxReserves; + type ReserveIdentifier = [u8; 8]; +} + +parameter_types! { + pub const TransactionBaseFee: Balance = 0; + pub const TransactionByteFee: Balance = 1; + pub const OperationalFeeMultiplier: u8 = 5; + // values for following parameters are copied from polkadot repo, but it is fine + // not to sync them - we're not going to make Rialto a full copy of one of Polkadot-like chains + pub const TargetBlockFullness: Perquintill = Perquintill::from_percent(25); + pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000); + pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128); +} + +impl pallet_transaction_payment::Config for Runtime { + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; + type WeightToFee = bp_millau::WeightToFee; + type FeeMultiplierUpdate = pallet_transaction_payment::TargetedFeeAdjustment< + Runtime, + TargetBlockFullness, + AdjustmentVariable, + MinimumMultiplier, + >; +} + +impl pallet_sudo::Config for Runtime { + type Event = Event; + type Call = Call; +} + +parameter_types! { + /// Authorities are changing every 5 minutes. + pub const Period: BlockNumber = bp_millau::SESSION_LENGTH; + pub const Offset: BlockNumber = 0; +} + +impl pallet_session::Config for Runtime { + type Event = Event; + type ValidatorId = ::AccountId; + type ValidatorIdOf = (); + type ShouldEndSession = pallet_session::PeriodicSessions; + type NextSessionRotation = pallet_session::PeriodicSessions; + type SessionManager = pallet_shift_session_manager::Pallet; + type SessionHandler = ::KeyTypeIdProviders; + type Keys = SessionKeys; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); +} + +parameter_types! { + // This is a pretty unscientific cap. + // + // Note that once this is hit the pallet will essentially throttle incoming requests down to one + // call per block. + pub const MaxRequests: u32 = 50; + + // Number of headers to keep. + // + // Assuming the worst case of every header being finalized, we will keep headers for at least a + // week. + pub const HeadersToKeep: u32 = 7 * bp_millau::DAYS as u32; +} + +pub type RialtoGrandpaInstance = (); +impl pallet_bridge_grandpa::Config for Runtime { + type BridgedChain = bp_rialto::Rialto; + type MaxRequests = MaxRequests; + type HeadersToKeep = HeadersToKeep; + + // TODO [#391]: Use weights generated for the Millau runtime instead of Rialto ones. + type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; +} + +pub type WestendGrandpaInstance = pallet_bridge_grandpa::Instance1; +impl pallet_bridge_grandpa::Config for Runtime { + type BridgedChain = bp_westend::Westend; + type MaxRequests = MaxRequests; + type HeadersToKeep = HeadersToKeep; + + // TODO [#391]: Use weights generated for the Millau runtime instead of Rialto ones. + type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; +} + +impl pallet_shift_session_manager::Config for Runtime {} + +parameter_types! { + pub const MaxMessagesToPruneAtOnce: bp_messages::MessageNonce = 8; + pub const MaxUnrewardedRelayerEntriesAtInboundLane: bp_messages::MessageNonce = + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE; + pub const MaxUnconfirmedMessagesAtInboundLane: bp_messages::MessageNonce = + bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE; + // `IdentityFee` is used by Millau => we may use weight directly + pub const GetDeliveryConfirmationTransactionFee: Balance = + bp_millau::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT as _; + pub const RootAccountForPayments: Option = None; + pub const RialtoChainId: bp_runtime::ChainId = bp_runtime::RIALTO_CHAIN_ID; +} + +/// Instance of the messages pallet used to relay messages to/from Rialto chain. +pub type WithRialtoMessagesInstance = (); + +impl pallet_bridge_messages::Config for Runtime { + type Event = Event; + // TODO: https://github.com/paritytech/parity-bridges-common/issues/390 + type WeightInfo = pallet_bridge_messages::weights::RialtoWeight; + type Parameter = rialto_messages::MillauToRialtoMessagesParameter; + type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; + type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; + type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; + + type OutboundPayload = crate::rialto_messages::ToRialtoMessagePayload; + type OutboundMessageFee = Balance; + + type InboundPayload = crate::rialto_messages::FromRialtoMessagePayload; + type InboundMessageFee = bp_rialto::Balance; + type InboundRelayer = bp_rialto::AccountId; + + type AccountIdConverter = bp_millau::AccountIdConverter; + + type TargetHeaderChain = crate::rialto_messages::Rialto; + type LaneMessageVerifier = crate::rialto_messages::ToRialtoMessageVerifier; + type MessageDeliveryAndDispatchPayment = + pallet_bridge_messages::instant_payments::InstantCurrencyPayments< + Runtime, + (), + pallet_balances::Pallet, + GetDeliveryConfirmationTransactionFee, + RootAccountForPayments, + >; + type OnMessageAccepted = (); + type OnDeliveryConfirmed = + pallet_bridge_token_swap::Pallet; + + type SourceHeaderChain = crate::rialto_messages::Rialto; + type MessageDispatch = crate::rialto_messages::FromRialtoMessageDispatch; + type BridgedChainId = RialtoChainId; +} + +parameter_types! { + pub const TokenSwapMessagesLane: bp_messages::LaneId = *b"swap"; +} + +/// Instance of the with-Rialto token swap pallet. +pub type WithRialtoTokenSwapInstance = (); + +impl pallet_bridge_token_swap::Config for Runtime { + type Event = Event; + type WeightInfo = (); + + type BridgedChainId = RialtoChainId; + type OutboundMessageLaneId = TokenSwapMessagesLane; + #[cfg(not(feature = "runtime-benchmarks"))] + type MessagesBridge = pallet_bridge_messages::Pallet; + #[cfg(feature = "runtime-benchmarks")] + type MessagesBridge = bp_messages::source_chain::NoopMessagesBridge; + type ThisCurrency = pallet_balances::Pallet; + type FromSwapToThisAccountIdConverter = bp_rialto::AccountIdConverter; + + type BridgedChain = bp_rialto::Rialto; + type FromBridgedToThisAccountIdConverter = bp_millau::AccountIdConverter; +} + +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = opaque::Block, + UncheckedExtrinsic = UncheckedExtrinsic + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, + + // Must be before session. + Aura: pallet_aura::{Pallet, Config}, + + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + + // Consensus support. + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + ShiftSessionManager: pallet_shift_session_manager::{Pallet}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + + // Rialto bridge modules. + BridgeRialtoGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage}, + BridgeDispatch: pallet_bridge_dispatch::{Pallet, Event}, + BridgeRialtoMessages: pallet_bridge_messages::{Pallet, Call, Storage, Event, Config}, + BridgeRialtoTokenSwap: pallet_bridge_token_swap::{Pallet, Call, Storage, Event}, + + // Westend bridge modules. + BridgeWestendGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Config, Storage}, + } +); + +/// The address format for describing accounts. +pub type Address = AccountId; +/// Block header type as expected by this runtime. +pub type Header = generic::Header; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckSpecVersion, + frame_system::CheckTxVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_transaction_payment::ChargeTransactionPayment, +); +/// The payload being signed in transactions. +pub type SignedPayload = generic::SignedPayload; +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = frame_executive::Executive< + Runtime, + Block, + frame_system::ChainContext, + Runtime, + AllPallets, +>; + +impl_runtime_apis! { + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn execute_block(block: Block) { + Executive::execute_block(block); + } + + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) + } + } + + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + OpaqueMetadata::new(Runtime::metadata().into()) + } + } + + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalize_block() -> ::Header { + Executive::finalize_block() + } + + fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } + + fn check_inherents( + block: Block, + data: sp_inherents::InherentData, + ) -> sp_inherents::CheckInherentsResult { + data.check_extrinsics(&block) + } + } + + impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { + fn account_nonce(account: AccountId) -> Index { + System::account_nonce(account) + } + } + + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction( + source: TransactionSource, + tx: ::Extrinsic, + block_hash: ::Hash, + ) -> TransactionValidity { + Executive::validate_transaction(source, tx, block_hash) + } + } + + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } + } + + impl sp_consensus_aura::AuraApi for Runtime { + fn slot_duration() -> sp_consensus_aura::SlotDuration { + sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + } + + fn authorities() -> Vec { + Aura::authorities().to_vec() + } + } + + impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< + Block, + Balance, + > for Runtime { + fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { + TransactionPayment::query_info(uxt, len) + } + fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { + TransactionPayment::query_fee_details(uxt, len) + } + } + + impl sp_session::SessionKeys for Runtime { + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + + fn decode_session_keys( + encoded: Vec, + ) -> Option, sp_core::crypto::KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + } + + impl fg_primitives::GrandpaApi for Runtime { + fn current_set_id() -> fg_primitives::SetId { + Grandpa::current_set_id() + } + + fn grandpa_authorities() -> GrandpaAuthorityList { + Grandpa::grandpa_authorities() + } + + fn submit_report_equivocation_unsigned_extrinsic( + equivocation_proof: fg_primitives::EquivocationProof< + ::Hash, + NumberFor, + >, + key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, + ) -> Option<()> { + let key_owner_proof = key_owner_proof.decode()?; + + Grandpa::submit_unsigned_equivocation_report( + equivocation_proof, + key_owner_proof, + ) + } + + fn generate_key_ownership_proof( + _set_id: fg_primitives::SetId, + _authority_id: GrandpaId, + ) -> Option { + // NOTE: this is the only implementation possible since we've + // defined our key owner proof type as a bottom type (i.e. a type + // with no values). + None + } + } + + impl bp_rialto::RialtoFinalityApi for Runtime { + fn best_finalized() -> (bp_rialto::BlockNumber, bp_rialto::Hash) { + let header = BridgeRialtoGrandpa::best_finalized(); + (header.number, header.hash()) + } + + fn is_known_header(hash: bp_rialto::Hash) -> bool { + BridgeRialtoGrandpa::is_known_header(hash) + } + } + + impl bp_westend::WestendFinalityApi for Runtime { + fn best_finalized() -> (bp_westend::BlockNumber, bp_westend::Hash) { + let header = BridgeWestendGrandpa::best_finalized(); + (header.number, header.hash()) + } + + fn is_known_header(hash: bp_westend::Hash) -> bool { + BridgeWestendGrandpa::is_known_header(hash) + } + } + + impl bp_rialto::ToRialtoOutboundLaneApi for Runtime { + fn estimate_message_delivery_and_dispatch_fee( + _lane_id: bp_messages::LaneId, + payload: ToRialtoMessagePayload, + ) -> Option { + estimate_message_dispatch_and_delivery_fee::( + &payload, + WithRialtoMessageBridge::RELAYER_FEE_PERCENT, + ).ok() + } + + fn message_details( + lane: bp_messages::LaneId, + begin: bp_messages::MessageNonce, + end: bp_messages::MessageNonce, + ) -> Vec> { + bridge_runtime_common::messages_api::outbound_message_details::< + Runtime, + WithRialtoMessagesInstance, + WithRialtoMessageBridge, + >(lane, begin, end) + } + + fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeRialtoMessages::outbound_latest_received_nonce(lane) + } + + fn latest_generated_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeRialtoMessages::outbound_latest_generated_nonce(lane) + } + } + + impl bp_rialto::FromRialtoInboundLaneApi for Runtime { + fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeRialtoMessages::inbound_latest_received_nonce(lane) + } + + fn latest_confirmed_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeRialtoMessages::inbound_latest_confirmed_nonce(lane) + } + + fn unrewarded_relayers_state(lane: bp_messages::LaneId) -> bp_messages::UnrewardedRelayersState { + BridgeRialtoMessages::inbound_unrewarded_relayers_state(lane) + } + } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + + let mut list = Vec::::new(); + + list_benchmark!(list, extra, pallet_bridge_token_swap, BridgeRialtoTokenSwap); + + let storage_info = AllPalletsWithSystem::storage_info(); + + return (list, storage_info) + } + + fn dispatch_benchmark( + config: frame_benchmarking::BenchmarkConfig, + ) -> Result, sp_runtime::RuntimeString> { + use frame_benchmarking::{Benchmarking, BenchmarkBatch, TrackedStorageKey, add_benchmark}; + + let whitelist: Vec = vec![ + // Block Number + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), + // Execution Phase + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), + // Event Count + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), + // System Events + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), + // Caller 0 Account + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da946c154ffd9992e395af90b5b13cc6f295c77033fce8a9045824a6690bbf99c6db269502f0a8d1d2a008542d5690a0749").to_vec().into(), + ]; + + let mut batches = Vec::::new(); + let params = (&config, &whitelist); + + use pallet_bridge_token_swap::benchmarking::Config as TokenSwapConfig; + + impl TokenSwapConfig for Runtime { + fn initialize_environment() { + let relayers_fund_account = pallet_bridge_messages::relayer_fund_account_id::< + bp_millau::AccountId, + bp_millau::AccountIdConverter, + >(); + pallet_balances::Pallet::::make_free_balance_be( + &relayers_fund_account, + Balance::MAX / 100, + ); + } + } + + add_benchmark!(params, batches, pallet_bridge_token_swap, BridgeRialtoTokenSwap); + + if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } + Ok(batches) + } + } +} + +/// Rialto account ownership digest from Millau. +/// +/// The byte vector returned by this function should be signed with a Rialto account private key. +/// This way, the owner of `millau_account_id` on Millau proves that the Rialto account private key +/// is also under his control. +pub fn millau_to_rialto_account_ownership_digest( + rialto_call: &Call, + millau_account_id: AccountId, + rialto_spec_version: SpecVersion, +) -> sp_std::vec::Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + rialto_call, + millau_account_id, + rialto_spec_version, + bp_runtime::MILLAU_CHAIN_ID, + bp_runtime::RIALTO_CHAIN_ID, + ) +} + +#[cfg(test)] +mod tests { + use super::*; + use bridge_runtime_common::messages; + + #[test] + fn ensure_millau_message_lane_weights_are_correct() { + // TODO: https://github.com/paritytech/parity-bridges-common/issues/390 + type Weights = pallet_bridge_messages::weights::RialtoWeight; + + pallet_bridge_messages::ensure_weights_are_correct::( + bp_millau::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT, + bp_millau::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT, + bp_millau::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, + bp_millau::PAY_INBOUND_DISPATCH_FEE_WEIGHT, + DbWeight::get(), + ); + + let max_incoming_message_proof_size = bp_rialto::EXTRA_STORAGE_PROOF_SIZE.saturating_add( + messages::target::maximal_incoming_message_size(bp_millau::max_extrinsic_size()), + ); + pallet_bridge_messages::ensure_able_to_receive_message::( + bp_millau::max_extrinsic_size(), + bp_millau::max_extrinsic_weight(), + max_incoming_message_proof_size, + messages::target::maximal_incoming_message_dispatch_weight( + bp_millau::max_extrinsic_weight(), + ), + ); + + let max_incoming_inbound_lane_data_proof_size = + bp_messages::InboundLaneData::<()>::encoded_size_hint( + bp_millau::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE as _, + bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE as _, + ) + .unwrap_or(u32::MAX); + pallet_bridge_messages::ensure_able_to_receive_confirmation::( + bp_millau::max_extrinsic_size(), + bp_millau::max_extrinsic_weight(), + max_incoming_inbound_lane_data_proof_size, + bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + DbWeight::get(), + ); + } + + #[test] + fn call_size() { + const MAX_CALL_SIZE: usize = 230; // value from polkadot-runtime tests + assert!(core::mem::size_of::() <= MAX_CALL_SIZE); + } +} diff --git a/bridges/bin/millau/runtime/src/rialto_messages.rs b/bin/millau/runtime/src/rialto_messages.rs similarity index 77% rename from bridges/bin/millau/runtime/src/rialto_messages.rs rename to bin/millau/runtime/src/rialto_messages.rs index 12af2c328521..6d9677c45cf9 100644 --- a/bridges/bin/millau/runtime/src/rialto_messages.rs +++ b/bin/millau/runtime/src/rialto_messages.rs @@ -31,25 +31,34 @@ use frame_support::{ weights::{DispatchClass, Weight}, RuntimeDebug, }; -use sp_runtime::{traits::Zero, FixedPointNumber, FixedU128}; +use scale_info::TypeInfo; +use sp_runtime::{traits::Saturating, FixedPointNumber, FixedU128}; use sp_std::{convert::TryFrom, ops::RangeInclusive}; /// Initial value of `RialtoToMillauConversionRate` parameter. -pub const INITIAL_RIALTO_TO_MILLAU_CONVERSION_RATE: FixedU128 = FixedU128::from_inner(FixedU128::DIV); +pub const INITIAL_RIALTO_TO_MILLAU_CONVERSION_RATE: FixedU128 = + FixedU128::from_inner(FixedU128::DIV); +/// Initial value of `RialtoFeeMultiplier` parameter. +pub const INITIAL_RIALTO_FEE_MULTIPLIER: FixedU128 = FixedU128::from_inner(FixedU128::DIV); parameter_types! { /// Rialto to Millau conversion rate. Initially we treat both tokens as equal. pub storage RialtoToMillauConversionRate: FixedU128 = INITIAL_RIALTO_TO_MILLAU_CONVERSION_RATE; + /// Fee multiplier value at Rialto chain. + pub storage RialtoFeeMultiplier: FixedU128 = INITIAL_RIALTO_FEE_MULTIPLIER; } /// Message payload for Millau -> Rialto messages. -pub type ToRialtoMessagePayload = messages::source::FromThisChainMessagePayload; +pub type ToRialtoMessagePayload = + messages::source::FromThisChainMessagePayload; /// Message verifier for Millau -> Rialto messages. -pub type ToRialtoMessageVerifier = messages::source::FromThisChainMessageVerifier; +pub type ToRialtoMessageVerifier = + messages::source::FromThisChainMessageVerifier; /// Message payload for Rialto -> Millau messages. -pub type FromRialtoMessagePayload = messages::target::FromBridgedChainMessagePayload; +pub type FromRialtoMessagePayload = + messages::target::FromBridgedChainMessagePayload; /// Encoded Millau Call as it comes from Rialto. pub type FromRialtoEncodedCall = messages::target::FromBridgedChainEncodedMessageCall; @@ -58,14 +67,15 @@ pub type FromRialtoEncodedCall = messages::target::FromBridgedChainEncodedMessag type FromRialtoMessagesProof = messages::target::FromBridgedChainMessagesProof; /// Messages delivery proof for Millau -> Rialto messages. -type ToRialtoMessagesDeliveryProof = messages::source::FromBridgedChainMessagesDeliveryProof; +type ToRialtoMessagesDeliveryProof = + messages::source::FromBridgedChainMessagesDeliveryProof; /// Call-dispatch based message dispatch for Rialto -> Millau messages. pub type FromRialtoMessageDispatch = messages::target::FromBridgedChainMessageDispatch< WithRialtoMessageBridge, crate::Runtime, pallet_balances::Pallet, - pallet_bridge_dispatch::DefaultInstance, + (), >; /// Millau <-> Rialto message bridge. @@ -76,14 +86,16 @@ impl MessageBridge for WithRialtoMessageBridge { const RELAYER_FEE_PERCENT: u32 = 10; const THIS_CHAIN_ID: ChainId = MILLAU_CHAIN_ID; const BRIDGED_CHAIN_ID: ChainId = RIALTO_CHAIN_ID; + const BRIDGED_MESSAGES_PALLET_NAME: &'static str = bp_rialto::WITH_MILLAU_MESSAGES_PALLET_NAME; type ThisChain = Millau; type BridgedChain = Rialto; - type BridgedMessagesInstance = crate::WithRialtoMessagesInstance; fn bridged_balance_to_this_balance(bridged_balance: bp_rialto::Balance) -> bp_millau::Balance { - bp_millau::Balance::try_from(RialtoToMillauConversionRate::get().saturating_mul_int(bridged_balance)) - .unwrap_or(bp_millau::Balance::MAX) + bp_millau::Balance::try_from( + RialtoToMillauConversionRate::get().saturating_mul_int(bridged_balance), + ) + .unwrap_or(bp_millau::Balance::MAX) } } @@ -104,7 +116,9 @@ impl messages::ThisChainWithMessages for Millau { type Call = crate::Call; fn is_outbound_lane_enabled(lane: &LaneId) -> bool { - *lane == [0, 0, 0, 0] || *lane == [0, 0, 0, 1] + *lane == [0, 0, 0, 0] || + *lane == [0, 0, 0, 1] || + *lane == crate::TokenSwapMessagesLane::get() } fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { @@ -128,11 +142,15 @@ impl messages::ThisChainWithMessages for Millau { } fn transaction_payment(transaction: MessageTransaction) -> bp_millau::Balance { + // `transaction` may represent transaction from the future, when multiplier value will + // be larger, so let's use slightly increased value + let multiplier = FixedU128::saturating_from_rational(110, 100) + .saturating_mul(pallet_transaction_payment::Pallet::::next_fee_multiplier()); // in our testnets, both per-byte fee and weight-to-fee are 1:1 messages::transaction_payment( bp_millau::BlockWeights::get().get(DispatchClass::Normal).base_extrinsic, 1, - FixedU128::zero(), + multiplier, |weight| weight as _, transaction, ) @@ -159,12 +177,15 @@ impl messages::BridgedChainWithMessages for Rialto { fn message_weight_limits(_message_payload: &[u8]) -> RangeInclusive { // we don't want to relay too large messages + keep reserve for future upgrades - let upper_limit = messages::target::maximal_incoming_message_dispatch_weight(bp_rialto::max_extrinsic_weight()); + let upper_limit = messages::target::maximal_incoming_message_dispatch_weight( + bp_rialto::max_extrinsic_weight(), + ); - // we're charging for payload bytes in `WithRialtoMessageBridge::transaction_payment` function + // we're charging for payload bytes in `WithRialtoMessageBridge::transaction_payment` + // function // - // this bridge may be used to deliver all kind of messages, so we're not making any assumptions about - // minimal dispatch weight here + // this bridge may be used to deliver all kind of messages, so we're not making any + // assumptions about minimal dispatch weight here 0..=upper_limit } @@ -195,11 +216,14 @@ impl messages::BridgedChainWithMessages for Rialto { } fn transaction_payment(transaction: MessageTransaction) -> bp_rialto::Balance { + // we don't have a direct access to the value of multiplier at Rialto chain + // => it is a messages module parameter + let multiplier = RialtoFeeMultiplier::get(); // in our testnets, both per-byte fee and weight-to-fee are 1:1 messages::transaction_payment( bp_rialto::BlockWeights::get().get(DispatchClass::Normal).base_extrinsic, 1, - FixedU128::zero(), + multiplier, |weight| weight as _, transaction, ) @@ -221,9 +245,11 @@ impl TargetHeaderChain for Rialto fn verify_messages_delivery_proof( proof: Self::MessagesDeliveryProof, ) -> Result<(LaneId, InboundLaneData), Self::Error> { - messages::source::verify_messages_delivery_proof::( - proof, - ) + messages::source::verify_messages_delivery_proof::< + WithRialtoMessageBridge, + Runtime, + crate::RialtoGrandpaInstance, + >(proof) } } @@ -240,15 +266,16 @@ impl SourceHeaderChain for Rialto { proof: Self::MessagesProof, messages_count: u32, ) -> Result>, Self::Error> { - messages::target::verify_messages_proof::( - proof, - messages_count, - ) + messages::target::verify_messages_proof::< + WithRialtoMessageBridge, + Runtime, + crate::RialtoGrandpaInstance, + >(proof, messages_count) } } /// Millau -> Rialto message lane pallet parameters. -#[derive(RuntimeDebug, Clone, Encode, Decode, PartialEq, Eq)] +#[derive(RuntimeDebug, Clone, Encode, Decode, PartialEq, Eq, TypeInfo)] pub enum MillauToRialtoMessagesParameter { /// The conversion formula we use is: `MillauTokens = RialtoTokens * conversion_rate`. RialtoToMillauConversionRate(FixedU128), @@ -257,9 +284,8 @@ pub enum MillauToRialtoMessagesParameter { impl MessagesParameter for MillauToRialtoMessagesParameter { fn save(&self) { match *self { - MillauToRialtoMessagesParameter::RialtoToMillauConversionRate(ref conversion_rate) => { - RialtoToMillauConversionRate::set(conversion_rate) - } + MillauToRialtoMessagesParameter::RialtoToMillauConversionRate(ref conversion_rate) => + RialtoToMillauConversionRate::set(conversion_rate), } } } diff --git a/bin/rialto-parachain/node/Cargo.toml b/bin/rialto-parachain/node/Cargo.toml new file mode 100644 index 000000000000..8adc998e47ee --- /dev/null +++ b/bin/rialto-parachain/node/Cargo.toml @@ -0,0 +1,89 @@ +[package] +name = "rialto-parachain-collator" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[[bin]] +name = 'rialto-parachain-collator' + +[features] +default = [] +runtime-benchmarks = ['rialto-parachain-runtime/runtime-benchmarks'] + +[dependencies] +derive_more = '0.99.2' +log = '0.4.14' +codec = { package = 'parity-scale-codec', version = '2.0.0' } +structopt = '0.3.8' +serde = { version = '1.0', features = ['derive'] } +hex-literal = '0.3.1' + +# RPC related Dependencies +jsonrpc-core = '18.0' + +# Local Dependencies +rialto-parachain-runtime = { path = '../runtime' } + +# Substrate Dependencies +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } + +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } + +substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } + +## Substrate Client Dependencies +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "master", features = ['wasmtime'] } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } + +## Substrate Primitive Dependencies +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } + +# Cumulus dependencies +cumulus-client-consensus-aura = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-client-consensus-common = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-client-collator = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-client-cli = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-client-network = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-client-service = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "master" } +cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/cumulus", branch = "master" } + +# Polkadot dependencies +polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } \ No newline at end of file diff --git a/bin/rialto-parachain/node/build.rs b/bin/rialto-parachain/node/build.rs new file mode 100644 index 000000000000..8ba8a31e9a79 --- /dev/null +++ b/bin/rialto-parachain/node/build.rs @@ -0,0 +1,22 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; + +fn main() { + generate_cargo_keys(); + rerun_if_git_head_changed(); +} diff --git a/bin/rialto-parachain/node/src/chain_spec.rs b/bin/rialto-parachain/node/src/chain_spec.rs new file mode 100644 index 000000000000..52012423fb71 --- /dev/null +++ b/bin/rialto-parachain/node/src/chain_spec.rs @@ -0,0 +1,164 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use cumulus_primitives_core::ParaId; +use rialto_parachain_runtime::{AccountId, AuraId, Signature}; +use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; +use sc_service::ChainType; +use serde::{Deserialize, Serialize}; +use sp_core::{sr25519, Pair, Public}; +use sp_runtime::traits::{IdentifyAccount, Verify}; + +/// Specialized `ChainSpec` for the normal parachain runtime. +pub type ChainSpec = + sc_service::GenericChainSpec; + +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +/// The extensions for the [`ChainSpec`]. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)] +#[serde(deny_unknown_fields)] +pub struct Extensions { + /// The relay chain of the Parachain. + pub relay_chain: String, + /// The id of the Parachain. + pub para_id: u32, +} + +impl Extensions { + /// Try to get the extension from the given `ChainSpec`. + pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> { + sc_chain_spec::get_extension(chain_spec.extensions()) + } +} + +type AccountPublic = ::Signer; + +/// Helper function to generate an account ID from seed +pub fn get_account_id_from_seed(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_from_seed::(seed)).into_account() +} + +pub fn development_config(id: ParaId) -> ChainSpec { + // Give your base currency a unit name and decimal places + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "UNIT".into()); + properties.insert("tokenDecimals".into(), 12.into()); + + ChainSpec::from_genesis( + // Name + "Development", + // ID + "dev", + ChainType::Local, + move || { + testnet_genesis( + get_account_id_from_seed::("Alice"), + vec![get_from_seed::("Alice"), get_from_seed::("Bob")], + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + ], + id, + ) + }, + vec![], + None, + None, + None, + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + para_id: id.into(), + }, + ) +} + +pub fn local_testnet_config(id: ParaId) -> ChainSpec { + // Give your base currency a unit name and decimal places + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "UNIT".into()); + properties.insert("tokenDecimals".into(), 12.into()); + + ChainSpec::from_genesis( + // Name + "Local Testnet", + // ID + "local_testnet", + ChainType::Local, + move || { + testnet_genesis( + get_account_id_from_seed::("Alice"), + vec![get_from_seed::("Alice"), get_from_seed::("Bob")], + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + ], + id, + ) + }, + Vec::new(), + None, + None, + None, + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + para_id: id.into(), + }, + ) +} + +fn testnet_genesis( + root_key: AccountId, + initial_authorities: Vec, + endowed_accounts: Vec, + id: ParaId, +) -> rialto_parachain_runtime::GenesisConfig { + rialto_parachain_runtime::GenesisConfig { + system: rialto_parachain_runtime::SystemConfig { + code: rialto_parachain_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + balances: rialto_parachain_runtime::BalancesConfig { + balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), + }, + sudo: rialto_parachain_runtime::SudoConfig { key: root_key }, + parachain_info: rialto_parachain_runtime::ParachainInfoConfig { parachain_id: id }, + aura: rialto_parachain_runtime::AuraConfig { authorities: initial_authorities }, + aura_ext: Default::default(), + // parachain_system: Default::default(), + } +} diff --git a/bin/rialto-parachain/node/src/cli.rs b/bin/rialto-parachain/node/src/cli.rs new file mode 100644 index 000000000000..78c05f90c880 --- /dev/null +++ b/bin/rialto-parachain/node/src/cli.rs @@ -0,0 +1,140 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::chain_spec; +use std::path::PathBuf; +use structopt::StructOpt; + +/// Sub-commands supported by the collator. +#[derive(Debug, StructOpt)] +pub enum Subcommand { + /// Export the genesis state of the parachain. + #[structopt(name = "export-genesis-state")] + ExportGenesisState(ExportGenesisStateCommand), + + /// Export the genesis wasm of the parachain. + #[structopt(name = "export-genesis-wasm")] + ExportGenesisWasm(ExportGenesisWasmCommand), + + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), + + /// Validate blocks. + CheckBlock(sc_cli::CheckBlockCmd), + + /// Export blocks. + ExportBlocks(sc_cli::ExportBlocksCmd), + + /// Export the state of a given block into a chain spec. + ExportState(sc_cli::ExportStateCmd), + + /// Import blocks. + ImportBlocks(sc_cli::ImportBlocksCmd), + + /// Remove the whole chain. + PurgeChain(cumulus_client_cli::PurgeChainCmd), + + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + + /// The custom benchmark subcommmand benchmarking runtime pallets. + #[structopt(name = "benchmark", about = "Benchmark runtime pallets.")] + Benchmark(frame_benchmarking_cli::BenchmarkCmd), +} + +/// Command for exporting the genesis state of the parachain +#[derive(Debug, StructOpt)] +pub struct ExportGenesisStateCommand { + /// Output file name or stdout if unspecified. + #[structopt(parse(from_os_str))] + pub output: Option, + + /// Id of the parachain this state is for. + /// + /// Default: 100 + #[structopt(long, conflicts_with = "chain")] + pub parachain_id: Option, + + /// Write output in binary. Default is to write in hex. + #[structopt(short, long)] + pub raw: bool, + + /// The name of the chain for that the genesis state should be exported. + #[structopt(long, conflicts_with = "parachain-id")] + pub chain: Option, +} + +/// Command for exporting the genesis wasm file. +#[derive(Debug, StructOpt)] +pub struct ExportGenesisWasmCommand { + /// Output file name or stdout if unspecified. + #[structopt(parse(from_os_str))] + pub output: Option, + + /// Write output in binary. Default is to write in hex. + #[structopt(short, long)] + pub raw: bool, + + /// The name of the chain for that the genesis wasm file should be exported. + #[structopt(long)] + pub chain: Option, +} + +#[derive(Debug, StructOpt)] +#[structopt(settings = &[ + structopt::clap::AppSettings::GlobalVersion, + structopt::clap::AppSettings::ArgsNegateSubcommands, + structopt::clap::AppSettings::SubcommandsNegateReqs, +])] +pub struct Cli { + #[structopt(subcommand)] + pub subcommand: Option, + + #[structopt(long)] + pub parachain_id: Option, + + #[structopt(flatten)] + pub run: cumulus_client_cli::RunCmd, + + /// Relaychain arguments + #[structopt(raw = true)] + pub relaychain_args: Vec, +} + +#[derive(Debug)] +pub struct RelayChainCli { + /// The actual relay chain cli object. + pub base: polkadot_cli::RunCmd, + + /// Optional chain id that should be passed to the relay chain. + pub chain_id: Option, + + /// The base path that should be used by the relay chain. + pub base_path: Option, +} + +impl RelayChainCli { + /// Parse the relay chain CLI parameters using the para chain `Configuration`. + pub fn new<'a>( + para_config: &sc_service::Configuration, + relay_chain_args: impl Iterator, + ) -> Self { + let extension = chain_spec::Extensions::try_get(&*para_config.chain_spec); + let chain_id = extension.map(|e| e.relay_chain.clone()); + let base_path = para_config.base_path.as_ref().map(|x| x.path().join("rialto-bridge-node")); + Self { base_path, chain_id, base: polkadot_cli::RunCmd::from_iter(relay_chain_args) } + } +} diff --git a/bin/rialto-parachain/node/src/command.rs b/bin/rialto-parachain/node/src/command.rs new file mode 100644 index 000000000000..e4f52cc026a7 --- /dev/null +++ b/bin/rialto-parachain/node/src/command.rs @@ -0,0 +1,424 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + chain_spec, + cli::{Cli, RelayChainCli, Subcommand}, + service::{new_partial, ParachainRuntimeExecutor}, +}; +use codec::Encode; +use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_primitives_core::ParaId; +use log::info; +use polkadot_parachain::primitives::AccountIdConversion; +use rialto_parachain_runtime::{Block, RuntimeApi}; +use sc_cli::{ + ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, + NetworkParams, Result, RuntimeVersion, SharedParams, SubstrateCli, +}; +use sc_service::config::{BasePath, PrometheusConfig}; +use sp_core::hexdisplay::HexDisplay; +use sp_runtime::traits::Block as BlockT; +use std::{io::Write, net::SocketAddr}; + +fn load_spec( + id: &str, + para_id: ParaId, +) -> std::result::Result, String> { + Ok(match id { + "dev" => Box::new(chain_spec::development_config(para_id)), + "" | "local" => Box::new(chain_spec::local_testnet_config(para_id)), + path => Box::new(chain_spec::ChainSpec::from_json_file(std::path::PathBuf::from(path))?), + }) +} + +impl SubstrateCli for Cli { + fn impl_name() -> String { + "Parachain Collator Template".into() + } + + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() + } + + fn description() -> String { + format!( + "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + passed to the parachain node, while the arguments provided after -- will be passed \ + to the relaychain node.\n\n\ + {} [parachain-args] -- [relaychain-args]", + Self::executable_name() + ) + } + + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() + } + + fn support_url() -> String { + "https://github.com/substrate-developer-hub/substrate-parachain-template/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2017 + } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + load_spec(id, self.parachain_id.unwrap_or(2000).into()) + } + + fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { + &rialto_parachain_runtime::VERSION + } +} + +impl SubstrateCli for RelayChainCli { + fn impl_name() -> String { + "Parachain Collator Template".into() + } + + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() + } + + fn description() -> String { + "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + passed to the parachain node, while the arguments provided after -- will be passed \ + to the relaychain node.\n\n\ + parachain-collator [parachain-args] -- [relaychain-args]" + .into() + } + + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() + } + + fn support_url() -> String { + "https://github.com/substrate-developer-hub/substrate-parachain-template/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2017 + } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id) + } + + fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { + polkadot_cli::Cli::native_runtime_version(chain_spec) + } +} + +fn extract_genesis_wasm(chain_spec: &dyn sc_service::ChainSpec) -> Result> { + let mut storage = chain_spec.build_storage()?; + + storage + .top + .remove(sp_core::storage::well_known_keys::CODE) + .ok_or_else(|| "Could not find wasm file in genesis state!".into()) +} + +macro_rules! construct_async_run { + (|$components:ident, $cli:ident, $cmd:ident, $config:ident| $( $code:tt )* ) => {{ + let runner = $cli.create_runner($cmd)?; + runner.async_run(|$config| { + let $components = new_partial::< + RuntimeApi, + ParachainRuntimeExecutor, + _ + >( + &$config, + crate::service::parachain_build_import_queue, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }} +} + +/// Parse command line arguments into service configuration. +pub fn run() -> Result<()> { + let cli = Cli::from_args(); + sp_core::crypto::set_default_ss58_version(sp_core::crypto::Ss58AddressFormat::custom( + rialto_parachain_runtime::SS58Prefix::get() as u16, + )); + + match &cli.subcommand { + Some(Subcommand::BuildSpec(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) + }, + Some(Subcommand::CheckBlock(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + }, + Some(Subcommand::ExportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| Ok( + cmd.run(components.client, config.database) + )) + }, + Some(Subcommand::ExportState(cmd)) => { + construct_async_run!(|components, cli, cmd, config| Ok( + cmd.run(components.client, config.chain_spec) + )) + }, + Some(Subcommand::ImportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + }, + Some(Subcommand::PurgeChain(cmd)) => { + let runner = cli.create_runner(cmd)?; + + runner.sync_run(|config| { + let polkadot_cli = RelayChainCli::new( + &config, + [RelayChainCli::executable_name()].iter().chain(cli.relaychain_args.iter()), + ); + + let polkadot_config = SubstrateCli::create_configuration( + &polkadot_cli, + &polkadot_cli, + config.tokio_handle.clone(), + ) + .map_err(|err| format!("Relay chain argument error: {}", err))?; + + cmd.run(config, polkadot_config) + }) + }, + Some(Subcommand::Revert(cmd)) => { + construct_async_run!(|components, cli, cmd, config| Ok( + cmd.run(components.client, components.backend) + )) + }, + Some(Subcommand::ExportGenesisState(params)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); + let _ = builder.init(); + + let block: Block = generate_genesis_block(&load_spec( + ¶ms.chain.clone().unwrap_or_default(), + params.parachain_id.expect("Missing ParaId").into(), + )?)?; + let raw_header = block.header().encode(); + let output_buf = if params.raw { + raw_header + } else { + format!("0x{:?}", HexDisplay::from(&block.header().encode())).into_bytes() + }; + + if let Some(output) = ¶ms.output { + std::fs::write(output, output_buf)?; + } else { + std::io::stdout().write_all(&output_buf)?; + } + + Ok(()) + }, + Some(Subcommand::ExportGenesisWasm(params)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); + let _ = builder.init(); + + let raw_wasm_blob = + extract_genesis_wasm(&*cli.load_spec(¶ms.chain.clone().unwrap_or_default())?)?; + let output_buf = if params.raw { + raw_wasm_blob + } else { + format!("0x{:?}", HexDisplay::from(&raw_wasm_blob)).into_bytes() + }; + + if let Some(output) = ¶ms.output { + std::fs::write(output, output_buf)?; + } else { + std::io::stdout().write_all(&output_buf)?; + } + + Ok(()) + }, + Some(Subcommand::Benchmark(cmd)) => + if cfg!(feature = "runtime-benchmarks") { + let runner = cli.create_runner(cmd)?; + + runner.sync_run(|config| cmd.run::(config)) + } else { + Err("Benchmarking wasn't enabled when building the node. \ + You can enable it with `--features runtime-benchmarks`." + .into()) + }, + None => { + let runner = cli.create_runner(&cli.run.normalize())?; + + runner.run_node_until_exit(|config| async move { + let para_id = + chain_spec::Extensions::try_get(&*config.chain_spec).map(|e| e.para_id); + + let polkadot_cli = RelayChainCli::new( + &config, + [RelayChainCli::executable_name()].iter().chain(cli.relaychain_args.iter()), + ); + + let id = ParaId::from(cli.parachain_id.or(para_id).expect("Missing ParaId")); + + let parachain_account = + AccountIdConversion::::into_account(&id); + + let block: Block = + generate_genesis_block(&config.chain_spec).map_err(|e| format!("{:?}", e))?; + let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); + + let polkadot_config = SubstrateCli::create_configuration( + &polkadot_cli, + &polkadot_cli, + config.tokio_handle.clone(), + ) + .map_err(|err| format!("Relay chain argument error: {}", err))?; + + info!("Parachain id: {:?}", id); + info!("Parachain Account: {}", parachain_account); + info!("Parachain genesis state: {}", genesis_state); + info!("Is collating: {}", if config.role.is_authority() { "yes" } else { "no" }); + + crate::service::start_node(config, polkadot_config, id) + .await + .map(|r| r.0) + .map_err(Into::into) + }) + }, + } +} + +impl DefaultConfigurationValues for RelayChainCli { + fn p2p_listen_port() -> u16 { + 30334 + } + + fn rpc_ws_listen_port() -> u16 { + 9945 + } + + fn rpc_http_listen_port() -> u16 { + 9934 + } + + fn prometheus_listen_port() -> u16 { + 9616 + } +} + +impl CliConfiguration for RelayChainCli { + fn shared_params(&self) -> &SharedParams { + self.base.base.shared_params() + } + + fn import_params(&self) -> Option<&ImportParams> { + self.base.base.import_params() + } + + fn network_params(&self) -> Option<&NetworkParams> { + self.base.base.network_params() + } + + fn keystore_params(&self) -> Option<&KeystoreParams> { + self.base.base.keystore_params() + } + + fn base_path(&self) -> Result> { + Ok(self + .shared_params() + .base_path() + .or_else(|| self.base_path.clone().map(Into::into))) + } + + fn rpc_http(&self, default_listen_port: u16) -> Result> { + self.base.base.rpc_http(default_listen_port) + } + + fn rpc_ipc(&self) -> Result> { + self.base.base.rpc_ipc() + } + + fn rpc_ws(&self, default_listen_port: u16) -> Result> { + self.base.base.rpc_ws(default_listen_port) + } + + fn prometheus_config(&self, default_listen_port: u16) -> Result> { + self.base.base.prometheus_config(default_listen_port) + } + + fn init(&self) -> Result<()> { + unreachable!("PolkadotCli is never initialized; qed"); + } + + fn chain_id(&self, is_dev: bool) -> Result { + let chain_id = self.base.base.chain_id(is_dev)?; + + Ok(if chain_id.is_empty() { self.chain_id.clone().unwrap_or_default() } else { chain_id }) + } + + fn role(&self, is_dev: bool) -> Result { + self.base.base.role(is_dev) + } + + fn transaction_pool(&self) -> Result { + self.base.base.transaction_pool() + } + + fn state_cache_child_ratio(&self) -> Result> { + self.base.base.state_cache_child_ratio() + } + + fn rpc_methods(&self) -> Result { + self.base.base.rpc_methods() + } + + fn rpc_ws_max_connections(&self) -> Result> { + self.base.base.rpc_ws_max_connections() + } + + fn rpc_cors(&self, is_dev: bool) -> Result>> { + self.base.base.rpc_cors(is_dev) + } + + fn default_heap_pages(&self) -> Result> { + self.base.base.default_heap_pages() + } + + fn force_authoring(&self) -> Result { + self.base.base.force_authoring() + } + + fn disable_grandpa(&self) -> Result { + self.base.base.disable_grandpa() + } + + fn max_runtime_instances(&self) -> Result> { + self.base.base.max_runtime_instances() + } + + fn announce_block(&self) -> Result { + self.base.base.announce_block() + } + + fn telemetry_endpoints( + &self, + chain_spec: &Box, + ) -> Result> { + self.base.base.telemetry_endpoints(chain_spec) + } +} diff --git a/bin/rialto-parachain/node/src/lib.rs b/bin/rialto-parachain/node/src/lib.rs new file mode 100644 index 000000000000..3ec291596b71 --- /dev/null +++ b/bin/rialto-parachain/node/src/lib.rs @@ -0,0 +1,18 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +pub mod chain_spec; +pub mod service; diff --git a/bin/rialto-parachain/node/src/main.rs b/bin/rialto-parachain/node/src/main.rs new file mode 100644 index 000000000000..2b4e0b438d1a --- /dev/null +++ b/bin/rialto-parachain/node/src/main.rs @@ -0,0 +1,29 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate Parachain Node Template CLI + +#![warn(missing_docs)] + +mod chain_spec; +#[macro_use] +mod service; +mod cli; +mod command; + +fn main() -> sc_cli::Result<()> { + command::run() +} diff --git a/bin/rialto-parachain/node/src/service.rs b/bin/rialto-parachain/node/src/service.rs new file mode 100644 index 000000000000..bd3afca30744 --- /dev/null +++ b/bin/rialto-parachain/node/src/service.rs @@ -0,0 +1,493 @@ +// Copyright 2020-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +// std +use std::sync::Arc; + +// Local Runtime Types +use rialto_parachain_runtime::RuntimeApi; + +// Cumulus Imports +use cumulus_client_consensus_aura::{ + build_aura_consensus, BuildAuraConsensusParams, SlotProportion, +}; +use cumulus_client_consensus_common::ParachainConsensus; +use cumulus_client_network::build_block_announce_validator; +use cumulus_client_service::{ + prepare_node_config, start_collator, start_full_node, StartCollatorParams, StartFullNodeParams, +}; +use cumulus_primitives_core::ParaId; + +// Substrate Imports +use sc_client_api::ExecutorProvider; +use sc_executor::{NativeElseWasmExecutor, NativeExecutionDispatch}; +use sc_network::NetworkService; +use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager}; +use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; +use sp_api::ConstructRuntimeApi; +use sp_consensus::SlotData; +use sp_keystore::SyncCryptoStorePtr; +use sp_runtime::traits::BlakeTwo256; +use substrate_prometheus_endpoint::Registry; + +// Runtime type overrides +type BlockNumber = u32; +type Header = sp_runtime::generic::Header; +pub type Block = sp_runtime::generic::Block; +type Hash = sp_core::H256; + +pub type ParachainRuntimeExecutor = ExecutorDispatch; + +// Our native executor instance. +pub struct ExecutorDispatch; + +impl NativeExecutionDispatch for ExecutorDispatch { + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + + fn dispatch(method: &str, data: &[u8]) -> Option> { + rialto_parachain_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + rialto_parachain_runtime::native_version() + } +} + +/// Starts a `ServiceBuilder` for a full service. +/// +/// Use this macro if you don't actually need the full service, but just the builder in order to +/// be able to perform chain operations. +#[allow(clippy::type_complexity)] +pub fn new_partial( + config: &Configuration, + build_import_queue: BIQ, +) -> Result< + PartialComponents< + TFullClient>, + TFullBackend, + (), + sc_consensus::DefaultImportQueue< + Block, + TFullClient>, + >, + sc_transaction_pool::FullPool< + Block, + TFullClient>, + >, + (Option, Option), + >, + sc_service::Error, +> +where + RuntimeApi: ConstructRuntimeApi>> + + Send + + Sync + + 'static, + RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue + + sp_api::Metadata + + sp_session::SessionKeys + + sp_api::ApiExt< + Block, + StateBackend = sc_client_api::StateBackendFor, Block>, + > + sp_offchain::OffchainWorkerApi + + sp_block_builder::BlockBuilder, + sc_client_api::StateBackendFor, Block>: sp_api::StateBackend, + Executor: NativeExecutionDispatch + 'static, + BIQ: FnOnce( + Arc>>, + &Configuration, + Option, + &TaskManager, + ) -> Result< + sc_consensus::DefaultImportQueue< + Block, + TFullClient>, + >, + sc_service::Error, + >, +{ + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let executor = sc_executor::NativeElseWasmExecutor::::new( + config.wasm_method, + config.default_heap_pages, + config.max_runtime_instances, + ); + + let (client, backend, keystore_container, task_manager) = + sc_service::new_full_parts::( + config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + )?; + let client = Arc::new(client); + + let telemetry_worker_handle = telemetry.as_ref().map(|(worker, _)| worker.handle()); + + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager.spawn_handle().spawn("telemetry", None, worker.run()); + telemetry + }); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.role.is_authority().into(), + config.prometheus_registry(), + task_manager.spawn_essential_handle(), + client.clone(), + ); + + let import_queue = build_import_queue( + client.clone(), + config, + telemetry.as_ref().map(|telemetry| telemetry.handle()), + &task_manager, + )?; + + let params = PartialComponents { + backend, + client, + import_queue, + keystore_container, + task_manager, + transaction_pool, + select_chain: (), + other: (telemetry, telemetry_worker_handle), + }; + + Ok(params) +} + +/// Start a node with the given parachain `Configuration` and relay chain `Configuration`. +/// +/// This is the actual implementation that is abstract over the executor and the runtime api. +#[sc_tracing::logging::prefix_logs_with("Parachain")] +async fn start_node_impl( + parachain_config: Configuration, + polkadot_config: Configuration, + id: ParaId, + rpc_ext_builder: RB, + build_import_queue: BIQ, + build_consensus: BIC, +) -> sc_service::error::Result<( + TaskManager, + Arc>>, +)> +where + RuntimeApi: ConstructRuntimeApi>> + + Send + + Sync + + 'static, + RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue + + sp_api::Metadata + + sp_session::SessionKeys + + sp_api::ApiExt< + Block, + StateBackend = sc_client_api::StateBackendFor, Block>, + > + sp_offchain::OffchainWorkerApi + + sp_block_builder::BlockBuilder + + cumulus_primitives_core::CollectCollationInfo, + sc_client_api::StateBackendFor, Block>: sp_api::StateBackend, + Executor: NativeExecutionDispatch + 'static, + RB: Fn( + Arc>>, + ) -> jsonrpc_core::IoHandler + + Send + + 'static, + BIQ: FnOnce( + Arc>>, + &Configuration, + Option, + &TaskManager, + ) -> Result< + sc_consensus::DefaultImportQueue< + Block, + TFullClient>, + >, + sc_service::Error, + >, + BIC: FnOnce( + Arc>>, + Option<&Registry>, + Option, + &TaskManager, + &polkadot_service::NewFull, + Arc< + sc_transaction_pool::FullPool< + Block, + TFullClient>, + >, + >, + Arc>, + SyncCryptoStorePtr, + bool, + ) -> Result>, sc_service::Error>, +{ + if matches!(parachain_config.role, Role::Light) { + return Err("Light client not supported!".into()) + } + + let parachain_config = prepare_node_config(parachain_config); + + let params = new_partial::(¶chain_config, build_import_queue)?; + let (mut telemetry, telemetry_worker_handle) = params.other; + + let relay_chain_full_node = + cumulus_client_service::build_polkadot_full_node(polkadot_config, telemetry_worker_handle) + .map_err(|e| match e { + polkadot_service::Error::Sub(x) => x, + s => format!("{}", s).into(), + })?; + + let client = params.client.clone(); + let backend = params.backend.clone(); + let block_announce_validator = build_block_announce_validator( + relay_chain_full_node.client.clone(), + id, + Box::new(relay_chain_full_node.network.clone()), + relay_chain_full_node.backend.clone(), + ); + + let force_authoring = parachain_config.force_authoring; + let validator = parachain_config.role.is_authority(); + let prometheus_registry = parachain_config.prometheus_registry().cloned(); + let transaction_pool = params.transaction_pool.clone(); + let mut task_manager = params.task_manager; + let import_queue = cumulus_client_service::SharedImportQueue::new(params.import_queue); + let (network, system_rpc_tx, start_network) = + sc_service::build_network(sc_service::BuildNetworkParams { + config: ¶chain_config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue: import_queue.clone(), + block_announce_validator_builder: Some(Box::new(|_| block_announce_validator)), + warp_sync: None, + })?; + + let rpc_client = client.clone(); + let rpc_extensions_builder = Box::new(move |_, _| Ok(rpc_ext_builder(rpc_client.clone()))); + + sc_service::spawn_tasks(sc_service::SpawnTasksParams { + rpc_extensions_builder, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + task_manager: &mut task_manager, + config: parachain_config, + keystore: params.keystore_container.sync_keystore(), + backend: backend.clone(), + network: network.clone(), + system_rpc_tx, + telemetry: telemetry.as_mut(), + })?; + + let announce_block = { + let network = network.clone(); + Arc::new(move |hash, data| network.announce_block(hash, data)) + }; + + if validator { + let parachain_consensus = build_consensus( + client.clone(), + prometheus_registry.as_ref(), + telemetry.as_ref().map(|t| t.handle()), + &task_manager, + &relay_chain_full_node, + transaction_pool, + network, + params.keystore_container.sync_keystore(), + force_authoring, + )?; + + let spawner = task_manager.spawn_handle(); + + let params = StartCollatorParams { + para_id: id, + block_status: client.clone(), + announce_block, + client: client.clone(), + task_manager: &mut task_manager, + relay_chain_full_node, + spawner, + parachain_consensus, + import_queue, + }; + + start_collator(params).await?; + } else { + let params = StartFullNodeParams { + client: client.clone(), + announce_block, + task_manager: &mut task_manager, + para_id: id, + relay_chain_full_node, + }; + + start_full_node(params)?; + } + + start_network.start_network(); + + Ok((task_manager, client)) +} + +/// Build the import queue for the the parachain runtime. +#[allow(clippy::type_complexity)] +pub fn parachain_build_import_queue( + client: Arc>>, + config: &Configuration, + telemetry: Option, + task_manager: &TaskManager, +) -> Result< + sc_consensus::DefaultImportQueue< + Block, + TFullClient>, + >, + sc_service::Error, +> { + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + cumulus_client_consensus_aura::import_queue::< + sp_consensus_aura::sr25519::AuthorityPair, + _, + _, + _, + _, + _, + _, + >(cumulus_client_consensus_aura::ImportQueueParams { + block_import: client.clone(), + client: client.clone(), + create_inherent_data_providers: move |_, _| async move { + let time = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *time, + slot_duration.slot_duration(), + ); + + Ok((time, slot)) + }, + registry: config.prometheus_registry(), + can_author_with: sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), + spawner: &task_manager.spawn_essential_handle(), + telemetry, + }) + .map_err(Into::into) +} + +/// Start a normal parachain node. +pub async fn start_node( + parachain_config: Configuration, + polkadot_config: Configuration, + id: ParaId, +) -> sc_service::error::Result<( + TaskManager, + Arc>>, +)> { + start_node_impl::( + parachain_config, + polkadot_config, + id, + |_| Default::default(), + parachain_build_import_queue, + |client, + prometheus_registry, + telemetry, + task_manager, + relay_chain_node, + transaction_pool, + sync_oracle, + keystore, + force_authoring| { + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry, + telemetry.clone(), + ); + + let relay_chain_backend = relay_chain_node.backend.clone(); + let relay_chain_client = relay_chain_node.client.clone(); + Ok(build_aura_consensus::< + sp_consensus_aura::sr25519::AuthorityPair, + _, + _, + _, + _, + _, + _, + _, + _, + _, + >(BuildAuraConsensusParams { + proposer_factory, + create_inherent_data_providers: move |_, (relay_parent, validation_data)| { + let parachain_inherent = + cumulus_primitives_parachain_inherent::ParachainInherentData::create_at_with_client( + relay_parent, + &relay_chain_client, + &*relay_chain_backend, + &validation_data, + id, + ); + async move { + let time = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *time, + slot_duration.slot_duration(), + ); + + let parachain_inherent = parachain_inherent.ok_or_else(|| { + Box::::from( + "Failed to create parachain inherent", + ) + })?; + Ok((time, slot, parachain_inherent)) + } + }, + block_import: client.clone(), + relay_chain_client: relay_chain_node.client.clone(), + relay_chain_backend: relay_chain_node.backend.clone(), + para_client: client, + backoff_authoring_blocks: Option::<()>::None, + sync_oracle, + keystore, + force_authoring, + slot_duration, + // We got around 500ms for proposing + block_proposal_slot_portion: SlotProportion::new(1f32 / 24f32), + telemetry, + max_block_proposal_slot_portion: None, + })) + }, + ) + .await +} diff --git a/bin/rialto-parachain/runtime/Cargo.toml b/bin/rialto-parachain/runtime/Cargo.toml new file mode 100644 index 000000000000..20ce70aba8f6 --- /dev/null +++ b/bin/rialto-parachain/runtime/Cargo.toml @@ -0,0 +1,122 @@ +[package] +name = "rialto-parachain-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[dependencies] +codec = { package = 'parity-scale-codec', version = '2.0.0', default-features = false, features = ['derive']} +log = { version = "0.4.14", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = '1.0', optional = true, features = ['derive'] } + +# Bridge depedencies + +bp-rialto-parachain = { path = "../../../primitives/chain-rialto-parachain", default-features = false } + +# Substrate Dependencies +## Substrate Primitive Dependencies +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +## Substrate FRAME Dependencies +frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +## Substrate Pallet Dependencies +pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +# Cumulus Dependencies +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } +parachain-info = { git = "https://github.com/paritytech/cumulus", branch = "master", default-features = false } + +# Polkadot Dependencies +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +xcm = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } + +[features] +default = ['std'] +runtime-benchmarks = [ + 'sp-runtime/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system-benchmarking', + 'frame-system/runtime-benchmarks', + 'pallet-balances/runtime-benchmarks', + 'pallet-timestamp/runtime-benchmarks', +] +std = [ + "bp-rialto-parachain/std", + "codec/std", + "log/std", + "scale-info/std", + "serde", + "sp-api/std", + "sp-std/std", + "sp-io/std", + "sp-core/std", + "sp-runtime/std", + "sp-version/std", + "sp-offchain/std", + "sp-session/std", + "sp-block-builder/std", + "sp-transaction-pool/std", + "sp-inherents/std", + "frame-support/std", + "frame-executive/std", + "frame-system/std", + "pallet-balances/std", + "pallet-randomness-collective-flip/std", + "pallet-timestamp/std", + "pallet-sudo/std", + "pallet-transaction-payment/std", + "parachain-info/std", + "cumulus-pallet-aura-ext/std", + "cumulus-pallet-parachain-system/std", + "cumulus-pallet-xcmp-queue/std", + "cumulus-pallet-xcm/std", + "cumulus-primitives-core/std", + "cumulus-primitives-timestamp/std", + "cumulus-primitives-utility/std", + "xcm/std", + "xcm-builder/std", + "xcm-executor/std", + "pallet-aura/std", + "sp-consensus-aura/std", +] diff --git a/bin/rialto-parachain/runtime/build.rs b/bin/rialto-parachain/runtime/build.rs new file mode 100644 index 000000000000..65095bd1b7e9 --- /dev/null +++ b/bin/rialto-parachain/runtime/build.rs @@ -0,0 +1,25 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use substrate_wasm_builder::WasmBuilder; + +fn main() { + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .import_memory() + .build() +} diff --git a/bin/rialto-parachain/runtime/src/lib.rs b/bin/rialto-parachain/runtime/src/lib.rs new file mode 100644 index 000000000000..5b71674b7fe9 --- /dev/null +++ b/bin/rialto-parachain/runtime/src/lib.rs @@ -0,0 +1,646 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! The Rialto parachain runtime. This can be compiled with `#[no_std]`, ready for Wasm. +//! +//! Originally a copy of runtime from https://github.com/substrate-developer-hub/substrate-parachain-template. + +#![cfg_attr(not(feature = "std"), no_std)] +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit = "256"] + +// Make the WASM binary available. +#[cfg(feature = "std")] +include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); + +use sp_api::impl_runtime_apis; +use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; +use sp_runtime::{ + create_runtime_str, generic, impl_opaque_keys, + traits::{AccountIdLookup, Block as BlockT}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, +}; + +use sp_std::prelude::*; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; + +// A few exports that help ease life for downstream crates. +pub use frame_support::{ + construct_runtime, match_type, parameter_types, + traits::{Everything, IsInVec, Randomness}, + weights::{ + constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND}, + DispatchClass, IdentityFee, Weight, + }, + StorageValue, +}; +pub use frame_system::Call as SystemCall; +pub use pallet_balances::Call as BalancesCall; +pub use pallet_timestamp::Call as TimestampCall; +pub use sp_consensus_aura::sr25519::AuthorityId as AuraId; +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; +pub use sp_runtime::{MultiAddress, Perbill, Permill}; + +pub use bp_rialto_parachain::{ + AccountId, Balance, BlockLength, BlockNumber, BlockWeights, Hash, Hasher as Hashing, Header, + Index, Signature, MAXIMUM_BLOCK_WEIGHT, +}; + +// Polkadot & XCM imports +use pallet_xcm::XcmPassthrough; +use polkadot_parachain::primitives::Sibling; +use xcm::latest::prelude::*; +use xcm_builder::{ + AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, + EnsureXcmOrigin, FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, + ParentAsSuperuser, ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, + SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, + SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, +}; +use xcm_executor::{Config, XcmExecutor}; + +/// The address format for describing accounts. +pub type Address = MultiAddress; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckSpecVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_transaction_payment::ChargeTransactionPayment, +); +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = frame_executive::Executive< + Runtime, + Block, + frame_system::ChainContext, + Runtime, + AllPallets, +>; + +impl_opaque_keys! { + pub struct SessionKeys { + pub aura: Aura, + } +} + +/// This runtime version. +#[sp_version::runtime_version] +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("template-parachain"), + impl_name: create_runtime_str!("template-parachain"), + authoring_version: 1, + spec_version: 1, + impl_version: 0, + apis: RUNTIME_API_VERSIONS, + transaction_version: 1, +}; + +/// This determines the average expected block time that we are targeting. +/// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`. +/// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked +/// up by `pallet_aura` to implement `fn slot_duration()`. +/// +/// Change this to adjust the block time. +pub const MILLISECS_PER_BLOCK: u64 = 12000; + +pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + +pub const EPOCH_DURATION_IN_BLOCKS: u32 = 10 * MINUTES; + +// Time is measured by number of blocks. +pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); +pub const HOURS: BlockNumber = MINUTES * 60; +pub const DAYS: BlockNumber = HOURS * 24; + +// Unit = the base number of indivisible units for balances +pub const UNIT: Balance = 1_000_000_000_000; +pub const MILLIUNIT: Balance = 1_000_000_000; +pub const MICROUNIT: Balance = 1_000_000; + +// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. +pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); + +/// The version information used to identify this runtime when compiled natively. +#[cfg(feature = "std")] +pub fn native_version() -> NativeVersion { + NativeVersion { runtime_version: VERSION, can_author_with: Default::default() } +} + +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const Version: RuntimeVersion = VERSION; + pub const SS58Prefix: u8 = 48; +} + +// Configure FRAME pallets to include in runtime. + +impl frame_system::Config for Runtime { + /// The identifier used to distinguish between accounts. + type AccountId = AccountId; + /// The aggregated dispatch type that is available for extrinsics. + type Call = Call; + /// The lookup mechanism to get account ID from whatever is passed in dispatchers. + type Lookup = AccountIdLookup; + /// The index type for storing how many extrinsics an account has signed. + type Index = Index; + /// The index type for blocks. + type BlockNumber = BlockNumber; + /// The type for hashing blocks and tries. + type Hash = Hash; + /// The hashing algorithm used. + type Hashing = Hashing; + /// The header type. + type Header = generic::Header; + /// The ubiquitous event type. + type Event = Event; + /// The ubiquitous origin type. + type Origin = Origin; + /// Maximum number of block number to block hash mappings to keep (oldest pruned first). + type BlockHashCount = BlockHashCount; + /// Runtime version. + type Version = Version; + /// Converts a module to an index of this module in the runtime. + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + /// What to do if a new account is created. + type OnNewAccount = (); + /// What to do if an account is fully reaped from the system. + type OnKilledAccount = (); + /// The weight of database operations that the runtime can invoke. + type DbWeight = (); + /// The basic call filter to use in dispatchable. + type BaseCallFilter = Everything; + /// Weight information for the extrinsics of this pallet. + type SystemWeightInfo = (); + /// Block & extrinsics weights: base values and limits. + type BlockWeights = BlockWeights; + /// The maximum length of a block (in bytes). + type BlockLength = BlockLength; + /// This is used as an identifier of the chain. 42 is the generic substrate prefix. + type SS58Prefix = SS58Prefix; + /// The action to take on a Runtime Upgrade + type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; +} + +parameter_types! { + pub const MinimumPeriod: u64 = SLOT_DURATION / 2; +} + +impl pallet_timestamp::Config for Runtime { + /// A timestamp: milliseconds since the Unix epoch. + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = MinimumPeriod; + type WeightInfo = (); +} + +parameter_types! { + pub const ExistentialDeposit: u128 = MILLIUNIT; + pub const TransferFee: u128 = MILLIUNIT; + pub const CreationFee: u128 = MILLIUNIT; + pub const TransactionByteFee: u128 = MICROUNIT; + pub const OperationalFeeMultiplier: u8 = 5; + pub const MaxLocks: u32 = 50; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for Runtime { + /// The type for recording an account's balance. + type Balance = Balance; + /// The ubiquitous event type. + type Event = Event; + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + type WeightInfo = pallet_balances::weights::SubstrateWeight; + type MaxLocks = MaxLocks; + type MaxReserves = MaxReserves; + type ReserveIdentifier = [u8; 8]; +} + +impl pallet_transaction_payment::Config for Runtime { + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; + type WeightToFee = IdentityFee; + type FeeMultiplierUpdate = (); +} + +impl pallet_sudo::Config for Runtime { + type Call = Call; + type Event = Event; +} + +parameter_types! { + pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4; + pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4; +} + +impl cumulus_pallet_parachain_system::Config for Runtime { + type Event = Event; + type OnValidationData = (); + type SelfParaId = parachain_info::Pallet; + type OutboundXcmpMessageSource = XcmpQueue; + type DmpMessageHandler = DmpQueue; + type ReservedDmpWeight = ReservedDmpWeight; + type XcmpMessageHandler = XcmpQueue; + type ReservedXcmpWeight = ReservedXcmpWeight; +} + +impl parachain_info::Config for Runtime {} + +impl cumulus_pallet_aura_ext::Config for Runtime {} + +impl pallet_randomness_collective_flip::Config for Runtime {} + +parameter_types! { + pub const RelayLocation: MultiLocation = MultiLocation::parent(); + pub const RelayNetwork: NetworkId = NetworkId::Polkadot; + pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); + pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); +} + +/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used +/// when determining ownership of accounts for asset transacting and when attempting to use XCM +/// `Transact` in order to determine the dispatch Origin. +pub type LocationToAccountId = ( + // The parent (Relay-chain) origin converts to the default `AccountId`. + ParentIsDefault, + // Sibling parachain origins convert to AccountId via the `ParaId::into`. + SiblingParachainConvertsVia, + // Straight up local `AccountId32` origins just alias directly to `AccountId`. + AccountId32Aliases, +); + +/// Means for transacting assets on this chain. +pub type LocalAssetTransactor = CurrencyAdapter< + // Use this currency: + Balances, + // Use this currency when it is a fungible asset matching the given location or name: + IsConcrete, + // Do a simple punn to convert an AccountId32 MultiLocation into a native chain account ID: + LocationToAccountId, + // Our chain's account ID type (we can't get away without mentioning it explicitly): + AccountId, + // We don't track any teleports. + (), +>; + +/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, +/// ready for dispatching a transaction with XCM `Transact`. There is an `OriginKind` which can +/// biases the kind of local `Origin` it will become. +pub type XcmOriginToTransactDispatchOrigin = ( + // Sovereign account converter; this attempts to derive an `AccountId` from the origin location + // using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for + // foreign chains who want to have a local sovereign account on this chain which they control. + SovereignSignedViaLocation, + // Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when + // recognised. + RelayChainAsNative, + // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when + // recognised. + SiblingParachainAsNative, + // Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a + // transaction from the Root origin. + ParentAsSuperuser, + // Native signed account converter; this just converts an `AccountId32` origin into a normal + // `Origin::Signed` origin of the same 32-byte value. + SignedAccountId32AsNative, + // Xcm origins can be represented natively under the Xcm pallet's Xcm origin. + XcmPassthrough, +); + +parameter_types! { + // One XCM operation is 1_000_000 weight - almost certainly a conservative estimate. + pub UnitWeightCost: Weight = 1_000_000; + // One UNIT buys 1 second of weight. + pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), UNIT); + pub const MaxInstructions: u32 = 100; + pub const MaxAuthorities: u32 = 100_000; +} + +match_type! { + pub type ParentOrParentsUnitPlurality: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) } + }; +} + +pub type Barrier = ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + AllowUnpaidExecutionFrom, + // ^^^ Parent & its unit plurality gets free execution +); + +pub struct XcmConfig; +impl Config for XcmConfig { + type Call = Call; + type XcmSender = XcmRouter; + // How to withdraw and deposit an asset. + type AssetTransactor = LocalAssetTransactor; + type OriginConverter = XcmOriginToTransactDispatchOrigin; + type IsReserve = NativeAsset; + type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of UNIT + type LocationInverter = LocationInverter; + type Barrier = Barrier; + type Weigher = FixedWeightBounds; + type Trader = UsingComponents, RelayLocation, AccountId, Balances, ()>; + type ResponseHandler = PolkadotXcm; + type AssetTrap = PolkadotXcm; + type AssetClaims = PolkadotXcm; + type SubscriptionService = PolkadotXcm; +} + +/// No local origins on this chain are allowed to dispatch XCM sends/executions. +pub type LocalOriginToLocation = SignedToAccountId32; + +/// The means for routing XCM messages which are not for local execution into the right message +/// queues. +pub type XcmRouter = ( + // Two routers - use UMP to communicate with the relay chain: + cumulus_primitives_utility::ParentAsUmp, + // ..and XCMP to communicate with the sibling chains. + XcmpQueue, +); + +impl pallet_xcm::Config for Runtime { + type Event = Event; + type SendXcmOrigin = EnsureXcmOrigin; + type XcmRouter = XcmRouter; + type ExecuteXcmOrigin = EnsureXcmOrigin; + type XcmExecuteFilter = Everything; + type XcmExecutor = XcmExecutor; + type XcmTeleportFilter = Everything; + type XcmReserveTransferFilter = Everything; + type Weigher = FixedWeightBounds; + type LocationInverter = LocationInverter; + type Origin = Origin; + type Call = Call; + const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100; + type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion; +} + +impl cumulus_pallet_xcm::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; +} + +impl cumulus_pallet_xcmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ChannelInfo = ParachainSystem; + type VersionWrapper = (); +} + +impl cumulus_pallet_dmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ExecuteOverweightOrigin = frame_system::EnsureRoot; +} + +impl pallet_aura::Config for Runtime { + type AuthorityId = AuraId; + type DisabledValidators = (); + type MaxAuthorities = MaxAuthorities; +} + +// /// Configure the pallet template in pallets/template. +// impl template::Config for Runtime { +// type Event = Event; +// } + +// Create the runtime by composing the FRAME pallets that were previously configured. +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = generic::Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Storage, Config, Event}, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Sudo: pallet_sudo::{Pallet, Call, Storage, Config, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + + ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Storage, Inherent, Event} = 20, + ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21, + + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 30, + + Aura: pallet_aura::{Pallet, Config}, + AuraExt: cumulus_pallet_aura_ext::{Pallet, Config}, + + // XCM helpers. + XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 50, + PolkadotXcm: pallet_xcm::{Pallet, Call, Event, Origin} = 51, + CumulusXcm: cumulus_pallet_xcm::{Pallet, Call, Event, Origin} = 52, + DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 53, + + // //Template + // TemplatePallet: template::{Pallet, Call, Storage, Event}, + } +); + +impl_runtime_apis! { + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn execute_block(block: Block) { + Executive::execute_block(block) + } + + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) + } + } + + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + OpaqueMetadata::new(Runtime::metadata().into()) + } + } + + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic( + extrinsic: ::Extrinsic, + ) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalize_block() -> ::Header { + Executive::finalize_block() + } + + fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } + + fn check_inherents( + block: Block, + data: sp_inherents::InherentData, + ) -> sp_inherents::CheckInherentsResult { + data.check_extrinsics(&block) + } + } + + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction( + source: TransactionSource, + tx: ::Extrinsic, + block_hash: ::Hash, + ) -> TransactionValidity { + Executive::validate_transaction(source, tx, block_hash) + } + } + + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } + } + + impl sp_session::SessionKeys for Runtime { + fn decode_session_keys( + encoded: Vec, + ) -> Option, KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + } + + impl sp_consensus_aura::AuraApi for Runtime { + fn slot_duration() -> sp_consensus_aura::SlotDuration { + sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + } + + fn authorities() -> Vec { + Aura::authorities().to_vec() + } + } + + impl cumulus_primitives_core::CollectCollationInfo for Runtime { + fn collect_collation_info() -> cumulus_primitives_core::CollationInfo { + ParachainSystem::collect_collation_info() + } + } + + impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { + fn account_nonce(account: AccountId) -> Index { + System::account_nonce(account) + } + } + + impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi for Runtime { + fn query_info( + uxt: ::Extrinsic, + len: u32, + ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo { + TransactionPayment::query_info(uxt, len) + } + fn query_fee_details( + uxt: ::Extrinsic, + len: u32, + ) -> pallet_transaction_payment::FeeDetails { + TransactionPayment::query_fee_details(uxt, len) + } + } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn dispatch_benchmark( + config: frame_benchmarking::BenchmarkConfig + ) -> Result, sp_runtime::RuntimeString> { + use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; + + use frame_system_benchmarking::Pallet as SystemBench; + impl frame_system_benchmarking::Config for Runtime {} + + let whitelist: Vec = vec![ + // Block Number + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), + // Total Issuance + hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), + // Execution Phase + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), + // Event Count + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), + // System Events + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), + ]; + + let mut batches = Vec::::new(); + let params = (&config, &whitelist); + + add_benchmark!(params, batches, frame_system, SystemBench::); + add_benchmark!(params, batches, pallet_balances, Balances); + add_benchmark!(params, batches, pallet_timestamp, Timestamp); + + if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } + Ok(batches) + } + } +} + +struct CheckInherents; + +impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { + fn check_inherents( + block: &Block, + relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof, + ) -> sp_inherents::CheckInherentsResult { + let relay_chain_slot = relay_state_proof + .read_slot() + .expect("Could not read the relay chain slot from the proof"); + + let inherent_data = + cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration( + relay_chain_slot, + sp_std::time::Duration::from_secs(6), + ) + .create_inherent_data() + .expect("Could not create the timestamp inherent data"); + + inherent_data.check_extrinsics(block) + } +} + +cumulus_pallet_parachain_system::register_validate_block!( + Runtime = Runtime, + BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, + CheckInherents = CheckInherents, +); diff --git a/bin/rialto/node/Cargo.toml b/bin/rialto/node/Cargo.toml new file mode 100644 index 000000000000..fd76fbf9a617 --- /dev/null +++ b/bin/rialto/node/Cargo.toml @@ -0,0 +1,111 @@ +[package] +name = "rialto-bridge-node" +description = "Substrate node compatible with Rialto runtime" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +build = "build.rs" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +futures = "0.3" +jsonrpc-core = "18.0" +kvdb = "0.10" +kvdb-rocksdb = "0.12" +lru = "0.7" +structopt = "0.3.21" +serde_json = "1.0.59" +thiserror = "1.0" + +# Bridge dependencies + +bp-runtime = { path = "../../../primitives/runtime" } +bp-rialto = { path = "../../../primitives/chain-rialto" } +pallet-bridge-messages = { path = "../../../modules/messages" } +rialto-runtime = { path = "../runtime" } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +node-inspect = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-uncles = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +#sc-finality-grandpa-warp-sync = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } + +# Polkadot (parachain) Dependencies + +polkadot-approval-distribution = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-availability-bitfield-distribution = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-availability-distribution = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-availability-recovery = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-collator-protocol = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-dispute-distribution = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-gossip-support = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-network-bridge = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-collation-generation = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-approval-voting = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-av-store = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-backing = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-bitfield-signing = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-candidate-validation = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-chain-api = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-chain-selection = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-parachains-inherent = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-provisioner = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-pvf = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-runtime-api = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-core-dispute-coordinator = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-network-protocol = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-node-subsystem-util = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-overseer = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-statement-distribution = { git = "https://github.com/paritytech/polkadot", branch = "master" } + +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = [] +runtime-benchmarks = [ + "rialto-runtime/runtime-benchmarks", +] diff --git a/bridges/bin/rialto/node/build.rs b/bin/rialto/node/build.rs similarity index 100% rename from bridges/bin/rialto/node/build.rs rename to bin/rialto/node/build.rs diff --git a/bin/rialto/node/src/chain_spec.rs b/bin/rialto/node/src/chain_spec.rs new file mode 100644 index 000000000000..cadacad72da9 --- /dev/null +++ b/bin/rialto/node/src/chain_spec.rs @@ -0,0 +1,297 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use bp_rialto::derive_account_from_millau_id; +use polkadot_primitives::v1::{AssignmentId, ValidatorId}; +use rialto_runtime::{ + AccountId, BabeConfig, BalancesConfig, BridgeMillauMessagesConfig, ConfigurationConfig, + GenesisConfig, GrandpaConfig, SessionConfig, SessionKeys, Signature, SudoConfig, SystemConfig, + WASM_BINARY, +}; +use serde_json::json; +use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; +use sp_consensus_babe::AuthorityId as BabeId; +use sp_core::{sr25519, Pair, Public}; +use sp_finality_grandpa::AuthorityId as GrandpaId; +use sp_runtime::traits::{IdentifyAccount, Verify}; + +/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. +pub type ChainSpec = sc_service::GenericChainSpec; + +/// The chain specification option. This is expected to come in from the CLI and +/// is little more than one of a number of alternatives which can easily be converted +/// from a string (`--chain=...`) into a `ChainSpec`. +#[derive(Clone, Debug)] +pub enum Alternative { + /// Whatever the current runtime is, with just Alice as an auth. + Development, + /// Whatever the current runtime is, with simple Alice/Bob/Charlie/Dave/Eve auths. + LocalTestnet, +} + +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +type AccountPublic = ::Signer; + +/// Helper function to generate an account ID from seed +pub fn get_account_id_from_seed(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_from_seed::(seed)).into_account() +} + +/// Helper function to generate authority keys. +pub fn get_authority_keys_from_seed( + s: &str, +) -> (AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { + ( + get_account_id_from_seed::(s), + get_from_seed::(s), + get_from_seed::(s), + get_from_seed::(s), + get_from_seed::(s), + get_from_seed::(s), + ) +} + +impl Alternative { + /// Get an actual chain config from one of the alternatives. + pub(crate) fn load(self) -> ChainSpec { + let properties = Some( + json!({ + "tokenDecimals": 9, + "tokenSymbol": "RLT" + }) + .as_object() + .expect("Map given; qed") + .clone(), + ); + match self { + Alternative::Development => ChainSpec::from_genesis( + "Rialto Development", + "rialto_dev", + sc_service::ChainType::Development, + || { + testnet_genesis( + vec![get_authority_keys_from_seed("Alice")], + get_account_id_from_seed::("Alice"), + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Bob"), + )), + ], + true, + ) + }, + vec![], + None, + None, + properties, + None, + ), + Alternative::LocalTestnet => ChainSpec::from_genesis( + "Rialto Local", + "rialto_local", + sc_service::ChainType::Local, + || { + testnet_genesis( + vec![ + get_authority_keys_from_seed("Alice"), + get_authority_keys_from_seed("Bob"), + get_authority_keys_from_seed("Charlie"), + get_authority_keys_from_seed("Dave"), + get_authority_keys_from_seed("Eve"), + ], + get_account_id_from_seed::("Alice"), + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("George"), + get_account_id_from_seed::("Harry"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + get_account_id_from_seed::("George//stash"), + get_account_id_from_seed::("Harry//stash"), + get_account_id_from_seed::("MillauMessagesOwner"), + get_account_id_from_seed::("WithMillauTokenSwap"), + pallet_bridge_messages::relayer_fund_account_id::< + bp_rialto::AccountId, + bp_rialto::AccountIdConverter, + >(), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Alice"), + )), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Bob"), + )), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Charlie"), + )), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Dave"), + )), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Eve"), + )), + derive_account_from_millau_id(bp_runtime::SourceAccount::Account( + get_account_id_from_seed::("Ferdie"), + )), + ], + true, + ) + }, + vec![], + None, + None, + properties, + None, + ), + } + } +} + +fn session_keys( + babe: BabeId, + grandpa: GrandpaId, + para_validator: ValidatorId, + para_assignment: AssignmentId, + authority_discovery: AuthorityDiscoveryId, +) -> SessionKeys { + SessionKeys { babe, grandpa, para_validator, para_assignment, authority_discovery } +} + +fn testnet_genesis( + initial_authorities: Vec<( + AccountId, + BabeId, + GrandpaId, + ValidatorId, + AssignmentId, + AuthorityDiscoveryId, + )>, + root_key: AccountId, + endowed_accounts: Vec, + _enable_println: bool, +) -> GenesisConfig { + GenesisConfig { + system: SystemConfig { + code: WASM_BINARY.expect("Rialto development WASM not available").to_vec(), + }, + balances: BalancesConfig { + balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 50)).collect(), + }, + babe: BabeConfig { + authorities: Vec::new(), + epoch_config: Some(rialto_runtime::BABE_GENESIS_EPOCH_CONFIG), + }, + grandpa: GrandpaConfig { authorities: Vec::new() }, + sudo: SudoConfig { key: root_key }, + session: SessionConfig { + keys: initial_authorities + .iter() + .map(|x| { + ( + x.0.clone(), + x.0.clone(), + session_keys( + x.1.clone(), + x.2.clone(), + x.3.clone(), + x.4.clone(), + x.5.clone(), + ), + ) + }) + .collect::>(), + }, + authority_discovery: Default::default(), + hrmp: Default::default(), + // this configuration is exact copy of configuration from Polkadot repo + // (see /node/service/src/chain_spec.rs:default_parachains_host_configuration) + configuration: ConfigurationConfig { + config: polkadot_runtime_parachains::configuration::HostConfiguration { + validation_upgrade_frequency: 1u32, + validation_upgrade_delay: 1, + code_retention_period: 1200, + max_code_size: polkadot_primitives::v1::MAX_CODE_SIZE, + max_pov_size: polkadot_primitives::v1::MAX_POV_SIZE, + max_head_data_size: 32 * 1024, + group_rotation_frequency: 20, + chain_availability_period: 4, + thread_availability_period: 4, + max_upward_queue_count: 8, + max_upward_queue_size: 1024 * 1024, + max_downward_message_size: 1024, + // this is approximatelly 4ms. + // + // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with + // an import since that's a made up number and should be replaced with a constant + // obtained by benchmarking anyway. + ump_service_total_weight: 4 * 1_000_000_000, + max_upward_message_size: 1024 * 1024, + max_upward_message_num_per_candidate: 5, + hrmp_sender_deposit: 0, + hrmp_recipient_deposit: 0, + hrmp_channel_max_capacity: 8, + hrmp_channel_max_total_size: 8 * 1024, + hrmp_max_parachain_inbound_channels: 4, + hrmp_max_parathread_inbound_channels: 4, + hrmp_channel_max_message_size: 1024 * 1024, + hrmp_max_parachain_outbound_channels: 4, + hrmp_max_parathread_outbound_channels: 4, + hrmp_max_message_num_per_candidate: 5, + dispute_period: 6, + no_show_slots: 2, + n_delay_tranches: 25, + needed_approvals: 2, + relay_vrf_modulo_samples: 2, + zeroth_delay_tranche_width: 0, + ..Default::default() + }, + }, + paras: Default::default(), + bridge_millau_messages: BridgeMillauMessagesConfig { + owner: Some(get_account_id_from_seed::("MillauMessagesOwner")), + ..Default::default() + }, + } +} + +#[test] +fn derived_dave_account_is_as_expected() { + let dave = get_account_id_from_seed::("Dave"); + let derived: AccountId = + derive_account_from_millau_id(bp_runtime::SourceAccount::Account(dave)); + assert_eq!(derived.to_string(), "5HZhdv53gSJmWWtD8XR5Ypu4PgbT5JNWwGw2mkE75cN61w9t".to_string()); +} diff --git a/bin/rialto/node/src/cli.rs b/bin/rialto/node/src/cli.rs new file mode 100644 index 000000000000..3f85a69a713f --- /dev/null +++ b/bin/rialto/node/src/cli.rs @@ -0,0 +1,85 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use sc_cli::RunCmd; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +pub struct Cli { + #[structopt(subcommand)] + pub subcommand: Option, + + #[structopt(flatten)] + pub run: RunCmd, +} + +/// Possible subcommands of the main binary. +#[derive(Debug, StructOpt)] +pub enum Subcommand { + /// Key management CLI utilities + Key(sc_cli::KeySubcommand), + + /// Verify a signature for a message, provided on `STDIN`, with a given (public or secret) key. + Verify(sc_cli::VerifyCmd), + + /// Generate a seed that provides a vanity address. + Vanity(sc_cli::VanityCmd), + + /// Sign a message, with a given (secret) key. + Sign(sc_cli::SignCmd), + + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), + + /// Validate blocks. + CheckBlock(sc_cli::CheckBlockCmd), + + /// Export blocks. + ExportBlocks(sc_cli::ExportBlocksCmd), + + /// Export the state of a given block into a chain spec. + ExportState(sc_cli::ExportStateCmd), + + /// Import blocks. + ImportBlocks(sc_cli::ImportBlocksCmd), + + /// Remove the whole chain. + PurgeChain(sc_cli::PurgeChainCmd), + + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + + /// Inspect blocks or extrinsics. + Inspect(node_inspect::cli::InspectCmd), + + /// Benchmark runtime pallets. + Benchmark(frame_benchmarking_cli::BenchmarkCmd), + + /// FOR INTERNAL USE: analog of the "prepare-worker" command of the polkadot binary. + #[structopt(name = "prepare-worker", setting = structopt::clap::AppSettings::Hidden)] + PvfPrepareWorker(ValidationWorkerCommand), + + /// FOR INTERNAL USE: analog of the "execute-worker" command of the polkadot binary. + #[structopt(name = "execute-worker", setting = structopt::clap::AppSettings::Hidden)] + PvfExecuteWorker(ValidationWorkerCommand), +} + +/// Validation worker command. +#[derive(Debug, StructOpt)] +pub struct ValidationWorkerCommand { + /// The path to the validation host's socket. + pub socket_path: String, +} diff --git a/bin/rialto/node/src/command.rs b/bin/rialto/node/src/command.rs new file mode 100644 index 000000000000..7be615a57760 --- /dev/null +++ b/bin/rialto/node/src/command.rs @@ -0,0 +1,192 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + cli::{Cli, Subcommand}, + service::new_partial, +}; +use rialto_runtime::{Block, RuntimeApi}; +use sc_cli::{ChainSpec, Role, RuntimeVersion, SubstrateCli}; +use sc_service::PartialComponents; + +impl SubstrateCli for Cli { + fn impl_name() -> String { + "Rialto Bridge Node".into() + } + + fn impl_version() -> String { + env!("CARGO_PKG_VERSION").into() + } + + fn description() -> String { + "Rialto Bridge Node".into() + } + + fn author() -> String { + "Parity Technologies".into() + } + + fn support_url() -> String { + "https://github.com/paritytech/parity-bridges-common/".into() + } + + fn copyright_start_year() -> i32 { + 2019 + } + + fn executable_name() -> String { + "rialto-bridge-node".into() + } + + fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { + &rialto_runtime::VERSION + } + + fn load_spec(&self, id: &str) -> Result, String> { + Ok(Box::new( + match id { + "" | "dev" => crate::chain_spec::Alternative::Development, + "local" => crate::chain_spec::Alternative::LocalTestnet, + _ => return Err(format!("Unsupported chain specification: {}", id)), + } + .load(), + )) + } +} + +/// Parse and run command line arguments +pub fn run() -> sc_cli::Result<()> { + let cli = Cli::from_args(); + sp_core::crypto::set_default_ss58_version(sp_core::crypto::Ss58AddressFormat::custom( + rialto_runtime::SS58Prefix::get() as u16, + )); + + match &cli.subcommand { + Some(Subcommand::Benchmark(cmd)) => + if cfg!(feature = "runtime-benchmarks") { + let runner = cli.create_runner(cmd)?; + + runner.sync_run(|config| cmd.run::(config)) + } else { + println!( + "Benchmarking wasn't enabled when building the node. \ + You can enable it with `--features runtime-benchmarks`." + ); + Ok(()) + }, + Some(Subcommand::Key(cmd)) => cmd.run(&cli), + Some(Subcommand::Sign(cmd)) => cmd.run(), + Some(Subcommand::Verify(cmd)) => cmd.run(), + Some(Subcommand::Vanity(cmd)) => cmd.run(), + Some(Subcommand::BuildSpec(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) + }, + Some(Subcommand::CheckBlock(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|mut config| { + let PartialComponents { client, task_manager, import_queue, .. } = + new_partial(&mut config).map_err(service_error)?; + Ok((cmd.run(client, import_queue), task_manager)) + }) + }, + Some(Subcommand::ExportBlocks(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|mut config| { + let PartialComponents { client, task_manager, .. } = + new_partial(&mut config).map_err(service_error)?; + Ok((cmd.run(client, config.database), task_manager)) + }) + }, + Some(Subcommand::ExportState(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|mut config| { + let PartialComponents { client, task_manager, .. } = + new_partial(&mut config).map_err(service_error)?; + Ok((cmd.run(client, config.chain_spec), task_manager)) + }) + }, + Some(Subcommand::ImportBlocks(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|mut config| { + let PartialComponents { client, task_manager, import_queue, .. } = + new_partial(&mut config).map_err(service_error)?; + Ok((cmd.run(client, import_queue), task_manager)) + }) + }, + Some(Subcommand::PurgeChain(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.database)) + }, + Some(Subcommand::Revert(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|mut config| { + let PartialComponents { client, task_manager, backend, .. } = + new_partial(&mut config).map_err(service_error)?; + Ok((cmd.run(client, backend), task_manager)) + }) + }, + Some(Subcommand::Inspect(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| { + cmd.run::(config) + }) + }, + Some(Subcommand::PvfPrepareWorker(cmd)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_colors(false); + let _ = builder.init(); + + polkadot_node_core_pvf::prepare_worker_entrypoint(&cmd.socket_path); + Ok(()) + }, + Some(crate::cli::Subcommand::PvfExecuteWorker(cmd)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_colors(false); + let _ = builder.init(); + + polkadot_node_core_pvf::execute_worker_entrypoint(&cmd.socket_path); + Ok(()) + }, + None => { + let runner = cli.create_runner(&cli.run)?; + + // some parameters that are used by polkadot nodes, but that are not used by our binary + // let jaeger_agent = None; + // let grandpa_pause = None; + // let no_beefy = true; + // let telemetry_worker_handler = None; + // let is_collator = crate::service::IsCollator::No; + let overseer_gen = crate::overseer::RealOverseerGen; + runner.run_node_until_exit(|config| async move { + match config.role { + Role::Light => Err(sc_cli::Error::Service(sc_service::Error::Other( + "Light client is not supported by this node".into(), + ))), + _ => crate::service::build_full(config, overseer_gen) + .map(|full| full.task_manager) + .map_err(service_error), + } + }) + }, + } +} + +// We don't want to change 'service.rs' too much to ease future updates => it'll keep using +// its own error enum like original polkadot service does. +fn service_error(err: crate::service::Error) -> sc_cli::Error { + sc_cli::Error::Application(Box::new(err)) +} diff --git a/bin/rialto/node/src/main.rs b/bin/rialto/node/src/main.rs new file mode 100644 index 000000000000..824814224e54 --- /dev/null +++ b/bin/rialto/node/src/main.rs @@ -0,0 +1,32 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto bridge node. + +#![warn(missing_docs)] + +mod chain_spec; +#[macro_use] +mod service; +mod cli; +mod command; +mod overseer; +mod parachains_db; + +/// Run the Rialto Node +fn main() -> sc_cli::Result<()> { + command::run() +} diff --git a/bin/rialto/node/src/overseer.rs b/bin/rialto/node/src/overseer.rs new file mode 100644 index 000000000000..9a7025e77c9b --- /dev/null +++ b/bin/rialto/node/src/overseer.rs @@ -0,0 +1,316 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! This is almost 1:1 copy of `node/service/src/overseer.rs` file from Polkadot repository. +//! The only exception is that we don't support db upgrades => no `upgrade.rs` module. + +// this warning comes from `polkadot_overseer::AllSubsystems` type +#![allow(clippy::type_complexity)] + +use crate::service::{AuthorityDiscoveryApi, Error}; +use rialto_runtime::{opaque::Block, Hash}; + +use lru::LruCache; +use polkadot_availability_distribution::IncomingRequestReceivers; +use polkadot_node_core_approval_voting::Config as ApprovalVotingConfig; +use polkadot_node_core_av_store::Config as AvailabilityConfig; +use polkadot_node_core_candidate_validation::Config as CandidateValidationConfig; +use polkadot_node_core_chain_selection::Config as ChainSelectionConfig; +use polkadot_node_core_dispute_coordinator::Config as DisputeCoordinatorConfig; +use polkadot_node_network_protocol::request_response::{v1 as request_v1, IncomingRequestReceiver}; +use polkadot_overseer::{ + metrics::Metrics as OverseerMetrics, BlockInfo, MetricsTrait, Overseer, OverseerBuilder, + OverseerConnector, OverseerHandle, +}; +use polkadot_primitives::v1::ParachainHost; +use sc_authority_discovery::Service as AuthorityDiscoveryService; +use sc_client_api::AuxStore; +use sc_keystore::LocalKeystore; +use sp_api::ProvideRuntimeApi; +use sp_blockchain::HeaderBackend; +use sp_consensus_babe::BabeApi; +use sp_core::traits::SpawnNamed; +use std::sync::Arc; +use substrate_prometheus_endpoint::Registry; + +pub use polkadot_approval_distribution::ApprovalDistribution as ApprovalDistributionSubsystem; +pub use polkadot_availability_bitfield_distribution::BitfieldDistribution as BitfieldDistributionSubsystem; +pub use polkadot_availability_distribution::AvailabilityDistributionSubsystem; +pub use polkadot_availability_recovery::AvailabilityRecoverySubsystem; +pub use polkadot_collator_protocol::{CollatorProtocolSubsystem, ProtocolSide}; +pub use polkadot_dispute_distribution::DisputeDistributionSubsystem; +pub use polkadot_gossip_support::GossipSupport as GossipSupportSubsystem; +pub use polkadot_network_bridge::NetworkBridge as NetworkBridgeSubsystem; +pub use polkadot_node_collation_generation::CollationGenerationSubsystem; +pub use polkadot_node_core_approval_voting::ApprovalVotingSubsystem; +pub use polkadot_node_core_av_store::AvailabilityStoreSubsystem; +pub use polkadot_node_core_backing::CandidateBackingSubsystem; +pub use polkadot_node_core_bitfield_signing::BitfieldSigningSubsystem; +pub use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; +pub use polkadot_node_core_chain_api::ChainApiSubsystem; +pub use polkadot_node_core_chain_selection::ChainSelectionSubsystem; +pub use polkadot_node_core_dispute_coordinator::DisputeCoordinatorSubsystem; +pub use polkadot_node_core_provisioner::ProvisionerSubsystem; +pub use polkadot_node_core_runtime_api::RuntimeApiSubsystem; +pub use polkadot_statement_distribution::StatementDistribution as StatementDistributionSubsystem; + +/// Arguments passed for overseer construction. +pub struct OverseerGenArgs<'a, Spawner, RuntimeClient> +where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, +{ + /// Set of initial relay chain leaves to track. + pub leaves: Vec, + /// The keystore to use for i.e. validator keys. + pub keystore: Arc, + /// Runtime client generic, providing the `ProvieRuntimeApi` trait besides others. + pub runtime_client: Arc, + /// The underlying key value store for the parachains. + pub parachains_db: Arc, + /// Underlying network service implementation. + pub network_service: Arc>, + /// Underlying authority discovery service. + pub authority_discovery_service: AuthorityDiscoveryService, + /// POV request receiver + pub pov_req_receiver: IncomingRequestReceiver, + pub chunk_req_receiver: IncomingRequestReceiver, + pub collation_req_receiver: IncomingRequestReceiver, + pub available_data_req_receiver: + IncomingRequestReceiver, + pub statement_req_receiver: IncomingRequestReceiver, + pub dispute_req_receiver: IncomingRequestReceiver, + /// Prometheus registry, commonly used for production systems, less so for test. + pub registry: Option<&'a Registry>, + /// Task spawner to be used throughout the overseer and the APIs it provides. + pub spawner: Spawner, + /// Configuration for the approval voting subsystem. + pub approval_voting_config: ApprovalVotingConfig, + /// Configuration for the availability store subsystem. + pub availability_config: AvailabilityConfig, + /// Configuration for the candidate validation subsystem. + pub candidate_validation_config: CandidateValidationConfig, + /// Configuration for the chain selection subsystem. + pub chain_selection_config: ChainSelectionConfig, + /// Configuration for the dispute coordinator subsystem. + pub dispute_coordinator_config: DisputeCoordinatorConfig, +} + +/// Obtain a prepared `OverseerBuilder`, that is initialized +/// with all default values. +pub fn prepared_overseer_builder( + OverseerGenArgs { + leaves, + keystore, + runtime_client, + parachains_db, + network_service, + authority_discovery_service, + pov_req_receiver, + chunk_req_receiver, + collation_req_receiver: _, + available_data_req_receiver, + statement_req_receiver, + dispute_req_receiver, + registry, + spawner, + approval_voting_config, + availability_config, + candidate_validation_config, + chain_selection_config, + dispute_coordinator_config, + }: OverseerGenArgs<'_, Spawner, RuntimeClient>, +) -> Result< + OverseerBuilder< + Spawner, + Arc, + CandidateValidationSubsystem, + CandidateBackingSubsystem, + StatementDistributionSubsystem, + AvailabilityDistributionSubsystem, + AvailabilityRecoverySubsystem, + BitfieldSigningSubsystem, + BitfieldDistributionSubsystem, + ProvisionerSubsystem, + RuntimeApiSubsystem, + AvailabilityStoreSubsystem, + NetworkBridgeSubsystem< + Arc>, + AuthorityDiscoveryService, + >, + ChainApiSubsystem, + CollationGenerationSubsystem, + CollatorProtocolSubsystem, + ApprovalDistributionSubsystem, + ApprovalVotingSubsystem, + GossipSupportSubsystem, + DisputeCoordinatorSubsystem, + DisputeDistributionSubsystem, + ChainSelectionSubsystem, + >, + Error, +> +where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, +{ + use polkadot_node_subsystem_util::metrics::Metrics; + use std::iter::FromIterator; + + let metrics = ::register(registry)?; + + let builder = Overseer::builder() + .availability_distribution(AvailabilityDistributionSubsystem::new( + keystore.clone(), + IncomingRequestReceivers { pov_req_receiver, chunk_req_receiver }, + Metrics::register(registry)?, + )) + .availability_recovery(AvailabilityRecoverySubsystem::with_chunks_only( + available_data_req_receiver, + Metrics::register(registry)?, + )) + .availability_store(AvailabilityStoreSubsystem::new( + parachains_db.clone(), + availability_config, + Metrics::register(registry)?, + )) + .bitfield_distribution(BitfieldDistributionSubsystem::new(Metrics::register(registry)?)) + .bitfield_signing(BitfieldSigningSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .candidate_backing(CandidateBackingSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .candidate_validation(CandidateValidationSubsystem::with_config( + candidate_validation_config, + Metrics::register(registry)?, // candidate-validation metrics + Metrics::register(registry)?, // validation host metrics + )) + .chain_api(ChainApiSubsystem::new(runtime_client.clone(), Metrics::register(registry)?)) + .collation_generation(CollationGenerationSubsystem::new(Metrics::register(registry)?)) + .collator_protocol(CollatorProtocolSubsystem::new(ProtocolSide::Validator { + keystore: keystore.clone(), + eviction_policy: Default::default(), + metrics: Metrics::register(registry)?, + })) + .network_bridge(NetworkBridgeSubsystem::new( + network_service.clone(), + authority_discovery_service.clone(), + Box::new(network_service.clone()), + Metrics::register(registry)?, + )) + .provisioner(ProvisionerSubsystem::new(spawner.clone(), (), Metrics::register(registry)?)) + .runtime_api(RuntimeApiSubsystem::new( + runtime_client.clone(), + Metrics::register(registry)?, + spawner.clone(), + )) + .statement_distribution(StatementDistributionSubsystem::new( + keystore.clone(), + statement_req_receiver, + Metrics::register(registry)?, + )) + .approval_distribution(ApprovalDistributionSubsystem::new(Metrics::register(registry)?)) + .approval_voting(ApprovalVotingSubsystem::with_config( + approval_voting_config, + parachains_db.clone(), + keystore.clone(), + Box::new(network_service), + Metrics::register(registry)?, + )) + .gossip_support(GossipSupportSubsystem::new( + keystore.clone(), + authority_discovery_service.clone(), + )) + .dispute_coordinator(DisputeCoordinatorSubsystem::new( + parachains_db.clone(), + dispute_coordinator_config, + keystore.clone(), + Metrics::register(registry)?, + )) + .dispute_distribution(DisputeDistributionSubsystem::new( + keystore, + dispute_req_receiver, + authority_discovery_service, + Metrics::register(registry)?, + )) + .chain_selection(ChainSelectionSubsystem::new(chain_selection_config, parachains_db)) + .leaves(Vec::from_iter( + leaves + .into_iter() + .map(|BlockInfo { hash, parent_hash: _, number }| (hash, number)), + )) + .activation_external_listeners(Default::default()) + .span_per_active_leaf(Default::default()) + .active_leaves(Default::default()) + .supports_parachains(runtime_client) + .known_leaves(LruCache::new(KNOWN_LEAVES_CACHE_SIZE)) + .metrics(metrics) + .spawner(spawner); + Ok(builder) +} + +/// Trait for the `fn` generating the overseer. +/// +/// Default behavior is to create an unmodified overseer, as `RealOverseerGen` +/// would do. +pub trait OverseerGen { + /// Overwrite the full generation of the overseer, including the subsystems. + fn generate( + &self, + connector: OverseerConnector, + args: OverseerGenArgs<'_, Spawner, RuntimeClient>, + ) -> Result<(Overseer>, OverseerHandle), Error> + where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, + { + let gen = RealOverseerGen; + RealOverseerGen::generate::(&gen, connector, args) + } + // It would be nice to make `create_subsystems` part of this trait, + // but the amount of generic arguments that would be required as + // as consequence make this rather annoying to implement and use. +} + +use polkadot_overseer::KNOWN_LEAVES_CACHE_SIZE; + +/// The regular set of subsystems. +pub struct RealOverseerGen; + +impl OverseerGen for RealOverseerGen { + fn generate( + &self, + connector: OverseerConnector, + args: OverseerGenArgs<'_, Spawner, RuntimeClient>, + ) -> Result<(Overseer>, OverseerHandle), Error> + where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, + { + prepared_overseer_builder(args)? + .build_with_connector(connector) + .map_err(|e| e.into()) + } +} diff --git a/bin/rialto/node/src/parachains_db.rs b/bin/rialto/node/src/parachains_db.rs new file mode 100644 index 000000000000..bf2052043c98 --- /dev/null +++ b/bin/rialto/node/src/parachains_db.rs @@ -0,0 +1,104 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! This is almost 1:1 copy of `node/service/parachains_db/mod.rs` file from Polkadot repository. +//! The only exception is that we don't support db upgrades => no `upgrade.rs` module. + +use kvdb::KeyValueDB; +use std::{io, path::PathBuf, sync::Arc}; + +mod columns { + pub const NUM_COLUMNS: u32 = 5; + + pub const COL_AVAILABILITY_DATA: u32 = 0; + pub const COL_AVAILABILITY_META: u32 = 1; + pub const COL_APPROVAL_DATA: u32 = 2; + pub const COL_CHAIN_SELECTION_DATA: u32 = 3; + pub const COL_DISPUTE_COORDINATOR_DATA: u32 = 4; +} + +/// Columns used by different subsystems. +#[derive(Debug, Clone)] +pub struct ColumnsConfig { + /// The column used by the av-store for data. + pub col_availability_data: u32, + /// The column used by the av-store for meta information. + pub col_availability_meta: u32, + /// The column used by approval voting for data. + pub col_approval_data: u32, + /// The column used by chain selection for data. + pub col_chain_selection_data: u32, + /// The column used by dispute coordinator for data. + pub col_dispute_coordinator_data: u32, +} + +/// The real columns used by the parachains DB. +pub const REAL_COLUMNS: ColumnsConfig = ColumnsConfig { + col_availability_data: columns::COL_AVAILABILITY_DATA, + col_availability_meta: columns::COL_AVAILABILITY_META, + col_approval_data: columns::COL_APPROVAL_DATA, + col_chain_selection_data: columns::COL_CHAIN_SELECTION_DATA, + col_dispute_coordinator_data: columns::COL_DISPUTE_COORDINATOR_DATA, +}; + +/// The cache size for each column, in megabytes. +#[derive(Debug, Clone)] +pub struct CacheSizes { + /// Cache used by availability data. + pub availability_data: usize, + /// Cache used by availability meta. + pub availability_meta: usize, + /// Cache used by approval data. + pub approval_data: usize, +} + +impl Default for CacheSizes { + fn default() -> Self { + CacheSizes { availability_data: 25, availability_meta: 1, approval_data: 5 } + } +} + +fn other_io_error(err: String) -> io::Error { + io::Error::new(io::ErrorKind::Other, err) +} + +/// Open the database on disk, creating it if it doesn't exist. +pub fn open_creating(root: PathBuf, cache_sizes: CacheSizes) -> io::Result> { + use kvdb_rocksdb::{Database, DatabaseConfig}; + + let path = root.join("parachains").join("db"); + + let mut db_config = DatabaseConfig::with_columns(columns::NUM_COLUMNS); + + let _ = db_config + .memory_budget + .insert(columns::COL_AVAILABILITY_DATA, cache_sizes.availability_data); + let _ = db_config + .memory_budget + .insert(columns::COL_AVAILABILITY_META, cache_sizes.availability_meta); + let _ = db_config + .memory_budget + .insert(columns::COL_APPROVAL_DATA, cache_sizes.approval_data); + + let path_str = path + .to_str() + .ok_or_else(|| other_io_error(format!("Bad database path: {:?}", path)))?; + + std::fs::create_dir_all(&path_str)?; + let db = Database::open(&db_config, path_str)?; + + Ok(Arc::new(db)) +} diff --git a/bin/rialto/node/src/service.rs b/bin/rialto/node/src/service.rs new file mode 100644 index 000000000000..fb774d86cca9 --- /dev/null +++ b/bin/rialto/node/src/service.rs @@ -0,0 +1,769 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto chain node service. +//! +//! The code is mostly copy of `service/src/lib.rs` file from Polkadot repository +//! without optional functions. + +// this warning comes from Error enum (sc_cli::Error in particular) && it isn't easy to use box +// there +#![allow(clippy::large_enum_variant)] +// this warning comes from `sc_service::PartialComponents` type +#![allow(clippy::type_complexity)] + +use crate::overseer::{OverseerGen, OverseerGenArgs}; + +use polkadot_node_core_approval_voting::Config as ApprovalVotingConfig; +use polkadot_node_core_av_store::Config as AvailabilityConfig; +use polkadot_node_core_candidate_validation::Config as CandidateValidationConfig; +use polkadot_node_core_chain_selection::Config as ChainSelectionConfig; +use polkadot_node_core_dispute_coordinator::Config as DisputeCoordinatorConfig; +use polkadot_node_network_protocol::request_response::IncomingRequest; +use polkadot_overseer::{BlockInfo, OverseerConnector}; +use polkadot_primitives::v1::BlockId; +use rialto_runtime::{self, opaque::Block, RuntimeApi}; +use sc_client_api::ExecutorProvider; +use sc_executor::{NativeElseWasmExecutor, NativeExecutionDispatch}; +use sc_finality_grandpa::FinalityProofProvider as GrandpaFinalityProofProvider; +use sc_service::{config::PrometheusConfig, Configuration, TaskManager}; +use sc_telemetry::{Telemetry, TelemetryWorker}; +use sp_api::{ConstructRuntimeApi, HeaderT}; +use sp_consensus::SelectChain; +use sp_runtime::traits::{BlakeTwo256, Block as BlockT}; +use std::{sync::Arc, time::Duration}; +use substrate_prometheus_endpoint::Registry; + +pub use polkadot_overseer::Handle; +pub use polkadot_primitives::v1::ParachainHost; +pub use sc_client_api::AuxStore; +pub use sp_authority_discovery::AuthorityDiscoveryApi; +pub use sp_blockchain::HeaderBackend; +pub use sp_consensus_babe::BabeApi; + +pub type Executor = NativeElseWasmExecutor; + +// Our native executor instance. +pub struct ExecutorDispatch; + +impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + + fn dispatch(method: &str, data: &[u8]) -> Option> { + rialto_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + rialto_runtime::native_version() + } +} + +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error(transparent)] + Io(#[from] std::io::Error), + + #[error(transparent)] + Cli(#[from] sc_cli::Error), + + #[error(transparent)] + Blockchain(#[from] sp_blockchain::Error), + + #[error(transparent)] + Consensus(#[from] sp_consensus::Error), + + #[error(transparent)] + Service(#[from] sc_service::Error), + + #[error(transparent)] + Telemetry(#[from] sc_telemetry::Error), + + #[error("Failed to create an overseer")] + Overseer(#[from] polkadot_overseer::SubsystemError), + + #[error(transparent)] + Prometheus(#[from] substrate_prometheus_endpoint::PrometheusError), + + #[error("Authorities require the real overseer implementation")] + AuthoritiesRequireRealOverseer, + + #[error("Creating a custom database is required for validators")] + DatabasePathRequired, +} + +type FullClient = sc_service::TFullClient; +type FullBackend = sc_service::TFullBackend; +type FullSelectChain = sc_consensus::LongestChain; +type FullGrandpaBlockImport = + sc_finality_grandpa::GrandpaBlockImport; +type FullTransactionPool = sc_transaction_pool::FullPool; +type FullBabeBlockImport = + sc_consensus_babe::BabeBlockImport; +type FullBabeLink = sc_consensus_babe::BabeLink; +type FullGrandpaLink = sc_finality_grandpa::LinkHalf; + +/// A set of APIs that polkadot-like runtimes must implement. +/// +/// This is the copy of `polkadot_service::RuntimeApiCollection` with some APIs removed +/// (right now - MMR and BEEFY). +pub trait RequiredApiCollection: + sp_transaction_pool::runtime_api::TaggedTransactionQueue + + sp_api::ApiExt + + sp_consensus_babe::BabeApi + + sp_finality_grandpa::GrandpaApi + + polkadot_primitives::v1::ParachainHost + + sp_block_builder::BlockBuilder + + frame_system_rpc_runtime_api::AccountNonceApi< + Block, + bp_rialto::AccountId, + rialto_runtime::Index, + > + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi + + sp_api::Metadata + + sp_offchain::OffchainWorkerApi + + sp_session::SessionKeys + + sp_authority_discovery::AuthorityDiscoveryApi +where + >::StateBackend: sp_api::StateBackend, +{ +} + +impl RequiredApiCollection for Api +where + Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue + + sp_api::ApiExt + + sp_consensus_babe::BabeApi + + sp_finality_grandpa::GrandpaApi + + polkadot_primitives::v1::ParachainHost + + sp_block_builder::BlockBuilder + + frame_system_rpc_runtime_api::AccountNonceApi< + Block, + bp_rialto::AccountId, + rialto_runtime::Index, + > + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi + + sp_api::Metadata + + sp_offchain::OffchainWorkerApi + + sp_session::SessionKeys + + sp_authority_discovery::AuthorityDiscoveryApi, + >::StateBackend: sp_api::StateBackend, +{ +} + +// If we're using prometheus, use a registry with a prefix of `polkadot`. +fn set_prometheus_registry(config: &mut Configuration) -> Result<(), Error> { + if let Some(PrometheusConfig { registry, .. }) = config.prometheus_config.as_mut() { + *registry = Registry::new_custom(Some("polkadot".into()), None)?; + } + + Ok(()) +} + +pub fn new_partial( + config: &mut Configuration, +) -> Result< + sc_service::PartialComponents< + FullClient, + FullBackend, + FullSelectChain, + sc_consensus::DefaultImportQueue, + FullTransactionPool, + ( + impl Fn( + sc_rpc::DenyUnsafe, + sc_rpc::SubscriptionTaskExecutor, + ) -> Result, sc_service::Error>, + (FullBabeBlockImport, FullGrandpaLink, FullBabeLink), + sc_finality_grandpa::SharedVoterState, + std::time::Duration, + Option, + ), + >, + Error, +> +where + RuntimeApi: ConstructRuntimeApi + Send + Sync + 'static, + >::RuntimeApi: + RequiredApiCollection>, + ExecutorDispatch: NativeExecutionDispatch + 'static, +{ + set_prometheus_registry(config)?; + + let telemetry = config + .telemetry_endpoints + .clone() + .filter(|x| !x.is_empty()) + .map(|endpoints| -> Result<_, sc_telemetry::Error> { + let worker = TelemetryWorker::new(16)?; + let telemetry = worker.handle().new_telemetry(endpoints); + Ok((worker, telemetry)) + }) + .transpose()?; + + let executor = NativeElseWasmExecutor::::new( + config.wasm_method, + config.default_heap_pages, + config.max_runtime_instances, + ); + + let (client, backend, keystore_container, task_manager) = + sc_service::new_full_parts::( + config, + telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, + )?; + let client = Arc::new(client); + + let telemetry = telemetry.map(|(worker, telemetry)| { + task_manager.spawn_handle().spawn("telemetry", None, worker.run()); + telemetry + }); + + let select_chain = sc_consensus::LongestChain::new(backend.clone()); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.role.is_authority().into(), + config.prometheus_registry(), + task_manager.spawn_essential_handle(), + client.clone(), + ); + + let (grandpa_block_import, grandpa_link) = + sc_finality_grandpa::block_import_with_authority_set_hard_forks( + client.clone(), + &(client.clone() as Arc<_>), + select_chain.clone(), + Vec::new(), + telemetry.as_ref().map(|x| x.handle()), + )?; + let justification_import = grandpa_block_import.clone(); + + let babe_config = sc_consensus_babe::Config::get_or_compute(&*client)?; + let (block_import, babe_link) = + sc_consensus_babe::block_import(babe_config.clone(), grandpa_block_import, client.clone())?; + + let slot_duration = babe_link.config().slot_duration(); + let import_queue = sc_consensus_babe::import_queue( + babe_link.clone(), + block_import.clone(), + Some(Box::new(justification_import)), + client.clone(), + select_chain.clone(), + move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot)) + }, + &task_manager.spawn_essential_handle(), + config.prometheus_registry(), + sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), + telemetry.as_ref().map(|x| x.handle()), + )?; + + let justification_stream = grandpa_link.justification_stream(); + let shared_authority_set = grandpa_link.shared_authority_set().clone(); + let shared_voter_state = sc_finality_grandpa::SharedVoterState::empty(); + + let import_setup = (block_import, grandpa_link, babe_link); + let rpc_setup = shared_voter_state.clone(); + + let slot_duration = babe_config.slot_duration(); + + let rpc_extensions_builder = { + let client = client.clone(); + let transaction_pool = transaction_pool.clone(); + let backend = backend.clone(); + + move |deny_unsafe, + subscription_executor: sc_rpc::SubscriptionTaskExecutor| + -> Result, sc_service::Error> { + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + use sc_finality_grandpa_rpc::{GrandpaApi, GrandpaRpcHandler}; + use substrate_frame_rpc_system::{FullSystem, SystemApi}; + + let backend = backend.clone(); + let client = client.clone(); + let pool = transaction_pool.clone(); + + let shared_voter_state = shared_voter_state.clone(); + + let finality_proof_provider = GrandpaFinalityProofProvider::new_for_service( + backend, + Some(shared_authority_set.clone()), + ); + + let mut io = jsonrpc_core::IoHandler::default(); + io.extend_with(SystemApi::to_delegate(FullSystem::new( + client.clone(), + pool, + deny_unsafe, + ))); + io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client))); + io.extend_with(GrandpaApi::to_delegate(GrandpaRpcHandler::new( + shared_authority_set.clone(), + shared_voter_state, + justification_stream.clone(), + subscription_executor, + finality_proof_provider, + ))); + + Ok(io) + } + }; + + Ok(sc_service::PartialComponents { + client, + backend, + task_manager, + keystore_container, + select_chain, + import_queue, + transaction_pool, + other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, telemetry), + }) +} + +pub struct NewFull { + pub task_manager: TaskManager, + pub client: C, + pub overseer_handle: Option, + pub network: Arc::Hash>>, + pub rpc_handlers: sc_service::RpcHandlers, + pub backend: Arc, +} + +/// The maximum number of active leaves we forward to the [`Overseer`] on start up. +const MAX_ACTIVE_LEAVES: usize = 4; + +/// Returns the active leaves the overseer should start with. +async fn active_leaves( + select_chain: &sc_consensus::LongestChain, + client: &FullClient, +) -> Result, Error> +where + RuntimeApi: ConstructRuntimeApi + Send + Sync + 'static, + >::RuntimeApi: + RequiredApiCollection>, + ExecutorDispatch: NativeExecutionDispatch + 'static, +{ + let best_block = select_chain.best_chain().await?; + + let mut leaves = select_chain + .leaves() + .await + .unwrap_or_default() + .into_iter() + .filter_map(|hash| { + let number = client.number(hash).ok()??; + + // Only consider leaves that are in maximum an uncle of the best block. + if number < best_block.number().saturating_sub(1) || hash == best_block.hash() { + return None + } + + let parent_hash = client.header(&BlockId::Hash(hash)).ok()??.parent_hash; + + Some(BlockInfo { hash, parent_hash, number }) + }) + .collect::>(); + + // Sort by block number and get the maximum number of leaves + leaves.sort_by_key(|b| b.number); + + leaves.push(BlockInfo { + hash: best_block.hash(), + parent_hash: *best_block.parent_hash(), + number: *best_block.number(), + }); + + Ok(leaves.into_iter().rev().take(MAX_ACTIVE_LEAVES).collect()) +} + +// Create a new full node. +pub fn new_full( + mut config: Configuration, + program_path: Option, + overseer_gen: impl OverseerGen, +) -> Result>, Error> +where + RuntimeApi: ConstructRuntimeApi + Send + Sync + 'static, + >::RuntimeApi: + RequiredApiCollection>, + ExecutorDispatch: NativeExecutionDispatch + 'static, +{ + let is_collator = false; + + let role = config.role.clone(); + let force_authoring = config.force_authoring; + let backoff_authoring_blocks = + Some(sc_consensus_slots::BackoffAuthoringOnFinalizedHeadLagging::default()); + + let disable_grandpa = config.disable_grandpa; + let name = config.network.node_name.clone(); + + let sc_service::PartialComponents { + client, + backend, + mut task_manager, + keystore_container, + select_chain, + import_queue, + transaction_pool, + other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry), + } = new_partial(&mut config)?; + + let prometheus_registry = config.prometheus_registry().cloned(); + + let overseer_connector = OverseerConnector::default(); + + let shared_voter_state = rpc_setup; + let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; + + // Note: GrandPa is pushed before the Polkadot-specific protocols. This doesn't change + // anything in terms of behaviour, but makes the logs more consistent with the other + // Substrate nodes. + config.network.extra_sets.push(sc_finality_grandpa::grandpa_peers_set_config()); + + { + use polkadot_network_bridge::{peer_sets_info, IsAuthority}; + let is_authority = if role.is_authority() { IsAuthority::Yes } else { IsAuthority::No }; + config.network.extra_sets.extend(peer_sets_info(is_authority)); + } + + let (pov_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + let (chunk_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + let (collation_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + let (available_data_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + let (statement_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + let (dispute_req_receiver, cfg) = IncomingRequest::get_config_receiver(); + config.network.request_response_protocols.push(cfg); + + let warp_sync = Arc::new(sc_finality_grandpa::warp_proof::NetworkProvider::new( + backend.clone(), + import_setup.1.shared_authority_set().clone(), + vec![], + )); + + let (network, system_rpc_tx, network_starter) = + sc_service::build_network(sc_service::BuildNetworkParams { + config: &config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue, + block_announce_validator_builder: None, + warp_sync: Some(warp_sync), + })?; + + if config.offchain_worker.enabled { + let _ = sc_service::build_offchain_workers( + &config, + task_manager.spawn_handle(), + client.clone(), + network.clone(), + ); + } + + let parachains_db = crate::parachains_db::open_creating( + config.database.path().ok_or(Error::DatabasePathRequired)?.into(), + crate::parachains_db::CacheSizes::default(), + )?; + + let availability_config = AvailabilityConfig { + col_data: crate::parachains_db::REAL_COLUMNS.col_availability_data, + col_meta: crate::parachains_db::REAL_COLUMNS.col_availability_meta, + }; + + let approval_voting_config = ApprovalVotingConfig { + col_data: crate::parachains_db::REAL_COLUMNS.col_approval_data, + slot_duration_millis: slot_duration.as_millis() as u64, + }; + + let candidate_validation_config = CandidateValidationConfig { + artifacts_cache_path: config + .database + .path() + .ok_or(Error::DatabasePathRequired)? + .join("pvf-artifacts"), + program_path: match program_path { + None => std::env::current_exe()?, + Some(p) => p, + }, + }; + + let chain_selection_config = ChainSelectionConfig { + col_data: crate::parachains_db::REAL_COLUMNS.col_chain_selection_data, + stagnant_check_interval: polkadot_node_core_chain_selection::StagnantCheckInterval::never(), + }; + + let dispute_coordinator_config = DisputeCoordinatorConfig { + col_data: crate::parachains_db::REAL_COLUMNS.col_dispute_coordinator_data, + }; + + let rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { + config, + backend: backend.clone(), + client: client.clone(), + keystore: keystore_container.sync_keystore(), + network: network.clone(), + rpc_extensions_builder: Box::new(rpc_extensions_builder), + transaction_pool: transaction_pool.clone(), + task_manager: &mut task_manager, + system_rpc_tx, + telemetry: telemetry.as_mut(), + })?; + + let (block_import, link_half, babe_link) = import_setup; + + let overseer_client = client.clone(); + let spawner = task_manager.spawn_handle(); + let active_leaves = futures::executor::block_on(active_leaves(&select_chain, &*client))?; + + let authority_discovery_service = if role.is_authority() || is_collator { + use futures::StreamExt; + use sc_network::Event; + + let authority_discovery_role = if role.is_authority() { + sc_authority_discovery::Role::PublishAndDiscover(keystore_container.keystore()) + } else { + // don't publish our addresses when we're only a collator + sc_authority_discovery::Role::Discover + }; + let dht_event_stream = + network.event_stream("authority-discovery").filter_map(|e| async move { + match e { + Event::Dht(e) => Some(e), + _ => None, + } + }); + let (worker, service) = sc_authority_discovery::new_worker_and_service_with_config( + sc_authority_discovery::WorkerConfig { + publish_non_global_ips: auth_disc_publish_non_global_ips, + ..Default::default() + }, + client.clone(), + network.clone(), + Box::pin(dht_event_stream), + authority_discovery_role, + prometheus_registry.clone(), + ); + + task_manager + .spawn_handle() + .spawn("authority-discovery-worker", None, worker.run()); + Some(service) + } else { + None + }; + + // we'd say let overseer_handler = + // authority_discovery_service.map(|authority_discovery_service|, ...), but in that case we + // couldn't use ? to propagate errors + let local_keystore = keystore_container.local_keystore(); + let maybe_params = + local_keystore.and_then(move |k| authority_discovery_service.map(|a| (a, k))); + + let overseer_handle = if let Some((authority_discovery_service, keystore)) = maybe_params { + let (overseer, overseer_handle) = overseer_gen + .generate::( + overseer_connector, + OverseerGenArgs { + leaves: active_leaves, + keystore, + runtime_client: overseer_client.clone(), + parachains_db, + availability_config, + approval_voting_config, + network_service: network.clone(), + authority_discovery_service, + registry: prometheus_registry.as_ref(), + spawner, + candidate_validation_config, + available_data_req_receiver, + chain_selection_config, + chunk_req_receiver, + collation_req_receiver, + dispute_coordinator_config, + dispute_req_receiver, + pov_req_receiver, + statement_req_receiver, + }, + )?; + let handle = Handle::new(overseer_handle); + + { + let handle = handle.clone(); + task_manager.spawn_essential_handle().spawn_blocking( + "overseer", + None, + Box::pin(async move { + use futures::{pin_mut, select, FutureExt}; + + let forward = polkadot_overseer::forward_events(overseer_client, handle); + + let forward = forward.fuse(); + let overseer_fut = overseer.run().fuse(); + + pin_mut!(overseer_fut); + pin_mut!(forward); + + select! { + _ = forward => (), + _ = overseer_fut => (), + complete => (), + } + }), + ); + } + + Some(handle) + } else { + None + }; + + if role.is_authority() { + let can_author_with = + sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); + + let proposer = sc_basic_authorship::ProposerFactory::new( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry.as_ref(), + telemetry.as_ref().map(|x| x.handle()), + ); + + let client_clone = client.clone(); + let overseer_handle = + overseer_handle.as_ref().ok_or(Error::AuthoritiesRequireRealOverseer)?.clone(); + let slot_duration = babe_link.config().slot_duration(); + let babe_config = sc_consensus_babe::BabeParams { + keystore: keystore_container.sync_keystore(), + client: client.clone(), + select_chain, + block_import, + env: proposer, + sync_oracle: network.clone(), + justification_sync_link: network.clone(), + create_inherent_data_providers: move |parent, ()| { + let client_clone = client_clone.clone(); + let overseer_handle = overseer_handle.clone(); + async move { + let parachain = polkadot_node_core_parachains_inherent::ParachainsInherentDataProvider::create( + &*client_clone, + overseer_handle, + parent, + ) + .await + .map_err(Box::new)?; + + let uncles = sc_consensus_uncles::create_uncles_inherent_data_provider( + &*client_clone, + parent, + )?; + + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot, uncles, parachain)) + } + }, + force_authoring, + backoff_authoring_blocks, + babe_link, + can_author_with, + block_proposal_slot_portion: sc_consensus_babe::SlotProportion::new(2f32 / 3f32), + max_block_proposal_slot_portion: None, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; + + let babe = sc_consensus_babe::start_babe(babe_config)?; + task_manager.spawn_essential_handle().spawn_blocking("babe", None, babe); + } + + // if the node isn't actively participating in consensus then it doesn't + // need a keystore, regardless of which protocol we use below. + let keystore_opt = + if role.is_authority() { Some(keystore_container.sync_keystore()) } else { None }; + + let config = sc_finality_grandpa::Config { + // FIXME substrate#1578 make this available through chainspec + gossip_duration: Duration::from_millis(1000), + justification_period: 512, + name: Some(name), + observer_enabled: false, + keystore: keystore_opt, + local_role: role, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; + + let enable_grandpa = !disable_grandpa; + if enable_grandpa { + // start the full GRANDPA voter + // NOTE: unlike in substrate we are currently running the full + // GRANDPA voter protocol for all full nodes (regardless of whether + // they're validators or not). at this point the full voter should + // provide better guarantees of block and vote data availability than + // the observer. + + // add a custom voting rule to temporarily stop voting for new blocks + // after the given pause block is finalized and restarting after the + // given delay. + let builder = sc_finality_grandpa::VotingRulesBuilder::default(); + + let voting_rule = builder.build(); + let grandpa_config = sc_finality_grandpa::GrandpaParams { + config, + link: link_half, + network: network.clone(), + voting_rule, + prometheus_registry, + shared_voter_state, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; + + task_manager.spawn_essential_handle().spawn_blocking( + "grandpa-voter", + None, + sc_finality_grandpa::run_grandpa_voter(grandpa_config)?, + ); + } + + network_starter.start_network(); + + Ok(NewFull { task_manager, client, overseer_handle, network, rpc_handlers, backend }) +} + +pub fn build_full( + config: Configuration, + overseer_gen: impl OverseerGen, +) -> Result>, Error> { + new_full(config, None, overseer_gen) +} diff --git a/bin/rialto/runtime/Cargo.toml b/bin/rialto/runtime/Cargo.toml new file mode 100644 index 000000000000..36dc436ddca6 --- /dev/null +++ b/bin/rialto/runtime/Cargo.toml @@ -0,0 +1,134 @@ +[package] +name = "rialto-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive"] } +hex-literal = "0.3" +libsecp256k1 = { version = "0.7", optional = true, default-features = false, features = ["hmac"] } +log = { version = "0.4.14", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true, features = ["derive"] } + +# Bridge dependencies + +bp-header-chain = { path = "../../../primitives/header-chain", default-features = false } +bp-message-dispatch = { path = "../../../primitives/message-dispatch", default-features = false } +bp-messages = { path = "../../../primitives/messages", default-features = false } +bp-millau = { path = "../../../primitives/chain-millau", default-features = false } +bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false } +bp-runtime = { path = "../../../primitives/runtime", default-features = false } +bridge-runtime-common = { path = "../../runtime-common", default-features = false } +pallet-bridge-dispatch = { path = "../../../modules/dispatch", default-features = false } +pallet-bridge-grandpa = { path = "../../../modules/grandpa", default-features = false } +pallet-bridge-messages = { path = "../../../modules/messages", default-features = false } +pallet-shift-session-manager = { path = "../../../modules/shift-session-manager", default-features = false } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +# Polkadot (parachain) Dependencies + +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } + +[dev-dependencies] +libsecp256k1 = { version = "0.7", features = ["hmac"] } + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "bp-header-chain/std", + "bp-message-dispatch/std", + "bp-messages/std", + "bp-millau/std", + "bp-rialto/std", + "bp-runtime/std", + "bridge-runtime-common/std", + "codec/std", + "frame-benchmarking/std", + "frame-executive/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "log/std", + "pallet-authority-discovery/std", + "pallet-babe/std", + "pallet-balances/std", + "pallet-bridge-dispatch/std", + "pallet-bridge-grandpa/std", + "pallet-bridge-messages/std", + "pallet-grandpa/std", + "pallet-shift-session-manager/std", + "pallet-sudo/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "polkadot-primitives/std", + "polkadot-runtime-common/std", + "polkadot-runtime-parachains/std", + "scale-info/std", + "serde", + "sp-api/std", + "sp-authority-discovery/std", + "sp-block-builder/std", + "sp-consensus-babe/std", + "sp-core/std", + "sp-finality-grandpa/std", + "sp-inherents/std", + "sp-io/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-trie/std", + "sp-version/std", +] +runtime-benchmarks = [ + "bridge-runtime-common/runtime-benchmarks", + "frame-benchmarking", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "libsecp256k1", + "pallet-bridge-messages/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", +] diff --git a/bridges/bin/rialto/runtime/build.rs b/bin/rialto/runtime/build.rs similarity index 100% rename from bridges/bin/rialto/runtime/build.rs rename to bin/rialto/runtime/build.rs diff --git a/bin/rialto/runtime/src/lib.rs b/bin/rialto/runtime/src/lib.rs new file mode 100644 index 000000000000..5e7e47490d58 --- /dev/null +++ b/bin/rialto/runtime/src/lib.rs @@ -0,0 +1,1153 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! The Rialto runtime. This can be compiled with `#[no_std]`, ready for Wasm. + +#![cfg_attr(not(feature = "std"), no_std)] +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit = "256"] +// Runtime-generated enums +#![allow(clippy::large_enum_variant)] +// Runtime-generated DecodeLimit::decode_all_With_depth_limit +#![allow(clippy::unnecessary_mut_passed)] +// From construct_runtime macro +#![allow(clippy::from_over_into)] + +// Make the WASM binary available. +#[cfg(feature = "std")] +include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); + +pub mod millau_messages; +pub mod parachains; + +use crate::millau_messages::{ToMillauMessagePayload, WithMillauMessageBridge}; + +use bridge_runtime_common::messages::{ + source::estimate_message_dispatch_and_delivery_fee, MessageBridge, +}; +use pallet_grandpa::{ + fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList, +}; +use pallet_transaction_payment::{FeeDetails, Multiplier, RuntimeDispatchInfo}; +use sp_api::impl_runtime_apis; +use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; +use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; +use sp_runtime::{ + create_runtime_str, generic, impl_opaque_keys, + traits::{AccountIdLookup, Block as BlockT, NumberFor, OpaqueKeys}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, FixedPointNumber, MultiSignature, MultiSigner, Perquintill, +}; +use sp_std::{collections::btree_map::BTreeMap, prelude::*}; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; + +// A few exports that help ease life for downstream crates. +pub use frame_support::{ + construct_runtime, parameter_types, + traits::{Currency, ExistenceRequirement, Imbalance, KeyOwnerProofSystem}, + weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, RuntimeDbWeight, Weight}, + StorageValue, +}; + +pub use frame_system::Call as SystemCall; +pub use pallet_balances::Call as BalancesCall; +pub use pallet_bridge_grandpa::Call as BridgeGrandpaMillauCall; +pub use pallet_bridge_messages::Call as MessagesCall; +pub use pallet_sudo::Call as SudoCall; +pub use pallet_timestamp::Call as TimestampCall; + +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; +pub use sp_runtime::{Perbill, Permill}; + +/// An index to a block. +pub type BlockNumber = bp_rialto::BlockNumber; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = bp_rialto::Signature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = bp_rialto::AccountId; + +/// The type for looking up accounts. We don't expect more than 4 billion of them, but you +/// never know... +pub type AccountIndex = u32; + +/// Balance of an account. +pub type Balance = bp_rialto::Balance; + +/// Index of a transaction in the chain. +pub type Index = bp_rialto::Index; + +/// A hash of some data used by the chain. +pub type Hash = bp_rialto::Hash; + +/// Hashing algorithm used by the chain. +pub type Hashing = bp_rialto::Hasher; + +/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know +/// the specifics of the runtime. They can then be made to be agnostic over specific formats +/// of data like extrinsics, allowing for them to continue syncing the network through upgrades +/// to even the core data structures. +pub mod opaque { + use super::*; + + pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic; + + /// Opaque block header type. + pub type Header = generic::Header; + /// Opaque block type. + pub type Block = generic::Block; + /// Opaque block identifier type. + pub type BlockId = generic::BlockId; +} + +impl_opaque_keys! { + pub struct SessionKeys { + pub babe: Babe, + pub grandpa: Grandpa, + pub para_validator: Initializer, + pub para_assignment: SessionInfo, + pub authority_discovery: AuthorityDiscovery, + } +} + +/// This runtime version. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("rialto-runtime"), + impl_name: create_runtime_str!("rialto-runtime"), + authoring_version: 1, + spec_version: 1, + impl_version: 1, + apis: RUNTIME_API_VERSIONS, + transaction_version: 1, +}; + +/// The version information used to identify this runtime when compiled natively. +#[cfg(feature = "std")] +pub fn native_version() -> NativeVersion { + NativeVersion { runtime_version: VERSION, can_author_with: Default::default() } +} + +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const Version: RuntimeVersion = VERSION; + pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 60_000_000, // ~0.06 ms = ~60 µs + write: 200_000_000, // ~0.2 ms = 200 µs + }; + pub const SS58Prefix: u8 = 48; +} + +impl frame_system::Config for Runtime { + /// The basic call filter to use in dispatchable. + type BaseCallFilter = frame_support::traits::Everything; + /// The identifier used to distinguish between accounts. + type AccountId = AccountId; + /// The aggregated dispatch type that is available for extrinsics. + type Call = Call; + /// The lookup mechanism to get account ID from whatever is passed in dispatchers. + type Lookup = AccountIdLookup; + /// The index type for storing how many extrinsics an account has signed. + type Index = Index; + /// The index type for blocks. + type BlockNumber = BlockNumber; + /// The type for hashing blocks and tries. + type Hash = Hash; + /// The hashing algorithm used. + type Hashing = Hashing; + /// The header type. + type Header = generic::Header; + /// The ubiquitous event type. + type Event = Event; + /// The ubiquitous origin type. + type Origin = Origin; + /// Maximum number of block number to block hash mappings to keep (oldest pruned first). + type BlockHashCount = BlockHashCount; + /// Version of the runtime. + type Version = Version; + /// Provides information about the pallet setup in the runtime. + type PalletInfo = PalletInfo; + /// What to do if a new account is created. + type OnNewAccount = (); + /// What to do if an account is fully reaped from the system. + type OnKilledAccount = (); + /// The data to be stored in an account. + type AccountData = pallet_balances::AccountData; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + /// Weight information for the extrinsics of this pallet. + type SystemWeightInfo = (); + /// Block and extrinsics weights: base values and limits. + type BlockWeights = bp_rialto::BlockWeights; + /// The maximum length of a block (in bytes). + type BlockLength = bp_rialto::BlockLength; + /// The weight of database operations that the runtime can invoke. + type DbWeight = DbWeight; + /// The designated SS58 prefix of this chain. + type SS58Prefix = SS58Prefix; + /// The set code logic, just the default since we're not a parachain. + type OnSetCode = (); +} + +/// The BABE epoch configuration at genesis. +pub const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration = + sp_consensus_babe::BabeEpochConfiguration { + c: bp_rialto::time_units::PRIMARY_PROBABILITY, + allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryVRFSlots, + }; + +parameter_types! { + pub const EpochDuration: u64 = bp_rialto::EPOCH_DURATION_IN_SLOTS as u64; + pub const ExpectedBlockTime: bp_rialto::Moment = bp_rialto::time_units::MILLISECS_PER_BLOCK; + pub const MaxAuthorities: u32 = 10; +} + +impl pallet_babe::Config for Runtime { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; + type MaxAuthorities = MaxAuthorities; + + // session module is the trigger + type EpochChangeTrigger = pallet_babe::ExternalTrigger; + + // equivocation related configuration - we don't expect any equivocations in our testnets + type KeyOwnerProofSystem = (); + type KeyOwnerProof = >::Proof; + type KeyOwnerIdentification = >::IdentificationTuple; + type HandleEquivocation = (); + + type DisabledValidators = (); + type WeightInfo = (); +} + +impl pallet_bridge_dispatch::Config for Runtime { + type Event = Event; + type BridgeMessageId = (bp_messages::LaneId, bp_messages::MessageNonce); + type Call = Call; + type CallFilter = frame_support::traits::Everything; + type EncodedCall = crate::millau_messages::FromMillauEncodedCall; + type SourceChainAccountId = bp_millau::AccountId; + type TargetChainAccountPublic = MultiSigner; + type TargetChainSignature = MultiSignature; + type AccountIdConverter = bp_rialto::AccountIdConverter; +} + +impl pallet_grandpa::Config for Runtime { + type Event = Event; + type Call = Call; + type MaxAuthorities = MaxAuthorities; + type KeyOwnerProofSystem = (); + type KeyOwnerProof = + >::Proof; + type KeyOwnerIdentification = >::IdentificationTuple; + type HandleEquivocation = (); + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); +} + +parameter_types! { + pub const MinimumPeriod: u64 = bp_rialto::SLOT_DURATION / 2; +} + +impl pallet_timestamp::Config for Runtime { + /// A timestamp: milliseconds since the UNIX epoch. + type Moment = bp_rialto::Moment; + type OnTimestampSet = Babe; + type MinimumPeriod = MinimumPeriod; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); +} + +parameter_types! { + pub const ExistentialDeposit: bp_rialto::Balance = 500; + // For weight estimation, we assume that the most locks on an individual account will be 50. + // This number may need to be adjusted in the future if this assumption no longer holds true. + pub const MaxLocks: u32 = 50; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for Runtime { + /// The type for recording an account's balance. + type Balance = Balance; + /// The ubiquitous event type. + type Event = Event; + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); + type MaxLocks = MaxLocks; + type MaxReserves = MaxReserves; + type ReserveIdentifier = [u8; 8]; +} + +parameter_types! { + pub const TransactionBaseFee: Balance = 0; + pub const TransactionByteFee: Balance = 1; + pub const OperationalFeeMultiplier: u8 = 5; + // values for following parameters are copied from polkadot repo, but it is fine + // not to sync them - we're not going to make Rialto a full copy of one of Polkadot-like chains + pub const TargetBlockFullness: Perquintill = Perquintill::from_percent(25); + pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000); + pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128); +} + +impl pallet_transaction_payment::Config for Runtime { + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; + type WeightToFee = bp_rialto::WeightToFee; + type FeeMultiplierUpdate = pallet_transaction_payment::TargetedFeeAdjustment< + Runtime, + TargetBlockFullness, + AdjustmentVariable, + MinimumMultiplier, + >; +} + +impl pallet_sudo::Config for Runtime { + type Event = Event; + type Call = Call; +} + +impl pallet_session::Config for Runtime { + type Event = Event; + type ValidatorId = ::AccountId; + type ValidatorIdOf = (); + type ShouldEndSession = Babe; + type NextSessionRotation = Babe; + type SessionManager = pallet_shift_session_manager::Pallet; + type SessionHandler = ::KeyTypeIdProviders; + type Keys = SessionKeys; + // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) + type WeightInfo = (); +} + +impl pallet_authority_discovery::Config for Runtime { + type MaxAuthorities = MaxAuthorities; +} + +parameter_types! { + /// This is a pretty unscientific cap. + /// + /// Note that once this is hit the pallet will essentially throttle incoming requests down to one + /// call per block. + pub const MaxRequests: u32 = 50; +} + +#[cfg(feature = "runtime-benchmarks")] +parameter_types! { + /// Number of headers to keep in benchmarks. + /// + /// In benchmarks we always populate with full number of `HeadersToKeep` to make sure that + /// pruning is taken into account. + /// + /// Note: This is lower than regular value, to speed up benchmarking setup. + pub const HeadersToKeep: u32 = 1024; +} + +#[cfg(not(feature = "runtime-benchmarks"))] +parameter_types! { + /// Number of headers to keep. + /// + /// Assuming the worst case of every header being finalized, we will keep headers at least for a + /// week. + pub const HeadersToKeep: u32 = 7 * bp_rialto::DAYS as u32; +} + +pub type MillauGrandpaInstance = (); +impl pallet_bridge_grandpa::Config for Runtime { + type BridgedChain = bp_millau::Millau; + type MaxRequests = MaxRequests; + type HeadersToKeep = HeadersToKeep; + type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; +} + +impl pallet_shift_session_manager::Config for Runtime {} + +parameter_types! { + pub const MaxMessagesToPruneAtOnce: bp_messages::MessageNonce = 8; + pub const MaxUnrewardedRelayerEntriesAtInboundLane: bp_messages::MessageNonce = + bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE; + pub const MaxUnconfirmedMessagesAtInboundLane: bp_messages::MessageNonce = + bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE; + // `IdentityFee` is used by Rialto => we may use weight directly + pub const GetDeliveryConfirmationTransactionFee: Balance = + bp_rialto::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT as _; + pub const RootAccountForPayments: Option = None; + pub const BridgedChainId: bp_runtime::ChainId = bp_runtime::MILLAU_CHAIN_ID; +} + +/// Instance of the messages pallet used to relay messages to/from Millau chain. +pub type WithMillauMessagesInstance = (); + +impl pallet_bridge_messages::Config for Runtime { + type Event = Event; + type WeightInfo = pallet_bridge_messages::weights::RialtoWeight; + type Parameter = millau_messages::RialtoToMillauMessagesParameter; + type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; + type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; + type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; + + type OutboundPayload = crate::millau_messages::ToMillauMessagePayload; + type OutboundMessageFee = Balance; + + type InboundPayload = crate::millau_messages::FromMillauMessagePayload; + type InboundMessageFee = bp_millau::Balance; + type InboundRelayer = bp_millau::AccountId; + + type AccountIdConverter = bp_rialto::AccountIdConverter; + + type TargetHeaderChain = crate::millau_messages::Millau; + type LaneMessageVerifier = crate::millau_messages::ToMillauMessageVerifier; + type MessageDeliveryAndDispatchPayment = + pallet_bridge_messages::instant_payments::InstantCurrencyPayments< + Runtime, + (), + pallet_balances::Pallet, + GetDeliveryConfirmationTransactionFee, + RootAccountForPayments, + >; + type OnMessageAccepted = (); + type OnDeliveryConfirmed = (); + + type SourceHeaderChain = crate::millau_messages::Millau; + type MessageDispatch = crate::millau_messages::FromMillauMessageDispatch; + type BridgedChainId = BridgedChainId; +} + +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = opaque::Block, + UncheckedExtrinsic = UncheckedExtrinsic + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, + + // Must be before session. + Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, + + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + + // Consensus support. + AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, + Session: pallet_session::{Pallet, Call, Storage, Event, Config}, + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, + ShiftSessionManager: pallet_shift_session_manager::{Pallet}, + + // Millau bridge modules. + BridgeMillauGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage}, + BridgeDispatch: pallet_bridge_dispatch::{Pallet, Event}, + BridgeMillauMessages: pallet_bridge_messages::{Pallet, Call, Storage, Event, Config}, + + // Parachain modules. + ParachainsOrigin: polkadot_runtime_parachains::origin::{Pallet, Origin}, + Configuration: polkadot_runtime_parachains::configuration::{Pallet, Call, Storage, Config}, + Shared: polkadot_runtime_parachains::shared::{Pallet, Call, Storage}, + Inclusion: polkadot_runtime_parachains::inclusion::{Pallet, Call, Storage, Event}, + ParasInherent: polkadot_runtime_parachains::paras_inherent::{Pallet, Call, Storage, Inherent}, + Scheduler: polkadot_runtime_parachains::scheduler::{Pallet, Storage}, + Paras: polkadot_runtime_parachains::paras::{Pallet, Call, Storage, Event, Config}, + Initializer: polkadot_runtime_parachains::initializer::{Pallet, Call, Storage}, + Dmp: polkadot_runtime_parachains::dmp::{Pallet, Call, Storage}, + Ump: polkadot_runtime_parachains::ump::{Pallet, Call, Storage, Event}, + Hrmp: polkadot_runtime_parachains::hrmp::{Pallet, Call, Storage, Event, Config}, + SessionInfo: polkadot_runtime_parachains::session_info::{Pallet, Storage}, + + // Parachain Onboarding Pallets + Registrar: polkadot_runtime_common::paras_registrar::{Pallet, Call, Storage, Event}, + Slots: polkadot_runtime_common::slots::{Pallet, Call, Storage, Event}, + ParasSudoWrapper: polkadot_runtime_common::paras_sudo_wrapper::{Pallet, Call}, + } +); + +/// The address format for describing accounts. +pub type Address = sp_runtime::MultiAddress; +/// Block header type as expected by this runtime. +pub type Header = generic::Header; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckSpecVersion, + frame_system::CheckTxVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_transaction_payment::ChargeTransactionPayment, +); +/// The payload being signed in transactions. +pub type SignedPayload = generic::SignedPayload; +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = frame_executive::Executive< + Runtime, + Block, + frame_system::ChainContext, + Runtime, + AllPallets, +>; + +impl_runtime_apis! { + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn execute_block(block: Block) { + Executive::execute_block(block); + } + + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) + } + } + + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + OpaqueMetadata::new(Runtime::metadata().into()) + } + } + + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalize_block() -> ::Header { + Executive::finalize_block() + } + + fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } + + fn check_inherents( + block: Block, + data: sp_inherents::InherentData, + ) -> sp_inherents::CheckInherentsResult { + data.check_extrinsics(&block) + } + } + + impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { + fn account_nonce(account: AccountId) -> Index { + System::account_nonce(account) + } + } + + impl bp_millau::MillauFinalityApi for Runtime { + fn best_finalized() -> (bp_millau::BlockNumber, bp_millau::Hash) { + let header = BridgeMillauGrandpa::best_finalized(); + (header.number, header.hash()) + } + + fn is_known_header(hash: bp_millau::Hash) -> bool { + BridgeMillauGrandpa::is_known_header(hash) + } + } + + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction( + source: TransactionSource, + tx: ::Extrinsic, + block_hash: ::Hash, + ) -> TransactionValidity { + Executive::validate_transaction(source, tx, block_hash) + } + } + + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } + } + + impl sp_consensus_babe::BabeApi for Runtime { + fn configuration() -> sp_consensus_babe::BabeGenesisConfiguration { + // The choice of `c` parameter (where `1 - c` represents the + // probability of a slot being empty), is done in accordance to the + // slot duration and expected target block time, for safely + // resisting network delays of maximum two seconds. + // + sp_consensus_babe::BabeGenesisConfiguration { + slot_duration: Babe::slot_duration(), + epoch_length: EpochDuration::get(), + c: BABE_GENESIS_EPOCH_CONFIG.c, + genesis_authorities: Babe::authorities().to_vec(), + randomness: Babe::randomness(), + allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, + } + } + + fn current_epoch_start() -> sp_consensus_babe::Slot { + Babe::current_epoch_start() + } + + fn current_epoch() -> sp_consensus_babe::Epoch { + Babe::current_epoch() + } + + fn next_epoch() -> sp_consensus_babe::Epoch { + Babe::next_epoch() + } + + fn generate_key_ownership_proof( + _slot: sp_consensus_babe::Slot, + _authority_id: sp_consensus_babe::AuthorityId, + ) -> Option { + None + } + + fn submit_report_equivocation_unsigned_extrinsic( + equivocation_proof: sp_consensus_babe::EquivocationProof<::Header>, + key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof, + ) -> Option<()> { + let key_owner_proof = key_owner_proof.decode()?; + + Babe::submit_unsigned_equivocation_report( + equivocation_proof, + key_owner_proof, + ) + } + } + + impl polkadot_primitives::v1::ParachainHost for Runtime { + fn validators() -> Vec { + polkadot_runtime_parachains::runtime_api_impl::v1::validators::() + } + + fn validator_groups() -> ( + Vec>, + polkadot_primitives::v1::GroupRotationInfo, + ) { + polkadot_runtime_parachains::runtime_api_impl::v1::validator_groups::() + } + + fn availability_cores() -> Vec> { + polkadot_runtime_parachains::runtime_api_impl::v1::availability_cores::() + } + + fn persisted_validation_data( + para_id: polkadot_primitives::v1::Id, + assumption: polkadot_primitives::v1::OccupiedCoreAssumption, + ) + -> Option> { + polkadot_runtime_parachains::runtime_api_impl::v1::persisted_validation_data::(para_id, assumption) + } + + fn assumed_validation_data( + para_id: polkadot_primitives::v1::Id, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(polkadot_primitives::v1::PersistedValidationData, polkadot_primitives::v1::ValidationCodeHash)> { + polkadot_runtime_parachains::runtime_api_impl::v1::assumed_validation_data::(para_id, expected_persisted_validation_data_hash) + } + + fn check_validation_outputs( + para_id: polkadot_primitives::v1::Id, + outputs: polkadot_primitives::v1::CandidateCommitments, + ) -> bool { + polkadot_runtime_parachains::runtime_api_impl::v1::check_validation_outputs::(para_id, outputs) + } + + fn session_index_for_child() -> polkadot_primitives::v1::SessionIndex { + polkadot_runtime_parachains::runtime_api_impl::v1::session_index_for_child::() + } + + fn validation_code( + para_id: polkadot_primitives::v1::Id, + assumption: polkadot_primitives::v1::OccupiedCoreAssumption, + ) + -> Option { + polkadot_runtime_parachains::runtime_api_impl::v1::validation_code::(para_id, assumption) + } + + fn candidate_pending_availability( + para_id: polkadot_primitives::v1::Id, + ) -> Option> { + polkadot_runtime_parachains::runtime_api_impl::v1::candidate_pending_availability::(para_id) + } + + fn candidate_events() -> Vec> { + polkadot_runtime_parachains::runtime_api_impl::v1::candidate_events::(|ev| { + match ev { + Event::Inclusion(ev) => { + Some(ev) + } + _ => None, + } + }) + } + + fn session_info(index: polkadot_primitives::v1::SessionIndex) -> Option { + polkadot_runtime_parachains::runtime_api_impl::v1::session_info::(index) + } + + fn dmq_contents( + recipient: polkadot_primitives::v1::Id, + ) -> Vec> { + polkadot_runtime_parachains::runtime_api_impl::v1::dmq_contents::(recipient) + } + + fn inbound_hrmp_channels_contents( + recipient: polkadot_primitives::v1::Id + ) -> BTreeMap>> { + polkadot_runtime_parachains::runtime_api_impl::v1::inbound_hrmp_channels_contents::(recipient) + } + + fn validation_code_by_hash( + hash: polkadot_primitives::v1::ValidationCodeHash, + ) -> Option { + polkadot_runtime_parachains::runtime_api_impl::v1::validation_code_by_hash::(hash) + } + + fn on_chain_votes() -> Option> { + polkadot_runtime_parachains::runtime_api_impl::v1::on_chain_votes::() + } + } + + impl sp_authority_discovery::AuthorityDiscoveryApi for Runtime { + fn authorities() -> Vec { + polkadot_runtime_parachains::runtime_api_impl::v1::relevant_authority_ids::() + } + } + + impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< + Block, + Balance, + > for Runtime { + fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { + TransactionPayment::query_info(uxt, len) + } + fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { + TransactionPayment::query_fee_details(uxt, len) + } + } + + impl sp_session::SessionKeys for Runtime { + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + + fn decode_session_keys( + encoded: Vec, + ) -> Option, sp_core::crypto::KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + } + + impl fg_primitives::GrandpaApi for Runtime { + fn current_set_id() -> fg_primitives::SetId { + Grandpa::current_set_id() + } + + fn grandpa_authorities() -> GrandpaAuthorityList { + Grandpa::grandpa_authorities() + } + + fn submit_report_equivocation_unsigned_extrinsic( + equivocation_proof: fg_primitives::EquivocationProof< + ::Hash, + NumberFor, + >, + key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, + ) -> Option<()> { + let key_owner_proof = key_owner_proof.decode()?; + + Grandpa::submit_unsigned_equivocation_report( + equivocation_proof, + key_owner_proof, + ) + } + + fn generate_key_ownership_proof( + _set_id: fg_primitives::SetId, + _authority_id: GrandpaId, + ) -> Option { + // NOTE: this is the only implementation possible since we've + // defined our key owner proof type as a bottom type (i.e. a type + // with no values). + None + } + } + + impl bp_millau::ToMillauOutboundLaneApi for Runtime { + fn estimate_message_delivery_and_dispatch_fee( + _lane_id: bp_messages::LaneId, + payload: ToMillauMessagePayload, + ) -> Option { + estimate_message_dispatch_and_delivery_fee::( + &payload, + WithMillauMessageBridge::RELAYER_FEE_PERCENT, + ).ok() + } + + fn message_details( + lane: bp_messages::LaneId, + begin: bp_messages::MessageNonce, + end: bp_messages::MessageNonce, + ) -> Vec> { + bridge_runtime_common::messages_api::outbound_message_details::< + Runtime, + WithMillauMessagesInstance, + WithMillauMessageBridge, + >(lane, begin, end) + } + + fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeMillauMessages::outbound_latest_received_nonce(lane) + } + + fn latest_generated_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeMillauMessages::outbound_latest_generated_nonce(lane) + } + } + + impl bp_millau::FromMillauInboundLaneApi for Runtime { + fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeMillauMessages::inbound_latest_received_nonce(lane) + } + + fn latest_confirmed_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { + BridgeMillauMessages::inbound_latest_confirmed_nonce(lane) + } + + fn unrewarded_relayers_state(lane: bp_messages::LaneId) -> bp_messages::UnrewardedRelayersState { + BridgeMillauMessages::inbound_unrewarded_relayers_state(lane) + } + } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + + use pallet_bridge_messages::benchmarking::Pallet as MessagesBench; + + let mut list = Vec::::new(); + + list_benchmark!(list, extra, pallet_bridge_messages, MessagesBench::); + list_benchmark!(list, extra, pallet_bridge_grandpa, BridgeMillauGrandpa); + + let storage_info = AllPalletsWithSystem::storage_info(); + + return (list, storage_info) + } + + fn dispatch_benchmark( + config: frame_benchmarking::BenchmarkConfig, + ) -> Result, sp_runtime::RuntimeString> { + use frame_benchmarking::{Benchmarking, BenchmarkBatch, TrackedStorageKey, add_benchmark}; + + let whitelist: Vec = vec![ + // Block Number + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), + // Execution Phase + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), + // Event Count + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), + // System Events + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), + // Caller 0 Account + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da946c154ffd9992e395af90b5b13cc6f295c77033fce8a9045824a6690bbf99c6db269502f0a8d1d2a008542d5690a0749").to_vec().into(), + ]; + + let mut batches = Vec::::new(); + let params = (&config, &whitelist); + + use crate::millau_messages::{ToMillauMessagePayload, WithMillauMessageBridge}; + use bp_runtime::messages::DispatchFeePayment; + use bridge_runtime_common::messages; + use pallet_bridge_messages::benchmarking::{ + Pallet as MessagesBench, + Config as MessagesConfig, + MessageDeliveryProofParams, + MessageParams, + MessageProofParams, + ProofSize as MessagesProofSize, + }; + + impl MessagesConfig for Runtime { + fn maximal_message_size() -> u32 { + messages::source::maximal_message_size::() + } + + fn bridged_relayer_id() -> Self::InboundRelayer { + Default::default() + } + + fn account_balance(account: &Self::AccountId) -> Self::OutboundMessageFee { + pallet_balances::Pallet::::free_balance(account) + } + + fn endow_account(account: &Self::AccountId) { + pallet_balances::Pallet::::make_free_balance_be( + account, + Balance::MAX / 100, + ); + } + + fn prepare_outbound_message( + params: MessageParams, + ) -> (millau_messages::ToMillauMessagePayload, Balance) { + let message_payload = vec![0; params.size as usize]; + let dispatch_origin = bp_message_dispatch::CallOrigin::SourceAccount( + params.sender_account, + ); + + let message = ToMillauMessagePayload { + spec_version: 0, + weight: params.size as _, + origin: dispatch_origin, + call: message_payload, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + }; + (message, pallet_bridge_messages::benchmarking::MESSAGE_FEE.into()) + } + + fn prepare_message_proof( + params: MessageProofParams, + ) -> (millau_messages::FromMillauMessagesProof, Weight) { + use crate::millau_messages::WithMillauMessageBridge; + use bp_messages::MessageKey; + use bridge_runtime_common::{ + messages::MessageBridge, + messages_benchmarking::{ed25519_sign, prepare_message_proof}, + }; + use codec::Encode; + use frame_support::weights::GetDispatchInfo; + use pallet_bridge_messages::storage_keys; + use sp_runtime::traits::{Header, IdentifyAccount}; + + let remark = match params.size { + MessagesProofSize::Minimal(ref size) => vec![0u8; *size as _], + _ => vec![], + }; + let call = Call::System(SystemCall::remark { remark }); + let call_weight = call.get_dispatch_info().weight; + + let millau_account_id: bp_millau::AccountId = Default::default(); + let (rialto_raw_public, rialto_raw_signature) = ed25519_sign( + &call, + &millau_account_id, + VERSION.spec_version, + bp_runtime::MILLAU_CHAIN_ID, + bp_runtime::RIALTO_CHAIN_ID, + ); + let rialto_public = MultiSigner::Ed25519(sp_core::ed25519::Public::from_raw(rialto_raw_public)); + let rialto_signature = MultiSignature::Ed25519(sp_core::ed25519::Signature::from_raw( + rialto_raw_signature, + )); + + if params.dispatch_fee_payment == DispatchFeePayment::AtTargetChain { + Self::endow_account(&rialto_public.clone().into_account()); + } + + let make_millau_message_key = |message_key: MessageKey| storage_keys::message_key( + ::BRIDGED_MESSAGES_PALLET_NAME, + &message_key.lane_id, message_key.nonce, + ).0; + let make_millau_outbound_lane_data_key = |lane_id| storage_keys::outbound_lane_data_key( + ::BRIDGED_MESSAGES_PALLET_NAME, + &lane_id, + ).0; + + let make_millau_header = |state_root| bp_millau::Header::new( + 0, + Default::default(), + state_root, + Default::default(), + Default::default(), + ); + + let dispatch_fee_payment = params.dispatch_fee_payment.clone(); + prepare_message_proof::( + params, + make_millau_message_key, + make_millau_outbound_lane_data_key, + make_millau_header, + call_weight, + bp_message_dispatch::MessagePayload { + spec_version: VERSION.spec_version, + weight: call_weight, + origin: bp_message_dispatch::CallOrigin::< + bp_millau::AccountId, + MultiSigner, + Signature, + >::TargetAccount( + millau_account_id, + rialto_public, + rialto_signature, + ), + dispatch_fee_payment, + call: call.encode(), + }.encode(), + ) + } + + fn prepare_message_delivery_proof( + params: MessageDeliveryProofParams, + ) -> millau_messages::ToMillauMessagesDeliveryProof { + use crate::millau_messages::WithMillauMessageBridge; + use bridge_runtime_common::{messages_benchmarking::prepare_message_delivery_proof}; + use sp_runtime::traits::Header; + + prepare_message_delivery_proof::( + params, + |lane_id| pallet_bridge_messages::storage_keys::inbound_lane_data_key( + ::BRIDGED_MESSAGES_PALLET_NAME, + &lane_id, + ).0, + |state_root| bp_millau::Header::new( + 0, + Default::default(), + state_root, + Default::default(), + Default::default(), + ), + ) + } + + fn is_message_dispatched(nonce: bp_messages::MessageNonce) -> bool { + frame_system::Pallet::::events() + .into_iter() + .map(|event_record| event_record.event) + .any(|event| matches!( + event, + Event::BridgeDispatch(pallet_bridge_dispatch::Event::::MessageDispatched( + _, ([0, 0, 0, 0], nonce_from_event), _, + )) if nonce_from_event == nonce + )) + } + } + + add_benchmark!( + params, + batches, + pallet_bridge_messages, + MessagesBench:: + ); + add_benchmark!(params, batches, pallet_bridge_grandpa, BridgeMillauGrandpa); + + if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } + Ok(batches) + } + } +} + +/// Millau account ownership digest from Rialto. +/// +/// The byte vector returned by this function should be signed with a Millau account private key. +/// This way, the owner of `rialto_account_id` on Rialto proves that the 'millau' account private +/// key is also under his control. +pub fn rialto_to_millau_account_ownership_digest( + millau_call: &Call, + rialto_account_id: AccountId, + millau_spec_version: SpecVersion, +) -> sp_std::vec::Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + millau_call, + rialto_account_id, + millau_spec_version, + bp_runtime::RIALTO_CHAIN_ID, + bp_runtime::MILLAU_CHAIN_ID, + ) +} + +#[cfg(test)] +mod tests { + use super::*; + use bridge_runtime_common::messages; + + #[test] + fn ensure_rialto_message_lane_weights_are_correct() { + type Weights = pallet_bridge_messages::weights::RialtoWeight; + + pallet_bridge_messages::ensure_weights_are_correct::( + bp_rialto::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT, + bp_rialto::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT, + bp_rialto::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, + bp_rialto::PAY_INBOUND_DISPATCH_FEE_WEIGHT, + DbWeight::get(), + ); + + let max_incoming_message_proof_size = bp_millau::EXTRA_STORAGE_PROOF_SIZE.saturating_add( + messages::target::maximal_incoming_message_size(bp_rialto::max_extrinsic_size()), + ); + pallet_bridge_messages::ensure_able_to_receive_message::( + bp_rialto::max_extrinsic_size(), + bp_rialto::max_extrinsic_weight(), + max_incoming_message_proof_size, + messages::target::maximal_incoming_message_dispatch_weight( + bp_rialto::max_extrinsic_weight(), + ), + ); + + let max_incoming_inbound_lane_data_proof_size = + bp_messages::InboundLaneData::<()>::encoded_size_hint( + bp_rialto::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE as _, + bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE as _, + ) + .unwrap_or(u32::MAX); + pallet_bridge_messages::ensure_able_to_receive_confirmation::( + bp_rialto::max_extrinsic_size(), + bp_rialto::max_extrinsic_weight(), + max_incoming_inbound_lane_data_proof_size, + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + DbWeight::get(), + ); + } + + #[test] + fn call_size() { + const MAX_CALL_SIZE: usize = 230; // value from polkadot-runtime tests + assert!(core::mem::size_of::() <= MAX_CALL_SIZE); + } +} diff --git a/bridges/bin/rialto/runtime/src/millau_messages.rs b/bin/rialto/runtime/src/millau_messages.rs similarity index 78% rename from bridges/bin/rialto/runtime/src/millau_messages.rs rename to bin/rialto/runtime/src/millau_messages.rs index bf97478a0aa2..13a1c6b06ec2 100644 --- a/bridges/bin/rialto/runtime/src/millau_messages.rs +++ b/bin/rialto/runtime/src/millau_messages.rs @@ -31,25 +31,34 @@ use frame_support::{ weights::{DispatchClass, Weight}, RuntimeDebug, }; -use sp_runtime::{traits::Zero, FixedPointNumber, FixedU128}; +use scale_info::TypeInfo; +use sp_runtime::{traits::Saturating, FixedPointNumber, FixedU128}; use sp_std::{convert::TryFrom, ops::RangeInclusive}; /// Initial value of `MillauToRialtoConversionRate` parameter. -pub const INITIAL_MILLAU_TO_RIALTO_CONVERSION_RATE: FixedU128 = FixedU128::from_inner(FixedU128::DIV); +pub const INITIAL_MILLAU_TO_RIALTO_CONVERSION_RATE: FixedU128 = + FixedU128::from_inner(FixedU128::DIV); +/// Initial value of `MillauFeeMultiplier` parameter. +pub const INITIAL_MILLAU_FEE_MULTIPLIER: FixedU128 = FixedU128::from_inner(FixedU128::DIV); parameter_types! { /// Millau to Rialto conversion rate. Initially we treat both tokens as equal. pub storage MillauToRialtoConversionRate: FixedU128 = INITIAL_MILLAU_TO_RIALTO_CONVERSION_RATE; + /// Fee multiplier value at Millau chain. + pub storage MillauFeeMultiplier: FixedU128 = INITIAL_MILLAU_FEE_MULTIPLIER; } /// Message payload for Rialto -> Millau messages. -pub type ToMillauMessagePayload = messages::source::FromThisChainMessagePayload; +pub type ToMillauMessagePayload = + messages::source::FromThisChainMessagePayload; /// Message verifier for Rialto -> Millau messages. -pub type ToMillauMessageVerifier = messages::source::FromThisChainMessageVerifier; +pub type ToMillauMessageVerifier = + messages::source::FromThisChainMessageVerifier; /// Message payload for Millau -> Rialto messages. -pub type FromMillauMessagePayload = messages::target::FromBridgedChainMessagePayload; +pub type FromMillauMessagePayload = + messages::target::FromBridgedChainMessagePayload; /// Encoded Rialto Call as it comes from Millau. pub type FromMillauEncodedCall = messages::target::FromBridgedChainEncodedMessageCall; @@ -59,14 +68,15 @@ pub type FromMillauMessageDispatch = messages::target::FromBridgedChainMessageDi WithMillauMessageBridge, crate::Runtime, pallet_balances::Pallet, - pallet_bridge_dispatch::DefaultInstance, + (), >; /// Messages proof for Millau -> Rialto messages. pub type FromMillauMessagesProof = messages::target::FromBridgedChainMessagesProof; /// Messages delivery proof for Rialto -> Millau messages. -pub type ToMillauMessagesDeliveryProof = messages::source::FromBridgedChainMessagesDeliveryProof; +pub type ToMillauMessagesDeliveryProof = + messages::source::FromBridgedChainMessagesDeliveryProof; /// Millau <-> Rialto message bridge. #[derive(RuntimeDebug, Clone, Copy)] @@ -76,14 +86,16 @@ impl MessageBridge for WithMillauMessageBridge { const RELAYER_FEE_PERCENT: u32 = 10; const THIS_CHAIN_ID: ChainId = RIALTO_CHAIN_ID; const BRIDGED_CHAIN_ID: ChainId = MILLAU_CHAIN_ID; + const BRIDGED_MESSAGES_PALLET_NAME: &'static str = bp_millau::WITH_RIALTO_MESSAGES_PALLET_NAME; type ThisChain = Rialto; type BridgedChain = Millau; - type BridgedMessagesInstance = crate::WithMillauMessagesInstance; fn bridged_balance_to_this_balance(bridged_balance: bp_millau::Balance) -> bp_rialto::Balance { - bp_rialto::Balance::try_from(MillauToRialtoConversionRate::get().saturating_mul_int(bridged_balance)) - .unwrap_or(bp_rialto::Balance::MAX) + bp_rialto::Balance::try_from( + MillauToRialtoConversionRate::get().saturating_mul_int(bridged_balance), + ) + .unwrap_or(bp_rialto::Balance::MAX) } } @@ -128,11 +140,15 @@ impl messages::ThisChainWithMessages for Rialto { } fn transaction_payment(transaction: MessageTransaction) -> bp_rialto::Balance { + // `transaction` may represent transaction from the future, when multiplier value will + // be larger, so let's use slightly increased value + let multiplier = FixedU128::saturating_from_rational(110, 100) + .saturating_mul(pallet_transaction_payment::Pallet::::next_fee_multiplier()); // in our testnets, both per-byte fee and weight-to-fee are 1:1 messages::transaction_payment( bp_rialto::BlockWeights::get().get(DispatchClass::Normal).base_extrinsic, 1, - FixedU128::zero(), + multiplier, |weight| weight as _, transaction, ) @@ -159,12 +175,15 @@ impl messages::BridgedChainWithMessages for Millau { fn message_weight_limits(_message_payload: &[u8]) -> RangeInclusive { // we don't want to relay too large messages + keep reserve for future upgrades - let upper_limit = messages::target::maximal_incoming_message_dispatch_weight(bp_millau::max_extrinsic_weight()); + let upper_limit = messages::target::maximal_incoming_message_dispatch_weight( + bp_millau::max_extrinsic_weight(), + ); - // we're charging for payload bytes in `WithMillauMessageBridge::transaction_payment` function + // we're charging for payload bytes in `WithMillauMessageBridge::transaction_payment` + // function // - // this bridge may be used to deliver all kind of messages, so we're not making any assumptions about - // minimal dispatch weight here + // this bridge may be used to deliver all kind of messages, so we're not making any + // assumptions about minimal dispatch weight here 0..=upper_limit } @@ -195,11 +214,14 @@ impl messages::BridgedChainWithMessages for Millau { } fn transaction_payment(transaction: MessageTransaction) -> bp_millau::Balance { + // we don't have a direct access to the value of multiplier at Millau chain + // => it is a messages module parameter + let multiplier = MillauFeeMultiplier::get(); // in our testnets, both per-byte fee and weight-to-fee are 1:1 messages::transaction_payment( bp_millau::BlockWeights::get().get(DispatchClass::Normal).base_extrinsic, 1, - FixedU128::zero(), + multiplier, |weight| weight as _, transaction, ) @@ -221,9 +243,11 @@ impl TargetHeaderChain for Millau fn verify_messages_delivery_proof( proof: Self::MessagesDeliveryProof, ) -> Result<(LaneId, InboundLaneData), Self::Error> { - messages::source::verify_messages_delivery_proof::( - proof, - ) + messages::source::verify_messages_delivery_proof::< + WithMillauMessageBridge, + Runtime, + crate::MillauGrandpaInstance, + >(proof) } } @@ -240,15 +264,16 @@ impl SourceHeaderChain for Millau { proof: Self::MessagesProof, messages_count: u32, ) -> Result>, Self::Error> { - messages::target::verify_messages_proof::( - proof, - messages_count, - ) + messages::target::verify_messages_proof::< + WithMillauMessageBridge, + Runtime, + crate::MillauGrandpaInstance, + >(proof, messages_count) } } /// Rialto -> Millau message lane pallet parameters. -#[derive(RuntimeDebug, Clone, Encode, Decode, PartialEq, Eq)] +#[derive(RuntimeDebug, Clone, Encode, Decode, PartialEq, Eq, TypeInfo)] pub enum RialtoToMillauMessagesParameter { /// The conversion formula we use is: `RialtoTokens = MillauTokens * conversion_rate`. MillauToRialtoConversionRate(FixedU128), @@ -257,9 +282,8 @@ pub enum RialtoToMillauMessagesParameter { impl MessagesParameter for RialtoToMillauMessagesParameter { fn save(&self) { match *self { - RialtoToMillauMessagesParameter::MillauToRialtoConversionRate(ref conversion_rate) => { - MillauToRialtoConversionRate::set(conversion_rate) - } + RialtoToMillauMessagesParameter::MillauToRialtoConversionRate(ref conversion_rate) => + MillauToRialtoConversionRate::set(conversion_rate), } } } @@ -274,7 +298,9 @@ mod tests { MessageKey, }; use bp_runtime::{derive_account_id, messages::DispatchFeePayment, SourceAccount}; - use bridge_runtime_common::messages::target::{FromBridgedChainEncodedMessageCall, FromBridgedChainMessagePayload}; + use bridge_runtime_common::messages::target::{ + FromBridgedChainEncodedMessageCall, FromBridgedChainMessagePayload, + }; use frame_support::{ traits::Currency, weights::{GetDispatchInfo, WeightToFeePolynomial}, @@ -286,12 +312,15 @@ mod tests { // this test actually belongs to the `bridge-runtime-common` crate, but there we have no // mock runtime. Making another one there just for this test, given that both crates // live n single repo is an overkill - let mut ext: sp_io::TestExternalities = SystemConfig::default().build_storage::().unwrap().into(); + let mut ext: sp_io::TestExternalities = + SystemConfig::default().build_storage::().unwrap().into(); ext.execute_with(|| { let bridge = MILLAU_CHAIN_ID; - let call: Call = SystemCall::remark(vec![]).into(); + let call: Call = SystemCall::remark { remark: vec![] }.into(); let dispatch_weight = call.get_dispatch_info().weight; - let dispatch_fee = ::WeightToFee::calc(&dispatch_weight); + let dispatch_fee = ::WeightToFee::calc( + &dispatch_weight, + ); assert!(dispatch_fee > 0); // create relayer account with minimal balance @@ -303,12 +332,13 @@ mod tests { ); // create dispatch account with minimal balance + dispatch fee - let dispatch_account = derive_account_id::<::SourceChainAccountId>( - bridge, - SourceAccount::Root, - ); + let dispatch_account = derive_account_id::< + ::SourceChainAccountId, + >(bridge, SourceAccount::Root); let dispatch_account = - ::AccountIdConverter::convert(dispatch_account); + ::AccountIdConverter::convert( + dispatch_account, + ); let _ = as Currency>::deposit_creating( &dispatch_account, initial_amount + dispatch_fee, @@ -318,10 +348,7 @@ mod tests { FromMillauMessageDispatch::dispatch( &relayer_account, DispatchMessage { - key: MessageKey { - lane_id: Default::default(), - nonce: 0, - }, + key: MessageKey { lane_id: Default::default(), nonce: 0 }, data: DispatchMessageData { payload: Ok(FromBridgedChainMessagePayload:: { spec_version: VERSION.spec_version, @@ -337,11 +364,15 @@ mod tests { // ensure that fee has been transferred from dispatch to relayer account assert_eq!( - as Currency>::free_balance(&relayer_account), + as Currency>::free_balance( + &relayer_account + ), initial_amount + dispatch_fee, ); assert_eq!( - as Currency>::free_balance(&dispatch_account), + as Currency>::free_balance( + &dispatch_account + ), initial_amount, ); }); diff --git a/bin/rialto/runtime/src/parachains.rs b/bin/rialto/runtime/src/parachains.rs new file mode 100644 index 000000000000..332a3387ac69 --- /dev/null +++ b/bin/rialto/runtime/src/parachains.rs @@ -0,0 +1,160 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Parachains support in Rialto runtime. + +use crate::{AccountId, Balance, Balances, BlockNumber, Event, Origin, Registrar, Runtime, Slots}; + +use frame_support::{parameter_types, weights::Weight}; +use frame_system::EnsureRoot; +use polkadot_primitives::v1::ValidatorIndex; +use polkadot_runtime_common::{paras_registrar, paras_sudo_wrapper, slots}; +use polkadot_runtime_parachains::{ + configuration as parachains_configuration, dmp as parachains_dmp, hrmp as parachains_hrmp, + inclusion as parachains_inclusion, initializer as parachains_initializer, + origin as parachains_origin, paras as parachains_paras, + paras_inherent as parachains_paras_inherent, scheduler as parachains_scheduler, + session_info as parachains_session_info, shared as parachains_shared, ump as parachains_ump, +}; + +/// Special `RewardValidators` that does nothing ;) +pub struct RewardValidators; +impl polkadot_runtime_parachains::inclusion::RewardValidators for RewardValidators { + fn reward_backing(_: impl IntoIterator) {} + fn reward_bitfields(_: impl IntoIterator) {} +} + +// all required parachain modules from `polkadot-runtime-parachains` crate + +impl parachains_configuration::Config for Runtime { + type WeightInfo = parachains_configuration::TestWeightInfo; +} + +impl parachains_dmp::Config for Runtime {} + +impl parachains_hrmp::Config for Runtime { + type Event = Event; + type Origin = Origin; + type Currency = Balances; +} + +impl parachains_inclusion::Config for Runtime { + type Event = Event; + type RewardValidators = RewardValidators; + type DisputesHandler = (); +} + +impl parachains_initializer::Config for Runtime { + type Randomness = pallet_babe::RandomnessFromOneEpochAgo; + type ForceOrigin = EnsureRoot; + type WeightInfo = (); +} + +impl parachains_origin::Config for Runtime {} + +impl parachains_paras::Config for Runtime { + type Origin = Origin; + type Event = Event; + type WeightInfo = parachains_paras::TestWeightInfo; +} + +impl parachains_paras_inherent::Config for Runtime { + type WeightInfo = parachains_paras_inherent::TestWeightInfo; +} + +impl parachains_scheduler::Config for Runtime {} + +impl parachains_session_info::Config for Runtime {} + +impl parachains_shared::Config for Runtime {} + +parameter_types! { + pub const FirstMessageFactorPercent: u64 = 100; +} + +impl parachains_ump::Config for Runtime { + type Event = Event; + type UmpSink = (); + type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = EnsureRoot; +} + +// required onboarding pallets. We're not going to use auctions or crowdloans, so they're missing + +parameter_types! { + pub const ParaDeposit: Balance = 0; + pub const DataDepositPerByte: Balance = 0; +} + +impl paras_registrar::Config for Runtime { + type Event = Event; + type Origin = Origin; + type Currency = Balances; + type OnSwap = Slots; + type ParaDeposit = ParaDeposit; + type DataDepositPerByte = DataDepositPerByte; + type WeightInfo = paras_registrar::TestWeightInfo; +} + +parameter_types! { + pub const LeasePeriod: BlockNumber = 10 * bp_rialto::MINUTES; +} + +impl slots::Config for Runtime { + type Event = Event; + type Currency = Balances; + type Registrar = Registrar; + type LeasePeriod = LeasePeriod; + type WeightInfo = slots::TestWeightInfo; + type LeaseOffset = (); +} + +impl paras_sudo_wrapper::Config for Runtime {} + +pub struct ZeroWeights; + +impl polkadot_runtime_common::paras_registrar::WeightInfo for ZeroWeights { + fn reserve() -> Weight { + 0 + } + fn register() -> Weight { + 0 + } + fn force_register() -> Weight { + 0 + } + fn deregister() -> Weight { + 0 + } + fn swap() -> Weight { + 0 + } +} + +impl polkadot_runtime_common::slots::WeightInfo for ZeroWeights { + fn force_lease() -> Weight { + 0 + } + fn manage_lease_period_start(_c: u32, _t: u32) -> Weight { + 0 + } + fn clear_all_leases() -> Weight { + 0 + } + fn trigger_onboard() -> Weight { + 0 + } +} diff --git a/bin/runtime-common/Cargo.toml b/bin/runtime-common/Cargo.toml new file mode 100644 index 000000000000..0ae642ba5589 --- /dev/null +++ b/bin/runtime-common/Cargo.toml @@ -0,0 +1,60 @@ +[package] +name = "bridge-runtime-common" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/parity-bridges-common/" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive"] } +ed25519-dalek = { version = "1.0", default-features = false, optional = true } +hash-db = { version = "0.15.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Bridge dependencies + +bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } +bp-messages = { path = "../../primitives/messages", default-features = false } +bp-runtime = { path = "../../primitives/runtime", default-features = false } +pallet-bridge-dispatch = { path = "../../modules/dispatch", default-features = false } +pallet-bridge-grandpa = { path = "../../modules/grandpa", default-features = false } +pallet-bridge-messages = { path = "../../modules/messages", default-features = false } + +# Substrate dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-message-dispatch/std", + "bp-messages/std", + "bp-runtime/std", + "codec/std", + "frame-support/std", + "hash-db/std", + "pallet-bridge-dispatch/std", + "pallet-bridge-grandpa/std", + "pallet-bridge-messages/std", + "pallet-transaction-payment/std", + "scale-info/std", + "sp-core/std", + "sp-runtime/std", + "sp-state-machine/std", + "sp-std/std", + "sp-trie/std", +] +runtime-benchmarks = [ + "ed25519-dalek/u64_backend", + "pallet-bridge-grandpa/runtime-benchmarks", + "pallet-bridge-messages/runtime-benchmarks", + "sp-state-machine", +] diff --git a/bridges/bin/runtime-common/README.md b/bin/runtime-common/README.md similarity index 100% rename from bridges/bin/runtime-common/README.md rename to bin/runtime-common/README.md diff --git a/bin/runtime-common/src/lib.rs b/bin/runtime-common/src/lib.rs new file mode 100644 index 000000000000..66f2c6c3a01f --- /dev/null +++ b/bin/runtime-common/src/lib.rs @@ -0,0 +1,23 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Common types/functions that may be used by runtimes of all bridged chains. + +#![cfg_attr(not(feature = "std"), no_std)] + +pub mod messages; +pub mod messages_api; +pub mod messages_benchmarking; diff --git a/bin/runtime-common/src/messages.rs b/bin/runtime-common/src/messages.rs new file mode 100644 index 000000000000..b34cbb85540d --- /dev/null +++ b/bin/runtime-common/src/messages.rs @@ -0,0 +1,1576 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types that allow runtime to act as a source/target endpoint of message lanes. +//! +//! Messages are assumed to be encoded `Call`s of the target chain. Call-dispatch +//! pallet is used to dispatch incoming messages. Message identified by a tuple +//! of to elements - message lane id and message nonce. + +use bp_message_dispatch::MessageDispatch as _; +use bp_messages::{ + source_chain::{LaneMessageVerifier, Sender}, + target_chain::{DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages}, + InboundLaneData, LaneId, Message, MessageData, MessageKey, MessageNonce, OutboundLaneData, +}; +use bp_runtime::{ + messages::{DispatchFeePayment, MessageDispatchResult}, + ChainId, Size, StorageProofChecker, +}; +use codec::{Decode, Encode}; +use frame_support::{ + traits::{Currency, ExistenceRequirement}, + weights::{Weight, WeightToFeePolynomial}, + RuntimeDebug, +}; +use hash_db::Hasher; +use scale_info::TypeInfo; +use sp_runtime::{ + traits::{AtLeast32BitUnsigned, CheckedAdd, CheckedDiv, CheckedMul, Saturating, Zero}, + FixedPointNumber, FixedPointOperand, FixedU128, +}; +use sp_std::{ + cmp::PartialOrd, convert::TryFrom, fmt::Debug, marker::PhantomData, ops::RangeInclusive, + vec::Vec, +}; +use sp_trie::StorageProof; + +/// Bidirectional message bridge. +pub trait MessageBridge { + /// Relayer interest (in percents). + const RELAYER_FEE_PERCENT: u32; + + /// Identifier of this chain. + const THIS_CHAIN_ID: ChainId; + /// Identifier of the Bridged chain. + const BRIDGED_CHAIN_ID: ChainId; + /// Name of the paired messages pallet instance at the Bridged chain. + /// + /// Should be the name that is used in the `construct_runtime!()` macro. + const BRIDGED_MESSAGES_PALLET_NAME: &'static str; + + /// This chain in context of message bridge. + type ThisChain: ThisChainWithMessages; + /// Bridged chain in context of message bridge. + type BridgedChain: BridgedChainWithMessages; + + /// Convert Bridged chain balance into This chain balance. + fn bridged_balance_to_this_balance( + bridged_balance: BalanceOf>, + ) -> BalanceOf>; +} + +/// Chain that has `pallet-bridge-messages` and `dispatch` modules. +pub trait ChainWithMessages { + /// Hash used in the chain. + type Hash: Decode; + /// Accound id on the chain. + type AccountId: Encode + Decode; + /// Public key of the chain account that may be used to verify signatures. + type Signer: Encode + Decode; + /// Signature type used on the chain. + type Signature: Encode + Decode; + /// Type of weight that is used on the chain. This would almost always be a regular + /// `frame_support::weight::Weight`. But since the meaning of weight on different chains + /// may be different, the `WeightOf<>` construct is used to avoid confusion between + /// different weights. + type Weight: From + PartialOrd; + /// Type of balances that is used on the chain. + type Balance: Encode + + Decode + + CheckedAdd + + CheckedDiv + + CheckedMul + + PartialOrd + + From + + Copy; +} + +/// Message related transaction parameters estimation. +#[derive(RuntimeDebug)] +pub struct MessageTransaction { + /// The estimated dispatch weight of the transaction. + pub dispatch_weight: Weight, + /// The estimated size of the encoded transaction. + pub size: u32, +} + +/// This chain that has `pallet-bridge-messages` and `dispatch` modules. +pub trait ThisChainWithMessages: ChainWithMessages { + /// Call type on the chain. + type Call: Encode + Decode; + + /// Are we accepting any messages to the given lane? + fn is_outbound_lane_enabled(lane: &LaneId) -> bool; + + /// Maximal number of pending (not yet delivered) messages at This chain. + /// + /// Any messages over this limit, will be rejected. + fn maximal_pending_messages_at_outbound_lane() -> MessageNonce; + + /// Estimate size and weight of single message delivery confirmation transaction at This chain. + fn estimate_delivery_confirmation_transaction() -> MessageTransaction>; + + /// Returns minimal transaction fee that must be paid for given transaction at This chain. + fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf; +} + +/// Bridged chain that has `pallet-bridge-messages` and `dispatch` modules. +pub trait BridgedChainWithMessages: ChainWithMessages { + /// Maximal extrinsic size at Bridged chain. + fn maximal_extrinsic_size() -> u32; + + /// Returns feasible weights range for given message payload at the Bridged chain. + /// + /// If message is being sent with the weight that is out of this range, then it + /// should be rejected. + /// + /// Weights returned from this function shall not include transaction overhead + /// (like weight of signature and signed extensions verification), because they're + /// already accounted by the `weight_of_delivery_transaction`. So this function should + /// return pure call dispatch weights range. + fn message_weight_limits(message_payload: &[u8]) -> RangeInclusive; + + /// Estimate size and weight of single message delivery transaction at the Bridged chain. + fn estimate_delivery_transaction( + message_payload: &[u8], + include_pay_dispatch_fee_cost: bool, + message_dispatch_weight: WeightOf, + ) -> MessageTransaction>; + + /// Returns minimal transaction fee that must be paid for given transaction at the Bridged + /// chain. + fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf; +} + +/// This chain in context of message bridge. +pub type ThisChain = ::ThisChain; +/// Bridged chain in context of message bridge. +pub type BridgedChain = ::BridgedChain; +/// Hash used on the chain. +pub type HashOf = ::Hash; +/// Account id used on the chain. +pub type AccountIdOf = ::AccountId; +/// Public key of the chain account that may be used to verify signature. +pub type SignerOf = ::Signer; +/// Signature type used on the chain. +pub type SignatureOf = ::Signature; +/// Type of weight that used on the chain. +pub type WeightOf = ::Weight; +/// Type of balances that is used on the chain. +pub type BalanceOf = ::Balance; +/// Type of call that is used on this chain. +pub type CallOf = ::Call; + +/// Raw storage proof type (just raw trie nodes). +type RawStorageProof = Vec>; + +/// Compute fee of transaction at runtime where regular transaction payment pallet is being used. +/// +/// The value of `multiplier` parameter is the expected value of +/// `pallet_transaction_payment::NextFeeMultiplier` at the moment when transaction is submitted. If +/// you're charging this payment in advance (and that's what happens with delivery and confirmation +/// transaction in this crate), then there's a chance that the actual fee will be larger than what +/// is paid in advance. So the value must be chosen carefully. +pub fn transaction_payment( + base_extrinsic_weight: Weight, + per_byte_fee: Balance, + multiplier: FixedU128, + weight_to_fee: impl Fn(Weight) -> Balance, + transaction: MessageTransaction, +) -> Balance { + // base fee is charged for every tx + let base_fee = weight_to_fee(base_extrinsic_weight); + + // non-adjustable per-byte fee + let len_fee = per_byte_fee.saturating_mul(Balance::from(transaction.size)); + + // the adjustable part of the fee + let unadjusted_weight_fee = weight_to_fee(transaction.dispatch_weight); + let adjusted_weight_fee = multiplier.saturating_mul_int(unadjusted_weight_fee); + + base_fee.saturating_add(len_fee).saturating_add(adjusted_weight_fee) +} + +/// Sub-module that is declaring types required for processing This -> Bridged chain messages. +pub mod source { + use super::*; + + /// Encoded Call of the Bridged chain. We never try to decode it on This chain. + pub type BridgedChainOpaqueCall = Vec; + + /// Message payload for This -> Bridged chain messages. + pub type FromThisChainMessagePayload = bp_message_dispatch::MessagePayload< + AccountIdOf>, + SignerOf>, + SignatureOf>, + BridgedChainOpaqueCall, + >; + + /// Messages delivery proof from bridged chain: + /// + /// - hash of finalized header; + /// - storage proof of inbound lane state; + /// - lane id. + #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] + pub struct FromBridgedChainMessagesDeliveryProof { + /// Hash of the bridge header the proof is for. + pub bridged_header_hash: BridgedHeaderHash, + /// Storage trie proof generated for [`Self::bridged_header_hash`]. + pub storage_proof: RawStorageProof, + /// Lane id of which messages were delivered and the proof is for. + pub lane: LaneId, + } + + impl Size for FromBridgedChainMessagesDeliveryProof { + fn size_hint(&self) -> u32 { + u32::try_from( + self.storage_proof + .iter() + .fold(0usize, |sum, node| sum.saturating_add(node.len())), + ) + .unwrap_or(u32::MAX) + } + } + + /// 'Parsed' message delivery proof - inbound lane id and its state. + pub type ParsedMessagesDeliveryProofFromBridgedChain = + (LaneId, InboundLaneData>>); + + /// Message verifier that is doing all basic checks. + /// + /// This verifier assumes following: + /// + /// - all message lanes are equivalent, so all checks are the same; + /// - messages are being dispatched using `pallet-bridge-dispatch` pallet on the target chain. + /// + /// Following checks are made: + /// + /// - message is rejected if its lane is currently blocked; + /// - message is rejected if there are too many pending (undelivered) messages at the outbound + /// lane; + /// - check that the sender has rights to dispatch the call on target chain using provided + /// dispatch origin; + /// - check that the sender has paid enough funds for both message delivery and dispatch. + #[derive(RuntimeDebug)] + pub struct FromThisChainMessageVerifier(PhantomData); + + /// The error message returned from LaneMessageVerifier when outbound lane is disabled. + pub const OUTBOUND_LANE_DISABLED: &str = "The outbound message lane is disabled."; + /// The error message returned from LaneMessageVerifier when too many pending messages at the + /// lane. + pub const TOO_MANY_PENDING_MESSAGES: &str = "Too many pending messages at the lane."; + /// The error message returned from LaneMessageVerifier when call origin is mismatch. + pub const BAD_ORIGIN: &str = "Unable to match the source origin to expected target origin."; + /// The error message returned from LaneMessageVerifier when the message fee is too low. + pub const TOO_LOW_FEE: &str = "Provided fee is below minimal threshold required by the lane."; + + impl + LaneMessageVerifier< + AccountIdOf>, + FromThisChainMessagePayload, + BalanceOf>, + > for FromThisChainMessageVerifier + where + B: MessageBridge, + AccountIdOf>: PartialEq + Clone, + { + type Error = &'static str; + + fn verify_message( + submitter: &Sender>>, + delivery_and_dispatch_fee: &BalanceOf>, + lane: &LaneId, + lane_outbound_data: &OutboundLaneData, + payload: &FromThisChainMessagePayload, + ) -> Result<(), Self::Error> { + // reject message if lane is blocked + if !ThisChain::::is_outbound_lane_enabled(lane) { + return Err(OUTBOUND_LANE_DISABLED) + } + + // reject message if there are too many pending messages at this lane + let max_pending_messages = ThisChain::::maximal_pending_messages_at_outbound_lane(); + let pending_messages = lane_outbound_data + .latest_generated_nonce + .saturating_sub(lane_outbound_data.latest_received_nonce); + if pending_messages > max_pending_messages { + return Err(TOO_MANY_PENDING_MESSAGES) + } + + // Do the dispatch-specific check. We assume that the target chain uses + // `Dispatch`, so we verify the message accordingly. + pallet_bridge_dispatch::verify_message_origin(submitter, payload) + .map_err(|_| BAD_ORIGIN)?; + + let minimal_fee_in_this_tokens = + estimate_message_dispatch_and_delivery_fee::(payload, B::RELAYER_FEE_PERCENT)?; + + // compare with actual fee paid + if *delivery_and_dispatch_fee < minimal_fee_in_this_tokens { + return Err(TOO_LOW_FEE) + } + + Ok(()) + } + } + + /// Return maximal message size of This -> Bridged chain message. + pub fn maximal_message_size() -> u32 { + super::target::maximal_incoming_message_size(BridgedChain::::maximal_extrinsic_size()) + } + + /// Do basic Bridged-chain specific verification of This -> Bridged chain message. + /// + /// Ok result from this function means that the delivery transaction with this message + /// may be 'mined' by the target chain. But the lane may have its own checks (e.g. fee + /// check) that would reject message (see `FromThisChainMessageVerifier`). + pub fn verify_chain_message( + payload: &FromThisChainMessagePayload, + ) -> Result<(), &'static str> { + let weight_limits = BridgedChain::::message_weight_limits(&payload.call); + if !weight_limits.contains(&payload.weight.into()) { + return Err("Incorrect message weight declared") + } + + // The maximal size of extrinsic at Substrate-based chain depends on the + // `frame_system::Config::MaximumBlockLength` and + // `frame_system::Config::AvailableBlockRatio` constants. This check is here to be sure that + // the lane won't stuck because message is too large to fit into delivery transaction. + // + // **IMPORTANT NOTE**: the delivery transaction contains storage proof of the message, not + // the message itself. The proof is always larger than the message. But unless chain state + // is enormously large, it should be several dozens/hundreds of bytes. The delivery + // transaction also contains signatures and signed extensions. Because of this, we reserve + // 1/3 of the the maximal extrinsic weight for this data. + if payload.call.len() > maximal_message_size::() as usize { + return Err("The message is too large to be sent over the lane") + } + + Ok(()) + } + + /// Estimate delivery and dispatch fee that must be paid for delivering a message to the Bridged + /// chain. + /// + /// The fee is paid in This chain Balance, but we use Bridged chain balance to avoid additional + /// conversions. Returns `None` if overflow has happened. + pub fn estimate_message_dispatch_and_delivery_fee( + payload: &FromThisChainMessagePayload, + relayer_fee_percent: u32, + ) -> Result>, &'static str> { + // the fee (in Bridged tokens) of all transactions that are made on the Bridged chain + // + // if we're going to pay dispatch fee at the target chain, then we don't include weight + // of the message dispatch in the delivery transaction cost + let pay_dispatch_fee_at_target_chain = + payload.dispatch_fee_payment == DispatchFeePayment::AtTargetChain; + let delivery_transaction = BridgedChain::::estimate_delivery_transaction( + &payload.encode(), + pay_dispatch_fee_at_target_chain, + if pay_dispatch_fee_at_target_chain { 0.into() } else { payload.weight.into() }, + ); + let delivery_transaction_fee = BridgedChain::::transaction_payment(delivery_transaction); + + // the fee (in This tokens) of all transactions that are made on This chain + let confirmation_transaction = ThisChain::::estimate_delivery_confirmation_transaction(); + let confirmation_transaction_fee = + ThisChain::::transaction_payment(confirmation_transaction); + + // minimal fee (in This tokens) is a sum of all required fees + let minimal_fee = B::bridged_balance_to_this_balance(delivery_transaction_fee) + .checked_add(&confirmation_transaction_fee); + + // before returning, add extra fee that is paid to the relayer (relayer interest) + minimal_fee + .and_then(|fee| + // having message with fee that is near the `Balance::MAX_VALUE` of the chain is + // unlikely and should be treated as an error + // => let's do multiplication first + fee + .checked_mul(&relayer_fee_percent.into()) + .and_then(|interest| interest.checked_div(&100u32.into())) + .and_then(|interest| fee.checked_add(&interest))) + .ok_or("Overflow when computing minimal required message delivery and dispatch fee") + } + + /// Verify proof of This -> Bridged chain messages delivery. + pub fn verify_messages_delivery_proof( + proof: FromBridgedChainMessagesDeliveryProof>>, + ) -> Result, &'static str> + where + ThisRuntime: pallet_bridge_grandpa::Config, + HashOf>: Into< + bp_runtime::HashOf< + >::BridgedChain, + >, + >, + { + let FromBridgedChainMessagesDeliveryProof { bridged_header_hash, storage_proof, lane } = + proof; + pallet_bridge_grandpa::Pallet::::parse_finalized_storage_proof( + bridged_header_hash.into(), + StorageProof::new(storage_proof), + |storage| { + // Messages delivery proof is just proof of single storage key read => any error + // is fatal. + let storage_inbound_lane_data_key = + pallet_bridge_messages::storage_keys::inbound_lane_data_key(B::BRIDGED_MESSAGES_PALLET_NAME, &lane); + let raw_inbound_lane_data = storage + .read_value(storage_inbound_lane_data_key.0.as_ref()) + .map_err(|_| "Failed to read inbound lane state from storage proof")? + .ok_or("Inbound lane state is missing from the messages proof")?; + let inbound_lane_data = InboundLaneData::decode(&mut &raw_inbound_lane_data[..]) + .map_err(|_| "Failed to decode inbound lane state from the proof")?; + + Ok((lane, inbound_lane_data)) + }, + ) + .map_err(<&'static str>::from)? + } +} + +/// Sub-module that is declaring types required for processing Bridged -> This chain messages. +pub mod target { + use super::*; + + /// Call origin for Bridged -> This chain messages. + pub type FromBridgedChainMessageCallOrigin = bp_message_dispatch::CallOrigin< + AccountIdOf>, + SignerOf>, + SignatureOf>, + >; + + /// Decoded Bridged -> This message payload. + pub type FromBridgedChainMessagePayload = bp_message_dispatch::MessagePayload< + AccountIdOf>, + SignerOf>, + SignatureOf>, + FromBridgedChainEncodedMessageCall>>, + >; + + /// Messages proof from bridged chain: + /// + /// - hash of finalized header; + /// - storage proof of messages and (optionally) outbound lane state; + /// - lane id; + /// - nonces (inclusive range) of messages which are included in this proof. + #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] + pub struct FromBridgedChainMessagesProof { + /// Hash of the finalized bridged header the proof is for. + pub bridged_header_hash: BridgedHeaderHash, + /// A storage trie proof of messages being delivered. + pub storage_proof: RawStorageProof, + pub lane: LaneId, + /// Nonce of the first message being delivered. + pub nonces_start: MessageNonce, + /// Nonce of the last message being delivered. + pub nonces_end: MessageNonce, + } + + impl Size for FromBridgedChainMessagesProof { + fn size_hint(&self) -> u32 { + u32::try_from( + self.storage_proof + .iter() + .fold(0usize, |sum, node| sum.saturating_add(node.len())), + ) + .unwrap_or(u32::MAX) + } + } + + /// Encoded Call of This chain as it is transferred over bridge. + /// + /// Our Call is opaque (`Vec`) for Bridged chain. So it is encoded, prefixed with + /// vector length. Custom decode implementation here is exactly to deal with this. + #[derive(Decode, Encode, RuntimeDebug, PartialEq)] + pub struct FromBridgedChainEncodedMessageCall { + encoded_call: Vec, + _marker: PhantomData, + } + + impl FromBridgedChainEncodedMessageCall { + /// Create encoded call. + pub fn new(encoded_call: Vec) -> Self { + FromBridgedChainEncodedMessageCall { encoded_call, _marker: PhantomData::default() } + } + } + + impl From> + for Result + { + fn from(encoded_call: FromBridgedChainEncodedMessageCall) -> Self { + DecodedCall::decode(&mut &encoded_call.encoded_call[..]).map_err(drop) + } + } + + /// Dispatching Bridged -> This chain messages. + #[derive(RuntimeDebug, Clone, Copy)] + pub struct FromBridgedChainMessageDispatch { + _marker: PhantomData<(B, ThisRuntime, ThisCurrency, ThisDispatchInstance)>, + } + + impl + MessageDispatch>, BalanceOf>> + for FromBridgedChainMessageDispatch + where + BalanceOf>: Saturating + FixedPointOperand, + ThisDispatchInstance: 'static, + ThisRuntime: pallet_bridge_dispatch::Config< + ThisDispatchInstance, + BridgeMessageId = (LaneId, MessageNonce), + > + pallet_transaction_payment::Config, + ::OnChargeTransaction: + pallet_transaction_payment::OnChargeTransaction< + ThisRuntime, + Balance = BalanceOf>, + >, + ThisCurrency: Currency>, Balance = BalanceOf>>, + pallet_bridge_dispatch::Pallet: + bp_message_dispatch::MessageDispatch< + AccountIdOf>, + (LaneId, MessageNonce), + Message = FromBridgedChainMessagePayload, + >, + { + type DispatchPayload = FromBridgedChainMessagePayload; + + fn dispatch_weight( + message: &DispatchMessage>>, + ) -> frame_support::weights::Weight { + message.data.payload.as_ref().map(|payload| payload.weight).unwrap_or(0) + } + + fn dispatch( + relayer_account: &AccountIdOf>, + message: DispatchMessage>>, + ) -> MessageDispatchResult { + let message_id = (message.key.lane_id, message.key.nonce); + pallet_bridge_dispatch::Pallet::::dispatch( + B::BRIDGED_CHAIN_ID, + B::THIS_CHAIN_ID, + message_id, + message.data.payload.map_err(drop), + |dispatch_origin, dispatch_weight| { + let unadjusted_weight_fee = ThisRuntime::WeightToFee::calc(&dispatch_weight); + let fee_multiplier = + pallet_transaction_payment::Pallet::::next_fee_multiplier(); + let adjusted_weight_fee = + fee_multiplier.saturating_mul_int(unadjusted_weight_fee); + if !adjusted_weight_fee.is_zero() { + ThisCurrency::transfer( + dispatch_origin, + relayer_account, + adjusted_weight_fee, + ExistenceRequirement::AllowDeath, + ) + .map_err(drop) + } else { + Ok(()) + } + }, + ) + } + } + + /// Return maximal dispatch weight of the message we're able to receive. + pub fn maximal_incoming_message_dispatch_weight(maximal_extrinsic_weight: Weight) -> Weight { + maximal_extrinsic_weight / 2 + } + + /// Return maximal message size given maximal extrinsic size. + pub fn maximal_incoming_message_size(maximal_extrinsic_size: u32) -> u32 { + maximal_extrinsic_size / 3 * 2 + } + + /// Verify proof of Bridged -> This chain messages. + /// + /// The `messages_count` argument verification (sane limits) is supposed to be made + /// outside of this function. This function only verifies that the proof declares exactly + /// `messages_count` messages. + pub fn verify_messages_proof( + proof: FromBridgedChainMessagesProof>>, + messages_count: u32, + ) -> Result>>>, &'static str> + where + ThisRuntime: pallet_bridge_grandpa::Config, + HashOf>: Into< + bp_runtime::HashOf< + >::BridgedChain, + >, + >, + { + verify_messages_proof_with_parser::( + proof, + messages_count, + |bridged_header_hash, bridged_storage_proof| { + pallet_bridge_grandpa::Pallet::::parse_finalized_storage_proof( + bridged_header_hash.into(), + StorageProof::new(bridged_storage_proof), + |storage_adapter| storage_adapter, + ) + .map(|storage| StorageProofCheckerAdapter::<_, B> { + storage, + _dummy: Default::default(), + }) + .map_err(|err| MessageProofError::Custom(err.into())) + }, + ) + .map_err(Into::into) + } + + #[derive(Debug, PartialEq)] + pub(crate) enum MessageProofError { + Empty, + MessagesCountMismatch, + MissingRequiredMessage, + FailedToDecodeMessage, + FailedToDecodeOutboundLaneState, + Custom(&'static str), + } + + impl From for &'static str { + fn from(err: MessageProofError) -> &'static str { + match err { + MessageProofError::Empty => "Messages proof is empty", + MessageProofError::MessagesCountMismatch => + "Declared messages count doesn't match actual value", + MessageProofError::MissingRequiredMessage => "Message is missing from the proof", + MessageProofError::FailedToDecodeMessage => + "Failed to decode message from the proof", + MessageProofError::FailedToDecodeOutboundLaneState => + "Failed to decode outbound lane data from the proof", + MessageProofError::Custom(err) => err, + } + } + } + + pub(crate) trait MessageProofParser { + fn read_raw_outbound_lane_data(&self, lane_id: &LaneId) -> Option>; + fn read_raw_message(&self, message_key: &MessageKey) -> Option>; + } + + struct StorageProofCheckerAdapter { + storage: StorageProofChecker, + _dummy: sp_std::marker::PhantomData, + } + + impl MessageProofParser for StorageProofCheckerAdapter + where + H: Hasher, + B: MessageBridge, + { + fn read_raw_outbound_lane_data(&self, lane_id: &LaneId) -> Option> { + let storage_outbound_lane_data_key = + pallet_bridge_messages::storage_keys::outbound_lane_data_key( + B::BRIDGED_MESSAGES_PALLET_NAME, + lane_id, + ); + self.storage.read_value(storage_outbound_lane_data_key.0.as_ref()).ok()? + } + + fn read_raw_message(&self, message_key: &MessageKey) -> Option> { + let storage_message_key = pallet_bridge_messages::storage_keys::message_key( + B::BRIDGED_MESSAGES_PALLET_NAME, + &message_key.lane_id, + message_key.nonce, + ); + self.storage.read_value(storage_message_key.0.as_ref()).ok()? + } + } + + /// Verify proof of Bridged -> This chain messages using given message proof parser. + pub(crate) fn verify_messages_proof_with_parser( + proof: FromBridgedChainMessagesProof>>, + messages_count: u32, + build_parser: BuildParser, + ) -> Result>>>, MessageProofError> + where + BuildParser: + FnOnce(HashOf>, RawStorageProof) -> Result, + Parser: MessageProofParser, + { + let FromBridgedChainMessagesProof { + bridged_header_hash, + storage_proof, + lane, + nonces_start, + nonces_end, + } = proof; + + // receiving proofs where end < begin is ok (if proof includes outbound lane state) + let messages_in_the_proof = + if let Some(nonces_difference) = nonces_end.checked_sub(nonces_start) { + // let's check that the user (relayer) has passed correct `messages_count` + // (this bounds maximal capacity of messages vec below) + let messages_in_the_proof = nonces_difference.saturating_add(1); + if messages_in_the_proof != MessageNonce::from(messages_count) { + return Err(MessageProofError::MessagesCountMismatch) + } + + messages_in_the_proof + } else { + 0 + }; + + let parser = build_parser(bridged_header_hash, storage_proof)?; + + // Read messages first. All messages that are claimed to be in the proof must + // be in the proof. So any error in `read_value`, or even missing value is fatal. + // + // Mind that we allow proofs with no messages if outbound lane state is proved. + let mut messages = Vec::with_capacity(messages_in_the_proof as _); + for nonce in nonces_start..=nonces_end { + let message_key = MessageKey { lane_id: lane, nonce }; + let raw_message_data = parser + .read_raw_message(&message_key) + .ok_or(MessageProofError::MissingRequiredMessage)?; + let message_data = + MessageData::>>::decode(&mut &raw_message_data[..]) + .map_err(|_| MessageProofError::FailedToDecodeMessage)?; + messages.push(Message { key: message_key, data: message_data }); + } + + // Now let's check if proof contains outbound lane state proof. It is optional, so we + // simply ignore `read_value` errors and missing value. + let mut proved_lane_messages = ProvedLaneMessages { lane_state: None, messages }; + let raw_outbound_lane_data = parser.read_raw_outbound_lane_data(&lane); + if let Some(raw_outbound_lane_data) = raw_outbound_lane_data { + proved_lane_messages.lane_state = Some( + OutboundLaneData::decode(&mut &raw_outbound_lane_data[..]) + .map_err(|_| MessageProofError::FailedToDecodeOutboundLaneState)?, + ); + } + + // Now we may actually check if the proof is empty or not. + if proved_lane_messages.lane_state.is_none() && proved_lane_messages.messages.is_empty() { + return Err(MessageProofError::Empty) + } + + // We only support single lane messages in this schema + let mut proved_messages = ProvedMessages::new(); + proved_messages.insert(lane, proved_lane_messages); + + Ok(proved_messages) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use codec::{Decode, Encode}; + use frame_support::weights::Weight; + use std::ops::RangeInclusive; + + const DELIVERY_TRANSACTION_WEIGHT: Weight = 100; + const DELIVERY_CONFIRMATION_TRANSACTION_WEIGHT: Weight = 100; + const THIS_CHAIN_WEIGHT_TO_BALANCE_RATE: Weight = 2; + const BRIDGED_CHAIN_WEIGHT_TO_BALANCE_RATE: Weight = 4; + const BRIDGED_CHAIN_TO_THIS_CHAIN_BALANCE_RATE: u32 = 6; + const BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT: Weight = 2048; + const BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE: u32 = 1024; + + /// Bridge that is deployed on ThisChain and allows sending/receiving messages to/from + /// BridgedChain; + #[derive(Debug, PartialEq, Eq)] + struct OnThisChainBridge; + + impl MessageBridge for OnThisChainBridge { + const RELAYER_FEE_PERCENT: u32 = 10; + const THIS_CHAIN_ID: ChainId = *b"this"; + const BRIDGED_CHAIN_ID: ChainId = *b"brdg"; + const BRIDGED_MESSAGES_PALLET_NAME: &'static str = ""; + + type ThisChain = ThisChain; + type BridgedChain = BridgedChain; + + fn bridged_balance_to_this_balance( + bridged_balance: BridgedChainBalance, + ) -> ThisChainBalance { + ThisChainBalance(bridged_balance.0 * BRIDGED_CHAIN_TO_THIS_CHAIN_BALANCE_RATE as u32) + } + } + + /// Bridge that is deployed on BridgedChain and allows sending/receiving messages to/from + /// ThisChain; + #[derive(Debug, PartialEq, Eq)] + struct OnBridgedChainBridge; + + impl MessageBridge for OnBridgedChainBridge { + const RELAYER_FEE_PERCENT: u32 = 20; + const THIS_CHAIN_ID: ChainId = *b"brdg"; + const BRIDGED_CHAIN_ID: ChainId = *b"this"; + const BRIDGED_MESSAGES_PALLET_NAME: &'static str = ""; + + type ThisChain = BridgedChain; + type BridgedChain = ThisChain; + + fn bridged_balance_to_this_balance(_this_balance: ThisChainBalance) -> BridgedChainBalance { + unreachable!() + } + } + + #[derive(Debug, PartialEq, Decode, Encode, Clone)] + struct ThisChainAccountId(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + struct ThisChainSigner(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + struct ThisChainSignature(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + enum ThisChainCall { + #[codec(index = 42)] + Transfer, + #[codec(index = 84)] + Mint, + } + + #[derive(Debug, PartialEq, Decode, Encode)] + struct BridgedChainAccountId(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + struct BridgedChainSigner(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + struct BridgedChainSignature(u32); + #[derive(Debug, PartialEq, Decode, Encode)] + enum BridgedChainCall {} + + macro_rules! impl_wrapped_balance { + ($name:ident) => { + #[derive(Debug, PartialEq, Decode, Encode, Clone, Copy)] + struct $name(u32); + + impl From for $name { + fn from(balance: u32) -> Self { + Self(balance) + } + } + + impl sp_std::ops::Add for $name { + type Output = $name; + + fn add(self, other: Self) -> Self { + Self(self.0 + other.0) + } + } + + impl sp_std::ops::Div for $name { + type Output = $name; + + fn div(self, other: Self) -> Self { + Self(self.0 / other.0) + } + } + + impl sp_std::ops::Mul for $name { + type Output = $name; + + fn mul(self, other: Self) -> Self { + Self(self.0 * other.0) + } + } + + impl sp_std::cmp::PartialOrd for $name { + fn partial_cmp(&self, other: &Self) -> Option { + self.0.partial_cmp(&other.0) + } + } + + impl CheckedAdd for $name { + fn checked_add(&self, other: &Self) -> Option { + self.0.checked_add(other.0).map(Self) + } + } + + impl CheckedDiv for $name { + fn checked_div(&self, other: &Self) -> Option { + self.0.checked_div(other.0).map(Self) + } + } + + impl CheckedMul for $name { + fn checked_mul(&self, other: &Self) -> Option { + self.0.checked_mul(other.0).map(Self) + } + } + }; + } + + impl_wrapped_balance!(ThisChainBalance); + impl_wrapped_balance!(BridgedChainBalance); + + struct ThisChain; + + impl ChainWithMessages for ThisChain { + type Hash = (); + type AccountId = ThisChainAccountId; + type Signer = ThisChainSigner; + type Signature = ThisChainSignature; + type Weight = frame_support::weights::Weight; + type Balance = ThisChainBalance; + } + + impl ThisChainWithMessages for ThisChain { + type Call = ThisChainCall; + + fn is_outbound_lane_enabled(lane: &LaneId) -> bool { + lane == TEST_LANE_ID + } + + fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { + MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE + } + + fn estimate_delivery_confirmation_transaction() -> MessageTransaction> { + MessageTransaction { + dispatch_weight: DELIVERY_CONFIRMATION_TRANSACTION_WEIGHT, + size: 0, + } + } + + fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf { + ThisChainBalance( + transaction.dispatch_weight as u32 * THIS_CHAIN_WEIGHT_TO_BALANCE_RATE as u32, + ) + } + } + + impl BridgedChainWithMessages for ThisChain { + fn maximal_extrinsic_size() -> u32 { + unreachable!() + } + + fn message_weight_limits(_message_payload: &[u8]) -> RangeInclusive { + unreachable!() + } + + fn estimate_delivery_transaction( + _message_payload: &[u8], + _include_pay_dispatch_fee_cost: bool, + _message_dispatch_weight: WeightOf, + ) -> MessageTransaction> { + unreachable!() + } + + fn transaction_payment( + _transaction: MessageTransaction>, + ) -> BalanceOf { + unreachable!() + } + } + + struct BridgedChain; + + impl ChainWithMessages for BridgedChain { + type Hash = (); + type AccountId = BridgedChainAccountId; + type Signer = BridgedChainSigner; + type Signature = BridgedChainSignature; + type Weight = frame_support::weights::Weight; + type Balance = BridgedChainBalance; + } + + impl ThisChainWithMessages for BridgedChain { + type Call = BridgedChainCall; + + fn is_outbound_lane_enabled(_lane: &LaneId) -> bool { + unreachable!() + } + + fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { + unreachable!() + } + + fn estimate_delivery_confirmation_transaction() -> MessageTransaction> { + unreachable!() + } + + fn transaction_payment( + _transaction: MessageTransaction>, + ) -> BalanceOf { + unreachable!() + } + } + + impl BridgedChainWithMessages for BridgedChain { + fn maximal_extrinsic_size() -> u32 { + BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE + } + + fn message_weight_limits(message_payload: &[u8]) -> RangeInclusive { + let begin = + std::cmp::min(BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, message_payload.len() as Weight); + begin..=BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT + } + + fn estimate_delivery_transaction( + _message_payload: &[u8], + _include_pay_dispatch_fee_cost: bool, + message_dispatch_weight: WeightOf, + ) -> MessageTransaction> { + MessageTransaction { + dispatch_weight: DELIVERY_TRANSACTION_WEIGHT + message_dispatch_weight, + size: 0, + } + } + + fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf { + BridgedChainBalance( + transaction.dispatch_weight as u32 * BRIDGED_CHAIN_WEIGHT_TO_BALANCE_RATE as u32, + ) + } + } + + fn test_lane_outbound_data() -> OutboundLaneData { + OutboundLaneData::default() + } + + #[test] + fn message_from_bridged_chain_is_decoded() { + // the message is encoded on the bridged chain + let message_on_bridged_chain = + source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: 100, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + call: ThisChainCall::Transfer.encode(), + } + .encode(); + + // and sent to this chain where it is decoded + let message_on_this_chain = + target::FromBridgedChainMessagePayload::::decode( + &mut &message_on_bridged_chain[..], + ) + .unwrap(); + assert_eq!( + message_on_this_chain, + target::FromBridgedChainMessagePayload:: { + spec_version: 1, + weight: 100, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + call: target::FromBridgedChainEncodedMessageCall::::new( + ThisChainCall::Transfer.encode(), + ), + } + ); + assert_eq!(Ok(ThisChainCall::Transfer), message_on_this_chain.call.into()); + } + + const TEST_LANE_ID: &LaneId = b"test"; + const MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE: MessageNonce = 32; + + fn regular_outbound_message_payload() -> source::FromThisChainMessagePayload + { + source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: 100, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![42], + } + } + + #[test] + fn message_fee_is_checked_by_verifier() { + const EXPECTED_MINIMAL_FEE: u32 = 5500; + + // payload of the This -> Bridged chain message + let payload = regular_outbound_message_payload(); + + // let's check if estimation matching hardcoded value + assert_eq!( + source::estimate_message_dispatch_and_delivery_fee::( + &payload, + OnThisChainBridge::RELAYER_FEE_PERCENT, + ), + Ok(ThisChainBalance(EXPECTED_MINIMAL_FEE)), + ); + + // let's check if estimation is less than hardcoded, if dispatch is paid at target chain + let mut payload_with_pay_on_target = regular_outbound_message_payload(); + payload_with_pay_on_target.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; + let fee_at_source = + source::estimate_message_dispatch_and_delivery_fee::( + &payload_with_pay_on_target, + OnThisChainBridge::RELAYER_FEE_PERCENT, + ) + .expect( + "estimate_message_dispatch_and_delivery_fee failed for pay-at-target-chain message", + ); + assert!( + fee_at_source < EXPECTED_MINIMAL_FEE.into(), + "Computed fee {:?} without prepaid dispatch must be less than the fee with prepaid dispatch {}", + fee_at_source, + EXPECTED_MINIMAL_FEE, + ); + + // and now check that the verifier checks the fee + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::Root, + &ThisChainBalance(1), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ), + Err(source::TOO_LOW_FEE) + ); + assert!(source::FromThisChainMessageVerifier::::verify_message( + &Sender::Root, + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ) + .is_ok(),); + } + + #[test] + fn should_disallow_root_calls_from_regular_accounts() { + // payload of the This -> Bridged chain message + let payload = source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: 100, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![42], + }; + + // and now check that the verifier checks the fee + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::Signed(ThisChainAccountId(0)), + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ), + Err(source::BAD_ORIGIN) + ); + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::None, + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ), + Err(source::BAD_ORIGIN) + ); + assert!(source::FromThisChainMessageVerifier::::verify_message( + &Sender::Root, + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ) + .is_ok(),); + } + + #[test] + fn should_verify_source_and_target_origin_matching() { + // payload of the This -> Bridged chain message + let payload = source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: 100, + origin: bp_message_dispatch::CallOrigin::SourceAccount(ThisChainAccountId(1)), + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![42], + }; + + // and now check that the verifier checks the fee + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::Signed(ThisChainAccountId(0)), + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ), + Err(source::BAD_ORIGIN) + ); + assert!(source::FromThisChainMessageVerifier::::verify_message( + &Sender::Signed(ThisChainAccountId(1)), + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &test_lane_outbound_data(), + &payload, + ) + .is_ok(),); + } + + #[test] + fn message_is_rejected_when_sent_using_disabled_lane() { + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::Root, + &ThisChainBalance(1_000_000), + b"dsbl", + &test_lane_outbound_data(), + ®ular_outbound_message_payload(), + ), + Err(source::OUTBOUND_LANE_DISABLED) + ); + } + + #[test] + fn message_is_rejected_when_there_are_too_many_pending_messages_at_outbound_lane() { + assert_eq!( + source::FromThisChainMessageVerifier::::verify_message( + &Sender::Root, + &ThisChainBalance(1_000_000), + TEST_LANE_ID, + &OutboundLaneData { + latest_received_nonce: 100, + latest_generated_nonce: 100 + MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE + 1, + ..Default::default() + }, + ®ular_outbound_message_payload(), + ), + Err(source::TOO_MANY_PENDING_MESSAGES) + ); + } + + #[test] + fn verify_chain_message_rejects_message_with_too_small_declared_weight() { + assert!(source::verify_chain_message::( + &source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: 5, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![1, 2, 3, 4, 5, 6], + }, + ) + .is_err()); + } + + #[test] + fn verify_chain_message_rejects_message_with_too_large_declared_weight() { + assert!(source::verify_chain_message::( + &source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT + 1, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![1, 2, 3, 4, 5, 6], + }, + ) + .is_err()); + } + + #[test] + fn verify_chain_message_rejects_message_too_large_message() { + assert!(source::verify_chain_message::( + &source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![0; source::maximal_message_size::() as usize + 1], + }, + ) + .is_err()); + } + + #[test] + fn verify_chain_message_accepts_maximal_message() { + assert_eq!( + source::verify_chain_message::( + &source::FromThisChainMessagePayload:: { + spec_version: 1, + weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, + origin: bp_message_dispatch::CallOrigin::SourceRoot, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: vec![0; source::maximal_message_size::() as _], + }, + ), + Ok(()), + ); + } + + #[derive(Debug)] + struct TestMessageProofParser { + failing: bool, + messages: RangeInclusive, + outbound_lane_data: Option, + } + + impl target::MessageProofParser for TestMessageProofParser { + fn read_raw_outbound_lane_data(&self, _lane_id: &LaneId) -> Option> { + if self.failing { + Some(vec![]) + } else { + self.outbound_lane_data.clone().map(|data| data.encode()) + } + } + + fn read_raw_message(&self, message_key: &MessageKey) -> Option> { + if self.failing { + Some(vec![]) + } else if self.messages.contains(&message_key.nonce) { + Some( + MessageData:: { + payload: message_key.nonce.encode(), + fee: BridgedChainBalance(0), + } + .encode(), + ) + } else { + None + } + } + } + + #[allow(clippy::reversed_empty_ranges)] + fn no_messages_range() -> RangeInclusive { + 1..=0 + } + + fn messages_proof(nonces_end: MessageNonce) -> target::FromBridgedChainMessagesProof<()> { + target::FromBridgedChainMessagesProof { + bridged_header_hash: (), + storage_proof: vec![], + lane: Default::default(), + nonces_start: 1, + nonces_end, + } + } + + #[test] + fn messages_proof_is_rejected_if_declared_less_than_actual_number_of_messages() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(10), + 5, + |_, _| unreachable!(), + ), + Err(target::MessageProofError::MessagesCountMismatch), + ); + } + + #[test] + fn messages_proof_is_rejected_if_declared_more_than_actual_number_of_messages() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(10), + 15, + |_, _| unreachable!(), + ), + Err(target::MessageProofError::MessagesCountMismatch), + ); + } + + #[test] + fn message_proof_is_rejected_if_build_parser_fails() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(10), + 10, + |_, _| Err(target::MessageProofError::Custom("test")), + ), + Err(target::MessageProofError::Custom("test")), + ); + } + + #[test] + fn message_proof_is_rejected_if_required_message_is_missing() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(10), + 10, + |_, _| Ok(TestMessageProofParser { + failing: false, + messages: 1..=5, + outbound_lane_data: None, + }), + ), + Err(target::MessageProofError::MissingRequiredMessage), + ); + } + + #[test] + fn message_proof_is_rejected_if_message_decode_fails() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(10), + 10, + |_, _| Ok(TestMessageProofParser { + failing: true, + messages: 1..=10, + outbound_lane_data: None, + }), + ), + Err(target::MessageProofError::FailedToDecodeMessage), + ); + } + + #[test] + fn message_proof_is_rejected_if_outbound_lane_state_decode_fails() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(0), + 0, + |_, _| Ok(TestMessageProofParser { + failing: true, + messages: no_messages_range(), + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + }), + ), + Err(target::MessageProofError::FailedToDecodeOutboundLaneState), + ); + } + + #[test] + fn message_proof_is_rejected_if_it_is_empty() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(0), + 0, + |_, _| Ok(TestMessageProofParser { + failing: false, + messages: no_messages_range(), + outbound_lane_data: None, + }), + ), + Err(target::MessageProofError::Empty), + ); + } + + #[test] + fn non_empty_message_proof_without_messages_is_accepted() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(0), + 0, + |_, _| Ok(TestMessageProofParser { + failing: false, + messages: no_messages_range(), + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + }), + ), + Ok(vec![( + Default::default(), + ProvedLaneMessages { + lane_state: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + messages: Vec::new(), + }, + )] + .into_iter() + .collect()), + ); + } + + #[test] + fn non_empty_message_proof_is_accepted() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(1), + 1, + |_, _| Ok(TestMessageProofParser { + failing: false, + messages: 1..=1, + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + }), + ), + Ok(vec![( + Default::default(), + ProvedLaneMessages { + lane_state: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + messages: vec![Message { + key: MessageKey { lane_id: Default::default(), nonce: 1 }, + data: MessageData { payload: 1u64.encode(), fee: BridgedChainBalance(0) }, + }], + }, + )] + .into_iter() + .collect()), + ); + } + + #[test] + fn verify_messages_proof_with_parser_does_not_panic_if_messages_count_mismatches() { + assert_eq!( + target::verify_messages_proof_with_parser::( + messages_proof(u64::MAX), + 0, + |_, _| Ok(TestMessageProofParser { + failing: false, + messages: 0..=u64::MAX, + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 1, + latest_received_nonce: 1, + latest_generated_nonce: 1, + }), + }), + ), + Err(target::MessageProofError::MessagesCountMismatch), + ); + } + + #[test] + fn transaction_payment_works_with_zero_multiplier() { + use sp_runtime::traits::Zero; + + assert_eq!( + transaction_payment( + 100, + 10, + FixedU128::zero(), + |weight| weight, + MessageTransaction { size: 50, dispatch_weight: 777 }, + ), + 100 + 50 * 10, + ); + } + + #[test] + fn transaction_payment_works_with_non_zero_multiplier() { + use sp_runtime::traits::One; + + assert_eq!( + transaction_payment( + 100, + 10, + FixedU128::one(), + |weight| weight, + MessageTransaction { size: 50, dispatch_weight: 777 }, + ), + 100 + 50 * 10 + 777, + ); + } +} diff --git a/bin/runtime-common/src/messages_api.rs b/bin/runtime-common/src/messages_api.rs new file mode 100644 index 000000000000..b09a88e62795 --- /dev/null +++ b/bin/runtime-common/src/messages_api.rs @@ -0,0 +1,51 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Helpers for implementing various message-related runtime API mthods. + +use crate::messages::{source::FromThisChainMessagePayload, MessageBridge}; + +use bp_messages::{LaneId, MessageDetails, MessageNonce}; +use codec::Decode; +use sp_std::vec::Vec; + +/// Implementation of the `To*OutboundLaneApi::message_details`. +pub fn outbound_message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, +) -> Vec> +where + Runtime: pallet_bridge_messages::Config, + MessagesPalletInstance: 'static, + BridgeConfig: MessageBridge, +{ + (begin..=end) + .filter_map(|nonce| { + let message_data = + pallet_bridge_messages::Pallet::::outbound_message_data(lane, nonce)?; + let decoded_payload = + FromThisChainMessagePayload::::decode(&mut &message_data.payload[..]).ok()?; + Some(MessageDetails { + nonce, + dispatch_weight: decoded_payload.weight, + size: message_data.payload.len() as _, + delivery_and_dispatch_fee: message_data.fee, + dispatch_fee_payment: decoded_payload.dispatch_fee_payment, + }) + }) + .collect() +} diff --git a/bridges/bin/runtime-common/src/messages_benchmarking.rs b/bin/runtime-common/src/messages_benchmarking.rs similarity index 92% rename from bridges/bin/runtime-common/src/messages_benchmarking.rs rename to bin/runtime-common/src/messages_benchmarking.rs index 3785f4a4607f..217560e11434 100644 --- a/bridges/bin/runtime-common/src/messages_benchmarking.rs +++ b/bin/runtime-common/src/messages_benchmarking.rs @@ -20,8 +20,8 @@ #![cfg(feature = "runtime-benchmarks")] use crate::messages::{ - source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof, AccountIdOf, BalanceOf, - BridgedChain, HashOf, MessageBridge, ThisChain, + source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof, + AccountIdOf, BalanceOf, BridgedChain, HashOf, MessageBridge, ThisChain, }; use bp_messages::{LaneId, MessageData, MessageKey, MessagePayload}; @@ -29,13 +29,16 @@ use bp_runtime::ChainId; use codec::Encode; use ed25519_dalek::{PublicKey, SecretKey, Signer, KEYPAIR_LENGTH, SECRET_KEY_LENGTH}; use frame_support::weights::Weight; -use pallet_bridge_messages::benchmarking::{MessageDeliveryProofParams, MessageProofParams, ProofSize}; +use pallet_bridge_messages::benchmarking::{ + MessageDeliveryProofParams, MessageProofParams, ProofSize, +}; use sp_core::Hasher; use sp_runtime::traits::Header; use sp_std::prelude::*; use sp_trie::{record_all_keys, trie_types::TrieDBMut, Layout, MemoryDB, Recorder, TrieMut}; -/// Generate ed25519 signature to be used in `pallet_brdige_call_dispatch::CallOrigin::TargetAccount`. +/// Generate ed25519 signature to be used in +/// `pallet_brdige_call_dispatch::CallOrigin::TargetAccount`. /// /// Returns public key of the signer and the signature itself. pub fn ed25519_sign( @@ -47,8 +50,8 @@ pub fn ed25519_sign( ) -> ([u8; 32], [u8; 64]) { // key from the repo example (https://docs.rs/ed25519-dalek/1.0.1/ed25519_dalek/struct.SecretKey.html) let target_secret = SecretKey::from_bytes(&[ - 157, 097, 177, 157, 239, 253, 090, 096, 186, 132, 074, 244, 146, 236, 044, 196, 068, 073, 197, 105, 123, 050, - 105, 025, 112, 059, 172, 003, 028, 174, 127, 096, + 157, 097, 177, 157, 239, 253, 090, 096, 186, 132, 074, 244, 146, 236, 044, 196, 068, 073, + 197, 105, 123, 050, 105, 025, 112, 059, 172, 003, 028, 174, 127, 096, ]) .expect("harcoded key is valid"); let target_public: PublicKey = (&target_secret).into(); @@ -56,7 +59,8 @@ pub fn ed25519_sign( let mut target_pair_bytes = [0u8; KEYPAIR_LENGTH]; target_pair_bytes[..SECRET_KEY_LENGTH].copy_from_slice(&target_secret.to_bytes()); target_pair_bytes[SECRET_KEY_LENGTH..].copy_from_slice(&target_public.to_bytes()); - let target_pair = ed25519_dalek::Keypair::from_bytes(&target_pair_bytes).expect("hardcoded pair is valid"); + let target_pair = + ed25519_dalek::Keypair::from_bytes(&target_pair_bytes).expect("hardcoded pair is valid"); let signature_message = pallet_bridge_dispatch::account_ownership_digest( target_call, @@ -92,11 +96,8 @@ where MH: Fn(H::Out) -> ::Header, { // prepare Bridged chain storage with messages and (optionally) outbound lane state - let message_count = params - .message_nonces - .end() - .saturating_sub(*params.message_nonces.start()) - + 1; + let message_count = + params.message_nonces.end().saturating_sub(*params.message_nonces.start()) + 1; let mut storage_keys = Vec::with_capacity(message_count as usize + 1); let mut root = Default::default(); let mut mdb = MemoryDB::default(); @@ -105,10 +106,7 @@ where // insert messages for nonce in params.message_nonces.clone() { - let message_key = MessageKey { - lane_id: params.lane, - nonce, - }; + let message_key = MessageKey { lane_id: params.lane, nonce }; let message_data = MessageData { fee: BalanceOf::>::from(0), payload: message_payload.clone(), @@ -220,7 +218,7 @@ fn grow_trie(mut root: H::Out, mdb: &mut MemoryDB, trie_size: Proo .expect("record_all_keys should not fail in benchmarks"); let size: usize = proof_recorder.drain().into_iter().map(|n| n.data.len()).sum(); if size > minimal_trie_size as _ { - return root; + return root } let mut trie = TrieDBMut::::from_existing(mdb, &mut root) diff --git a/bridges/.config/lingua.dic b/bridges/.config/lingua.dic deleted file mode 100644 index da87e36948c7..000000000000 --- a/bridges/.config/lingua.dic +++ /dev/null @@ -1,177 +0,0 @@ -90 -annualised/MS -Apache-2.0/M -AccountId/MS -api/SM -auth -auths/SM -API/SM -APIs -arg -args -aren -async -Best/MS -benchmarking/MS -BlockId -BFT/M -bitfield/MS -blake2/MS -blockchain/MS -borked -BridgeStorage -BlockNumber -BTC/S -CLI/MS -Chain1 -Chain2 -ChainSpec -ChainTime -chain_getBlock -choosen -config/MS -crypto/MS -customizable/B -debian/M -decodable/MS -DOT/S -doesn -dispatchables -ed25519 -enum/MS -ERC-20 -ethereum/MS -externality/MS -extrinsic/MS -extrinsics -fedora/M -FN -FinalizationError -GiB/S -GPL/M -GPLv3/M -Handler/MS -HeaderA -HeaderId -https -implementers -inherent/MS -initialize/RG -instantiate/B -intrinsic/MS -intrinsics -InitiateChange -isn -io -js -keccak256/M -KSM/S -Lane1 -Lane2 -Lane3 -LaneId -kusama/S -KYC/M -keccak -Kovan -merkle/MS -MessageNonce -MessageNonces -Merklized -MaybeOrphan -MaybeExtra -MetricsParams -MessagePayload -misbehavior/SM -misbehaviors -MIN_SIZE -MIT/M -max_value -multivalidator/SM -natively -OldHeader -nonces -number -no_std -ok -oneshot/MS -others' -OutboundMessages -parablock/MS -parachain/MS -parameterize/D -pallet_message_lane -polkadot/MS -pov-block/MS -PoA -PoV/MS -precommit -promethius -promethius' -prune_end -prune_depth -provisioner/MS -redhat/M -repo/MS -receival -RPC/MS -RLP -runtime/MS -Runtime1 -Runtime2 -rustc/MS -ServiceFactory/MS -SignedExtension -SIZE_FACTOR -sr25519 -SS58 -SS58Prefix -src -S|N -SURI -source -struct/MS -Submitter1 -submitters/MS -subsystem/MS -subsystems' -shouldn -synchronizer -taskmanager/MS -teleport/RG -teleportation/SM -teleporter/SM -teleporters -testnet/MS -trie/MS -trustless/Y -ThisChain -TCP -ubuntu/M -union/MSG -undeliverable -unfinalized -unpruned -unservable/B -unsynced -ve -vec -Vec -validator/SM -verifier -w3f/MS -wasm/M -WND/S -XCM/S -XCMP/M -include/BG -isolate/BG -Instance1 -Instance2 -Instance42 -Pre -Rialto -stringified -Stringified -millau -Millau diff --git a/bridges/.config/spellcheck.toml b/bridges/.config/spellcheck.toml deleted file mode 100644 index e061c29ac222..000000000000 --- a/bridges/.config/spellcheck.toml +++ /dev/null @@ -1,13 +0,0 @@ -[hunspell] -lang = "en_US" -search_dirs = ["."] -extra_dictionaries = ["lingua.dic"] -skip_os_lookups = true -use_builtin = true - -[hunspell.quirks] -# `Type`'s -# 5x -transform_regex = ["^'([^\\s])'$", "^[0-9]+(?:\\.[0-9]*)?x$", "^'s$", "^\\+$", "[><+-]"] -allow_concatenation = true -allow_dashes = true diff --git a/bridges/.dockerignore b/bridges/.dockerignore deleted file mode 100644 index f4ceea785605..000000000000 --- a/bridges/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -**/target/ diff --git a/bridges/.editorconfig b/bridges/.editorconfig deleted file mode 100644 index d67ffe8f90f4..000000000000 --- a/bridges/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -root = true -[*] -indent_style=tab -indent_size=tab -tab_width=4 -end_of_line=lf -charset=utf-8 -trim_trailing_whitespace=true -max_line_length=100 -insert_final_newline=true - -[*.{yml,md,yaml,sh}] -indent_style=space -indent_size=2 -tab_width=8 -end_of_line=lf diff --git a/bridges/.github/dependabot.yml b/bridges/.github/dependabot.yml deleted file mode 100644 index a06d573703d8..000000000000 --- a/bridges/.github/dependabot.yml +++ /dev/null @@ -1,42 +0,0 @@ -version: 2 -updates: -- package-ecosystem: cargo - directory: "/" - schedule: - interval: weekly - time: "03:00" - timezone: Europe/Berlin - open-pull-requests-limit: 20 - ignore: - - dependency-name: frame-* - versions: - - ">= 0" - - dependency-name: node-inspect - versions: - - ">= 0" - - dependency-name: pallet-* - versions: - - ">= 0" - - dependency-name: sc-* - versions: - - ">= 0" - - dependency-name: sp-* - versions: - - ">= 0" - - dependency-name: substrate-* - versions: - - ">= 0" - - dependency-name: vergen - versions: - - 4.0.1 - - 4.0.2 - - 4.1.0 - - 4.2.0 - - dependency-name: jsonrpc-core - versions: - - 17.0.0 - - dependency-name: finality-grandpa - versions: - - 0.13.0 - - 0.14.0 - rebase-strategy: disabled diff --git a/bridges/.gitignore b/bridges/.gitignore deleted file mode 100644 index 0ab085784325..000000000000 --- a/bridges/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -**/target/ -**/.env -**/.env2 -**/rust-toolchain -hfuzz_target -hfuzz_workspace -**/Cargo.lock - -**/*.rs.bk - -*.o -*.so -*.rlib -*.dll -.gdb_history - -*.exe - -.DS_Store - -.idea -.vscode -*.iml -*.swp -*.swo diff --git a/bridges/.gitlab-ci.yml b/bridges/.gitlab-ci.yml deleted file mode 100644 index b49df92c73c8..000000000000 --- a/bridges/.gitlab-ci.yml +++ /dev/null @@ -1,276 +0,0 @@ -stages: - - lint - - check - - test - - build - - publish - -workflow: - rules: - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH - -variables: &default-vars - GIT_STRATEGY: fetch - GIT_DEPTH: 100 - CARGO_INCREMENTAL: 0 - ARCH: "x86_64" - CI_IMAGE: "paritytech/bridges-ci:production" - RUST_BACKTRACE: full - -default: - cache: {} - -.collect-artifacts: &collect-artifacts - artifacts: - name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" - when: on_success - expire_in: 7 days - paths: - - artifacts/ - -.kubernetes-build: &kubernetes-build - tags: - - kubernetes-parity-build - interruptible: true - -.docker-env: &docker-env - image: "${CI_IMAGE}" - before_script: - - rustup show - - cargo --version - - rustup +nightly show - - cargo +nightly --version - - sccache -s - retry: - max: 2 - when: - - runner_system_failure - - unknown_failure - - api_failure - interruptible: true - tags: - - linux-docker - -.test-refs: &test-refs - rules: - # FIXME: This is the cause why pipelines wouldn't start. The problem might be in our custom - # mirroring. This should be investigated further, but for now let's have the working - # pipeline. - # - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH - # changes: - # - '**.md' - # - diagrams/* - # - docs/* - # when: never - - if: $CI_PIPELINE_SOURCE == "pipeline" - - if: $CI_PIPELINE_SOURCE == "web" - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - -.build-refs: &build-refs - rules: - # won't run on the CI image update pipeline - - if: $CI_PIPELINE_SOURCE == "pipeline" - when: never - - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - # there are two types of nightly pipelines: - # 1. this one is triggered by the schedule with $PIPELINE == "nightly", it's for releasing. - # this job runs only on nightly pipeline with the mentioned variable, against `master` branch - - if: $CI_PIPELINE_SOURCE == "schedule" && $PIPELINE == "nightly" - -.nightly-test: &nightly-test - rules: - # 2. another is triggered by scripts repo $CI_PIPELINE_SOURCE == "pipeline" it's for the CI image - # update, it also runs all the nightly checks. - - if: $CI_PIPELINE_SOURCE == "pipeline" - -#### stage: lint - -clippy-nightly: - stage: lint - <<: *docker-env - <<: *test-refs - variables: - RUSTFLAGS: "-D warnings" - script: - - cargo +nightly clippy --all-targets - # FIXME: remove when all the warns are fixed - allow_failure: true - -fmt: - stage: lint - <<: *docker-env - <<: *test-refs - script: - - cargo fmt --all -- --check - -spellcheck: - stage: lint - <<: *docker-env - <<: *test-refs - script: - - cargo spellcheck check -m 1 -vv $(find modules/currency-exchange/src -name "*.rs") - -#### stage: check - -check: - stage: check - <<: *docker-env - <<: *test-refs - script: &check-script - - time cargo check --verbose --workspace - # Check Rialto benchmarks runtime - - time cargo check -p rialto-runtime --features runtime-benchmarks --verbose - # Check Millau benchmarks runtime - - time cargo check -p millau-runtime --features runtime-benchmarks --verbose - -check-nightly: - stage: check - <<: *docker-env - <<: *nightly-test - script: - - rustup default nightly - - *check-script - -#### stage: test - -test: - stage: test - <<: *docker-env - <<: *test-refs - script: &test-script - - time cargo test --verbose --workspace - -test-nightly: - stage: test - <<: *docker-env - <<: *nightly-test - script: - - rustup default nightly - - *test-script - -deny: - stage: test - <<: *docker-env - <<: *nightly-test - <<: *collect-artifacts - script: - - cargo deny check advisories --hide-inclusion-graph - - cargo deny check bans sources --hide-inclusion-graph - after_script: - - mkdir -p ./artifacts - - echo "___Complete logs can be found in the artifacts___" - - cargo deny check advisories 2> advisories.log - - cargo deny check bans sources 2> bans_sources.log - # this job is allowed to fail, only licenses check is important - allow_failure: true - -deny-licenses: - stage: test - <<: *docker-env - <<: *test-refs - <<: *collect-artifacts - script: - - cargo deny check licenses --hide-inclusion-graph - after_script: - - mkdir -p ./artifacts - - echo "___Complete logs can be found in the artifacts___" - - cargo deny check licenses 2> licenses.log - -#### stage: build - -build: - stage: build - <<: *docker-env - <<: *build-refs - <<: *collect-artifacts - # master - script: &build-script - - time cargo build --release --verbose --workspace - after_script: - # Prepare artifacts - - mkdir -p ./artifacts - - strip ./target/release/rialto-bridge-node - - mv -v ./target/release/rialto-bridge-node ./artifacts/ - - strip ./target/release/millau-bridge-node - - mv -v ./target/release/millau-bridge-node ./artifacts/ - - strip ./target/release/ethereum-poa-relay - - mv -v ./target/release/ethereum-poa-relay ./artifacts/ - - strip ./target/release/substrate-relay - - mv -v ./target/release/substrate-relay ./artifacts/ - - mv -v ./deployments/local-scripts/bridge-entrypoint.sh ./artifacts/ - - mv -v ./ci.Dockerfile ./artifacts/ - -build-nightly: - stage: build - <<: *docker-env - <<: *collect-artifacts - <<: *nightly-test - script: - - rustup default nightly - - *build-script - -#### stage: publish - -.build-push-image: &build-push-image - <<: *kubernetes-build - image: quay.io/buildah/stable - <<: *build-refs - variables: &image-variables - GIT_STRATEGY: none - DOCKERFILE: ci.Dockerfile - IMAGE_NAME: docker.io/paritytech/$CI_JOB_NAME - needs: - - job: build - artifacts: true - before_script: &check-versions - - if [[ "${CI_COMMIT_TAG}" ]]; then - VERSION=${CI_COMMIT_TAG}; - elif [[ "${CI_COMMIT_REF_NAME}" ]]; then - VERSION=$(echo ${CI_COMMIT_REF_NAME} | sed -r 's#/+#-#g'); - fi - - echo "Effective tags = ${VERSION} sha-${CI_COMMIT_SHORT_SHA} latest" - script: - - test "${Docker_Hub_User_Parity}" -a "${Docker_Hub_Pass_Parity}" || - ( echo "no docker credentials provided"; exit 1 ) - - cd ./artifacts - - buildah bud - --format=docker - --build-arg VCS_REF="${CI_COMMIT_SHORT_SHA}" - --build-arg BUILD_DATE="$(date +%d-%m-%Y)" - --build-arg PROJECT="${CI_JOB_NAME}" - --build-arg VERSION="${VERSION}" - --tag "${IMAGE_NAME}:${VERSION}" - --tag "${IMAGE_NAME}:sha-${CI_COMMIT_SHORT_SHA}" - --tag "${IMAGE_NAME}:latest" - --file "${DOCKERFILE}" . - # The job will success only on the protected branch - - echo "$Docker_Hub_Pass_Parity" | - buildah login --username "$Docker_Hub_User_Parity" --password-stdin docker.io - - buildah info - - buildah push --format=v2s2 "${IMAGE_NAME}:${VERSION}" - - buildah push --format=v2s2 "${IMAGE_NAME}:sha-${CI_COMMIT_SHORT_SHA}" - - buildah push --format=v2s2 "${IMAGE_NAME}:latest" - after_script: - - env REGISTRY_AUTH_FILE= buildah logout "$IMAGE_NAME" - -rialto-bridge-node: - stage: publish - <<: *build-push-image - -millau-bridge-node: - stage: publish - <<: *build-push-image - -ethereum-poa-relay: - stage: publish - <<: *build-push-image - -substrate-relay: - stage: publish - <<: *build-push-image - -# FIXME: publish binaries diff --git a/bridges/CODE_OF_CONDUCT.md b/bridges/CODE_OF_CONDUCT.md deleted file mode 100644 index 70541fb72fa2..000000000000 --- a/bridges/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,80 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers -pledge to making participation in our project and our community a harassment-free experience for -everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity -and expression, level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit - permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -### Facilitation, Not Strongarming - -We recognise that this software is merely a tool for users to create and maintain their blockchain -of preference. We see that blockchains are naturally community platforms with users being the -ultimate decision makers. We assert that good software will maximise user agency by facilitate -user-expression on the network. As such: - -- This project will strive to give users as much choice as is both reasonable and possible over what - protocol they adhere to; but -- use of the project's technical forums, commenting systems, pull requests and issue trackers as a - means to express individual protocol preferences is forbidden. - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are -expected to take appropriate and fair corrective action in response to any instances of unacceptable -behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, -code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or -to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is -representing the project or its community. Examples of representing a project or community include -using an official project e-mail address, posting via an official social media account, or acting as -an appointed representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting -the project team at admin@parity.io. All complaints will be reviewed and investigated and will -result in a response that is deemed necessary and appropriate to the circumstances. The project team -is obligated to maintain confidentiality with regard to the reporter of an incident. Further -details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face -temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/bridges/Cargo.lock b/bridges/Cargo.lock deleted file mode 100644 index 86b075028125..000000000000 --- a/bridges/Cargo.lock +++ /dev/null @@ -1,10202 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" -dependencies = [ - "gimli 0.23.0", -] - -[[package]] -name = "addr2line" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" -dependencies = [ - "gimli 0.24.0", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aead" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "aes" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2bc6d3f370b5666245ff421e231cba4353df936e26986d2918e61a8fd6aef6" -dependencies = [ - "aes-soft", - "aesni", - "block-cipher", -] - -[[package]] -name = "aes-gcm" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0301c9e9c443494d970a07885e8cf3e587bae8356a1d5abd0999068413f7205f" -dependencies = [ - "aead", - "aes", - "block-cipher", - "ghash", - "subtle 2.4.0", -] - -[[package]] -name = "aes-soft" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6" -dependencies = [ - "block-cipher", - "byteorder", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aesni" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6fe808308bb07d393e2ea47780043ec47683fcf19cf5efc8ca51c50cc8c68a" -dependencies = [ - "block-cipher", - "opaque-debug 0.3.0", -] - -[[package]] -name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - -[[package]] -name = "aho-corasick" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" -dependencies = [ - "memchr", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "anyhow" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" - -[[package]] -name = "approx" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" -dependencies = [ - "num-traits", -] - -[[package]] -name = "arbitrary" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "698b65a961a9d730fb45b6b0327e20207810c9f61ee421b082b27ba003f49e2b" - -[[package]] -name = "array_tool" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f8cb5d814eb646a863c4f24978cff2880c4be96ad8cde2c0f0678732902e271" - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" -dependencies = [ - "nodrop", -] - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrayvec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a2f58b0bb10c380af2b26e57212856b8c9a59e0925b4c20f4a174a49734eaf7" - -[[package]] -name = "asn1_der" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6e24d2cce90c53b948c46271bfb053e4bdc2db9b5d3f65e20f8cf28a1b7fc3" - -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "async-attributes" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "async-channel" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "once_cell", - "vec-arena", -] - -[[package]] -name = "async-global-executor" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6" -dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-mutex", - "blocking", - "futures-lite", - "num_cpus", - "once_cell", -] - -[[package]] -name = "async-io" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" -dependencies = [ - "concurrent-queue", - "fastrand", - "futures-lite", - "libc", - "log", - "nb-connect", - "once_cell", - "parking", - "polling", - "vec-arena", - "waker-fn", - "winapi 0.3.9", -] - -[[package]] -name = "async-lock" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1996609732bde4a9988bc42125f55f2af5f3c36370e27c778d5191a4a1b63bfb" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-mutex" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-process" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef37b86e2fa961bae5a4d212708ea0154f904ce31d1a4a7f47e1bbc33a0c040b" -dependencies = [ - "async-io", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "once_cell", - "signal-hook", - "winapi 0.3.9", -] - -[[package]] -name = "async-std" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" -dependencies = [ - "async-attributes", - "async-channel", - "async-global-executor", - "async-io", - "async-lock", - "async-process", - "crossbeam-utils 0.8.3", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "num_cpus", - "once_cell", - "pin-project-lite 0.2.4", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-std-resolver" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665c56111e244fe38e7708ee10948a4356ad6a548997c21f5a63a0f4e0edc4d" -dependencies = [ - "async-std", - "async-trait", - "futures-io", - "futures-util", - "pin-utils", - "trust-dns-resolver", -] - -[[package]] -name = "async-task" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" - -[[package]] -name = "async-tls" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f23d769dbf1838d5df5156e7b1ad404f4c463d1ac2c6aeb6cd943630f8a8400" -dependencies = [ - "futures-core", - "futures-io", - "rustls 0.19.0", - "webpki 0.21.4", - "webpki-roots", -] - -[[package]] -name = "async-trait" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "asynchronous-codec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" -dependencies = [ - "bytes 1.0.1", - "futures-sink", - "futures-util", - "memchr", - "pin-project-lite 0.2.4", -] - -[[package]] -name = "asynchronous-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" -dependencies = [ - "bytes 1.0.1", - "futures-sink", - "futures-util", - "memchr", - "pin-project-lite 0.2.4", -] - -[[package]] -name = "atomic" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281" -dependencies = [ - "autocfg", -] - -[[package]] -name = "atomic-waker" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "backoff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721c249ab59cbc483ad4294c9ee2671835c1e43e9ffc277e6b4ecfef733cfdc5" -dependencies = [ - "instant", - "rand 0.7.3", -] - -[[package]] -name = "backtrace" -version = "0.3.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" -dependencies = [ - "addr2line 0.14.1", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object 0.23.0", - "rustc-demangle", -] - -[[package]] -name = "base-x" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" - -[[package]] -name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "beef" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6736e2428df2ca2848d846c43e88745121a6654696e349ce0054a420815a7409" - -[[package]] -name = "bincode" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d175dfa69e619905c4c3cdb7c3c203fa3bdd5d51184e3afdb2742c0280493772" -dependencies = [ - "byteorder", - "serde", -] - -[[package]] -name = "bindgen" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c0bb6167449588ff70803f4127f0684f9063097eca5016f37eb52b92c2cf36" -dependencies = [ - "bitflags", - "cexpr", - "cfg-if 0.1.10", - "clang-sys", - "clap", - "env_logger 0.7.1", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "which 3.1.1", -] - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "bitvec" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5011ffc90248764d7005b0e10c7294f5aa1bd87d9dd7248f4ad475b347c294d" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "blake2-rfc" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -dependencies = [ - "arrayvec 0.4.12", - "constant_time_eq", -] - -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - -[[package]] -name = "blake2s_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - -[[package]] -name = "blake3" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding 0.1.5", - "byte-tools", - "byteorder", - "generic-array 0.12.3", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "block-padding 0.2.1", - "generic-array 0.14.4", -] - -[[package]] -name = "block-cipher" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f337a3e6da609650eb74e02bc9fac7b735049f7623ab12f2e4c719316fcc7e80" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - -[[package]] -name = "blocking" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" -dependencies = [ - "async-channel", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "once_cell", -] - -[[package]] -name = "bp-currency-exchange" -version = "0.1.0" -dependencies = [ - "frame-support", - "parity-scale-codec", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-eth-poa" -version = "0.1.0" -dependencies = [ - "ethbloom 0.10.0", - "fixed-hash", - "hash-db", - "hex-literal 0.2.1", - "impl-rlp", - "impl-serde", - "libsecp256k1", - "parity-bytes", - "parity-scale-codec", - "plain_hasher", - "primitive-types", - "rlp", - "serde", - "serde-big-array", - "sp-api", - "sp-io", - "sp-runtime", - "sp-std", - "triehash", -] - -[[package]] -name = "bp-header-chain" -version = "0.1.0" -dependencies = [ - "assert_matches", - "bp-test-utils", - "finality-grandpa", - "frame-support", - "parity-scale-codec", - "serde", - "sp-core", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bp-kusama" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-polkadot-core", - "bp-runtime", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-message-dispatch" -version = "0.1.0" -dependencies = [ - "bp-runtime", - "frame-support", - "parity-scale-codec", - "sp-std", -] - -[[package]] -name = "bp-messages" -version = "0.1.0" -dependencies = [ - "bitvec", - "bp-runtime", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "serde", - "sp-std", -] - -[[package]] -name = "bp-millau" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-runtime", - "fixed-hash", - "frame-support", - "frame-system", - "hash256-std-hasher", - "impl-codec", - "impl-serde", - "max-encoded-len", - "parity-util-mem", - "serde", - "sp-api", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "bp-polkadot" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-polkadot-core", - "bp-runtime", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-polkadot-core" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "hex", - "parity-scale-codec", - "sp-api", - "sp-core", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "bp-rialto" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "sp-api", - "sp-core", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bp-rococo" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "smallvec 1.6.1", - "sp-api", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "bp-runtime" -version = "0.1.0" -dependencies = [ - "frame-support", - "hash-db", - "num-traits", - "parity-scale-codec", - "sp-core", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", -] - -[[package]] -name = "bp-test-utils" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "ed25519-dalek", - "finality-grandpa", - "parity-scale-codec", - "sp-application-crypto", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bp-westend" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-polkadot-core", - "bp-runtime", - "parity-scale-codec", - "sp-api", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "bp-wococo" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-polkadot-core", - "bp-rococo", - "bp-runtime", - "parity-scale-codec", - "sp-api", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bridge-runtime-common" -version = "0.1.0" -dependencies = [ - "bp-message-dispatch", - "bp-messages", - "bp-runtime", - "ed25519-dalek", - "frame-support", - "hash-db", - "pallet-bridge-dispatch", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-transaction-payment", - "parity-scale-codec", - "sp-core", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", -] - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bstr" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d" -dependencies = [ - "memchr", -] - -[[package]] -name = "build-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" -dependencies = [ - "semver 0.6.0", -] - -[[package]] -name = "bumpalo" -version = "3.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" - -[[package]] -name = "byte-slice-cast" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -dependencies = [ - "byteorder", - "either", - "iovec", -] - -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" - -[[package]] -name = "cache-padded" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" - -[[package]] -name = "camino" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4648c6d00a709aa069a236adcaae4f605a6241c72bf5bee79331a4b625921a9" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0226944a63d1bf35a3b5f948dd7c59e263db83695c9e8bffc4037de02e30f1d7" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8" -dependencies = [ - "camino", - "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", - "serde", - "serde_json", -] - -[[package]] -name = "cc" -version = "1.0.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cexpr" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" -dependencies = [ - "nom", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chacha20" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845" -dependencies = [ - "stream-cipher", - "zeroize", -] - -[[package]] -name = "chacha20poly1305" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf18d374d66df0c05cdddd528a7db98f78c28e2519b120855c4f84c5027b1f5" -dependencies = [ - "aead", - "chacha20", - "poly1305", - "stream-cipher", - "zeroize", -] - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time 0.1.44", - "winapi 0.3.9", -] - -[[package]] -name = "cid" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" -dependencies = [ - "multibase", - "multihash", - "unsigned-varint 0.5.1", -] - -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "clang-sys" -version = "0.29.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "ansi_term 0.11.0", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", - "yaml-rust", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - -[[package]] -name = "concurrent-queue" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" -dependencies = [ - "cache-padded", -] - -[[package]] -name = "const_fn" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "core-foundation" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" -dependencies = [ - "core-foundation-sys 0.7.0", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" - -[[package]] -name = "core-foundation-sys" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" - -[[package]] -name = "cpp_demangle" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44919ecaf6f99e8e737bc239408931c9a01e9a6c74814fee8242dd2506b65390" -dependencies = [ - "cfg-if 1.0.0", - "glob", -] - -[[package]] -name = "cpuid-bool" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" - -[[package]] -name = "cpuid-bool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" - -[[package]] -name = "cranelift-bforest" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ca3560686e7c9c7ed7e0fe77469f2410ba5d7781b1acaa9adc8d8deea28e3e" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf9bf1ffffb6ce3d2e5ebc83549bd2436426c99b31cc550d521364cbe35d276" -dependencies = [ - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "gimli 0.24.0", - "log", - "regalloc", - "serde", - "smallvec 1.6.1", - "target-lexicon", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc21936a5a6d07e23849ffe83e5c1f6f50305c074f4b2970ca50c13bf55b821" -dependencies = [ - "cranelift-codegen-shared", - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5b6ffaa87560bebe69a5446449da18090b126037920b0c1c6d5945f72faf6b" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-entity" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6b4a8bef04f82e4296782646f733c641d09497df2fabf791323fefaa44c64c" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-frontend" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b783b351f966fce33e3c03498cb116d16d97a8f9978164a60920bd0d3a99c" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec 1.6.1", - "target-lexicon", -] - -[[package]] -name = "cranelift-native" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c88d3dd48021ff1e37e978a00098524abd3513444ae252c08d37b310b3d2a" -dependencies = [ - "cranelift-codegen", - "target-lexicon", -] - -[[package]] -name = "cranelift-wasm" -version = "0.74.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb6d408e2da77cdbbd65466298d44c86ae71c1785d2ab0d8657753cdb4d9d89" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools 0.10.0", - "log", - "serde", - "smallvec 1.6.1", - "thiserror", - "wasmparser", -] - -[[package]] -name = "crc32fast" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.3", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch 0.9.3", - "crossbeam-utils 0.8.3", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.3", - "lazy_static", - "memoffset 0.6.1", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49" -dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "lazy_static", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-mac" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -dependencies = [ - "generic-array 0.12.3", - "subtle 1.0.0", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.0", -] - -[[package]] -name = "ct-logs" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672e" -dependencies = [ - "sct", -] - -[[package]] -name = "ctor" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8f45d9ad417bcef4817d614a501ab55cdd96a6fdb24f49aab89a54acfd66b19" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "cuckoofilter" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18" -dependencies = [ - "byteorder", - "fnv", - "rand 0.7.3", -] - -[[package]] -name = "curl" -version = "0.4.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a872858e9cb9e3b96c80dd78774ad9e32e44d3b05dc31e142b858d14aebc82c" -dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2 0.3.19", - "winapi 0.3.9", -] - -[[package]] -name = "curl-sys" -version = "0.4.41+curl-7.75.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec466abd277c7cab2905948f3e94d10bc4963f1f5d47921c1cc4ffd2028fe65" -dependencies = [ - "cc", - "libc", - "libnghttp2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi 0.3.9", -] - -[[package]] -name = "curve25519-dalek" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle 2.4.0", - "zeroize", -] - -[[package]] -name = "curve25519-dalek" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723f" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle 2.4.0", - "zeroize", -] - -[[package]] -name = "data-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" - -[[package]] -name = "data-encoding-macro" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a94feec3d2ba66c0b6621bca8bc6f68415b1e5c69af3586fdd0af9fd9f29b17" -dependencies = [ - "data-encoding", - "data-encoding-macro-internal", -] - -[[package]] -name = "data-encoding-macro-internal" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f83e699727abca3c56e187945f303389590305ab2f0185ea445aa66e8d5f2a" -dependencies = [ - "data-encoding", - "syn", -] - -[[package]] -name = "derive_more" -version = "0.99.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.3", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "directories" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0f" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "directories-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" -dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi 0.3.9", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users 0.4.0", - "winapi 0.3.9", -] - -[[package]] -name = "discard" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" - -[[package]] -name = "dns-parser" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" -dependencies = [ - "byteorder", - "quick-error 1.2.3", -] - -[[package]] -name = "doc-comment" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" - -[[package]] -name = "downcast-rs" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - -[[package]] -name = "dyn-clonable" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" -dependencies = [ - "dyn-clonable-impl", - "dyn-clone", -] - -[[package]] -name = "dyn-clonable-impl" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dyn-clone" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" - -[[package]] -name = "ed25519" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6ef" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.0.2", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.3", - "zeroize", -] - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "encoding_rs" -version = "0.8.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "enum-as-inner" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "env_logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -dependencies = [ - "atty", - "humantime 1.3.0", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "env_logger" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" -dependencies = [ - "atty", - "humantime 2.1.0", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "environmental" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" - -[[package]] -name = "erased-serde" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0465971a8cc1fa2455c8465aaa377131e1f1cf4983280f474a13e68793aa770c" -dependencies = [ - "serde", -] - -[[package]] -name = "errno" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" -dependencies = [ - "gcc", - "libc", -] - -[[package]] -name = "ethabi" -version = "14.0.0" -source = "git+https://github.com/paritytech/ethabi.git?branch=td-eth-types-11#fe76a0547de3785e40215da7aa10b334e7a6e553" -dependencies = [ - "anyhow", - "ethereum-types", - "hex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", -] - -[[package]] -name = "ethabi-contract" -version = "11.0.0" -source = "git+https://github.com/paritytech/ethabi.git?branch=td-eth-types-11#fe76a0547de3785e40215da7aa10b334e7a6e553" - -[[package]] -name = "ethabi-derive" -version = "14.0.0" -source = "git+https://github.com/paritytech/ethabi.git?branch=td-eth-types-11#fe76a0547de3785e40215da7aa10b334e7a6e553" -dependencies = [ - "anyhow", - "ethabi", - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "ethbloom" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a621dcebea74f2a6f2002d0a885c81ccf6cbdf86760183316a7722b5707ca4" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-rlp", - "tiny-keccak", -] - -[[package]] -name = "ethbloom" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779864b9c7f7ead1f092972c3257496c6a84b46dba2ce131dd8a282cb2cc5972" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-rlp", - "impl-serde", - "tiny-keccak", -] - -[[package]] -name = "ethereum-contract-builtin" -version = "0.1.0" -dependencies = [ - "ethereum-types", - "finality-grandpa", - "hex", - "log", - "parity-scale-codec", - "rialto-runtime", - "sc-finality-grandpa", - "sp-blockchain", - "sp-core", - "sp-finality-grandpa", - "sp-runtime", -] - -[[package]] -name = "ethereum-poa-relay" -version = "0.1.0" -dependencies = [ - "ansi_term 0.12.1", - "async-std", - "async-trait", - "bp-currency-exchange", - "bp-eth-poa", - "clap", - "env_logger 0.8.3", - "ethabi", - "ethabi-contract", - "ethabi-derive", - "exchange-relay", - "frame-system", - "futures 0.3.13", - "headers-relay", - "hex", - "hex-literal 0.3.1", - "libsecp256k1", - "log", - "messages-relay", - "num-traits", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-ethereum-client", - "relay-rialto-client", - "relay-substrate-client", - "relay-utils", - "rialto-runtime", - "serde", - "serde_json", - "sp-core", - "sp-keyring", - "sp-runtime", - "substrate-prometheus-endpoint", - "time 0.2.25", -] - -[[package]] -name = "ethereum-types" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64b5df66a228d85e4b17e5d6c6aa43b0310898ffe8a85988c4c032357aaabfd" -dependencies = [ - "ethbloom 0.11.0", - "fixed-hash", - "impl-rlp", - "impl-serde", - "primitive-types", - "uint", -] - -[[package]] -name = "event-listener" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" - -[[package]] -name = "exchange-relay" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "backoff", - "futures 0.3.13", - "log", - "num-traits", - "parking_lot 0.11.1", - "relay-utils", -] - -[[package]] -name = "exit-future" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" -dependencies = [ - "futures 0.3.13", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - -[[package]] -name = "fastrand" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" -dependencies = [ - "instant", -] - -[[package]] -name = "fdlimit" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" -dependencies = [ - "libc", -] - -[[package]] -name = "file-per-thread-logger" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126" -dependencies = [ - "env_logger 0.7.1", - "log", -] - -[[package]] -name = "finality-grandpa" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74a1bfdcc776e63e49f741c7ce6116fa1b887e8ac2e3ccb14dd4aa113e54feb9" -dependencies = [ - "either", - "futures 0.3.13", - "futures-timer 3.0.2", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.11.1", -] - -[[package]] -name = "finality-relay" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "backoff", - "bp-header-chain", - "futures 0.3.13", - "headers-relay", - "log", - "num-traits", - "parking_lot 0.11.1", - "relay-utils", -] - -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand 0.8.3", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" - -[[package]] -name = "flate2" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" -dependencies = [ - "cfg-if 1.0.0", - "crc32fast", - "libc", - "libz-sys", - "miniz_oxide", -] - -[[package]] -name = "flume" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a685ab99b8f60a271b44d5dd1a76e55124a8c9fa0407b7a8e9cd172d5b588" -dependencies = [ - "futures-core", - "futures-sink", - "pin-project 1.0.5", - "spinning_top", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fork-tree" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "form_urlencoded" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" -dependencies = [ - "matches", - "percent-encoding 2.1.0", -] - -[[package]] -name = "frame-benchmarking" -version = "3.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "linregress", - "log", - "parity-scale-codec", - "paste 1.0.4", - "sp-api", - "sp-io", - "sp-runtime", - "sp-runtime-interface", - "sp-std", - "sp-storage", -] - -[[package]] -name = "frame-benchmarking-cli" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "Inflector", - "chrono", - "frame-benchmarking", - "handlebars", - "parity-scale-codec", - "sc-cli", - "sc-client-db", - "sc-executor", - "sc-service", - "serde", - "sp-core", - "sp-externalities", - "sp-keystore", - "sp-runtime", - "sp-state-machine", - "structopt", -] - -[[package]] -name = "frame-executive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-tracing", -] - -[[package]] -name = "frame-metadata" -version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "serde", - "sp-core", - "sp-std", -] - -[[package]] -name = "frame-support" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "bitflags", - "frame-metadata", - "frame-support-procedural", - "impl-trait-for-tuples", - "log", - "max-encoded-len", - "once_cell", - "parity-scale-codec", - "paste 1.0.4", - "serde", - "smallvec 1.6.1", - "sp-arithmetic", - "sp-core", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-state-machine", - "sp-std", - "sp-tracing", -] - -[[package]] -name = "frame-support-procedural" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "Inflector", - "frame-support-procedural-tools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "frame-support-procedural-tools" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support-procedural-tools-derive", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "frame-support-procedural-tools-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "frame-system" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "frame-system-rpc-runtime-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sp-api", -] - -[[package]] -name = "fs-swap" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d47dad3685eceed8488986cad3d5027165ea5edb164331770e2059555f10a5" -dependencies = [ - "lazy_static", - "libc", - "libloading", - "winapi 0.3.9", -] - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - -[[package]] -name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - -[[package]] -name = "futures" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f55667319111d593ba876406af7c409c0ebb44dc4be6132a783ccf163ea14c1" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] - -[[package]] -name = "futures-executor" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891a4b7b96d84d5940084b2a37632dd65deeae662c114ceaa2c879629c9c0ad1" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", -] - -[[package]] -name = "futures-io" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59" - -[[package]] -name = "futures-lite" -version = "1.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite 0.2.4", - "waker-fn", -] - -[[package]] -name = "futures-macro" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-rustls" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" -dependencies = [ - "futures-io", - "rustls 0.19.0", - "webpki 0.21.4", -] - -[[package]] -name = "futures-sink" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" - -[[package]] -name = "futures-task" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" - -[[package]] -name = "futures-timer" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" - -[[package]] -name = "futures-timer" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" - -[[package]] -name = "futures-util" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" -dependencies = [ - "futures 0.1.31", - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite 0.2.4", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", -] - -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" - -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", -] - -[[package]] -name = "ghash" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" -dependencies = [ - "opaque-debug 0.3.0", - "polyval", -] - -[[package]] -name = "gimli" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" - -[[package]] -name = "gimli" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" -dependencies = [ - "fallible-iterator", - "indexmap", - "stable_deref_trait", -] - -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - -[[package]] -name = "globset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a" -dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] -name = "gloo-timers" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "h2" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "fnv", - "futures 0.1.31", - "http 0.1.21", - "indexmap", - "log", - "slab", - "string", - "tokio-io", -] - -[[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.3", - "indexmap", - "slab", - "tokio 0.2.25", - "tokio-util", - "tracing", - "tracing-futures", -] - -[[package]] -name = "handlebars" -version = "3.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb0867bbc5a3da37a753e78021d5fcf8a4db00e18dd2dd90fd36e24190e162d" -dependencies = [ - "log", - "pest", - "pest_derive", - "quick-error 2.0.0", - "serde", - "serde_json", -] - -[[package]] -name = "hash-db" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" - -[[package]] -name = "hash256-std-hasher" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" -dependencies = [ - "crunchy", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash", -] - -[[package]] -name = "headers-relay" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "backoff", - "futures 0.3.13", - "linked-hash-map", - "log", - "num-traits", - "parking_lot 0.11.1", - "relay-utils", -] - -[[package]] -name = "heck" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" -dependencies = [ - "hex-literal-impl", - "proc-macro-hack", -] - -[[package]] -name = "hex-literal" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8" - -[[package]] -name = "hex-literal-impl" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853f769599eb31de176303197b7ba4973299c38c7a7604a6bc88c3eef05b9b46" -dependencies = [ - "proc-macro-hack", -] - -[[package]] -name = "hex_fmt" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" - -[[package]] -name = "hmac" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" -dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", -] - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac-drbg" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" -dependencies = [ - "digest 0.8.1", - "generic-array 0.12.3", - "hmac 0.7.1", -] - -[[package]] -name = "honggfuzz" -version = "0.5.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea09577d948a98a5f59b7c891e274c4fb35ad52f67782b3d0cb53b9c05301f1" -dependencies = [ - "arbitrary", - "lazy_static", - "memmap", -] - -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", -] - -[[package]] -name = "http" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" -dependencies = [ - "bytes 1.0.1", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "http 0.1.21", - "tokio-buf", -] - -[[package]] -name = "http-body" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -dependencies = [ - "bytes 0.5.6", - "http 0.2.3", -] - -[[package]] -name = "httparse" -version = "1.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" - -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - -[[package]] -name = "humantime" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error 1.2.3", -] - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.12.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "http-body 0.1.0", - "httparse", - "iovec", - "itoa", - "log", - "net2", - "rustc_version", - "time 0.1.44", - "tokio 0.1.22", - "tokio-buf", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "want 0.2.0", -] - -[[package]] -name = "hyper" -version = "0.13.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" -dependencies = [ - "bytes 0.5.6", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.2.7", - "http 0.2.3", - "http-body 0.3.1", - "httparse", - "httpdate", - "itoa", - "pin-project 1.0.5", - "socket2 0.3.19", - "tokio 0.2.25", - "tower-service", - "tracing", - "want 0.3.0", -] - -[[package]] -name = "hyper-rustls" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" -dependencies = [ - "bytes 0.5.6", - "ct-logs", - "futures-util", - "hyper 0.13.10", - "log", - "rustls 0.18.1", - "rustls-native-certs", - "tokio 0.2.25", - "tokio-rustls", - "webpki 0.21.4", -] - -[[package]] -name = "idna" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "idna" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "if-addrs" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48" -dependencies = [ - "if-addrs-sys", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "if-addrs-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "if-watch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6d52908d4ea4ab2bc22474ba149bf1011c8e2c3ebc1ff593ae28ac44f494b6" -dependencies = [ - "async-io", - "futures 0.3.13", - "futures-lite", - "if-addrs", - "ipnet", - "libc", - "log", - "winapi 0.3.9", -] - -[[package]] -name = "impl-codec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df170efa359aebdd5cb7fe78edcc67107748e4737bdca8a8fb40d15ea7a877ed" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "indexmap" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" -dependencies = [ - "autocfg", - "hashbrown", - "serde", -] - -[[package]] -name = "instant" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "integer-sqrt" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" -dependencies = [ - "num-traits", -] - -[[package]] -name = "intervalier" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275" -dependencies = [ - "futures 0.3.13", - "futures-timer 2.0.2", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ip_network" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee15951c035f79eddbef745611ec962f63f4558f1dadf98ab723cc603487c6f" - -[[package]] -name = "ipconfig" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" -dependencies = [ - "socket2 0.3.19", - "widestring", - "winapi 0.3.9", - "winreg", -] - -[[package]] -name = "ipnet" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" - -[[package]] -name = "isahc" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b24d2aed6bbe6faeab0e164ec2e9e6193fcfcfe489b6eb59fb0d0d34947d73" -dependencies = [ - "crossbeam-utils 0.8.3", - "curl", - "curl-sys", - "encoding_rs", - "flume", - "futures-lite", - "http 0.2.3", - "log", - "mime", - "once_cell", - "polling", - "slab", - "sluice", - "tracing", - "tracing-futures", - "url 2.2.1", - "waker-fn", -] - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - -[[package]] -name = "jobserver" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" -dependencies = [ - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "jsonpath_lib" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61352ec23883402b7d30b3313c16cbabefb8907361c4eb669d990cbb87ceee5a" -dependencies = [ - "array_tool", - "env_logger 0.7.1", - "log", - "serde", - "serde_json", -] - -[[package]] -name = "jsonrpc-client-transports" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7" -dependencies = [ - "failure", - "futures 0.1.31", - "jsonrpc-core 15.1.0", - "jsonrpc-pubsub", - "log", - "serde", - "serde_json", - "url 1.7.2", -] - -[[package]] -name = "jsonrpc-core" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" -dependencies = [ - "futures 0.1.31", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "jsonrpc-core" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07569945133257ff557eb37b015497104cea61a2c9edaf126c1cbd6e8332397f" -dependencies = [ - "futures 0.3.13", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "jsonrpc-core-client" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94db" -dependencies = [ - "jsonrpc-client-transports", -] - -[[package]] -name = "jsonrpc-derive" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3" -dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "jsonrpc-http-server" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb5c4513b7b542f42da107942b7b759f27120b5cc894729f88254b28dff44b7" -dependencies = [ - "hyper 0.12.36", - "jsonrpc-core 15.1.0", - "jsonrpc-server-utils", - "log", - "net2", - "parking_lot 0.10.2", - "unicase", -] - -[[package]] -name = "jsonrpc-ipc-server" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf50e53e4eea8f421a7316c5f63e395f7bc7c4e786a6dc54d76fab6ff7aa7ce7" -dependencies = [ - "jsonrpc-core 15.1.0", - "jsonrpc-server-utils", - "log", - "parity-tokio-ipc", - "parking_lot 0.10.2", - "tokio-service", -] - -[[package]] -name = "jsonrpc-pubsub" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77" -dependencies = [ - "jsonrpc-core 15.1.0", - "log", - "parking_lot 0.10.2", - "rand 0.7.3", - "serde", -] - -[[package]] -name = "jsonrpc-server-utils" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f1f3990650c033bd8f6bd46deac76d990f9bbfb5f8dc8c4767bf0a00392176" -dependencies = [ - "bytes 0.4.12", - "globset", - "jsonrpc-core 15.1.0", - "lazy_static", - "log", - "tokio 0.1.22", - "tokio-codec", - "unicase", -] - -[[package]] -name = "jsonrpc-ws-server" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6596fe75209b73a2a75ebe1dce4e60e03b88a2b25e8807b667597f6315150d22" -dependencies = [ - "jsonrpc-core 15.1.0", - "jsonrpc-server-utils", - "log", - "parity-ws", - "parking_lot 0.10.2", - "slab", -] - -[[package]] -name = "jsonrpsee-proc-macros" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5784ee8bb31988fa2c7a755fe31b0e21aa51894a67e5c99b6d4470f0253bf31a" -dependencies = [ - "Inflector", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab3dabceeeeb865897661d532d47202eaae71cd2c606f53cb69f1fbc0555a51" -dependencies = [ - "async-trait", - "beef", - "futures-channel", - "futures-util", - "log", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "jsonrpsee-ws-client" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6fdb4390bd25358c62e8b778652a564a1723ba07dca0feb3da439c2253fe59f" -dependencies = [ - "async-std", - "async-tls", - "async-trait", - "fnv", - "futures 0.3.13", - "jsonrpsee-types", - "log", - "pin-project 1.0.5", - "serde", - "serde_json", - "soketto", - "thiserror", - "url 2.2.1", - "webpki 0.22.0", -] - -[[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "kvdb" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8891bd853eff90e33024195d79d578dc984c82f9e0715fcd2b525a0c19d52811" -dependencies = [ - "parity-util-mem", - "smallvec 1.6.1", -] - -[[package]] -name = "kvdb-memorydb" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a0da8e08caf08d384a620ec19bb6c9b85c84137248e202617fb91881f25912" -dependencies = [ - "kvdb", - "parity-util-mem", - "parking_lot 0.11.1", -] - -[[package]] -name = "kvdb-rocksdb" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34446c373ccc494c2124439281c198c7636ccdc2752c06722bbffd56d459c1e4" -dependencies = [ - "fs-swap", - "kvdb", - "log", - "num_cpus", - "owning_ref", - "parity-util-mem", - "parking_lot 0.11.1", - "regex", - "rocksdb", - "smallvec 1.6.1", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "leb128" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" - -[[package]] -name = "libc" -version = "0.2.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" - -[[package]] -name = "libloading" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" -dependencies = [ - "cc", - "winapi 0.3.9", -] - -[[package]] -name = "libm" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" - -[[package]] -name = "libnghttp2-sys" -version = "0.1.6+1.43.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0af55541a8827e138d59ec9e5877fb6095ece63fb6f4da45e7491b4fbd262855" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "libp2p" -version = "0.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08053fbef67cd777049ef7a95ebaca2ece370b4ed7712c3fa404d69a88cb741b" -dependencies = [ - "atomic", - "bytes 1.0.1", - "futures 0.3.13", - "lazy_static", - "libp2p-core", - "libp2p-deflate", - "libp2p-dns", - "libp2p-floodsub", - "libp2p-gossipsub", - "libp2p-identify", - "libp2p-kad", - "libp2p-mdns", - "libp2p-mplex", - "libp2p-noise", - "libp2p-ping", - "libp2p-plaintext", - "libp2p-pnet", - "libp2p-relay", - "libp2p-request-response", - "libp2p-swarm", - "libp2p-swarm-derive", - "libp2p-tcp", - "libp2p-uds", - "libp2p-wasm-ext", - "libp2p-websocket", - "libp2p-yamux", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "smallvec 1.6.1", - "wasm-timer", -] - -[[package]] -name = "libp2p-core" -version = "0.28.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "554d3e7e9e65f939d66b75fd6a4c67f258fe250da61b91f46c545fc4a89b51d9" -dependencies = [ - "asn1_der", - "bs58", - "ed25519-dalek", - "either", - "fnv", - "futures 0.3.13", - "futures-timer 3.0.2", - "lazy_static", - "libsecp256k1", - "log", - "multihash", - "multistream-select", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "prost", - "prost-build", - "rand 0.7.3", - "ring", - "rw-stream-sink", - "sha2 0.9.3", - "smallvec 1.6.1", - "thiserror", - "unsigned-varint 0.7.0", - "void", - "zeroize", -] - -[[package]] -name = "libp2p-deflate" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2181a641cd15f9b6ba71b1335800f309012a0a97a29ffaabbbf40e9d3d58f08" -dependencies = [ - "flate2", - "futures 0.3.13", - "libp2p-core", -] - -[[package]] -name = "libp2p-dns" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e63dab8b5ff35e0c101a3e51e843ba782c07bbb1682f5fd827622e0d02b98b" -dependencies = [ - "async-std-resolver", - "futures 0.3.13", - "libp2p-core", - "log", - "smallvec 1.6.1", - "trust-dns-resolver", -] - -[[package]] -name = "libp2p-floodsub" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a9b570f6766301d9c4aa00fce3554cad1598e2f466debbc4dde909028417cf" -dependencies = [ - "cuckoofilter", - "fnv", - "futures 0.3.13", - "libp2p-core", - "libp2p-swarm", - "log", - "prost", - "prost-build", - "rand 0.7.3", - "smallvec 1.6.1", -] - -[[package]] -name = "libp2p-gossipsub" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b0c8506a6ec3344b9e706d7c7a6dba826f8ede735cfe13dde12a8c263c4af9" -dependencies = [ - "asynchronous-codec 0.6.0", - "base64 0.13.0", - "byteorder", - "bytes 1.0.1", - "fnv", - "futures 0.3.13", - "hex_fmt", - "libp2p-core", - "libp2p-swarm", - "log", - "prost", - "prost-build", - "rand 0.7.3", - "regex", - "sha2 0.9.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", - "wasm-timer", -] - -[[package]] -name = "libp2p-identify" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f668f00efd9883e8b7bcc582eaf0164615792608f886f6577da18bcbeea0a46" -dependencies = [ - "futures 0.3.13", - "libp2p-core", - "libp2p-swarm", - "log", - "prost", - "prost-build", - "smallvec 1.6.1", - "wasm-timer", -] - -[[package]] -name = "libp2p-kad" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07312ebe5ee4fd2404447a0609814574df55c65d4e20838b957bbd34907d820" -dependencies = [ - "arrayvec 0.5.2", - "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "either", - "fnv", - "futures 0.3.13", - "libp2p-core", - "libp2p-swarm", - "log", - "prost", - "prost-build", - "rand 0.7.3", - "sha2 0.9.3", - "smallvec 1.6.1", - "uint", - "unsigned-varint 0.7.0", - "void", - "wasm-timer", -] - -[[package]] -name = "libp2p-mdns" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e282f974c4bea56db8acca50387f05189406e346318cb30190b0bde662961e" -dependencies = [ - "async-io", - "data-encoding", - "dns-parser", - "futures 0.3.13", - "if-watch", - "lazy_static", - "libp2p-core", - "libp2p-swarm", - "log", - "rand 0.8.3", - "smallvec 1.6.1", - "socket2 0.4.0", - "void", -] - -[[package]] -name = "libp2p-mplex" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e9b544335d1ed30af71daa96edbefadef6f19c7a55f078b9fc92c87163105d" -dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.13", - "libp2p-core", - "log", - "nohash-hasher", - "parking_lot 0.11.1", - "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", -] - -[[package]] -name = "libp2p-noise" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36db0f0db3b0433f5b9463f1c0cd9eadc0a3734a9170439ce501ff99733a88bd" -dependencies = [ - "bytes 1.0.1", - "curve25519-dalek 3.0.2", - "futures 0.3.13", - "lazy_static", - "libp2p-core", - "log", - "prost", - "prost-build", - "rand 0.7.3", - "sha2 0.9.3", - "snow", - "static_assertions", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "libp2p-ping" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4bfaffac63bf3c7ec11ed9d8879d455966ddea7e78ee14737f0b6dce0d1cd1" -dependencies = [ - "futures 0.3.13", - "libp2p-core", - "libp2p-swarm", - "log", - "rand 0.7.3", - "void", - "wasm-timer", -] - -[[package]] -name = "libp2p-plaintext" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8c37b4d2a075b4be8442760a5f8c037180f0c8dd5b5734b9978ab868b3aa11" -dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.13", - "libp2p-core", - "log", - "prost", - "prost-build", - "unsigned-varint 0.7.0", - "void", -] - -[[package]] -name = "libp2p-pnet" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599" -dependencies = [ - "futures 0.3.13", - "log", - "pin-project 1.0.5", - "rand 0.7.3", - "salsa20", - "sha3", -] - -[[package]] -name = "libp2p-relay" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8786aca3f18671d8776289706a5521f6c9124a820f69e358de214b9939440d" -dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures 0.3.13", - "futures-timer 3.0.2", - "libp2p-core", - "libp2p-swarm", - "log", - "pin-project 1.0.5", - "prost", - "prost-build", - "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", - "void", - "wasm-timer", -] - -[[package]] -name = "libp2p-request-response" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdbe172f08e6d0f95fa8634e273d4c4268c4063de2e33e7435194b0130c62e3" -dependencies = [ - "async-trait", - "bytes 1.0.1", - "futures 0.3.13", - "libp2p-core", - "libp2p-swarm", - "log", - "lru", - "minicbor", - "rand 0.7.3", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", - "wasm-timer", -] - -[[package]] -name = "libp2p-swarm" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e04d8e1eef675029ec728ba14e8d0da7975d84b6679b699b4ae91a1de9c3a92" -dependencies = [ - "either", - "futures 0.3.13", - "libp2p-core", - "log", - "rand 0.7.3", - "smallvec 1.6.1", - "void", - "wasm-timer", -] - -[[package]] -name = "libp2p-swarm-derive" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365b0a699fea5168676840567582a012ea297b1ca02eee467e58301b9c9c5eed" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "libp2p-tcp" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b1a27d21c477951799e99d5c105d78868258502ce092988040a808d5a19bbd9" -dependencies = [ - "async-io", - "futures 0.3.13", - "futures-timer 3.0.2", - "if-watch", - "ipnet", - "libc", - "libp2p-core", - "log", - "socket2 0.4.0", -] - -[[package]] -name = "libp2p-uds" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd6564bb3b7ff203661ccbb69003c2b551e34cef974f2d6c6a28306a12170b5" -dependencies = [ - "async-std", - "futures 0.3.13", - "libp2p-core", - "log", -] - -[[package]] -name = "libp2p-wasm-ext" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef45d61e43c313531b5e903e4e8415212ff6338e0c54c47da5b9b412b5760de" -dependencies = [ - "futures 0.3.13", - "js-sys", - "libp2p-core", - "parity-send-wrapper", - "wasm-bindgen", - "wasm-bindgen-futures", -] - -[[package]] -name = "libp2p-websocket" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace60995ef6f637e4752cccbb2590f6bc358e8741a0d066307636c69a4b3a74" -dependencies = [ - "either", - "futures 0.3.13", - "futures-rustls", - "libp2p-core", - "log", - "quicksink", - "rw-stream-sink", - "soketto", - "url 2.2.1", - "webpki-roots", -] - -[[package]] -name = "libp2p-yamux" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f35da42cfc6d5cb0dcf3ad6881bc68d146cdf38f98655e09e33fbba4d13eabc4" -dependencies = [ - "futures 0.3.13", - "libp2p-core", - "parking_lot 0.11.1", - "thiserror", - "yamux", -] - -[[package]] -name = "librocksdb-sys" -version = "6.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b56f651c204634b936be2f92dbb42c36867e00ff7fe2405591f3b9fa66f09" -dependencies = [ - "bindgen", - "cc", - "glob", - "libc", -] - -[[package]] -name = "libsecp256k1" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" -dependencies = [ - "arrayref", - "crunchy", - "digest 0.8.1", - "hmac-drbg", - "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.4.0", - "typenum", -] - -[[package]] -name = "libz-sys" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" - -[[package]] -name = "linked_hash_set" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "linregress" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0ad4b5cc8385a881c561fac3501353d63d2a2b7a357b5064d71815c9a92724" -dependencies = [ - "nalgebra", - "statrs", -] - -[[package]] -name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "lock_api" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if 1.0.0", - "value-bag", -] - -[[package]] -name = "lru" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90ba" -dependencies = [ - "hashbrown", -] - -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matchers" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - -[[package]] -name = "matrixmultiply" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1" -dependencies = [ - "rawpointer", -] - -[[package]] -name = "max-encoded-len" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-trait-for-tuples", - "max-encoded-len-derive", - "parity-scale-codec", - "primitive-types", -] - -[[package]] -name = "max-encoded-len-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" - -[[package]] -name = "memmap" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "memmap2" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e3e85b970d650e2ae6d70592474087051c11c54da7f7b4949725c5735fbcc6" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memory-db" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "814bbecfc0451fc314eeea34f05bbcd5b98a7ad7af37faee088b86a1e633f1d4" -dependencies = [ - "hash-db", - "hashbrown", - "parity-util-mem", -] - -[[package]] -name = "memory_units" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" - -[[package]] -name = "merlin" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.5.1", - "zeroize", -] - -[[package]] -name = "messages-relay" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "bp-messages", - "bp-runtime", - "futures 0.3.13", - "hex", - "log", - "num-traits", - "parking_lot 0.11.1", - "relay-utils", -] - -[[package]] -name = "millau-bridge-node" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-millau", - "bp-runtime", - "frame-benchmarking", - "frame-benchmarking-cli", - "jsonrpc-core 15.1.0", - "millau-runtime", - "node-inspect", - "pallet-bridge-messages", - "pallet-transaction-payment-rpc", - "sc-basic-authorship", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-aura", - "sc-executor", - "sc-finality-grandpa", - "sc-finality-grandpa-rpc", - "sc-keystore", - "sc-rpc", - "sc-service", - "sc-telemetry", - "sc-transaction-pool", - "serde_json", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-runtime", - "sp-timestamp", - "structopt", - "substrate-build-script-utils", - "substrate-frame-rpc-system", -] - -[[package]] -name = "millau-runtime" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-millau", - "bp-rialto", - "bp-runtime", - "bp-westend", - "bridge-runtime-common", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "hex-literal 0.3.1", - "pallet-aura", - "pallet-balances", - "pallet-bridge-dispatch", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-grandpa", - "pallet-randomness-collective-flip", - "pallet-session", - "pallet-shift-session-manager", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "serde", - "sp-api", - "sp-block-builder", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-std", - "sp-transaction-pool", - "sp-trie", - "sp-version", - "substrate-wasm-builder", -] - -[[package]] -name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "minicbor" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea79ce4ab9f445ec6b71833a2290ac0a29c9dde0fa7cae4c481eecae021d9bd9" -dependencies = [ - "minicbor-derive", -] - -[[package]] -name = "minicbor-derive" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce18b5423c573a13e80cb3046ea0af6379ef725dc3af4886bdb8f4e5093068" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow 0.2.2", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio", - "slab", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" -dependencies = [ - "log", - "mio", - "miow 0.3.6", - "winapi 0.3.9", -] - -[[package]] -name = "mio-uds" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" -dependencies = [ - "iovec", - "libc", - "mio", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "miow" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" -dependencies = [ - "socket2 0.3.19", - "winapi 0.3.9", -] - -[[package]] -name = "more-asserts" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" - -[[package]] -name = "multibase" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2" -dependencies = [ - "base-x", - "data-encoding", - "data-encoding-macro", -] - -[[package]] -name = "multihash" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab" -dependencies = [ - "blake2b_simd", - "blake2s_simd", - "blake3", - "digest 0.9.0", - "generic-array 0.14.4", - "multihash-derive", - "sha2 0.9.3", - "sha3", - "unsigned-varint 0.5.1", -] - -[[package]] -name = "multihash-derive" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85ee3c48cb9d9b275ad967a0e96715badc13c6029adb92f34fa17b9ff28fd81f" -dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "multimap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333" - -[[package]] -name = "multistream-select" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df70763c86c98487451f307e1b68b4100da9076f4c12146905fc2054277f4e8" -dependencies = [ - "bytes 1.0.1", - "futures 0.3.13", - "log", - "pin-project 1.0.5", - "smallvec 1.6.1", - "unsigned-varint 0.7.0", -] - -[[package]] -name = "nalgebra" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6147c3d50b4f3cdabfe2ecc94a0191fd3d6ad58aefd9664cf396285883486" -dependencies = [ - "approx", - "generic-array 0.13.2", - "matrixmultiply", - "num-complex", - "num-rational", - "num-traits", - "rand 0.7.3", - "rand_distr", - "simba", - "typenum", -] - -[[package]] -name = "names" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" -dependencies = [ - "rand 0.3.23", -] - -[[package]] -name = "nb-connect" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670361df1bc2399ee1ff50406a0d422587dd3bb0da596e1978fe8e05dabddf4f" -dependencies = [ - "libc", - "socket2 0.3.19", -] - -[[package]] -name = "net2" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "node-inspect" -version = "0.8.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "log", - "parity-scale-codec", - "sc-cli", - "sc-client-api", - "sc-service", - "sp-blockchain", - "sp-core", - "sp-runtime", - "structopt", -] - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "nom" -version = "5.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" -dependencies = [ - "memchr", - "version_check", -] - -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-format" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" -dependencies = [ - "arrayvec 0.4.12", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "object" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" - -[[package]] -name = "object" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" -dependencies = [ - "crc32fast", - "indexmap", -] - -[[package]] -name = "once_cell" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10acf907b94fc1b1a152d08ef97e7759650268cf986bf127f387e602b02c7e5a" -dependencies = [ - "parking_lot 0.11.1", -] - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl-probe" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" - -[[package]] -name = "openssl-sys" -version = "0.9.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313752393519e876837e09e1fa183ddef0be7735868dced3196f4472d536277f" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "owning_ref" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "pallet-aura" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "pallet-session", - "pallet-timestamp", - "parity-scale-codec", - "sp-application-crypto", - "sp-consensus-aura", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-authorship" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-authorship", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-balances" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "max-encoded-len", - "parity-scale-codec", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-currency-exchange" -version = "0.1.0" -dependencies = [ - "bp-currency-exchange", - "bp-header-chain", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-dispatch" -version = "0.1.0" -dependencies = [ - "bp-message-dispatch", - "bp-runtime", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-eth-poa" -version = "0.1.0" -dependencies = [ - "bp-eth-poa", - "frame-benchmarking", - "frame-support", - "frame-system", - "hex-literal 0.3.1", - "libsecp256k1", - "log", - "parity-scale-codec", - "serde", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-grandpa" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "finality-grandpa", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "num-traits", - "parity-scale-codec", - "serde", - "sp-finality-grandpa", - "sp-io", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "pallet-bridge-messages" -version = "0.1.0" -dependencies = [ - "bitvec", - "bp-message-dispatch", - "bp-messages", - "bp-rialto", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "hex", - "hex-literal 0.3.1", - "log", - "num-traits", - "pallet-balances", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-grandpa" -version = "3.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "sp-application-crypto", - "sp-core", - "sp-finality-grandpa", - "sp-io", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", -] - -[[package]] -name = "pallet-randomness-collective-flip" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-session" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-timestamp", - "parity-scale-codec", - "sp-core", - "sp-io", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-trie", -] - -[[package]] -name = "pallet-shift-session-manager" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "pallet-session", - "parity-scale-codec", - "serde", - "sp-core", - "sp-runtime", - "sp-staking", - "sp-std", -] - -[[package]] -name = "pallet-sudo" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-timestamp" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-timestamp", -] - -[[package]] -name = "pallet-transaction-payment" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "serde", - "smallvec 1.6.1", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-transaction-payment-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "jsonrpc-core 15.1.0", - "jsonrpc-core-client", - "jsonrpc-derive", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-rpc", - "sp-runtime", -] - -[[package]] -name = "pallet-transaction-payment-rpc-runtime-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "pallet-transaction-payment", - "parity-scale-codec", - "sp-api", - "sp-runtime", -] - -[[package]] -name = "parity-bytes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" - -[[package]] -name = "parity-db" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e337f62db341435f0da05b8f6b97e984ef4ea5800510cd07c2d624688c40b47" -dependencies = [ - "blake2-rfc", - "crc32fast", - "fs2", - "hex", - "libc", - "log", - "memmap2", - "parking_lot 0.11.1", - "rand 0.8.3", -] - -[[package]] -name = "parity-multiaddr" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58341485071825827b7f03cf7efd1cb21e6a709bea778fb50227fd45d2f361b4" -dependencies = [ - "arrayref", - "bs58", - "byteorder", - "data-encoding", - "multihash", - "percent-encoding 2.1.0", - "serde", - "static_assertions", - "unsigned-varint 0.7.0", - "url 2.2.1", -] - -[[package]] -name = "parity-scale-codec" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f518afaa5a47d0d6386229b0a6e01e86427291d643aa4cabb4992219f504f8" -dependencies = [ - "arrayvec 0.7.0", - "bitvec", - "byte-slice-cast", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44c5f94427bd0b5076e8f7e15ca3f60a4d8ac0077e4793884e6fdfd8915344e" -dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "parity-send-wrapper" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" - -[[package]] -name = "parity-tokio-ipc" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e57fea504fea33f9fbb5f49f378359030e7e026a6ab849bb9e8f0787376f1bf" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "libc", - "log", - "mio-named-pipes", - "miow 0.3.6", - "rand 0.7.3", - "tokio 0.1.22", - "tokio-named-pipes", - "tokio-uds", - "winapi 0.3.9", -] - -[[package]] -name = "parity-util-mem" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664a8c6b8e62d8f9f2f937e391982eb433ab285b4cd9545b342441e04a906e42" -dependencies = [ - "cfg-if 1.0.0", - "hashbrown", - "impl-trait-for-tuples", - "parity-util-mem-derive", - "parking_lot 0.11.1", - "primitive-types", - "smallvec 1.6.1", - "winapi 0.3.9", -] - -[[package]] -name = "parity-util-mem-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" -dependencies = [ - "proc-macro2", - "syn", - "synstructure", -] - -[[package]] -name = "parity-wasm" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ad52817c4d343339b3bc2e26861bd21478eda0b7509acf83505727000512ac" -dependencies = [ - "byteorder", -] - -[[package]] -name = "parity-wasm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" - -[[package]] -name = "parity-ws" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e02a625dd75084c2a7024f07c575b61b782f729d18702dabb3cdbf31911dc61" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "httparse", - "log", - "mio", - "mio-extras", - "rand 0.7.3", - "sha-1 0.8.2", - "slab", - "url 2.2.1", -] - -[[package]] -name = "parking" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" - -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version", -] - -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.2", -] - -[[package]] -name = "parking_lot" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" -dependencies = [ - "instant", - "lock_api 0.4.2", - "parking_lot_core 0.8.3", -] - -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "rustc_version", - "smallvec 0.6.14", - "winapi 0.3.9", -] - -[[package]] -name = "parking_lot_core" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec 1.6.1", - "winapi 0.3.9", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall 0.2.5", - "smallvec 1.6.1", - "winapi 0.3.9", -] - -[[package]] -name = "paste" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" -dependencies = [ - "paste-impl", - "proc-macro-hack", -] - -[[package]] -name = "paste" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d65c4d95931acda4498f675e332fcbdc9a06705cd07086c510e9b6009cd1c1" - -[[package]] -name = "paste-impl" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" -dependencies = [ - "proc-macro-hack", -] - -[[package]] -name = "pbkdf2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -dependencies = [ - "byteorder", - "crypto-mac 0.7.0", -] - -[[package]] -name = "pbkdf2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" -dependencies = [ - "crypto-mac 0.8.0", -] - -[[package]] -name = "pdqselect" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" - -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - -[[package]] -name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1 0.8.2", -] - -[[package]] -name = "petgraph" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "pin-project" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" -dependencies = [ - "pin-project-internal 0.4.27", -] - -[[package]] -name = "pin-project" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fa8ebb90271c4477f144354485b8068bd8f6b78b428b01ba892ca26caf0b63" -dependencies = [ - "pin-project-internal 1.0.5", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758669ae3558c6f74bd2a18b41f7ac0b5a195aea6639d6a9b5e5d1ad5ba24c0b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" - -[[package]] -name = "pin-project-lite" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - -[[package]] -name = "plain_hasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e19e6491bdde87c2c43d70f4c194bc8a758f2eb732df00f61e43f7362e3b4cc" -dependencies = [ - "crunchy", -] - -[[package]] -name = "platforms" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" - -[[package]] -name = "polling" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "log", - "wepoll-sys", - "winapi 0.3.9", -] - -[[package]] -name = "poly1305" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8" -dependencies = [ - "cpuid-bool 0.2.0", - "universal-hash", -] - -[[package]] -name = "polyval" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" -dependencies = [ - "cpuid-bool 0.2.0", - "opaque-debug 0.3.0", - "universal-hash", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - -[[package]] -name = "primitive-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2415937401cb030a2a0a4d922483f945fa068f52a7dbb22ce0fe5f2b6f6adace" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" -dependencies = [ - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - -[[package]] -name = "proc-macro2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "prometheus" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" -dependencies = [ - "cfg-if 1.0.0", - "fnv", - "lazy_static", - "parking_lot 0.11.1", - "regex", - "thiserror", -] - -[[package]] -name = "prost" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" -dependencies = [ - "bytes 1.0.1", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" -dependencies = [ - "bytes 1.0.1", - "heck", - "itertools 0.9.0", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "tempfile", - "which 4.0.2", -] - -[[package]] -name = "prost-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" -dependencies = [ - "anyhow", - "itertools 0.9.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" -dependencies = [ - "bytes 1.0.1", - "prost", -] - -[[package]] -name = "psm" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3abf49e5417290756acfd26501536358560c4a5cc4a0934d390939acb3e7083a" -dependencies = [ - "cc", -] - -[[package]] -name = "pwasm-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e517f47d9964362883182404b68d0b6949382c0baa40aa5ffca94f5f1e3481" -dependencies = [ - "byteorder", - "log", - "parity-wasm 0.42.2", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quick-error" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cda" - -[[package]] -name = "quicksink" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858" -dependencies = [ - "futures-core", - "futures-sink", - "pin-project-lite 0.1.11", -] - -[[package]] -name = "quote" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" -dependencies = [ - "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.2", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" -dependencies = [ - "getrandom 0.2.2", -] - -[[package]] -name = "rand_distr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" -dependencies = [ - "rand 0.7.3", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core 0.6.2", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" -dependencies = [ - "autocfg", - "crossbeam-deque 0.8.0", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque 0.8.0", - "crossbeam-utils 0.8.3", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - -[[package]] -name = "redox_users" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" -dependencies = [ - "getrandom 0.2.2", - "redox_syscall 0.2.5", -] - -[[package]] -name = "ref-cast" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "regalloc" -version = "0.0.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" -dependencies = [ - "log", - "rustc-hash", - "serde", - "smallvec 1.6.1", -] - -[[package]] -name = "regex" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-automata" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" -dependencies = [ - "byteorder", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" - -[[package]] -name = "region" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" -dependencies = [ - "bitflags", - "libc", - "mach", - "winapi 0.3.9", -] - -[[package]] -name = "relay-ethereum-client" -version = "0.1.0" -dependencies = [ - "async-std", - "bp-eth-poa", - "headers-relay", - "hex-literal 0.3.1", - "jsonrpsee-proc-macros", - "jsonrpsee-ws-client", - "libsecp256k1", - "log", - "parity-scale-codec", - "relay-utils", - "web3", -] - -[[package]] -name = "relay-kusama-client" -version = "0.1.0" -dependencies = [ - "bp-kusama", - "frame-support", - "frame-system", - "headers-relay", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-millau-client" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "headers-relay", - "millau-runtime", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-polkadot-client" -version = "0.1.0" -dependencies = [ - "bp-polkadot", - "frame-support", - "frame-system", - "headers-relay", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-rialto-client" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "headers-relay", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "rialto-runtime", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-rococo-client" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-message-dispatch", - "bp-messages", - "bp-polkadot-core", - "bp-rococo", - "bp-runtime", - "bp-wococo", - "bridge-runtime-common", - "frame-support", - "frame-system", - "headers-relay", - "pallet-bridge-dispatch", - "pallet-bridge-messages", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-substrate-client" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "bp-header-chain", - "bp-messages", - "bp-runtime", - "finality-relay", - "frame-support", - "frame-system", - "futures 0.3.13", - "headers-relay", - "jsonrpsee-proc-macros", - "jsonrpsee-ws-client", - "log", - "num-traits", - "pallet-balances", - "parity-scale-codec", - "rand 0.7.3", - "relay-utils", - "sc-rpc-api", - "sp-core", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", - "sp-storage", - "sp-trie", - "sp-version", -] - -[[package]] -name = "relay-utils" -version = "0.1.0" -dependencies = [ - "ansi_term 0.12.1", - "async-std", - "async-trait", - "backoff", - "env_logger 0.8.3", - "futures 0.3.13", - "isahc", - "jsonpath_lib", - "log", - "num-traits", - "serde_json", - "substrate-prometheus-endpoint", - "sysinfo", - "time 0.2.25", -] - -[[package]] -name = "relay-westend-client" -version = "0.1.0" -dependencies = [ - "bp-westend", - "frame-support", - "frame-system", - "headers-relay", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "relay-wococo-client" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-message-dispatch", - "bp-messages", - "bp-polkadot-core", - "bp-rococo", - "bp-runtime", - "bp-wococo", - "bridge-runtime-common", - "frame-support", - "frame-system", - "headers-relay", - "pallet-bridge-dispatch", - "pallet-bridge-messages", - "pallet-transaction-payment", - "parity-scale-codec", - "relay-substrate-client", - "relay-utils", - "sp-core", - "sp-keyring", - "sp-runtime", -] - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "resolv-conf" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname", - "quick-error 1.2.3", -] - -[[package]] -name = "retain_mut" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c17925a9027d298a4603d286befe3f9dc0e8ed02523141914eb628798d6e5b" - -[[package]] -name = "rialto-bridge-node" -version = "0.1.0" -dependencies = [ - "bp-messages", - "bp-rialto", - "bp-runtime", - "frame-benchmarking", - "frame-benchmarking-cli", - "jsonrpc-core 15.1.0", - "node-inspect", - "pallet-bridge-messages", - "pallet-transaction-payment-rpc", - "rialto-runtime", - "sc-basic-authorship", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-aura", - "sc-executor", - "sc-finality-grandpa", - "sc-finality-grandpa-rpc", - "sc-keystore", - "sc-rpc", - "sc-service", - "sc-telemetry", - "sc-transaction-pool", - "serde_json", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-runtime", - "sp-timestamp", - "structopt", - "substrate-build-script-utils", - "substrate-frame-rpc-system", -] - -[[package]] -name = "rialto-runtime" -version = "0.1.0" -dependencies = [ - "bp-currency-exchange", - "bp-eth-poa", - "bp-header-chain", - "bp-message-dispatch", - "bp-messages", - "bp-millau", - "bp-rialto", - "bp-runtime", - "bridge-runtime-common", - "frame-benchmarking", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "hex-literal 0.3.1", - "libsecp256k1", - "log", - "pallet-aura", - "pallet-balances", - "pallet-bridge-currency-exchange", - "pallet-bridge-dispatch", - "pallet-bridge-eth-poa", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-grandpa", - "pallet-randomness-collective-flip", - "pallet-session", - "pallet-shift-session-manager", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "serde", - "sp-api", - "sp-block-builder", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-io", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-std", - "sp-transaction-pool", - "sp-trie", - "sp-version", - "substrate-wasm-builder", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.9", -] - -[[package]] -name = "rlp" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54369147e3e7796c9b885c7304db87ca3d09a0a98f72843d532868675bbfba8" -dependencies = [ - "bytes 1.0.1", - "rustc-hex", -] - -[[package]] -name = "rocksdb" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d83c02c429044d58474eaf5ae31e062d0de894e21125b47437ec0edc1397e6" -dependencies = [ - "libc", - "librocksdb-sys", -] - -[[package]] -name = "rpassword" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils 0.8.3", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustls" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" -dependencies = [ - "base64 0.12.3", - "log", - "ring", - "sct", - "webpki 0.21.4", -] - -[[package]] -name = "rustls" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" -dependencies = [ - "base64 0.13.0", - "log", - "ring", - "sct", - "webpki 0.21.4", -] - -[[package]] -name = "rustls-native-certs" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8" -dependencies = [ - "openssl-probe", - "rustls 0.18.1", - "schannel", - "security-framework", -] - -[[package]] -name = "ruzstd" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d425143485a37727c7a46e689bbe3b883a00f42b4a52c4ac0f44855c1009b00" -dependencies = [ - "byteorder", - "twox-hash", -] - -[[package]] -name = "rw-stream-sink" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" -dependencies = [ - "futures 0.3.13", - "pin-project 0.4.27", - "static_assertions", -] - -[[package]] -name = "ryu" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - -[[package]] -name = "safe-mix" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" -dependencies = [ - "rustc_version", -] - -[[package]] -name = "salsa20" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "sc-basic-authorship" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "futures-timer 3.0.2", - "log", - "parity-scale-codec", - "sc-block-builder", - "sc-client-api", - "sc-proposer-metrics", - "sc-telemetry", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-transaction-pool", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-block-builder" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sc-client-api", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", -] - -[[package]] -name = "sc-chain-spec" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "sc-chain-spec-derive", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-finality-grandpa", - "sc-network", - "sc-telemetry", - "serde", - "serde_json", - "sp-chain-spec", - "sp-consensus-babe", - "sp-core", - "sp-runtime", -] - -[[package]] -name = "sc-chain-spec-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sc-cli" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "chrono", - "fdlimit", - "futures 0.3.13", - "hex", - "libp2p", - "log", - "names", - "parity-scale-codec", - "rand 0.7.3", - "regex", - "rpassword", - "sc-client-api", - "sc-keystore", - "sc-network", - "sc-service", - "sc-telemetry", - "sc-tracing", - "serde", - "serde_json", - "sp-blockchain", - "sp-core", - "sp-keyring", - "sp-keystore", - "sp-panic-handler", - "sp-runtime", - "sp-utils", - "sp-version", - "structopt", - "thiserror", - "tiny-bip39", - "tokio 0.2.25", -] - -[[package]] -name = "sc-client-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "fnv", - "futures 0.3.13", - "hash-db", - "kvdb", - "lazy_static", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-database", - "sp-externalities", - "sp-inherents", - "sp-keystore", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-storage", - "sp-transaction-pool", - "sp-trie", - "sp-utils", - "sp-version", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-client-db" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "blake2-rfc", - "hash-db", - "kvdb", - "kvdb-memorydb", - "kvdb-rocksdb", - "linked-hash-map", - "log", - "parity-db", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "sc-client-api", - "sc-executor", - "sc-state-db", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-database", - "sp-runtime", - "sp-state-machine", - "sp-trie", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-consensus" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "parking_lot 0.11.1", - "sc-client-api", - "sp-blockchain", - "sp-consensus", - "sp-runtime", -] - -[[package]] -name = "sc-consensus-aura" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "derive_more", - "futures 0.3.13", - "futures-timer 3.0.2", - "log", - "parity-scale-codec", - "sc-block-builder", - "sc-client-api", - "sc-consensus-slots", - "sc-telemetry", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-consensus-slots", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-runtime", - "sp-version", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "derive_more", - "fork-tree", - "futures 0.3.13", - "futures-timer 3.0.2", - "log", - "merlin", - "num-bigint", - "num-rational", - "num-traits", - "parity-scale-codec", - "parking_lot 0.11.1", - "pdqselect", - "rand 0.7.3", - "retain_mut", - "sc-client-api", - "sc-consensus-epochs", - "sc-consensus-slots", - "sc-consensus-uncles", - "sc-keystore", - "sc-telemetry", - "schnorrkel", - "serde", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-consensus-slots", - "sp-consensus-vrf", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-runtime", - "sp-utils", - "sp-version", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-consensus-epochs" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "fork-tree", - "parity-scale-codec", - "sc-client-api", - "sc-consensus", - "sp-blockchain", - "sp-runtime", -] - -[[package]] -name = "sc-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "futures 0.3.13", - "futures-timer 3.0.2", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sc-client-api", - "sc-telemetry", - "sp-api", - "sp-application-crypto", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-consensus-slots", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", - "sp-timestamp", - "sp-trie", - "thiserror", -] - -[[package]] -name = "sc-consensus-uncles" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "sc-client-api", - "sp-authorship", - "sp-runtime", - "thiserror", -] - -[[package]] -name = "sc-executor" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "lazy_static", - "libsecp256k1", - "log", - "parity-scale-codec", - "parity-wasm 0.42.2", - "parking_lot 0.11.1", - "sc-executor-common", - "sc-executor-wasmi", - "sc-executor-wasmtime", - "sp-api", - "sp-core", - "sp-externalities", - "sp-io", - "sp-panic-handler", - "sp-runtime-interface", - "sp-serializer", - "sp-tasks", - "sp-trie", - "sp-version", - "sp-wasm-interface", - "wasmi", -] - -[[package]] -name = "sc-executor-common" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "parity-scale-codec", - "pwasm-utils", - "sp-allocator", - "sp-core", - "sp-maybe-compressed-blob", - "sp-serializer", - "sp-wasm-interface", - "thiserror", - "wasmi", -] - -[[package]] -name = "sc-executor-wasmi" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "log", - "parity-scale-codec", - "sc-executor-common", - "sp-allocator", - "sp-core", - "sp-runtime-interface", - "sp-wasm-interface", - "wasmi", -] - -[[package]] -name = "sc-executor-wasmtime" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "log", - "parity-scale-codec", - "parity-wasm 0.42.2", - "sc-executor-common", - "scoped-tls", - "sp-allocator", - "sp-core", - "sp-runtime-interface", - "sp-wasm-interface", - "wasmtime", -] - -[[package]] -name = "sc-finality-grandpa" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "derive_more", - "dyn-clone", - "finality-grandpa", - "fork-tree", - "futures 0.3.13", - "futures-timer 3.0.2", - "linked-hash-map", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "rand 0.7.3", - "sc-block-builder", - "sc-client-api", - "sc-consensus", - "sc-keystore", - "sc-network", - "sc-network-gossip", - "sc-telemetry", - "serde_json", - "sp-api", - "sp-application-crypto", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-keystore", - "sp-runtime", - "sp-utils", - "substrate-prometheus-endpoint", - "wasm-timer", -] - -[[package]] -name = "sc-finality-grandpa-rpc" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "finality-grandpa", - "futures 0.3.13", - "jsonrpc-core 15.1.0", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", - "log", - "parity-scale-codec", - "sc-client-api", - "sc-finality-grandpa", - "sc-rpc", - "serde", - "serde_json", - "sp-blockchain", - "sp-core", - "sp-runtime", -] - -[[package]] -name = "sc-informant" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "ansi_term 0.12.1", - "futures 0.3.13", - "futures-timer 3.0.2", - "log", - "parity-util-mem", - "sc-client-api", - "sc-network", - "sp-blockchain", - "sp-runtime", - "sp-transaction-pool", - "wasm-timer", -] - -[[package]] -name = "sc-keystore" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "derive_more", - "futures 0.3.13", - "futures-util", - "hex", - "merlin", - "parking_lot 0.11.1", - "rand 0.7.3", - "serde_json", - "sp-application-crypto", - "sp-core", - "sp-keystore", - "subtle 2.4.0", -] - -[[package]] -name = "sc-light" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "hash-db", - "lazy_static", - "parity-scale-codec", - "parking_lot 0.11.1", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", -] - -[[package]] -name = "sc-network" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-std", - "async-trait", - "asynchronous-codec 0.5.0", - "bitflags", - "bs58", - "bytes 1.0.1", - "cid", - "derive_more", - "either", - "erased-serde", - "fnv", - "fork-tree", - "futures 0.3.13", - "futures-timer 3.0.2", - "hex", - "ip_network", - "libp2p", - "linked-hash-map", - "linked_hash_set", - "log", - "lru", - "nohash-hasher", - "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "prost", - "prost-build", - "rand 0.7.3", - "sc-block-builder", - "sc-client-api", - "sc-peerset", - "serde", - "serde_json", - "smallvec 1.6.1", - "sp-arithmetic", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-runtime", - "sp-utils", - "substrate-prometheus-endpoint", - "thiserror", - "unsigned-varint 0.6.0", - "void", - "wasm-timer", - "zeroize", -] - -[[package]] -name = "sc-network-gossip" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "futures-timer 3.0.2", - "libp2p", - "log", - "lru", - "sc-network", - "sp-runtime", - "substrate-prometheus-endpoint", - "tracing", - "wasm-timer", -] - -[[package]] -name = "sc-offchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures 0.3.13", - "futures-timer 3.0.2", - "hex", - "hyper 0.13.10", - "hyper-rustls", - "log", - "num_cpus", - "parity-scale-codec", - "parking_lot 0.11.1", - "rand 0.7.3", - "sc-client-api", - "sc-keystore", - "sc-network", - "sp-api", - "sp-core", - "sp-offchain", - "sp-runtime", - "sp-utils", - "threadpool", -] - -[[package]] -name = "sc-peerset" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "libp2p", - "log", - "serde_json", - "sp-utils", - "wasm-timer", -] - -[[package]] -name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "log", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "hash-db", - "jsonrpc-core 15.1.0", - "jsonrpc-pubsub", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "sc-block-builder", - "sc-client-api", - "sc-executor", - "sc-keystore", - "sc-rpc-api", - "sc-tracing", - "serde_json", - "sp-api", - "sp-blockchain", - "sp-chain-spec", - "sp-core", - "sp-keystore", - "sp-offchain", - "sp-rpc", - "sp-runtime", - "sp-session", - "sp-state-machine", - "sp-tracing", - "sp-transaction-pool", - "sp-utils", - "sp-version", -] - -[[package]] -name = "sc-rpc-api" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "futures 0.3.13", - "jsonrpc-core 15.1.0", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "serde", - "serde_json", - "sp-chain-spec", - "sp-core", - "sp-rpc", - "sp-runtime", - "sp-tracing", - "sp-transaction-pool", - "sp-version", -] - -[[package]] -name = "sc-rpc-server" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.1.31", - "jsonrpc-core 15.1.0", - "jsonrpc-http-server", - "jsonrpc-ipc-server", - "jsonrpc-pubsub", - "jsonrpc-ws-server", - "log", - "serde", - "serde_json", - "sp-runtime", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-service" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "directories", - "exit-future", - "futures 0.1.31", - "futures 0.3.13", - "futures-timer 3.0.2", - "hash-db", - "jsonrpc-core 15.1.0", - "jsonrpc-pubsub", - "lazy_static", - "log", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "rand 0.7.3", - "sc-block-builder", - "sc-chain-spec", - "sc-client-api", - "sc-client-db", - "sc-executor", - "sc-informant", - "sc-keystore", - "sc-light", - "sc-network", - "sc-offchain", - "sc-rpc", - "sc-rpc-server", - "sc-telemetry", - "sc-tracing", - "sc-transaction-pool", - "serde", - "serde_json", - "sp-api", - "sp-application-crypto", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-externalities", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-runtime", - "sp-session", - "sp-state-machine", - "sp-storage", - "sp-tracing", - "sp-transaction-pool", - "sp-transaction-storage-proof", - "sp-trie", - "sp-utils", - "sp-version", - "substrate-prometheus-endpoint", - "tempfile", - "thiserror", - "tracing", - "tracing-futures", - "wasm-timer", -] - -[[package]] -name = "sc-state-db" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "log", - "parity-scale-codec", - "parity-util-mem", - "parity-util-mem-derive", - "parking_lot 0.11.1", - "sc-client-api", - "sp-core", - "thiserror", -] - -[[package]] -name = "sc-telemetry" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "chrono", - "futures 0.3.13", - "libp2p", - "log", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "rand 0.7.3", - "serde", - "serde_json", - "take_mut", - "thiserror", - "void", - "wasm-timer", -] - -[[package]] -name = "sc-tracing" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "ansi_term 0.12.1", - "atty", - "erased-serde", - "lazy_static", - "log", - "once_cell", - "parking_lot 0.11.1", - "regex", - "rustc-hash", - "sc-client-api", - "sc-rpc-server", - "sc-telemetry", - "sc-tracing-proc-macro", - "serde", - "serde_json", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-core", - "sp-rpc", - "sp-runtime", - "sp-storage", - "sp-tracing", - "thiserror", - "tracing", - "tracing-log", - "tracing-subscriber", - "wasm-bindgen", - "wasm-timer", - "web-sys", -] - -[[package]] -name = "sc-tracing-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sc-transaction-graph" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "futures 0.3.13", - "linked-hash-map", - "log", - "parity-util-mem", - "parking_lot 0.11.1", - "retain_mut", - "serde", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-transaction-pool", - "sp-utils", - "thiserror", - "wasm-timer", -] - -[[package]] -name = "sc-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "intervalier", - "log", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "sc-client-api", - "sc-transaction-graph", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-tracing", - "sp-transaction-pool", - "sp-utils", - "substrate-prometheus-endpoint", - "thiserror", - "wasm-timer", -] - -[[package]] -name = "schannel" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -dependencies = [ - "lazy_static", - "winapi 0.3.9", -] - -[[package]] -name = "schnorrkel" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "curve25519-dalek 2.1.2", - "getrandom 0.1.16", - "merlin", - "rand 0.7.3", - "rand_core 0.5.1", - "sha2 0.8.2", - "subtle 2.4.0", - "zeroize", -] - -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scroll" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sct" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "secrecy" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0" -dependencies = [ - "zeroize", -] - -[[package]] -name = "security-framework" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2b" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys 0.7.0", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7" -dependencies = [ - "core-foundation-sys 0.7.0", - "libc", -] - -[[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.2", - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd761ff957cb2a45fbb9ab3da6512de9de55872866160b23c25f1a841e99d29f" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883eee5198ea51720eab8be52a36cf6c0164ac90eea0ed95b649d5e35382404e" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1800f7693e94e186f5e25a28291ae1570da908aff7d97a095dec1e56ff99069b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - -[[package]] -name = "sha-1" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpuid-bool 0.1.2", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" - -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - -[[package]] -name = "sha2" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpuid-bool 0.1.2", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sharded-slab" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" - -[[package]] -name = "signal-hook" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7f3f92a1da3d6b1d32245d0cbcbbab0cfc45996d8df619c42bccfa6d2bbb5f" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68" - -[[package]] -name = "simba" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb931b1367faadea6b1ab1c306a860ec17aaa5fa39f367d0c744e69d971a1fb2" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste 0.1.18", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - -[[package]] -name = "slog" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" -dependencies = [ - "erased-serde", -] - -[[package]] -name = "sluice" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fa0333a60ff2e3474a6775cc611840c2a55610c831dd366503474c02f1a28f5" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", -] - -[[package]] -name = "smallvec" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] - -[[package]] -name = "smallvec" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" - -[[package]] -name = "snow" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795dd7aeeee24468e5a32661f6d27f7b5cbed802031b2d7640c7b10f8fb2dd50" -dependencies = [ - "aes-gcm", - "blake2", - "chacha20poly1305", - "rand 0.7.3", - "rand_core 0.5.1", - "ring", - "rustc_version", - "sha2 0.9.3", - "subtle 2.4.0", - "x25519-dalek", -] - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "socket2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "soketto" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88" -dependencies = [ - "base64 0.12.3", - "bytes 0.5.6", - "flate2", - "futures 0.3.13", - "httparse", - "log", - "rand 0.7.3", - "sha-1 0.9.4", -] - -[[package]] -name = "sp-allocator" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "log", - "sp-core", - "sp-std", - "sp-wasm-interface", - "thiserror", -] - -[[package]] -name = "sp-api" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "sp-api-proc-macro", - "sp-core", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-version", - "thiserror", -] - -[[package]] -name = "sp-api-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "blake2-rfc", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sp-application-crypto" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "max-encoded-len", - "parity-scale-codec", - "serde", - "sp-core", - "sp-io", - "sp-std", -] - -[[package]] -name = "sp-arithmetic" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "serde", - "sp-debug-derive", - "sp-std", - "static_assertions", -] - -[[package]] -name = "sp-authorship" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-inherents", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "sp-block-builder" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-inherents", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "sp-blockchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "log", - "lru", - "parity-scale-codec", - "parking_lot 0.11.1", - "sp-api", - "sp-consensus", - "sp-database", - "sp-runtime", - "sp-state-machine", - "thiserror", -] - -[[package]] -name = "sp-chain-spec" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "sp-consensus" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "futures 0.3.13", - "futures-timer 3.0.2", - "libp2p", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "serde", - "sp-api", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", - "sp-utils", - "sp-version", - "substrate-prometheus-endpoint", - "thiserror", - "wasm-timer", -] - -[[package]] -name = "sp-consensus-aura" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-api", - "sp-application-crypto", - "sp-consensus", - "sp-consensus-slots", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-timestamp", -] - -[[package]] -name = "sp-consensus-babe" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "merlin", - "parity-scale-codec", - "serde", - "sp-api", - "sp-application-crypto", - "sp-consensus", - "sp-consensus-slots", - "sp-consensus-vrf", - "sp-core", - "sp-inherents", - "sp-keystore", - "sp-runtime", - "sp-std", - "sp-timestamp", -] - -[[package]] -name = "sp-consensus-slots" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sp-arithmetic", - "sp-runtime", -] - -[[package]] -name = "sp-consensus-vrf" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "schnorrkel", - "sp-core", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "sp-core" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "base58", - "blake2-rfc", - "byteorder", - "dyn-clonable", - "ed25519-dalek", - "futures 0.3.13", - "hash-db", - "hash256-std-hasher", - "hex", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "max-encoded-len", - "merlin", - "num-traits", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "primitive-types", - "rand 0.7.3", - "regex", - "schnorrkel", - "secrecy", - "serde", - "sha2 0.9.3", - "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", - "sp-std", - "sp-storage", - "substrate-bip39", - "thiserror", - "tiny-bip39", - "tiny-keccak", - "twox-hash", - "wasmi", - "zeroize", -] - -[[package]] -name = "sp-database" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "kvdb", - "parking_lot 0.11.1", -] - -[[package]] -name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sp-externalities" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std", - "sp-storage", -] - -[[package]] -name = "sp-finality-grandpa" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "finality-grandpa", - "log", - "parity-scale-codec", - "serde", - "sp-api", - "sp-application-crypto", - "sp-core", - "sp-keystore", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "sp-inherents" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-core", - "sp-runtime", - "sp-std", - "thiserror", -] - -[[package]] -name = "sp-io" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "hash-db", - "libsecp256k1", - "log", - "parity-scale-codec", - "parking_lot 0.11.1", - "sp-core", - "sp-externalities", - "sp-keystore", - "sp-maybe-compressed-blob", - "sp-runtime-interface", - "sp-state-machine", - "sp-std", - "sp-tracing", - "sp-trie", - "sp-wasm-interface", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-keyring" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "lazy_static", - "sp-core", - "sp-runtime", - "strum", -] - -[[package]] -name = "sp-keystore" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "derive_more", - "futures 0.3.13", - "merlin", - "parity-scale-codec", - "parking_lot 0.11.1", - "schnorrkel", - "serde", - "sp-core", - "sp-externalities", -] - -[[package]] -name = "sp-maybe-compressed-blob" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "ruzstd", - "zstd", -] - -[[package]] -name = "sp-offchain" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "sp-api", - "sp-core", - "sp-runtime", -] - -[[package]] -name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "backtrace", -] - -[[package]] -name = "sp-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "rustc-hash", - "serde", - "sp-core", - "tracing-core", -] - -[[package]] -name = "sp-runtime" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "max-encoded-len", - "parity-scale-codec", - "parity-util-mem", - "paste 1.0.4", - "rand 0.7.3", - "serde", - "sp-application-crypto", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-std", -] - -[[package]] -name = "sp-runtime-interface" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types", - "sp-externalities", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "Inflector", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "sp-session" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-core", - "sp-runtime", - "sp-staking", - "sp-std", -] - -[[package]] -name = "sp-staking" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "sp-state-machine" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "hash-db", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot 0.11.1", - "rand 0.7.3", - "smallvec 1.6.1", - "sp-core", - "sp-externalities", - "sp-panic-handler", - "sp-std", - "sp-trie", - "thiserror", - "tracing", - "trie-db", - "trie-root", -] - -[[package]] -name = "sp-std" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" - -[[package]] -name = "sp-storage" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", - "sp-std", -] - -[[package]] -name = "sp-tasks" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "log", - "sp-core", - "sp-externalities", - "sp-io", - "sp-runtime-interface", - "sp-std", -] - -[[package]] -name = "sp-timestamp" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "futures-timer 3.0.2", - "log", - "parity-scale-codec", - "sp-api", - "sp-inherents", - "sp-runtime", - "sp-std", - "thiserror", - "wasm-timer", -] - -[[package]] -name = "sp-tracing" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "erased-serde", - "log", - "parity-scale-codec", - "parking_lot 0.10.2", - "serde", - "serde_json", - "slog", - "sp-std", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "sp-transaction-pool" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "derive_more", - "futures 0.3.13", - "log", - "parity-scale-codec", - "serde", - "sp-api", - "sp-blockchain", - "sp-runtime", - "thiserror", -] - -[[package]] -name = "sp-transaction-storage-proof" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-trait", - "log", - "parity-scale-codec", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "sp-trie" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "hash-db", - "memory-db", - "parity-scale-codec", - "sp-core", - "sp-std", - "trie-db", - "trie-root", -] - -[[package]] -name = "sp-utils" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "futures 0.3.13", - "futures-core", - "futures-timer 3.0.2", - "lazy_static", - "prometheus", -] - -[[package]] -name = "sp-version" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "serde", - "sp-runtime", - "sp-std", - "sp-version-proc-macro", -] - -[[package]] -name = "sp-version-proc-macro" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "parity-scale-codec", - "proc-macro-crate 1.0.0", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sp-wasm-interface" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "sp-std", - "wasmi", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spinning_top" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd0ab6b8c375d2d963503b90d3770010d95bc3b5f98036f948dee24bf4e8879" -dependencies = [ - "lock_api 0.4.2", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "standback" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" -dependencies = [ - "version_check", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "statrs" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce16f6de653e88beca7bd13780d08e09d4489dbca1f9210e041bc4852481382" -dependencies = [ - "rand 0.7.3", -] - -[[package]] -name = "stdweb" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" -dependencies = [ - "discard", - "rustc_version", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", -] - -[[package]] -name = "stdweb-derive" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_derive", - "syn", -] - -[[package]] -name = "stdweb-internal-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" -dependencies = [ - "base-x", - "proc-macro2", - "quote", - "serde", - "serde_derive", - "serde_json", - "sha1", - "syn", -] - -[[package]] -name = "stdweb-internal-runtime" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" - -[[package]] -name = "storage-proof-fuzzer" -version = "0.1.0" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "env_logger 0.8.3", - "finality-grandpa", - "frame-support", - "frame-system", - "hash-db", - "honggfuzz", - "log", - "parity-scale-codec", - "sp-core", - "sp-finality-grandpa", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", -] - -[[package]] -name = "stream-cipher" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e15f898d8d8f25db24c253ea615cc14acf418ff307822995814e7d42cfa89" -dependencies = [ - "block-cipher", - "generic-array 0.14.4", -] - -[[package]] -name = "string" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -dependencies = [ - "bytes 0.4.12", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "substrate-bip39" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236" -dependencies = [ - "hmac 0.7.1", - "pbkdf2 0.3.0", - "schnorrkel", - "sha2 0.8.2", - "zeroize", -] - -[[package]] -name = "substrate-build-script-utils" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "platforms", -] - -[[package]] -name = "substrate-frame-rpc-system" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "frame-system-rpc-runtime-api", - "futures 0.3.13", - "jsonrpc-core 15.1.0", - "jsonrpc-core-client", - "jsonrpc-derive", - "log", - "parity-scale-codec", - "sc-client-api", - "sc-rpc-api", - "serde", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-transaction-pool", -] - -[[package]] -name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "async-std", - "derive_more", - "futures-util", - "hyper 0.13.10", - "log", - "prometheus", - "tokio 0.2.25", -] - -[[package]] -name = "substrate-relay" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-std", - "async-trait", - "bp-header-chain", - "bp-kusama", - "bp-message-dispatch", - "bp-messages", - "bp-millau", - "bp-polkadot", - "bp-rialto", - "bp-rococo", - "bp-runtime", - "bp-westend", - "bp-wococo", - "bridge-runtime-common", - "finality-grandpa", - "finality-relay", - "frame-support", - "futures 0.3.13", - "headers-relay", - "hex", - "hex-literal 0.3.1", - "log", - "messages-relay", - "millau-runtime", - "num-format", - "num-traits", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "parity-scale-codec", - "paste 1.0.4", - "relay-kusama-client", - "relay-millau-client", - "relay-polkadot-client", - "relay-rialto-client", - "relay-rococo-client", - "relay-substrate-client", - "relay-utils", - "relay-westend-client", - "relay-wococo-client", - "rialto-runtime", - "sp-core", - "sp-finality-grandpa", - "sp-keyring", - "sp-runtime", - "sp-trie", - "sp-version", - "structopt", -] - -[[package]] -name = "substrate-wasm-builder" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#550d64cc7e233edf815c215b5329e1171cd59d1d" -dependencies = [ - "ansi_term 0.12.1", - "atty", - "build-helper", - "cargo_metadata", - "sp-maybe-compressed-blob", - "tempfile", - "toml", - "walkdir", - "wasm-gc-api", -] - -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - -[[package]] -name = "subtle" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" - -[[package]] -name = "syn" -version = "1.0.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce15dd3ed8aa2f8eeac4716d6ef5ab58b6b9256db41d7e1a0224c2788e8fd87" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "synstructure" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - -[[package]] -name = "sysinfo" -version = "0.15.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de94457a09609f33fec5e7fceaf907488967c6c7c75d64da6a7ce6ffdb8b5abd" -dependencies = [ - "cc", - "cfg-if 1.0.0", - "core-foundation-sys 0.8.2", - "doc-comment", - "libc", - "ntapi", - "once_cell", - "rayon", - "winapi 0.3.9", -] - -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "target-lexicon" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ae3b39281e4b14b8123bdbaddd472b7dfe215e444181f2f9d2443c2444f834" - -[[package]] -name = "tempfile" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "rand 0.8.3", - "redox_syscall 0.2.5", - "remove_dir_all", - "winapi 0.3.9", -] - -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" -dependencies = [ - "once_cell", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - -[[package]] -name = "time" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1195b046942c221454c2539395f85413b33383a067449d78aab2b7b052a142f7" -dependencies = [ - "const_fn", - "libc", - "standback", - "stdweb", - "time-macros", - "version_check", - "winapi 0.3.9", -] - -[[package]] -name = "time-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" -dependencies = [ - "proc-macro-hack", - "time-macros-impl", -] - -[[package]] -name = "time-macros-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "standback", - "syn", -] - -[[package]] -name = "tiny-bip39" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8" -dependencies = [ - "anyhow", - "hmac 0.8.1", - "once_cell", - "pbkdf2 0.4.0", - "rand 0.7.3", - "rustc-hash", - "sha2 0.9.3", - "thiserror", - "unicode-normalization", - "zeroize", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinyvec" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - -[[package]] -name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - -[[package]] -name = "tokio" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", - "libc", - "memchr", - "mio", - "mio-uds", - "num_cpus", - "pin-project-lite 0.1.11", - "signal-hook-registry", - "slab", - "winapi 0.3.9", -] - -[[package]] -name = "tokio-buf" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -dependencies = [ - "bytes 0.4.12", - "either", - "futures 0.1.31", -] - -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.31", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", -] - -[[package]] -name = "tokio-named-pipes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "mio-named-pipes", - "tokio 0.1.22", -] - -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "mio", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - -[[package]] -name = "tokio-rustls" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" -dependencies = [ - "futures-core", - "rustls 0.18.1", - "tokio 0.2.25", - "webpki 0.21.4", -] - -[[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -dependencies = [ - "futures 0.1.31", -] - -[[package]] -name = "tokio-sync" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.31", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque 0.7.3", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" -dependencies = [ - "bytes 0.5.6", - "futures-core", - "futures-sink", - "log", - "pin-project-lite 0.1.11", - "tokio 0.2.25", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f" -dependencies = [ - "cfg-if 1.0.0", - "log", - "pin-project-lite 0.2.4", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a9bd1db7706f2373a190b0d067146caa39350c486f3d455b0e33b431f94c07" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project 1.0.5", - "tracing", -] - -[[package]] -name = "tracing-log" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-serde" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" -dependencies = [ - "ansi_term 0.12.1", - "chrono", - "lazy_static", - "matchers", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec 1.6.1", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "trie-db" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd81fe0c8bc2b528a51c9d2c31dae4483367a26a723a3c9a4a8120311d7774e3" -dependencies = [ - "hash-db", - "hashbrown", - "log", - "rustc-hex", - "smallvec 1.6.1", -] - -[[package]] -name = "trie-root" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" -dependencies = [ - "hash-db", -] - -[[package]] -name = "triehash" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" -dependencies = [ - "hash-db", - "rlp", -] - -[[package]] -name = "trust-dns-proto" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d57e219ba600dd96c2f6d82eb79645068e14edbc5c7e27514af40436b88150c" -dependencies = [ - "async-trait", - "cfg-if 1.0.0", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.2", - "ipnet", - "lazy_static", - "log", - "rand 0.8.3", - "smallvec 1.6.1", - "thiserror", - "tinyvec", - "url 2.2.1", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0437eea3a6da51acc1e946545ff53d5b8fb2611ff1c3bed58522dde100536ae" -dependencies = [ - "cfg-if 1.0.0", - "futures-util", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "parking_lot 0.11.1", - "resolv-conf", - "smallvec 1.6.1", - "thiserror", - "trust-dns-proto", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "twox-hash" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59" -dependencies = [ - "cfg-if 0.1.10", - "rand 0.7.3", - "static_assertions", -] - -[[package]] -name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "uint" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382e" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "universal-hash" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" -dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.0", -] - -[[package]] -name = "unsigned-varint" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35" - -[[package]] -name = "unsigned-varint" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2" -dependencies = [ - "asynchronous-codec 0.5.0", - "bytes 1.0.1", - "futures-io", - "futures-util", -] - -[[package]] -name = "unsigned-varint" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7f" -dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.0.1", - "futures-io", - "futures-util", -] - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "url" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -dependencies = [ - "idna 0.1.5", - "matches", - "percent-encoding 1.0.1", -] - -[[package]] -name = "url" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" -dependencies = [ - "form_urlencoded", - "idna 0.2.2", - "matches", - "percent-encoding 2.1.0", -] - -[[package]] -name = "value-bag" -version = "1.0.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1" -dependencies = [ - "ctor", -] - -[[package]] -name = "vcpkg" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" - -[[package]] -name = "vec-arena" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi 0.3.9", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -dependencies = [ - "futures 0.1.31", - "log", - "try-lock", -] - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasm-bindgen" -version = "0.2.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" -dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" - -[[package]] -name = "wasm-gc-api" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c32691b6c7e6c14e7f8fd55361a9088b507aa49620fcd06c09b3a1082186b9" -dependencies = [ - "log", - "parity-wasm 0.32.0", - "rustc-demangle", -] - -[[package]] -name = "wasm-timer" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" -dependencies = [ - "futures 0.3.13", - "js-sys", - "parking_lot 0.11.1", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasmi" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ee05bba3d1d994652079893941a2ef9324d2b58a63c31b40678fb7eddd7a5a" -dependencies = [ - "downcast-rs", - "libc", - "memory_units", - "num-rational", - "num-traits", - "parity-wasm 0.42.2", - "wasmi-validation", -] - -[[package]] -name = "wasmi-validation" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb8e860796d8be48efef530b60eebf84e74a88bce107374fffb0da97d504b8" -dependencies = [ - "parity-wasm 0.42.2", -] - -[[package]] -name = "wasmparser" -version = "0.78.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" - -[[package]] -name = "wasmtime" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b310b9d20fcf59385761d1ade7a3ef06aecc380e3d3172035b919eaf7465d9f7" -dependencies = [ - "anyhow", - "backtrace", - "bincode", - "cfg-if 1.0.0", - "cpp_demangle", - "indexmap", - "lazy_static", - "libc", - "log", - "paste 1.0.4", - "psm", - "region", - "rustc-demangle", - "serde", - "smallvec 1.6.1", - "target-lexicon", - "wasmparser", - "wasmtime-cache", - "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit", - "wasmtime-profiling", - "wasmtime-runtime", - "wat", - "winapi 0.3.9", -] - -[[package]] -name = "wasmtime-cache" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14d500d5c3dc5f5c097158feee123d64b3097f0d836a2a27dff9c761c73c843" -dependencies = [ - "anyhow", - "base64 0.13.0", - "bincode", - "directories-next", - "errno", - "file-per-thread-logger", - "libc", - "log", - "serde", - "sha2 0.9.3", - "toml", - "winapi 0.3.9", - "zstd", -] - -[[package]] -name = "wasmtime-cranelift" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c525b39f062eada7db3c1298287b96dcb6e472b9f6b22501300b28d9fa7582f6" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-wasm", - "target-lexicon", - "wasmparser", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-debug" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d2a763e7a6fc734218e0e463196762a4f409c483063d81e0e85f96343b2e0a" -dependencies = [ - "anyhow", - "gimli 0.24.0", - "more-asserts", - "object 0.24.0", - "target-lexicon", - "thiserror", - "wasmparser", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-environ" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64d0c2d881c31b0d65c1f2695e022d71eb60b9fbdd336aacca28208b58eac90" -dependencies = [ - "cfg-if 1.0.0", - "cranelift-codegen", - "cranelift-entity", - "cranelift-wasm", - "gimli 0.24.0", - "indexmap", - "log", - "more-asserts", - "serde", - "thiserror", - "wasmparser", -] - -[[package]] -name = "wasmtime-fiber" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a089d44cd7e2465d41a53b840a5b4fca1bf6d1ecfebc970eac9592b34ea5f0b3" -dependencies = [ - "cc", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "wasmtime-jit" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4539ea734422b7c868107e2187d7746d8affbcaa71916d72639f53757ad707" -dependencies = [ - "addr2line 0.15.2", - "anyhow", - "cfg-if 1.0.0", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.24.0", - "log", - "more-asserts", - "object 0.24.0", - "rayon", - "region", - "serde", - "target-lexicon", - "thiserror", - "wasmparser", - "wasmtime-cranelift", - "wasmtime-debug", - "wasmtime-environ", - "wasmtime-obj", - "wasmtime-profiling", - "wasmtime-runtime", - "winapi 0.3.9", -] - -[[package]] -name = "wasmtime-obj" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1a8ff85246d091828e2225af521a6208ed28c997bb5c39eb697366dc2e2f2b" -dependencies = [ - "anyhow", - "more-asserts", - "object 0.24.0", - "target-lexicon", - "wasmtime-debug", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-profiling" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24364d522dcd67c897c8fffc42e5bdfc57207bbb6d7eeade0da9d4a7d70105b" -dependencies = [ - "anyhow", - "cfg-if 1.0.0", - "gimli 0.24.0", - "lazy_static", - "libc", - "object 0.24.0", - "scroll", - "serde", - "target-lexicon", - "wasmtime-environ", - "wasmtime-runtime", -] - -[[package]] -name = "wasmtime-runtime" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51e57976e8a19a18a18e002c6eb12e5769554204238e47ff155fda1809ef0f7" -dependencies = [ - "anyhow", - "backtrace", - "cc", - "cfg-if 1.0.0", - "indexmap", - "lazy_static", - "libc", - "log", - "mach", - "memoffset 0.6.1", - "more-asserts", - "rand 0.8.3", - "region", - "thiserror", - "wasmtime-environ", - "wasmtime-fiber", - "winapi 0.3.9", -] - -[[package]] -name = "wast" -version = "35.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5800e9f86a1eae935e38bea11e60fd253f6d514d153fb39b3e5535a7b37b56" -dependencies = [ - "leb128", -] - -[[package]] -name = "wat" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec280a739b69173e0ffd12c1658507996836ba4e992ed9bc1e5385a0bd72a02" -dependencies = [ - "wast", -] - -[[package]] -name = "web-sys" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web3" -version = "0.15.0" -source = "git+https://github.com/tomusdrw/rust-web3.git?branch=td-ethabi#68dabc289bf9f5e59447d822c5da5b4c768175c6" -dependencies = [ - "arrayvec 0.5.2", - "derive_more", - "ethabi", - "ethereum-types", - "futures 0.3.13", - "futures-timer 3.0.2", - "hex", - "jsonrpc-core 17.0.0", - "log", - "parking_lot 0.11.1", - "pin-project 1.0.5", - "rlp", - "serde", - "serde_json", - "tiny-keccak", -] - -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" -dependencies = [ - "webpki 0.21.4", -] - -[[package]] -name = "wepoll-sys" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" -dependencies = [ - "cc", -] - -[[package]] -name = "which" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724" -dependencies = [ - "libc", -] - -[[package]] -name = "which" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef" -dependencies = [ - "libc", - "thiserror", -] - -[[package]] -name = "widestring" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "winreg" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - -[[package]] -name = "x25519-dalek" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088" -dependencies = [ - "curve25519-dalek 3.0.2", - "rand_core 0.5.1", - "zeroize", -] - -[[package]] -name = "yaml-rust" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" - -[[package]] -name = "yamux" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" -dependencies = [ - "futures 0.3.13", - "log", - "nohash-hasher", - "parking_lot 0.11.1", - "rand 0.8.3", - "static_assertions", -] - -[[package]] -name = "zeroize" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zstd" -version = "0.6.1+zstd.1.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de55e77f798f205d8561b8fe2ef57abfb6e0ff2abe7fd3c089e119cdb5631a3" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "3.0.1+zstd.1.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1387cabcd938127b30ce78c4bf00b30387dddf704e3f0881dbc4ff62b5566f8c" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "1.4.20+zstd.1.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd5b733d7cf2d9447e2c3e76a5589b4f5e5ae065c22a2bc0b023cbc331b6c8e" -dependencies = [ - "cc", - "libc", -] diff --git a/bridges/Dockerfile b/bridges/Dockerfile deleted file mode 100644 index 2d03db8a76f2..000000000000 --- a/bridges/Dockerfile +++ /dev/null @@ -1,71 +0,0 @@ -# Builds images used by the bridge. -# -# In particular, it can be used to build Substrate nodes and bridge relayers. The binary that gets -# built can be specified with the `PROJECT` build-arg. For example, to build the `substrate-relay` -# you would do the following: -# -# `docker build . -t local/substrate-relay --build-arg=PROJECT=substrate-relay` -# -# See the `deployments/README.md` for all the available `PROJECT` values. - -FROM paritytech/bridges-ci:latest as builder -WORKDIR /parity-bridges-common - -COPY . . - -ARG PROJECT=ethereum-poa-relay -RUN cargo build --release --verbose -p ${PROJECT} && \ - strip ./target/release/${PROJECT} - -# In this final stage we copy over the final binary and do some checks -# to make sure that everything looks good. -FROM ubuntu:20.04 as runtime - -# show backtraces -ENV RUST_BACKTRACE 1 -ENV DEBIAN_FRONTEND=noninteractive - -RUN set -eux; \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - curl ca-certificates libssl-dev && \ - update-ca-certificates && \ - groupadd -g 1000 user && \ - useradd -u 1000 -g user -s /bin/sh -m user && \ - # apt clean up - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -# switch to non-root user -USER user - -WORKDIR /home/user - -ARG PROJECT=ethereum-poa-relay - -COPY --chown=user:user --from=builder /parity-bridges-common/target/release/${PROJECT} ./ -COPY --chown=user:user --from=builder /parity-bridges-common/deployments/local-scripts/bridge-entrypoint.sh ./ - -# check if executable works in this container -RUN ./${PROJECT} --version - -ENV PROJECT=$PROJECT -ENTRYPOINT ["/home/user/bridge-entrypoint.sh"] - -# metadata -ARG VCS_REF=master -ARG BUILD_DATE="" -ARG VERSION="" - -LABEL org.opencontainers.image.title="${PROJECT}" \ - org.opencontainers.image.description="${PROJECT} - component of Parity Bridges Common" \ - org.opencontainers.image.source="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/Dockerfile" \ - org.opencontainers.image.url="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/Dockerfile" \ - org.opencontainers.image.documentation="https://github.com/paritytech/parity-bridges-common/blob/${VCS_REF}/README.md" \ - org.opencontainers.image.created="${BUILD_DATE}" \ - org.opencontainers.image.version="${VERSION}" \ - org.opencontainers.image.revision="${VCS_REF}" \ - org.opencontainers.image.authors="devops-team@parity.io" \ - org.opencontainers.image.vendor="Parity Technologies" \ - org.opencontainers.image.licenses="GPL-3.0 License" diff --git a/bridges/LICENSE b/bridges/LICENSE deleted file mode 100644 index 733c072369ca..000000000000 --- a/bridges/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/bridges/README.md b/bridges/README.md deleted file mode 100644 index b407f203b742..000000000000 --- a/bridges/README.md +++ /dev/null @@ -1,216 +0,0 @@ -# Parity Bridges Common - -This is a collection of components for building bridges. - -These components include Substrate pallets for syncing headers, passing arbitrary messages, as well -as libraries for building relayers to provide cross-chain communication capabilities. - -Three bridge nodes are also available. The nodes can be used to run test networks which bridge other -Substrate chains or Ethereum Proof-of-Authority chains. - -🚧 The bridges are currently under construction - a hardhat is recommended beyond this point 🚧 - -## Contents - -- [Installation](#installation) -- [High-Level Architecture](#high-level-architecture) -- [Project Layout](#project-layout) -- [Running the Bridge](#running-the-bridge) -- [How to send a message](#how-to-send-a-message) -- [Community](#community) - -## Installation - -To get up and running you need both stable and nightly Rust. Rust nightly is used to build the Web -Assembly (WASM) runtime for the node. You can configure the WASM support as so: - -```bash -rustup install nightly -rustup target add wasm32-unknown-unknown --toolchain nightly -``` - -Once this is configured you can build and test the repo as follows: - -``` -git clone https://github.com/paritytech/parity-bridges-common.git -cd parity-bridges-common -cargo build --all -cargo test --all -``` - -If you need more information about setting up your development environment Substrate's -[Getting Started](https://substrate.dev/docs/en/knowledgebase/getting-started/) page is a good -resource. - -## High-Level Architecture - -This repo has support for bridging foreign chains together using a combination of Substrate pallets -and external processes called relayers. A bridge chain is one that is able to follow the consensus -of a foreign chain independently. For example, consider the case below where we want to bridge two -Substrate based chains. - -``` -+---------------+ +---------------+ -| | | | -| Rialto | | Millau | -| | | | -+-------+-------+ +-------+-------+ - ^ ^ - | +---------------+ | - | | | | - +-----> | Bridge Relay | <-------+ - | | - +---------------+ -``` - -The Millau chain must be able to accept Rialto headers and verify their integrity. It does this by -using a runtime module designed to track GRANDPA finality. Since two blockchains can't interact -directly they need an external service, called a relayer, to communicate. The relayer will subscribe -to new Rialto headers via RPC and submit them to the Millau chain for verification. - -Take a look at [Bridge High Level Documentation](./docs/high-level-overview.md) for more in-depth -description of the bridge interaction. - -## Project Layout - -Here's an overview of how the project is laid out. The main bits are the `node`, which is the actual -"blockchain", the `modules` which are used to build the blockchain's logic (a.k.a the runtime) and -the `relays` which are used to pass messages between chains. - -``` -├── bin // Node and Runtime for the various Substrate chains -│ └── ... -├── deployments // Useful tools for deploying test networks -│ └── ... -├── diagrams // Pretty pictures of the project architecture -│ └── ... -├── modules // Substrate Runtime Modules (a.k.a Pallets) -│ ├── ethereum // Ethereum PoA Header Sync Module -│ ├── grandpa // On-Chain GRANDPA Light Client -│ ├── messages // Cross Chain Message Passing -│ ├── dispatch // Target Chain Message Execution -│ └── ... -├── primitives // Code shared between modules, runtimes, and relays -│ └── ... -├── relays // Application for sending headers and messages between chains -│ └── ... -└── scripts // Useful development and maintenance scripts -``` - -## Running the Bridge - -To run the Bridge you need to be able to connect the bridge relay node to the RPC interface of nodes -on each side of the bridge (source and target chain). - -There are 3 ways to run the bridge, described below: - -- building & running from source, -- building or using Docker images for each individual component, -- running a Docker Compose setup (recommended). - -### Using the Source - -First you'll need to build the bridge nodes and relay. This can be done as follows: - -```bash -# In `parity-bridges-common` folder -cargo build -p rialto-bridge-node -cargo build -p millau-bridge-node -cargo build -p substrate-relay -``` - -### Running - -To run a simple dev network you'll can use the scripts located in -[the `deployments/local-scripts` folder](./deployments/local-scripts). Since the relayer connects to -both Substrate chains it must be run last. - -```bash -# In `parity-bridges-common` folder -./deployments/local-scripts/run-rialto-node.sh -./deployments/local-scripts/run-millau-node.sh -./deployments/local-scripts/relay-millau-to-rialto.sh -``` - -At this point you should see the relayer submitting headers from the Millau Substrate chain to the -Rialto Substrate chain. - -### Local Docker Setup - -To get up and running quickly you can use published Docker images for the bridge nodes and relayer. -The images are published on [Docker Hub](https://hub.docker.com/u/paritytech). - -To run the dev network we first run the two bridge nodes: - -```bash -docker run -p 30333:30333 -p 9933:9933 -p 9944:9944 \ - -it paritytech/rialto-bridge-node --dev --tmp \ - --rpc-cors=all --unsafe-rpc-external --unsafe-ws-external - -docker run -p 30334:30333 -p 9934:9933 -p 9945:9944 \ - -it paritytech/millau-bridge-node --dev --tmp \ - --rpc-cors=all --unsafe-rpc-external --unsafe-ws-external -``` - -Notice that the `docker run` command will accept all the normal Substrate flags. For local -development you should at minimum run with the `--dev` flag or else no blocks will be produced. - -Then we need to initialize and run the relayer: - -```bash -docker run --network=host -it \ - paritytech/substrate-relay init-bridge RialtoToMillau \ - --target-host localhost \ - --target-port 9945 \ - --source-host localhost \ - --source-port 9944 \ - --target-signer //Alice - -docker run --network=host -it \ - paritytech/substrate-relay relay-headers RialtoToMillau \ - --target-host localhost \ - --target-port 9945 \ - --source-host localhost \ - --source-port 9944 \ - --target-signer //Bob \ -``` - -You should now see the relayer submitting headers from the Millau chain to the Rialto chain. - -If you don't want to use the published Docker images you can build images yourself. You can do this -by running the following commands at the top level of the repository. - -```bash -# In `parity-bridges-common` folder -docker build . -t local/rialto-bridge-node --build-arg PROJECT=rialto-bridge-node -docker build . -t local/millau-bridge-node --build-arg PROJECT=millau-bridge-node -docker build . -t local/substrate-relay --build-arg PROJECT=substrate-relay -``` - -_Note: Building the node images will take a long time, so make sure you have some coffee handy._ - -Once you have the images built you can use them in the previous commands by replacing -`paritytech/` with `local/` everywhere. - -### Full Network Docker Compose Setup - -For a more sophisticated deployment which includes bidirectional header sync, message passing, -monitoring dashboards, etc. see the [Deployments README](./deployments/README.md). - -### How to send a message - -A straightforward way to interact with and test the bridge is sending messages. This is explained -in the [send message](./docs/send-message.md) document. - -## Community - -Main hangout for the community is [Element](https://element.io/) (formerly Riot). Element is a chat -server like, for example, Discord. Most discussions around Polkadot and Substrate happen -in various Element "rooms" (channels). So, joining Element might be a good idea, anyway. - -If you are interested in information exchange and development of Polkadot related bridges please -feel free to join the [Polkadot Bridges](https://app.element.io/#/room/#bridges:web3.foundation) -Element channel. - -The [Substrate Technical](https://app.element.io/#/room/#substrate-technical:matrix.org) Element -channel is most suited for discussions regarding Substrate itself. diff --git a/bridges/bin/millau/node/Cargo.toml b/bridges/bin/millau/node/Cargo.toml deleted file mode 100644 index 8c6d32402ac2..000000000000 --- a/bridges/bin/millau/node/Cargo.toml +++ /dev/null @@ -1,64 +0,0 @@ -[package] -name = "millau-bridge-node" -description = "Substrate node compatible with Millau runtime" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/parity-bridges-common/" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -jsonrpc-core = "15.1.0" -structopt = "0.3.21" -serde_json = "1.0.59" - -# Bridge dependencies - -bp-messages = { path = "../../../primitives/messages" } -bp-millau= { path = "../../../primitives/chain-millau" } -bp-runtime = { path = "../../../primitives/runtime" } -millau-runtime = { path = "../runtime" } -pallet-bridge-messages = { path = "../../../modules/messages" } - -# Substrate Dependencies - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -node-inspect = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[build-dependencies] -substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = [] - -# TODO: https://github.com/paritytech/parity-bridges-common/issues/390 -# I've left the feature flag here to test our CI configuration -runtime-benchmarks = [ - # "millau-runtime/runtime-benchmarks", -] diff --git a/bridges/bin/millau/node/src/chain_spec.rs b/bridges/bin/millau/node/src/chain_spec.rs deleted file mode 100644 index 2c50897b965e..000000000000 --- a/bridges/bin/millau/node/src/chain_spec.rs +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use bp_millau::derive_account_from_rialto_id; -use millau_runtime::{ - AccountId, AuraConfig, BalancesConfig, BridgeWestendGrandpaConfig, GenesisConfig, GrandpaConfig, SessionConfig, - SessionKeys, Signature, SudoConfig, SystemConfig, WASM_BINARY, -}; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; -use sp_core::{sr25519, Pair, Public}; -use sp_finality_grandpa::AuthorityId as GrandpaId; -use sp_runtime::traits::{IdentifyAccount, Verify}; - -/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. -pub type ChainSpec = sc_service::GenericChainSpec; - -/// The chain specification option. This is expected to come in from the CLI and -/// is little more than one of a number of alternatives which can easily be converted -/// from a string (`--chain=...`) into a `ChainSpec`. -#[derive(Clone, Debug)] -pub enum Alternative { - /// Whatever the current runtime is, with just Alice as an auth. - Development, - /// Whatever the current runtime is, with simple Alice/Bob/Charlie/Dave/Eve auths. - LocalTestnet, -} - -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -type AccountPublic = ::Signer; - -/// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -/// Helper function to generate an authority key for Aura -pub fn get_authority_keys_from_seed(s: &str) -> (AccountId, AuraId, GrandpaId) { - ( - get_account_id_from_seed::(s), - get_from_seed::(s), - get_from_seed::(s), - ) -} - -impl Alternative { - /// Get an actual chain config from one of the alternatives. - pub(crate) fn load(self) -> ChainSpec { - let properties = Some( - serde_json::json!({ - "tokenDecimals": 9, - "tokenSymbol": "MLAU", - "bridgeIds": { - "Rialto": bp_runtime::RIALTO_CHAIN_ID, - } - }) - .as_object() - .expect("Map given; qed") - .clone(), - ); - match self { - Alternative::Development => ChainSpec::from_genesis( - "Development", - "dev", - sc_service::ChainType::Development, - || { - testnet_genesis( - vec![get_authority_keys_from_seed("Alice")], - get_account_id_from_seed::("Alice"), - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Alice"), - )), - ], - true, - ) - }, - vec![], - None, - None, - properties, - None, - ), - Alternative::LocalTestnet => ChainSpec::from_genesis( - "Local Testnet", - "local_testnet", - sc_service::ChainType::Local, - || { - testnet_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - get_authority_keys_from_seed("Charlie"), - get_authority_keys_from_seed("Dave"), - get_authority_keys_from_seed("Eve"), - ], - get_account_id_from_seed::("Alice"), - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("George"), - get_account_id_from_seed::("Harry"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - get_account_id_from_seed::("George//stash"), - get_account_id_from_seed::("Harry//stash"), - pallet_bridge_messages::Pallet::< - millau_runtime::Runtime, - pallet_bridge_messages::DefaultInstance, - >::relayer_fund_account_id(), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Alice"), - )), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Bob"), - )), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Charlie"), - )), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Dave"), - )), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Eve"), - )), - derive_account_from_rialto_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Ferdie"), - )), - ], - true, - ) - }, - vec![], - None, - None, - properties, - None, - ), - } - } -} - -fn session_keys(aura: AuraId, grandpa: GrandpaId) -> SessionKeys { - SessionKeys { aura, grandpa } -} - -fn testnet_genesis( - initial_authorities: Vec<(AccountId, AuraId, GrandpaId)>, - root_key: AccountId, - endowed_accounts: Vec, - _enable_println: bool, -) -> GenesisConfig { - GenesisConfig { - system: SystemConfig { - code: WASM_BINARY.expect("Millau development WASM not available").to_vec(), - changes_trie_config: Default::default(), - }, - balances: BalancesConfig { - balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 50)).collect(), - }, - aura: AuraConfig { - authorities: Vec::new(), - }, - grandpa: GrandpaConfig { - authorities: Vec::new(), - }, - sudo: SudoConfig { key: root_key }, - session: SessionConfig { - keys: initial_authorities - .iter() - .map(|x| (x.0.clone(), x.0.clone(), session_keys(x.1.clone(), x.2.clone()))) - .collect::>(), - }, - bridge_westend_grandpa: BridgeWestendGrandpaConfig { - // for our deployments to avoid multiple same-nonces transactions: - // //Alice is already used to initialize Rialto<->Millau bridge - // => let's use //George to initialize Westend->Millau bridge - owner: Some(get_account_id_from_seed::("George")), - ..Default::default() - }, - } -} - -#[test] -fn derived_dave_account_is_as_expected() { - let dave = get_account_id_from_seed::("Dave"); - let derived: AccountId = derive_account_from_rialto_id(bp_runtime::SourceAccount::Account(dave)); - assert_eq!( - derived.to_string(), - "5DNW6UVnb7TN6wX5KwXtDYR3Eccecbdzuw89HqjyNfkzce6J".to_string() - ); -} diff --git a/bridges/bin/millau/node/src/cli.rs b/bridges/bin/millau/node/src/cli.rs deleted file mode 100644 index 46323ed25c9e..000000000000 --- a/bridges/bin/millau/node/src/cli.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use sc_cli::RunCmd; -use structopt::StructOpt; - -#[derive(Debug, StructOpt)] -pub struct Cli { - #[structopt(subcommand)] - pub subcommand: Option, - - #[structopt(flatten)] - pub run: RunCmd, -} - -/// Possible subcommands of the main binary. -#[derive(Debug, StructOpt)] -pub enum Subcommand { - /// Key management cli utilities - Key(sc_cli::KeySubcommand), - - /// Verify a signature for a message, provided on STDIN, with a given (public or secret) key. - Verify(sc_cli::VerifyCmd), - - /// Generate a seed that provides a vanity address. - Vanity(sc_cli::VanityCmd), - - /// Sign a message, with a given (secret) key. - Sign(sc_cli::SignCmd), - - /// Build a chain specification. - BuildSpec(sc_cli::BuildSpecCmd), - - /// Validate blocks. - CheckBlock(sc_cli::CheckBlockCmd), - - /// Export blocks. - ExportBlocks(sc_cli::ExportBlocksCmd), - - /// Export the state of a given block into a chain spec. - ExportState(sc_cli::ExportStateCmd), - - /// Import blocks. - ImportBlocks(sc_cli::ImportBlocksCmd), - - /// Remove the whole chain. - PurgeChain(sc_cli::PurgeChainCmd), - - /// Revert the chain to a previous state. - Revert(sc_cli::RevertCmd), - - /// Inspect blocks or extrinsics. - Inspect(node_inspect::cli::InspectCmd), - - /// Benchmark runtime pallets. - Benchmark(frame_benchmarking_cli::BenchmarkCmd), -} diff --git a/bridges/bin/millau/node/src/command.rs b/bridges/bin/millau/node/src/command.rs deleted file mode 100644 index d73f9b1ac9b2..000000000000 --- a/bridges/bin/millau/node/src/command.rs +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::{Cli, Subcommand}; -use crate::service; -use crate::service::new_partial; -use millau_runtime::{Block, RuntimeApi}; -use sc_cli::{ChainSpec, Role, RuntimeVersion, SubstrateCli}; -use sc_service::PartialComponents; - -impl SubstrateCli for Cli { - fn impl_name() -> String { - "Millau Bridge Node".into() - } - - fn impl_version() -> String { - env!("CARGO_PKG_VERSION").into() - } - - fn description() -> String { - "Millau Bridge Node".into() - } - - fn author() -> String { - "Parity Technologies".into() - } - - fn support_url() -> String { - "https://github.com/paritytech/parity-bridges-common/".into() - } - - fn copyright_start_year() -> i32 { - 2019 - } - - fn executable_name() -> String { - "millau-bridge-node".into() - } - - fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { - &millau_runtime::VERSION - } - - fn load_spec(&self, id: &str) -> Result, String> { - Ok(Box::new( - match id { - "" | "dev" => crate::chain_spec::Alternative::Development, - "local" => crate::chain_spec::Alternative::LocalTestnet, - _ => return Err(format!("Unsupported chain specification: {}", id)), - } - .load(), - )) - } -} - -/// Parse and run command line arguments -pub fn run() -> sc_cli::Result<()> { - let cli = Cli::from_args(); - // make sure to set correct crypto version. - sp_core::crypto::set_default_ss58_version(sp_core::crypto::Ss58AddressFormat::Custom( - millau_runtime::SS58Prefix::get() as u16, - )); - - match &cli.subcommand { - Some(Subcommand::Benchmark(cmd)) => { - if cfg!(feature = "runtime-benchmarks") { - let runner = cli.create_runner(cmd)?; - - runner.sync_run(|config| cmd.run::(config)) - } else { - println!( - "Benchmarking wasn't enabled when building the node. \ - You can enable it with `--features runtime-benchmarks`." - ); - Ok(()) - } - } - Some(Subcommand::Key(cmd)) => cmd.run(&cli), - Some(Subcommand::Sign(cmd)) => cmd.run(), - Some(Subcommand::Verify(cmd)) => cmd.run(), - Some(Subcommand::Vanity(cmd)) => cmd.run(), - Some(Subcommand::BuildSpec(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) - } - Some(Subcommand::CheckBlock(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - import_queue, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, import_queue), task_manager)) - }) - } - Some(Subcommand::ExportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, task_manager, .. - } = new_partial(&config)?; - Ok((cmd.run(client, config.database), task_manager)) - }) - } - Some(Subcommand::ExportState(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, task_manager, .. - } = new_partial(&config)?; - Ok((cmd.run(client, config.chain_spec), task_manager)) - }) - } - Some(Subcommand::ImportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - import_queue, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, import_queue), task_manager)) - }) - } - Some(Subcommand::PurgeChain(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run(config.database)) - } - Some(Subcommand::Revert(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - backend, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, backend), task_manager)) - }) - } - Some(Subcommand::Inspect(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run::(config)) - } - None => { - let runner = cli.create_runner(&cli.run)?; - runner.run_node_until_exit(|config| async move { - match config.role { - Role::Light => service::new_light(config), - _ => service::new_full(config), - } - .map_err(sc_cli::Error::Service) - }) - } - } -} diff --git a/bridges/bin/millau/node/src/service.rs b/bridges/bin/millau/node/src/service.rs deleted file mode 100644 index 2373d0fbdc67..000000000000 --- a/bridges/bin/millau/node/src/service.rs +++ /dev/null @@ -1,479 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Service and ServiceFactory implementation. Specialized wrapper over substrate service. - -// ===================================================================================== -// ===================================================================================== -// ===================================================================================== -// UPDATE GUIDE: -// 1) replace everything with node-template/src/service.rs contents (found in main Substrate repo); -// 2) the only thing to keep from old code, is `rpc_extensions_builder` - we use our own custom RPCs; -// 3) fix compilation errors; -// 4) test :) -// ===================================================================================== -// ===================================================================================== -// ===================================================================================== - -use millau_runtime::{self, opaque::Block, RuntimeApi}; -use sc_client_api::{ExecutorProvider, RemoteBackend}; -use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams}; -use sc_executor::native_executor_instance; -pub use sc_executor::NativeExecutor; - -use sc_keystore::LocalKeystore; -use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; -use sc_telemetry::{Telemetry, TelemetryWorker}; -use sp_consensus::SlotData; -use sp_consensus_aura::sr25519::AuthorityPair as AuraPair; -use std::{sync::Arc, time::Duration}; - -// Our native executor instance. -native_executor_instance!( - pub Executor, - millau_runtime::api::dispatch, - millau_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -type FullClient = sc_service::TFullClient; -type FullBackend = sc_service::TFullBackend; -type FullSelectChain = sc_consensus::LongestChain; - -#[allow(clippy::type_complexity)] -pub fn new_partial( - config: &Configuration, -) -> Result< - sc_service::PartialComponents< - FullClient, - FullBackend, - FullSelectChain, - sp_consensus::DefaultImportQueue, - sc_transaction_pool::FullPool, - ( - sc_finality_grandpa::GrandpaBlockImport, - sc_finality_grandpa::LinkHalf, - Option, - ), - >, - ServiceError, -> { - if config.keystore_remote.is_some() { - return Err(ServiceError::Other("Remote Keystores are not supported.".to_string())); - } - - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, sc_telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( - config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - let client = Arc::new(client); - - let telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = sc_transaction_pool::BasicPool::new_full( - config.transaction_pool.clone(), - config.role.is_authority().into(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - ); - - let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - telemetry.as_ref().map(|x| x.handle()), - )?; - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); - - let import_queue = sc_consensus_aura::import_queue::(ImportQueueParams { - block_import: grandpa_block_import.clone(), - justification_import: Some(Box::new(grandpa_block_import.clone())), - client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - spawner: &task_manager.spawn_essential_handle(), - can_author_with: sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), - registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - Ok(sc_service::PartialComponents { - client, - backend, - task_manager, - import_queue, - keystore_container, - select_chain, - transaction_pool, - other: (grandpa_block_import, grandpa_link, telemetry), - }) -} - -fn remote_keystore(_url: &str) -> Result, &'static str> { - // FIXME: here would the concrete keystore be built, - // must return a concrete type (NOT `LocalKeystore`) that - // implements `CryptoStore` and `SyncCryptoStore` - Err("Remote Keystore not supported.") -} - -/// Builds a new service for a full client. -pub fn new_full(mut config: Configuration) -> Result { - let sc_service::PartialComponents { - client, - backend, - mut task_manager, - import_queue, - mut keystore_container, - select_chain, - transaction_pool, - other: (block_import, grandpa_link, mut telemetry), - } = new_partial(&config)?; - - if let Some(url) = &config.keystore_remote { - match remote_keystore(url) { - Ok(k) => keystore_container.set_remote_keystore(k), - Err(e) => { - return Err(ServiceError::Other(format!( - "Error hooking up remote keystore for {}: {}", - url, e - ))) - } - }; - } - - config - .network - .extra_sets - .push(sc_finality_grandpa::grandpa_peers_set_config()); - - let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: None, - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers(&config, task_manager.spawn_handle(), client.clone(), network.clone()); - } - - let role = config.role.clone(); - let force_authoring = config.force_authoring; - let backoff_authoring_blocks: Option<()> = None; - let name = config.network.node_name.clone(); - let enable_grandpa = !config.disable_grandpa; - let prometheus_registry = config.prometheus_registry().cloned(); - let shared_voter_state = sc_finality_grandpa::SharedVoterState::empty(); - - let rpc_extensions_builder = { - use sc_finality_grandpa::FinalityProofProvider as GrandpaFinalityProofProvider; - - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use sc_finality_grandpa_rpc::{GrandpaApi, GrandpaRpcHandler}; - use sc_rpc::DenyUnsafe; - use substrate_frame_rpc_system::{FullSystem, SystemApi}; - - let backend = backend.clone(); - let client = client.clone(); - let pool = transaction_pool.clone(); - - let justification_stream = grandpa_link.justification_stream(); - let shared_authority_set = grandpa_link.shared_authority_set().clone(); - let shared_voter_state = shared_voter_state.clone(); - - let finality_proof_provider = - GrandpaFinalityProofProvider::new_for_service(backend, Some(shared_authority_set.clone())); - - Box::new(move |_, subscription_executor| { - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with(SystemApi::to_delegate(FullSystem::new( - client.clone(), - pool.clone(), - DenyUnsafe::No, - ))); - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new( - client.clone(), - ))); - io.extend_with(GrandpaApi::to_delegate(GrandpaRpcHandler::new( - shared_authority_set.clone(), - shared_voter_state.clone(), - justification_stream.clone(), - subscription_executor, - finality_proof_provider.clone(), - ))); - io - }) - }; - - let _rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { - network: network.clone(), - client: client.clone(), - keystore: keystore_container.sync_keystore(), - task_manager: &mut task_manager, - transaction_pool: transaction_pool.clone(), - rpc_extensions_builder, - on_demand: None, - remote_blockchain: None, - backend, - system_rpc_tx, - config, - telemetry: telemetry.as_mut(), - })?; - - if role.is_authority() { - let proposer_factory = sc_basic_authorship::ProposerFactory::new( - task_manager.spawn_handle(), - client.clone(), - transaction_pool, - prometheus_registry.as_ref(), - telemetry.as_ref().map(|x| x.handle()), - ); - - let can_author_with = sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?; - let raw_slot_duration = slot_duration.slot_duration(); - - let aura = sc_consensus_aura::start_aura::(StartAuraParams { - slot_duration, - client, - select_chain, - block_import, - proposer_factory, - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - raw_slot_duration, - ); - - Ok((timestamp, slot)) - }, - force_authoring, - backoff_authoring_blocks, - keystore: keystore_container.sync_keystore(), - can_author_with, - sync_oracle: network.clone(), - justification_sync_link: network.clone(), - block_proposal_slot_portion: SlotProportion::new(2f32 / 3f32), - max_block_proposal_slot_portion: None, - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - // the AURA authoring task is considered essential, i.e. if it - // fails we take down the service with it. - task_manager.spawn_essential_handle().spawn_blocking("aura", aura); - } - - // if the node isn't actively participating in consensus then it doesn't - // need a keystore, regardless of which protocol we use below. - let keystore = if role.is_authority() { - Some(keystore_container.sync_keystore()) - } else { - None - }; - - let grandpa_config = sc_finality_grandpa::Config { - // FIXME #1578 make this available through chainspec - gossip_duration: Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore, - local_role: role, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - if enable_grandpa { - // start the full GRANDPA voter - // NOTE: non-authorities could run the GRANDPA observer protocol, but at - // this point the full voter should provide better guarantees of block - // and vote data availability than the observer. The observer has not - // been tested extensively yet and having most nodes in a network run it - // could lead to finality stalls. - let grandpa_config = sc_finality_grandpa::GrandpaParams { - config: grandpa_config, - link: grandpa_link, - network, - voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(), - prometheus_registry, - shared_voter_state, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - // the GRANDPA voter task is considered infallible, i.e. - // if it fails we take down the service with it. - task_manager - .spawn_essential_handle() - .spawn_blocking("grandpa-voter", sc_finality_grandpa::run_grandpa_voter(grandpa_config)?); - } - - network_starter.start_network(); - Ok(task_manager) -} - -/// Builds a new service for a light client. -pub fn new_light(mut config: Configuration) -> Result { - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, sc_telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, mut task_manager, on_demand) = - sc_service::new_light_parts::( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - - let mut telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - config - .network - .extra_sets - .push(sc_finality_grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); - - let import_queue = sc_consensus_aura::import_queue::(ImportQueueParams { - block_import: grandpa_block_import.clone(), - justification_import: Some(Box::new(grandpa_block_import)), - client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - spawner: &task_manager.spawn_essential_handle(), - can_author_with: sp_consensus::NeverCanAuthor, - registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers(&config, task_manager.spawn_handle(), client.clone(), network.clone()); - } - - let enable_grandpa = !config.disable_grandpa; - if enable_grandpa { - let name = config.network.node_name.clone(); - - let config = sc_finality_grandpa::Config { - gossip_duration: std::time::Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: None, - local_role: config.role.clone(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_handle().spawn_blocking( - "grandpa-observer", - sc_finality_grandpa::run_grandpa_observer(config, grandpa_link, network.clone())?, - ); - } - - sc_service::spawn_tasks(sc_service::SpawnTasksParams { - remote_blockchain: Some(backend.remote_blockchain()), - transaction_pool, - task_manager: &mut task_manager, - on_demand: Some(on_demand), - rpc_extensions_builder: Box::new(|_, _| ()), - config, - client, - keystore: keystore_container.sync_keystore(), - backend, - network, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - network_starter.start_network(); - Ok(task_manager) -} diff --git a/bridges/bin/millau/runtime/Cargo.toml b/bridges/bin/millau/runtime/Cargo.toml deleted file mode 100644 index 367c1c3eef70..000000000000 --- a/bridges/bin/millau/runtime/Cargo.toml +++ /dev/null @@ -1,106 +0,0 @@ -[package] -name = "millau-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/parity-bridges-common/" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -hex-literal = "0.3" -serde = { version = "1.0.124", optional = true, features = ["derive"] } - -# Bridge dependencies - -bp-header-chain = { path = "../../../primitives/header-chain", default-features = false } -bp-messages = { path = "../../../primitives/messages", default-features = false } -bp-millau = { path = "../../../primitives/chain-millau", default-features = false } -bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false } -bp-runtime = { path = "../../../primitives/runtime", default-features = false } -bp-westend = { path = "../../../primitives/chain-westend", default-features = false } -bridge-runtime-common = { path = "../../runtime-common", default-features = false } -pallet-bridge-dispatch = { path = "../../../modules/dispatch", default-features = false } -pallet-bridge-grandpa = { path = "../../../modules/grandpa", default-features = false } -pallet-bridge-messages = { path = "../../../modules/messages", default-features = false } -pallet-shift-session-manager = { path = "../../../modules/shift-session-manager", default-features = false } - -# Substrate Dependencies - -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[build-dependencies] -substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = ["std"] -std = [ - "bp-header-chain/std", - "bp-messages/std", - "bp-millau/std", - "bp-rialto/std", - "bp-runtime/std", - "bp-westend/std", - "bridge-runtime-common/std", - "codec/std", - "frame-executive/std", - "frame-support/std", - "frame-system-rpc-runtime-api/std", - "frame-system/std", - "pallet-aura/std", - "pallet-balances/std", - "pallet-bridge-dispatch/std", - "pallet-bridge-grandpa/std", - "pallet-bridge-messages/std", - "pallet-grandpa/std", - "pallet-randomness-collective-flip/std", - "pallet-session/std", - "pallet-shift-session-manager/std", - "pallet-sudo/std", - "pallet-timestamp/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-transaction-payment/std", - "serde", - "sp-api/std", - "sp-block-builder/std", - "sp-consensus-aura/std", - "sp-core/std", - "sp-finality-grandpa/std", - "sp-inherents/std", - "sp-offchain/std", - "sp-runtime/std", - "sp-session/std", - "sp-std/std", - "sp-transaction-pool/std", - "sp-trie/std", - "sp-version/std", -] -# TODO: https://github.com/paritytech/parity-bridges-common/issues/390 -# I've left the feature flag here to test our CI configuration -runtime-benchmarks = [] diff --git a/bridges/bin/millau/runtime/src/lib.rs b/bridges/bin/millau/runtime/src/lib.rs deleted file mode 100644 index 33c21027f8a2..000000000000 --- a/bridges/bin/millau/runtime/src/lib.rs +++ /dev/null @@ -1,717 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! The Millau runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] -// Runtime-generated enums -#![allow(clippy::large_enum_variant)] -// Runtime-generated DecodeLimit::decode_all_With_depth_limit -#![allow(clippy::unnecessary_mut_passed)] -// From construct_runtime macro -#![allow(clippy::from_over_into)] - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -pub mod rialto_messages; - -use crate::rialto_messages::{ToRialtoMessagePayload, WithRialtoMessageBridge}; - -use bridge_runtime_common::messages::{source::estimate_message_dispatch_and_delivery_fee, MessageBridge}; -use codec::Decode; -use pallet_grandpa::{fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList}; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use sp_api::impl_runtime_apis; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; -use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; -use sp_runtime::traits::{Block as BlockT, IdentityLookup, NumberFor, OpaqueKeys}; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - transaction_validity::{TransactionSource, TransactionValidity}, - ApplyExtrinsicResult, MultiSignature, MultiSigner, -}; -use sp_std::prelude::*; -#[cfg(feature = "std")] -use sp_version::NativeVersion; -use sp_version::RuntimeVersion; - -// A few exports that help ease life for downstream crates. -pub use frame_support::{ - construct_runtime, parameter_types, - traits::{Currency, ExistenceRequirement, Imbalance, KeyOwnerProofSystem}, - weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, RuntimeDbWeight, Weight}, - StorageValue, -}; - -pub use frame_system::Call as SystemCall; -pub use pallet_balances::Call as BalancesCall; -pub use pallet_bridge_grandpa::Call as BridgeGrandpaRialtoCall; -pub use pallet_bridge_grandpa::Call as BridgeGrandpaWestendCall; -pub use pallet_bridge_messages::Call as MessagesCall; -pub use pallet_sudo::Call as SudoCall; -pub use pallet_timestamp::Call as TimestampCall; - -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use sp_runtime::{Perbill, Permill}; - -/// An index to a block. -pub type BlockNumber = bp_millau::BlockNumber; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = bp_millau::Signature; - -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = bp_millau::AccountId; - -/// The type for looking up accounts. We don't expect more than 4 billion of them, but you -/// never know... -pub type AccountIndex = u32; - -/// Balance of an account. -pub type Balance = bp_millau::Balance; - -/// Index of a transaction in the chain. -pub type Index = u32; - -/// A hash of some data used by the chain. -pub type Hash = bp_millau::Hash; - -/// Hashing algorithm used by the chain. -pub type Hashing = bp_millau::Hasher; - -/// Digest item type. -pub type DigestItem = generic::DigestItem; - -/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know -/// the specifics of the runtime. They can then be made to be agnostic over specific formats -/// of data like extrinsics, allowing for them to continue syncing the network through upgrades -/// to even the core data structures. -pub mod opaque { - use super::*; - - pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic; - - /// Opaque block header type. - pub type Header = generic::Header; - /// Opaque block type. - pub type Block = generic::Block; - /// Opaque block identifier type. - pub type BlockId = generic::BlockId; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub aura: Aura, - pub grandpa: Grandpa, - } -} - -/// This runtime version. -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("millau-runtime"), - impl_name: create_runtime_str!("millau-runtime"), - authoring_version: 1, - spec_version: 1, - impl_version: 1, - apis: RUNTIME_API_VERSIONS, - transaction_version: 1, -}; - -/// The version information used to identify this runtime when compiled natively. -#[cfg(feature = "std")] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - pub const Version: RuntimeVersion = VERSION; - pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { - read: 60_000_000, // ~0.06 ms = ~60 µs - write: 200_000_000, // ~0.2 ms = 200 µs - }; - pub const SS58Prefix: u8 = 60; -} - -impl frame_system::Config for Runtime { - /// The basic call filter to use in dispatchable. - type BaseCallFilter = (); - /// The identifier used to distinguish between accounts. - type AccountId = AccountId; - /// The aggregated dispatch type that is available for extrinsics. - type Call = Call; - /// The lookup mechanism to get account ID from whatever is passed in dispatchers. - type Lookup = IdentityLookup; - /// The index type for storing how many extrinsics an account has signed. - type Index = Index; - /// The index type for blocks. - type BlockNumber = BlockNumber; - /// The type for hashing blocks and tries. - type Hash = Hash; - /// The hashing algorithm used. - type Hashing = Hashing; - /// The header type. - type Header = generic::Header; - /// The ubiquitous event type. - type Event = Event; - /// The ubiquitous origin type. - type Origin = Origin; - /// Maximum number of block number to block hash mappings to keep (oldest pruned first). - type BlockHashCount = BlockHashCount; - /// Version of the runtime. - type Version = Version; - /// Provides information about the pallet setup in the runtime. - type PalletInfo = PalletInfo; - /// What to do if a new account is created. - type OnNewAccount = (); - /// What to do if an account is fully reaped from the system. - type OnKilledAccount = (); - /// The data to be stored in an account. - type AccountData = pallet_balances::AccountData; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - /// Weight information for the extrinsics of this pallet. - type SystemWeightInfo = (); - /// Block and extrinsics weights: base values and limits. - type BlockWeights = bp_millau::BlockWeights; - /// The maximum length of a block (in bytes). - type BlockLength = bp_millau::BlockLength; - /// The weight of database operations that the runtime can invoke. - type DbWeight = DbWeight; - /// The designated SS58 prefix of this chain. - type SS58Prefix = SS58Prefix; - /// The set code logic, just the default since we're not a parachain. - type OnSetCode = (); -} - -impl pallet_randomness_collective_flip::Config for Runtime {} - -impl pallet_aura::Config for Runtime { - type AuthorityId = AuraId; -} -impl pallet_bridge_dispatch::Config for Runtime { - type Event = Event; - type MessageId = (bp_messages::LaneId, bp_messages::MessageNonce); - type Call = Call; - type CallFilter = (); - type EncodedCall = crate::rialto_messages::FromRialtoEncodedCall; - type SourceChainAccountId = bp_rialto::AccountId; - type TargetChainAccountPublic = MultiSigner; - type TargetChainSignature = MultiSignature; - type AccountIdConverter = bp_millau::AccountIdConverter; -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - type KeyOwnerProofSystem = (); - type KeyOwnerProof = >::Proof; - type KeyOwnerIdentification = - >::IdentificationTuple; - type HandleEquivocation = (); - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - pub const MinimumPeriod: u64 = bp_millau::SLOT_DURATION / 2; -} - -impl pallet_timestamp::Config for Runtime { - /// A timestamp: milliseconds since the unix epoch. - type Moment = u64; - type OnTimestampSet = Aura; - type MinimumPeriod = MinimumPeriod; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - pub const ExistentialDeposit: bp_millau::Balance = 500; - // For weight estimation, we assume that the most locks on an individual account will be 50. - // This number may need to be adjusted in the future if this assumption no longer holds true. - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - /// The type for recording an account's balance. - type Balance = Balance; - /// The ubiquitous event type. - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; -} - -parameter_types! { - pub const TransactionBaseFee: Balance = 0; - pub const TransactionByteFee: Balance = 1; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = IdentityFee; - type FeeMultiplierUpdate = (); -} - -impl pallet_sudo::Config for Runtime { - type Event = Event; - type Call = Call; -} - -parameter_types! { - /// Authorities are changing every 5 minutes. - pub const Period: BlockNumber = bp_millau::SESSION_LENGTH; - pub const Offset: BlockNumber = 0; -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = ::AccountId; - type ValidatorIdOf = (); - type ShouldEndSession = pallet_session::PeriodicSessions; - type NextSessionRotation = pallet_session::PeriodicSessions; - type SessionManager = pallet_shift_session_manager::Pallet; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = (); - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - // This is a pretty unscientific cap. - // - // Note that once this is hit the pallet will essentially throttle incoming requests down to one - // call per block. - pub const MaxRequests: u32 = 50; - - // Number of headers to keep. - // - // Assuming the worst case of every header being finalized, we will keep headers for at least a - // week. - pub const HeadersToKeep: u32 = 7 * bp_millau::DAYS as u32; -} - -pub type RialtoGrandpaInstance = (); -impl pallet_bridge_grandpa::Config for Runtime { - type BridgedChain = bp_rialto::Rialto; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - - // TODO [#391]: Use weights generated for the Millau runtime instead of Rialto ones. - type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; -} - -pub type WestendGrandpaInstance = pallet_bridge_grandpa::Instance1; -impl pallet_bridge_grandpa::Config for Runtime { - type BridgedChain = bp_westend::Westend; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - - // TODO [#391]: Use weights generated for the Millau runtime instead of Rialto ones. - type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; -} - -impl pallet_shift_session_manager::Config for Runtime {} - -parameter_types! { - pub const MaxMessagesToPruneAtOnce: bp_messages::MessageNonce = 8; - pub const MaxUnrewardedRelayerEntriesAtInboundLane: bp_messages::MessageNonce = - bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE; - pub const MaxUnconfirmedMessagesAtInboundLane: bp_messages::MessageNonce = - bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE; - // `IdentityFee` is used by Millau => we may use weight directly - pub const GetDeliveryConfirmationTransactionFee: Balance = - bp_millau::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT as _; - pub const RootAccountForPayments: Option = None; -} - -/// Instance of the messages pallet used to relay messages to/from Rialto chain. -pub type WithRialtoMessagesInstance = pallet_bridge_messages::DefaultInstance; - -impl pallet_bridge_messages::Config for Runtime { - type Event = Event; - // TODO: https://github.com/paritytech/parity-bridges-common/issues/390 - type WeightInfo = pallet_bridge_messages::weights::RialtoWeight; - type Parameter = rialto_messages::MillauToRialtoMessagesParameter; - type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; - type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; - type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; - - type OutboundPayload = crate::rialto_messages::ToRialtoMessagePayload; - type OutboundMessageFee = Balance; - - type InboundPayload = crate::rialto_messages::FromRialtoMessagePayload; - type InboundMessageFee = bp_rialto::Balance; - type InboundRelayer = bp_rialto::AccountId; - - type AccountIdConverter = bp_millau::AccountIdConverter; - - type TargetHeaderChain = crate::rialto_messages::Rialto; - type LaneMessageVerifier = crate::rialto_messages::ToRialtoMessageVerifier; - type MessageDeliveryAndDispatchPayment = pallet_bridge_messages::instant_payments::InstantCurrencyPayments< - Runtime, - pallet_balances::Pallet, - GetDeliveryConfirmationTransactionFee, - RootAccountForPayments, - >; - type OnDeliveryConfirmed = (); - - type SourceHeaderChain = crate::rialto_messages::Rialto; - type MessageDispatch = crate::rialto_messages::FromRialtoMessageDispatch; -} - -construct_runtime!( - pub enum Runtime where - Block = Block, - NodeBlock = opaque::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - BridgeRialtoMessages: pallet_bridge_messages::{Pallet, Call, Storage, Event}, - BridgeDispatch: pallet_bridge_dispatch::{Pallet, Event}, - BridgeRialtoGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage}, - BridgeWestendGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Config, Storage}, - System: frame_system::{Pallet, Call, Config, Storage, Event}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Aura: pallet_aura::{Pallet, Config}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - Session: pallet_session::{Pallet, Call, Storage, Event, Config}, - ShiftSessionManager: pallet_shift_session_manager::{Pallet}, - } -); - -/// The address format for describing accounts. -pub type Address = AccountId; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckEra, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, -); -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = generic::CheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = - frame_executive::Executive, Runtime, AllPallets>; - -impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl sp_block_builder::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: sp_inherents::InherentData, - ) -> sp_inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Index { - System::account_nonce(account) - } - } - - impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl sp_offchain::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl sp_consensus_aura::AuraApi for Runtime { - fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) - } - - fn authorities() -> Vec { - Aura::authorities() - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> GrandpaAuthorityList { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - _authority_id: GrandpaId, - ) -> Option { - // NOTE: this is the only implementation possible since we've - // defined our key owner proof type as a bottom type (i.e. a type - // with no values). - None - } - } - - impl bp_rialto::RialtoFinalityApi for Runtime { - fn best_finalized() -> (bp_rialto::BlockNumber, bp_rialto::Hash) { - let header = BridgeRialtoGrandpa::best_finalized(); - (header.number, header.hash()) - } - - fn is_known_header(hash: bp_rialto::Hash) -> bool { - BridgeRialtoGrandpa::is_known_header(hash) - } - } - - impl bp_westend::WestendFinalityApi for Runtime { - fn best_finalized() -> (bp_westend::BlockNumber, bp_westend::Hash) { - let header = BridgeWestendGrandpa::best_finalized(); - (header.number, header.hash()) - } - - fn is_known_header(hash: bp_westend::Hash) -> bool { - BridgeWestendGrandpa::is_known_header(hash) - } - } - - impl bp_rialto::ToRialtoOutboundLaneApi for Runtime { - fn estimate_message_delivery_and_dispatch_fee( - _lane_id: bp_messages::LaneId, - payload: ToRialtoMessagePayload, - ) -> Option { - estimate_message_dispatch_and_delivery_fee::( - &payload, - WithRialtoMessageBridge::RELAYER_FEE_PERCENT, - ).ok() - } - - fn message_details( - lane: bp_messages::LaneId, - begin: bp_messages::MessageNonce, - end: bp_messages::MessageNonce, - ) -> Vec> { - (begin..=end).filter_map(|nonce| { - let message_data = BridgeRialtoMessages::outbound_message_data(lane, nonce)?; - let decoded_payload = rialto_messages::ToRialtoMessagePayload::decode( - &mut &message_data.payload[..] - ).ok()?; - Some(bp_messages::MessageDetails { - nonce, - dispatch_weight: decoded_payload.weight, - size: message_data.payload.len() as _, - delivery_and_dispatch_fee: message_data.fee, - dispatch_fee_payment: decoded_payload.dispatch_fee_payment, - }) - }) - .collect() - } - - fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeRialtoMessages::outbound_latest_received_nonce(lane) - } - - fn latest_generated_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeRialtoMessages::outbound_latest_generated_nonce(lane) - } - } - - impl bp_rialto::FromRialtoInboundLaneApi for Runtime { - fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeRialtoMessages::inbound_latest_received_nonce(lane) - } - - fn latest_confirmed_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeRialtoMessages::inbound_latest_confirmed_nonce(lane) - } - - fn unrewarded_relayers_state(lane: bp_messages::LaneId) -> bp_messages::UnrewardedRelayersState { - BridgeRialtoMessages::inbound_unrewarded_relayers_state(lane) - } - } -} - -/// Rialto account ownership digest from Millau. -/// -/// The byte vector returned by this function should be signed with a Rialto account private key. -/// This way, the owner of `millau_account_id` on Millau proves that the Rialto account private key -/// is also under his control. -pub fn millau_to_rialto_account_ownership_digest( - rialto_call: &Call, - millau_account_id: AccountId, - rialto_spec_version: SpecVersion, -) -> sp_std::vec::Vec -where - Call: codec::Encode, - AccountId: codec::Encode, - SpecVersion: codec::Encode, -{ - pallet_bridge_dispatch::account_ownership_digest( - rialto_call, - millau_account_id, - rialto_spec_version, - bp_runtime::MILLAU_CHAIN_ID, - bp_runtime::RIALTO_CHAIN_ID, - ) -} - -#[cfg(test)] -mod tests { - use super::*; - use bridge_runtime_common::messages; - - #[test] - fn ensure_millau_message_lane_weights_are_correct() { - // TODO: https://github.com/paritytech/parity-bridges-common/issues/390 - type Weights = pallet_bridge_messages::weights::RialtoWeight; - - pallet_bridge_messages::ensure_weights_are_correct::( - bp_millau::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT, - bp_millau::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT, - bp_millau::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, - bp_millau::PAY_INBOUND_DISPATCH_FEE_WEIGHT, - ); - - let max_incoming_message_proof_size = bp_rialto::EXTRA_STORAGE_PROOF_SIZE.saturating_add( - messages::target::maximal_incoming_message_size(bp_millau::max_extrinsic_size()), - ); - pallet_bridge_messages::ensure_able_to_receive_message::( - bp_millau::max_extrinsic_size(), - bp_millau::max_extrinsic_weight(), - max_incoming_message_proof_size, - messages::target::maximal_incoming_message_dispatch_weight(bp_millau::max_extrinsic_weight()), - ); - - let max_incoming_inbound_lane_data_proof_size = bp_messages::InboundLaneData::<()>::encoded_size_hint( - bp_millau::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE as _, - bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE as _, - ) - .unwrap_or(u32::MAX); - pallet_bridge_messages::ensure_able_to_receive_confirmation::( - bp_millau::max_extrinsic_size(), - bp_millau::max_extrinsic_weight(), - max_incoming_inbound_lane_data_proof_size, - bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - ); - } -} diff --git a/bridges/bin/rialto/node/Cargo.toml b/bridges/bin/rialto/node/Cargo.toml deleted file mode 100644 index 1c9ec8b5bb0a..000000000000 --- a/bridges/bin/rialto/node/Cargo.toml +++ /dev/null @@ -1,62 +0,0 @@ -[package] -name = "rialto-bridge-node" -description = "Substrate node compatible with Rialto runtime" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/parity-bridges-common/" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -jsonrpc-core = "15.1.0" -structopt = "0.3.21" -serde_json = "1.0.59" - -# Bridge dependencies - -bp-messages = { path = "../../../primitives/messages" } -bp-runtime = { path = "../../../primitives/runtime" } -bp-rialto = { path = "../../../primitives/chain-rialto" } -pallet-bridge-messages = { path = "../../../modules/messages" } -rialto-runtime = { path = "../runtime" } - -# Substrate Dependencies - - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -node-inspect = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[build-dependencies] -substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = [] -runtime-benchmarks = [ - "rialto-runtime/runtime-benchmarks", -] diff --git a/bridges/bin/rialto/node/src/chain_spec.rs b/bridges/bin/rialto/node/src/chain_spec.rs deleted file mode 100644 index 4174cda24487..000000000000 --- a/bridges/bin/rialto/node/src/chain_spec.rs +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use bp_rialto::derive_account_from_millau_id; -use rialto_runtime::{ - AccountId, AuraConfig, BalancesConfig, BridgeKovanConfig, BridgeRialtoPoaConfig, GenesisConfig, GrandpaConfig, - SessionConfig, SessionKeys, Signature, SudoConfig, SystemConfig, WASM_BINARY, -}; -use serde_json::json; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; -use sp_core::{sr25519, Pair, Public}; -use sp_finality_grandpa::AuthorityId as GrandpaId; -use sp_runtime::traits::{IdentifyAccount, Verify}; - -/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. -pub type ChainSpec = sc_service::GenericChainSpec; - -/// The chain specification option. This is expected to come in from the CLI and -/// is little more than one of a number of alternatives which can easily be converted -/// from a string (`--chain=...`) into a `ChainSpec`. -#[derive(Clone, Debug)] -pub enum Alternative { - /// Whatever the current runtime is, with just Alice as an auth. - Development, - /// Whatever the current runtime is, with simple Alice/Bob/Charlie/Dave/Eve auths. - LocalTestnet, -} - -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -type AccountPublic = ::Signer; - -/// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -/// Helper function to generate an authority key for Aura -pub fn get_authority_keys_from_seed(s: &str) -> (AccountId, AuraId, GrandpaId) { - ( - get_account_id_from_seed::(s), - get_from_seed::(s), - get_from_seed::(s), - ) -} - -impl Alternative { - /// Get an actual chain config from one of the alternatives. - pub(crate) fn load(self) -> ChainSpec { - let properties = Some( - json!({ - "tokenDecimals": 9, - "tokenSymbol": "RLT", - "bridgeIds": { - "Millau": bp_runtime::MILLAU_CHAIN_ID, - } - }) - .as_object() - .expect("Map given; qed") - .clone(), - ); - match self { - Alternative::Development => ChainSpec::from_genesis( - "Development", - "dev", - sc_service::ChainType::Development, - || { - testnet_genesis( - vec![get_authority_keys_from_seed("Alice")], - get_account_id_from_seed::("Alice"), - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Bob"), - )), - ], - true, - ) - }, - vec![], - None, - None, - properties, - None, - ), - Alternative::LocalTestnet => ChainSpec::from_genesis( - "Local Testnet", - "local_testnet", - sc_service::ChainType::Local, - || { - testnet_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - get_authority_keys_from_seed("Charlie"), - get_authority_keys_from_seed("Dave"), - get_authority_keys_from_seed("Eve"), - ], - get_account_id_from_seed::("Alice"), - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("George"), - get_account_id_from_seed::("Harry"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - get_account_id_from_seed::("George//stash"), - get_account_id_from_seed::("Harry//stash"), - pallet_bridge_messages::Pallet::< - rialto_runtime::Runtime, - pallet_bridge_messages::DefaultInstance, - >::relayer_fund_account_id(), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Alice"), - )), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Bob"), - )), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Charlie"), - )), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Dave"), - )), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Eve"), - )), - derive_account_from_millau_id(bp_runtime::SourceAccount::Account( - get_account_id_from_seed::("Ferdie"), - )), - ], - true, - ) - }, - vec![], - None, - None, - properties, - None, - ), - } - } -} - -fn session_keys(aura: AuraId, grandpa: GrandpaId) -> SessionKeys { - SessionKeys { aura, grandpa } -} - -fn testnet_genesis( - initial_authorities: Vec<(AccountId, AuraId, GrandpaId)>, - root_key: AccountId, - endowed_accounts: Vec, - _enable_println: bool, -) -> GenesisConfig { - GenesisConfig { - system: SystemConfig { - code: WASM_BINARY.expect("Rialto development WASM not available").to_vec(), - changes_trie_config: Default::default(), - }, - balances: BalancesConfig { - balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 50)).collect(), - }, - aura: AuraConfig { - authorities: Vec::new(), - }, - bridge_rialto_poa: load_rialto_poa_bridge_config(), - bridge_kovan: load_kovan_bridge_config(), - grandpa: GrandpaConfig { - authorities: Vec::new(), - }, - sudo: SudoConfig { key: root_key }, - session: SessionConfig { - keys: initial_authorities - .iter() - .map(|x| (x.0.clone(), x.0.clone(), session_keys(x.1.clone(), x.2.clone()))) - .collect::>(), - }, - } -} - -fn load_rialto_poa_bridge_config() -> BridgeRialtoPoaConfig { - BridgeRialtoPoaConfig { - initial_header: rialto_runtime::rialto_poa::genesis_header(), - initial_difficulty: 0.into(), - initial_validators: rialto_runtime::rialto_poa::genesis_validators(), - } -} - -fn load_kovan_bridge_config() -> BridgeKovanConfig { - BridgeKovanConfig { - initial_header: rialto_runtime::kovan::genesis_header(), - initial_difficulty: 0.into(), - initial_validators: rialto_runtime::kovan::genesis_validators(), - } -} - -#[test] -fn derived_dave_account_is_as_expected() { - let dave = get_account_id_from_seed::("Dave"); - let derived: AccountId = derive_account_from_millau_id(bp_runtime::SourceAccount::Account(dave)); - assert_eq!( - derived.to_string(), - "5HZhdv53gSJmWWtD8XR5Ypu4PgbT5JNWwGw2mkE75cN61w9t".to_string() - ); -} diff --git a/bridges/bin/rialto/node/src/cli.rs b/bridges/bin/rialto/node/src/cli.rs deleted file mode 100644 index 46323ed25c9e..000000000000 --- a/bridges/bin/rialto/node/src/cli.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use sc_cli::RunCmd; -use structopt::StructOpt; - -#[derive(Debug, StructOpt)] -pub struct Cli { - #[structopt(subcommand)] - pub subcommand: Option, - - #[structopt(flatten)] - pub run: RunCmd, -} - -/// Possible subcommands of the main binary. -#[derive(Debug, StructOpt)] -pub enum Subcommand { - /// Key management cli utilities - Key(sc_cli::KeySubcommand), - - /// Verify a signature for a message, provided on STDIN, with a given (public or secret) key. - Verify(sc_cli::VerifyCmd), - - /// Generate a seed that provides a vanity address. - Vanity(sc_cli::VanityCmd), - - /// Sign a message, with a given (secret) key. - Sign(sc_cli::SignCmd), - - /// Build a chain specification. - BuildSpec(sc_cli::BuildSpecCmd), - - /// Validate blocks. - CheckBlock(sc_cli::CheckBlockCmd), - - /// Export blocks. - ExportBlocks(sc_cli::ExportBlocksCmd), - - /// Export the state of a given block into a chain spec. - ExportState(sc_cli::ExportStateCmd), - - /// Import blocks. - ImportBlocks(sc_cli::ImportBlocksCmd), - - /// Remove the whole chain. - PurgeChain(sc_cli::PurgeChainCmd), - - /// Revert the chain to a previous state. - Revert(sc_cli::RevertCmd), - - /// Inspect blocks or extrinsics. - Inspect(node_inspect::cli::InspectCmd), - - /// Benchmark runtime pallets. - Benchmark(frame_benchmarking_cli::BenchmarkCmd), -} diff --git a/bridges/bin/rialto/node/src/command.rs b/bridges/bin/rialto/node/src/command.rs deleted file mode 100644 index a9930c57417e..000000000000 --- a/bridges/bin/rialto/node/src/command.rs +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::{Cli, Subcommand}; -use crate::service; -use crate::service::new_partial; -use rialto_runtime::{Block, RuntimeApi}; -use sc_cli::{ChainSpec, Role, RuntimeVersion, SubstrateCli}; -use sc_service::PartialComponents; - -impl SubstrateCli for Cli { - fn impl_name() -> String { - "Rialto Bridge Node".into() - } - - fn impl_version() -> String { - env!("CARGO_PKG_VERSION").into() - } - - fn description() -> String { - "Rialto Bridge Node".into() - } - - fn author() -> String { - "Parity Technologies".into() - } - - fn support_url() -> String { - "https://github.com/paritytech/parity-bridges-common/".into() - } - - fn copyright_start_year() -> i32 { - 2019 - } - - fn executable_name() -> String { - "rialto-bridge-node".into() - } - - fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { - &rialto_runtime::VERSION - } - - fn load_spec(&self, id: &str) -> Result, String> { - Ok(Box::new( - match id { - "" | "dev" => crate::chain_spec::Alternative::Development, - "local" => crate::chain_spec::Alternative::LocalTestnet, - _ => return Err(format!("Unsupported chain specification: {}", id)), - } - .load(), - )) - } -} - -/// Parse and run command line arguments -pub fn run() -> sc_cli::Result<()> { - let cli = Cli::from_args(); - sp_core::crypto::set_default_ss58_version(sp_core::crypto::Ss58AddressFormat::Custom( - rialto_runtime::SS58Prefix::get() as u16, - )); - - match &cli.subcommand { - Some(Subcommand::Benchmark(cmd)) => { - if cfg!(feature = "runtime-benchmarks") { - let runner = cli.create_runner(cmd)?; - - runner.sync_run(|config| cmd.run::(config)) - } else { - println!( - "Benchmarking wasn't enabled when building the node. \ - You can enable it with `--features runtime-benchmarks`." - ); - Ok(()) - } - } - Some(Subcommand::Key(cmd)) => cmd.run(&cli), - Some(Subcommand::Sign(cmd)) => cmd.run(), - Some(Subcommand::Verify(cmd)) => cmd.run(), - Some(Subcommand::Vanity(cmd)) => cmd.run(), - Some(Subcommand::BuildSpec(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) - } - Some(Subcommand::CheckBlock(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - import_queue, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, import_queue), task_manager)) - }) - } - Some(Subcommand::ExportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, task_manager, .. - } = new_partial(&config)?; - Ok((cmd.run(client, config.database), task_manager)) - }) - } - Some(Subcommand::ExportState(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, task_manager, .. - } = new_partial(&config)?; - Ok((cmd.run(client, config.chain_spec), task_manager)) - }) - } - Some(Subcommand::ImportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - import_queue, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, import_queue), task_manager)) - }) - } - Some(Subcommand::PurgeChain(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run(config.database)) - } - Some(Subcommand::Revert(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.async_run(|config| { - let PartialComponents { - client, - task_manager, - backend, - .. - } = new_partial(&config)?; - Ok((cmd.run(client, backend), task_manager)) - }) - } - Some(Subcommand::Inspect(cmd)) => { - let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| cmd.run::(config)) - } - None => { - let runner = cli.create_runner(&cli.run)?; - runner - .run_node_until_exit(|config| async move { - match config.role { - Role::Light => service::new_light(config), - _ => service::new_full(config), - } - }) - .map_err(sc_cli::Error::Service) - } - } -} diff --git a/bridges/bin/rialto/node/src/main.rs b/bridges/bin/rialto/node/src/main.rs deleted file mode 100644 index f319d1437a98..000000000000 --- a/bridges/bin/rialto/node/src/main.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rialto bridge node. - -#![warn(missing_docs)] - -mod chain_spec; -#[macro_use] -mod service; -mod cli; -mod command; - -/// Run the Rialto Node -fn main() -> sc_cli::Result<()> { - command::run() -} diff --git a/bridges/bin/rialto/node/src/service.rs b/bridges/bin/rialto/node/src/service.rs deleted file mode 100644 index 35f923c77cc9..000000000000 --- a/bridges/bin/rialto/node/src/service.rs +++ /dev/null @@ -1,483 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Service and ServiceFactory implementation. Specialized wrapper over substrate service. - -// ===================================================================================== -// ===================================================================================== -// ===================================================================================== -// UPDATE GUIDE: -// 1) replace everything with node-template/src/service.rs contents (found in main Substrate repo); -// 2) the only thing to keep from old code, is `rpc_extensions_builder` - we use our own custom RPCs; -// 3) fix compilation errors; -// 4) test :) -// ===================================================================================== -// ===================================================================================== -// ===================================================================================== - -//! Service and ServiceFactory implementation. Specialized wrapper over substrate service. - -use rialto_runtime::{self, opaque::Block, RuntimeApi}; -use sc_client_api::{ExecutorProvider, RemoteBackend}; -use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams}; -use sc_executor::native_executor_instance; -pub use sc_executor::NativeExecutor; - -use sc_keystore::LocalKeystore; -use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; -use sc_telemetry::{Telemetry, TelemetryWorker}; -use sp_consensus::SlotData; -use sp_consensus_aura::sr25519::AuthorityPair as AuraPair; -use std::{sync::Arc, time::Duration}; - -// Our native executor instance. -native_executor_instance!( - pub Executor, - rialto_runtime::api::dispatch, - rialto_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -type FullClient = sc_service::TFullClient; -type FullBackend = sc_service::TFullBackend; -type FullSelectChain = sc_consensus::LongestChain; - -#[allow(clippy::type_complexity)] -pub fn new_partial( - config: &Configuration, -) -> Result< - sc_service::PartialComponents< - FullClient, - FullBackend, - FullSelectChain, - sp_consensus::DefaultImportQueue, - sc_transaction_pool::FullPool, - ( - sc_finality_grandpa::GrandpaBlockImport, - sc_finality_grandpa::LinkHalf, - Option, - ), - >, - ServiceError, -> { - if config.keystore_remote.is_some() { - return Err(ServiceError::Other("Remote Keystores are not supported.".to_string())); - } - - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, sc_telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( - config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - let client = Arc::new(client); - - let telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = sc_transaction_pool::BasicPool::new_full( - config.transaction_pool.clone(), - config.role.is_authority().into(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - ); - - let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - telemetry.as_ref().map(|x| x.handle()), - )?; - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); - - let import_queue = sc_consensus_aura::import_queue::(ImportQueueParams { - block_import: grandpa_block_import.clone(), - justification_import: Some(Box::new(grandpa_block_import.clone())), - client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - spawner: &task_manager.spawn_essential_handle(), - can_author_with: sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), - registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - Ok(sc_service::PartialComponents { - client, - backend, - task_manager, - import_queue, - keystore_container, - select_chain, - transaction_pool, - other: (grandpa_block_import, grandpa_link, telemetry), - }) -} - -fn remote_keystore(_url: &str) -> Result, &'static str> { - // FIXME: here would the concrete keystore be built, - // must return a concrete type (NOT `LocalKeystore`) that - // implements `CryptoStore` and `SyncCryptoStore` - Err("Remote Keystore not supported.") -} - -/// Builds a new service for a full client. -pub fn new_full(mut config: Configuration) -> Result { - let sc_service::PartialComponents { - client, - backend, - mut task_manager, - import_queue, - mut keystore_container, - select_chain, - transaction_pool, - other: (block_import, grandpa_link, mut telemetry), - } = new_partial(&config)?; - - if let Some(url) = &config.keystore_remote { - match remote_keystore(url) { - Ok(k) => keystore_container.set_remote_keystore(k), - Err(e) => { - return Err(ServiceError::Other(format!( - "Error hooking up remote keystore for {}: {}", - url, e - ))) - } - }; - } - - config - .network - .extra_sets - .push(sc_finality_grandpa::grandpa_peers_set_config()); - - let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: None, - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers(&config, task_manager.spawn_handle(), client.clone(), network.clone()); - } - - let role = config.role.clone(); - let force_authoring = config.force_authoring; - let backoff_authoring_blocks: Option<()> = None; - let name = config.network.node_name.clone(); - let enable_grandpa = !config.disable_grandpa; - let prometheus_registry = config.prometheus_registry().cloned(); - - let shared_voter_state = sc_finality_grandpa::SharedVoterState::empty(); - - let rpc_extensions_builder = { - use sc_finality_grandpa::FinalityProofProvider as GrandpaFinalityProofProvider; - - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use sc_finality_grandpa_rpc::{GrandpaApi, GrandpaRpcHandler}; - use sc_rpc::DenyUnsafe; - use substrate_frame_rpc_system::{FullSystem, SystemApi}; - - let backend = backend.clone(); - let client = client.clone(); - let pool = transaction_pool.clone(); - - let justification_stream = grandpa_link.justification_stream(); - let shared_authority_set = grandpa_link.shared_authority_set().clone(); - let shared_voter_state = shared_voter_state.clone(); - - let finality_proof_provider = - GrandpaFinalityProofProvider::new_for_service(backend, Some(shared_authority_set.clone())); - - Box::new(move |_, subscription_executor| { - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with(SystemApi::to_delegate(FullSystem::new( - client.clone(), - pool.clone(), - DenyUnsafe::No, - ))); - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new( - client.clone(), - ))); - io.extend_with(GrandpaApi::to_delegate(GrandpaRpcHandler::new( - shared_authority_set.clone(), - shared_voter_state.clone(), - justification_stream.clone(), - subscription_executor, - finality_proof_provider.clone(), - ))); - - io - }) - }; - - let _rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { - network: network.clone(), - client: client.clone(), - keystore: keystore_container.sync_keystore(), - task_manager: &mut task_manager, - transaction_pool: transaction_pool.clone(), - rpc_extensions_builder, - on_demand: None, - remote_blockchain: None, - backend, - system_rpc_tx, - config, - telemetry: telemetry.as_mut(), - })?; - - if role.is_authority() { - let proposer_factory = sc_basic_authorship::ProposerFactory::new( - task_manager.spawn_handle(), - client.clone(), - transaction_pool, - prometheus_registry.as_ref(), - telemetry.as_ref().map(|x| x.handle()), - ); - - let can_author_with = sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?; - let raw_slot_duration = slot_duration.slot_duration(); - - let aura = sc_consensus_aura::start_aura::(StartAuraParams { - slot_duration, - client, - select_chain, - block_import, - proposer_factory, - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - raw_slot_duration, - ); - - Ok((timestamp, slot)) - }, - force_authoring, - backoff_authoring_blocks, - keystore: keystore_container.sync_keystore(), - can_author_with, - sync_oracle: network.clone(), - justification_sync_link: network.clone(), - block_proposal_slot_portion: SlotProportion::new(2f32 / 3f32), - max_block_proposal_slot_portion: None, - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - // the AURA authoring task is considered essential, i.e. if it - // fails we take down the service with it. - task_manager.spawn_essential_handle().spawn_blocking("aura", aura); - } - - // if the node isn't actively participating in consensus then it doesn't - // need a keystore, regardless of which protocol we use below. - let keystore = if role.is_authority() { - Some(keystore_container.sync_keystore()) - } else { - None - }; - - let grandpa_config = sc_finality_grandpa::Config { - // FIXME #1578 make this available through chainspec - gossip_duration: Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore, - local_role: role, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - if enable_grandpa { - // start the full GRANDPA voter - // NOTE: non-authorities could run the GRANDPA observer protocol, but at - // this point the full voter should provide better guarantees of block - // and vote data availability than the observer. The observer has not - // been tested extensively yet and having most nodes in a network run it - // could lead to finality stalls. - let grandpa_config = sc_finality_grandpa::GrandpaParams { - config: grandpa_config, - link: grandpa_link, - network, - voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(), - prometheus_registry, - shared_voter_state, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - // the GRANDPA voter task is considered infallible, i.e. - // if it fails we take down the service with it. - task_manager - .spawn_essential_handle() - .spawn_blocking("grandpa-voter", sc_finality_grandpa::run_grandpa_voter(grandpa_config)?); - } - - network_starter.start_network(); - Ok(task_manager) -} - -/// Builds a new service for a light client. -pub fn new_light(mut config: Configuration) -> Result { - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, sc_telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, mut task_manager, on_demand) = - sc_service::new_light_parts::( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - - let mut telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - config - .network - .extra_sets - .push(sc_finality_grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); - - let import_queue = sc_consensus_aura::import_queue::(ImportQueueParams { - block_import: grandpa_block_import.clone(), - justification_import: Some(Box::new(grandpa_block_import)), - client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - spawner: &task_manager.spawn_essential_handle(), - can_author_with: sp_consensus::NeverCanAuthor, - registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers(&config, task_manager.spawn_handle(), client.clone(), network.clone()); - } - - let enable_grandpa = !config.disable_grandpa; - if enable_grandpa { - let name = config.network.node_name.clone(); - - let config = sc_finality_grandpa::Config { - gossip_duration: std::time::Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: None, - local_role: config.role.clone(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_handle().spawn_blocking( - "grandpa-observer", - sc_finality_grandpa::run_grandpa_observer(config, grandpa_link, network.clone())?, - ); - } - - sc_service::spawn_tasks(sc_service::SpawnTasksParams { - remote_blockchain: Some(backend.remote_blockchain()), - transaction_pool, - task_manager: &mut task_manager, - on_demand: Some(on_demand), - rpc_extensions_builder: Box::new(|_, _| ()), - config, - client, - keystore: keystore_container.sync_keystore(), - backend, - network, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - network_starter.start_network(); - Ok(task_manager) -} diff --git a/bridges/bin/rialto/runtime/Cargo.toml b/bridges/bin/rialto/runtime/Cargo.toml deleted file mode 100644 index f66b8920c8a5..000000000000 --- a/bridges/bin/rialto/runtime/Cargo.toml +++ /dev/null @@ -1,132 +0,0 @@ -[package] -name = "rialto-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/parity-bridges-common/" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -hex-literal = "0.3" -libsecp256k1 = { version = "0.3.4", optional = true, default-features = false, features = ["hmac"] } -log = { version = "0.4.14", default-features = false } -serde = { version = "1.0.124", optional = true, features = ["derive"] } - -# Bridge dependencies - -bp-currency-exchange = { path = "../../../primitives/currency-exchange", default-features = false } -bp-eth-poa = { path = "../../../primitives/ethereum-poa", default-features = false } -bp-header-chain = { path = "../../../primitives/header-chain", default-features = false } -bp-message-dispatch = { path = "../../../primitives/message-dispatch", default-features = false } -bp-messages = { path = "../../../primitives/messages", default-features = false } -bp-millau = { path = "../../../primitives/chain-millau", default-features = false } -bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false } -bp-runtime = { path = "../../../primitives/runtime", default-features = false } -bridge-runtime-common = { path = "../../runtime-common", default-features = false } -pallet-bridge-currency-exchange = { path = "../../../modules/currency-exchange", default-features = false } -pallet-bridge-dispatch = { path = "../../../modules/dispatch", default-features = false } -pallet-bridge-eth-poa = { path = "../../../modules/ethereum", default-features = false } -pallet-bridge-grandpa = { path = "../../../modules/grandpa", default-features = false } -pallet-bridge-messages = { path = "../../../modules/messages", default-features = false } -pallet-shift-session-manager = { path = "../../../modules/shift-session-manager", default-features = false } - -# Substrate Dependencies - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - - -[dev-dependencies] -libsecp256k1 = { version = "0.3.4", features = ["hmac"] } - -[build-dependencies] -substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = ["std"] -std = [ - "bp-currency-exchange/std", - "bp-eth-poa/std", - "bp-header-chain/std", - "bp-message-dispatch/std", - "bp-messages/std", - "bp-millau/std", - "bp-rialto/std", - "bp-runtime/std", - "bridge-runtime-common/std", - "codec/std", - "frame-benchmarking/std", - "frame-executive/std", - "frame-support/std", - "frame-system-rpc-runtime-api/std", - "frame-system/std", - "log/std", - "pallet-aura/std", - "pallet-balances/std", - "pallet-bridge-currency-exchange/std", - "pallet-bridge-dispatch/std", - "pallet-bridge-eth-poa/std", - "pallet-bridge-grandpa/std", - "pallet-bridge-messages/std", - "pallet-grandpa/std", - "pallet-randomness-collective-flip/std", - "pallet-shift-session-manager/std", - "pallet-sudo/std", - "pallet-timestamp/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-transaction-payment/std", - "serde", - "sp-api/std", - "sp-block-builder/std", - "sp-consensus-aura/std", - "sp-core/std", - "sp-finality-grandpa/std", - "sp-inherents/std", - "sp-io/std", - "sp-offchain/std", - "sp-runtime/std", - "sp-session/std", - "sp-std/std", - "sp-transaction-pool/std", - "sp-trie/std", - "sp-version/std", -] -runtime-benchmarks = [ - "bridge-runtime-common/runtime-benchmarks", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "libsecp256k1", - "pallet-bridge-currency-exchange/runtime-benchmarks", - "pallet-bridge-eth-poa/runtime-benchmarks", - "pallet-bridge-messages/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", -] diff --git a/bridges/bin/rialto/runtime/src/benches.rs b/bridges/bin/rialto/runtime/src/benches.rs deleted file mode 100644 index 86d6b8361c63..000000000000 --- a/bridges/bin/rialto/runtime/src/benches.rs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! We want to use a different validator configuration for benchmarking than what's used in Kovan -//! or in our Rialto test network. However, we can't configure a new validator set on the fly which -//! means we need to wire the runtime together like this - -use pallet_bridge_eth_poa::{ValidatorsConfiguration, ValidatorsSource}; -use sp_std::vec; - -pub use crate::kovan::{ - genesis_header, genesis_validators, BridgeAuraConfiguration, FinalityVotesCachingInterval, PruningStrategy, -}; - -frame_support::parameter_types! { - pub BridgeValidatorsConfiguration: pallet_bridge_eth_poa::ValidatorsConfiguration = bench_validator_config(); -} - -fn bench_validator_config() -> ValidatorsConfiguration { - ValidatorsConfiguration::Multi(vec![ - (0, ValidatorsSource::List(vec![[1; 20].into()])), - (1, ValidatorsSource::Contract([3; 20].into(), vec![[1; 20].into()])), - ]) -} diff --git a/bridges/bin/rialto/runtime/src/exchange.rs b/bridges/bin/rialto/runtime/src/exchange.rs deleted file mode 100644 index a054962a79c7..000000000000 --- a/bridges/bin/rialto/runtime/src/exchange.rs +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Support for PoA -> Substrate native tokens exchange. -//! -//! If you want to exchange native PoA tokens for native Substrate -//! chain tokens, you need to: -//! 1) send some PoA tokens to `LOCK_FUNDS_ADDRESS` address on PoA chain. Data field of -//! the transaction must be SCALE-encoded id of Substrate account that will receive -//! funds on Substrate chain; -//! 2) wait until the 'lock funds' transaction is mined on PoA chain; -//! 3) wait until the block containing the 'lock funds' transaction is finalized on PoA chain; -//! 4) wait until the required PoA header and its finality are provided -//! to the PoA -> Substrate bridge module (it can be provided by you); -//! 5) receive tokens by providing proof-of-inclusion of PoA transaction. - -use bp_currency_exchange::{ - Error as ExchangeError, LockFundsTransaction, MaybeLockFundsTransaction, Result as ExchangeResult, -}; -use bp_eth_poa::{transaction_decode_rlp, RawTransaction, RawTransactionReceipt}; -use codec::{Decode, Encode}; -use frame_support::RuntimeDebug; -use hex_literal::hex; -use sp_std::vec::Vec; - -/// Ethereum address where locked PoA funds must be sent to. -pub const LOCK_FUNDS_ADDRESS: [u8; 20] = hex!("DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF"); - -/// Ethereum transaction inclusion proof. -#[derive(Clone, Encode, Decode, Eq, PartialEq, RuntimeDebug)] -pub struct EthereumTransactionInclusionProof { - /// Hash of the block with transaction. - pub block: sp_core::H256, - /// Index of the transaction within the block. - pub index: u64, - /// The proof itself (right now it is all RLP-encoded transactions of the block + - /// RLP-encoded receipts of all transactions of the block). - pub proof: Vec<(RawTransaction, RawTransactionReceipt)>, -} - -/// We uniquely identify transfer by the pair (sender, nonce). -/// -/// The assumption is that this pair will never appear more than once in -/// transactions included into finalized blocks. This is obviously true -/// for any existing eth-like chain (that keep current tx format), because -/// otherwise transaction can be replayed over and over. -#[derive(Encode, Decode, PartialEq, RuntimeDebug)] -pub struct EthereumTransactionTag { - /// Account that has locked funds. - pub account: [u8; 20], - /// Lock transaction nonce. - pub nonce: sp_core::U256, -} - -/// Eth transaction from runtime perspective. -pub struct EthTransaction; - -impl MaybeLockFundsTransaction for EthTransaction { - type Transaction = RawTransaction; - type Id = EthereumTransactionTag; - type Recipient = crate::AccountId; - type Amount = crate::Balance; - - fn parse( - raw_tx: &Self::Transaction, - ) -> ExchangeResult> { - let tx = transaction_decode_rlp(raw_tx).map_err(|_| ExchangeError::InvalidTransaction)?; - - // we only accept transactions sending funds directly to the pre-configured address - if tx.unsigned.to != Some(LOCK_FUNDS_ADDRESS.into()) { - log::trace!( - target: "runtime", - "Failed to parse fund locks transaction. Invalid peer recipient: {:?}", - tx.unsigned.to, - ); - - return Err(ExchangeError::InvalidTransaction); - } - - let mut recipient_raw = sp_core::H256::default(); - match tx.unsigned.payload.len() { - 32 => recipient_raw.as_fixed_bytes_mut().copy_from_slice(&tx.unsigned.payload), - len => { - log::trace!( - target: "runtime", - "Failed to parse fund locks transaction. Invalid recipient length: {}", - len, - ); - - return Err(ExchangeError::InvalidRecipient); - } - } - let amount = tx.unsigned.value.low_u128(); - - if tx.unsigned.value != amount.into() { - log::trace!( - target: "runtime", - "Failed to parse fund locks transaction. Invalid amount: {}", - tx.unsigned.value, - ); - - return Err(ExchangeError::InvalidAmount); - } - - Ok(LockFundsTransaction { - id: EthereumTransactionTag { - account: *tx.sender.as_fixed_bytes(), - nonce: tx.unsigned.nonce, - }, - recipient: crate::AccountId::from(*recipient_raw.as_fixed_bytes()), - amount, - }) - } -} - -/// Prepares everything required to bench claim of funds locked by given transaction. -#[cfg(feature = "runtime-benchmarks")] -pub(crate) fn prepare_environment_for_claim, I: frame_support::traits::Instance>( - transactions: &[(RawTransaction, RawTransactionReceipt)], -) -> bp_eth_poa::H256 { - use bp_eth_poa::compute_merkle_root; - use pallet_bridge_eth_poa::{ - test_utils::{insert_dummy_header, validator_utils::validator, HeaderBuilder}, - BridgeStorage, Storage, - }; - - let mut storage = BridgeStorage::::new(); - let header = HeaderBuilder::with_parent_number_on_runtime::(0) - .transactions_root(compute_merkle_root(transactions.iter().map(|(tx, _)| tx))) - .receipts_root(compute_merkle_root(transactions.iter().map(|(_, receipt)| receipt))) - .sign_by(&validator(0)); - let header_id = header.compute_id(); - insert_dummy_header(&mut storage, header); - storage.finalize_and_prune_headers(Some(header_id), 0); - - header_id.hash -} - -/// Prepare signed ethereum lock-funds transaction. -#[cfg(any(feature = "runtime-benchmarks", test))] -pub(crate) fn prepare_ethereum_transaction( - recipient: &crate::AccountId, - editor: impl Fn(&mut bp_eth_poa::UnsignedTransaction), -) -> (RawTransaction, RawTransactionReceipt) { - use bp_eth_poa::{signatures::SignTransaction, Receipt, TransactionOutcome}; - - // prepare tx for OpenEthereum private dev chain: - // chain id is 0x11 - // sender secret is 0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7 - let chain_id = 0x11; - let signer = secp256k1::SecretKey::parse(&hex!( - "4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7" - )) - .unwrap(); - let recipient_raw: &[u8; 32] = recipient.as_ref(); - let mut eth_tx = bp_eth_poa::UnsignedTransaction { - nonce: 0.into(), - to: Some(LOCK_FUNDS_ADDRESS.into()), - value: 100.into(), - gas: 100_000.into(), - gas_price: 100_000.into(), - payload: recipient_raw.to_vec(), - }; - editor(&mut eth_tx); - ( - eth_tx.sign_by(&signer, Some(chain_id)), - Receipt { - outcome: TransactionOutcome::StatusCode(1), - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp(), - ) -} - -#[cfg(test)] -mod tests { - use super::*; - use hex_literal::hex; - - fn ferdie() -> crate::AccountId { - hex!("1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c").into() - } - - #[test] - fn valid_transaction_accepted() { - assert_eq!( - EthTransaction::parse(&prepare_ethereum_transaction(&ferdie(), |_| {}).0), - Ok(LockFundsTransaction { - id: EthereumTransactionTag { - account: hex!("00a329c0648769a73afac7f9381e08fb43dbea72"), - nonce: 0.into(), - }, - recipient: ferdie(), - amount: 100, - }), - ); - } - - #[test] - fn invalid_transaction_rejected() { - assert_eq!( - EthTransaction::parse(&Vec::new()), - Err(ExchangeError::InvalidTransaction), - ); - } - - #[test] - fn transaction_with_invalid_peer_recipient_rejected() { - assert_eq!( - EthTransaction::parse( - &prepare_ethereum_transaction(&ferdie(), |tx| { - tx.to = None; - }) - .0 - ), - Err(ExchangeError::InvalidTransaction), - ); - } - - #[test] - fn transaction_with_invalid_recipient_rejected() { - assert_eq!( - EthTransaction::parse( - &prepare_ethereum_transaction(&ferdie(), |tx| { - tx.payload.clear(); - }) - .0 - ), - Err(ExchangeError::InvalidRecipient), - ); - } - - #[test] - fn transaction_with_invalid_amount_rejected() { - assert_eq!( - EthTransaction::parse( - &prepare_ethereum_transaction(&ferdie(), |tx| { - tx.value = sp_core::U256::from(u128::max_value()) + sp_core::U256::from(1); - }) - .0 - ), - Err(ExchangeError::InvalidAmount), - ); - } -} diff --git a/bridges/bin/rialto/runtime/src/kovan.rs b/bridges/bin/rialto/runtime/src/kovan.rs deleted file mode 100644 index 03b0ca8a0716..000000000000 --- a/bridges/bin/rialto/runtime/src/kovan.rs +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::exchange::EthereumTransactionInclusionProof; - -use bp_eth_poa::{Address, AuraHeader, RawTransaction, U256}; -use bp_header_chain::InclusionProofVerifier; -use frame_support::RuntimeDebug; -use hex_literal::hex; -use pallet_bridge_eth_poa::{ - AuraConfiguration, ChainTime as TChainTime, PruningStrategy as BridgePruningStrategy, ValidatorsConfiguration, - ValidatorsSource, -}; -use sp_std::prelude::*; - -frame_support::parameter_types! { - pub const FinalityVotesCachingInterval: Option = Some(16); - pub BridgeAuraConfiguration: AuraConfiguration = - kovan_aura_configuration(); - pub BridgeValidatorsConfiguration: ValidatorsConfiguration = - kovan_validators_configuration(); -} - -/// Max number of finalized headers to keep. It is equivalent of ~24 hours of -/// finalized blocks on current Kovan chain. -const FINALIZED_HEADERS_TO_KEEP: u64 = 20_000; - -/// Aura engine configuration for Kovan chain. -pub fn kovan_aura_configuration() -> AuraConfiguration { - AuraConfiguration { - empty_steps_transition: u64::max_value(), - strict_empty_steps_transition: 0, - validate_step_transition: 0x16e360, - validate_score_transition: 0x41a3c4, - two_thirds_majority_transition: u64::max_value(), - min_gas_limit: 0x1388.into(), - max_gas_limit: U256::max_value(), - maximum_extra_data_size: 0x20, - } -} - -/// Validators configuration for Kovan chain. -pub fn kovan_validators_configuration() -> ValidatorsConfiguration { - ValidatorsConfiguration::Multi(vec![ - (0, ValidatorsSource::List(genesis_validators())), - ( - 10960440, - ValidatorsSource::List(vec![ - hex!("00D6Cc1BA9cf89BD2e58009741f4F7325BAdc0ED").into(), - hex!("0010f94b296a852aaac52ea6c5ac72e03afd032d").into(), - hex!("00a0a24b9f0e5ec7aa4c7389b8302fd0123194de").into(), - ]), - ), - ( - 10960500, - ValidatorsSource::Contract( - hex!("aE71807C1B0a093cB1547b682DC78316D945c9B8").into(), - vec![ - hex!("d05f7478c6aa10781258c5cc8b4f385fc8fa989c").into(), - hex!("03801efb0efe2a25ede5dd3a003ae880c0292e4d").into(), - hex!("a4df255ecf08bbf2c28055c65225c9a9847abd94").into(), - hex!("596e8221a30bfe6e7eff67fee664a01c73ba3c56").into(), - hex!("faadface3fbd81ce37b0e19c0b65ff4234148132").into(), - ], - ), - ), - ]) -} - -/// Genesis validators set of Kovan chain. -pub fn genesis_validators() -> Vec
{ - vec![ - hex!("00D6Cc1BA9cf89BD2e58009741f4F7325BAdc0ED").into(), - hex!("00427feae2419c15b89d1c21af10d1b6650a4d3d").into(), - hex!("4Ed9B08e6354C70fE6F8CB0411b0d3246b424d6c").into(), - hex!("0020ee4Be0e2027d76603cB751eE069519bA81A1").into(), - hex!("0010f94b296a852aaac52ea6c5ac72e03afd032d").into(), - hex!("007733a1FE69CF3f2CF989F81C7b4cAc1693387A").into(), - hex!("00E6d2b931F55a3f1701c7389d592a7778897879").into(), - hex!("00e4a10650e5a6D6001C38ff8E64F97016a1645c").into(), - hex!("00a0a24b9f0e5ec7aa4c7389b8302fd0123194de").into(), - ] -} - -/// Genesis header of the Kovan chain. -pub fn genesis_header() -> AuraHeader { - AuraHeader { - parent_hash: Default::default(), - timestamp: 0, - number: 0, - author: Default::default(), - transactions_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), - uncles_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - extra_data: vec![], - state_root: hex!("2480155b48a1cea17d67dbfdfaafe821c1d19cdd478c5358e8ec56dec24502b2").into(), - receipts_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), - log_bloom: Default::default(), - gas_used: Default::default(), - gas_limit: 6000000.into(), - difficulty: 131072.into(), - seal: vec![ - vec![128], - vec![ - 184, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ], - ], - } -} - -/// Kovan headers pruning strategy. -/// -/// We do not prune unfinalized headers because exchange module only accepts -/// claims from finalized headers. And if we're pruning unfinalized headers, then -/// some claims may never be accepted. -#[derive(Default, RuntimeDebug)] -pub struct PruningStrategy; - -impl BridgePruningStrategy for PruningStrategy { - fn pruning_upper_bound(&mut self, _best_number: u64, best_finalized_number: u64) -> u64 { - best_finalized_number.saturating_sub(FINALIZED_HEADERS_TO_KEEP) - } -} - -/// PoA Header timestamp verification against `Timestamp` pallet. -#[derive(Default, RuntimeDebug)] -pub struct ChainTime; - -impl TChainTime for ChainTime { - fn is_timestamp_ahead(&self, timestamp: u64) -> bool { - let now = super::Timestamp::now(); - timestamp > now - } -} - -/// The Kovan Blockchain as seen by the runtime. -pub struct KovanBlockchain; - -impl InclusionProofVerifier for KovanBlockchain { - type Transaction = RawTransaction; - type TransactionInclusionProof = EthereumTransactionInclusionProof; - - fn verify_transaction_inclusion_proof(proof: &Self::TransactionInclusionProof) -> Option { - let is_transaction_finalized = - crate::BridgeKovan::verify_transaction_finalized(proof.block, proof.index, &proof.proof); - - if !is_transaction_finalized { - return None; - } - - proof.proof.get(proof.index as usize).map(|(tx, _)| tx.clone()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn pruning_strategy_keeps_enough_headers() { - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 10_000), - 0, - "10_000 <= 20_000 => nothing should be pruned yet", - ); - - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 20_000), - 0, - "20_000 <= 20_000 => nothing should be pruned yet", - ); - - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 30_000), - 10_000, - "20_000 <= 30_000 => we're ready to prune first 10_000 headers", - ); - } -} diff --git a/bridges/bin/rialto/runtime/src/lib.rs b/bridges/bin/rialto/runtime/src/lib.rs deleted file mode 100644 index 219feda64693..000000000000 --- a/bridges/bin/rialto/runtime/src/lib.rs +++ /dev/null @@ -1,1192 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! The Rialto runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] -// Runtime-generated enums -#![allow(clippy::large_enum_variant)] -// Runtime-generated DecodeLimit::decode_all_With_depth_limit -#![allow(clippy::unnecessary_mut_passed)] -// From construct_runtime macro -#![allow(clippy::from_over_into)] - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -pub mod exchange; - -#[cfg(feature = "runtime-benchmarks")] -pub mod benches; -pub mod kovan; -pub mod millau_messages; -pub mod rialto_poa; - -use crate::millau_messages::{ToMillauMessagePayload, WithMillauMessageBridge}; - -use bridge_runtime_common::messages::{source::estimate_message_dispatch_and_delivery_fee, MessageBridge}; -use codec::Decode; -use pallet_grandpa::{fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList}; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use sp_api::impl_runtime_apis; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; -use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; -use sp_runtime::traits::{Block as BlockT, IdentityLookup, NumberFor, OpaqueKeys}; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - transaction_validity::{TransactionSource, TransactionValidity}, - ApplyExtrinsicResult, MultiSignature, MultiSigner, -}; -use sp_std::prelude::*; -#[cfg(feature = "std")] -use sp_version::NativeVersion; -use sp_version::RuntimeVersion; - -// A few exports that help ease life for downstream crates. -pub use frame_support::{ - construct_runtime, parameter_types, - traits::{Currency, ExistenceRequirement, Imbalance, KeyOwnerProofSystem}, - weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, RuntimeDbWeight, Weight}, - StorageValue, -}; - -pub use frame_system::Call as SystemCall; -pub use pallet_balances::Call as BalancesCall; -pub use pallet_bridge_currency_exchange::Call as BridgeCurrencyExchangeCall; -pub use pallet_bridge_eth_poa::Call as BridgeEthPoACall; -pub use pallet_bridge_grandpa::Call as BridgeGrandpaMillauCall; -pub use pallet_bridge_messages::Call as MessagesCall; -pub use pallet_sudo::Call as SudoCall; -pub use pallet_timestamp::Call as TimestampCall; - -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use sp_runtime::{Perbill, Permill}; - -/// An index to a block. -pub type BlockNumber = bp_rialto::BlockNumber; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = bp_rialto::Signature; - -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = bp_rialto::AccountId; - -/// The type for looking up accounts. We don't expect more than 4 billion of them, but you -/// never know... -pub type AccountIndex = u32; - -/// Balance of an account. -pub type Balance = bp_rialto::Balance; - -/// Index of a transaction in the chain. -pub type Index = u32; - -/// A hash of some data used by the chain. -pub type Hash = bp_rialto::Hash; - -/// Hashing algorithm used by the chain. -pub type Hashing = bp_rialto::Hasher; - -/// Digest item type. -pub type DigestItem = generic::DigestItem; - -/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know -/// the specifics of the runtime. They can then be made to be agnostic over specific formats -/// of data like extrinsics, allowing for them to continue syncing the network through upgrades -/// to even the core data structures. -pub mod opaque { - use super::*; - - pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic; - - /// Opaque block header type. - pub type Header = generic::Header; - /// Opaque block type. - pub type Block = generic::Block; - /// Opaque block identifier type. - pub type BlockId = generic::BlockId; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub aura: Aura, - pub grandpa: Grandpa, - } -} - -/// This runtime version. -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("rialto-runtime"), - impl_name: create_runtime_str!("rialto-runtime"), - authoring_version: 1, - spec_version: 1, - impl_version: 1, - apis: RUNTIME_API_VERSIONS, - transaction_version: 1, -}; - -/// The version information used to identify this runtime when compiled natively. -#[cfg(feature = "std")] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -parameter_types! { - pub const BlockHashCount: BlockNumber = 250; - pub const Version: RuntimeVersion = VERSION; - pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { - read: 60_000_000, // ~0.06 ms = ~60 µs - write: 200_000_000, // ~0.2 ms = 200 µs - }; - pub const SS58Prefix: u8 = 48; -} - -impl frame_system::Config for Runtime { - /// The basic call filter to use in dispatchable. - type BaseCallFilter = (); - /// The identifier used to distinguish between accounts. - type AccountId = AccountId; - /// The aggregated dispatch type that is available for extrinsics. - type Call = Call; - /// The lookup mechanism to get account ID from whatever is passed in dispatchers. - type Lookup = IdentityLookup; - /// The index type for storing how many extrinsics an account has signed. - type Index = Index; - /// The index type for blocks. - type BlockNumber = BlockNumber; - /// The type for hashing blocks and tries. - type Hash = Hash; - /// The hashing algorithm used. - type Hashing = Hashing; - /// The header type. - type Header = generic::Header; - /// The ubiquitous event type. - type Event = Event; - /// The ubiquitous origin type. - type Origin = Origin; - /// Maximum number of block number to block hash mappings to keep (oldest pruned first). - type BlockHashCount = BlockHashCount; - /// Version of the runtime. - type Version = Version; - /// Provides information about the pallet setup in the runtime. - type PalletInfo = PalletInfo; - /// What to do if a new account is created. - type OnNewAccount = (); - /// What to do if an account is fully reaped from the system. - type OnKilledAccount = (); - /// The data to be stored in an account. - type AccountData = pallet_balances::AccountData; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - /// Weight information for the extrinsics of this pallet. - type SystemWeightInfo = (); - /// Block and extrinsics weights: base values and limits. - type BlockWeights = bp_rialto::BlockWeights; - /// The maximum length of a block (in bytes). - type BlockLength = bp_rialto::BlockLength; - /// The weight of database operations that the runtime can invoke. - type DbWeight = DbWeight; - /// The designated SS58 prefix of this chain. - type SS58Prefix = SS58Prefix; - /// The set code logic, just the default since we're not a parachain. - type OnSetCode = (); -} - -impl pallet_randomness_collective_flip::Config for Runtime {} - -impl pallet_aura::Config for Runtime { - type AuthorityId = AuraId; -} - -type RialtoPoA = pallet_bridge_eth_poa::Instance1; -impl pallet_bridge_eth_poa::Config for Runtime { - type AuraConfiguration = rialto_poa::BridgeAuraConfiguration; - type FinalityVotesCachingInterval = rialto_poa::FinalityVotesCachingInterval; - type ValidatorsConfiguration = rialto_poa::BridgeValidatorsConfiguration; - type PruningStrategy = rialto_poa::PruningStrategy; - type ChainTime = rialto_poa::ChainTime; - type OnHeadersSubmitted = (); -} - -type Kovan = pallet_bridge_eth_poa::Instance2; -impl pallet_bridge_eth_poa::Config for Runtime { - type AuraConfiguration = kovan::BridgeAuraConfiguration; - type FinalityVotesCachingInterval = kovan::FinalityVotesCachingInterval; - type ValidatorsConfiguration = kovan::BridgeValidatorsConfiguration; - type PruningStrategy = kovan::PruningStrategy; - type ChainTime = kovan::ChainTime; - type OnHeadersSubmitted = (); -} - -type RialtoCurrencyExchange = pallet_bridge_currency_exchange::Instance1; -impl pallet_bridge_currency_exchange::Config for Runtime { - type OnTransactionSubmitted = (); - type PeerBlockchain = rialto_poa::RialtoBlockchain; - type PeerMaybeLockFundsTransaction = exchange::EthTransaction; - type RecipientsMap = bp_currency_exchange::IdentityRecipients; - type Amount = Balance; - type CurrencyConverter = bp_currency_exchange::IdentityCurrencyConverter; - type DepositInto = DepositInto; -} - -type KovanCurrencyExchange = pallet_bridge_currency_exchange::Instance2; -impl pallet_bridge_currency_exchange::Config for Runtime { - type OnTransactionSubmitted = (); - type PeerBlockchain = kovan::KovanBlockchain; - type PeerMaybeLockFundsTransaction = exchange::EthTransaction; - type RecipientsMap = bp_currency_exchange::IdentityRecipients; - type Amount = Balance; - type CurrencyConverter = bp_currency_exchange::IdentityCurrencyConverter; - type DepositInto = DepositInto; -} - -impl pallet_bridge_dispatch::Config for Runtime { - type Event = Event; - type MessageId = (bp_messages::LaneId, bp_messages::MessageNonce); - type Call = Call; - type CallFilter = (); - type EncodedCall = crate::millau_messages::FromMillauEncodedCall; - type SourceChainAccountId = bp_millau::AccountId; - type TargetChainAccountPublic = MultiSigner; - type TargetChainSignature = MultiSignature; - type AccountIdConverter = bp_rialto::AccountIdConverter; -} - -pub struct DepositInto; - -impl bp_currency_exchange::DepositInto for DepositInto { - type Recipient = AccountId; - type Amount = Balance; - - fn deposit_into(recipient: Self::Recipient, amount: Self::Amount) -> bp_currency_exchange::Result<()> { - // let balances module make all checks for us (it won't allow depositing lower than existential - // deposit, balance overflow, ...) - let deposited = as Currency>::deposit_creating(&recipient, amount); - - // I'm dropping deposited here explicitly to illustrate the fact that it'll update `TotalIssuance` - // on drop - let deposited_amount = deposited.peek(); - drop(deposited); - - // we have 3 cases here: - // - deposited == amount: success - // - deposited == 0: deposit has failed and no changes to storage were made - // - deposited != 0: (should never happen in practice) deposit has been partially completed - match deposited_amount { - _ if deposited_amount == amount => { - log::trace!( - target: "runtime", - "Deposited {} to {:?}", - amount, - recipient, - ); - - Ok(()) - } - _ if deposited_amount == 0 => { - log::error!( - target: "runtime", - "Deposit of {} to {:?} has failed", - amount, - recipient, - ); - - Err(bp_currency_exchange::Error::DepositFailed) - } - _ => { - log::error!( - target: "runtime", - "Deposit of {} to {:?} has partially competed. {} has been deposited", - amount, - recipient, - deposited_amount, - ); - - // we can't return DepositFailed error here, because storage changes were made - Err(bp_currency_exchange::Error::DepositPartiallyFailed) - } - } - } -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - type KeyOwnerProofSystem = (); - type KeyOwnerProof = >::Proof; - type KeyOwnerIdentification = - >::IdentificationTuple; - type HandleEquivocation = (); - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - pub const MinimumPeriod: u64 = bp_rialto::SLOT_DURATION / 2; -} - -impl pallet_timestamp::Config for Runtime { - /// A timestamp: milliseconds since the unix epoch. - type Moment = u64; - type OnTimestampSet = Aura; - type MinimumPeriod = MinimumPeriod; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - pub const ExistentialDeposit: bp_rialto::Balance = 500; - // For weight estimation, we assume that the most locks on an individual account will be 50. - // This number may need to be adjusted in the future if this assumption no longer holds true. - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - /// The type for recording an account's balance. - type Balance = Balance; - /// The ubiquitous event type. - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; -} - -parameter_types! { - pub const TransactionBaseFee: Balance = 0; - pub const TransactionByteFee: Balance = 1; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = IdentityFee; - type FeeMultiplierUpdate = (); -} - -impl pallet_sudo::Config for Runtime { - type Event = Event; - type Call = Call; -} - -parameter_types! { - pub const Period: BlockNumber = bp_rialto::SESSION_LENGTH; - pub const Offset: BlockNumber = 0; -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = ::AccountId; - type ValidatorIdOf = (); - type ShouldEndSession = pallet_session::PeriodicSessions; - type NextSessionRotation = pallet_session::PeriodicSessions; - type SessionManager = pallet_shift_session_manager::Pallet; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = (); - // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - type WeightInfo = (); -} - -parameter_types! { - /// This is a pretty unscientific cap. - /// - /// Note that once this is hit the pallet will essentially throttle incoming requests down to one - /// call per block. - pub const MaxRequests: u32 = 50; -} - -#[cfg(feature = "runtime-benchmarks")] -parameter_types! { - /// Number of headers to keep in benchmarks. - /// - /// In benchmarks we always populate with full number of `HeadersToKeep` to make sure that - /// pruning is taken into account. - /// - /// Note: This is lower than regular value, to speed up benchmarking setup. - pub const HeadersToKeep: u32 = 1024; -} - -#[cfg(not(feature = "runtime-benchmarks"))] -parameter_types! { - /// Number of headers to keep. - /// - /// Assuming the worst case of every header being finalized, we will keep headers at least for a - /// week. - pub const HeadersToKeep: u32 = 7 * bp_rialto::DAYS as u32; -} - -pub type MillauGrandpaInstance = (); -impl pallet_bridge_grandpa::Config for Runtime { - type BridgedChain = bp_millau::Millau; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; -} - -impl pallet_shift_session_manager::Config for Runtime {} - -parameter_types! { - pub const MaxMessagesToPruneAtOnce: bp_messages::MessageNonce = 8; - pub const MaxUnrewardedRelayerEntriesAtInboundLane: bp_messages::MessageNonce = - bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE; - pub const MaxUnconfirmedMessagesAtInboundLane: bp_messages::MessageNonce = - bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE; - // `IdentityFee` is used by Rialto => we may use weight directly - pub const GetDeliveryConfirmationTransactionFee: Balance = - bp_rialto::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT as _; - pub const RootAccountForPayments: Option = None; -} - -/// Instance of the messages pallet used to relay messages to/from Millau chain. -pub type WithMillauMessagesInstance = pallet_bridge_messages::DefaultInstance; - -impl pallet_bridge_messages::Config for Runtime { - type Event = Event; - type WeightInfo = pallet_bridge_messages::weights::RialtoWeight; - type Parameter = millau_messages::RialtoToMillauMessagesParameter; - type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; - type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; - type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; - - type OutboundPayload = crate::millau_messages::ToMillauMessagePayload; - type OutboundMessageFee = Balance; - - type InboundPayload = crate::millau_messages::FromMillauMessagePayload; - type InboundMessageFee = bp_millau::Balance; - type InboundRelayer = bp_millau::AccountId; - - type AccountIdConverter = bp_rialto::AccountIdConverter; - - type TargetHeaderChain = crate::millau_messages::Millau; - type LaneMessageVerifier = crate::millau_messages::ToMillauMessageVerifier; - type MessageDeliveryAndDispatchPayment = pallet_bridge_messages::instant_payments::InstantCurrencyPayments< - Runtime, - pallet_balances::Pallet, - GetDeliveryConfirmationTransactionFee, - RootAccountForPayments, - >; - type OnDeliveryConfirmed = (); - - type SourceHeaderChain = crate::millau_messages::Millau; - type MessageDispatch = crate::millau_messages::FromMillauMessageDispatch; -} - -construct_runtime!( - pub enum Runtime where - Block = Block, - NodeBlock = opaque::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - BridgeRialtoPoa: pallet_bridge_eth_poa::::{Pallet, Call, Config, Storage, ValidateUnsigned}, - BridgeKovan: pallet_bridge_eth_poa::::{Pallet, Call, Config, Storage, ValidateUnsigned}, - BridgeRialtoCurrencyExchange: pallet_bridge_currency_exchange::::{Pallet, Call}, - BridgeKovanCurrencyExchange: pallet_bridge_currency_exchange::::{Pallet, Call}, - BridgeMillauGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage}, - BridgeDispatch: pallet_bridge_dispatch::{Pallet, Event}, - BridgeMillauMessages: pallet_bridge_messages::{Pallet, Call, Storage, Event}, - System: frame_system::{Pallet, Call, Config, Storage, Event}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Aura: pallet_aura::{Pallet, Config}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - Sudo: pallet_sudo::{Pallet, Call, Config, Storage, Event}, - Session: pallet_session::{Pallet, Call, Storage, Event, Config}, - ShiftSessionManager: pallet_shift_session_manager::{Pallet}, - } -); - -/// The address format for describing accounts. -pub type Address = AccountId; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckEra, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, -); -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = generic::CheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = - frame_executive::Executive, Runtime, AllPallets>; - -impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl sp_block_builder::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: sp_inherents::InherentData, - ) -> sp_inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Index { - System::account_nonce(account) - } - } - - impl bp_eth_poa::RialtoPoAHeaderApi for Runtime { - fn best_block() -> (u64, bp_eth_poa::H256) { - let best_block = BridgeRialtoPoa::best_block(); - (best_block.number, best_block.hash) - } - - fn finalized_block() -> (u64, bp_eth_poa::H256) { - let finalized_block = BridgeRialtoPoa::finalized_block(); - (finalized_block.number, finalized_block.hash) - } - - fn is_import_requires_receipts(header: bp_eth_poa::AuraHeader) -> bool { - BridgeRialtoPoa::is_import_requires_receipts(header) - } - - fn is_known_block(hash: bp_eth_poa::H256) -> bool { - BridgeRialtoPoa::is_known_block(hash) - } - } - - impl bp_eth_poa::KovanHeaderApi for Runtime { - fn best_block() -> (u64, bp_eth_poa::H256) { - let best_block = BridgeKovan::best_block(); - (best_block.number, best_block.hash) - } - - fn finalized_block() -> (u64, bp_eth_poa::H256) { - let finalized_block = BridgeKovan::finalized_block(); - (finalized_block.number, finalized_block.hash) - } - - fn is_import_requires_receipts(header: bp_eth_poa::AuraHeader) -> bool { - BridgeKovan::is_import_requires_receipts(header) - } - - fn is_known_block(hash: bp_eth_poa::H256) -> bool { - BridgeKovan::is_known_block(hash) - } - } - - impl bp_millau::MillauFinalityApi for Runtime { - fn best_finalized() -> (bp_millau::BlockNumber, bp_millau::Hash) { - let header = BridgeMillauGrandpa::best_finalized(); - (header.number, header.hash()) - } - - fn is_known_header(hash: bp_millau::Hash) -> bool { - BridgeMillauGrandpa::is_known_header(hash) - } - } - - impl bp_currency_exchange::RialtoCurrencyExchangeApi for Runtime { - fn filter_transaction_proof(proof: exchange::EthereumTransactionInclusionProof) -> bool { - BridgeRialtoCurrencyExchange::filter_transaction_proof(&proof) - } - } - - impl bp_currency_exchange::KovanCurrencyExchangeApi for Runtime { - fn filter_transaction_proof(proof: exchange::EthereumTransactionInclusionProof) -> bool { - BridgeKovanCurrencyExchange::filter_transaction_proof(&proof) - } - } - - impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl sp_offchain::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl sp_consensus_aura::AuraApi for Runtime { - fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) - } - - fn authorities() -> Vec { - Aura::authorities() - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> GrandpaAuthorityList { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - _authority_id: GrandpaId, - ) -> Option { - // NOTE: this is the only implementation possible since we've - // defined our key owner proof type as a bottom type (i.e. a type - // with no values). - None - } - } - - impl bp_millau::ToMillauOutboundLaneApi for Runtime { - fn estimate_message_delivery_and_dispatch_fee( - _lane_id: bp_messages::LaneId, - payload: ToMillauMessagePayload, - ) -> Option { - estimate_message_dispatch_and_delivery_fee::( - &payload, - WithMillauMessageBridge::RELAYER_FEE_PERCENT, - ).ok() - } - - fn message_details( - lane: bp_messages::LaneId, - begin: bp_messages::MessageNonce, - end: bp_messages::MessageNonce, - ) -> Vec> { - (begin..=end).filter_map(|nonce| { - let message_data = BridgeMillauMessages::outbound_message_data(lane, nonce)?; - let decoded_payload = millau_messages::ToMillauMessagePayload::decode( - &mut &message_data.payload[..] - ).ok()?; - Some(bp_messages::MessageDetails { - nonce, - dispatch_weight: decoded_payload.weight, - size: message_data.payload.len() as _, - delivery_and_dispatch_fee: message_data.fee, - dispatch_fee_payment: decoded_payload.dispatch_fee_payment, - }) - }) - .collect() - } - - fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeMillauMessages::outbound_latest_received_nonce(lane) - } - - fn latest_generated_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeMillauMessages::outbound_latest_generated_nonce(lane) - } - } - - impl bp_millau::FromMillauInboundLaneApi for Runtime { - fn latest_received_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeMillauMessages::inbound_latest_received_nonce(lane) - } - - fn latest_confirmed_nonce(lane: bp_messages::LaneId) -> bp_messages::MessageNonce { - BridgeMillauMessages::inbound_latest_confirmed_nonce(lane) - } - - fn unrewarded_relayers_state(lane: bp_messages::LaneId) -> bp_messages::UnrewardedRelayersState { - BridgeMillauMessages::inbound_unrewarded_relayers_state(lane) - } - } - - #[cfg(feature = "runtime-benchmarks")] - impl frame_benchmarking::Benchmark for Runtime { - fn dispatch_benchmark( - config: frame_benchmarking::BenchmarkConfig, - ) -> Result, sp_runtime::RuntimeString> { - use frame_benchmarking::{Benchmarking, BenchmarkBatch, TrackedStorageKey, add_benchmark}; - - let whitelist: Vec = vec![ - // Block Number - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), - // Execution Phase - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), - // Event Count - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), - // System Events - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), - // Caller 0 Account - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da946c154ffd9992e395af90b5b13cc6f295c77033fce8a9045824a6690bbf99c6db269502f0a8d1d2a008542d5690a0749").to_vec().into(), - ]; - - let mut batches = Vec::::new(); - let params = (&config, &whitelist); - - use pallet_bridge_currency_exchange::benchmarking::{ - Pallet as BridgeCurrencyExchangeBench, - Config as BridgeCurrencyExchangeConfig, - ProofParams as BridgeCurrencyExchangeProofParams, - }; - - impl BridgeCurrencyExchangeConfig for Runtime { - fn make_proof( - proof_params: BridgeCurrencyExchangeProofParams, - ) -> crate::exchange::EthereumTransactionInclusionProof { - use bp_currency_exchange::DepositInto; - - if proof_params.recipient_exists { - >::DepositInto::deposit_into( - proof_params.recipient.clone(), - ExistentialDeposit::get(), - ).unwrap(); - } - - let (transaction, receipt) = crate::exchange::prepare_ethereum_transaction( - &proof_params.recipient, - |tx| { - // our runtime only supports transactions where data is exactly 32 bytes long - // (receiver key) - // => we are ignoring `transaction_size_factor` here - tx.value = (ExistentialDeposit::get() * 10).into(); - }, - ); - let transactions = sp_std::iter::repeat((transaction, receipt)) - .take(1 + proof_params.proof_size_factor as usize) - .collect::>(); - let block_hash = crate::exchange::prepare_environment_for_claim::(&transactions); - crate::exchange::EthereumTransactionInclusionProof { - block: block_hash, - index: 0, - proof: transactions, - } - } - } - - use crate::millau_messages::{ToMillauMessagePayload, WithMillauMessageBridge}; - use bp_runtime::messages::DispatchFeePayment; - use bridge_runtime_common::messages; - use pallet_bridge_messages::benchmarking::{ - Pallet as MessagesBench, - Config as MessagesConfig, - MessageDeliveryProofParams, - MessageParams, - MessageProofParams, - ProofSize as MessagesProofSize, - }; - - impl MessagesConfig for Runtime { - fn maximal_message_size() -> u32 { - messages::source::maximal_message_size::() - } - - fn bridged_relayer_id() -> Self::InboundRelayer { - Default::default() - } - - fn account_balance(account: &Self::AccountId) -> Self::OutboundMessageFee { - pallet_balances::Pallet::::free_balance(account) - } - - fn endow_account(account: &Self::AccountId) { - pallet_balances::Pallet::::make_free_balance_be( - account, - Balance::MAX / 100, - ); - } - - fn prepare_outbound_message( - params: MessageParams, - ) -> (millau_messages::ToMillauMessagePayload, Balance) { - let message_payload = vec![0; params.size as usize]; - let dispatch_origin = bp_message_dispatch::CallOrigin::SourceAccount( - params.sender_account, - ); - - let message = ToMillauMessagePayload { - spec_version: 0, - weight: params.size as _, - origin: dispatch_origin, - call: message_payload, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - }; - (message, pallet_bridge_messages::benchmarking::MESSAGE_FEE.into()) - } - - fn prepare_message_proof( - params: MessageProofParams, - ) -> (millau_messages::FromMillauMessagesProof, Weight) { - use crate::millau_messages::WithMillauMessageBridge; - use bp_messages::MessageKey; - use bridge_runtime_common::{ - messages::MessageBridge, - messages_benchmarking::{ed25519_sign, prepare_message_proof}, - }; - use codec::Encode; - use frame_support::weights::GetDispatchInfo; - use pallet_bridge_messages::storage_keys; - use sp_runtime::traits::{Header, IdentifyAccount}; - - let remark = match params.size { - MessagesProofSize::Minimal(ref size) => vec![0u8; *size as _], - _ => vec![], - }; - let call = Call::System(SystemCall::remark(remark)); - let call_weight = call.get_dispatch_info().weight; - - let millau_account_id: bp_millau::AccountId = Default::default(); - let (rialto_raw_public, rialto_raw_signature) = ed25519_sign( - &call, - &millau_account_id, - VERSION.spec_version, - bp_runtime::MILLAU_CHAIN_ID, - bp_runtime::RIALTO_CHAIN_ID, - ); - let rialto_public = MultiSigner::Ed25519(sp_core::ed25519::Public::from_raw(rialto_raw_public)); - let rialto_signature = MultiSignature::Ed25519(sp_core::ed25519::Signature::from_raw( - rialto_raw_signature, - )); - - if params.dispatch_fee_payment == DispatchFeePayment::AtTargetChain { - Self::endow_account(&rialto_public.clone().into_account()); - } - - let make_millau_message_key = |message_key: MessageKey| storage_keys::message_key::< - ::BridgedMessagesInstance, - >( - &message_key.lane_id, message_key.nonce, - ).0; - let make_millau_outbound_lane_data_key = |lane_id| storage_keys::outbound_lane_data_key::< - ::BridgedMessagesInstance, - >( - &lane_id, - ).0; - - let make_millau_header = |state_root| bp_millau::Header::new( - 0, - Default::default(), - state_root, - Default::default(), - Default::default(), - ); - - let dispatch_fee_payment = params.dispatch_fee_payment.clone(); - prepare_message_proof::( - params, - make_millau_message_key, - make_millau_outbound_lane_data_key, - make_millau_header, - call_weight, - bp_message_dispatch::MessagePayload { - spec_version: VERSION.spec_version, - weight: call_weight, - origin: bp_message_dispatch::CallOrigin::< - bp_millau::AccountId, - MultiSigner, - Signature, - >::TargetAccount( - millau_account_id, - rialto_public, - rialto_signature, - ), - dispatch_fee_payment, - call: call.encode(), - }.encode(), - ) - } - - fn prepare_message_delivery_proof( - params: MessageDeliveryProofParams, - ) -> millau_messages::ToMillauMessagesDeliveryProof { - use crate::millau_messages::WithMillauMessageBridge; - use bridge_runtime_common::{messages_benchmarking::prepare_message_delivery_proof}; - use sp_runtime::traits::Header; - - prepare_message_delivery_proof::( - params, - |lane_id| pallet_bridge_messages::storage_keys::inbound_lane_data_key::< - ::BridgedMessagesInstance, - >( - &lane_id, - ).0, - |state_root| bp_millau::Header::new( - 0, - Default::default(), - state_root, - Default::default(), - Default::default(), - ), - ) - } - - fn is_message_dispatched(nonce: bp_messages::MessageNonce) -> bool { - frame_system::Pallet::::events() - .into_iter() - .map(|event_record| event_record.event) - .any(|event| matches!( - event, - Event::BridgeDispatch(pallet_bridge_dispatch::Event::::MessageDispatched( - _, ([0, 0, 0, 0], nonce_from_event), _, - )) if nonce_from_event == nonce - )) - } - } - - add_benchmark!( - params, - batches, - pallet_bridge_currency_exchange, - BridgeCurrencyExchangeBench:: - ); - add_benchmark!( - params, - batches, - pallet_bridge_messages, - MessagesBench:: - ); - add_benchmark!(params, batches, pallet_bridge_grandpa, BridgeMillauGrandpa); - - if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } - Ok(batches) - } - } -} - -/// Millau account ownership digest from Rialto. -/// -/// The byte vector returned by this function should be signed with a Millau account private key. -/// This way, the owner of `rialto_account_id` on Rialto proves that the 'millau' account private key -/// is also under his control. -pub fn rialto_to_millau_account_ownership_digest( - millau_call: &Call, - rialto_account_id: AccountId, - millau_spec_version: SpecVersion, -) -> sp_std::vec::Vec -where - Call: codec::Encode, - AccountId: codec::Encode, - SpecVersion: codec::Encode, -{ - pallet_bridge_dispatch::account_ownership_digest( - millau_call, - rialto_account_id, - millau_spec_version, - bp_runtime::RIALTO_CHAIN_ID, - bp_runtime::MILLAU_CHAIN_ID, - ) -} - -#[cfg(test)] -mod tests { - use super::*; - use bp_currency_exchange::DepositInto; - use bridge_runtime_common::messages; - - fn run_deposit_into_test(test: impl Fn(AccountId) -> Balance) { - let mut ext: sp_io::TestExternalities = SystemConfig::default().build_storage::().unwrap().into(); - ext.execute_with(|| { - // initially issuance is zero - assert_eq!( - as Currency>::total_issuance(), - 0, - ); - - // create account - let account: AccountId = [1u8; 32].into(); - let initial_amount = ExistentialDeposit::get(); - let deposited = - as Currency>::deposit_creating(&account, initial_amount); - drop(deposited); - assert_eq!( - as Currency>::total_issuance(), - initial_amount, - ); - assert_eq!( - as Currency>::free_balance(&account), - initial_amount, - ); - - // run test - let total_issuance_change = test(account); - - // check that total issuance has changed by `run_deposit_into_test` - assert_eq!( - as Currency>::total_issuance(), - initial_amount + total_issuance_change, - ); - }); - } - - #[test] - fn ensure_rialto_message_lane_weights_are_correct() { - type Weights = pallet_bridge_messages::weights::RialtoWeight; - - pallet_bridge_messages::ensure_weights_are_correct::( - bp_rialto::DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT, - bp_rialto::ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT, - bp_rialto::MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT, - bp_rialto::PAY_INBOUND_DISPATCH_FEE_WEIGHT, - ); - - let max_incoming_message_proof_size = bp_millau::EXTRA_STORAGE_PROOF_SIZE.saturating_add( - messages::target::maximal_incoming_message_size(bp_rialto::max_extrinsic_size()), - ); - pallet_bridge_messages::ensure_able_to_receive_message::( - bp_rialto::max_extrinsic_size(), - bp_rialto::max_extrinsic_weight(), - max_incoming_message_proof_size, - messages::target::maximal_incoming_message_dispatch_weight(bp_rialto::max_extrinsic_weight()), - ); - - let max_incoming_inbound_lane_data_proof_size = bp_messages::InboundLaneData::<()>::encoded_size_hint( - bp_rialto::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE as _, - bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE as _, - ) - .unwrap_or(u32::MAX); - pallet_bridge_messages::ensure_able_to_receive_confirmation::( - bp_rialto::max_extrinsic_size(), - bp_rialto::max_extrinsic_weight(), - max_incoming_inbound_lane_data_proof_size, - bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - ); - } - - #[test] - fn deposit_into_existing_account_works() { - run_deposit_into_test(|existing_account| { - let initial_amount = - as Currency>::free_balance(&existing_account); - let additional_amount = 10_000; - >::DepositInto::deposit_into( - existing_account.clone(), - additional_amount, - ) - .unwrap(); - assert_eq!( - as Currency>::free_balance(&existing_account), - initial_amount + additional_amount, - ); - additional_amount - }); - } - - #[test] - fn deposit_into_new_account_works() { - run_deposit_into_test(|_| { - let initial_amount = 0; - let additional_amount = ExistentialDeposit::get() + 10_000; - let new_account: AccountId = [42u8; 32].into(); - >::DepositInto::deposit_into( - new_account.clone(), - additional_amount, - ) - .unwrap(); - assert_eq!( - as Currency>::free_balance(&new_account), - initial_amount + additional_amount, - ); - additional_amount - }); - } -} diff --git a/bridges/bin/rialto/runtime/src/rialto_poa.rs b/bridges/bin/rialto/runtime/src/rialto_poa.rs deleted file mode 100644 index 9bc74a2ebaac..000000000000 --- a/bridges/bin/rialto/runtime/src/rialto_poa.rs +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Configuration parameters for the Rialto PoA chain. - -use crate::exchange::EthereumTransactionInclusionProof; - -use bp_eth_poa::{Address, AuraHeader, RawTransaction, U256}; -use bp_header_chain::InclusionProofVerifier; -use frame_support::RuntimeDebug; -use hex_literal::hex; -use pallet_bridge_eth_poa::{ - AuraConfiguration, ChainTime as TChainTime, PruningStrategy as TPruningStrategy, ValidatorsConfiguration, - ValidatorsSource, -}; -use sp_std::prelude::*; - -frame_support::parameter_types! { - pub const FinalityVotesCachingInterval: Option = Some(8); - pub BridgeAuraConfiguration: AuraConfiguration = - aura_configuration(); - pub BridgeValidatorsConfiguration: ValidatorsConfiguration = - validators_configuration(); -} - -/// Max number of finalized headers to keep. -const FINALIZED_HEADERS_TO_KEEP: u64 = 5_000; - -/// Aura engine configuration for Rialto chain. -pub fn aura_configuration() -> AuraConfiguration { - AuraConfiguration { - empty_steps_transition: 0xfffffffff, - strict_empty_steps_transition: 0, - validate_step_transition: 0, - validate_score_transition: 0, - two_thirds_majority_transition: u64::max_value(), - min_gas_limit: 0x1388.into(), - max_gas_limit: U256::max_value(), - maximum_extra_data_size: 0x20, - } -} - -/// Validators configuration for Rialto PoA chain. -pub fn validators_configuration() -> ValidatorsConfiguration { - ValidatorsConfiguration::Single(ValidatorsSource::List(genesis_validators())) -} - -/// Genesis validators set of Rialto PoA chain. -pub fn genesis_validators() -> Vec
{ - vec![ - hex!("005e714f896a8b7cede9d38688c1a81de72a58e4").into(), - hex!("007594304039c2937a12220338aab821d819f5a4").into(), - hex!("004e7a39907f090e19b0b80a277e77b72b22e269").into(), - ] -} - -/// Genesis header of the Rialto PoA chain. -/// -/// To obtain genesis header from a running node, invoke: -/// ```bash -/// $ http localhost:8545 jsonrpc=2.0 id=1 method=eth_getBlockByNumber params:='["earliest", false]' -v -/// ``` -pub fn genesis_header() -> AuraHeader { - AuraHeader { - parent_hash: Default::default(), - timestamp: 0, - number: 0, - author: Default::default(), - transactions_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), - uncles_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - extra_data: vec![], - state_root: hex!("a992d04c791620ed7ed96555a80cf0568355bb4bee2656f46899a4372f25f248").into(), - receipts_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), - log_bloom: Default::default(), - gas_used: Default::default(), - gas_limit: 0x222222.into(), - difficulty: 0x20000.into(), - seal: vec![vec![0x80], { - let mut vec = vec![0xb8, 0x41]; - vec.resize(67, 0); - vec - }], - } -} - -/// Rialto PoA headers pruning strategy. -/// -/// We do not prune unfinalized headers because exchange module only accepts -/// claims from finalized headers. And if we're pruning unfinalized headers, then -/// some claims may never be accepted. -#[derive(Default, RuntimeDebug)] -pub struct PruningStrategy; - -impl TPruningStrategy for PruningStrategy { - fn pruning_upper_bound(&mut self, _best_number: u64, best_finalized_number: u64) -> u64 { - best_finalized_number.saturating_sub(FINALIZED_HEADERS_TO_KEEP) - } -} - -/// ChainTime provider -#[derive(Default)] -pub struct ChainTime; - -impl TChainTime for ChainTime { - fn is_timestamp_ahead(&self, timestamp: u64) -> bool { - let now = super::Timestamp::now(); - timestamp > now - } -} - -/// The Rialto PoA Blockchain as seen by the runtime. -pub struct RialtoBlockchain; - -impl InclusionProofVerifier for RialtoBlockchain { - type Transaction = RawTransaction; - type TransactionInclusionProof = EthereumTransactionInclusionProof; - - fn verify_transaction_inclusion_proof(proof: &Self::TransactionInclusionProof) -> Option { - let is_transaction_finalized = - crate::BridgeRialtoPoa::verify_transaction_finalized(proof.block, proof.index, &proof.proof); - - if !is_transaction_finalized { - return None; - } - - proof.proof.get(proof.index as usize).map(|(tx, _)| tx.clone()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn genesis_hash_matches() { - assert_eq!( - genesis_header().compute_hash(), - hex!("1468e1a0fa20d30025a5a0f87e1cced4fdc393b84b7d2850b11ca5863db482cb").into(), - ); - } - - #[test] - fn pruning_strategy_keeps_enough_headers() { - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 1_000), - 0, - "1_000 <= 5_000 => nothing should be pruned yet", - ); - - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 5_000), - 0, - "5_000 <= 5_000 => nothing should be pruned yet", - ); - - assert_eq!( - PruningStrategy::default().pruning_upper_bound(100_000, 10_000), - 5_000, - "5_000 <= 10_000 => we're ready to prune first 5_000 headers", - ); - } -} diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml deleted file mode 100644 index 07fe8910c21f..000000000000 --- a/bridges/bin/runtime-common/Cargo.toml +++ /dev/null @@ -1,58 +0,0 @@ -[package] -name = "bridge-runtime-common" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/parity-bridges-common/" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -ed25519-dalek = { version = "1.0", default-features = false, optional = true } -hash-db = { version = "0.15.2", default-features = false } - -# Bridge dependencies - -bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } -bp-messages = { path = "../../primitives/messages", default-features = false } -bp-runtime = { path = "../../primitives/runtime", default-features = false } -pallet-bridge-dispatch = { path = "../../modules/dispatch", default-features = false } -pallet-bridge-grandpa = { path = "../../modules/grandpa", default-features = false } -pallet-bridge-messages = { path = "../../modules/messages", default-features = false } - -# Substrate dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "bp-message-dispatch/std", - "bp-messages/std", - "bp-runtime/std", - "codec/std", - "frame-support/std", - "hash-db/std", - "pallet-bridge-dispatch/std", - "pallet-bridge-grandpa/std", - "pallet-bridge-messages/std", - "pallet-transaction-payment/std", - "sp-core/std", - "sp-runtime/std", - "sp-state-machine/std", - "sp-std/std", - "sp-trie/std", -] -runtime-benchmarks = [ - "ed25519-dalek/u64_backend", - "pallet-bridge-grandpa/runtime-benchmarks", - "pallet-bridge-messages/runtime-benchmarks", - "sp-state-machine", -] diff --git a/bridges/bin/runtime-common/src/lib.rs b/bridges/bin/runtime-common/src/lib.rs deleted file mode 100644 index ae7efb4a4196..000000000000 --- a/bridges/bin/runtime-common/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Common types/functions that may be used by runtimes of all bridged chains. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod messages; -pub mod messages_benchmarking; diff --git a/bridges/bin/runtime-common/src/messages.rs b/bridges/bin/runtime-common/src/messages.rs deleted file mode 100644 index 72249e4f4e33..000000000000 --- a/bridges/bin/runtime-common/src/messages.rs +++ /dev/null @@ -1,1517 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types that allow runtime to act as a source/target endpoint of message lanes. -//! -//! Messages are assumed to be encoded `Call`s of the target chain. Call-dispatch -//! pallet is used to dispatch incoming messages. Message identified by a tuple -//! of to elements - message lane id and message nonce. - -use bp_message_dispatch::MessageDispatch as _; -use bp_messages::{ - source_chain::{LaneMessageVerifier, Sender}, - target_chain::{DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages}, - InboundLaneData, LaneId, Message, MessageData, MessageKey, MessageNonce, OutboundLaneData, -}; -use bp_runtime::{ - messages::{DispatchFeePayment, MessageDispatchResult}, - ChainId, Size, StorageProofChecker, -}; -use codec::{Decode, Encode}; -use frame_support::{ - traits::{Currency, ExistenceRequirement, Instance}, - weights::{Weight, WeightToFeePolynomial}, - RuntimeDebug, -}; -use hash_db::Hasher; -use sp_runtime::{ - traits::{AtLeast32BitUnsigned, CheckedAdd, CheckedDiv, CheckedMul}, - FixedPointNumber, FixedPointOperand, FixedU128, -}; -use sp_std::{cmp::PartialOrd, convert::TryFrom, fmt::Debug, marker::PhantomData, ops::RangeInclusive, vec::Vec}; -use sp_trie::StorageProof; - -/// Bidirectional message bridge. -pub trait MessageBridge { - /// Relayer interest (in percents). - const RELAYER_FEE_PERCENT: u32; - - /// Identifier of this chain. - const THIS_CHAIN_ID: ChainId; - /// Identifier of the Bridged chain. - const BRIDGED_CHAIN_ID: ChainId; - - /// This chain in context of message bridge. - type ThisChain: ThisChainWithMessages; - /// Bridged chain in context of message bridge. - type BridgedChain: BridgedChainWithMessages; - /// Instance of the `pallet-bridge-messages` pallet at the Bridged chain. - type BridgedMessagesInstance: Instance; - - /// Convert Bridged chain balance into This chain balance. - fn bridged_balance_to_this_balance(bridged_balance: BalanceOf>) -> BalanceOf>; -} - -/// Chain that has `pallet-bridge-messages` and `dispatch` modules. -pub trait ChainWithMessages { - /// Hash used in the chain. - type Hash: Decode; - /// Accound id on the chain. - type AccountId: Encode + Decode; - /// Public key of the chain account that may be used to verify signatures. - type Signer: Decode; - /// Signature type used on the chain. - type Signature: Decode; - /// Type of weight that is used on the chain. This would almost always be a regular - /// `frame_support::weight::Weight`. But since the meaning of weight on different chains - /// may be different, the `WeightOf<>` construct is used to avoid confusion between - /// different weights. - type Weight: From + PartialOrd; - /// Type of balances that is used on the chain. - type Balance: Encode + Decode + CheckedAdd + CheckedDiv + CheckedMul + PartialOrd + From + Copy; -} - -/// Message related transaction parameters estimation. -#[derive(RuntimeDebug)] -pub struct MessageTransaction { - /// The estimated dispatch weight of the transaction. - pub dispatch_weight: Weight, - /// The estimated size of the encoded transaction. - pub size: u32, -} - -/// This chain that has `pallet-bridge-messages` and `dispatch` modules. -pub trait ThisChainWithMessages: ChainWithMessages { - /// Call type on the chain. - type Call: Encode + Decode; - - /// Are we accepting any messages to the given lane? - fn is_outbound_lane_enabled(lane: &LaneId) -> bool; - - /// Maximal number of pending (not yet delivered) messages at This chain. - /// - /// Any messages over this limit, will be rejected. - fn maximal_pending_messages_at_outbound_lane() -> MessageNonce; - - /// Estimate size and weight of single message delivery confirmation transaction at This chain. - fn estimate_delivery_confirmation_transaction() -> MessageTransaction>; - - /// Returns minimal transaction fee that must be paid for given transaction at This chain. - fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf; -} - -/// Bridged chain that has `pallet-bridge-messages` and `dispatch` modules. -pub trait BridgedChainWithMessages: ChainWithMessages { - /// Maximal extrinsic size at Bridged chain. - fn maximal_extrinsic_size() -> u32; - - /// Returns feasible weights range for given message payload at the Bridged chain. - /// - /// If message is being sent with the weight that is out of this range, then it - /// should be rejected. - /// - /// Weights returned from this function shall not include transaction overhead - /// (like weight of signature and signed extensions verification), because they're - /// already accounted by the `weight_of_delivery_transaction`. So this function should - /// return pure call dispatch weights range. - fn message_weight_limits(message_payload: &[u8]) -> RangeInclusive; - - /// Estimate size and weight of single message delivery transaction at the Bridged chain. - fn estimate_delivery_transaction( - message_payload: &[u8], - include_pay_dispatch_fee_cost: bool, - message_dispatch_weight: WeightOf, - ) -> MessageTransaction>; - - /// Returns minimal transaction fee that must be paid for given transaction at the Bridged chain. - fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf; -} - -pub(crate) type ThisChain = ::ThisChain; -pub(crate) type BridgedChain = ::BridgedChain; -pub(crate) type HashOf = ::Hash; -pub(crate) type AccountIdOf = ::AccountId; -pub(crate) type SignerOf = ::Signer; -pub(crate) type SignatureOf = ::Signature; -pub(crate) type WeightOf = ::Weight; -pub(crate) type BalanceOf = ::Balance; - -pub(crate) type CallOf = ::Call; - -/// Raw storage proof type (just raw trie nodes). -type RawStorageProof = Vec>; - -/// Compute fee of transaction at runtime where regular transaction payment pallet is being used. -/// -/// The value of `multiplier` parameter is the expected value of `pallet_transaction_payment::NextFeeMultiplier` -/// at the moment when transaction is submitted. If you're charging this payment in advance (and that's what -/// happens with delivery and confirmation transaction in this crate), then there's a chance that the actual -/// fee will be larger than what is paid in advance. So the value must be chosen carefully. -pub fn transaction_payment( - base_extrinsic_weight: Weight, - per_byte_fee: Balance, - multiplier: FixedU128, - weight_to_fee: impl Fn(Weight) -> Balance, - transaction: MessageTransaction, -) -> Balance { - // base fee is charged for every tx - let base_fee = weight_to_fee(base_extrinsic_weight); - - // non-adjustable per-byte fee - let len_fee = per_byte_fee.saturating_mul(Balance::from(transaction.size)); - - // the adjustable part of the fee - let unadjusted_weight_fee = weight_to_fee(transaction.dispatch_weight); - let adjusted_weight_fee = multiplier.saturating_mul_int(unadjusted_weight_fee); - - base_fee.saturating_add(len_fee).saturating_add(adjusted_weight_fee) -} - -/// Sub-module that is declaring types required for processing This -> Bridged chain messages. -pub mod source { - use super::*; - - /// Encoded Call of the Bridged chain. We never try to decode it on This chain. - pub type BridgedChainOpaqueCall = Vec; - - /// Message payload for This -> Bridged chain messages. - pub type FromThisChainMessagePayload = bp_message_dispatch::MessagePayload< - AccountIdOf>, - SignerOf>, - SignatureOf>, - BridgedChainOpaqueCall, - >; - - /// Messages delivery proof from bridged chain: - /// - /// - hash of finalized header; - /// - storage proof of inbound lane state; - /// - lane id. - #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug)] - pub struct FromBridgedChainMessagesDeliveryProof { - /// Hash of the bridge header the proof is for. - pub bridged_header_hash: BridgedHeaderHash, - /// Storage trie proof generated for [`Self::bridged_header_hash`]. - pub storage_proof: RawStorageProof, - /// Lane id of which messages were delivered and the proof is for. - pub lane: LaneId, - } - - impl Size for FromBridgedChainMessagesDeliveryProof { - fn size_hint(&self) -> u32 { - u32::try_from( - self.storage_proof - .iter() - .fold(0usize, |sum, node| sum.saturating_add(node.len())), - ) - .unwrap_or(u32::MAX) - } - } - - /// 'Parsed' message delivery proof - inbound lane id and its state. - pub type ParsedMessagesDeliveryProofFromBridgedChain = (LaneId, InboundLaneData>>); - - /// Message verifier that is doing all basic checks. - /// - /// This verifier assumes following: - /// - /// - all message lanes are equivalent, so all checks are the same; - /// - messages are being dispatched using `pallet-bridge-dispatch` pallet on the target chain. - /// - /// Following checks are made: - /// - /// - message is rejected if its lane is currently blocked; - /// - message is rejected if there are too many pending (undelivered) messages at the outbound lane; - /// - check that the sender has rights to dispatch the call on target chain using provided dispatch origin; - /// - check that the sender has paid enough funds for both message delivery and dispatch. - #[derive(RuntimeDebug)] - pub struct FromThisChainMessageVerifier(PhantomData); - - pub(crate) const OUTBOUND_LANE_DISABLED: &str = "The outbound message lane is disabled."; - pub(crate) const TOO_MANY_PENDING_MESSAGES: &str = "Too many pending messages at the lane."; - pub(crate) const BAD_ORIGIN: &str = "Unable to match the source origin to expected target origin."; - pub(crate) const TOO_LOW_FEE: &str = "Provided fee is below minimal threshold required by the lane."; - - impl LaneMessageVerifier>, FromThisChainMessagePayload, BalanceOf>> - for FromThisChainMessageVerifier - where - B: MessageBridge, - AccountIdOf>: PartialEq + Clone, - { - type Error = &'static str; - - fn verify_message( - submitter: &Sender>>, - delivery_and_dispatch_fee: &BalanceOf>, - lane: &LaneId, - lane_outbound_data: &OutboundLaneData, - payload: &FromThisChainMessagePayload, - ) -> Result<(), Self::Error> { - // reject message if lane is blocked - if !ThisChain::::is_outbound_lane_enabled(lane) { - return Err(OUTBOUND_LANE_DISABLED); - } - - // reject message if there are too many pending messages at this lane - let max_pending_messages = ThisChain::::maximal_pending_messages_at_outbound_lane(); - let pending_messages = lane_outbound_data - .latest_generated_nonce - .saturating_sub(lane_outbound_data.latest_received_nonce); - if pending_messages > max_pending_messages { - return Err(TOO_MANY_PENDING_MESSAGES); - } - - // Do the dispatch-specific check. We assume that the target chain uses - // `Dispatch`, so we verify the message accordingly. - pallet_bridge_dispatch::verify_message_origin(submitter, payload).map_err(|_| BAD_ORIGIN)?; - - let minimal_fee_in_this_tokens = - estimate_message_dispatch_and_delivery_fee::(payload, B::RELAYER_FEE_PERCENT)?; - - // compare with actual fee paid - if *delivery_and_dispatch_fee < minimal_fee_in_this_tokens { - return Err(TOO_LOW_FEE); - } - - Ok(()) - } - } - - /// Return maximal message size of This -> Bridged chain message. - pub fn maximal_message_size() -> u32 { - super::target::maximal_incoming_message_size(BridgedChain::::maximal_extrinsic_size()) - } - - /// Do basic Bridged-chain specific verification of This -> Bridged chain message. - /// - /// Ok result from this function means that the delivery transaction with this message - /// may be 'mined' by the target chain. But the lane may have its own checks (e.g. fee - /// check) that would reject message (see `FromThisChainMessageVerifier`). - pub fn verify_chain_message( - payload: &FromThisChainMessagePayload, - ) -> Result<(), &'static str> { - let weight_limits = BridgedChain::::message_weight_limits(&payload.call); - if !weight_limits.contains(&payload.weight.into()) { - return Err("Incorrect message weight declared"); - } - - // The maximal size of extrinsic at Substrate-based chain depends on the - // `frame_system::Config::MaximumBlockLength` and `frame_system::Config::AvailableBlockRatio` - // constants. This check is here to be sure that the lane won't stuck because message is too - // large to fit into delivery transaction. - // - // **IMPORTANT NOTE**: the delivery transaction contains storage proof of the message, not - // the message itself. The proof is always larger than the message. But unless chain state - // is enormously large, it should be several dozens/hundreds of bytes. The delivery - // transaction also contains signatures and signed extensions. Because of this, we reserve - // 1/3 of the the maximal extrinsic weight for this data. - if payload.call.len() > maximal_message_size::() as usize { - return Err("The message is too large to be sent over the lane"); - } - - Ok(()) - } - - /// Estimate delivery and dispatch fee that must be paid for delivering a message to the Bridged chain. - /// - /// The fee is paid in This chain Balance, but we use Bridged chain balance to avoid additional conversions. - /// Returns `None` if overflow has happened. - pub fn estimate_message_dispatch_and_delivery_fee( - payload: &FromThisChainMessagePayload, - relayer_fee_percent: u32, - ) -> Result>, &'static str> { - // the fee (in Bridged tokens) of all transactions that are made on the Bridged chain - // - // if we're going to pay dispatch fee at the target chain, then we don't include weight - // of the message dispatch in the delivery transaction cost - let pay_dispatch_fee_at_target_chain = payload.dispatch_fee_payment == DispatchFeePayment::AtTargetChain; - let delivery_transaction = BridgedChain::::estimate_delivery_transaction( - &payload.call, - pay_dispatch_fee_at_target_chain, - if pay_dispatch_fee_at_target_chain { - 0.into() - } else { - payload.weight.into() - }, - ); - let delivery_transaction_fee = BridgedChain::::transaction_payment(delivery_transaction); - - // the fee (in This tokens) of all transactions that are made on This chain - let confirmation_transaction = ThisChain::::estimate_delivery_confirmation_transaction(); - let confirmation_transaction_fee = ThisChain::::transaction_payment(confirmation_transaction); - - // minimal fee (in This tokens) is a sum of all required fees - let minimal_fee = - B::bridged_balance_to_this_balance(delivery_transaction_fee).checked_add(&confirmation_transaction_fee); - - // before returning, add extra fee that is paid to the relayer (relayer interest) - minimal_fee - .and_then(|fee| - // having message with fee that is near the `Balance::MAX_VALUE` of the chain is - // unlikely and should be treated as an error - // => let's do multiplication first - fee - .checked_mul(&relayer_fee_percent.into()) - .and_then(|interest| interest.checked_div(&100u32.into())) - .and_then(|interest| fee.checked_add(&interest))) - .ok_or("Overflow when computing minimal required message delivery and dispatch fee") - } - - /// Verify proof of This -> Bridged chain messages delivery. - pub fn verify_messages_delivery_proof( - proof: FromBridgedChainMessagesDeliveryProof>>, - ) -> Result, &'static str> - where - ThisRuntime: pallet_bridge_grandpa::Config, - HashOf>: - Into>::BridgedChain>>, - { - let FromBridgedChainMessagesDeliveryProof { - bridged_header_hash, - storage_proof, - lane, - } = proof; - pallet_bridge_grandpa::Pallet::::parse_finalized_storage_proof( - bridged_header_hash.into(), - StorageProof::new(storage_proof), - |storage| { - // Messages delivery proof is just proof of single storage key read => any error - // is fatal. - let storage_inbound_lane_data_key = - pallet_bridge_messages::storage_keys::inbound_lane_data_key::(&lane); - let raw_inbound_lane_data = storage - .read_value(storage_inbound_lane_data_key.0.as_ref()) - .map_err(|_| "Failed to read inbound lane state from storage proof")? - .ok_or("Inbound lane state is missing from the messages proof")?; - let inbound_lane_data = InboundLaneData::decode(&mut &raw_inbound_lane_data[..]) - .map_err(|_| "Failed to decode inbound lane state from the proof")?; - - Ok((lane, inbound_lane_data)) - }, - ) - .map_err(<&'static str>::from)? - } -} - -/// Sub-module that is declaring types required for processing Bridged -> This chain messages. -pub mod target { - use super::*; - - /// Call origin for Bridged -> This chain messages. - pub type FromBridgedChainMessageCallOrigin = bp_message_dispatch::CallOrigin< - AccountIdOf>, - SignerOf>, - SignatureOf>, - >; - - /// Decoded Bridged -> This message payload. - pub type FromBridgedChainMessagePayload = bp_message_dispatch::MessagePayload< - AccountIdOf>, - SignerOf>, - SignatureOf>, - FromBridgedChainEncodedMessageCall>>, - >; - - /// Messages proof from bridged chain: - /// - /// - hash of finalized header; - /// - storage proof of messages and (optionally) outbound lane state; - /// - lane id; - /// - nonces (inclusive range) of messages which are included in this proof. - #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug)] - pub struct FromBridgedChainMessagesProof { - /// Hash of the finalized bridged header the proof is for. - pub bridged_header_hash: BridgedHeaderHash, - /// A storage trie proof of messages being delivered. - pub storage_proof: RawStorageProof, - pub lane: LaneId, - /// Nonce of the first message being delivered. - pub nonces_start: MessageNonce, - /// Nonce of the last message being delivered. - pub nonces_end: MessageNonce, - } - - impl Size for FromBridgedChainMessagesProof { - fn size_hint(&self) -> u32 { - u32::try_from( - self.storage_proof - .iter() - .fold(0usize, |sum, node| sum.saturating_add(node.len())), - ) - .unwrap_or(u32::MAX) - } - } - - /// Encoded Call of This chain as it is transferred over bridge. - /// - /// Our Call is opaque (`Vec`) for Bridged chain. So it is encoded, prefixed with - /// vector length. Custom decode implementation here is exactly to deal with this. - #[derive(Decode, Encode, RuntimeDebug, PartialEq)] - pub struct FromBridgedChainEncodedMessageCall { - encoded_call: Vec, - _marker: PhantomData, - } - - impl FromBridgedChainEncodedMessageCall { - /// Create encoded call. - pub fn new(encoded_call: Vec) -> Self { - FromBridgedChainEncodedMessageCall { - encoded_call, - _marker: PhantomData::default(), - } - } - } - - impl From> for Result { - fn from(encoded_call: FromBridgedChainEncodedMessageCall) -> Self { - DecodedCall::decode(&mut &encoded_call.encoded_call[..]).map_err(drop) - } - } - - /// Dispatching Bridged -> This chain messages. - #[derive(RuntimeDebug, Clone, Copy)] - pub struct FromBridgedChainMessageDispatch { - _marker: PhantomData<(B, ThisRuntime, ThisCurrency, ThisDispatchInstance)>, - } - - impl - MessageDispatch>, BalanceOf>> - for FromBridgedChainMessageDispatch - where - ThisDispatchInstance: frame_support::traits::Instance, - ThisRuntime: pallet_bridge_dispatch::Config - + pallet_transaction_payment::Config, - ::OnChargeTransaction: - pallet_transaction_payment::OnChargeTransaction>>, - ThisCurrency: Currency>, Balance = BalanceOf>>, - >::Event: From< - pallet_bridge_dispatch::RawEvent<(LaneId, MessageNonce), AccountIdOf>, ThisDispatchInstance>, - >, - pallet_bridge_dispatch::Pallet: bp_message_dispatch::MessageDispatch< - AccountIdOf>, - (LaneId, MessageNonce), - Message = FromBridgedChainMessagePayload, - >, - { - type DispatchPayload = FromBridgedChainMessagePayload; - - fn dispatch_weight( - message: &DispatchMessage>>, - ) -> frame_support::weights::Weight { - message.data.payload.as_ref().map(|payload| payload.weight).unwrap_or(0) - } - - fn dispatch( - relayer_account: &AccountIdOf>, - message: DispatchMessage>>, - ) -> MessageDispatchResult { - let message_id = (message.key.lane_id, message.key.nonce); - pallet_bridge_dispatch::Pallet::::dispatch( - B::BRIDGED_CHAIN_ID, - B::THIS_CHAIN_ID, - message_id, - message.data.payload.map_err(drop), - |dispatch_origin, dispatch_weight| { - ThisCurrency::transfer( - dispatch_origin, - relayer_account, - ThisRuntime::WeightToFee::calc(&dispatch_weight), - ExistenceRequirement::AllowDeath, - ) - .map_err(drop) - }, - ) - } - } - - /// Return maximal dispatch weight of the message we're able to receive. - pub fn maximal_incoming_message_dispatch_weight(maximal_extrinsic_weight: Weight) -> Weight { - maximal_extrinsic_weight / 2 - } - - /// Return maximal message size given maximal extrinsic size. - pub fn maximal_incoming_message_size(maximal_extrinsic_size: u32) -> u32 { - maximal_extrinsic_size / 3 * 2 - } - - /// Verify proof of Bridged -> This chain messages. - /// - /// The `messages_count` argument verification (sane limits) is supposed to be made - /// outside of this function. This function only verifies that the proof declares exactly - /// `messages_count` messages. - pub fn verify_messages_proof( - proof: FromBridgedChainMessagesProof>>, - messages_count: u32, - ) -> Result>>>, &'static str> - where - ThisRuntime: pallet_bridge_grandpa::Config, - ThisRuntime: pallet_bridge_messages::Config, - HashOf>: - Into>::BridgedChain>>, - { - verify_messages_proof_with_parser::( - proof, - messages_count, - |bridged_header_hash, bridged_storage_proof| { - pallet_bridge_grandpa::Pallet::::parse_finalized_storage_proof( - bridged_header_hash.into(), - StorageProof::new(bridged_storage_proof), - |storage_adapter| storage_adapter, - ) - .map(|storage| StorageProofCheckerAdapter::<_, B> { - storage, - _dummy: Default::default(), - }) - .map_err(|err| MessageProofError::Custom(err.into())) - }, - ) - .map_err(Into::into) - } - - #[derive(Debug, PartialEq)] - pub(crate) enum MessageProofError { - Empty, - MessagesCountMismatch, - MissingRequiredMessage, - FailedToDecodeMessage, - FailedToDecodeOutboundLaneState, - Custom(&'static str), - } - - impl From for &'static str { - fn from(err: MessageProofError) -> &'static str { - match err { - MessageProofError::Empty => "Messages proof is empty", - MessageProofError::MessagesCountMismatch => "Declared messages count doesn't match actual value", - MessageProofError::MissingRequiredMessage => "Message is missing from the proof", - MessageProofError::FailedToDecodeMessage => "Failed to decode message from the proof", - MessageProofError::FailedToDecodeOutboundLaneState => { - "Failed to decode outbound lane data from the proof" - } - MessageProofError::Custom(err) => err, - } - } - } - - pub(crate) trait MessageProofParser { - fn read_raw_outbound_lane_data(&self, lane_id: &LaneId) -> Option>; - fn read_raw_message(&self, message_key: &MessageKey) -> Option>; - } - - struct StorageProofCheckerAdapter { - storage: StorageProofChecker, - _dummy: sp_std::marker::PhantomData, - } - - impl MessageProofParser for StorageProofCheckerAdapter - where - H: Hasher, - B: MessageBridge, - { - fn read_raw_outbound_lane_data(&self, lane_id: &LaneId) -> Option> { - let storage_outbound_lane_data_key = - pallet_bridge_messages::storage_keys::outbound_lane_data_key::(lane_id); - self.storage - .read_value(storage_outbound_lane_data_key.0.as_ref()) - .ok()? - } - - fn read_raw_message(&self, message_key: &MessageKey) -> Option> { - let storage_message_key = pallet_bridge_messages::storage_keys::message_key::( - &message_key.lane_id, - message_key.nonce, - ); - self.storage.read_value(storage_message_key.0.as_ref()).ok()? - } - } - - /// Verify proof of Bridged -> This chain messages using given message proof parser. - pub(crate) fn verify_messages_proof_with_parser( - proof: FromBridgedChainMessagesProof>>, - messages_count: u32, - build_parser: BuildParser, - ) -> Result>>>, MessageProofError> - where - BuildParser: FnOnce(HashOf>, RawStorageProof) -> Result, - Parser: MessageProofParser, - { - let FromBridgedChainMessagesProof { - bridged_header_hash, - storage_proof, - lane, - nonces_start, - nonces_end, - } = proof; - - // receiving proofs where end < begin is ok (if proof includes outbound lane state) - let messages_in_the_proof = if let Some(nonces_difference) = nonces_end.checked_sub(nonces_start) { - // let's check that the user (relayer) has passed correct `messages_count` - // (this bounds maximal capacity of messages vec below) - let messages_in_the_proof = nonces_difference.saturating_add(1); - if messages_in_the_proof != MessageNonce::from(messages_count) { - return Err(MessageProofError::MessagesCountMismatch); - } - - messages_in_the_proof - } else { - 0 - }; - - let parser = build_parser(bridged_header_hash, storage_proof)?; - - // Read messages first. All messages that are claimed to be in the proof must - // be in the proof. So any error in `read_value`, or even missing value is fatal. - // - // Mind that we allow proofs with no messages if outbound lane state is proved. - let mut messages = Vec::with_capacity(messages_in_the_proof as _); - for nonce in nonces_start..=nonces_end { - let message_key = MessageKey { lane_id: lane, nonce }; - let raw_message_data = parser - .read_raw_message(&message_key) - .ok_or(MessageProofError::MissingRequiredMessage)?; - let message_data = MessageData::>>::decode(&mut &raw_message_data[..]) - .map_err(|_| MessageProofError::FailedToDecodeMessage)?; - messages.push(Message { - key: message_key, - data: message_data, - }); - } - - // Now let's check if proof contains outbound lane state proof. It is optional, so we - // simply ignore `read_value` errors and missing value. - let mut proved_lane_messages = ProvedLaneMessages { - lane_state: None, - messages, - }; - let raw_outbound_lane_data = parser.read_raw_outbound_lane_data(&lane); - if let Some(raw_outbound_lane_data) = raw_outbound_lane_data { - proved_lane_messages.lane_state = Some( - OutboundLaneData::decode(&mut &raw_outbound_lane_data[..]) - .map_err(|_| MessageProofError::FailedToDecodeOutboundLaneState)?, - ); - } - - // Now we may actually check if the proof is empty or not. - if proved_lane_messages.lane_state.is_none() && proved_lane_messages.messages.is_empty() { - return Err(MessageProofError::Empty); - } - - // We only support single lane messages in this schema - let mut proved_messages = ProvedMessages::new(); - proved_messages.insert(lane, proved_lane_messages); - - Ok(proved_messages) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use codec::{Decode, Encode}; - use frame_support::weights::Weight; - use std::ops::RangeInclusive; - - const DELIVERY_TRANSACTION_WEIGHT: Weight = 100; - const DELIVERY_CONFIRMATION_TRANSACTION_WEIGHT: Weight = 100; - const THIS_CHAIN_WEIGHT_TO_BALANCE_RATE: Weight = 2; - const BRIDGED_CHAIN_WEIGHT_TO_BALANCE_RATE: Weight = 4; - const BRIDGED_CHAIN_TO_THIS_CHAIN_BALANCE_RATE: u32 = 6; - const BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT: Weight = 2048; - const BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE: u32 = 1024; - - /// Bridge that is deployed on ThisChain and allows sending/receiving messages to/from BridgedChain; - #[derive(Debug, PartialEq, Eq)] - struct OnThisChainBridge; - - impl MessageBridge for OnThisChainBridge { - const RELAYER_FEE_PERCENT: u32 = 10; - const THIS_CHAIN_ID: ChainId = *b"this"; - const BRIDGED_CHAIN_ID: ChainId = *b"brdg"; - - type ThisChain = ThisChain; - type BridgedChain = BridgedChain; - type BridgedMessagesInstance = pallet_bridge_messages::DefaultInstance; - - fn bridged_balance_to_this_balance(bridged_balance: BridgedChainBalance) -> ThisChainBalance { - ThisChainBalance(bridged_balance.0 * BRIDGED_CHAIN_TO_THIS_CHAIN_BALANCE_RATE as u32) - } - } - - /// Bridge that is deployed on BridgedChain and allows sending/receiving messages to/from ThisChain; - #[derive(Debug, PartialEq, Eq)] - struct OnBridgedChainBridge; - - impl MessageBridge for OnBridgedChainBridge { - const RELAYER_FEE_PERCENT: u32 = 20; - const THIS_CHAIN_ID: ChainId = *b"brdg"; - const BRIDGED_CHAIN_ID: ChainId = *b"this"; - - type ThisChain = BridgedChain; - type BridgedChain = ThisChain; - type BridgedMessagesInstance = pallet_bridge_messages::DefaultInstance; - - fn bridged_balance_to_this_balance(_this_balance: ThisChainBalance) -> BridgedChainBalance { - unreachable!() - } - } - - #[derive(Debug, PartialEq, Decode, Encode, Clone)] - struct ThisChainAccountId(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - struct ThisChainSigner(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - struct ThisChainSignature(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - enum ThisChainCall { - #[codec(index = 42)] - Transfer, - #[codec(index = 84)] - Mint, - } - - #[derive(Debug, PartialEq, Decode, Encode)] - struct BridgedChainAccountId(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - struct BridgedChainSigner(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - struct BridgedChainSignature(u32); - #[derive(Debug, PartialEq, Decode, Encode)] - enum BridgedChainCall {} - - macro_rules! impl_wrapped_balance { - ($name:ident) => { - #[derive(Debug, PartialEq, Decode, Encode, Clone, Copy)] - struct $name(u32); - - impl From for $name { - fn from(balance: u32) -> Self { - Self(balance) - } - } - - impl sp_std::ops::Add for $name { - type Output = $name; - - fn add(self, other: Self) -> Self { - Self(self.0 + other.0) - } - } - - impl sp_std::ops::Div for $name { - type Output = $name; - - fn div(self, other: Self) -> Self { - Self(self.0 / other.0) - } - } - - impl sp_std::ops::Mul for $name { - type Output = $name; - - fn mul(self, other: Self) -> Self { - Self(self.0 * other.0) - } - } - - impl sp_std::cmp::PartialOrd for $name { - fn partial_cmp(&self, other: &Self) -> Option { - self.0.partial_cmp(&other.0) - } - } - - impl CheckedAdd for $name { - fn checked_add(&self, other: &Self) -> Option { - self.0.checked_add(other.0).map(Self) - } - } - - impl CheckedDiv for $name { - fn checked_div(&self, other: &Self) -> Option { - self.0.checked_div(other.0).map(Self) - } - } - - impl CheckedMul for $name { - fn checked_mul(&self, other: &Self) -> Option { - self.0.checked_mul(other.0).map(Self) - } - } - }; - } - - impl_wrapped_balance!(ThisChainBalance); - impl_wrapped_balance!(BridgedChainBalance); - - struct ThisChain; - - impl ChainWithMessages for ThisChain { - type Hash = (); - type AccountId = ThisChainAccountId; - type Signer = ThisChainSigner; - type Signature = ThisChainSignature; - type Weight = frame_support::weights::Weight; - type Balance = ThisChainBalance; - } - - impl ThisChainWithMessages for ThisChain { - type Call = ThisChainCall; - - fn is_outbound_lane_enabled(lane: &LaneId) -> bool { - lane == TEST_LANE_ID - } - - fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { - MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE - } - - fn estimate_delivery_confirmation_transaction() -> MessageTransaction> { - MessageTransaction { - dispatch_weight: DELIVERY_CONFIRMATION_TRANSACTION_WEIGHT, - size: 0, - } - } - - fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf { - ThisChainBalance(transaction.dispatch_weight as u32 * THIS_CHAIN_WEIGHT_TO_BALANCE_RATE as u32) - } - } - - impl BridgedChainWithMessages for ThisChain { - fn maximal_extrinsic_size() -> u32 { - unreachable!() - } - - fn message_weight_limits(_message_payload: &[u8]) -> RangeInclusive { - unreachable!() - } - - fn estimate_delivery_transaction( - _message_payload: &[u8], - _include_pay_dispatch_fee_cost: bool, - _message_dispatch_weight: WeightOf, - ) -> MessageTransaction> { - unreachable!() - } - - fn transaction_payment(_transaction: MessageTransaction>) -> BalanceOf { - unreachable!() - } - } - - struct BridgedChain; - - impl ChainWithMessages for BridgedChain { - type Hash = (); - type AccountId = BridgedChainAccountId; - type Signer = BridgedChainSigner; - type Signature = BridgedChainSignature; - type Weight = frame_support::weights::Weight; - type Balance = BridgedChainBalance; - } - - impl ThisChainWithMessages for BridgedChain { - type Call = BridgedChainCall; - - fn is_outbound_lane_enabled(_lane: &LaneId) -> bool { - unreachable!() - } - - fn maximal_pending_messages_at_outbound_lane() -> MessageNonce { - unreachable!() - } - - fn estimate_delivery_confirmation_transaction() -> MessageTransaction> { - unreachable!() - } - - fn transaction_payment(_transaction: MessageTransaction>) -> BalanceOf { - unreachable!() - } - } - - impl BridgedChainWithMessages for BridgedChain { - fn maximal_extrinsic_size() -> u32 { - BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE - } - - fn message_weight_limits(message_payload: &[u8]) -> RangeInclusive { - let begin = std::cmp::min(BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, message_payload.len() as Weight); - begin..=BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT - } - - fn estimate_delivery_transaction( - _message_payload: &[u8], - _include_pay_dispatch_fee_cost: bool, - message_dispatch_weight: WeightOf, - ) -> MessageTransaction> { - MessageTransaction { - dispatch_weight: DELIVERY_TRANSACTION_WEIGHT + message_dispatch_weight, - size: 0, - } - } - - fn transaction_payment(transaction: MessageTransaction>) -> BalanceOf { - BridgedChainBalance(transaction.dispatch_weight as u32 * BRIDGED_CHAIN_WEIGHT_TO_BALANCE_RATE as u32) - } - } - - fn test_lane_outbound_data() -> OutboundLaneData { - OutboundLaneData::default() - } - - #[test] - fn message_from_bridged_chain_is_decoded() { - // the message is encoded on the bridged chain - let message_on_bridged_chain = source::FromThisChainMessagePayload:: { - spec_version: 1, - weight: 100, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - call: ThisChainCall::Transfer.encode(), - } - .encode(); - - // and sent to this chain where it is decoded - let message_on_this_chain = - target::FromBridgedChainMessagePayload::::decode(&mut &message_on_bridged_chain[..]) - .unwrap(); - assert_eq!( - message_on_this_chain, - target::FromBridgedChainMessagePayload:: { - spec_version: 1, - weight: 100, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - call: target::FromBridgedChainEncodedMessageCall::::new( - ThisChainCall::Transfer.encode(), - ), - } - ); - assert_eq!(Ok(ThisChainCall::Transfer), message_on_this_chain.call.into()); - } - - const TEST_LANE_ID: &LaneId = b"test"; - const MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE: MessageNonce = 32; - - fn regular_outbound_message_payload() -> source::FromThisChainMessagePayload { - source::FromThisChainMessagePayload:: { - spec_version: 1, - weight: 100, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![42], - } - } - - #[test] - fn message_fee_is_checked_by_verifier() { - const EXPECTED_MINIMAL_FEE: u32 = 5500; - - // payload of the This -> Bridged chain message - let payload = regular_outbound_message_payload(); - - // let's check if estimation matching hardcoded value - assert_eq!( - source::estimate_message_dispatch_and_delivery_fee::( - &payload, - OnThisChainBridge::RELAYER_FEE_PERCENT, - ), - Ok(ThisChainBalance(EXPECTED_MINIMAL_FEE)), - ); - - // let's check if estimation is less than hardcoded, if dispatch is paid at target chain - let mut payload_with_pay_on_target = regular_outbound_message_payload(); - payload_with_pay_on_target.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; - let fee_at_source = source::estimate_message_dispatch_and_delivery_fee::( - &payload_with_pay_on_target, - OnThisChainBridge::RELAYER_FEE_PERCENT, - ) - .expect("estimate_message_dispatch_and_delivery_fee failed for pay-at-target-chain message"); - assert!( - fee_at_source < EXPECTED_MINIMAL_FEE.into(), - "Computed fee {:?} without prepaid dispatch must be less than the fee with prepaid dispatch {}", - fee_at_source, - EXPECTED_MINIMAL_FEE, - ); - - // and now check that the verifier checks the fee - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Root, - &ThisChainBalance(1), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ), - Err(source::TOO_LOW_FEE) - ); - assert!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Root, - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ) - .is_ok(), - ); - } - - #[test] - fn should_disallow_root_calls_from_regular_accounts() { - // payload of the This -> Bridged chain message - let payload = source::FromThisChainMessagePayload:: { - spec_version: 1, - weight: 100, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![42], - }; - - // and now check that the verifier checks the fee - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Signed(ThisChainAccountId(0)), - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ), - Err(source::BAD_ORIGIN) - ); - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::None, - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ), - Err(source::BAD_ORIGIN) - ); - assert!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Root, - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ) - .is_ok(), - ); - } - - #[test] - fn should_verify_source_and_target_origin_matching() { - // payload of the This -> Bridged chain message - let payload = source::FromThisChainMessagePayload:: { - spec_version: 1, - weight: 100, - origin: bp_message_dispatch::CallOrigin::SourceAccount(ThisChainAccountId(1)), - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![42], - }; - - // and now check that the verifier checks the fee - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Signed(ThisChainAccountId(0)), - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ), - Err(source::BAD_ORIGIN) - ); - assert!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Signed(ThisChainAccountId(1)), - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &test_lane_outbound_data(), - &payload, - ) - .is_ok(), - ); - } - - #[test] - fn message_is_rejected_when_sent_using_disabled_lane() { - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Root, - &ThisChainBalance(1_000_000), - b"dsbl", - &test_lane_outbound_data(), - ®ular_outbound_message_payload(), - ), - Err(source::OUTBOUND_LANE_DISABLED) - ); - } - - #[test] - fn message_is_rejected_when_there_are_too_many_pending_messages_at_outbound_lane() { - assert_eq!( - source::FromThisChainMessageVerifier::::verify_message( - &Sender::Root, - &ThisChainBalance(1_000_000), - TEST_LANE_ID, - &OutboundLaneData { - latest_received_nonce: 100, - latest_generated_nonce: 100 + MAXIMAL_PENDING_MESSAGES_AT_TEST_LANE + 1, - ..Default::default() - }, - ®ular_outbound_message_payload(), - ), - Err(source::TOO_MANY_PENDING_MESSAGES) - ); - } - - #[test] - fn verify_chain_message_rejects_message_with_too_small_declared_weight() { - assert!( - source::verify_chain_message::(&source::FromThisChainMessagePayload::< - OnThisChainBridge, - > { - spec_version: 1, - weight: 5, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![1, 2, 3, 4, 5, 6], - },) - .is_err() - ); - } - - #[test] - fn verify_chain_message_rejects_message_with_too_large_declared_weight() { - assert!( - source::verify_chain_message::(&source::FromThisChainMessagePayload::< - OnThisChainBridge, - > { - spec_version: 1, - weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT + 1, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![1, 2, 3, 4, 5, 6], - },) - .is_err() - ); - } - - #[test] - fn verify_chain_message_rejects_message_too_large_message() { - assert!( - source::verify_chain_message::(&source::FromThisChainMessagePayload::< - OnThisChainBridge, - > { - spec_version: 1, - weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![0; source::maximal_message_size::() as usize + 1], - },) - .is_err() - ); - } - - #[test] - fn verify_chain_message_accepts_maximal_message() { - assert_eq!( - source::verify_chain_message::(&source::FromThisChainMessagePayload::< - OnThisChainBridge, - > { - spec_version: 1, - weight: BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT, - origin: bp_message_dispatch::CallOrigin::SourceRoot, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: vec![0; source::maximal_message_size::() as _], - },), - Ok(()), - ); - } - - #[derive(Debug)] - struct TestMessageProofParser { - failing: bool, - messages: RangeInclusive, - outbound_lane_data: Option, - } - - impl target::MessageProofParser for TestMessageProofParser { - fn read_raw_outbound_lane_data(&self, _lane_id: &LaneId) -> Option> { - if self.failing { - Some(vec![]) - } else { - self.outbound_lane_data.clone().map(|data| data.encode()) - } - } - - fn read_raw_message(&self, message_key: &MessageKey) -> Option> { - if self.failing { - Some(vec![]) - } else if self.messages.contains(&message_key.nonce) { - Some( - MessageData:: { - payload: message_key.nonce.encode(), - fee: BridgedChainBalance(0), - } - .encode(), - ) - } else { - None - } - } - } - - #[allow(clippy::reversed_empty_ranges)] - fn no_messages_range() -> RangeInclusive { - 1..=0 - } - - fn messages_proof(nonces_end: MessageNonce) -> target::FromBridgedChainMessagesProof<()> { - target::FromBridgedChainMessagesProof { - bridged_header_hash: (), - storage_proof: vec![], - lane: Default::default(), - nonces_start: 1, - nonces_end, - } - } - - #[test] - fn messages_proof_is_rejected_if_declared_less_than_actual_number_of_messages() { - assert_eq!( - target::verify_messages_proof_with_parser::( - messages_proof(10), - 5, - |_, _| unreachable!(), - ), - Err(target::MessageProofError::MessagesCountMismatch), - ); - } - - #[test] - fn messages_proof_is_rejected_if_declared_more_than_actual_number_of_messages() { - assert_eq!( - target::verify_messages_proof_with_parser::( - messages_proof(10), - 15, - |_, _| unreachable!(), - ), - Err(target::MessageProofError::MessagesCountMismatch), - ); - } - - #[test] - fn message_proof_is_rejected_if_build_parser_fails() { - assert_eq!( - target::verify_messages_proof_with_parser::( - messages_proof(10), - 10, - |_, _| Err(target::MessageProofError::Custom("test")), - ), - Err(target::MessageProofError::Custom("test")), - ); - } - - #[test] - fn message_proof_is_rejected_if_required_message_is_missing() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(10), 10, |_, _| Ok( - TestMessageProofParser { - failing: false, - messages: 1..=5, - outbound_lane_data: None, - } - ),), - Err(target::MessageProofError::MissingRequiredMessage), - ); - } - - #[test] - fn message_proof_is_rejected_if_message_decode_fails() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(10), 10, |_, _| Ok( - TestMessageProofParser { - failing: true, - messages: 1..=10, - outbound_lane_data: None, - } - ),), - Err(target::MessageProofError::FailedToDecodeMessage), - ); - } - - #[test] - fn message_proof_is_rejected_if_outbound_lane_state_decode_fails() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(0), 0, |_, _| Ok( - TestMessageProofParser { - failing: true, - messages: no_messages_range(), - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - } - ),), - Err(target::MessageProofError::FailedToDecodeOutboundLaneState), - ); - } - - #[test] - fn message_proof_is_rejected_if_it_is_empty() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(0), 0, |_, _| Ok( - TestMessageProofParser { - failing: false, - messages: no_messages_range(), - outbound_lane_data: None, - } - ),), - Err(target::MessageProofError::Empty), - ); - } - - #[test] - fn non_empty_message_proof_without_messages_is_accepted() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(0), 0, |_, _| Ok( - TestMessageProofParser { - failing: false, - messages: no_messages_range(), - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - } - ),), - Ok(vec![( - Default::default(), - ProvedLaneMessages { - lane_state: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - messages: Vec::new(), - }, - )] - .into_iter() - .collect()), - ); - } - - #[test] - fn non_empty_message_proof_is_accepted() { - assert_eq!( - target::verify_messages_proof_with_parser::(messages_proof(1), 1, |_, _| Ok( - TestMessageProofParser { - failing: false, - messages: 1..=1, - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - } - ),), - Ok(vec![( - Default::default(), - ProvedLaneMessages { - lane_state: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - messages: vec![Message { - key: MessageKey { - lane_id: Default::default(), - nonce: 1 - }, - data: MessageData { - payload: 1u64.encode(), - fee: BridgedChainBalance(0) - }, - }], - }, - )] - .into_iter() - .collect()), - ); - } - - #[test] - fn verify_messages_proof_with_parser_does_not_panic_if_messages_count_mismatches() { - assert_eq!( - target::verify_messages_proof_with_parser::( - messages_proof(u64::MAX), - 0, - |_, _| Ok(TestMessageProofParser { - failing: false, - messages: 0..=u64::MAX, - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 1, - latest_received_nonce: 1, - latest_generated_nonce: 1, - }), - }), - ), - Err(target::MessageProofError::MessagesCountMismatch), - ); - } - - #[test] - fn transaction_payment_works_with_zero_multiplier() { - use sp_runtime::traits::Zero; - - assert_eq!( - transaction_payment( - 100, - 10, - FixedU128::zero(), - |weight| weight, - MessageTransaction { - size: 50, - dispatch_weight: 777 - }, - ), - 100 + 50 * 10, - ); - } - - #[test] - fn transaction_payment_works_with_non_zero_multiplier() { - use sp_runtime::traits::One; - - assert_eq!( - transaction_payment( - 100, - 10, - FixedU128::one(), - |weight| weight, - MessageTransaction { - size: 50, - dispatch_weight: 777 - }, - ), - 100 + 50 * 10 + 777, - ); - } -} diff --git a/bridges/deployments/README.md b/bridges/deployments/README.md deleted file mode 100644 index d553fca611a6..000000000000 --- a/bridges/deployments/README.md +++ /dev/null @@ -1,254 +0,0 @@ -# Bridge Deployments - -## Requirements -Make sure to install `docker` and `docker-compose` to be able to run and test bridge deployments. If -for whatever reason you can't or don't want to use Docker, you can find some scripts for running the -bridge [here](https://github.com/svyatonik/parity-bridges-common.test). - -## Networks -One of the building blocks we use for our deployments are _networks_. A network is a collection of -homogenous blockchain nodes. We have Docker Compose files for each network that we want to bridge. -Each of the compose files found in the `./networks` folder is able to independently spin up a -network like so: - -```bash -docker-compose -f ./networks/rialto.yml up -``` - -After running this command we would have a network of several nodes producing blocks. - -## Bridges -A _bridge_ is a way for several _networks_ to connect to one another. Bridge deployments have their -own Docker Compose files which can be found in the `./bridges` folder. These Compose files typically -contain bridge relayers, which are services external to blockchain nodes, and other components such -as testing infrastructure, or user interfaces. - -Unlike the network Compose files, these *cannot* be deployed on their own. They must be combined -with different networks. - -In general, we can deploy the bridge using `docker-compose up` in the following way: - -```bash -docker-compose -f .yml \ - -f .yml \ - -f .yml \ - -f .yml up -``` - -If you want to see how the Compose commands are actually run, check out the source code of the -[`./run.sh`](./run.sh). - -One thing worth noting is that we have a _monitoring_ Compose file. This adds support for Prometheus -and Grafana. We cover these in more details in the [Monitoring](#monitoring) section. At the moment -the monitoring Compose file is _not_ optional, and must be included for bridge deployments. - -### Running and Updating Deployments -We currently support two bridge deployments -1. Ethereum PoA to Rialto Substrate -2. Rialto Substrate to Millau Substrate - -These bridges can be deployed using our [`./run.sh`](./run.sh) script. - -The first argument it takes is the name of the bridge you want to run. Right now we only support two -bridges: `poa-rialto` and `rialto-millau`. - -```bash -./run.sh poa-rialto -``` - -If you add a second `update` argument to the script it will pull the latest images from Docker Hub -and restart the deployment. - -```bash -./run.sh rialto-millau update -``` - -You can also bring down a deployment using the script with the `stop` argument. - -```bash -./run.sh poa-rialto stop -``` - -### Adding Deployments -We need two main things when adding a new deployment. First, the new network which we want to -bridge. A compose file for the network should be added in the `/networks/` folder. Secondly we'll -need a new bridge Compose file in `./bridges/`. This should configure the bridge relayer nodes -correctly for the two networks, and add any additional components needed for the deployment. If you -want you can also add support in the `./run` script for the new deployment. While recommended it's -not strictly required. - -## General Notes - -Rialto authorities are named: `Alice`, `Bob`, `Charlie`, `Dave`, `Eve`. -Rialto-PoA authorities are named: `Arthur`, `Bertha`, `Carlos`. -Millau authorities are named: `Alice`, `Bob`, `Charlie`, `Dave`, `Eve`. - -Both authorities and following accounts have enough funds (for test purposes) on corresponding Substrate chains: - -- on Rialto: `Ferdie`, `George`, `Harry`. -- on Millau: `Ferdie`, `George`, `Harry`. - -Names of accounts on Substrate (Rialto and Millau) chains may be prefixed with `//` and used as -seeds for the `sr25519` keys. This seed may also be used in the signer argument in Substrate -and PoA relays. Example: - -```bash -./substrate-relay relay-headers RialtoToMillau \ - --source-host rialto-node-alice \ - --source-port 9944 \ - --target-host millau-node-alice \ - --target-port 9944 \ - --source-signer //Harry \ - --prometheus-host=0.0.0.0 -``` - -Some accounts are used by bridge components. Using these accounts to sign other transactions -is not recommended, because this may lead to nonces conflict. - -Following accounts are used when `poa-rialto` bridge is running: - -- Rialto's `Alice` signs relay transactions with new Rialto-PoA headers; -- Rialto's `Bob` signs relay transactions with Rialto-PoA -> Rialto currency exchange proofs. -- Rialto-PoA's `Arthur`: signs relay transactions with new Rialto headers; -- Rialto-PoA's `Bertha`: signs currency exchange transactions. - -Following accounts are used when `rialto-millau` bridge is running: - -- Millau's `Charlie` signs complex headers+messages relay transactions on Millau chain; -- Rialto's `Charlie` signs complex headers+messages relay transactions on Rialto chain; -- Millau's `Dave` signs Millau transactions which contain messages for Rialto; -- Rialto's `Dave` signs Rialto transactions which contain messages for Millau; -- Millau's `Eve` signs relay transactions with message delivery confirmations (lane 00000001) from Rialto to Millau; -- Rialto's `Eve` signs relay transactions with messages (lane 00000001) from Millau to Rialto; -- Millau's `Ferdie` signs relay transactions with messages (lane 00000001) from Rialto to Millau; -- Rialto's `Ferdie` signs relay transactions with message delivery confirmations (lane 00000001) from Millau to Rialto. - -Following accounts are used when `westend-millau` bridge is running: - -- Millau's `George` signs relay transactions with new Westend headers. - -### Docker Usage -When the network is running you can query logs from individual nodes using: - -```bash -docker logs rialto_poa-node-bertha_1 -f -``` - -To kill all left over containers and start the network from scratch next time: -```bash -docker ps -a --format "{{.ID}}" | xargs docker rm # This removes all containers! -``` - -### Docker Compose Usage -If you're not familiar with how to use `docker-compose` here are some useful commands you'll need -when interacting with the bridge deployments: - -```bash -docker-compose pull # Get the latest images from the Docker Hub -docker-compose build # This is going to build images -docker-compose up # Start all the nodes -docker-compose up -d # Start the nodes in detached mode. -docker-compose down # Stop the network. -``` - -Note that for the you'll need to add the appropriate `-f` arguments that were mentioned in the -[Bridges](#bridges) section. You can read more about using multiple Compose files -[here](https://docs.docker.com/compose/extends/#multiple-compose-files). One thing worth noting is -that the _order_ the compose files are specified in matters. A different order will result in a -different configuration. - -You can sanity check the final config like so: - -```bash -docker-compose -f docker-compose.yml -f docker-compose.override.yml config > docker-compose.merged.yml -``` - -## Docker and Git Deployment -It is also possible to avoid using images from the Docker Hub and instead build -containers from Git. There are two ways to build the images this way. - -### Git Repo -If you have cloned the bridges repo you can build local Docker images by running the following -command at the top level of the repo: - -```bash -docker build . -t local/ --build-arg=PROJECT= -``` - -This will build a local image of a particular component with a tag of -`local/`. This tag can be used in Docker Compose files. - -You can configure the build using using Docker -[build arguments](https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg). -Here are the arguments currently supported: - - `BRIDGE_REPO`: Git repository of the bridge node and relay code - - `BRIDGE_HASH`: Commit hash within that repo (can also be a branch or tag) - - `ETHEREUM_REPO`: Git repository of the OpenEthereum client - - `ETHEREUM_HASH`: Commit hash within that repo (can also be a branch or tag) - - `PROJECT`: Project to build withing bridges repo. Can be one of: - - `rialto-bridge-node` - - `millau-bridge-node` - - `ethereum-poa-relay` - - `substrate-relay` - -### GitHub Actions -We have a nightly job which runs and publishes Docker images for the different nodes and relayers to -the [ParityTech Docker Hub](https://hub.docker.com/u/paritytech) organization. These images are used -for our ephemeral (temporary) test networks. Additionally, any time a tag in the form of `v*` is -pushed to GitHub the publishing job is run. This will build all the components (nodes, relayers) and -publish them. - -With images built using either method, all you have to do to use them in a deployment is change the -`image` field in the existing Docker Compose files to point to the tag of the image you want to use. - -### Monitoring -[Prometheus](https://prometheus.io/) is used by the bridge relay to monitor information such as system -resource use, and block data (e.g the best blocks it knows about). In order to visualize this data -a [Grafana](https://grafana.com/) dashboard can be used. - -As part of the Rialto `docker-compose` setup we spin up a Prometheus server and Grafana dashboard. The -Prometheus server connects to the Prometheus data endpoint exposed by the bridge relay. The Grafana -dashboard uses the Prometheus server as its data source. - -The default port for the bridge relay's Prometheus data is `9616`. The host and port can be -configured though the `--prometheus-host` and `--prometheus-port` flags. The Prometheus server's -dashboard can be accessed at `http://localhost:9090`. The Grafana dashboard can be accessed at -`http://localhost:3000`. Note that the default log-in credentials for Grafana are `admin:admin`. - -### Environment Variables -Here is an example `.env` file which is used for production deployments and network updates. For -security reasons it is not kept as part of version control. When deploying a network this -file should be correctly populated and kept in the appropriate [`bridges`](`./bridges`) deployment -folder. - -The `UI_SUBSTRATE_PROVIDER` variable lets you define the url of the Substrate node that the user -interface will connect to. `UI_ETHEREUM_PROVIDER` is used only as a guidance for users to connect -Metamask to the right Ethereum network. `UI_EXPECTED_ETHEREUM_NETWORK_ID` is used by -the user interface as a fail safe to prevent users from connecting their Metamask extension to an -unexpected network. - -```bash -GRAFANA_ADMIN_PASS=admin_pass -GRAFANA_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/ -GRAFANA_SERVER_DOMAIN=server.domain.io -MATRIX_ACCESS_TOKEN="access-token" -WITH_PROXY=1 # Optional -UI_SUBSTRATE_PROVIDER=ws://localhost:9944 -UI_ETHEREUM_PROVIDER=http://localhost:8545 -UI_EXPECTED_ETHEREUM_NETWORK_ID=105 -``` - -### UI - -Use [wss://rialto.bridges.test-installations.parity.io/](https://polkadot.js.org/apps/) -as a custom endpoint for [https://polkadot.js.org/apps/](https://polkadot.js.org/apps/). - -### Polkadot.js UI - -To teach the UI decode our custom types used in the pallet, go to: `Settings -> Developer` -and import the [`./types.json`](./types.json) - -## Scripts - -The are some bash scripts in `scripts` folder that allow testing `Relay` -without running the entire network within docker. Use if needed for development. diff --git a/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile b/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile deleted file mode 100644 index 427f0504e57d..000000000000 --- a/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM node:12 as build-deps - -# install tools and dependencies -RUN set -eux; \ - apt-get install -y git - -# clone UI repo -RUN cd /usr/src/ && git clone https://github.com/paritytech/bridge-ui.git -WORKDIR /usr/src/bridge-ui -RUN yarn -ARG SUBSTRATE_PROVIDER -ARG ETHEREUM_PROVIDER -ARG EXPECTED_ETHEREUM_NETWORK_ID - -ENV SUBSTRATE_PROVIDER $SUBSTRATE_PROVIDER -ENV ETHEREUM_PROVIDER $ETHEREUM_PROVIDER -ENV EXPECTED_ETHEREUM_NETWORK_ID $EXPECTED_ETHEREUM_NETWORK_ID - -RUN yarn build:docker - -# Stage 2 - the production environment -FROM nginx:1.12 -COPY --from=build-deps /usr/src/bridge-ui/nginx/*.conf /etc/nginx/conf.d/ -COPY --from=build-deps /usr/src/bridge-ui/dist /usr/share/nginx/html -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] diff --git a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-exchange-dashboard.json b/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-exchange-dashboard.json deleted file mode 100644 index 7e197bb882f8..000000000000 --- a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-exchange-dashboard.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "links": [], - "panels": [ - { - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 2, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_best_block_numbers", - "instant": true, - "interval": "", - "legendFormat": "Best {{type}} block", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Best finalized blocks", - "type": "stat" - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 5, - "x": 7, - "y": 0 - }, - "id": 12, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_processed_blocks", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Number of processed blocks since last restart", - "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 6, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_system_average_load", - "interval": "", - "legendFormat": "Average system load in last {{over}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": null - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average System Load", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 18, - "y": 0 - }, - "id": 8, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_process_cpu_usage_percentage", - "interval": "", - "legendFormat": "1 CPU = 100", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Relay Process CPU Usage", - "type": "gauge" - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 14, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_processed_transactions", - "instant": true, - "interval": "", - "legendFormat": "{{type}} transactions", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Number of processed transactions since last restart", - "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Ethereum_to_Substrate_Exchange_process_memory_usage_bytes / 1024 / 1024", - "interval": "", - "legendFormat": "Process memory, MB", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage for Relay Process", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "5s", - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Ethereum PoA to Rialto Exchange Dashboard", - "uid": "relay-poa-to-rialto-exchange", - "version": 1 -} diff --git a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-headers-dashboard.json b/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-headers-dashboard.json deleted file mode 100644 index 05d06e949819..000000000000 --- a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-poa-to-rialto-headers-dashboard.json +++ /dev/null @@ -1,694 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "links": [], - "panels": [ - { - "alert": { - "alertRuleTags": {}, - "conditions": [ - { - "evaluator": { - "params": [ - 5 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "min" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "5m", - "frequency": "5m", - "handler": 1, - "message": "", - "name": "Synced Header Difference is Over 5 (Ethereum PoA to Rialto)", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "Shows how many headers behind the target chain is from the source chain.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(Ethereum_to_Substrate_Sync_best_block_numbers{node=\"source\"}) - max(Ethereum_to_Substrate_Sync_best_block_numbers{node=\"target\"})", - "format": "table", - "instant": false, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 5 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Difference Between Source and Target Headers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "alertRuleTags": {}, - "conditions": [ - { - "evaluator": { - "params": [ - 5 - ], - "type": "lt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "2m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "min" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "3m", - "frequency": "5m", - "handler": 1, - "name": "No New Headers (Ethereum PoA to Rialto)", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "How many headers has the relay synced from the source node in the last 2 mins?", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max_over_time(Ethereum_to_Substrate_Sync_best_block_numbers{node=\"source\"}[2m])-min_over_time(Ethereum_to_Substrate_Sync_best_block_numbers{node=\"source\"}[2m])", - "interval": "", - "legendFormat": "Number of new Headers on Ethereum PoA (Last 2 Mins)", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "lt", - "value": 5 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Headers Synced on Rialto (Last 2 Mins)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": { - "align": null - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 2, - "interval": "5s", - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Sync_best_block_numbers", - "format": "time_series", - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "Best Known Header on {{node}} Node", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Best Blocks according to Relay", - "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Ethereum_to_Substrate_Sync_system_average_load", - "interval": "", - "legendFormat": "Average system load in last {{over}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": null - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average System Load", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 8 - }, - "id": 12, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "avg_over_time(Ethereum_to_Substrate_Sync_process_cpu_usage_percentage[1m])", - "instant": true, - "interval": "", - "legendFormat": "1 CPU = 100", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Relay Process CPU Usage ", - "type": "gauge" - }, - { - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 4, - "options": { - "displayMode": "gradient", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showUnfilled": true - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Ethereum_to_Substrate_Sync_blocks_in_state", - "instant": true, - "interval": "", - "legendFormat": "{{state}}", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Queued Headers in Relay", - "type": "bargauge" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Ethereum_to_Substrate_Sync_process_memory_usage_bytes / 1024 / 1024", - "interval": "", - "legendFormat": "Process memory, MB", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage for Relay Process", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "5s", - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Ethereum PoA to Rialto Header Sync Dashboard", - "uid": "relay-poa-to-rialto-headers", - "version": 1 -} diff --git a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-rialto-to-poa-headers-dashboard.json b/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-rialto-to-poa-headers-dashboard.json deleted file mode 100644 index 149c637fcb15..000000000000 --- a/bridges/deployments/bridges/poa-rialto/dashboard/grafana/relay-rialto-to-poa-headers-dashboard.json +++ /dev/null @@ -1,694 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "links": [], - "panels": [ - { - "alert": { - "alertRuleTags": {}, - "conditions": [ - { - "evaluator": { - "params": [ - 5 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "min" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "5m", - "frequency": "5m", - "handler": 1, - "message": "", - "name": "Synced Header Difference is Over 5 (Rialto to Ethereum PoA)", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "Shows how many headers behind the target chain is from the source chain.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(Substrate_to_Ethereum_Sync_best_block_numbers{node=\"source\"}) - max(Substrate_to_Ethereum_Sync_best_block_numbers{node=\"target\"})", - "format": "table", - "instant": false, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 5 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Difference Between Source and Target Headers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "alertRuleTags": {}, - "conditions": [ - { - "evaluator": { - "params": [ - 5 - ], - "type": "lt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "2m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "min" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "3m", - "frequency": "5m", - "handler": 1, - "name": "No New Headers (Rialto to Ethereum PoA)", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "How many headers has the relay synced from the source node in the last 2 mins?", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max_over_time(Substrate_to_Ethereum_Sync_best_block_numbers{node=\"source\"}[2m])-min_over_time(Substrate_to_Ethereum_Sync_best_block_numbers{node=\"source\"}[2m])", - "interval": "", - "legendFormat": "Number of new Headers on Rialto (Last 2 Mins)", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "lt", - "value": 5 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Headers Synced on Ethereum PoA (Last 2 Mins)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": { - "align": null - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 2, - "interval": "5s", - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Substrate_to_Ethereum_Sync_best_block_numbers", - "format": "time_series", - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "Best Known Header on {{node}} Node", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Best Blocks according to Relay", - "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Substrate_to_Ethereum_Sync_system_average_load", - "interval": "", - "legendFormat": "Average system load in last {{over}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": null - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average System Load", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 8 - }, - "id": 12, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "avg_over_time(Substrate_to_Ethereum_Sync_process_cpu_usage_percentage[1m])", - "instant": true, - "interval": "", - "legendFormat": "1 CPU = 100", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Relay Process CPU Usage ", - "type": "gauge" - }, - { - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 4, - "options": { - "displayMode": "gradient", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showUnfilled": true - }, - "pluginVersion": "7.1.3", - "targets": [ - { - "expr": "Substrate_to_Ethereum_Sync_blocks_in_state", - "instant": true, - "interval": "", - "legendFormat": "{{state}}", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Queued Headers in Relay", - "type": "bargauge" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "Substrate_to_Ethereum_Sync_process_memory_usage_bytes / 1024 / 1024", - "interval": "", - "legendFormat": "Process memory, MB", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage for Relay Process", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "5s", - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rialto to Ethereum PoA Header Sync Dashboard", - "uid": "relay-rialto-to-poa-headers", - "version": 1 -} diff --git a/bridges/deployments/bridges/poa-rialto/dashboard/prometheus/targets.yml b/bridges/deployments/bridges/poa-rialto/dashboard/prometheus/targets.yml deleted file mode 100644 index b0038008ef6d..000000000000 --- a/bridges/deployments/bridges/poa-rialto/dashboard/prometheus/targets.yml +++ /dev/null @@ -1,4 +0,0 @@ -- targets: - - relay-headers-poa-to-rialto:9616 - - relay-poa-exchange-rialto:9616 - - relay-headers-rialto-to-poa:9616 diff --git a/bridges/deployments/bridges/poa-rialto/docker-compose.yml b/bridges/deployments/bridges/poa-rialto/docker-compose.yml deleted file mode 100644 index 6bdcb2301242..000000000000 --- a/bridges/deployments/bridges/poa-rialto/docker-compose.yml +++ /dev/null @@ -1,94 +0,0 @@ -# This Compose file should be built using the Rialto and Eth-PoA node -# compose files. Otherwise it won't work. -# -# Exposed ports: 9616, 9716, 9816, 9916, 8080 - -version: '3.5' -services: - # We override these nodes to make sure we have the correct chain config for this network. - poa-node-arthur: &poa-node - volumes: - - ./bridges/poa-rialto/poa-config:/config - poa-node-bertha: - <<: *poa-node - poa-node-carlos: - <<: *poa-node - - # We provide an override for this particular node since this is a public facing - # node which we use to connect from things like Polkadot JS Apps. - rialto-node-charlie: - environment: - VIRTUAL_HOST: rialto.bridges.test-installations.parity.io,wss.rialto.brucke.link - VIRTUAL_PORT: 9944 - LETSENCRYPT_HOST: rialto.bridges.test-installations.parity.io,wss.rialto.brucke.link - LETSENCRYPT_EMAIL: admin@parity.io - - relay-headers-poa-to-rialto: ð-poa-relay - image: paritytech/ethereum-poa-relay - entrypoint: /entrypoints/relay-headers-poa-to-rialto-entrypoint.sh - volumes: - - ./bridges/poa-rialto/entrypoints:/entrypoints - environment: - RUST_LOG: rpc=trace,bridge=trace - ports: - - "9616:9616" - depends_on: &all-nodes - - poa-node-arthur - - poa-node-bertha - - poa-node-carlos - - rialto-node-alice - - rialto-node-bob - - rialto-node-charlie - - rialto-node-dave - - rialto-node-eve - - relay-poa-exchange-rialto: - <<: *eth-poa-relay - entrypoint: /entrypoints/relay-poa-exchange-rialto-entrypoint.sh - ports: - - "9716:9616" - - relay-headers-rialto-to-poa: - <<: *eth-poa-relay - entrypoint: /entrypoints/relay-headers-rialto-to-poa-entrypoint.sh - ports: - - "9816:9616" - - poa-exchange-tx-generator: - <<: *eth-poa-relay - entrypoint: /entrypoints/poa-exchange-tx-generator-entrypoint.sh - environment: - EXCHANGE_GEN_MIN_AMOUNT_FINNEY: ${EXCHANGE_GEN_MIN_AMOUNT_FINNEY:-1} - EXCHANGE_GEN_MAX_AMOUNT_FINNEY: ${EXCHANGE_GEN_MAX_AMOUNT_FINNEY:-100000} - EXCHANGE_GEN_MAX_SUBMIT_DELAY_S: ${EXCHANGE_GEN_MAX_SUBMIT_DELAY_S:-60} - ports: - - "9916:9616" - depends_on: - - relay-headers-poa-to-rialto - - relay-headers-rialto-to-poa - - front-end: - build: - context: . - dockerfile: ./bridges/poa-rialto/Front-end.Dockerfile - args: - SUBSTRATE_PROVIDER: ${UI_SUBSTRATE_PROVIDER:-ws://localhost:9944} - ETHEREUM_PROVIDER: ${UI_ETHEREUM_PROVIDER:-http://localhost:8545} - EXPECTED_ETHEREUM_NETWORK_ID: ${UI_EXPECTED_ETHEREUM_NETWORK_ID:-105} - ports: - - "8080:80" - - # Note: These are being overridden from the top level `monitoring` compose file. - prometheus-metrics: - volumes: - - ./bridges/poa-rialto/dashboard/prometheus/targets.yml:/etc/prometheus/targets-poa-rialto.yml - depends_on: *all-nodes - - grafana-dashboard: - volumes: - - ./bridges/poa-rialto/dashboard/grafana:/etc/grafana/dashboards/poa-rialto:ro - environment: - VIRTUAL_HOST: dashboard.rialto.bridges.test-installations.parity.io,grafana.rialto.brucke.link - VIRTUAL_PORT: 3000 - LETSENCRYPT_HOST: dashboard.rialto.bridges.test-installations.parity.io,grafana.rialto.brucke.link - LETSENCRYPT_EMAIL: admin@parity.io diff --git a/bridges/deployments/bridges/poa-rialto/entrypoints/poa-exchange-tx-generator-entrypoint.sh b/bridges/deployments/bridges/poa-rialto/entrypoints/poa-exchange-tx-generator-entrypoint.sh deleted file mode 100755 index 9af373b0216f..000000000000 --- a/bridges/deployments/bridges/poa-rialto/entrypoints/poa-exchange-tx-generator-entrypoint.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -# THIS SCRIPT IS NOT INTENDED FOR USE IN PRODUCTION ENVIRONMENT -# -# This scripts periodically calls relay binary to generate PoA -> Substrate -# exchange transaction from hardcoded PoA senders (assuming they have -# enough funds) to hardcoded Substrate recipients. - -set -eu - -# Path to relay binary -RELAY_BINARY_PATH=${RELAY_BINARY_PATH:-./ethereum-poa-relay} -# Ethereum node host -ETH_HOST=${ETH_HOST:-poa-node-arthur} -# Ethereum node websocket port -ETH_PORT=${ETH_PORT:-8546} -# Ethereum chain id -ETH_CHAIN_ID=${ETH_CHAIN_ID:-105} - -# All possible Substrate recipients (hex-encoded public keys) -SUB_RECIPIENTS=( - # Alice (5GrwvaEF...) - "d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d"\ - # Bob (5FHneW46...) - "8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48"\ - # Charlie (5FLSigC9...) - "90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22"\ - # Dave (5DAAnrj7...) - "306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20"\ - # Eve (5HGjWAeF...) - "e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e"\ - # Ferdie (5CiPPseX...) - "1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c" -) -# All possible Ethereum signers (hex-encoded private keys) -# (note that we're tracking nonce here => sender must not send concurrent transactions) -ETH_SIGNERS=( - # Bertha account (0x007594304039c2937a12220338aab821d819f5a4) and its current nonce (unknown by default) - "bc10e0f21e33456ade82182dd1ebdbdd89bca923d4e4adbd90fb5b44d7098cbe" "" -) -# Minimal exchange amount (in finney) -MIN_EXCHANGE_AMOUNT_FINNEY=${EXCHANGE_GEN_MIN_AMOUNT_FINNEY:-1} # 0.1 ETH -# Maximal exchange amount (in finney) -MAX_EXCHANGE_AMOUNT_FINNEY=${EXCHANGE_GEN_MAX_AMOUNT_FINNEY:-100000} # 100 ETH -# Max delay before submitting transactions (s) -MAX_SUBMIT_DELAY_S=${EXCHANGE_GEN_MAX_SUBMIT_DELAY_S:-60} - -while true -do - # sleep some time - SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1` - echo "Sleeping $SUBMIT_DELAY_S seconds..." - sleep $SUBMIT_DELAY_S - - # select recipient - SUB_RECIPIENTS_MAX_INDEX=$((${#SUB_RECIPIENTS[@]} - 1)) - SUB_RECIPIENT_INDEX=`shuf -i 0-$SUB_RECIPIENTS_MAX_INDEX -n 1` - SUB_RECIPIENT=${SUB_RECIPIENTS[$SUB_RECIPIENT_INDEX]} - - # select signer - ETH_SIGNERS_MAX_INDEX=$(((${#ETH_SIGNERS[@]} - 1) / 2)) - ETH_SIGNERS_INDEX=`shuf -i 0-$ETH_SIGNERS_MAX_INDEX -n 1` - ETH_SIGNER_INDEX=$(($ETH_SIGNERS_INDEX * 2)) - ETH_SIGNER_NONCE_INDEX=$(($ETH_SIGNER_INDEX + 1)) - ETH_SIGNER=${ETH_SIGNERS[$ETH_SIGNER_INDEX]} - ETH_SIGNER_NONCE=${ETH_SIGNERS[$ETH_SIGNER_NONCE_INDEX]} - if [ -z $ETH_SIGNER_NONCE ]; then - ETH_SIGNER_NONCE_ARG= - else - ETH_SIGNER_NONCE_ARG=`printf -- "--eth-nonce=%s" $ETH_SIGNER_NONCE` - fi - - # select amount - EXCHANGE_AMOUNT_FINNEY=`shuf -i $MIN_EXCHANGE_AMOUNT_FINNEY-$MAX_EXCHANGE_AMOUNT_FINNEY -n 1` - EXCHANGE_AMOUNT_ETH=`printf "%s000" $EXCHANGE_AMOUNT_FINNEY` - - # submit transaction - echo "Sending $EXCHANGE_AMOUNT_ETH from PoA:$ETH_SIGNER to Substrate:$SUB_RECIPIENT. Nonce: $ETH_SIGNER_NONCE" - set -x - SUBMIT_OUTPUT=`$RELAY_BINARY_PATH 2>&1 eth-submit-exchange-tx \ - --sub-recipient=$SUB_RECIPIENT \ - --eth-host=$ETH_HOST \ - --eth-port=$ETH_PORT \ - --eth-chain-id=$ETH_CHAIN_ID \ - --eth-signer=$ETH_SIGNER \ - --eth-amount=$EXCHANGE_AMOUNT_ETH \ - $ETH_SIGNER_NONCE_ARG` - set +x - - # update sender nonce - SUBMIT_OUTPUT_RE='nonce: ([0-9]+)' - if [[ $SUBMIT_OUTPUT =~ $SUBMIT_OUTPUT_RE ]]; then - ETH_SIGNER_NONCE=${BASH_REMATCH[1]} - ETH_SIGNERS[$ETH_SIGNER_NONCE_INDEX]=$(($ETH_SIGNER_NONCE + 1)) - else - echo "Missing nonce in relay response: $SUBMIT_OUTPUT" - exit 1 - fi -done diff --git a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-poa-to-rialto-entrypoint.sh b/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-poa-to-rialto-entrypoint.sh deleted file mode 100755 index 432cdd6b72c5..000000000000 --- a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-poa-to-rialto-entrypoint.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -set -xeu - -sleep 20 -curl -v http://poa-node-arthur:8545/api/health -curl -v http://poa-node-bertha:8545/api/health -curl -v http://poa-node-carlos:8545/api/health -curl -v http://rialto-node-alice:9933/health -curl -v http://rialto-node-bob:9933/health -curl -v http://rialto-node-charlie:9933/health - -/home/user/ethereum-poa-relay eth-to-sub \ - --sub-host rialto-node-alice \ - --eth-host poa-node-arthur \ - --prometheus-host=0.0.0.0 diff --git a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-rialto-to-poa-entrypoint.sh b/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-rialto-to-poa-entrypoint.sh deleted file mode 100755 index 1677cc1accde..000000000000 --- a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-headers-rialto-to-poa-entrypoint.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -set -xeu - -sleep 20 - -curl -v http://rialto-node-bob:9933/health -curl -v http://poa-node-bertha:8545/api/health - -# Try to deploy contracts first -# networkID = 0x69 -# Arthur's key. -/home/user/ethereum-poa-relay eth-deploy-contract \ - --eth-chain-id 105 \ - --eth-signer 0399dbd15cf6ee8250895a1f3873eb1e10e23ca18e8ed0726c63c4aea356e87d \ - --sub-host rialto-node-bob \ - --eth-host poa-node-bertha || echo "Failed to deploy contracts." - -sleep 10 -echo "Starting SUB -> ETH relay" -/home/user/ethereum-poa-relay sub-to-eth \ - --eth-contract c9a61fb29e971d1dabfd98657969882ef5d0beee \ - --eth-chain-id 105 \ - --eth-signer 0399dbd15cf6ee8250895a1f3873eb1e10e23ca18e8ed0726c63c4aea356e87d \ - --sub-host rialto-node-bob \ - --eth-host poa-node-bertha \ - --prometheus-host=0.0.0.0 diff --git a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-poa-exchange-rialto-entrypoint.sh b/bridges/deployments/bridges/poa-rialto/entrypoints/relay-poa-exchange-rialto-entrypoint.sh deleted file mode 100755 index 131a31ffbea9..000000000000 --- a/bridges/deployments/bridges/poa-rialto/entrypoints/relay-poa-exchange-rialto-entrypoint.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -xeu - -sleep 20 -curl -v http://poa-node-arthur:8545/api/health -curl -v http://poa-node-bertha:8545/api/health -curl -v http://poa-node-carlos:8545/api/health -curl -v http://rialto-node-alice:9933/health -curl -v http://rialto-node-bob:9933/health -curl -v http://rialto-node-charlie:9933/health - -/home/user/ethereum-poa-relay eth-exchange-sub \ - --sub-host rialto-node-alice \ - --sub-signer //Bob \ - --eth-host poa-node-arthur \ - --prometheus-host=0.0.0.0 diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/address_book.json b/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/address_book.json deleted file mode 100644 index 9e26dfeeb6e6..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/address_book.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/arthur.json b/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/arthur.json deleted file mode 100644 index fa59a46480c2..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/arthur.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"dd04f316-bc9d-2deb-4a34-51014cd5f34f","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"aa91e6f0e6cf48208be4a1bcf15c6f30"},"ciphertext":"6e057599b13a87e8181bb39a40e14848fdc97958d493ddfa6bb1260350f69328","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"79dd8c09c5c066b830179a2558a51efca6d97c0db2c4128090a01835786823c5"},"mac":"8f8b8e2c9de29ec8eefc54a60055e30ae7ff4dd4a367eaf38880edb887da771e"},"address":"005e714f896a8b7cede9d38688c1a81de72a58e4","name":"","meta":"{}"} \ No newline at end of file diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/bertha.json b/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/bertha.json deleted file mode 100644 index 7168ec4f71f7..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/bertha.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"6d1e690f-0b52-35f7-989b-46100e7c65ed","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"a5b4d0466834e75c9fd29c6cbbac57ad"},"ciphertext":"102ac328cbe66d8cb8515c42e3268776a9be4419a5cb7b79852860b1e691c15b","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"e8daf2e70086b0cacf925d368fd3f60cada1285e39a42c4cc73c135368cfdbef"},"mac":"1bc3b750900a1143c64ba9e677d69e1093aab47cb003ba09f3cd595a3b422db5"},"address":"007594304039c2937a12220338aab821d819f5a4","name":"","meta":"{}"} \ No newline at end of file diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/carlos.json b/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/carlos.json deleted file mode 100644 index 2f9759f7bdfe..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/carlos.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"ffaebba1-f1b9-8758-7034-0314040b1396","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"97f124bc8a7bf55d00eb2755c2b50364"},"ciphertext":"b87827816f33d2bef2dc3102a8a7744b86912f8ace10e45cb282a13487769ed2","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"3114c67a05bff7831d112083f566b176bfc874aea160eebadbe5564e406ee85c"},"mac":"e9bfe8fd6f612bc036bb57659297fc03db022264f5086a1b5726972d3ab6f64a"},"address":"004e7a39907f090e19b0b80a277e77b72b22e269","name":"","meta":"{}"} \ No newline at end of file diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/diego.json b/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/diego.json deleted file mode 100644 index f1df56b84136..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/keys/BridgePoa/diego.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"ef9eb431-dc73-cf31-357e-736f64febe68","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"7077f1c4170d9fc2e05c5956be32fb51"},"ciphertext":"a053be448768d984257aeb8f9c7913e3f54c6e6e741accad9f09dd70c2d9828c","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"12580aa4624040970301e7474d3f9b2a93552bfe9ea2517f7119ccf8e91ebd0d"},"mac":"796dbb48adcfc09041fe39121632801d9f950d3c73dd47105180d8097d4f4491"},"address":"00eed42bf93b498f28acd21d207427a14074defe","name":"","meta":"{}"} \ No newline at end of file diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/pass b/bridges/deployments/bridges/poa-rialto/poa-config/pass deleted file mode 100644 index f3097ab13082..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/pass +++ /dev/null @@ -1 +0,0 @@ -password diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/poa-node-config b/bridges/deployments/bridges/poa-rialto/poa-config/poa-node-config deleted file mode 100644 index 2b3c56453d7b..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/poa-node-config +++ /dev/null @@ -1,20 +0,0 @@ -[parity] -chain = "/config/poa.json" -keys_path = "/config/keys" -no_persistent_txqueue = true - -[account] -password = ["/config/pass"] - -[network] -reserved_peers = "/config/reserved" - -[rpc] -apis = ["all"] -cors = ["moz-extension://*", "chrome-extension://*"] - -[mining] -force_sealing = true - -[misc] -unsafe_expose = true diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/poa.json b/bridges/deployments/bridges/poa-rialto/poa-config/poa.json deleted file mode 100644 index 12a8a58f263b..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/poa.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "name": "BridgePoa", - "engine": { - "authorityRound": { - "params": { - "stepDuration": 10, - "validators": { - "list": [ - "0x005e714f896a8b7cede9d38688c1a81de72a58e4", - "0x007594304039c2937a12220338aab821d819f5a4", - "0x004e7a39907f090e19b0b80a277e77b72b22e269" - ] - }, - "validateScoreTransition": 0, - "validateStepTransition": 0, - "maximumUncleCountTransition": 0, - "maximumUncleCount": 0, - "emptyStepsTransition": "0xfffffffff", - "maximumEmptySteps": 1 - } - } - }, - "params": { - "accountStartNonce": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip140Transition": "0x0", - "eip145Transition": "0x0", - "eip150Transition": "0x0", - "eip155Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip98Transition": "0x7fffffffffffff", - "gasLimitBoundDivisor": "0x0400", - "maxCodeSize": 24576, - "maxCodeSizeTransition": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID" : "0x69", - "validateChainIdTransition": "0x0", - "validateReceiptsTransition": "0x0" - }, - "genesis": { - "seal": { - "authorityRound": { - "step": "0x0", - "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - }, - "difficulty": "0x20000", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x", - "gasLimit": "0x222222" - }, - "accounts": { - "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, - "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, - "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, - "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, - "0000000000000000000000000000000000000005": { "balance": "1", "builtin": { "name": "modexp", "activate_at": 0, "pricing": { "modexp": { "divisor": 20 } } } }, - "0000000000000000000000000000000000000006": { - "balance": "1", - "builtin": { - "name": "alt_bn128_add", - "pricing": { - "0": { - "price": { "alt_bn128_const_operations": { "price": 500 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_const_operations": { "price": 150 }} - } - } - } - }, - "0000000000000000000000000000000000000007": { - "balance": "1", - "builtin": { - "name": "alt_bn128_mul", - "pricing": { - "0": { - "price": { "alt_bn128_const_operations": { "price": 40000 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_const_operations": { "price": 6000 }} - } - } - } - }, - "0000000000000000000000000000000000000008": { - "balance": "1", - "builtin": { - "name": "alt_bn128_pairing", - "pricing": { - "0": { - "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} - } - } - } - }, - "0x0000000000000000000000000000000000000009": { - "builtin": { - "name": "blake2_f", - "activate_at": "0xd751a5", - "pricing": { - "blake2_f": { - "gas_per_round": 1 - } - } - } - }, - "0x0000000000000000000000000000000000000010": { - "builtin": { - "name": "parse_substrate_header", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000011": { - "builtin": { - "name": "get_substrate_header_signal", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000012": { - "builtin": { - "name": "verify_substrate_finality_proof", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000013": { - "builtin": { - "name": "my_test", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x005e714f896a8b7cede9d38688c1a81de72a58e4": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - }, - "0x007594304039c2937a12220338aab821d819f5a4": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - }, - "0x004e7a39907f090e19b0b80a277e77b72b22e269": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - }, - "0x00eed42bf93b498f28acd21d207427a14074defe": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - } - } -} diff --git a/bridges/deployments/bridges/poa-rialto/poa-config/reserved b/bridges/deployments/bridges/poa-rialto/poa-config/reserved deleted file mode 100644 index 209d71b7fb30..000000000000 --- a/bridges/deployments/bridges/poa-rialto/poa-config/reserved +++ /dev/null @@ -1,3 +0,0 @@ -enode://543d0874df46dff238d62547160f9d11e3d21897d7041bbbe46a04d2ee56d9eaf108f2133c0403159624f7647198e224d0755d23ad0e1a50c0912973af6e8a8a@poa-node-arthur:30303 -enode://710de70733e88a24032e53054985f7239e37351f5f3335a468a1a78a3026e9f090356973b00262c346a6608403df2c7107fc4def2cfe4995ea18a41292b9384f@poa-node-bertha:30303 -enode://943525f415b9482f1c49bd39eb979e4e2b406f4137450b0553bffa5cba2928e25ff89ef70f7325aad8a75dbb5955eaecc1aee7ac55d66bcaaa07c8ea58adb23a@poa-node-carlos:30303 diff --git a/bridges/deployments/bridges/rialto-millau/docker-compose.yml b/bridges/deployments/bridges/rialto-millau/docker-compose.yml deleted file mode 100644 index 5f00e449c3b0..000000000000 --- a/bridges/deployments/bridges/rialto-millau/docker-compose.yml +++ /dev/null @@ -1,95 +0,0 @@ -# Exposed ports: 10016, 10116, 10216, 10316, 10416 - -version: '3.5' -services: - # We provide overrides for these particular nodes since they are public facing - # nodes which we use to connect from things like Polkadot JS Apps. - rialto-node-charlie: - environment: - VIRTUAL_HOST: wss.rialto.brucke.link - VIRTUAL_PORT: 9944 - LETSENCRYPT_HOST: wss.rialto.brucke.link - LETSENCRYPT_EMAIL: admin@parity.io - - millau-node-charlie: - environment: - VIRTUAL_HOST: wss.millau.brucke.link - VIRTUAL_PORT: 9944 - LETSENCRYPT_HOST: wss.millau.brucke.link - LETSENCRYPT_EMAIL: admin@parity.io - - relay-millau-rialto: &sub-bridge-relay - image: paritytech/substrate-relay - entrypoint: /entrypoints/relay-millau-rialto-entrypoint.sh - volumes: - - ./bridges/rialto-millau/entrypoints:/entrypoints - environment: - RUST_LOG: rpc=trace,bridge=trace - ports: - - "10016:9616" - depends_on: &all-nodes - - millau-node-alice - - millau-node-bob - - millau-node-charlie - - millau-node-dave - - millau-node-eve - - rialto-node-alice - - rialto-node-bob - - rialto-node-charlie - - rialto-node-dave - - rialto-node-eve - - relay-messages-millau-to-rialto-lane-00000001: - <<: *sub-bridge-relay - environment: - MSG_EXCHANGE_GEN_LANE: "00000001" - entrypoint: /entrypoints/relay-messages-millau-to-rialto-entrypoint.sh - ports: - - "10116:9616" - depends_on: - - relay-millau-rialto - - relay-messages-millau-to-rialto-generator: - <<: *sub-bridge-relay - environment: - MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001" - entrypoint: /entrypoints/relay-messages-to-rialto-generator-entrypoint.sh - ports: - - "10216:9616" - depends_on: - - relay-millau-rialto - - relay-messages-rialto-to-millau-lane-00000001: - <<: *sub-bridge-relay - environment: - MSG_EXCHANGE_GEN_LANE: "00000001" - entrypoint: /entrypoints/relay-messages-rialto-to-millau-entrypoint.sh - ports: - - "10316:9616" - depends_on: - - relay-millau-rialto - - relay-messages-rialto-to-millau-generator: - <<: *sub-bridge-relay - environment: - MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001" - entrypoint: /entrypoints/relay-messages-to-millau-generator-entrypoint.sh - ports: - - "10416:9616" - depends_on: - - relay-millau-rialto - - # Note: These are being overridden from the top level `monitoring` compose file. - grafana-dashboard: - environment: - VIRTUAL_HOST: grafana.millau.brucke.link,grafana.rialto.brucke.link - VIRTUAL_PORT: 3000 - LETSENCRYPT_HOST: grafana.millau.brucke.link,grafana.rialto.brucke.link - LETSENCRYPT_EMAIL: admin@parity.io - volumes: - - ./bridges/rialto-millau/dashboard/grafana:/etc/grafana/dashboards/rialto-millau:ro - - prometheus-metrics: - volumes: - - ./bridges/rialto-millau/dashboard/prometheus/targets.yml:/etc/prometheus/targets-rialto-millau.yml - depends_on: *all-nodes diff --git a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh b/bridges/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh deleted file mode 100755 index 4b50ac086a88..000000000000 --- a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -set -xeu - -sleep 20 -curl -v http://millau-node-alice:9933/health -curl -v http://rialto-node-alice:9933/health - -/home/user/substrate-relay init-bridge MillauToRialto \ - --source-host millau-node-alice \ - --source-port 9944 \ - --target-host rialto-node-alice \ - --target-port 9944 \ - --target-signer //Alice - -/home/user/substrate-relay init-bridge RialtoToMillau \ - --source-host rialto-node-alice \ - --source-port 9944 \ - --target-host millau-node-alice \ - --target-port 9944 \ - --target-signer //Alice - -# Give chain a little bit of time to process initialization transaction -sleep 6 - -/home/user/substrate-relay relay-headers-and-messages millau-rialto \ - --millau-host millau-node-alice \ - --millau-port 9944 \ - --millau-signer //Charlie \ - --rialto-host rialto-node-alice \ - --rialto-port 9944 \ - --rialto-signer //Charlie \ - --lane=00000000 \ - --prometheus-host=0.0.0.0 diff --git a/bridges/deployments/dev/poa-config/keys/BridgePoa/address_book.json b/bridges/deployments/dev/poa-config/keys/BridgePoa/address_book.json deleted file mode 100644 index 9e26dfeeb6e6..000000000000 --- a/bridges/deployments/dev/poa-config/keys/BridgePoa/address_book.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/bridges/deployments/dev/poa-config/keys/BridgePoa/arthur.json b/bridges/deployments/dev/poa-config/keys/BridgePoa/arthur.json deleted file mode 100644 index fa59a46480c2..000000000000 --- a/bridges/deployments/dev/poa-config/keys/BridgePoa/arthur.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"dd04f316-bc9d-2deb-4a34-51014cd5f34f","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"aa91e6f0e6cf48208be4a1bcf15c6f30"},"ciphertext":"6e057599b13a87e8181bb39a40e14848fdc97958d493ddfa6bb1260350f69328","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"79dd8c09c5c066b830179a2558a51efca6d97c0db2c4128090a01835786823c5"},"mac":"8f8b8e2c9de29ec8eefc54a60055e30ae7ff4dd4a367eaf38880edb887da771e"},"address":"005e714f896a8b7cede9d38688c1a81de72a58e4","name":"","meta":"{}"} \ No newline at end of file diff --git a/bridges/deployments/dev/poa-config/pass b/bridges/deployments/dev/poa-config/pass deleted file mode 100644 index f3097ab13082..000000000000 --- a/bridges/deployments/dev/poa-config/pass +++ /dev/null @@ -1 +0,0 @@ -password diff --git a/bridges/deployments/dev/poa-config/poa-node-config b/bridges/deployments/dev/poa-config/poa-node-config deleted file mode 100644 index 146bbac17cf9..000000000000 --- a/bridges/deployments/dev/poa-config/poa-node-config +++ /dev/null @@ -1,17 +0,0 @@ -[parity] -chain = "./deployments/dev/poa-config/poa.json" -keys_path = "./deployments/dev/poa-config/keys" -no_persistent_txqueue = true - -[account] -password = ["./deployments/dev/poa-config/pass"] - -[rpc] -apis = ["all"] -cors = ["moz-extension://*", "chrome-extension://*"] - -[mining] -force_sealing = true - -[misc] -unsafe_expose = true diff --git a/bridges/deployments/dev/poa-config/poa.json b/bridges/deployments/dev/poa-config/poa.json deleted file mode 100644 index ecc21766b035..000000000000 --- a/bridges/deployments/dev/poa-config/poa.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "name": "BridgePoa", - "engine": { - "authorityRound": { - "params": { - "stepDuration": 10, - "validators": { - "list": [ - "0x005e714f896a8b7cede9d38688c1a81de72a58e4" - ] - }, - "validateScoreTransition": 0, - "validateStepTransition": 0, - "maximumUncleCountTransition": 0, - "maximumUncleCount": 0, - "emptyStepsTransition": "0xfffffffff", - "maximumEmptySteps": 1 - } - } - }, - "params": { - "accountStartNonce": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip140Transition": "0x0", - "eip145Transition": "0x0", - "eip150Transition": "0x0", - "eip155Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip98Transition": "0x7fffffffffffff", - "gasLimitBoundDivisor": "0x0400", - "maxCodeSize": 24576, - "maxCodeSizeTransition": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID" : "0x69", - "validateChainIdTransition": "0x0", - "validateReceiptsTransition": "0x0" - }, - "genesis": { - "seal": { - "authorityRound": { - "step": "0x0", - "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - }, - "difficulty": "0x20000", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x", - "gasLimit": "0x222222" - }, - "accounts": { - "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, - "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, - "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, - "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, - "0000000000000000000000000000000000000005": { "balance": "1", "builtin": { "name": "modexp", "activate_at": 0, "pricing": { "modexp": { "divisor": 20 } } } }, - "0000000000000000000000000000000000000006": { - "balance": "1", - "builtin": { - "name": "alt_bn128_add", - "pricing": { - "0": { - "price": { "alt_bn128_const_operations": { "price": 500 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_const_operations": { "price": 150 }} - } - } - } - }, - "0000000000000000000000000000000000000007": { - "balance": "1", - "builtin": { - "name": "alt_bn128_mul", - "pricing": { - "0": { - "price": { "alt_bn128_const_operations": { "price": 40000 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_const_operations": { "price": 6000 }} - } - } - } - }, - "0000000000000000000000000000000000000008": { - "balance": "1", - "builtin": { - "name": "alt_bn128_pairing", - "pricing": { - "0": { - "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} - }, - "0x7fffffffffffff": { - "info": "EIP 1108 transition", - "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} - } - } - } - }, - "0x0000000000000000000000000000000000000009": { - "builtin": { - "name": "blake2_f", - "activate_at": "0xd751a5", - "pricing": { - "blake2_f": { - "gas_per_round": 1 - } - } - } - }, - "0x0000000000000000000000000000000000000010": { - "builtin": { - "name": "parse_substrate_header", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000011": { - "builtin": { - "name": "get_substrate_header_signal", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000012": { - "builtin": { - "name": "verify_substrate_finality_proof", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000013": { - "builtin": { - "name": "my_test", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x005e714f896a8b7cede9d38688c1a81de72a58e4": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - }, - "0x007594304039c2937a12220338aab821d819f5a4": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - }, - "0x004e7a39907f090e19b0b80a277e77b72b22e269": { - "balance": "1606938044258990275541962092341162602522202993782792835301376", - "nonce": "0x1" - } - } -} diff --git a/bridges/deployments/networks/OpenEthereum.Dockerfile b/bridges/deployments/networks/OpenEthereum.Dockerfile deleted file mode 100644 index d47708ca29bf..000000000000 --- a/bridges/deployments/networks/OpenEthereum.Dockerfile +++ /dev/null @@ -1,91 +0,0 @@ -FROM ubuntu:xenial AS builder - -# show backtraces -ENV RUST_BACKTRACE 1 - -ENV LAST_DEPS_UPDATE 2020-06-19 - -# install tools and dependencies -RUN set -eux; \ - apt-get update && \ - apt-get install -y file curl jq ca-certificates && \ - apt-get install -y cmake pkg-config libssl-dev git clang libclang-dev - -ENV LAST_CERTS_UPDATE 2020-06-19 - -RUN update-ca-certificates && \ - curl https://sh.rustup.rs -sSf | sh -s -- -y - -ENV PATH="/root/.cargo/bin:${PATH}" -ENV LAST_RUST_UPDATE="2020-09-09" -RUN rustup update stable && \ - rustup install nightly && \ - rustup target add wasm32-unknown-unknown --toolchain nightly - -RUN rustc -vV && \ - cargo -V && \ - gcc -v && \ - g++ -v && \ - cmake --version - -WORKDIR /openethereum - -### Build from the repo -ARG ETHEREUM_REPO=https://github.com/paritytech/openethereum.git -ARG ETHEREUM_HASH=344991dbba2bc8657b00916f0e4b029c66f159e8 -RUN git clone $ETHEREUM_REPO /openethereum && git checkout $ETHEREUM_HASH - -### Build locally. Make sure to set the CONTEXT to main directory of the repo. -# ADD openethereum /openethereum - -WORKDIR /parity-bridges-common - -### Build from the repo -# Build using `master` initially. -ARG BRIDGE_REPO=https://github.com/paritytech/parity-bridges-common -RUN git clone $BRIDGE_REPO /parity-bridges-common && git checkout master - -WORKDIR /openethereum -RUN cargo build --release --verbose || true - -# Then rebuild by switching to a different branch to only incrementally -# build the changes. -WORKDIR /parity-bridges-common -ARG BRIDGE_HASH=master -RUN git checkout . && git fetch && git checkout $BRIDGE_HASH -### Build locally. Make sure to set the CONTEXT to main directory of the repo. -# ADD . /parity-bridges-common - -WORKDIR /openethereum -RUN cargo build --release --verbose -RUN strip ./target/release/openethereum - -FROM ubuntu:xenial - -# show backtraces -ENV RUST_BACKTRACE 1 - -RUN set -eux; \ - apt-get update && \ - apt-get install -y curl - -RUN groupadd -g 1000 openethereum \ - && useradd -u 1000 -g openethereum -s /bin/sh -m openethereum - -# switch to user openethereum here -USER openethereum - -WORKDIR /home/openethereum - -COPY --chown=openethereum:openethereum --from=builder /openethereum/target/release/openethereum ./ -# Solve issues with custom --keys-path -RUN mkdir -p ~/.local/share/io.parity.ethereum/keys/ -# check if executable works in this container -RUN ./openethereum --version - -EXPOSE 8545 8546 30303/tcp 30303/udp - -HEALTHCHECK --interval=2m --timeout=5s \ - CMD curl -f http://localhost:8545/api/health || exit 1 - -ENTRYPOINT ["/home/openethereum/openethereum"] diff --git a/bridges/deployments/networks/eth-poa.yml b/bridges/deployments/networks/eth-poa.yml deleted file mode 100644 index 7291a2ccfd70..000000000000 --- a/bridges/deployments/networks/eth-poa.yml +++ /dev/null @@ -1,46 +0,0 @@ -# Compose file for quickly spinning up a local instance of an Ethereum PoA network. -# -# Note that this PoA network is only used for testing, so the configuration settings you see here -# are *not* recommended for a production environment. -# -# For example, do *not* keep your account key in version control, and unless you're _really_ sure -# you want to provide public access to your nodes do *not* publicly expose RPC methods. -version: '3.5' -services: - poa-node-arthur: &poa-node - image: hcastano/openethereum-bridge-builtins - entrypoint: - - /home/openethereum/openethereum - - --config=/config/poa-node-config - - --node-key=arthur - - --engine-signer=0x005e714f896a8b7cede9d38688c1a81de72a58e4 - environment: - RUST_LOG: rpc=trace,txqueue=trace,bridge-builtin=trace - ports: - - "8545:8545" - - "8546:8546" - - "30303:30303" - - poa-node-bertha: - <<: *poa-node - entrypoint: - - /home/openethereum/openethereum - - --config=/config/poa-node-config - - --node-key=bertha - - --engine-signer=0x007594304039c2937a12220338aab821d819f5a4 - ports: - - "8645:8545" - - "8646:8546" - - "31303:30303" - - poa-node-carlos: - <<: *poa-node - entrypoint: - - /home/openethereum/openethereum - - --config=/config/poa-node-config - - --node-key=carlos - - --engine-signer=0x004e7a39907f090e19b0b80a277e77b72b22e269 - ports: - - "8745:8545" - - "8746:8546" - - "32303:30303" diff --git a/bridges/deployments/types/rococo-wococo.json b/bridges/deployments/types/rococo-wococo.json deleted file mode 100644 index b1c4cfa21b92..000000000000 --- a/bridges/deployments/types/rococo-wococo.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "--1": "Rococo Types", - "RococoBalance": "u128", - "RococoBlockHash": "H256", - "RococoBlockNumber": "u32", - "RococoHeader": "Header", - "--2": "Wococo Types", - "WococoBalance": "RococoBalance", - "WococoBlockHash": "RococoBlockHash", - "WococoBlockNumber": "RococoBlockNumber", - "WococoHeader": "RococoHeader" -} diff --git a/bridges/deployments/types/rococo.json b/bridges/deployments/types/rococo.json deleted file mode 100644 index 4576378fd479..000000000000 --- a/bridges/deployments/types/rococo.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Fee": "RococoBalance", - "Balance": "RococoBalance", - "BlockHash": "RococoBlockHash", - "BlockNumber": "RococoBlockNumber", - "BridgedBlockHash": "WococoBlockHash", - "BridgedBlockNumber": "WococoBlockNumber", - "BridgedHeader": "WococoHeader", - "Parameter": { - "_enum": { - "RococoToWococoConversionRate": "u128" - } - } -} diff --git a/bridges/deployments/types/wococo.json b/bridges/deployments/types/wococo.json deleted file mode 100644 index cc01a6ccecfb..000000000000 --- a/bridges/deployments/types/wococo.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Fee": "WococoBalance", - "Balance": "WococoBalance", - "Hash": "WococoBlockHash", - "BlockHash": "WococoBlockHash", - "BlockNumber": "WococoBlockNumber", - "BridgedBlockHash": "RococoBlockHash", - "BridgedBlockNumber": "RococoBlockNumber", - "BridgedHeader": "RococoHeader", - "Parameter": { - "_enum": { - "WococoToRococoConversionRate": "u128" - } - } -} diff --git a/bridges/diagrams/ARCHITECTURE.md b/bridges/diagrams/ARCHITECTURE.md deleted file mode 100644 index 6da88c448c95..000000000000 --- a/bridges/diagrams/ARCHITECTURE.md +++ /dev/null @@ -1,13 +0,0 @@ -# Bridge Architecture Diagrams - -## Bridge Relay -![General Overview](general-overview.svg) -![Bridge Relay Node](bridge-relay.svg) - -## Runtime Modules -![Ethereum Pallet](ethereum-pallet.svg) -![Currency Exchange Pallet](currency-exchange-pallet.svg) - -## Usage -![Cross Chain Fund Transfer](cross-chain-fund-transfer.svg) -![Parachain](parachain.svg) diff --git a/bridges/diagrams/bridge-architecture-diagrams.drawio b/bridges/diagrams/bridge-architecture-diagrams.drawio deleted file mode 100644 index bf073129c297..000000000000 --- a/bridges/diagrams/bridge-architecture-diagrams.drawio +++ /dev/null @@ -1 +0,0 @@ -5VjZctowFP0aHul4wYAfCVm70DR0JklfOootbE1kiQg52P36XmF5lSctaWkmDQ9gHclXvuccpGsN3HmSnQm0jj/xENOBY4XZwD0eOI499X34UUheII7tjQokEiTUo2pgSX5gDVoaTUmIN62BknMqyboNBpwxHMgWhoTg2/awFaftWdcowgawDBA10WsSyrhAp55V4+eYRHE5s23pnjsU3EeCp0zPxzjDRU+CyjB66CZGId82IPdk4M4F57K4SrI5porXkjH/4b1k2SKJtxfn4/lksTr3vgyLYKf73FIlJzCTzw6dffh0tZiFF6v01sZe9PCwHrLhpAj9iGiqmdS5yrykFtJeq8sgp4SFWAzco21MJF6uUaDwLVgKsFgmFFo2XN4pOnH48a4CKpI/pxKiYI1vpOD3lWBA6NFvZqoZecRC4qzhAJ35GeYJliKHIbp3OC2dmpfAVAPb2i/ORGNxwytuCSLt0aiKXrMNF5rwPcgfvxXy3ZclvzcLxyD/CFY2WGUc6wpTlBtSiIJYzd4vVDDJXRFK55xysYvmrnafQ5LuWU6bdNvyTNZtzzNZt+1Dse4arC85JSGR6smXCRISfuecSYFgl3jtEkymHd9PehRwrB7fe39BgO/Xs+D92bfTW9j6bvJ08fVKXvbYHkoCFq4RgEcpoXJ4wf4/3seTf8h771pvGbyfyBgLnCaAXvIZfC+w3HJxb7APWcs+iktKdyVLm2UNIUoipnYPIHi3dygOCVRNM92RkDBU0/RqWqtuHVSsUUesUc/mYLs9YjmHEss2xFqmd0A6kmp7WED5/NZEcgyR/JcWyVzJGv+oq5RJkii14GUnpaZer21Jc/zuVjLuWdL6BBgfSoCevbzxL/n/FRj3FbH/VIGRocA8FZB4oJ77JAtixKI3ooX10lpMDS0MljELZ+qsQy32FG02JNixCUWvCTf4BvJEfqNX+F3jVjXeeWXzOGt2HudlKyPyph4JrdtGT32TapT37KfYhqciwE+Qoo8XIMUIPxVPc4XD1imPqX9DXe+J6k3AC5wkj+2zoT7F9QyXnDDZsFdVLlbvq37HNkXm+r7moYsRyu2E8rslZkGOEQosoV5Cq2FrNWDz5EN7nZl8r+PqImbt8YrZ59veP7zt7f1sv5+FX5s17e6rzfOtaXdruoNZ03joP7QmNOtj12J4fa7tnvwE7Vtdd5s4EP01Pmf3oTlI4suPsZOm3U27aewmbd8wKIYNRi6I2O6vX2EEBklZY5/g4Lh5iTSIQbp3GM2McA8NZ8ur2Jn7n4iHwx7UvGUPXfQgBJreZ/8yyaqQGHoumcaBx2UbwSj4hYuBXJoGHk5qAykhIQ3mdaFLogi7tCZz4pgs6sMeSFh/6tyZYkkwcp1Qlt4HHvVzqQ2tjfwDDqZ+8WRg8hVPHPdxGpM04s+LSITzKzOnUMPXmPiORxYVEbrsoWFMCM1bs+UQhxmuBWL3H1f34fWjefXXl+Sn83Xw9/jz3btc2ftdbikXF+OI7q/aH7vjxXl4i6O7wSNBqO8u+S3akxOmHEm+VroqoF2DgzMlWg8NFn5A8WjuuNnVBbMmJvPpLGQ9wJoJjcljSQGDaNBw7nyNTzimeFnhlK/lCpMZpvGKDSmuIj53brJQ5/3Fhn+jz2V+hXtkcaHDbW5a6t6gxxocwB3ARBKYI5LGLpYgZZY0z5ruKgwYtvF2XCc5CdeTUlDa7T8pZVowl7cGd78Ot23JcKvQBqAttHUJ7bETTzF9C2gboGtoG7JtryKXSa4JmUuQs2VSlWMYkpAw/C/WXhYNHoIwFEROGEyjjCyG6JqqDLSAOfpzfmEWeF72GCWHdV/VFjum4HkMmRxTQQ5sixtruxPHkXeebbMZsqGTJIFbp2c3qLBX241loKo+WIFEIYtx6NDgqb6Hq+DhT7ghAZve5i0x9DOjRoUpYpysHTC/r7o5blVlia8SXXsXSdWasXLp+5NonyiJEG1FvimJsirJHlomsb+dxI2LAvuEU1WX2YPoYf3X5r5v9WuIIk12drqlMA+9LW8H2o9ZDw6yXjdbRSgLVK8g0FoDGbw5kA1D6xrIUAK5SBi0YRjgSI5ljwxzYNcxt5ACdKAAHbWGuZw2nOo+a5svts9aYk7d8j4L5HTkNFhUxKki9PuHvJJBtM2inLjc3gwlIt92Mgmsuou0gSLAOmQ2CeRM5PRYMeyusdIgtdjm8fAyoN8y4Nh7n/e+V65cLDmm685qL4Bz39MgeO+IOxWrmhJ/jbdEKCgSA5iWXSlsEK8fg3l0a7dFonmIrDY1DxMar2se8tFEnEZ/lHwk6aQHmWotnweTYOr/eWI+X6+TDRQ1d6Aqurfm86Gcq9RYYxwJrDEeT401EzWgzbIOSZsqOTHDjAMveGLNadYcpRNGg0OzZL92lJKPZE+uDD4xToFQqrEVlB40+oJmE0ovqY9jnM5+MyrH02bXGG1waHbspfq+Imc5aKkeNjjUOnKQ9dcHWc4Mb2Li4iRhwk8sRiAea9ziJA1pcmJuBwnBAVKk8Yf1O8WEKmx9nXt5GFB8v8JZOz2yrDPxHExBFzIOSZecV5d0lWc1v+nim7ySLnh2UMLg9i2njUIIAzdeVW7Kut+r1za3rXstFVD4XlAmhNvCn44WWox9Cy26kMTrtqDomUILswdnVRk2zwYkkjW+QCkGyaWYgxjoCxtaxwxIL851C96NfQ1IVNTvnAG9wAn2EXu4IqfY6uL6nTZQY99jW90UFDX8xO15A204YVv733mZwonZruOLT2afP67ebbw4f2E8a+SI7Ptuxv7UuvkBJ++CMfn3Uvvxzf14p/g5RRnTv8YHPVIw1/Q9fL6Oo9VZaPODHtbd/LgmZ2jz6yV0+R8=7Vxbd6I6FP41PtoFhOuj2jr1zFjbOr3oy1mIUahIHMCqfTi//SQQlJsa26qo0zWrJRsIw97f/vbOTkIJ1MbzH64+MZuoD+2SwPXnJXBdEgSeEzX8h0gWkUQSQ8nQtfpUthK0rQ8YXUilU6sPvcSFPkK2b02SQgM5DjT8hEx3XTRLXjZAdvKpE30IM4K2odtZ6YvV981QqkrcSn4LraEZPZnn6JmeboyGLpo69HkOcmB4ZqxH3dBLPVPvo1lMBG5KoOYi5IdH43kN2kSvkcY6wsNtxX2ZP92Zzdn0X69lvw3LYWf1XW5ZvpwLHf/TXT8/NH/fPFbE22Zt6nTrlvHDmtNbuHfdnlJN0nf1F5FqA+VA0glXAtWZafmwPdENcnaG0YRlpj+2cYvHhwPLtmvIRi5uB6oEVfoE6PpwnjLWlvfhl0rGwIVoDH13ge+jvQiRCRcpY89iAFCozIwbPzKoTkE3XPa9Uh8+oBrM12bj58/RU/WpbjxKgLt2TH5SeY0MtUmb0OlXCN5xy7B1z7OMpALh3PJfY8cdovcribau59QMQWNBG7uoE/ul7g6hv+EtlPA62E+4XNYOMT1LOWqOZC60dd96TzpqnurpE+6RhV9jaWZeSpoZiCnreWjqGpDeFcd/qqOlH0cdSamOQsVkOgqQsHztL4BDYkAH1nmbNpHrm2iIHN2+WUmrSW9cXfMLoQmFzRv0/QWlaH3qoyTAdgNLqNwNbwUYQSUygooZLV9yVJAxRWM8wcrEsrY1dLB+Be4W6n3obqBDfjsd7qbsDEeu5z5VSmCZl7Pct6S5uFPKe6M++RzRLTKiWyoUusX16C4yqEUtSdAFALVyjqCWGEEtFwrU2ehZw3olmH7WbYsQtu6Q3w3nnbZDrHvFBLusFg7sWiHAjvXsLl5XWS9pdqKslzRWOXDQ+lwSvNVJZEYn4fnv9pL87FXjk3hR2JJXPNbQF7HLJuQCb8NjuFRiwaUGlensXFA23oAPwv/Ct6bSYhaqdygXrL/0HrSTAMPsMHTwsYGBgkMhqBKntQzdrtATY6vfD7EMPetD7wX9EYhR5eHOpWpJus4F3WbXyg6CaUGEPqUUryzk0QZ3xalASWi8TN30swCLLkGDgQf3MvIRGKoMpxdGmRmCK1QcFdWMMTowGySL4zxL9HzZecrcFR45yUV3l+xI6jrIZ2YQ/xpYGPIE4STfWQS5wZosx0Tj3tQ7XoajiqkMB+RkOOCg9TnhLEswCiMRgWLxUBbmBeehCDzfwkOprKnonASyFbOSINtYX9W+9Y4Ph+SQJGGhED8kJj+Gk0WF9FXxvBM7k19IL8jYg9Wh1e926PwcX9SUqyRcgXbY0nm2DNPATLEs1RYt8oHUIApw2cin5gQ+dV9xD5xlHUtldBPtQG6SqslL3GGdJJvXL6u+T453irMaonLsmpgoHiV0rQlD/GHDkMbqX6wTxl+dCVZSM/6ZqeA9e1i26nSS8yrHd6vI9ucVj6JCzxFqxl8r/GfLc49wprskXLSnvbHl+0WFNs+liwxHn0aJoHxm2GZdPMQLhcK2kJ0LP25ETwwrV+H9MBGd3YrfXitaN30EUiGdZwvpu85rZeapwCHmqfhsnIuVcl1oQKK64Hwgjmq5oJ6l22MPajGLpmpWefVc8aD1XPHIznzUKlHEtMXNzzNBdt8rLLOh97erGyMs+oHQKaQzIl+0dEYElxwvWVe3HszF5FS+Cw5cZOKz8wD3U8fyTCyr6qfoYsIeR8NPHnRbvTey4UXg7HAWi9z6DF1rsEiVDeypYfUNU3f98JYGtYNvdpvC3POvX7yH8MrNtXI59v7UpDEjxFScZwH8b4Acnzomz9N2tKWjRABHfrDcw3dazhBLAWn5LhrBFpH5RLM8t7s/7lApBHLCiKoCMkbU5KwNFWFnG+JmzIwbzVozYRBsBlhXAleZYtpziTawU5BZOa5m6s4wmuNcZ+4yNvft80ipdM1XFnMrF2BuoIgFNPdmO/6H7fgxrvm1udBnsaPKasd45OTVHAvm2ybJvrpr0FuCILo1ons4rvjRxqVoYxeJvsvdTD0bYfAHorplL2k8tqPpiuMAL8RnY1dzs/eYEbFpyFR+MgEoc7HbchKB9I3fnAEorKu8lE/smlpuQkyMliLhbqnC+gExewrwCaqzBviXA2fLwWtptUSJTNGSfZypNUrrHAa+dZu/P0Yv/zy3OiwOo10A8UnRkOaEiM/GdpSu1cZb76HMYEeVY7XjX+I7JPGxLkJRWKfXz4P4GJP24ajbNLtQaz5UZBYnEL5CZusQLnGnQnOpndzROoAtLBctZT4Gy4nYwI7VgvPH4Q2LgcGFsJysiaIIBFVTT4vvVNZqqsK6Le48+C53hcM6pzDsbtPSfk0rr9OfLE4hHiiFC66jHfNbuS64A2M8K4n1PQh+9lmoUlKkyOdNt4hZXEWlkf2wYsPBJ+J44DD8EClx+MglH2nZCBAPdZuPd3B0bzoeC0CkC8jxZYk/uRy/iu340pOa7WlbYLEjc03yxKPfacW8KHXfvtCc9fsG5xHzmro7KsX2j5PnClydljX6m12jNek2u8q8/CJe1Vlc4xLqt4qqnRzFPWM7jv80fjVuJn9Y7Pi3fltEilNZP3ahXlb99t6dku/cca2gPnvLUp/VsEM8d64mPX94x+IQl1Cf1YTkXvxTIDbjT7fZK5uPVqs1Z7Cj9rc+W0hiY94keFn12bBeEWx1qgaGx+ymB8tTSkI1mcWx0V4Hu4v8Xgei+MQyH6/xrO5ylpVcnudSKzNOoJbLYxPXXzv3//hig8XEzMX6y2TEZQlY40T1SOzIvHeNdSvOebDjXTBTv4cJLI15fuMsaU9OrcqMvoZ5VNK7cbaUKna18ZdKFSdvY16W0itHD2llLFp9ajwkhdW33MHN/w==5VpdV6M8EP41vXRPAqUtl9rWj3P86K67x1dv9qSQQjQQDMG2/vo3gSCf1lqrrWe9kUyGgTzzzGQmtGMOg8UJR5F/wVxMOwZwFx1z1DEMCLq2/Kcky1xidTOJx4mrZYXgmjzjXFFLE+LiuKIoGKOCRFWhw8IQO6IiQ5yzeVVtxmj1qRHycENw7SDalN4QV/iZdGCBQn6KiefnT4ZAz0yR8+BxloT6eSELcTYToNyMVo195LJ5SWSOO+aQMyayq2AxxFThmiN2PT4fJ/dD93Hi9/2jx8mjMWEHmbHj99zysjiOQ7Gx6cNxd+CeUfE4t9njYhksEXIODL00scyRxK4EVg8ZFz7zWIjouJAepWhhZRXIUaFzzlgkhVAK77EQS80SlAgmRb4IqJ6Vq+DL//T96eBWDX5Y+XC0KE+Olnq0Jgwarpgl3NGLurzD4Z+Zc3N7B/4KByx/To2hhgsIxD0sVmCk7SlgSmTTIJ9gFmD5klKBY4oEeaoyEmliey96hYvkhfZSOvwTY341vVfhYQCKpphmt/7mKIyRIwgLM5s0cYjr+IiLTP1Me9h7uLvw77B98fOwl2nmvn99/VWulHhQ8tfcJwJfRyhFcy4zSIUESgNxR3vbUo6asVDoMYR6PGSU8dS0CdI/KY+lTRJ6UmqqkeDsAV8pmVAuh+D9Tn/CXODFSjfls3lY65RnQo3ZvMgfthb5pdTRHbzbsXJY8u07orO3i+jcPMpa17BulFlfFGXrIa/f+gnRRD9pgngsdwbQiMaSd6pB0RY2G+O8PrFNWCU27IEGsV/IX2Z2rrd1MM3dbjLFvnJbntv6JrNq83iT/mCv6N9t0P9WVndtXjzP9qky8ogSL5TXjkQQy5R/pLhLZK12qCcC4rqZk3FMntE0taewjxgJRboW66hjjVq9sYphjSB5KTj1QyqVW1vwHIAfEPT7lQDKi6S1odfWJ2o1JRU2m8WSA3XfvLzE5u6CO9kovlmEwa3Xcemth5yjZUlBc7hJgzw996vpuduvle01fQgGg1U3yIvsFbbLqH4jA1yyPU4AeQRsJQPYwLYrkO9/Amh46yzOYFPPZzP1EqqtJjK+ZTi7qvGlzHnomMfNIsZnwTSJd1jAAKuK/sBqFjBmSwED4WdVMHDHJcxX9cmrKvPvkmCtbq2xA/YX5Evrm1VMcJsl06BnGd8rYTbddYqeVHs3kzGrUieiHCNXLXOKcahQoYgEKpr3MGN27VrL121p+UBbxgSfljFBA6bvd3bRXzPz2dtOfB+Cvlm6jXDEYqIiS8YXS1/EIRHBWbA5joRdNFm9D4cZg+6+HWbAnRyZb5nY9s629A9hbzeY/QvPEVfl7HUyDYhQu+de8hgCo9rFfSaRX/uQMA7dzNb7PyCsYMe/+wUB1JJTW6PyhZ8Q7Mu+Efds/3QijJuDoTGZLY5bDrIPFRicOGm1g9NecM4SmvaEShZKWSqdSbRljvBJs46NfRSpS1miUpaIt+MqwlxWT2lxm980KUSf5qJe7bClv2bQDbawe+C/1IPPEb8ySASdE352FrHdfG/dfPNoXcO6X3T6u9o7Vr11KRCGLFRMUkznLMgIj1W/JYv9hEuwnGVRMVEmaVuZ2cdtps73Ly2XWmFvnky9co74z56lrGLrm7FT9OCGNr1pz52fntRbSbvGjGyJ+q6CHA1Djcq9bijDYIWhj5wCyGHxw5xMvfjlkzn+Hw==5VhdU6MwFP01POoAgaqPtlZ3R3d0ts7sc4BbyBhIJ4R++Os3KeEzONZVnLr2BXJJbsg599x7i4Vm6faG41Xyi0VALdeOtha6slzXsb0LeVGWXWXxvdIScxJpW2NYkGeoJmprQSLIOxMFY1SQVdcYsiyDUHRsmHO26U5bMtrddYVjMAyLEFPT+odEIimt577d2H8AiZNqZ8fWTwIcPsWcFZneL2MZlE9SXLnRU/MER2zTMqG5hWacMVHepdsZUIVrhdht+pM4cjMes+y68Cfp+vH2pHR2/ZYl9eE4ZOJjXbul6zWmhUZyLhLgUKT6zGJXQSyPv1K34Y6SLAJuoekmIQIWKxwq+0aGlrQlIqVy5MjbQMEK0V1QG2qw7wshvYC2H3g+jcMauIBti3d93htgKQi+k1P0Uxdp6nRYu+d6vGlipI6EpB0f1UKs4zKufTcIyxsN8hsARwbgiyLIBccC/gfEvcnRIe4ZiF+GgvEX0S5SWk5AU3VuIpPMHQ6APrCcCMIyOSVgQrBUTqDqwbTGeMaoWie9oeX+1/JxSUms1grW44yVxMzqzGiPyI/jd/nxfZMfNEDPZCx2JgY7BjGQRZeqRCglUJznJOwC+DasIOpUEhOpFhL+ABKVjQPFgqy79WcIHr3DAyPy9RoiLnpEuD2Ec1bwEPSqdlrvOXK9riOv70hgHoMwHO3Zqo/97wRWHUCLQedUjheSNnm5Y+GTvDxuTVolEXthddnEWiehZBP4gIBSEkXKx5RDTp5xsPenNLNSR9wf2p9a/tXhkVHFYF9FdbuiN+nU/SF12ae263Xz3/uCpZrClsscxqHPMehzFX3zlKgXmK9Bh81QqsyYgAOK0gs1KML86V6uIkKBJbHzP7EVqPXXLkzOgN7Px8p8jtl7TWVvLbOTa/+W8bIzYOdlddfwvYL6WECiXr7x7QEg3c8sIY7ZU32PGoLcV1L/oTUE9boCrx/0Y9cQs0dDp3sZ4OjFJHQ89aMOwA8oIM7ki9UP/5uKz+uLr6+ZQ8XnnfUc9f8JjS0+swX3Wg2c6tzsB87Y8pgVWEXhuxV4IiXYbRSOXoFnBn++4u+G4/0bXMumITe4+4ItXP/bwpgtnBw2H/ZKppovp2j+Fw==3ZnLcpswFIafxstmEEIOLGPHSWbaTtx60aY7GVRgAsgjhI3z9BVG4ibqOB5fszL6EQfrO7+kI3sAx3H+yPAi+E49Eg1Mw8sH8H5gmsCwHPFRKGulIKtUfBZ6UquFWfhGVEepZqFH0lZHTmnEw0VbdGmSEJe3NMwYXbW7/aVR+60L7BNNmLk40tVfoceDUrWRUetPJPQD9WZgyDtz7L76jGaJfF9CE1LeibEKI7umAfboqiHByQCOGaW8vIrzMYkKrorY16c0c//APGEPy2ecvC3Wyx9fymAPH3mkGhwjCT9saLMMvcRRJklOafQqxsnlmPlaIRbDXxSX7joKE4+wARytgpCT2QK7hb4S1hJawONItIC4nBdYifdtXgkV7OeMiyhE6juOT3JYEsZJ3si7HO8joTHhbC26yLu2zJx0tXmLyvaqtogJZZ+gYQ+oRCxt6Veha8DiQjL+AG+o8f4MnC0TtUEr8E3QqA+0eSzQlgZ6wgPCSBYL9WeW8DAW89wQS2EWES0HrCQqsb2D/2hUrTZVC/VQBX1UjwUVaVBn2TzlDHNytVQRODfVoUZ1nDExbLf41pPcDXDiXy9f6Jybr/3+mksS766oQoplN8JpGrqCUMox47q8N8OUZswl72/G4rU+2RZPbiLEa9VEekYaxPsWX6UxEmEeLtuVVF8W5BumNBTDrRIOUXuXRUYnkeW45VPNAqUTyDLagar1TgUqwWiBNqaohr2/T5ytq9sIp2JqmcY4wGEiPu8+w8Ztd5Cb+lwFdo91zKPt22pl2DELo8+QBWA47TRA6/x5AFoeGgXUlN7VSbj+BHSnwbCn0jo1f/1kNhIn77IQEAv2Or3M7d8GHSv3HAXAsAclsI6GcodD154FAMlD/ltcGzeOM5Ttl00bQUu27wsyhmqsG40pYaKe48UU2WgHLifgjuWEstqF1BPDzmJoWc4N2q+i6M7rnlBHrimAfg49mPcS8dVK8yHVfGneq423aTWd13hMOXarWw/sTLW5XJs17Y41h90zy87G7ARCJy51gX6SP7ctD22xXQ9TzmU5DP2nEvyow5xuZe+c2GH6rxqH3nRBe8M96QK2q7tUNXQh9gJGpzyzbvf0FzCGnUjdUnhvg4lm/adK2b3+1wpO/gE= \ No newline at end of file diff --git a/bridges/diagrams/bridge-relay.svg b/bridges/diagrams/bridge-relay.svg deleted file mode 100644 index 2907a7c7fce9..000000000000 --- a/bridges/diagrams/bridge-relay.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Source
Source
Target
Target
Sync Loop
Sync Loop
Source Client
Source Client
RPC
RPC
RPC
RPC
run(source=sub, target=eth)
run(source=sub, target=eth)
run(source=eth, target=sub)
run(source=eth, target=sub)
Substrate Sync Loop
Substrate Sync Loop
Ethereum Sync Loop
Ethereum Sync Loop
Process Method Results
Process Method Results
Update Target Methods
Update Target Methods
Update Source Methods
Update Source Methods
Target Client
Target Client
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/diagrams/cross-chain-fund-transfer.svg b/bridges/diagrams/cross-chain-fund-transfer.svg deleted file mode 100644 index 5fd9ced1d436..000000000000 --- a/bridges/diagrams/cross-chain-fund-transfer.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Ethereum
Ethereum
Substrate
Substrate
Actor
Actor
1. Send Lock Tx
1. Send Lock Tx
2. Emit Event
2. Emit Event
Bridge Relay
Bridge Relay
3. Read Event
3. Read Event
4. Send Tx Proof
4. Send Tx Proof
5. Grant Funds
5. Grant Funds
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/diagrams/currency-exchange-pallet.svg b/bridges/diagrams/currency-exchange-pallet.svg deleted file mode 100644 index 1f1b2ef7b5ce..000000000000 --- a/bridges/diagrams/currency-exchange-pallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Transaction
Transaction
Parse Transaction
Parse Transaction
Yes
Yes
No
No
Is part of a finalized block?
Is part of a finalize...
Yes
Yes
Have funds already been claimed?
Have funds alrea...
Deposit into recipient account
Deposit into recipie...
Reward Submitter
Reward Submitter
End
End
A price feed would be needed for this
A price feed would b...
Convert from foreign currency into local currency
Convert from foreign...
No
No
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/diagrams/ethereum-pallet.svg b/bridges/diagrams/ethereum-pallet.svg deleted file mode 100644 index 934255be2260..000000000000 --- a/bridges/diagrams/ethereum-pallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Import Signed Header
Import Signed Header
Import Header
Import Header
Count Valid and Invalid Headers
Count Valid and Inva...
No
No
Yes
Yes
Did we finalize any headers
Did we finalize any h...
Yes
Yes
No
No
Is Signed
Is Signed
Import Unsigned Header
Import Unsigned Head...
Import Header
Import Header
Reward Submitter
Reward Submitter
Did we receive valid headers?
Did we receive valid he...
Track Good Submitter
Track Good Submitter
Punish Bad Submitter
Punish Bad Submitter
Verify Header
Verify Header
Check for Authority Set Changes
Check for Authori...
Check if new header finalizes old headers
Check if new head...
Header
Header
Import Header
Import Header
Insert Header into Storage
Insert Header int...
Mark Headers as Finalized
Mark Headers as F...
Prune Old Headers
Prune Old Headers
Imported Block Hash + Finalized Headers
Imported Block Ha...
New Header
New Header
End
End
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/diagrams/general-overview.svg b/bridges/diagrams/general-overview.svg deleted file mode 100644 index d7706893ab9d..000000000000 --- a/bridges/diagrams/general-overview.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Bridge Relay
Bridge Relay
Solidity Smart Contract
Solidity Smart Contract
Grandpa Built-In
Grandpa Built-In
Ethereum PoA Network
Ethereum PoA Network
Substrate Node
Substrate Node
Ethereum Runtime Module
Ethereum Runtime Module
Substrate Runtime Module
Substrate Runtime Module
Currency Exchange Runtime Module
Currency Exchange Runtime Module
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/diagrams/parachain.svg b/bridges/diagrams/parachain.svg deleted file mode 100644 index a1a15f172cf0..000000000000 --- a/bridges/diagrams/parachain.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Polkadot
Polkadot
Ethereum Runtime Module
Ethereum Runtime Module
Substrate Runtime Module
Substrate Runtime Module
Currency Exchange Runtime Module
Currency Exchange Runtime Module
Substrate Based Chain A
Substrate Based Chain A
Substrate Based Chain B
Substrate Based Chain B
Ethereum PoA Chain
Ethereum PoA Chain
Bridge Relays
Bridge Relays
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/bridges/docs/poa-eth.md b/bridges/docs/poa-eth.md deleted file mode 100644 index 43b30f8bb737..000000000000 --- a/bridges/docs/poa-eth.md +++ /dev/null @@ -1,71 +0,0 @@ -# PoA Ethereum High Level Documentation - -NOTE: This is from the old README - -### Ethereum Bridge Runtime Module -The main job of this runtime module is to keep track of useful information an Ethereum PoA chain -which has been submitted by a bridge relayer. This includes: - - - Ethereum headers and their status (e.g are they the best header, are they finalized, etc.) - - Current validator set, and upcoming validator sets - -This runtime module has more responsibilties than simply storing headers and validator sets. It is -able to perform checks on the incoming headers to verify their general integrity, as well as whether -or not they've been finalized by the authorities on the PoA chain. - -This module is laid out as so: - -``` -├── ethereum -│ └── src -│ ├── error.rs // Runtime error handling -│ ├── finality.rs // Manage finality operations -│ ├── import.rs // Import new Ethereum headers -│ ├── lib.rs // Store headers and validator set info -│ ├── validators.rs // Track current and future PoA validator sets -│ └── verification.rs // Verify validity of incoming Ethereum headers -``` - -### Currency Exchange Runtime Module -The currency exchange module is used to faciliate cross-chain funds transfers. It works by accepting -a transaction which proves that funds were locked on one chain, and releases a corresponding amount -of funds on the recieving chain. - -For example: Alice would like to send funds from chain A to chain B. What she would do is send a -transaction to chain A indicating that she would like to send funds to an address on chain B. This -transaction would contain the amount of funds she would like to send, as well as the address of the -recipient on chain B. These funds would now be locked on chain A. Once the block containing this -"locked-funds" transaction is finalized it can be relayed to chain B. Chain B will verify that this -transaction was included in a finalized block on chain A, and if successful deposit funds into the -recipient account on chain B. - -Chain B would need a way to convert from a foreign currency to its local currency. How this is done -is left to the runtime developer for chain B. - -This module is one example of how an on-chain light client can be used to prove a particular action -was taken on a foreign chain. In particular it enables transfers of the foreign chain's native -currency, but more sophisticated modules such as ERC20 token transfers or arbitrary message transfers -are being worked on as well. - -## Ethereum Node -On the Ethereum side of things, we require two things. First, a Solidity smart contract to track the -Substrate headers which have been submitted to the bridge (by the relay), and a built-in contract to -be able to verify that headers have been finalized by the GRANDPA finality gadget. Together this -allows the Ethereum PoA chain to verify the integrity and finality of incoming Substrate headers. - -The Solidity smart contract is not part of this repo, but can be found -[here](https://github.com/svyatonik/substrate-bridge-sol/blob/master/substrate-bridge.sol) if you're -curious. We have the contract ABI in the `ethereum/relays/res` directory. - -## Rialto Runtime -The node runtime consists of several runtime modules, however not all of them are used at the same -time. When running an Ethereum PoA to Substrate bridge the modules required are the Ethereum module -and the currency exchange module. When running a Substrate to Substrate bridge the Substrate and -currency exchange modules are required. - -Below is a brief description of each of the runtime modules. - -## Bridge Relay -The bridge relay is responsible for syncing the chains which are being bridged, and passing messages -between them. The current implementation of the relay supportings syncing and interacting with -Ethereum PoA and Substrate chains. diff --git a/bridges/fuzz/storage-proof/Cargo.toml b/bridges/fuzz/storage-proof/Cargo.toml deleted file mode 100644 index c5848ebed00e..000000000000 --- a/bridges/fuzz/storage-proof/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "storage-proof-fuzzer" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -finality-grandpa = "0.14.0" -hash-db = "0.15.2" -honggfuzz = "0.5.54" -log = "0.4.0" -env_logger = "0.8.3" - -# Bridge Dependencies - -bp-header-chain = { path = "../../primitives/header-chain" } -bp-runtime = { path = "../../primitives/runtime" } -bp-test-utils = { path = "../../primitives/test-utils" } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/fuzz/storage-proof/README.md b/bridges/fuzz/storage-proof/README.md deleted file mode 100644 index da3c7b1565e0..000000000000 --- a/bridges/fuzz/storage-proof/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Storage Proof Fuzzer - -## How to run? - -Install dependencies: -``` -$ sudo apt install build-essential binutils-dev libunwind-dev -``` - - -Install `cargo hfuzz` plugin: -``` -$ cargo install honggfuzz -``` - -Run: -``` -$ cargo hfuzz run storage-proof-fuzzer -``` - -Use `HFUZZ_RUN_ARGS` to customize execution: -``` -# 1 second of timeout -# use 12 fuzzing thread -# be verbose -# stop after 1000000 fuzzing iteration -# exit upon crash -HFUZZ_RUN_ARGS="-t 1 -n 12 -v -N 1000000 --exit_upon_crash" cargo hfuzz run example -``` - -More details in the [official documentation](https://docs.rs/honggfuzz/0.5.52/honggfuzz/#about-honggfuzz). - diff --git a/bridges/fuzz/storage-proof/src/main.rs b/bridges/fuzz/storage-proof/src/main.rs deleted file mode 100644 index 18be72e72f22..000000000000 --- a/bridges/fuzz/storage-proof/src/main.rs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Storage Proof Checker fuzzer. - -#![warn(missing_docs)] - -use honggfuzz::fuzz; -// Logic for checking Substrate storage proofs. - -use sp_core::{Blake2Hasher, H256}; -use sp_state_machine::{backend::Backend, prove_read, InMemoryBackend}; -use sp_std::vec::Vec; -use sp_trie::StorageProof; -use std::collections::HashMap; - -fn craft_known_storage_proof(input_vec: Vec<(Vec, Vec)>) -> (H256, StorageProof) { - let storage_proof_vec = vec![( - None, - input_vec.iter().map(|x| (x.0.clone(), Some(x.1.clone()))).collect(), - )]; - log::info!("Storage proof vec {:?}", storage_proof_vec); - let backend = >::from(storage_proof_vec); - let root = backend.storage_root(std::iter::empty()).0; - let vector_element_proof = StorageProof::new( - prove_read(backend, input_vec.iter().map(|x| x.0.as_slice())) - .unwrap() - .iter_nodes() - .collect(), - ); - (root, vector_element_proof) -} - -fn transform_into_unique(input_vec: Vec<(Vec, Vec)>) -> Vec<(Vec, Vec)> { - let mut output_hashmap = HashMap::new(); - let mut output_vec = Vec::new(); - for key_value_pair in input_vec.clone() { - output_hashmap.insert(key_value_pair.0, key_value_pair.1); //Only 1 value per key - } - for (key, val) in output_hashmap.iter() { - output_vec.push((key.clone(), val.clone())); - } - output_vec -} - -fn run_fuzzer() { - fuzz!(|input_vec: Vec<(Vec, Vec)>| { - if input_vec.is_empty() { - return; - } - let unique_input_vec = transform_into_unique(input_vec); - let (root, craft_known_storage_proof) = craft_known_storage_proof(unique_input_vec.clone()); - let checker = >::new(root, craft_known_storage_proof) - .expect("Valid proof passed; qed"); - for key_value_pair in unique_input_vec { - log::info!("Reading value for pair {:?}", key_value_pair); - assert_eq!( - checker.read_value(&key_value_pair.0), - Ok(Some(key_value_pair.1.clone())) - ); - } - }) -} - -fn main() { - env_logger::init(); - - loop { - run_fuzzer(); - } -} diff --git a/bridges/modules/currency-exchange/Cargo.toml b/bridges/modules/currency-exchange/Cargo.toml deleted file mode 100644 index 8094f0f2b6ee..000000000000 --- a/bridges/modules/currency-exchange/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "pallet-bridge-currency-exchange" -description = "A Substrate Runtime module that accepts 'lock funds' transactions from a peer chain and grants an equivalent amount to a the appropriate Substrate account." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -log = { version = "0.4.14", default-features = false } -serde = { version = "1.0", optional = true } - -# Bridge dependencies - -bp-currency-exchange = { path = "../../primitives/currency-exchange", default-features = false } -bp-header-chain = { path = "../../primitives/header-chain", default-features = false } - -# Substrate Dependencies - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = ["std"] -std = [ - "bp-currency-exchange/std", - "bp-header-chain/std", - "codec/std", - "frame-benchmarking/std", - "frame-support/std", - "frame-system/std", - "log/std", - "serde", - "sp-runtime/std", - "sp-std/std", -] -runtime-benchmarks = [ - "frame-benchmarking", - "sp-std", -] diff --git a/bridges/modules/currency-exchange/src/benchmarking.rs b/bridges/modules/currency-exchange/src/benchmarking.rs deleted file mode 100644 index 574ae93f6ee0..000000000000 --- a/bridges/modules/currency-exchange/src/benchmarking.rs +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Exchange module complexity is mostly determined by callbacks, defined by runtime. -//! So we are giving runtime opportunity to prepare environment and construct proof -//! before invoking module calls. - -use super::{ - Call, Config as CurrencyExchangeConfig, InclusionProofVerifier, Instance, Pallet as CurrencyExchangePallet, -}; -use sp_std::prelude::*; - -use frame_benchmarking::{account, benchmarks_instance}; -use frame_system::RawOrigin; - -const SEED: u32 = 0; -const WORST_TX_SIZE_FACTOR: u32 = 1000; -const WORST_PROOF_SIZE_FACTOR: u32 = 1000; - -/// Pallet we're benchmarking here. -pub struct Pallet, I: Instance>(CurrencyExchangePallet); - -/// Proof benchmarking parameters. -pub struct ProofParams { - /// Funds recipient. - pub recipient: Recipient, - /// When true, recipient must exists before import. - pub recipient_exists: bool, - /// When 0, transaction should have minimal possible size. When this value has non-zero value n, - /// transaction size should be (if possible) near to MIN_SIZE + n * SIZE_FACTOR. - pub transaction_size_factor: u32, - /// When 0, proof should have minimal possible size. When this value has non-zero value n, - /// proof size should be (if possible) near to MIN_SIZE + n * SIZE_FACTOR. - pub proof_size_factor: u32, -} - -/// Config that must be implemented by runtime. -pub trait Config: CurrencyExchangeConfig { - /// Prepare proof for importing exchange transaction. - fn make_proof( - proof_params: ProofParams, - ) -> <>::PeerBlockchain as InclusionProofVerifier>::TransactionInclusionProof; -} - -benchmarks_instance! { - // Benchmark `import_peer_transaction` extrinsic with the best possible conditions: - // * Proof is the transaction itself. - // * Transaction has minimal size. - // * Recipient account exists. - import_peer_transaction_best_case { - let i in 1..100; - - let recipient: T::AccountId = account("recipient", i, SEED); - let proof = T::make_proof(ProofParams { - recipient: recipient.clone(), - recipient_exists: true, - transaction_size_factor: 0, - proof_size_factor: 0, - }); - }: import_peer_transaction(RawOrigin::Signed(recipient), proof) - - // Benchmark `import_peer_transaction` extrinsic when recipient account does not exists. - import_peer_transaction_when_recipient_does_not_exists { - let i in 1..100; - - let recipient: T::AccountId = account("recipient", i, SEED); - let proof = T::make_proof(ProofParams { - recipient: recipient.clone(), - recipient_exists: false, - transaction_size_factor: 0, - proof_size_factor: 0, - }); - }: import_peer_transaction(RawOrigin::Signed(recipient), proof) - - // Benchmark `import_peer_transaction` when transaction size increases. - import_peer_transaction_when_transaction_size_increases { - let i in 1..100; - let n in 1..WORST_TX_SIZE_FACTOR; - - let recipient: T::AccountId = account("recipient", i, SEED); - let proof = T::make_proof(ProofParams { - recipient: recipient.clone(), - recipient_exists: true, - transaction_size_factor: n, - proof_size_factor: 0, - }); - }: import_peer_transaction(RawOrigin::Signed(recipient), proof) - - // Benchmark `import_peer_transaction` when proof size increases. - import_peer_transaction_when_proof_size_increases { - let i in 1..100; - let n in 1..WORST_PROOF_SIZE_FACTOR; - - let recipient: T::AccountId = account("recipient", i, SEED); - let proof = T::make_proof(ProofParams { - recipient: recipient.clone(), - recipient_exists: true, - transaction_size_factor: 0, - proof_size_factor: n, - }); - }: import_peer_transaction(RawOrigin::Signed(recipient), proof) - - // Benchmark `import_peer_transaction` extrinsic with the worst possible conditions: - // * Proof is large. - // * Transaction has large size. - // * Recipient account does not exists. - import_peer_transaction_worst_case { - let i in 1..100; - let m in WORST_TX_SIZE_FACTOR..WORST_TX_SIZE_FACTOR+1; - let n in WORST_PROOF_SIZE_FACTOR..WORST_PROOF_SIZE_FACTOR+1; - - let recipient: T::AccountId = account("recipient", i, SEED); - let proof = T::make_proof(ProofParams { - recipient: recipient.clone(), - recipient_exists: false, - transaction_size_factor: m, - proof_size_factor: n, - }); - }: import_peer_transaction(RawOrigin::Signed(recipient), proof) - -} diff --git a/bridges/modules/currency-exchange/src/lib.rs b/bridges/modules/currency-exchange/src/lib.rs deleted file mode 100644 index 9a8af5ba5016..000000000000 --- a/bridges/modules/currency-exchange/src/lib.rs +++ /dev/null @@ -1,496 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Runtime module that allows tokens exchange between two bridged chains. - -#![cfg_attr(not(feature = "std"), no_std)] - -use bp_currency_exchange::{ - CurrencyConverter, DepositInto, Error as ExchangeError, MaybeLockFundsTransaction, RecipientsMap, -}; -use bp_header_chain::InclusionProofVerifier; -use frame_support::{decl_error, decl_module, decl_storage, ensure}; -use sp_runtime::DispatchResult; - -#[cfg(feature = "runtime-benchmarks")] -pub mod benchmarking; - -/// Called when transaction is submitted to the exchange module. -pub trait OnTransactionSubmitted { - /// Called when valid transaction is submitted and accepted by the module. - fn on_valid_transaction_submitted(submitter: AccountId); -} - -/// The module configuration trait -pub trait Config: frame_system::Config { - /// Handler for transaction submission result. - type OnTransactionSubmitted: OnTransactionSubmitted; - /// Represents the blockchain that we'll be exchanging currency with. - type PeerBlockchain: InclusionProofVerifier; - /// Peer blockchain transaction parser. - type PeerMaybeLockFundsTransaction: MaybeLockFundsTransaction< - Transaction = ::Transaction, - >; - /// Map between blockchains recipients. - type RecipientsMap: RecipientsMap< - PeerRecipient = ::Recipient, - Recipient = Self::AccountId, - >; - /// This blockchain currency amount type. - type Amount; - /// Converter from peer blockchain currency type into current blockchain currency type. - type CurrencyConverter: CurrencyConverter< - SourceAmount = ::Amount, - TargetAmount = Self::Amount, - >; - /// Something that could grant money. - type DepositInto: DepositInto; -} - -decl_error! { - pub enum Error for Pallet, I: Instance> { - /// Invalid peer blockchain transaction provided. - InvalidTransaction, - /// Peer transaction has invalid amount. - InvalidAmount, - /// Peer transaction has invalid recipient. - InvalidRecipient, - /// Cannot map from peer recipient to this blockchain recipient. - FailedToMapRecipients, - /// Failed to convert from peer blockchain currency to this blockchain currency. - FailedToConvertCurrency, - /// Deposit has failed. - DepositFailed, - /// Deposit has partially failed (changes to recipient account were made). - DepositPartiallyFailed, - /// Transaction is not finalized. - UnfinalizedTransaction, - /// Transaction funds are already claimed. - AlreadyClaimed, - } -} - -decl_module! { - pub struct Module, I: Instance = DefaultInstance> for enum Call where origin: T::Origin { - /// Imports lock fund transaction of the peer blockchain. - #[weight = 0] // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - pub fn import_peer_transaction( - origin, - proof: <>::PeerBlockchain as InclusionProofVerifier>::TransactionInclusionProof, - ) -> DispatchResult { - let submitter = frame_system::ensure_signed(origin)?; - - // verify and parse transaction proof - let deposit = prepare_deposit_details::(&proof)?; - - // make sure to update the mapping if we deposit successfully to avoid double spending, - // i.e. whenever `deposit_into` is successful we MUST update `Transfers`. - { - // if any changes were made to the storage, we can't just return error here, because - // otherwise the same proof may be imported again - let deposit_result = T::DepositInto::deposit_into(deposit.recipient, deposit.amount); - match deposit_result { - Ok(_) => (), - Err(ExchangeError::DepositPartiallyFailed) => (), - Err(error) => return Err(Error::::from(error).into()), - } - Transfers::::insert(&deposit.transfer_id, ()) - } - - // reward submitter for providing valid message - T::OnTransactionSubmitted::on_valid_transaction_submitted(submitter); - - log::trace!( - target: "runtime", - "Completed currency exchange: {:?}", - deposit.transfer_id, - ); - - Ok(()) - } - } -} - -decl_storage! { - trait Store for Pallet, I: Instance = DefaultInstance> as Bridge { - /// All transfers that have already been claimed. - Transfers: map hasher(blake2_128_concat) ::Id => (); - } -} - -impl, I: Instance> Pallet { - /// Returns true if currency exchange module is able to import given transaction proof in - /// its current state. - pub fn filter_transaction_proof( - proof: &::TransactionInclusionProof, - ) -> bool { - if let Err(err) = prepare_deposit_details::(proof) { - log::trace!( - target: "runtime", - "Can't accept exchange transaction: {:?}", - err, - ); - - return false; - } - - true - } -} - -impl, I: Instance> From for Error { - fn from(error: ExchangeError) -> Self { - match error { - ExchangeError::InvalidTransaction => Error::InvalidTransaction, - ExchangeError::InvalidAmount => Error::InvalidAmount, - ExchangeError::InvalidRecipient => Error::InvalidRecipient, - ExchangeError::FailedToMapRecipients => Error::FailedToMapRecipients, - ExchangeError::FailedToConvertCurrency => Error::FailedToConvertCurrency, - ExchangeError::DepositFailed => Error::DepositFailed, - ExchangeError::DepositPartiallyFailed => Error::DepositPartiallyFailed, - } - } -} - -impl OnTransactionSubmitted for () { - fn on_valid_transaction_submitted(_: AccountId) {} -} - -/// Exchange deposit details. -struct DepositDetails, I: Instance> { - /// Transfer id. - pub transfer_id: ::Id, - /// Transfer recipient. - pub recipient: ::Recipient, - /// Transfer amount. - pub amount: ::TargetAmount, -} - -/// Verify and parse transaction proof, preparing everything required for importing -/// this transaction proof. -fn prepare_deposit_details, I: Instance>( - proof: &<>::PeerBlockchain as InclusionProofVerifier>::TransactionInclusionProof, -) -> Result, Error> { - // ensure that transaction is included in finalized block that we know of - let transaction = >::PeerBlockchain::verify_transaction_inclusion_proof(proof) - .ok_or(Error::::UnfinalizedTransaction)?; - - // parse transaction - let transaction = - >::PeerMaybeLockFundsTransaction::parse(&transaction).map_err(Error::::from)?; - let transfer_id = transaction.id; - ensure!( - !Transfers::::contains_key(&transfer_id), - Error::::AlreadyClaimed - ); - - // grant recipient - let recipient = T::RecipientsMap::map(transaction.recipient).map_err(Error::::from)?; - let amount = T::CurrencyConverter::convert(transaction.amount).map_err(Error::::from)?; - - Ok(DepositDetails { - transfer_id, - recipient, - amount, - }) -} - -#[cfg(test)] -mod tests { - // From construct_runtime macro - #![allow(clippy::from_over_into)] - - use super::*; - use bp_currency_exchange::LockFundsTransaction; - use frame_support::{assert_noop, assert_ok, construct_runtime, parameter_types, weights::Weight}; - use sp_core::H256; - use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup}, - Perbill, - }; - - type AccountId = u64; - - const INVALID_TRANSACTION_ID: u64 = 100; - const ALREADY_CLAIMED_TRANSACTION_ID: u64 = 101; - const UNKNOWN_RECIPIENT_ID: u64 = 0; - const INVALID_AMOUNT: u64 = 0; - const MAX_DEPOSIT_AMOUNT: u64 = 1000; - const SUBMITTER: u64 = 2000; - - type RawTransaction = LockFundsTransaction; - - pub struct DummyTransactionSubmissionHandler; - - impl OnTransactionSubmitted for DummyTransactionSubmissionHandler { - fn on_valid_transaction_submitted(submitter: AccountId) { - Transfers::::insert(submitter, ()); - } - } - - pub struct DummyBlockchain; - - impl InclusionProofVerifier for DummyBlockchain { - type Transaction = RawTransaction; - type TransactionInclusionProof = (bool, RawTransaction); - - fn verify_transaction_inclusion_proof(proof: &Self::TransactionInclusionProof) -> Option { - if proof.0 { - Some(proof.1.clone()) - } else { - None - } - } - } - - pub struct DummyTransaction; - - impl MaybeLockFundsTransaction for DummyTransaction { - type Transaction = RawTransaction; - type Id = u64; - type Recipient = AccountId; - type Amount = u64; - - fn parse(tx: &Self::Transaction) -> bp_currency_exchange::Result { - match tx.id { - INVALID_TRANSACTION_ID => Err(ExchangeError::InvalidTransaction), - _ => Ok(tx.clone()), - } - } - } - - pub struct DummyRecipientsMap; - - impl RecipientsMap for DummyRecipientsMap { - type PeerRecipient = AccountId; - type Recipient = AccountId; - - fn map(peer_recipient: Self::PeerRecipient) -> bp_currency_exchange::Result { - match peer_recipient { - UNKNOWN_RECIPIENT_ID => Err(ExchangeError::FailedToMapRecipients), - _ => Ok(peer_recipient * 10), - } - } - } - - pub struct DummyCurrencyConverter; - - impl CurrencyConverter for DummyCurrencyConverter { - type SourceAmount = u64; - type TargetAmount = u64; - - fn convert(amount: Self::SourceAmount) -> bp_currency_exchange::Result { - match amount { - INVALID_AMOUNT => Err(ExchangeError::FailedToConvertCurrency), - _ => Ok(amount * 10), - } - } - } - - pub struct DummyDepositInto; - - impl DepositInto for DummyDepositInto { - type Recipient = AccountId; - type Amount = u64; - - fn deposit_into(_recipient: Self::Recipient, amount: Self::Amount) -> bp_currency_exchange::Result<()> { - match amount { - amount if amount < MAX_DEPOSIT_AMOUNT * 10 => Ok(()), - amount if amount == MAX_DEPOSIT_AMOUNT * 10 => Err(ExchangeError::DepositPartiallyFailed), - _ => Err(ExchangeError::DepositFailed), - } - } - } - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - use crate as pallet_bridge_currency_exchange; - - construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Exchange: pallet_bridge_currency_exchange::{Pallet}, - } - } - - parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); - } - - impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - impl Config for TestRuntime { - type OnTransactionSubmitted = DummyTransactionSubmissionHandler; - type PeerBlockchain = DummyBlockchain; - type PeerMaybeLockFundsTransaction = DummyTransaction; - type RecipientsMap = DummyRecipientsMap; - type Amount = u64; - type CurrencyConverter = DummyCurrencyConverter; - type DepositInto = DummyDepositInto; - } - - fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::default() - .build_storage::() - .unwrap(); - sp_io::TestExternalities::new(t) - } - - fn transaction(id: u64) -> RawTransaction { - RawTransaction { - id, - recipient: 1, - amount: 2, - } - } - - #[test] - fn unfinalized_transaction_rejected() { - new_test_ext().execute_with(|| { - assert_noop!( - Exchange::import_peer_transaction(Origin::signed(SUBMITTER), (false, transaction(0))), - Error::::UnfinalizedTransaction, - ); - }); - } - - #[test] - fn invalid_transaction_rejected() { - new_test_ext().execute_with(|| { - assert_noop!( - Exchange::import_peer_transaction( - Origin::signed(SUBMITTER), - (true, transaction(INVALID_TRANSACTION_ID)), - ), - Error::::InvalidTransaction, - ); - }); - } - - #[test] - fn claimed_transaction_rejected() { - new_test_ext().execute_with(|| { - ::Transfers::insert(ALREADY_CLAIMED_TRANSACTION_ID, ()); - assert_noop!( - Exchange::import_peer_transaction( - Origin::signed(SUBMITTER), - (true, transaction(ALREADY_CLAIMED_TRANSACTION_ID)), - ), - Error::::AlreadyClaimed, - ); - }); - } - - #[test] - fn transaction_with_unknown_recipient_rejected() { - new_test_ext().execute_with(|| { - let mut transaction = transaction(0); - transaction.recipient = UNKNOWN_RECIPIENT_ID; - assert_noop!( - Exchange::import_peer_transaction(Origin::signed(SUBMITTER), (true, transaction)), - Error::::FailedToMapRecipients, - ); - }); - } - - #[test] - fn transaction_with_invalid_amount_rejected() { - new_test_ext().execute_with(|| { - let mut transaction = transaction(0); - transaction.amount = INVALID_AMOUNT; - assert_noop!( - Exchange::import_peer_transaction(Origin::signed(SUBMITTER), (true, transaction)), - Error::::FailedToConvertCurrency, - ); - }); - } - - #[test] - fn transaction_with_invalid_deposit_rejected() { - new_test_ext().execute_with(|| { - let mut transaction = transaction(0); - transaction.amount = MAX_DEPOSIT_AMOUNT + 1; - assert_noop!( - Exchange::import_peer_transaction(Origin::signed(SUBMITTER), (true, transaction)), - Error::::DepositFailed, - ); - }); - } - - #[test] - fn valid_transaction_accepted_even_if_deposit_partially_fails() { - new_test_ext().execute_with(|| { - let mut transaction = transaction(0); - transaction.amount = MAX_DEPOSIT_AMOUNT; - assert_ok!(Exchange::import_peer_transaction( - Origin::signed(SUBMITTER), - (true, transaction), - ),); - - // ensure that the transfer has been marked as completed - assert!(::Transfers::contains_key(0u64)); - // ensure that submitter has been rewarded - assert!(::Transfers::contains_key(SUBMITTER)); - }); - } - - #[test] - fn valid_transaction_accepted() { - new_test_ext().execute_with(|| { - assert_ok!(Exchange::import_peer_transaction( - Origin::signed(SUBMITTER), - (true, transaction(0)), - ),); - - // ensure that the transfer has been marked as completed - assert!(::Transfers::contains_key(0u64)); - // ensure that submitter has been rewarded - assert!(::Transfers::contains_key(SUBMITTER)); - }); - } -} diff --git a/bridges/modules/dispatch/Cargo.toml b/bridges/modules/dispatch/Cargo.toml deleted file mode 100644 index 6170af272ad9..000000000000 --- a/bridges/modules/dispatch/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "pallet-bridge-dispatch" -description = "A Substrate Runtime module that dispatches a bridge message, treating it simply as encoded Call" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -log = { version = "0.4.14", default-features = false } - -# Bridge dependencies - -bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } -bp-runtime = { path = "../../primitives/runtime", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde = "1.0" - -[features] -default = ["std"] -std = [ - "bp-message-dispatch/std", - "bp-runtime/std", - "frame-support/std", - "frame-system/std", - "log/std", - "sp-core/std", - "sp-runtime/std", - "sp-std/std", -] diff --git a/bridges/modules/dispatch/src/lib.rs b/bridges/modules/dispatch/src/lib.rs deleted file mode 100644 index e9bf75686bbd..000000000000 --- a/bridges/modules/dispatch/src/lib.rs +++ /dev/null @@ -1,971 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Runtime module which takes care of dispatching messages received over the bridge. -//! -//! The messages are interpreted directly as runtime `Call`. We attempt to decode -//! them and then dispatch as usual. To prevent compatibility issues, the Calls have -//! to include a `spec_version`. This will be checked before dispatch. In the case of -//! a succesful dispatch an event is emitted. - -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_docs)] -// Generated by `decl_event!` -#![allow(clippy::unused_unit)] - -use bp_message_dispatch::{CallOrigin, MessageDispatch, MessagePayload, SpecVersion, Weight}; -use bp_runtime::{ - derive_account_id, - messages::{DispatchFeePayment, MessageDispatchResult}, - ChainId, SourceAccount, -}; -use codec::{Decode, Encode}; -use frame_support::{ - decl_event, decl_module, decl_storage, - dispatch::{Dispatchable, Parameter}, - ensure, - traits::{Filter, Get}, - weights::{extract_actual_weight, GetDispatchInfo}, -}; -use frame_system::RawOrigin; -use sp_runtime::{ - traits::{BadOrigin, Convert, IdentifyAccount, MaybeDisplay, MaybeSerializeDeserialize, Member, Verify}, - DispatchResult, -}; -use sp_std::{fmt::Debug, marker::PhantomData, prelude::*}; - -/// The module configuration trait. -pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + Into<::Event>; - /// Id of the message. Whenever message is passed to the dispatch module, it emits - /// event with this id + dispatch result. Could be e.g. (LaneId, MessageNonce) if - /// it comes from the messages module. - type MessageId: Parameter; - /// Type of account ID on source chain. - type SourceChainAccountId: Parameter + Member + MaybeSerializeDeserialize + Debug + MaybeDisplay + Ord + Default; - /// Type of account public key on target chain. - type TargetChainAccountPublic: Parameter + IdentifyAccount; - /// Type of signature that may prove that the message has been signed by - /// owner of `TargetChainAccountPublic`. - type TargetChainSignature: Parameter + Verify; - /// The overarching dispatch call type. - type Call: Parameter - + GetDispatchInfo - + Dispatchable< - Origin = ::Origin, - PostInfo = frame_support::dispatch::PostDispatchInfo, - >; - /// Pre-dispatch filter for incoming calls. - /// - /// The pallet will filter all incoming calls right before they're dispatched. If this filter - /// rejects the call, special event (`Event::MessageCallRejected`) is emitted. - type CallFilter: Filter<>::Call>; - /// The type that is used to wrap the `Self::Call` when it is moved over bridge. - /// - /// The idea behind this is to avoid `Call` conversion/decoding until we'll be sure - /// that all other stuff (like `spec_version`) is ok. If we would try to decode - /// `Call` which has been encoded using previous `spec_version`, then we might end - /// up with decoding error, instead of `MessageVersionSpecMismatch`. - type EncodedCall: Decode + Encode + Into>::Call, ()>>; - /// A type which can be turned into an AccountId from a 256-bit hash. - /// - /// Used when deriving target chain AccountIds from source chain AccountIds. - type AccountIdConverter: sp_runtime::traits::Convert; -} - -decl_storage! { - trait Store for Pallet, I: Instance = DefaultInstance> as Dispatch {} -} - -decl_event!( - pub enum Event where - >::MessageId, - AccountId = ::AccountId, - { - /// Message has been rejected before reaching dispatch. - MessageRejected(ChainId, MessageId), - /// Message has been rejected by dispatcher because of spec version mismatch. - /// Last two arguments are: expected and passed spec version. - MessageVersionSpecMismatch(ChainId, MessageId, SpecVersion, SpecVersion), - /// Message has been rejected by dispatcher because of weight mismatch. - /// Last two arguments are: expected and passed call weight. - MessageWeightMismatch(ChainId, MessageId, Weight, Weight), - /// Message signature mismatch. - MessageSignatureMismatch(ChainId, MessageId), - /// We have failed to decode Call from the message. - MessageCallDecodeFailed(ChainId, MessageId), - /// The call from the message has been rejected by the call filter. - MessageCallRejected(ChainId, MessageId), - /// The origin account has failed to pay fee for dispatching the message. - MessageDispatchPaymentFailed(ChainId, MessageId, AccountId, Weight), - /// Message has been dispatched with given result. - MessageDispatched(ChainId, MessageId, DispatchResult), - /// Phantom member, never used. Needed to handle multiple pallet instances. - _Dummy(PhantomData), - } -); - -decl_module! { - /// Call Dispatch FRAME Pallet. - pub struct Module, I: Instance = DefaultInstance> for enum Call where origin: T::Origin { - /// Deposit one of this module's events by using the default implementation. - fn deposit_event() = default; - } -} - -impl, I: Instance> MessageDispatch for Pallet { - type Message = - MessagePayload; - - fn dispatch_weight(message: &Self::Message) -> Weight { - message.weight - } - - fn dispatch Result<(), ()>>( - source_chain: ChainId, - target_chain: ChainId, - id: T::MessageId, - message: Result, - pay_dispatch_fee: P, - ) -> MessageDispatchResult { - // emit special even if message has been rejected by external component - let message = match message { - Ok(message) => message, - Err(_) => { - log::trace!( - target: "runtime::bridge-dispatch", - "Message {:?}/{:?}: rejected before actual dispatch", - source_chain, - id, - ); - Self::deposit_event(RawEvent::MessageRejected(source_chain, id)); - return MessageDispatchResult { - dispatch_result: false, - unspent_weight: 0, - dispatch_fee_paid_during_dispatch: false, - }; - } - }; - - // verify spec version - // (we want it to be the same, because otherwise we may decode Call improperly) - let mut dispatch_result = MessageDispatchResult { - dispatch_result: false, - unspent_weight: message.weight, - dispatch_fee_paid_during_dispatch: false, - }; - let expected_version = ::Version::get().spec_version; - if message.spec_version != expected_version { - log::trace!( - "Message {:?}/{:?}: spec_version mismatch. Expected {:?}, got {:?}", - source_chain, - id, - expected_version, - message.spec_version, - ); - Self::deposit_event(RawEvent::MessageVersionSpecMismatch( - source_chain, - id, - expected_version, - message.spec_version, - )); - return dispatch_result; - } - - // now that we have spec version checked, let's decode the call - let call = match message.call.into() { - Ok(call) => call, - Err(_) => { - log::trace!( - target: "runtime::bridge-dispatch", - "Failed to decode Call from message {:?}/{:?}", - source_chain, - id, - ); - Self::deposit_event(RawEvent::MessageCallDecodeFailed(source_chain, id)); - return dispatch_result; - } - }; - - // prepare dispatch origin - let origin_account = match message.origin { - CallOrigin::SourceRoot => { - let hex_id = derive_account_id::(source_chain, SourceAccount::Root); - let target_id = T::AccountIdConverter::convert(hex_id); - log::trace!(target: "runtime::bridge-dispatch", "Root Account: {:?}", &target_id); - target_id - } - CallOrigin::TargetAccount(source_account_id, target_public, target_signature) => { - let digest = account_ownership_digest( - &call, - source_account_id, - message.spec_version, - source_chain, - target_chain, - ); - - let target_account = target_public.into_account(); - if !target_signature.verify(&digest[..], &target_account) { - log::trace!( - target: "runtime::bridge-dispatch", - "Message {:?}/{:?}: origin proof is invalid. Expected account: {:?} from signature: {:?}", - source_chain, - id, - target_account, - target_signature, - ); - Self::deposit_event(RawEvent::MessageSignatureMismatch(source_chain, id)); - return dispatch_result; - } - - log::trace!(target: "runtime::bridge-dispatch", "Target Account: {:?}", &target_account); - target_account - } - CallOrigin::SourceAccount(source_account_id) => { - let hex_id = derive_account_id(source_chain, SourceAccount::Account(source_account_id)); - let target_id = T::AccountIdConverter::convert(hex_id); - log::trace!(target: "runtime::bridge-dispatch", "Source Account: {:?}", &target_id); - target_id - } - }; - - // filter the call - if !T::CallFilter::filter(&call) { - log::trace!( - target: "runtime::bridge-dispatch", - "Message {:?}/{:?}: the call ({:?}) is rejected by filter", - source_chain, - id, - call, - ); - Self::deposit_event(RawEvent::MessageCallRejected(source_chain, id)); - return dispatch_result; - } - - // verify weight - // (we want passed weight to be at least equal to pre-dispatch weight of the call - // because otherwise Calls may be dispatched at lower price) - let dispatch_info = call.get_dispatch_info(); - let expected_weight = dispatch_info.weight; - if message.weight < expected_weight { - log::trace!( - target: "runtime::bridge-dispatch", - "Message {:?}/{:?}: passed weight is too low. Expected at least {:?}, got {:?}", - source_chain, - id, - expected_weight, - message.weight, - ); - Self::deposit_event(RawEvent::MessageWeightMismatch( - source_chain, - id, - expected_weight, - message.weight, - )); - return dispatch_result; - } - - // pay dispatch fee right before dispatch - let pay_dispatch_fee_at_target_chain = message.dispatch_fee_payment == DispatchFeePayment::AtTargetChain; - if pay_dispatch_fee_at_target_chain && pay_dispatch_fee(&origin_account, message.weight).is_err() { - log::trace!( - target: "runtime::bridge-dispatch", - "Failed to pay dispatch fee for dispatching message {:?}/{:?} with weight {}", - source_chain, - id, - message.weight, - ); - Self::deposit_event(RawEvent::MessageDispatchPaymentFailed( - source_chain, - id, - origin_account, - message.weight, - )); - return dispatch_result; - } - dispatch_result.dispatch_fee_paid_during_dispatch = pay_dispatch_fee_at_target_chain; - - // finally dispatch message - let origin = RawOrigin::Signed(origin_account).into(); - - log::trace!(target: "runtime::bridge-dispatch", "Message being dispatched is: {:.4096?}", &call); - let result = call.dispatch(origin); - let actual_call_weight = extract_actual_weight(&result, &dispatch_info); - dispatch_result.dispatch_result = result.is_ok(); - dispatch_result.unspent_weight = message.weight.saturating_sub(actual_call_weight); - - log::trace!( - target: "runtime::bridge-dispatch", - "Message {:?}/{:?} has been dispatched. Weight: {} of {}. Result: {:?}. Call dispatch result: {:?}", - source_chain, - id, - dispatch_result.unspent_weight, - message.weight, - dispatch_result, - result, - ); - - Self::deposit_event(RawEvent::MessageDispatched( - source_chain, - id, - result.map(drop).map_err(|e| e.error), - )); - - dispatch_result - } -} - -/// Check if the message is allowed to be dispatched on the target chain given the sender's origin -/// on the source chain. -/// -/// For example, if a message is sent from a "regular" account on the source chain it will not be -/// allowed to be dispatched as Root on the target chain. This is a useful check to do on the source -/// chain _before_ sending a message whose dispatch will be rejected on the target chain. -pub fn verify_message_origin( - sender_origin: &RawOrigin, - message: &MessagePayload, -) -> Result, BadOrigin> -where - SourceChainAccountId: PartialEq + Clone, -{ - match message.origin { - CallOrigin::SourceRoot => { - ensure!(sender_origin == &RawOrigin::Root, BadOrigin); - Ok(None) - } - CallOrigin::TargetAccount(ref source_account_id, _, _) => { - ensure!( - sender_origin == &RawOrigin::Signed(source_account_id.clone()), - BadOrigin - ); - Ok(Some(source_account_id.clone())) - } - CallOrigin::SourceAccount(ref source_account_id) => { - ensure!( - sender_origin == &RawOrigin::Signed(source_account_id.clone()) || sender_origin == &RawOrigin::Root, - BadOrigin - ); - Ok(Some(source_account_id.clone())) - } - } -} - -/// Target account ownership digest from the source chain. -/// -/// The byte vector returned by this function will be signed with a target chain account -/// private key. This way, the owner of `source_account_id` on the source chain proves that -/// the target chain account private key is also under his control. -pub fn account_ownership_digest( - call: &Call, - source_account_id: AccountId, - target_spec_version: SpecVersion, - source_chain_id: ChainId, - target_chain_id: ChainId, -) -> Vec -where - Call: Encode, - AccountId: Encode, - SpecVersion: Encode, -{ - let mut proof = Vec::new(); - call.encode_to(&mut proof); - source_account_id.encode_to(&mut proof); - target_spec_version.encode_to(&mut proof); - source_chain_id.encode_to(&mut proof); - target_chain_id.encode_to(&mut proof); - - proof -} - -#[cfg(test)] -mod tests { - // From construct_runtime macro - #![allow(clippy::from_over_into)] - - use super::*; - use frame_support::{parameter_types, weights::Weight}; - use frame_system::{EventRecord, Phase}; - use sp_core::H256; - use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup}, - Perbill, - }; - - type AccountId = u64; - type MessageId = [u8; 4]; - - const SOURCE_CHAIN_ID: ChainId = *b"srce"; - const TARGET_CHAIN_ID: ChainId = *b"trgt"; - - #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] - pub struct TestAccountPublic(AccountId); - - impl IdentifyAccount for TestAccountPublic { - type AccountId = AccountId; - - fn into_account(self) -> AccountId { - self.0 - } - } - - #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] - pub struct TestSignature(AccountId); - - impl Verify for TestSignature { - type Signer = TestAccountPublic; - - fn verify>(&self, _msg: L, signer: &AccountId) -> bool { - self.0 == *signer - } - } - - pub struct AccountIdConverter; - - impl sp_runtime::traits::Convert for AccountIdConverter { - fn convert(hash: H256) -> AccountId { - hash.to_low_u64_ne() - } - } - - type Block = frame_system::mocking::MockBlock; - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - - use crate as call_dispatch; - - frame_support::construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Dispatch: call_dispatch::{Pallet, Call, Event}, - } - } - - parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); - } - - impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - impl Config for TestRuntime { - type Event = Event; - type MessageId = MessageId; - type SourceChainAccountId = AccountId; - type TargetChainAccountPublic = TestAccountPublic; - type TargetChainSignature = TestSignature; - type Call = Call; - type CallFilter = TestCallFilter; - type EncodedCall = EncodedCall; - type AccountIdConverter = AccountIdConverter; - } - - #[derive(Decode, Encode)] - pub struct EncodedCall(Vec); - - impl From for Result { - fn from(call: EncodedCall) -> Result { - Call::decode(&mut &call.0[..]).map_err(drop) - } - } - - pub struct TestCallFilter; - - impl Filter for TestCallFilter { - fn filter(call: &Call) -> bool { - !matches!(*call, Call::System(frame_system::Call::fill_block(_))) - } - } - - const TEST_SPEC_VERSION: SpecVersion = 0; - const TEST_WEIGHT: Weight = 1_000_000_000; - - fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::default() - .build_storage::() - .unwrap(); - sp_io::TestExternalities::new(t) - } - - fn prepare_message( - origin: CallOrigin, - call: Call, - ) -> as MessageDispatch::MessageId>>::Message { - MessagePayload { - spec_version: TEST_SPEC_VERSION, - weight: TEST_WEIGHT, - origin, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: EncodedCall(call.encode()), - } - } - - fn prepare_root_message( - call: Call, - ) -> as MessageDispatch::MessageId>>::Message { - prepare_message(CallOrigin::SourceRoot, call) - } - - fn prepare_target_message( - call: Call, - ) -> as MessageDispatch::MessageId>>::Message { - let origin = CallOrigin::TargetAccount(1, TestAccountPublic(1), TestSignature(1)); - prepare_message(origin, call) - } - - fn prepare_source_message( - call: Call, - ) -> as MessageDispatch::MessageId>>::Message { - let origin = CallOrigin::SourceAccount(1); - prepare_message(origin, call) - } - - #[test] - fn should_fail_on_spec_version_mismatch() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - const BAD_SPEC_VERSION: SpecVersion = 99; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - let weight = message.weight; - message.spec_version = BAD_SPEC_VERSION; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert_eq!(result.unspent_weight, weight); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageVersionSpecMismatch( - SOURCE_CHAIN_ID, - id, - TEST_SPEC_VERSION, - BAD_SPEC_VERSION - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_fail_on_weight_mismatch() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - message.weight = 7; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert_eq!(result.unspent_weight, 7); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageWeightMismatch( - SOURCE_CHAIN_ID, - id, - 1038000, - 7, - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_fail_on_signature_mismatch() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let call_origin = CallOrigin::TargetAccount(1, TestAccountPublic(1), TestSignature(99)); - let message = prepare_message( - call_origin, - Call::System(>::remark(vec![1, 2, 3])), - ); - let weight = message.weight; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert_eq!(result.unspent_weight, weight); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageSignatureMismatch( - SOURCE_CHAIN_ID, - id - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_emit_event_for_rejected_messages() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - System::set_block_number(1); - Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Err(()), |_, _| unreachable!()); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageRejected( - SOURCE_CHAIN_ID, - id - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_fail_on_call_decode() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - let weight = message.weight; - message.call.0 = vec![]; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert_eq!(result.unspent_weight, weight); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageCallDecodeFailed( - SOURCE_CHAIN_ID, - id - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_emit_event_for_rejected_calls() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let call = Call::System(>::fill_block(Perbill::from_percent(75))); - let weight = call.get_dispatch_info().weight; - let mut message = prepare_root_message(call); - message.weight = weight; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert_eq!(result.unspent_weight, weight); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageCallRejected( - SOURCE_CHAIN_ID, - id - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_emit_event_for_unpaid_calls() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - let weight = message.weight; - message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| Err(())); - assert_eq!(result.unspent_weight, weight); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatchPaymentFailed( - SOURCE_CHAIN_ID, - id, - AccountIdConverter::convert(derive_account_id::( - SOURCE_CHAIN_ID, - SourceAccount::Root - )), - TEST_WEIGHT, - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_dispatch_calls_paid_at_target_chain() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| Ok(())); - assert!(result.dispatch_fee_paid_during_dispatch); - assert!(result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( - SOURCE_CHAIN_ID, - id, - Ok(()) - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_return_dispatch_failed_flag_if_dispatch_happened_but_failed() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let call = Call::System(>::set_heap_pages(1)); - let message = prepare_target_message(call); - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert!(!result.dispatch_fee_paid_during_dispatch); - assert!(!result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( - SOURCE_CHAIN_ID, - id, - Err(sp_runtime::DispatchError::BadOrigin) - )), - topics: vec![], - }], - ); - }) - } - - #[test] - fn should_dispatch_bridge_message_from_root_origin() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - let message = prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert!(!result.dispatch_fee_paid_during_dispatch); - assert!(result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( - SOURCE_CHAIN_ID, - id, - Ok(()) - )), - topics: vec![], - }], - ); - }); - } - - #[test] - fn should_dispatch_bridge_message_from_target_origin() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let call = Call::System(>::remark(vec![])); - let message = prepare_target_message(call); - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert!(!result.dispatch_fee_paid_during_dispatch); - assert!(result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( - SOURCE_CHAIN_ID, - id, - Ok(()) - )), - topics: vec![], - }], - ); - }) - } - - #[test] - fn should_dispatch_bridge_message_from_source_origin() { - new_test_ext().execute_with(|| { - let id = [0; 4]; - - let call = Call::System(>::remark(vec![])); - let message = prepare_source_message(call); - - System::set_block_number(1); - let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); - assert!(!result.dispatch_fee_paid_during_dispatch); - assert!(result.dispatch_result); - - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( - SOURCE_CHAIN_ID, - id, - Ok(()) - )), - topics: vec![], - }], - ); - }) - } - - #[test] - fn origin_is_checked_when_verifying_sending_message_using_source_root_account() { - let call = Call::System(>::remark(vec![])); - let message = prepare_root_message(call); - - // When message is sent by Root, CallOrigin::SourceRoot is allowed - assert!(matches!(verify_message_origin(&RawOrigin::Root, &message), Ok(None))); - - // when message is sent by some real account, CallOrigin::SourceRoot is not allowed - assert!(matches!( - verify_message_origin(&RawOrigin::Signed(1), &message), - Err(BadOrigin) - )); - } - - #[test] - fn origin_is_checked_when_verifying_sending_message_using_target_account() { - let call = Call::System(>::remark(vec![])); - let message = prepare_target_message(call); - - // When message is sent by Root, CallOrigin::TargetAccount is not allowed - assert!(matches!( - verify_message_origin(&RawOrigin::Root, &message), - Err(BadOrigin) - )); - - // When message is sent by some other account, it is rejected - assert!(matches!( - verify_message_origin(&RawOrigin::Signed(2), &message), - Err(BadOrigin) - )); - - // When message is sent by a real account, it is allowed to have origin - // CallOrigin::TargetAccount - assert!(matches!( - verify_message_origin(&RawOrigin::Signed(1), &message), - Ok(Some(1)) - )); - } - - #[test] - fn origin_is_checked_when_verifying_sending_message_using_source_account() { - let call = Call::System(>::remark(vec![])); - let message = prepare_source_message(call); - - // Sending a message from the expected origin account works - assert!(matches!( - verify_message_origin(&RawOrigin::Signed(1), &message), - Ok(Some(1)) - )); - - // If we send a message from a different account, it is rejected - assert!(matches!( - verify_message_origin(&RawOrigin::Signed(2), &message), - Err(BadOrigin) - )); - - // The Root account is allowed to assume any expected origin account - assert!(matches!(verify_message_origin(&RawOrigin::Root, &message), Ok(Some(1)))); - } -} diff --git a/bridges/modules/ethereum-contract-builtin/Cargo.toml b/bridges/modules/ethereum-contract-builtin/Cargo.toml deleted file mode 100644 index d20b0d0be85b..000000000000 --- a/bridges/modules/ethereum-contract-builtin/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "ethereum-contract-builtin" -description = "Small crate that helps Solidity contract to verify finality proof." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -ethereum-types = "0.11.0" -finality-grandpa = "0.14.1" -hex = "0.4" -log = "0.4.14" - -# Runtime/chain specific dependencies - -rialto-runtime = { path = "../../bin/rialto/runtime" } - -# Substrate Dependencies - -sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/modules/ethereum-contract-builtin/src/lib.rs b/bridges/modules/ethereum-contract-builtin/src/lib.rs deleted file mode 100644 index a07f838cf8d6..000000000000 --- a/bridges/modules/ethereum-contract-builtin/src/lib.rs +++ /dev/null @@ -1,374 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use codec::{Decode, Encode}; -use ethereum_types::U256; -use finality_grandpa::voter_set::VoterSet; -use rialto_runtime::{Block, BlockNumber, Hash, Header as RuntimeHeader}; -use sp_blockchain::Error as ClientError; -use sp_finality_grandpa::{AuthorityList, ConsensusLog, GRANDPA_ENGINE_ID}; - -/// Builtin errors. -#[derive(Debug)] -pub enum Error { - /// Failed to decode block number. - BlockNumberDecode, - /// Failed to decode Substrate header. - HeaderDecode(codec::Error), - /// Failed to decode best voters set. - BestSetDecode(codec::Error), - /// Best voters set is invalid. - InvalidBestSet, - /// Failed to decode finality proof. - FinalityProofDecode(codec::Error), - /// Failed to verify justification. - JustificationVerify(Box), -} - -/// Substrate header. -#[derive(Debug, PartialEq)] -pub struct Header { - /// Header hash. - pub hash: Hash, - /// Parent header hash. - pub parent_hash: Hash, - /// Header number. - pub number: BlockNumber, - /// GRANDPA validators change signal. - pub signal: Option, -} - -/// GRANDPA validators set change signal. -#[derive(Debug, PartialEq)] -pub struct ValidatorsSetSignal { - /// Signal delay. - pub delay: BlockNumber, - /// New validators set. - pub validators: Vec, -} - -/// Convert from U256 to BlockNumber. Fails if `U256` value isn't fitting within `BlockNumber` -/// limits (the runtime referenced by this module uses u32 as `BlockNumber`). -pub fn to_substrate_block_number(number: U256) -> Result { - let substrate_block_number = match number == number.low_u32().into() { - true => Ok(number.low_u32()), - false => Err(Error::BlockNumberDecode), - }; - - log::trace!( - target: "bridge-builtin", - "Parsed Substrate block number from {}: {:?}", - number, - substrate_block_number, - ); - - substrate_block_number -} - -/// Convert from BlockNumber to U256. -pub fn from_substrate_block_number(number: BlockNumber) -> Result { - Ok(U256::from(number as u64)) -} - -/// Parse Substrate header. -pub fn parse_substrate_header(raw_header: &[u8]) -> Result { - let substrate_header = RuntimeHeader::decode(&mut &*raw_header) - .map(|header| Header { - hash: header.hash(), - parent_hash: header.parent_hash, - number: header.number, - signal: sp_runtime::traits::Header::digest(&header) - .log(|log| { - log.as_consensus().and_then(|(engine_id, log)| { - if engine_id == GRANDPA_ENGINE_ID { - Some(log) - } else { - None - } - }) - }) - .and_then(|log| ConsensusLog::decode(&mut &*log).ok()) - .and_then(|log| match log { - ConsensusLog::ScheduledChange(scheduled_change) => Some(ValidatorsSetSignal { - delay: scheduled_change.delay, - validators: scheduled_change.next_authorities.encode(), - }), - _ => None, - }), - }) - .map_err(Error::HeaderDecode); - - log::debug!( - target: "bridge-builtin", - "Parsed Substrate header {}: {:?}", - if substrate_header.is_ok() { - format!("<{}-bytes-blob>", raw_header.len()) - } else { - hex::encode(raw_header) - }, - substrate_header, - ); - - substrate_header -} - -/// Verify GRANDPA finality proof. -pub fn verify_substrate_finality_proof( - finality_target_number: BlockNumber, - finality_target_hash: Hash, - best_set_id: u64, - raw_best_set: &[u8], - raw_finality_proof: &[u8], -) -> Result<(), Error> { - let best_set = AuthorityList::decode(&mut &*raw_best_set) - .map_err(Error::BestSetDecode) - .and_then(|authorities| VoterSet::new(authorities.into_iter()).ok_or(Error::InvalidBestSet)); - - log::debug!( - target: "bridge-builtin", - "Parsed Substrate authorities set {}: {:?}", - if best_set.is_ok() { - format!("<{}-bytes-blob>", raw_best_set.len()) - } else { - hex::encode(raw_best_set) - }, - best_set, - ); - - let best_set = best_set?; - - let verify_result = sc_finality_grandpa::GrandpaJustification::::decode_and_verify_finalizes( - raw_finality_proof, - (finality_target_hash, finality_target_number), - best_set_id, - &best_set, - ) - .map_err(Box::new) - .map_err(Error::JustificationVerify) - .map(|_| ()); - - log::debug!( - target: "bridge-builtin", - "Verified Substrate finality proof {}: {:?}", - if verify_result.is_ok() { - format!("<{}-bytes-blob>", raw_finality_proof.len()) - } else { - hex::encode(raw_finality_proof) - }, - verify_result, - ); - - verify_result -} - -#[cfg(test)] -mod tests { - use super::*; - use rialto_runtime::DigestItem; - use sp_core::crypto::Public; - use sp_finality_grandpa::{AuthorityId, ScheduledChange}; - use sp_runtime::generic::Digest; - - #[test] - fn to_substrate_block_number_succeeds() { - assert_eq!(to_substrate_block_number(U256::zero()).unwrap(), 0); - assert_eq!( - to_substrate_block_number(U256::from(std::u32::MAX as u64)).unwrap(), - 0xFFFFFFFF - ); - } - - #[test] - fn to_substrate_block_number_fails() { - assert!(matches!( - to_substrate_block_number(U256::from(std::u32::MAX as u64 + 1)), - Err(Error::BlockNumberDecode) - )); - } - - #[test] - fn from_substrate_block_number_succeeds() { - assert_eq!(from_substrate_block_number(0).unwrap(), U256::zero()); - assert_eq!( - from_substrate_block_number(std::u32::MAX).unwrap(), - U256::from(std::u32::MAX) - ); - } - - #[test] - fn substrate_header_without_signal_parsed() { - let raw_header = RuntimeHeader { - parent_hash: [0u8; 32].into(), - number: 0, - state_root: "b2fc47904df5e355c6ab476d89fbc0733aeddbe302f0b94ba4eea9283f7e89e7" - .parse() - .unwrap(), - extrinsics_root: "03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314" - .parse() - .unwrap(), - digest: Default::default(), - } - .encode(); - assert_eq!( - raw_header, - hex::decode("000000000000000000000000000000000000000000000000000000000000000000b2fc47904df5e355c6ab476d89fbc0733aeddbe302f0b94ba4eea9283f7e89e703170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400").unwrap(), - ); - - assert_eq!( - parse_substrate_header(&raw_header).unwrap(), - Header { - hash: "afbbeb92bf6ff14f60bdef0aa89f043dd403659ae82665238810ace0d761f6d0" - .parse() - .unwrap(), - parent_hash: Default::default(), - number: 0, - signal: None, - }, - ); - } - - #[test] - fn substrate_header_with_signal_parsed() { - let authorities = vec![ - (AuthorityId::from_slice(&[1; 32]), 101), - (AuthorityId::from_slice(&[3; 32]), 103), - ]; - let mut digest = Digest::default(); - digest.push(DigestItem::Consensus( - GRANDPA_ENGINE_ID, - ConsensusLog::ScheduledChange(ScheduledChange { - next_authorities: authorities.clone(), - delay: 8, - }) - .encode(), - )); - - let raw_header = RuntimeHeader { - parent_hash: "c0ac300d4005141ea690f3df593e049739c227316eb7f05052f3ee077388b68b" - .parse() - .unwrap(), - number: 8, - state_root: "822d6b412033aa9ac8e1722918eec5f25633529225754b3d4149982f5cacd4aa" - .parse() - .unwrap(), - extrinsics_root: "e7b07c0ce2799416ce7877b9cefc7f596bea5e8813bb2a0abf760414073ca928" - .parse() - .unwrap(), - digest, - } - .encode(); - assert_eq!( - raw_header, - hex::decode("c0ac300d4005141ea690f3df593e049739c227316eb7f05052f3ee077388b68b20822d6b412033aa9ac8e1722918eec5f25633529225754b3d4149982f5cacd4aae7b07c0ce2799416ce7877b9cefc7f596bea5e8813bb2a0abf760414073ca928040446524e4b59010108010101010101010101010101010101010101010101010101010101010101010165000000000000000303030303030303030303030303030303030303030303030303030303030303670000000000000008000000").unwrap(), - ); - - assert_eq!( - parse_substrate_header(&raw_header).unwrap(), - Header { - hash: "3dfebb280bd87a4640f89d7f2adecd62b88148747bff5b63af6e1634ee37a56e" - .parse() - .unwrap(), - parent_hash: "c0ac300d4005141ea690f3df593e049739c227316eb7f05052f3ee077388b68b" - .parse() - .unwrap(), - number: 8, - signal: Some(ValidatorsSetSignal { - delay: 8, - validators: authorities.encode(), - }), - }, - ); - } - - /// Number of the example block with justification. - const EXAMPLE_JUSTIFIED_BLOCK_NUMBER: u32 = 8; - /// Hash of the example block with justification. - const EXAMPLE_JUSTIFIED_BLOCK_HASH: &str = "a2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f343775"; - /// Id of authorities set that have generated example justification. Could be computed by tracking - /// every set change in canonized headers. - const EXAMPLE_AUTHORITIES_SET_ID: u64 = 0; - /// Encoded authorities set that has generated example justification. Could be fetched from `ScheduledChange` - /// digest of the block that has scheduled this set OR by calling `GrandpaApi::grandpa_authorities()` at - /// appropriate block. - const EXAMPLE_AUTHORITIES_SET: &str = "1488dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee0100000000000000d17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae690100000000000000439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f01000000000000005e639b43e0052c47447dac87d6fd2b6ec50bdd4d0f614e4299c665249bbd09d901000000000000001dfe3e22cc0d45c70779c1095f7489a8ef3cf52d62fbd8c2fa38c9f1723502b50100000000000000"; - /// Example justification. Could be fetched by calling 'chain_getBlock' RPC. - const EXAMPLE_JUSTIFICATION: &str = "2600000000000000a2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f3437750800000010a2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f34377508000000d66b4ceb57ef8bcbc955071b597c8c5d2adcfdbb009c73f8438d342670fdeca9ac60686cbd58105b10f51d0a64a8e73b2e5829b2eab3248a008c472852130b00439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234fa2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f34377508000000f5730c14d3cd22b7661e2f5fcb3139dd5fef37f946314a441d01b40ce1200ef70d810525f23fd278b588cd67473c200bda83c338c407b479386aa83798e5970b5e639b43e0052c47447dac87d6fd2b6ec50bdd4d0f614e4299c665249bbd09d9a2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f34377508000000c78d6ec463f476461a695b4791d30e7626d16fdf72d7c252c2cad387495a97e8c2827ed4d5af853d6e05d31cb6fb7438c9481a7e9c6990d60a9bfaf6a6e1930988dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0eea2f45892db86b2ad133ce57d81b7e4375bb7035ce9883e6b68c358164f3437750800000052b4fc52d430286b3e2d650aa6e01b6ff4fae8b968893a62be789209eb97ee6e23780d3f5af7042d85bb48f1b202890b22724dfebce138826f66a5e00324320fd17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae6900"; - - #[test] - fn substrate_header_parse_fails() { - assert!(matches!(parse_substrate_header(&[]), Err(_))); - } - - #[test] - fn verify_substrate_finality_proof_succeeds() { - verify_substrate_finality_proof( - EXAMPLE_JUSTIFIED_BLOCK_NUMBER, - EXAMPLE_JUSTIFIED_BLOCK_HASH.parse().unwrap(), - EXAMPLE_AUTHORITIES_SET_ID, - &hex::decode(EXAMPLE_AUTHORITIES_SET).unwrap(), - &hex::decode(EXAMPLE_JUSTIFICATION).unwrap(), - ) - .unwrap(); - } - - #[test] - fn verify_substrate_finality_proof_fails_when_wrong_block_is_finalized() { - verify_substrate_finality_proof( - 4, - Default::default(), - EXAMPLE_AUTHORITIES_SET_ID, - &hex::decode(EXAMPLE_AUTHORITIES_SET).unwrap(), - &hex::decode(EXAMPLE_JUSTIFICATION).unwrap(), - ) - .unwrap_err(); - } - - #[test] - fn verify_substrate_finality_proof_fails_when_wrong_set_is_provided() { - verify_substrate_finality_proof( - EXAMPLE_JUSTIFIED_BLOCK_NUMBER, - EXAMPLE_JUSTIFIED_BLOCK_HASH.parse().unwrap(), - EXAMPLE_AUTHORITIES_SET_ID, - &hex::decode("deadbeef").unwrap(), - &hex::decode(EXAMPLE_JUSTIFICATION).unwrap(), - ) - .unwrap_err(); - } - - #[test] - fn verify_substrate_finality_proof_fails_when_wrong_set_id_is_provided() { - verify_substrate_finality_proof( - EXAMPLE_JUSTIFIED_BLOCK_NUMBER, - EXAMPLE_JUSTIFIED_BLOCK_HASH.parse().unwrap(), - 42, - &hex::decode(EXAMPLE_AUTHORITIES_SET).unwrap(), - &hex::decode(EXAMPLE_JUSTIFICATION).unwrap(), - ) - .unwrap_err(); - } - - #[test] - fn verify_substrate_finality_proof_fails_when_wrong_proof_is_provided() { - verify_substrate_finality_proof( - EXAMPLE_JUSTIFIED_BLOCK_NUMBER, - EXAMPLE_JUSTIFIED_BLOCK_HASH.parse().unwrap(), - 0, - &hex::decode(EXAMPLE_AUTHORITIES_SET).unwrap(), - &hex::decode("deadbeef").unwrap(), - ) - .unwrap_err(); - } -} diff --git a/bridges/modules/ethereum/Cargo.toml b/bridges/modules/ethereum/Cargo.toml deleted file mode 100644 index fdd93ed73311..000000000000 --- a/bridges/modules/ethereum/Cargo.toml +++ /dev/null @@ -1,49 +0,0 @@ -[package] -name = "pallet-bridge-eth-poa" -description = "A Substrate Runtime module that is able to verify PoA headers and their finality." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -libsecp256k1 = { version = "0.3.4", default-features = false, features = ["hmac"], optional = true } -log = { version = "0.4.14", default-features = false } -serde = { version = "1.0", optional = true } - -# Bridge dependencies - -bp-eth-poa = { path = "../../primitives/ethereum-poa", default-features = false } - -# Substrate Dependencies - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -libsecp256k1 = { version = "0.3.4", features = ["hmac"] } -hex-literal = "0.3" - -[features] -default = ["std"] -std = [ - "bp-eth-poa/std", - "codec/std", - "frame-benchmarking/std", - "frame-support/std", - "frame-system/std", - "log/std", - "serde", - "sp-io/std", - "sp-runtime/std", - "sp-std/std", -] -runtime-benchmarks = [ - "frame-benchmarking", - "libsecp256k1", -] diff --git a/bridges/modules/ethereum/src/benchmarking.rs b/bridges/modules/ethereum/src/benchmarking.rs deleted file mode 100644 index 960dbe9afec2..000000000000 --- a/bridges/modules/ethereum/src/benchmarking.rs +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use super::*; - -use crate::test_utils::{ - build_custom_header, build_genesis_header, insert_header, validator_utils::*, validators_change_receipt, - HeaderBuilder, -}; - -use bp_eth_poa::{compute_merkle_root, U256}; -use frame_benchmarking::benchmarks_instance; -use frame_system::RawOrigin; - -benchmarks_instance! { - // Benchmark `import_unsigned_header` extrinsic with the best possible conditions: - // * Parent header is finalized. - // * New header doesn't require receipts. - // * Nothing is finalized by new header. - // * Nothing is pruned by new header. - import_unsigned_header_best_case { - let n in 1..1000; - - let num_validators = 2; - let initial_header = initialize_bench::(num_validators); - - // prepare header to be inserted - let header = build_custom_header( - &validator(1), - &initial_header, - |mut header| { - header.gas_limit = header.gas_limit + U256::from(n); - header - }, - ); - }: import_unsigned_header(RawOrigin::None, header, None) - verify { - let storage = BridgeStorage::::new(); - assert_eq!(storage.best_block().0.number, 1); - assert_eq!(storage.finalized_block().number, 0); - } - - // Our goal with this bench is to try and see the effect that finalizing difference ranges of - // blocks has on our import time. As such we need to make sure that we keep the number of - // validators fixed while changing the number blocks finalized (the complexity parameter) by - // importing the last header. - // - // One important thing to keep in mind is that the runtime provides a finality cache in order to - // reduce the overhead of header finalization. However, this is only triggered every 16 blocks. - import_unsigned_finality { - // Our complexity parameter, n, will represent the number of blocks imported before - // finalization. - let n in 1..7; - - let mut storage = BridgeStorage::::new(); - let num_validators: u32 = 2; - let initial_header = initialize_bench::(num_validators as usize); - - // Since we only have two validators we need to make sure the number of blocks is even to - // make sure the right validator signs the final block - let num_blocks = 2 * n; - let mut headers = Vec::new(); - let mut parent = initial_header.clone(); - - // Import a bunch of headers without any verification, will ensure that they're not - // finalized prematurely - for i in 1..=num_blocks { - let header = HeaderBuilder::with_parent(&parent).sign_by(&validator(0)); - let id = header.compute_id(); - insert_header(&mut storage, header.clone()); - headers.push(header.clone()); - parent = header; - } - - let last_header = headers.last().unwrap().clone(); - let last_authority = validator(1); - - // Need to make sure that the header we're going to import hasn't been inserted - // into storage already - let header = HeaderBuilder::with_parent(&last_header).sign_by(&last_authority); - }: import_unsigned_header(RawOrigin::None, header, None) - verify { - let storage = BridgeStorage::::new(); - assert_eq!(storage.best_block().0.number, (num_blocks + 1) as u64); - assert_eq!(storage.finalized_block().number, num_blocks as u64); - } - - // Basically the exact same as `import_unsigned_finality` but with a different range for the - // complexity parameter. In this bench we use a larger range of blocks to see how performance - // changes when the finality cache kicks in (>16 blocks). - import_unsigned_finality_with_cache { - // Our complexity parameter, n, will represent the number of blocks imported before - // finalization. - let n in 7..100; - - let mut storage = BridgeStorage::::new(); - let num_validators: u32 = 2; - let initial_header = initialize_bench::(num_validators as usize); - - // Since we only have two validators we need to make sure the number of blocks is even to - // make sure the right validator signs the final block - let num_blocks = 2 * n; - let mut headers = Vec::new(); - let mut parent = initial_header.clone(); - - // Import a bunch of headers without any verification, will ensure that they're not - // finalized prematurely - for i in 1..=num_blocks { - let header = HeaderBuilder::with_parent(&parent).sign_by(&validator(0)); - let id = header.compute_id(); - insert_header(&mut storage, header.clone()); - headers.push(header.clone()); - parent = header; - } - - let last_header = headers.last().unwrap().clone(); - let last_authority = validator(1); - - // Need to make sure that the header we're going to import hasn't been inserted - // into storage already - let header = HeaderBuilder::with_parent(&last_header).sign_by(&last_authority); - }: import_unsigned_header(RawOrigin::None, header, None) - verify { - let storage = BridgeStorage::::new(); - assert_eq!(storage.best_block().0.number, (num_blocks + 1) as u64); - assert_eq!(storage.finalized_block().number, num_blocks as u64); - } - - // A block import may trigger a pruning event, which adds extra work to the import progress. - // In this bench we trigger a pruning event in order to see how much extra time is spent by the - // runtime dealing with it. In the Ethereum Pallet, we're limited pruning to eight blocks in a - // single import, as dictated by MAX_BLOCKS_TO_PRUNE_IN_SINGLE_IMPORT. - import_unsigned_pruning { - let n in 1..MAX_BLOCKS_TO_PRUNE_IN_SINGLE_IMPORT as u32; - - let mut storage = BridgeStorage::::new(); - - let num_validators = 3; - let initial_header = initialize_bench::(num_validators as usize); - let validators = validators(num_validators); - - // Want to prune eligible blocks between [0, n) - BlocksToPrune::::put(PruningRange { - oldest_unpruned_block: 0, - oldest_block_to_keep: n as u64, - }); - - let mut parent = initial_header; - for i in 1..=n { - let header = HeaderBuilder::with_parent(&parent).sign_by_set(&validators); - let id = header.compute_id(); - insert_header(&mut storage, header.clone()); - parent = header; - } - - let header = HeaderBuilder::with_parent(&parent).sign_by_set(&validators); - }: import_unsigned_header(RawOrigin::None, header, None) - verify { - let storage = BridgeStorage::::new(); - let max_pruned: u64 = (n - 1) as _; - assert_eq!(storage.best_block().0.number, (n + 1) as u64); - assert!(HeadersByNumber::::get(&0).is_none()); - assert!(HeadersByNumber::::get(&max_pruned).is_none()); - } - - // The goal of this bench is to import a block which contains a transaction receipt. The receipt - // will contain a validator set change. Verifying the receipt root is an expensive operation to - // do, which is why we're interested in benchmarking it. - import_unsigned_with_receipts { - let n in 1..100; - - let mut storage = BridgeStorage::::new(); - - let num_validators = 1; - let initial_header = initialize_bench::(num_validators as usize); - - let mut receipts = vec![]; - for i in 1..=n { - let receipt = validators_change_receipt(Default::default()); - receipts.push(receipt) - } - let encoded_receipts = receipts.iter().map(|r| r.rlp()); - - // We need this extra header since this is what signals a validator set transition. This - // will ensure that the next header is within the "Contract" window - let header1 = HeaderBuilder::with_parent(&initial_header).sign_by(&validator(0)); - insert_header(&mut storage, header1.clone()); - - let header = build_custom_header( - &validator(0), - &header1, - |mut header| { - // Logs Bloom signals a change in validator set - header.log_bloom = (&[0xff; 256]).into(); - header.receipts_root = compute_merkle_root(encoded_receipts); - header - }, - ); - }: import_unsigned_header(RawOrigin::None, header, Some(receipts)) - verify { - let storage = BridgeStorage::::new(); - assert_eq!(storage.best_block().0.number, 2); - } -} - -fn initialize_bench, I: Instance>(num_validators: usize) -> AuraHeader { - // Initialize storage with some initial header - let initial_header = build_genesis_header(&validator(0)); - let initial_difficulty = initial_header.difficulty; - let initial_validators = validators_addresses(num_validators as usize); - - initialize_storage::(&initial_header, initial_difficulty, &initial_validators); - - initial_header -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{run_test, TestRuntime}; - use frame_support::assert_ok; - - #[test] - fn insert_unsigned_header_best_case() { - run_test(1, |_| { - assert_ok!(test_benchmark_import_unsigned_header_best_case::()); - }); - } - - #[test] - fn insert_unsigned_header_finality() { - run_test(1, |_| { - assert_ok!(test_benchmark_import_unsigned_finality::()); - }); - } - - #[test] - fn insert_unsigned_header_finality_with_cache() { - run_test(1, |_| { - assert_ok!(test_benchmark_import_unsigned_finality_with_cache::()); - }); - } - - #[test] - fn insert_unsigned_header_pruning() { - run_test(1, |_| { - assert_ok!(test_benchmark_import_unsigned_pruning::()); - }); - } - - #[test] - fn insert_unsigned_header_receipts() { - run_test(1, |_| { - assert_ok!(test_benchmark_import_unsigned_with_receipts::()); - }); - } -} diff --git a/bridges/modules/ethereum/src/error.rs b/bridges/modules/ethereum/src/error.rs deleted file mode 100644 index ad798379da7d..000000000000 --- a/bridges/modules/ethereum/src/error.rs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use sp_runtime::RuntimeDebug; - -/// Header import error. -#[derive(Clone, Copy, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(PartialEq))] -pub enum Error { - /// The header is beyond last finalized and can not be imported. - AncientHeader = 0, - /// The header is already imported. - KnownHeader = 1, - /// Seal has an incorrect format. - InvalidSealArity = 2, - /// Block number isn't sensible. - RidiculousNumber = 3, - /// Block has too much gas used. - TooMuchGasUsed = 4, - /// Gas limit header field is invalid. - InvalidGasLimit = 5, - /// Extra data is of an invalid length. - ExtraDataOutOfBounds = 6, - /// Timestamp header overflowed. - TimestampOverflow = 7, - /// The parent header is missing from the blockchain. - MissingParentBlock = 8, - /// The header step is missing from the header. - MissingStep = 9, - /// The header signature is missing from the header. - MissingSignature = 10, - /// Empty steps are missing from the header. - MissingEmptySteps = 11, - /// The same author issued different votes at the same step. - DoubleVote = 12, - /// Validation proof insufficient. - InsufficientProof = 13, - /// Difficulty header field is invalid. - InvalidDifficulty = 14, - /// The received block is from an incorrect proposer. - NotValidator = 15, - /// Missing transaction receipts for the operation. - MissingTransactionsReceipts = 16, - /// Redundant transaction receipts are provided. - RedundantTransactionsReceipts = 17, - /// Provided transactions receipts are not matching the header. - TransactionsReceiptsMismatch = 18, - /// Can't accept unsigned header from the far future. - UnsignedTooFarInTheFuture = 19, - /// Trying to finalize sibling of finalized block. - TryingToFinalizeSibling = 20, - /// Header timestamp is ahead of on-chain timestamp - HeaderTimestampIsAhead = 21, -} - -impl Error { - pub fn msg(&self) -> &'static str { - match *self { - Error::AncientHeader => "Header is beyound last finalized and can not be imported", - Error::KnownHeader => "Header is already imported", - Error::InvalidSealArity => "Header has an incorrect seal", - Error::RidiculousNumber => "Header has too large number", - Error::TooMuchGasUsed => "Header has too much gas used", - Error::InvalidGasLimit => "Header has invalid gas limit", - Error::ExtraDataOutOfBounds => "Header has too large extra data", - Error::TimestampOverflow => "Header has too large timestamp", - Error::MissingParentBlock => "Header has unknown parent hash", - Error::MissingStep => "Header is missing step seal", - Error::MissingSignature => "Header is missing signature seal", - Error::MissingEmptySteps => "Header is missing empty steps seal", - Error::DoubleVote => "Header has invalid step in seal", - Error::InsufficientProof => "Header has insufficient proof", - Error::InvalidDifficulty => "Header has invalid difficulty", - Error::NotValidator => "Header is sealed by unexpected validator", - Error::MissingTransactionsReceipts => "The import operation requires transactions receipts", - Error::RedundantTransactionsReceipts => "Redundant transactions receipts are provided", - Error::TransactionsReceiptsMismatch => "Invalid transactions receipts provided", - Error::UnsignedTooFarInTheFuture => "The unsigned header is too far in future", - Error::TryingToFinalizeSibling => "Trying to finalize sibling of finalized block", - Error::HeaderTimestampIsAhead => "Header timestamp is ahead of on-chain timestamp", - } - } - - /// Return unique error code. - pub fn code(&self) -> u8 { - *self as u8 - } -} diff --git a/bridges/modules/ethereum/src/finality.rs b/bridges/modules/ethereum/src/finality.rs deleted file mode 100644 index 58987c6b29bc..000000000000 --- a/bridges/modules/ethereum/src/finality.rs +++ /dev/null @@ -1,556 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::error::Error; -use crate::Storage; -use bp_eth_poa::{public_to_address, Address, AuraHeader, HeaderId, SealedEmptyStep, H256}; -use codec::{Decode, Encode}; -use sp_io::crypto::secp256k1_ecdsa_recover; -use sp_runtime::RuntimeDebug; -use sp_std::collections::{ - btree_map::{BTreeMap, Entry}, - btree_set::BTreeSet, - vec_deque::VecDeque, -}; -use sp_std::prelude::*; - -/// Cached finality votes for given block. -#[derive(RuntimeDebug)] -#[cfg_attr(test, derive(PartialEq))] -pub struct CachedFinalityVotes { - /// True if we have stopped at best finalized block' sibling. This means - /// that we are trying to finalize block from fork that has forked before - /// best finalized. - pub stopped_at_finalized_sibling: bool, - /// Header ancestors that were read while we have been searching for - /// cached votes entry. Newest header has index 0. - pub unaccounted_ancestry: VecDeque<(HeaderId, Option, AuraHeader)>, - /// Cached finality votes, if they have been found. The associated - /// header is not included into `unaccounted_ancestry`. - pub votes: Option>, -} - -/// Finality effects. -#[derive(RuntimeDebug)] -#[cfg_attr(test, derive(PartialEq))] -pub struct FinalityEffects { - /// Finalized headers. - pub finalized_headers: Vec<(HeaderId, Option)>, - /// Finality votes used in computation. - pub votes: FinalityVotes, -} - -/// Finality votes for given block. -#[derive(RuntimeDebug, Decode, Encode)] -#[cfg_attr(test, derive(Clone, PartialEq))] -pub struct FinalityVotes { - /// Number of votes per each validator. - pub votes: BTreeMap, - /// Ancestry blocks with oldest ancestors at the beginning and newest at the - /// end of the queue. - pub ancestry: VecDeque>, -} - -/// Information about block ancestor that is used in computations. -#[derive(RuntimeDebug, Decode, Encode)] -#[cfg_attr(test, derive(Clone, Default, PartialEq))] -pub struct FinalityAncestor { - /// Bock id. - pub id: HeaderId, - /// Block submitter. - pub submitter: Option, - /// Validators that have signed this block and empty steps on top - /// of this block. - pub signers: BTreeSet
, -} - -/// Tries to finalize blocks when given block is imported. -/// -/// Returns numbers and hashes of finalized blocks in ascending order. -pub fn finalize_blocks( - storage: &S, - best_finalized: HeaderId, - header_validators: (HeaderId, &[Address]), - id: HeaderId, - submitter: Option<&S::Submitter>, - header: &AuraHeader, - two_thirds_majority_transition: u64, -) -> Result, Error> { - // compute count of voters for every unfinalized block in ancestry - let validators = header_validators.1.iter().collect(); - let votes = prepare_votes( - header - .parent_id() - .map(|parent_id| { - storage.cached_finality_votes(&parent_id, &best_finalized, |hash| { - *hash == header_validators.0.hash || *hash == best_finalized.hash - }) - }) - .unwrap_or_default(), - best_finalized, - &validators, - id, - header, - submitter.cloned(), - )?; - - // now let's iterate in reverse order && find just finalized blocks - let mut finalized_headers = Vec::new(); - let mut current_votes = votes.votes.clone(); - for ancestor in &votes.ancestry { - if !is_finalized( - &validators, - ¤t_votes, - ancestor.id.number >= two_thirds_majority_transition, - ) { - break; - } - - remove_signers_votes(&ancestor.signers, &mut current_votes); - finalized_headers.push((ancestor.id, ancestor.submitter.clone())); - } - - Ok(FinalityEffects { - finalized_headers, - votes, - }) -} - -/// Returns true if there are enough votes to treat this header as finalized. -fn is_finalized( - validators: &BTreeSet<&Address>, - votes: &BTreeMap, - requires_two_thirds_majority: bool, -) -> bool { - (!requires_two_thirds_majority && votes.len() * 2 > validators.len()) - || (requires_two_thirds_majority && votes.len() * 3 > validators.len() * 2) -} - -/// Prepare 'votes' of header and its ancestors' signers. -pub(crate) fn prepare_votes( - mut cached_votes: CachedFinalityVotes, - best_finalized: HeaderId, - validators: &BTreeSet<&Address>, - id: HeaderId, - header: &AuraHeader, - submitter: Option, -) -> Result, Error> { - // if we have reached finalized block sibling, then we're trying - // to switch finalized blocks - if cached_votes.stopped_at_finalized_sibling { - return Err(Error::TryingToFinalizeSibling); - } - - // this fn can only work with single validators set - if !validators.contains(&header.author) { - return Err(Error::NotValidator); - } - - // now we have votes that were valid when some block B has been inserted - // things may have changed a bit, but we do not need to read anything else - // from the db, because we have ancestry - // so the only thing we need to do is: - // 1) remove votes from blocks that have been finalized after B has been inserted; - // 2) add votes from B descendants - let mut votes = cached_votes.votes.unwrap_or_default(); - - // remove votes from finalized blocks - while let Some(old_ancestor) = votes.ancestry.pop_front() { - if old_ancestor.id.number > best_finalized.number { - votes.ancestry.push_front(old_ancestor); - break; - } - - remove_signers_votes(&old_ancestor.signers, &mut votes.votes); - } - - // add votes from new blocks - let mut parent_empty_step_signers = empty_steps_signers(header); - let mut unaccounted_ancestry = VecDeque::new(); - while let Some((ancestor_id, ancestor_submitter, ancestor)) = cached_votes.unaccounted_ancestry.pop_front() { - let mut signers = empty_steps_signers(&ancestor); - sp_std::mem::swap(&mut signers, &mut parent_empty_step_signers); - signers.insert(ancestor.author); - - add_signers_votes(validators, &signers, &mut votes.votes)?; - - unaccounted_ancestry.push_front(FinalityAncestor { - id: ancestor_id, - submitter: ancestor_submitter, - signers, - }); - } - votes.ancestry.extend(unaccounted_ancestry); - - // add votes from block itself - let mut header_signers = BTreeSet::new(); - header_signers.insert(header.author); - *votes.votes.entry(header.author).or_insert(0) += 1; - votes.ancestry.push_back(FinalityAncestor { - id, - submitter, - signers: header_signers, - }); - - Ok(votes) -} - -/// Increase count of 'votes' for every passed signer. -/// Fails if at least one of signers is not in the `validators` set. -fn add_signers_votes( - validators: &BTreeSet<&Address>, - signers_to_add: &BTreeSet
, - votes: &mut BTreeMap, -) -> Result<(), Error> { - for signer in signers_to_add { - if !validators.contains(signer) { - return Err(Error::NotValidator); - } - - *votes.entry(*signer).or_insert(0) += 1; - } - - Ok(()) -} - -/// Decrease 'votes' count for every passed signer. -fn remove_signers_votes(signers_to_remove: &BTreeSet
, votes: &mut BTreeMap) { - for signer in signers_to_remove { - match votes.entry(*signer) { - Entry::Occupied(mut entry) => { - if *entry.get() <= 1 { - entry.remove(); - } else { - *entry.get_mut() -= 1; - } - } - Entry::Vacant(_) => unreachable!("we only remove signers that have been added; qed"), - } - } -} - -/// Returns unique set of empty steps signers. -fn empty_steps_signers(header: &AuraHeader) -> BTreeSet
{ - header - .empty_steps() - .into_iter() - .flatten() - .filter_map(|step| empty_step_signer(&step, &header.parent_hash)) - .collect::>() -} - -/// Returns author of empty step signature. -fn empty_step_signer(empty_step: &SealedEmptyStep, parent_hash: &H256) -> Option
{ - let message = empty_step.message(parent_hash); - secp256k1_ecdsa_recover(empty_step.signature.as_fixed_bytes(), message.as_fixed_bytes()) - .ok() - .map(|public| public_to_address(&public)) -} - -impl Default for CachedFinalityVotes { - fn default() -> Self { - CachedFinalityVotes { - stopped_at_finalized_sibling: false, - unaccounted_ancestry: VecDeque::new(), - votes: None, - } - } -} - -impl Default for FinalityVotes { - fn default() -> Self { - FinalityVotes { - votes: BTreeMap::new(), - ancestry: VecDeque::new(), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{insert_header, run_test, validator, validators_addresses, HeaderBuilder, TestRuntime}; - use crate::{BridgeStorage, FinalityCache, HeaderToImport}; - use frame_support::StorageMap; - - const TOTAL_VALIDATORS: usize = 5; - - #[test] - fn verifies_header_author() { - run_test(TOTAL_VALIDATORS, |_| { - assert_eq!( - finalize_blocks( - &BridgeStorage::::new(), - Default::default(), - (Default::default(), &[]), - Default::default(), - None, - &AuraHeader::default(), - 0, - ), - Err(Error::NotValidator), - ); - }); - } - - #[test] - fn finalize_blocks_works() { - run_test(TOTAL_VALIDATORS, |ctx| { - // let's say we have 5 validators (we need 'votes' from 3 validators to achieve - // finality) - let mut storage = BridgeStorage::::new(); - - // when header#1 is inserted, nothing is finalized (1 vote) - let header1 = HeaderBuilder::with_parent(&ctx.genesis).sign_by(&validator(0)); - let id1 = header1.compute_id(); - let mut header_to_import = HeaderToImport { - context: storage.import_context(None, &header1.parent_hash).unwrap(), - is_best: true, - id: id1, - header: header1, - total_difficulty: 0.into(), - enacted_change: None, - scheduled_change: None, - finality_votes: Default::default(), - }; - assert_eq!( - finalize_blocks( - &storage, - ctx.genesis.compute_id(), - (Default::default(), &ctx.addresses), - id1, - None, - &header_to_import.header, - u64::max_value(), - ) - .map(|eff| eff.finalized_headers), - Ok(Vec::new()), - ); - storage.insert_header(header_to_import.clone()); - - // when header#2 is inserted, nothing is finalized (2 votes) - header_to_import.header = HeaderBuilder::with_parent_hash(id1.hash).sign_by(&validator(1)); - header_to_import.id = header_to_import.header.compute_id(); - let id2 = header_to_import.header.compute_id(); - assert_eq!( - finalize_blocks( - &storage, - ctx.genesis.compute_id(), - (Default::default(), &ctx.addresses), - id2, - None, - &header_to_import.header, - u64::max_value(), - ) - .map(|eff| eff.finalized_headers), - Ok(Vec::new()), - ); - storage.insert_header(header_to_import.clone()); - - // when header#3 is inserted, header#1 is finalized (3 votes) - header_to_import.header = HeaderBuilder::with_parent_hash(id2.hash).sign_by(&validator(2)); - header_to_import.id = header_to_import.header.compute_id(); - let id3 = header_to_import.header.compute_id(); - assert_eq!( - finalize_blocks( - &storage, - ctx.genesis.compute_id(), - (Default::default(), &ctx.addresses), - id3, - None, - &header_to_import.header, - u64::max_value(), - ) - .map(|eff| eff.finalized_headers), - Ok(vec![(id1, None)]), - ); - storage.insert_header(header_to_import); - }); - } - - #[test] - fn cached_votes_are_updated_with_ancestry() { - // we're inserting header#5 - // cached votes are from header#3 - // header#4 has finalized header#1 and header#2 - // => when inserting header#5, we need to: - // 1) remove votes from header#1 and header#2 - // 2) add votes from header#4 and header#5 - let validators = validators_addresses(5); - let headers = (1..6) - .map(|number| HeaderBuilder::with_number(number).sign_by(&validator(number as usize - 1))) - .collect::>(); - let ancestry = headers - .iter() - .map(|header| FinalityAncestor { - id: header.compute_id(), - signers: vec![header.author].into_iter().collect(), - ..Default::default() - }) - .collect::>(); - let header5 = headers[4].clone(); - assert_eq!( - prepare_votes::<()>( - CachedFinalityVotes { - stopped_at_finalized_sibling: false, - unaccounted_ancestry: vec![(headers[3].compute_id(), None, headers[3].clone()),] - .into_iter() - .collect(), - votes: Some(FinalityVotes { - votes: vec![(validators[0], 1), (validators[1], 1), (validators[2], 1),] - .into_iter() - .collect(), - ancestry: ancestry[..3].iter().cloned().collect(), - }), - }, - headers[1].compute_id(), - &validators.iter().collect(), - header5.compute_id(), - &header5, - None, - ) - .unwrap(), - FinalityVotes { - votes: vec![(validators[2], 1), (validators[3], 1), (validators[4], 1),] - .into_iter() - .collect(), - ancestry: ancestry[2..].iter().cloned().collect(), - }, - ); - } - - #[test] - fn prepare_votes_respects_finality_cache() { - run_test(TOTAL_VALIDATORS, |ctx| { - // we need signatures of 3 validators to finalize block - let mut storage = BridgeStorage::::new(); - - // headers 1..3 are signed by validator#0 - // headers 4..6 are signed by validator#1 - // headers 7..9 are signed by validator#2 - let mut hashes = Vec::new(); - let mut headers = Vec::new(); - let mut ancestry = Vec::new(); - let mut parent_hash = ctx.genesis.compute_hash(); - for i in 1..10 { - let header = HeaderBuilder::with_parent_hash(parent_hash).sign_by(&validator((i - 1) / 3)); - let id = header.compute_id(); - insert_header(&mut storage, header.clone()); - hashes.push(id.hash); - ancestry.push(FinalityAncestor { - id: header.compute_id(), - submitter: None, - signers: vec![header.author].into_iter().collect(), - }); - headers.push(header); - parent_hash = id.hash; - } - - // when we're inserting header#7 and last finalized header is 0: - // check that votes at #7 are computed correctly without cache - let expected_votes_at_7 = FinalityVotes { - votes: vec![(ctx.addresses[0], 3), (ctx.addresses[1], 3), (ctx.addresses[2], 1)] - .into_iter() - .collect(), - ancestry: ancestry[..7].iter().cloned().collect(), - }; - let id7 = headers[6].compute_id(); - assert_eq!( - prepare_votes( - storage.cached_finality_votes( - &headers.get(5).unwrap().compute_id(), - &ctx.genesis.compute_id(), - |_| false, - ), - Default::default(), - &ctx.addresses.iter().collect(), - id7, - headers.get(6).unwrap(), - None, - ) - .unwrap(), - expected_votes_at_7, - ); - - // cached votes at #5 - let expected_votes_at_5 = FinalityVotes { - votes: vec![(ctx.addresses[0], 3), (ctx.addresses[1], 2)].into_iter().collect(), - ancestry: ancestry[..5].iter().cloned().collect(), - }; - FinalityCache::::insert(hashes[4], expected_votes_at_5); - - // when we're inserting header#7 and last finalized header is 0: - // check that votes at #7 are computed correctly with cache - assert_eq!( - prepare_votes( - storage.cached_finality_votes( - &headers.get(5).unwrap().compute_id(), - &ctx.genesis.compute_id(), - |_| false, - ), - Default::default(), - &ctx.addresses.iter().collect(), - id7, - headers.get(6).unwrap(), - None, - ) - .unwrap(), - expected_votes_at_7, - ); - - // when we're inserting header#7 and last finalized header is 3: - // check that votes at #7 are computed correctly with cache - let expected_votes_at_7 = FinalityVotes { - votes: vec![(ctx.addresses[1], 3), (ctx.addresses[2], 1)].into_iter().collect(), - ancestry: ancestry[3..7].iter().cloned().collect(), - }; - assert_eq!( - prepare_votes( - storage.cached_finality_votes( - &headers.get(5).unwrap().compute_id(), - &headers.get(2).unwrap().compute_id(), - |hash| *hash == hashes[2], - ), - headers[2].compute_id(), - &ctx.addresses.iter().collect(), - id7, - headers.get(6).unwrap(), - None, - ) - .unwrap(), - expected_votes_at_7, - ); - }); - } - - #[test] - fn prepare_votes_fails_when_finalized_sibling_is_in_ancestry() { - assert_eq!( - prepare_votes::<()>( - CachedFinalityVotes { - stopped_at_finalized_sibling: true, - ..Default::default() - }, - Default::default(), - &validators_addresses(3).iter().collect(), - Default::default(), - &Default::default(), - None, - ), - Err(Error::TryingToFinalizeSibling), - ); - } -} diff --git a/bridges/modules/ethereum/src/import.rs b/bridges/modules/ethereum/src/import.rs deleted file mode 100644 index 8cd4c8a17c77..000000000000 --- a/bridges/modules/ethereum/src/import.rs +++ /dev/null @@ -1,609 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::error::Error; -use crate::finality::finalize_blocks; -use crate::validators::{Validators, ValidatorsConfiguration}; -use crate::verification::{is_importable_header, verify_aura_header}; -use crate::{AuraConfiguration, ChainTime, ChangeToEnact, PruningStrategy, Storage}; -use bp_eth_poa::{AuraHeader, HeaderId, Receipt}; -use sp_std::{collections::btree_map::BTreeMap, prelude::*}; - -/// Imports bunch of headers and updates blocks finality. -/// -/// Transactions receipts must be provided if `header_import_requires_receipts()` -/// has returned true. -/// If successful, returns tuple where first element is the number of useful headers -/// we have imported and the second element is the number of useless headers (duplicate) -/// we have NOT imported. -/// Returns error if fatal error has occured during import. Some valid headers may be -/// imported in this case. -/// TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/415) -#[allow(clippy::too_many_arguments)] -pub fn import_headers( - storage: &mut S, - pruning_strategy: &mut PS, - aura_config: &AuraConfiguration, - validators_config: &ValidatorsConfiguration, - submitter: Option, - headers: Vec<(AuraHeader, Option>)>, - chain_time: &CT, - finalized_headers: &mut BTreeMap, -) -> Result<(u64, u64), Error> { - let mut useful = 0; - let mut useless = 0; - for (header, receipts) in headers { - let import_result = import_header( - storage, - pruning_strategy, - aura_config, - validators_config, - submitter.clone(), - header, - chain_time, - receipts, - ); - - match import_result { - Ok((_, finalized)) => { - for (_, submitter) in finalized { - if let Some(submitter) = submitter { - *finalized_headers.entry(submitter).or_default() += 1; - } - } - useful += 1; - } - Err(Error::AncientHeader) | Err(Error::KnownHeader) => useless += 1, - Err(error) => return Err(error), - } - } - - Ok((useful, useless)) -} - -/// A vector of finalized headers and their submitters. -pub type FinalizedHeaders = Vec<(HeaderId, Option<::Submitter>)>; - -/// Imports given header and updates blocks finality (if required). -/// -/// Transactions receipts must be provided if `header_import_requires_receipts()` -/// has returned true. -/// -/// Returns imported block id and list of all finalized headers. -/// TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/415) -#[allow(clippy::too_many_arguments)] -pub fn import_header( - storage: &mut S, - pruning_strategy: &mut PS, - aura_config: &AuraConfiguration, - validators_config: &ValidatorsConfiguration, - submitter: Option, - header: AuraHeader, - chain_time: &CT, - receipts: Option>, -) -> Result<(HeaderId, FinalizedHeaders), Error> { - // first check that we are able to import this header at all - let (header_id, finalized_id) = is_importable_header(storage, &header)?; - - // verify header - let import_context = verify_aura_header(storage, aura_config, submitter, &header, chain_time)?; - - // check if block schedules new validators - let validators = Validators::new(validators_config); - let (scheduled_change, enacted_change) = validators.extract_validators_change(&header, receipts)?; - - // check if block finalizes some other blocks and corresponding scheduled validators - let validators_set = import_context.validators_set(); - let finalized_blocks = finalize_blocks( - storage, - finalized_id, - (validators_set.enact_block, &validators_set.validators), - header_id, - import_context.submitter(), - &header, - aura_config.two_thirds_majority_transition, - )?; - let enacted_change = enacted_change - .map(|validators| ChangeToEnact { - signal_block: None, - validators, - }) - .or_else(|| validators.finalize_validators_change(storage, &finalized_blocks.finalized_headers)); - - // NOTE: we can't return Err() from anywhere below this line - // (because otherwise we'll have inconsistent storage if transaction will fail) - - // and finally insert the block - let (best_id, best_total_difficulty) = storage.best_block(); - let total_difficulty = import_context.total_difficulty() + header.difficulty; - let is_best = total_difficulty > best_total_difficulty; - storage.insert_header(import_context.into_import_header( - is_best, - header_id, - header, - total_difficulty, - enacted_change, - scheduled_change, - finalized_blocks.votes, - )); - - // compute upper border of updated pruning range - let new_best_block_id = if is_best { header_id } else { best_id }; - let new_best_finalized_block_id = finalized_blocks.finalized_headers.last().map(|(id, _)| *id); - let pruning_upper_bound = pruning_strategy.pruning_upper_bound( - new_best_block_id.number, - new_best_finalized_block_id - .map(|id| id.number) - .unwrap_or(finalized_id.number), - ); - - // now mark finalized headers && prune old headers - storage.finalize_and_prune_headers(new_best_finalized_block_id, pruning_upper_bound); - - Ok((header_id, finalized_blocks.finalized_headers)) -} - -/// Returns true if transactions receipts are required to import given header. -pub fn header_import_requires_receipts( - storage: &S, - validators_config: &ValidatorsConfiguration, - header: &AuraHeader, -) -> bool { - is_importable_header(storage, header) - .map(|_| Validators::new(validators_config)) - .map(|validators| validators.maybe_signals_validators_change(header)) - .unwrap_or(false) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{ - run_test, secret_to_address, test_aura_config, test_validators_config, validator, validators_addresses, - validators_change_receipt, HeaderBuilder, KeepSomeHeadersBehindBest, TestRuntime, GAS_LIMIT, - }; - use crate::validators::ValidatorsSource; - use crate::DefaultInstance; - use crate::{BlocksToPrune, BridgeStorage, Headers, PruningRange}; - use frame_support::{StorageMap, StorageValue}; - use secp256k1::SecretKey; - - const TOTAL_VALIDATORS: usize = 3; - - #[test] - fn rejects_finalized_block_competitors() { - run_test(TOTAL_VALIDATORS, |_| { - let mut storage = BridgeStorage::::new(); - storage.finalize_and_prune_headers( - Some(HeaderId { - number: 100, - ..Default::default() - }), - 0, - ); - assert_eq!( - import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &test_validators_config(), - None, - Default::default(), - &(), - None, - ), - Err(Error::AncientHeader), - ); - }); - } - - #[test] - fn rejects_known_header() { - run_test(TOTAL_VALIDATORS, |ctx| { - let mut storage = BridgeStorage::::new(); - let header = HeaderBuilder::with_parent(&ctx.genesis).sign_by(&validator(1)); - assert_eq!( - import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &test_validators_config(), - None, - header.clone(), - &(), - None, - ) - .map(|_| ()), - Ok(()), - ); - assert_eq!( - import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &test_validators_config(), - None, - header, - &(), - None, - ) - .map(|_| ()), - Err(Error::KnownHeader), - ); - }); - } - - #[test] - fn import_header_works() { - run_test(TOTAL_VALIDATORS, |ctx| { - let validators_config = ValidatorsConfiguration::Multi(vec![ - (0, ValidatorsSource::List(ctx.addresses.clone())), - (1, ValidatorsSource::List(validators_addresses(2))), - ]); - let mut storage = BridgeStorage::::new(); - let header = HeaderBuilder::with_parent(&ctx.genesis).sign_by(&validator(1)); - let hash = header.compute_hash(); - assert_eq!( - import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &validators_config, - None, - header, - &(), - None - ) - .map(|_| ()), - Ok(()), - ); - - // check that new validators will be used for next header - let imported_header = Headers::::get(&hash).unwrap(); - assert_eq!( - imported_header.next_validators_set_id, - 1, // new set is enacted from config - ); - }); - } - - #[test] - fn headers_are_pruned_during_import() { - run_test(TOTAL_VALIDATORS, |ctx| { - let validators_config = - ValidatorsConfiguration::Single(ValidatorsSource::Contract([3; 20].into(), ctx.addresses.clone())); - let validators = vec![validator(0), validator(1), validator(2)]; - let mut storage = BridgeStorage::::new(); - - // header [0..11] are finalizing blocks [0; 9] - // => since we want to keep 10 finalized blocks, we aren't pruning anything - let mut latest_block_id = Default::default(); - for i in 1..11 { - let header = HeaderBuilder::with_parent_number(i - 1).sign_by_set(&validators); - let parent_id = header.parent_id().unwrap(); - - let (rolling_last_block_id, finalized_blocks) = import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &validators_config, - Some(100), - header, - &(), - None, - ) - .unwrap(); - match i { - 2..=10 => assert_eq!(finalized_blocks, vec![(parent_id, Some(100))], "At {}", i,), - _ => assert_eq!(finalized_blocks, vec![], "At {}", i), - } - latest_block_id = rolling_last_block_id; - } - assert!(storage.header(&ctx.genesis.compute_hash()).is_some()); - - // header 11 finalizes headers [10] AND schedules change - // => we prune header#0 - let header11 = HeaderBuilder::with_parent_number(10) - .log_bloom((&[0xff; 256]).into()) - .receipts_root( - "ead6c772ba0083bbff497ba0f4efe47c199a2655401096c21ab7450b6c466d97" - .parse() - .unwrap(), - ) - .sign_by_set(&validators); - let parent_id = header11.parent_id().unwrap(); - let (rolling_last_block_id, finalized_blocks) = import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &validators_config, - Some(101), - header11.clone(), - &(), - Some(vec![validators_change_receipt(latest_block_id.hash)]), - ) - .unwrap(); - assert_eq!(finalized_blocks, vec![(parent_id, Some(100))],); - assert!(storage.header(&ctx.genesis.compute_hash()).is_none()); - latest_block_id = rolling_last_block_id; - - // and now let's say validators 1 && 2 went offline - // => in the range 12-25 no blocks are finalized, but we still continue to prune old headers - // until header#11 is met. we can't prune #11, because it schedules change - let mut step = 56u64; - let mut expected_blocks = vec![(header11.compute_id(), Some(101))]; - for i in 12..25 { - let header = HeaderBuilder::with_parent_hash(latest_block_id.hash) - .difficulty(i.into()) - .step(step) - .sign_by_set(&validators); - expected_blocks.push((header.compute_id(), Some(102))); - let (rolling_last_block_id, finalized_blocks) = import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &validators_config, - Some(102), - header, - &(), - None, - ) - .unwrap(); - assert_eq!(finalized_blocks, vec![],); - latest_block_id = rolling_last_block_id; - step += 3; - } - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 11, - oldest_block_to_keep: 14, - }, - ); - - // now let's insert block signed by validator 1 - // => blocks 11..24 are finalized and blocks 11..14 are pruned - step -= 2; - let header = HeaderBuilder::with_parent_hash(latest_block_id.hash) - .difficulty(25.into()) - .step(step) - .sign_by_set(&validators); - let (_, finalized_blocks) = import_header( - &mut storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &validators_config, - Some(103), - header, - &(), - None, - ) - .unwrap(); - assert_eq!(finalized_blocks, expected_blocks); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 15, - oldest_block_to_keep: 15, - }, - ); - }); - } - - fn import_custom_block( - storage: &mut S, - validators: &[SecretKey], - header: AuraHeader, - ) -> Result { - let id = header.compute_id(); - import_header( - storage, - &mut KeepSomeHeadersBehindBest::default(), - &test_aura_config(), - &ValidatorsConfiguration::Single(ValidatorsSource::Contract( - [0; 20].into(), - validators.iter().map(secret_to_address).collect(), - )), - None, - header, - &(), - None, - ) - .map(|_| id) - } - - #[test] - fn import_of_non_best_block_may_finalize_blocks() { - run_test(TOTAL_VALIDATORS, |ctx| { - let mut storage = BridgeStorage::::new(); - - // insert headers (H1, validator1), (H2, validator1), (H3, validator1) - // making H3 the best header, without finalizing anything (we need 2 signatures) - let mut expected_best_block = Default::default(); - for i in 1..4 { - let step = 1 + i * TOTAL_VALIDATORS as u64; - expected_best_block = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(i - 1) - .step(step) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - } - let (best_block, best_difficulty) = storage.best_block(); - assert_eq!(best_block, expected_best_block); - assert_eq!(storage.finalized_block(), ctx.genesis.compute_id()); - - // insert headers (H1', validator1), (H2', validator2), finalizing H2, even though H3 - // has better difficulty than H2' (because there are more steps involved) - let mut expected_finalized_block = Default::default(); - let mut parent_hash = ctx.genesis.compute_hash(); - for i in 1..3 { - let step = i; - let id = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_hash(parent_hash) - .step(step) - .gas_limit((GAS_LIMIT + 1).into()) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - parent_hash = id.hash; - if i == 1 { - expected_finalized_block = id; - } - } - let (new_best_block, new_best_difficulty) = storage.best_block(); - assert_eq!(new_best_block, expected_best_block); - assert_eq!(new_best_difficulty, best_difficulty); - assert_eq!(storage.finalized_block(), expected_finalized_block); - }); - } - - #[test] - fn append_to_unfinalized_fork_fails() { - const VALIDATORS: u64 = 5; - run_test(VALIDATORS as usize, |ctx| { - let mut storage = BridgeStorage::::new(); - - // header1, authored by validator[2] is best common block between two competing forks - let header1 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(0) - .step(2) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header1); - assert_eq!(storage.finalized_block().number, 0); - - // validator[3] has authored header2 (nothing is finalized yet) - let header2 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(1) - .step(3) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header2); - assert_eq!(storage.finalized_block().number, 0); - - // validator[4] has authored header3 (header1 is finalized) - let header3 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(2) - .step(4) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header3); - assert_eq!(storage.finalized_block(), header1); - - // validator[4] has authored 4 blocks: header2'...header5' (header1 is still finalized) - let header2_1 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(1) - .gas_limit((GAS_LIMIT + 1).into()) - .step(4) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - let header3_1 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_hash(header2_1.hash) - .step(4 + VALIDATORS) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - let header4_1 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_hash(header3_1.hash) - .step(4 + VALIDATORS * 2) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - let header5_1 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_hash(header4_1.hash) - .step(4 + VALIDATORS * 3) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header5_1); - assert_eq!(storage.finalized_block(), header1); - - // when we import header4 { parent = header3 }, authored by validator[0], header2 is finalized - let header4 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(3) - .step(5) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header5_1); - assert_eq!(storage.finalized_block(), header2); - - // when we import header5 { parent = header4 }, authored by validator[1], header3 is finalized - let header5 = import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_hash(header4.hash) - .step(6) - .sign_by_set(&ctx.validators), - ) - .unwrap(); - assert_eq!(storage.best_block().0, header5); - assert_eq!(storage.finalized_block(), header3); - - // import of header2'' { parent = header1 } fails, because it has number < best_finalized - assert_eq!( - import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(1) - .gas_limit((GAS_LIMIT + 1).into()) - .step(3) - .sign_by_set(&ctx.validators) - ), - Err(Error::AncientHeader), - ); - - // import of header6' should also fail because we're trying to append to fork thas - // has forked before finalized block - assert_eq!( - import_custom_block( - &mut storage, - &ctx.validators, - HeaderBuilder::with_parent_number(5) - .gas_limit((GAS_LIMIT + 1).into()) - .step(5 + VALIDATORS * 4) - .sign_by_set(&ctx.validators), - ), - Err(Error::TryingToFinalizeSibling), - ); - }); - } -} diff --git a/bridges/modules/ethereum/src/lib.rs b/bridges/modules/ethereum/src/lib.rs deleted file mode 100644 index facf377d51b8..000000000000 --- a/bridges/modules/ethereum/src/lib.rs +++ /dev/null @@ -1,1533 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// Runtime-generated enums -#![allow(clippy::large_enum_variant)] - -use crate::finality::{CachedFinalityVotes, FinalityVotes}; -use bp_eth_poa::{Address, AuraHeader, HeaderId, RawTransaction, RawTransactionReceipt, Receipt, H256, U256}; -use codec::{Decode, Encode}; -use frame_support::{decl_module, decl_storage, traits::Get}; -use sp_runtime::{ - transaction_validity::{ - InvalidTransaction, TransactionLongevity, TransactionPriority, TransactionSource, TransactionValidity, - UnknownTransaction, ValidTransaction, - }, - RuntimeDebug, -}; -use sp_std::{cmp::Ord, collections::btree_map::BTreeMap, prelude::*}; - -pub use validators::{ValidatorsConfiguration, ValidatorsSource}; - -mod error; -mod finality; -mod import; -mod validators; -mod verification; - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking; - -#[cfg(test)] -mod mock; - -#[cfg(any(feature = "runtime-benchmarks", test))] -pub mod test_utils; - -/// Maximal number of blocks we're pruning in single import call. -const MAX_BLOCKS_TO_PRUNE_IN_SINGLE_IMPORT: u64 = 8; - -/// Authority round engine configuration parameters. -#[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug)] -pub struct AuraConfiguration { - /// Empty step messages transition block. - pub empty_steps_transition: u64, - /// Transition block to strict empty steps validation. - pub strict_empty_steps_transition: u64, - /// Monotonic step validation transition block. - pub validate_step_transition: u64, - /// Chain score validation transition block. - pub validate_score_transition: u64, - /// First block for which a 2/3 quorum (instead of 1/2) is required. - pub two_thirds_majority_transition: u64, - /// Minimum gas limit. - pub min_gas_limit: U256, - /// Maximum gas limit. - pub max_gas_limit: U256, - /// Maximum size of extra data. - pub maximum_extra_data_size: u64, -} - -/// Transaction pool configuration. -/// -/// This is used to limit number of unsigned headers transactions in -/// the pool. We never use it to verify signed transactions. -pub struct PoolConfiguration { - /// Maximal difference between number of header from unsigned transaction - /// and current best block. This must be selected with caution - the more - /// is the difference, the more (potentially invalid) transactions could be - /// accepted to the pool and mined later (filling blocks with spam). - pub max_future_number_difference: u64, -} - -/// Block header as it is stored in the runtime storage. -#[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug)] -pub struct StoredHeader { - /// Submitter of this header. May be `None` if header has been submitted - /// using unsigned transaction. - pub submitter: Option, - /// The block header itself. - pub header: AuraHeader, - /// Total difficulty of the chain. - pub total_difficulty: U256, - /// The ID of set of validators that is expected to produce direct descendants of - /// this block. If header enacts new set, this would be the new set. Otherwise - /// this is the set that has produced the block itself. - /// The hash is the hash of block where validators set has been enacted. - pub next_validators_set_id: u64, - /// Hash of the last block which has **SCHEDULED** validators set change. - /// Note that signal doesn't mean that the set has been (or ever will be) enacted. - /// Note that the header may already be pruned. - pub last_signal_block: Option, -} - -/// Validators set as it is stored in the runtime storage. -#[derive(Encode, Decode, PartialEq, RuntimeDebug)] -#[cfg_attr(test, derive(Clone))] -pub struct ValidatorsSet { - /// Validators of this set. - pub validators: Vec
, - /// Hash of the block where this set has been signalled. None if this is the first set. - pub signal_block: Option, - /// Hash of the block where this set has been enacted. - pub enact_block: HeaderId, -} - -/// Validators set change as it is stored in the runtime storage. -#[derive(Encode, Decode, PartialEq, RuntimeDebug)] -#[cfg_attr(test, derive(Clone))] -pub struct AuraScheduledChange { - /// Validators of this set. - pub validators: Vec
, - /// Hash of the block which has emitted previous validators change signal. - pub prev_signal_block: Option, -} - -/// Header that we're importing. -#[derive(RuntimeDebug)] -#[cfg_attr(test, derive(Clone, PartialEq))] -pub struct HeaderToImport { - /// Header import context, - pub context: ImportContext, - /// Should we consider this header as best? - pub is_best: bool, - /// The id of the header. - pub id: HeaderId, - /// The header itself. - pub header: AuraHeader, - /// Total chain difficulty at the header. - pub total_difficulty: U256, - /// New validators set and the hash of block where it has been scheduled (if applicable). - /// Some if set is is enacted by this header. - pub enacted_change: Option, - /// Validators set scheduled change, if happened at the header. - pub scheduled_change: Option>, - /// Finality votes at this header. - pub finality_votes: FinalityVotes, -} - -/// Header that we're importing. -#[derive(RuntimeDebug)] -#[cfg_attr(test, derive(Clone, PartialEq))] -pub struct ChangeToEnact { - /// The id of the header where change has been scheduled. - /// None if it is a first set within current `ValidatorsSource`. - pub signal_block: Option, - /// Validators set that is enacted. - pub validators: Vec
, -} - -/// Blocks range that we want to prune. -#[derive(Encode, Decode, Default, RuntimeDebug, Clone, PartialEq)] -struct PruningRange { - /// Number of the oldest unpruned block(s). This might be the block that we do not - /// want to prune now (then it is equal to `oldest_block_to_keep`), or block that we - /// were unable to prune for whatever reason (i.e. if it isn't finalized yet and has - /// scheduled validators set change). - pub oldest_unpruned_block: u64, - /// Number of oldest block(s) that we want to keep. We want to prune blocks in range - /// [`oldest_unpruned_block`; `oldest_block_to_keep`). - pub oldest_block_to_keep: u64, -} - -/// Header import context. -/// -/// The import context contains information needed by the header verification -/// pipeline which is not directly part of the header being imported. This includes -/// information relating to its parent, and the current validator set (which -/// provide _context_ for the current header). -#[derive(RuntimeDebug)] -#[cfg_attr(test, derive(Clone, PartialEq))] -pub struct ImportContext { - submitter: Option, - parent_hash: H256, - parent_header: AuraHeader, - parent_total_difficulty: U256, - parent_scheduled_change: Option, - validators_set_id: u64, - validators_set: ValidatorsSet, - last_signal_block: Option, -} - -impl ImportContext { - /// Returns reference to header submitter (if known). - pub fn submitter(&self) -> Option<&Submitter> { - self.submitter.as_ref() - } - - /// Returns reference to parent header. - pub fn parent_header(&self) -> &AuraHeader { - &self.parent_header - } - - /// Returns total chain difficulty at parent block. - pub fn total_difficulty(&self) -> &U256 { - &self.parent_total_difficulty - } - - /// Returns the validator set change if the parent header has signaled a change. - pub fn parent_scheduled_change(&self) -> Option<&AuraScheduledChange> { - self.parent_scheduled_change.as_ref() - } - - /// Returns id of the set of validators. - pub fn validators_set_id(&self) -> u64 { - self.validators_set_id - } - - /// Returns reference to validators set for the block we're going to import. - pub fn validators_set(&self) -> &ValidatorsSet { - &self.validators_set - } - - /// Returns reference to the latest block which has signalled change of validators set. - /// This may point to parent if parent has signalled change. - pub fn last_signal_block(&self) -> Option { - match self.parent_scheduled_change { - Some(_) => Some(HeaderId { - number: self.parent_header.number, - hash: self.parent_hash, - }), - None => self.last_signal_block, - } - } - - /// Converts import context into header we're going to import. - #[allow(clippy::too_many_arguments)] - pub fn into_import_header( - self, - is_best: bool, - id: HeaderId, - header: AuraHeader, - total_difficulty: U256, - enacted_change: Option, - scheduled_change: Option>, - finality_votes: FinalityVotes, - ) -> HeaderToImport { - HeaderToImport { - context: self, - is_best, - id, - header, - total_difficulty, - enacted_change, - scheduled_change, - finality_votes, - } - } -} - -/// The storage that is used by the client. -/// -/// Storage modification must be discarded if block import has failed. -pub trait Storage { - /// Header submitter identifier. - type Submitter: Clone + Ord; - - /// Get best known block and total chain difficulty. - fn best_block(&self) -> (HeaderId, U256); - /// Get last finalized block. - fn finalized_block(&self) -> HeaderId; - /// Get imported header by its hash. - /// - /// Returns header and its submitter (if known). - fn header(&self, hash: &H256) -> Option<(AuraHeader, Option)>; - /// Returns latest cached finality votes (if any) for block ancestors, starting - /// from `parent_hash` block and stopping at genesis block, best finalized block - /// or block where `stop_at` returns true. - fn cached_finality_votes( - &self, - parent: &HeaderId, - best_finalized: &HeaderId, - stop_at: impl Fn(&H256) -> bool, - ) -> CachedFinalityVotes; - /// Get header import context by parent header hash. - fn import_context( - &self, - submitter: Option, - parent_hash: &H256, - ) -> Option>; - /// Get new validators that are scheduled by given header and hash of the previous - /// block that has scheduled change. - fn scheduled_change(&self, hash: &H256) -> Option; - /// Insert imported header. - fn insert_header(&mut self, header: HeaderToImport); - /// Finalize given block and schedules pruning of all headers - /// with number < prune_end. - /// - /// The headers in the pruning range could be either finalized, or not. - /// It is the storage duty to ensure that unfinalized headers that have - /// scheduled changes won't be pruned until they or their competitors - /// are finalized. - fn finalize_and_prune_headers(&mut self, finalized: Option, prune_end: u64); -} - -/// Headers pruning strategy. -pub trait PruningStrategy: Default { - /// Return upper bound (exclusive) of headers pruning range. - /// - /// Every value that is returned from this function, must be greater or equal to the - /// previous value. Otherwise it will be ignored (we can't revert pruning). - /// - /// Pallet may prune both finalized and unfinalized blocks. But it can't give any - /// guarantees on when it will happen. Example: if some unfinalized block at height N - /// has scheduled validators set change, then the module won't prune any blocks with - /// number >= N even if strategy allows that. - /// - /// If your strategy allows pruning unfinalized blocks, this could lead to switch - /// between finalized forks (only if authorities are misbehaving). But since 50%+1 (or 2/3) - /// authorities are able to do whatever they want with the chain, this isn't considered - /// fatal. If your strategy only prunes finalized blocks, we'll never be able to finalize - /// header that isn't descendant of current best finalized block. - fn pruning_upper_bound(&mut self, best_number: u64, best_finalized_number: u64) -> u64; -} - -/// ChainTime represents the runtime on-chain time -pub trait ChainTime: Default { - /// Is a header timestamp ahead of the current on-chain time. - /// - /// Check whether `timestamp` is ahead (i.e greater than) the current on-chain - /// time. If so, return `true`, `false` otherwise. - fn is_timestamp_ahead(&self, timestamp: u64) -> bool; -} - -/// ChainTime implementation for the empty type. -/// -/// This implementation will allow a runtime without the timestamp pallet to use -/// the empty type as its ChainTime associated type. -impl ChainTime for () { - fn is_timestamp_ahead(&self, _: u64) -> bool { - false - } -} - -/// Callbacks for header submission rewards/penalties. -pub trait OnHeadersSubmitted { - /// Called when valid headers have been submitted. - /// - /// The submitter **must not** be rewarded for submitting valid headers, because greedy authority - /// could produce and submit multiple valid headers (without relaying them to other peers) and - /// get rewarded. Instead, the provider could track submitters and stop rewarding if too many - /// headers have been submitted without finalization. - fn on_valid_headers_submitted(submitter: AccountId, useful: u64, useless: u64); - /// Called when invalid headers have been submitted. - fn on_invalid_headers_submitted(submitter: AccountId); - /// Called when earlier submitted headers have been finalized. - /// - /// finalized is the number of headers that submitter has submitted and which - /// have been finalized. - fn on_valid_headers_finalized(submitter: AccountId, finalized: u64); -} - -impl OnHeadersSubmitted for () { - fn on_valid_headers_submitted(_submitter: AccountId, _useful: u64, _useless: u64) {} - fn on_invalid_headers_submitted(_submitter: AccountId) {} - fn on_valid_headers_finalized(_submitter: AccountId, _finalized: u64) {} -} - -/// The module configuration trait. -pub trait Config: frame_system::Config { - /// Aura configuration. - type AuraConfiguration: Get; - /// Validators configuration. - type ValidatorsConfiguration: Get; - - /// Interval (in blocks) for for finality votes caching. - /// If None, cache is disabled. - /// - /// Ideally, this should either be None (when we are sure that there won't - /// be any significant finalization delays), or something that is bit larger - /// than average finalization delay. - type FinalityVotesCachingInterval: Get>; - /// Headers pruning strategy. - type PruningStrategy: PruningStrategy; - /// Header timestamp verification against current on-chain time. - type ChainTime: ChainTime; - - /// Handler for headers submission result. - type OnHeadersSubmitted: OnHeadersSubmitted; -} - -decl_module! { - pub struct Module, I: Instance = DefaultInstance> for enum Call where origin: T::Origin { - /// Import single Aura header. Requires transaction to be **UNSIGNED**. - #[weight = 0] // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - pub fn import_unsigned_header(origin, header: AuraHeader, receipts: Option>) { - frame_system::ensure_none(origin)?; - - import::import_header( - &mut BridgeStorage::::new(), - &mut T::PruningStrategy::default(), - &T::AuraConfiguration::get(), - &T::ValidatorsConfiguration::get(), - None, - header, - &T::ChainTime::default(), - receipts, - ).map_err(|e| e.msg())?; - } - - /// Import Aura chain headers in a single **SIGNED** transaction. - /// Ignores non-fatal errors (like when known header is provided), rewards - /// for successful headers import and penalizes for fatal errors. - /// - /// This should be used with caution - passing too many headers could lead to - /// enormous block production/import time. - #[weight = 0] // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) - pub fn import_signed_headers(origin, headers_with_receipts: Vec<(AuraHeader, Option>)>) { - let submitter = frame_system::ensure_signed(origin)?; - let mut finalized_headers = BTreeMap::new(); - let import_result = import::import_headers( - &mut BridgeStorage::::new(), - &mut T::PruningStrategy::default(), - &T::AuraConfiguration::get(), - &T::ValidatorsConfiguration::get(), - Some(submitter.clone()), - headers_with_receipts, - &T::ChainTime::default(), - &mut finalized_headers, - ); - - // if we have finalized some headers, we will reward their submitters even - // if current submitter has provided some invalid headers - for (f_submitter, f_count) in finalized_headers { - T::OnHeadersSubmitted::on_valid_headers_finalized( - f_submitter, - f_count, - ); - } - - // now track/penalize current submitter for providing new headers - match import_result { - Ok((useful, useless)) => - T::OnHeadersSubmitted::on_valid_headers_submitted(submitter, useful, useless), - Err(error) => { - // even though we may have accept some headers, we do not want to reward someone - // who provides invalid headers - T::OnHeadersSubmitted::on_invalid_headers_submitted(submitter); - return Err(error.msg().into()); - }, - } - } - } -} - -decl_storage! { - trait Store for Pallet, I: Instance = DefaultInstance> as Bridge { - /// Best known block. - BestBlock: (HeaderId, U256); - /// Best finalized block. - FinalizedBlock: HeaderId; - /// Range of blocks that we want to prune. - BlocksToPrune: PruningRange; - /// Map of imported headers by hash. - Headers: map hasher(identity) H256 => Option>; - /// Map of imported header hashes by number. - HeadersByNumber: map hasher(blake2_128_concat) u64 => Option>; - /// Map of cached finality data by header hash. - FinalityCache: map hasher(identity) H256 => Option>; - /// The ID of next validator set. - NextValidatorsSetId: u64; - /// Map of validators sets by their id. - ValidatorsSets: map hasher(twox_64_concat) u64 => Option; - /// Validators sets reference count. Each header that is authored by this set increases - /// the reference count. When we prune this header, we decrease the reference count. - /// When it reaches zero, we are free to prune validator set as well. - ValidatorsSetsRc: map hasher(twox_64_concat) u64 => Option; - /// Map of validators set changes scheduled by given header. - ScheduledChanges: map hasher(identity) H256 => Option; - } - add_extra_genesis { - config(initial_header): AuraHeader; - config(initial_difficulty): U256; - config(initial_validators): Vec
; - build(|config| { - // the initial blocks should be selected so that: - // 1) it doesn't signal validators changes; - // 2) there are no scheduled validators changes from previous blocks; - // 3) (implied) all direct children of initial block are authored by the same validators set. - - assert!( - !config.initial_validators.is_empty(), - "Initial validators set can't be empty", - ); - - initialize_storage::( - &config.initial_header, - config.initial_difficulty, - &config.initial_validators, - ); - }) - } -} - -impl, I: Instance> Pallet { - /// Returns number and hash of the best block known to the bridge module. - /// The caller should only submit `import_header` transaction that makes - /// (or leads to making) other header the best one. - pub fn best_block() -> HeaderId { - BridgeStorage::::new().best_block().0 - } - - /// Returns number and hash of the best finalized block known to the bridge module. - pub fn finalized_block() -> HeaderId { - BridgeStorage::::new().finalized_block() - } - - /// Returns true if the import of given block requires transactions receipts. - pub fn is_import_requires_receipts(header: AuraHeader) -> bool { - import::header_import_requires_receipts( - &BridgeStorage::::new(), - &T::ValidatorsConfiguration::get(), - &header, - ) - } - - /// Returns true if header is known to the runtime. - pub fn is_known_block(hash: H256) -> bool { - BridgeStorage::::new().header(&hash).is_some() - } - - /// Verify that transaction is included into given finalized block. - pub fn verify_transaction_finalized( - block: H256, - tx_index: u64, - proof: &[(RawTransaction, RawTransactionReceipt)], - ) -> bool { - crate::verify_transaction_finalized(&BridgeStorage::::new(), block, tx_index, proof) - } -} - -impl, I: Instance> frame_support::unsigned::ValidateUnsigned for Pallet { - type Call = Call; - - fn validate_unsigned(_source: TransactionSource, call: &Self::Call) -> TransactionValidity { - match *call { - Self::Call::import_unsigned_header(ref header, ref receipts) => { - let accept_result = verification::accept_aura_header_into_pool( - &BridgeStorage::::new(), - &T::AuraConfiguration::get(), - &T::ValidatorsConfiguration::get(), - &pool_configuration(), - header, - &T::ChainTime::default(), - receipts.as_ref(), - ); - - match accept_result { - Ok((requires, provides)) => Ok(ValidTransaction { - priority: TransactionPriority::max_value(), - requires, - provides, - longevity: TransactionLongevity::max_value(), - propagate: true, - }), - // UnsignedTooFarInTheFuture is the special error code used to limit - // number of transactions in the pool - we do not want to ban transaction - // in this case (see verification.rs for details) - Err(error::Error::UnsignedTooFarInTheFuture) => { - UnknownTransaction::Custom(error::Error::UnsignedTooFarInTheFuture.code()).into() - } - Err(error) => InvalidTransaction::Custom(error.code()).into(), - } - } - _ => InvalidTransaction::Call.into(), - } - } -} - -/// Runtime bridge storage. -#[derive(Default)] -pub struct BridgeStorage(sp_std::marker::PhantomData<(T, I)>); - -impl, I: Instance> BridgeStorage { - /// Create new BridgeStorage. - pub fn new() -> Self { - BridgeStorage(sp_std::marker::PhantomData::<(T, I)>::default()) - } - - /// Prune old blocks. - fn prune_blocks(&self, mut max_blocks_to_prune: u64, finalized_number: u64, prune_end: u64) { - let pruning_range = BlocksToPrune::::get(); - let mut new_pruning_range = pruning_range.clone(); - - // update oldest block we want to keep - if prune_end > new_pruning_range.oldest_block_to_keep { - new_pruning_range.oldest_block_to_keep = prune_end; - } - - // start pruning blocks - let begin = new_pruning_range.oldest_unpruned_block; - let end = new_pruning_range.oldest_block_to_keep; - log::trace!(target: "runtime", "Pruning blocks in range [{}..{})", begin, end); - for number in begin..end { - // if we can't prune anything => break - if max_blocks_to_prune == 0 { - break; - } - - // read hashes of blocks with given number and try to prune these blocks - let blocks_at_number = HeadersByNumber::::take(number); - if let Some(mut blocks_at_number) = blocks_at_number { - self.prune_blocks_by_hashes( - &mut max_blocks_to_prune, - finalized_number, - number, - &mut blocks_at_number, - ); - - // if we haven't pruned all blocks, remember unpruned - if !blocks_at_number.is_empty() { - HeadersByNumber::::insert(number, blocks_at_number); - break; - } - } - - // we have pruned all headers at number - new_pruning_range.oldest_unpruned_block = number + 1; - log::trace!( - target: "runtime", - "Oldest unpruned PoA header is now: {}", - new_pruning_range.oldest_unpruned_block, - ); - } - - // update pruning range in storage - if pruning_range != new_pruning_range { - BlocksToPrune::::put(new_pruning_range); - } - } - - /// Prune old blocks with given hashes. - fn prune_blocks_by_hashes( - &self, - max_blocks_to_prune: &mut u64, - finalized_number: u64, - number: u64, - blocks_at_number: &mut Vec, - ) { - // ensure that unfinalized headers we want to prune do not have scheduled changes - if number > finalized_number && blocks_at_number.iter().any(ScheduledChanges::::contains_key) { - return; - } - - // physically remove headers and (probably) obsolete validators sets - while let Some(hash) = blocks_at_number.pop() { - let header = Headers::::take(&hash); - log::trace!( - target: "runtime", - "Pruning PoA header: ({}, {})", - number, - hash, - ); - - ScheduledChanges::::remove(hash); - FinalityCache::::remove(hash); - if let Some(header) = header { - ValidatorsSetsRc::::mutate(header.next_validators_set_id, |rc| match *rc { - Some(rc) if rc > 1 => Some(rc - 1), - _ => None, - }); - } - - // check if we have already pruned too much headers in this call - *max_blocks_to_prune -= 1; - if *max_blocks_to_prune == 0 { - return; - } - } - } -} - -impl, I: Instance> Storage for BridgeStorage { - type Submitter = T::AccountId; - - fn best_block(&self) -> (HeaderId, U256) { - BestBlock::::get() - } - - fn finalized_block(&self) -> HeaderId { - FinalizedBlock::::get() - } - - fn header(&self, hash: &H256) -> Option<(AuraHeader, Option)> { - Headers::::get(hash).map(|header| (header.header, header.submitter)) - } - - fn cached_finality_votes( - &self, - parent: &HeaderId, - best_finalized: &HeaderId, - stop_at: impl Fn(&H256) -> bool, - ) -> CachedFinalityVotes { - let mut votes = CachedFinalityVotes::default(); - let mut current_id = *parent; - loop { - // if we have reached finalized block's sibling => stop with special signal - if current_id.number == best_finalized.number && current_id.hash != best_finalized.hash { - votes.stopped_at_finalized_sibling = true; - return votes; - } - - // if we have reached target header => stop - if stop_at(¤t_id.hash) { - return votes; - } - - // if we have found cached votes => stop - let cached_votes = FinalityCache::::get(¤t_id.hash); - if let Some(cached_votes) = cached_votes { - votes.votes = Some(cached_votes); - return votes; - } - - // read next parent header id - let header = match Headers::::get(¤t_id.hash) { - Some(header) if header.header.number != 0 => header, - _ => return votes, - }; - let parent_id = header.header.parent_id().expect( - "only returns None at genesis header;\ - the header is proved to have number > 0;\ - qed", - ); - - votes - .unaccounted_ancestry - .push_back((current_id, header.submitter, header.header)); - - current_id = parent_id; - } - } - - fn import_context( - &self, - submitter: Option, - parent_hash: &H256, - ) -> Option> { - Headers::::get(parent_hash).map(|parent_header| { - let validators_set = ValidatorsSets::::get(parent_header.next_validators_set_id) - .expect("validators set is only pruned when last ref is pruned; there is a ref; qed"); - let parent_scheduled_change = ScheduledChanges::::get(parent_hash); - ImportContext { - submitter, - parent_hash: *parent_hash, - parent_header: parent_header.header, - parent_total_difficulty: parent_header.total_difficulty, - parent_scheduled_change, - validators_set_id: parent_header.next_validators_set_id, - validators_set, - last_signal_block: parent_header.last_signal_block, - } - }) - } - - fn scheduled_change(&self, hash: &H256) -> Option { - ScheduledChanges::::get(hash) - } - - fn insert_header(&mut self, header: HeaderToImport) { - if header.is_best { - BestBlock::::put((header.id, header.total_difficulty)); - } - if let Some(scheduled_change) = header.scheduled_change { - ScheduledChanges::::insert( - &header.id.hash, - AuraScheduledChange { - validators: scheduled_change, - prev_signal_block: header.context.last_signal_block, - }, - ); - } - let next_validators_set_id = match header.enacted_change { - Some(enacted_change) => { - let next_validators_set_id = NextValidatorsSetId::::mutate(|set_id| { - let next_set_id = *set_id; - *set_id += 1; - next_set_id - }); - ValidatorsSets::::insert( - next_validators_set_id, - ValidatorsSet { - validators: enacted_change.validators, - enact_block: header.id, - signal_block: enacted_change.signal_block, - }, - ); - ValidatorsSetsRc::::insert(next_validators_set_id, 1); - next_validators_set_id - } - None => { - ValidatorsSetsRc::::mutate(header.context.validators_set_id, |rc| { - *rc = Some(rc.map(|rc| rc + 1).unwrap_or(1)); - *rc - }); - header.context.validators_set_id - } - }; - - let finality_votes_caching_interval = T::FinalityVotesCachingInterval::get(); - if let Some(finality_votes_caching_interval) = finality_votes_caching_interval { - let cache_entry_required = header.id.number != 0 && header.id.number % finality_votes_caching_interval == 0; - if cache_entry_required { - FinalityCache::::insert(header.id.hash, header.finality_votes); - } - } - - log::trace!( - target: "runtime", - "Inserting PoA header: ({}, {})", - header.header.number, - header.id.hash, - ); - - let last_signal_block = header.context.last_signal_block(); - HeadersByNumber::::append(header.id.number, header.id.hash); - Headers::::insert( - &header.id.hash, - StoredHeader { - submitter: header.context.submitter, - header: header.header, - total_difficulty: header.total_difficulty, - next_validators_set_id, - last_signal_block, - }, - ); - } - - fn finalize_and_prune_headers(&mut self, finalized: Option, prune_end: u64) { - // remember just finalized block - let finalized_number = finalized - .as_ref() - .map(|f| f.number) - .unwrap_or_else(|| FinalizedBlock::::get().number); - if let Some(finalized) = finalized { - log::trace!( - target: "runtime", - "Finalizing PoA header: ({}, {})", - finalized.number, - finalized.hash, - ); - - FinalizedBlock::::put(finalized); - } - - // and now prune headers if we need to - self.prune_blocks(MAX_BLOCKS_TO_PRUNE_IN_SINGLE_IMPORT, finalized_number, prune_end); - } -} - -/// Initialize storage. -#[cfg(any(feature = "std", feature = "runtime-benchmarks"))] -pub(crate) fn initialize_storage, I: Instance>( - initial_header: &AuraHeader, - initial_difficulty: U256, - initial_validators: &[Address], -) { - let initial_hash = initial_header.compute_hash(); - log::trace!( - target: "runtime", - "Initializing bridge with PoA header: ({}, {})", - initial_header.number, - initial_hash, - ); - - let initial_id = HeaderId { - number: initial_header.number, - hash: initial_hash, - }; - BestBlock::::put((initial_id, initial_difficulty)); - FinalizedBlock::::put(initial_id); - BlocksToPrune::::put(PruningRange { - oldest_unpruned_block: initial_header.number, - oldest_block_to_keep: initial_header.number, - }); - HeadersByNumber::::insert(initial_header.number, vec![initial_hash]); - Headers::::insert( - initial_hash, - StoredHeader { - submitter: None, - header: initial_header.clone(), - total_difficulty: initial_difficulty, - next_validators_set_id: 0, - last_signal_block: None, - }, - ); - NextValidatorsSetId::::put(1); - ValidatorsSets::::insert( - 0, - ValidatorsSet { - validators: initial_validators.to_vec(), - signal_block: None, - enact_block: initial_id, - }, - ); - ValidatorsSetsRc::::insert(0, 1); -} - -/// Verify that transaction is included into given finalized block. -pub fn verify_transaction_finalized( - storage: &S, - block: H256, - tx_index: u64, - proof: &[(RawTransaction, RawTransactionReceipt)], -) -> bool { - if tx_index >= proof.len() as _ { - log::trace!( - target: "runtime", - "Tx finality check failed: transaction index ({}) is larger than number of transactions ({})", - tx_index, - proof.len(), - ); - - return false; - } - - let header = match storage.header(&block) { - Some((header, _)) => header, - None => { - log::trace!( - target: "runtime", - "Tx finality check failed: can't find header in the storage: {}", - block, - ); - - return false; - } - }; - let finalized = storage.finalized_block(); - - // if header is not yet finalized => return - if header.number > finalized.number { - log::trace!( - target: "runtime", - "Tx finality check failed: header {}/{} is not finalized. Best finalized: {}", - header.number, - block, - finalized.number, - ); - - return false; - } - - // check if header is actually finalized - let is_finalized = match header.number < finalized.number { - true => ancestry(storage, finalized.hash) - .skip_while(|(_, ancestor)| ancestor.number > header.number) - .any(|(ancestor_hash, _)| ancestor_hash == block), - false => block == finalized.hash, - }; - if !is_finalized { - log::trace!( - target: "runtime", - "Tx finality check failed: header {} is not finalized: no canonical path to best finalized block {}", - block, - finalized.hash, - ); - - return false; - } - - // verify that transaction is included in the block - if let Err(computed_root) = header.check_transactions_root(proof.iter().map(|(tx, _)| tx)) { - log::trace!( - target: "runtime", - "Tx finality check failed: transactions root mismatch. Expected: {}, computed: {}", - header.transactions_root, - computed_root, - ); - - return false; - } - - // verify that transaction receipt is included in the block - if let Err(computed_root) = header.check_raw_receipts_root(proof.iter().map(|(_, r)| r)) { - log::trace!( - target: "runtime", - "Tx finality check failed: receipts root mismatch. Expected: {}, computed: {}", - header.receipts_root, - computed_root, - ); - - return false; - } - - // check that transaction has completed successfully - let is_successful_raw_receipt = Receipt::is_successful_raw_receipt(&proof[tx_index as usize].1); - match is_successful_raw_receipt { - Ok(true) => true, - Ok(false) => { - log::trace!( - target: "runtime", - "Tx finality check failed: receipt shows that transaction has failed", - ); - - false - } - Err(err) => { - log::trace!( - target: "runtime", - "Tx finality check failed: receipt check has failed: {}", - err, - ); - - false - } - } -} - -/// Transaction pool configuration. -fn pool_configuration() -> PoolConfiguration { - PoolConfiguration { - max_future_number_difference: 10, - } -} - -/// Return iterator of given header ancestors. -fn ancestry(storage: &'_ S, mut parent_hash: H256) -> impl Iterator + '_ { - sp_std::iter::from_fn(move || { - let (header, _) = storage.header(&parent_hash)?; - if header.number == 0 { - return None; - } - - let hash = parent_hash; - parent_hash = header.parent_hash; - Some((hash, header)) - }) -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use crate::finality::FinalityAncestor; - use crate::mock::{ - genesis, insert_header, run_test, run_test_with_genesis, validators_addresses, HeaderBuilder, TestRuntime, - GAS_LIMIT, - }; - use crate::test_utils::validator_utils::*; - use bp_eth_poa::compute_merkle_root; - - const TOTAL_VALIDATORS: usize = 3; - - fn example_tx() -> Vec { - vec![42] - } - - fn example_tx_receipt(success: bool) -> Vec { - Receipt { - // the only thing that we care of: - outcome: bp_eth_poa::TransactionOutcome::StatusCode(if success { 1 } else { 0 }), - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp() - } - - fn example_header_with_failed_receipt() -> AuraHeader { - HeaderBuilder::with_parent(&example_header()) - .transactions_root(compute_merkle_root(vec![example_tx()].into_iter())) - .receipts_root(compute_merkle_root(vec![example_tx_receipt(false)].into_iter())) - .sign_by(&validator(0)) - } - - fn example_header() -> AuraHeader { - HeaderBuilder::with_parent(&example_header_parent()) - .transactions_root(compute_merkle_root(vec![example_tx()].into_iter())) - .receipts_root(compute_merkle_root(vec![example_tx_receipt(true)].into_iter())) - .sign_by(&validator(0)) - } - - fn example_header_parent() -> AuraHeader { - HeaderBuilder::with_parent(&genesis()) - .transactions_root(compute_merkle_root(vec![example_tx()].into_iter())) - .receipts_root(compute_merkle_root(vec![example_tx_receipt(true)].into_iter())) - .sign_by(&validator(0)) - } - - fn with_headers_to_prune(f: impl Fn(BridgeStorage) -> T) -> T { - run_test(TOTAL_VALIDATORS, |ctx| { - for i in 1..10 { - let mut headers_by_number = Vec::with_capacity(5); - for j in 0..5 { - let header = HeaderBuilder::with_parent_number(i - 1) - .gas_limit((GAS_LIMIT + j).into()) - .sign_by_set(&ctx.validators); - let hash = header.compute_hash(); - headers_by_number.push(hash); - Headers::::insert( - hash, - StoredHeader { - submitter: None, - header, - total_difficulty: 0.into(), - next_validators_set_id: 0, - last_signal_block: None, - }, - ); - - if i == 7 && j == 1 { - ScheduledChanges::::insert( - hash, - AuraScheduledChange { - validators: validators_addresses(5), - prev_signal_block: None, - }, - ); - } - } - HeadersByNumber::::insert(i, headers_by_number); - } - - f(BridgeStorage::new()) - }) - } - - #[test] - fn blocks_are_not_pruned_if_range_is_empty() { - with_headers_to_prune(|storage| { - BlocksToPrune::::put(PruningRange { - oldest_unpruned_block: 5, - oldest_block_to_keep: 5, - }); - - // try to prune blocks [5; 10) - storage.prune_blocks(0xFFFF, 10, 5); - assert_eq!(HeadersByNumber::::get(&5).unwrap().len(), 5); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 5, - oldest_block_to_keep: 5, - }, - ); - }); - } - - #[test] - fn blocks_to_prune_never_shrinks_from_the_end() { - with_headers_to_prune(|storage| { - BlocksToPrune::::put(PruningRange { - oldest_unpruned_block: 0, - oldest_block_to_keep: 5, - }); - - // try to prune blocks [5; 10) - storage.prune_blocks(0xFFFF, 10, 3); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 5, - oldest_block_to_keep: 5, - }, - ); - }); - } - - #[test] - fn blocks_are_not_pruned_if_limit_is_zero() { - with_headers_to_prune(|storage| { - // try to prune blocks [0; 10) - storage.prune_blocks(0, 10, 10); - assert!(HeadersByNumber::::get(&0).is_some()); - assert!(HeadersByNumber::::get(&1).is_some()); - assert!(HeadersByNumber::::get(&2).is_some()); - assert!(HeadersByNumber::::get(&3).is_some()); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 0, - oldest_block_to_keep: 10, - }, - ); - }); - } - - #[test] - fn blocks_are_pruned_if_limit_is_non_zero() { - with_headers_to_prune(|storage| { - // try to prune blocks [0; 10) - storage.prune_blocks(7, 10, 10); - // 1 headers with number = 0 is pruned (1 total) - assert!(HeadersByNumber::::get(&0).is_none()); - // 5 headers with number = 1 are pruned (6 total) - assert!(HeadersByNumber::::get(&1).is_none()); - // 1 header with number = 2 are pruned (7 total) - assert_eq!(HeadersByNumber::::get(&2).unwrap().len(), 4); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 2, - oldest_block_to_keep: 10, - }, - ); - - // try to prune blocks [2; 10) - storage.prune_blocks(11, 10, 10); - // 4 headers with number = 2 are pruned (4 total) - assert!(HeadersByNumber::::get(&2).is_none()); - // 5 headers with number = 3 are pruned (9 total) - assert!(HeadersByNumber::::get(&3).is_none()); - // 2 headers with number = 4 are pruned (11 total) - assert_eq!(HeadersByNumber::::get(&4).unwrap().len(), 3); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 4, - oldest_block_to_keep: 10, - }, - ); - }); - } - - #[test] - fn pruning_stops_on_unfainalized_block_with_scheduled_change() { - with_headers_to_prune(|storage| { - // try to prune blocks [0; 10) - // last finalized block is 5 - // and one of blocks#7 has scheduled change - // => we won't prune any block#7 at all - storage.prune_blocks(0xFFFF, 5, 10); - assert!(HeadersByNumber::::get(&0).is_none()); - assert!(HeadersByNumber::::get(&1).is_none()); - assert!(HeadersByNumber::::get(&2).is_none()); - assert!(HeadersByNumber::::get(&3).is_none()); - assert!(HeadersByNumber::::get(&4).is_none()); - assert!(HeadersByNumber::::get(&5).is_none()); - assert!(HeadersByNumber::::get(&6).is_none()); - assert_eq!(HeadersByNumber::::get(&7).unwrap().len(), 5); - assert_eq!( - BlocksToPrune::::get(), - PruningRange { - oldest_unpruned_block: 7, - oldest_block_to_keep: 10, - }, - ); - }); - } - - #[test] - fn finality_votes_are_cached() { - run_test(TOTAL_VALIDATORS, |ctx| { - let mut storage = BridgeStorage::::new(); - let interval = ::FinalityVotesCachingInterval::get().unwrap(); - - // for all headers with number < interval, cache entry is not created - for i in 1..interval { - let header = HeaderBuilder::with_parent_number(i - 1).sign_by_set(&ctx.validators); - let id = header.compute_id(); - insert_header(&mut storage, header); - assert_eq!(FinalityCache::::get(&id.hash), None); - } - - // for header with number = interval, cache entry is created - let header_with_entry = HeaderBuilder::with_parent_number(interval - 1).sign_by_set(&ctx.validators); - let header_with_entry_hash = header_with_entry.compute_hash(); - insert_header(&mut storage, header_with_entry); - assert!(FinalityCache::::get(&header_with_entry_hash).is_some()); - - // when we later prune this header, cache entry is removed - BlocksToPrune::::put(PruningRange { - oldest_unpruned_block: interval - 1, - oldest_block_to_keep: interval - 1, - }); - storage.finalize_and_prune_headers(None, interval + 1); - assert_eq!(FinalityCache::::get(&header_with_entry_hash), None); - }); - } - - #[test] - fn cached_finality_votes_finds_entry() { - run_test(TOTAL_VALIDATORS, |ctx| { - // insert 5 headers - let mut storage = BridgeStorage::::new(); - let mut headers = Vec::new(); - for i in 1..5 { - let header = HeaderBuilder::with_parent_number(i - 1).sign_by_set(&ctx.validators); - headers.push(header.clone()); - insert_header(&mut storage, header); - } - - // when inserting header#6, entry isn't found - let id5 = headers.last().unwrap().compute_id(); - assert_eq!( - storage.cached_finality_votes(&id5, &genesis().compute_id(), |_| false), - CachedFinalityVotes { - stopped_at_finalized_sibling: false, - unaccounted_ancestry: headers - .iter() - .map(|header| (header.compute_id(), None, header.clone(),)) - .rev() - .collect(), - votes: None, - }, - ); - - // let's now create entry at #3 - let hash3 = headers[2].compute_hash(); - let votes_at_3 = FinalityVotes { - votes: vec![([42; 20].into(), 21)].into_iter().collect(), - ancestry: vec![FinalityAncestor { - id: HeaderId { - number: 100, - hash: Default::default(), - }, - ..Default::default() - }] - .into_iter() - .collect(), - }; - FinalityCache::::insert(hash3, votes_at_3.clone()); - - // searching at #6 again => entry is found - assert_eq!( - storage.cached_finality_votes(&id5, &genesis().compute_id(), |_| false), - CachedFinalityVotes { - stopped_at_finalized_sibling: false, - unaccounted_ancestry: headers - .iter() - .skip(3) - .map(|header| (header.compute_id(), None, header.clone(),)) - .rev() - .collect(), - votes: Some(votes_at_3), - }, - ); - }); - } - - #[test] - fn cached_finality_votes_stops_at_finalized_sibling() { - run_test(TOTAL_VALIDATORS, |ctx| { - let mut storage = BridgeStorage::::new(); - - // insert header1 - let header1 = HeaderBuilder::with_parent_number(0).sign_by_set(&ctx.validators); - let header1_id = header1.compute_id(); - insert_header(&mut storage, header1); - - // insert header1' - sibling of header1 - let header1s = HeaderBuilder::with_parent_number(0) - .gas_limit((GAS_LIMIT + 1).into()) - .sign_by_set(&ctx.validators); - let header1s_id = header1s.compute_id(); - insert_header(&mut storage, header1s); - - // header1 is finalized - FinalizedBlock::::put(header1_id); - - // trying to get finality votes when importing header2 -> header1 succeeds - assert!( - !storage - .cached_finality_votes(&header1_id, &genesis().compute_id(), |_| false) - .stopped_at_finalized_sibling - ); - - // trying to get finality votes when importing header2s -> header1s fails - assert!( - storage - .cached_finality_votes(&header1s_id, &header1_id, |_| false) - .stopped_at_finalized_sibling - ); - }); - } - - #[test] - fn verify_transaction_finalized_works_for_best_finalized_header() { - run_test_with_genesis(example_header(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 0, - &[(example_tx(), example_tx_receipt(true))], - )); - }); - } - - #[test] - fn verify_transaction_finalized_works_for_best_finalized_header_ancestor() { - run_test(TOTAL_VALIDATORS, |_| { - let mut storage = BridgeStorage::::new(); - insert_header(&mut storage, example_header_parent()); - insert_header(&mut storage, example_header()); - storage.finalize_and_prune_headers(Some(example_header().compute_id()), 0); - assert!(verify_transaction_finalized( - &storage, - example_header_parent().compute_hash(), - 0, - &[(example_tx(), example_tx_receipt(true))], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_proof_with_missing_tx() { - run_test_with_genesis(example_header(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(!verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 1, - &[], - ),); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_unknown_header() { - run_test(TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(!verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 1, - &[], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_unfinalized_header() { - run_test(TOTAL_VALIDATORS, |_| { - let mut storage = BridgeStorage::::new(); - insert_header(&mut storage, example_header_parent()); - insert_header(&mut storage, example_header()); - assert!(!verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 0, - &[(example_tx(), example_tx_receipt(true))], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_finalized_header_sibling() { - run_test(TOTAL_VALIDATORS, |_| { - let mut finalized_header_sibling = example_header(); - finalized_header_sibling.timestamp = 1; - let finalized_header_sibling_hash = finalized_header_sibling.compute_hash(); - - let mut storage = BridgeStorage::::new(); - insert_header(&mut storage, example_header_parent()); - insert_header(&mut storage, example_header()); - insert_header(&mut storage, finalized_header_sibling); - storage.finalize_and_prune_headers(Some(example_header().compute_id()), 0); - assert!(!verify_transaction_finalized( - &storage, - finalized_header_sibling_hash, - 0, - &[(example_tx(), example_tx_receipt(true))], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_finalized_header_uncle() { - run_test(TOTAL_VALIDATORS, |_| { - let mut finalized_header_uncle = example_header_parent(); - finalized_header_uncle.timestamp = 1; - let finalized_header_uncle_hash = finalized_header_uncle.compute_hash(); - - let mut storage = BridgeStorage::::new(); - insert_header(&mut storage, example_header_parent()); - insert_header(&mut storage, finalized_header_uncle); - insert_header(&mut storage, example_header()); - storage.finalize_and_prune_headers(Some(example_header().compute_id()), 0); - assert!(!verify_transaction_finalized( - &storage, - finalized_header_uncle_hash, - 0, - &[(example_tx(), example_tx_receipt(true))], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_invalid_transactions_in_proof() { - run_test_with_genesis(example_header(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(!verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 0, - &[ - (example_tx(), example_tx_receipt(true)), - (example_tx(), example_tx_receipt(true)) - ], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_invalid_receipts_in_proof() { - run_test_with_genesis(example_header(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(!verify_transaction_finalized( - &storage, - example_header().compute_hash(), - 0, - &[(example_tx(), vec![42])], - )); - }); - } - - #[test] - fn verify_transaction_finalized_rejects_failed_transaction() { - run_test_with_genesis(example_header_with_failed_receipt(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - assert!(!verify_transaction_finalized( - &storage, - example_header_with_failed_receipt().compute_hash(), - 0, - &[(example_tx(), example_tx_receipt(false))], - )); - }); - } -} diff --git a/bridges/modules/ethereum/src/mock.rs b/bridges/modules/ethereum/src/mock.rs deleted file mode 100644 index 35c093f36387..000000000000 --- a/bridges/modules/ethereum/src/mock.rs +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -// From construct_runtime macro -#![allow(clippy::from_over_into)] - -pub use crate::test_utils::{insert_header, validator_utils::*, validators_change_receipt, HeaderBuilder, GAS_LIMIT}; -pub use bp_eth_poa::signatures::secret_to_address; - -use crate::validators::{ValidatorsConfiguration, ValidatorsSource}; -use crate::{AuraConfiguration, ChainTime, Config, GenesisConfig as CrateGenesisConfig, PruningStrategy}; -use bp_eth_poa::{Address, AuraHeader, H256, U256}; -use frame_support::{parameter_types, weights::Weight}; -use secp256k1::SecretKey; -use sp_runtime::{ - testing::Header as SubstrateHeader, - traits::{BlakeTwo256, IdentityLookup}, - Perbill, -}; - -pub type AccountId = u64; - -type Block = frame_system::mocking::MockBlock; -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - -use crate as pallet_ethereum; - -frame_support::construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Ethereum: pallet_ethereum::{Pallet, Call}, - } -} - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} - -impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = SubstrateHeader; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type SS58Prefix = (); - type OnSetCode = (); -} - -parameter_types! { - pub const TestFinalityVotesCachingInterval: Option = Some(16); - pub TestAuraConfiguration: AuraConfiguration = test_aura_config(); - pub TestValidatorsConfiguration: ValidatorsConfiguration = test_validators_config(); -} - -impl Config for TestRuntime { - type AuraConfiguration = TestAuraConfiguration; - type ValidatorsConfiguration = TestValidatorsConfiguration; - type FinalityVotesCachingInterval = TestFinalityVotesCachingInterval; - type PruningStrategy = KeepSomeHeadersBehindBest; - type ChainTime = ConstChainTime; - type OnHeadersSubmitted = (); -} - -/// Test context. -pub struct TestContext { - /// Initial (genesis) header. - pub genesis: AuraHeader, - /// Number of initial validators. - pub total_validators: usize, - /// Secret keys of validators, ordered by validator index. - pub validators: Vec, - /// Addresses of validators, ordered by validator index. - pub addresses: Vec
, -} - -/// Aura configuration that is used in tests by default. -pub fn test_aura_config() -> AuraConfiguration { - AuraConfiguration { - empty_steps_transition: u64::max_value(), - strict_empty_steps_transition: 0, - validate_step_transition: 0x16e360, - validate_score_transition: 0x41a3c4, - two_thirds_majority_transition: u64::max_value(), - min_gas_limit: 0x1388.into(), - max_gas_limit: U256::max_value(), - maximum_extra_data_size: 0x20, - } -} - -/// Validators configuration that is used in tests by default. -pub fn test_validators_config() -> ValidatorsConfiguration { - ValidatorsConfiguration::Single(ValidatorsSource::List(validators_addresses(3))) -} - -/// Genesis header that is used in tests by default. -pub fn genesis() -> AuraHeader { - HeaderBuilder::genesis().sign_by(&validator(0)) -} - -/// Run test with default genesis header. -pub fn run_test(total_validators: usize, test: impl FnOnce(TestContext) -> T) -> T { - run_test_with_genesis(genesis(), total_validators, test) -} - -/// Run test with default genesis header. -pub fn run_test_with_genesis( - genesis: AuraHeader, - total_validators: usize, - test: impl FnOnce(TestContext) -> T, -) -> T { - let validators = validators(total_validators); - let addresses = validators_addresses(total_validators); - sp_io::TestExternalities::new( - CrateGenesisConfig { - initial_header: genesis.clone(), - initial_difficulty: 0.into(), - initial_validators: addresses.clone(), - } - .build_storage::() - .unwrap(), - ) - .execute_with(|| { - test(TestContext { - genesis, - total_validators, - validators, - addresses, - }) - }) -} - -/// Pruning strategy that keeps 10 headers behind best block. -pub struct KeepSomeHeadersBehindBest(pub u64); - -impl Default for KeepSomeHeadersBehindBest { - fn default() -> KeepSomeHeadersBehindBest { - KeepSomeHeadersBehindBest(10) - } -} - -impl PruningStrategy for KeepSomeHeadersBehindBest { - fn pruning_upper_bound(&mut self, best_number: u64, _: u64) -> u64 { - best_number.saturating_sub(self.0) - } -} - -/// Constant chain time -#[derive(Default)] -pub struct ConstChainTime; - -impl ChainTime for ConstChainTime { - fn is_timestamp_ahead(&self, timestamp: u64) -> bool { - let now = i32::max_value() as u64 / 2; - timestamp > now - } -} diff --git a/bridges/modules/ethereum/src/test_utils.rs b/bridges/modules/ethereum/src/test_utils.rs deleted file mode 100644 index 41161089ba6d..000000000000 --- a/bridges/modules/ethereum/src/test_utils.rs +++ /dev/null @@ -1,321 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Utilities for testing and benchmarking the Ethereum Bridge Pallet. -//! -//! Although the name implies that it is used by tests, it shouldn't be be used _directly_ by tests. -//! Instead these utilities should be used by the Mock runtime, which in turn is used by tests. -//! -//! On the other hand, they may be used directly by the bechmarking module. - -// Since this is test code it's fine that not everything is used -#![allow(dead_code)] - -use crate::finality::FinalityVotes; -use crate::validators::CHANGE_EVENT_HASH; -use crate::verification::calculate_score; -use crate::{Config, HeaderToImport, Storage}; - -use bp_eth_poa::{ - rlp_encode, - signatures::{secret_to_address, sign, SignHeader}, - Address, AuraHeader, Bloom, Receipt, SealedEmptyStep, H256, U256, -}; -use secp256k1::SecretKey; -use sp_std::prelude::*; - -/// Gas limit valid in test environment. -pub const GAS_LIMIT: u64 = 0x2000; - -/// Test header builder. -pub struct HeaderBuilder { - header: AuraHeader, - parent_header: AuraHeader, -} - -impl HeaderBuilder { - /// Creates default genesis header. - pub fn genesis() -> Self { - let current_step = 0u64; - Self { - header: AuraHeader { - gas_limit: GAS_LIMIT.into(), - seal: vec![bp_eth_poa::rlp_encode(¤t_step).to_vec(), vec![]], - ..Default::default() - }, - parent_header: Default::default(), - } - } - - /// Creates default header on top of test parent with given hash. - #[cfg(test)] - pub fn with_parent_hash(parent_hash: H256) -> Self { - Self::with_parent_hash_on_runtime::(parent_hash) - } - - /// Creates default header on top of test parent with given number. First parent is selected. - #[cfg(test)] - pub fn with_parent_number(parent_number: u64) -> Self { - Self::with_parent_number_on_runtime::(parent_number) - } - - /// Creates default header on top of parent with given hash. - pub fn with_parent_hash_on_runtime, I: crate::Instance>(parent_hash: H256) -> Self { - use crate::Headers; - use frame_support::StorageMap; - - let parent_header = Headers::::get(&parent_hash).unwrap().header; - Self::with_parent(&parent_header) - } - - /// Creates default header on top of parent with given number. First parent is selected. - pub fn with_parent_number_on_runtime, I: crate::Instance>(parent_number: u64) -> Self { - use crate::HeadersByNumber; - use frame_support::StorageMap; - - let parent_hash = HeadersByNumber::::get(parent_number).unwrap()[0]; - Self::with_parent_hash_on_runtime::(parent_hash) - } - - /// Creates default header on top of non-existent parent. - #[cfg(test)] - pub fn with_number(number: u64) -> Self { - Self::with_parent(&AuraHeader { - number: number - 1, - seal: vec![bp_eth_poa::rlp_encode(&(number - 1)).to_vec(), vec![]], - ..Default::default() - }) - } - - /// Creates default header on top of given parent. - pub fn with_parent(parent_header: &AuraHeader) -> Self { - let parent_step = parent_header.step().unwrap(); - let current_step = parent_step + 1; - Self { - header: AuraHeader { - parent_hash: parent_header.compute_hash(), - number: parent_header.number + 1, - gas_limit: GAS_LIMIT.into(), - seal: vec![bp_eth_poa::rlp_encode(¤t_step).to_vec(), vec![]], - difficulty: calculate_score(parent_step, current_step, 0), - ..Default::default() - }, - parent_header: parent_header.clone(), - } - } - - /// Update step of this header. - pub fn step(mut self, step: u64) -> Self { - let parent_step = self.parent_header.step(); - self.header.seal[0] = rlp_encode(&step).to_vec(); - self.header.difficulty = parent_step - .map(|parent_step| calculate_score(parent_step, step, 0)) - .unwrap_or_default(); - self - } - - /// Adds empty steps to this header. - pub fn empty_steps(mut self, empty_steps: &[(&SecretKey, u64)]) -> Self { - let sealed_empty_steps = empty_steps - .iter() - .map(|(author, step)| { - let mut empty_step = SealedEmptyStep { - step: *step, - signature: Default::default(), - }; - let message = empty_step.message(&self.header.parent_hash); - let signature: [u8; 65] = sign(author, message).into(); - empty_step.signature = signature.into(); - empty_step - }) - .collect::>(); - - // by default in test configuration headers are generated without empty steps seal - if self.header.seal.len() < 3 { - self.header.seal.push(Vec::new()); - } - - self.header.seal[2] = SealedEmptyStep::rlp_of(&sealed_empty_steps); - self - } - - /// Update difficulty field of this header. - pub fn difficulty(mut self, difficulty: U256) -> Self { - self.header.difficulty = difficulty; - self - } - - /// Update extra data field of this header. - pub fn extra_data(mut self, extra_data: Vec) -> Self { - self.header.extra_data = extra_data; - self - } - - /// Update gas limit field of this header. - pub fn gas_limit(mut self, gas_limit: U256) -> Self { - self.header.gas_limit = gas_limit; - self - } - - /// Update gas used field of this header. - pub fn gas_used(mut self, gas_used: U256) -> Self { - self.header.gas_used = gas_used; - self - } - - /// Update log bloom field of this header. - pub fn log_bloom(mut self, log_bloom: Bloom) -> Self { - self.header.log_bloom = log_bloom; - self - } - - /// Update receipts root field of this header. - pub fn receipts_root(mut self, receipts_root: H256) -> Self { - self.header.receipts_root = receipts_root; - self - } - - /// Update timestamp field of this header. - pub fn timestamp(mut self, timestamp: u64) -> Self { - self.header.timestamp = timestamp; - self - } - - /// Update transactions root field of this header. - pub fn transactions_root(mut self, transactions_root: H256) -> Self { - self.header.transactions_root = transactions_root; - self - } - - /// Signs header by given author. - pub fn sign_by(self, author: &SecretKey) -> AuraHeader { - self.header.sign_by(author) - } - - /// Signs header by given authors set. - pub fn sign_by_set(self, authors: &[SecretKey]) -> AuraHeader { - self.header.sign_by_set(authors) - } -} - -/// Helper function for getting a genesis header which has been signed by an authority. -pub fn build_genesis_header(author: &SecretKey) -> AuraHeader { - let genesis = HeaderBuilder::genesis(); - genesis.header.sign_by(author) -} - -/// Helper function for building a custom child header which has been signed by an authority. -pub fn build_custom_header(author: &SecretKey, previous: &AuraHeader, customize_header: F) -> AuraHeader -where - F: FnOnce(AuraHeader) -> AuraHeader, -{ - let new_header = HeaderBuilder::with_parent(previous); - let custom_header = customize_header(new_header.header); - custom_header.sign_by(author) -} - -/// Insert unverified header into storage. -/// -/// This function assumes that the header is signed by validator from the current set. -pub fn insert_header(storage: &mut S, header: AuraHeader) { - let id = header.compute_id(); - let best_finalized = storage.finalized_block(); - let import_context = storage.import_context(None, &header.parent_hash).unwrap(); - let parent_finality_votes = storage.cached_finality_votes(&header.parent_id().unwrap(), &best_finalized, |_| false); - let finality_votes = crate::finality::prepare_votes( - parent_finality_votes, - best_finalized, - &import_context.validators_set().validators.iter().collect(), - id, - &header, - None, - ) - .unwrap(); - - storage.insert_header(HeaderToImport { - context: storage.import_context(None, &header.parent_hash).unwrap(), - is_best: true, - id, - header, - total_difficulty: 0.into(), - enacted_change: None, - scheduled_change: None, - finality_votes, - }); -} - -/// Insert unverified header into storage. -/// -/// No assumptions about header author are made. The cost is that finality votes cache -/// is filled incorrectly, so this function shall not be used if you're going to insert -/// (or import) header descendants. -pub fn insert_dummy_header(storage: &mut S, header: AuraHeader) { - storage.insert_header(HeaderToImport { - context: storage.import_context(None, &header.parent_hash).unwrap(), - is_best: true, - id: header.compute_id(), - header, - total_difficulty: 0.into(), - enacted_change: None, - scheduled_change: None, - finality_votes: FinalityVotes::default(), - }); -} - -pub fn validators_change_receipt(parent_hash: H256) -> Receipt { - use bp_eth_poa::{LogEntry, TransactionOutcome}; - - Receipt { - gas_used: 0.into(), - log_bloom: (&[0xff; 256]).into(), - outcome: TransactionOutcome::Unknown, - logs: vec![LogEntry { - address: [3; 20].into(), - topics: vec![CHANGE_EVENT_HASH.into(), parent_hash], - data: vec![ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - ], - }], - } -} - -pub mod validator_utils { - use super::*; - - /// Return key pair of given test validator. - pub fn validator(index: usize) -> SecretKey { - let mut raw_secret = [0u8; 32]; - raw_secret[..8].copy_from_slice(&(index + 1).to_le_bytes()); - SecretKey::parse(&raw_secret).unwrap() - } - - /// Return key pairs of all test validators. - pub fn validators(count: usize) -> Vec { - (0..count).map(validator).collect() - } - - /// Return address of test validator. - pub fn validator_address(index: usize) -> Address { - secret_to_address(&validator(index)) - } - - /// Return addresses of all test validators. - pub fn validators_addresses(count: usize) -> Vec
{ - (0..count).map(validator_address).collect() - } -} diff --git a/bridges/modules/ethereum/src/validators.rs b/bridges/modules/ethereum/src/validators.rs deleted file mode 100644 index df384cb696c1..000000000000 --- a/bridges/modules/ethereum/src/validators.rs +++ /dev/null @@ -1,473 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::error::Error; -use crate::{ChangeToEnact, Storage}; -use bp_eth_poa::{Address, AuraHeader, HeaderId, LogEntry, Receipt, U256}; -use sp_std::prelude::*; - -/// The hash of InitiateChange event of the validators set contract. -pub(crate) const CHANGE_EVENT_HASH: &[u8; 32] = &[ - 0x55, 0x25, 0x2f, 0xa6, 0xee, 0xe4, 0x74, 0x1b, 0x4e, 0x24, 0xa7, 0x4a, 0x70, 0xe9, 0xc1, 0x1f, 0xd2, 0xc2, 0x28, - 0x1d, 0xf8, 0xd6, 0xea, 0x13, 0x12, 0x6f, 0xf8, 0x45, 0xf7, 0x82, 0x5c, 0x89, -]; - -/// Where source of validators addresses come from. This covers the chain lifetime. -pub enum ValidatorsConfiguration { - /// There's a single source for the whole chain lifetime. - Single(ValidatorsSource), - /// Validators source changes at given blocks. The blocks are ordered - /// by the block number. - Multi(Vec<(u64, ValidatorsSource)>), -} - -/// Where validators addresses come from. -/// -/// This source is valid within some blocks range. The blocks range could -/// cover multiple epochs - i.e. the validators that are authoring blocks -/// within this range could change, but the source itself can not. -#[cfg_attr(any(test, feature = "runtime-benchmarks"), derive(Debug, PartialEq))] -pub enum ValidatorsSource { - /// The validators addresses are hardcoded and never change. - List(Vec
), - /// The validators addresses are determined by the validators set contract - /// deployed at given address. The contract must implement the `ValidatorSet` - /// interface. Additionally, the initial validators set must be provided. - Contract(Address, Vec
), -} - -/// A short hand for optional validators change. -pub type ValidatorsChange = Option>; - -/// Validators manager. -pub struct Validators<'a> { - config: &'a ValidatorsConfiguration, -} - -impl<'a> Validators<'a> { - /// Creates new validators manager using given configuration. - pub fn new(config: &'a ValidatorsConfiguration) -> Self { - Self { config } - } - - /// Returns true if header (probabilistically) signals validators change and - /// the caller needs to provide transactions receipts to import the header. - pub fn maybe_signals_validators_change(&self, header: &AuraHeader) -> bool { - let (_, _, source) = self.source_at(header.number); - - // if we are taking validators set from the fixed list, there's always - // single epoch - // => we never require transactions receipts - let contract_address = match source { - ValidatorsSource::List(_) => return false, - ValidatorsSource::Contract(contract_address, _) => contract_address, - }; - - // else we need to check logs bloom and if it has required bits set, it means - // that the contract has (probably) emitted epoch change event - let expected_bloom = LogEntry { - address: *contract_address, - topics: vec![CHANGE_EVENT_HASH.into(), header.parent_hash], - data: Vec::new(), // irrelevant for bloom. - } - .bloom(); - - header.log_bloom.contains(&expected_bloom) - } - - /// Extracts validators change signal from the header. - /// - /// Returns tuple where first element is the change scheduled by this header - /// (i.e. this change is only applied starting from the block that has finalized - /// current block). The second element is the immediately applied change. - pub fn extract_validators_change( - &self, - header: &AuraHeader, - receipts: Option>, - ) -> Result<(ValidatorsChange, ValidatorsChange), Error> { - // let's first check if new source is starting from this header - let (source_index, _, source) = self.source_at(header.number); - let (next_starts_at, next_source) = self.source_at_next_header(source_index, header.number); - if next_starts_at == header.number { - match *next_source { - ValidatorsSource::List(ref new_list) => return Ok((None, Some(new_list.clone()))), - ValidatorsSource::Contract(_, ref new_list) => return Ok((Some(new_list.clone()), None)), - } - } - - // else deal with previous source - // - // if we are taking validators set from the fixed list, there's always - // single epoch - // => we never require transactions receipts - let contract_address = match source { - ValidatorsSource::List(_) => return Ok((None, None)), - ValidatorsSource::Contract(contract_address, _) => contract_address, - }; - - // else we need to check logs bloom and if it has required bits set, it means - // that the contract has (probably) emitted epoch change event - let expected_bloom = LogEntry { - address: *contract_address, - topics: vec![CHANGE_EVENT_HASH.into(), header.parent_hash], - data: Vec::new(), // irrelevant for bloom. - } - .bloom(); - - if !header.log_bloom.contains(&expected_bloom) { - return Ok((None, None)); - } - - let receipts = receipts.ok_or(Error::MissingTransactionsReceipts)?; - if header.check_receipts_root(&receipts).is_err() { - return Err(Error::TransactionsReceiptsMismatch); - } - - // iterate in reverse because only the _last_ change in a given - // block actually has any effect - Ok(( - receipts - .iter() - .rev() - .filter(|r| r.log_bloom.contains(&expected_bloom)) - .flat_map(|r| r.logs.iter()) - .filter(|l| { - l.address == *contract_address - && l.topics.len() == 2 && l.topics[0].as_fixed_bytes() == CHANGE_EVENT_HASH - && l.topics[1] == header.parent_hash - }) - .filter_map(|l| { - let data_len = l.data.len(); - if data_len < 64 { - return None; - } - - let new_validators_len_u256 = U256::from_big_endian(&l.data[32..64]); - let new_validators_len = new_validators_len_u256.low_u64(); - if new_validators_len_u256 != new_validators_len.into() { - return None; - } - - if (data_len - 64) as u64 != new_validators_len.saturating_mul(32) { - return None; - } - - Some( - l.data[64..] - .chunks(32) - .map(|chunk| { - let mut new_validator = Address::default(); - new_validator.as_mut().copy_from_slice(&chunk[12..32]); - new_validator - }) - .collect(), - ) - }) - .next(), - None, - )) - } - - /// Finalize changes when blocks are finalized. - pub fn finalize_validators_change( - &self, - storage: &S, - finalized_blocks: &[(HeaderId, Option)], - ) -> Option { - // if we haven't finalized any blocks, no changes may be finalized - let newest_finalized_id = finalized_blocks.last().map(|(id, _)| id)?; - let oldest_finalized_id = finalized_blocks - .first() - .map(|(id, _)| id) - .expect("finalized_blocks is not empty; qed"); - - // try to directly go to the header that has scheduled last change - // - // if we're unable to create import context for some block, it means - // that the header has already been pruned => it and its ancestors had - // no scheduled changes - // - // if we're unable to find scheduled changes for some block, it means - // that these changes have been finalized already - storage - .import_context(None, &newest_finalized_id.hash) - .and_then(|context| context.last_signal_block()) - .and_then(|signal_block| { - if signal_block.number >= oldest_finalized_id.number { - Some(signal_block) - } else { - None - } - }) - .and_then(|signal_block| { - storage - .scheduled_change(&signal_block.hash) - .map(|change| ChangeToEnact { - signal_block: Some(signal_block), - validators: change.validators, - }) - }) - } - - /// Returns source of validators that should author the header. - fn source_at(&self, header_number: u64) -> (usize, u64, &ValidatorsSource) { - match self.config { - ValidatorsConfiguration::Single(ref source) => (0, 0, source), - ValidatorsConfiguration::Multi(ref sources) => sources - .iter() - .rev() - .enumerate() - .find(|(_, &(begin, _))| begin < header_number) - .map(|(i, (begin, source))| (sources.len() - 1 - i, *begin, source)) - .expect( - "there's always entry for the initial block;\ - we do not touch any headers with number < initial block number; qed", - ), - } - } - - /// Returns source of validators that should author the next header. - fn source_at_next_header(&self, header_source_index: usize, header_number: u64) -> (u64, &ValidatorsSource) { - match self.config { - ValidatorsConfiguration::Single(ref source) => (0, source), - ValidatorsConfiguration::Multi(ref sources) => { - let next_source_index = header_source_index + 1; - if next_source_index < sources.len() { - let next_source = &sources[next_source_index]; - if next_source.0 < header_number + 1 { - return (next_source.0, &next_source.1); - } - } - - let source = &sources[header_source_index]; - (source.0, &source.1) - } - } - } -} - -impl ValidatorsSource { - /// Returns initial validators set. - pub fn initial_epoch_validators(&self) -> Vec
{ - match self { - ValidatorsSource::List(ref list) => list.clone(), - ValidatorsSource::Contract(_, ref list) => list.clone(), - } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use crate::mock::{run_test, validators_addresses, validators_change_receipt, TestRuntime}; - use crate::DefaultInstance; - use crate::{AuraScheduledChange, BridgeStorage, Headers, ScheduledChanges, StoredHeader}; - use bp_eth_poa::compute_merkle_root; - use frame_support::StorageMap; - - const TOTAL_VALIDATORS: usize = 3; - - #[test] - fn source_at_works() { - let config = ValidatorsConfiguration::Multi(vec![ - (0, ValidatorsSource::List(vec![[1; 20].into()])), - (100, ValidatorsSource::List(vec![[2; 20].into()])), - (200, ValidatorsSource::Contract([3; 20].into(), vec![[3; 20].into()])), - ]); - let validators = Validators::new(&config); - - assert_eq!( - validators.source_at(99), - (0, 0, &ValidatorsSource::List(vec![[1; 20].into()])), - ); - assert_eq!( - validators.source_at_next_header(0, 99), - (0, &ValidatorsSource::List(vec![[1; 20].into()])), - ); - - assert_eq!( - validators.source_at(100), - (0, 0, &ValidatorsSource::List(vec![[1; 20].into()])), - ); - assert_eq!( - validators.source_at_next_header(0, 100), - (100, &ValidatorsSource::List(vec![[2; 20].into()])), - ); - - assert_eq!( - validators.source_at(200), - (1, 100, &ValidatorsSource::List(vec![[2; 20].into()])), - ); - assert_eq!( - validators.source_at_next_header(1, 200), - (200, &ValidatorsSource::Contract([3; 20].into(), vec![[3; 20].into()])), - ); - } - - #[test] - fn maybe_signals_validators_change_works() { - // when contract is active, but bloom has no required bits set - let config = ValidatorsConfiguration::Single(ValidatorsSource::Contract(Default::default(), Vec::new())); - let validators = Validators::new(&config); - let mut header = AuraHeader { - number: u64::max_value(), - ..Default::default() - }; - assert!(!validators.maybe_signals_validators_change(&header)); - - // when contract is active and bloom has required bits set - header.log_bloom = (&[0xff; 256]).into(); - assert!(validators.maybe_signals_validators_change(&header)); - - // when list is active and bloom has required bits set - let config = ValidatorsConfiguration::Single(ValidatorsSource::List(vec![[42; 20].into()])); - let validators = Validators::new(&config); - assert!(!validators.maybe_signals_validators_change(&header)); - } - - #[test] - fn extract_validators_change_works() { - let config = ValidatorsConfiguration::Multi(vec![ - (0, ValidatorsSource::List(vec![[1; 20].into()])), - (100, ValidatorsSource::List(vec![[2; 20].into()])), - (200, ValidatorsSource::Contract([3; 20].into(), vec![[3; 20].into()])), - ]); - let validators = Validators::new(&config); - let mut header = AuraHeader { - number: 100, - ..Default::default() - }; - - // when we're at the block that switches to list source - assert_eq!( - validators.extract_validators_change(&header, None), - Ok((None, Some(vec![[2; 20].into()]))), - ); - - // when we're inside list range - header.number = 150; - assert_eq!(validators.extract_validators_change(&header, None), Ok((None, None)),); - - // when we're at the block that switches to contract source - header.number = 200; - assert_eq!( - validators.extract_validators_change(&header, None), - Ok((Some(vec![[3; 20].into()]), None)), - ); - - // when we're inside contract range and logs bloom signals change - // but we have no receipts - header.number = 250; - header.log_bloom = (&[0xff; 256]).into(); - assert_eq!( - validators.extract_validators_change(&header, None), - Err(Error::MissingTransactionsReceipts), - ); - - // when we're inside contract range and logs bloom signals change - // but there's no change in receipts - header.receipts_root = "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" - .parse() - .unwrap(); - assert_eq!( - validators.extract_validators_change(&header, Some(Vec::new())), - Ok((None, None)), - ); - - // when we're inside contract range and logs bloom signals change - // and there's change in receipts - let receipts = vec![validators_change_receipt(Default::default())]; - header.receipts_root = compute_merkle_root(receipts.iter().map(|r| r.rlp())); - assert_eq!( - validators.extract_validators_change(&header, Some(receipts)), - Ok((Some(vec![[7; 20].into()]), None)), - ); - - // when incorrect receipts root passed - assert_eq!( - validators.extract_validators_change(&header, Some(Vec::new())), - Err(Error::TransactionsReceiptsMismatch), - ); - } - - fn try_finalize_with_scheduled_change(scheduled_at: Option) -> Option { - run_test(TOTAL_VALIDATORS, |_| { - let config = ValidatorsConfiguration::Single(ValidatorsSource::Contract(Default::default(), Vec::new())); - let validators = Validators::new(&config); - let storage = BridgeStorage::::new(); - - // when we're finailizing blocks 10...100 - let id10 = HeaderId { - number: 10, - hash: [10; 32].into(), - }; - let id100 = HeaderId { - number: 100, - hash: [100; 32].into(), - }; - let finalized_blocks = vec![(id10, None), (id100, None)]; - let header100 = StoredHeader:: { - submitter: None, - header: AuraHeader { - number: 100, - ..Default::default() - }, - total_difficulty: 0.into(), - next_validators_set_id: 0, - last_signal_block: scheduled_at, - }; - let scheduled_change = AuraScheduledChange { - validators: validators_addresses(1), - prev_signal_block: None, - }; - Headers::::insert(id100.hash, header100); - if let Some(scheduled_at) = scheduled_at { - ScheduledChanges::::insert(scheduled_at.hash, scheduled_change); - } - - validators.finalize_validators_change(&storage, &finalized_blocks) - }) - } - - #[test] - fn finalize_validators_change_finalizes_scheduled_change() { - let id50 = HeaderId { - number: 50, - ..Default::default() - }; - assert_eq!( - try_finalize_with_scheduled_change(Some(id50)), - Some(ChangeToEnact { - signal_block: Some(id50), - validators: validators_addresses(1), - }), - ); - } - - #[test] - fn finalize_validators_change_does_not_finalize_when_changes_are_not_scheduled() { - assert_eq!(try_finalize_with_scheduled_change(None), None,); - } - - #[test] - fn finalize_validators_change_does_not_finalize_changes_when_they_are_outside_of_range() { - let id5 = HeaderId { - number: 5, - ..Default::default() - }; - assert_eq!(try_finalize_with_scheduled_change(Some(id5)), None,); - } -} diff --git a/bridges/modules/ethereum/src/verification.rs b/bridges/modules/ethereum/src/verification.rs deleted file mode 100644 index c8c4deca87f1..000000000000 --- a/bridges/modules/ethereum/src/verification.rs +++ /dev/null @@ -1,945 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::error::Error; -use crate::validators::{Validators, ValidatorsConfiguration}; -use crate::{AuraConfiguration, AuraScheduledChange, ChainTime, ImportContext, PoolConfiguration, Storage}; -use bp_eth_poa::{ - public_to_address, step_validator, Address, AuraHeader, HeaderId, Receipt, SealedEmptyStep, H256, H520, U128, U256, -}; -use codec::Encode; -use sp_io::crypto::secp256k1_ecdsa_recover; -use sp_runtime::transaction_validity::TransactionTag; -use sp_std::{vec, vec::Vec}; - -/// Pre-check to see if should try and import this header. -/// Returns error if we should not try to import this block. -/// Returns ID of passed header and best finalized header. -pub fn is_importable_header(storage: &S, header: &AuraHeader) -> Result<(HeaderId, HeaderId), Error> { - // we never import any header that competes with finalized header - let finalized_id = storage.finalized_block(); - if header.number <= finalized_id.number { - return Err(Error::AncientHeader); - } - // we never import any header with known hash - let id = header.compute_id(); - if storage.header(&id.hash).is_some() { - return Err(Error::KnownHeader); - } - - Ok((id, finalized_id)) -} - -/// Try accept unsigned aura header into transaction pool. -/// -/// Returns required and provided tags. -pub fn accept_aura_header_into_pool( - storage: &S, - config: &AuraConfiguration, - validators_config: &ValidatorsConfiguration, - pool_config: &PoolConfiguration, - header: &AuraHeader, - chain_time: &CT, - receipts: Option<&Vec>, -) -> Result<(Vec, Vec), Error> { - // check if we can verify further - let (header_id, _) = is_importable_header(storage, header)?; - - // we can always do contextless checks - contextless_checks(config, header, chain_time)?; - - // we want to avoid having same headers twice in the pool - // => we're strict about receipts here - if we need them, we require receipts to be Some, - // otherwise we require receipts to be None - let receipts_required = Validators::new(validators_config).maybe_signals_validators_change(header); - match (receipts_required, receipts.is_some()) { - (true, false) => return Err(Error::MissingTransactionsReceipts), - (false, true) => return Err(Error::RedundantTransactionsReceipts), - _ => (), - } - - // we do not want to have all future headers in the pool at once - // => if we see header with number > maximal ever seen header number + LIMIT, - // => we consider this transaction invalid, but only at this moment (we do not want to ban it) - // => let's mark it as Unknown transaction - let (best_id, _) = storage.best_block(); - let difference = header.number.saturating_sub(best_id.number); - if difference > pool_config.max_future_number_difference { - return Err(Error::UnsignedTooFarInTheFuture); - } - - // TODO: only accept new headers when we're at the tip of PoA chain - // https://github.com/paritytech/parity-bridges-common/issues/38 - - // we want to see at most one header with given number from single authority - // => every header is providing tag (block_number + authority) - // => since only one tx in the pool can provide the same tag, they're auto-deduplicated - let provides_number_and_authority_tag = (header.number, header.author).encode(); - - // we want to see several 'future' headers in the pool at once, but we may not have access to - // previous headers here - // => we can at least 'verify' that headers comprise a chain by providing and requiring - // tag (header.number, header.hash) - let provides_header_number_and_hash_tag = header_id.encode(); - - // depending on whether parent header is available, we either perform full or 'shortened' check - let context = storage.import_context(None, &header.parent_hash); - let tags = match context { - Some(context) => { - let header_step = contextual_checks(config, &context, None, header)?; - validator_checks(config, &context.validators_set().validators, header, header_step)?; - - // since our parent is already in the storage, we do not require it - // to be in the transaction pool - ( - vec![], - vec![provides_number_and_authority_tag, provides_header_number_and_hash_tag], - ) - } - None => { - // we know nothing about parent header - // => the best thing we can do is to believe that there are no forks in - // PoA chain AND that the header is produced either by previous, or next - // scheduled validators set change - let header_step = header.step().ok_or(Error::MissingStep)?; - let best_context = storage.import_context(None, &best_id.hash).expect( - "import context is None only when header is missing from the storage;\ - best header is always in the storage; qed", - ); - let validators_check_result = - validator_checks(config, &best_context.validators_set().validators, header, header_step); - if let Err(error) = validators_check_result { - find_next_validators_signal(storage, &best_context) - .ok_or(error) - .and_then(|next_validators| validator_checks(config, &next_validators, header, header_step))?; - } - - // since our parent is missing from the storage, we **DO** require it - // to be in the transaction pool - // (- 1 can't underflow because there's always best block in the header) - let requires_header_number_and_hash_tag = HeaderId { - number: header.number - 1, - hash: header.parent_hash, - } - .encode(); - ( - vec![requires_header_number_and_hash_tag], - vec![provides_number_and_authority_tag, provides_header_number_and_hash_tag], - ) - } - }; - - // the heaviest, but rare operation - we do not want invalid receipts in the pool - if let Some(receipts) = receipts { - log::trace!(target: "runtime", "Got receipts! {:?}", receipts); - if header.check_receipts_root(receipts).is_err() { - return Err(Error::TransactionsReceiptsMismatch); - } - } - - Ok(tags) -} - -/// Verify header by Aura rules. -pub fn verify_aura_header( - storage: &S, - config: &AuraConfiguration, - submitter: Option, - header: &AuraHeader, - chain_time: &CT, -) -> Result, Error> { - // let's do the lightest check first - contextless_checks(config, header, chain_time)?; - - // the rest of checks requires access to the parent header - let context = storage.import_context(submitter, &header.parent_hash).ok_or_else(|| { - log::warn!( - target: "runtime", - "Missing parent PoA block: ({:?}, {})", - header.number.checked_sub(1), - header.parent_hash, - ); - - Error::MissingParentBlock - })?; - let header_step = contextual_checks(config, &context, None, header)?; - validator_checks(config, &context.validators_set().validators, header, header_step)?; - - Ok(context) -} - -/// Perform basic checks that only require header itself. -fn contextless_checks( - config: &AuraConfiguration, - header: &AuraHeader, - chain_time: &CT, -) -> Result<(), Error> { - let expected_seal_fields = expected_header_seal_fields(config, header); - if header.seal.len() != expected_seal_fields { - return Err(Error::InvalidSealArity); - } - if header.number >= u64::max_value() { - return Err(Error::RidiculousNumber); - } - if header.gas_used > header.gas_limit { - return Err(Error::TooMuchGasUsed); - } - if header.gas_limit < config.min_gas_limit { - return Err(Error::InvalidGasLimit); - } - if header.gas_limit > config.max_gas_limit { - return Err(Error::InvalidGasLimit); - } - if header.number != 0 && header.extra_data.len() as u64 > config.maximum_extra_data_size { - return Err(Error::ExtraDataOutOfBounds); - } - - // we can't detect if block is from future in runtime - // => let's only do an overflow check - if header.timestamp > i32::max_value() as u64 { - return Err(Error::TimestampOverflow); - } - - if chain_time.is_timestamp_ahead(header.timestamp) { - return Err(Error::HeaderTimestampIsAhead); - } - - Ok(()) -} - -/// Perform checks that require access to parent header. -fn contextual_checks( - config: &AuraConfiguration, - context: &ImportContext, - validators_override: Option<&[Address]>, - header: &AuraHeader, -) -> Result { - let validators = validators_override.unwrap_or_else(|| &context.validators_set().validators); - let header_step = header.step().ok_or(Error::MissingStep)?; - let parent_step = context.parent_header().step().ok_or(Error::MissingStep)?; - - // Ensure header is from the step after context. - if header_step == parent_step { - return Err(Error::DoubleVote); - } - #[allow(clippy::suspicious_operation_groupings)] - if header.number >= config.validate_step_transition && header_step < parent_step { - return Err(Error::DoubleVote); - } - - // If empty step messages are enabled we will validate the messages in the seal, missing messages are not - // reported as there's no way to tell whether the empty step message was never sent or simply not included. - let empty_steps_len = match header.number >= config.empty_steps_transition { - true => { - let strict_empty_steps = header.number >= config.strict_empty_steps_transition; - let empty_steps = header.empty_steps().ok_or(Error::MissingEmptySteps)?; - let empty_steps_len = empty_steps.len(); - let mut prev_empty_step = 0; - - for empty_step in empty_steps { - if empty_step.step <= parent_step || empty_step.step >= header_step { - return Err(Error::InsufficientProof); - } - - if !verify_empty_step(&header.parent_hash, &empty_step, validators) { - return Err(Error::InsufficientProof); - } - - if strict_empty_steps { - if empty_step.step <= prev_empty_step { - return Err(Error::InsufficientProof); - } - - prev_empty_step = empty_step.step; - } - } - - empty_steps_len - } - false => 0, - }; - - // Validate chain score. - if header.number >= config.validate_score_transition { - let expected_difficulty = calculate_score(parent_step, header_step, empty_steps_len as _); - if header.difficulty != expected_difficulty { - return Err(Error::InvalidDifficulty); - } - } - - Ok(header_step) -} - -/// Check that block is produced by expected validator. -fn validator_checks( - config: &AuraConfiguration, - validators: &[Address], - header: &AuraHeader, - header_step: u64, -) -> Result<(), Error> { - let expected_validator = *step_validator(validators, header_step); - if header.author != expected_validator { - return Err(Error::NotValidator); - } - - let validator_signature = header.signature().ok_or(Error::MissingSignature)?; - let header_seal_hash = header - .seal_hash(header.number >= config.empty_steps_transition) - .ok_or(Error::MissingEmptySteps)?; - let is_invalid_proposer = !verify_signature(&expected_validator, &validator_signature, &header_seal_hash); - if is_invalid_proposer { - return Err(Error::NotValidator); - } - - Ok(()) -} - -/// Returns expected number of seal fields in the header. -fn expected_header_seal_fields(config: &AuraConfiguration, header: &AuraHeader) -> usize { - if header.number != u64::max_value() && header.number >= config.empty_steps_transition { - 3 - } else { - 2 - } -} - -/// Verify single sealed empty step. -fn verify_empty_step(parent_hash: &H256, step: &SealedEmptyStep, validators: &[Address]) -> bool { - let expected_validator = *step_validator(validators, step.step); - let message = step.message(parent_hash); - verify_signature(&expected_validator, &step.signature, &message) -} - -/// Chain scoring: total weight is sqrt(U256::max_value())*height - step -pub(crate) fn calculate_score(parent_step: u64, current_step: u64, current_empty_steps: usize) -> U256 { - U256::from(U128::max_value()) + U256::from(parent_step) - U256::from(current_step) + U256::from(current_empty_steps) -} - -/// Verify that the signature over message has been produced by given validator. -fn verify_signature(expected_validator: &Address, signature: &H520, message: &H256) -> bool { - secp256k1_ecdsa_recover(signature.as_fixed_bytes(), message.as_fixed_bytes()) - .map(|public| public_to_address(&public)) - .map(|address| *expected_validator == address) - .unwrap_or(false) -} - -/// Find next unfinalized validators set change after finalized set. -fn find_next_validators_signal(storage: &S, context: &ImportContext) -> Option> { - // that's the earliest block number we may met in following loop - // it may be None if that's the first set - let best_set_signal_block = context.validators_set().signal_block; - - // if parent schedules validators set change, then it may be our set - // else we'll start with last known change - let mut current_set_signal_block = context.last_signal_block(); - let mut next_scheduled_set: Option = None; - - loop { - // if we have reached block that signals finalized change, then - // next_current_block_hash points to the block that schedules next - // change - let current_scheduled_set = match current_set_signal_block { - Some(current_set_signal_block) if Some(¤t_set_signal_block) == best_set_signal_block.as_ref() => { - return next_scheduled_set.map(|scheduled_set| scheduled_set.validators) - } - None => return next_scheduled_set.map(|scheduled_set| scheduled_set.validators), - Some(current_set_signal_block) => storage.scheduled_change(¤t_set_signal_block.hash).expect( - "header that is associated with this change is not pruned;\ - scheduled changes are only removed when header is pruned; qed", - ), - }; - - current_set_signal_block = current_scheduled_set.prev_signal_block; - next_scheduled_set = Some(current_scheduled_set); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{ - insert_header, run_test_with_genesis, test_aura_config, validator, validator_address, validators_addresses, - validators_change_receipt, AccountId, ConstChainTime, HeaderBuilder, TestRuntime, GAS_LIMIT, - }; - use crate::validators::ValidatorsSource; - use crate::DefaultInstance; - use crate::{ - pool_configuration, BridgeStorage, FinalizedBlock, Headers, HeadersByNumber, NextValidatorsSetId, - ScheduledChanges, ValidatorsSet, ValidatorsSets, - }; - use bp_eth_poa::{compute_merkle_root, rlp_encode, TransactionOutcome, H520, U256}; - use frame_support::{StorageMap, StorageValue}; - use hex_literal::hex; - use secp256k1::SecretKey; - use sp_runtime::transaction_validity::TransactionTag; - - const GENESIS_STEP: u64 = 42; - const TOTAL_VALIDATORS: usize = 3; - - fn genesis() -> AuraHeader { - HeaderBuilder::genesis().step(GENESIS_STEP).sign_by(&validator(0)) - } - - fn verify_with_config(config: &AuraConfiguration, header: &AuraHeader) -> Result, Error> { - run_test_with_genesis(genesis(), TOTAL_VALIDATORS, |_| { - let storage = BridgeStorage::::new(); - verify_aura_header(&storage, config, None, header, &ConstChainTime::default()) - }) - } - - fn default_verify(header: &AuraHeader) -> Result, Error> { - verify_with_config(&test_aura_config(), header) - } - - fn default_accept_into_pool( - mut make_header: impl FnMut(&[SecretKey]) -> (AuraHeader, Option>), - ) -> Result<(Vec, Vec), Error> { - run_test_with_genesis(genesis(), TOTAL_VALIDATORS, |_| { - let validators = vec![validator(0), validator(1), validator(2)]; - let mut storage = BridgeStorage::::new(); - let block1 = HeaderBuilder::with_parent_number(0).sign_by_set(&validators); - insert_header(&mut storage, block1); - let block2 = HeaderBuilder::with_parent_number(1).sign_by_set(&validators); - let block2_id = block2.compute_id(); - insert_header(&mut storage, block2); - let block3 = HeaderBuilder::with_parent_number(2).sign_by_set(&validators); - insert_header(&mut storage, block3); - - FinalizedBlock::::put(block2_id); - - let validators_config = - ValidatorsConfiguration::Single(ValidatorsSource::Contract(Default::default(), Vec::new())); - let (header, receipts) = make_header(&validators); - accept_aura_header_into_pool( - &storage, - &test_aura_config(), - &validators_config, - &pool_configuration(), - &header, - &(), - receipts.as_ref(), - ) - }) - } - - fn change_validators_set_at(number: u64, finalized_set: Vec
, signalled_set: Option>) { - let set_id = NextValidatorsSetId::::get(); - NextValidatorsSetId::::put(set_id + 1); - ValidatorsSets::::insert( - set_id, - ValidatorsSet { - validators: finalized_set, - signal_block: None, - enact_block: HeaderId { - number: 0, - hash: HeadersByNumber::::get(&0).unwrap()[0], - }, - }, - ); - - let header_hash = HeadersByNumber::::get(&number).unwrap()[0]; - let mut header = Headers::::get(&header_hash).unwrap(); - header.next_validators_set_id = set_id; - if let Some(signalled_set) = signalled_set { - header.last_signal_block = Some(HeaderId { - number: header.header.number - 1, - hash: header.header.parent_hash, - }); - ScheduledChanges::::insert( - header.header.parent_hash, - AuraScheduledChange { - validators: signalled_set, - prev_signal_block: None, - }, - ); - } - - Headers::::insert(header_hash, header); - } - - #[test] - fn verifies_seal_count() { - // when there are no seals at all - let mut header = AuraHeader::default(); - assert_eq!(default_verify(&header), Err(Error::InvalidSealArity)); - - // when there's single seal (we expect 2 or 3 seals) - header.seal = vec![vec![]]; - assert_eq!(default_verify(&header), Err(Error::InvalidSealArity)); - - // when there's 3 seals (we expect 2 by default) - header.seal = vec![vec![], vec![], vec![]]; - assert_eq!(default_verify(&header), Err(Error::InvalidSealArity)); - - // when there's 2 seals - header.seal = vec![vec![], vec![]]; - assert_ne!(default_verify(&header), Err(Error::InvalidSealArity)); - } - - #[test] - fn verifies_header_number() { - // when number is u64::max_value() - let header = HeaderBuilder::with_number(u64::max_value()).sign_by(&validator(0)); - assert_eq!(default_verify(&header), Err(Error::RidiculousNumber)); - - // when header is < u64::max_value() - let header = HeaderBuilder::with_number(u64::max_value() - 1).sign_by(&validator(0)); - assert_ne!(default_verify(&header), Err(Error::RidiculousNumber)); - } - - #[test] - fn verifies_gas_used() { - // when gas used is larger than gas limit - let header = HeaderBuilder::with_number(1) - .gas_used((GAS_LIMIT + 1).into()) - .sign_by(&validator(0)); - assert_eq!(default_verify(&header), Err(Error::TooMuchGasUsed)); - - // when gas used is less than gas limit - let header = HeaderBuilder::with_number(1) - .gas_used((GAS_LIMIT - 1).into()) - .sign_by(&validator(0)); - assert_ne!(default_verify(&header), Err(Error::TooMuchGasUsed)); - } - - #[test] - fn verifies_gas_limit() { - let mut config = test_aura_config(); - config.min_gas_limit = 100.into(); - config.max_gas_limit = 200.into(); - - // when limit is lower than expected - let header = HeaderBuilder::with_number(1) - .gas_limit(50.into()) - .sign_by(&validator(0)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InvalidGasLimit)); - - // when limit is larger than expected - let header = HeaderBuilder::with_number(1) - .gas_limit(250.into()) - .sign_by(&validator(0)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InvalidGasLimit)); - - // when limit is within expected range - let header = HeaderBuilder::with_number(1) - .gas_limit(150.into()) - .sign_by(&validator(0)); - assert_ne!(verify_with_config(&config, &header), Err(Error::InvalidGasLimit)); - } - - #[test] - fn verifies_extra_data_len() { - // when extra data is too large - let header = HeaderBuilder::with_number(1) - .extra_data(std::iter::repeat(42).take(1000).collect::>()) - .sign_by(&validator(0)); - assert_eq!(default_verify(&header), Err(Error::ExtraDataOutOfBounds)); - - // when extra data size is OK - let header = HeaderBuilder::with_number(1) - .extra_data(std::iter::repeat(42).take(10).collect::>()) - .sign_by(&validator(0)); - assert_ne!(default_verify(&header), Err(Error::ExtraDataOutOfBounds)); - } - - #[test] - fn verifies_timestamp() { - // when timestamp overflows i32 - let header = HeaderBuilder::with_number(1) - .timestamp(i32::max_value() as u64 + 1) - .sign_by(&validator(0)); - assert_eq!(default_verify(&header), Err(Error::TimestampOverflow)); - - // when timestamp doesn't overflow i32 - let header = HeaderBuilder::with_number(1) - .timestamp(i32::max_value() as u64) - .sign_by(&validator(0)); - assert_ne!(default_verify(&header), Err(Error::TimestampOverflow)); - } - - #[test] - fn verifies_chain_time() { - // expected import context after verification - let expect = ImportContext:: { - submitter: None, - parent_hash: hex!("6e41bff05578fc1db17f6816117969b07d2217f1f9039d8116a82764335991d3").into(), - parent_header: genesis(), - parent_total_difficulty: U256::zero(), - parent_scheduled_change: None, - validators_set_id: 0, - validators_set: ValidatorsSet { - validators: vec![ - hex!("dc5b20847f43d67928f49cd4f85d696b5a7617b5").into(), - hex!("897df33a7b3c62ade01e22c13d48f98124b4480f").into(), - hex!("05c987b34c6ef74e0c7e69c6e641120c24164c2d").into(), - ], - signal_block: None, - enact_block: HeaderId { - number: 0, - hash: hex!("6e41bff05578fc1db17f6816117969b07d2217f1f9039d8116a82764335991d3").into(), - }, - }, - last_signal_block: None, - }; - - // header is behind - let header = HeaderBuilder::with_parent(&genesis()) - .timestamp(i32::max_value() as u64 / 2 - 100) - .sign_by(&validator(1)); - assert_eq!(default_verify(&header).unwrap(), expect); - - // header is ahead - let header = HeaderBuilder::with_parent(&genesis()) - .timestamp(i32::max_value() as u64 / 2 + 100) - .sign_by(&validator(1)); - assert_eq!(default_verify(&header), Err(Error::HeaderTimestampIsAhead)); - - // header has same timestamp as ConstChainTime - let header = HeaderBuilder::with_parent(&genesis()) - .timestamp(i32::max_value() as u64 / 2) - .sign_by(&validator(1)); - assert_eq!(default_verify(&header).unwrap(), expect); - } - - #[test] - fn verifies_parent_existence() { - // when there's no parent in the storage - let header = HeaderBuilder::with_number(1).sign_by(&validator(0)); - assert_eq!(default_verify(&header), Err(Error::MissingParentBlock)); - - // when parent is in the storage - let header = HeaderBuilder::with_parent(&genesis()).sign_by(&validator(0)); - assert_ne!(default_verify(&header), Err(Error::MissingParentBlock)); - } - - #[test] - fn verifies_step() { - // when step is missing from seals - let mut header = AuraHeader { - seal: vec![vec![], vec![]], - gas_limit: test_aura_config().min_gas_limit, - parent_hash: genesis().compute_hash(), - ..Default::default() - }; - assert_eq!(default_verify(&header), Err(Error::MissingStep)); - - // when step is the same as for the parent block - header.seal[0] = rlp_encode(&42u64).to_vec(); - assert_eq!(default_verify(&header), Err(Error::DoubleVote)); - - // when step is OK - header.seal[0] = rlp_encode(&43u64).to_vec(); - assert_ne!(default_verify(&header), Err(Error::DoubleVote)); - - // now check with validate_step check enabled - let mut config = test_aura_config(); - config.validate_step_transition = 0; - - // when step is lesser that for the parent block - header.seal[0] = rlp_encode(&40u64).to_vec(); - header.seal = vec![vec![40], vec![]]; - assert_eq!(verify_with_config(&config, &header), Err(Error::DoubleVote)); - - // when step is OK - header.seal[0] = rlp_encode(&44u64).to_vec(); - assert_ne!(verify_with_config(&config, &header), Err(Error::DoubleVote)); - } - - #[test] - fn verifies_empty_step() { - let mut config = test_aura_config(); - config.empty_steps_transition = 0; - - // when empty step duplicates parent step - let header = HeaderBuilder::with_parent(&genesis()) - .empty_steps(&[(&validator(0), GENESIS_STEP)]) - .step(GENESIS_STEP + 3) - .sign_by(&validator(3)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InsufficientProof)); - - // when empty step signature check fails - let header = HeaderBuilder::with_parent(&genesis()) - .empty_steps(&[(&validator(100), GENESIS_STEP + 1)]) - .step(GENESIS_STEP + 3) - .sign_by(&validator(3)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InsufficientProof)); - - // when we are accepting strict empty steps and they come not in order - config.strict_empty_steps_transition = 0; - let header = HeaderBuilder::with_parent(&genesis()) - .empty_steps(&[(&validator(2), GENESIS_STEP + 2), (&validator(1), GENESIS_STEP + 1)]) - .step(GENESIS_STEP + 3) - .sign_by(&validator(3)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InsufficientProof)); - - // when empty steps are OK - let header = HeaderBuilder::with_parent(&genesis()) - .empty_steps(&[(&validator(1), GENESIS_STEP + 1), (&validator(2), GENESIS_STEP + 2)]) - .step(GENESIS_STEP + 3) - .sign_by(&validator(3)); - assert_ne!(verify_with_config(&config, &header), Err(Error::InsufficientProof)); - } - - #[test] - fn verifies_chain_score() { - let mut config = test_aura_config(); - config.validate_score_transition = 0; - - // when chain score is invalid - let header = HeaderBuilder::with_parent(&genesis()) - .difficulty(100.into()) - .sign_by(&validator(0)); - assert_eq!(verify_with_config(&config, &header), Err(Error::InvalidDifficulty)); - - // when chain score is accepted - let header = HeaderBuilder::with_parent(&genesis()).sign_by(&validator(0)); - assert_ne!(verify_with_config(&config, &header), Err(Error::InvalidDifficulty)); - } - - #[test] - fn verifies_validator() { - let good_header = HeaderBuilder::with_parent(&genesis()).sign_by(&validator(1)); - - // when header author is invalid - let mut header = good_header.clone(); - header.author = Default::default(); - assert_eq!(default_verify(&header), Err(Error::NotValidator)); - - // when header signature is invalid - let mut header = good_header.clone(); - header.seal[1] = rlp_encode(&H520::default()).to_vec(); - assert_eq!(default_verify(&header), Err(Error::NotValidator)); - - // when everything is OK - assert_eq!(default_verify(&good_header).map(|_| ()), Ok(())); - } - - #[test] - fn pool_verifies_known_blocks() { - // when header is known - assert_eq!( - default_accept_into_pool(|validators| (HeaderBuilder::with_parent_number(2).sign_by_set(validators), None)), - Err(Error::KnownHeader), - ); - } - - #[test] - fn pool_verifies_ancient_blocks() { - // when header number is less than finalized - assert_eq!( - default_accept_into_pool(|validators| ( - HeaderBuilder::with_parent_number(1) - .gas_limit((GAS_LIMIT + 1).into()) - .sign_by_set(validators), - None, - ),), - Err(Error::AncientHeader), - ); - } - - #[test] - fn pool_rejects_headers_without_required_receipts() { - assert_eq!( - default_accept_into_pool(|_| ( - AuraHeader { - number: 20_000_000, - seal: vec![vec![], vec![]], - gas_limit: test_aura_config().min_gas_limit, - log_bloom: (&[0xff; 256]).into(), - ..Default::default() - }, - None, - ),), - Err(Error::MissingTransactionsReceipts), - ); - } - - #[test] - fn pool_rejects_headers_with_redundant_receipts() { - assert_eq!( - default_accept_into_pool(|validators| ( - HeaderBuilder::with_parent_number(3).sign_by_set(validators), - Some(vec![Receipt { - gas_used: 1.into(), - log_bloom: (&[0xff; 256]).into(), - logs: vec![], - outcome: TransactionOutcome::Unknown, - }]), - ),), - Err(Error::RedundantTransactionsReceipts), - ); - } - - #[test] - fn pool_verifies_future_block_number() { - // when header is too far from the future - assert_eq!( - default_accept_into_pool(|validators| (HeaderBuilder::with_number(100).sign_by_set(validators), None),), - Err(Error::UnsignedTooFarInTheFuture), - ); - } - - #[test] - fn pool_performs_full_verification_when_parent_is_known() { - // if parent is known, then we'll execute contextual_checks, which - // checks for DoubleVote - assert_eq!( - default_accept_into_pool(|validators| ( - HeaderBuilder::with_parent_number(3) - .step(GENESIS_STEP + 3) - .sign_by_set(validators), - None, - ),), - Err(Error::DoubleVote), - ); - } - - #[test] - fn pool_performs_validators_checks_when_parent_is_unknown() { - // if parent is unknown, then we still need to check if header has required signature - // (even if header will be considered invalid/duplicate later, we can use this signature - // as a proof of malicious action by this validator) - assert_eq!( - default_accept_into_pool(|_| (HeaderBuilder::with_number(8).step(8).sign_by(&validator(1)), None,)), - Err(Error::NotValidator), - ); - } - - #[test] - fn pool_verifies_header_with_known_parent() { - let mut hash = None; - assert_eq!( - default_accept_into_pool(|validators| { - let header = HeaderBuilder::with_parent_number(3).sign_by_set(validators); - hash = Some(header.compute_hash()); - (header, None) - }), - Ok(( - // no tags are required - vec![], - // header provides two tags - vec![ - (4u64, validators_addresses(3)[1]).encode(), - (4u64, hash.unwrap()).encode(), - ], - )), - ); - } - - #[test] - fn pool_verifies_header_with_unknown_parent() { - let mut id = None; - let mut parent_id = None; - assert_eq!( - default_accept_into_pool(|validators| { - let header = HeaderBuilder::with_number(5) - .step(GENESIS_STEP + 5) - .sign_by_set(validators); - id = Some(header.compute_id()); - parent_id = header.parent_id(); - (header, None) - }), - Ok(( - // parent tag required - vec![parent_id.unwrap().encode()], - // header provides two tags - vec![(5u64, validator_address(2)).encode(), id.unwrap().encode(),], - )), - ); - } - - #[test] - fn pool_uses_next_validators_set_when_finalized_fails() { - assert_eq!( - default_accept_into_pool(|actual_validators| { - // change finalized set at parent header - change_validators_set_at(3, validators_addresses(1), None); - - // header is signed using wrong set - let header = HeaderBuilder::with_number(5) - .step(GENESIS_STEP + 2) - .sign_by_set(actual_validators); - - (header, None) - }), - Err(Error::NotValidator), - ); - - let mut id = None; - let mut parent_id = None; - assert_eq!( - default_accept_into_pool(|actual_validators| { - // change finalized set at parent header + signal valid set at parent block - change_validators_set_at(3, validators_addresses(10), Some(validators_addresses(3))); - - // header is signed using wrong set - let header = HeaderBuilder::with_number(5) - .step(GENESIS_STEP + 2) - .sign_by_set(actual_validators); - id = Some(header.compute_id()); - parent_id = header.parent_id(); - - (header, None) - }), - Ok(( - // parent tag required - vec![parent_id.unwrap().encode(),], - // header provides two tags - vec![(5u64, validator_address(2)).encode(), id.unwrap().encode(),], - )), - ); - } - - #[test] - fn pool_rejects_headers_with_invalid_receipts() { - assert_eq!( - default_accept_into_pool(|validators| { - let header = HeaderBuilder::with_parent_number(3) - .log_bloom((&[0xff; 256]).into()) - .sign_by_set(validators); - (header, Some(vec![validators_change_receipt(Default::default())])) - }), - Err(Error::TransactionsReceiptsMismatch), - ); - } - - #[test] - fn pool_accepts_headers_with_valid_receipts() { - let mut hash = None; - let receipts = vec![validators_change_receipt(Default::default())]; - let receipts_root = compute_merkle_root(receipts.iter().map(|r| r.rlp())); - - assert_eq!( - default_accept_into_pool(|validators| { - let header = HeaderBuilder::with_parent_number(3) - .log_bloom((&[0xff; 256]).into()) - .receipts_root(receipts_root) - .sign_by_set(validators); - hash = Some(header.compute_hash()); - (header, Some(receipts.clone())) - }), - Ok(( - // no tags are required - vec![], - // header provides two tags - vec![ - (4u64, validators_addresses(3)[1]).encode(), - (4u64, hash.unwrap()).encode(), - ], - )), - ); - } -} diff --git a/bridges/modules/grandpa/Cargo.toml b/bridges/modules/grandpa/Cargo.toml deleted file mode 100644 index aa2e33cf447b..000000000000 --- a/bridges/modules/grandpa/Cargo.toml +++ /dev/null @@ -1,59 +0,0 @@ -[package] -name = "pallet-bridge-grandpa" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -finality-grandpa = { version = "0.14.1", default-features = false } -log = { version = "0.4.14", default-features = false } -num-traits = { version = "0.2", default-features = false } -serde = { version = "1.0", optional = true } - -# Bridge Dependencies - -bp-runtime = { path = "../../primitives/runtime", default-features = false } -bp-header-chain = { path = "../../primitives/header-chain", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -# Optional Benchmarking Dependencies -bp-test-utils = { path = "../../primitives/test-utils", default-features = false, optional = true } -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } - -[dev-dependencies] -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = ["std"] -std = [ - "bp-header-chain/std", - "bp-runtime/std", - "bp-test-utils/std", - "codec/std", - "finality-grandpa/std", - "frame-support/std", - "frame-system/std", - "log/std", - "num-traits/std", - "serde", - "sp-finality-grandpa/std", - "sp-runtime/std", - "sp-std/std", - "sp-trie/std", -] -runtime-benchmarks = [ - "bp-test-utils", - "frame-benchmarking", -] diff --git a/bridges/modules/grandpa/src/benchmarking.rs b/bridges/modules/grandpa/src/benchmarking.rs deleted file mode 100644 index bc027e86a4b5..000000000000 --- a/bridges/modules/grandpa/src/benchmarking.rs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Benchmarks for the GRANDPA Pallet. -//! -//! The main dispatchable for the GRANDPA pallet is `submit_finality_proof`, so these benchmarks are -//! based around that. There are to main factors which affect finality proof verification: -//! -//! 1. The number of `votes-ancestries` in the justification -//! 2. The number of `pre-commits` in the justification -//! -//! Vote ancestries are the headers between (`finality_target`, `head_of_chain`], where -//! `header_of_chain` is a decendant of `finality_target`. -//! -//! Pre-commits are messages which are signed by validators at the head of the chain they think is -//! the best. -//! -//! Consider the following: -//! -//! / [B'] <- [C'] -//! [A] <- [B] <- [C] -//! -//! The common ancestor of both forks is block A, so this is what GRANDPA will finalize. In order to -//! verify this we will have vote ancestries of [B, C, B', C'] and pre-commits [C, C']. -//! -//! Note that the worst case scenario here would be a justification where each validator has it's -//! own fork which is `SESSION_LENGTH` blocks long. - -use crate::*; - -use bp_test_utils::{ - accounts, make_justification_for_header, JustificationGeneratorParams, TEST_GRANDPA_ROUND, TEST_GRANDPA_SET_ID, -}; -use frame_benchmarking::{benchmarks_instance_pallet, whitelisted_caller}; -use frame_support::traits::Get; -use frame_system::RawOrigin; -use sp_finality_grandpa::AuthorityId; -use sp_runtime::traits::Zero; -use sp_std::vec::Vec; - -// The maximum number of vote ancestries to include in a justification. -// -// In practice this would be limited by the session length (number of blocks a single authority set -// can produce) of a given chain. -const MAX_VOTE_ANCESTRIES: u32 = 1000; - -// The maximum number of pre-commits to include in a justification. In practice this scales with the -// number of validators. -const MAX_VALIDATOR_SET_SIZE: u32 = 1024; - -/// Returns number of first header to be imported. -/// -/// Since we boostrap the pallet with `HeadersToKeep` already imported headers, -/// this function computes the next expected header number to import. -fn header_number, I: 'static, N: From>() -> N { - (T::HeadersToKeep::get() + 1).into() -} - -/// Prepare header and its justification to submit using `submit_finality_proof`. -fn prepare_benchmark_data, I: 'static>( - precommits: u32, - ancestors: u32, -) -> (BridgedHeader, GrandpaJustification>) { - let authority_list = accounts(precommits as u16) - .iter() - .map(|id| (AuthorityId::from(*id), 1)) - .collect::>(); - - let init_data = InitializationData { - header: bp_test_utils::test_header(Zero::zero()), - authority_list, - set_id: TEST_GRANDPA_SET_ID, - is_halted: false, - }; - - bootstrap_bridge::(init_data); - - let header: BridgedHeader = bp_test_utils::test_header(header_number::()); - let params = JustificationGeneratorParams { - header: header.clone(), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: accounts(precommits as u16).iter().map(|k| (*k, 1)).collect::>(), - ancestors, - forks: 1, - }; - let justification = make_justification_for_header(params); - (header, justification) -} - -benchmarks_instance_pallet! { - // This is the "gold standard" benchmark for this extrinsic, and it's what should be used to - // annotate the weight in the pallet. - submit_finality_proof { - let p in 1..MAX_VALIDATOR_SET_SIZE; - let v in 1..MAX_VOTE_ANCESTRIES; - let caller: T::AccountId = whitelisted_caller(); - let (header, justification) = prepare_benchmark_data::(p, v); - }: submit_finality_proof(RawOrigin::Signed(caller), header, justification) - verify { - let header: BridgedHeader = bp_test_utils::test_header(header_number::()); - let expected_hash = header.hash(); - - assert_eq!(>::get(), expected_hash); - assert!(>::contains_key(expected_hash)); - } -} diff --git a/bridges/modules/grandpa/src/lib.rs b/bridges/modules/grandpa/src/lib.rs deleted file mode 100644 index 4cca1c782738..000000000000 --- a/bridges/modules/grandpa/src/lib.rs +++ /dev/null @@ -1,1087 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate GRANDPA Pallet -//! -//! This pallet is an on-chain GRANDPA light client for Substrate based chains. -//! -//! This pallet achieves this by trustlessly verifying GRANDPA finality proofs on-chain. Once -//! verified, finalized headers are stored in the pallet, thereby creating a sparse header chain. -//! This sparse header chain can be used as a source of truth for other higher-level applications. -//! -//! The pallet is responsible for tracking GRANDPA validator set hand-offs. We only import headers -//! with justifications signed by the current validator set we know of. The header is inspected for -//! a `ScheduledChanges` digest item, which is then used to update to next validator set. -//! -//! Since this pallet only tracks finalized headers it does not deal with forks. Forks can only -//! occur if the GRANDPA validator set on the bridged chain is either colluding or there is a severe -//! bug causing resulting in an equivocation. Such events are outside of the scope of this pallet. -//! Shall the fork occur on the bridged chain governance intervention will be required to -//! re-initialize the bridge and track the right fork. - -#![cfg_attr(not(feature = "std"), no_std)] -// Runtime-generated enums -#![allow(clippy::large_enum_variant)] - -use crate::weights::WeightInfo; - -use bp_header_chain::justification::GrandpaJustification; -use bp_header_chain::InitializationData; -use bp_runtime::{BlockNumberOf, Chain, HashOf, HasherOf, HeaderOf}; -use finality_grandpa::voter_set::VoterSet; -use frame_support::{ensure, fail}; -use frame_system::{ensure_signed, RawOrigin}; -use sp_finality_grandpa::{ConsensusLog, GRANDPA_ENGINE_ID}; -use sp_runtime::traits::{BadOrigin, Header as HeaderT, Zero}; -use sp_std::convert::TryInto; - -#[cfg(test)] -mod mock; - -/// Pallet containing weights for this pallet. -pub mod weights; - -#[cfg(feature = "runtime-benchmarks")] -pub mod benchmarking; - -// Re-export in crate namespace for `construct_runtime!` -pub use pallet::*; - -/// Block number of the bridged chain. -pub type BridgedBlockNumber = BlockNumberOf<>::BridgedChain>; -/// Block hash of the bridged chain. -pub type BridgedBlockHash = HashOf<>::BridgedChain>; -/// Hasher of the bridged chain. -pub type BridgedBlockHasher = HasherOf<>::BridgedChain>; -/// Header of the bridged chain. -pub type BridgedHeader = HeaderOf<>::BridgedChain>; - -#[frame_support::pallet] -pub mod pallet { - use super::*; - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - - #[pallet::config] - pub trait Config: frame_system::Config { - /// The chain we are bridging to here. - type BridgedChain: Chain; - - /// The upper bound on the number of requests allowed by the pallet. - /// - /// A request refers to an action which writes a header to storage. - /// - /// Once this bound is reached the pallet will not allow any dispatchables to be called - /// until the request count has decreased. - #[pallet::constant] - type MaxRequests: Get; - - /// Maximal number of finalized headers to keep in the storage. - /// - /// The setting is there to prevent growing the on-chain state indefinitely. Note - /// the setting does not relate to block numbers - we will simply keep as much items - /// in the storage, so it doesn't guarantee any fixed timeframe for finality headers. - #[pallet::constant] - type HeadersToKeep: Get; - - /// Weights gathered through benchmarking. - type WeightInfo: WeightInfo; - } - - #[pallet::pallet] - pub struct Pallet(PhantomData<(T, I)>); - - #[pallet::hooks] - impl, I: 'static> Hooks> for Pallet { - fn on_initialize(_n: T::BlockNumber) -> frame_support::weights::Weight { - >::mutate(|count| *count = count.saturating_sub(1)); - - (0_u64) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(1)) - } - } - - #[pallet::call] - impl, I: 'static> Pallet { - /// Verify a target header is finalized according to the given finality proof. - /// - /// It will use the underlying storage pallet to fetch information about the current - /// authorities and best finalized header in order to verify that the header is finalized. - /// - /// If successful in verification, it will write the target header to the underlying storage - /// pallet. - #[pallet::weight(T::WeightInfo::submit_finality_proof( - justification.commit.precommits.len().try_into().unwrap_or(u32::MAX), - justification.votes_ancestries.len().try_into().unwrap_or(u32::MAX), - ))] - pub fn submit_finality_proof( - origin: OriginFor, - finality_target: BridgedHeader, - justification: GrandpaJustification>, - ) -> DispatchResultWithPostInfo { - ensure_operational::()?; - let _ = ensure_signed(origin)?; - - ensure!( - Self::request_count() < T::MaxRequests::get(), - >::TooManyRequests - ); - - let (hash, number) = (finality_target.hash(), finality_target.number()); - log::trace!(target: "runtime::bridge-grandpa", "Going to try and finalize header {:?}", finality_target); - - let best_finalized = match >::get(>::get()) { - Some(best_finalized) => best_finalized, - None => { - log::error!( - target: "runtime::bridge-grandpa", - "Cannot finalize header {:?} because pallet is not yet initialized", - finality_target, - ); - fail!(>::NotInitialized); - } - }; - - // We do a quick check here to ensure that our header chain is making progress and isn't - // "travelling back in time" (which could be indicative of something bad, e.g a hard-fork). - ensure!(best_finalized.number() < number, >::OldHeader); - - let authority_set = >::get(); - let set_id = authority_set.set_id; - verify_justification::(&justification, hash, *number, authority_set)?; - - let _enacted = try_enact_authority_change::(&finality_target, set_id)?; - >::mutate(|count| *count += 1); - insert_header::(finality_target, hash); - log::info!(target: "runtime::bridge-grandpa", "Succesfully imported finalized header with hash {:?}!", hash); - - Ok(().into()) - } - - /// Bootstrap the bridge pallet with an initial header and authority set from which to sync. - /// - /// The initial configuration provided does not need to be the genesis header of the bridged - /// chain, it can be any arbirary header. You can also provide the next scheduled set change - /// if it is already know. - /// - /// This function is only allowed to be called from a trusted origin and writes to storage - /// with practically no checks in terms of the validity of the data. It is important that - /// you ensure that valid data is being passed in. - #[pallet::weight((T::DbWeight::get().reads_writes(2, 5), DispatchClass::Operational))] - pub fn initialize( - origin: OriginFor, - init_data: super::InitializationData>, - ) -> DispatchResultWithPostInfo { - ensure_owner_or_root::(origin)?; - - let init_allowed = !>::exists(); - ensure!(init_allowed, >::AlreadyInitialized); - initialize_bridge::(init_data.clone()); - - log::info!( - target: "runtime::bridge-grandpa", - "Pallet has been initialized with the following parameters: {:?}", - init_data - ); - - Ok(().into()) - } - - /// Change `PalletOwner`. - /// - /// May only be called either by root, or by `PalletOwner`. - #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] - pub fn set_owner(origin: OriginFor, new_owner: Option) -> DispatchResultWithPostInfo { - ensure_owner_or_root::(origin)?; - match new_owner { - Some(new_owner) => { - PalletOwner::::put(&new_owner); - log::info!(target: "runtime::bridge-grandpa", "Setting pallet Owner to: {:?}", new_owner); - } - None => { - PalletOwner::::kill(); - log::info!(target: "runtime::bridge-grandpa", "Removed Owner of pallet."); - } - } - - Ok(().into()) - } - - /// Halt or resume all pallet operations. - /// - /// May only be called either by root, or by `PalletOwner`. - #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] - pub fn set_operational(origin: OriginFor, operational: bool) -> DispatchResultWithPostInfo { - ensure_owner_or_root::(origin)?; - >::put(operational); - - if operational { - log::info!(target: "runtime::bridge-grandpa", "Resuming pallet operations."); - } else { - log::warn!(target: "runtime::bridge-grandpa", "Stopping pallet operations."); - } - - Ok(().into()) - } - } - - /// The current number of requests which have written to storage. - /// - /// If the `RequestCount` hits `MaxRequests`, no more calls will be allowed to the pallet until - /// the request capacity is increased. - /// - /// The `RequestCount` is decreased by one at the beginning of every block. This is to ensure - /// that the pallet can always make progress. - #[pallet::storage] - #[pallet::getter(fn request_count)] - pub(super) type RequestCount, I: 'static = ()> = StorageValue<_, u32, ValueQuery>; - - /// Hash of the header used to bootstrap the pallet. - #[pallet::storage] - pub(super) type InitialHash, I: 'static = ()> = StorageValue<_, BridgedBlockHash, ValueQuery>; - - /// Hash of the best finalized header. - #[pallet::storage] - pub(super) type BestFinalized, I: 'static = ()> = StorageValue<_, BridgedBlockHash, ValueQuery>; - - /// A ring buffer of imported hashes. Ordered by the insertion time. - #[pallet::storage] - pub(super) type ImportedHashes, I: 'static = ()> = - StorageMap<_, Identity, u32, BridgedBlockHash>; - - /// Current ring buffer position. - #[pallet::storage] - pub(super) type ImportedHashesPointer, I: 'static = ()> = StorageValue<_, u32, ValueQuery>; - - /// Headers which have been imported into the pallet. - #[pallet::storage] - pub(super) type ImportedHeaders, I: 'static = ()> = - StorageMap<_, Identity, BridgedBlockHash, BridgedHeader>; - - /// The current GRANDPA Authority set. - #[pallet::storage] - pub(super) type CurrentAuthoritySet, I: 'static = ()> = - StorageValue<_, bp_header_chain::AuthoritySet, ValueQuery>; - - /// Optional pallet owner. - /// - /// Pallet owner has a right to halt all pallet operations and then resume it. If it is - /// `None`, then there are no direct ways to halt/resume pallet operations, but other - /// runtime methods may still be used to do that (i.e. democracy::referendum to update halt - /// flag directly or call the `halt_operations`). - #[pallet::storage] - pub(super) type PalletOwner, I: 'static = ()> = StorageValue<_, T::AccountId, OptionQuery>; - - /// If true, all pallet transactions are failed immediately. - #[pallet::storage] - pub(super) type IsHalted, I: 'static = ()> = StorageValue<_, bool, ValueQuery>; - - #[pallet::genesis_config] - pub struct GenesisConfig, I: 'static = ()> { - /// Optional module owner account. - pub owner: Option, - /// Optional module initialization data. - pub init_data: Option>>, - } - - #[cfg(feature = "std")] - impl, I: 'static> Default for GenesisConfig { - fn default() -> Self { - Self { - owner: None, - init_data: None, - } - } - } - - #[pallet::genesis_build] - impl, I: 'static> GenesisBuild for GenesisConfig { - fn build(&self) { - if let Some(ref owner) = self.owner { - >::put(owner); - } - - if let Some(init_data) = self.init_data.clone() { - initialize_bridge::(init_data); - } else { - // Since the bridge hasn't been initialized we shouldn't allow anyone to perform - // transactions. - >::put(true); - } - } - } - - #[pallet::error] - pub enum Error { - /// The given justification is invalid for the given header. - InvalidJustification, - /// The authority set from the underlying header chain is invalid. - InvalidAuthoritySet, - /// There are too many requests for the current window to handle. - TooManyRequests, - /// The header being imported is older than the best finalized header known to the pallet. - OldHeader, - /// The header is unknown to the pallet. - UnknownHeader, - /// The scheduled authority set change found in the header is unsupported by the pallet. - /// - /// This is the case for non-standard (e.g forced) authority set changes. - UnsupportedScheduledChange, - /// The pallet is not yet initialized. - NotInitialized, - /// The pallet has already been initialized. - AlreadyInitialized, - /// All pallet operations are halted. - Halted, - /// The storage proof doesn't contains storage root. So it is invalid for given header. - StorageRootMismatch, - } - - /// Check the given header for a GRANDPA scheduled authority set change. If a change - /// is found it will be enacted immediately. - /// - /// This function does not support forced changes, or scheduled changes with delays - /// since these types of changes are indicitive of abnormal behaviour from GRANDPA. - /// - /// Returned value will indicate if a change was enacted or not. - pub(crate) fn try_enact_authority_change, I: 'static>( - header: &BridgedHeader, - current_set_id: sp_finality_grandpa::SetId, - ) -> Result { - let mut change_enacted = false; - - // We don't support forced changes - at that point governance intervention is required. - ensure!( - super::find_forced_change(header).is_none(), - >::UnsupportedScheduledChange - ); - - if let Some(change) = super::find_scheduled_change(header) { - // GRANDPA only includes a `delay` for forced changes, so this isn't valid. - ensure!(change.delay == Zero::zero(), >::UnsupportedScheduledChange); - - // TODO [#788]: Stop manually increasing the `set_id` here. - let next_authorities = bp_header_chain::AuthoritySet { - authorities: change.next_authorities, - set_id: current_set_id + 1, - }; - - // Since our header schedules a change and we know the delay is 0, it must also enact - // the change. - >::put(&next_authorities); - change_enacted = true; - - log::info!( - target: "runtime::bridge-grandpa", - "Transitioned from authority set {} to {}! New authorities are: {:?}", - current_set_id, - current_set_id + 1, - next_authorities, - ); - }; - - Ok(change_enacted) - } - - /// Verify a GRANDPA justification (finality proof) for a given header. - /// - /// Will use the GRANDPA current authorities known to the pallet. - /// - /// If succesful it returns the decoded GRANDPA justification so we can refund any weight which - /// was overcharged in the initial call. - pub(crate) fn verify_justification, I: 'static>( - justification: &GrandpaJustification>, - hash: BridgedBlockHash, - number: BridgedBlockNumber, - authority_set: bp_header_chain::AuthoritySet, - ) -> Result<(), sp_runtime::DispatchError> { - use bp_header_chain::justification::verify_justification; - - let voter_set = VoterSet::new(authority_set.authorities).ok_or(>::InvalidAuthoritySet)?; - let set_id = authority_set.set_id; - - Ok( - verify_justification::>((hash, number), set_id, &voter_set, justification).map_err( - |e| { - log::error!( - target: "runtime::bridge-grandpa", - "Received invalid justification for {:?}: {:?}", - hash, - e, - ); - >::InvalidJustification - }, - )?, - ) - } - - /// Import a previously verified header to the storage. - /// - /// Note this function solely takes care of updating the storage and pruning old entries, - /// but does not verify the validaty of such import. - pub(crate) fn insert_header, I: 'static>(header: BridgedHeader, hash: BridgedBlockHash) { - let index = >::get(); - let pruning = >::try_get(index); - >::put(hash); - >::insert(hash, header); - >::insert(index, hash); - - // Update ring buffer pointer and remove old header. - >::put((index + 1) % T::HeadersToKeep::get()); - if let Ok(hash) = pruning { - log::debug!(target: "runtime::bridge-grandpa", "Pruning old header: {:?}.", hash); - >::remove(hash); - } - } - - /// Since this writes to storage with no real checks this should only be used in functions that - /// were called by a trusted origin. - pub(crate) fn initialize_bridge, I: 'static>( - init_params: super::InitializationData>, - ) { - let super::InitializationData { - header, - authority_list, - set_id, - is_halted, - } = init_params; - - let initial_hash = header.hash(); - >::put(initial_hash); - >::put(0); - insert_header::(header, initial_hash); - - let authority_set = bp_header_chain::AuthoritySet::new(authority_list, set_id); - >::put(authority_set); - - >::put(is_halted); - } - - #[cfg(feature = "runtime-benchmarks")] - pub(crate) fn bootstrap_bridge, I: 'static>( - init_params: super::InitializationData>, - ) { - let start_number = *init_params.header.number(); - let end_number = start_number + T::HeadersToKeep::get().into(); - initialize_bridge::(init_params); - - let mut number = start_number; - while number < end_number { - number = number + sp_runtime::traits::One::one(); - let header = >::new( - number, - Default::default(), - Default::default(), - Default::default(), - Default::default(), - ); - let hash = header.hash(); - insert_header::(header, hash); - } - } - - /// Ensure that the origin is either root, or `PalletOwner`. - fn ensure_owner_or_root, I: 'static>(origin: T::Origin) -> Result<(), BadOrigin> { - match origin.into() { - Ok(RawOrigin::Root) => Ok(()), - Ok(RawOrigin::Signed(ref signer)) if Some(signer) == >::get().as_ref() => Ok(()), - _ => Err(BadOrigin), - } - } - - /// Ensure that the pallet is in operational mode (not halted). - fn ensure_operational, I: 'static>() -> Result<(), Error> { - if >::get() { - Err(>::Halted) - } else { - Ok(()) - } - } -} - -impl, I: 'static> Pallet { - /// Get the best finalized header the pallet knows of. - /// - /// Returns a dummy header if there is no best header. This can only happen - /// if the pallet has not been initialized yet. - pub fn best_finalized() -> BridgedHeader { - let hash = >::get(); - >::get(hash).unwrap_or_else(|| { - >::new( - Default::default(), - Default::default(), - Default::default(), - Default::default(), - Default::default(), - ) - }) - } - - /// Check if a particular header is known to the bridge pallet. - pub fn is_known_header(hash: BridgedBlockHash) -> bool { - >::contains_key(hash) - } - - /// Verify that the passed storage proof is valid, given it is crafted using - /// known finalized header. If the proof is valid, then the `parse` callback - /// is called and the function returns its result. - pub fn parse_finalized_storage_proof( - hash: BridgedBlockHash, - storage_proof: sp_trie::StorageProof, - parse: impl FnOnce(bp_runtime::StorageProofChecker>) -> R, - ) -> Result { - let header = >::get(hash).ok_or(Error::::UnknownHeader)?; - let storage_proof_checker = bp_runtime::StorageProofChecker::new(*header.state_root(), storage_proof) - .map_err(|_| Error::::StorageRootMismatch)?; - - Ok(parse(storage_proof_checker)) - } -} - -pub(crate) fn find_scheduled_change(header: &H) -> Option> { - use sp_runtime::generic::OpaqueDigestItemId; - - let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); - - let filter_log = |log: ConsensusLog| match log { - ConsensusLog::ScheduledChange(change) => Some(change), - _ => None, - }; - - // find the first consensus digest with the right ID which converts to - // the right kind of consensus log. - header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) -} - -/// Checks the given header for a consensus digest signalling a **forced** scheduled change and -/// extracts it. -pub(crate) fn find_forced_change( - header: &H, -) -> Option<(H::Number, sp_finality_grandpa::ScheduledChange)> { - use sp_runtime::generic::OpaqueDigestItemId; - - let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); - - let filter_log = |log: ConsensusLog| match log { - ConsensusLog::ForcedChange(delay, change) => Some((delay, change)), - _ => None, - }; - - // find the first consensus digest with the right ID which converts to - // the right kind of consensus log. - header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) -} - -/// (Re)initialize bridge with given header for using it in `pallet-bridge-messages` benchmarks. -#[cfg(feature = "runtime-benchmarks")] -pub fn initialize_for_benchmarks, I: 'static>(header: BridgedHeader) { - initialize_bridge::(InitializationData { - header, - authority_list: sp_std::vec::Vec::new(), // we don't verify any proofs in external benchmarks - set_id: 0, - is_halted: false, - }); -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{run_test, test_header, Origin, TestHash, TestHeader, TestNumber, TestRuntime}; - use bp_test_utils::{ - authority_list, make_default_justification, make_justification_for_header, JustificationGeneratorParams, ALICE, - BOB, - }; - use codec::Encode; - use frame_support::weights::PostDispatchInfo; - use frame_support::{assert_err, assert_noop, assert_ok}; - use sp_runtime::{Digest, DigestItem, DispatchError}; - - fn initialize_substrate_bridge() { - assert_ok!(init_with_origin(Origin::root())); - } - - fn init_with_origin( - origin: Origin, - ) -> Result, sp_runtime::DispatchErrorWithPostInfo> { - let genesis = test_header(0); - - let init_data = InitializationData { - header: genesis, - authority_list: authority_list(), - set_id: 1, - is_halted: false, - }; - - Pallet::::initialize(origin, init_data.clone()).map(|_| init_data) - } - - fn submit_finality_proof(header: u8) -> frame_support::dispatch::DispatchResultWithPostInfo { - let header = test_header(header.into()); - let justification = make_default_justification(&header); - - Pallet::::submit_finality_proof(Origin::signed(1), header, justification) - } - - fn next_block() { - use frame_support::traits::OnInitialize; - - let current_number = frame_system::Pallet::::block_number(); - frame_system::Pallet::::set_block_number(current_number + 1); - let _ = Pallet::::on_initialize(current_number); - } - - fn change_log(delay: u64) -> Digest { - let consensus_log = ConsensusLog::::ScheduledChange(sp_finality_grandpa::ScheduledChange { - next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], - delay, - }); - - Digest:: { - logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())], - } - } - - fn forced_change_log(delay: u64) -> Digest { - let consensus_log = ConsensusLog::::ForcedChange( - delay, - sp_finality_grandpa::ScheduledChange { - next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], - delay, - }, - ); - - Digest:: { - logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())], - } - } - - #[test] - fn init_root_or_owner_origin_can_initialize_pallet() { - run_test(|| { - assert_noop!(init_with_origin(Origin::signed(1)), DispatchError::BadOrigin); - assert_ok!(init_with_origin(Origin::root())); - - // Reset storage so we can initialize the pallet again - BestFinalized::::kill(); - PalletOwner::::put(2); - assert_ok!(init_with_origin(Origin::signed(2))); - }) - } - - #[test] - fn init_storage_entries_are_correctly_initialized() { - run_test(|| { - assert_eq!( - BestFinalized::::get(), - BridgedBlockHash::::default() - ); - assert_eq!(Pallet::::best_finalized(), test_header(0)); - - let init_data = init_with_origin(Origin::root()).unwrap(); - - assert!(>::contains_key(init_data.header.hash())); - assert_eq!(BestFinalized::::get(), init_data.header.hash()); - assert_eq!( - CurrentAuthoritySet::::get().authorities, - init_data.authority_list - ); - assert!(!IsHalted::::get()); - }) - } - - #[test] - fn init_can_only_initialize_pallet_once() { - run_test(|| { - initialize_substrate_bridge(); - assert_noop!( - init_with_origin(Origin::root()), - >::AlreadyInitialized - ); - }) - } - - #[test] - fn pallet_owner_may_change_owner() { - run_test(|| { - PalletOwner::::put(2); - - assert_ok!(Pallet::::set_owner(Origin::root(), Some(1))); - assert_noop!( - Pallet::::set_operational(Origin::signed(2), false), - DispatchError::BadOrigin, - ); - assert_ok!(Pallet::::set_operational(Origin::root(), false)); - - assert_ok!(Pallet::::set_owner(Origin::signed(1), None)); - assert_noop!( - Pallet::::set_operational(Origin::signed(1), true), - DispatchError::BadOrigin, - ); - assert_noop!( - Pallet::::set_operational(Origin::signed(2), true), - DispatchError::BadOrigin, - ); - assert_ok!(Pallet::::set_operational(Origin::root(), true)); - }); - } - - #[test] - fn pallet_may_be_halted_by_root() { - run_test(|| { - assert_ok!(Pallet::::set_operational(Origin::root(), false)); - assert_ok!(Pallet::::set_operational(Origin::root(), true)); - }); - } - - #[test] - fn pallet_may_be_halted_by_owner() { - run_test(|| { - PalletOwner::::put(2); - - assert_ok!(Pallet::::set_operational(Origin::signed(2), false)); - assert_ok!(Pallet::::set_operational(Origin::signed(2), true)); - - assert_noop!( - Pallet::::set_operational(Origin::signed(1), false), - DispatchError::BadOrigin, - ); - assert_noop!( - Pallet::::set_operational(Origin::signed(1), true), - DispatchError::BadOrigin, - ); - - assert_ok!(Pallet::::set_operational(Origin::signed(2), false)); - assert_noop!( - Pallet::::set_operational(Origin::signed(1), true), - DispatchError::BadOrigin, - ); - }); - } - - #[test] - fn pallet_rejects_transactions_if_halted() { - run_test(|| { - >::put(true); - - assert_noop!(submit_finality_proof(1), Error::::Halted,); - }) - } - - #[test] - fn pallet_rejects_header_if_not_initialized_yet() { - run_test(|| { - assert_noop!(submit_finality_proof(1), Error::::NotInitialized); - }); - } - - #[test] - fn succesfully_imports_header_with_valid_finality() { - run_test(|| { - initialize_substrate_bridge(); - assert_ok!(submit_finality_proof(1)); - - let header = test_header(1); - assert_eq!(>::get(), header.hash()); - assert!(>::contains_key(header.hash())); - }) - } - - #[test] - fn rejects_justification_that_skips_authority_set_transition() { - run_test(|| { - initialize_substrate_bridge(); - - let header = test_header(1); - - let params = JustificationGeneratorParams:: { - set_id: 2, - ..Default::default() - }; - let justification = make_justification_for_header(params); - - assert_err!( - Pallet::::submit_finality_proof(Origin::signed(1), header, justification,), - >::InvalidJustification - ); - }) - } - - #[test] - fn does_not_import_header_with_invalid_finality_proof() { - run_test(|| { - initialize_substrate_bridge(); - - let header = test_header(1); - let mut justification = make_default_justification(&header); - justification.round = 42; - - assert_err!( - Pallet::::submit_finality_proof(Origin::signed(1), header, justification,), - >::InvalidJustification - ); - }) - } - - #[test] - fn disallows_invalid_authority_set() { - run_test(|| { - let genesis = test_header(0); - - let invalid_authority_list = vec![(ALICE.into(), u64::MAX), (BOB.into(), u64::MAX)]; - let init_data = InitializationData { - header: genesis, - authority_list: invalid_authority_list, - set_id: 1, - is_halted: false, - }; - - assert_ok!(Pallet::::initialize(Origin::root(), init_data)); - - let header = test_header(1); - let justification = make_default_justification(&header); - - assert_err!( - Pallet::::submit_finality_proof(Origin::signed(1), header, justification,), - >::InvalidAuthoritySet - ); - }) - } - - #[test] - fn importing_header_ensures_that_chain_is_extended() { - run_test(|| { - initialize_substrate_bridge(); - - assert_ok!(submit_finality_proof(4)); - assert_err!(submit_finality_proof(3), Error::::OldHeader); - assert_ok!(submit_finality_proof(5)); - }) - } - - #[test] - fn importing_header_enacts_new_authority_set() { - run_test(|| { - initialize_substrate_bridge(); - - let next_set_id = 2; - let next_authorities = vec![(ALICE.into(), 1), (BOB.into(), 1)]; - - // Need to update the header digest to indicate that our header signals an authority set - // change. The change will be enacted when we import our header. - let mut header = test_header(2); - header.digest = change_log(0); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Let's import our test header - assert_ok!(Pallet::::submit_finality_proof( - Origin::signed(1), - header.clone(), - justification - )); - - // Make sure that our header is the best finalized - assert_eq!(>::get(), header.hash()); - assert!(>::contains_key(header.hash())); - - // Make sure that the authority set actually changed upon importing our header - assert_eq!( - >::get(), - bp_header_chain::AuthoritySet::new(next_authorities, next_set_id), - ); - }) - } - - #[test] - fn importing_header_rejects_header_with_scheduled_change_delay() { - run_test(|| { - initialize_substrate_bridge(); - - // Need to update the header digest to indicate that our header signals an authority set - // change. However, the change doesn't happen until the next block. - let mut header = test_header(2); - header.digest = change_log(1); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Should not be allowed to import this header - assert_err!( - Pallet::::submit_finality_proof(Origin::signed(1), header, justification), - >::UnsupportedScheduledChange - ); - }) - } - - #[test] - fn importing_header_rejects_header_with_forced_changes() { - run_test(|| { - initialize_substrate_bridge(); - - // Need to update the header digest to indicate that it signals a forced authority set - // change. - let mut header = test_header(2); - header.digest = forced_change_log(0); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Should not be allowed to import this header - assert_err!( - Pallet::::submit_finality_proof(Origin::signed(1), header, justification), - >::UnsupportedScheduledChange - ); - }) - } - - #[test] - fn parse_finalized_storage_proof_rejects_proof_on_unknown_header() { - run_test(|| { - assert_noop!( - Pallet::::parse_finalized_storage_proof( - Default::default(), - sp_trie::StorageProof::new(vec![]), - |_| (), - ), - Error::::UnknownHeader, - ); - }); - } - - #[test] - fn parse_finalized_storage_accepts_valid_proof() { - run_test(|| { - let (state_root, storage_proof) = bp_runtime::craft_valid_storage_proof(); - - let mut header = test_header(2); - header.set_state_root(state_root); - - let hash = header.hash(); - >::put(hash); - >::insert(hash, header); - - assert_ok!( - Pallet::::parse_finalized_storage_proof(hash, storage_proof, |_| (),), - (), - ); - }); - } - - #[test] - fn rate_limiter_disallows_imports_once_limit_is_hit_in_single_block() { - run_test(|| { - initialize_substrate_bridge(); - - assert_ok!(submit_finality_proof(1)); - assert_ok!(submit_finality_proof(2)); - assert_err!(submit_finality_proof(3), >::TooManyRequests); - }) - } - - #[test] - fn rate_limiter_invalid_requests_do_not_count_towards_request_count() { - run_test(|| { - let submit_invalid_request = || { - let header = test_header(1); - let mut invalid_justification = make_default_justification(&header); - invalid_justification.round = 42; - - Pallet::::submit_finality_proof(Origin::signed(1), header, invalid_justification) - }; - - initialize_substrate_bridge(); - - for _ in 0..::MaxRequests::get() + 1 { - // Notice that the error here *isn't* `TooManyRequests` - assert_err!(submit_invalid_request(), >::InvalidJustification); - } - - // Can still submit `MaxRequests` requests afterwards - assert_ok!(submit_finality_proof(1)); - assert_ok!(submit_finality_proof(2)); - assert_err!(submit_finality_proof(3), >::TooManyRequests); - }) - } - - #[test] - fn rate_limiter_allows_request_after_new_block_has_started() { - run_test(|| { - initialize_substrate_bridge(); - assert_ok!(submit_finality_proof(1)); - assert_ok!(submit_finality_proof(2)); - - next_block(); - assert_ok!(submit_finality_proof(3)); - }) - } - - #[test] - fn rate_limiter_disallows_imports_once_limit_is_hit_across_different_blocks() { - run_test(|| { - initialize_substrate_bridge(); - assert_ok!(submit_finality_proof(1)); - assert_ok!(submit_finality_proof(2)); - - next_block(); - assert_ok!(submit_finality_proof(3)); - assert_err!(submit_finality_proof(4), >::TooManyRequests); - }) - } - - #[test] - fn rate_limiter_allows_max_requests_after_long_time_with_no_activity() { - run_test(|| { - initialize_substrate_bridge(); - assert_ok!(submit_finality_proof(1)); - assert_ok!(submit_finality_proof(2)); - - next_block(); - next_block(); - - next_block(); - assert_ok!(submit_finality_proof(5)); - assert_ok!(submit_finality_proof(7)); - }) - } - - #[test] - fn should_prune_headers_over_headers_to_keep_parameter() { - run_test(|| { - initialize_substrate_bridge(); - assert_ok!(submit_finality_proof(1)); - let first_header = Pallet::::best_finalized(); - next_block(); - - assert_ok!(submit_finality_proof(2)); - next_block(); - assert_ok!(submit_finality_proof(3)); - next_block(); - assert_ok!(submit_finality_proof(4)); - next_block(); - assert_ok!(submit_finality_proof(5)); - next_block(); - - assert_ok!(submit_finality_proof(6)); - - assert!( - !Pallet::::is_known_header(first_header.hash()), - "First header should be pruned." - ); - }) - } -} diff --git a/bridges/modules/grandpa/src/mock.rs b/bridges/modules/grandpa/src/mock.rs deleted file mode 100644 index 20f5ea7bdf7a..000000000000 --- a/bridges/modules/grandpa/src/mock.rs +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -// From construct_runtime macro -#![allow(clippy::from_over_into)] - -use bp_runtime::Chain; -use frame_support::{construct_runtime, parameter_types, weights::Weight}; -use sp_runtime::{ - testing::{Header, H256}, - traits::{BlakeTwo256, IdentityLookup}, - Perbill, -}; - -pub type AccountId = u64; -pub type TestHeader = crate::BridgedHeader; -pub type TestNumber = crate::BridgedBlockNumber; -pub type TestHash = crate::BridgedBlockHash; - -type Block = frame_system::mocking::MockBlock; -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - -use crate as grandpa; - -construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Grandpa: grandpa::{Pallet}, - } -} - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} - -impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type DbWeight = (); - type BlockWeights = (); - type BlockLength = (); - type SS58Prefix = (); - type OnSetCode = (); -} - -parameter_types! { - pub const MaxRequests: u32 = 2; - pub const HeadersToKeep: u32 = 5; - pub const SessionLength: u64 = 5; - pub const NumValidators: u32 = 5; -} - -impl grandpa::Config for TestRuntime { - type BridgedChain = TestBridgedChain; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - type WeightInfo = (); -} - -#[derive(Debug)] -pub struct TestBridgedChain; - -impl Chain for TestBridgedChain { - type BlockNumber = ::BlockNumber; - type Hash = ::Hash; - type Hasher = ::Hashing; - type Header = ::Header; -} - -pub fn run_test(test: impl FnOnce() -> T) -> T { - sp_io::TestExternalities::new(Default::default()).execute_with(test) -} - -pub fn test_header(num: TestNumber) -> TestHeader { - // We wrap the call to avoid explicit type annotations in our tests - bp_test_utils::test_header(num) -} diff --git a/bridges/modules/grandpa/src/weights.rs b/bridges/modules/grandpa/src/weights.rs deleted file mode 100644 index 18d88049f16a..000000000000 --- a/bridges/modules/grandpa/src/weights.rs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Autogenerated weights for pallet_bridge_grandpa -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-03, STEPS: [50, ], REPEAT: 20 -//! LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled -//! CHAIN: Some("dev"), DB CACHE: 128 - -// Executed Command: -// target/release/rialto-bridge-node -// benchmark -// --chain=dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_bridge_grandpa -// --extrinsic=* -// --execution=wasm -// --wasm-execution=Compiled -// --heap-pages=4096 -// --output=./modules/grandpa/src/weights.rs -// --template=./.maintain/rialto-weight-template.hbs - -#![allow(clippy::all)] -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{ - traits::Get, - weights::{constants::RocksDbWeight, Weight}, -}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for pallet_bridge_grandpa. -pub trait WeightInfo { - fn submit_finality_proof(p: u32, v: u32) -> Weight; -} - -/// Weights for pallet_bridge_grandpa using the Rialto node and recommended hardware. -pub struct RialtoWeight(PhantomData); -impl WeightInfo for RialtoWeight { - fn submit_finality_proof(p: u32, v: u32) -> Weight { - (0 as Weight) - .saturating_add((59_692_000 as Weight).saturating_mul(p as Weight)) - .saturating_add((6_876_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } -} - -// For backwards compatibility and tests -impl WeightInfo for () { - fn submit_finality_proof(p: u32, v: u32) -> Weight { - (0 as Weight) - .saturating_add((59_692_000 as Weight).saturating_mul(p as Weight)) - .saturating_add((6_876_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(RocksDbWeight::get().reads(7 as Weight)) - .saturating_add(RocksDbWeight::get().writes(6 as Weight)) - } -} diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml deleted file mode 100644 index a26cf65c028b..000000000000 --- a/bridges/modules/messages/Cargo.toml +++ /dev/null @@ -1,57 +0,0 @@ -[package] -name = "pallet-bridge-messages" -description = "Module that allows bridged chains to exchange messages using lane concept." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -bitvec = { version = "0.20", default-features = false, features = ["alloc"] } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -log = { version = "0.4.14", default-features = false } -num-traits = { version = "0.2", default-features = false } -serde = { version = "1.0.101", optional = true, features = ["derive"] } - -# Bridge dependencies - -bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } -bp-messages = { path = "../../primitives/messages", default-features = false } -bp-rialto = { path = "../../primitives/chain-rialto", default-features = false } -bp-runtime = { path = "../../primitives/runtime", default-features = false } - -# Substrate Dependencies - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -hex = "0.4" -hex-literal = "0.3" -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = ["std"] -std = [ - "bp-message-dispatch/std", - "bp-messages/std", - "bp-runtime/std", - "bp-rialto/std", - "codec/std", - "frame-support/std", - "frame-system/std", - "log/std", - "num-traits/std", - "serde", - "sp-core/std", - "sp-runtime/std", - "sp-std/std", -] -runtime-benchmarks = [ - "frame-benchmarking", -] diff --git a/bridges/modules/messages/README.md b/bridges/modules/messages/README.md deleted file mode 100644 index be25b3c37f75..000000000000 --- a/bridges/modules/messages/README.md +++ /dev/null @@ -1,415 +0,0 @@ -# Messages Module - -The messages module is used to deliver messages from source chain to target chain. Message is -(almost) opaque to the module and the final goal is to hand message to the message dispatch -mechanism. - -## Contents -- [Overview](#overview) -- [Message Workflow](#message-workflow) -- [Integrating Message Lane Module into Runtime](#integrating-messages-module-into-runtime) -- [Non-Essential Functionality](#non-essential-functionality) -- [Weights of Module Extrinsics](#weights-of-module-extrinsics) - -## Overview - -Message lane is an unidirectional channel, where messages are sent from source chain to the target -chain. At the same time, a single instance of messages module supports both outbound lanes and -inbound lanes. So the chain where the module is deployed (this chain), may act as a source chain for -outbound messages (heading to a bridged chain) and as a target chain for inbound messages (coming -from a bridged chain). - -Messages module supports multiple message lanes. Every message lane is identified with a 4-byte -identifier. Messages sent through the lane are assigned unique (for this lane) increasing integer -value that is known as nonce ("number that can only be used once"). Messages that are sent over the -same lane are guaranteed to be delivered to the target chain in the same order they're sent from -the source chain. In other words, message with nonce `N` will be delivered right before delivering a -message with nonce `N+1`. - -Single message lane may be seen as a transport channel for single application (onchain, offchain or -mixed). At the same time the module itself never dictates any lane or message rules. In the end, it -is the runtime developer who defines what message lane and message mean for this runtime. - -## Message Workflow - -The message "appears" when its submitter calls the `send_message()` function of the module. The -submitter specifies the lane that he's willing to use, the message itself and the fee that he's -willing to pay for the message delivery and dispatch. If a message passes all checks, the nonce is -assigned and the message is stored in the module storage. The message is in an "undelivered" state -now. - -We assume that there are external, offchain actors, called relayers, that are submitting module -related transactions to both target and source chains. The pallet itself has no assumptions about -relayers incentivization scheme, but it has some callbacks for paying rewards. See -[Integrating Messages Module into runtime](#Integrating-Messages-Module-into-runtime) -for details. - -Eventually, some relayer would notice this message in the "undelivered" state and it would decide to -deliver this message. Relayer then crafts `receive_messages_proof()` transaction (aka delivery -transaction) for the messages module instance, deployed at the target chain. Relayer provides -his account id at the source chain, the proof of message (or several messages), the number of -messages in the transaction and their cumulative dispatch weight. Once a transaction is mined, the -message is considered "delivered". - -Once a message is delivered, the relayer may want to confirm delivery back to the source chain. -There are two reasons why he would want to do that. The first is that we intentionally limit number -of "delivered", but not yet "confirmed" messages at inbound lanes -(see [What about other Constants in the Messages Module Configuration Trait](#What-about-other-Constants-in-the-Messages-Module-Configuration-Trait) for explanation). -So at some point, the target chain may stop accepting new messages until relayers confirm some of -these. The second is that if the relayer wants to be rewarded for delivery, he must prove the fact -that he has actually delivered the message. And this proof may only be generated after the delivery -transaction is mined. So relayer crafts the `receive_messages_delivery_proof()` transaction (aka -confirmation transaction) for the messages module instance, deployed at the source chain. Once -this transaction is mined, the message is considered "confirmed". - -The "confirmed" state is the final state of the message. But there's one last thing related to the -message - the fact that it is now "confirmed" and reward has been paid to the relayer (or at least -callback for this has been called), must be confirmed to the target chain. Otherwise, we may reach -the limit of "unconfirmed" messages at the target chain and it will stop accepting new messages. So -relayer sometimes includes a nonce of the latest "confirmed" message in the next -`receive_messages_proof()` transaction, proving that some messages have been confirmed. - -## Integrating Messages Module into Runtime - -As it has been said above, the messages module supports both outbound and inbound message lanes. -So if we will integrate a module in some runtime, it may act as the source chain runtime for -outbound messages and as the target chain runtime for inbound messages. In this section, we'll -sometimes refer to the chain we're currently integrating with, as this chain and the other chain as -bridged chain. - -Messages module doesn't simply accept transactions that are claiming that the bridged chain has -some updated data for us. Instead of this, the module assumes that the bridged chain is able to -prove that updated data in some way. The proof is abstracted from the module and may be of any kind. -In our Substrate-to-Substrate bridge we're using runtime storage proofs. Other bridges may use -transaction proofs, Substrate header digests or anything else that may be proved. - -**IMPORTANT NOTE**: everything below in this chapter describes details of the messages module -configuration. But if you interested in well-probed and relatively easy integration of two -Substrate-based chains, you may want to look at the -[bridge-runtime-common](../../bin/runtime-common/README.md) crate. This crate is providing a lot of -helpers for integration, which may be directly used from within your runtime. Then if you'll decide -to change something in this scheme, get back here for detailed information. - -### General Information - -The messages module supports instances. Every module instance is supposed to bridge this chain -and some bridged chain. To bridge with another chain, using another instance is suggested (this -isn't forced anywhere in the code, though). - -Message submitters may track message progress by inspecting module events. When Message is accepted, -the `MessageAccepted` event is emitted in the `send_message()` transaction. The event contains both -message lane identifier and nonce that has been assigned to the message. When a message is delivered -to the target chain, the `MessagesDelivered` event is emitted from the -`receive_messages_delivery_proof()` transaction. The `MessagesDelivered` contains the message lane -identifier, inclusive range of delivered message nonces and their single-bit dispatch results. - -Please note that the meaning of the 'dispatch result' is determined by the message dispatcher at -the target chain. For example, in case of immediate call dispatcher it will be the `true` if call -has been successfully dispatched and `false` if it has only been delivered. This simple mechanism -built into the messages module allows building basic bridge applications, which only care whether -their messages have been successfully dispatched or not. More sophisticated applications may use -their own dispatch result delivery mechanism to deliver something larger than single bit. - -### How to plug-in Messages Module to Send Messages to the Bridged Chain? - -The `pallet_bridge_messages::Config` trait has 3 main associated types that are used to work with -outbound messages. The `pallet_bridge_messages::Config::TargetHeaderChain` defines how we see the -bridged chain as the target for our outbound messages. It must be able to check that the bridged -chain may accept our message - like that the message has size below maximal possible transaction -size of the chain and so on. And when the relayer sends us a confirmation transaction, this -implementation must be able to parse and verify the proof of messages delivery. Normally, you would -reuse the same (configurable) type on all chains that are sending messages to the same bridged -chain. - -The `pallet_bridge_messages::Config::LaneMessageVerifier` defines a single callback to verify outbound -messages. The simplest callback may just accept all messages. But in this case you'll need to answer -many questions first. Who will pay for the delivery and confirmation transaction? Are we sure that -someone will ever deliver this message to the bridged chain? Are we sure that we don't bloat our -runtime storage by accepting this message? What if the message is improperly encoded or has some -fields set to invalid values? Answering all those (and similar) questions would lead to correct -implementation. - -There's another thing to consider when implementing type for use in -`pallet_bridge_messages::Config::LaneMessageVerifier`. It is whether we treat all message lanes -identically, or they'll have different sets of verification rules? For example, you may reserve -lane#1 for messages coming from some 'wrapped-token' pallet - then you may verify in your -implementation that the origin is associated with this pallet. Lane#2 may be reserved for 'system' -messages and you may charge zero fee for such messages. You may have some rate limiting for messages -sent over the lane#3. Or you may just verify the same rules set for all outbound messages - it is -all up to the `pallet_bridge_messages::Config::LaneMessageVerifier` implementation. - -The last type is the `pallet_bridge_messages::Config::MessageDeliveryAndDispatchPayment`. When all -checks are made and we have decided to accept the message, we're calling the -`pay_delivery_and_dispatch_fee()` callback, passing the corresponding argument of the `send_message` -function. Later, when message delivery is confirmed, we're calling `pay_relayers_rewards()` -callback, passing accounts of relayers and messages that they have delivered. The simplest -implementation of this trait is in the [`instant_payments.rs`](./src/instant_payments.rs) module and -simply calls `Currency::transfer()` when those callbacks are called. So `Currency` units are -transferred between submitter, 'relayers fund' and relayers accounts. Other implementations may use -more or less sophisticated techniques - the whole relayers incentivization scheme is not a part of -the messages module. - -### I have a Messages Module in my Runtime, but I Want to Reject all Outbound Messages. What shall I do? - -You should be looking at the `bp_messages::source_chain::ForbidOutboundMessages` structure -[`bp_messages::source_chain`](../../primitives/messages/src/source_chain.rs). It implements -all required traits and will simply reject all transactions, related to outbound messages. - -### How to plug-in Messages Module to Receive Messages from the Bridged Chain? - -The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with -inbound messages. The `pallet_bridge_messages::Config::SourceHeaderChain` defines how we see the -bridged chain as the source or our inbound messages. When relayer sends us a delivery transaction, -this implementation must be able to parse and verify the proof of messages wrapped in this -transaction. Normally, you would reuse the same (configurable) type on all chains that are sending -messages to the same bridged chain. - -The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered -messages. Apart from actually dispatching the message, the implementation must return the correct -dispatch weight of the message before dispatch is called. - -### I have a Messages Module in my Runtime, but I Want to Reject all Inbound Messages. What -shall I do? - -You should be looking at the `bp_messages::target_chain::ForbidInboundMessages` structure from -the [`bp_messages::target_chain`](../../primitives/messages/src/target_chain.rs) module. It -implements all required traits and will simply reject all transactions, related to inbound messages. - -### What about other Constants in the Messages Module Configuration Trait? - -Message is being stored in the source chain storage until its delivery will be confirmed. After -that, we may safely remove the message from the storage. Lane messages are removed (pruned) when -someone sends a new message using the same lane. So the message submitter pays for that pruning. To -avoid pruning too many messages in a single transaction, there's -`pallet_bridge_messages::Config::MaxMessagesToPruneAtOnce` configuration parameter. We will never prune -more than this number of messages in the single transaction. That said, the value should not be too -big to avoid waste of resources when there are no messages to prune. - -To be able to reward the relayer for delivering messages, we store a map of message nonces range => -identifier of the relayer that has delivered this range at the target chain runtime storage. If a -relayer delivers multiple consequent ranges, they're merged into single entry. So there may be more -than one entry for the same relayer. Eventually, this whole map must be delivered back to the source -chain to confirm delivery and pay rewards. So to make sure we are able to craft this confirmation -transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure that -the weight of processing this map is below a certain limit. Both size and processing weight mostly -depend on the number of entries. The number of entries is limited with the -`pallet_bridge_messages::ConfigMaxUnrewardedRelayerEntriesAtInboundLane` parameter. Processing weight -also depends on the total number of messages that are being confirmed, because every confirmed -message needs to be read. So there's another -`pallet_bridge_messages::Config::MaxUnconfirmedMessagesAtInboundLane` parameter for that. - -When choosing values for these parameters, you must also keep in mind that if proof in your scheme -is based on finality of headers (and it is the most obvious option for Substrate-based chains with -finality notion), then choosing too small values for these parameters may cause significant delays -in message delivery. That's because there are too many actors involved in this scheme: 1) authorities -that are finalizing headers of the target chain need to finalize header with non-empty map; 2) the -headers relayer then needs to submit this header and its finality proof to the source chain; 3) the -messages relayer must then send confirmation transaction (storage proof of this map) to the source -chain; 4) when the confirmation transaction will be mined at some header, source chain authorities -must finalize this header; 5) the headers relay then needs to submit this header and its finality -proof to the target chain; 6) only now the messages relayer may submit new messages from the source -to target chain and prune the entry from the map. - -Delivery transaction requires the relayer to provide both number of entries and total number of -messages in the map. This means that the module never charges an extra cost for delivering a map - -the relayer would need to pay exactly for the number of entries+messages it has delivered. So the -best guess for values of these parameters would be the pair that would occupy `N` percent of the -maximal transaction size and weight of the source chain. The `N` should be large enough to process -large maps, at the same time keeping reserve for future source chain upgrades. - -## Non-Essential Functionality - -Apart from the message related calls, the module exposes a set of auxiliary calls. They fall in two -groups, described in the next two paragraphs. - -There may be a special account in every runtime where the messages module is deployed. This -account, named 'module owner', is like a module-level sudo account - he's able to halt all and -result all module operations without requiring runtime upgrade. The module may have no message -owner, but we suggest to use it at least for initial deployment. To calls that are related to this -account are: -- `fn set_owner()`: current module owner may call it to transfer "ownership" to another account; -- `fn halt_operations()`: the module owner (or sudo account) may call this function to stop all - module operations. After this call, all message-related transactions will be rejected until - further `resume_operations` call'. This call may be used when something extraordinary happens with - the bridge; -- `fn resume_operations()`: module owner may call this function to resume bridge operations. The - module will resume its regular operations after this call. - -Apart from halting and resuming the bridge, the module owner may also tune module configuration -parameters without runtime upgrades. The set of parameters needs to be designed in advance, though. -The module configuration trait has associated `Parameter` type, which may be e.g. enum and represent -a set of parameters that may be updated by the module owner. For example, if your bridge needs to -convert sums between different tokens, you may define a 'conversion rate' parameter and let the -module owner update this parameter when there are significant changes in the rate. The corresponding -module call is `fn update_pallet_parameter()`. - -## Weights of Module Extrinsics - -The main assumptions behind weight formulas is: -- all possible costs are paid in advance by the message submitter; -- whenever possible, relayer tries to minimize cost of its transactions. So e.g. even though sender - always pays for delivering outbound lane state proof, relayer may not include it in the delivery - transaction (unless messages module on target chain requires that); -- weight formula should incentivize relayer to not to submit any redundant data in the extrinsics - arguments; -- the extrinsic shall never be executing slower (i.e. has larger actual weight) than defined by the - formula. - -### Weight of `send_message` call - -#### Related benchmarks - -| Benchmark | Description | -|-----------------------------------|-----------------------------------------------------| -`send_minimal_message_worst_case` | Sends 0-size message with worst possible conditions | -`send_1_kb_message_worst_case` | Sends 1KB-size message with worst possible conditions | -`send_16_kb_message_worst_case` | Sends 16KB-size message with worst possible conditions | - -#### Weight formula - -The weight formula is: -``` -Weight = BaseWeight + MessageSizeInKilobytes * MessageKiloByteSendWeight -``` - -Where: - -| Component | How it is computed? | Description | -|-----------------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| -| `SendMessageOverhead` | `send_minimal_message_worst_case` | Weight of sending minimal (0 bytes) message | -| `MessageKiloByteSendWeight` | `(send_16_kb_message_worst_case - send_1_kb_message_worst_case)/15` | Weight of sending every additional kilobyte of the message | - -### Weight of `receive_messages_proof` call - -#### Related benchmarks - -| Benchmark | Description* | -|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| `receive_single_message_proof` | Receives proof of single `EXPECTED_DEFAULT_MESSAGE_LENGTH` message | -| `receive_two_messages_proof` | Receives proof of two identical `EXPECTED_DEFAULT_MESSAGE_LENGTH` messages | -| `receive_single_message_proof_with_outbound_lane_state` | Receives proof of single `EXPECTED_DEFAULT_MESSAGE_LENGTH` message and proof of outbound lane state at the source chain | -| `receive_single_message_proof_1_kb` | Receives proof of single message. The proof has size of approximately 1KB** | -| `receive_single_message_proof_16_kb` | Receives proof of single message. The proof has size of approximately 16KB** | - -*\* - In all benchmarks all received messages are dispatched and their dispatch cost is near to zero* - -*\*\* - Trie leafs are assumed to have minimal values. The proof is derived from the minimal proof -by including more trie nodes. That's because according to `receive_message_proofs_with_large_leaf` -and `receive_message_proofs_with_extra_nodes` benchmarks, increasing proof by including more nodes -has slightly larger impact on performance than increasing values stored in leafs*. - -#### Weight formula - -The weight formula is: -``` -Weight = BaseWeight + OutboundStateDeliveryWeight - + MessagesCount * MessageDeliveryWeight - + MessagesDispatchWeight - + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight -``` - -Where: - -| Component | How it is computed? | Description | -|-------------------------------|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `BaseWeight` | `2*receive_single_message_proof - receive_two_messages_proof` | Weight of receiving and parsing minimal proof | -| `OutboundStateDeliveryWeight` | `receive_single_message_proof_with_outbound_lane_state - receive_single_message_proof` | Additional weight when proof includes outbound lane state | -| `MessageDeliveryWeight` | `receive_two_messages_proof - receive_single_message_proof` | Weight of of parsing and dispatching (without actual dispatch cost) of every message | -| `MessagesCount` | | Provided by relayer | -| `MessagesDispatchWeight` | | Provided by relayer | -| `ActualProofSize` | | Provided by relayer | -| `ExpectedProofSize` | `EXPECTED_DEFAULT_MESSAGE_LENGTH * MessagesCount + EXTRA_STORAGE_PROOF_SIZE` | Size of proof that we are expecting. This only includes `EXTRA_STORAGE_PROOF_SIZE` once, because we assume that intermediate nodes likely to be included in the proof only once. This may be wrong, but since weight of processing proof with many nodes is almost equal to processing proof with large leafs, additional cost will be covered because we're charging for extra proof bytes anyway | -| `ProofByteDeliveryWeight` | `(receive_single_message_proof_16_kb - receive_single_message_proof_1_kb) / (15 * 1024)` | Weight of processing every additional proof byte over `ExpectedProofSize` limit | - -#### Why for every message sent using `send_message` we will be able to craft `receive_messages_proof` transaction? - -We have following checks in `send_message` transaction on the source chain: -- message size should be less than or equal to `2/3` of maximal extrinsic size on the target chain; -- message dispatch weight should be less than or equal to the `1/2` of maximal extrinsic dispatch - weight on the target chain. - -Delivery transaction is an encoded delivery call and signed extensions. So we have `1/3` of maximal -extrinsic size reserved for: -- storage proof, excluding the message itself. Currently, on our test chains, the overhead is always - within `EXTRA_STORAGE_PROOF_SIZE` limits (1024 bytes); -- signed extras and other call arguments (`relayer_id: SourceChain::AccountId`, `messages_count: - u32`, `dispatch_weight: u64`). - -On Millau chain, maximal extrinsic size is `0.75 * 2MB`, so `1/3` is `512KB` (`524_288` bytes). This -should be enough to cover these extra arguments and signed extensions. - -Let's exclude message dispatch cost from single message delivery transaction weight formula: -``` -Weight = BaseWeight + OutboundStateDeliveryWeight + MessageDeliveryWeight - + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight -``` - -So we have `1/2` of maximal extrinsic weight to cover these components. `BaseWeight`, -`OutboundStateDeliveryWeight` and `MessageDeliveryWeight` are determined using benchmarks and are -hardcoded into runtime. Adequate relayer would only include required trie nodes into the proof. So -if message size would be maximal (`2/3` of `MaximalExtrinsicSize`), then the extra proof size would -be `MaximalExtrinsicSize / 3 * 2 - EXPECTED_DEFAULT_MESSAGE_LENGTH`. - -Both conditions are verified by `pallet_bridge_messages::ensure_weights_are_correct` and -`pallet_bridge_messages::ensure_able_to_receive_messages` functions, which must be called from every -runtime's tests. - -### Post-dispatch weight refunds of the `receive_messages_proof` call - -Weight formula of the `receive_messages_proof` call assumes that the dispatch fee of every message is -paid at the target chain (where call is executed), that every message will be dispatched and that -dispatch weight of the message will be exactly the weight that is returned from the -`MessageDispatch::dispatch_weight` method call. This isn't true for all messages, so the call returns -actual weight used to dispatch messages. - -This actual weight is the weight, returned by the weight formula, minus: -- the weight of undispatched messages, if we have failed to dispatch because of different issues; -- the unspent dispatch weight if the declared weight of some messages is less than their actual post-dispatch weight; -- the pay-dispatch-fee weight for every message that had dispatch fee paid at the source chain. - -The last component is computed as a difference between two benchmarks results - the `receive_single_message_proof` -benchmark (that assumes that the fee is paid during dispatch) and the `receive_single_prepaid_message_proof` -(that assumes that the dispatch fee is already paid). - -### Weight of `receive_messages_delivery_proof` call - -#### Related benchmarks - -| Benchmark | Description | -|-------------------------------------------------------------|------------------------------------------------------------------------------------------| -| `receive_delivery_proof_for_single_message` | Receives proof of single message delivery | -| `receive_delivery_proof_for_two_messages_by_single_relayer` | Receives proof of two messages delivery. Both messages are delivered by the same relayer | -| `receive_delivery_proof_for_two_messages_by_two_relayers` | Receives proof of two messages delivery. Messages are delivered by different relayers | - -#### Weight formula - -The weight formula is: -``` -Weight = BaseWeight + MessagesCount * MessageConfirmationWeight - + RelayersCount * RelayerRewardWeight - + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight -``` - -Where: - -| Component | How it is computed? | Description | -|---------------------------|-----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `BaseWeight` | `2*receive_delivery_proof_for_single_message - receive_delivery_proof_for_two_messages_by_single_relayer` | Weight of receiving and parsing minimal delivery proof | -| `MessageDeliveryWeight` | `receive_delivery_proof_for_two_messages_by_single_relayer - receive_delivery_proof_for_single_message` | Weight of confirming every additional message | -| `MessagesCount` | | Provided by relayer | -| `RelayerRewardWeight` | `receive_delivery_proof_for_two_messages_by_two_relayers - receive_delivery_proof_for_two_messages_by_single_relayer` | Weight of rewarding every additional relayer | -| `RelayersCount` | | Provided by relayer | -| `ActualProofSize` | | Provided by relayer | -| `ExpectedProofSize` | `EXTRA_STORAGE_PROOF_SIZE` | Size of proof that we are expecting | -| `ProofByteDeliveryWeight` | `(receive_single_message_proof_16_kb - receive_single_message_proof_1_kb) / (15 * 1024)` | Weight of processing every additional proof byte over `ExpectedProofSize` limit. We're using the same formula, as for message delivery, because proof mechanism is assumed to be the same in both cases | - -#### Why we're always able to craft `receive_messages_delivery_proof` transaction? - -There can be at most `::MaxUnconfirmedMessagesAtInboundLane` -messages and at most -`::MaxUnrewardedRelayerEntriesAtInboundLane` unrewarded -relayers in the single delivery confirmation transaction. - -We're checking that this transaction may be crafted in the -`pallet_bridge_messages::ensure_able_to_receive_confirmation` function, which must be called from every -runtime' tests. diff --git a/bridges/modules/messages/src/benchmarking.rs b/bridges/modules/messages/src/benchmarking.rs deleted file mode 100644 index 54cb7c26cd3d..000000000000 --- a/bridges/modules/messages/src/benchmarking.rs +++ /dev/null @@ -1,933 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Messages pallet benchmarking. - -use crate::weights_ext::EXPECTED_DEFAULT_MESSAGE_LENGTH; -use crate::{ - inbound_lane::InboundLaneStorage, inbound_lane_storage, outbound_lane, outbound_lane::ReceivalConfirmationResult, - Call, Instance, -}; - -use bp_messages::{ - source_chain::TargetHeaderChain, target_chain::SourceHeaderChain, DeliveredMessages, InboundLaneData, LaneId, - MessageData, MessageNonce, OutboundLaneData, UnrewardedRelayer, UnrewardedRelayersState, -}; -use bp_runtime::messages::DispatchFeePayment; -use frame_benchmarking::{account, benchmarks_instance}; -use frame_support::{traits::Get, weights::Weight}; -use frame_system::RawOrigin; -use sp_std::{ - collections::{btree_map::BTreeMap, vec_deque::VecDeque}, - convert::TryInto, - ops::RangeInclusive, - prelude::*, -}; - -/// Fee paid by submitter for single message delivery. -pub const MESSAGE_FEE: u64 = 10_000_000_000; - -const SEED: u32 = 0; - -/// Pallet we're benchmarking here. -pub struct Pallet, I: crate::Instance>(crate::Pallet); - -/// Proof size requirements. -pub enum ProofSize { - /// The proof is expected to be minimal. If value size may be changed, then it is expected to - /// have given size. - Minimal(u32), - /// The proof is expected to have at least given size and grow by increasing number of trie nodes - /// included in the proof. - HasExtraNodes(u32), - /// The proof is expected to have at least given size and grow by increasing value that is stored - /// in the trie. - HasLargeLeaf(u32), -} - -/// Benchmark-specific message parameters. -pub struct MessageParams { - /// Size of the message payload. - pub size: u32, - /// Message sender account. - pub sender_account: ThisAccountId, -} - -/// Benchmark-specific message proof parameters. -pub struct MessageProofParams { - /// Id of the lane. - pub lane: LaneId, - /// Range of messages to include in the proof. - pub message_nonces: RangeInclusive, - /// If `Some`, the proof needs to include this outbound lane data. - pub outbound_lane_data: Option, - /// Proof size requirements. - pub size: ProofSize, - /// Where the fee for dispatching message is paid? - pub dispatch_fee_payment: DispatchFeePayment, -} - -/// Benchmark-specific message delivery proof parameters. -pub struct MessageDeliveryProofParams { - /// Id of the lane. - pub lane: LaneId, - /// The proof needs to include this inbound lane data. - pub inbound_lane_data: InboundLaneData, - /// Proof size requirements. - pub size: ProofSize, -} - -/// Trait that must be implemented by runtime. -pub trait Config: crate::Config { - /// Lane id to use in benchmarks. - fn bench_lane_id() -> LaneId { - Default::default() - } - /// Get maximal size of the message payload. - fn maximal_message_size() -> u32; - /// Return id of relayer account at the bridged chain. - fn bridged_relayer_id() -> Self::InboundRelayer; - /// Return balance of given account. - fn account_balance(account: &Self::AccountId) -> Self::OutboundMessageFee; - /// Create given account and give it enough balance for test purposes. - fn endow_account(account: &Self::AccountId); - /// Prepare message to send over lane. - fn prepare_outbound_message( - params: MessageParams, - ) -> (Self::OutboundPayload, Self::OutboundMessageFee); - /// Prepare messages proof to receive by the module. - fn prepare_message_proof( - params: MessageProofParams, - ) -> ( - >::MessagesProof, - Weight, - ); - /// Prepare messages delivery proof to receive by the module. - fn prepare_message_delivery_proof( - params: MessageDeliveryProofParams, - ) -> >::MessagesDeliveryProof; - /// Returns true if message has been dispatched (either successfully or not). - fn is_message_dispatched(nonce: MessageNonce) -> bool; -} - -benchmarks_instance! { - // - // Benchmarks that are used directly by the runtime. - // - - // Benchmark `send_message` extrinsic with the worst possible conditions: - // * outbound lane already has state, so it needs to be read and decoded; - // * relayers fund account does not exists (in practice it needs to exist in production environment); - // * maximal number of messages is being pruned during the call; - // * message size is minimal for the target chain. - // - // Result of this benchmark is used as a base weight for `send_message` call. Then the 'message weight' - // (estimated using `send_half_maximal_message_worst_case` and `send_maximal_message_worst_case`) is - // added. - send_minimal_message_worst_case { - let lane_id = T::bench_lane_id(); - let sender = account("sender", 0, SEED); - T::endow_account(&sender); - - // 'send' messages that are to be pruned when our message is sent - for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { - send_regular_message::(); - } - confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); - - let (payload, fee) = T::prepare_outbound_message(MessageParams { - size: 0, - sender_account: sender.clone(), - }); - }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) - verify { - assert_eq!( - crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), - T::MaxMessagesToPruneAtOnce::get() + 1, - ); - } - - // Benchmark `send_message` extrinsic with the worst possible conditions: - // * outbound lane already has state, so it needs to be read and decoded; - // * relayers fund account does not exists (in practice it needs to exist in production environment); - // * maximal number of messages is being pruned during the call; - // * message size is 1KB. - // - // With single KB of message size, the weight of the call is increased (roughly) by - // `(send_16_kb_message_worst_case - send_1_kb_message_worst_case) / 15`. - send_1_kb_message_worst_case { - let lane_id = T::bench_lane_id(); - let sender = account("sender", 0, SEED); - T::endow_account(&sender); - - // 'send' messages that are to be pruned when our message is sent - for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { - send_regular_message::(); - } - confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); - - let size = 1024; - assert!( - T::maximal_message_size() > size, - "This benchmark can only be used with runtime that accepts 1KB messages", - ); - - let (payload, fee) = T::prepare_outbound_message(MessageParams { - size, - sender_account: sender.clone(), - }); - }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) - verify { - assert_eq!( - crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), - T::MaxMessagesToPruneAtOnce::get() + 1, - ); - } - - // Benchmark `send_message` extrinsic with the worst possible conditions: - // * outbound lane already has state, so it needs to be read and decoded; - // * relayers fund account does not exists (in practice it needs to exist in production environment); - // * maximal number of messages is being pruned during the call; - // * message size is 16KB. - // - // With single KB of message size, the weight of the call is increased (roughly) by - // `(send_16_kb_message_worst_case - send_1_kb_message_worst_case) / 15`. - send_16_kb_message_worst_case { - let lane_id = T::bench_lane_id(); - let sender = account("sender", 0, SEED); - T::endow_account(&sender); - - // 'send' messages that are to be pruned when our message is sent - for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { - send_regular_message::(); - } - confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); - - let size = 16 * 1024; - assert!( - T::maximal_message_size() > size, - "This benchmark can only be used with runtime that accepts 16KB messages", - ); - - let (payload, fee) = T::prepare_outbound_message(MessageParams { - size, - sender_account: sender.clone(), - }); - }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) - verify { - assert_eq!( - crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), - T::MaxMessagesToPruneAtOnce::get() + 1, - ); - } - - // Benchmark `increase_message_fee` with following conditions: - // * message has maximal message; - // * submitter account is killed because its balance is less than ED after payment. - increase_message_fee { - let sender = account("sender", 42, SEED); - T::endow_account(&sender); - - let additional_fee = T::account_balance(&sender); - let lane_id = T::bench_lane_id(); - let nonce = 1; - - send_regular_message_with_payload::(vec![42u8; T::maximal_message_size() as _]); - }: increase_message_fee(RawOrigin::Signed(sender.clone()), lane_id, nonce, additional_fee) - verify { - assert_eq!(T::account_balance(&sender), 0.into()); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher; - // * message dispatch fee is paid at target (this) chain. - // - // This is base benchmark for all other message delivery benchmarks. - receive_single_message_proof { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - assert!(T::is_message_dispatched(21)); - } - - // Benchmark `receive_messages_proof` extrinsic with two minimal-weight messages and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher; - // * message dispatch fee is paid at target (this) chain. - // - // The weight of single message delivery could be approximated as - // `weight(receive_two_messages_proof) - weight(receive_single_message_proof)`. - // This won't be super-accurate if message has non-zero dispatch weight, but estimation should - // be close enough to real weight. - receive_two_messages_proof { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=22, - outbound_lane_data: None, - size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 2, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 22, - ); - assert!(T::is_message_dispatched(22)); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * proof includes outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher; - // * message dispatch fee is paid at target (this) chain. - // - // The weight of outbound lane state delivery would be - // `weight(receive_single_message_proof_with_outbound_lane_state) - weight(receive_single_message_proof)`. - // This won't be super-accurate if message has non-zero dispatch weight, but estimation should - // be close enough to real weight. - receive_single_message_proof_with_outbound_lane_state { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 21, - latest_received_nonce: 20, - latest_generated_nonce: 21, - }), - size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - assert_eq!( - crate::Pallet::::inbound_latest_confirmed_nonce(T::bench_lane_id()), - 20, - ); - assert!(T::is_message_dispatched(21)); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * the proof has many redundand trie nodes with total size of approximately 1KB; - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // With single KB of messages proof, the weight of the call is increased (roughly) by - // `(receive_single_message_proof_16KB - receive_single_message_proof_1_kb) / 15`. - receive_single_message_proof_1_kb { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::HasExtraNodes(1024), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - assert!(T::is_message_dispatched(21)); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * the proof has many redundand trie nodes with total size of approximately 16KB; - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // Size of proof grows because it contains extra trie nodes in it. - // - // With single KB of messages proof, the weight of the call is increased (roughly) by - // `(receive_single_message_proof_16KB - receive_single_message_proof) / 15`. - receive_single_message_proof_16_kb { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::HasExtraNodes(16 * 1024), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - assert!(T::is_message_dispatched(21)); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher; - // * message dispatch fee is paid at source (bridged) chain. - // - // This benchmark is used to compute extra weight spent at target chain when fee is paid there. Then we use - // this information in two places: (1) to reduce weight of delivery tx if sender pays fee at the source chain - // and (2) to refund relayer with this weight if fee has been paid at the source chain. - receive_single_prepaid_message_proof { - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - }); - }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - assert!(T::is_message_dispatched(21)); - } - - // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: - // * single relayer is rewarded for relaying single message; - // * relayer account does not exist (in practice it needs to exist in production environment). - // - // This is base benchmark for all other confirmations delivery benchmarks. - receive_delivery_proof_for_single_message { - let relayers_fund_id = crate::Pallet::::relayer_fund_account_id(); - let relayer_id: T::AccountId = account("relayer", 0, SEED); - let relayer_balance = T::account_balance(&relayer_id); - T::endow_account(&relayers_fund_id); - - // send message that we're going to confirm - send_regular_message::(); - - let relayers_state = UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - messages_in_oldest_entry: 1, - total_messages: 1, - }; - let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { - lane: T::bench_lane_id(), - inbound_lane_data: InboundLaneData { - relayers: vec![UnrewardedRelayer { - relayer: relayer_id.clone(), - messages: DeliveredMessages::new(1, true), - }].into_iter().collect(), - last_confirmed_nonce: 0, - }, - size: ProofSize::Minimal(0), - }); - }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) - verify { - assert_eq!( - T::account_balance(&relayer_id), - relayer_balance + MESSAGE_FEE.into(), - ); - } - - // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: - // * single relayer is rewarded for relaying two messages; - // * relayer account does not exist (in practice it needs to exist in production environment). - // - // Additional weight for paying single-message reward to the same relayer could be computed - // as `weight(receive_delivery_proof_for_two_messages_by_single_relayer) - // - weight(receive_delivery_proof_for_single_message)`. - receive_delivery_proof_for_two_messages_by_single_relayer { - let relayers_fund_id = crate::Pallet::::relayer_fund_account_id(); - let relayer_id: T::AccountId = account("relayer", 0, SEED); - let relayer_balance = T::account_balance(&relayer_id); - T::endow_account(&relayers_fund_id); - - // send message that we're going to confirm - send_regular_message::(); - send_regular_message::(); - - let relayers_state = UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - messages_in_oldest_entry: 2, - total_messages: 2, - }; - let mut delivered_messages = DeliveredMessages::new(1, true); - delivered_messages.note_dispatched_message(true); - let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { - lane: T::bench_lane_id(), - inbound_lane_data: InboundLaneData { - relayers: vec![UnrewardedRelayer { - relayer: relayer_id.clone(), - messages: delivered_messages, - }].into_iter().collect(), - last_confirmed_nonce: 0, - }, - size: ProofSize::Minimal(0), - }); - }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) - verify { - ensure_relayer_rewarded::(&relayer_id, &relayer_balance); - } - - // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: - // * two relayers are rewarded for relaying single message each; - // * relayer account does not exist (in practice it needs to exist in production environment). - // - // Additional weight for paying reward to the next relayer could be computed - // as `weight(receive_delivery_proof_for_two_messages_by_two_relayers) - // - weight(receive_delivery_proof_for_two_messages_by_single_relayer)`. - receive_delivery_proof_for_two_messages_by_two_relayers { - let relayers_fund_id = crate::Pallet::::relayer_fund_account_id(); - let relayer1_id: T::AccountId = account("relayer1", 1, SEED); - let relayer1_balance = T::account_balance(&relayer1_id); - let relayer2_id: T::AccountId = account("relayer2", 2, SEED); - let relayer2_balance = T::account_balance(&relayer2_id); - T::endow_account(&relayers_fund_id); - - // send message that we're going to confirm - send_regular_message::(); - send_regular_message::(); - - let relayers_state = UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - messages_in_oldest_entry: 1, - total_messages: 2, - }; - let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { - lane: T::bench_lane_id(), - inbound_lane_data: InboundLaneData { - relayers: vec![ - UnrewardedRelayer { - relayer: relayer1_id.clone(), - messages: DeliveredMessages::new(1, true), - }, - UnrewardedRelayer { - relayer: relayer2_id.clone(), - messages: DeliveredMessages::new(2, true), - }, - ].into_iter().collect(), - last_confirmed_nonce: 0, - }, - size: ProofSize::Minimal(0), - }); - }: receive_messages_delivery_proof(RawOrigin::Signed(relayer1_id.clone()), proof, relayers_state) - verify { - ensure_relayer_rewarded::(&relayer1_id, &relayer1_balance); - ensure_relayer_rewarded::(&relayer2_id, &relayer2_balance); - } - - // - // Benchmarks for manual checks. - // - - // Benchmark `send_message` extrinsic with following conditions: - // * outbound lane already has state, so it needs to be read and decoded; - // * relayers fund account does not exists (in practice it needs to exist in production environment); - // * maximal number of messages is being pruned during the call; - // * message size varies from minimal to maximal for the target chain. - // - // Results of this benchmark may be used to check how message size affects `send_message` performance. - send_messages_of_various_lengths { - let i in 0..T::maximal_message_size().try_into().unwrap_or_default(); - - let lane_id = T::bench_lane_id(); - let sender = account("sender", 0, SEED); - T::endow_account(&sender); - - // 'send' messages that are to be pruned when our message is sent - for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { - send_regular_message::(); - } - confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); - - let (payload, fee) = T::prepare_outbound_message(MessageParams { - size: i as _, - sender_account: sender.clone(), - }); - }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) - verify { - assert_eq!( - crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), - T::MaxMessagesToPruneAtOnce::get() + 1, - ); - } - - // Benchmark `receive_messages_proof` extrinsic with multiple minimal-weight messages and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // This benchmarks gives us an approximation of single message delivery weight. It is similar to the - // `weight(receive_two_messages_proof) - weight(receive_single_message_proof)`. So it may be used - // to verify that the other approximation is correct. - receive_multiple_messages_proof { - let i in 1..64; - - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - let messages_count = i as _; - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=(20 + i as MessageNonce), - outbound_lane_data: None, - size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof( - RawOrigin::Signed(relayer_id_on_target), - relayer_id_on_source, - proof, - messages_count, - dispatch_weight - ) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 20 + i as MessageNonce, - ); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // Results of this benchmark may be used to check how proof size affects `receive_message_proof` performance. - receive_message_proofs_with_extra_nodes { - let i in 0..T::maximal_message_size(); - - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - let messages_count = 1u32; - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::HasExtraNodes(i as _), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof( - RawOrigin::Signed(relayer_id_on_target), - relayer_id_on_source, - proof, - messages_count, - dispatch_weight - ) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - } - - // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: - // * proof does not include outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // Results of this benchmark may be used to check how message size affects `receive_message_proof` performance. - receive_message_proofs_with_large_leaf { - let i in 0..T::maximal_message_size(); - - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - let messages_count = 1u32; - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=21, - outbound_lane_data: None, - size: ProofSize::HasLargeLeaf(i as _), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof( - RawOrigin::Signed(relayer_id_on_target), - relayer_id_on_source, - proof, - messages_count, - dispatch_weight - ) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 21, - ); - } - - // Benchmark `receive_messages_proof` extrinsic with multiple minimal-weight messages and following conditions: - // * proof includes outbound lane state proof; - // * inbound lane already has state, so it needs to be read and decoded; - // * message is successfully dispatched; - // * message requires all heavy checks done by dispatcher. - // - // This benchmarks gives us an approximation of outbound lane state delivery weight. It is similar to the - // `weight(receive_single_message_proof_with_outbound_lane_state) - weight(receive_single_message_proof)`. - // So it may be used to verify that the other approximation is correct. - receive_multiple_messages_proof_with_outbound_lane_state { - let i in 1..128; - - let relayer_id_on_source = T::bridged_relayer_id(); - let relayer_id_on_target = account("relayer", 0, SEED); - let messages_count = i as _; - - // mark messages 1..=20 as delivered - receive_messages::(20); - - let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { - lane: T::bench_lane_id(), - message_nonces: 21..=20 + i as MessageNonce, - outbound_lane_data: Some(OutboundLaneData { - oldest_unpruned_nonce: 21, - latest_received_nonce: 20, - latest_generated_nonce: 21, - }), - size: ProofSize::Minimal(0), - dispatch_fee_payment: DispatchFeePayment::AtTargetChain, - }); - }: receive_messages_proof( - RawOrigin::Signed(relayer_id_on_target), - relayer_id_on_source, - proof, - messages_count, - dispatch_weight - ) - verify { - assert_eq!( - crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), - 20 + i as MessageNonce, - ); - assert_eq!( - crate::Pallet::::inbound_latest_confirmed_nonce(T::bench_lane_id()), - 20, - ); - } - - // Benchmark `receive_messages_delivery_proof` extrinsic where single relayer delivers multiple messages. - receive_delivery_proof_for_multiple_messages_by_single_relayer { - // there actually should be used value of `MaxUnrewardedRelayerEntriesAtInboundLane` from the bridged - // chain, but we're more interested in additional weight/message than in max weight - let i in 1..T::MaxUnrewardedRelayerEntriesAtInboundLane::get() - .try_into() - .expect("Value of MaxUnrewardedRelayerEntriesAtInboundLane is too large"); - - let relayers_fund_id = crate::Pallet::::relayer_fund_account_id(); - let relayer_id: T::AccountId = account("relayer", 0, SEED); - let relayer_balance = T::account_balance(&relayer_id); - T::endow_account(&relayers_fund_id); - - // send messages that we're going to confirm - for _ in 1..=i { - send_regular_message::(); - } - - let relayers_state = UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - messages_in_oldest_entry: 1, - total_messages: i as MessageNonce, - }; - let mut delivered_messages = DeliveredMessages::new(1, true); - for nonce in 2..=i { - delivered_messages.note_dispatched_message(true); - } - let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { - lane: T::bench_lane_id(), - inbound_lane_data: InboundLaneData { - relayers: vec![UnrewardedRelayer { - relayer: relayer_id.clone(), - messages: delivered_messages, - }].into_iter().collect(), - last_confirmed_nonce: 0, - }, - size: ProofSize::Minimal(0), - }); - }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) - verify { - ensure_relayer_rewarded::(&relayer_id, &relayer_balance); - } - - // Benchmark `receive_messages_delivery_proof` extrinsic where every relayer delivers single messages. - receive_delivery_proof_for_multiple_messages_by_multiple_relayers { - // there actually should be used value of `MaxUnconfirmedMessagesAtInboundLane` from the bridged - // chain, but we're more interested in additional weight/message than in max weight - let i in 1..T::MaxUnconfirmedMessagesAtInboundLane::get() - .try_into() - .expect("Value of MaxUnconfirmedMessagesAtInboundLane is too large "); - - let relayers_fund_id = crate::Pallet::::relayer_fund_account_id(); - let confirmation_relayer_id = account("relayer", 0, SEED); - let relayers: BTreeMap = (1..=i) - .map(|j| { - let relayer_id = account("relayer", j + 1, SEED); - let relayer_balance = T::account_balance(&relayer_id); - (relayer_id, relayer_balance) - }) - .collect(); - T::endow_account(&relayers_fund_id); - - // send messages that we're going to confirm - for _ in 1..=i { - send_regular_message::(); - } - - let relayers_state = UnrewardedRelayersState { - unrewarded_relayer_entries: i as MessageNonce, - messages_in_oldest_entry: 1, - total_messages: i as MessageNonce, - }; - let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { - lane: T::bench_lane_id(), - inbound_lane_data: InboundLaneData { - relayers: relayers - .keys() - .enumerate() - .map(|(j, relayer)| UnrewardedRelayer { - relayer: relayer.clone(), - messages: DeliveredMessages::new(j as MessageNonce + 1, true), - }) - .collect(), - last_confirmed_nonce: 0, - }, - size: ProofSize::Minimal(0), - }); - }: receive_messages_delivery_proof(RawOrigin::Signed(confirmation_relayer_id), proof, relayers_state) - verify { - for (relayer_id, prev_balance) in relayers { - ensure_relayer_rewarded::(&relayer_id, &prev_balance); - } - } -} - -fn send_regular_message, I: Instance>() { - let mut outbound_lane = outbound_lane::(T::bench_lane_id()); - outbound_lane.send_message(MessageData { - payload: vec![], - fee: MESSAGE_FEE.into(), - }); -} - -fn send_regular_message_with_payload, I: Instance>(payload: Vec) { - let mut outbound_lane = outbound_lane::(T::bench_lane_id()); - outbound_lane.send_message(MessageData { - payload, - fee: MESSAGE_FEE.into(), - }); -} - -fn confirm_message_delivery, I: Instance>(nonce: MessageNonce) { - let mut outbound_lane = outbound_lane::(T::bench_lane_id()); - let latest_received_nonce = outbound_lane.data().latest_received_nonce; - let mut relayers = VecDeque::with_capacity((nonce - latest_received_nonce) as usize); - for nonce in latest_received_nonce + 1..=nonce { - relayers.push_back(UnrewardedRelayer { - relayer: (), - messages: DeliveredMessages::new(nonce, true), - }); - } - assert!(matches!( - outbound_lane.confirm_delivery(nonce, &relayers), - ReceivalConfirmationResult::ConfirmedMessages(_), - )); -} - -fn receive_messages, I: Instance>(nonce: MessageNonce) { - let mut inbound_lane_storage = inbound_lane_storage::(T::bench_lane_id()); - inbound_lane_storage.set_data(InboundLaneData { - relayers: vec![UnrewardedRelayer { - relayer: T::bridged_relayer_id(), - messages: DeliveredMessages::new(nonce, true), - }] - .into_iter() - .collect(), - last_confirmed_nonce: 0, - }); -} - -fn ensure_relayer_rewarded, I: Instance>(relayer_id: &T::AccountId, old_balance: &T::OutboundMessageFee) { - let new_balance = T::account_balance(relayer_id); - assert!( - new_balance > *old_balance, - "Relayer haven't received reward for relaying message: old balance = {:?}, new balance = {:?}", - old_balance, - new_balance, - ); -} diff --git a/bridges/modules/messages/src/instant_payments.rs b/bridges/modules/messages/src/instant_payments.rs deleted file mode 100644 index 524a3765d6ad..000000000000 --- a/bridges/modules/messages/src/instant_payments.rs +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Implementation of `MessageDeliveryAndDispatchPayment` trait on top of `Currency` trait. -//! -//! The payment is first transferred to a special `relayers-fund` account and only transferred -//! to the actual relayer in case confirmation is received. - -use bp_messages::{ - source_chain::{MessageDeliveryAndDispatchPayment, RelayersRewards, Sender}, - MessageNonce, -}; -use codec::Encode; -use frame_support::traits::{Currency as CurrencyT, ExistenceRequirement, Get}; -use num_traits::Zero; -use sp_runtime::traits::Saturating; -use sp_std::fmt::Debug; - -/// Instant message payments made in given currency. -/// -/// The balance is initally reserved in a special `relayers-fund` account, and transferred -/// to the relayer when message delivery is confirmed. -/// -/// Additionaly, confirmation transaction submitter (`confirmation_relayer`) is reimbursed -/// with the confirmation rewards (part of message fee, reserved to pay for delivery confirmation). -/// -/// NOTE The `relayers-fund` account must always exist i.e. be over Existential Deposit (ED; the -/// pallet enforces that) to make sure that even if the message cost is below ED it is still payed -/// to the relayer account. -/// NOTE It's within relayer's interest to keep their balance above ED as well, to make sure they -/// can receive the payment. -pub struct InstantCurrencyPayments { - _phantom: sp_std::marker::PhantomData<(T, Currency, GetConfirmationFee, RootAccount)>, -} - -impl MessageDeliveryAndDispatchPayment - for InstantCurrencyPayments -where - T: frame_system::Config, - Currency: CurrencyT, - Currency::Balance: From, - GetConfirmationFee: Get, - RootAccount: Get>, -{ - type Error = &'static str; - - fn initialize(relayer_fund_account: &T::AccountId) -> usize { - assert!( - frame_system::Pallet::::account_exists(relayer_fund_account), - "The relayer fund account ({:?}) must exist for the message lanes pallet to work correctly.", - relayer_fund_account, - ); - 1 - } - - fn pay_delivery_and_dispatch_fee( - submitter: &Sender, - fee: &Currency::Balance, - relayer_fund_account: &T::AccountId, - ) -> Result<(), Self::Error> { - let root_account = RootAccount::get(); - let account = match submitter { - Sender::Signed(submitter) => submitter, - Sender::Root | Sender::None => root_account - .as_ref() - .ok_or("Sending messages using Root or None origin is disallowed.")?, - }; - - Currency::transfer( - account, - relayer_fund_account, - *fee, - // it's fine for the submitter to go below Existential Deposit and die. - ExistenceRequirement::AllowDeath, - ) - .map_err(Into::into) - } - - fn pay_relayers_rewards( - confirmation_relayer: &T::AccountId, - relayers_rewards: RelayersRewards, - relayer_fund_account: &T::AccountId, - ) { - pay_relayers_rewards::( - confirmation_relayer, - relayers_rewards, - relayer_fund_account, - GetConfirmationFee::get(), - ); - } -} - -/// Pay rewards to given relayers, optionally rewarding confirmation relayer. -fn pay_relayers_rewards( - confirmation_relayer: &AccountId, - relayers_rewards: RelayersRewards, - relayer_fund_account: &AccountId, - confirmation_fee: Currency::Balance, -) where - AccountId: Debug + Default + Encode + PartialEq, - Currency: CurrencyT, - Currency::Balance: From, -{ - // reward every relayer except `confirmation_relayer` - let mut confirmation_relayer_reward = Currency::Balance::zero(); - for (relayer, reward) in relayers_rewards { - let mut relayer_reward = reward.reward; - - if relayer != *confirmation_relayer { - // If delivery confirmation is submitted by other relayer, let's deduct confirmation fee - // from relayer reward. - // - // If confirmation fee has been increased (or if it was the only component of message fee), - // then messages relayer may receive zero reward. - let mut confirmation_reward = confirmation_fee.saturating_mul(reward.messages.into()); - if confirmation_reward > relayer_reward { - confirmation_reward = relayer_reward; - } - relayer_reward = relayer_reward.saturating_sub(confirmation_reward); - confirmation_relayer_reward = confirmation_relayer_reward.saturating_add(confirmation_reward); - } else { - // If delivery confirmation is submitted by this relayer, let's add confirmation fee - // from other relayers to this relayer reward. - confirmation_relayer_reward = confirmation_relayer_reward.saturating_add(reward.reward); - continue; - } - - pay_relayer_reward::(relayer_fund_account, &relayer, relayer_reward); - } - - // finally - pay reward to confirmation relayer - pay_relayer_reward::(relayer_fund_account, confirmation_relayer, confirmation_relayer_reward); -} - -/// Transfer funds from relayers fund account to given relayer. -fn pay_relayer_reward( - relayer_fund_account: &AccountId, - relayer_account: &AccountId, - reward: Currency::Balance, -) where - AccountId: Debug, - Currency: CurrencyT, -{ - if reward.is_zero() { - return; - } - - let pay_result = Currency::transfer( - relayer_fund_account, - relayer_account, - reward, - // the relayer fund account must stay above ED (needs to be pre-funded) - ExistenceRequirement::KeepAlive, - ); - - match pay_result { - Ok(_) => log::trace!( - target: "runtime::bridge-messages", - "Rewarded relayer {:?} with {:?}", - relayer_account, - reward, - ), - Err(error) => log::trace!( - target: "runtime::bridge-messages", - "Failed to pay relayer {:?} reward {:?}: {:?}", - relayer_account, - reward, - error, - ), - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{run_test, AccountId as TestAccountId, Balance as TestBalance, TestRuntime}; - use bp_messages::source_chain::RelayerRewards; - - type Balances = pallet_balances::Pallet; - - const RELAYER_1: TestAccountId = 1; - const RELAYER_2: TestAccountId = 2; - const RELAYER_3: TestAccountId = 3; - const RELAYERS_FUND_ACCOUNT: TestAccountId = crate::mock::ENDOWED_ACCOUNT; - - fn relayers_rewards() -> RelayersRewards { - vec![ - ( - RELAYER_1, - RelayerRewards { - reward: 100, - messages: 2, - }, - ), - ( - RELAYER_2, - RelayerRewards { - reward: 100, - messages: 3, - }, - ), - ] - .into_iter() - .collect() - } - - #[test] - fn confirmation_relayer_is_rewarded_if_it_has_also_delivered_messages() { - run_test(|| { - pay_relayers_rewards::(&RELAYER_2, relayers_rewards(), &RELAYERS_FUND_ACCOUNT, 10); - - assert_eq!(Balances::free_balance(&RELAYER_1), 80); - assert_eq!(Balances::free_balance(&RELAYER_2), 120); - }); - } - - #[test] - fn confirmation_relayer_is_rewarded_if_it_has_not_delivered_any_delivered_messages() { - run_test(|| { - pay_relayers_rewards::(&RELAYER_3, relayers_rewards(), &RELAYERS_FUND_ACCOUNT, 10); - - assert_eq!(Balances::free_balance(&RELAYER_1), 80); - assert_eq!(Balances::free_balance(&RELAYER_2), 70); - assert_eq!(Balances::free_balance(&RELAYER_3), 50); - }); - } - - #[test] - fn only_confirmation_relayer_is_rewarded_if_confirmation_fee_has_significantly_increased() { - run_test(|| { - pay_relayers_rewards::(&RELAYER_3, relayers_rewards(), &RELAYERS_FUND_ACCOUNT, 1000); - - assert_eq!(Balances::free_balance(&RELAYER_1), 0); - assert_eq!(Balances::free_balance(&RELAYER_2), 0); - assert_eq!(Balances::free_balance(&RELAYER_3), 200); - }); - } -} diff --git a/bridges/modules/messages/src/lib.rs b/bridges/modules/messages/src/lib.rs deleted file mode 100644 index a5f94c1eda81..000000000000 --- a/bridges/modules/messages/src/lib.rs +++ /dev/null @@ -1,1932 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Runtime module that allows sending and receiving messages using lane concept: -//! -//! 1) the message is sent using `send_message()` call; -//! 2) every outbound message is assigned nonce; -//! 3) the messages are stored in the storage; -//! 4) external component (relay) delivers messages to bridged chain; -//! 5) messages are processed in order (ordered by assigned nonce); -//! 6) relay may send proof-of-delivery back to this chain. -//! -//! Once message is sent, its progress can be tracked by looking at module events. -//! The assigned nonce is reported using `MessageAccepted` event. When message is -//! delivered to the the bridged chain, it is reported using `MessagesDelivered` event. -//! -//! **IMPORTANT NOTE**: after generating weights (custom `WeighInfo` implementation) for -//! your runtime (where this module is plugged to), please add test for these weights. -//! The test should call the `ensure_weights_are_correct` function from this module. -//! If this test fails with your weights, then either weights are computed incorrectly, -//! or some benchmarks assumptions are broken for your runtime. - -#![cfg_attr(not(feature = "std"), no_std)] -// Generated by `decl_event!` -#![allow(clippy::unused_unit)] - -pub use crate::weights_ext::{ - ensure_able_to_receive_confirmation, ensure_able_to_receive_message, ensure_weights_are_correct, WeightInfoExt, - EXPECTED_DEFAULT_MESSAGE_LENGTH, -}; - -use crate::inbound_lane::{InboundLane, InboundLaneStorage, ReceivalResult}; -use crate::outbound_lane::{OutboundLane, OutboundLaneStorage, ReceivalConfirmationResult}; -use crate::weights::WeightInfo; - -use bp_messages::{ - source_chain::{ - LaneMessageVerifier, MessageDeliveryAndDispatchPayment, OnDeliveryConfirmed, RelayersRewards, TargetHeaderChain, - }, - target_chain::{DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages, SourceHeaderChain}, - total_unrewarded_messages, DeliveredMessages, InboundLaneData, LaneId, MessageData, MessageKey, MessageNonce, - OperatingMode, OutboundLaneData, Parameter as MessagesParameter, UnrewardedRelayersState, -}; -use bp_runtime::Size; -use codec::{Decode, Encode}; -use frame_support::{ - decl_error, decl_event, decl_module, decl_storage, - dispatch::DispatchResultWithPostInfo, - ensure, fail, - traits::Get, - weights::{DispatchClass, Pays, PostDispatchInfo, Weight}, - Parameter, StorageMap, -}; -use frame_system::{ensure_signed, RawOrigin}; -use num_traits::{SaturatingAdd, Zero}; -use sp_runtime::{traits::BadOrigin, DispatchResult}; -use sp_std::{cell::RefCell, cmp::PartialOrd, marker::PhantomData, prelude::*}; - -mod inbound_lane; -mod outbound_lane; -mod weights_ext; - -pub mod instant_payments; -pub mod weights; - -#[cfg(feature = "runtime-benchmarks")] -pub mod benchmarking; - -#[cfg(test)] -mod mock; - -/// The module configuration trait -pub trait Config: frame_system::Config { - // General types - - /// They overarching event type. - type Event: From> + Into<::Event>; - /// Benchmarks results from runtime we're plugged into. - type WeightInfo: WeightInfoExt; - /// Pallet parameter that is opaque to the pallet itself, but may be used by the runtime - /// for integrating the pallet. - /// - /// All pallet parameters may only be updated either by the root, or by the pallet owner. - type Parameter: MessagesParameter; - - /// Maximal number of messages that may be pruned during maintenance. Maintenance occurs - /// whenever new message is sent. The reason is that if you want to use lane, you should - /// be ready to pay for its maintenance. - type MaxMessagesToPruneAtOnce: Get; - /// Maximal number of unrewarded relayer entries at inbound lane. Unrewarded means that the - /// relayer has delivered messages, but either confirmations haven't been delivered back to the - /// source chain, or we haven't received reward confirmations yet. - /// - /// This constant limits maximal number of entries in the `InboundLaneData::relayers`. Keep - /// in mind that the same relayer account may take several (non-consecutive) entries in this - /// set. - type MaxUnrewardedRelayerEntriesAtInboundLane: Get; - /// Maximal number of unconfirmed messages at inbound lane. Unconfirmed means that the - /// message has been delivered, but either confirmations haven't been delivered back to the - /// source chain, or we haven't received reward confirmations for these messages yet. - /// - /// This constant limits difference between last message from last entry of the - /// `InboundLaneData::relayers` and first message at the first entry. - /// - /// There is no point of making this parameter lesser than MaxUnrewardedRelayerEntriesAtInboundLane, - /// because then maximal number of relayer entries will be limited by maximal number of messages. - /// - /// This value also represents maximal number of messages in single delivery transaction. Transaction - /// that is declaring more messages than this value, will be rejected. Even if these messages are - /// from different lanes. - type MaxUnconfirmedMessagesAtInboundLane: Get; - - /// Payload type of outbound messages. This payload is dispatched on the bridged chain. - type OutboundPayload: Parameter + Size; - /// Message fee type of outbound messages. This fee is paid on this chain. - type OutboundMessageFee: Default + From + PartialOrd + Parameter + SaturatingAdd + Zero; - - /// Payload type of inbound messages. This payload is dispatched on this chain. - type InboundPayload: Decode; - /// Message fee type of inbound messages. This fee is paid on the bridged chain. - type InboundMessageFee: Decode; - /// Identifier of relayer that deliver messages to this chain. Relayer reward is paid on the bridged chain. - type InboundRelayer: Parameter; - - /// A type which can be turned into an AccountId from a 256-bit hash. - /// - /// Used when deriving the shared relayer fund account. - type AccountIdConverter: sp_runtime::traits::Convert; - - // Types that are used by outbound_lane (on source chain). - - /// Target header chain. - type TargetHeaderChain: TargetHeaderChain; - /// Message payload verifier. - type LaneMessageVerifier: LaneMessageVerifier; - /// Message delivery payment. - type MessageDeliveryAndDispatchPayment: MessageDeliveryAndDispatchPayment; - /// Handler for delivered messages. - type OnDeliveryConfirmed: OnDeliveryConfirmed; - - // Types that are used by inbound_lane (on target chain). - - /// Source header chain, as it is represented on target chain. - type SourceHeaderChain: SourceHeaderChain; - /// Message dispatch. - type MessageDispatch: MessageDispatch< - Self::AccountId, - Self::InboundMessageFee, - DispatchPayload = Self::InboundPayload, - >; -} - -/// Shortcut to messages proof type for Config. -type MessagesProofOf = - <>::SourceHeaderChain as SourceHeaderChain<>::InboundMessageFee>>::MessagesProof; -/// Shortcut to messages delivery proof type for Config. -type MessagesDeliveryProofOf = <>::TargetHeaderChain as TargetHeaderChain< - >::OutboundPayload, - ::AccountId, ->>::MessagesDeliveryProof; - -decl_error! { - pub enum Error for Pallet, I: Instance> { - /// All pallet operations are halted. - Halted, - /// Message has been treated as invalid by chain verifier. - MessageRejectedByChainVerifier, - /// Message has been treated as invalid by lane verifier. - MessageRejectedByLaneVerifier, - /// Submitter has failed to pay fee for delivering and dispatching messages. - FailedToWithdrawMessageFee, - /// The transaction brings too many messages. - TooManyMessagesInTheProof, - /// Invalid messages has been submitted. - InvalidMessagesProof, - /// Invalid messages dispatch weight has been declared by the relayer. - InvalidMessagesDispatchWeight, - /// Invalid messages delivery proof has been submitted. - InvalidMessagesDeliveryProof, - /// The bridged chain has invalid `UnrewardedRelayers` in its storage (fatal for the lane). - InvalidUnrewardedRelayers, - /// The relayer has declared invalid unrewarded relayers state in the `receive_messages_delivery_proof` call. - InvalidUnrewardedRelayersState, - /// The message someone is trying to work with (i.e. increase fee) is already-delivered. - MessageIsAlreadyDelivered, - /// The message someone is trying to work with (i.e. increase fee) is not yet sent. - MessageIsNotYetSent - } -} - -decl_storage! { - trait Store for Pallet, I: Instance = DefaultInstance> as BridgeMessages { - /// Optional pallet owner. - /// - /// Pallet owner has a right to halt all pallet operations and then resume it. If it is - /// `None`, then there are no direct ways to halt/resume pallet operations, but other - /// runtime methods may still be used to do that (i.e. democracy::referendum to update halt - /// flag directly or call the `halt_operations`). - pub PalletOwner get(fn module_owner): Option; - /// The current operating mode of the pallet. - /// - /// Depending on the mode either all, some, or no transactions will be allowed. - pub PalletOperatingMode get(fn operating_mode) config(): OperatingMode; - /// Map of lane id => inbound lane data. - pub InboundLanes: map hasher(blake2_128_concat) LaneId => InboundLaneData; - /// Map of lane id => outbound lane data. - pub OutboundLanes: map hasher(blake2_128_concat) LaneId => OutboundLaneData; - /// All queued outbound messages. - pub OutboundMessages: map hasher(blake2_128_concat) MessageKey => Option>; - } - add_extra_genesis { - config(phantom): sp_std::marker::PhantomData; - config(owner): Option; - build(|config| { - if let Some(ref owner) = config.owner { - >::put(owner); - } - }) - } -} - -decl_event!( - pub enum Event - where - AccountId = ::AccountId, - Parameter = >::Parameter, - { - /// Pallet parameter has been updated. - ParameterUpdated(Parameter), - /// Message has been accepted and is waiting to be delivered. - MessageAccepted(LaneId, MessageNonce), - /// Messages in the inclusive range have been delivered to the bridged chain. - MessagesDelivered(LaneId, DeliveredMessages), - /// Phantom member, never used. - Dummy(PhantomData<(AccountId, I)>), - } -); - -decl_module! { - pub struct Module, I: Instance = DefaultInstance> for enum Call where origin: T::Origin { - /// Deposit one of this module's events by using the default implementation. - fn deposit_event() = default; - - /// Ensure runtime invariants. - fn on_runtime_upgrade() -> Weight { - let reads = T::MessageDeliveryAndDispatchPayment::initialize( - &Self::relayer_fund_account_id() - ); - T::DbWeight::get().reads(reads as u64) - } - - /// Change `PalletOwner`. - /// - /// May only be called either by root, or by `PalletOwner`. - #[weight = (T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational)] - pub fn set_owner(origin, new_owner: Option) { - ensure_owner_or_root::(origin)?; - match new_owner { - Some(new_owner) => { - PalletOwner::::put(&new_owner); - log::info!(target: "runtime::bridge-messages", "Setting pallet Owner to: {:?}", new_owner); - }, - None => { - PalletOwner::::kill(); - log::info!(target: "runtime::bridge-messages", "Removed Owner of pallet."); - }, - } - } - - /// Halt or resume all/some pallet operations. - /// - /// May only be called either by root, or by `PalletOwner`. - #[weight = (T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational)] - pub fn set_operating_mode(origin, operating_mode: OperatingMode) { - ensure_owner_or_root::(origin)?; - >::put(operating_mode); - log::info!( - target: "runtime::bridge-messages", - "Setting messages pallet operating mode to {:?}.", - operating_mode, - ); - } - - /// Update pallet parameter. - /// - /// May only be called either by root, or by `PalletOwner`. - /// - /// The weight is: single read for permissions check + 2 writes for parameter value and event. - #[weight = (T::DbWeight::get().reads_writes(1, 2), DispatchClass::Operational)] - pub fn update_pallet_parameter(origin, parameter: T::Parameter) { - ensure_owner_or_root::(origin)?; - parameter.save(); - Self::deposit_event(RawEvent::ParameterUpdated(parameter)); - } - - /// Send message over lane. - #[weight = T::WeightInfo::send_message_weight(payload)] - pub fn send_message( - origin, - lane_id: LaneId, - payload: T::OutboundPayload, - delivery_and_dispatch_fee: T::OutboundMessageFee, - ) -> DispatchResult { - ensure_normal_operating_mode::()?; - let submitter = origin.into().map_err(|_| BadOrigin)?; - - // let's first check if message can be delivered to target chain - T::TargetHeaderChain::verify_message(&payload) - .map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Message to lane {:?} is rejected by target chain: {:?}", - lane_id, - err, - ); - - Error::::MessageRejectedByChainVerifier - })?; - - // now let's enforce any additional lane rules - let mut lane = outbound_lane::(lane_id); - T::LaneMessageVerifier::verify_message( - &submitter, - &delivery_and_dispatch_fee, - &lane_id, - &lane.data(), - &payload, - ).map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Message to lane {:?} is rejected by lane verifier: {:?}", - lane_id, - err, - ); - - Error::::MessageRejectedByLaneVerifier - })?; - - // let's withdraw delivery and dispatch fee from submitter - T::MessageDeliveryAndDispatchPayment::pay_delivery_and_dispatch_fee( - &submitter, - &delivery_and_dispatch_fee, - &Self::relayer_fund_account_id(), - ).map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Message to lane {:?} is rejected because submitter {:?} is unable to pay fee {:?}: {:?}", - lane_id, - submitter, - delivery_and_dispatch_fee, - err, - ); - - Error::::FailedToWithdrawMessageFee - })?; - - // finally, save message in outbound storage and emit event - let encoded_payload = payload.encode(); - let encoded_payload_len = encoded_payload.len(); - let nonce = lane.send_message(MessageData { - payload: encoded_payload, - fee: delivery_and_dispatch_fee, - }); - lane.prune_messages(T::MaxMessagesToPruneAtOnce::get()); - - log::trace!( - target: "runtime::bridge-messages", - "Accepted message {} to lane {:?}. Message size: {:?}", - nonce, - lane_id, - encoded_payload_len, - ); - - Self::deposit_event(RawEvent::MessageAccepted(lane_id, nonce)); - - Ok(()) - } - - /// Pay additional fee for the message. - #[weight = T::WeightInfo::increase_message_fee()] - pub fn increase_message_fee( - origin, - lane_id: LaneId, - nonce: MessageNonce, - additional_fee: T::OutboundMessageFee, - ) -> DispatchResult { - ensure_not_halted::()?; - // if someone tries to pay for already-delivered message, we're rejecting this intention - // (otherwise this additional fee will be locked forever in relayers fund) - // - // if someone tries to pay for not-yet-sent message, we're rejeting this intention, or - // we're risking to have mess in the storage - let lane = outbound_lane::(lane_id); - ensure!(nonce > lane.data().latest_received_nonce, Error::::MessageIsAlreadyDelivered); - ensure!(nonce <= lane.data().latest_generated_nonce, Error::::MessageIsNotYetSent); - - // withdraw additional fee from submitter - let submitter = origin.into().map_err(|_| BadOrigin)?; - T::MessageDeliveryAndDispatchPayment::pay_delivery_and_dispatch_fee( - &submitter, - &additional_fee, - &Self::relayer_fund_account_id(), - ).map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Submitter {:?} can't pay additional fee {:?} for the message {:?}/{:?}: {:?}", - submitter, - additional_fee, - lane_id, - nonce, - err, - ); - - Error::::FailedToWithdrawMessageFee - })?; - - // and finally update fee in the storage - let message_key = MessageKey { lane_id, nonce }; - OutboundMessages::::mutate(message_key, |message_data| { - // saturating_add is fine here - overflow here means that someone controls all - // chain funds, which shouldn't ever happen + `pay_delivery_and_dispatch_fee` - // above will fail before we reach here - let message_data = message_data - .as_mut() - .expect("the message is sent and not yet delivered; so it is in the storage; qed"); - message_data.fee = message_data.fee.saturating_add(&additional_fee); - }); - - Ok(()) - } - - /// Receive messages proof from bridged chain. - /// - /// The weight of the call assumes that the transaction always brings outbound lane - /// state update. Because of that, the submitter (relayer) has no benefit of not including - /// this data in the transaction, so reward confirmations lags should be minimal. - #[weight = T::WeightInfo::receive_messages_proof_weight(proof, *messages_count, *dispatch_weight)] - pub fn receive_messages_proof( - origin, - relayer_id_at_bridged_chain: T::InboundRelayer, - proof: MessagesProofOf, - messages_count: u32, - dispatch_weight: Weight, - ) -> DispatchResultWithPostInfo { - ensure_not_halted::()?; - let relayer_id_at_this_chain = ensure_signed(origin)?; - - // reject transactions that are declaring too many messages - ensure!( - MessageNonce::from(messages_count) <= T::MaxUnconfirmedMessagesAtInboundLane::get(), - Error::::TooManyMessagesInTheProof - ); - - // why do we need to know the weight of this (`receive_messages_proof`) call? Because - // we may want to return some funds for not-dispatching (or partially dispatching) some - // messages to the call origin (relayer). And this is done by returning actual weight - // from the call. But we only know dispatch weight of every messages. So to refund relayer - // because we have not dispatched Message, we need to: - // - // ActualWeight = DeclaredWeight - Message.DispatchWeight - // - // The DeclaredWeight is exactly what's computed here. Unfortunately it is impossible - // to get pre-computed value (and it has been already computed by the executive). - let declared_weight = T::WeightInfo::receive_messages_proof_weight( - &proof, - messages_count, - dispatch_weight, - ); - let mut actual_weight = declared_weight; - - // verify messages proof && convert proof into messages - let messages = verify_and_decode_messages_proof::< - T::SourceHeaderChain, - T::InboundMessageFee, - T::InboundPayload, - >(proof, messages_count) - .map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Rejecting invalid messages proof: {:?}", - err, - ); - - Error::::InvalidMessagesProof - })?; - - // verify that relayer is paying actual dispatch weight - let actual_dispatch_weight: Weight = messages - .values() - .map(|lane_messages| lane_messages - .messages - .iter() - .map(T::MessageDispatch::dispatch_weight) - .fold(0, |sum, weight| sum.saturating_add(&weight)) - ) - .fold(0, |sum, weight| sum.saturating_add(weight)); - if dispatch_weight < actual_dispatch_weight { - log::trace!( - target: "runtime::bridge-messages", - "Rejecting messages proof because of dispatch weight mismatch: declared={}, expected={}", - dispatch_weight, - actual_dispatch_weight, - ); - - return Err(Error::::InvalidMessagesDispatchWeight.into()); - } - - // dispatch messages and (optionally) update lane(s) state(s) - let mut total_messages = 0; - let mut valid_messages = 0; - for (lane_id, lane_data) in messages { - let mut lane = inbound_lane::(lane_id); - - if let Some(lane_state) = lane_data.lane_state { - let updated_latest_confirmed_nonce = lane.receive_state_update(lane_state); - if let Some(updated_latest_confirmed_nonce) = updated_latest_confirmed_nonce { - log::trace!( - target: "runtime::bridge-messages", - "Received lane {:?} state update: latest_confirmed_nonce={}", - lane_id, - updated_latest_confirmed_nonce, - ); - } - } - - for message in lane_data.messages { - debug_assert_eq!(message.key.lane_id, lane_id); - - total_messages += 1; - let dispatch_weight = T::MessageDispatch::dispatch_weight(&message); - let receival_result = lane.receive_message::( - &relayer_id_at_bridged_chain, - &relayer_id_at_this_chain, - message.key.nonce, - message.data, - ); - - // note that we're returning unspent weight to relayer even if message has been - // rejected by the lane. This allows relayers to submit spam transactions with - // e.g. the same set of already delivered messages over and over again, without - // losing funds for messages dispatch. But keep in mind that relayer pays base - // delivery transaction cost anyway. And base cost covers everything except - // dispatch, so we have a balance here. - let (unspent_weight, refund_pay_dispatch_fee) = match receival_result { - ReceivalResult::Dispatched(dispatch_result) => { - valid_messages += 1; - (dispatch_result.unspent_weight, !dispatch_result.dispatch_fee_paid_during_dispatch) - }, - ReceivalResult::InvalidNonce - | ReceivalResult::TooManyUnrewardedRelayers - | ReceivalResult::TooManyUnconfirmedMessages => (dispatch_weight, true), - }; - actual_weight = actual_weight - .saturating_sub(sp_std::cmp::min(unspent_weight, dispatch_weight)) - .saturating_sub( - // delivery call weight formula assumes that the fee is paid at - // this (target) chain. If the message is prepaid at the source - // chain, let's refund relayer with this extra cost. - if refund_pay_dispatch_fee { - T::WeightInfo::pay_inbound_dispatch_fee_overhead() - } else { - 0 - } - ); - } - } - - log::trace!( - target: "runtime::bridge-messages", - "Received messages: total={}, valid={}. Weight used: {}/{}", - total_messages, - valid_messages, - actual_weight, - declared_weight, - ); - - Ok(PostDispatchInfo { - actual_weight: Some(actual_weight), - pays_fee: Pays::Yes, - }) - } - - /// Receive messages delivery proof from bridged chain. - #[weight = T::WeightInfo::receive_messages_delivery_proof_weight(proof, relayers_state)] - pub fn receive_messages_delivery_proof( - origin, - proof: MessagesDeliveryProofOf, - relayers_state: UnrewardedRelayersState, - ) -> DispatchResult { - ensure_not_halted::()?; - - let confirmation_relayer = ensure_signed(origin)?; - let (lane_id, lane_data) = T::TargetHeaderChain::verify_messages_delivery_proof(proof).map_err(|err| { - log::trace!( - target: "runtime::bridge-messages", - "Rejecting invalid messages delivery proof: {:?}", - err, - ); - - Error::::InvalidMessagesDeliveryProof - })?; - - // verify that the relayer has declared correct `lane_data::relayers` state - // (we only care about total number of entries and messages, because this affects call weight) - ensure!( - total_unrewarded_messages(&lane_data.relayers) - .unwrap_or(MessageNonce::MAX) == relayers_state.total_messages - && lane_data.relayers.len() as MessageNonce == relayers_state.unrewarded_relayer_entries, - Error::::InvalidUnrewardedRelayersState - ); - - // mark messages as delivered - let mut lane = outbound_lane::(lane_id); - let mut relayers_rewards: RelayersRewards<_, T::OutboundMessageFee> = RelayersRewards::new(); - let last_delivered_nonce = lane_data.last_delivered_nonce(); - let confirmed_messages = match lane.confirm_delivery(last_delivered_nonce, &lane_data.relayers) { - ReceivalConfirmationResult::ConfirmedMessages(confirmed_messages) => Some(confirmed_messages), - ReceivalConfirmationResult::NoNewConfirmations => None, - error => { - log::trace!( - target: "runtime::bridge-messages", - "Messages delivery proof contains invalid unrewarded relayers vec: {:?}", - error, - ); - - fail!(Error::::InvalidUnrewardedRelayers); - }, - }; - if let Some(confirmed_messages) = confirmed_messages { - // handle messages delivery confirmation - T::OnDeliveryConfirmed::on_messages_delivered(&lane_id, &confirmed_messages); - - // emit 'delivered' event - let received_range = confirmed_messages.begin..=confirmed_messages.end; - Self::deposit_event(RawEvent::MessagesDelivered(lane_id, confirmed_messages)); - - // remember to reward relayers that have delivered messages - // this loop is bounded by `T::MaxUnrewardedRelayerEntriesAtInboundLane` on the bridged chain - for entry in lane_data.relayers { - let nonce_begin = sp_std::cmp::max(entry.messages.begin, *received_range.start()); - let nonce_end = sp_std::cmp::min(entry.messages.end, *received_range.end()); - - // loop won't proceed if current entry is ahead of received range (begin > end). - // this loop is bound by `T::MaxUnconfirmedMessagesAtInboundLane` on the bridged chain - let mut relayer_reward = relayers_rewards.entry(entry.relayer).or_default(); - for nonce in nonce_begin..nonce_end + 1 { - let message_data = OutboundMessages::::get(MessageKey { - lane_id, - nonce, - }).expect("message was just confirmed; we never prune unconfirmed messages; qed"); - relayer_reward.reward = relayer_reward.reward.saturating_add(&message_data.fee); - relayer_reward.messages += 1; - } - } - } - - // if some new messages have been confirmed, reward relayers - if !relayers_rewards.is_empty() { - let relayer_fund_account = Self::relayer_fund_account_id(); - >::MessageDeliveryAndDispatchPayment::pay_relayers_rewards( - &confirmation_relayer, - relayers_rewards, - &relayer_fund_account, - ); - } - - log::trace!( - target: "runtime::bridge-messages", - "Received messages delivery proof up to (and including) {} at lane {:?}", - last_delivered_nonce, - lane_id, - ); - - Ok(()) - } - } -} - -impl, I: Instance> Pallet { - /// Get stored data of the outbound message with given nonce. - pub fn outbound_message_data(lane: LaneId, nonce: MessageNonce) -> Option> { - OutboundMessages::::get(MessageKey { lane_id: lane, nonce }) - } - - /// Get nonce of latest generated message at given outbound lane. - pub fn outbound_latest_generated_nonce(lane: LaneId) -> MessageNonce { - OutboundLanes::::get(&lane).latest_generated_nonce - } - - /// Get nonce of latest confirmed message at given outbound lane. - pub fn outbound_latest_received_nonce(lane: LaneId) -> MessageNonce { - OutboundLanes::::get(&lane).latest_received_nonce - } - - /// Get nonce of latest received message at given inbound lane. - pub fn inbound_latest_received_nonce(lane: LaneId) -> MessageNonce { - InboundLanes::::get(&lane).last_delivered_nonce() - } - - /// Get nonce of latest confirmed message at given inbound lane. - pub fn inbound_latest_confirmed_nonce(lane: LaneId) -> MessageNonce { - InboundLanes::::get(&lane).last_confirmed_nonce - } - - /// Get state of unrewarded relayers set. - pub fn inbound_unrewarded_relayers_state(lane: bp_messages::LaneId) -> bp_messages::UnrewardedRelayersState { - let relayers = InboundLanes::::get(&lane).relayers; - bp_messages::UnrewardedRelayersState { - unrewarded_relayer_entries: relayers.len() as _, - messages_in_oldest_entry: relayers - .front() - .map(|entry| 1 + entry.messages.end - entry.messages.begin) - .unwrap_or(0), - total_messages: total_unrewarded_messages(&relayers).unwrap_or(MessageNonce::MAX), - } - } - - /// AccountId of the shared relayer fund account. - /// - /// This account is passed to `MessageDeliveryAndDispatchPayment` trait, and depending - /// on the implementation it can be used to store relayers rewards. - /// See [InstantCurrencyPayments] for a concrete implementation. - pub fn relayer_fund_account_id() -> T::AccountId { - use sp_runtime::traits::Convert; - let encoded_id = bp_runtime::derive_relayer_fund_account_id(bp_runtime::NO_INSTANCE_ID); - T::AccountIdConverter::convert(encoded_id) - } -} - -/// Getting storage keys for messages and lanes states. These keys are normally used when building -/// messages and lanes states proofs. -/// -/// Keep in mind that all functions in this module are **NOT** using passed `T` argument, so any -/// runtime can be passed. E.g. if you're verifying proof from Runtime1 in Runtime2, you only have -/// access to Runtime2 and you may pass it to the functions, where required. This is because our -/// maps are not using any Runtime-specific data in the keys. -/// -/// On the other side, passing correct instance is required. So if proof has been crafted by the -/// Instance1, you should verify it using Instance1. This is inconvenient if you're using different -/// instances on different sides of the bridge. I.e. in Runtime1 it is Instance2, but on Runtime2 -/// it is Instance42. But there's no other way, but to craft this key manually (which is what I'm -/// trying to avoid here) - by using strings like "Instance2", "OutboundMessages", etc. -pub mod storage_keys { - use super::*; - use frame_support::{traits::Instance, StorageHasher}; - use sp_core::storage::StorageKey; - - /// Storage key of the outbound message in the runtime storage. - pub fn message_key(lane: &LaneId, nonce: MessageNonce) -> StorageKey { - storage_map_final_key::("OutboundMessages", &MessageKey { lane_id: *lane, nonce }.encode()) - } - - /// Storage key of the outbound message lane state in the runtime storage. - pub fn outbound_lane_data_key(lane: &LaneId) -> StorageKey { - storage_map_final_key::("OutboundLanes", lane) - } - - /// Storage key of the inbound message lane state in the runtime storage. - pub fn inbound_lane_data_key(lane: &LaneId) -> StorageKey { - storage_map_final_key::("InboundLanes", lane) - } - - /// This is a copypaste of the `frame_support::storage::generator::StorageMap::storage_map_final_key`. - fn storage_map_final_key(map_name: &str, key: &[u8]) -> StorageKey { - let module_prefix_hashed = frame_support::Twox128::hash(I::PREFIX.as_bytes()); - let storage_prefix_hashed = frame_support::Twox128::hash(map_name.as_bytes()); - let key_hashed = frame_support::Blake2_128Concat::hash(key); - - let mut final_key = - Vec::with_capacity(module_prefix_hashed.len() + storage_prefix_hashed.len() + key_hashed.len()); - - final_key.extend_from_slice(&module_prefix_hashed[..]); - final_key.extend_from_slice(&storage_prefix_hashed[..]); - final_key.extend_from_slice(key_hashed.as_ref()); - - StorageKey(final_key) - } -} - -/// Ensure that the origin is either root, or `PalletOwner`. -fn ensure_owner_or_root, I: Instance>(origin: T::Origin) -> Result<(), BadOrigin> { - match origin.into() { - Ok(RawOrigin::Root) => Ok(()), - Ok(RawOrigin::Signed(ref signer)) if Some(signer) == Pallet::::module_owner().as_ref() => Ok(()), - _ => Err(BadOrigin), - } -} - -/// Ensure that the pallet is in normal operational mode. -fn ensure_normal_operating_mode, I: Instance>() -> Result<(), Error> { - if PalletOperatingMode::::get() != OperatingMode::Normal { - Err(Error::::Halted) - } else { - Ok(()) - } -} - -/// Ensure that the pallet is not halted. -fn ensure_not_halted, I: Instance>() -> Result<(), Error> { - if PalletOperatingMode::::get() == OperatingMode::Halted { - Err(Error::::Halted) - } else { - Ok(()) - } -} - -/// Creates new inbound lane object, backed by runtime storage. -fn inbound_lane, I: Instance>(lane_id: LaneId) -> InboundLane> { - InboundLane::new(inbound_lane_storage::(lane_id)) -} - -/// Creates new runtime inbound lane storage. -fn inbound_lane_storage, I: Instance>(lane_id: LaneId) -> RuntimeInboundLaneStorage { - RuntimeInboundLaneStorage { - lane_id, - cached_data: RefCell::new(None), - _phantom: Default::default(), - } -} - -/// Creates new outbound lane object, backed by runtime storage. -fn outbound_lane, I: Instance>(lane_id: LaneId) -> OutboundLane> { - OutboundLane::new(RuntimeOutboundLaneStorage { - lane_id, - _phantom: Default::default(), - }) -} - -/// Runtime inbound lane storage. -struct RuntimeInboundLaneStorage, I = DefaultInstance> { - lane_id: LaneId, - cached_data: RefCell>>, - _phantom: PhantomData, -} - -impl, I: Instance> InboundLaneStorage for RuntimeInboundLaneStorage { - type MessageFee = T::InboundMessageFee; - type Relayer = T::InboundRelayer; - - fn id(&self) -> LaneId { - self.lane_id - } - - fn max_unrewarded_relayer_entries(&self) -> MessageNonce { - T::MaxUnrewardedRelayerEntriesAtInboundLane::get() - } - - fn max_unconfirmed_messages(&self) -> MessageNonce { - T::MaxUnconfirmedMessagesAtInboundLane::get() - } - - fn data(&self) -> InboundLaneData { - match self.cached_data.clone().into_inner() { - Some(data) => data, - None => { - let data = InboundLanes::::get(&self.lane_id); - *self.cached_data.try_borrow_mut().expect( - "we're in the single-threaded environment;\ - we have no recursive borrows; qed", - ) = Some(data.clone()); - data - } - } - } - - fn set_data(&mut self, data: InboundLaneData) { - *self.cached_data.try_borrow_mut().expect( - "we're in the single-threaded environment;\ - we have no recursive borrows; qed", - ) = Some(data.clone()); - InboundLanes::::insert(&self.lane_id, data) - } -} - -/// Runtime outbound lane storage. -struct RuntimeOutboundLaneStorage { - lane_id: LaneId, - _phantom: PhantomData<(T, I)>, -} - -impl, I: Instance> OutboundLaneStorage for RuntimeOutboundLaneStorage { - type MessageFee = T::OutboundMessageFee; - - fn id(&self) -> LaneId { - self.lane_id - } - - fn data(&self) -> OutboundLaneData { - OutboundLanes::::get(&self.lane_id) - } - - fn set_data(&mut self, data: OutboundLaneData) { - OutboundLanes::::insert(&self.lane_id, data) - } - - #[cfg(test)] - fn message(&self, nonce: &MessageNonce) -> Option> { - OutboundMessages::::get(MessageKey { - lane_id: self.lane_id, - nonce: *nonce, - }) - } - - fn save_message(&mut self, nonce: MessageNonce, mesage_data: MessageData) { - OutboundMessages::::insert( - MessageKey { - lane_id: self.lane_id, - nonce, - }, - mesage_data, - ); - } - - fn remove_message(&mut self, nonce: &MessageNonce) { - OutboundMessages::::remove(MessageKey { - lane_id: self.lane_id, - nonce: *nonce, - }); - } -} - -/// Verify messages proof and return proved messages with decoded payload. -fn verify_and_decode_messages_proof, Fee, DispatchPayload: Decode>( - proof: Chain::MessagesProof, - messages_count: u32, -) -> Result>, Chain::Error> { - // `receive_messages_proof` weight formula and `MaxUnconfirmedMessagesAtInboundLane` check - // guarantees that the `message_count` is sane and Vec may be allocated. - // (tx with too many messages will either be rejected from the pool, or will fail earlier) - Chain::verify_messages_proof(proof, messages_count).map(|messages_by_lane| { - messages_by_lane - .into_iter() - .map(|(lane, lane_data)| { - ( - lane, - ProvedLaneMessages { - lane_state: lane_data.lane_state, - messages: lane_data.messages.into_iter().map(Into::into).collect(), - }, - ) - }) - .collect() - }) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{ - message, message_payload, run_test, unrewarded_relayer, Event as TestEvent, Origin, - TestMessageDeliveryAndDispatchPayment, TestMessagesDeliveryProof, TestMessagesParameter, TestMessagesProof, - TestRuntime, TokenConversionRate, PAYLOAD_REJECTED_BY_TARGET_CHAIN, REGULAR_PAYLOAD, TEST_LANE_ID, - TEST_RELAYER_A, TEST_RELAYER_B, - }; - use bp_messages::{UnrewardedRelayer, UnrewardedRelayersState}; - use frame_support::{assert_noop, assert_ok}; - use frame_system::{EventRecord, Pallet as System, Phase}; - use hex_literal::hex; - use sp_runtime::DispatchError; - - fn get_ready_for_events() { - System::::set_block_number(1); - System::::reset_events(); - } - - fn send_regular_message() { - get_ready_for_events(); - - let message_nonce = outbound_lane::(TEST_LANE_ID) - .data() - .latest_generated_nonce - + 1; - assert_ok!(Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - REGULAR_PAYLOAD.declared_weight, - )); - - // check event with assigned nonce - assert_eq!( - System::::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: TestEvent::Messages(RawEvent::MessageAccepted(TEST_LANE_ID, message_nonce)), - topics: vec![], - }], - ); - - // check that fee has been withdrawn from submitter - assert!(TestMessageDeliveryAndDispatchPayment::is_fee_paid( - 1, - REGULAR_PAYLOAD.declared_weight - )); - } - - fn receive_messages_delivery_proof() { - System::::set_block_number(1); - System::::reset_events(); - - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 1, - relayers: vec![UnrewardedRelayer { - relayer: 0, - messages: DeliveredMessages::new(1, true), - }] - .into_iter() - .collect(), - }, - ))), - UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 1, - ..Default::default() - }, - )); - - assert_eq!( - System::::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: TestEvent::Messages(RawEvent::MessagesDelivered( - TEST_LANE_ID, - DeliveredMessages::new(1, true), - )), - topics: vec![], - }], - ); - } - - #[test] - fn pallet_owner_may_change_owner() { - run_test(|| { - PalletOwner::::put(2); - - assert_ok!(Pallet::::set_owner(Origin::root(), Some(1))); - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(2), OperatingMode::Halted), - DispatchError::BadOrigin, - ); - assert_ok!(Pallet::::set_operating_mode( - Origin::root(), - OperatingMode::Halted - )); - - assert_ok!(Pallet::::set_owner(Origin::signed(1), None)); - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), - DispatchError::BadOrigin, - ); - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(2), OperatingMode::Normal), - DispatchError::BadOrigin, - ); - assert_ok!(Pallet::::set_operating_mode( - Origin::root(), - OperatingMode::Normal - )); - }); - } - - #[test] - fn pallet_may_be_halted_by_root() { - run_test(|| { - assert_ok!(Pallet::::set_operating_mode( - Origin::root(), - OperatingMode::Halted - )); - assert_ok!(Pallet::::set_operating_mode( - Origin::root(), - OperatingMode::Normal - )); - }); - } - - #[test] - fn pallet_may_be_halted_by_owner() { - run_test(|| { - PalletOwner::::put(2); - - assert_ok!(Pallet::::set_operating_mode( - Origin::signed(2), - OperatingMode::Halted - )); - assert_ok!(Pallet::::set_operating_mode( - Origin::signed(2), - OperatingMode::Normal - )); - - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Halted), - DispatchError::BadOrigin, - ); - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), - DispatchError::BadOrigin, - ); - - assert_ok!(Pallet::::set_operating_mode( - Origin::signed(2), - OperatingMode::Halted - )); - assert_noop!( - Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), - DispatchError::BadOrigin, - ); - }); - } - - #[test] - fn pallet_parameter_may_be_updated_by_root() { - run_test(|| { - get_ready_for_events(); - - let parameter = TestMessagesParameter::TokenConversionRate(10.into()); - assert_ok!(Pallet::::update_pallet_parameter( - Origin::root(), - parameter.clone(), - )); - - assert_eq!(TokenConversionRate::get(), 10.into()); - assert_eq!( - System::::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: TestEvent::Messages(RawEvent::ParameterUpdated(parameter)), - topics: vec![], - }], - ); - }); - } - - #[test] - fn pallet_parameter_may_be_updated_by_owner() { - run_test(|| { - PalletOwner::::put(2); - get_ready_for_events(); - - let parameter = TestMessagesParameter::TokenConversionRate(10.into()); - assert_ok!(Pallet::::update_pallet_parameter( - Origin::signed(2), - parameter.clone(), - )); - - assert_eq!(TokenConversionRate::get(), 10.into()); - assert_eq!( - System::::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: TestEvent::Messages(RawEvent::ParameterUpdated(parameter)), - topics: vec![], - }], - ); - }); - } - - #[test] - fn pallet_parameter_cant_be_updated_by_arbitrary_submitter() { - run_test(|| { - assert_noop!( - Pallet::::update_pallet_parameter( - Origin::signed(2), - TestMessagesParameter::TokenConversionRate(10.into()), - ), - DispatchError::BadOrigin, - ); - - PalletOwner::::put(2); - - assert_noop!( - Pallet::::update_pallet_parameter( - Origin::signed(1), - TestMessagesParameter::TokenConversionRate(10.into()), - ), - DispatchError::BadOrigin, - ); - }); - } - - #[test] - fn fixed_u128_works_as_i_think() { - // this test is here just to be sure that conversion rate may be represented with FixedU128 - run_test(|| { - use sp_runtime::{FixedPointNumber, FixedU128}; - - // 1:1 conversion that we use by default for testnets - let rialto_token = 1u64; - let rialto_token_in_millau_tokens = TokenConversionRate::get().saturating_mul_int(rialto_token); - assert_eq!(rialto_token_in_millau_tokens, 1); - - // let's say conversion rate is 1:1.7 - let conversion_rate = FixedU128::saturating_from_rational(170, 100); - let rialto_tokens = 100u64; - let rialto_tokens_in_millau_tokens = conversion_rate.saturating_mul_int(rialto_tokens); - assert_eq!(rialto_tokens_in_millau_tokens, 170); - - // let's say conversion rate is 1:0.25 - let conversion_rate = FixedU128::saturating_from_rational(25, 100); - let rialto_tokens = 100u64; - let rialto_tokens_in_millau_tokens = conversion_rate.saturating_mul_int(rialto_tokens); - assert_eq!(rialto_tokens_in_millau_tokens, 25); - }); - } - - #[test] - fn pallet_rejects_transactions_if_halted() { - run_test(|| { - // send message first to be able to check that delivery_proof fails later - send_regular_message(); - - PalletOperatingMode::::put(OperatingMode::Halted); - - assert_noop!( - Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - REGULAR_PAYLOAD.declared_weight, - ), - Error::::Halted, - ); - - assert_noop!( - Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 1,), - Error::::Halted, - ); - - assert_noop!( - Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![message(2, REGULAR_PAYLOAD)]).into(), - 1, - REGULAR_PAYLOAD.declared_weight, - ), - Error::::Halted, - ); - - assert_noop!( - Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 1, - ..Default::default() - }, - ))), - Default::default(), - ), - Error::::Halted, - ); - }); - } - - #[test] - fn pallet_rejects_new_messages_in_rejecting_outbound_messages_operating_mode() { - run_test(|| { - // send message first to be able to check that delivery_proof fails later - send_regular_message(); - - PalletOperatingMode::::put(OperatingMode::RejectingOutboundMessages); - - assert_noop!( - Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - REGULAR_PAYLOAD.declared_weight, - ), - Error::::Halted, - ); - - assert_ok!(Pallet::::increase_message_fee( - Origin::signed(1), - TEST_LANE_ID, - 1, - 1, - )); - - assert_ok!(Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), - 1, - REGULAR_PAYLOAD.declared_weight, - ),); - - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 1, - ..Default::default() - }, - ))), - Default::default(), - )); - }); - } - - #[test] - fn send_message_works() { - run_test(|| { - send_regular_message(); - }); - } - - #[test] - fn chain_verifier_rejects_invalid_message_in_send_message() { - run_test(|| { - // messages with this payload are rejected by target chain verifier - assert_noop!( - Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - PAYLOAD_REJECTED_BY_TARGET_CHAIN, - PAYLOAD_REJECTED_BY_TARGET_CHAIN.declared_weight - ), - Error::::MessageRejectedByChainVerifier, - ); - }); - } - - #[test] - fn lane_verifier_rejects_invalid_message_in_send_message() { - run_test(|| { - // messages with zero fee are rejected by lane verifier - assert_noop!( - Pallet::::send_message(Origin::signed(1), TEST_LANE_ID, REGULAR_PAYLOAD, 0), - Error::::MessageRejectedByLaneVerifier, - ); - }); - } - - #[test] - fn message_send_fails_if_submitter_cant_pay_message_fee() { - run_test(|| { - TestMessageDeliveryAndDispatchPayment::reject_payments(); - assert_noop!( - Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - REGULAR_PAYLOAD.declared_weight - ), - Error::::FailedToWithdrawMessageFee, - ); - }); - } - - #[test] - fn receive_messages_proof_works() { - run_test(|| { - assert_ok!(Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), - 1, - REGULAR_PAYLOAD.declared_weight, - )); - - assert_eq!(InboundLanes::::get(TEST_LANE_ID).last_delivered_nonce(), 1); - }); - } - - #[test] - fn receive_messages_proof_updates_confirmed_message_nonce() { - run_test(|| { - // say we have received 10 messages && last confirmed message is 8 - InboundLanes::::insert( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 8, - relayers: vec![ - unrewarded_relayer(9, 9, TEST_RELAYER_A), - unrewarded_relayer(10, 10, TEST_RELAYER_B), - ] - .into_iter() - .collect(), - }, - ); - assert_eq!( - Pallet::::inbound_unrewarded_relayers_state(TEST_LANE_ID), - UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - messages_in_oldest_entry: 1, - total_messages: 2, - }, - ); - - // message proof includes outbound lane state with latest confirmed message updated to 9 - let mut message_proof: TestMessagesProof = Ok(vec![message(11, REGULAR_PAYLOAD)]).into(); - message_proof.result.as_mut().unwrap()[0].1.lane_state = Some(OutboundLaneData { - latest_received_nonce: 9, - ..Default::default() - }); - - assert_ok!(Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - message_proof, - 1, - REGULAR_PAYLOAD.declared_weight, - )); - - assert_eq!( - InboundLanes::::get(TEST_LANE_ID), - InboundLaneData { - last_confirmed_nonce: 9, - relayers: vec![ - unrewarded_relayer(10, 10, TEST_RELAYER_B), - unrewarded_relayer(11, 11, TEST_RELAYER_A) - ] - .into_iter() - .collect(), - }, - ); - assert_eq!( - Pallet::::inbound_unrewarded_relayers_state(TEST_LANE_ID), - UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - messages_in_oldest_entry: 1, - total_messages: 2, - }, - ); - }); - } - - #[test] - fn receive_messages_proof_rejects_invalid_dispatch_weight() { - run_test(|| { - assert_noop!( - Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), - 1, - REGULAR_PAYLOAD.declared_weight - 1, - ), - Error::::InvalidMessagesDispatchWeight, - ); - }); - } - - #[test] - fn receive_messages_proof_rejects_invalid_proof() { - run_test(|| { - assert_noop!( - Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Err(()).into(), - 1, - 0, - ), - Error::::InvalidMessagesProof, - ); - }); - } - - #[test] - fn receive_messages_proof_rejects_proof_with_too_many_messages() { - run_test(|| { - assert_noop!( - Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), - u32::MAX, - 0, - ), - Error::::TooManyMessagesInTheProof, - ); - }); - } - - #[test] - fn receive_messages_delivery_proof_works() { - run_test(|| { - send_regular_message(); - receive_messages_delivery_proof(); - - assert_eq!( - OutboundLanes::::get(&TEST_LANE_ID).latest_received_nonce, - 1, - ); - }); - } - - #[test] - fn receive_messages_delivery_proof_rewards_relayers() { - run_test(|| { - assert_ok!(Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - 1000, - )); - assert_ok!(Pallet::::send_message( - Origin::signed(1), - TEST_LANE_ID, - REGULAR_PAYLOAD, - 2000, - )); - - // this reports delivery of message 1 => reward is paid to TEST_RELAYER_A - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - relayers: vec![unrewarded_relayer(1, 1, TEST_RELAYER_A)].into_iter().collect(), - ..Default::default() - } - ))), - UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 1, - ..Default::default() - }, - )); - assert!(TestMessageDeliveryAndDispatchPayment::is_reward_paid( - TEST_RELAYER_A, - 1000 - )); - assert!(!TestMessageDeliveryAndDispatchPayment::is_reward_paid( - TEST_RELAYER_B, - 2000 - )); - - // this reports delivery of both message 1 and message 2 => reward is paid only to TEST_RELAYER_B - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - relayers: vec![ - unrewarded_relayer(1, 1, TEST_RELAYER_A), - unrewarded_relayer(2, 2, TEST_RELAYER_B) - ] - .into_iter() - .collect(), - ..Default::default() - } - ))), - UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - total_messages: 2, - ..Default::default() - }, - )); - assert!(!TestMessageDeliveryAndDispatchPayment::is_reward_paid( - TEST_RELAYER_A, - 1000 - )); - assert!(TestMessageDeliveryAndDispatchPayment::is_reward_paid( - TEST_RELAYER_B, - 2000 - )); - }); - } - - #[test] - fn receive_messages_delivery_proof_rejects_invalid_proof() { - run_test(|| { - assert_noop!( - Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Err(())), - Default::default(), - ), - Error::::InvalidMessagesDeliveryProof, - ); - }); - } - - #[test] - fn receive_messages_delivery_proof_rejects_proof_if_declared_relayers_state_is_invalid() { - run_test(|| { - // when number of relayers entires is invalid - assert_noop!( - Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - relayers: vec![ - unrewarded_relayer(1, 1, TEST_RELAYER_A), - unrewarded_relayer(2, 2, TEST_RELAYER_B) - ] - .into_iter() - .collect(), - ..Default::default() - } - ))), - UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 2, - ..Default::default() - }, - ), - Error::::InvalidUnrewardedRelayersState, - ); - - // when number of messages is invalid - assert_noop!( - Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(Ok(( - TEST_LANE_ID, - InboundLaneData { - relayers: vec![ - unrewarded_relayer(1, 1, TEST_RELAYER_A), - unrewarded_relayer(2, 2, TEST_RELAYER_B) - ] - .into_iter() - .collect(), - ..Default::default() - } - ))), - UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - total_messages: 1, - ..Default::default() - }, - ), - Error::::InvalidUnrewardedRelayersState, - ); - }); - } - - #[test] - fn receive_messages_accepts_single_message_with_invalid_payload() { - run_test(|| { - let mut invalid_message = message(1, REGULAR_PAYLOAD); - invalid_message.data.payload = Vec::new(); - - assert_ok!(Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![invalid_message]).into(), - 1, - 0, // weight may be zero in this case (all messages are improperly encoded) - ),); - - assert_eq!( - InboundLanes::::get(&TEST_LANE_ID).last_delivered_nonce(), - 1, - ); - }); - } - - #[test] - fn receive_messages_accepts_batch_with_message_with_invalid_payload() { - run_test(|| { - let mut invalid_message = message(2, REGULAR_PAYLOAD); - invalid_message.data.payload = Vec::new(); - - assert_ok!(Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - Ok(vec![ - message(1, REGULAR_PAYLOAD), - invalid_message, - message(3, REGULAR_PAYLOAD), - ]) - .into(), - 3, - REGULAR_PAYLOAD.declared_weight + REGULAR_PAYLOAD.declared_weight, - ),); - - assert_eq!( - InboundLanes::::get(&TEST_LANE_ID).last_delivered_nonce(), - 3, - ); - }); - } - - #[test] - fn storage_message_key_computed_properly() { - // If this test fails, then something has been changed in module storage that is breaking all - // previously crafted messages proofs. - let storage_key = storage_keys::message_key::(&*b"test", 42).0; - assert_eq!( - storage_key, - hex!("dd16c784ebd3390a9bc0357c7511ed018a395e6242c6813b196ca31ed0547ea79446af0e09063bd4a7874aef8a997cec746573742a00000000000000").to_vec(), - "Unexpected storage key: {}", - hex::encode(&storage_key), - ); - } - - #[test] - fn outbound_lane_data_key_computed_properly() { - // If this test fails, then something has been changed in module storage that is breaking all - // previously crafted outbound lane state proofs. - let storage_key = storage_keys::outbound_lane_data_key::(&*b"test").0; - assert_eq!( - storage_key, - hex!("dd16c784ebd3390a9bc0357c7511ed0196c246acb9b55077390e3ca723a0ca1f44a8995dd50b6657a037a7839304535b74657374").to_vec(), - "Unexpected storage key: {}", - hex::encode(&storage_key), - ); - } - - #[test] - fn inbound_lane_data_key_computed_properly() { - // If this test fails, then something has been changed in module storage that is breaking all - // previously crafted inbound lane state proofs. - let storage_key = storage_keys::inbound_lane_data_key::(&*b"test").0; - assert_eq!( - storage_key, - hex!("dd16c784ebd3390a9bc0357c7511ed01e5f83cf83f2127eb47afdc35d6e43fab44a8995dd50b6657a037a7839304535b74657374").to_vec(), - "Unexpected storage key: {}", - hex::encode(&storage_key), - ); - } - - #[test] - fn actual_dispatch_weight_does_not_overlow() { - run_test(|| { - let message1 = message(1, message_payload(0, Weight::MAX / 2)); - let message2 = message(2, message_payload(0, Weight::MAX / 2)); - let message3 = message(2, message_payload(0, Weight::MAX / 2)); - - assert_noop!( - Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - // this may cause overflow if source chain storage is invalid - Ok(vec![message1, message2, message3]).into(), - 3, - 100, - ), - Error::::InvalidMessagesDispatchWeight, - ); - }); - } - - #[test] - fn increase_message_fee_fails_if_message_is_already_delivered() { - run_test(|| { - send_regular_message(); - receive_messages_delivery_proof(); - - assert_noop!( - Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 100,), - Error::::MessageIsAlreadyDelivered, - ); - }); - } - - #[test] - fn increase_message_fee_fails_if_message_is_not_yet_sent() { - run_test(|| { - assert_noop!( - Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 100,), - Error::::MessageIsNotYetSent, - ); - }); - } - - #[test] - fn increase_message_fee_fails_if_submitter_cant_pay_additional_fee() { - run_test(|| { - send_regular_message(); - - TestMessageDeliveryAndDispatchPayment::reject_payments(); - - assert_noop!( - Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 100,), - Error::::FailedToWithdrawMessageFee, - ); - }); - } - - #[test] - fn increase_message_fee_succeeds() { - run_test(|| { - send_regular_message(); - - assert_ok!(Pallet::::increase_message_fee( - Origin::signed(1), - TEST_LANE_ID, - 1, - 100, - ),); - assert!(TestMessageDeliveryAndDispatchPayment::is_fee_paid(1, 100)); - }); - } - - #[test] - fn weight_refund_from_receive_messages_proof_works() { - run_test(|| { - fn submit_with_unspent_weight( - nonce: MessageNonce, - unspent_weight: Weight, - is_prepaid: bool, - ) -> (Weight, Weight) { - let mut payload = REGULAR_PAYLOAD; - payload.dispatch_result.unspent_weight = unspent_weight; - payload.dispatch_result.dispatch_fee_paid_during_dispatch = !is_prepaid; - let proof = Ok(vec![message(nonce, payload)]).into(); - let messages_count = 1; - let pre_dispatch_weight = ::WeightInfo::receive_messages_proof_weight( - &proof, - messages_count, - REGULAR_PAYLOAD.declared_weight, - ); - let post_dispatch_weight = Pallet::::receive_messages_proof( - Origin::signed(1), - TEST_RELAYER_A, - proof, - messages_count, - REGULAR_PAYLOAD.declared_weight, - ) - .expect("delivery has failed") - .actual_weight - .expect("receive_messages_proof always returns Some"); - - (pre_dispatch_weight, post_dispatch_weight) - } - - // when dispatch is returning `unspent_weight < declared_weight` - let (pre, post) = submit_with_unspent_weight(1, 1, false); - assert_eq!(post, pre - 1); - - // when dispatch is returning `unspent_weight = declared_weight` - let (pre, post) = submit_with_unspent_weight(2, REGULAR_PAYLOAD.declared_weight, false); - assert_eq!(post, pre - REGULAR_PAYLOAD.declared_weight); - - // when dispatch is returning `unspent_weight > declared_weight` - let (pre, post) = submit_with_unspent_weight(3, REGULAR_PAYLOAD.declared_weight + 1, false); - assert_eq!(post, pre - REGULAR_PAYLOAD.declared_weight); - - // when there's no unspent weight - let (pre, post) = submit_with_unspent_weight(4, 0, false); - assert_eq!(post, pre); - - // when dispatch is returning `unspent_weight < declared_weight` AND message is prepaid - let (pre, post) = submit_with_unspent_weight(5, 1, true); - assert_eq!( - post, - pre - 1 - ::WeightInfo::pay_inbound_dispatch_fee_overhead() - ); - }); - } - - #[test] - fn messages_delivered_callbacks_are_called() { - run_test(|| { - send_regular_message(); - send_regular_message(); - send_regular_message(); - - // messages 1+2 are confirmed in 1 tx, message 3 in a separate tx - // dispatch of message 2 has failed - let mut delivered_messages_1_and_2 = DeliveredMessages::new(1, true); - delivered_messages_1_and_2.note_dispatched_message(false); - let messages_1_and_2_proof = Ok(( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 0, - relayers: vec![UnrewardedRelayer { - relayer: 0, - messages: delivered_messages_1_and_2.clone(), - }] - .into_iter() - .collect(), - }, - )); - let delivered_message_3 = DeliveredMessages::new(3, true); - let messages_3_proof = Ok(( - TEST_LANE_ID, - InboundLaneData { - last_confirmed_nonce: 0, - relayers: vec![UnrewardedRelayer { - relayer: 0, - messages: delivered_message_3.clone(), - }] - .into_iter() - .collect(), - }, - )); - - // first tx with messages 1+2 - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(messages_1_and_2_proof), - UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 2, - ..Default::default() - }, - )); - // second tx with message 3 - assert_ok!(Pallet::::receive_messages_delivery_proof( - Origin::signed(1), - TestMessagesDeliveryProof(messages_3_proof), - UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 1, - ..Default::default() - }, - )); - - // ensure that both callbacks have been called twice: for 1+2, then for 3 - crate::mock::TestOnDeliveryConfirmed1::ensure_called(&TEST_LANE_ID, &delivered_messages_1_and_2); - crate::mock::TestOnDeliveryConfirmed1::ensure_called(&TEST_LANE_ID, &delivered_message_3); - crate::mock::TestOnDeliveryConfirmed2::ensure_called(&TEST_LANE_ID, &delivered_messages_1_and_2); - crate::mock::TestOnDeliveryConfirmed2::ensure_called(&TEST_LANE_ID, &delivered_message_3); - }); - } -} diff --git a/bridges/modules/messages/src/mock.rs b/bridges/modules/messages/src/mock.rs deleted file mode 100644 index 2e184dda1585..000000000000 --- a/bridges/modules/messages/src/mock.rs +++ /dev/null @@ -1,503 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -// From construct_runtime macro -#![allow(clippy::from_over_into)] - -use crate::Config; - -use bitvec::prelude::*; -use bp_messages::{ - source_chain::{ - LaneMessageVerifier, MessageDeliveryAndDispatchPayment, OnDeliveryConfirmed, RelayersRewards, Sender, - TargetHeaderChain, - }, - target_chain::{DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages, SourceHeaderChain}, - DeliveredMessages, InboundLaneData, LaneId, Message, MessageData, MessageKey, MessageNonce, OutboundLaneData, - Parameter as MessagesParameter, UnrewardedRelayer, -}; -use bp_runtime::{messages::MessageDispatchResult, Size}; -use codec::{Decode, Encode}; -use frame_support::{parameter_types, weights::Weight}; -use sp_core::H256; -use sp_runtime::{ - testing::Header as SubstrateHeader, - traits::{BlakeTwo256, IdentityLookup}, - FixedU128, Perbill, -}; -use std::collections::BTreeMap; - -pub type AccountId = u64; -pub type Balance = u64; -#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq)] -pub struct TestPayload { - /// Field that may be used to identify messages. - pub id: u64, - /// Dispatch weight that is declared by the message sender. - pub declared_weight: Weight, - /// Message dispatch result. - /// - /// Note: in correct code `dispatch_result.unspent_weight` will always be <= `declared_weight`, but for test - /// purposes we'll be making it larger than `declared_weight` sometimes. - pub dispatch_result: MessageDispatchResult, -} -pub type TestMessageFee = u64; -pub type TestRelayer = u64; - -pub struct AccountIdConverter; - -impl sp_runtime::traits::Convert for AccountIdConverter { - fn convert(hash: H256) -> AccountId { - hash.to_low_u64_ne() - } -} - -type Block = frame_system::mocking::MockBlock; -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - -use crate as pallet_bridge_messages; - -frame_support::construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Event}, - Messages: pallet_bridge_messages::{Pallet, Call, Event}, - } -} - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} - -impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = SubstrateHeader; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type SS58Prefix = (); - type OnSetCode = (); -} - -parameter_types! { - pub const ExistentialDeposit: u64 = 1; -} - -impl pallet_balances::Config for TestRuntime { - type MaxLocks = (); - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = frame_system::Pallet; - type WeightInfo = (); - type MaxReserves = (); - type ReserveIdentifier = (); -} - -parameter_types! { - pub const MaxMessagesToPruneAtOnce: u64 = 10; - pub const MaxUnrewardedRelayerEntriesAtInboundLane: u64 = 16; - pub const MaxUnconfirmedMessagesAtInboundLane: u64 = 32; - pub storage TokenConversionRate: FixedU128 = 1.into(); -} - -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] -pub enum TestMessagesParameter { - TokenConversionRate(FixedU128), -} - -impl MessagesParameter for TestMessagesParameter { - fn save(&self) { - match *self { - TestMessagesParameter::TokenConversionRate(conversion_rate) => TokenConversionRate::set(&conversion_rate), - } - } -} - -impl Config for TestRuntime { - type Event = Event; - type WeightInfo = (); - type Parameter = TestMessagesParameter; - type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; - type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; - type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; - - type OutboundPayload = TestPayload; - type OutboundMessageFee = TestMessageFee; - - type InboundPayload = TestPayload; - type InboundMessageFee = TestMessageFee; - type InboundRelayer = TestRelayer; - - type AccountIdConverter = AccountIdConverter; - - type TargetHeaderChain = TestTargetHeaderChain; - type LaneMessageVerifier = TestLaneMessageVerifier; - type MessageDeliveryAndDispatchPayment = TestMessageDeliveryAndDispatchPayment; - type OnDeliveryConfirmed = (TestOnDeliveryConfirmed1, TestOnDeliveryConfirmed2); - - type SourceHeaderChain = TestSourceHeaderChain; - type MessageDispatch = TestMessageDispatch; -} - -impl Size for TestPayload { - fn size_hint(&self) -> u32 { - 16 - } -} - -/// Account that has balance to use in tests. -pub const ENDOWED_ACCOUNT: AccountId = 0xDEAD; - -/// Account id of test relayer. -pub const TEST_RELAYER_A: AccountId = 100; - -/// Account id of additional test relayer - B. -pub const TEST_RELAYER_B: AccountId = 101; - -/// Account id of additional test relayer - C. -pub const TEST_RELAYER_C: AccountId = 102; - -/// Error that is returned by all test implementations. -pub const TEST_ERROR: &str = "Test error"; - -/// Lane that we're using in tests. -pub const TEST_LANE_ID: LaneId = [0, 0, 0, 1]; - -/// Regular message payload. -pub const REGULAR_PAYLOAD: TestPayload = message_payload(0, 50); - -/// Payload that is rejected by `TestTargetHeaderChain`. -pub const PAYLOAD_REJECTED_BY_TARGET_CHAIN: TestPayload = message_payload(1, 50); - -/// Vec of proved messages, grouped by lane. -pub type MessagesByLaneVec = Vec<(LaneId, ProvedLaneMessages>)>; - -/// Test messages proof. -#[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] -pub struct TestMessagesProof { - pub result: Result, -} - -impl Size for TestMessagesProof { - fn size_hint(&self) -> u32 { - 0 - } -} - -impl From>, ()>> for TestMessagesProof { - fn from(result: Result>, ()>) -> Self { - Self { - result: result.map(|messages| { - let mut messages_by_lane: BTreeMap>> = - BTreeMap::new(); - for message in messages { - messages_by_lane - .entry(message.key.lane_id) - .or_default() - .messages - .push(message); - } - messages_by_lane.into_iter().collect() - }), - } - } -} - -/// Messages delivery proof used in tests. -#[derive(Debug, Encode, Decode, Eq, Clone, PartialEq)] -pub struct TestMessagesDeliveryProof(pub Result<(LaneId, InboundLaneData), ()>); - -impl Size for TestMessagesDeliveryProof { - fn size_hint(&self) -> u32 { - 0 - } -} - -/// Target header chain that is used in tests. -#[derive(Debug, Default)] -pub struct TestTargetHeaderChain; - -impl TargetHeaderChain for TestTargetHeaderChain { - type Error = &'static str; - - type MessagesDeliveryProof = TestMessagesDeliveryProof; - - fn verify_message(payload: &TestPayload) -> Result<(), Self::Error> { - if *payload == PAYLOAD_REJECTED_BY_TARGET_CHAIN { - Err(TEST_ERROR) - } else { - Ok(()) - } - } - - fn verify_messages_delivery_proof( - proof: Self::MessagesDeliveryProof, - ) -> Result<(LaneId, InboundLaneData), Self::Error> { - proof.0.map_err(|_| TEST_ERROR) - } -} - -/// Lane message verifier that is used in tests. -#[derive(Debug, Default)] -pub struct TestLaneMessageVerifier; - -impl LaneMessageVerifier for TestLaneMessageVerifier { - type Error = &'static str; - - fn verify_message( - _submitter: &Sender, - delivery_and_dispatch_fee: &TestMessageFee, - _lane: &LaneId, - _lane_outbound_data: &OutboundLaneData, - _payload: &TestPayload, - ) -> Result<(), Self::Error> { - if *delivery_and_dispatch_fee != 0 { - Ok(()) - } else { - Err(TEST_ERROR) - } - } -} - -/// Message fee payment system that is used in tests. -#[derive(Debug, Default)] -pub struct TestMessageDeliveryAndDispatchPayment; - -impl TestMessageDeliveryAndDispatchPayment { - /// Reject all payments. - pub fn reject_payments() { - frame_support::storage::unhashed::put(b":reject-message-fee:", &true); - } - - /// Returns true if given fee has been paid by given submitter. - pub fn is_fee_paid(submitter: AccountId, fee: TestMessageFee) -> bool { - frame_support::storage::unhashed::get(b":message-fee:") == Some((Sender::Signed(submitter), fee)) - } - - /// Returns true if given relayer has been rewarded with given balance. The reward-paid flag is - /// cleared after the call. - pub fn is_reward_paid(relayer: AccountId, fee: TestMessageFee) -> bool { - let key = (b":relayer-reward:", relayer, fee).encode(); - frame_support::storage::unhashed::take::(&key).is_some() - } -} - -impl MessageDeliveryAndDispatchPayment for TestMessageDeliveryAndDispatchPayment { - type Error = &'static str; - - fn pay_delivery_and_dispatch_fee( - submitter: &Sender, - fee: &TestMessageFee, - _relayer_fund_account: &AccountId, - ) -> Result<(), Self::Error> { - if frame_support::storage::unhashed::get(b":reject-message-fee:") == Some(true) { - return Err(TEST_ERROR); - } - - frame_support::storage::unhashed::put(b":message-fee:", &(submitter, fee)); - Ok(()) - } - - fn pay_relayers_rewards( - _confirmation_relayer: &AccountId, - relayers_rewards: RelayersRewards, - _relayer_fund_account: &AccountId, - ) { - for (relayer, reward) in relayers_rewards { - let key = (b":relayer-reward:", relayer, reward.reward).encode(); - frame_support::storage::unhashed::put(&key, &true); - } - } -} - -/// First on-messages-delivered callback. -#[derive(Debug)] -pub struct TestOnDeliveryConfirmed1; - -impl TestOnDeliveryConfirmed1 { - /// Verify that the callback has been called with given delivered messages. - pub fn ensure_called(lane: &LaneId, messages: &DeliveredMessages) { - let key = (b"TestOnDeliveryConfirmed1", lane, messages).encode(); - assert_eq!(frame_support::storage::unhashed::get(&key), Some(true)); - } -} - -impl OnDeliveryConfirmed for TestOnDeliveryConfirmed1 { - fn on_messages_delivered(lane: &LaneId, messages: &DeliveredMessages) { - let key = (b"TestOnDeliveryConfirmed1", lane, messages).encode(); - frame_support::storage::unhashed::put(&key, &true); - } -} - -/// Seconde on-messages-delivered callback. -#[derive(Debug)] -pub struct TestOnDeliveryConfirmed2; - -impl TestOnDeliveryConfirmed2 { - /// Verify that the callback has been called with given delivered messages. - pub fn ensure_called(lane: &LaneId, messages: &DeliveredMessages) { - let key = (b"TestOnDeliveryConfirmed2", lane, messages).encode(); - assert_eq!(frame_support::storage::unhashed::get(&key), Some(true)); - } -} - -impl OnDeliveryConfirmed for TestOnDeliveryConfirmed2 { - fn on_messages_delivered(lane: &LaneId, messages: &DeliveredMessages) { - let key = (b"TestOnDeliveryConfirmed2", lane, messages).encode(); - frame_support::storage::unhashed::put(&key, &true); - } -} - -/// Source header chain that is used in tests. -#[derive(Debug)] -pub struct TestSourceHeaderChain; - -impl SourceHeaderChain for TestSourceHeaderChain { - type Error = &'static str; - - type MessagesProof = TestMessagesProof; - - fn verify_messages_proof( - proof: Self::MessagesProof, - _messages_count: u32, - ) -> Result>, Self::Error> { - proof - .result - .map(|proof| proof.into_iter().collect()) - .map_err(|_| TEST_ERROR) - } -} - -/// Source header chain that is used in tests. -#[derive(Debug)] -pub struct TestMessageDispatch; - -impl MessageDispatch for TestMessageDispatch { - type DispatchPayload = TestPayload; - - fn dispatch_weight(message: &DispatchMessage) -> Weight { - match message.data.payload.as_ref() { - Ok(payload) => payload.declared_weight, - Err(_) => 0, - } - } - - fn dispatch( - _relayer_account: &AccountId, - message: DispatchMessage, - ) -> MessageDispatchResult { - match message.data.payload.as_ref() { - Ok(payload) => payload.dispatch_result.clone(), - Err(_) => dispatch_result(0), - } - } -} - -/// Return test lane message with given nonce and payload. -pub fn message(nonce: MessageNonce, payload: TestPayload) -> Message { - Message { - key: MessageKey { - lane_id: TEST_LANE_ID, - nonce, - }, - data: message_data(payload), - } -} - -/// Constructs message payload using given arguments and zero unspent weight. -pub const fn message_payload(id: u64, declared_weight: Weight) -> TestPayload { - TestPayload { - id, - declared_weight, - dispatch_result: dispatch_result(0), - } -} - -/// Return message data with valid fee for given payload. -pub fn message_data(payload: TestPayload) -> MessageData { - MessageData { - payload: payload.encode(), - fee: 1, - } -} - -/// Returns message dispatch result with given unspent weight. -pub const fn dispatch_result(unspent_weight: Weight) -> MessageDispatchResult { - MessageDispatchResult { - dispatch_result: true, - unspent_weight, - dispatch_fee_paid_during_dispatch: true, - } -} - -/// Constructs unrewarded relayer entry from nonces range and relayer id. -pub fn unrewarded_relayer( - begin: MessageNonce, - end: MessageNonce, - relayer: TestRelayer, -) -> UnrewardedRelayer { - UnrewardedRelayer { - relayer, - messages: DeliveredMessages { - begin, - end, - dispatch_results: if end >= begin { - bitvec![Msb0, u8; 1; (end - begin + 1) as _] - } else { - Default::default() - }, - }, - } -} - -/// Run pallet test. -pub fn run_test(test: impl FnOnce() -> T) -> T { - let mut t = frame_system::GenesisConfig::default() - .build_storage::() - .unwrap(); - pallet_balances::GenesisConfig:: { - balances: vec![(ENDOWED_ACCOUNT, 1_000_000)], - } - .assimilate_storage(&mut t) - .unwrap(); - let mut ext = sp_io::TestExternalities::new(t); - ext.execute_with(test) -} diff --git a/bridges/modules/messages/src/weights.rs b/bridges/modules/messages/src/weights.rs deleted file mode 100644 index 9b65c8217ad6..000000000000 --- a/bridges/modules/messages/src/weights.rs +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Autogenerated weights for pallet_bridge_messages -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: [50, ], REPEAT: 20 -//! LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled -//! CHAIN: Some("dev"), DB CACHE: 128 - -// Executed Command: -// target/release/rialto-bridge-node -// benchmark -// --chain=dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_bridge_messages -// --extrinsic=* -// --execution=wasm -// --wasm-execution=Compiled -// --heap-pages=4096 -// --output=./modules/messages/src/weights.rs -// --template=./.maintain/rialto-weight-template.hbs - -#![allow(clippy::all)] -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{ - traits::Get, - weights::{constants::RocksDbWeight, Weight}, -}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for pallet_bridge_messages. -pub trait WeightInfo { - fn send_minimal_message_worst_case() -> Weight; - fn send_1_kb_message_worst_case() -> Weight; - fn send_16_kb_message_worst_case() -> Weight; - fn increase_message_fee() -> Weight; - fn receive_single_message_proof() -> Weight; - fn receive_two_messages_proof() -> Weight; - fn receive_single_message_proof_with_outbound_lane_state() -> Weight; - fn receive_single_message_proof_1_kb() -> Weight; - fn receive_single_message_proof_16_kb() -> Weight; - fn receive_single_prepaid_message_proof() -> Weight; - fn receive_delivery_proof_for_single_message() -> Weight; - fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight; - fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight; - fn send_messages_of_various_lengths(i: u32) -> Weight; - fn receive_multiple_messages_proof(i: u32) -> Weight; - fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight; - fn receive_message_proofs_with_large_leaf(i: u32) -> Weight; - fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight; - fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight; - fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight; -} - -/// Weights for pallet_bridge_messages using the Rialto node and recommended hardware. -pub struct RialtoWeight(PhantomData); -impl WeightInfo for RialtoWeight { - fn send_minimal_message_worst_case() -> Weight { - (159_305_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(12 as Weight)) - } - fn send_1_kb_message_worst_case() -> Weight { - (164_394_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(12 as Weight)) - } - fn send_16_kb_message_worst_case() -> Weight { - (223_521_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(12 as Weight)) - } - fn increase_message_fee() -> Weight { - (6_709_925_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof() -> Weight { - (206_769_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_two_messages_proof() -> Weight { - (343_982_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_with_outbound_lane_state() -> Weight { - (223_738_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_1_kb() -> Weight { - (235_369_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_16_kb() -> Weight { - (510_338_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_single_prepaid_message_proof() -> Weight { - (141_536_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn receive_delivery_proof_for_single_message() -> Weight { - (128_805_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight { - (137_143_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight { - (193_108_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn send_messages_of_various_lengths(i: u32) -> Weight { - (133_632_000 as Weight) - .saturating_add((4_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(12 as Weight)) - } - fn receive_multiple_messages_proof(i: u32) -> Weight { - (0 as Weight) - .saturating_add((145_006_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight { - (486_301_000 as Weight) - .saturating_add((10_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_message_proofs_with_large_leaf(i: u32) -> Weight { - (178_139_000 as Weight) - .saturating_add((7_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight { - (0 as Weight) - .saturating_add((150_844_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight { - (113_140_000 as Weight) - .saturating_add((7_656_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight { - (97_424_000 as Weight) - .saturating_add((63_128_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } -} - -// For backwards compatibility and tests -impl WeightInfo for () { - fn send_minimal_message_worst_case() -> Weight { - (159_305_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(12 as Weight)) - } - fn send_1_kb_message_worst_case() -> Weight { - (164_394_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(12 as Weight)) - } - fn send_16_kb_message_worst_case() -> Weight { - (223_521_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(12 as Weight)) - } - fn increase_message_fee() -> Weight { - (6_709_925_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof() -> Weight { - (206_769_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_two_messages_proof() -> Weight { - (343_982_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_with_outbound_lane_state() -> Weight { - (223_738_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_1_kb() -> Weight { - (235_369_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_single_message_proof_16_kb() -> Weight { - (510_338_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_single_prepaid_message_proof() -> Weight { - (141_536_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(3 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) - } - fn receive_delivery_proof_for_single_message() -> Weight { - (128_805_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(6 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight { - (137_143_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(7 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight { - (193_108_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(8 as Weight)) - .saturating_add(RocksDbWeight::get().writes(4 as Weight)) - } - fn send_messages_of_various_lengths(i: u32) -> Weight { - (133_632_000 as Weight) - .saturating_add((4_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(12 as Weight)) - } - fn receive_multiple_messages_proof(i: u32) -> Weight { - (0 as Weight) - .saturating_add((145_006_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight { - (486_301_000 as Weight) - .saturating_add((10_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_message_proofs_with_large_leaf(i: u32) -> Weight { - (178_139_000 as Weight) - .saturating_add((7_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight { - (0 as Weight) - .saturating_add((150_844_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight { - (113_140_000 as Weight) - .saturating_add((7_656_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - } - fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight { - (97_424_000 as Weight) - .saturating_add((63_128_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) - .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } -} diff --git a/bridges/modules/messages/src/weights_ext.rs b/bridges/modules/messages/src/weights_ext.rs deleted file mode 100644 index be440174b4b9..000000000000 --- a/bridges/modules/messages/src/weights_ext.rs +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Weight-related utilities. - -use crate::weights::WeightInfo; - -use bp_messages::{MessageNonce, UnrewardedRelayersState}; -use bp_runtime::{PreComputedSize, Size}; -use frame_support::weights::Weight; - -/// Size of the message being delivered in benchmarks. -pub const EXPECTED_DEFAULT_MESSAGE_LENGTH: u32 = 128; - -/// We assume that size of signed extensions on all our chains and size of all 'small' arguments of calls -/// we're checking here would fit 1KB. -const SIGNED_EXTENSIONS_SIZE: u32 = 1024; - -/// Ensure that weights from `WeightInfoExt` implementation are looking correct. -pub fn ensure_weights_are_correct( - expected_default_message_delivery_tx_weight: Weight, - expected_additional_byte_delivery_weight: Weight, - expected_messages_delivery_confirmation_tx_weight: Weight, - expected_pay_inbound_dispatch_fee_weight: Weight, -) { - // verify `send_message` weight components - assert_ne!(W::send_message_overhead(), 0); - assert_ne!(W::send_message_size_overhead(0), 0); - - // verify `receive_messages_proof` weight components - assert_ne!(W::receive_messages_proof_overhead(), 0); - assert_ne!(W::receive_messages_proof_messages_overhead(1), 0); - assert_ne!(W::receive_messages_proof_outbound_lane_state_overhead(), 0); - assert_ne!(W::storage_proof_size_overhead(1), 0); - - // verify that the hardcoded value covers `receive_messages_proof` weight - let actual_single_regular_message_delivery_tx_weight = W::receive_messages_proof_weight( - &PreComputedSize((EXPECTED_DEFAULT_MESSAGE_LENGTH + W::expected_extra_storage_proof_size()) as usize), - 1, - 0, - ); - assert!( - actual_single_regular_message_delivery_tx_weight <= expected_default_message_delivery_tx_weight, - "Default message delivery transaction weight {} is larger than expected weight {}", - actual_single_regular_message_delivery_tx_weight, - expected_default_message_delivery_tx_weight, - ); - - // verify that hardcoded value covers additional byte length of `receive_messages_proof` weight - let actual_additional_byte_delivery_weight = W::storage_proof_size_overhead(1); - assert!( - actual_additional_byte_delivery_weight <= expected_additional_byte_delivery_weight, - "Single additional byte delivery weight {} is larger than expected weight {}", - actual_additional_byte_delivery_weight, - expected_additional_byte_delivery_weight, - ); - - // verify `receive_messages_delivery_proof` weight components - assert_ne!(W::receive_messages_delivery_proof_overhead(), 0); - assert_ne!(W::receive_messages_delivery_proof_messages_overhead(1), 0); - assert_ne!(W::receive_messages_delivery_proof_relayers_overhead(1), 0); - assert_ne!(W::storage_proof_size_overhead(1), 0); - - // verify that the hardcoded value covers `receive_messages_delivery_proof` weight - let actual_messages_delivery_confirmation_tx_weight = W::receive_messages_delivery_proof_weight( - &PreComputedSize(W::expected_extra_storage_proof_size() as usize), - &UnrewardedRelayersState { - unrewarded_relayer_entries: 1, - total_messages: 1, - ..Default::default() - }, - ); - assert!( - actual_messages_delivery_confirmation_tx_weight <= expected_messages_delivery_confirmation_tx_weight, - "Messages delivery confirmation transaction weight {} is larger than expected weight {}", - actual_messages_delivery_confirmation_tx_weight, - expected_messages_delivery_confirmation_tx_weight, - ); - - // verify pay-dispatch-fee overhead for inbound messages - let actual_pay_inbound_dispatch_fee_weight = W::pay_inbound_dispatch_fee_overhead(); - assert!( - actual_pay_inbound_dispatch_fee_weight <= expected_pay_inbound_dispatch_fee_weight, - "Weight {} of pay-dispatch-fee overhead for inbound messages is larger than expected weight {}", - actual_pay_inbound_dispatch_fee_weight, - expected_pay_inbound_dispatch_fee_weight, - ); -} - -/// Ensure that we're able to receive maximal (by-size and by-weight) message from other chain. -pub fn ensure_able_to_receive_message( - max_extrinsic_size: u32, - max_extrinsic_weight: Weight, - max_incoming_message_proof_size: u32, - max_incoming_message_dispatch_weight: Weight, -) { - // verify that we're able to receive proof of maximal-size message - let max_delivery_transaction_size = max_incoming_message_proof_size.saturating_add(SIGNED_EXTENSIONS_SIZE); - assert!( - max_delivery_transaction_size <= max_extrinsic_size, - "Size of maximal message delivery transaction {} + {} is larger than maximal possible transaction size {}", - max_incoming_message_proof_size, - SIGNED_EXTENSIONS_SIZE, - max_extrinsic_size, - ); - - // verify that we're able to receive proof of maximal-size message with maximal dispatch weight - let max_delivery_transaction_dispatch_weight = W::receive_messages_proof_weight( - &PreComputedSize((max_incoming_message_proof_size + W::expected_extra_storage_proof_size()) as usize), - 1, - max_incoming_message_dispatch_weight, - ); - assert!( - max_delivery_transaction_dispatch_weight <= max_extrinsic_weight, - "Weight of maximal message delivery transaction + {} is larger than maximal possible transaction weight {}", - max_delivery_transaction_dispatch_weight, - max_extrinsic_weight, - ); -} - -/// Ensure that we're able to receive maximal confirmation from other chain. -pub fn ensure_able_to_receive_confirmation( - max_extrinsic_size: u32, - max_extrinsic_weight: Weight, - max_inbound_lane_data_proof_size_from_peer_chain: u32, - max_unrewarded_relayer_entries_at_peer_inbound_lane: MessageNonce, - max_unconfirmed_messages_at_inbound_lane: MessageNonce, -) { - // verify that we're able to receive confirmation of maximal-size - let max_confirmation_transaction_size = - max_inbound_lane_data_proof_size_from_peer_chain.saturating_add(SIGNED_EXTENSIONS_SIZE); - assert!( - max_confirmation_transaction_size <= max_extrinsic_size, - "Size of maximal message delivery confirmation transaction {} + {} is larger than maximal possible transaction size {}", - max_inbound_lane_data_proof_size_from_peer_chain, - SIGNED_EXTENSIONS_SIZE, - max_extrinsic_size, - ); - - // verify that we're able to reward maximal number of relayers that have delivered maximal number of messages - let max_confirmation_transaction_dispatch_weight = W::receive_messages_delivery_proof_weight( - &PreComputedSize(max_inbound_lane_data_proof_size_from_peer_chain as usize), - &UnrewardedRelayersState { - unrewarded_relayer_entries: max_unrewarded_relayer_entries_at_peer_inbound_lane, - total_messages: max_unconfirmed_messages_at_inbound_lane, - ..Default::default() - }, - ); - assert!( - max_confirmation_transaction_dispatch_weight <= max_extrinsic_weight, - "Weight of maximal confirmation transaction {} is larger than maximal possible transaction weight {}", - max_confirmation_transaction_dispatch_weight, - max_extrinsic_weight, - ); -} - -/// Extended weight info. -pub trait WeightInfoExt: WeightInfo { - /// Size of proof that is already included in the single message delivery weight. - /// - /// The message submitter (at source chain) has already covered this cost. But there are two - /// factors that may increase proof size: (1) the message size may be larger than predefined - /// and (2) relayer may add extra trie nodes to the proof. So if proof size is larger than - /// this value, we're going to charge relayer for that. - fn expected_extra_storage_proof_size() -> u32; - - // Functions that are directly mapped to extrinsics weights. - - /// Weight of message send extrinsic. - fn send_message_weight(message: &impl Size) -> Weight { - let transaction_overhead = Self::send_message_overhead(); - let message_size_overhead = Self::send_message_size_overhead(message.size_hint()); - - transaction_overhead.saturating_add(message_size_overhead) - } - - /// Weight of message delivery extrinsic. - fn receive_messages_proof_weight(proof: &impl Size, messages_count: u32, dispatch_weight: Weight) -> Weight { - // basic components of extrinsic weight - let transaction_overhead = Self::receive_messages_proof_overhead(); - let outbound_state_delivery_weight = Self::receive_messages_proof_outbound_lane_state_overhead(); - let messages_delivery_weight = - Self::receive_messages_proof_messages_overhead(MessageNonce::from(messages_count)); - let messages_dispatch_weight = dispatch_weight; - - // proof size overhead weight - let expected_proof_size = EXPECTED_DEFAULT_MESSAGE_LENGTH - .saturating_mul(messages_count.saturating_sub(1)) - .saturating_add(Self::expected_extra_storage_proof_size()); - let actual_proof_size = proof.size_hint(); - let proof_size_overhead = - Self::storage_proof_size_overhead(actual_proof_size.saturating_sub(expected_proof_size)); - - transaction_overhead - .saturating_add(outbound_state_delivery_weight) - .saturating_add(messages_delivery_weight) - .saturating_add(messages_dispatch_weight) - .saturating_add(proof_size_overhead) - } - - /// Weight of confirmation delivery extrinsic. - fn receive_messages_delivery_proof_weight(proof: &impl Size, relayers_state: &UnrewardedRelayersState) -> Weight { - // basic components of extrinsic weight - let transaction_overhead = Self::receive_messages_delivery_proof_overhead(); - let messages_overhead = Self::receive_messages_delivery_proof_messages_overhead(relayers_state.total_messages); - let relayers_overhead = - Self::receive_messages_delivery_proof_relayers_overhead(relayers_state.unrewarded_relayer_entries); - - // proof size overhead weight - let expected_proof_size = Self::expected_extra_storage_proof_size(); - let actual_proof_size = proof.size_hint(); - let proof_size_overhead = - Self::storage_proof_size_overhead(actual_proof_size.saturating_sub(expected_proof_size)); - - transaction_overhead - .saturating_add(messages_overhead) - .saturating_add(relayers_overhead) - .saturating_add(proof_size_overhead) - } - - // Functions that are used by extrinsics weights formulas. - - /// Returns weight of message send transaction (`send_message`). - fn send_message_overhead() -> Weight { - Self::send_minimal_message_worst_case() - } - - /// Returns weight that needs to be accounted when message of given size is sent (`send_message`). - fn send_message_size_overhead(message_size: u32) -> Weight { - let message_size_in_kb = (1024u64 + message_size as u64) / 1024; - let single_kb_weight = (Self::send_16_kb_message_worst_case() - Self::send_1_kb_message_worst_case()) / 15; - message_size_in_kb * single_kb_weight - } - - /// Returns weight overhead of message delivery transaction (`receive_messages_proof`). - fn receive_messages_proof_overhead() -> Weight { - let weight_of_two_messages_and_two_tx_overheads = Self::receive_single_message_proof().saturating_mul(2); - let weight_of_two_messages_and_single_tx_overhead = Self::receive_two_messages_proof(); - weight_of_two_messages_and_two_tx_overheads.saturating_sub(weight_of_two_messages_and_single_tx_overhead) - } - - /// Returns weight that needs to be accounted when receiving given number of messages with message - /// delivery transaction (`receive_messages_proof`). - fn receive_messages_proof_messages_overhead(messages: MessageNonce) -> Weight { - let weight_of_two_messages_and_single_tx_overhead = Self::receive_two_messages_proof(); - let weight_of_single_message_and_single_tx_overhead = Self::receive_single_message_proof(); - weight_of_two_messages_and_single_tx_overhead - .saturating_sub(weight_of_single_message_and_single_tx_overhead) - .saturating_mul(messages as Weight) - } - - /// Returns weight that needs to be accounted when message delivery transaction (`receive_messages_proof`) - /// is carrying outbound lane state proof. - fn receive_messages_proof_outbound_lane_state_overhead() -> Weight { - let weight_of_single_message_and_lane_state = Self::receive_single_message_proof_with_outbound_lane_state(); - let weight_of_single_message = Self::receive_single_message_proof(); - weight_of_single_message_and_lane_state.saturating_sub(weight_of_single_message) - } - - /// Returns weight overhead of delivery confirmation transaction (`receive_messages_delivery_proof`). - fn receive_messages_delivery_proof_overhead() -> Weight { - let weight_of_two_messages_and_two_tx_overheads = - Self::receive_delivery_proof_for_single_message().saturating_mul(2); - let weight_of_two_messages_and_single_tx_overhead = - Self::receive_delivery_proof_for_two_messages_by_single_relayer(); - weight_of_two_messages_and_two_tx_overheads.saturating_sub(weight_of_two_messages_and_single_tx_overhead) - } - - /// Returns weight that needs to be accounted when receiving confirmations for given number of - /// messages with delivery confirmation transaction (`receive_messages_delivery_proof`). - fn receive_messages_delivery_proof_messages_overhead(messages: MessageNonce) -> Weight { - let weight_of_two_messages = Self::receive_delivery_proof_for_two_messages_by_single_relayer(); - let weight_of_single_message = Self::receive_delivery_proof_for_single_message(); - weight_of_two_messages - .saturating_sub(weight_of_single_message) - .saturating_mul(messages as Weight) - } - - /// Returns weight that needs to be accounted when receiving confirmations for given number of - /// relayers entries with delivery confirmation transaction (`receive_messages_delivery_proof`). - fn receive_messages_delivery_proof_relayers_overhead(relayers: MessageNonce) -> Weight { - let weight_of_two_messages_by_two_relayers = Self::receive_delivery_proof_for_two_messages_by_two_relayers(); - let weight_of_two_messages_by_single_relayer = - Self::receive_delivery_proof_for_two_messages_by_single_relayer(); - weight_of_two_messages_by_two_relayers - .saturating_sub(weight_of_two_messages_by_single_relayer) - .saturating_mul(relayers as Weight) - } - - /// Returns weight that needs to be accounted when storage proof of given size is recieved (either in - /// `receive_messages_proof` or `receive_messages_delivery_proof`). - /// - /// **IMPORTANT**: this overhead is already included in the 'base' transaction cost - e.g. proof - /// size depends on messages count or number of entries in the unrewarded relayers set. So this - /// shouldn't be added to cost of transaction, but instead should act as a minimal cost that the - /// relayer must pay when it relays proof of given size (even if cost based on other parameters - /// is less than that cost). - fn storage_proof_size_overhead(proof_size: u32) -> Weight { - let proof_size_in_bytes = proof_size as Weight; - let byte_weight = - (Self::receive_single_message_proof_16_kb() - Self::receive_single_message_proof_1_kb()) / (15 * 1024); - proof_size_in_bytes * byte_weight - } - - /// Returns weight of the pay-dispatch-fee operation for inbound messages. - /// - /// This function may return zero if runtime doesn't support pay-dispatch-fee-at-target-chain option. - fn pay_inbound_dispatch_fee_overhead() -> Weight { - Self::receive_single_message_proof().saturating_sub(Self::receive_single_prepaid_message_proof()) - } -} - -impl WeightInfoExt for () { - fn expected_extra_storage_proof_size() -> u32 { - bp_rialto::EXTRA_STORAGE_PROOF_SIZE - } -} - -impl WeightInfoExt for crate::weights::RialtoWeight { - fn expected_extra_storage_proof_size() -> u32 { - bp_rialto::EXTRA_STORAGE_PROOF_SIZE - } -} diff --git a/bridges/modules/shift-session-manager/Cargo.toml b/bridges/modules/shift-session-manager/Cargo.toml deleted file mode 100644 index 6dac97ddde60..000000000000 --- a/bridges/modules/shift-session-manager/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "pallet-shift-session-manager" -description = "A Substrate Runtime module that selects 2/3 of initial validators for every session" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde = "1.0" - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "frame-system/std", - "pallet-session/std", - "sp-staking/std", - "sp-std/std", -] diff --git a/bridges/modules/shift-session-manager/src/lib.rs b/bridges/modules/shift-session-manager/src/lib.rs deleted file mode 100644 index 0d867657afa9..000000000000 --- a/bridges/modules/shift-session-manager/src/lib.rs +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate session manager that selects 2/3 validators from initial set, -//! starting from session 2. - -#![cfg_attr(not(feature = "std"), no_std)] - -use frame_support::{decl_module, decl_storage}; -use sp_std::prelude::*; - -/// The module configuration trait. -pub trait Config: pallet_session::Config {} - -decl_module! { - /// Shift session manager pallet. - pub struct Module for enum Call where origin: T::Origin {} -} - -decl_storage! { - trait Store for Pallet as ShiftSessionManager { - /// Validators of first two sessions. - InitialValidators: Option>; - } -} - -impl pallet_session::SessionManager for Pallet { - fn end_session(_: sp_staking::SessionIndex) {} - fn start_session(_: sp_staking::SessionIndex) {} - fn new_session(session_index: sp_staking::SessionIndex) -> Option> { - // we don't want to add even more fields to genesis config => just return None - if session_index == 0 || session_index == 1 { - return None; - } - - // the idea that on first call (i.e. when session 1 ends) we're reading current - // set of validators from session module (they are initial validators) and save - // in our 'local storage'. - // then for every session we select (deterministically) 2/3 of these initial - // validators to serve validators of new session - let available_validators = InitialValidators::::get().unwrap_or_else(|| { - let validators = >::validators(); - InitialValidators::::put(validators.clone()); - validators - }); - - Some(Self::select_validators(session_index, &available_validators)) - } -} - -impl Pallet { - /// Select validators for session. - fn select_validators( - session_index: sp_staking::SessionIndex, - available_validators: &[T::ValidatorId], - ) -> Vec { - let available_validators_count = available_validators.len(); - let count = sp_std::cmp::max(1, 2 * available_validators_count / 3); - let offset = session_index as usize % available_validators_count; - let end = offset + count; - let session_validators = match end.overflowing_sub(available_validators_count) { - (wrapped_end, false) if wrapped_end != 0 => available_validators[offset..] - .iter() - .chain(available_validators[..wrapped_end].iter()) - .cloned() - .collect(), - _ => available_validators[offset..end].to_vec(), - }; - - session_validators - } -} - -#[cfg(test)] -mod tests { - // From construct_runtime macro - #![allow(clippy::from_over_into)] - - use super::*; - use frame_support::sp_io::TestExternalities; - use frame_support::sp_runtime::{ - testing::{Header, UintAuthorityId}, - traits::{BlakeTwo256, ConvertInto, IdentityLookup}, - Perbill, RuntimeAppPublic, - }; - use frame_support::{parameter_types, weights::Weight, BasicExternalities}; - use sp_core::H256; - - type AccountId = u64; - - type Block = frame_system::mocking::MockBlock; - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - - frame_support::construct_runtime! { - pub enum TestRuntime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Session: pallet_session::{Pallet}, - } - } - - parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = 1024; - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); - } - - impl frame_system::Config for TestRuntime { - type Origin = Origin; - type Index = u64; - type Call = Call; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = (); - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type BaseCallFilter = (); - type SystemWeightInfo = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const Period: u64 = 1; - pub const Offset: u64 = 0; - } - - impl pallet_session::Config for TestRuntime { - type Event = (); - type ValidatorId = ::AccountId; - type ValidatorIdOf = ConvertInto; - type ShouldEndSession = pallet_session::PeriodicSessions; - type NextSessionRotation = pallet_session::PeriodicSessions; - type SessionManager = (); - type SessionHandler = TestSessionHandler; - type Keys = UintAuthorityId; - type DisabledValidatorsThreshold = (); - type WeightInfo = (); - } - - impl Config for TestRuntime {} - - pub struct TestSessionHandler; - impl pallet_session::SessionHandler for TestSessionHandler { - const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID]; - - fn on_genesis_session(_validators: &[(AccountId, Ks)]) {} - - fn on_new_session(_: bool, _: &[(AccountId, Ks)], _: &[(AccountId, Ks)]) {} - - fn on_disabled(_: usize) {} - } - - fn new_test_ext() -> TestExternalities { - let mut t = frame_system::GenesisConfig::default() - .build_storage::() - .unwrap(); - - let keys = vec![ - (1, 1, UintAuthorityId(1)), - (2, 2, UintAuthorityId(2)), - (3, 3, UintAuthorityId(3)), - (4, 4, UintAuthorityId(4)), - (5, 5, UintAuthorityId(5)), - ]; - - BasicExternalities::execute_with_storage(&mut t, || { - for (ref k, ..) in &keys { - frame_system::Pallet::::inc_providers(k); - } - }); - - pallet_session::GenesisConfig:: { keys } - .assimilate_storage(&mut t) - .unwrap(); - TestExternalities::new(t) - } - - #[test] - fn shift_session_manager_works() { - new_test_ext().execute_with(|| { - let all_accs = vec![1, 2, 3, 4, 5]; - - // at least 1 validator is selected - assert_eq!(Pallet::::select_validators(0, &[1]), vec![1],); - - // at session#0, shift is also 0 - assert_eq!(Pallet::::select_validators(0, &all_accs), vec![1, 2, 3],); - - // at session#1, shift is also 1 - assert_eq!(Pallet::::select_validators(1, &all_accs), vec![2, 3, 4],); - - // at session#3, we're wrapping - assert_eq!(Pallet::::select_validators(3, &all_accs), vec![4, 5, 1],); - - // at session#5, we're starting from the beginning again - assert_eq!(Pallet::::select_validators(5, &all_accs), vec![1, 2, 3],); - }); - } -} diff --git a/bridges/primitives/chain-kusama/Cargo.toml b/bridges/primitives/chain-kusama/Cargo.toml deleted file mode 100644 index 70ff3b844df0..000000000000 --- a/bridges/primitives/chain-kusama/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "bp-kusama" -description = "Primitives of Kusama runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] - -# Bridge Dependencies -bp-messages = { path = "../messages", default-features = false } -bp-polkadot-core = { path = "../polkadot-core", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-polkadot-core/std", - "bp-runtime/std", - "sp-api/std", - "sp-std/std", -] diff --git a/bridges/primitives/chain-kusama/src/lib.rs b/bridges/primitives/chain-kusama/src/lib.rs deleted file mode 100644 index e5ab47259e54..000000000000 --- a/bridges/primitives/chain-kusama/src/lib.rs +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_with_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use sp_std::prelude::*; - -pub use bp_polkadot_core::*; - -/// Kusama Chain -pub type Kusama = PolkadotLike; - -// We use this to get the account on Kusama (target) which is derived from Polkadot's (source) -// account. -pub fn derive_account_from_polkadot_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::POLKADOT_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -/// Name of the `KusamaFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_KUSAMA_HEADER_METHOD: &str = "KusamaFinalityApi_best_finalized"; -/// Name of the `KusamaFinalityApi::is_known_header` runtime method. -pub const IS_KNOWN_KUSAMA_HEADER_METHOD: &str = "KusamaFinalityApi_is_known_header"; - -/// Name of the `ToKusamaOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_KUSAMA_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToKusamaOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToKusamaOutboundLaneApi::message_details` runtime method. -pub const TO_KUSAMA_MESSAGE_DETAILS_METHOD: &str = "ToKusamaOutboundLaneApi_message_details"; -/// Name of the `ToKusamaOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_KUSAMA_LATEST_GENERATED_NONCE_METHOD: &str = "ToKusamaOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToKusamaOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_KUSAMA_LATEST_RECEIVED_NONCE_METHOD: &str = "ToKusamaOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromKusamaInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_KUSAMA_LATEST_RECEIVED_NONCE_METHOD: &str = "FromKusamaInboundLaneApi_latest_received_nonce"; -/// Name of the `FromKusamaInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_KUSAMA_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromKusamaInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromKusamaInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_KUSAMA_UNREWARDED_RELAYERS_STATE: &str = "FromKusamaInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Kusama headers. - /// - /// This API is implemented by runtimes that are bridging with the Kusama chain, not the - /// Kusama runtime itself. - pub trait KusamaFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Kusama chain. - /// - /// This API is implemented by runtimes that are sending messages to Kusama chain, not the - /// Kusama runtime itself. - pub trait ToKusamaOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Kusama from this chain. - /// - /// Please keep in mind that this method returns the lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Kusama chain. - /// - /// This API is implemented by runtimes that are receiving messages from Kusama chain, not the - /// Kusama runtime itself. - pub trait FromKusamaInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of the latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} diff --git a/bridges/primitives/chain-millau/Cargo.toml b/bridges/primitives/chain-millau/Cargo.toml deleted file mode 100644 index f4198e35c38c..000000000000 --- a/bridges/primitives/chain-millau/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "bp-millau" -description = "Primitives of Millau runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] - -# Bridge Dependencies - -bp-messages = { path = "../messages", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } -fixed-hash = { version = "0.7.0", default-features = false } -hash256-std-hasher = { version = "0.15.2", default-features = false } -impl-codec = { version = "0.5.0", default-features = false } -impl-serde = { version = "0.3.1", optional = true } -parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } -serde = { version = "1.0.101", optional = true, features = ["derive"] } - -# Substrate Based Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -max-encoded-len = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, features = ["derive"] } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-runtime/std", - "fixed-hash/std", - "frame-support/std", - "frame-system/std", - "hash256-std-hasher/std", - "impl-codec/std", - "impl-serde", - "max-encoded-len/std", - "parity-util-mem/std", - "serde", - "sp-api/std", - "sp-core/std", - "sp-io/std", - "sp-runtime/std", - "sp-std/std", - "sp-trie/std", -] diff --git a/bridges/primitives/chain-millau/src/lib.rs b/bridges/primitives/chain-millau/src/lib.rs deleted file mode 100644 index 0efc54e96e6a..000000000000 --- a/bridges/primitives/chain-millau/src/lib.rs +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_With_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -mod millau_hash; - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use bp_runtime::Chain; -use frame_support::{ - weights::{constants::WEIGHT_PER_SECOND, DispatchClass, Weight}, - Parameter, RuntimeDebug, -}; -use frame_system::limits; -use sp_core::Hasher as HasherT; -use sp_runtime::traits::Convert; -use sp_runtime::{ - traits::{IdentifyAccount, Verify}, - MultiSignature, MultiSigner, Perbill, -}; -use sp_std::prelude::*; -use sp_trie::{trie_types::Layout, TrieConfiguration}; - -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; - -pub use millau_hash::MillauHash; - -/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at -/// Millau chain. This mostly depends on number of entries (and their density) in the storage trie. -/// Some reserve is reserved to account future chain growth. -pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; - -/// Number of bytes, included in the signed Millau transaction apart from the encoded call itself. -/// -/// Can be computed by subtracting encoded call size from raw transaction size. -pub const TX_EXTRA_BYTES: u32 = 103; - -/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. -pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; - -/// Maximum weight of single Millau block. -/// -/// This represents 0.5 seconds of compute assuming a target block time of six seconds. -pub const MAXIMUM_BLOCK_WEIGHT: Weight = WEIGHT_PER_SECOND / 2; - -/// Represents the average portion of a block's weight that will be used by an -/// `on_initialize()` runtime call. -pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); - -/// Represents the portion of a block that will be used by Normal extrinsics. -pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); - -/// Maximal number of unrewarded relayer entries at inbound lane. -pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 1024; - -/// Maximal number of unconfirmed messages at inbound lane. -pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 1024; - -/// Weight of single regular message delivery transaction on Millau chain. -/// -/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_proof_weight()` call -/// for the case when single message of `pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH` bytes is delivered. -/// The message must have dispatch weight set to zero. The result then must be rounded up to account -/// possible future runtime upgrades. -pub const DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT: Weight = 1_500_000_000; - -/// Increase of delivery transaction weight on Millau chain with every additional message byte. -/// -/// This value is a result of `pallet_bridge_messages::WeightInfoExt::storage_proof_size_overhead(1)` call. The -/// result then must be rounded up to account possible future runtime upgrades. -pub const ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT: Weight = 25_000; - -/// Maximal weight of single message delivery confirmation transaction on Millau chain. -/// -/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_delivery_proof` weight formula computation -/// for the case when single message is confirmed. The result then must be rounded up to account possible future -/// runtime upgrades. -pub const MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT: Weight = 2_000_000_000; - -/// Weight of pay-dispatch-fee operation for inbound messages at Millau chain. -/// -/// This value corresponds to the result of `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` -/// call for your chain. Don't put too much reserve there, because it is used to **decrease** -/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery transactions cheaper. -pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; - -/// The target length of a session (how often authorities change) on Millau measured in of number of -/// blocks. -/// -/// Note that since this is a target sessions may change before/after this time depending on network -/// conditions. -pub const SESSION_LENGTH: BlockNumber = 5 * time_units::MINUTES; - -/// Re-export `time_units` to make usage easier. -pub use time_units::*; - -/// Human readable time units defined in terms of number of blocks. -pub mod time_units { - use super::BlockNumber; - - pub const MILLISECS_PER_BLOCK: u64 = 6000; - pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; - - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; -} - -/// Block number type used in Millau. -pub type BlockNumber = u64; - -/// Hash type used in Millau. -pub type Hash = ::Out; - -/// The type of an object that can produce hashes on Millau. -pub type Hasher = BlakeTwoAndKeccak256; - -/// The header type used by Millau. -pub type Header = sp_runtime::generic::Header; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = MultiSignature; - -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = <::Signer as IdentifyAccount>::AccountId; - -/// Public key of the chain account that may be used to verify signatures. -pub type AccountSigner = MultiSigner; - -/// Balance of an account. -pub type Balance = u64; - -/// Millau chain. -#[derive(RuntimeDebug)] -pub struct Millau; - -impl Chain for Millau { - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hasher = Hasher; - type Header = Header; -} - -/// Millau Hasher (Blake2-256 ++ Keccak-256) implementation. -#[derive(PartialEq, Eq, Clone, Copy, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct BlakeTwoAndKeccak256; - -impl sp_core::Hasher for BlakeTwoAndKeccak256 { - type Out = MillauHash; - type StdHasher = hash256_std_hasher::Hash256StdHasher; - const LENGTH: usize = 64; - - fn hash(s: &[u8]) -> Self::Out { - let mut combined_hash = MillauHash::default(); - combined_hash.as_mut()[..32].copy_from_slice(&sp_io::hashing::blake2_256(s)); - combined_hash.as_mut()[32..].copy_from_slice(&sp_io::hashing::keccak_256(s)); - combined_hash - } -} - -impl sp_runtime::traits::Hash for BlakeTwoAndKeccak256 { - type Output = MillauHash; - - fn trie_root(input: Vec<(Vec, Vec)>) -> Self::Output { - Layout::::trie_root(input) - } - - fn ordered_trie_root(input: Vec>) -> Self::Output { - Layout::::ordered_trie_root(input) - } -} - -/// Convert a 256-bit hash into an AccountId. -pub struct AccountIdConverter; - -impl sp_runtime::traits::Convert for AccountIdConverter { - fn convert(hash: sp_core::H256) -> AccountId { - hash.to_fixed_bytes().into() - } -} - -/// We use this to get the account on Millau (target) which is derived from Rialto's (source) -/// account. We do this so we can fund the derived account on Millau at Genesis to it can pay -/// transaction fees. -/// -/// The reason we can use the same `AccountId` type for both chains is because they share the same -/// development seed phrase. -/// -/// Note that this should only be used for testing. -pub fn derive_account_from_rialto_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::RIALTO_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -frame_support::parameter_types! { - pub BlockLength: limits::BlockLength = - limits::BlockLength::max_with_normal_ratio(2 * 1024 * 1024, NORMAL_DISPATCH_RATIO); - pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() - // Allowance for Normal class - .for_class(DispatchClass::Normal, |weights| { - weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - // Allowance for Operational class - .for_class(DispatchClass::Operational, |weights| { - weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); - // Extra reserved space for Operational class - weights.reserved = Some(MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - // By default Mandatory class is not limited at all. - // This parameter is used to derive maximal size of a single extrinsic. - .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) - .build_or_panic(); -} - -/// Get the maximum weight (compute time) that a Normal extrinsic on the Millau chain can use. -pub fn max_extrinsic_weight() -> Weight { - BlockWeights::get() - .get(DispatchClass::Normal) - .max_extrinsic - .unwrap_or(Weight::MAX) -} - -/// Get the maximum length in bytes that a Normal extrinsic on the Millau chain requires. -pub fn max_extrinsic_size() -> u32 { - *BlockLength::get().max.get(DispatchClass::Normal) -} - -/// Name of the `MillauFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_MILLAU_HEADER_METHOD: &str = "MillauFinalityApi_best_finalized"; - -/// Name of the `ToMillauOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToMillauOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToMillauOutboundLaneApi::message_details` runtime method. -pub const TO_MILLAU_MESSAGE_DETAILS_METHOD: &str = "ToMillauOutboundLaneApi_message_details"; -/// Name of the `ToMillauOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_MILLAU_LATEST_RECEIVED_NONCE_METHOD: &str = "ToMillauOutboundLaneApi_latest_received_nonce"; -/// Name of the `ToMillauOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_MILLAU_LATEST_GENERATED_NONCE_METHOD: &str = "ToMillauOutboundLaneApi_latest_generated_nonce"; - -/// Name of the `FromMillauInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_MILLAU_LATEST_RECEIVED_NONCE_METHOD: &str = "FromMillauInboundLaneApi_latest_received_nonce"; -/// Name of the `FromMillauInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_MILLAU_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromMillauInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromMillauInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_MILLAU_UNREWARDED_RELAYERS_STATE: &str = "FromMillauInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Millau headers. - /// - /// This API is implemented by runtimes that are bridging with the Millau chain, not the - /// Millau runtime itself. - pub trait MillauFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Millau chain. - /// - /// This API is implemented by runtimes that are sending messages to Millau chain, not the - /// Millau runtime itself. - pub trait ToMillauOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Millau from this chain. - /// - /// Please keep in mind that this method returns lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Millau chain. - /// - /// This API is implemented by runtimes that are receiving messages from Millau chain, not the - /// Millau runtime itself. - pub trait FromMillauInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_runtime::codec::Encode; - - #[test] - fn maximal_account_size_does_not_overflow_constant() { - assert!( - MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize >= AccountId::default().encode().len(), - "Actual maximal size of encoded AccountId ({}) overflows expected ({})", - AccountId::default().encode().len(), - MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - ); - } -} diff --git a/bridges/primitives/chain-polkadot/Cargo.toml b/bridges/primitives/chain-polkadot/Cargo.toml deleted file mode 100644 index 22ded41b9145..000000000000 --- a/bridges/primitives/chain-polkadot/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "bp-polkadot" -description = "Primitives of Polkadot runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] - -# Bridge Dependencies -bp-messages = { path = "../messages", default-features = false } -bp-polkadot-core = { path = "../polkadot-core", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies - -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-polkadot-core/std", - "bp-runtime/std", - "sp-api/std", - "sp-std/std", -] diff --git a/bridges/primitives/chain-polkadot/src/lib.rs b/bridges/primitives/chain-polkadot/src/lib.rs deleted file mode 100644 index b0ba77c66ffc..000000000000 --- a/bridges/primitives/chain-polkadot/src/lib.rs +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_with_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use sp_std::prelude::*; - -pub use bp_polkadot_core::*; - -/// Polkadot Chain -pub type Polkadot = PolkadotLike; - -// We use this to get the account on Polkadot (target) which is derived from Kusama's (source) -// account. -pub fn derive_account_from_kusama_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::KUSAMA_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -/// Name of the `PolkadotFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_POLKADOT_HEADER_METHOD: &str = "PolkadotFinalityApi_best_finalized"; -/// Name of the `PolkadotFinalityApi::is_known_header` runtime method. -pub const IS_KNOWN_POLKADOT_HEADER_METHOD: &str = "PolkadotFinalityApi_is_known_header"; - -/// Name of the `ToPolkadotOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_POLKADOT_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToPolkadotOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToPolkadotOutboundLaneApi::message_details` runtime method. -pub const TO_POLKADOT_MESSAGE_DETAILS_METHOD: &str = "ToPolkadotOutboundLaneApi_message_details"; -/// Name of the `ToPolkadotOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_POLKADOT_LATEST_GENERATED_NONCE_METHOD: &str = "ToPolkadotOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToPolkadotOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_POLKADOT_LATEST_RECEIVED_NONCE_METHOD: &str = "ToPolkadotOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromPolkadotInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_POLKADOT_LATEST_RECEIVED_NONCE_METHOD: &str = "FromPolkadotInboundLaneApi_latest_received_nonce"; -/// Name of the `FromPolkadotInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_POLKADOT_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromPolkadotInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromPolkadotInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_POLKADOT_UNREWARDED_RELAYERS_STATE: &str = "FromPolkadotInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Polkadot headers. - /// - /// This API is implemented by runtimes that are bridging with the Polkadot chain, not the - /// Polkadot runtime itself. - pub trait PolkadotFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Polkadot chain. - /// - /// This API is implemented by runtimes that are sending messages to Polkadot chain, not the - /// Polkadot runtime itself. - pub trait ToPolkadotOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Polkadot from this chain. - /// - /// Please keep in mind that this method returns the lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Polkadot chain. - /// - /// This API is implemented by runtimes that are receiving messages from Polkadot chain, not the - /// Polkadot runtime itself. - pub trait FromPolkadotInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of the latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} diff --git a/bridges/primitives/chain-rialto/Cargo.toml b/bridges/primitives/chain-rialto/Cargo.toml deleted file mode 100644 index 7e039a40acd9..000000000000 --- a/bridges/primitives/chain-rialto/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "bp-rialto" -description = "Primitives of Rialto runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] - -# Bridge Dependencies - -bp-messages = { path = "../messages", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-runtime/std", - "frame-support/std", - "frame-system/std", - "sp-api/std", - "sp-core/std", - "sp-runtime/std", - "sp-std/std", -] diff --git a/bridges/primitives/chain-rialto/src/lib.rs b/bridges/primitives/chain-rialto/src/lib.rs deleted file mode 100644 index 8139372959e3..000000000000 --- a/bridges/primitives/chain-rialto/src/lib.rs +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_With_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use bp_runtime::Chain; -use frame_support::{ - weights::{constants::WEIGHT_PER_SECOND, DispatchClass, Weight}, - Parameter, RuntimeDebug, -}; -use frame_system::limits; -use sp_core::Hasher as HasherT; -use sp_runtime::{ - traits::{BlakeTwo256, Convert, IdentifyAccount, Verify}, - MultiSignature, MultiSigner, Perbill, -}; -use sp_std::prelude::*; - -/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at -/// Rialto chain. This mostly depends on number of entries (and their density) in the storage trie. -/// Some reserve is reserved to account future chain growth. -pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; - -/// Number of bytes, included in the signed Rialto transaction apart from the encoded call itself. -/// -/// Can be computed by subtracting encoded call size from raw transaction size. -pub const TX_EXTRA_BYTES: u32 = 103; - -/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. -pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; - -/// Maximal weight of single Rialto block. -/// -/// This represents two seconds of compute assuming a target block time of six seconds. -pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; - -/// Represents the average portion of a block's weight that will be used by an -/// `on_initialize()` runtime call. -pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); - -/// Represents the portion of a block that will be used by Normal extrinsics. -pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); - -/// Maximal number of unrewarded relayer entries at inbound lane. -pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 128; - -/// Maximal number of unconfirmed messages at inbound lane. -pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 128; - -/// Weight of single regular message delivery transaction on Rialto chain. -/// -/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_proof_weight()` call -/// for the case when single message of `pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH` bytes is delivered. -/// The message must have dispatch weight set to zero. The result then must be rounded up to account -/// possible future runtime upgrades. -pub const DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT: Weight = 1_500_000_000; - -/// Increase of delivery transaction weight on Rialto chain with every additional message byte. -/// -/// This value is a result of `pallet_bridge_messages::WeightInfoExt::storage_proof_size_overhead(1)` call. The -/// result then must be rounded up to account possible future runtime upgrades. -pub const ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT: Weight = 25_000; - -/// Maximal weight of single message delivery confirmation transaction on Rialto chain. -/// -/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_delivery_proof` weight formula computation -/// for the case when single message is confirmed. The result then must be rounded up to account possible future -/// runtime upgrades. -pub const MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT: Weight = 2_000_000_000; - -/// Weight of pay-dispatch-fee operation for inbound messages at Rialto chain. -/// -/// This value corresponds to the result of `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` -/// call for your chain. Don't put too much reserve there, because it is used to **decrease** -/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery transactions cheaper. -pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; - -/// The target length of a session (how often authorities change) on Rialto measured in of number of -/// blocks. -/// -/// Note that since this is a target sessions may change before/after this time depending on network -/// conditions. -pub const SESSION_LENGTH: BlockNumber = 4; - -/// Re-export `time_units` to make usage easier. -pub use time_units::*; - -/// Human readable time units defined in terms of number of blocks. -pub mod time_units { - use super::BlockNumber; - - pub const MILLISECS_PER_BLOCK: u64 = 6000; - pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; - - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; -} - -/// Block number type used in Rialto. -pub type BlockNumber = u32; - -/// Hash type used in Rialto. -pub type Hash = ::Out; - -/// The type of an object that can produce hashes on Rialto. -pub type Hasher = BlakeTwo256; - -/// The header type used by Rialto. -pub type Header = sp_runtime::generic::Header; - -/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. -pub type Signature = MultiSignature; - -/// Some way of identifying an account on the chain. We intentionally make it equivalent -/// to the public key of our transaction signing scheme. -pub type AccountId = <::Signer as IdentifyAccount>::AccountId; - -/// Public key of the chain account that may be used to verify signatures. -pub type AccountSigner = MultiSigner; - -/// Balance of an account. -pub type Balance = u128; - -/// Rialto chain. -#[derive(RuntimeDebug)] -pub struct Rialto; - -impl Chain for Rialto { - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hasher = Hasher; - type Header = Header; -} - -/// Convert a 256-bit hash into an AccountId. -pub struct AccountIdConverter; - -impl Convert for AccountIdConverter { - fn convert(hash: sp_core::H256) -> AccountId { - hash.to_fixed_bytes().into() - } -} - -// We use this to get the account on Rialto (target) which is derived from Millau's (source) -// account. We do this so we can fund the derived account on Rialto at Genesis to it can pay -// transaction fees. -// -// The reason we can use the same `AccountId` type for both chains is because they share the same -// development seed phrase. -// -// Note that this should only be used for testing. -pub fn derive_account_from_millau_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::MILLAU_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -frame_support::parameter_types! { - pub BlockLength: limits::BlockLength = - limits::BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); - pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() - // Allowance for Normal class - .for_class(DispatchClass::Normal, |weights| { - weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - // Allowance for Operational class - .for_class(DispatchClass::Operational, |weights| { - weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); - // Extra reserved space for Operational class - weights.reserved = Some(MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - // By default Mandatory class is not limited at all. - // This parameter is used to derive maximal size of a single extrinsic. - .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) - .build_or_panic(); -} - -/// Get the maximum weight (compute time) that a Normal extrinsic on the Millau chain can use. -pub fn max_extrinsic_weight() -> Weight { - BlockWeights::get() - .get(DispatchClass::Normal) - .max_extrinsic - .unwrap_or(Weight::MAX) -} - -/// Get the maximum length in bytes that a Normal extrinsic on the Millau chain requires. -pub fn max_extrinsic_size() -> u32 { - *BlockLength::get().max.get(DispatchClass::Normal) -} - -/// Name of the `RialtoFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_RIALTO_HEADER_METHOD: &str = "RialtoFinalityApi_best_finalized"; - -/// Name of the `ToRialtoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_RIALTO_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToRialtoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToRialtoOutboundLaneApi::message_details` runtime method. -pub const TO_RIALTO_MESSAGE_DETAILS_METHOD: &str = "ToRialtoOutboundLaneApi_message_details"; -/// Name of the `ToRialtoOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_RIALTO_LATEST_GENERATED_NONCE_METHOD: &str = "ToRialtoOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToRialtoOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_RIALTO_LATEST_RECEIVED_NONCE_METHOD: &str = "ToRialtoOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromRialtoInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_RIALTO_LATEST_RECEIVED_NONCE_METHOD: &str = "FromRialtoInboundLaneApi_latest_received_nonce"; -/// Name of the `FromRialtoInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_RIALTO_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromRialtoInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromRialtoInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_RIALTO_UNREWARDED_RELAYERS_STATE: &str = "FromRialtoInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Rialto headers. - /// - /// This API is implemented by runtimes that are bridging with the Rialto chain, not the - /// Millau runtime itself. - pub trait RialtoFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Rialto chain. - /// - /// This API is implemented by runtimes that are sending messages to Rialto chain, not the - /// Rialto runtime itself. - pub trait ToRialtoOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Rialto from this chain. - /// - /// Please keep in mind that this method returns lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Rialto chain. - /// - /// This API is implemented by runtimes that are receiving messages from Rialto chain, not the - /// Rialto runtime itself. - pub trait FromRialtoInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_runtime::codec::Encode; - - #[test] - fn maximal_account_size_does_not_overflow_constant() { - assert!( - MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize >= AccountId::default().encode().len(), - "Actual maximal size of encoded AccountId ({}) overflows expected ({})", - AccountId::default().encode().len(), - MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - ); - } -} diff --git a/bridges/primitives/chain-rococo/Cargo.toml b/bridges/primitives/chain-rococo/Cargo.toml deleted file mode 100644 index 33772c7890a0..000000000000 --- a/bridges/primitives/chain-rococo/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "bp-rococo" -description = "Primitives of Rococo runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -smallvec = "1.6" - -# Bridge Dependencies -bp-messages = { path = "../messages", default-features = false } -bp-polkadot-core = { path = "../polkadot-core", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-polkadot-core/std", - "bp-runtime/std", - "frame-support/std", - "parity-scale-codec/std", - "sp-api/std", - "sp-runtime/std", - "sp-std/std", - "sp-version/std", -] diff --git a/bridges/primitives/chain-rococo/src/lib.rs b/bridges/primitives/chain-rococo/src/lib.rs deleted file mode 100644 index d76ec8e679d3..000000000000 --- a/bridges/primitives/chain-rococo/src/lib.rs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_with_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use frame_support::weights::{WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial}; -use sp_std::prelude::*; -use sp_version::RuntimeVersion; - -pub use bp_polkadot_core::*; - -/// Rococo Chain -pub type Rococo = PolkadotLike; - -/// The target length of a session (how often authorities change) on Westend measured in of number of -/// blocks. -/// -/// Note that since this is a target sessions may change before/after this time depending on network -/// conditions. -pub const SESSION_LENGTH: BlockNumber = 10 * time_units::MINUTES; - -// NOTE: This needs to be kept up to date with the Rococo runtime found in the Polkadot repo. -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: sp_version::create_runtime_str!("rococo"), - impl_name: sp_version::create_runtime_str!("parity-rococo-v1.6"), - authoring_version: 0, - spec_version: 9004, - impl_version: 0, - apis: sp_version::create_apis_vec![[]], - transaction_version: 0, -}; - -// NOTE: This needs to be kept up to date with the Rococo runtime found in the Polkadot repo. -pub struct WeightToFee; -impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - const CENTS: Balance = 1_000_000_000_000 / 100; - let p = CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec::smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } -} - -// We use this to get the account on Rococo (target) which is derived from Wococo's (source) -// account. -pub fn derive_account_from_wococo_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::WOCOCO_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -/// Name of the `RococoFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_ROCOCO_HEADER_METHOD: &str = "RococoFinalityApi_best_finalized"; -/// Name of the `RococoFinalityApi::is_known_header` runtime method. -pub const IS_KNOWN_ROCOCO_HEADER_METHOD: &str = "RococoFinalityApi_is_known_header"; - -/// Name of the `ToRococoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_ROCOCO_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToRococoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToRococoOutboundLaneApi::message_details` runtime method. -pub const TO_ROCOCO_MESSAGE_DETAILS_METHOD: &str = "ToRococoOutboundLaneApi_message_details"; -/// Name of the `ToRococoOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_ROCOCO_LATEST_GENERATED_NONCE_METHOD: &str = "ToRococoOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToRococoOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_ROCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = "ToRococoOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromRococoInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_ROCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = "FromRococoInboundLaneApi_latest_received_nonce"; -/// Name of the `FromRococoInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_ROCOCO_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromRococoInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromRococoInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_ROCOCO_UNREWARDED_RELAYERS_STATE: &str = "FromRococoInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Rococo headers. - /// - /// This API is implemented by runtimes that are bridging with the Rococo chain, not the - /// Rococo runtime itself. - pub trait RococoFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Rococo chain. - /// - /// This API is implemented by runtimes that are sending messages to Rococo chain, not the - /// Rococo runtime itself. - pub trait ToRococoOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Rococo from this chain. - /// - /// Please keep in mind that this method returns the lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Rococo chain. - /// - /// This API is implemented by runtimes that are receiving messages from Rococo chain, not the - /// Rococo runtime itself. - pub trait FromRococoInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of the latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} diff --git a/bridges/primitives/chain-westend/Cargo.toml b/bridges/primitives/chain-westend/Cargo.toml deleted file mode 100644 index d5fda1ccef05..000000000000 --- a/bridges/primitives/chain-westend/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "bp-westend" -description = "Primitives of Westend runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -# Bridge Dependencies -bp-header-chain = { path = "../header-chain", default-features = false } -bp-messages = { path = "../messages", default-features = false } -bp-polkadot-core = { path = "../polkadot-core", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-header-chain/std", - "bp-messages/std", - "bp-polkadot-core/std", - "bp-runtime/std", - "parity-scale-codec/std", - "sp-api/std", - "sp-runtime/std", - "sp-std/std", - "sp-version/std", -] diff --git a/bridges/primitives/chain-westend/src/lib.rs b/bridges/primitives/chain-westend/src/lib.rs deleted file mode 100644 index e3c4d733def9..000000000000 --- a/bridges/primitives/chain-westend/src/lib.rs +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_with_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use bp_runtime::Chain; -use sp_std::prelude::*; -use sp_version::RuntimeVersion; - -pub use bp_polkadot_core::*; - -/// Westend Chain -pub type Westend = PolkadotLike; - -pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; - -// NOTE: This needs to be kept up to date with the Westend runtime found in the Polkadot repo. -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: sp_version::create_runtime_str!("westend"), - impl_name: sp_version::create_runtime_str!("parity-westend"), - authoring_version: 2, - spec_version: 51, - impl_version: 0, - apis: sp_version::create_apis_vec![[]], - transaction_version: 5, -}; - -/// Westend Runtime `Call` enum. -/// -/// The enum represents a subset of possible `Call`s we can send to Westend chain. -/// Ideally this code would be auto-generated from Metadata, because we want to -/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. -/// -/// All entries here (like pretty much in the entire file) must be kept in sync with Westend -/// `construct_runtime`, so that we maintain SCALE-compatibility. -/// -/// See: https://github.com/paritytech/polkadot/blob/master/runtime/westend/src/lib.rs -#[derive(parity_scale_codec::Encode, parity_scale_codec::Decode, Debug, PartialEq, Eq, Clone)] -pub enum Call { - /// Rococo bridge pallet. - #[codec(index = 40)] - BridgeGrandpaRococo(BridgeGrandpaRococoCall), -} - -#[derive(parity_scale_codec::Encode, parity_scale_codec::Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum BridgeGrandpaRococoCall { - #[codec(index = 0)] - submit_finality_proof( - ::Header, - bp_header_chain::justification::GrandpaJustification<::Header>, - ), - #[codec(index = 1)] - initialize(bp_header_chain::InitializationData<::Header>), -} - -impl sp_runtime::traits::Dispatchable for Call { - type Origin = (); - type Config = (); - type Info = (); - type PostInfo = (); - - fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { - unimplemented!("The Call is not expected to be dispatched.") - } -} - -// We use this to get the account on Westend (target) which is derived from Rococo's (source) -// account. -pub fn derive_account_from_rococo_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::ROCOCO_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -/// Name of the `WestendFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_WESTEND_HEADER_METHOD: &str = "WestendFinalityApi_best_finalized"; -/// Name of the `WestendFinalityApi::is_known_header` runtime method. -pub const IS_KNOWN_WESTEND_HEADER_METHOD: &str = "WestendFinalityApi_is_known_header"; - -/// Name of the `ToWestendOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_WESTEND_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToWestendOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToWestendOutboundLaneApi::message_details` runtime method. -pub const TO_WESTEND_MESSAGE_DETAILS_METHOD: &str = "ToWestendOutboundLaneApi_message_details"; -/// Name of the `ToWestendOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_WESTEND_LATEST_GENERATED_NONCE_METHOD: &str = "ToWestendOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToWestendOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_WESTEND_LATEST_RECEIVED_NONCE_METHOD: &str = "ToWestendOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromWestendInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_WESTEND_LATEST_RECEIVED_NONCE_METHOD: &str = "FromWestendInboundLaneApi_latest_received_nonce"; -/// Name of the `FromWestendInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_WESTEND_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromWestendInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromWestendInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_WESTEND_UNREWARDED_RELAYERS_STATE: &str = "FromWestendInboundLaneApi_unrewarded_relayers_state"; - -/// The target length of a session (how often authorities change) on Westend measured in of number of -/// blocks. -/// -/// Note that since this is a target sessions may change before/after this time depending on network -/// conditions. -pub const SESSION_LENGTH: BlockNumber = 10 * time_units::MINUTES; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Westend headers. - /// - /// This API is implemented by runtimes that are bridging with the Westend chain, not the - /// Westend runtime itself. - pub trait WestendFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Westend chain. - /// - /// This API is implemented by runtimes that are sending messages to Westend chain, not the - /// Westend runtime itself. - pub trait ToWestendOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Westend from this chain. - /// - /// Please keep in mind that this method returns the lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Westend chain. - /// - /// This API is implemented by runtimes that are receiving messages from Westend chain, not the - /// Westend runtime itself. - pub trait FromWestendInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of the latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} diff --git a/bridges/primitives/chain-wococo/Cargo.toml b/bridges/primitives/chain-wococo/Cargo.toml deleted file mode 100644 index 88201dde9ac1..000000000000 --- a/bridges/primitives/chain-wococo/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "bp-wococo" -description = "Primitives of Wococo runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -# Bridge Dependencies -bp-messages = { path = "../messages", default-features = false } -bp-polkadot-core = { path = "../polkadot-core", default-features = false } -bp-rococo = { path = "../chain-rococo", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-polkadot-core/std", - "bp-runtime/std", - "bp-rococo/std", - "parity-scale-codec/std", - "sp-api/std", - "sp-runtime/std", - "sp-std/std", -] diff --git a/bridges/primitives/chain-wococo/src/lib.rs b/bridges/primitives/chain-wococo/src/lib.rs deleted file mode 100644 index 24572e141b20..000000000000 --- a/bridges/primitives/chain-wococo/src/lib.rs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Runtime-generated DecodeLimit::decode_all_with_depth_limit -#![allow(clippy::unnecessary_mut_passed)] - -use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; -use sp_std::prelude::*; - -pub use bp_polkadot_core::*; -// Rococo runtime = Wococo runtime -pub use bp_rococo::{WeightToFee, SESSION_LENGTH, VERSION}; - -/// Wococo Chain -pub type Wococo = PolkadotLike; - -// We use this to get the account on Wococo (target) which is derived from Rococo's (source) -// account. -pub fn derive_account_from_rococo_id(id: bp_runtime::SourceAccount) -> AccountId { - let encoded_id = bp_runtime::derive_account_id(bp_runtime::ROCOCO_CHAIN_ID, id); - AccountIdConverter::convert(encoded_id) -} - -/// Name of the `WococoFinalityApi::best_finalized` runtime method. -pub const BEST_FINALIZED_WOCOCO_HEADER_METHOD: &str = "WococoFinalityApi_best_finalized"; -/// Name of the `WococoFinalityApi::is_known_header` runtime method. -pub const IS_KNOWN_WOCOCO_HEADER_METHOD: &str = "WococoFinalityApi_is_known_header"; - -/// Name of the `ToWococoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime method. -pub const TO_WOCOCO_ESTIMATE_MESSAGE_FEE_METHOD: &str = - "ToWococoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; -/// Name of the `ToWococoOutboundLaneApi::message_details` runtime method. -pub const TO_WOCOCO_MESSAGE_DETAILS_METHOD: &str = "ToWococoOutboundLaneApi_message_details"; -/// Name of the `ToWococoOutboundLaneApi::latest_generated_nonce` runtime method. -pub const TO_WOCOCO_LATEST_GENERATED_NONCE_METHOD: &str = "ToWococoOutboundLaneApi_latest_generated_nonce"; -/// Name of the `ToWococoOutboundLaneApi::latest_received_nonce` runtime method. -pub const TO_WOCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = "ToWococoOutboundLaneApi_latest_received_nonce"; - -/// Name of the `FromWococoInboundLaneApi::latest_received_nonce` runtime method. -pub const FROM_WOCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = "FromWococoInboundLaneApi_latest_received_nonce"; -/// Name of the `FromWococoInboundLaneApi::latest_onfirmed_nonce` runtime method. -pub const FROM_WOCOCO_LATEST_CONFIRMED_NONCE_METHOD: &str = "FromWococoInboundLaneApi_latest_confirmed_nonce"; -/// Name of the `FromWococoInboundLaneApi::unrewarded_relayers_state` runtime method. -pub const FROM_WOCOCO_UNREWARDED_RELAYERS_STATE: &str = "FromWococoInboundLaneApi_unrewarded_relayers_state"; - -sp_api::decl_runtime_apis! { - /// API for querying information about the finalized Wococo headers. - /// - /// This API is implemented by runtimes that are bridging with the Wococo chain, not the - /// Wococo runtime itself. - pub trait WococoFinalityApi { - /// Returns number and hash of the best finalized header known to the bridge module. - fn best_finalized() -> (BlockNumber, Hash); - /// Returns true if the header is known to the runtime. - fn is_known_header(hash: Hash) -> bool; - } - - /// Outbound message lane API for messages that are sent to Wococo chain. - /// - /// This API is implemented by runtimes that are sending messages to Wococo chain, not the - /// Wococo runtime itself. - pub trait ToWococoOutboundLaneApi { - /// Estimate message delivery and dispatch fee that needs to be paid by the sender on - /// this chain. - /// - /// Returns `None` if message is too expensive to be sent to Wococo from this chain. - /// - /// Please keep in mind that this method returns lowest message fee required for message - /// to be accepted to the lane. It may be good idea to pay a bit over this price to account - /// future exchange rate changes and guarantee that relayer would deliver your message - /// to the target chain. - fn estimate_message_delivery_and_dispatch_fee( - lane_id: LaneId, - payload: OutboundPayload, - ) -> Option; - /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all - /// messages in given inclusive range. - /// - /// If some (or all) messages are missing from the storage, they'll also will - /// be missing from the resulting vector. The vector is ordered by the nonce. - fn message_details( - lane: LaneId, - begin: MessageNonce, - end: MessageNonce, - ) -> Vec>; - /// Returns nonce of the latest message, received by bridged chain. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Returns nonce of the latest message, generated by given lane. - fn latest_generated_nonce(lane: LaneId) -> MessageNonce; - } - - /// Inbound message lane API for messages sent by Wococo chain. - /// - /// This API is implemented by runtimes that are receiving messages from Wococo chain, not the - /// Wococo runtime itself. - pub trait FromWococoInboundLaneApi { - /// Returns nonce of the latest message, received by given lane. - fn latest_received_nonce(lane: LaneId) -> MessageNonce; - /// Nonce of latest message that has been confirmed to the bridged chain. - fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; - /// State of the unrewarded relayers set at given lane. - fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; - } -} diff --git a/bridges/primitives/currency-exchange/Cargo.toml b/bridges/primitives/currency-exchange/Cargo.toml deleted file mode 100644 index 43367ba7992b..000000000000 --- a/bridges/primitives/currency-exchange/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "bp-currency-exchange" -description = "Primitives of currency exchange module." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "sp-api/std", - "sp-std/std", -] diff --git a/bridges/primitives/currency-exchange/src/lib.rs b/bridges/primitives/currency-exchange/src/lib.rs deleted file mode 100644 index 88695dbb5ef4..000000000000 --- a/bridges/primitives/currency-exchange/src/lib.rs +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Generated by `DecodeLimit::decode_with_depth_limit` -#![allow(clippy::unnecessary_mut_passed)] - -use codec::{Decode, Encode, EncodeLike}; -use frame_support::{Parameter, RuntimeDebug}; -use sp_api::decl_runtime_apis; -use sp_std::marker::PhantomData; - -/// All errors that may happen during exchange. -#[derive(RuntimeDebug, PartialEq)] -pub enum Error { - /// Invalid peer blockchain transaction provided. - InvalidTransaction, - /// Peer transaction has invalid amount. - InvalidAmount, - /// Peer transaction has invalid recipient. - InvalidRecipient, - /// Cannot map from peer recipient to this blockchain recipient. - FailedToMapRecipients, - /// Failed to convert from peer blockchain currency to this blockhain currency. - FailedToConvertCurrency, - /// Deposit has failed. - DepositFailed, - /// Deposit has partially failed (changes to recipient account were made). - DepositPartiallyFailed, -} - -/// Result of all exchange operations. -pub type Result = sp_std::result::Result; - -/// Peer blockchain lock funds transaction. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] -pub struct LockFundsTransaction { - /// Something that uniquely identifies this transfer. - pub id: TransferId, - /// Funds recipient on the peer chain. - pub recipient: Recipient, - /// Amount of the locked funds. - pub amount: Amount, -} - -/// Peer blockchain transaction that may represent lock funds transaction. -pub trait MaybeLockFundsTransaction { - /// Transaction type. - type Transaction; - /// Identifier that uniquely identifies this transfer. - type Id: Decode + Encode + EncodeLike + sp_std::fmt::Debug; - /// Peer recipient type. - type Recipient; - /// Peer currency amount type. - type Amount; - - /// Parse lock funds transaction of the peer blockchain. Returns None if - /// transaction format is unknown, or it isn't a lock funds transaction. - fn parse(tx: &Self::Transaction) -> Result>; -} - -/// Map that maps recipients from peer blockchain to this blockchain recipients. -pub trait RecipientsMap { - /// Peer blockchain recipient type. - type PeerRecipient; - /// Current blockchain recipient type. - type Recipient; - - /// Lookup current blockchain recipient by peer blockchain recipient. - fn map(peer_recipient: Self::PeerRecipient) -> Result; -} - -/// Conversion between two currencies. -pub trait CurrencyConverter { - /// Type of the source currency amount. - type SourceAmount; - /// Type of the target currency amount. - type TargetAmount; - - /// Covert from source to target currency. - fn convert(amount: Self::SourceAmount) -> Result; -} - -/// Currency deposit. -pub trait DepositInto { - /// Recipient type. - type Recipient; - /// Currency amount type. - type Amount; - - /// Grant some money to given account. - fn deposit_into(recipient: Self::Recipient, amount: Self::Amount) -> Result<()>; -} - -/// Recipients map which is used when accounts ids are the same on both chains. -#[derive(Debug)] -pub struct IdentityRecipients(PhantomData); - -impl RecipientsMap for IdentityRecipients { - type PeerRecipient = AccountId; - type Recipient = AccountId; - - fn map(peer_recipient: Self::PeerRecipient) -> Result { - Ok(peer_recipient) - } -} - -/// Currency converter which is used when currency is the same on both chains. -#[derive(Debug)] -pub struct IdentityCurrencyConverter(PhantomData); - -impl CurrencyConverter for IdentityCurrencyConverter { - type SourceAmount = Amount; - type TargetAmount = Amount; - - fn convert(currency: Self::SourceAmount) -> Result { - Ok(currency) - } -} - -decl_runtime_apis! { - /// API for Rialto exchange transactions submitters. - pub trait RialtoCurrencyExchangeApi { - /// Returns true if currency exchange module is able to import transaction proof in - /// its current state. - fn filter_transaction_proof(proof: Proof) -> bool; - } - - /// API for Kovan exchange transactions submitters. - pub trait KovanCurrencyExchangeApi { - /// Returns true if currency exchange module is able to import transaction proof in - /// its current state. - fn filter_transaction_proof(proof: Proof) -> bool; - } -} diff --git a/bridges/primitives/ethereum-poa/Cargo.toml b/bridges/primitives/ethereum-poa/Cargo.toml deleted file mode 100644 index cd2c3a97a0f3..000000000000 --- a/bridges/primitives/ethereum-poa/Cargo.toml +++ /dev/null @@ -1,57 +0,0 @@ -[package] -name = "bp-eth-poa" -description = "Primitives of Ethereum PoA Bridge module." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -ethbloom = { version = "0.10.0", default-features = false, features = ["rlp"] } -fixed-hash = { version = "0.7", default-features = false } -hash-db = { version = "0.15.2", default-features = false } -impl-rlp = { version = "0.3", default-features = false } -impl-serde = { version = "0.3.1", optional = true } -libsecp256k1 = { version = "0.3.4", default-features = false, features = ["hmac"] } -parity-bytes = { version = "0.1", default-features = false } -plain_hasher = { version = "0.2.2", default-features = false } -primitive-types = { version = "0.9", default-features = false, features = ["codec", "rlp"] } -rlp = { version = "0.5", default-features = false } -serde = { version = "1.0", optional = true } -serde-big-array = { version = "0.2", optional = true } -triehash = { version = "0.8.2", default-features = false } - -# Substrate Dependencies - -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -hex-literal = "0.2" - -[features] -default = ["std"] -std = [ - "codec/std", - "ethbloom/std", - "fixed-hash/std", - "hash-db/std", - "impl-rlp/std", - "impl-serde", - "libsecp256k1/std", - "parity-bytes/std", - "plain_hasher/std", - "primitive-types/std", - "primitive-types/serde", - "rlp/std", - "serde/std", - "serde-big-array", - "sp-api/std", - "sp-io/std", - "sp-runtime/std", - "sp-std/std", - "triehash/std", -] diff --git a/bridges/primitives/ethereum-poa/src/lib.rs b/bridges/primitives/ethereum-poa/src/lib.rs deleted file mode 100644 index 382e6f81ee5d..000000000000 --- a/bridges/primitives/ethereum-poa/src/lib.rs +++ /dev/null @@ -1,734 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Generated by `DecodeLimit::decode_with_depth_limit` -#![allow(clippy::unnecessary_mut_passed)] - -pub use parity_bytes::Bytes; -pub use primitive_types::{H160, H256, H512, U128, U256}; -pub use rlp::encode as rlp_encode; - -use codec::{Decode, Encode}; -use ethbloom::{Bloom as EthBloom, Input as BloomInput}; -use fixed_hash::construct_fixed_hash; -use rlp::{Decodable, DecoderError, Rlp, RlpStream}; -use sp_io::hashing::keccak_256; -use sp_runtime::RuntimeDebug; -use sp_std::prelude::*; - -use impl_rlp::impl_fixed_hash_rlp; -#[cfg(feature = "std")] -use impl_serde::impl_fixed_hash_serde; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; -#[cfg(feature = "std")] -use serde_big_array::big_array; - -construct_fixed_hash! { pub struct H520(65); } -impl_fixed_hash_rlp!(H520, 65); -#[cfg(feature = "std")] -impl_fixed_hash_serde!(H520, 65); - -/// Raw (RLP-encoded) ethereum transaction. -pub type RawTransaction = Vec; - -/// Raw (RLP-encoded) ethereum transaction receipt. -pub type RawTransactionReceipt = Vec; - -/// An ethereum address. -pub type Address = H160; - -pub mod signatures; - -/// Complete header id. -#[derive(Encode, Decode, Default, RuntimeDebug, PartialEq, Clone, Copy)] -pub struct HeaderId { - /// Header number. - pub number: u64, - /// Header hash. - pub hash: H256, -} - -/// An Aura header. -#[derive(Clone, Default, Encode, Decode, PartialEq, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct AuraHeader { - /// Parent block hash. - pub parent_hash: H256, - /// Block timestamp. - pub timestamp: u64, - /// Block number. - pub number: u64, - /// Block author. - pub author: Address, - - /// Transactions root. - pub transactions_root: H256, - /// Block uncles hash. - pub uncles_hash: H256, - /// Block extra data. - pub extra_data: Bytes, - - /// State root. - pub state_root: H256, - /// Block receipts root. - pub receipts_root: H256, - /// Block bloom. - pub log_bloom: Bloom, - /// Gas used for contracts execution. - pub gas_used: U256, - /// Block gas limit. - pub gas_limit: U256, - - /// Block difficulty. - pub difficulty: U256, - /// Vector of post-RLP-encoded fields. - pub seal: Vec, -} - -/// Parsed ethereum transaction. -#[derive(PartialEq, RuntimeDebug)] -pub struct Transaction { - /// Sender address. - pub sender: Address, - /// Unsigned portion of ethereum transaction. - pub unsigned: UnsignedTransaction, -} - -/// Unsigned portion of ethereum transaction. -#[derive(Clone, PartialEq, RuntimeDebug)] -pub struct UnsignedTransaction { - /// Sender nonce. - pub nonce: U256, - /// Gas price. - pub gas_price: U256, - /// Gas limit. - pub gas: U256, - /// Transaction destination address. None if it is contract creation transaction. - pub to: Option
, - /// Value. - pub value: U256, - /// Associated data. - pub payload: Bytes, -} - -/// Information describing execution of a transaction. -#[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug)] -pub struct Receipt { - /// The total gas used in the block following execution of the transaction. - pub gas_used: U256, - /// The OR-wide combination of all logs' blooms for this transaction. - pub log_bloom: Bloom, - /// The logs stemming from this transaction. - pub logs: Vec, - /// Transaction outcome. - pub outcome: TransactionOutcome, -} - -/// Transaction outcome store in the receipt. -#[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug)] -pub enum TransactionOutcome { - /// Status and state root are unknown under EIP-98 rules. - Unknown, - /// State root is known. Pre EIP-98 and EIP-658 rules. - StateRoot(H256), - /// Status code is known. EIP-658 rules. - StatusCode(u8), -} - -/// A record of execution for a `LOG` operation. -#[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug)] -pub struct LogEntry { - /// The address of the contract executing at the point of the `LOG` operation. - pub address: Address, - /// The topics associated with the `LOG` operation. - pub topics: Vec, - /// The data associated with the `LOG` operation. - pub data: Bytes, -} - -/// Logs bloom. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct Bloom(#[cfg_attr(feature = "std", serde(with = "BigArray"))] [u8; 256]); - -#[cfg(feature = "std")] -big_array! { BigArray; } - -/// An empty step message that is included in a seal, the only difference is that it doesn't include -/// the `parent_hash` in order to save space. The included signature is of the original empty step -/// message, which can be reconstructed by using the parent hash of the block in which this sealed -/// empty message is included. -pub struct SealedEmptyStep { - /// Signature of the original message author. - pub signature: H520, - /// The step this message is generated for. - pub step: u64, -} - -impl AuraHeader { - /// Compute id of this header. - pub fn compute_id(&self) -> HeaderId { - HeaderId { - number: self.number, - hash: self.compute_hash(), - } - } - - /// Compute hash of this header (keccak of the RLP with seal). - pub fn compute_hash(&self) -> H256 { - keccak_256(&self.rlp(true)).into() - } - - /// Get id of this header' parent. Returns None if this is genesis header. - pub fn parent_id(&self) -> Option { - self.number.checked_sub(1).map(|parent_number| HeaderId { - number: parent_number, - hash: self.parent_hash, - }) - } - - /// Check if passed transactions receipts are matching receipts root in this header. - /// Returns Ok(computed-root) if check succeeds. - /// Returns Err(computed-root) if check fails. - pub fn check_receipts_root(&self, receipts: &[Receipt]) -> Result { - check_merkle_proof(self.receipts_root, receipts.iter().map(|r| r.rlp())) - } - - /// Check if passed raw transactions receipts are matching receipts root in this header. - /// Returns Ok(computed-root) if check succeeds. - /// Returns Err(computed-root) if check fails. - pub fn check_raw_receipts_root<'a>( - &self, - receipts: impl IntoIterator, - ) -> Result { - check_merkle_proof(self.receipts_root, receipts.into_iter()) - } - - /// Check if passed transactions are matching transactions root in this header. - /// Returns Ok(computed-root) if check succeeds. - /// Returns Err(computed-root) if check fails. - pub fn check_transactions_root<'a>( - &self, - transactions: impl IntoIterator, - ) -> Result { - check_merkle_proof(self.transactions_root, transactions.into_iter()) - } - - /// Gets the seal hash of this header. - pub fn seal_hash(&self, include_empty_steps: bool) -> Option { - Some(match include_empty_steps { - true => { - let mut message = self.compute_hash().as_bytes().to_vec(); - message.extend_from_slice(self.seal.get(2)?); - keccak_256(&message).into() - } - false => keccak_256(&self.rlp(false)).into(), - }) - } - - /// Get step this header is generated for. - pub fn step(&self) -> Option { - self.seal.get(0).map(|x| Rlp::new(x)).and_then(|x| x.as_val().ok()) - } - - /// Get header author' signature. - pub fn signature(&self) -> Option { - self.seal.get(1).and_then(|x| Rlp::new(x).as_val().ok()) - } - - /// Extracts the empty steps from the header seal. - pub fn empty_steps(&self) -> Option> { - self.seal - .get(2) - .and_then(|x| Rlp::new(x).as_list::().ok()) - } - - /// Returns header RLP with or without seals. - fn rlp(&self, with_seal: bool) -> Bytes { - let mut s = RlpStream::new(); - if with_seal { - s.begin_list(13 + self.seal.len()); - } else { - s.begin_list(13); - } - - s.append(&self.parent_hash); - s.append(&self.uncles_hash); - s.append(&self.author); - s.append(&self.state_root); - s.append(&self.transactions_root); - s.append(&self.receipts_root); - s.append(&EthBloom::from(self.log_bloom.0)); - s.append(&self.difficulty); - s.append(&self.number); - s.append(&self.gas_limit); - s.append(&self.gas_used); - s.append(&self.timestamp); - s.append(&self.extra_data); - - if with_seal { - for b in &self.seal { - s.append_raw(b, 1); - } - } - - s.out().to_vec() - } -} - -impl UnsignedTransaction { - /// Decode unsigned portion of raw transaction RLP. - pub fn decode_rlp(raw_tx: &[u8]) -> Result { - let tx_rlp = Rlp::new(raw_tx); - let to = tx_rlp.at(3)?; - Ok(UnsignedTransaction { - nonce: tx_rlp.val_at(0)?, - gas_price: tx_rlp.val_at(1)?, - gas: tx_rlp.val_at(2)?, - to: match to.is_empty() { - false => Some(to.as_val()?), - true => None, - }, - value: tx_rlp.val_at(4)?, - payload: tx_rlp.val_at(5)?, - }) - } - - /// Returns message that has to be signed to sign this transaction. - pub fn message(&self, chain_id: Option) -> H256 { - keccak_256(&self.rlp(chain_id)).into() - } - - /// Returns unsigned transaction RLP. - pub fn rlp(&self, chain_id: Option) -> Bytes { - let mut stream = RlpStream::new_list(if chain_id.is_some() { 9 } else { 6 }); - self.rlp_to(chain_id, &mut stream); - stream.out().to_vec() - } - - /// Encode to given rlp stream. - pub fn rlp_to(&self, chain_id: Option, stream: &mut RlpStream) { - stream.append(&self.nonce); - stream.append(&self.gas_price); - stream.append(&self.gas); - match self.to { - Some(to) => stream.append(&to), - None => stream.append(&""), - }; - stream.append(&self.value); - stream.append(&self.payload); - if let Some(chain_id) = chain_id { - stream.append(&chain_id); - stream.append(&0u8); - stream.append(&0u8); - } - } -} - -impl Receipt { - /// Decode status from raw transaction receipt RLP. - pub fn is_successful_raw_receipt(raw_receipt: &[u8]) -> Result { - let rlp = Rlp::new(raw_receipt); - if rlp.item_count()? == 3 { - // no outcome - invalid tx? - Ok(false) - } else { - let first = rlp.at(0)?; - if first.is_data() && first.data()?.len() <= 1 { - // EIP-658 transaction - status of successful transaction is 1 - let status: u8 = first.as_val()?; - Ok(status == 1) - } else { - // pre-EIP-658 transaction - we do not support this kind of transactions - Ok(false) - } - } - } - - /// Returns receipt RLP. - pub fn rlp(&self) -> Bytes { - let mut s = RlpStream::new(); - match self.outcome { - TransactionOutcome::Unknown => { - s.begin_list(3); - } - TransactionOutcome::StateRoot(ref root) => { - s.begin_list(4); - s.append(root); - } - TransactionOutcome::StatusCode(ref status_code) => { - s.begin_list(4); - s.append(status_code); - } - } - s.append(&self.gas_used); - s.append(&EthBloom::from(self.log_bloom.0)); - - s.begin_list(self.logs.len()); - for log in &self.logs { - s.begin_list(3); - s.append(&log.address); - s.begin_list(log.topics.len()); - for topic in &log.topics { - s.append(topic); - } - s.append(&log.data); - } - - s.out().to_vec() - } -} - -impl SealedEmptyStep { - /// Returns message that has to be signed by the validator. - pub fn message(&self, parent_hash: &H256) -> H256 { - let mut message = RlpStream::new_list(2); - message.append(&self.step); - message.append(parent_hash); - keccak_256(&message.out()).into() - } - - /// Returns rlp for the vector of empty steps (we only do encoding in tests). - pub fn rlp_of(empty_steps: &[SealedEmptyStep]) -> Bytes { - let mut s = RlpStream::new(); - s.begin_list(empty_steps.len()); - for empty_step in empty_steps { - s.begin_list(2).append(&empty_step.signature).append(&empty_step.step); - } - s.out().to_vec() - } -} - -impl Decodable for SealedEmptyStep { - fn decode(rlp: &Rlp) -> Result { - let signature: H520 = rlp.val_at(0)?; - let step = rlp.val_at(1)?; - - Ok(SealedEmptyStep { signature, step }) - } -} - -impl LogEntry { - /// Calculates the bloom of this log entry. - pub fn bloom(&self) -> Bloom { - let eth_bloom = - self.topics - .iter() - .fold(EthBloom::from(BloomInput::Raw(self.address.as_bytes())), |mut b, t| { - b.accrue(BloomInput::Raw(t.as_bytes())); - b - }); - Bloom(*eth_bloom.data()) - } -} - -impl Bloom { - /// Returns true if this bloom has all bits from the other set. - pub fn contains(&self, other: &Bloom) -> bool { - self.0.iter().zip(other.0.iter()).all(|(l, r)| (l & r) == *r) - } -} - -impl<'a> From<&'a [u8; 256]> for Bloom { - fn from(buffer: &'a [u8; 256]) -> Bloom { - Bloom(*buffer) - } -} - -impl PartialEq for Bloom { - fn eq(&self, other: &Bloom) -> bool { - self.0.iter().zip(other.0.iter()).all(|(l, r)| l == r) - } -} - -impl Default for Bloom { - fn default() -> Self { - Bloom([0; 256]) - } -} - -#[cfg(feature = "std")] -impl std::fmt::Debug for Bloom { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - fmt.debug_struct("Bloom").finish() - } -} - -/// Decode Ethereum transaction. -pub fn transaction_decode_rlp(raw_tx: &[u8]) -> Result { - // parse transaction fields - let unsigned = UnsignedTransaction::decode_rlp(raw_tx)?; - let tx_rlp = Rlp::new(raw_tx); - let v: u64 = tx_rlp.val_at(6)?; - let r: U256 = tx_rlp.val_at(7)?; - let s: U256 = tx_rlp.val_at(8)?; - - // reconstruct signature - let mut signature = [0u8; 65]; - let (chain_id, v) = match v { - v if v == 27u64 => (None, 0), - v if v == 28u64 => (None, 1), - v if v >= 35u64 => (Some((v - 35) / 2), ((v - 1) % 2) as u8), - _ => (None, 4), - }; - r.to_big_endian(&mut signature[0..32]); - s.to_big_endian(&mut signature[32..64]); - signature[64] = v; - - // reconstruct message that has been signed - let message = unsigned.message(chain_id); - - // recover tx sender - let sender_public = sp_io::crypto::secp256k1_ecdsa_recover(&signature, message.as_fixed_bytes()) - .map_err(|_| rlp::DecoderError::Custom("Failed to recover transaction sender"))?; - let sender_address = public_to_address(&sender_public); - - Ok(Transaction { - sender: sender_address, - unsigned, - }) -} - -/// Convert public key into corresponding ethereum address. -pub fn public_to_address(public: &[u8; 64]) -> Address { - let hash = keccak_256(public); - let mut result = Address::zero(); - result.as_bytes_mut().copy_from_slice(&hash[12..]); - result -} - -/// Check ethereum merkle proof. -/// Returns Ok(computed-root) if check succeeds. -/// Returns Err(computed-root) if check fails. -fn check_merkle_proof>(expected_root: H256, items: impl Iterator) -> Result { - let computed_root = compute_merkle_root(items); - if computed_root == expected_root { - Ok(computed_root) - } else { - Err(computed_root) - } -} - -/// Compute ethereum merkle root. -pub fn compute_merkle_root>(items: impl Iterator) -> H256 { - struct Keccak256Hasher; - - impl hash_db::Hasher for Keccak256Hasher { - type Out = H256; - type StdHasher = plain_hasher::PlainHasher; - const LENGTH: usize = 32; - fn hash(x: &[u8]) -> Self::Out { - keccak_256(x).into() - } - } - - triehash::ordered_trie_root::(items) -} - -/// Get validator that should author the block at given step. -pub fn step_validator(header_validators: &[T], header_step: u64) -> &T { - &header_validators[(header_step % header_validators.len() as u64) as usize] -} - -sp_api::decl_runtime_apis! { - /// API for querying information about headers from the Rialto Bridge Pallet - pub trait RialtoPoAHeaderApi { - /// Returns number and hash of the best block known to the bridge module. - /// - /// The caller should only submit an `import_header` transaction that makes - /// (or leads to making) other header the best one. - fn best_block() -> (u64, H256); - /// Returns number and hash of the best finalized block known to the bridge module. - fn finalized_block() -> (u64, H256); - /// Returns true if the import of given block requires transactions receipts. - fn is_import_requires_receipts(header: AuraHeader) -> bool; - /// Returns true if header is known to the runtime. - fn is_known_block(hash: H256) -> bool; - } - - /// API for querying information about headers from the Kovan Bridge Pallet - pub trait KovanHeaderApi { - /// Returns number and hash of the best block known to the bridge module. - /// - /// The caller should only submit an `import_header` transaction that makes - /// (or leads to making) other header the best one. - fn best_block() -> (u64, H256); - /// Returns number and hash of the best finalized block known to the bridge module. - fn finalized_block() -> (u64, H256); - /// Returns true if the import of given block requires transactions receipts. - fn is_import_requires_receipts(header: AuraHeader) -> bool; - /// Returns true if header is known to the runtime. - fn is_known_block(hash: H256) -> bool; - } -} - -#[cfg(test)] -mod tests { - use super::*; - use hex_literal::hex; - - #[test] - fn transfer_transaction_decode_works() { - // value transfer transaction - // https://etherscan.io/tx/0xb9d4ad5408f53eac8627f9ccd840ba8fb3469d55cd9cc2a11c6e049f1eef4edd - // https://etherscan.io/getRawTx?tx=0xb9d4ad5408f53eac8627f9ccd840ba8fb3469d55cd9cc2a11c6e049f1eef4edd - let raw_tx = hex!("f86c0a85046c7cfe0083016dea94d1310c1e038bc12865d3d3997275b3e4737c6302880b503be34d9fe80080269fc7eaaa9c21f59adf8ad43ed66cf5ef9ee1c317bd4d32cd65401e7aaca47cfaa0387d79c65b90be6260d09dcfb780f29dd8133b9b1ceb20b83b7e442b4bfc30cb"); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: hex!("67835910d32600471f388a137bbff3eb07993c04").into(), - unsigned: UnsignedTransaction { - nonce: 10.into(), - gas_price: 19000000000u64.into(), - gas: 93674.into(), - to: Some(hex!("d1310c1e038bc12865d3d3997275b3e4737c6302").into()), - value: 815217380000000000_u64.into(), - payload: Default::default(), - } - }), - ); - - // Kovan value transfer transaction - // https://kovan.etherscan.io/tx/0x3b4b7bd41c1178045ccb4753aa84c1ef9864b4d712fa308b228917cd837915da - // https://kovan.etherscan.io/getRawTx?tx=0x3b4b7bd41c1178045ccb4753aa84c1ef9864b4d712fa308b228917cd837915da - let raw_tx = hex!("f86a822816808252089470c1ccde719d6f477084f07e4137ab0e55f8369f8930cf46e92063afd8008078a00e4d1f4d8aa992bda3c105ff3d6e9b9acbfd99facea00985e2131029290adbdca028ea29a46a4b66ec65b454f0706228e3768cb0ecf755f67c50ddd472f11d5994"); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: hex!("faadface3fbd81ce37b0e19c0b65ff4234148132").into(), - unsigned: UnsignedTransaction { - nonce: 10262.into(), - gas_price: 0.into(), - gas: 21000.into(), - to: Some(hex!("70c1ccde719d6f477084f07e4137ab0e55f8369f").into()), - value: 900379597077600000000_u128.into(), - payload: Default::default(), - }, - }), - ); - } - - #[test] - fn payload_transaction_decode_works() { - // contract call transaction - // https://etherscan.io/tx/0xdc2b996b4d1d6922bf6dba063bfd70913279cb6170967c9bb80252aeb061cf65 - // https://etherscan.io/getRawTx?tx=0xdc2b996b4d1d6922bf6dba063bfd70913279cb6170967c9bb80252aeb061cf65 - let raw_tx = hex!("f8aa76850430e234008301500094dac17f958d2ee523a2206206994597c13d831ec780b844a9059cbb000000000000000000000000e08f35f66867a454835b25118f1e490e7f9e9a7400000000000000000000000000000000000000000000000000000000004c4b4025a0964e023999621dc3d4d831c43c71f7555beb6d1192dee81a3674b3f57e310f21a00f229edd86f841d1ee4dc48cc16667e2283817b1d39bae16ced10cd206ae4fd4"); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: hex!("2b9a4d37bdeecdf994c4c9ad7f3cf8dc632f7d70").into(), - unsigned: UnsignedTransaction { - nonce: 118.into(), - gas_price: 18000000000u64.into(), - gas: 86016.into(), - to: Some(hex!("dac17f958d2ee523a2206206994597c13d831ec7").into()), - value: 0.into(), - payload: hex!("a9059cbb000000000000000000000000e08f35f66867a454835b25118f1e490e7f9e9a7400000000000000000000000000000000000000000000000000000000004c4b40").to_vec(), - }, - }), - ); - - // Kovan contract call transaction - // https://kovan.etherscan.io/tx/0x2904b4451d23665492239016b78da052d40d55fdebc7304b38e53cf6a37322cf - // https://kovan.etherscan.io/getRawTx?tx=0x2904b4451d23665492239016b78da052d40d55fdebc7304b38e53cf6a37322cf - let raw_tx = hex!("f8ac8302200b843b9aca00830271009484dd11eb2a29615303d18149c0dbfa24167f896680b844a9059cbb00000000000000000000000001503dfc5ad81bf630d83697e98601871bb211b600000000000000000000000000000000000000000000000000000000000027101ba0ce126d2cca81f5e245f292ff84a0d915c0a4ac52af5c51219db1e5d36aa8da35a0045298b79dac631907403888f9b04c2ab5509fe0cc31785276d30a40b915fcf9"); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: hex!("617da121abf03d4c1af572f5a4e313e26bef7bdc").into(), - unsigned: UnsignedTransaction { - nonce: 139275.into(), - gas_price: 1000000000.into(), - gas: 160000.into(), - to: Some(hex!("84dd11eb2a29615303d18149c0dbfa24167f8966").into()), - value: 0.into(), - payload: hex!("a9059cbb00000000000000000000000001503dfc5ad81bf630d83697e98601871bb211b60000000000000000000000000000000000000000000000000000000000002710").to_vec(), - }, - }), - ); - } - - #[test] - fn is_successful_raw_receipt_works() { - assert!(Receipt::is_successful_raw_receipt(&[]).is_err()); - - assert_eq!( - Receipt::is_successful_raw_receipt( - &Receipt { - outcome: TransactionOutcome::Unknown, - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp() - ), - Ok(false), - ); - assert_eq!( - Receipt::is_successful_raw_receipt( - &Receipt { - outcome: TransactionOutcome::StateRoot(Default::default()), - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp() - ), - Ok(false), - ); - assert_eq!( - Receipt::is_successful_raw_receipt( - &Receipt { - outcome: TransactionOutcome::StatusCode(0), - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp() - ), - Ok(false), - ); - assert_eq!( - Receipt::is_successful_raw_receipt( - &Receipt { - outcome: TransactionOutcome::StatusCode(1), - gas_used: Default::default(), - log_bloom: Default::default(), - logs: Vec::new(), - } - .rlp() - ), - Ok(true), - ); - } - - #[test] - fn is_successful_raw_receipt_with_empty_data() { - let mut stream = RlpStream::new(); - stream.begin_list(4); - stream.append_empty_data(); - stream.append(&1u64); - stream.append(&2u64); - stream.append(&3u64); - - assert_eq!(Receipt::is_successful_raw_receipt(&stream.out()), Ok(false),); - } -} diff --git a/bridges/primitives/ethereum-poa/src/signatures.rs b/bridges/primitives/ethereum-poa/src/signatures.rs deleted file mode 100644 index a4e076f2200c..000000000000 --- a/bridges/primitives/ethereum-poa/src/signatures.rs +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . -// - -//! Helpers related to signatures. -//! -//! Used for testing and benchmarking. - -// reexport to avoid direct secp256k1 deps by other crates -pub use secp256k1::SecretKey; - -use crate::{ - public_to_address, rlp_encode, step_validator, Address, AuraHeader, RawTransaction, UnsignedTransaction, H256, - H520, U256, -}; - -use secp256k1::{Message, PublicKey}; - -/// Utilities for signing headers. -pub trait SignHeader { - /// Signs header by given author. - fn sign_by(self, author: &SecretKey) -> AuraHeader; - /// Signs header by given authors set. - fn sign_by_set(self, authors: &[SecretKey]) -> AuraHeader; -} - -/// Utilities for signing transactions. -pub trait SignTransaction { - /// Sign transaction by given author. - fn sign_by(self, author: &SecretKey, chain_id: Option) -> RawTransaction; -} - -impl SignHeader for AuraHeader { - fn sign_by(mut self, author: &SecretKey) -> Self { - self.author = secret_to_address(author); - - let message = self.seal_hash(false).unwrap(); - let signature = sign(author, message); - self.seal[1] = rlp_encode(&signature).to_vec(); - self - } - - fn sign_by_set(self, authors: &[SecretKey]) -> Self { - let step = self.step().unwrap(); - let author = step_validator(authors, step); - self.sign_by(author) - } -} - -impl SignTransaction for UnsignedTransaction { - fn sign_by(self, author: &SecretKey, chain_id: Option) -> RawTransaction { - let message = self.message(chain_id); - let signature = sign(author, message); - let signature_r = U256::from_big_endian(&signature.as_fixed_bytes()[..32][..]); - let signature_s = U256::from_big_endian(&signature.as_fixed_bytes()[32..64][..]); - let signature_v = signature.as_fixed_bytes()[64] as u64; - let signature_v = signature_v + if let Some(n) = chain_id { 35 + n * 2 } else { 27 }; - - let mut stream = rlp::RlpStream::new_list(9); - self.rlp_to(None, &mut stream); - stream.append(&signature_v); - stream.append(&signature_r); - stream.append(&signature_s); - stream.out().to_vec() - } -} - -/// Return author's signature over given message. -pub fn sign(author: &SecretKey, message: H256) -> H520 { - let (signature, recovery_id) = secp256k1::sign(&Message::parse(message.as_fixed_bytes()), author); - let mut raw_signature = [0u8; 65]; - raw_signature[..64].copy_from_slice(&signature.serialize()); - raw_signature[64] = recovery_id.serialize(); - raw_signature.into() -} - -/// Returns address corresponding to given secret key. -pub fn secret_to_address(secret: &SecretKey) -> Address { - let public = PublicKey::from_secret_key(secret); - let mut raw_public = [0u8; 64]; - raw_public.copy_from_slice(&public.serialize()[1..]); - public_to_address(&raw_public) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::{transaction_decode_rlp, Transaction}; - - #[test] - fn transaction_signed_properly() { - // case1: with chain_id replay protection + to - let signer = SecretKey::parse(&[1u8; 32]).unwrap(); - let signer_address = secret_to_address(&signer); - let unsigned = UnsignedTransaction { - nonce: 100.into(), - gas_price: 200.into(), - gas: 300.into(), - to: Some([42u8; 20].into()), - value: 400.into(), - payload: vec![1, 2, 3], - }; - let raw_tx = unsigned.clone().sign_by(&signer, Some(42)); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: signer_address, - unsigned, - }), - ); - - // case2: without chain_id replay protection + contract creation - let unsigned = UnsignedTransaction { - nonce: 100.into(), - gas_price: 200.into(), - gas: 300.into(), - to: None, - value: 400.into(), - payload: vec![1, 2, 3], - }; - let raw_tx = unsigned.clone().sign_by(&signer, None); - assert_eq!( - transaction_decode_rlp(&raw_tx), - Ok(Transaction { - sender: signer_address, - unsigned, - }), - ); - } -} diff --git a/bridges/primitives/header-chain/Cargo.toml b/bridges/primitives/header-chain/Cargo.toml deleted file mode 100644 index 844e59865202..000000000000 --- a/bridges/primitives/header-chain/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "bp-header-chain" -description = "A common interface for describing what a bridge pallet should be able to do." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -finality-grandpa = { version = "0.14.1", default-features = false } -serde = { version = "1.0", optional = true } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -assert_matches = "1.5" -bp-test-utils = { path = "../test-utils" } - -[features] -default = ["std"] -std = [ - "codec/std", - "finality-grandpa/std", - "serde/std", - "frame-support/std", - "sp-core/std", - "sp-finality-grandpa/std", - "sp-runtime/std", - "sp-std/std", -] diff --git a/bridges/primitives/header-chain/src/lib.rs b/bridges/primitives/header-chain/src/lib.rs deleted file mode 100644 index adac6eb26880..000000000000 --- a/bridges/primitives/header-chain/src/lib.rs +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Defines traits which represent a common interface for Substrate pallets which want to -//! incorporate bridge functionality. - -#![cfg_attr(not(feature = "std"), no_std)] - -use codec::{Codec, Decode, Encode, EncodeLike}; -use core::clone::Clone; -use core::cmp::Eq; -use core::default::Default; -use core::fmt::Debug; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; -use sp_finality_grandpa::{AuthorityList, ConsensusLog, SetId, GRANDPA_ENGINE_ID}; -use sp_runtime::RuntimeDebug; -use sp_runtime::{generic::OpaqueDigestItemId, traits::Header as HeaderT}; - -pub mod justification; - -/// A type that can be used as a parameter in a dispatchable function. -/// -/// When using `decl_module` all arguments for call functions must implement this trait. -pub trait Parameter: Codec + EncodeLike + Clone + Eq + Debug {} -impl Parameter for T where T: Codec + EncodeLike + Clone + Eq + Debug {} - -/// A GRANDPA Authority List and ID. -#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct AuthoritySet { - /// List of GRANDPA authorities for the current round. - pub authorities: AuthorityList, - /// Monotonic identifier of the current GRANDPA authority set. - pub set_id: SetId, -} - -impl AuthoritySet { - /// Create a new GRANDPA Authority Set. - pub fn new(authorities: AuthorityList, set_id: SetId) -> Self { - Self { authorities, set_id } - } -} - -/// Data required for initializing the bridge pallet. -/// -/// The bridge needs to know where to start its sync from, and this provides that initial context. -#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct InitializationData { - /// The header from which we should start syncing. - pub header: H, - /// The initial authorities of the pallet. - pub authority_list: AuthorityList, - /// The ID of the initial authority set. - pub set_id: SetId, - /// Should the pallet block transaction immediately after initialization. - pub is_halted: bool, -} - -/// base trait for verifying transaction inclusion proofs. -pub trait InclusionProofVerifier { - /// Transaction type. - type Transaction: Parameter; - /// Transaction inclusion proof type. - type TransactionInclusionProof: Parameter; - - /// Verify that transaction is a part of given block. - /// - /// Returns Some(transaction) if proof is valid and None otherwise. - fn verify_transaction_inclusion_proof(proof: &Self::TransactionInclusionProof) -> Option; -} - -/// A trait for pallets which want to keep track of finalized headers from a bridged chain. -pub trait HeaderChain { - /// Get the best finalized header known to the header chain. - fn best_finalized() -> H; - - /// Get the best authority set known to the header chain. - fn authority_set() -> AuthoritySet; - - /// Write a header finalized by GRANDPA to the underlying pallet storage. - fn append_header(header: H) -> Result<(), E>; -} - -impl HeaderChain for () { - fn best_finalized() -> H { - H::default() - } - - fn authority_set() -> AuthoritySet { - AuthoritySet::default() - } - - fn append_header(_header: H) -> Result<(), E> { - Ok(()) - } -} - -/// Abstract finality proof that is justifying block finality. -pub trait FinalityProof: Clone + Send + Sync + Debug { - /// Return number of header that this proof is generated for. - fn target_header_number(&self) -> Number; -} - -/// Find header digest that schedules next GRANDPA authorities set. -pub fn find_grandpa_authorities_scheduled_change( - header: &H, -) -> Option> { - let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); - - let filter_log = |log: ConsensusLog| match log { - ConsensusLog::ScheduledChange(change) => Some(change), - _ => None, - }; - - // find the first consensus digest with the right ID which converts to - // the right kind of consensus log. - header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) -} diff --git a/bridges/primitives/message-dispatch/Cargo.toml b/bridges/primitives/message-dispatch/Cargo.toml deleted file mode 100644 index 84fa48553a21..000000000000 --- a/bridges/primitives/message-dispatch/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "bp-message-dispatch" -description = "Primitives of bridge messages dispatch modules." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -bp-runtime = { path = "../runtime", default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "bp-runtime/std", - "codec/std", - "frame-support/std", - "sp-std/std", -] diff --git a/bridges/primitives/message-dispatch/src/lib.rs b/bridges/primitives/message-dispatch/src/lib.rs deleted file mode 100644 index 859dc5e469ad..000000000000 --- a/bridges/primitives/message-dispatch/src/lib.rs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! A common interface for all Bridge Message Dispatch modules. - -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_docs)] - -use bp_runtime::{ - messages::{DispatchFeePayment, MessageDispatchResult}, - ChainId, Size, -}; -use codec::{Decode, Encode}; -use frame_support::RuntimeDebug; -use sp_std::prelude::*; - -/// Message dispatch weight. -pub type Weight = u64; - -/// Spec version type. -pub type SpecVersion = u32; - -/// A generic trait to dispatch arbitrary messages delivered over the bridge. -pub trait MessageDispatch { - /// A type of the message to be dispatched. - type Message: codec::Decode; - - /// Estimate dispatch weight. - /// - /// This function must: (1) be instant and (2) return correct upper bound - /// of dispatch weight. - fn dispatch_weight(message: &Self::Message) -> Weight; - - /// Dispatches the message internally. - /// - /// `source_chain` indicates the chain where the message came from. - /// `target_chain` indicates the chain where message dispatch happens. - /// - /// `id` is a short unique identifier of the message. - /// - /// If message is `Ok`, then it should be dispatched. If it is `Err`, then it's just - /// a sign that some other component has rejected the message even before it has - /// reached `dispatch` method (right now this may only be caused if we fail to decode - /// the whole message). - /// - /// Returns unspent dispatch weight. - fn dispatch Result<(), ()>>( - source_chain: ChainId, - target_chain: ChainId, - id: MessageId, - message: Result, - pay_dispatch_fee: P, - ) -> MessageDispatchResult; -} - -/// Origin of a Call when it is dispatched on the target chain. -/// -/// The source chain can (and should) verify that the message can be dispatched on the target chain -/// with a particular origin given the source chain's origin. This can be done with the -/// `verify_message_origin()` function. -#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq)] -pub enum CallOrigin { - /// Call is sent by the Root origin on the source chain. On the target chain it is dispatched - /// from a derived account. - /// - /// The derived account represents the source Root account on the target chain. This is useful - /// if the target chain needs some way of knowing that a call came from a priviledged origin on - /// the source chain (maybe to allow a configuration change for example). - SourceRoot, - - /// Call is sent by `SourceChainAccountId` on the source chain. On the target chain it is - /// dispatched from an account controlled by a private key on the target chain. - /// - /// The account can be identified by `TargetChainAccountPublic`. The proof that the - /// `SourceChainAccountId` controls `TargetChainAccountPublic` is the `TargetChainSignature` - /// over `(Call, SourceChainAccountId, TargetChainSpecVersion, SourceChainBridgeId).encode()`. - /// - /// NOTE sending messages using this origin (or any other) does not have replay protection! - /// The assumption is that both the source account and the target account is controlled by - /// the same entity, so source-chain replay protection is sufficient. - /// As a consequence, it's extremely important for the target chain user to never produce - /// a signature with their target-private key on something that could be sent over the bridge, - /// i.e. if the target user signs `(, Call::Transfer(X, 5))` - /// The owner of `some-source-account-id` can send that message multiple times, which would - /// result with multiple transfer calls being dispatched on the target chain. - /// So please, NEVER USE YOUR PRIVATE KEY TO SIGN SOMETHING YOU DON'T FULLY UNDERSTAND! - TargetAccount(SourceChainAccountId, TargetChainAccountPublic, TargetChainSignature), - - /// Call is sent by the `SourceChainAccountId` on the source chain. On the target chain it is - /// dispatched from a derived account ID. - /// - /// The account ID on the target chain is derived from the source account ID. This is useful if - /// you need a way to represent foreign accounts on this chain for call dispatch purposes. - /// - /// Note that the derived account does not need to have a private key on the target chain. This - /// origin can therefore represent proxies, pallets, etc. as well as "regular" accounts. - SourceAccount(SourceChainAccountId), -} - -/// Message payload type used by dispatch module. -#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq)] -pub struct MessagePayload { - /// Runtime specification version. We only dispatch messages that have the same - /// runtime version. Otherwise we risk to misinterpret encoded calls. - pub spec_version: SpecVersion, - /// Weight of the call, declared by the message sender. If it is less than actual - /// static weight, the call is not dispatched. - pub weight: Weight, - /// Call origin to be used during dispatch. - pub origin: CallOrigin, - /// Where the fee for dispatching message is paid? - pub dispatch_fee_payment: DispatchFeePayment, - /// The call itself. - pub call: Call, -} - -impl Size - for MessagePayload> -{ - fn size_hint(&self) -> u32 { - self.call.len() as _ - } -} diff --git a/bridges/primitives/messages/Cargo.toml b/bridges/primitives/messages/Cargo.toml deleted file mode 100644 index b5b68220a409..000000000000 --- a/bridges/primitives/messages/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "bp-messages" -description = "Primitives of messages module." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -bitvec = { version = "0.20", default-features = false, features = ["alloc"] } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive", "bit-vec"] } -impl-trait-for-tuples = "0.2" -serde = { version = "1.0.101", optional = true, features = ["derive"] } - -# Bridge dependencies - -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[features] -default = ["std"] -std = [ - "bp-runtime/std", - "codec/std", - "frame-support/std", - "frame-system/std", - "serde", - "sp-std/std" -] diff --git a/bridges/primitives/messages/src/lib.rs b/bridges/primitives/messages/src/lib.rs deleted file mode 100644 index 963543ec3213..000000000000 --- a/bridges/primitives/messages/src/lib.rs +++ /dev/null @@ -1,390 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Primitives of messages module. - -#![cfg_attr(not(feature = "std"), no_std)] -// RuntimeApi generated functions -#![allow(clippy::too_many_arguments)] -// Generated by `DecodeLimit::decode_with_depth_limit` -#![allow(clippy::unnecessary_mut_passed)] - -use bitvec::prelude::*; -use bp_runtime::messages::DispatchFeePayment; -use codec::{Decode, Encode}; -use frame_support::RuntimeDebug; -use sp_std::{collections::vec_deque::VecDeque, prelude::*}; - -pub mod source_chain; -pub mod target_chain; - -// Weight is reexported to avoid additional frame-support dependencies in related crates. -pub use frame_support::weights::Weight; - -/// Messages pallet operating mode. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] -pub enum OperatingMode { - /// Normal mode, when all operations are allowed. - Normal, - /// The pallet is not accepting outbound messages. Inbound messages and receival proofs - /// are still accepted. - /// - /// This mode may be used e.g. when bridged chain expects upgrade. Then to avoid dispatch - /// failures, the pallet owner may stop accepting new messages, while continuing to deliver - /// queued messages to the bridged chain. Once upgrade is completed, the mode may be switched - /// back to `Normal`. - RejectingOutboundMessages, - /// The pallet is halted. All operations (except operating mode change) are prohibited. - Halted, -} - -impl Default for OperatingMode { - fn default() -> Self { - OperatingMode::Normal - } -} - -/// Messages pallet parameter. -pub trait Parameter: frame_support::Parameter { - /// Save parameter value in the runtime storage. - fn save(&self); -} - -impl Parameter for () { - fn save(&self) {} -} - -/// Lane identifier. -pub type LaneId = [u8; 4]; - -/// Message nonce. Valid messages will never have 0 nonce. -pub type MessageNonce = u64; - -/// Message id as a tuple. -pub type MessageId = (LaneId, MessageNonce); - -/// Opaque message payload. We only decode this payload when it is dispatched. -pub type MessagePayload = Vec; - -/// Message key (unique message identifier) as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct MessageKey { - /// ID of the message lane. - pub lane_id: LaneId, - /// Message nonce. - pub nonce: MessageNonce, -} - -/// Message data as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct MessageData { - /// Message payload. - pub payload: MessagePayload, - /// Message delivery and dispatch fee, paid by the submitter. - pub fee: Fee, -} - -/// Message as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct Message { - /// Message key. - pub key: MessageKey, - /// Message data. - pub data: MessageData, -} - -/// Inbound lane data. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] -pub struct InboundLaneData { - /// Identifiers of relayers and messages that they have delivered to this lane (ordered by message nonce). - /// - /// This serves as a helper storage item, to allow the source chain to easily pay rewards - /// to the relayers who succesfuly delivered messages to the target chain (inbound lane). - /// - /// It is guaranteed to have at most N entries, where N is configured at the module level. - /// If there are N entries in this vec, then: - /// 1) all incoming messages are rejected if they're missing corresponding `proof-of(outbound-lane.state)`; - /// 2) all incoming messages are rejected if `proof-of(outbound-lane.state).last_delivered_nonce` is - /// equal to `self.last_confirmed_nonce`. - /// Given what is said above, all nonces in this queue are in range: - /// `(self.last_confirmed_nonce; self.last_delivered_nonce()]`. - /// - /// When a relayer sends a single message, both of MessageNonces are the same. - /// When relayer sends messages in a batch, the first arg is the lowest nonce, second arg the highest nonce. - /// Multiple dispatches from the same relayer are allowed. - pub relayers: VecDeque>, - - /// Nonce of the last message that - /// a) has been delivered to the target (this) chain and - /// b) the delivery has been confirmed on the source chain - /// - /// that the target chain knows of. - /// - /// This value is updated indirectly when an `OutboundLane` state of the source - /// chain is received alongside with new messages delivery. - pub last_confirmed_nonce: MessageNonce, -} - -impl Default for InboundLaneData { - fn default() -> Self { - InboundLaneData { - relayers: VecDeque::new(), - last_confirmed_nonce: 0, - } - } -} - -impl InboundLaneData { - /// Returns approximate size of the struct, given number of entries in the `relayers` set and - /// size of each entry. - /// - /// Returns `None` if size overflows `u32` limits. - pub fn encoded_size_hint(relayer_id_encoded_size: u32, relayers_entries: u32, messages_count: u32) -> Option { - let message_nonce_size = 8; - let relayers_entry_size = relayer_id_encoded_size.checked_add(2 * message_nonce_size)?; - let relayers_size = relayers_entries.checked_mul(relayers_entry_size)?; - let dispatch_results_per_byte = 8; - let dispatch_result_size = sp_std::cmp::max(relayers_entries, messages_count / dispatch_results_per_byte); - relayers_size - .checked_add(message_nonce_size) - .and_then(|result| result.checked_add(dispatch_result_size)) - } - - /// Nonce of the last message that has been delivered to this (target) chain. - pub fn last_delivered_nonce(&self) -> MessageNonce { - self.relayers - .back() - .map(|entry| entry.messages.end) - .unwrap_or(self.last_confirmed_nonce) - } -} - -/// Message details, returned by runtime APIs. -#[derive(Clone, Encode, Decode, RuntimeDebug, PartialEq, Eq)] -pub struct MessageDetails { - /// Nonce assigned to the message. - pub nonce: MessageNonce, - /// Message dispatch weight, declared by the submitter. - pub dispatch_weight: Weight, - /// Size of the encoded message. - pub size: u32, - /// Delivery+dispatch fee paid by the message submitter at the source chain. - pub delivery_and_dispatch_fee: OutboundMessageFee, - /// Where the fee for dispatching message is paid? - pub dispatch_fee_payment: DispatchFeePayment, -} - -/// Bit vector of message dispatch results. -pub type DispatchResultsBitVec = BitVec; - -/// Unrewarded relayer entry stored in the inbound lane data. -/// -/// This struct represents a continuous range of messages that have been delivered by the same relayer -/// and whose confirmations are still pending. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] -pub struct UnrewardedRelayer { - /// Identifier of the relayer. - pub relayer: RelayerId, - /// Messages range, delivered by this relayer. - pub messages: DeliveredMessages, -} - -/// Delivered messages with their dispatch result. -#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq)] -pub struct DeliveredMessages { - /// Nonce of the first message that has been delivered (inclusive). - pub begin: MessageNonce, - /// Nonce of the last message that has been delivered (inclusive). - pub end: MessageNonce, - /// Dispatch result (`false`/`true`), returned by the message dispatcher for every - /// message in the `[begin; end]` range. See `dispatch_result` field of the - /// `bp_runtime::messages::MessageDispatchResult` structure for more information. - pub dispatch_results: DispatchResultsBitVec, -} - -impl DeliveredMessages { - /// Create new `DeliveredMessages` struct that confirms delivery of single nonce with given dispatch result. - pub fn new(nonce: MessageNonce, dispatch_result: bool) -> Self { - DeliveredMessages { - begin: nonce, - end: nonce, - dispatch_results: bitvec![Msb0, u8; if dispatch_result { 1 } else { 0 }], - } - } - - /// Note new dispatched message. - pub fn note_dispatched_message(&mut self, dispatch_result: bool) { - self.end += 1; - self.dispatch_results.push(dispatch_result); - } - - /// Returns true if delivered messages contain message with given nonce. - pub fn contains_message(&self, nonce: MessageNonce) -> bool { - (self.begin..=self.end).contains(&nonce) - } - - /// Get dispatch result flag by message nonce. - /// - /// Dispatch result flag must be interpreted using the knowledge of dispatch mechanism - /// at the target chain. See `dispatch_result` field of the - /// `bp_runtime::messages::MessageDispatchResult` structure for more information. - /// - /// Panics if message nonce is not in the `begin..=end` range. Typically you'll first - /// check if message is within the range by calling `contains_message`. - pub fn message_dispatch_result(&self, nonce: MessageNonce) -> bool { - const INVALID_NONCE: &str = "Invalid nonce used to index dispatch_results"; - - let index = nonce.checked_sub(self.begin).expect(INVALID_NONCE) as usize; - *self.dispatch_results.get(index).expect(INVALID_NONCE) - } -} - -/// Gist of `InboundLaneData::relayers` field used by runtime APIs. -#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq)] -pub struct UnrewardedRelayersState { - /// Number of entries in the `InboundLaneData::relayers` set. - pub unrewarded_relayer_entries: MessageNonce, - /// Number of messages in the oldest entry of `InboundLaneData::relayers`. This is the - /// minimal number of reward proofs required to push out this entry from the set. - pub messages_in_oldest_entry: MessageNonce, - /// Total number of messages in the relayers vector. - pub total_messages: MessageNonce, -} - -/// Outbound lane data. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] -pub struct OutboundLaneData { - /// Nonce of oldest message that we haven't yet pruned. May point to not-yet-generated message if - /// all sent messages are already pruned. - pub oldest_unpruned_nonce: MessageNonce, - /// Nonce of latest message, received by bridged chain. - pub latest_received_nonce: MessageNonce, - /// Nonce of latest message, generated by us. - pub latest_generated_nonce: MessageNonce, -} - -impl Default for OutboundLaneData { - fn default() -> Self { - OutboundLaneData { - // it is 1 because we're pruning everything in [oldest_unpruned_nonce; latest_received_nonce] - oldest_unpruned_nonce: 1, - latest_received_nonce: 0, - latest_generated_nonce: 0, - } - } -} - -/// Returns total number of messages in the `InboundLaneData::relayers` vector. -/// -/// Returns `None` if there are more messages that `MessageNonce` may fit (i.e. `MessageNonce + 1`). -pub fn total_unrewarded_messages(relayers: &VecDeque>) -> Option { - match (relayers.front(), relayers.back()) { - (Some(front), Some(back)) => { - if let Some(difference) = back.messages.end.checked_sub(front.messages.begin) { - difference.checked_add(1) - } else { - Some(0) - } - } - _ => Some(0), - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn total_unrewarded_messages_does_not_overflow() { - assert_eq!( - total_unrewarded_messages( - &vec![ - UnrewardedRelayer { - relayer: 1, - messages: DeliveredMessages::new(0, true) - }, - UnrewardedRelayer { - relayer: 2, - messages: DeliveredMessages::new(MessageNonce::MAX, true) - }, - ] - .into_iter() - .collect() - ), - None, - ); - } - - #[test] - fn inbound_lane_data_returns_correct_hint() { - let test_cases = vec![ - // single relayer, multiple messages - (1, 128u8), - // multiple relayers, single message per relayer - (128u8, 128u8), - // several messages per relayer - (13u8, 128u8), - ]; - for (relayer_entries, messages_count) in test_cases { - let expected_size = InboundLaneData::::encoded_size_hint(1, relayer_entries as _, messages_count as _); - let actual_size = InboundLaneData { - relayers: (1u8..=relayer_entries) - .map(|i| { - let mut entry = UnrewardedRelayer { - relayer: i, - messages: DeliveredMessages::new(i as _, true), - }; - entry.messages.dispatch_results = bitvec![ - Msb0, u8; - 1; - (messages_count / relayer_entries) as _ - ]; - entry - }) - .collect(), - last_confirmed_nonce: messages_count as _, - } - .encode() - .len(); - let difference = (expected_size.unwrap() as f64 - actual_size as f64).abs(); - assert!( - difference / (std::cmp::min(actual_size, expected_size.unwrap() as usize) as f64) < 0.1, - "Too large difference between actual ({}) and expected ({:?}) inbound lane data size. Test case: {}+{}", - actual_size, - expected_size, - relayer_entries, - messages_count, - ); - } - } - - #[test] - fn message_dispatch_result_works() { - let delivered_messages = DeliveredMessages { - begin: 100, - end: 150, - dispatch_results: bitvec![Msb0, u8; 1; 151], - }; - - assert!(!delivered_messages.contains_message(99)); - assert!(delivered_messages.contains_message(100)); - assert!(delivered_messages.contains_message(150)); - assert!(!delivered_messages.contains_message(151)); - - assert!(delivered_messages.message_dispatch_result(125)); - } -} diff --git a/bridges/primitives/messages/src/source_chain.rs b/bridges/primitives/messages/src/source_chain.rs deleted file mode 100644 index 392331eda672..000000000000 --- a/bridges/primitives/messages/src/source_chain.rs +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Primitives of messages module, that are used on the source chain. - -use crate::{DeliveredMessages, InboundLaneData, LaneId, MessageNonce, OutboundLaneData}; - -use bp_runtime::Size; -use frame_support::{Parameter, RuntimeDebug}; -use sp_std::{collections::btree_map::BTreeMap, fmt::Debug}; - -/// The sender of the message on the source chain. -pub type Sender = frame_system::RawOrigin; - -/// Relayers rewards, grouped by relayer account id. -pub type RelayersRewards = BTreeMap>; - -/// Single relayer rewards. -#[derive(RuntimeDebug, Default)] -pub struct RelayerRewards { - /// Total rewards that are to be paid to the relayer. - pub reward: Balance, - /// Total number of messages relayed by this relayer. - pub messages: MessageNonce, -} - -/// Target chain API. Used by source chain to verify target chain proofs. -/// -/// All implementations of this trait should only work with finalized data that -/// can't change. Wrong implementation may lead to invalid lane states (i.e. lane -/// that's stuck) and/or processing messages without paying fees. -pub trait TargetHeaderChain { - /// Error type. - type Error: Debug + Into<&'static str>; - - /// Proof that messages have been received by target chain. - type MessagesDeliveryProof: Parameter + Size; - - /// Verify message payload before we accept it. - /// - /// **CAUTION**: this is very important function. Incorrect implementation may lead - /// to stuck lanes and/or relayers loses. - /// - /// The proper implementation must ensure that the delivery-transaction with this - /// payload would (at least) be accepted into target chain transaction pool AND - /// eventually will be successfully 'mined'. The most obvious incorrect implementation - /// example would be implementation for BTC chain that accepts payloads larger than - /// 1MB. BTC nodes aren't accepting transactions that are larger than 1MB, so relayer - /// will be unable to craft valid transaction => this (and all subsequent) messages will - /// never be delivered. - fn verify_message(payload: &Payload) -> Result<(), Self::Error>; - - /// Verify messages delivery proof and return lane && nonce of the latest recevied message. - fn verify_messages_delivery_proof( - proof: Self::MessagesDeliveryProof, - ) -> Result<(LaneId, InboundLaneData), Self::Error>; -} - -/// Lane message verifier. -/// -/// Runtime developer may implement any additional validation logic over message-lane mechanism. -/// E.g. if lanes should have some security (e.g. you can only accept Lane1 messages from -/// Submitter1, Lane2 messages for those who has submitted first message to this lane, disable -/// Lane3 until some block, ...), then it may be built using this verifier. -/// -/// Any fee requirements should also be enforced here. -pub trait LaneMessageVerifier { - /// Error type. - type Error: Debug + Into<&'static str>; - - /// Verify message payload and return Ok(()) if message is valid and allowed to be sent over the lane. - fn verify_message( - submitter: &Sender, - delivery_and_dispatch_fee: &Fee, - lane: &LaneId, - outbound_data: &OutboundLaneData, - payload: &Payload, - ) -> Result<(), Self::Error>; -} - -/// Message delivery payment. It is called as a part of submit-message transaction. Transaction -/// submitter is paying (in source chain tokens/assets) for: -/// -/// 1) submit-message-transaction-fee itself. This fee is not included in the -/// `delivery_and_dispatch_fee` and is witheld by the regular transaction payment mechanism; -/// 2) message-delivery-transaction-fee. It is submitted to the target node by relayer; -/// 3) message-dispatch fee. It is paid by relayer for processing message by target chain; -/// 4) message-receiving-delivery-transaction-fee. It is submitted to the source node -/// by relayer. -/// -/// So to be sure that any non-altruist relayer would agree to deliver message, submitter -/// should set `delivery_and_dispatch_fee` to at least (equialent of): sum of fees from (2) -/// to (4) above, plus some interest for the relayer. -pub trait MessageDeliveryAndDispatchPayment { - /// Error type. - type Error: Debug + Into<&'static str>; - - /// Withhold/write-off delivery_and_dispatch_fee from submitter account to - /// some relayers-fund account. - fn pay_delivery_and_dispatch_fee( - submitter: &Sender, - fee: &Balance, - relayer_fund_account: &AccountId, - ) -> Result<(), Self::Error>; - - /// Pay rewards for delivering messages to the given relayers. - /// - /// The implementation may also choose to pay reward to the `confirmation_relayer`, which is - /// a relayer that has submitted delivery confirmation transaction. - fn pay_relayers_rewards( - confirmation_relayer: &AccountId, - relayers_rewards: RelayersRewards, - relayer_fund_account: &AccountId, - ); - - /// Perform some initialization in externalities-provided environment. - /// - /// For instance you may ensure that particular required accounts or storage items are present. - /// Returns the number of storage reads performed. - fn initialize(_relayer_fund_account: &AccountId) -> usize { - 0 - } -} - -/// Handler for messages delivery confirmation. -#[impl_trait_for_tuples::impl_for_tuples(30)] -pub trait OnDeliveryConfirmed { - /// Called when we receive confirmation that our messages have been delivered to the - /// target chain. The confirmation also has single bit dispatch result for every - /// confirmed message (see `DeliveredMessages` for details). - fn on_messages_delivered(_lane: &LaneId, _messages: &DeliveredMessages) {} -} - -/// Structure that may be used in place of `TargetHeaderChain`, `LaneMessageVerifier` and -/// `MessageDeliveryAndDispatchPayment` on chains, where outbound messages are forbidden. -pub struct ForbidOutboundMessages; - -/// Error message that is used in `ForbidOutboundMessages` implementation. -const ALL_OUTBOUND_MESSAGES_REJECTED: &str = "This chain is configured to reject all outbound messages"; - -impl TargetHeaderChain for ForbidOutboundMessages { - type Error = &'static str; - - type MessagesDeliveryProof = (); - - fn verify_message(_payload: &Payload) -> Result<(), Self::Error> { - Err(ALL_OUTBOUND_MESSAGES_REJECTED) - } - - fn verify_messages_delivery_proof( - _proof: Self::MessagesDeliveryProof, - ) -> Result<(LaneId, InboundLaneData), Self::Error> { - Err(ALL_OUTBOUND_MESSAGES_REJECTED) - } -} - -impl LaneMessageVerifier for ForbidOutboundMessages { - type Error = &'static str; - - fn verify_message( - _submitter: &Sender, - _delivery_and_dispatch_fee: &Fee, - _lane: &LaneId, - _outbound_data: &OutboundLaneData, - _payload: &Payload, - ) -> Result<(), Self::Error> { - Err(ALL_OUTBOUND_MESSAGES_REJECTED) - } -} - -impl MessageDeliveryAndDispatchPayment for ForbidOutboundMessages { - type Error = &'static str; - - fn pay_delivery_and_dispatch_fee( - _submitter: &Sender, - _fee: &Balance, - _relayer_fund_account: &AccountId, - ) -> Result<(), Self::Error> { - Err(ALL_OUTBOUND_MESSAGES_REJECTED) - } - - fn pay_relayers_rewards( - _confirmation_relayer: &AccountId, - _relayers_rewards: RelayersRewards, - _relayer_fund_account: &AccountId, - ) { - } -} diff --git a/bridges/primitives/polkadot-core/Cargo.toml b/bridges/primitives/polkadot-core/Cargo.toml deleted file mode 100644 index 995f948e5d47..000000000000 --- a/bridges/primitives/polkadot-core/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "bp-polkadot-core" -description = "Primitives of Polkadot-like runtime." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -# Bridge Dependencies - -bp-messages = { path = "../messages", default-features = false } -bp-runtime = { path = "../runtime", default-features = false } - -# Substrate Based Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[dev-dependencies] -hex = "0.4" - -[features] -default = ["std"] -std = [ - "bp-messages/std", - "bp-runtime/std", - "frame-support/std", - "frame-system/std", - "parity-scale-codec/std", - "sp-api/std", - "sp-core/std", - "sp-runtime/std", - "sp-std/std", - "sp-version/std", -] diff --git a/bridges/primitives/polkadot-core/src/lib.rs b/bridges/primitives/polkadot-core/src/lib.rs deleted file mode 100644 index a1619b27bcf4..000000000000 --- a/bridges/primitives/polkadot-core/src/lib.rs +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] - -use bp_messages::MessageNonce; -use bp_runtime::Chain; -use frame_support::{ - dispatch::Dispatchable, - parameter_types, - weights::{ - constants::{BlockExecutionWeight, WEIGHT_PER_SECOND}, - DispatchClass, Weight, - }, - Blake2_128Concat, RuntimeDebug, StorageHasher, Twox128, -}; -use frame_system::limits; -use parity_scale_codec::Compact; -use sp_core::Hasher as HasherT; -use sp_runtime::{ - generic, - traits::{BlakeTwo256, IdentifyAccount, Verify}, - MultiAddress, MultiSignature, OpaqueExtrinsic, -}; -use sp_std::prelude::Vec; - -// Re-export's to avoid extra substrate dependencies in chain-specific crates. -pub use frame_support::{weights::constants::ExtrinsicBaseWeight, Parameter}; -pub use sp_runtime::{traits::Convert, Perbill}; - -/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at -/// Polkadot-like chain. This mostly depends on number of entries in the storage trie. -/// Some reserve is reserved to account future chain growth. -/// -/// To compute this value, we've synced Kusama chain blocks [0; 6545733] to see if there were -/// any significant changes of the storage proof size (NO): -/// -/// - at block 3072 the storage proof size overhead was 579 bytes; -/// - at block 2479616 it was 578 bytes; -/// - at block 4118528 it was 711 bytes; -/// - at block 6540800 it was 779 bytes. -/// -/// The number of storage entries at the block 6546170 was 351207 and number of trie nodes in -/// the storage proof was 5 (log(16, 351207) ~ 4.6). -/// -/// So the assumption is that the storage proof size overhead won't be larger than 1024 in the -/// nearest future. If it'll ever break this barrier, then we'll need to update this constant -/// at next runtime upgrade. -pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; - -/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. -/// -/// All polkadot-like chains are using same crypto. -pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; - -/// All Polkadot-like chains allow normal extrinsics to fill block up to 75%. -/// -/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. -const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); - -/// All Polkadot-like chains allow 2 seconds of compute with a 6 second average block time. -/// -/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. -pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; - -/// All Polkadot-like chains assume that an on-initialize consumes 1% of the weight on average, -/// hence a single extrinsic will not be allowed to consume more than `AvailableBlockRatio - 1%`. -/// -/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. -pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(1); - -parameter_types! { - /// All Polkadot-like chains have maximal block size set to 5MB. - /// - /// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. - pub BlockLength: limits::BlockLength = limits::BlockLength::max_with_normal_ratio( - 5 * 1024 * 1024, - NORMAL_DISPATCH_RATIO, - ); - /// All Polkadot-like chains have the same block weights. - /// - /// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. - pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() - .base_block(BlockExecutionWeight::get()) - .for_class(DispatchClass::all(), |weights| { - weights.base_extrinsic = ExtrinsicBaseWeight::get(); - }) - .for_class(DispatchClass::Normal, |weights| { - weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - .for_class(DispatchClass::Operational, |weights| { - weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); - // Operational transactions have an extra reserved space, so that they - // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`. - weights.reserved = Some( - MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT, - ); - }) - .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) - .build_or_panic(); -} - -/// Get the maximum weight (compute time) that a Normal extrinsic on the Polkadot-like chain can use. -pub fn max_extrinsic_weight() -> Weight { - BlockWeights::get() - .get(DispatchClass::Normal) - .max_extrinsic - .unwrap_or(Weight::MAX) -} - -/// Get the maximum length in bytes that a Normal extrinsic on the Polkadot-like chain requires. -pub fn max_extrinsic_size() -> u32 { - *BlockLength::get().max.get(DispatchClass::Normal) -} - -// TODO [#78] may need to be updated after https://github.com/paritytech/parity-bridges-common/issues/78 -/// Maximal number of messages in single delivery transaction. -pub const MAX_MESSAGES_IN_DELIVERY_TRANSACTION: MessageNonce = 128; - -/// Maximal number of unrewarded relayer entries at inbound lane. -pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 128; - -// TODO [#438] should be selected keeping in mind: -// finality delay on both chains + reward payout cost + messages throughput. -/// Maximal number of unconfirmed messages at inbound lane. -pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 8192; - -/// Re-export `time_units` to make usage easier. -pub use time_units::*; - -/// Human readable time units defined in terms of number of blocks. -pub mod time_units { - use super::BlockNumber; - - pub const MILLISECS_PER_BLOCK: u64 = 6000; - pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; - - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; -} - -/// Block number type used in Polkadot-like chains. -pub type BlockNumber = u32; - -/// Hash type used in Polkadot-like chains. -pub type Hash = ::Out; - -/// Account Index (a.k.a. nonce). -pub type Index = u32; - -/// Hashing type. -pub type Hashing = BlakeTwo256; - -/// The type of an object that can produce hashes on Polkadot-like chains. -pub type Hasher = BlakeTwo256; - -/// The header type used by Polkadot-like chains. -pub type Header = generic::Header; - -/// Signature type used by Polkadot-like chains. -pub type Signature = MultiSignature; - -/// Public key of account on Polkadot-like chains. -pub type AccountPublic = ::Signer; - -/// Id of account on Polkadot-like chains. -pub type AccountId = ::AccountId; - -/// Index of a transaction on the Polkadot-like chains. -pub type Nonce = u32; - -/// Block type of Polkadot-like chains. -pub type Block = generic::Block; - -/// Polkadot-like block signed with a Justification. -pub type SignedBlock = generic::SignedBlock; - -/// The balance of an account on Polkadot-like chain. -pub type Balance = u128; - -/// Unchecked Extrinsic type. -pub type UncheckedExtrinsic = - generic::UncheckedExtrinsic, Call, Signature, SignedExtensions>; - -/// A type of the data encoded as part of the transaction. -pub type SignedExtra = ( - (), - (), - (), - sp_runtime::generic::Era, - Compact, - (), - Compact, -); - -/// Parameters which are part of the payload used to produce transaction signature, -/// but don't end up in the transaction itself (i.e. inherent part of the runtime). -pub type AdditionalSigned = (u32, u32, Hash, Hash, (), (), ()); - -/// A simplified version of signed extensions meant for producing signed transactions -/// and signed payload in the client code. -#[derive(PartialEq, Eq, Clone, RuntimeDebug)] -pub struct SignedExtensions { - encode_payload: SignedExtra, - additional_signed: AdditionalSigned, - _data: sp_std::marker::PhantomData, -} - -impl parity_scale_codec::Encode for SignedExtensions { - fn using_encoded R>(&self, f: F) -> R { - self.encode_payload.using_encoded(f) - } -} - -impl parity_scale_codec::Decode for SignedExtensions { - fn decode(_input: &mut I) -> Result { - unimplemented!("SignedExtensions are never meant to be decoded, they are only used to create transaction"); - } -} - -impl SignedExtensions { - pub fn new( - version: sp_version::RuntimeVersion, - era: sp_runtime::generic::Era, - genesis_hash: Hash, - nonce: Nonce, - tip: Balance, - ) -> Self { - Self { - encode_payload: ( - (), // spec version - (), // tx version - (), // genesis - era, // era - nonce.into(), // nonce (compact encoding) - (), // Check weight - tip.into(), // transaction payment / tip (compact encoding) - ), - additional_signed: ( - version.spec_version, - version.transaction_version, - genesis_hash, - genesis_hash, - (), - (), - (), - ), - _data: Default::default(), - } - } -} - -impl sp_runtime::traits::SignedExtension for SignedExtensions -where - Call: parity_scale_codec::Codec + sp_std::fmt::Debug + Sync + Send + Clone + Eq + PartialEq, - Call: Dispatchable, -{ - const IDENTIFIER: &'static str = "Not needed."; - - type AccountId = AccountId; - type Call = Call; - type AdditionalSigned = AdditionalSigned; - type Pre = (); - - fn additional_signed(&self) -> Result { - Ok(self.additional_signed) - } -} - -/// Polkadot-like chain. -#[derive(RuntimeDebug)] -pub struct PolkadotLike; - -impl Chain for PolkadotLike { - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hasher = Hasher; - type Header = Header; -} - -/// Convert a 256-bit hash into an AccountId. -pub struct AccountIdConverter; - -impl Convert for AccountIdConverter { - fn convert(hash: sp_core::H256) -> AccountId { - hash.to_fixed_bytes().into() - } -} - -/// Return a storage key for account data. -/// -/// This is based on FRAME storage-generation code from Substrate: -/// https://github.com/paritytech/substrate/blob/c939ceba381b6313462d47334f775e128ea4e95d/frame/support/src/storage/generator/map.rs#L74 -/// The equivalent command to invoke in case full `Runtime` is known is this: -/// `let key = frame_system::Account::::storage_map_final_key(&account_id);` -pub fn account_info_storage_key(id: &AccountId) -> Vec { - let module_prefix_hashed = Twox128::hash(b"System"); - let storage_prefix_hashed = Twox128::hash(b"Account"); - let key_hashed = parity_scale_codec::Encode::using_encoded(id, Blake2_128Concat::hash); - - let mut final_key = Vec::with_capacity(module_prefix_hashed.len() + storage_prefix_hashed.len() + key_hashed.len()); - - final_key.extend_from_slice(&module_prefix_hashed[..]); - final_key.extend_from_slice(&storage_prefix_hashed[..]); - final_key.extend_from_slice(&key_hashed); - - final_key -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_runtime::codec::Encode; - - #[test] - fn maximal_encoded_account_id_size_is_correct() { - let actual_size = AccountId::default().encode().len(); - assert!( - actual_size <= MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize, - "Actual size of encoded account id for Polkadot-like chains ({}) is larger than expected {}", - actual_size, - MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, - ); - } - - #[test] - fn should_generate_storage_key() { - let acc = [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, - ] - .into(); - let key = account_info_storage_key(&acc); - assert_eq!(hex::encode(key), "26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92dccd599abfe1920a1cff8a7358231430102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"); - } -} diff --git a/bridges/primitives/runtime/Cargo.toml b/bridges/primitives/runtime/Cargo.toml deleted file mode 100644 index 17fa96b2c908..000000000000 --- a/bridges/primitives/runtime/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "bp-runtime" -description = "Primitives that may be used at (bridges) runtime level." -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -hash-db = { version = "0.15.2", default-features = false } -num-traits = { version = "0.2", default-features = false } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } - - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "hash-db/std", - "num-traits/std", - "sp-core/std", - "sp-io/std", - "sp-runtime/std", - "sp-std/std", - "sp-state-machine/std", - "sp-trie/std", -] diff --git a/bridges/primitives/runtime/src/chain.rs b/bridges/primitives/runtime/src/chain.rs deleted file mode 100644 index cb19c6e72681..000000000000 --- a/bridges/primitives/runtime/src/chain.rs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use frame_support::Parameter; -use num_traits::AsPrimitive; -use sp_runtime::traits::{ - AtLeast32BitUnsigned, Hash as HashT, Header as HeaderT, MaybeDisplay, MaybeMallocSizeOf, MaybeSerializeDeserialize, - Member, SimpleBitOps, -}; -use sp_std::str::FromStr; - -/// Minimal Substrate-based chain representation that may be used from no_std environment. -pub trait Chain: Send + Sync + 'static { - /// A type that fulfills the abstract idea of what a Substrate block number is. - // Constraits come from the associated Number type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Number - // - // Note that the `AsPrimitive` trait is required by the GRANDPA justification - // verifier, and is not usually part of a Substrate Header's Number type. - type BlockNumber: Parameter - + Member - + MaybeSerializeDeserialize - + sp_std::hash::Hash - + Copy - + Default - + MaybeDisplay - + AtLeast32BitUnsigned - + FromStr - + MaybeMallocSizeOf - + AsPrimitive - + Default; - - /// A type that fulfills the abstract idea of what a Substrate hash is. - // Constraits come from the associated Hash type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hash - type Hash: Parameter - + Member - + MaybeSerializeDeserialize - + sp_std::hash::Hash - + Ord - + Copy - + MaybeDisplay - + Default - + SimpleBitOps - + AsRef<[u8]> - + AsMut<[u8]> - + MaybeMallocSizeOf; - - /// A type that fulfills the abstract idea of what a Substrate hasher (a type - /// that produces hashes) is. - // Constraits come from the associated Hashing type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hashing - type Hasher: HashT; - - /// A type that fulfills the abstract idea of what a Substrate header is. - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html - type Header: Parameter + HeaderT + MaybeSerializeDeserialize; -} - -/// Block number used by the chain. -pub type BlockNumberOf = ::BlockNumber; - -/// Hash type used by the chain. -pub type HashOf = ::Hash; - -/// Hasher type used by the chain. -pub type HasherOf = ::Hasher; - -/// Header type used by the chain. -pub type HeaderOf = ::Header; diff --git a/bridges/primitives/runtime/src/lib.rs b/bridges/primitives/runtime/src/lib.rs deleted file mode 100644 index a4bb400a93c4..000000000000 --- a/bridges/primitives/runtime/src/lib.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Primitives that may be used at (bridges) runtime level. - -#![cfg_attr(not(feature = "std"), no_std)] - -use codec::Encode; -use sp_core::hash::H256; -use sp_io::hashing::blake2_256; -use sp_std::convert::TryFrom; - -pub use chain::{BlockNumberOf, Chain, HashOf, HasherOf, HeaderOf}; -pub use storage_proof::{Error as StorageProofError, StorageProofChecker}; - -#[cfg(feature = "std")] -pub use storage_proof::craft_valid_storage_proof; - -pub mod messages; - -mod chain; -mod storage_proof; - -/// Use this when something must be shared among all instances. -pub const NO_INSTANCE_ID: ChainId = [0, 0, 0, 0]; - -/// Bridge-with-Rialto instance id. -pub const RIALTO_CHAIN_ID: ChainId = *b"rlto"; - -/// Bridge-with-Millau instance id. -pub const MILLAU_CHAIN_ID: ChainId = *b"mlau"; - -/// Bridge-with-Polkadot instance id. -pub const POLKADOT_CHAIN_ID: ChainId = *b"pdot"; - -/// Bridge-with-Kusama instance id. -pub const KUSAMA_CHAIN_ID: ChainId = *b"ksma"; - -/// Bridge-with-Rococo instance id. -pub const ROCOCO_CHAIN_ID: ChainId = *b"roco"; - -/// Bridge-with-Wococo instance id. -pub const WOCOCO_CHAIN_ID: ChainId = *b"woco"; - -/// Call-dispatch module prefix. -pub const CALL_DISPATCH_MODULE_PREFIX: &[u8] = b"pallet-bridge/dispatch"; - -/// A unique prefix for entropy when generating cross-chain account IDs. -pub const ACCOUNT_DERIVATION_PREFIX: &[u8] = b"pallet-bridge/account-derivation/account"; - -/// A unique prefix for entropy when generating a cross-chain account ID for the Root account. -pub const ROOT_ACCOUNT_DERIVATION_PREFIX: &[u8] = b"pallet-bridge/account-derivation/root"; - -/// Unique identifier of the chain. -/// -/// In addition to its main function (identifying the chain), this type may also be used to -/// identify module instance. We have a bunch of pallets that may be used in different bridges. E.g. -/// messages pallet may be deployed twice in the same runtime to bridge ThisChain with Chain1 and Chain2. -/// Sometimes we need to be able to identify deployed instance dynamically. This type may be used for that. -pub type ChainId = [u8; 4]; - -/// Type of accounts on the source chain. -pub enum SourceAccount { - /// An account that belongs to Root (privileged origin). - Root, - /// A non-priviledged account. - /// - /// The embedded account ID may or may not have a private key depending on the "owner" of the - /// account (private key, pallet, proxy, etc.). - Account(T), -} - -/// Derive an account ID from a foreign account ID. -/// -/// This function returns an encoded Blake2 hash. It is the responsibility of the caller to ensure -/// this can be successfully decoded into an AccountId. -/// -/// The `bridge_id` is used to provide extra entropy when producing account IDs. This helps prevent -/// AccountId collisions between different bridges on a single target chain. -/// -/// Note: If the same `bridge_id` is used across different chains (for example, if one source chain -/// is bridged to multiple target chains), then all the derived accounts would be the same across -/// the different chains. This could negatively impact users' privacy across chains. -pub fn derive_account_id(bridge_id: ChainId, id: SourceAccount) -> H256 -where - AccountId: Encode, -{ - match id { - SourceAccount::Root => (ROOT_ACCOUNT_DERIVATION_PREFIX, bridge_id).using_encoded(blake2_256), - SourceAccount::Account(id) => (ACCOUNT_DERIVATION_PREFIX, bridge_id, id).using_encoded(blake2_256), - } - .into() -} - -/// Derive the account ID of the shared relayer fund account. -/// -/// This account is used to collect fees for relayers that are passing messages across the bridge. -/// -/// The account ID can be the same across different instances of `pallet-bridge-messages` if the same -/// `bridge_id` is used. -pub fn derive_relayer_fund_account_id(bridge_id: ChainId) -> H256 { - ("relayer-fund-account", bridge_id).using_encoded(blake2_256).into() -} - -/// Anything that has size. -pub trait Size { - /// Return approximate size of this object (in bytes). - /// - /// This function should be lightweight. The result should not necessary be absolutely - /// accurate. - fn size_hint(&self) -> u32; -} - -impl Size for () { - fn size_hint(&self) -> u32 { - 0 - } -} - -/// Pre-computed size. -pub struct PreComputedSize(pub usize); - -impl Size for PreComputedSize { - fn size_hint(&self) -> u32 { - u32::try_from(self.0).unwrap_or(u32::MAX) - } -} diff --git a/bridges/primitives/runtime/src/messages.rs b/bridges/primitives/runtime/src/messages.rs deleted file mode 100644 index f6e04619c723..000000000000 --- a/bridges/primitives/runtime/src/messages.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Primitives that may be used by different message delivery and dispatch mechanisms. - -use codec::{Decode, Encode}; -use frame_support::{weights::Weight, RuntimeDebug}; - -/// Where message dispatch fee is paid? -#[derive(Encode, Decode, RuntimeDebug, Clone, Copy, PartialEq, Eq)] -pub enum DispatchFeePayment { - /// The dispacth fee is paid at the source chain. - AtSourceChain, - /// The dispatch fee is paid at the target chain. - /// - /// The fee will be paid right before the message is dispatched. So in case of any other - /// issues (like invalid call encoding, invalid signature, ...) the dispatch module won't - /// do any direct transfers. Instead, it'll return fee related to this message dispatch to the - /// relayer. - AtTargetChain, -} - -/// Message dispatch result. -#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq)] -pub struct MessageDispatchResult { - /// Dispatch result flag. This flag is relayed back to the source chain and, generally - /// speaking, may bring any (that fits in single bit) information from the dispatcher at - /// the target chain to the message submitter at the source chain. If you're using immediate - /// call dispatcher, then it'll be result of the dispatch - `true` if dispatch has succeeded - /// and `false` otherwise. - pub dispatch_result: bool, - /// Unspent dispatch weight. This weight that will be deducted from total delivery transaction - /// weight, thus reducing the transaction cost. This shall not be zero in (at least) two cases: - /// - /// 1) if message has been dispatched successfully, but post-dispatch weight is less than - /// the weight, declared by the message sender; - /// 2) if message has not been dispatched at all. - pub unspent_weight: Weight, - /// Whether the message dispatch fee has been paid during dispatch. This will be true if your - /// configuration supports pay-dispatch-fee-at-target-chain option and message sender has enabled - /// this option. - pub dispatch_fee_paid_during_dispatch: bool, -} diff --git a/bridges/primitives/test-utils/Cargo.toml b/bridges/primitives/test-utils/Cargo.toml deleted file mode 100644 index fe6a68087873..000000000000 --- a/bridges/primitives/test-utils/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "bp-test-utils" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -bp-header-chain = { path = "../header-chain", default-features = false } -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] } -finality-grandpa = { version = "0.14.1", default-features = false } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "bp-header-chain/std", - "codec/std", - "ed25519-dalek/std", - "finality-grandpa/std", - "sp-application-crypto/std", - "sp-finality-grandpa/std", - "sp-runtime/std", - "sp-std/std", -] diff --git a/bridges/primitives/test-utils/src/lib.rs b/bridges/primitives/test-utils/src/lib.rs deleted file mode 100644 index 64109754086c..000000000000 --- a/bridges/primitives/test-utils/src/lib.rs +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Utilities for testing runtime code. - -#![cfg_attr(not(feature = "std"), no_std)] - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use sp_application_crypto::TryFrom; -use sp_finality_grandpa::{AuthorityId, AuthorityWeight}; -use sp_finality_grandpa::{AuthoritySignature, SetId}; -use sp_runtime::traits::{Header as HeaderT, One, Zero}; -use sp_std::prelude::*; - -// Re-export all our test account utilities -pub use keyring::*; - -mod keyring; - -pub const TEST_GRANDPA_ROUND: u64 = 1; -pub const TEST_GRANDPA_SET_ID: SetId = 1; - -/// Configuration parameters when generating test GRANDPA justifications. -#[derive(Clone)] -pub struct JustificationGeneratorParams { - /// The header which we want to finalize. - pub header: H, - /// The GRANDPA round number for the current authority set. - pub round: u64, - /// The current authority set ID. - pub set_id: SetId, - /// The current GRANDPA authority set. - /// - /// The size of the set will determine the number of pre-commits in our justification. - pub authorities: Vec<(Account, AuthorityWeight)>, - /// The total number of precommit ancestors in the `votes_ancestries` field our justification. - /// - /// These may be distributed among many different forks. - pub ancestors: u32, - /// The number of forks. - /// - /// Useful for creating a "worst-case" scenario in which each authority is on its own fork. - pub forks: u32, -} - -impl Default for JustificationGeneratorParams { - fn default() -> Self { - Self { - header: test_header(One::one()), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: test_keyring(), - ancestors: 2, - forks: 1, - } - } -} - -/// Make a valid GRANDPA justification with sensible defaults -pub fn make_default_justification(header: &H) -> GrandpaJustification { - let params = JustificationGeneratorParams:: { - header: header.clone(), - ..Default::default() - }; - - make_justification_for_header(params) -} - -/// Generate justifications in a way where we are able to tune the number of pre-commits -/// and vote ancestries which are included in the justification. -/// -/// This is useful for benchmarkings where we want to generate valid justifications with -/// a specific number of pre-commits (tuned with the number of "authorities") and/or a specific -/// number of vote ancestries (tuned with the "votes" parameter). -/// -/// Note: This needs at least three authorities or else the verifier will complain about -/// being given an invalid commit. -pub fn make_justification_for_header(params: JustificationGeneratorParams) -> GrandpaJustification { - let JustificationGeneratorParams { - header, - round, - set_id, - authorities, - mut ancestors, - forks, - } = params; - let (target_hash, target_number) = (header.hash(), *header.number()); - let mut votes_ancestries = vec![]; - let mut precommits = vec![]; - - assert!(forks != 0, "Need at least one fork to have a chain.."); - assert!( - forks as usize <= authorities.len(), - "If we have more forks than authorities we can't create valid pre-commits for all the forks." - ); - - // Roughly, how many vote ancestries do we want per fork - let target_depth = (ancestors + forks - 1) / forks; - - let mut unsigned_precommits = vec![]; - for i in 0..forks { - let depth = if ancestors >= target_depth { - ancestors -= target_depth; - target_depth - } else { - ancestors - }; - - // Note: Adding 1 to account for the target header - let chain = generate_chain(i as u32, depth + 1, &header); - - // We don't include our finality target header in the vote ancestries - for child in &chain[1..] { - votes_ancestries.push(child.clone()); - } - - // The header we need to use when pre-commiting is the one at the highest height - // on our chain. - let precommit_candidate = chain.last().map(|h| (h.hash(), *h.number())).unwrap(); - unsigned_precommits.push(precommit_candidate); - } - - for (i, (id, _weight)) in authorities.iter().enumerate() { - // Assign authorities to sign pre-commits in a round-robin fashion - let target = unsigned_precommits[i % forks as usize]; - let precommit = signed_precommit::(id, target, round, set_id); - - precommits.push(precommit); - } - - GrandpaJustification { - round, - commit: finality_grandpa::Commit { - target_hash, - target_number, - precommits, - }, - votes_ancestries, - } -} - -fn generate_chain(fork_id: u32, depth: u32, ancestor: &H) -> Vec { - let mut headers = vec![ancestor.clone()]; - - for i in 1..depth { - let parent = &headers[(i - 1) as usize]; - let (hash, num) = (parent.hash(), *parent.number()); - - let mut header = test_header::(num + One::one()); - header.set_parent_hash(hash); - - // Modifying the digest so headers at the same height but in different forks have different - // hashes - header - .digest_mut() - .logs - .push(sp_runtime::DigestItem::Other(fork_id.encode())); - - headers.push(header); - } - - headers -} - -/// Create signed precommit with given target. -pub fn signed_precommit( - signer: &Account, - target: (H::Hash, H::Number), - round: u64, - set_id: SetId, -) -> finality_grandpa::SignedPrecommit { - let precommit = finality_grandpa::Precommit { - target_hash: target.0, - target_number: target.1, - }; - - let encoded = - sp_finality_grandpa::localized_payload(round, set_id, &finality_grandpa::Message::Precommit(precommit.clone())); - - let signature = signer.sign(&encoded); - let raw_signature: Vec = signature.to_bytes().into(); - - // Need to wrap our signature and id types that they match what our `SignedPrecommit` is expecting - let signature = AuthoritySignature::try_from(raw_signature).expect( - "We know our Keypair is good, - so our signature must also be good.", - ); - let id = (*signer).into(); - - finality_grandpa::SignedPrecommit { - precommit, - signature, - id, - } -} - -/// Get a header for testing. -/// -/// The correct parent hash will be used if given a non-zero header. -pub fn test_header(number: H::Number) -> H { - let default = |num| { - H::new( - num, - Default::default(), - Default::default(), - Default::default(), - Default::default(), - ) - }; - - let mut header = default(number); - if number != Zero::zero() { - let parent_hash = default(number - One::one()).hash(); - header.set_parent_hash(parent_hash); - } - - header -} - -/// Convenience function for generating a Header ID at a given block number. -pub fn header_id(index: u8) -> (H::Hash, H::Number) { - (test_header::(index.into()).hash(), index.into()) -} diff --git a/bridges/relays/bin-ethereum/Cargo.toml b/bridges/relays/bin-ethereum/Cargo.toml deleted file mode 100644 index efd9c0194b28..000000000000 --- a/bridges/relays/bin-ethereum/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "ethereum-poa-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -ansi_term = "0.12" -async-std = "1.9.0" -async-trait = "0.1.42" -clap = { version = "2.33.3", features = ["yaml"] } -codec = { package = "parity-scale-codec", version = "2.0.0" } -env_logger = "0.8.3" -ethabi = { git = "https://github.com/paritytech/ethabi", branch = "td-eth-types-11" } -ethabi-contract = { git = "https://github.com/paritytech/ethabi", branch = "td-eth-types-11" } -ethabi-derive = { git = "https://github.com/paritytech/ethabi", branch = "td-eth-types-11" } -futures = "0.3.12" -hex = "0.4" -hex-literal = "0.3" -libsecp256k1 = { version = "0.3.4", default-features = false, features = ["hmac"] } -log = "0.4.14" -num-traits = "0.2" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0.64" -time = "0.2" - -# Bridge dependencies - -bp-currency-exchange = { path = "../../primitives/currency-exchange" } -bp-eth-poa = { path = "../../primitives/ethereum-poa" } -exchange-relay = { path = "../exchange" } -headers-relay = { path = "../headers" } -messages-relay = { path = "../messages" } -relay-ethereum-client = { path = "../client-ethereum" } -relay-rialto-client = { path = "../client-rialto" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } -rialto-runtime = { path = "../../bin/rialto/runtime" } - -# Substrate Dependencies - -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/bin-ethereum/README.md b/bridges/relays/bin-ethereum/README.md deleted file mode 100644 index 9fe2f623fd05..000000000000 --- a/bridges/relays/bin-ethereum/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# PoA <> Substrate Bridge - -**DISCLAIMER:** *we recommend not using the bridge in "production" (to bridge significant amounts) just yet. -it's missing a code audit and should still be considered alpha. we can't rule out that there are bugs that might result in loss of the bridged amounts. -we'll update this disclaimer once that changes* - -These docs are very incomplete yet. Describe high-level goals here in the (near) future. diff --git a/bridges/relays/bin-ethereum/res/substrate-bridge-abi.json b/bridges/relays/bin-ethereum/res/substrate-bridge-abi.json deleted file mode 100644 index b7d7b4b9152c..000000000000 --- a/bridges/relays/bin-ethereum/res/substrate-bridge-abi.json +++ /dev/null @@ -1,167 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "bytes", - "name": "rawInitialHeader", - "type": "bytes" - }, - { - "internalType": "uint64", - "name": "initialValidatorsSetId", - "type": "uint64" - }, - { - "internalType": "bytes", - "name": "initialValidatorsSet", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "stateMutability": "nonpayable", - "type": "fallback" - }, - { - "inputs": [], - "name": "bestKnownHeader", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "finalityTargetNumber", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "finalityTargetHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "rawFinalityProof", - "type": "bytes" - } - ], - "name": "importFinalityProof", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "rawHeader1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader3", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader4", - "type": "bytes" - } - ], - "name": "importHeaders", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "incompleteHeaders", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - }, - { - "internalType": "bytes32[]", - "name": "", - "type": "bytes32[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "rawHeader1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader3", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "rawHeader4", - "type": "bytes" - } - ], - "name": "isIncompleteHeaders", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "headerHash", - "type": "bytes32" - } - ], - "name": "isKnownHeader", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/bridges/relays/bin-ethereum/res/substrate-bridge-bytecode.hex b/bridges/relays/bin-ethereum/res/substrate-bridge-bytecode.hex deleted file mode 100644 index 6dd6a33046f6..000000000000 --- a/bridges/relays/bin-ethereum/res/substrate-bridge-bytecode.hex +++ /dev/null @@ -1 +0,0 @@ -60806040523480156200001157600080fd5b5060405162001af838038062001af8833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040818152602083015192018051929491939192846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b50604052505050620001ae620003d5565b620001c2846001600160e01b03620002dc16565b805160008181556002918255604080840180516001908155825160e08101845281815260208088015181830190815293518286019081526080808a0151606085019081526001600160401b038e169185019190915260a0840188905260c084018890528951885260078352959096208251815460ff191690151517815593519284019290925593519482019490945590518051949550919390926200026f9260038501929101906200040a565b506080820151600482810180546001600160401b03199081166001600160401b039485161790915560a0850151600585015560c09094015160069093019290925560038054909316908616179091558251620002d1919060208501906200040a565b5050505050620004af565b620002e6620003d5565b60008060008060008651602088016040516020810160208101602081016020810160a08588886010600019fa6200031c57600080fd5b84519b5083519a50825199508151985080519750505050505050506060816001600160401b03811180156200035057600080fd5b506040519080825280601f01601f1916602001820160405280156200037c576020820181803683370190505b5090508115620003a85787516020890160208301848184846011600019fa620003a457600080fd5b5050505b6040805160a081018252968752602087019590955293850192909252606084015250608082015292915050565b6040518060a0016040528060008019168152602001600080191681526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200044d57805160ff19168380011785556200047d565b828001600101855582156200047d579182015b828111156200047d57825182559160200191906001019062000460565b506200048b9291506200048f565b5090565b620004ac91905b808211156200048b576000815560010162000496565b90565b61163980620004bf6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063374c2c26146100675780636a742c0914610108578063871ebe181461033d578063d96a2deb1461036e578063e8ffbe841461038f578063fae71ae8146105d4575b600080fd5b61006f610684565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100b357818101518382015260200161009b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156100f25781810151838201526020016100da565b5050505090500194505050505060405180910390f35b61033b6004803603608081101561011e57600080fd5b810190602081018135600160201b81111561013857600080fd5b82018360208201111561014a57600080fd5b803590602001918460018302840111600160201b8311171561016b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101bd57600080fd5b8201836020820111156101cf57600080fd5b803590602001918460018302840111600160201b831117156101f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561024257600080fd5b82018360208201111561025457600080fd5b803590602001918460018302840111600160201b8311171561027557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460018302840111600160201b831117156102fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610789945050505050565b005b61035a6004803603602081101561035357600080fd5b50356107e5565b604080519115158252519081900360200190f35b6103766107fd565b6040805192835260208301919091528051918290030190f35b6105c2600480360360808110156103a557600080fd5b810190602081018135600160201b8111156103bf57600080fd5b8201836020820111156103d157600080fd5b803590602001918460018302840111600160201b831117156103f257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561044457600080fd5b82018360208201111561045657600080fd5b803590602001918460018302840111600160201b8311171561047757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104c957600080fd5b8201836020820111156104db57600080fd5b803590602001918460018302840111600160201b831117156104fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610815945050505050565b60408051918252519081900360200190f35b61033b600480360360608110156105ea57600080fd5b813591602081013591810190606081016040820135600160201b81111561061057600080fd5b82018360208201111561062257600080fd5b803590602001918460018302840111600160201b8311171561064357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b28945050505050565b6005546060908190818167ffffffffffffffff811180156106a457600080fd5b506040519080825280602002602001820160405280156106ce578160200160208202803683370190505b50905060005b828110156107295760076000600583815481106106ed57fe5b906000526020600020015481526020019081526020016000206002015482828151811061071657fe5b60209081029190910101526001016106d4565b508060058080548060200260200160405190810160405280929190818152602001828054801561077857602002820191906000526020600020905b815481526020019060010190808311610764575b505050505090509350935050509091565b61079284610d8d565b61079b576107df565b8251156107b4576107ab83610d8d565b6107b4576107df565b8151156107cd576107c482610d8d565b6107cd576107df565b8051156107df576107dd81610d8d565b505b50505050565b60008181526007602052604090205460ff165b919050565b60008054808252600760205260409091206002015491565b600061081f611454565b61082886610f0e565b9050610832611489565b602082810151600090815260078252604090819020815160e081018352815460ff1615158152600180830154828601526002808401548386015260038401805486516101009482161594909402600019011691909104601f81018790048702830187019095528482529194929360608601939192918301828280156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b5050509183525050600482015467ffffffffffffffff1660208201526005820154604082015260069091015460609091015290506000806109398484611001565b945050505091506000600681111561094d57fe5b82600681111561095957fe5b146109ab576040805162461bcd60e51b815260206004820152601860248201527f43616e277420696d706f727420616e7920686561646572730000000000000000604482015290519081900360640190fd5b83604001518114156109c4576001945050505050610b20565b87516109d7576000945050505050610b20565b6109df611489565b6109e98585611171565b90506109f3611454565b6109fc8a610f0e565b90506000610a0a8284611001565b9450505050508160400151811415610a2c576002975050505050505050610b20565b8951610a42576000975050505050505050610b20565b610a4a611489565b610a548388611171565b9050610a5e611454565b610a678c610f0e565b90506000610a758284611001565b9450505050508160400151811415610a9a5760039a5050505050505050505050610b20565b8b51610ab35760009a5050505050505050505050610b20565b610abb611489565b610ac5838b611171565b9050610acf611454565b610ad88e610f0e565b90506000610ae68284611001565b9450505050508160400151811415610b0e5760049d5050505050505050505050505050610b20565b60009d50505050505050505050505050505b949350505050565b6000828152600760205260409020600201548314610b775760405162461bcd60e51b815260040180806020018281038252602f8152602001806115d5602f913960400191505060405180910390fd5b60028054600354600480546040805160206101006001851615026000190190931696909604601f81018390048302870183019091528086529394600094610c28948a948a9467ffffffffffffffff90921693929091830182828015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b820191906000526020600020905b815481529060010190602001808311610c0057829003601f168201915b5050505050876111d0565b600081815260076020526040902060028281558101546001559091505b828214610d8557506000818152600760209081526040808320600181015460069093529220549092908015610d07576005546000199182019181018214610cd357600060056001830381548110610c9857fe5b906000526020600020015490508060058481548110610cb357fe5b600091825260208083209091019290925591825260069052604090208290555b6005805480610cde57fe5b600082815260208082208301600019908101839055909201909255848252600690526040812055505b826006015483600201541415610d7e57600583015460009081526007602052604090206003805467ffffffffffffffff198116600167ffffffffffffffff92831681019092161782559082018054610d759260049291600261010092821615929092026000190116046114c4565b50505050610d85565b5050610c45565b505050505050565b600080610d98611454565b6000806000610da687611312565b9398509196509450925090506000856006811115610dc057fe5b14610dd3576000955050505050506107f8565b604084015181148015610e27576005805486516001820180845560009384527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201558651825260066020526040909120555b6040805160e0810182526001808252602088810151818401908152898501518486019081526080808c01516060870190815267ffffffffffffffff8c169187019190915260a086018a905260c086018990528b51600090815260078552969096208551815460ff1916901515178155915193820193909355915160028301559251805192939192610ebe9260038501920190611549565b50608082015160048201805467ffffffffffffffff191667ffffffffffffffff90921691909117905560a0820151600582015560c090910151600690910155935160005550509015949350505050565b610f16611454565b60008060008060008651602088016040516020810160208101602081016020810160a08588886010600019fa610f4b57600080fd5b84519b5083519a508251995081519850805197505050505050505060608167ffffffffffffffff81118015610f7f57600080fd5b506040519080825280601f01601f191660200182016040528015610faa576020820181803683370190505b5090508115610fd45787516020890160208301848184846011600019fa610fd057600080fd5b5050505b6040805160a081018252968752602087019590955293850192909252606084015250608082015292915050565b600061100b611454565b83516000908152600760205260408120548190819060ff161561103d5750600193508592506000915081905080611167565b60015487604001511161105f5750600293508592506000915081905080611167565b8551158061107857506001876040015103866040015114155b156110925750600393508592506000915081905080611167565b60c0860151158015906110ac575085604001518660c00151145b156110d3578660200151600254146110d35750600493508592506000915081905080611167565b60808087015160a088015160c0890151928a01515191929091156111585767ffffffffffffffff838116141561111d57506005965088955060009450849350839250611167915050565b8960400151811061114257506006965088955060009450849350839250611167915050565b50508751606089015160408a0151600190930192015b60009750899650919450925090505b9295509295909350565b611179611489565b506040805160e08101825260018082528451602083015293820151909301908301526060818101519083015260808082015167ffffffffffffffff169083015260a0808201519083015260c0908101519082015290565b600060608686868686604051602001808681526020018581526020018467ffffffffffffffff1667ffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561124357818101518382015260200161122b565b50505050905090810190601f1680156112705780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156112a357818101518382015260200161128b565b50505050905090810190601f1680156112d05780820380516001836020036101000a031916815260200191505b50975050505050505050604051602081830303815290604052905080516020820160008083836012600019fa61130557600080fd5b5095979650505050505050565b600061131c611454565b6000806000611329611454565b61133287610f0e565b905061133c611489565b602082810151600090815260078252604090819020815160e081018352815460ff1615158152600180830154828601526002808401548386015260038401805486516101009482161594909402600019011691909104601f81018790048702830187019095528482529194929360608601939192918301828280156114025780601f106113d757610100808354040283529160200191611402565b820191906000526020600020905b8154815290600101906020018083116113e557829003601f168201915b5050509183525050600482015467ffffffffffffffff1660208201526005820154604082015260069091015460609091015290506114408282611001565b939c929b5090995097509095509350505050565b6040518060a0016040528060008019168152602001600080191681526020016000815260200160008152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114fd5780548555611539565b8280016001018555821561153957600052602060002091601f016020900482015b8281111561153957825482559160010191906001019061151e565b506115459291506115b7565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061158a57805160ff1916838001178555611539565b82800160010185558215611539579182015b8281111561153957825182559160200191906001019061159c565b6115d191905b8082111561154557600081556001016115bd565b9056fe4d697373696e672066696e616c69747920746172676574206865616465722066726f6d207468652073746f72616765a2646970667358221220edcaec08f93f74ce5be00b81da5d6b2276138571a33f1cfdca50e5047f854e6e64736f6c63430006060033 \ No newline at end of file diff --git a/bridges/relays/bin-ethereum/res/substrate-bridge-metadata.txt b/bridges/relays/bin-ethereum/res/substrate-bridge-metadata.txt deleted file mode 100644 index 13b7daa9a8b8..000000000000 --- a/bridges/relays/bin-ethereum/res/substrate-bridge-metadata.txt +++ /dev/null @@ -1,5 +0,0 @@ -Last Change Date: 2020-07-30 -Solc version: 0.6.6+commit.6c089d02.Linux.g++ -Source hash (keccak256): 0xea5d6d744f69157adc2857166792aca139c0b5b186ba89c1011358fbcad90d7e -Source gist: https://github.com/svyatonik/substrate-bridge-sol/blob/6456d3e016c95cd5e6d5e817c23e9e69e739aa78/substrate-bridge.sol -Compiler flags used (command to produce the file): `docker run -i ethereum/solc:0.6.6 --optimize --bin - < substrate-bridge.sol` \ No newline at end of file diff --git a/bridges/relays/bin-ethereum/src/cli.yml b/bridges/relays/bin-ethereum/src/cli.yml deleted file mode 100644 index 78971787c0e2..000000000000 --- a/bridges/relays/bin-ethereum/src/cli.yml +++ /dev/null @@ -1,166 +0,0 @@ -name: ethsub-bridge -version: "0.1.0" -author: Parity Technologies -about: Parity Ethereum (PoA) <-> Substrate bridge -subcommands: - - eth-to-sub: - about: Synchronize headers from Ethereum node to Substrate node. - args: - - eth-host: ð-host - long: eth-host - value_name: ETH_HOST - help: Connect to Ethereum node websocket server at given host. - takes_value: true - - eth-port: ð-port - long: eth-port - value_name: ETH_PORT - help: Connect to Ethereum node websocket server at given port. - takes_value: true - - sub-host: &sub-host - long: sub-host - value_name: SUB_HOST - help: Connect to Substrate node websocket server at given host. - takes_value: true - - sub-port: &sub-port - long: sub-port - value_name: SUB_PORT - help: Connect to Substrate node websocket server at given port. - takes_value: true - - sub-tx-mode: - long: sub-tx-mode - value_name: MODE - help: Submit headers using signed (default) or unsigned transactions. Third mode - backup - submits signed transactions only when we believe that sync has stalled. - takes_value: true - possible_values: - - signed - - unsigned - - backup - - sub-signer: &sub-signer - long: sub-signer - value_name: SUB_SIGNER - help: The SURI of secret key to use when transactions are submitted to the Substrate node. - - sub-signer-password: &sub-signer-password - long: sub-signer-password - value_name: SUB_SIGNER_PASSWORD - help: The password for the SURI of secret key to use when transactions are submitted to the Substrate node. - - sub-pallet-instance: &sub-pallet-instance - long: instance - short: i - value_name: PALLET_INSTANCE - help: The instance of the bridge pallet the relay should follow. - takes_value: true - case_insensitive: true - possible_values: - - Rialto - - Kovan - default_value: Rialto - - no-prometheus: &no-prometheus - long: no-prometheus - help: Do not expose a Prometheus metric endpoint. - - prometheus-host: &prometheus-host - long: prometheus-host - value_name: PROMETHEUS_HOST - help: Expose Prometheus endpoint at given interface. - - prometheus-port: &prometheus-port - long: prometheus-port - value_name: PROMETHEUS_PORT - help: Expose Prometheus endpoint at given port. - - sub-to-eth: - about: Synchronize headers from Substrate node to Ethereum node. - args: - - eth-host: *eth-host - - eth-port: *eth-port - - eth-contract: - long: eth-contract - value_name: ETH_CONTRACT - help: Address of deployed bridge contract. - takes_value: true - - eth-chain-id: ð-chain-id - long: eth-chain-id - value_name: ETH_CHAIN_ID - help: Chain ID to use for signing. - - eth-signer: ð-signer - long: eth-signer - value_name: ETH_SIGNER - help: Hex-encoded secret to use when transactions are submitted to the Ethereum node. - - sub-host: *sub-host - - sub-port: *sub-port - - no-prometheus: *no-prometheus - - prometheus-host: *prometheus-host - - prometheus-port: *prometheus-port - - eth-deploy-contract: - about: Deploy Bridge contract on Ethereum node. - args: - - eth-host: *eth-host - - eth-port: *eth-port - - eth-signer: *eth-signer - - eth-chain-id: *eth-chain-id - - eth-contract-code: - long: eth-contract-code - value_name: ETH_CONTRACT_CODE - help: Bytecode of bridge contract. - takes_value: true - - sub-host: *sub-host - - sub-port: *sub-port - - sub-authorities-set-id: - long: sub-authorities-set-id - value_name: SUB_AUTHORITIES_SET_ID - help: ID of initial GRANDPA authorities set. - takes_value: true - - sub-authorities-set: - long: sub-authorities-set - value_name: SUB_AUTHORITIES_SET - help: Encoded initial GRANDPA authorities set. - takes_value: true - - sub-initial-header: - long: sub-initial-header - value_name: SUB_INITIAL_HEADER - help: Encoded initial Substrate header. - takes_value: true - - eth-submit-exchange-tx: - about: Submit lock funds transaction to Ethereum node. - args: - - eth-host: *eth-host - - eth-port: *eth-port - - eth-nonce: - long: eth-nonce - value_name: ETH_NONCE - help: Nonce that have to be used when building transaction. If not specified, read from PoA node. - takes_value: true - - eth-signer: *eth-signer - - eth-chain-id: *eth-chain-id - - eth-amount: - long: eth-amount - value_name: ETH_AMOUNT - help: Amount of ETH to lock (in wei). - takes_value: true - - sub-recipient: - long: sub-recipient - value_name: SUB_RECIPIENT - help: Hex-encoded Public key of funds recipient in Substrate chain. - takes_value: true - - eth-exchange-sub: - about: Submit proof of PoA lock funds transaction to Substrate node. - args: - - eth-host: *eth-host - - eth-port: *eth-port - - eth-start-with-block: - long: eth-start-with-block - value_name: ETH_START_WITH_BLOCK - help: Auto-relay transactions starting with given block number. If not specified, starts with best finalized Ethereum block (known to Substrate node) transactions. - takes_value: true - conflicts_with: - - eth-tx-hash - - eth-tx-hash: - long: eth-tx-hash - value_name: ETH_TX_HASH - help: Hash of the lock funds transaction. - takes_value: true - - sub-host: *sub-host - - sub-port: *sub-port - - sub-signer: *sub-signer - - sub-signer-password: *sub-signer-password - - sub-pallet-instance: *sub-pallet-instance - - no-prometheus: *no-prometheus - - prometheus-host: *prometheus-host - - prometheus-port: *prometheus-port diff --git a/bridges/relays/bin-ethereum/src/ethereum_client.rs b/bridges/relays/bin-ethereum/src/ethereum_client.rs deleted file mode 100644 index 71a3f38859b7..000000000000 --- a/bridges/relays/bin-ethereum/src/ethereum_client.rs +++ /dev/null @@ -1,653 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::rpc_errors::RpcError; -use crate::substrate_sync_loop::QueuedRialtoHeader; - -use async_trait::async_trait; -use bp_eth_poa::signatures::secret_to_address; -use codec::{Decode, Encode}; -use ethabi::FunctionOutputDecoder; -use headers_relay::sync_types::SubmittedHeaders; -use relay_ethereum_client::{ - sign_and_submit_transaction, - types::{Address, CallRequest, HeaderId as EthereumHeaderId, Receipt, H256, U256}, - Client as EthereumClient, Error as EthereumNodeError, SigningParams as EthereumSigningParams, -}; -use relay_rialto_client::HeaderId as RialtoHeaderId; -use relay_utils::{HeaderId, MaybeConnectionError}; -use sp_runtime::EncodedJustification; -use std::collections::HashSet; - -// to encode/decode contract calls -ethabi_contract::use_contract!(bridge_contract, "res/substrate-bridge-abi.json"); - -type RpcResult = std::result::Result; - -/// A trait which contains methods that work by using multiple low-level RPCs, or more complicated -/// interactions involving, for example, an Ethereum contract. -#[async_trait] -pub trait EthereumHighLevelRpc { - /// Returns best Substrate block that PoA chain knows of. - async fn best_substrate_block(&self, contract_address: Address) -> RpcResult; - - /// Returns true if Substrate header is known to Ethereum node. - async fn substrate_header_known( - &self, - contract_address: Address, - id: RialtoHeaderId, - ) -> RpcResult<(RialtoHeaderId, bool)>; - - /// Submits Substrate headers to Ethereum contract. - async fn submit_substrate_headers( - &self, - params: EthereumSigningParams, - contract_address: Address, - headers: Vec, - ) -> SubmittedHeaders; - - /// Returns ids of incomplete Substrate headers. - async fn incomplete_substrate_headers(&self, contract_address: Address) -> RpcResult>; - - /// Complete Substrate header. - async fn complete_substrate_header( - &self, - params: EthereumSigningParams, - contract_address: Address, - id: RialtoHeaderId, - justification: EncodedJustification, - ) -> RpcResult; - - /// Submit ethereum transaction. - async fn submit_ethereum_transaction( - &self, - params: &EthereumSigningParams, - contract_address: Option
, - nonce: Option, - double_gas: bool, - encoded_call: Vec, - ) -> RpcResult<()>; - - /// Retrieve transactions receipts for given block. - async fn transaction_receipts( - &self, - id: EthereumHeaderId, - transactions: Vec, - ) -> RpcResult<(EthereumHeaderId, Vec)>; -} - -#[async_trait] -impl EthereumHighLevelRpc for EthereumClient { - async fn best_substrate_block(&self, contract_address: Address) -> RpcResult { - let (encoded_call, call_decoder) = bridge_contract::functions::best_known_header::call(); - let call_request = CallRequest { - to: Some(contract_address), - data: Some(encoded_call.into()), - ..Default::default() - }; - - let call_result = self.eth_call(call_request).await?; - let (number, raw_hash) = call_decoder.decode(&call_result.0)?; - let hash = rialto_runtime::Hash::decode(&mut &raw_hash[..])?; - - if number != number.low_u32().into() { - return Err(RpcError::Ethereum(EthereumNodeError::InvalidSubstrateBlockNumber)); - } - - Ok(HeaderId(number.low_u32(), hash)) - } - - async fn substrate_header_known( - &self, - contract_address: Address, - id: RialtoHeaderId, - ) -> RpcResult<(RialtoHeaderId, bool)> { - let (encoded_call, call_decoder) = bridge_contract::functions::is_known_header::call(id.1); - let call_request = CallRequest { - to: Some(contract_address), - data: Some(encoded_call.into()), - ..Default::default() - }; - - let call_result = self.eth_call(call_request).await?; - let is_known_block = call_decoder.decode(&call_result.0)?; - - Ok((id, is_known_block)) - } - - async fn submit_substrate_headers( - &self, - params: EthereumSigningParams, - contract_address: Address, - headers: Vec, - ) -> SubmittedHeaders { - // read nonce of signer - let address: Address = secret_to_address(¶ms.signer); - let nonce = match self.account_nonce(address).await { - Ok(nonce) => nonce, - Err(error) => { - return SubmittedHeaders { - submitted: Vec::new(), - incomplete: Vec::new(), - rejected: headers.iter().rev().map(|header| header.id()).collect(), - fatal_error: Some(error.into()), - } - } - }; - - // submit headers. Note that we're cloning self here. It is ok, because - // cloning `jsonrpsee::Client` only clones reference to background threads - submit_substrate_headers( - EthereumHeadersSubmitter { - client: self.clone(), - params, - contract_address, - nonce, - }, - headers, - ) - .await - } - - async fn incomplete_substrate_headers(&self, contract_address: Address) -> RpcResult> { - let (encoded_call, call_decoder) = bridge_contract::functions::incomplete_headers::call(); - let call_request = CallRequest { - to: Some(contract_address), - data: Some(encoded_call.into()), - ..Default::default() - }; - - let call_result = self.eth_call(call_request).await?; - - // Q: Is is correct to call these "incomplete_ids"? - let (incomplete_headers_numbers, incomplete_headers_hashes) = call_decoder.decode(&call_result.0)?; - let incomplete_ids = incomplete_headers_numbers - .into_iter() - .zip(incomplete_headers_hashes) - .filter_map(|(number, hash)| { - if number != number.low_u32().into() { - return None; - } - - Some(HeaderId(number.low_u32(), hash)) - }) - .collect(); - - Ok(incomplete_ids) - } - - async fn complete_substrate_header( - &self, - params: EthereumSigningParams, - contract_address: Address, - id: RialtoHeaderId, - justification: EncodedJustification, - ) -> RpcResult { - let _ = self - .submit_ethereum_transaction( - ¶ms, - Some(contract_address), - None, - false, - bridge_contract::functions::import_finality_proof::encode_input(id.0, id.1, justification), - ) - .await?; - - Ok(id) - } - - async fn submit_ethereum_transaction( - &self, - params: &EthereumSigningParams, - contract_address: Option
, - nonce: Option, - double_gas: bool, - encoded_call: Vec, - ) -> RpcResult<()> { - sign_and_submit_transaction(self, params, contract_address, nonce, double_gas, encoded_call) - .await - .map_err(Into::into) - } - - async fn transaction_receipts( - &self, - id: EthereumHeaderId, - transactions: Vec, - ) -> RpcResult<(EthereumHeaderId, Vec)> { - let mut transaction_receipts = Vec::with_capacity(transactions.len()); - for transaction in transactions { - let transaction_receipt = self.transaction_receipt(transaction).await?; - transaction_receipts.push(transaction_receipt); - } - Ok((id, transaction_receipts)) - } -} - -/// Max number of headers which can be sent to Solidity contract. -pub const HEADERS_BATCH: usize = 4; - -/// Substrate headers to send to the Ethereum light client. -/// -/// The Solidity contract can only accept a fixed number of headers in one go. -/// This struct is meant to encapsulate this limitation. -#[derive(Debug)] -#[cfg_attr(test, derive(Clone))] -pub struct HeadersBatch { - pub header1: QueuedRialtoHeader, - pub header2: Option, - pub header3: Option, - pub header4: Option, -} - -impl HeadersBatch { - /// Create new headers from given header & ids collections. - /// - /// This method will pop `HEADERS_BATCH` items from both collections - /// and construct `Headers` object and a vector of `RialtoHeaderId`s. - pub fn pop_from( - headers: &mut Vec, - ids: &mut Vec, - ) -> Result<(Self, Vec), ()> { - if headers.len() != ids.len() { - log::error!(target: "bridge", "Collection size mismatch ({} vs {})", headers.len(), ids.len()); - return Err(()); - } - - let header1 = headers.pop().ok_or(())?; - let header2 = headers.pop(); - let header3 = headers.pop(); - let header4 = headers.pop(); - - let mut submitting_ids = Vec::with_capacity(HEADERS_BATCH); - for _ in 0..HEADERS_BATCH { - submitting_ids.extend(ids.pop().iter()); - } - - Ok(( - Self { - header1, - header2, - header3, - header4, - }, - submitting_ids, - )) - } - - /// Returns unified array of headers. - /// - /// The first element is always `Some`. - fn headers(&self) -> [Option<&QueuedRialtoHeader>; HEADERS_BATCH] { - [ - Some(&self.header1), - self.header2.as_ref(), - self.header3.as_ref(), - self.header4.as_ref(), - ] - } - - /// Encodes all headers. If header is not present an empty vector will be returned. - pub fn encode(&self) -> [Vec; HEADERS_BATCH] { - let encode = |h: &QueuedRialtoHeader| h.header().encode(); - let headers = self.headers(); - [ - headers[0].map(encode).unwrap_or_default(), - headers[1].map(encode).unwrap_or_default(), - headers[2].map(encode).unwrap_or_default(), - headers[3].map(encode).unwrap_or_default(), - ] - } - /// Returns number of contained headers. - pub fn len(&self) -> usize { - let is_set = |h: &Option<&QueuedRialtoHeader>| if h.is_some() { 1 } else { 0 }; - self.headers().iter().map(is_set).sum() - } - - /// Remove headers starting from `idx` (0-based) from this collection. - /// - /// The collection will be left with `[0, idx)` headers. - /// Returns `Err` when `idx == 0`, since `Headers` must contain at least one header, - /// or when `idx > HEADERS_BATCH`. - pub fn split_off(&mut self, idx: usize) -> Result<(), ()> { - if idx == 0 || idx > HEADERS_BATCH { - return Err(()); - } - let mut vals: [_; HEADERS_BATCH] = [&mut None, &mut self.header2, &mut self.header3, &mut self.header4]; - for val in vals.iter_mut().skip(idx) { - **val = None; - } - Ok(()) - } -} - -/// Substrate headers submitter API. -#[async_trait] -trait HeadersSubmitter { - /// Returns Ok(0) if all given not-yet-imported headers are complete. - /// Returns Ok(index != 0) where index is 1-based index of first header that is incomplete. - /// - /// Returns Err(()) if contract has rejected headers. This means that the contract is - /// unable to import first header (e.g. it may already be imported). - async fn is_headers_incomplete(&self, headers: &HeadersBatch) -> RpcResult; - - /// Submit given headers to Ethereum node. - async fn submit_headers(&mut self, headers: HeadersBatch) -> RpcResult<()>; -} - -/// Implementation of Substrate headers submitter that sends headers to running Ethereum node. -struct EthereumHeadersSubmitter { - client: EthereumClient, - params: EthereumSigningParams, - contract_address: Address, - nonce: U256, -} - -#[async_trait] -impl HeadersSubmitter for EthereumHeadersSubmitter { - async fn is_headers_incomplete(&self, headers: &HeadersBatch) -> RpcResult { - let [h1, h2, h3, h4] = headers.encode(); - let (encoded_call, call_decoder) = bridge_contract::functions::is_incomplete_headers::call(h1, h2, h3, h4); - let call_request = CallRequest { - to: Some(self.contract_address), - data: Some(encoded_call.into()), - ..Default::default() - }; - - let call_result = self.client.eth_call(call_request).await?; - let incomplete_index: U256 = call_decoder.decode(&call_result.0)?; - if incomplete_index > HEADERS_BATCH.into() { - return Err(RpcError::Ethereum(EthereumNodeError::InvalidIncompleteIndex)); - } - - Ok(incomplete_index.low_u32() as _) - } - - async fn submit_headers(&mut self, headers: HeadersBatch) -> RpcResult<()> { - let [h1, h2, h3, h4] = headers.encode(); - let result = self - .client - .submit_ethereum_transaction( - &self.params, - Some(self.contract_address), - Some(self.nonce), - false, - bridge_contract::functions::import_headers::encode_input(h1, h2, h3, h4), - ) - .await; - - if result.is_ok() { - self.nonce += U256::one(); - } - - result - } -} - -/// Submit multiple Substrate headers. -async fn submit_substrate_headers( - mut header_submitter: impl HeadersSubmitter, - mut headers: Vec, -) -> SubmittedHeaders { - let mut submitted_headers = SubmittedHeaders::default(); - - let mut ids = headers.iter().map(|header| header.id()).rev().collect::>(); - headers.reverse(); - - while !headers.is_empty() { - let (headers, submitting_ids) = - HeadersBatch::pop_from(&mut headers, &mut ids).expect("Headers and ids are not empty; qed"); - - submitted_headers.fatal_error = - submit_substrate_headers_batch(&mut header_submitter, &mut submitted_headers, submitting_ids, headers) - .await; - - if submitted_headers.fatal_error.is_some() { - ids.reverse(); - submitted_headers.rejected.extend(ids); - break; - } - } - - submitted_headers -} - -/// Submit 4 Substrate headers in single PoA transaction. -async fn submit_substrate_headers_batch( - header_submitter: &mut impl HeadersSubmitter, - submitted_headers: &mut SubmittedHeaders, - mut ids: Vec, - mut headers: HeadersBatch, -) -> Option { - debug_assert_eq!(ids.len(), headers.len(),); - - // if parent of first header is either incomplete, or rejected, we assume that contract - // will reject this header as well - let parent_id = headers.header1.parent_id(); - if submitted_headers.rejected.contains(&parent_id) || submitted_headers.incomplete.contains(&parent_id) { - submitted_headers.rejected.extend(ids); - return None; - } - - // check if headers are incomplete - let incomplete_header_index = match header_submitter.is_headers_incomplete(&headers).await { - // All headers valid - Ok(0) => None, - Ok(incomplete_header_index) => Some(incomplete_header_index), - Err(error) => { - // contract has rejected all headers => we do not want to submit it - submitted_headers.rejected.extend(ids); - if error.is_connection_error() { - return Some(error); - } else { - return None; - } - } - }; - - // Modify `ids` and `headers` to only contain values that are going to be accepted. - let rejected = if let Some(idx) = incomplete_header_index { - let len = std::cmp::min(idx, ids.len()); - headers - .split_off(len) - .expect("len > 0, the case where all headers are valid is converted to None; qed"); - ids.split_off(len) - } else { - Vec::new() - }; - let submitted = ids; - let submit_result = header_submitter.submit_headers(headers).await; - match submit_result { - Ok(_) => { - if incomplete_header_index.is_some() { - submitted_headers.incomplete.extend(submitted.iter().last().cloned()); - } - submitted_headers.submitted.extend(submitted); - submitted_headers.rejected.extend(rejected); - None - } - Err(error) => { - submitted_headers.rejected.extend(submitted); - submitted_headers.rejected.extend(rejected); - Some(error) - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_runtime::traits::Header; - - struct TestHeadersSubmitter { - incomplete: Vec, - failed: Vec, - } - - #[async_trait] - impl HeadersSubmitter for TestHeadersSubmitter { - async fn is_headers_incomplete(&self, headers: &HeadersBatch) -> RpcResult { - if self.incomplete.iter().any(|i| i.0 == headers.header1.id().0) { - Ok(1) - } else { - Ok(0) - } - } - - async fn submit_headers(&mut self, headers: HeadersBatch) -> RpcResult<()> { - if self.failed.iter().any(|i| i.0 == headers.header1.id().0) { - Err(RpcError::Ethereum(EthereumNodeError::InvalidSubstrateBlockNumber)) - } else { - Ok(()) - } - } - } - - fn header(number: rialto_runtime::BlockNumber) -> QueuedRialtoHeader { - QueuedRialtoHeader::new( - rialto_runtime::Header::new( - number, - Default::default(), - Default::default(), - if number == 0 { - Default::default() - } else { - header(number - 1).id().1 - }, - Default::default(), - ) - .into(), - ) - } - - #[test] - fn descendants_of_incomplete_headers_are_not_submitted() { - let submitted_headers = async_std::task::block_on(submit_substrate_headers( - TestHeadersSubmitter { - incomplete: vec![header(5).id()], - failed: vec![], - }, - vec![header(5), header(6)], - )); - assert_eq!(submitted_headers.submitted, vec![header(5).id()]); - assert_eq!(submitted_headers.incomplete, vec![header(5).id()]); - assert_eq!(submitted_headers.rejected, vec![header(6).id()]); - assert!(submitted_headers.fatal_error.is_none()); - } - - #[test] - fn headers_after_fatal_error_are_not_submitted() { - let submitted_headers = async_std::task::block_on(submit_substrate_headers( - TestHeadersSubmitter { - incomplete: vec![], - failed: vec![header(9).id()], - }, - vec![ - header(5), - header(6), - header(7), - header(8), - header(9), - header(10), - header(11), - ], - )); - assert_eq!( - submitted_headers.submitted, - vec![header(5).id(), header(6).id(), header(7).id(), header(8).id()] - ); - assert_eq!(submitted_headers.incomplete, vec![]); - assert_eq!( - submitted_headers.rejected, - vec![header(9).id(), header(10).id(), header(11).id(),] - ); - assert!(submitted_headers.fatal_error.is_some()); - } - - fn headers_batch() -> HeadersBatch { - let mut init_headers = vec![header(1), header(2), header(3), header(4), header(5)]; - init_headers.reverse(); - let mut init_ids = init_headers.iter().map(|h| h.id()).collect(); - let (headers, ids) = HeadersBatch::pop_from(&mut init_headers, &mut init_ids).unwrap(); - assert_eq!(init_headers, vec![header(5)]); - assert_eq!(init_ids, vec![header(5).id()]); - assert_eq!( - ids, - vec![header(1).id(), header(2).id(), header(3).id(), header(4).id()] - ); - headers - } - - #[test] - fn headers_batch_len() { - let headers = headers_batch(); - assert_eq!(headers.len(), 4); - } - - #[test] - fn headers_batch_encode() { - let headers = headers_batch(); - assert_eq!( - headers.encode(), - [ - header(1).header().encode(), - header(2).header().encode(), - header(3).header().encode(), - header(4).header().encode(), - ] - ); - } - - #[test] - fn headers_batch_split_off() { - // given - let mut headers = headers_batch(); - - // when - assert!(headers.split_off(0).is_err()); - assert_eq!(headers.header1, header(1)); - assert!(headers.header2.is_some()); - assert!(headers.header3.is_some()); - assert!(headers.header4.is_some()); - - // when - let mut h = headers.clone(); - h.split_off(1).unwrap(); - assert!(h.header2.is_none()); - assert!(h.header3.is_none()); - assert!(h.header4.is_none()); - - // when - let mut h = headers.clone(); - h.split_off(2).unwrap(); - assert!(h.header2.is_some()); - assert!(h.header3.is_none()); - assert!(h.header4.is_none()); - - // when - let mut h = headers.clone(); - h.split_off(3).unwrap(); - assert!(h.header2.is_some()); - assert!(h.header3.is_some()); - assert!(h.header4.is_none()); - - // when - let mut h = headers; - h.split_off(4).unwrap(); - assert!(h.header2.is_some()); - assert!(h.header3.is_some()); - assert!(h.header4.is_some()); - } -} diff --git a/bridges/relays/bin-ethereum/src/ethereum_deploy_contract.rs b/bridges/relays/bin-ethereum/src/ethereum_deploy_contract.rs deleted file mode 100644 index 3f9076f6db22..000000000000 --- a/bridges/relays/bin-ethereum/src/ethereum_deploy_contract.rs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::ethereum_client::{bridge_contract, EthereumHighLevelRpc}; -use crate::rpc_errors::RpcError; - -use codec::{Decode, Encode}; -use num_traits::Zero; -use relay_ethereum_client::{ - Client as EthereumClient, ConnectionParams as EthereumConnectionParams, SigningParams as EthereumSigningParams, -}; -use relay_rialto_client::{HeaderId as RialtoHeaderId, Rialto}; -use relay_substrate_client::{ - Client as SubstrateClient, ConnectionParams as SubstrateConnectionParams, OpaqueGrandpaAuthoritiesSet, -}; -use relay_utils::HeaderId; - -/// Ethereum synchronization parameters. -#[derive(Debug)] -pub struct EthereumDeployContractParams { - /// Ethereum connection params. - pub eth_params: EthereumConnectionParams, - /// Ethereum signing params. - pub eth_sign: EthereumSigningParams, - /// Ethereum contract bytecode. - pub eth_contract_code: Vec, - /// Substrate connection params. - pub sub_params: SubstrateConnectionParams, - /// Initial authorities set id. - pub sub_initial_authorities_set_id: Option, - /// Initial authorities set. - pub sub_initial_authorities_set: Option>, - /// Initial header. - pub sub_initial_header: Option>, -} - -/// Deploy Bridge contract on Ethereum chain. -pub async fn run(params: EthereumDeployContractParams) { - let EthereumDeployContractParams { - eth_params, - eth_sign, - sub_params, - sub_initial_authorities_set_id, - sub_initial_authorities_set, - sub_initial_header, - eth_contract_code, - } = params; - - let result = async move { - let eth_client = EthereumClient::try_connect(eth_params).await.map_err(RpcError::Ethereum)?; - let sub_client = SubstrateClient::::try_connect(sub_params).await.map_err(RpcError::Substrate)?; - - let (initial_header_id, initial_header) = prepare_initial_header(&sub_client, sub_initial_header).await?; - let initial_set_id = sub_initial_authorities_set_id.unwrap_or(0); - let initial_set = prepare_initial_authorities_set( - &sub_client, - initial_header_id.1, - sub_initial_authorities_set, - ).await?; - - log::info!( - target: "bridge", - "Deploying Ethereum contract.\r\n\tInitial header: {:?}\r\n\tInitial header id: {:?}\r\n\tInitial header encoded: {}\r\n\tInitial authorities set ID: {}\r\n\tInitial authorities set: {}", - initial_header, - initial_header_id, - hex::encode(&initial_header), - initial_set_id, - hex::encode(&initial_set), - ); - - deploy_bridge_contract( - ð_client, - ð_sign, - eth_contract_code, - initial_header, - initial_set_id, - initial_set, - ).await - }.await; - - if let Err(error) = result { - log::error!(target: "bridge", "{}", error); - } -} - -/// Prepare initial header. -async fn prepare_initial_header( - sub_client: &SubstrateClient, - sub_initial_header: Option>, -) -> Result<(RialtoHeaderId, Vec), String> { - match sub_initial_header { - Some(raw_initial_header) => match rialto_runtime::Header::decode(&mut &raw_initial_header[..]) { - Ok(initial_header) => Ok(( - HeaderId(initial_header.number, initial_header.hash()), - raw_initial_header, - )), - Err(error) => Err(format!("Error decoding initial header: {}", error)), - }, - None => { - let initial_header = sub_client.header_by_number(Zero::zero()).await; - initial_header - .map(|header| (HeaderId(Zero::zero(), header.hash()), header.encode())) - .map_err(|error| format!("Error reading Substrate genesis header: {:?}", error)) - } - } -} - -/// Prepare initial GRANDPA authorities set. -async fn prepare_initial_authorities_set( - sub_client: &SubstrateClient, - sub_initial_header_hash: rialto_runtime::Hash, - sub_initial_authorities_set: Option>, -) -> Result { - let initial_authorities_set = match sub_initial_authorities_set { - Some(initial_authorities_set) => Ok(initial_authorities_set), - None => sub_client.grandpa_authorities_set(sub_initial_header_hash).await, - }; - - initial_authorities_set.map_err(|error| format!("Error reading GRANDPA authorities set: {:?}", error)) -} - -/// Deploy bridge contract to Ethereum chain. -async fn deploy_bridge_contract( - eth_client: &EthereumClient, - params: &EthereumSigningParams, - contract_code: Vec, - initial_header: Vec, - initial_set_id: u64, - initial_authorities: Vec, -) -> Result<(), String> { - eth_client - .submit_ethereum_transaction( - params, - None, - None, - false, - bridge_contract::constructor(contract_code, initial_header, initial_set_id, initial_authorities), - ) - .await - .map_err(|error| format!("Error deploying contract: {:?}", error)) -} diff --git a/bridges/relays/bin-ethereum/src/ethereum_exchange.rs b/bridges/relays/bin-ethereum/src/ethereum_exchange.rs deleted file mode 100644 index 3111aa2de436..000000000000 --- a/bridges/relays/bin-ethereum/src/ethereum_exchange.rs +++ /dev/null @@ -1,401 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying proofs of PoA -> Substrate exchange transactions. - -use crate::instances::BridgeInstance; -use crate::rialto_client::{SubmitEthereumExchangeTransactionProof, SubstrateHighLevelRpc}; -use crate::rpc_errors::RpcError; -use crate::substrate_types::into_substrate_ethereum_receipt; - -use async_trait::async_trait; -use bp_currency_exchange::MaybeLockFundsTransaction; -use exchange_relay::exchange::{ - relay_single_transaction_proof, SourceBlock, SourceClient, SourceTransaction, TargetClient, - TransactionProofPipeline, -}; -use exchange_relay::exchange_loop::{run as run_loop, InMemoryStorage}; -use relay_ethereum_client::{ - types::{ - HeaderId as EthereumHeaderId, HeaderWithTransactions as EthereumHeaderWithTransactions, - Transaction as EthereumTransaction, TransactionHash as EthereumTransactionHash, H256, HEADER_ID_PROOF, - }, - Client as EthereumClient, ConnectionParams as EthereumConnectionParams, -}; -use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{ - Chain as SubstrateChain, Client as SubstrateClient, ConnectionParams as SubstrateConnectionParams, -}; -use relay_utils::{metrics::MetricsParams, relay_loop::Client as RelayClient, HeaderId}; -use rialto_runtime::exchange::EthereumTransactionInclusionProof; -use std::{sync::Arc, time::Duration}; - -/// Interval at which we ask Ethereum node for updates. -const ETHEREUM_TICK_INTERVAL: Duration = Duration::from_secs(10); - -/// Exchange relay mode. -#[derive(Debug)] -pub enum ExchangeRelayMode { - /// Relay single transaction and quit. - Single(EthereumTransactionHash), - /// Auto-relay transactions starting with given block. - Auto(Option), -} - -/// PoA exchange transaction relay params. -pub struct EthereumExchangeParams { - /// Ethereum connection params. - pub eth_params: EthereumConnectionParams, - /// Substrate connection params. - pub sub_params: SubstrateConnectionParams, - /// Substrate signing params. - pub sub_sign: RialtoSigningParams, - /// Relay working mode. - pub mode: ExchangeRelayMode, - /// Metrics parameters. - pub metrics_params: MetricsParams, - /// Instance of the bridge pallet being synchronized. - pub instance: Arc, -} - -impl std::fmt::Debug for EthereumExchangeParams { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - f.debug_struct("EthereumExchangeParams") - .field("eth_params", &self.eth_params) - .field("sub_params", &self.sub_params) - .field("sub_sign", &sp_core::Pair::public(&self.sub_sign)) - .field("mode", &self.mode) - .field("metrics_params", &self.metrics_params) - .field("instance", &self.instance) - .finish() - } -} - -/// Ethereum to Substrate exchange pipeline. -struct EthereumToSubstrateExchange; - -impl TransactionProofPipeline for EthereumToSubstrateExchange { - const SOURCE_NAME: &'static str = "Ethereum"; - const TARGET_NAME: &'static str = "Substrate"; - - type Block = EthereumSourceBlock; - type TransactionProof = EthereumTransactionInclusionProof; -} - -/// Ethereum source block. -struct EthereumSourceBlock(EthereumHeaderWithTransactions); - -impl SourceBlock for EthereumSourceBlock { - type Hash = H256; - type Number = u64; - type Transaction = EthereumSourceTransaction; - - fn id(&self) -> EthereumHeaderId { - HeaderId( - self.0.number.expect(HEADER_ID_PROOF).as_u64(), - self.0.hash.expect(HEADER_ID_PROOF), - ) - } - - fn transactions(&self) -> Vec { - self.0 - .transactions - .iter() - .cloned() - .map(EthereumSourceTransaction) - .collect() - } -} - -/// Ethereum source transaction. -struct EthereumSourceTransaction(EthereumTransaction); - -impl SourceTransaction for EthereumSourceTransaction { - type Hash = EthereumTransactionHash; - - fn hash(&self) -> Self::Hash { - self.0.hash - } -} - -/// Ethereum node as transactions proof source. -#[derive(Clone)] -struct EthereumTransactionsSource { - client: EthereumClient, -} - -#[async_trait] -impl RelayClient for EthereumTransactionsSource { - type Error = RpcError; - - async fn reconnect(&mut self) -> Result<(), RpcError> { - self.client.reconnect().await.map_err(Into::into) - } -} - -#[async_trait] -impl SourceClient for EthereumTransactionsSource { - async fn tick(&self) { - async_std::task::sleep(ETHEREUM_TICK_INTERVAL).await; - } - - async fn block_by_hash(&self, hash: H256) -> Result { - self.client - .header_by_hash_with_transactions(hash) - .await - .map(EthereumSourceBlock) - .map_err(Into::into) - } - - async fn block_by_number(&self, number: u64) -> Result { - self.client - .header_by_number_with_transactions(number) - .await - .map(EthereumSourceBlock) - .map_err(Into::into) - } - - async fn transaction_block( - &self, - hash: &EthereumTransactionHash, - ) -> Result, RpcError> { - let eth_tx = match self.client.transaction_by_hash(*hash).await? { - Some(eth_tx) => eth_tx, - None => return Ok(None), - }; - - // we need transaction to be mined => check if it is included in the block - let (eth_header_id, eth_tx_index) = match (eth_tx.block_number, eth_tx.block_hash, eth_tx.transaction_index) { - (Some(block_number), Some(block_hash), Some(transaction_index)) => ( - HeaderId(block_number.as_u64(), block_hash), - transaction_index.as_u64() as _, - ), - _ => return Ok(None), - }; - - Ok(Some((eth_header_id, eth_tx_index))) - } - - async fn transaction_proof( - &self, - block: &EthereumSourceBlock, - tx_index: usize, - ) -> Result { - const TRANSACTION_HAS_RAW_FIELD_PROOF: &str = "RPC level checks that transactions from Ethereum\ - node are having `raw` field; qed"; - const BLOCK_HAS_HASH_FIELD_PROOF: &str = "RPC level checks that block has `hash` field; qed"; - - let mut transaction_proof = Vec::with_capacity(block.0.transactions.len()); - for tx in &block.0.transactions { - let raw_tx_receipt = self - .client - .transaction_receipt(tx.hash) - .await - .map(|receipt| into_substrate_ethereum_receipt(&receipt)) - .map(|receipt| receipt.rlp())?; - let raw_tx = tx.raw.clone().expect(TRANSACTION_HAS_RAW_FIELD_PROOF).0; - transaction_proof.push((raw_tx, raw_tx_receipt)); - } - - Ok(EthereumTransactionInclusionProof { - block: block.0.hash.expect(BLOCK_HAS_HASH_FIELD_PROOF), - index: tx_index as _, - proof: transaction_proof, - }) - } -} - -/// Substrate node as transactions proof target. -#[derive(Clone)] -struct SubstrateTransactionsTarget { - client: SubstrateClient, - sign_params: RialtoSigningParams, - bridge_instance: Arc, -} - -#[async_trait] -impl RelayClient for SubstrateTransactionsTarget { - type Error = RpcError; - - async fn reconnect(&mut self) -> Result<(), RpcError> { - Ok(self.client.reconnect().await?) - } -} - -#[async_trait] -impl TargetClient for SubstrateTransactionsTarget { - async fn tick(&self) { - async_std::task::sleep(Rialto::AVERAGE_BLOCK_INTERVAL).await; - } - - async fn is_header_known(&self, id: &EthereumHeaderId) -> Result { - self.client.ethereum_header_known(*id).await - } - - async fn is_header_finalized(&self, id: &EthereumHeaderId) -> Result { - // we check if header is finalized by simple comparison of the header number and - // number of best finalized PoA header known to Substrate node. - // - // this may lead to failure in tx proof import if PoA reorganization has happened - // after we have checked that our tx has been included into given block - // - // the fix is easy, but since this code is mostly developed for demonstration purposes, - // I'm leaving this KISS-based design here - let best_finalized_ethereum_block = self.client.best_ethereum_finalized_block().await?; - Ok(id.0 <= best_finalized_ethereum_block.0) - } - - async fn best_finalized_header_id(&self) -> Result { - // we can't continue to relay exchange proofs if Substrate node is out of sync, because - // it may have already received (some of) proofs that we're going to relay - self.client.ensure_synced().await?; - - self.client.best_ethereum_finalized_block().await - } - - async fn filter_transaction_proof(&self, proof: &EthereumTransactionInclusionProof) -> Result { - // let's try to parse transaction locally - let (raw_tx, raw_tx_receipt) = &proof.proof[proof.index as usize]; - let parse_result = rialto_runtime::exchange::EthTransaction::parse(raw_tx); - if parse_result.is_err() { - return Ok(false); - } - - // now let's check if transaction is successful - match bp_eth_poa::Receipt::is_successful_raw_receipt(raw_tx_receipt) { - Ok(true) => (), - _ => return Ok(false), - } - - // seems that transaction is relayable - let's check if runtime is able to import it - // (we can't if e.g. header is pruned or there's some issue with tx data) - self.client.verify_exchange_transaction_proof(proof.clone()).await - } - - async fn submit_transaction_proof(&self, proof: EthereumTransactionInclusionProof) -> Result<(), RpcError> { - let (sign_params, bridge_instance) = (self.sign_params.clone(), self.bridge_instance.clone()); - self.client - .submit_exchange_transaction_proof(sign_params, bridge_instance, proof) - .await - } -} - -/// Relay exchange transaction proof(s) to Substrate node. -pub async fn run(params: EthereumExchangeParams) { - match params.mode { - ExchangeRelayMode::Single(eth_tx_hash) => { - let result = run_single_transaction_relay(params, eth_tx_hash).await; - match result { - Ok(_) => log::info!( - target: "bridge", - "Ethereum transaction {} proof has been successfully submitted to Substrate node", - eth_tx_hash, - ), - Err(err) => log::error!( - target: "bridge", - "Error submitting Ethereum transaction {} proof to Substrate node: {}", - eth_tx_hash, - err, - ), - } - } - ExchangeRelayMode::Auto(eth_start_with_block_number) => { - let result = run_auto_transactions_relay_loop(params, eth_start_with_block_number).await; - if let Err(err) = result { - log::error!( - target: "bridge", - "Error auto-relaying Ethereum transactions proofs to Substrate node: {}", - err, - ); - } - } - } -} - -/// Run single transaction proof relay and stop. -async fn run_single_transaction_relay(params: EthereumExchangeParams, eth_tx_hash: H256) -> Result<(), String> { - let EthereumExchangeParams { - eth_params, - sub_params, - sub_sign, - instance, - .. - } = params; - - let eth_client = EthereumClient::try_connect(eth_params) - .await - .map_err(RpcError::Ethereum)?; - let sub_client = SubstrateClient::::try_connect(sub_params) - .await - .map_err(RpcError::Substrate)?; - - let source = EthereumTransactionsSource { client: eth_client }; - let target = SubstrateTransactionsTarget { - client: sub_client, - sign_params: sub_sign, - bridge_instance: instance, - }; - - relay_single_transaction_proof(&source, &target, eth_tx_hash).await -} - -async fn run_auto_transactions_relay_loop( - params: EthereumExchangeParams, - eth_start_with_block_number: Option, -) -> Result<(), String> { - let EthereumExchangeParams { - eth_params, - sub_params, - sub_sign, - metrics_params, - instance, - .. - } = params; - - let eth_client = EthereumClient::new(eth_params).await; - let sub_client = SubstrateClient::::new(sub_params).await; - - let eth_start_with_block_number = match eth_start_with_block_number { - Some(eth_start_with_block_number) => eth_start_with_block_number, - None => { - sub_client - .best_ethereum_finalized_block() - .await - .map_err(|err| { - format!( - "Error retrieving best finalized Ethereum block from Substrate node: {:?}", - err - ) - })? - .0 - } - }; - - run_loop( - InMemoryStorage::new(eth_start_with_block_number), - EthereumTransactionsSource { client: eth_client }, - SubstrateTransactionsTarget { - client: sub_client, - sign_params: sub_sign, - bridge_instance: instance, - }, - metrics_params, - futures::future::pending(), - ) - .await?; - - Ok(()) -} diff --git a/bridges/relays/bin-ethereum/src/ethereum_exchange_submit.rs b/bridges/relays/bin-ethereum/src/ethereum_exchange_submit.rs deleted file mode 100644 index 602d4f14e4f0..000000000000 --- a/bridges/relays/bin-ethereum/src/ethereum_exchange_submit.rs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Submitting Ethereum -> Substrate exchange transactions. - -use bp_eth_poa::{ - signatures::{secret_to_address, SignTransaction}, - UnsignedTransaction, -}; -use relay_ethereum_client::{ - types::{CallRequest, U256}, - Client as EthereumClient, ConnectionParams as EthereumConnectionParams, SigningParams as EthereumSigningParams, -}; -use rialto_runtime::exchange::LOCK_FUNDS_ADDRESS; - -/// Ethereum exchange transaction params. -#[derive(Debug)] -pub struct EthereumExchangeSubmitParams { - /// Ethereum connection params. - pub eth_params: EthereumConnectionParams, - /// Ethereum signing params. - pub eth_sign: EthereumSigningParams, - /// Ethereum signer nonce. - pub eth_nonce: Option, - /// Amount of Ethereum tokens to lock. - pub eth_amount: U256, - /// Funds recipient on Substrate side. - pub sub_recipient: [u8; 32], -} - -/// Submit single Ethereum -> Substrate exchange transaction. -pub async fn run(params: EthereumExchangeSubmitParams) { - let EthereumExchangeSubmitParams { - eth_params, - eth_sign, - eth_nonce, - eth_amount, - sub_recipient, - } = params; - - let result: Result<_, String> = async move { - let eth_client = EthereumClient::try_connect(eth_params) - .await - .map_err(|err| format!("error connecting to Ethereum node: {:?}", err))?; - - let eth_signer_address = secret_to_address(ð_sign.signer); - let sub_recipient_encoded = sub_recipient; - let nonce = match eth_nonce { - Some(eth_nonce) => eth_nonce, - None => eth_client - .account_nonce(eth_signer_address) - .await - .map_err(|err| format!("error fetching acount nonce: {:?}", err))?, - }; - let gas = eth_client - .estimate_gas(CallRequest { - from: Some(eth_signer_address), - to: Some(LOCK_FUNDS_ADDRESS.into()), - value: Some(eth_amount), - data: Some(sub_recipient_encoded.to_vec().into()), - ..Default::default() - }) - .await - .map_err(|err| format!("error estimating gas requirements: {:?}", err))?; - let eth_tx_unsigned = UnsignedTransaction { - nonce, - gas_price: eth_sign.gas_price, - gas, - to: Some(LOCK_FUNDS_ADDRESS.into()), - value: eth_amount, - payload: sub_recipient_encoded.to_vec(), - }; - let eth_tx_signed = eth_tx_unsigned - .clone() - .sign_by(ð_sign.signer, Some(eth_sign.chain_id)); - eth_client - .submit_transaction(eth_tx_signed) - .await - .map_err(|err| format!("error submitting transaction: {:?}", err))?; - - Ok(eth_tx_unsigned) - } - .await; - - match result { - Ok(eth_tx_unsigned) => { - log::info!( - target: "bridge", - "Exchange transaction has been submitted to Ethereum node: {:?}", - eth_tx_unsigned, - ); - } - Err(err) => { - log::error!( - target: "bridge", - "Error submitting exchange transaction to Ethereum node: {}", - err, - ); - } - } -} diff --git a/bridges/relays/bin-ethereum/src/ethereum_sync_loop.rs b/bridges/relays/bin-ethereum/src/ethereum_sync_loop.rs deleted file mode 100644 index 111abcd86e71..000000000000 --- a/bridges/relays/bin-ethereum/src/ethereum_sync_loop.rs +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Ethereum PoA -> Rialto-Substrate synchronization. - -use crate::ethereum_client::EthereumHighLevelRpc; -use crate::instances::BridgeInstance; -use crate::rialto_client::{SubmitEthereumHeaders, SubstrateHighLevelRpc}; -use crate::rpc_errors::RpcError; -use crate::substrate_types::{into_substrate_ethereum_header, into_substrate_ethereum_receipts}; - -use async_trait::async_trait; -use codec::Encode; -use headers_relay::{ - sync::{HeadersSyncParams, TargetTransactionMode}, - sync_loop::{SourceClient, TargetClient}, - sync_types::{HeadersSyncPipeline, QueuedHeader, SourceHeader, SubmittedHeaders}, -}; -use relay_ethereum_client::{ - types::{HeaderHash, HeaderId as EthereumHeaderId, Receipt, SyncHeader as Header}, - Client as EthereumClient, ConnectionParams as EthereumConnectionParams, -}; -use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{ - Chain as SubstrateChain, Client as SubstrateClient, ConnectionParams as SubstrateConnectionParams, -}; -use relay_utils::{metrics::MetricsParams, relay_loop::Client as RelayClient}; - -use std::fmt::Debug; -use std::{collections::HashSet, sync::Arc, time::Duration}; - -pub mod consts { - use super::*; - - /// Interval at which we check new Ethereum headers when we are synced/almost synced. - pub const ETHEREUM_TICK_INTERVAL: Duration = Duration::from_secs(10); - /// Max number of headers in single submit transaction. - pub const MAX_HEADERS_IN_SINGLE_SUBMIT: usize = 32; - /// Max total size of headers in single submit transaction. This only affects signed - /// submissions, when several headers are submitted at once. 4096 is the maximal **expected** - /// size of the Ethereum header + transactions receipts (if they're required). - pub const MAX_HEADERS_SIZE_IN_SINGLE_SUBMIT: usize = MAX_HEADERS_IN_SINGLE_SUBMIT * 4096; - /// Max Ethereum headers we want to have in all 'before-submitted' states. - pub const MAX_FUTURE_HEADERS_TO_DOWNLOAD: usize = 128; - /// Max Ethereum headers count we want to have in 'submitted' state. - pub const MAX_SUBMITTED_HEADERS: usize = 128; - /// Max depth of in-memory headers in all states. Past this depth they will be forgotten (pruned). - pub const PRUNE_DEPTH: u32 = 4096; -} - -/// Ethereum synchronization parameters. -pub struct EthereumSyncParams { - /// Ethereum connection params. - pub eth_params: EthereumConnectionParams, - /// Substrate connection params. - pub sub_params: SubstrateConnectionParams, - /// Substrate signing params. - pub sub_sign: RialtoSigningParams, - /// Synchronization parameters. - pub sync_params: HeadersSyncParams, - /// Metrics parameters. - pub metrics_params: MetricsParams, - /// Instance of the bridge pallet being synchronized. - pub instance: Arc, -} - -impl Debug for EthereumSyncParams { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - f.debug_struct("EthereumSyncParams") - .field("eth_params", &self.eth_params) - .field("sub_params", &self.sub_params) - .field("sub_sign", &sp_core::Pair::public(&self.sub_sign)) - .field("sync_params", &self.sync_params) - .field("metrics_params", &self.metrics_params) - .field("instance", &self.instance) - .finish() - } -} - -/// Ethereum synchronization pipeline. -#[derive(Clone, Copy, Debug)] -#[cfg_attr(test, derive(PartialEq))] -pub struct EthereumHeadersSyncPipeline; - -impl HeadersSyncPipeline for EthereumHeadersSyncPipeline { - const SOURCE_NAME: &'static str = "Ethereum"; - const TARGET_NAME: &'static str = "Substrate"; - - type Hash = HeaderHash; - type Number = u64; - type Header = Header; - type Extra = Vec; - type Completion = (); - - fn estimate_size(source: &QueuedHeader) -> usize { - into_substrate_ethereum_header(source.header()).encode().len() - + into_substrate_ethereum_receipts(source.extra()) - .map(|extra| extra.encode().len()) - .unwrap_or(0) - } -} - -/// Queued ethereum header ID. -pub type QueuedEthereumHeader = QueuedHeader; - -/// Ethereum client as headers source. -#[derive(Clone)] -struct EthereumHeadersSource { - /// Ethereum node client. - client: EthereumClient, -} - -impl EthereumHeadersSource { - fn new(client: EthereumClient) -> Self { - Self { client } - } -} - -#[async_trait] -impl RelayClient for EthereumHeadersSource { - type Error = RpcError; - - async fn reconnect(&mut self) -> Result<(), RpcError> { - self.client.reconnect().await.map_err(Into::into) - } -} - -#[async_trait] -impl SourceClient for EthereumHeadersSource { - async fn best_block_number(&self) -> Result { - // we **CAN** continue to relay headers if Ethereum node is out of sync, because - // Substrate node may be missing headers that are already available at the Ethereum - - self.client.best_block_number().await.map_err(Into::into) - } - - async fn header_by_hash(&self, hash: HeaderHash) -> Result { - self.client - .header_by_hash(hash) - .await - .map(Into::into) - .map_err(Into::into) - } - - async fn header_by_number(&self, number: u64) -> Result { - self.client - .header_by_number(number) - .await - .map(Into::into) - .map_err(Into::into) - } - - async fn header_completion(&self, id: EthereumHeaderId) -> Result<(EthereumHeaderId, Option<()>), RpcError> { - Ok((id, None)) - } - - async fn header_extra( - &self, - id: EthereumHeaderId, - header: QueuedEthereumHeader, - ) -> Result<(EthereumHeaderId, Vec), RpcError> { - self.client - .transaction_receipts(id, header.header().transactions.clone()) - .await - } -} - -#[derive(Clone)] -struct SubstrateHeadersTarget { - /// Substrate node client. - client: SubstrateClient, - /// Whether we want to submit signed (true), or unsigned (false) transactions. - sign_transactions: bool, - /// Substrate signing params. - sign_params: RialtoSigningParams, - /// Bridge instance used in Ethereum to Substrate sync. - bridge_instance: Arc, -} - -impl SubstrateHeadersTarget { - fn new( - client: SubstrateClient, - sign_transactions: bool, - sign_params: RialtoSigningParams, - bridge_instance: Arc, - ) -> Self { - Self { - client, - sign_transactions, - sign_params, - bridge_instance, - } - } -} - -#[async_trait] -impl RelayClient for SubstrateHeadersTarget { - type Error = RpcError; - - async fn reconnect(&mut self) -> Result<(), RpcError> { - Ok(self.client.reconnect().await?) - } -} - -#[async_trait] -impl TargetClient for SubstrateHeadersTarget { - async fn best_header_id(&self) -> Result { - // we can't continue to relay headers if Substrate node is out of sync, because - // it may have already received (some of) headers that we're going to relay - self.client.ensure_synced().await?; - - self.client.best_ethereum_block().await - } - - async fn is_known_header(&self, id: EthereumHeaderId) -> Result<(EthereumHeaderId, bool), RpcError> { - Ok((id, self.client.ethereum_header_known(id).await?)) - } - - async fn submit_headers(&self, headers: Vec) -> SubmittedHeaders { - let (sign_params, bridge_instance, sign_transactions) = ( - self.sign_params.clone(), - self.bridge_instance.clone(), - self.sign_transactions, - ); - self.client - .submit_ethereum_headers(sign_params, bridge_instance, headers, sign_transactions) - .await - } - - async fn incomplete_headers_ids(&self) -> Result, RpcError> { - Ok(HashSet::new()) - } - - #[allow(clippy::unit_arg)] - async fn complete_header(&self, id: EthereumHeaderId, _completion: ()) -> Result { - Ok(id) - } - - async fn requires_extra(&self, header: QueuedEthereumHeader) -> Result<(EthereumHeaderId, bool), RpcError> { - // we can minimize number of receipts_check calls by checking header - // logs bloom here, but it may give us false positives (when authorities - // source is contract, we never need any logs) - let id = header.header().id(); - let sub_eth_header = into_substrate_ethereum_header(header.header()); - Ok((id, self.client.ethereum_receipts_required(sub_eth_header).await?)) - } -} - -/// Run Ethereum headers synchronization. -pub async fn run(params: EthereumSyncParams) -> Result<(), RpcError> { - let EthereumSyncParams { - eth_params, - sub_params, - sub_sign, - sync_params, - metrics_params, - instance, - } = params; - - let eth_client = EthereumClient::new(eth_params).await; - let sub_client = SubstrateClient::::new(sub_params).await; - - let sign_sub_transactions = match sync_params.target_tx_mode { - TargetTransactionMode::Signed | TargetTransactionMode::Backup => true, - TargetTransactionMode::Unsigned => false, - }; - - let source = EthereumHeadersSource::new(eth_client); - let target = SubstrateHeadersTarget::new(sub_client, sign_sub_transactions, sub_sign, instance); - - headers_relay::sync_loop::run( - source, - consts::ETHEREUM_TICK_INTERVAL, - target, - Rialto::AVERAGE_BLOCK_INTERVAL, - (), - sync_params, - metrics_params, - futures::future::pending(), - ) - .await - .map_err(RpcError::SyncLoop)?; - - Ok(()) -} diff --git a/bridges/relays/bin-ethereum/src/instances.rs b/bridges/relays/bin-ethereum/src/instances.rs deleted file mode 100644 index 2ade8632a92c..000000000000 --- a/bridges/relays/bin-ethereum/src/instances.rs +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! The PoA Bridge Pallet provides a way to include multiple instances of itself in a runtime. When -//! synchronizing a Substrate chain which can include multiple instances of the bridge pallet we -//! must somehow decide which of the instances to sync. -//! -//! Note that each instance of the bridge pallet is coupled with an instance of the currency exchange -//! pallet. We must also have a way to create `Call`s for the correct currency exchange instance. -//! -//! This module helps by preparing the correct `Call`s for each of the different pallet instances. - -use crate::ethereum_sync_loop::QueuedEthereumHeader; -use crate::substrate_types::{into_substrate_ethereum_header, into_substrate_ethereum_receipts}; - -use rialto_runtime::exchange::EthereumTransactionInclusionProof as Proof; -use rialto_runtime::Call; - -/// Interface for `Calls` which are needed to correctly sync the bridge. -/// -/// Each instance of the bridge and currency exchange pallets in the bridge runtime requires similar -/// but slightly different `Call` in order to be synchronized. -pub trait BridgeInstance: Send + Sync + std::fmt::Debug { - /// Used to build a `Call` for importing signed headers to a Substrate runtime. - fn build_signed_header_call(&self, headers: Vec) -> Call; - /// Used to build a `Call` for importing an unsigned header to a Substrate runtime. - fn build_unsigned_header_call(&self, header: QueuedEthereumHeader) -> Call; - /// Used to build a `Call` for importing peer transactions to a Substrate runtime. - fn build_currency_exchange_call(&self, proof: Proof) -> Call; -} - -/// Corresponds to the Rialto instance used in the bridge runtime. -#[derive(Default, Clone, Debug)] -pub struct RialtoPoA; - -impl BridgeInstance for RialtoPoA { - fn build_signed_header_call(&self, headers: Vec) -> Call { - let pallet_call = rialto_runtime::BridgeEthPoACall::import_signed_headers( - headers - .into_iter() - .map(|header| { - ( - into_substrate_ethereum_header(header.header()), - into_substrate_ethereum_receipts(header.extra()), - ) - }) - .collect(), - ); - - rialto_runtime::Call::BridgeRialtoPoa(pallet_call) - } - - fn build_unsigned_header_call(&self, header: QueuedEthereumHeader) -> Call { - let pallet_call = rialto_runtime::BridgeEthPoACall::import_unsigned_header( - into_substrate_ethereum_header(header.header()), - into_substrate_ethereum_receipts(header.extra()), - ); - - rialto_runtime::Call::BridgeRialtoPoa(pallet_call) - } - - fn build_currency_exchange_call(&self, proof: Proof) -> Call { - let pallet_call = rialto_runtime::BridgeCurrencyExchangeCall::import_peer_transaction(proof); - rialto_runtime::Call::BridgeRialtoCurrencyExchange(pallet_call) - } -} - -/// Corresponds to the Kovan instance used in the bridge runtime. -#[derive(Default, Clone, Debug)] -pub struct Kovan; - -impl BridgeInstance for Kovan { - fn build_signed_header_call(&self, headers: Vec) -> Call { - let pallet_call = rialto_runtime::BridgeEthPoACall::import_signed_headers( - headers - .into_iter() - .map(|header| { - ( - into_substrate_ethereum_header(header.header()), - into_substrate_ethereum_receipts(header.extra()), - ) - }) - .collect(), - ); - - rialto_runtime::Call::BridgeKovan(pallet_call) - } - - fn build_unsigned_header_call(&self, header: QueuedEthereumHeader) -> Call { - let pallet_call = rialto_runtime::BridgeEthPoACall::import_unsigned_header( - into_substrate_ethereum_header(header.header()), - into_substrate_ethereum_receipts(header.extra()), - ); - - rialto_runtime::Call::BridgeKovan(pallet_call) - } - - fn build_currency_exchange_call(&self, proof: Proof) -> Call { - let pallet_call = rialto_runtime::BridgeCurrencyExchangeCall::import_peer_transaction(proof); - rialto_runtime::Call::BridgeKovanCurrencyExchange(pallet_call) - } -} diff --git a/bridges/relays/bin-ethereum/src/main.rs b/bridges/relays/bin-ethereum/src/main.rs deleted file mode 100644 index bcdae353d3dc..000000000000 --- a/bridges/relays/bin-ethereum/src/main.rs +++ /dev/null @@ -1,413 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![recursion_limit = "1024"] - -mod ethereum_client; -mod ethereum_deploy_contract; -mod ethereum_exchange; -mod ethereum_exchange_submit; -mod ethereum_sync_loop; -mod instances; -mod rialto_client; -mod rpc_errors; -mod substrate_sync_loop; -mod substrate_types; - -use ethereum_deploy_contract::EthereumDeployContractParams; -use ethereum_exchange::EthereumExchangeParams; -use ethereum_exchange_submit::EthereumExchangeSubmitParams; -use ethereum_sync_loop::EthereumSyncParams; -use headers_relay::sync::TargetTransactionMode; -use hex_literal::hex; -use instances::{BridgeInstance, Kovan, RialtoPoA}; -use relay_utils::{ - initialize::initialize_relay, - metrics::{MetricsAddress, MetricsParams}, -}; -use secp256k1::SecretKey; -use sp_core::crypto::Pair; -use substrate_sync_loop::SubstrateSyncParams; - -use headers_relay::sync::HeadersSyncParams; -use relay_ethereum_client::{ConnectionParams as EthereumConnectionParams, SigningParams as EthereumSigningParams}; -use relay_rialto_client::SigningParams as RialtoSigningParams; -use relay_substrate_client::ConnectionParams as SubstrateConnectionParams; -use std::sync::Arc; - -fn main() { - initialize_relay(); - - let yaml = clap::load_yaml!("cli.yml"); - let matches = clap::App::from_yaml(yaml).get_matches(); - async_std::task::block_on(run_command(&matches)); -} - -async fn run_command(matches: &clap::ArgMatches<'_>) { - match matches.subcommand() { - ("eth-to-sub", Some(eth_to_sub_matches)) => { - log::info!(target: "bridge", "Starting ETH ➡ SUB relay."); - if ethereum_sync_loop::run(match ethereum_sync_params(eth_to_sub_matches) { - Ok(ethereum_sync_params) => ethereum_sync_params, - Err(err) => { - log::error!(target: "bridge", "Error parsing parameters: {}", err); - return; - } - }) - .await - .is_err() - { - log::error!(target: "bridge", "Unable to get Substrate genesis block for Ethereum sync."); - }; - } - ("sub-to-eth", Some(sub_to_eth_matches)) => { - log::info!(target: "bridge", "Starting SUB ➡ ETH relay."); - if substrate_sync_loop::run(match substrate_sync_params(sub_to_eth_matches) { - Ok(substrate_sync_params) => substrate_sync_params, - Err(err) => { - log::error!(target: "bridge", "Error parsing parameters: {}", err); - return; - } - }) - .await - .is_err() - { - log::error!(target: "bridge", "Unable to get Substrate genesis block for Substrate sync."); - }; - } - ("eth-deploy-contract", Some(eth_deploy_matches)) => { - log::info!(target: "bridge", "Deploying ETH contracts."); - ethereum_deploy_contract::run(match ethereum_deploy_contract_params(eth_deploy_matches) { - Ok(ethereum_deploy_params) => ethereum_deploy_params, - Err(err) => { - log::error!(target: "bridge", "Error during contract deployment: {}", err); - return; - } - }) - .await; - } - ("eth-submit-exchange-tx", Some(eth_exchange_submit_matches)) => { - log::info!(target: "bridge", "Submitting ETH ➡ SUB exchange transaction."); - ethereum_exchange_submit::run(match ethereum_exchange_submit_params(eth_exchange_submit_matches) { - Ok(eth_exchange_submit_params) => eth_exchange_submit_params, - Err(err) => { - log::error!(target: "bridge", "Error submitting Eethereum exchange transaction: {}", err); - return; - } - }) - .await; - } - ("eth-exchange-sub", Some(eth_exchange_matches)) => { - log::info!(target: "bridge", "Starting ETH ➡ SUB exchange transactions relay."); - ethereum_exchange::run(match ethereum_exchange_params(eth_exchange_matches) { - Ok(eth_exchange_params) => eth_exchange_params, - Err(err) => { - log::error!(target: "bridge", "Error relaying Ethereum transactions proofs: {}", err); - return; - } - }) - .await; - } - ("", _) => { - log::error!(target: "bridge", "No subcommand specified"); - } - _ => unreachable!("all possible subcommands are checked above; qed"), - } -} - -fn ethereum_connection_params(matches: &clap::ArgMatches) -> Result { - let mut params = EthereumConnectionParams::default(); - if let Some(eth_host) = matches.value_of("eth-host") { - params.host = eth_host.into(); - } - if let Some(eth_port) = matches.value_of("eth-port") { - params.port = eth_port - .parse() - .map_err(|e| format!("Failed to parse eth-port: {}", e))?; - } - Ok(params) -} - -fn ethereum_signing_params(matches: &clap::ArgMatches) -> Result { - let mut params = EthereumSigningParams::default(); - if let Some(eth_signer) = matches.value_of("eth-signer") { - params.signer = - SecretKey::parse_slice(&hex::decode(eth_signer).map_err(|e| format!("Failed to parse eth-signer: {}", e))?) - .map_err(|e| format!("Invalid eth-signer: {}", e))?; - } - if let Some(eth_chain_id) = matches.value_of("eth-chain-id") { - params.chain_id = eth_chain_id - .parse::() - .map_err(|e| format!("Failed to parse eth-chain-id: {}", e))?; - } - Ok(params) -} - -fn substrate_connection_params(matches: &clap::ArgMatches) -> Result { - let mut params = SubstrateConnectionParams::default(); - if let Some(sub_host) = matches.value_of("sub-host") { - params.host = sub_host.into(); - } - if let Some(sub_port) = matches.value_of("sub-port") { - params.port = sub_port - .parse() - .map_err(|e| format!("Failed to parse sub-port: {}", e))?; - } - Ok(params) -} - -fn rialto_signing_params(matches: &clap::ArgMatches) -> Result { - let mut params = sp_keyring::AccountKeyring::Alice.pair(); - - if let Some(sub_signer) = matches.value_of("sub-signer") { - let sub_signer_password = matches.value_of("sub-signer-password"); - params = sp_core::sr25519::Pair::from_string(sub_signer, sub_signer_password) - .map_err(|e| format!("Failed to parse sub-signer: {:?}", e))?; - } - Ok(params) -} - -fn ethereum_sync_params(matches: &clap::ArgMatches) -> Result { - use crate::ethereum_sync_loop::consts::*; - - let mut sync_params = HeadersSyncParams { - max_future_headers_to_download: MAX_FUTURE_HEADERS_TO_DOWNLOAD, - max_headers_in_submitted_status: MAX_SUBMITTED_HEADERS, - max_headers_in_single_submit: MAX_HEADERS_IN_SINGLE_SUBMIT, - max_headers_size_in_single_submit: MAX_HEADERS_SIZE_IN_SINGLE_SUBMIT, - prune_depth: PRUNE_DEPTH, - target_tx_mode: TargetTransactionMode::Signed, - }; - - match matches.value_of("sub-tx-mode") { - Some("signed") => sync_params.target_tx_mode = TargetTransactionMode::Signed, - Some("unsigned") => { - sync_params.target_tx_mode = TargetTransactionMode::Unsigned; - - // tx pool won't accept too much unsigned transactions - sync_params.max_headers_in_submitted_status = 10; - } - Some("backup") => sync_params.target_tx_mode = TargetTransactionMode::Backup, - Some(mode) => return Err(format!("Invalid sub-tx-mode: {}", mode)), - None => sync_params.target_tx_mode = TargetTransactionMode::Signed, - } - - let params = EthereumSyncParams { - eth_params: ethereum_connection_params(matches)?, - sub_params: substrate_connection_params(matches)?, - sub_sign: rialto_signing_params(matches)?, - metrics_params: metrics_params(matches)?, - instance: instance_params(matches)?, - sync_params, - }; - - log::debug!(target: "bridge", "Ethereum sync params: {:?}", params); - - Ok(params) -} - -fn substrate_sync_params(matches: &clap::ArgMatches) -> Result { - use crate::substrate_sync_loop::consts::*; - - let eth_contract_address: relay_ethereum_client::types::Address = - if let Some(eth_contract) = matches.value_of("eth-contract") { - eth_contract.parse().map_err(|e| format!("{}", e))? - } else { - "731a10897d267e19b34503ad902d0a29173ba4b1" - .parse() - .expect("address is hardcoded, thus valid; qed") - }; - - let params = SubstrateSyncParams { - sub_params: substrate_connection_params(matches)?, - eth_params: ethereum_connection_params(matches)?, - eth_sign: ethereum_signing_params(matches)?, - metrics_params: metrics_params(matches)?, - sync_params: HeadersSyncParams { - max_future_headers_to_download: MAX_FUTURE_HEADERS_TO_DOWNLOAD, - max_headers_in_submitted_status: MAX_SUBMITTED_HEADERS, - max_headers_in_single_submit: MAX_SUBMITTED_HEADERS, - max_headers_size_in_single_submit: std::usize::MAX, - prune_depth: PRUNE_DEPTH, - target_tx_mode: TargetTransactionMode::Signed, - }, - eth_contract_address, - }; - - log::debug!(target: "bridge", "Substrate sync params: {:?}", params); - - Ok(params) -} - -fn ethereum_deploy_contract_params(matches: &clap::ArgMatches) -> Result { - let eth_contract_code = parse_hex_argument(matches, "eth-contract-code")?.unwrap_or_else(|| { - hex::decode(include_str!("../res/substrate-bridge-bytecode.hex")).expect("code is hardcoded, thus valid; qed") - }); - let sub_initial_authorities_set_id = matches - .value_of("sub-authorities-set-id") - .map(|set| { - set.parse() - .map_err(|e| format!("Failed to parse sub-authorities-set-id: {}", e)) - }) - .transpose()?; - let sub_initial_authorities_set = parse_hex_argument(matches, "sub-authorities-set")?; - let sub_initial_header = parse_hex_argument(matches, "sub-initial-header")?; - - let params = EthereumDeployContractParams { - eth_params: ethereum_connection_params(matches)?, - eth_sign: ethereum_signing_params(matches)?, - sub_params: substrate_connection_params(matches)?, - sub_initial_authorities_set_id, - sub_initial_authorities_set, - sub_initial_header, - eth_contract_code, - }; - - log::debug!(target: "bridge", "Deploy params: {:?}", params); - - Ok(params) -} - -fn ethereum_exchange_submit_params(matches: &clap::ArgMatches) -> Result { - let eth_nonce = matches - .value_of("eth-nonce") - .map(|eth_nonce| { - relay_ethereum_client::types::U256::from_dec_str(eth_nonce) - .map_err(|e| format!("Failed to parse eth-nonce: {}", e)) - }) - .transpose()?; - - let eth_amount = matches - .value_of("eth-amount") - .map(|eth_amount| { - eth_amount - .parse() - .map_err(|e| format!("Failed to parse eth-amount: {}", e)) - }) - .transpose()? - .unwrap_or_else(|| { - // This is in Wei, represents 1 ETH - 1_000_000_000_000_000_000_u64.into() - }); - - // This is the well-known Substrate account of Ferdie - let default_recepient = hex!("1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c"); - - let sub_recipient = if let Some(sub_recipient) = matches.value_of("sub-recipient") { - hex::decode(&sub_recipient) - .map_err(|err| err.to_string()) - .and_then(|vsub_recipient| { - let expected_len = default_recepient.len(); - if expected_len != vsub_recipient.len() { - Err(format!("invalid length. Expected {} bytes", expected_len)) - } else { - let mut sub_recipient = default_recepient; - sub_recipient.copy_from_slice(&vsub_recipient[..expected_len]); - Ok(sub_recipient) - } - }) - .map_err(|e| format!("Failed to parse sub-recipient: {}", e))? - } else { - default_recepient - }; - - let params = EthereumExchangeSubmitParams { - eth_params: ethereum_connection_params(matches)?, - eth_sign: ethereum_signing_params(matches)?, - eth_nonce, - eth_amount, - sub_recipient, - }; - - log::debug!(target: "bridge", "Submit Ethereum exchange tx params: {:?}", params); - - Ok(params) -} - -fn ethereum_exchange_params(matches: &clap::ArgMatches) -> Result { - let mode = match matches.value_of("eth-tx-hash") { - Some(eth_tx_hash) => ethereum_exchange::ExchangeRelayMode::Single( - eth_tx_hash - .parse() - .map_err(|e| format!("Failed to parse eth-tx-hash: {}", e))?, - ), - None => ethereum_exchange::ExchangeRelayMode::Auto( - matches - .value_of("eth-start-with-block") - .map(|eth_start_with_block| { - eth_start_with_block - .parse() - .map_err(|e| format!("Failed to parse eth-start-with-block: {}", e)) - }) - .transpose()?, - ), - }; - - let params = EthereumExchangeParams { - eth_params: ethereum_connection_params(matches)?, - sub_params: substrate_connection_params(matches)?, - sub_sign: rialto_signing_params(matches)?, - metrics_params: metrics_params(matches)?, - instance: instance_params(matches)?, - mode, - }; - - log::debug!(target: "bridge", "Ethereum exchange params: {:?}", params); - - Ok(params) -} - -fn metrics_params(matches: &clap::ArgMatches) -> Result { - if matches.is_present("no-prometheus") { - return Ok(None.into()); - } - - let mut metrics_params = MetricsAddress::default(); - - if let Some(prometheus_host) = matches.value_of("prometheus-host") { - metrics_params.host = prometheus_host.into(); - } - if let Some(prometheus_port) = matches.value_of("prometheus-port") { - metrics_params.port = prometheus_port - .parse() - .map_err(|e| format!("Failed to parse prometheus-port: {}", e))?; - } - - Ok(Some(metrics_params).into()) -} - -fn instance_params(matches: &clap::ArgMatches) -> Result, String> { - let instance = if let Some(instance) = matches.value_of("sub-pallet-instance") { - match instance.to_lowercase().as_str() { - "rialto" => Arc::new(RialtoPoA) as Arc, - "kovan" => Arc::new(Kovan), - _ => return Err("Unsupported bridge pallet instance".to_string()), - } - } else { - unreachable!("CLI config enforces a default instance, can never be None") - }; - - Ok(instance) -} - -fn parse_hex_argument(matches: &clap::ArgMatches, arg: &str) -> Result>, String> { - match matches.value_of(arg) { - Some(value) => Ok(Some( - hex::decode(value).map_err(|e| format!("Failed to parse {}: {}", arg, e))?, - )), - None => Ok(None), - } -} diff --git a/bridges/relays/bin-ethereum/src/rialto_client.rs b/bridges/relays/bin-ethereum/src/rialto_client.rs deleted file mode 100644 index d9c0f265cbb9..000000000000 --- a/bridges/relays/bin-ethereum/src/rialto_client.rs +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::ethereum_sync_loop::QueuedEthereumHeader; -use crate::instances::BridgeInstance; -use crate::rpc_errors::RpcError; - -use async_trait::async_trait; -use bp_eth_poa::AuraHeader as SubstrateEthereumHeader; -use codec::{Decode, Encode}; -use headers_relay::sync_types::SubmittedHeaders; -use relay_ethereum_client::types::HeaderId as EthereumHeaderId; -use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{Client as SubstrateClient, TransactionSignScheme}; -use relay_utils::HeaderId; -use sp_core::{crypto::Pair, Bytes}; -use std::{collections::VecDeque, sync::Arc}; - -const ETH_API_IMPORT_REQUIRES_RECEIPTS: &str = "RialtoPoAHeaderApi_is_import_requires_receipts"; -const ETH_API_IS_KNOWN_BLOCK: &str = "RialtoPoAHeaderApi_is_known_block"; -const ETH_API_BEST_BLOCK: &str = "RialtoPoAHeaderApi_best_block"; -const ETH_API_BEST_FINALIZED_BLOCK: &str = "RialtoPoAHeaderApi_finalized_block"; -const EXCH_API_FILTER_TRANSACTION_PROOF: &str = "RialtoCurrencyExchangeApi_filter_transaction_proof"; - -type RpcResult = std::result::Result; - -/// A trait which contains methods that work by using multiple low-level RPCs, or more complicated -/// interactions involving, for example, an Ethereum bridge module. -#[async_trait] -pub trait SubstrateHighLevelRpc { - /// Returns best Ethereum block that Substrate runtime knows of. - async fn best_ethereum_block(&self) -> RpcResult; - /// Returns best finalized Ethereum block that Substrate runtime knows of. - async fn best_ethereum_finalized_block(&self) -> RpcResult; - /// Returns whether or not transactions receipts are required for Ethereum header submission. - async fn ethereum_receipts_required(&self, header: SubstrateEthereumHeader) -> RpcResult; - /// Returns whether or not the given Ethereum header is known to the Substrate runtime. - async fn ethereum_header_known(&self, header_id: EthereumHeaderId) -> RpcResult; -} - -#[async_trait] -impl SubstrateHighLevelRpc for SubstrateClient { - async fn best_ethereum_block(&self) -> RpcResult { - let call = ETH_API_BEST_BLOCK.to_string(); - let data = Bytes(Vec::new()); - - let encoded_response = self.state_call(call, data, None).await?; - let decoded_response: (u64, bp_eth_poa::H256) = Decode::decode(&mut &encoded_response.0[..])?; - - let best_header_id = HeaderId(decoded_response.0, decoded_response.1); - Ok(best_header_id) - } - - async fn best_ethereum_finalized_block(&self) -> RpcResult { - let call = ETH_API_BEST_FINALIZED_BLOCK.to_string(); - let data = Bytes(Vec::new()); - - let encoded_response = self.state_call(call, data, None).await?; - let decoded_response: (u64, bp_eth_poa::H256) = Decode::decode(&mut &encoded_response.0[..])?; - - let best_header_id = HeaderId(decoded_response.0, decoded_response.1); - Ok(best_header_id) - } - - async fn ethereum_receipts_required(&self, header: SubstrateEthereumHeader) -> RpcResult { - let call = ETH_API_IMPORT_REQUIRES_RECEIPTS.to_string(); - let data = Bytes(header.encode()); - - let encoded_response = self.state_call(call, data, None).await?; - let receipts_required: bool = Decode::decode(&mut &encoded_response.0[..])?; - - Ok(receipts_required) - } - - // The Substrate module could prune old headers. So this function could return false even - // if header is synced. And we'll mark corresponding Ethereum header as Orphan. - // - // But when we read the best header from Substrate next time, we will know that - // there's a better header. This Orphan will either be marked as synced, or - // eventually pruned. - async fn ethereum_header_known(&self, header_id: EthereumHeaderId) -> RpcResult { - let call = ETH_API_IS_KNOWN_BLOCK.to_string(); - let data = Bytes(header_id.1.encode()); - - let encoded_response = self.state_call(call, data, None).await?; - let is_known_block: bool = Decode::decode(&mut &encoded_response.0[..])?; - - Ok(is_known_block) - } -} - -/// A trait for RPC calls which are used to submit Ethereum headers to a Substrate -/// runtime. These are typically calls which use a combination of other low-level RPC -/// calls. -#[async_trait] -pub trait SubmitEthereumHeaders { - /// Submits Ethereum header to Substrate runtime. - async fn submit_ethereum_headers( - &self, - params: RialtoSigningParams, - instance: Arc, - headers: Vec, - sign_transactions: bool, - ) -> SubmittedHeaders; - - /// Submits signed Ethereum header to Substrate runtime. - async fn submit_signed_ethereum_headers( - &self, - params: RialtoSigningParams, - instance: Arc, - headers: Vec, - ) -> SubmittedHeaders; - - /// Submits unsigned Ethereum header to Substrate runtime. - async fn submit_unsigned_ethereum_headers( - &self, - instance: Arc, - headers: Vec, - ) -> SubmittedHeaders; -} - -#[async_trait] -impl SubmitEthereumHeaders for SubstrateClient { - async fn submit_ethereum_headers( - &self, - params: RialtoSigningParams, - instance: Arc, - headers: Vec, - sign_transactions: bool, - ) -> SubmittedHeaders { - if sign_transactions { - self.submit_signed_ethereum_headers(params, instance, headers).await - } else { - self.submit_unsigned_ethereum_headers(instance, headers).await - } - } - - async fn submit_signed_ethereum_headers( - &self, - params: RialtoSigningParams, - instance: Arc, - headers: Vec, - ) -> SubmittedHeaders { - let ids = headers.iter().map(|header| header.id()).collect(); - let submission_result = async { - self.submit_signed_extrinsic((*params.public().as_array_ref()).into(), |transaction_nonce| { - Bytes( - Rialto::sign_transaction( - *self.genesis_hash(), - ¶ms, - transaction_nonce, - instance.build_signed_header_call(headers), - ) - .encode(), - ) - }) - .await?; - Ok(()) - } - .await; - - match submission_result { - Ok(_) => SubmittedHeaders { - submitted: ids, - incomplete: Vec::new(), - rejected: Vec::new(), - fatal_error: None, - }, - Err(error) => SubmittedHeaders { - submitted: Vec::new(), - incomplete: Vec::new(), - rejected: ids, - fatal_error: Some(error), - }, - } - } - - async fn submit_unsigned_ethereum_headers( - &self, - instance: Arc, - headers: Vec, - ) -> SubmittedHeaders { - let mut ids = headers.iter().map(|header| header.id()).collect::>(); - let mut submitted_headers = SubmittedHeaders::default(); - - for header in headers { - let id = ids.pop_front().expect("both collections have same size; qed"); - - let call = instance.build_unsigned_header_call(header); - let transaction = create_unsigned_submit_transaction(call); - - match self.submit_unsigned_extrinsic(Bytes(transaction.encode())).await { - Ok(_) => submitted_headers.submitted.push(id), - Err(error) => { - submitted_headers.rejected.push(id); - submitted_headers.rejected.extend(ids); - submitted_headers.fatal_error = Some(error.into()); - break; - } - } - } - - submitted_headers - } -} - -/// A trait for RPC calls which are used to submit proof of Ethereum exchange transaction to a -/// Substrate runtime. These are typically calls which use a combination of other low-level RPC -/// calls. -#[async_trait] -pub trait SubmitEthereumExchangeTransactionProof { - /// Pre-verify Ethereum exchange transaction proof. - async fn verify_exchange_transaction_proof( - &self, - proof: rialto_runtime::exchange::EthereumTransactionInclusionProof, - ) -> RpcResult; - /// Submits Ethereum exchange transaction proof to Substrate runtime. - async fn submit_exchange_transaction_proof( - &self, - params: RialtoSigningParams, - instance: Arc, - proof: rialto_runtime::exchange::EthereumTransactionInclusionProof, - ) -> RpcResult<()>; -} - -#[async_trait] -impl SubmitEthereumExchangeTransactionProof for SubstrateClient { - async fn verify_exchange_transaction_proof( - &self, - proof: rialto_runtime::exchange::EthereumTransactionInclusionProof, - ) -> RpcResult { - let call = EXCH_API_FILTER_TRANSACTION_PROOF.to_string(); - let data = Bytes(proof.encode()); - - let encoded_response = self.state_call(call, data, None).await?; - let is_allowed: bool = Decode::decode(&mut &encoded_response.0[..])?; - - Ok(is_allowed) - } - - async fn submit_exchange_transaction_proof( - &self, - params: RialtoSigningParams, - instance: Arc, - proof: rialto_runtime::exchange::EthereumTransactionInclusionProof, - ) -> RpcResult<()> { - self.submit_signed_extrinsic((*params.public().as_array_ref()).into(), |transaction_nonce| { - Bytes( - Rialto::sign_transaction( - *self.genesis_hash(), - ¶ms, - transaction_nonce, - instance.build_currency_exchange_call(proof), - ) - .encode(), - ) - }) - .await?; - Ok(()) - } -} - -/// Create unsigned Substrate transaction for submitting Ethereum header. -fn create_unsigned_submit_transaction(call: rialto_runtime::Call) -> rialto_runtime::UncheckedExtrinsic { - rialto_runtime::UncheckedExtrinsic::new_unsigned(call) -} diff --git a/bridges/relays/bin-ethereum/src/rpc_errors.rs b/bridges/relays/bin-ethereum/src/rpc_errors.rs deleted file mode 100644 index 27b233135f32..000000000000 --- a/bridges/relays/bin-ethereum/src/rpc_errors.rs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use relay_ethereum_client::Error as EthereumNodeError; -use relay_substrate_client::Error as SubstrateNodeError; -use relay_utils::MaybeConnectionError; - -/// Contains common errors that can occur when -/// interacting with a Substrate or Ethereum node -/// through RPC. -#[derive(Debug)] -pub enum RpcError { - /// The arguments to the RPC method failed to serialize. - Serialization(serde_json::Error), - /// An error occured when interacting with an Ethereum node. - Ethereum(EthereumNodeError), - /// An error occured when interacting with a Substrate node. - Substrate(SubstrateNodeError), - /// Error running relay loop. - SyncLoop(String), -} - -impl From for String { - fn from(err: RpcError) -> Self { - match err { - RpcError::Serialization(e) => e.to_string(), - RpcError::Ethereum(e) => e.to_string(), - RpcError::Substrate(e) => e.to_string(), - RpcError::SyncLoop(e) => e, - } - } -} - -impl From for RpcError { - fn from(err: serde_json::Error) -> Self { - Self::Serialization(err) - } -} - -impl From for RpcError { - fn from(err: EthereumNodeError) -> Self { - Self::Ethereum(err) - } -} - -impl From for RpcError { - fn from(err: SubstrateNodeError) -> Self { - Self::Substrate(err) - } -} - -impl From for RpcError { - fn from(err: ethabi::Error) -> Self { - Self::Ethereum(EthereumNodeError::ResponseParseFailed(format!("{}", err))) - } -} - -impl MaybeConnectionError for RpcError { - fn is_connection_error(&self) -> bool { - match self { - RpcError::Ethereum(ref error) => error.is_connection_error(), - RpcError::Substrate(ref error) => error.is_connection_error(), - _ => false, - } - } -} - -impl From for RpcError { - fn from(err: codec::Error) -> Self { - Self::Substrate(SubstrateNodeError::ResponseParseFailed(err)) - } -} diff --git a/bridges/relays/bin-ethereum/src/substrate_sync_loop.rs b/bridges/relays/bin-ethereum/src/substrate_sync_loop.rs deleted file mode 100644 index 542fd41f7273..000000000000 --- a/bridges/relays/bin-ethereum/src/substrate_sync_loop.rs +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rialto-Substrate -> Ethereum PoA synchronization. - -use crate::ethereum_client::EthereumHighLevelRpc; -use crate::rpc_errors::RpcError; - -use async_trait::async_trait; -use codec::Encode; -use headers_relay::{ - sync::HeadersSyncParams, - sync_loop::TargetClient, - sync_types::{HeadersSyncPipeline, QueuedHeader, SourceHeader, SubmittedHeaders}, -}; -use relay_ethereum_client::{ - types::Address, Client as EthereumClient, ConnectionParams as EthereumConnectionParams, - SigningParams as EthereumSigningParams, -}; -use relay_rialto_client::{HeaderId as RialtoHeaderId, Rialto, SyncHeader as RialtoSyncHeader}; -use relay_substrate_client::{ - headers_source::HeadersSource, Chain as SubstrateChain, Client as SubstrateClient, - ConnectionParams as SubstrateConnectionParams, -}; -use relay_utils::{metrics::MetricsParams, relay_loop::Client as RelayClient}; -use sp_runtime::EncodedJustification; - -use std::fmt::Debug; -use std::{collections::HashSet, time::Duration}; - -pub mod consts { - use super::*; - - /// Interval at which we check new Ethereum blocks. - pub const ETHEREUM_TICK_INTERVAL: Duration = Duration::from_secs(5); - /// Max Ethereum headers we want to have in all 'before-submitted' states. - pub const MAX_FUTURE_HEADERS_TO_DOWNLOAD: usize = 8; - /// Max Ethereum headers count we want to have in 'submitted' state. - pub const MAX_SUBMITTED_HEADERS: usize = 4; - /// Max depth of in-memory headers in all states. Past this depth they will be forgotten (pruned). - pub const PRUNE_DEPTH: u32 = 256; -} - -/// Substrate synchronization parameters. -#[derive(Debug)] -pub struct SubstrateSyncParams { - /// Substrate connection params. - pub sub_params: SubstrateConnectionParams, - /// Ethereum connection params. - pub eth_params: EthereumConnectionParams, - /// Ethereum signing params. - pub eth_sign: EthereumSigningParams, - /// Ethereum bridge contract address. - pub eth_contract_address: Address, - /// Synchronization parameters. - pub sync_params: HeadersSyncParams, - /// Metrics parameters. - pub metrics_params: MetricsParams, -} - -/// Substrate synchronization pipeline. -#[derive(Clone, Copy, Debug)] -#[cfg_attr(test, derive(PartialEq))] -pub struct SubstrateHeadersSyncPipeline; - -impl HeadersSyncPipeline for SubstrateHeadersSyncPipeline { - const SOURCE_NAME: &'static str = "Substrate"; - const TARGET_NAME: &'static str = "Ethereum"; - - type Hash = rialto_runtime::Hash; - type Number = rialto_runtime::BlockNumber; - type Header = RialtoSyncHeader; - type Extra = (); - type Completion = EncodedJustification; - - fn estimate_size(source: &QueuedHeader) -> usize { - source.header().encode().len() - } -} - -/// Queued substrate header ID. -pub type QueuedRialtoHeader = QueuedHeader; - -/// Rialto node as headers source. -type SubstrateHeadersSource = HeadersSource; - -/// Ethereum client as Substrate headers target. -#[derive(Clone)] -struct EthereumHeadersTarget { - /// Ethereum node client. - client: EthereumClient, - /// Bridge contract address. - contract: Address, - /// Ethereum signing params. - sign_params: EthereumSigningParams, -} - -impl EthereumHeadersTarget { - fn new(client: EthereumClient, contract: Address, sign_params: EthereumSigningParams) -> Self { - Self { - client, - contract, - sign_params, - } - } -} - -#[async_trait] -impl RelayClient for EthereumHeadersTarget { - type Error = RpcError; - - async fn reconnect(&mut self) -> Result<(), RpcError> { - self.client.reconnect().await.map_err(Into::into) - } -} - -#[async_trait] -impl TargetClient for EthereumHeadersTarget { - async fn best_header_id(&self) -> Result { - // we can't continue to relay headers if Ethereum node is out of sync, because - // it may have already received (some of) headers that we're going to relay - self.client.ensure_synced().await?; - - self.client.best_substrate_block(self.contract).await - } - - async fn is_known_header(&self, id: RialtoHeaderId) -> Result<(RialtoHeaderId, bool), RpcError> { - self.client.substrate_header_known(self.contract, id).await - } - - async fn submit_headers(&self, headers: Vec) -> SubmittedHeaders { - self.client - .submit_substrate_headers(self.sign_params.clone(), self.contract, headers) - .await - } - - async fn incomplete_headers_ids(&self) -> Result, RpcError> { - self.client.incomplete_substrate_headers(self.contract).await - } - - async fn complete_header( - &self, - id: RialtoHeaderId, - completion: EncodedJustification, - ) -> Result { - self.client - .complete_substrate_header(self.sign_params.clone(), self.contract, id, completion) - .await - } - - async fn requires_extra(&self, header: QueuedRialtoHeader) -> Result<(RialtoHeaderId, bool), RpcError> { - Ok((header.header().id(), false)) - } -} - -/// Run Substrate headers synchronization. -pub async fn run(params: SubstrateSyncParams) -> Result<(), RpcError> { - let SubstrateSyncParams { - sub_params, - eth_params, - eth_sign, - eth_contract_address, - sync_params, - metrics_params, - } = params; - - let eth_client = EthereumClient::new(eth_params).await; - let sub_client = SubstrateClient::::new(sub_params).await; - - let target = EthereumHeadersTarget::new(eth_client, eth_contract_address, eth_sign); - let source = SubstrateHeadersSource::new(sub_client); - - headers_relay::sync_loop::run( - source, - Rialto::AVERAGE_BLOCK_INTERVAL, - target, - consts::ETHEREUM_TICK_INTERVAL, - (), - sync_params, - metrics_params, - futures::future::pending(), - ) - .await - .map_err(RpcError::SyncLoop)?; - - Ok(()) -} diff --git a/bridges/relays/bin-ethereum/src/substrate_types.rs b/bridges/relays/bin-ethereum/src/substrate_types.rs deleted file mode 100644 index af68d7e02855..000000000000 --- a/bridges/relays/bin-ethereum/src/substrate_types.rs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Converting between Ethereum headers and bridge module types. - -use bp_eth_poa::{ - AuraHeader as SubstrateEthereumHeader, LogEntry as SubstrateEthereumLogEntry, Receipt as SubstrateEthereumReceipt, - TransactionOutcome as SubstrateEthereumTransactionOutcome, -}; -use relay_ethereum_client::types::{ - Header as EthereumHeader, Receipt as EthereumReceipt, HEADER_ID_PROOF as ETHEREUM_HEADER_ID_PROOF, -}; - -/// Convert Ethereum header into Ethereum header for Substrate. -pub fn into_substrate_ethereum_header(header: &EthereumHeader) -> SubstrateEthereumHeader { - SubstrateEthereumHeader { - parent_hash: header.parent_hash, - timestamp: header.timestamp.as_u64(), - number: header.number.expect(ETHEREUM_HEADER_ID_PROOF).as_u64(), - author: header.author, - transactions_root: header.transactions_root, - uncles_hash: header.uncles_hash, - extra_data: header.extra_data.0.clone(), - state_root: header.state_root, - receipts_root: header.receipts_root, - log_bloom: header.logs_bloom.unwrap_or_default().data().into(), - gas_used: header.gas_used, - gas_limit: header.gas_limit, - difficulty: header.difficulty, - seal: header.seal_fields.iter().map(|s| s.0.clone()).collect(), - } -} - -/// Convert Ethereum transactions receipts into Ethereum transactions receipts for Substrate. -pub fn into_substrate_ethereum_receipts( - receipts: &Option>, -) -> Option> { - receipts - .as_ref() - .map(|receipts| receipts.iter().map(into_substrate_ethereum_receipt).collect()) -} - -/// Convert Ethereum transactions receipt into Ethereum transactions receipt for Substrate. -pub fn into_substrate_ethereum_receipt(receipt: &EthereumReceipt) -> SubstrateEthereumReceipt { - SubstrateEthereumReceipt { - gas_used: receipt.cumulative_gas_used, - log_bloom: receipt.logs_bloom.data().into(), - logs: receipt - .logs - .iter() - .map(|log_entry| SubstrateEthereumLogEntry { - address: log_entry.address, - topics: log_entry.topics.clone(), - data: log_entry.data.0.clone(), - }) - .collect(), - outcome: match (receipt.status, receipt.root) { - (Some(status), None) => SubstrateEthereumTransactionOutcome::StatusCode(status.as_u64() as u8), - (None, Some(root)) => SubstrateEthereumTransactionOutcome::StateRoot(root), - _ => SubstrateEthereumTransactionOutcome::Unknown, - }, - } -} diff --git a/bridges/relays/bin-substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml deleted file mode 100644 index c2f30546f30f..000000000000 --- a/bridges/relays/bin-substrate/Cargo.toml +++ /dev/null @@ -1,64 +0,0 @@ -[package] -name = "substrate-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -anyhow = "1.0" -async-std = "1.9.0" -async-trait = "0.1.42" -codec = { package = "parity-scale-codec", version = "2.0.0" } -futures = "0.3.12" -hex = "0.4" -log = "0.4.14" -num-format = "0.4" -num-traits = "0.2" -paste = "1.0" -structopt = "0.3" - -# Bridge dependencies - -bp-header-chain = { path = "../../primitives/header-chain" } -bp-kusama = { path = "../../primitives/chain-kusama" } -bp-messages = { path = "../../primitives/messages" } -bp-message-dispatch = { path = "../../primitives/message-dispatch" } -bp-millau = { path = "../../primitives/chain-millau" } -bp-polkadot = { path = "../../primitives/chain-polkadot" } -bp-rialto = { path = "../../primitives/chain-rialto" } -bp-rococo = { path = "../../primitives/chain-rococo" } -bp-wococo = { path = "../../primitives/chain-wococo" } -bp-runtime = { path = "../../primitives/runtime" } -bp-westend = { path = "../../primitives/chain-westend" } -bridge-runtime-common = { path = "../../bin/runtime-common" } -finality-grandpa = { version = "0.14.1" } -finality-relay = { path = "../finality" } -headers-relay = { path = "../headers" } -messages-relay = { path = "../messages" } -millau-runtime = { path = "../../bin/millau/runtime" } -pallet-bridge-messages = { path = "../../modules/messages" } -relay-kusama-client = { path = "../client-kusama" } -relay-millau-client = { path = "../client-millau" } -relay-polkadot-client = { path = "../client-polkadot" } -relay-rialto-client = { path = "../client-rialto" } -relay-rococo-client = { path = "../client-rococo" } -relay-wococo-client = { path = "../client-wococo" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } -relay-westend-client = { path = "../client-westend" } -rialto-runtime = { path = "../../bin/rialto/runtime" } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -hex-literal = "0.3" -pallet-bridge-grandpa = { path = "../../modules/grandpa" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/bin-substrate/src/chains/millau.rs b/bridges/relays/bin-substrate/src/chains/millau.rs deleted file mode 100644 index 3cba16ea32f4..000000000000 --- a/bridges/relays/bin-substrate/src/chains/millau.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Millau chain specification for CLI. - -use crate::cli::{ - bridge, - encode_call::{self, Call, CliEncodeCall}, - encode_message, send_message, CliChain, -}; -use bp_message_dispatch::{CallOrigin, MessagePayload}; -use codec::Decode; -use frame_support::weights::{DispatchInfo, GetDispatchInfo, Weight}; -use relay_millau_client::Millau; -use sp_version::RuntimeVersion; - -impl CliEncodeCall for Millau { - fn max_extrinsic_size() -> u32 { - bp_millau::max_extrinsic_size() - } - - fn encode_call(call: &Call) -> anyhow::Result { - Ok(match call { - Call::Raw { data } => Decode::decode(&mut &*data.0)?, - Call::Remark { remark_payload, .. } => millau_runtime::Call::System(millau_runtime::SystemCall::remark( - remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), - )), - Call::Transfer { recipient, amount } => millau_runtime::Call::Balances( - millau_runtime::BalancesCall::transfer(recipient.raw_id(), amount.cast()), - ), - Call::BridgeSendMessage { - lane, - payload, - fee, - bridge_instance_index, - } => match *bridge_instance_index { - bridge::MILLAU_TO_RIALTO_INDEX => { - let payload = Decode::decode(&mut &*payload.0)?; - millau_runtime::Call::BridgeRialtoMessages(millau_runtime::MessagesCall::send_message( - lane.0, - payload, - fee.cast(), - )) - } - _ => anyhow::bail!( - "Unsupported target bridge pallet with instance index: {}", - bridge_instance_index - ), - }, - }) - } - - fn get_dispatch_info(call: &millau_runtime::Call) -> anyhow::Result { - Ok(call.get_dispatch_info()) - } -} - -impl CliChain for Millau { - const RUNTIME_VERSION: RuntimeVersion = millau_runtime::VERSION; - - type KeyPair = sp_core::sr25519::Pair; - type MessagePayload = MessagePayload>; - - fn ss58_format() -> u16 { - millau_runtime::SS58Prefix::get() as u16 - } - - fn max_extrinsic_weight() -> Weight { - bp_millau::max_extrinsic_weight() - } - - // TODO [#854|#843] support multiple bridges? - fn encode_message(message: encode_message::MessagePayload) -> Result { - match message { - encode_message::MessagePayload::Raw { data } => MessagePayload::decode(&mut &*data.0) - .map_err(|e| format!("Failed to decode Millau's MessagePayload: {:?}", e)), - encode_message::MessagePayload::Call { mut call, mut sender } => { - type Source = Millau; - type Target = relay_rialto_client::Rialto; - - sender.enforce_chain::(); - let spec_version = Target::RUNTIME_VERSION.spec_version; - let origin = CallOrigin::SourceAccount(sender.raw_id()); - encode_call::preprocess_call::(&mut call, bridge::MILLAU_TO_RIALTO_INDEX); - let call = Target::encode_call(&call).map_err(|e| e.to_string())?; - let weight = call.get_dispatch_info().weight; - - Ok(send_message::message_payload(spec_version, weight, origin, &call)) - } - } - } -} diff --git a/bridges/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs b/bridges/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs deleted file mode 100644 index 58f0620b0764..000000000000 --- a/bridges/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Millau-to-Rialto headers sync entrypoint. - -use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate}; - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use relay_millau_client::{Millau, SyncHeader as MillauSyncHeader}; -use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use sp_core::{Bytes, Pair}; - -/// Millau-to-Rialto finality sync pipeline. -pub(crate) type MillauFinalityToRialto = SubstrateFinalityToSubstrate; - -impl SubstrateFinalitySyncPipeline for MillauFinalityToRialto { - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; - - type TargetChain = Rialto; - - fn transactions_author(&self) -> bp_rialto::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: MillauSyncHeader, - proof: GrandpaJustification, - ) -> Bytes { - let call = rialto_runtime::BridgeGrandpaMillauCall::submit_finality_proof(header.into_inner(), proof).into(); - - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Rialto::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - - Bytes(transaction.encode()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs b/bridges/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs deleted file mode 100644 index 31dc51e9c27b..000000000000 --- a/bridges/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Millau-to-Rialto messages sync entrypoint. - -use crate::messages_lane::{ - select_delivery_transaction_limits, MessagesRelayParams, SubstrateMessageLane, SubstrateMessageLaneToSubstrate, -}; -use crate::messages_source::SubstrateMessagesSource; -use crate::messages_target::SubstrateMessagesTarget; - -use bp_messages::MessageNonce; -use bp_runtime::{MILLAU_CHAIN_ID, RIALTO_CHAIN_ID}; -use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; -use codec::Encode; -use frame_support::dispatch::GetDispatchInfo; -use messages_relay::message_lane::MessageLane; -use relay_millau_client::{HeaderId as MillauHeaderId, Millau, SigningParams as MillauSigningParams}; -use relay_rialto_client::{HeaderId as RialtoHeaderId, Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{ - metrics::{FloatStorageValueMetric, StorageProofOverheadMetric}, - Chain, TransactionSignScheme, -}; -use sp_core::{Bytes, Pair}; -use std::{ops::RangeInclusive, time::Duration}; - -/// Millau-to-Rialto message lane. -pub type MillauMessagesToRialto = - SubstrateMessageLaneToSubstrate; - -impl SubstrateMessageLane for MillauMessagesToRialto { - const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = bp_rialto::TO_RIALTO_MESSAGE_DETAILS_METHOD; - const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = - bp_rialto::TO_RIALTO_LATEST_GENERATED_NONCE_METHOD; - const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_rialto::TO_RIALTO_LATEST_RECEIVED_NONCE_METHOD; - - const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_millau::FROM_MILLAU_LATEST_RECEIVED_NONCE_METHOD; - const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = - bp_millau::FROM_MILLAU_LATEST_CONFIRMED_NONCE_METHOD; - const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = bp_millau::FROM_MILLAU_UNREWARDED_RELAYERS_STATE; - - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; - const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; - - type SourceChain = Millau; - type TargetChain = Rialto; - - fn source_transactions_author(&self) -> bp_millau::AccountId { - (*self.source_sign.public().as_array_ref()).into() - } - - fn make_messages_receiving_proof_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_block: RialtoHeaderId, - proof: ::MessagesReceivingProof, - ) -> Bytes { - let (relayers_state, proof) = proof; - let call: millau_runtime::Call = - millau_runtime::MessagesCall::receive_messages_delivery_proof(proof, relayers_state).into(); - let call_weight = call.get_dispatch_info().weight; - let genesis_hash = *self.source_client.genesis_hash(); - let transaction = Millau::sign_transaction(genesis_hash, &self.source_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Rialto -> Millau confirmation transaction. Weight: {}/{}, size: {}/{}", - call_weight, - bp_millau::max_extrinsic_weight(), - transaction.encode().len(), - bp_millau::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } - - fn target_transactions_author(&self) -> bp_rialto::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_messages_delivery_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_header: MillauHeaderId, - _nonces: RangeInclusive, - proof: ::MessagesProof, - ) -> Bytes { - let (dispatch_weight, proof) = proof; - let FromBridgedChainMessagesProof { - ref nonces_start, - ref nonces_end, - .. - } = proof; - let messages_count = nonces_end - nonces_start + 1; - let call: rialto_runtime::Call = rialto_runtime::MessagesCall::receive_messages_proof( - self.relayer_id_at_source.clone(), - proof, - messages_count as _, - dispatch_weight, - ) - .into(); - let call_weight = call.get_dispatch_info().weight; - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Rialto::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Millau -> Rialto delivery transaction. Weight: {}/{}, size: {}/{}", - call_weight, - bp_rialto::max_extrinsic_weight(), - transaction.encode().len(), - bp_rialto::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } -} - -/// Millau node as messages source. -type MillauSourceClient = - SubstrateMessagesSource; - -/// Rialto node as messages target. -type RialtoTargetClient = - SubstrateMessagesTarget; - -/// Run Millau-to-Rialto messages sync. -pub async fn run( - params: MessagesRelayParams, -) -> Result<(), String> { - let stall_timeout = Duration::from_secs(5 * 60); - let relayer_id_at_millau = (*params.source_sign.public().as_array_ref()).into(); - - let lane_id = params.lane_id; - let source_client = params.source_client; - let lane = MillauMessagesToRialto { - source_client: source_client.clone(), - source_sign: params.source_sign, - target_client: params.target_client.clone(), - target_sign: params.target_sign, - relayer_id_at_source: relayer_id_at_millau, - }; - - // 2/3 is reserved for proofs and tx overhead - let max_messages_size_in_single_batch = bp_rialto::max_extrinsic_size() / 3; - // TODO: use Millau weights after https://github.com/paritytech/parity-bridges-common/issues/390 - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = - select_delivery_transaction_limits::>( - bp_rialto::max_extrinsic_weight(), - bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - ); - - log::info!( - target: "bridge", - "Starting Millau -> Rialto messages relay.\n\t\ - Millau relayer account id: {:?}\n\t\ - Max messages in single transaction: {}\n\t\ - Max messages size in single transaction: {}\n\t\ - Max messages weight in single transaction: {}", - lane.relayer_id_at_source, - max_messages_in_single_batch, - max_messages_size_in_single_batch, - max_messages_weight_in_single_batch, - ); - - messages_relay::message_lane_loop::run( - messages_relay::message_lane_loop::Params { - lane: lane_id, - source_tick: Millau::AVERAGE_BLOCK_INTERVAL, - target_tick: Rialto::AVERAGE_BLOCK_INTERVAL, - reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, - stall_timeout, - delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { - max_unrewarded_relayer_entries_at_target: bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - max_unconfirmed_nonces_at_target: bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - max_messages_in_single_batch, - max_messages_weight_in_single_batch, - max_messages_size_in_single_batch, - relayer_mode: messages_relay::message_lane_loop::RelayerMode::Altruistic, - }, - }, - MillauSourceClient::new( - source_client.clone(), - lane.clone(), - lane_id, - RIALTO_CHAIN_ID, - params.target_to_source_headers_relay, - ), - RialtoTargetClient::new( - params.target_client, - lane, - lane_id, - MILLAU_CHAIN_ID, - params.source_to_target_headers_relay, - ), - relay_utils::relay_metrics( - Some(messages_relay::message_lane_loop::metrics_prefix::< - MillauMessagesToRialto, - >(&lane_id)), - params.metrics_params, - ) - .standalone_metric(|registry, prefix| { - StorageProofOverheadMetric::new( - registry, - prefix, - source_client.clone(), - "millau_storage_proof_overhead".into(), - "Millau storage proof overhead".into(), - ) - })? - .standalone_metric(|registry, prefix| { - FloatStorageValueMetric::<_, sp_runtime::FixedU128>::new( - registry, - prefix, - source_client, - sp_core::storage::StorageKey( - millau_runtime::rialto_messages::RialtoToMillauConversionRate::key().to_vec(), - ), - Some(millau_runtime::rialto_messages::INITIAL_RIALTO_TO_MILLAU_CONVERSION_RATE), - "millau_rialto_to_millau_conversion_rate".into(), - "Rialto to Millau tokens conversion rate (used by Rialto)".into(), - ) - })? - .into_params(), - futures::future::pending(), - ) - .await -} diff --git a/bridges/relays/bin-substrate/src/chains/mod.rs b/bridges/relays/bin-substrate/src/chains/mod.rs deleted file mode 100644 index 09d3c3e9c060..000000000000 --- a/bridges/relays/bin-substrate/src/chains/mod.rs +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Chain-specific relayer configuration. - -pub mod millau_headers_to_rialto; -pub mod millau_messages_to_rialto; -pub mod rialto_headers_to_millau; -pub mod rialto_messages_to_millau; -pub mod rococo_headers_to_wococo; -pub mod rococo_messages_to_wococo; -pub mod westend_headers_to_millau; -pub mod wococo_headers_to_rococo; -pub mod wococo_messages_to_rococo; - -mod millau; -mod rialto; -mod rococo; -mod westend; -mod wococo; - -use relay_utils::metrics::{FloatJsonValueMetric, MetricsParams}; - -pub(crate) fn add_polkadot_kusama_price_metrics( - params: MetricsParams, -) -> anyhow::Result { - Ok( - relay_utils::relay_metrics(Some(finality_relay::metrics_prefix::()), params) - // Polkadot/Kusama prices are added as metrics here, because atm we don't have Polkadot <-> Kusama - // relays, but we want to test metrics/dashboards in advance - .standalone_metric(|registry, prefix| { - FloatJsonValueMetric::new( - registry, - prefix, - "https://api.coingecko.com/api/v3/simple/price?ids=Polkadot&vs_currencies=btc".into(), - "$.polkadot.btc".into(), - "polkadot_to_base_conversion_rate".into(), - "Rate used to convert from DOT to some BASE tokens".into(), - ) - }) - .map_err(|e| anyhow::format_err!("{}", e))? - .standalone_metric(|registry, prefix| { - FloatJsonValueMetric::new( - registry, - prefix, - "https://api.coingecko.com/api/v3/simple/price?ids=Kusama&vs_currencies=btc".into(), - "$.kusama.btc".into(), - "kusama_to_base_conversion_rate".into(), - "Rate used to convert from KSM to some BASE tokens".into(), - ) - }) - .map_err(|e| anyhow::format_err!("{}", e))? - .into_params(), - ) -} - -#[cfg(test)] -mod tests { - use crate::cli::{encode_call, send_message}; - use bp_messages::source_chain::TargetHeaderChain; - use codec::Encode; - use frame_support::dispatch::GetDispatchInfo; - use relay_millau_client::Millau; - use relay_rialto_client::Rialto; - use relay_substrate_client::TransactionSignScheme; - use sp_core::Pair; - use sp_runtime::traits::{IdentifyAccount, Verify}; - - #[test] - fn millau_signature_is_valid_on_rialto() { - let millau_sign = relay_millau_client::SigningParams::from_string("//Dave", None).unwrap(); - - let call = rialto_runtime::Call::System(rialto_runtime::SystemCall::remark(vec![])); - - let millau_public: bp_millau::AccountSigner = millau_sign.public().into(); - let millau_account_id: bp_millau::AccountId = millau_public.into_account(); - - let digest = millau_runtime::millau_to_rialto_account_ownership_digest( - &call, - millau_account_id, - rialto_runtime::VERSION.spec_version, - ); - - let rialto_signer = relay_rialto_client::SigningParams::from_string("//Dave", None).unwrap(); - let signature = rialto_signer.sign(&digest); - - assert!(signature.verify(&digest[..], &rialto_signer.public())); - } - - #[test] - fn rialto_signature_is_valid_on_millau() { - let rialto_sign = relay_rialto_client::SigningParams::from_string("//Dave", None).unwrap(); - - let call = millau_runtime::Call::System(millau_runtime::SystemCall::remark(vec![])); - - let rialto_public: bp_rialto::AccountSigner = rialto_sign.public().into(); - let rialto_account_id: bp_rialto::AccountId = rialto_public.into_account(); - - let digest = rialto_runtime::rialto_to_millau_account_ownership_digest( - &call, - rialto_account_id, - millau_runtime::VERSION.spec_version, - ); - - let millau_signer = relay_millau_client::SigningParams::from_string("//Dave", None).unwrap(); - let signature = millau_signer.sign(&digest); - - assert!(signature.verify(&digest[..], &millau_signer.public())); - } - - #[test] - fn maximal_rialto_to_millau_message_arguments_size_is_computed_correctly() { - use rialto_runtime::millau_messages::Millau; - - let maximal_remark_size = encode_call::compute_maximal_message_arguments_size( - bp_rialto::max_extrinsic_size(), - bp_millau::max_extrinsic_size(), - ); - - let call: millau_runtime::Call = millau_runtime::SystemCall::remark(vec![42; maximal_remark_size as _]).into(); - let payload = send_message::message_payload( - Default::default(), - call.get_dispatch_info().weight, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert_eq!(Millau::verify_message(&payload), Ok(())); - - let call: millau_runtime::Call = - millau_runtime::SystemCall::remark(vec![42; (maximal_remark_size + 1) as _]).into(); - let payload = send_message::message_payload( - Default::default(), - call.get_dispatch_info().weight, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert!(Millau::verify_message(&payload).is_err()); - } - - #[test] - fn maximal_size_remark_to_rialto_is_generated_correctly() { - assert!( - bridge_runtime_common::messages::target::maximal_incoming_message_size( - bp_rialto::max_extrinsic_size() - ) > bp_millau::max_extrinsic_size(), - "We can't actually send maximal messages to Rialto from Millau, because Millau extrinsics can't be that large", - ) - } - - #[test] - fn maximal_rialto_to_millau_message_dispatch_weight_is_computed_correctly() { - use rialto_runtime::millau_messages::Millau; - - let maximal_dispatch_weight = - send_message::compute_maximal_message_dispatch_weight(bp_millau::max_extrinsic_weight()); - let call: millau_runtime::Call = rialto_runtime::SystemCall::remark(vec![]).into(); - - let payload = send_message::message_payload( - Default::default(), - maximal_dispatch_weight, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert_eq!(Millau::verify_message(&payload), Ok(())); - - let payload = send_message::message_payload( - Default::default(), - maximal_dispatch_weight + 1, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert!(Millau::verify_message(&payload).is_err()); - } - - #[test] - fn maximal_weight_fill_block_to_rialto_is_generated_correctly() { - use millau_runtime::rialto_messages::Rialto; - - let maximal_dispatch_weight = - send_message::compute_maximal_message_dispatch_weight(bp_rialto::max_extrinsic_weight()); - let call: rialto_runtime::Call = millau_runtime::SystemCall::remark(vec![]).into(); - - let payload = send_message::message_payload( - Default::default(), - maximal_dispatch_weight, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert_eq!(Rialto::verify_message(&payload), Ok(())); - - let payload = send_message::message_payload( - Default::default(), - maximal_dispatch_weight + 1, - bp_message_dispatch::CallOrigin::SourceRoot, - &call, - ); - assert!(Rialto::verify_message(&payload).is_err()); - } - - #[test] - fn rialto_tx_extra_bytes_constant_is_correct() { - let rialto_call = rialto_runtime::Call::System(rialto_runtime::SystemCall::remark(vec![])); - let rialto_tx = Rialto::sign_transaction( - Default::default(), - &sp_keyring::AccountKeyring::Alice.pair(), - 0, - rialto_call.clone(), - ); - let extra_bytes_in_transaction = rialto_tx.encode().len() - rialto_call.encode().len(); - assert!( - bp_rialto::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction, - "Hardcoded number of extra bytes in Rialto transaction {} is lower than actual value: {}", - bp_rialto::TX_EXTRA_BYTES, - extra_bytes_in_transaction, - ); - } - - #[test] - fn millau_tx_extra_bytes_constant_is_correct() { - let millau_call = millau_runtime::Call::System(millau_runtime::SystemCall::remark(vec![])); - let millau_tx = Millau::sign_transaction( - Default::default(), - &sp_keyring::AccountKeyring::Alice.pair(), - 0, - millau_call.clone(), - ); - let extra_bytes_in_transaction = millau_tx.encode().len() - millau_call.encode().len(); - assert!( - bp_millau::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction, - "Hardcoded number of extra bytes in Millau transaction {} is lower than actual value: {}", - bp_millau::TX_EXTRA_BYTES, - extra_bytes_in_transaction, - ); - } -} - -#[cfg(test)] -mod rococo_tests { - use bp_header_chain::justification::GrandpaJustification; - use codec::Encode; - - #[test] - fn scale_compatibility_of_bridges_call() { - // given - let header = sp_runtime::generic::Header { - parent_hash: Default::default(), - number: Default::default(), - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: sp_runtime::generic::Digest { logs: vec![] }, - }; - - let justification = GrandpaJustification { - round: 0, - commit: finality_grandpa::Commit { - target_hash: Default::default(), - target_number: Default::default(), - precommits: vec![], - }, - votes_ancestries: vec![], - }; - - let actual = relay_rococo_client::runtime::BridgeGrandpaWococoCall::submit_finality_proof( - header.clone(), - justification.clone(), - ); - let expected = millau_runtime::BridgeGrandpaRialtoCall::::submit_finality_proof( - header, - justification, - ); - - // when - let actual_encoded = actual.encode(); - let expected_encoded = expected.encode(); - - // then - assert_eq!( - actual_encoded, expected_encoded, - "\n\nEncoding difference.\nGot {:#?} \nExpected: {:#?}", - actual, expected - ); - } -} - -#[cfg(test)] -mod westend_tests { - use bp_header_chain::justification::GrandpaJustification; - use codec::Encode; - - #[test] - fn scale_compatibility_of_bridges_call() { - // given - let header = sp_runtime::generic::Header { - parent_hash: Default::default(), - number: Default::default(), - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: sp_runtime::generic::Digest { logs: vec![] }, - }; - - let justification = GrandpaJustification { - round: 0, - commit: finality_grandpa::Commit { - target_hash: Default::default(), - target_number: Default::default(), - precommits: vec![], - }, - votes_ancestries: vec![], - }; - - let actual = bp_westend::BridgeGrandpaRococoCall::submit_finality_proof(header.clone(), justification.clone()); - let expected = millau_runtime::BridgeGrandpaRialtoCall::::submit_finality_proof( - header, - justification, - ); - - // when - let actual_encoded = actual.encode(); - let expected_encoded = expected.encode(); - - // then - assert_eq!( - actual_encoded, expected_encoded, - "\n\nEncoding difference.\nGot {:#?} \nExpected: {:#?}", - actual, expected - ); - } -} diff --git a/bridges/relays/bin-substrate/src/chains/rialto.rs b/bridges/relays/bin-substrate/src/chains/rialto.rs deleted file mode 100644 index 9a6185b4fc7d..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rialto.rs +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rialto chain specification for CLI. - -use crate::cli::{ - bridge, - encode_call::{self, Call, CliEncodeCall}, - encode_message, send_message, CliChain, -}; -use bp_message_dispatch::{CallOrigin, MessagePayload}; -use codec::Decode; -use frame_support::weights::{DispatchInfo, GetDispatchInfo, Weight}; -use relay_rialto_client::Rialto; -use sp_version::RuntimeVersion; - -impl CliEncodeCall for Rialto { - fn max_extrinsic_size() -> u32 { - bp_rialto::max_extrinsic_size() - } - - fn encode_call(call: &Call) -> anyhow::Result { - Ok(match call { - Call::Raw { data } => Decode::decode(&mut &*data.0)?, - Call::Remark { remark_payload, .. } => rialto_runtime::Call::System(rialto_runtime::SystemCall::remark( - remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), - )), - Call::Transfer { recipient, amount } => { - rialto_runtime::Call::Balances(rialto_runtime::BalancesCall::transfer(recipient.raw_id(), amount.0)) - } - Call::BridgeSendMessage { - lane, - payload, - fee, - bridge_instance_index, - } => match *bridge_instance_index { - bridge::RIALTO_TO_MILLAU_INDEX => { - let payload = Decode::decode(&mut &*payload.0)?; - rialto_runtime::Call::BridgeMillauMessages(rialto_runtime::MessagesCall::send_message( - lane.0, payload, fee.0, - )) - } - _ => anyhow::bail!( - "Unsupported target bridge pallet with instance index: {}", - bridge_instance_index - ), - }, - }) - } - - fn get_dispatch_info(call: &rialto_runtime::Call) -> anyhow::Result { - Ok(call.get_dispatch_info()) - } -} - -impl CliChain for Rialto { - const RUNTIME_VERSION: RuntimeVersion = rialto_runtime::VERSION; - - type KeyPair = sp_core::sr25519::Pair; - type MessagePayload = MessagePayload>; - - fn ss58_format() -> u16 { - rialto_runtime::SS58Prefix::get() as u16 - } - - fn max_extrinsic_weight() -> Weight { - bp_rialto::max_extrinsic_weight() - } - - fn encode_message(message: encode_message::MessagePayload) -> Result { - match message { - encode_message::MessagePayload::Raw { data } => MessagePayload::decode(&mut &*data.0) - .map_err(|e| format!("Failed to decode Rialto's MessagePayload: {:?}", e)), - encode_message::MessagePayload::Call { mut call, mut sender } => { - type Source = Rialto; - type Target = relay_millau_client::Millau; - - sender.enforce_chain::(); - let spec_version = Target::RUNTIME_VERSION.spec_version; - let origin = CallOrigin::SourceAccount(sender.raw_id()); - encode_call::preprocess_call::(&mut call, bridge::RIALTO_TO_MILLAU_INDEX); - let call = Target::encode_call(&call).map_err(|e| e.to_string())?; - let weight = call.get_dispatch_info().weight; - - Ok(send_message::message_payload(spec_version, weight, origin, &call)) - } - } - } -} diff --git a/bridges/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs b/bridges/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs deleted file mode 100644 index 39295c89433e..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rialto-to-Millau headers sync entrypoint. - -use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate}; - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use relay_millau_client::{Millau, SigningParams as MillauSigningParams}; -use relay_rialto_client::{Rialto, SyncHeader as RialtoSyncHeader}; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use sp_core::{Bytes, Pair}; - -/// Rialto-to-Millau finality sync pipeline. -pub(crate) type RialtoFinalityToMillau = SubstrateFinalityToSubstrate; - -impl SubstrateFinalitySyncPipeline for RialtoFinalityToMillau { - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; - - type TargetChain = Millau; - - fn transactions_author(&self) -> bp_millau::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: RialtoSyncHeader, - proof: GrandpaJustification, - ) -> Bytes { - let call = millau_runtime::BridgeGrandpaRialtoCall::< - millau_runtime::Runtime, - millau_runtime::RialtoGrandpaInstance, - >::submit_finality_proof(header.into_inner(), proof) - .into(); - - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Millau::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - - Bytes(transaction.encode()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs b/bridges/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs deleted file mode 100644 index 89f9dd7e997e..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rialto-to-Millau messages sync entrypoint. - -use crate::messages_lane::{ - select_delivery_transaction_limits, MessagesRelayParams, SubstrateMessageLane, SubstrateMessageLaneToSubstrate, -}; -use crate::messages_source::SubstrateMessagesSource; -use crate::messages_target::SubstrateMessagesTarget; - -use bp_messages::MessageNonce; -use bp_runtime::{MILLAU_CHAIN_ID, RIALTO_CHAIN_ID}; -use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; -use codec::Encode; -use frame_support::dispatch::GetDispatchInfo; -use messages_relay::message_lane::MessageLane; -use relay_millau_client::{HeaderId as MillauHeaderId, Millau, SigningParams as MillauSigningParams}; -use relay_rialto_client::{HeaderId as RialtoHeaderId, Rialto, SigningParams as RialtoSigningParams}; -use relay_substrate_client::{ - metrics::{FloatStorageValueMetric, StorageProofOverheadMetric}, - Chain, TransactionSignScheme, -}; -use sp_core::{Bytes, Pair}; -use std::{ops::RangeInclusive, time::Duration}; - -/// Rialto-to-Millau message lane. -pub type RialtoMessagesToMillau = - SubstrateMessageLaneToSubstrate; - -impl SubstrateMessageLane for RialtoMessagesToMillau { - const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = bp_millau::TO_MILLAU_MESSAGE_DETAILS_METHOD; - const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = - bp_millau::TO_MILLAU_LATEST_GENERATED_NONCE_METHOD; - const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_millau::TO_MILLAU_LATEST_RECEIVED_NONCE_METHOD; - - const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_rialto::FROM_RIALTO_LATEST_RECEIVED_NONCE_METHOD; - const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = - bp_rialto::FROM_RIALTO_LATEST_CONFIRMED_NONCE_METHOD; - const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = bp_rialto::FROM_RIALTO_UNREWARDED_RELAYERS_STATE; - - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; - const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; - - type SourceChain = Rialto; - type TargetChain = Millau; - - fn source_transactions_author(&self) -> bp_rialto::AccountId { - (*self.source_sign.public().as_array_ref()).into() - } - - fn make_messages_receiving_proof_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_block: MillauHeaderId, - proof: ::MessagesReceivingProof, - ) -> Bytes { - let (relayers_state, proof) = proof; - let call: rialto_runtime::Call = - rialto_runtime::MessagesCall::receive_messages_delivery_proof(proof, relayers_state).into(); - let call_weight = call.get_dispatch_info().weight; - let genesis_hash = *self.source_client.genesis_hash(); - let transaction = Rialto::sign_transaction(genesis_hash, &self.source_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Millau -> Rialto confirmation transaction. Weight: {}/{}, size: {}/{}", - call_weight, - bp_rialto::max_extrinsic_weight(), - transaction.encode().len(), - bp_rialto::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } - - fn target_transactions_author(&self) -> bp_millau::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_messages_delivery_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_header: RialtoHeaderId, - _nonces: RangeInclusive, - proof: ::MessagesProof, - ) -> Bytes { - let (dispatch_weight, proof) = proof; - let FromBridgedChainMessagesProof { - ref nonces_start, - ref nonces_end, - .. - } = proof; - let messages_count = nonces_end - nonces_start + 1; - let call: millau_runtime::Call = millau_runtime::MessagesCall::receive_messages_proof( - self.relayer_id_at_source.clone(), - proof, - messages_count as _, - dispatch_weight, - ) - .into(); - let call_weight = call.get_dispatch_info().weight; - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Millau::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Rialto -> Millau delivery transaction. Weight: {}/{}, size: {}/{}", - call_weight, - bp_millau::max_extrinsic_weight(), - transaction.encode().len(), - bp_millau::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } -} - -/// Rialto node as messages source. -type RialtoSourceClient = - SubstrateMessagesSource; - -/// Millau node as messages target. -type MillauTargetClient = - SubstrateMessagesTarget; - -/// Run Rialto-to-Millau messages sync. -pub async fn run( - params: MessagesRelayParams, -) -> Result<(), String> { - let stall_timeout = Duration::from_secs(5 * 60); - let relayer_id_at_rialto = (*params.source_sign.public().as_array_ref()).into(); - - let lane_id = params.lane_id; - let source_client = params.source_client; - let lane = RialtoMessagesToMillau { - source_client: source_client.clone(), - source_sign: params.source_sign, - target_client: params.target_client.clone(), - target_sign: params.target_sign, - relayer_id_at_source: relayer_id_at_rialto, - }; - - // 2/3 is reserved for proofs and tx overhead - let max_messages_size_in_single_batch = bp_millau::max_extrinsic_size() / 3; - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = - select_delivery_transaction_limits::>( - bp_millau::max_extrinsic_weight(), - bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - ); - - log::info!( - target: "bridge", - "Starting Rialto -> Millau messages relay.\n\t\ - Rialto relayer account id: {:?}\n\t\ - Max messages in single transaction: {}\n\t\ - Max messages size in single transaction: {}\n\t\ - Max messages weight in single transaction: {}", - lane.relayer_id_at_source, - max_messages_in_single_batch, - max_messages_size_in_single_batch, - max_messages_weight_in_single_batch, - ); - - messages_relay::message_lane_loop::run( - messages_relay::message_lane_loop::Params { - lane: lane_id, - source_tick: Rialto::AVERAGE_BLOCK_INTERVAL, - target_tick: Millau::AVERAGE_BLOCK_INTERVAL, - reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, - stall_timeout, - delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { - max_unrewarded_relayer_entries_at_target: bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - max_unconfirmed_nonces_at_target: bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - max_messages_in_single_batch, - max_messages_weight_in_single_batch, - max_messages_size_in_single_batch, - relayer_mode: messages_relay::message_lane_loop::RelayerMode::Altruistic, - }, - }, - RialtoSourceClient::new( - source_client.clone(), - lane.clone(), - lane_id, - MILLAU_CHAIN_ID, - params.target_to_source_headers_relay, - ), - MillauTargetClient::new( - params.target_client, - lane, - lane_id, - RIALTO_CHAIN_ID, - params.source_to_target_headers_relay, - ), - relay_utils::relay_metrics( - Some(messages_relay::message_lane_loop::metrics_prefix::< - RialtoMessagesToMillau, - >(&lane_id)), - params.metrics_params, - ) - .standalone_metric(|registry, prefix| { - StorageProofOverheadMetric::new( - registry, - prefix, - source_client.clone(), - "rialto_storage_proof_overhead".into(), - "Rialto storage proof overhead".into(), - ) - })? - .standalone_metric(|registry, prefix| { - FloatStorageValueMetric::<_, sp_runtime::FixedU128>::new( - registry, - prefix, - source_client, - sp_core::storage::StorageKey( - rialto_runtime::millau_messages::MillauToRialtoConversionRate::key().to_vec(), - ), - Some(rialto_runtime::millau_messages::INITIAL_MILLAU_TO_RIALTO_CONVERSION_RATE), - "rialto_millau_to_rialto_conversion_rate".into(), - "Millau to Rialto tokens conversion rate (used by Millau)".into(), - ) - })? - .into_params(), - futures::future::pending(), - ) - .await -} diff --git a/bridges/relays/bin-substrate/src/chains/rococo.rs b/bridges/relays/bin-substrate/src/chains/rococo.rs deleted file mode 100644 index ec94450a63de..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rococo.rs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use codec::Decode; -use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; -use relay_rococo_client::Rococo; -use sp_version::RuntimeVersion; - -use crate::cli::{ - bridge, - encode_call::{Call, CliEncodeCall}, - encode_message, CliChain, -}; - -/// Weight of the `system::remark` call at Rococo. -/// -/// This weight is larger (x2) than actual weight at current Rooco runtime to avoid unsuccessful -/// calls in the future. But since it is used only in tests (and on test chains), this is ok. -pub(crate) const SYSTEM_REMARK_CALL_WEIGHT: Weight = 2 * 1_345_000; - -impl CliEncodeCall for Rococo { - fn max_extrinsic_size() -> u32 { - bp_rococo::max_extrinsic_size() - } - - fn encode_call(call: &Call) -> anyhow::Result { - Ok(match call { - Call::Remark { remark_payload, .. } => { - relay_rococo_client::runtime::Call::System(relay_rococo_client::runtime::SystemCall::remark( - remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), - )) - } - Call::BridgeSendMessage { - lane, - payload, - fee, - bridge_instance_index, - } => match *bridge_instance_index { - bridge::ROCOCO_TO_WOCOCO_INDEX => { - let payload = Decode::decode(&mut &*payload.0)?; - relay_rococo_client::runtime::Call::BridgeMessagesWococo( - relay_rococo_client::runtime::BridgeMessagesWococoCall::send_message(lane.0, payload, fee.0), - ) - } - _ => anyhow::bail!( - "Unsupported target bridge pallet with instance index: {}", - bridge_instance_index - ), - }, - _ => anyhow::bail!("The call is not supported"), - }) - } - - fn get_dispatch_info(call: &relay_rococo_client::runtime::Call) -> anyhow::Result { - match *call { - relay_rococo_client::runtime::Call::System(relay_rococo_client::runtime::SystemCall::remark(_)) => { - Ok(DispatchInfo { - weight: SYSTEM_REMARK_CALL_WEIGHT, - class: DispatchClass::Normal, - pays_fee: Pays::Yes, - }) - } - _ => anyhow::bail!("Unsupported Rococo call: {:?}", call), - } - } -} - -impl CliChain for Rococo { - const RUNTIME_VERSION: RuntimeVersion = bp_rococo::VERSION; - - type KeyPair = sp_core::sr25519::Pair; - type MessagePayload = (); - - fn ss58_format() -> u16 { - 42 - } - - fn max_extrinsic_weight() -> Weight { - bp_wococo::max_extrinsic_weight() - } - - fn encode_message(_message: encode_message::MessagePayload) -> Result { - Err("Sending messages from Rococo is not yet supported.".into()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs b/bridges/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs deleted file mode 100644 index c7f60100f13c..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rococo-to-Wococo headers sync entrypoint. - -use crate::chains::wococo_headers_to_rococo::MAXIMAL_BALANCE_DECREASE_PER_DAY; -use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate}; - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use relay_rococo_client::{Rococo, SyncHeader as RococoSyncHeader}; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use relay_utils::metrics::MetricsParams; -use relay_wococo_client::{SigningParams as WococoSigningParams, Wococo}; -use sp_core::{Bytes, Pair}; - -/// Rococo-to-Wococo finality sync pipeline. -pub(crate) type RococoFinalityToWococo = SubstrateFinalityToSubstrate; - -impl SubstrateFinalitySyncPipeline for RococoFinalityToWococo { - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; - - type TargetChain = Wococo; - - fn customize_metrics(params: MetricsParams) -> anyhow::Result { - crate::chains::add_polkadot_kusama_price_metrics::(params) - } - - fn start_relay_guards(&self) { - relay_substrate_client::guard::abort_on_spec_version_change( - self.target_client.clone(), - bp_wococo::VERSION.spec_version, - ); - relay_substrate_client::guard::abort_when_account_balance_decreased( - self.target_client.clone(), - self.transactions_author(), - MAXIMAL_BALANCE_DECREASE_PER_DAY, - ); - } - - fn transactions_author(&self) -> bp_wococo::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: RococoSyncHeader, - proof: GrandpaJustification, - ) -> Bytes { - let call = relay_wococo_client::runtime::Call::BridgeGrandpaRococo( - relay_wococo_client::runtime::BridgeGrandpaRococoCall::submit_finality_proof(header.into_inner(), proof), - ); - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Wococo::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - - Bytes(transaction.encode()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs b/bridges/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs deleted file mode 100644 index be5f91116ec3..000000000000 --- a/bridges/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Rococo-to-Wococo messages sync entrypoint. - -use crate::messages_lane::{ - select_delivery_transaction_limits, MessagesRelayParams, SubstrateMessageLane, SubstrateMessageLaneToSubstrate, -}; -use crate::messages_source::SubstrateMessagesSource; -use crate::messages_target::SubstrateMessagesTarget; - -use bp_messages::MessageNonce; -use bp_runtime::{ROCOCO_CHAIN_ID, WOCOCO_CHAIN_ID}; -use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; -use codec::Encode; -use messages_relay::message_lane::MessageLane; -use relay_rococo_client::{HeaderId as RococoHeaderId, Rococo, SigningParams as RococoSigningParams}; -use relay_substrate_client::{metrics::StorageProofOverheadMetric, Chain, TransactionSignScheme}; -use relay_wococo_client::{HeaderId as WococoHeaderId, SigningParams as WococoSigningParams, Wococo}; -use sp_core::{Bytes, Pair}; -use std::{ops::RangeInclusive, time::Duration}; - -/// Rococo-to-Wococo message lane. -pub type RococoMessagesToWococo = - SubstrateMessageLaneToSubstrate; - -impl SubstrateMessageLane for RococoMessagesToWococo { - const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = bp_wococo::TO_WOCOCO_MESSAGE_DETAILS_METHOD; - const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = - bp_wococo::TO_WOCOCO_LATEST_GENERATED_NONCE_METHOD; - const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_wococo::TO_WOCOCO_LATEST_RECEIVED_NONCE_METHOD; - - const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_rococo::FROM_ROCOCO_LATEST_RECEIVED_NONCE_METHOD; - const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = - bp_rococo::FROM_ROCOCO_LATEST_CONFIRMED_NONCE_METHOD; - const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = bp_rococo::FROM_ROCOCO_UNREWARDED_RELAYERS_STATE; - - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; - const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; - - type SourceChain = Rococo; - type TargetChain = Wococo; - - fn source_transactions_author(&self) -> bp_rococo::AccountId { - (*self.source_sign.public().as_array_ref()).into() - } - - fn make_messages_receiving_proof_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_block: WococoHeaderId, - proof: ::MessagesReceivingProof, - ) -> Bytes { - let (relayers_state, proof) = proof; - let call = relay_rococo_client::runtime::Call::BridgeMessagesWococo( - relay_rococo_client::runtime::BridgeMessagesWococoCall::receive_messages_delivery_proof( - proof, - relayers_state, - ), - ); - let genesis_hash = *self.source_client.genesis_hash(); - let transaction = Rococo::sign_transaction(genesis_hash, &self.source_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Wococo -> Rococo confirmation transaction. Weight: /{}, size: {}/{}", - bp_rococo::max_extrinsic_weight(), - transaction.encode().len(), - bp_rococo::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } - - fn target_transactions_author(&self) -> bp_wococo::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_messages_delivery_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_header: RococoHeaderId, - _nonces: RangeInclusive, - proof: ::MessagesProof, - ) -> Bytes { - let (dispatch_weight, proof) = proof; - let FromBridgedChainMessagesProof { - ref nonces_start, - ref nonces_end, - .. - } = proof; - let messages_count = nonces_end - nonces_start + 1; - - let call = relay_wococo_client::runtime::Call::BridgeMessagesRococo( - relay_wococo_client::runtime::BridgeMessagesRococoCall::receive_messages_proof( - self.relayer_id_at_source.clone(), - proof, - messages_count as _, - dispatch_weight, - ), - ); - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Wococo::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Rococo -> Wococo delivery transaction. Weight: /{}, size: {}/{}", - bp_wococo::max_extrinsic_weight(), - transaction.encode().len(), - bp_wococo::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } -} - -/// Rococo node as messages source. -type RococoSourceClient = - SubstrateMessagesSource; - -/// Wococo node as messages target. -type WococoTargetClient = - SubstrateMessagesTarget; - -/// Run Rococo-to-Wococo messages sync. -pub async fn run( - params: MessagesRelayParams, -) -> Result<(), String> { - let stall_timeout = Duration::from_secs(5 * 60); - let relayer_id_at_rococo = (*params.source_sign.public().as_array_ref()).into(); - - let lane_id = params.lane_id; - let source_client = params.source_client; - let lane = RococoMessagesToWococo { - source_client: source_client.clone(), - source_sign: params.source_sign, - target_client: params.target_client.clone(), - target_sign: params.target_sign, - relayer_id_at_source: relayer_id_at_rococo, - }; - - // 2/3 is reserved for proofs and tx overhead - let max_messages_size_in_single_batch = bp_wococo::max_extrinsic_size() / 3; - // we don't know exact weights of the Wococo runtime. So to guess weights we'll be using - // weights from Rialto and then simply dividing it by x2. - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = - select_delivery_transaction_limits::>( - bp_wococo::max_extrinsic_weight(), - bp_wococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - ); - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = ( - max_messages_in_single_batch / 2, - max_messages_weight_in_single_batch / 2, - ); - - log::info!( - target: "bridge", - "Starting Rococo -> Wococo messages relay.\n\t\ - Rococo relayer account id: {:?}\n\t\ - Max messages in single transaction: {}\n\t\ - Max messages size in single transaction: {}\n\t\ - Max messages weight in single transaction: {}", - lane.relayer_id_at_source, - max_messages_in_single_batch, - max_messages_size_in_single_batch, - max_messages_weight_in_single_batch, - ); - - messages_relay::message_lane_loop::run( - messages_relay::message_lane_loop::Params { - lane: lane_id, - source_tick: Rococo::AVERAGE_BLOCK_INTERVAL, - target_tick: Wococo::AVERAGE_BLOCK_INTERVAL, - reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, - stall_timeout, - delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { - max_unrewarded_relayer_entries_at_target: bp_wococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - max_unconfirmed_nonces_at_target: bp_wococo::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - max_messages_in_single_batch, - max_messages_weight_in_single_batch, - max_messages_size_in_single_batch, - relayer_mode: messages_relay::message_lane_loop::RelayerMode::Altruistic, - }, - }, - RococoSourceClient::new( - source_client.clone(), - lane.clone(), - lane_id, - WOCOCO_CHAIN_ID, - params.target_to_source_headers_relay, - ), - WococoTargetClient::new( - params.target_client, - lane, - lane_id, - ROCOCO_CHAIN_ID, - params.source_to_target_headers_relay, - ), - relay_utils::relay_metrics( - Some(messages_relay::message_lane_loop::metrics_prefix::< - RococoMessagesToWococo, - >(&lane_id)), - params.metrics_params, - ) - .standalone_metric(|registry, prefix| { - StorageProofOverheadMetric::new( - registry, - prefix, - source_client.clone(), - "rococo_storage_proof_overhead".into(), - "Rococo storage proof overhead".into(), - ) - })? - .into_params(), - futures::future::pending(), - ) - .await -} diff --git a/bridges/relays/bin-substrate/src/chains/westend_headers_to_millau.rs b/bridges/relays/bin-substrate/src/chains/westend_headers_to_millau.rs deleted file mode 100644 index 1523dc1be584..000000000000 --- a/bridges/relays/bin-substrate/src/chains/westend_headers_to_millau.rs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Westend-to-Millau headers sync entrypoint. - -use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate}; - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use relay_millau_client::{Millau, SigningParams as MillauSigningParams}; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use relay_utils::metrics::MetricsParams; -use relay_westend_client::{SyncHeader as WestendSyncHeader, Westend}; -use sp_core::{Bytes, Pair}; - -/// Westend-to-Millau finality sync pipeline. -pub(crate) type WestendFinalityToMillau = SubstrateFinalityToSubstrate; - -impl SubstrateFinalitySyncPipeline for WestendFinalityToMillau { - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_westend::BEST_FINALIZED_WESTEND_HEADER_METHOD; - - type TargetChain = Millau; - - fn customize_metrics(params: MetricsParams) -> anyhow::Result { - crate::chains::add_polkadot_kusama_price_metrics::(params) - } - - fn transactions_author(&self) -> bp_millau::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: WestendSyncHeader, - proof: GrandpaJustification, - ) -> Bytes { - let call = millau_runtime::BridgeGrandpaWestendCall::< - millau_runtime::Runtime, - millau_runtime::WestendGrandpaInstance, - >::submit_finality_proof(header.into_inner(), proof) - .into(); - - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Millau::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - - Bytes(transaction.encode()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/wococo.rs b/bridges/relays/bin-substrate/src/chains/wococo.rs deleted file mode 100644 index 9b944d781685..000000000000 --- a/bridges/relays/bin-substrate/src/chains/wococo.rs +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use codec::Decode; -use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; -use relay_wococo_client::Wococo; -use sp_version::RuntimeVersion; - -use crate::cli::{ - bridge, - encode_call::{Call, CliEncodeCall}, - encode_message, CliChain, -}; - -impl CliEncodeCall for Wococo { - fn max_extrinsic_size() -> u32 { - bp_wococo::max_extrinsic_size() - } - - fn encode_call(call: &Call) -> anyhow::Result { - Ok(match call { - Call::Remark { remark_payload, .. } => { - relay_wococo_client::runtime::Call::System(relay_wococo_client::runtime::SystemCall::remark( - remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), - )) - } - Call::BridgeSendMessage { - lane, - payload, - fee, - bridge_instance_index, - } => match *bridge_instance_index { - bridge::WOCOCO_TO_ROCOCO_INDEX => { - let payload = Decode::decode(&mut &*payload.0)?; - relay_wococo_client::runtime::Call::BridgeMessagesRococo( - relay_wococo_client::runtime::BridgeMessagesRococoCall::send_message(lane.0, payload, fee.0), - ) - } - _ => anyhow::bail!( - "Unsupported target bridge pallet with instance index: {}", - bridge_instance_index - ), - }, - _ => anyhow::bail!("The call is not supported"), - }) - } - - fn get_dispatch_info(call: &relay_wococo_client::runtime::Call) -> anyhow::Result { - match *call { - relay_wococo_client::runtime::Call::System(relay_wococo_client::runtime::SystemCall::remark(_)) => { - Ok(DispatchInfo { - weight: crate::chains::rococo::SYSTEM_REMARK_CALL_WEIGHT, - class: DispatchClass::Normal, - pays_fee: Pays::Yes, - }) - } - _ => anyhow::bail!("Unsupported Rococo call: {:?}", call), - } - } -} - -impl CliChain for Wococo { - const RUNTIME_VERSION: RuntimeVersion = bp_wococo::VERSION; - - type KeyPair = sp_core::sr25519::Pair; - type MessagePayload = (); - - fn ss58_format() -> u16 { - 42 - } - - fn max_extrinsic_weight() -> Weight { - bp_wococo::max_extrinsic_weight() - } - - fn encode_message(_message: encode_message::MessagePayload) -> Result { - Err("Sending messages from Wococo is not yet supported.".into()) - } -} diff --git a/bridges/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs b/bridges/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs deleted file mode 100644 index 8ee30d3ff492..000000000000 --- a/bridges/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Wococo-to-Rococo headers sync entrypoint. - -use crate::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate}; - -use bp_header_chain::justification::GrandpaJustification; -use codec::Encode; -use relay_rococo_client::{Rococo, SigningParams as RococoSigningParams}; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use relay_utils::metrics::MetricsParams; -use relay_wococo_client::{SyncHeader as WococoSyncHeader, Wococo}; -use sp_core::{Bytes, Pair}; - -/// Maximal saturating difference between `balance(now)` and `balance(now-24h)` to treat -/// relay as gone wild. -/// -/// See `maximal_balance_decrease_per_day_is_sane` test for details. -/// Note that this is in plancks, so this corresponds to `1500 UNITS`. -pub(crate) const MAXIMAL_BALANCE_DECREASE_PER_DAY: bp_rococo::Balance = 1_500_000_000_000_000; - -/// Wococo-to-Rococo finality sync pipeline. -pub(crate) type WococoFinalityToRococo = SubstrateFinalityToSubstrate; - -impl SubstrateFinalitySyncPipeline for WococoFinalityToRococo { - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; - - type TargetChain = Rococo; - - fn customize_metrics(params: MetricsParams) -> anyhow::Result { - crate::chains::add_polkadot_kusama_price_metrics::(params) - } - - fn start_relay_guards(&self) { - relay_substrate_client::guard::abort_on_spec_version_change( - self.target_client.clone(), - bp_rococo::VERSION.spec_version, - ); - relay_substrate_client::guard::abort_when_account_balance_decreased( - self.target_client.clone(), - self.transactions_author(), - MAXIMAL_BALANCE_DECREASE_PER_DAY, - ); - } - - fn transactions_author(&self) -> bp_rococo::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: WococoSyncHeader, - proof: GrandpaJustification, - ) -> Bytes { - let call = relay_rococo_client::runtime::Call::BridgeGrandpaWococo( - relay_rococo_client::runtime::BridgeGrandpaWococoCall::submit_finality_proof(header.into_inner(), proof), - ); - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Rococo::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - - Bytes(transaction.encode()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use frame_support::weights::WeightToFeePolynomial; - use pallet_bridge_grandpa::weights::WeightInfo; - - #[test] - fn maximal_balance_decrease_per_day_is_sane() { - // Rococo/Wococo GRANDPA pallet weights. They're now using Rialto weights => using `RialtoWeight` is justified. - // - // Using Rialto runtime this is slightly incorrect, because `DbWeight` of Rococo/Wococo runtime may differ - // from the `DbWeight` of Rialto runtime. But now (and most probably forever) it is the same. - type RococoGrandpaPalletWeights = pallet_bridge_grandpa::weights::RialtoWeight; - - // The following formula shall not be treated as super-accurate - guard is to protect from mad relays, - // not to protect from over-average loses. - // - // Worst case: we're submitting proof for every source header. Since we submit every header, the number of - // headers in ancestry proof is near to 0 (let's round up to 2). And the number of authorities is 1024, - // which is (now) larger than on any existing chain => normally there'll be ~1024*2/3+1 commits. - const AVG_VOTES_ANCESTRIES_LEN: u32 = 2; - const AVG_PRECOMMITS_LEN: u32 = 1024 * 2 / 3 + 1; - let number_of_source_headers_per_day: bp_wococo::Balance = bp_wococo::DAYS as _; - let single_source_header_submit_call_weight = - RococoGrandpaPalletWeights::submit_finality_proof(AVG_VOTES_ANCESTRIES_LEN, AVG_PRECOMMITS_LEN); - // for simplicity - add extra weight for base tx fee + fee that is paid for the tx size + adjusted fee - let single_source_header_submit_tx_weight = single_source_header_submit_call_weight * 3 / 2; - let single_source_header_tx_cost = bp_rococo::WeightToFee::calc(&single_source_header_submit_tx_weight); - let maximal_expected_decrease = single_source_header_tx_cost * number_of_source_headers_per_day; - assert!( - MAXIMAL_BALANCE_DECREASE_PER_DAY >= maximal_expected_decrease, - "Maximal expected loss per day {} is larger than hardcoded {}", - maximal_expected_decrease, - MAXIMAL_BALANCE_DECREASE_PER_DAY, - ); - } -} diff --git a/bridges/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs b/bridges/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs deleted file mode 100644 index b696801569e8..000000000000 --- a/bridges/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Wococo-to-Rococo messages sync entrypoint. - -use crate::messages_lane::{ - select_delivery_transaction_limits, MessagesRelayParams, SubstrateMessageLane, SubstrateMessageLaneToSubstrate, -}; -use crate::messages_source::SubstrateMessagesSource; -use crate::messages_target::SubstrateMessagesTarget; - -use bp_messages::MessageNonce; -use bp_runtime::{ROCOCO_CHAIN_ID, WOCOCO_CHAIN_ID}; -use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; -use codec::Encode; -use messages_relay::message_lane::MessageLane; -use relay_rococo_client::{HeaderId as RococoHeaderId, Rococo, SigningParams as RococoSigningParams}; -use relay_substrate_client::{metrics::StorageProofOverheadMetric, Chain, TransactionSignScheme}; -use relay_wococo_client::{HeaderId as WococoHeaderId, SigningParams as WococoSigningParams, Wococo}; -use sp_core::{Bytes, Pair}; -use std::{ops::RangeInclusive, time::Duration}; - -/// Wococo-to-Rococo message lane. -pub type WococoMessagesToRococo = - SubstrateMessageLaneToSubstrate; - -impl SubstrateMessageLane for WococoMessagesToRococo { - const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = bp_rococo::TO_ROCOCO_MESSAGE_DETAILS_METHOD; - const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = - bp_rococo::TO_ROCOCO_LATEST_GENERATED_NONCE_METHOD; - const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_rococo::TO_ROCOCO_LATEST_RECEIVED_NONCE_METHOD; - - const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = bp_wococo::FROM_WOCOCO_LATEST_RECEIVED_NONCE_METHOD; - const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = - bp_wococo::FROM_WOCOCO_LATEST_CONFIRMED_NONCE_METHOD; - const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = bp_wococo::FROM_WOCOCO_UNREWARDED_RELAYERS_STATE; - - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; - const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; - - type SourceChain = Wococo; - type TargetChain = Rococo; - - fn source_transactions_author(&self) -> bp_wococo::AccountId { - (*self.source_sign.public().as_array_ref()).into() - } - - fn make_messages_receiving_proof_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_block: RococoHeaderId, - proof: ::MessagesReceivingProof, - ) -> Bytes { - let (relayers_state, proof) = proof; - let call = relay_wococo_client::runtime::Call::BridgeMessagesRococo( - relay_wococo_client::runtime::BridgeMessagesRococoCall::receive_messages_delivery_proof( - proof, - relayers_state, - ), - ); - let genesis_hash = *self.source_client.genesis_hash(); - let transaction = Wococo::sign_transaction(genesis_hash, &self.source_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Rococo -> Wococo confirmation transaction. Weight: /{}, size: {}/{}", - bp_wococo::max_extrinsic_weight(), - transaction.encode().len(), - bp_wococo::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } - - fn target_transactions_author(&self) -> bp_rococo::AccountId { - (*self.target_sign.public().as_array_ref()).into() - } - - fn make_messages_delivery_transaction( - &self, - transaction_nonce: ::Index, - _generated_at_header: WococoHeaderId, - _nonces: RangeInclusive, - proof: ::MessagesProof, - ) -> Bytes { - let (dispatch_weight, proof) = proof; - let FromBridgedChainMessagesProof { - ref nonces_start, - ref nonces_end, - .. - } = proof; - let messages_count = nonces_end - nonces_start + 1; - - let call = relay_rococo_client::runtime::Call::BridgeMessagesWococo( - relay_rococo_client::runtime::BridgeMessagesWococoCall::receive_messages_proof( - self.relayer_id_at_source.clone(), - proof, - messages_count as _, - dispatch_weight, - ), - ); - let genesis_hash = *self.target_client.genesis_hash(); - let transaction = Rococo::sign_transaction(genesis_hash, &self.target_sign, transaction_nonce, call); - log::trace!( - target: "bridge", - "Prepared Wococo -> Rococo delivery transaction. Weight: /{}, size: {}/{}", - bp_rococo::max_extrinsic_weight(), - transaction.encode().len(), - bp_rococo::max_extrinsic_size(), - ); - Bytes(transaction.encode()) - } -} - -/// Wococo node as messages source. -type WococoSourceClient = - SubstrateMessagesSource; - -/// Rococo node as messages target. -type RococoTargetClient = - SubstrateMessagesTarget; - -/// Run Wococo-to-Rococo messages sync. -pub async fn run( - params: MessagesRelayParams, -) -> Result<(), String> { - let stall_timeout = Duration::from_secs(5 * 60); - let relayer_id_at_wococo = (*params.source_sign.public().as_array_ref()).into(); - - let lane_id = params.lane_id; - let source_client = params.source_client; - let lane = WococoMessagesToRococo { - source_client: source_client.clone(), - source_sign: params.source_sign, - target_client: params.target_client.clone(), - target_sign: params.target_sign, - relayer_id_at_source: relayer_id_at_wococo, - }; - - // 2/3 is reserved for proofs and tx overhead - let max_messages_size_in_single_batch = bp_rococo::max_extrinsic_size() / 3; - // we don't know exact weights of the Rococo runtime. So to guess weights we'll be using - // weights from Rialto and then simply dividing it by x2. - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = - select_delivery_transaction_limits::>( - bp_rococo::max_extrinsic_weight(), - bp_rococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - ); - let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = ( - max_messages_in_single_batch / 2, - max_messages_weight_in_single_batch / 2, - ); - - log::info!( - target: "bridge", - "Starting Wococo -> Rococo messages relay.\n\t\ - Wococo relayer account id: {:?}\n\t\ - Max messages in single transaction: {}\n\t\ - Max messages size in single transaction: {}\n\t\ - Max messages weight in single transaction: {}", - lane.relayer_id_at_source, - max_messages_in_single_batch, - max_messages_size_in_single_batch, - max_messages_weight_in_single_batch, - ); - - messages_relay::message_lane_loop::run( - messages_relay::message_lane_loop::Params { - lane: lane_id, - source_tick: Wococo::AVERAGE_BLOCK_INTERVAL, - target_tick: Rococo::AVERAGE_BLOCK_INTERVAL, - reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, - stall_timeout, - delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { - max_unrewarded_relayer_entries_at_target: bp_rococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - max_unconfirmed_nonces_at_target: bp_rococo::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, - max_messages_in_single_batch, - max_messages_weight_in_single_batch, - max_messages_size_in_single_batch, - relayer_mode: messages_relay::message_lane_loop::RelayerMode::Altruistic, - }, - }, - WococoSourceClient::new( - source_client.clone(), - lane.clone(), - lane_id, - ROCOCO_CHAIN_ID, - params.target_to_source_headers_relay, - ), - RococoTargetClient::new( - params.target_client, - lane, - lane_id, - WOCOCO_CHAIN_ID, - params.source_to_target_headers_relay, - ), - relay_utils::relay_metrics( - Some(messages_relay::message_lane_loop::metrics_prefix::< - WococoMessagesToRococo, - >(&lane_id)), - params.metrics_params, - ) - .standalone_metric(|registry, prefix| { - StorageProofOverheadMetric::new( - registry, - prefix, - source_client.clone(), - "wococo_storage_proof_overhead".into(), - "Wococo storage proof overhead".into(), - ) - })? - .into_params(), - futures::future::pending(), - ) - .await -} diff --git a/bridges/relays/bin-substrate/src/cli/bridge.rs b/bridges/relays/bin-substrate/src/cli/bridge.rs deleted file mode 100644 index 1feb3dcb1a46..000000000000 --- a/bridges/relays/bin-substrate/src/cli/bridge.rs +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use structopt::clap::arg_enum; - -arg_enum! { - #[derive(Debug, PartialEq, Eq)] - /// Supported full bridges (headers + messages). - pub enum FullBridge { - MillauToRialto, - RialtoToMillau, - RococoToWococo, - WococoToRococo, - } -} - -impl FullBridge { - /// Return instance index of the bridge pallet in source runtime. - pub fn bridge_instance_index(&self) -> u8 { - match self { - Self::MillauToRialto => MILLAU_TO_RIALTO_INDEX, - Self::RialtoToMillau => RIALTO_TO_MILLAU_INDEX, - Self::RococoToWococo => ROCOCO_TO_WOCOCO_INDEX, - Self::WococoToRococo => WOCOCO_TO_ROCOCO_INDEX, - } - } -} - -pub const RIALTO_TO_MILLAU_INDEX: u8 = 0; -pub const MILLAU_TO_RIALTO_INDEX: u8 = 0; -pub const ROCOCO_TO_WOCOCO_INDEX: u8 = 0; -pub const WOCOCO_TO_ROCOCO_INDEX: u8 = 0; - -/// The macro allows executing bridge-specific code without going fully generic. -/// -/// It matches on the [`FullBridge`] enum, sets bridge-specific types or imports and injects -/// the `$generic` code at every variant. -#[macro_export] -macro_rules! select_full_bridge { - ($bridge: expr, $generic: tt) => { - match $bridge { - FullBridge::MillauToRialto => { - type Source = relay_millau_client::Millau; - #[allow(dead_code)] - type Target = relay_rialto_client::Rialto; - - // Derive-account - #[allow(unused_imports)] - use bp_rialto::derive_account_from_millau_id as derive_account; - - // Relay-messages - #[allow(unused_imports)] - use crate::chains::millau_messages_to_rialto::run as relay_messages; - - // Send-message / Estimate-fee - #[allow(unused_imports)] - use bp_rialto::TO_RIALTO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; - // Send-message - #[allow(unused_imports)] - use millau_runtime::millau_to_rialto_account_ownership_digest as account_ownership_digest; - - $generic - } - FullBridge::RialtoToMillau => { - type Source = relay_rialto_client::Rialto; - #[allow(dead_code)] - type Target = relay_millau_client::Millau; - - // Derive-account - #[allow(unused_imports)] - use bp_millau::derive_account_from_rialto_id as derive_account; - - // Relay-messages - #[allow(unused_imports)] - use crate::chains::rialto_messages_to_millau::run as relay_messages; - - // Send-message / Estimate-fee - #[allow(unused_imports)] - use bp_millau::TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; - - // Send-message - #[allow(unused_imports)] - use rialto_runtime::rialto_to_millau_account_ownership_digest as account_ownership_digest; - - $generic - } - FullBridge::RococoToWococo => { - type Source = relay_rococo_client::Rococo; - #[allow(dead_code)] - type Target = relay_wococo_client::Wococo; - - // Derive-account - #[allow(unused_imports)] - use bp_wococo::derive_account_from_rococo_id as derive_account; - - // Relay-messages - #[allow(unused_imports)] - use crate::chains::rococo_messages_to_wococo::run as relay_messages; - - // Send-message / Estimate-fee - #[allow(unused_imports)] - use bp_wococo::TO_WOCOCO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; - // Send-message - #[allow(unused_imports)] - use relay_rococo_client::runtime::rococo_to_wococo_account_ownership_digest as account_ownership_digest; - - $generic - } - FullBridge::WococoToRococo => { - type Source = relay_wococo_client::Wococo; - #[allow(dead_code)] - type Target = relay_rococo_client::Rococo; - - // Derive-account - #[allow(unused_imports)] - use bp_rococo::derive_account_from_wococo_id as derive_account; - - // Relay-messages - #[allow(unused_imports)] - use crate::chains::wococo_messages_to_rococo::run as relay_messages; - - // Send-message / Estimate-fee - #[allow(unused_imports)] - use bp_rococo::TO_ROCOCO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; - // Send-message - #[allow(unused_imports)] - use relay_wococo_client::runtime::wococo_to_rococo_account_ownership_digest as account_ownership_digest; - - $generic - } - } - }; -} diff --git a/bridges/relays/bin-substrate/src/cli/encode_call.rs b/bridges/relays/bin-substrate/src/cli/encode_call.rs deleted file mode 100644 index cfe6d99a4eb9..000000000000 --- a/bridges/relays/bin-substrate/src/cli/encode_call.rs +++ /dev/null @@ -1,278 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::bridge::FullBridge; -use crate::cli::{AccountId, Balance, CliChain, ExplicitOrMaximal, HexBytes, HexLaneId}; -use crate::select_full_bridge; -use frame_support::weights::DispatchInfo; -use relay_substrate_client::Chain; -use structopt::StructOpt; - -/// Encode source chain runtime call. -#[derive(StructOpt, Debug)] -pub struct EncodeCall { - /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] - bridge: FullBridge, - #[structopt(flatten)] - call: Call, -} - -/// All possible messages that may be delivered to generic Substrate chain. -/// -/// Note this enum may be used in the context of both Source (as part of `encode-call`) -/// and Target chain (as part of `encode-message/send-message`). -#[derive(StructOpt, Debug, PartialEq, Eq)] -pub enum Call { - /// Raw bytes for the message - Raw { - /// Raw, SCALE-encoded message - data: HexBytes, - }, - /// Make an on-chain remark (comment). - Remark { - /// Explicit remark payload. - #[structopt(long, conflicts_with("remark-size"))] - remark_payload: Option, - /// Remark size. If not passed, small UTF8-encoded string is generated by relay as remark. - #[structopt(long, conflicts_with("remark-payload"))] - remark_size: Option>, - }, - /// Transfer the specified `amount` of native tokens to a particular `recipient`. - Transfer { - /// Address of an account to receive the transfer. - #[structopt(long)] - recipient: AccountId, - /// Amount of target tokens to send in target chain base currency units. - #[structopt(long)] - amount: Balance, - }, - /// A call to the specific Bridge Messages pallet to queue message to be sent over a bridge. - BridgeSendMessage { - /// An index of the bridge instance which represents the expected target chain. - #[structopt(skip = 255)] - bridge_instance_index: u8, - /// Hex-encoded lane id that should be served by the relay. Defaults to `00000000`. - #[structopt(long, default_value = "00000000")] - lane: HexLaneId, - /// Raw SCALE-encoded Message Payload to submit to the messages pallet. - /// - /// This can be obtained by encoding call for the target chain. - #[structopt(long)] - payload: HexBytes, - /// Declared delivery and dispatch fee in base source-chain currency units. - #[structopt(long)] - fee: Balance, - }, -} - -pub trait CliEncodeCall: Chain { - /// Maximal size (in bytes) of any extrinsic (from the runtime). - fn max_extrinsic_size() -> u32; - - /// Encode a CLI call. - fn encode_call(call: &Call) -> anyhow::Result; - - /// Get dispatch info for the call. - fn get_dispatch_info(call: &Self::Call) -> anyhow::Result; -} - -impl EncodeCall { - fn encode(&mut self) -> anyhow::Result { - select_full_bridge!(self.bridge, { - preprocess_call::(&mut self.call, self.bridge.bridge_instance_index()); - let call = Source::encode_call(&self.call)?; - - let encoded = HexBytes::encode(&call); - - log::info!(target: "bridge", "Generated {} call: {:#?}", Source::NAME, call); - log::info!(target: "bridge", "Weight of {} call: {}", Source::NAME, Source::get_dispatch_info(&call)?.weight); - log::info!(target: "bridge", "Encoded {} call: {:?}", Source::NAME, encoded); - - Ok(encoded) - }) - } - - /// Run the command. - pub async fn run(mut self) -> anyhow::Result<()> { - println!("{:?}", self.encode()?); - Ok(()) - } -} - -/// Prepare the call to be passed to [`CliEncodeCall::encode_call`]. -/// -/// This function will fill in all optional and missing pieces and will make sure that -/// values are converted to bridge-specific ones. -/// -/// Most importantly, the method will fill-in [`bridge_instance_index`] parameter for -/// target-chain specific calls. -pub(crate) fn preprocess_call( - call: &mut Call, - bridge_instance: u8, -) { - match *call { - Call::Raw { .. } => {} - Call::Remark { - ref remark_size, - ref mut remark_payload, - } => { - if remark_payload.is_none() { - *remark_payload = Some(HexBytes(generate_remark_payload( - remark_size, - compute_maximal_message_arguments_size(Source::max_extrinsic_size(), Target::max_extrinsic_size()), - ))); - } - } - Call::Transfer { ref mut recipient, .. } => { - recipient.enforce_chain::(); - } - Call::BridgeSendMessage { - ref mut bridge_instance_index, - .. - } => { - *bridge_instance_index = bridge_instance; - } - }; -} - -fn generate_remark_payload(remark_size: &Option>, maximal_allowed_size: u32) -> Vec { - match remark_size { - Some(ExplicitOrMaximal::Explicit(remark_size)) => vec![0; *remark_size], - Some(ExplicitOrMaximal::Maximal) => vec![0; maximal_allowed_size as _], - None => format!( - "Unix time: {}", - std::time::SystemTime::now() - .duration_since(std::time::SystemTime::UNIX_EPOCH) - .unwrap_or_default() - .as_secs(), - ) - .as_bytes() - .to_vec(), - } -} - -pub(crate) fn compute_maximal_message_arguments_size( - maximal_source_extrinsic_size: u32, - maximal_target_extrinsic_size: u32, -) -> u32 { - // assume that both signed extensions and other arguments fit 1KB - let service_tx_bytes_on_source_chain = 1024; - let maximal_source_extrinsic_size = maximal_source_extrinsic_size - service_tx_bytes_on_source_chain; - let maximal_call_size = - bridge_runtime_common::messages::target::maximal_incoming_message_size(maximal_target_extrinsic_size); - let maximal_call_size = if maximal_call_size > maximal_source_extrinsic_size { - maximal_source_extrinsic_size - } else { - maximal_call_size - }; - - // bytes in Call encoding that are used to encode everything except arguments - let service_bytes = 1 + 1 + 4; - maximal_call_size - service_bytes -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn should_encode_transfer_call() { - // given - let mut encode_call = EncodeCall::from_iter(vec![ - "encode-call", - "RialtoToMillau", - "transfer", - "--amount", - "12345", - "--recipient", - "5sauUXUfPjmwxSgmb3tZ5d6yx24eZX4wWJ2JtVUBaQqFbvEU", - ]); - - // when - let hex = encode_call.encode().unwrap(); - - // then - assert_eq!( - format!("{:?}", hex), - "0x0c00d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27de5c0" - ); - } - - #[test] - fn should_encode_remark_with_default_payload() { - // given - let mut encode_call = EncodeCall::from_iter(vec!["encode-call", "RialtoToMillau", "remark"]); - - // when - let hex = encode_call.encode().unwrap(); - - // then - assert!(format!("{:?}", hex).starts_with("0x070154556e69782074696d653a")); - } - - #[test] - fn should_encode_remark_with_explicit_payload() { - // given - let mut encode_call = EncodeCall::from_iter(vec![ - "encode-call", - "RialtoToMillau", - "remark", - "--remark-payload", - "1234", - ]); - - // when - let hex = encode_call.encode().unwrap(); - - // then - assert_eq!(format!("{:?}", hex), "0x0701081234"); - } - - #[test] - fn should_encode_remark_with_size() { - // given - let mut encode_call = - EncodeCall::from_iter(vec!["encode-call", "RialtoToMillau", "remark", "--remark-size", "12"]); - - // when - let hex = encode_call.encode().unwrap(); - - // then - assert_eq!(format!("{:?}", hex), "0x070130000000000000000000000000"); - } - - #[test] - fn should_disallow_both_payload_and_size() { - // when - let err = EncodeCall::from_iter_safe(vec![ - "encode-call", - "RialtoToMillau", - "remark", - "--remark-payload", - "1234", - "--remark-size", - "12", - ]) - .unwrap_err(); - - // then - assert_eq!(err.kind, structopt::clap::ErrorKind::ArgumentConflict); - - let info = err.info.unwrap(); - assert!(info.contains(&"remark-payload".to_string()) | info.contains(&"remark-size".to_string())) - } -} diff --git a/bridges/relays/bin-substrate/src/cli/init_bridge.rs b/bridges/relays/bin-substrate/src/cli/init_bridge.rs deleted file mode 100644 index 20e6daa500e5..000000000000 --- a/bridges/relays/bin-substrate/src/cli/init_bridge.rs +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::{SourceConnectionParams, TargetConnectionParams, TargetSigningParams}; -use bp_header_chain::InitializationData; -use bp_runtime::Chain as ChainBase; -use codec::Encode; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use sp_core::{Bytes, Pair}; -use structopt::{clap::arg_enum, StructOpt}; - -/// Initialize bridge pallet. -#[derive(StructOpt)] -pub struct InitBridge { - /// A bridge instance to initalize. - #[structopt(possible_values = &InitBridgeName::variants(), case_insensitive = true)] - bridge: InitBridgeName, - #[structopt(flatten)] - source: SourceConnectionParams, - #[structopt(flatten)] - target: TargetConnectionParams, - #[structopt(flatten)] - target_sign: TargetSigningParams, -} - -// TODO [#851] Use kebab-case. -arg_enum! { - #[derive(Debug)] - /// Bridge to initialize. - pub enum InitBridgeName { - MillauToRialto, - RialtoToMillau, - WestendToMillau, - RococoToWococo, - WococoToRococo, - } -} - -macro_rules! select_bridge { - ($bridge: expr, $generic: tt) => { - match $bridge { - InitBridgeName::MillauToRialto => { - type Source = relay_millau_client::Millau; - type Target = relay_rialto_client::Rialto; - - fn encode_init_bridge( - init_data: InitializationData<::Header>, - ) -> ::Call { - rialto_runtime::SudoCall::sudo(Box::new( - rialto_runtime::BridgeGrandpaMillauCall::initialize(init_data).into(), - )) - .into() - } - - $generic - } - InitBridgeName::RialtoToMillau => { - type Source = relay_rialto_client::Rialto; - type Target = relay_millau_client::Millau; - - fn encode_init_bridge( - init_data: InitializationData<::Header>, - ) -> ::Call { - let initialize_call = millau_runtime::BridgeGrandpaRialtoCall::< - millau_runtime::Runtime, - millau_runtime::RialtoGrandpaInstance, - >::initialize(init_data); - millau_runtime::SudoCall::sudo(Box::new(initialize_call.into())).into() - } - - $generic - } - InitBridgeName::WestendToMillau => { - type Source = relay_westend_client::Westend; - type Target = relay_millau_client::Millau; - - fn encode_init_bridge( - init_data: InitializationData<::Header>, - ) -> ::Call { - // at Westend -> Millau initialization we're not using sudo, because otherwise our deployments - // may fail, because we need to initialize both Rialto -> Millau and Westend -> Millau bridge. - // => since there's single possible sudo account, one of transaction may fail with duplicate nonce error - millau_runtime::BridgeGrandpaWestendCall::< - millau_runtime::Runtime, - millau_runtime::WestendGrandpaInstance, - >::initialize(init_data) - .into() - } - - $generic - } - InitBridgeName::RococoToWococo => { - type Source = relay_rococo_client::Rococo; - type Target = relay_wococo_client::Wococo; - - fn encode_init_bridge( - init_data: InitializationData<::Header>, - ) -> ::Call { - relay_wococo_client::runtime::Call::BridgeGrandpaRococo( - relay_wococo_client::runtime::BridgeGrandpaRococoCall::initialize(init_data), - ) - } - - $generic - } - InitBridgeName::WococoToRococo => { - type Source = relay_wococo_client::Wococo; - type Target = relay_rococo_client::Rococo; - - fn encode_init_bridge( - init_data: InitializationData<::Header>, - ) -> ::Call { - relay_rococo_client::runtime::Call::BridgeGrandpaWococo( - relay_rococo_client::runtime::BridgeGrandpaWococoCall::initialize(init_data), - ) - } - - $generic - } - } - }; -} - -impl InitBridge { - /// Run the command. - pub async fn run(self) -> anyhow::Result<()> { - select_bridge!(self.bridge, { - let source_client = self.source.to_client::().await?; - let target_client = self.target.to_client::().await?; - let target_sign = self.target_sign.to_keypair::()?; - - crate::headers_initialize::initialize( - source_client, - target_client.clone(), - target_sign.public().into(), - move |transaction_nonce, initialization_data| { - Bytes( - Target::sign_transaction( - *target_client.genesis_hash(), - &target_sign, - transaction_nonce, - encode_init_bridge(initialization_data), - ) - .encode(), - ) - }, - ) - .await; - - Ok(()) - }) - } -} diff --git a/bridges/relays/bin-substrate/src/cli/mod.rs b/bridges/relays/bin-substrate/src/cli/mod.rs deleted file mode 100644 index 49bc5dc8c837..000000000000 --- a/bridges/relays/bin-substrate/src/cli/mod.rs +++ /dev/null @@ -1,459 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Deal with CLI args of substrate-to-substrate relay. - -use std::convert::TryInto; - -use bp_messages::LaneId; -use codec::{Decode, Encode}; -use frame_support::weights::Weight; -use sp_runtime::app_crypto::Ss58Codec; -use structopt::{clap::arg_enum, StructOpt}; - -pub(crate) mod bridge; -pub(crate) mod encode_call; -pub(crate) mod encode_message; -pub(crate) mod estimate_fee; -pub(crate) mod send_message; - -mod derive_account; -mod init_bridge; -mod relay_headers; -mod relay_headers_and_messages; -mod relay_messages; - -/// Parse relay CLI args. -pub fn parse_args() -> Command { - Command::from_args() -} - -/// Substrate-to-Substrate bridge utilities. -#[derive(StructOpt)] -#[structopt(about = "Substrate-to-Substrate relay")] -pub enum Command { - /// Start headers relay between two chains. - /// - /// The on-chain bridge component should have been already initialized with - /// `init-bridge` sub-command. - RelayHeaders(relay_headers::RelayHeaders), - /// Start messages relay between two chains. - /// - /// Ties up to `Messages` pallets on both chains and starts relaying messages. - /// Requires the header relay to be already running. - RelayMessages(relay_messages::RelayMessages), - /// Start headers and messages relay between two Substrate chains. - /// - /// This high-level relay internally starts four low-level relays: two `RelayHeaders` - /// and two `RelayMessages` relays. Headers are only relayed when they are required by - /// the message relays - i.e. when there are messages or confirmations that needs to be - /// relayed between chains. - RelayHeadersAndMessages(relay_headers_and_messages::RelayHeadersAndMessages), - /// Initialize on-chain bridge pallet with current header data. - /// - /// Sends initialization transaction to bootstrap the bridge with current finalized block data. - InitBridge(init_bridge::InitBridge), - /// Send custom message over the bridge. - /// - /// Allows interacting with the bridge by sending messages over `Messages` component. - /// The message is being sent to the source chain, delivered to the target chain and dispatched - /// there. - SendMessage(send_message::SendMessage), - /// Generate SCALE-encoded `Call` for choosen network. - /// - /// The call can be used either as message payload or can be wrapped into a transaction - /// and executed on the chain directly. - EncodeCall(encode_call::EncodeCall), - /// Generate SCALE-encoded `MessagePayload` object that can be sent over selected bridge. - /// - /// The `MessagePayload` can be then fed to `Messages::send_message` function and sent over - /// the bridge. - EncodeMessage(encode_message::EncodeMessage), - /// Estimate Delivery and Dispatch Fee required for message submission to messages pallet. - EstimateFee(estimate_fee::EstimateFee), - /// Given a source chain `AccountId`, derive the corresponding `AccountId` for the target chain. - DeriveAccount(derive_account::DeriveAccount), -} - -impl Command { - // Initialize logger depending on the command. - fn init_logger(&self) { - use relay_utils::initialize::{initialize_logger, initialize_relay}; - - match self { - Self::RelayHeaders(_) | Self::RelayMessages(_) | Self::RelayHeadersAndMessages(_) | Self::InitBridge(_) => { - initialize_relay(); - } - _ => { - initialize_logger(false); - } - } - } - - /// Run the command. - pub async fn run(self) -> anyhow::Result<()> { - self.init_logger(); - match self { - Self::RelayHeaders(arg) => arg.run().await?, - Self::RelayMessages(arg) => arg.run().await?, - Self::RelayHeadersAndMessages(arg) => arg.run().await?, - Self::InitBridge(arg) => arg.run().await?, - Self::SendMessage(arg) => arg.run().await?, - Self::EncodeCall(arg) => arg.run().await?, - Self::EncodeMessage(arg) => arg.run().await?, - Self::EstimateFee(arg) => arg.run().await?, - Self::DeriveAccount(arg) => arg.run().await?, - } - Ok(()) - } -} - -arg_enum! { - #[derive(Debug)] - /// The origin to use when dispatching the message on the target chain. - /// - /// - `Target` uses account existing on the target chain (requires target private key). - /// - `Origin` uses account derived from the source-chain account. - pub enum Origins { - Target, - Source, - } -} - -/// Generic balance type. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Balance(pub u128); - -impl std::fmt::Display for Balance { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - use num_format::{Locale, ToFormattedString}; - write!(fmt, "{}", self.0.to_formatted_string(&Locale::en)) - } -} - -impl std::str::FromStr for Balance { - type Err = ::Err; - - fn from_str(s: &str) -> Result { - Ok(Self(s.parse()?)) - } -} - -impl Balance { - /// Cast balance to `u64` type, panicking if it's too large. - pub fn cast(&self) -> u64 { - self.0.try_into().expect("Balance is too high for this chain.") - } -} - -/// Generic account id with custom parser. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct AccountId { - account: sp_runtime::AccountId32, - ss58_format: sp_core::crypto::Ss58AddressFormat, -} - -impl std::fmt::Display for AccountId { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(fmt, "{}", self.account.to_ss58check_with_version(self.ss58_format)) - } -} - -impl std::str::FromStr for AccountId { - type Err = String; - - fn from_str(s: &str) -> Result { - let (account, ss58_format) = sp_runtime::AccountId32::from_ss58check_with_version(s) - .map_err(|err| format!("Unable to decode SS58 address: {:?}", err))?; - Ok(Self { account, ss58_format }) - } -} - -const SS58_FORMAT_PROOF: &str = "u16 -> Ss58Format is infallible; qed"; - -impl AccountId { - /// Create new SS58-formatted address from raw account id. - pub fn from_raw(account: sp_runtime::AccountId32) -> Self { - Self { - account, - ss58_format: T::ss58_format().try_into().expect(SS58_FORMAT_PROOF), - } - } - - /// Enforces formatting account to be for given [`CliChain`] type. - /// - /// This will change the `ss58format` of the account to match the requested one. - /// Note that a warning will be produced in case the current format does not match - /// the requested one, but the conversion always succeeds. - pub fn enforce_chain(&mut self) { - let original = self.clone(); - self.ss58_format = T::ss58_format().try_into().expect(SS58_FORMAT_PROOF); - log::debug!("{} SS58 format: {} (RAW: {})", self, self.ss58_format, self.account); - if original.ss58_format != self.ss58_format { - log::warn!( - target: "bridge", - "Address {} does not seem to match {}'s SS58 format (got: {}, expected: {}).\nConverted to: {}", - original, - T::NAME, - original.ss58_format, - self.ss58_format, - self, - ) - } - } - - /// Returns the raw (no SS58-prefixed) account id. - pub fn raw_id(&self) -> sp_runtime::AccountId32 { - self.account.clone() - } -} - -/// Bridge-supported network definition. -/// -/// Used to abstract away CLI commands. -pub trait CliChain: relay_substrate_client::Chain { - /// Chain's current version of the runtime. - const RUNTIME_VERSION: sp_version::RuntimeVersion; - - /// Crypto keypair type used to send messages. - /// - /// In case of chains supporting multiple cryptos, pick one used by the CLI. - type KeyPair: sp_core::crypto::Pair; - - /// Bridge Message Payload type. - /// - /// TODO [#854] This should be removed in favour of target-specifc types. - type MessagePayload; - - /// Numeric value of SS58 format. - fn ss58_format() -> u16; - - /// Construct message payload to be sent over the bridge. - fn encode_message(message: crate::cli::encode_message::MessagePayload) -> Result; - - /// Maximal extrinsic weight (from the runtime). - fn max_extrinsic_weight() -> Weight; -} - -/// Lane id. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct HexLaneId(pub LaneId); - -impl From for LaneId { - fn from(lane_id: HexLaneId) -> LaneId { - lane_id.0 - } -} - -impl std::str::FromStr for HexLaneId { - type Err = hex::FromHexError; - - fn from_str(s: &str) -> Result { - let mut lane_id = LaneId::default(); - hex::decode_to_slice(s, &mut lane_id)?; - Ok(HexLaneId(lane_id)) - } -} - -/// Nicer formatting for raw bytes vectors. -#[derive(Default, Encode, Decode, PartialEq, Eq)] -pub struct HexBytes(pub Vec); - -impl std::str::FromStr for HexBytes { - type Err = hex::FromHexError; - - fn from_str(s: &str) -> Result { - Ok(Self(hex::decode(s)?)) - } -} - -impl std::fmt::Debug for HexBytes { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(fmt, "0x{}", self) - } -} - -impl std::fmt::Display for HexBytes { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(fmt, "{}", hex::encode(&self.0)) - } -} - -impl HexBytes { - /// Encode given object and wrap into nicely formatted bytes. - pub fn encode(t: &T) -> Self { - Self(t.encode()) - } -} - -/// Prometheus metrics params. -#[derive(StructOpt)] -pub struct PrometheusParams { - /// Do not expose a Prometheus metric endpoint. - #[structopt(long)] - pub no_prometheus: bool, - /// Expose Prometheus endpoint at given interface. - #[structopt(long, default_value = "127.0.0.1")] - pub prometheus_host: String, - /// Expose Prometheus endpoint at given port. - #[structopt(long, default_value = "9616")] - pub prometheus_port: u16, -} - -impl From for relay_utils::metrics::MetricsParams { - fn from(cli_params: PrometheusParams) -> relay_utils::metrics::MetricsParams { - if !cli_params.no_prometheus { - Some(relay_utils::metrics::MetricsAddress { - host: cli_params.prometheus_host, - port: cli_params.prometheus_port, - }) - .into() - } else { - None.into() - } - } -} - -/// Either explicit or maximal allowed value. -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum ExplicitOrMaximal { - /// User has explicitly specified argument value. - Explicit(V), - /// Maximal allowed value for this argument. - Maximal, -} - -impl std::str::FromStr for ExplicitOrMaximal -where - V::Err: std::fmt::Debug, -{ - type Err = String; - - fn from_str(s: &str) -> Result { - if s.to_lowercase() == "max" { - return Ok(ExplicitOrMaximal::Maximal); - } - - V::from_str(s) - .map(ExplicitOrMaximal::Explicit) - .map_err(|e| format!("Failed to parse '{:?}'. Expected 'max' or explicit value", e)) - } -} - -/// Create chain-specific set of configuration objects: connection parameters, -/// signing parameters and bridge initialisation parameters. -#[macro_export] -macro_rules! declare_chain_options { - ($chain:ident, $chain_prefix:ident) => { - paste::item! { - #[doc = $chain " connection params."] - #[derive(StructOpt, Debug, PartialEq, Eq)] - pub struct [<$chain ConnectionParams>] { - #[doc = "Connect to " $chain " node at given host."] - #[structopt(long, default_value = "127.0.0.1")] - pub [<$chain_prefix _host>]: String, - #[doc = "Connect to " $chain " node websocket server at given port."] - #[structopt(long)] - pub [<$chain_prefix _port>]: u16, - #[doc = "Use secure websocket connection."] - #[structopt(long)] - pub [<$chain_prefix _secure>]: bool, - } - - #[doc = $chain " signing params."] - #[derive(StructOpt, Debug, PartialEq, Eq)] - pub struct [<$chain SigningParams>] { - #[doc = "The SURI of secret key to use when transactions are submitted to the " $chain " node."] - #[structopt(long)] - pub [<$chain_prefix _signer>]: String, - #[doc = "The password for the SURI of secret key to use when transactions are submitted to the " $chain " node."] - #[structopt(long)] - pub [<$chain_prefix _signer_password>]: Option, - } - - impl [<$chain SigningParams>] { - /// Parse signing params into chain-specific KeyPair. - pub fn to_keypair(&self) -> anyhow::Result { - use sp_core::crypto::Pair; - - Chain::KeyPair::from_string( - &self.[<$chain_prefix _signer>], - self.[<$chain_prefix _signer_password>].as_deref() - ).map_err(|e| anyhow::format_err!("{:?}", e)) - } - } - - impl [<$chain ConnectionParams>] { - /// Convert connection params into Substrate client. - pub async fn to_client( - &self, - ) -> anyhow::Result> { - Ok(relay_substrate_client::Client::new(relay_substrate_client::ConnectionParams { - host: self.[<$chain_prefix _host>].clone(), - port: self.[<$chain_prefix _port>], - secure: self.[<$chain_prefix _secure>], - }) - .await - ) - } - } - } - }; -} - -declare_chain_options!(Source, source); -declare_chain_options!(Target, target); - -#[cfg(test)] -mod tests { - use std::str::FromStr; - - use super::*; - - #[test] - fn should_format_addresses_with_ss58_format() { - // given - let rialto1 = "5sauUXUfPjmwxSgmb3tZ5d6yx24eZX4wWJ2JtVUBaQqFbvEU"; - let rialto2 = "5rERgaT1Z8nM3et2epA5i1VtEBfp5wkhwHtVE8HK7BRbjAH2"; - let millau1 = "752paRyW1EGfq9YLTSSqcSJ5hqnBDidBmaftGhBo8fy6ypW9"; - let millau2 = "74GNQjmkcfstRftSQPJgMREchqHM56EvAUXRc266cZ1NYVW5"; - - let expected = vec![rialto1, rialto2, millau1, millau2]; - - // when - let parsed = expected - .iter() - .map(|s| AccountId::from_str(s).unwrap()) - .collect::>(); - - let actual = parsed.iter().map(|a| format!("{}", a)).collect::>(); - - assert_eq!(actual, expected) - } - - #[test] - fn hex_bytes_display_matches_from_str_for_clap() { - // given - let hex = HexBytes(vec![1, 2, 3, 4]); - let display = format!("{}", hex); - - // when - let hex2: HexBytes = display.parse().unwrap(); - - // then - assert_eq!(hex.0, hex2.0); - } -} diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers.rs b/bridges/relays/bin-substrate/src/cli/relay_headers.rs deleted file mode 100644 index ec521c2918d8..000000000000 --- a/bridges/relays/bin-substrate/src/cli/relay_headers.rs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::{PrometheusParams, SourceConnectionParams, TargetConnectionParams, TargetSigningParams}; -use crate::finality_pipeline::SubstrateFinalitySyncPipeline; -use structopt::{clap::arg_enum, StructOpt}; - -/// Start headers relayer process. -#[derive(StructOpt)] -pub struct RelayHeaders { - /// A bridge instance to relay headers for. - #[structopt(possible_values = &RelayHeadersBridge::variants(), case_insensitive = true)] - bridge: RelayHeadersBridge, - /// If passed, only mandatory headers (headers that are changing the GRANDPA authorities set) are relayed. - #[structopt(long)] - only_mandatory_headers: bool, - #[structopt(flatten)] - source: SourceConnectionParams, - #[structopt(flatten)] - target: TargetConnectionParams, - #[structopt(flatten)] - target_sign: TargetSigningParams, - #[structopt(flatten)] - prometheus_params: PrometheusParams, -} - -// TODO [#851] Use kebab-case. -arg_enum! { - #[derive(Debug)] - /// Headers relay bridge. - pub enum RelayHeadersBridge { - MillauToRialto, - RialtoToMillau, - WestendToMillau, - RococoToWococo, - WococoToRococo, - } -} - -macro_rules! select_bridge { - ($bridge: expr, $generic: tt) => { - match $bridge { - RelayHeadersBridge::MillauToRialto => { - type Source = relay_millau_client::Millau; - type Target = relay_rialto_client::Rialto; - type Finality = crate::chains::millau_headers_to_rialto::MillauFinalityToRialto; - - $generic - } - RelayHeadersBridge::RialtoToMillau => { - type Source = relay_rialto_client::Rialto; - type Target = relay_millau_client::Millau; - type Finality = crate::chains::rialto_headers_to_millau::RialtoFinalityToMillau; - - $generic - } - RelayHeadersBridge::WestendToMillau => { - type Source = relay_westend_client::Westend; - type Target = relay_millau_client::Millau; - type Finality = crate::chains::westend_headers_to_millau::WestendFinalityToMillau; - - $generic - } - RelayHeadersBridge::RococoToWococo => { - type Source = relay_rococo_client::Rococo; - type Target = relay_wococo_client::Wococo; - type Finality = crate::chains::rococo_headers_to_wococo::RococoFinalityToWococo; - - $generic - } - RelayHeadersBridge::WococoToRococo => { - type Source = relay_wococo_client::Wococo; - type Target = relay_rococo_client::Rococo; - type Finality = crate::chains::wococo_headers_to_rococo::WococoFinalityToRococo; - - $generic - } - } - }; -} - -impl RelayHeaders { - /// Run the command. - pub async fn run(self) -> anyhow::Result<()> { - select_bridge!(self.bridge, { - let source_client = self.source.to_client::().await?; - let target_client = self.target.to_client::().await?; - let target_sign = self.target_sign.to_keypair::()?; - let metrics_params = Finality::customize_metrics(self.prometheus_params.into())?; - let finality = Finality::new(target_client.clone(), target_sign); - finality.start_relay_guards(); - - crate::finality_pipeline::run( - finality, - source_client, - target_client, - self.only_mandatory_headers, - metrics_params, - ) - .await - }) - } -} diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs deleted file mode 100644 index e71ea6aeaa2f..000000000000 --- a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Complex headers+messages relays support. -//! -//! To add new complex relay between `ChainA` and `ChainB`, you must: -//! -//! 1) ensure that there's a `declare_chain_options!(...)` for both chains; -//! 2) add `declare_bridge_options!(...)` for the bridge; -//! 3) add bridge support to the `select_bridge! { ... }` macro. - -use crate::cli::{CliChain, HexLaneId, PrometheusParams}; -use crate::declare_chain_options; -use crate::messages_lane::MessagesRelayParams; -use crate::on_demand_headers::OnDemandHeadersRelay; - -use futures::{FutureExt, TryFutureExt}; -use relay_utils::metrics::MetricsParams; -use structopt::StructOpt; - -/// Start headers+messages relayer process. -#[derive(StructOpt)] -pub enum RelayHeadersAndMessages { - MillauRialto(MillauRialtoHeadersAndMessages), - RococoWococo(RococoWococoHeadersAndMessages), -} - -/// Parameters that have the same names across all bridges. -#[derive(StructOpt)] -pub struct HeadersAndMessagesSharedParams { - /// Hex-encoded lane identifiers that should be served by the complex relay. - #[structopt(long, default_value = "00000000")] - lane: Vec, - #[structopt(flatten)] - prometheus_params: PrometheusParams, -} - -// The reason behind this macro is that 'normal' relays are using source and target chains terminology, -// which is unusable for both-way relays (if you're relaying headers from Rialto to Millau and from -// Millau to Rialto, then which chain is source?). -macro_rules! declare_bridge_options { - ($chain1:ident, $chain2:ident) => { - paste::item! { - #[doc = $chain1 " and " $chain2 " headers+messages relay params."] - #[derive(StructOpt)] - pub struct [<$chain1 $chain2 HeadersAndMessages>] { - #[structopt(flatten)] - shared: HeadersAndMessagesSharedParams, - #[structopt(flatten)] - left: [<$chain1 ConnectionParams>], - #[structopt(flatten)] - left_sign: [<$chain1 SigningParams>], - #[structopt(flatten)] - right: [<$chain2 ConnectionParams>], - #[structopt(flatten)] - right_sign: [<$chain2 SigningParams>], - } - - #[allow(unreachable_patterns)] - impl From for [<$chain1 $chain2 HeadersAndMessages>] { - fn from(relay_params: RelayHeadersAndMessages) -> [<$chain1 $chain2 HeadersAndMessages>] { - match relay_params { - RelayHeadersAndMessages::[<$chain1 $chain2>](params) => params, - _ => unreachable!(), - } - } - } - } - }; -} - -macro_rules! select_bridge { - ($bridge: expr, $generic: tt) => { - match $bridge { - RelayHeadersAndMessages::MillauRialto(_) => { - type Params = MillauRialtoHeadersAndMessages; - - type Left = relay_millau_client::Millau; - type Right = relay_rialto_client::Rialto; - - type LeftToRightFinality = crate::chains::millau_headers_to_rialto::MillauFinalityToRialto; - type RightToLeftFinality = crate::chains::rialto_headers_to_millau::RialtoFinalityToMillau; - - type LeftToRightMessages = crate::chains::millau_messages_to_rialto::MillauMessagesToRialto; - type RightToLeftMessages = crate::chains::rialto_messages_to_millau::RialtoMessagesToMillau; - - const MAX_MISSING_LEFT_HEADERS_AT_RIGHT: bp_millau::BlockNumber = bp_millau::SESSION_LENGTH; - const MAX_MISSING_RIGHT_HEADERS_AT_LEFT: bp_rialto::BlockNumber = bp_rialto::SESSION_LENGTH; - - use crate::chains::millau_messages_to_rialto::run as left_to_right_messages; - use crate::chains::rialto_messages_to_millau::run as right_to_left_messages; - - $generic - } - RelayHeadersAndMessages::RococoWococo(_) => { - type Params = RococoWococoHeadersAndMessages; - - type Left = relay_rococo_client::Rococo; - type Right = relay_wococo_client::Wococo; - - type LeftToRightFinality = crate::chains::rococo_headers_to_wococo::RococoFinalityToWococo; - type RightToLeftFinality = crate::chains::wococo_headers_to_rococo::WococoFinalityToRococo; - - type LeftToRightMessages = crate::chains::rococo_messages_to_wococo::RococoMessagesToWococo; - type RightToLeftMessages = crate::chains::wococo_messages_to_rococo::WococoMessagesToRococo; - - const MAX_MISSING_LEFT_HEADERS_AT_RIGHT: bp_rococo::BlockNumber = bp_rococo::SESSION_LENGTH; - const MAX_MISSING_RIGHT_HEADERS_AT_LEFT: bp_wococo::BlockNumber = bp_wococo::SESSION_LENGTH; - - use crate::chains::rococo_messages_to_wococo::run as left_to_right_messages; - use crate::chains::wococo_messages_to_rococo::run as right_to_left_messages; - - $generic - } - } - }; -} - -// All supported chains. -declare_chain_options!(Millau, millau); -declare_chain_options!(Rialto, rialto); -declare_chain_options!(Rococo, rococo); -declare_chain_options!(Wococo, wococo); -// All supported bridges. -declare_bridge_options!(Millau, Rialto); -declare_bridge_options!(Rococo, Wococo); - -impl RelayHeadersAndMessages { - /// Run the command. - pub async fn run(self) -> anyhow::Result<()> { - select_bridge!(self, { - let params: Params = self.into(); - - let left_client = params.left.to_client::().await?; - let left_sign = params.left_sign.to_keypair::()?; - let right_client = params.right.to_client::().await?; - let right_sign = params.right_sign.to_keypair::()?; - - let lanes = params.shared.lane; - - let metrics_params: MetricsParams = params.shared.prometheus_params.into(); - let metrics_params = relay_utils::relay_metrics(None, metrics_params).into_params(); - - let left_to_right_on_demand_headers = OnDemandHeadersRelay::new( - left_client.clone(), - right_client.clone(), - LeftToRightFinality::new(right_client.clone(), right_sign.clone()), - MAX_MISSING_LEFT_HEADERS_AT_RIGHT, - ); - let right_to_left_on_demand_headers = OnDemandHeadersRelay::new( - right_client.clone(), - left_client.clone(), - RightToLeftFinality::new(left_client.clone(), left_sign.clone()), - MAX_MISSING_RIGHT_HEADERS_AT_LEFT, - ); - - // Need 2x capacity since we consider both directions for each lane - let mut message_relays = Vec::with_capacity(lanes.len() * 2); - for lane in lanes { - let lane = lane.into(); - let left_to_right_messages = left_to_right_messages(MessagesRelayParams { - source_client: left_client.clone(), - source_sign: left_sign.clone(), - target_client: right_client.clone(), - target_sign: right_sign.clone(), - source_to_target_headers_relay: Some(left_to_right_on_demand_headers.clone()), - target_to_source_headers_relay: Some(right_to_left_on_demand_headers.clone()), - lane_id: lane, - metrics_params: metrics_params.clone().disable().metrics_prefix( - messages_relay::message_lane_loop::metrics_prefix::(&lane), - ), - }) - .map_err(|e| anyhow::format_err!("{}", e)) - .boxed(); - let right_to_left_messages = right_to_left_messages(MessagesRelayParams { - source_client: right_client.clone(), - source_sign: right_sign.clone(), - target_client: left_client.clone(), - target_sign: left_sign.clone(), - source_to_target_headers_relay: Some(right_to_left_on_demand_headers.clone()), - target_to_source_headers_relay: Some(left_to_right_on_demand_headers.clone()), - lane_id: lane, - metrics_params: metrics_params.clone().disable().metrics_prefix( - messages_relay::message_lane_loop::metrics_prefix::(&lane), - ), - }) - .map_err(|e| anyhow::format_err!("{}", e)) - .boxed(); - - message_relays.push(left_to_right_messages); - message_relays.push(right_to_left_messages); - } - - relay_utils::relay_metrics(None, metrics_params) - .expose() - .await - .map_err(|e| anyhow::format_err!("{}", e))?; - - futures::future::select_all(message_relays).await.0 - }) - } -} diff --git a/bridges/relays/bin-substrate/src/cli/relay_messages.rs b/bridges/relays/bin-substrate/src/cli/relay_messages.rs deleted file mode 100644 index 94630886ca38..000000000000 --- a/bridges/relays/bin-substrate/src/cli/relay_messages.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::bridge::FullBridge; -use crate::cli::{ - HexLaneId, PrometheusParams, SourceConnectionParams, SourceSigningParams, TargetConnectionParams, - TargetSigningParams, -}; -use crate::messages_lane::MessagesRelayParams; -use crate::select_full_bridge; - -use structopt::StructOpt; - -/// Start messages relayer process. -#[derive(StructOpt)] -pub struct RelayMessages { - /// A bridge instance to relay messages for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] - bridge: FullBridge, - /// Hex-encoded lane id that should be served by the relay. Defaults to `00000000`. - #[structopt(long, default_value = "00000000")] - lane: HexLaneId, - #[structopt(flatten)] - source: SourceConnectionParams, - #[structopt(flatten)] - source_sign: SourceSigningParams, - #[structopt(flatten)] - target: TargetConnectionParams, - #[structopt(flatten)] - target_sign: TargetSigningParams, - #[structopt(flatten)] - prometheus_params: PrometheusParams, -} - -impl RelayMessages { - /// Run the command. - pub async fn run(self) -> anyhow::Result<()> { - select_full_bridge!(self.bridge, { - let source_client = self.source.to_client::().await?; - let source_sign = self.source_sign.to_keypair::()?; - let target_client = self.target.to_client::().await?; - let target_sign = self.target_sign.to_keypair::()?; - - relay_messages(MessagesRelayParams { - source_client, - source_sign, - target_client, - target_sign, - source_to_target_headers_relay: None, - target_to_source_headers_relay: None, - lane_id: self.lane.into(), - metrics_params: self.prometheus_params.into(), - }) - .await - .map_err(|e| anyhow::format_err!("{}", e)) - }) - } -} diff --git a/bridges/relays/bin-substrate/src/cli/send_message.rs b/bridges/relays/bin-substrate/src/cli/send_message.rs deleted file mode 100644 index f710f814e41d..000000000000 --- a/bridges/relays/bin-substrate/src/cli/send_message.rs +++ /dev/null @@ -1,352 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::cli::bridge::FullBridge; -use crate::cli::encode_call::{self, CliEncodeCall}; -use crate::cli::estimate_fee::estimate_message_delivery_and_dispatch_fee; -use crate::cli::{ - Balance, CliChain, ExplicitOrMaximal, HexBytes, HexLaneId, Origins, SourceConnectionParams, SourceSigningParams, - TargetSigningParams, -}; -use bp_message_dispatch::{CallOrigin, MessagePayload}; -use bp_runtime::messages::DispatchFeePayment; -use codec::Encode; -use frame_support::weights::Weight; -use relay_substrate_client::{Chain, TransactionSignScheme}; -use sp_core::{Bytes, Pair}; -use sp_runtime::{traits::IdentifyAccount, AccountId32, MultiSignature, MultiSigner}; -use std::fmt::Debug; -use structopt::StructOpt; - -/// Send bridge message. -#[derive(StructOpt)] -pub struct SendMessage { - /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] - bridge: FullBridge, - #[structopt(flatten)] - source: SourceConnectionParams, - #[structopt(flatten)] - source_sign: SourceSigningParams, - /// The SURI of secret key to use when transactions are submitted to the Target node. - #[structopt(long, required_if("origin", "Target"))] - target_signer: Option, - /// The password for the SURI of secret key to use when transactions are submitted to the Target node. - #[structopt(long)] - target_signer_password: Option, - /// Hex-encoded lane id. Defaults to `00000000`. - #[structopt(long, default_value = "00000000")] - lane: HexLaneId, - /// Dispatch weight of the message. If not passed, determined automatically. - #[structopt(long)] - dispatch_weight: Option>, - /// Delivery and dispatch fee in source chain base currency units. If not passed, determined automatically. - #[structopt(long)] - fee: Option, - /// Message type. - #[structopt(subcommand)] - message: crate::cli::encode_call::Call, - /// The origin to use when dispatching the message on the target chain. Defaults to - /// `SourceAccount`. - #[structopt(long, possible_values = &Origins::variants(), default_value = "Source")] - origin: Origins, -} - -impl SendMessage { - pub fn encode_payload( - &mut self, - ) -> anyhow::Result>> { - crate::select_full_bridge!(self.bridge, { - let SendMessage { - source_sign, - target_signer, - target_signer_password, - ref mut message, - dispatch_weight, - origin, - bridge, - .. - } = self; - - let source_sign = source_sign.to_keypair::()?; - - encode_call::preprocess_call::(message, bridge.bridge_instance_index()); - let target_call = Target::encode_call(message)?; - - let payload = { - let target_call_weight = prepare_call_dispatch_weight( - dispatch_weight, - ExplicitOrMaximal::Explicit(Target::get_dispatch_info(&target_call)?.weight), - compute_maximal_message_dispatch_weight(Target::max_extrinsic_weight()), - ); - let source_sender_public: MultiSigner = source_sign.public().into(); - let source_account_id = source_sender_public.into_account(); - - message_payload( - Target::RUNTIME_VERSION.spec_version, - target_call_weight, - match origin { - Origins::Source => CallOrigin::SourceAccount(source_account_id), - Origins::Target => { - let target_sign = TargetSigningParams { - target_signer: target_signer.clone().ok_or_else(|| { - anyhow::format_err!("The argument target_signer is not available") - })?, - target_signer_password: target_signer_password.clone(), - }; - let target_sign = target_sign.to_keypair::()?; - let digest = account_ownership_digest( - &target_call, - source_account_id.clone(), - Target::RUNTIME_VERSION.spec_version, - ); - let target_origin_public = target_sign.public(); - let digest_signature = target_sign.sign(&digest); - CallOrigin::TargetAccount( - source_account_id, - target_origin_public.into(), - digest_signature.into(), - ) - } - }, - &target_call, - ) - }; - Ok(payload) - }) - } - - /// Run the command. - pub async fn run(mut self) -> anyhow::Result<()> { - crate::select_full_bridge!(self.bridge, { - let payload = self.encode_payload()?; - - let source_client = self.source.to_client::().await?; - let source_sign = self.source_sign.to_keypair::()?; - - let lane = self.lane.clone().into(); - let fee = match self.fee { - Some(fee) => fee, - None => Balance( - estimate_message_delivery_and_dispatch_fee::<::Balance, _, _>( - &source_client, - ESTIMATE_MESSAGE_FEE_METHOD, - lane, - payload.clone(), - ) - .await? as _, - ), - }; - let dispatch_weight = payload.weight; - let send_message_call = Source::encode_call(&encode_call::Call::BridgeSendMessage { - bridge_instance_index: self.bridge.bridge_instance_index(), - lane: self.lane, - payload: HexBytes::encode(&payload), - fee, - })?; - - source_client - .submit_signed_extrinsic(source_sign.public().into(), |transaction_nonce| { - let signed_source_call = Source::sign_transaction( - *source_client.genesis_hash(), - &source_sign, - transaction_nonce, - send_message_call, - ) - .encode(); - - log::info!( - target: "bridge", - "Sending message to {}. Size: {}. Dispatch weight: {}. Fee: {}", - Target::NAME, - signed_source_call.len(), - dispatch_weight, - fee, - ); - log::info!( - target: "bridge", - "Signed {} Call: {:?}", - Source::NAME, - HexBytes::encode(&signed_source_call) - ); - - Bytes(signed_source_call) - }) - .await?; - }); - - Ok(()) - } -} - -fn prepare_call_dispatch_weight( - user_specified_dispatch_weight: &Option>, - weight_from_pre_dispatch_call: ExplicitOrMaximal, - maximal_allowed_weight: Weight, -) -> Weight { - match user_specified_dispatch_weight - .clone() - .unwrap_or(weight_from_pre_dispatch_call) - { - ExplicitOrMaximal::Explicit(weight) => weight, - ExplicitOrMaximal::Maximal => maximal_allowed_weight, - } -} - -pub(crate) fn message_payload( - spec_version: u32, - weight: Weight, - origin: CallOrigin, - call: &impl Encode, -) -> MessagePayload> -where - SAccountId: Encode + Debug, - TPublic: Encode + Debug, - TSignature: Encode + Debug, -{ - // Display nicely formatted call. - let payload = MessagePayload { - spec_version, - weight, - origin, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: HexBytes::encode(call), - }; - - log::info!(target: "bridge", "Created Message Payload: {:#?}", payload); - log::info!(target: "bridge", "Encoded Message Payload: {:?}", HexBytes::encode(&payload)); - - // re-pack to return `Vec` - let MessagePayload { - spec_version, - weight, - origin, - dispatch_fee_payment, - call, - } = payload; - MessagePayload { - spec_version, - weight, - origin, - dispatch_fee_payment, - call: call.0, - } -} - -pub(crate) fn compute_maximal_message_dispatch_weight(maximal_extrinsic_weight: Weight) -> Weight { - bridge_runtime_common::messages::target::maximal_incoming_message_dispatch_weight(maximal_extrinsic_weight) -} - -#[cfg(test)] -mod tests { - use super::*; - use hex_literal::hex; - - #[test] - fn send_remark_rialto_to_millau() { - // given - let mut send_message = SendMessage::from_iter(vec![ - "send-message", - "RialtoToMillau", - "--source-port", - "1234", - "--source-signer", - "//Alice", - "remark", - "--remark-payload", - "1234", - ]); - - // when - let payload = send_message.encode_payload().unwrap(); - - // then - assert_eq!( - payload, - MessagePayload { - spec_version: relay_millau_client::Millau::RUNTIME_VERSION.spec_version, - weight: 1038000, - origin: CallOrigin::SourceAccount(sp_keyring::AccountKeyring::Alice.to_account_id()), - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: hex!("0401081234").to_vec(), - } - ); - } - - #[test] - fn send_remark_millau_to_rialto() { - // given - let mut send_message = SendMessage::from_iter(vec![ - "send-message", - "MillauToRialto", - "--source-port", - "1234", - "--source-signer", - "//Alice", - "--origin", - "Target", - "--target-signer", - "//Bob", - "remark", - "--remark-payload", - "1234", - ]); - - // when - let payload = send_message.encode_payload().unwrap(); - - // then - // Since signatures are randomized we extract it from here and only check the rest. - let signature = match payload.origin { - CallOrigin::TargetAccount(_, _, ref sig) => sig.clone(), - _ => panic!("Unexpected `CallOrigin`: {:?}", payload), - }; - assert_eq!( - payload, - MessagePayload { - spec_version: relay_millau_client::Millau::RUNTIME_VERSION.spec_version, - weight: 1038000, - origin: CallOrigin::TargetAccount( - sp_keyring::AccountKeyring::Alice.to_account_id(), - sp_keyring::AccountKeyring::Bob.into(), - signature, - ), - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - call: hex!("0701081234").to_vec(), - } - ); - } - - #[test] - fn target_signer_must_exist_if_origin_is_target() { - // given - let send_message = SendMessage::from_iter_safe(vec![ - "send-message", - "MillauToRialto", - "--source-port", - "1234", - "--source-signer", - "//Alice", - "--origin", - "Target", - "remark", - "--remark-payload", - "1234", - ]); - - assert!(send_message.is_err()); - } -} diff --git a/bridges/relays/bin-substrate/src/finality_pipeline.rs b/bridges/relays/bin-substrate/src/finality_pipeline.rs deleted file mode 100644 index 19fa0917df39..000000000000 --- a/bridges/relays/bin-substrate/src/finality_pipeline.rs +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate-to-Substrate headers sync entrypoint. - -use crate::finality_target::SubstrateFinalityTarget; - -use bp_header_chain::justification::GrandpaJustification; -use finality_relay::{FinalitySyncParams, FinalitySyncPipeline}; -use relay_substrate_client::{finality_source::FinalitySource, BlockNumberOf, Chain, Client, HashOf, SyncHeader}; -use relay_utils::{metrics::MetricsParams, BlockNumberBase}; -use sp_core::Bytes; -use std::{fmt::Debug, marker::PhantomData, time::Duration}; - -/// Default synchronization loop timeout. -pub(crate) const STALL_TIMEOUT: Duration = Duration::from_secs(120); -/// Default limit of recent finality proofs. -/// -/// Finality delay of 4096 blocks is unlikely to happen in practice in -/// Substrate+GRANDPA based chains (good to know). -pub(crate) const RECENT_FINALITY_PROOFS_LIMIT: usize = 4096; - -/// Headers sync pipeline for Substrate <-> Substrate relays. -pub trait SubstrateFinalitySyncPipeline: FinalitySyncPipeline { - /// Name of the runtime method that returns id of best finalized source header at target chain. - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str; - - /// Chain with GRANDPA bridge pallet. - type TargetChain: Chain; - - /// Customize metrics exposed by headers sync loop. - fn customize_metrics(params: MetricsParams) -> anyhow::Result { - Ok(params) - } - - /// Start finality relay guards. - /// - /// Different finality bridges may have different set of guards - e.g. on ephemeral chains we - /// don't need version guards, on test chains we don't care that much about relayer account - /// balance, ... So the implementation is left to the specific bridges. - fn start_relay_guards(&self) {} - - /// Returns id of account that we're using to sign transactions at target chain. - fn transactions_author(&self) -> ::AccountId; - - /// Make submit header transaction. - fn make_submit_finality_proof_transaction( - &self, - transaction_nonce: ::Index, - header: Self::Header, - proof: Self::FinalityProof, - ) -> Bytes; -} - -/// Substrate-to-Substrate finality proof pipeline. -#[derive(Clone)] -pub struct SubstrateFinalityToSubstrate { - /// Client for the target chain. - pub(crate) target_client: Client, - /// Data required to sign target chain transactions. - pub(crate) target_sign: TargetSign, - /// Unused generic arguments dump. - _marker: PhantomData, -} - -impl Debug - for SubstrateFinalityToSubstrate -{ - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - f.debug_struct("SubstrateFinalityToSubstrate") - .field("target_client", &self.target_client) - .finish() - } -} - -impl SubstrateFinalityToSubstrate { - /// Create new Substrate-to-Substrate headers pipeline. - pub fn new(target_client: Client, target_sign: TargetSign) -> Self { - SubstrateFinalityToSubstrate { - target_client, - target_sign, - _marker: Default::default(), - } - } -} - -impl FinalitySyncPipeline - for SubstrateFinalityToSubstrate -where - SourceChain: Clone + Chain + Debug, - BlockNumberOf: BlockNumberBase, - TargetChain: Clone + Chain + Debug, - TargetSign: 'static + Clone + Send + Sync, -{ - const SOURCE_NAME: &'static str = SourceChain::NAME; - const TARGET_NAME: &'static str = TargetChain::NAME; - - type Hash = HashOf; - type Number = BlockNumberOf; - type Header = SyncHeader; - type FinalityProof = GrandpaJustification; -} - -/// Run Substrate-to-Substrate finality sync. -pub async fn run( - pipeline: P, - source_client: Client, - target_client: Client, - only_mandatory_headers: bool, - metrics_params: MetricsParams, -) -> anyhow::Result<()> -where - P: SubstrateFinalitySyncPipeline< - Hash = HashOf, - Number = BlockNumberOf, - Header = SyncHeader, - FinalityProof = GrandpaJustification, - TargetChain = TargetChain, - >, - SourceChain: Clone + Chain, - BlockNumberOf: BlockNumberBase, - TargetChain: Clone + Chain, -{ - log::info!( - target: "bridge", - "Starting {} -> {} finality proof relay", - SourceChain::NAME, - TargetChain::NAME, - ); - - finality_relay::run( - FinalitySource::new(source_client, None), - SubstrateFinalityTarget::new(target_client, pipeline), - FinalitySyncParams { - tick: std::cmp::max(SourceChain::AVERAGE_BLOCK_INTERVAL, TargetChain::AVERAGE_BLOCK_INTERVAL), - recent_finality_proofs_limit: RECENT_FINALITY_PROOFS_LIMIT, - stall_timeout: STALL_TIMEOUT, - only_mandatory_headers, - }, - metrics_params, - futures::future::pending(), - ) - .await - .map_err(|e| anyhow::format_err!("{}", e)) -} diff --git a/bridges/relays/bin-substrate/src/finality_target.rs b/bridges/relays/bin-substrate/src/finality_target.rs deleted file mode 100644 index ffa10cabacbf..000000000000 --- a/bridges/relays/bin-substrate/src/finality_target.rs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate client as Substrate finality proof target. The chain we connect to should have -//! runtime that implements `FinalityApi` to allow bridging with -//! chain. - -use crate::finality_pipeline::SubstrateFinalitySyncPipeline; - -use async_trait::async_trait; -use codec::Decode; -use finality_relay::TargetClient; -use relay_substrate_client::{Chain, Client, Error as SubstrateError}; -use relay_utils::relay_loop::Client as RelayClient; - -/// Substrate client as Substrate finality target. -pub struct SubstrateFinalityTarget { - client: Client, - pipeline: P, -} - -impl SubstrateFinalityTarget { - /// Create new Substrate headers target. - pub fn new(client: Client, pipeline: P) -> Self { - SubstrateFinalityTarget { client, pipeline } - } -} - -impl Clone for SubstrateFinalityTarget { - fn clone(&self) -> Self { - SubstrateFinalityTarget { - client: self.client.clone(), - pipeline: self.pipeline.clone(), - } - } -} - -#[async_trait] -impl RelayClient for SubstrateFinalityTarget { - type Error = SubstrateError; - - async fn reconnect(&mut self) -> Result<(), SubstrateError> { - self.client.reconnect().await - } -} - -#[async_trait] -impl TargetClient

for SubstrateFinalityTarget -where - C: Chain, - P::Number: Decode, - P::Hash: Decode, - P: SubstrateFinalitySyncPipeline, -{ - async fn best_finalized_source_block_number(&self) -> Result { - // we can't continue to relay finality if target node is out of sync, because - // it may have already received (some of) headers that we're going to relay - self.client.ensure_synced().await?; - - Ok(crate::messages_source::read_client_state::( - &self.client, - P::BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET, - ) - .await? - .best_finalized_peer_at_best_self - .0) - } - - async fn submit_finality_proof(&self, header: P::Header, proof: P::FinalityProof) -> Result<(), SubstrateError> { - self.client - .submit_signed_extrinsic(self.pipeline.transactions_author(), move |transaction_nonce| { - self.pipeline - .make_submit_finality_proof_transaction(transaction_nonce, header, proof) - }) - .await - .map(drop) - } -} diff --git a/bridges/relays/bin-substrate/src/headers_initialize.rs b/bridges/relays/bin-substrate/src/headers_initialize.rs deleted file mode 100644 index c2eab1bd3534..000000000000 --- a/bridges/relays/bin-substrate/src/headers_initialize.rs +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Initialize Substrate -> Substrate headers bridge. -//! -//! Initialization is a transaction that calls `initialize()` function of the -//! `pallet-bridge-grandpa` pallet. This transaction brings initial header -//! and authorities set from source to target chain. The headers sync starts -//! with this header. - -use bp_header_chain::InitializationData; -use bp_header_chain::{ - find_grandpa_authorities_scheduled_change, - justification::{verify_justification, GrandpaJustification}, -}; -use codec::Decode; -use finality_grandpa::voter_set::VoterSet; -use num_traits::{One, Zero}; -use relay_substrate_client::{Chain, Client}; -use sp_core::Bytes; -use sp_finality_grandpa::AuthorityList as GrandpaAuthoritiesSet; -use sp_runtime::traits::Header as HeaderT; - -/// Submit headers-bridge initialization transaction. -pub async fn initialize( - source_client: Client, - target_client: Client, - target_transactions_signer: TargetChain::AccountId, - prepare_initialize_transaction: impl FnOnce(TargetChain::Index, InitializationData) -> Bytes, -) { - let result = do_initialize( - source_client, - target_client, - target_transactions_signer, - prepare_initialize_transaction, - ) - .await; - - match result { - Ok(tx_hash) => log::info!( - target: "bridge", - "Successfully submitted {}-headers bridge initialization transaction to {}: {:?}", - SourceChain::NAME, - TargetChain::NAME, - tx_hash, - ), - Err(err) => log::error!( - target: "bridge", - "Failed to submit {}-headers bridge initialization transaction to {}: {:?}", - SourceChain::NAME, - TargetChain::NAME, - err, - ), - } -} - -/// Craft and submit initialization transaction, returning any error that may occur. -async fn do_initialize( - source_client: Client, - target_client: Client, - target_transactions_signer: TargetChain::AccountId, - prepare_initialize_transaction: impl FnOnce(TargetChain::Index, InitializationData) -> Bytes, -) -> Result { - let initialization_data = prepare_initialization_data(source_client).await?; - log::info!( - target: "bridge", - "Prepared initialization data for {}-headers bridge at {}: {:?}", - SourceChain::NAME, - TargetChain::NAME, - initialization_data, - ); - - let initialization_tx_hash = target_client - .submit_signed_extrinsic(target_transactions_signer, move |transaction_nonce| { - prepare_initialize_transaction(transaction_nonce, initialization_data) - }) - .await - .map_err(|err| format!("Failed to submit {} transaction: {:?}", TargetChain::NAME, err))?; - Ok(initialization_tx_hash) -} - -/// Prepare initialization data for the GRANDPA verifier pallet. -async fn prepare_initialization_data( - source_client: Client, -) -> Result, String> { - // In ideal world we just need to get best finalized header and then to read GRANDPA authorities - // set (`pallet_grandpa::CurrentSetId` + `GrandpaApi::grandpa_authorities()`) at this header. - // - // But now there are problems with this approach - `CurrentSetId` may return invalid value. So here - // we're waiting for the next justification, read the authorities set and then try to figure out - // the set id with bruteforce. - let mut justifications = source_client - .subscribe_justifications() - .await - .map_err(|err| format!("Failed to subscribe to {} justifications: {:?}", SourceChain::NAME, err))?; - - // Read next justification - the header that it finalizes will be used as initial header. - let justification = justifications.next().await.ok_or_else(|| { - format!( - "Failed to read {} justification from the stream: stream has ended unexpectedly", - SourceChain::NAME, - ) - })?; - - // Read initial header. - let justification: GrandpaJustification = Decode::decode(&mut &justification.0[..]) - .map_err(|err| format!("Failed to decode {} justification: {:?}", SourceChain::NAME, err))?; - - let (initial_header_hash, initial_header_number) = - (justification.commit.target_hash, justification.commit.target_number); - - let initial_header = source_header(&source_client, initial_header_hash).await?; - log::trace!(target: "bridge", "Selected {} initial header: {}/{}", - SourceChain::NAME, - initial_header_number, - initial_header_hash, - ); - - // Read GRANDPA authorities set at initial header. - let initial_authorities_set = source_authorities_set(&source_client, initial_header_hash).await?; - log::trace!(target: "bridge", "Selected {} initial authorities set: {:?}", - SourceChain::NAME, - initial_authorities_set, - ); - - // If initial header changes the GRANDPA authorities set, then we need previous authorities - // to verify justification. - let mut authorities_for_verification = initial_authorities_set.clone(); - let scheduled_change = find_grandpa_authorities_scheduled_change(&initial_header); - assert!( - scheduled_change.as_ref().map(|c| c.delay.is_zero()).unwrap_or(true), - "GRANDPA authorities change at {} scheduled to happen in {:?} blocks. We expect\ - regular hange to have zero delay", - initial_header_hash, - scheduled_change.as_ref().map(|c| c.delay), - ); - let schedules_change = scheduled_change.is_some(); - if schedules_change { - authorities_for_verification = source_authorities_set(&source_client, *initial_header.parent_hash()).await?; - log::trace!( - target: "bridge", - "Selected {} header is scheduling GRANDPA authorities set changes. Using previous set: {:?}", - SourceChain::NAME, - authorities_for_verification, - ); - } - - // Now let's try to guess authorities set id by verifying justification. - let mut initial_authorities_set_id = 0; - let mut min_possible_block_number = SourceChain::BlockNumber::zero(); - let authorities_for_verification = VoterSet::new(authorities_for_verification.clone()).ok_or_else(|| { - format!( - "Read invalid {} authorities set: {:?}", - SourceChain::NAME, - authorities_for_verification, - ) - })?; - loop { - log::trace!( - target: "bridge", "Trying {} GRANDPA authorities set id: {}", - SourceChain::NAME, - initial_authorities_set_id, - ); - - let is_valid_set_id = verify_justification::( - (initial_header_hash, initial_header_number), - initial_authorities_set_id, - &authorities_for_verification, - &justification, - ) - .is_ok(); - - if is_valid_set_id { - break; - } - - initial_authorities_set_id += 1; - min_possible_block_number += One::one(); - if min_possible_block_number > initial_header_number { - // there can't be more authorities set changes than headers => if we have reached `initial_block_number` - // and still have not found correct value of `initial_authorities_set_id`, then something - // else is broken => fail - return Err(format!( - "Failed to guess initial {} GRANDPA authorities set id: checked all\ - possible ids in range [0; {}]", - SourceChain::NAME, - initial_header_number - )); - } - } - - Ok(InitializationData { - header: initial_header, - authority_list: initial_authorities_set, - set_id: if schedules_change { - initial_authorities_set_id + 1 - } else { - initial_authorities_set_id - }, - is_halted: false, - }) -} - -/// Read header by hash from the source client. -async fn source_header( - source_client: &Client, - header_hash: SourceChain::Hash, -) -> Result { - source_client.header_by_hash(header_hash).await.map_err(|err| { - format!( - "Failed to retrive {} header with hash {}: {:?}", - SourceChain::NAME, - header_hash, - err, - ) - }) -} - -/// Read GRANDPA authorities set at given header. -async fn source_authorities_set( - source_client: &Client, - header_hash: SourceChain::Hash, -) -> Result { - let raw_authorities_set = source_client - .grandpa_authorities_set(header_hash) - .await - .map_err(|err| { - format!( - "Failed to retrive {} GRANDPA authorities set at header {}: {:?}", - SourceChain::NAME, - header_hash, - err, - ) - })?; - GrandpaAuthoritiesSet::decode(&mut &raw_authorities_set[..]).map_err(|err| { - format!( - "Failed to decode {} GRANDPA authorities set at header {}: {:?}", - SourceChain::NAME, - header_hash, - err, - ) - }) -} diff --git a/bridges/relays/bin-substrate/src/main.rs b/bridges/relays/bin-substrate/src/main.rs deleted file mode 100644 index d119042b0d8d..000000000000 --- a/bridges/relays/bin-substrate/src/main.rs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate-to-substrate relay entrypoint. - -#![warn(missing_docs)] - -mod chains; -mod cli; -mod finality_pipeline; -mod finality_target; -mod headers_initialize; -mod messages_lane; -mod messages_source; -mod messages_target; -mod on_demand_headers; - -fn main() { - let command = cli::parse_args(); - let run = command.run(); - let result = async_std::task::block_on(run); - if let Err(error) = result { - log::error!(target: "bridge", "Failed to start relay: {}", error); - } -} diff --git a/bridges/relays/bin-substrate/src/messages_lane.rs b/bridges/relays/bin-substrate/src/messages_lane.rs deleted file mode 100644 index 7efea545f9a6..000000000000 --- a/bridges/relays/bin-substrate/src/messages_lane.rs +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::messages_source::SubstrateMessagesProof; -use crate::messages_target::SubstrateMessagesReceivingProof; -use crate::on_demand_headers::OnDemandHeadersRelay; - -use bp_messages::{LaneId, MessageNonce}; -use frame_support::weights::Weight; -use messages_relay::message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}; -use relay_substrate_client::{BlockNumberOf, Chain, Client, HashOf}; -use relay_utils::{metrics::MetricsParams, BlockNumberBase}; -use sp_core::Bytes; -use std::ops::RangeInclusive; - -/// Substrate <-> Substrate messages relay parameters. -pub struct MessagesRelayParams { - /// Messages source client. - pub source_client: Client, - /// Sign parameters for messages source chain. - pub source_sign: SS, - /// Messages target client. - pub target_client: Client, - /// Sign parameters for messages target chain. - pub target_sign: TS, - /// Optional on-demand source to target headers relay. - pub source_to_target_headers_relay: Option>, - /// Optional on-demand target to source headers relay. - pub target_to_source_headers_relay: Option>, - /// Identifier of lane that needs to be served. - pub lane_id: LaneId, - /// Metrics parameters. - pub metrics_params: MetricsParams, -} - -/// Message sync pipeline for Substrate <-> Substrate relays. -pub trait SubstrateMessageLane: MessageLane { - /// Name of the runtime method that returns dispatch weight of outbound messages at the source chain. - const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str; - /// Name of the runtime method that returns latest generated nonce at the source chain. - const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str; - /// Name of the runtime method that returns latest received (confirmed) nonce at the the source chain. - const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str; - - /// Name of the runtime method that returns latest received nonce at the target chain. - const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str; - /// Name of the runtime method that returns latest confirmed (reward-paid) nonce at the target chain. - const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str; - /// Numebr of the runtime method that returns state of "unrewarded relayers" set at the target chain. - const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str; - - /// Name of the runtime method that returns id of best finalized source header at target chain. - const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str; - /// Name of the runtime method that returns id of best finalized target header at source chain. - const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str; - - /// Source chain. - type SourceChain: Chain; - /// Target chain. - type TargetChain: Chain; - - /// Returns id of account that we're using to sign transactions at target chain (messages proof). - fn target_transactions_author(&self) -> ::AccountId; - - /// Make messages delivery transaction. - fn make_messages_delivery_transaction( - &self, - transaction_nonce: ::Index, - generated_at_header: SourceHeaderIdOf, - nonces: RangeInclusive, - proof: Self::MessagesProof, - ) -> Bytes; - - /// Returns id of account that we're using to sign transactions at source chain (delivery proof). - fn source_transactions_author(&self) -> ::AccountId; - - /// Make messages receiving proof transaction. - fn make_messages_receiving_proof_transaction( - &self, - transaction_nonce: ::Index, - generated_at_header: TargetHeaderIdOf, - proof: Self::MessagesReceivingProof, - ) -> Bytes; -} - -/// Substrate-to-Substrate message lane. -#[derive(Debug)] -pub struct SubstrateMessageLaneToSubstrate { - /// Client for the source Substrate chain. - pub(crate) source_client: Client, - /// Parameters required to sign transactions for source chain. - pub(crate) source_sign: SourceSignParams, - /// Client for the target Substrate chain. - pub(crate) target_client: Client, - /// Parameters required to sign transactions for target chain. - pub(crate) target_sign: TargetSignParams, - /// Account id of relayer at the source chain. - pub(crate) relayer_id_at_source: Source::AccountId, -} - -impl Clone - for SubstrateMessageLaneToSubstrate -{ - fn clone(&self) -> Self { - Self { - source_client: self.source_client.clone(), - source_sign: self.source_sign.clone(), - target_client: self.target_client.clone(), - target_sign: self.target_sign.clone(), - relayer_id_at_source: self.relayer_id_at_source.clone(), - } - } -} - -impl MessageLane - for SubstrateMessageLaneToSubstrate -where - SourceSignParams: Clone + Send + Sync + 'static, - TargetSignParams: Clone + Send + Sync + 'static, - BlockNumberOf: BlockNumberBase, - BlockNumberOf: BlockNumberBase, -{ - const SOURCE_NAME: &'static str = Source::NAME; - const TARGET_NAME: &'static str = Target::NAME; - - type MessagesProof = SubstrateMessagesProof; - type MessagesReceivingProof = SubstrateMessagesReceivingProof; - - type SourceChainBalance = Source::Balance; - type SourceHeaderNumber = BlockNumberOf; - type SourceHeaderHash = HashOf; - - type TargetHeaderNumber = BlockNumberOf; - type TargetHeaderHash = HashOf; -} - -/// Returns maximal number of messages and their maximal cumulative dispatch weight, based -/// on given chain parameters. -pub fn select_delivery_transaction_limits( - max_extrinsic_weight: Weight, - max_unconfirmed_messages_at_inbound_lane: MessageNonce, -) -> (MessageNonce, Weight) { - // We may try to guess accurate value, based on maximal number of messages and per-message - // weight overhead, but the relay loop isn't using this info in a super-accurate way anyway. - // So just a rough guess: let's say 1/3 of max tx weight is for tx itself and the rest is - // for messages dispatch. - - // Another thing to keep in mind is that our runtimes (when this code was written) accept - // messages with dispatch weight <= max_extrinsic_weight/2. So we can't reserve less than - // that for dispatch. - - let weight_for_delivery_tx = max_extrinsic_weight / 3; - let weight_for_messages_dispatch = max_extrinsic_weight - weight_for_delivery_tx; - - let delivery_tx_base_weight = - W::receive_messages_proof_overhead() + W::receive_messages_proof_outbound_lane_state_overhead(); - let delivery_tx_weight_rest = weight_for_delivery_tx - delivery_tx_base_weight; - let max_number_of_messages = std::cmp::min( - delivery_tx_weight_rest / W::receive_messages_proof_messages_overhead(1), - max_unconfirmed_messages_at_inbound_lane, - ); - - assert!( - max_number_of_messages > 0, - "Relay should fit at least one message in every delivery transaction", - ); - assert!( - weight_for_messages_dispatch >= max_extrinsic_weight / 2, - "Relay shall be able to deliver messages with dispatch weight = max_extrinsic_weight / 2", - ); - - (max_number_of_messages, weight_for_messages_dispatch) -} - -#[cfg(test)] -mod tests { - use super::*; - - type RialtoToMillauMessagesWeights = pallet_bridge_messages::weights::RialtoWeight; - - #[test] - fn select_delivery_transaction_limits_works() { - let (max_count, max_weight) = select_delivery_transaction_limits::( - bp_millau::max_extrinsic_weight(), - bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, - ); - assert_eq!( - (max_count, max_weight), - // We don't actually care about these values, so feel free to update them whenever test - // fails. The only thing to do before that is to ensure that new values looks sane: i.e. weight - // reserved for messages dispatch allows dispatch of non-trivial messages. - // - // Any significant change in this values should attract additional attention. - (782, 216_583_333_334), - ); - } -} diff --git a/bridges/relays/bin-substrate/src/messages_source.rs b/bridges/relays/bin-substrate/src/messages_source.rs deleted file mode 100644 index 88c8b529dcc6..000000000000 --- a/bridges/relays/bin-substrate/src/messages_source.rs +++ /dev/null @@ -1,472 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate client as Substrate messages source. The chain we connect to should have -//! runtime that implements `HeaderApi` to allow bridging with -//! chain. - -use crate::messages_lane::SubstrateMessageLane; -use crate::on_demand_headers::OnDemandHeadersRelay; - -use async_trait::async_trait; -use bp_messages::{LaneId, MessageNonce}; -use bp_runtime::{messages::DispatchFeePayment, ChainId}; -use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; -use codec::{Decode, Encode}; -use frame_support::{traits::Instance, weights::Weight}; -use messages_relay::{ - message_lane::{SourceHeaderIdOf, TargetHeaderIdOf}, - message_lane_loop::{ - ClientState, MessageDetails, MessageDetailsMap, MessageProofParameters, SourceClient, SourceClientState, - }, -}; -use relay_substrate_client::{Chain, Client, Error as SubstrateError, HashOf, HeaderIdOf}; -use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId}; -use sp_core::Bytes; -use sp_runtime::{traits::Header as HeaderT, DeserializeOwned}; -use std::{marker::PhantomData, ops::RangeInclusive}; - -/// Intermediate message proof returned by the source Substrate node. Includes everything -/// required to submit to the target node: cumulative dispatch weight of bundled messages and -/// the proof itself. -pub type SubstrateMessagesProof = (Weight, FromBridgedChainMessagesProof>); - -/// Substrate client as Substrate messages source. -pub struct SubstrateMessagesSource { - client: Client, - lane: P, - lane_id: LaneId, - instance: ChainId, - target_to_source_headers_relay: Option>, - _phantom: PhantomData, -} - -impl SubstrateMessagesSource { - /// Create new Substrate headers source. - pub fn new( - client: Client, - lane: P, - lane_id: LaneId, - instance: ChainId, - target_to_source_headers_relay: Option>, - ) -> Self { - SubstrateMessagesSource { - client, - lane, - lane_id, - instance, - target_to_source_headers_relay, - _phantom: Default::default(), - } - } -} - -impl Clone for SubstrateMessagesSource { - fn clone(&self) -> Self { - Self { - client: self.client.clone(), - lane: self.lane.clone(), - lane_id: self.lane_id, - instance: self.instance, - target_to_source_headers_relay: self.target_to_source_headers_relay.clone(), - _phantom: Default::default(), - } - } -} - -#[async_trait] -impl RelayClient for SubstrateMessagesSource -where - C: Chain, - P: SubstrateMessageLane, - I: Send + Sync + Instance, -{ - type Error = SubstrateError; - - async fn reconnect(&mut self) -> Result<(), SubstrateError> { - self.client.reconnect().await - } -} - -#[async_trait] -impl SourceClient

for SubstrateMessagesSource -where - C: Chain, - C::Header: DeserializeOwned, - C::Index: DeserializeOwned, - C::BlockNumber: BlockNumberBase, - P: SubstrateMessageLane< - MessagesProof = SubstrateMessagesProof, - SourceChainBalance = C::Balance, - SourceHeaderNumber = ::Number, - SourceHeaderHash = ::Hash, - SourceChain = C, - >, - P::TargetChain: Chain, - P::TargetHeaderNumber: Decode, - P::TargetHeaderHash: Decode, - I: Send + Sync + Instance, -{ - async fn state(&self) -> Result, SubstrateError> { - // we can't continue to deliver confirmations if source node is out of sync, because - // it may have already received confirmations that we're going to deliver - self.client.ensure_synced().await?; - - read_client_state::<_, P::TargetHeaderHash, P::TargetHeaderNumber>( - &self.client, - P::BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE, - ) - .await - } - - async fn latest_generated_nonce( - &self, - id: SourceHeaderIdOf

, - ) -> Result<(SourceHeaderIdOf

, MessageNonce), SubstrateError> { - let encoded_response = self - .client - .state_call( - P::OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD.into(), - Bytes(self.lane_id.encode()), - Some(id.1), - ) - .await?; - let latest_generated_nonce: MessageNonce = - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - Ok((id, latest_generated_nonce)) - } - - async fn latest_confirmed_received_nonce( - &self, - id: SourceHeaderIdOf

, - ) -> Result<(SourceHeaderIdOf

, MessageNonce), SubstrateError> { - let encoded_response = self - .client - .state_call( - P::OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD.into(), - Bytes(self.lane_id.encode()), - Some(id.1), - ) - .await?; - let latest_received_nonce: MessageNonce = - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - Ok((id, latest_received_nonce)) - } - - async fn generated_message_details( - &self, - id: SourceHeaderIdOf

, - nonces: RangeInclusive, - ) -> Result, SubstrateError> { - let encoded_response = self - .client - .state_call( - P::OUTBOUND_LANE_MESSAGE_DETAILS_METHOD.into(), - Bytes((self.lane_id, nonces.start(), nonces.end()).encode()), - Some(id.1), - ) - .await?; - - make_message_details_map::( - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?, - nonces, - ) - } - - async fn prove_messages( - &self, - id: SourceHeaderIdOf

, - nonces: RangeInclusive, - proof_parameters: MessageProofParameters, - ) -> Result<(SourceHeaderIdOf

, RangeInclusive, P::MessagesProof), SubstrateError> { - let mut storage_keys = Vec::with_capacity(nonces.end().saturating_sub(*nonces.start()) as usize + 1); - let mut message_nonce = *nonces.start(); - while message_nonce <= *nonces.end() { - let message_key = pallet_bridge_messages::storage_keys::message_key::(&self.lane_id, message_nonce); - storage_keys.push(message_key); - message_nonce += 1; - } - if proof_parameters.outbound_state_proof_required { - storage_keys.push(pallet_bridge_messages::storage_keys::outbound_lane_data_key::( - &self.lane_id, - )); - } - - let proof = self - .client - .prove_storage(storage_keys, id.1) - .await? - .iter_nodes() - .collect(); - let proof = FromBridgedChainMessagesProof { - bridged_header_hash: id.1, - storage_proof: proof, - lane: self.lane_id, - nonces_start: *nonces.start(), - nonces_end: *nonces.end(), - }; - Ok((id, nonces, (proof_parameters.dispatch_weight, proof))) - } - - async fn submit_messages_receiving_proof( - &self, - generated_at_block: TargetHeaderIdOf

, - proof: P::MessagesReceivingProof, - ) -> Result<(), SubstrateError> { - self.client - .submit_signed_extrinsic(self.lane.source_transactions_author(), move |transaction_nonce| { - self.lane - .make_messages_receiving_proof_transaction(transaction_nonce, generated_at_block, proof) - }) - .await?; - Ok(()) - } - - async fn require_target_header_on_source(&self, id: TargetHeaderIdOf

) { - if let Some(ref target_to_source_headers_relay) = self.target_to_source_headers_relay { - target_to_source_headers_relay.require_finalized_header(id).await; - } - } - - async fn estimate_confirmation_transaction(&self) -> P::SourceChainBalance { - num_traits::Zero::zero() // TODO: https://github.com/paritytech/parity-bridges-common/issues/997 - } -} - -pub async fn read_client_state( - self_client: &Client, - best_finalized_header_id_method_name: &str, -) -> Result, HeaderId>, SubstrateError> -where - SelfChain: Chain, - SelfChain::Header: DeserializeOwned, - SelfChain::Index: DeserializeOwned, - BridgedHeaderHash: Decode, - BridgedHeaderNumber: Decode, -{ - // let's read our state first: we need best finalized header hash on **this** chain - let self_best_finalized_header_hash = self_client.best_finalized_header_hash().await?; - let self_best_finalized_header = self_client.header_by_hash(self_best_finalized_header_hash).await?; - let self_best_finalized_id = HeaderId(*self_best_finalized_header.number(), self_best_finalized_header_hash); - - // now let's read our best header on **this** chain - let self_best_header = self_client.best_header().await?; - let self_best_hash = self_best_header.hash(); - let self_best_id = HeaderId(*self_best_header.number(), self_best_hash); - - // now let's read id of best finalized peer header at our best finalized block - let encoded_best_finalized_peer_on_self = self_client - .state_call( - best_finalized_header_id_method_name.into(), - Bytes(Vec::new()), - Some(self_best_hash), - ) - .await?; - let decoded_best_finalized_peer_on_self: (BridgedHeaderNumber, BridgedHeaderHash) = - Decode::decode(&mut &encoded_best_finalized_peer_on_self.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - let peer_on_self_best_finalized_id = HeaderId( - decoded_best_finalized_peer_on_self.0, - decoded_best_finalized_peer_on_self.1, - ); - - Ok(ClientState { - best_self: self_best_id, - best_finalized_self: self_best_finalized_id, - best_finalized_peer_at_best_self: peer_on_self_best_finalized_id, - }) -} - -fn make_message_details_map( - weights: Vec>, - nonces: RangeInclusive, -) -> Result, SubstrateError> { - let make_missing_nonce_error = |expected_nonce| { - Err(SubstrateError::Custom(format!( - "Missing nonce {} in messages_dispatch_weight call result. Expected all nonces from {:?}", - expected_nonce, nonces, - ))) - }; - - let mut weights_map = MessageDetailsMap::new(); - - // this is actually prevented by external logic - if nonces.is_empty() { - return Ok(weights_map); - } - - // check if last nonce is missing - loop below is not checking this - let last_nonce_is_missing = weights - .last() - .map(|details| details.nonce != *nonces.end()) - .unwrap_or(true); - if last_nonce_is_missing { - return make_missing_nonce_error(*nonces.end()); - } - - let mut expected_nonce = *nonces.start(); - let mut is_at_head = true; - - for details in weights { - match (details.nonce == expected_nonce, is_at_head) { - (true, _) => (), - (false, true) => { - // this may happen if some messages were already pruned from the source node - // - // this is not critical error and will be auto-resolved by messages lane (and target node) - log::info!( - target: "bridge", - "Some messages are missing from the {} node: {:?}. Target node may be out of sync?", - C::NAME, - expected_nonce..details.nonce, - ); - } - (false, false) => { - // some nonces are missing from the middle/tail of the range - // - // this is critical error, because we can't miss any nonces - return make_missing_nonce_error(expected_nonce); - } - } - - weights_map.insert( - details.nonce, - MessageDetails { - dispatch_weight: details.dispatch_weight, - size: details.size as _, - // TODO: https://github.com/paritytech/parity-bridges-common/issues/997 - reward: num_traits::Zero::zero(), - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - }, - ); - expected_nonce = details.nonce + 1; - is_at_head = false; - } - - Ok(weights_map) -} - -#[cfg(test)] -mod tests { - use super::*; - - fn message_details_from_rpc( - nonces: RangeInclusive, - ) -> Vec> { - nonces - .into_iter() - .map(|nonce| bp_messages::MessageDetails { - nonce, - dispatch_weight: 0, - size: 0, - delivery_and_dispatch_fee: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - }) - .collect() - } - - #[test] - fn make_message_details_map_succeeds_if_no_messages_are_missing() { - assert_eq!( - make_message_details_map::(message_details_from_rpc(1..=3), 1..=3,).unwrap(), - vec![ - ( - 1, - MessageDetails { - dispatch_weight: 0, - size: 0, - reward: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - } - ), - ( - 2, - MessageDetails { - dispatch_weight: 0, - size: 0, - reward: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - } - ), - ( - 3, - MessageDetails { - dispatch_weight: 0, - size: 0, - reward: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - } - ), - ] - .into_iter() - .collect(), - ); - } - - #[test] - fn make_message_details_map_succeeds_if_head_messages_are_missing() { - assert_eq!( - make_message_details_map::(message_details_from_rpc(2..=3), 1..=3,).unwrap(), - vec![ - ( - 2, - MessageDetails { - dispatch_weight: 0, - size: 0, - reward: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - } - ), - ( - 3, - MessageDetails { - dispatch_weight: 0, - size: 0, - reward: 0, - dispatch_fee_payment: DispatchFeePayment::AtSourceChain, - } - ), - ] - .into_iter() - .collect(), - ); - } - - #[test] - fn make_message_details_map_fails_if_mid_messages_are_missing() { - let mut message_details_from_rpc = message_details_from_rpc(1..=3); - message_details_from_rpc.remove(1); - assert!(matches!( - make_message_details_map::(message_details_from_rpc, 1..=3,), - Err(SubstrateError::Custom(_)) - )); - } - - #[test] - fn make_message_details_map_fails_if_tail_messages_are_missing() { - assert!(matches!( - make_message_details_map::(message_details_from_rpc(1..=2), 1..=3,), - Err(SubstrateError::Custom(_)) - )); - } - - #[test] - fn make_message_details_map_fails_if_all_messages_are_missing() { - assert!(matches!( - make_message_details_map::(vec![], 1..=3), - Err(SubstrateError::Custom(_)) - )); - } -} diff --git a/bridges/relays/bin-substrate/src/messages_target.rs b/bridges/relays/bin-substrate/src/messages_target.rs deleted file mode 100644 index f74efbe61b5a..000000000000 --- a/bridges/relays/bin-substrate/src/messages_target.rs +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate client as Substrate messages target. The chain we connect to should have -//! runtime that implements `HeaderApi` to allow bridging with -//! chain. - -use crate::messages_lane::SubstrateMessageLane; -use crate::messages_source::read_client_state; -use crate::on_demand_headers::OnDemandHeadersRelay; - -use async_trait::async_trait; -use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState}; -use bp_runtime::ChainId; -use bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof; -use codec::{Decode, Encode}; -use frame_support::{traits::Instance, weights::Weight}; -use messages_relay::{ - message_lane::{SourceHeaderIdOf, TargetHeaderIdOf}, - message_lane_loop::{TargetClient, TargetClientState}, -}; -use relay_substrate_client::{Chain, Client, Error as SubstrateError, HashOf}; -use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase}; -use sp_core::Bytes; -use sp_runtime::{traits::Header as HeaderT, DeserializeOwned}; -use std::{marker::PhantomData, ops::RangeInclusive}; - -/// Message receiving proof returned by the target Substrate node. -pub type SubstrateMessagesReceivingProof = ( - UnrewardedRelayersState, - FromBridgedChainMessagesDeliveryProof>, -); - -/// Substrate client as Substrate messages target. -pub struct SubstrateMessagesTarget { - client: Client, - lane: P, - lane_id: LaneId, - instance: ChainId, - source_to_target_headers_relay: Option>, - _phantom: PhantomData, -} - -impl SubstrateMessagesTarget { - /// Create new Substrate headers target. - pub fn new( - client: Client, - lane: P, - lane_id: LaneId, - instance: ChainId, - source_to_target_headers_relay: Option>, - ) -> Self { - SubstrateMessagesTarget { - client, - lane, - lane_id, - instance, - source_to_target_headers_relay, - _phantom: Default::default(), - } - } -} - -impl Clone for SubstrateMessagesTarget { - fn clone(&self) -> Self { - Self { - client: self.client.clone(), - lane: self.lane.clone(), - lane_id: self.lane_id, - instance: self.instance, - source_to_target_headers_relay: self.source_to_target_headers_relay.clone(), - _phantom: Default::default(), - } - } -} - -#[async_trait] -impl RelayClient for SubstrateMessagesTarget -where - C: Chain, - P: SubstrateMessageLane, - I: Send + Sync + Instance, -{ - type Error = SubstrateError; - - async fn reconnect(&mut self) -> Result<(), SubstrateError> { - self.client.reconnect().await - } -} - -#[async_trait] -impl TargetClient

for SubstrateMessagesTarget -where - C: Chain, - C::Header: DeserializeOwned, - C::Index: DeserializeOwned, - ::Number: BlockNumberBase, - P: SubstrateMessageLane< - TargetChain = C, - MessagesReceivingProof = SubstrateMessagesReceivingProof, - TargetHeaderNumber = ::Number, - TargetHeaderHash = ::Hash, - >, - P::SourceChain: Chain, - P::SourceHeaderNumber: Decode, - P::SourceHeaderHash: Decode, - I: Send + Sync + Instance, -{ - async fn state(&self) -> Result, SubstrateError> { - // we can't continue to deliver messages if target node is out of sync, because - // it may have already received (some of) messages that we're going to deliver - self.client.ensure_synced().await?; - - read_client_state::<_, P::SourceHeaderHash, P::SourceHeaderNumber>( - &self.client, - P::BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET, - ) - .await - } - - async fn latest_received_nonce( - &self, - id: TargetHeaderIdOf

, - ) -> Result<(TargetHeaderIdOf

, MessageNonce), SubstrateError> { - let encoded_response = self - .client - .state_call( - P::INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD.into(), - Bytes(self.lane_id.encode()), - Some(id.1), - ) - .await?; - let latest_received_nonce: MessageNonce = - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - Ok((id, latest_received_nonce)) - } - - async fn latest_confirmed_received_nonce( - &self, - id: TargetHeaderIdOf

, - ) -> Result<(TargetHeaderIdOf

, MessageNonce), SubstrateError> { - let encoded_response = self - .client - .state_call( - P::INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD.into(), - Bytes(self.lane_id.encode()), - Some(id.1), - ) - .await?; - let latest_received_nonce: MessageNonce = - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - Ok((id, latest_received_nonce)) - } - - async fn unrewarded_relayers_state( - &self, - id: TargetHeaderIdOf

, - ) -> Result<(TargetHeaderIdOf

, UnrewardedRelayersState), SubstrateError> { - let encoded_response = self - .client - .state_call( - P::INBOUND_LANE_UNREWARDED_RELAYERS_STATE.into(), - Bytes(self.lane_id.encode()), - Some(id.1), - ) - .await?; - let unrewarded_relayers_state: UnrewardedRelayersState = - Decode::decode(&mut &encoded_response.0[..]).map_err(SubstrateError::ResponseParseFailed)?; - Ok((id, unrewarded_relayers_state)) - } - - async fn prove_messages_receiving( - &self, - id: TargetHeaderIdOf

, - ) -> Result<(TargetHeaderIdOf

, P::MessagesReceivingProof), SubstrateError> { - let (id, relayers_state) = self.unrewarded_relayers_state(id).await?; - let inbound_data_key = pallet_bridge_messages::storage_keys::inbound_lane_data_key::(&self.lane_id); - let proof = self - .client - .prove_storage(vec![inbound_data_key], id.1) - .await? - .iter_nodes() - .collect(); - let proof = FromBridgedChainMessagesDeliveryProof { - bridged_header_hash: id.1, - storage_proof: proof, - lane: self.lane_id, - }; - Ok((id, (relayers_state, proof))) - } - - async fn submit_messages_proof( - &self, - generated_at_header: SourceHeaderIdOf

, - nonces: RangeInclusive, - proof: P::MessagesProof, - ) -> Result, SubstrateError> { - self.client - .submit_signed_extrinsic(self.lane.target_transactions_author(), |transaction_nonce| { - self.lane.make_messages_delivery_transaction( - transaction_nonce, - generated_at_header, - nonces.clone(), - proof, - ) - }) - .await?; - Ok(nonces) - } - - async fn require_source_header_on_target(&self, id: SourceHeaderIdOf

) { - if let Some(ref source_to_target_headers_relay) = self.source_to_target_headers_relay { - source_to_target_headers_relay.require_finalized_header(id).await; - } - } - - async fn estimate_delivery_transaction_in_source_tokens( - &self, - _nonces: RangeInclusive, - _total_dispatch_weight: Weight, - _total_size: u32, - ) -> P::SourceChainBalance { - num_traits::Zero::zero() // TODO: https://github.com/paritytech/parity-bridges-common/issues/997 - } -} diff --git a/bridges/relays/client-ethereum/Cargo.toml b/bridges/relays/client-ethereum/Cargo.toml deleted file mode 100644 index 64a76a6b5dae..000000000000 --- a/bridges/relays/client-ethereum/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "relay-ethereum-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -async-std = "1.6.5" -bp-eth-poa = { path = "../../primitives/ethereum-poa" } -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -hex-literal = "0.3" -jsonrpsee-proc-macros = "=0.2.0-alpha.6" -jsonrpsee-ws-client = "=0.2.0-alpha.6" -libsecp256k1 = { version = "0.3.4", default-features = false, features = ["hmac"] } -log = "0.4.11" -relay-utils = { path = "../utils" } -web3 = { version = "0.15", git = "https://github.com/tomusdrw/rust-web3", branch ="td-ethabi", default-features = false } diff --git a/bridges/relays/client-ethereum/src/client.rs b/bridges/relays/client-ethereum/src/client.rs deleted file mode 100644 index 71dac5df6d48..000000000000 --- a/bridges/relays/client-ethereum/src/client.rs +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::rpc::Ethereum; -use crate::types::{ - Address, Bytes, CallRequest, Header, HeaderWithTransactions, Receipt, SignedRawTx, SyncState, Transaction, - TransactionHash, H256, U256, -}; -use crate::{ConnectionParams, Error, Result}; - -use jsonrpsee_ws_client::{WsClient as RpcClient, WsClientBuilder as RpcClientBuilder}; -use relay_utils::relay_loop::RECONNECT_DELAY; -use std::sync::Arc; - -/// Number of headers missing from the Ethereum node for us to consider node not synced. -const MAJOR_SYNC_BLOCKS: u64 = 5; - -/// The client used to interact with an Ethereum node through RPC. -#[derive(Clone)] -pub struct Client { - params: ConnectionParams, - client: Arc, -} - -impl Client { - /// Create a new Ethereum RPC Client. - /// - /// This function will keep connecting to given Ethereum node until connection is established - /// and is functional. If attempt fail, it will wait for `RECONNECT_DELAY` and retry again. - pub async fn new(params: ConnectionParams) -> Self { - loop { - match Self::try_connect(params.clone()).await { - Ok(client) => return client, - Err(error) => log::error!( - target: "bridge", - "Failed to connect to Ethereum node: {:?}. Going to retry in {}s", - error, - RECONNECT_DELAY.as_secs(), - ), - } - - async_std::task::sleep(RECONNECT_DELAY).await; - } - } - - /// Try to connect to Ethereum node. Returns Ethereum RPC client if connection has been established - /// or error otherwise. - pub async fn try_connect(params: ConnectionParams) -> Result { - Ok(Self { - client: Self::build_client(¶ms).await?, - params, - }) - } - - /// Build client to use in connection. - async fn build_client(params: &ConnectionParams) -> Result> { - let uri = format!("ws://{}:{}", params.host, params.port); - let client = RpcClientBuilder::default().build(&uri).await?; - Ok(Arc::new(client)) - } - - /// Reopen client connection. - pub async fn reconnect(&mut self) -> Result<()> { - self.client = Self::build_client(&self.params).await?; - Ok(()) - } -} - -impl Client { - /// Returns true if client is connected to at least one peer and is in synced state. - pub async fn ensure_synced(&self) -> Result<()> { - match Ethereum::syncing(&*self.client).await? { - SyncState::NotSyncing => Ok(()), - SyncState::Syncing(syncing) => { - let missing_headers = syncing.highest_block.saturating_sub(syncing.current_block); - if missing_headers > MAJOR_SYNC_BLOCKS.into() { - return Err(Error::ClientNotSynced(missing_headers)); - } - - Ok(()) - } - } - } - - /// Estimate gas usage for the given call. - pub async fn estimate_gas(&self, call_request: CallRequest) -> Result { - Ok(Ethereum::estimate_gas(&*self.client, call_request).await?) - } - - /// Retrieve number of the best known block from the Ethereum node. - pub async fn best_block_number(&self) -> Result { - Ok(Ethereum::block_number(&*self.client).await?.as_u64()) - } - - /// Retrieve number of the best known block from the Ethereum node. - pub async fn header_by_number(&self, block_number: u64) -> Result

{ - let get_full_tx_objects = false; - let header = Ethereum::get_block_by_number(&*self.client, block_number, get_full_tx_objects).await?; - match header.number.is_some() && header.hash.is_some() && header.logs_bloom.is_some() { - true => Ok(header), - false => Err(Error::IncompleteHeader), - } - } - - /// Retrieve block header by its hash from Ethereum node. - pub async fn header_by_hash(&self, hash: H256) -> Result
{ - let get_full_tx_objects = false; - let header = Ethereum::get_block_by_hash(&*self.client, hash, get_full_tx_objects).await?; - match header.number.is_some() && header.hash.is_some() && header.logs_bloom.is_some() { - true => Ok(header), - false => Err(Error::IncompleteHeader), - } - } - - /// Retrieve block header and its transactions by its number from Ethereum node. - pub async fn header_by_number_with_transactions(&self, number: u64) -> Result { - let get_full_tx_objects = true; - let header = - Ethereum::get_block_by_number_with_transactions(&*self.client, number, get_full_tx_objects).await?; - - let is_complete_header = header.number.is_some() && header.hash.is_some() && header.logs_bloom.is_some(); - if !is_complete_header { - return Err(Error::IncompleteHeader); - } - - let is_complete_transactions = header.transactions.iter().all(|tx| tx.raw.is_some()); - if !is_complete_transactions { - return Err(Error::IncompleteTransaction); - } - - Ok(header) - } - - /// Retrieve block header and its transactions by its hash from Ethereum node. - pub async fn header_by_hash_with_transactions(&self, hash: H256) -> Result { - let get_full_tx_objects = true; - let header = Ethereum::get_block_by_hash_with_transactions(&*self.client, hash, get_full_tx_objects).await?; - - let is_complete_header = header.number.is_some() && header.hash.is_some() && header.logs_bloom.is_some(); - if !is_complete_header { - return Err(Error::IncompleteHeader); - } - - let is_complete_transactions = header.transactions.iter().all(|tx| tx.raw.is_some()); - if !is_complete_transactions { - return Err(Error::IncompleteTransaction); - } - - Ok(header) - } - - /// Retrieve transaction by its hash from Ethereum node. - pub async fn transaction_by_hash(&self, hash: H256) -> Result> { - Ok(Ethereum::transaction_by_hash(&*self.client, hash).await?) - } - - /// Retrieve transaction receipt by transaction hash. - pub async fn transaction_receipt(&self, transaction_hash: H256) -> Result { - Ok(Ethereum::get_transaction_receipt(&*self.client, transaction_hash).await?) - } - - /// Get the nonce of the given account. - pub async fn account_nonce(&self, address: Address) -> Result { - Ok(Ethereum::get_transaction_count(&*self.client, address).await?) - } - - /// Submit an Ethereum transaction. - /// - /// The transaction must already be signed before sending it through this method. - pub async fn submit_transaction(&self, signed_raw_tx: SignedRawTx) -> Result { - let transaction = Bytes(signed_raw_tx); - let tx_hash = Ethereum::submit_transaction(&*self.client, transaction).await?; - log::trace!(target: "bridge", "Sent transaction to Ethereum node: {:?}", tx_hash); - Ok(tx_hash) - } - - /// Call Ethereum smart contract. - pub async fn eth_call(&self, call_transaction: CallRequest) -> Result { - Ok(Ethereum::call(&*self.client, call_transaction).await?) - } -} diff --git a/bridges/relays/client-ethereum/src/error.rs b/bridges/relays/client-ethereum/src/error.rs deleted file mode 100644 index bcd8edc3f33a..000000000000 --- a/bridges/relays/client-ethereum/src/error.rs +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Ethereum node RPC errors. - -use crate::types::U256; - -use jsonrpsee_ws_client::Error as RpcError; -use relay_utils::MaybeConnectionError; - -/// Result type used by Ethereum client. -pub type Result = std::result::Result; - -/// Errors that can occur only when interacting with -/// an Ethereum node through RPC. -#[derive(Debug)] -pub enum Error { - /// An error that can occur when making an HTTP request to - /// an JSON-RPC client. - RpcError(RpcError), - /// Failed to parse response. - ResponseParseFailed(String), - /// We have received a header with missing fields. - IncompleteHeader, - /// We have received a transaction missing a `raw` field. - IncompleteTransaction, - /// An invalid Substrate block number was received from - /// an Ethereum node. - InvalidSubstrateBlockNumber, - /// An invalid index has been received from an Ethereum node. - InvalidIncompleteIndex, - /// The client we're connected to is not synced, so we can't rely on its state. Contains - /// number of unsynced headers. - ClientNotSynced(U256), -} - -impl From for Error { - fn from(error: RpcError) -> Self { - Error::RpcError(error) - } -} - -impl MaybeConnectionError for Error { - fn is_connection_error(&self) -> bool { - matches!( - *self, - Error::RpcError(RpcError::TransportError(_)) - // right now if connection to the ws server is dropped (after it is already established), - // we're getting this error - | Error::RpcError(RpcError::Internal(_)) - | Error::ClientNotSynced(_), - ) - } -} - -impl ToString for Error { - fn to_string(&self) -> String { - match self { - Self::RpcError(e) => e.to_string(), - Self::ResponseParseFailed(e) => e.to_string(), - Self::IncompleteHeader => { - "Incomplete Ethereum Header Received (missing some of required fields - hash, number, logs_bloom)" - .to_string() - } - Self::IncompleteTransaction => "Incomplete Ethereum Transaction (missing required field - raw)".to_string(), - Self::InvalidSubstrateBlockNumber => "Received an invalid Substrate block from Ethereum Node".to_string(), - Self::InvalidIncompleteIndex => "Received an invalid incomplete index from Ethereum Node".to_string(), - Self::ClientNotSynced(missing_headers) => { - format!("Ethereum client is not synced: syncing {} headers", missing_headers) - } - } - } -} diff --git a/bridges/relays/client-ethereum/src/lib.rs b/bridges/relays/client-ethereum/src/lib.rs deleted file mode 100644 index 8b3c6d8f8e73..000000000000 --- a/bridges/relays/client-ethereum/src/lib.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Tools to interact with (Open) Ethereum node using RPC methods. - -#![warn(missing_docs)] - -mod client; -mod error; -mod rpc; -mod sign; - -pub use crate::client::Client; -pub use crate::error::{Error, Result}; -pub use crate::sign::{sign_and_submit_transaction, SigningParams}; - -pub mod types; - -/// Ethereum-over-websocket connection params. -#[derive(Debug, Clone)] -pub struct ConnectionParams { - /// Websocket server hostname. - pub host: String, - /// Websocket server TCP port. - pub port: u16, -} - -impl Default for ConnectionParams { - fn default() -> Self { - ConnectionParams { - host: "localhost".into(), - port: 8546, - } - } -} diff --git a/bridges/relays/client-ethereum/src/rpc.rs b/bridges/relays/client-ethereum/src/rpc.rs deleted file mode 100644 index 0fb81f7655a4..000000000000 --- a/bridges/relays/client-ethereum/src/rpc.rs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Ethereum node RPC interface. - -use crate::types::{ - Address, Bytes, CallRequest, Header, HeaderWithTransactions, Receipt, SyncState, Transaction, TransactionHash, - H256, U256, U64, -}; - -jsonrpsee_proc_macros::rpc_client_api! { - pub(crate) Ethereum { - #[rpc(method = "eth_syncing", positional_params)] - fn syncing() -> SyncState; - #[rpc(method = "eth_estimateGas", positional_params)] - fn estimate_gas(call_request: CallRequest) -> U256; - #[rpc(method = "eth_blockNumber", positional_params)] - fn block_number() -> U64; - #[rpc(method = "eth_getBlockByNumber", positional_params)] - fn get_block_by_number(block_number: U64, full_tx_objs: bool) -> Header; - #[rpc(method = "eth_getBlockByHash", positional_params)] - fn get_block_by_hash(hash: H256, full_tx_objs: bool) -> Header; - #[rpc(method = "eth_getBlockByNumber", positional_params)] - fn get_block_by_number_with_transactions(number: U64, full_tx_objs: bool) -> HeaderWithTransactions; - #[rpc(method = "eth_getBlockByHash", positional_params)] - fn get_block_by_hash_with_transactions(hash: H256, full_tx_objs: bool) -> HeaderWithTransactions; - #[rpc(method = "eth_getTransactionByHash", positional_params)] - fn transaction_by_hash(hash: H256) -> Option; - #[rpc(method = "eth_getTransactionReceipt", positional_params)] - fn get_transaction_receipt(transaction_hash: H256) -> Receipt; - #[rpc(method = "eth_getTransactionCount", positional_params)] - fn get_transaction_count(address: Address) -> U256; - #[rpc(method = "eth_submitTransaction", positional_params)] - fn submit_transaction(transaction: Bytes) -> TransactionHash; - #[rpc(method = "eth_call", positional_params)] - fn call(transaction_call: CallRequest) -> Bytes; - } -} diff --git a/bridges/relays/client-ethereum/src/sign.rs b/bridges/relays/client-ethereum/src/sign.rs deleted file mode 100644 index 6f479ab7d5cd..000000000000 --- a/bridges/relays/client-ethereum/src/sign.rs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::types::{Address, CallRequest, U256}; -use crate::{Client, Result}; -use bp_eth_poa::signatures::{secret_to_address, SignTransaction}; -use hex_literal::hex; -use secp256k1::SecretKey; - -/// Ethereum signing params. -#[derive(Clone, Debug)] -pub struct SigningParams { - /// Ethereum chain id. - pub chain_id: u64, - /// Ethereum transactions signer. - pub signer: SecretKey, - /// Gas price we agree to pay. - pub gas_price: U256, -} - -impl Default for SigningParams { - fn default() -> Self { - SigningParams { - chain_id: 0x11, // Parity dev chain - // account that has a lot of ether when we run instant seal engine - // address: 0x00a329c0648769a73afac7f9381e08fb43dbea72 - // secret: 0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7 - signer: SecretKey::parse(&hex!( - "4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7" - )) - .expect("secret is hardcoded, thus valid; qed"), - gas_price: 8_000_000_000u64.into(), // 8 Gwei - } - } -} - -/// Sign and submit tranaction using given Ethereum client. -pub async fn sign_and_submit_transaction( - client: &Client, - params: &SigningParams, - contract_address: Option
, - nonce: Option, - double_gas: bool, - encoded_call: Vec, -) -> Result<()> { - let nonce = if let Some(n) = nonce { - n - } else { - let address: Address = secret_to_address(¶ms.signer); - client.account_nonce(address).await? - }; - - let call_request = CallRequest { - to: contract_address, - data: Some(encoded_call.clone().into()), - ..Default::default() - }; - let gas = client.estimate_gas(call_request).await?; - - let raw_transaction = bp_eth_poa::UnsignedTransaction { - nonce, - to: contract_address, - value: U256::zero(), - gas: if double_gas { gas.saturating_mul(2.into()) } else { gas }, - gas_price: params.gas_price, - payload: encoded_call, - } - .sign_by(¶ms.signer, Some(params.chain_id)); - - let _ = client.submit_transaction(raw_transaction).await?; - Ok(()) -} diff --git a/bridges/relays/client-ethereum/src/types.rs b/bridges/relays/client-ethereum/src/types.rs deleted file mode 100644 index f589474aff1b..000000000000 --- a/bridges/relays/client-ethereum/src/types.rs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Common types that are used in relay <-> Ethereum node communications. - -use headers_relay::sync_types::SourceHeader; - -pub use web3::types::{Address, Bytes, CallRequest, SyncState, H256, U128, U256, U64}; - -/// When header is just received from the Ethereum node, we check that it has -/// both number and hash fields filled. -pub const HEADER_ID_PROOF: &str = "checked on retrieval; qed"; - -/// Ethereum transaction hash type. -pub type HeaderHash = H256; - -/// Ethereum transaction hash type. -pub type TransactionHash = H256; - -/// Ethereum transaction type. -pub type Transaction = web3::types::Transaction; - -/// Ethereum header type. -pub type Header = web3::types::Block; - -/// Ethereum header type used in headers sync. -#[derive(Clone, Debug, PartialEq)] -pub struct SyncHeader(Header); - -impl std::ops::Deref for SyncHeader { - type Target = Header; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -/// Ethereum header with transactions type. -pub type HeaderWithTransactions = web3::types::Block; - -/// Ethereum transaction receipt type. -pub type Receipt = web3::types::TransactionReceipt; - -/// Ethereum header ID. -pub type HeaderId = relay_utils::HeaderId; - -/// A raw Ethereum transaction that's been signed. -pub type SignedRawTx = Vec; - -impl From
for SyncHeader { - fn from(header: Header) -> Self { - Self(header) - } -} - -impl SourceHeader for SyncHeader { - fn id(&self) -> HeaderId { - relay_utils::HeaderId( - self.number.expect(HEADER_ID_PROOF).as_u64(), - self.hash.expect(HEADER_ID_PROOF), - ) - } - - fn parent_id(&self) -> HeaderId { - relay_utils::HeaderId(self.number.expect(HEADER_ID_PROOF).as_u64() - 1, self.parent_hash) - } -} diff --git a/bridges/relays/client-kusama/Cargo.toml b/bridges/relays/client-kusama/Cargo.toml deleted file mode 100644 index b9c397bca6c0..000000000000 --- a/bridges/relays/client-kusama/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-kusama-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies - -bp-kusama = { path = "../../primitives/chain-kusama" } - -# Substrate Dependencies - -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-kusama/src/lib.rs b/bridges/relays/client-kusama/src/lib.rs deleted file mode 100644 index f2fba32dc1ed..000000000000 --- a/bridges/relays/client-kusama/src/lib.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Kusama chain. - -use relay_substrate_client::{Chain, ChainBase}; -use std::time::Duration; - -/// Kusama header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Kusama chain definition -#[derive(Debug, Clone, Copy)] -pub struct Kusama; - -impl ChainBase for Kusama { - type BlockNumber = bp_kusama::BlockNumber; - type Hash = bp_kusama::Hash; - type Hasher = bp_kusama::Hasher; - type Header = bp_kusama::Header; -} - -impl Chain for Kusama { - const NAME: &'static str = "Kusama"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); - - type AccountId = bp_kusama::AccountId; - type Index = bp_kusama::Nonce; - type SignedBlock = bp_kusama::SignedBlock; - type Call = (); - type Balance = bp_kusama::Balance; -} - -/// Kusama header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/bridges/relays/client-millau/Cargo.toml b/bridges/relays/client-millau/Cargo.toml deleted file mode 100644 index e16f06f8528b..000000000000 --- a/bridges/relays/client-millau/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-millau-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Supported Chains - -millau-runtime = { path = "../../bin/millau/runtime" } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-millau/src/lib.rs b/bridges/relays/client-millau/src/lib.rs deleted file mode 100644 index 8597d9e59200..000000000000 --- a/bridges/relays/client-millau/src/lib.rs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Millau-Substrate chain. - -use codec::Encode; -use relay_substrate_client::{Chain, ChainBase, ChainWithBalances, TransactionSignScheme}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; -use std::time::Duration; - -/// Millau header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Millau chain definition. -#[derive(Debug, Clone, Copy)] -pub struct Millau; - -impl ChainBase for Millau { - type BlockNumber = millau_runtime::BlockNumber; - type Hash = millau_runtime::Hash; - type Hasher = millau_runtime::Hashing; - type Header = millau_runtime::Header; -} - -impl Chain for Millau { - const NAME: &'static str = "Millau"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5); - - type AccountId = millau_runtime::AccountId; - type Index = millau_runtime::Index; - type SignedBlock = millau_runtime::SignedBlock; - type Call = millau_runtime::Call; - type Balance = millau_runtime::Balance; -} - -impl ChainWithBalances for Millau { - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { - use frame_support::storage::generator::StorageMap; - StorageKey(frame_system::Account::::storage_map_final_key( - account_id, - )) - } -} - -impl TransactionSignScheme for Millau { - type Chain = Millau; - type AccountKeyPair = sp_core::sr25519::Pair; - type SignedTransaction = millau_runtime::UncheckedExtrinsic; - - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction { - let raw_payload = SignedPayload::from_raw( - call, - ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(sp_runtime::generic::Era::Immortal), - frame_system::CheckNonce::::from(signer_nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(0), - ), - ( - millau_runtime::VERSION.spec_version, - millau_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, - (), - (), - (), - ), - ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); - let (call, extra, _) = raw_payload.deconstruct(); - - millau_runtime::UncheckedExtrinsic::new_signed(call, signer.into_account(), signature.into(), extra) - } -} - -/// Millau signing params. -pub type SigningParams = sp_core::sr25519::Pair; - -/// Millau header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/bridges/relays/client-polkadot/Cargo.toml b/bridges/relays/client-polkadot/Cargo.toml deleted file mode 100644 index b148745f5a98..000000000000 --- a/bridges/relays/client-polkadot/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-polkadot-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies - -bp-polkadot = { path = "../../primitives/chain-polkadot" } - -# Substrate Dependencies - -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-polkadot/src/lib.rs b/bridges/relays/client-polkadot/src/lib.rs deleted file mode 100644 index e502463187d2..000000000000 --- a/bridges/relays/client-polkadot/src/lib.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Polkadot chain. - -use relay_substrate_client::{Chain, ChainBase}; -use std::time::Duration; - -/// Polkadot header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Polkadot chain definition -#[derive(Debug, Clone, Copy)] -pub struct Polkadot; - -impl ChainBase for Polkadot { - type BlockNumber = bp_polkadot::BlockNumber; - type Hash = bp_polkadot::Hash; - type Hasher = bp_polkadot::Hasher; - type Header = bp_polkadot::Header; -} - -impl Chain for Polkadot { - const NAME: &'static str = "Polkadot"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); - - type AccountId = bp_polkadot::AccountId; - type Index = bp_polkadot::Nonce; - type SignedBlock = bp_polkadot::SignedBlock; - type Call = (); - type Balance = bp_polkadot::Balance; -} - -/// Polkadot header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/bridges/relays/client-rialto/Cargo.toml b/bridges/relays/client-rialto/Cargo.toml deleted file mode 100644 index 88e8e12add40..000000000000 --- a/bridges/relays/client-rialto/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-rialto-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies - -rialto-runtime = { path = "../../bin/rialto/runtime" } - -# Substrate Dependencies - -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-rialto/src/lib.rs b/bridges/relays/client-rialto/src/lib.rs deleted file mode 100644 index 4a0023a87c4f..000000000000 --- a/bridges/relays/client-rialto/src/lib.rs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Rialto-Substrate chain. - -use codec::Encode; -use relay_substrate_client::{Chain, ChainBase, ChainWithBalances, TransactionSignScheme}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; -use std::time::Duration; - -/// Rialto header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Rialto chain definition -#[derive(Debug, Clone, Copy)] -pub struct Rialto; - -impl ChainBase for Rialto { - type BlockNumber = rialto_runtime::BlockNumber; - type Hash = rialto_runtime::Hash; - type Hasher = rialto_runtime::Hashing; - type Header = rialto_runtime::Header; -} - -impl Chain for Rialto { - const NAME: &'static str = "Rialto"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5); - - type AccountId = rialto_runtime::AccountId; - type Index = rialto_runtime::Index; - type SignedBlock = rialto_runtime::SignedBlock; - type Call = rialto_runtime::Call; - type Balance = rialto_runtime::Balance; -} - -impl ChainWithBalances for Rialto { - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { - use frame_support::storage::generator::StorageMap; - StorageKey(frame_system::Account::::storage_map_final_key( - account_id, - )) - } -} - -impl TransactionSignScheme for Rialto { - type Chain = Rialto; - type AccountKeyPair = sp_core::sr25519::Pair; - type SignedTransaction = rialto_runtime::UncheckedExtrinsic; - - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction { - let raw_payload = SignedPayload::from_raw( - call, - ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(sp_runtime::generic::Era::Immortal), - frame_system::CheckNonce::::from(signer_nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(0), - ), - ( - rialto_runtime::VERSION.spec_version, - rialto_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, - (), - (), - (), - ), - ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); - let (call, extra, _) = raw_payload.deconstruct(); - - rialto_runtime::UncheckedExtrinsic::new_signed(call, signer.into_account(), signature.into(), extra) - } -} - -/// Rialto signing params. -pub type SigningParams = sp_core::sr25519::Pair; - -/// Rialto header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/bridges/relays/client-rococo/Cargo.toml b/bridges/relays/client-rococo/Cargo.toml deleted file mode 100644 index 5611ac27b1ce..000000000000 --- a/bridges/relays/client-rococo/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "relay-rococo-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies -bridge-runtime-common = { path = "../../bin/runtime-common" } -bp-header-chain = { path = "../../primitives/header-chain" } -bp-message-dispatch = { path = "../../primitives/message-dispatch" } -bp-messages = { path = "../../primitives/messages" } -bp-polkadot-core = { path = "../../primitives/polkadot-core" } -bp-rococo = { path = "../../primitives/chain-rococo" } -bp-runtime = { path = "../../primitives/runtime" } -bp-wococo = { path = "../../primitives/chain-wococo" } -pallet-bridge-dispatch = { path = "../../modules/dispatch" } -pallet-bridge-messages = { path = "../../modules/messages" } - -# Substrate Dependencies -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-rococo/src/lib.rs b/bridges/relays/client-rococo/src/lib.rs deleted file mode 100644 index 5a7d8999f7f1..000000000000 --- a/bridges/relays/client-rococo/src/lib.rs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Rococo-Substrate chain. - -use codec::Encode; -use relay_substrate_client::{Chain, ChainBase, ChainWithBalances, TransactionSignScheme}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; -use std::time::Duration; - -pub mod runtime; - -/// Rococo header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Rococo header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; - -/// Rococo chain definition -#[derive(Debug, Clone, Copy)] -pub struct Rococo; - -impl ChainBase for Rococo { - type BlockNumber = bp_rococo::BlockNumber; - type Hash = bp_rococo::Hash; - type Hasher = bp_rococo::Hashing; - type Header = bp_rococo::Header; -} - -impl Chain for Rococo { - const NAME: &'static str = "Rococo"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); - - type AccountId = bp_rococo::AccountId; - type Index = bp_rococo::Index; - type SignedBlock = bp_rococo::SignedBlock; - type Call = crate::runtime::Call; - type Balance = bp_rococo::Balance; -} - -impl ChainWithBalances for Rococo { - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { - StorageKey(bp_rococo::account_info_storage_key(account_id)) - } -} - -impl TransactionSignScheme for Rococo { - type Chain = Rococo; - type AccountKeyPair = sp_core::sr25519::Pair; - type SignedTransaction = crate::runtime::UncheckedExtrinsic; - - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction { - let raw_payload = SignedPayload::new( - call, - bp_rococo::SignedExtensions::new( - bp_rococo::VERSION, - sp_runtime::generic::Era::Immortal, - genesis_hash, - signer_nonce, - 0, - ), - ) - .expect("SignedExtension never fails."); - - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); - let (call, extra, _) = raw_payload.deconstruct(); - - bp_rococo::UncheckedExtrinsic::new_signed( - call, - sp_runtime::MultiAddress::Id(signer.into_account()), - signature.into(), - extra, - ) - } -} - -/// Rococo signing params. -pub type SigningParams = sp_core::sr25519::Pair; diff --git a/bridges/relays/client-rococo/src/runtime.rs b/bridges/relays/client-rococo/src/runtime.rs deleted file mode 100644 index 6dbd40bee560..000000000000 --- a/bridges/relays/client-rococo/src/runtime.rs +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types that are specific to the Rococo runtime. - -use bp_messages::{LaneId, UnrewardedRelayersState}; -use bp_polkadot_core::PolkadotLike; -use bp_runtime::Chain; -use codec::{Decode, Encode}; -use frame_support::weights::Weight; - -/// Instance of messages pallet that is used to bridge with Wococo chain. -pub type WithWococoMessagesInstance = pallet_bridge_messages::Instance1; - -/// Unchecked Rococo extrinsic. -pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; - -/// Wococo account ownership digest from Rococo. -/// -/// The byte vector returned by this function should be signed with a Wococo account private key. -/// This way, the owner of `rococo_account_id` on Rococo proves that the Wococo account private key -/// is also under his control. -pub fn rococo_to_wococo_account_ownership_digest( - wococo_call: &Call, - rococo_account_id: AccountId, - wococo_spec_version: SpecVersion, -) -> Vec -where - Call: codec::Encode, - AccountId: codec::Encode, - SpecVersion: codec::Encode, -{ - pallet_bridge_dispatch::account_ownership_digest( - wococo_call, - rococo_account_id, - wococo_spec_version, - bp_runtime::ROCOCO_CHAIN_ID, - bp_runtime::WOCOCO_CHAIN_ID, - ) -} - -/// Rococo Runtime `Call` enum. -/// -/// The enum represents a subset of possible `Call`s we can send to Rococo chain. -/// Ideally this code would be auto-generated from Metadata, because we want to -/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. -/// -/// All entries here (like pretty much in the entire file) must be kept in sync with Rococo -/// `construct_runtime`, so that we maintain SCALE-compatibility. -/// -/// See: https://github.com/paritytech/polkadot/blob/master/runtime/rococo/src/lib.rs -#[allow(clippy::large_enum_variant)] -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -pub enum Call { - /// System pallet. - #[codec(index = 0)] - System(SystemCall), - /// Wococo bridge pallet. - #[codec(index = 41)] - BridgeGrandpaWococo(BridgeGrandpaWococoCall), - /// Wococo messages pallet. - #[codec(index = 44)] - BridgeMessagesWococo(BridgeMessagesWococoCall), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum SystemCall { - #[codec(index = 1)] - remark(Vec), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum BridgeGrandpaWococoCall { - #[codec(index = 0)] - submit_finality_proof( - ::Header, - bp_header_chain::justification::GrandpaJustification<::Header>, - ), - #[codec(index = 1)] - initialize(bp_header_chain::InitializationData<::Header>), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum BridgeMessagesWococoCall { - #[codec(index = 3)] - send_message( - LaneId, - bp_message_dispatch::MessagePayload< - bp_rococo::AccountId, - bp_wococo::AccountId, - bp_wococo::AccountPublic, - Vec, - >, - bp_rococo::Balance, - ), - #[codec(index = 5)] - receive_messages_proof( - bp_wococo::AccountId, - bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, - u32, - Weight, - ), - #[codec(index = 6)] - receive_messages_delivery_proof( - bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof, - UnrewardedRelayersState, - ), -} - -impl sp_runtime::traits::Dispatchable for Call { - type Origin = (); - type Config = (); - type Info = (); - type PostInfo = (); - - fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { - unimplemented!("The Call is not expected to be dispatched.") - } -} diff --git a/bridges/relays/client-substrate/Cargo.toml b/bridges/relays/client-substrate/Cargo.toml deleted file mode 100644 index f5c2e2656059..000000000000 --- a/bridges/relays/client-substrate/Cargo.toml +++ /dev/null @@ -1,42 +0,0 @@ -[package] -name = "relay-substrate-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -async-std = { version = "1.6.5", features = ["attributes"] } -async-trait = "0.1.40" -codec = { package = "parity-scale-codec", version = "2.0.0" } -jsonrpsee-proc-macros = "=0.2.0-alpha.6" -jsonrpsee-ws-client = "=0.2.0-alpha.6" -log = "0.4.11" -num-traits = "0.2" -rand = "0.7" - -# Bridge dependencies - -bp-header-chain = { path = "../../primitives/header-chain" } -bp-messages = { path = "../../primitives/messages" } -bp-runtime = { path = "../../primitives/runtime" } -finality-relay = { path = "../finality" } -headers-relay = { path = "../headers" } -relay-utils = { path = "../utils" } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" } - -#[dev-dependencies] -futures = "0.3.7" diff --git a/bridges/relays/client-substrate/src/chain.rs b/bridges/relays/client-substrate/src/chain.rs deleted file mode 100644 index 4cc8a0394d9a..000000000000 --- a/bridges/relays/client-substrate/src/chain.rs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use bp_runtime::Chain as ChainBase; -use frame_support::Parameter; -use jsonrpsee_ws_client::{DeserializeOwned, Serialize}; -use num_traits::{CheckedSub, SaturatingAdd, Zero}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{ - generic::SignedBlock, - traits::{ - AtLeast32Bit, Block as BlockT, Dispatchable, MaybeDisplay, MaybeSerialize, MaybeSerializeDeserialize, Member, - }, - EncodedJustification, -}; -use std::{fmt::Debug, time::Duration}; - -/// Substrate-based chain from minimal relay-client point of view. -pub trait Chain: ChainBase + Clone { - /// Chain name. - const NAME: &'static str; - /// Average block interval. - /// - /// How often blocks are produced on that chain. It's suggested to set this value - /// to match the block time of the chain. - const AVERAGE_BLOCK_INTERVAL: Duration; - - /// The user account identifier type for the runtime. - type AccountId: Parameter + Member + MaybeSerializeDeserialize + Debug + MaybeDisplay + Ord + Default; - /// Index of a transaction used by the chain. - type Index: Parameter - + Member - + MaybeSerialize - + Debug - + Default - + MaybeDisplay - + DeserializeOwned - + AtLeast32Bit - + Copy; - /// Block type. - type SignedBlock: Member + Serialize + DeserializeOwned + BlockWithJustification; - /// The aggregated `Call` type. - type Call: Dispatchable + Debug; - /// Balance of an account in native tokens. - /// - /// The chain may suport multiple tokens, but this particular type is for token that is used - /// to pay for transaction dispatch, to reward different relayers (headers, messages), etc. - type Balance: Parameter + Member + DeserializeOwned + Clone + Copy + CheckedSub + PartialOrd + SaturatingAdd + Zero; -} - -/// Substrate-based chain with `frame_system::Config::AccountData` set to -/// the `pallet_balances::AccountData`. -pub trait ChainWithBalances: Chain { - /// Return runtime storage key for getting `frame_system::AccountInfo` of given account. - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey; -} - -/// Block with justification. -pub trait BlockWithJustification
{ - /// Return block header. - fn header(&self) -> Header; - /// Return block justification, if known. - fn justification(&self) -> Option<&EncodedJustification>; -} - -/// Substrate-based chain transactions signing scheme. -pub trait TransactionSignScheme { - /// Chain that this scheme is to be used. - type Chain: Chain; - /// Type of key pairs used to sign transactions. - type AccountKeyPair: Pair; - /// Signed transaction. - type SignedTransaction; - - /// Create transaction for given runtime call, signed by given account. - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction; -} - -impl BlockWithJustification for SignedBlock { - fn header(&self) -> Block::Header { - self.block.header().clone() - } - - fn justification(&self) -> Option<&EncodedJustification> { - self.justifications - .as_ref() - .and_then(|j| j.get(sp_finality_grandpa::GRANDPA_ENGINE_ID)) - } -} diff --git a/bridges/relays/client-substrate/src/client.rs b/bridges/relays/client-substrate/src/client.rs deleted file mode 100644 index f0b7158ecbe3..000000000000 --- a/bridges/relays/client-substrate/src/client.rs +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate node client. - -use crate::chain::{Chain, ChainWithBalances}; -use crate::rpc::Substrate; -use crate::{ConnectionParams, Error, Result}; - -use async_std::sync::{Arc, Mutex}; -use codec::Decode; -use frame_system::AccountInfo; -use jsonrpsee_ws_client::{traits::SubscriptionClient, v2::params::JsonRpcParams, DeserializeOwned}; -use jsonrpsee_ws_client::{Subscription, WsClient as RpcClient, WsClientBuilder as RpcClientBuilder}; -use num_traits::Zero; -use pallet_balances::AccountData; -use relay_utils::relay_loop::RECONNECT_DELAY; -use sp_core::{storage::StorageKey, Bytes}; -use sp_trie::StorageProof; -use sp_version::RuntimeVersion; - -const SUB_API_GRANDPA_AUTHORITIES: &str = "GrandpaApi_grandpa_authorities"; -const MAX_SUBSCRIPTION_CAPACITY: usize = 4096; - -/// Opaque justifications subscription type. -pub type JustificationsSubscription = Subscription; - -/// Opaque GRANDPA authorities set. -pub type OpaqueGrandpaAuthoritiesSet = Vec; - -/// Substrate client type. -/// -/// Cloning `Client` is a cheap operation. -pub struct Client { - /// Client connection params. - params: ConnectionParams, - /// Substrate RPC client. - client: Arc, - /// Genesis block hash. - genesis_hash: C::Hash, - /// If several tasks are submitting their transactions simultaneously using `submit_signed_extrinsic` - /// method, they may get the same transaction nonce. So one of transactions will be rejected - /// from the pool. This lock is here to prevent situations like that. - submit_signed_extrinsic_lock: Arc>, -} - -impl Clone for Client { - fn clone(&self) -> Self { - Client { - params: self.params.clone(), - client: self.client.clone(), - genesis_hash: self.genesis_hash, - submit_signed_extrinsic_lock: self.submit_signed_extrinsic_lock.clone(), - } - } -} - -impl std::fmt::Debug for Client { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - fmt.debug_struct("Client") - .field("genesis_hash", &self.genesis_hash) - .finish() - } -} - -impl Client { - /// Returns client that is able to call RPCs on Substrate node over websocket connection. - /// - /// This function will keep connecting to given Sustrate node until connection is established - /// and is functional. If attempt fail, it will wait for `RECONNECT_DELAY` and retry again. - pub async fn new(params: ConnectionParams) -> Self { - loop { - match Self::try_connect(params.clone()).await { - Ok(client) => return client, - Err(error) => log::error!( - target: "bridge", - "Failed to connect to {} node: {:?}. Going to retry in {}s", - C::NAME, - error, - RECONNECT_DELAY.as_secs(), - ), - } - - async_std::task::sleep(RECONNECT_DELAY).await; - } - } - - /// Try to connect to Substrate node over websocket. Returns Substrate RPC client if connection - /// has been established or error otherwise. - pub async fn try_connect(params: ConnectionParams) -> Result { - let client = Self::build_client(params.clone()).await?; - - let number: C::BlockNumber = Zero::zero(); - let genesis_hash = Substrate::::chain_get_block_hash(&*client, number).await?; - - Ok(Self { - params, - client, - genesis_hash, - submit_signed_extrinsic_lock: Arc::new(Mutex::new(())), - }) - } - - /// Reopen client connection. - pub async fn reconnect(&mut self) -> Result<()> { - self.client = Self::build_client(self.params.clone()).await?; - Ok(()) - } - - /// Build client to use in connection. - async fn build_client(params: ConnectionParams) -> Result> { - let uri = format!( - "{}://{}:{}", - if params.secure { "wss" } else { "ws" }, - params.host, - params.port, - ); - let client = RpcClientBuilder::default() - .max_notifs_per_subscription(MAX_SUBSCRIPTION_CAPACITY) - .build(&uri) - .await?; - - Ok(Arc::new(client)) - } -} - -impl Client { - /// Returns true if client is connected to at least one peer and is in synced state. - pub async fn ensure_synced(&self) -> Result<()> { - let health = Substrate::::system_health(&*self.client).await?; - let is_synced = !health.is_syncing && (!health.should_have_peers || health.peers > 0); - if is_synced { - Ok(()) - } else { - Err(Error::ClientNotSynced(health)) - } - } - - /// Return hash of the genesis block. - pub fn genesis_hash(&self) -> &C::Hash { - &self.genesis_hash - } - - /// Return hash of the best finalized block. - pub async fn best_finalized_header_hash(&self) -> Result { - Ok(Substrate::::chain_get_finalized_head(&*self.client).await?) - } - - /// Returns the best Substrate header. - pub async fn best_header(&self) -> Result - where - C::Header: DeserializeOwned, - { - Ok(Substrate::::chain_get_header(&*self.client, None).await?) - } - - /// Get a Substrate block from its hash. - pub async fn get_block(&self, block_hash: Option) -> Result { - Ok(Substrate::::chain_get_block(&*self.client, block_hash).await?) - } - - /// Get a Substrate header by its hash. - pub async fn header_by_hash(&self, block_hash: C::Hash) -> Result - where - C::Header: DeserializeOwned, - { - Ok(Substrate::::chain_get_header(&*self.client, block_hash).await?) - } - - /// Get a Substrate block hash by its number. - pub async fn block_hash_by_number(&self, number: C::BlockNumber) -> Result { - Ok(Substrate::::chain_get_block_hash(&*self.client, number).await?) - } - - /// Get a Substrate header by its number. - pub async fn header_by_number(&self, block_number: C::BlockNumber) -> Result - where - C::Header: DeserializeOwned, - { - let block_hash = Self::block_hash_by_number(self, block_number).await?; - Ok(Self::header_by_hash(self, block_hash).await?) - } - - /// Return runtime version. - pub async fn runtime_version(&self) -> Result { - Ok(Substrate::::state_runtime_version(&*self.client).await?) - } - - /// Read value from runtime storage. - pub async fn storage_value(&self, storage_key: StorageKey) -> Result> { - Substrate::::state_get_storage(&*self.client, storage_key) - .await? - .map(|encoded_value| T::decode(&mut &encoded_value.0[..]).map_err(Error::ResponseParseFailed)) - .transpose() - } - - /// Return native tokens balance of the account. - pub async fn free_native_balance(&self, account: C::AccountId) -> Result - where - C: ChainWithBalances, - { - let storage_key = C::account_info_storage_key(&account); - let encoded_account_data = Substrate::::state_get_storage(&*self.client, storage_key) - .await? - .ok_or(Error::AccountDoesNotExist)?; - let decoded_account_data = - AccountInfo::>::decode(&mut &encoded_account_data.0[..]) - .map_err(Error::ResponseParseFailed)?; - Ok(decoded_account_data.data.free) - } - - /// Get the nonce of the given Substrate account. - /// - /// Note: It's the caller's responsibility to make sure `account` is a valid ss58 address. - pub async fn next_account_index(&self, account: C::AccountId) -> Result { - Ok(Substrate::::system_account_next_index(&*self.client, account).await?) - } - - /// Submit unsigned extrinsic for inclusion in a block. - /// - /// Note: The given transaction needs to be SCALE encoded beforehand. - pub async fn submit_unsigned_extrinsic(&self, transaction: Bytes) -> Result { - let tx_hash = Substrate::::author_submit_extrinsic(&*self.client, transaction).await?; - log::trace!(target: "bridge", "Sent transaction to Substrate node: {:?}", tx_hash); - Ok(tx_hash) - } - - /// Submit an extrinsic signed by given account. - /// - /// All calls of this method are synchronized, so there can't be more than one active - /// `submit_signed_extrinsic()` call. This guarantees that no nonces collision may happen - /// if all client instances are clones of the same initial `Client`. - /// - /// Note: The given transaction needs to be SCALE encoded beforehand. - pub async fn submit_signed_extrinsic( - &self, - extrinsic_signer: C::AccountId, - prepare_extrinsic: impl FnOnce(C::Index) -> Bytes, - ) -> Result { - let _guard = self.submit_signed_extrinsic_lock.lock().await; - let transaction_nonce = self.next_account_index(extrinsic_signer).await?; - let extrinsic = prepare_extrinsic(transaction_nonce); - let tx_hash = Substrate::::author_submit_extrinsic(&*self.client, extrinsic).await?; - log::trace!(target: "bridge", "Sent transaction to {} node: {:?}", C::NAME, tx_hash); - Ok(tx_hash) - } - - /// Get the GRANDPA authority set at given block. - pub async fn grandpa_authorities_set(&self, block: C::Hash) -> Result { - let call = SUB_API_GRANDPA_AUTHORITIES.to_string(); - let data = Bytes(Vec::new()); - - let encoded_response = Substrate::::state_call(&*self.client, call, data, Some(block)).await?; - let authority_list = encoded_response.0; - - Ok(authority_list) - } - - /// Execute runtime call at given block. - pub async fn state_call(&self, method: String, data: Bytes, at_block: Option) -> Result { - Substrate::::state_call(&*self.client, method, data, at_block) - .await - .map_err(Into::into) - } - - /// Returns storage proof of given storage keys. - pub async fn prove_storage(&self, keys: Vec, at_block: C::Hash) -> Result { - Substrate::::state_prove_storage(&*self.client, keys, Some(at_block)) - .await - .map(|proof| StorageProof::new(proof.proof.into_iter().map(|b| b.0).collect())) - .map_err(Into::into) - } - - /// Return new justifications stream. - pub async fn subscribe_justifications(&self) -> Result { - Ok(self - .client - .subscribe( - "grandpa_subscribeJustifications", - JsonRpcParams::NoParams, - "grandpa_unsubscribeJustifications", - ) - .await?) - } -} diff --git a/bridges/relays/client-substrate/src/error.rs b/bridges/relays/client-substrate/src/error.rs deleted file mode 100644 index 304229ede198..000000000000 --- a/bridges/relays/client-substrate/src/error.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Substrate node RPC errors. - -use jsonrpsee_ws_client::Error as RpcError; -use relay_utils::MaybeConnectionError; -use sc_rpc_api::system::Health; - -/// Result type used by Substrate client. -pub type Result = std::result::Result; - -/// Errors that can occur only when interacting with -/// a Substrate node through RPC. -#[derive(Debug)] -pub enum Error { - /// An error that can occur when making a request to - /// an JSON-RPC server. - RpcError(RpcError), - /// The response from the server could not be SCALE decoded. - ResponseParseFailed(codec::Error), - /// The Substrate bridge pallet has not yet been initialized. - UninitializedBridgePallet, - /// Account does not exist on the chain. - AccountDoesNotExist, - /// Runtime storage is missing mandatory ":code:" entry. - MissingMandatoryCodeEntry, - /// The client we're connected to is not synced, so we can't rely on its state. - ClientNotSynced(Health), - /// An error has happened when we have tried to parse storage proof. - StorageProofError(bp_runtime::StorageProofError), - /// Custom logic error. - Custom(String), -} - -impl std::error::Error for Error { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { - match self { - Self::RpcError(ref e) => Some(e), - Self::ResponseParseFailed(ref e) => Some(e), - Self::UninitializedBridgePallet => None, - Self::AccountDoesNotExist => None, - Self::MissingMandatoryCodeEntry => None, - Self::ClientNotSynced(_) => None, - Self::StorageProofError(_) => None, - Self::Custom(_) => None, - } - } -} - -impl From for Error { - fn from(error: RpcError) -> Self { - Error::RpcError(error) - } -} - -impl MaybeConnectionError for Error { - fn is_connection_error(&self) -> bool { - matches!( - *self, - Error::RpcError(RpcError::TransportError(_)) - // right now if connection to the ws server is dropped (after it is already established), - // we're getting this error - | Error::RpcError(RpcError::Internal(_)) - | Error::RpcError(RpcError::RestartNeeded(_)) - | Error::ClientNotSynced(_), - ) - } -} - -impl std::fmt::Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - let s = match self { - Self::RpcError(e) => e.to_string(), - Self::ResponseParseFailed(e) => e.to_string(), - Self::UninitializedBridgePallet => "The Substrate bridge pallet has not been initialized yet.".into(), - Self::AccountDoesNotExist => "Account does not exist on the chain".into(), - Self::MissingMandatoryCodeEntry => "Mandatory :code: entry is missing from runtime storage".into(), - Self::StorageProofError(e) => format!("Error when parsing storage proof: {:?}", e), - Self::ClientNotSynced(health) => format!("Substrate client is not synced: {}", health), - Self::Custom(e) => e.clone(), - }; - - write!(f, "{}", s) - } -} - -impl From for String { - fn from(error: Error) -> String { - error.to_string() - } -} diff --git a/bridges/relays/client-substrate/src/headers_source.rs b/bridges/relays/client-substrate/src/headers_source.rs deleted file mode 100644 index 3dfcb220de45..000000000000 --- a/bridges/relays/client-substrate/src/headers_source.rs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Default generic implementation of headers source for basic Substrate client. - -use crate::chain::{BlockWithJustification, Chain}; -use crate::client::Client; -use crate::error::Error; - -use async_trait::async_trait; -use headers_relay::{ - sync_loop::SourceClient, - sync_types::{HeaderIdOf, HeadersSyncPipeline, QueuedHeader, SourceHeader}, -}; -use relay_utils::relay_loop::Client as RelayClient; -use sp_runtime::{traits::Header as HeaderT, EncodedJustification}; -use std::marker::PhantomData; - -/// Substrate node as headers source. -pub struct HeadersSource { - client: Client, - _phantom: PhantomData

, -} - -impl HeadersSource { - /// Create new headers source using given client. - pub fn new(client: Client) -> Self { - HeadersSource { - client, - _phantom: Default::default(), - } - } -} - -impl Clone for HeadersSource { - fn clone(&self) -> Self { - HeadersSource { - client: self.client.clone(), - _phantom: Default::default(), - } - } -} - -#[async_trait] -impl RelayClient for HeadersSource { - type Error = Error; - - async fn reconnect(&mut self) -> Result<(), Error> { - self.client.reconnect().await - } -} - -#[async_trait] -impl SourceClient

for HeadersSource -where - C: Chain, - C::BlockNumber: relay_utils::BlockNumberBase, - C::Header: Into, - P: HeadersSyncPipeline, - P::Header: SourceHeader, -{ - async fn best_block_number(&self) -> Result { - // we **CAN** continue to relay headers if source node is out of sync, because - // target node may be missing headers that are already available at the source - Ok(*self.client.best_header().await?.number()) - } - - async fn header_by_hash(&self, hash: P::Hash) -> Result { - self.client - .header_by_hash(hash) - .await - .map(Into::into) - .map_err(Into::into) - } - - async fn header_by_number(&self, number: P::Number) -> Result { - self.client - .header_by_number(number) - .await - .map(Into::into) - .map_err(Into::into) - } - - async fn header_completion(&self, id: HeaderIdOf

) -> Result<(HeaderIdOf

, Option), Error> { - let hash = id.1; - let signed_block = self.client.get_block(Some(hash)).await?; - let grandpa_justification = signed_block.justification().cloned(); - - Ok((id, grandpa_justification)) - } - - async fn header_extra(&self, id: HeaderIdOf

, _header: QueuedHeader

) -> Result<(HeaderIdOf

, ()), Error> { - Ok((id, ())) - } -} diff --git a/bridges/relays/client-substrate/src/lib.rs b/bridges/relays/client-substrate/src/lib.rs deleted file mode 100644 index 44895dcdc6e4..000000000000 --- a/bridges/relays/client-substrate/src/lib.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Tools to interact with Substrate node using RPC methods. - -#![warn(missing_docs)] - -mod chain; -mod client; -mod error; -mod rpc; -mod sync_header; - -pub mod finality_source; -pub mod guard; -pub mod headers_source; -pub mod metrics; - -pub use crate::chain::{BlockWithJustification, Chain, ChainWithBalances, TransactionSignScheme}; -pub use crate::client::{Client, JustificationsSubscription, OpaqueGrandpaAuthoritiesSet}; -pub use crate::error::{Error, Result}; -pub use crate::sync_header::SyncHeader; -pub use bp_runtime::{BlockNumberOf, Chain as ChainBase, HashOf, HeaderOf}; - -/// Header id used by the chain. -pub type HeaderIdOf = relay_utils::HeaderId, BlockNumberOf>; - -/// Substrate-over-websocket connection params. -#[derive(Debug, Clone)] -pub struct ConnectionParams { - /// Websocket server hostname. - pub host: String, - /// Websocket server TCP port. - pub port: u16, - /// Use secure websocket connection. - pub secure: bool, -} - -impl Default for ConnectionParams { - fn default() -> Self { - ConnectionParams { - host: "localhost".into(), - port: 9944, - secure: false, - } - } -} diff --git a/bridges/relays/client-substrate/src/metrics/float_storage_value.rs b/bridges/relays/client-substrate/src/metrics/float_storage_value.rs deleted file mode 100644 index f3ba8988eea4..000000000000 --- a/bridges/relays/client-substrate/src/metrics/float_storage_value.rs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::chain::Chain; -use crate::client::Client; - -use async_trait::async_trait; -use codec::Decode; -use relay_utils::metrics::{metric_name, register, Gauge, PrometheusError, Registry, StandaloneMetrics, F64}; -use sp_core::storage::StorageKey; -use sp_runtime::{traits::UniqueSaturatedInto, FixedPointNumber}; -use std::time::Duration; - -/// Storage value update interval (in blocks). -const UPDATE_INTERVAL_IN_BLOCKS: u32 = 5; - -/// Metric that represents fixed-point runtime storage value as float gauge. -#[derive(Clone, Debug)] -pub struct FloatStorageValueMetric { - client: Client, - storage_key: StorageKey, - maybe_default_value: Option, - metric: Gauge, -} - -impl FloatStorageValueMetric { - /// Create new metric. - pub fn new( - registry: &Registry, - prefix: Option<&str>, - client: Client, - storage_key: StorageKey, - maybe_default_value: Option, - name: String, - help: String, - ) -> Result { - Ok(FloatStorageValueMetric { - client, - storage_key, - maybe_default_value, - metric: register(Gauge::new(metric_name(prefix, &name), help)?, registry)?, - }) - } -} - -#[async_trait] -impl StandaloneMetrics for FloatStorageValueMetric -where - T: 'static + Decode + Send + Sync + FixedPointNumber, -{ - fn update_interval(&self) -> Duration { - C::AVERAGE_BLOCK_INTERVAL * UPDATE_INTERVAL_IN_BLOCKS - } - - async fn update(&self) { - relay_utils::metrics::set_gauge_value( - &self.metric, - self.client - .storage_value::(self.storage_key.clone()) - .await - .map(|maybe_storage_value| { - maybe_storage_value.or(self.maybe_default_value).map(|storage_value| { - storage_value.into_inner().unique_saturated_into() as f64 - / T::DIV.unique_saturated_into() as f64 - }) - }), - ); - } -} diff --git a/bridges/relays/client-substrate/src/metrics/storage_proof_overhead.rs b/bridges/relays/client-substrate/src/metrics/storage_proof_overhead.rs deleted file mode 100644 index 526fe1e048bf..000000000000 --- a/bridges/relays/client-substrate/src/metrics/storage_proof_overhead.rs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::chain::Chain; -use crate::client::Client; -use crate::error::Error; - -use async_trait::async_trait; -use relay_utils::metrics::{metric_name, register, Gauge, PrometheusError, Registry, StandaloneMetrics, U64}; -use sp_core::storage::StorageKey; -use sp_runtime::traits::Header as HeaderT; -use sp_storage::well_known_keys::CODE; -use std::time::Duration; - -/// Storage proof overhead update interval (in blocks). -const UPDATE_INTERVAL_IN_BLOCKS: u32 = 100; - -/// Metric that represents extra size of storage proof as unsigned integer gauge. -/// -/// There's one thing to keep in mind when using this metric: the overhead may be slightly -/// different for other values, but this metric gives a good estimation. -#[derive(Debug)] -pub struct StorageProofOverheadMetric { - client: Client, - metric: Gauge, -} - -impl Clone for StorageProofOverheadMetric { - fn clone(&self) -> Self { - StorageProofOverheadMetric { - client: self.client.clone(), - metric: self.metric.clone(), - } - } -} - -impl StorageProofOverheadMetric { - /// Create new metric instance with given name and help. - pub fn new( - registry: &Registry, - prefix: Option<&str>, - client: Client, - name: String, - help: String, - ) -> Result { - Ok(StorageProofOverheadMetric { - client, - metric: register(Gauge::new(metric_name(prefix, &name), help)?, registry)?, - }) - } - - /// Returns approximate storage proof size overhead. - async fn compute_storage_proof_overhead(&self) -> Result { - let best_header_hash = self.client.best_finalized_header_hash().await?; - let best_header = self.client.header_by_hash(best_header_hash).await?; - - let storage_proof = self - .client - .prove_storage(vec![StorageKey(CODE.to_vec())], best_header_hash) - .await?; - let storage_proof_size: usize = storage_proof.clone().iter_nodes().map(|n| n.len()).sum(); - - let storage_value_reader = - bp_runtime::StorageProofChecker::::new(*best_header.state_root(), storage_proof) - .map_err(Error::StorageProofError)?; - let maybe_encoded_storage_value = storage_value_reader - .read_value(CODE) - .map_err(Error::StorageProofError)?; - let encoded_storage_value_size = maybe_encoded_storage_value - .ok_or(Error::MissingMandatoryCodeEntry)? - .len(); - - Ok(storage_proof_size - encoded_storage_value_size) - } -} - -#[async_trait] -impl StandaloneMetrics for StorageProofOverheadMetric { - fn update_interval(&self) -> Duration { - C::AVERAGE_BLOCK_INTERVAL * UPDATE_INTERVAL_IN_BLOCKS - } - - async fn update(&self) { - relay_utils::metrics::set_gauge_value( - &self.metric, - self.compute_storage_proof_overhead() - .await - .map(|overhead| Some(overhead as u64)), - ); - } -} diff --git a/bridges/relays/client-substrate/src/rpc.rs b/bridges/relays/client-substrate/src/rpc.rs deleted file mode 100644 index 06df1f705d09..000000000000 --- a/bridges/relays/client-substrate/src/rpc.rs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! The most generic Substrate node RPC interface. - -use crate::chain::Chain; - -use sc_rpc_api::{state::ReadProof, system::Health}; -use sp_core::{ - storage::{StorageData, StorageKey}, - Bytes, -}; -use sp_version::RuntimeVersion; - -jsonrpsee_proc_macros::rpc_client_api! { - pub(crate) Substrate { - #[rpc(method = "system_health", positional_params)] - fn system_health() -> Health; - #[rpc(method = "chain_getHeader", positional_params)] - fn chain_get_header(block_hash: Option) -> C::Header; - #[rpc(method = "chain_getFinalizedHead", positional_params)] - fn chain_get_finalized_head() -> C::Hash; - #[rpc(method = "chain_getBlock", positional_params)] - fn chain_get_block(block_hash: Option) -> C::SignedBlock; - #[rpc(method = "chain_getBlockHash", positional_params)] - fn chain_get_block_hash(block_number: Option) -> C::Hash; - #[rpc(method = "system_accountNextIndex", positional_params)] - fn system_account_next_index(account_id: C::AccountId) -> C::Index; - #[rpc(method = "author_submitExtrinsic", positional_params)] - fn author_submit_extrinsic(extrinsic: Bytes) -> C::Hash; - #[rpc(method = "state_call", positional_params)] - fn state_call(method: String, data: Bytes, at_block: Option) -> Bytes; - #[rpc(method = "state_getStorage", positional_params)] - fn state_get_storage(key: StorageKey) -> Option; - #[rpc(method = "state_getReadProof", positional_params)] - fn state_prove_storage(keys: Vec, hash: Option) -> ReadProof; - #[rpc(method = "state_getRuntimeVersion", positional_params)] - fn state_runtime_version() -> RuntimeVersion; - } -} diff --git a/bridges/relays/client-substrate/src/sync_header.rs b/bridges/relays/client-substrate/src/sync_header.rs deleted file mode 100644 index 0b74dee690f2..000000000000 --- a/bridges/relays/client-substrate/src/sync_header.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use bp_header_chain::find_grandpa_authorities_scheduled_change; -use finality_relay::SourceHeader as FinalitySourceHeader; -use headers_relay::sync_types::SourceHeader; -use num_traits::{CheckedSub, One}; -use relay_utils::HeaderId; -use sp_runtime::traits::Header as HeaderT; - -/// Generic wrapper for `sp_runtime::traits::Header` based headers, that -/// implements `headers_relay::sync_types::SourceHeader` and may be used in headers sync directly. -#[derive(Clone, Debug, PartialEq)] -pub struct SyncHeader

(Header); - -impl
SyncHeader
{ - /// Extracts wrapped header from self. - pub fn into_inner(self) -> Header { - self.0 - } -} - -impl
std::ops::Deref for SyncHeader
{ - type Target = Header; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl
From
for SyncHeader
{ - fn from(header: Header) -> Self { - Self(header) - } -} - -impl SourceHeader for SyncHeader
{ - fn id(&self) -> HeaderId { - relay_utils::HeaderId(*self.0.number(), self.hash()) - } - - fn parent_id(&self) -> HeaderId { - relay_utils::HeaderId( - self.number() - .checked_sub(&One::one()) - .expect("should never be called for genesis header"), - *self.parent_hash(), - ) - } -} - -impl FinalitySourceHeader for SyncHeader
{ - fn number(&self) -> Header::Number { - *self.0.number() - } - - fn is_mandatory(&self) -> bool { - find_grandpa_authorities_scheduled_change(&self.0).is_some() - } -} diff --git a/bridges/relays/client-westend/Cargo.toml b/bridges/relays/client-westend/Cargo.toml deleted file mode 100644 index a408ae3a46da..000000000000 --- a/bridges/relays/client-westend/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-westend-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies - -bp-westend = { path = "../../primitives/chain-westend" } - -# Substrate Dependencies - -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-westend/src/lib.rs b/bridges/relays/client-westend/src/lib.rs deleted file mode 100644 index 6768b81f10f8..000000000000 --- a/bridges/relays/client-westend/src/lib.rs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Westend chain. - -use codec::Encode; -use relay_substrate_client::{Chain, ChainBase, ChainWithBalances, TransactionSignScheme}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; -use std::time::Duration; - -/// Westend header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Westend header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; - -/// Westend chain definition -#[derive(Debug, Clone, Copy)] -pub struct Westend; - -impl ChainBase for Westend { - type BlockNumber = bp_westend::BlockNumber; - type Hash = bp_westend::Hash; - type Hasher = bp_westend::Hasher; - type Header = bp_westend::Header; -} - -impl Chain for Westend { - const NAME: &'static str = "Westend"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); - - type AccountId = bp_westend::AccountId; - type Index = bp_westend::Nonce; - type SignedBlock = bp_westend::SignedBlock; - type Call = bp_westend::Call; - type Balance = bp_westend::Balance; -} - -impl ChainWithBalances for Westend { - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { - StorageKey(bp_westend::account_info_storage_key(account_id)) - } -} - -impl TransactionSignScheme for Westend { - type Chain = Westend; - type AccountKeyPair = sp_core::sr25519::Pair; - type SignedTransaction = bp_westend::UncheckedExtrinsic; - - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction { - let raw_payload = SignedPayload::new( - call, - bp_westend::SignedExtensions::new( - bp_westend::VERSION, - sp_runtime::generic::Era::Immortal, - genesis_hash, - signer_nonce, - 0, - ), - ) - .expect("SignedExtension never fails."); - - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); - let (call, extra, _) = raw_payload.deconstruct(); - - bp_westend::UncheckedExtrinsic::new_signed( - call, - sp_runtime::MultiAddress::Id(signer.into_account()), - signature.into(), - extra, - ) - } -} - -/// Westend signing params. -pub type SigningParams = sp_core::sr25519::Pair; diff --git a/bridges/relays/client-wococo/Cargo.toml b/bridges/relays/client-wococo/Cargo.toml deleted file mode 100644 index c1b9aafd95e7..000000000000 --- a/bridges/relays/client-wococo/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "relay-wococo-client" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0" } -headers-relay = { path = "../headers" } -relay-substrate-client = { path = "../client-substrate" } -relay-utils = { path = "../utils" } - -# Bridge dependencies -bridge-runtime-common = { path = "../../bin/runtime-common" } -bp-header-chain = { path = "../../primitives/header-chain" } -bp-message-dispatch = { path = "../../primitives/message-dispatch" } -bp-messages = { path = "../../primitives/messages" } -bp-polkadot-core = { path = "../../primitives/polkadot-core" } -bp-rococo = { path = "../../primitives/chain-rococo" } -bp-runtime = { path = "../../primitives/runtime" } -bp-wococo = { path = "../../primitives/chain-wococo" } -pallet-bridge-dispatch = { path = "../../modules/dispatch" } -pallet-bridge-messages = { path = "../../modules/messages" } - -# Substrate Dependencies -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/client-wococo/src/lib.rs b/bridges/relays/client-wococo/src/lib.rs deleted file mode 100644 index 8ceba7c7c436..000000000000 --- a/bridges/relays/client-wococo/src/lib.rs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types used to connect to the Wococo-Substrate chain. - -use codec::Encode; -use relay_substrate_client::{Chain, ChainBase, ChainWithBalances, TransactionSignScheme}; -use sp_core::{storage::StorageKey, Pair}; -use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; -use std::time::Duration; - -pub mod runtime; - -/// Wococo header id. -pub type HeaderId = relay_utils::HeaderId; - -/// Wococo header type used in headers sync. -pub type SyncHeader = relay_substrate_client::SyncHeader; - -/// Wococo chain definition -#[derive(Debug, Clone, Copy)] -pub struct Wococo; - -impl ChainBase for Wococo { - type BlockNumber = bp_wococo::BlockNumber; - type Hash = bp_wococo::Hash; - type Hasher = bp_wococo::Hashing; - type Header = bp_wococo::Header; -} - -impl Chain for Wococo { - const NAME: &'static str = "Wococo"; - const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); - - type AccountId = bp_wococo::AccountId; - type Index = bp_wococo::Index; - type SignedBlock = bp_wococo::SignedBlock; - type Call = crate::runtime::Call; - type Balance = bp_wococo::Balance; -} - -impl ChainWithBalances for Wococo { - fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { - StorageKey(bp_wococo::account_info_storage_key(account_id)) - } -} - -impl TransactionSignScheme for Wococo { - type Chain = Wococo; - type AccountKeyPair = sp_core::sr25519::Pair; - type SignedTransaction = crate::runtime::UncheckedExtrinsic; - - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - signer_nonce: ::Index, - call: ::Call, - ) -> Self::SignedTransaction { - let raw_payload = SignedPayload::new( - call, - bp_wococo::SignedExtensions::new( - bp_wococo::VERSION, - sp_runtime::generic::Era::Immortal, - genesis_hash, - signer_nonce, - 0, - ), - ) - .expect("SignedExtension never fails."); - - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); - let (call, extra, _) = raw_payload.deconstruct(); - - bp_wococo::UncheckedExtrinsic::new_signed( - call, - sp_runtime::MultiAddress::Id(signer.into_account()), - signature.into(), - extra, - ) - } -} - -/// Wococo signing params. -pub type SigningParams = sp_core::sr25519::Pair; diff --git a/bridges/relays/client-wococo/src/runtime.rs b/bridges/relays/client-wococo/src/runtime.rs deleted file mode 100644 index e973c3a6d028..000000000000 --- a/bridges/relays/client-wococo/src/runtime.rs +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types that are specific to the Wococo runtime. - -use bp_messages::{LaneId, UnrewardedRelayersState}; -use bp_polkadot_core::PolkadotLike; -use bp_runtime::Chain; -use codec::{Decode, Encode}; -use frame_support::weights::Weight; - -/// Instance of messages pallet that is used to bridge with Rococo chain. -pub type WithRococoMessagesInstance = pallet_bridge_messages::DefaultInstance; - -/// Unchecked Wococo extrinsic. -pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; - -/// Rococo account ownership digest from Wococo. -/// -/// The byte vector returned by this function should be signed with a Rococo account private key. -/// This way, the owner of `wococo_account_id` on Rococo proves that the Rococo account private key -/// is also under his control. -pub fn wococo_to_rococo_account_ownership_digest( - rococo_call: &Call, - wococo_account_id: AccountId, - rococo_spec_version: SpecVersion, -) -> Vec -where - Call: codec::Encode, - AccountId: codec::Encode, - SpecVersion: codec::Encode, -{ - pallet_bridge_dispatch::account_ownership_digest( - rococo_call, - wococo_account_id, - rococo_spec_version, - bp_runtime::WOCOCO_CHAIN_ID, - bp_runtime::ROCOCO_CHAIN_ID, - ) -} - -/// Wococo Runtime `Call` enum. -/// -/// The enum represents a subset of possible `Call`s we can send to Rococo chain. -/// Ideally this code would be auto-generated from Metadata, because we want to -/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. -/// -/// All entries here (like pretty much in the entire file) must be kept in sync with Rococo -/// `construct_runtime`, so that we maintain SCALE-compatibility. -/// -/// See: https://github.com/paritytech/polkadot/blob/master/runtime/rococo/src/lib.rs -#[allow(clippy::large_enum_variant)] -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -pub enum Call { - /// System pallet. - #[codec(index = 0)] - System(SystemCall), - /// Rococo bridge pallet. - #[codec(index = 40)] - BridgeGrandpaRococo(BridgeGrandpaRococoCall), - /// Rococo messages pallet. - #[codec(index = 43)] - BridgeMessagesRococo(BridgeMessagesRococoCall), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum SystemCall { - #[codec(index = 1)] - remark(Vec), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum BridgeGrandpaRococoCall { - #[codec(index = 0)] - submit_finality_proof( - ::Header, - bp_header_chain::justification::GrandpaJustification<::Header>, - ), - #[codec(index = 1)] - initialize(bp_header_chain::InitializationData<::Header>), -} - -#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone)] -#[allow(non_camel_case_types)] -pub enum BridgeMessagesRococoCall { - #[codec(index = 3)] - send_message( - LaneId, - bp_message_dispatch::MessagePayload< - bp_rococo::AccountId, - bp_wococo::AccountId, - bp_wococo::AccountPublic, - Vec, - >, - bp_rococo::Balance, - ), - #[codec(index = 5)] - receive_messages_proof( - bp_rococo::AccountId, - bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, - u32, - Weight, - ), - #[codec(index = 6)] - receive_messages_delivery_proof( - bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof, - UnrewardedRelayersState, - ), -} - -impl sp_runtime::traits::Dispatchable for Call { - type Origin = (); - type Config = (); - type Info = (); - type PostInfo = (); - - fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { - unimplemented!("The Call is not expected to be dispatched.") - } -} diff --git a/bridges/relays/exchange/Cargo.toml b/bridges/relays/exchange/Cargo.toml deleted file mode 100644 index 62e7a029bbb2..000000000000 --- a/bridges/relays/exchange/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "exchange-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -async-std = "1.6.5" -async-trait = "0.1.40" -backoff = "0.2" -futures = "0.3.5" -log = "0.4.11" -num-traits = "0.2" -parking_lot = "0.11.0" -relay-utils = { path = "../utils" } diff --git a/bridges/relays/exchange/src/exchange.rs b/bridges/relays/exchange/src/exchange.rs deleted file mode 100644 index b87b99ee4207..000000000000 --- a/bridges/relays/exchange/src/exchange.rs +++ /dev/null @@ -1,919 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying proofs of exchange transaction. - -use async_trait::async_trait; -use relay_utils::{ - relay_loop::Client as RelayClient, FailedClient, MaybeConnectionError, StringifiedMaybeConnectionError, -}; -use std::{ - fmt::{Debug, Display}, - string::ToString, -}; - -/// Transaction proof pipeline. -pub trait TransactionProofPipeline: 'static { - /// Name of the transaction proof source. - const SOURCE_NAME: &'static str; - /// Name of the transaction proof target. - const TARGET_NAME: &'static str; - - /// Block type. - type Block: SourceBlock; - /// Transaction inclusion proof type. - type TransactionProof: 'static + Send + Sync; -} - -/// Block that is participating in exchange. -pub trait SourceBlock: 'static + Send + Sync { - /// Block hash type. - type Hash: 'static + Clone + Send + Sync + Debug + Display; - /// Block number type. - type Number: 'static - + Debug - + Display - + Clone - + Copy - + Send - + Sync - + Into - + std::cmp::Ord - + std::ops::Add - + num_traits::One; - /// Block transaction. - type Transaction: SourceTransaction; - - /// Return hash of the block. - fn id(&self) -> relay_utils::HeaderId; - /// Return block transactions iterator. - fn transactions(&self) -> Vec; -} - -/// Transaction that is participating in exchange. -pub trait SourceTransaction: 'static + Send { - /// Transaction hash type. - type Hash: Debug + Display; - - /// Return transaction hash. - fn hash(&self) -> Self::Hash; -} - -/// Block hash for given pipeline. -pub type BlockHashOf

= <

::Block as SourceBlock>::Hash; - -/// Block number for given pipeline. -pub type BlockNumberOf

= <

::Block as SourceBlock>::Number; - -/// Transaction hash for given pipeline. -pub type TransactionOf

= <

::Block as SourceBlock>::Transaction; - -/// Transaction hash for given pipeline. -pub type TransactionHashOf

= as SourceTransaction>::Hash; - -/// Header id. -pub type HeaderId

= relay_utils::HeaderId, BlockNumberOf

>; - -/// Source client API. -#[async_trait] -pub trait SourceClient: RelayClient { - /// Sleep until exchange-related data is (probably) updated. - async fn tick(&self); - /// Get block by hash. - async fn block_by_hash(&self, hash: BlockHashOf

) -> Result; - /// Get canonical block by number. - async fn block_by_number(&self, number: BlockNumberOf

) -> Result; - /// Return block + index where transaction has been **mined**. May return `Ok(None)` if transaction - /// is unknown to the source node. - async fn transaction_block(&self, hash: &TransactionHashOf

) - -> Result, usize)>, Self::Error>; - /// Prepare transaction proof. - async fn transaction_proof(&self, block: &P::Block, tx_index: usize) -> Result; -} - -/// Target client API. -#[async_trait] -pub trait TargetClient: RelayClient { - /// Sleep until exchange-related data is (probably) updated. - async fn tick(&self); - /// Returns `Ok(true)` if header is known to the target node. - async fn is_header_known(&self, id: &HeaderId

) -> Result; - /// Returns `Ok(true)` if header is finalized by the target node. - async fn is_header_finalized(&self, id: &HeaderId

) -> Result; - /// Returns best finalized header id. - async fn best_finalized_header_id(&self) -> Result, Self::Error>; - /// Returns `Ok(true)` if transaction proof is need to be relayed. - async fn filter_transaction_proof(&self, proof: &P::TransactionProof) -> Result; - /// Submits transaction proof to the target node. - async fn submit_transaction_proof(&self, proof: P::TransactionProof) -> Result<(), Self::Error>; -} - -/// Block transaction statistics. -#[derive(Debug, Default)] -#[cfg_attr(test, derive(PartialEq))] -pub struct RelayedBlockTransactions { - /// Total number of transactions processed (either relayed or ignored) so far. - pub processed: usize, - /// Total number of transactions successfully relayed so far. - pub relayed: usize, - /// Total number of transactions that we have failed to relay so far. - pub failed: usize, -} - -/// Relay all suitable transactions from single block. -/// -/// If connection error occurs, returns Err with number of successfully processed transactions. -/// If some other error occurs, it is ignored and other transactions are processed. -/// -/// All transaction-level traces are written by this function. This function is not tracing -/// any information about block. -pub async fn relay_block_transactions( - source_client: &impl SourceClient

, - target_client: &impl TargetClient

, - source_block: &P::Block, - mut relayed_transactions: RelayedBlockTransactions, -) -> Result { - let transactions_to_process = source_block - .transactions() - .into_iter() - .enumerate() - .skip(relayed_transactions.processed); - for (source_tx_index, source_tx) in transactions_to_process { - let result = async { - let source_tx_id = format!("{}/{}", source_block.id().1, source_tx_index); - let source_tx_proof = - prepare_transaction_proof(source_client, &source_tx_id, source_block, source_tx_index) - .await - .map_err(|e| (FailedClient::Source, e))?; - - let needs_to_be_relayed = - target_client - .filter_transaction_proof(&source_tx_proof) - .await - .map_err(|err| { - ( - FailedClient::Target, - StringifiedMaybeConnectionError::new( - err.is_connection_error(), - format!("Transaction filtering has failed with {:?}", err), - ), - ) - })?; - - if !needs_to_be_relayed { - return Ok(false); - } - - relay_ready_transaction_proof(target_client, &source_tx_id, source_tx_proof) - .await - .map(|_| true) - .map_err(|e| (FailedClient::Target, e)) - } - .await; - - // We have two options here: - // 1) retry with the same transaction later; - // 2) report error and proceed with next transaction. - // - // Option#1 may seems better, but: - // 1) we do not track if transaction is mined (without an error) by the target node; - // 2) error could be irrecoverable (e.g. when block is already pruned by bridge module or tx - // has invalid format) && we'll end up in infinite loop of retrying the same transaction proof. - // - // So we're going with option#2 here (the only exception are connection errors). - match result { - Ok(false) => { - relayed_transactions.processed += 1; - } - Ok(true) => { - log::info!( - target: "bridge", - "{} transaction {} proof has been successfully submitted to {} node", - P::SOURCE_NAME, - source_tx.hash(), - P::TARGET_NAME, - ); - - relayed_transactions.processed += 1; - relayed_transactions.relayed += 1; - } - Err((failed_client, err)) => { - log::error!( - target: "bridge", - "Error relaying {} transaction {} proof to {} node: {}. {}", - P::SOURCE_NAME, - source_tx.hash(), - P::TARGET_NAME, - err.to_string(), - if err.is_connection_error() { - "Going to retry after delay..." - } else { - "You may need to submit proof of this transaction manually" - }, - ); - - if err.is_connection_error() { - return Err((failed_client, relayed_transactions)); - } - - relayed_transactions.processed += 1; - relayed_transactions.failed += 1; - } - } - } - - Ok(relayed_transactions) -} - -/// Relay single transaction proof. -pub async fn relay_single_transaction_proof( - source_client: &impl SourceClient

, - target_client: &impl TargetClient

, - source_tx_hash: TransactionHashOf

, -) -> Result<(), String> { - // wait for transaction and header on source node - let (source_header_id, source_tx_index) = wait_transaction_mined(source_client, &source_tx_hash).await?; - let source_block = source_client.block_by_hash(source_header_id.1.clone()).await; - let source_block = source_block.map_err(|err| { - format!( - "Error retrieving block {} from {} node: {:?}", - source_header_id.1, - P::SOURCE_NAME, - err, - ) - })?; - - // wait for transaction and header on target node - wait_header_imported(target_client, &source_header_id).await?; - wait_header_finalized(target_client, &source_header_id).await?; - - // and finally - prepare and submit transaction proof to target node - let source_tx_id = format!("{}", source_tx_hash); - relay_ready_transaction_proof( - target_client, - &source_tx_id, - prepare_transaction_proof(source_client, &source_tx_id, &source_block, source_tx_index) - .await - .map_err(|err| err.to_string())?, - ) - .await - .map_err(|err| err.to_string()) -} - -/// Prepare transaction proof. -async fn prepare_transaction_proof( - source_client: &impl SourceClient

, - source_tx_id: &str, - source_block: &P::Block, - source_tx_index: usize, -) -> Result { - source_client - .transaction_proof(source_block, source_tx_index) - .await - .map_err(|err| { - StringifiedMaybeConnectionError::new( - err.is_connection_error(), - format!( - "Error building transaction {} proof on {} node: {:?}", - source_tx_id, - P::SOURCE_NAME, - err, - ), - ) - }) -} - -/// Relay prepared proof of transaction. -async fn relay_ready_transaction_proof( - target_client: &impl TargetClient

, - source_tx_id: &str, - source_tx_proof: P::TransactionProof, -) -> Result<(), StringifiedMaybeConnectionError> { - target_client - .submit_transaction_proof(source_tx_proof) - .await - .map_err(|err| { - StringifiedMaybeConnectionError::new( - err.is_connection_error(), - format!( - "Error submitting transaction {} proof to {} node: {:?}", - source_tx_id, - P::TARGET_NAME, - err, - ), - ) - }) -} - -/// Wait until transaction is mined by source node. -async fn wait_transaction_mined( - source_client: &impl SourceClient

, - source_tx_hash: &TransactionHashOf

, -) -> Result<(HeaderId

, usize), String> { - loop { - let source_header_and_tx = source_client.transaction_block(source_tx_hash).await.map_err(|err| { - format!( - "Error retrieving transaction {} from {} node: {:?}", - source_tx_hash, - P::SOURCE_NAME, - err, - ) - })?; - match source_header_and_tx { - Some((source_header_id, source_tx)) => { - log::info!( - target: "bridge", - "Transaction {} is retrieved from {} node. Continuing...", - source_tx_hash, - P::SOURCE_NAME, - ); - - return Ok((source_header_id, source_tx)); - } - None => { - log::info!( - target: "bridge", - "Waiting for transaction {} to be mined by {} node...", - source_tx_hash, - P::SOURCE_NAME, - ); - - source_client.tick().await; - } - } - } -} - -/// Wait until target node imports required header. -async fn wait_header_imported( - target_client: &impl TargetClient

, - source_header_id: &HeaderId

, -) -> Result<(), String> { - loop { - let is_header_known = target_client.is_header_known(source_header_id).await.map_err(|err| { - format!( - "Failed to check existence of header {}/{} on {} node: {:?}", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - err, - ) - })?; - match is_header_known { - true => { - log::info!( - target: "bridge", - "Header {}/{} is known to {} node. Continuing.", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - ); - - return Ok(()); - } - false => { - log::info!( - target: "bridge", - "Waiting for header {}/{} to be imported by {} node...", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - ); - - target_client.tick().await; - } - } - } -} - -/// Wait until target node finalizes required header. -async fn wait_header_finalized( - target_client: &impl TargetClient

, - source_header_id: &HeaderId

, -) -> Result<(), String> { - loop { - let is_header_finalized = target_client - .is_header_finalized(source_header_id) - .await - .map_err(|err| { - format!( - "Failed to check finality of header {}/{} on {} node: {:?}", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - err, - ) - })?; - match is_header_finalized { - true => { - log::info!( - target: "bridge", - "Header {}/{} is finalizd by {} node. Continuing.", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - ); - - return Ok(()); - } - false => { - log::info!( - target: "bridge", - "Waiting for header {}/{} to be finalized by {} node...", - source_header_id.0, - source_header_id.1, - P::TARGET_NAME, - ); - - target_client.tick().await; - } - } - } -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - - use parking_lot::Mutex; - use relay_utils::HeaderId; - use std::{ - collections::{HashMap, HashSet}, - sync::Arc, - }; - - pub fn test_block_id() -> TestHeaderId { - HeaderId(1, 1) - } - - pub fn test_next_block_id() -> TestHeaderId { - HeaderId(2, 2) - } - - pub fn test_transaction_hash(tx_index: u64) -> TestTransactionHash { - 200 + tx_index - } - - pub fn test_transaction(tx_index: u64) -> TestTransaction { - TestTransaction(test_transaction_hash(tx_index)) - } - - pub fn test_block() -> TestBlock { - TestBlock(test_block_id(), vec![test_transaction(0)]) - } - - pub fn test_next_block() -> TestBlock { - TestBlock(test_next_block_id(), vec![test_transaction(1)]) - } - - pub type TestBlockNumber = u64; - pub type TestBlockHash = u64; - pub type TestTransactionHash = u64; - pub type TestHeaderId = HeaderId; - - #[derive(Debug, Clone, PartialEq)] - pub struct TestError(pub bool); - - impl MaybeConnectionError for TestError { - fn is_connection_error(&self) -> bool { - self.0 - } - } - - pub struct TestTransactionProofPipeline; - - impl TransactionProofPipeline for TestTransactionProofPipeline { - const SOURCE_NAME: &'static str = "TestSource"; - const TARGET_NAME: &'static str = "TestTarget"; - - type Block = TestBlock; - type TransactionProof = TestTransactionProof; - } - - #[derive(Debug, Clone)] - pub struct TestBlock(pub TestHeaderId, pub Vec); - - impl SourceBlock for TestBlock { - type Hash = TestBlockHash; - type Number = TestBlockNumber; - type Transaction = TestTransaction; - - fn id(&self) -> TestHeaderId { - self.0 - } - - fn transactions(&self) -> Vec { - self.1.clone() - } - } - - #[derive(Debug, Clone)] - pub struct TestTransaction(pub TestTransactionHash); - - impl SourceTransaction for TestTransaction { - type Hash = TestTransactionHash; - - fn hash(&self) -> Self::Hash { - self.0 - } - } - - #[derive(Debug, Clone, PartialEq)] - pub struct TestTransactionProof(pub TestTransactionHash); - - #[derive(Clone)] - pub struct TestTransactionsSource { - pub on_tick: Arc, - pub data: Arc>, - } - - pub struct TestTransactionsSourceData { - pub block: Result, - pub transaction_block: Result, TestError>, - pub proofs_to_fail: HashMap, - } - - impl TestTransactionsSource { - pub fn new(on_tick: Box) -> Self { - Self { - on_tick: Arc::new(on_tick), - data: Arc::new(Mutex::new(TestTransactionsSourceData { - block: Ok(test_block()), - transaction_block: Ok(Some((test_block_id(), 0))), - proofs_to_fail: HashMap::new(), - })), - } - } - } - - #[async_trait] - impl RelayClient for TestTransactionsSource { - type Error = TestError; - - async fn reconnect(&mut self) -> Result<(), TestError> { - Ok(()) - } - } - - #[async_trait] - impl SourceClient for TestTransactionsSource { - async fn tick(&self) { - (self.on_tick)(&mut *self.data.lock()) - } - - async fn block_by_hash(&self, _: TestBlockHash) -> Result { - self.data.lock().block.clone() - } - - async fn block_by_number(&self, _: TestBlockNumber) -> Result { - self.data.lock().block.clone() - } - - async fn transaction_block(&self, _: &TestTransactionHash) -> Result, TestError> { - self.data.lock().transaction_block.clone() - } - - async fn transaction_proof(&self, block: &TestBlock, index: usize) -> Result { - let tx_hash = block.1[index].hash(); - let proof_error = self.data.lock().proofs_to_fail.get(&tx_hash).cloned(); - if let Some(err) = proof_error { - return Err(err); - } - - Ok(TestTransactionProof(tx_hash)) - } - } - - #[derive(Clone)] - pub struct TestTransactionsTarget { - pub on_tick: Arc, - pub data: Arc>, - } - - pub struct TestTransactionsTargetData { - pub is_header_known: Result, - pub is_header_finalized: Result, - pub best_finalized_header_id: Result, - pub transactions_to_accept: HashSet, - pub submitted_proofs: Vec, - } - - impl TestTransactionsTarget { - pub fn new(on_tick: Box) -> Self { - Self { - on_tick: Arc::new(on_tick), - data: Arc::new(Mutex::new(TestTransactionsTargetData { - is_header_known: Ok(true), - is_header_finalized: Ok(true), - best_finalized_header_id: Ok(test_block_id()), - transactions_to_accept: vec![test_transaction_hash(0)].into_iter().collect(), - submitted_proofs: Vec::new(), - })), - } - } - } - - #[async_trait] - impl RelayClient for TestTransactionsTarget { - type Error = TestError; - - async fn reconnect(&mut self) -> Result<(), TestError> { - Ok(()) - } - } - - #[async_trait] - impl TargetClient for TestTransactionsTarget { - async fn tick(&self) { - (self.on_tick)(&mut *self.data.lock()) - } - - async fn is_header_known(&self, _: &TestHeaderId) -> Result { - self.data.lock().is_header_known.clone() - } - - async fn is_header_finalized(&self, _: &TestHeaderId) -> Result { - self.data.lock().is_header_finalized.clone() - } - - async fn best_finalized_header_id(&self) -> Result { - self.data.lock().best_finalized_header_id.clone() - } - - async fn filter_transaction_proof(&self, proof: &TestTransactionProof) -> Result { - Ok(self.data.lock().transactions_to_accept.contains(&proof.0)) - } - - async fn submit_transaction_proof(&self, proof: TestTransactionProof) -> Result<(), TestError> { - self.data.lock().submitted_proofs.push(proof); - Ok(()) - } - } - - fn ensure_relay_single_success(source: &TestTransactionsSource, target: &TestTransactionsTarget) { - assert_eq!( - async_std::task::block_on(relay_single_transaction_proof(source, target, test_transaction_hash(0),)), - Ok(()), - ); - assert_eq!( - target.data.lock().submitted_proofs, - vec![TestTransactionProof(test_transaction_hash(0))], - ); - } - - fn ensure_relay_single_failure(source: TestTransactionsSource, target: TestTransactionsTarget) { - assert!(async_std::task::block_on(relay_single_transaction_proof( - &source, - &target, - test_transaction_hash(0), - )) - .is_err(),); - assert!(target.data.lock().submitted_proofs.is_empty()); - } - - #[test] - fn ready_transaction_proof_relayed_immediately() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - ensure_relay_single_success(&source, &target) - } - - #[test] - fn relay_transaction_proof_waits_for_transaction_to_be_mined() { - let source = TestTransactionsSource::new(Box::new(|source_data| { - assert_eq!(source_data.transaction_block, Ok(None)); - source_data.transaction_block = Ok(Some((test_block_id(), 0))); - })); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - // transaction is not yet mined, but will be available after first wait (tick) - source.data.lock().transaction_block = Ok(None); - - ensure_relay_single_success(&source, &target) - } - - #[test] - fn relay_transaction_fails_when_transaction_retrieval_fails() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - source.data.lock().transaction_block = Err(TestError(false)); - - ensure_relay_single_failure(source, target) - } - - #[test] - fn relay_transaction_fails_when_proof_retrieval_fails() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - source - .data - .lock() - .proofs_to_fail - .insert(test_transaction_hash(0), TestError(false)); - - ensure_relay_single_failure(source, target) - } - - #[test] - fn relay_transaction_proof_waits_for_header_to_be_imported() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|target_data| { - assert_eq!(target_data.is_header_known, Ok(false)); - target_data.is_header_known = Ok(true); - })); - - // header is not yet imported, but will be available after first wait (tick) - target.data.lock().is_header_known = Ok(false); - - ensure_relay_single_success(&source, &target) - } - - #[test] - fn relay_transaction_proof_fails_when_is_header_known_fails() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - target.data.lock().is_header_known = Err(TestError(false)); - - ensure_relay_single_failure(source, target) - } - - #[test] - fn relay_transaction_proof_waits_for_header_to_be_finalized() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|target_data| { - assert_eq!(target_data.is_header_finalized, Ok(false)); - target_data.is_header_finalized = Ok(true); - })); - - // header is not yet finalized, but will be available after first wait (tick) - target.data.lock().is_header_finalized = Ok(false); - - ensure_relay_single_success(&source, &target) - } - - #[test] - fn relay_transaction_proof_fails_when_is_header_finalized_fails() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - target.data.lock().is_header_finalized = Err(TestError(false)); - - ensure_relay_single_failure(source, target) - } - - #[test] - fn relay_transaction_proof_fails_when_target_node_rejects_proof() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - target - .data - .lock() - .transactions_to_accept - .remove(&test_transaction_hash(0)); - - ensure_relay_single_success(&source, &target) - } - - fn test_relay_block_transactions( - source: &TestTransactionsSource, - target: &TestTransactionsTarget, - pre_relayed: RelayedBlockTransactions, - ) -> Result { - async_std::task::block_on(relay_block_transactions( - source, - target, - &TestBlock( - test_block_id(), - vec![test_transaction(0), test_transaction(1), test_transaction(2)], - ), - pre_relayed, - )) - .map_err(|(_, transactions)| transactions) - } - - #[test] - fn relay_block_transactions_process_all_transactions() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - // let's only accept tx#1 - target - .data - .lock() - .transactions_to_accept - .remove(&test_transaction_hash(0)); - target - .data - .lock() - .transactions_to_accept - .insert(test_transaction_hash(1)); - - let relayed_transactions = test_relay_block_transactions(&source, &target, Default::default()); - assert_eq!( - relayed_transactions, - Ok(RelayedBlockTransactions { - processed: 3, - relayed: 1, - failed: 0, - }), - ); - assert_eq!( - target.data.lock().submitted_proofs, - vec![TestTransactionProof(test_transaction_hash(1))], - ); - } - - #[test] - fn relay_block_transactions_ignores_transaction_failure() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - // let's reject proof for tx#0 - source - .data - .lock() - .proofs_to_fail - .insert(test_transaction_hash(0), TestError(false)); - - let relayed_transactions = test_relay_block_transactions(&source, &target, Default::default()); - assert_eq!( - relayed_transactions, - Ok(RelayedBlockTransactions { - processed: 3, - relayed: 0, - failed: 1, - }), - ); - assert_eq!(target.data.lock().submitted_proofs, vec![],); - } - - #[test] - fn relay_block_transactions_fails_on_connection_error() { - let source = TestTransactionsSource::new(Box::new(|_| unreachable!("no ticks allowed"))); - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no ticks allowed"))); - - // fail with connection error when preparing proof for tx#1 - source - .data - .lock() - .proofs_to_fail - .insert(test_transaction_hash(1), TestError(true)); - - let relayed_transactions = test_relay_block_transactions(&source, &target, Default::default()); - assert_eq!( - relayed_transactions, - Err(RelayedBlockTransactions { - processed: 1, - relayed: 1, - failed: 0, - }), - ); - assert_eq!( - target.data.lock().submitted_proofs, - vec![TestTransactionProof(test_transaction_hash(0))], - ); - - // now do not fail on tx#2 - source.data.lock().proofs_to_fail.clear(); - // and also relay tx#3 - target - .data - .lock() - .transactions_to_accept - .insert(test_transaction_hash(2)); - - let relayed_transactions = test_relay_block_transactions(&source, &target, relayed_transactions.unwrap_err()); - assert_eq!( - relayed_transactions, - Ok(RelayedBlockTransactions { - processed: 3, - relayed: 2, - failed: 0, - }), - ); - assert_eq!( - target.data.lock().submitted_proofs, - vec![ - TestTransactionProof(test_transaction_hash(0)), - TestTransactionProof(test_transaction_hash(2)) - ], - ); - } -} diff --git a/bridges/relays/exchange/src/exchange_loop.rs b/bridges/relays/exchange/src/exchange_loop.rs deleted file mode 100644 index 8da4c3f45687..000000000000 --- a/bridges/relays/exchange/src/exchange_loop.rs +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying proofs of exchange transactions. - -use crate::exchange::{ - relay_block_transactions, BlockNumberOf, RelayedBlockTransactions, SourceClient, TargetClient, - TransactionProofPipeline, -}; -use crate::exchange_loop_metrics::ExchangeLoopMetrics; - -use backoff::backoff::Backoff; -use futures::{future::FutureExt, select}; -use num_traits::One; -use relay_utils::{ - metrics::{GlobalMetrics, MetricsParams}, - retry_backoff, FailedClient, MaybeConnectionError, -}; -use std::future::Future; - -/// Transactions proofs relay state. -#[derive(Debug)] -pub struct TransactionProofsRelayState { - /// Number of last header we have processed so far. - pub best_processed_header_number: BlockNumber, -} - -/// Transactions proofs relay storage. -pub trait TransactionProofsRelayStorage: 'static + Clone + Send + Sync { - /// Associated block number. - type BlockNumber: 'static + Send + Sync; - - /// Get relay state. - fn state(&self) -> TransactionProofsRelayState; - /// Update relay state. - fn set_state(&mut self, state: &TransactionProofsRelayState); -} - -/// In-memory storage for auto-relay loop. -#[derive(Debug, Clone)] -pub struct InMemoryStorage { - best_processed_header_number: BlockNumber, -} - -impl InMemoryStorage { - /// Created new in-memory storage with given best processed block number. - pub fn new(best_processed_header_number: BlockNumber) -> Self { - InMemoryStorage { - best_processed_header_number, - } - } -} - -impl TransactionProofsRelayStorage for InMemoryStorage { - type BlockNumber = BlockNumber; - - fn state(&self) -> TransactionProofsRelayState { - TransactionProofsRelayState { - best_processed_header_number: self.best_processed_header_number, - } - } - - fn set_state(&mut self, state: &TransactionProofsRelayState) { - self.best_processed_header_number = state.best_processed_header_number; - } -} - -/// Return prefix that will be used by default to expose Prometheus metrics of the exchange loop. -pub fn metrics_prefix() -> String { - format!("{}_to_{}_Exchange", P::SOURCE_NAME, P::TARGET_NAME) -} - -/// Run proofs synchronization. -pub async fn run( - storage: impl TransactionProofsRelayStorage>, - source_client: impl SourceClient

, - target_client: impl TargetClient

, - metrics_params: MetricsParams, - exit_signal: impl Future + 'static + Send, -) -> Result<(), String> { - let exit_signal = exit_signal.shared(); - - relay_utils::relay_loop(source_client, target_client) - .with_metrics(Some(metrics_prefix::

()), metrics_params) - .loop_metric(|registry, prefix| ExchangeLoopMetrics::new(registry, prefix))? - .standalone_metric(|registry, prefix| GlobalMetrics::new(registry, prefix))? - .expose() - .await? - .run(metrics_prefix::

(), move |source_client, target_client, metrics| { - run_until_connection_lost( - storage.clone(), - source_client, - target_client, - metrics, - exit_signal.clone(), - ) - }) - .await -} - -/// Run proofs synchronization. -async fn run_until_connection_lost( - mut storage: impl TransactionProofsRelayStorage>, - source_client: impl SourceClient

, - target_client: impl TargetClient

, - metrics_exch: Option, - exit_signal: impl Future + Send, -) -> Result<(), FailedClient> { - let mut retry_backoff = retry_backoff(); - let mut state = storage.state(); - let mut current_finalized_block = None; - - let exit_signal = exit_signal.fuse(); - - futures::pin_mut!(exit_signal); - - loop { - let iteration_result = run_loop_iteration( - &mut storage, - &source_client, - &target_client, - &mut state, - &mut current_finalized_block, - metrics_exch.as_ref(), - ) - .await; - - if let Err((is_connection_error, failed_client)) = iteration_result { - if is_connection_error { - return Err(failed_client); - } - - let retry_timeout = retry_backoff - .next_backoff() - .unwrap_or(relay_utils::relay_loop::RECONNECT_DELAY); - select! { - _ = async_std::task::sleep(retry_timeout).fuse() => {}, - _ = exit_signal => return Ok(()), - } - } else { - retry_backoff.reset(); - - select! { - _ = source_client.tick().fuse() => {}, - _ = exit_signal => return Ok(()), - } - } - } -} - -/// Run exchange loop until we need to break. -async fn run_loop_iteration( - storage: &mut impl TransactionProofsRelayStorage>, - source_client: &impl SourceClient

, - target_client: &impl TargetClient

, - state: &mut TransactionProofsRelayState>, - current_finalized_block: &mut Option<(P::Block, RelayedBlockTransactions)>, - exchange_loop_metrics: Option<&ExchangeLoopMetrics>, -) -> Result<(), (bool, FailedClient)> { - let best_finalized_header_id = match target_client.best_finalized_header_id().await { - Ok(best_finalized_header_id) => { - log::debug!( - target: "bridge", - "Got best finalized {} block from {} node: {:?}", - P::SOURCE_NAME, - P::TARGET_NAME, - best_finalized_header_id, - ); - - best_finalized_header_id - } - Err(err) => { - log::error!( - target: "bridge", - "Failed to retrieve best {} header id from {} node: {:?}. Going to retry...", - P::SOURCE_NAME, - P::TARGET_NAME, - err, - ); - - return Err((err.is_connection_error(), FailedClient::Target)); - } - }; - - loop { - // if we already have some finalized block body, try to relay its transactions - if let Some((block, relayed_transactions)) = current_finalized_block.take() { - let result = relay_block_transactions(source_client, target_client, &block, relayed_transactions).await; - - match result { - Ok(relayed_transactions) => { - log::info!( - target: "bridge", - "Relay has processed {} block #{}. Total/Relayed/Failed transactions: {}/{}/{}", - P::SOURCE_NAME, - state.best_processed_header_number, - relayed_transactions.processed, - relayed_transactions.relayed, - relayed_transactions.failed, - ); - - state.best_processed_header_number = state.best_processed_header_number + One::one(); - storage.set_state(state); - - if let Some(exchange_loop_metrics) = exchange_loop_metrics { - exchange_loop_metrics.update::

( - state.best_processed_header_number, - best_finalized_header_id.0, - relayed_transactions, - ); - } - - // we have just updated state => proceed to next block retrieval - } - Err((failed_client, relayed_transactions)) => { - *current_finalized_block = Some((block, relayed_transactions)); - return Err((true, failed_client)); - } - } - } - - // we may need to retrieve finalized block body from source node - if best_finalized_header_id.0 > state.best_processed_header_number { - let next_block_number = state.best_processed_header_number + One::one(); - let result = source_client.block_by_number(next_block_number).await; - - match result { - Ok(block) => { - *current_finalized_block = Some((block, RelayedBlockTransactions::default())); - - // we have received new finalized block => go back to relay its transactions - continue; - } - Err(err) => { - log::error!( - target: "bridge", - "Failed to retrieve canonical block #{} from {} node: {:?}. Going to retry...", - next_block_number, - P::SOURCE_NAME, - err, - ); - - return Err((err.is_connection_error(), FailedClient::Source)); - } - } - } - - // there are no any transactions we need to relay => wait for new data - return Ok(()); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::exchange::tests::{ - test_next_block, test_next_block_id, test_transaction_hash, TestTransactionProof, TestTransactionsSource, - TestTransactionsTarget, - }; - use futures::{future::FutureExt, stream::StreamExt}; - - #[test] - fn exchange_loop_is_able_to_relay_proofs() { - let storage = InMemoryStorage { - best_processed_header_number: 0, - }; - let target = TestTransactionsTarget::new(Box::new(|_| unreachable!("no target ticks allowed"))); - let target_data = target.data.clone(); - let (exit_sender, exit_receiver) = futures::channel::mpsc::unbounded(); - - let source = TestTransactionsSource::new(Box::new(move |data| { - let transaction1_relayed = target_data - .lock() - .submitted_proofs - .contains(&TestTransactionProof(test_transaction_hash(0))); - let transaction2_relayed = target_data - .lock() - .submitted_proofs - .contains(&TestTransactionProof(test_transaction_hash(1))); - match (transaction1_relayed, transaction2_relayed) { - (true, true) => exit_sender.unbounded_send(()).unwrap(), - (true, false) => { - data.block = Ok(test_next_block()); - target_data.lock().best_finalized_header_id = Ok(test_next_block_id()); - target_data - .lock() - .transactions_to_accept - .insert(test_transaction_hash(1)); - } - _ => (), - } - })); - - let _ = async_std::task::block_on(run( - storage, - source, - target, - MetricsParams::disabled(), - exit_receiver.into_future().map(|(_, _)| ()), - )); - } -} diff --git a/bridges/relays/exchange/src/exchange_loop_metrics.rs b/bridges/relays/exchange/src/exchange_loop_metrics.rs deleted file mode 100644 index 82d3e649d431..000000000000 --- a/bridges/relays/exchange/src/exchange_loop_metrics.rs +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Metrics for currency-exchange relay loop. - -use crate::exchange::{BlockNumberOf, RelayedBlockTransactions, TransactionProofPipeline}; -use relay_utils::metrics::{ - metric_name, register, Counter, CounterVec, GaugeVec, Opts, PrometheusError, Registry, U64, -}; - -/// Exchange transactions relay metrics. -#[derive(Clone)] -pub struct ExchangeLoopMetrics { - /// Best finalized block numbers - "processed" and "known". - best_block_numbers: GaugeVec, - /// Number of processed blocks ("total"). - processed_blocks: Counter, - /// Number of processed transactions ("total", "relayed" and "failed"). - processed_transactions: CounterVec, -} - -impl ExchangeLoopMetrics { - /// Create and register exchange loop metrics. - pub fn new(registry: &Registry, prefix: Option<&str>) -> Result { - Ok(ExchangeLoopMetrics { - best_block_numbers: register( - GaugeVec::new( - Opts::new( - metric_name(prefix, "best_block_numbers"), - "Best finalized block numbers", - ), - &["type"], - )?, - registry, - )?, - processed_blocks: register( - Counter::new( - metric_name(prefix, "processed_blocks"), - "Total number of processed blocks", - )?, - registry, - )?, - processed_transactions: register( - CounterVec::new( - Opts::new( - metric_name(prefix, "processed_transactions"), - "Total number of processed transactions", - ), - &["type"], - )?, - registry, - )?, - }) - } -} - -impl ExchangeLoopMetrics { - /// Update metrics when single block is relayed. - pub fn update( - &self, - best_processed_block_number: BlockNumberOf

, - best_known_block_number: BlockNumberOf

, - relayed_transactions: RelayedBlockTransactions, - ) { - self.best_block_numbers - .with_label_values(&["processed"]) - .set(best_processed_block_number.into()); - self.best_block_numbers - .with_label_values(&["known"]) - .set(best_known_block_number.into()); - - self.processed_blocks.inc(); - - self.processed_transactions - .with_label_values(&["total"]) - .inc_by(relayed_transactions.processed as _); - self.processed_transactions - .with_label_values(&["relayed"]) - .inc_by(relayed_transactions.relayed as _); - self.processed_transactions - .with_label_values(&["failed"]) - .inc_by(relayed_transactions.failed as _); - } -} diff --git a/bridges/relays/exchange/src/lib.rs b/bridges/relays/exchange/src/lib.rs deleted file mode 100644 index 370f085b4bf7..000000000000 --- a/bridges/relays/exchange/src/lib.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying [`currency-exchange`](../pallet_bridge_currency_exchange/index.html) application -//! specific data. Currency exchange application allows exchanging tokens between bridged chains. -//! This module provides entrypoints for crafting and submitting (single and multiple) -//! proof-of-exchange-at-source-chain transaction(s) to target chain. - -#![warn(missing_docs)] - -pub mod exchange; -pub mod exchange_loop; -pub mod exchange_loop_metrics; diff --git a/bridges/relays/finality/Cargo.toml b/bridges/relays/finality/Cargo.toml deleted file mode 100644 index 944da9837ffc..000000000000 --- a/bridges/relays/finality/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "finality-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" -description = "Finality proofs relay" - -[dependencies] -async-std = "1.6.5" -async-trait = "0.1.40" -backoff = "0.2" -bp-header-chain = { path = "../../primitives/header-chain" } -futures = "0.3.5" -headers-relay = { path = "../headers" } -log = "0.4.11" -num-traits = "0.2" -relay-utils = { path = "../utils" } - -[dev-dependencies] -parking_lot = "0.11.0" diff --git a/bridges/relays/finality/src/lib.rs b/bridges/relays/finality/src/lib.rs deleted file mode 100644 index 64ec5bed0500..000000000000 --- a/bridges/relays/finality/src/lib.rs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! This crate has single entrypoint to run synchronization loop that is built around finality -//! proofs, as opposed to headers synchronization loop, which is built around headers. The headers -//! are still submitted to the target node, but are treated as auxiliary data as we are not trying -//! to submit all source headers to the target node. - -pub use crate::finality_loop::{metrics_prefix, run, FinalitySyncParams, SourceClient, TargetClient}; - -use bp_header_chain::FinalityProof; -use std::fmt::Debug; - -mod finality_loop; -mod finality_loop_tests; - -/// Finality proofs synchronization pipeline. -pub trait FinalitySyncPipeline: 'static + Clone + Debug + Send + Sync { - /// Name of the finality proofs source. - const SOURCE_NAME: &'static str; - /// Name of the finality proofs target. - const TARGET_NAME: &'static str; - - /// Headers we're syncing are identified by this hash. - type Hash: Eq + Clone + Copy + Send + Sync + Debug; - /// Headers we're syncing are identified by this number. - type Number: relay_utils::BlockNumberBase; - /// Type of header that we're syncing. - type Header: SourceHeader; - /// Finality proof type. - type FinalityProof: FinalityProof; -} - -/// Header that we're receiving from source node. -pub trait SourceHeader: Clone + Debug + PartialEq + Send + Sync { - /// Returns number of header. - fn number(&self) -> Number; - /// Returns true if this header needs to be submitted to target node. - fn is_mandatory(&self) -> bool; -} diff --git a/bridges/relays/headers/Cargo.toml b/bridges/relays/headers/Cargo.toml deleted file mode 100644 index 31d3166a9978..000000000000 --- a/bridges/relays/headers/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "headers-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -async-std = "1.6.5" -async-trait = "0.1.40" -backoff = "0.2" -futures = "0.3.5" -linked-hash-map = "0.5.3" -log = "0.4.11" -num-traits = "0.2" -parking_lot = "0.11.0" -relay-utils = { path = "../utils" } diff --git a/bridges/relays/headers/src/headers.rs b/bridges/relays/headers/src/headers.rs deleted file mode 100644 index 0b948d9da4cc..000000000000 --- a/bridges/relays/headers/src/headers.rs +++ /dev/null @@ -1,1721 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Headers queue - the intermediate buffer that is filled when headers are read -//! from the source chain. Headers are removed from the queue once they become -//! known to the target chain. Inside, there are several sub-queues, where headers -//! may stay until source/target chain state isn't updated. When a header reaches the -//! `ready` sub-queue, it may be submitted to the target chain. - -use crate::sync_types::{HeaderIdOf, HeaderStatus, HeadersSyncPipeline, QueuedHeader, SourceHeader}; - -use linked_hash_map::LinkedHashMap; -use num_traits::{One, Zero}; -use relay_utils::HeaderId; -use std::{ - collections::{btree_map::Entry as BTreeMapEntry, hash_map::Entry as HashMapEntry, BTreeMap, HashMap, HashSet}, - time::{Duration, Instant}, -}; - -type HeadersQueue

= - BTreeMap<

::Number, HashMap<

::Hash, QueuedHeader

>>; -type SyncedChildren

= - BTreeMap<

::Number, HashMap<

::Hash, HashSet>>>; -type KnownHeaders

= - BTreeMap<

::Number, HashMap<

::Hash, HeaderStatus>>; - -/// We're trying to fetch completion data for single header at this interval. -const RETRY_FETCH_COMPLETION_INTERVAL: Duration = Duration::from_secs(20); - -/// Headers queue. -#[derive(Debug)] -pub struct QueuedHeaders { - /// Headers that are received from source node, but we (native sync code) have - /// never seen their parents. So we need to check if we can/should submit this header. - maybe_orphan: HeadersQueue

, - /// Headers that are received from source node, and we (native sync code) have - /// checked that Substrate runtime doesn't know their parents. So we need to submit parents - /// first. - orphan: HeadersQueue

, - /// Headers that are ready to be submitted to target node, but we need to check - /// whether submission requires extra data to be provided. - maybe_extra: HeadersQueue

, - /// Headers that are ready to be submitted to target node, but we need to retrieve - /// extra data first. - extra: HeadersQueue

, - /// Headers that are ready to be submitted to target node. - ready: HeadersQueue

, - /// Headers that are ready to be submitted to target node, but their ancestor is incomplete. - /// Thus we're waiting for these ancestors to be completed first. - /// Note that the incomplete header itself is synced and it isn't in this queue. - incomplete: HeadersQueue

, - /// Headers that are (we believe) currently submitted to target node by our, - /// not-yet mined transactions. - submitted: HeadersQueue

, - /// Synced headers childrens. We need it to support case when header is synced, but some of - /// its parents are incomplete. - synced_children: SyncedChildren

, - /// Pointers to all headers that we ever seen and we believe we can touch in the future. - known_headers: KnownHeaders

, - /// Headers that are waiting for completion data from source node. Mapped (and auto-sorted - /// by) to the last fetch time. - incomplete_headers: LinkedHashMap, Option>, - /// Headers that are waiting to be completed at target node. Auto-sorted by insertion time. - completion_data: LinkedHashMap, P::Completion>, - /// Best synced block number. - best_synced_number: P::Number, - /// Pruned blocks border. We do not store or accept any blocks with number less than - /// this number. - prune_border: P::Number, -} - -/// Header completion data. -#[derive(Debug)] -struct HeaderCompletion { - /// Last time when we tried to upload completion data to target node, if ever. - pub last_upload_time: Option, - /// Completion data. - pub completion: Completion, -} - -impl Default for QueuedHeaders

{ - fn default() -> Self { - QueuedHeaders { - maybe_orphan: HeadersQueue::new(), - orphan: HeadersQueue::new(), - maybe_extra: HeadersQueue::new(), - extra: HeadersQueue::new(), - ready: HeadersQueue::new(), - incomplete: HeadersQueue::new(), - submitted: HeadersQueue::new(), - synced_children: SyncedChildren::

::new(), - known_headers: KnownHeaders::

::new(), - incomplete_headers: LinkedHashMap::new(), - completion_data: LinkedHashMap::new(), - best_synced_number: Zero::zero(), - prune_border: Zero::zero(), - } - } -} - -impl QueuedHeaders

{ - /// Returns prune border. - #[cfg(test)] - pub fn prune_border(&self) -> P::Number { - self.prune_border - } - - /// Returns number of headers that are currently in given queue. - pub fn headers_in_status(&self, status: HeaderStatus) -> usize { - match status { - HeaderStatus::Unknown | HeaderStatus::Synced => 0, - HeaderStatus::MaybeOrphan => self - .maybe_orphan - .values() - .fold(0, |total, headers| total + headers.len()), - HeaderStatus::Orphan => self.orphan.values().fold(0, |total, headers| total + headers.len()), - HeaderStatus::MaybeExtra => self - .maybe_extra - .values() - .fold(0, |total, headers| total + headers.len()), - HeaderStatus::Extra => self.extra.values().fold(0, |total, headers| total + headers.len()), - HeaderStatus::Ready => self.ready.values().fold(0, |total, headers| total + headers.len()), - HeaderStatus::Incomplete => self.incomplete.values().fold(0, |total, headers| total + headers.len()), - HeaderStatus::Submitted => self.submitted.values().fold(0, |total, headers| total + headers.len()), - } - } - - /// Returns number of headers that are currently in the queue. - pub fn total_headers(&self) -> usize { - self.maybe_orphan - .values() - .fold(0, |total, headers| total + headers.len()) - + self.orphan.values().fold(0, |total, headers| total + headers.len()) - + self - .maybe_extra - .values() - .fold(0, |total, headers| total + headers.len()) - + self.extra.values().fold(0, |total, headers| total + headers.len()) - + self.ready.values().fold(0, |total, headers| total + headers.len()) - + self.incomplete.values().fold(0, |total, headers| total + headers.len()) - } - - /// Returns number of best block in the queue. - pub fn best_queued_number(&self) -> P::Number { - std::cmp::max( - self.maybe_orphan.keys().next_back().cloned().unwrap_or_else(Zero::zero), - std::cmp::max( - self.orphan.keys().next_back().cloned().unwrap_or_else(Zero::zero), - std::cmp::max( - self.maybe_extra.keys().next_back().cloned().unwrap_or_else(Zero::zero), - std::cmp::max( - self.extra.keys().next_back().cloned().unwrap_or_else(Zero::zero), - std::cmp::max( - self.ready.keys().next_back().cloned().unwrap_or_else(Zero::zero), - std::cmp::max( - self.incomplete.keys().next_back().cloned().unwrap_or_else(Zero::zero), - self.submitted.keys().next_back().cloned().unwrap_or_else(Zero::zero), - ), - ), - ), - ), - ), - ) - } - - /// Returns number of best synced block we have ever seen. It is either less - /// than `best_queued_number()`, or points to last synced block if queue is empty. - pub fn best_synced_number(&self) -> P::Number { - self.best_synced_number - } - - /// Returns synchronization status of the header. - pub fn status(&self, id: &HeaderIdOf

) -> HeaderStatus { - self.known_headers - .get(&id.0) - .and_then(|x| x.get(&id.1)) - .cloned() - .unwrap_or(HeaderStatus::Unknown) - } - - /// Get oldest header from given queue. - pub fn header(&self, status: HeaderStatus) -> Option<&QueuedHeader

> { - match status { - HeaderStatus::Unknown | HeaderStatus::Synced => None, - HeaderStatus::MaybeOrphan => oldest_header(&self.maybe_orphan), - HeaderStatus::Orphan => oldest_header(&self.orphan), - HeaderStatus::MaybeExtra => oldest_header(&self.maybe_extra), - HeaderStatus::Extra => oldest_header(&self.extra), - HeaderStatus::Ready => oldest_header(&self.ready), - HeaderStatus::Incomplete => oldest_header(&self.incomplete), - HeaderStatus::Submitted => oldest_header(&self.submitted), - } - } - - /// Get oldest headers from given queue until functor will return false. - pub fn headers( - &self, - status: HeaderStatus, - f: impl FnMut(&QueuedHeader

) -> bool, - ) -> Option>> { - match status { - HeaderStatus::Unknown | HeaderStatus::Synced => None, - HeaderStatus::MaybeOrphan => oldest_headers(&self.maybe_orphan, f), - HeaderStatus::Orphan => oldest_headers(&self.orphan, f), - HeaderStatus::MaybeExtra => oldest_headers(&self.maybe_extra, f), - HeaderStatus::Extra => oldest_headers(&self.extra, f), - HeaderStatus::Ready => oldest_headers(&self.ready, f), - HeaderStatus::Incomplete => oldest_headers(&self.incomplete, f), - HeaderStatus::Submitted => oldest_headers(&self.submitted, f), - } - } - - /// Appends new header, received from the source node, to the queue. - pub fn header_response(&mut self, header: P::Header) { - let id = header.id(); - let status = self.status(&id); - if status != HeaderStatus::Unknown { - log::debug!( - target: "bridge", - "Ignoring new {} header: {:?}. Status is {:?}.", - P::SOURCE_NAME, - id, - status, - ); - return; - } - - if id.0 < self.prune_border { - log::debug!( - target: "bridge", - "Ignoring ancient new {} header: {:?}.", - P::SOURCE_NAME, - id, - ); - return; - } - - let parent_id = header.parent_id(); - let parent_status = self.status(&parent_id); - let header = QueuedHeader::new(header); - - let status = match parent_status { - HeaderStatus::Unknown | HeaderStatus::MaybeOrphan => { - insert_header(&mut self.maybe_orphan, id, header); - HeaderStatus::MaybeOrphan - } - HeaderStatus::Orphan => { - insert_header(&mut self.orphan, id, header); - HeaderStatus::Orphan - } - HeaderStatus::MaybeExtra - | HeaderStatus::Extra - | HeaderStatus::Ready - | HeaderStatus::Incomplete - | HeaderStatus::Submitted - | HeaderStatus::Synced => { - insert_header(&mut self.maybe_extra, id, header); - HeaderStatus::MaybeExtra - } - }; - - self.known_headers.entry(id.0).or_default().insert(id.1, status); - log::debug!( - target: "bridge", - "Queueing new {} header: {:?}. Queue: {:?}.", - P::SOURCE_NAME, - id, - status, - ); - } - - /// Receive best header from the target node. - pub fn target_best_header_response(&mut self, id: &HeaderIdOf

) { - self.header_synced(id) - } - - /// Receive target node response for MaybeOrphan request. - pub fn maybe_orphan_response(&mut self, id: &HeaderIdOf

, response: bool) { - if !response { - move_header_descendants::

( - &mut [&mut self.maybe_orphan], - &mut self.orphan, - &mut self.known_headers, - HeaderStatus::Orphan, - id, - ); - return; - } - - move_header_descendants::

( - &mut [&mut self.maybe_orphan, &mut self.orphan], - &mut self.maybe_extra, - &mut self.known_headers, - HeaderStatus::MaybeExtra, - id, - ); - } - - /// Receive target node response for MaybeExtra request. - pub fn maybe_extra_response(&mut self, id: &HeaderIdOf

, response: bool) { - let (destination_status, destination_queue) = if response { - (HeaderStatus::Extra, &mut self.extra) - } else if self.is_parent_incomplete(id) { - (HeaderStatus::Incomplete, &mut self.incomplete) - } else { - (HeaderStatus::Ready, &mut self.ready) - }; - - move_header( - &mut self.maybe_extra, - destination_queue, - &mut self.known_headers, - destination_status, - id, - |header| header, - ); - } - - /// Receive extra from source node. - pub fn extra_response(&mut self, id: &HeaderIdOf

, extra: P::Extra) { - let (destination_status, destination_queue) = if self.is_parent_incomplete(id) { - (HeaderStatus::Incomplete, &mut self.incomplete) - } else { - (HeaderStatus::Ready, &mut self.ready) - }; - - // move header itself from extra to ready queue - move_header( - &mut self.extra, - destination_queue, - &mut self.known_headers, - destination_status, - id, - |header| header.set_extra(extra), - ); - } - - /// Receive completion response from source node. - pub fn completion_response(&mut self, id: &HeaderIdOf

, completion: Option) { - let completion = match completion { - Some(completion) => completion, - None => { - log::debug!( - target: "bridge", - "{} Node is still missing completion data for header: {:?}. Will retry later.", - P::SOURCE_NAME, - id, - ); - - return; - } - }; - - // do not remove from `incomplete_headers` here, because otherwise we'll miss - // completion 'notification' - // this could lead to duplicate completion retrieval (if completion transaction isn't mined - // for too long) - // - // instead, we're moving entry to the end of the queue, so that completion data won't be - // refetched instantly - if self.incomplete_headers.remove(id).is_some() { - log::debug!( - target: "bridge", - "Received completion data from {} for header: {:?}", - P::SOURCE_NAME, - id, - ); - - self.completion_data.insert(*id, completion); - self.incomplete_headers.insert(*id, Some(Instant::now())); - } - } - - /// When header is submitted to target node. - pub fn headers_submitted(&mut self, ids: Vec>) { - for id in ids { - move_header( - &mut self.ready, - &mut self.submitted, - &mut self.known_headers, - HeaderStatus::Submitted, - &id, - |header| header, - ); - } - } - - /// When header completion data is sent to target node. - pub fn header_completed(&mut self, id: &HeaderIdOf

) { - if self.completion_data.remove(id).is_some() { - log::debug!( - target: "bridge", - "Sent completion data to {} for header: {:?}", - P::TARGET_NAME, - id, - ); - - // transaction can be dropped by target chain nodes => it would never be mined - // - // in current implementation the sync loop would wait for some time && if best - // **source** header won't change on **target** node, then the sync will be restarted - // => we'll resubmit the same completion data again (the same is true for submitted - // headers) - // - // the other option would be to track emitted transactions at least on target node, - // but it won't give us 100% guarantee anyway - // - // => we're just dropping completion data just after it has been submitted - } - } - - /// Marks given headers incomplete. - pub fn add_incomplete_headers(&mut self, make_header_incomplete: bool, new_incomplete_headers: Vec>) { - for new_incomplete_header in new_incomplete_headers { - if make_header_incomplete { - self.header_synced(&new_incomplete_header); - } - - let move_origins = select_synced_children::

(&self.synced_children, &new_incomplete_header); - let move_origins = move_origins.into_iter().chain(std::iter::once(new_incomplete_header)); - for move_origin in move_origins { - move_header_descendants::

( - &mut [&mut self.ready, &mut self.submitted], - &mut self.incomplete, - &mut self.known_headers, - HeaderStatus::Incomplete, - &move_origin, - ); - } - - if make_header_incomplete { - log::debug!( - target: "bridge", - "Scheduling completion data retrieval for header: {:?}", - new_incomplete_header, - ); - - self.incomplete_headers.insert(new_incomplete_header, None); - } - } - } - - /// When incomplete headers ids are receved from target node. - pub fn incomplete_headers_response(&mut self, ids: HashSet>) { - // all new incomplete headers are marked Synced and all their descendants - // are moved from Ready/Submitted to Incomplete queue - let new_incomplete_headers = ids - .iter() - .filter(|id| !self.incomplete_headers.contains_key(id) && !self.completion_data.contains_key(id)) - .cloned() - .collect::>(); - self.add_incomplete_headers(true, new_incomplete_headers); - - // for all headers that were incompleted previously, but now are completed, we move - // all descendants from incomplete to ready - let just_completed_headers = self - .incomplete_headers - .keys() - .chain(self.completion_data.keys()) - .filter(|id| !ids.contains(id)) - .cloned() - .collect::>(); - for just_completed_header in just_completed_headers { - // sub2eth rejects H if H.Parent is incomplete - // sub2sub allows 'syncing' headers like that - // => let's check if there are some synced children of just completed header - let move_origins = select_synced_children::

(&self.synced_children, &just_completed_header); - let move_origins = move_origins.into_iter().chain(std::iter::once(just_completed_header)); - for move_origin in move_origins { - move_header_descendants::

( - &mut [&mut self.incomplete], - &mut self.ready, - &mut self.known_headers, - HeaderStatus::Ready, - &move_origin, - ); - } - - log::debug!( - target: "bridge", - "Completion data is no longer required for header: {:?}", - just_completed_header, - ); - - self.incomplete_headers.remove(&just_completed_header); - self.completion_data.remove(&just_completed_header); - } - } - - /// Returns true if given header requires completion data. - pub fn requires_completion_data(&self, id: &HeaderIdOf

) -> bool { - self.incomplete_headers.contains_key(id) - } - - /// Returns id of the header for which we want to fetch completion data. - pub fn incomplete_header(&mut self) -> Option> { - queued_incomplete_header(&mut self.incomplete_headers, |last_fetch_time| { - let retry = match *last_fetch_time { - Some(last_fetch_time) => last_fetch_time.elapsed() > RETRY_FETCH_COMPLETION_INTERVAL, - None => true, - }; - - if retry { - *last_fetch_time = Some(Instant::now()); - } - - retry - }) - .map(|(id, _)| id) - } - - /// Returns header completion data to upload to target node. - pub fn header_to_complete(&mut self) -> Option<(HeaderIdOf

, &P::Completion)> { - queued_incomplete_header(&mut self.completion_data, |_| true) - } - - /// Prune and never accept headers before this block. - pub fn prune(&mut self, prune_border: P::Number) { - if prune_border <= self.prune_border { - return; - } - - prune_queue(&mut self.maybe_orphan, prune_border); - prune_queue(&mut self.orphan, prune_border); - prune_queue(&mut self.maybe_extra, prune_border); - prune_queue(&mut self.extra, prune_border); - prune_queue(&mut self.ready, prune_border); - prune_queue(&mut self.submitted, prune_border); - prune_queue(&mut self.incomplete, prune_border); - self.synced_children = self.synced_children.split_off(&prune_border); - prune_known_headers::

(&mut self.known_headers, prune_border); - self.prune_border = prune_border; - } - - /// Forgets all ever known headers. - pub fn clear(&mut self) { - self.maybe_orphan.clear(); - self.orphan.clear(); - self.maybe_extra.clear(); - self.extra.clear(); - self.ready.clear(); - self.incomplete.clear(); - self.submitted.clear(); - self.synced_children.clear(); - self.known_headers.clear(); - self.best_synced_number = Zero::zero(); - self.prune_border = Zero::zero(); - } - - /// Returns true if parent of this header is either incomplete or waiting for - /// its own incomplete ancestor to be completed. - fn is_parent_incomplete(&self, id: &HeaderIdOf

) -> bool { - let status = self.status(id); - let header = match status { - HeaderStatus::MaybeOrphan => header(&self.maybe_orphan, id), - HeaderStatus::Orphan => header(&self.orphan, id), - HeaderStatus::MaybeExtra => header(&self.maybe_extra, id), - HeaderStatus::Extra => header(&self.extra, id), - HeaderStatus::Ready => header(&self.ready, id), - HeaderStatus::Incomplete => header(&self.incomplete, id), - HeaderStatus::Submitted => header(&self.submitted, id), - HeaderStatus::Unknown => return false, - HeaderStatus::Synced => return false, - }; - - match header { - Some(header) => { - let parent_id = header.header().parent_id(); - self.incomplete_headers.contains_key(&parent_id) - || self.completion_data.contains_key(&parent_id) - || self.status(&parent_id) == HeaderStatus::Incomplete - } - None => false, - } - } - - /// When we receive new Synced header from target node. - fn header_synced(&mut self, id: &HeaderIdOf

) { - // update best synced block number - self.best_synced_number = std::cmp::max(self.best_synced_number, id.0); - - // all ancestors of this header are now synced => let's remove them from - // queues - let mut current = *id; - let mut id_processed = false; - let mut previous_current = None; - loop { - let header = match self.status(¤t) { - HeaderStatus::Unknown => break, - HeaderStatus::MaybeOrphan => remove_header(&mut self.maybe_orphan, ¤t), - HeaderStatus::Orphan => remove_header(&mut self.orphan, ¤t), - HeaderStatus::MaybeExtra => remove_header(&mut self.maybe_extra, ¤t), - HeaderStatus::Extra => remove_header(&mut self.extra, ¤t), - HeaderStatus::Ready => remove_header(&mut self.ready, ¤t), - HeaderStatus::Incomplete => remove_header(&mut self.incomplete, ¤t), - HeaderStatus::Submitted => remove_header(&mut self.submitted, ¤t), - HeaderStatus::Synced => break, - } - .expect("header has a given status; given queue has the header; qed"); - - // remember ids of all the children of the current header - let synced_children_entry = self - .synced_children - .entry(current.0) - .or_default() - .entry(current.1) - .or_default(); - let all_queues = [ - &self.maybe_orphan, - &self.orphan, - &self.maybe_extra, - &self.extra, - &self.ready, - &self.incomplete, - &self.submitted, - ]; - for queue in &all_queues { - let children_from_queue = queue - .get(&(current.0 + One::one())) - .map(|potential_children| { - potential_children - .values() - .filter(|potential_child| potential_child.header().parent_id() == current) - .map(|child| child.id()) - .collect::>() - }) - .unwrap_or_default(); - synced_children_entry.extend(children_from_queue); - } - if let Some(previous_current) = previous_current { - synced_children_entry.insert(previous_current); - } - - set_header_status::

(&mut self.known_headers, ¤t, HeaderStatus::Synced); - - previous_current = Some(current); - current = header.parent_id(); - id_processed = true; - } - - // remember that the header itself is synced - // (condition is here to avoid duplicate log messages) - if !id_processed { - set_header_status::

(&mut self.known_headers, id, HeaderStatus::Synced); - } - - // now let's move all descendants from maybe_orphan && orphan queues to - // maybe_extra queue - move_header_descendants::

( - &mut [&mut self.maybe_orphan, &mut self.orphan], - &mut self.maybe_extra, - &mut self.known_headers, - HeaderStatus::MaybeExtra, - id, - ); - } -} - -/// Insert header to the queue. -fn insert_header(queue: &mut HeadersQueue

, id: HeaderIdOf

, header: QueuedHeader

) { - queue.entry(id.0).or_default().insert(id.1, header); -} - -/// Remove header from the queue. -fn remove_header(queue: &mut HeadersQueue

, id: &HeaderIdOf

) -> Option> { - let mut headers_at = match queue.entry(id.0) { - BTreeMapEntry::Occupied(headers_at) => headers_at, - BTreeMapEntry::Vacant(_) => return None, - }; - - let header = headers_at.get_mut().remove(&id.1); - if headers_at.get().is_empty() { - headers_at.remove(); - } - header -} - -/// Get header from the queue. -fn header<'a, P: HeadersSyncPipeline>(queue: &'a HeadersQueue

, id: &HeaderIdOf

) -> Option<&'a QueuedHeader

> { - queue.get(&id.0).and_then(|by_hash| by_hash.get(&id.1)) -} - -/// Move header from source to destination queue. -/// -/// Returns ID of parent header, if header has been moved, or None otherwise. -fn move_header( - source_queue: &mut HeadersQueue

, - destination_queue: &mut HeadersQueue

, - known_headers: &mut KnownHeaders

, - destination_status: HeaderStatus, - id: &HeaderIdOf

, - prepare: impl FnOnce(QueuedHeader

) -> QueuedHeader

, -) -> Option> { - let header = match remove_header(source_queue, id) { - Some(header) => prepare(header), - None => return None, - }; - - let parent_id = header.header().parent_id(); - destination_queue.entry(id.0).or_default().insert(id.1, header); - set_header_status::

(known_headers, id, destination_status); - - Some(parent_id) -} - -/// Move all descendant headers from the source to destination queue. -fn move_header_descendants( - source_queues: &mut [&mut HeadersQueue

], - destination_queue: &mut HeadersQueue

, - known_headers: &mut KnownHeaders

, - destination_status: HeaderStatus, - id: &HeaderIdOf

, -) { - let mut current_number = id.0 + One::one(); - let mut current_parents = HashSet::new(); - current_parents.insert(id.1); - - while !current_parents.is_empty() { - let mut next_parents = HashSet::new(); - for source_queue in source_queues.iter_mut() { - let mut source_entry = match source_queue.entry(current_number) { - BTreeMapEntry::Occupied(source_entry) => source_entry, - BTreeMapEntry::Vacant(_) => continue, - }; - - let mut headers_to_move = Vec::new(); - let children_at_number = source_entry.get().keys().cloned().collect::>(); - for key in children_at_number { - let entry = match source_entry.get_mut().entry(key) { - HashMapEntry::Occupied(entry) => entry, - HashMapEntry::Vacant(_) => unreachable!("iterating existing keys; qed"), - }; - - if current_parents.contains(&entry.get().header().parent_id().1) { - let header_to_move = entry.remove(); - let header_to_move_id = header_to_move.id(); - headers_to_move.push((header_to_move_id, header_to_move)); - set_header_status::

(known_headers, &header_to_move_id, destination_status); - } - } - - if source_entry.get().is_empty() { - source_entry.remove(); - } - - next_parents.extend(headers_to_move.iter().map(|(id, _)| id.1)); - - destination_queue - .entry(current_number) - .or_default() - .extend(headers_to_move.into_iter().map(|(id, h)| (id.1, h))) - } - - current_number = current_number + One::one(); - std::mem::swap(&mut current_parents, &mut next_parents); - } -} - -/// Selects (recursive) all synced children of given header. -fn select_synced_children( - synced_children: &SyncedChildren

, - id: &HeaderIdOf

, -) -> Vec> { - let mut result = Vec::new(); - let mut current_parents = HashSet::new(); - current_parents.insert(*id); - - while !current_parents.is_empty() { - let mut next_parents = HashSet::new(); - for current_parent in ¤t_parents { - let current_parent_synced_children = synced_children - .get(¤t_parent.0) - .and_then(|by_number_entry| by_number_entry.get(¤t_parent.1)); - if let Some(current_parent_synced_children) = current_parent_synced_children { - for current_parent_synced_child in current_parent_synced_children { - result.push(*current_parent_synced_child); - next_parents.insert(*current_parent_synced_child); - } - } - } - - let _ = std::mem::replace(&mut current_parents, next_parents); - } - - result -} - -/// Return oldest header from the queue. -fn oldest_header(queue: &HeadersQueue

) -> Option<&QueuedHeader

> { - queue.values().flat_map(|h| h.values()).next() -} - -/// Return oldest headers from the queue until functor will return false. -fn oldest_headers( - queue: &HeadersQueue

, - mut f: impl FnMut(&QueuedHeader

) -> bool, -) -> Option>> { - let result = queue - .values() - .flat_map(|h| h.values()) - .take_while(|h| f(h)) - .collect::>(); - if result.is_empty() { - None - } else { - Some(result) - } -} - -/// Forget all headers with number less than given. -fn prune_queue(queue: &mut HeadersQueue

, prune_border: P::Number) { - *queue = queue.split_off(&prune_border); -} - -/// Forget all known headers with number less than given. -fn prune_known_headers(known_headers: &mut KnownHeaders

, prune_border: P::Number) { - let new_known_headers = known_headers.split_off(&prune_border); - for (pruned_number, pruned_headers) in &*known_headers { - for pruned_hash in pruned_headers.keys() { - log::debug!(target: "bridge", "Pruning header {:?}.", HeaderId(*pruned_number, *pruned_hash)); - } - } - *known_headers = new_known_headers; -} - -/// Change header status. -fn set_header_status( - known_headers: &mut KnownHeaders

, - id: &HeaderIdOf

, - status: HeaderStatus, -) { - log::debug!( - target: "bridge", - "{} header {:?} is now {:?}", - P::SOURCE_NAME, - id, - status, - ); - *known_headers.entry(id.0).or_default().entry(id.1).or_insert(status) = status; -} - -/// Returns queued incomplete header with maximal elapsed time since last update. -fn queued_incomplete_header( - map: &mut LinkedHashMap, - filter: impl FnMut(&mut T) -> bool, -) -> Option<(Id, &T)> { - // TODO (#84): headers that have been just appended to the end of the queue would have to wait until - // all previous headers will be retried - - let retry_old_header = map - .front() - .map(|(key, _)| key.clone()) - .and_then(|key| map.get_mut(&key).map(filter)) - .unwrap_or(false); - if retry_old_header { - let (header_key, header) = map.pop_front().expect("we have checked that front() exists; qed"); - map.insert(header_key, header); - return map.back().map(|(id, data)| (id.clone(), data)); - } - - None -} - -#[cfg(test)] -pub(crate) mod tests { - use super::*; - use crate::sync_loop_tests::{TestHash, TestHeader, TestHeaderId, TestHeadersSyncPipeline, TestNumber}; - use crate::sync_types::QueuedHeader; - - pub(crate) fn header(number: TestNumber) -> QueuedHeader { - QueuedHeader::new(TestHeader { - number, - hash: hash(number), - parent_hash: hash(number - 1), - }) - } - - pub(crate) fn hash(number: TestNumber) -> TestHash { - number - } - - pub(crate) fn id(number: TestNumber) -> TestHeaderId { - HeaderId(number, hash(number)) - } - - #[test] - fn total_headers_works() { - // total headers just sums up number of headers in every queue - let mut queue = QueuedHeaders::::default(); - queue.maybe_orphan.entry(1).or_default().insert( - hash(1), - QueuedHeader::::new(Default::default()), - ); - queue.maybe_orphan.entry(1).or_default().insert( - hash(2), - QueuedHeader::::new(Default::default()), - ); - queue.maybe_orphan.entry(2).or_default().insert( - hash(3), - QueuedHeader::::new(Default::default()), - ); - queue.orphan.entry(3).or_default().insert( - hash(4), - QueuedHeader::::new(Default::default()), - ); - queue.maybe_extra.entry(4).or_default().insert( - hash(5), - QueuedHeader::::new(Default::default()), - ); - queue.ready.entry(5).or_default().insert( - hash(6), - QueuedHeader::::new(Default::default()), - ); - queue.incomplete.entry(6).or_default().insert( - hash(7), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.total_headers(), 7); - } - - #[test] - fn best_queued_number_works() { - // initially there are headers in MaybeOrphan queue only - let mut queue = QueuedHeaders::::default(); - queue.maybe_orphan.entry(1).or_default().insert( - hash(1), - QueuedHeader::::new(Default::default()), - ); - queue.maybe_orphan.entry(1).or_default().insert( - hash(2), - QueuedHeader::::new(Default::default()), - ); - queue.maybe_orphan.entry(3).or_default().insert( - hash(3), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 3); - // and then there's better header in Orphan - queue.orphan.entry(10).or_default().insert( - hash(10), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 10); - // and then there's better header in MaybeExtra - queue.maybe_extra.entry(20).or_default().insert( - hash(20), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 20); - // and then there's better header in Ready - queue.ready.entry(30).or_default().insert( - hash(30), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 30); - // and then there's better header in MaybeOrphan again - queue.maybe_orphan.entry(40).or_default().insert( - hash(40), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 40); - // and then there's some header in Incomplete - queue.incomplete.entry(50).or_default().insert( - hash(50), - QueuedHeader::::new(Default::default()), - ); - assert_eq!(queue.best_queued_number(), 50); - } - - #[test] - fn status_works() { - // all headers are unknown initially - let mut queue = QueuedHeaders::::default(); - assert_eq!(queue.status(&id(10)), HeaderStatus::Unknown); - // and status is read from the KnownHeaders - queue - .known_headers - .entry(10) - .or_default() - .insert(hash(10), HeaderStatus::Ready); - assert_eq!(queue.status(&id(10)), HeaderStatus::Ready); - } - - #[test] - fn header_works() { - // initially we have oldest header #10 - let mut queue = QueuedHeaders::::default(); - queue.maybe_orphan.entry(10).or_default().insert(hash(1), header(100)); - assert_eq!( - queue.header(HeaderStatus::MaybeOrphan).unwrap().header().hash, - hash(100) - ); - // inserting #20 changes nothing - queue.maybe_orphan.entry(20).or_default().insert(hash(1), header(101)); - assert_eq!( - queue.header(HeaderStatus::MaybeOrphan).unwrap().header().hash, - hash(100) - ); - // inserting #5 makes it oldest - queue.maybe_orphan.entry(5).or_default().insert(hash(1), header(102)); - assert_eq!( - queue.header(HeaderStatus::MaybeOrphan).unwrap().header().hash, - hash(102) - ); - } - - #[test] - fn header_response_works() { - // when parent is Synced, we insert to MaybeExtra - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Synced); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeExtra); - - // when parent is Ready, we insert to MaybeExtra - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Ready); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeExtra); - - // when parent is Receipts, we insert to MaybeExtra - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Extra); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeExtra); - - // when parent is MaybeExtra, we insert to MaybeExtra - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeExtra); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeExtra); - - // when parent is Orphan, we insert to Orphan - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Orphan); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::Orphan); - - // when parent is MaybeOrphan, we insert to MaybeOrphan - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeOrphan); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeOrphan); - - // when parent is unknown, we insert to MaybeOrphan - let mut queue = QueuedHeaders::::default(); - queue.header_response(header(101).header().clone()); - assert_eq!(queue.status(&id(101)), HeaderStatus::MaybeOrphan); - } - - #[test] - fn ancestors_are_synced_on_substrate_best_header_response() { - // let's say someone else has submitted transaction to bridge that changes - // its best block to #100. At this time we have: - // #100 in MaybeOrphan - // #99 in Orphan - // #98 in MaybeExtra - // #97 in Receipts - // #96 in Ready - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(100) - .or_default() - .insert(hash(100), header(100)); - queue - .known_headers - .entry(99) - .or_default() - .insert(hash(99), HeaderStatus::Orphan); - queue.orphan.entry(99).or_default().insert(hash(99), header(99)); - queue - .known_headers - .entry(98) - .or_default() - .insert(hash(98), HeaderStatus::MaybeExtra); - queue.maybe_extra.entry(98).or_default().insert(hash(98), header(98)); - queue - .known_headers - .entry(97) - .or_default() - .insert(hash(97), HeaderStatus::Extra); - queue.extra.entry(97).or_default().insert(hash(97), header(97)); - queue - .known_headers - .entry(96) - .or_default() - .insert(hash(96), HeaderStatus::Ready); - queue.ready.entry(96).or_default().insert(hash(96), header(96)); - queue.target_best_header_response(&id(100)); - - // then the #100 and all ancestors of #100 (#96..#99) are treated as synced - assert!(queue.maybe_orphan.is_empty()); - assert!(queue.orphan.is_empty()); - assert!(queue.maybe_extra.is_empty()); - assert!(queue.extra.is_empty()); - assert!(queue.ready.is_empty()); - assert_eq!(queue.known_headers.len(), 5); - assert!(queue - .known_headers - .values() - .all(|s| s.values().all(|s| *s == HeaderStatus::Synced))); - - // children of synced headers are stored - assert_eq!( - vec![id(97)], - queue.synced_children[&96][&hash(96)] - .iter() - .cloned() - .collect::>() - ); - assert_eq!( - vec![id(98)], - queue.synced_children[&97][&hash(97)] - .iter() - .cloned() - .collect::>() - ); - assert_eq!( - vec![id(99)], - queue.synced_children[&98][&hash(98)] - .iter() - .cloned() - .collect::>() - ); - assert_eq!( - vec![id(100)], - queue.synced_children[&99][&hash(99)] - .iter() - .cloned() - .collect::>() - ); - assert_eq!(0, queue.synced_children[&100][&hash(100)].len()); - } - - #[test] - fn descendants_are_moved_on_substrate_best_header_response() { - // let's say someone else has submitted transaction to bridge that changes - // its best block to #100. At this time we have: - // #101 in Orphan - // #102 in MaybeOrphan - // #103 in Orphan - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Orphan); - queue.orphan.entry(101).or_default().insert(hash(101), header(101)); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(102) - .or_default() - .insert(hash(102), header(102)); - queue - .known_headers - .entry(103) - .or_default() - .insert(hash(103), HeaderStatus::Orphan); - queue.orphan.entry(103).or_default().insert(hash(103), header(103)); - queue.target_best_header_response(&id(100)); - - // all descendants are moved to MaybeExtra - assert!(queue.maybe_orphan.is_empty()); - assert!(queue.orphan.is_empty()); - assert_eq!(queue.maybe_extra.len(), 3); - assert_eq!(queue.known_headers[&101][&hash(101)], HeaderStatus::MaybeExtra); - assert_eq!(queue.known_headers[&102][&hash(102)], HeaderStatus::MaybeExtra); - assert_eq!(queue.known_headers[&103][&hash(103)], HeaderStatus::MaybeExtra); - } - - #[test] - fn positive_maybe_orphan_response_works() { - // let's say we have: - // #100 in MaybeOrphan - // #101 in Orphan - // #102 in MaybeOrphan - // and we have asked for MaybeOrphan status of #100.parent (i.e. #99) - // and the response is: YES, #99 is known to the Substrate runtime - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(100) - .or_default() - .insert(hash(100), header(100)); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Orphan); - queue.orphan.entry(101).or_default().insert(hash(101), header(101)); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(102) - .or_default() - .insert(hash(102), header(102)); - queue.maybe_orphan_response(&id(99), true); - - // then all headers (#100..#103) are moved to the MaybeExtra queue - assert!(queue.orphan.is_empty()); - assert!(queue.maybe_orphan.is_empty()); - assert_eq!(queue.maybe_extra.len(), 3); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::MaybeExtra); - assert_eq!(queue.known_headers[&101][&hash(101)], HeaderStatus::MaybeExtra); - assert_eq!(queue.known_headers[&102][&hash(102)], HeaderStatus::MaybeExtra); - } - - #[test] - fn negative_maybe_orphan_response_works() { - // let's say we have: - // #100 in MaybeOrphan - // #101 in MaybeOrphan - // and we have asked for MaybeOrphan status of #100.parent (i.e. #99) - // and the response is: NO, #99 is NOT known to the Substrate runtime - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(100) - .or_default() - .insert(hash(100), header(100)); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(101) - .or_default() - .insert(hash(101), header(101)); - queue.maybe_orphan_response(&id(99), false); - - // then all headers (#100..#101) are moved to the Orphan queue - assert!(queue.maybe_orphan.is_empty()); - assert_eq!(queue.orphan.len(), 2); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::Orphan); - assert_eq!(queue.known_headers[&101][&hash(101)], HeaderStatus::Orphan); - } - - #[test] - fn positive_maybe_extra_response_works() { - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeExtra); - queue.maybe_extra.entry(100).or_default().insert(hash(100), header(100)); - queue.maybe_extra_response(&id(100), true); - assert!(queue.maybe_extra.is_empty()); - assert_eq!(queue.extra.len(), 1); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::Extra); - } - - #[test] - fn negative_maybe_extra_response_works() { - // when parent header is complete - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::MaybeExtra); - queue.maybe_extra.entry(100).or_default().insert(hash(100), header(100)); - queue.maybe_extra_response(&id(100), false); - assert!(queue.maybe_extra.is_empty()); - assert_eq!(queue.ready.len(), 1); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::Ready); - - // when parent header is incomplete - queue.incomplete_headers.insert(id(200), None); - queue - .known_headers - .entry(201) - .or_default() - .insert(hash(201), HeaderStatus::MaybeExtra); - queue.maybe_extra.entry(201).or_default().insert(hash(201), header(201)); - queue.maybe_extra_response(&id(201), false); - assert!(queue.maybe_extra.is_empty()); - assert_eq!(queue.incomplete.len(), 1); - assert_eq!(queue.known_headers[&201][&hash(201)], HeaderStatus::Incomplete); - } - - #[test] - fn receipts_response_works() { - // when parent header is complete - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Extra); - queue.extra.entry(100).or_default().insert(hash(100), header(100)); - queue.extra_response(&id(100), 100_100); - assert!(queue.extra.is_empty()); - assert_eq!(queue.ready.len(), 1); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::Ready); - - // when parent header is incomplete - queue.incomplete_headers.insert(id(200), None); - queue - .known_headers - .entry(201) - .or_default() - .insert(hash(201), HeaderStatus::Extra); - queue.extra.entry(201).or_default().insert(hash(201), header(201)); - queue.extra_response(&id(201), 201_201); - assert!(queue.extra.is_empty()); - assert_eq!(queue.incomplete.len(), 1); - assert_eq!(queue.known_headers[&201][&hash(201)], HeaderStatus::Incomplete); - } - - #[test] - fn header_submitted_works() { - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Ready); - queue.ready.entry(100).or_default().insert(hash(100), header(100)); - queue.headers_submitted(vec![id(100)]); - assert!(queue.ready.is_empty()); - assert_eq!(queue.known_headers[&100][&hash(100)], HeaderStatus::Submitted); - } - - #[test] - fn incomplete_header_works() { - let mut queue = QueuedHeaders::::default(); - - // nothing to complete if queue is empty - assert_eq!(queue.incomplete_header(), None); - - // when there's new header to complete => ask for completion data - queue.incomplete_headers.insert(id(100), None); - assert_eq!(queue.incomplete_header(), Some(id(100))); - - // we have just asked for completion data => nothing to request - assert_eq!(queue.incomplete_header(), None); - - // enough time have passed => ask again - queue.incomplete_headers.clear(); - queue.incomplete_headers.insert( - id(100), - Some(Instant::now() - RETRY_FETCH_COMPLETION_INTERVAL - RETRY_FETCH_COMPLETION_INTERVAL), - ); - assert_eq!(queue.incomplete_header(), Some(id(100))); - } - - #[test] - fn completion_response_works() { - let mut queue = QueuedHeaders::::default(); - queue.incomplete_headers.insert(id(100), None); - queue.incomplete_headers.insert(id(200), Some(Instant::now())); - queue.incomplete_headers.insert(id(300), Some(Instant::now())); - - // when header isn't incompete, nothing changes - queue.completion_response(&id(400), None); - assert_eq!(queue.incomplete_headers.len(), 3); - assert_eq!(queue.completion_data.len(), 0); - assert_eq!(queue.header_to_complete(), None); - - // when response is None, nothing changes - queue.completion_response(&id(100), None); - assert_eq!(queue.incomplete_headers.len(), 3); - assert_eq!(queue.completion_data.len(), 0); - assert_eq!(queue.header_to_complete(), None); - - // when response is Some, we're scheduling completion - queue.completion_response(&id(200), Some(200_200)); - assert_eq!(queue.completion_data.len(), 1); - assert!(queue.completion_data.contains_key(&id(200))); - assert_eq!(queue.header_to_complete(), Some((id(200), &200_200))); - assert_eq!( - queue.incomplete_headers.keys().collect::>(), - vec![&id(100), &id(300), &id(200)], - ); - } - - #[test] - fn header_completed_works() { - let mut queue = QueuedHeaders::::default(); - queue.completion_data.insert(id(100), 100_100); - - // when unknown header is completed - queue.header_completed(&id(200)); - assert_eq!(queue.completion_data.len(), 1); - - // when known header is completed - queue.header_completed(&id(100)); - assert_eq!(queue.completion_data.len(), 0); - } - - #[test] - fn incomplete_headers_response_works() { - let mut queue = QueuedHeaders::::default(); - - // when we have already submitted #101 and #102 is ready - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Submitted); - queue.submitted.entry(101).or_default().insert(hash(101), header(101)); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::Ready); - queue.submitted.entry(102).or_default().insert(hash(102), header(102)); - - // AND now we know that the #100 is incomplete - queue.incomplete_headers_response(vec![id(100)].into_iter().collect()); - - // => #101 and #102 are moved to the Incomplete and #100 is now synced - assert_eq!(queue.status(&id(100)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(101)), HeaderStatus::Incomplete); - assert_eq!(queue.status(&id(102)), HeaderStatus::Incomplete); - assert_eq!(queue.submitted.len(), 0); - assert_eq!(queue.ready.len(), 0); - assert!(queue.incomplete.entry(101).or_default().contains_key(&hash(101))); - assert!(queue.incomplete.entry(102).or_default().contains_key(&hash(102))); - assert!(queue.incomplete_headers.contains_key(&id(100))); - assert!(queue.completion_data.is_empty()); - - // and then header #100 is no longer incomplete - queue.incomplete_headers_response(vec![].into_iter().collect()); - - // => #101 and #102 are moved to the Ready queue and #100 if now forgotten - assert_eq!(queue.status(&id(100)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(101)), HeaderStatus::Ready); - assert_eq!(queue.status(&id(102)), HeaderStatus::Ready); - assert_eq!(queue.incomplete.len(), 0); - assert_eq!(queue.submitted.len(), 0); - assert!(queue.ready.entry(101).or_default().contains_key(&hash(101))); - assert!(queue.ready.entry(102).or_default().contains_key(&hash(102))); - assert!(queue.incomplete_headers.is_empty()); - assert!(queue.completion_data.is_empty()); - } - - #[test] - fn is_parent_incomplete_works() { - let mut queue = QueuedHeaders::::default(); - - // when we do not know header itself - assert!(!queue.is_parent_incomplete(&id(50))); - - // when we do not know parent - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Incomplete); - queue.incomplete.entry(100).or_default().insert(hash(100), header(100)); - assert!(!queue.is_parent_incomplete(&id(100))); - - // when parent is inside incomplete queue (i.e. some other ancestor is actually incomplete) - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Submitted); - queue.submitted.entry(101).or_default().insert(hash(101), header(101)); - assert!(queue.is_parent_incomplete(&id(101))); - - // when parent is the incomplete header and we do not have completion data - queue.incomplete_headers.insert(id(199), None); - queue - .known_headers - .entry(200) - .or_default() - .insert(hash(200), HeaderStatus::Submitted); - queue.submitted.entry(200).or_default().insert(hash(200), header(200)); - assert!(queue.is_parent_incomplete(&id(200))); - - // when parent is the incomplete header and we have completion data - queue.completion_data.insert(id(299), 299_299); - queue - .known_headers - .entry(300) - .or_default() - .insert(hash(300), HeaderStatus::Submitted); - queue.submitted.entry(300).or_default().insert(hash(300), header(300)); - assert!(queue.is_parent_incomplete(&id(300))); - } - - #[test] - fn prune_works() { - let mut queue = QueuedHeaders::::default(); - queue - .known_headers - .entry(105) - .or_default() - .insert(hash(105), HeaderStatus::Incomplete); - queue.incomplete.entry(105).or_default().insert(hash(105), header(105)); - queue - .known_headers - .entry(104) - .or_default() - .insert(hash(104), HeaderStatus::MaybeOrphan); - queue - .maybe_orphan - .entry(104) - .or_default() - .insert(hash(104), header(104)); - queue - .known_headers - .entry(103) - .or_default() - .insert(hash(103), HeaderStatus::Orphan); - queue.orphan.entry(103).or_default().insert(hash(103), header(103)); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::MaybeExtra); - queue.maybe_extra.entry(102).or_default().insert(hash(102), header(102)); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Extra); - queue.extra.entry(101).or_default().insert(hash(101), header(101)); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Ready); - queue.ready.entry(100).or_default().insert(hash(100), header(100)); - queue - .synced_children - .entry(100) - .or_default() - .insert(hash(100), vec![id(101)].into_iter().collect()); - queue - .synced_children - .entry(102) - .or_default() - .insert(hash(102), vec![id(102)].into_iter().collect()); - - queue.prune(102); - - assert_eq!(queue.ready.len(), 0); - assert_eq!(queue.extra.len(), 0); - assert_eq!(queue.maybe_extra.len(), 1); - assert_eq!(queue.orphan.len(), 1); - assert_eq!(queue.maybe_orphan.len(), 1); - assert_eq!(queue.incomplete.len(), 1); - assert_eq!(queue.synced_children.len(), 1); - assert_eq!(queue.known_headers.len(), 4); - - queue.prune(110); - - assert_eq!(queue.ready.len(), 0); - assert_eq!(queue.extra.len(), 0); - assert_eq!(queue.maybe_extra.len(), 0); - assert_eq!(queue.orphan.len(), 0); - assert_eq!(queue.maybe_orphan.len(), 0); - assert_eq!(queue.incomplete.len(), 0); - assert_eq!(queue.synced_children.len(), 0); - assert_eq!(queue.known_headers.len(), 0); - - queue.header_response(header(109).header().clone()); - assert_eq!(queue.known_headers.len(), 0); - - queue.header_response(header(110).header().clone()); - assert_eq!(queue.known_headers.len(), 1); - } - - #[test] - fn incomplete_headers_are_still_incomplete_after_advance() { - let mut queue = QueuedHeaders::::default(); - - // relay#1 knows that header#100 is incomplete && it has headers 101..104 in incomplete queue - queue.incomplete_headers.insert(id(100), None); - queue.incomplete.entry(101).or_default().insert(hash(101), header(101)); - queue.incomplete.entry(102).or_default().insert(hash(102), header(102)); - queue.incomplete.entry(103).or_default().insert(hash(103), header(103)); - queue.incomplete.entry(104).or_default().insert(hash(104), header(104)); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Synced); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Incomplete); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::Incomplete); - queue - .known_headers - .entry(103) - .or_default() - .insert(hash(103), HeaderStatus::Incomplete); - queue - .known_headers - .entry(104) - .or_default() - .insert(hash(104), HeaderStatus::Incomplete); - - // let's say relay#2 completes header#100 and then submits header#101+header#102 and it turns - // out that header#102 is also incomplete - queue.incomplete_headers_response(vec![id(102)].into_iter().collect()); - - // then the header#103 and the header#104 must have Incomplete status - assert_eq!(queue.status(&id(101)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(102)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(103)), HeaderStatus::Incomplete); - assert_eq!(queue.status(&id(104)), HeaderStatus::Incomplete); - } - - #[test] - fn incomplete_headers_response_moves_synced_headers() { - let mut queue = QueuedHeaders::::default(); - - // we have submitted two headers - 100 and 101. 102 is ready - queue.submitted.entry(100).or_default().insert(hash(100), header(100)); - queue.submitted.entry(101).or_default().insert(hash(101), header(101)); - queue.ready.entry(102).or_default().insert(hash(102), header(102)); - queue - .known_headers - .entry(100) - .or_default() - .insert(hash(100), HeaderStatus::Submitted); - queue - .known_headers - .entry(101) - .or_default() - .insert(hash(101), HeaderStatus::Submitted); - queue - .known_headers - .entry(102) - .or_default() - .insert(hash(102), HeaderStatus::Ready); - - // both headers are accepted - queue.target_best_header_response(&id(101)); - - // but header 100 is incomplete - queue.incomplete_headers_response(vec![id(100)].into_iter().collect()); - assert_eq!(queue.status(&id(100)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(101)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(102)), HeaderStatus::Incomplete); - assert!(queue.incomplete_headers.contains_key(&id(100))); - assert!(queue.incomplete[&102].contains_key(&hash(102))); - - // when header 100 is completed, 101 is synced and 102 is ready - queue.incomplete_headers_response(HashSet::new()); - assert_eq!(queue.status(&id(100)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(101)), HeaderStatus::Synced); - assert_eq!(queue.status(&id(102)), HeaderStatus::Ready); - assert!(queue.ready[&102].contains_key(&hash(102))); - } -} diff --git a/bridges/relays/headers/src/lib.rs b/bridges/relays/headers/src/lib.rs deleted file mode 100644 index 8946355921f0..000000000000 --- a/bridges/relays/headers/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying source chain headers to target chain. This module provides entrypoint -//! that starts reading new headers from source chain and submit these headers as -//! module/contract transactions to the target chain. Pallet/contract on the target -//! chain is a light-client of the source chain. All other trustless bridge -//! applications are built using this light-client, so running headers-relay is -//! essential for running all other bridge applications. - -// required for futures::select! -#![recursion_limit = "1024"] -#![warn(missing_docs)] - -pub mod headers; -pub mod sync; -pub mod sync_loop; -pub mod sync_loop_metrics; -pub mod sync_loop_tests; -pub mod sync_types; diff --git a/bridges/relays/headers/src/sync.rs b/bridges/relays/headers/src/sync.rs deleted file mode 100644 index e992b1f8e583..000000000000 --- a/bridges/relays/headers/src/sync.rs +++ /dev/null @@ -1,523 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Headers synchronization context. This structure wraps headers queue and is -//! able to choose: which headers to read from the source chain? Which headers -//! to submit to the target chain? The context makes decisions basing on parameters -//! passed using `HeadersSyncParams` structure. - -use crate::headers::QueuedHeaders; -use crate::sync_types::{HeaderIdOf, HeaderStatus, HeadersSyncPipeline, QueuedHeader}; -use num_traits::{One, Saturating, Zero}; - -/// Common sync params. -#[derive(Debug, Clone)] -pub struct HeadersSyncParams { - /// Maximal number of ethereum headers to pre-download. - pub max_future_headers_to_download: usize, - /// Maximal number of active (we believe) submit header transactions. - pub max_headers_in_submitted_status: usize, - /// Maximal number of headers in single submit request. - pub max_headers_in_single_submit: usize, - /// Maximal total headers size in single submit request. - pub max_headers_size_in_single_submit: usize, - /// We only may store and accept (from Ethereum node) headers that have - /// number >= than best_substrate_header.number - prune_depth. - pub prune_depth: u32, - /// Target transactions mode. - pub target_tx_mode: TargetTransactionMode, -} - -/// Target transaction mode. -#[derive(Debug, PartialEq, Clone)] -pub enum TargetTransactionMode { - /// Submit new headers using signed transactions. - Signed, - /// Submit new headers using unsigned transactions. - Unsigned, - /// Submit new headers using signed transactions, but only when we - /// believe that sync has stalled. - Backup, -} - -/// Headers synchronization context. -#[derive(Debug)] -pub struct HeadersSync { - /// Synchronization parameters. - params: HeadersSyncParams, - /// Best header number known to source node. - source_best_number: Option, - /// Best header known to target node. - target_best_header: Option>, - /// Headers queue. - headers: QueuedHeaders

, - /// Pause headers submission. - pause_submit: bool, -} - -impl HeadersSync

{ - /// Creates new headers synchronizer. - pub fn new(params: HeadersSyncParams) -> Self { - HeadersSync { - headers: QueuedHeaders::default(), - params, - source_best_number: None, - target_best_header: None, - pause_submit: false, - } - } - - /// Return best header number known to source node. - pub fn source_best_number(&self) -> Option { - self.source_best_number - } - - /// Best header known to target node. - pub fn target_best_header(&self) -> Option> { - self.target_best_header - } - - /// Returns true if we have synced almost all known headers. - pub fn is_almost_synced(&self) -> bool { - match self.source_best_number { - Some(source_best_number) => self - .target_best_header - .map(|best| source_best_number.saturating_sub(best.0) < 4.into()) - .unwrap_or(false), - None => true, - } - } - - /// Returns synchronization status. - pub fn status(&self) -> (&Option>, &Option) { - (&self.target_best_header, &self.source_best_number) - } - - /// Returns reference to the headers queue. - pub fn headers(&self) -> &QueuedHeaders

{ - &self.headers - } - - /// Returns mutable reference to the headers queue. - pub fn headers_mut(&mut self) -> &mut QueuedHeaders

{ - &mut self.headers - } - - /// Select header that needs to be downloaded from the source node. - pub fn select_new_header_to_download(&self) -> Option { - // if we haven't received best header from source node yet, there's nothing we can download - let source_best_number = self.source_best_number?; - - // if we haven't received known best header from target node yet, there's nothing we can download - let target_best_header = self.target_best_header.as_ref()?; - - // if there's too many headers in the queue, stop downloading - let in_memory_headers = self.headers.total_headers(); - if in_memory_headers >= self.params.max_future_headers_to_download { - return None; - } - - // if queue is empty and best header on target is > than best header on source, - // then we shoud reorg - let best_queued_number = self.headers.best_queued_number(); - if best_queued_number.is_zero() && source_best_number < target_best_header.0 { - return Some(source_best_number); - } - - // we assume that there were no reorgs if we have already downloaded best header - let best_downloaded_number = std::cmp::max( - std::cmp::max(best_queued_number, self.headers.best_synced_number()), - target_best_header.0, - ); - if best_downloaded_number >= source_best_number { - return None; - } - - // download new header - Some(best_downloaded_number + One::one()) - } - - /// Selech orphan header to downoload. - pub fn select_orphan_header_to_download(&self) -> Option<&QueuedHeader

> { - let orphan_header = self.headers.header(HeaderStatus::Orphan)?; - - // we consider header orphan until we'll find it ancestor that is known to the target node - // => we may get orphan header while we ask target node whether it knows its parent - // => let's avoid fetching duplicate headers - let parent_id = orphan_header.parent_id(); - if self.headers.status(&parent_id) != HeaderStatus::Unknown { - return None; - } - - Some(orphan_header) - } - - /// Select headers that need to be submitted to the target node. - pub fn select_headers_to_submit(&self, stalled: bool) -> Option>> { - // maybe we have paused new headers submit? - if self.pause_submit { - return None; - } - - // if we operate in backup mode, we only submit headers when sync has stalled - if self.params.target_tx_mode == TargetTransactionMode::Backup && !stalled { - return None; - } - - let headers_in_submit_status = self.headers.headers_in_status(HeaderStatus::Submitted); - let headers_to_submit_count = self - .params - .max_headers_in_submitted_status - .checked_sub(headers_in_submit_status)?; - - let mut total_size = 0; - let mut total_headers = 0; - self.headers.headers(HeaderStatus::Ready, |header| { - if total_headers == headers_to_submit_count { - return false; - } - if total_headers == self.params.max_headers_in_single_submit { - return false; - } - - let encoded_size = P::estimate_size(header); - if total_headers != 0 && total_size + encoded_size > self.params.max_headers_size_in_single_submit { - return false; - } - - total_size += encoded_size; - total_headers += 1; - - true - }) - } - - /// Receive new target header number from the source node. - pub fn source_best_header_number_response(&mut self, best_header_number: P::Number) { - log::debug!( - target: "bridge", - "Received best header number from {} node: {}", - P::SOURCE_NAME, - best_header_number, - ); - self.source_best_number = Some(best_header_number); - } - - /// Receive new best header from the target node. - /// Returns true if it is different from the previous block known to us. - pub fn target_best_header_response(&mut self, best_header: HeaderIdOf

) -> bool { - log::debug!( - target: "bridge", - "Received best known header from {}: {:?}", - P::TARGET_NAME, - best_header, - ); - - // early return if it is still the same - if self.target_best_header == Some(best_header) { - return false; - } - - // remember that this header is now known to the Substrate runtime - self.headers.target_best_header_response(&best_header); - - // prune ancient headers - self.headers - .prune(best_header.0.saturating_sub(self.params.prune_depth.into())); - - // finally remember the best header itself - self.target_best_header = Some(best_header); - - // we are ready to submit headers again - if self.pause_submit { - log::debug!( - target: "bridge", - "Ready to submit {} headers to {} node again!", - P::SOURCE_NAME, - P::TARGET_NAME, - ); - - self.pause_submit = false; - } - - true - } - - /// Pause headers submit until best header will be updated on target node. - pub fn pause_submit(&mut self) { - log::debug!( - target: "bridge", - "Stopping submitting {} headers to {} node. Waiting for {} submitted headers to be accepted", - P::SOURCE_NAME, - P::TARGET_NAME, - self.headers.headers_in_status(HeaderStatus::Submitted), - ); - - self.pause_submit = true; - } - - /// Restart synchronization. - pub fn restart(&mut self) { - self.source_best_number = None; - self.target_best_header = None; - self.headers.clear(); - self.pause_submit = false; - } -} - -#[cfg(test)] -pub mod tests { - use super::*; - use crate::headers::tests::{header, id}; - use crate::sync_loop_tests::{TestHash, TestHeadersSyncPipeline, TestNumber}; - use crate::sync_types::HeaderStatus; - use relay_utils::HeaderId; - - fn side_hash(number: TestNumber) -> TestHash { - 1000 + number - } - - pub fn default_sync_params() -> HeadersSyncParams { - HeadersSyncParams { - max_future_headers_to_download: 128, - max_headers_in_submitted_status: 128, - max_headers_in_single_submit: 32, - max_headers_size_in_single_submit: 131_072, - prune_depth: 4096, - target_tx_mode: TargetTransactionMode::Signed, - } - } - - #[test] - fn select_new_header_to_download_works() { - let mut eth_sync = HeadersSync::::new(default_sync_params()); - - // both best && target headers are unknown - assert_eq!(eth_sync.select_new_header_to_download(), None); - - // best header is known, target header is unknown - eth_sync.target_best_header = Some(HeaderId(0, Default::default())); - assert_eq!(eth_sync.select_new_header_to_download(), None); - - // target header is known, best header is unknown - eth_sync.target_best_header = None; - eth_sync.source_best_number = Some(100); - assert_eq!(eth_sync.select_new_header_to_download(), None); - - // when our best block has the same number as the target - eth_sync.target_best_header = Some(HeaderId(100, Default::default())); - assert_eq!(eth_sync.select_new_header_to_download(), None); - - // when we actually need a new header - eth_sync.source_best_number = Some(101); - assert_eq!(eth_sync.select_new_header_to_download(), Some(101)); - - // when we have to reorganize to longer fork - eth_sync.source_best_number = Some(100); - eth_sync.target_best_header = Some(HeaderId(200, Default::default())); - assert_eq!(eth_sync.select_new_header_to_download(), Some(100)); - - // when there are too many headers scheduled for submitting - for i in 1..1000 { - eth_sync.headers.header_response(header(i).header().clone()); - } - assert_eq!(eth_sync.select_new_header_to_download(), None); - } - - #[test] - fn select_new_header_to_download_works_with_empty_queue() { - let mut eth_sync = HeadersSync::::new(default_sync_params()); - eth_sync.source_best_header_number_response(100); - - // when queue is not empty => everything goes as usually - eth_sync.target_best_header_response(header(10).id()); - eth_sync.headers_mut().header_response(header(11).header().clone()); - eth_sync.headers_mut().maybe_extra_response(&header(11).id(), false); - assert_eq!(eth_sync.select_new_header_to_download(), Some(12)); - - // but then queue is drained - eth_sync.headers_mut().target_best_header_response(&header(11).id()); - - // even though it's empty, we know that header#11 is synced - assert_eq!(eth_sync.headers().best_queued_number(), 0); - assert_eq!(eth_sync.headers().best_synced_number(), 11); - assert_eq!(eth_sync.select_new_header_to_download(), Some(12)); - } - - #[test] - fn sync_without_reorgs_works() { - let mut eth_sync = HeadersSync::new(default_sync_params()); - eth_sync.params.max_headers_in_submitted_status = 1; - - // ethereum reports best header #102 - eth_sync.source_best_header_number_response(102); - - // substrate reports that it is at block #100 - eth_sync.target_best_header_response(id(100)); - - // block #101 is downloaded first - assert_eq!(eth_sync.select_new_header_to_download(), Some(101)); - eth_sync.headers.header_response(header(101).header().clone()); - - // now header #101 is ready to be submitted - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeExtra), Some(&header(101))); - eth_sync.headers.maybe_extra_response(&id(101), false); - assert_eq!(eth_sync.headers.header(HeaderStatus::Ready), Some(&header(101))); - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(101)])); - - // and header #102 is ready to be downloaded - assert_eq!(eth_sync.select_new_header_to_download(), Some(102)); - eth_sync.headers.header_response(header(102).header().clone()); - - // receive submission confirmation - eth_sync.headers.headers_submitted(vec![id(101)]); - - // we have nothing to submit because previous header hasn't been confirmed yet - // (and we allow max 1 submit transaction in the wild) - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeExtra), Some(&header(102))); - eth_sync.headers.maybe_extra_response(&id(102), false); - assert_eq!(eth_sync.headers.header(HeaderStatus::Ready), Some(&header(102))); - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // substrate reports that it has imported block #101 - eth_sync.target_best_header_response(id(101)); - - // and we are ready to submit #102 - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(102)])); - eth_sync.headers.headers_submitted(vec![id(102)]); - - // substrate reports that it has imported block #102 - eth_sync.target_best_header_response(id(102)); - - // and we have nothing to download - assert_eq!(eth_sync.select_new_header_to_download(), None); - } - - #[test] - fn sync_with_orphan_headers_work() { - let mut eth_sync = HeadersSync::new(default_sync_params()); - - // ethereum reports best header #102 - eth_sync.source_best_header_number_response(102); - - // substrate reports that it is at block #100, but it isn't part of best chain - eth_sync.target_best_header_response(HeaderId(100, side_hash(100))); - - // block #101 is downloaded first - assert_eq!(eth_sync.select_new_header_to_download(), Some(101)); - eth_sync.headers.header_response(header(101).header().clone()); - - // we can't submit header #101, because its parent status is unknown - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // instead we are trying to determine status of its parent (#100) - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeOrphan), Some(&header(101))); - - // and the status is still unknown - eth_sync.headers.maybe_orphan_response(&id(100), false); - - // so we consider #101 orphaned now && will download its parent - #100 - assert_eq!(eth_sync.headers.header(HeaderStatus::Orphan), Some(&header(101))); - eth_sync.headers.header_response(header(100).header().clone()); - - // #101 is now Orphan and #100 is MaybeOrphan => we do not want to retrieve - // header #100 again - assert_eq!(eth_sync.headers.header(HeaderStatus::Orphan), Some(&header(101))); - assert_eq!(eth_sync.select_orphan_header_to_download(), None); - - // we can't submit header #100, because its parent status is unknown - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // instead we are trying to determine status of its parent (#99) - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeOrphan), Some(&header(100))); - - // and the status is known, so we move previously orphaned #100 and #101 to ready queue - eth_sync.headers.maybe_orphan_response(&id(99), true); - - // and we are ready to submit #100 - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeExtra), Some(&header(100))); - eth_sync.headers.maybe_extra_response(&id(100), false); - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(100)])); - eth_sync.headers.headers_submitted(vec![id(100)]); - - // and we are ready to submit #101 - assert_eq!(eth_sync.headers.header(HeaderStatus::MaybeExtra), Some(&header(101))); - eth_sync.headers.maybe_extra_response(&id(101), false); - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(101)])); - eth_sync.headers.headers_submitted(vec![id(101)]); - } - - #[test] - fn pruning_happens_on_target_best_header_response() { - let mut eth_sync = HeadersSync::::new(default_sync_params()); - eth_sync.params.prune_depth = 50; - eth_sync.target_best_header_response(id(100)); - assert_eq!(eth_sync.headers.prune_border(), 50); - } - - #[test] - fn only_submitting_headers_in_backup_mode_when_stalled() { - let mut eth_sync = HeadersSync::new(default_sync_params()); - eth_sync.params.target_tx_mode = TargetTransactionMode::Backup; - - // ethereum reports best header #102 - eth_sync.source_best_header_number_response(102); - - // substrate reports that it is at block #100 - eth_sync.target_best_header_response(id(100)); - - // block #101 is downloaded first - eth_sync.headers.header_response(header(101).header().clone()); - eth_sync.headers.maybe_extra_response(&id(101), false); - - // ensure that headers are not submitted when sync is not stalled - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // ensure that headers are not submitted when sync is stalled - assert_eq!(eth_sync.select_headers_to_submit(true), Some(vec![&header(101)])); - } - - #[test] - fn does_not_select_new_headers_to_submit_when_submit_is_paused() { - let mut eth_sync = HeadersSync::new(default_sync_params()); - eth_sync.params.max_headers_in_submitted_status = 1; - - // ethereum reports best header #102 and substrate is at #100 - eth_sync.source_best_header_number_response(102); - eth_sync.target_best_header_response(id(100)); - - // let's prepare #101 and #102 for submitting - eth_sync.headers.header_response(header(101).header().clone()); - eth_sync.headers.maybe_extra_response(&id(101), false); - eth_sync.headers.header_response(header(102).header().clone()); - eth_sync.headers.maybe_extra_response(&id(102), false); - - // when submit is not paused, we're ready to submit #101 - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(101)])); - - // when submit is paused, we're not ready to submit anything - eth_sync.pause_submit(); - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // if best header on substrate node isn't updated, we still not submitting anything - eth_sync.target_best_header_response(id(100)); - assert_eq!(eth_sync.select_headers_to_submit(false), None); - - // but after it is actually updated, we are ready to submit - eth_sync.target_best_header_response(id(101)); - assert_eq!(eth_sync.select_headers_to_submit(false), Some(vec![&header(102)])); - } -} diff --git a/bridges/relays/headers/src/sync_loop.rs b/bridges/relays/headers/src/sync_loop.rs deleted file mode 100644 index b20493205650..000000000000 --- a/bridges/relays/headers/src/sync_loop.rs +++ /dev/null @@ -1,637 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Entrypoint for running headers synchronization loop. - -use crate::sync::{HeadersSync, HeadersSyncParams}; -use crate::sync_loop_metrics::SyncLoopMetrics; -use crate::sync_types::{HeaderIdOf, HeaderStatus, HeadersSyncPipeline, QueuedHeader, SubmittedHeaders}; - -use async_trait::async_trait; -use futures::{future::FutureExt, stream::StreamExt}; -use num_traits::{Saturating, Zero}; -use relay_utils::{ - format_ids, interval, - metrics::{GlobalMetrics, MetricsParams}, - process_future_result, - relay_loop::Client as RelayClient, - retry_backoff, FailedClient, MaybeConnectionError, StringifiedMaybeConnectionError, -}; -use std::{ - collections::HashSet, - future::Future, - time::{Duration, Instant}, -}; - -/// When we submit headers to target node, but see no updates of best -/// source block known to target node during STALL_SYNC_TIMEOUT seconds, -/// we consider that our headers are rejected because there has been reorg in target chain. -/// This reorg could invalidate our knowledge about sync process (i.e. we have asked if -/// HeaderA is known to target, but then reorg happened and the answer is different -/// now) => we need to reset sync. -/// The other option is to receive **EVERY** best target header and check if it is -/// direct child of previous best header. But: (1) subscription doesn't guarantee that -/// the subscriber will receive every best header (2) reorg won't always lead to sync -/// stall and restart is a heavy operation (we forget all in-memory headers). -const STALL_SYNC_TIMEOUT: Duration = Duration::from_secs(5 * 60); -/// Delay after we have seen update of best source header at target node, -/// for us to treat sync stalled. ONLY when relay operates in backup mode. -const BACKUP_STALL_SYNC_TIMEOUT: Duration = Duration::from_secs(10 * 60); -/// Interval between calling sync maintain procedure. -const MAINTAIN_INTERVAL: Duration = Duration::from_secs(30); - -/// Source client trait. -#[async_trait] -pub trait SourceClient: RelayClient { - /// Get best block number. - async fn best_block_number(&self) -> Result; - - /// Get header by hash. - async fn header_by_hash(&self, hash: P::Hash) -> Result; - - /// Get canonical header by number. - async fn header_by_number(&self, number: P::Number) -> Result; - - /// Get completion data by header hash. - async fn header_completion(&self, id: HeaderIdOf

) - -> Result<(HeaderIdOf

, Option), Self::Error>; - - /// Get extra data by header hash. - async fn header_extra( - &self, - id: HeaderIdOf

, - header: QueuedHeader

, - ) -> Result<(HeaderIdOf

, P::Extra), Self::Error>; -} - -/// Target client trait. -#[async_trait] -pub trait TargetClient: RelayClient { - /// Returns ID of best header known to the target node. - async fn best_header_id(&self) -> Result, Self::Error>; - - /// Returns true if header is known to the target node. - async fn is_known_header(&self, id: HeaderIdOf

) -> Result<(HeaderIdOf

, bool), Self::Error>; - - /// Submit headers. - async fn submit_headers(&self, headers: Vec>) -> SubmittedHeaders, Self::Error>; - - /// Returns ID of headers that require to be 'completed' before children can be submitted. - async fn incomplete_headers_ids(&self) -> Result>, Self::Error>; - - /// Submit completion data for header. - async fn complete_header(&self, id: HeaderIdOf

, completion: P::Completion) - -> Result, Self::Error>; - - /// Returns true if header requires extra data to be submitted. - async fn requires_extra(&self, header: QueuedHeader

) -> Result<(HeaderIdOf

, bool), Self::Error>; -} - -/// Synchronization maintain procedure. -#[async_trait] -pub trait SyncMaintain: 'static + Clone + Send + Sync { - /// Run custom maintain procedures. This is guaranteed to be called when both source and target - /// clients are unoccupied. - async fn maintain(&self, _sync: &mut HeadersSync

) {} -} - -impl SyncMaintain

for () {} - -/// Return prefix that will be used by default to expose Prometheus metrics of the finality proofs sync loop. -pub fn metrics_prefix() -> String { - format!("{}_to_{}_Sync", P::SOURCE_NAME, P::TARGET_NAME) -} - -/// Run headers synchronization. -#[allow(clippy::too_many_arguments)] -pub async fn run>( - source_client: impl SourceClient

, - source_tick: Duration, - target_client: TC, - target_tick: Duration, - sync_maintain: impl SyncMaintain

, - sync_params: HeadersSyncParams, - metrics_params: MetricsParams, - exit_signal: impl Future + 'static + Send, -) -> Result<(), String> { - let exit_signal = exit_signal.shared(); - relay_utils::relay_loop(source_client, target_client) - .with_metrics(Some(metrics_prefix::

()), metrics_params) - .loop_metric(|registry, prefix| SyncLoopMetrics::new(registry, prefix))? - .standalone_metric(|registry, prefix| GlobalMetrics::new(registry, prefix))? - .expose() - .await? - .run(metrics_prefix::

(), move |source_client, target_client, metrics| { - run_until_connection_lost( - source_client, - source_tick, - target_client, - target_tick, - sync_maintain.clone(), - sync_params.clone(), - metrics, - exit_signal.clone(), - ) - }) - .await -} - -/// Run headers synchronization. -#[allow(clippy::too_many_arguments)] -async fn run_until_connection_lost>( - source_client: impl SourceClient

, - source_tick: Duration, - target_client: TC, - target_tick: Duration, - sync_maintain: impl SyncMaintain

, - sync_params: HeadersSyncParams, - metrics_sync: Option, - exit_signal: impl Future + Send, -) -> Result<(), FailedClient> { - let mut progress_context = (Instant::now(), None, None); - - let mut sync = HeadersSync::

::new(sync_params); - let mut stall_countdown = None; - let mut last_update_time = Instant::now(); - - let mut source_retry_backoff = retry_backoff(); - let mut source_client_is_online = false; - let mut source_best_block_number_required = false; - let source_best_block_number_future = source_client.best_block_number().fuse(); - let source_new_header_future = futures::future::Fuse::terminated(); - let source_orphan_header_future = futures::future::Fuse::terminated(); - let source_extra_future = futures::future::Fuse::terminated(); - let source_completion_future = futures::future::Fuse::terminated(); - let source_go_offline_future = futures::future::Fuse::terminated(); - let source_tick_stream = interval(source_tick).fuse(); - - let mut target_retry_backoff = retry_backoff(); - let mut target_client_is_online = false; - let mut target_best_block_required = false; - let mut target_incomplete_headers_required = true; - let target_best_block_future = target_client.best_header_id().fuse(); - let target_incomplete_headers_future = futures::future::Fuse::terminated(); - let target_extra_check_future = futures::future::Fuse::terminated(); - let target_existence_status_future = futures::future::Fuse::terminated(); - let target_submit_header_future = futures::future::Fuse::terminated(); - let target_complete_header_future = futures::future::Fuse::terminated(); - let target_go_offline_future = futures::future::Fuse::terminated(); - let target_tick_stream = interval(target_tick).fuse(); - - let mut maintain_required = false; - let maintain_stream = interval(MAINTAIN_INTERVAL).fuse(); - - let exit_signal = exit_signal.fuse(); - - futures::pin_mut!( - source_best_block_number_future, - source_new_header_future, - source_orphan_header_future, - source_extra_future, - source_completion_future, - source_go_offline_future, - source_tick_stream, - target_best_block_future, - target_incomplete_headers_future, - target_extra_check_future, - target_existence_status_future, - target_submit_header_future, - target_complete_header_future, - target_go_offline_future, - target_tick_stream, - maintain_stream, - exit_signal - ); - - loop { - futures::select! { - source_best_block_number = source_best_block_number_future => { - source_best_block_number_required = false; - - source_client_is_online = process_future_result( - source_best_block_number, - &mut source_retry_backoff, - |source_best_block_number| sync.source_best_header_number_response(source_best_block_number), - &mut source_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving best header number from {}", P::SOURCE_NAME), - ).fail_if_connection_error(FailedClient::Source)?; - }, - source_new_header = source_new_header_future => { - source_client_is_online = process_future_result( - source_new_header, - &mut source_retry_backoff, - |source_new_header| sync.headers_mut().header_response(source_new_header), - &mut source_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving header from {} node", P::SOURCE_NAME), - ).fail_if_connection_error(FailedClient::Source)?; - }, - source_orphan_header = source_orphan_header_future => { - source_client_is_online = process_future_result( - source_orphan_header, - &mut source_retry_backoff, - |source_orphan_header| sync.headers_mut().header_response(source_orphan_header), - &mut source_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving orphan header from {} node", P::SOURCE_NAME), - ).fail_if_connection_error(FailedClient::Source)?; - }, - source_extra = source_extra_future => { - source_client_is_online = process_future_result( - source_extra, - &mut source_retry_backoff, - |(header, extra)| sync.headers_mut().extra_response(&header, extra), - &mut source_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving extra data from {} node", P::SOURCE_NAME), - ).fail_if_connection_error(FailedClient::Source)?; - }, - source_completion = source_completion_future => { - source_client_is_online = process_future_result( - source_completion, - &mut source_retry_backoff, - |(header, completion)| sync.headers_mut().completion_response(&header, completion), - &mut source_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving completion data from {} node", P::SOURCE_NAME), - ).fail_if_connection_error(FailedClient::Source)?; - }, - _ = source_go_offline_future => { - source_client_is_online = true; - }, - _ = source_tick_stream.next() => { - if sync.is_almost_synced() { - source_best_block_number_required = true; - } - }, - target_best_block = target_best_block_future => { - target_best_block_required = false; - - target_client_is_online = process_future_result( - target_best_block, - &mut target_retry_backoff, - |target_best_block| { - let head_updated = sync.target_best_header_response(target_best_block); - if head_updated { - last_update_time = Instant::now(); - } - match head_updated { - // IF head is updated AND there are still our transactions: - // => restart stall countdown timer - true if sync.headers().headers_in_status(HeaderStatus::Submitted) != 0 => - stall_countdown = Some(Instant::now()), - // IF head is updated AND there are no our transactions: - // => stop stall countdown timer - true => stall_countdown = None, - // IF head is not updated AND stall countdown is not yet completed - // => do nothing - false if stall_countdown - .map(|stall_countdown| stall_countdown.elapsed() < STALL_SYNC_TIMEOUT) - .unwrap_or(true) - => (), - // IF head is not updated AND stall countdown has completed - // => restart sync - false => { - log::info!( - target: "bridge", - "Sync has stalled. Restarting {} headers synchronization.", - P::SOURCE_NAME, - ); - stall_countdown = None; - sync.restart(); - }, - } - }, - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving best known {} header from {} node", P::SOURCE_NAME, P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - }, - incomplete_headers_ids = target_incomplete_headers_future => { - target_incomplete_headers_required = false; - - target_client_is_online = process_future_result( - incomplete_headers_ids, - &mut target_retry_backoff, - |incomplete_headers_ids| sync.headers_mut().incomplete_headers_response(incomplete_headers_ids), - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving incomplete headers from {} node", P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - }, - target_existence_status = target_existence_status_future => { - target_client_is_online = process_future_result( - target_existence_status, - &mut target_retry_backoff, - |(target_header, target_existence_status)| sync - .headers_mut() - .maybe_orphan_response(&target_header, target_existence_status), - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving existence status from {} node", P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - }, - submitted_headers = target_submit_header_future => { - // following line helps Rust understand the type of `submitted_headers` :/ - let submitted_headers: SubmittedHeaders, TC::Error> = submitted_headers; - let submitted_headers_str = format!("{}", submitted_headers); - let all_headers_rejected = submitted_headers.submitted.is_empty() - && submitted_headers.incomplete.is_empty(); - let has_submitted_headers = sync.headers().headers_in_status(HeaderStatus::Submitted) != 0; - - let maybe_fatal_error = match submitted_headers.fatal_error { - Some(fatal_error) => Err(StringifiedMaybeConnectionError::new( - fatal_error.is_connection_error(), - format!("{:?}", fatal_error), - )), - None if all_headers_rejected && !has_submitted_headers => - Err(StringifiedMaybeConnectionError::new(false, "All headers were rejected".into())), - None => Ok(()), - }; - - let no_fatal_error = maybe_fatal_error.is_ok(); - target_client_is_online = process_future_result( - maybe_fatal_error, - &mut target_retry_backoff, - |_| {}, - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error submitting headers to {} node", P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - - log::debug!(target: "bridge", "Header submit result: {}", submitted_headers_str); - - sync.headers_mut().headers_submitted(submitted_headers.submitted); - sync.headers_mut().add_incomplete_headers(false, submitted_headers.incomplete); - - // when there's no fatal error, but node has rejected all our headers we may - // want to pause until our submitted headers will be accepted - if no_fatal_error && all_headers_rejected && has_submitted_headers { - sync.pause_submit(); - } - }, - target_complete_header_result = target_complete_header_future => { - target_client_is_online = process_future_result( - target_complete_header_result, - &mut target_retry_backoff, - |completed_header| sync.headers_mut().header_completed(&completed_header), - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error completing headers at {}", P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - }, - target_extra_check_result = target_extra_check_future => { - target_client_is_online = process_future_result( - target_extra_check_result, - &mut target_retry_backoff, - |(header, extra_check_result)| sync - .headers_mut() - .maybe_extra_response(&header, extra_check_result), - &mut target_go_offline_future, - async_std::task::sleep, - || format!("Error retrieving receipts requirement from {} node", P::TARGET_NAME), - ).fail_if_connection_error(FailedClient::Target)?; - }, - _ = target_go_offline_future => { - target_client_is_online = true; - }, - _ = target_tick_stream.next() => { - target_best_block_required = true; - target_incomplete_headers_required = true; - }, - - _ = maintain_stream.next() => { - maintain_required = true; - }, - _ = exit_signal => { - return Ok(()); - } - } - - // update metrics - if let Some(ref metrics_sync) = metrics_sync { - metrics_sync.update(&sync); - } - - // print progress - progress_context = print_sync_progress(progress_context, &sync); - - // run maintain procedures - if maintain_required && source_client_is_online && target_client_is_online { - log::debug!(target: "bridge", "Maintaining headers sync loop"); - maintain_required = false; - sync_maintain.maintain(&mut sync).await; - } - - // If the target client is accepting requests we update the requests that - // we want it to run - if !maintain_required && target_client_is_online { - // NOTE: Is is important to reset this so that we only have one - // request being processed by the client at a time. This prevents - // race conditions like receiving two transactions with the same - // nonce from the client. - target_client_is_online = false; - - // The following is how we prioritize requests: - // - // 1. Get best block - // - Stops us from downloading or submitting new blocks - // - Only called rarely - // - // 2. Get incomplete headers - // - Stops us from submitting new blocks - // - Only called rarely - // - // 3. Get complete headers - // - Stops us from submitting new blocks - // - // 4. Check if we need extra data from source - // - Stops us from downloading or submitting new blocks - // - // 5. Check existence of header - // - Stops us from submitting new blocks - // - // 6. Submit header - - if target_best_block_required { - log::debug!(target: "bridge", "Asking {} about best block", P::TARGET_NAME); - target_best_block_future.set(target_client.best_header_id().fuse()); - } else if target_incomplete_headers_required { - log::debug!(target: "bridge", "Asking {} about incomplete headers", P::TARGET_NAME); - target_incomplete_headers_future.set(target_client.incomplete_headers_ids().fuse()); - } else if let Some((id, completion)) = sync.headers_mut().header_to_complete() { - log::debug!( - target: "bridge", - "Going to complete header: {:?}", - id, - ); - - target_complete_header_future.set(target_client.complete_header(id, completion.clone()).fuse()); - } else if let Some(header) = sync.headers().header(HeaderStatus::MaybeExtra) { - log::debug!( - target: "bridge", - "Checking if header submission requires extra: {:?}", - header.id(), - ); - - target_extra_check_future.set(target_client.requires_extra(header.clone()).fuse()); - } else if let Some(header) = sync.headers().header(HeaderStatus::MaybeOrphan) { - // for MaybeOrphan we actually ask for parent' header existence - let parent_id = header.parent_id(); - - log::debug!( - target: "bridge", - "Asking {} node for existence of: {:?}", - P::TARGET_NAME, - parent_id, - ); - - target_existence_status_future.set(target_client.is_known_header(parent_id).fuse()); - } else if let Some(headers) = - sync.select_headers_to_submit(last_update_time.elapsed() > BACKUP_STALL_SYNC_TIMEOUT) - { - log::debug!( - target: "bridge", - "Submitting {} header(s) to {} node: {:?}", - headers.len(), - P::TARGET_NAME, - format_ids(headers.iter().map(|header| header.id())), - ); - - let headers = headers.into_iter().cloned().collect(); - target_submit_header_future.set(target_client.submit_headers(headers).fuse()); - - // remember that we have submitted some headers - if stall_countdown.is_none() { - stall_countdown = Some(Instant::now()); - } - } else { - target_client_is_online = true; - } - } - - // If the source client is accepting requests we update the requests that - // we want it to run - if !maintain_required && source_client_is_online { - // NOTE: Is is important to reset this so that we only have one - // request being processed by the client at a time. This prevents - // race conditions like receiving two transactions with the same - // nonce from the client. - source_client_is_online = false; - - // The following is how we prioritize requests: - // - // 1. Get best block - // - Stops us from downloading or submitting new blocks - // - Only called rarely - // - // 2. Download completion data - // - Stops us from submitting new blocks - // - // 3. Download extra data - // - Stops us from submitting new blocks - // - // 4. Download missing headers - // - Stops us from downloading or submitting new blocks - // - // 5. Downloading new headers - - if source_best_block_number_required { - log::debug!(target: "bridge", "Asking {} node about best block number", P::SOURCE_NAME); - source_best_block_number_future.set(source_client.best_block_number().fuse()); - } else if let Some(id) = sync.headers_mut().incomplete_header() { - log::debug!( - target: "bridge", - "Retrieving completion data for header: {:?}", - id, - ); - source_completion_future.set(source_client.header_completion(id).fuse()); - } else if let Some(header) = sync.headers().header(HeaderStatus::Extra) { - let id = header.id(); - log::debug!( - target: "bridge", - "Retrieving extra data for header: {:?}", - id, - ); - source_extra_future.set(source_client.header_extra(id, header.clone()).fuse()); - } else if let Some(header) = sync.select_orphan_header_to_download() { - // for Orphan we actually ask for parent' header - let parent_id = header.parent_id(); - - // if we have end up with orphan header#0, then we are misconfigured - if parent_id.0.is_zero() { - log::error!( - target: "bridge", - "Misconfiguration. Genesis {} header is considered orphan by {} node", - P::SOURCE_NAME, - P::TARGET_NAME, - ); - return Ok(()); - } - - log::debug!( - target: "bridge", - "Going to download orphan header from {} node: {:?}", - P::SOURCE_NAME, - parent_id, - ); - - source_orphan_header_future.set(source_client.header_by_hash(parent_id.1).fuse()); - } else if let Some(id) = sync.select_new_header_to_download() { - log::debug!( - target: "bridge", - "Going to download new header from {} node: {:?}", - P::SOURCE_NAME, - id, - ); - - source_new_header_future.set(source_client.header_by_number(id).fuse()); - } else { - source_client_is_online = true; - } - } - } -} - -/// Print synchronization progress. -fn print_sync_progress( - progress_context: (Instant, Option, Option), - eth_sync: &HeadersSync

, -) -> (Instant, Option, Option) { - let (prev_time, prev_best_header, prev_target_header) = progress_context; - let now_time = Instant::now(); - let (now_best_header, now_target_header) = eth_sync.status(); - - let need_update = now_time - prev_time > Duration::from_secs(10) - || match (prev_best_header, now_best_header) { - (Some(prev_best_header), Some(now_best_header)) => { - now_best_header.0.saturating_sub(prev_best_header) > 10.into() - } - _ => false, - }; - if !need_update { - return (prev_time, prev_best_header, prev_target_header); - } - - log::info!( - target: "bridge", - "Synced {:?} of {:?} headers", - now_best_header.map(|id| id.0), - now_target_header, - ); - (now_time, (*now_best_header).map(|id| id.0), *now_target_header) -} diff --git a/bridges/relays/headers/src/sync_loop_metrics.rs b/bridges/relays/headers/src/sync_loop_metrics.rs deleted file mode 100644 index 37dae1134042..000000000000 --- a/bridges/relays/headers/src/sync_loop_metrics.rs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Metrics for headers synchronization relay loop. - -use crate::sync::HeadersSync; -use crate::sync_types::{HeaderStatus, HeadersSyncPipeline}; - -use num_traits::Zero; -use relay_utils::metrics::{metric_name, register, GaugeVec, Opts, PrometheusError, Registry, U64}; - -/// Headers sync metrics. -#[derive(Clone)] -pub struct SyncLoopMetrics { - /// Best syncing headers at "source" and "target" nodes. - best_block_numbers: GaugeVec, - /// Number of headers in given states (see `HeaderStatus`). - blocks_in_state: GaugeVec, -} - -impl SyncLoopMetrics { - /// Create and register headers loop metrics. - pub fn new(registry: &Registry, prefix: Option<&str>) -> Result { - Ok(SyncLoopMetrics { - best_block_numbers: register( - GaugeVec::new( - Opts::new( - metric_name(prefix, "best_block_numbers"), - "Best block numbers on source and target nodes", - ), - &["node"], - )?, - registry, - )?, - blocks_in_state: register( - GaugeVec::new( - Opts::new( - metric_name(prefix, "blocks_in_state"), - "Number of blocks in given state", - ), - &["state"], - )?, - registry, - )?, - }) - } -} - -impl SyncLoopMetrics { - /// Update best block number at source. - pub fn update_best_block_at_source>(&self, source_best_number: Number) { - self.best_block_numbers - .with_label_values(&["source"]) - .set(source_best_number.into()); - } - - /// Update best block number at target. - pub fn update_best_block_at_target>(&self, target_best_number: Number) { - self.best_block_numbers - .with_label_values(&["target"]) - .set(target_best_number.into()); - } - - /// Update metrics. - pub fn update(&self, sync: &HeadersSync

) { - let headers = sync.headers(); - let source_best_number = sync.source_best_number().unwrap_or_else(Zero::zero); - let target_best_number = sync.target_best_header().map(|id| id.0).unwrap_or_else(Zero::zero); - - self.update_best_block_at_source(source_best_number); - self.update_best_block_at_target(target_best_number); - - self.blocks_in_state - .with_label_values(&["maybe_orphan"]) - .set(headers.headers_in_status(HeaderStatus::MaybeOrphan) as _); - self.blocks_in_state - .with_label_values(&["orphan"]) - .set(headers.headers_in_status(HeaderStatus::Orphan) as _); - self.blocks_in_state - .with_label_values(&["maybe_extra"]) - .set(headers.headers_in_status(HeaderStatus::MaybeExtra) as _); - self.blocks_in_state - .with_label_values(&["extra"]) - .set(headers.headers_in_status(HeaderStatus::Extra) as _); - self.blocks_in_state - .with_label_values(&["ready"]) - .set(headers.headers_in_status(HeaderStatus::Ready) as _); - self.blocks_in_state - .with_label_values(&["incomplete"]) - .set(headers.headers_in_status(HeaderStatus::Incomplete) as _); - self.blocks_in_state - .with_label_values(&["submitted"]) - .set(headers.headers_in_status(HeaderStatus::Submitted) as _); - } -} diff --git a/bridges/relays/headers/src/sync_loop_tests.rs b/bridges/relays/headers/src/sync_loop_tests.rs deleted file mode 100644 index 3347c4d0d3bd..000000000000 --- a/bridges/relays/headers/src/sync_loop_tests.rs +++ /dev/null @@ -1,594 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -#![cfg(test)] - -use crate::sync_loop::{run, SourceClient, TargetClient}; -use crate::sync_types::{HeadersSyncPipeline, QueuedHeader, SourceHeader, SubmittedHeaders}; - -use async_trait::async_trait; -use backoff::backoff::Backoff; -use futures::{future::FutureExt, stream::StreamExt}; -use parking_lot::Mutex; -use relay_utils::{ - metrics::MetricsParams, process_future_result, relay_loop::Client as RelayClient, retry_backoff, HeaderId, - MaybeConnectionError, -}; -use std::{ - collections::{HashMap, HashSet}, - sync::Arc, - time::Duration, -}; - -pub type TestNumber = u64; -pub type TestHash = u64; -pub type TestHeaderId = HeaderId; -pub type TestExtra = u64; -pub type TestCompletion = u64; -pub type TestQueuedHeader = QueuedHeader; - -#[derive(Default, Debug, Clone, PartialEq)] -pub struct TestHeader { - pub hash: TestHash, - pub number: TestNumber, - pub parent_hash: TestHash, -} - -impl SourceHeader for TestHeader { - fn id(&self) -> TestHeaderId { - HeaderId(self.number, self.hash) - } - - fn parent_id(&self) -> TestHeaderId { - HeaderId(self.number - 1, self.parent_hash) - } -} - -#[derive(Debug, Clone)] -struct TestError(bool); - -impl MaybeConnectionError for TestError { - fn is_connection_error(&self) -> bool { - self.0 - } -} - -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct TestHeadersSyncPipeline; - -impl HeadersSyncPipeline for TestHeadersSyncPipeline { - const SOURCE_NAME: &'static str = "Source"; - const TARGET_NAME: &'static str = "Target"; - - type Hash = TestHash; - type Number = TestNumber; - type Header = TestHeader; - type Extra = TestExtra; - type Completion = TestCompletion; - - fn estimate_size(_: &TestQueuedHeader) -> usize { - 0 - } -} - -enum SourceMethod { - BestBlockNumber, - HeaderByHash(TestHash), - HeaderByNumber(TestNumber), - HeaderCompletion(TestHeaderId), - HeaderExtra(TestHeaderId, TestQueuedHeader), -} - -#[derive(Clone)] -struct Source { - data: Arc>, - on_method_call: Arc, -} - -struct SourceData { - best_block_number: Result, - header_by_hash: HashMap, - header_by_number: HashMap, - provides_completion: bool, - provides_extra: bool, -} - -impl Source { - pub fn new( - best_block_id: TestHeaderId, - headers: Vec<(bool, TestHeader)>, - on_method_call: impl Fn(SourceMethod, &mut SourceData) + Send + Sync + 'static, - ) -> Self { - Source { - data: Arc::new(Mutex::new(SourceData { - best_block_number: Ok(best_block_id.0), - header_by_hash: headers - .iter() - .map(|(_, header)| (header.hash, header.clone())) - .collect(), - header_by_number: headers - .iter() - .filter_map(|(is_canonical, header)| { - if *is_canonical { - Some((header.hash, header.clone())) - } else { - None - } - }) - .collect(), - provides_completion: true, - provides_extra: true, - })), - on_method_call: Arc::new(on_method_call), - } - } -} - -#[async_trait] -impl RelayClient for Source { - type Error = TestError; - - async fn reconnect(&mut self) -> Result<(), TestError> { - unimplemented!() - } -} - -#[async_trait] -impl SourceClient for Source { - async fn best_block_number(&self) -> Result { - let mut data = self.data.lock(); - (self.on_method_call)(SourceMethod::BestBlockNumber, &mut *data); - data.best_block_number.clone() - } - - async fn header_by_hash(&self, hash: TestHash) -> Result { - let mut data = self.data.lock(); - (self.on_method_call)(SourceMethod::HeaderByHash(hash), &mut *data); - data.header_by_hash.get(&hash).cloned().ok_or(TestError(false)) - } - - async fn header_by_number(&self, number: TestNumber) -> Result { - let mut data = self.data.lock(); - (self.on_method_call)(SourceMethod::HeaderByNumber(number), &mut *data); - data.header_by_number.get(&number).cloned().ok_or(TestError(false)) - } - - async fn header_completion(&self, id: TestHeaderId) -> Result<(TestHeaderId, Option), TestError> { - let mut data = self.data.lock(); - (self.on_method_call)(SourceMethod::HeaderCompletion(id), &mut *data); - if data.provides_completion { - Ok((id, Some(test_completion(id)))) - } else { - Ok((id, None)) - } - } - - async fn header_extra( - &self, - id: TestHeaderId, - header: TestQueuedHeader, - ) -> Result<(TestHeaderId, TestExtra), TestError> { - let mut data = self.data.lock(); - (self.on_method_call)(SourceMethod::HeaderExtra(id, header), &mut *data); - if data.provides_extra { - Ok((id, test_extra(id))) - } else { - Err(TestError(false)) - } - } -} - -enum TargetMethod { - BestHeaderId, - IsKnownHeader(TestHeaderId), - SubmitHeaders(Vec), - IncompleteHeadersIds, - CompleteHeader(TestHeaderId, TestCompletion), - RequiresExtra(TestQueuedHeader), -} - -#[derive(Clone)] -struct Target { - data: Arc>, - on_method_call: Arc, -} - -struct TargetData { - best_header_id: Result, - is_known_header_by_hash: HashMap, - submitted_headers: HashMap, - submit_headers_result: Option>, - completed_headers: HashMap, - requires_completion: bool, - requires_extra: bool, -} - -impl Target { - pub fn new( - best_header_id: TestHeaderId, - headers: Vec, - on_method_call: impl Fn(TargetMethod, &mut TargetData) + Send + Sync + 'static, - ) -> Self { - Target { - data: Arc::new(Mutex::new(TargetData { - best_header_id: Ok(best_header_id), - is_known_header_by_hash: headers.iter().map(|header| (header.1, true)).collect(), - submitted_headers: HashMap::new(), - submit_headers_result: None, - completed_headers: HashMap::new(), - requires_completion: false, - requires_extra: false, - })), - on_method_call: Arc::new(on_method_call), - } - } -} - -#[async_trait] -impl RelayClient for Target { - type Error = TestError; - - async fn reconnect(&mut self) -> Result<(), TestError> { - unimplemented!() - } -} - -#[async_trait] -impl TargetClient for Target { - async fn best_header_id(&self) -> Result { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::BestHeaderId, &mut *data); - data.best_header_id.clone() - } - - async fn is_known_header(&self, id: TestHeaderId) -> Result<(TestHeaderId, bool), TestError> { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::IsKnownHeader(id), &mut *data); - data.is_known_header_by_hash - .get(&id.1) - .cloned() - .map(|is_known_header| Ok((id, is_known_header))) - .unwrap_or(Ok((id, false))) - } - - async fn submit_headers(&self, headers: Vec) -> SubmittedHeaders { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::SubmitHeaders(headers.clone()), &mut *data); - data.submitted_headers - .extend(headers.iter().map(|header| (header.id().1, header.clone()))); - data.submit_headers_result.take().expect("test must accept headers") - } - - async fn incomplete_headers_ids(&self) -> Result, TestError> { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::IncompleteHeadersIds, &mut *data); - if data.requires_completion { - Ok(data - .submitted_headers - .iter() - .filter(|(hash, _)| !data.completed_headers.contains_key(hash)) - .map(|(_, header)| header.id()) - .collect()) - } else { - Ok(HashSet::new()) - } - } - - async fn complete_header(&self, id: TestHeaderId, completion: TestCompletion) -> Result { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::CompleteHeader(id, completion), &mut *data); - data.completed_headers.insert(id.1, completion); - Ok(id) - } - - async fn requires_extra(&self, header: TestQueuedHeader) -> Result<(TestHeaderId, bool), TestError> { - let mut data = self.data.lock(); - (self.on_method_call)(TargetMethod::RequiresExtra(header.clone()), &mut *data); - if data.requires_extra { - Ok((header.id(), true)) - } else { - Ok((header.id(), false)) - } - } -} - -fn test_tick() -> Duration { - // in ideal world that should have been Duration::from_millis(0), because we do not want - // to sleep in tests at all, but that could lead to `select! {}` always waking on tick - // => not doing actual job - Duration::from_millis(10) -} - -fn test_id(number: TestNumber) -> TestHeaderId { - HeaderId(number, number) -} - -fn test_header(number: TestNumber) -> TestHeader { - let id = test_id(number); - TestHeader { - hash: id.1, - number: id.0, - parent_hash: if number == 0 { - TestHash::default() - } else { - test_id(number - 1).1 - }, - } -} - -fn test_forked_id(number: TestNumber, forked_from: TestNumber) -> TestHeaderId { - const FORK_OFFSET: TestNumber = 1000; - - if number == forked_from { - HeaderId(number, number) - } else { - HeaderId(number, FORK_OFFSET + number) - } -} - -fn test_forked_header(number: TestNumber, forked_from: TestNumber) -> TestHeader { - let id = test_forked_id(number, forked_from); - TestHeader { - hash: id.1, - number: id.0, - parent_hash: if number == 0 { - TestHash::default() - } else { - test_forked_id(number - 1, forked_from).1 - }, - } -} - -fn test_completion(id: TestHeaderId) -> TestCompletion { - id.0 -} - -fn test_extra(id: TestHeaderId) -> TestExtra { - id.0 -} - -fn source_reject_completion(method: &SourceMethod) { - if let SourceMethod::HeaderCompletion(_) = method { - unreachable!("HeaderCompletion request is not expected") - } -} - -fn source_reject_extra(method: &SourceMethod) { - if let SourceMethod::HeaderExtra(_, _) = method { - unreachable!("HeaderExtra request is not expected") - } -} - -fn target_accept_all_headers(method: &TargetMethod, data: &mut TargetData, requires_extra: bool) { - if let TargetMethod::SubmitHeaders(ref submitted) = method { - assert_eq!(submitted.iter().all(|header| header.extra().is_some()), requires_extra,); - - data.submit_headers_result = Some(SubmittedHeaders { - submitted: submitted.iter().map(|header| header.id()).collect(), - ..Default::default() - }); - } -} - -fn target_signal_exit_when_header_submitted( - method: &TargetMethod, - header_id: TestHeaderId, - exit_signal: &futures::channel::mpsc::UnboundedSender<()>, -) { - if let TargetMethod::SubmitHeaders(ref submitted) = method { - if submitted.iter().any(|header| header.id() == header_id) { - exit_signal.unbounded_send(()).unwrap(); - } - } -} - -fn target_signal_exit_when_header_completed( - method: &TargetMethod, - header_id: TestHeaderId, - exit_signal: &futures::channel::mpsc::UnboundedSender<()>, -) { - if let TargetMethod::CompleteHeader(completed_id, _) = method { - if *completed_id == header_id { - exit_signal.unbounded_send(()).unwrap(); - } - } -} - -fn run_backoff_test(result: Result<(), TestError>) -> (Duration, Duration) { - let mut backoff = retry_backoff(); - - // no randomness in tests (otherwise intervals may overlap => asserts are failing) - backoff.randomization_factor = 0f64; - - // increase backoff's current interval - let interval1 = backoff.next_backoff().unwrap(); - let interval2 = backoff.next_backoff().unwrap(); - assert!(interval2 > interval1); - - // successful future result leads to backoff's reset - let go_offline_future = futures::future::Fuse::terminated(); - futures::pin_mut!(go_offline_future); - - process_future_result( - result, - &mut backoff, - |_| {}, - &mut go_offline_future, - async_std::task::sleep, - || "Test error".into(), - ); - - (interval2, backoff.next_backoff().unwrap()) -} - -#[test] -fn process_future_result_resets_backoff_on_success() { - let (interval2, interval_after_reset) = run_backoff_test(Ok(())); - assert!(interval2 > interval_after_reset); -} - -#[test] -fn process_future_result_resets_backoff_on_connection_error() { - let (interval2, interval_after_reset) = run_backoff_test(Err(TestError(true))); - assert!(interval2 > interval_after_reset); -} - -#[test] -fn process_future_result_does_not_reset_backoff_on_non_connection_error() { - let (interval2, interval_after_reset) = run_backoff_test(Err(TestError(false))); - assert!(interval2 < interval_after_reset); -} - -struct SyncLoopTestParams { - best_source_header: TestHeader, - headers_on_source: Vec<(bool, TestHeader)>, - best_target_header: TestHeader, - headers_on_target: Vec, - target_requires_extra: bool, - target_requires_completion: bool, - stop_at: TestHeaderId, -} - -fn run_sync_loop_test(params: SyncLoopTestParams) { - let (exit_sender, exit_receiver) = futures::channel::mpsc::unbounded(); - let target_requires_extra = params.target_requires_extra; - let target_requires_completion = params.target_requires_completion; - let stop_at = params.stop_at; - let source = Source::new( - params.best_source_header.id(), - params.headers_on_source, - move |method, _| { - if !target_requires_extra { - source_reject_extra(&method); - } - if !target_requires_completion { - source_reject_completion(&method); - } - }, - ); - let target = Target::new( - params.best_target_header.id(), - params.headers_on_target.into_iter().map(|header| header.id()).collect(), - move |method, data| { - target_accept_all_headers(&method, data, target_requires_extra); - if target_requires_completion { - target_signal_exit_when_header_completed(&method, stop_at, &exit_sender); - } else { - target_signal_exit_when_header_submitted(&method, stop_at, &exit_sender); - } - }, - ); - target.data.lock().requires_extra = target_requires_extra; - target.data.lock().requires_completion = target_requires_completion; - - let _ = async_std::task::block_on(run( - source, - test_tick(), - target, - test_tick(), - (), - crate::sync::tests::default_sync_params(), - MetricsParams::disabled(), - exit_receiver.into_future().map(|(_, _)| ()), - )); -} - -#[test] -fn sync_loop_is_able_to_synchronize_single_header() { - run_sync_loop_test(SyncLoopTestParams { - best_source_header: test_header(1), - headers_on_source: vec![(true, test_header(1))], - best_target_header: test_header(0), - headers_on_target: vec![test_header(0)], - target_requires_extra: false, - target_requires_completion: false, - stop_at: test_id(1), - }); -} - -#[test] -fn sync_loop_is_able_to_synchronize_single_header_with_extra() { - run_sync_loop_test(SyncLoopTestParams { - best_source_header: test_header(1), - headers_on_source: vec![(true, test_header(1))], - best_target_header: test_header(0), - headers_on_target: vec![test_header(0)], - target_requires_extra: true, - target_requires_completion: false, - stop_at: test_id(1), - }); -} - -#[test] -fn sync_loop_is_able_to_synchronize_single_header_with_completion() { - run_sync_loop_test(SyncLoopTestParams { - best_source_header: test_header(1), - headers_on_source: vec![(true, test_header(1))], - best_target_header: test_header(0), - headers_on_target: vec![test_header(0)], - target_requires_extra: false, - target_requires_completion: true, - stop_at: test_id(1), - }); -} - -#[test] -fn sync_loop_is_able_to_reorganize_from_shorter_fork() { - run_sync_loop_test(SyncLoopTestParams { - best_source_header: test_header(3), - headers_on_source: vec![ - (true, test_header(1)), - (true, test_header(2)), - (true, test_header(3)), - (false, test_forked_header(1, 0)), - (false, test_forked_header(2, 0)), - ], - best_target_header: test_forked_header(2, 0), - headers_on_target: vec![test_header(0), test_forked_header(1, 0), test_forked_header(2, 0)], - target_requires_extra: false, - target_requires_completion: false, - stop_at: test_id(3), - }); -} - -#[test] -fn sync_loop_is_able_to_reorganize_from_longer_fork() { - run_sync_loop_test(SyncLoopTestParams { - best_source_header: test_header(3), - headers_on_source: vec![ - (true, test_header(1)), - (true, test_header(2)), - (true, test_header(3)), - (false, test_forked_header(1, 0)), - (false, test_forked_header(2, 0)), - (false, test_forked_header(3, 0)), - (false, test_forked_header(4, 0)), - (false, test_forked_header(5, 0)), - ], - best_target_header: test_forked_header(5, 0), - headers_on_target: vec![ - test_header(0), - test_forked_header(1, 0), - test_forked_header(2, 0), - test_forked_header(3, 0), - test_forked_header(4, 0), - test_forked_header(5, 0), - ], - target_requires_extra: false, - target_requires_completion: false, - stop_at: test_id(3), - }); -} diff --git a/bridges/relays/headers/src/sync_types.rs b/bridges/relays/headers/src/sync_types.rs deleted file mode 100644 index 5809ebab59e1..000000000000 --- a/bridges/relays/headers/src/sync_types.rs +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Types that are used by headers synchronization components. - -use relay_utils::{format_ids, HeaderId}; -use std::{ops::Deref, sync::Arc}; - -/// Ethereum header synchronization status. -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum HeaderStatus { - /// Header is unknown. - Unknown, - /// Header is in MaybeOrphan queue. - MaybeOrphan, - /// Header is in Orphan queue. - Orphan, - /// Header is in MaybeExtra queue. - MaybeExtra, - /// Header is in Extra queue. - Extra, - /// Header is in Ready queue. - Ready, - /// Header is in Incomplete queue. - Incomplete, - /// Header has been recently submitted to the target node. - Submitted, - /// Header is known to the target node. - Synced, -} - -/// Headers synchronization pipeline. -pub trait HeadersSyncPipeline: 'static + Clone + Send + Sync { - /// Name of the headers source. - const SOURCE_NAME: &'static str; - /// Name of the headers target. - const TARGET_NAME: &'static str; - - /// Headers we're syncing are identified by this hash. - type Hash: Eq + Clone + Copy + Send + Sync + std::fmt::Debug + std::fmt::Display + std::hash::Hash; - /// Headers we're syncing are identified by this number. - type Number: relay_utils::BlockNumberBase; - /// Type of header that we're syncing. - type Header: SourceHeader; - /// Type of extra data for the header that we're receiving from the source node: - /// 1) extra data is required for some headers; - /// 2) target node may answer if it'll require extra data before header is submitted; - /// 3) extra data available since the header creation time; - /// 4) header and extra data are submitted in single transaction. - /// - /// Example: Ethereum transactions receipts. - type Extra: Clone + Send + Sync + PartialEq + std::fmt::Debug; - /// Type of data required to 'complete' header that we're receiving from the source node: - /// 1) completion data is required for some headers; - /// 2) target node can't answer if it'll require completion data before header is accepted; - /// 3) completion data may be generated after header generation; - /// 4) header and completion data are submitted in separate transactions. - /// - /// Example: Substrate GRANDPA justifications. - type Completion: Clone + Send + Sync + std::fmt::Debug; - - /// Function used to estimate size of target-encoded header. - fn estimate_size(source: &QueuedHeader) -> usize; -} - -/// A HeaderId for `HeaderSyncPipeline`. -pub type HeaderIdOf

= HeaderId<

::Hash,

::Number>; - -/// Header that we're receiving from source node. -pub trait SourceHeader: Clone + std::fmt::Debug + PartialEq + Send + Sync { - /// Returns ID of header. - fn id(&self) -> HeaderId; - /// Returns ID of parent header. - /// - /// Panics if called for genesis header. - fn parent_id(&self) -> HeaderId; -} - -/// Header how it's stored in the synchronization queue. -#[derive(Clone, Debug, PartialEq)] -pub struct QueuedHeader(Arc>); - -impl QueuedHeader

{ - /// Creates new queued header. - pub fn new(header: P::Header) -> Self { - QueuedHeader(Arc::new(QueuedHeaderData { header, extra: None })) - } - - /// Set associated extra data. - pub fn set_extra(self, extra: P::Extra) -> Self { - QueuedHeader(Arc::new(QueuedHeaderData { - header: Arc::try_unwrap(self.0) - .map(|data| data.header) - .unwrap_or_else(|data| data.header.clone()), - extra: Some(extra), - })) - } -} - -impl Deref for QueuedHeader

{ - type Target = QueuedHeaderData

; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -/// Header how it's stored in the synchronization queue. -#[derive(Clone, Debug, Default, PartialEq)] -pub struct QueuedHeaderData { - header: P::Header, - extra: Option, -} - -impl QueuedHeader

{ - /// Returns ID of header. - pub fn id(&self) -> HeaderId { - self.header.id() - } - - /// Returns ID of parent header. - pub fn parent_id(&self) -> HeaderId { - self.header.parent_id() - } - - /// Returns reference to header. - pub fn header(&self) -> &P::Header { - &self.header - } - - /// Returns reference to associated extra data. - pub fn extra(&self) -> &Option { - &self.extra - } -} - -/// Headers submission result. -#[derive(Debug)] -#[cfg_attr(test, derive(PartialEq))] -pub struct SubmittedHeaders { - /// IDs of headers that have been submitted to target node. - pub submitted: Vec, - /// IDs of incomplete headers. These headers were submitted (so this id is also in `submitted` vec), - /// but all descendants are not. - pub incomplete: Vec, - /// IDs of ignored headers that we have decided not to submit (they're either rejected by - /// target node immediately, or they're descendants of incomplete headers). - pub rejected: Vec, - /// Fatal target node error, if it has occured during submission. - pub fatal_error: Option, -} - -impl Default for SubmittedHeaders { - fn default() -> Self { - SubmittedHeaders { - submitted: Vec::new(), - incomplete: Vec::new(), - rejected: Vec::new(), - fatal_error: None, - } - } -} - -impl std::fmt::Display for SubmittedHeaders { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - let submitted = format_ids(self.submitted.iter()); - let incomplete = format_ids(self.incomplete.iter()); - let rejected = format_ids(self.rejected.iter()); - - write!( - f, - "Submitted: {}, Incomplete: {}, Rejected: {}", - submitted, incomplete, rejected - ) - } -} diff --git a/bridges/relays/messages/Cargo.toml b/bridges/relays/messages/Cargo.toml deleted file mode 100644 index ea5d46845c5a..000000000000 --- a/bridges/relays/messages/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "messages-relay" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -async-std = { version = "1.6.5", features = ["attributes"] } -async-trait = "0.1.40" -futures = "0.3.5" -hex = "0.4" -log = "0.4.11" -num-traits = "0.2" -parking_lot = "0.11.0" - -# Bridge Dependencies - -bp-messages = { path = "../../primitives/messages" } -bp-runtime = { path = "../../primitives/runtime" } -relay-utils = { path = "../utils" } diff --git a/bridges/relays/messages/src/lib.rs b/bridges/relays/messages/src/lib.rs deleted file mode 100644 index cdd94bca9541..000000000000 --- a/bridges/relays/messages/src/lib.rs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Relaying [`pallet-bridge-messages`](../pallet_bridge_messages/index.html) application specific -//! data. Message lane allows sending arbitrary messages between bridged chains. This -//! module provides entrypoint that starts reading messages from given message lane -//! of source chain and submits proof-of-message-at-source-chain transactions to the -//! target chain. Additionaly, proofs-of-messages-delivery are sent back from the -//! target chain to the source chain. - -// required for futures::select! -#![recursion_limit = "1024"] -#![warn(missing_docs)] - -mod metrics; - -pub mod message_lane; -pub mod message_lane_loop; - -mod message_race_delivery; -mod message_race_loop; -mod message_race_receiving; -mod message_race_strategy; diff --git a/bridges/relays/messages/src/message_race_delivery.rs b/bridges/relays/messages/src/message_race_delivery.rs deleted file mode 100644 index bde09af7068f..000000000000 --- a/bridges/relays/messages/src/message_race_delivery.rs +++ /dev/null @@ -1,1247 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -//! Message delivery race delivers proof-of-messages from lane.source to lane.target. - -use crate::message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}; -use crate::message_lane_loop::{ - MessageDeliveryParams, MessageDetailsMap, MessageProofParameters, RelayerMode, - SourceClient as MessageLaneSourceClient, SourceClientState, TargetClient as MessageLaneTargetClient, - TargetClientState, -}; -use crate::message_race_loop::{ - MessageRace, NoncesRange, RaceState, RaceStrategy, SourceClient, SourceClientNonces, TargetClient, - TargetClientNonces, -}; -use crate::message_race_strategy::{BasicStrategy, SourceRangesQueue}; -use crate::metrics::MessageLaneLoopMetrics; - -use async_trait::async_trait; -use bp_messages::{MessageNonce, UnrewardedRelayersState, Weight}; -use bp_runtime::messages::DispatchFeePayment; -use futures::stream::FusedStream; -use num_traits::{SaturatingAdd, Zero}; -use relay_utils::FailedClient; -use std::{ - collections::VecDeque, - marker::PhantomData, - ops::{Range, RangeInclusive}, - time::Duration, -}; - -/// Run message delivery race. -pub async fn run( - source_client: impl MessageLaneSourceClient

, - source_state_updates: impl FusedStream>, - target_client: impl MessageLaneTargetClient

, - target_state_updates: impl FusedStream>, - stall_timeout: Duration, - metrics_msg: Option, - params: MessageDeliveryParams, -) -> Result<(), FailedClient> { - crate::message_race_loop::run( - MessageDeliveryRaceSource { - client: source_client.clone(), - metrics_msg: metrics_msg.clone(), - _phantom: Default::default(), - }, - source_state_updates, - MessageDeliveryRaceTarget { - client: target_client.clone(), - metrics_msg, - _phantom: Default::default(), - }, - target_state_updates, - stall_timeout, - MessageDeliveryStrategy:: { - lane_source_client: source_client, - lane_target_client: target_client, - max_unrewarded_relayer_entries_at_target: params.max_unrewarded_relayer_entries_at_target, - max_unconfirmed_nonces_at_target: params.max_unconfirmed_nonces_at_target, - max_messages_in_single_batch: params.max_messages_in_single_batch, - max_messages_weight_in_single_batch: params.max_messages_weight_in_single_batch, - max_messages_size_in_single_batch: params.max_messages_size_in_single_batch, - relayer_mode: params.relayer_mode, - latest_confirmed_nonces_at_source: VecDeque::new(), - target_nonces: None, - strategy: BasicStrategy::new(), - }, - ) - .await -} - -/// Message delivery race. -struct MessageDeliveryRace

(std::marker::PhantomData

); - -impl MessageRace for MessageDeliveryRace

{ - type SourceHeaderId = SourceHeaderIdOf

; - type TargetHeaderId = TargetHeaderIdOf

; - - type MessageNonce = MessageNonce; - type Proof = P::MessagesProof; - - fn source_name() -> String { - format!("{}::MessagesDelivery", P::SOURCE_NAME) - } - - fn target_name() -> String { - format!("{}::MessagesDelivery", P::TARGET_NAME) - } -} - -/// Message delivery race source, which is a source of the lane. -struct MessageDeliveryRaceSource { - client: C, - metrics_msg: Option, - _phantom: PhantomData

, -} - -#[async_trait] -impl SourceClient> for MessageDeliveryRaceSource -where - P: MessageLane, - C: MessageLaneSourceClient

, -{ - type Error = C::Error; - type NoncesRange = MessageDetailsMap; - type ProofParameters = MessageProofParameters; - - async fn nonces( - &self, - at_block: SourceHeaderIdOf

, - prev_latest_nonce: MessageNonce, - ) -> Result<(SourceHeaderIdOf

, SourceClientNonces), Self::Error> { - let (at_block, latest_generated_nonce) = self.client.latest_generated_nonce(at_block).await?; - let (at_block, latest_confirmed_nonce) = self.client.latest_confirmed_received_nonce(at_block).await?; - - if let Some(metrics_msg) = self.metrics_msg.as_ref() { - metrics_msg.update_source_latest_generated_nonce::

(latest_generated_nonce); - metrics_msg.update_source_latest_confirmed_nonce::

(latest_confirmed_nonce); - } - - let new_nonces = if latest_generated_nonce > prev_latest_nonce { - self.client - .generated_message_details(at_block.clone(), prev_latest_nonce + 1..=latest_generated_nonce) - .await? - } else { - MessageDetailsMap::new() - }; - - Ok(( - at_block, - SourceClientNonces { - new_nonces, - confirmed_nonce: Some(latest_confirmed_nonce), - }, - )) - } - - async fn generate_proof( - &self, - at_block: SourceHeaderIdOf

, - nonces: RangeInclusive, - proof_parameters: Self::ProofParameters, - ) -> Result<(SourceHeaderIdOf

, RangeInclusive, P::MessagesProof), Self::Error> { - self.client.prove_messages(at_block, nonces, proof_parameters).await - } -} - -/// Message delivery race target, which is a target of the lane. -struct MessageDeliveryRaceTarget { - client: C, - metrics_msg: Option, - _phantom: PhantomData

, -} - -#[async_trait] -impl TargetClient> for MessageDeliveryRaceTarget -where - P: MessageLane, - C: MessageLaneTargetClient

, -{ - type Error = C::Error; - type TargetNoncesData = DeliveryRaceTargetNoncesData; - - async fn require_source_header(&self, id: SourceHeaderIdOf

) { - self.client.require_source_header_on_target(id).await - } - - async fn nonces( - &self, - at_block: TargetHeaderIdOf

, - update_metrics: bool, - ) -> Result<(TargetHeaderIdOf

, TargetClientNonces), Self::Error> { - let (at_block, latest_received_nonce) = self.client.latest_received_nonce(at_block).await?; - let (at_block, latest_confirmed_nonce) = self.client.latest_confirmed_received_nonce(at_block).await?; - let (at_block, unrewarded_relayers) = self.client.unrewarded_relayers_state(at_block).await?; - - if update_metrics { - if let Some(metrics_msg) = self.metrics_msg.as_ref() { - metrics_msg.update_target_latest_received_nonce::

(latest_received_nonce); - metrics_msg.update_target_latest_confirmed_nonce::

(latest_confirmed_nonce); - } - } - - Ok(( - at_block, - TargetClientNonces { - latest_nonce: latest_received_nonce, - nonces_data: DeliveryRaceTargetNoncesData { - confirmed_nonce: latest_confirmed_nonce, - unrewarded_relayers, - }, - }, - )) - } - - async fn submit_proof( - &self, - generated_at_block: SourceHeaderIdOf

, - nonces: RangeInclusive, - proof: P::MessagesProof, - ) -> Result, Self::Error> { - self.client - .submit_messages_proof(generated_at_block, nonces, proof) - .await - } -} - -/// Additional nonces data from the target client used by message delivery race. -#[derive(Debug, Clone)] -struct DeliveryRaceTargetNoncesData { - /// Latest nonce that we know: (1) has been delivered to us (2) has been confirmed - /// back to the source node (by confirmations race) and (3) relayer has received - /// reward for (and this has been confirmed by the message delivery race). - confirmed_nonce: MessageNonce, - /// State of the unrewarded relayers set at the target node. - unrewarded_relayers: UnrewardedRelayersState, -} - -/// Messages delivery strategy. -struct MessageDeliveryStrategy { - /// The client that is connected to the message lane source node. - lane_source_client: SC, - /// The client that is connected to the message lane target node. - lane_target_client: TC, - /// Maximal unrewarded relayer entries at target client. - max_unrewarded_relayer_entries_at_target: MessageNonce, - /// Maximal unconfirmed nonces at target client. - max_unconfirmed_nonces_at_target: MessageNonce, - /// Maximal number of messages in the single delivery transaction. - max_messages_in_single_batch: MessageNonce, - /// Maximal cumulative messages weight in the single delivery transaction. - max_messages_weight_in_single_batch: Weight, - /// Maximal messages size in the single delivery transaction. - max_messages_size_in_single_batch: u32, - /// Relayer operating mode. - relayer_mode: RelayerMode, - /// Latest confirmed nonces at the source client + the header id where we have first met this nonce. - latest_confirmed_nonces_at_source: VecDeque<(SourceHeaderIdOf

, MessageNonce)>, - /// Target nonces from the source client. - target_nonces: Option>, - /// Basic delivery strategy. - strategy: MessageDeliveryStrategyBase

, -} - -type MessageDeliveryStrategyBase

= BasicStrategy< -

::SourceHeaderNumber, -

::SourceHeaderHash, -

::TargetHeaderNumber, -

::TargetHeaderHash, - MessageDetailsMap<

::SourceChainBalance>, -

::MessagesProof, ->; - -impl std::fmt::Debug for MessageDeliveryStrategy { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - fmt.debug_struct("MessageDeliveryStrategy") - .field( - "max_unrewarded_relayer_entries_at_target", - &self.max_unrewarded_relayer_entries_at_target, - ) - .field( - "max_unconfirmed_nonces_at_target", - &self.max_unconfirmed_nonces_at_target, - ) - .field("max_messages_in_single_batch", &self.max_messages_in_single_batch) - .field( - "max_messages_weight_in_single_batch", - &self.max_messages_weight_in_single_batch, - ) - .field( - "max_messages_size_in_single_batch", - &self.max_messages_size_in_single_batch, - ) - .field( - "latest_confirmed_nonces_at_source", - &self.latest_confirmed_nonces_at_source, - ) - .field("target_nonces", &self.target_nonces) - .field("strategy", &self.strategy) - .finish() - } -} - -impl MessageDeliveryStrategy { - /// Returns total weight of all undelivered messages. - fn total_queued_dispatch_weight(&self) -> Weight { - self.strategy - .source_queue() - .iter() - .flat_map(|(_, range)| range.values().map(|details| details.dispatch_weight)) - .fold(0, |total, weight| total.saturating_add(weight)) - } -} - -#[async_trait] -impl RaceStrategy, TargetHeaderIdOf

, P::MessagesProof> - for MessageDeliveryStrategy -where - P: MessageLane, - SC: MessageLaneSourceClient

, - TC: MessageLaneTargetClient

, -{ - type SourceNoncesRange = MessageDetailsMap; - type ProofParameters = MessageProofParameters; - type TargetNoncesData = DeliveryRaceTargetNoncesData; - - fn is_empty(&self) -> bool { - self.strategy.is_empty() - } - - fn required_source_header_at_target(&self, current_best: &SourceHeaderIdOf

) -> Option> { - let header_required_for_messages_delivery = self.strategy.required_source_header_at_target(current_best); - let header_required_for_reward_confirmations_delivery = - self.latest_confirmed_nonces_at_source.back().map(|(id, _)| id.clone()); - match ( - header_required_for_messages_delivery, - header_required_for_reward_confirmations_delivery, - ) { - (Some(id1), Some(id2)) => Some(if id1.0 > id2.0 { id1 } else { id2 }), - (a, b) => a.or(b), - } - } - - fn best_at_source(&self) -> Option { - self.strategy.best_at_source() - } - - fn best_at_target(&self) -> Option { - self.strategy.best_at_target() - } - - fn source_nonces_updated( - &mut self, - at_block: SourceHeaderIdOf

, - nonces: SourceClientNonces, - ) { - if let Some(confirmed_nonce) = nonces.confirmed_nonce { - let is_confirmed_nonce_updated = self - .latest_confirmed_nonces_at_source - .back() - .map(|(_, prev_nonce)| *prev_nonce != confirmed_nonce) - .unwrap_or(true); - if is_confirmed_nonce_updated { - self.latest_confirmed_nonces_at_source - .push_back((at_block.clone(), confirmed_nonce)); - } - } - self.strategy.source_nonces_updated(at_block, nonces) - } - - fn best_target_nonces_updated( - &mut self, - nonces: TargetClientNonces, - race_state: &mut RaceState, TargetHeaderIdOf

, P::MessagesProof>, - ) { - // best target nonces must always be ge than finalized target nonces - let mut target_nonces = self.target_nonces.take().unwrap_or_else(|| nonces.clone()); - target_nonces.nonces_data = nonces.nonces_data.clone(); - target_nonces.latest_nonce = std::cmp::max(target_nonces.latest_nonce, nonces.latest_nonce); - self.target_nonces = Some(target_nonces); - - self.strategy.best_target_nonces_updated( - TargetClientNonces { - latest_nonce: nonces.latest_nonce, - nonces_data: (), - }, - race_state, - ) - } - - fn finalized_target_nonces_updated( - &mut self, - nonces: TargetClientNonces, - race_state: &mut RaceState, TargetHeaderIdOf

, P::MessagesProof>, - ) { - if let Some(ref best_finalized_source_header_id_at_best_target) = - race_state.best_finalized_source_header_id_at_best_target - { - let oldest_header_number_to_keep = best_finalized_source_header_id_at_best_target.0; - while self - .latest_confirmed_nonces_at_source - .front() - .map(|(id, _)| id.0 < oldest_header_number_to_keep) - .unwrap_or(false) - { - self.latest_confirmed_nonces_at_source.pop_front(); - } - } - - if let Some(ref mut target_nonces) = self.target_nonces { - target_nonces.latest_nonce = std::cmp::max(target_nonces.latest_nonce, nonces.latest_nonce); - } - - self.strategy.finalized_target_nonces_updated( - TargetClientNonces { - latest_nonce: nonces.latest_nonce, - nonces_data: (), - }, - race_state, - ) - } - - async fn select_nonces_to_deliver( - &mut self, - race_state: RaceState, TargetHeaderIdOf

, P::MessagesProof>, - ) -> Option<(RangeInclusive, Self::ProofParameters)> { - let best_finalized_source_header_id_at_best_target = - race_state.best_finalized_source_header_id_at_best_target.clone()?; - let latest_confirmed_nonce_at_source = self - .latest_confirmed_nonces_at_source - .iter() - .take_while(|(id, _)| id.0 <= best_finalized_source_header_id_at_best_target.0) - .last() - .map(|(_, nonce)| *nonce)?; - let target_nonces = self.target_nonces.as_ref()?; - - // There's additional condition in the message delivery race: target would reject messages - // if there are too much unconfirmed messages at the inbound lane. - - // The receiving race is responsible to deliver confirmations back to the source chain. So if - // there's a lot of unconfirmed messages, let's wait until it'll be able to do its job. - let latest_received_nonce_at_target = target_nonces.latest_nonce; - let confirmations_missing = latest_received_nonce_at_target.checked_sub(latest_confirmed_nonce_at_source); - match confirmations_missing { - Some(confirmations_missing) if confirmations_missing >= self.max_unconfirmed_nonces_at_target => { - log::debug!( - target: "bridge", - "Cannot deliver any more messages from {} to {}. Too many unconfirmed nonces \ - at target: target.latest_received={:?}, source.latest_confirmed={:?}, max={:?}", - MessageDeliveryRace::

::source_name(), - MessageDeliveryRace::

::target_name(), - latest_received_nonce_at_target, - latest_confirmed_nonce_at_source, - self.max_unconfirmed_nonces_at_target, - ); - - return None; - } - _ => (), - } - - // Ok - we may have new nonces to deliver. But target may still reject new messages, because we haven't - // notified it that (some) messages have been confirmed. So we may want to include updated - // `source.latest_confirmed` in the proof. - // - // Important note: we're including outbound state lane proof whenever there are unconfirmed nonces - // on the target chain. Other strategy is to include it only if it's absolutely necessary. - let latest_confirmed_nonce_at_target = target_nonces.nonces_data.confirmed_nonce; - let outbound_state_proof_required = latest_confirmed_nonce_at_target < latest_confirmed_nonce_at_source; - - // The target node would also reject messages if there are too many entries in the - // "unrewarded relayers" set. If we are unable to prove new rewards to the target node, then - // we should wait for confirmations race. - let unrewarded_relayer_entries_limit_reached = - target_nonces.nonces_data.unrewarded_relayers.unrewarded_relayer_entries - >= self.max_unrewarded_relayer_entries_at_target; - if unrewarded_relayer_entries_limit_reached { - // so there are already too many unrewarded relayer entries in the set - // - // => check if we can prove enough rewards. If not, we should wait for more rewards to be paid - let number_of_rewards_being_proved = - latest_confirmed_nonce_at_source.saturating_sub(latest_confirmed_nonce_at_target); - let enough_rewards_being_proved = number_of_rewards_being_proved - >= target_nonces.nonces_data.unrewarded_relayers.messages_in_oldest_entry; - if !enough_rewards_being_proved { - return None; - } - } - - // If we're here, then the confirmations race did its job && sending side now knows that messages - // have been delivered. Now let's select nonces that we want to deliver. - // - // We may deliver at most: - // - // max_unconfirmed_nonces_at_target - (latest_received_nonce_at_target - latest_confirmed_nonce_at_target) - // - // messages in the batch. But since we're including outbound state proof in the batch, then it - // may be increased to: - // - // max_unconfirmed_nonces_at_target - (latest_received_nonce_at_target - latest_confirmed_nonce_at_source) - let future_confirmed_nonce_at_target = if outbound_state_proof_required { - latest_confirmed_nonce_at_source - } else { - latest_confirmed_nonce_at_target - }; - let max_nonces = latest_received_nonce_at_target - .checked_sub(future_confirmed_nonce_at_target) - .and_then(|diff| self.max_unconfirmed_nonces_at_target.checked_sub(diff)) - .unwrap_or_default(); - let max_nonces = std::cmp::min(max_nonces, self.max_messages_in_single_batch); - let max_messages_weight_in_single_batch = self.max_messages_weight_in_single_batch; - let max_messages_size_in_single_batch = self.max_messages_size_in_single_batch; - let relayer_mode = self.relayer_mode; - let lane_source_client = self.lane_source_client.clone(); - let lane_target_client = self.lane_target_client.clone(); - - let maximal_source_queue_index = self.strategy.maximal_available_source_queue_index(race_state)?; - let previous_total_dispatch_weight = self.total_queued_dispatch_weight(); - let source_queue = self.strategy.source_queue(); - let range_end = select_nonces_for_delivery_transaction( - relayer_mode, - max_nonces, - max_messages_weight_in_single_batch, - max_messages_size_in_single_batch, - lane_source_client.clone(), - lane_target_client.clone(), - source_queue, - 0..maximal_source_queue_index + 1, - ) - .await?; - - let range_begin = source_queue[0].1.begin(); - let selected_nonces = range_begin..=range_end; - self.strategy.remove_le_nonces_from_source_queue(range_end); - - let new_total_dispatch_weight = self.total_queued_dispatch_weight(); - let dispatch_weight = previous_total_dispatch_weight - new_total_dispatch_weight; - - Some(( - selected_nonces, - MessageProofParameters { - outbound_state_proof_required, - dispatch_weight, - }, - )) - } -} - -/// From given set of source nonces, that are ready to be delivered, select nonces -/// to fit into single delivery transaction. -/// -/// The function returns nonces that are NOT selected for current batch and will be -/// delivered later. -#[allow(clippy::too_many_arguments)] -async fn select_nonces_for_delivery_transaction( - relayer_mode: RelayerMode, - max_messages_in_this_batch: MessageNonce, - max_messages_weight_in_single_batch: Weight, - max_messages_size_in_single_batch: u32, - lane_source_client: impl MessageLaneSourceClient

, - lane_target_client: impl MessageLaneTargetClient

, - nonces_queue: &SourceRangesQueue< - P::SourceHeaderHash, - P::SourceHeaderNumber, - MessageDetailsMap, - >, - nonces_queue_range: Range, -) -> Option { - let mut hard_selected_count = 0; - let mut soft_selected_count = 0; - - let mut selected_weight: Weight = 0; - let mut selected_unpaid_weight: Weight = 0; - let mut selected_size: u32 = 0; - let mut selected_count: MessageNonce = 0; - - let mut total_reward = P::SourceChainBalance::zero(); - let mut total_confirmations_cost = P::SourceChainBalance::zero(); - let mut total_cost = P::SourceChainBalance::zero(); - - // technically, multiple confirmations will be delivered in a single transaction, - // meaning less loses for relayer. But here we don't know the final relayer yet, so - // we're adding a separate transaction for every message. Normally, this cost is covered - // by the message sender. Probably reconsider this? - let confirmation_transaction_cost = if relayer_mode != RelayerMode::Altruistic { - lane_source_client.estimate_confirmation_transaction().await - } else { - Zero::zero() - }; - - let all_ready_nonces = nonces_queue - .range(nonces_queue_range.clone()) - .flat_map(|(_, ready_nonces)| ready_nonces.iter()) - .enumerate(); - for (index, (nonce, details)) in all_ready_nonces { - // Since we (hopefully) have some reserves in `max_messages_weight_in_single_batch` - // and `max_messages_size_in_single_batch`, we may still try to submit transaction - // with single message if message overflows these limits. The worst case would be if - // transaction will be rejected by the target runtime, but at least we have tried. - - // limit messages in the batch by weight - let new_selected_weight = match selected_weight.checked_add(details.dispatch_weight) { - Some(new_selected_weight) if new_selected_weight <= max_messages_weight_in_single_batch => { - new_selected_weight - } - new_selected_weight if selected_count == 0 => { - log::warn!( - target: "bridge", - "Going to submit message delivery transaction with declared dispatch \ - weight {:?} that overflows maximal configured weight {}", - new_selected_weight, - max_messages_weight_in_single_batch, - ); - new_selected_weight.unwrap_or(Weight::MAX) - } - _ => break, - }; - - // limit messages in the batch by size - let new_selected_size = match selected_size.checked_add(details.size) { - Some(new_selected_size) if new_selected_size <= max_messages_size_in_single_batch => new_selected_size, - new_selected_size if selected_count == 0 => { - log::warn!( - target: "bridge", - "Going to submit message delivery transaction with message \ - size {:?} that overflows maximal configured size {}", - new_selected_size, - max_messages_size_in_single_batch, - ); - new_selected_size.unwrap_or(u32::MAX) - } - _ => break, - }; - - // limit number of messages in the batch - let new_selected_count = selected_count + 1; - if new_selected_count > max_messages_in_this_batch { - break; - } - - // If dispatch fee has been paid at the source chain, it means that it is **relayer** who's - // paying for dispatch at the target chain AND reward must cover this dispatch fee. - // - // If dispatch fee is paid at the target chain, it means that it'll be withdrawn from the - // dispatch origin account AND reward is not covering this fee. - // - // So in the latter case we're not adding the dispatch weight to the delivery transaction weight. - let new_selected_unpaid_weight = match details.dispatch_fee_payment { - DispatchFeePayment::AtSourceChain => selected_unpaid_weight.saturating_add(details.dispatch_weight), - DispatchFeePayment::AtTargetChain => selected_unpaid_weight, - }; - - // now the message has passed all 'strong' checks, and we CAN deliver it. But do we WANT - // to deliver it? It depends on the relayer strategy. - match relayer_mode { - RelayerMode::Altruistic => { - soft_selected_count = index + 1; - } - RelayerMode::NoLosses => { - let delivery_transaction_cost = lane_target_client - .estimate_delivery_transaction_in_source_tokens( - 0..=(new_selected_count as MessageNonce - 1), - new_selected_unpaid_weight, - new_selected_size as u32, - ) - .await; - - // if it is the first message that makes reward less than cost, let's log it - // if this message makes batch profitable again, let's log it - let is_total_reward_less_than_cost = total_reward < total_cost; - let prev_total_cost = total_cost; - let prev_total_reward = total_reward; - total_confirmations_cost = total_confirmations_cost.saturating_add(&confirmation_transaction_cost); - total_reward = total_reward.saturating_add(&details.reward); - total_cost = total_confirmations_cost.saturating_add(&delivery_transaction_cost); - if !is_total_reward_less_than_cost && total_reward < total_cost { - log::debug!( - target: "bridge", - "Message with nonce {} (reward = {:?}) changes total cost {:?}->{:?} and makes it larger than \ - total reward {:?}->{:?}", - nonce, - details.reward, - prev_total_cost, - total_cost, - prev_total_reward, - total_reward, - ); - } else if is_total_reward_less_than_cost && total_reward >= total_cost { - log::debug!( - target: "bridge", - "Message with nonce {} (reward = {:?}) changes total cost {:?}->{:?} and makes it less than or \ - equal to the total reward {:?}->{:?} (again)", - nonce, - details.reward, - prev_total_cost, - total_cost, - prev_total_reward, - total_reward, - ); - } - - // NoLosses relayer never want to lose his funds - if total_reward >= total_cost { - soft_selected_count = index + 1; - } - } - } - - hard_selected_count = index + 1; - selected_weight = new_selected_weight; - selected_unpaid_weight = new_selected_unpaid_weight; - selected_size = new_selected_size; - selected_count = new_selected_count; - } - - let hard_selected_begin_nonce = nonces_queue[nonces_queue_range.start].1.begin(); - if hard_selected_count != soft_selected_count { - let hard_selected_end_nonce = hard_selected_begin_nonce + hard_selected_count as MessageNonce - 1; - let soft_selected_begin_nonce = hard_selected_begin_nonce; - let soft_selected_end_nonce = soft_selected_begin_nonce + soft_selected_count as MessageNonce - 1; - log::warn!( - target: "bridge", - "Relayer may deliver nonces [{:?}; {:?}], but because of its strategy ({:?}) it has selected \ - nonces [{:?}; {:?}].", - hard_selected_begin_nonce, - hard_selected_end_nonce, - relayer_mode, - soft_selected_begin_nonce, - soft_selected_end_nonce, - ); - - hard_selected_count = soft_selected_count; - } - - if hard_selected_count != 0 { - Some(hard_selected_begin_nonce + hard_selected_count as MessageNonce - 1) - } else { - None - } -} - -impl NoncesRange for MessageDetailsMap { - fn begin(&self) -> MessageNonce { - self.keys().next().cloned().unwrap_or_default() - } - - fn end(&self) -> MessageNonce { - self.keys().next_back().cloned().unwrap_or_default() - } - - fn greater_than(mut self, nonce: MessageNonce) -> Option { - let gte = self.split_off(&(nonce + 1)); - if gte.is_empty() { - None - } else { - Some(gte) - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::message_lane_loop::{ - tests::{ - header_id, TestMessageLane, TestMessagesProof, TestSourceChainBalance, TestSourceClient, - TestSourceHeaderId, TestTargetClient, TestTargetHeaderId, BASE_MESSAGE_DELIVERY_TRANSACTION_COST, - CONFIRMATION_TRANSACTION_COST, - }, - MessageDetails, - }; - use bp_runtime::messages::DispatchFeePayment::*; - - const DEFAULT_DISPATCH_WEIGHT: Weight = 1; - const DEFAULT_SIZE: u32 = 1; - const DEFAULT_REWARD: TestSourceChainBalance = CONFIRMATION_TRANSACTION_COST - + BASE_MESSAGE_DELIVERY_TRANSACTION_COST - + DEFAULT_DISPATCH_WEIGHT - + (DEFAULT_SIZE as TestSourceChainBalance); - - type TestRaceState = RaceState; - type TestStrategy = MessageDeliveryStrategy; - - fn source_nonces( - new_nonces: RangeInclusive, - confirmed_nonce: MessageNonce, - reward: TestSourceChainBalance, - dispatch_fee_payment: DispatchFeePayment, - ) -> SourceClientNonces> { - SourceClientNonces { - new_nonces: new_nonces - .into_iter() - .map(|nonce| { - ( - nonce, - MessageDetails { - dispatch_weight: DEFAULT_DISPATCH_WEIGHT, - size: DEFAULT_SIZE, - reward, - dispatch_fee_payment, - }, - ) - }) - .into_iter() - .collect(), - confirmed_nonce: Some(confirmed_nonce), - } - } - - fn prepare_strategy() -> (TestRaceState, TestStrategy) { - let mut race_state = RaceState { - best_finalized_source_header_id_at_source: Some(header_id(1)), - best_finalized_source_header_id_at_best_target: Some(header_id(1)), - best_target_header_id: Some(header_id(1)), - best_finalized_target_header_id: Some(header_id(1)), - nonces_to_submit: None, - nonces_submitted: None, - }; - - let mut race_strategy = TestStrategy { - relayer_mode: RelayerMode::Altruistic, - max_unrewarded_relayer_entries_at_target: 4, - max_unconfirmed_nonces_at_target: 4, - max_messages_in_single_batch: 4, - max_messages_weight_in_single_batch: 4, - max_messages_size_in_single_batch: 4, - latest_confirmed_nonces_at_source: vec![(header_id(1), 19)].into_iter().collect(), - lane_source_client: TestSourceClient::default(), - lane_target_client: TestTargetClient::default(), - target_nonces: Some(TargetClientNonces { - latest_nonce: 19, - nonces_data: DeliveryRaceTargetNoncesData { - confirmed_nonce: 19, - unrewarded_relayers: UnrewardedRelayersState { - unrewarded_relayer_entries: 0, - messages_in_oldest_entry: 0, - total_messages: 0, - }, - }, - }), - strategy: BasicStrategy::new(), - }; - - race_strategy - .strategy - .source_nonces_updated(header_id(1), source_nonces(20..=23, 19, DEFAULT_REWARD, AtSourceChain)); - - let target_nonces = TargetClientNonces { - latest_nonce: 19, - nonces_data: (), - }; - race_strategy - .strategy - .best_target_nonces_updated(target_nonces.clone(), &mut race_state); - race_strategy - .strategy - .finalized_target_nonces_updated(target_nonces, &mut race_state); - - (race_state, race_strategy) - } - - fn proof_parameters(state_required: bool, weight: Weight) -> MessageProofParameters { - MessageProofParameters { - outbound_state_proof_required: state_required, - dispatch_weight: weight, - } - } - - #[test] - fn weights_map_works_as_nonces_range() { - fn build_map(range: RangeInclusive) -> MessageDetailsMap { - range - .map(|idx| { - ( - idx, - MessageDetails { - dispatch_weight: idx, - size: idx as _, - reward: idx as _, - dispatch_fee_payment: AtSourceChain, - }, - ) - }) - .collect() - } - - let map = build_map(20..=30); - - assert_eq!(map.begin(), 20); - assert_eq!(map.end(), 30); - assert_eq!(map.clone().greater_than(10), Some(build_map(20..=30))); - assert_eq!(map.clone().greater_than(19), Some(build_map(20..=30))); - assert_eq!(map.clone().greater_than(20), Some(build_map(21..=30))); - assert_eq!(map.clone().greater_than(25), Some(build_map(26..=30))); - assert_eq!(map.clone().greater_than(29), Some(build_map(30..=30))); - assert_eq!(map.greater_than(30), None); - } - - #[async_std::test] - async fn message_delivery_strategy_selects_messages_to_deliver() { - let (state, mut strategy) = prepare_strategy(); - - // both sides are ready to relay new messages - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(false, 4))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_selects_nothing_if_too_many_confirmations_missing() { - let (state, mut strategy) = prepare_strategy(); - - // if there are already `max_unconfirmed_nonces_at_target` messages on target, - // we need to wait until confirmations will be delivered by receiving race - strategy.latest_confirmed_nonces_at_source = vec![( - header_id(1), - strategy.target_nonces.as_ref().unwrap().latest_nonce - strategy.max_unconfirmed_nonces_at_target, - )] - .into_iter() - .collect(); - assert_eq!(strategy.select_nonces_to_deliver(state).await, None); - } - - #[async_std::test] - async fn message_delivery_strategy_includes_outbound_state_proof_when_new_nonces_are_available() { - let (state, mut strategy) = prepare_strategy(); - - // if there are new confirmed nonces on source, we want to relay this information - // to target to prune rewards queue - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(true, 4))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_selects_nothing_if_there_are_too_many_unrewarded_relayers() { - let (state, mut strategy) = prepare_strategy(); - - // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, - // we need to wait until rewards will be paid - { - let mut unrewarded_relayers = &mut strategy.target_nonces.as_mut().unwrap().nonces_data.unrewarded_relayers; - unrewarded_relayers.unrewarded_relayer_entries = strategy.max_unrewarded_relayer_entries_at_target; - unrewarded_relayers.messages_in_oldest_entry = 4; - } - assert_eq!(strategy.select_nonces_to_deliver(state).await, None); - } - - #[async_std::test] - async fn message_delivery_strategy_selects_nothing_if_proved_rewards_is_not_enough_to_remove_oldest_unrewarded_entry( - ) { - let (state, mut strategy) = prepare_strategy(); - - // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, - // we need to prove at least `messages_in_oldest_entry` rewards - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - { - let mut nonces_data = &mut strategy.target_nonces.as_mut().unwrap().nonces_data; - nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; - let mut unrewarded_relayers = &mut nonces_data.unrewarded_relayers; - unrewarded_relayers.unrewarded_relayer_entries = strategy.max_unrewarded_relayer_entries_at_target; - unrewarded_relayers.messages_in_oldest_entry = 4; - } - assert_eq!(strategy.select_nonces_to_deliver(state).await, None); - } - - #[async_std::test] - async fn message_delivery_strategy_includes_outbound_state_proof_if_proved_rewards_is_enough() { - let (state, mut strategy) = prepare_strategy(); - - // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, - // we need to prove at least `messages_in_oldest_entry` rewards - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - { - let mut nonces_data = &mut strategy.target_nonces.as_mut().unwrap().nonces_data; - nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 3; - let mut unrewarded_relayers = &mut nonces_data.unrewarded_relayers; - unrewarded_relayers.unrewarded_relayer_entries = strategy.max_unrewarded_relayer_entries_at_target; - unrewarded_relayers.messages_in_oldest_entry = 3; - } - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(true, 4))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_limits_batch_by_messages_weight() { - let (state, mut strategy) = prepare_strategy(); - - // not all queued messages may fit in the batch, because batch has max weight - strategy.max_messages_weight_in_single_batch = 3; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=22), proof_parameters(false, 3))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_accepts_single_message_even_if_its_weight_overflows_maximal_weight() { - let (state, mut strategy) = prepare_strategy(); - - // first message doesn't fit in the batch, because it has weight (10) that overflows max weight (4) - strategy.strategy.source_queue_mut()[0] - .1 - .get_mut(&20) - .unwrap() - .dispatch_weight = 10; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=20), proof_parameters(false, 10))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_limits_batch_by_messages_size() { - let (state, mut strategy) = prepare_strategy(); - - // not all queued messages may fit in the batch, because batch has max weight - strategy.max_messages_size_in_single_batch = 3; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=22), proof_parameters(false, 3))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_accepts_single_message_even_if_its_weight_overflows_maximal_size() { - let (state, mut strategy) = prepare_strategy(); - - // first message doesn't fit in the batch, because it has weight (10) that overflows max weight (4) - strategy.strategy.source_queue_mut()[0].1.get_mut(&20).unwrap().size = 10; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=20), proof_parameters(false, 1))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_limits_batch_by_messages_count_when_there_is_upper_limit() { - let (state, mut strategy) = prepare_strategy(); - - // not all queued messages may fit in the batch, because batch has max number of messages limit - strategy.max_messages_in_single_batch = 3; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=22), proof_parameters(false, 3))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_limits_batch_by_messages_count_when_there_are_unconfirmed_nonces() { - let (state, mut strategy) = prepare_strategy(); - - // 1 delivery confirmation from target to source is still missing, so we may only - // relay 3 new messages - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - strategy.latest_confirmed_nonces_at_source = vec![(header_id(1), prev_confirmed_nonce_at_source - 1)] - .into_iter() - .collect(); - strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=22), proof_parameters(false, 3))) - ); - } - - #[async_std::test] - async fn message_delivery_strategy_waits_for_confirmed_nonce_header_to_appear_on_target() { - // 1 delivery confirmation from target to source is still missing, so we may deliver - // reward confirmation with our message delivery transaction. But the problem is that - // the reward has been paid at header 2 && this header is still unknown to target node. - // - // => so we can't deliver more than 3 messages - let (mut state, mut strategy) = prepare_strategy(); - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - strategy.latest_confirmed_nonces_at_source = vec![ - (header_id(1), prev_confirmed_nonce_at_source - 1), - (header_id(2), prev_confirmed_nonce_at_source), - ] - .into_iter() - .collect(); - strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; - state.best_finalized_source_header_id_at_best_target = Some(header_id(1)); - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=22), proof_parameters(false, 3))) - ); - - // the same situation, but the header 2 is known to the target node, so we may deliver reward confirmation - let (mut state, mut strategy) = prepare_strategy(); - let prev_confirmed_nonce_at_source = strategy.latest_confirmed_nonces_at_source.back().unwrap().1; - strategy.latest_confirmed_nonces_at_source = vec![ - (header_id(1), prev_confirmed_nonce_at_source - 1), - (header_id(2), prev_confirmed_nonce_at_source), - ] - .into_iter() - .collect(); - strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; - state.best_finalized_source_header_id_at_source = Some(header_id(2)); - state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(true, 4))) - ); - } - - #[async_std::test] - async fn source_header_is_required_when_confirmations_are_required() { - // let's prepare situation when: - // - all messages [20; 23] have been generated at source block#1; - let (mut state, mut strategy) = prepare_strategy(); - // - messages [20; 21] have been delivered, but messages [11; 20] can't be delivered because of unrewarded - // relayers vector capacity; - strategy.max_unconfirmed_nonces_at_target = 2; - assert_eq!( - strategy.select_nonces_to_deliver(state.clone()).await, - Some(((20..=21), proof_parameters(false, 2))) - ); - strategy.finalized_target_nonces_updated( - TargetClientNonces { - latest_nonce: 21, - nonces_data: DeliveryRaceTargetNoncesData { - confirmed_nonce: 19, - unrewarded_relayers: UnrewardedRelayersState { - unrewarded_relayer_entries: 2, - messages_in_oldest_entry: 2, - total_messages: 2, - }, - }, - }, - &mut state, - ); - assert_eq!(strategy.select_nonces_to_deliver(state).await, None); - // - messages [1; 10] receiving confirmation has been delivered at source block#2; - strategy.source_nonces_updated( - header_id(2), - SourceClientNonces { - new_nonces: MessageDetailsMap::new(), - confirmed_nonce: Some(21), - }, - ); - // - so now we'll need to relay source block#11 to be able to accept messages [11; 20]. - assert_eq!( - strategy.required_source_header_at_target(&header_id(1)), - Some(header_id(2)) - ); - } - - #[async_std::test] - async fn no_losses_relayer_is_delivering_messages_if_cost_is_equal_to_reward() { - let (state, mut strategy) = prepare_strategy(); - strategy.relayer_mode = RelayerMode::NoLosses; - - // so now we have: - // - 20..=23 with reward = cost - // => strategy shall select all 20..=23 - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(false, 4))) - ); - } - - #[async_std::test] - async fn no_losses_relayer_is_not_delivering_messages_if_cost_is_larger_than_reward() { - let (mut state, mut strategy) = prepare_strategy(); - let nonces = source_nonces( - 24..=25, - 19, - DEFAULT_REWARD - BASE_MESSAGE_DELIVERY_TRANSACTION_COST, - AtSourceChain, - ); - strategy.strategy.source_nonces_updated(header_id(2), nonces); - state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); - strategy.relayer_mode = RelayerMode::NoLosses; - - // so now we have: - // - 20..=23 with reward = cost - // - 24..=25 with reward less than cost - // => strategy shall only select 20..=23 - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=23), proof_parameters(false, 4))) - ); - } - - #[async_std::test] - async fn no_losses_relayer_is_delivering_unpaid_messages() { - async fn test_with_dispatch_fee_payment( - dispatch_fee_payment: DispatchFeePayment, - ) -> Option<(RangeInclusive, MessageProofParameters)> { - let (mut state, mut strategy) = prepare_strategy(); - let nonces = source_nonces( - 24..=24, - 19, - DEFAULT_REWARD - DEFAULT_DISPATCH_WEIGHT, - dispatch_fee_payment, - ); - strategy.strategy.source_nonces_updated(header_id(2), nonces); - state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); - strategy.max_unrewarded_relayer_entries_at_target = 100; - strategy.max_unconfirmed_nonces_at_target = 100; - strategy.max_messages_in_single_batch = 100; - strategy.max_messages_weight_in_single_batch = 100; - strategy.max_messages_size_in_single_batch = 100; - strategy.relayer_mode = RelayerMode::NoLosses; - - // so now we have: - // - 20..=23 with reward = cost - // - 24..=24 with reward less than cost, but we're deducting `DEFAULT_DISPATCH_WEIGHT` from the - // cost, so it should be fine; - // => when MSG#24 fee is paid at the target chain, strategy shall select all 20..=24 - // => when MSG#25 fee is paid at the source chain, strategy shall only select 20..=23 - strategy.select_nonces_to_deliver(state).await - } - - assert_eq!( - test_with_dispatch_fee_payment(AtTargetChain).await, - Some(((20..=24), proof_parameters(false, 5))) - ); - assert_eq!( - test_with_dispatch_fee_payment(AtSourceChain).await, - Some(((20..=23), proof_parameters(false, 4))) - ); - } - - #[async_std::test] - async fn relayer_uses_flattened_view_of_the_source_queue_to_select_nonces() { - // Real scenario that has happened on test deployments: - // 1) relayer witnessed M1 at block 1 => it has separate entry in the `source_queue` - // 2) relayer witnessed M2 at block 2 => it has separate entry in the `source_queue` - // 3) if block 2 is known to the target node, then both M1 and M2 are selected for single delivery, - // even though weight(M1+M2) > larger than largest allowed weight - // - // This was happening because selector (`select_nonces_for_delivery_transaction`) has been called - // for every `source_queue` entry separately without preserving any context. - let (mut state, mut strategy) = prepare_strategy(); - let nonces = source_nonces(24..=25, 19, DEFAULT_REWARD, AtSourceChain); - strategy.strategy.source_nonces_updated(header_id(2), nonces); - strategy.max_unrewarded_relayer_entries_at_target = 100; - strategy.max_unconfirmed_nonces_at_target = 100; - strategy.max_messages_in_single_batch = 5; - strategy.max_messages_weight_in_single_batch = 100; - strategy.max_messages_size_in_single_batch = 100; - state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); - - assert_eq!( - strategy.select_nonces_to_deliver(state).await, - Some(((20..=24), proof_parameters(false, 5))) - ); - } -} diff --git a/bridges/relays/messages/src/metrics.rs b/bridges/relays/messages/src/metrics.rs deleted file mode 100644 index 51a4118be858..000000000000 --- a/bridges/relays/messages/src/metrics.rs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Metrics for message lane relay loop. - -use crate::message_lane::MessageLane; -use crate::message_lane_loop::{SourceClientState, TargetClientState}; - -use bp_messages::MessageNonce; -use relay_utils::metrics::{metric_name, register, GaugeVec, Opts, PrometheusError, Registry, U64}; - -/// Message lane relay metrics. -/// -/// Cloning only clones references. -#[derive(Clone)] -pub struct MessageLaneLoopMetrics { - /// Best finalized block numbers - "source", "target", "source_at_target", "target_at_source". - best_block_numbers: GaugeVec, - /// Lane state nonces: "source_latest_generated", "source_latest_confirmed", - /// "target_latest_received", "target_latest_confirmed". - lane_state_nonces: GaugeVec, -} - -impl MessageLaneLoopMetrics { - /// Create and register messages loop metrics. - pub fn new(registry: &Registry, prefix: Option<&str>) -> Result { - Ok(MessageLaneLoopMetrics { - best_block_numbers: register( - GaugeVec::new( - Opts::new( - metric_name(prefix, "best_block_numbers"), - "Best finalized block numbers", - ), - &["type"], - )?, - registry, - )?, - lane_state_nonces: register( - GaugeVec::new( - Opts::new(metric_name(prefix, "lane_state_nonces"), "Nonces of the lane state"), - &["type"], - )?, - registry, - )?, - }) - } -} - -impl MessageLaneLoopMetrics { - /// Update source client state metrics. - pub fn update_source_state(&self, source_client_state: SourceClientState

) { - self.best_block_numbers - .with_label_values(&["source"]) - .set(source_client_state.best_self.0.into()); - self.best_block_numbers - .with_label_values(&["target_at_source"]) - .set(source_client_state.best_finalized_peer_at_best_self.0.into()); - } - - /// Update target client state metrics. - pub fn update_target_state(&self, target_client_state: TargetClientState

) { - self.best_block_numbers - .with_label_values(&["target"]) - .set(target_client_state.best_self.0.into()); - self.best_block_numbers - .with_label_values(&["source_at_target"]) - .set(target_client_state.best_finalized_peer_at_best_self.0.into()); - } - - /// Update latest generated nonce at source. - pub fn update_source_latest_generated_nonce(&self, source_latest_generated_nonce: MessageNonce) { - self.lane_state_nonces - .with_label_values(&["source_latest_generated"]) - .set(source_latest_generated_nonce); - } - - /// Update latest confirmed nonce at source. - pub fn update_source_latest_confirmed_nonce(&self, source_latest_confirmed_nonce: MessageNonce) { - self.lane_state_nonces - .with_label_values(&["source_latest_confirmed"]) - .set(source_latest_confirmed_nonce); - } - - /// Update latest received nonce at target. - pub fn update_target_latest_received_nonce(&self, target_latest_generated_nonce: MessageNonce) { - self.lane_state_nonces - .with_label_values(&["target_latest_received"]) - .set(target_latest_generated_nonce); - } - - /// Update latest confirmed nonce at target. - pub fn update_target_latest_confirmed_nonce(&self, target_latest_confirmed_nonce: MessageNonce) { - self.lane_state_nonces - .with_label_values(&["target_latest_confirmed"]) - .set(target_latest_confirmed_nonce); - } -} diff --git a/bridges/relays/utils/Cargo.toml b/bridges/relays/utils/Cargo.toml deleted file mode 100644 index ff80cab53381..000000000000 --- a/bridges/relays/utils/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "relay-utils" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" - -[dependencies] -ansi_term = "0.12" -async-std = "1.6.5" -async-trait = "0.1.40" -backoff = "0.2" -isahc = "1.2" -env_logger = "0.8.2" -futures = "0.3.5" -jsonpath_lib = "0.2" -log = "0.4.11" -num-traits = "0.2" -serde_json = "1.0" -sysinfo = "0.15" -time = "0.2" - -# Substrate dependencies - -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/bridges/relays/utils/src/lib.rs b/bridges/relays/utils/src/lib.rs deleted file mode 100644 index 446e00cd23e6..000000000000 --- a/bridges/relays/utils/src/lib.rs +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Utilities used by different relays. - -pub use relay_loop::{relay_loop, relay_metrics}; - -use backoff::{backoff::Backoff, ExponentialBackoff}; -use futures::future::FutureExt; -use std::time::Duration; - -/// Max delay after connection-unrelated error happened before we'll try the -/// same request again. -pub const MAX_BACKOFF_INTERVAL: Duration = Duration::from_secs(60); -/// Delay after connection-related error happened before we'll try -/// reconnection again. -pub const CONNECTION_ERROR_DELAY: Duration = Duration::from_secs(10); - -pub mod initialize; -pub mod metrics; -pub mod relay_loop; - -/// Block number traits shared by all chains that relay is able to serve. -pub trait BlockNumberBase: - 'static - + From - + Into - + Ord - + Clone - + Copy - + Default - + Send - + Sync - + std::fmt::Debug - + std::fmt::Display - + std::hash::Hash - + std::ops::Add - + std::ops::Sub - + num_traits::CheckedSub - + num_traits::Saturating - + num_traits::Zero - + num_traits::One -{ -} - -impl BlockNumberBase for T where - T: 'static - + From - + Into - + Ord - + Clone - + Copy - + Default - + Send - + Sync - + std::fmt::Debug - + std::fmt::Display - + std::hash::Hash - + std::ops::Add - + std::ops::Sub - + num_traits::CheckedSub - + num_traits::Saturating - + num_traits::Zero - + num_traits::One -{ -} - -/// Macro that returns (client, Err(error)) tuple from function if result is Err(error). -#[macro_export] -macro_rules! bail_on_error { - ($result: expr) => { - match $result { - (client, Ok(result)) => (client, result), - (client, Err(error)) => return (client, Err(error)), - } - }; -} - -/// Macro that returns (client, Err(error)) tuple from function if result is Err(error). -#[macro_export] -macro_rules! bail_on_arg_error { - ($result: expr, $client: ident) => { - match $result { - Ok(result) => result, - Err(error) => return ($client, Err(error)), - } - }; -} - -/// Ethereum header Id. -#[derive(Debug, Default, Clone, Copy, Eq, Hash, PartialEq)] -pub struct HeaderId(pub Number, pub Hash); - -/// Error type that can signal connection errors. -pub trait MaybeConnectionError { - /// Returns true if error (maybe) represents connection error. - fn is_connection_error(&self) -> bool; -} - -/// Stringified error that may be either connection-related or not. -#[derive(Debug)] -pub enum StringifiedMaybeConnectionError { - /// The error is connection-related error. - Connection(String), - /// The error is connection-unrelated error. - NonConnection(String), -} - -impl StringifiedMaybeConnectionError { - /// Create new stringified connection error. - pub fn new(is_connection_error: bool, error: String) -> Self { - if is_connection_error { - StringifiedMaybeConnectionError::Connection(error) - } else { - StringifiedMaybeConnectionError::NonConnection(error) - } - } -} - -impl MaybeConnectionError for StringifiedMaybeConnectionError { - fn is_connection_error(&self) -> bool { - match *self { - StringifiedMaybeConnectionError::Connection(_) => true, - StringifiedMaybeConnectionError::NonConnection(_) => false, - } - } -} - -impl ToString for StringifiedMaybeConnectionError { - fn to_string(&self) -> String { - match *self { - StringifiedMaybeConnectionError::Connection(ref err) => err.clone(), - StringifiedMaybeConnectionError::NonConnection(ref err) => err.clone(), - } - } -} - -/// Exponential backoff for connection-unrelated errors retries. -pub fn retry_backoff() -> ExponentialBackoff { - ExponentialBackoff { - // we do not want relayer to stop - max_elapsed_time: None, - max_interval: MAX_BACKOFF_INTERVAL, - ..Default::default() - } -} - -/// Compact format of IDs vector. -pub fn format_ids(mut ids: impl ExactSizeIterator) -> String { - const NTH_PROOF: &str = "we have checked len; qed"; - match ids.len() { - 0 => "".into(), - 1 => format!("{:?}", ids.next().expect(NTH_PROOF)), - 2 => { - let id0 = ids.next().expect(NTH_PROOF); - let id1 = ids.next().expect(NTH_PROOF); - format!("[{:?}, {:?}]", id0, id1) - } - len => { - let id0 = ids.next().expect(NTH_PROOF); - let id_last = ids.last().expect(NTH_PROOF); - format!("{}:[{:?} ... {:?}]", len, id0, id_last) - } - } -} - -/// Stream that emits item every `timeout_ms` milliseconds. -pub fn interval(timeout: Duration) -> impl futures::Stream { - futures::stream::unfold((), move |_| async move { - async_std::task::sleep(timeout).await; - Some(((), ())) - }) -} - -/// Which client has caused error. -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum FailedClient { - /// It is the source client who has caused error. - Source, - /// It is the target client who has caused error. - Target, - /// Both clients are failing, or we just encountered some other error that - /// should be treated like that. - Both, -} - -/// Future process result. -#[derive(Debug, Clone, Copy)] -pub enum ProcessFutureResult { - /// Future has been processed successfully. - Success, - /// Future has failed with non-connection error. - Failed, - /// Future has failed with connection error. - ConnectionFailed, -} - -impl ProcessFutureResult { - /// Returns true if result is Success. - pub fn is_ok(self) -> bool { - match self { - ProcessFutureResult::Success => true, - ProcessFutureResult::Failed | ProcessFutureResult::ConnectionFailed => false, - } - } - - /// Returns Ok(true) if future has succeeded. - /// Returns Ok(false) if future has failed with non-connection error. - /// Returns Err if future is `ConnectionFailed`. - pub fn fail_if_connection_error(self, failed_client: FailedClient) -> Result { - match self { - ProcessFutureResult::Success => Ok(true), - ProcessFutureResult::Failed => Ok(false), - ProcessFutureResult::ConnectionFailed => Err(failed_client), - } - } -} - -/// Process result of the future from a client. -pub fn process_future_result( - result: Result, - retry_backoff: &mut ExponentialBackoff, - on_success: impl FnOnce(TResult), - go_offline_future: &mut std::pin::Pin<&mut futures::future::Fuse>, - go_offline: impl FnOnce(Duration) -> TGoOfflineFuture, - error_pattern: impl FnOnce() -> String, -) -> ProcessFutureResult -where - TError: std::fmt::Debug + MaybeConnectionError, - TGoOfflineFuture: FutureExt, -{ - match result { - Ok(result) => { - on_success(result); - retry_backoff.reset(); - ProcessFutureResult::Success - } - Err(error) if error.is_connection_error() => { - log::error!( - target: "bridge", - "{}: {:?}. Going to restart", - error_pattern(), - error, - ); - - retry_backoff.reset(); - go_offline_future.set(go_offline(CONNECTION_ERROR_DELAY).fuse()); - ProcessFutureResult::ConnectionFailed - } - Err(error) => { - let retry_delay = retry_backoff.next_backoff().unwrap_or(CONNECTION_ERROR_DELAY); - log::error!( - target: "bridge", - "{}: {:?}. Retrying in {}", - error_pattern(), - error, - retry_delay.as_secs_f64(), - ); - - go_offline_future.set(go_offline(retry_delay).fuse()); - ProcessFutureResult::Failed - } - } -} diff --git a/bridges/relays/utils/src/metrics.rs b/bridges/relays/utils/src/metrics.rs deleted file mode 100644 index c0eaeae337ee..000000000000 --- a/bridges/relays/utils/src/metrics.rs +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -pub use float_json_value::FloatJsonValueMetric; -pub use global::GlobalMetrics; -pub use substrate_prometheus_endpoint::{ - prometheus::core::{Atomic, Collector}, - register, Counter, CounterVec, Gauge, GaugeVec, Opts, PrometheusError, Registry, F64, U64, -}; - -use async_trait::async_trait; -use std::{fmt::Debug, time::Duration}; - -mod float_json_value; -mod global; - -/// Unparsed address that needs to be used to expose Prometheus metrics. -#[derive(Debug, Clone)] -pub struct MetricsAddress { - /// Serve HTTP requests at given host. - pub host: String, - /// Serve HTTP requests at given port. - pub port: u16, -} - -/// Prometheus endpoint MetricsParams. -#[derive(Debug, Clone)] -pub struct MetricsParams { - /// Interface and TCP port to be used when exposing Prometheus metrics. - pub address: Option, - /// Metrics registry. May be `Some(_)` if several components share the same endpoint. - pub registry: Option, - /// Prefix that must be used in metric names. - pub metrics_prefix: Option, -} - -/// Metrics API. -pub trait Metrics: Clone + Send + Sync + 'static {} - -impl Metrics for T {} - -/// Standalone metrics API. -/// -/// Metrics of this kind know how to update themselves, so we may just spawn and forget the -/// asynchronous self-update task. -#[async_trait] -pub trait StandaloneMetrics: Metrics { - /// Update metric values. - async fn update(&self); - - /// Metrics update interval. - fn update_interval(&self) -> Duration; - - /// Spawn the self update task that will keep update metric value at given intervals. - fn spawn(self) { - async_std::task::spawn(async move { - let update_interval = self.update_interval(); - loop { - self.update().await; - async_std::task::sleep(update_interval).await; - } - }); - } -} - -impl Default for MetricsAddress { - fn default() -> Self { - MetricsAddress { - host: "127.0.0.1".into(), - port: 9616, - } - } -} - -impl MetricsParams { - /// Creates metrics params so that metrics are not exposed. - pub fn disabled() -> Self { - MetricsParams { - address: None, - registry: None, - metrics_prefix: None, - } - } - - /// Do not expose metrics. - pub fn disable(mut self) -> Self { - self.address = None; - self - } - - /// Set prefix to use in metric names. - pub fn metrics_prefix(mut self, prefix: String) -> Self { - self.metrics_prefix = Some(prefix); - self - } -} - -impl From> for MetricsParams { - fn from(address: Option) -> Self { - MetricsParams { - address, - registry: None, - metrics_prefix: None, - } - } -} - -/// Returns metric name optionally prefixed with given prefix. -pub fn metric_name(prefix: Option<&str>, name: &str) -> String { - if let Some(prefix) = prefix { - format!("{}_{}", prefix, name) - } else { - name.into() - } -} - -/// Set value of gauge metric. -/// -/// If value is `Ok(None)` or `Err(_)`, metric would have default value. -pub fn set_gauge_value, E: Debug>(gauge: &Gauge, value: Result, E>) { - gauge.set(match value { - Ok(Some(value)) => { - log::trace!( - target: "bridge-metrics", - "Updated value of metric '{:?}': {:?}", - gauge.desc().first().map(|d| &d.fq_name), - value, - ); - value - } - Ok(None) => { - log::warn!( - target: "bridge-metrics", - "Failed to update metric '{:?}': value is empty", - gauge.desc().first().map(|d| &d.fq_name), - ); - Default::default() - } - Err(error) => { - log::warn!( - target: "bridge-metrics", - "Failed to update metric '{:?}': {:?}", - gauge.desc().first().map(|d| &d.fq_name), - error, - ); - Default::default() - } - }) -} diff --git a/bridges/relays/utils/src/metrics/float_json_value.rs b/bridges/relays/utils/src/metrics/float_json_value.rs deleted file mode 100644 index d61f9cac7c22..000000000000 --- a/bridges/relays/utils/src/metrics/float_json_value.rs +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::metrics::{metric_name, register, Gauge, PrometheusError, Registry, StandaloneMetrics, F64}; - -use async_trait::async_trait; -use std::time::Duration; - -/// Value update interval. -const UPDATE_INTERVAL: Duration = Duration::from_secs(60); - -/// Metric that represents float value received from HTTP service as float gauge. -#[derive(Debug, Clone)] -pub struct FloatJsonValueMetric { - url: String, - json_path: String, - metric: Gauge, -} - -impl FloatJsonValueMetric { - /// Create new metric instance with given name and help. - pub fn new( - registry: &Registry, - prefix: Option<&str>, - url: String, - json_path: String, - name: String, - help: String, - ) -> Result { - Ok(FloatJsonValueMetric { - url, - json_path, - metric: register(Gauge::new(metric_name(prefix, &name), help)?, registry)?, - }) - } - - /// Read value from HTTP service. - async fn read_value(&self) -> Result { - use isahc::{AsyncReadResponseExt, HttpClient, Request}; - - fn map_isahc_err(err: impl std::fmt::Display) -> String { - format!("Failed to fetch token price from remote server: {}", err) - } - - let request = Request::get(&self.url) - .header("Accept", "application/json") - .body(()) - .map_err(map_isahc_err)?; - let raw_response = HttpClient::new() - .map_err(map_isahc_err)? - .send_async(request) - .await - .map_err(map_isahc_err)? - .text() - .await - .map_err(map_isahc_err)?; - - parse_service_response(&self.json_path, &raw_response) - } -} - -#[async_trait] -impl StandaloneMetrics for FloatJsonValueMetric { - fn update_interval(&self) -> Duration { - UPDATE_INTERVAL - } - - async fn update(&self) { - crate::metrics::set_gauge_value(&self.metric, self.read_value().await.map(Some)); - } -} - -/// Parse HTTP service response. -fn parse_service_response(json_path: &str, response: &str) -> Result { - let json = serde_json::from_str(response).map_err(|err| { - format!( - "Failed to parse HTTP service response: {:?}. Response: {:?}", - err, response, - ) - })?; - - let mut selector = jsonpath_lib::selector(&json); - let maybe_selected_value = selector(json_path).map_err(|err| { - format!( - "Failed to select value from response: {:?}. Response: {:?}", - err, response, - ) - })?; - let selected_value = maybe_selected_value - .first() - .and_then(|v| v.as_f64()) - .ok_or_else(|| format!("Missing required value from response: {:?}", response,))?; - - Ok(selected_value) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn parse_service_response_works() { - assert_eq!( - parse_service_response("$.kusama.usd", r#"{"kusama":{"usd":433.05}}"#).map_err(drop), - Ok(433.05), - ); - } -} diff --git a/bridges/relays/utils/src/metrics/global.rs b/bridges/relays/utils/src/metrics/global.rs deleted file mode 100644 index d21248051044..000000000000 --- a/bridges/relays/utils/src/metrics/global.rs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -//! Global system-wide Prometheus metrics exposed by relays. - -use crate::metrics::{ - metric_name, register, Gauge, GaugeVec, Opts, PrometheusError, Registry, StandaloneMetrics, F64, U64, -}; - -use async_std::sync::{Arc, Mutex}; -use async_trait::async_trait; -use std::time::Duration; -use sysinfo::{ProcessExt, RefreshKind, System, SystemExt}; - -/// Global metrics update interval. -const UPDATE_INTERVAL: Duration = Duration::from_secs(10); - -/// Global Prometheus metrics. -#[derive(Debug, Clone)] -pub struct GlobalMetrics { - system: Arc>, - system_average_load: GaugeVec, - process_cpu_usage_percentage: Gauge, - process_memory_usage_bytes: Gauge, -} - -impl GlobalMetrics { - /// Create and register global metrics. - pub fn new(registry: &Registry, prefix: Option<&str>) -> Result { - Ok(GlobalMetrics { - system: Arc::new(Mutex::new(System::new_with_specifics(RefreshKind::everything()))), - system_average_load: register( - GaugeVec::new( - Opts::new(metric_name(prefix, "system_average_load"), "System load average"), - &["over"], - )?, - registry, - )?, - process_cpu_usage_percentage: register( - Gauge::new(metric_name(prefix, "process_cpu_usage_percentage"), "Process CPU usage")?, - registry, - )?, - process_memory_usage_bytes: register( - Gauge::new( - metric_name(prefix, "process_memory_usage_bytes"), - "Process memory (resident set size) usage", - )?, - registry, - )?, - }) - } -} - -#[async_trait] -impl StandaloneMetrics for GlobalMetrics { - async fn update(&self) { - // update system-wide metrics - let mut system = self.system.lock().await; - let load = system.get_load_average(); - self.system_average_load.with_label_values(&["1min"]).set(load.one); - self.system_average_load.with_label_values(&["5min"]).set(load.five); - self.system_average_load.with_label_values(&["15min"]).set(load.fifteen); - - // update process-related metrics - let pid = sysinfo::get_current_pid().expect( - "only fails where pid is unavailable (os=unknown || arch=wasm32);\ - relay is not supposed to run in such MetricsParamss;\ - qed", - ); - let is_process_refreshed = system.refresh_process(pid); - match (is_process_refreshed, system.get_process(pid)) { - (true, Some(process_info)) => { - let cpu_usage = process_info.cpu_usage() as f64; - let memory_usage = process_info.memory() * 1024; - log::trace!( - target: "bridge-metrics", - "Refreshed process metrics: CPU={}, memory={}", - cpu_usage, - memory_usage, - ); - - self.process_cpu_usage_percentage - .set(if cpu_usage.is_finite() { cpu_usage } else { 0f64 }); - self.process_memory_usage_bytes.set(memory_usage); - } - _ => { - log::warn!( - target: "bridge-metrics", - "Failed to refresh process information. Metrics may show obsolete values", - ); - } - } - } - - fn update_interval(&self) -> Duration { - UPDATE_INTERVAL - } -} diff --git a/bridges/relays/utils/src/relay_loop.rs b/bridges/relays/utils/src/relay_loop.rs deleted file mode 100644 index 938136658bd3..000000000000 --- a/bridges/relays/utils/src/relay_loop.rs +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Parity Bridges Common. - -// Parity Bridges Common is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Bridges Common is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Bridges Common. If not, see . - -use crate::metrics::{Metrics, MetricsAddress, MetricsParams, PrometheusError, StandaloneMetrics}; -use crate::{FailedClient, MaybeConnectionError}; - -use async_trait::async_trait; -use std::{fmt::Debug, future::Future, net::SocketAddr, time::Duration}; -use substrate_prometheus_endpoint::{init_prometheus, Registry}; - -/// Default pause between reconnect attempts. -pub const RECONNECT_DELAY: Duration = Duration::from_secs(10); - -/// Basic blockchain client from relay perspective. -#[async_trait] -pub trait Client: 'static + Clone + Send + Sync { - /// Type of error this clients returns. - type Error: 'static + Debug + MaybeConnectionError + Send + Sync; - - /// Try to reconnect to source node. - async fn reconnect(&mut self) -> Result<(), Self::Error>; -} - -/// Returns generic loop that may be customized and started. -pub fn relay_loop(source_client: SC, target_client: TC) -> Loop { - Loop { - reconnect_delay: RECONNECT_DELAY, - source_client, - target_client, - loop_metric: None, - } -} - -/// Returns generic relay loop metrics that may be customized and used in one or several relay loops. -pub fn relay_metrics(prefix: Option, params: MetricsParams) -> LoopMetrics<(), (), ()> { - LoopMetrics { - relay_loop: Loop { - reconnect_delay: RECONNECT_DELAY, - source_client: (), - target_client: (), - loop_metric: None, - }, - address: params.address, - registry: params.registry.unwrap_or_else(|| create_metrics_registry(prefix)), - metrics_prefix: params.metrics_prefix, - loop_metric: None, - } -} - -/// Generic relay loop. -pub struct Loop { - reconnect_delay: Duration, - source_client: SC, - target_client: TC, - loop_metric: Option, -} - -/// Relay loop metrics builder. -pub struct LoopMetrics { - relay_loop: Loop, - address: Option, - registry: Registry, - metrics_prefix: Option, - loop_metric: Option, -} - -impl Loop { - /// Customize delay between reconnect attempts. - pub fn reconnect_delay(mut self, reconnect_delay: Duration) -> Self { - self.reconnect_delay = reconnect_delay; - self - } - - /// Start building loop metrics using given prefix. - pub fn with_metrics(self, prefix: Option, params: MetricsParams) -> LoopMetrics { - LoopMetrics { - relay_loop: Loop { - reconnect_delay: self.reconnect_delay, - source_client: self.source_client, - target_client: self.target_client, - loop_metric: None, - }, - address: params.address, - registry: params.registry.unwrap_or_else(|| create_metrics_registry(prefix)), - metrics_prefix: params.metrics_prefix, - loop_metric: None, - } - } - - /// Run relay loop. - /// - /// This function represents an outer loop, which in turn calls provided `run_loop` function to do - /// actual job. When `run_loop` returns, this outer loop reconnects to failed client (source, - /// target or both) and calls `run_loop` again. - pub async fn run(mut self, loop_name: String, run_loop: R) -> Result<(), String> - where - R: 'static + Send + Fn(SC, TC, Option) -> F, - F: 'static + Send + Future>, - SC: 'static + Client, - TC: 'static + Client, - LM: 'static + Send + Clone, - { - let run_loop_task = async move { - crate::initialize::initialize_loop(loop_name); - - loop { - let loop_metric = self.loop_metric.clone(); - let future_result = run_loop(self.source_client.clone(), self.target_client.clone(), loop_metric); - let result = future_result.await; - - match result { - Ok(()) => break, - Err(failed_client) => { - reconnect_failed_client( - failed_client, - self.reconnect_delay, - &mut self.source_client, - &mut self.target_client, - ) - .await - } - } - - log::debug!(target: "bridge", "Restarting relay loop"); - } - - Ok(()) - }; - - async_std::task::spawn(run_loop_task).await - } -} - -impl LoopMetrics { - /// Add relay loop metrics. - /// - /// Loop metrics will be passed to the loop callback. - pub fn loop_metric( - self, - create_metric: impl FnOnce(&Registry, Option<&str>) -> Result, - ) -> Result, String> { - let loop_metric = create_metric(&self.registry, self.metrics_prefix.as_deref()).map_err(|e| e.to_string())?; - - Ok(LoopMetrics { - relay_loop: self.relay_loop, - address: self.address, - registry: self.registry, - metrics_prefix: self.metrics_prefix, - loop_metric: Some(loop_metric), - }) - } - - /// Add standalone metrics. - pub fn standalone_metric( - self, - create_metric: impl FnOnce(&Registry, Option<&str>) -> Result, - ) -> Result { - // since standalone metrics are updating themselves, we may just ignore the fact that the same - // standalone metric is exposed by several loops && only spawn single metric - match create_metric(&self.registry, self.metrics_prefix.as_deref()) { - Ok(standalone_metrics) => standalone_metrics.spawn(), - Err(PrometheusError::AlreadyReg) => (), - Err(e) => return Err(e.to_string()), - } - - Ok(self) - } - - /// Convert into `MetricsParams` structure so that metrics registry may be extended later. - pub fn into_params(self) -> MetricsParams { - MetricsParams { - address: self.address, - registry: Some(self.registry), - metrics_prefix: self.metrics_prefix, - } - } - - /// Expose metrics using address passed at creation. - /// - /// If passed `address` is `None`, metrics are not exposed. - pub async fn expose(self) -> Result, String> { - if let Some(address) = self.address { - let socket_addr = SocketAddr::new( - address.host.parse().map_err(|err| { - format!( - "Invalid host {} is used to expose Prometheus metrics: {}", - address.host, err, - ) - })?, - address.port, - ); - - let registry = self.registry; - async_std::task::spawn(async move { - let result = init_prometheus(socket_addr, registry).await; - log::trace!( - target: "bridge-metrics", - "Prometheus endpoint has exited with result: {:?}", - result, - ); - }); - } - - Ok(Loop { - reconnect_delay: self.relay_loop.reconnect_delay, - source_client: self.relay_loop.source_client, - target_client: self.relay_loop.target_client, - loop_metric: self.loop_metric, - }) - } -} - -/// Deal with the client who has returned connection error. -pub async fn reconnect_failed_client( - failed_client: FailedClient, - reconnect_delay: Duration, - source_client: &mut impl Client, - target_client: &mut impl Client, -) { - loop { - async_std::task::sleep(reconnect_delay).await; - if failed_client == FailedClient::Both || failed_client == FailedClient::Source { - match source_client.reconnect().await { - Ok(()) => (), - Err(error) => { - log::warn!( - target: "bridge", - "Failed to reconnect to source client. Going to retry in {}s: {:?}", - reconnect_delay.as_secs(), - error, - ); - continue; - } - } - } - if failed_client == FailedClient::Both || failed_client == FailedClient::Target { - match target_client.reconnect().await { - Ok(()) => (), - Err(error) => { - log::warn!( - target: "bridge", - "Failed to reconnect to target client. Going to retry in {}s: {:?}", - reconnect_delay.as_secs(), - error, - ); - continue; - } - } - } - - break; - } -} - -/// Create new registry with global metrics. -fn create_metrics_registry(prefix: Option) -> Registry { - match prefix { - Some(prefix) => { - assert!(!prefix.is_empty(), "Metrics prefix can not be empty"); - Registry::new_custom(Some(prefix), None).expect("only fails if prefix is empty; prefix is not empty; qed") - } - None => Registry::new(), - } -} diff --git a/bridges/rustfmt.toml b/bridges/rustfmt.toml deleted file mode 100644 index 8ded863e80af..000000000000 --- a/bridges/rustfmt.toml +++ /dev/null @@ -1,3 +0,0 @@ -hard_tabs = true -max_width = 120 -edition = "2018" diff --git a/bridges/scripts/run-eth2sub-relay.sh b/bridges/scripts/run-eth2sub-relay.sh deleted file mode 100755 index 2cf64a93780d..000000000000 --- a/bridges/scripts/run-eth2sub-relay.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -# Run a development instance of the Ethereum to Substrate relay. Needs running -# Substrate and Ethereum nodes in order to work. - -RUST_LOG=rpc=trace,bridge=trace ./target/debug/ethereum-poa-relay eth-to-sub diff --git a/bridges/scripts/run-openethereum-node.sh b/bridges/scripts/run-openethereum-node.sh deleted file mode 100755 index 62089baffe45..000000000000 --- a/bridges/scripts/run-openethereum-node.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# This script assumes that an OpenEthereum build is available. The repo -# should be at the same level as the `parity-bridges-common` repo. - -RUST_LOG=rpc=trace,txqueue=trace,bridge-builtin=trace \ -../openethereum/target/debug/openethereum \ - --config="$(pwd)"/deployments/dev/poa-config/poa-node-config \ - --node-key=arthur \ - --engine-signer=0x005e714f896a8b7cede9d38688c1a81de72a58e4 \ - --base-path=/tmp/oe-dev-node \ diff --git a/bridges/scripts/update-weights.sh b/bridges/scripts/update-weights.sh deleted file mode 100755 index 0ac773e8d7b4..000000000000 --- a/bridges/scripts/update-weights.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# -# Runtime benchmarks for the `pallet-bridge-messages` and `pallet-bridge-grandpa` pallets. -# -# Run this script from root of the repo. - -set -eux - -time cargo run --release -p rialto-bridge-node --features=runtime-benchmarks -- benchmark \ - --chain=dev \ - --steps=50 \ - --repeat=20 \ - --pallet=pallet_bridge_messages \ - --extrinsic=* \ - --execution=wasm \ - --wasm-execution=Compiled \ - --heap-pages=4096 \ - --output=./modules/messages/src/weights.rs \ - --template=./.maintain/rialto-weight-template.hbs - -time cargo run --release -p rialto-bridge-node --features=runtime-benchmarks -- benchmark \ - --chain=dev \ - --steps=50 \ - --repeat=20 \ - --pallet=pallet_bridge_grandpa \ - --extrinsic=* \ - --execution=wasm \ - --wasm-execution=Compiled \ - --heap-pages=4096 \ - --output=./modules/grandpa/src/weights.rs \ - --template=./.maintain/rialto-weight-template.hbs diff --git a/bridges/ci.Dockerfile b/ci.Dockerfile similarity index 98% rename from bridges/ci.Dockerfile rename to ci.Dockerfile index 0bd2bc4dae83..eec619a79831 100644 --- a/bridges/ci.Dockerfile +++ b/ci.Dockerfile @@ -24,7 +24,7 @@ USER user WORKDIR /home/user -ARG PROJECT=ethereum-poa-relay +ARG PROJECT=substrate-relay COPY --chown=user:user ./${PROJECT} ./ COPY --chown=user:user ./bridge-entrypoint.sh ./ diff --git a/ci/script.sh b/ci/script.sh deleted file mode 100755 index d1d806f30f7b..000000000000 --- a/ci/script.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -set -eux - -# Install rustup and the specified rust toolchain. -curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=$RUST_TOOLCHAIN -y - -# Load cargo environment. Specifically, put cargo into PATH. -source ~/.cargo/env - -rustc --version -rustup --version -cargo --version - -case $TARGET in - "native") - sudo apt-get -y update - sudo apt-get install -y cmake pkg-config libssl-dev - - cargo test --all --locked "$@" - ;; - - "wasm") - # Install prerequisites and build all wasm projects - ./scripts/init.sh - ./scripts/build.sh --locked "$@" - ;; -esac diff --git a/cli/Cargo.toml b/cli/Cargo.toml deleted file mode 100644 index fa9ab9864122..000000000000 --- a/cli/Cargo.toml +++ /dev/null @@ -1,71 +0,0 @@ -[package] -name = "polkadot-cli" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Polkadot Relay-chain Client Node" -edition = "2018" - -[package.metadata.wasm-pack.profile.release] -# `wasm-opt` has some problems on linux, see -# https://github.com/rustwasm/wasm-pack/issues/781 etc. -wasm-opt = false - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -log = "0.4.13" -thiserror = "1.0.23" -structopt = { version = "0.3.21", optional = true } -wasm-bindgen = { version = "0.2.70", optional = true } -wasm-bindgen-futures = { version = "0.4.23", optional = true } -futures = "0.3.15" - -service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true } -polkadot-node-core-pvf = { path = "../node/core/pvf", optional = true } - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -browser-utils = { package = "substrate-browser-utils", git = "https://github.com/paritytech/substrate", branch = "master", optional = true } - -# this crate is used only to enable `trie-memory-tracker` feature -# see https://github.com/paritytech/substrate/pull/6745 -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[build-dependencies] -substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = [ "wasmtime", "db", "cli", "full-node", "trie-memory-tracker" ] -wasmtime = [ "sc-cli/wasmtime" ] -db = [ "service/db" ] -cli = [ - "structopt", - "sc-cli", - "sc-service", - "frame-benchmarking-cli", - "try-runtime-cli", - "polkadot-node-core-pvf", -] -browser = [ - "wasm-bindgen", - "wasm-bindgen-futures", - "browser-utils", - "service/light-node", -] -runtime-benchmarks = [ "service/runtime-benchmarks" ] -trie-memory-tracker = [ "sp-trie/memory-tracker" ] -full-node = [ "service/full-node" ] -try-runtime = [ "service/try-runtime" ] - -# Configure the native runtimes to use. Polkadot is always enabled by default. -# -# Validators require the native runtime currently -kusama-native = [ "service/kusama-native" ] -westend-native = [ "service/westend-native" ] -rococo-native = [ "service/rococo-native" ] - -malus = [ "full-node", "service/malus" ] diff --git a/cli/browser-demo/.gitignore b/cli/browser-demo/.gitignore deleted file mode 100644 index 0c6117d9fb83..000000000000 --- a/cli/browser-demo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -pkg \ No newline at end of file diff --git a/cli/browser-demo/README.md b/cli/browser-demo/README.md deleted file mode 100644 index 2ff1cc54f5db..000000000000 --- a/cli/browser-demo/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# How to run this demo - -```sh -cargo install wasm-pack # If necessary - -wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" - -xdg-open index.html -``` diff --git a/cli/browser-demo/build.sh b/cli/browser-demo/build.sh deleted file mode 100755 index 059ed9fe423b..000000000000 --- a/cli/browser-demo/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh -wasm-pack build --target web --out-dir ./browser-demo/pkg --no-typescript --release ./.. -- --no-default-features --features "browser" -python -m http.server 8000 diff --git a/cli/browser-demo/favicon.png b/cli/browser-demo/favicon.png deleted file mode 100644 index 5e36153e4df3..000000000000 Binary files a/cli/browser-demo/favicon.png and /dev/null differ diff --git a/cli/browser-demo/index.html b/cli/browser-demo/index.html deleted file mode 100644 index e8419281b750..000000000000 --- a/cli/browser-demo/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Polkadot node - - - - - diff --git a/cli/build.rs b/cli/build.rs deleted file mode 100644 index a299afe20931..000000000000 --- a/cli/build.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -fn main() { - substrate_build_script_utils::generate_cargo_keys(); -} diff --git a/cli/src/browser.rs b/cli/src/browser.rs deleted file mode 100644 index 29dac5c4f2b8..000000000000 --- a/cli/src/browser.rs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use browser_utils::{browser_configuration, init_logging, set_console_error_panic_hook, Client}; -use log::info; -use wasm_bindgen::prelude::*; - -/// Starts the client. -#[wasm_bindgen] -pub async fn start_client(chain_spec: String, log_level: String) -> Result { - start_inner(chain_spec, log_level).await.map_err(|err| JsValue::from_str(&err.to_string())) -} - -async fn start_inner(chain_spec: String, log_directives: String) -> Result> { - set_console_error_panic_hook(); - init_logging(&log_directives)?; - - let chain_spec = - service::PolkadotChainSpec::from_json_bytes(chain_spec.as_bytes().to_vec()).map_err(|e| format!("{:?}", e))?; - let config = browser_configuration(chain_spec).await?; - - info!("Polkadot browser node"); - info!(" version {}", config.impl_version); - info!(" by Parity Technologies, 2017-2020"); - info!("📋 Chain specification: {}", config.chain_spec.name()); - info!("🏷 Node name: {}", config.network.node_name); - info!("👤 Role: {}", config.display_role()); - - // Create the service. This is the most heavy initialization step. - let (task_manager, rpc_handlers) = service::build_light(config).map_err(|e| format!("{:?}", e))?; - - Ok(browser_utils::start_client(task_manager, rpc_handlers)) -} diff --git a/cli/src/cli.rs b/cli/src/cli.rs deleted file mode 100644 index 722230ac9a50..000000000000 --- a/cli/src/cli.rs +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot CLI library. - -use structopt::StructOpt; - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub enum Subcommand { - /// Build a chain specification. - BuildSpec(sc_cli::BuildSpecCmd), - - /// Validate blocks. - CheckBlock(sc_cli::CheckBlockCmd), - - /// Export blocks. - ExportBlocks(sc_cli::ExportBlocksCmd), - - /// Export the state of a given block into a chain spec. - ExportState(sc_cli::ExportStateCmd), - - /// Import blocks. - ImportBlocks(sc_cli::ImportBlocksCmd), - - /// Remove the whole chain. - PurgeChain(sc_cli::PurgeChainCmd), - - /// Revert the chain to a previous state. - Revert(sc_cli::RevertCmd), - - #[allow(missing_docs)] - #[structopt(name = "prepare-worker", setting = structopt::clap::AppSettings::Hidden)] - PvfPrepareWorker(ValidationWorkerCommand), - - #[allow(missing_docs)] - #[structopt(name = "execute-worker", setting = structopt::clap::AppSettings::Hidden)] - PvfExecuteWorker(ValidationWorkerCommand), - - /// The custom benchmark subcommand benchmarking runtime pallets. - #[structopt( - name = "benchmark", - about = "Benchmark runtime pallets." - )] - Benchmark(frame_benchmarking_cli::BenchmarkCmd), - - /// Try some command against runtime state. - #[cfg(feature = "try-runtime")] - TryRuntime(try_runtime_cli::TryRuntimeCmd), - - /// Try some command against runtime state. Note: `try-runtime` feature must be enabled. - #[cfg(not(feature = "try-runtime"))] - TryRuntime, - - /// Key management cli utilities - Key(sc_cli::KeySubcommand), -} - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub struct ValidationWorkerCommand { - /// The path to the validation host's socket. - pub socket_path: String, -} - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub struct RunCmd { - #[allow(missing_docs)] - #[structopt(flatten)] - pub base: sc_cli::RunCmd, - - /// Force using Kusama native runtime. - #[structopt(long = "force-kusama")] - pub force_kusama: bool, - - /// Force using Westend native runtime. - #[structopt(long = "force-westend")] - pub force_westend: bool, - - /// Force using Rococo native runtime. - #[structopt(long = "force-rococo")] - pub force_rococo: bool, - - /// Setup a GRANDPA scheduled voting pause. - /// - /// This parameter takes two values, namely a block number and a delay (in - /// blocks). After the given block number is finalized the GRANDPA voter - /// will temporarily stop voting for new blocks until the given delay has - /// elapsed (i.e. until a block at height `pause_block + delay` is imported). - #[structopt(long = "grandpa-pause", number_of_values(2))] - pub grandpa_pause: Vec, - - /// Disable BEEFY gadget. - #[structopt(long)] - pub no_beefy: bool, - - /// Add the destination address to the jaeger agent. - /// - /// Must be valid socket address, of format `IP:Port` - /// commonly `127.0.0.1:6831`. - #[structopt(long)] - pub jaeger_agent: Option, -} - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub struct Cli { - #[structopt(subcommand)] - pub subcommand: Option, - #[structopt(flatten)] - pub run: RunCmd, -} diff --git a/cli/src/command.rs b/cli/src/command.rs deleted file mode 100644 index 3bcdd53e7913..000000000000 --- a/cli/src/command.rs +++ /dev/null @@ -1,425 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use log::info; -use service::{IdentifyVariant, self}; -use sc_cli::{SubstrateCli, RuntimeVersion, Role}; -use crate::cli::{Cli, Subcommand}; -use futures::future::TryFutureExt; - -#[derive(thiserror::Error, Debug)] -pub enum Error { - #[error(transparent)] - PolkadotService(#[from] service::Error), - - #[error(transparent)] - SubstrateCli(#[from] sc_cli::Error), - - #[error(transparent)] - SubstrateService(#[from] sc_service::Error), - - #[error("Other: {0}")] - Other(String), -} - -impl std::convert::From for Error { - fn from(s: String) -> Self { - Self::Other(s) - } -} - -type Result = std::result::Result; - -fn get_exec_name() -> Option { - std::env::current_exe() - .ok() - .and_then(|pb| pb.file_name().map(|s| s.to_os_string())) - .and_then(|s| s.into_string().ok()) -} - -impl SubstrateCli for Cli { - fn impl_name() -> String { "Parity Polkadot".into() } - - fn impl_version() -> String { env!("SUBSTRATE_CLI_IMPL_VERSION").into() } - - fn description() -> String { env!("CARGO_PKG_DESCRIPTION").into() } - - fn author() -> String { env!("CARGO_PKG_AUTHORS").into() } - - fn support_url() -> String { "https://github.com/paritytech/polkadot/issues/new".into() } - - fn copyright_start_year() -> i32 { 2017 } - - fn executable_name() -> String { "polkadot".into() } - - fn load_spec(&self, id: &str) -> std::result::Result, String> { - let id = if id == "" { - let n = get_exec_name().unwrap_or_default(); - ["polkadot", "kusama", "westend", "rococo"].iter() - .cloned() - .find(|&chain| n.starts_with(chain)) - .unwrap_or("polkadot") - } else { id }; - Ok(match id { - "kusama" => Box::new(service::chain_spec::kusama_config()?), - #[cfg(feature = "kusama-native")] - "kusama-dev" => Box::new(service::chain_spec::kusama_development_config()?), - #[cfg(feature = "kusama-native")] - "kusama-local" => Box::new(service::chain_spec::kusama_local_testnet_config()?), - #[cfg(feature = "kusama-native")] - "kusama-staging" => Box::new(service::chain_spec::kusama_staging_testnet_config()?), - #[cfg(not(feature = "kusama-native"))] - name if name.starts_with("kusama-") && !name.ends_with(".json") => - Err(format!("`{}` only supported with `kusama-native` feature enabled.", name))?, - "polkadot" => Box::new(service::chain_spec::polkadot_config()?), - "polkadot-dev" | "dev" => Box::new(service::chain_spec::polkadot_development_config()?), - "polkadot-local" => Box::new(service::chain_spec::polkadot_local_testnet_config()?), - "polkadot-staging" => Box::new(service::chain_spec::polkadot_staging_testnet_config()?), - "rococo" => Box::new(service::chain_spec::rococo_config()?), - #[cfg(feature = "rococo-native")] - "rococo-dev" => Box::new(service::chain_spec::rococo_development_config()?), - #[cfg(feature = "rococo-native")] - "rococo-local" => Box::new(service::chain_spec::rococo_local_testnet_config()?), - #[cfg(feature = "rococo-native")] - "rococo-staging" => Box::new(service::chain_spec::rococo_staging_testnet_config()?), - #[cfg(not(feature = "rococo-native"))] - name if name.starts_with("rococo-") && !name.ends_with(".json") => - Err(format!("`{}` only supported with `rococo-native` feature enabled.", name))?, - "westend" => Box::new(service::chain_spec::westend_config()?), - #[cfg(feature = "westend-native")] - "westend-dev" => Box::new(service::chain_spec::westend_development_config()?), - #[cfg(feature = "westend-native")] - "westend-local" => Box::new(service::chain_spec::westend_local_testnet_config()?), - #[cfg(feature = "westend-native")] - "westend-staging" => Box::new(service::chain_spec::westend_staging_testnet_config()?), - #[cfg(not(feature = "westend-native"))] - name if name.starts_with("westend-") && !name.ends_with(".json") => - Err(format!("`{}` only supported with `westend-native` feature enabled.", name))?, - "wococo" => Box::new(service::chain_spec::wococo_config()?), - #[cfg(feature = "rococo-native")] - "wococo-dev" => Box::new(service::chain_spec::wococo_development_config()?), - #[cfg(not(feature = "rococo-native"))] - name if name.starts_with("wococo-") => - Err(format!("`{}` only supported with `rococo-native` feature enabled.", name))?, - path => { - let path = std::path::PathBuf::from(path); - - let chain_spec = Box::new(service::PolkadotChainSpec::from_json_file(path.clone())?) as Box; - - // When `force_*` is given or the file name starts with the name of one of the known chains, - // we use the chain spec for the specific chain. - if self.run.force_rococo || chain_spec.is_rococo() || chain_spec.is_wococo() { - Box::new(service::RococoChainSpec::from_json_file(path)?) - } else if self.run.force_kusama || chain_spec.is_kusama() { - Box::new(service::KusamaChainSpec::from_json_file(path)?) - } else if self.run.force_westend || chain_spec.is_westend() { - Box::new(service::WestendChainSpec::from_json_file(path)?) - } else { - chain_spec - } - }, - }) - } - - fn native_runtime_version(spec: &Box) -> &'static RuntimeVersion { - #[cfg(feature = "kusama-native")] - if spec.is_kusama() { - return &service::kusama_runtime::VERSION - } - - #[cfg(feature = "westend-native")] - if spec.is_westend() { - return &service::westend_runtime::VERSION - } - - #[cfg(feature = "rococo-native")] - if spec.is_rococo() || spec.is_wococo() { - return &service::rococo_runtime::VERSION - } - - #[cfg(not(all(feature = "rococo-native", feature = "westend-native", feature = "kusama-native")))] - let _ = spec; - - &service::polkadot_runtime::VERSION - } -} - -fn set_default_ss58_version(spec: &Box) { - use sp_core::crypto::Ss58AddressFormat; - - let ss58_version = if spec.is_kusama() { - Ss58AddressFormat::KusamaAccount - } else if spec.is_westend() { - Ss58AddressFormat::SubstrateAccount - } else { - Ss58AddressFormat::PolkadotAccount - }; - - sp_core::crypto::set_default_ss58_version(ss58_version); -} - -const DEV_ONLY_ERROR_PATTERN: &'static str = - "can only use subcommand with --chain [polkadot-dev, kusama-dev, westend-dev, rococo-dev, wococo-dev], got "; - -fn ensure_dev(spec: &Box) -> std::result::Result<(), String> { - if spec.is_dev() { - Ok(()) - } else { - Err(format!("{}{}", DEV_ONLY_ERROR_PATTERN, spec.id())) - } -} - -/// Launch a node, accepting arguments just like a regular node, -/// accepts an alternative overseer generator, to adjust behavior -/// for integration tests as needed. -#[cfg(feature = "malus")] -pub fn run_node(cli: Cli, overseer_gen: impl service::OverseerGen) -> Result<()> { - run_node_inner(cli, overseer_gen) -} - -fn run_node_inner(cli: Cli, overseer_gen: impl service::OverseerGen) -> Result<()> { - let runner = cli.create_runner(&cli.run.base) - .map_err(Error::from)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - let grandpa_pause = if cli.run.grandpa_pause.is_empty() { - None - } else { - Some((cli.run.grandpa_pause[0], cli.run.grandpa_pause[1])) - }; - - if chain_spec.is_kusama() { - info!("----------------------------"); - info!("This chain is not in any way"); - info!(" endorsed by the "); - info!(" KUSAMA FOUNDATION "); - info!("----------------------------"); - } - - let jaeger_agent = cli.run.jaeger_agent; - - runner.run_node_until_exit(move |config| async move { - let role = config.role.clone(); - - match role { - #[cfg(feature = "browser")] - Role::Light => service::build_light(config).map(|(task_manager, _)| task_manager).map_err(Into::into), - #[cfg(not(feature = "browser"))] - Role::Light => Err(Error::Other("Light client not enabled".into())), - _ => service::build_full( - config, - service::IsCollator::No, - grandpa_pause, - cli.run.no_beefy, - jaeger_agent, - None, - overseer_gen, - ).map(|full| full.task_manager).map_err(Into::into) - } - }) -} - -/// Parses polkadot specific CLI arguments and run the service. -pub fn run() -> Result<()> { - let cli = Cli::from_args(); - - match &cli.subcommand { - None => run_node_inner(cli, service::RealOverseerGen), - Some(Subcommand::BuildSpec(cmd)) => { - let runner = cli.create_runner(cmd)?; - Ok(runner.sync_run(|config| { - cmd.run(config.chain_spec, config.network) - })?) - }, - Some(Subcommand::CheckBlock(cmd)) => { - let runner = cli.create_runner(cmd) - .map_err(Error::SubstrateCli)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - runner.async_run(|mut config| { - let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)?; - Ok((cmd.run(client, import_queue).map_err(Error::SubstrateCli), task_manager)) - }) - }, - Some(Subcommand::ExportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - Ok(runner.async_run(|mut config| { - let (client, _, _, task_manager) = service::new_chain_ops(&mut config, None) - .map_err(Error::PolkadotService)?; - Ok((cmd.run(client, config.database).map_err(Error::SubstrateCli), task_manager)) - })?) - }, - Some(Subcommand::ExportState(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - Ok(runner.async_run(|mut config| { - let (client, _, _, task_manager) = service::new_chain_ops(&mut config, None)?; - Ok((cmd.run(client, config.chain_spec).map_err(Error::SubstrateCli), task_manager)) - })?) - }, - Some(Subcommand::ImportBlocks(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - Ok(runner.async_run(|mut config| { - let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)?; - Ok((cmd.run(client, import_queue).map_err(Error::SubstrateCli), task_manager)) - })?) - }, - Some(Subcommand::PurgeChain(cmd)) => { - let runner = cli.create_runner(cmd)?; - Ok(runner.sync_run(|config| cmd.run(config.database))?) - }, - Some(Subcommand::Revert(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - - set_default_ss58_version(chain_spec); - - Ok(runner.async_run(|mut config| { - let (client, backend, _, task_manager) = service::new_chain_ops(&mut config, None)?; - Ok((cmd.run(client, backend).map_err(Error::SubstrateCli), task_manager)) - })?) - }, - Some(Subcommand::PvfPrepareWorker(cmd)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - let _ = builder.init(); - - #[cfg(any(target_os = "android", feature = "browser"))] - { - return Err( - sc_cli::Error::Input("PVF preparation workers are not supported under this platform".into()).into() - ); - } - - #[cfg(not(any(target_os = "android", feature = "browser")))] - { - polkadot_node_core_pvf::prepare_worker_entrypoint(&cmd.socket_path); - Ok(()) - } - }, - Some(Subcommand::PvfExecuteWorker(cmd)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - let _ = builder.init(); - - #[cfg(any(target_os = "android", feature = "browser"))] - { - return Err( - sc_cli::Error::Input("PVF execution workers are not supported under this platform".into()).into() - ); - } - - #[cfg(not(any(target_os = "android", feature = "browser")))] - { - polkadot_node_core_pvf::execute_worker_entrypoint(&cmd.socket_path); - Ok(()) - } - }, - Some(Subcommand::Benchmark(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - set_default_ss58_version(chain_spec); - - ensure_dev(chain_spec).map_err(Error::Other)?; - - #[cfg(feature = "kusama-native")] - if chain_spec.is_kusama() { - return Ok(runner.sync_run(|config| { - cmd.run::(config) - .map_err(|e| Error::SubstrateCli(e)) - })?) - } - - #[cfg(feature = "westend-native")] - if chain_spec.is_westend() { - return Ok(runner.sync_run(|config| { - cmd.run::(config) - .map_err(|e| Error::SubstrateCli(e)) - })?) - } - - // else we assume it is polkadot. - Ok(runner.sync_run(|config| { - cmd.run::(config) - .map_err(|e| Error::SubstrateCli(e)) - })?) - }, - Some(Subcommand::Key(cmd)) => Ok(cmd.run(&cli)?), - #[cfg(feature = "try-runtime")] - Some(Subcommand::TryRuntime(cmd)) => { - let runner = cli.create_runner(cmd)?; - let chain_spec = &runner.config().chain_spec; - set_default_ss58_version(chain_spec); - - use sc_service::TaskManager; - let registry = &runner.config().prometheus_config.as_ref().map(|cfg| &cfg.registry); - let task_manager = TaskManager::new( - runner.config().task_executor.clone(), - *registry, - ).map_err(|e| Error::SubstrateService(sc_service::Error::Prometheus(e)))?; - - ensure_dev(chain_spec).map_err(Error::Other)?; - - #[cfg(feature = "kusama-native")] - if chain_spec.is_kusama() { - return runner.async_run(|config| { - Ok((cmd.run::< - service::kusama_runtime::Block, - service::KusamaExecutor, - >(config).map_err(Error::SubstrateCli), task_manager)) - }) - } - - #[cfg(feature = "westend-native")] - if chain_spec.is_westend() { - return runner.async_run(|config| { - Ok((cmd.run::< - service::westend_runtime::Block, - service::WestendExecutor, - >(config).map_err(Error::SubstrateCli), task_manager)) - }) - } - // else we assume it is polkadot. - runner.async_run(|config| { - Ok((cmd.run::< - service::polkadot_runtime::Block, - service::PolkadotExecutor, - >(config).map_err(Error::SubstrateCli), task_manager)) - }) - }, - #[cfg(not(feature = "try-runtime"))] - Some(Subcommand::TryRuntime) => { - Err(Error::Other("TryRuntime wasn't enabled when building the node. \ - You can enable it with `--features try-runtime`.".into()).into()) - }, - }?; - Ok(()) -} diff --git a/cli/src/lib.rs b/cli/src/lib.rs deleted file mode 100644 index 02120081ee58..000000000000 --- a/cli/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot CLI library. - -#![warn(missing_docs)] - -#[cfg(feature = "browser")] -mod browser; -#[cfg(feature = "cli")] -mod cli; -#[cfg(feature = "cli")] -mod command; - -pub use service::{ - self, - ProvideRuntimeApi, CoreApi, IdentifyVariant, - Block, RuntimeApiCollection, TFullClient, -}; - -#[cfg(feature = "malus")] -pub use service::create_default_subsystems; - -#[cfg(feature = "cli")] -pub use cli::*; - -#[cfg(feature = "cli")] -pub use command::*; - -#[cfg(feature = "cli")] -pub use sc_cli::{Error, Result}; diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml deleted file mode 100644 index 494fdc4e6193..000000000000 --- a/core-primitives/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "polkadot-core-primitives" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } -parity-util-mem = { version = "0.9.0", default-features = false, optional = true } - -[features] -default = [ "std" ] -std = [ - "sp-core/std", - "sp-runtime/std", - "sp-std/std", - "parity-scale-codec/std", - "parity-util-mem", -] diff --git a/core-primitives/src/lib.rs b/core-primitives/src/lib.rs deleted file mode 100644 index c552929d15f3..000000000000 --- a/core-primitives/src/lib.rs +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] - -//! Core Polkadot types. -//! -//! These core Polkadot types are used by the relay chain and the Parachains. - -use sp_runtime::{generic, MultiSignature, traits::{Verify, IdentifyAccount}}; -use parity_scale_codec::{Encode, Decode}; -#[cfg(feature = "std")] -use parity_util_mem::MallocSizeOf; - -pub use sp_runtime::traits::{BlakeTwo256, Hash as HashT}; - -/// The block number type used by Polkadot. -/// 32-bits will allow for 136 years of blocks assuming 1 block per second. -pub type BlockNumber = u32; - -/// An instant or duration in time. -pub type Moment = u64; - -/// Alias to type for a signature for a transaction on the relay chain. This allows one of several -/// kinds of underlying crypto to be used, so isn't a fixed size when encoded. -pub type Signature = MultiSignature; - -/// Alias to the public key used for this chain, actually a `MultiSigner`. Like the signature, this -/// also isn't a fixed size when encoded, as different cryptos have different size public keys. -pub type AccountPublic = ::Signer; - -/// Alias to the opaque account ID type for this chain, actually a `AccountId32`. This is always -/// 32 bytes. -pub type AccountId = ::AccountId; - -/// The type for looking up accounts. We don't expect more than 4 billion of them. -pub type AccountIndex = u32; - -/// Identifier for a chain. 32-bit should be plenty. -pub type ChainId = u32; - -/// A hash of some data used by the relay chain. -pub type Hash = sp_core::H256; - -/// Unit type wrapper around [`Hash`] that represents a candidate hash. -/// -/// This type is produced by [`CandidateReceipt::hash`]. -/// -/// This type makes it easy to enforce that a hash is a candidate hash on the type level. -#[derive(Clone, Copy, Encode, Decode, Hash, Eq, PartialEq, Default, PartialOrd, Ord)] -#[cfg_attr(feature = "std", derive(MallocSizeOf))] -pub struct CandidateHash(pub Hash); - -#[cfg(feature="std")] -impl std::fmt::Display for CandidateHash { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - self.0.fmt(f) - } -} - -impl sp_std::fmt::Debug for CandidateHash { - fn fmt(&self, f: &mut sp_std::fmt::Formatter<'_>) -> sp_std::fmt::Result { - write!(f, "{:?}", self.0) - } -} - -/// Index of a transaction in the relay chain. 32-bit should be plenty. -pub type Nonce = u32; - -/// The balance of an account. -/// 128-bits (or 38 significant decimal figures) will allow for 10m currency (10^7) at a resolution -/// to all for one second's worth of an annualised 50% reward be paid to a unit holder (10^11 unit -/// denomination), or 10^18 total atomic units, to grow at 50%/year for 51 years (10^9 multiplier) -/// for an eventual total of 10^27 units (27 significant decimal figures). -/// We round denomination to 10^12 (12 sdf), and leave the other redundancy at the upper end so -/// that 32 bits may be multiplied with a balance in 128 bits without worrying about overflow. -pub type Balance = u128; - -/// Header type. -pub type Header = generic::Header; -/// Block type. -pub type Block = generic::Block; -/// Block ID. -pub type BlockId = generic::BlockId; - -/// Opaque, encoded, unchecked extrinsic. -pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic; - -/// The information that goes alongside a transfer_into_parachain operation. Entirely opaque, it -/// will generally be used for identifying the reason for the transfer. Typically it will hold the -/// destination account to which the transfer should be credited. If still more information is -/// needed, then this should be a hash with the pre-image presented via an off-chain mechanism on -/// the parachain. -pub type Remark = [u8; 32]; - -/// A message sent from the relay-chain down to a parachain. -/// -/// The size of the message is limited by the `config.max_downward_message_size` parameter. -pub type DownwardMessage = sp_std::vec::Vec; - -/// A wrapped version of `DownwardMessage`. The difference is that it has attached the block number when -/// the message was sent. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq)] -#[cfg_attr(feature = "std", derive(MallocSizeOf))] -pub struct InboundDownwardMessage { - /// The block number at which this messages was put into the downward message queue. - pub sent_at: BlockNumber, - /// The actual downward message to processes. - pub msg: DownwardMessage, -} - -/// An HRMP message seen from the perspective of a recipient. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq)] -#[cfg_attr(feature = "std", derive(MallocSizeOf))] -pub struct InboundHrmpMessage { - /// The block number at which this message was sent. - /// Specifically, it is the block number at which the candidate that sends this message was - /// enacted. - pub sent_at: BlockNumber, - /// The message payload. - pub data: sp_std::vec::Vec, -} - -/// An HRMP message seen from the perspective of a sender. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq, Eq, Hash)] -#[cfg_attr(feature = "std", derive(MallocSizeOf))] -pub struct OutboundHrmpMessage { - /// The para that will get this message in its downward message queue. - pub recipient: Id, - /// The message payload. - pub data: sp_std::vec::Vec, -} - -/// V1 primitives. -pub mod v1 { - pub use super::*; -} diff --git a/bridges/deny.toml b/deny.toml similarity index 93% rename from bridges/deny.toml rename to deny.toml index e754b8e9bd36..d22897182af2 100644 --- a/bridges/deny.toml +++ b/deny.toml @@ -48,27 +48,21 @@ notice = "warn" # A list of advisory IDs to ignore. Note that ignored advisories will still # output a note when they are encountered. ignore = [ - # generic-array lifetime errasure. If all upstream crates upgrade to >=0.14.0 - # we can remove this. - "RUSTSEC-2020-0146", # yaml-rust < clap. Not feasible to upgrade and also not possible to trigger in practice. "RUSTSEC-2018-0006", - # Comes from wasmtime via Substrate: 'cranelift-codegen' - "RUSTSEC-2021-0067", - # Comes from libp2p via Substrate: 'aes-soft', 'aesni', 'block-cipher', 'stream-cipher' - "RUSTSEC-2021-0060", - "RUSTSEC-2021-0059", - "RUSTSEC-2020-0057", - "RUSTSEC-2021-0064", - # Comes from jsonrpc via Substrate: 'failure', 'net2', 'lock_api' - "RUSTSEC-2020-0036", - "RUSTSEC-2020-0077", - "RUSTSEC-2019-0036", "RUSTSEC-2020-0070", # Comes from honggfuzz via storage-proof-fuzzer: 'memmap' "RUSTSEC-2020-0077", # Comes from time: 'stweb' (will be fixed in upcoming time 0.3) - "RUSTSEC-2020-0056" + "RUSTSEC-2020-0056", + # net2 (origin: Substrate RPC crates) + "RUSTSEC-2020-0016", + # Wasmtime (origin: Substrate executor crates) + "RUSTSEC-2021-0110", + # time (origin: Substrate RPC + benchmarking crates) + "RUSTSEC-2020-0071", + # chrono (origin: Substrate benchmarking + cli + ...) + "RUSTSEC-2020-0159", ] # Threshold for security vulnerabilities, any vulnerability with a CVSS score # lower than the range specified will be ignored. Note that ignored advisories @@ -85,7 +79,7 @@ ignore = [ # https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html [licenses] # The lint level for crates which do not have a detectable license -unlicensed = "deny" +unlicensed = "allow" # List of explictly allowed licenses # See https://spdx.org/licenses/ for list of possible licenses # [possible values: any SPDX 3.7 short identifier (+ optional exception)]. diff --git a/bridges/deployments/BridgeDeps.Dockerfile b/deployments/BridgeDeps.Dockerfile similarity index 100% rename from bridges/deployments/BridgeDeps.Dockerfile rename to deployments/BridgeDeps.Dockerfile diff --git a/deployments/README.md b/deployments/README.md new file mode 100644 index 000000000000..920935d5fdb8 --- /dev/null +++ b/deployments/README.md @@ -0,0 +1,247 @@ +# Bridge Deployments + +## Requirements +Make sure to install `docker` and `docker-compose` to be able to run and test bridge deployments. If +for whatever reason you can't or don't want to use Docker, you can find some scripts for running the +bridge [here](https://github.com/svyatonik/parity-bridges-common.test). + +## Networks +One of the building blocks we use for our deployments are _networks_. A network is a collection of +homogenous blockchain nodes. We have Docker Compose files for each network that we want to bridge. +Each of the compose files found in the `./networks` folder is able to independently spin up a +network like so: + +```bash +docker-compose -f ./networks/rialto.yml up +``` + +After running this command we would have a network of several nodes producing blocks. + +## Bridges +A _bridge_ is a way for several _networks_ to connect to one another. Bridge deployments have their +own Docker Compose files which can be found in the `./bridges` folder. These Compose files typically +contain bridge relayers, which are services external to blockchain nodes, and other components such +as testing infrastructure, or user interfaces. + +Unlike the network Compose files, these *cannot* be deployed on their own. They must be combined +with different networks. + +In general, we can deploy the bridge using `docker-compose up` in the following way: + +```bash +docker-compose -f .yml \ + -f .yml \ + -f .yml \ + -f .yml up +``` + +If you want to see how the Compose commands are actually run, check out the source code of the +[`./run.sh`](./run.sh). + +One thing worth noting is that we have a _monitoring_ Compose file. This adds support for Prometheus +and Grafana. We cover these in more details in the [Monitoring](#monitoring) section. At the moment +the monitoring Compose file is _not_ optional, and must be included for bridge deployments. + +### Running and Updating Deployments +We currently support two bridge deployments +1. Rialto Substrate to Millau Substrate +2. Westend Substrate to Millau Substrate + +These bridges can be deployed using our [`./run.sh`](./run.sh) script. + +The first argument it takes is the name of the bridge you want to run. Right now we only support two +bridges: `rialto-millau` and `westend-millau`. + +```bash +./run.sh rialto-millau +``` + +If you add a second `update` argument to the script it will pull the latest images from Docker Hub +and restart the deployment. + +```bash +./run.sh rialto-millau update +``` + +You can also bring down a deployment using the script with the `stop` argument. + +```bash +./run.sh rialto-millau stop +``` + +### Adding Deployments +We need two main things when adding a new deployment. First, the new network which we want to +bridge. A compose file for the network should be added in the `/networks/` folder. Secondly we'll +need a new bridge Compose file in `./bridges/`. This should configure the bridge relayer nodes +correctly for the two networks, and add any additional components needed for the deployment. If you +want you can also add support in the `./run` script for the new deployment. While recommended it's +not strictly required. + +## General Notes + +Rialto authorities are named: `Alice`, `Bob`, `Charlie`, `Dave`, `Eve`. +Millau authorities are named: `Alice`, `Bob`, `Charlie`, `Dave`, `Eve`. + +Both authorities and following accounts have enough funds (for test purposes) on corresponding Substrate chains: + +- on Rialto: `Ferdie`, `George`, `Harry`. +- on Millau: `Ferdie`, `George`, `Harry`. + +Names of accounts on Substrate (Rialto and Millau) chains may be prefixed with `//` and used as +seeds for the `sr25519` keys. This seed may also be used in the signer argument in Substrate relays. +Example: + +```bash +./substrate-relay relay-headers rialto-to-millau \ + --source-host rialto-node-alice \ + --source-port 9944 \ + --target-host millau-node-alice \ + --target-port 9944 \ + --source-signer //Harry \ + --prometheus-host=0.0.0.0 +``` + +Some accounts are used by bridge components. Using these accounts to sign other transactions +is not recommended, because this may lead to nonces conflict. + +Following accounts are used when `rialto-millau` bridge is running: + +- Millau's `Charlie` signs complex headers+messages relay transactions on Millau chain; +- Rialto's `Charlie` signs complex headers+messages relay transactions on Rialto chain; +- Millau's `Dave` signs Millau transactions which contain messages for Rialto; +- Rialto's `Dave` signs Rialto transactions which contain messages for Millau; +- Millau's `Eve` signs relay transactions with message delivery confirmations (lane 00000001) from Rialto to Millau; +- Rialto's `Eve` signs relay transactions with messages (lane 00000001) from Millau to Rialto; +- Millau's `Ferdie` signs relay transactions with messages (lane 00000001) from Rialto to Millau; +- Rialto's `Ferdie` signs relay transactions with message delivery confirmations (lane 00000001) from Millau to Rialto; +- Millau's `RialtoMessagesOwner` signs relay transactions with updated Rialto -> Millau conversion rate; +- Rialto's `MillauMessagesOwner` signs relay transactions with updated Millau -> Rialto conversion rate. + +Following accounts are used when `westend-millau` bridge is running: + +- Millau's `George` signs relay transactions with new Westend headers. + +### Docker Usage +When the network is running you can query logs from individual nodes using: + +```bash +docker logs rialto_millau-node-charlie_1 -f +``` + +To kill all leftover containers and start the network from scratch next time: +```bash +docker ps -a --format "{{.ID}}" | xargs docker rm # This removes all containers! +``` + +### Docker Compose Usage +If you're not familiar with how to use `docker-compose` here are some useful commands you'll need +when interacting with the bridge deployments: + +```bash +docker-compose pull # Get the latest images from the Docker Hub +docker-compose build # This is going to build images +docker-compose up # Start all the nodes +docker-compose up -d # Start the nodes in detached mode. +docker-compose down # Stop the network. +``` + +Note that for the you'll need to add the appropriate `-f` arguments that were mentioned in the +[Bridges](#bridges) section. You can read more about using multiple Compose files +[here](https://docs.docker.com/compose/extends/#multiple-compose-files). One thing worth noting is +that the _order_ the compose files are specified in matters. A different order will result in a +different configuration. + +You can sanity check the final config like so: + +```bash +docker-compose -f docker-compose.yml -f docker-compose.override.yml config > docker-compose.merged.yml +``` + +## Docker and Git Deployment +It is also possible to avoid using images from the Docker Hub and instead build +containers from Git. There are two ways to build the images this way. + +### Git Repo +If you have cloned the bridges repo you can build local Docker images by running the following +command at the top level of the repo: + +```bash +docker build . -t local/ --build-arg=PROJECT= +``` + +This will build a local image of a particular component with a tag of +`local/`. This tag can be used in Docker Compose files. + +You can configure the build using using Docker +[build arguments](https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg). +Here are the arguments currently supported: + - `BRIDGE_REPO`: Git repository of the bridge node and relay code + - `BRIDGE_HASH`: Commit hash within that repo (can also be a branch or tag) + - `ETHEREUM_REPO`: Git repository of the OpenEthereum client + - `ETHEREUM_HASH`: Commit hash within that repo (can also be a branch or tag) + - `PROJECT`: Project to build withing bridges repo. Can be one of: + - `rialto-bridge-node` + - `millau-bridge-node` + - `substrate-relay` + +### GitHub Actions +We have a nightly job which runs and publishes Docker images for the different nodes and relayers to +the [ParityTech Docker Hub](https://hub.docker.com/u/paritytech) organization. These images are used +for our ephemeral (temporary) test networks. Additionally, any time a tag in the form of `v*` is +pushed to GitHub the publishing job is run. This will build all the components (nodes, relayers) and +publish them. + +With images built using either method, all you have to do to use them in a deployment is change the +`image` field in the existing Docker Compose files to point to the tag of the image you want to use. + +### Monitoring +[Prometheus](https://prometheus.io/) is used by the bridge relay to monitor information such as system +resource use, and block data (e.g the best blocks it knows about). In order to visualize this data +a [Grafana](https://grafana.com/) dashboard can be used. + +As part of the Rialto `docker-compose` setup we spin up a Prometheus server and Grafana dashboard. The +Prometheus server connects to the Prometheus data endpoint exposed by the bridge relay. The Grafana +dashboard uses the Prometheus server as its data source. + +The default port for the bridge relay's Prometheus data is `9616`. The host and port can be +configured though the `--prometheus-host` and `--prometheus-port` flags. The Prometheus server's +dashboard can be accessed at `http://localhost:9090`. The Grafana dashboard can be accessed at +`http://localhost:3000`. Note that the default log-in credentials for Grafana are `admin:admin`. + +### Environment Variables +Here is an example `.env` file which is used for production deployments and network updates. For +security reasons it is not kept as part of version control. When deploying a network this +file should be correctly populated and kept in the appropriate [`bridges`](`./bridges`) deployment +folder. + +The `UI_SUBSTRATE_PROVIDER` variable lets you define the url of the Substrate node that the user +interface will connect to. `UI_ETHEREUM_PROVIDER` is used only as a guidance for users to connect +Metamask to the right Ethereum network. `UI_EXPECTED_ETHEREUM_NETWORK_ID` is used by +the user interface as a fail safe to prevent users from connecting their Metamask extension to an +unexpected network. + +```bash +GRAFANA_ADMIN_PASS=admin_pass +GRAFANA_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/ +GRAFANA_SERVER_DOMAIN=server.domain.io +MATRIX_ACCESS_TOKEN="access-token" +WITH_PROXY=1 # Optional +UI_SUBSTRATE_PROVIDER=ws://localhost:9944 +UI_ETHEREUM_PROVIDER=http://localhost:8545 +UI_EXPECTED_ETHEREUM_NETWORK_ID=105 +``` + +### UI + +Use [wss://rialto.bridges.test-installations.parity.io/](https://polkadot.js.org/apps/) +as a custom endpoint for [https://polkadot.js.org/apps/](https://polkadot.js.org/apps/). + +### Polkadot.js UI + +To teach the UI decode our custom types used in the pallet, go to: `Settings -> Developer` +and import the [`./types.json`](./types.json) + +## Scripts + +The are some bash scripts in `scripts` folder that allow testing `Relay` +without running the entire network within docker. Use if needed for development. diff --git a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json b/deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json similarity index 84% rename from bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json rename to deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json index 69396162bbaa..32f3e53d6671 100644 --- a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json +++ b/deployments/bridges/rialto-millau/dashboard/grafana/relay-millau-to-rialto-messages-dashboard.json @@ -471,7 +471,7 @@ } ], "executionErrorState": "alerting", - "for": "5m", + "for": "7m", "frequency": "1m", "handler": 1, "name": "Messages from Millau to Rialto are not being delivered", @@ -896,7 +896,7 @@ } ], "executionErrorState": "alerting", - "for": "5m", + "for": "7m", "frequency": "1m", "handler": 1, "name": "Messages (00000001) from Millau to Rialto are not being delivered", @@ -967,8 +967,7 @@ "fill": true, "line": true, "op": "lt", - "value": 1, - "yaxis": "left" + "value": 1 } ], "timeFrom": null, @@ -1155,6 +1154,249 @@ "alignLevel": null } }, + { + "alert": { + "alertRuleTags": {}, + "conditions": [ + { + "evaluator": { + "params": [ + 1 + ], + "type": "lt" + }, + "operator": { + "type": "and" + }, + "query": { + "params": [ + "B", + "1m", + "now" + ] + }, + "reducer": { + "params": [], + "type": "max" + }, + "type": "query" + } + ], + "executionErrorState": "alerting", + "for": "5m", + "frequency": "1m", + "handler": 1, + "name": "Token swap messages from Millau to Rialto are not being delivered", + "noDataState": "no_data", + "notifications": [] + }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "label_replace(label_replace(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=~\"source_latest_generated|target_latest_received\"}, \"type\", \"Latest message sent from Rialto\", \"type\", \"source_latest_generated\"), \"type\", \"Latest message received by Millau\", \"type\", \"target_latest_received\")", + "interval": "", + "legendFormat": "{{type}}", + "refId": "A" + }, + { + "expr": "increase(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=\"target_latest_received\"}[20m])", + "hide": true, + "interval": "", + "legendFormat": "Messages generated in last 5 minutes", + "refId": "B" + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "lt", + "value": 1 + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Delivery race (73776170)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 38 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "label_replace(label_replace(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=~\"source_latest_confirmed|target_latest_received\"}, \"type\", \"Latest message confirmed by Rialto to Millau\", \"type\", \"source_latest_confirmed\"), \"type\", \"Latest message received by Millau\", \"type\", \"target_latest_received\")", + "interval": "", + "legendFormat": "{{type}}", + "refId": "A" + }, + { + "expr": "increase(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=\"source_latest_confirmed\"}[10m])", + "hide": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Confirmations race (73776170)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, { "datasource": "Prometheus", "fieldConfig": { @@ -1181,7 +1423,7 @@ "h": 8, "w": 8, "x": 0, - "y": 38 + "y": 49 }, "id": 16, "options": { @@ -1199,7 +1441,7 @@ "pluginVersion": "7.1.3", "targets": [ { - "expr": "avg_over_time(Millau_to_Rialto_MessageLane_00000000_process_cpu_usage_percentage[1m])", + "expr": "avg_over_time(process_cpu_usage_percentage{instance='relay-millau-rialto:9616'}[1m])", "instant": true, "interval": "", "legendFormat": "1 CPU = 100", @@ -1230,7 +1472,7 @@ "h": 8, "w": 8, "x": 8, - "y": 38 + "y": 49 }, "hiddenSeries": false, "id": 18, @@ -1257,7 +1499,7 @@ "steppedLine": false, "targets": [ { - "expr": "Millau_to_Rialto_MessageLane_00000000_system_average_load", + "expr": "system_average_load{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Average system load in last {{over}}", "refId": "A" @@ -1323,7 +1565,7 @@ "h": 8, "w": 8, "x": 16, - "y": 38 + "y": 49 }, "hiddenSeries": false, "id": 20, @@ -1350,7 +1592,7 @@ "steppedLine": false, "targets": [ { - "expr": "Millau_to_Rialto_MessageLane_00000000_process_memory_usage_bytes / 1024 / 1024", + "expr": "process_memory_usage_bytes{instance='relay-millau-rialto:9616'} / 1024 / 1024", "interval": "", "legendFormat": "Process memory, MB", "refId": "A" diff --git a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json b/deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json similarity index 99% rename from bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json rename to deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json index 29691e0a060c..eaca8610aec7 100644 --- a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json +++ b/deployments/bridges/rialto-millau/dashboard/grafana/relay-rialto-to-millau-messages-dashboard.json @@ -462,7 +462,7 @@ } ], "executionErrorState": "alerting", - "for": "5m", + "for": "7m", "frequency": "1m", "handler": 1, "name": "Messages from Rialto to Millau are not being delivered", @@ -887,7 +887,7 @@ } ], "executionErrorState": "alerting", - "for": "5m", + "for": "7m", "frequency": "1m", "handler": 1, "name": "Messages (00000001) from Rialto to Millau are not being delivered", @@ -1190,7 +1190,7 @@ "pluginVersion": "7.1.3", "targets": [ { - "expr": "avg_over_time(Rialto_to_Millau_MessageLane_00000000_process_cpu_usage_percentage[1m])", + "expr": "avg_over_time(process_cpu_usage_percentage{instance='relay-millau-rialto:9616'}[1m])", "instant": true, "interval": "", "legendFormat": "1 CPU = 100", @@ -1248,7 +1248,7 @@ "steppedLine": false, "targets": [ { - "expr": "Rialto_to_Millau_MessageLane_00000000_system_average_load", + "expr": "system_average_load{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Average system load in last {{over}}", "refId": "A" @@ -1341,7 +1341,7 @@ "steppedLine": false, "targets": [ { - "expr": "Rialto_to_Millau_MessageLane_00000000_process_memory_usage_bytes / 1024 / 1024", + "expr": "process_memory_usage_bytes{instance='relay-millau-rialto:9616'} / 1024 / 1024", "interval": "", "legendFormat": "Process memory, MB", "refId": "A" diff --git a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json b/deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json similarity index 93% rename from bridges/deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json rename to deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json index 61ff281cc2a9..5280da748502 100644 --- a/bridges/deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json +++ b/deployments/bridges/rialto-millau/dashboard/grafana/rialto-millau-maintenance-dashboard.json @@ -65,7 +65,7 @@ "targets": [ { "exemplar": true, - "expr": "Rialto_to_Millau_MessageLane_00000000_rialto_storage_proof_overhead", + "expr": "rialto_storage_proof_overhead{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Actual overhead", "refId": "A" @@ -169,14 +169,14 @@ "targets": [ { "exemplar": true, - "expr": "Westend_to_Millau_Sync_kusama_to_base_conversion_rate / Westend_to_Millau_Sync_polkadot_to_base_conversion_rate", + "expr": "kusama_to_base_conversion_rate{instance='relay-millau-rialto:9616'} / polkadot_to_base_conversion_rate{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Outside of runtime (actually Polkadot -> Kusama)", "refId": "A" }, { "exemplar": true, - "expr": "Rialto_to_Millau_MessageLane_00000000_rialto_millau_to_rialto_conversion_rate", + "expr": "Millau_Rialto_to_Millau_conversion_rate{instance='relay-millau-rialto:9616'}", "hide": false, "interval": "", "legendFormat": "At runtime", @@ -187,7 +187,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rialto: Millau -> Rialto conversion rate", + "title": "Millau: Rialto -> Millau conversion rate", "tooltip": { "shared": true, "sort": 0, @@ -273,7 +273,7 @@ "targets": [ { "exemplar": true, - "expr": "Millau_to_Rialto_MessageLane_00000000_millau_storage_proof_overhead", + "expr": "millau_storage_proof_overhead{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Actual overhead", "refId": "A" @@ -377,14 +377,14 @@ "targets": [ { "exemplar": true, - "expr": "Westend_to_Millau_Sync_polkadot_to_base_conversion_rate / Westend_to_Millau_Sync_kusama_to_base_conversion_rate", + "expr": "polkadot_to_base_conversion_rate{instance='relay-millau-rialto:9616'} / kusama_to_base_conversion_rate{instance='relay-millau-rialto:9616'}", "interval": "", "legendFormat": "Outside of runtime (actually Kusama -> Polkadot)", "refId": "A" }, { "exemplar": true, - "expr": "Millau_to_Rialto_MessageLane_00000000_millau_rialto_to_millau_conversion_rate", + "expr": "Rialto_Millau_to_Rialto_conversion_rate{instance='relay-millau-rialto:9616'}", "hide": false, "interval": "", "legendFormat": "At runtime", @@ -395,7 +395,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Millau: Rialto -> Millau conversion rate", + "title": "Rialto: Millau -> Rialto conversion rate", "tooltip": { "shared": true, "sort": 0, diff --git a/bridges/deployments/bridges/rialto-millau/dashboard/prometheus/targets.yml b/deployments/bridges/rialto-millau/dashboard/prometheus/targets.yml similarity index 100% rename from bridges/deployments/bridges/rialto-millau/dashboard/prometheus/targets.yml rename to deployments/bridges/rialto-millau/dashboard/prometheus/targets.yml diff --git a/deployments/bridges/rialto-millau/docker-compose.yml b/deployments/bridges/rialto-millau/docker-compose.yml new file mode 100644 index 000000000000..1ff93869de1c --- /dev/null +++ b/deployments/bridges/rialto-millau/docker-compose.yml @@ -0,0 +1,115 @@ +# Exposed ports: 10016, 10116, 10216, 10316, 10416, 10516, 10716 + +version: '3.5' +services: + # We provide overrides for these particular nodes since they are public facing + # nodes which we use to connect from things like Polkadot JS Apps. + rialto-node-charlie: + environment: + VIRTUAL_HOST: wss.rialto.brucke.link + VIRTUAL_PORT: 9944 + LETSENCRYPT_HOST: wss.rialto.brucke.link + LETSENCRYPT_EMAIL: admin@parity.io + + millau-node-charlie: + environment: + VIRTUAL_HOST: wss.millau.brucke.link + VIRTUAL_PORT: 9944 + LETSENCRYPT_HOST: wss.millau.brucke.link + LETSENCRYPT_EMAIL: admin@parity.io + + relay-millau-rialto: &sub-bridge-relay + image: paritytech/substrate-relay + entrypoint: /entrypoints/relay-millau-rialto-entrypoint.sh + volumes: + - ./bridges/rialto-millau/entrypoints:/entrypoints + environment: + RUST_LOG: rpc=trace,bridge=trace + ports: + - "10016:9616" + depends_on: &all-nodes + - millau-node-alice + - millau-node-bob + - millau-node-charlie + - millau-node-dave + - millau-node-eve + - rialto-node-alice + - rialto-node-bob + - rialto-node-charlie + - rialto-node-dave + - rialto-node-eve + + relay-messages-millau-to-rialto-lane-00000001: + <<: *sub-bridge-relay + environment: + MSG_EXCHANGE_GEN_LANE: "00000001" + entrypoint: /entrypoints/relay-messages-millau-to-rialto-entrypoint.sh + ports: + - "10116:9616" + depends_on: + - relay-millau-rialto + + relay-messages-millau-to-rialto-generator: + <<: *sub-bridge-relay + environment: + RUST_LOG: bridge=trace + MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001" + entrypoint: /entrypoints/relay-messages-to-rialto-generator-entrypoint.sh + ports: + - "10216:9616" + depends_on: + - relay-millau-rialto + + relay-messages-millau-to-rialto-resubmitter: + <<: *sub-bridge-relay + environment: + RUST_LOG: bridge=trace + entrypoint: /entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh + ports: + - "10316:9616" + depends_on: + - relay-messages-millau-to-rialto-generator + + relay-messages-rialto-to-millau-lane-00000001: + <<: *sub-bridge-relay + environment: + RUST_LOG: bridge=trace + MSG_EXCHANGE_GEN_LANE: "00000001" + entrypoint: /entrypoints/relay-messages-rialto-to-millau-entrypoint.sh + ports: + - "10416:9616" + depends_on: + - relay-millau-rialto + + relay-messages-rialto-to-millau-generator: + <<: *sub-bridge-relay + environment: + MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001" + entrypoint: /entrypoints/relay-messages-to-millau-generator-entrypoint.sh + ports: + - "10516:9616" + depends_on: + - relay-millau-rialto + + relay-token-swap-generator: + <<: *sub-bridge-relay + entrypoint: /entrypoints/relay-token-swap-generator-entrypoint.sh + ports: + - "10716:9616" + depends_on: + - relay-millau-rialto + + # Note: These are being overridden from the top level `monitoring` compose file. + grafana-dashboard: + environment: + VIRTUAL_HOST: grafana.millau.brucke.link,grafana.rialto.brucke.link + VIRTUAL_PORT: 3000 + LETSENCRYPT_HOST: grafana.millau.brucke.link,grafana.rialto.brucke.link + LETSENCRYPT_EMAIL: admin@parity.io + volumes: + - ./bridges/rialto-millau/dashboard/grafana:/etc/grafana/dashboards/rialto-millau:ro + + prometheus-metrics: + volumes: + - ./bridges/rialto-millau/dashboard/prometheus/targets.yml:/etc/prometheus/targets-rialto-millau.yml + depends_on: *all-nodes diff --git a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh similarity index 84% rename from bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh rename to deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh index 26be814b6941..758dce2515aa 100755 --- a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh +++ b/deployments/bridges/rialto-millau/entrypoints/relay-messages-millau-to-rialto-entrypoint.sh @@ -1,13 +1,13 @@ #!/bin/bash set -xeu -sleep 20 +sleep 60 curl -v http://millau-node-bob:9933/health curl -v http://rialto-node-bob:9933/health MESSAGE_LANE=${MSG_EXCHANGE_GEN_LANE:-00000000} -/home/user/substrate-relay relay-messages MillauToRialto \ +/home/user/substrate-relay relay-messages millau-to-rialto \ --lane $MESSAGE_LANE \ --source-host millau-node-bob \ --source-port 9944 \ diff --git a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh similarity index 84% rename from bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh rename to deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh index 04bde07ad971..e0731e9058d1 100755 --- a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh +++ b/deployments/bridges/rialto-millau/entrypoints/relay-messages-rialto-to-millau-entrypoint.sh @@ -1,13 +1,13 @@ #!/bin/bash set -xeu -sleep 20 +sleep 60 curl -v http://millau-node-bob:9933/health curl -v http://rialto-node-bob:9933/health MESSAGE_LANE=${MSG_EXCHANGE_GEN_LANE:-00000000} -/home/user/substrate-relay relay-messages RialtoToMillau \ +/home/user/substrate-relay relay-messages rialto-to-millau \ --lane $MESSAGE_LANE \ --source-host rialto-node-bob \ --source-port 9944 \ diff --git a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh similarity index 89% rename from bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh rename to deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh index 96676bad85b0..b8d051a13122 100755 --- a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh +++ b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-millau-generator-entrypoint.sh @@ -14,7 +14,7 @@ SECONDARY_MESSAGE_LANE=${MSG_EXCHANGE_GEN_SECONDARY_LANE} MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE=1024 FERDIE_ADDR=5oSLwptwgySxh5vz1HdvznQJjbQVgwYSvHEpYYeTXu1Ei8j7 -SHARED_CMD="/home/user/substrate-relay send-message RialtoToMillau" +SHARED_CMD="/home/user/substrate-relay send-message rialto-to-millau" SHARED_HOST="--source-host rialto-node-bob --source-port 9944" DAVE_SIGNER="--source-signer //Dave --target-signer //Dave" @@ -25,6 +25,8 @@ rand_sleep() { SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1` echo "Sleeping $SUBMIT_DELAY_S seconds..." sleep $SUBMIT_DELAY_S + NOW=`date "+%Y-%m-%d %H:%M:%S"` + echo "Woke up at $NOW" } # start sending large messages immediately @@ -32,6 +34,10 @@ LARGE_MESSAGES_TIME=0 # start sending message packs in a hour BUNCH_OF_MESSAGES_TIME=3600 +# give conversion rate updater some time to update Millau->Rialto conversion rate in Rialto +# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value) +sleep 180 + while true do rand_sleep @@ -46,6 +52,7 @@ do $SEND_MESSAGE \ --lane $SECONDARY_MESSAGE_LANE \ --origin Target \ + --dispatch-fee-payment at-target-chain \ remark fi diff --git a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh similarity index 89% rename from bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh rename to deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh index c24ec8ea7f40..0365ebe1d8b4 100755 --- a/bridges/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh +++ b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-generator-entrypoint.sh @@ -14,7 +14,7 @@ SECONDARY_MESSAGE_LANE=${MSG_EXCHANGE_GEN_SECONDARY_LANE} MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE=128 FERDIE_ADDR=6ztG3jPnJTwgZnnYsgCDXbbQVR82M96hBZtPvkN56A9668ZC -SHARED_CMD=" /home/user/substrate-relay send-message MillauToRialto" +SHARED_CMD=" /home/user/substrate-relay send-message millau-to-rialto" SHARED_HOST="--source-host millau-node-bob --source-port 9944" DAVE_SIGNER="--target-signer //Dave --source-signer //Dave" @@ -25,6 +25,8 @@ rand_sleep() { SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1` echo "Sleeping $SUBMIT_DELAY_S seconds..." sleep $SUBMIT_DELAY_S + NOW=`date "+%Y-%m-%d %H:%M:%S"` + echo "Woke up at $NOW" } # start sending large messages immediately @@ -32,6 +34,10 @@ LARGE_MESSAGES_TIME=0 # start sending message packs in a hour BUNCH_OF_MESSAGES_TIME=3600 +# give conversion rate updater some time to update Rialto->Millau conversion rate in Millau +# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value) +sleep 180 + while true do rand_sleep @@ -46,6 +52,7 @@ do $SEND_MESSAGE \ --lane $SECONDARY_MESSAGE_LANE \ --origin Target \ + --dispatch-fee-payment at-target-chain \ remark fi diff --git a/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh new file mode 100755 index 000000000000..ca4c9f03a8bb --- /dev/null +++ b/deployments/bridges/rialto-millau/entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -xeu + +sleep 20 +curl -v http://millau-node-alice:9933/health + +# //Dave is signing Millau -> Rialto message-send transactions, which are causing problems. +# +# When large message is being sent from Millau to Rialto AND other transactions are +# blocking it from being mined, we'll see something like this in logs: +# +# Millau transaction priority with tip=0: 17800827994. Target priority: +# 526186677695 +# +# So since fee multiplier in Millau is `1` and `WeightToFee` is `IdentityFee`, then +# we need tip around `526186677695 - 17800827994 = 508_385_849_701`. Let's round it +# up to `1_000_000_000_000`. + +/home/user/substrate-relay resubmit-transactions millau \ + --target-host millau-node-alice \ + --target-port 9944 \ + --target-signer //Dave \ + --stalled-blocks 5 \ + --tip-limit 1000000000000 \ + --tip-step 1000000000 \ + make-it-best-transaction diff --git a/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh new file mode 100755 index 000000000000..c87591fb6dbb --- /dev/null +++ b/deployments/bridges/rialto-millau/entrypoints/relay-millau-rialto-entrypoint.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -xeu + +sleep 60 +curl -v http://millau-node-alice:9933/health +curl -v http://rialto-node-alice:9933/health + +/home/user/substrate-relay init-bridge millau-to-rialto \ + --source-host millau-node-alice \ + --source-port 9944 \ + --target-host rialto-node-alice \ + --target-port 9944 \ + --target-signer //Alice + +/home/user/substrate-relay init-bridge rialto-to-millau \ + --source-host rialto-node-alice \ + --source-port 9944 \ + --target-host millau-node-alice \ + --target-port 9944 \ + --target-signer //Alice + +# Give chain a little bit of time to process initialization transaction +sleep 6 + +/home/user/substrate-relay relay-headers-and-messages millau-rialto \ + --millau-host millau-node-alice \ + --millau-port 9944 \ + --millau-signer //Charlie \ + --millau-messages-pallet-owner=//RialtoMessagesOwner \ + --rialto-host rialto-node-alice \ + --rialto-port 9944 \ + --rialto-signer //Charlie \ + --rialto-messages-pallet-owner=//MillauMessagesOwner \ + --lane=00000000 \ + --lane=73776170 \ + --prometheus-host=0.0.0.0 diff --git a/deployments/bridges/rialto-millau/entrypoints/relay-token-swap-generator-entrypoint.sh b/deployments/bridges/rialto-millau/entrypoints/relay-token-swap-generator-entrypoint.sh new file mode 100755 index 000000000000..95bbe1e38fb2 --- /dev/null +++ b/deployments/bridges/rialto-millau/entrypoints/relay-token-swap-generator-entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# THIS SCRIPT IS NOT INTENDED FOR USE IN PRODUCTION ENVIRONMENT +# +# This scripts periodically calls the Substrate relay binary to generate messages. These messages +# are sent from the Millau network to the Rialto network. + +set -eu + +# Max delay before submitting transactions (s) +MAX_SUBMIT_DELAY_S=60 +SOURCE_HOST=millau-node-charlie +SOURCE_PORT=9944 +TARGET_HOST=rialto-node-charlie +TARGET_PORT=9944 + +# Sleep a bit between messages +rand_sleep() { + SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1` + echo "Sleeping $SUBMIT_DELAY_S seconds..." + sleep $SUBMIT_DELAY_S + NOW=`date "+%Y-%m-%d %H:%M:%S"` + echo "Woke up at $NOW" +} + +# give conversion rate updater some time to update Rialto->Millau conversion rate in Millau +# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value) +sleep 180 + +while true +do + rand_sleep + echo "Initiating token-swap between Rialto and Millau" + /home/user/substrate-relay \ + swap-tokens \ + millau-to-rialto \ + --source-host $SOURCE_HOST \ + --source-port $SOURCE_PORT \ + --source-signer //WithRialtoTokenSwap \ + --source-balance 100000 \ + --target-host $TARGET_HOST \ + --target-port $TARGET_PORT \ + --target-signer //WithMillauTokenSwap \ + --target-balance 200000 \ + lock-until-block \ + --blocks-before-expire 32 +done diff --git a/bridges/deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json b/deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json similarity index 96% rename from bridges/deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json rename to deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json index e73ddea40f1a..1a3603512fdf 100644 --- a/bridges/deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json +++ b/deployments/bridges/westend-millau/dashboard/grafana/relay-westend-to-millau-headers-dashboard.json @@ -24,7 +24,7 @@ { "evaluator": { "params": [ - 5 + 32 ], "type": "gt" }, @@ -46,11 +46,11 @@ } ], "executionErrorState": "alerting", - "for": "5m", + "for": "60m", "frequency": "5m", "handler": 1, "message": "", - "name": "Synced Header Difference is Over 5 (Westend to Millau)", + "name": "Synced Header Difference is Over 32 (Westend to Millau)", "noDataState": "no_data", "notifications": [] }, @@ -163,7 +163,7 @@ { "evaluator": { "params": [ - 5 + 32 ], "type": "lt" }, @@ -185,7 +185,7 @@ } ], "executionErrorState": "alerting", - "for": "3m", + "for": "60m", "frequency": "5m", "handler": 1, "name": "No New Headers (Westend to Millau)", @@ -237,9 +237,9 @@ "steppedLine": false, "targets": [ { - "expr": "max_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[2m])-min_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[2m])", + "expr": "max_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[10m])-min_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[10m])", "interval": "", - "legendFormat": "Number of new Headers on Westend (Last 2 Mins)", + "legendFormat": "Number of new Headers on Westend (Last 10 Mins)", "refId": "A" } ], @@ -401,7 +401,7 @@ "steppedLine": false, "targets": [ { - "expr": "Westend_to_Millau_Sync_system_average_load", + "expr": "system_average_load{instance='relay-headers-westend-to-millau:9616'}", "interval": "", "legendFormat": "Average system load in last {{over}}", "refId": "A" @@ -500,7 +500,7 @@ "pluginVersion": "7.1.3", "targets": [ { - "expr": "avg_over_time(Westend_to_Millau_Sync_process_cpu_usage_percentage[1m])", + "expr": "avg_over_time(process_cpu_usage_percentage{instance='relay-headers-westend-to-millau:9616'}[1m])", "instant": true, "interval": "", "legendFormat": "1 CPU = 100", @@ -615,7 +615,7 @@ "steppedLine": false, "targets": [ { - "expr": "Westend_to_Millau_Sync_process_memory_usage_bytes / 1024 / 1024", + "expr": "process_memory_usage_bytes{instance='relay-headers-westend-to-millau:9616'} / 1024 / 1024", "interval": "", "legendFormat": "Process memory, MB", "refId": "A" diff --git a/bridges/deployments/bridges/westend-millau/dashboard/prometheus/targets.yml b/deployments/bridges/westend-millau/dashboard/prometheus/targets.yml similarity index 100% rename from bridges/deployments/bridges/westend-millau/dashboard/prometheus/targets.yml rename to deployments/bridges/westend-millau/dashboard/prometheus/targets.yml diff --git a/bridges/deployments/bridges/westend-millau/docker-compose.yml b/deployments/bridges/westend-millau/docker-compose.yml similarity index 100% rename from bridges/deployments/bridges/westend-millau/docker-compose.yml rename to deployments/bridges/westend-millau/docker-compose.yml diff --git a/bridges/deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh b/deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh similarity index 77% rename from bridges/deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh rename to deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh index 4a96ade6ec85..d3b6932983fb 100755 --- a/bridges/deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh +++ b/deployments/bridges/westend-millau/entrypoints/relay-headers-westend-to-millau-entrypoint.sh @@ -1,11 +1,11 @@ #!/bin/bash set -xeu -sleep 20 +sleep 60 curl -v http://millau-node-alice:9933/health curl -v https://westend-rpc.polkadot.io:443/health -/home/user/substrate-relay init-bridge WestendToMillau \ +/home/user/substrate-relay init-bridge westend-to-millau \ --source-host westend-rpc.polkadot.io \ --source-port 443 \ --source-secure \ @@ -15,11 +15,12 @@ curl -v https://westend-rpc.polkadot.io:443/health # Give chain a little bit of time to process initialization transaction sleep 6 -/home/user/substrate-relay relay-headers WestendToMillau \ +/home/user/substrate-relay relay-headers westend-to-millau \ --source-host westend-rpc.polkadot.io \ --source-port 443 \ --source-secure \ --target-host millau-node-alice \ --target-port 9944 \ --target-signer //George \ + --target-transactions-mortality=4\ --prometheus-host=0.0.0.0 diff --git a/bridges/deployments/local-scripts/bridge-entrypoint.sh b/deployments/local-scripts/bridge-entrypoint.sh similarity index 100% rename from bridges/deployments/local-scripts/bridge-entrypoint.sh rename to deployments/local-scripts/bridge-entrypoint.sh diff --git a/bridges/deployments/local-scripts/relay-headers-rococo-to-wococo.sh b/deployments/local-scripts/relay-headers-rococo-to-wococo.sh similarity index 91% rename from bridges/deployments/local-scripts/relay-headers-rococo-to-wococo.sh rename to deployments/local-scripts/relay-headers-rococo-to-wococo.sh index 2736243c5a48..61028e1756b3 100755 --- a/bridges/deployments/local-scripts/relay-headers-rococo-to-wococo.sh +++ b/deployments/local-scripts/relay-headers-rococo-to-wococo.sh @@ -8,14 +8,14 @@ set -xeu -RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge RococoToWococo \ +RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge rococo-to-wococo \ --source-host 127.0.0.1 \ --source-port 9955 \ --target-host 127.0.0.1 \ --target-port 9944 \ --target-signer //Alice -RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers RococoToWococo \ +RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers rococo-to-wococo \ --source-host 127.0.0.1 \ --source-port 9955 \ --target-host 127.0.0.1 \ diff --git a/bridges/deployments/local-scripts/relay-headers-wococo-to-rococo.sh b/deployments/local-scripts/relay-headers-wococo-to-rococo.sh similarity index 91% rename from bridges/deployments/local-scripts/relay-headers-wococo-to-rococo.sh rename to deployments/local-scripts/relay-headers-wococo-to-rococo.sh index b3a7e383d9b9..c57db2086fb4 100755 --- a/bridges/deployments/local-scripts/relay-headers-wococo-to-rococo.sh +++ b/deployments/local-scripts/relay-headers-wococo-to-rococo.sh @@ -8,14 +8,14 @@ set -xeu -RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge WococoToRococo \ +RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge wococo-to-rococo \ --source-host 127.0.0.1 \ --source-port 9944 \ --target-host 127.0.0.1 \ --target-port 9955 \ --target-signer //Alice -RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers WococoToRococo \ +RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers wococo-to-rococo \ --source-host 127.0.0.1 \ --source-port 9944 \ --target-host 127.0.0.1 \ diff --git a/bridges/deployments/local-scripts/relay-messages-millau-to-rialto.sh b/deployments/local-scripts/relay-messages-millau-to-rialto.sh similarity index 88% rename from bridges/deployments/local-scripts/relay-messages-millau-to-rialto.sh rename to deployments/local-scripts/relay-messages-millau-to-rialto.sh index 5b298a149f8a..d420dc56c263 100755 --- a/bridges/deployments/local-scripts/relay-messages-millau-to-rialto.sh +++ b/deployments/local-scripts/relay-messages-millau-to-rialto.sh @@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}" RIALTO_PORT="${RIALTO_PORT:-9944}" RUST_LOG=bridge=debug \ -./target/debug/substrate-relay relay-messages MillauToRialto \ +./target/debug/substrate-relay relay-messages millau-to-rialto \ --lane 00000000 \ --source-host localhost \ --source-port $MILLAU_PORT \ diff --git a/bridges/deployments/local-scripts/relay-messages-rialto-to-millau.sh b/deployments/local-scripts/relay-messages-rialto-to-millau.sh similarity index 88% rename from bridges/deployments/local-scripts/relay-messages-rialto-to-millau.sh rename to deployments/local-scripts/relay-messages-rialto-to-millau.sh index 616697192b96..0cd73c00454d 100755 --- a/bridges/deployments/local-scripts/relay-messages-rialto-to-millau.sh +++ b/deployments/local-scripts/relay-messages-rialto-to-millau.sh @@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}" RIALTO_PORT="${RIALTO_PORT:-9944}" RUST_LOG=bridge=debug \ -./target/debug/substrate-relay relay-messages RialtoToMillau \ +./target/debug/substrate-relay relay-messages rialto-to-millau \ --lane 00000000 \ --source-host localhost \ --source-port $RIALTO_PORT \ diff --git a/bridges/deployments/local-scripts/relay-millau-to-rialto.sh b/deployments/local-scripts/relay-millau-to-rialto.sh similarity index 83% rename from bridges/deployments/local-scripts/relay-millau-to-rialto.sh rename to deployments/local-scripts/relay-millau-to-rialto.sh index 59c75de3899f..8b18cff2b53c 100755 --- a/bridges/deployments/local-scripts/relay-millau-to-rialto.sh +++ b/deployments/local-scripts/relay-millau-to-rialto.sh @@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}" RIALTO_PORT="${RIALTO_PORT:-9944}" RUST_LOG=bridge=debug \ -./target/debug/substrate-relay init-bridge MillauToRialto \ +./target/debug/substrate-relay init-bridge millau-to-rialto \ --source-host localhost \ --source-port $MILLAU_PORT \ --target-host localhost \ @@ -18,7 +18,7 @@ RUST_LOG=bridge=debug \ sleep 5 RUST_LOG=bridge=debug \ -./target/debug/substrate-relay relay-headers MillauToRialto \ +./target/debug/substrate-relay relay-headers millau-to-rialto \ --source-host localhost \ --source-port $MILLAU_PORT \ --target-host localhost \ diff --git a/bridges/deployments/local-scripts/relay-rialto-to-millau.sh b/deployments/local-scripts/relay-rialto-to-millau.sh similarity index 83% rename from bridges/deployments/local-scripts/relay-rialto-to-millau.sh rename to deployments/local-scripts/relay-rialto-to-millau.sh index 6382cdca8237..c66c994f06ab 100755 --- a/bridges/deployments/local-scripts/relay-rialto-to-millau.sh +++ b/deployments/local-scripts/relay-rialto-to-millau.sh @@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}" RIALTO_PORT="${RIALTO_PORT:-9944}" RUST_LOG=bridge=debug \ -./target/debug/substrate-relay init-bridge RialtoToMillau \ +./target/debug/substrate-relay init-bridge rialto-to-millau \ --target-host localhost \ --target-port $MILLAU_PORT \ --source-host localhost \ @@ -18,7 +18,7 @@ RUST_LOG=bridge=debug \ sleep 5 RUST_LOG=bridge=debug \ -./target/debug/substrate-relay relay-headers RialtoToMillau \ +./target/debug/substrate-relay relay-headers rialto-to-millau \ --target-host localhost \ --target-port $MILLAU_PORT \ --source-host localhost \ diff --git a/bridges/deployments/local-scripts/run-millau-node.sh b/deployments/local-scripts/run-millau-node.sh similarity index 100% rename from bridges/deployments/local-scripts/run-millau-node.sh rename to deployments/local-scripts/run-millau-node.sh diff --git a/bridges/deployments/local-scripts/run-rialto-node.sh b/deployments/local-scripts/run-rialto-node.sh similarity index 100% rename from bridges/deployments/local-scripts/run-rialto-node.sh rename to deployments/local-scripts/run-rialto-node.sh diff --git a/bridges/deployments/local-scripts/run-rococo-node.sh b/deployments/local-scripts/run-rococo-node.sh similarity index 100% rename from bridges/deployments/local-scripts/run-rococo-node.sh rename to deployments/local-scripts/run-rococo-node.sh diff --git a/bridges/deployments/local-scripts/run-westend-node.sh b/deployments/local-scripts/run-westend-node.sh similarity index 100% rename from bridges/deployments/local-scripts/run-westend-node.sh rename to deployments/local-scripts/run-westend-node.sh diff --git a/bridges/deployments/local-scripts/run-wococo-node.sh b/deployments/local-scripts/run-wococo-node.sh similarity index 100% rename from bridges/deployments/local-scripts/run-wococo-node.sh rename to deployments/local-scripts/run-wococo-node.sh diff --git a/bridges/deployments/monitoring/GrafanaMatrix.Dockerfile b/deployments/monitoring/GrafanaMatrix.Dockerfile similarity index 100% rename from bridges/deployments/monitoring/GrafanaMatrix.Dockerfile rename to deployments/monitoring/GrafanaMatrix.Dockerfile diff --git a/bridges/deployments/monitoring/disabled.yml b/deployments/monitoring/disabled.yml similarity index 100% rename from bridges/deployments/monitoring/disabled.yml rename to deployments/monitoring/disabled.yml diff --git a/bridges/deployments/monitoring/docker-compose.yml b/deployments/monitoring/docker-compose.yml similarity index 100% rename from bridges/deployments/monitoring/docker-compose.yml rename to deployments/monitoring/docker-compose.yml diff --git a/bridges/deployments/monitoring/grafana-matrix/config.yml b/deployments/monitoring/grafana-matrix/config.yml similarity index 100% rename from bridges/deployments/monitoring/grafana-matrix/config.yml rename to deployments/monitoring/grafana-matrix/config.yml diff --git a/bridges/deployments/monitoring/grafana/provisioning/dashboards/grafana-dashboard.yaml b/deployments/monitoring/grafana/provisioning/dashboards/grafana-dashboard.yaml similarity index 100% rename from bridges/deployments/monitoring/grafana/provisioning/dashboards/grafana-dashboard.yaml rename to deployments/monitoring/grafana/provisioning/dashboards/grafana-dashboard.yaml diff --git a/bridges/deployments/monitoring/grafana/provisioning/datasources/grafana-datasource.yaml b/deployments/monitoring/grafana/provisioning/datasources/grafana-datasource.yaml similarity index 100% rename from bridges/deployments/monitoring/grafana/provisioning/datasources/grafana-datasource.yaml rename to deployments/monitoring/grafana/provisioning/datasources/grafana-datasource.yaml diff --git a/bridges/deployments/monitoring/grafana/provisioning/notifiers/grafana-notifier.yaml b/deployments/monitoring/grafana/provisioning/notifiers/grafana-notifier.yaml similarity index 100% rename from bridges/deployments/monitoring/grafana/provisioning/notifiers/grafana-notifier.yaml rename to deployments/monitoring/grafana/provisioning/notifiers/grafana-notifier.yaml diff --git a/bridges/deployments/monitoring/prometheus/prometheus.yml b/deployments/monitoring/prometheus/prometheus.yml similarity index 100% rename from bridges/deployments/monitoring/prometheus/prometheus.yml rename to deployments/monitoring/prometheus/prometheus.yml diff --git a/deployments/networks/entrypoints/rialto-chainspec-exporter-entrypoint.sh b/deployments/networks/entrypoints/rialto-chainspec-exporter-entrypoint.sh new file mode 100755 index 000000000000..0898978096d3 --- /dev/null +++ b/deployments/networks/entrypoints/rialto-chainspec-exporter-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -xeu + +/home/user/rialto-bridge-node build-spec \ + --chain local \ + --raw \ + --disable-default-bootnode \ + > /rialto-share/rialto-relaychain-spec-raw.json + +# we're using local driver + tmpfs for shared `/rialto-share` volume, which is populated +# by the container running this script. If this script ends, the volume will be detached +# and our chain spec will be lost when it'll go online again. Hence the never-ending +# script which keeps volume online until container is stopped. +tail -f /dev/null diff --git a/deployments/networks/entrypoints/rialto-parachain-registrar-entrypoint.sh b/deployments/networks/entrypoints/rialto-parachain-registrar-entrypoint.sh new file mode 100755 index 000000000000..172502327c9a --- /dev/null +++ b/deployments/networks/entrypoints/rialto-parachain-registrar-entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -xeu + +sleep 60 +curl -v http://rialto-node-alice:9933/health +curl -v http://rialto-parachain-collator-alice:9933/health + +/home/user/substrate-relay register-parachain rialto-parachain \ + --parachain-host rialto-parachain-collator-alice \ + --parachain-port 9944 \ + --relaychain-host rialto-node-alice \ + --relaychain-port 9944 \ + --relaychain-signer //Alice diff --git a/bridges/deployments/networks/millau.yml b/deployments/networks/millau.yml similarity index 98% rename from bridges/deployments/networks/millau.yml rename to deployments/networks/millau.yml index 54790579f1c1..001f3a060947 100644 --- a/bridges/deployments/networks/millau.yml +++ b/deployments/networks/millau.yml @@ -20,7 +20,7 @@ services: - --unsafe-rpc-external - --unsafe-ws-external environment: - RUST_LOG: runtime=trace,rpc=debug,txpool=trace,runtime::bridge=trace + RUST_LOG: runtime=trace,rpc=debug,txpool=trace,runtime::bridge=trace,sc_basic_authorship=trace ports: - "19933:9933" - "19944:9944" diff --git a/deployments/networks/rialto-parachain.yml b/deployments/networks/rialto-parachain.yml new file mode 100644 index 000000000000..b2d2188f1bab --- /dev/null +++ b/deployments/networks/rialto-parachain.yml @@ -0,0 +1,90 @@ +# Compose file for quickly spinning up a local instance of the Rialto Parachain network. +# +# Since Rialto Parachain is unusable without Rialto, this file depends on some Rialto +# network nodes. +version: '3.5' +services: + rialto-parachain-collator-alice: &rialto-parachain-collator + image: paritytech/rialto-parachain-collator + entrypoint: > + /home/user/rialto-parachain-collator + --alice + --collator + --force-authoring + --parachain-id 2000 + --rpc-port 9933 + --ws-port 9944 + --rpc-cors=all + --unsafe-rpc-external + --unsafe-ws-external + -- + --execution wasm + --chain /rialto-share/rialto-relaychain-spec-raw.json + --rpc-port 9934 + --ws-port 9945 + volumes: + - rialto-share:/rialto-share:z + environment: + RUST_LOG: runtime=trace,rpc=trace,txpool=trace,parachain=trace,parity_ws=trace + depends_on: + - rialto-chainspec-exporter + ports: + - "20433:9933" + - "20444:9944" + + rialto-parachain-collator-bob: + <<: *rialto-parachain-collator + entrypoint: > + /home/user/rialto-parachain-collator + --bob + --collator + --force-authoring + --parachain-id 2000 + --rpc-port 9933 + --ws-port 9944 + --rpc-cors=all + --unsafe-rpc-external + --unsafe-ws-external + -- + --execution wasm + --chain /rialto-share/rialto-relaychain-spec-raw.json + --rpc-port 9934 + --ws-port 9945 + ports: + - "20533:9933" + - "20544:9944" + + rialto-parachain-collator-charlie: + <<: *rialto-parachain-collator + entrypoint: > + /home/user/rialto-parachain-collator + --charlie + --collator + --force-authoring + --parachain-id 2000 + --rpc-port 9933 + --ws-port 9944 + --rpc-cors=all + --unsafe-rpc-external + --unsafe-ws-external + -- + --execution wasm + --chain /rialto-share/rialto-relaychain-spec-raw.json + --rpc-port 9934 + --ws-port 9945 + ports: + - "20633:9933" + - "20644:9944" + + rialto-parachain-registrar: + image: paritytech/substrate-relay + entrypoint: /entrypoints/rialto-parachain-registrar-entrypoint.sh + volumes: + - ./networks/entrypoints:/entrypoints + - rialto-share:/rialto-share:z + environment: + RUST_LOG: bridge=trace + depends_on: + - rialto-node-alice + - rialto-parachain-collator-alice + diff --git a/bridges/deployments/networks/rialto.yml b/deployments/networks/rialto.yml similarity index 82% rename from bridges/deployments/networks/rialto.yml rename to deployments/networks/rialto.yml index 3039d7c33bcd..9b902a1ca28a 100644 --- a/bridges/deployments/networks/rialto.yml +++ b/deployments/networks/rialto.yml @@ -85,3 +85,20 @@ services: ports: - "10333:9933" - "10344:9944" + + rialto-chainspec-exporter: + image: paritytech/rialto-bridge-node + entrypoint: /entrypoints/rialto-chainspec-exporter-entrypoint.sh + volumes: + - ./networks/entrypoints:/entrypoints + - rialto-share:/rialto-share:z + +# we're using `/rialto-share` to expose Rialto chain spec to those who are interested. Right +# now it is Rialto Parachain collator nodes. Local + tmpfs combination allows sharing writable +# in-memory volumes, which are dropped when containers are stopped. +volumes: + rialto-share: + driver: local + driver_opts: + type: "tmpfs" + device: "tmpfs" diff --git a/bridges/deployments/reverse-proxy/README.md b/deployments/reverse-proxy/README.md similarity index 100% rename from bridges/deployments/reverse-proxy/README.md rename to deployments/reverse-proxy/README.md diff --git a/bridges/deployments/reverse-proxy/docker-compose.yml b/deployments/reverse-proxy/docker-compose.yml similarity index 100% rename from bridges/deployments/reverse-proxy/docker-compose.yml rename to deployments/reverse-proxy/docker-compose.yml diff --git a/bridges/deployments/run.sh b/deployments/run.sh similarity index 90% rename from bridges/deployments/run.sh rename to deployments/run.sh index a79638352a38..5c1cded1e832 100755 --- a/bridges/deployments/run.sh +++ b/deployments/run.sh @@ -4,7 +4,7 @@ # # To deploy a network you can run this script with the name of the bridge (or multiple bridges) you want to run. # -# `./run.sh poa-rialto rialto-millau` +# `./run.sh westend-millau rialto-millau` # # To update a deployment to use the latest images available from the Docker Hub add the `update` # argument after the bridge name. @@ -30,22 +30,22 @@ function show_help () { echo Error: $1 echo " " echo "Usage:" - echo " ./run.sh poa-rialto [stop|update] Run PoA <> Rialto Networks & Bridge" echo " ./run.sh rialto-millau [stop|update] Run Rialto <> Millau Networks & Bridge" echo " ./run.sh westend-millau [stop|update] Run Westend -> Millau Networks & Bridge" echo " " echo "Options:" echo " --no-monitoring Disable monitoring" + echo " --no-ui Disable UI" echo " " echo "You can start multiple bridges at once by passing several bridge names:" - echo " ./run.sh poa-rialto rialto-millau westend-millau [stop|update]" + echo " ./run.sh rialto-millau westend-millau [stop|update]" exit 1 } -RIALTO=' -f ./networks/rialto.yml' +RIALTO=' -f ./networks/rialto.yml -f ./networks/rialto-parachain.yml' MILLAU=' -f ./networks/millau.yml' -ETH_POA=' -f ./networks/eth-poa.yml' MONITORING=' -f ./monitoring/docker-compose.yml' +UI=' -f ./ui/docker-compose.yml' BRIDGES=() NETWORKS='' @@ -58,13 +58,10 @@ do shift continue ;; - poa-rialto) - BRIDGES+=($i) - NETWORKS+=${RIALTO} - RIALTO='' - NETWORKS+=${ETH_POA} - ETH_POA='' + --no-ui) + UI="" shift + continue ;; rialto-millau) BRIDGES+=($i) @@ -94,7 +91,7 @@ if [ ${#BRIDGES[@]} -eq 0 ]; then show_help "Missing bridge name." fi -COMPOSE_FILES=$NETWORKS$MONITORING +COMPOSE_FILES=$NETWORKS$MONITORING$UI # Compose looks for .env files in the the current directory by default, we don't want that COMPOSE_ARGS="--project-directory ." diff --git a/bridges/deployments/types-millau.json b/deployments/types-millau.json similarity index 93% rename from bridges/deployments/types-millau.json rename to deployments/types-millau.json index a15527f59d79..6d651b4c7cf7 100644 --- a/bridges/deployments/types-millau.json +++ b/deployments/types-millau.json @@ -1,5 +1,7 @@ { "--1": "Millau Types", + "MillauAddress": "AccountId", + "MillauLookupSource": "AccountId", "MillauBalance": "u64", "MillauBlockHash": "H512", "MillauBlockNumber": "u64", @@ -25,6 +27,8 @@ } }, "--2": "Rialto Types", + "RialtoAddress": "MultiAddress", + "RialtoLookupSource": "MultiAddress", "RialtoBalance": "u128", "RialtoBlockHash": "H256", "RialtoBlockNumber": "u32", @@ -50,8 +54,6 @@ } }, "--3": "Common types", - "Address": "AccountId", - "LookupSource": "AccountId", "AccountSigner": "MultiSigner", "SpecVersion": "u32", "RelayerId": "AccountId", @@ -70,7 +72,7 @@ "ChainId": "Id", "LaneId": "Id", "MessageNonce": "u64", - "MessageId": "(Id, u64)", + "BridgeMessageId": "(Id, u64)", "MessageKey": { "lane_id": "LaneId", "nonce:": "MessageNonce" @@ -90,9 +92,9 @@ "dispatch_results": "BitVec" }, "OutboundLaneData": { - "latest_generated_nonce": "MessageNonce", + "oldest_unpruned_nonce": "MessageNonce", "latest_received_nonce": "MessageNonce", - "oldest_unpruned_nonce": "MessageNonce" + "latest_generated_nonce": "MessageNonce" }, "MessageData": { "payload": "MessagePayload", @@ -172,6 +174,8 @@ "commit": "Commit", "votes_ancestries": "Vec" }, + "Address": "MillauAddress", + "LookupSource": "MillauLookupSource", "Fee": "MillauBalance", "Balance": "MillauBalance", "Hash": "MillauBlockHash", diff --git a/bridges/deployments/types-rialto.json b/deployments/types-rialto.json similarity index 92% rename from bridges/deployments/types-rialto.json rename to deployments/types-rialto.json index 5375e43aea45..a574e1178936 100644 --- a/bridges/deployments/types-rialto.json +++ b/deployments/types-rialto.json @@ -1,5 +1,7 @@ { "--1": "Millau Types", + "MillauAddress": "AccountId", + "MillauLookupSource": "AccountId", "MillauBalance": "u64", "MillauBlockHash": "H512", "MillauBlockNumber": "u64", @@ -25,6 +27,8 @@ } }, "--2": "Rialto Types", + "RialtoAddress": "MultiAddress", + "RialtoLookupSource": "MultiAddress", "RialtoBalance": "u128", "RialtoBlockHash": "H256", "RialtoBlockNumber": "u32", @@ -50,8 +54,6 @@ } }, "--3": "Common types", - "Address": "AccountId", - "LookupSource": "AccountId", "AccountSigner": "MultiSigner", "SpecVersion": "u32", "RelayerId": "AccountId", @@ -70,7 +72,7 @@ "ChainId": "Id", "LaneId": "Id", "MessageNonce": "u64", - "MessageId": "(Id, u64)", + "BridgeMessageId": "(Id, u64)", "MessageKey": { "lane_id": "LaneId", "nonce:": "MessageNonce" @@ -90,9 +92,9 @@ "dispatch_results": "BitVec" }, "OutboundLaneData": { - "latest_generated_nonce": "MessageNonce", + "oldest_unpruned_nonce": "MessageNonce", "latest_received_nonce": "MessageNonce", - "oldest_unpruned_nonce": "MessageNonce" + "latest_generated_nonce": "MessageNonce" }, "MessageData": { "payload": "MessagePayload", @@ -172,6 +174,8 @@ "commit": "Commit", "votes_ancestries": "Vec" }, + "Address": "RialtoAddress", + "LookupSource": "RialtoLookupSource", "Fee": "RialtoBalance", "Balance": "RialtoBalance", "BlockHash": "RialtoBlockHash", @@ -183,5 +187,6 @@ "_enum": { "RialtoToMillauConversionRate": "u128" } - } + }, + "ValidationCodeHash": "H256" } diff --git a/bridges/deployments/types-rococo.json b/deployments/types-rococo.json similarity index 91% rename from bridges/deployments/types-rococo.json rename to deployments/types-rococo.json index 6490266809f5..6f4592a8d573 100644 --- a/bridges/deployments/types-rococo.json +++ b/deployments/types-rococo.json @@ -1,17 +1,19 @@ { "--1": "Rococo Types", + "RococoAddress": "AccountId", + "RococoLookupSource": "AccountId", "RococoBalance": "u128", "RococoBlockHash": "H256", "RococoBlockNumber": "u32", "RococoHeader": "Header", "--2": "Wococo Types", + "WococoAddress": "AccountId", + "WococoLookupSource": "AccountId", "WococoBalance": "RococoBalance", "WococoBlockHash": "RococoBlockHash", "WococoBlockNumber": "RococoBlockNumber", "WococoHeader": "RococoHeader", "--3": "Common types", - "Address": "AccountId", - "LookupSource": "AccountId", "AccountSigner": "MultiSigner", "SpecVersion": "u32", "RelayerId": "AccountId", @@ -30,7 +32,7 @@ "ChainId": "Id", "LaneId": "Id", "MessageNonce": "u64", - "MessageId": "(Id, u64)", + "BridgeMessageId": "(Id, u64)", "MessageKey": { "lane_id": "LaneId", "nonce:": "MessageNonce" @@ -50,9 +52,9 @@ "dispatch_results": "BitVec" }, "OutboundLaneData": { - "latest_generated_nonce": "MessageNonce", + "oldest_unpruned_nonce": "MessageNonce", "latest_received_nonce": "MessageNonce", - "oldest_unpruned_nonce": "MessageNonce" + "latest_generated_nonce": "MessageNonce" }, "MessageData": { "payload": "MessagePayload", @@ -132,6 +134,8 @@ "commit": "Commit", "votes_ancestries": "Vec" }, + "Address": "RococoAddress", + "LookupSource": "RococoLookupSource", "Fee": "RococoBalance", "Balance": "RococoBalance", "BlockHash": "RococoBlockHash", diff --git a/bridges/deployments/types-wococo.json b/deployments/types-wococo.json similarity index 91% rename from bridges/deployments/types-wococo.json rename to deployments/types-wococo.json index 1a4084e94cfc..562f08afa9c0 100644 --- a/bridges/deployments/types-wococo.json +++ b/deployments/types-wococo.json @@ -1,17 +1,19 @@ { "--1": "Rococo Types", + "RococoAddress": "AccountId", + "RococoLookupSource": "AccountId", "RococoBalance": "u128", "RococoBlockHash": "H256", "RococoBlockNumber": "u32", "RococoHeader": "Header", "--2": "Wococo Types", + "WococoAddress": "AccountId", + "WococoLookupSource": "AccountId", "WococoBalance": "RococoBalance", "WococoBlockHash": "RococoBlockHash", "WococoBlockNumber": "RococoBlockNumber", "WococoHeader": "RococoHeader", "--3": "Common types", - "Address": "AccountId", - "LookupSource": "AccountId", "AccountSigner": "MultiSigner", "SpecVersion": "u32", "RelayerId": "AccountId", @@ -30,7 +32,7 @@ "ChainId": "Id", "LaneId": "Id", "MessageNonce": "u64", - "MessageId": "(Id, u64)", + "BridgeMessageId": "(Id, u64)", "MessageKey": { "lane_id": "LaneId", "nonce:": "MessageNonce" @@ -50,9 +52,9 @@ "dispatch_results": "BitVec" }, "OutboundLaneData": { - "latest_generated_nonce": "MessageNonce", + "oldest_unpruned_nonce": "MessageNonce", "latest_received_nonce": "MessageNonce", - "oldest_unpruned_nonce": "MessageNonce" + "latest_generated_nonce": "MessageNonce" }, "MessageData": { "payload": "MessagePayload", @@ -132,6 +134,8 @@ "commit": "Commit", "votes_ancestries": "Vec" }, + "Address": "WococoAddress", + "LookupSource": "WococoLookupSource", "Fee": "WococoBalance", "Balance": "WococoBalance", "Hash": "WococoBlockHash", diff --git a/bridges/deployments/types/build.sh b/deployments/types/build.sh similarity index 100% rename from bridges/deployments/types/build.sh rename to deployments/types/build.sh diff --git a/bridges/deployments/types/common.json b/deployments/types/common.json similarity index 94% rename from bridges/deployments/types/common.json rename to deployments/types/common.json index d3395ea687fd..4e129f7132be 100644 --- a/bridges/deployments/types/common.json +++ b/deployments/types/common.json @@ -1,7 +1,5 @@ { "--3": "Common types", - "Address": "AccountId", - "LookupSource": "AccountId", "AccountSigner": "MultiSigner", "SpecVersion": "u32", "RelayerId": "AccountId", @@ -20,7 +18,7 @@ "ChainId": "Id", "LaneId": "Id", "MessageNonce": "u64", - "MessageId": "(Id, u64)", + "BridgeMessageId": "(Id, u64)", "MessageKey": { "lane_id": "LaneId", "nonce:": "MessageNonce" @@ -40,9 +38,10 @@ "dispatch_results": "BitVec" }, "OutboundLaneData": { - "latest_generated_nonce": "MessageNonce", + "oldest_unpruned_nonce": "MessageNonce", "latest_received_nonce": "MessageNonce", - "oldest_unpruned_nonce": "MessageNonce" + "latest_generated_nonce": "MessageNonce" + }, "MessageData": { "payload": "MessagePayload", diff --git a/bridges/deployments/types/millau.json b/deployments/types/millau.json similarity index 83% rename from bridges/deployments/types/millau.json rename to deployments/types/millau.json index f738701263d5..589d5619df45 100644 --- a/bridges/deployments/types/millau.json +++ b/deployments/types/millau.json @@ -1,4 +1,6 @@ { + "Address": "MillauAddress", + "LookupSource": "MillauLookupSource", "Fee": "MillauBalance", "Balance": "MillauBalance", "Hash": "MillauBlockHash", diff --git a/bridges/deployments/types/rialto-millau.json b/deployments/types/rialto-millau.json similarity index 89% rename from bridges/deployments/types/rialto-millau.json rename to deployments/types/rialto-millau.json index 96efb84fc3bb..971cf666d479 100644 --- a/bridges/deployments/types/rialto-millau.json +++ b/deployments/types/rialto-millau.json @@ -1,5 +1,7 @@ { "--1": "Millau Types", + "MillauAddress": "AccountId", + "MillauLookupSource": "AccountId", "MillauBalance": "u64", "MillauBlockHash": "H512", "MillauBlockNumber": "u64", @@ -25,6 +27,8 @@ } }, "--2": "Rialto Types", + "RialtoAddress": "MultiAddress", + "RialtoLookupSource": "MultiAddress", "RialtoBalance": "u128", "RialtoBlockHash": "H256", "RialtoBlockNumber": "u32", diff --git a/bridges/deployments/types/rialto.json b/deployments/types/rialto.json similarity index 75% rename from bridges/deployments/types/rialto.json rename to deployments/types/rialto.json index fe1ba31e8aa3..77c30b7cc2d7 100644 --- a/bridges/deployments/types/rialto.json +++ b/deployments/types/rialto.json @@ -1,4 +1,6 @@ { + "Address": "RialtoAddress", + "LookupSource": "RialtoLookupSource", "Fee": "RialtoBalance", "Balance": "RialtoBalance", "BlockHash": "RialtoBlockHash", @@ -10,5 +12,6 @@ "_enum": { "RialtoToMillauConversionRate": "u128" } - } + }, + "ValidationCodeHash": "H256" } diff --git a/deployments/types/rococo-wococo.json b/deployments/types/rococo-wococo.json new file mode 100644 index 000000000000..e0864c2ffb0b --- /dev/null +++ b/deployments/types/rococo-wococo.json @@ -0,0 +1,16 @@ +{ + "--1": "Rococo Types", + "RococoAddress": "AccountId", + "RococoLookupSource": "AccountId", + "RococoBalance": "u128", + "RococoBlockHash": "H256", + "RococoBlockNumber": "u32", + "RococoHeader": "Header", + "--2": "Wococo Types", + "WococoAddress": "AccountId", + "WococoLookupSource": "AccountId", + "WococoBalance": "RococoBalance", + "WococoBlockHash": "RococoBlockHash", + "WococoBlockNumber": "RococoBlockNumber", + "WococoHeader": "RococoHeader" +} diff --git a/deployments/types/rococo.json b/deployments/types/rococo.json new file mode 100644 index 000000000000..fa1bf2750095 --- /dev/null +++ b/deployments/types/rococo.json @@ -0,0 +1,16 @@ +{ + "Address": "RococoAddress", + "LookupSource": "RococoLookupSource", + "Fee": "RococoBalance", + "Balance": "RococoBalance", + "BlockHash": "RococoBlockHash", + "BlockNumber": "RococoBlockNumber", + "BridgedBlockHash": "WococoBlockHash", + "BridgedBlockNumber": "WococoBlockNumber", + "BridgedHeader": "WococoHeader", + "Parameter": { + "_enum": { + "RococoToWococoConversionRate": "u128" + } + } +} diff --git a/deployments/types/wococo.json b/deployments/types/wococo.json new file mode 100644 index 000000000000..7c7b4ff27688 --- /dev/null +++ b/deployments/types/wococo.json @@ -0,0 +1,17 @@ +{ + "Address": "WococoAddress", + "LookupSource": "WococoLookupSource", + "Fee": "WococoBalance", + "Balance": "WococoBalance", + "Hash": "WococoBlockHash", + "BlockHash": "WococoBlockHash", + "BlockNumber": "WococoBlockNumber", + "BridgedBlockHash": "RococoBlockHash", + "BridgedBlockNumber": "RococoBlockNumber", + "BridgedHeader": "RococoHeader", + "Parameter": { + "_enum": { + "WococoToRococoConversionRate": "u128" + } + } +} diff --git a/deployments/ui/README.md b/deployments/ui/README.md new file mode 100644 index 000000000000..ad946fc699bf --- /dev/null +++ b/deployments/ui/README.md @@ -0,0 +1,23 @@ +# bridges-ui + +This is a Bridges UI docker configuration file. The source of the Bridges UI code +can be found in [the repository](https://github.com/paritytech/parity-bridges-ui). +The CI should create and publish a docker image that is used by this configuration +file, so that the code is always using the latest version. +The UI is configured to point to local Rialto and Millau nodes to retrieve the require +data. + +This image can be used together with `nginx-proxy` to expose the UI externally. See +`VIRTUAL_*` and `LETSENCRYPT_*` environment variables. + +After start the UI is available at `http://localhost:8080` + +## How to? + +In current directory: +```bash +docker-compose up -d +``` + +Then start `rialto` & `millau` networks with the same command (one folder up) or +run the full setup by using `../run.sh` script. diff --git a/deployments/ui/docker-compose.yml b/deployments/ui/docker-compose.yml new file mode 100644 index 000000000000..8b3f8178c36e --- /dev/null +++ b/deployments/ui/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.5' +services: + bridges-ui: + image: paritytech/parity-bridges-ui + environment: + VIRTUAL_HOST: ui.brucke.link + VIRTUAL_PORT: 80 + LETSENCRYPT_HOST: ui.brucke.link + LETSENCRYPT_EMAIL: admin@parity.io + CHAIN_1_SUBSTRATE_PROVIDER: ${UI_CHAIN_1:-ws://localhost:9944} + CHAIN_2_SUBSTRATE_PROVIDER: ${UI_CHAIN_2:-ws://localhost:19944} + ports: + - "8080:80" diff --git a/doc/docker.md b/doc/docker.md deleted file mode 100644 index b5cafd7ef420..000000000000 --- a/doc/docker.md +++ /dev/null @@ -1,135 +0,0 @@ -# Using Docker - -## The easiest way - -The easiest/faster option to run Polkadot in Docker is to use the latest release images. These are small images that use the latest official release of the Polkadot binary, pulled from our package repository. - -**_Following examples are running on westend chain and without SSL. They can be used to quick start and learn how Polkadot needs to be configured. Please find out how to secure your node, if you want to operate it on the internet. Do not expose rpc and ws ports, if they are not correctly configured._** - -Let´s first check the version we have. The first time you run this command, the Polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient: - -```bash -docker run --rm -it parity/polkadot:latest --version -``` - -You can also pass any argument/flag that Polkadot supports: - -```bash -docker run --rm -it parity/polkadot:latest --chain westend --name "PolkaDocker" -``` - -## Examples - -Once you are done experimenting and picking the best node name :) you can start Polkadot as daemon, exposes the Polkadot ports and mount a volume that will keep your blockchain data locally. Make sure that you set the ownership of your local directory to the Polkadot user that is used by the container. Set user id 1000 and group id 1000, by running `chown 1000.1000 /my/local/folder -R` if you use a bind mount. - -To start a Polkadot node on default rpc port 9933 and default p2p port 30333 use the following command. If you want to connect to rpc port 9933, then must add Polkadot startup parameter: `--rpc-external`. - -```bash -docker run -d -p 30333:30333 -p 9933:9933 -v /my/local/folder:/polkadot parity/polkadot:latest --chain westend --rpc-external --rpc-cors all -``` - -Additionally if you want to have custom node name you can add the `--name "YourName"` at the end - -```bash -docker run -d -p 30333:30333 -p 9933:9933 -v /my/local/folder:/polkadot parity/polkadot:latest --chain westend --rpc-external --rpc-cors all --name "PolkaDocker" -``` - -If you also want to expose the webservice port 9944 use the following command: - -```bash -docker run -d -p 30333:30333 -p 9933:9933 -p 9944:9944 -v /my/local/folder:/polkadot parity/polkadot:latest --chain westend --ws-external --rpc-external --rpc-cors all --name "PolkaDocker" -``` - -## Using Docker compose - -You can use the following docker-compose.yml file: - -```bash -version: '2' - -services: - polkadot: - container_name: polkadot - image: parity/polkadot - ports: - - 30333:30333 # p2p port - - 9933:9933 # rpc port - - 9944:9944 # ws port - volumes: - - /my/local/folder:/polkadot - command: [ - "--name", "PolkaDocker", - "--ws-external", - "--rpc-external", - "--rpc-cors", "all" - ] -``` - -With following docker-compose.yml you can set up a node and use polkadot-js-apps as the front end on port 80. After starting the node use a browser and enter your Docker host ip in the url field: __ - -```bash -version: '2' - -services: - polkadot: - container_name: polkadot - image: parity/polkadot - ports: - - 30333:30333 # p2p port - - 9933:9933 # rpc port - - 9944:9944 # ws port - command: [ - "--name", "PolkaDocker", - "--ws-external", - "--rpc-external", - "--rpc-cors", "all" - ] - - polkadotui: - container_name: polkadotui - image: jacogr/polkadot-js-apps - environment: - - WS_URL=ws://[YOUR_DOCKER_HOST_IP]:9944 - ports: - - 80:80 -``` - -## Limiting Resources - -Chain syncing will utilize all available memory and CPU power your server has to offer, which can lead to crashing. - -If running on a low resource VPS, use `--memory` and `--cpus` to limit the resources used. E.g. To allow a maximum of 512MB memory and 50% of 1 CPU, use `--cpus=".5" --memory="512m"`. Read more about limiting a container's resources [here](https://docs.docker.com/config/containers/resource_constraints). - -Start a shell session with the daemon: - -```bash -docker exec -it $(docker ps -q) bash; -``` - -Check the current version: - -```bash -polkadot --version -``` - -## Build your own image - -To get up and running with the smallest footprint on your system, you may use the Polkadot Docker image. -You can build it yourself (it takes a while...) in the shell session of the daemon: - -```bash -cd docker -./build.sh -``` - -## Reporting issues - -If you run into issues with Polkadot when using docker, please run the following command -(replace the tag with the appropriate one if you do not use latest): - -```bash -docker run --rm -it parity/polkadot:latest --version -``` - -This will show you the Polkadot version as well as the git commit ref that was used to build your container. -Just paste that in the issue you create. diff --git a/doc/shell-completion.md b/doc/shell-completion.md deleted file mode 100644 index 965a722308c3..000000000000 --- a/doc/shell-completion.md +++ /dev/null @@ -1,40 +0,0 @@ - -## Shell completion - -The Polkadot cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system. - -Assuming you built a release version using `cargo build --release` and use `bash` run the following: - -```bash -source target/release/completion-scripts/polkadot.bash -``` - -You can find completion scripts for: -- bash -- fish -- zsh -- elvish -- powershell - -To make this change persistent, you can proceed as follow: - -### First install - -```bash -COMPL_DIR=$HOME/.completion -mkdir -p $COMPL_DIR -cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/ -echo "source $COMPL_DIR/polkadot.bash" >> $HOME/.bash_profile -source $HOME/.bash_profile -``` - -### Update - -When you build a new version of Polkadot, the following will ensure you auto-completion script matches the current binary: - -```bash -COMPL_DIR=$HOME/.completion -mkdir -p $COMPL_DIR -cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/ -source $HOME/.bash_profile -``` diff --git a/doc/testing.md b/doc/testing.md deleted file mode 100644 index 985cda9b0aff..000000000000 --- a/doc/testing.md +++ /dev/null @@ -1,267 +0,0 @@ -# Testing - -Automated testing is an essential tool to assure correctness. - -## Scopes - -The testing strategy for polkadot is 4-fold: - -### Unit testing (1) - -Boring, small scale correctness tests of individual functions. - -### Integration tests - -There are two variants of integration tests: - -#### Subsystem tests (2) - -One particular subsystem (subsystem under test) interacts with a -mocked overseer that is made to assert incoming and outgoing messages -of the subsystem under test. -This is largely present today, but has some fragmentation in the evolved -integration test implementation. A proc-macro/macro_rules would allow -for more consistent implementation and structure. - -#### Behavior tests (3) - -Launching small scale networks, with multiple adversarial nodes without any further tooling required. -This should include tests around the thresholds in order to evaluate the error handling once certain -assumed invariants fail. - -For this purpose based on `AllSubsystems` and proc-macro `AllSubsystemsGen`. - -This assumes a simplistic test runtime. - -#### Testing at scale (4) - -Launching many nodes with configurable network speed and node features in a cluster of nodes. -At this scale the [`simnet`][simnet] comes into play which launches a full cluster of nodes. -The scale is handled by spawning a kubernetes cluster and the meta description -is covered by [`gurke`][gurke]. -Asserts are made using grafana rules, based on the existing prometheus metrics. This can -be extended by adding an additional service translating `jaeger` spans into addition -prometheus avoiding additional polkadot source changes. - - -_Behavior tests_ and _testing at scale_ have naturally soft boundary. -The most significant difference is the presence of a real network and -the number of nodes, since a single host often not capable to run -multiple nodes at once. - - ---- - -## Coverage - -Coverage gives a _hint_ of the actually covered source lines by tests and test applications. - -The state of the art is currently [tarpaulin][tarpaulin] which unfortunately yields a -lot of false negatives. Lines that are in fact covered, marked as uncovered due to a mere linebreak in a statement can cause these artifacts. This leads to -lower coverage percentages than there actually is. - -Since late 2020 rust has gained [MIR based coverage tooling]( -https://blog.rust-lang.org/inside-rust/2020/11/12/source-based-code-coverage.html). - -```sh -# setup -rustup component add llvm-tools-preview -cargo install grcov miniserve - -export CARGO_INCREMENTAL=0 -# wasm is not happy with the instrumentation -export SKIP_BUILD_WASM=true -export BUILD_DUMMY_WASM_BINARY=true -# the actully collected coverage data -export LLVM_PROFILE_FILE="llvmcoveragedata-%p-%m.profraw" -# build wasm without instrumentation -export WASM_TARGET_DIRECTORY=/tmp/wasm -cargo +nightly build -# required rust flags -export RUSTFLAGS="-Zinstrument-coverage" -# assure target dir is clean -rm -r target/{debug,tests} -# run tests to get coverage data -cargo +nightly test --all - -# create the *html* report out of all the test binaries -# mostly useful for local inspection -grcov . --binary-path ./target/debug -s . -t html --branch --ignore-not-existing -o ./coverage/ -miniserve -r ./coverage - -# create a *codecov* compatible report -grcov . --binary-path ./target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info -``` - -The test coverage in `lcov` can the be published to . - -```sh -bash <(curl -s https://codecov.io/bash) -f lcov.info -``` - -or just printed as part of the PR using a github action i.e. [jest-lcov-reporter](https://github.com/marketplace/actions/jest-lcov-reporter). - -For full examples on how to use [grcov /w polkadot specifics see the github repo](https://github.com/mozilla/grcov#coverallscodecov-output). - -## Fuzzing - -Fuzzing is an approach to verify correctness against arbitrary or partially structured inputs. - -Currently implemented fuzzing targets: - -* `erasure-coding` -* `bridges/storage-proof` - -The tooling of choice here is `honggfuzz-rs` as it allows _fastest_ coverage according to "some paper" which is a positive feature when run as part of PRs. - -Fuzzing is generally not applicable for data secured by cryptographic hashes or signatures. Either the input has to be specifically crafted, such that the discarded input -percentage stays in an acceptable range. -System level fuzzing is hence simply not feasible due to the amount of state that is required. - -Other candidates to implement fuzzing are: - -* `rpc` -* ... - -## Performance metrics - -There are various ways of performance metrics. - -* timing with `criterion` -* cache hits/misses w/ `iai` harness or `criterion-perf` -* `coz` a performance based compiler - -Most of them are standard tools to aid in the creation of statistical tests regarding change in time of certain unit tests. - -`coz` is meant for runtime. In our case, the system is far too large to yield a sufficient number of measurements in finite time. -An alternative approach could be to record incoming package streams per subsystem and store dumps of them, which in return could be replayed repeatedly at an -accelerated speed, with which enough metrics could be obtained to yield -information on which areas would improve the metrics. -This unfortunately will not yield much information, since most if not all of the subsystem code is linear based on the input to generate one or multiple output messages, it is unlikely to get any useful metrics without mocking a sufficiently large part of the other subsystem which overlaps with [#Integration tests] which is unfortunately not repeatable as of now. -As such the effort gain seems low and this is not pursued at the current time. - -## Writing small scope integration tests with preconfigured workers - -Requirements: - -* spawn nodes with preconfigured behaviors -* allow multiple types of configuration to be specified -* allow extensability via external crates -* ... - ---- - - -## Implementation of different behavior strain nodes. - -### Goals - -The main goals are is to allow creating a test node which -exhibits a certain behavior by utilizing a subset of _wrapped_ or _replaced_ subsystems easily. -The runtime must not matter at all for these tests and should be simplistic. -The execution must be fast, this mostly means to assure a close to zero network latency as -well as shorting the block time and epoch times down to a few `100ms` and a few dozend blocks per epoch. - -### Approach - -#### MVP - -A simple small scale builder pattern would suffice for stage one impl of allowing to -replace individual subsystems. -An alternative would be to harness the existing `AllSubsystems` type -and replace the subsystems as needed. - -#### Full proc-macro impl - -`Overseer` is a common pattern. -It could be extracted as proc macro and generative proc-macro. -This would replace the `AllSubsystems` type as well as implicitly create -the `AllMessages` enum as `AllSubsystemsGen` does today. - -The implementation is yet to be completed, see the [implementation PR](https://github.com/paritytech/polkadot/pull/2962) for details. - -##### Declare an overseer impl - -```rust -struct BehaveMaleficient; - -impl OverseerGen for BehaveMaleficient { - fn generate<'a, Spawner, RuntimeClient>( - &self, - args: OverseerGenArgs<'a, Spawner, RuntimeClient>, - ) -> Result<(Overseer>, OverseerHandler), Error> - where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, - { - let spawner = args.spawner.clone(); - let leaves = args.leaves.clone(); - let runtime_client = args.runtime_client.clone(); - let registry = args.registry.clone(); - let candidate_validation_config = args.candidate_validation_config.clone(); - // modify the subsystem(s) as needed: - let all_subsystems = create_default_subsystems(args)?. - // or spawn an entirely new set - - replace_candidate_validation( - // create the filtered subsystem - FilteredSubsystem::new( - CandidateValidationSubsystem::with_config( - candidate_validation_config, - Metrics::register(registry)?, - ), - // an implementation of - Skippy::default(), - ), - ); - - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) - .map_err(|e| e.into()) - - // A builder pattern will simplify this further - // WIP https://github.com/paritytech/polkadot/pull/2962 - } -} - -fn main() -> eyre::Result<()> { - color_eyre::install()?; - let cli = Cli::from_args(); - assert_matches::assert_matches!(cli.subcommand, None); - polkadot_cli::run_node(cli, BehaveMaleficient)?; - Ok(()) -} -``` - -[`variant-a`](../node/malus/src/variant-a.rs) is a fully working example. - -#### Simnet - -Spawn a kubernetes cluster based on a meta description using [gurke] with the -[simnet] scripts. - -Coordinated attacks of multiple nodes or subsystems must be made possible via -a side-channel, that is out of scope for this document. - -The individual node configurations are done as targets with a particular -builder configuration. - -#### Behavior tests w/o simnet - -Commonly this will require multiple nodes, and most machines are limited to -running two or three nodes concurrently. -Hence, this is not the common case and is just an impl _idea_. - -```rust -behavior_testcase!{ -"TestRuntime" => -"Alice": , -"Bob": , -"Charles": Default, -"David": "Charles", -"Eve": "Bob", -} -``` - -[gurke]: https://github.com/paritytech/gurke -[simnet]: https://github.com/paritytech/simnet_scripts diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index ce094338781f..000000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM paritytech/ci-linux:production as builder -LABEL description="This is the build stage for Polkadot. Here we create the binary." - -ARG PROFILE=release -WORKDIR /polkadot - -COPY . /polkadot - -RUN cargo build --$PROFILE - -# ===== SECOND STAGE ====== - -FROM debian:buster-slim -LABEL description="This is the 2nd stage: a very small image where we copy the Polkadot binary." -ARG PROFILE=release -COPY --from=builder /polkadot/target/$PROFILE/polkadot /usr/local/bin - -RUN useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ - mkdir -p /polkadot/.local/share && \ - mkdir /data && \ - chown -R polkadot:polkadot /data && \ - ln -s /data /polkadot/.local/share/polkadot && \ - rm -rf /usr/bin /usr/sbin - -USER polkadot -EXPOSE 30333 9933 9944 -VOLUME ["/data"] - -CMD ["/usr/local/bin/polkadot"] diff --git a/docker/build.sh b/docker/build.sh deleted file mode 100755 index 6456383fcdea..000000000000 --- a/docker/build.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash -set -e - -pushd . - -# The following line ensure we run from the project root -PROJECT_ROOT=`git rev-parse --show-toplevel` -cd $PROJECT_ROOT - -# Find the current version from Cargo.toml -VERSION=`grep "^version" ./Cargo.toml | egrep -o "([0-9\.]+)"` -GITUSER=parity -GITREPO=polkadot - -# Build the image -echo "Building ${GITUSER}/${GITREPO}:latest docker image, hang on!" -time docker build -f ./docker/Dockerfile --build-arg RUSTC_WRAPPER= --build-arg PROFILE=release -t ${GITUSER}/${GITREPO}:latest . - -# Show the list of available images for this repo -echo "Image is ready" -docker images | grep ${GITREPO} - -echo -e "\nIf you just built version ${VERSION}, you may want to update your tag:" -echo " $ docker tag ${GITUSER}/${GITREPO}:$VERSION ${GITUSER}/${GITREPO}:${VERSION}" - -popd diff --git a/docker/docker-compose-local.yml b/docker/docker-compose-local.yml deleted file mode 100644 index 079d73825227..000000000000 --- a/docker/docker-compose-local.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: '3' -services: - node_alice: - build: - context: . - ports: - - "30333:30333" - - "9933:9933" - - "9944:9944" - image: chevdor/polkadot:latest - volumes: - - "polkadot-data-alice:/data" - command: polkadot --chain=polkadot-local --alice -d /data --node-key 0000000000000000000000000000000000000000000000000000000000000001 - networks: - testing_net: - ipv4_address: 172.28.1.1 - - node_bob: - build: - context: . - ports: - - "30344:30344" - - "9935:9935" - - "9945:9945" - image: chevdor/polkadot:latest - volumes: - - "polkadot-data-bob:/data" - links: - - "node_alice:alice" - command: polkadot --chain=polkadot-local --bob -d /data --port 30344 --rpc-port 9935 --ws-port 9945 --bootnodes '/ip4/172.28.1.1/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR' - networks: - testing_net: - ipv4_address: 172.28.1.2 - -volumes: - polkadot-data-alice: - polkadot-data-bob: - -networks: - testing_net: - ipam: - driver: default - config: - - subnet: 172.28.0.0/16 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index b76d41da1d03..000000000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3' -services: - polkadot: - build: - context: . - ports: - - "127.0.0.1:30333:30333/tcp" - - "127.0.0.1:9933:9933/tcp" - image: chevdor/polkadot:latest - volumes: - - "polkadot-data:/data" - command: polkadot - -volumes: - polkadot-data: diff --git a/bridges/docs/high-level-overview.md b/docs/high-level-overview.md similarity index 84% rename from bridges/docs/high-level-overview.md rename to docs/high-level-overview.md index 9ca3ca42ff5e..2642c20c86ab 100644 --- a/bridges/docs/high-level-overview.md +++ b/docs/high-level-overview.md @@ -48,33 +48,21 @@ High level sequence charts of the process can be found in [a separate document]( ### Substrate (GRANDPA) Header Sync -The header sync pallet (`pallet-substrate-bridge`) is an on-chain light client for chains which use -GRANDPA finality. It is part of the target chain's runtime, and accepts headers from the source -chain. Its main goals are to accept valid headers, track GRANDPA finality set changes, and verify -GRANDPA finality proofs (a.k.a justifications). +The header sync pallet (`pallet-bridge-grandpa`) is an on-chain light client for chains which use +GRANDPA finality. It is part of the target chain's runtime, and accepts finality proofs from the source +chain. Verify GRANDPA finality proofs (a.k.a justifications) and track GRANDPA finality set changes. The pallet does not care about what block production mechanism is used for the source chain -(e.g Aura or BABE) as long as it uses the GRANDPA finality gadget. Due to this it is possible for -the pallet to import (but not necessarily finalize) headers which are _not_ valid according to the -source chain's block production mechanism. +(e.g Aura or BABE) as long as it uses the GRANDPA finality gadget. In fact the pallet does not +necessarily store all produced headers, we only import headers with valid GRANDPA justifications. -The pallet has support for tracking forks and uses the longest chain rule to determine what the -canonical chain is. The pallet allows headers to be imported on a different fork from the canonical -one as long as the headers being imported don't conflict with already finalized headers (for -example, it will not allow importing a header at a lower height than the best finalized header). - -When tracking authority set changes, the pallet - unlike the full GRANDPA protocol - does not -support tracking multiple authority set changes across forks. Each fork can have at most one pending -authority set change. This is done to prevent DoS attacks if GRANDPA on the source chain were to -stall for a long time (the pallet would have to do a lot of expensive ancestry checks to catch up). - -Referer to the [pallet documentation](../modules/substrate/src/lib.rs) for more details. +Referer to the [pallet documentation](../modules/grandpa/src/lib.rs) for more details. #### Header Relayer strategy There is currently no reward strategy for the relayers at all. They also are not required to be staked or registered on-chain, unlike in other bridge designs. We consider the header sync to be -an essential part of the bridge and the incentivisation should be happening on the higher layers. +an essential part of the bridge and the incentivization should be happening on the higher layers. At the moment, signed transactions are the only way to submit headers to the header sync pallet. However, in the future we would like to use unsigned transactions for headers delivery. This will @@ -110,7 +98,7 @@ Users of the pallet add their messages to an "outbound lane" on the source chain finalized message relayers are responsible for reading the current queue of messages and submitting some (or all) of them to the "inbound lane" of the target chain. Each message has a `nonce` associated with it, which serves as the ordering of messages. The inbound lane stores the last -delivered nonce to prevent replaying messages. To succesfuly deliver the message to the inbound lane +delivered nonce to prevent replaying messages. To successfully deliver the message to the inbound lane on target chain the relayer has to present present a storage proof which shows that the message was part of the outbound lane on the source chain. diff --git a/bridges/docs/high-level.html b/docs/high-level.html similarity index 100% rename from bridges/docs/high-level.html rename to docs/high-level.html diff --git a/bridges/docs/plan.md b/docs/plan.md similarity index 100% rename from bridges/docs/plan.md rename to docs/plan.md diff --git a/bridges/docs/scenario1.html b/docs/scenario1.html similarity index 100% rename from bridges/docs/scenario1.html rename to docs/scenario1.html diff --git a/bridges/docs/send-message.md b/docs/send-message.md similarity index 89% rename from bridges/docs/send-message.md rename to docs/send-message.md index 91d3bfd976b5..6984c56d67f2 100644 --- a/bridges/docs/send-message.md +++ b/docs/send-message.md @@ -46,22 +46,22 @@ FLAGS: SUBCOMMANDS: help Prints this message or the help of the given subcommand(s) - MillauToRialto Submit message to given Millau -> Rialto lane - RialtoToMillau Submit message to given Rialto -> Millau lane + millau-to-rialto Submit message to given Millau -> Rialto lane + rialto-to-millau Submit message to given Rialto -> Millau lane ``` Messages are send from a source chain to a target chain using a so called `message lane`. Message lanes handle both, message transport and message dispatch. There is one command for submitting a message to each of the two -available bridges, namely `MillauToRialto` and `RialtoToMillau`. +available bridges, namely `millau-to-rialto` and `rialto-to-millau`. Submitting a message requires a number of arguments to be provided. Those arguments are essentially the same -for both submit message commands, hence only the output for `MillauToRialto` is shown below. +for both submit message commands, hence only the output for `millau-to-rialto` is shown below. ``` Submit message to given Millau -> Rialto lane USAGE: - substrate-relay send-message MillauToRialto [OPTIONS] --lane --source-host --source-port --source-signer --origin --target-signer + substrate-relay send-message millau-to-rialto [OPTIONS] --lane --source-host --source-port --source-signer --origin --target-signer FLAGS: -h, --help Prints help information @@ -104,7 +104,7 @@ Usage of the arguments is best explained with an example. Below you can see, how would look like: ``` -substrate-relay send-message MillauToRialto \ +substrate-relay send-message millau-to-rialto \ --source-host=127.0.0.1 \ --source-port=10946 \ --source-signer=//Dave \ diff --git a/bridges/docs/testing-scenarios.md b/docs/testing-scenarios.md similarity index 100% rename from bridges/docs/testing-scenarios.md rename to docs/testing-scenarios.md diff --git a/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml deleted file mode 100644 index a4d9523fa6fe..000000000000 --- a/erasure-coding/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "polkadot-erasure-coding" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -polkadot-primitives = { path = "../primitives" } -polkadot-node-primitives = { package = "polkadot-node-primitives", path = "../node/primitives" } -novelpoly = { package = "reed-solomon-novelpoly", version = "1.0.0" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["std", "derive"] } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -trie = { package = "sp-trie", git = "https://github.com/paritytech/substrate", branch = "master" } -thiserror = "1.0.23" diff --git a/erasure-coding/fuzzer/.gitignore b/erasure-coding/fuzzer/.gitignore deleted file mode 100644 index 75e32f898f47..000000000000 --- a/erasure-coding/fuzzer/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -hfuzz_target/ -hfuzz_workspace/ -Cargo.lock diff --git a/erasure-coding/fuzzer/Cargo.toml b/erasure-coding/fuzzer/Cargo.toml deleted file mode 100644 index d8ad408536c3..000000000000 --- a/erasure-coding/fuzzer/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "erasure_coding_fuzzer" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -polkadot-erasure-coding = { path = ".." } -honggfuzz = "0.5" -primitives = { package = "polkadot-node-primitives", path = "../../node/primitives/" } - -[[bin]] -name = "reconstruct" -path = "src/reconstruct.rs" - -[[bin]] -name = "round_trip" -path = "src/round_trip.rs" - -[workspace] diff --git a/erasure-coding/fuzzer/src/reconstruct.rs b/erasure-coding/fuzzer/src/reconstruct.rs deleted file mode 100644 index ccc623b1caf1..000000000000 --- a/erasure-coding/fuzzer/src/reconstruct.rs +++ /dev/null @@ -1,16 +0,0 @@ -use polkadot_erasure_coding::*; -use primitives::AvailableData; -use honggfuzz::fuzz; - -fn main() { - loop { - fuzz!(|data: (usize, Vec<(Vec, usize)>)| { - let (num_validators, chunk_input) = data; - let reconstructed: Result = reconstruct_v1( - num_validators, - chunk_input.iter().map(|t| (&*t.0, t.1)).collect::>() - ); - println!("reconstructed {:?}", reconstructed); - }); - } -} diff --git a/erasure-coding/fuzzer/src/round_trip.rs b/erasure-coding/fuzzer/src/round_trip.rs deleted file mode 100644 index 754468f992d6..000000000000 --- a/erasure-coding/fuzzer/src/round_trip.rs +++ /dev/null @@ -1,40 +0,0 @@ -use polkadot_erasure_coding::*; -use primitives::{AvailableData, BlockData, PoV}; -use std::sync::Arc; -use honggfuzz::fuzz; - - -fn main() { - loop { - fuzz!(|data: &[u8]| { - let pov_block = PoV { - block_data: BlockData(data.iter().cloned().collect()), - }; - - let available_data = AvailableData { - pov: Arc::new(pov_block), - validation_data: Default::default(), - }; - let chunks = obtain_chunks_v1( - 10, - &available_data, - ).unwrap(); - - assert_eq!(chunks.len(), 10); - - // any 4 chunks should work. - let reconstructed: AvailableData = reconstruct_v1( - 10, - [ - (&*chunks[1], 1), - (&*chunks[4], 4), - (&*chunks[6], 6), - (&*chunks[9], 9), - ].iter().cloned(), - ).unwrap(); - - assert_eq!(reconstructed, available_data); - println!("{:?}", reconstructed); - }); - } -} diff --git a/erasure-coding/src/lib.rs b/erasure-coding/src/lib.rs deleted file mode 100644 index 2cae7160443d..000000000000 --- a/erasure-coding/src/lib.rs +++ /dev/null @@ -1,447 +0,0 @@ -// Copyright 2018-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! As part of Polkadot's availability system, certain pieces of data -//! for each block are required to be kept available. -//! -//! The way we accomplish this is by erasure coding the data into n pieces -//! and constructing a merkle root of the data. -//! -//! Each of n validators stores their piece of data. We assume n=3f+k, 0 < k ≤ 3. -//! f is the maximum number of faulty validators in the system. -//! The data is coded so any f+1 chunks can be used to reconstruct the full data. - -use parity_scale_codec::{Encode, Decode}; -use polkadot_primitives::v0::{self, Hash as H256, BlakeTwo256, HashT}; -use polkadot_node_primitives::AvailableData; -use sp_core::Blake2Hasher; -use trie::{EMPTY_PREFIX, MemoryDB, Trie, TrieMut, trie_types::{TrieDBMut, TrieDB}}; -use thiserror::Error; - -use novelpoly::WrappedShard; -use novelpoly::CodeParams; - -// we are limited to the field order of GF(2^16), which is 65536 -const MAX_VALIDATORS: usize = novelpoly::f2e16::FIELD_SIZE; - -/// Errors in erasure coding. -#[derive(Debug, Clone, PartialEq, Error)] -pub enum Error { - /// Returned when there are too many validators. - #[error("There are too many validators")] - TooManyValidators, - /// Cannot encode something for zero or one validator - #[error("Expected at least 2 validators")] - NotEnoughValidators, - /// Cannot reconstruct: wrong number of validators. - #[error("Validator count mismatches between encoding and decoding")] - WrongValidatorCount, - /// Not enough chunks present. - #[error("Not enough chunks to reconstruct message")] - NotEnoughChunks, - /// Too many chunks present. - #[error("Too many chunks present")] - TooManyChunks, - /// Chunks not of uniform length or the chunks are empty. - #[error("Chunks are not unform, mismatch in length or are zero sized")] - NonUniformChunks, - /// An uneven byte-length of a shard is not valid for GF(2^16) encoding. - #[error("Uneven length is not valid for field GF(2^16)")] - UnevenLength, - /// Chunk index out of bounds. - #[error("Chunk is out of bounds: {chunk_index} not included in 0..{n_validators}")] - ChunkIndexOutOfBounds{ chunk_index: usize, n_validators: usize }, - /// Bad payload in reconstructed bytes. - #[error("Reconstructed payload invalid")] - BadPayload, - /// Invalid branch proof. - #[error("Invalid branch proof")] - InvalidBranchProof, - /// Branch out of bounds. - #[error("Branch is out of bounds")] - BranchOutOfBounds, - /// Unknown error - #[error("An unknown error has appeared when reconstructing erasure code chunks")] - UnknownReconstruction, - /// Unknown error - #[error("An unknown error has appeared when deriving code parameters from validator count")] - UnknownCodeParam, -} - -/// Obtain a threshold of chunks that should be enough to recover the data. -pub const fn recovery_threshold(n_validators: usize) -> Result { - if n_validators > MAX_VALIDATORS { return Err(Error::TooManyValidators) } - if n_validators <= 1 { return Err(Error::NotEnoughValidators) } - - let needed = n_validators.saturating_sub(1) / 3; - Ok(needed + 1) -} - -fn code_params(n_validators: usize) -> Result { - // we need to be able to reconstruct from 1/3 - eps - - let n_wanted = n_validators; - let k_wanted = recovery_threshold(n_wanted)?; - - if n_wanted > MAX_VALIDATORS as usize { - return Err(Error::TooManyValidators); - } - - CodeParams::derive_parameters(n_wanted, k_wanted) - .map_err(|e| { - match e { - novelpoly::Error::WantedShardCountTooHigh(_) => Error::TooManyValidators, - novelpoly::Error::WantedShardCountTooLow(_) => Error::NotEnoughValidators, - _ => Error::UnknownCodeParam, - } - }) -} - -/// Obtain erasure-coded chunks for v0 `AvailableData`, one for each validator. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -pub fn obtain_chunks_v0(n_validators: usize, data: &v0::AvailableData) - -> Result>, Error> -{ - obtain_chunks(n_validators, data) -} - -/// Obtain erasure-coded chunks for v1 `AvailableData`, one for each validator. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -pub fn obtain_chunks_v1(n_validators: usize, data: &AvailableData) - -> Result>, Error> -{ - obtain_chunks(n_validators, data) -} - -/// Obtain erasure-coded chunks, one for each validator. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -fn obtain_chunks(n_validators: usize, data: &T) - -> Result>, Error> -{ - let params = code_params(n_validators)?; - let encoded = data.encode(); - - if encoded.is_empty() { - return Err(Error::BadPayload); - } - - let shards = params.make_encoder().encode::(&encoded[..]) - .expect("Payload non-empty, shard sizes are uniform, and validator numbers checked; qed"); - - Ok(shards.into_iter().map(|w: WrappedShard| w.into_inner()).collect()) -} - -/// Reconstruct the v0 available data from a set of chunks. -/// -/// Provide an iterator containing chunk data and the corresponding index. -/// The indices of the present chunks must be indicated. If too few chunks -/// are provided, recovery is not possible. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -pub fn reconstruct_v0<'a, I: 'a>(n_validators: usize, chunks: I) - -> Result - where I: IntoIterator -{ - reconstruct(n_validators, chunks) -} - -/// Reconstruct the v1 available data from a set of chunks. -/// -/// Provide an iterator containing chunk data and the corresponding index. -/// The indices of the present chunks must be indicated. If too few chunks -/// are provided, recovery is not possible. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -pub fn reconstruct_v1<'a, I: 'a>(n_validators: usize, chunks: I) - -> Result - where I: IntoIterator -{ - reconstruct(n_validators, chunks) -} - -/// Reconstruct decodable data from a set of chunks. -/// -/// Provide an iterator containing chunk data and the corresponding index. -/// The indices of the present chunks must be indicated. If too few chunks -/// are provided, recovery is not possible. -/// -/// Works only up to 65536 validators, and `n_validators` must be non-zero. -fn reconstruct<'a, I: 'a, T: Decode>(n_validators: usize, chunks: I) -> Result - where I: IntoIterator -{ - let params = code_params(n_validators)?; - let mut received_shards: Vec> = vec![None; n_validators]; - let mut shard_len = None; - for (chunk_data, chunk_idx) in chunks.into_iter().take(n_validators) { - if chunk_idx >= n_validators { - return Err(Error::ChunkIndexOutOfBounds{ chunk_index: chunk_idx, n_validators }); - } - - let shard_len = shard_len.get_or_insert_with(|| chunk_data.len()); - - if *shard_len % 2 != 0 { - return Err(Error::UnevenLength); - } - - if *shard_len != chunk_data.len() || *shard_len == 0 { - return Err(Error::NonUniformChunks); - } - - received_shards[chunk_idx] = Some(WrappedShard::new(chunk_data.to_vec())); - } - - - let res = params.make_encoder().reconstruct(received_shards); - - let payload_bytes= match res { - Err(e) => match e { - novelpoly::Error::NeedMoreShards { .. } => return Err(Error::NotEnoughChunks), - novelpoly::Error::ParamterMustBePowerOf2 { .. } => return Err(Error::UnevenLength), - novelpoly::Error::WantedShardCountTooHigh(_) => return Err(Error::TooManyValidators), - novelpoly::Error::WantedShardCountTooLow(_) => return Err(Error::NotEnoughValidators), - novelpoly::Error::PayloadSizeIsZero { .. } => return Err(Error::BadPayload), - novelpoly::Error::InconsistentShardLengths { .. } => return Err(Error::NonUniformChunks), - _ => return Err(Error::UnknownReconstruction), - } - Ok(payload_bytes) => payload_bytes, - }; - - Decode::decode(&mut &payload_bytes[..]).or_else(|_e| Err(Error::BadPayload)) -} - -/// An iterator that yields merkle branches and chunk data for all chunks to -/// be sent to other validators. -pub struct Branches<'a, I> { - trie_storage: MemoryDB, - root: H256, - chunks: &'a [I], - current_pos: usize, -} - -impl<'a, I: AsRef<[u8]>> Branches<'a, I> { - /// Get the trie root. - pub fn root(&self) -> H256 { self.root.clone() } -} - -impl<'a, I: AsRef<[u8]>> Iterator for Branches<'a, I> { - type Item = (Vec>, &'a [u8]); - - fn next(&mut self) -> Option { - use trie::Recorder; - - let trie = TrieDB::new(&self.trie_storage, &self.root) - .expect("`Branches` is only created with a valid memorydb that contains all nodes for the trie with given root; qed"); - - let mut recorder = Recorder::new(); - let res = (self.current_pos as u32).using_encoded(|s| - trie.get_with(s, &mut recorder) - ); - - match res.expect("all nodes in trie present; qed") { - Some(_) => { - let nodes = recorder.drain().into_iter().map(|r| r.data).collect(); - let chunk = self.chunks.get(self.current_pos) - .expect("there is a one-to-one mapping of chunks to valid merkle branches; qed"); - - self.current_pos += 1; - Some((nodes, chunk.as_ref())) - } - None => None, - } - } -} - -/// Construct a trie from chunks of an erasure-coded value. This returns the root hash and an -/// iterator of merkle proofs, one for each validator. -pub fn branches<'a, I: 'a>(chunks: &'a [I]) -> Branches<'a, I> - where I: AsRef<[u8]>, -{ - let mut trie_storage: MemoryDB = MemoryDB::default(); - let mut root = H256::default(); - - // construct trie mapping each chunk's index to its hash. - { - let mut trie = TrieDBMut::new(&mut trie_storage, &mut root); - for (i, chunk) in chunks.as_ref().iter().enumerate() { - (i as u32).using_encoded(|encoded_index| { - let chunk_hash = BlakeTwo256::hash(chunk.as_ref()); - trie.insert(encoded_index, chunk_hash.as_ref()) - .expect("a fresh trie stored in memory cannot have errors loading nodes; qed"); - }) - } - } - - Branches { - trie_storage, - root, - chunks, - current_pos: 0, - } -} - -/// Verify a merkle branch, yielding the chunk hash meant to be present at that -/// index. -pub fn branch_hash(root: &H256, branch_nodes: &[Vec], index: usize) -> Result { - let mut trie_storage: MemoryDB = MemoryDB::default(); - for node in branch_nodes.iter() { - (&mut trie_storage as &mut trie::HashDB<_>).insert(EMPTY_PREFIX, node.as_slice()); - } - - let trie = TrieDB::new(&trie_storage, &root).map_err(|_| Error::InvalidBranchProof)?; - let res = (index as u32).using_encoded(|key| - trie.get_with(key, |raw_hash: &[u8]| H256::decode(&mut &raw_hash[..])) - ); - - match res { - Ok(Some(Ok(hash))) => Ok(hash), - Ok(Some(Err(_))) => Err(Error::InvalidBranchProof), // hash failed to decode - Ok(None) => Err(Error::BranchOutOfBounds), - Err(_) => Err(Error::InvalidBranchProof), - } -} - -// input for `codec` which draws data from the data shards -struct ShardInput<'a, I> { - remaining_len: usize, - shards: I, - cur_shard: Option<(&'a [u8], usize)>, -} - -impl<'a, I: Iterator> parity_scale_codec::Input for ShardInput<'a, I> { - fn remaining_len(&mut self) -> Result, parity_scale_codec::Error> { - Ok(Some(self.remaining_len)) - } - - fn read(&mut self, into: &mut [u8]) -> Result<(), parity_scale_codec::Error> { - let mut read_bytes = 0; - - loop { - if read_bytes == into.len() { break } - - let cur_shard = self.cur_shard.take().or_else(|| self.shards.next().map(|s| (s, 0))); - let (active_shard, mut in_shard) = match cur_shard { - Some((s, i)) => (s, i), - None => break, - }; - - if in_shard >= active_shard.len() { - continue; - } - - let remaining_len_out = into.len() - read_bytes; - let remaining_len_shard = active_shard.len() - in_shard; - - let write_len = std::cmp::min(remaining_len_out, remaining_len_shard); - into[read_bytes..][..write_len] - .copy_from_slice(&active_shard[in_shard..][..write_len]); - - in_shard += write_len; - read_bytes += write_len; - self.cur_shard = Some((active_shard, in_shard)) - } - - self.remaining_len -= read_bytes; - if read_bytes == into.len() { - Ok(()) - } else { - Err("slice provided too big for input".into()) - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use polkadot_primitives::v0::{AvailableData, BlockData, PoVBlock}; - - #[test] - fn field_order_is_right_size() { - assert_eq!(MAX_VALIDATORS, 65536); - } - - #[test] - fn round_trip_works() { - let pov_block = PoVBlock { - block_data: BlockData((0..255).collect()), - }; - - let available_data = AvailableData { - pov_block, - omitted_validation: Default::default(), - }; - let chunks = obtain_chunks( - 10, - &available_data, - ).unwrap(); - - assert_eq!(chunks.len(), 10); - - // any 4 chunks should work. - let reconstructed: AvailableData = reconstruct( - 10, - [ - (&*chunks[1], 1), - (&*chunks[4], 4), - (&*chunks[6], 6), - (&*chunks[9], 9), - ].iter().cloned(), - ).unwrap(); - - assert_eq!(reconstructed, available_data); - } - - #[test] - fn reconstruct_does_not_panic_on_low_validator_count() { - let reconstructed = reconstruct_v1( - 1, - [].iter().cloned(), - ); - assert_eq!(reconstructed, Err(Error::NotEnoughValidators)); - } - - #[test] - fn construct_valid_branches() { - let pov_block = PoVBlock { - block_data: BlockData(vec![2; 256]), - }; - - let available_data = AvailableData { - pov_block, - omitted_validation: Default::default(), - }; - - let chunks = obtain_chunks( - 10, - &available_data, - ).unwrap(); - - assert_eq!(chunks.len(), 10); - - let branches = branches(chunks.as_ref()); - let root = branches.root(); - - let proofs: Vec<_> = branches.map(|(proof, _)| proof).collect(); - - assert_eq!(proofs.len(), 10); - - for (i, proof) in proofs.into_iter().enumerate() { - assert_eq!(branch_hash(&root, &proof, i).unwrap(), BlakeTwo256::hash(&chunks[i])); - } - } -} diff --git a/file_header.txt b/file_header.txt deleted file mode 100644 index f3a8b8eb3041..000000000000 --- a/file_header.txt +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . \ No newline at end of file diff --git a/bridges/fuzz/storage-proof/Cargo.lock b/fuzz/storage-proof/Cargo.lock similarity index 100% rename from bridges/fuzz/storage-proof/Cargo.lock rename to fuzz/storage-proof/Cargo.lock diff --git a/fuzz/storage-proof/Cargo.toml b/fuzz/storage-proof/Cargo.toml new file mode 100644 index 000000000000..c4da57b255c8 --- /dev/null +++ b/fuzz/storage-proof/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "storage-proof-fuzzer" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +honggfuzz = "0.5.54" +log = "0.4.0" +env_logger = "0.8.3" + +# Bridge Dependencies + +bp-runtime = { path = "../../primitives/runtime" } + +# Substrate Dependencies + +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/fuzz/storage-proof/README.md b/fuzz/storage-proof/README.md new file mode 100644 index 000000000000..1eeec7562a96 --- /dev/null +++ b/fuzz/storage-proof/README.md @@ -0,0 +1,34 @@ +# Storage Proof Fuzzer + +## How to run? + +Install dependencies: +``` +$ sudo apt install build-essential binutils-dev libunwind-dev +``` +or on nix: +``` +$ nix-shell -p honggfuzz +``` + +Install `cargo hfuzz` plugin: +``` +$ cargo install honggfuzz +``` + +Run: +``` +$ cargo hfuzz run storage-proof-fuzzer +``` + +Use `HFUZZ_RUN_ARGS` to customize execution: +``` +# 1 second of timeout +# use 12 fuzzing thread +# be verbose +# stop after 1000000 fuzzing iteration +# exit upon crash +HFUZZ_RUN_ARGS="-t 1 -n 12 -v -N 1000000 --exit_upon_crash" cargo hfuzz run example +``` + +More details in the [official documentation](https://docs.rs/honggfuzz/0.5.52/honggfuzz/#about-honggfuzz). diff --git a/fuzz/storage-proof/src/main.rs b/fuzz/storage-proof/src/main.rs new file mode 100644 index 000000000000..42636a65c3dc --- /dev/null +++ b/fuzz/storage-proof/src/main.rs @@ -0,0 +1,80 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Storage Proof Checker fuzzer. + +#![warn(missing_docs)] + +use honggfuzz::fuzz; +// Logic for checking Substrate storage proofs. + +use sp_core::{Blake2Hasher, H256}; +use sp_state_machine::{backend::Backend, prove_read, InMemoryBackend}; +use sp_std::vec::Vec; +use sp_trie::StorageProof; +use std::collections::HashMap; + +fn craft_known_storage_proof(input_vec: Vec<(Vec, Vec)>) -> (H256, StorageProof) { + let storage_proof_vec = + vec![(None, input_vec.iter().map(|x| (x.0.clone(), Some(x.1.clone()))).collect())]; + log::info!("Storage proof vec {:?}", storage_proof_vec); + let backend = >::from(storage_proof_vec); + let root = backend.storage_root(std::iter::empty()).0; + let vector_element_proof = StorageProof::new( + prove_read(backend, input_vec.iter().map(|x| x.0.as_slice())) + .unwrap() + .iter_nodes() + .collect(), + ); + (root, vector_element_proof) +} + +fn transform_into_unique(input_vec: Vec<(Vec, Vec)>) -> Vec<(Vec, Vec)> { + let mut output_hashmap = HashMap::new(); + let mut output_vec = Vec::new(); + for key_value_pair in input_vec { + output_hashmap.insert(key_value_pair.0, key_value_pair.1); //Only 1 value per key + } + for (key, val) in output_hashmap.iter() { + output_vec.push((key.clone(), val.clone())); + } + output_vec +} + +fn run_fuzzer() { + fuzz!(|input_vec: Vec<(Vec, Vec)>| { + if input_vec.is_empty() { + return + } + let unique_input_vec = transform_into_unique(input_vec); + let (root, craft_known_storage_proof) = craft_known_storage_proof(unique_input_vec.clone()); + let checker = + >::new(root, craft_known_storage_proof) + .expect("Valid proof passed; qed"); + for key_value_pair in unique_input_vec { + log::info!("Reading value for pair {:?}", key_value_pair); + assert_eq!(checker.read_value(&key_value_pair.0), Ok(Some(key_value_pair.1.clone()))); + } + }) +} + +fn main() { + env_logger::init(); + + loop { + run_fuzzer(); + } +} diff --git a/modules/dispatch/Cargo.toml b/modules/dispatch/Cargo.toml new file mode 100644 index 000000000000..7a8a34ab4c0e --- /dev/null +++ b/modules/dispatch/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "pallet-bridge-dispatch" +description = "A Substrate Runtime module that dispatches a bridge message, treating it simply as encoded Call" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +log = { version = "0.4.14", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Bridge dependencies + +bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } +bp-runtime = { path = "../../primitives/runtime", default-features = false } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "bp-message-dispatch/std", + "bp-runtime/std", + "frame-support/std", + "frame-system/std", + "log/std", + "scale-info/std", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/bridges/modules/dispatch/README.md b/modules/dispatch/README.md similarity index 100% rename from bridges/modules/dispatch/README.md rename to modules/dispatch/README.md diff --git a/modules/dispatch/src/lib.rs b/modules/dispatch/src/lib.rs new file mode 100644 index 000000000000..f467bab0d946 --- /dev/null +++ b/modules/dispatch/src/lib.rs @@ -0,0 +1,1084 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Runtime module which takes care of dispatching messages received over the bridge. +//! +//! The messages are interpreted directly as runtime `Call`. We attempt to decode +//! them and then dispatch as usual. To prevent compatibility issues, the Calls have +//! to include a `spec_version`. This will be checked before dispatch. In the case of +//! a successful dispatch an event is emitted. + +#![cfg_attr(not(feature = "std"), no_std)] +// Generated by `decl_event!` +#![allow(clippy::unused_unit)] + +use bp_message_dispatch::{CallOrigin, MessageDispatch, MessagePayload, SpecVersion}; +use bp_runtime::{ + derive_account_id, + messages::{DispatchFeePayment, MessageDispatchResult}, + ChainId, SourceAccount, +}; +use codec::Encode; +use frame_support::{ + dispatch::Dispatchable, + ensure, + traits::{Contains, Get}, + weights::{extract_actual_weight, GetDispatchInfo}, +}; +use frame_system::RawOrigin; +use sp_runtime::traits::{BadOrigin, Convert, IdentifyAccount, MaybeDisplay, Verify}; +use sp_std::{fmt::Debug, prelude::*}; + +pub use pallet::*; + +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + + #[pallet::config] + pub trait Config: frame_system::Config { + /// The overarching event type. + type Event: From> + IsType<::Event>; + /// Id of the message. Whenever message is passed to the dispatch module, it emits + /// event with this id + dispatch result. Could be e.g. (LaneId, MessageNonce) if + /// it comes from the messages module. + type BridgeMessageId: Parameter; + /// Type of account ID on source chain. + type SourceChainAccountId: Parameter + + Member + + MaybeSerializeDeserialize + + Debug + + MaybeDisplay + + Ord + + Default; + /// Type of account public key on target chain. + type TargetChainAccountPublic: Parameter + IdentifyAccount; + /// Type of signature that may prove that the message has been signed by + /// owner of `TargetChainAccountPublic`. + type TargetChainSignature: Parameter + Verify; + /// The overarching dispatch call type. + type Call: Parameter + + GetDispatchInfo + + Dispatchable< + Origin = ::Origin, + PostInfo = frame_support::dispatch::PostDispatchInfo, + >; + /// Pre-dispatch filter for incoming calls. + /// + /// The pallet will filter all incoming calls right before they're dispatched. If this + /// filter rejects the call, special event (`Event::MessageCallRejected`) is emitted. + type CallFilter: Contains<>::Call>; + /// The type that is used to wrap the `Self::Call` when it is moved over bridge. + /// + /// The idea behind this is to avoid `Call` conversion/decoding until we'll be sure + /// that all other stuff (like `spec_version`) is ok. If we would try to decode + /// `Call` which has been encoded using previous `spec_version`, then we might end + /// up with decoding error, instead of `MessageVersionSpecMismatch`. + type EncodedCall: Decode + Encode + Into>::Call, ()>>; + /// A type which can be turned into an AccountId from a 256-bit hash. + /// + /// Used when deriving target chain AccountIds from source chain AccountIds. + type AccountIdConverter: sp_runtime::traits::Convert; + } + + type BridgeMessageIdOf = >::BridgeMessageId; + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(PhantomData<(T, I)>); + + #[pallet::hooks] + impl, I: 'static> Hooks> for Pallet {} + + #[pallet::call] + impl, I: 'static> Pallet {} + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event, I: 'static = ()> { + /// Message has been rejected before reaching dispatch. + MessageRejected(ChainId, BridgeMessageIdOf), + /// Message has been rejected by dispatcher because of spec version mismatch. + /// Last two arguments are: expected and passed spec version. + MessageVersionSpecMismatch(ChainId, BridgeMessageIdOf, SpecVersion, SpecVersion), + /// Message has been rejected by dispatcher because of weight mismatch. + /// Last two arguments are: expected and passed call weight. + MessageWeightMismatch(ChainId, BridgeMessageIdOf, Weight, Weight), + /// Message signature mismatch. + MessageSignatureMismatch(ChainId, BridgeMessageIdOf), + /// We have failed to decode Call from the message. + MessageCallDecodeFailed(ChainId, BridgeMessageIdOf), + /// The call from the message has been rejected by the call filter. + MessageCallRejected(ChainId, BridgeMessageIdOf), + /// The origin account has failed to pay fee for dispatching the message. + MessageDispatchPaymentFailed( + ChainId, + BridgeMessageIdOf, + ::AccountId, + Weight, + ), + /// Message has been dispatched with given result. + MessageDispatched(ChainId, BridgeMessageIdOf, DispatchResult), + /// Phantom member, never used. Needed to handle multiple pallet instances. + _Dummy(PhantomData), + } +} + +impl, I: 'static> MessageDispatch for Pallet { + type Message = MessagePayload< + T::SourceChainAccountId, + T::TargetChainAccountPublic, + T::TargetChainSignature, + T::EncodedCall, + >; + + fn dispatch_weight(message: &Self::Message) -> bp_message_dispatch::Weight { + message.weight + } + + fn dispatch Result<(), ()>>( + source_chain: ChainId, + target_chain: ChainId, + id: T::BridgeMessageId, + message: Result, + pay_dispatch_fee: P, + ) -> MessageDispatchResult { + // emit special even if message has been rejected by external component + let message = match message { + Ok(message) => message, + Err(_) => { + log::trace!( + target: "runtime::bridge-dispatch", + "Message {:?}/{:?}: rejected before actual dispatch", + source_chain, + id, + ); + Self::deposit_event(Event::MessageRejected(source_chain, id)); + return MessageDispatchResult { + dispatch_result: false, + unspent_weight: 0, + dispatch_fee_paid_during_dispatch: false, + } + }, + }; + + // verify spec version + // (we want it to be the same, because otherwise we may decode Call improperly) + let mut dispatch_result = MessageDispatchResult { + dispatch_result: false, + unspent_weight: message.weight, + dispatch_fee_paid_during_dispatch: false, + }; + let expected_version = ::Version::get().spec_version; + if message.spec_version != expected_version { + log::trace!( + "Message {:?}/{:?}: spec_version mismatch. Expected {:?}, got {:?}", + source_chain, + id, + expected_version, + message.spec_version, + ); + Self::deposit_event(Event::MessageVersionSpecMismatch( + source_chain, + id, + expected_version, + message.spec_version, + )); + return dispatch_result + } + + // now that we have spec version checked, let's decode the call + let call = match message.call.into() { + Ok(call) => call, + Err(_) => { + log::trace!( + target: "runtime::bridge-dispatch", + "Failed to decode Call from message {:?}/{:?}", + source_chain, + id, + ); + Self::deposit_event(Event::MessageCallDecodeFailed(source_chain, id)); + return dispatch_result + }, + }; + + // prepare dispatch origin + let origin_account = match message.origin { + CallOrigin::SourceRoot => { + let hex_id = + derive_account_id::(source_chain, SourceAccount::Root); + let target_id = T::AccountIdConverter::convert(hex_id); + log::trace!(target: "runtime::bridge-dispatch", "Root Account: {:?}", &target_id); + target_id + }, + CallOrigin::TargetAccount(source_account_id, target_public, target_signature) => { + let digest = account_ownership_digest( + &call, + source_account_id, + message.spec_version, + source_chain, + target_chain, + ); + + let target_account = target_public.into_account(); + if !target_signature.verify(&digest[..], &target_account) { + log::trace!( + target: "runtime::bridge-dispatch", + "Message {:?}/{:?}: origin proof is invalid. Expected account: {:?} from signature: {:?}", + source_chain, + id, + target_account, + target_signature, + ); + Self::deposit_event(Event::MessageSignatureMismatch(source_chain, id)); + return dispatch_result + } + + log::trace!(target: "runtime::bridge-dispatch", "Target Account: {:?}", &target_account); + target_account + }, + CallOrigin::SourceAccount(source_account_id) => { + let hex_id = + derive_account_id(source_chain, SourceAccount::Account(source_account_id)); + let target_id = T::AccountIdConverter::convert(hex_id); + log::trace!(target: "runtime::bridge-dispatch", "Source Account: {:?}", &target_id); + target_id + }, + }; + + // filter the call + if !T::CallFilter::contains(&call) { + log::trace!( + target: "runtime::bridge-dispatch", + "Message {:?}/{:?}: the call ({:?}) is rejected by filter", + source_chain, + id, + call, + ); + Self::deposit_event(Event::MessageCallRejected(source_chain, id)); + return dispatch_result + } + + // verify weight + // (we want passed weight to be at least equal to pre-dispatch weight of the call + // because otherwise Calls may be dispatched at lower price) + let dispatch_info = call.get_dispatch_info(); + let expected_weight = dispatch_info.weight; + if message.weight < expected_weight { + log::trace!( + target: "runtime::bridge-dispatch", + "Message {:?}/{:?}: passed weight is too low. Expected at least {:?}, got {:?}", + source_chain, + id, + expected_weight, + message.weight, + ); + Self::deposit_event(Event::MessageWeightMismatch( + source_chain, + id, + expected_weight, + message.weight, + )); + return dispatch_result + } + + // pay dispatch fee right before dispatch + let pay_dispatch_fee_at_target_chain = + message.dispatch_fee_payment == DispatchFeePayment::AtTargetChain; + if pay_dispatch_fee_at_target_chain && + pay_dispatch_fee(&origin_account, message.weight).is_err() + { + log::trace!( + target: "runtime::bridge-dispatch", + "Failed to pay dispatch fee for dispatching message {:?}/{:?} with weight {}", + source_chain, + id, + message.weight, + ); + Self::deposit_event(Event::MessageDispatchPaymentFailed( + source_chain, + id, + origin_account, + message.weight, + )); + return dispatch_result + } + dispatch_result.dispatch_fee_paid_during_dispatch = pay_dispatch_fee_at_target_chain; + + // finally dispatch message + let origin = RawOrigin::Signed(origin_account).into(); + + log::trace!(target: "runtime::bridge-dispatch", "Message being dispatched is: {:.4096?}", &call); + let result = call.dispatch(origin); + let actual_call_weight = extract_actual_weight(&result, &dispatch_info); + dispatch_result.dispatch_result = result.is_ok(); + dispatch_result.unspent_weight = message.weight.saturating_sub(actual_call_weight); + + log::trace!( + target: "runtime::bridge-dispatch", + "Message {:?}/{:?} has been dispatched. Weight: {} of {}. Result: {:?}. Call dispatch result: {:?}", + source_chain, + id, + actual_call_weight, + message.weight, + dispatch_result, + result, + ); + + Self::deposit_event(Event::MessageDispatched( + source_chain, + id, + result.map(drop).map_err(|e| e.error), + )); + + dispatch_result + } +} + +/// Check if the message is allowed to be dispatched on the target chain given the sender's origin +/// on the source chain. +/// +/// For example, if a message is sent from a "regular" account on the source chain it will not be +/// allowed to be dispatched as Root on the target chain. This is a useful check to do on the source +/// chain _before_ sending a message whose dispatch will be rejected on the target chain. +pub fn verify_message_origin< + SourceChainAccountId, + TargetChainAccountPublic, + TargetChainSignature, + Call, +>( + sender_origin: &RawOrigin, + message: &MessagePayload< + SourceChainAccountId, + TargetChainAccountPublic, + TargetChainSignature, + Call, + >, +) -> Result, BadOrigin> +where + SourceChainAccountId: PartialEq + Clone, +{ + match message.origin { + CallOrigin::SourceRoot => { + ensure!(sender_origin == &RawOrigin::Root, BadOrigin); + Ok(None) + }, + CallOrigin::TargetAccount(ref source_account_id, _, _) => { + ensure!(sender_origin == &RawOrigin::Signed(source_account_id.clone()), BadOrigin); + Ok(Some(source_account_id.clone())) + }, + CallOrigin::SourceAccount(ref source_account_id) => { + ensure!( + sender_origin == &RawOrigin::Signed(source_account_id.clone()) || + sender_origin == &RawOrigin::Root, + BadOrigin + ); + Ok(Some(source_account_id.clone())) + }, + } +} + +/// Target account ownership digest from the source chain. +/// +/// The byte vector returned by this function will be signed with a target chain account +/// private key. This way, the owner of `source_account_id` on the source chain proves that +/// the target chain account private key is also under his control. +pub fn account_ownership_digest( + call: &Call, + source_account_id: AccountId, + target_spec_version: SpecVersion, + source_chain_id: ChainId, + target_chain_id: ChainId, +) -> Vec +where + Call: Encode, + AccountId: Encode, + SpecVersion: Encode, +{ + let mut proof = Vec::new(); + call.encode_to(&mut proof); + source_account_id.encode_to(&mut proof); + target_spec_version.encode_to(&mut proof); + source_chain_id.encode_to(&mut proof); + target_chain_id.encode_to(&mut proof); + + proof +} + +#[cfg(test)] +mod tests { + // From construct_runtime macro + #![allow(clippy::from_over_into)] + + use super::*; + use codec::Decode; + use frame_support::{parameter_types, weights::Weight}; + use frame_system::{EventRecord, Phase}; + use scale_info::TypeInfo; + use sp_core::H256; + use sp_runtime::{ + testing::Header, + traits::{BlakeTwo256, IdentityLookup}, + Perbill, + }; + + type AccountId = u64; + type BridgeMessageId = [u8; 4]; + + const SOURCE_CHAIN_ID: ChainId = *b"srce"; + const TARGET_CHAIN_ID: ChainId = *b"trgt"; + + #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] + pub struct TestAccountPublic(AccountId); + + impl IdentifyAccount for TestAccountPublic { + type AccountId = AccountId; + + fn into_account(self) -> AccountId { + self.0 + } + } + + #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] + pub struct TestSignature(AccountId); + + impl Verify for TestSignature { + type Signer = TestAccountPublic; + + fn verify>(&self, _msg: L, signer: &AccountId) -> bool { + self.0 == *signer + } + } + + pub struct AccountIdConverter; + + impl sp_runtime::traits::Convert for AccountIdConverter { + fn convert(hash: H256) -> AccountId { + hash.to_low_u64_ne() + } + } + + type Block = frame_system::mocking::MockBlock; + type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + + use crate as call_dispatch; + + frame_support::construct_runtime! { + pub enum TestRuntime where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Dispatch: call_dispatch::{Pallet, Call, Event}, + } + } + + parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); + } + + impl frame_system::Config for TestRuntime { + type Origin = Origin; + type Index = u64; + type Call = Call; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = Header; + type Event = Event; + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = (); + type OnNewAccount = (); + type OnKilledAccount = (); + type BaseCallFilter = frame_support::traits::Everything; + type SystemWeightInfo = (); + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type SS58Prefix = (); + type OnSetCode = (); + } + + impl Config for TestRuntime { + type Event = Event; + type BridgeMessageId = BridgeMessageId; + type SourceChainAccountId = AccountId; + type TargetChainAccountPublic = TestAccountPublic; + type TargetChainSignature = TestSignature; + type Call = Call; + type CallFilter = TestCallFilter; + type EncodedCall = EncodedCall; + type AccountIdConverter = AccountIdConverter; + } + + #[derive(Decode, Encode)] + pub struct EncodedCall(Vec); + + impl From for Result { + fn from(call: EncodedCall) -> Result { + Call::decode(&mut &call.0[..]).map_err(drop) + } + } + + pub struct TestCallFilter; + + impl Contains for TestCallFilter { + fn contains(call: &Call) -> bool { + !matches!(*call, Call::System(frame_system::Call::fill_block { .. })) + } + } + + const TEST_SPEC_VERSION: SpecVersion = 0; + const TEST_WEIGHT: Weight = 1_000_000_000; + + fn new_test_ext() -> sp_io::TestExternalities { + let t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + sp_io::TestExternalities::new(t) + } + + fn prepare_message( + origin: CallOrigin, + call: Call, + ) -> as MessageDispatch< + AccountId, + ::BridgeMessageId, + >>::Message { + MessagePayload { + spec_version: TEST_SPEC_VERSION, + weight: TEST_WEIGHT, + origin, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + call: EncodedCall(call.encode()), + } + } + + fn prepare_root_message( + call: Call, + ) -> as MessageDispatch< + AccountId, + ::BridgeMessageId, + >>::Message { + prepare_message(CallOrigin::SourceRoot, call) + } + + fn prepare_target_message( + call: Call, + ) -> as MessageDispatch< + AccountId, + ::BridgeMessageId, + >>::Message { + let origin = CallOrigin::TargetAccount(1, TestAccountPublic(1), TestSignature(1)); + prepare_message(origin, call) + } + + fn prepare_source_message( + call: Call, + ) -> as MessageDispatch< + AccountId, + ::BridgeMessageId, + >>::Message { + let origin = CallOrigin::SourceAccount(1); + prepare_message(origin, call) + } + + #[test] + fn should_fail_on_spec_version_mismatch() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + const BAD_SPEC_VERSION: SpecVersion = 99; + let mut message = prepare_root_message(Call::System(frame_system::Call::remark { + remark: vec![1, 2, 3], + })); + let weight = message.weight; + message.spec_version = BAD_SPEC_VERSION; + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert_eq!(result.unspent_weight, weight); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageVersionSpecMismatch( + SOURCE_CHAIN_ID, + id, + TEST_SPEC_VERSION, + BAD_SPEC_VERSION + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_fail_on_weight_mismatch() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + let call = Call::System(frame_system::Call::remark { remark: vec![1, 2, 3] }); + let call_weight = call.get_dispatch_info().weight; + let mut message = prepare_root_message(call); + message.weight = 7; + assert!(call_weight != 7, "needed for test to actually trigger a weight mismatch"); + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert_eq!(result.unspent_weight, 7); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageWeightMismatch( + SOURCE_CHAIN_ID, + id, + call_weight, + 7, + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_fail_on_signature_mismatch() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let call_origin = CallOrigin::TargetAccount(1, TestAccountPublic(1), TestSignature(99)); + let message = prepare_message( + call_origin, + Call::System(frame_system::Call::remark { remark: vec![1, 2, 3] }), + ); + let weight = message.weight; + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert_eq!(result.unspent_weight, weight); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageSignatureMismatch( + SOURCE_CHAIN_ID, + id + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_emit_event_for_rejected_messages() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + System::set_block_number(1); + Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Err(()), + |_, _| unreachable!(), + ); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageRejected( + SOURCE_CHAIN_ID, + id + )), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_fail_on_call_decode() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let mut message = prepare_root_message(Call::System(frame_system::Call::remark { + remark: vec![1, 2, 3], + })); + let weight = message.weight; + message.call.0 = vec![]; + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert_eq!(result.unspent_weight, weight); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageCallDecodeFailed( + SOURCE_CHAIN_ID, + id + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_emit_event_for_rejected_calls() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let call = + Call::System(frame_system::Call::fill_block { ratio: Perbill::from_percent(75) }); + let weight = call.get_dispatch_info().weight; + let mut message = prepare_root_message(call); + message.weight = weight; + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert_eq!(result.unspent_weight, weight); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageCallRejected( + SOURCE_CHAIN_ID, + id + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_emit_event_for_unpaid_calls() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let mut message = prepare_root_message(Call::System(frame_system::Call::remark { + remark: vec![1, 2, 3], + })); + let weight = message.weight; + message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; + + System::set_block_number(1); + let result = + Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| { + Err(()) + }); + assert_eq!(result.unspent_weight, weight); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch( + call_dispatch::Event::::MessageDispatchPaymentFailed( + SOURCE_CHAIN_ID, + id, + AccountIdConverter::convert(derive_account_id::( + SOURCE_CHAIN_ID, + SourceAccount::Root + )), + TEST_WEIGHT, + ) + ), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_dispatch_calls_paid_at_target_chain() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let mut message = prepare_root_message(Call::System(frame_system::Call::remark { + remark: vec![1, 2, 3], + })); + message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| Ok(()), + ); + assert!(result.dispatch_fee_paid_during_dispatch); + assert!(result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( + SOURCE_CHAIN_ID, + id, + Ok(()) + )), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_return_dispatch_failed_flag_if_dispatch_happened_but_failed() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let call = Call::System(frame_system::Call::set_heap_pages { pages: 1 }); + let message = prepare_target_message(call); + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert!(!result.dispatch_fee_paid_during_dispatch); + assert!(!result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( + SOURCE_CHAIN_ID, + id, + Err(sp_runtime::DispatchError::BadOrigin) + )), + topics: vec![], + }], + ); + }) + } + + #[test] + fn should_dispatch_bridge_message_from_root_origin() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + let message = prepare_root_message(Call::System(frame_system::Call::remark { + remark: vec![1, 2, 3], + })); + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert!(!result.dispatch_fee_paid_during_dispatch); + assert!(result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( + SOURCE_CHAIN_ID, + id, + Ok(()) + )), + topics: vec![], + }], + ); + }); + } + + #[test] + fn should_dispatch_bridge_message_from_target_origin() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let call = Call::System(frame_system::Call::remark { remark: vec![] }); + let message = prepare_target_message(call); + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert!(!result.dispatch_fee_paid_during_dispatch); + assert!(result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( + SOURCE_CHAIN_ID, + id, + Ok(()) + )), + topics: vec![], + }], + ); + }) + } + + #[test] + fn should_dispatch_bridge_message_from_source_origin() { + new_test_ext().execute_with(|| { + let id = [0; 4]; + + let call = Call::System(frame_system::Call::remark { remark: vec![] }); + let message = prepare_source_message(call); + + System::set_block_number(1); + let result = Dispatch::dispatch( + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + id, + Ok(message), + |_, _| unreachable!(), + ); + assert!(!result.dispatch_fee_paid_during_dispatch); + assert!(result.dispatch_result); + + assert_eq!( + System::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: Event::Dispatch(call_dispatch::Event::::MessageDispatched( + SOURCE_CHAIN_ID, + id, + Ok(()) + )), + topics: vec![], + }], + ); + }) + } + + #[test] + fn origin_is_checked_when_verifying_sending_message_using_source_root_account() { + let call = Call::System(frame_system::Call::remark { remark: vec![] }); + let message = prepare_root_message(call); + + // When message is sent by Root, CallOrigin::SourceRoot is allowed + assert!(matches!(verify_message_origin(&RawOrigin::Root, &message), Ok(None))); + + // when message is sent by some real account, CallOrigin::SourceRoot is not allowed + assert!(matches!(verify_message_origin(&RawOrigin::Signed(1), &message), Err(BadOrigin))); + } + + #[test] + fn origin_is_checked_when_verifying_sending_message_using_target_account() { + let call = Call::System(frame_system::Call::remark { remark: vec![] }); + let message = prepare_target_message(call); + + // When message is sent by Root, CallOrigin::TargetAccount is not allowed + assert!(matches!(verify_message_origin(&RawOrigin::Root, &message), Err(BadOrigin))); + + // When message is sent by some other account, it is rejected + assert!(matches!(verify_message_origin(&RawOrigin::Signed(2), &message), Err(BadOrigin))); + + // When message is sent by a real account, it is allowed to have origin + // CallOrigin::TargetAccount + assert!(matches!(verify_message_origin(&RawOrigin::Signed(1), &message), Ok(Some(1)))); + } + + #[test] + fn origin_is_checked_when_verifying_sending_message_using_source_account() { + let call = Call::System(frame_system::Call::remark { remark: vec![] }); + let message = prepare_source_message(call); + + // Sending a message from the expected origin account works + assert!(matches!(verify_message_origin(&RawOrigin::Signed(1), &message), Ok(Some(1)))); + + // If we send a message from a different account, it is rejected + assert!(matches!(verify_message_origin(&RawOrigin::Signed(2), &message), Err(BadOrigin))); + + // The Root account is allowed to assume any expected origin account + assert!(matches!(verify_message_origin(&RawOrigin::Root, &message), Ok(Some(1)))); + } +} diff --git a/modules/grandpa/Cargo.toml b/modules/grandpa/Cargo.toml new file mode 100644 index 000000000000..e36b43585b9b --- /dev/null +++ b/modules/grandpa/Cargo.toml @@ -0,0 +1,62 @@ +[package] +name = "pallet-bridge-grandpa" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +finality-grandpa = { version = "0.14.0", default-features = false } +log = { version = "0.4.14", default-features = false } +num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true } + +# Bridge Dependencies + +bp-runtime = { path = "../../primitives/runtime", default-features = false } +bp-header-chain = { path = "../../primitives/header-chain", default-features = false } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +# Optional Benchmarking Dependencies +bp-test-utils = { path = "../../primitives/test-utils", default-features = false, optional = true } +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } + +[dev-dependencies] +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "bp-header-chain/std", + "bp-runtime/std", + "bp-test-utils/std", + "codec/std", + "finality-grandpa/std", + "frame-support/std", + "frame-system/std", + "log/std", + "num-traits/std", + "scale-info/std", + "serde", + "sp-finality-grandpa/std", + "sp-runtime/std", + "sp-std/std", + "sp-trie/std", +] +runtime-benchmarks = [ + "bp-test-utils", + "frame-benchmarking", +] diff --git a/modules/grandpa/src/benchmarking.rs b/modules/grandpa/src/benchmarking.rs new file mode 100644 index 000000000000..46e1e41a8702 --- /dev/null +++ b/modules/grandpa/src/benchmarking.rs @@ -0,0 +1,121 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Benchmarks for the GRANDPA Pallet. +//! +//! The main dispatchable for the GRANDPA pallet is `submit_finality_proof`, so these benchmarks are +//! based around that. There are to main factors which affect finality proof verification: +//! +//! 1. The number of `votes-ancestries` in the justification +//! 2. The number of `pre-commits` in the justification +//! +//! Vote ancestries are the headers between (`finality_target`, `head_of_chain`], where +//! `header_of_chain` is a descendant of `finality_target`. +//! +//! Pre-commits are messages which are signed by validators at the head of the chain they think is +//! the best. +//! +//! Consider the following: +//! +//! / [B'] <- [C'] +//! [A] <- [B] <- [C] +//! +//! The common ancestor of both forks is block A, so this is what GRANDPA will finalize. In order to +//! verify this we will have vote ancestries of `[B, C, B', C']` and pre-commits `[C, C']`. +//! +//! Note that the worst case scenario here would be a justification where each validator has it's +//! own fork which is `SESSION_LENGTH` blocks long. + +use crate::*; + +use bp_test_utils::{ + accounts, make_justification_for_header, JustificationGeneratorParams, TEST_GRANDPA_ROUND, + TEST_GRANDPA_SET_ID, +}; +use frame_benchmarking::{benchmarks_instance_pallet, whitelisted_caller}; +use frame_support::traits::Get; +use frame_system::RawOrigin; +use sp_finality_grandpa::AuthorityId; +use sp_runtime::traits::Zero; +use sp_std::vec::Vec; + +// The maximum number of vote ancestries to include in a justification. +// +// In practice this would be limited by the session length (number of blocks a single authority set +// can produce) of a given chain. +const MAX_VOTE_ANCESTRIES: u32 = 1000; + +// The maximum number of pre-commits to include in a justification. In practice this scales with the +// number of validators. +const MAX_VALIDATOR_SET_SIZE: u32 = 1024; + +/// Returns number of first header to be imported. +/// +/// Since we bootstrap the pallet with `HeadersToKeep` already imported headers, +/// this function computes the next expected header number to import. +fn header_number, I: 'static, N: From>() -> N { + (T::HeadersToKeep::get() + 1).into() +} + +/// Prepare header and its justification to submit using `submit_finality_proof`. +fn prepare_benchmark_data, I: 'static>( + precommits: u32, + ancestors: u32, +) -> (BridgedHeader, GrandpaJustification>) { + let authority_list = accounts(precommits as u16) + .iter() + .map(|id| (AuthorityId::from(*id), 1)) + .collect::>(); + + let init_data = InitializationData { + header: Box::new(bp_test_utils::test_header(Zero::zero())), + authority_list, + set_id: TEST_GRANDPA_SET_ID, + is_halted: false, + }; + + bootstrap_bridge::(init_data); + + let header: BridgedHeader = bp_test_utils::test_header(header_number::()); + let params = JustificationGeneratorParams { + header: header.clone(), + round: TEST_GRANDPA_ROUND, + set_id: TEST_GRANDPA_SET_ID, + authorities: accounts(precommits as u16).iter().map(|k| (*k, 1)).collect::>(), + ancestors, + forks: 1, + }; + let justification = make_justification_for_header(params); + (header, justification) +} + +benchmarks_instance_pallet! { + // This is the "gold standard" benchmark for this extrinsic, and it's what should be used to + // annotate the weight in the pallet. + submit_finality_proof { + let p in 1..MAX_VALIDATOR_SET_SIZE; + let v in 1..MAX_VOTE_ANCESTRIES; + let caller: T::AccountId = whitelisted_caller(); + let (header, justification) = prepare_benchmark_data::(p, v); + }: submit_finality_proof(RawOrigin::Signed(caller), Box::new(header), justification) + verify { + let header: BridgedHeader = bp_test_utils::test_header(header_number::()); + let expected_hash = header.hash(); + + assert_eq!(>::get(), expected_hash); + assert!(>::contains_key(expected_hash)); + } +} diff --git a/modules/grandpa/src/lib.rs b/modules/grandpa/src/lib.rs new file mode 100644 index 000000000000..cbc85da30259 --- /dev/null +++ b/modules/grandpa/src/lib.rs @@ -0,0 +1,1148 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate GRANDPA Pallet +//! +//! This pallet is an on-chain GRANDPA light client for Substrate based chains. +//! +//! This pallet achieves this by trustlessly verifying GRANDPA finality proofs on-chain. Once +//! verified, finalized headers are stored in the pallet, thereby creating a sparse header chain. +//! This sparse header chain can be used as a source of truth for other higher-level applications. +//! +//! The pallet is responsible for tracking GRANDPA validator set hand-offs. We only import headers +//! with justifications signed by the current validator set we know of. The header is inspected for +//! a `ScheduledChanges` digest item, which is then used to update to next validator set. +//! +//! Since this pallet only tracks finalized headers it does not deal with forks. Forks can only +//! occur if the GRANDPA validator set on the bridged chain is either colluding or there is a severe +//! bug causing resulting in an equivocation. Such events are outside the scope of this pallet. +//! Shall the fork occur on the bridged chain governance intervention will be required to +//! re-initialize the bridge and track the right fork. + +#![cfg_attr(not(feature = "std"), no_std)] +// Runtime-generated enums +#![allow(clippy::large_enum_variant)] + +use crate::weights::WeightInfo; + +use bp_header_chain::{justification::GrandpaJustification, InitializationData}; +use bp_runtime::{BlockNumberOf, Chain, HashOf, HasherOf, HeaderOf}; +use finality_grandpa::voter_set::VoterSet; +use frame_support::{ensure, fail}; +use frame_system::{ensure_signed, RawOrigin}; +use sp_finality_grandpa::{ConsensusLog, GRANDPA_ENGINE_ID}; +use sp_runtime::traits::{BadOrigin, Header as HeaderT, Zero}; +use sp_std::{boxed::Box, convert::TryInto}; + +#[cfg(test)] +mod mock; + +/// Pallet containing weights for this pallet. +pub mod weights; + +#[cfg(feature = "runtime-benchmarks")] +pub mod benchmarking; + +// Re-export in crate namespace for `construct_runtime!` +pub use pallet::*; + +/// Block number of the bridged chain. +pub type BridgedBlockNumber = BlockNumberOf<>::BridgedChain>; +/// Block hash of the bridged chain. +pub type BridgedBlockHash = HashOf<>::BridgedChain>; +/// Hasher of the bridged chain. +pub type BridgedBlockHasher = HasherOf<>::BridgedChain>; +/// Header of the bridged chain. +pub type BridgedHeader = HeaderOf<>::BridgedChain>; + +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + + #[pallet::config] + pub trait Config: frame_system::Config { + /// The chain we are bridging to here. + type BridgedChain: Chain; + + /// The upper bound on the number of requests allowed by the pallet. + /// + /// A request refers to an action which writes a header to storage. + /// + /// Once this bound is reached the pallet will not allow any dispatchables to be called + /// until the request count has decreased. + #[pallet::constant] + type MaxRequests: Get; + + /// Maximal number of finalized headers to keep in the storage. + /// + /// The setting is there to prevent growing the on-chain state indefinitely. Note + /// the setting does not relate to block numbers - we will simply keep as much items + /// in the storage, so it doesn't guarantee any fixed timeframe for finality headers. + #[pallet::constant] + type HeadersToKeep: Get; + + /// Weights gathered through benchmarking. + type WeightInfo: WeightInfo; + } + + #[pallet::pallet] + pub struct Pallet(PhantomData<(T, I)>); + + #[pallet::hooks] + impl, I: 'static> Hooks> for Pallet { + fn on_initialize(_n: T::BlockNumber) -> frame_support::weights::Weight { + >::mutate(|count| *count = count.saturating_sub(1)); + + (0_u64) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + } + + #[pallet::call] + impl, I: 'static> Pallet { + /// Verify a target header is finalized according to the given finality proof. + /// + /// It will use the underlying storage pallet to fetch information about the current + /// authorities and best finalized header in order to verify that the header is finalized. + /// + /// If successful in verification, it will write the target header to the underlying storage + /// pallet. + #[pallet::weight(T::WeightInfo::submit_finality_proof( + justification.commit.precommits.len().try_into().unwrap_or(u32::MAX), + justification.votes_ancestries.len().try_into().unwrap_or(u32::MAX), + ))] + pub fn submit_finality_proof( + origin: OriginFor, + finality_target: Box>, + justification: GrandpaJustification>, + ) -> DispatchResultWithPostInfo { + ensure_operational::()?; + let _ = ensure_signed(origin)?; + + ensure!(Self::request_count() < T::MaxRequests::get(), >::TooManyRequests); + + let (hash, number) = (finality_target.hash(), finality_target.number()); + log::trace!(target: "runtime::bridge-grandpa", "Going to try and finalize header {:?}", finality_target); + + let best_finalized = match >::get(>::get()) { + Some(best_finalized) => best_finalized, + None => { + log::error!( + target: "runtime::bridge-grandpa", + "Cannot finalize header {:?} because pallet is not yet initialized", + finality_target, + ); + fail!(>::NotInitialized); + }, + }; + + // We do a quick check here to ensure that our header chain is making progress and isn't + // "travelling back in time" (which could be indicative of something bad, e.g a + // hard-fork). + ensure!(best_finalized.number() < number, >::OldHeader); + + let authority_set = >::get(); + let set_id = authority_set.set_id; + verify_justification::(&justification, hash, *number, authority_set)?; + + let is_authorities_change_enacted = + try_enact_authority_change::(&finality_target, set_id)?; + >::mutate(|count| *count += 1); + insert_header::(*finality_target, hash); + log::info!(target: "runtime::bridge-grandpa", "Succesfully imported finalized header with hash {:?}!", hash); + + // mandatory header is a header that changes authorities set. The pallet can't go + // further without importing this header. So every bridge MUST import mandatory headers. + // + // We don't want to charge extra costs for mandatory operations. So relayer is not + // paying fee for mandatory headers import transactions. + let is_mandatory_header = is_authorities_change_enacted; + let pays_fee = if is_mandatory_header { Pays::No } else { Pays::Yes }; + + Ok(pays_fee.into()) + } + + /// Bootstrap the bridge pallet with an initial header and authority set from which to sync. + /// + /// The initial configuration provided does not need to be the genesis header of the bridged + /// chain, it can be any arbitrary header. You can also provide the next scheduled set + /// change if it is already know. + /// + /// This function is only allowed to be called from a trusted origin and writes to storage + /// with practically no checks in terms of the validity of the data. It is important that + /// you ensure that valid data is being passed in. + #[pallet::weight((T::DbWeight::get().reads_writes(2, 5), DispatchClass::Operational))] + pub fn initialize( + origin: OriginFor, + init_data: super::InitializationData>, + ) -> DispatchResultWithPostInfo { + ensure_owner_or_root::(origin)?; + + let init_allowed = !>::exists(); + ensure!(init_allowed, >::AlreadyInitialized); + initialize_bridge::(init_data.clone()); + + log::info!( + target: "runtime::bridge-grandpa", + "Pallet has been initialized with the following parameters: {:?}", + init_data + ); + + Ok(().into()) + } + + /// Change `PalletOwner`. + /// + /// May only be called either by root, or by `PalletOwner`. + #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] + pub fn set_owner( + origin: OriginFor, + new_owner: Option, + ) -> DispatchResultWithPostInfo { + ensure_owner_or_root::(origin)?; + match new_owner { + Some(new_owner) => { + PalletOwner::::put(&new_owner); + log::info!(target: "runtime::bridge-grandpa", "Setting pallet Owner to: {:?}", new_owner); + }, + None => { + PalletOwner::::kill(); + log::info!(target: "runtime::bridge-grandpa", "Removed Owner of pallet."); + }, + } + + Ok(().into()) + } + + /// Halt or resume all pallet operations. + /// + /// May only be called either by root, or by `PalletOwner`. + #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] + pub fn set_operational( + origin: OriginFor, + operational: bool, + ) -> DispatchResultWithPostInfo { + ensure_owner_or_root::(origin)?; + >::put(!operational); + + if operational { + log::info!(target: "runtime::bridge-grandpa", "Resuming pallet operations."); + } else { + log::warn!(target: "runtime::bridge-grandpa", "Stopping pallet operations."); + } + + Ok(().into()) + } + } + + /// The current number of requests which have written to storage. + /// + /// If the `RequestCount` hits `MaxRequests`, no more calls will be allowed to the pallet until + /// the request capacity is increased. + /// + /// The `RequestCount` is decreased by one at the beginning of every block. This is to ensure + /// that the pallet can always make progress. + #[pallet::storage] + #[pallet::getter(fn request_count)] + pub(super) type RequestCount, I: 'static = ()> = StorageValue<_, u32, ValueQuery>; + + /// Hash of the header used to bootstrap the pallet. + #[pallet::storage] + pub(super) type InitialHash, I: 'static = ()> = + StorageValue<_, BridgedBlockHash, ValueQuery>; + + /// Hash of the best finalized header. + #[pallet::storage] + pub(super) type BestFinalized, I: 'static = ()> = + StorageValue<_, BridgedBlockHash, ValueQuery>; + + /// A ring buffer of imported hashes. Ordered by the insertion time. + #[pallet::storage] + pub(super) type ImportedHashes, I: 'static = ()> = + StorageMap<_, Identity, u32, BridgedBlockHash>; + + /// Current ring buffer position. + #[pallet::storage] + pub(super) type ImportedHashesPointer, I: 'static = ()> = + StorageValue<_, u32, ValueQuery>; + + /// Headers which have been imported into the pallet. + #[pallet::storage] + pub(super) type ImportedHeaders, I: 'static = ()> = + StorageMap<_, Identity, BridgedBlockHash, BridgedHeader>; + + /// The current GRANDPA Authority set. + #[pallet::storage] + pub(super) type CurrentAuthoritySet, I: 'static = ()> = + StorageValue<_, bp_header_chain::AuthoritySet, ValueQuery>; + + /// Optional pallet owner. + /// + /// Pallet owner has a right to halt all pallet operations and then resume it. If it is + /// `None`, then there are no direct ways to halt/resume pallet operations, but other + /// runtime methods may still be used to do that (i.e. democracy::referendum to update halt + /// flag directly or call the `halt_operations`). + #[pallet::storage] + pub(super) type PalletOwner, I: 'static = ()> = + StorageValue<_, T::AccountId, OptionQuery>; + + /// If true, all pallet transactions are failed immediately. + #[pallet::storage] + pub(super) type IsHalted, I: 'static = ()> = StorageValue<_, bool, ValueQuery>; + + #[pallet::genesis_config] + pub struct GenesisConfig, I: 'static = ()> { + /// Optional module owner account. + pub owner: Option, + /// Optional module initialization data. + pub init_data: Option>>, + } + + #[cfg(feature = "std")] + impl, I: 'static> Default for GenesisConfig { + fn default() -> Self { + Self { owner: None, init_data: None } + } + } + + #[pallet::genesis_build] + impl, I: 'static> GenesisBuild for GenesisConfig { + fn build(&self) { + if let Some(ref owner) = self.owner { + >::put(owner); + } + + if let Some(init_data) = self.init_data.clone() { + initialize_bridge::(init_data); + } else { + // Since the bridge hasn't been initialized we shouldn't allow anyone to perform + // transactions. + >::put(true); + } + } + } + + #[pallet::error] + pub enum Error { + /// The given justification is invalid for the given header. + InvalidJustification, + /// The authority set from the underlying header chain is invalid. + InvalidAuthoritySet, + /// There are too many requests for the current window to handle. + TooManyRequests, + /// The header being imported is older than the best finalized header known to the pallet. + OldHeader, + /// The header is unknown to the pallet. + UnknownHeader, + /// The scheduled authority set change found in the header is unsupported by the pallet. + /// + /// This is the case for non-standard (e.g forced) authority set changes. + UnsupportedScheduledChange, + /// The pallet is not yet initialized. + NotInitialized, + /// The pallet has already been initialized. + AlreadyInitialized, + /// All pallet operations are halted. + Halted, + /// The storage proof doesn't contains storage root. So it is invalid for given header. + StorageRootMismatch, + } + + /// Check the given header for a GRANDPA scheduled authority set change. If a change + /// is found it will be enacted immediately. + /// + /// This function does not support forced changes, or scheduled changes with delays + /// since these types of changes are indicative of abnormal behavior from GRANDPA. + /// + /// Returned value will indicate if a change was enacted or not. + pub(crate) fn try_enact_authority_change, I: 'static>( + header: &BridgedHeader, + current_set_id: sp_finality_grandpa::SetId, + ) -> Result { + let mut change_enacted = false; + + // We don't support forced changes - at that point governance intervention is required. + ensure!( + super::find_forced_change(header).is_none(), + >::UnsupportedScheduledChange + ); + + if let Some(change) = super::find_scheduled_change(header) { + // GRANDPA only includes a `delay` for forced changes, so this isn't valid. + ensure!(change.delay == Zero::zero(), >::UnsupportedScheduledChange); + + // TODO [#788]: Stop manually increasing the `set_id` here. + let next_authorities = bp_header_chain::AuthoritySet { + authorities: change.next_authorities, + set_id: current_set_id + 1, + }; + + // Since our header schedules a change and we know the delay is 0, it must also enact + // the change. + >::put(&next_authorities); + change_enacted = true; + + log::info!( + target: "runtime::bridge-grandpa", + "Transitioned from authority set {} to {}! New authorities are: {:?}", + current_set_id, + current_set_id + 1, + next_authorities, + ); + }; + + Ok(change_enacted) + } + + /// Verify a GRANDPA justification (finality proof) for a given header. + /// + /// Will use the GRANDPA current authorities known to the pallet. + /// + /// If successful it returns the decoded GRANDPA justification so we can refund any weight which + /// was overcharged in the initial call. + pub(crate) fn verify_justification, I: 'static>( + justification: &GrandpaJustification>, + hash: BridgedBlockHash, + number: BridgedBlockNumber, + authority_set: bp_header_chain::AuthoritySet, + ) -> Result<(), sp_runtime::DispatchError> { + use bp_header_chain::justification::verify_justification; + + let voter_set = + VoterSet::new(authority_set.authorities).ok_or(>::InvalidAuthoritySet)?; + let set_id = authority_set.set_id; + + Ok(verify_justification::>( + (hash, number), + set_id, + &voter_set, + justification, + ) + .map_err(|e| { + log::error!( + target: "runtime::bridge-grandpa", + "Received invalid justification for {:?}: {:?}", + hash, + e, + ); + >::InvalidJustification + })?) + } + + /// Import a previously verified header to the storage. + /// + /// Note this function solely takes care of updating the storage and pruning old entries, + /// but does not verify the validity of such import. + pub(crate) fn insert_header, I: 'static>( + header: BridgedHeader, + hash: BridgedBlockHash, + ) { + let index = >::get(); + let pruning = >::try_get(index); + >::put(hash); + >::insert(hash, header); + >::insert(index, hash); + + // Update ring buffer pointer and remove old header. + >::put((index + 1) % T::HeadersToKeep::get()); + if let Ok(hash) = pruning { + log::debug!(target: "runtime::bridge-grandpa", "Pruning old header: {:?}.", hash); + >::remove(hash); + } + } + + /// Since this writes to storage with no real checks this should only be used in functions that + /// were called by a trusted origin. + pub(crate) fn initialize_bridge, I: 'static>( + init_params: super::InitializationData>, + ) { + let super::InitializationData { header, authority_list, set_id, is_halted } = init_params; + + let initial_hash = header.hash(); + >::put(initial_hash); + >::put(0); + insert_header::(*header, initial_hash); + + let authority_set = bp_header_chain::AuthoritySet::new(authority_list, set_id); + >::put(authority_set); + + >::put(is_halted); + } + + #[cfg(feature = "runtime-benchmarks")] + pub(crate) fn bootstrap_bridge, I: 'static>( + init_params: super::InitializationData>, + ) { + let start_number = *init_params.header.number(); + let end_number = start_number + T::HeadersToKeep::get().into(); + initialize_bridge::(init_params); + + let mut number = start_number; + while number < end_number { + number = number + sp_runtime::traits::One::one(); + let header = >::new( + number, + Default::default(), + Default::default(), + Default::default(), + Default::default(), + ); + let hash = header.hash(); + insert_header::(header, hash); + } + } + + /// Ensure that the origin is either root, or `PalletOwner`. + fn ensure_owner_or_root, I: 'static>(origin: T::Origin) -> Result<(), BadOrigin> { + match origin.into() { + Ok(RawOrigin::Root) => Ok(()), + Ok(RawOrigin::Signed(ref signer)) + if Some(signer) == >::get().as_ref() => + Ok(()), + _ => Err(BadOrigin), + } + } + + /// Ensure that the pallet is in operational mode (not halted). + fn ensure_operational, I: 'static>() -> Result<(), Error> { + if >::get() { + Err(>::Halted) + } else { + Ok(()) + } + } +} + +impl, I: 'static> Pallet { + /// Get the best finalized header the pallet knows of. + /// + /// Returns a dummy header if there is no best header. This can only happen + /// if the pallet has not been initialized yet. + pub fn best_finalized() -> BridgedHeader { + let hash = >::get(); + >::get(hash).unwrap_or_else(|| { + >::new( + Default::default(), + Default::default(), + Default::default(), + Default::default(), + Default::default(), + ) + }) + } + + /// Check if a particular header is known to the bridge pallet. + pub fn is_known_header(hash: BridgedBlockHash) -> bool { + >::contains_key(hash) + } + + /// Verify that the passed storage proof is valid, given it is crafted using + /// known finalized header. If the proof is valid, then the `parse` callback + /// is called and the function returns its result. + pub fn parse_finalized_storage_proof( + hash: BridgedBlockHash, + storage_proof: sp_trie::StorageProof, + parse: impl FnOnce(bp_runtime::StorageProofChecker>) -> R, + ) -> Result { + let header = >::get(hash).ok_or(Error::::UnknownHeader)?; + let storage_proof_checker = + bp_runtime::StorageProofChecker::new(*header.state_root(), storage_proof) + .map_err(|_| Error::::StorageRootMismatch)?; + + Ok(parse(storage_proof_checker)) + } +} + +pub(crate) fn find_scheduled_change( + header: &H, +) -> Option> { + use sp_runtime::generic::OpaqueDigestItemId; + + let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); + + let filter_log = |log: ConsensusLog| match log { + ConsensusLog::ScheduledChange(change) => Some(change), + _ => None, + }; + + // find the first consensus digest with the right ID which converts to + // the right kind of consensus log. + header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) +} + +/// Checks the given header for a consensus digest signaling a **forced** scheduled change and +/// extracts it. +pub(crate) fn find_forced_change( + header: &H, +) -> Option<(H::Number, sp_finality_grandpa::ScheduledChange)> { + use sp_runtime::generic::OpaqueDigestItemId; + + let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); + + let filter_log = |log: ConsensusLog| match log { + ConsensusLog::ForcedChange(delay, change) => Some((delay, change)), + _ => None, + }; + + // find the first consensus digest with the right ID which converts to + // the right kind of consensus log. + header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) +} + +/// (Re)initialize bridge with given header for using it in `pallet-bridge-messages` benchmarks. +#[cfg(feature = "runtime-benchmarks")] +pub fn initialize_for_benchmarks, I: 'static>(header: BridgedHeader) { + initialize_bridge::(InitializationData { + header: Box::new(header), + authority_list: sp_std::vec::Vec::new(), /* we don't verify any proofs in external + * benchmarks */ + set_id: 0, + is_halted: false, + }); +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::mock::{run_test, test_header, Origin, TestHeader, TestNumber, TestRuntime}; + use bp_test_utils::{ + authority_list, make_default_justification, make_justification_for_header, + JustificationGeneratorParams, ALICE, BOB, + }; + use codec::Encode; + use frame_support::{assert_err, assert_noop, assert_ok, weights::PostDispatchInfo}; + use sp_runtime::{Digest, DigestItem, DispatchError}; + + fn initialize_substrate_bridge() { + assert_ok!(init_with_origin(Origin::root())); + } + + fn init_with_origin( + origin: Origin, + ) -> Result< + InitializationData, + sp_runtime::DispatchErrorWithPostInfo, + > { + let genesis = test_header(0); + + let init_data = InitializationData { + header: Box::new(genesis), + authority_list: authority_list(), + set_id: 1, + is_halted: false, + }; + + Pallet::::initialize(origin, init_data.clone()).map(|_| init_data) + } + + fn submit_finality_proof(header: u8) -> frame_support::dispatch::DispatchResultWithPostInfo { + let header = test_header(header.into()); + let justification = make_default_justification(&header); + + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification, + ) + } + + fn next_block() { + use frame_support::traits::OnInitialize; + + let current_number = frame_system::Pallet::::block_number(); + frame_system::Pallet::::set_block_number(current_number + 1); + let _ = Pallet::::on_initialize(current_number); + } + + fn change_log(delay: u64) -> Digest { + let consensus_log = + ConsensusLog::::ScheduledChange(sp_finality_grandpa::ScheduledChange { + next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], + delay, + }); + + Digest { logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())] } + } + + fn forced_change_log(delay: u64) -> Digest { + let consensus_log = ConsensusLog::::ForcedChange( + delay, + sp_finality_grandpa::ScheduledChange { + next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], + delay, + }, + ); + + Digest { logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())] } + } + + #[test] + fn init_root_or_owner_origin_can_initialize_pallet() { + run_test(|| { + assert_noop!(init_with_origin(Origin::signed(1)), DispatchError::BadOrigin); + assert_ok!(init_with_origin(Origin::root())); + + // Reset storage so we can initialize the pallet again + BestFinalized::::kill(); + PalletOwner::::put(2); + assert_ok!(init_with_origin(Origin::signed(2))); + }) + } + + #[test] + fn init_storage_entries_are_correctly_initialized() { + run_test(|| { + assert_eq!( + BestFinalized::::get(), + BridgedBlockHash::::default() + ); + assert_eq!(Pallet::::best_finalized(), test_header(0)); + + let init_data = init_with_origin(Origin::root()).unwrap(); + + assert!(>::contains_key(init_data.header.hash())); + assert_eq!(BestFinalized::::get(), init_data.header.hash()); + assert_eq!( + CurrentAuthoritySet::::get().authorities, + init_data.authority_list + ); + assert!(!IsHalted::::get()); + }) + } + + #[test] + fn init_can_only_initialize_pallet_once() { + run_test(|| { + initialize_substrate_bridge(); + assert_noop!( + init_with_origin(Origin::root()), + >::AlreadyInitialized + ); + }) + } + + #[test] + fn pallet_owner_may_change_owner() { + run_test(|| { + PalletOwner::::put(2); + + assert_ok!(Pallet::::set_owner(Origin::root(), Some(1))); + assert_noop!( + Pallet::::set_operational(Origin::signed(2), false), + DispatchError::BadOrigin, + ); + assert_ok!(Pallet::::set_operational(Origin::root(), false)); + + assert_ok!(Pallet::::set_owner(Origin::signed(1), None)); + assert_noop!( + Pallet::::set_operational(Origin::signed(1), true), + DispatchError::BadOrigin, + ); + assert_noop!( + Pallet::::set_operational(Origin::signed(2), true), + DispatchError::BadOrigin, + ); + assert_ok!(Pallet::::set_operational(Origin::root(), true)); + }); + } + + #[test] + fn pallet_may_be_halted_by_root() { + run_test(|| { + assert_ok!(Pallet::::set_operational(Origin::root(), false)); + assert_ok!(Pallet::::set_operational(Origin::root(), true)); + }); + } + + #[test] + fn pallet_may_be_halted_by_owner() { + run_test(|| { + PalletOwner::::put(2); + + assert_ok!(Pallet::::set_operational(Origin::signed(2), false)); + assert_ok!(Pallet::::set_operational(Origin::signed(2), true)); + + assert_noop!( + Pallet::::set_operational(Origin::signed(1), false), + DispatchError::BadOrigin, + ); + assert_noop!( + Pallet::::set_operational(Origin::signed(1), true), + DispatchError::BadOrigin, + ); + + assert_ok!(Pallet::::set_operational(Origin::signed(2), false)); + assert_noop!( + Pallet::::set_operational(Origin::signed(1), true), + DispatchError::BadOrigin, + ); + }); + } + + #[test] + fn pallet_rejects_transactions_if_halted() { + run_test(|| { + initialize_substrate_bridge(); + + assert_ok!(Pallet::::set_operational(Origin::root(), false)); + assert_noop!(submit_finality_proof(1), Error::::Halted); + + assert_ok!(Pallet::::set_operational(Origin::root(), true)); + assert_ok!(submit_finality_proof(1)); + }) + } + + #[test] + fn pallet_rejects_header_if_not_initialized_yet() { + run_test(|| { + assert_noop!(submit_finality_proof(1), Error::::NotInitialized); + }); + } + + #[test] + fn succesfully_imports_header_with_valid_finality() { + run_test(|| { + initialize_substrate_bridge(); + assert_ok!( + submit_finality_proof(1), + PostDispatchInfo { + actual_weight: None, + pays_fee: frame_support::weights::Pays::Yes, + }, + ); + + let header = test_header(1); + assert_eq!(>::get(), header.hash()); + assert!(>::contains_key(header.hash())); + }) + } + + #[test] + fn rejects_justification_that_skips_authority_set_transition() { + run_test(|| { + initialize_substrate_bridge(); + + let header = test_header(1); + + let params = + JustificationGeneratorParams:: { set_id: 2, ..Default::default() }; + let justification = make_justification_for_header(params); + + assert_err!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification, + ), + >::InvalidJustification + ); + }) + } + + #[test] + fn does_not_import_header_with_invalid_finality_proof() { + run_test(|| { + initialize_substrate_bridge(); + + let header = test_header(1); + let mut justification = make_default_justification(&header); + justification.round = 42; + + assert_err!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification, + ), + >::InvalidJustification + ); + }) + } + + #[test] + fn disallows_invalid_authority_set() { + run_test(|| { + let genesis = test_header(0); + + let invalid_authority_list = vec![(ALICE.into(), u64::MAX), (BOB.into(), u64::MAX)]; + let init_data = InitializationData { + header: Box::new(genesis), + authority_list: invalid_authority_list, + set_id: 1, + is_halted: false, + }; + + assert_ok!(Pallet::::initialize(Origin::root(), init_data)); + + let header = test_header(1); + let justification = make_default_justification(&header); + + assert_err!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification, + ), + >::InvalidAuthoritySet + ); + }) + } + + #[test] + fn importing_header_ensures_that_chain_is_extended() { + run_test(|| { + initialize_substrate_bridge(); + + assert_ok!(submit_finality_proof(4)); + assert_err!(submit_finality_proof(3), Error::::OldHeader); + assert_ok!(submit_finality_proof(5)); + }) + } + + #[test] + fn importing_header_enacts_new_authority_set() { + run_test(|| { + initialize_substrate_bridge(); + + let next_set_id = 2; + let next_authorities = vec![(ALICE.into(), 1), (BOB.into(), 1)]; + + // Need to update the header digest to indicate that our header signals an authority set + // change. The change will be enacted when we import our header. + let mut header = test_header(2); + header.digest = change_log(0); + + // Create a valid justification for the header + let justification = make_default_justification(&header); + + // Let's import our test header + assert_ok!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header.clone()), + justification + ), + PostDispatchInfo { + actual_weight: None, + pays_fee: frame_support::weights::Pays::No, + }, + ); + + // Make sure that our header is the best finalized + assert_eq!(>::get(), header.hash()); + assert!(>::contains_key(header.hash())); + + // Make sure that the authority set actually changed upon importing our header + assert_eq!( + >::get(), + bp_header_chain::AuthoritySet::new(next_authorities, next_set_id), + ); + }) + } + + #[test] + fn importing_header_rejects_header_with_scheduled_change_delay() { + run_test(|| { + initialize_substrate_bridge(); + + // Need to update the header digest to indicate that our header signals an authority set + // change. However, the change doesn't happen until the next block. + let mut header = test_header(2); + header.digest = change_log(1); + + // Create a valid justification for the header + let justification = make_default_justification(&header); + + // Should not be allowed to import this header + assert_err!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification + ), + >::UnsupportedScheduledChange + ); + }) + } + + #[test] + fn importing_header_rejects_header_with_forced_changes() { + run_test(|| { + initialize_substrate_bridge(); + + // Need to update the header digest to indicate that it signals a forced authority set + // change. + let mut header = test_header(2); + header.digest = forced_change_log(0); + + // Create a valid justification for the header + let justification = make_default_justification(&header); + + // Should not be allowed to import this header + assert_err!( + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + justification + ), + >::UnsupportedScheduledChange + ); + }) + } + + #[test] + fn parse_finalized_storage_proof_rejects_proof_on_unknown_header() { + run_test(|| { + assert_noop!( + Pallet::::parse_finalized_storage_proof( + Default::default(), + sp_trie::StorageProof::new(vec![]), + |_| (), + ), + Error::::UnknownHeader, + ); + }); + } + + #[test] + fn parse_finalized_storage_accepts_valid_proof() { + run_test(|| { + let (state_root, storage_proof) = bp_runtime::craft_valid_storage_proof(); + + let mut header = test_header(2); + header.set_state_root(state_root); + + let hash = header.hash(); + >::put(hash); + >::insert(hash, header); + + assert_ok!( + Pallet::::parse_finalized_storage_proof(hash, storage_proof, |_| (),), + (), + ); + }); + } + + #[test] + fn rate_limiter_disallows_imports_once_limit_is_hit_in_single_block() { + run_test(|| { + initialize_substrate_bridge(); + + assert_ok!(submit_finality_proof(1)); + assert_ok!(submit_finality_proof(2)); + assert_err!(submit_finality_proof(3), >::TooManyRequests); + }) + } + + #[test] + fn rate_limiter_invalid_requests_do_not_count_towards_request_count() { + run_test(|| { + let submit_invalid_request = || { + let header = test_header(1); + let mut invalid_justification = make_default_justification(&header); + invalid_justification.round = 42; + + Pallet::::submit_finality_proof( + Origin::signed(1), + Box::new(header), + invalid_justification, + ) + }; + + initialize_substrate_bridge(); + + for _ in 0..::MaxRequests::get() + 1 { + // Notice that the error here *isn't* `TooManyRequests` + assert_err!(submit_invalid_request(), >::InvalidJustification); + } + + // Can still submit `MaxRequests` requests afterwards + assert_ok!(submit_finality_proof(1)); + assert_ok!(submit_finality_proof(2)); + assert_err!(submit_finality_proof(3), >::TooManyRequests); + }) + } + + #[test] + fn rate_limiter_allows_request_after_new_block_has_started() { + run_test(|| { + initialize_substrate_bridge(); + assert_ok!(submit_finality_proof(1)); + assert_ok!(submit_finality_proof(2)); + + next_block(); + assert_ok!(submit_finality_proof(3)); + }) + } + + #[test] + fn rate_limiter_disallows_imports_once_limit_is_hit_across_different_blocks() { + run_test(|| { + initialize_substrate_bridge(); + assert_ok!(submit_finality_proof(1)); + assert_ok!(submit_finality_proof(2)); + + next_block(); + assert_ok!(submit_finality_proof(3)); + assert_err!(submit_finality_proof(4), >::TooManyRequests); + }) + } + + #[test] + fn rate_limiter_allows_max_requests_after_long_time_with_no_activity() { + run_test(|| { + initialize_substrate_bridge(); + assert_ok!(submit_finality_proof(1)); + assert_ok!(submit_finality_proof(2)); + + next_block(); + next_block(); + + next_block(); + assert_ok!(submit_finality_proof(5)); + assert_ok!(submit_finality_proof(7)); + }) + } + + #[test] + fn should_prune_headers_over_headers_to_keep_parameter() { + run_test(|| { + initialize_substrate_bridge(); + assert_ok!(submit_finality_proof(1)); + let first_header = Pallet::::best_finalized(); + next_block(); + + assert_ok!(submit_finality_proof(2)); + next_block(); + assert_ok!(submit_finality_proof(3)); + next_block(); + assert_ok!(submit_finality_proof(4)); + next_block(); + assert_ok!(submit_finality_proof(5)); + next_block(); + + assert_ok!(submit_finality_proof(6)); + + assert!( + !Pallet::::is_known_header(first_header.hash()), + "First header should be pruned." + ); + }) + } +} diff --git a/modules/grandpa/src/mock.rs b/modules/grandpa/src/mock.rs new file mode 100644 index 000000000000..f8b5e269323f --- /dev/null +++ b/modules/grandpa/src/mock.rs @@ -0,0 +1,118 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +// From construct_runtime macro +#![allow(clippy::from_over_into)] + +use bp_runtime::Chain; +use frame_support::{construct_runtime, parameter_types, weights::Weight}; +use sp_core::sr25519::Signature; +use sp_runtime::{ + testing::{Header, H256}, + traits::{BlakeTwo256, IdentityLookup}, + Perbill, +}; + +pub type AccountId = u64; +pub type TestHeader = crate::BridgedHeader; +pub type TestNumber = crate::BridgedBlockNumber; + +type Block = frame_system::mocking::MockBlock; +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + +use crate as grandpa; + +construct_runtime! { + pub enum TestRuntime where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Grandpa: grandpa::{Pallet}, + } +} + +parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); +} + +impl frame_system::Config for TestRuntime { + type Origin = Origin; + type Index = u64; + type Call = Call; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = (); + type OnNewAccount = (); + type OnKilledAccount = (); + type BaseCallFilter = frame_support::traits::Everything; + type SystemWeightInfo = (); + type DbWeight = (); + type BlockWeights = (); + type BlockLength = (); + type SS58Prefix = (); + type OnSetCode = (); +} + +parameter_types! { + pub const MaxRequests: u32 = 2; + pub const HeadersToKeep: u32 = 5; + pub const SessionLength: u64 = 5; + pub const NumValidators: u32 = 5; +} + +impl grandpa::Config for TestRuntime { + type BridgedChain = TestBridgedChain; + type MaxRequests = MaxRequests; + type HeadersToKeep = HeadersToKeep; + type WeightInfo = (); +} + +#[derive(Debug)] +pub struct TestBridgedChain; + +impl Chain for TestBridgedChain { + type BlockNumber = ::BlockNumber; + type Hash = ::Hash; + type Hasher = ::Hashing; + type Header = ::Header; + + type AccountId = AccountId; + type Balance = u64; + type Index = u64; + type Signature = Signature; +} + +pub fn run_test(test: impl FnOnce() -> T) -> T { + sp_io::TestExternalities::new(Default::default()).execute_with(test) +} + +pub fn test_header(num: TestNumber) -> TestHeader { + // We wrap the call to avoid explicit type annotations in our tests + bp_test_utils::test_header(num) +} diff --git a/modules/grandpa/src/weights.rs b/modules/grandpa/src/weights.rs new file mode 100644 index 000000000000..c0cce2c5258d --- /dev/null +++ b/modules/grandpa/src/weights.rs @@ -0,0 +1,75 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Autogenerated weights for `pallet_bridge_grandpa` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 +//! DATE: 2021-06-03, STEPS: [50, ], REPEAT: 20 +//! LOW RANGE: [], HIGH RANGE: [] +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled +//! CHAIN: Some("dev"), DB CACHE: 128 + +// Executed Command: +// target/release/rialto-bridge-node +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bridge_grandpa +// --extrinsic=* +// --execution=wasm +// --wasm-execution=Compiled +// --heap-pages=4096 +// --output=./modules/grandpa/src/weights.rs +// --template=./.maintain/rialto-weight-template.hbs + +#![allow(clippy::all)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{ + traits::Get, + weights::{constants::RocksDbWeight, Weight}, +}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for `pallet_bridge_grandpa`. +pub trait WeightInfo { + fn submit_finality_proof(p: u32, v: u32) -> Weight; +} + +/// Weights for `pallet_bridge_grandpa` using the Rialto node and recommended hardware. +pub struct RialtoWeight(PhantomData); +impl WeightInfo for RialtoWeight { + fn submit_finality_proof(p: u32, v: u32) -> Weight { + (0 as Weight) + .saturating_add((59_692_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((6_876_000 as Weight).saturating_mul(v as Weight)) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + fn submit_finality_proof(p: u32, v: u32) -> Weight { + (0 as Weight) + .saturating_add((59_692_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((6_876_000 as Weight).saturating_mul(v as Weight)) + .saturating_add(RocksDbWeight::get().reads(7 as Weight)) + .saturating_add(RocksDbWeight::get().writes(6 as Weight)) + } +} diff --git a/modules/messages/Cargo.toml b/modules/messages/Cargo.toml new file mode 100644 index 000000000000..6d52b899ea2b --- /dev/null +++ b/modules/messages/Cargo.toml @@ -0,0 +1,57 @@ +[package] +name = "pallet-bridge-messages" +description = "Module that allows bridged chains to exchange messages using lane concept." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +bitvec = { version = "0.20", default-features = false, features = ["alloc"] } +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +log = { version = "0.4.14", default-features = false } +num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0.101", optional = true, features = ["derive"] } + +# Bridge dependencies + +bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } +bp-messages = { path = "../../primitives/messages", default-features = false } +bp-runtime = { path = "../../primitives/runtime", default-features = false } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +hex = "0.4" +hex-literal = "0.3" +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "bp-message-dispatch/std", + "bp-messages/std", + "bp-runtime/std", + "codec/std", + "frame-support/std", + "frame-system/std", + "log/std", + "num-traits/std", + "scale-info/std", + "serde", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", +] +runtime-benchmarks = [ + "frame-benchmarking", +] diff --git a/modules/messages/README.md b/modules/messages/README.md new file mode 100644 index 000000000000..062a966fad70 --- /dev/null +++ b/modules/messages/README.md @@ -0,0 +1,425 @@ +# Messages Module + +The messages module is used to deliver messages from source chain to target chain. Message is +(almost) opaque to the module and the final goal is to hand message to the message dispatch +mechanism. + +## Contents +- [Overview](#overview) +- [Message Workflow](#message-workflow) +- [Integrating Message Lane Module into Runtime](#integrating-messages-module-into-runtime) +- [Non-Essential Functionality](#non-essential-functionality) +- [Weights of Module Extrinsics](#weights-of-module-extrinsics) + +## Overview + +Message lane is an unidirectional channel, where messages are sent from source chain to the target +chain. At the same time, a single instance of messages module supports both outbound lanes and +inbound lanes. So the chain where the module is deployed (this chain), may act as a source chain for +outbound messages (heading to a bridged chain) and as a target chain for inbound messages (coming +from a bridged chain). + +Messages module supports multiple message lanes. Every message lane is identified with a 4-byte +identifier. Messages sent through the lane are assigned unique (for this lane) increasing integer +value that is known as nonce ("number that can only be used once"). Messages that are sent over the +same lane are guaranteed to be delivered to the target chain in the same order they're sent from +the source chain. In other words, message with nonce `N` will be delivered right before delivering a +message with nonce `N+1`. + +Single message lane may be seen as a transport channel for single application (onchain, offchain or +mixed). At the same time the module itself never dictates any lane or message rules. In the end, it +is the runtime developer who defines what message lane and message mean for this runtime. + +## Message Workflow + +The message "appears" when its submitter calls the `send_message()` function of the module. The +submitter specifies the lane that he's willing to use, the message itself and the fee that he's +willing to pay for the message delivery and dispatch. If a message passes all checks, the nonce is +assigned and the message is stored in the module storage. The message is in an "undelivered" state +now. + +We assume that there are external, offchain actors, called relayers, that are submitting module +related transactions to both target and source chains. The pallet itself has no assumptions about +relayers incentivization scheme, but it has some callbacks for paying rewards. See +[Integrating Messages Module into runtime](#Integrating-Messages-Module-into-runtime) +for details. + +Eventually, some relayer would notice this message in the "undelivered" state and it would decide to +deliver this message. Relayer then crafts `receive_messages_proof()` transaction (aka delivery +transaction) for the messages module instance, deployed at the target chain. Relayer provides +his account id at the source chain, the proof of message (or several messages), the number of +messages in the transaction and their cumulative dispatch weight. Once a transaction is mined, the +message is considered "delivered". + +Once a message is delivered, the relayer may want to confirm delivery back to the source chain. +There are two reasons why he would want to do that. The first is that we intentionally limit number +of "delivered", but not yet "confirmed" messages at inbound lanes +(see [What about other Constants in the Messages Module Configuration Trait](#What-about-other-Constants-in-the-Messages-Module-Configuration-Trait) for explanation). +So at some point, the target chain may stop accepting new messages until relayers confirm some of +these. The second is that if the relayer wants to be rewarded for delivery, he must prove the fact +that he has actually delivered the message. And this proof may only be generated after the delivery +transaction is mined. So relayer crafts the `receive_messages_delivery_proof()` transaction (aka +confirmation transaction) for the messages module instance, deployed at the source chain. Once +this transaction is mined, the message is considered "confirmed". + +The "confirmed" state is the final state of the message. But there's one last thing related to the +message - the fact that it is now "confirmed" and reward has been paid to the relayer (or at least +callback for this has been called), must be confirmed to the target chain. Otherwise, we may reach +the limit of "unconfirmed" messages at the target chain and it will stop accepting new messages. So +relayer sometimes includes a nonce of the latest "confirmed" message in the next +`receive_messages_proof()` transaction, proving that some messages have been confirmed. + +## Integrating Messages Module into Runtime + +As it has been said above, the messages module supports both outbound and inbound message lanes. +So if we will integrate a module in some runtime, it may act as the source chain runtime for +outbound messages and as the target chain runtime for inbound messages. In this section, we'll +sometimes refer to the chain we're currently integrating with, as this chain and the other chain as +bridged chain. + +Messages module doesn't simply accept transactions that are claiming that the bridged chain has +some updated data for us. Instead of this, the module assumes that the bridged chain is able to +prove that updated data in some way. The proof is abstracted from the module and may be of any kind. +In our Substrate-to-Substrate bridge we're using runtime storage proofs. Other bridges may use +transaction proofs, Substrate header digests or anything else that may be proved. + +**IMPORTANT NOTE**: everything below in this chapter describes details of the messages module +configuration. But if you interested in well-probed and relatively easy integration of two +Substrate-based chains, you may want to look at the +[bridge-runtime-common](../../bin/runtime-common/README.md) crate. This crate is providing a lot of +helpers for integration, which may be directly used from within your runtime. Then if you'll decide +to change something in this scheme, get back here for detailed information. + +### General Information + +The messages module supports instances. Every module instance is supposed to bridge this chain +and some bridged chain. To bridge with another chain, using another instance is suggested (this +isn't forced anywhere in the code, though). + +Message submitters may track message progress by inspecting module events. When Message is accepted, +the `MessageAccepted` event is emitted in the `send_message()` transaction. The event contains both +message lane identifier and nonce that has been assigned to the message. When a message is delivered +to the target chain, the `MessagesDelivered` event is emitted from the +`receive_messages_delivery_proof()` transaction. The `MessagesDelivered` contains the message lane +identifier, inclusive range of delivered message nonces and their single-bit dispatch results. + +Please note that the meaning of the 'dispatch result' is determined by the message dispatcher at +the target chain. For example, in case of immediate call dispatcher it will be the `true` if call +has been successfully dispatched and `false` if it has only been delivered. This simple mechanism +built into the messages module allows building basic bridge applications, which only care whether +their messages have been successfully dispatched or not. More sophisticated applications may use +their own dispatch result delivery mechanism to deliver something larger than single bit. + +### How to plug-in Messages Module to Send Messages to the Bridged Chain? + +The `pallet_bridge_messages::Config` trait has 3 main associated types that are used to work with +outbound messages. The `pallet_bridge_messages::Config::TargetHeaderChain` defines how we see the +bridged chain as the target for our outbound messages. It must be able to check that the bridged +chain may accept our message - like that the message has size below maximal possible transaction +size of the chain and so on. And when the relayer sends us a confirmation transaction, this +implementation must be able to parse and verify the proof of messages delivery. Normally, you would +reuse the same (configurable) type on all chains that are sending messages to the same bridged +chain. + +The `pallet_bridge_messages::Config::LaneMessageVerifier` defines a single callback to verify outbound +messages. The simplest callback may just accept all messages. But in this case you'll need to answer +many questions first. Who will pay for the delivery and confirmation transaction? Are we sure that +someone will ever deliver this message to the bridged chain? Are we sure that we don't bloat our +runtime storage by accepting this message? What if the message is improperly encoded or has some +fields set to invalid values? Answering all those (and similar) questions would lead to correct +implementation. + +There's another thing to consider when implementing type for use in +`pallet_bridge_messages::Config::LaneMessageVerifier`. It is whether we treat all message lanes +identically, or they'll have different sets of verification rules? For example, you may reserve +lane#1 for messages coming from some 'wrapped-token' pallet - then you may verify in your +implementation that the origin is associated with this pallet. Lane#2 may be reserved for 'system' +messages and you may charge zero fee for such messages. You may have some rate limiting for messages +sent over the lane#3. Or you may just verify the same rules set for all outbound messages - it is +all up to the `pallet_bridge_messages::Config::LaneMessageVerifier` implementation. + +The last type is the `pallet_bridge_messages::Config::MessageDeliveryAndDispatchPayment`. When all +checks are made and we have decided to accept the message, we're calling the +`pay_delivery_and_dispatch_fee()` callback, passing the corresponding argument of the `send_message` +function. Later, when message delivery is confirmed, we're calling `pay_relayers_rewards()` +callback, passing accounts of relayers and messages that they have delivered. The simplest +implementation of this trait is in the [`instant_payments.rs`](./src/instant_payments.rs) module and +simply calls `Currency::transfer()` when those callbacks are called. So `Currency` units are +transferred between submitter, 'relayers fund' and relayers accounts. Other implementations may use +more or less sophisticated techniques - the whole relayers incentivization scheme is not a part of +the messages module. + +### I have a Messages Module in my Runtime, but I Want to Reject all Outbound Messages. What shall I do? + +You should be looking at the `bp_messages::source_chain::ForbidOutboundMessages` structure +[`bp_messages::source_chain`](../../primitives/messages/src/source_chain.rs). It implements +all required traits and will simply reject all transactions, related to outbound messages. + +### How to plug-in Messages Module to Receive Messages from the Bridged Chain? + +The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with +inbound messages. The `pallet_bridge_messages::Config::SourceHeaderChain` defines how we see the +bridged chain as the source or our inbound messages. When relayer sends us a delivery transaction, +this implementation must be able to parse and verify the proof of messages wrapped in this +transaction. Normally, you would reuse the same (configurable) type on all chains that are sending +messages to the same bridged chain. + +The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered +messages. Apart from actually dispatching the message, the implementation must return the correct +dispatch weight of the message before dispatch is called. + +### I have a Messages Module in my Runtime, but I Want to Reject all Inbound Messages. What +shall I do? + +You should be looking at the `bp_messages::target_chain::ForbidInboundMessages` structure from +the [`bp_messages::target_chain`](../../primitives/messages/src/target_chain.rs) module. It +implements all required traits and will simply reject all transactions, related to inbound messages. + +### What about other Constants in the Messages Module Configuration Trait? + +Message is being stored in the source chain storage until its delivery will be confirmed. After +that, we may safely remove the message from the storage. Lane messages are removed (pruned) when +someone sends a new message using the same lane. So the message submitter pays for that pruning. To +avoid pruning too many messages in a single transaction, there's +`pallet_bridge_messages::Config::MaxMessagesToPruneAtOnce` configuration parameter. We will never prune +more than this number of messages in the single transaction. That said, the value should not be too +big to avoid waste of resources when there are no messages to prune. + +To be able to reward the relayer for delivering messages, we store a map of message nonces range => +identifier of the relayer that has delivered this range at the target chain runtime storage. If a +relayer delivers multiple consequent ranges, they're merged into single entry. So there may be more +than one entry for the same relayer. Eventually, this whole map must be delivered back to the source +chain to confirm delivery and pay rewards. So to make sure we are able to craft this confirmation +transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure that +the weight of processing this map is below a certain limit. Both size and processing weight mostly +depend on the number of entries. The number of entries is limited with the +`pallet_bridge_messages::ConfigMaxUnrewardedRelayerEntriesAtInboundLane` parameter. Processing weight +also depends on the total number of messages that are being confirmed, because every confirmed +message needs to be read. So there's another +`pallet_bridge_messages::Config::MaxUnconfirmedMessagesAtInboundLane` parameter for that. + +When choosing values for these parameters, you must also keep in mind that if proof in your scheme +is based on finality of headers (and it is the most obvious option for Substrate-based chains with +finality notion), then choosing too small values for these parameters may cause significant delays +in message delivery. That's because there are too many actors involved in this scheme: 1) authorities +that are finalizing headers of the target chain need to finalize header with non-empty map; 2) the +headers relayer then needs to submit this header and its finality proof to the source chain; 3) the +messages relayer must then send confirmation transaction (storage proof of this map) to the source +chain; 4) when the confirmation transaction will be mined at some header, source chain authorities +must finalize this header; 5) the headers relay then needs to submit this header and its finality +proof to the target chain; 6) only now the messages relayer may submit new messages from the source +to target chain and prune the entry from the map. + +Delivery transaction requires the relayer to provide both number of entries and total number of +messages in the map. This means that the module never charges an extra cost for delivering a map - +the relayer would need to pay exactly for the number of entries+messages it has delivered. So the +best guess for values of these parameters would be the pair that would occupy `N` percent of the +maximal transaction size and weight of the source chain. The `N` should be large enough to process +large maps, at the same time keeping reserve for future source chain upgrades. + +## Non-Essential Functionality + +Apart from the message related calls, the module exposes a set of auxiliary calls. They fall in two +groups, described in the next two paragraphs. + +There may be a special account in every runtime where the messages module is deployed. This +account, named 'module owner', is like a module-level sudo account - he's able to halt all and +result all module operations without requiring runtime upgrade. The module may have no message +owner, but we suggest to use it at least for initial deployment. To calls that are related to this +account are: +- `fn set_owner()`: current module owner may call it to transfer "ownership" to another account; +- `fn halt_operations()`: the module owner (or sudo account) may call this function to stop all + module operations. After this call, all message-related transactions will be rejected until + further `resume_operations` call'. This call may be used when something extraordinary happens with + the bridge; +- `fn resume_operations()`: module owner may call this function to resume bridge operations. The + module will resume its regular operations after this call. + +Apart from halting and resuming the bridge, the module owner may also tune module configuration +parameters without runtime upgrades. The set of parameters needs to be designed in advance, though. +The module configuration trait has associated `Parameter` type, which may be e.g. enum and represent +a set of parameters that may be updated by the module owner. For example, if your bridge needs to +convert sums between different tokens, you may define a 'conversion rate' parameter and let the +module owner update this parameter when there are significant changes in the rate. The corresponding +module call is `fn update_pallet_parameter()`. + +## Weights of Module Extrinsics + +The main assumptions behind weight formulas is: +- all possible costs are paid in advance by the message submitter; +- whenever possible, relayer tries to minimize cost of its transactions. So e.g. even though sender + always pays for delivering outbound lane state proof, relayer may not include it in the delivery + transaction (unless messages module on target chain requires that); +- weight formula should incentivize relayer to not to submit any redundant data in the extrinsics + arguments; +- the extrinsic shall never be executing slower (i.e. has larger actual weight) than defined by the + formula. + +### Weight of `send_message` call + +#### Related benchmarks + +| Benchmark | Description | +|-----------------------------------|-----------------------------------------------------| +`send_minimal_message_worst_case` | Sends 0-size message with worst possible conditions | +`send_1_kb_message_worst_case` | Sends 1KB-size message with worst possible conditions | +`send_16_kb_message_worst_case` | Sends 16KB-size message with worst possible conditions | + +#### Weight formula + +The weight formula is: +``` +Weight = BaseWeight + MessageSizeInKilobytes * MessageKiloByteSendWeight +``` + +Where: + +| Component | How it is computed? | Description | +|-----------------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| +| `SendMessageOverhead` | `send_minimal_message_worst_case` | Weight of sending minimal (0 bytes) message | +| `MessageKiloByteSendWeight` | `(send_16_kb_message_worst_case - send_1_kb_message_worst_case)/15` | Weight of sending every additional kilobyte of the message | + +### Weight of `receive_messages_proof` call + +#### Related benchmarks + +| Benchmark | Description* | +|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| `receive_single_message_proof` | Receives proof of single `EXPECTED_DEFAULT_MESSAGE_LENGTH` message | +| `receive_two_messages_proof` | Receives proof of two identical `EXPECTED_DEFAULT_MESSAGE_LENGTH` messages | +| `receive_single_message_proof_with_outbound_lane_state` | Receives proof of single `EXPECTED_DEFAULT_MESSAGE_LENGTH` message and proof of outbound lane state at the source chain | +| `receive_single_message_proof_1_kb` | Receives proof of single message. The proof has size of approximately 1KB** | +| `receive_single_message_proof_16_kb` | Receives proof of single message. The proof has size of approximately 16KB** | + +*\* - In all benchmarks all received messages are dispatched and their dispatch cost is near to zero* + +*\*\* - Trie leafs are assumed to have minimal values. The proof is derived from the minimal proof +by including more trie nodes. That's because according to `receive_message_proofs_with_large_leaf` +and `receive_message_proofs_with_extra_nodes` benchmarks, increasing proof by including more nodes +has slightly larger impact on performance than increasing values stored in leafs*. + +#### Weight formula + +The weight formula is: +``` +Weight = BaseWeight + OutboundStateDeliveryWeight + + MessagesCount * MessageDeliveryWeight + + MessagesDispatchWeight + + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight +``` + +Where: + +| Component | How it is computed? | Description | +|-------------------------------|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `BaseWeight` | `2*receive_single_message_proof - receive_two_messages_proof` | Weight of receiving and parsing minimal proof | +| `OutboundStateDeliveryWeight` | `receive_single_message_proof_with_outbound_lane_state - receive_single_message_proof` | Additional weight when proof includes outbound lane state | +| `MessageDeliveryWeight` | `receive_two_messages_proof - receive_single_message_proof` | Weight of of parsing and dispatching (without actual dispatch cost) of every message | +| `MessagesCount` | | Provided by relayer | +| `MessagesDispatchWeight` | | Provided by relayer | +| `ActualProofSize` | | Provided by relayer | +| `ExpectedProofSize` | `EXPECTED_DEFAULT_MESSAGE_LENGTH * MessagesCount + EXTRA_STORAGE_PROOF_SIZE` | Size of proof that we are expecting. This only includes `EXTRA_STORAGE_PROOF_SIZE` once, because we assume that intermediate nodes likely to be included in the proof only once. This may be wrong, but since weight of processing proof with many nodes is almost equal to processing proof with large leafs, additional cost will be covered because we're charging for extra proof bytes anyway | +| `ProofByteDeliveryWeight` | `(receive_single_message_proof_16_kb - receive_single_message_proof_1_kb) / (15 * 1024)` | Weight of processing every additional proof byte over `ExpectedProofSize` limit | + +#### Why for every message sent using `send_message` we will be able to craft `receive_messages_proof` transaction? + +We have following checks in `send_message` transaction on the source chain: +- message size should be less than or equal to `2/3` of maximal extrinsic size on the target chain; +- message dispatch weight should be less than or equal to the `1/2` of maximal extrinsic dispatch + weight on the target chain. + +Delivery transaction is an encoded delivery call and signed extensions. So we have `1/3` of maximal +extrinsic size reserved for: +- storage proof, excluding the message itself. Currently, on our test chains, the overhead is always + within `EXTRA_STORAGE_PROOF_SIZE` limits (1024 bytes); +- signed extras and other call arguments (`relayer_id: SourceChain::AccountId`, `messages_count: + u32`, `dispatch_weight: u64`). + +On Millau chain, maximal extrinsic size is `0.75 * 2MB`, so `1/3` is `512KB` (`524_288` bytes). This +should be enough to cover these extra arguments and signed extensions. + +Let's exclude message dispatch cost from single message delivery transaction weight formula: +``` +Weight = BaseWeight + OutboundStateDeliveryWeight + MessageDeliveryWeight + + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight +``` + +So we have `1/2` of maximal extrinsic weight to cover these components. `BaseWeight`, +`OutboundStateDeliveryWeight` and `MessageDeliveryWeight` are determined using benchmarks and are +hardcoded into runtime. Adequate relayer would only include required trie nodes into the proof. So +if message size would be maximal (`2/3` of `MaximalExtrinsicSize`), then the extra proof size would +be `MaximalExtrinsicSize / 3 * 2 - EXPECTED_DEFAULT_MESSAGE_LENGTH`. + +Both conditions are verified by `pallet_bridge_messages::ensure_weights_are_correct` and +`pallet_bridge_messages::ensure_able_to_receive_messages` functions, which must be called from every +runtime's tests. + +#### Post-dispatch weight refunds of the `receive_messages_proof` call + +Weight formula of the `receive_messages_proof` call assumes that the dispatch fee of every message is +paid at the target chain (where call is executed), that every message will be dispatched and that +dispatch weight of the message will be exactly the weight that is returned from the +`MessageDispatch::dispatch_weight` method call. This isn't true for all messages, so the call returns +actual weight used to dispatch messages. + +This actual weight is the weight, returned by the weight formula, minus: +- the weight of undispatched messages, if we have failed to dispatch because of different issues; +- the unspent dispatch weight if the declared weight of some messages is less than their actual post-dispatch weight; +- the pay-dispatch-fee weight for every message that had dispatch fee paid at the source chain. + +The last component is computed as a difference between two benchmarks results - the `receive_single_message_proof` +benchmark (that assumes that the fee is paid during dispatch) and the `receive_single_prepaid_message_proof` +(that assumes that the dispatch fee is already paid). + +### Weight of `receive_messages_delivery_proof` call + +#### Related benchmarks + +| Benchmark | Description | +|-------------------------------------------------------------|------------------------------------------------------------------------------------------| +| `receive_delivery_proof_for_single_message` | Receives proof of single message delivery | +| `receive_delivery_proof_for_two_messages_by_single_relayer` | Receives proof of two messages delivery. Both messages are delivered by the same relayer | +| `receive_delivery_proof_for_two_messages_by_two_relayers` | Receives proof of two messages delivery. Messages are delivered by different relayers | + +#### Weight formula + +The weight formula is: +``` +Weight = BaseWeight + MessagesCount * MessageConfirmationWeight + + RelayersCount * RelayerRewardWeight + + Max(0, ActualProofSize - ExpectedProofSize) * ProofByteDeliveryWeight + + MessagesCount * (DbReadWeight + DbWriteWeight) +``` + +Where: + +| Component | How it is computed? | Description | +|---------------------------|-----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `BaseWeight` | `2*receive_delivery_proof_for_single_message - receive_delivery_proof_for_two_messages_by_single_relayer` | Weight of receiving and parsing minimal delivery proof | +| `MessageDeliveryWeight` | `receive_delivery_proof_for_two_messages_by_single_relayer - receive_delivery_proof_for_single_message` | Weight of confirming every additional message | +| `MessagesCount` | | Provided by relayer | +| `RelayerRewardWeight` | `receive_delivery_proof_for_two_messages_by_two_relayers - receive_delivery_proof_for_two_messages_by_single_relayer` | Weight of rewarding every additional relayer | +| `RelayersCount` | | Provided by relayer | +| `ActualProofSize` | | Provided by relayer | +| `ExpectedProofSize` | `EXTRA_STORAGE_PROOF_SIZE` | Size of proof that we are expecting | +| `ProofByteDeliveryWeight` | `(receive_single_message_proof_16_kb - receive_single_message_proof_1_kb) / (15 * 1024)` | Weight of processing every additional proof byte over `ExpectedProofSize` limit. We're using the same formula, as for message delivery, because proof mechanism is assumed to be the same in both cases | + +#### Post-dispatch weight refunds of the `receive_messages_delivery_proof` call + +Weight formula of the `receive_messages_delivery_proof` call assumes that all messages in the proof +are actually delivered (so there are no already confirmed messages) and every messages is processed +by the `OnDeliveryConfirmed` callback. This means that for every message, we're adding single db read +weight and single db write weight. If, by some reason, messages are not processed by the +`OnDeliveryConfirmed` callback, or their processing is faster than that additional weight, the +difference is refunded to the submitter. + +#### Why we're always able to craft `receive_messages_delivery_proof` transaction? + +There can be at most `::MaxUnconfirmedMessagesAtInboundLane` +messages and at most +`::MaxUnrewardedRelayerEntriesAtInboundLane` unrewarded +relayers in the single delivery confirmation transaction. + +We're checking that this transaction may be crafted in the +`pallet_bridge_messages::ensure_able_to_receive_confirmation` function, which must be called from every +runtime' tests. diff --git a/modules/messages/src/benchmarking.rs b/modules/messages/src/benchmarking.rs new file mode 100644 index 000000000000..788ccc070310 --- /dev/null +++ b/modules/messages/src/benchmarking.rs @@ -0,0 +1,951 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Messages pallet benchmarking. + +use crate::{ + inbound_lane::InboundLaneStorage, inbound_lane_storage, outbound_lane, + outbound_lane::ReceivalConfirmationResult, weights_ext::EXPECTED_DEFAULT_MESSAGE_LENGTH, Call, +}; + +use bp_messages::{ + source_chain::TargetHeaderChain, target_chain::SourceHeaderChain, DeliveredMessages, + InboundLaneData, LaneId, MessageData, MessageNonce, OutboundLaneData, UnrewardedRelayer, + UnrewardedRelayersState, +}; +use bp_runtime::messages::DispatchFeePayment; +use frame_benchmarking::{account, benchmarks_instance_pallet}; +use frame_support::{traits::Get, weights::Weight}; +use frame_system::RawOrigin; +use sp_std::{ + collections::{btree_map::BTreeMap, vec_deque::VecDeque}, + convert::TryInto, + ops::RangeInclusive, + prelude::*, +}; + +/// Fee paid by submitter for single message delivery. +pub const MESSAGE_FEE: u64 = 100_000_000_000; + +const SEED: u32 = 0; + +/// Pallet we're benchmarking here. +pub struct Pallet, I: 'static>(crate::Pallet); + +/// Proof size requirements. +pub enum ProofSize { + /// The proof is expected to be minimal. If value size may be changed, then it is expected to + /// have given size. + Minimal(u32), + /// The proof is expected to have at least given size and grow by increasing number of trie + /// nodes included in the proof. + HasExtraNodes(u32), + /// The proof is expected to have at least given size and grow by increasing value that is + /// stored in the trie. + HasLargeLeaf(u32), +} + +/// Benchmark-specific message parameters. +pub struct MessageParams { + /// Size of the message payload. + pub size: u32, + /// Message sender account. + pub sender_account: ThisAccountId, +} + +/// Benchmark-specific message proof parameters. +pub struct MessageProofParams { + /// Id of the lane. + pub lane: LaneId, + /// Range of messages to include in the proof. + pub message_nonces: RangeInclusive, + /// If `Some`, the proof needs to include this outbound lane data. + pub outbound_lane_data: Option, + /// Proof size requirements. + pub size: ProofSize, + /// Where the fee for dispatching message is paid? + pub dispatch_fee_payment: DispatchFeePayment, +} + +/// Benchmark-specific message delivery proof parameters. +pub struct MessageDeliveryProofParams { + /// Id of the lane. + pub lane: LaneId, + /// The proof needs to include this inbound lane data. + pub inbound_lane_data: InboundLaneData, + /// Proof size requirements. + pub size: ProofSize, +} + +/// Trait that must be implemented by runtime. +pub trait Config: crate::Config { + /// Lane id to use in benchmarks. + fn bench_lane_id() -> LaneId { + Default::default() + } + /// Get maximal size of the message payload. + fn maximal_message_size() -> u32; + /// Return id of relayer account at the bridged chain. + fn bridged_relayer_id() -> Self::InboundRelayer; + /// Return balance of given account. + fn account_balance(account: &Self::AccountId) -> Self::OutboundMessageFee; + /// Create given account and give it enough balance for test purposes. + fn endow_account(account: &Self::AccountId); + /// Prepare message to send over lane. + fn prepare_outbound_message( + params: MessageParams, + ) -> (Self::OutboundPayload, Self::OutboundMessageFee); + /// Prepare messages proof to receive by the module. + fn prepare_message_proof( + params: MessageProofParams, + ) -> ( + >::MessagesProof, + Weight, + ); + /// Prepare messages delivery proof to receive by the module. + fn prepare_message_delivery_proof( + params: MessageDeliveryProofParams, + ) -> >::MessagesDeliveryProof; + /// Returns true if message has been dispatched (either successfully or not). + fn is_message_dispatched(nonce: MessageNonce) -> bool; +} + +benchmarks_instance_pallet! { + // + // Benchmarks that are used directly by the runtime. + // + + // Benchmark `send_message` extrinsic with the worst possible conditions: + // * outbound lane already has state, so it needs to be read and decoded; + // * relayers fund account does not exists (in practice it needs to exist in production environment); + // * maximal number of messages is being pruned during the call; + // * message size is minimal for the target chain. + // + // Result of this benchmark is used as a base weight for `send_message` call. Then the 'message weight' + // (estimated using `send_half_maximal_message_worst_case` and `send_maximal_message_worst_case`) is + // added. + send_minimal_message_worst_case { + let lane_id = T::bench_lane_id(); + let sender = account("sender", 0, SEED); + T::endow_account(&sender); + + // 'send' messages that are to be pruned when our message is sent + for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { + send_regular_message::(); + } + confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); + + let (payload, fee) = T::prepare_outbound_message(MessageParams { + size: 0, + sender_account: sender.clone(), + }); + }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) + verify { + assert_eq!( + crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), + T::MaxMessagesToPruneAtOnce::get() + 1, + ); + } + + // Benchmark `send_message` extrinsic with the worst possible conditions: + // * outbound lane already has state, so it needs to be read and decoded; + // * relayers fund account does not exists (in practice it needs to exist in production environment); + // * maximal number of messages is being pruned during the call; + // * message size is 1KB. + // + // With single KB of message size, the weight of the call is increased (roughly) by + // `(send_16_kb_message_worst_case - send_1_kb_message_worst_case) / 15`. + send_1_kb_message_worst_case { + let lane_id = T::bench_lane_id(); + let sender = account("sender", 0, SEED); + T::endow_account(&sender); + + // 'send' messages that are to be pruned when our message is sent + for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { + send_regular_message::(); + } + confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); + + let size = 1024; + assert!( + T::maximal_message_size() > size, + "This benchmark can only be used with runtime that accepts 1KB messages", + ); + + let (payload, fee) = T::prepare_outbound_message(MessageParams { + size, + sender_account: sender.clone(), + }); + }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) + verify { + assert_eq!( + crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), + T::MaxMessagesToPruneAtOnce::get() + 1, + ); + } + + // Benchmark `send_message` extrinsic with the worst possible conditions: + // * outbound lane already has state, so it needs to be read and decoded; + // * relayers fund account does not exists (in practice it needs to exist in production environment); + // * maximal number of messages is being pruned during the call; + // * message size is 16KB. + // + // With single KB of message size, the weight of the call is increased (roughly) by + // `(send_16_kb_message_worst_case - send_1_kb_message_worst_case) / 15`. + send_16_kb_message_worst_case { + let lane_id = T::bench_lane_id(); + let sender = account("sender", 0, SEED); + T::endow_account(&sender); + + // 'send' messages that are to be pruned when our message is sent + for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { + send_regular_message::(); + } + confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); + + let size = 16 * 1024; + assert!( + T::maximal_message_size() > size, + "This benchmark can only be used with runtime that accepts 16KB messages", + ); + + let (payload, fee) = T::prepare_outbound_message(MessageParams { + size, + sender_account: sender.clone(), + }); + }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) + verify { + assert_eq!( + crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), + T::MaxMessagesToPruneAtOnce::get() + 1, + ); + } + + // Benchmark `increase_message_fee` with following conditions: + // * message has maximal message; + // * submitter account is killed because its balance is less than ED after payment. + // + // Result of this benchmark is directly used by weight formula of the call. + maximal_increase_message_fee { + let sender = account("sender", 42, SEED); + T::endow_account(&sender); + + let additional_fee = T::account_balance(&sender); + let lane_id = T::bench_lane_id(); + let nonce = 1; + + send_regular_message_with_payload::(vec![42u8; T::maximal_message_size() as _]); + }: increase_message_fee(RawOrigin::Signed(sender.clone()), lane_id, nonce, additional_fee) + verify { + assert_eq!(T::account_balance(&sender), 0.into()); + } + + // Benchmark `increase_message_fee` with following conditions: + // * message size varies from minimal to maximal; + // * submitter account is killed because its balance is less than ED after payment. + increase_message_fee { + let i in 0..T::maximal_message_size().try_into().unwrap_or_default(); + + let sender = account("sender", 42, SEED); + T::endow_account(&sender); + + let additional_fee = T::account_balance(&sender); + let lane_id = T::bench_lane_id(); + let nonce = 1; + + send_regular_message_with_payload::(vec![42u8; i as _]); + }: increase_message_fee(RawOrigin::Signed(sender.clone()), lane_id, nonce, additional_fee) + verify { + assert_eq!(T::account_balance(&sender), 0.into()); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher; + // * message dispatch fee is paid at target (this) chain. + // + // This is base benchmark for all other message delivery benchmarks. + receive_single_message_proof { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + assert!(T::is_message_dispatched(21)); + } + + // Benchmark `receive_messages_proof` extrinsic with two minimal-weight messages and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher; + // * message dispatch fee is paid at target (this) chain. + // + // The weight of single message delivery could be approximated as + // `weight(receive_two_messages_proof) - weight(receive_single_message_proof)`. + // This won't be super-accurate if message has non-zero dispatch weight, but estimation should + // be close enough to real weight. + receive_two_messages_proof { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=22, + outbound_lane_data: None, + size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 2, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 22, + ); + assert!(T::is_message_dispatched(22)); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * proof includes outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher; + // * message dispatch fee is paid at target (this) chain. + // + // The weight of outbound lane state delivery would be + // `weight(receive_single_message_proof_with_outbound_lane_state) - weight(receive_single_message_proof)`. + // This won't be super-accurate if message has non-zero dispatch weight, but estimation should + // be close enough to real weight. + receive_single_message_proof_with_outbound_lane_state { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 21, + latest_received_nonce: 20, + latest_generated_nonce: 21, + }), + size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + assert_eq!( + crate::Pallet::::inbound_latest_confirmed_nonce(T::bench_lane_id()), + 20, + ); + assert!(T::is_message_dispatched(21)); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * the proof has many redundand trie nodes with total size of approximately 1KB; + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // With single KB of messages proof, the weight of the call is increased (roughly) by + // `(receive_single_message_proof_16KB - receive_single_message_proof_1_kb) / 15`. + receive_single_message_proof_1_kb { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::HasExtraNodes(1024), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + assert!(T::is_message_dispatched(21)); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * the proof has many redundand trie nodes with total size of approximately 16KB; + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // Size of proof grows because it contains extra trie nodes in it. + // + // With single KB of messages proof, the weight of the call is increased (roughly) by + // `(receive_single_message_proof_16KB - receive_single_message_proof) / 15`. + receive_single_message_proof_16_kb { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::HasExtraNodes(16 * 1024), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + assert!(T::is_message_dispatched(21)); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher; + // * message dispatch fee is paid at source (bridged) chain. + // + // This benchmark is used to compute extra weight spent at target chain when fee is paid there. Then we use + // this information in two places: (1) to reduce weight of delivery tx if sender pays fee at the source chain + // and (2) to refund relayer with this weight if fee has been paid at the source chain. + receive_single_prepaid_message_proof { + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + }); + }: receive_messages_proof(RawOrigin::Signed(relayer_id_on_target), relayer_id_on_source, proof, 1, dispatch_weight) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + assert!(T::is_message_dispatched(21)); + } + + // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: + // * single relayer is rewarded for relaying single message; + // * relayer account does not exist (in practice it needs to exist in production environment). + // + // This is base benchmark for all other confirmations delivery benchmarks. + receive_delivery_proof_for_single_message { + let relayers_fund_id = crate::relayer_fund_account_id::(); + let relayer_id: T::AccountId = account("relayer", 0, SEED); + let relayer_balance = T::account_balance(&relayer_id); + T::endow_account(&relayers_fund_id); + + // send message that we're going to confirm + send_regular_message::(); + + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 1, + total_messages: 1, + }; + let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { + lane: T::bench_lane_id(), + inbound_lane_data: InboundLaneData { + relayers: vec![UnrewardedRelayer { + relayer: relayer_id.clone(), + messages: DeliveredMessages::new(1, true), + }].into_iter().collect(), + last_confirmed_nonce: 0, + }, + size: ProofSize::Minimal(0), + }); + }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) + verify { + assert_eq!( + T::account_balance(&relayer_id), + relayer_balance + MESSAGE_FEE.into(), + ); + } + + // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: + // * single relayer is rewarded for relaying two messages; + // * relayer account does not exist (in practice it needs to exist in production environment). + // + // Additional weight for paying single-message reward to the same relayer could be computed + // as `weight(receive_delivery_proof_for_two_messages_by_single_relayer) + // - weight(receive_delivery_proof_for_single_message)`. + receive_delivery_proof_for_two_messages_by_single_relayer { + let relayers_fund_id = crate::relayer_fund_account_id::(); + let relayer_id: T::AccountId = account("relayer", 0, SEED); + let relayer_balance = T::account_balance(&relayer_id); + T::endow_account(&relayers_fund_id); + + // send message that we're going to confirm + send_regular_message::(); + send_regular_message::(); + + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 2, + total_messages: 2, + }; + let mut delivered_messages = DeliveredMessages::new(1, true); + delivered_messages.note_dispatched_message(true); + let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { + lane: T::bench_lane_id(), + inbound_lane_data: InboundLaneData { + relayers: vec![UnrewardedRelayer { + relayer: relayer_id.clone(), + messages: delivered_messages, + }].into_iter().collect(), + last_confirmed_nonce: 0, + }, + size: ProofSize::Minimal(0), + }); + }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) + verify { + ensure_relayer_rewarded::(&relayer_id, &relayer_balance); + } + + // Benchmark `receive_messages_delivery_proof` extrinsic with following conditions: + // * two relayers are rewarded for relaying single message each; + // * relayer account does not exist (in practice it needs to exist in production environment). + // + // Additional weight for paying reward to the next relayer could be computed + // as `weight(receive_delivery_proof_for_two_messages_by_two_relayers) + // - weight(receive_delivery_proof_for_two_messages_by_single_relayer)`. + receive_delivery_proof_for_two_messages_by_two_relayers { + let relayers_fund_id = crate::relayer_fund_account_id::(); + let relayer1_id: T::AccountId = account("relayer1", 1, SEED); + let relayer1_balance = T::account_balance(&relayer1_id); + let relayer2_id: T::AccountId = account("relayer2", 2, SEED); + let relayer2_balance = T::account_balance(&relayer2_id); + T::endow_account(&relayers_fund_id); + + // send message that we're going to confirm + send_regular_message::(); + send_regular_message::(); + + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + messages_in_oldest_entry: 1, + total_messages: 2, + }; + let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { + lane: T::bench_lane_id(), + inbound_lane_data: InboundLaneData { + relayers: vec![ + UnrewardedRelayer { + relayer: relayer1_id.clone(), + messages: DeliveredMessages::new(1, true), + }, + UnrewardedRelayer { + relayer: relayer2_id.clone(), + messages: DeliveredMessages::new(2, true), + }, + ].into_iter().collect(), + last_confirmed_nonce: 0, + }, + size: ProofSize::Minimal(0), + }); + }: receive_messages_delivery_proof(RawOrigin::Signed(relayer1_id.clone()), proof, relayers_state) + verify { + ensure_relayer_rewarded::(&relayer1_id, &relayer1_balance); + ensure_relayer_rewarded::(&relayer2_id, &relayer2_balance); + } + + // + // Benchmarks for manual checks. + // + + // Benchmark `send_message` extrinsic with following conditions: + // * outbound lane already has state, so it needs to be read and decoded; + // * relayers fund account does not exists (in practice it needs to exist in production environment); + // * maximal number of messages is being pruned during the call; + // * message size varies from minimal to maximal for the target chain. + // + // Results of this benchmark may be used to check how message size affects `send_message` performance. + send_messages_of_various_lengths { + let i in 0..T::maximal_message_size().try_into().unwrap_or_default(); + + let lane_id = T::bench_lane_id(); + let sender = account("sender", 0, SEED); + T::endow_account(&sender); + + // 'send' messages that are to be pruned when our message is sent + for _nonce in 1..=T::MaxMessagesToPruneAtOnce::get() { + send_regular_message::(); + } + confirm_message_delivery::(T::MaxMessagesToPruneAtOnce::get()); + + let (payload, fee) = T::prepare_outbound_message(MessageParams { + size: i as _, + sender_account: sender.clone(), + }); + }: send_message(RawOrigin::Signed(sender), lane_id, payload, fee) + verify { + assert_eq!( + crate::Pallet::::outbound_latest_generated_nonce(T::bench_lane_id()), + T::MaxMessagesToPruneAtOnce::get() + 1, + ); + } + + // Benchmark `receive_messages_proof` extrinsic with multiple minimal-weight messages and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // This benchmarks gives us an approximation of single message delivery weight. It is similar to the + // `weight(receive_two_messages_proof) - weight(receive_single_message_proof)`. So it may be used + // to verify that the other approximation is correct. + receive_multiple_messages_proof { + let i in 1..64; + + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + let messages_count = i as _; + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=(20 + i as MessageNonce), + outbound_lane_data: None, + size: ProofSize::Minimal(EXPECTED_DEFAULT_MESSAGE_LENGTH), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof( + RawOrigin::Signed(relayer_id_on_target), + relayer_id_on_source, + proof, + messages_count, + dispatch_weight + ) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 20 + i as MessageNonce, + ); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // Results of this benchmark may be used to check how proof size affects `receive_message_proof` performance. + receive_message_proofs_with_extra_nodes { + let i in 0..T::maximal_message_size(); + + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + let messages_count = 1u32; + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::HasExtraNodes(i as _), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof( + RawOrigin::Signed(relayer_id_on_target), + relayer_id_on_source, + proof, + messages_count, + dispatch_weight + ) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + } + + // Benchmark `receive_messages_proof` extrinsic with single minimal-weight message and following conditions: + // * proof does not include outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // Results of this benchmark may be used to check how message size affects `receive_message_proof` performance. + receive_message_proofs_with_large_leaf { + let i in 0..T::maximal_message_size(); + + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + let messages_count = 1u32; + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=21, + outbound_lane_data: None, + size: ProofSize::HasLargeLeaf(i as _), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof( + RawOrigin::Signed(relayer_id_on_target), + relayer_id_on_source, + proof, + messages_count, + dispatch_weight + ) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 21, + ); + } + + // Benchmark `receive_messages_proof` extrinsic with multiple minimal-weight messages and following conditions: + // * proof includes outbound lane state proof; + // * inbound lane already has state, so it needs to be read and decoded; + // * message is successfully dispatched; + // * message requires all heavy checks done by dispatcher. + // + // This benchmarks gives us an approximation of outbound lane state delivery weight. It is similar to the + // `weight(receive_single_message_proof_with_outbound_lane_state) - weight(receive_single_message_proof)`. + // So it may be used to verify that the other approximation is correct. + receive_multiple_messages_proof_with_outbound_lane_state { + let i in 1..128; + + let relayer_id_on_source = T::bridged_relayer_id(); + let relayer_id_on_target = account("relayer", 0, SEED); + let messages_count = i as _; + + // mark messages 1..=20 as delivered + receive_messages::(20); + + let (proof, dispatch_weight) = T::prepare_message_proof(MessageProofParams { + lane: T::bench_lane_id(), + message_nonces: 21..=20 + i as MessageNonce, + outbound_lane_data: Some(OutboundLaneData { + oldest_unpruned_nonce: 21, + latest_received_nonce: 20, + latest_generated_nonce: 21, + }), + size: ProofSize::Minimal(0), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + }); + }: receive_messages_proof( + RawOrigin::Signed(relayer_id_on_target), + relayer_id_on_source, + proof, + messages_count, + dispatch_weight + ) + verify { + assert_eq!( + crate::Pallet::::inbound_latest_received_nonce(T::bench_lane_id()), + 20 + i as MessageNonce, + ); + assert_eq!( + crate::Pallet::::inbound_latest_confirmed_nonce(T::bench_lane_id()), + 20, + ); + } + + // Benchmark `receive_messages_delivery_proof` extrinsic where single relayer delivers multiple messages. + receive_delivery_proof_for_multiple_messages_by_single_relayer { + // there actually should be used value of `MaxUnrewardedRelayerEntriesAtInboundLane` from the bridged + // chain, but we're more interested in additional weight/message than in max weight + let i in 1..T::MaxUnrewardedRelayerEntriesAtInboundLane::get() + .try_into() + .expect("Value of MaxUnrewardedRelayerEntriesAtInboundLane is too large"); + + let relayers_fund_id = crate::relayer_fund_account_id::(); + let relayer_id: T::AccountId = account("relayer", 0, SEED); + let relayer_balance = T::account_balance(&relayer_id); + T::endow_account(&relayers_fund_id); + + // send messages that we're going to confirm + for _ in 1..=i { + send_regular_message::(); + } + + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 1, + total_messages: i as MessageNonce, + }; + let mut delivered_messages = DeliveredMessages::new(1, true); + for nonce in 2..=i { + delivered_messages.note_dispatched_message(true); + } + let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { + lane: T::bench_lane_id(), + inbound_lane_data: InboundLaneData { + relayers: vec![UnrewardedRelayer { + relayer: relayer_id.clone(), + messages: delivered_messages, + }].into_iter().collect(), + last_confirmed_nonce: 0, + }, + size: ProofSize::Minimal(0), + }); + }: receive_messages_delivery_proof(RawOrigin::Signed(relayer_id.clone()), proof, relayers_state) + verify { + ensure_relayer_rewarded::(&relayer_id, &relayer_balance); + } + + // Benchmark `receive_messages_delivery_proof` extrinsic where every relayer delivers single messages. + receive_delivery_proof_for_multiple_messages_by_multiple_relayers { + // there actually should be used value of `MaxUnconfirmedMessagesAtInboundLane` from the bridged + // chain, but we're more interested in additional weight/message than in max weight + let i in 1..T::MaxUnconfirmedMessagesAtInboundLane::get() + .try_into() + .expect("Value of MaxUnconfirmedMessagesAtInboundLane is too large "); + + let relayers_fund_id = crate::relayer_fund_account_id::(); + let confirmation_relayer_id = account("relayer", 0, SEED); + let relayers: BTreeMap = (1..=i) + .map(|j| { + let relayer_id = account("relayer", j + 1, SEED); + let relayer_balance = T::account_balance(&relayer_id); + (relayer_id, relayer_balance) + }) + .collect(); + T::endow_account(&relayers_fund_id); + + // send messages that we're going to confirm + for _ in 1..=i { + send_regular_message::(); + } + + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: i as MessageNonce, + messages_in_oldest_entry: 1, + total_messages: i as MessageNonce, + }; + let proof = T::prepare_message_delivery_proof(MessageDeliveryProofParams { + lane: T::bench_lane_id(), + inbound_lane_data: InboundLaneData { + relayers: relayers + .keys() + .enumerate() + .map(|(j, relayer)| UnrewardedRelayer { + relayer: relayer.clone(), + messages: DeliveredMessages::new(j as MessageNonce + 1, true), + }) + .collect(), + last_confirmed_nonce: 0, + }, + size: ProofSize::Minimal(0), + }); + }: receive_messages_delivery_proof(RawOrigin::Signed(confirmation_relayer_id), proof, relayers_state) + verify { + for (relayer_id, prev_balance) in relayers { + ensure_relayer_rewarded::(&relayer_id, &prev_balance); + } + } +} + +fn send_regular_message, I: 'static>() { + let mut outbound_lane = outbound_lane::(T::bench_lane_id()); + outbound_lane.send_message(MessageData { payload: vec![], fee: MESSAGE_FEE.into() }); +} + +fn send_regular_message_with_payload, I: 'static>(payload: Vec) { + let mut outbound_lane = outbound_lane::(T::bench_lane_id()); + outbound_lane.send_message(MessageData { payload, fee: MESSAGE_FEE.into() }); +} + +fn confirm_message_delivery, I: 'static>(nonce: MessageNonce) { + let mut outbound_lane = outbound_lane::(T::bench_lane_id()); + let latest_received_nonce = outbound_lane.data().latest_received_nonce; + let mut relayers = VecDeque::with_capacity((nonce - latest_received_nonce) as usize); + for nonce in latest_received_nonce + 1..=nonce { + relayers.push_back(UnrewardedRelayer { + relayer: (), + messages: DeliveredMessages::new(nonce, true), + }); + } + assert!(matches!( + outbound_lane.confirm_delivery(nonce - latest_received_nonce, nonce, &relayers), + ReceivalConfirmationResult::ConfirmedMessages(_), + )); +} + +fn receive_messages, I: 'static>(nonce: MessageNonce) { + let mut inbound_lane_storage = inbound_lane_storage::(T::bench_lane_id()); + inbound_lane_storage.set_data(InboundLaneData { + relayers: vec![UnrewardedRelayer { + relayer: T::bridged_relayer_id(), + messages: DeliveredMessages::new(nonce, true), + }] + .into_iter() + .collect(), + last_confirmed_nonce: 0, + }); +} + +fn ensure_relayer_rewarded, I: 'static>( + relayer_id: &T::AccountId, + old_balance: &T::OutboundMessageFee, +) { + let new_balance = T::account_balance(relayer_id); + assert!( + new_balance > *old_balance, + "Relayer haven't received reward for relaying message: old balance = {:?}, new balance = {:?}", + old_balance, + new_balance, + ); +} diff --git a/bridges/modules/messages/src/inbound_lane.rs b/modules/messages/src/inbound_lane.rs similarity index 90% rename from bridges/modules/messages/src/inbound_lane.rs rename to modules/messages/src/inbound_lane.rs index 83d17dc3c06c..00875bb878a8 100644 --- a/bridges/modules/messages/src/inbound_lane.rs +++ b/modules/messages/src/inbound_lane.rs @@ -18,7 +18,8 @@ use bp_messages::{ target_chain::{DispatchMessage, DispatchMessageData, MessageDispatch}, - DeliveredMessages, InboundLaneData, LaneId, MessageKey, MessageNonce, OutboundLaneData, UnrewardedRelayer, + DeliveredMessages, InboundLaneData, LaneId, MessageKey, MessageNonce, OutboundLaneData, + UnrewardedRelayer, }; use bp_runtime::messages::MessageDispatchResult; use frame_support::RuntimeDebug; @@ -53,7 +54,7 @@ pub enum ReceivalResult { Dispatched(MessageDispatchResult), /// Message has invalid nonce and lane has rejected to accept this message. InvalidNonce, - /// There are too many unrewarded relayer entires at the lane. + /// There are too many unrewarded relayer entries at the lane. TooManyUnrewardedRelayers, /// There are too many unconfirmed messages at the lane. TooManyUnconfirmedMessages, @@ -71,16 +72,19 @@ impl InboundLane { } /// Receive state of the corresponding outbound lane. - pub fn receive_state_update(&mut self, outbound_lane_data: OutboundLaneData) -> Option { + pub fn receive_state_update( + &mut self, + outbound_lane_data: OutboundLaneData, + ) -> Option { let mut data = self.storage.data(); let last_delivered_nonce = data.last_delivered_nonce(); if outbound_lane_data.latest_received_nonce > last_delivered_nonce { // this is something that should never happen if proofs are correct - return None; + return None } if outbound_lane_data.latest_received_nonce <= data.last_confirmed_nonce { - return None; + return None } let new_confirmed_nonce = outbound_lane_data.latest_received_nonce; @@ -95,7 +99,8 @@ impl InboundLane { data.relayers.pop_front(); } // Secondly, update the next record with lower nonce equal to new confirmed nonce if needed. - // Note: There will be max. 1 record to update as we don't allow messages from relayers to overlap. + // Note: There will be max. 1 record to update as we don't allow messages from relayers to + // overlap. match data.relayers.front_mut() { Some(entry) if entry.messages.begin < new_confirmed_nonce => { entry.messages.dispatch_results = entry @@ -103,8 +108,8 @@ impl InboundLane { .dispatch_results .split_off((new_confirmed_nonce + 1 - entry.messages.begin) as _); entry.messages.begin = new_confirmed_nonce + 1; - } - _ => {} + }, + _ => {}, } self.storage.set_data(data); @@ -122,30 +127,25 @@ impl InboundLane { let mut data = self.storage.data(); let is_correct_message = nonce == data.last_delivered_nonce() + 1; if !is_correct_message { - return ReceivalResult::InvalidNonce; + return ReceivalResult::InvalidNonce } // if there are more unrewarded relayer entries than we may accept, reject this message if data.relayers.len() as MessageNonce >= self.storage.max_unrewarded_relayer_entries() { - return ReceivalResult::TooManyUnrewardedRelayers; + return ReceivalResult::TooManyUnrewardedRelayers } // if there are more unconfirmed messages than we may accept, reject this message let unconfirmed_messages_count = nonce.saturating_sub(data.last_confirmed_nonce); if unconfirmed_messages_count > self.storage.max_unconfirmed_messages() { - return ReceivalResult::TooManyUnconfirmedMessages; + return ReceivalResult::TooManyUnconfirmedMessages } - // dispatch message before updating anything in the storage. If dispatch would panic, - // (which should not happen in the runtime) then we simply won't consider message as - // delivered (no changes to the inbound lane storage have been made). + // then, dispatch message let dispatch_result = P::dispatch( relayer_at_this_chain, DispatchMessage { - key: MessageKey { - lane_id: self.storage.id(), - nonce, - }, + key: MessageKey { lane_id: self.storage.id(), nonce }, data: message_data, }, ); @@ -155,7 +155,7 @@ impl InboundLane { Some(entry) if entry.relayer == *relayer_at_bridged_chain => { entry.messages.note_dispatched_message(dispatch_result.dispatch_result); false - } + }, _ => true, }; if push_new { @@ -176,14 +176,15 @@ mod tests { use crate::{ inbound_lane, mock::{ - dispatch_result, message_data, run_test, unrewarded_relayer, TestMessageDispatch, TestRuntime, - REGULAR_PAYLOAD, TEST_LANE_ID, TEST_RELAYER_A, TEST_RELAYER_B, TEST_RELAYER_C, + dispatch_result, message_data, run_test, unrewarded_relayer, TestMessageDispatch, + TestRuntime, REGULAR_PAYLOAD, TEST_LANE_ID, TEST_RELAYER_A, TEST_RELAYER_B, + TEST_RELAYER_C, }, - DefaultInstance, RuntimeInboundLaneStorage, + RuntimeInboundLaneStorage, }; fn receive_regular_message( - lane: &mut InboundLane>, + lane: &mut InboundLane>, nonce: MessageNonce, ) { assert_eq!( @@ -286,16 +287,10 @@ mod tests { let mut seed_storage_data = lane.storage.data(); // Prepare data seed_storage_data.last_confirmed_nonce = 0; - seed_storage_data - .relayers - .push_back(unrewarded_relayer(1, 1, TEST_RELAYER_A)); + seed_storage_data.relayers.push_back(unrewarded_relayer(1, 1, TEST_RELAYER_A)); // Simulate messages batch (2, 3, 4) from relayer #2 - seed_storage_data - .relayers - .push_back(unrewarded_relayer(2, 4, TEST_RELAYER_B)); - seed_storage_data - .relayers - .push_back(unrewarded_relayer(5, 5, TEST_RELAYER_C)); + seed_storage_data.relayers.push_back(unrewarded_relayer(2, 4, TEST_RELAYER_B)); + seed_storage_data.relayers.push_back(unrewarded_relayer(5, 5, TEST_RELAYER_C)); lane.storage.set_data(seed_storage_data); // Check assert_eq!( @@ -337,7 +332,8 @@ mod tests { fn fails_to_receive_messages_above_unrewarded_relayer_entries_limit_per_lane() { run_test(|| { let mut lane = inbound_lane::(TEST_LANE_ID); - let max_nonce = ::MaxUnrewardedRelayerEntriesAtInboundLane::get(); + let max_nonce = + ::MaxUnrewardedRelayerEntriesAtInboundLane::get(); for current_nonce in 1..max_nonce + 1 { assert_eq!( lane.receive_message::( @@ -376,7 +372,8 @@ mod tests { fn fails_to_receive_messages_above_unconfirmed_messages_limit_per_lane() { run_test(|| { let mut lane = inbound_lane::(TEST_LANE_ID); - let max_nonce = ::MaxUnconfirmedMessagesAtInboundLane::get(); + let max_nonce = + ::MaxUnconfirmedMessagesAtInboundLane::get(); for current_nonce in 1..=max_nonce { assert_eq!( lane.receive_message::( diff --git a/modules/messages/src/instant_payments.rs b/modules/messages/src/instant_payments.rs new file mode 100644 index 000000000000..c145687af994 --- /dev/null +++ b/modules/messages/src/instant_payments.rs @@ -0,0 +1,294 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Implementation of `MessageDeliveryAndDispatchPayment` trait on top of `Currency` trait. +//! +//! The payment is first transferred to a special `relayers-fund` account and only transferred +//! to the actual relayer in case confirmation is received. + +use crate::OutboundMessages; + +use bp_messages::{ + source_chain::{MessageDeliveryAndDispatchPayment, RelayersRewards, Sender}, + LaneId, MessageKey, MessageNonce, UnrewardedRelayer, +}; +use codec::Encode; +use frame_support::traits::{Currency as CurrencyT, ExistenceRequirement, Get}; +use num_traits::{SaturatingAdd, Zero}; +use sp_runtime::traits::Saturating; +use sp_std::{collections::vec_deque::VecDeque, fmt::Debug, ops::RangeInclusive}; + +/// Instant message payments made in given currency. +/// +/// The balance is initially reserved in a special `relayers-fund` account, and transferred +/// to the relayer when message delivery is confirmed. +/// +/// Additionally, confirmation transaction submitter (`confirmation_relayer`) is reimbursed +/// with the confirmation rewards (part of message fee, reserved to pay for delivery confirmation). +/// +/// NOTE The `relayers-fund` account must always exist i.e. be over Existential Deposit (ED; the +/// pallet enforces that) to make sure that even if the message cost is below ED it is still paid +/// to the relayer account. +/// NOTE It's within relayer's interest to keep their balance above ED as well, to make sure they +/// can receive the payment. +pub struct InstantCurrencyPayments { + _phantom: sp_std::marker::PhantomData<(T, I, Currency, GetConfirmationFee, RootAccount)>, +} + +impl + MessageDeliveryAndDispatchPayment + for InstantCurrencyPayments +where + T: frame_system::Config + crate::Config, + I: 'static, + Currency: CurrencyT, + Currency::Balance: From, + GetConfirmationFee: Get, + RootAccount: Get>, +{ + type Error = &'static str; + + fn pay_delivery_and_dispatch_fee( + submitter: &Sender, + fee: &Currency::Balance, + relayer_fund_account: &T::AccountId, + ) -> Result<(), Self::Error> { + if !frame_system::Pallet::::account_exists(relayer_fund_account) { + return Err("The relayer fund account must exist for the message lanes pallet to work correctly."); + } + + let root_account = RootAccount::get(); + let account = match submitter { + Sender::Signed(submitter) => submitter, + Sender::Root | Sender::None => root_account + .as_ref() + .ok_or("Sending messages using Root or None origin is disallowed.")?, + }; + + Currency::transfer( + account, + relayer_fund_account, + *fee, + // it's fine for the submitter to go below Existential Deposit and die. + ExistenceRequirement::AllowDeath, + ) + .map_err(Into::into) + } + + fn pay_relayers_rewards( + lane_id: LaneId, + messages_relayers: VecDeque>, + confirmation_relayer: &T::AccountId, + received_range: &RangeInclusive, + relayer_fund_account: &T::AccountId, + ) { + let relayers_rewards = + cal_relayers_rewards::(lane_id, messages_relayers, received_range); + if !relayers_rewards.is_empty() { + pay_relayers_rewards::( + confirmation_relayer, + relayers_rewards, + relayer_fund_account, + GetConfirmationFee::get(), + ); + } + } +} + +/// Calculate the relayers rewards +pub(crate) fn cal_relayers_rewards( + lane_id: LaneId, + messages_relayers: VecDeque>, + received_range: &RangeInclusive, +) -> RelayersRewards +where + T: frame_system::Config + crate::Config, + I: 'static, +{ + // remember to reward relayers that have delivered messages + // this loop is bounded by `T::MaxUnrewardedRelayerEntriesAtInboundLane` on the bridged chain + let mut relayers_rewards: RelayersRewards<_, T::OutboundMessageFee> = RelayersRewards::new(); + for entry in messages_relayers { + let nonce_begin = sp_std::cmp::max(entry.messages.begin, *received_range.start()); + let nonce_end = sp_std::cmp::min(entry.messages.end, *received_range.end()); + + // loop won't proceed if current entry is ahead of received range (begin > end). + // this loop is bound by `T::MaxUnconfirmedMessagesAtInboundLane` on the bridged chain + let mut relayer_reward = relayers_rewards.entry(entry.relayer).or_default(); + for nonce in nonce_begin..nonce_end + 1 { + let message_data = OutboundMessages::::get(MessageKey { lane_id, nonce }) + .expect("message was just confirmed; we never prune unconfirmed messages; qed"); + relayer_reward.reward = relayer_reward.reward.saturating_add(&message_data.fee); + relayer_reward.messages += 1; + } + } + relayers_rewards +} + +/// Pay rewards to given relayers, optionally rewarding confirmation relayer. +fn pay_relayers_rewards( + confirmation_relayer: &AccountId, + relayers_rewards: RelayersRewards, + relayer_fund_account: &AccountId, + confirmation_fee: Currency::Balance, +) where + AccountId: Debug + Default + Encode + PartialEq, + Currency: CurrencyT, + Currency::Balance: From, +{ + // reward every relayer except `confirmation_relayer` + let mut confirmation_relayer_reward = Currency::Balance::zero(); + for (relayer, reward) in relayers_rewards { + let mut relayer_reward = reward.reward; + + if relayer != *confirmation_relayer { + // If delivery confirmation is submitted by other relayer, let's deduct confirmation fee + // from relayer reward. + // + // If confirmation fee has been increased (or if it was the only component of message + // fee), then messages relayer may receive zero reward. + let mut confirmation_reward = confirmation_fee.saturating_mul(reward.messages.into()); + if confirmation_reward > relayer_reward { + confirmation_reward = relayer_reward; + } + relayer_reward = relayer_reward.saturating_sub(confirmation_reward); + confirmation_relayer_reward = + confirmation_relayer_reward.saturating_add(confirmation_reward); + } else { + // If delivery confirmation is submitted by this relayer, let's add confirmation fee + // from other relayers to this relayer reward. + confirmation_relayer_reward = confirmation_relayer_reward.saturating_add(reward.reward); + continue + } + + pay_relayer_reward::(relayer_fund_account, &relayer, relayer_reward); + } + + // finally - pay reward to confirmation relayer + pay_relayer_reward::( + relayer_fund_account, + confirmation_relayer, + confirmation_relayer_reward, + ); +} + +/// Transfer funds from relayers fund account to given relayer. +fn pay_relayer_reward( + relayer_fund_account: &AccountId, + relayer_account: &AccountId, + reward: Currency::Balance, +) where + AccountId: Debug, + Currency: CurrencyT, +{ + if reward.is_zero() { + return + } + + let pay_result = Currency::transfer( + relayer_fund_account, + relayer_account, + reward, + // the relayer fund account must stay above ED (needs to be pre-funded) + ExistenceRequirement::KeepAlive, + ); + + match pay_result { + Ok(_) => log::trace!( + target: "runtime::bridge-messages", + "Rewarded relayer {:?} with {:?}", + relayer_account, + reward, + ), + Err(error) => log::trace!( + target: "runtime::bridge-messages", + "Failed to pay relayer {:?} reward {:?}: {:?}", + relayer_account, + reward, + error, + ), + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::mock::{run_test, AccountId as TestAccountId, Balance as TestBalance, TestRuntime}; + use bp_messages::source_chain::RelayerRewards; + + type Balances = pallet_balances::Pallet; + + const RELAYER_1: TestAccountId = 1; + const RELAYER_2: TestAccountId = 2; + const RELAYER_3: TestAccountId = 3; + const RELAYERS_FUND_ACCOUNT: TestAccountId = crate::mock::ENDOWED_ACCOUNT; + + fn relayers_rewards() -> RelayersRewards { + vec![ + (RELAYER_1, RelayerRewards { reward: 100, messages: 2 }), + (RELAYER_2, RelayerRewards { reward: 100, messages: 3 }), + ] + .into_iter() + .collect() + } + + #[test] + fn confirmation_relayer_is_rewarded_if_it_has_also_delivered_messages() { + run_test(|| { + pay_relayers_rewards::( + &RELAYER_2, + relayers_rewards(), + &RELAYERS_FUND_ACCOUNT, + 10, + ); + + assert_eq!(Balances::free_balance(&RELAYER_1), 80); + assert_eq!(Balances::free_balance(&RELAYER_2), 120); + }); + } + + #[test] + fn confirmation_relayer_is_rewarded_if_it_has_not_delivered_any_delivered_messages() { + run_test(|| { + pay_relayers_rewards::( + &RELAYER_3, + relayers_rewards(), + &RELAYERS_FUND_ACCOUNT, + 10, + ); + + assert_eq!(Balances::free_balance(&RELAYER_1), 80); + assert_eq!(Balances::free_balance(&RELAYER_2), 70); + assert_eq!(Balances::free_balance(&RELAYER_3), 50); + }); + } + + #[test] + fn only_confirmation_relayer_is_rewarded_if_confirmation_fee_has_significantly_increased() { + run_test(|| { + pay_relayers_rewards::( + &RELAYER_3, + relayers_rewards(), + &RELAYERS_FUND_ACCOUNT, + 1000, + ); + + assert_eq!(Balances::free_balance(&RELAYER_1), 0); + assert_eq!(Balances::free_balance(&RELAYER_2), 0); + assert_eq!(Balances::free_balance(&RELAYER_3), 200); + }); + } +} diff --git a/modules/messages/src/lib.rs b/modules/messages/src/lib.rs new file mode 100644 index 000000000000..119869d81e98 --- /dev/null +++ b/modules/messages/src/lib.rs @@ -0,0 +1,2362 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Runtime module that allows sending and receiving messages using lane concept: +//! +//! 1) the message is sent using `send_message()` call; +//! 2) every outbound message is assigned nonce; +//! 3) the messages are stored in the storage; +//! 4) external component (relay) delivers messages to bridged chain; +//! 5) messages are processed in order (ordered by assigned nonce); +//! 6) relay may send proof-of-delivery back to this chain. +//! +//! Once message is sent, its progress can be tracked by looking at module events. +//! The assigned nonce is reported using `MessageAccepted` event. When message is +//! delivered to the the bridged chain, it is reported using `MessagesDelivered` event. +//! +//! **IMPORTANT NOTE**: after generating weights (custom `WeighInfo` implementation) for +//! your runtime (where this module is plugged to), please add test for these weights. +//! The test should call the `ensure_weights_are_correct` function from this module. +//! If this test fails with your weights, then either weights are computed incorrectly, +//! or some benchmarks assumptions are broken for your runtime. + +#![cfg_attr(not(feature = "std"), no_std)] +// Generated by `decl_event!` +#![allow(clippy::unused_unit)] + +pub use crate::weights_ext::{ + ensure_able_to_receive_confirmation, ensure_able_to_receive_message, + ensure_weights_are_correct, WeightInfoExt, EXPECTED_DEFAULT_MESSAGE_LENGTH, +}; + +use crate::{ + inbound_lane::{InboundLane, InboundLaneStorage, ReceivalResult}, + outbound_lane::{OutboundLane, OutboundLaneStorage, ReceivalConfirmationResult}, + weights::WeightInfo, +}; + +use bp_messages::{ + source_chain::{ + LaneMessageVerifier, MessageDeliveryAndDispatchPayment, OnDeliveryConfirmed, + OnMessageAccepted, SendMessageArtifacts, TargetHeaderChain, + }, + target_chain::{ + DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages, SourceHeaderChain, + }, + total_unrewarded_messages, DeliveredMessages, InboundLaneData, LaneId, MessageData, MessageKey, + MessageNonce, OperatingMode, OutboundLaneData, Parameter as MessagesParameter, + UnrewardedRelayersState, +}; +use bp_runtime::{ChainId, Size}; +use codec::{Decode, Encode}; +use frame_support::{ + fail, + traits::Get, + weights::{Pays, PostDispatchInfo}, +}; +use frame_system::RawOrigin; +use num_traits::{SaturatingAdd, Zero}; +use sp_core::H256; +use sp_runtime::traits::{BadOrigin, Convert}; +use sp_std::{cell::RefCell, cmp::PartialOrd, marker::PhantomData, prelude::*}; + +mod inbound_lane; +mod outbound_lane; +mod weights_ext; + +pub mod instant_payments; +pub mod weights; + +#[cfg(feature = "runtime-benchmarks")] +pub mod benchmarking; + +#[cfg(test)] +mod mock; + +pub use pallet::*; + +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + + #[pallet::config] + pub trait Config: frame_system::Config { + // General types + + /// The overarching event type. + type Event: From> + IsType<::Event>; + /// Benchmarks results from runtime we're plugged into. + type WeightInfo: WeightInfoExt; + + /// Gets the chain id value from the instance. + #[pallet::constant] + type BridgedChainId: Get; + /// Pallet parameter that is opaque to the pallet itself, but may be used by the runtime + /// for integrating the pallet. + /// + /// All pallet parameters may only be updated either by the root, or by the pallet owner. + type Parameter: MessagesParameter; + + /// Maximal number of messages that may be pruned during maintenance. Maintenance occurs + /// whenever new message is sent. The reason is that if you want to use lane, you should + /// be ready to pay for its maintenance. + type MaxMessagesToPruneAtOnce: Get; + /// Maximal number of unrewarded relayer entries at inbound lane. Unrewarded means that the + /// relayer has delivered messages, but either confirmations haven't been delivered back to + /// the source chain, or we haven't received reward confirmations yet. + /// + /// This constant limits maximal number of entries in the `InboundLaneData::relayers`. Keep + /// in mind that the same relayer account may take several (non-consecutive) entries in this + /// set. + type MaxUnrewardedRelayerEntriesAtInboundLane: Get; + /// Maximal number of unconfirmed messages at inbound lane. Unconfirmed means that the + /// message has been delivered, but either confirmations haven't been delivered back to the + /// source chain, or we haven't received reward confirmations for these messages yet. + /// + /// This constant limits difference between last message from last entry of the + /// `InboundLaneData::relayers` and first message at the first entry. + /// + /// There is no point of making this parameter lesser than + /// MaxUnrewardedRelayerEntriesAtInboundLane, because then maximal number of relayer entries + /// will be limited by maximal number of messages. + /// + /// This value also represents maximal number of messages in single delivery transaction. + /// Transaction that is declaring more messages than this value, will be rejected. Even if + /// these messages are from different lanes. + type MaxUnconfirmedMessagesAtInboundLane: Get; + + /// Payload type of outbound messages. This payload is dispatched on the bridged chain. + type OutboundPayload: Parameter + Size; + /// Message fee type of outbound messages. This fee is paid on this chain. + type OutboundMessageFee: Default + + From + + PartialOrd + + Parameter + + SaturatingAdd + + Zero + + Copy; + + /// Payload type of inbound messages. This payload is dispatched on this chain. + type InboundPayload: Decode; + /// Message fee type of inbound messages. This fee is paid on the bridged chain. + type InboundMessageFee: Decode; + /// Identifier of relayer that deliver messages to this chain. Relayer reward is paid on the + /// bridged chain. + type InboundRelayer: Parameter; + + /// A type which can be turned into an AccountId from a 256-bit hash. + /// + /// Used when deriving the shared relayer fund account. + type AccountIdConverter: sp_runtime::traits::Convert; + + // Types that are used by outbound_lane (on source chain). + + /// Target header chain. + type TargetHeaderChain: TargetHeaderChain; + /// Message payload verifier. + type LaneMessageVerifier: LaneMessageVerifier< + Self::AccountId, + Self::OutboundPayload, + Self::OutboundMessageFee, + >; + /// Message delivery payment. + type MessageDeliveryAndDispatchPayment: MessageDeliveryAndDispatchPayment< + Self::AccountId, + Self::OutboundMessageFee, + >; + /// Handler for accepted messages. + type OnMessageAccepted: OnMessageAccepted; + /// Handler for delivered messages. + type OnDeliveryConfirmed: OnDeliveryConfirmed; + + // Types that are used by inbound_lane (on target chain). + + /// Source header chain, as it is represented on target chain. + type SourceHeaderChain: SourceHeaderChain; + /// Message dispatch. + type MessageDispatch: MessageDispatch< + Self::AccountId, + Self::InboundMessageFee, + DispatchPayload = Self::InboundPayload, + >; + } + + /// Shortcut to messages proof type for Config. + type MessagesProofOf = <>::SourceHeaderChain as SourceHeaderChain< + >::InboundMessageFee, + >>::MessagesProof; + /// Shortcut to messages delivery proof type for Config. + type MessagesDeliveryProofOf = + <>::TargetHeaderChain as TargetHeaderChain< + >::OutboundPayload, + ::AccountId, + >>::MessagesDeliveryProof; + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(PhantomData<(T, I)>); + + #[pallet::call] + impl, I: 'static> Pallet { + /// Change `PalletOwner`. + /// + /// May only be called either by root, or by `PalletOwner`. + #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] + pub fn set_owner(origin: OriginFor, new_owner: Option) -> DispatchResult { + ensure_owner_or_root::(origin)?; + match new_owner { + Some(new_owner) => { + PalletOwner::::put(&new_owner); + log::info!(target: "runtime::bridge-messages", "Setting pallet Owner to: {:?}", new_owner); + }, + None => { + PalletOwner::::kill(); + log::info!(target: "runtime::bridge-messages", "Removed Owner of pallet."); + }, + } + Ok(()) + } + + /// Halt or resume all/some pallet operations. + /// + /// May only be called either by root, or by `PalletOwner`. + #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))] + pub fn set_operating_mode( + origin: OriginFor, + operating_mode: OperatingMode, + ) -> DispatchResult { + ensure_owner_or_root::(origin)?; + PalletOperatingMode::::put(operating_mode); + log::info!( + target: "runtime::bridge-messages", + "Setting messages pallet operating mode to {:?}.", + operating_mode, + ); + Ok(()) + } + + /// Update pallet parameter. + /// + /// May only be called either by root, or by `PalletOwner`. + /// + /// The weight is: single read for permissions check + 2 writes for parameter value and + /// event. + #[pallet::weight((T::DbWeight::get().reads_writes(1, 2), DispatchClass::Operational))] + pub fn update_pallet_parameter( + origin: OriginFor, + parameter: T::Parameter, + ) -> DispatchResult { + ensure_owner_or_root::(origin)?; + parameter.save(); + Self::deposit_event(Event::ParameterUpdated(parameter)); + Ok(()) + } + + /// Send message over lane. + #[pallet::weight(T::WeightInfo::send_message_weight(payload, T::DbWeight::get()))] + pub fn send_message( + origin: OriginFor, + lane_id: LaneId, + payload: T::OutboundPayload, + delivery_and_dispatch_fee: T::OutboundMessageFee, + ) -> DispatchResultWithPostInfo { + crate::send_message::( + origin.into().map_err(|_| BadOrigin)?, + lane_id, + payload, + delivery_and_dispatch_fee, + ) + .map(|sent_message| PostDispatchInfo { + actual_weight: Some(sent_message.weight), + pays_fee: Pays::Yes, + }) + } + + /// Pay additional fee for the message. + #[pallet::weight(T::WeightInfo::maximal_increase_message_fee())] + pub fn increase_message_fee( + origin: OriginFor, + lane_id: LaneId, + nonce: MessageNonce, + additional_fee: T::OutboundMessageFee, + ) -> DispatchResultWithPostInfo { + ensure_not_halted::()?; + // if someone tries to pay for already-delivered message, we're rejecting this intention + // (otherwise this additional fee will be locked forever in relayers fund) + // + // if someone tries to pay for not-yet-sent message, we're rejecting this intention, or + // we're risking to have mess in the storage + let lane = outbound_lane::(lane_id); + ensure!( + nonce > lane.data().latest_received_nonce, + Error::::MessageIsAlreadyDelivered + ); + ensure!( + nonce <= lane.data().latest_generated_nonce, + Error::::MessageIsNotYetSent + ); + + // withdraw additional fee from submitter + let submitter = origin.into().map_err(|_| BadOrigin)?; + T::MessageDeliveryAndDispatchPayment::pay_delivery_and_dispatch_fee( + &submitter, + &additional_fee, + &relayer_fund_account_id::(), + ) + .map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Submitter {:?} can't pay additional fee {:?} for the message {:?}/{:?} to {:?}: {:?}", + submitter, + additional_fee, + lane_id, + nonce, + relayer_fund_account_id::(), + err, + ); + + Error::::FailedToWithdrawMessageFee + })?; + + // and finally update fee in the storage + let message_key = MessageKey { lane_id, nonce }; + let message_size = OutboundMessages::::mutate(message_key, |message_data| { + // saturating_add is fine here - overflow here means that someone controls all + // chain funds, which shouldn't ever happen + `pay_delivery_and_dispatch_fee` + // above will fail before we reach here + let message_data = message_data.as_mut().expect( + "the message is sent and not yet delivered; so it is in the storage; qed", + ); + message_data.fee = message_data.fee.saturating_add(&additional_fee); + message_data.payload.len() + }); + + // compute actual dispatch weight that depends on the stored message size + let actual_weight = sp_std::cmp::min( + T::WeightInfo::maximal_increase_message_fee(), + T::WeightInfo::increase_message_fee(message_size as _), + ); + + Ok(PostDispatchInfo { actual_weight: Some(actual_weight), pays_fee: Pays::Yes }) + } + + /// Receive messages proof from bridged chain. + /// + /// The weight of the call assumes that the transaction always brings outbound lane + /// state update. Because of that, the submitter (relayer) has no benefit of not including + /// this data in the transaction, so reward confirmations lags should be minimal. + #[pallet::weight(T::WeightInfo::receive_messages_proof_weight(proof, *messages_count, *dispatch_weight))] + pub fn receive_messages_proof( + origin: OriginFor, + relayer_id_at_bridged_chain: T::InboundRelayer, + proof: MessagesProofOf, + messages_count: u32, + dispatch_weight: Weight, + ) -> DispatchResultWithPostInfo { + ensure_not_halted::()?; + let relayer_id_at_this_chain = ensure_signed(origin)?; + + // reject transactions that are declaring too many messages + ensure!( + MessageNonce::from(messages_count) <= T::MaxUnconfirmedMessagesAtInboundLane::get(), + Error::::TooManyMessagesInTheProof + ); + + // why do we need to know the weight of this (`receive_messages_proof`) call? Because + // we may want to return some funds for not-dispatching (or partially dispatching) some + // messages to the call origin (relayer). And this is done by returning actual weight + // from the call. But we only know dispatch weight of every messages. So to refund + // relayer because we have not dispatched Message, we need to: + // + // ActualWeight = DeclaredWeight - Message.DispatchWeight + // + // The DeclaredWeight is exactly what's computed here. Unfortunately it is impossible + // to get pre-computed value (and it has been already computed by the executive). + let declared_weight = T::WeightInfo::receive_messages_proof_weight( + &proof, + messages_count, + dispatch_weight, + ); + let mut actual_weight = declared_weight; + + // verify messages proof && convert proof into messages + let messages = verify_and_decode_messages_proof::< + T::SourceHeaderChain, + T::InboundMessageFee, + T::InboundPayload, + >(proof, messages_count) + .map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Rejecting invalid messages proof: {:?}", + err, + ); + + Error::::InvalidMessagesProof + })?; + + // dispatch messages and (optionally) update lane(s) state(s) + let mut total_messages = 0; + let mut valid_messages = 0; + let mut dispatch_weight_left = dispatch_weight; + for (lane_id, lane_data) in messages { + let mut lane = inbound_lane::(lane_id); + + if let Some(lane_state) = lane_data.lane_state { + let updated_latest_confirmed_nonce = lane.receive_state_update(lane_state); + if let Some(updated_latest_confirmed_nonce) = updated_latest_confirmed_nonce { + log::trace!( + target: "runtime::bridge-messages", + "Received lane {:?} state update: latest_confirmed_nonce={}", + lane_id, + updated_latest_confirmed_nonce, + ); + } + } + + for message in lane_data.messages { + debug_assert_eq!(message.key.lane_id, lane_id); + + // ensure that relayer has declared enough weight for dispatching next message + // on this lane. We can't dispatch lane messages out-of-order, so if declared + // weight is not enough, let's move to next lane + let dispatch_weight = T::MessageDispatch::dispatch_weight(&message); + if dispatch_weight > dispatch_weight_left { + log::trace!( + target: "runtime::bridge-messages", + "Cannot dispatch any more messages on lane {:?}. Weight: declared={}, left={}", + lane_id, + dispatch_weight, + dispatch_weight_left, + ); + break + } + total_messages += 1; + + let receival_result = lane.receive_message::( + &relayer_id_at_bridged_chain, + &relayer_id_at_this_chain, + message.key.nonce, + message.data, + ); + + // note that we're returning unspent weight to relayer even if message has been + // rejected by the lane. This allows relayers to submit spam transactions with + // e.g. the same set of already delivered messages over and over again, without + // losing funds for messages dispatch. But keep in mind that relayer pays base + // delivery transaction cost anyway. And base cost covers everything except + // dispatch, so we have a balance here. + let (unspent_weight, refund_pay_dispatch_fee) = match receival_result { + ReceivalResult::Dispatched(dispatch_result) => { + valid_messages += 1; + ( + dispatch_result.unspent_weight, + !dispatch_result.dispatch_fee_paid_during_dispatch, + ) + }, + ReceivalResult::InvalidNonce | + ReceivalResult::TooManyUnrewardedRelayers | + ReceivalResult::TooManyUnconfirmedMessages => (dispatch_weight, true), + }; + + let unspent_weight = sp_std::cmp::min(unspent_weight, dispatch_weight); + dispatch_weight_left -= dispatch_weight - unspent_weight; + actual_weight = actual_weight.saturating_sub(unspent_weight).saturating_sub( + // delivery call weight formula assumes that the fee is paid at + // this (target) chain. If the message is prepaid at the source + // chain, let's refund relayer with this extra cost. + if refund_pay_dispatch_fee { + T::WeightInfo::pay_inbound_dispatch_fee_overhead() + } else { + 0 + }, + ); + } + } + + log::trace!( + target: "runtime::bridge-messages", + "Received messages: total={}, valid={}. Weight used: {}/{}", + total_messages, + valid_messages, + actual_weight, + declared_weight, + ); + + Ok(PostDispatchInfo { actual_weight: Some(actual_weight), pays_fee: Pays::Yes }) + } + + /// Receive messages delivery proof from bridged chain. + #[pallet::weight(T::WeightInfo::receive_messages_delivery_proof_weight( + proof, + relayers_state, + T::DbWeight::get(), + ))] + pub fn receive_messages_delivery_proof( + origin: OriginFor, + proof: MessagesDeliveryProofOf, + relayers_state: UnrewardedRelayersState, + ) -> DispatchResultWithPostInfo { + ensure_not_halted::()?; + + // why do we need to know the weight of this (`receive_messages_delivery_proof`) call? + // Because we may want to return some funds for messages that are not processed by the + // delivery callback, or if their actual processing weight is less than accounted by + // weight formula. So to refund relayer, we need to: + // + // ActualWeight = DeclaredWeight - UnspentCallbackWeight + // + // The DeclaredWeight is exactly what's computed here. Unfortunately it is impossible + // to get pre-computed value (and it has been already computed by the executive). + let single_message_callback_overhead = + T::WeightInfo::single_message_callback_overhead(T::DbWeight::get()); + let declared_weight = T::WeightInfo::receive_messages_delivery_proof_weight( + &proof, + &relayers_state, + T::DbWeight::get(), + ); + let mut actual_weight = declared_weight; + + let confirmation_relayer = ensure_signed(origin)?; + let (lane_id, lane_data) = T::TargetHeaderChain::verify_messages_delivery_proof(proof) + .map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Rejecting invalid messages delivery proof: {:?}", + err, + ); + + Error::::InvalidMessagesDeliveryProof + })?; + + // verify that the relayer has declared correct `lane_data::relayers` state + // (we only care about total number of entries and messages, because this affects call + // weight) + ensure!( + total_unrewarded_messages(&lane_data.relayers).unwrap_or(MessageNonce::MAX) == + relayers_state.total_messages && + lane_data.relayers.len() as MessageNonce == + relayers_state.unrewarded_relayer_entries, + Error::::InvalidUnrewardedRelayersState + ); + + // mark messages as delivered + let mut lane = outbound_lane::(lane_id); + let last_delivered_nonce = lane_data.last_delivered_nonce(); + let confirmed_messages = match lane.confirm_delivery( + relayers_state.total_messages, + last_delivered_nonce, + &lane_data.relayers, + ) { + ReceivalConfirmationResult::ConfirmedMessages(confirmed_messages) => + Some(confirmed_messages), + ReceivalConfirmationResult::NoNewConfirmations => None, + ReceivalConfirmationResult::TryingToConfirmMoreMessagesThanExpected( + to_confirm_messages_count, + ) => { + log::trace!( + target: "runtime::bridge-messages", + "Messages delivery proof contains too many messages to confirm: {} vs declared {}", + to_confirm_messages_count, + relayers_state.total_messages, + ); + + fail!(Error::::TryingToConfirmMoreMessagesThanExpected); + }, + error => { + log::trace!( + target: "runtime::bridge-messages", + "Messages delivery proof contains invalid unrewarded relayers vec: {:?}", + error, + ); + + fail!(Error::::InvalidUnrewardedRelayers); + }, + }; + + if let Some(confirmed_messages) = confirmed_messages { + // handle messages delivery confirmation + let preliminary_callback_overhead = + relayers_state.total_messages.saturating_mul(single_message_callback_overhead); + let actual_callback_weight = + T::OnDeliveryConfirmed::on_messages_delivered(&lane_id, &confirmed_messages); + match preliminary_callback_overhead.checked_sub(actual_callback_weight) { + Some(difference) if difference == 0 => (), + Some(difference) => { + log::trace!( + target: "runtime::bridge-messages", + "T::OnDeliveryConfirmed callback has spent less weight than expected. Refunding: \ + {} - {} = {}", + preliminary_callback_overhead, + actual_callback_weight, + difference, + ); + actual_weight = actual_weight.saturating_sub(difference); + }, + None => { + debug_assert!( + false, + "T::OnDeliveryConfirmed callback consumed too much weight." + ); + log::error!( + target: "runtime::bridge-messages", + "T::OnDeliveryConfirmed callback has spent more weight that it is allowed to: \ + {} vs {}", + preliminary_callback_overhead, + actual_callback_weight, + ); + }, + } + + // emit 'delivered' event + let received_range = confirmed_messages.begin..=confirmed_messages.end; + Self::deposit_event(Event::MessagesDelivered(lane_id, confirmed_messages)); + + // if some new messages have been confirmed, reward relayers + let relayer_fund_account = + relayer_fund_account_id::(); + >::MessageDeliveryAndDispatchPayment::pay_relayers_rewards( + lane_id, + lane_data.relayers, + &confirmation_relayer, + &received_range, + &relayer_fund_account, + ); + } + + log::trace!( + target: "runtime::bridge-messages", + "Received messages delivery proof up to (and including) {} at lane {:?}", + last_delivered_nonce, + lane_id, + ); + + Ok(PostDispatchInfo { actual_weight: Some(actual_weight), pays_fee: Pays::Yes }) + } + } + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event, I: 'static = ()> { + /// Pallet parameter has been updated. + ParameterUpdated(T::Parameter), + /// Message has been accepted and is waiting to be delivered. + MessageAccepted(LaneId, MessageNonce), + /// Messages in the inclusive range have been delivered to the bridged chain. + MessagesDelivered(LaneId, DeliveredMessages), + } + + #[pallet::error] + pub enum Error { + /// All pallet operations are halted. + Halted, + /// Message has been treated as invalid by chain verifier. + MessageRejectedByChainVerifier, + /// Message has been treated as invalid by lane verifier. + MessageRejectedByLaneVerifier, + /// Submitter has failed to pay fee for delivering and dispatching messages. + FailedToWithdrawMessageFee, + /// The transaction brings too many messages. + TooManyMessagesInTheProof, + /// Invalid messages has been submitted. + InvalidMessagesProof, + /// Invalid messages delivery proof has been submitted. + InvalidMessagesDeliveryProof, + /// The bridged chain has invalid `UnrewardedRelayers` in its storage (fatal for the lane). + InvalidUnrewardedRelayers, + /// The relayer has declared invalid unrewarded relayers state in the + /// `receive_messages_delivery_proof` call. + InvalidUnrewardedRelayersState, + /// The message someone is trying to work with (i.e. increase fee) is already-delivered. + MessageIsAlreadyDelivered, + /// The message someone is trying to work with (i.e. increase fee) is not yet sent. + MessageIsNotYetSent, + /// The number of actually confirmed messages is going to be larger than the number of + /// messages in the proof. This may mean that this or bridged chain storage is corrupted. + TryingToConfirmMoreMessagesThanExpected, + } + + /// Optional pallet owner. + /// + /// Pallet owner has a right to halt all pallet operations and then resume it. If it is + /// `None`, then there are no direct ways to halt/resume pallet operations, but other + /// runtime methods may still be used to do that (i.e. democracy::referendum to update halt + /// flag directly or call the `halt_operations`). + #[pallet::storage] + #[pallet::getter(fn module_owner)] + pub type PalletOwner, I: 'static = ()> = StorageValue<_, T::AccountId>; + + /// The current operating mode of the pallet. + /// + /// Depending on the mode either all, some, or no transactions will be allowed. + #[pallet::storage] + #[pallet::getter(fn operating_mode)] + pub type PalletOperatingMode, I: 'static = ()> = + StorageValue<_, OperatingMode, ValueQuery>; + + /// Map of lane id => inbound lane data. + #[pallet::storage] + pub type InboundLanes, I: 'static = ()> = + StorageMap<_, Blake2_128Concat, LaneId, InboundLaneData, ValueQuery>; + + /// Map of lane id => outbound lane data. + #[pallet::storage] + pub type OutboundLanes, I: 'static = ()> = + StorageMap<_, Blake2_128Concat, LaneId, OutboundLaneData, ValueQuery>; + + /// All queued outbound messages. + #[pallet::storage] + pub type OutboundMessages, I: 'static = ()> = + StorageMap<_, Blake2_128Concat, MessageKey, MessageData>; + + #[pallet::genesis_config] + pub struct GenesisConfig, I: 'static = ()> { + /// Initial pallet operating mode. + pub operating_mode: OperatingMode, + /// Initial pallet owner. + pub owner: Option, + /// Dummy marker. + pub phantom: sp_std::marker::PhantomData, + } + + #[cfg(feature = "std")] + impl, I: 'static> Default for GenesisConfig { + fn default() -> Self { + Self { + operating_mode: Default::default(), + owner: Default::default(), + phantom: Default::default(), + } + } + } + + #[pallet::genesis_build] + impl, I: 'static> GenesisBuild for GenesisConfig { + fn build(&self) { + PalletOperatingMode::::put(&self.operating_mode); + if let Some(ref owner) = self.owner { + PalletOwner::::put(owner); + } + } + } + + impl, I: 'static> Pallet { + /// Get stored data of the outbound message with given nonce. + pub fn outbound_message_data( + lane: LaneId, + nonce: MessageNonce, + ) -> Option> { + OutboundMessages::::get(MessageKey { lane_id: lane, nonce }) + } + + /// Get nonce of the latest generated message at given outbound lane. + pub fn outbound_latest_generated_nonce(lane: LaneId) -> MessageNonce { + OutboundLanes::::get(&lane).latest_generated_nonce + } + + /// Get nonce of the latest confirmed message at given outbound lane. + pub fn outbound_latest_received_nonce(lane: LaneId) -> MessageNonce { + OutboundLanes::::get(&lane).latest_received_nonce + } + + /// Get nonce of the latest received message at given inbound lane. + pub fn inbound_latest_received_nonce(lane: LaneId) -> MessageNonce { + InboundLanes::::get(&lane).last_delivered_nonce() + } + + /// Get nonce of the latest confirmed message at given inbound lane. + pub fn inbound_latest_confirmed_nonce(lane: LaneId) -> MessageNonce { + InboundLanes::::get(&lane).last_confirmed_nonce + } + + /// Get state of unrewarded relayers set. + pub fn inbound_unrewarded_relayers_state( + lane: bp_messages::LaneId, + ) -> bp_messages::UnrewardedRelayersState { + let relayers = InboundLanes::::get(&lane).relayers; + bp_messages::UnrewardedRelayersState { + unrewarded_relayer_entries: relayers.len() as _, + messages_in_oldest_entry: relayers + .front() + .map(|entry| 1 + entry.messages.end - entry.messages.begin) + .unwrap_or(0), + total_messages: total_unrewarded_messages(&relayers).unwrap_or(MessageNonce::MAX), + } + } + } +} + +/// Getting storage keys for messages and lanes states. These keys are normally used when building +/// messages and lanes states proofs. +pub mod storage_keys { + use super::*; + use sp_core::storage::StorageKey; + + /// Storage key of the outbound message in the runtime storage. + pub fn message_key(pallet_prefix: &str, lane: &LaneId, nonce: MessageNonce) -> StorageKey { + bp_runtime::storage_map_final_key_blake2_128concat( + pallet_prefix, + "OutboundMessages", + &MessageKey { lane_id: *lane, nonce }.encode(), + ) + } + + /// Storage key of the outbound message lane state in the runtime storage. + pub fn outbound_lane_data_key(pallet_prefix: &str, lane: &LaneId) -> StorageKey { + bp_runtime::storage_map_final_key_blake2_128concat(pallet_prefix, "OutboundLanes", lane) + } + + /// Storage key of the inbound message lane state in the runtime storage. + pub fn inbound_lane_data_key(pallet_prefix: &str, lane: &LaneId) -> StorageKey { + bp_runtime::storage_map_final_key_blake2_128concat(pallet_prefix, "InboundLanes", lane) + } +} + +/// AccountId of the shared relayer fund account. +/// +/// This account is passed to `MessageDeliveryAndDispatchPayment` trait, and depending +/// on the implementation it can be used to store relayers rewards. +/// See [`InstantCurrencyPayments`] for a concrete implementation. +pub fn relayer_fund_account_id>( +) -> AccountId { + let encoded_id = bp_runtime::derive_relayer_fund_account_id(bp_runtime::NO_INSTANCE_ID); + AccountIdConverter::convert(encoded_id) +} + +impl + bp_messages::source_chain::MessagesBridge< + T::AccountId, + T::OutboundMessageFee, + T::OutboundPayload, + > for Pallet +where + T: Config, + I: 'static, +{ + type Error = sp_runtime::DispatchErrorWithPostInfo; + + fn send_message( + sender: bp_messages::source_chain::Sender, + lane: LaneId, + message: T::OutboundPayload, + delivery_and_dispatch_fee: T::OutboundMessageFee, + ) -> Result { + crate::send_message::(sender, lane, message, delivery_and_dispatch_fee) + } +} + +/// Function that actually sends message. +fn send_message, I: 'static>( + submitter: bp_messages::source_chain::Sender, + lane_id: LaneId, + payload: T::OutboundPayload, + delivery_and_dispatch_fee: T::OutboundMessageFee, +) -> sp_std::result::Result< + SendMessageArtifacts, + sp_runtime::DispatchErrorWithPostInfo, +> { + ensure_normal_operating_mode::()?; + + // initially, actual (post-dispatch) weight is equal to pre-dispatch weight + let mut actual_weight = T::WeightInfo::send_message_weight(&payload, T::DbWeight::get()); + + // let's first check if message can be delivered to target chain + T::TargetHeaderChain::verify_message(&payload).map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Message to lane {:?} is rejected by target chain: {:?}", + lane_id, + err, + ); + + Error::::MessageRejectedByChainVerifier + })?; + + // now let's enforce any additional lane rules + let mut lane = outbound_lane::(lane_id); + T::LaneMessageVerifier::verify_message( + &submitter, + &delivery_and_dispatch_fee, + &lane_id, + &lane.data(), + &payload, + ) + .map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Message to lane {:?} is rejected by lane verifier: {:?}", + lane_id, + err, + ); + + Error::::MessageRejectedByLaneVerifier + })?; + + // let's withdraw delivery and dispatch fee from submitter + T::MessageDeliveryAndDispatchPayment::pay_delivery_and_dispatch_fee( + &submitter, + &delivery_and_dispatch_fee, + &relayer_fund_account_id::(), + ) + .map_err(|err| { + log::trace!( + target: "runtime::bridge-messages", + "Message to lane {:?} is rejected because submitter {:?} is unable to pay fee {:?}: {:?}", + lane_id, + submitter, + delivery_and_dispatch_fee, + err, + ); + + Error::::FailedToWithdrawMessageFee + })?; + + // finally, save message in outbound storage and emit event + let encoded_payload = payload.encode(); + let encoded_payload_len = encoded_payload.len(); + let nonce = + lane.send_message(MessageData { payload: encoded_payload, fee: delivery_and_dispatch_fee }); + // Guaranteed to be called outside only when the message is accepted. + // We assume that the maximum weight call back used is `single_message_callback_overhead`, so do + // not perform complex db operation in callback. If you want to, put these magic logic in + // outside pallet and control the weight there. + let single_message_callback_overhead = + T::WeightInfo::single_message_callback_overhead(T::DbWeight::get()); + let actual_callback_weight = T::OnMessageAccepted::on_messages_accepted(&lane_id, &nonce); + match single_message_callback_overhead.checked_sub(actual_callback_weight) { + Some(difference) if difference == 0 => (), + Some(difference) => { + log::trace!( + target: "runtime::bridge-messages", + "T::OnMessageAccepted callback has spent less weight than expected. Refunding: \ + {} - {} = {}", + single_message_callback_overhead, + actual_callback_weight, + difference, + ); + actual_weight = actual_weight.saturating_sub(difference); + }, + None => { + debug_assert!(false, "T::OnMessageAccepted callback consumed too much weight."); + log::error!( + target: "runtime::bridge-messages", + "T::OnMessageAccepted callback has spent more weight that it is allowed to: \ + {} vs {}", + single_message_callback_overhead, + actual_callback_weight, + ); + }, + } + + // message sender pays for pruning at most `MaxMessagesToPruneAtOnce` messages + // the cost of pruning every message is roughly single db write + // => lets refund sender if less than `MaxMessagesToPruneAtOnce` messages pruned + let max_messages_to_prune = T::MaxMessagesToPruneAtOnce::get(); + let pruned_messages = lane.prune_messages(max_messages_to_prune); + if let Some(extra_messages) = max_messages_to_prune.checked_sub(pruned_messages) { + actual_weight = actual_weight.saturating_sub(T::DbWeight::get().writes(extra_messages)); + } + + log::trace!( + target: "runtime::bridge-messages", + "Accepted message {} to lane {:?}. Message size: {:?}", + nonce, + lane_id, + encoded_payload_len, + ); + + Pallet::::deposit_event(Event::MessageAccepted(lane_id, nonce)); + + Ok(SendMessageArtifacts { nonce, weight: actual_weight }) +} + +/// Ensure that the origin is either root, or `PalletOwner`. +fn ensure_owner_or_root, I: 'static>(origin: T::Origin) -> Result<(), BadOrigin> { + match origin.into() { + Ok(RawOrigin::Root) => Ok(()), + Ok(RawOrigin::Signed(ref signer)) + if Some(signer) == Pallet::::module_owner().as_ref() => + Ok(()), + _ => Err(BadOrigin), + } +} + +/// Ensure that the pallet is in normal operational mode. +fn ensure_normal_operating_mode, I: 'static>() -> Result<(), Error> { + if PalletOperatingMode::::get() != OperatingMode::Normal { + Err(Error::::Halted) + } else { + Ok(()) + } +} + +/// Ensure that the pallet is not halted. +fn ensure_not_halted, I: 'static>() -> Result<(), Error> { + if PalletOperatingMode::::get() == OperatingMode::Halted { + Err(Error::::Halted) + } else { + Ok(()) + } +} + +/// Creates new inbound lane object, backed by runtime storage. +fn inbound_lane, I: 'static>( + lane_id: LaneId, +) -> InboundLane> { + InboundLane::new(inbound_lane_storage::(lane_id)) +} + +/// Creates new runtime inbound lane storage. +fn inbound_lane_storage, I: 'static>( + lane_id: LaneId, +) -> RuntimeInboundLaneStorage { + RuntimeInboundLaneStorage { + lane_id, + cached_data: RefCell::new(None), + _phantom: Default::default(), + } +} + +/// Creates new outbound lane object, backed by runtime storage. +fn outbound_lane, I: 'static>( + lane_id: LaneId, +) -> OutboundLane> { + OutboundLane::new(RuntimeOutboundLaneStorage { lane_id, _phantom: Default::default() }) +} + +/// Runtime inbound lane storage. +struct RuntimeInboundLaneStorage, I: 'static = ()> { + lane_id: LaneId, + cached_data: RefCell>>, + _phantom: PhantomData, +} + +impl, I: 'static> InboundLaneStorage for RuntimeInboundLaneStorage { + type MessageFee = T::InboundMessageFee; + type Relayer = T::InboundRelayer; + + fn id(&self) -> LaneId { + self.lane_id + } + + fn max_unrewarded_relayer_entries(&self) -> MessageNonce { + T::MaxUnrewardedRelayerEntriesAtInboundLane::get() + } + + fn max_unconfirmed_messages(&self) -> MessageNonce { + T::MaxUnconfirmedMessagesAtInboundLane::get() + } + + fn data(&self) -> InboundLaneData { + match self.cached_data.clone().into_inner() { + Some(data) => data, + None => { + let data = InboundLanes::::get(&self.lane_id); + *self.cached_data.try_borrow_mut().expect( + "we're in the single-threaded environment;\ + we have no recursive borrows; qed", + ) = Some(data.clone()); + data + }, + } + } + + fn set_data(&mut self, data: InboundLaneData) { + *self.cached_data.try_borrow_mut().expect( + "we're in the single-threaded environment;\ + we have no recursive borrows; qed", + ) = Some(data.clone()); + InboundLanes::::insert(&self.lane_id, data) + } +} + +/// Runtime outbound lane storage. +struct RuntimeOutboundLaneStorage { + lane_id: LaneId, + _phantom: PhantomData<(T, I)>, +} + +impl, I: 'static> OutboundLaneStorage for RuntimeOutboundLaneStorage { + type MessageFee = T::OutboundMessageFee; + + fn id(&self) -> LaneId { + self.lane_id + } + + fn data(&self) -> OutboundLaneData { + OutboundLanes::::get(&self.lane_id) + } + + fn set_data(&mut self, data: OutboundLaneData) { + OutboundLanes::::insert(&self.lane_id, data) + } + + #[cfg(test)] + fn message(&self, nonce: &MessageNonce) -> Option> { + OutboundMessages::::get(MessageKey { lane_id: self.lane_id, nonce: *nonce }) + } + + fn save_message( + &mut self, + nonce: MessageNonce, + mesage_data: MessageData, + ) { + OutboundMessages::::insert(MessageKey { lane_id: self.lane_id, nonce }, mesage_data); + } + + fn remove_message(&mut self, nonce: &MessageNonce) { + OutboundMessages::::remove(MessageKey { lane_id: self.lane_id, nonce: *nonce }); + } +} + +/// Verify messages proof and return proved messages with decoded payload. +fn verify_and_decode_messages_proof, Fee, DispatchPayload: Decode>( + proof: Chain::MessagesProof, + messages_count: u32, +) -> Result>, Chain::Error> { + // `receive_messages_proof` weight formula and `MaxUnconfirmedMessagesAtInboundLane` check + // guarantees that the `message_count` is sane and Vec may be allocated. + // (tx with too many messages will either be rejected from the pool, or will fail earlier) + Chain::verify_messages_proof(proof, messages_count).map(|messages_by_lane| { + messages_by_lane + .into_iter() + .map(|(lane, lane_data)| { + ( + lane, + ProvedLaneMessages { + lane_state: lane_data.lane_state, + messages: lane_data.messages.into_iter().map(Into::into).collect(), + }, + ) + }) + .collect() + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::mock::{ + message, message_payload, run_test, unrewarded_relayer, Event as TestEvent, Origin, + TestMessageDeliveryAndDispatchPayment, TestMessagesDeliveryProof, TestMessagesParameter, + TestMessagesProof, TestOnDeliveryConfirmed1, TestOnDeliveryConfirmed2, + TestOnMessageAccepted, TestRuntime, TokenConversionRate, PAYLOAD_REJECTED_BY_TARGET_CHAIN, + REGULAR_PAYLOAD, TEST_LANE_ID, TEST_RELAYER_A, TEST_RELAYER_B, + }; + use bp_messages::{UnrewardedRelayer, UnrewardedRelayersState}; + use frame_support::{assert_noop, assert_ok, weights::Weight}; + use frame_system::{EventRecord, Pallet as System, Phase}; + use hex_literal::hex; + use sp_runtime::DispatchError; + + fn get_ready_for_events() { + System::::set_block_number(1); + System::::reset_events(); + } + + fn send_regular_message() -> Weight { + get_ready_for_events(); + + let message_nonce = + outbound_lane::(TEST_LANE_ID).data().latest_generated_nonce + 1; + let weight = Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + REGULAR_PAYLOAD.declared_weight, + ) + .expect("send_message has failed") + .actual_weight + .expect("send_message always returns Some"); + + // check event with assigned nonce + assert_eq!( + System::::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: TestEvent::Messages(Event::MessageAccepted(TEST_LANE_ID, message_nonce)), + topics: vec![], + }], + ); + + // check that fee has been withdrawn from submitter + assert!(TestMessageDeliveryAndDispatchPayment::is_fee_paid( + 1, + REGULAR_PAYLOAD.declared_weight + )); + + weight + } + + fn receive_messages_delivery_proof() { + System::::set_block_number(1); + System::::reset_events(); + + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 1, + relayers: vec![UnrewardedRelayer { + relayer: 0, + messages: DeliveredMessages::new(1, true), + }] + .into_iter() + .collect(), + }, + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 1, + ..Default::default() + }, + )); + + assert_eq!( + System::::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: TestEvent::Messages(Event::MessagesDelivered( + TEST_LANE_ID, + DeliveredMessages::new(1, true), + )), + topics: vec![], + }], + ); + } + + #[test] + fn pallet_owner_may_change_owner() { + run_test(|| { + PalletOwner::::put(2); + + assert_ok!(Pallet::::set_owner(Origin::root(), Some(1))); + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(2), OperatingMode::Halted), + DispatchError::BadOrigin, + ); + assert_ok!(Pallet::::set_operating_mode( + Origin::root(), + OperatingMode::Halted + )); + + assert_ok!(Pallet::::set_owner(Origin::signed(1), None)); + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), + DispatchError::BadOrigin, + ); + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(2), OperatingMode::Normal), + DispatchError::BadOrigin, + ); + assert_ok!(Pallet::::set_operating_mode( + Origin::root(), + OperatingMode::Normal + )); + }); + } + + #[test] + fn pallet_may_be_halted_by_root() { + run_test(|| { + assert_ok!(Pallet::::set_operating_mode( + Origin::root(), + OperatingMode::Halted + )); + assert_ok!(Pallet::::set_operating_mode( + Origin::root(), + OperatingMode::Normal + )); + }); + } + + #[test] + fn pallet_may_be_halted_by_owner() { + run_test(|| { + PalletOwner::::put(2); + + assert_ok!(Pallet::::set_operating_mode( + Origin::signed(2), + OperatingMode::Halted + )); + assert_ok!(Pallet::::set_operating_mode( + Origin::signed(2), + OperatingMode::Normal + )); + + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Halted), + DispatchError::BadOrigin, + ); + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), + DispatchError::BadOrigin, + ); + + assert_ok!(Pallet::::set_operating_mode( + Origin::signed(2), + OperatingMode::Halted + )); + assert_noop!( + Pallet::::set_operating_mode(Origin::signed(1), OperatingMode::Normal), + DispatchError::BadOrigin, + ); + }); + } + + #[test] + fn pallet_parameter_may_be_updated_by_root() { + run_test(|| { + get_ready_for_events(); + + let parameter = TestMessagesParameter::TokenConversionRate(10.into()); + assert_ok!(Pallet::::update_pallet_parameter( + Origin::root(), + parameter.clone(), + )); + + assert_eq!(TokenConversionRate::get(), 10.into()); + assert_eq!( + System::::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: TestEvent::Messages(Event::ParameterUpdated(parameter)), + topics: vec![], + }], + ); + }); + } + + #[test] + fn pallet_parameter_may_be_updated_by_owner() { + run_test(|| { + PalletOwner::::put(2); + get_ready_for_events(); + + let parameter = TestMessagesParameter::TokenConversionRate(10.into()); + assert_ok!(Pallet::::update_pallet_parameter( + Origin::signed(2), + parameter.clone(), + )); + + assert_eq!(TokenConversionRate::get(), 10.into()); + assert_eq!( + System::::events(), + vec![EventRecord { + phase: Phase::Initialization, + event: TestEvent::Messages(Event::ParameterUpdated(parameter)), + topics: vec![], + }], + ); + }); + } + + #[test] + fn pallet_parameter_cant_be_updated_by_arbitrary_submitter() { + run_test(|| { + assert_noop!( + Pallet::::update_pallet_parameter( + Origin::signed(2), + TestMessagesParameter::TokenConversionRate(10.into()), + ), + DispatchError::BadOrigin, + ); + + PalletOwner::::put(2); + + assert_noop!( + Pallet::::update_pallet_parameter( + Origin::signed(1), + TestMessagesParameter::TokenConversionRate(10.into()), + ), + DispatchError::BadOrigin, + ); + }); + } + + #[test] + fn fixed_u128_works_as_i_think() { + // this test is here just to be sure that conversion rate may be represented with FixedU128 + run_test(|| { + use sp_runtime::{FixedPointNumber, FixedU128}; + + // 1:1 conversion that we use by default for testnets + let rialto_token = 1u64; + let rialto_token_in_millau_tokens = + TokenConversionRate::get().saturating_mul_int(rialto_token); + assert_eq!(rialto_token_in_millau_tokens, 1); + + // let's say conversion rate is 1:1.7 + let conversion_rate = FixedU128::saturating_from_rational(170, 100); + let rialto_tokens = 100u64; + let rialto_tokens_in_millau_tokens = conversion_rate.saturating_mul_int(rialto_tokens); + assert_eq!(rialto_tokens_in_millau_tokens, 170); + + // let's say conversion rate is 1:0.25 + let conversion_rate = FixedU128::saturating_from_rational(25, 100); + let rialto_tokens = 100u64; + let rialto_tokens_in_millau_tokens = conversion_rate.saturating_mul_int(rialto_tokens); + assert_eq!(rialto_tokens_in_millau_tokens, 25); + }); + } + + #[test] + fn pallet_rejects_transactions_if_halted() { + run_test(|| { + // send message first to be able to check that delivery_proof fails later + send_regular_message(); + + PalletOperatingMode::::put(OperatingMode::Halted); + + assert_noop!( + Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + REGULAR_PAYLOAD.declared_weight, + ), + Error::::Halted, + ); + + assert_noop!( + Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 1,), + Error::::Halted, + ); + + assert_noop!( + Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![message(2, REGULAR_PAYLOAD)]).into(), + 1, + REGULAR_PAYLOAD.declared_weight, + ), + Error::::Halted, + ); + + assert_noop!( + Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 1, + relayers: vec![unrewarded_relayer(1, 1, TEST_RELAYER_A)] + .into_iter() + .collect(), + }, + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 1, + total_messages: 1, + }, + ), + Error::::Halted, + ); + }); + } + + #[test] + fn pallet_rejects_new_messages_in_rejecting_outbound_messages_operating_mode() { + run_test(|| { + // send message first to be able to check that delivery_proof fails later + send_regular_message(); + + PalletOperatingMode::::put(OperatingMode::RejectingOutboundMessages); + + assert_noop!( + Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + REGULAR_PAYLOAD.declared_weight, + ), + Error::::Halted, + ); + + assert_ok!(Pallet::::increase_message_fee( + Origin::signed(1), + TEST_LANE_ID, + 1, + 1, + )); + + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), + 1, + REGULAR_PAYLOAD.declared_weight, + ),); + + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 1, + relayers: vec![unrewarded_relayer(1, 1, TEST_RELAYER_A)] + .into_iter() + .collect(), + }, + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 1, + total_messages: 1, + }, + )); + }); + } + + #[test] + fn send_message_works() { + run_test(|| { + send_regular_message(); + }); + } + + #[test] + fn chain_verifier_rejects_invalid_message_in_send_message() { + run_test(|| { + // messages with this payload are rejected by target chain verifier + assert_noop!( + Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + PAYLOAD_REJECTED_BY_TARGET_CHAIN, + PAYLOAD_REJECTED_BY_TARGET_CHAIN.declared_weight + ), + Error::::MessageRejectedByChainVerifier, + ); + }); + } + + #[test] + fn lane_verifier_rejects_invalid_message_in_send_message() { + run_test(|| { + // messages with zero fee are rejected by lane verifier + assert_noop!( + Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + 0 + ), + Error::::MessageRejectedByLaneVerifier, + ); + }); + } + + #[test] + fn message_send_fails_if_submitter_cant_pay_message_fee() { + run_test(|| { + TestMessageDeliveryAndDispatchPayment::reject_payments(); + assert_noop!( + Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + REGULAR_PAYLOAD.declared_weight + ), + Error::::FailedToWithdrawMessageFee, + ); + }); + } + + #[test] + fn receive_messages_proof_works() { + run_test(|| { + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), + 1, + REGULAR_PAYLOAD.declared_weight, + )); + + assert_eq!(InboundLanes::::get(TEST_LANE_ID).last_delivered_nonce(), 1); + }); + } + + #[test] + fn receive_messages_proof_updates_confirmed_message_nonce() { + run_test(|| { + // say we have received 10 messages && last confirmed message is 8 + InboundLanes::::insert( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 8, + relayers: vec![ + unrewarded_relayer(9, 9, TEST_RELAYER_A), + unrewarded_relayer(10, 10, TEST_RELAYER_B), + ] + .into_iter() + .collect(), + }, + ); + assert_eq!( + Pallet::::inbound_unrewarded_relayers_state(TEST_LANE_ID), + UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + messages_in_oldest_entry: 1, + total_messages: 2, + }, + ); + + // message proof includes outbound lane state with latest confirmed message updated to 9 + let mut message_proof: TestMessagesProof = + Ok(vec![message(11, REGULAR_PAYLOAD)]).into(); + message_proof.result.as_mut().unwrap()[0].1.lane_state = + Some(OutboundLaneData { latest_received_nonce: 9, ..Default::default() }); + + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + message_proof, + 1, + REGULAR_PAYLOAD.declared_weight, + )); + + assert_eq!( + InboundLanes::::get(TEST_LANE_ID), + InboundLaneData { + last_confirmed_nonce: 9, + relayers: vec![ + unrewarded_relayer(10, 10, TEST_RELAYER_B), + unrewarded_relayer(11, 11, TEST_RELAYER_A) + ] + .into_iter() + .collect(), + }, + ); + assert_eq!( + Pallet::::inbound_unrewarded_relayers_state(TEST_LANE_ID), + UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + messages_in_oldest_entry: 1, + total_messages: 2, + }, + ); + }); + } + + #[test] + fn receive_messages_proof_does_not_accept_message_if_dispatch_weight_is_not_enough() { + run_test(|| { + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), + 1, + REGULAR_PAYLOAD.declared_weight - 1, + )); + assert_eq!(InboundLanes::::get(TEST_LANE_ID).last_delivered_nonce(), 0); + }); + } + + #[test] + fn receive_messages_proof_rejects_invalid_proof() { + run_test(|| { + assert_noop!( + Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Err(()).into(), + 1, + 0, + ), + Error::::InvalidMessagesProof, + ); + }); + } + + #[test] + fn receive_messages_proof_rejects_proof_with_too_many_messages() { + run_test(|| { + assert_noop!( + Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![message(1, REGULAR_PAYLOAD)]).into(), + u32::MAX, + 0, + ), + Error::::TooManyMessagesInTheProof, + ); + }); + } + + #[test] + fn receive_messages_delivery_proof_works() { + run_test(|| { + send_regular_message(); + receive_messages_delivery_proof(); + + assert_eq!( + OutboundLanes::::get(&TEST_LANE_ID).latest_received_nonce, + 1, + ); + }); + } + + #[test] + fn receive_messages_delivery_proof_rewards_relayers() { + run_test(|| { + assert_ok!(Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + 1000, + )); + assert_ok!(Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + REGULAR_PAYLOAD, + 2000, + )); + + // this reports delivery of message 1 => reward is paid to TEST_RELAYER_A + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + relayers: vec![unrewarded_relayer(1, 1, TEST_RELAYER_A)] + .into_iter() + .collect(), + ..Default::default() + } + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 1, + ..Default::default() + }, + )); + assert!(TestMessageDeliveryAndDispatchPayment::is_reward_paid(TEST_RELAYER_A, 1000)); + assert!(!TestMessageDeliveryAndDispatchPayment::is_reward_paid(TEST_RELAYER_B, 2000)); + + // this reports delivery of both message 1 and message 2 => reward is paid only to + // TEST_RELAYER_B + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + relayers: vec![ + unrewarded_relayer(1, 1, TEST_RELAYER_A), + unrewarded_relayer(2, 2, TEST_RELAYER_B) + ] + .into_iter() + .collect(), + ..Default::default() + } + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + total_messages: 2, + ..Default::default() + }, + )); + assert!(!TestMessageDeliveryAndDispatchPayment::is_reward_paid(TEST_RELAYER_A, 1000)); + assert!(TestMessageDeliveryAndDispatchPayment::is_reward_paid(TEST_RELAYER_B, 2000)); + }); + } + + #[test] + fn receive_messages_delivery_proof_rejects_invalid_proof() { + run_test(|| { + assert_noop!( + Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Err(())), + Default::default(), + ), + Error::::InvalidMessagesDeliveryProof, + ); + }); + } + + #[test] + fn receive_messages_delivery_proof_rejects_proof_if_declared_relayers_state_is_invalid() { + run_test(|| { + // when number of relayers entries is invalid + assert_noop!( + Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + relayers: vec![ + unrewarded_relayer(1, 1, TEST_RELAYER_A), + unrewarded_relayer(2, 2, TEST_RELAYER_B) + ] + .into_iter() + .collect(), + ..Default::default() + } + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 2, + ..Default::default() + }, + ), + Error::::InvalidUnrewardedRelayersState, + ); + + // when number of messages is invalid + assert_noop!( + Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + relayers: vec![ + unrewarded_relayer(1, 1, TEST_RELAYER_A), + unrewarded_relayer(2, 2, TEST_RELAYER_B) + ] + .into_iter() + .collect(), + ..Default::default() + } + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + total_messages: 1, + ..Default::default() + }, + ), + Error::::InvalidUnrewardedRelayersState, + ); + }); + } + + #[test] + fn receive_messages_accepts_single_message_with_invalid_payload() { + run_test(|| { + let mut invalid_message = message(1, REGULAR_PAYLOAD); + invalid_message.data.payload = Vec::new(); + + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok(vec![invalid_message]).into(), + 1, + 0, // weight may be zero in this case (all messages are improperly encoded) + ),); + + assert_eq!(InboundLanes::::get(&TEST_LANE_ID).last_delivered_nonce(), 1,); + }); + } + + #[test] + fn receive_messages_accepts_batch_with_message_with_invalid_payload() { + run_test(|| { + let mut invalid_message = message(2, REGULAR_PAYLOAD); + invalid_message.data.payload = Vec::new(); + + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + Ok( + vec![message(1, REGULAR_PAYLOAD), invalid_message, message(3, REGULAR_PAYLOAD),] + ) + .into(), + 3, + REGULAR_PAYLOAD.declared_weight + REGULAR_PAYLOAD.declared_weight, + ),); + + assert_eq!(InboundLanes::::get(&TEST_LANE_ID).last_delivered_nonce(), 3,); + }); + } + + #[test] + fn storage_message_key_computed_properly() { + // If this test fails, then something has been changed in module storage that is breaking + // all previously crafted messages proofs. + let storage_key = storage_keys::message_key("BridgeMessages", &*b"test", 42).0; + assert_eq!( + storage_key, + hex!("dd16c784ebd3390a9bc0357c7511ed018a395e6242c6813b196ca31ed0547ea79446af0e09063bd4a7874aef8a997cec746573742a00000000000000").to_vec(), + "Unexpected storage key: {}", + hex::encode(&storage_key), + ); + } + + #[test] + fn outbound_lane_data_key_computed_properly() { + // If this test fails, then something has been changed in module storage that is breaking + // all previously crafted outbound lane state proofs. + let storage_key = storage_keys::outbound_lane_data_key("BridgeMessages", &*b"test").0; + assert_eq!( + storage_key, + hex!("dd16c784ebd3390a9bc0357c7511ed0196c246acb9b55077390e3ca723a0ca1f44a8995dd50b6657a037a7839304535b74657374").to_vec(), + "Unexpected storage key: {}", + hex::encode(&storage_key), + ); + } + + #[test] + fn inbound_lane_data_key_computed_properly() { + // If this test fails, then something has been changed in module storage that is breaking + // all previously crafted inbound lane state proofs. + let storage_key = storage_keys::inbound_lane_data_key("BridgeMessages", &*b"test").0; + assert_eq!( + storage_key, + hex!("dd16c784ebd3390a9bc0357c7511ed01e5f83cf83f2127eb47afdc35d6e43fab44a8995dd50b6657a037a7839304535b74657374").to_vec(), + "Unexpected storage key: {}", + hex::encode(&storage_key), + ); + } + + #[test] + fn actual_dispatch_weight_does_not_overlow() { + run_test(|| { + let message1 = message(1, message_payload(0, Weight::MAX / 2)); + let message2 = message(2, message_payload(0, Weight::MAX / 2)); + let message3 = message(3, message_payload(0, Weight::MAX / 2)); + + assert_ok!(Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + // this may cause overflow if source chain storage is invalid + Ok(vec![message1, message2, message3]).into(), + 3, + Weight::MAX, + )); + assert_eq!(InboundLanes::::get(TEST_LANE_ID).last_delivered_nonce(), 2); + }); + } + + #[test] + fn increase_message_fee_fails_if_message_is_already_delivered() { + run_test(|| { + send_regular_message(); + receive_messages_delivery_proof(); + + assert_noop!( + Pallet::::increase_message_fee( + Origin::signed(1), + TEST_LANE_ID, + 1, + 100, + ), + Error::::MessageIsAlreadyDelivered, + ); + }); + } + + #[test] + fn increase_message_fee_fails_if_message_is_not_yet_sent() { + run_test(|| { + assert_noop!( + Pallet::::increase_message_fee( + Origin::signed(1), + TEST_LANE_ID, + 1, + 100, + ), + Error::::MessageIsNotYetSent, + ); + }); + } + + #[test] + fn increase_message_fee_fails_if_submitter_cant_pay_additional_fee() { + run_test(|| { + send_regular_message(); + + TestMessageDeliveryAndDispatchPayment::reject_payments(); + + assert_noop!( + Pallet::::increase_message_fee( + Origin::signed(1), + TEST_LANE_ID, + 1, + 100, + ), + Error::::FailedToWithdrawMessageFee, + ); + }); + } + + #[test] + fn increase_message_fee_succeeds() { + run_test(|| { + send_regular_message(); + + assert_ok!(Pallet::::increase_message_fee( + Origin::signed(1), + TEST_LANE_ID, + 1, + 100, + ),); + assert!(TestMessageDeliveryAndDispatchPayment::is_fee_paid(1, 100)); + }); + } + + #[test] + fn weight_refund_from_receive_messages_proof_works() { + run_test(|| { + fn submit_with_unspent_weight( + nonce: MessageNonce, + unspent_weight: Weight, + is_prepaid: bool, + ) -> (Weight, Weight) { + let mut payload = REGULAR_PAYLOAD; + payload.dispatch_result.unspent_weight = unspent_weight; + payload.dispatch_result.dispatch_fee_paid_during_dispatch = !is_prepaid; + let proof = Ok(vec![message(nonce, payload)]).into(); + let messages_count = 1; + let pre_dispatch_weight = + ::WeightInfo::receive_messages_proof_weight( + &proof, + messages_count, + REGULAR_PAYLOAD.declared_weight, + ); + let post_dispatch_weight = Pallet::::receive_messages_proof( + Origin::signed(1), + TEST_RELAYER_A, + proof, + messages_count, + REGULAR_PAYLOAD.declared_weight, + ) + .expect("delivery has failed") + .actual_weight + .expect("receive_messages_proof always returns Some"); + + (pre_dispatch_weight, post_dispatch_weight) + } + + // when dispatch is returning `unspent_weight < declared_weight` + let (pre, post) = submit_with_unspent_weight(1, 1, false); + assert_eq!(post, pre - 1); + + // when dispatch is returning `unspent_weight = declared_weight` + let (pre, post) = submit_with_unspent_weight(2, REGULAR_PAYLOAD.declared_weight, false); + assert_eq!(post, pre - REGULAR_PAYLOAD.declared_weight); + + // when dispatch is returning `unspent_weight > declared_weight` + let (pre, post) = + submit_with_unspent_weight(3, REGULAR_PAYLOAD.declared_weight + 1, false); + assert_eq!(post, pre - REGULAR_PAYLOAD.declared_weight); + + // when there's no unspent weight + let (pre, post) = submit_with_unspent_weight(4, 0, false); + assert_eq!(post, pre); + + // when dispatch is returning `unspent_weight < declared_weight` AND message is prepaid + let (pre, post) = submit_with_unspent_weight(5, 1, true); + assert_eq!( + post, + pre - 1 - ::WeightInfo::pay_inbound_dispatch_fee_overhead() + ); + }); + } + + #[test] + fn messages_delivered_callbacks_are_called() { + run_test(|| { + send_regular_message(); + send_regular_message(); + send_regular_message(); + + // messages 1+2 are confirmed in 1 tx, message 3 in a separate tx + // dispatch of message 2 has failed + let mut delivered_messages_1_and_2 = DeliveredMessages::new(1, true); + delivered_messages_1_and_2.note_dispatched_message(false); + let messages_1_and_2_proof = Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 0, + relayers: vec![UnrewardedRelayer { + relayer: 0, + messages: delivered_messages_1_and_2.clone(), + }] + .into_iter() + .collect(), + }, + )); + let delivered_message_3 = DeliveredMessages::new(3, true); + let messages_3_proof = Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 0, + relayers: vec![UnrewardedRelayer { + relayer: 0, + messages: delivered_message_3.clone(), + }] + .into_iter() + .collect(), + }, + )); + + // first tx with messages 1+2 + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(messages_1_and_2_proof), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 2, + ..Default::default() + }, + )); + // second tx with message 3 + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(messages_3_proof), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 1, + ..Default::default() + }, + )); + + // ensure that both callbacks have been called twice: for 1+2, then for 3 + TestOnDeliveryConfirmed1::ensure_called(&TEST_LANE_ID, &delivered_messages_1_and_2); + TestOnDeliveryConfirmed1::ensure_called(&TEST_LANE_ID, &delivered_message_3); + TestOnDeliveryConfirmed2::ensure_called(&TEST_LANE_ID, &delivered_messages_1_and_2); + TestOnDeliveryConfirmed2::ensure_called(&TEST_LANE_ID, &delivered_message_3); + }); + } + + fn confirm_3_messages_delivery() -> (Weight, Weight) { + send_regular_message(); + send_regular_message(); + send_regular_message(); + + let proof = TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 0, + relayers: vec![unrewarded_relayer(1, 3, TEST_RELAYER_A)].into_iter().collect(), + }, + ))); + let relayers_state = UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 3, + ..Default::default() + }; + let pre_dispatch_weight = + ::WeightInfo::receive_messages_delivery_proof_weight( + &proof, + &relayers_state, + crate::mock::DbWeight::get(), + ); + let post_dispatch_weight = Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + proof, + relayers_state, + ) + .expect("confirmation has failed") + .actual_weight + .expect("receive_messages_delivery_proof always returns Some"); + (pre_dispatch_weight, post_dispatch_weight) + } + + #[test] + fn receive_messages_delivery_proof_refunds_zero_weight() { + run_test(|| { + let (pre_dispatch_weight, post_dispatch_weight) = confirm_3_messages_delivery(); + assert_eq!(pre_dispatch_weight, post_dispatch_weight); + }); + } + + #[test] + fn receive_messages_delivery_proof_refunds_non_zero_weight() { + run_test(|| { + TestOnDeliveryConfirmed1::set_consumed_weight_per_message( + crate::mock::DbWeight::get().writes(1), + ); + + let (pre_dispatch_weight, post_dispatch_weight) = confirm_3_messages_delivery(); + assert_eq!( + pre_dispatch_weight.saturating_sub(post_dispatch_weight), + crate::mock::DbWeight::get().reads(1) * 3 + ); + }); + } + + #[test] + #[should_panic] + fn receive_messages_panics_in_debug_mode_if_callback_is_wrong() { + run_test(|| { + TestOnDeliveryConfirmed1::set_consumed_weight_per_message( + crate::mock::DbWeight::get().reads_writes(2, 2), + ); + confirm_3_messages_delivery() + }); + } + + #[test] + fn receive_messages_delivery_proof_rejects_proof_if_trying_to_confirm_more_messages_than_expected( + ) { + run_test(|| { + // send message first to be able to check that delivery_proof fails later + send_regular_message(); + + // 1) InboundLaneData declares that the `last_confirmed_nonce` is 1; + // 2) InboundLaneData has no entries => `InboundLaneData::last_delivered_nonce()` + // returns `last_confirmed_nonce`; + // 3) it means that we're going to confirm delivery of messages 1..=1; + // 4) so the number of declared messages (see `UnrewardedRelayersState`) is `0` and + // numer of actually confirmed messages is `1`. + assert_noop!( + Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { last_confirmed_nonce: 1, relayers: Default::default() }, + ))), + UnrewardedRelayersState::default(), + ), + Error::::TryingToConfirmMoreMessagesThanExpected, + ); + }); + } + + #[test] + fn increase_message_fee_weight_depends_on_message_size() { + run_test(|| { + let mut small_payload = message_payload(0, 100); + let mut large_payload = message_payload(1, 100); + small_payload.extra = vec![1; 100]; + large_payload.extra = vec![2; 16_384]; + + assert_ok!(Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + small_payload, + 100, + )); + assert_ok!(Pallet::::send_message( + Origin::signed(1), + TEST_LANE_ID, + large_payload, + 100, + )); + + let small_weight = + Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 1, 1) + .expect("increase_message_fee has failed") + .actual_weight + .expect("increase_message_fee always returns Some"); + + let large_weight = + Pallet::::increase_message_fee(Origin::signed(1), TEST_LANE_ID, 2, 1) + .expect("increase_message_fee has failed") + .actual_weight + .expect("increase_message_fee always returns Some"); + + assert!( + large_weight > small_weight, + "Actual post-dispatch weigth for larger message {} must be larger than {} for small message", + large_weight, + small_weight, + ); + }); + } + + #[test] + fn weight_is_refunded_for_messages_that_are_not_pruned() { + run_test(|| { + // send first MAX messages - no messages are pruned + let max_messages_to_prune = crate::mock::MaxMessagesToPruneAtOnce::get(); + let when_zero_messages_are_pruned = send_regular_message(); + let mut delivered_messages = DeliveredMessages::new(1, true); + for _ in 1..max_messages_to_prune { + assert_eq!(send_regular_message(), when_zero_messages_are_pruned); + delivered_messages.note_dispatched_message(true); + } + + // confirm delivery of all sent messages + assert_ok!(Pallet::::receive_messages_delivery_proof( + Origin::signed(1), + TestMessagesDeliveryProof(Ok(( + TEST_LANE_ID, + InboundLaneData { + last_confirmed_nonce: 1, + relayers: vec![UnrewardedRelayer { + relayer: 0, + messages: delivered_messages, + }] + .into_iter() + .collect(), + }, + ))), + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: max_messages_to_prune, + ..Default::default() + }, + )); + + // when next message is sent, MAX messages are pruned + let weight_when_max_messages_are_pruned = send_regular_message(); + assert_eq!( + weight_when_max_messages_are_pruned, + when_zero_messages_are_pruned + + crate::mock::DbWeight::get().writes(max_messages_to_prune), + ); + }); + } + + #[test] + fn message_accepted_callbacks_are_called() { + run_test(|| { + send_regular_message(); + TestOnMessageAccepted::ensure_called(&TEST_LANE_ID, &1); + }); + } + + #[test] + #[should_panic] + fn message_accepted_panics_in_debug_mode_if_callback_is_wrong() { + run_test(|| { + TestOnMessageAccepted::set_consumed_weight_per_message( + crate::mock::DbWeight::get().reads_writes(2, 2), + ); + send_regular_message(); + }); + } + + #[test] + fn message_accepted_refunds_non_zero_weight() { + run_test(|| { + TestOnMessageAccepted::set_consumed_weight_per_message( + crate::mock::DbWeight::get().writes(1), + ); + let actual_callback_weight = send_regular_message(); + let pre_dispatch_weight = ::WeightInfo::send_message_weight( + ®ULAR_PAYLOAD, + crate::mock::DbWeight::get(), + ); + let prune_weight = crate::mock::DbWeight::get() + .writes(::MaxMessagesToPruneAtOnce::get()); + + assert_eq!( + pre_dispatch_weight.saturating_sub(actual_callback_weight), + crate::mock::DbWeight::get().reads(1).saturating_add(prune_weight) + ); + }); + } +} diff --git a/modules/messages/src/mock.rs b/modules/messages/src/mock.rs new file mode 100644 index 000000000000..a333c95bb58b --- /dev/null +++ b/modules/messages/src/mock.rs @@ -0,0 +1,548 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +// From construct_runtime macro +#![allow(clippy::from_over_into)] + +use crate::{instant_payments::cal_relayers_rewards, Config}; + +use bitvec::prelude::*; +use bp_messages::{ + source_chain::{ + LaneMessageVerifier, MessageDeliveryAndDispatchPayment, OnDeliveryConfirmed, + OnMessageAccepted, Sender, TargetHeaderChain, + }, + target_chain::{ + DispatchMessage, MessageDispatch, ProvedLaneMessages, ProvedMessages, SourceHeaderChain, + }, + DeliveredMessages, InboundLaneData, LaneId, Message, MessageData, MessageKey, MessageNonce, + OutboundLaneData, Parameter as MessagesParameter, UnrewardedRelayer, +}; +use bp_runtime::{messages::MessageDispatchResult, Size}; +use codec::{Decode, Encode}; +use frame_support::{ + parameter_types, + weights::{RuntimeDbWeight, Weight}, +}; +use scale_info::TypeInfo; +use sp_core::H256; +use sp_runtime::{ + testing::Header as SubstrateHeader, + traits::{BlakeTwo256, IdentityLookup}, + FixedU128, Perbill, +}; +use std::{ + collections::{BTreeMap, VecDeque}, + ops::RangeInclusive, +}; + +pub type AccountId = u64; +pub type Balance = u64; +#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq, TypeInfo)] +pub struct TestPayload { + /// Field that may be used to identify messages. + pub id: u64, + /// Dispatch weight that is declared by the message sender. + pub declared_weight: Weight, + /// Message dispatch result. + /// + /// Note: in correct code `dispatch_result.unspent_weight` will always be <= `declared_weight`, + /// but for test purposes we'll be making it larger than `declared_weight` sometimes. + pub dispatch_result: MessageDispatchResult, + /// Extra bytes that affect payload size. + pub extra: Vec, +} +pub type TestMessageFee = u64; +pub type TestRelayer = u64; + +pub struct AccountIdConverter; + +impl sp_runtime::traits::Convert for AccountIdConverter { + fn convert(hash: H256) -> AccountId { + hash.to_low_u64_ne() + } +} + +type Block = frame_system::mocking::MockBlock; +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + +use crate as pallet_bridge_messages; + +frame_support::construct_runtime! { + pub enum TestRuntime where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Event}, + Messages: pallet_bridge_messages::{Pallet, Call, Event}, + } +} + +parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); + pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { read: 1, write: 2 }; +} + +impl frame_system::Config for TestRuntime { + type Origin = Origin; + type Index = u64; + type Call = Call; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = SubstrateHeader; + type Event = Event; + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type BaseCallFilter = frame_support::traits::Everything; + type SystemWeightInfo = (); + type BlockWeights = (); + type BlockLength = (); + type DbWeight = DbWeight; + type SS58Prefix = (); + type OnSetCode = (); +} + +parameter_types! { + pub const ExistentialDeposit: u64 = 1; +} + +impl pallet_balances::Config for TestRuntime { + type MaxLocks = (); + type Balance = Balance; + type DustRemoval = (); + type Event = Event; + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = frame_system::Pallet; + type WeightInfo = (); + type MaxReserves = (); + type ReserveIdentifier = (); +} + +parameter_types! { + pub const MaxMessagesToPruneAtOnce: u64 = 10; + pub const MaxUnrewardedRelayerEntriesAtInboundLane: u64 = 16; + pub const MaxUnconfirmedMessagesAtInboundLane: u64 = 32; + pub storage TokenConversionRate: FixedU128 = 1.into(); + pub const TestBridgedChainId: bp_runtime::ChainId = *b"test"; +} + +#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, TypeInfo)] +pub enum TestMessagesParameter { + TokenConversionRate(FixedU128), +} + +impl MessagesParameter for TestMessagesParameter { + fn save(&self) { + match *self { + TestMessagesParameter::TokenConversionRate(conversion_rate) => + TokenConversionRate::set(&conversion_rate), + } + } +} + +impl Config for TestRuntime { + type Event = Event; + type WeightInfo = (); + type Parameter = TestMessagesParameter; + type MaxMessagesToPruneAtOnce = MaxMessagesToPruneAtOnce; + type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane; + type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane; + + type OutboundPayload = TestPayload; + type OutboundMessageFee = TestMessageFee; + + type InboundPayload = TestPayload; + type InboundMessageFee = TestMessageFee; + type InboundRelayer = TestRelayer; + + type AccountIdConverter = AccountIdConverter; + + type TargetHeaderChain = TestTargetHeaderChain; + type LaneMessageVerifier = TestLaneMessageVerifier; + type MessageDeliveryAndDispatchPayment = TestMessageDeliveryAndDispatchPayment; + type OnMessageAccepted = TestOnMessageAccepted; + type OnDeliveryConfirmed = (TestOnDeliveryConfirmed1, TestOnDeliveryConfirmed2); + + type SourceHeaderChain = TestSourceHeaderChain; + type MessageDispatch = TestMessageDispatch; + type BridgedChainId = TestBridgedChainId; +} + +impl Size for TestPayload { + fn size_hint(&self) -> u32 { + 16 + self.extra.len() as u32 + } +} + +/// Account that has balance to use in tests. +pub const ENDOWED_ACCOUNT: AccountId = 0xDEAD; + +/// Account id of test relayer. +pub const TEST_RELAYER_A: AccountId = 100; + +/// Account id of additional test relayer - B. +pub const TEST_RELAYER_B: AccountId = 101; + +/// Account id of additional test relayer - C. +pub const TEST_RELAYER_C: AccountId = 102; + +/// Error that is returned by all test implementations. +pub const TEST_ERROR: &str = "Test error"; + +/// Lane that we're using in tests. +pub const TEST_LANE_ID: LaneId = [0, 0, 0, 1]; + +/// Regular message payload. +pub const REGULAR_PAYLOAD: TestPayload = message_payload(0, 50); + +/// Payload that is rejected by `TestTargetHeaderChain`. +pub const PAYLOAD_REJECTED_BY_TARGET_CHAIN: TestPayload = message_payload(1, 50); + +/// Vec of proved messages, grouped by lane. +pub type MessagesByLaneVec = Vec<(LaneId, ProvedLaneMessages>)>; + +/// Test messages proof. +#[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +pub struct TestMessagesProof { + pub result: Result, +} + +impl Size for TestMessagesProof { + fn size_hint(&self) -> u32 { + 0 + } +} + +impl From>, ()>> for TestMessagesProof { + fn from(result: Result>, ()>) -> Self { + Self { + result: result.map(|messages| { + let mut messages_by_lane: BTreeMap< + LaneId, + ProvedLaneMessages>, + > = BTreeMap::new(); + for message in messages { + messages_by_lane.entry(message.key.lane_id).or_default().messages.push(message); + } + messages_by_lane.into_iter().collect() + }), + } + } +} + +/// Messages delivery proof used in tests. +#[derive(Debug, Encode, Decode, Eq, Clone, PartialEq, TypeInfo)] +pub struct TestMessagesDeliveryProof(pub Result<(LaneId, InboundLaneData), ()>); + +impl Size for TestMessagesDeliveryProof { + fn size_hint(&self) -> u32 { + 0 + } +} + +/// Target header chain that is used in tests. +#[derive(Debug, Default)] +pub struct TestTargetHeaderChain; + +impl TargetHeaderChain for TestTargetHeaderChain { + type Error = &'static str; + + type MessagesDeliveryProof = TestMessagesDeliveryProof; + + fn verify_message(payload: &TestPayload) -> Result<(), Self::Error> { + if *payload == PAYLOAD_REJECTED_BY_TARGET_CHAIN { + Err(TEST_ERROR) + } else { + Ok(()) + } + } + + fn verify_messages_delivery_proof( + proof: Self::MessagesDeliveryProof, + ) -> Result<(LaneId, InboundLaneData), Self::Error> { + proof.0.map_err(|_| TEST_ERROR) + } +} + +/// Lane message verifier that is used in tests. +#[derive(Debug, Default)] +pub struct TestLaneMessageVerifier; + +impl LaneMessageVerifier for TestLaneMessageVerifier { + type Error = &'static str; + + fn verify_message( + _submitter: &Sender, + delivery_and_dispatch_fee: &TestMessageFee, + _lane: &LaneId, + _lane_outbound_data: &OutboundLaneData, + _payload: &TestPayload, + ) -> Result<(), Self::Error> { + if *delivery_and_dispatch_fee != 0 { + Ok(()) + } else { + Err(TEST_ERROR) + } + } +} + +/// Message fee payment system that is used in tests. +#[derive(Debug, Default)] +pub struct TestMessageDeliveryAndDispatchPayment; + +impl TestMessageDeliveryAndDispatchPayment { + /// Reject all payments. + pub fn reject_payments() { + frame_support::storage::unhashed::put(b":reject-message-fee:", &true); + } + + /// Returns true if given fee has been paid by given submitter. + pub fn is_fee_paid(submitter: AccountId, fee: TestMessageFee) -> bool { + frame_support::storage::unhashed::get(b":message-fee:") == + Some((Sender::Signed(submitter), fee)) + } + + /// Returns true if given relayer has been rewarded with given balance. The reward-paid flag is + /// cleared after the call. + pub fn is_reward_paid(relayer: AccountId, fee: TestMessageFee) -> bool { + let key = (b":relayer-reward:", relayer, fee).encode(); + frame_support::storage::unhashed::take::(&key).is_some() + } +} + +impl MessageDeliveryAndDispatchPayment + for TestMessageDeliveryAndDispatchPayment +{ + type Error = &'static str; + + fn pay_delivery_and_dispatch_fee( + submitter: &Sender, + fee: &TestMessageFee, + _relayer_fund_account: &AccountId, + ) -> Result<(), Self::Error> { + if frame_support::storage::unhashed::get(b":reject-message-fee:") == Some(true) { + return Err(TEST_ERROR) + } + + frame_support::storage::unhashed::put(b":message-fee:", &(submitter, fee)); + Ok(()) + } + + fn pay_relayers_rewards( + lane_id: LaneId, + message_relayers: VecDeque>, + _confirmation_relayer: &AccountId, + received_range: &RangeInclusive, + _relayer_fund_account: &AccountId, + ) { + let relayers_rewards = + cal_relayers_rewards::(lane_id, message_relayers, received_range); + for (relayer, reward) in &relayers_rewards { + let key = (b":relayer-reward:", relayer, reward.reward).encode(); + frame_support::storage::unhashed::put(&key, &true); + } + } +} + +#[derive(Debug)] +pub struct TestOnMessageAccepted; + +impl TestOnMessageAccepted { + /// Verify that the callback has been called when the message is accepted. + pub fn ensure_called(lane: &LaneId, message: &MessageNonce) { + let key = (b"TestOnMessageAccepted", lane, message).encode(); + assert_eq!(frame_support::storage::unhashed::get(&key), Some(true)); + } + + /// Set consumed weight returned by the callback. + pub fn set_consumed_weight_per_message(weight: Weight) { + frame_support::storage::unhashed::put(b"TestOnMessageAccepted_Weight", &weight); + } + + /// Get consumed weight returned by the callback. + pub fn get_consumed_weight_per_message() -> Option { + frame_support::storage::unhashed::get(b"TestOnMessageAccepted_Weight") + } +} + +impl OnMessageAccepted for TestOnMessageAccepted { + fn on_messages_accepted(lane: &LaneId, message: &MessageNonce) -> Weight { + let key = (b"TestOnMessageAccepted", lane, message).encode(); + frame_support::storage::unhashed::put(&key, &true); + Self::get_consumed_weight_per_message() + .unwrap_or_else(|| DbWeight::get().reads_writes(1, 1)) + } +} + +/// First on-messages-delivered callback. +#[derive(Debug)] +pub struct TestOnDeliveryConfirmed1; + +impl TestOnDeliveryConfirmed1 { + /// Verify that the callback has been called with given delivered messages. + pub fn ensure_called(lane: &LaneId, messages: &DeliveredMessages) { + let key = (b"TestOnDeliveryConfirmed1", lane, messages).encode(); + assert_eq!(frame_support::storage::unhashed::get(&key), Some(true)); + } + + /// Set consumed weight returned by the callback. + pub fn set_consumed_weight_per_message(weight: Weight) { + frame_support::storage::unhashed::put(b"TestOnDeliveryConfirmed1_Weight", &weight); + } + + /// Get consumed weight returned by the callback. + pub fn get_consumed_weight_per_message() -> Option { + frame_support::storage::unhashed::get(b"TestOnDeliveryConfirmed1_Weight") + } +} + +impl OnDeliveryConfirmed for TestOnDeliveryConfirmed1 { + fn on_messages_delivered(lane: &LaneId, messages: &DeliveredMessages) -> Weight { + let key = (b"TestOnDeliveryConfirmed1", lane, messages).encode(); + frame_support::storage::unhashed::put(&key, &true); + Self::get_consumed_weight_per_message() + .unwrap_or_else(|| DbWeight::get().reads_writes(1, 1)) + .saturating_mul(messages.total_messages()) + } +} + +/// Second on-messages-delivered callback. +#[derive(Debug)] +pub struct TestOnDeliveryConfirmed2; + +impl TestOnDeliveryConfirmed2 { + /// Verify that the callback has been called with given delivered messages. + pub fn ensure_called(lane: &LaneId, messages: &DeliveredMessages) { + let key = (b"TestOnDeliveryConfirmed2", lane, messages).encode(); + assert_eq!(frame_support::storage::unhashed::get(&key), Some(true)); + } +} + +impl OnDeliveryConfirmed for TestOnDeliveryConfirmed2 { + fn on_messages_delivered(lane: &LaneId, messages: &DeliveredMessages) -> Weight { + let key = (b"TestOnDeliveryConfirmed2", lane, messages).encode(); + frame_support::storage::unhashed::put(&key, &true); + 0 + } +} + +/// Source header chain that is used in tests. +#[derive(Debug)] +pub struct TestSourceHeaderChain; + +impl SourceHeaderChain for TestSourceHeaderChain { + type Error = &'static str; + + type MessagesProof = TestMessagesProof; + + fn verify_messages_proof( + proof: Self::MessagesProof, + _messages_count: u32, + ) -> Result>, Self::Error> { + proof.result.map(|proof| proof.into_iter().collect()).map_err(|_| TEST_ERROR) + } +} + +/// Source header chain that is used in tests. +#[derive(Debug)] +pub struct TestMessageDispatch; + +impl MessageDispatch for TestMessageDispatch { + type DispatchPayload = TestPayload; + + fn dispatch_weight(message: &DispatchMessage) -> Weight { + match message.data.payload.as_ref() { + Ok(payload) => payload.declared_weight, + Err(_) => 0, + } + } + + fn dispatch( + _relayer_account: &AccountId, + message: DispatchMessage, + ) -> MessageDispatchResult { + match message.data.payload.as_ref() { + Ok(payload) => payload.dispatch_result.clone(), + Err(_) => dispatch_result(0), + } + } +} + +/// Return test lane message with given nonce and payload. +pub fn message(nonce: MessageNonce, payload: TestPayload) -> Message { + Message { key: MessageKey { lane_id: TEST_LANE_ID, nonce }, data: message_data(payload) } +} + +/// Constructs message payload using given arguments and zero unspent weight. +pub const fn message_payload(id: u64, declared_weight: Weight) -> TestPayload { + TestPayload { id, declared_weight, dispatch_result: dispatch_result(0), extra: Vec::new() } +} + +/// Return message data with valid fee for given payload. +pub fn message_data(payload: TestPayload) -> MessageData { + MessageData { payload: payload.encode(), fee: 1 } +} + +/// Returns message dispatch result with given unspent weight. +pub const fn dispatch_result(unspent_weight: Weight) -> MessageDispatchResult { + MessageDispatchResult { + dispatch_result: true, + unspent_weight, + dispatch_fee_paid_during_dispatch: true, + } +} + +/// Constructs unrewarded relayer entry from nonces range and relayer id. +pub fn unrewarded_relayer( + begin: MessageNonce, + end: MessageNonce, + relayer: TestRelayer, +) -> UnrewardedRelayer { + UnrewardedRelayer { + relayer, + messages: DeliveredMessages { + begin, + end, + dispatch_results: if end >= begin { + bitvec![Msb0, u8; 1; (end - begin + 1) as _] + } else { + Default::default() + }, + }, + } +} + +/// Run pallet test. +pub fn run_test(test: impl FnOnce() -> T) -> T { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { balances: vec![(ENDOWED_ACCOUNT, 1_000_000)] } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(test) +} diff --git a/bridges/modules/messages/src/outbound_lane.rs b/modules/messages/src/outbound_lane.rs similarity index 76% rename from bridges/modules/messages/src/outbound_lane.rs rename to modules/messages/src/outbound_lane.rs index 44061d984e1d..c05437596db8 100644 --- a/bridges/modules/messages/src/outbound_lane.rs +++ b/modules/messages/src/outbound_lane.rs @@ -18,7 +18,8 @@ use bitvec::prelude::*; use bp_messages::{ - DeliveredMessages, DispatchResultsBitVec, LaneId, MessageData, MessageNonce, OutboundLaneData, UnrewardedRelayer, + DeliveredMessages, DispatchResultsBitVec, LaneId, MessageData, MessageNonce, OutboundLaneData, + UnrewardedRelayer, }; use frame_support::RuntimeDebug; use sp_std::collections::vec_deque::VecDeque; @@ -49,7 +50,7 @@ pub enum ReceivalConfirmationResult { /// New messages have been confirmed by the confirmation transaction. ConfirmedMessages(DeliveredMessages), /// Confirmation transaction brings no new confirmation. This may be a result of relayer - /// error or several relayers runnng. + /// error or several relayers running. NoNewConfirmations, /// Bridged chain is trying to confirm more messages than we have generated. May be a result /// of invalid bridged chain storage. @@ -57,12 +58,14 @@ pub enum ReceivalConfirmationResult { /// The unrewarded relayers vec contains an empty entry. May be a result of invalid bridged /// chain storage. EmptyUnrewardedRelayerEntry, - /// The unrewarded relayers vec contains non-consecutive entries. May be a result of invalid bridged - /// chain storage. + /// The unrewarded relayers vec contains non-consecutive entries. May be a result of invalid + /// bridged chain storage. NonConsecutiveUnrewardedRelayerEntries, - /// The unrewarded relayers vec contains entry with mismatched number of dispatch results. May be - /// a result of invalid bridged chain storage. + /// The unrewarded relayers vec contains entry with mismatched number of dispatch results. May + /// be a result of invalid bridged chain storage. InvalidNumberOfDispatchResults, + /// The chain has more messages that need to be confirmed than there is in the proof. + TryingToConfirmMoreMessagesThanExpected(MessageNonce), } /// Outbound messages lane. @@ -98,30 +101,44 @@ impl OutboundLane { /// Confirm messages delivery. pub fn confirm_delivery( &mut self, - latest_received_nonce: MessageNonce, + max_allowed_messages: MessageNonce, + latest_delivered_nonce: MessageNonce, relayers: &VecDeque>, ) -> ReceivalConfirmationResult { let mut data = self.storage.data(); - if latest_received_nonce <= data.latest_received_nonce { - return ReceivalConfirmationResult::NoNewConfirmations; + if latest_delivered_nonce <= data.latest_received_nonce { + return ReceivalConfirmationResult::NoNewConfirmations + } + if latest_delivered_nonce > data.latest_generated_nonce { + return ReceivalConfirmationResult::FailedToConfirmFutureMessages } - if latest_received_nonce > data.latest_generated_nonce { - return ReceivalConfirmationResult::FailedToConfirmFutureMessages; + if latest_delivered_nonce - data.latest_received_nonce > max_allowed_messages { + // that the relayer has declared correct number of messages that the proof contains (it + // is checked outside of the function). But it may happen (but only if this/bridged + // chain storage is corrupted, though) that the actual number of confirmed messages if + // larger than declared. This would mean that 'reward loop' will take more time than the + // weight formula accounts, so we can't allow that. + return ReceivalConfirmationResult::TryingToConfirmMoreMessagesThanExpected( + latest_delivered_nonce - data.latest_received_nonce, + ) } - let dispatch_results = - match extract_dispatch_results(data.latest_received_nonce, latest_received_nonce, relayers) { - Ok(dispatch_results) => dispatch_results, - Err(extract_error) => return extract_error, - }; + let dispatch_results = match extract_dispatch_results( + data.latest_received_nonce, + latest_delivered_nonce, + relayers, + ) { + Ok(dispatch_results) => dispatch_results, + Err(extract_error) => return extract_error, + }; let prev_latest_received_nonce = data.latest_received_nonce; - data.latest_received_nonce = latest_received_nonce; + data.latest_received_nonce = latest_delivered_nonce; self.storage.set_data(data); ReceivalConfirmationResult::ConfirmedMessages(DeliveredMessages { begin: prev_latest_received_nonce + 1, - end: latest_received_nonce, + end: latest_delivered_nonce, dispatch_results, }) } @@ -133,7 +150,9 @@ impl OutboundLane { let mut pruned_messages = 0; let mut anything_changed = false; let mut data = self.storage.data(); - while pruned_messages < max_messages_to_prune && data.oldest_unpruned_nonce <= data.latest_received_nonce { + while pruned_messages < max_messages_to_prune && + data.oldest_unpruned_nonce <= data.latest_received_nonce + { self.storage.remove_message(&data.oldest_unpruned_nonce); anything_changed = true; @@ -158,9 +177,10 @@ fn extract_dispatch_results( latest_received_nonce: MessageNonce, relayers: &VecDeque>, ) -> Result { - // the only caller of this functions checks that the prev_latest_received_nonce..=latest_received_nonce - // is valid, so we're ready to accept messages in this range - // => with_capacity call must succeed here or we'll be unable to receive confirmations at all + // the only caller of this functions checks that the + // prev_latest_received_nonce..=latest_received_nonce is valid, so we're ready to accept + // messages in this range => with_capacity call must succeed here or we'll be unable to receive + // confirmations at all let mut received_dispatch_result = BitVec::with_capacity((latest_received_nonce - prev_latest_received_nonce + 1) as _); let mut last_entry_end: Option = None; @@ -168,43 +188,48 @@ fn extract_dispatch_results( // unrewarded relayer entry must have at least 1 unconfirmed message // (guaranteed by the `InboundLane::receive_message()`) if entry.messages.end < entry.messages.begin { - return Err(ReceivalConfirmationResult::EmptyUnrewardedRelayerEntry); + return Err(ReceivalConfirmationResult::EmptyUnrewardedRelayerEntry) } // every entry must confirm range of messages that follows previous entry range // (guaranteed by the `InboundLane::receive_message()`) if let Some(last_entry_end) = last_entry_end { let expected_entry_begin = last_entry_end.checked_add(1); if expected_entry_begin != Some(entry.messages.begin) { - return Err(ReceivalConfirmationResult::NonConsecutiveUnrewardedRelayerEntries); + return Err(ReceivalConfirmationResult::NonConsecutiveUnrewardedRelayerEntries) } } last_entry_end = Some(entry.messages.end); // entry can't confirm messages larger than `inbound_lane_data.latest_received_nonce()` // (guaranteed by the `InboundLane::receive_message()`) if entry.messages.end > latest_received_nonce { - // technically this will be detected in the next loop iteration as `InvalidNumberOfDispatchResults` - // but to guarantee safety of loop operations below this is detected now - return Err(ReceivalConfirmationResult::FailedToConfirmFutureMessages); + // technically this will be detected in the next loop iteration as + // `InvalidNumberOfDispatchResults` but to guarantee safety of loop operations below + // this is detected now + return Err(ReceivalConfirmationResult::FailedToConfirmFutureMessages) } // entry must have single dispatch result for every message // (guaranteed by the `InboundLane::receive_message()`) - if entry.messages.dispatch_results.len() as MessageNonce != entry.messages.end - entry.messages.begin + 1 { - return Err(ReceivalConfirmationResult::InvalidNumberOfDispatchResults); + if entry.messages.dispatch_results.len() as MessageNonce != + entry.messages.end - entry.messages.begin + 1 + { + return Err(ReceivalConfirmationResult::InvalidNumberOfDispatchResults) } // now we know that the entry is valid // => let's check if it brings new confirmations - let new_messages_begin = sp_std::cmp::max(entry.messages.begin, prev_latest_received_nonce + 1); + let new_messages_begin = + sp_std::cmp::max(entry.messages.begin, prev_latest_received_nonce + 1); let new_messages_end = sp_std::cmp::min(entry.messages.end, latest_received_nonce); let new_messages_range = new_messages_begin..=new_messages_end; if new_messages_range.is_empty() { - continue; + continue } // now we know that entry brings new confirmations // => let's extract dispatch results received_dispatch_result.extend_from_bitslice( - &entry.messages.dispatch_results[(new_messages_begin - entry.messages.begin) as usize..], + &entry.messages.dispatch_results + [(new_messages_begin - entry.messages.begin) as usize..], ); } @@ -215,12 +240,17 @@ fn extract_dispatch_results( mod tests { use super::*; use crate::{ - mock::{message_data, run_test, unrewarded_relayer, TestRelayer, TestRuntime, REGULAR_PAYLOAD, TEST_LANE_ID}, + mock::{ + message_data, run_test, unrewarded_relayer, TestRelayer, TestRuntime, REGULAR_PAYLOAD, + TEST_LANE_ID, + }, outbound_lane, }; use sp_std::ops::RangeInclusive; - fn unrewarded_relayers(nonces: RangeInclusive) -> VecDeque> { + fn unrewarded_relayers( + nonces: RangeInclusive, + ) -> VecDeque> { vec![unrewarded_relayer(*nonces.start(), *nonces.end(), 0)] .into_iter() .collect() @@ -245,7 +275,7 @@ mod tests { lane.send_message(message_data(REGULAR_PAYLOAD)); assert_eq!(lane.storage.data().latest_generated_nonce, 3); assert_eq!(lane.storage.data().latest_received_nonce, 0); - let result = lane.confirm_delivery(latest_received_nonce, relayers); + let result = lane.confirm_delivery(3, latest_received_nonce, relayers); assert_eq!(lane.storage.data().latest_generated_nonce, 3); assert_eq!(lane.storage.data().latest_received_nonce, 0); result @@ -273,7 +303,7 @@ mod tests { assert_eq!(lane.storage.data().latest_generated_nonce, 3); assert_eq!(lane.storage.data().latest_received_nonce, 0); assert_eq!( - lane.confirm_delivery(3, &unrewarded_relayers(1..=3)), + lane.confirm_delivery(3, 3, &unrewarded_relayers(1..=3)), ReceivalConfirmationResult::ConfirmedMessages(delivered_messages(1..=3)), ); assert_eq!(lane.storage.data().latest_generated_nonce, 3); @@ -291,18 +321,18 @@ mod tests { assert_eq!(lane.storage.data().latest_generated_nonce, 3); assert_eq!(lane.storage.data().latest_received_nonce, 0); assert_eq!( - lane.confirm_delivery(3, &unrewarded_relayers(1..=3)), + lane.confirm_delivery(3, 3, &unrewarded_relayers(1..=3)), ReceivalConfirmationResult::ConfirmedMessages(delivered_messages(1..=3)), ); assert_eq!( - lane.confirm_delivery(3, &unrewarded_relayers(1..=3)), + lane.confirm_delivery(3, 3, &unrewarded_relayers(1..=3)), ReceivalConfirmationResult::NoNewConfirmations, ); assert_eq!(lane.storage.data().latest_generated_nonce, 3); assert_eq!(lane.storage.data().latest_received_nonce, 3); assert_eq!( - lane.confirm_delivery(2, &unrewarded_relayers(1..=1)), + lane.confirm_delivery(1, 2, &unrewarded_relayers(1..=1)), ReceivalConfirmationResult::NoNewConfirmations, ); assert_eq!(lane.storage.data().latest_generated_nonce, 3); @@ -393,18 +423,40 @@ mod tests { assert_eq!(lane.storage.data().oldest_unpruned_nonce, 1); // after confirmation, some messages are received assert_eq!( - lane.confirm_delivery(2, &unrewarded_relayers(1..=2)), + lane.confirm_delivery(2, 2, &unrewarded_relayers(1..=2)), ReceivalConfirmationResult::ConfirmedMessages(delivered_messages(1..=2)), ); assert_eq!(lane.prune_messages(100), 2); assert_eq!(lane.storage.data().oldest_unpruned_nonce, 3); // after last message is confirmed, everything is pruned assert_eq!( - lane.confirm_delivery(3, &unrewarded_relayers(3..=3)), + lane.confirm_delivery(1, 3, &unrewarded_relayers(3..=3)), ReceivalConfirmationResult::ConfirmedMessages(delivered_messages(3..=3)), ); assert_eq!(lane.prune_messages(100), 1); assert_eq!(lane.storage.data().oldest_unpruned_nonce, 4); }); } + + #[test] + fn confirm_delivery_detects_when_more_than_expected_messages_are_confirmed() { + run_test(|| { + let mut lane = outbound_lane::(TEST_LANE_ID); + lane.send_message(message_data(REGULAR_PAYLOAD)); + lane.send_message(message_data(REGULAR_PAYLOAD)); + lane.send_message(message_data(REGULAR_PAYLOAD)); + assert_eq!( + lane.confirm_delivery(0, 3, &unrewarded_relayers(1..=3)), + ReceivalConfirmationResult::TryingToConfirmMoreMessagesThanExpected(3), + ); + assert_eq!( + lane.confirm_delivery(2, 3, &unrewarded_relayers(1..=3)), + ReceivalConfirmationResult::TryingToConfirmMoreMessagesThanExpected(3), + ); + assert_eq!( + lane.confirm_delivery(3, 3, &unrewarded_relayers(1..=3)), + ReceivalConfirmationResult::ConfirmedMessages(delivered_messages(1..=3)), + ); + }); + } } diff --git a/modules/messages/src/weights.rs b/modules/messages/src/weights.rs new file mode 100644 index 000000000000..9dce11168fbb --- /dev/null +++ b/modules/messages/src/weights.rs @@ -0,0 +1,313 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Autogenerated weights for `pallet_bridge_messages` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 +//! DATE: 2021-06-18, STEPS: [50, ], REPEAT: 20 +//! LOW RANGE: [], HIGH RANGE: [] +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled +//! CHAIN: Some("dev"), DB CACHE: 128 + +// Executed Command: +// target/release/rialto-bridge-node +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bridge_messages +// --extrinsic=* +// --execution=wasm +// --wasm-execution=Compiled +// --heap-pages=4096 +// --output=./modules/messages/src/weights.rs +// --template=./.maintain/rialto-weight-template.hbs + +#![allow(clippy::all)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{ + traits::Get, + weights::{constants::RocksDbWeight, Weight}, +}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for `pallet_bridge_messages`. +pub trait WeightInfo { + fn send_minimal_message_worst_case() -> Weight; + fn send_1_kb_message_worst_case() -> Weight; + fn send_16_kb_message_worst_case() -> Weight; + fn maximal_increase_message_fee() -> Weight; + fn increase_message_fee(i: u32) -> Weight; + fn receive_single_message_proof() -> Weight; + fn receive_two_messages_proof() -> Weight; + fn receive_single_message_proof_with_outbound_lane_state() -> Weight; + fn receive_single_message_proof_1_kb() -> Weight; + fn receive_single_message_proof_16_kb() -> Weight; + fn receive_single_prepaid_message_proof() -> Weight; + fn receive_delivery_proof_for_single_message() -> Weight; + fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight; + fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight; + fn send_messages_of_various_lengths(i: u32) -> Weight; + fn receive_multiple_messages_proof(i: u32) -> Weight; + fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight; + fn receive_message_proofs_with_large_leaf(i: u32) -> Weight; + fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight; + fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight; + fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight; +} + +/// Weights for `pallet_bridge_messages` using the Rialto node and recommended hardware. +pub struct RialtoWeight(PhantomData); +impl WeightInfo for RialtoWeight { + fn send_minimal_message_worst_case() -> Weight { + (159_305_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) + } + fn send_1_kb_message_worst_case() -> Weight { + (164_394_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) + } + fn send_16_kb_message_worst_case() -> Weight { + (223_521_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) + } + fn maximal_increase_message_fee() -> Weight { + (6_781_470_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn increase_message_fee(i: u32) -> Weight { + (114_963_000 as Weight) + .saturating_add((6_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof() -> Weight { + (206_769_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_two_messages_proof() -> Weight { + (343_982_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_with_outbound_lane_state() -> Weight { + (223_738_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_1_kb() -> Weight { + (235_369_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_16_kb() -> Weight { + (510_338_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_single_prepaid_message_proof() -> Weight { + (141_536_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + fn receive_delivery_proof_for_single_message() -> Weight { + (128_805_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight { + (137_143_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight { + (193_108_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + fn send_messages_of_various_lengths(i: u32) -> Weight { + (133_632_000 as Weight) + .saturating_add((4_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) + } + fn receive_multiple_messages_proof(i: u32) -> Weight { + (0 as Weight) + .saturating_add((145_006_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight { + (486_301_000 as Weight) + .saturating_add((10_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_message_proofs_with_large_leaf(i: u32) -> Weight { + (178_139_000 as Weight) + .saturating_add((7_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight { + (0 as Weight) + .saturating_add((150_844_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight { + (113_140_000 as Weight) + .saturating_add((7_656_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight { + (97_424_000 as Weight) + .saturating_add((63_128_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + fn send_minimal_message_worst_case() -> Weight { + (159_305_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(12 as Weight)) + } + fn send_1_kb_message_worst_case() -> Weight { + (164_394_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(12 as Weight)) + } + fn send_16_kb_message_worst_case() -> Weight { + (223_521_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(12 as Weight)) + } + fn maximal_increase_message_fee() -> Weight { + (6_781_470_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn increase_message_fee(i: u32) -> Weight { + (114_963_000 as Weight) + .saturating_add((6_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof() -> Weight { + (206_769_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_two_messages_proof() -> Weight { + (343_982_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_with_outbound_lane_state() -> Weight { + (223_738_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_1_kb() -> Weight { + (235_369_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_single_message_proof_16_kb() -> Weight { + (510_338_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_single_prepaid_message_proof() -> Weight { + (141_536_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + } + fn receive_delivery_proof_for_single_message() -> Weight { + (128_805_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(6 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_two_messages_by_single_relayer() -> Weight { + (137_143_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(7 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_two_messages_by_two_relayers() -> Weight { + (193_108_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(8 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + } + fn send_messages_of_various_lengths(i: u32) -> Weight { + (133_632_000 as Weight) + .saturating_add((4_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(12 as Weight)) + } + fn receive_multiple_messages_proof(i: u32) -> Weight { + (0 as Weight) + .saturating_add((145_006_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_message_proofs_with_extra_nodes(i: u32) -> Weight { + (486_301_000 as Weight) + .saturating_add((10_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_message_proofs_with_large_leaf(i: u32) -> Weight { + (178_139_000 as Weight) + .saturating_add((7_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_multiple_messages_proof_with_outbound_lane_state(i: u32) -> Weight { + (0 as Weight) + .saturating_add((150_844_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_multiple_messages_by_single_relayer(i: u32) -> Weight { + (113_140_000 as Weight) + .saturating_add((7_656_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn receive_delivery_proof_for_multiple_messages_by_multiple_relayers(i: u32) -> Weight { + (97_424_000 as Weight) + .saturating_add((63_128_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(i as Weight))) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) + } +} diff --git a/modules/messages/src/weights_ext.rs b/modules/messages/src/weights_ext.rs new file mode 100644 index 000000000000..fef09c6cebe5 --- /dev/null +++ b/modules/messages/src/weights_ext.rs @@ -0,0 +1,397 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Weight-related utilities. + +use crate::weights::WeightInfo; + +use bp_messages::{MessageNonce, UnrewardedRelayersState}; +use bp_runtime::{PreComputedSize, Size}; +use frame_support::weights::{RuntimeDbWeight, Weight}; + +/// Size of the message being delivered in benchmarks. +pub const EXPECTED_DEFAULT_MESSAGE_LENGTH: u32 = 128; + +/// We assume that size of signed extensions on all our chains and size of all 'small' arguments of +/// calls we're checking here would fit 1KB. +const SIGNED_EXTENSIONS_SIZE: u32 = 1024; + +/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at +/// Rialto chain. This mostly depends on number of entries (and their density) in the storage trie. +/// Some reserve is reserved to account future chain growth. +pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; + +/// Ensure that weights from `WeightInfoExt` implementation are looking correct. +pub fn ensure_weights_are_correct( + expected_default_message_delivery_tx_weight: Weight, + expected_additional_byte_delivery_weight: Weight, + expected_messages_delivery_confirmation_tx_weight: Weight, + expected_pay_inbound_dispatch_fee_weight: Weight, + db_weight: RuntimeDbWeight, +) { + // verify `send_message` weight components + assert_ne!(W::send_message_overhead(), 0); + assert_ne!(W::send_message_size_overhead(0), 0); + + // verify `receive_messages_proof` weight components + assert_ne!(W::receive_messages_proof_overhead(), 0); + assert_ne!(W::receive_messages_proof_messages_overhead(1), 0); + assert_ne!(W::receive_messages_proof_outbound_lane_state_overhead(), 0); + assert_ne!(W::storage_proof_size_overhead(1), 0); + + // verify that the hardcoded value covers `receive_messages_proof` weight + let actual_single_regular_message_delivery_tx_weight = W::receive_messages_proof_weight( + &PreComputedSize( + (EXPECTED_DEFAULT_MESSAGE_LENGTH + W::expected_extra_storage_proof_size()) as usize, + ), + 1, + 0, + ); + assert!( + actual_single_regular_message_delivery_tx_weight <= + expected_default_message_delivery_tx_weight, + "Default message delivery transaction weight {} is larger than expected weight {}", + actual_single_regular_message_delivery_tx_weight, + expected_default_message_delivery_tx_weight, + ); + + // verify that hardcoded value covers additional byte length of `receive_messages_proof` weight + let actual_additional_byte_delivery_weight = W::storage_proof_size_overhead(1); + assert!( + actual_additional_byte_delivery_weight <= expected_additional_byte_delivery_weight, + "Single additional byte delivery weight {} is larger than expected weight {}", + actual_additional_byte_delivery_weight, + expected_additional_byte_delivery_weight, + ); + + // verify `receive_messages_delivery_proof` weight components + assert_ne!(W::receive_messages_delivery_proof_overhead(), 0); + assert_ne!(W::receive_messages_delivery_proof_messages_overhead(1), 0); + assert_ne!(W::receive_messages_delivery_proof_relayers_overhead(1), 0); + assert_ne!(W::storage_proof_size_overhead(1), 0); + + // verify that the hardcoded value covers `receive_messages_delivery_proof` weight + let actual_messages_delivery_confirmation_tx_weight = W::receive_messages_delivery_proof_weight( + &PreComputedSize(W::expected_extra_storage_proof_size() as usize), + &UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + total_messages: 1, + ..Default::default() + }, + db_weight, + ); + assert!( + actual_messages_delivery_confirmation_tx_weight <= + expected_messages_delivery_confirmation_tx_weight, + "Messages delivery confirmation transaction weight {} is larger than expected weight {}", + actual_messages_delivery_confirmation_tx_weight, + expected_messages_delivery_confirmation_tx_weight, + ); + + // verify pay-dispatch-fee overhead for inbound messages + let actual_pay_inbound_dispatch_fee_weight = W::pay_inbound_dispatch_fee_overhead(); + assert!( + actual_pay_inbound_dispatch_fee_weight <= expected_pay_inbound_dispatch_fee_weight, + "Weight {} of pay-dispatch-fee overhead for inbound messages is larger than expected weight {}", + actual_pay_inbound_dispatch_fee_weight, + expected_pay_inbound_dispatch_fee_weight, + ); +} + +/// Ensure that we're able to receive maximal (by-size and by-weight) message from other chain. +pub fn ensure_able_to_receive_message( + max_extrinsic_size: u32, + max_extrinsic_weight: Weight, + max_incoming_message_proof_size: u32, + max_incoming_message_dispatch_weight: Weight, +) { + // verify that we're able to receive proof of maximal-size message + let max_delivery_transaction_size = + max_incoming_message_proof_size.saturating_add(SIGNED_EXTENSIONS_SIZE); + assert!( + max_delivery_transaction_size <= max_extrinsic_size, + "Size of maximal message delivery transaction {} + {} is larger than maximal possible transaction size {}", + max_incoming_message_proof_size, + SIGNED_EXTENSIONS_SIZE, + max_extrinsic_size, + ); + + // verify that we're able to receive proof of maximal-size message with maximal dispatch weight + let max_delivery_transaction_dispatch_weight = W::receive_messages_proof_weight( + &PreComputedSize( + (max_incoming_message_proof_size + W::expected_extra_storage_proof_size()) as usize, + ), + 1, + max_incoming_message_dispatch_weight, + ); + assert!( + max_delivery_transaction_dispatch_weight <= max_extrinsic_weight, + "Weight of maximal message delivery transaction + {} is larger than maximal possible transaction weight {}", + max_delivery_transaction_dispatch_weight, + max_extrinsic_weight, + ); +} + +/// Ensure that we're able to receive maximal confirmation from other chain. +pub fn ensure_able_to_receive_confirmation( + max_extrinsic_size: u32, + max_extrinsic_weight: Weight, + max_inbound_lane_data_proof_size_from_peer_chain: u32, + max_unrewarded_relayer_entries_at_peer_inbound_lane: MessageNonce, + max_unconfirmed_messages_at_inbound_lane: MessageNonce, + db_weight: RuntimeDbWeight, +) { + // verify that we're able to receive confirmation of maximal-size + let max_confirmation_transaction_size = + max_inbound_lane_data_proof_size_from_peer_chain.saturating_add(SIGNED_EXTENSIONS_SIZE); + assert!( + max_confirmation_transaction_size <= max_extrinsic_size, + "Size of maximal message delivery confirmation transaction {} + {} is larger than maximal possible transaction size {}", + max_inbound_lane_data_proof_size_from_peer_chain, + SIGNED_EXTENSIONS_SIZE, + max_extrinsic_size, + ); + + // verify that we're able to reward maximal number of relayers that have delivered maximal + // number of messages + let max_confirmation_transaction_dispatch_weight = W::receive_messages_delivery_proof_weight( + &PreComputedSize(max_inbound_lane_data_proof_size_from_peer_chain as usize), + &UnrewardedRelayersState { + unrewarded_relayer_entries: max_unrewarded_relayer_entries_at_peer_inbound_lane, + total_messages: max_unconfirmed_messages_at_inbound_lane, + ..Default::default() + }, + db_weight, + ); + assert!( + max_confirmation_transaction_dispatch_weight <= max_extrinsic_weight, + "Weight of maximal confirmation transaction {} is larger than maximal possible transaction weight {}", + max_confirmation_transaction_dispatch_weight, + max_extrinsic_weight, + ); +} + +/// Extended weight info. +pub trait WeightInfoExt: WeightInfo { + /// Size of proof that is already included in the single message delivery weight. + /// + /// The message submitter (at source chain) has already covered this cost. But there are two + /// factors that may increase proof size: (1) the message size may be larger than predefined + /// and (2) relayer may add extra trie nodes to the proof. So if proof size is larger than + /// this value, we're going to charge relayer for that. + fn expected_extra_storage_proof_size() -> u32; + + // Functions that are directly mapped to extrinsics weights. + + /// Weight of message send extrinsic. + fn send_message_weight(message: &impl Size, db_weight: RuntimeDbWeight) -> Weight { + let transaction_overhead = Self::send_message_overhead(); + let message_size_overhead = Self::send_message_size_overhead(message.size_hint()); + let call_back_overhead = Self::single_message_callback_overhead(db_weight); + + transaction_overhead + .saturating_add(message_size_overhead) + .saturating_add(call_back_overhead) + } + + /// Weight of message delivery extrinsic. + fn receive_messages_proof_weight( + proof: &impl Size, + messages_count: u32, + dispatch_weight: Weight, + ) -> Weight { + // basic components of extrinsic weight + let transaction_overhead = Self::receive_messages_proof_overhead(); + let outbound_state_delivery_weight = + Self::receive_messages_proof_outbound_lane_state_overhead(); + let messages_delivery_weight = + Self::receive_messages_proof_messages_overhead(MessageNonce::from(messages_count)); + let messages_dispatch_weight = dispatch_weight; + + // proof size overhead weight + let expected_proof_size = EXPECTED_DEFAULT_MESSAGE_LENGTH + .saturating_mul(messages_count.saturating_sub(1)) + .saturating_add(Self::expected_extra_storage_proof_size()); + let actual_proof_size = proof.size_hint(); + let proof_size_overhead = Self::storage_proof_size_overhead( + actual_proof_size.saturating_sub(expected_proof_size), + ); + + transaction_overhead + .saturating_add(outbound_state_delivery_weight) + .saturating_add(messages_delivery_weight) + .saturating_add(messages_dispatch_weight) + .saturating_add(proof_size_overhead) + } + + /// Weight of confirmation delivery extrinsic. + fn receive_messages_delivery_proof_weight( + proof: &impl Size, + relayers_state: &UnrewardedRelayersState, + db_weight: RuntimeDbWeight, + ) -> Weight { + // basic components of extrinsic weight + let transaction_overhead = Self::receive_messages_delivery_proof_overhead(); + let messages_overhead = + Self::receive_messages_delivery_proof_messages_overhead(relayers_state.total_messages); + let relayers_overhead = Self::receive_messages_delivery_proof_relayers_overhead( + relayers_state.unrewarded_relayer_entries, + ); + + // proof size overhead weight + let expected_proof_size = Self::expected_extra_storage_proof_size(); + let actual_proof_size = proof.size_hint(); + let proof_size_overhead = Self::storage_proof_size_overhead( + actual_proof_size.saturating_sub(expected_proof_size), + ); + + // and cost of calling `OnDeliveryConfirmed::on_messages_delivered()` for every confirmed + // message + let callback_overhead = relayers_state + .total_messages + .saturating_mul(Self::single_message_callback_overhead(db_weight)); + + transaction_overhead + .saturating_add(messages_overhead) + .saturating_add(relayers_overhead) + .saturating_add(proof_size_overhead) + .saturating_add(callback_overhead) + } + + // Functions that are used by extrinsics weights formulas. + + /// Returns weight of message send transaction (`send_message`). + fn send_message_overhead() -> Weight { + Self::send_minimal_message_worst_case() + } + + /// Returns weight that needs to be accounted when message of given size is sent + /// (`send_message`). + fn send_message_size_overhead(message_size: u32) -> Weight { + let message_size_in_kb = (1024u64 + message_size as u64) / 1024; + let single_kb_weight = + (Self::send_16_kb_message_worst_case() - Self::send_1_kb_message_worst_case()) / 15; + message_size_in_kb * single_kb_weight + } + + /// Returns weight overhead of message delivery transaction (`receive_messages_proof`). + fn receive_messages_proof_overhead() -> Weight { + let weight_of_two_messages_and_two_tx_overheads = + Self::receive_single_message_proof().saturating_mul(2); + let weight_of_two_messages_and_single_tx_overhead = Self::receive_two_messages_proof(); + weight_of_two_messages_and_two_tx_overheads + .saturating_sub(weight_of_two_messages_and_single_tx_overhead) + } + + /// Returns weight that needs to be accounted when receiving given a number of messages with + /// message delivery transaction (`receive_messages_proof`). + fn receive_messages_proof_messages_overhead(messages: MessageNonce) -> Weight { + let weight_of_two_messages_and_single_tx_overhead = Self::receive_two_messages_proof(); + let weight_of_single_message_and_single_tx_overhead = Self::receive_single_message_proof(); + weight_of_two_messages_and_single_tx_overhead + .saturating_sub(weight_of_single_message_and_single_tx_overhead) + .saturating_mul(messages as Weight) + } + + /// Returns weight that needs to be accounted when message delivery transaction + /// (`receive_messages_proof`) is carrying outbound lane state proof. + fn receive_messages_proof_outbound_lane_state_overhead() -> Weight { + let weight_of_single_message_and_lane_state = + Self::receive_single_message_proof_with_outbound_lane_state(); + let weight_of_single_message = Self::receive_single_message_proof(); + weight_of_single_message_and_lane_state.saturating_sub(weight_of_single_message) + } + + /// Returns weight overhead of delivery confirmation transaction + /// (`receive_messages_delivery_proof`). + fn receive_messages_delivery_proof_overhead() -> Weight { + let weight_of_two_messages_and_two_tx_overheads = + Self::receive_delivery_proof_for_single_message().saturating_mul(2); + let weight_of_two_messages_and_single_tx_overhead = + Self::receive_delivery_proof_for_two_messages_by_single_relayer(); + weight_of_two_messages_and_two_tx_overheads + .saturating_sub(weight_of_two_messages_and_single_tx_overhead) + } + + /// Returns weight that needs to be accounted when receiving confirmations for given a number of + /// messages with delivery confirmation transaction (`receive_messages_delivery_proof`). + fn receive_messages_delivery_proof_messages_overhead(messages: MessageNonce) -> Weight { + let weight_of_two_messages = + Self::receive_delivery_proof_for_two_messages_by_single_relayer(); + let weight_of_single_message = Self::receive_delivery_proof_for_single_message(); + weight_of_two_messages + .saturating_sub(weight_of_single_message) + .saturating_mul(messages as Weight) + } + + /// Returns weight that needs to be accounted when receiving confirmations for given a number of + /// relayers entries with delivery confirmation transaction (`receive_messages_delivery_proof`). + fn receive_messages_delivery_proof_relayers_overhead(relayers: MessageNonce) -> Weight { + let weight_of_two_messages_by_two_relayers = + Self::receive_delivery_proof_for_two_messages_by_two_relayers(); + let weight_of_two_messages_by_single_relayer = + Self::receive_delivery_proof_for_two_messages_by_single_relayer(); + weight_of_two_messages_by_two_relayers + .saturating_sub(weight_of_two_messages_by_single_relayer) + .saturating_mul(relayers as Weight) + } + + /// Returns weight that needs to be accounted when storage proof of given size is received + /// (either in `receive_messages_proof` or `receive_messages_delivery_proof`). + /// + /// **IMPORTANT**: this overhead is already included in the 'base' transaction cost - e.g. proof + /// size depends on messages count or number of entries in the unrewarded relayers set. So this + /// shouldn't be added to cost of transaction, but instead should act as a minimal cost that the + /// relayer must pay when it relays proof of given size (even if cost based on other parameters + /// is less than that cost). + fn storage_proof_size_overhead(proof_size: u32) -> Weight { + let proof_size_in_bytes = proof_size as Weight; + let byte_weight = (Self::receive_single_message_proof_16_kb() - + Self::receive_single_message_proof_1_kb()) / + (15 * 1024); + proof_size_in_bytes * byte_weight + } + + /// Returns weight of the pay-dispatch-fee operation for inbound messages. + /// + /// This function may return zero if runtime doesn't support pay-dispatch-fee-at-target-chain + /// option. + fn pay_inbound_dispatch_fee_overhead() -> Weight { + Self::receive_single_message_proof() + .saturating_sub(Self::receive_single_prepaid_message_proof()) + } + + /// Returns pre-dispatch weight of single callback call. + /// + /// When benchmarking the weight please take into consideration both the `OnMessageAccepted` and + /// `OnDeliveryConfirmed` callbacks. The method should return the greater of the two, because + /// it's used to estimate the weight in both contexts. + fn single_message_callback_overhead(db_weight: RuntimeDbWeight) -> Weight { + db_weight.reads_writes(1, 1) + } +} + +impl WeightInfoExt for () { + fn expected_extra_storage_proof_size() -> u32 { + EXTRA_STORAGE_PROOF_SIZE + } +} + +impl WeightInfoExt for crate::weights::RialtoWeight { + fn expected_extra_storage_proof_size() -> u32 { + EXTRA_STORAGE_PROOF_SIZE + } +} diff --git a/modules/shift-session-manager/Cargo.toml b/modules/shift-session-manager/Cargo.toml new file mode 100644 index 000000000000..9e3e15fddf89 --- /dev/null +++ b/modules/shift-session-manager/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "pallet-shift-session-manager" +description = "A Substrate Runtime module that selects 2/3 of initial validators for every session" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-support/std", + "frame-system/std", + "pallet-session/std", + "scale-info/std", + "sp-staking/std", + "sp-std/std", +] diff --git a/modules/shift-session-manager/src/lib.rs b/modules/shift-session-manager/src/lib.rs new file mode 100644 index 000000000000..06d0b3fb0f8d --- /dev/null +++ b/modules/shift-session-manager/src/lib.rs @@ -0,0 +1,247 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate session manager that selects 2/3 validators from initial set, +//! starting from session 2. + +#![cfg_attr(not(feature = "std"), no_std)] + +use sp_std::prelude::*; + +pub use pallet::*; + +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + + #[pallet::config] + #[pallet::disable_frame_system_supertrait_check] + pub trait Config: pallet_session::Config {} + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(PhantomData); + + #[pallet::hooks] + impl Hooks> for Pallet {} + + #[pallet::call] + impl Pallet {} + + /// Validators of first two sessions. + #[pallet::storage] + pub(super) type InitialValidators = StorageValue<_, Vec>; +} + +impl pallet_session::SessionManager for Pallet { + fn end_session(_: sp_staking::SessionIndex) {} + fn start_session(_: sp_staking::SessionIndex) {} + fn new_session(session_index: sp_staking::SessionIndex) -> Option> { + // we don't want to add even more fields to genesis config => just return None + if session_index == 0 || session_index == 1 { + return None + } + + // the idea that on first call (i.e. when session 1 ends) we're reading current + // set of validators from session module (they are initial validators) and save + // in our 'local storage'. + // then for every session we select (deterministically) 2/3 of these initial + // validators to serve validators of new session + let available_validators = InitialValidators::::get().unwrap_or_else(|| { + let validators = >::validators(); + InitialValidators::::put(validators.clone()); + validators + }); + + Some(Self::select_validators(session_index, &available_validators)) + } +} + +impl Pallet { + /// Select validators for session. + fn select_validators( + session_index: sp_staking::SessionIndex, + available_validators: &[T::ValidatorId], + ) -> Vec { + let available_validators_count = available_validators.len(); + let count = sp_std::cmp::max(1, 2 * available_validators_count / 3); + let offset = session_index as usize % available_validators_count; + let end = offset + count; + let session_validators = match end.overflowing_sub(available_validators_count) { + (wrapped_end, false) if wrapped_end != 0 => available_validators[offset..] + .iter() + .chain(available_validators[..wrapped_end].iter()) + .cloned() + .collect(), + _ => available_validators[offset..end].to_vec(), + }; + + session_validators + } +} + +#[cfg(test)] +mod tests { + // From construct_runtime macro + #![allow(clippy::from_over_into)] + + use super::*; + use frame_support::{ + parameter_types, + sp_io::TestExternalities, + sp_runtime::{ + testing::{Header, UintAuthorityId}, + traits::{BlakeTwo256, ConvertInto, IdentityLookup}, + Perbill, RuntimeAppPublic, + }, + traits::GenesisBuild, + weights::Weight, + BasicExternalities, + }; + use sp_core::H256; + + type AccountId = u64; + + type Block = frame_system::mocking::MockBlock; + type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + + frame_support::construct_runtime! { + pub enum TestRuntime where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Session: pallet_session::{Pallet}, + } + } + + parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); + } + + impl frame_system::Config for TestRuntime { + type Origin = Origin; + type Index = u64; + type Call = Call; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = Header; + type Event = (); + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = (); + type OnNewAccount = (); + type OnKilledAccount = (); + type BaseCallFilter = frame_support::traits::Everything; + type SystemWeightInfo = (); + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type SS58Prefix = (); + type OnSetCode = (); + } + + parameter_types! { + pub const Period: u64 = 1; + pub const Offset: u64 = 0; + } + + impl pallet_session::Config for TestRuntime { + type Event = (); + type ValidatorId = ::AccountId; + type ValidatorIdOf = ConvertInto; + type ShouldEndSession = pallet_session::PeriodicSessions; + type NextSessionRotation = pallet_session::PeriodicSessions; + type SessionManager = (); + type SessionHandler = TestSessionHandler; + type Keys = UintAuthorityId; + type WeightInfo = (); + } + + impl Config for TestRuntime {} + + pub struct TestSessionHandler; + impl pallet_session::SessionHandler for TestSessionHandler { + const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID]; + + fn on_genesis_session(_validators: &[(AccountId, Ks)]) { + } + + fn on_new_session( + _: bool, + _: &[(AccountId, Ks)], + _: &[(AccountId, Ks)], + ) { + } + + fn on_disabled(_: u32) {} + } + + fn new_test_ext() -> TestExternalities { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + + let keys = vec![ + (1, 1, UintAuthorityId(1)), + (2, 2, UintAuthorityId(2)), + (3, 3, UintAuthorityId(3)), + (4, 4, UintAuthorityId(4)), + (5, 5, UintAuthorityId(5)), + ]; + + BasicExternalities::execute_with_storage(&mut t, || { + for (ref k, ..) in &keys { + frame_system::Pallet::::inc_providers(k); + } + }); + + pallet_session::GenesisConfig:: { keys } + .assimilate_storage(&mut t) + .unwrap(); + TestExternalities::new(t) + } + + #[test] + fn shift_session_manager_works() { + new_test_ext().execute_with(|| { + let all_accs = vec![1, 2, 3, 4, 5]; + + // at least 1 validator is selected + assert_eq!(Pallet::::select_validators(0, &[1]), vec![1],); + + // at session#0, shift is also 0 + assert_eq!(Pallet::::select_validators(0, &all_accs), vec![1, 2, 3],); + + // at session#1, shift is also 1 + assert_eq!(Pallet::::select_validators(1, &all_accs), vec![2, 3, 4],); + + // at session#3, we're wrapping + assert_eq!(Pallet::::select_validators(3, &all_accs), vec![4, 5, 1],); + + // at session#5, we're starting from the beginning again + assert_eq!(Pallet::::select_validators(5, &all_accs), vec![1, 2, 3],); + }); + } +} diff --git a/modules/token-swap/Cargo.toml b/modules/token-swap/Cargo.toml new file mode 100644 index 000000000000..a6103f688c42 --- /dev/null +++ b/modules/token-swap/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = "pallet-bridge-token-swap" +description = "An Substrate pallet that allows parties on different chains (bridged using messages pallet) to swap their tokens" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +log = { version = "0.4.14", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true } + +# Bridge dependencies + +bp-message-dispatch = { path = "../../primitives/message-dispatch", default-features = false } +bp-messages = { path = "../../primitives/messages", default-features = false } +bp-runtime = { path = "../../primitives/runtime", default-features = false } +bp-token-swap = { path = "../../primitives/token-swap", default-features = false } +pallet-bridge-dispatch = { path = "../dispatch", default-features = false } +pallet-bridge-messages = { path = "../messages", default-features = false } + +# Substrate Dependencies + +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = ["std"] +std = [ + "codec/std", + "bp-message-dispatch/std", + "bp-messages/std", + "bp-runtime/std", + "bp-token-swap/std", + "frame-support/std", + "frame-system/std", + "log/std", + "pallet-bridge-dispatch/std", + "pallet-bridge-messages/std", + "scale-info/std", + "serde", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", +] +runtime-benchmarks = [ + "frame-benchmarking", +] diff --git a/modules/token-swap/src/benchmarking.rs b/modules/token-swap/src/benchmarking.rs new file mode 100644 index 000000000000..bbc544a8b91d --- /dev/null +++ b/modules/token-swap/src/benchmarking.rs @@ -0,0 +1,195 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Token-swap pallet benchmarking. + +use crate::{ + swap_account_id, target_account_at_this_chain, BridgedAccountIdOf, BridgedAccountPublicOf, + BridgedAccountSignatureOf, BridgedBalanceOf, Call, Pallet, ThisChainBalance, + TokenSwapCreationOf, TokenSwapOf, +}; + +use bp_token_swap::{TokenSwap, TokenSwapCreation, TokenSwapState, TokenSwapType}; +use codec::Encode; +use frame_benchmarking::{account, benchmarks_instance_pallet}; +use frame_support::{traits::Currency, Parameter}; +use frame_system::RawOrigin; +use sp_core::H256; +use sp_io::hashing::blake2_256; +use sp_runtime::traits::Bounded; +use sp_std::vec::Vec; + +const SEED: u32 = 0; + +/// Trait that must be implemented by runtime. +pub trait Config: crate::Config { + /// Initialize environment for token swap. + fn initialize_environment(); +} + +benchmarks_instance_pallet! { + where_clause { + where + BridgedAccountPublicOf: Default + Parameter, + BridgedAccountSignatureOf: Default, + } + + // + // Benchmarks that are used directly by the runtime. + // + + // Benchmark `create_swap` extrinsic. + // + // This benchmark assumes that message is **NOT** actually sent. Instead we're using `send_message_weight` + // from the `WeightInfoExt` trait. + // + // There aren't any factors that affect `create_swap` performance, so everything + // is straightforward here. + create_swap { + T::initialize_environment(); + + let sender = funded_account::("source_account_at_this_chain", 0); + let swap: TokenSwapOf = test_swap::(sender.clone(), true); + let swap_creation: TokenSwapCreationOf = test_swap_creation::(); + }: create_swap( + RawOrigin::Signed(sender.clone()), + swap, + Box::new(swap_creation) + ) + verify { + assert!(crate::PendingSwaps::::contains_key(test_swap_hash::(sender, true))); + } + + // Benchmark `claim_swap` extrinsic with the worst possible conditions: + // + // * swap is locked until some block, so current block number is read. + claim_swap { + T::initialize_environment(); + + let sender: T::AccountId = account("source_account_at_this_chain", 0, SEED); + crate::PendingSwaps::::insert( + test_swap_hash::(sender.clone(), false), + TokenSwapState::Confirmed, + ); + + let swap: TokenSwapOf = test_swap::(sender.clone(), false); + let claimer = target_account_at_this_chain::(&swap); + let token_swap_account = swap_account_id::(&swap); + T::ThisCurrency::make_free_balance_be(&token_swap_account, ThisChainBalance::::max_value()); + }: claim_swap(RawOrigin::Signed(claimer), swap) + verify { + assert!(!crate::PendingSwaps::::contains_key(test_swap_hash::(sender, false))); + } + + // Benchmark `cancel_swap` extrinsic with the worst possible conditions: + // + // * swap is locked until some block, so current block number is read. + cancel_swap { + T::initialize_environment(); + + let sender: T::AccountId = account("source_account_at_this_chain", 0, SEED); + crate::PendingSwaps::::insert( + test_swap_hash::(sender.clone(), false), + TokenSwapState::Failed, + ); + + let swap: TokenSwapOf = test_swap::(sender.clone(), false); + let token_swap_account = swap_account_id::(&swap); + T::ThisCurrency::make_free_balance_be(&token_swap_account, ThisChainBalance::::max_value()); + + }: cancel_swap(RawOrigin::Signed(sender.clone()), swap) + verify { + assert!(!crate::PendingSwaps::::contains_key(test_swap_hash::(sender, false))); + } +} + +/// Returns test token swap. +fn test_swap, I: 'static>(sender: T::AccountId, is_create: bool) -> TokenSwapOf { + TokenSwap { + swap_type: TokenSwapType::LockClaimUntilBlock( + if is_create { 10u32.into() } else { 0u32.into() }, + 0.into(), + ), + source_balance_at_this_chain: source_balance_to_swap::(), + source_account_at_this_chain: sender, + target_balance_at_bridged_chain: target_balance_to_swap::(), + target_account_at_bridged_chain: target_account_at_bridged_chain::(), + } +} + +/// Returns test token swap hash. +fn test_swap_hash, I: 'static>(sender: T::AccountId, is_create: bool) -> H256 { + test_swap::(sender, is_create).using_encoded(blake2_256).into() +} + +/// Returns test token swap creation params. +fn test_swap_creation, I: 'static>() -> TokenSwapCreationOf +where + BridgedAccountPublicOf: Default, + BridgedAccountSignatureOf: Default, +{ + TokenSwapCreation { + target_public_at_bridged_chain: target_public_at_bridged_chain::(), + swap_delivery_and_dispatch_fee: swap_delivery_and_dispatch_fee::(), + bridged_chain_spec_version: 0, + bridged_currency_transfer: Vec::new(), + bridged_currency_transfer_weight: 0, + bridged_currency_transfer_signature: bridged_currency_transfer_signature::(), + } +} + +/// Account that has some balance. +fn funded_account, I: 'static>(name: &'static str, index: u32) -> T::AccountId { + let account: T::AccountId = account(name, index, SEED); + T::ThisCurrency::make_free_balance_be(&account, ThisChainBalance::::max_value()); + account +} + +/// Currency transfer message fee. +fn swap_delivery_and_dispatch_fee, I: 'static>() -> ThisChainBalance { + ThisChainBalance::::max_value() / 4u32.into() +} + +/// Balance at the source chain that we're going to swap. +fn source_balance_to_swap, I: 'static>() -> ThisChainBalance { + ThisChainBalance::::max_value() / 2u32.into() +} + +/// Balance at the target chain that we're going to swap. +fn target_balance_to_swap, I: 'static>() -> BridgedBalanceOf { + BridgedBalanceOf::::max_value() / 2u32.into() +} + +/// Public key of `target_account_at_bridged_chain`. +fn target_public_at_bridged_chain, I: 'static>() -> BridgedAccountPublicOf +where + BridgedAccountPublicOf: Default, +{ + Default::default() +} + +/// Signature of `target_account_at_bridged_chain` over message. +fn bridged_currency_transfer_signature, I: 'static>() -> BridgedAccountSignatureOf +where + BridgedAccountSignatureOf: Default, +{ + Default::default() +} + +/// Account at the bridged chain that is participating in the swap. +fn target_account_at_bridged_chain, I: 'static>() -> BridgedAccountIdOf { + Default::default() +} diff --git a/modules/token-swap/src/lib.rs b/modules/token-swap/src/lib.rs new file mode 100644 index 000000000000..43fa13ba4bdb --- /dev/null +++ b/modules/token-swap/src/lib.rs @@ -0,0 +1,1133 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Runtime module that allows token swap between two parties acting on different chains. +//! +//! The swap is made using message lanes between This (where `pallet-bridge-token-swap` pallet +//! is deployed) and some other Bridged chain. No other assumptions about the Bridged chain are +//! made, so we don't need it to have an instance of the `pallet-bridge-token-swap` pallet deployed. +//! +//! There are four accounts participating in the swap: +//! +//! 1) account of This chain that has signed the `create_swap` transaction and has balance on This +//! chain. We'll be referring to this account as `source_account_at_this_chain`; +//! +//! 2) account of the Bridged chain that is sending the `claim_swap` message from the Bridged to +//! This chain. This account has balance on Bridged chain and is willing to swap these tokens to +//! This chain tokens of the `source_account_at_this_chain`. We'll be referring to this account +//! as `target_account_at_bridged_chain`; +//! +//! 3) account of the Bridged chain that is indirectly controlled by the +//! `source_account_at_this_chain`. We'll be referring this account as +//! `source_account_at_bridged_chain`; +//! +//! 4) account of This chain that is indirectly controlled by the `target_account_at_bridged_chain`. +//! We'll be referring this account as `target_account_at_this_chain`. +//! +//! So the tokens swap is an intention of `source_account_at_this_chain` to swap his +//! `source_balance_at_this_chain` tokens to the `target_balance_at_bridged_chain` tokens owned by +//! `target_account_at_bridged_chain`. The swap process goes as follows: +//! +//! 1) the `source_account_at_this_chain` account submits the `create_swap` transaction on This +//! chain; +//! +//! 2) the tokens transfer message that would transfer `target_balance_at_bridged_chain` +//! tokens from the `target_account_at_bridged_chain` to the `source_account_at_bridged_chain`, +//! is sent over the bridge; +//! +//! 3) when transfer message is delivered and dispatched, the pallet receives notification; +//! +//! 4) if message has been successfully dispatched, the `target_account_at_bridged_chain` sends the +//! message that would transfer `source_balance_at_this_chain` tokens to his +//! `target_account_at_this_chain` account; +//! +//! 5) if message dispatch has failed, the `source_account_at_this_chain` may submit the +//! `cancel_swap` transaction and return his `source_balance_at_this_chain` back to his account. +//! +//! While swap is pending, the `source_balance_at_this_chain` tokens are owned by the special +//! temporary `swap_account_at_this_chain` account. It is destroyed upon swap completion. + +#![cfg_attr(not(feature = "std"), no_std)] + +use bp_messages::{ + source_chain::{MessagesBridge, OnDeliveryConfirmed}, + DeliveredMessages, LaneId, MessageNonce, +}; +use bp_runtime::{messages::DispatchFeePayment, ChainId}; +use bp_token_swap::{ + RawBridgedTransferCall, TokenSwap, TokenSwapCreation, TokenSwapState, TokenSwapType, +}; +use codec::Encode; +use frame_support::{ + fail, + traits::{Currency, ExistenceRequirement}, + weights::PostDispatchInfo, +}; +use sp_core::H256; +use sp_io::hashing::blake2_256; +use sp_runtime::traits::{Convert, Saturating}; +use sp_std::boxed::Box; +use weights::WeightInfo; + +pub use weights_ext::WeightInfoExt; + +#[cfg(test)] +mod mock; + +#[cfg(feature = "runtime-benchmarks")] +pub mod benchmarking; + +pub mod weights; +pub mod weights_ext; + +pub use pallet::*; + +/// Name of the `PendingSwaps` storage map. +pub const PENDING_SWAPS_MAP_NAME: &str = "PendingSwaps"; + +// comes from #[pallet::event] +#[allow(clippy::unused_unit)] +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + + #[pallet::config] + pub trait Config: frame_system::Config { + /// The overarching event type. + type Event: From> + IsType<::Event>; + /// Benchmarks results from runtime we're plugged into. + type WeightInfo: WeightInfoExt; + + /// Id of the bridge with the Bridged chain. + type BridgedChainId: Get; + /// The identifier of outbound message lane on This chain used to send token transfer + /// messages to the Bridged chain. + /// + /// It is highly recommended to use dedicated lane for every instance of token swap + /// pallet. Messages delivery confirmation callback is implemented in the way that + /// for every confirmed message, there is (at least) a storage read. Which mean, + /// that if pallet will see unrelated confirmations, it'll just burn storage-read + /// weight, achieving nothing. + type OutboundMessageLaneId: Get; + /// Messages bridge with Bridged chain. + type MessagesBridge: MessagesBridge< + Self::AccountId, + >::Balance, + MessagePayloadOf, + >; + + /// This chain Currency used in the tokens swap. + type ThisCurrency: Currency; + /// Converter from raw hash (derived from swap) to This chain account. + type FromSwapToThisAccountIdConverter: Convert; + + /// The chain we're bridged to. + type BridgedChain: bp_runtime::Chain; + /// Converter from raw hash (derived from Bridged chain account) to This chain account. + type FromBridgedToThisAccountIdConverter: Convert; + } + + /// Tokens balance at This chain. + pub type ThisChainBalance = <>::ThisCurrency as Currency< + ::AccountId, + >>::Balance; + + /// Type of the Bridged chain. + pub type BridgedChainOf = >::BridgedChain; + /// Tokens balance type at the Bridged chain. + pub type BridgedBalanceOf = bp_runtime::BalanceOf>; + /// Account identifier type at the Bridged chain. + pub type BridgedAccountIdOf = bp_runtime::AccountIdOf>; + /// Account public key type at the Bridged chain. + pub type BridgedAccountPublicOf = bp_runtime::AccountPublicOf>; + /// Account signature type at the Bridged chain. + pub type BridgedAccountSignatureOf = bp_runtime::SignatureOf>; + + /// Bridge message payload used by the pallet. + pub type MessagePayloadOf = bp_message_dispatch::MessagePayload< + ::AccountId, + BridgedAccountPublicOf, + BridgedAccountSignatureOf, + RawBridgedTransferCall, + >; + /// Type of `TokenSwap` used by the pallet. + pub type TokenSwapOf = TokenSwap< + BlockNumberFor, + ThisChainBalance, + ::AccountId, + BridgedBalanceOf, + BridgedAccountIdOf, + >; + /// Type of `TokenSwapCreation` used by the pallet. + pub type TokenSwapCreationOf = TokenSwapCreation< + BridgedAccountPublicOf, + ThisChainBalance, + BridgedAccountSignatureOf, + >; + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(PhantomData<(T, I)>); + + #[pallet::hooks] + impl, I: 'static> Hooks> for Pallet {} + + #[pallet::call] + impl, I: 'static> Pallet + where + BridgedAccountPublicOf: Parameter, + { + /// Start token swap procedure. + /// + /// The dispatch origin for this call must be exactly the + /// `swap.source_account_at_this_chain` account. + /// + /// Method arguments are: + /// + /// - `swap` - token swap intention; + /// - `swap_creation_params` - additional parameters required to start tokens swap. + /// + /// The `source_account_at_this_chain` MUST have enough balance to cover both token swap and + /// message transfer. Message fee may be estimated using corresponding `OutboundLaneApi` of + /// This runtime. + /// + /// **WARNING**: the submitter of this transaction is responsible for verifying: + /// + /// 1) that the `swap_creation_params.bridged_currency_transfer` represents a valid token + /// transfer call that transfers `swap.target_balance_at_bridged_chain` to his + /// `swap.source_account_at_bridged_chain` account; + /// + /// 2) that either the `swap.source_account_at_bridged_chain` already exists, or the + /// `swap.target_balance_at_bridged_chain` is above existential deposit of the Bridged + /// chain; + /// + /// 3) the `swap_creation_params.target_public_at_bridged_chain` matches the + /// `swap.target_account_at_bridged_chain`; + /// + /// 4) the `bridged_currency_transfer_signature` is valid and generated by the owner of + /// the `swap_creation_params.target_public_at_bridged_chain` account (read more + /// about [`CallOrigin::TargetAccount`]). + /// + /// Violating rule#1 will lead to losing your `source_balance_at_this_chain` tokens. + /// Violating other rules will lead to losing message fees for this and other transactions + + /// losing fees for message transfer. + #[allow(clippy::boxed_local)] + #[pallet::weight( + T::WeightInfo::create_swap() + .saturating_add(T::WeightInfo::send_message_weight( + &&swap_creation_params.bridged_currency_transfer[..], + T::DbWeight::get(), + )) + )] + pub fn create_swap( + origin: OriginFor, + swap: TokenSwapOf, + swap_creation_params: Box>, + ) -> DispatchResultWithPostInfo { + let TokenSwapCreation { + target_public_at_bridged_chain, + swap_delivery_and_dispatch_fee, + bridged_chain_spec_version, + bridged_currency_transfer, + bridged_currency_transfer_weight, + bridged_currency_transfer_signature, + } = *swap_creation_params; + + // ensure that the `origin` is the same account that is mentioned in the `swap` + // intention + let origin_account = ensure_signed(origin)?; + ensure!( + origin_account == swap.source_account_at_this_chain, + Error::::MismatchedSwapSourceOrigin, + ); + + // remember weight components + let base_weight = T::WeightInfo::create_swap(); + + // we can't exchange less than existential deposit (the temporary `swap_account` account + // won't be created then) + // + // the same can also happen with the `swap.bridged_balance`, but we can't check it + // here (without additional knowledge of the Bridged chain). So it is the `origin` + // responsibility to check that the swap is valid. + ensure!( + swap.source_balance_at_this_chain >= T::ThisCurrency::minimum_balance(), + Error::::TooLowBalanceOnThisChain, + ); + + // if the swap is replay-protected, then we need to ensure that we have not yet passed + // the specified block yet + match swap.swap_type { + TokenSwapType::TemporaryTargetAccountAtBridgedChain => (), + TokenSwapType::LockClaimUntilBlock(block_number, _) => ensure!( + block_number >= frame_system::Pallet::::block_number(), + Error::::SwapPeriodIsFinished, + ), + } + + let swap_account = swap_account_id::(&swap); + let actual_send_message_weight = frame_support::storage::with_transaction(|| { + // funds are transferred from This account to the temporary Swap account + let transfer_result = T::ThisCurrency::transfer( + &swap.source_account_at_this_chain, + &swap_account, + // saturating_add is ok, or we have the chain where single holder owns all + // tokens + swap.source_balance_at_this_chain + .saturating_add(swap_delivery_and_dispatch_fee), + // if we'll allow account to die, then he'll be unable to `cancel_claim` + // if something won't work + ExistenceRequirement::KeepAlive, + ); + if let Err(err) = transfer_result { + log::error!( + target: "runtime::bridge-token-swap", + "Failed to transfer This chain tokens for the swap {:?} to Swap account ({:?}): {:?}", + swap, + swap_account, + err, + ); + + return sp_runtime::TransactionOutcome::Rollback(Err( + Error::::FailedToTransferToSwapAccount, + )) + } + + // the transfer message is sent over the bridge. The message is supposed to be a + // `Currency::transfer` call on the bridged chain, but no checks are made - it is + // the transaction submitter to ensure it is valid. + let send_message_result = T::MessagesBridge::send_message( + bp_messages::source_chain::Sender::from(Some(swap_account.clone())), + T::OutboundMessageLaneId::get(), + bp_message_dispatch::MessagePayload { + spec_version: bridged_chain_spec_version, + weight: bridged_currency_transfer_weight, + origin: bp_message_dispatch::CallOrigin::TargetAccount( + swap_account, + target_public_at_bridged_chain, + bridged_currency_transfer_signature, + ), + dispatch_fee_payment: DispatchFeePayment::AtTargetChain, + call: bridged_currency_transfer, + }, + swap_delivery_and_dispatch_fee, + ); + let sent_message = match send_message_result { + Ok(sent_message) => sent_message, + Err(err) => { + log::error!( + target: "runtime::bridge-token-swap", + "Failed to send token transfer message for swap {:?} to the Bridged chain: {:?}", + swap, + err, + ); + + return sp_runtime::TransactionOutcome::Rollback(Err( + Error::::FailedToSendTransferMessage, + )) + }, + }; + + // remember that we have started the swap + let swap_hash = swap.using_encoded(blake2_256).into(); + let insert_swap_result = + PendingSwaps::::try_mutate(swap_hash, |maybe_state| { + if maybe_state.is_some() { + return Err(()) + } + + *maybe_state = Some(TokenSwapState::Started); + Ok(()) + }); + if insert_swap_result.is_err() { + log::error!( + target: "runtime::bridge-token-swap", + "Failed to start token swap {:?}: the swap is already started", + swap, + ); + + return sp_runtime::TransactionOutcome::Rollback(Err( + Error::::SwapAlreadyStarted, + )) + } + + log::trace!( + target: "runtime::bridge-token-swap", + "The swap {:?} (hash {:?}) has been started", + swap, + swap_hash, + ); + + // remember that we're waiting for the transfer message delivery confirmation + PendingMessages::::insert(sent_message.nonce, swap_hash); + + // finally - emit the event + Self::deposit_event(Event::SwapStarted(swap_hash, sent_message.nonce)); + + sp_runtime::TransactionOutcome::Commit(Ok(sent_message.weight)) + })?; + + Ok(PostDispatchInfo { + actual_weight: Some(base_weight.saturating_add(actual_send_message_weight)), + pays_fee: Pays::Yes, + }) + } + + /// Claim previously reserved `source_balance_at_this_chain` by + /// `target_account_at_this_chain`. + /// + /// **WARNING**: the correct way to call this function is to call it over the messages + /// bridge with dispatch origin set to + /// `pallet_bridge_dispatch::CallOrigin::SourceAccount(target_account_at_bridged_chain)`. + /// + /// This should be called only when successful transfer confirmation has been received. + #[pallet::weight(T::WeightInfo::claim_swap())] + pub fn claim_swap( + origin: OriginFor, + swap: TokenSwapOf, + ) -> DispatchResultWithPostInfo { + // ensure that the `origin` is controlled by the `swap.target_account_at_bridged_chain` + let origin_account = ensure_signed(origin)?; + let target_account_at_this_chain = target_account_at_this_chain::(&swap); + ensure!(origin_account == target_account_at_this_chain, Error::::InvalidClaimant,); + + // ensure that the swap is confirmed + let swap_hash = swap.using_encoded(blake2_256).into(); + let swap_state = PendingSwaps::::get(swap_hash); + match swap_state { + Some(TokenSwapState::Started) => fail!(Error::::SwapIsPending), + Some(TokenSwapState::Confirmed) => { + let is_claim_allowed = match swap.swap_type { + TokenSwapType::TemporaryTargetAccountAtBridgedChain => true, + TokenSwapType::LockClaimUntilBlock(block_number, _) => + block_number < frame_system::Pallet::::block_number(), + }; + + ensure!(is_claim_allowed, Error::::SwapIsTemporaryLocked); + }, + Some(TokenSwapState::Failed) => fail!(Error::::SwapIsFailed), + None => fail!(Error::::SwapIsInactive), + } + + complete_claim::(swap, swap_hash, origin_account, Event::SwapClaimed(swap_hash)) + } + + /// Return previously reserved `source_balance_at_this_chain` back to the + /// `source_account_at_this_chain`. + /// + /// This should be called only when transfer has failed at Bridged chain and we have + /// received notification about that. + #[pallet::weight(T::WeightInfo::cancel_swap())] + pub fn cancel_swap( + origin: OriginFor, + swap: TokenSwapOf, + ) -> DispatchResultWithPostInfo { + // ensure that the `origin` is the same account that is mentioned in the `swap` + // intention + let origin_account = ensure_signed(origin)?; + ensure!( + origin_account == swap.source_account_at_this_chain, + Error::::MismatchedSwapSourceOrigin, + ); + + // ensure that the swap has failed + let swap_hash = swap.using_encoded(blake2_256).into(); + let swap_state = PendingSwaps::::get(swap_hash); + match swap_state { + Some(TokenSwapState::Started) => fail!(Error::::SwapIsPending), + Some(TokenSwapState::Confirmed) => fail!(Error::::SwapIsConfirmed), + Some(TokenSwapState::Failed) => { + // we allow canceling swap even before lock period is over - the + // `source_account_at_this_chain` has already paid for nothing and it is up to + // him to decide whether he want to try again + }, + None => fail!(Error::::SwapIsInactive), + } + + complete_claim::(swap, swap_hash, origin_account, Event::SwapCanceled(swap_hash)) + } + } + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event, I: 'static = ()> { + /// Tokens swap has been started and message has been sent to the bridged message. + /// + /// The payload is the swap hash and the transfer message nonce. + SwapStarted(H256, MessageNonce), + /// Token swap has been claimed. + SwapClaimed(H256), + /// Token swap has been canceled. + SwapCanceled(H256), + } + + #[pallet::error] + pub enum Error { + /// The account that has submitted the `start_claim` doesn't match the + /// `TokenSwap::source_account_at_this_chain`. + MismatchedSwapSourceOrigin, + /// The swap balance in This chain tokens is below existential deposit and can't be made. + TooLowBalanceOnThisChain, + /// Transfer from This chain account to temporary Swap account has failed. + FailedToTransferToSwapAccount, + /// Transfer from the temporary Swap account to the derived account of Bridged account has + /// failed. + FailedToTransferFromSwapAccount, + /// The message to transfer tokens on Target chain can't be sent. + FailedToSendTransferMessage, + /// The same swap is already started. + SwapAlreadyStarted, + /// Swap outcome is not yet received. + SwapIsPending, + /// Someone is trying to claim swap that has failed. + SwapIsFailed, + /// Claiming swap is not allowed. + /// + /// Now the only possible case when you may get this error, is when you're trying to claim + /// swap with `TokenSwapType::LockClaimUntilBlock` before lock period is over. + SwapIsTemporaryLocked, + /// Swap period is finished and you can not restart it. + /// + /// Now the only possible case when you may get this error, is when you're trying to start + /// swap with `TokenSwapType::LockClaimUntilBlock` after lock period is over. + SwapPeriodIsFinished, + /// Someone is trying to cancel swap that has been confirmed. + SwapIsConfirmed, + /// Someone is trying to claim/cancel swap that is either not started or already + /// claimed/canceled. + SwapIsInactive, + /// The swap claimant is invalid. + InvalidClaimant, + } + + /// Pending token swaps states. + #[pallet::storage] + pub type PendingSwaps, I: 'static = ()> = + StorageMap<_, Identity, H256, TokenSwapState>; + + /// Pending transfer messages. + #[pallet::storage] + pub type PendingMessages, I: 'static = ()> = + StorageMap<_, Identity, MessageNonce, H256>; + + impl, I: 'static> OnDeliveryConfirmed for Pallet { + fn on_messages_delivered(lane: &LaneId, delivered_messages: &DeliveredMessages) -> Weight { + // we're only interested in our lane messages + if *lane != T::OutboundMessageLaneId::get() { + return 0 + } + + // so now we're dealing with our lane messages. Ideally we'll have dedicated lane + // and every message from `delivered_messages` is actually our transfer message. + // But it may be some shared lane (which is not recommended). + let mut reads = 0; + let mut writes = 0; + for message_nonce in delivered_messages.begin..=delivered_messages.end { + reads += 1; + if let Some(swap_hash) = PendingMessages::::take(message_nonce) { + writes += 1; + + let token_swap_state = + if delivered_messages.message_dispatch_result(message_nonce) { + TokenSwapState::Confirmed + } else { + TokenSwapState::Failed + }; + + log::trace!( + target: "runtime::bridge-token-swap", + "The dispatch of swap {:?} has been completed with {:?} status", + swap_hash, + token_swap_state, + ); + + PendingSwaps::::insert(swap_hash, token_swap_state); + } + } + + ::DbWeight::get().reads_writes(reads, writes) + } + } + + /// Returns temporary account id used to lock funds during swap on This chain. + pub(crate) fn swap_account_id, I: 'static>( + swap: &TokenSwapOf, + ) -> T::AccountId { + T::FromSwapToThisAccountIdConverter::convert(swap.using_encoded(blake2_256).into()) + } + + /// Expected target account representation on This chain (aka `target_account_at_this_chain`). + pub(crate) fn target_account_at_this_chain, I: 'static>( + swap: &TokenSwapOf, + ) -> T::AccountId { + T::FromBridgedToThisAccountIdConverter::convert(bp_runtime::derive_account_id( + T::BridgedChainId::get(), + bp_runtime::SourceAccount::Account(swap.target_account_at_bridged_chain.clone()), + )) + } + + /// Complete claim with given outcome. + pub(crate) fn complete_claim, I: 'static>( + swap: TokenSwapOf, + swap_hash: H256, + destination_account: T::AccountId, + event: Event, + ) -> DispatchResultWithPostInfo { + let swap_account = swap_account_id::(&swap); + frame_support::storage::with_transaction(|| { + // funds are transferred from the temporary Swap account to the destination account + let transfer_result = T::ThisCurrency::transfer( + &swap_account, + &destination_account, + swap.source_balance_at_this_chain, + ExistenceRequirement::AllowDeath, + ); + if let Err(err) = transfer_result { + log::error!( + target: "runtime::bridge-token-swap", + "Failed to transfer This chain tokens for the swap {:?} from the Swap account {:?} to {:?}: {:?}", + swap, + swap_account, + destination_account, + err, + ); + + return sp_runtime::TransactionOutcome::Rollback(Err( + Error::::FailedToTransferFromSwapAccount.into(), + )) + } + + log::trace!( + target: "runtime::bridge-token-swap", + "The swap {:?} (hash {:?}) has been completed with {} status", + swap, + swap_hash, + match event { + Event::SwapClaimed(_) => "claimed", + Event::SwapCanceled(_) => "canceled", + _ => "", + }, + ); + + // forget about swap + PendingSwaps::::remove(swap_hash); + + // finally - emit the event + Pallet::::deposit_event(event); + + sp_runtime::TransactionOutcome::Commit(Ok(().into())) + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::mock::*; + use frame_support::{assert_noop, assert_ok}; + + const CAN_START_BLOCK_NUMBER: u64 = 10; + const CAN_CLAIM_BLOCK_NUMBER: u64 = CAN_START_BLOCK_NUMBER + 1; + + const BRIDGED_CHAIN_ACCOUNT: BridgedAccountId = 3; + const BRIDGED_CHAIN_SPEC_VERSION: u32 = 4; + const BRIDGED_CHAIN_CALL_WEIGHT: Balance = 5; + + fn bridged_chain_account_public() -> BridgedAccountPublic { + 1.into() + } + + fn bridged_chain_account_signature() -> BridgedAccountSignature { + sp_runtime::testing::TestSignature(2, Vec::new()) + } + + fn test_swap() -> TokenSwapOf { + bp_token_swap::TokenSwap { + swap_type: TokenSwapType::LockClaimUntilBlock(CAN_START_BLOCK_NUMBER, 0.into()), + source_balance_at_this_chain: 100, + source_account_at_this_chain: THIS_CHAIN_ACCOUNT, + target_balance_at_bridged_chain: 200, + target_account_at_bridged_chain: BRIDGED_CHAIN_ACCOUNT, + } + } + + fn test_swap_creation() -> TokenSwapCreationOf { + TokenSwapCreation { + target_public_at_bridged_chain: bridged_chain_account_public(), + swap_delivery_and_dispatch_fee: SWAP_DELIVERY_AND_DISPATCH_FEE, + bridged_chain_spec_version: BRIDGED_CHAIN_SPEC_VERSION, + bridged_currency_transfer: test_transfer(), + bridged_currency_transfer_weight: BRIDGED_CHAIN_CALL_WEIGHT, + bridged_currency_transfer_signature: bridged_chain_account_signature(), + } + } + + fn test_swap_hash() -> H256 { + test_swap().using_encoded(blake2_256).into() + } + + fn test_transfer() -> RawBridgedTransferCall { + vec![OK_TRANSFER_CALL] + } + + fn start_test_swap() { + assert_ok!(Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(TokenSwapCreation { + target_public_at_bridged_chain: bridged_chain_account_public(), + swap_delivery_and_dispatch_fee: SWAP_DELIVERY_AND_DISPATCH_FEE, + bridged_chain_spec_version: BRIDGED_CHAIN_SPEC_VERSION, + bridged_currency_transfer: test_transfer(), + bridged_currency_transfer_weight: BRIDGED_CHAIN_CALL_WEIGHT, + bridged_currency_transfer_signature: bridged_chain_account_signature(), + }), + )); + } + + fn receive_test_swap_confirmation(success: bool) { + Pallet::::on_messages_delivered( + &OutboundMessageLaneId::get(), + &DeliveredMessages::new(MESSAGE_NONCE, success), + ); + } + + #[test] + fn create_swap_fails_if_origin_is_incorrect() { + run_test(|| { + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT + 1), + test_swap(), + Box::new(test_swap_creation()), + ), + Error::::MismatchedSwapSourceOrigin + ); + }); + } + + #[test] + fn create_swap_fails_if_this_chain_balance_is_below_existential_deposit() { + run_test(|| { + let mut swap = test_swap(); + swap.source_balance_at_this_chain = ExistentialDeposit::get() - 1; + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + swap, + Box::new(test_swap_creation()), + ), + Error::::TooLowBalanceOnThisChain + ); + }); + } + + #[test] + fn create_swap_fails_if_currency_transfer_to_swap_account_fails() { + run_test(|| { + let mut swap = test_swap(); + swap.source_balance_at_this_chain = THIS_CHAIN_ACCOUNT_BALANCE + 1; + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + swap, + Box::new(test_swap_creation()), + ), + Error::::FailedToTransferToSwapAccount + ); + }); + } + + #[test] + fn create_swap_fails_if_send_message_fails() { + run_test(|| { + let mut transfer = test_transfer(); + transfer[0] = BAD_TRANSFER_CALL; + let mut swap_creation = test_swap_creation(); + swap_creation.bridged_currency_transfer = transfer; + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(swap_creation), + ), + Error::::FailedToSendTransferMessage + ); + }); + } + + #[test] + fn create_swap_fails_if_swap_is_active() { + run_test(|| { + assert_ok!(Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(test_swap_creation()), + )); + + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(test_swap_creation()), + ), + Error::::SwapAlreadyStarted + ); + }); + } + + #[test] + fn create_swap_fails_if_trying_to_start_swap_after_lock_period_is_finished() { + run_test(|| { + frame_system::Pallet::::set_block_number(CAN_START_BLOCK_NUMBER + 1); + assert_noop!( + Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(test_swap_creation()), + ), + Error::::SwapPeriodIsFinished + ); + }); + } + + #[test] + fn create_swap_succeeds_if_trying_to_start_swap_at_lock_period_end() { + run_test(|| { + frame_system::Pallet::::set_block_number(CAN_START_BLOCK_NUMBER); + assert_ok!(Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(test_swap_creation()), + )); + }); + } + + #[test] + fn create_swap_succeeds() { + run_test(|| { + frame_system::Pallet::::set_block_number(1); + frame_system::Pallet::::reset_events(); + + assert_ok!(Pallet::::create_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap(), + Box::new(test_swap_creation()), + )); + + let swap_hash = test_swap_hash(); + assert_eq!(PendingSwaps::::get(swap_hash), Some(TokenSwapState::Started)); + assert_eq!(PendingMessages::::get(MESSAGE_NONCE), Some(swap_hash)); + assert_eq!( + pallet_balances::Pallet::::free_balance(&swap_account_id::< + TestRuntime, + (), + >(&test_swap())), + test_swap().source_balance_at_this_chain + SWAP_DELIVERY_AND_DISPATCH_FEE, + ); + assert!( + frame_system::Pallet::::events().iter().any(|e| e.event == + crate::mock::Event::TokenSwap(crate::Event::SwapStarted( + swap_hash, + MESSAGE_NONCE, + ))), + "Missing SwapStarted event: {:?}", + frame_system::Pallet::::events(), + ); + }); + } + + #[test] + fn claim_swap_fails_if_origin_is_incorrect() { + run_test(|| { + assert_noop!( + Pallet::::claim_swap( + Origin::signed( + 1 + target_account_at_this_chain::(&test_swap()) + ), + test_swap(), + ), + Error::::InvalidClaimant + ); + }); + } + + #[test] + fn claim_swap_fails_if_swap_is_pending() { + run_test(|| { + PendingSwaps::::insert(test_swap_hash(), TokenSwapState::Started); + + assert_noop!( + Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + ), + Error::::SwapIsPending + ); + }); + } + + #[test] + fn claim_swap_fails_if_swap_is_failed() { + run_test(|| { + PendingSwaps::::insert(test_swap_hash(), TokenSwapState::Failed); + + assert_noop!( + Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + ), + Error::::SwapIsFailed + ); + }); + } + + #[test] + fn claim_swap_fails_if_swap_is_inactive() { + run_test(|| { + assert_noop!( + Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + ), + Error::::SwapIsInactive + ); + }); + } + + #[test] + fn claim_swap_fails_if_currency_transfer_from_swap_account_fails() { + run_test(|| { + frame_system::Pallet::::set_block_number(CAN_CLAIM_BLOCK_NUMBER); + PendingSwaps::::insert(test_swap_hash(), TokenSwapState::Confirmed); + + assert_noop!( + Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + ), + Error::::FailedToTransferFromSwapAccount + ); + }); + } + + #[test] + fn claim_swap_fails_before_lock_period_is_completed() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(true); + + frame_system::Pallet::::set_block_number(CAN_CLAIM_BLOCK_NUMBER - 1); + + assert_noop!( + Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + ), + Error::::SwapIsTemporaryLocked + ); + }); + } + + #[test] + fn claim_swap_succeeds() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(true); + + frame_system::Pallet::::set_block_number(CAN_CLAIM_BLOCK_NUMBER); + frame_system::Pallet::::reset_events(); + + assert_ok!(Pallet::::claim_swap( + Origin::signed(target_account_at_this_chain::(&test_swap())), + test_swap(), + )); + + let swap_hash = test_swap_hash(); + assert_eq!(PendingSwaps::::get(swap_hash), None); + assert_eq!( + pallet_balances::Pallet::::free_balance(&swap_account_id::< + TestRuntime, + (), + >(&test_swap())), + 0, + ); + assert_eq!( + pallet_balances::Pallet::::free_balance( + &target_account_at_this_chain::(&test_swap()), + ), + test_swap().source_balance_at_this_chain, + ); + assert!( + frame_system::Pallet::::events().iter().any(|e| e.event == + crate::mock::Event::TokenSwap(crate::Event::SwapClaimed(swap_hash,))), + "Missing SwapClaimed event: {:?}", + frame_system::Pallet::::events(), + ); + }); + } + + #[test] + fn cancel_swap_fails_if_origin_is_incorrect() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(false); + + assert_noop!( + Pallet::::cancel_swap( + Origin::signed(THIS_CHAIN_ACCOUNT + 1), + test_swap() + ), + Error::::MismatchedSwapSourceOrigin + ); + }); + } + + #[test] + fn cancel_swap_fails_if_swap_is_pending() { + run_test(|| { + start_test_swap(); + + assert_noop!( + Pallet::::cancel_swap(Origin::signed(THIS_CHAIN_ACCOUNT), test_swap()), + Error::::SwapIsPending + ); + }); + } + + #[test] + fn cancel_swap_fails_if_swap_is_confirmed() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(true); + + assert_noop!( + Pallet::::cancel_swap(Origin::signed(THIS_CHAIN_ACCOUNT), test_swap()), + Error::::SwapIsConfirmed + ); + }); + } + + #[test] + fn cancel_swap_fails_if_swap_is_inactive() { + run_test(|| { + assert_noop!( + Pallet::::cancel_swap(Origin::signed(THIS_CHAIN_ACCOUNT), test_swap()), + Error::::SwapIsInactive + ); + }); + } + + #[test] + fn cancel_swap_fails_if_currency_transfer_from_swap_account_fails() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(false); + let _ = pallet_balances::Pallet::::slash( + &swap_account_id::(&test_swap()), + test_swap().source_balance_at_this_chain, + ); + + assert_noop!( + Pallet::::cancel_swap(Origin::signed(THIS_CHAIN_ACCOUNT), test_swap()), + Error::::FailedToTransferFromSwapAccount + ); + }); + } + + #[test] + fn cancel_swap_succeeds() { + run_test(|| { + start_test_swap(); + receive_test_swap_confirmation(false); + + frame_system::Pallet::::set_block_number(1); + frame_system::Pallet::::reset_events(); + + assert_ok!(Pallet::::cancel_swap( + Origin::signed(THIS_CHAIN_ACCOUNT), + test_swap() + )); + + let swap_hash = test_swap_hash(); + assert_eq!(PendingSwaps::::get(swap_hash), None); + assert_eq!( + pallet_balances::Pallet::::free_balance(&swap_account_id::< + TestRuntime, + (), + >(&test_swap())), + 0, + ); + assert_eq!( + pallet_balances::Pallet::::free_balance(&THIS_CHAIN_ACCOUNT), + THIS_CHAIN_ACCOUNT_BALANCE - SWAP_DELIVERY_AND_DISPATCH_FEE, + ); + assert!( + frame_system::Pallet::::events().iter().any(|e| e.event == + crate::mock::Event::TokenSwap(crate::Event::SwapCanceled(swap_hash,))), + "Missing SwapCanceled event: {:?}", + frame_system::Pallet::::events(), + ); + }); + } + + #[test] + fn messages_delivery_confirmations_are_accepted() { + run_test(|| { + start_test_swap(); + assert_eq!( + PendingMessages::::get(MESSAGE_NONCE), + Some(test_swap_hash()) + ); + assert_eq!( + PendingSwaps::::get(test_swap_hash()), + Some(TokenSwapState::Started) + ); + + // when unrelated messages are delivered + let mut messages = DeliveredMessages::new(MESSAGE_NONCE - 2, true); + messages.note_dispatched_message(false); + Pallet::::on_messages_delivered( + &OutboundMessageLaneId::get(), + &messages, + ); + assert_eq!( + PendingMessages::::get(MESSAGE_NONCE), + Some(test_swap_hash()) + ); + assert_eq!( + PendingSwaps::::get(test_swap_hash()), + Some(TokenSwapState::Started) + ); + + // when message we're interested in is accompanied by a bunch of other messages + let mut messages = DeliveredMessages::new(MESSAGE_NONCE - 1, false); + messages.note_dispatched_message(true); + messages.note_dispatched_message(false); + Pallet::::on_messages_delivered( + &OutboundMessageLaneId::get(), + &messages, + ); + assert_eq!(PendingMessages::::get(MESSAGE_NONCE), None); + assert_eq!( + PendingSwaps::::get(test_swap_hash()), + Some(TokenSwapState::Confirmed) + ); + }); + } +} diff --git a/modules/token-swap/src/mock.rs b/modules/token-swap/src/mock.rs new file mode 100644 index 000000000000..63edb323e1a4 --- /dev/null +++ b/modules/token-swap/src/mock.rs @@ -0,0 +1,187 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate as pallet_bridge_token_swap; +use crate::MessagePayloadOf; + +use bp_messages::{ + source_chain::{MessagesBridge, SendMessageArtifacts}, + LaneId, MessageNonce, +}; +use bp_runtime::ChainId; +use frame_support::weights::Weight; +use sp_core::H256; +use sp_runtime::{ + testing::Header as SubstrateHeader, + traits::{BlakeTwo256, IdentityLookup}, + Perbill, +}; + +pub type AccountId = u64; +pub type Balance = u64; +pub type Block = frame_system::mocking::MockBlock; +pub type BridgedAccountId = u64; +pub type BridgedAccountPublic = sp_runtime::testing::UintAuthorityId; +pub type BridgedAccountSignature = sp_runtime::testing::TestSignature; +pub type BridgedBalance = u64; +pub type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; + +pub const OK_TRANSFER_CALL: u8 = 1; +pub const BAD_TRANSFER_CALL: u8 = 2; +pub const MESSAGE_NONCE: MessageNonce = 3; + +pub const THIS_CHAIN_ACCOUNT: AccountId = 1; +pub const THIS_CHAIN_ACCOUNT_BALANCE: Balance = 100_000; + +pub const SWAP_DELIVERY_AND_DISPATCH_FEE: Balance = 1; + +frame_support::construct_runtime! { + pub enum TestRuntime where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Event}, + TokenSwap: pallet_bridge_token_swap::{Pallet, Call, Event}, + } +} + +frame_support::parameter_types! { + pub const BlockHashCount: u64 = 250; + pub const MaximumBlockWeight: Weight = 1024; + pub const MaximumBlockLength: u32 = 2 * 1024; + pub const AvailableBlockRatio: Perbill = Perbill::one(); +} + +impl frame_system::Config for TestRuntime { + type Origin = Origin; + type Index = u64; + type Call = Call; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type AccountId = AccountId; + type Lookup = IdentityLookup; + type Header = SubstrateHeader; + type Event = Event; + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type BaseCallFilter = frame_support::traits::Everything; + type SystemWeightInfo = (); + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type SS58Prefix = (); + type OnSetCode = (); +} + +frame_support::parameter_types! { + pub const ExistentialDeposit: u64 = 10; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for TestRuntime { + type MaxLocks = (); + type Balance = Balance; + type DustRemoval = (); + type Event = Event; + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = frame_system::Pallet; + type WeightInfo = (); + type MaxReserves = MaxReserves; + type ReserveIdentifier = [u8; 8]; +} + +frame_support::parameter_types! { + pub const BridgedChainId: ChainId = *b"inst"; + pub const OutboundMessageLaneId: LaneId = *b"lane"; +} + +impl pallet_bridge_token_swap::Config for TestRuntime { + type Event = Event; + type WeightInfo = (); + + type BridgedChainId = BridgedChainId; + type OutboundMessageLaneId = OutboundMessageLaneId; + type MessagesBridge = TestMessagesBridge; + + type ThisCurrency = pallet_balances::Pallet; + type FromSwapToThisAccountIdConverter = TestAccountConverter; + + type BridgedChain = BridgedChain; + type FromBridgedToThisAccountIdConverter = TestAccountConverter; +} + +pub struct BridgedChain; + +impl bp_runtime::Chain for BridgedChain { + type BlockNumber = u64; + type Hash = H256; + type Hasher = BlakeTwo256; + type Header = sp_runtime::generic::Header; + + type AccountId = BridgedAccountId; + type Balance = BridgedBalance; + type Index = u64; + type Signature = BridgedAccountSignature; +} + +pub struct TestMessagesBridge; + +impl MessagesBridge> for TestMessagesBridge { + type Error = (); + + fn send_message( + sender: frame_system::RawOrigin, + lane: LaneId, + message: MessagePayloadOf, + delivery_and_dispatch_fee: Balance, + ) -> Result { + assert_ne!(sender, frame_system::RawOrigin::Signed(THIS_CHAIN_ACCOUNT)); + assert_eq!(lane, OutboundMessageLaneId::get()); + assert_eq!(delivery_and_dispatch_fee, SWAP_DELIVERY_AND_DISPATCH_FEE); + match message.call[0] { + OK_TRANSFER_CALL => Ok(SendMessageArtifacts { nonce: MESSAGE_NONCE, weight: 0 }), + BAD_TRANSFER_CALL => Err(()), + _ => unreachable!(), + } + } +} + +pub struct TestAccountConverter; + +impl sp_runtime::traits::Convert for TestAccountConverter { + fn convert(hash: H256) -> AccountId { + hash.to_low_u64_ne() + } +} + +/// Run pallet test. +pub fn run_test(test: impl FnOnce() -> T) -> T { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + pallet_balances::GenesisConfig:: { + balances: vec![(THIS_CHAIN_ACCOUNT, THIS_CHAIN_ACCOUNT_BALANCE)], + } + .assimilate_storage(&mut t) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(test) +} diff --git a/modules/token-swap/src/weights.rs b/modules/token-swap/src/weights.rs new file mode 100644 index 000000000000..06cb6b85cf33 --- /dev/null +++ b/modules/token-swap/src/weights.rs @@ -0,0 +1,93 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Autogenerated weights for `pallet_bridge_token_swap` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-10-06, STEPS: 50, REPEAT: 20 +//! LOW RANGE: [], HIGH RANGE: [] +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled +//! CHAIN: Some("dev"), DB CACHE: 128 + +// Executed Command: +// target/release/millau-bridge-node +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bridge_token_swap +// --extrinsic=* +// --execution=wasm +// --wasm-execution=Compiled +// --heap-pages=4096 +// --output=./modules/token-swap/src/weights.rs +// --template=./.maintain/millau-weight-template.hbs + +#![allow(clippy::all)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{ + traits::Get, + weights::{constants::RocksDbWeight, Weight}, +}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for `pallet_bridge_token_swap`. +pub trait WeightInfo { + fn create_swap() -> Weight; + fn claim_swap() -> Weight; + fn cancel_swap() -> Weight; +} + +/// Weights for `pallet_bridge_token_swap` using the Millau node and recommended hardware. +pub struct MillauWeight(PhantomData); +impl WeightInfo for MillauWeight { + fn create_swap() -> Weight { + (116_040_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + fn claim_swap() -> Weight { + (102_882_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + fn cancel_swap() -> Weight { + (99_434_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + fn create_swap() -> Weight { + (116_040_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + } + fn claim_swap() -> Weight { + (102_882_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } + fn cancel_swap() -> Weight { + (99_434_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } +} diff --git a/modules/token-swap/src/weights_ext.rs b/modules/token-swap/src/weights_ext.rs new file mode 100644 index 000000000000..2d27c76cbe68 --- /dev/null +++ b/modules/token-swap/src/weights_ext.rs @@ -0,0 +1,42 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Weight-related utilities. + +use crate::weights::WeightInfo; + +use bp_runtime::Size; +use frame_support::weights::{RuntimeDbWeight, Weight}; + +/// Extended weight info. +pub trait WeightInfoExt: WeightInfo { + // Functions that are directly mapped to extrinsics weights. + + /// Weight of message send extrinsic. + fn send_message_weight(message: &impl Size, db_weight: RuntimeDbWeight) -> Weight; +} + +impl WeightInfoExt for () { + fn send_message_weight(message: &impl Size, db_weight: RuntimeDbWeight) -> Weight { + <() as pallet_bridge_messages::WeightInfoExt>::send_message_weight(message, db_weight) + } +} + +impl WeightInfoExt for crate::weights::MillauWeight { + fn send_message_weight(message: &impl Size, db_weight: RuntimeDbWeight) -> Weight { + <() as pallet_bridge_messages::WeightInfoExt>::send_message_weight(message, db_weight) + } +} diff --git a/node/client/Cargo.toml b/node/client/Cargo.toml deleted file mode 100644 index 4f84b65659a9..000000000000 --- a/node/client/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "polkadot-client" -version = "0.9.3" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } - -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-offchain = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } - -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master" } - -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } - -# Polkadot Runtimes -polkadot-runtime = { path = "../../runtime/polkadot" } -kusama-runtime = { path = "../../runtime/kusama", optional = true } -westend-runtime = { path = "../../runtime/westend", optional = true } -rococo-runtime = { path = "../../runtime/rococo", optional = true } - -polkadot-primitives = { path = "../../primitives" } - -[features] -kusama = [ "kusama-runtime" ] -rococo = [ "rococo-runtime" ] -westend = [ "westend-runtime" ] diff --git a/node/client/src/lib.rs b/node/client/src/lib.rs deleted file mode 100644 index 7a0a2264d914..000000000000 --- a/node/client/src/lib.rs +++ /dev/null @@ -1,529 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot Client -//! -//! Provides the [`AbstractClient`] trait that is a super trait that combines all the traits the client implements. -//! There is also the [`Client`] enum that combines all the different clients into one common structure. - -use std::sync::Arc; -use sp_api::{ProvideRuntimeApi, CallApiAt, NumberFor}; -use sp_blockchain::HeaderBackend; -use sp_runtime::{ - Justifications, generic::{BlockId, SignedBlock}, traits::{Block as BlockT, BlakeTwo256}, -}; -use sc_client_api::{Backend as BackendT, BlockchainEvents, KeyIterator, AuxStore, UsageProvider}; -use sp_storage::{StorageData, StorageKey, ChildInfo, PrefixedStorageKey}; -use polkadot_primitives::v1::{Block, ParachainHost, AccountId, Nonce, Balance, Header, BlockNumber, Hash}; -use sp_consensus::BlockStatus; -use sc_executor::native_executor_instance; - -pub type FullBackend = sc_service::TFullBackend; - -pub type FullClient = sc_service::TFullClient; - -native_executor_instance!( - pub PolkadotExecutor, - polkadot_runtime::api::dispatch, - polkadot_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -#[cfg(feature = "kusama")] -native_executor_instance!( - pub KusamaExecutor, - kusama_runtime::api::dispatch, - kusama_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -#[cfg(feature = "westend")] -native_executor_instance!( - pub WestendExecutor, - westend_runtime::api::dispatch, - westend_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -#[cfg(feature = "rococo")] -native_executor_instance!( - pub RococoExecutor, - rococo_runtime::api::dispatch, - rococo_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -/// A set of APIs that polkadot-like runtimes must implement. -pub trait RuntimeApiCollection: - sp_transaction_pool::runtime_api::TaggedTransactionQueue - + sp_api::ApiExt - + sp_consensus_babe::BabeApi - + sp_finality_grandpa::GrandpaApi - + ParachainHost - + sp_block_builder::BlockBuilder - + frame_system_rpc_runtime_api::AccountNonceApi - + pallet_mmr_primitives::MmrApi::Hash> - + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi - + sp_api::Metadata - + sp_offchain::OffchainWorkerApi - + sp_session::SessionKeys - + sp_authority_discovery::AuthorityDiscoveryApi - + beefy_primitives::BeefyApi -where - >::StateBackend: sp_api::StateBackend, -{} - -impl RuntimeApiCollection for Api -where - Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + sp_api::ApiExt - + sp_consensus_babe::BabeApi - + sp_finality_grandpa::GrandpaApi - + ParachainHost - + sp_block_builder::BlockBuilder - + frame_system_rpc_runtime_api::AccountNonceApi - + pallet_mmr_primitives::MmrApi::Hash> - + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi - + sp_api::Metadata - + sp_offchain::OffchainWorkerApi - + sp_session::SessionKeys - + sp_authority_discovery::AuthorityDiscoveryApi - + beefy_primitives::BeefyApi, - >::StateBackend: sp_api::StateBackend, -{} - -/// Trait that abstracts over all available client implementations. -/// -/// For a concrete type there exists [`Client`]. -pub trait AbstractClient: - BlockchainEvents + Sized + Send + Sync - + ProvideRuntimeApi - + HeaderBackend - + CallApiAt< - Block, - StateBackend = Backend::State - > - + AuxStore - + UsageProvider - where - Block: BlockT, - Backend: BackendT, - Backend::State: sp_api::StateBackend, - Self::Api: RuntimeApiCollection, -{} - -impl AbstractClient for Client - where - Block: BlockT, - Backend: BackendT, - Backend::State: sp_api::StateBackend, - Client: BlockchainEvents - + ProvideRuntimeApi - + HeaderBackend - + AuxStore - + UsageProvider - + Sized - + Send - + Sync - + CallApiAt< - Block, - StateBackend = Backend::State - >, - Client::Api: RuntimeApiCollection, -{} - -/// Execute something with the client instance. -/// -/// As there exist multiple chains inside Polkadot, like Polkadot itself, Kusama, Westend etc, -/// there can exist different kinds of client types. As these client types differ in the generics -/// that are being used, we can not easily return them from a function. For returning them from a -/// function there exists [`Client`]. However, the problem on how to use this client instance still -/// exists. This trait "solves" it in a dirty way. It requires a type to implement this trait and -/// than the [`execute_with_client`](ExecuteWithClient::execute_with_client) function can be called -/// with any possible client instance. -/// -/// In a perfect world, we could make a closure work in this way. -pub trait ExecuteWithClient { - /// The return type when calling this instance. - type Output; - - /// Execute whatever should be executed with the given client instance. - fn execute_with_client(self, client: Arc) -> Self::Output - where - >::StateBackend: sp_api::StateBackend, - Backend: sc_client_api::Backend + 'static, - Backend::State: sp_api::StateBackend, - Api: crate::RuntimeApiCollection, - Client: AbstractClient + 'static; -} - -/// A handle to a Polkadot client instance. -/// -/// The Polkadot service supports multiple different runtimes (Westend, Polkadot itself, etc). As each runtime has a -/// specialized client, we need to hide them behind a trait. This is this trait. -/// -/// When wanting to work with the inner client, you need to use `execute_with`. -/// -/// See [`ExecuteWithClient`](trait.ExecuteWithClient.html) for more information. -pub trait ClientHandle { - /// Execute the given something with the client. - fn execute_with(&self, t: T) -> T::Output; -} - -macro_rules! with_client { - { - $self:ident, - $client:ident, - { - $( $code:tt )* - } - } => { - match $self { - Self::Polkadot($client) => { $( $code )* }, - #[cfg(feature = "westend")] - Self::Westend($client) => { $( $code )* }, - #[cfg(feature = "kusama")] - Self::Kusama($client) => { $( $code )* }, - #[cfg(feature = "rococo")] - Self::Rococo($client) => { $( $code )* }, - } - } -} - -/// A client instance of Polkadot. -/// -/// See [`ExecuteWithClient`] for more information. -#[derive(Clone)] -pub enum Client { - Polkadot(Arc>), - #[cfg(feature = "westend")] - Westend(Arc>), - #[cfg(feature = "kusama")] - Kusama(Arc>), - #[cfg(feature = "rococo")] - Rococo(Arc>), -} - -impl ClientHandle for Client { - fn execute_with(&self, t: T) -> T::Output { - with_client! { - self, - client, - { - T::execute_with_client::<_, _, FullBackend>(t, client.clone()) - } - } - } -} - -impl UsageProvider for Client { - fn usage_info(&self) -> sc_client_api::ClientInfo { - with_client! { - self, - client, - { - client.usage_info() - } - } - } -} - -impl sc_client_api::BlockBackend for Client { - fn block_body( - &self, - id: &BlockId - ) -> sp_blockchain::Result::Extrinsic>>> { - with_client! { - self, - client, - { - client.block_body(id) - } - } - } - - fn block(&self, id: &BlockId) -> sp_blockchain::Result>> { - with_client! { - self, - client, - { - client.block(id) - } - } - } - - fn block_status(&self, id: &BlockId) -> sp_blockchain::Result { - with_client! { - self, - client, - { - client.block_status(id) - } - } - } - - fn justifications( - &self, - id: &BlockId - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.justifications(id) - } - } - } - - fn block_hash( - &self, - number: NumberFor - ) -> sp_blockchain::Result::Hash>> { - with_client! { - self, - client, - { - client.block_hash(number) - } - } - } - - fn indexed_transaction( - &self, - id: &::Hash - ) -> sp_blockchain::Result>> { - with_client! { - self, - client, - { - client.indexed_transaction(id) - } - } - } - - fn block_indexed_body( - &self, - id: &BlockId - ) -> sp_blockchain::Result>>> { - with_client! { - self, - client, - { - client.block_indexed_body(id) - } - } - } -} - -impl sc_client_api::StorageProvider for Client { - fn storage( - &self, - id: &BlockId, - key: &StorageKey, - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.storage(id, key) - } - } - } - - fn storage_keys( - &self, - id: &BlockId, - key_prefix: &StorageKey, - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.storage_keys(id, key_prefix) - } - } - } - - fn storage_hash( - &self, - id: &BlockId, - key: &StorageKey, - ) -> sp_blockchain::Result::Hash>> { - with_client! { - self, - client, - { - client.storage_hash(id, key) - } - } - } - - fn storage_pairs( - &self, - id: &BlockId, - key_prefix: &StorageKey, - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.storage_pairs(id, key_prefix) - } - } - } - - fn storage_keys_iter<'a>( - &self, - id: &BlockId, - prefix: Option<&'a StorageKey>, - start_key: Option<&StorageKey>, - ) -> sp_blockchain::Result>::State, Block>> { - with_client! { - self, - client, - { - client.storage_keys_iter(id, prefix, start_key) - } - } - } - - fn child_storage( - &self, - id: &BlockId, - child_info: &ChildInfo, - key: &StorageKey, - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.child_storage(id, child_info, key) - } - } - } - - fn child_storage_keys( - &self, - id: &BlockId, - child_info: &ChildInfo, - key_prefix: &StorageKey, - ) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.child_storage_keys(id, child_info, key_prefix) - } - } - } - - fn child_storage_hash( - &self, - id: &BlockId, - child_info: &ChildInfo, - key: &StorageKey, - ) -> sp_blockchain::Result::Hash>> { - with_client! { - self, - client, - { - client.child_storage_hash(id, child_info, key) - } - } - } - - fn max_key_changes_range( - &self, - first: NumberFor, - last: BlockId, - ) -> sp_blockchain::Result, BlockId)>> { - with_client! { - self, - client, - { - client.max_key_changes_range(first, last) - } - } - } - - fn key_changes( - &self, - first: NumberFor, - last: BlockId, - storage_key: Option<&PrefixedStorageKey>, - key: &StorageKey, - ) -> sp_blockchain::Result, u32)>> { - with_client! { - self, - client, - { - client.key_changes(first, last, storage_key, key) - } - } - } -} - -impl sp_blockchain::HeaderBackend for Client { - fn header(&self, id: BlockId) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.header(&id) - } - } - } - - fn info(&self) -> sp_blockchain::Info { - with_client! { - self, - client, - { - client.info() - } - } - } - - fn status(&self, id: BlockId) -> sp_blockchain::Result { - with_client! { - self, - client, - { - client.status(id) - } - } - } - - fn number(&self, hash: Hash) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.number(hash) - } - } - } - - fn hash(&self, number: BlockNumber) -> sp_blockchain::Result> { - with_client! { - self, - client, - { - client.hash(number) - } - } - } -} diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml deleted file mode 100644 index e669b9f32cbe..000000000000 --- a/node/collation-generation/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "polkadot-node-collation-generation" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -polkadot-erasure-coding = { path = "../../erasure-coding" } -polkadot-node-primitives = { path = "../primitives" } -polkadot-node-subsystem = { path = "../subsystem" } -polkadot-node-subsystem-util = { path = "../subsystem-util" } -polkadot-primitives = { path = "../../primitives" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-maybe-compressed-blob = { git = "https://github.com/paritytech/substrate", branch = "master" } -thiserror = "1.0.23" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } - -[dev-dependencies] -polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" } diff --git a/node/collation-generation/src/error.rs b/node/collation-generation/src/error.rs deleted file mode 100644 index 44b08c473f83..000000000000 --- a/node/collation-generation/src/error.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use thiserror::Error; - -#[derive(Debug, Error)] -pub enum Error { - #[error(transparent)] - Subsystem(#[from] polkadot_node_subsystem::SubsystemError), - #[error(transparent)] - OneshotRecv(#[from] futures::channel::oneshot::Canceled), - #[error(transparent)] - Runtime(#[from] polkadot_node_subsystem::errors::RuntimeApiError), - #[error(transparent)] - Util(#[from] polkadot_node_subsystem_util::Error), - #[error(transparent)] - Erasure(#[from] polkadot_erasure_coding::Error), -} - -pub type Result = std::result::Result; diff --git a/node/collation-generation/src/lib.rs b/node/collation-generation/src/lib.rs deleted file mode 100644 index 0d23cf25959b..000000000000 --- a/node/collation-generation/src/lib.rs +++ /dev/null @@ -1,511 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The collation generation subsystem is the interface between polkadot and the collators. - -#![deny(missing_docs)] - -use futures::{ - channel::mpsc, - future::FutureExt, - join, - select, - sink::SinkExt, - stream::StreamExt, -}; -use polkadot_node_primitives::{ - CollationGenerationConfig, AvailableData, PoV, -}; -use polkadot_node_subsystem::{ - messages::{AllMessages, CollationGenerationMessage, CollatorProtocolMessage}, - FromOverseer, SpawnedSubsystem, Subsystem, SubsystemContext, SubsystemResult, -}; -use polkadot_node_subsystem_util::{ - request_availability_cores, request_persisted_validation_data, - request_validators, request_validation_code, - metrics::{self, prometheus}, -}; -use polkadot_primitives::v1::{ - collator_signature_payload, CandidateCommitments, - CandidateDescriptor, CandidateReceipt, CoreState, Hash, OccupiedCoreAssumption, - PersistedValidationData, -}; -use parity_scale_codec::Encode; -use sp_core::crypto::Pair; -use std::sync::Arc; - -mod error; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &'static str = "parachain::collation-generation"; - -/// Collation Generation Subsystem -pub struct CollationGenerationSubsystem { - config: Option>, - metrics: Metrics, -} - -impl CollationGenerationSubsystem { - /// Create a new instance of the `CollationGenerationSubsystem`. - pub fn new(metrics: Metrics) -> Self { - Self { - config: None, - metrics, - } - } - - /// Run this subsystem - /// - /// Conceptually, this is very simple: it just loops forever. - /// - /// - On incoming overseer messages, it starts or stops jobs as appropriate. - /// - On other incoming messages, if they can be converted into Job::ToJob and - /// include a hash, then they're forwarded to the appropriate individual job. - /// - On outgoing messages from the jobs, it forwards them to the overseer. - /// - /// If `err_tx` is not `None`, errors are forwarded onto that channel as they occur. - /// Otherwise, most are logged and then discarded. - async fn run(mut self, mut ctx: Context) - where - Context: SubsystemContext, - { - // when we activate new leaves, we spawn a bunch of sub-tasks, each of which is - // expected to generate precisely one message. We don't want to block the main loop - // at any point waiting for them all, so instead, we create a channel on which they can - // send those messages. We can then just monitor the channel and forward messages on it - // to the overseer here, via the context. - let (sender, receiver) = mpsc::channel(0); - - let mut receiver = receiver.fuse(); - loop { - select! { - incoming = ctx.recv().fuse() => { - if self.handle_incoming::(incoming, &mut ctx, &sender).await { - break; - } - }, - msg = receiver.next() => { - if let Some(msg) = msg { - ctx.send_message(msg).await; - } - }, - } - } - } - - // handle an incoming message. return true if we should break afterwards. - // note: this doesn't strictly need to be a separate function; it's more an administrative function - // so that we don't clutter the run loop. It could in principle be inlined directly into there. - // it should hopefully therefore be ok that it's an async function mutably borrowing self. - async fn handle_incoming( - &mut self, - incoming: SubsystemResult>, - ctx: &mut Context, - sender: &mpsc::Sender, - ) -> bool - where - Context: SubsystemContext, - { - use polkadot_node_subsystem::ActiveLeavesUpdate; - use polkadot_node_subsystem::FromOverseer::{Communication, Signal}; - use polkadot_node_subsystem::OverseerSignal::{ActiveLeaves, BlockFinalized, Conclude}; - - match incoming { - Ok(Signal(ActiveLeaves(ActiveLeavesUpdate { activated, .. }))) => { - // follow the procedure from the guide - if let Some(config) = &self.config { - let metrics = self.metrics.clone(); - if let Err(err) = handle_new_activations( - config.clone(), - activated.into_iter().map(|v| v.hash), - ctx, - metrics, - sender, - ).await { - tracing::warn!(target: LOG_TARGET, err = ?err, "failed to handle new activations"); - } - } - - false - } - Ok(Signal(Conclude)) => true, - Ok(Communication { - msg: CollationGenerationMessage::Initialize(config), - }) => { - if self.config.is_some() { - tracing::error!(target: LOG_TARGET, "double initialization"); - } else { - self.config = Some(Arc::new(config)); - } - false - } - Ok(Signal(BlockFinalized(..))) => false, - Err(err) => { - tracing::error!( - target: LOG_TARGET, - err = ?err, - "error receiving message from subsystem context: {:?}", - err - ); - true - } - } - } -} - -impl Subsystem for CollationGenerationSubsystem -where - Context: SubsystemContext, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = async move { - self.run(ctx).await; - Ok(()) - }.boxed(); - - SpawnedSubsystem { - name: "collation-generation-subsystem", - future, - } - } -} - -async fn handle_new_activations( - config: Arc, - activated: impl IntoIterator, - ctx: &mut Context, - metrics: Metrics, - sender: &mpsc::Sender, -) -> crate::error::Result<()> { - // follow the procedure from the guide: - // https://w3f.github.io/parachain-implementers-guide/node/collators/collation-generation.html - - let _overall_timer = metrics.time_new_activations(); - - for relay_parent in activated { - let _relay_parent_timer = metrics.time_new_activations_relay_parent(); - - let (availability_cores, validators) = join!( - request_availability_cores(relay_parent, ctx.sender()).await, - request_validators(relay_parent, ctx.sender()).await, - ); - - let availability_cores = availability_cores??; - let n_validators = validators??.len(); - - for (core_idx, core) in availability_cores.into_iter().enumerate() { - let _availability_core_timer = metrics.time_new_activations_availability_core(); - - let (scheduled_core, assumption) = match core { - CoreState::Scheduled(scheduled_core) => { - (scheduled_core, OccupiedCoreAssumption::Free) - } - CoreState::Occupied(_occupied_core) => { - // TODO: https://github.com/paritytech/polkadot/issues/1573 - tracing::trace!( - target: LOG_TARGET, - core_idx = %core_idx, - relay_parent = ?relay_parent, - "core is occupied. Keep going.", - ); - continue; - } - CoreState::Free => { - tracing::trace!( - target: LOG_TARGET, - core_idx = %core_idx, - "core is free. Keep going.", - ); - continue - } - }; - - if scheduled_core.para_id != config.para_id { - tracing::trace!( - target: LOG_TARGET, - core_idx = %core_idx, - relay_parent = ?relay_parent, - our_para = %config.para_id, - their_para = %scheduled_core.para_id, - "core is not assigned to our para. Keep going.", - ); - continue; - } - - // we get validation data and validation code synchronously for each core instead of - // within the subtask loop, because we have only a single mutable handle to the - // context, so the work can't really be distributed - - let validation_data = match request_persisted_validation_data( - relay_parent, - scheduled_core.para_id, - assumption, - ctx.sender(), - ) - .await - .await?? - { - Some(v) => v, - None => { - tracing::trace!( - target: LOG_TARGET, - core_idx = %core_idx, - relay_parent = ?relay_parent, - our_para = %config.para_id, - their_para = %scheduled_core.para_id, - "validation data is not available", - ); - continue - } - }; - - let validation_code = match request_validation_code( - relay_parent, - scheduled_core.para_id, - assumption, - ctx.sender(), - ) - .await - .await?? - { - Some(v) => v, - None => { - tracing::trace!( - target: LOG_TARGET, - core_idx = %core_idx, - relay_parent = ?relay_parent, - our_para = %config.para_id, - their_para = %scheduled_core.para_id, - "validation code is not available", - ); - continue - } - }; - let validation_code_hash = validation_code.hash(); - - let task_config = config.clone(); - let mut task_sender = sender.clone(); - let metrics = metrics.clone(); - ctx.spawn("collation generation collation builder", Box::pin(async move { - let persisted_validation_data_hash = validation_data.hash(); - - let (collation, result_sender) = match (task_config.collator)(relay_parent, &validation_data).await { - Some(collation) => collation.into_inner(), - None => { - tracing::debug!( - target: LOG_TARGET, - para_id = %scheduled_core.para_id, - "collator returned no collation on collate", - ); - return - } - }; - - // Apply compression to the block data. - let pov = { - let pov = polkadot_node_primitives::maybe_compress_pov(collation.proof_of_validity); - let encoded_size = pov.encoded_size(); - - // As long as `POV_BOMB_LIMIT` is at least `max_pov_size`, this ensures - // that honest collators never produce a PoV which is uncompressed. - // - // As such, honest collators never produce an uncompressed PoV which starts with - // a compression magic number, which would lead validators to reject the collation. - if encoded_size > validation_data.max_pov_size as usize { - tracing::debug!( - target: LOG_TARGET, - para_id = %scheduled_core.para_id, - size = encoded_size, - max_size = validation_data.max_pov_size, - "PoV exceeded maximum size" - ); - - return - } - - pov - }; - - let pov_hash = pov.hash(); - - let signature_payload = collator_signature_payload( - &relay_parent, - &scheduled_core.para_id, - &persisted_validation_data_hash, - &pov_hash, - &validation_code_hash, - ); - - let erasure_root = match erasure_root( - n_validators, - validation_data, - pov.clone(), - ) { - Ok(erasure_root) => erasure_root, - Err(err) => { - tracing::error!( - target: LOG_TARGET, - para_id = %scheduled_core.para_id, - err = ?err, - "failed to calculate erasure root", - ); - return - } - }; - - let commitments = CandidateCommitments { - upward_messages: collation.upward_messages, - horizontal_messages: collation.horizontal_messages, - new_validation_code: collation.new_validation_code, - head_data: collation.head_data, - processed_downward_messages: collation.processed_downward_messages, - hrmp_watermark: collation.hrmp_watermark, - }; - - let ccr = CandidateReceipt { - commitments_hash: commitments.hash(), - descriptor: CandidateDescriptor { - signature: task_config.key.sign(&signature_payload), - para_id: scheduled_core.para_id, - relay_parent, - collator: task_config.key.public(), - persisted_validation_data_hash, - pov_hash, - erasure_root, - para_head: commitments.head_data.hash(), - validation_code_hash: validation_code_hash, - }, - }; - - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?ccr.hash(), - ?pov_hash, - ?relay_parent, - para_id = %scheduled_core.para_id, - "candidate is generated", - ); - metrics.on_collation_generated(); - - if let Err(err) = task_sender.send(AllMessages::CollatorProtocol( - CollatorProtocolMessage::DistributeCollation(ccr, pov, result_sender) - )).await { - tracing::warn!( - target: LOG_TARGET, - para_id = %scheduled_core.para_id, - err = ?err, - "failed to send collation result", - ); - } - }))?; - } - } - - Ok(()) -} - -fn erasure_root( - n_validators: usize, - persisted_validation: PersistedValidationData, - pov: PoV, -) -> crate::error::Result { - let available_data = AvailableData { - validation_data: persisted_validation, - pov: Arc::new(pov), - }; - - let chunks = polkadot_erasure_coding::obtain_chunks_v1(n_validators, &available_data)?; - Ok(polkadot_erasure_coding::branches(&chunks).root()) -} - -#[derive(Clone)] -struct MetricsInner { - collations_generated_total: prometheus::Counter, - new_activations_overall: prometheus::Histogram, - new_activations_per_relay_parent: prometheus::Histogram, - new_activations_per_availability_core: prometheus::Histogram, -} - -/// CollationGenerationSubsystem metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_collation_generated(&self) { - if let Some(metrics) = &self.0 { - metrics.collations_generated_total.inc(); - } - } - - /// Provide a timer for new activations which updates on drop. - fn time_new_activations(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.new_activations_overall.start_timer()) - } - - /// Provide a timer per relay parents which updates on drop. - fn time_new_activations_relay_parent(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.new_activations_per_relay_parent.start_timer()) - } - - /// Provide a timer per availability core which updates on drop. - fn time_new_activations_availability_core(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.new_activations_per_availability_core.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - collations_generated_total: prometheus::register( - prometheus::Counter::new( - "parachain_collations_generated_total", - "Number of collations generated." - )?, - registry, - )?, - new_activations_overall: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collation_generation_new_activations", - "Time spent within fn handle_new_activations", - ) - )?, - registry, - )?, - new_activations_per_relay_parent: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collation_generation_per_relay_parent", - "Time spent handling a particular relay parent within fn handle_new_activations" - ) - )?, - registry, - )?, - new_activations_per_availability_core: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collation_generation_per_availability_core", - "Time spent handling a particular availability core for a relay parent in fn handle_new_activations", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/collation-generation/src/tests.rs b/node/collation-generation/src/tests.rs deleted file mode 100644 index 8c663e7f7be7..000000000000 --- a/node/collation-generation/src/tests.rs +++ /dev/null @@ -1,372 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -mod handle_new_activations { - use super::super::*; - use futures::{ - lock::Mutex, - task::{Context as FuturesContext, Poll}, - Future, - }; - use polkadot_node_primitives::{Collation, CollationResult, BlockData, PoV, POV_BOMB_LIMIT}; - use polkadot_node_subsystem::messages::{ - AllMessages, RuntimeApiMessage, RuntimeApiRequest, - }; - use polkadot_node_subsystem_test_helpers::{ - subsystem_test_harness, TestSubsystemContextHandle, - }; - use polkadot_primitives::v1::{ - CollatorPair, Id as ParaId, PersistedValidationData, ScheduledCore, ValidationCode, - }; - use std::pin::Pin; - - fn test_collation() -> Collation { - Collation { - upward_messages: Default::default(), - horizontal_messages: Default::default(), - new_validation_code: Default::default(), - head_data: Default::default(), - proof_of_validity: PoV { - block_data: BlockData(Vec::new()), - }, - processed_downward_messages: Default::default(), - hrmp_watermark: Default::default(), - } - } - - fn test_collation_compressed() -> Collation { - let mut collation = test_collation(); - let compressed = PoV { - block_data: BlockData(sp_maybe_compressed_blob::compress( - &collation.proof_of_validity.block_data.0, - POV_BOMB_LIMIT, - ).unwrap()) - }; - collation.proof_of_validity = compressed; - collation - } - - fn test_validation_data() -> PersistedValidationData { - let mut persisted_validation_data: PersistedValidationData = Default::default(); - persisted_validation_data.max_pov_size = 1024; - persisted_validation_data - } - - // Box + Unpin + Send - struct TestCollator; - - impl Future for TestCollator { - type Output = Option; - - fn poll(self: Pin<&mut Self>, _cx: &mut FuturesContext) -> Poll { - Poll::Ready(Some(CollationResult { collation: test_collation(), result_sender: None })) - } - } - - impl Unpin for TestCollator {} - - fn test_config>(para_id: Id) -> Arc { - Arc::new(CollationGenerationConfig { - key: CollatorPair::generate().0, - collator: Box::new(|_: Hash, _vd: &PersistedValidationData| { - TestCollator.boxed() - }), - para_id: para_id.into(), - }) - } - - fn scheduled_core_for>(para_id: Id) -> ScheduledCore { - ScheduledCore { - para_id: para_id.into(), - collator: None, - } - } - - #[test] - fn requests_availability_per_relay_parent() { - let activated_hashes: Vec = vec![ - [1; 32].into(), - [4; 32].into(), - [9; 32].into(), - [16; 32].into(), - ]; - - let requested_availability_cores = Arc::new(Mutex::new(Vec::new())); - - let overseer_requested_availability_cores = requested_availability_cores.clone(); - let overseer = |mut handle: TestSubsystemContextHandle| async move { - loop { - match handle.try_recv().await { - None => break, - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request(hash, RuntimeApiRequest::AvailabilityCores(tx)))) => { - overseer_requested_availability_cores.lock().await.push(hash); - tx.send(Ok(vec![])).unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request(_hash, RuntimeApiRequest::Validators(tx)))) => { - tx.send(Ok(vec![Default::default(); 3])).unwrap(); - } - Some(msg) => panic!("didn't expect any other overseer requests given no availability cores; got {:?}", msg), - } - } - }; - - let (tx, _rx) = mpsc::channel(0); - - let subsystem_activated_hashes = activated_hashes.clone(); - subsystem_test_harness(overseer, |mut ctx| async move { - handle_new_activations( - test_config(123u32), - subsystem_activated_hashes, - &mut ctx, - Metrics(None), - &tx, - ) - .await - .unwrap(); - }); - - let mut requested_availability_cores = Arc::try_unwrap(requested_availability_cores) - .expect("overseer should have shut down by now") - .into_inner(); - requested_availability_cores.sort(); - - assert_eq!(requested_availability_cores, activated_hashes); - } - - #[test] - fn requests_validation_data_for_scheduled_matches() { - let activated_hashes: Vec = vec![ - Hash::repeat_byte(1), - Hash::repeat_byte(4), - Hash::repeat_byte(9), - Hash::repeat_byte(16), - ]; - - let requested_validation_data = Arc::new(Mutex::new(Vec::new())); - - let overseer_requested_validation_data = requested_validation_data.clone(); - let overseer = |mut handle: TestSubsystemContextHandle| async move { - loop { - match handle.try_recv().await { - None => break, - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - hash, - RuntimeApiRequest::AvailabilityCores(tx), - ))) => { - tx.send(Ok(vec![ - CoreState::Free, - // this is weird, see explanation below - CoreState::Scheduled(scheduled_core_for( - (hash.as_fixed_bytes()[0] * 4) as u32, - )), - CoreState::Scheduled(scheduled_core_for( - (hash.as_fixed_bytes()[0] * 5) as u32, - )), - ])) - .unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - hash, - RuntimeApiRequest::PersistedValidationData( - _para_id, - _occupied_core_assumption, - tx, - ), - ))) => { - overseer_requested_validation_data - .lock() - .await - .push(hash); - tx.send(Ok(Default::default())).unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _hash, - RuntimeApiRequest::Validators(tx), - ))) => { - tx.send(Ok(vec![Default::default(); 3])).unwrap(); - } - Some(msg) => { - panic!("didn't expect any other overseer requests; got {:?}", msg) - } - } - } - }; - - let (tx, _rx) = mpsc::channel(0); - - subsystem_test_harness(overseer, |mut ctx| async move { - handle_new_activations(test_config(16), activated_hashes, &mut ctx, Metrics(None), &tx) - .await - .unwrap(); - }); - - let requested_validation_data = Arc::try_unwrap(requested_validation_data) - .expect("overseer should have shut down by now") - .into_inner(); - - // the only activated hash should be from the 4 hash: - // each activated hash generates two scheduled cores: one with its value * 4, one with its value * 5 - // given that the test configuration has a para_id of 16, there's only one way to get that value: with the 4 - // hash. - assert_eq!(requested_validation_data, vec![[4; 32].into()]); - } - - #[test] - fn sends_distribute_collation_message() { - let activated_hashes: Vec = vec![ - Hash::repeat_byte(1), - Hash::repeat_byte(4), - Hash::repeat_byte(9), - Hash::repeat_byte(16), - ]; - - let overseer = |mut handle: TestSubsystemContextHandle| async move { - loop { - match handle.try_recv().await { - None => break, - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - hash, - RuntimeApiRequest::AvailabilityCores(tx), - ))) => { - tx.send(Ok(vec![ - CoreState::Free, - // this is weird, see explanation below - CoreState::Scheduled(scheduled_core_for( - (hash.as_fixed_bytes()[0] * 4) as u32, - )), - CoreState::Scheduled(scheduled_core_for( - (hash.as_fixed_bytes()[0] * 5) as u32, - )), - ])) - .unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _hash, - RuntimeApiRequest::PersistedValidationData( - _para_id, - _occupied_core_assumption, - tx, - ), - ))) => { - tx.send(Ok(Some(test_validation_data()))).unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _hash, - RuntimeApiRequest::Validators(tx), - ))) => { - tx.send(Ok(vec![Default::default(); 3])).unwrap(); - } - Some(AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _hash, - RuntimeApiRequest::ValidationCode( - _para_id, - OccupiedCoreAssumption::Free, - tx, - ), - ))) => { - tx.send(Ok(Some(ValidationCode(vec![1, 2, 3])))).unwrap(); - } - Some(msg) => { - panic!("didn't expect any other overseer requests; got {:?}", msg) - } - } - } - }; - - let config = test_config(16); - let subsystem_config = config.clone(); - - let (tx, rx) = mpsc::channel(0); - - // empty vec doesn't allocate on the heap, so it's ok we throw it away - let sent_messages = Arc::new(Mutex::new(Vec::new())); - let subsystem_sent_messages = sent_messages.clone(); - subsystem_test_harness(overseer, |mut ctx| async move { - handle_new_activations(subsystem_config, activated_hashes, &mut ctx, Metrics(None), &tx) - .await - .unwrap(); - - std::mem::drop(tx); - - // collect all sent messages - *subsystem_sent_messages.lock().await = rx.collect().await; - }); - - let sent_messages = Arc::try_unwrap(sent_messages) - .expect("subsystem should have shut down by now") - .into_inner(); - - // we expect a single message to be sent, containing a candidate receipt. - // we don't care too much about the commitments_hash right now, but let's ensure that we've calculated the - // correct descriptor - let expect_pov_hash = test_collation_compressed().proof_of_validity.hash(); - let expect_validation_data_hash = test_validation_data().hash(); - let expect_relay_parent = Hash::repeat_byte(4); - let expect_validation_code_hash = ValidationCode(vec![1, 2, 3]).hash(); - let expect_payload = collator_signature_payload( - &expect_relay_parent, - &config.para_id, - &expect_validation_data_hash, - &expect_pov_hash, - &expect_validation_code_hash, - ); - let expect_descriptor = CandidateDescriptor { - signature: config.key.sign(&expect_payload), - para_id: config.para_id, - relay_parent: expect_relay_parent, - collator: config.key.public(), - persisted_validation_data_hash: expect_validation_data_hash, - pov_hash: expect_pov_hash, - erasure_root: Default::default(), // this isn't something we're checking right now - para_head: test_collation().head_data.hash(), - validation_code_hash: expect_validation_code_hash, - }; - - assert_eq!(sent_messages.len(), 1); - match &sent_messages[0] { - AllMessages::CollatorProtocol(CollatorProtocolMessage::DistributeCollation( - CandidateReceipt { descriptor, .. }, - _pov, - .. - )) => { - // signature generation is non-deterministic, so we can't just assert that the - // expected descriptor is correct. What we can do is validate that the produced - // descriptor has a valid signature, then just copy in the generated signature - // and check the rest of the fields for equality. - assert!(CollatorPair::verify( - &descriptor.signature, - &collator_signature_payload( - &descriptor.relay_parent, - &descriptor.para_id, - &descriptor.persisted_validation_data_hash, - &descriptor.pov_hash, - &descriptor.validation_code_hash, - ) - .as_ref(), - &descriptor.collator, - )); - let expect_descriptor = { - let mut expect_descriptor = expect_descriptor; - expect_descriptor.signature = descriptor.signature.clone(); - expect_descriptor.erasure_root = descriptor.erasure_root.clone(); - expect_descriptor - }; - assert_eq!(descriptor, &expect_descriptor); - } - _ => panic!("received wrong message type"), - } - } -} diff --git a/node/core/README.md b/node/core/README.md deleted file mode 100644 index 1656bb569fe4..000000000000 --- a/node/core/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder contains core subsystems, each with their own crate. diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml deleted file mode 100644 index 104a52621e9e..000000000000 --- a/node/core/approval-voting/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "polkadot-node-core-approval-voting" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -futures-timer = "3.0.2" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } -tracing = "0.1.26" -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -lru = "0.6" -merlin = "2.0" -schnorrkel = "0.9.1" -kvdb = "0.9.0" -derive_more = "0.99.14" - -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-overseer = { path = "../../overseer" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-jaeger = { path = "../../jaeger" } - -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, features = ["full_crypto"] } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[dev-dependencies] -parking_lot = "0.11.1" -rand_core = "0.5.1" # should match schnorrkel -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -maplit = "1.0.2" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -assert_matches = "1.4.0" -kvdb-memorydb = "0.9.0" diff --git a/node/core/approval-voting/src/approval_checking.rs b/node/core/approval-voting/src/approval_checking.rs deleted file mode 100644 index 0843d574fc41..000000000000 --- a/node/core/approval-voting/src/approval_checking.rs +++ /dev/null @@ -1,1327 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utilities for checking whether a candidate has been approved under a given block. - -use polkadot_node_primitives::approval::DelayTranche; -use polkadot_primitives::v1::ValidatorIndex; -use bitvec::slice::BitSlice; -use bitvec::order::Lsb0 as BitOrderLsb0; - -use crate::persisted_entries::{TrancheEntry, ApprovalEntry, CandidateEntry}; -use crate::time::Tick; - -/// The required tranches of assignments needed to determine whether a candidate is approved. -#[derive(Debug, PartialEq, Clone)] -pub enum RequiredTranches { - /// All validators appear to be required, based on tranches already taken and remaining - /// no-shows. - All, - /// More tranches required - We're awaiting more assignments. - Pending { - /// The highest considered delay tranche when counting assignments. - considered: DelayTranche, - /// The tick at which the next no-show, of the assignments counted, would occur. - next_no_show: Option, - /// The highest tranche to consider when looking to broadcast own assignment. - /// This should be considered along with the clock drift to avoid broadcasting - /// assignments that are before the local time. - maximum_broadcast: DelayTranche, - /// The clock drift, in ticks, to apply to the local clock when determining whether - /// to broadcast an assignment or when to schedule a wakeup. The local clock should be treated - /// as though it is `clock_drift` ticks earlier. - clock_drift: Tick, - }, - /// An exact number of required tranches and a number of no-shows. This indicates that - /// at least the amount of `needed_approvals` are assigned and additionally all no-shows - /// are covered. - Exact { - /// The tranche to inspect up to. - needed: DelayTranche, - /// The amount of missing votes that should be tolerated. - tolerated_missing: usize, - /// When the next no-show would be, if any. This is used to schedule the next wakeup in the - /// event that there are some assignments that don't have corresponding approval votes. If this - /// is `None`, all assignments have approvals. - next_no_show: Option, - } -} - -/// The result of a check. -#[derive(Debug, Clone, Copy)] -pub enum Check { - /// The candidate is unapproved. - Unapproved, - /// The candidate is approved, with the given amount of no-shows. - Approved(usize), - /// The candidate is approved by one third of all validators. - ApprovedOneThird, -} - -impl Check { - /// Whether the candidate is approved. - pub fn is_approved(&self) -> bool { - match *self { - Check::Unapproved => false, - Check::Approved(_) => true, - Check::ApprovedOneThird => true, - } - } - - /// The number of known no-shows in this computation. - pub fn known_no_shows(&self) -> usize { - match *self { - Check::Approved(n) => n, - _ => 0, - } - } -} - -/// Check the approval of a candidate. -pub fn check_approval( - candidate: &CandidateEntry, - approval: &ApprovalEntry, - required: RequiredTranches, -) -> Check { - - // any set of size f+1 contains at least one honest node. If at least one - // honest node approves, the candidate should be approved. - let approvals = candidate.approvals(); - if 3 * approvals.count_ones() > approvals.len() { - return Check::ApprovedOneThird; - } - - match required { - RequiredTranches::Pending { .. } => Check::Unapproved, - RequiredTranches::All => Check::Unapproved, - RequiredTranches::Exact { needed, tolerated_missing, .. } => { - // whether all assigned validators up to `needed` less no_shows have approved. - // e.g. if we had 5 tranches and 1 no-show, we would accept all validators in - // tranches 0..=5 except for 1 approving. In that example, we also accept all - // validators in tranches 0..=5 approving, but that would indicate that the - // RequiredTranches value was incorrectly constructed, so it is not realistic. - // If there are more missing approvals than there are no-shows, that indicates - // that there are some assignments which are not yet no-shows, but may become - // no-shows. - - let mut assigned_mask = approval.assignments_up_to(needed); - let approvals = candidate.approvals(); - - let n_assigned = assigned_mask.count_ones(); - - // Filter the amount of assigned validators by those which have approved. - assigned_mask &= approvals.iter().by_val(); - let n_approved = assigned_mask.count_ones(); - - // note: the process of computing `required` only chooses `exact` if - // that will surpass a minimum amount of checks. - // shouldn't typically go above, since all no-shows are supposed to be covered. - if n_approved + tolerated_missing >= n_assigned { - Check::Approved(tolerated_missing) - } else { - Check::Unapproved - } - } - } -} - -// Determining the amount of tranches required for approval or which assignments are pending -// involves moving through a series of states while looping over the tranches -// -// that we are aware of. First, we perform an initial count of the number of assignments -// until we reach the number of needed assignments for approval. As we progress, we count the -// number of no-shows in each tranche. -// -// Then, if there are any no-shows, we proceed into a series of subsequent states for covering -// no-shows. -// -// We cover each no-show by a non-empty tranche, keeping track of the amount of further -// no-shows encountered along the way. Once all of the no-shows we were previously aware -// of are covered, we then progress to cover the no-shows we encountered while covering those, -// and so on. -#[derive(Debug)] -struct State { - /// The total number of assignments obtained. - assignments: usize, - /// The depth of no-shows we are currently covering. - depth: usize, - /// The amount of no-shows that have been covered at the previous or current depths. - covered: usize, - /// The amount of assignments that we are attempting to cover at this depth. - /// - /// At depth 0, these are the initial needed approvals, and at other depths these - /// are no-shows. - covering: usize, - /// The number of uncovered no-shows encountered at this depth. These will be the - /// `covering` of the next depth. - uncovered: usize, - /// The next tick at which a no-show would occur, if any. - next_no_show: Option, -} - -impl State { - fn output( - &self, - tranche: DelayTranche, - needed_approvals: usize, - n_validators: usize, - no_show_duration: Tick, - ) -> RequiredTranches { - let covering = if self.depth == 0 { 0 } else { self.covering }; - if self.depth != 0 && self.assignments + covering + self.uncovered >= n_validators { - return RequiredTranches::All; - } - - // If we have enough assignments and all no-shows are covered, we have reached the number - // of tranches that we need to have. - if self.assignments >= needed_approvals && (covering + self.uncovered) == 0 { - return RequiredTranches::Exact { - needed: tranche, - tolerated_missing: self.covered, - next_no_show: self.next_no_show, - }; - } - - // We're pending more assignments and should look at more tranches. - let clock_drift = self.clock_drift(no_show_duration); - if self.depth == 0 { - RequiredTranches::Pending { - considered: tranche, - next_no_show: self.next_no_show, - // during the initial assignment-gathering phase, we want to accept assignments - // from any tranche. Note that honest validators will still not broadcast their - // assignment until it is time to do so, regardless of this value. - maximum_broadcast: DelayTranche::max_value(), - clock_drift, - } - } else { - RequiredTranches::Pending { - considered: tranche, - next_no_show: self.next_no_show, - maximum_broadcast: tranche + (covering + self.uncovered) as DelayTranche, - clock_drift, - } - } - } - - fn clock_drift(&self, no_show_duration: Tick) -> Tick { - self.depth as Tick * no_show_duration - } - - fn advance( - &self, - new_assignments: usize, - new_no_shows: usize, - next_no_show: Option, - ) -> State { - let new_covered = if self.depth == 0 { - new_assignments - } else { - // When covering no-shows, we treat each non-empty tranche as covering 1 assignment, - // regardless of how many assignments are within the tranche. - new_assignments.min(1) - }; - - let assignments = self.assignments + new_assignments; - let covering = self.covering.saturating_sub(new_covered); - let covered = if self.depth == 0 { - // If we're at depth 0, we're not actually covering no-shows, - // so we don't need to count them as such. - 0 - } else { - self.covered + new_covered - }; - let uncovered = self.uncovered + new_no_shows; - let next_no_show = super::min_prefer_some( - self.next_no_show, - next_no_show, - ); - - let (depth, covering, uncovered) = if covering == 0 { - if uncovered == 0 { - (self.depth, 0, uncovered) - } else { - (self.depth + 1, uncovered, 0) - } - } else { - (self.depth, covering, uncovered) - }; - - State { assignments, depth, covered, covering, uncovered, next_no_show } - } -} - -/// Constructs an infinite iterator from an array of `TrancheEntry` values. Any missing tranches -/// are filled with empty assignments, as they are needed to compute the approved tranches. -fn filled_tranche_iterator<'a>( - tranches: &'a [TrancheEntry], -) -> impl Iterator { - let mut gap_end = None; - - let approval_entries_filled = tranches - .iter() - .flat_map(move |tranche_entry| { - let tranche = tranche_entry.tranche(); - let assignments = tranche_entry.assignments(); - - // The new gap_start immediately follows the prior gap_end, if one exists. - // Otherwise, on the first pass, the new gap_start is set to the first - // tranche so that the range below will be empty. - let gap_start = gap_end.map(|end| end + 1).unwrap_or(tranche); - gap_end = Some(tranche); - - (gap_start..tranche).map(|i| (i, &[] as &[_])) - .chain(std::iter::once((tranche, assignments))) - }); - - let pre_end = tranches.first().map(|t| t.tranche()); - let post_start = tranches.last().map_or(0, |t| t.tranche() + 1); - - let pre = pre_end.into_iter() - .flat_map(|pre_end| (0..pre_end).map(|i| (i, &[] as &[_]))); - let post = (post_start..).map(|i| (i, &[] as &[_])); - - pre.chain(approval_entries_filled).chain(post) -} - -/// Computes the number of no_show validators in a set of assignments given the relevant approvals -/// and tick parameters. This method also returns the next tick at which a no_show will occur -/// amongst the set of validators that have not submitted an approval. -/// -/// If the returned `next_no_show` is not None, there are two possible cases for the value of -/// based on the earliest assignment `tick` of a non-approving, yet-to-be-no-show validator: -/// - if `tick` <= `clock_drift`: the value will always be `clock_drift` + `no_show_duration`. -/// - if `tick` > `clock_drift`: the value is equal to `tick` + `no_show_duration`. -fn count_no_shows( - assignments: &[(ValidatorIndex, Tick)], - approvals: &BitSlice, - clock_drift: Tick, - no_show_duration: Tick, - drifted_tick_now: Tick, -) -> (usize, Option) { - let mut next_no_show = None; - let no_shows = assignments.iter() - .map(|(v_index, tick)| (v_index, tick.saturating_sub(clock_drift) + no_show_duration)) - .filter(|&(v_index, no_show_at)| { - let has_approved = if let Some(approved) = approvals.get(v_index.0 as usize) { - *approved - } else { - return false; - }; - - let is_no_show = !has_approved && no_show_at <= drifted_tick_now; - - if !is_no_show && !has_approved { - // When doing the comparison above, no_show_at and drifted_tick_now are calculated - // with the clock_drift removed. The reason for adding back the clock_drift in - // computing next_no_show is so that the scheduler knows the deadline at which - // *this node* should observe whether or not the validator is a no show. Recall - // that when the when drifted_tick_now is computed during that subsequent wake up, - // the clock drift will be removed again to do the comparison above. - next_no_show = super::min_prefer_some( - next_no_show, - Some(no_show_at + clock_drift), - ); - } - - is_no_show - }).count(); - - (no_shows, next_no_show) -} - -/// Determine the amount of tranches of assignments needed to determine approval of a candidate. -pub fn tranches_to_approve( - approval_entry: &ApprovalEntry, - approvals: &BitSlice, - tranche_now: DelayTranche, - block_tick: Tick, - no_show_duration: Tick, - needed_approvals: usize, -) -> RequiredTranches { - let tick_now = tranche_now as Tick + block_tick; - let n_validators = approval_entry.n_validators(); - - let initial_state = State { - assignments: 0, - depth: 0, - covered: 0, - covering: needed_approvals, - uncovered: 0, - next_no_show: None, - }; - - // The `ApprovalEntry` doesn't have any data for empty tranches. We still want to iterate over - // these empty tranches, so we create an iterator to fill the gaps. - // - // This iterator has an infinitely long amount of non-empty tranches appended to the end. - let tranches_with_gaps_filled = filled_tranche_iterator(approval_entry.tranches()); - - tranches_with_gaps_filled - .scan(Some(initial_state), |state, (tranche, assignments)| { - // The `Option` here is used for early exit. - let s = state.take()?; - - let clock_drift = s.clock_drift(no_show_duration); - let drifted_tick_now = tick_now.saturating_sub(clock_drift); - let drifted_tranche_now = drifted_tick_now.saturating_sub(block_tick) as DelayTranche; - - // Break the loop once we've taken enough tranches. - // Note that we always take tranche 0 as `drifted_tranche_now` cannot be less than 0. - if tranche > drifted_tranche_now { - return None; - } - - // Count the number of valid validator assignments. - let n_assignments = assignments.iter() - .filter(|(v_index, _)| v_index.0 < n_validators as u32) - .count(); - - // count no-shows. An assignment is a no-show if there is no corresponding approval vote - // after a fixed duration. - // - // While we count the no-shows, we also determine the next possible no-show we might - // see within this tranche. - let (no_shows, next_no_show) = count_no_shows( - assignments, - approvals, - clock_drift, - no_show_duration, - drifted_tick_now, - ); - - let s = s.advance(n_assignments, no_shows, next_no_show); - let output = s.output(tranche, needed_approvals, n_validators, no_show_duration); - - *state = match output { - RequiredTranches::Exact { .. } | RequiredTranches::All => { - // Wipe the state clean so the next iteration of this closure will terminate - // the iterator. This guarantees that we can call `last` further down to see - // either a `Finished` or `Pending` result - None - } - RequiredTranches::Pending { .. } => { - // Pending results are only interesting when they are the last result of the iterator - // i.e. we never achieve a satisfactory level of assignment. - Some(s) - } - }; - - Some(output) - }) - .last() - .expect("the underlying iterator is infinite, starts at 0, and never exits early before tranche 1; qed") -} - -#[cfg(test)] -mod tests { - use super::*; - - use polkadot_primitives::v1::GroupIndex; - use bitvec::bitvec; - use bitvec::order::Lsb0 as BitOrderLsb0; - - use crate::approval_db; - - #[test] - fn pending_is_not_approved() { - let candidate = approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 0, - block_assignments: Default::default(), - approvals: Default::default(), - }.into(); - - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: Default::default(), - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - assert!(!check_approval( - &candidate, - &approval_entry, - RequiredTranches::Pending { - considered: 0, - next_no_show: None, - maximum_broadcast: 0, - clock_drift: 0, - }, - ).is_approved()); - } - - #[test] - fn exact_takes_only_assignments_up_to() { - let mut candidate: CandidateEntry = approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 0, - block_assignments: Default::default(), - approvals: bitvec![BitOrderLsb0, u8; 0; 10], - }.into(); - - for i in 0..3 { - candidate.mark_approval(ValidatorIndex(i)); - } - - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: vec![ - approval_db::v1::TrancheEntry { - tranche: 0, - assignments: (0..2).map(|i| (ValidatorIndex(i), 0.into())).collect(), - }, - approval_db::v1::TrancheEntry { - tranche: 1, - assignments: (2..5).map(|i| (ValidatorIndex(i), 1.into())).collect(), - }, - approval_db::v1::TrancheEntry { - tranche: 2, - assignments: (5..10).map(|i| (ValidatorIndex(i), 0.into())).collect(), - }, - ], - assignments: bitvec![BitOrderLsb0, u8; 1; 10], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - assert!(check_approval( - &candidate, - &approval_entry, - RequiredTranches::Exact { - needed: 0, - tolerated_missing: 0, - next_no_show: None, - }, - ).is_approved()); - assert!(!check_approval( - &candidate, - &approval_entry, - RequiredTranches::Exact { - needed: 1, - tolerated_missing: 0, - next_no_show: None, - }, - ).is_approved()); - assert!(check_approval( - &candidate, - &approval_entry, - RequiredTranches::Exact { - needed: 1, - tolerated_missing: 2, - next_no_show: None, - }, - ).is_approved()); - } - - #[test] - fn one_honest_node_always_approves() { - let mut candidate: CandidateEntry = approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 0, - block_assignments: Default::default(), - approvals: bitvec![BitOrderLsb0, u8; 0; 10], - }.into(); - - for i in 0..3 { - candidate.mark_approval(ValidatorIndex(i)); - } - - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: vec![ - approval_db::v1::TrancheEntry { - tranche: 0, - assignments: (0..4).map(|i| (ValidatorIndex(i), 0.into())).collect(), - }, - approval_db::v1::TrancheEntry { - tranche: 1, - assignments: (4..6).map(|i| (ValidatorIndex(i), 1.into())).collect(), - }, - approval_db::v1::TrancheEntry { - tranche: 2, - assignments: (6..10).map(|i| (ValidatorIndex(i), 0.into())).collect(), - }, - ], - assignments: bitvec![BitOrderLsb0, u8; 1; 10], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - let exact_all = RequiredTranches::Exact { - needed: 10, - tolerated_missing: 0, - next_no_show: None, - }; - - let pending_all = RequiredTranches::Pending { - considered: 5, - next_no_show: None, - maximum_broadcast: 8, - clock_drift: 12, - }; - - assert!(!check_approval( - &candidate, - &approval_entry, - RequiredTranches::All, - ).is_approved()); - - assert!(!check_approval( - &candidate, - &approval_entry, - exact_all.clone(), - ).is_approved()); - - assert!(!check_approval( - &candidate, - &approval_entry, - pending_all.clone(), - ).is_approved()); - - // This creates a set of 4/10 approvals, which is always an approval. - candidate.mark_approval(ValidatorIndex(3)); - - assert!(check_approval( - &candidate, - &approval_entry, - RequiredTranches::All, - ).is_approved()); - - assert!(check_approval( - &candidate, - &approval_entry, - exact_all, - ).is_approved()); - - assert!(check_approval( - &candidate, - &approval_entry, - pending_all, - ).is_approved()); - } - - #[test] - fn tranches_to_approve_everyone_present() { - let block_tick = 0; - let no_show_duration = 10; - let needed_approvals = 4; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; 5], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0,ValidatorIndex(0), block_tick); - approval_entry.import_assignment(0,ValidatorIndex(1), block_tick); - - approval_entry.import_assignment(1,ValidatorIndex(2), block_tick + 1); - approval_entry.import_assignment(1,ValidatorIndex(3), block_tick + 1); - - approval_entry.import_assignment(2,ValidatorIndex(4), block_tick + 2); - - let approvals = bitvec![BitOrderLsb0, u8; 1; 5]; - - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - 2, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Exact { needed: 1, tolerated_missing: 0, next_no_show: None }, - ); - } - - #[test] - fn tranches_to_approve_not_enough_initial_count() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 4; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; 10], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0, ValidatorIndex(0), block_tick); - approval_entry.import_assignment(1, ValidatorIndex(2), block_tick); - - let approvals = bitvec![BitOrderLsb0, u8; 0; 10]; - - let tranche_now = 2; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 2, - next_no_show: Some(block_tick + no_show_duration), - maximum_broadcast: DelayTranche::max_value(), - clock_drift: 0, - }, - ); - } - - #[test] - fn tranches_to_approve_no_shows_before_initial_count_treated_same_as_not_initial() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 4; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; 10], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0, ValidatorIndex(0), block_tick); - approval_entry.import_assignment(0, ValidatorIndex(1), block_tick); - - approval_entry.import_assignment(1, ValidatorIndex(2), block_tick); - - let mut approvals = bitvec![BitOrderLsb0, u8; 0; 10]; - approvals.set(0, true); - approvals.set(1, true); - - let tranche_now = no_show_duration as DelayTranche + 1; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 11, - next_no_show: None, - maximum_broadcast: DelayTranche::max_value(), - clock_drift: 0, - }, - ); - } - - #[test] - fn tranches_to_approve_cover_no_show_not_enough() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 4; - let n_validators = 8; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; n_validators], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0, ValidatorIndex(0), block_tick); - approval_entry.import_assignment(0, ValidatorIndex(1), block_tick); - - approval_entry.import_assignment(1, ValidatorIndex(2), block_tick); - approval_entry.import_assignment(1, ValidatorIndex(3), block_tick); - - let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators]; - approvals.set(0, true); - approvals.set(1, true); - // skip 2 - approvals.set(3, true); - - let tranche_now = no_show_duration as DelayTranche + 1; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 1, - next_no_show: None, - maximum_broadcast: 2, // tranche 1 + 1 no-show - clock_drift: 1 * no_show_duration, - } - ); - - approvals.set(0, false); - - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 1, - next_no_show: None, - maximum_broadcast: 3, // tranche 1 + 2 no-shows - clock_drift: 1 * no_show_duration, - } - ); - } - - #[test] - fn tranches_to_approve_multi_cover_not_enough() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 4; - let n_validators = 8; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; n_validators], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0, ValidatorIndex(0), block_tick); - approval_entry.import_assignment(0, ValidatorIndex(1), block_tick); - - approval_entry.import_assignment(1, ValidatorIndex(2), block_tick + 1); - approval_entry.import_assignment(1, ValidatorIndex(3), block_tick + 1); - - approval_entry.import_assignment(2, ValidatorIndex(4), block_tick + no_show_duration + 2); - approval_entry.import_assignment(2, ValidatorIndex(5), block_tick + no_show_duration + 2); - - let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators]; - approvals.set(0, true); - approvals.set(1, true); - // skip 2 - approvals.set(3, true); - // skip 4 - approvals.set(5, true); - - let tranche_now = 1; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Exact { - needed: 1, - tolerated_missing: 0, - next_no_show: Some(block_tick + no_show_duration + 1), - }, - ); - - // first no-show covered. - let tranche_now = no_show_duration as DelayTranche + 2; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Exact { - needed: 2, - tolerated_missing: 1, - next_no_show: Some(block_tick + 2*no_show_duration + 2), - }, - ); - - // another no-show in tranche 2. - let tranche_now = (no_show_duration * 2) as DelayTranche + 2; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 2, - next_no_show: None, - maximum_broadcast: 3, // tranche 2 + 1 uncovered no-show. - clock_drift: 2 * no_show_duration, - }, - ); - } - - #[test] - fn tranches_to_approve_cover_no_show() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 4; - let n_validators = 8; - - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - assignments: bitvec![BitOrderLsb0, u8; 0; n_validators], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - approval_entry.import_assignment(0, ValidatorIndex(0), block_tick); - approval_entry.import_assignment(0, ValidatorIndex(1), block_tick); - - approval_entry.import_assignment(1, ValidatorIndex(2), block_tick + 1); - approval_entry.import_assignment(1, ValidatorIndex(3), block_tick + 1); - - approval_entry.import_assignment(2, ValidatorIndex(4), block_tick + no_show_duration + 2); - approval_entry.import_assignment(2, ValidatorIndex(5), block_tick + no_show_duration + 2); - - let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators]; - approvals.set(0, true); - approvals.set(1, true); - // skip 2 - approvals.set(3, true); - approvals.set(4, true); - approvals.set(5, true); - - let tranche_now = no_show_duration as DelayTranche + 2; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Exact { - needed: 2, - tolerated_missing: 1, - next_no_show: None, - }, - ); - - // Even though tranche 2 has 2 validators, it only covers 1 no-show. - // to cover a second no-show, we need to take another non-empty tranche. - - approvals.set(0, false); - - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 2, - next_no_show: None, - maximum_broadcast: 3, - clock_drift: no_show_duration, - }, - ); - - approval_entry.import_assignment(3, ValidatorIndex(6), block_tick); - approvals.set(6, true); - - let tranche_now = no_show_duration as DelayTranche + 3; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Exact { - needed: 3, - tolerated_missing: 2, - next_no_show: None, - }, - ); - } - - #[test] - fn validator_indexes_out_of_range_are_ignored_in_assignments() { - let block_tick = 20; - let no_show_duration = 10; - let needed_approvals = 3; - - let mut candidate: CandidateEntry = approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 0, - block_assignments: Default::default(), - approvals: bitvec![BitOrderLsb0, u8; 0; 3], - }.into(); - - for i in 0..3 { - candidate.mark_approval(ValidatorIndex(i)); - } - - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: vec![ - // Assignments with invalid validator indexes. - approval_db::v1::TrancheEntry { - tranche: 1, - assignments: (2..5).map(|i| (ValidatorIndex(i), 1.into())).collect(), - }, - ], - assignments: bitvec![BitOrderLsb0, u8; 1; 3], - our_assignment: None, - our_approval_sig: None, - backing_group: GroupIndex(0), - approved: false, - }.into(); - - let approvals = bitvec![BitOrderLsb0, u8; 0; 3]; - - let tranche_now = 10; - assert_eq!( - tranches_to_approve( - &approval_entry, - &approvals, - tranche_now, - block_tick, - no_show_duration, - needed_approvals, - ), - RequiredTranches::Pending { - considered: 10, - next_no_show: None, - maximum_broadcast: DelayTranche::max_value(), - clock_drift: 0, - }, - ); - } - - #[test] - fn filled_tranche_iterator_yields_sequential_tranches() { - const PREFIX: u32 = 10; - - let test_tranches = vec![ - vec![], // empty set - vec![0], // zero start - vec![0, 3], // zero start with gap - vec![2], // non-zero start - vec![2, 4], // non-zero start with gap - vec![0, 1, 2], // zero start with run and no gap - vec![2, 3, 4, 8], // non-zero start with run and gap - vec![0, 1, 2, 5, 6, 7], // zero start with runs and gap - ]; - - for test_tranche in test_tranches { - let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: None, - our_approval_sig: None, - assignments: bitvec![BitOrderLsb0, u8; 0; 3], - approved: false, - }.into(); - - // Populate the requested tranches. The assignemnts aren't inspected in - // this test. - for &t in &test_tranche { - approval_entry.import_assignment(t, ValidatorIndex(0), 0) - } - - let filled_tranches = filled_tranche_iterator(approval_entry.tranches()); - - // Take the first PREFIX entries and map them to their tranche. - let tranches: Vec = filled_tranches - .take(PREFIX as usize) - .map(|e| e.0) - .collect(); - - // We expect this sequence to be sequential. - let exp_tranches: Vec = (0..PREFIX).collect(); - assert_eq!(tranches, exp_tranches, "for test tranches: {:?}", test_tranche); - } - } - - #[derive(Debug)] - struct NoShowTest { - assignments: Vec<(ValidatorIndex, Tick)>, - approvals: Vec, - clock_drift: crate::time::Tick, - no_show_duration: crate::time::Tick, - drifted_tick_now: crate::time::Tick, - exp_no_shows: usize, - exp_next_no_show: Option, - } - - fn test_count_no_shows(test: NoShowTest) { - let n_validators = 4; - - let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators]; - for &v_index in &test.approvals { - approvals.set(v_index, true); - } - - let (no_shows, next_no_show) = count_no_shows( - &test.assignments, - &approvals, - test.clock_drift, - test.no_show_duration, - test.drifted_tick_now, - ); - assert_eq!(no_shows, test.exp_no_shows, "for test: {:?}", test); - assert_eq!(next_no_show, test.exp_next_no_show, "for test {:?}", test); - } - - #[test] - fn count_no_shows_empty_assignments() { - test_count_no_shows(NoShowTest { - assignments: vec![], - approvals: vec![], - clock_drift: 0, - no_show_duration: 0, - drifted_tick_now: 0, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_single_validator_is_next_no_show() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: Some(31), - }) - } - - #[test] - fn count_no_shows_single_validator_approval_at_drifted_tick_now() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 20)], - approvals: vec![1], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_single_validator_approval_after_drifted_tick_now() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21)], - approvals: vec![1], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_two_validators_next_no_show_ordered_first() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21), (ValidatorIndex(2), 22)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: Some(31), - }) - } - - #[test] - fn count_no_shows_two_validators_next_no_show_ordered_last() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 22), (ValidatorIndex(2), 21)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: Some(31), - }) - } - - #[test] - fn count_no_shows_three_validators_one_almost_late_one_no_show_one_approving() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21), (ValidatorIndex(2), 20), (ValidatorIndex(3), 20)], - approvals: vec![3], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 1, - exp_next_no_show: Some(31), - }) - } - - #[test] - fn count_no_shows_three_no_show_validators() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 20), (ValidatorIndex(2), 20), (ValidatorIndex(3), 20)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 3, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_three_approving_validators() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 20), (ValidatorIndex(2), 20), (ValidatorIndex(3), 20)], - approvals: vec![1, 2, 3], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_earliest_possible_next_no_show_is_clock_drift_plus_no_show_duration() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 0)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 20, - drifted_tick_now: 0, - exp_no_shows: 0, - exp_next_no_show: Some(30), - }) - } - - #[test] - fn count_no_shows_assignment_tick_equal_to_clock_drift_yields_earliest_possible_next_no_show() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 10)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 20, - drifted_tick_now: 0, - exp_no_shows: 0, - exp_next_no_show: Some(30), - }) - } - - #[test] - fn count_no_shows_validator_index_out_of_approvals_range_is_ignored_as_no_show() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1000), 20)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } - - #[test] - fn count_no_shows_validator_index_out_of_approvals_range_is_ignored_as_next_no_show() { - test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1000), 21)], - approvals: vec![], - clock_drift: 10, - no_show_duration: 10, - drifted_tick_now: 20, - exp_no_shows: 0, - exp_next_no_show: None, - }) - } -} - -#[test] -fn depth_0_covering_not_treated_as_such() { - let state = State { - assignments: 0, - depth: 0, - covered: 0, - covering: 10, - uncovered: 0, - next_no_show: None, - }; - - assert_eq!( - state.output(0, 10, 10, 20), - RequiredTranches::Pending { - considered: 0, - next_no_show: None, - maximum_broadcast: DelayTranche::max_value(), - clock_drift: 0, - }, - ); -} - -#[test] -fn depth_0_issued_as_exact_even_when_all() { - let state = State { - assignments: 10, - depth: 0, - covered: 0, - covering: 0, - uncovered: 0, - next_no_show: None, - }; - - assert_eq!( - state.output(0, 10, 10, 20), - RequiredTranches::Exact { - needed: 0, - tolerated_missing: 0, - next_no_show: None, - }, - ); -} diff --git a/node/core/approval-voting/src/approval_db/mod.rs b/node/core/approval-voting/src/approval_db/mod.rs deleted file mode 100644 index 8ea9b80e6095..000000000000 --- a/node/core/approval-voting/src/approval_db/mod.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Approval DB accessors and writers for on-disk persisted approval storage -//! data. -//! -//! We persist data to disk although it is not intended to be used across runs of the -//! program. This is because under medium to long periods of finality stalling, for whatever -//! reason that may be, the amount of data we'd need to keep would be potentially too large -//! for memory. -//! -//! With tens or hundreds of parachains, hundreds of validators, and parablocks -//! in every relay chain block, there can be a humongous amount of information to reference -//! at any given time. -//! -//! As such, we provide a function from this module to clear the database on start-up. -//! In the future, we may use a temporary DB which doesn't need to be wiped, but for the -//! time being we share the same DB with the rest of Substrate. - -pub mod v1; diff --git a/node/core/approval-voting/src/approval_db/v1/mod.rs b/node/core/approval-voting/src/approval_db/v1/mod.rs deleted file mode 100644 index 27960eb29211..000000000000 --- a/node/core/approval-voting/src/approval_db/v1/mod.rs +++ /dev/null @@ -1,604 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Version 1 of the DB schema. - -use kvdb::{DBTransaction, KeyValueDB}; -use polkadot_node_primitives::approval::{DelayTranche, AssignmentCert}; -use polkadot_primitives::v1::{ - ValidatorIndex, GroupIndex, CandidateReceipt, SessionIndex, CoreIndex, - BlockNumber, Hash, CandidateHash, ValidatorSignature, -}; -use sp_consensus_slots::Slot; -use parity_scale_codec::{Encode, Decode}; - -use std::collections::{BTreeMap, HashMap}; -use std::collections::hash_map::Entry; -use bitvec::{vec::BitVec, order::Lsb0 as BitOrderLsb0}; - -#[cfg(test)] -pub mod tests; - -// slot_duration * 2 + DelayTranche gives the number of delay tranches since the -// unix epoch. -#[derive(Encode, Decode, Clone, Copy, Debug, PartialEq)] -pub struct Tick(u64); - -pub type Bitfield = BitVec; - -const STORED_BLOCKS_KEY: &[u8] = b"Approvals_StoredBlocks"; - -/// The database config. -#[derive(Debug, Clone, Copy)] -pub struct Config { - /// The column family in the database where data is stored. - pub col_data: u32, -} - -/// Details pertaining to our assignment on a block. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct OurAssignment { - pub cert: AssignmentCert, - pub tranche: DelayTranche, - pub validator_index: ValidatorIndex, - // Whether the assignment has been triggered already. - pub triggered: bool, -} - -/// Metadata regarding a specific tranche of assignments for a specific candidate. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct TrancheEntry { - pub tranche: DelayTranche, - // Assigned validators, and the instant we received their assignment, rounded - // to the nearest tick. - pub assignments: Vec<(ValidatorIndex, Tick)>, -} - -/// Metadata regarding approval of a particular candidate within the context of some -/// particular block. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct ApprovalEntry { - pub tranches: Vec, - pub backing_group: GroupIndex, - pub our_assignment: Option, - pub our_approval_sig: Option, - // `n_validators` bits. - pub assignments: Bitfield, - pub approved: bool, -} - -/// Metadata regarding approval of a particular candidate. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct CandidateEntry { - pub candidate: CandidateReceipt, - pub session: SessionIndex, - // Assignments are based on blocks, so we need to track assignments separately - // based on the block we are looking at. - pub block_assignments: BTreeMap, - pub approvals: Bitfield, -} - -/// Metadata regarding approval of a particular block, by way of approval of the -/// candidates contained within it. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct BlockEntry { - pub block_hash: Hash, - pub block_number: BlockNumber, - pub parent_hash: Hash, - pub session: SessionIndex, - pub slot: Slot, - /// Random bytes derived from the VRF submitted within the block by the block - /// author as a credential and used as input to approval assignment criteria. - pub relay_vrf_story: [u8; 32], - // The candidates included as-of this block and the index of the core they are - // leaving. Sorted ascending by core index. - pub candidates: Vec<(CoreIndex, CandidateHash)>, - // A bitfield where the i'th bit corresponds to the i'th candidate in `candidates`. - // The i'th bit is `true` iff the candidate has been approved in the context of this - // block. The block can be considered approved if the bitfield has all bits set to `true`. - pub approved_bitfield: Bitfield, - pub children: Vec, -} - -/// A range from earliest..last block number stored within the DB. -#[derive(Encode, Decode, Debug, Clone, PartialEq)] -pub struct StoredBlockRange(BlockNumber, BlockNumber); - -impl From for Tick { - fn from(tick: crate::Tick) -> Tick { - Tick(tick) - } -} - -impl From for crate::Tick { - fn from(tick: Tick) -> crate::Tick { - tick.0 - } -} - -/// Errors while accessing things from the DB. -#[derive(Debug, derive_more::From, derive_more::Display)] -pub enum Error { - Io(std::io::Error), - InvalidDecoding(parity_scale_codec::Error), -} - -impl std::error::Error for Error {} - -/// Result alias for DB errors. -pub type Result = std::result::Result; - -/// Canonicalize some particular block, pruning everything before it and -/// pruning any competing branches at the same height. -pub(crate) fn canonicalize( - store: &dyn KeyValueDB, - config: &Config, - canon_number: BlockNumber, - canon_hash: Hash, -) - -> Result<()> -{ - let range = match load_stored_blocks(store, config)? { - None => return Ok(()), - Some(range) => if range.0 >= canon_number { - return Ok(()) - } else { - range - }, - }; - - let mut transaction = DBTransaction::new(); - - // Storing all candidates in memory is potentially heavy, but should be fine - // as long as finality doesn't stall for a long while. We could optimize this - // by keeping only the metadata about which blocks reference each candidate. - let mut visited_candidates = HashMap::new(); - - // All the block heights we visited but didn't necessarily delete everything from. - let mut visited_heights = HashMap::new(); - - let visit_and_remove_block_entry = | - block_hash: Hash, - transaction: &mut DBTransaction, - visited_candidates: &mut HashMap, - | -> Result> { - let block_entry = match load_block_entry(store, config, &block_hash)? { - None => return Ok(Vec::new()), - Some(b) => b, - }; - - transaction.delete(config.col_data, &block_entry_key(&block_hash)[..]); - for &(_, ref candidate_hash) in &block_entry.candidates { - let candidate = match visited_candidates.entry(*candidate_hash) { - Entry::Occupied(e) => e.into_mut(), - Entry::Vacant(e) => { - e.insert(match load_candidate_entry(store, config, candidate_hash)? { - None => continue, // Should not happen except for corrupt DB - Some(c) => c, - }) - } - }; - - candidate.block_assignments.remove(&block_hash); - } - - Ok(block_entry.children) - }; - - // First visit everything before the height. - for i in range.0..canon_number { - let at_height = load_blocks_at_height(store, config, i)?; - transaction.delete(config.col_data, &blocks_at_height_key(i)[..]); - - for b in at_height { - let _ = visit_and_remove_block_entry( - b, - &mut transaction, - &mut visited_candidates, - )?; - } - } - - // Then visit everything at the height. - let pruned_branches = { - let at_height = load_blocks_at_height(store, config, canon_number)?; - transaction.delete(config.col_data, &blocks_at_height_key(canon_number)); - - // Note that while there may be branches descending from blocks at earlier heights, - // we have already covered them by removing everything at earlier heights. - let mut pruned_branches = Vec::new(); - - for b in at_height { - let children = visit_and_remove_block_entry( - b, - &mut transaction, - &mut visited_candidates, - )?; - - if b != canon_hash { - pruned_branches.extend(children); - } - } - - pruned_branches - }; - - // Follow all children of non-canonicalized blocks. - { - let mut frontier: Vec<_> = pruned_branches.into_iter().map(|h| (canon_number + 1, h)).collect(); - while let Some((height, next_child)) = frontier.pop() { - let children = visit_and_remove_block_entry( - next_child, - &mut transaction, - &mut visited_candidates, - )?; - - // extend the frontier of branches to include the given height. - frontier.extend(children.into_iter().map(|h| (height + 1, h))); - - // visit the at-height key for this deleted block's height. - let at_height = match visited_heights.entry(height) { - Entry::Occupied(e) => e.into_mut(), - Entry::Vacant(e) => e.insert(load_blocks_at_height(store, config, height)?), - }; - - if let Some(i) = at_height.iter().position(|x| x == &next_child) { - at_height.remove(i); - } - } - } - - // Update all `CandidateEntry`s, deleting all those which now have empty `block_assignments`. - for (candidate_hash, candidate) in visited_candidates { - if candidate.block_assignments.is_empty() { - transaction.delete(config.col_data, &candidate_entry_key(&candidate_hash)[..]); - } else { - transaction.put_vec( - config.col_data, - &candidate_entry_key(&candidate_hash)[..], - candidate.encode(), - ); - } - } - - // Update all blocks-at-height keys, deleting all those which now have empty `block_assignments`. - for (h, at) in visited_heights { - if at.is_empty() { - transaction.delete(config.col_data, &blocks_at_height_key(h)[..]); - } else { - transaction.put_vec(config.col_data, &blocks_at_height_key(h), at.encode()); - } - } - - // due to the fork pruning, this range actually might go too far above where our actual highest block is, - // if a relatively short fork is canonicalized. - let new_range = StoredBlockRange( - canon_number + 1, - std::cmp::max(range.1, canon_number + 2), - ).encode(); - - transaction.put_vec(config.col_data, &STORED_BLOCKS_KEY[..], new_range); - - // Update the values on-disk. - store.write(transaction).map_err(Into::into) -} - -fn load_decode(store: &dyn KeyValueDB, col_data: u32, key: &[u8]) - -> Result> -{ - match store.get(col_data, key)? { - None => Ok(None), - Some(raw) => D::decode(&mut &raw[..]) - .map(Some) - .map_err(Into::into), - } -} - -/// Information about a new candidate necessary to instantiate the requisite -/// candidate and approval entries. -#[derive(Clone)] -pub(crate) struct NewCandidateInfo { - pub candidate: CandidateReceipt, - pub backing_group: GroupIndex, - pub our_assignment: Option, -} - -/// Record a new block entry. -/// -/// This will update the blocks-at-height mapping, the stored block range, if necessary, -/// and add block and candidate entries. It will also add approval entries to existing -/// candidate entries and add this as a child of any block entry corresponding to the -/// parent hash. -/// -/// Has no effect if there is already an entry for the block or `candidate_info` returns -/// `None` for any of the candidates referenced by the block entry. In these cases, -/// no information about new candidates will be referred to by this function. -pub(crate) fn add_block_entry( - store: &dyn KeyValueDB, - config: &Config, - entry: BlockEntry, - n_validators: usize, - candidate_info: impl Fn(&CandidateHash) -> Option, -) -> Result> { - let mut transaction = DBTransaction::new(); - let session = entry.session; - let parent_hash = entry.parent_hash; - let number = entry.block_number; - - // Update the stored block range. - { - let new_range = match load_stored_blocks(store, config)? { - None => Some(StoredBlockRange(number, number + 1)), - Some(range) => if range.1 <= number { - Some(StoredBlockRange(range.0, number + 1)) - } else { - None - } - }; - - new_range.map(|n| transaction.put_vec(config.col_data, &STORED_BLOCKS_KEY[..], n.encode())) - }; - - // Update the blocks at height meta key. - { - let mut blocks_at_height = load_blocks_at_height(store, config, number)?; - if blocks_at_height.contains(&entry.block_hash) { - // seems we already have a block entry for this block. nothing to do here. - return Ok(Vec::new()) - } - - blocks_at_height.push(entry.block_hash); - transaction.put_vec(config.col_data, &blocks_at_height_key(number)[..], blocks_at_height.encode()) - }; - - let mut candidate_entries = Vec::with_capacity(entry.candidates.len()); - - // read and write all updated entries. - { - for &(_, ref candidate_hash) in &entry.candidates { - let NewCandidateInfo { - candidate, - backing_group, - our_assignment, - } = match candidate_info(candidate_hash) { - None => return Ok(Vec::new()), - Some(info) => info, - }; - - let mut candidate_entry = load_candidate_entry(store, config, &candidate_hash)? - .unwrap_or_else(move || CandidateEntry { - candidate, - session, - block_assignments: BTreeMap::new(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - }); - - candidate_entry.block_assignments.insert( - entry.block_hash, - ApprovalEntry { - tranches: Vec::new(), - backing_group, - our_assignment, - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - approved: false, - } - ); - - transaction.put_vec( - config.col_data, - &candidate_entry_key(&candidate_hash)[..], - candidate_entry.encode(), - ); - - candidate_entries.push((*candidate_hash, candidate_entry)); - } - }; - - // Update the child index for the parent. - load_block_entry(store, config, &parent_hash)?.map(|mut e| { - e.children.push(entry.block_hash); - transaction.put_vec(config.col_data, &block_entry_key(&parent_hash)[..], e.encode()) - }); - - // Put the new block entry in. - transaction.put_vec(config.col_data, &block_entry_key(&entry.block_hash)[..], entry.encode()); - - store.write(transaction)?; - Ok(candidate_entries) -} - -/// Forcibly approve all candidates included at up to the given relay-chain height in the indicated -/// chain. -pub fn force_approve( - store: &dyn KeyValueDB, - db_config: Config, - chain_head: Hash, - up_to: BlockNumber, -) -> Result<()> { - enum State { - WalkTo, - Approving, - } - - let mut cur_hash = chain_head; - let mut state = State::WalkTo; - - let mut tx = Transaction::new(db_config); - - // iterate back to the `up_to` block, and then iterate backwards until all blocks - // are updated. - while let Some(mut entry) = load_block_entry(store, &db_config, &cur_hash)? { - - if entry.block_number <= up_to { - state = State::Approving; - } - - cur_hash = entry.parent_hash; - - match state { - State::WalkTo => {}, - State::Approving => { - entry.approved_bitfield.iter_mut().for_each(|mut b| *b = true); - tx.put_block_entry(entry); - } - } - } - - tx.write(store) -} - -/// Return all blocks which have entries in the DB, ascending, by height. -pub(crate) fn load_all_blocks(store: &dyn KeyValueDB, config: &Config) -> Result> { - let stored_blocks = load_stored_blocks(store, config)?; - - let mut hashes = Vec::new(); - for height in stored_blocks.into_iter().flat_map(|s| s.0..s.1) { - hashes.extend(load_blocks_at_height(store, config, height)?); - } - - Ok(hashes) -} - -// An atomic transaction of multiple candidate or block entries. -#[must_use = "Transactions do nothing unless written to a DB"] -pub struct Transaction { - block_entries: HashMap, - candidate_entries: HashMap, - config: Config, -} - -impl Transaction { - pub(crate) fn new(config: Config) -> Self { - Transaction { - block_entries: HashMap::default(), - candidate_entries: HashMap::default(), - config, - } - } - - /// Put a block entry in the transaction, overwriting any other with the - /// same hash. - pub(crate) fn put_block_entry(&mut self, entry: BlockEntry) { - let hash = entry.block_hash; - let _ = self.block_entries.insert(hash, entry); - } - - /// Put a candidate entry in the transaction, overwriting any other with the - /// same hash. - pub(crate) fn put_candidate_entry(&mut self, hash: CandidateHash, entry: CandidateEntry) { - let _ = self.candidate_entries.insert(hash, entry); - } - - /// Returns true if the transaction contains no actions - pub(crate) fn is_empty(&self) -> bool { - self.block_entries.is_empty() && self.candidate_entries.is_empty() - } - - /// Write the contents of the transaction, atomically, to the DB. - pub(crate) fn write(self, db: &dyn KeyValueDB) -> Result<()> { - if self.is_empty() { - return Ok(()) - } - - let mut db_transaction = DBTransaction::new(); - - for (hash, entry) in self.block_entries { - let k = block_entry_key(&hash); - let v = entry.encode(); - - db_transaction.put_vec(self.config.col_data, &k, v); - } - - for (hash, entry) in self.candidate_entries { - let k = candidate_entry_key(&hash); - let v = entry.encode(); - - db_transaction.put_vec(self.config.col_data, &k, v); - } - - db.write(db_transaction).map_err(Into::into) - } -} - -/// Load the stored-blocks key from the state. -fn load_stored_blocks(store: &dyn KeyValueDB, config: &Config) - -> Result> -{ - load_decode(store, config.col_data, STORED_BLOCKS_KEY) -} - -/// Load a blocks-at-height entry for a given block number. -pub(crate) fn load_blocks_at_height( - store: &dyn KeyValueDB, - config: &Config, - block_number: BlockNumber, -) - -> Result> { - load_decode(store, config.col_data, &blocks_at_height_key(block_number)) - .map(|x| x.unwrap_or_default()) -} - -/// Load a block entry from the aux store. -pub(crate) fn load_block_entry(store: &dyn KeyValueDB, config: &Config, block_hash: &Hash) - -> Result> -{ - load_decode(store, config.col_data, &block_entry_key(block_hash)) -} - -/// Load a candidate entry from the aux store. -pub(crate) fn load_candidate_entry( - store: &dyn KeyValueDB, - config: &Config, - candidate_hash: &CandidateHash, -) - -> Result> -{ - load_decode(store, config.col_data, &candidate_entry_key(candidate_hash)) -} - -/// The key a given block entry is stored under. -fn block_entry_key(block_hash: &Hash) -> [u8; 46] { - const BLOCK_ENTRY_PREFIX: [u8; 14] = *b"Approvals_blck"; - - let mut key = [0u8; 14 + 32]; - key[0..14].copy_from_slice(&BLOCK_ENTRY_PREFIX); - key[14..][..32].copy_from_slice(block_hash.as_ref()); - - key -} - -/// The key a given candidate entry is stored under. -fn candidate_entry_key(candidate_hash: &CandidateHash) -> [u8; 46] { - const CANDIDATE_ENTRY_PREFIX: [u8; 14] = *b"Approvals_cand"; - - let mut key = [0u8; 14 + 32]; - key[0..14].copy_from_slice(&CANDIDATE_ENTRY_PREFIX); - key[14..][..32].copy_from_slice(candidate_hash.0.as_ref()); - - key -} - -/// The key a set of block hashes corresponding to a block number is stored under. -fn blocks_at_height_key(block_number: BlockNumber) -> [u8; 16] { - const BLOCKS_AT_HEIGHT_PREFIX: [u8; 12] = *b"Approvals_at"; - - let mut key = [0u8; 12 + 4]; - key[0..12].copy_from_slice(&BLOCKS_AT_HEIGHT_PREFIX); - block_number.using_encoded(|s| key[12..16].copy_from_slice(s)); - - key -} diff --git a/node/core/approval-voting/src/approval_db/v1/tests.rs b/node/core/approval-voting/src/approval_db/v1/tests.rs deleted file mode 100644 index 71c4d3c47e29..000000000000 --- a/node/core/approval-voting/src/approval_db/v1/tests.rs +++ /dev/null @@ -1,627 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Tests for the aux-schema of approval voting. - -use super::*; -use polkadot_primitives::v1::Id as ParaId; - -const DATA_COL: u32 = 0; -const NUM_COLUMNS: u32 = 1; - -const TEST_CONFIG: Config = Config { - col_data: DATA_COL, -}; - -pub(crate) fn write_stored_blocks(tx: &mut DBTransaction, range: StoredBlockRange) { - tx.put_vec( - DATA_COL, - &STORED_BLOCKS_KEY[..], - range.encode(), - ); -} - -pub(crate) fn write_blocks_at_height(tx: &mut DBTransaction, height: BlockNumber, blocks: &[Hash]) { - tx.put_vec( - DATA_COL, - &blocks_at_height_key(height)[..], - blocks.encode(), - ); -} - -pub(crate) fn write_block_entry(tx: &mut DBTransaction, block_hash: &Hash, entry: &BlockEntry) { - tx.put_vec( - DATA_COL, - &block_entry_key(block_hash)[..], - entry.encode(), - ); -} - -pub(crate) fn write_candidate_entry(tx: &mut DBTransaction, candidate_hash: &CandidateHash, entry: &CandidateEntry) { - tx.put_vec( - DATA_COL, - &candidate_entry_key(candidate_hash)[..], - entry.encode(), - ); -} - -fn make_bitvec(len: usize) -> BitVec { - bitvec::bitvec![BitOrderLsb0, u8; 0; len] -} - -fn make_block_entry( - block_hash: Hash, - parent_hash: Hash, - block_number: BlockNumber, - candidates: Vec<(CoreIndex, CandidateHash)>, -) -> BlockEntry { - BlockEntry { - block_hash, - parent_hash, - block_number, - session: 1, - slot: Slot::from(1), - relay_vrf_story: [0u8; 32], - approved_bitfield: make_bitvec(candidates.len()), - candidates, - children: Vec::new(), - } -} - -fn make_candidate(para_id: ParaId, relay_parent: Hash) -> CandidateReceipt { - let mut c = CandidateReceipt::default(); - - c.descriptor.para_id = para_id; - c.descriptor.relay_parent = relay_parent; - - c -} - -#[test] -fn read_write() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(2); - let candidate_hash = CandidateHash(Hash::repeat_byte(3)); - - let range = StoredBlockRange(10, 20); - let at_height = vec![hash_a, hash_b]; - - let block_entry = make_block_entry( - hash_a, - Default::default(), - 1, - vec![(CoreIndex(0), candidate_hash)], - ); - - let candidate_entry = CandidateEntry { - candidate: Default::default(), - session: 5, - block_assignments: vec![ - (hash_a, ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(1), - our_assignment: None, - our_approval_sig: None, - assignments: Default::default(), - approved: false, - }) - ].into_iter().collect(), - approvals: Default::default(), - }; - - let mut tx = DBTransaction::new(); - - write_stored_blocks(&mut tx, range.clone()); - write_blocks_at_height(&mut tx, 1, &at_height); - write_block_entry(&mut tx, &hash_a, &block_entry); - write_candidate_entry(&mut tx, &candidate_hash, &candidate_entry); - - store.write(tx).unwrap(); - - assert_eq!(load_stored_blocks(&store, &TEST_CONFIG).unwrap(), Some(range)); - assert_eq!(load_blocks_at_height(&store, &TEST_CONFIG, 1).unwrap(), at_height); - assert_eq!(load_block_entry(&store, &TEST_CONFIG, &hash_a).unwrap(), Some(block_entry)); - assert_eq!( - load_candidate_entry(&store, &TEST_CONFIG, &candidate_hash).unwrap(), - Some(candidate_entry), - ); - - let delete_keys = vec![ - STORED_BLOCKS_KEY.to_vec(), - blocks_at_height_key(1).to_vec(), - block_entry_key(&hash_a).to_vec(), - candidate_entry_key(&candidate_hash).to_vec(), - ]; - - let mut tx = DBTransaction::new(); - for key in delete_keys { - tx.delete(DATA_COL, &key[..]); - } - - store.write(tx).unwrap(); - - assert!(load_stored_blocks(&store, &TEST_CONFIG).unwrap().is_none()); - assert!(load_blocks_at_height(&store, &TEST_CONFIG, 1).unwrap().is_empty()); - assert!(load_block_entry(&store, &TEST_CONFIG, &hash_a).unwrap().is_none()); - assert!(load_candidate_entry(&store, &TEST_CONFIG, &candidate_hash).unwrap().is_none()); -} - -#[test] -fn add_block_entry_works() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - - let parent_hash = Hash::repeat_byte(1); - let block_hash_a = Hash::repeat_byte(2); - let block_hash_b = Hash::repeat_byte(69); - - let candidate_hash_a = CandidateHash(Hash::repeat_byte(3)); - let candidate_hash_b = CandidateHash(Hash::repeat_byte(4)); - - let block_number = 10; - - let block_entry_a = make_block_entry( - block_hash_a, - parent_hash, - block_number, - vec![(CoreIndex(0), candidate_hash_a)], - ); - - let block_entry_b = make_block_entry( - block_hash_b, - parent_hash, - block_number, - vec![(CoreIndex(0), candidate_hash_a), (CoreIndex(1), candidate_hash_b)], - ); - - let n_validators = 10; - - let mut new_candidate_info = HashMap::new(); - new_candidate_info.insert(candidate_hash_a, NewCandidateInfo { - candidate: make_candidate(1.into(), parent_hash), - backing_group: GroupIndex(0), - our_assignment: None, - }); - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_a.clone(), - n_validators, - |h| new_candidate_info.get(h).map(|x| x.clone()), - ).unwrap(); - - new_candidate_info.insert(candidate_hash_b, NewCandidateInfo { - candidate: make_candidate(2.into(), parent_hash), - backing_group: GroupIndex(1), - our_assignment: None, - }); - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_b.clone(), - n_validators, - |h| new_candidate_info.get(h).map(|x| x.clone()), - ).unwrap(); - - assert_eq!(load_block_entry(&store, &TEST_CONFIG, &block_hash_a).unwrap(), Some(block_entry_a)); - assert_eq!(load_block_entry(&store, &TEST_CONFIG, &block_hash_b).unwrap(), Some(block_entry_b)); - - let candidate_entry_a = load_candidate_entry(&store, &TEST_CONFIG, &candidate_hash_a) - .unwrap().unwrap(); - assert_eq!(candidate_entry_a.block_assignments.keys().collect::>(), vec![&block_hash_a, &block_hash_b]); - - let candidate_entry_b = load_candidate_entry(&store, &TEST_CONFIG, &candidate_hash_b) - .unwrap().unwrap(); - assert_eq!(candidate_entry_b.block_assignments.keys().collect::>(), vec![&block_hash_b]); -} - -#[test] -fn add_block_entry_adds_child() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - - let parent_hash = Hash::repeat_byte(1); - let block_hash_a = Hash::repeat_byte(2); - let block_hash_b = Hash::repeat_byte(69); - - let mut block_entry_a = make_block_entry( - block_hash_a, - parent_hash, - 1, - Vec::new(), - ); - - let block_entry_b = make_block_entry( - block_hash_b, - block_hash_a, - 2, - Vec::new(), - ); - - let n_validators = 10; - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_a.clone(), - n_validators, - |_| None, - ).unwrap(); - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_b.clone(), - n_validators, - |_| None, - ).unwrap(); - - block_entry_a.children.push(block_hash_b); - - assert_eq!(load_block_entry(&store, &TEST_CONFIG, &block_hash_a).unwrap(), Some(block_entry_a)); - assert_eq!(load_block_entry(&store, &TEST_CONFIG, &block_hash_b).unwrap(), Some(block_entry_b)); -} - -#[test] -fn canonicalize_works() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - - // -> B1 -> C1 -> D1 - // A -> B2 -> C2 -> D2 - // - // We'll canonicalize C1. Everytning except D1 should disappear. - // - // Candidates: - // Cand1 in B2 - // Cand2 in C2 - // Cand3 in C2 and D1 - // Cand4 in D1 - // Cand5 in D2 - // Only Cand3 and Cand4 should remain after canonicalize. - - let n_validators = 10; - - let mut tx = DBTransaction::new(); - write_stored_blocks(&mut tx, StoredBlockRange(1, 5)); - store.write(tx).unwrap(); - - let genesis = Hash::repeat_byte(0); - - let block_hash_a = Hash::repeat_byte(1); - let block_hash_b1 = Hash::repeat_byte(2); - let block_hash_b2 = Hash::repeat_byte(3); - let block_hash_c1 = Hash::repeat_byte(4); - let block_hash_c2 = Hash::repeat_byte(5); - let block_hash_d1 = Hash::repeat_byte(6); - let block_hash_d2 = Hash::repeat_byte(7); - - let cand_hash_1 = CandidateHash(Hash::repeat_byte(10)); - let cand_hash_2 = CandidateHash(Hash::repeat_byte(11)); - let cand_hash_3 = CandidateHash(Hash::repeat_byte(12)); - let cand_hash_4 = CandidateHash(Hash::repeat_byte(13)); - let cand_hash_5 = CandidateHash(Hash::repeat_byte(15)); - - let block_entry_a = make_block_entry(block_hash_a, genesis, 1, Vec::new()); - let block_entry_b1 = make_block_entry(block_hash_b1, block_hash_a, 2, Vec::new()); - let block_entry_b2 = make_block_entry( - block_hash_b2, - block_hash_a, - 2, - vec![(CoreIndex(0), cand_hash_1)], - ); - let block_entry_c1 = make_block_entry(block_hash_c1, block_hash_b1, 3, Vec::new()); - let block_entry_c2 = make_block_entry( - block_hash_c2, - block_hash_b2, - 3, - vec![(CoreIndex(0), cand_hash_2), (CoreIndex(1), cand_hash_3)], - ); - let block_entry_d1 = make_block_entry( - block_hash_d1, - block_hash_c1, - 4, - vec![(CoreIndex(0), cand_hash_3), (CoreIndex(1), cand_hash_4)], - ); - let block_entry_d2 = make_block_entry( - block_hash_d2, - block_hash_c2, - 4, - vec![(CoreIndex(0), cand_hash_5)], - ); - - - let candidate_info = { - let mut candidate_info = HashMap::new(); - candidate_info.insert(cand_hash_1, NewCandidateInfo { - candidate: make_candidate(1.into(), genesis), - backing_group: GroupIndex(1), - our_assignment: None, - }); - - candidate_info.insert(cand_hash_2, NewCandidateInfo { - candidate: make_candidate(2.into(), block_hash_a), - backing_group: GroupIndex(2), - our_assignment: None, - }); - - candidate_info.insert(cand_hash_3, NewCandidateInfo { - candidate: make_candidate(3.into(), block_hash_a), - backing_group: GroupIndex(3), - our_assignment: None, - }); - - candidate_info.insert(cand_hash_4, NewCandidateInfo { - candidate: make_candidate(4.into(), block_hash_b1), - backing_group: GroupIndex(4), - our_assignment: None, - }); - - candidate_info.insert(cand_hash_5, NewCandidateInfo { - candidate: make_candidate(5.into(), block_hash_c1), - backing_group: GroupIndex(5), - our_assignment: None, - }); - - candidate_info - }; - - // now insert all the blocks. - let blocks = vec![ - block_entry_a.clone(), - block_entry_b1.clone(), - block_entry_b2.clone(), - block_entry_c1.clone(), - block_entry_c2.clone(), - block_entry_d1.clone(), - block_entry_d2.clone(), - ]; - - for block_entry in blocks { - add_block_entry( - &store, - &TEST_CONFIG, - block_entry, - n_validators, - |h| candidate_info.get(h).map(|x| x.clone()), - ).unwrap(); - } - - let check_candidates_in_store = |expected: Vec<(CandidateHash, Option>)>| { - for (c_hash, in_blocks) in expected { - let (entry, in_blocks) = match in_blocks { - None => { - assert!(load_candidate_entry(&store, &TEST_CONFIG, &c_hash).unwrap().is_none()); - continue - } - Some(i) => ( - load_candidate_entry(&store, &TEST_CONFIG, &c_hash).unwrap().unwrap(), - i, - ), - }; - - assert_eq!(entry.block_assignments.len(), in_blocks.len()); - - for x in in_blocks { - assert!(entry.block_assignments.contains_key(&x)); - } - } - }; - - let check_blocks_in_store = |expected: Vec<(Hash, Option>)>| { - for (hash, with_candidates) in expected { - let (entry, with_candidates) = match with_candidates { - None => { - assert!(load_block_entry(&store, &TEST_CONFIG, &hash).unwrap().is_none()); - continue - } - Some(i) => ( - load_block_entry(&store, &TEST_CONFIG, &hash).unwrap().unwrap(), - i, - ), - }; - - assert_eq!(entry.candidates.len(), with_candidates.len()); - - for x in with_candidates { - assert!(entry.candidates.iter().position(|&(_, ref c)| c == &x).is_some()); - } - } - }; - - check_candidates_in_store(vec![ - (cand_hash_1, Some(vec![block_hash_b2])), - (cand_hash_2, Some(vec![block_hash_c2])), - (cand_hash_3, Some(vec![block_hash_c2, block_hash_d1])), - (cand_hash_4, Some(vec![block_hash_d1])), - (cand_hash_5, Some(vec![block_hash_d2])), - ]); - - check_blocks_in_store(vec![ - (block_hash_a, Some(vec![])), - (block_hash_b1, Some(vec![])), - (block_hash_b2, Some(vec![cand_hash_1])), - (block_hash_c1, Some(vec![])), - (block_hash_c2, Some(vec![cand_hash_2, cand_hash_3])), - (block_hash_d1, Some(vec![cand_hash_3, cand_hash_4])), - (block_hash_d2, Some(vec![cand_hash_5])), - ]); - - canonicalize(&store, &TEST_CONFIG, 3, block_hash_c1).unwrap(); - - assert_eq!(load_stored_blocks(&store, &TEST_CONFIG).unwrap().unwrap(), StoredBlockRange(4, 5)); - - check_candidates_in_store(vec![ - (cand_hash_1, None), - (cand_hash_2, None), - (cand_hash_3, Some(vec![block_hash_d1])), - (cand_hash_4, Some(vec![block_hash_d1])), - (cand_hash_5, None), - ]); - - check_blocks_in_store(vec![ - (block_hash_a, None), - (block_hash_b1, None), - (block_hash_b2, None), - (block_hash_c1, None), - (block_hash_c2, None), - (block_hash_d1, Some(vec![cand_hash_3, cand_hash_4])), - (block_hash_d2, None), - ]); -} - -#[test] -fn force_approve_works() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - let n_validators = 10; - - let mut tx = DBTransaction::new(); - write_stored_blocks(&mut tx, StoredBlockRange(1, 4)); - store.write(tx).unwrap(); - - let candidate_hash = CandidateHash(Hash::repeat_byte(42)); - let single_candidate_vec = vec![(CoreIndex(0), candidate_hash)]; - let candidate_info = { - let mut candidate_info = HashMap::new(); - candidate_info.insert(candidate_hash, NewCandidateInfo { - candidate: make_candidate(1.into(), Default::default()), - backing_group: GroupIndex(1), - our_assignment: None, - }); - - candidate_info - }; - - - let block_hash_a = Hash::repeat_byte(1); // 1 - let block_hash_b = Hash::repeat_byte(2); - let block_hash_c = Hash::repeat_byte(3); - let block_hash_d = Hash::repeat_byte(4); // 4 - - let block_entry_a = make_block_entry(block_hash_a, Default::default(), 1, single_candidate_vec.clone()); - let block_entry_b = make_block_entry(block_hash_b, block_hash_a, 2, single_candidate_vec.clone()); - let block_entry_c = make_block_entry(block_hash_c, block_hash_b, 3, single_candidate_vec.clone()); - let block_entry_d = make_block_entry(block_hash_d, block_hash_c, 4, single_candidate_vec.clone()); - - let blocks = vec![ - block_entry_a.clone(), - block_entry_b.clone(), - block_entry_c.clone(), - block_entry_d.clone(), - ]; - - for block_entry in blocks { - add_block_entry( - &store, - &TEST_CONFIG, - block_entry, - n_validators, - |h| candidate_info.get(h).map(|x| x.clone()), - ).unwrap(); - } - - force_approve(&store, TEST_CONFIG, block_hash_d, 2).unwrap(); - - assert!(load_block_entry( - &store, - &TEST_CONFIG, - &block_hash_a, - ).unwrap().unwrap().approved_bitfield.all()); - assert!(load_block_entry( - &store, - &TEST_CONFIG, - &block_hash_b, - ).unwrap().unwrap().approved_bitfield.all()); - assert!(load_block_entry( - &store, - &TEST_CONFIG, - &block_hash_c, - ).unwrap().unwrap().approved_bitfield.not_any()); - assert!(load_block_entry( - &store, - &TEST_CONFIG, - &block_hash_d, - ).unwrap().unwrap().approved_bitfield.not_any()); -} - -#[test] -fn load_all_blocks_works() { - let store = kvdb_memorydb::create(NUM_COLUMNS); - - let parent_hash = Hash::repeat_byte(1); - let block_hash_a = Hash::repeat_byte(2); - let block_hash_b = Hash::repeat_byte(69); - let block_hash_c = Hash::repeat_byte(42); - - let block_number = 10; - - let block_entry_a = make_block_entry( - block_hash_a, - parent_hash, - block_number, - vec![], - ); - - let block_entry_b = make_block_entry( - block_hash_b, - parent_hash, - block_number, - vec![], - ); - - let block_entry_c = make_block_entry( - block_hash_c, - block_hash_a, - block_number + 1, - vec![], - ); - - let n_validators = 10; - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_a.clone(), - n_validators, - |_| None - ).unwrap(); - - // add C before B to test sorting. - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_c.clone(), - n_validators, - |_| None - ).unwrap(); - - add_block_entry( - &store, - &TEST_CONFIG, - block_entry_b.clone(), - n_validators, - |_| None - ).unwrap(); - - assert_eq!( - load_all_blocks( - &store, - &TEST_CONFIG - ).unwrap(), - vec![block_hash_a, block_hash_b, block_hash_c], - ) -} diff --git a/node/core/approval-voting/src/criteria.rs b/node/core/approval-voting/src/criteria.rs deleted file mode 100644 index 05194581faaa..000000000000 --- a/node/core/approval-voting/src/criteria.rs +++ /dev/null @@ -1,847 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Assignment criteria VRF generation and checking. - -use polkadot_node_primitives::approval::{ - self as approval_types, AssignmentCert, AssignmentCertKind, DelayTranche, RelayVRFStory, -}; -use polkadot_primitives::v1::{ - CoreIndex, ValidatorIndex, SessionInfo, AssignmentPair, AssignmentId, GroupIndex, CandidateHash, -}; -use sc_keystore::LocalKeystore; -use parity_scale_codec::{Encode, Decode}; -use sp_application_crypto::Public; - -use merlin::Transcript; -use schnorrkel::vrf::VRFInOut; - -use std::collections::HashMap; -use std::collections::hash_map::Entry; - -use super::LOG_TARGET; - -/// Details pertaining to our assignment on a block. -#[derive(Debug, Clone, Encode, Decode, PartialEq)] -pub struct OurAssignment { - cert: AssignmentCert, - tranche: DelayTranche, - validator_index: ValidatorIndex, - // Whether the assignment has been triggered already. - triggered: bool, -} - -impl OurAssignment { - pub(crate) fn cert(&self) -> &AssignmentCert { - &self.cert - } - - pub(crate) fn tranche(&self) -> DelayTranche { - self.tranche - } - - pub(crate) fn validator_index(&self) -> ValidatorIndex { - self.validator_index - } - - pub(crate) fn triggered(&self) -> bool { - self.triggered - } - - pub(crate) fn mark_triggered(&mut self) { - self.triggered = true; - } -} - -impl From for OurAssignment { - fn from(entry: crate::approval_db::v1::OurAssignment) -> Self { - OurAssignment { - cert: entry.cert, - tranche: entry.tranche, - validator_index: entry.validator_index, - triggered: entry.triggered, - } - } -} - -impl From for crate::approval_db::v1::OurAssignment { - fn from(entry: OurAssignment) -> Self { - Self { - cert: entry.cert, - tranche: entry.tranche, - validator_index: entry.validator_index, - triggered: entry.triggered, - } - } -} - -fn relay_vrf_modulo_transcript( - relay_vrf_story: RelayVRFStory, - sample: u32, -) -> Transcript { - // combine the relay VRF story with a sample number. - let mut t = Transcript::new(approval_types::RELAY_VRF_MODULO_CONTEXT); - t.append_message(b"RC-VRF", &relay_vrf_story.0); - sample.using_encoded(|s| t.append_message(b"sample", s)); - - t -} - -fn relay_vrf_modulo_core( - vrf_in_out: &VRFInOut, - n_cores: u32, -) -> CoreIndex { - let bytes: [u8; 4] = vrf_in_out.make_bytes(approval_types::CORE_RANDOMNESS_CONTEXT); - - // interpret as little-endian u32. - let random_core = u32::from_le_bytes(bytes) % n_cores; - CoreIndex(random_core) -} - -fn relay_vrf_delay_transcript( - relay_vrf_story: RelayVRFStory, - core_index: CoreIndex, -) -> Transcript { - let mut t = Transcript::new(approval_types::RELAY_VRF_DELAY_CONTEXT); - t.append_message(b"RC-VRF", &relay_vrf_story.0); - core_index.0.using_encoded(|s| t.append_message(b"core", s)); - t -} - -fn relay_vrf_delay_tranche( - vrf_in_out: &VRFInOut, - num_delay_tranches: u32, - zeroth_delay_tranche_width: u32, -) -> DelayTranche { - let bytes: [u8; 4] = vrf_in_out.make_bytes(approval_types::TRANCHE_RANDOMNESS_CONTEXT); - - // interpret as little-endian u32 and reduce by the number of tranches. - let wide_tranche = u32::from_le_bytes(bytes) % (num_delay_tranches + zeroth_delay_tranche_width); - - // Consolidate early results to tranche zero so tranche zero is extra wide. - wide_tranche.saturating_sub(zeroth_delay_tranche_width) -} - -fn assigned_core_transcript(core_index: CoreIndex) -> Transcript { - let mut t = Transcript::new(approval_types::ASSIGNED_CORE_CONTEXT); - core_index.0.using_encoded(|s| t.append_message(b"core", s)); - t -} - -/// Information about the world assignments are being produced in. -#[derive(Clone)] -pub(crate) struct Config { - /// The assignment public keys for validators. - assignment_keys: Vec, - /// The groups of validators assigned to each core. - validator_groups: Vec>, - /// The number of availability cores used by the protocol during this session. - n_cores: u32, - /// The zeroth delay tranche width. - zeroth_delay_tranche_width: u32, - /// The number of samples we do of relay_vrf_modulo. - relay_vrf_modulo_samples: u32, - /// The number of delay tranches in total. - n_delay_tranches: u32, -} - -impl<'a> From<&'a SessionInfo> for Config { - fn from(s: &'a SessionInfo) -> Self { - Config { - assignment_keys: s.assignment_keys.clone(), - validator_groups: s.validator_groups.clone(), - n_cores: s.n_cores.clone(), - zeroth_delay_tranche_width: s.zeroth_delay_tranche_width.clone(), - relay_vrf_modulo_samples: s.relay_vrf_modulo_samples.clone(), - n_delay_tranches: s.n_delay_tranches.clone(), - } - } -} - -/// A trait for producing and checking assignments. Used to mock. -pub(crate) trait AssignmentCriteria { - fn compute_assignments( - &self, - keystore: &LocalKeystore, - relay_vrf_story: RelayVRFStory, - config: &Config, - leaving_cores: Vec<(CandidateHash, CoreIndex, GroupIndex)>, - ) -> HashMap; - - fn check_assignment_cert( - &self, - claimed_core_index: CoreIndex, - validator_index: ValidatorIndex, - config: &Config, - relay_vrf_story: RelayVRFStory, - assignment: &AssignmentCert, - backing_group: GroupIndex, - ) -> Result; -} - -pub(crate) struct RealAssignmentCriteria; - -impl AssignmentCriteria for RealAssignmentCriteria { - fn compute_assignments( - &self, - keystore: &LocalKeystore, - relay_vrf_story: RelayVRFStory, - config: &Config, - leaving_cores: Vec<(CandidateHash, CoreIndex, GroupIndex)>, - ) -> HashMap { - compute_assignments( - keystore, - relay_vrf_story, - config, - leaving_cores, - ) - } - - fn check_assignment_cert( - &self, - claimed_core_index: CoreIndex, - validator_index: ValidatorIndex, - config: &Config, - relay_vrf_story: RelayVRFStory, - assignment: &AssignmentCert, - backing_group: GroupIndex, - ) -> Result { - check_assignment_cert( - claimed_core_index, - validator_index, - config, - relay_vrf_story, - assignment, - backing_group, - ) - } -} - -/// Compute the assignments for a given block. Returns a map containing all assignments to cores in -/// the block. If more than one assignment targets the given core, only the earliest assignment is kept. -/// -/// The `leaving_cores` parameter indicates all cores within the block where a candidate was included, -/// as well as the group index backing those. -/// -/// The current description of the protocol assigns every validator to check every core. But at different times. -/// The idea is that most assignments are never triggered and fall by the wayside. -/// -/// This will not assign to anything the local validator was part of the backing group for. -pub(crate) fn compute_assignments( - keystore: &LocalKeystore, - relay_vrf_story: RelayVRFStory, - config: &Config, - leaving_cores: impl IntoIterator + Clone, -) -> HashMap { - if config.n_cores == 0 || config.assignment_keys.is_empty() || config.validator_groups.is_empty() { - return HashMap::new() - } - - let (index, assignments_key): (ValidatorIndex, AssignmentPair) = { - let key = config.assignment_keys.iter().enumerate() - .find_map(|(i, p)| match keystore.key_pair(p) { - Ok(Some(pair)) => Some((ValidatorIndex(i as _), pair)), - Ok(None) => None, - Err(sc_keystore::Error::Unavailable) => None, - Err(sc_keystore::Error::Io(e)) if e.kind() == std::io::ErrorKind::NotFound => None, - Err(e) => { - tracing::warn!(target: LOG_TARGET, "Encountered keystore error: {:?}", e); - None - } - }); - - match key { - None => return Default::default(), - Some(k) => k, - } - }; - - // Ignore any cores where the assigned group is our own. - let leaving_cores = leaving_cores.into_iter() - .filter(|&(_, _, ref g)| !is_in_backing_group(&config.validator_groups, index, *g)) - .map(|(c_hash, core, _)| (c_hash, core)) - .collect::>(); - - let assignments_key: &sp_application_crypto::sr25519::Pair = assignments_key.as_ref(); - let assignments_key: &schnorrkel::Keypair = assignments_key.as_ref(); - - let mut assignments = HashMap::new(); - - // First run `RelayVRFModulo` for each sample. - compute_relay_vrf_modulo_assignments( - &assignments_key, - index, - config, - relay_vrf_story.clone(), - leaving_cores.iter().cloned(), - &mut assignments, - ); - - // Then run `RelayVRFDelay` once for the whole block. - compute_relay_vrf_delay_assignments( - &assignments_key, - index, - config, - relay_vrf_story, - leaving_cores, - &mut assignments, - ); - - assignments -} - -fn compute_relay_vrf_modulo_assignments( - assignments_key: &schnorrkel::Keypair, - validator_index: ValidatorIndex, - config: &Config, - relay_vrf_story: RelayVRFStory, - leaving_cores: impl IntoIterator + Clone, - assignments: &mut HashMap, -) { - for rvm_sample in 0..config.relay_vrf_modulo_samples { - let mut core = Default::default(); - - let maybe_assignment = { - // Extra scope to ensure borrowing instead of moving core - // into closure. - let core = &mut core; - assignments_key.vrf_sign_extra_after_check( - relay_vrf_modulo_transcript(relay_vrf_story.clone(), rvm_sample), - |vrf_in_out| { - *core = relay_vrf_modulo_core(&vrf_in_out, config.n_cores); - if let Some((candidate_hash, _)) - = leaving_cores.clone().into_iter().find(|(_, c)| c == core) - { - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - ?core, - ?validator_index, - tranche = 0, - "RelayVRFModulo Assignment." - ); - - Some(assigned_core_transcript(*core)) - } else { - None - } - } - ) - }; - - if let Some((vrf_in_out, vrf_proof, _)) = maybe_assignment { - // Sanity: `core` is always initialized to non-default here, as the closure above - // has been executed. - let cert = AssignmentCert { - kind: AssignmentCertKind::RelayVRFModulo { sample: rvm_sample }, - vrf: (approval_types::VRFOutput(vrf_in_out.to_output()), approval_types::VRFProof(vrf_proof)), - }; - - // All assignments of type RelayVRFModulo have tranche 0. - assignments.entry(core).or_insert(OurAssignment { - cert, - tranche: 0, - validator_index, - triggered: false, - }); - } - } -} - -fn compute_relay_vrf_delay_assignments( - assignments_key: &schnorrkel::Keypair, - validator_index: ValidatorIndex, - config: &Config, - relay_vrf_story: RelayVRFStory, - leaving_cores: impl IntoIterator, - assignments: &mut HashMap, -) { - for (candidate_hash, core) in leaving_cores { - let (vrf_in_out, vrf_proof, _) = assignments_key.vrf_sign( - relay_vrf_delay_transcript(relay_vrf_story.clone(), core), - ); - - let tranche = relay_vrf_delay_tranche( - &vrf_in_out, - config.n_delay_tranches, - config.zeroth_delay_tranche_width, - ); - - let cert = AssignmentCert { - kind: AssignmentCertKind::RelayVRFDelay { core_index: core }, - vrf: (approval_types::VRFOutput(vrf_in_out.to_output()), approval_types::VRFProof(vrf_proof)), - }; - - let our_assignment = OurAssignment { - cert, - tranche, - validator_index, - triggered: false, - }; - - let used = match assignments.entry(core) { - Entry::Vacant(e) => { let _ = e.insert(our_assignment); true } - Entry::Occupied(mut e) => if e.get().tranche > our_assignment.tranche { - e.insert(our_assignment); - true - } else { - false - }, - }; - - if used { - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - ?core, - ?validator_index, - tranche, - "RelayVRFDelay Assignment", - ); - } - } -} - -/// Assignment invalid. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct InvalidAssignment; - -impl std::fmt::Display for InvalidAssignment { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "Invalid Assignment") - } -} - -impl std::error::Error for InvalidAssignment { } - -/// Checks the crypto of an assignment cert. Failure conditions: -/// * Validator index out of bounds -/// * VRF signature check fails -/// * VRF output doesn't match assigned core -/// * Core is not covered by extra data in signature -/// * Core index out of bounds -/// * Sample is out of bounds -/// * Validator is present in backing group. -/// -/// This function does not check whether the core is actually a valid assignment or not. That should be done -/// outside of the scope of this function. -pub(crate) fn check_assignment_cert( - claimed_core_index: CoreIndex, - validator_index: ValidatorIndex, - config: &Config, - relay_vrf_story: RelayVRFStory, - assignment: &AssignmentCert, - backing_group: GroupIndex, -) -> Result { - let validator_public = config.assignment_keys - .get(validator_index.0 as usize) - .ok_or(InvalidAssignment)?; - - let public = schnorrkel::PublicKey::from_bytes(validator_public.as_slice()) - .map_err(|_| InvalidAssignment)?; - - if claimed_core_index.0 >= config.n_cores { - return Err(InvalidAssignment); - } - - // Check that the validator was not part of the backing group - // and not already assigned. - let is_in_backing = is_in_backing_group( - &config.validator_groups, - validator_index, - backing_group, - ); - - if is_in_backing { - return Err(InvalidAssignment); - } - - let &(ref vrf_output, ref vrf_proof) = &assignment.vrf; - match assignment.kind { - AssignmentCertKind::RelayVRFModulo { sample } => { - if sample >= config.relay_vrf_modulo_samples { - return Err(InvalidAssignment); - } - - let (vrf_in_out, _) = public.vrf_verify_extra( - relay_vrf_modulo_transcript(relay_vrf_story, sample), - &vrf_output.0, - &vrf_proof.0, - assigned_core_transcript(claimed_core_index), - ).map_err(|_| InvalidAssignment)?; - - // ensure that the `vrf_in_out` actually gives us the claimed core. - if relay_vrf_modulo_core(&vrf_in_out, config.n_cores) == claimed_core_index { - Ok(0) - } else { - Err(InvalidAssignment) - } - } - AssignmentCertKind::RelayVRFDelay { core_index } => { - if core_index != claimed_core_index { - return Err(InvalidAssignment); - } - - let (vrf_in_out, _) = public.vrf_verify( - relay_vrf_delay_transcript(relay_vrf_story, core_index), - &vrf_output.0, - &vrf_proof.0, - ).map_err(|_| InvalidAssignment)?; - - Ok(relay_vrf_delay_tranche( - &vrf_in_out, - config.n_delay_tranches, - config.zeroth_delay_tranche_width, - )) - } - } -} - -fn is_in_backing_group( - validator_groups: &[Vec], - validator: ValidatorIndex, - group: GroupIndex, -) -> bool { - validator_groups.get(group.0 as usize).map_or(false, |g| g.contains(&validator)) -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_keystore::CryptoStore; - use sp_keyring::sr25519::Keyring as Sr25519Keyring; - use sp_application_crypto::sr25519; - use sp_core::crypto::Pair as PairT; - use polkadot_primitives::v1::{ASSIGNMENT_KEY_TYPE_ID, Hash}; - use polkadot_node_primitives::approval::{VRFOutput, VRFProof}; - - // sets up a keystore with the given keyring accounts. - async fn make_keystore(accounts: &[Sr25519Keyring]) -> LocalKeystore { - let store = LocalKeystore::in_memory(); - - for s in accounts.iter().copied().map(|k| k.to_seed()) { - store.sr25519_generate_new( - ASSIGNMENT_KEY_TYPE_ID, - Some(s.as_str()), - ).await.unwrap(); - } - - store - } - - fn assignment_keys(accounts: &[Sr25519Keyring]) -> Vec { - assignment_keys_plus_random(accounts, 0) - } - - fn assignment_keys_plus_random(accounts: &[Sr25519Keyring], random: usize) -> Vec { - let gen_random = (0..random).map(|_| - AssignmentId::from(sr25519::Pair::generate().0.public()) - ); - - accounts.iter() - .map(|k| AssignmentId::from(k.public())) - .chain(gen_random) - .collect() - } - - fn basic_groups(n_validators: usize, n_groups: usize) -> Vec> { - let size = n_validators / n_groups; - let big_groups = n_validators % n_groups; - let scraps = n_groups * size; - - (0..n_groups).map(|i| { - (i * size .. (i + 1) *size) - .chain(if i < big_groups { Some(scraps + i) } else { None }) - .map(|j| ValidatorIndex(j as _)) - .collect::>() - }).collect() - } - - // used for generating assignments where the validity of the VRF doesn't matter. - fn garbage_vrf() -> (VRFOutput, VRFProof) { - let key = Sr25519Keyring::Alice.pair(); - let key: &schnorrkel::Keypair = key.as_ref(); - - let (o, p, _) = key.vrf_sign(Transcript::new(b"test-garbage")); - (VRFOutput(o.to_output()), VRFProof(p)) - } - - #[test] - fn assignments_produced_for_non_backing() { - let keystore = futures::executor::block_on( - make_keystore(&[Sr25519Keyring::Alice]) - ); - - let c_a = CandidateHash(Hash::repeat_byte(0)); - let c_b = CandidateHash(Hash::repeat_byte(1)); - - let relay_vrf_story = RelayVRFStory([42u8; 32]); - let assignments = compute_assignments( - &keystore, - relay_vrf_story, - &Config { - assignment_keys: assignment_keys(&[ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - ]), - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1), ValidatorIndex(2)]], - n_cores: 2, - zeroth_delay_tranche_width: 10, - relay_vrf_modulo_samples: 3, - n_delay_tranches: 40, - }, - vec![(c_a, CoreIndex(0), GroupIndex(1)), (c_b, CoreIndex(1), GroupIndex(0))], - ); - - // Note that alice is in group 0, which was the backing group for core 1. - // Alice should have self-assigned to check core 0 but not 1. - assert_eq!(assignments.len(), 1); - assert!(assignments.get(&CoreIndex(0)).is_some()); - } - - #[test] - fn assign_to_nonzero_core() { - let keystore = futures::executor::block_on( - make_keystore(&[Sr25519Keyring::Alice]) - ); - - let c_a = CandidateHash(Hash::repeat_byte(0)); - let c_b = CandidateHash(Hash::repeat_byte(1)); - - let relay_vrf_story = RelayVRFStory([42u8; 32]); - let assignments = compute_assignments( - &keystore, - relay_vrf_story, - &Config { - assignment_keys: assignment_keys(&[ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - ]), - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1), ValidatorIndex(2)]], - n_cores: 2, - zeroth_delay_tranche_width: 10, - relay_vrf_modulo_samples: 3, - n_delay_tranches: 40, - }, - vec![(c_a, CoreIndex(0), GroupIndex(0)), (c_b, CoreIndex(1), GroupIndex(1))], - ); - - assert_eq!(assignments.len(), 1); - assert!(assignments.get(&CoreIndex(1)).is_some()); - } - - #[test] - fn succeeds_empty_for_0_cores() { - let keystore = futures::executor::block_on( - make_keystore(&[Sr25519Keyring::Alice]) - ); - - let relay_vrf_story = RelayVRFStory([42u8; 32]); - let assignments = compute_assignments( - &keystore, - relay_vrf_story, - &Config { - assignment_keys: assignment_keys(&[ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - ]), - validator_groups: vec![], - n_cores: 0, - zeroth_delay_tranche_width: 10, - relay_vrf_modulo_samples: 3, - n_delay_tranches: 40, - }, - vec![], - ); - - assert!(assignments.is_empty()); - } - - struct MutatedAssignment { - core: CoreIndex, - cert: AssignmentCert, - group: GroupIndex, - own_group: GroupIndex, - val_index: ValidatorIndex, - config: Config, - } - - // This fails if the closure requests to skip everything. - fn check_mutated_assignments( - n_validators: usize, - n_cores: usize, - rotation_offset: usize, - f: impl Fn(&mut MutatedAssignment) -> Option, // None = skip - ) { - let keystore = futures::executor::block_on( - make_keystore(&[Sr25519Keyring::Alice]) - ); - - let group_for_core = |i| GroupIndex(((i + rotation_offset) % n_cores) as _); - - let config = Config { - assignment_keys: assignment_keys_plus_random(&[Sr25519Keyring::Alice], n_validators - 1), - validator_groups: basic_groups(n_validators, n_cores), - n_cores: n_cores as u32, - zeroth_delay_tranche_width: 10, - relay_vrf_modulo_samples: 3, - n_delay_tranches: 40, - }; - - let relay_vrf_story = RelayVRFStory([42u8; 32]); - let assignments = compute_assignments( - &keystore, - relay_vrf_story.clone(), - &config, - (0..n_cores) - .map(|i| ( - CandidateHash(Hash::repeat_byte(i as u8)), - CoreIndex(i as u32), - group_for_core(i), - )) - .collect::>(), - ); - - let mut counted = 0; - for (core, assignment) in assignments { - let mut mutated = MutatedAssignment { - core, - group: group_for_core(core.0 as _), - cert: assignment.cert, - own_group: GroupIndex(0), - val_index: ValidatorIndex(0), - config: config.clone(), - }; - - let expected = match f(&mut mutated) { - None => continue, - Some(e) => e, - }; - - counted += 1; - - let is_good = check_assignment_cert( - mutated.core, - mutated.val_index, - &mutated.config, - relay_vrf_story.clone(), - &mutated.cert, - mutated.group, - ).is_ok(); - - assert_eq!(expected, is_good) - } - - assert!(counted > 0); - } - - #[test] - fn computed_assignments_pass_checks() { - check_mutated_assignments(200, 100, 25, |_| Some(true)); - } - - #[test] - fn check_rejects_claimed_core_out_of_bounds() { - check_mutated_assignments(200, 100, 25, |m| { - m.core.0 += 100; - Some(false) - }); - } - - #[test] - fn check_rejects_in_backing_group() { - check_mutated_assignments(200, 100, 25, |m| { - m.group = m.own_group; - Some(false) - }); - } - - #[test] - fn check_rejects_nonexistent_key() { - check_mutated_assignments(200, 100, 25, |m| { - m.val_index.0 += 200; - Some(false) - }); - } - - #[test] - fn check_rejects_delay_bad_vrf() { - check_mutated_assignments(40, 10, 8, |m| { - match m.cert.kind.clone() { - AssignmentCertKind::RelayVRFDelay { .. } => { - m.cert.vrf = garbage_vrf(); - Some(false) - } - _ => None, // skip everything else. - } - }); - } - - #[test] - fn check_rejects_modulo_bad_vrf() { - check_mutated_assignments(200, 100, 25, |m| { - match m.cert.kind.clone() { - AssignmentCertKind::RelayVRFModulo { .. } => { - m.cert.vrf = garbage_vrf(); - Some(false) - } - _ => None, // skip everything else. - } - }); - } - - #[test] - fn check_rejects_modulo_sample_out_of_bounds() { - check_mutated_assignments(200, 100, 25, |m| { - match m.cert.kind.clone() { - AssignmentCertKind::RelayVRFModulo { sample } => { - m.config.relay_vrf_modulo_samples = sample; - Some(false) - } - _ => None, // skip everything else. - } - }); - } - - #[test] - fn check_rejects_delay_claimed_core_wrong() { - check_mutated_assignments(200, 100, 25, |m| { - match m.cert.kind.clone() { - AssignmentCertKind::RelayVRFDelay { .. } => { - m.core = CoreIndex((m.core.0 + 1) % 100); - Some(false) - } - _ => None, // skip everything else. - } - }); - } - - #[test] - fn check_rejects_modulo_core_wrong() { - check_mutated_assignments(200, 100, 25, |m| { - match m.cert.kind.clone() { - AssignmentCertKind::RelayVRFModulo { .. } => { - m.core = CoreIndex((m.core.0 + 1) % 100); - Some(false) - } - _ => None, // skip everything else. - } - }); - } -} diff --git a/node/core/approval-voting/src/import.rs b/node/core/approval-voting/src/import.rs deleted file mode 100644 index bcb59f6ba7b0..000000000000 --- a/node/core/approval-voting/src/import.rs +++ /dev/null @@ -1,1335 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Block import logic for the approval voting subsystem. -//! -//! There are two major concerns when handling block import notifications. -//! * Determining all new blocks. -//! * Handling session changes -//! -//! When receiving a block import notification from the overseer, the -//! approval voting subsystem needs to account for the fact that there -//! may have been blocks missed by the notification. It needs to iterate -//! the ancestry of the block notification back to either the last finalized -//! block or a block that is already accounted for within the DB. -//! -//! We maintain a rolling window of session indices. This starts as empty - -use polkadot_node_subsystem::{ - messages::{ - RuntimeApiMessage, RuntimeApiRequest, ChainApiMessage, ApprovalDistributionMessage, - }, - SubsystemContext, SubsystemError, SubsystemResult, -}; -use polkadot_node_subsystem_util::determine_new_blocks; -use polkadot_node_subsystem_util::rolling_session_window::{ - RollingSessionWindow, SessionWindowUpdate, -}; -use polkadot_primitives::v1::{ - Hash, SessionIndex, CandidateEvent, Header, CandidateHash, - CandidateReceipt, CoreIndex, GroupIndex, BlockNumber, ConsensusLog, -}; -use polkadot_node_primitives::approval::{ - self as approval_types, BlockApprovalMeta, RelayVRFStory, -}; -use polkadot_node_jaeger as jaeger; -use sc_keystore::LocalKeystore; -use sp_consensus_slots::Slot; -use kvdb::KeyValueDB; - -use futures::prelude::*; -use futures::channel::oneshot; -use bitvec::order::Lsb0 as BitOrderLsb0; - -use std::collections::HashMap; -use std::convert::TryFrom; - -use crate::approval_db::{self, v1::Config as DatabaseConfig}; -use crate::persisted_entries::CandidateEntry; -use crate::criteria::{AssignmentCriteria, OurAssignment}; -use crate::time::{slot_number_to_tick, Tick}; - -use super::{LOG_TARGET, State, DBReader}; - -struct ImportedBlockInfo { - included_candidates: Vec<(CandidateHash, CandidateReceipt, CoreIndex, GroupIndex)>, - session_index: SessionIndex, - assignments: HashMap, - n_validators: usize, - relay_vrf_story: RelayVRFStory, - slot: Slot, - force_approve: Option, -} - -struct ImportedBlockInfoEnv<'a> { - session_window: &'a RollingSessionWindow, - assignment_criteria: &'a (dyn AssignmentCriteria + Send + Sync), - keystore: &'a LocalKeystore, -} - -// Computes information about the imported block. Returns `None` if the info couldn't be extracted - -// failure to communicate with overseer, -async fn imported_block_info( - ctx: &mut impl SubsystemContext, - env: ImportedBlockInfoEnv<'_>, - block_hash: Hash, - block_header: &Header, -) -> SubsystemResult> { - // Ignore any runtime API errors - that means these blocks are old and finalized. - // Only unfinalized blocks factor into the approval voting process. - - // fetch candidates - let included_candidates: Vec<_> = { - let (c_tx, c_rx) = oneshot::channel(); - ctx.send_message(RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::CandidateEvents(c_tx), - ).into()).await; - - let events: Vec = match c_rx.await { - Ok(Ok(events)) => events, - Ok(Err(_)) => return Ok(None), - Err(_) => return Ok(None), - }; - - events.into_iter().filter_map(|e| match e { - CandidateEvent::CandidateIncluded(receipt, _, core, group) - => Some((receipt.hash(), receipt, core, group)), - _ => None, - }).collect() - }; - - // fetch session. ignore blocks that are too old, but unless sessions are really - // short, that shouldn't happen. - let session_index = { - let (s_tx, s_rx) = oneshot::channel(); - ctx.send_message(RuntimeApiMessage::Request( - block_header.parent_hash, - RuntimeApiRequest::SessionIndexForChild(s_tx), - ).into()).await; - - let session_index = match s_rx.await { - Ok(Ok(s)) => s, - Ok(Err(_)) => return Ok(None), - Err(_) => return Ok(None), - }; - - if env.session_window.earliest_session().map_or(true, |e| session_index < e) { - tracing::debug!(target: LOG_TARGET, "Block {} is from ancient session {}. Skipping", - block_hash, session_index); - - return Ok(None); - } - - session_index - }; - - let babe_epoch = { - let (s_tx, s_rx) = oneshot::channel(); - - // It's not obvious whether to use the hash or the parent hash for this, intuitively. We - // want to use the block hash itself, and here's why: - // - // First off, 'epoch' in BABE means 'session' in other places. 'epoch' is the terminology from - // the paper, which we fulfill using 'session's, which are a Substrate consensus concept. - // - // In BABE, the on-chain and off-chain view of the current epoch can differ at epoch boundaries - // because epochs change precisely at a slot. When a block triggers a new epoch, the state of - // its parent will still have the old epoch. Conversely, we have the invariant that every - // block in BABE has the epoch _it was authored in_ within its post-state. So we use the - // block, and not its parent. - // - // It's worth nothing that Polkadot session changes, at least for the purposes of parachains, - // would function the same way, except for the fact that they're always delayed by one block. - // This gives us the opposite invariant for sessions - the parent block's post-state gives - // us the canonical information about the session index for any of its children, regardless - // of which slot number they might be produced at. - ctx.send_message(RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::CurrentBabeEpoch(s_tx), - ).into()).await; - - match s_rx.await { - Ok(Ok(s)) => s, - Ok(Err(_)) => return Ok(None), - Err(_) => return Ok(None), - } - }; - - let session_info = match env.session_window.session_info(session_index) { - Some(s) => s, - None => { - tracing::debug!( - target: LOG_TARGET, - "Session info unavailable for block {}", - block_hash, - ); - - return Ok(None); - } - }; - - let (assignments, slot, relay_vrf_story) = { - let unsafe_vrf = approval_types::babe_unsafe_vrf_info(&block_header); - - match unsafe_vrf { - Some(unsafe_vrf) => { - let slot = unsafe_vrf.slot(); - - match unsafe_vrf.compute_randomness( - &babe_epoch.authorities, - &babe_epoch.randomness, - babe_epoch.epoch_index, - ) { - Ok(relay_vrf) => { - let assignments = env.assignment_criteria.compute_assignments( - &env.keystore, - relay_vrf.clone(), - &crate::criteria::Config::from(session_info), - included_candidates.iter() - .map(|(c_hash, _, core, group)| (*c_hash, *core, *group)) - .collect(), - ); - - (assignments, slot, relay_vrf) - }, - Err(_) => return Ok(None), - } - } - None => { - tracing::debug!( - target: LOG_TARGET, - "BABE VRF info unavailable for block {}", - block_hash, - ); - - return Ok(None); - } - } - }; - - tracing::trace!( - target: LOG_TARGET, - n_assignments = assignments.len(), - "Produced assignments" - ); - - let force_approve = - block_header.digest.convert_first(|l| match ConsensusLog::from_digest_item(l) { - Ok(Some(ConsensusLog::ForceApprove(num))) if num < block_header.number => { - tracing::trace!( - target: LOG_TARGET, - ?block_hash, - current_number = block_header.number, - approved_number = num, - "Force-approving based on header digest" - ); - - Some(num) - } - Ok(Some(_)) => None, - Ok(None) => None, - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - ?err, - ?block_hash, - "Malformed consensus digest in header", - ); - - None - } - }); - - Ok(Some(ImportedBlockInfo { - included_candidates, - session_index, - assignments, - n_validators: session_info.validators.len(), - relay_vrf_story, - slot, - force_approve, - })) -} - -/// Information about a block and imported candidates. -pub struct BlockImportedCandidates { - pub block_hash: Hash, - pub block_number: BlockNumber, - pub block_tick: Tick, - pub no_show_duration: Tick, - pub imported_candidates: Vec<(CandidateHash, CandidateEntry)>, -} - -/// Handle a new notification of a header. This will -/// * determine all blocks to import, -/// * extract candidate information from them -/// * update the rolling session window -/// * compute our assignments -/// * import the block and candidates to the approval DB -/// * and return information about all candidates imported under each block. -/// -/// It is the responsibility of the caller to schedule wakeups for each block. -pub(crate) async fn handle_new_head( - ctx: &mut impl SubsystemContext, - state: &mut State, - db_writer: &dyn KeyValueDB, - db_config: DatabaseConfig, - head: Hash, - finalized_number: &Option, -) -> SubsystemResult> { - // Update session info based on most recent head. - - let mut span = jaeger::Span::new(head, "approval-checking-import"); - - let header = { - let (h_tx, h_rx) = oneshot::channel(); - ctx.send_message(ChainApiMessage::BlockHeader(head, h_tx).into()).await; - - match h_rx.await? { - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - "Chain API subsystem temporarily unreachable {}", - e, - ); - - return Ok(Vec::new()); - } - Ok(None) => { - tracing::warn!(target: LOG_TARGET, "Missing header for new head {}", head); - return Ok(Vec::new()); - } - Ok(Some(h)) => h - } - }; - - match state.session_window.cache_session_info_for_head(ctx, head, &header).await { - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - ?head, - ?e, - "Could not cache session info when processing head.", - ); - - return Ok(Vec::new()) - } - Ok(a @ SessionWindowUpdate::Advanced { .. }) => { - tracing::info!( - target: LOG_TARGET, - update = ?a, - "Advanced session window for approvals", - ); - } - Ok(_) => {} - } - - // If we've just started the node and haven't yet received any finality notifications, - // we don't do any look-back. Approval voting is only for nodes were already online. - let lower_bound_number = finalized_number.unwrap_or(header.number.saturating_sub(1)); - - let new_blocks = determine_new_blocks( - ctx.sender(), - |h| state.db.load_block_entry(h).map(|e| e.is_some()), - head, - &header, - lower_bound_number, - ) - .map_err(|e| SubsystemError::with_origin("approval-voting", e)) - .await?; - - span.add_uint_tag("new-blocks", new_blocks.len() as u64); - - if new_blocks.is_empty() { return Ok(Vec::new()) } - - let mut approval_meta: Vec = Vec::with_capacity(new_blocks.len()); - let mut imported_candidates = Vec::with_capacity(new_blocks.len()); - - // `determine_new_blocks` gives us a vec in backwards order. we want to move forwards. - let imported_blocks_and_info = { - let mut imported_blocks_and_info = Vec::with_capacity(new_blocks.len()); - for (block_hash, block_header) in new_blocks.into_iter().rev() { - let env = ImportedBlockInfoEnv { - session_window: &state.session_window, - assignment_criteria: &*state.assignment_criteria, - keystore: &state.keystore, - }; - - match imported_block_info(ctx, env, block_hash, &block_header).await? { - Some(i) => imported_blocks_and_info.push((block_hash, block_header, i)), - None => { - // It's possible that we've lost a race with finality. - let (tx, rx) = oneshot::channel(); - ctx.send_message( - ChainApiMessage::FinalizedBlockHash(block_header.number.clone(), tx).into() - ).await; - - let lost_to_finality = match rx.await { - Ok(Ok(Some(h))) if h != block_hash => true, - _ => false, - }; - - if !lost_to_finality { - // Such errors are likely spurious, but this prevents us from getting gaps - // in the approval-db. - tracing::warn!( - target: LOG_TARGET, - "Unable to gather info about imported block {:?}. Skipping chain.", - (block_hash, block_header.number), - ); - } - - return Ok(Vec::new()); - }, - }; - } - - imported_blocks_and_info - }; - - tracing::trace!( - target: LOG_TARGET, - imported_blocks = imported_blocks_and_info.len(), - "Inserting imported blocks into database" - ); - - for (block_hash, block_header, imported_block_info) in imported_blocks_and_info { - let ImportedBlockInfo { - included_candidates, - session_index, - assignments, - n_validators, - relay_vrf_story, - slot, - force_approve, - } = imported_block_info; - - let session_info = state.session_window.session_info(session_index) - .expect("imported_block_info requires session to be available; qed"); - - let (block_tick, no_show_duration) = { - let block_tick = slot_number_to_tick(state.slot_duration_millis, slot); - let no_show_duration = slot_number_to_tick( - state.slot_duration_millis, - Slot::from(u64::from(session_info.no_show_slots)), - ); - (block_tick, no_show_duration) - }; - let needed_approvals = session_info.needed_approvals; - let validator_group_lens: Vec = session_info.validator_groups.iter().map(|v| v.len()).collect(); - // insta-approve candidates on low-node testnets: - // cf. https://github.com/paritytech/polkadot/issues/2411 - let num_candidates = included_candidates.len(); - let approved_bitfield = { - if needed_approvals == 0 { - tracing::debug!( - target: LOG_TARGET, - block_hash = ?block_hash, - "Insta-approving all candidates", - ); - bitvec::bitvec![BitOrderLsb0, u8; 1; num_candidates] - } else { - let mut result = bitvec::bitvec![BitOrderLsb0, u8; 0; num_candidates]; - for (i, &(_, _, _, backing_group)) in included_candidates.iter().enumerate() { - let backing_group_size = validator_group_lens.get(backing_group.0 as usize) - .copied() - .unwrap_or(0); - let needed_approvals = usize::try_from(needed_approvals).expect("usize is at least u32; qed"); - if n_validators.saturating_sub(backing_group_size) < needed_approvals { - result.set(i, true); - } - } - if result.any() { - tracing::debug!( - target: LOG_TARGET, - block_hash = ?block_hash, - "Insta-approving {}/{} candidates as the number of validators is too low", - result.count_ones(), - result.len(), - ); - } - result - } - }; - - let block_entry = approval_db::v1::BlockEntry { - block_hash, - parent_hash: block_header.parent_hash, - block_number: block_header.number, - session: session_index, - slot, - relay_vrf_story: relay_vrf_story.0, - candidates: included_candidates.iter() - .map(|(hash, _, core, _)| (*core, *hash)).collect(), - approved_bitfield, - children: Vec::new(), - }; - - if let Some(up_to) = force_approve { - tracing::debug!( - target: LOG_TARGET, - ?block_hash, - up_to, - "Enacting force-approve", - ); - - approval_db::v1::force_approve(db_writer, db_config, block_hash, up_to) - .map_err(|e| SubsystemError::with_origin("approval-voting", e))?; - } - - tracing::trace!( - target: LOG_TARGET, - ?block_hash, - block_number = block_header.number, - "Writing BlockEntry", - ); - - let candidate_entries = approval_db::v1::add_block_entry( - db_writer, - &db_config, - block_entry, - n_validators, - |candidate_hash| { - included_candidates.iter().find(|(hash, _, _, _)| candidate_hash == hash) - .map(|(_, receipt, core, backing_group)| approval_db::v1::NewCandidateInfo { - candidate: receipt.clone(), - backing_group: *backing_group, - our_assignment: assignments.get(core).map(|a| a.clone().into()), - }) - } - ).map_err(|e| SubsystemError::with_origin("approval-voting", e))?; - approval_meta.push(BlockApprovalMeta { - hash: block_hash, - number: block_header.number, - parent_hash: block_header.parent_hash, - candidates: included_candidates.iter().map(|(hash, _, _, _)| *hash).collect(), - slot, - }); - - imported_candidates.push( - BlockImportedCandidates { - block_hash, - block_number: block_header.number, - block_tick, - no_show_duration, - imported_candidates: candidate_entries - .into_iter() - .map(|(h, e)| (h, e.into())) - .collect(), - } - ); - } - - tracing::trace!( - target: LOG_TARGET, - head = ?head, - chain_length = approval_meta.len(), - "Informing distribution of newly imported chain", - ); - - ctx.send_unbounded_message(ApprovalDistributionMessage::NewBlocks(approval_meta).into()); - - Ok(imported_candidates) -} - -#[cfg(test)] -mod tests { - use super::*; - use polkadot_node_subsystem_test_helpers::make_subsystem_context; - use polkadot_node_primitives::approval::{VRFOutput, VRFProof}; - use polkadot_primitives::v1::{SessionInfo, ValidatorIndex}; - use polkadot_node_subsystem::messages::AllMessages; - use sp_core::testing::TaskExecutor; - use sp_runtime::{Digest, DigestItem}; - use sp_consensus_babe::{ - Epoch as BabeEpoch, BabeEpochConfiguration, AllowedSlots, - }; - use sp_consensus_babe::digests::{CompatibleDigestItem, PreDigest, SecondaryVRFPreDigest}; - use sp_keyring::sr25519::Keyring as Sr25519Keyring; - use assert_matches::assert_matches; - use merlin::Transcript; - use std::{pin::Pin, sync::Arc}; - - use crate::{APPROVAL_SESSIONS, criteria, BlockEntry}; - - const DATA_COL: u32 = 0; - const NUM_COLUMNS: u32 = 1; - - const TEST_CONFIG: DatabaseConfig = DatabaseConfig { - col_data: DATA_COL, - }; - - #[derive(Default)] - struct TestDB { - block_entries: HashMap, - candidate_entries: HashMap, - } - - impl DBReader for TestDB { - fn load_block_entry( - &self, - block_hash: &Hash, - ) -> SubsystemResult> { - Ok(self.block_entries.get(block_hash).map(|c| c.clone())) - } - - fn load_candidate_entry( - &self, - candidate_hash: &CandidateHash, - ) -> SubsystemResult> { - Ok(self.candidate_entries.get(candidate_hash).map(|c| c.clone())) - } - - fn load_all_blocks(&self) -> SubsystemResult> { - let mut hashes: Vec<_> = self.block_entries.keys().cloned().collect(); - - hashes.sort_by_key(|k| self.block_entries.get(k).unwrap().block_number()); - - Ok(hashes) - } - } - - #[derive(Default)] - struct MockClock; - - impl crate::time::Clock for MockClock { - fn tick_now(&self) -> Tick { - 42 // chosen by fair dice roll - } - - fn wait(&self, _tick: Tick) -> Pin + Send + 'static>> { - Box::pin(async move { - () - }) - } - } - - fn blank_state() -> State { - State { - session_window: RollingSessionWindow::new(APPROVAL_SESSIONS), - keystore: Arc::new(LocalKeystore::in_memory()), - slot_duration_millis: 6_000, - db: TestDB::default(), - clock: Box::new(MockClock::default()), - assignment_criteria: Box::new(MockAssignmentCriteria), - } - } - - fn single_session_state(index: SessionIndex, info: SessionInfo) - -> State - { - State { - session_window: RollingSessionWindow::with_session_info( - APPROVAL_SESSIONS, - index, - vec![info], - ), - ..blank_state() - } - } - - struct MockAssignmentCriteria; - - impl AssignmentCriteria for MockAssignmentCriteria { - fn compute_assignments( - &self, - _keystore: &LocalKeystore, - _relay_vrf_story: polkadot_node_primitives::approval::RelayVRFStory, - _config: &criteria::Config, - _leaving_cores: Vec<(CandidateHash, polkadot_primitives::v1::CoreIndex, polkadot_primitives::v1::GroupIndex)>, - ) -> HashMap { - HashMap::new() - } - - fn check_assignment_cert( - &self, - _claimed_core_index: polkadot_primitives::v1::CoreIndex, - _validator_index: polkadot_primitives::v1::ValidatorIndex, - _config: &criteria::Config, - _relay_vrf_story: polkadot_node_primitives::approval::RelayVRFStory, - _assignment: &polkadot_node_primitives::approval::AssignmentCert, - _backing_group: polkadot_primitives::v1::GroupIndex, - ) -> Result { - Ok(0) - } - } - - // used for generating assignments where the validity of the VRF doesn't matter. - fn garbage_vrf() -> (VRFOutput, VRFProof) { - let key = Sr25519Keyring::Alice.pair(); - let key: &schnorrkel::Keypair = key.as_ref(); - - let (o, p, _) = key.vrf_sign(Transcript::new(b"test-garbage")); - (VRFOutput(o.to_output()), VRFProof(p)) - } - - fn dummy_session_info(index: SessionIndex) -> SessionInfo { - SessionInfo { - validators: Vec::new(), - discovery_keys: Vec::new(), - assignment_keys: Vec::new(), - validator_groups: Vec::new(), - n_cores: index as _, - zeroth_delay_tranche_width: index as _, - relay_vrf_modulo_samples: index as _, - n_delay_tranches: index as _, - no_show_slots: index as _, - needed_approvals: index as _, - } - } - - - #[test] - fn imported_block_info_is_good() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let session = 5; - let session_info = dummy_session_info(session); - - let slot = Slot::from(10); - - let header = Header { - digest: { - let mut d = Digest::default(); - let (vrf_output, vrf_proof) = garbage_vrf(); - d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF( - SecondaryVRFPreDigest { - authority_index: 0, - slot, - vrf_output, - vrf_proof, - } - ))); - - d - }, - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let hash = header.hash(); - let make_candidate = |para_id| { - let mut r = CandidateReceipt::default(); - r.descriptor.para_id = para_id; - r.descriptor.relay_parent = hash; - r - }; - let candidates = vec![ - (make_candidate(1.into()), CoreIndex(0), GroupIndex(2)), - (make_candidate(2.into()), CoreIndex(1), GroupIndex(3)), - ]; - - - let inclusion_events = candidates.iter().cloned() - .map(|(r, c, g)| CandidateEvent::CandidateIncluded(r, Vec::new().into(), c, g)) - .collect::>(); - - let test_fut = { - let included_candidates = candidates.iter() - .map(|(r, c, g)| (r.hash(), r.clone(), *c, *g)) - .collect::>(); - - let session_window = RollingSessionWindow::with_session_info( - APPROVAL_SESSIONS, - session, - vec![session_info], - ); - - let header = header.clone(); - Box::pin(async move { - let env = ImportedBlockInfoEnv { - session_window: &session_window, - assignment_criteria: &MockAssignmentCriteria, - keystore: &LocalKeystore::in_memory(), - }; - - let info = imported_block_info( - &mut ctx, - env, - hash, - &header, - ).await.unwrap().unwrap(); - - assert_eq!(info.included_candidates, included_candidates); - assert_eq!(info.session_index, session); - assert!(info.assignments.is_empty()); - assert_eq!(info.n_validators, 0); - assert_eq!(info.slot, slot); - assert!(info.force_approve.is_none()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CandidateEvents(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(inclusion_events)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = c_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CurrentBabeEpoch(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(BabeEpoch { - epoch_index: session as _, - start_slot: Slot::from(0), - duration: 200, - authorities: vec![(Sr25519Keyring::Alice.public().into(), 1)], - randomness: [0u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: AllowedSlots::PrimarySlots, - }, - })); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn imported_block_info_fails_if_no_babe_vrf() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let session = 5; - let session_info = dummy_session_info(session); - - let header = Header { - digest: Digest::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let hash = header.hash(); - let make_candidate = |para_id| { - let mut r = CandidateReceipt::default(); - r.descriptor.para_id = para_id; - r.descriptor.relay_parent = hash; - r - }; - let candidates = vec![ - (make_candidate(1.into()), CoreIndex(0), GroupIndex(2)), - (make_candidate(2.into()), CoreIndex(1), GroupIndex(3)), - ]; - - let inclusion_events = candidates.iter().cloned() - .map(|(r, c, g)| CandidateEvent::CandidateIncluded(r, Vec::new().into(), c, g)) - .collect::>(); - - let test_fut = { - let session_window = RollingSessionWindow::with_session_info( - APPROVAL_SESSIONS, - session, - vec![session_info], - ); - - let header = header.clone(); - Box::pin(async move { - let env = ImportedBlockInfoEnv { - session_window: &session_window, - assignment_criteria: &MockAssignmentCriteria, - keystore: &LocalKeystore::in_memory(), - }; - - let info = imported_block_info( - &mut ctx, - env, - hash, - &header, - ).await.unwrap(); - - assert!(info.is_none()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CandidateEvents(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(inclusion_events)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = c_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CurrentBabeEpoch(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(BabeEpoch { - epoch_index: session as _, - start_slot: Slot::from(0), - duration: 200, - authorities: vec![(Sr25519Keyring::Alice.public().into(), 1)], - randomness: [0u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: AllowedSlots::PrimarySlots, - }, - })); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn imported_block_info_fails_if_unknown_session() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let session = 5; - - let header = Header { - digest: Digest::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let hash = header.hash(); - let make_candidate = |para_id| { - let mut r = CandidateReceipt::default(); - r.descriptor.para_id = para_id; - r.descriptor.relay_parent = hash; - r - }; - let candidates = vec![ - (make_candidate(1.into()), CoreIndex(0), GroupIndex(2)), - (make_candidate(2.into()), CoreIndex(1), GroupIndex(3)), - ]; - - let inclusion_events = candidates.iter().cloned() - .map(|(r, c, g)| CandidateEvent::CandidateIncluded(r, Vec::new().into(), c, g)) - .collect::>(); - - let test_fut = { - let session_window = RollingSessionWindow::new(APPROVAL_SESSIONS); - - let header = header.clone(); - Box::pin(async move { - let env = ImportedBlockInfoEnv { - session_window: &session_window, - assignment_criteria: &MockAssignmentCriteria, - keystore: &LocalKeystore::in_memory(), - }; - - let info = imported_block_info( - &mut ctx, - env, - hash, - &header, - ).await.unwrap(); - - assert!(info.is_none()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CandidateEvents(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(inclusion_events)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = c_tx.send(Ok(session)); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn imported_block_info_extracts_force_approve() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let session = 5; - let session_info = dummy_session_info(session); - - let slot = Slot::from(10); - - let header = Header { - digest: { - let mut d = Digest::default(); - let (vrf_output, vrf_proof) = garbage_vrf(); - d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF( - SecondaryVRFPreDigest { - authority_index: 0, - slot, - vrf_output, - vrf_proof, - } - ))); - - d.push(ConsensusLog::ForceApprove(3).into()); - - d - }, - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let hash = header.hash(); - let make_candidate = |para_id| { - let mut r = CandidateReceipt::default(); - r.descriptor.para_id = para_id; - r.descriptor.relay_parent = hash; - r - }; - let candidates = vec![ - (make_candidate(1.into()), CoreIndex(0), GroupIndex(2)), - (make_candidate(2.into()), CoreIndex(1), GroupIndex(3)), - ]; - - - let inclusion_events = candidates.iter().cloned() - .map(|(r, c, g)| CandidateEvent::CandidateIncluded(r, Vec::new().into(), c, g)) - .collect::>(); - - let test_fut = { - let included_candidates = candidates.iter() - .map(|(r, c, g)| (r.hash(), r.clone(), *c, *g)) - .collect::>(); - - let session_window = RollingSessionWindow::with_session_info( - APPROVAL_SESSIONS, - session, - vec![session_info], - ); - - let header = header.clone(); - Box::pin(async move { - let env = ImportedBlockInfoEnv { - session_window: &session_window, - assignment_criteria: &MockAssignmentCriteria, - keystore: &LocalKeystore::in_memory(), - }; - - let info = imported_block_info( - &mut ctx, - env, - hash, - &header, - ).await.unwrap().unwrap(); - - assert_eq!(info.included_candidates, included_candidates); - assert_eq!(info.session_index, session); - assert!(info.assignments.is_empty()); - assert_eq!(info.n_validators, 0); - assert_eq!(info.slot, slot); - assert_eq!(info.force_approve, Some(3)); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CandidateEvents(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(inclusion_events)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = c_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CurrentBabeEpoch(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(BabeEpoch { - epoch_index: session as _, - start_slot: Slot::from(0), - duration: 200, - authorities: vec![(Sr25519Keyring::Alice.public().into(), 1)], - randomness: [0u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: AllowedSlots::PrimarySlots, - }, - })); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn insta_approval_works() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let session = 5; - let irrelevant = 666; - let session_info = SessionInfo { - validators: vec![Sr25519Keyring::Alice.public().into(); 6], - discovery_keys: Vec::new(), - assignment_keys: Vec::new(), - validator_groups: vec![vec![ValidatorIndex(0); 5], vec![ValidatorIndex(0); 2]], - n_cores: 6, - needed_approvals: 2, - zeroth_delay_tranche_width: irrelevant, - relay_vrf_modulo_samples: irrelevant, - n_delay_tranches: irrelevant, - no_show_slots: irrelevant, - }; - - let slot = Slot::from(10); - - let parent_hash = Hash::repeat_byte(0x01); - - let header = Header { - digest: { - let mut d = Digest::default(); - let (vrf_output, vrf_proof) = garbage_vrf(); - d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF( - SecondaryVRFPreDigest { - authority_index: 0, - slot, - vrf_output, - vrf_proof, - } - ))); - - d - }, - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash, - }; - - let hash = header.hash(); - let make_candidate = |para_id| { - let mut r = CandidateReceipt::default(); - r.descriptor.para_id = para_id; - r.descriptor.relay_parent = hash; - r - }; - let candidates = vec![ - (make_candidate(1.into()), CoreIndex(0), GroupIndex(0)), - (make_candidate(2.into()), CoreIndex(1), GroupIndex(1)), - ]; - let inclusion_events = candidates.iter().cloned() - .map(|(r, c, g)| CandidateEvent::CandidateIncluded(r, Vec::new().into(), c, g)) - .collect::>(); - - let mut state = single_session_state(session, session_info); - state.db.block_entries.insert( - parent_hash.clone(), - crate::approval_db::v1::BlockEntry { - block_hash: parent_hash.clone(), - parent_hash: Default::default(), - block_number: 4, - session, - slot, - relay_vrf_story: Default::default(), - candidates: Vec::new(), - approved_bitfield: Default::default(), - children: Vec::new(), - }.into(), - ); - - let db_writer = kvdb_memorydb::create(NUM_COLUMNS); - - let test_fut = { - Box::pin(async move { - let result = handle_new_head( - &mut ctx, - &mut state, - &db_writer, - TEST_CONFIG, - hash, - &Some(1), - ).await.unwrap(); - - assert_eq!(result.len(), 1); - let candidates = &result[0].imported_candidates; - assert_eq!(candidates.len(), 2); - assert_eq!(candidates[0].1.approvals().len(), 6); - assert_eq!(candidates[1].1.approvals().len(), 6); - // the first candidate should be insta-approved - // the second should not - let entry: BlockEntry = crate::approval_db::v1::load_block_entry( - &db_writer, - &TEST_CONFIG, - &hash, - ) - .unwrap() - .unwrap() - .into(); - assert!(entry.is_candidate_approved(&candidates[0].0)); - assert!(!entry.is_candidate_approved(&candidates[1].0)); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - h, - tx, - )) => { - assert_eq!(h, hash); - let _ = tx.send(Ok(Some(header.clone()))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, parent_hash.clone()); - let _ = c_tx.send(Ok(session)); - } - ); - - // determine_new_blocks exits early as the parent_hash is in the DB - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CandidateEvents(c_tx), - )) => { - assert_eq!(h, hash.clone()); - let _ = c_tx.send(Ok(inclusion_events)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(c_tx), - )) => { - assert_eq!(h, parent_hash.clone()); - let _ = c_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::CurrentBabeEpoch(c_tx), - )) => { - assert_eq!(h, hash); - let _ = c_tx.send(Ok(BabeEpoch { - epoch_index: session as _, - start_slot: Slot::from(0), - duration: 200, - authorities: vec![(Sr25519Keyring::Alice.public().into(), 1)], - randomness: [0u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: AllowedSlots::PrimarySlots, - }, - })); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ApprovalDistribution(ApprovalDistributionMessage::NewBlocks( - approval_meta - )) => { - assert_eq!(approval_meta.len(), 1); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } -} diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs deleted file mode 100644 index 54943c40b660..000000000000 --- a/node/core/approval-voting/src/lib.rs +++ /dev/null @@ -1,2429 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Approval Voting Subsystem. -//! -//! This subsystem is responsible for determining candidates to do approval checks -//! on, performing those approval checks, and tracking the assignments and approvals -//! of others. It uses this information to determine when candidates and blocks have -//! been sufficiently approved to finalize. - -use polkadot_node_subsystem::{ - messages::{ - AssignmentCheckError, AssignmentCheckResult, ApprovalCheckError, ApprovalCheckResult, - ApprovalVotingMessage, RuntimeApiMessage, RuntimeApiRequest, ChainApiMessage, - ApprovalDistributionMessage, CandidateValidationMessage, - AvailabilityRecoveryMessage, - }, - errors::RecoveryError, - Subsystem, SubsystemContext, SubsystemError, SubsystemResult, SpawnedSubsystem, - FromOverseer, OverseerSignal, SubsystemSender, -}; -use polkadot_node_subsystem_util::{ - TimeoutExt, - metrics::{self, prometheus}, - rolling_session_window::RollingSessionWindow, -}; -use polkadot_primitives::v1::{ - ValidatorIndex, Hash, SessionIndex, SessionInfo, CandidateHash, - CandidateReceipt, BlockNumber, - ValidatorPair, ValidatorSignature, ValidatorId, - CandidateIndex, GroupIndex, ApprovalVote, -}; -use polkadot_node_primitives::ValidationResult; -use polkadot_node_primitives::approval::{ - IndirectAssignmentCert, IndirectSignedApprovalVote, DelayTranche, BlockApprovalMeta, -}; -use polkadot_node_jaeger as jaeger; -use sc_keystore::LocalKeystore; -use sp_consensus::SyncOracle; -use sp_consensus_slots::Slot; -use sp_runtime::traits::AppVerify; -use sp_application_crypto::Pair; -use kvdb::KeyValueDB; - -use futures::prelude::*; -use futures::future::{BoxFuture, RemoteHandle}; -use futures::channel::oneshot; -use futures::stream::FuturesUnordered; - -use std::collections::{BTreeMap, HashMap, HashSet}; -use std::collections::btree_map::Entry; -use std::sync::Arc; -use std::time::Duration; - -use approval_checking::RequiredTranches; -use persisted_entries::{ApprovalEntry, CandidateEntry, BlockEntry}; -use criteria::{AssignmentCriteria, RealAssignmentCriteria}; -use time::{slot_number_to_tick, Tick, Clock, ClockExt, SystemClock}; - -mod approval_checking; -mod approval_db; -mod criteria; -mod import; -mod time; -mod persisted_entries; - -use crate::approval_db::v1::Config as DatabaseConfig; - -#[cfg(test)] -mod tests; - -const APPROVAL_SESSIONS: SessionIndex = 6; -const APPROVAL_CHECKING_TIMEOUT: Duration = Duration::from_secs(120); -const APPROVAL_CACHE_SIZE: usize = 1024; -const LOG_TARGET: &str = "parachain::approval-voting"; - -/// Configuration for the approval voting subsystem -#[derive(Debug, Clone)] -pub struct Config { - /// The column family in the DB where approval-voting data is stored. - pub col_data: u32, - /// The slot duration of the consensus algorithm, in milliseconds. Should be evenly - /// divisible by 500. - pub slot_duration_millis: u64, -} - -// The mode of the approval voting subsystem. It should start in a `Syncing` mode when it first -// starts, and then once it's reached the head of the chain it should move into the `Active` mode. -// -// In `Active` mode, the node is an active participant in the approvals protocol. When syncing, -// the node follows the new incoming blocks and finalized number, but does not yet participate. -// -// When transitioning from `Syncing` to `Active`, the node notifies the `ApprovalDistribution` -// subsystem of all unfinalized blocks and the candidates included within them, as well as all -// votes that the local node itself has cast on candidates within those blocks. -enum Mode { - Active, - Syncing(Box), -} - -/// The approval voting subsystem. -pub struct ApprovalVotingSubsystem { - /// LocalKeystore is needed for assignment keys, but not necessarily approval keys. - /// - /// We do a lot of VRF signing and need the keys to have low latency. - keystore: Arc, - db_config: DatabaseConfig, - slot_duration_millis: u64, - db: Arc, - mode: Mode, - metrics: Metrics, -} - -#[derive(Clone)] -struct MetricsInner { - imported_candidates_total: prometheus::Counter, - assignments_produced: prometheus::Histogram, - approvals_produced_total: prometheus::CounterVec, - no_shows_total: prometheus::Counter, - wakeups_triggered_total: prometheus::Counter, - candidate_approval_time_ticks: prometheus::Histogram, - block_approval_time_ticks: prometheus::Histogram, - time_db_transaction: prometheus::Histogram, - time_recover_and_approve: prometheus::Histogram, -} - -/// Aproval Voting metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_candidate_imported(&self) { - if let Some(metrics) = &self.0 { - metrics.imported_candidates_total.inc(); - } - } - - fn on_assignment_produced(&self, tranche: DelayTranche) { - if let Some(metrics) = &self.0 { - metrics.assignments_produced.observe(tranche as f64); - } - } - - fn on_approval_stale(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_produced_total.with_label_values(&["stale"]).inc() - } - } - - fn on_approval_invalid(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_produced_total.with_label_values(&["invalid"]).inc() - } - } - - fn on_approval_unavailable(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_produced_total.with_label_values(&["unavailable"]).inc() - } - } - - fn on_approval_error(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_produced_total.with_label_values(&["internal error"]).inc() - } - } - - fn on_approval_produced(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_produced_total.with_label_values(&["success"]).inc() - } - } - - fn on_no_shows(&self, n: usize) { - if let Some(metrics) = &self.0 { - metrics.no_shows_total.inc_by(n as u64); - } - } - - fn on_wakeup(&self) { - if let Some(metrics) = &self.0 { - metrics.wakeups_triggered_total.inc(); - } - } - - fn on_candidate_approved(&self, ticks: Tick) { - if let Some(metrics) = &self.0 { - metrics.candidate_approval_time_ticks.observe(ticks as f64); - } - } - - fn on_block_approved(&self, ticks: Tick) { - if let Some(metrics) = &self.0 { - metrics.block_approval_time_ticks.observe(ticks as f64); - } - } - - fn time_db_transaction(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.time_db_transaction.start_timer()) - } - - fn time_recover_and_approve(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.time_recover_and_approve.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register( - registry: &prometheus::Registry, - ) -> std::result::Result { - let metrics = MetricsInner { - imported_candidates_total: prometheus::register( - prometheus::Counter::new( - "parachain_imported_candidates_total", - "Number of candidates imported by the approval voting subsystem", - )?, - registry, - )?, - assignments_produced: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_assignments_produced", - "Assignments and tranches produced by the approval voting subsystem", - ).buckets(vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0, 15.0, 25.0, 40.0, 70.0]), - )?, - registry, - )?, - approvals_produced_total: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_approvals_produced_total", - "Number of approvals produced by the approval voting subsystem", - ), - &["status"] - )?, - registry, - )?, - no_shows_total: prometheus::register( - prometheus::Counter::new( - "parachain_approvals_no_shows_total", - "Number of assignments which became no-shows in the approval voting subsystem", - )?, - registry, - )?, - wakeups_triggered_total: prometheus::register( - prometheus::Counter::new( - "parachain_approvals_wakeups_total", - "Number of times we woke up to process a candidate in the approval voting subsystem", - )?, - registry, - )?, - candidate_approval_time_ticks: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_approvals_candidate_approval_time_ticks", - "Number of ticks (500ms) to approve candidates.", - ).buckets(vec![6.0, 12.0, 18.0, 24.0, 30.0, 36.0, 72.0, 100.0, 144.0]), - )?, - registry, - )?, - block_approval_time_ticks: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_approvals_blockapproval_time_ticks", - "Number of ticks (500ms) to approve blocks.", - ).buckets(vec![6.0, 12.0, 18.0, 24.0, 30.0, 36.0, 72.0, 100.0, 144.0]), - )?, - registry, - )?, - time_db_transaction: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_time_approval_db_transaction", - "Time spent writing an approval db transaction.", - ) - )?, - registry, - )?, - time_recover_and_approve: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_time_recover_and_approve", - "Time spent recovering and approving data in approval voting", - ) - )?, - registry, - )?, - }; - - Ok(Metrics(Some(metrics))) - } -} - -impl ApprovalVotingSubsystem { - /// Create a new approval voting subsystem with the given keystore, config, and database. - pub fn with_config( - config: Config, - db: Arc, - keystore: Arc, - sync_oracle: Box, - metrics: Metrics, - ) -> Self { - ApprovalVotingSubsystem { - keystore, - slot_duration_millis: config.slot_duration_millis, - db, - db_config: DatabaseConfig { - col_data: config.col_data, - }, - mode: Mode::Syncing(sync_oracle), - metrics, - } - } -} - -impl Subsystem for ApprovalVotingSubsystem - where C: SubsystemContext -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = run::( - ctx, - self, - Box::new(SystemClock), - Box::new(RealAssignmentCriteria), - ) - .map_err(|e| SubsystemError::with_origin("approval-voting", e)) - .boxed(); - - SpawnedSubsystem { - name: "approval-voting-subsystem", - future, - } - } -} - -#[derive(Debug, Clone)] -struct ApprovalVoteRequest { - validator_index: ValidatorIndex, - block_hash: Hash, -} - -#[derive(Default)] -struct Wakeups { - // Tick -> [(Relay Block, Candidate Hash)] - wakeups: BTreeMap>, - reverse_wakeups: HashMap<(Hash, CandidateHash), Tick>, - block_numbers: BTreeMap>, -} - -impl Wakeups { - // Returns the first tick there exist wakeups for, if any. - fn first(&self) -> Option { - self.wakeups.keys().next().map(|t| *t) - } - - fn note_block(&mut self, block_hash: Hash, block_number: BlockNumber) { - self.block_numbers.entry(block_number).or_default().insert(block_hash); - } - - // Schedules a wakeup at the given tick. no-op if there is already an earlier or equal wake-up - // for these values. replaces any later wakeup. - fn schedule( - &mut self, - block_hash: Hash, - block_number: BlockNumber, - candidate_hash: CandidateHash, - tick: Tick, - ) { - if let Some(prev) = self.reverse_wakeups.get(&(block_hash, candidate_hash)) { - if prev <= &tick { return } - - // we are replacing previous wakeup with an earlier one. - if let Entry::Occupied(mut entry) = self.wakeups.entry(*prev) { - if let Some(pos) = entry.get().iter() - .position(|x| x == &(block_hash, candidate_hash)) - { - entry.get_mut().remove(pos); - } - - if entry.get().is_empty() { - let _ = entry.remove_entry(); - } - } - } else { - self.note_block(block_hash, block_number); - } - - self.reverse_wakeups.insert((block_hash, candidate_hash), tick); - self.wakeups.entry(tick).or_default().push((block_hash, candidate_hash)); - } - - fn prune_finalized_wakeups(&mut self, finalized_number: BlockNumber) { - let after = self.block_numbers.split_off(&(finalized_number + 1)); - let pruned_blocks: HashSet<_> = std::mem::replace(&mut self.block_numbers, after) - .into_iter() - .flat_map(|(_number, hashes)| hashes) - .collect(); - - let mut pruned_wakeups = BTreeMap::new(); - self.reverse_wakeups.retain(|&(ref h, ref c_h), tick| { - let live = !pruned_blocks.contains(h); - if !live { - pruned_wakeups.entry(*tick) - .or_insert_with(HashSet::new) - .insert((*h, *c_h)); - } - live - }); - - for (tick, pruned) in pruned_wakeups { - if let Entry::Occupied(mut entry) = self.wakeups.entry(tick) { - entry.get_mut().retain(|wakeup| !pruned.contains(wakeup)); - if entry.get().is_empty() { - let _ = entry.remove(); - } - } - } - } - - // Get the wakeup for a particular block/candidate combo, if any. - fn wakeup_for(&self, block_hash: Hash, candidate_hash: CandidateHash) -> Option { - self.reverse_wakeups.get(&(block_hash, candidate_hash)).map(|t| *t) - } - - // Returns the next wakeup. this future never returns if there are no wakeups. - async fn next(&mut self, clock: &(dyn Clock + Sync)) -> (Tick, Hash, CandidateHash) { - match self.first() { - None => future::pending().await, - Some(tick) => { - clock.wait(tick).await; - match self.wakeups.entry(tick) { - Entry::Vacant(_) => panic!("entry is known to exist since `first` was `Some`; qed"), - Entry::Occupied(mut entry) => { - let (hash, candidate_hash) = entry.get_mut().pop() - .expect("empty entries are removed here and in `schedule`; no other mutation of this map; qed"); - - if entry.get().is_empty() { - let _ = entry.remove(); - } - - self.reverse_wakeups.remove(&(hash, candidate_hash)); - - (tick, hash, candidate_hash) - } - } - } - } - } -} - -/// A read-only handle to a database. -trait DBReader { - fn load_block_entry( - &self, - block_hash: &Hash, - ) -> SubsystemResult>; - - fn load_candidate_entry( - &self, - candidate_hash: &CandidateHash, - ) -> SubsystemResult>; - - fn load_all_blocks(&self) -> SubsystemResult>; -} - -// This is a submodule to enforce opacity of the inner DB type. -mod approval_db_v1_reader { - use super::{ - DBReader, KeyValueDB, Hash, CandidateHash, BlockEntry, CandidateEntry, - SubsystemResult, SubsystemError, DatabaseConfig, approval_db, - }; - - /// A DB reader that uses the approval-db V1 under the hood. - pub(super) struct ApprovalDBV1Reader { - inner: T, - config: DatabaseConfig, - } - - impl ApprovalDBV1Reader { - pub(super) fn new(inner: T, config: DatabaseConfig) -> Self { - ApprovalDBV1Reader { - inner, - config, - } - } - } - - impl<'a, T: 'a> DBReader for ApprovalDBV1Reader - where T: std::ops::Deref - { - fn load_block_entry( - &self, - block_hash: &Hash, - ) -> SubsystemResult> { - approval_db::v1::load_block_entry(&*self.inner, &self.config, block_hash) - .map(|e| e.map(Into::into)) - .map_err(|e| SubsystemError::with_origin("approval-voting", e)) - } - - fn load_candidate_entry( - &self, - candidate_hash: &CandidateHash, - ) -> SubsystemResult> { - approval_db::v1::load_candidate_entry(&*self.inner, &self.config, candidate_hash) - .map(|e| e.map(Into::into)) - .map_err(|e| SubsystemError::with_origin("approval-voting", e)) - } - - fn load_all_blocks(&self) -> SubsystemResult> { - approval_db::v1::load_all_blocks(&*self.inner, &self.config) - .map_err(|e| SubsystemError::with_origin("approval-voting", e)) - } - } -} -use approval_db_v1_reader::ApprovalDBV1Reader; - -struct ApprovalStatus { - required_tranches: RequiredTranches, - tranche_now: DelayTranche, - block_tick: Tick, -} - -#[derive(Copy, Clone)] -enum ApprovalOutcome { - Approved, - Failed, - TimedOut, -} - -struct ApprovalState { - validator_index: ValidatorIndex, - candidate_hash: CandidateHash, - approval_outcome: ApprovalOutcome, -} - -impl ApprovalState { - fn approved( - validator_index: ValidatorIndex, - candidate_hash: CandidateHash, - ) -> Self { - Self { - validator_index, - candidate_hash, - approval_outcome: ApprovalOutcome::Approved, - } - } - fn failed( - validator_index: ValidatorIndex, - candidate_hash: CandidateHash, - ) -> Self { - Self { - validator_index, - candidate_hash, - approval_outcome: ApprovalOutcome::Failed, - } - } -} - -struct CurrentlyCheckingSet { - candidate_hash_map: HashMap>, - currently_checking: FuturesUnordered>, -} - -impl Default for CurrentlyCheckingSet { - fn default() -> Self { - Self { - candidate_hash_map: HashMap::new(), - currently_checking: FuturesUnordered::new(), - } - } -} - -impl CurrentlyCheckingSet { - // This function will lazily launch approval voting work whenever the - // candidate is not already undergoing validation. - pub async fn insert_relay_block_hash( - &mut self, - candidate_hash: CandidateHash, - validator_index: ValidatorIndex, - relay_block: Hash, - launch_work: impl Future>>, - ) -> SubsystemResult<()> { - let val = self.candidate_hash_map - .entry(candidate_hash) - .or_insert(Default::default()); - - if let Err(k) = val.binary_search_by_key(&relay_block, |v| *v) { - let _ = val.insert(k, relay_block); - let work = launch_work.await?; - self.currently_checking.push( - Box::pin(async move { - match work.timeout(APPROVAL_CHECKING_TIMEOUT).await { - None => ApprovalState { - candidate_hash, - validator_index, - approval_outcome: ApprovalOutcome::TimedOut, - }, - Some(approval_state) => approval_state, - } - }) - ); - } - - Ok(()) - } - - pub async fn next( - &mut self, - approvals_cache: &mut lru::LruCache, - ) -> (Vec, ApprovalState) { - if !self.currently_checking.is_empty() { - if let Some(approval_state) = self.currently_checking - .next() - .await - { - let out = self.candidate_hash_map.remove(&approval_state.candidate_hash).unwrap_or_default(); - approvals_cache.put(approval_state.candidate_hash.clone(), approval_state.approval_outcome.clone()); - return (out, approval_state); - } - } - - future::pending().await - } -} - -struct State { - session_window: RollingSessionWindow, - keystore: Arc, - slot_duration_millis: u64, - db: T, - clock: Box, - assignment_criteria: Box, -} - -impl State { - fn session_info(&self, i: SessionIndex) -> Option<&SessionInfo> { - self.session_window.session_info(i) - } - - // Compute the required tranches for approval for this block and candidate combo. - // Fails if there is no approval entry for the block under the candidate or no candidate entry - // under the block, or if the session is out of bounds. - fn approval_status<'a, 'b>( - &'a self, - block_entry: &'a BlockEntry, - candidate_entry: &'b CandidateEntry, - ) -> Option<(&'b ApprovalEntry, ApprovalStatus)> { - let session_info = match self.session_info(block_entry.session()) { - Some(s) => s, - None => { - tracing::warn!(target: LOG_TARGET, "Unknown session info for {}", block_entry.session()); - return None; - } - }; - let block_hash = block_entry.block_hash(); - - let tranche_now = self.clock.tranche_now(self.slot_duration_millis, block_entry.slot()); - let block_tick = slot_number_to_tick(self.slot_duration_millis, block_entry.slot()); - let no_show_duration = slot_number_to_tick( - self.slot_duration_millis, - Slot::from(u64::from(session_info.no_show_slots)), - ); - - if let Some(approval_entry) = candidate_entry.approval_entry(&block_hash) { - let required_tranches = approval_checking::tranches_to_approve( - approval_entry, - candidate_entry.approvals(), - tranche_now, - block_tick, - no_show_duration, - session_info.needed_approvals as _ - ); - - let status = ApprovalStatus { - required_tranches, - block_tick, - tranche_now, - }; - - Some((approval_entry, status)) - } else { - None - } - } -} - -#[derive(Debug, Clone)] -enum Action { - ScheduleWakeup { - block_hash: Hash, - block_number: BlockNumber, - candidate_hash: CandidateHash, - tick: Tick, - }, - WriteBlockEntry(BlockEntry), - WriteCandidateEntry(CandidateHash, CandidateEntry), - LaunchApproval { - candidate_hash: CandidateHash, - indirect_cert: IndirectAssignmentCert, - assignment_tranche: DelayTranche, - relay_block_hash: Hash, - candidate_index: CandidateIndex, - session: SessionIndex, - candidate: CandidateReceipt, - backing_group: GroupIndex, - }, - IssueApproval(CandidateHash, ApprovalVoteRequest), - BecomeActive, - Conclude, -} - -async fn run( - mut ctx: C, - mut subsystem: ApprovalVotingSubsystem, - clock: Box, - assignment_criteria: Box, -) -> SubsystemResult<()> - where C: SubsystemContext -{ - let mut state = State { - session_window: RollingSessionWindow::new(APPROVAL_SESSIONS), - keystore: subsystem.keystore, - slot_duration_millis: subsystem.slot_duration_millis, - db: ApprovalDBV1Reader::new(subsystem.db.clone(), subsystem.db_config.clone()), - clock, - assignment_criteria, - }; - - let mut wakeups = Wakeups::default(); - let mut currently_checking_set = CurrentlyCheckingSet::default(); - let mut approvals_cache = lru::LruCache::new(APPROVAL_CACHE_SIZE); - - let mut last_finalized_height: Option = None; - - let db_writer = &*subsystem.db; - - loop { - let actions = futures::select! { - (tick, woken_block, woken_candidate) = wakeups.next(&*state.clock).fuse() => { - subsystem.metrics.on_wakeup(); - process_wakeup( - &mut state, - woken_block, - woken_candidate, - tick, - )? - } - next_msg = ctx.recv().fuse() => { - let mut actions = handle_from_overseer( - &mut ctx, - &mut state, - &subsystem.metrics, - db_writer, - subsystem.db_config, - next_msg?, - &mut last_finalized_height, - &mut wakeups, - ).await?; - - if let Mode::Syncing(ref mut oracle) = subsystem.mode { - if !oracle.is_major_syncing() { - // note that we're active before processing other actions. - actions.insert(0, Action::BecomeActive) - } - } - - actions - } - approval_state = currently_checking_set.next(&mut approvals_cache).fuse() => { - let mut actions = Vec::new(); - let ( - relay_block_hashes, - ApprovalState { - validator_index, - candidate_hash, - approval_outcome, - } - ) = approval_state; - - if matches!(approval_outcome, ApprovalOutcome::Approved) { - let mut approvals: Vec = relay_block_hashes - .into_iter() - .map(|block_hash| - Action::IssueApproval( - candidate_hash, - ApprovalVoteRequest { - validator_index, - block_hash, - }, - ) - ) - .collect(); - actions.append(&mut approvals); - } - - actions - } - }; - - if handle_actions( - &mut ctx, - &mut state, - &subsystem.metrics, - &mut wakeups, - &mut currently_checking_set, - &mut approvals_cache, - db_writer, - subsystem.db_config, - &mut subsystem.mode, - actions, - ).await? { - break; - } - } - - Ok(()) -} - -// Handle actions is a function that accepts a set of instructions -// and subsequently updates the underlying approvals_db in accordance -// with the linear set of instructions passed in. Therefore, actions -// must be processed in series to ensure that earlier actions are not -// negated/corrupted by later actions being executed out-of-order. -// -// However, certain Actions can cause additional actions to need to be -// processed by this function. In order to preserve linearity, we would -// need to handle these newly generated actions before we finalize -// completing additional actions in the submitted sequence of actions. -// -// Since recursive async functions are not not stable yet, we are -// forced to modify the actions iterator on the fly whenever a new set -// of actions are generated by handling a single action. -// -// This particular problem statement is specified in issue 3311: -// https://github.com/paritytech/polkadot/issues/3311 -// -// returns `true` if any of the actions was a `Conclude` command. -async fn handle_actions( - ctx: &mut impl SubsystemContext, - state: &mut State, - metrics: &Metrics, - wakeups: &mut Wakeups, - currently_checking_set: &mut CurrentlyCheckingSet, - approvals_cache: &mut lru::LruCache, - db: &dyn KeyValueDB, - db_config: DatabaseConfig, - mode: &mut Mode, - actions: Vec, -) -> SubsystemResult { - let mut transaction = approval_db::v1::Transaction::new(db_config); - let mut conclude = false; - - let mut actions_iter = actions.into_iter(); - while let Some(action) = actions_iter.next() { - match action { - Action::ScheduleWakeup { - block_hash, - block_number, - candidate_hash, - tick, - } => { - wakeups.schedule(block_hash, block_number, candidate_hash, tick) - } - Action::WriteBlockEntry(block_entry) => { - transaction.put_block_entry(block_entry.into()); - } - Action::WriteCandidateEntry(candidate_hash, candidate_entry) => { - transaction.put_candidate_entry(candidate_hash, candidate_entry.into()); - } - Action::IssueApproval(candidate_hash, approval_request) => { - let mut sender = ctx.sender().clone(); - // Note that the IssueApproval action will create additional - // actions that will need to all be processed before we can - // handle the next action in the set passed to the ambient - // function. - // - // In order to achieve this, we append the existing iterator - // to the end of the iterator made up of these newly generated - // actions. - // - // Note that chaining these iterators is O(n) as we must consume - // the prior iterator. - let next_actions: Vec = issue_approval( - &mut sender, - state, - metrics, - candidate_hash, - approval_request, - )?.into_iter().map(|v| v.clone()).chain(actions_iter).collect(); - actions_iter = next_actions.into_iter(); - } - Action::LaunchApproval { - candidate_hash, - indirect_cert, - assignment_tranche, - relay_block_hash, - candidate_index, - session, - candidate, - backing_group, - } => { - // Don't launch approval work if the node is syncing. - if let Mode::Syncing(_) = *mode { continue } - - metrics.on_assignment_produced(assignment_tranche); - let block_hash = indirect_cert.block_hash; - let validator_index = indirect_cert.validator; - - ctx.send_unbounded_message(ApprovalDistributionMessage::DistributeAssignment( - indirect_cert, - candidate_index, - ).into()); - - match approvals_cache.get(&candidate_hash) { - Some(ApprovalOutcome::Approved) => { - let new_actions: Vec = std::iter::once( - Action::IssueApproval( - candidate_hash, - ApprovalVoteRequest { - validator_index, - block_hash, - } - ) - ) - .map(|v| v.clone()) - .chain(actions_iter) - .collect(); - actions_iter = new_actions.into_iter(); - }, - None => { - let ctx = &mut *ctx; - currently_checking_set.insert_relay_block_hash( - candidate_hash, - validator_index, - relay_block_hash, - async move { - launch_approval( - ctx, - metrics.clone(), - session, - candidate, - validator_index, - block_hash, - backing_group, - ).await - } - ).await?; - } - Some(_) => {}, - } - } - Action::BecomeActive => { - *mode = Mode::Active; - - let messages = distribution_messages_for_activation( - ApprovalDBV1Reader::new(db, db_config) - )?; - - ctx.send_messages(messages.into_iter().map(Into::into)).await; - } - Action::Conclude => { conclude = true; } - } - } - - if !transaction.is_empty() { - let _timer = metrics.time_db_transaction(); - - transaction.write(db) - .map_err(|e| SubsystemError::with_origin("approval-voting", e))?; - } - - Ok(conclude) -} - -fn distribution_messages_for_activation<'a>( - db: impl DBReader + 'a, -) -> SubsystemResult> { - let all_blocks = db.load_all_blocks()?; - - let mut approval_meta = Vec::with_capacity(all_blocks.len()); - let mut messages = Vec::new(); - - messages.push(ApprovalDistributionMessage::NewBlocks(Vec::new())); // dummy value. - - for block_hash in all_blocks { - let block_entry = match db.load_block_entry(&block_hash)? { - Some(b) => b, - None => { - tracing::warn!( - target: LOG_TARGET, - ?block_hash, - "Missing block entry", - ); - - continue - } - }; - approval_meta.push(BlockApprovalMeta { - hash: block_hash, - number: block_entry.block_number(), - parent_hash: block_entry.parent_hash(), - candidates: block_entry.candidates().iter().map(|(_, c_hash)| *c_hash).collect(), - slot: block_entry.slot(), - }); - - for (i, (_, candidate_hash)) in block_entry.candidates().iter().enumerate() { - let candidate_entry = match db.load_candidate_entry(&candidate_hash)? { - Some(c) => c, - None => { - tracing::warn!( - target: LOG_TARGET, - ?block_hash, - ?candidate_hash, - "Missing candidate entry", - ); - - continue - } - }; - - match candidate_entry.approval_entry(&block_hash) { - Some(approval_entry) => { - match approval_entry.local_statements() { - (None, None) | (None, Some(_)) => {}, // second is impossible case. - (Some(assignment), None) => { - messages.push(ApprovalDistributionMessage::DistributeAssignment( - IndirectAssignmentCert { - block_hash, - validator: assignment.validator_index(), - cert: assignment.cert().clone(), - }, - i as _, - )); - } - (Some(assignment), Some(approval_sig)) => { - messages.push(ApprovalDistributionMessage::DistributeAssignment( - IndirectAssignmentCert { - block_hash, - validator: assignment.validator_index(), - cert: assignment.cert().clone(), - }, - i as _, - )); - - messages.push(ApprovalDistributionMessage::DistributeApproval( - IndirectSignedApprovalVote { - block_hash, - candidate_index: i as _, - validator: assignment.validator_index(), - signature: approval_sig, - } - )) - } - } - } - None => { - tracing::warn!( - target: LOG_TARGET, - ?block_hash, - ?candidate_hash, - "Missing approval entry", - ); - } - } - } - } - - messages[0] = ApprovalDistributionMessage::NewBlocks(approval_meta); - Ok(messages) -} - -// Handle an incoming signal from the overseer. Returns true if execution should conclude. -async fn handle_from_overseer( - ctx: &mut impl SubsystemContext, - state: &mut State, - metrics: &Metrics, - db_writer: &dyn KeyValueDB, - db_config: DatabaseConfig, - x: FromOverseer, - last_finalized_height: &mut Option, - wakeups: &mut Wakeups, -) -> SubsystemResult> { - - let actions = match x { - FromOverseer::Signal(OverseerSignal::ActiveLeaves(update)) => { - let mut actions = Vec::new(); - - for activated in update.activated { - let head = activated.hash; - match import::handle_new_head( - ctx, - state, - db_writer, - db_config, - head, - &*last_finalized_height, - ).await { - Err(e) => return Err(SubsystemError::with_origin("db", e)), - Ok(block_imported_candidates) => { - // Schedule wakeups for all imported candidates. - for block_batch in block_imported_candidates { - tracing::debug!( - target: LOG_TARGET, - block_hash = ?block_batch.block_hash, - num_candidates = block_batch.imported_candidates.len(), - "Imported new block.", - ); - - for (c_hash, c_entry) in block_batch.imported_candidates { - metrics.on_candidate_imported(); - - let our_tranche = c_entry - .approval_entry(&block_batch.block_hash) - .and_then(|a| a.our_assignment().map(|a| a.tranche())); - - if let Some(our_tranche) = our_tranche { - let tick = our_tranche as Tick + block_batch.block_tick; - tracing::trace!( - target: LOG_TARGET, - tranche = our_tranche, - candidate_hash = ?c_hash, - block_hash = ?block_batch.block_hash, - block_tick = block_batch.block_tick, - "Scheduling first wakeup.", - ); - - // Our first wakeup will just be the tranche of our assignment, - // if any. This will likely be superseded by incoming assignments - // and approvals which trigger rescheduling. - actions.push(Action::ScheduleWakeup { - block_hash: block_batch.block_hash, - block_number: block_batch.block_number, - candidate_hash: c_hash, - tick, - }); - } - } - } - } - } - } - - actions - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(block_hash, block_number)) => { - *last_finalized_height = Some(block_number); - - approval_db::v1::canonicalize(db_writer, &db_config, block_number, block_hash) - .map_err(|e| SubsystemError::with_origin("db", e))?; - - wakeups.prune_finalized_wakeups(block_number); - - Vec::new() - } - FromOverseer::Signal(OverseerSignal::Conclude) => { - vec![Action::Conclude] - } - FromOverseer::Communication { msg } => match msg { - ApprovalVotingMessage::CheckAndImportAssignment(a, claimed_core, res) => { - let (check_outcome, actions) - = check_and_import_assignment(state, a, claimed_core)?; - let _ = res.send(check_outcome); - actions - } - ApprovalVotingMessage::CheckAndImportApproval(a, res) => { - check_and_import_approval(state, metrics, a, |r| { let _ = res.send(r); })?.0 - } - ApprovalVotingMessage::ApprovedAncestor(target, lower_bound, res ) => { - match handle_approved_ancestor(ctx, &state.db, target, lower_bound, wakeups).await { - Ok(v) => { - let _ = res.send(v); - } - Err(e) => { - let _ = res.send(None); - return Err(e); - } - } - - Vec::new() - } - } - }; - - Ok(actions) -} - -async fn handle_approved_ancestor( - ctx: &mut impl SubsystemContext, - db: &impl DBReader, - target: Hash, - lower_bound: BlockNumber, - wakeups: &Wakeups, -) -> SubsystemResult> { - const MAX_TRACING_WINDOW: usize = 200; - const ABNORMAL_DEPTH_THRESHOLD: usize = 5; - - use bitvec::{order::Lsb0, vec::BitVec}; - - let mut span = jaeger::Span::new(&target, "approved-ancestor") - .with_stage(jaeger::Stage::ApprovalChecking); - - let mut all_approved_max = None; - - let target_number = { - let (tx, rx) = oneshot::channel(); - - ctx.send_message(ChainApiMessage::BlockNumber(target, tx).into()).await; - - match rx.await { - Ok(Ok(Some(n))) => n, - Ok(Ok(None)) => return Ok(None), - Ok(Err(_)) | Err(_) => return Ok(None), - } - }; - - if target_number <= lower_bound { return Ok(None) } - - span.add_string_fmt_debug_tag("target-number", target_number); - span.add_string_fmt_debug_tag("target-hash", target); - - // request ancestors up to but not including the lower bound, - // as a vote on the lower bound is implied if we cannot find - // anything else. - let ancestry = if target_number > lower_bound + 1 { - let (tx, rx) = oneshot::channel(); - - ctx.send_message(ChainApiMessage::Ancestors { - hash: target, - k: (target_number - (lower_bound + 1)) as usize, - response_channel: tx, - }.into()).await; - - match rx.await { - Ok(Ok(a)) => a, - Err(_) | Ok(Err(_)) => return Ok(None), - } - } else { - Vec::new() - }; - - let mut bits: BitVec = Default::default(); - for (i, block_hash) in std::iter::once(target).chain(ancestry).enumerate() { - // Block entries should be present as the assumption is that - // nothing here is finalized. If we encounter any missing block - // entries we can fail. - let entry = match db.load_block_entry(&block_hash)? { - None => { - tracing::trace!{ - target: LOG_TARGET, - "Chain between ({}, {}) and {} not fully known. Forcing vote on {}", - target, - target_number, - lower_bound, - lower_bound, - } - return Ok(None); - } - Some(b) => b, - }; - - // even if traversing millions of blocks this is fairly cheap and always dwarfed by the - // disk lookups. - bits.push(entry.is_fully_approved()); - if entry.is_fully_approved() { - if all_approved_max.is_none() { - // First iteration of the loop is target, i = 0. After that, - // ancestry is moving backwards. - all_approved_max = Some((block_hash, target_number - i as BlockNumber)); - } - } else if bits.len() <= ABNORMAL_DEPTH_THRESHOLD { - all_approved_max = None; - } else { - all_approved_max = None; - - let unapproved: Vec<_> = entry.unapproved_candidates().collect(); - tracing::debug!( - target: LOG_TARGET, - "Block {} is {} blocks deep and has {}/{} candidates unapproved", - block_hash, - bits.len() - 1, - unapproved.len(), - entry.candidates().len(), - ); - - for candidate_hash in unapproved { - match db.load_candidate_entry(&candidate_hash)? { - None => { - tracing::warn!( - target: LOG_TARGET, - ?candidate_hash, - "Missing expected candidate in DB", - ); - - continue; - } - Some(c_entry) => { - match c_entry.approval_entry(&block_hash) { - None => { - tracing::warn!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - "Missing expected approval entry under candidate.", - ); - } - Some(a_entry) => { - let n_assignments = a_entry.n_assignments(); - let n_approvals = c_entry.approvals().count_ones(); - - let status = || format!("{}/{}/{}", - n_assignments, - n_approvals, - a_entry.n_validators(), - ); - - match a_entry.our_assignment() { - None => tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - status = %status(), - "no assignment." - ), - Some(a) => { - let tranche = a.tranche(); - let triggered = a.triggered(); - - let next_wakeup = wakeups.wakeup_for( - block_hash, - candidate_hash, - ); - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - tranche, - ?next_wakeup, - status = %status(), - triggered, - "assigned." - ); - } - } - } - } - } - } - } - } - } - - tracing::trace!( - target: LOG_TARGET, - "approved blocks {}-[{}]-{}", - target_number, - { - // formatting to divide bits by groups of 10. - // when comparing logs on multiple machines where the exact vote - // targets may differ, this grouping is useful. - let mut s = String::with_capacity(bits.len()); - for (i, bit) in bits.iter().enumerate().take(MAX_TRACING_WINDOW) { - s.push(if *bit { '1' } else { '0' }); - if (target_number - i as u32) % 10 == 0 && i != bits.len() - 1 { s.push(' '); } - } - - s - }, - if bits.len() > MAX_TRACING_WINDOW { - format!( - "{}... (truncated due to large window)", - target_number - MAX_TRACING_WINDOW as u32 + 1, - ) - } else { - format!("{}", lower_bound + 1) - }, - ); - - match all_approved_max { - Some((ref hash, ref number)) => { - span.add_uint_tag("approved-number", *number as u64); - span.add_string_fmt_debug_tag("approved-hash", hash); - } - None => { - span.add_string_tag("reached-lower-bound", "true"); - } - } - - Ok(all_approved_max) -} - -// `Option::cmp` treats `None` as less than `Some`. -fn min_prefer_some( - a: Option, - b: Option, -) -> Option { - match (a, b) { - (None, None) => None, - (None, Some(x)) | (Some(x), None) => Some(x), - (Some(x), Some(y)) => Some(std::cmp::min(x, y)), - } -} - -fn schedule_wakeup_action( - approval_entry: &ApprovalEntry, - block_hash: Hash, - block_number: BlockNumber, - candidate_hash: CandidateHash, - block_tick: Tick, - required_tranches: RequiredTranches, -) -> Option { - let maybe_action = match required_tranches { - _ if approval_entry.is_approved() => None, - RequiredTranches::All => None, - RequiredTranches::Exact { next_no_show, .. } => next_no_show.map(|tick| Action::ScheduleWakeup { - block_hash, - block_number, - candidate_hash, - tick, - }), - RequiredTranches::Pending { considered, next_no_show, clock_drift, .. } => { - // select the minimum of `next_no_show`, or the tick of the next non-empty tranche - // after `considered`, including any tranche that might contain our own untriggered - // assignment. - let next_non_empty_tranche = { - let next_announced = approval_entry.tranches().iter() - .skip_while(|t| t.tranche() <= considered) - .map(|t| t.tranche()) - .next(); - - let our_untriggered = approval_entry - .our_assignment() - .and_then(|t| if !t.triggered() && t.tranche() > considered { - Some(t.tranche()) - } else { - None - }); - - // Apply the clock drift to these tranches. - min_prefer_some(next_announced, our_untriggered) - .map(|t| t as Tick + block_tick + clock_drift) - }; - - min_prefer_some(next_non_empty_tranche, next_no_show) - .map(|tick| Action::ScheduleWakeup { - block_hash, - block_number, - candidate_hash, - tick, - }) - } - }; - - match maybe_action { - Some(Action::ScheduleWakeup { ref tick, .. }) => tracing::trace!( - target: LOG_TARGET, - tick, - ?candidate_hash, - ?block_hash, - block_tick, - "Scheduling next wakeup.", - ), - None => tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - block_tick, - "No wakeup needed.", - ), - Some(_) => {} // unreachable - } - - maybe_action -} - -fn check_and_import_assignment( - state: &State, - assignment: IndirectAssignmentCert, - candidate_index: CandidateIndex, -) -> SubsystemResult<(AssignmentCheckResult, Vec)> { - const TICK_TOO_FAR_IN_FUTURE: Tick = 20; // 10 seconds. - - let tick_now = state.clock.tick_now(); - let block_entry = match state.db.load_block_entry(&assignment.block_hash)? { - Some(b) => b, - None => return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::UnknownBlock(assignment.block_hash), - ), Vec::new())), - }; - - let session_info = match state.session_info(block_entry.session()) { - Some(s) => s, - None => { - return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::UnknownSessionIndex(block_entry.session()), - ), Vec::new())); - } - }; - - let (claimed_core_index, assigned_candidate_hash) - = match block_entry.candidate(candidate_index as usize) - { - Some((c, h)) => (*c, *h), - None => return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::InvalidCandidateIndex(candidate_index), - ), Vec::new())), // no candidate at core. - }; - - let mut candidate_entry = match state.db.load_candidate_entry(&assigned_candidate_hash)? { - Some(c) => c, - None => { - return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::InvalidCandidate(candidate_index, assigned_candidate_hash), - ), Vec::new())); - } - }; - - let res = { - // import the assignment. - let approval_entry = match - candidate_entry.approval_entry_mut(&assignment.block_hash) - { - Some(a) => a, - None => return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::Internal(assignment.block_hash, assigned_candidate_hash), - ), Vec::new())), - }; - - let res = state.assignment_criteria.check_assignment_cert( - claimed_core_index, - assignment.validator, - &criteria::Config::from(session_info), - block_entry.relay_vrf_story(), - &assignment.cert, - approval_entry.backing_group(), - ); - - let tranche = match res { - Err(crate::criteria::InvalidAssignment) => return Ok((AssignmentCheckResult::Bad( - AssignmentCheckError::InvalidCert(assignment.validator), - ), Vec::new())), - Ok(tranche) => { - let current_tranche = state.clock.tranche_now( - state.slot_duration_millis, - block_entry.slot(), - ); - - let too_far_in_future = current_tranche + TICK_TOO_FAR_IN_FUTURE as DelayTranche; - - if tranche >= too_far_in_future { - return Ok((AssignmentCheckResult::TooFarInFuture, Vec::new())); - } - - tranche - } - }; - - let is_duplicate = approval_entry.is_assigned(assignment.validator); - approval_entry.import_assignment(tranche, assignment.validator, tick_now); - - if is_duplicate { - AssignmentCheckResult::AcceptedDuplicate - } else { - tracing::trace!( - target: LOG_TARGET, - validator = assignment.validator.0, - candidate_hash = ?assigned_candidate_hash, - para_id = ?candidate_entry.candidate_receipt().descriptor.para_id, - "Imported assignment.", - ); - - AssignmentCheckResult::Accepted - } - }; - - let mut actions = Vec::new(); - - // We've imported a new approval, so we need to schedule a wake-up for when that might no-show. - if let Some((approval_entry, status)) = state.approval_status(&block_entry, &candidate_entry) { - actions.extend(schedule_wakeup_action( - approval_entry, - block_entry.block_hash(), - block_entry.block_number(), - assigned_candidate_hash, - status.block_tick, - status.required_tranches, - )); - } - - // We also write the candidate entry as it now contains the new candidate. - actions.push(Action::WriteCandidateEntry(assigned_candidate_hash, candidate_entry)); - - Ok((res, actions)) -} - -fn check_and_import_approval( - state: &State, - metrics: &Metrics, - approval: IndirectSignedApprovalVote, - with_response: impl FnOnce(ApprovalCheckResult) -> T, -) -> SubsystemResult<(Vec, T)> { - macro_rules! respond_early { - ($e: expr) => { { - let t = with_response($e); - return Ok((Vec::new(), t)); - } } - } - - let block_entry = match state.db.load_block_entry(&approval.block_hash)? { - Some(b) => b, - None => { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::UnknownBlock(approval.block_hash), - )) - } - }; - - let session_info = match state.session_info(block_entry.session()) { - Some(s) => s, - None => { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::UnknownSessionIndex(block_entry.session()), - )) - } - }; - - let approved_candidate_hash = match block_entry.candidate(approval.candidate_index as usize) { - Some((_, h)) => *h, - None => respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::InvalidCandidateIndex(approval.candidate_index), - )) - }; - - let approval_payload = ApprovalVote(approved_candidate_hash) - .signing_payload(block_entry.session()); - - let pubkey = match session_info.validators.get(approval.validator.0 as usize) { - Some(k) => k, - None => respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::InvalidValidatorIndex(approval.validator), - )) - }; - - let approval_sig_valid = approval.signature.verify(approval_payload.as_slice(), pubkey); - - if !approval_sig_valid { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::InvalidSignature(approval.validator), - )) - } - - let candidate_entry = match state.db.load_candidate_entry(&approved_candidate_hash)? { - Some(c) => c, - None => { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::InvalidCandidate(approval.candidate_index, approved_candidate_hash), - )) - } - }; - - // Don't accept approvals until assignment. - match candidate_entry.approval_entry(&approval.block_hash) { - None => { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::Internal(approval.block_hash, approved_candidate_hash), - )) - } - Some(e) if !e.is_assigned(approval.validator) => { - respond_early!(ApprovalCheckResult::Bad( - ApprovalCheckError::NoAssignment(approval.validator), - )) - } - _ => {}, - } - - // importing the approval can be heavy as it may trigger acceptance for a series of blocks. - let t = with_response(ApprovalCheckResult::Accepted); - - tracing::trace!( - target: LOG_TARGET, - validator_index = approval.validator.0, - validator = ?pubkey, - candidate_hash = ?approved_candidate_hash, - para_id = ?candidate_entry.candidate_receipt().descriptor.para_id, - "Importing approval vote", - ); - - let actions = import_checked_approval( - state, - &metrics, - block_entry, - approved_candidate_hash, - candidate_entry, - ApprovalSource::Remote(approval.validator), - ); - - Ok((actions, t)) -} - -enum ApprovalSource { - Remote(ValidatorIndex), - Local(ValidatorIndex, ValidatorSignature), -} - -impl ApprovalSource { - fn validator_index(&self) -> ValidatorIndex { - match *self { - ApprovalSource::Remote(v) | ApprovalSource::Local(v, _) => v, - } - } - - fn is_remote(&self) -> bool { - match *self { - ApprovalSource::Remote(_) => true, - ApprovalSource::Local(_, _) => false, - } - } -} - -// Import an approval vote which is already checked to be valid and corresponding to an assigned -// validator on the candidate and block. This updates the block entry and candidate entry as -// necessary and schedules any further wakeups. -fn import_checked_approval( - state: &State, - metrics: &Metrics, - mut block_entry: BlockEntry, - candidate_hash: CandidateHash, - mut candidate_entry: CandidateEntry, - source: ApprovalSource, -) -> Vec { - let validator_index = source.validator_index(); - - let already_approved_by = candidate_entry.mark_approval(validator_index); - let candidate_approved_in_block = block_entry.is_candidate_approved(&candidate_hash); - - // Check for early exits. - // - // If the candidate was approved - // but not the block, it means that we still need more approvals for the candidate under the - // block. - // - // If the block was approved, but the validator hadn't approved it yet, we should still hold - // onto the approval vote on-disk in case we restart and rebroadcast votes. Otherwise, our - // assignment might manifest as a no-show. - match source { - ApprovalSource::Remote(_) => { - // We don't store remote votes, so we can early exit as long at the candidate is - // already concluded under the block i.e. we don't need more approvals. - if candidate_approved_in_block { - return Vec::new(); - } - } - ApprovalSource::Local(_, _) => { - // We never early return on the local validator. - } - } - - let mut actions = Vec::new(); - let block_hash = block_entry.block_hash(); - let block_number = block_entry.block_number(); - - let (is_approved, status) = if let Some((approval_entry, status)) - = state.approval_status(&block_entry, &candidate_entry) - { - let check = approval_checking::check_approval( - &candidate_entry, - approval_entry, - status.required_tranches.clone(), - ); - - let is_approved = check.is_approved(); - - if is_approved { - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - "Candidate approved under block.", - ); - - let no_shows = check.known_no_shows(); - - let was_block_approved = block_entry.is_fully_approved(); - block_entry.mark_approved_by_hash(&candidate_hash); - let is_block_approved = block_entry.is_fully_approved(); - - if no_shows != 0 { - metrics.on_no_shows(no_shows); - } - - metrics.on_candidate_approved(status.tranche_now as _); - - if is_block_approved && !was_block_approved { - metrics.on_block_approved(status.tranche_now as _); - } - - actions.push(Action::WriteBlockEntry(block_entry)); - } - - (is_approved, status) - } else { - tracing::warn!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - ?validator_index, - "No approval entry for approval under block", - ); - - return Vec::new(); - }; - - { - let approval_entry = candidate_entry.approval_entry_mut(&block_hash) - .expect("Approval entry just fetched; qed"); - - let was_approved = approval_entry.is_approved(); - let newly_approved = is_approved && !was_approved; - - if is_approved { - approval_entry.mark_approved(); - } - - if let ApprovalSource::Local(_, ref sig) = source { - approval_entry.import_approval_sig(sig.clone()); - } - - actions.extend(schedule_wakeup_action( - &approval_entry, - block_hash, - block_number, - candidate_hash, - status.block_tick, - status.required_tranches, - )); - - // We have no need to write the candidate entry if - // - // 1. The source is remote, as we don't store anything new in the approval entry. - // 2. The candidate is not newly approved, as we haven't altered the approval entry's - // approved flag with `mark_approved` above. - // 3. The source had already approved the candidate, as we haven't altered the bitfield. - if !source.is_remote() || newly_approved || !already_approved_by { - // In all other cases, we need to write the candidate entry. - actions.push(Action::WriteCandidateEntry(candidate_hash, candidate_entry)); - } - - } - - actions -} - -fn should_trigger_assignment( - approval_entry: &ApprovalEntry, - candidate_entry: &CandidateEntry, - required_tranches: RequiredTranches, - tranche_now: DelayTranche, -) -> bool { - match approval_entry.our_assignment() { - None => false, - Some(ref assignment) if assignment.triggered() => false, - Some(ref assignment) => { - match required_tranches { - RequiredTranches::All => !approval_checking::check_approval( - &candidate_entry, - &approval_entry, - RequiredTranches::All, - ).is_approved(), - RequiredTranches::Pending { - maximum_broadcast, - clock_drift, - .. - } => { - let drifted_tranche_now - = tranche_now.saturating_sub(clock_drift as DelayTranche); - assignment.tranche() <= maximum_broadcast - && assignment.tranche() <= drifted_tranche_now - } - RequiredTranches::Exact { .. } => { - // indicates that no new assignments are needed at the moment. - false - } - } - } - } -} - -fn process_wakeup( - state: &State, - relay_block: Hash, - candidate_hash: CandidateHash, - expected_tick: Tick, -) -> SubsystemResult> { - let _span = jaeger::Span::from_encodable( - (relay_block, candidate_hash, expected_tick), - "process-approval-wakeup", - ) - .with_relay_parent(relay_block) - .with_candidate(candidate_hash) - .with_stage(jaeger::Stage::ApprovalChecking); - - let block_entry = state.db.load_block_entry(&relay_block)?; - let candidate_entry = state.db.load_candidate_entry(&candidate_hash)?; - - // If either is not present, we have nothing to wakeup. Might have lost a race with finality - let (block_entry, mut candidate_entry) = match (block_entry, candidate_entry) { - (Some(b), Some(c)) => (b, c), - _ => return Ok(Vec::new()), - }; - - let session_info = match state.session_info(block_entry.session()) { - Some(i) => i, - None => { - tracing::warn!( - target: LOG_TARGET, - "Missing session info for live block {} in session {}", - relay_block, - block_entry.session(), - ); - - return Ok(Vec::new()) - } - }; - - let block_tick = slot_number_to_tick(state.slot_duration_millis, block_entry.slot()); - let no_show_duration = slot_number_to_tick( - state.slot_duration_millis, - Slot::from(u64::from(session_info.no_show_slots)), - ); - - let tranche_now = state.clock.tranche_now(state.slot_duration_millis, block_entry.slot()); - - tracing::trace!( - target: LOG_TARGET, - tranche = tranche_now, - ?candidate_hash, - block_hash = ?relay_block, - "Processing wakeup", - ); - - let (should_trigger, backing_group) = { - let approval_entry = match candidate_entry.approval_entry(&relay_block) { - Some(e) => e, - None => return Ok(Vec::new()), - }; - - let tranches_to_approve = approval_checking::tranches_to_approve( - &approval_entry, - candidate_entry.approvals(), - tranche_now, - block_tick, - no_show_duration, - session_info.needed_approvals as _, - ); - - let should_trigger = should_trigger_assignment( - &approval_entry, - &candidate_entry, - tranches_to_approve, - tranche_now, - ); - - (should_trigger, approval_entry.backing_group()) - }; - - let (mut actions, maybe_cert) = if should_trigger { - let maybe_cert = { - let approval_entry = candidate_entry.approval_entry_mut(&relay_block) - .expect("should_trigger only true if this fetched earlier; qed"); - - approval_entry.trigger_our_assignment(state.clock.tick_now()) - }; - - let actions = vec![Action::WriteCandidateEntry(candidate_hash, candidate_entry.clone())]; - - (actions, maybe_cert) - } else { - (Vec::new(), None) - }; - - if let Some((cert, val_index, tranche)) = maybe_cert { - let indirect_cert = IndirectAssignmentCert { - block_hash: relay_block, - validator: val_index, - cert, - }; - - let index_in_candidate = block_entry.candidates().iter() - .position(|(_, h)| &candidate_hash == h); - - if let Some(i) = index_in_candidate { - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - para_id = ?candidate_entry.candidate_receipt().descriptor.para_id, - block_hash = ?relay_block, - "Launching approval work.", - ); - - // sanity: should always be present. - actions.push(Action::LaunchApproval { - candidate_hash, - indirect_cert, - assignment_tranche: tranche, - relay_block_hash: relay_block, - candidate_index: i as _, - session: block_entry.session(), - candidate: candidate_entry.candidate_receipt().clone(), - backing_group, - }); - } - } - - let approval_entry = candidate_entry.approval_entry(&relay_block) - .expect("this function returned earlier if not available; qed"); - - // Although we ran this earlier in the function, we need to run again because we might have - // imported our own assignment, which could change things. - let tranches_to_approve = approval_checking::tranches_to_approve( - &approval_entry, - candidate_entry.approvals(), - tranche_now, - block_tick, - no_show_duration, - session_info.needed_approvals as _, - ); - - actions.extend(schedule_wakeup_action( - &approval_entry, - relay_block, - block_entry.block_number(), - candidate_hash, - block_tick, - tranches_to_approve, - )); - - Ok(actions) -} - -// Launch approval work, returning an `AbortHandle` which corresponds to the background task -// spawned. When the background work is no longer needed, the `AbortHandle` should be dropped -// to cancel the background work and any requests it has spawned. -async fn launch_approval( - ctx: &mut impl SubsystemContext, - metrics: Metrics, - session_index: SessionIndex, - candidate: CandidateReceipt, - validator_index: ValidatorIndex, - block_hash: Hash, - backing_group: GroupIndex, -) -> SubsystemResult> { - let (a_tx, a_rx) = oneshot::channel(); - let (code_tx, code_rx) = oneshot::channel(); - - // The background future returned by this function may - // be dropped before completing. This guard is used to ensure that the approval - // work is correctly counted as stale even if so. - struct StaleGuard(Option); - - impl StaleGuard { - fn take(mut self) -> Metrics { - self.0.take().expect(" - consumed after take; so this cannot be called twice; \ - nothing in this function reaches into the struct to avoid this API; \ - qed - ") - } - } - - impl Drop for StaleGuard { - fn drop(&mut self) { - if let Some(metrics) = self.0.as_ref() { - metrics.on_approval_stale(); - } - } - } - - let candidate_hash = candidate.hash(); - - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - para_id = ?candidate.descriptor.para_id, - "Recovering data.", - ); - - let timer = metrics.time_recover_and_approve(); - ctx.send_message(AvailabilityRecoveryMessage::RecoverAvailableData( - candidate.clone(), - session_index, - Some(backing_group), - a_tx, - ).into()).await; - - ctx.send_message( - RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::ValidationCodeByHash( - candidate.descriptor.validation_code_hash, - code_tx, - ), - ).into() - ).await; - - let candidate = candidate.clone(); - let metrics_guard = StaleGuard(Some(metrics)); - let mut sender = ctx.sender().clone(); - let background = async move { - // Force the move of the timer into the background task. - let _timer = timer; - let _span = jaeger::Span::from_encodable((block_hash, candidate_hash), "launch-approval") - .with_relay_parent(block_hash) - .with_candidate(candidate_hash) - .with_stage(jaeger::Stage::ApprovalChecking); - - let available_data = match a_rx.await { - Err(_) => return ApprovalState::failed( - validator_index, - candidate_hash, - ), - Ok(Ok(a)) => a, - Ok(Err(e)) => { - match &e { - &RecoveryError::Unavailable => { - tracing::warn!( - target: LOG_TARGET, - "Data unavailable for candidate {:?}", - (candidate_hash, candidate.descriptor.para_id), - ); - // do nothing. we'll just be a no-show and that'll cause others to rise up. - metrics_guard.take().on_approval_unavailable(); - } - &RecoveryError::Invalid => { - tracing::warn!( - target: LOG_TARGET, - "Data recovery invalid for candidate {:?}", - (candidate_hash, candidate.descriptor.para_id), - ); - - // TODO: dispute. Either the merkle trie is bad or the erasure root is. - // https://github.com/paritytech/polkadot/issues/2176 - metrics_guard.take().on_approval_invalid(); - } - } - return ApprovalState::failed( - validator_index, - candidate_hash, - ); - } - }; - - let validation_code = match code_rx.await { - Err(_) => - return ApprovalState::failed( - validator_index, - candidate_hash, - ), - Ok(Err(_)) => - return ApprovalState::failed( - validator_index, - candidate_hash, - ), - Ok(Ok(Some(code))) => code, - Ok(Ok(None)) => { - tracing::warn!( - target: LOG_TARGET, - "Validation code unavailable for block {:?} in the state of block {:?} (a recent descendant)", - candidate.descriptor.relay_parent, - block_hash, - ); - - // No dispute necessary, as this indicates that the chain is not behaving - // according to expectations. - metrics_guard.take().on_approval_unavailable(); - return ApprovalState::failed( - validator_index, - candidate_hash, - ); - } - }; - - let (val_tx, val_rx) = oneshot::channel(); - - let para_id = candidate.descriptor.para_id; - - sender.send_message(CandidateValidationMessage::ValidateFromExhaustive( - available_data.validation_data, - validation_code, - candidate.descriptor, - available_data.pov, - val_tx, - ).into()).await; - - match val_rx.await { - Err(_) => - return ApprovalState::failed( - validator_index, - candidate_hash, - ), - Ok(Ok(ValidationResult::Valid(_, _))) => { - // Validation checked out. Issue an approval command. If the underlying service is unreachable, - // then there isn't anything we can do. - - tracing::trace!( - target: LOG_TARGET, - ?candidate_hash, - ?para_id, - "Candidate Valid", - ); - - let _ = metrics_guard.take(); - return ApprovalState::approved( - validator_index, - candidate_hash, - ); - } - Ok(Ok(ValidationResult::Invalid(reason))) => { - tracing::warn!( - target: LOG_TARGET, - ?reason, - ?candidate_hash, - ?para_id, - "Detected invalid candidate as an approval checker.", - ); - - // TODO: issue dispute, but not for timeouts. - // https://github.com/paritytech/polkadot/issues/2176 - metrics_guard.take().on_approval_invalid(); - - return ApprovalState::failed( - validator_index, - candidate_hash, - ); - } - Ok(Err(e)) => { - tracing::error!( - target: LOG_TARGET, - err = ?e, - "Failed to validate candidate due to internal error", - ); - metrics_guard.take().on_approval_error(); - return ApprovalState::failed( - validator_index, - candidate_hash, - ); - } - } - }; - - let (background, remote_handle) = background.remote_handle(); - ctx.spawn("approval-checks", Box::pin(background)) - .map(move |()| remote_handle) -} - -// Issue and import a local approval vote. Should only be invoked after approval checks -// have been done. -fn issue_approval( - ctx: &mut impl SubsystemSender, - state: &State, - metrics: &Metrics, - candidate_hash: CandidateHash, - ApprovalVoteRequest { validator_index, block_hash }: ApprovalVoteRequest, -) -> SubsystemResult> { - let block_entry = match state.db.load_block_entry(&block_hash)? { - Some(b) => b, - None => { - // not a cause for alarm - just lost a race with pruning, most likely. - metrics.on_approval_stale(); - return Ok(Vec::new()) - } - }; - - let candidate_index = match block_entry - .candidates() - .iter() - .position(|e| e.1 == candidate_hash) - { - None => { - tracing::warn!( - target: LOG_TARGET, - "Candidate hash {} is not present in the block entry's candidates for relay block {}", - candidate_hash, - block_entry.parent_hash(), - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - Some(idx) => idx, - }; - - let session_info = match state.session_info(block_entry.session()) { - Some(s) => s, - None => { - tracing::warn!( - target: LOG_TARGET, - "Missing session info for live block {} in session {}", - block_hash, - block_entry.session(), - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - }; - - let candidate_hash = match block_entry.candidate(candidate_index as usize) { - Some((_, h)) => h.clone(), - None => { - tracing::warn!( - target: LOG_TARGET, - "Received malformed request to approve out-of-bounds candidate index {} included at block {:?}", - candidate_index, - block_hash, - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - }; - - let candidate_entry = match state.db.load_candidate_entry(&candidate_hash)? { - Some(c) => c, - None => { - tracing::warn!( - target: LOG_TARGET, - "Missing entry for candidate index {} included at block {:?}", - candidate_index, - block_hash, - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - }; - - let validator_pubkey = match session_info.validators.get(validator_index.0 as usize) { - Some(p) => p, - None => { - tracing::warn!( - target: LOG_TARGET, - "Validator index {} out of bounds in session {}", - validator_index.0, - block_entry.session(), - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - }; - - let sig = match sign_approval( - &state.keystore, - &validator_pubkey, - candidate_hash, - block_entry.session(), - ) { - Some(sig) => sig, - None => { - tracing::warn!( - target: LOG_TARGET, - "Could not issue approval signature with validator index {} in session {}. Assignment key present but not validator key?", - validator_index.0, - block_entry.session(), - ); - - metrics.on_approval_error(); - return Ok(Vec::new()); - } - }; - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - ?block_hash, - validator_index = validator_index.0, - "Issuing approval vote", - ); - - let actions = import_checked_approval( - state, - metrics, - block_entry, - candidate_hash, - candidate_entry, - ApprovalSource::Local(validator_index as _, sig.clone()), - ); - - metrics.on_approval_produced(); - - // dispatch to approval distribution. - ctx.send_unbounded_message( - ApprovalDistributionMessage::DistributeApproval(IndirectSignedApprovalVote { - block_hash, - candidate_index: candidate_index as _, - validator: validator_index, - signature: sig, - } - ).into()); - - Ok(actions) -} - -// Sign an approval vote. Fails if the key isn't present in the store. -fn sign_approval( - keystore: &LocalKeystore, - public: &ValidatorId, - candidate_hash: CandidateHash, - session_index: SessionIndex, -) -> Option { - let key = keystore.key_pair::(public).ok().flatten()?; - - let payload = ApprovalVote(candidate_hash).signing_payload(session_index); - - Some(key.sign(&payload[..])) -} diff --git a/node/core/approval-voting/src/persisted_entries.rs b/node/core/approval-voting/src/persisted_entries.rs deleted file mode 100644 index ce0f5689c154..000000000000 --- a/node/core/approval-voting/src/persisted_entries.rs +++ /dev/null @@ -1,457 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Entries pertaining to approval which need to be persisted. -//! -//! The actual persisting of data is handled by the `approval_db` module. -//! Within that context, things are plain-old-data. Within this module, -//! data and logic are intertwined. - -use polkadot_node_primitives::approval::{DelayTranche, RelayVRFStory, AssignmentCert}; -use polkadot_primitives::v1::{ - ValidatorIndex, CandidateReceipt, SessionIndex, GroupIndex, CoreIndex, - Hash, CandidateHash, BlockNumber, ValidatorSignature, -}; -use sp_consensus_slots::Slot; - -use std::collections::BTreeMap; -use bitvec::{slice::BitSlice, vec::BitVec, order::Lsb0 as BitOrderLsb0}; - -use super::time::Tick; -use super::criteria::OurAssignment; - -/// Metadata regarding a specific tranche of assignments for a specific candidate. -#[derive(Debug, Clone, PartialEq)] -pub struct TrancheEntry { - tranche: DelayTranche, - // Assigned validators, and the instant we received their assignment, rounded - // to the nearest tick. - assignments: Vec<(ValidatorIndex, Tick)>, -} - -impl TrancheEntry { - /// Get the tranche of this entry. - pub fn tranche(&self) -> DelayTranche { - self.tranche - } - - /// Get the assignments for this entry. - pub fn assignments(&self) -> &[(ValidatorIndex, Tick)] { - &self.assignments - } -} - -impl From for TrancheEntry { - fn from(entry: crate::approval_db::v1::TrancheEntry) -> Self { - TrancheEntry { - tranche: entry.tranche, - assignments: entry.assignments.into_iter().map(|(v, t)| (v, t.into())).collect(), - } - } -} - -impl From for crate::approval_db::v1::TrancheEntry { - fn from(entry: TrancheEntry) -> Self { - Self { - tranche: entry.tranche, - assignments: entry.assignments.into_iter().map(|(v, t)| (v, t.into())).collect(), - } - } -} - -/// Metadata regarding approval of a particular candidate within the context of some -/// particular block. -#[derive(Debug, Clone, PartialEq)] -pub struct ApprovalEntry { - tranches: Vec, - backing_group: GroupIndex, - our_assignment: Option, - our_approval_sig: Option, - // `n_validators` bits. - assignments: BitVec, - approved: bool, -} - -impl ApprovalEntry { - // Access our assignment for this approval entry. - pub fn our_assignment(&self) -> Option<&OurAssignment> { - self.our_assignment.as_ref() - } - - // Note that our assignment is triggered. No-op if already triggered. - pub fn trigger_our_assignment(&mut self, tick_now: Tick) - -> Option<(AssignmentCert, ValidatorIndex, DelayTranche)> - { - let our = self.our_assignment.as_mut().and_then(|a| { - if a.triggered() { return None } - a.mark_triggered(); - - Some(a.clone()) - }); - - our.map(|a| { - self.import_assignment(a.tranche(), a.validator_index(), tick_now); - - (a.cert().clone(), a.validator_index(), a.tranche()) - }) - } - - /// Import our local approval vote signature for this candidate. - pub fn import_approval_sig(&mut self, approval_sig: ValidatorSignature) { - self.our_approval_sig = Some(approval_sig); - } - - /// Whether a validator is already assigned. - pub fn is_assigned(&self, validator_index: ValidatorIndex) -> bool { - self.assignments.get(validator_index.0 as usize).map(|b| *b).unwrap_or(false) - } - - /// Import an assignment. No-op if already assigned on the same tranche. - pub fn import_assignment( - &mut self, - tranche: DelayTranche, - validator_index: ValidatorIndex, - tick_now: Tick, - ) { - // linear search probably faster than binary. not many tranches typically. - let idx = match self.tranches.iter().position(|t| t.tranche >= tranche) { - Some(pos) => { - if self.tranches[pos].tranche > tranche { - self.tranches.insert(pos, TrancheEntry { - tranche: tranche, - assignments: Vec::new(), - }); - } - - pos - } - None => { - self.tranches.push(TrancheEntry { - tranche: tranche, - assignments: Vec::new(), - }); - - self.tranches.len() - 1 - } - }; - - self.tranches[idx].assignments.push((validator_index, tick_now)); - self.assignments.set(validator_index.0 as _, true); - } - - // Produce a bitvec indicating the assignments of all validators up to and - // including `tranche`. - pub fn assignments_up_to(&self, tranche: DelayTranche) -> BitVec { - self.tranches.iter() - .take_while(|e| e.tranche <= tranche) - .fold(bitvec::bitvec![BitOrderLsb0, u8; 0; self.assignments.len()], |mut a, e| { - for &(v, _) in &e.assignments { - a.set(v.0 as _, true); - } - - a - }) - } - - /// Whether the approval entry is approved - pub fn is_approved(&self) -> bool { - self.approved - } - - /// Mark the approval entry as approved. - pub fn mark_approved(&mut self) { - self.approved = true; - } - - /// Access the tranches. - pub fn tranches(&self) -> &[TrancheEntry] { - &self.tranches - } - - /// Get the number of validators in this approval entry. - pub fn n_validators(&self) -> usize { - self.assignments.len() - } - - /// Get the number of assignments by validators, including the local validator. - pub fn n_assignments(&self) -> usize { - self.assignments.count_ones() - } - - /// Get the backing group index of the approval entry. - pub fn backing_group(&self) -> GroupIndex { - self.backing_group - } - - /// Get the assignment cert & approval signature. - /// - /// The approval signature will only be `Some` if the assignment is too. - pub fn local_statements(&self) -> (Option, Option) { - let approval_sig = self.our_approval_sig.clone(); - if let Some(our_assignment) = self.our_assignment.as_ref().filter(|a| a.triggered()) { - (Some(our_assignment.clone()), approval_sig) - } else { - (None, None) - } - } - - /// For tests: set our assignment. - #[cfg(test)] - pub fn set_our_assignment(&mut self, our_assignment: OurAssignment) { - self.our_assignment = Some(our_assignment); - } -} - -impl From for ApprovalEntry { - fn from(entry: crate::approval_db::v1::ApprovalEntry) -> Self { - ApprovalEntry { - tranches: entry.tranches.into_iter().map(Into::into).collect(), - backing_group: entry.backing_group, - our_assignment: entry.our_assignment.map(Into::into), - our_approval_sig: entry.our_approval_sig.map(Into::into), - assignments: entry.assignments, - approved: entry.approved, - } - } -} - -impl From for crate::approval_db::v1::ApprovalEntry { - fn from(entry: ApprovalEntry) -> Self { - Self { - tranches: entry.tranches.into_iter().map(Into::into).collect(), - backing_group: entry.backing_group, - our_assignment: entry.our_assignment.map(Into::into), - our_approval_sig: entry.our_approval_sig.map(Into::into), - assignments: entry.assignments, - approved: entry.approved, - } - } -} - -/// Metadata regarding approval of a particular candidate. -#[derive(Debug, Clone, PartialEq)] -pub struct CandidateEntry { - candidate: CandidateReceipt, - session: SessionIndex, - // Assignments are based on blocks, so we need to track assignments separately - // based on the block we are looking at. - block_assignments: BTreeMap, - approvals: BitVec, -} - -impl CandidateEntry { - /// Access the bit-vec of approvals. - pub fn approvals(&self) -> &BitSlice { - &self.approvals - } - - /// Note that a given validator has approved. Return the previous approval state. - pub fn mark_approval(&mut self, validator: ValidatorIndex) -> bool { - let prev = self.approvals.get(validator.0 as usize).map(|b| *b).unwrap_or(false); - self.approvals.set(validator.0 as usize, true); - prev - } - - /// Get the candidate receipt. - pub fn candidate_receipt(&self) -> &CandidateReceipt { - &self.candidate - } - - /// Get the approval entry, mutably, for this candidate under a specific block. - pub fn approval_entry_mut(&mut self, block_hash: &Hash) -> Option<&mut ApprovalEntry> { - self.block_assignments.get_mut(block_hash) - } - - /// Get the approval entry for this candidate under a specific block. - pub fn approval_entry(&self, block_hash: &Hash) -> Option<&ApprovalEntry> { - self.block_assignments.get(block_hash) - } - - #[cfg(test)] - pub fn add_approval_entry( - &mut self, - block_hash: Hash, - approval_entry: ApprovalEntry, - ) { - self.block_assignments.insert(block_hash, approval_entry); - } -} - -impl From for CandidateEntry { - fn from(entry: crate::approval_db::v1::CandidateEntry) -> Self { - CandidateEntry { - candidate: entry.candidate, - session: entry.session, - block_assignments: entry.block_assignments.into_iter().map(|(h, ae)| (h, ae.into())).collect(), - approvals: entry.approvals, - } - } -} - -impl From for crate::approval_db::v1::CandidateEntry { - fn from(entry: CandidateEntry) -> Self { - Self { - candidate: entry.candidate, - session: entry.session, - block_assignments: entry.block_assignments.into_iter().map(|(h, ae)| (h, ae.into())).collect(), - approvals: entry.approvals, - } - } -} - -/// Metadata regarding approval of a particular block, by way of approval of the -/// candidates contained within it. -#[derive(Debug, Clone, PartialEq)] -pub struct BlockEntry { - block_hash: Hash, - parent_hash: Hash, - block_number: BlockNumber, - session: SessionIndex, - slot: Slot, - relay_vrf_story: RelayVRFStory, - // The candidates included as-of this block and the index of the core they are - // leaving. Sorted ascending by core index. - candidates: Vec<(CoreIndex, CandidateHash)>, - // A bitfield where the i'th bit corresponds to the i'th candidate in `candidates`. - // The i'th bit is `true` iff the candidate has been approved in the context of this - // block. The block can be considered approved if the bitfield has all bits set to `true`. - approved_bitfield: BitVec, - children: Vec, -} - -impl BlockEntry { - /// Mark a candidate as fully approved in the bitfield. - pub fn mark_approved_by_hash(&mut self, candidate_hash: &CandidateHash) { - if let Some(p) = self.candidates.iter().position(|(_, h)| h == candidate_hash) { - self.approved_bitfield.set(p, true); - } - } - - /// Whether a candidate is approved in the bitfield. - pub fn is_candidate_approved(&self, candidate_hash: &CandidateHash) -> bool { - self.candidates.iter().position(|(_, h)| h == candidate_hash) - .and_then(|p| self.approved_bitfield.get(p).map(|b| *b)) - .unwrap_or(false) - } - - /// Whether the block entry is fully approved. - pub fn is_fully_approved(&self) -> bool { - self.approved_bitfield.all() - } - - /// Iterate over all unapproved candidates. - pub fn unapproved_candidates(&self) -> impl Iterator + '_ { - self.approved_bitfield.iter().enumerate().filter_map(move |(i, a)| if !*a { - Some(self.candidates[i].1) - } else { - None - }) - } - - /// For tests: Add a candidate to the block entry. Returns the - /// index where the candidate was added. - /// - /// Panics if the core is already used. - #[cfg(test)] - pub fn add_candidate(&mut self, core: CoreIndex, candidate_hash: CandidateHash) -> usize { - let pos = self.candidates - .binary_search_by_key(&core, |(c, _)| *c) - .unwrap_err(); - - self.candidates.insert(pos, (core, candidate_hash)); - - // bug in bitvec? - if pos < self.approved_bitfield.len() { - self.approved_bitfield.insert(pos, false); - } else { - self.approved_bitfield.push(false); - } - - pos - } - - /// Get the slot of the block. - pub fn slot(&self) -> Slot { - self.slot - } - - /// Get the relay-vrf-story of the block. - pub fn relay_vrf_story(&self) -> RelayVRFStory { - self.relay_vrf_story.clone() - } - - /// Get the session index of the block. - pub fn session(&self) -> SessionIndex { - self.session - } - - /// Get the i'th candidate. - pub fn candidate(&self, i: usize) -> Option<&(CoreIndex, CandidateHash)> { - self.candidates.get(i) - } - - /// Access the underlying candidates as a slice. - pub fn candidates(&self) -> &[(CoreIndex, CandidateHash)] { - &self.candidates - } - - /// Access the block number of the block entry. - pub fn block_number(&self) -> BlockNumber { - self.block_number - } - - /// Access the block hash of the block entry. - pub fn block_hash(&self) -> Hash { - self.block_hash - } - - /// Access the parent hash of the block entry. - pub fn parent_hash(&self) -> Hash { - self.parent_hash - } -} - -impl From for BlockEntry { - fn from(entry: crate::approval_db::v1::BlockEntry) -> Self { - BlockEntry { - block_hash: entry.block_hash, - parent_hash: entry.parent_hash, - block_number: entry.block_number, - session: entry.session, - slot: entry.slot, - relay_vrf_story: RelayVRFStory(entry.relay_vrf_story), - candidates: entry.candidates, - approved_bitfield: entry.approved_bitfield, - children: entry.children, - } - } -} - -impl From for crate::approval_db::v1::BlockEntry { - fn from(entry: BlockEntry) -> Self { - Self { - block_hash: entry.block_hash, - parent_hash: entry.parent_hash, - block_number: entry.block_number, - session: entry.session, - slot: entry.slot, - relay_vrf_story: entry.relay_vrf_story.0, - candidates: entry.candidates, - approved_bitfield: entry.approved_bitfield, - children: entry.children, - } - } -} diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs deleted file mode 100644 index 5603c362fd24..000000000000 --- a/node/core/approval-voting/src/tests.rs +++ /dev/null @@ -1,1848 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use polkadot_primitives::v1::{CoreIndex, GroupIndex, ValidatorSignature}; -use polkadot_node_primitives::approval::{ - AssignmentCert, AssignmentCertKind, VRFOutput, VRFProof, - RELAY_VRF_MODULO_CONTEXT, DelayTranche, -}; -use polkadot_node_subsystem_test_helpers::make_subsystem_context; -use polkadot_node_subsystem::messages::AllMessages; -use sp_core::testing::TaskExecutor; - -use parking_lot::Mutex; -use bitvec::order::Lsb0 as BitOrderLsb0; -use std::pin::Pin; -use std::sync::Arc; -use sp_keyring::sr25519::Keyring as Sr25519Keyring; -use assert_matches::assert_matches; - -const SLOT_DURATION_MILLIS: u64 = 5000; - -fn slot_to_tick(t: impl Into) -> crate::time::Tick { - crate::time::slot_number_to_tick(SLOT_DURATION_MILLIS, t.into()) -} - -#[derive(Default, Clone)] -struct MockClock { - inner: Arc>, -} - -impl MockClock { - fn new(tick: Tick) -> Self { - let me = Self::default(); - me.inner.lock().set_tick(tick); - me - } -} - -impl Clock for MockClock { - fn tick_now(&self) -> Tick { - self.inner.lock().tick - } - - fn wait(&self, tick: Tick) -> Pin + Send + 'static>> { - let rx = self.inner.lock().register_wakeup(tick, true); - - Box::pin(async move { - rx.await.expect("i exist in a timeless void. yet, i remain"); - }) - } -} - -// This mock clock allows us to manipulate the time and -// be notified when wakeups have been triggered. -#[derive(Default)] -struct MockClockInner { - tick: Tick, - wakeups: Vec<(Tick, oneshot::Sender<()>)>, -} - -impl MockClockInner { - fn set_tick(&mut self, tick: Tick) { - self.tick = tick; - self.wakeup_all(tick); - } - - fn wakeup_all(&mut self, up_to: Tick) { - // This finds the position of the first wakeup after - // the given tick, or the end of the map. - let drain_up_to = self.wakeups.binary_search_by_key( - &(up_to + 1), - |w| w.0, - ).unwrap_or_else(|i| i); - - for (_, wakeup) in self.wakeups.drain(..drain_up_to) { - let _ = wakeup.send(()); - } - } - - // If `pre_emptive` is true, we compare the given tick to the internal - // tick of the clock for an early return. - // - // Otherwise, the wakeup will only trigger alongside another wakeup of - // equal or greater tick. - // - // When the pre-emptive wakeup is disabled, this can be used in combination with - // a preceding call to `set_tick` to wait until some other wakeup at that same tick - // has been triggered. - fn register_wakeup(&mut self, tick: Tick, pre_emptive: bool) -> oneshot::Receiver<()> { - let (tx, rx) = oneshot::channel(); - - let pos = self.wakeups.binary_search_by_key( - &tick, - |w| w.0, - ).unwrap_or_else(|i| i); - - self.wakeups.insert(pos, (tick, tx)); - - if pre_emptive { - // if `tick > self.tick`, this won't wake up the new - // listener. - self.wakeup_all(self.tick); - } - - rx - } -} - -struct MockAssignmentCriteria(Compute, Check); - -impl AssignmentCriteria for MockAssignmentCriteria -where - Compute: Fn() -> HashMap, - Check: Fn() -> Result -{ - fn compute_assignments( - &self, - _keystore: &LocalKeystore, - _relay_vrf_story: polkadot_node_primitives::approval::RelayVRFStory, - _config: &criteria::Config, - _leaving_cores: Vec<(CandidateHash, polkadot_primitives::v1::CoreIndex, polkadot_primitives::v1::GroupIndex)>, - ) -> HashMap { - self.0() - } - - fn check_assignment_cert( - &self, - _claimed_core_index: polkadot_primitives::v1::CoreIndex, - _validator_index: ValidatorIndex, - _config: &criteria::Config, - _relay_vrf_story: polkadot_node_primitives::approval::RelayVRFStory, - _assignment: &polkadot_node_primitives::approval::AssignmentCert, - _backing_group: polkadot_primitives::v1::GroupIndex, - ) -> Result { - self.1() - } -} - -impl MockAssignmentCriteria< - fn() -> HashMap, - F, -> { - fn check_only(f: F) -> Self { - MockAssignmentCriteria(Default::default, f) - } -} - -#[derive(Default)] -struct TestStore { - block_entries: HashMap, - candidate_entries: HashMap, -} - -impl DBReader for TestStore { - fn load_block_entry( - &self, - block_hash: &Hash, - ) -> SubsystemResult> { - Ok(self.block_entries.get(block_hash).cloned()) - } - - fn load_candidate_entry( - &self, - candidate_hash: &CandidateHash, - ) -> SubsystemResult> { - Ok(self.candidate_entries.get(candidate_hash).cloned()) - } - - fn load_all_blocks(&self) -> SubsystemResult> { - let mut hashes: Vec<_> = self.block_entries.keys().cloned().collect(); - - hashes.sort_by_key(|k| self.block_entries.get(k).unwrap().block_number()); - - Ok(hashes) - } -} - -fn blank_state() -> State { - State { - session_window: RollingSessionWindow::new(APPROVAL_SESSIONS), - keystore: Arc::new(LocalKeystore::in_memory()), - slot_duration_millis: SLOT_DURATION_MILLIS, - db: TestStore::default(), - clock: Box::new(MockClock::default()), - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { Ok(0) })), - } -} - -fn single_session_state(index: SessionIndex, info: SessionInfo) - -> State -{ - State { - session_window: RollingSessionWindow::with_session_info( - APPROVAL_SESSIONS, - index, - vec![info], - ), - ..blank_state() - } -} - -fn garbage_assignment_cert(kind: AssignmentCertKind) -> AssignmentCert { - let ctx = schnorrkel::signing_context(RELAY_VRF_MODULO_CONTEXT); - let msg = b"test-garbage"; - let mut prng = rand_core::OsRng; - let keypair = schnorrkel::Keypair::generate_with(&mut prng); - let (inout, proof, _) = keypair.vrf_sign(ctx.bytes(msg)); - let out = inout.to_output(); - - AssignmentCert { - kind, - vrf: (VRFOutput(out), VRFProof(proof)), - } -} - -fn sign_approval( - key: Sr25519Keyring, - candidate_hash: CandidateHash, - session_index: SessionIndex, -) -> ValidatorSignature { - key.sign(&ApprovalVote(candidate_hash).signing_payload(session_index)).into() -} - -#[derive(Clone)] -struct StateConfig { - session_index: SessionIndex, - slot: Slot, - tick: Tick, - validators: Vec, - validator_groups: Vec>, - needed_approvals: u32, - no_show_slots: u32, -} - -impl Default for StateConfig { - fn default() -> Self { - StateConfig { - session_index: 1, - slot: Slot::from(0), - tick: 0, - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob], - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1)]], - needed_approvals: 1, - no_show_slots: 2, - } - } -} - -// one block with one candidate. Alice and Bob are in the assignment keys. -fn some_state(config: StateConfig) -> State { - let StateConfig { - session_index, - slot, - tick, - validators, - validator_groups, - needed_approvals, - no_show_slots, - } = config; - - let n_validators = validators.len(); - - let mut state = State { - clock: Box::new(MockClock::new(tick)), - ..single_session_state(session_index, SessionInfo { - validators: validators.iter().map(|v| v.public().into()).collect(), - discovery_keys: validators.iter().map(|v| v.public().into()).collect(), - assignment_keys: validators.iter().map(|v| v.public().into()).collect(), - validator_groups: validator_groups.clone(), - n_cores: validator_groups.len() as _, - zeroth_delay_tranche_width: 5, - relay_vrf_modulo_samples: 3, - n_delay_tranches: 50, - no_show_slots, - needed_approvals, - ..Default::default() - }) - }; - let core_index = 0.into(); - - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - add_block( - &mut state.db, - block_hash, - session_index, - slot, - ); - - add_candidate_to_block( - &mut state.db, - block_hash, - candidate_hash, - n_validators, - core_index, - GroupIndex(0), - ); - - state -} - -fn add_block( - db: &mut TestStore, - block_hash: Hash, - session: SessionIndex, - slot: Slot, -) { - db.block_entries.insert( - block_hash, - approval_db::v1::BlockEntry { - block_hash, - parent_hash: Default::default(), - block_number: 0, - session, - slot, - candidates: Vec::new(), - relay_vrf_story: Default::default(), - approved_bitfield: Default::default(), - children: Default::default(), - }.into(), - ); -} - -fn add_candidate_to_block( - db: &mut TestStore, - block_hash: Hash, - candidate_hash: CandidateHash, - n_validators: usize, - core: CoreIndex, - backing_group: GroupIndex, -) { - let mut block_entry = db.block_entries.get(&block_hash).unwrap().clone(); - - let candidate_entry = db.candidate_entries - .entry(candidate_hash) - .or_insert_with(|| approval_db::v1::CandidateEntry { - session: block_entry.session(), - block_assignments: Default::default(), - candidate: CandidateReceipt::default(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - }.into()); - - block_entry.add_candidate(core, candidate_hash); - - candidate_entry.add_approval_entry( - block_hash, - approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group, - our_assignment: None, - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - approved: false, - }.into(), - ); - - db.block_entries.insert(block_hash, block_entry); -} - -#[test] -fn rejects_bad_assignment() { - let block_hash = Hash::repeat_byte(0x01); - let assignment_good = IndirectAssignmentCert { - block_hash, - validator: ValidatorIndex(0), - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { - sample: 0, - }, - ), - }; - let mut state = some_state(Default::default()); - let candidate_index = 0; - - let res = check_and_import_assignment( - &mut state, - assignment_good.clone(), - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::Accepted); - // Check that the assignment's been imported. - assert!(res.1.iter().any(|action| matches!(action, Action::WriteCandidateEntry(..)))); - - // unknown hash - let unknown_hash = Hash::repeat_byte(0x02); - let assignment = IndirectAssignmentCert { - block_hash: unknown_hash, - validator: ValidatorIndex(0), - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { - sample: 0, - }, - ), - }; - - let res = check_and_import_assignment( - &mut state, - assignment, - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::Bad(AssignmentCheckError::UnknownBlock(unknown_hash))); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Err(criteria::InvalidAssignment) - })), - ..some_state(Default::default()) - }; - - // same assignment, but this time rejected - let res = check_and_import_assignment( - &mut state, - assignment_good, - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::Bad(AssignmentCheckError::InvalidCert(ValidatorIndex(0)))); -} - -#[test] -fn rejects_assignment_in_future() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_index = 0; - let assignment = IndirectAssignmentCert { - block_hash, - validator: ValidatorIndex(0), - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { - sample: 0, - }, - ), - }; - - let tick = 9; - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(move || { - Ok((tick + 20) as _) - })), - ..some_state(StateConfig { tick, ..Default::default() }) - }; - - let res = check_and_import_assignment( - &mut state, - assignment.clone(), - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::TooFarInFuture); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(move || { - Ok((tick + 20 - 1) as _) - })), - ..some_state(StateConfig { tick, ..Default::default() }) - }; - - let res = check_and_import_assignment( - &mut state, - assignment.clone(), - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::Accepted); -} - -#[test] -fn rejects_assignment_with_unknown_candidate() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_index = 1; - let assignment = IndirectAssignmentCert { - block_hash, - validator: ValidatorIndex(0), - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { - sample: 0, - }, - ), - }; - - let mut state = some_state(Default::default()); - - let res = check_and_import_assignment( - &mut state, - assignment.clone(), - candidate_index, - ).unwrap(); - assert_eq!(res.0, AssignmentCheckResult::Bad(AssignmentCheckError::InvalidCandidateIndex(candidate_index))); -} - -#[test] -fn assignment_import_updates_candidate_entry_and_schedules_wakeup() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - let candidate_index = 0; - let assignment = IndirectAssignmentCert { - block_hash, - validator: ValidatorIndex(0), - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { - sample: 0, - }, - ), - }; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(Default::default()) - }; - - let (res, actions) = check_and_import_assignment( - &mut state, - assignment.clone(), - candidate_index, - ).unwrap(); - - assert_eq!(res, AssignmentCheckResult::Accepted); - assert_eq!(actions.len(), 2); - - assert_matches!( - actions.get(0).unwrap(), - Action::ScheduleWakeup { - block_hash: b, - candidate_hash: c, - tick, - .. - } => { - assert_eq!(b, &block_hash); - assert_eq!(c, &candidate_hash); - assert_eq!(tick, &slot_to_tick(0 + 2)); // current tick + no-show-duration. - } - ); - - assert_matches!( - actions.get(1).unwrap(), - Action::WriteCandidateEntry(c, e) => { - assert_eq!(c, &candidate_hash); - assert!(e.approval_entry(&block_hash).unwrap().is_assigned(ValidatorIndex(0))); - } - ); -} - -#[test] -fn rejects_approval_before_assignment() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - let state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(Default::default()) - }; - - let vote = IndirectSignedApprovalVote { - block_hash, - candidate_index: 0, - validator: ValidatorIndex(0), - signature: sign_approval(Sr25519Keyring::Alice, candidate_hash, 1), - }; - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote, - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Bad(ApprovalCheckError::NoAssignment(ValidatorIndex(0)))); - assert!(actions.is_empty()); -} - -#[test] -fn rejects_approval_if_no_candidate_entry() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(Default::default()) - }; - - let vote = IndirectSignedApprovalVote { - block_hash, - candidate_index: 0, - validator: ValidatorIndex(0), - signature: sign_approval(Sr25519Keyring::Alice, candidate_hash, 1), - }; - - state.db.candidate_entries.remove(&candidate_hash); - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote, - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Bad(ApprovalCheckError::InvalidCandidate(0, candidate_hash))); - assert!(actions.is_empty()); -} - -#[test] -fn rejects_approval_if_no_block_entry() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let validator_index = ValidatorIndex(0); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(Default::default()) - }; - - let vote = IndirectSignedApprovalVote { - block_hash, - candidate_index: 0, - validator: ValidatorIndex(0), - signature: sign_approval(Sr25519Keyring::Alice, candidate_hash, 1), - }; - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index, 0); - - state.db.block_entries.remove(&block_hash); - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote, - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Bad(ApprovalCheckError::UnknownBlock(block_hash))); - assert!(actions.is_empty()); -} - -#[test] -fn accepts_and_imports_approval_after_assignment() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let validator_index = ValidatorIndex(0); - - let candidate_index = 0; - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - validator_groups: vec![vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2)]], - needed_approvals: 2, - ..Default::default() - }) - }; - - let vote = IndirectSignedApprovalVote { - block_hash, - candidate_index, - validator: validator_index, - signature: sign_approval(Sr25519Keyring::Alice, candidate_hash, 1), - }; - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index, 0); - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote, - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Accepted); - - assert_eq!(actions.len(), 1); - assert_matches!( - actions.get(0).unwrap(), - Action::WriteCandidateEntry(c_hash, c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert!(c_entry.approvals().get(validator_index.0 as usize).unwrap()); - assert!(!c_entry.approval_entry(&block_hash).unwrap().is_approved()); - } - ); -} - -#[test] -fn second_approval_import_only_schedules_wakeups() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let validator_index = ValidatorIndex(0); - let validator_index_b = ValidatorIndex(1); - - let candidate_index = 0; - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - validator_groups: vec![vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2)]], - needed_approvals: 2, - ..Default::default() - }) - }; - - let vote = IndirectSignedApprovalVote { - block_hash, - candidate_index, - validator: validator_index, - signature: sign_approval(Sr25519Keyring::Alice, candidate_hash, 1), - }; - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index, 0); - - assert!(!state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .mark_approval(validator_index)); - - // There is only one assignment, so nothing to schedule if we double-import. - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote.clone(), - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Accepted); - assert!(actions.is_empty()); - - // After adding a second assignment, there should be a schedule wakeup action. - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index_b, 0); - - let (actions, res) = check_and_import_approval( - &state, - &Metrics(None), - vote, - |r| r - ).unwrap(); - - assert_eq!(res, ApprovalCheckResult::Accepted); - assert_eq!(actions.len(), 1); - - assert_matches!( - actions.get(0).unwrap(), - Action::ScheduleWakeup { .. } => {} - ); -} - -#[test] -fn import_checked_approval_updates_entries_and_schedules() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let validator_index_a = ValidatorIndex(0); - let validator_index_b = ValidatorIndex(1); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - validator_groups: vec![vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2)]], - needed_approvals: 2, - ..Default::default() - }) - }; - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index_a, 0); - - state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index_b, 0); - - { - let mut actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash).unwrap().clone(), - candidate_hash, - state.db.candidate_entries.get(&candidate_hash).unwrap().clone(), - ApprovalSource::Remote(validator_index_a), - ); - - assert_eq!(actions.len(), 2); - assert_matches!( - actions.get(0).unwrap(), - Action::ScheduleWakeup { - block_hash: b_hash, - candidate_hash: c_hash, - .. - } => { - assert_eq!(b_hash, &block_hash); - assert_eq!(c_hash, &candidate_hash); - } - ); - assert_matches!( - actions.get_mut(1).unwrap(), - Action::WriteCandidateEntry(c_hash, ref mut c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert!(!c_entry.approval_entry(&block_hash).unwrap().is_approved()); - assert!(c_entry.mark_approval(validator_index_a)); - - state.db.candidate_entries.insert(candidate_hash, c_entry.clone()); - } - ); - } - - { - let mut actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash).unwrap().clone(), - candidate_hash, - state.db.candidate_entries.get(&candidate_hash).unwrap().clone(), - ApprovalSource::Remote(validator_index_b), - ); - - assert_matches!( - actions.get(0).unwrap(), - Action::WriteBlockEntry(b_entry) => { - assert_eq!(b_entry.block_hash(), block_hash); - assert!(b_entry.is_fully_approved()); - assert!(b_entry.is_candidate_approved(&candidate_hash)); - } - ); - assert_matches!( - actions.get_mut(1).unwrap(), - Action::WriteCandidateEntry(c_hash, ref mut c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert!(c_entry.approval_entry(&block_hash).unwrap().is_approved()); - assert!(c_entry.mark_approval(validator_index_b)); - } - ); - } -} - -#[test] -fn assignment_triggered_by_all_with_less_than_threshold() { - let block_hash = Hash::repeat_byte(0x01); - - let mut candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 1, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - // 1-of-4 - candidate_entry - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, ValidatorIndex(0), 0); - - candidate_entry.mark_approval(ValidatorIndex(0)); - - let tranche_now = 1; - assert!(should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::All, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_by_all_with_threshold() { - let block_hash = Hash::repeat_byte(0x01); - - let mut candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 1, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - // 2-of-4 - candidate_entry - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, ValidatorIndex(0), 0); - - candidate_entry - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, ValidatorIndex(1), 0); - - candidate_entry.mark_approval(ValidatorIndex(0)); - candidate_entry.mark_approval(ValidatorIndex(1)); - - let tranche_now = 1; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::All, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_if_already_triggered() { - let block_hash = Hash::repeat_byte(0x01); - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 1, - validator_index: ValidatorIndex(4), - triggered: true, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = 1; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::All, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_by_exact() { - let block_hash = Hash::repeat_byte(0x01); - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 1, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = 1; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::Exact { needed: 2, next_no_show: None, tolerated_missing: 0 }, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_more_than_maximum() { - let block_hash = Hash::repeat_byte(0x01); - let maximum_broadcast = 10; - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: maximum_broadcast + 1, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = 50; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::Pending { - maximum_broadcast, - clock_drift: 0, - considered: 10, - next_no_show: None, - }, - tranche_now, - )); -} - -#[test] -fn assignment_triggered_if_at_maximum() { - let block_hash = Hash::repeat_byte(0x01); - let maximum_broadcast = 10; - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: maximum_broadcast, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = maximum_broadcast; - assert!(should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::Pending { - maximum_broadcast, - clock_drift: 0, - considered: 10, - next_no_show: None, - }, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_if_at_maximum_but_clock_is_before() { - let block_hash = Hash::repeat_byte(0x01); - let maximum_broadcast = 10; - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: maximum_broadcast, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = 9; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::Pending { - maximum_broadcast, - clock_drift: 0, - considered: 10, - next_no_show: None, - }, - tranche_now, - )); -} - -#[test] -fn assignment_not_triggered_if_at_maximum_but_clock_is_before_with_drift() { - let block_hash = Hash::repeat_byte(0x01); - let maximum_broadcast = 10; - - let candidate_entry: CandidateEntry = { - let approval_entry = approval_db::v1::ApprovalEntry { - tranches: Vec::new(), - backing_group: GroupIndex(0), - our_assignment: Some(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: maximum_broadcast, - validator_index: ValidatorIndex(4), - triggered: false, - }), - our_approval_sig: None, - assignments: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - approved: false, - }; - - approval_db::v1::CandidateEntry { - candidate: Default::default(), - session: 1, - block_assignments: vec![(block_hash, approval_entry)].into_iter().collect(), - approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; 4], - }.into() - }; - - let tranche_now = 10; - assert!(!should_trigger_assignment( - candidate_entry.approval_entry(&block_hash).unwrap(), - &candidate_entry, - RequiredTranches::Pending { - maximum_broadcast, - clock_drift: 1, - considered: 10, - next_no_show: None, - }, - tranche_now, - )); -} - -#[test] -fn wakeups_next() { - let mut wakeups = Wakeups::default(); - - let b_a = Hash::repeat_byte(0); - let b_b = Hash::repeat_byte(1); - - let c_a = CandidateHash(Hash::repeat_byte(2)); - let c_b = CandidateHash(Hash::repeat_byte(3)); - - wakeups.schedule(b_a, 0, c_a, 1); - wakeups.schedule(b_a, 0, c_b, 4); - wakeups.schedule(b_b, 1, c_b, 3); - - assert_eq!(wakeups.first().unwrap(), 1); - - let clock = MockClock::new(0); - let clock_aux = clock.clone(); - - let test_fut = Box::pin(async move { - assert_eq!(wakeups.next(&clock).await, (1, b_a, c_a)); - assert_eq!(wakeups.next(&clock).await, (3, b_b, c_b)); - assert_eq!(wakeups.next(&clock).await, (4, b_a, c_b)); - assert!(wakeups.first().is_none()); - assert!(wakeups.wakeups.is_empty()); - - assert_eq!( - wakeups.block_numbers.get(&0).unwrap(), - &vec![b_a].into_iter().collect::>(), - ); - assert_eq!( - wakeups.block_numbers.get(&1).unwrap(), - &vec![b_b].into_iter().collect::>(), - ); - - wakeups.prune_finalized_wakeups(0); - - assert!(wakeups.block_numbers.get(&0).is_none()); - assert_eq!( - wakeups.block_numbers.get(&1).unwrap(), - &vec![b_b].into_iter().collect::>(), - ); - - wakeups.prune_finalized_wakeups(1); - - assert!(wakeups.block_numbers.get(&0).is_none()); - assert!(wakeups.block_numbers.get(&1).is_none()); - }); - - let aux_fut = Box::pin(async move { - clock_aux.inner.lock().set_tick(1); - // skip direct set to 3. - clock_aux.inner.lock().set_tick(4); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); -} - -#[test] -fn wakeup_earlier_supersedes_later() { - let mut wakeups = Wakeups::default(); - - let b_a = Hash::repeat_byte(0); - let c_a = CandidateHash(Hash::repeat_byte(2)); - - wakeups.schedule(b_a, 0, c_a, 4); - wakeups.schedule(b_a, 0, c_a, 2); - wakeups.schedule(b_a, 0, c_a, 3); - - let clock = MockClock::new(0); - let clock_aux = clock.clone(); - - let test_fut = Box::pin(async move { - assert_eq!(wakeups.next(&clock).await, (2, b_a, c_a)); - assert!(wakeups.first().is_none()); - assert!(wakeups.reverse_wakeups.is_empty()); - }); - - let aux_fut = Box::pin(async move { - clock_aux.inner.lock().set_tick(2); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); -} - -#[test] -fn import_checked_approval_sets_one_block_bit_at_a_time() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let candidate_hash_2 = CandidateHash(Hash::repeat_byte(0xDD)); - - let validator_index_a = ValidatorIndex(0); - let validator_index_b = ValidatorIndex(1); - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - validator_groups: vec![vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2)]], - needed_approvals: 2, - ..Default::default() - }) - }; - - add_candidate_to_block( - &mut state.db, - block_hash, - candidate_hash_2, - 3, - CoreIndex(1), - GroupIndex(1), - ); - - let setup_candidate = |db: &mut TestStore, c_hash| { - db.candidate_entries.get_mut(&c_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index_a, 0); - - db.candidate_entries.get_mut(&c_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .import_assignment(0, validator_index_b, 0); - - assert!(!db.candidate_entries.get_mut(&c_hash).unwrap() - .mark_approval(validator_index_a)); - }; - - setup_candidate(&mut state.db, candidate_hash); - setup_candidate(&mut state.db, candidate_hash_2); - - let actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash).unwrap().clone(), - candidate_hash, - state.db.candidate_entries.get(&candidate_hash).unwrap().clone(), - ApprovalSource::Remote(validator_index_b), - ); - - assert_eq!(actions.len(), 2); - assert_matches!( - actions.get(0).unwrap(), - Action::WriteBlockEntry(b_entry) => { - assert_eq!(b_entry.block_hash(), block_hash); - assert!(!b_entry.is_fully_approved()); - assert!(b_entry.is_candidate_approved(&candidate_hash)); - assert!(!b_entry.is_candidate_approved(&candidate_hash_2)); - - state.db.block_entries.insert(block_hash, b_entry.clone()); - } - ); - - assert_matches!( - actions.get(1).unwrap(), - Action::WriteCandidateEntry(c_h, c_entry) => { - assert_eq!(c_h, &candidate_hash); - assert!(c_entry.approval_entry(&block_hash).unwrap().is_approved()); - - state.db.candidate_entries.insert(*c_h, c_entry.clone()); - } - ); - - let actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash).unwrap().clone(), - candidate_hash_2, - state.db.candidate_entries.get(&candidate_hash_2).unwrap().clone(), - ApprovalSource::Remote(validator_index_b), - ); - - assert_eq!(actions.len(), 2); - assert_matches!( - actions.get(0).unwrap(), - Action::WriteBlockEntry(b_entry) => { - assert_eq!(b_entry.block_hash(), block_hash); - assert!(b_entry.is_fully_approved()); - assert!(b_entry.is_candidate_approved(&candidate_hash)); - assert!(b_entry.is_candidate_approved(&candidate_hash_2)); - } - ); - - assert_matches!( - actions.get(1).unwrap(), - Action::WriteCandidateEntry(c_h, c_entry) => { - assert_eq!(c_h, &candidate_hash_2); - assert!(c_entry.approval_entry(&block_hash).unwrap().is_approved()); - } - ); -} - -#[test] -fn approved_ancestor_all_approved() { - let block_hash_1 = Hash::repeat_byte(0x01); - let block_hash_2 = Hash::repeat_byte(0x02); - let block_hash_3 = Hash::repeat_byte(0x03); - let block_hash_4 = Hash::repeat_byte(0x04); - - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - let slot = Slot::from(1); - let session_index = 1; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob], - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1)]], - needed_approvals: 2, - session_index, - slot, - ..Default::default() - }) - }; - - let add_block = |db: &mut TestStore, block_hash, approved| { - add_block( - db, - block_hash, - session_index, - slot, - ); - - let b = db.block_entries.get_mut(&block_hash).unwrap(); - b.add_candidate(CoreIndex(0), candidate_hash); - if approved { - b.mark_approved_by_hash(&candidate_hash); - } - }; - - add_block(&mut state.db, block_hash_1, true); - add_block(&mut state.db, block_hash_2, true); - add_block(&mut state.db, block_hash_3, true); - add_block(&mut state.db, block_hash_4, true); - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let test_fut = Box::pin(async move { - assert_eq!( - handle_approved_ancestor(&mut ctx, &state.db, block_hash_4, 0, &Default::default()) - .await.unwrap(), - Some((block_hash_4, 4)), - ) - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockNumber(target, tx)) => { - assert_eq!(target, block_hash_4); - let _ = tx.send(Ok(Some(4))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash, - k, - response_channel: tx, - }) => { - assert_eq!(hash, block_hash_4); - assert_eq!(k, 4 - (0 + 1)); - let _ = tx.send(Ok(vec![block_hash_3, block_hash_2, block_hash_1])); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); -} - -#[test] -fn approved_ancestor_missing_approval() { - let block_hash_1 = Hash::repeat_byte(0x01); - let block_hash_2 = Hash::repeat_byte(0x02); - let block_hash_3 = Hash::repeat_byte(0x03); - let block_hash_4 = Hash::repeat_byte(0x04); - - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - - let slot = Slot::from(1); - let session_index = 1; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob], - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1)]], - needed_approvals: 2, - session_index, - slot, - ..Default::default() - }) - }; - - let add_block = |db: &mut TestStore, block_hash, approved| { - add_block( - db, - block_hash, - session_index, - slot, - ); - - let b = db.block_entries.get_mut(&block_hash).unwrap(); - b.add_candidate(CoreIndex(0), candidate_hash); - if approved { - b.mark_approved_by_hash(&candidate_hash); - } - }; - - add_block(&mut state.db, block_hash_1, true); - add_block(&mut state.db, block_hash_2, true); - add_block(&mut state.db, block_hash_3, false); - add_block(&mut state.db, block_hash_4, true); - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let test_fut = Box::pin(async move { - assert_eq!( - handle_approved_ancestor(&mut ctx, &state.db, block_hash_4, 0, &Default::default()) - .await.unwrap(), - Some((block_hash_2, 2)), - ) - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockNumber(target, tx)) => { - assert_eq!(target, block_hash_4); - let _ = tx.send(Ok(Some(4))); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash, - k, - response_channel: tx, - }) => { - assert_eq!(hash, block_hash_4); - assert_eq!(k, 4 - (0 + 1)); - let _ = tx.send(Ok(vec![block_hash_3, block_hash_2, block_hash_1])); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); -} - -#[test] -fn process_wakeup_trigger_assignment_launch_approval() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let slot = Slot::from(1); - let session_index = 1; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob], - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1)]], - needed_approvals: 2, - session_index, - slot, - ..Default::default() - }) - }; - - let actions = process_wakeup( - &state, - block_hash, - candidate_hash, - 1, - ).unwrap(); - - assert!(actions.is_empty()); - - state.db.candidate_entries - .get_mut(&candidate_hash) - .unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .set_our_assignment(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 0, - validator_index: ValidatorIndex(0), - triggered: false, - }.into()); - - let actions = process_wakeup( - &state, - block_hash, - candidate_hash, - 1, - ).unwrap(); - - assert_eq!(actions.len(), 3); - assert_matches!( - actions.get(0).unwrap(), - Action::WriteCandidateEntry(c_hash, c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert!(c_entry - .approval_entry(&block_hash) - .unwrap() - .our_assignment() - .unwrap() - .triggered() - ); - } - ); - - assert_matches!( - actions.get(1).unwrap(), - Action::LaunchApproval { - candidate_index, - .. - } => { - assert_eq!(candidate_index, &0); - } - ); - - assert_matches!( - actions.get(2).unwrap(), - Action::ScheduleWakeup { - tick, - .. - } => { - assert_eq!(tick, &slot_to_tick(0 + 2)); - } - ) -} - -#[test] -fn process_wakeup_schedules_wakeup() { - let block_hash = Hash::repeat_byte(0x01); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let slot = Slot::from(1); - let session_index = 1; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(10) - })), - ..some_state(StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob], - validator_groups: vec![vec![ValidatorIndex(0)], vec![ValidatorIndex(1)]], - needed_approvals: 2, - session_index, - slot, - ..Default::default() - }) - }; - - state.db.candidate_entries - .get_mut(&candidate_hash) - .unwrap() - .approval_entry_mut(&block_hash) - .unwrap() - .set_our_assignment(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 10, - validator_index: ValidatorIndex(0), - triggered: false, - }.into()); - - let actions = process_wakeup( - &state, - block_hash, - candidate_hash, - 1, - ).unwrap(); - - assert_eq!(actions.len(), 1); - assert_matches!( - actions.get(0).unwrap(), - Action::ScheduleWakeup { block_hash: b, candidate_hash: c, tick, .. } => { - assert_eq!(b, &block_hash); - assert_eq!(c, &candidate_hash); - assert_eq!(tick, &(slot_to_tick(slot) + 10)); - } - ); -} - -#[test] -fn triggered_assignment_leads_to_recovery_and_validation() { - -} - -#[test] -fn finalization_event_prunes() { - -} - -#[test] -fn local_approval_import_always_updates_approval_entry() { - let block_hash = Hash::repeat_byte(0x01); - let block_hash_2 = Hash::repeat_byte(0x02); - let candidate_hash = CandidateHash(Hash::repeat_byte(0xCC)); - let validator_index = ValidatorIndex(0); - - let state_config = StateConfig { - validators: vec![Sr25519Keyring::Alice, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - validator_groups: vec![vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2)]], - needed_approvals: 2, - ..Default::default() - }; - - let mut state = State { - assignment_criteria: Box::new(MockAssignmentCriteria::check_only(|| { - Ok(0) - })), - ..some_state(state_config.clone()) - }; - - add_block( - &mut state.db, - block_hash_2, - state_config.session_index, - state_config.slot, - ); - - add_candidate_to_block( - &mut state.db, - block_hash_2, - candidate_hash, - state_config.validators.len(), - 1.into(), - GroupIndex(1), - ); - - let sig_a = sign_approval(Sr25519Keyring::Alice, candidate_hash, 1); - let sig_b = sign_approval(Sr25519Keyring::Alice, candidate_hash, 1); - - { - let mut import_local_assignment = |block_hash: Hash| { - let approval_entry = state.db.candidate_entries.get_mut(&candidate_hash).unwrap() - .approval_entry_mut(&block_hash) - .unwrap(); - - approval_entry.set_our_assignment(approval_db::v1::OurAssignment { - cert: garbage_assignment_cert( - AssignmentCertKind::RelayVRFModulo { sample: 0 } - ), - tranche: 0, - validator_index, - triggered: false, - }.into()); - - assert!(approval_entry.trigger_our_assignment(0).is_some()); - assert!(approval_entry.local_statements().0.is_some()); - }; - - import_local_assignment(block_hash); - import_local_assignment(block_hash_2); - } - - { - let mut actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash).unwrap().clone(), - candidate_hash, - state.db.candidate_entries.get(&candidate_hash).unwrap().clone(), - ApprovalSource::Local(validator_index, sig_a.clone()), - ); - - assert_eq!(actions.len(), 1); - - assert_matches!( - actions.get_mut(0).unwrap(), - Action::WriteCandidateEntry(c_hash, ref mut c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert_eq!( - c_entry.approval_entry(&block_hash).unwrap().local_statements().1, - Some(sig_a), - ); - assert!(c_entry.mark_approval(validator_index)); - - state.db.candidate_entries.insert(candidate_hash, c_entry.clone()); - } - ); - } - - { - let mut actions = import_checked_approval( - &state, - &Metrics(None), - state.db.block_entries.get(&block_hash_2).unwrap().clone(), - candidate_hash, - state.db.candidate_entries.get(&candidate_hash).unwrap().clone(), - ApprovalSource::Local(validator_index, sig_b.clone()), - ); - - assert_eq!(actions.len(), 1); - - assert_matches!( - actions.get_mut(0).unwrap(), - Action::WriteCandidateEntry(c_hash, ref mut c_entry) => { - assert_eq!(c_hash, &candidate_hash); - assert_eq!( - c_entry.approval_entry(&block_hash_2).unwrap().local_statements().1, - Some(sig_b), - ); - assert!(c_entry.mark_approval(validator_index)); - - state.db.candidate_entries.insert(candidate_hash, c_entry.clone()); - } - ); - } -} - -// TODO [now]: handling `BecomeActive` action broadcasts everything. diff --git a/node/core/approval-voting/src/time.rs b/node/core/approval-voting/src/time.rs deleted file mode 100644 index 4ca85fa44dae..000000000000 --- a/node/core/approval-voting/src/time.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Time utilities for approval voting. - -use polkadot_node_primitives::approval::DelayTranche; -use sp_consensus_slots::Slot; -use futures::prelude::*; -use std::time::{Duration, SystemTime}; -use std::pin::Pin; - -const TICK_DURATION_MILLIS: u64 = 500; - -/// A base unit of time, starting from the unix epoch, split into half-second intervals. -pub(crate) type Tick = u64; - -/// A clock which allows querying of the current tick as well as -/// waiting for a tick to be reached. -pub(crate) trait Clock { - /// Yields the current tick. - fn tick_now(&self) -> Tick; - - /// Yields a future which concludes when the given tick is reached. - fn wait(&self, tick: Tick) -> Pin + Send + 'static>>; -} - -/// Extension methods for clocks. -pub(crate) trait ClockExt { - fn tranche_now(&self, slot_duration_millis: u64, base_slot: Slot) -> DelayTranche; -} - -impl ClockExt for C { - fn tranche_now(&self, slot_duration_millis: u64, base_slot: Slot) -> DelayTranche { - self.tick_now() - .saturating_sub(slot_number_to_tick(slot_duration_millis, base_slot)) as u32 - } -} - -/// A clock which uses the actual underlying system clock. -pub(crate) struct SystemClock; - -impl Clock for SystemClock { - /// Yields the current tick. - fn tick_now(&self) -> Tick { - match SystemTime::now().duration_since(SystemTime::UNIX_EPOCH) { - Err(_) => 0, - Ok(d) => d.as_millis() as u64 / TICK_DURATION_MILLIS, - } - } - - /// Yields a future which concludes when the given tick is reached. - fn wait(&self, tick: Tick) -> Pin + Send>> { - let fut = async move { - let now = SystemTime::now(); - let tick_onset = tick_to_time(tick); - if now < tick_onset { - if let Some(until) = tick_onset.duration_since(now).ok() { - futures_timer::Delay::new(until).await; - } - } - }; - - Box::pin(fut) - } -} - -fn tick_to_time(tick: Tick) -> SystemTime { - SystemTime::UNIX_EPOCH + Duration::from_millis(TICK_DURATION_MILLIS * tick) -} - -/// assumes `slot_duration_millis` evenly divided by tick duration. -pub(crate) fn slot_number_to_tick(slot_duration_millis: u64, slot: Slot) -> Tick { - let ticks_per_slot = slot_duration_millis / TICK_DURATION_MILLIS; - u64::from(slot) * ticks_per_slot -} diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml deleted file mode 100644 index 1880b5b80fff..000000000000 --- a/node/core/av-store/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "polkadot-node-core-av-store" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -futures-timer = "3.0.2" -kvdb = "0.9.0" -thiserror = "1.0.23" -tracing = "0.1.26" -bitvec = "0.20.1" - -parity-scale-codec = { version = "2.0.0", features = ["derive"] } -erasure = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-overseer = { path = "../../overseer" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } - -[dev-dependencies] -log = "0.4.13" -env_logger = "0.8.4" -assert_matches = "1.4.0" -kvdb-memorydb = "0.9.0" - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -parking_lot = "0.11.1" diff --git a/node/core/av-store/src/lib.rs b/node/core/av-store/src/lib.rs deleted file mode 100644 index 4c646f5e2d5b..000000000000 --- a/node/core/av-store/src/lib.rs +++ /dev/null @@ -1,1432 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements a `AvailabilityStoreSubsystem`. - -#![recursion_limit="256"] -#![warn(missing_docs)] - -use std::collections::{HashMap, HashSet, BTreeSet}; -use std::io; -use std::sync::Arc; -use std::time::{Duration, SystemTime, SystemTimeError, UNIX_EPOCH}; - -use parity_scale_codec::{Encode, Decode, Input, Error as CodecError}; -use futures::{select, channel::oneshot, future, FutureExt}; -use futures_timer::Delay; -use kvdb::{KeyValueDB, DBTransaction}; - -use polkadot_primitives::v1::{ - Hash, BlockNumber, CandidateEvent, ValidatorIndex, CandidateHash, - CandidateReceipt, Header, -}; -use polkadot_node_primitives::{ - ErasureChunk, AvailableData, -}; -use polkadot_subsystem::{ - FromOverseer, OverseerSignal, SubsystemError, Subsystem, SubsystemContext, SpawnedSubsystem, - ActiveLeavesUpdate, - errors::{ChainApiError, RuntimeApiError}, -}; -use polkadot_node_subsystem_util::{ - self as util, - metrics::{self, prometheus}, -}; -use polkadot_subsystem::messages::{ - AvailabilityStoreMessage, ChainApiMessage, RuntimeApiMessage, RuntimeApiRequest, -}; -use bitvec::{vec::BitVec, order::Lsb0 as BitOrderLsb0}; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::availability"; - -/// The following constants are used under normal conditions: - -const AVAILABLE_PREFIX: &[u8; 9] = b"available"; -const CHUNK_PREFIX: &[u8; 5] = b"chunk"; -const META_PREFIX: &[u8; 4] = b"meta"; -const UNFINALIZED_PREFIX: &[u8; 11] = b"unfinalized"; -const PRUNE_BY_TIME_PREFIX: &[u8; 13] = b"prune_by_time"; - -// We have some keys we want to map to empty values because existence of the key is enough. We use this because -// rocksdb doesn't support empty values. -const TOMBSTONE_VALUE: &[u8] = &*b" "; - -/// Unavailable blocks are kept for 1 hour. -const KEEP_UNAVAILABLE_FOR: Duration = Duration::from_secs(60 * 60); - -/// Finalized data is kept for 25 hours. -const KEEP_FINALIZED_FOR: Duration = Duration::from_secs(25 * 60 * 60); - -/// The pruning interval. -const PRUNING_INTERVAL: Duration = Duration::from_secs(60 * 5); - -/// Unix time wrapper with big-endian encoding. -#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord)] -struct BETimestamp(u64); - -impl Encode for BETimestamp { - fn size_hint(&self) -> usize { - std::mem::size_of::() - } - - fn using_encoded R>(&self, f: F) -> R { - f(&self.0.to_be_bytes()) - } -} - -impl Decode for BETimestamp { - fn decode(value: &mut I) -> Result { - <[u8; 8]>::decode(value).map(u64::from_be_bytes).map(Self) - } -} - -impl From for BETimestamp { - fn from(d: Duration) -> Self { - BETimestamp(d.as_secs()) - } -} - -impl Into for BETimestamp { - fn into(self) -> Duration { - Duration::from_secs(self.0) - } -} - -/// [`BlockNumber`] wrapper with big-endian encoding. -#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord)] -struct BEBlockNumber(BlockNumber); - -impl Encode for BEBlockNumber { - fn size_hint(&self) -> usize { - std::mem::size_of::() - } - - fn using_encoded R>(&self, f: F) -> R { - f(&self.0.to_be_bytes()) - } -} - -impl Decode for BEBlockNumber { - fn decode(value: &mut I) -> Result { - <[u8; std::mem::size_of::()]>::decode(value).map(BlockNumber::from_be_bytes).map(Self) - } -} - -#[derive(Debug, Encode, Decode)] -enum State { - /// Candidate data was first observed at the given time but is not available in any block. - #[codec(index = 0)] - Unavailable(BETimestamp), - /// The candidate was first observed at the given time and was included in the given list of unfinalized blocks, which may be - /// empty. The timestamp here is not used for pruning. Either one of these blocks will be finalized or the state will regress to - /// `State::Unavailable`, in which case the same timestamp will be reused. Blocks are sorted ascending first by block number and - /// then hash. - #[codec(index = 1)] - Unfinalized(BETimestamp, Vec<(BEBlockNumber, Hash)>), - /// Candidate data has appeared in a finalized block and did so at the given time. - #[codec(index = 2)] - Finalized(BETimestamp) -} - -// Meta information about a candidate. -#[derive(Debug, Encode, Decode)] -struct CandidateMeta { - state: State, - data_available: bool, - chunks_stored: BitVec, -} - -fn query_inner( - db: &Arc, - column: u32, - key: &[u8], -) -> Result, Error> { - match db.get(column, key) { - Ok(Some(raw)) => { - let res = D::decode(&mut &raw[..])?; - Ok(Some(res)) - } - Ok(None) => Ok(None), - Err(e) => { - tracing::warn!(target: LOG_TARGET, err = ?e, "Error reading from the availability store"); - Err(e.into()) - } - } -} - -fn write_available_data( - tx: &mut DBTransaction, - config: &Config, - hash: &CandidateHash, - available_data: &AvailableData, -) { - let key = (AVAILABLE_PREFIX, hash).encode(); - - tx.put_vec(config.col_data, &key[..], available_data.encode()); -} - -fn load_available_data( - db: &Arc, - config: &Config, - hash: &CandidateHash, -) -> Result, Error> { - let key = (AVAILABLE_PREFIX, hash).encode(); - - query_inner(db, config.col_data, &key) -} - -fn delete_available_data( - tx: &mut DBTransaction, - config: &Config, - hash: &CandidateHash, -) { - let key = (AVAILABLE_PREFIX, hash).encode(); - - tx.delete(config.col_data, &key[..]) -} - -fn load_chunk( - db: &Arc, - config: &Config, - candidate_hash: &CandidateHash, - chunk_index: ValidatorIndex, -) -> Result, Error> { - let key = (CHUNK_PREFIX, candidate_hash, chunk_index).encode(); - - query_inner(db, config.col_data, &key) -} - -fn write_chunk( - tx: &mut DBTransaction, - config: &Config, - candidate_hash: &CandidateHash, - chunk_index: ValidatorIndex, - erasure_chunk: &ErasureChunk, -) { - let key = (CHUNK_PREFIX, candidate_hash, chunk_index).encode(); - - tx.put_vec(config.col_data, &key, erasure_chunk.encode()); -} - -fn delete_chunk( - tx: &mut DBTransaction, - config: &Config, - candidate_hash: &CandidateHash, - chunk_index: ValidatorIndex, -) { - let key = (CHUNK_PREFIX, candidate_hash, chunk_index).encode(); - - tx.delete(config.col_data, &key[..]); -} - -fn load_meta( - db: &Arc, - config: &Config, - hash: &CandidateHash, -) -> Result, Error> { - let key = (META_PREFIX, hash).encode(); - - query_inner(db, config.col_meta, &key) -} - -fn write_meta( - tx: &mut DBTransaction, - config: &Config, - hash: &CandidateHash, - meta: &CandidateMeta, -) { - let key = (META_PREFIX, hash).encode(); - - tx.put_vec(config.col_meta, &key, meta.encode()); -} - -fn delete_meta(tx: &mut DBTransaction, config: &Config, hash: &CandidateHash) { - let key = (META_PREFIX, hash).encode(); - tx.delete(config.col_meta, &key[..]) -} - -fn delete_unfinalized_height( - tx: &mut DBTransaction, - config: &Config, - block_number: BlockNumber, -) { - let prefix = (UNFINALIZED_PREFIX, BEBlockNumber(block_number)).encode(); - tx.delete_prefix(config.col_meta, &prefix); -} - -fn delete_unfinalized_inclusion( - tx: &mut DBTransaction, - config: &Config, - block_number: BlockNumber, - block_hash: &Hash, - candidate_hash: &CandidateHash, -) { - let key = ( - UNFINALIZED_PREFIX, - BEBlockNumber(block_number), - block_hash, - candidate_hash, - ).encode(); - - tx.delete(config.col_meta, &key[..]); -} - -fn delete_pruning_key( - tx: &mut DBTransaction, - config: &Config, - t: impl Into, - h: &CandidateHash, -) { - let key = (PRUNE_BY_TIME_PREFIX, t.into(), h).encode(); - tx.delete(config.col_meta, &key); -} - -fn write_pruning_key( - tx: &mut DBTransaction, - config: &Config, - t: impl Into, - h: &CandidateHash, -) { - let t = t.into(); - let key = (PRUNE_BY_TIME_PREFIX, t, h).encode(); - tx.put(config.col_meta, &key, TOMBSTONE_VALUE); -} - -fn finalized_block_range(finalized: BlockNumber) -> (Vec, Vec) { - // We use big-endian encoding to iterate in ascending order. - let start = UNFINALIZED_PREFIX.encode(); - let end = (UNFINALIZED_PREFIX, BEBlockNumber(finalized + 1)).encode(); - - (start, end) -} - -fn write_unfinalized_block_contains( - tx: &mut DBTransaction, - config: &Config, - n: BlockNumber, - h: &Hash, - ch: &CandidateHash, -) { - let key = (UNFINALIZED_PREFIX, BEBlockNumber(n), h, ch).encode(); - tx.put(config.col_meta, &key, TOMBSTONE_VALUE); -} - -fn pruning_range(now: impl Into) -> (Vec, Vec) { - let start = PRUNE_BY_TIME_PREFIX.encode(); - let end = (PRUNE_BY_TIME_PREFIX, BETimestamp(now.into().0 + 1)).encode(); - - (start, end) -} - -fn decode_unfinalized_key(s: &[u8]) -> Result<(BlockNumber, Hash, CandidateHash), CodecError> { - if !s.starts_with(UNFINALIZED_PREFIX) { - return Err("missing magic string".into()); - } - - <(BEBlockNumber, Hash, CandidateHash)>::decode(&mut &s[UNFINALIZED_PREFIX.len()..]) - .map(|(b, h, ch)| (b.0, h, ch)) -} - -fn decode_pruning_key(s: &[u8]) -> Result<(Duration, CandidateHash), CodecError> { - if !s.starts_with(PRUNE_BY_TIME_PREFIX) { - return Err("missing magic string".into()); - } - - <(BETimestamp, CandidateHash)>::decode(&mut &s[PRUNE_BY_TIME_PREFIX.len()..]) - .map(|(t, ch)| (t.into(), ch)) -} - -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - RuntimeApi(#[from] RuntimeApiError), - - #[error(transparent)] - ChainApi(#[from] ChainApiError), - - #[error(transparent)] - Erasure(#[from] erasure::Error), - - #[error(transparent)] - Io(#[from] io::Error), - - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - - #[error(transparent)] - Subsystem(#[from] SubsystemError), - - #[error(transparent)] - Time(#[from] SystemTimeError), - - #[error(transparent)] - Codec(#[from] CodecError), - - #[error("Custom databases are not supported")] - CustomDatabase, -} - -impl Error { - fn trace(&self) { - match self { - // don't spam the log with spurious errors - Self::RuntimeApi(_) | - Self::Oneshot(_) => tracing::debug!(target: LOG_TARGET, err = ?self), - // it's worth reporting otherwise - _ => tracing::warn!(target: LOG_TARGET, err = ?self), - } - } -} - -/// Struct holding pruning timing configuration. -/// The only purpose of this structure is to use different timing -/// configurations in production and in testing. -#[derive(Clone)] -struct PruningConfig { - /// How long unavailable data should be kept. - keep_unavailable_for: Duration, - - /// How long finalized data should be kept. - keep_finalized_for: Duration, - - /// How often to perform data pruning. - pruning_interval: Duration, -} - -impl Default for PruningConfig { - fn default() -> Self { - Self { - keep_unavailable_for: KEEP_UNAVAILABLE_FOR, - keep_finalized_for: KEEP_FINALIZED_FOR, - pruning_interval: PRUNING_INTERVAL, - } - } -} - -/// Configuration for the availability store. -#[derive(Debug, Clone, Copy)] -pub struct Config { - /// The column family for availability data and chunks. - pub col_data: u32, - /// The column family for availability store meta information. - pub col_meta: u32, -} - -trait Clock: Send + Sync { - // Returns time since unix epoch. - fn now(&self) -> Result; -} - -struct SystemClock; - -impl Clock for SystemClock { - fn now(&self) -> Result { - SystemTime::now().duration_since(UNIX_EPOCH).map_err(Into::into) - } -} - -/// An implementation of the Availability Store subsystem. -pub struct AvailabilityStoreSubsystem { - pruning_config: PruningConfig, - config: Config, - db: Arc, - known_blocks: KnownUnfinalizedBlocks, - finalized_number: Option, - metrics: Metrics, - clock: Box, -} - -impl AvailabilityStoreSubsystem { - /// Create a new `AvailabilityStoreSubsystem` with a given config on disk. - pub fn new( - db: Arc, - config: Config, - metrics: Metrics, - ) -> Self { - Self::with_pruning_config_and_clock( - db, - config, - PruningConfig::default(), - Box::new(SystemClock), - metrics, - ) - } - - /// Create a new `AvailabilityStoreSubsystem` with a given config on disk. - fn with_pruning_config_and_clock( - db: Arc, - config: Config, - pruning_config: PruningConfig, - clock: Box, - metrics: Metrics, - ) -> Self { - Self { - pruning_config, - config, - db, - metrics, - clock, - known_blocks: KnownUnfinalizedBlocks::default(), - finalized_number: None, - } - } -} - -/// We keep the hashes and numbers of all unfinalized -/// processed blocks in memory. -#[derive(Default, Debug)] -struct KnownUnfinalizedBlocks { - by_hash: HashSet, - by_number: BTreeSet<(BlockNumber, Hash)>, -} - -impl KnownUnfinalizedBlocks { - /// Check whether the block has been already processed. - fn is_known(&self, hash: &Hash) -> bool { - self.by_hash.contains(hash) - } - - /// Insert a new block into the known set. - fn insert(&mut self, hash: Hash, number: BlockNumber) { - self.by_hash.insert(hash); - self.by_number.insert((number, hash)); - } - - /// Prune all finalized blocks. - fn prune_finalized(&mut self, finalized: BlockNumber) { - // split_off returns everything after the given key, including the key - let split_point = finalized.saturating_add(1); - let mut finalized = self.by_number.split_off(&(split_point, Hash::zero())); - // after split_off `finalized` actually contains unfinalized blocks, we need to swap - std::mem::swap(&mut self.by_number, &mut finalized); - for (_, block) in finalized { - self.by_hash.remove(&block); - } - } -} - -impl Subsystem for AvailabilityStoreSubsystem -where - Context: SubsystemContext, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = run(self, ctx) - .map(|_| Ok(())) - .boxed(); - - SpawnedSubsystem { - name: "availability-store-subsystem", - future, - } - } -} - -async fn run(mut subsystem: AvailabilityStoreSubsystem, mut ctx: Context) -where - Context: SubsystemContext, -{ - let mut next_pruning = Delay::new(subsystem.pruning_config.pruning_interval).fuse(); - - loop { - let res = run_iteration(&mut ctx, &mut subsystem, &mut next_pruning).await; - match res { - Err(e) => { - e.trace(); - - if let Error::Subsystem(SubsystemError::Context(_)) = e { - break; - } - } - Ok(true) => { - tracing::info!(target: LOG_TARGET, "received `Conclude` signal, exiting"); - break; - }, - Ok(false) => continue, - } - } -} - -async fn run_iteration( - ctx: &mut Context, - subsystem: &mut AvailabilityStoreSubsystem, - mut next_pruning: &mut future::Fuse, -) - -> Result -where - Context: SubsystemContext, -{ - select! { - incoming = ctx.recv().fuse() => { - match incoming? { - FromOverseer::Signal(OverseerSignal::Conclude) => return Ok(true), - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate { activated, .. }) - ) => { - for activated in activated.into_iter() { - let _timer = subsystem.metrics.time_block_activated(); - process_block_activated(ctx, subsystem, activated.hash).await?; - } - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(hash, number)) => { - let _timer = subsystem.metrics.time_process_block_finalized(); - - subsystem.finalized_number = Some(number); - subsystem.known_blocks.prune_finalized(number); - process_block_finalized( - ctx, - &subsystem, - hash, - number, - ).await?; - } - FromOverseer::Communication { msg } => { - let _timer = subsystem.metrics.time_process_message(); - process_message(subsystem, msg)?; - } - } - } - _ = next_pruning => { - // It's important to set the delay before calling `prune_all` because an error in `prune_all` - // could lead to the delay not being set again. Then we would never prune anything anymore. - *next_pruning = Delay::new(subsystem.pruning_config.pruning_interval).fuse(); - - let _timer = subsystem.metrics.time_pruning(); - prune_all(&subsystem.db, &subsystem.config, &*subsystem.clock)?; - } - } - - Ok(false) -} - -async fn process_block_activated( - ctx: &mut impl SubsystemContext, - subsystem: &mut AvailabilityStoreSubsystem, - activated: Hash, -) -> Result<(), Error> { - let now = subsystem.clock.now()?; - - let block_header = { - let (tx, rx) = oneshot::channel(); - - ctx.send_message( - ChainApiMessage::BlockHeader(activated, tx).into() - ).await; - - match rx.await?? { - None => return Ok(()), - Some(n) => n, - } - }; - let block_number = block_header.number; - - let new_blocks = util::determine_new_blocks( - ctx.sender(), - |hash| -> Result { - Ok(subsystem.known_blocks.is_known(hash)) - }, - activated, - &block_header, - subsystem.finalized_number.unwrap_or(block_number.saturating_sub(1)), - ).await?; - - let mut tx = DBTransaction::new(); - // determine_new_blocks is descending in block height - for (hash, header) in new_blocks.into_iter().rev() { - process_new_head( - ctx, - &subsystem.db, - &mut tx, - &subsystem.config, - &subsystem.pruning_config, - now, - hash, - header, - ).await?; - subsystem.known_blocks.insert(hash, block_number); - } - subsystem.db.write(tx)?; - - Ok(()) -} - -async fn process_new_head( - ctx: &mut impl SubsystemContext, - db: &Arc, - db_transaction: &mut DBTransaction, - config: &Config, - pruning_config: &PruningConfig, - now: Duration, - hash: Hash, - header: Header, -) -> Result<(), Error> { - - let candidate_events = { - let (tx, rx) = oneshot::channel(); - ctx.send_message( - RuntimeApiMessage::Request(hash, RuntimeApiRequest::CandidateEvents(tx)).into() - ).await; - - rx.await?? - }; - - // We need to request the number of validators based on the parent state, - // as that is the number of validators used to create this block. - let n_validators = { - let (tx, rx) = oneshot::channel(); - ctx.send_message( - RuntimeApiMessage::Request(header.parent_hash, RuntimeApiRequest::Validators(tx)).into() - ).await; - - rx.await??.len() - }; - - for event in candidate_events { - match event { - CandidateEvent::CandidateBacked(receipt, _head, _core_index, _group_index) => { - note_block_backed( - db, - db_transaction, - config, - pruning_config, - now, - n_validators, - receipt, - )?; - } - CandidateEvent::CandidateIncluded(receipt, _head, _core_index, _group_index) => { - note_block_included( - db, - db_transaction, - config, - pruning_config, - (header.number, hash), - receipt, - )?; - } - _ => {} - } - } - - Ok(()) -} - -fn note_block_backed( - db: &Arc, - db_transaction: &mut DBTransaction, - config: &Config, - pruning_config: &PruningConfig, - now: Duration, - n_validators: usize, - candidate: CandidateReceipt, -) -> Result<(), Error> { - let candidate_hash = candidate.hash(); - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - "Candidate backed", - ); - - if load_meta(db, config, &candidate_hash)?.is_none() { - let meta = CandidateMeta { - state: State::Unavailable(now.into()), - data_available: false, - chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - }; - - let prune_at = now + pruning_config.keep_unavailable_for; - - write_pruning_key(db_transaction, config, prune_at, &candidate_hash); - write_meta(db_transaction, config, &candidate_hash, &meta); - } - - Ok(()) -} - -fn note_block_included( - db: &Arc, - db_transaction: &mut DBTransaction, - config: &Config, - pruning_config:&PruningConfig, - block: (BlockNumber, Hash), - candidate: CandidateReceipt, -) -> Result<(), Error> { - let candidate_hash = candidate.hash(); - - match load_meta(db, config, &candidate_hash)? { - None => { - // This is alarming. We've observed a block being included without ever seeing it backed. - // Warn and ignore. - tracing::warn!( - target: LOG_TARGET, - ?candidate_hash, - "Candidate included without being backed?", - ); - } - Some(mut meta) => { - let be_block = (BEBlockNumber(block.0), block.1); - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - "Candidate included", - ); - - meta.state = match meta.state { - State::Unavailable(at) => { - let at_d: Duration = at.into(); - let prune_at = at_d + pruning_config.keep_unavailable_for; - delete_pruning_key(db_transaction, config, prune_at, &candidate_hash); - - State::Unfinalized(at, vec![be_block]) - } - State::Unfinalized(at, mut within) => { - if let Err(i) = within.binary_search(&be_block) { - within.insert(i, be_block); - State::Unfinalized(at, within) - } else { - return Ok(()); - } - } - State::Finalized(_at) => { - // This should never happen as a candidate would have to be included after - // finality. - return Ok(()) - } - }; - - write_unfinalized_block_contains( - db_transaction, - config, - block.0, - &block.1, - &candidate_hash, - ); - write_meta(db_transaction, config, &candidate_hash, &meta); - } - } - - Ok(()) -} - -macro_rules! peek_num { - ($iter:ident) => { - match $iter.peek() { - Some((k, _)) => decode_unfinalized_key(&k[..]).ok().map(|(b, _, _)| b), - None => None - } - } -} - -async fn process_block_finalized( - ctx: &mut impl SubsystemContext, - subsystem: &AvailabilityStoreSubsystem, - finalized_hash: Hash, - finalized_number: BlockNumber, -) -> Result<(), Error> { - let now = subsystem.clock.now()?; - - let mut next_possible_batch = 0; - loop { - let mut db_transaction = DBTransaction::new(); - let (start_prefix, end_prefix) = finalized_block_range(finalized_number); - - // We have to do some juggling here of the `iter` to make sure it doesn't cross the `.await` boundary - // as it is not `Send`. That is why we create the iterator once within this loop, drop it, - // do an asynchronous request, and then instantiate the exact same iterator again. - let batch_num = { - let mut iter = subsystem.db.iter_with_prefix(subsystem.config.col_meta, &start_prefix) - .take_while(|(k, _)| &k[..] < &end_prefix[..]) - .peekable(); - - match peek_num!(iter) { - None => break, // end of iterator. - Some(n) => n, - } - }; - - if batch_num < next_possible_batch { continue } // sanity. - next_possible_batch = batch_num + 1; - - let batch_finalized_hash = if batch_num == finalized_number { - finalized_hash - } else { - let (tx, rx) = oneshot::channel(); - ctx.send_message(ChainApiMessage::FinalizedBlockHash(batch_num, tx).into()).await; - - match rx.await?? { - None => { - tracing::warn!(target: LOG_TARGET, - "Availability store was informed that block #{} is finalized, \ - but chain API has no finalized hash.", - batch_num, - ); - - break - } - Some(h) => h, - } - }; - - let iter = subsystem.db.iter_with_prefix(subsystem.config.col_meta, &start_prefix) - .take_while(|(k, _)| &k[..] < &end_prefix[..]) - .peekable(); - - let batch = load_all_at_finalized_height(iter, batch_num, batch_finalized_hash); - - // Now that we've iterated over the entire batch at this finalized height, - // update the meta. - - delete_unfinalized_height(&mut db_transaction, &subsystem.config, batch_num); - - update_blocks_at_finalized_height( - &subsystem, - &mut db_transaction, - batch, - batch_num, - now, - )?; - - // We need to write at the end of the loop so the prefix iterator doesn't pick up the same values again - // in the next iteration. Another unfortunate effect of having to re-initialize the iterator. - subsystem.db.write(db_transaction)?; - } - - Ok(()) -} - -// loads all candidates at the finalized height and maps them to `true` if finalized -// and `false` if unfinalized. -fn load_all_at_finalized_height( - mut iter: std::iter::Peekable, Box<[u8]>)>>, - block_number: BlockNumber, - finalized_hash: Hash, -) -> impl IntoIterator { - // maps candidate hashes to true if finalized, false otherwise. - let mut candidates = HashMap::new(); - - // Load all candidates that were included at this height. - loop { - match peek_num!(iter) { - None => break, // end of iterator. - Some(n) if n != block_number => break, // end of batch. - _ => {} - } - - let (k, _v) = iter.next().expect("`peek` used to check non-empty; qed"); - let (_, block_hash, candidate_hash) = decode_unfinalized_key(&k[..]) - .expect("`peek_num` checks validity of key; qed"); - - if block_hash == finalized_hash { - candidates.insert(candidate_hash, true); - } else { - candidates.entry(candidate_hash).or_insert(false); - } - } - - candidates -} - -fn update_blocks_at_finalized_height( - subsystem: &AvailabilityStoreSubsystem, - db_transaction: &mut DBTransaction, - candidates: impl IntoIterator, - block_number: BlockNumber, - now: Duration, -) -> Result<(), Error> { - for (candidate_hash, is_finalized) in candidates { - let mut meta = match load_meta(&subsystem.db, &subsystem.config, &candidate_hash)? { - None => { - tracing::warn!( - target: LOG_TARGET, - "Dangling candidate metadata for {}", - candidate_hash, - ); - - continue; - } - Some(c) => c, - }; - - if is_finalized { - // Clear everything else related to this block. We're finalized now! - match meta.state { - State::Finalized(_) => continue, // sanity - State::Unavailable(at) => { - // This is also not going to happen; the very fact that we are - // iterating over the candidate here indicates that `State` should - // be `Unfinalized`. - delete_pruning_key(db_transaction, &subsystem.config, at, &candidate_hash); - } - State::Unfinalized(_, blocks) => { - for (block_num, block_hash) in blocks.iter().cloned() { - // this exact height is all getting cleared out anyway. - if block_num.0 != block_number { - delete_unfinalized_inclusion( - db_transaction, - &subsystem.config, - block_num.0, - &block_hash, - &candidate_hash, - ); - } - } - } - } - - meta.state = State::Finalized(now.into()); - - // Write the meta and a pruning record. - write_meta(db_transaction, &subsystem.config, &candidate_hash, &meta); - write_pruning_key( - db_transaction, - &subsystem.config, - now + subsystem.pruning_config.keep_finalized_for, - &candidate_hash, - ); - } else { - meta.state = match meta.state { - State::Finalized(_) => continue, // sanity. - State::Unavailable(_) => continue, // sanity. - State::Unfinalized(at, mut blocks) => { - // Clear out everything at this height. - blocks.retain(|(n, _)| n.0 != block_number); - - // If empty, we need to go back to being unavailable as we aren't - // aware of any blocks this is included in. - if blocks.is_empty() { - let at_d: Duration = at.into(); - let prune_at = at_d + subsystem.pruning_config.keep_unavailable_for; - write_pruning_key( - db_transaction, - &subsystem.config, - prune_at, - &candidate_hash, - ); - State::Unavailable(at) - } else { - State::Unfinalized(at, blocks) - } - } - }; - - // Update the meta entry. - write_meta(db_transaction, &subsystem.config, &candidate_hash, &meta) - } - } - - Ok(()) -} - -fn process_message( - subsystem: &mut AvailabilityStoreSubsystem, - msg: AvailabilityStoreMessage, -) -> Result<(), Error> { - match msg { - AvailabilityStoreMessage::QueryAvailableData(candidate, tx) => { - let _ = tx.send(load_available_data(&subsystem.db, &subsystem.config, &candidate)?); - } - AvailabilityStoreMessage::QueryDataAvailability(candidate, tx) => { - let a = load_meta(&subsystem.db, &subsystem.config, &candidate)?.map_or(false, |m| m.data_available); - let _ = tx.send(a); - } - AvailabilityStoreMessage::QueryChunk(candidate, validator_index, tx) => { - let _timer = subsystem.metrics.time_get_chunk(); - let _ = tx.send(load_chunk(&subsystem.db, &subsystem.config, &candidate, validator_index)?); - } - AvailabilityStoreMessage::QueryAllChunks(candidate, tx) => { - match load_meta(&subsystem.db, &subsystem.config, &candidate)? { - None => { - let _ = tx.send(Vec::new()); - } - Some(meta) => { - let mut chunks = Vec::new(); - - for (index, _) in meta.chunks_stored.iter().enumerate().filter(|(_, b)| **b) { - let _timer = subsystem.metrics.time_get_chunk(); - match load_chunk( - &subsystem.db, - &subsystem.config, - &candidate, - ValidatorIndex(index as _), - )? { - Some(c) => chunks.push(c), - None => { - tracing::warn!( - target: LOG_TARGET, - ?candidate, - index, - "No chunk found for set bit in meta" - ); - } - } - } - - let _ = tx.send(chunks); - } - } - } - AvailabilityStoreMessage::QueryChunkAvailability(candidate, validator_index, tx) => { - let a = load_meta(&subsystem.db, &subsystem.config, &candidate)? - .map_or(false, |m| - *m.chunks_stored.get(validator_index.0 as usize).as_deref().unwrap_or(&false) - ); - let _ = tx.send(a); - } - AvailabilityStoreMessage::StoreChunk { - candidate_hash, - chunk, - tx, - } => { - subsystem.metrics.on_chunks_received(1); - let _timer = subsystem.metrics.time_store_chunk(); - - match store_chunk(&subsystem.db, &subsystem.config, candidate_hash, chunk) { - Ok(true) => { - let _ = tx.send(Ok(())); - } - Ok(false) => { - let _ = tx.send(Err(())); - } - Err(e) => { - let _ = tx.send(Err(())); - return Err(e) - } - } - } - AvailabilityStoreMessage::StoreAvailableData(candidate, _our_index, n_validators, available_data, tx) => { - subsystem.metrics.on_chunks_received(n_validators as _); - - let _timer = subsystem.metrics.time_store_available_data(); - - let res = store_available_data( - &subsystem, - candidate, - n_validators as _, - available_data, - ); - - match res { - Ok(()) => { - let _ = tx.send(Ok(())); - } - Err(e) => { - let _ = tx.send(Err(())); - return Err(e) - } - } - } - } - - Ok(()) -} - -// Ok(true) on success, Ok(false) on failure, and Err on internal error. -fn store_chunk( - db: &Arc, - config: &Config, - candidate_hash: CandidateHash, - chunk: ErasureChunk, -) -> Result { - let mut tx = DBTransaction::new(); - - let mut meta = match load_meta(db, config, &candidate_hash)? { - Some(m) => m, - None => return Ok(false), // we weren't informed of this candidate by import events. - }; - - match meta.chunks_stored.get(chunk.index.0 as usize).map(|b| *b) { - Some(true) => return Ok(true), // already stored. - Some(false) => { - meta.chunks_stored.set(chunk.index.0 as usize, true); - - write_chunk(&mut tx, config, &candidate_hash, chunk.index, &chunk); - write_meta(&mut tx, config, &candidate_hash, &meta); - } - None => return Ok(false), // out of bounds. - } - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - chunk_index = %chunk.index.0, - "Stored chunk index for candidate.", - ); - - db.write(tx)?; - Ok(true) -} - -// Ok(true) on success, Ok(false) on failure, and Err on internal error. -fn store_available_data( - subsystem: &AvailabilityStoreSubsystem, - candidate_hash: CandidateHash, - n_validators: usize, - available_data: AvailableData, -) -> Result<(), Error> { - let mut tx = DBTransaction::new(); - - let mut meta = match load_meta(&subsystem.db, &subsystem.config, &candidate_hash)? { - Some(m) => { - if m.data_available { - return Ok(()); // already stored. - } - - m - }, - None => { - let now = subsystem.clock.now()?; - - // Write a pruning record. - let prune_at = now + subsystem.pruning_config.keep_unavailable_for; - write_pruning_key(&mut tx, &subsystem.config, prune_at, &candidate_hash); - - CandidateMeta { - state: State::Unavailable(now.into()), - data_available: false, - chunks_stored: BitVec::new(), - } - } - }; - - let chunks = erasure::obtain_chunks_v1(n_validators, &available_data)?; - let branches = erasure::branches(chunks.as_ref()); - - let erasure_chunks = chunks.iter() - .zip(branches.map(|(proof, _)| proof)) - .enumerate() - .map(|(index, (chunk, proof))| ErasureChunk { - chunk: chunk.clone(), - proof, - index: ValidatorIndex(index as u32), - }); - - for chunk in erasure_chunks { - write_chunk(&mut tx, &subsystem.config, &candidate_hash, chunk.index, &chunk); - } - - meta.data_available = true; - meta.chunks_stored = bitvec::bitvec![BitOrderLsb0, u8; 1; n_validators]; - - write_meta(&mut tx, &subsystem.config, &candidate_hash, &meta); - write_available_data(&mut tx, &subsystem.config, &candidate_hash, &available_data); - - subsystem.db.write(tx)?; - - tracing::debug!( - target: LOG_TARGET, - ?candidate_hash, - "Stored data and chunks", - ); - - Ok(()) -} - -fn prune_all(db: &Arc, config: &Config, clock: &dyn Clock) -> Result<(), Error> { - let now = clock.now()?; - let (range_start, range_end) = pruning_range(now); - - let mut tx = DBTransaction::new(); - let iter = db.iter_with_prefix(config.col_meta, &range_start[..]) - .take_while(|(k, _)| &k[..] < &range_end[..]); - - for (k, _v) in iter { - tx.delete(config.col_meta, &k[..]); - - let (_, candidate_hash) = match decode_pruning_key(&k[..]) { - Ok(m) => m, - Err(_) => continue, // sanity - }; - - delete_meta(&mut tx, config, &candidate_hash); - - // Clean up all attached data of the candidate. - if let Some(meta) = load_meta(db, config, &candidate_hash)? { - // delete available data. - if meta.data_available { - delete_available_data(&mut tx, config, &candidate_hash) - } - - // delete chunks. - for (i, b) in meta.chunks_stored.iter().enumerate() { - if *b { - delete_chunk(&mut tx, config, &candidate_hash, ValidatorIndex(i as _)); - } - } - - // delete unfinalized block references. Pruning references don't need to be - // manually taken care of as we are deleting them as we go in the outer loop. - if let State::Unfinalized(_, blocks) = meta.state { - for (block_number, block_hash) in blocks { - delete_unfinalized_inclusion( - &mut tx, - config, - block_number.0, - &block_hash, - &candidate_hash, - ); - } - } - } - } - - db.write(tx)?; - Ok(()) -} - -#[derive(Clone)] -struct MetricsInner { - received_availability_chunks_total: prometheus::Counter, - pruning: prometheus::Histogram, - process_block_finalized: prometheus::Histogram, - block_activated: prometheus::Histogram, - process_message: prometheus::Histogram, - store_available_data: prometheus::Histogram, - store_chunk: prometheus::Histogram, - get_chunk: prometheus::Histogram, -} - -/// Availability metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_chunks_received(&self, count: usize) { - if let Some(metrics) = &self.0 { - use core::convert::TryFrom as _; - // assume usize fits into u64 - let by = u64::try_from(count).unwrap_or_default(); - metrics.received_availability_chunks_total.inc_by(by); - } - } - - /// Provide a timer for `prune_povs` which observes on drop. - fn time_pruning(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.pruning.start_timer()) - } - - /// Provide a timer for `process_block_finalized` which observes on drop. - fn time_process_block_finalized(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_block_finalized.start_timer()) - } - - /// Provide a timer for `block_activated` which observes on drop. - fn time_block_activated(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.block_activated.start_timer()) - } - - /// Provide a timer for `process_message` which observes on drop. - fn time_process_message(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_message.start_timer()) - } - - /// Provide a timer for `store_available_data` which observes on drop. - fn time_store_available_data(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.store_available_data.start_timer()) - } - - /// Provide a timer for `store_chunk` which observes on drop. - fn time_store_chunk(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.store_chunk.start_timer()) - } - - /// Provide a timer for `get_chunk` which observes on drop. - fn time_get_chunk(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.get_chunk.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - received_availability_chunks_total: prometheus::register( - prometheus::Counter::new( - "parachain_received_availability_chunks_total", - "Number of availability chunks received.", - )?, - registry, - )?, - pruning: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_pruning", - "Time spent within `av_store::prune_all`", - ) - )?, - registry, - )?, - process_block_finalized: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_process_block_finalized", - "Time spent within `av_store::process_block_finalized`", - ) - )?, - registry, - )?, - block_activated: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_block_activated", - "Time spent within `av_store::process_block_activated`", - ) - )?, - registry, - )?, - process_message: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_process_message", - "Time spent within `av_store::process_message`", - ) - )?, - registry, - )?, - store_available_data: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_store_available_data", - "Time spent within `av_store::store_available_data`", - ) - )?, - registry, - )?, - store_chunk: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_store_chunk", - "Time spent within `av_store::store_chunk`", - ) - )?, - registry, - )?, - get_chunk: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_av_store_get_chunk", - "Time spent fetching requested chunks.`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/core/av-store/src/tests.rs b/node/core/av-store/src/tests.rs deleted file mode 100644 index e923545a785a..000000000000 --- a/node/core/av-store/src/tests.rs +++ /dev/null @@ -1,1188 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; - -use assert_matches::assert_matches; -use futures::{ - future, - channel::oneshot, - executor, - Future, -}; - -use polkadot_primitives::v1::{ - CandidateDescriptor, CandidateReceipt, HeadData, - PersistedValidationData, Id as ParaId, CandidateHash, Header, ValidatorId, - CoreIndex, GroupIndex, -}; -use polkadot_node_primitives::{AvailableData, BlockData, PoV}; -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_subsystem::{ - ActiveLeavesUpdate, errors::RuntimeApiError, jaeger, messages::AllMessages, ActivatedLeaf, - LeafStatus, -}; -use polkadot_node_subsystem_test_helpers as test_helpers; -use sp_keyring::Sr25519Keyring; -use parking_lot::Mutex; - -mod columns { - pub const DATA: u32 = 0; - pub const META: u32 = 1; - pub const NUM_COLUMNS: u32 = 2; -} - -const TEST_CONFIG: Config = Config { - col_data: columns::DATA, - col_meta: columns::META, -}; - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -#[derive(Default)] -struct TestCandidateBuilder { - para_id: ParaId, - pov_hash: Hash, - relay_parent: Hash, - commitments_hash: Hash, -} - -impl TestCandidateBuilder { - fn build(self) -> CandidateReceipt { - CandidateReceipt { - descriptor: CandidateDescriptor { - para_id: self.para_id, - pov_hash: self.pov_hash, - relay_parent: self.relay_parent, - ..Default::default() - }, - commitments_hash: self.commitments_hash, - } - } -} - -#[derive(Clone)] -struct TestClock { - inner: Arc>, -} - -impl TestClock { - fn now(&self) -> Duration { - self.inner.lock().clone() - } - - fn inc(&self, by: Duration) { - *self.inner.lock() += by; - } -} - -impl Clock for TestClock { - fn now(&self) -> Result { - Ok(TestClock::now(self)) - } -} - - -#[derive(Clone)] -struct TestState { - persisted_validation_data: PersistedValidationData, - pruning_config: PruningConfig, - clock: TestClock, -} - -impl TestState { - // pruning is only polled periodically, so we sometimes need to delay until - // we're sure the subsystem has done pruning. - async fn wait_for_pruning(&self) { - Delay::new(self.pruning_config.pruning_interval * 2).await - } -} - -impl Default for TestState { - fn default() -> Self { - let persisted_validation_data = PersistedValidationData { - parent_head: HeadData(vec![7, 8, 9]), - relay_parent_number: 5, - max_pov_size: 1024, - relay_parent_storage_root: Default::default(), - }; - - let pruning_config = PruningConfig { - keep_unavailable_for: Duration::from_secs(1), - keep_finalized_for: Duration::from_secs(2), - pruning_interval: Duration::from_millis(250), - }; - - let clock = TestClock { - inner: Arc::new(Mutex::new(Duration::from_secs(0))), - }; - - Self { - persisted_validation_data, - pruning_config, - clock, - } - } -} - - -fn test_harness>( - state: TestState, - store: Arc, - test: impl FnOnce(VirtualOverseer) -> T, -) { - let _ = env_logger::builder() - .is_test(true) - .filter( - Some("polkadot_node_core_av_store"), - log::LevelFilter::Trace, - ) - .filter( - Some(LOG_TARGET), - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = AvailabilityStoreSubsystem::with_pruning_config_and_clock( - store, - TEST_CONFIG, - state.pruning_config.clone(), - Box::new(state.clock), - Metrics::default(), - ); - - let subsystem = run(subsystem, context); - - let test_fut = test(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer_signal( - &mut overseer, - OverseerSignal::Conclude, - ).await; - }, subsystem)); -} - -const TIMEOUT: Duration = Duration::from_millis(100); - -async fn overseer_send( - overseer: &mut VirtualOverseer, - msg: AvailabilityStoreMessage, -) { - tracing::trace!(meg = ?msg, "sending message"); - overseer - .send(FromOverseer::Communication { msg }) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is more than enough for sending messages.", TIMEOUT)); -} - -async fn overseer_recv( - overseer: &mut VirtualOverseer, -) -> AllMessages { - let msg = overseer_recv_with_timeout(overseer, TIMEOUT) - .await - .expect(&format!("{:?} is more than enough to receive messages", TIMEOUT)); - - tracing::trace!(msg = ?msg, "received message"); - - msg -} - -async fn overseer_recv_with_timeout( - overseer: &mut VirtualOverseer, - timeout: Duration, -) -> Option { - tracing::trace!("waiting for message..."); - overseer - .recv() - .timeout(timeout) - .await -} - -async fn overseer_signal( - overseer: &mut VirtualOverseer, - signal: OverseerSignal, -) { - overseer - .send(FromOverseer::Signal(signal)) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is more than enough for sending signals.", TIMEOUT)); -} - -fn with_tx(db: &Arc, f: impl FnOnce(&mut DBTransaction)) { - let mut tx = DBTransaction::new(); - f(&mut tx); - db.write(tx).unwrap(); -} - -fn candidate_included(receipt: CandidateReceipt) -> CandidateEvent { - CandidateEvent::CandidateIncluded( - receipt, - HeadData::default(), - CoreIndex::default(), - GroupIndex::default(), - ) -} - -#[test] -fn runtime_api_error_does_not_stop_the_subsystem() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - - test_harness(TestState::default(), store, |mut virtual_overseer| async move { - let new_leaf = Hash::repeat_byte(0x01); - - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: new_leaf, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }), - ).await; - - let header = Header { - parent_hash: Hash::zero(), - number: 1, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - }; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - relay_parent, - tx, - )) => { - assert_eq!(relay_parent, new_leaf); - tx.send(Ok(Some(header))).unwrap(); - } - ); - - // runtime api call fails - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::CandidateEvents(tx), - )) => { - assert_eq!(relay_parent, new_leaf); - tx.send(Err(RuntimeApiError::from("oh no".to_string()))).unwrap(); - } - ); - - // but that's fine, we're still alive - let (tx, rx) = oneshot::channel(); - let candidate_hash = CandidateHash(Hash::repeat_byte(33)); - let validator_index = ValidatorIndex(5); - let query_chunk = AvailabilityStoreMessage::QueryChunk( - candidate_hash, - validator_index, - tx, - ); - - overseer_send(&mut virtual_overseer, query_chunk.into()).await; - - assert!(rx.await.unwrap().is_none()); - virtual_overseer - }); -} - -#[test] -fn store_chunk_works() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - test_harness(TestState::default(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(33)); - let validator_index = ValidatorIndex(5); - let n_validators = 10; - - let chunk = ErasureChunk { - chunk: vec![1, 2, 3], - index: validator_index, - proof: vec![vec![3, 4, 5]], - }; - - // Ensure an entry already exists. In reality this would come from watching - // chain events. - with_tx(&store, |tx| { - super::write_meta(tx, &TEST_CONFIG, &candidate_hash, &CandidateMeta { - data_available: false, - chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators], - state: State::Unavailable(BETimestamp(0)), - }); - }); - - let (tx, rx) = oneshot::channel(); - - let chunk_msg = AvailabilityStoreMessage::StoreChunk { - candidate_hash, - chunk: chunk.clone(), - tx, - }; - - overseer_send(&mut virtual_overseer, chunk_msg.into()).await; - assert_eq!(rx.await.unwrap(), Ok(())); - - let (tx, rx) = oneshot::channel(); - let query_chunk = AvailabilityStoreMessage::QueryChunk( - candidate_hash, - validator_index, - tx, - ); - - overseer_send(&mut virtual_overseer, query_chunk.into()).await; - - assert_eq!(rx.await.unwrap().unwrap(), chunk); - virtual_overseer - }); -} - - -#[test] -fn store_chunk_does_nothing_if_no_entry_already() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - test_harness(TestState::default(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(33)); - let validator_index = ValidatorIndex(5); - - let chunk = ErasureChunk { - chunk: vec![1, 2, 3], - index: validator_index, - proof: vec![vec![3, 4, 5]], - }; - - let (tx, rx) = oneshot::channel(); - - let chunk_msg = AvailabilityStoreMessage::StoreChunk { - candidate_hash, - chunk: chunk.clone(), - tx, - }; - - overseer_send(&mut virtual_overseer, chunk_msg.into()).await; - assert_eq!(rx.await.unwrap(), Err(())); - - let (tx, rx) = oneshot::channel(); - let query_chunk = AvailabilityStoreMessage::QueryChunk( - candidate_hash, - validator_index, - tx, - ); - - overseer_send(&mut virtual_overseer, query_chunk.into()).await; - - assert!(rx.await.unwrap().is_none()); - virtual_overseer - }); -} - -#[test] -fn query_chunk_checks_meta() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - test_harness(TestState::default(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(33)); - let validator_index = ValidatorIndex(5); - let n_validators = 10; - - // Ensure an entry already exists. In reality this would come from watching - // chain events. - with_tx(&store, |tx| { - super::write_meta(tx, &TEST_CONFIG, &candidate_hash, &CandidateMeta { - data_available: false, - chunks_stored: { - let mut v = bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators]; - v.set(validator_index.0 as usize, true); - v - }, - state: State::Unavailable(BETimestamp(0)), - }); - }); - - let (tx, rx) = oneshot::channel(); - let query_chunk = AvailabilityStoreMessage::QueryChunkAvailability( - candidate_hash, - validator_index, - tx, - ); - - overseer_send(&mut virtual_overseer, query_chunk.into()).await; - assert!(rx.await.unwrap()); - - let (tx, rx) = oneshot::channel(); - let query_chunk = AvailabilityStoreMessage::QueryChunkAvailability( - candidate_hash, - ValidatorIndex(validator_index.0 + 1), - tx, - ); - - overseer_send(&mut virtual_overseer, query_chunk.into()).await; - assert!(!rx.await.unwrap()); - virtual_overseer - }); -} - -#[test] -fn store_block_works() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(1)); - let validator_index = ValidatorIndex(5); - let n_validators = 10; - - let pov = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let available_data = AvailableData { - pov: Arc::new(pov), - validation_data: test_state.persisted_validation_data.clone(), - }; - - - let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - Some(validator_index), - n_validators, - available_data.clone(), - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: block_msg }).await; - assert_eq!(rx.await.unwrap(), Ok(())); - - let pov = query_available_data(&mut virtual_overseer, candidate_hash).await.unwrap(); - assert_eq!(pov, available_data); - - let chunk = query_chunk(&mut virtual_overseer, candidate_hash, validator_index).await.unwrap(); - - let chunks = erasure::obtain_chunks_v1(10, &available_data).unwrap(); - - let mut branches = erasure::branches(chunks.as_ref()); - - let branch = branches.nth(5).unwrap(); - let expected_chunk = ErasureChunk { - chunk: branch.1.to_vec(), - index: ValidatorIndex(5), - proof: branch.0, - }; - - assert_eq!(chunk, expected_chunk); - virtual_overseer - }); -} - -#[test] -fn store_pov_and_query_chunk_works() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(1)); - let n_validators = 10; - - let pov = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let available_data = AvailableData { - pov: Arc::new(pov), - validation_data: test_state.persisted_validation_data.clone(), - }; - - let chunks_expected = erasure::obtain_chunks_v1(n_validators as _, &available_data).unwrap(); - - let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - None, - n_validators, - available_data, - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: block_msg }).await; - - assert_eq!(rx.await.unwrap(), Ok(())); - - for i in 0..n_validators { - let chunk = query_chunk(&mut virtual_overseer, candidate_hash, ValidatorIndex(i as _)).await.unwrap(); - - assert_eq!(chunk.chunk, chunks_expected[i as usize]); - } - virtual_overseer - }); -} - -#[test] -fn query_all_chunks_works() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - // all chunks for hash 1. - // 1 chunk for hash 2. - // 0 chunks for hash 3. - let candidate_hash_1 = CandidateHash(Hash::repeat_byte(1)); - let candidate_hash_2 = CandidateHash(Hash::repeat_byte(2)); - let candidate_hash_3 = CandidateHash(Hash::repeat_byte(3)); - - let n_validators = 10; - - let pov = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let available_data = AvailableData { - pov: Arc::new(pov), - validation_data: test_state.persisted_validation_data.clone(), - }; - - { - let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash_1, - None, - n_validators, - available_data, - tx, - ); - - virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; - assert_eq!(rx.await.unwrap(), Ok(())); - } - - { - with_tx(&store, |tx| { - super::write_meta(tx, &TEST_CONFIG, &candidate_hash_2, &CandidateMeta { - data_available: false, - chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators as _], - state: State::Unavailable(BETimestamp(0)), - }); - }); - - let chunk = ErasureChunk { - chunk: vec![1, 2, 3], - index: ValidatorIndex(1), - proof: vec![vec![3, 4, 5]], - }; - - let (tx, rx) = oneshot::channel(); - let store_chunk_msg = AvailabilityStoreMessage::StoreChunk { - candidate_hash: candidate_hash_2, - chunk, - tx, - }; - - virtual_overseer.send(FromOverseer::Communication { msg: store_chunk_msg }).await; - assert_eq!(rx.await.unwrap(), Ok(())); - } - - { - let (tx, rx) = oneshot::channel(); - - let msg = AvailabilityStoreMessage::QueryAllChunks(candidate_hash_1, tx); - virtual_overseer.send(FromOverseer::Communication { msg }).await; - assert_eq!(rx.await.unwrap().len(), n_validators as usize); - } - - { - let (tx, rx) = oneshot::channel(); - - let msg = AvailabilityStoreMessage::QueryAllChunks(candidate_hash_2, tx); - virtual_overseer.send(FromOverseer::Communication { msg }).await; - assert_eq!(rx.await.unwrap().len(), 1); - } - - { - let (tx, rx) = oneshot::channel(); - - let msg = AvailabilityStoreMessage::QueryAllChunks(candidate_hash_3, tx); - virtual_overseer.send(FromOverseer::Communication { msg }).await; - assert_eq!(rx.await.unwrap().len(), 0); - } - virtual_overseer - }); -} - -#[test] -fn stored_but_not_included_data_is_pruned() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - let candidate_hash = CandidateHash(Hash::repeat_byte(1)); - let n_validators = 10; - - let pov = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let available_data = AvailableData { - pov: Arc::new(pov), - validation_data: test_state.persisted_validation_data.clone(), - }; - - let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - None, - n_validators, - available_data.clone(), - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: block_msg }).await; - - rx.await.unwrap().unwrap(); - - // At this point data should be in the store. - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_hash).await.unwrap(), - available_data, - ); - - // Wait until pruning. - test_state.clock.inc(test_state.pruning_config.keep_unavailable_for); - test_state.wait_for_pruning().await; - - // The block was not included by this point so it should be pruned now. - assert!(query_available_data(&mut virtual_overseer, candidate_hash).await.is_none()); - virtual_overseer - }); -} - -#[test] -fn stored_data_kept_until_finalized() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - let n_validators = 10; - - let pov = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let pov_hash = pov.hash(); - - let candidate = TestCandidateBuilder { - pov_hash, - ..Default::default() - }.build(); - - let candidate_hash = candidate.hash(); - - let available_data = AvailableData { - pov: Arc::new(pov), - validation_data: test_state.persisted_validation_data.clone(), - }; - - let parent = Hash::repeat_byte(2); - let block_number = 10; - - let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - None, - n_validators, - available_data.clone(), - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: block_msg }).await; - - rx.await.unwrap().unwrap(); - - // At this point data should be in the store. - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_hash).await.unwrap(), - available_data, - ); - - let new_leaf = import_leaf( - &mut virtual_overseer, - parent, - block_number, - vec![candidate_included(candidate)], - (0..n_validators).map(|_| Sr25519Keyring::Alice.public().into()).collect(), - ).await; - - // Wait until unavailable data would definitely be pruned. - test_state.clock.inc(test_state.pruning_config.keep_unavailable_for * 10); - test_state.wait_for_pruning().await; - - // At this point data should _still_ be in the store. - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_hash).await.unwrap(), - available_data, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_hash, n_validators, true).await - ); - - overseer_signal( - &mut virtual_overseer, - OverseerSignal::BlockFinalized(new_leaf, block_number) - ).await; - - // Wait until unavailable data would definitely be pruned. - test_state.clock.inc(test_state.pruning_config.keep_finalized_for / 2); - test_state.wait_for_pruning().await; - - // At this point data should _still_ be in the store. - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_hash).await.unwrap(), - available_data, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_hash, n_validators, true).await - ); - - // Wait until it definitely should be gone. - test_state.clock.inc(test_state.pruning_config.keep_finalized_for); - test_state.wait_for_pruning().await; - - // At this point data should be gone from the store. - assert!( - query_available_data(&mut virtual_overseer, candidate_hash).await.is_none(), - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_hash, n_validators, false).await - ); - virtual_overseer - }); -} - -#[test] -fn we_dont_miss_anything_if_import_notifications_are_missed() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::BlockFinalized(Hash::zero(), 1) - ).await; - - let header = Header { - parent_hash: Hash::repeat_byte(3), - number: 4, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - }; - let new_leaf = Hash::repeat_byte(4); - - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: new_leaf, - number: 4, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }), - ).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - relay_parent, - tx, - )) => { - assert_eq!(relay_parent, new_leaf); - tx.send(Ok(Some(header))).unwrap(); - } - ); - - let new_heads = vec![ - (Hash::repeat_byte(2), Hash::repeat_byte(1)), - (Hash::repeat_byte(3), Hash::repeat_byte(2)), - (Hash::repeat_byte(4), Hash::repeat_byte(3)), - ]; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash, - k, - response_channel: tx, - }) => { - assert_eq!(hash, new_leaf); - assert_eq!(k, 2); - let _ = tx.send(Ok(vec![ - Hash::repeat_byte(3), - Hash::repeat_byte(2), - ])); - } - ); - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - relay_parent, - tx, - )) => { - assert_eq!(relay_parent, Hash::repeat_byte(3)); - tx.send(Ok(Some(Header { - parent_hash: Hash::repeat_byte(2), - number: 3, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - }))).unwrap(); - } - ); - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - relay_parent, - tx, - )) => { - assert_eq!(relay_parent, Hash::repeat_byte(2)); - tx.send(Ok(Some(Header { - parent_hash: Hash::repeat_byte(1), - number: 2, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - }))).unwrap(); - } - ); - - for (head, parent) in new_heads { - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::CandidateEvents(tx), - )) => { - assert_eq!(relay_parent, head); - tx.send(Ok(Vec::new())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Validators(tx), - )) => { - assert_eq!(relay_parent, parent); - tx.send(Ok(Vec::new())).unwrap(); - } - ); - } - - virtual_overseer - }); -} - -#[test] -fn forkfullness_works() { - let store = Arc::new(kvdb_memorydb::create(columns::NUM_COLUMNS)); - let test_state = TestState::default(); - - test_harness(test_state.clone(), store.clone(), |mut virtual_overseer| async move { - let n_validators = 10; - let block_number_1 = 5; - let block_number_2 = 5; - let validators: Vec<_> = (0..n_validators).map(|_| Sr25519Keyring::Alice.public().into()).collect(); - let parent_1 = Hash::repeat_byte(3); - let parent_2 = Hash::repeat_byte(4); - - let pov_1 = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_1_hash = pov_1.hash(); - - let pov_2 = PoV { - block_data: BlockData(vec![4, 5, 6]), - }; - - let pov_2_hash = pov_2.hash(); - - let candidate_1 = TestCandidateBuilder { - pov_hash: pov_1_hash, - ..Default::default() - }.build(); - - let candidate_1_hash = candidate_1.hash(); - - let candidate_2 = TestCandidateBuilder { - pov_hash: pov_2_hash, - ..Default::default() - }.build(); - - let candidate_2_hash = candidate_2.hash(); - - let available_data_1 = AvailableData { - pov: Arc::new(pov_1), - validation_data: test_state.persisted_validation_data.clone(), - }; - - let available_data_2 = AvailableData { - pov: Arc::new(pov_2), - validation_data: test_state.persisted_validation_data.clone(), - }; - - let (tx, rx) = oneshot::channel(); - let msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_1_hash, - None, - n_validators, - available_data_1.clone(), - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg }).await; - - rx.await.unwrap().unwrap(); - - let (tx, rx) = oneshot::channel(); - let msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_2_hash, - None, - n_validators, - available_data_2.clone(), - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg }).await; - - rx.await.unwrap().unwrap(); - - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_1_hash).await.unwrap(), - available_data_1, - ); - - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_2_hash).await.unwrap(), - available_data_2, - ); - - let new_leaf_1 = import_leaf( - &mut virtual_overseer, - parent_1, - block_number_1, - vec![candidate_included(candidate_1)], - validators.clone(), - ).await; - - let _new_leaf_2 = import_leaf( - &mut virtual_overseer, - parent_2, - block_number_2, - vec![candidate_included(candidate_2)], - validators.clone(), - ).await; - - overseer_signal( - &mut virtual_overseer, - OverseerSignal::BlockFinalized(new_leaf_1, block_number_1) - ).await; - - // Data of both candidates should be still present in the DB. - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_1_hash).await.unwrap(), - available_data_1, - ); - - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_2_hash).await.unwrap(), - available_data_2, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_1_hash, n_validators, true).await, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_2_hash, n_validators, true).await, - ); - - // Candidate 2 should now be considered unavailable and will be pruned. - test_state.clock.inc(test_state.pruning_config.keep_unavailable_for); - test_state.wait_for_pruning().await; - - assert_eq!( - query_available_data(&mut virtual_overseer, candidate_1_hash).await.unwrap(), - available_data_1, - ); - - assert!( - query_available_data(&mut virtual_overseer, candidate_2_hash).await.is_none(), - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_1_hash, n_validators, true).await, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_2_hash, n_validators, false).await, - ); - - // Wait for longer than finalized blocks should be kept for - test_state.clock.inc(test_state.pruning_config.keep_finalized_for); - test_state.wait_for_pruning().await; - - // Everything should be pruned now. - assert!( - query_available_data(&mut virtual_overseer, candidate_1_hash).await.is_none(), - ); - - assert!( - query_available_data(&mut virtual_overseer, candidate_2_hash).await.is_none(), - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_1_hash, n_validators, false).await, - ); - - assert!( - has_all_chunks(&mut virtual_overseer, candidate_2_hash, n_validators, false).await, - ); - virtual_overseer - }); -} - -async fn query_available_data( - virtual_overseer: &mut VirtualOverseer, - candidate_hash: CandidateHash, -) -> Option { - let (tx, rx) = oneshot::channel(); - - let query = AvailabilityStoreMessage::QueryAvailableData(candidate_hash, tx); - virtual_overseer.send(FromOverseer::Communication{ msg: query }).await; - - rx.await.unwrap() -} - -async fn query_chunk( - virtual_overseer: &mut VirtualOverseer, - candidate_hash: CandidateHash, - index: ValidatorIndex, -) -> Option { - let (tx, rx) = oneshot::channel(); - - let query = AvailabilityStoreMessage::QueryChunk(candidate_hash, index, tx); - virtual_overseer.send(FromOverseer::Communication{ msg: query }).await; - - rx.await.unwrap() -} - -async fn has_all_chunks( - virtual_overseer: &mut VirtualOverseer, - candidate_hash: CandidateHash, - n_validators: u32, - expect_present: bool, -) -> bool { - for i in 0..n_validators { - if query_chunk(virtual_overseer, candidate_hash, ValidatorIndex(i)).await.is_some() != expect_present { - return false - } - } - true -} - -async fn import_leaf( - virtual_overseer: &mut VirtualOverseer, - parent_hash: Hash, - block_number: BlockNumber, - events: Vec, - validators: Vec, -) -> Hash { - let header = Header { - parent_hash, - number: block_number, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - }; - let new_leaf = header.hash(); - - overseer_signal( - virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: new_leaf, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }), - ).await; - - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader( - relay_parent, - tx, - )) => { - assert_eq!(relay_parent, new_leaf); - tx.send(Ok(Some(header))).unwrap(); - } - ); - - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::CandidateEvents(tx), - )) => { - assert_eq!(relay_parent, new_leaf); - tx.send(Ok(events)).unwrap(); - } - ); - - - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Validators(tx), - )) => { - assert_eq!(relay_parent, parent_hash); - tx.send(Ok(validators)).unwrap(); - } - ); - - new_leaf -} diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml deleted file mode 100644 index aaac65f4955e..000000000000 --- a/node/core/backing/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "polkadot-node-core-backing" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -erasure-coding = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" } -statement-table = { package = "polkadot-statement-table", path = "../../../statement-table" } -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -tracing = "0.1.26" -thiserror = "1.0.23" - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures = { version = "0.3.15", features = ["thread-pool"] } -assert_matches = "1.4.0" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } diff --git a/node/core/backing/src/lib.rs b/node/core/backing/src/lib.rs deleted file mode 100644 index 5075eac48fb5..000000000000 --- a/node/core/backing/src/lib.rs +++ /dev/null @@ -1,1317 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements a `CandidateBackingSubsystem`. - -#![deny(unused_crate_dependencies)] - -use std::collections::{HashMap, HashSet}; -use std::pin::Pin; -use std::sync::Arc; - -use bitvec::vec::BitVec; -use futures::{channel::{mpsc, oneshot}, Future, FutureExt, SinkExt, StreamExt}; - -use sp_keystore::SyncCryptoStorePtr; -use polkadot_primitives::v1::{ - BackedCandidate, CandidateCommitments, CandidateDescriptor, CandidateHash, - CandidateReceipt, CollatorId, CommittedCandidateReceipt, CoreIndex, CoreState, Hash, Id as ParaId, - SigningContext, ValidatorId, ValidatorIndex, ValidatorSignature, ValidityAttestation, -}; -use polkadot_node_primitives::{ - Statement, SignedFullStatement, ValidationResult, PoV, AvailableData, -}; -use polkadot_subsystem::{ - PerLeafSpan, Stage, SubsystemSender, - jaeger, - messages::{ - AllMessages, AvailabilityDistributionMessage, AvailabilityStoreMessage, - CandidateBackingMessage, CandidateValidationMessage, CollatorProtocolMessage, - ProvisionableData, ProvisionerMessage, RuntimeApiRequest, - StatementDistributionMessage, ValidationFailed - } -}; -use polkadot_node_subsystem_util::{ - self as util, - request_session_index_for_child, - request_validator_groups, - request_validators, - request_from_runtime, - Validator, - FromJobCommand, - JobSender, - metrics::{self, prometheus}, -}; -use statement_table::{ - generic::AttestedCandidate as TableAttestedCandidate, - Context as TableContextTrait, - Table, - v1::{ - SignedStatement as TableSignedStatement, - Statement as TableStatement, - Summary as TableSummary, - }, -}; -use thiserror::Error; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::candidate-backing"; - -/// Errors that can occur in candidate backing. -#[derive(Debug, Error)] -pub enum Error { - #[error("Candidate is not found")] - CandidateNotFound, - #[error("Signature is invalid")] - InvalidSignature, - #[error("Failed to send candidates {0:?}")] - Send(Vec), - #[error("FetchPoV failed")] - FetchPoV, - #[error("ValidateFromChainState channel closed before receipt")] - ValidateFromChainState(#[source] oneshot::Canceled), - #[error("StoreAvailableData channel closed before receipt")] - StoreAvailableData(#[source] oneshot::Canceled), - #[error("a channel was closed before receipt in try_join!")] - JoinMultiple(#[source] oneshot::Canceled), - #[error("Obtaining erasure chunks failed")] - ObtainErasureChunks(#[from] erasure_coding::Error), - #[error(transparent)] - ValidationFailed(#[from] ValidationFailed), - #[error(transparent)] - Mpsc(#[from] mpsc::SendError), - #[error(transparent)] - UtilError(#[from] util::Error), -} - -/// PoV data to validate. -enum PoVData { - /// Allready available (from candidate selection). - Ready(Arc), - /// Needs to be fetched from validator (we are checking a signed statement). - FetchFromValidator { - from_validator: ValidatorIndex, - candidate_hash: CandidateHash, - pov_hash: Hash, - }, -} - -enum ValidatedCandidateCommand { - // We were instructed to second the candidate that has been already validated. - Second(BackgroundValidationResult), - // We were instructed to validate the candidate. - Attest(BackgroundValidationResult), - // We were not able to `Attest` because backing validator did not send us the PoV. - AttestNoPoV(CandidateHash), -} - -impl std::fmt::Debug for ValidatedCandidateCommand { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - let candidate_hash = self.candidate_hash(); - match *self { - ValidatedCandidateCommand::Second(_) => - write!(f, "Second({})", candidate_hash), - ValidatedCandidateCommand::Attest(_) => - write!(f, "Attest({})", candidate_hash), - ValidatedCandidateCommand::AttestNoPoV(_) => - write!(f, "Attest({})", candidate_hash), - } - } -} - -impl ValidatedCandidateCommand { - fn candidate_hash(&self) -> CandidateHash { - match *self { - ValidatedCandidateCommand::Second(Ok((ref candidate, _, _))) => candidate.hash(), - ValidatedCandidateCommand::Second(Err(ref candidate)) => candidate.hash(), - ValidatedCandidateCommand::Attest(Ok((ref candidate, _, _))) => candidate.hash(), - ValidatedCandidateCommand::Attest(Err(ref candidate)) => candidate.hash(), - ValidatedCandidateCommand::AttestNoPoV(candidate_hash) => candidate_hash, - } - } -} - -/// Holds all data needed for candidate backing job operation. -pub struct CandidateBackingJob { - /// The hash of the relay parent on top of which this job is doing it's work. - parent: Hash, - /// The `ParaId` assigned to this validator - assignment: Option, - /// The collator required to author the candidate, if any. - required_collator: Option, - /// Spans for all candidates that are not yet backable. - unbacked_candidates: HashMap, - /// We issued `Seconded`, `Valid` or `Invalid` statements on about these candidates. - issued_statements: HashSet, - /// These candidates are undergoing validation in the background. - awaiting_validation: HashSet, - /// Data needed for retrying in case of `ValidatedCandidateCommand::AttestNoPoV`. - fallbacks: HashMap)>, - /// `Some(h)` if this job has already issued `Seconded` statement for some candidate with `h` hash. - seconded: Option, - /// The candidates that are includable, by hash. Each entry here indicates - /// that we've sent the provisioner the backed candidate. - backed: HashSet, - keystore: SyncCryptoStorePtr, - table: Table, - table_context: TableContext, - background_validation: mpsc::Receiver, - background_validation_tx: mpsc::Sender, - metrics: Metrics, -} - -/// In case a backing validator does not provide a PoV, we need to retry with other backing -/// validators. -/// -/// This is the data needed to accomplish this. Basically all the data needed for spawning a -/// validation job and a list of backing validators, we can try. -#[derive(Clone)] -struct AttestingData { - /// The candidate to attest. - candidate: CandidateReceipt, - /// Hash of the PoV we need to fetch. - pov_hash: Hash, - /// Validator we are currently trying to get the PoV from. - from_validator: ValidatorIndex, - /// Other backing validators we can try in case `from_validator` failed. - backing: Vec, -} - -const fn group_quorum(n_validators: usize) -> usize { - (n_validators / 2) + 1 -} - -#[derive(Default)] -struct TableContext { - validator: Option, - groups: HashMap>, - validators: Vec, -} - -impl TableContextTrait for TableContext { - type AuthorityId = ValidatorIndex; - type Digest = CandidateHash; - type GroupId = ParaId; - type Signature = ValidatorSignature; - type Candidate = CommittedCandidateReceipt; - - fn candidate_digest(candidate: &CommittedCandidateReceipt) -> CandidateHash { - candidate.hash() - } - - fn candidate_group(candidate: &CommittedCandidateReceipt) -> ParaId { - candidate.descriptor().para_id - } - - fn is_member_of(&self, authority: &ValidatorIndex, group: &ParaId) -> bool { - self.groups.get(group).map_or(false, |g| g.iter().position(|a| a == authority).is_some()) - } - - fn requisite_votes(&self, group: &ParaId) -> usize { - self.groups.get(group).map_or(usize::max_value(), |g| group_quorum(g.len())) - } -} - -struct InvalidErasureRoot; - -// It looks like it's not possible to do an `impl From` given the current state of -// the code. So this does the necessary conversion. -fn primitive_statement_to_table(s: &SignedFullStatement) -> TableSignedStatement { - let statement = match s.payload() { - Statement::Seconded(c) => TableStatement::Seconded(c.clone()), - Statement::Valid(h) => TableStatement::Valid(h.clone()), - }; - - TableSignedStatement { - statement, - signature: s.signature().clone(), - sender: s.validator_index(), - } -} - -fn table_attested_to_backed( - attested: TableAttestedCandidate< - ParaId, - CommittedCandidateReceipt, - ValidatorIndex, - ValidatorSignature, - >, - table_context: &TableContext, -) -> Option { - let TableAttestedCandidate { candidate, validity_votes, group_id: para_id } = attested; - - let (ids, validity_votes): (Vec<_>, Vec) = validity_votes - .into_iter() - .map(|(id, vote)| (id, vote.into())) - .unzip(); - - let group = table_context.groups.get(¶_id)?; - - let mut validator_indices = BitVec::with_capacity(group.len()); - - validator_indices.resize(group.len(), false); - - // The order of the validity votes in the backed candidate must match - // the order of bits set in the bitfield, which is not necessarily - // the order of the `validity_votes` we got from the table. - let mut vote_positions = Vec::with_capacity(validity_votes.len()); - for (orig_idx, id) in ids.iter().enumerate() { - if let Some(position) = group.iter().position(|x| x == id) { - validator_indices.set(position, true); - vote_positions.push((orig_idx, position)); - } else { - tracing::warn!( - target: LOG_TARGET, - "Logic error: Validity vote from table does not correspond to group", - ); - - return None; - } - } - vote_positions.sort_by_key(|(_orig, pos_in_group)| *pos_in_group); - - Some(BackedCandidate { - candidate, - validity_votes: vote_positions.into_iter() - .map(|(pos_in_votes, _pos_in_group)| validity_votes[pos_in_votes].clone()) - .collect(), - validator_indices, - }) -} - -async fn store_available_data( - sender: &mut JobSender, - id: Option, - n_validators: u32, - candidate_hash: CandidateHash, - available_data: AvailableData, -) -> Result<(), Error> { - let (tx, rx) = oneshot::channel(); - sender.send_message(AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - id, - n_validators, - available_data, - tx, - ).into()).await; - - let _ = rx.await.map_err(Error::StoreAvailableData)?; - - Ok(()) -} - -// Make a `PoV` available. -// -// This will compute the erasure root internally and compare it to the expected erasure root. -// This returns `Err()` iff there is an internal error. Otherwise, it returns either `Ok(Ok(()))` or `Ok(Err(_))`. -async fn make_pov_available( - sender: &mut JobSender, - validator_index: Option, - n_validators: usize, - pov: Arc, - candidate_hash: CandidateHash, - validation_data: polkadot_primitives::v1::PersistedValidationData, - expected_erasure_root: Hash, - span: Option<&jaeger::Span>, -) -> Result, Error> { - let available_data = AvailableData { - pov, - validation_data, - }; - - { - let _span = span.as_ref().map(|s| { - s.child("erasure-coding").with_candidate(candidate_hash) - }); - - let chunks = erasure_coding::obtain_chunks_v1( - n_validators, - &available_data, - )?; - - let branches = erasure_coding::branches(chunks.as_ref()); - let erasure_root = branches.root(); - - if erasure_root != expected_erasure_root { - return Ok(Err(InvalidErasureRoot)); - } - } - - { - let _span = span.as_ref().map(|s| - s.child("store-data").with_candidate(candidate_hash) - ); - - store_available_data( - sender, - validator_index, - n_validators as u32, - candidate_hash, - available_data, - ).await?; - } - - Ok(Ok(())) -} - -async fn request_pov( - sender: &mut JobSender, - relay_parent: Hash, - from_validator: ValidatorIndex, - candidate_hash: CandidateHash, - pov_hash: Hash, -) -> Result, Error> { - - let (tx, rx) = oneshot::channel(); - sender.send_message(AvailabilityDistributionMessage::FetchPoV { - relay_parent, - from_validator, - candidate_hash, - pov_hash, - tx, - }.into()).await; - - let pov = rx.await.map_err(|_| Error::FetchPoV)?; - Ok(Arc::new(pov)) -} - -async fn request_candidate_validation( - sender: &mut JobSender, - candidate: CandidateDescriptor, - pov: Arc, -) -> Result { - let (tx, rx) = oneshot::channel(); - - sender.send_message(AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - candidate, - pov, - tx, - ) - ).into() - ).await; - - match rx.await { - Ok(Ok(validation_result)) => Ok(validation_result), - Ok(Err(err)) => Err(Error::ValidationFailed(err)), - Err(err) => Err(Error::ValidateFromChainState(err)), - } -} - -type BackgroundValidationResult = Result<(CandidateReceipt, CandidateCommitments, Arc), CandidateReceipt>; - -struct BackgroundValidationParams { - sender: JobSender, - tx_command: mpsc::Sender, - candidate: CandidateReceipt, - relay_parent: Hash, - pov: PoVData, - validator_index: Option, - n_validators: usize, - span: Option, - make_command: F, -} - -async fn validate_and_make_available( - params: BackgroundValidationParams< - impl SubsystemSender, - impl Fn(BackgroundValidationResult) -> ValidatedCandidateCommand + Sync, - > -) -> Result<(), Error> { - let BackgroundValidationParams { - mut sender, - mut tx_command, - candidate, - relay_parent, - pov, - validator_index, - n_validators, - span, - make_command, - } = params; - - let pov = match pov { - PoVData::Ready(pov) => pov, - PoVData::FetchFromValidator { - from_validator, - candidate_hash, - pov_hash, - } => { - let _span = span.as_ref().map(|s| s.child("request-pov")); - match request_pov( - &mut sender, - relay_parent, - from_validator, - candidate_hash, - pov_hash, - ).await { - Err(Error::FetchPoV) => { - tx_command.send(ValidatedCandidateCommand::AttestNoPoV(candidate.hash())).await.map_err(Error::Mpsc)?; - return Ok(()) - } - Err(err) => return Err(err), - Ok(pov) => pov, - } - } - }; - - let v = { - let _span = span.as_ref().map(|s| { - s.child("request-validation") - .with_pov(&pov) - .with_para_id(candidate.descriptor().para_id) - }); - request_candidate_validation(&mut sender, candidate.descriptor.clone(), pov.clone()).await? - }; - - let expected_commitments_hash = candidate.commitments_hash; - - let res = match v { - ValidationResult::Valid(commitments, validation_data) => { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate.hash(), - "Validation successful", - ); - - // If validation produces a new set of commitments, we vote the candidate as invalid. - if commitments.hash() != expected_commitments_hash { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate.hash(), - actual_commitments = ?commitments, - "Commitments obtained with validation don't match the announced by the candidate receipt", - ); - Err(candidate) - } else { - let erasure_valid = make_pov_available( - &mut sender, - validator_index, - n_validators, - pov.clone(), - candidate.hash(), - validation_data, - candidate.descriptor.erasure_root, - span.as_ref(), - ).await?; - - match erasure_valid { - Ok(()) => Ok((candidate, commitments, pov.clone())), - Err(InvalidErasureRoot) => { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate.hash(), - actual_commitments = ?commitments, - "Erasure root doesn't match the announced by the candidate receipt", - ); - Err(candidate) - }, - } - } - } - ValidationResult::Invalid(reason) => { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate.hash(), - reason = ?reason, - "Validation yielded an invalid candidate", - ); - Err(candidate) - } - }; - - tx_command.send(make_command(res)).await.map_err(Into::into) -} - -impl CandidateBackingJob { - /// Run asynchronously. - async fn run_loop( - mut self, - mut sender: JobSender, - mut rx_to: mpsc::Receiver, - span: PerLeafSpan, - ) -> Result<(), Error> { - loop { - futures::select! { - validated_command = self.background_validation.next() => { - let _span = span.child("process-validation-result"); - if let Some(c) = validated_command { - self.handle_validated_candidate_command(&span, &mut sender, c).await?; - } else { - panic!("`self` hasn't dropped and `self` holds a reference to this sender; qed"); - } - } - to_job = rx_to.next() => match to_job { - None => break, - Some(msg) => { - // we intentionally want spans created in `process_msg` to descend from the - // `span ` which is longer-lived than this ephemeral timing span. - let _timing_span = span.child("process-message"); - self.process_msg(&span, &mut sender, msg).await?; - } - } - } - } - - Ok(()) - } - - async fn handle_validated_candidate_command( - &mut self, - root_span: &jaeger::Span, - sender: &mut JobSender, - command: ValidatedCandidateCommand, - ) -> Result<(), Error> { - let candidate_hash = command.candidate_hash(); - self.awaiting_validation.remove(&candidate_hash); - - match command { - ValidatedCandidateCommand::Second(res) => { - match res { - Ok((candidate, commitments, _)) => { - // sanity check. - if self.seconded.is_none() && !self.issued_statements.contains(&candidate_hash) { - self.seconded = Some(candidate_hash); - self.issued_statements.insert(candidate_hash); - self.metrics.on_candidate_seconded(); - - let statement = Statement::Seconded(CommittedCandidateReceipt { - descriptor: candidate.descriptor.clone(), - commitments, - }); - if let Some(stmt) = self.sign_import_and_distribute_statement( - sender, - statement, - root_span, - ).await? { - sender.send_message( - CollatorProtocolMessage::Seconded(self.parent, stmt).into() - ).await; - } - } - } - Err(candidate) => { - sender.send_message( - CollatorProtocolMessage::Invalid(self.parent, candidate).into() - ).await; - } - } - } - ValidatedCandidateCommand::Attest(res) => { - // We are done - avoid new validation spawns: - self.fallbacks.remove(&candidate_hash); - // sanity check. - if !self.issued_statements.contains(&candidate_hash) { - if res.is_ok() { - let statement = Statement::Valid(candidate_hash); - self.sign_import_and_distribute_statement(sender, statement, &root_span).await?; - } - self.issued_statements.insert(candidate_hash); - } - } - ValidatedCandidateCommand::AttestNoPoV(candidate_hash) => { - if let Some((attesting, span)) = self.fallbacks.get_mut(&candidate_hash) { - if let Some(index) = attesting.backing.pop() { - attesting.from_validator = index; - // Ok, another try: - let c_span = span.as_ref().map(|s| s.child("try")); - let attesting = attesting.clone(); - self.kick_off_validation_work(sender, attesting, c_span).await? - } - - } else { - tracing::warn!( - target: LOG_TARGET, - "AttestNoPoV was triggered without fallback being available." - ); - debug_assert!(false); - } - } - } - - Ok(()) - } - - async fn background_validate_and_make_available( - &mut self, - sender: &mut JobSender, - params: BackgroundValidationParams< - impl SubsystemSender, - impl Fn(BackgroundValidationResult) -> ValidatedCandidateCommand + Send + 'static + Sync - >, - ) -> Result<(), Error> { - let candidate_hash = params.candidate.hash(); - if self.awaiting_validation.insert(candidate_hash) { - // spawn background task. - let bg = async move { - if let Err(e) = validate_and_make_available(params).await { - tracing::error!(target: LOG_TARGET, "Failed to validate and make available: {:?}", e); - } - }; - sender.send_command(FromJobCommand::Spawn("Backing Validation", bg.boxed())).await?; - } - - Ok(()) - } - - /// Kick off background validation with intent to second. - async fn validate_and_second( - &mut self, - parent_span: &jaeger::Span, - root_span: &jaeger::Span, - sender: &mut JobSender, - candidate: &CandidateReceipt, - pov: Arc, - ) -> Result<(), Error> { - // Check that candidate is collated by the right collator. - if self.required_collator.as_ref() - .map_or(false, |c| c != &candidate.descriptor().collator) - { - sender.send_message( - CollatorProtocolMessage::Invalid(self.parent, candidate.clone()).into() - ).await; - return Ok(()); - } - - let candidate_hash = candidate.hash(); - let mut span = self.get_unbacked_validation_child( - root_span, - candidate_hash, - candidate.descriptor().para_id, - ); - - span.as_mut().map(|span| span.add_follows_from(parent_span)); - - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate_hash, - candidate_receipt = ?candidate, - "Validate and second candidate", - ); - - let bg_sender = sender.clone(); - self.background_validate_and_make_available( - sender, - BackgroundValidationParams { - sender: bg_sender, - tx_command: self.background_validation_tx.clone(), - candidate: candidate.clone(), - relay_parent: self.parent, - pov: PoVData::Ready(pov), - validator_index: self.table_context.validator.as_ref().map(|v| v.index()), - n_validators: self.table_context.validators.len(), - span, - make_command: ValidatedCandidateCommand::Second, - } - ).await?; - - Ok(()) - } - - async fn sign_import_and_distribute_statement( - &mut self, - sender: &mut JobSender, - statement: Statement, - root_span: &jaeger::Span, - ) -> Result, Error> { - if let Some(signed_statement) = self.sign_statement(statement).await { - self.import_statement(sender, &signed_statement, root_span).await?; - let smsg = StatementDistributionMessage::Share(self.parent, signed_statement.clone()); - sender.send_unbounded_message(smsg.into()); - - Ok(Some(signed_statement)) - } else { - Ok(None) - } - } - - /// Check if there have happened any new misbehaviors and issue necessary messages. - async fn issue_new_misbehaviors(&mut self, sender: &mut JobSender) { - // collect the misbehaviors to avoid double mutable self borrow issues - let misbehaviors: Vec<_> = self.table.drain_misbehaviors().collect(); - for (validator_id, report) in misbehaviors { - sender.send_message( - ProvisionerMessage::ProvisionableData( - self.parent, - ProvisionableData::MisbehaviorReport(self.parent, validator_id, report) - ).into() - ).await; - } - } - - /// Import a statement into the statement table and return the summary of the import. - async fn import_statement( - &mut self, - sender: &mut JobSender, - statement: &SignedFullStatement, - root_span: &jaeger::Span, - ) -> Result, Error> { - tracing::debug!( - target: LOG_TARGET, - statement = ?statement.payload().to_compact(), - validator_index = statement.validator_index().0, - "Importing statement", - ); - - let import_statement_span = { - // create a span only for candidates we're already aware of. - let candidate_hash = statement.payload().candidate_hash(); - self.get_unbacked_statement_child(root_span, candidate_hash, statement.validator_index()) - }; - - let stmt = primitive_statement_to_table(statement); - - let summary = self.table.import_statement(&self.table_context, stmt); - - let unbacked_span = if let Some(attested) = summary.as_ref() - .and_then(|s| self.table.attested_candidate(&s.candidate, &self.table_context)) - { - let candidate_hash = attested.candidate.hash(); - // `HashSet::insert` returns true if the thing wasn't in there already. - if self.backed.insert(candidate_hash) { - let span = self.remove_unbacked_span(&candidate_hash); - - if let Some(backed) = - table_attested_to_backed(attested, &self.table_context) - { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate_hash, - relay_parent = ?self.parent, - para_id = %backed.candidate.descriptor.para_id, - "Candidate backed", - ); - - let message = ProvisionerMessage::ProvisionableData( - self.parent, - ProvisionableData::BackedCandidate(backed.receipt()), - ); - sender.send_message(message.into()).await; - - span.as_ref().map(|s| s.child("backed")); - span - } else { - None - } - } else { - None - } - } else { - None - }; - - self.issue_new_misbehaviors(sender).await; - - // It is important that the child span is dropped before its parent span (`unbacked_span`) - drop(import_statement_span); - drop(unbacked_span); - - Ok(summary) - } - - async fn process_msg( - &mut self, - root_span: &jaeger::Span, - sender: &mut JobSender, - msg: CandidateBackingMessage, - ) -> Result<(), Error> { - match msg { - CandidateBackingMessage::Second(relay_parent, candidate, pov) => { - let _timer = self.metrics.time_process_second(); - - let span = root_span.child("second") - .with_stage(jaeger::Stage::CandidateBacking) - .with_pov(&pov) - .with_candidate(candidate.hash()) - .with_relay_parent(relay_parent); - - // Sanity check that candidate is from our assignment. - if Some(candidate.descriptor().para_id) != self.assignment { - return Ok(()); - } - - // If the message is a `CandidateBackingMessage::Second`, sign and dispatch a - // Seconded statement only if we have not seconded any other candidate and - // have not signed a Valid statement for the requested candidate. - if self.seconded.is_none() { - // This job has not seconded a candidate yet. - let candidate_hash = candidate.hash(); - - if !self.issued_statements.contains(&candidate_hash) { - let pov = Arc::new(pov); - self.validate_and_second(&span, &root_span, sender, &candidate, pov).await?; - } - } - } - CandidateBackingMessage::Statement(_relay_parent, statement) => { - let _timer = self.metrics.time_process_statement(); - let _span = root_span.child("statement") - .with_stage(jaeger::Stage::CandidateBacking) - .with_candidate(statement.payload().candidate_hash()) - .with_relay_parent(_relay_parent); - - match self.maybe_validate_and_import(&root_span, sender, statement).await { - Err(Error::ValidationFailed(_)) => return Ok(()), - Err(e) => return Err(e), - Ok(()) => (), - } - } - CandidateBackingMessage::GetBackedCandidates(_, requested_candidates, tx) => { - let _timer = self.metrics.time_get_backed_candidates(); - - let backed = requested_candidates - .into_iter() - .filter_map(|hash| { - self.table.attested_candidate(&hash, &self.table_context) - .and_then(|attested| table_attested_to_backed(attested, &self.table_context)) - }) - .collect(); - - tx.send(backed).map_err(|data| Error::Send(data))?; - } - } - - Ok(()) - } - - /// Kick off validation work and distribute the result as a signed statement. - async fn kick_off_validation_work( - &mut self, - sender: &mut JobSender, - attesting: AttestingData, - span: Option, - ) -> Result<(), Error> { - let candidate_hash = attesting.candidate.hash(); - if self.issued_statements.contains(&candidate_hash) { - return Ok(()) - } - - let descriptor = attesting.candidate.descriptor().clone(); - - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?candidate_hash, - candidate_receipt = ?attesting.candidate, - "Kicking off validation", - ); - - // Check that candidate is collated by the right collator. - if self.required_collator.as_ref() - .map_or(false, |c| c != &descriptor.collator) - { - // If not, we've got the statement in the table but we will - // not issue validation work for it. - // - // Act as though we've issued a statement. - self.issued_statements.insert(candidate_hash); - return Ok(()); - } - - let bg_sender = sender.clone(); - let pov = PoVData::FetchFromValidator { - from_validator: attesting.from_validator, - candidate_hash, - pov_hash: attesting.pov_hash, - }; - self.background_validate_and_make_available( - sender, - BackgroundValidationParams { - sender: bg_sender, - tx_command: self.background_validation_tx.clone(), - candidate: attesting.candidate, - relay_parent: self.parent, - pov, - validator_index: self.table_context.validator.as_ref().map(|v| v.index()), - n_validators: self.table_context.validators.len(), - span, - make_command: ValidatedCandidateCommand::Attest, - }, - ).await - } - - /// Import the statement and kick off validation work if it is a part of our assignment. - async fn maybe_validate_and_import( - &mut self, - root_span: &jaeger::Span, - sender: &mut JobSender, - statement: SignedFullStatement, - ) -> Result<(), Error> { - if let Some(summary) = self.import_statement(sender, &statement, root_span).await? { - if Some(summary.group_id) != self.assignment { - return Ok(()) - } - let (attesting, span) = match statement.payload() { - Statement::Seconded(receipt) => { - let candidate_hash = summary.candidate; - - let span = self.get_unbacked_validation_child( - root_span, - summary.candidate, - summary.group_id, - ); - - let attesting = AttestingData { - candidate: self.table.get_candidate(&candidate_hash).ok_or(Error::CandidateNotFound)?.to_plain(), - pov_hash: receipt.descriptor.pov_hash, - from_validator: statement.validator_index(), - backing: Vec::new(), - }; - let child = span.as_ref().map(|s| s.child("try")); - self.fallbacks.insert(summary.candidate, (attesting.clone(), span)); - (attesting, child) - } - Statement::Valid(candidate_hash) => { - if let Some((attesting, span)) = self.fallbacks.get_mut(candidate_hash) { - - let our_index = self.table_context.validator.as_ref().map(|v| v.index()); - if our_index == Some(statement.validator_index()) { - return Ok(()) - } - - if self.awaiting_validation.contains(candidate_hash) { - // Job already running: - attesting.backing.push(statement.validator_index()); - return Ok(()) - } else { - // No job, so start another with current validator: - attesting.from_validator = statement.validator_index(); - (attesting.clone(), span.as_ref().map(|s| s.child("try"))) - } - } else { - return Ok(()) - } - } - }; - - self.kick_off_validation_work( - sender, - attesting, - span, - ).await?; - } - Ok(()) - } - - async fn sign_statement(&self, statement: Statement) -> Option { - let signed = self.table_context - .validator - .as_ref()? - .sign(self.keystore.clone(), statement) - .await - .ok() - .flatten()?; - self.metrics.on_statement_signed(); - Some(signed) - } - - /// Insert or get the unbacked-span for the given candidate hash. - fn insert_or_get_unbacked_span( - &mut self, - parent_span: &jaeger::Span, - hash: CandidateHash, - para_id: Option - ) -> Option<&jaeger::Span> { - if !self.backed.contains(&hash) { - // only add if we don't consider this backed. - let span = self.unbacked_candidates.entry(hash).or_insert_with(|| { - let s = parent_span.child("unbacked-candidate").with_candidate(hash); - if let Some(para_id) = para_id { - s.with_para_id(para_id) - } else { - s - } - }); - Some(span) - } else { - None - } - } - - fn get_unbacked_validation_child( - &mut self, - parent_span: &jaeger::Span, - hash: CandidateHash, - para_id: ParaId, - ) -> Option { - self.insert_or_get_unbacked_span(parent_span, hash, Some(para_id)) - .map(|span| { - span.child("validation") - .with_candidate(hash) - .with_stage(Stage::CandidateBacking) - }) - } - - fn get_unbacked_statement_child( - &mut self, - parent_span: &jaeger::Span, - hash: CandidateHash, - validator: ValidatorIndex, - ) -> Option { - self.insert_or_get_unbacked_span(parent_span, hash, None).map(|span| { - span.child("import-statement") - .with_candidate(hash) - .with_validator_index(validator) - }) - } - - fn remove_unbacked_span(&mut self, hash: &CandidateHash) -> Option { - self.unbacked_candidates.remove(hash) - } -} - -impl util::JobTrait for CandidateBackingJob { - type ToJob = CandidateBackingMessage; - type Error = Error; - type RunArgs = SyncCryptoStorePtr; - type Metrics = Metrics; - - const NAME: &'static str = "CandidateBackingJob"; - - fn run( - parent: Hash, - span: Arc, - keystore: SyncCryptoStorePtr, - metrics: Metrics, - rx_to: mpsc::Receiver, - mut sender: JobSender, - ) -> Pin> + Send>> { - async move { - macro_rules! try_runtime_api { - ($x: expr) => { - match $x { - Ok(x) => x, - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Failed to fetch runtime API data for job", - ); - - // We can't do candidate validation work if we don't have the - // requisite runtime API data. But these errors should not take - // down the node. - return Ok(()); - } - } - } - } - - let span = PerLeafSpan::new(span, "backing"); - let _span = span.child("runtime-apis"); - - let (validators, groups, session_index, cores) = futures::try_join!( - request_validators(parent, &mut sender).await, - request_validator_groups(parent, &mut sender).await, - request_session_index_for_child(parent, &mut sender).await, - request_from_runtime( - parent, - &mut sender, - |tx| RuntimeApiRequest::AvailabilityCores(tx), - ).await, - ).map_err(Error::JoinMultiple)?; - - let validators = try_runtime_api!(validators); - let (validator_groups, group_rotation_info) = try_runtime_api!(groups); - let session_index = try_runtime_api!(session_index); - let cores = try_runtime_api!(cores); - - drop(_span); - let _span = span.child("validator-construction"); - - let signing_context = SigningContext { parent_hash: parent, session_index }; - let validator = match Validator::construct( - &validators, - signing_context.clone(), - keystore.clone(), - ).await { - Ok(v) => Some(v), - Err(util::Error::NotAValidator) => None, - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Cannot participate in candidate backing", - ); - - return Ok(()) - } - }; - - drop(_span); - let mut assignments_span = span.child("compute-assignments"); - - let mut groups = HashMap::new(); - - let n_cores = cores.len(); - - let mut assignment = None; - - for (idx, core) in cores.into_iter().enumerate() { - // Ignore prospective assignments on occupied cores for the time being. - if let CoreState::Scheduled(scheduled) = core { - let core_index = CoreIndex(idx as _); - let group_index = group_rotation_info.group_for_core(core_index, n_cores); - if let Some(g) = validator_groups.get(group_index.0 as usize) { - if validator.as_ref().map_or(false, |v| g.contains(&v.index())) { - assignment = Some((scheduled.para_id, scheduled.collator)); - } - groups.insert(scheduled.para_id, g.clone()); - } - } - } - - let table_context = TableContext { - groups, - validators, - validator, - }; - - let (assignment, required_collator) = match assignment { - None => { - assignments_span.add_string_tag("assigned", "false"); - (None, None) - } - Some((assignment, required_collator)) => { - assignments_span.add_string_tag("assigned", "true"); - assignments_span.add_para_id(assignment); - (Some(assignment), required_collator) - } - }; - - drop(assignments_span); - let _span = span.child("wait-for-job"); - - let (background_tx, background_rx) = mpsc::channel(16); - let job = CandidateBackingJob { - parent, - assignment, - required_collator, - issued_statements: HashSet::new(), - awaiting_validation: HashSet::new(), - fallbacks: HashMap::new(), - seconded: None, - unbacked_candidates: HashMap::new(), - backed: HashSet::new(), - keystore, - table: Table::default(), - table_context, - background_validation: background_rx, - background_validation_tx: background_tx, - metrics, - }; - drop(_span); - - job.run_loop(sender, rx_to, span).await - }.boxed() - } -} - -#[derive(Clone)] -struct MetricsInner { - signed_statements_total: prometheus::Counter, - candidates_seconded_total: prometheus::Counter, - process_second: prometheus::Histogram, - process_statement: prometheus::Histogram, - get_backed_candidates: prometheus::Histogram, -} - -/// Candidate backing metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_statement_signed(&self) { - if let Some(metrics) = &self.0 { - metrics.signed_statements_total.inc(); - } - } - - fn on_candidate_seconded(&self) { - if let Some(metrics) = &self.0 { - metrics.candidates_seconded_total.inc(); - } - } - - /// Provide a timer for handling `CandidateBackingMessage:Second` which observes on drop. - fn time_process_second(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_second.start_timer()) - } - - /// Provide a timer for handling `CandidateBackingMessage::Statement` which observes on drop. - fn time_process_statement(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_statement.start_timer()) - } - - /// Provide a timer for handling `CandidateBackingMessage::GetBackedCandidates` which observes on drop. - fn time_get_backed_candidates(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.get_backed_candidates.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - signed_statements_total: prometheus::register( - prometheus::Counter::new( - "parachain_candidate_backing_signed_statements_total", - "Number of statements signed.", - )?, - registry, - )?, - candidates_seconded_total: prometheus::register( - prometheus::Counter::new( - "parachain_candidate_backing_candidates_seconded_total", - "Number of candidates seconded.", - )?, - registry, - )?, - process_second: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_backing_process_second", - "Time spent within `candidate_backing::process_second`", - ) - )?, - registry, - )?, - process_statement: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_backing_process_statement", - "Time spent within `candidate_backing::process_statement`", - ) - )?, - registry, - )?, - get_backed_candidates: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_backing_get_backed_candidates", - "Time spent within `candidate_backing::get_backed_candidates`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - -/// The candidate backing subsystem. -pub type CandidateBackingSubsystem - = polkadot_node_subsystem_util::JobSubsystem; diff --git a/node/core/backing/src/tests.rs b/node/core/backing/src/tests.rs deleted file mode 100644 index 8aa4a3a9f3cc..000000000000 --- a/node/core/backing/src/tests.rs +++ /dev/null @@ -1,1567 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use assert_matches::assert_matches; -use futures::{future, Future}; -use polkadot_primitives::v1::{GroupRotationInfo, HeadData, PersistedValidationData, ScheduledCore}; -use polkadot_subsystem::{ - messages::{RuntimeApiRequest, RuntimeApiMessage, CollatorProtocolMessage}, - ActiveLeavesUpdate, FromOverseer, OverseerSignal, ActivatedLeaf, LeafStatus, -}; -use polkadot_node_primitives::{InvalidCandidate, BlockData}; -use polkadot_node_subsystem_test_helpers as test_helpers; -use sp_keyring::Sr25519Keyring; -use sp_application_crypto::AppKey; -use sp_keystore::{CryptoStore, SyncCryptoStore}; -use statement_table::v1::Misbehavior; -use std::collections::HashMap; -use sp_tracing as _; - -fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() -} - -fn table_statement_to_primitive( - statement: TableStatement, -) -> Statement { - match statement { - TableStatement::Seconded(committed_candidate_receipt) => Statement::Seconded(committed_candidate_receipt), - TableStatement::Valid(candidate_hash) => Statement::Valid(candidate_hash), - } -} - -struct TestState { - chain_ids: Vec, - keystore: SyncCryptoStorePtr, - validators: Vec, - validator_public: Vec, - validation_data: PersistedValidationData, - validator_groups: (Vec>, GroupRotationInfo), - availability_cores: Vec, - head_data: HashMap, - signing_context: SigningContext, - relay_parent: Hash, -} - -impl Default for TestState { - fn default() -> Self { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - let chain_ids = vec![chain_a, chain_b, thread_a]; - - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - Sr25519Keyring::One, - ]; - - let keystore = Arc::new(sc_keystore::LocalKeystore::in_memory()); - // Make sure `Alice` key is in the keystore, so this mocked node will be a parachain validator. - SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, Some(&validators[0].to_seed())) - .expect("Insert key into keystore"); - - let validator_public = validator_pubkeys(&validators); - - let validator_groups = vec![vec![2, 0, 3, 5], vec![1], vec![4]] - .into_iter().map(|g| g.into_iter().map(ValidatorIndex).collect()).collect(); - let group_rotation_info = GroupRotationInfo { - session_start_block: 0, - group_rotation_frequency: 100, - now: 1, - }; - - let thread_collator: CollatorId = Sr25519Keyring::Two.public().into(); - let availability_cores = vec![ - CoreState::Scheduled(ScheduledCore { - para_id: chain_a, - collator: None, - }), - CoreState::Scheduled(ScheduledCore { - para_id: chain_b, - collator: None, - }), - CoreState::Scheduled(ScheduledCore { - para_id: thread_a, - collator: Some(thread_collator.clone()), - }), - ]; - - let mut head_data = HashMap::new(); - head_data.insert(chain_a, HeadData(vec![4, 5, 6])); - - let relay_parent = Hash::repeat_byte(5); - - let signing_context = SigningContext { - session_index: 1, - parent_hash: relay_parent, - }; - - let validation_data = PersistedValidationData { - parent_head: HeadData(vec![7, 8, 9]), - relay_parent_number: Default::default(), - max_pov_size: 1024, - relay_parent_storage_root: Default::default(), - }; - - Self { - chain_ids, - keystore, - validators, - validator_public, - validator_groups: (validator_groups, group_rotation_info), - availability_cores, - head_data, - validation_data, - signing_context, - relay_parent, - } - } -} - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -fn test_harness>( - keystore: SyncCryptoStorePtr, - test: impl FnOnce(VirtualOverseer) -> T, -) { - let pool = sp_core::testing::TaskExecutor::new(); - - let (context, virtual_overseer) = - test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = CandidateBackingSubsystem::new( - pool.clone(), - keystore, - Metrics(None), - ).run(context); - - let test_fut = test(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - futures::executor::block_on(future::join(async move { - let mut virtual_overseer = test_fut.await; - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::Conclude, - )).await; - }, subsystem)); -} - -fn make_erasure_root(test: &TestState, pov: PoV) -> Hash { - let available_data = AvailableData { - validation_data: test.validation_data.clone(), - pov: Arc::new(pov), - }; - - let chunks = erasure_coding::obtain_chunks_v1(test.validators.len(), &available_data).unwrap(); - erasure_coding::branches(&chunks).root() -} - -#[derive(Default)] -struct TestCandidateBuilder { - para_id: ParaId, - head_data: HeadData, - pov_hash: Hash, - relay_parent: Hash, - erasure_root: Hash, -} - -impl TestCandidateBuilder { - fn build(self) -> CommittedCandidateReceipt { - CommittedCandidateReceipt { - descriptor: CandidateDescriptor { - para_id: self.para_id, - pov_hash: self.pov_hash, - relay_parent: self.relay_parent, - erasure_root: self.erasure_root, - ..Default::default() - }, - commitments: CandidateCommitments { - head_data: self.head_data, - ..Default::default() - }, - } - } -} - -// Tests that the subsystem performs actions that are requied on startup. -async fn test_startup( - virtual_overseer: &mut VirtualOverseer, - test_state: &TestState, -) { - // Start work on some new parent. - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: test_state.relay_parent, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }))) - ).await; - - // Check that subsystem job issues a request for a validator set. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(parent, RuntimeApiRequest::Validators(tx)) - ) if parent == test_state.relay_parent => { - tx.send(Ok(test_state.validator_public.clone())).unwrap(); - } - ); - - // Check that subsystem job issues a request for the validator groups. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(parent, RuntimeApiRequest::ValidatorGroups(tx)) - ) if parent == test_state.relay_parent => { - tx.send(Ok(test_state.validator_groups.clone())).unwrap(); - } - ); - - // Check that subsystem job issues a request for the session index for child. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(parent, RuntimeApiRequest::SessionIndexForChild(tx)) - ) if parent == test_state.relay_parent => { - tx.send(Ok(test_state.signing_context.session_index)).unwrap(); - } - ); - - // Check that subsystem job issues a request for the availability cores. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(parent, RuntimeApiRequest::AvailabilityCores(tx)) - ) if parent == test_state.relay_parent => { - tx.send(Ok(test_state.availability_cores.clone())).unwrap(); - } - ); -} - -// Test that a `CandidateBackingMessage::Second` issues validation work -// and in case validation is successful issues a `StatementDistributionMessage`. -#[test] -fn backing_second_works() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let pov_hash = pov.hash(); - let candidate = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate.to_plain(), - pov.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate.descriptor() => { - tx.send(Ok( - ValidationResult::Valid(CandidateCommitments { - head_data: expected_head_data.clone(), - horizontal_messages: Vec::new(), - upward_messages: Vec::new(), - new_validation_code: None, - processed_downward_messages: 0, - hrmp_watermark: 0, - }, test_state.validation_data), - )).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) - ) if candidate_hash == candidate.hash() => { - tx.send(Ok(())).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::Share( - parent_hash, - _signed_statement, - ) - ) if parent_hash == test_state.relay_parent => {} - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CollatorProtocol(CollatorProtocolMessage::Seconded(hash, statement)) => { - assert_eq!(test_state.relay_parent, hash); - assert_matches!(statement.payload(), Statement::Seconded(_)); - } - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -// Test that the candidate reaches quorum succesfully. -#[test] -fn backing_works() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_hash = pov.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let candidate_a_hash = candidate_a.hash(); - let public1 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[5].to_seed()), - ).await.expect("Insert key into keystore"); - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[2].to_seed()), - ).await.expect("Insert key into keystore"); - - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate_a.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let signed_b = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(5), - &public1.into(), - ).await.ok().flatten().expect("should be signed"); - - let statement = CandidateBackingMessage::Statement(test_state.relay_parent, signed_a.clone()); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Sending a `Statement::Seconded` for our assignment will start - // validation process. The first thing requested is the PoV. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - // The next step is the actual request to Validation subsystem - // to validate the `Seconded` candidate. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate_a.descriptor() => { - tx.send(Ok( - ValidationResult::Valid(CandidateCommitments { - head_data: expected_head_data.clone(), - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - new_validation_code: None, - processed_downward_messages: 0, - hrmp_watermark: 0, - }, test_state.validation_data), - )).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) - ) if candidate_hash == candidate_a.hash() => { - tx.send(Ok(())).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::Share(hash, _stmt) - ) => { - assert_eq!(test_state.relay_parent, hash); - } - ); - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_b.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::BackedCandidate(candidate_receipt) - ) - ) => { - assert_eq!(candidate_receipt, candidate_a.to_plain()); - } - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -#[test] -fn backing_works_while_validation_ongoing() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_hash = pov.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let candidate_a_hash = candidate_a.hash(); - let public1 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[5].to_seed()), - ).await.expect("Insert key into keystore"); - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[2].to_seed()), - ).await.expect("Insert key into keystore"); - let public3 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[3].to_seed()), - ).await.expect("Insert key into keystore"); - - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate_a.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let signed_b = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(5), - &public1.into(), - ).await.ok().flatten().expect("should be signed"); - - let signed_c = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(3), - &public3.into(), - ).await.ok().flatten().expect("should be signed"); - - let statement = CandidateBackingMessage::Statement(test_state.relay_parent, signed_a.clone()); - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Sending a `Statement::Seconded` for our assignment will start - // validation process. The first thing requested is PoV from the - // `PoVDistribution`. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - // The next step is the actual request to Validation subsystem - // to validate the `Seconded` candidate. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate_a.descriptor() => { - // we never validate the candidate. our local node - // shouldn't issue any statements. - std::mem::forget(tx); - } - ); - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_b.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_c.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Candidate gets backed entirely by other votes. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::BackedCandidate(CandidateReceipt { - descriptor, - .. - }) - ) - ) if descriptor == candidate_a.descriptor - ); - - let (tx, rx) = oneshot::channel(); - let msg = CandidateBackingMessage::GetBackedCandidates( - test_state.relay_parent, - vec![candidate_a.hash()], - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg }).await; - - let candidates = rx.await.unwrap(); - assert_eq!(1, candidates.len()); - assert_eq!(candidates[0].validity_votes.len(), 3); - - assert!(candidates[0].validity_votes.contains( - &ValidityAttestation::Implicit(signed_a.signature().clone()) - )); - assert!(candidates[0].validity_votes.contains( - &ValidityAttestation::Explicit(signed_b.signature().clone()) - )); - assert!(candidates[0].validity_votes.contains( - &ValidityAttestation::Explicit(signed_c.signature().clone()) - )); - assert_eq!( - candidates[0].validator_indices, - bitvec::bitvec![bitvec::order::Lsb0, u8; 1, 0, 1, 1], - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -// Issuing conflicting statements on the same candidate should -// be a misbehavior. -#[test] -fn backing_misbehavior_works() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_hash = pov.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - erasure_root: make_erasure_root(&test_state, pov.clone()), - head_data: expected_head_data.clone(), - ..Default::default() - }.build(); - - let candidate_a_hash = candidate_a.hash(); - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, Some(&test_state.validators[2].to_seed()) - ).await.expect("Insert key into keystore"); - let seconded_2 = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate_a.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let valid_2 = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let statement = CandidateBackingMessage::Statement(test_state.relay_parent, seconded_2.clone()); - - virtual_overseer.send(FromOverseer::Communication { msg: statement }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate_a.descriptor() => { - tx.send(Ok( - ValidationResult::Valid(CandidateCommitments { - head_data: expected_head_data.clone(), - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - new_validation_code: None, - processed_downward_messages: 0, - hrmp_watermark: 0, - }, test_state.validation_data), - )).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) - ) if candidate_hash == candidate_a.hash() => { - tx.send(Ok(())).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::Share( - relay_parent, - signed_statement, - ) - ) if relay_parent == test_state.relay_parent => { - assert_eq!(*signed_statement.payload(), Statement::Valid(candidate_a_hash)); - } - ); - - // This `Valid` statement is redundant after the `Seconded` statement already sent. - let statement = CandidateBackingMessage::Statement(test_state.relay_parent, valid_2.clone()); - - virtual_overseer.send(FromOverseer::Communication { msg: statement }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::MisbehaviorReport( - relay_parent, - validator_index, - Misbehavior::ValidityDoubleVote(vdv), - ) - ) - ) if relay_parent == test_state.relay_parent => { - let ((t1, s1), (t2, s2)) = vdv.deconstruct::(); - let t1 = table_statement_to_primitive(t1); - let t2 = table_statement_to_primitive(t2); - - SignedFullStatement::new( - t1, - validator_index, - s1, - &test_state.signing_context, - &test_state.validator_public[validator_index.0 as usize], - ).expect("signature must be valid"); - - SignedFullStatement::new( - t2, - validator_index, - s2, - &test_state.signing_context, - &test_state.validator_public[validator_index.0 as usize], - ).expect("signature must be valid"); - } - ); - virtual_overseer - }); -} - -// Test that if we are asked to second an invalid candidate we -// can still second a valid one afterwards. -#[test] -fn backing_dont_second_invalid() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov_block_a = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let pov_block_b = PoV { - block_data: BlockData(vec![45, 46, 47]), - }; - - let pov_hash_a = pov_block_a.hash(); - let pov_hash_b = pov_block_b.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash: pov_hash_a, - erasure_root: make_erasure_root(&test_state, pov_block_a.clone()), - ..Default::default() - }.build(); - - let candidate_b = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash: pov_hash_b, - erasure_root: make_erasure_root(&test_state, pov_block_b.clone()), - head_data: expected_head_data.clone(), - ..Default::default() - }.build(); - - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate_a.to_plain(), - pov_block_a.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate_a.descriptor() => { - tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CollatorProtocol( - CollatorProtocolMessage::Invalid(parent_hash, c) - ) if parent_hash == test_state.relay_parent && c == candidate_a.to_plain() - ); - - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate_b.to_plain(), - pov_block_b.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate_b.descriptor() => { - tx.send(Ok( - ValidationResult::Valid(CandidateCommitments { - head_data: expected_head_data.clone(), - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - new_validation_code: None, - processed_downward_messages: 0, - hrmp_watermark: 0, - }, test_state.validation_data), - )).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) - ) if candidate_hash == candidate_b.hash() => { - tx.send(Ok(())).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::Share( - parent_hash, - signed_statement, - ) - ) if parent_hash == test_state.relay_parent => { - assert_eq!(*signed_statement.payload(), Statement::Seconded(candidate_b)); - } - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -// Test that if we have already issued a statement (in this case `Invalid`) about a -// candidate we will not be issuing a `Seconded` statement on it. -#[test] -fn backing_second_after_first_fails_works() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let pov_hash = pov.hash(); - - let candidate = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let validator2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, Some(&test_state.validators[2].to_seed()) - ).await.expect("Insert key into keystore"); - - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &validator2.into(), - ).await.ok().flatten().expect("should be signed"); - - // Send in a `Statement` with a candidate. - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_a.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Subsystem requests PoV and requests validation. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - - // Tell subsystem that this candidate is invalid. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate.descriptor() => { - tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap(); - } - ); - - // Ask subsystem to `Second` a candidate that already has a statement issued about. - // This should emit no actions from subsystem. - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate.to_plain(), - pov.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - let pov_to_second = PoV { - block_data: BlockData(vec![3, 2, 1]), - }; - - let pov_hash = pov_to_second.hash(); - - let candidate_to_second = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - erasure_root: make_erasure_root(&test_state, pov_to_second.clone()), - ..Default::default() - }.build(); - - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate_to_second.to_plain(), - pov_to_second.clone(), - ); - - // In order to trigger _some_ actions from subsystem ask it to second another - // candidate. The only reason to do so is to make sure that no actions were - // triggered on the prev step. - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - _, - pov, - _, - ) - ) => { - assert_eq!(&*pov, &pov_to_second); - } - ); - virtual_overseer - }); -} - -// That that if the validation of the candidate has failed this does not stop -// the work of this subsystem and so it is not fatal to the node. -#[test] -fn backing_works_after_failed_validation() { - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let pov_hash = pov.hash(); - - let candidate = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, Some(&test_state.validators[2].to_seed()) - ).await.expect("Insert key into keystore"); - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - // Send in a `Statement` with a candidate. - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_a.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Subsystem requests PoV and requests validation. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - // Tell subsystem that this candidate is invalid. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - tx, - ) - ) if pov == pov && &c == candidate.descriptor() => { - tx.send(Err(ValidationFailed("Internal test error".into()))).unwrap(); - } - ); - - // Try to get a set of backable candidates to trigger _some_ action in the subsystem - // and check that it is still alive. - let (tx, rx) = oneshot::channel(); - let msg = CandidateBackingMessage::GetBackedCandidates( - test_state.relay_parent, - vec![candidate.hash()], - tx, - ); - - virtual_overseer.send(FromOverseer::Communication{ msg }).await; - assert_eq!(rx.await.unwrap().len(), 0); - virtual_overseer - }); -} - -// Test that a `CandidateBackingMessage::Second` issues validation work -// and in case validation is successful issues a `StatementDistributionMessage`. -#[test] -fn backing_doesnt_second_wrong_collator() { - let mut test_state = TestState::default(); - test_state.availability_cores[0] = CoreState::Scheduled(ScheduledCore { - para_id: ParaId::from(1), - collator: Some(Sr25519Keyring::Bob.public().into()), - }); - - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let pov_hash = pov.hash(); - let candidate = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let second = CandidateBackingMessage::Second( - test_state.relay_parent, - candidate.to_plain(), - pov.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: second }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CollatorProtocol( - CollatorProtocolMessage::Invalid(parent, c) - ) if parent == test_state.relay_parent && c == candidate.to_plain() => { - } - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -#[test] -fn validation_work_ignores_wrong_collator() { - let mut test_state = TestState::default(); - test_state.availability_cores[0] = CoreState::Scheduled(ScheduledCore { - para_id: ParaId::from(1), - collator: Some(Sr25519Keyring::Bob.public().into()), - }); - - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_hash = pov.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, Some(&test_state.validators[2].to_seed()) - ).await.expect("Insert key into keystore"); - let seconding = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate_a.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - seconding.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // The statement will be ignored because it has the wrong collator. - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} - -#[test] -fn candidate_backing_reorders_votes() { - use sp_core::Encode; - use std::convert::TryFrom; - - let para_id = ParaId::from(10); - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - Sr25519Keyring::One, - ]; - - let validator_public = validator_pubkeys(&validators); - let validator_groups = { - let mut validator_groups = HashMap::new(); - validator_groups.insert(para_id, vec![0, 1, 2, 3, 4, 5].into_iter().map(ValidatorIndex).collect()); - validator_groups - }; - - let table_context = TableContext { - validator: None, - groups: validator_groups, - validators: validator_public.clone(), - }; - - let fake_attestation = |idx: u32| { - let candidate: CommittedCandidateReceipt = Default::default(); - let hash = candidate.hash(); - let mut data = vec![0; 64]; - data[0..32].copy_from_slice(hash.0.as_bytes()); - data[32..36].copy_from_slice(idx.encode().as_slice()); - - let sig = ValidatorSignature::try_from(data).unwrap(); - statement_table::generic::ValidityAttestation::Implicit(sig) - }; - - let attested = TableAttestedCandidate { - candidate: Default::default(), - validity_votes: vec![ - (ValidatorIndex(5), fake_attestation(5)), - (ValidatorIndex(3), fake_attestation(3)), - (ValidatorIndex(1), fake_attestation(1)), - ], - group_id: para_id, - }; - - let backed = table_attested_to_backed(attested, &table_context).unwrap(); - - let expected_bitvec = { - let mut validator_indices = BitVec::::with_capacity(6); - validator_indices.resize(6, false); - - validator_indices.set(1, true); - validator_indices.set(3, true); - validator_indices.set(5, true); - - validator_indices - }; - - // Should be in bitfield order, which is opposite to the order provided to the function. - let expected_attestations = vec![ - fake_attestation(1).into(), - fake_attestation(3).into(), - fake_attestation(5).into(), - ]; - - assert_eq!(backed.validator_indices, expected_bitvec); - assert_eq!(backed.validity_votes, expected_attestations); -} - -// Test whether we retry on failed PoV fetching. -#[test] -fn retry_works() { - // sp_tracing::try_init_simple(); - let test_state = TestState::default(); - test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let pov_hash = pov.hash(); - - let candidate = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, Some(&test_state.validators[2].to_seed()) - ).await.expect("Insert key into keystore"); - let public3 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[3].to_seed()), - ).await.expect("Insert key into keystore"); - let public5 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[5].to_seed()), - ).await.expect("Insert key into keystore"); - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate.clone()), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - let signed_b = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate.hash()), - &test_state.signing_context, - ValidatorIndex(3), - &public3.into(), - ).await.ok().flatten().expect("should be signed"); - let signed_c = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate.hash()), - &test_state.signing_context, - ValidatorIndex(5), - &public5.into(), - ).await.ok().flatten().expect("should be signed"); - - // Send in a `Statement` with a candidate. - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_a.clone(), - ); - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Subsystem requests PoV and requests validation. - // We cancel - should mean retry on next backing statement. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - std::mem::drop(tx); - } - ); - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_b.clone(), - ); - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_c.clone(), - ); - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - // Not deterministic which message comes first: - for _ in 0u32..2 { - match virtual_overseer.recv().await { - AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::BackedCandidate(CandidateReceipt { - descriptor, - .. - }) - ) - ) => { - assert_eq!(descriptor, candidate.descriptor); - } - // Subsystem requests PoV and requests validation. - // We cancel once more: - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - std::mem::drop(tx); - } - msg => { - assert!(false, "Unexpected message: {:?}", msg); - } - } - } - - // Subsystem requests PoV and requests validation. - // Now we pass. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityDistribution( - AvailabilityDistributionMessage::FetchPoV { - relay_parent, - tx, - .. - } - ) if relay_parent == test_state.relay_parent => { - tx.send(pov.clone()).unwrap(); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - c, - pov, - _tx, - ) - ) if pov == pov && &c == candidate.descriptor() - ); - virtual_overseer - }); -} - -#[test] -fn observes_backing_even_if_not_validator() { - let test_state = TestState::default(); - let empty_keystore = Arc::new(sc_keystore::LocalKeystore::in_memory()); - test_harness(empty_keystore, |mut virtual_overseer| async move { - test_startup(&mut virtual_overseer, &test_state).await; - - let pov = PoV { - block_data: BlockData(vec![1, 2, 3]), - }; - - let pov_hash = pov.hash(); - - let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap(); - - let candidate_a = TestCandidateBuilder { - para_id: test_state.chain_ids[0], - relay_parent: test_state.relay_parent, - pov_hash, - head_data: expected_head_data.clone(), - erasure_root: make_erasure_root(&test_state, pov.clone()), - ..Default::default() - }.build(); - - let candidate_a_hash = candidate_a.hash(); - let public0 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[0].to_seed()), - ).await.expect("Insert key into keystore"); - let public1 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[5].to_seed()), - ).await.expect("Insert key into keystore"); - let public2 = CryptoStore::sr25519_generate_new( - &*test_state.keystore, - ValidatorId::ID, - Some(&test_state.validators[2].to_seed()), - ).await.expect("Insert key into keystore"); - - // Produce a 3-of-5 quorum on the candidate. - - let signed_a = SignedFullStatement::sign( - &test_state.keystore, - Statement::Seconded(candidate_a.clone()), - &test_state.signing_context, - ValidatorIndex(0), - &public0.into(), - ).await.ok().flatten().expect("should be signed"); - - let signed_b = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(5), - &public1.into(), - ).await.ok().flatten().expect("should be signed"); - - let signed_c = SignedFullStatement::sign( - &test_state.keystore, - Statement::Valid(candidate_a_hash), - &test_state.signing_context, - ValidatorIndex(2), - &public2.into(), - ).await.ok().flatten().expect("should be signed"); - - let statement = CandidateBackingMessage::Statement(test_state.relay_parent, signed_a.clone()); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_b.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - let statement = CandidateBackingMessage::Statement( - test_state.relay_parent, - signed_c.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication{ msg: statement }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::BackedCandidate(candidate_receipt) - ) - ) => { - assert_eq!(candidate_receipt, candidate_a.to_plain()); - } - ); - - virtual_overseer.send(FromOverseer::Signal( - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::stop_work(test_state.relay_parent))) - ).await; - virtual_overseer - }); -} diff --git a/node/core/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml deleted file mode 100644 index bf67a0f3783c..000000000000 --- a/node/core/bitfield-signing/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "polkadot-node-core-bitfield-signing" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -wasm-timer = "0.2.5" -thiserror = "1.0.23" - -[dev-dependencies] -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } diff --git a/node/core/bitfield-signing/src/lib.rs b/node/core/bitfield-signing/src/lib.rs deleted file mode 100644 index a36b2d8baa0b..000000000000 --- a/node/core/bitfield-signing/src/lib.rs +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The bitfield signing subsystem produces `SignedAvailabilityBitfield`s once per block. - -#![deny(unused_crate_dependencies)] -#![warn(missing_docs)] -#![recursion_limit="256"] - -use futures::{channel::{mpsc, oneshot}, lock::Mutex, prelude::*, future, Future}; -use sp_keystore::{Error as KeystoreError, SyncCryptoStorePtr}; -use polkadot_node_subsystem::{ - jaeger, PerLeafSpan, SubsystemSender, - messages::{ - AvailabilityStoreMessage, BitfieldDistributionMessage, - BitfieldSigningMessage, RuntimeApiMessage, RuntimeApiRequest, - }, - errors::RuntimeApiError, -}; -use polkadot_node_subsystem_util::{ - self as util, JobSubsystem, JobTrait, Validator, metrics::{self, prometheus}, - JobSender, -}; -use polkadot_primitives::v1::{AvailabilityBitfield, CoreState, Hash, ValidatorIndex}; -use std::{pin::Pin, time::Duration, iter::FromIterator, sync::Arc}; -use wasm_timer::{Delay, Instant}; - -/// Delay between starting a bitfield signing job and its attempting to create a bitfield. -const JOB_DELAY: Duration = Duration::from_millis(1500); -const LOG_TARGET: &str = "parachain::bitfield-signing"; - -/// Each `BitfieldSigningJob` prepares a signed bitfield for a single relay parent. -pub struct BitfieldSigningJob; - -/// Errors we may encounter in the course of executing the `BitfieldSigningSubsystem`. -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - Util(#[from] util::Error), - - #[error(transparent)] - Io(#[from] std::io::Error), - - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - - #[error(transparent)] - MpscSend(#[from] mpsc::SendError), - - #[error(transparent)] - Runtime(#[from] RuntimeApiError), - - #[error("Keystore failed: {0:?}")] - Keystore(KeystoreError), -} - -/// If there is a candidate pending availability, query the Availability Store -/// for whether we have the availability chunk for our validator index. -async fn get_core_availability( - core: &CoreState, - validator_idx: ValidatorIndex, - sender: &Mutex<&mut impl SubsystemSender>, - span: &jaeger::Span, -) -> Result { - if let &CoreState::Occupied(ref core) = core { - let _span = span.child("query-chunk-availability"); - - let (tx, rx) = oneshot::channel(); - sender - .lock() - .await - .send_message( - AvailabilityStoreMessage::QueryChunkAvailability( - core.candidate_hash, - validator_idx, - tx, - ).into(), - ) - .await; - - let res = rx.await.map_err(Into::into); - - tracing::trace!( - target: LOG_TARGET, - para_id = %core.para_id(), - availability = ?res, - ?core.candidate_hash, - "Candidate availability", - ); - - res - } else { - Ok(false) - } -} - -/// delegates to the v1 runtime API -async fn get_availability_cores( - relay_parent: Hash, - sender: &mut impl SubsystemSender, -) -> Result, Error> { - let (tx, rx) = oneshot::channel(); - sender - .send_message(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::AvailabilityCores(tx), - ).into()) - .await; - match rx.await { - Ok(Ok(out)) => Ok(out), - Ok(Err(runtime_err)) => Err(runtime_err.into()), - Err(err) => Err(err.into()) - } -} - -/// - get the list of core states from the runtime -/// - for each core, concurrently determine chunk availability (see `get_core_availability`) -/// - return the bitfield if there were no errors at any point in this process -/// (otherwise, it's prone to false negatives) -async fn construct_availability_bitfield( - relay_parent: Hash, - span: &jaeger::Span, - validator_idx: ValidatorIndex, - sender: &mut impl SubsystemSender, -) -> Result { - // get the set of availability cores from the runtime - let availability_cores = { - let _span = span.child("get-availability-cores"); - get_availability_cores(relay_parent, sender).await? - }; - - // Wrap the sender in a Mutex to share it between the futures. - // - // We use a `Mutex` here to not `clone` the sender inside the future, because - // cloning the sender will always increase the capacity of the channel by one. - // (for the lifetime of the sender) - let sender = Mutex::new(sender); - - // Handle all cores concurrently - // `try_join_all` returns all results in the same order as the input futures. - let results = future::try_join_all( - availability_cores.iter() - .map(|core| get_core_availability(core, validator_idx, &sender, span)), - ).await?; - - tracing::debug!( - target: LOG_TARGET, - ?relay_parent, - "Signing Bitfield for {} cores: {:?}", - availability_cores.len(), - results, - ); - - Ok(AvailabilityBitfield(FromIterator::from_iter(results))) -} - -#[derive(Clone)] -struct MetricsInner { - bitfields_signed_total: prometheus::Counter, - run: prometheus::Histogram, -} - -/// Bitfield signing metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_bitfield_signed(&self) { - if let Some(metrics) = &self.0 { - metrics.bitfields_signed_total.inc(); - } - } - - /// Provide a timer for `prune_povs` which observes on drop. - fn time_run(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.run.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - bitfields_signed_total: prometheus::register( - prometheus::Counter::new( - "parachain_bitfields_signed_total", - "Number of bitfields signed.", - )?, - registry, - )?, - run: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_bitfield_signing_run", - "Time spent within `bitfield_signing::run`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - -impl JobTrait for BitfieldSigningJob { - type ToJob = BitfieldSigningMessage; - type Error = Error; - type RunArgs = SyncCryptoStorePtr; - type Metrics = Metrics; - - const NAME: &'static str = "BitfieldSigningJob"; - - /// Run a job for the parent block indicated - fn run( - relay_parent: Hash, - span: Arc, - keystore: Self::RunArgs, - metrics: Self::Metrics, - _receiver: mpsc::Receiver, - mut sender: JobSender, - ) -> Pin> + Send>> { - let metrics = metrics.clone(); - async move { - let span = PerLeafSpan::new(span, "bitfield-signing"); - let _span = span.child("delay"); - let wait_until = Instant::now() + JOB_DELAY; - - // now do all the work we can before we need to wait for the availability store - // if we're not a validator, we can just succeed effortlessly - let validator = match Validator::new(relay_parent, keystore.clone(), &mut sender).await { - Ok(validator) => validator, - Err(util::Error::NotAValidator) => return Ok(()), - Err(err) => return Err(Error::Util(err)), - }; - - // wait a bit before doing anything else - Delay::new_at(wait_until).await?; - - // this timer does not appear at the head of the function because we don't want to include - // JOB_DELAY each time. - let _timer = metrics.time_run(); - - drop(_span); - let span_availability = span.child("availability"); - - let bitfield = - match construct_availability_bitfield( - relay_parent, - &span_availability, - validator.index(), - sender.subsystem_sender(), - ).await - { - Err(Error::Runtime(runtime_err)) => { - // Don't take down the node on runtime API errors. - tracing::warn!(target: LOG_TARGET, err = ?runtime_err, "Encountered a runtime API error"); - return Ok(()); - } - Err(err) => return Err(err), - Ok(bitfield) => bitfield, - }; - - drop(span_availability); - let _span = span.child("signing"); - - let signed_bitfield = match validator.sign(keystore.clone(), bitfield) - .await - .map_err(|e| Error::Keystore(e))? - { - Some(b) => b, - None => { - tracing::error!( - target: LOG_TARGET, - "Key was found at construction, but while signing it could not be found.", - ); - return Ok(()); - } - }; - - metrics.on_bitfield_signed(); - - drop(_span); - let _span = span.child("gossip"); - - sender - .send_message(BitfieldDistributionMessage::DistributeBitfield( - relay_parent, - signed_bitfield, - ).into()) - .await; - - Ok(()) - } - .boxed() - } -} - -/// BitfieldSigningSubsystem manages a number of bitfield signing jobs. -pub type BitfieldSigningSubsystem = JobSubsystem; - -#[cfg(test)] -mod tests { - use super::*; - use futures::{pin_mut, executor::block_on}; - use polkadot_primitives::v1::{CandidateHash, OccupiedCore}; - use polkadot_node_subsystem::messages::AllMessages; - - fn occupied_core(para_id: u32, candidate_hash: CandidateHash) -> CoreState { - CoreState::Occupied(OccupiedCore { - group_responsible: para_id.into(), - next_up_on_available: None, - occupied_since: 100_u32, - time_out_at: 200_u32, - next_up_on_time_out: None, - availability: Default::default(), - candidate_hash, - candidate_descriptor: Default::default(), - }) - } - - #[test] - fn construct_availability_bitfield_works() { - block_on(async move { - let relay_parent = Hash::default(); - let validator_index = ValidatorIndex(1u32); - - let (mut sender, mut receiver) = polkadot_node_subsystem_test_helpers::sender_receiver(); - let future = construct_availability_bitfield( - relay_parent, - &jaeger::Span::Disabled, - validator_index, - &mut sender, - ).fuse(); - pin_mut!(future); - - let hash_a = CandidateHash(Hash::repeat_byte(1)); - let hash_b = CandidateHash(Hash::repeat_byte(2)); - - loop { - futures::select! { - m = receiver.next() => match m.unwrap() { - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(rp, RuntimeApiRequest::AvailabilityCores(tx)), - ) => { - assert_eq!(relay_parent, rp); - tx.send(Ok(vec![CoreState::Free, occupied_core(1, hash_a), occupied_core(2, hash_b)])).unwrap(); - } - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryChunkAvailability(c_hash, vidx, tx), - ) => { - assert_eq!(validator_index, vidx); - - tx.send(c_hash == hash_a).unwrap(); - }, - o => panic!("Unknown message: {:?}", o), - }, - r = future => match r { - Ok(r) => { - assert!(!r.0.get(0).unwrap()); - assert!(r.0.get(1).unwrap()); - assert!(!r.0.get(2).unwrap()); - break - }, - Err(e) => panic!("Failed: {:?}", e), - }, - } - } - }); - } -} diff --git a/node/core/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml deleted file mode 100644 index a109cb590510..000000000000 --- a/node/core/candidate-validation/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "polkadot-node-core-candidate-validation" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -async-trait = "0.1.42" -futures = "0.3.15" -tracing = "0.1.26" - -sp-maybe-compressed-blob = { package = "sp-maybe-compressed-blob", git = "https://github.com/paritytech/substrate", branch = "master" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } - -polkadot-primitives = { path = "../../../primitives" } -polkadot-parachain = { path = "../../../parachain" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } - -[target.'cfg(not(any(target_os = "android", target_os = "unknown")))'.dependencies] -polkadot-node-core-pvf = { path = "../pvf" } - -[dev-dependencies] -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures = { version = "0.3.15", features = ["thread-pool"] } -assert_matches = "1.4.0" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/candidate-validation/src/lib.rs b/node/core/candidate-validation/src/lib.rs deleted file mode 100644 index aabdf55517ed..000000000000 --- a/node/core/candidate-validation/src/lib.rs +++ /dev/null @@ -1,589 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Candidate Validation subsystem. -//! -//! This handles incoming requests from other subsystems to validate candidates -//! according to a validation function. This delegates validation to an underlying -//! pool of processes used for execution of the Wasm. - -#![deny(unused_crate_dependencies, unused_results)] -#![warn(missing_docs)] - -use polkadot_subsystem::{ - Subsystem, SubsystemContext, SpawnedSubsystem, SubsystemResult, SubsystemError, - FromOverseer, OverseerSignal, - messages::{ - AllMessages, CandidateValidationMessage, RuntimeApiMessage, - ValidationFailed, RuntimeApiRequest, - }, -}; -use polkadot_node_subsystem_util::metrics::{self, prometheus}; -use polkadot_subsystem::errors::RuntimeApiError; -use polkadot_node_primitives::{ - VALIDATION_CODE_BOMB_LIMIT, POV_BOMB_LIMIT, ValidationResult, InvalidCandidate, PoV, BlockData, -}; -use polkadot_primitives::v1::{ - ValidationCode, CandidateDescriptor, PersistedValidationData, - OccupiedCoreAssumption, Hash, CandidateCommitments, -}; -use polkadot_parachain::primitives::{ValidationParams, ValidationResult as WasmValidationResult}; -use polkadot_node_core_pvf::{Pvf, ValidationHost, ValidationError, InvalidCandidate as WasmInvalidCandidate}; - -use parity_scale_codec::Encode; - -use futures::channel::oneshot; -use futures::prelude::*; - -use std::sync::Arc; -use std::path::PathBuf; - -use async_trait::async_trait; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &'static str = "parachain::candidate-validation"; - -/// Configuration for the candidate validation subsystem -#[derive(Clone)] -pub struct Config { - /// The path where candidate validation can store compiled artifacts for PVFs. - pub artifacts_cache_path: PathBuf, - /// The path to the executable which can be used for spawning PVF compilation & validation - /// workers. - pub program_path: PathBuf, -} - -/// The candidate validation subsystem. -pub struct CandidateValidationSubsystem { - metrics: Metrics, - config: Config, -} - -impl CandidateValidationSubsystem { - /// Create a new `CandidateValidationSubsystem` with the given task spawner and isolation - /// strategy. - /// - /// Check out [`IsolationStrategy`] to get more details. - pub fn with_config(config: Config, metrics: Metrics) -> Self { - CandidateValidationSubsystem { config, metrics, } - } -} - -impl Subsystem for CandidateValidationSubsystem where - C: SubsystemContext, -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = run(ctx, self.metrics, self.config.artifacts_cache_path, self.config.program_path) - .map_err(|e| SubsystemError::with_origin("candidate-validation", e)) - .boxed(); - SpawnedSubsystem { - name: "candidate-validation-subsystem", - future, - } - } -} - -async fn run( - mut ctx: impl SubsystemContext, - metrics: Metrics, - cache_path: PathBuf, - program_path: PathBuf, -) -> SubsystemResult<()> { - let (mut validation_host, task) = polkadot_node_core_pvf::start( - polkadot_node_core_pvf::Config::new(cache_path, program_path), - ); - ctx.spawn_blocking("pvf-validation-host", task.boxed())?; - - loop { - match ctx.recv().await? { - FromOverseer::Signal(OverseerSignal::ActiveLeaves(_)) => {} - FromOverseer::Signal(OverseerSignal::BlockFinalized(..)) => {} - FromOverseer::Signal(OverseerSignal::Conclude) => return Ok(()), - FromOverseer::Communication { msg } => match msg { - CandidateValidationMessage::ValidateFromChainState( - descriptor, - pov, - response_sender, - ) => { - let _timer = metrics.time_validate_from_chain_state(); - - let res = spawn_validate_from_chain_state( - &mut ctx, - &mut validation_host, - descriptor, - pov, - &metrics, - ).await; - - match res { - Ok(x) => { - metrics.on_validation_event(&x); - let _ = response_sender.send(x); - } - Err(e) => return Err(e), - } - } - CandidateValidationMessage::ValidateFromExhaustive( - persisted_validation_data, - validation_code, - descriptor, - pov, - response_sender, - ) => { - let _timer = metrics.time_validate_from_exhaustive(); - - let res = validate_candidate_exhaustive( - &mut validation_host, - persisted_validation_data, - validation_code, - descriptor, - pov, - &metrics, - ).await; - - match res { - Ok(x) => { - metrics.on_validation_event(&x); - if let Err(_e) = response_sender.send(x) { - tracing::warn!( - target: LOG_TARGET, - "Requester of candidate validation dropped", - ) - } - }, - Err(e) => return Err(e), - } - } - } - } - } -} - -async fn runtime_api_request( - ctx: &mut impl SubsystemContext, - relay_parent: Hash, - request: RuntimeApiRequest, - receiver: oneshot::Receiver>, -) -> SubsystemResult> { - ctx.send_message( - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - request, - )) - ).await; - - receiver.await.map_err(Into::into) -} - -#[derive(Debug)] -enum AssumptionCheckOutcome { - Matches(PersistedValidationData, ValidationCode), - DoesNotMatch, - BadRequest, -} - -async fn check_assumption_validation_data( - ctx: &mut impl SubsystemContext, - descriptor: &CandidateDescriptor, - assumption: OccupiedCoreAssumption, -) -> SubsystemResult { - let validation_data = { - let (tx, rx) = oneshot::channel(); - let d = runtime_api_request( - ctx, - descriptor.relay_parent, - RuntimeApiRequest::PersistedValidationData( - descriptor.para_id, - assumption, - tx, - ), - rx, - ).await?; - - match d { - Ok(None) | Err(_) => { - return Ok(AssumptionCheckOutcome::BadRequest); - } - Ok(Some(d)) => d, - } - }; - - let persisted_validation_data_hash = validation_data.hash(); - - SubsystemResult::Ok(if descriptor.persisted_validation_data_hash == persisted_validation_data_hash { - let (code_tx, code_rx) = oneshot::channel(); - let validation_code = runtime_api_request( - ctx, - descriptor.relay_parent, - RuntimeApiRequest::ValidationCode( - descriptor.para_id, - assumption, - code_tx, - ), - code_rx, - ).await?; - - match validation_code { - Ok(None) | Err(_) => AssumptionCheckOutcome::BadRequest, - Ok(Some(v)) => AssumptionCheckOutcome::Matches(validation_data, v), - } - } else { - AssumptionCheckOutcome::DoesNotMatch - }) -} - -async fn find_assumed_validation_data( - ctx: &mut impl SubsystemContext, - descriptor: &CandidateDescriptor, -) -> SubsystemResult { - // The candidate descriptor has a `persisted_validation_data_hash` which corresponds to - // one of up to two possible values that we can derive from the state of the - // relay-parent. We can fetch these values by getting the persisted validation data - // based on the different `OccupiedCoreAssumption`s. - - const ASSUMPTIONS: &[OccupiedCoreAssumption] = &[ - OccupiedCoreAssumption::Included, - OccupiedCoreAssumption::TimedOut, - // `TimedOut` and `Free` both don't perform any speculation and therefore should be the same - // for our purposes here. In other words, if `TimedOut` matched then the `Free` must be - // matched as well. - ]; - - // Consider running these checks in parallel to reduce validation latency. - for assumption in ASSUMPTIONS { - let outcome = check_assumption_validation_data(ctx, descriptor, *assumption).await?; - - match outcome { - AssumptionCheckOutcome::Matches(_, _) => return Ok(outcome), - AssumptionCheckOutcome::BadRequest => return Ok(outcome), - AssumptionCheckOutcome::DoesNotMatch => continue, - } - } - - Ok(AssumptionCheckOutcome::DoesNotMatch) -} - -async fn spawn_validate_from_chain_state( - ctx: &mut impl SubsystemContext, - validation_host: &mut ValidationHost, - descriptor: CandidateDescriptor, - pov: Arc, - metrics: &Metrics, -) -> SubsystemResult> { - let (validation_data, validation_code) = - match find_assumed_validation_data(ctx, &descriptor).await? { - AssumptionCheckOutcome::Matches(validation_data, validation_code) => { - (validation_data, validation_code) - } - AssumptionCheckOutcome::DoesNotMatch => { - // If neither the assumption of the occupied core having the para included or the assumption - // of the occupied core timing out are valid, then the persisted_validation_data_hash in the descriptor - // is not based on the relay parent and is thus invalid. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::BadParent))); - } - AssumptionCheckOutcome::BadRequest => { - return Ok(Err(ValidationFailed("Assumption Check: Bad request".into()))); - } - }; - - let validation_result = validate_candidate_exhaustive( - validation_host, - validation_data, - validation_code, - descriptor.clone(), - pov, - metrics, - ) - .await; - - if let Ok(Ok(ValidationResult::Valid(ref outputs, _))) = validation_result { - let (tx, rx) = oneshot::channel(); - match runtime_api_request( - ctx, - descriptor.relay_parent, - RuntimeApiRequest::CheckValidationOutputs(descriptor.para_id, outputs.clone(), tx), - rx, - ) - .await? - { - Ok(true) => {} - Ok(false) => { - return Ok(Ok(ValidationResult::Invalid( - InvalidCandidate::InvalidOutputs, - ))); - } - Err(_) => { - return Ok(Err(ValidationFailed("Check Validation Outputs: Bad request".into()))); - } - } - } - - validation_result -} - -async fn validate_candidate_exhaustive( - mut validation_backend: impl ValidationBackend, - persisted_validation_data: PersistedValidationData, - validation_code: ValidationCode, - descriptor: CandidateDescriptor, - pov: Arc, - metrics: &Metrics, -) -> SubsystemResult> { - let _timer = metrics.time_validate_candidate_exhaustive(); - - if let Err(e) = perform_basic_checks( - &descriptor, - persisted_validation_data.max_pov_size, - &*pov, - &validation_code, - ) { - return Ok(Ok(ValidationResult::Invalid(e))); - } - - let raw_validation_code = match sp_maybe_compressed_blob::decompress( - &validation_code.0, - VALIDATION_CODE_BOMB_LIMIT, - ) { - Ok(code) => code, - Err(e) => { - tracing::debug!(target: LOG_TARGET, err=?e, "Invalid validation code"); - - // If the validation code is invalid, the candidate certainly is. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure))); - } - }; - - let raw_block_data = match sp_maybe_compressed_blob::decompress( - &pov.block_data.0, - POV_BOMB_LIMIT, - ) { - Ok(block_data) => BlockData(block_data.to_vec()), - Err(e) => { - tracing::debug!(target: LOG_TARGET, err=?e, "Invalid PoV code"); - - // If the PoV is invalid, the candidate certainly is. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure))); - } - }; - - let params = ValidationParams { - parent_head: persisted_validation_data.parent_head.clone(), - block_data: raw_block_data, - relay_parent_number: persisted_validation_data.relay_parent_number, - relay_parent_storage_root: persisted_validation_data.relay_parent_storage_root, - }; - - let result = - validation_backend.validate_candidate( - raw_validation_code.to_vec(), - params - ) - .await; - - if let Err(ref e) = result { - tracing::debug!( - target: LOG_TARGET, - error = ?e, - "Failed to validate candidate", - ); - } - - let result = match result { - Err(ValidationError::InternalError(e)) => Err(ValidationFailed(e)), - - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::HardTimeout)) => - Ok(ValidationResult::Invalid(InvalidCandidate::Timeout)), - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::WorkerReportedError(e))) => - Ok(ValidationResult::Invalid(InvalidCandidate::ExecutionError(e))), - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::AmbigiousWorkerDeath)) => - Ok(ValidationResult::Invalid(InvalidCandidate::ExecutionError("ambigious worker death".to_string()))), - - Ok(res) => { - if res.head_data.hash() != descriptor.para_head { - Ok(ValidationResult::Invalid(InvalidCandidate::ParaHeadHashMismatch)) - } else { - let outputs = CandidateCommitments { - head_data: res.head_data, - upward_messages: res.upward_messages, - horizontal_messages: res.horizontal_messages, - new_validation_code: res.new_validation_code, - processed_downward_messages: res.processed_downward_messages, - hrmp_watermark: res.hrmp_watermark, - }; - Ok(ValidationResult::Valid(outputs, persisted_validation_data)) - } - } - }; - - Ok(result) -} - -#[async_trait] -trait ValidationBackend { - async fn validate_candidate( - &mut self, - raw_validation_code: Vec, - params: ValidationParams - ) -> Result; -} - -#[async_trait] -impl ValidationBackend for &'_ mut ValidationHost { - async fn validate_candidate( - &mut self, - raw_validation_code: Vec, - params: ValidationParams - ) -> Result { - let (tx, rx) = oneshot::channel(); - if let Err(err) = self.execute_pvf( - Pvf::from_code(raw_validation_code), - params.encode(), - polkadot_node_core_pvf::Priority::Normal, - tx, - ).await { - return Err(ValidationError::InternalError(format!("cannot send pvf to the validation host: {:?}", err))); - } - - let validation_result = rx - .await - .map_err(|_| ValidationError::InternalError("validation was cancelled".into()))?; - - validation_result - } -} - -/// Does basic checks of a candidate. Provide the encoded PoV-block. Returns `Ok` if basic checks -/// are passed, `Err` otherwise. -fn perform_basic_checks( - candidate: &CandidateDescriptor, - max_pov_size: u32, - pov: &PoV, - validation_code: &ValidationCode, -) -> Result<(), InvalidCandidate> { - let pov_hash = pov.hash(); - let validation_code_hash = validation_code.hash(); - - let encoded_pov_size = pov.encoded_size(); - if encoded_pov_size > max_pov_size as usize { - return Err(InvalidCandidate::ParamsTooLarge(encoded_pov_size as u64)); - } - - if pov_hash != candidate.pov_hash { - return Err(InvalidCandidate::PoVHashMismatch); - } - - if validation_code_hash != candidate.validation_code_hash { - return Err(InvalidCandidate::CodeHashMismatch); - } - - if let Err(()) = candidate.check_collator_signature() { - return Err(InvalidCandidate::BadSignature); - } - - Ok(()) -} - -#[derive(Clone)] -struct MetricsInner { - validation_requests: prometheus::CounterVec, - validate_from_chain_state: prometheus::Histogram, - validate_from_exhaustive: prometheus::Histogram, - validate_candidate_exhaustive: prometheus::Histogram, -} - -/// Candidate validation metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_validation_event(&self, event: &Result) { - if let Some(metrics) = &self.0 { - match event { - Ok(ValidationResult::Valid(_, _)) => { - metrics.validation_requests.with_label_values(&["valid"]).inc(); - }, - Ok(ValidationResult::Invalid(_)) => { - metrics.validation_requests.with_label_values(&["invalid"]).inc(); - }, - Err(_) => { - metrics.validation_requests.with_label_values(&["validation failure"]).inc(); - }, - } - } - } - - /// Provide a timer for `validate_from_chain_state` which observes on drop. - fn time_validate_from_chain_state(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.validate_from_chain_state.start_timer()) - } - - /// Provide a timer for `validate_from_exhaustive` which observes on drop. - fn time_validate_from_exhaustive(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.validate_from_exhaustive.start_timer()) - } - - /// Provide a timer for `validate_candidate_exhaustive` which observes on drop. - fn time_validate_candidate_exhaustive(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.validate_candidate_exhaustive.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - validation_requests: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_validation_requests_total", - "Number of validation requests served.", - ), - &["validity"], - )?, - registry, - )?, - validate_from_chain_state: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_validation_validate_from_chain_state", - "Time spent within `candidate_validation::validate_from_chain_state`", - ) - )?, - registry, - )?, - validate_from_exhaustive: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_validation_validate_from_exhaustive", - "Time spent within `candidate_validation::validate_from_exhaustive`", - ) - )?, - registry, - )?, - validate_candidate_exhaustive: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_candidate_validation_validate_candidate_exhaustive", - "Time spent within `candidate_validation::validate_candidate_exhaustive`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/core/candidate-validation/src/tests.rs b/node/core/candidate-validation/src/tests.rs deleted file mode 100644 index 26ccdbb7cc9e..000000000000 --- a/node/core/candidate-validation/src/tests.rs +++ /dev/null @@ -1,633 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use polkadot_node_subsystem_test_helpers as test_helpers; -use polkadot_primitives::v1::{HeadData, UpwardMessage}; -use sp_core::testing::TaskExecutor; -use futures::executor; -use assert_matches::assert_matches; -use sp_keyring::Sr25519Keyring; - -fn collator_sign(descriptor: &mut CandidateDescriptor, collator: Sr25519Keyring) { - descriptor.collator = collator.public().into(); - let payload = polkadot_primitives::v1::collator_signature_payload( - &descriptor.relay_parent, - &descriptor.para_id, - &descriptor.persisted_validation_data_hash, - &descriptor.pov_hash, - &descriptor.validation_code_hash, - ); - - descriptor.signature = collator.sign(&payload[..]).into(); - assert!(descriptor.check_collator_signature().is_ok()); -} - -#[test] -fn correctly_checks_included_assumption() { - let validation_data: PersistedValidationData = Default::default(); - let validation_code: ValidationCode = vec![1, 2, 3].into(); - - let persisted_validation_data_hash = validation_data.hash(); - let relay_parent = [2; 32].into(); - let para_id = 5.into(); - - let mut candidate = CandidateDescriptor::default(); - candidate.relay_parent = relay_parent; - candidate.persisted_validation_data_hash = persisted_validation_data_hash; - candidate.para_id = para_id; - - let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); - - let (check_fut, check_result) = check_assumption_validation_data( - &mut ctx, - &candidate, - OccupiedCoreAssumption::Included, - ).remote_handle(); - - let test_fut = async move { - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::PersistedValidationData( - p, - OccupiedCoreAssumption::Included, - tx - ), - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_data.clone()))); - } - ); - - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::ValidationCode(p, OccupiedCoreAssumption::Included, tx) - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_code.clone()))); - } - ); - - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => { - assert_eq!(o, validation_data); - assert_eq!(v, validation_code); - }); - }; - - let test_fut = future::join(test_fut, check_fut); - executor::block_on(test_fut); -} - -#[test] -fn correctly_checks_timed_out_assumption() { - let validation_data: PersistedValidationData = Default::default(); - let validation_code: ValidationCode = vec![1, 2, 3].into(); - - let persisted_validation_data_hash = validation_data.hash(); - let relay_parent = [2; 32].into(); - let para_id = 5.into(); - - let mut candidate = CandidateDescriptor::default(); - candidate.relay_parent = relay_parent; - candidate.persisted_validation_data_hash = persisted_validation_data_hash; - candidate.para_id = para_id; - - let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); - - let (check_fut, check_result) = check_assumption_validation_data( - &mut ctx, - &candidate, - OccupiedCoreAssumption::TimedOut, - ).remote_handle(); - - let test_fut = async move { - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::PersistedValidationData( - p, - OccupiedCoreAssumption::TimedOut, - tx - ), - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_data.clone()))); - } - ); - - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::ValidationCode(p, OccupiedCoreAssumption::TimedOut, tx) - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_code.clone()))); - } - ); - - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => { - assert_eq!(o, validation_data); - assert_eq!(v, validation_code); - }); - }; - - let test_fut = future::join(test_fut, check_fut); - executor::block_on(test_fut); -} - -#[test] -fn check_is_bad_request_if_no_validation_data() { - let validation_data: PersistedValidationData = Default::default(); - let persisted_validation_data_hash = validation_data.hash(); - let relay_parent = [2; 32].into(); - let para_id = 5.into(); - - let mut candidate = CandidateDescriptor::default(); - candidate.relay_parent = relay_parent; - candidate.persisted_validation_data_hash = persisted_validation_data_hash; - candidate.para_id = para_id; - - let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); - - let (check_fut, check_result) = check_assumption_validation_data( - &mut ctx, - &candidate, - OccupiedCoreAssumption::Included, - ).remote_handle(); - - let test_fut = async move { - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::PersistedValidationData( - p, - OccupiedCoreAssumption::Included, - tx - ), - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(None)); - } - ); - - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest); - }; - - let test_fut = future::join(test_fut, check_fut); - executor::block_on(test_fut); -} - -#[test] -fn check_is_bad_request_if_no_validation_code() { - let validation_data: PersistedValidationData = Default::default(); - let persisted_validation_data_hash = validation_data.hash(); - let relay_parent = [2; 32].into(); - let para_id = 5.into(); - - let mut candidate = CandidateDescriptor::default(); - candidate.relay_parent = relay_parent; - candidate.persisted_validation_data_hash = persisted_validation_data_hash; - candidate.para_id = para_id; - - let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); - - let (check_fut, check_result) = check_assumption_validation_data( - &mut ctx, - &candidate, - OccupiedCoreAssumption::TimedOut, - ).remote_handle(); - - let test_fut = async move { - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::PersistedValidationData( - p, - OccupiedCoreAssumption::TimedOut, - tx - ), - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_data.clone()))); - } - ); - - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::ValidationCode(p, OccupiedCoreAssumption::TimedOut, tx) - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(None)); - } - ); - - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest); - }; - - let test_fut = future::join(test_fut, check_fut); - executor::block_on(test_fut); -} - -#[test] -fn check_does_not_match() { - let validation_data: PersistedValidationData = Default::default(); - let relay_parent = [2; 32].into(); - let para_id = 5.into(); - - let mut candidate = CandidateDescriptor::default(); - candidate.relay_parent = relay_parent; - candidate.persisted_validation_data_hash = [3; 32].into(); - candidate.para_id = para_id; - - let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); - - let (check_fut, check_result) = check_assumption_validation_data( - &mut ctx, - &candidate, - OccupiedCoreAssumption::Included, - ).remote_handle(); - - let test_fut = async move { - assert_matches!( - ctx_handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - rp, - RuntimeApiRequest::PersistedValidationData( - p, - OccupiedCoreAssumption::Included, - tx - ), - )) => { - assert_eq!(rp, relay_parent); - assert_eq!(p, para_id); - - let _ = tx.send(Ok(Some(validation_data.clone()))); - } - ); - - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::DoesNotMatch); - }; - - let test_fut = future::join(test_fut, check_fut); - executor::block_on(test_fut); -} - -struct MockValidatorBackend { - result: Result, -} - -impl MockValidatorBackend { - fn with_hardcoded_result(result: Result) -> Self { - Self { - result, - } - } -} - -#[async_trait] -impl ValidationBackend for MockValidatorBackend { - async fn validate_candidate( - &mut self, - _raw_validation_code: Vec, - _params: ValidationParams - ) -> Result { - self.result.clone() - } -} - -#[test] -fn candidate_validation_ok_is_ok() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let head_data = HeadData(vec![1, 1, 1]); - let validation_code = ValidationCode(vec![2; 16]); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.para_head = head_data.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let check = perform_basic_checks( - &descriptor, - validation_data.max_pov_size, - &pov, - &validation_code, - ); - assert!(check.is_ok()); - - let validation_result = WasmValidationResult { - head_data, - new_validation_code: Some(vec![2, 2, 2].into()), - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - processed_downward_messages: 0, - hrmp_watermark: 0, - }; - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result(Ok(validation_result)), - validation_data.clone(), - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap() - .unwrap(); - - assert_matches!(v, ValidationResult::Valid(outputs, used_validation_data) => { - assert_eq!(outputs.head_data, HeadData(vec![1, 1, 1])); - assert_eq!(outputs.upward_messages, Vec::::new()); - assert_eq!(outputs.horizontal_messages, Vec::new()); - assert_eq!(outputs.new_validation_code, Some(vec![2, 2, 2].into())); - assert_eq!(outputs.hrmp_watermark, 0); - assert_eq!(used_validation_data, validation_data); - }); -} - -#[test] -fn candidate_validation_bad_return_is_invalid() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let validation_code = ValidationCode(vec![2; 16]); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let check = perform_basic_checks( - &descriptor, - validation_data.max_pov_size, - &pov, - &validation_code, - ); - assert!(check.is_ok()); - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result( - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::AmbigiousWorkerDeath)) - ), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap() - .unwrap(); - - assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::ExecutionError(_))); -} - -#[test] -fn candidate_validation_timeout_is_internal_error() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let validation_code = ValidationCode(vec![2; 16]); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let check = perform_basic_checks( - &descriptor, - validation_data.max_pov_size, - &pov, - &validation_code, - ); - assert!(check.is_ok()); - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result( - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::HardTimeout)), - ), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap(); - - assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::Timeout))); -} - -#[test] -fn candidate_validation_code_mismatch_is_invalid() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let validation_code = ValidationCode(vec![2; 16]); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.validation_code_hash = ValidationCode(vec![1; 16]).hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let check = perform_basic_checks( - &descriptor, - validation_data.max_pov_size, - &pov, - &validation_code, - ); - assert_matches!(check, Err(InvalidCandidate::CodeHashMismatch)); - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result( - Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::HardTimeout)), - ), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap() - .unwrap(); - - assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::CodeHashMismatch)); -} - -#[test] -fn compressed_code_works() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let head_data = HeadData(vec![1, 1, 1]); - - let raw_code = vec![2u8; 16]; - let validation_code = sp_maybe_compressed_blob::compress( - &raw_code, - VALIDATION_CODE_BOMB_LIMIT, - ) - .map(ValidationCode) - .unwrap(); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.para_head = head_data.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let validation_result = WasmValidationResult { - head_data, - new_validation_code: None, - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - processed_downward_messages: 0, - hrmp_watermark: 0, - }; - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result(Ok(validation_result)), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap(); - - assert_matches!(v, Ok(ValidationResult::Valid(_, _))); -} - -#[test] -fn code_decompression_failure_is_invalid() { - let validation_data = PersistedValidationData { max_pov_size: 1024, ..Default::default() }; - let pov = PoV { block_data: BlockData(vec![1; 32]) }; - let head_data = HeadData(vec![1, 1, 1]); - - let raw_code = vec![2u8; VALIDATION_CODE_BOMB_LIMIT + 1]; - let validation_code = sp_maybe_compressed_blob::compress( - &raw_code, - VALIDATION_CODE_BOMB_LIMIT + 1, - ) - .map(ValidationCode) - .unwrap(); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.para_head = head_data.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let validation_result = WasmValidationResult { - head_data, - new_validation_code: None, - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - processed_downward_messages: 0, - hrmp_watermark: 0, - }; - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result(Ok(validation_result)), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap(); - - assert_matches!( - v, - Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure)) - ); -} - -#[test] -fn pov_decompression_failure_is_invalid() { - let validation_data = PersistedValidationData { - max_pov_size: POV_BOMB_LIMIT as u32, - ..Default::default() - }; - let head_data = HeadData(vec![1, 1, 1]); - - let raw_block_data = vec![2u8; POV_BOMB_LIMIT + 1]; - let pov = sp_maybe_compressed_blob::compress( - &raw_block_data, - POV_BOMB_LIMIT + 1, - ) - .map(|raw| PoV { block_data: BlockData(raw) }) - .unwrap(); - - let validation_code = ValidationCode(vec![2; 16]); - - let mut descriptor = CandidateDescriptor::default(); - descriptor.pov_hash = pov.hash(); - descriptor.para_head = head_data.hash(); - descriptor.validation_code_hash = validation_code.hash(); - collator_sign(&mut descriptor, Sr25519Keyring::Alice); - - let validation_result = WasmValidationResult { - head_data, - new_validation_code: None, - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - processed_downward_messages: 0, - hrmp_watermark: 0, - }; - - let v = executor::block_on(validate_candidate_exhaustive( - MockValidatorBackend::with_hardcoded_result(Ok(validation_result)), - validation_data, - validation_code, - descriptor, - Arc::new(pov), - &Default::default(), - )) - .unwrap(); - - assert_matches!( - v, - Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure)) - ); -} diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml deleted file mode 100644 index 8f9ec9f8b33f..000000000000 --- a/node/core/chain-api/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "polkadot-node-core-chain-api" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -futures = { version = "0.3.15", features = ["thread-pool"] } -maplit = "1.0.2" -parity-scale-codec = "2.0.0" -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/chain-api/src/lib.rs b/node/core/chain-api/src/lib.rs deleted file mode 100644 index b7c152686afa..000000000000 --- a/node/core/chain-api/src/lib.rs +++ /dev/null @@ -1,601 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the Chain API Subsystem -//! -//! Provides access to the chain data. Every request may return an error. -//! At the moment, the implementation requires `Client` to implement `HeaderBackend`, -//! we may add more bounds in the future if we will need e.g. block bodies. -//! -//! Supported requests: -//! * Block hash to number -//! * Block hash to header -//! * Block weight (cumulative) -//! * Finalized block number to hash -//! * Last finalized block number -//! * Ancestors - -#![deny(unused_crate_dependencies, unused_results)] -#![warn(missing_docs)] - -use std::sync::Arc; - -use futures::prelude::*; -use sc_client_api::AuxStore; -use sp_blockchain::HeaderBackend; - -use polkadot_node_subsystem_util::metrics::{self, prometheus}; -use polkadot_primitives::v1::{Block, BlockId}; -use polkadot_subsystem::{ - messages::ChainApiMessage, FromOverseer, OverseerSignal, SpawnedSubsystem, Subsystem, - SubsystemContext, SubsystemError, SubsystemResult, -}; - -const LOG_TARGET: &str = "parachain::chain-api"; - -/// The Chain API Subsystem implementation. -pub struct ChainApiSubsystem { - client: Arc, - metrics: Metrics, -} - -impl ChainApiSubsystem { - /// Create a new Chain API subsystem with the given client. - pub fn new(client: Arc, metrics: Metrics) -> Self { - ChainApiSubsystem { - client, - metrics, - } - } -} - -impl Subsystem for ChainApiSubsystem -where - Client: HeaderBackend + AuxStore + 'static, - Context: SubsystemContext, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = run(ctx, self) - .map_err(|e| SubsystemError::with_origin("chain-api", e)) - .boxed(); - SpawnedSubsystem { - future, - name: "chain-api-subsystem", - } - } -} - -async fn run( - mut ctx: impl SubsystemContext, - subsystem: ChainApiSubsystem, -) -> SubsystemResult<()> -where - Client: HeaderBackend + AuxStore, -{ - loop { - match ctx.recv().await? { - FromOverseer::Signal(OverseerSignal::Conclude) => return Ok(()), - FromOverseer::Signal(OverseerSignal::ActiveLeaves(_)) => {}, - FromOverseer::Signal(OverseerSignal::BlockFinalized(..)) => {}, - FromOverseer::Communication { msg } => match msg { - ChainApiMessage::BlockNumber(hash, response_channel) => { - let _timer = subsystem.metrics.time_block_number(); - let result = subsystem.client.number(hash).map_err(|e| e.to_string().into()); - subsystem.metrics.on_request(result.is_ok()); - let _ = response_channel.send(result); - }, - ChainApiMessage::BlockHeader(hash, response_channel) => { - let _timer = subsystem.metrics.time_block_header(); - let result = subsystem.client - .header(BlockId::Hash(hash)) - .map_err(|e| e.to_string().into()); - subsystem.metrics.on_request(result.is_ok()); - let _ = response_channel.send(result); - }, - ChainApiMessage::BlockWeight(hash, response_channel) => { - let _timer = subsystem.metrics.time_block_weight(); - let result = sc_consensus_babe::block_weight(&*subsystem.client, hash) - .map_err(|e| e.to_string().into()); - subsystem.metrics.on_request(result.is_ok()); - let _ = response_channel.send(result); - } - ChainApiMessage::FinalizedBlockHash(number, response_channel) => { - let _timer = subsystem.metrics.time_finalized_block_hash(); - // Note: we don't verify it's finalized - let result = subsystem.client.hash(number).map_err(|e| e.to_string().into()); - subsystem.metrics.on_request(result.is_ok()); - let _ = response_channel.send(result); - }, - ChainApiMessage::FinalizedBlockNumber(response_channel) => { - let _timer = subsystem.metrics.time_finalized_block_number(); - let result = subsystem.client.info().finalized_number; - // always succeeds - subsystem.metrics.on_request(true); - let _ = response_channel.send(Ok(result)); - }, - ChainApiMessage::Ancestors { hash, k, response_channel } => { - let _timer = subsystem.metrics.time_ancestors(); - tracing::span!(tracing::Level::TRACE, "ChainApiMessage::Ancestors", subsystem=LOG_TARGET, hash=%hash, k=k); - - let mut hash = hash; - - let next_parent = core::iter::from_fn(|| { - let maybe_header = subsystem.client.header(BlockId::Hash(hash)); - match maybe_header { - // propagate the error - Err(e) => { - let e = e.to_string().into(); - Some(Err(e)) - }, - // fewer than `k` ancestors are available - Ok(None) => None, - Ok(Some(header)) => { - // stop at the genesis header. - if header.number == 1 { - None - } else { - hash = header.parent_hash; - Some(Ok(hash)) - } - } - } - }); - - let result = next_parent.take(k).collect::, _>>(); - subsystem.metrics.on_request(result.is_ok()); - let _ = response_channel.send(result); - }, - } - } - } -} - -#[derive(Clone)] -struct MetricsInner { - chain_api_requests: prometheus::CounterVec, - block_number: prometheus::Histogram, - block_header: prometheus::Histogram, - block_weight: prometheus::Histogram, - finalized_block_hash: prometheus::Histogram, - finalized_block_number: prometheus::Histogram, - ancestors: prometheus::Histogram, -} - -/// Chain API metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_request(&self, succeeded: bool) { - if let Some(metrics) = &self.0 { - if succeeded { - metrics.chain_api_requests.with_label_values(&["succeeded"]).inc(); - } else { - metrics.chain_api_requests.with_label_values(&["failed"]).inc(); - } - } - } - - /// Provide a timer for `block_number` which observes on drop. - fn time_block_number(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.block_number.start_timer()) - } - - /// Provide a timer for `block_header` which observes on drop. - fn time_block_header(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.block_header.start_timer()) - } - - /// Provide a timer for `block_weight` which observes on drop. - fn time_block_weight(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.block_weight.start_timer()) - } - - /// Provide a timer for `finalized_block_hash` which observes on drop. - fn time_finalized_block_hash(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.finalized_block_hash.start_timer()) - } - - /// Provide a timer for `finalized_block_number` which observes on drop. - fn time_finalized_block_number(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.finalized_block_number.start_timer()) - } - - /// Provide a timer for `ancestors` which observes on drop. - fn time_ancestors(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.ancestors.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - chain_api_requests: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_chain_api_requests_total", - "Number of Chain API requests served.", - ), - &["success"], - )?, - registry, - )?, - block_number: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_block_number", - "Time spent within `chain_api::block_number`", - ) - )?, - registry, - )?, - block_header: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_block_headers", - "Time spent within `chain_api::block_headers`", - ) - )?, - registry, - )?, - block_weight: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_block_weight", - "Time spent within `chain_api::block_weight`", - ) - )?, - registry, - )?, - finalized_block_hash: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_finalized_block_hash", - "Time spent within `chain_api::finalized_block_hash`", - ) - )?, - registry, - )?, - finalized_block_number: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_finalized_block_number", - "Time spent within `chain_api::finalized_block_number`", - ) - )?, - registry, - )?, - ancestors: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_chain_api_ancestors", - "Time spent within `chain_api::ancestors`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use std::collections::BTreeMap; - use futures::{future::BoxFuture, channel::oneshot}; - use parity_scale_codec::Encode; - - use polkadot_primitives::v1::{Hash, BlockNumber, BlockId, Header}; - use polkadot_node_primitives::BlockWeight; - use polkadot_node_subsystem_test_helpers::{make_subsystem_context, TestSubsystemContextHandle}; - use sp_blockchain::Info as BlockInfo; - use sp_core::testing::TaskExecutor; - - #[derive(Clone)] - struct TestClient { - blocks: BTreeMap, - block_weights: BTreeMap, - finalized_blocks: BTreeMap, - headers: BTreeMap, - } - - const ONE: Hash = Hash::repeat_byte(0x01); - const TWO: Hash = Hash::repeat_byte(0x02); - const THREE: Hash = Hash::repeat_byte(0x03); - const FOUR: Hash = Hash::repeat_byte(0x04); - const ERROR_PATH: Hash = Hash::repeat_byte(0xFF); - - fn default_header() -> Header { - Header { - parent_hash: Hash::zero(), - number: 100500, - state_root: Hash::zero(), - extrinsics_root: Hash::zero(), - digest: Default::default(), - } - } - - impl Default for TestClient { - fn default() -> Self { - Self { - blocks: maplit::btreemap! { - ONE => 1, - TWO => 2, - THREE => 3, - FOUR => 4, - }, - block_weights: maplit::btreemap! { - ONE => 0, - TWO => 1, - THREE => 1, - FOUR => 2, - }, - finalized_blocks: maplit::btreemap! { - 1 => ONE, - 3 => THREE, - }, - headers: maplit::btreemap! { - TWO => Header { - parent_hash: ONE, - number: 2, - ..default_header() - }, - THREE => Header { - parent_hash: TWO, - number: 3, - ..default_header() - }, - FOUR => Header { - parent_hash: THREE, - number: 4, - ..default_header() - }, - ERROR_PATH => Header { - ..default_header() - } - }, - } - } - } - - fn last_key_value(map: &BTreeMap) -> (K, V) { - assert!(!map.is_empty()); - map.iter() - .last() - .map(|(k, v)| (k.clone(), v.clone())) - .unwrap() - } - - impl HeaderBackend for TestClient { - fn info(&self) -> BlockInfo { - let genesis_hash = self.blocks.iter().next().map(|(h, _)| *h).unwrap(); - let (best_hash, best_number) = last_key_value(&self.blocks); - let (finalized_number, finalized_hash) = last_key_value(&self.finalized_blocks); - - BlockInfo { - best_hash, - best_number, - genesis_hash, - finalized_hash, - finalized_number, - number_leaves: 0, - finalized_state: None, - } - } - fn number(&self, hash: Hash) -> sp_blockchain::Result> { - Ok(self.blocks.get(&hash).copied()) - } - fn hash(&self, number: BlockNumber) -> sp_blockchain::Result> { - Ok(self.finalized_blocks.get(&number).copied()) - } - fn header(&self, id: BlockId) -> sp_blockchain::Result> { - match id { - // for error path testing - BlockId::Hash(hash) if hash.is_zero() => { - Err(sp_blockchain::Error::Backend("Zero hashes are illegal!".into())) - } - BlockId::Hash(hash) => { - Ok(self.headers.get(&hash).cloned()) - } - _ => unreachable!(), - } - } - fn status(&self, _id: BlockId) -> sp_blockchain::Result { - unimplemented!() - } - } - - fn test_harness( - test: impl FnOnce(Arc, TestSubsystemContextHandle) - -> BoxFuture<'static, ()>, - ) { - let (ctx, ctx_handle) = make_subsystem_context(TaskExecutor::new()); - let client = Arc::new(TestClient::default()); - - let subsystem = ChainApiSubsystem::new(client.clone(), Metrics(None)); - let chain_api_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = test(client, ctx_handle); - - futures::executor::block_on(future::join(chain_api_task, test_task)); - } - - impl AuxStore for TestClient { - fn insert_aux< - 'a, - 'b: 'a, - 'c: 'a, - I: IntoIterator, - D: IntoIterator, - >( - &self, - _insert: I, - _delete: D, - ) -> sp_blockchain::Result<()> { - unimplemented!() - } - - fn get_aux(&self, key: &[u8]) -> sp_blockchain::Result>> { - Ok(self - .block_weights - .iter() - .find(|(hash, _)| sc_consensus_babe::aux_schema::block_weight_key(hash) == key) - .map(|(_, weight)| weight.encode())) - } - } - - #[test] - fn request_block_number() { - test_harness(|client, mut sender| { - async move { - let zero = Hash::zero(); - let test_cases = [ - (TWO, client.number(TWO).unwrap()), - (zero, client.number(zero).unwrap()), // not here - ]; - for (hash, expected) in &test_cases { - let (tx, rx) = oneshot::channel(); - - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::BlockNumber(*hash, tx), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), *expected); - } - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } - - #[test] - fn request_block_header() { - test_harness(|client, mut sender| { - async move { - const NOT_HERE: Hash = Hash::repeat_byte(0x5); - let test_cases = [ - (TWO, client.header(BlockId::Hash(TWO)).unwrap()), - (NOT_HERE, client.header(BlockId::Hash(NOT_HERE)).unwrap()), - ]; - for (hash, expected) in &test_cases { - let (tx, rx) = oneshot::channel(); - - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::BlockHeader(*hash, tx), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), *expected); - } - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } - - #[test] - fn request_block_weight() { - test_harness(|client, mut sender| { - async move { - const NOT_HERE: Hash = Hash::repeat_byte(0x5); - let test_cases = [ - (TWO, sc_consensus_babe::block_weight(&*client, TWO).unwrap()), - (FOUR, sc_consensus_babe::block_weight(&*client, FOUR).unwrap()), - (NOT_HERE, sc_consensus_babe::block_weight(&*client, NOT_HERE).unwrap()), - ]; - for (hash, expected) in &test_cases { - let (tx, rx) = oneshot::channel(); - - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::BlockWeight(*hash, tx), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), *expected); - } - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } - - #[test] - fn request_finalized_hash() { - test_harness(|client, mut sender| { - async move { - let test_cases = [ - (1, client.hash(1).unwrap()), // not here - (2, client.hash(2).unwrap()), - ]; - for (number, expected) in &test_cases { - let (tx, rx) = oneshot::channel(); - - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::FinalizedBlockHash(*number, tx), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), *expected); - } - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } - - #[test] - fn request_last_finalized_number() { - test_harness(|client, mut sender| { - async move { - let (tx, rx) = oneshot::channel(); - - let expected = client.info().finalized_number; - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::FinalizedBlockNumber(tx), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), expected); - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } - - #[test] - fn request_ancestors() { - test_harness(|_client, mut sender| { - async move { - let (tx, rx) = oneshot::channel(); - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::Ancestors { hash: THREE, k: 4, response_channel: tx }, - }).await; - assert_eq!(rx.await.unwrap().unwrap(), vec![TWO, ONE]); - - let (tx, rx) = oneshot::channel(); - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::Ancestors { hash: TWO, k: 1, response_channel: tx }, - }).await; - assert_eq!(rx.await.unwrap().unwrap(), vec![ONE]); - - let (tx, rx) = oneshot::channel(); - sender.send(FromOverseer::Communication { - msg: ChainApiMessage::Ancestors { hash: ERROR_PATH, k: 2, response_channel: tx }, - }).await; - assert!(rx.await.unwrap().is_err()); - - sender.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }.boxed() - }) - } -} diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml deleted file mode 100644 index ee498427ea0d..000000000000 --- a/node/core/chain-selection/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "polkadot-node-core-chain-selection" -description = "Chain Selection Subsystem" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -kvdb = "0.9.0" -thiserror = "1.0.23" -parity-scale-codec = "2" - -[dev-dependencies] -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -parking_lot = "0.11" -assert_matches = "1" diff --git a/node/core/chain-selection/src/backend.rs b/node/core/chain-selection/src/backend.rs deleted file mode 100644 index 160825b757e7..000000000000 --- a/node/core/chain-selection/src/backend.rs +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! An abstraction over storage used by the chain selection subsystem. -//! -//! This provides both a [`Backend`] trait and an [`OverlayedBackend`] -//! struct which allows in-memory changes to be applied on top of a -//! [`Backend`], maintaining consistency between queries and temporary writes, -//! before any commit to the underlying storage is made. - -use polkadot_primitives::v1::{BlockNumber, Hash}; - -use std::collections::HashMap; - -use crate::{Error, LeafEntrySet, BlockEntry, Timestamp}; - -pub(super) enum BackendWriteOp { - WriteBlockEntry(BlockEntry), - WriteBlocksByNumber(BlockNumber, Vec), - WriteViableLeaves(LeafEntrySet), - WriteStagnantAt(Timestamp, Vec), - DeleteBlocksByNumber(BlockNumber), - DeleteBlockEntry(Hash), - DeleteStagnantAt(Timestamp), -} - -/// An abstraction over backend storage for the logic of this subsystem. -pub(super) trait Backend { - /// Load a block entry from the DB. - fn load_block_entry(&self, hash: &Hash) -> Result, Error>; - /// Load the active-leaves set. - fn load_leaves(&self) -> Result; - /// Load the stagnant list at the given timestamp. - fn load_stagnant_at(&self, timestamp: Timestamp) -> Result, Error>; - /// Load all stagnant lists up to and including the given unix timestamp - /// in ascending order. - fn load_stagnant_at_up_to(&self, up_to: Timestamp) - -> Result)>, Error>; - /// Load the earliest kept block number. - fn load_first_block_number(&self) -> Result, Error>; - /// Load blocks by number. - fn load_blocks_by_number(&self, number: BlockNumber) -> Result, Error>; - - /// Atomically write the list of operations, with later operations taking precedence over prior. - fn write(&mut self, ops: I) -> Result<(), Error> - where I: IntoIterator; -} - -/// An in-memory overlay over the backend. -/// -/// This maintains read-only access to the underlying backend, but can be -/// converted into a set of write operations which will, when written to -/// the underlying backend, give the same view as the state of the overlay. -pub(super) struct OverlayedBackend<'a, B: 'a> { - inner: &'a B, - - // `None` means 'deleted', missing means query inner. - block_entries: HashMap>, - // `None` means 'deleted', missing means query inner. - blocks_by_number: HashMap>>, - // 'None' means 'deleted', missing means query inner. - stagnant_at: HashMap>>, - // 'None' means query inner. - leaves: Option, -} - -impl<'a, B: 'a + Backend> OverlayedBackend<'a, B> { - pub(super) fn new(backend: &'a B) -> Self { - OverlayedBackend { - inner: backend, - block_entries: HashMap::new(), - blocks_by_number: HashMap::new(), - stagnant_at: HashMap::new(), - leaves: None, - } - } - - pub(super) fn load_block_entry(&self, hash: &Hash) -> Result, Error> { - if let Some(val) = self.block_entries.get(&hash) { - return Ok(val.clone()) - } - - self.inner.load_block_entry(hash) - } - - pub(super) fn load_blocks_by_number(&self, number: BlockNumber) -> Result, Error> { - if let Some(val) = self.blocks_by_number.get(&number) { - return Ok(val.as_ref().map_or(Vec::new(), Clone::clone)); - } - - self.inner.load_blocks_by_number(number) - } - - pub(super) fn load_leaves(&self) -> Result { - if let Some(ref set) = self.leaves { - return Ok(set.clone()) - } - - self.inner.load_leaves() - } - - pub(super) fn load_stagnant_at(&self, timestamp: Timestamp) -> Result, Error> { - if let Some(val) = self.stagnant_at.get(×tamp) { - return Ok(val.as_ref().map_or(Vec::new(), Clone::clone)); - } - - self.inner.load_stagnant_at(timestamp) - } - - pub(super) fn write_block_entry(&mut self, entry: BlockEntry) { - self.block_entries.insert(entry.block_hash, Some(entry)); - } - - pub(super) fn delete_block_entry(&mut self, hash: &Hash) { - self.block_entries.insert(*hash, None); - } - - pub(super) fn write_blocks_by_number(&mut self, number: BlockNumber, blocks: Vec) { - if blocks.is_empty() { - self.blocks_by_number.insert(number, None); - } else { - self.blocks_by_number.insert(number, Some(blocks)); - } - } - - pub(super) fn delete_blocks_by_number(&mut self, number: BlockNumber) { - self.blocks_by_number.insert(number, None); - } - - pub(super) fn write_leaves(&mut self, leaves: LeafEntrySet) { - self.leaves = Some(leaves); - } - - pub(super) fn write_stagnant_at(&mut self, timestamp: Timestamp, hashes: Vec) { - self.stagnant_at.insert(timestamp, Some(hashes)); - } - - pub(super) fn delete_stagnant_at(&mut self, timestamp: Timestamp) { - self.stagnant_at.insert(timestamp, None); - } - - /// Transform this backend into a set of write-ops to be written to the - /// inner backend. - pub(super) fn into_write_ops(self) -> impl Iterator { - let block_entry_ops = self.block_entries.into_iter().map(|(h, v)| match v { - Some(v) => BackendWriteOp::WriteBlockEntry(v), - None => BackendWriteOp::DeleteBlockEntry(h), - }); - - let blocks_by_number_ops = self.blocks_by_number.into_iter().map(|(n, v)| match v { - Some(v) => BackendWriteOp::WriteBlocksByNumber(n, v), - None => BackendWriteOp::DeleteBlocksByNumber(n), - }); - - let leaf_ops = self.leaves.into_iter().map(BackendWriteOp::WriteViableLeaves); - - let stagnant_at_ops = self.stagnant_at.into_iter().map(|(n, v)| match v { - Some(v) => BackendWriteOp::WriteStagnantAt(n, v), - None => BackendWriteOp::DeleteStagnantAt(n), - }); - - block_entry_ops - .chain(blocks_by_number_ops) - .chain(leaf_ops) - .chain(stagnant_at_ops) - } -} - -/// Attempt to find the given ancestor in the chain with given head. -/// -/// If the ancestor is the most recently finalized block, and the `head` is -/// a known unfinalized block, this will return `true`. -/// -/// If the ancestor is an unfinalized block and `head` is known, this will -/// return true if `ancestor` is in `head`'s chain. -/// -/// If the ancestor is an older finalized block, this will return `false`. -fn contains_ancestor( - backend: &impl Backend, - head: Hash, - ancestor: Hash, -) -> Result { - let mut current_hash = head; - loop { - if current_hash == ancestor { return Ok(true) } - match backend.load_block_entry(¤t_hash)? { - Some(e) => { current_hash = e.parent_hash } - None => break - } - } - - Ok(false) -} - -/// This returns the best unfinalized leaf containing the required block. -/// -/// If the required block is finalized but not the most recent finalized block, -/// this will return `None`. -/// -/// If the required block is unfinalized but not an ancestor of any viable leaf, -/// this will return `None`. -// -// Note: this is O(N^2) in the depth of `required` and the number of leaves. -// We expect the number of unfinalized blocks to be small, as in, to not exceed -// single digits in practice, and exceedingly unlikely to surpass 1000. -// -// However, if we need to, we could implement some type of skip-list for -// fast ancestry checks. -pub(super) fn find_best_leaf_containing( - backend: &impl Backend, - required: Hash, -) -> Result, Error> { - let leaves = backend.load_leaves()?; - for leaf in leaves.into_hashes_descending() { - if contains_ancestor(backend, leaf, required)? { - return Ok(Some(leaf)) - } - } - - // If there are no viable leaves containing the ancestor - Ok(None) -} diff --git a/node/core/chain-selection/src/lib.rs b/node/core/chain-selection/src/lib.rs deleted file mode 100644 index dddfc2590d33..000000000000 --- a/node/core/chain-selection/src/lib.rs +++ /dev/null @@ -1,574 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the Chain Selection Subsystem. - -use polkadot_primitives::v1::{BlockNumber, Hash, Header, ConsensusLog}; -use polkadot_node_primitives::BlockWeight; -use polkadot_subsystem::{ - Subsystem, SubsystemContext, SubsystemError, SpawnedSubsystem, - OverseerSignal, FromOverseer, - messages::{ChainSelectionMessage, ChainApiMessage}, - errors::ChainApiError, -}; - -use parity_scale_codec::Error as CodecError; -use futures::channel::oneshot; -use futures::prelude::*; - -use std::time::{UNIX_EPOCH, SystemTime}; - -use crate::backend::{Backend, OverlayedBackend, BackendWriteOp}; - -mod backend; -mod tree; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::chain-selection"; -/// Timestamp based on the 1 Jan 1970 UNIX base, which is persistent across node restarts and OS reboots. -type Timestamp = u64; - -#[derive(Debug, Clone)] -enum Approval { - // Approved - Approved, - // Unapproved but not stagnant - Unapproved, - // Unapproved and stagnant. - Stagnant, -} - -impl Approval { - fn is_stagnant(&self) -> bool { - matches!(*self, Approval::Stagnant) - } -} - -#[derive(Debug, Clone)] -struct ViabilityCriteria { - // Whether this block has been explicitly reverted by one of its descendants. - explicitly_reverted: bool, - // The approval state of this block specifically. - approval: Approval, - // The earliest unviable ancestor - the hash of the earliest unfinalized - // block in the ancestry which is explicitly reverted or stagnant. - earliest_unviable_ancestor: Option, -} - -impl ViabilityCriteria { - fn is_viable(&self) -> bool { - self.is_parent_viable() && self.is_explicitly_viable() - } - - // Whether the current block is explicitly viable. - // That is, whether the current block is neither reverted nor stagnant. - fn is_explicitly_viable(&self) -> bool { - !self.explicitly_reverted && !self.approval.is_stagnant() - } - - // Whether the parent is viable. This assumes that the parent - // descends from the finalized chain. - fn is_parent_viable(&self) -> bool { - self.earliest_unviable_ancestor.is_none() - } -} - -// Light entries describing leaves of the chain. -// -// These are ordered first by weight and then by block number. -#[derive(Debug, Clone, PartialEq)] -struct LeafEntry { - weight: BlockWeight, - block_number: BlockNumber, - block_hash: Hash, -} - -impl PartialOrd for LeafEntry { - fn partial_cmp(&self, other: &Self) -> Option { - let ord = self.weight.cmp(&other.weight) - .then(self.block_number.cmp(&other.block_number)); - - if !matches!(ord, std::cmp::Ordering::Equal) { Some(ord) } else { None } - } -} - -#[derive(Debug, Default, Clone)] -struct LeafEntrySet { - inner: Vec -} - -impl LeafEntrySet { - fn remove(&mut self, hash: &Hash) -> bool { - match self.inner.iter().position(|e| &e.block_hash == hash) { - None => false, - Some(i) => { - self.inner.remove(i); - true - } - } - } - - fn insert(&mut self, new: LeafEntry) { - let mut pos = None; - for (i, e) in self.inner.iter().enumerate() { - if e == &new { return } - if e < &new { - pos = Some(i); - break - } - } - - match pos { - None => self.inner.push(new), - Some(i) => self.inner.insert(i, new), - } - } - - fn into_hashes_descending(self) -> impl Iterator { - self.inner.into_iter().map(|e| e.block_hash) - } -} - -#[derive(Debug, Clone)] -struct BlockEntry { - block_hash: Hash, - block_number: BlockNumber, - parent_hash: Hash, - children: Vec, - viability: ViabilityCriteria, - weight: BlockWeight, -} - -impl BlockEntry { - fn leaf_entry(&self) -> LeafEntry { - LeafEntry { - block_hash: self.block_hash, - block_number: self.block_number, - weight: self.weight, - } - } - - fn non_viable_ancestor_for_child(&self) -> Option { - if self.viability.is_viable() { - None - } else { - self.viability.earliest_unviable_ancestor.or(Some(self.block_hash)) - } - } -} - -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - ChainApi(#[from] ChainApiError), - - #[error(transparent)] - Io(#[from] std::io::Error), - - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - - #[error(transparent)] - Subsystem(#[from] SubsystemError), - - #[error(transparent)] - Codec(#[from] CodecError), -} - -impl Error { - fn trace(&self) { - match self { - // don't spam the log with spurious errors - Self::Oneshot(_) => tracing::debug!(target: LOG_TARGET, err = ?self), - // it's worth reporting otherwise - _ => tracing::warn!(target: LOG_TARGET, err = ?self), - } - } -} - -fn timestamp_now() -> Timestamp { - // `SystemTime` is notoriously non-monotonic, so our timers might not work - // exactly as expected. Regardless, stagnation is detected on the order of minutes, - // and slippage of a few seconds in either direction won't cause any major harm. - // - // The exact time that a block becomes stagnant in the local node is always expected - // to differ from other nodes due to network asynchrony and delays in block propagation. - // Non-monotonicity exarcerbates that somewhat, but not meaningfully. - - match SystemTime::now().duration_since(UNIX_EPOCH) { - Ok(d) => d.as_secs(), - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Current time is before unix epoch. Validation will not work correctly." - ); - - 0 - } - } -} - -fn stagnant_timeout_from_now() -> Timestamp { - // If a block isn't approved in 120 seconds, nodes will abandon it - // and begin building on another chain. - const STAGNANT_TIMEOUT: Timestamp = 120; - - timestamp_now() + STAGNANT_TIMEOUT -} - -// TODO https://github.com/paritytech/polkadot/issues/3293: -// -// This is used just so we can have a public function that calls -// `run` and eliminates all the unused errors. -// -// Should be removed when the real implementation is done. -struct VoidBackend; - -impl Backend for VoidBackend { - fn load_block_entry(&self, _: &Hash) -> Result, Error> { - Ok(None) - } - fn load_leaves(&self) -> Result { - Ok(LeafEntrySet::default()) - } - fn load_stagnant_at(&self, _: Timestamp) -> Result, Error> { - Ok(Vec::new()) - } - fn load_stagnant_at_up_to(&self, _: Timestamp) - -> Result)>, Error> - { - Ok(Vec::new()) - } - fn load_first_block_number(&self) -> Result, Error> { - Ok(None) - } - fn load_blocks_by_number(&self, _: BlockNumber) -> Result, Error> { - Ok(Vec::new()) - } - - fn write(&mut self, _: I) -> Result<(), Error> - where I: IntoIterator - { - Ok(()) - } -} - -/// The chain selection subsystem. -pub struct ChainSelectionSubsystem; - -impl Subsystem for ChainSelectionSubsystem - where Context: SubsystemContext -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let backend = VoidBackend; - SpawnedSubsystem { - future: run(ctx, backend).map(|()| Ok(())).boxed(), - name: "chain-selection-subsystem", - } - } -} - -async fn run(mut ctx: Context, mut backend: B) - where - Context: SubsystemContext, - B: Backend, -{ - loop { - let res = run_iteration(&mut ctx, &mut backend).await; - match res { - Err(e) => { - e.trace(); - - if let Error::Subsystem(SubsystemError::Context(_)) = e { - break; - } - } - Ok(()) => { - tracing::info!(target: LOG_TARGET, "received `Conclude` signal, exiting"); - break; - } - } - } -} - -// Run the subsystem until an error is encountered or a `conclude` signal is received. -// Most errors are non-fatal and should lead to another call to this function. -// -// A return value of `Ok` indicates that an exit should be made, while non-fatal errors -// lead to another call to this function. -async fn run_iteration(ctx: &mut Context, backend: &mut B) - -> Result<(), Error> - where - Context: SubsystemContext, - B: Backend, -{ - // TODO https://github.com/paritytech/polkadot/issues/3293: Add stagnant checking timer loop. - loop { - match ctx.recv().await? { - FromOverseer::Signal(OverseerSignal::Conclude) => { - return Ok(()) - } - FromOverseer::Signal(OverseerSignal::ActiveLeaves(update)) => { - for leaf in update.activated { - let write_ops = handle_active_leaf( - ctx, - &*backend, - leaf.hash, - ).await?; - - backend.write(write_ops)?; - } - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(h, n)) => { - handle_finalized_block(backend, h, n)? - } - FromOverseer::Communication { msg } => match msg { - ChainSelectionMessage::Approved(hash) => { - handle_approved_block(backend, hash)? - } - ChainSelectionMessage::Leaves(tx) => { - let leaves = load_leaves(ctx, &*backend).await?; - let _ = tx.send(leaves); - } - ChainSelectionMessage::BestLeafContaining(required, tx) => { - let best_containing = crate::backend::find_best_leaf_containing( - &*backend, - required, - )?; - - // note - this may be none if the finalized block is - // a leaf. this is fine according to the expected usage of the - // function. `None` responses should just `unwrap_or(required)`, - // so if the required block is the finalized block, then voilá. - - let _ = tx.send(best_containing); - } - } - }; - } -} - -async fn fetch_finalized( - ctx: &mut impl SubsystemContext, -) -> Result, Error> { - let (number_tx, number_rx) = oneshot::channel(); - let (hash_tx, hash_rx) = oneshot::channel(); - - ctx.send_message(ChainApiMessage::FinalizedBlockNumber(number_tx).into()).await; - - let number = number_rx.await??; - - ctx.send_message(ChainApiMessage::FinalizedBlockHash(number, hash_tx).into()).await; - - match hash_rx.await?? { - None => { - tracing::warn!( - target: LOG_TARGET, - number, - "Missing hash for finalized block number" - ); - - return Ok(None) - } - Some(h) => Ok(Some((h, number))) - } -} - -async fn fetch_header( - ctx: &mut impl SubsystemContext, - hash: Hash, -) -> Result, Error> { - let (h_tx, h_rx) = oneshot::channel(); - ctx.send_message(ChainApiMessage::BlockHeader(hash, h_tx).into()).await; - - h_rx.await?.map_err(Into::into) -} - -async fn fetch_block_weight( - ctx: &mut impl SubsystemContext, - hash: Hash, -) -> Result, Error> { - let (tx, rx) = oneshot::channel(); - ctx.send_message(ChainApiMessage::BlockWeight(hash, tx).into()).await; - - rx.await?.map_err(Into::into) -} - -// Handle a new active leaf. -async fn handle_active_leaf( - ctx: &mut impl SubsystemContext, - backend: &impl Backend, - hash: Hash, -) -> Result, Error> { - let lower_bound = match backend.load_first_block_number()? { - Some(l) => { - // We want to iterate back to finalized, and first block number - // is assumed to be 1 above finalized - the implicit root of the - // tree. - l.saturating_sub(1) - }, - None => fetch_finalized(ctx).await?.map_or(1, |(_, n)| n), - }; - - let header = match fetch_header(ctx, hash).await? { - None => { - tracing::warn!( - target: LOG_TARGET, - ?hash, - "Missing header for new head", - ); - return Ok(Vec::new()) - } - Some(h) => h, - }; - - let new_blocks = polkadot_node_subsystem_util::determine_new_blocks( - ctx.sender(), - |h| backend.load_block_entry(h).map(|b| b.is_some()), - hash, - &header, - lower_bound, - ).await?; - - let mut overlay = OverlayedBackend::new(backend); - - // determine_new_blocks gives blocks in descending order. - // for this, we want ascending order. - for (hash, header) in new_blocks.into_iter().rev() { - let weight = match fetch_block_weight(ctx, hash).await? { - None => { - tracing::warn!( - target: LOG_TARGET, - ?hash, - "Missing block weight for new head. Skipping chain.", - ); - - // If we don't know the weight, we can't import the block. - // And none of its descendents either. - break; - } - Some(w) => w, - }; - - let reversion_logs = extract_reversion_logs(&header); - crate::tree::import_block( - &mut overlay, - hash, - header.number, - header.parent_hash, - reversion_logs, - weight, - )?; - } - - Ok(overlay.into_write_ops().collect()) -} - -// Extract all reversion logs from a header in ascending order. -// -// Ignores logs with number >= the block header number. -fn extract_reversion_logs(header: &Header) -> Vec { - let number = header.number; - let mut logs = header.digest.logs() - .iter() - .enumerate() - .filter_map(|(i, d)| match ConsensusLog::from_digest_item(d) { - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - index = i, - block_hash = ?header.hash(), - "Digest item failed to encode" - ); - - None - } - Ok(Some(ConsensusLog::Revert(b))) if b < number => Some(b), - Ok(Some(ConsensusLog::Revert(b))) => { - tracing::warn!( - target: LOG_TARGET, - revert_target = b, - block_number = number, - block_hash = ?header.hash(), - "Block issued invalid revert digest targeting itself or future" - ); - - None - } - Ok(_) => None, - }) - .collect::>(); - - logs.sort(); - - logs -} - -// Handle a finalized block event. -fn handle_finalized_block( - backend: &mut impl Backend, - finalized_hash: Hash, - finalized_number: BlockNumber, -) -> Result<(), Error> { - let ops = crate::tree::finalize_block( - &*backend, - finalized_hash, - finalized_number, - )?.into_write_ops(); - - backend.write(ops) -} - -// Handle an approved block event. -fn handle_approved_block( - backend: &mut impl Backend, - approved_block: Hash, -) -> Result<(), Error> { - let ops = { - let mut overlay = OverlayedBackend::new(&*backend); - - crate::tree::approve_block( - &mut overlay, - approved_block, - )?; - - overlay.into_write_ops() - }; - - backend.write(ops) -} - -// Load the leaves from the backend. If there are no leaves, then return -// the finalized block. -async fn load_leaves( - ctx: &mut impl SubsystemContext, - backend: &impl Backend, -) -> Result, Error> { - let leaves: Vec<_> = backend.load_leaves()? - .into_hashes_descending() - .collect(); - - if leaves.is_empty() { - Ok(fetch_finalized(ctx).await?.map_or(Vec::new(), |(h, _)| vec![h])) - } else { - Ok(leaves) - } -} diff --git a/node/core/chain-selection/src/tests.rs b/node/core/chain-selection/src/tests.rs deleted file mode 100644 index 945578a47e6e..000000000000 --- a/node/core/chain-selection/src/tests.rs +++ /dev/null @@ -1,1909 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Tests for the subsystem. -//! -//! These primarily revolve around having a backend which is shared between -//! both the test code and the tested subsystem, and which also gives the -//! test code the ability to wait for write operations to occur. - -use super::*; -use std::collections::{HashMap, HashSet, BTreeMap}; -use std::sync::Arc; - -use futures::channel::oneshot; -use parity_scale_codec::Encode; -use parking_lot::Mutex; -use sp_core::testing::TaskExecutor; -use assert_matches::assert_matches; - -use polkadot_primitives::v1::{BlakeTwo256, HashT, ConsensusLog}; -use polkadot_subsystem::{jaeger, ActiveLeavesUpdate, ActivatedLeaf, LeafStatus}; -use polkadot_subsystem::messages::AllMessages; -use polkadot_node_subsystem_test_helpers as test_helpers; - -#[derive(Default)] -struct TestBackendInner { - leaves: LeafEntrySet, - block_entries: HashMap, - blocks_by_number: BTreeMap>, - stagnant_at: BTreeMap>, - // earlier wakers at the back. - write_wakers: Vec>, -} - -#[derive(Clone)] -struct TestBackend { - inner: Arc>, -} - -impl TestBackend { - // Yields a receiver which will be woken up on some future write - // to the backend along with its position (starting at 0) in the - // queue. - // - // Our tests assume that there is only one task calling this function - // and the index is useful to get a waker that will trigger after - // some known amount of writes to the backend that happen internally - // inside the subsystem. - // - // It's important to call this function at points where no writes - // are pending to the backend. This requires knowing some details - // about the internals of the subsystem, so the abstraction leaks - // somewhat, but this is acceptable enough. - fn await_next_write(&self) -> (usize, oneshot::Receiver<()>) { - let (tx, rx) = oneshot::channel(); - - let mut inner = self.inner.lock(); - let pos = inner.write_wakers.len(); - inner.write_wakers.insert(0, tx); - - (pos, rx) - } - - // Assert the backend contains only the given blocks and no others. - // This does not check the stagnant_at mapping because that is - // pruned lazily by the subsystem as opposed to eagerly. - fn assert_contains_only( - &self, - blocks: Vec<(BlockNumber, Hash)>, - ) { - let hashes: Vec<_> = blocks.iter().map(|(_, h)| *h).collect(); - let mut by_number: HashMap<_, HashSet<_>> = HashMap::new(); - - for (number, hash) in blocks { - by_number.entry(number).or_default().insert(hash); - } - - let inner = self.inner.lock(); - assert_eq!(inner.block_entries.len(), hashes.len()); - assert_eq!(inner.blocks_by_number.len(), by_number.len()); - - for leaf in inner.leaves.clone().into_hashes_descending() { - assert!(hashes.contains(&leaf)); - } - - for (number, hashes_at_number) in by_number { - let at = inner.blocks_by_number.get(&number).unwrap(); - for hash in at { - assert!(hashes_at_number.contains(&hash)); - } - } - } -} - -impl Default for TestBackend { - fn default() -> Self { - TestBackend { - inner: Default::default(), - } - } -} - -impl Backend for TestBackend { - fn load_block_entry(&self, hash: &Hash) -> Result, Error> { - Ok(self.inner.lock().block_entries.get(hash).map(|e| e.clone())) - } - fn load_leaves(&self) -> Result { - Ok(self.inner.lock().leaves.clone()) - } - fn load_stagnant_at(&self, timestamp: Timestamp) -> Result, Error> { - Ok(self.inner.lock().stagnant_at.get(×tamp).map_or(Vec::new(), |s| s.clone())) - } - fn load_stagnant_at_up_to(&self, up_to: Timestamp) - -> Result)>, Error> - { - Ok(self.inner.lock().stagnant_at.range(..=up_to).map(|(t, v)| (*t, v.clone())).collect()) - } - fn load_first_block_number(&self) -> Result, Error> { - Ok(self.inner.lock().blocks_by_number.range(..).map(|(k, _)| *k).next()) - } - fn load_blocks_by_number(&self, number: BlockNumber) -> Result, Error> { - Ok(self.inner.lock().blocks_by_number.get(&number).map_or(Vec::new(), |v| v.clone())) - } - - fn write(&mut self, ops: I) -> Result<(), Error> - where I: IntoIterator - { - let mut inner = self.inner.lock(); - - for op in ops { - match op { - BackendWriteOp::WriteBlockEntry(entry) => { - inner.block_entries.insert(entry.block_hash, entry); - } - BackendWriteOp::WriteBlocksByNumber(number, hashes) => { - inner.blocks_by_number.insert(number, hashes); - } - BackendWriteOp::WriteViableLeaves(leaves) => { - inner.leaves = leaves; - } - BackendWriteOp::WriteStagnantAt(time, hashes) => { - inner.stagnant_at.insert(time, hashes); - } - BackendWriteOp::DeleteBlocksByNumber(number) => { - inner.blocks_by_number.remove(&number); - } - BackendWriteOp::DeleteBlockEntry(hash) => { - inner.block_entries.remove(&hash); - } - BackendWriteOp::DeleteStagnantAt(time) => { - inner.stagnant_at.remove(&time); - } - } - } - - if let Some(waker) = inner.write_wakers.pop() { - let _ = waker.send(()); - } - Ok(()) - } -} - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -fn test_harness>( - test: impl FnOnce(TestBackend, VirtualOverseer) -> T -) { - let pool = TaskExecutor::new(); - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool); - - let backend = TestBackend::default(); - let subsystem = crate::run(context, backend.clone()); - - let test_fut = test(backend, virtual_overseer); - let test_and_conclude = async move { - let mut virtual_overseer = test_fut.await; - virtual_overseer.send(OverseerSignal::Conclude.into()).await; - - // Ensure no messages are pending when the subsystem shuts down. - assert!(virtual_overseer.try_recv().await.is_none()); - }; - futures::executor::block_on(futures::future::join(subsystem, test_and_conclude)); -} - -// Answer requests from the subsystem about the finalized block. -async fn answer_finalized_block_info( - overseer: &mut VirtualOverseer, - finalized_number: BlockNumber, - finalized_hash: Hash, -) { - assert_matches!( - overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber(tx)) => { - let _ = tx.send(Ok(finalized_number)); - } - ); - - assert_matches!( - overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash(n, tx)) => { - assert_eq!(n, finalized_number); - let _ = tx.send(Ok(Some(finalized_hash))); - } - ); -} - -async fn answer_header_request( - overseer: &mut VirtualOverseer, - maybe_header: impl Into>, -) { - assert_matches!( - overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(hash, tx)) => { - let maybe_header = maybe_header.into(); - assert!(maybe_header.as_ref().map_or(true, |h| h.hash() == hash)); - let _ = tx.send(Ok(maybe_header)); - } - ) -} - -async fn answer_weight_request( - overseer: &mut VirtualOverseer, - hash: Hash, - weight: impl Into>, -) { - assert_matches!( - overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockWeight(h, tx)) => { - assert_eq!(h, hash); - let _ = tx.send(Ok(weight.into())); - } - ) -} - -fn child_header(parent_number: BlockNumber, parent_hash: Hash) -> Header { - Header { - parent_hash, - number: parent_number + 1, - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: Default::default() - } -} - -fn salt_header(header: &mut Header, salt: impl Encode) { - header.state_root = BlakeTwo256::hash_of(&salt) -} - -fn add_reversions( - header: &mut Header, - reversions: impl IntoIterator, -) { - for log in reversions.into_iter().map(ConsensusLog::Revert) { - header.digest.logs.push(log.into()) - } -} - -// Builds a chain on top of the given base, with one block for each -// provided weight. -fn construct_chain_on_base( - weights: impl IntoIterator, - base_number: BlockNumber, - base_hash: Hash, - mut mutate: impl FnMut(&mut Header), -) -> (Hash, Vec<(Header, BlockWeight)>) { - let mut parent_number = base_number; - let mut parent_hash = base_hash; - - let mut chain = Vec::new(); - for weight in weights { - let mut header = child_header(parent_number, parent_hash); - mutate(&mut header); - - parent_number = header.number; - parent_hash = header.hash(); - chain.push((header, weight)); - } - - (parent_hash, chain) -} - -// import blocks 1-by-1. If `finalized_base` is supplied, -// it will be answered before the first block in `answers. -async fn import_blocks_into( - virtual_overseer: &mut VirtualOverseer, - backend: &TestBackend, - mut finalized_base: Option<(BlockNumber, Hash)>, - blocks: Vec<(Header, BlockWeight)>, -) { - for (header, weight) in blocks { - let (_, write_rx) = backend.await_next_write(); - - let hash = header.hash(); - virtual_overseer.send(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work( - ActivatedLeaf { - hash, - number: header.number, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - } - )).into()).await; - - if let Some((f_n, f_h)) = finalized_base.take() { - answer_finalized_block_info(virtual_overseer, f_n, f_h).await; - } - - answer_header_request(virtual_overseer, header.clone()).await; - answer_weight_request(virtual_overseer, hash, weight).await; - - write_rx.await.unwrap(); - } -} - -async fn import_chains_into_empty( - virtual_overseer: &mut VirtualOverseer, - backend: &TestBackend, - finalized_number: BlockNumber, - finalized_hash: Hash, - chains: Vec>, -) { - for (i, chain)in chains.into_iter().enumerate() { - let finalized_base = Some((finalized_number, finalized_hash)).filter(|_| i == 0); - import_blocks_into( - virtual_overseer, - backend, - finalized_base, - chain, - ).await; - } -} - -// Import blocks all at once. This assumes that the ancestor is known/finalized -// but none of the other blocks. -// import blocks 1-by-1. If `finalized_base` is supplied, -// it will be answered before the first block. -// -// some pre-blocks may need to be supplied to answer ancestry requests -// that gather batches beyond the beginning of the new chain. -// pre-blocks are those already known by the subsystem, however, -// the subsystem has no way of knowin that until requesting ancestry. -async fn import_all_blocks_into( - virtual_overseer: &mut VirtualOverseer, - backend: &TestBackend, - finalized_base: Option<(BlockNumber, Hash)>, - pre_blocks: Vec

, - blocks: Vec<(Header, BlockWeight)>, -) { - assert!(blocks.len() > 1, "gap only makes sense if importing multiple blocks"); - - let head = blocks.last().unwrap().0.clone(); - let head_hash = head.hash(); - - let (_, write_rx) = backend.await_next_write(); - virtual_overseer.send(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work( - ActivatedLeaf { - hash: head_hash, - number: head.number, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - } - )).into()).await; - - if let Some((f_n, f_h)) = finalized_base { - answer_finalized_block_info(virtual_overseer, f_n, f_h).await; - } - - // Head is always fetched first. - answer_header_request(virtual_overseer, head).await; - - // Answer header and ancestry requests until the parent of head - // is imported. - { - let find_block_header = |expected_hash| { - pre_blocks.iter().cloned() - .chain(blocks.iter().map(|(h, _)| h.clone())) - .find(|hdr| hdr.hash() == expected_hash) - .unwrap() - }; - - let mut behind_head = 0; - loop { - let nth_ancestor_of_head = |n: usize| { - // blocks: [d, e, f, head] - // pre: [a, b, c] - // - // [a, b, c, d, e, f, head] - // [6, 5, 4, 3, 2, 1, 0] - - let new_ancestry_end = blocks.len() - 1; - if n > new_ancestry_end { - // [6, 5, 4] -> [2, 1, 0] - let n_in_pre = n - blocks.len(); - let pre_blocks_end = pre_blocks.len() - 1; - pre_blocks[pre_blocks_end - n_in_pre].clone() - } else { - let blocks_end = blocks.len() - 1; - blocks[blocks_end - n].0.clone() - } - }; - - match virtual_overseer.recv().await { - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash: h, - k, - response_channel: tx, - }) => { - let prev_response = nth_ancestor_of_head(behind_head); - assert_eq!(h, prev_response.hash()); - - let _ = tx.send(Ok( - (0..k as usize).map(|n| n + behind_head + 1) - .map(nth_ancestor_of_head) - .map(|h| h.hash()) - .collect() - )); - - for _ in 0..k { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - let header = find_block_header(h); - let _ = tx.send(Ok(Some(header))); - } - ) - } - - behind_head = behind_head + k as usize; - } - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - let header = find_block_header(h); - let _ = tx.send(Ok(Some(header))); - - // Assuming that `determine_new_blocks` uses these - // instead of ancestry: 1. - behind_head += 1; - } - AllMessages::ChainApi(ChainApiMessage::BlockWeight(h, tx)) => { - let (_, weight) = blocks.iter().find(|(hdr, _)| hdr.hash() == h).unwrap(); - let _ = tx.send(Ok(Some(*weight))); - - // Last weight has been returned. Time to go. - if h == head_hash { break } - } - _ => panic!("unexpected message"), - } - } - } - write_rx.await.unwrap(); -} - -async fn finalize_block( - virtual_overseer: &mut VirtualOverseer, - backend: &TestBackend, - block_number: BlockNumber, - block_hash: Hash, -) { - let (_, write_tx) = backend.await_next_write(); - - virtual_overseer.send( - OverseerSignal::BlockFinalized(block_hash, block_number).into() - ).await; - - write_tx.await.unwrap(); -} - -fn extract_info_from_chain(i: usize, chain: &[(Header, BlockWeight)]) - -> (BlockNumber, Hash, BlockWeight) -{ - let &(ref header, weight) = &chain[i]; - - (header.number, header.hash(), weight) -} - -fn assert_backend_contains<'a>( - backend: &TestBackend, - headers: impl IntoIterator, -) { - for header in headers { - let hash = header.hash(); - assert!( - backend.load_blocks_by_number(header.number).unwrap().contains(&hash), - "blocks at {} does not contain {}", - header.number, - hash, - ); - assert!( - backend.load_block_entry(&hash).unwrap().is_some(), - "no entry found for {}", - hash, - ); - } -} - -fn assert_backend_contains_chains( - backend: &TestBackend, - chains: Vec>, -) { - for chain in chains { - assert_backend_contains( - backend, - chain.iter().map(|&(ref hdr, _)| hdr) - ) - } -} - -fn assert_leaves( - backend: &TestBackend, - leaves: Vec, -) { - assert_eq!( - backend.load_leaves().unwrap().into_hashes_descending().into_iter().collect::>(), - leaves, - ); -} - -async fn assert_leaves_query( - virtual_overseer: &mut VirtualOverseer, - leaves: Vec, -) { - assert!(!leaves.is_empty(), "empty leaves impossible. answer finalized query"); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: ChainSelectionMessage::Leaves(tx) - }).await; - - assert_eq!(rx.await.unwrap(), leaves); -} - -async fn assert_finalized_leaves_query( - virtual_overseer: &mut VirtualOverseer, - finalized_number: BlockNumber, - finalized_hash: Hash, -) { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: ChainSelectionMessage::Leaves(tx) - }).await; - - answer_finalized_block_info(virtual_overseer, finalized_number, finalized_hash).await; - - assert_eq!(rx.await.unwrap(), vec![finalized_hash]); -} - -async fn best_leaf_containing( - virtual_overseer: &mut VirtualOverseer, - required: Hash, -) -> Option { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: ChainSelectionMessage::BestLeafContaining(required, tx) - }).await; - - rx.await.unwrap() -} - -async fn approve_block( - virtual_overseer: &mut VirtualOverseer, - backend: &TestBackend, - approved: Hash, -) { - let (_, write_rx) = backend.await_next_write(); - virtual_overseer.send(FromOverseer::Communication { - msg: ChainSelectionMessage::Approved(approved) - }).await; - - write_rx.await.unwrap() -} - -#[test] -fn no_op_subsystem_run() { - test_harness(|_, virtual_overseer| async move { virtual_overseer }); -} - -#[test] -fn import_direct_child_of_finalized_on_empty() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - let child = child_header(finalized_number, finalized_hash); - let child_hash = child.hash(); - let child_weight = 1; - let child_number = child.number; - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - vec![(child.clone(), child_weight)], - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), child_number); - assert_backend_contains(&backend, &[child]); - assert_leaves(&backend, vec![child_hash]); - assert_leaves_query(&mut virtual_overseer, vec![child_hash]).await; - - virtual_overseer - }) -} - -#[test] -fn import_chain_on_finalized_incrementally() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - let (head_hash, chain) = construct_chain_on_base( - vec![1, 2, 3, 4, 5], - finalized_number, - finalized_hash, - |_| {} - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain.clone(), - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), 1); - assert_backend_contains(&backend, chain.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![head_hash]); - assert_leaves_query(&mut virtual_overseer, vec![head_hash]).await; - - virtual_overseer - }) -} - -#[test] -fn import_two_subtrees_on_finalized() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - let (a_hash, chain_a) = construct_chain_on_base( - vec![1], - finalized_number, - finalized_hash, - |_| {} - ); - - let (b_hash, chain_b) = construct_chain_on_base( - vec![2], - finalized_number, - finalized_hash, - |h| salt_header(h, b"b"), - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - import_blocks_into( - &mut virtual_overseer, - &backend, - None, - chain_b.clone(), - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), 1); - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![b_hash, a_hash]); - assert_leaves_query(&mut virtual_overseer, vec![b_hash, a_hash]).await; - - virtual_overseer - }) -} - -#[test] -fn import_two_subtrees_on_nonzero_finalized() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 100; - let finalized_hash = Hash::repeat_byte(0); - - let (a_hash, chain_a) = construct_chain_on_base( - vec![1], - finalized_number, - finalized_hash, - |_| {} - ); - - let (b_hash, chain_b) = construct_chain_on_base( - vec![2], - finalized_number, - finalized_hash, - |h| salt_header(h, b"b"), - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - import_blocks_into( - &mut virtual_overseer, - &backend, - None, - chain_b.clone(), - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), 101); - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![b_hash, a_hash]); - assert_leaves_query(&mut virtual_overseer, vec![b_hash, a_hash]).await; - - virtual_overseer - }) -} - -#[test] -fn leaves_ordered_by_weight_and_then_number() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A1 <- B2 - // F <- C1 <- C2 - // - // expected_leaves: [(C2, 3), (A3, 2), (B2, 2)] - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 1, 2], - finalized_number, - finalized_hash, - |_| {} - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![2], - 1, - a1_hash, - |h| salt_header(h, b"b"), - ); - - let (c2_hash, chain_c) = construct_chain_on_base( - vec![1, 3], - finalized_number, - finalized_hash, - |h| salt_header(h, b"c"), - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone(), chain_c.clone()], - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), 1); - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_c.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![c2_hash, a3_hash, b2_hash]); - assert_leaves_query(&mut virtual_overseer, vec![c2_hash, a3_hash, b2_hash]).await; - virtual_overseer - }); -} - -#[test] -fn subtrees_imported_even_with_gaps() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A2 <- B3 <- B4 <- B5 - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |_| {} - ); - - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (b5_hash, chain_b) = construct_chain_on_base( - vec![4, 4, 5], - 2, - a2_hash, - |h| salt_header(h, b"b"), - ); - - import_all_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - Vec::new(), - chain_a.clone(), - ).await; - - import_all_blocks_into( - &mut virtual_overseer, - &backend, - None, - vec![chain_a[0].0.clone(), chain_a[1].0.clone()], - chain_b.clone(), - ).await; - - assert_eq!(backend.load_first_block_number().unwrap().unwrap(), 1); - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![b5_hash, a3_hash]); - assert_leaves_query(&mut virtual_overseer, vec![b5_hash, a3_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn reversion_removes_viability_of_chain() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // - // A3 reverts A1 - - let (_a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| if h.number == 3 { add_reversions(h, Some(1)) } - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![]); - assert_finalized_leaves_query( - &mut virtual_overseer, - finalized_number, - finalized_hash, - ).await; - - virtual_overseer - }); -} - -#[test] -fn reversion_removes_viability_and_finds_ancestor_as_leaf() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // - // A3 reverts A2 - - let (_a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| if h.number == 3 { add_reversions(h, Some(2)) } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![a1_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a1_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn ancestor_of_unviable_is_not_leaf_if_has_children() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // A1 <- B2 - // - // A3 reverts A2 - - let (a2_hash, chain_a) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |_| {} - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - let (_a3_hash, chain_a_ext) = construct_chain_on_base( - vec![3], - 2, - a2_hash, - |h| add_reversions(h, Some(2)), - ); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![1], - 1, - a1_hash, - |h| salt_header(h, b"b") - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - import_blocks_into( - &mut virtual_overseer, - &backend, - None, - chain_b.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![a2_hash, b2_hash]); - - import_blocks_into( - &mut virtual_overseer, - &backend, - None, - chain_a_ext.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_a_ext.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![b2_hash]); - assert_leaves_query(&mut virtual_overseer, vec![b2_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn self_and_future_reversions_are_ignored() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // - // A3 reverts itself and future blocks. ignored. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| if h.number == 3 { add_reversions(h, vec![3, 4, 100]) } - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![a3_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a3_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn revert_finalized_is_ignored() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 10; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // - // A3 reverts itself and future blocks. ignored. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| if h.number == 13 { add_reversions(h, vec![10, 9, 8, 0, 1]) } - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![a3_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a3_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn reversion_affects_viability_of_all_subtrees() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3. - // A2 <- B3 <- B4 - // - // B4 reverts A2. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |_| {} - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (_b4_hash, chain_b) = construct_chain_on_base( - vec![3, 4], - 2, - a2_hash, - |h| { - salt_header(h, b"b"); - if h.number == 4 { - add_reversions(h, Some(2)); - } - } - ); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - assert_leaves(&backend, vec![a3_hash]); - - import_blocks_into( - &mut virtual_overseer, - &backend, - None, - chain_b.clone(), - ).await; - - assert_backend_contains(&backend, chain_a.iter().map(|&(ref h, _)| h)); - assert_backend_contains(&backend, chain_b.iter().map(|&(ref h, _)| h)); - assert_leaves(&backend, vec![a1_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a1_hash]).await; - - virtual_overseer - }); -} - -#[test] -fn finalize_viable_prunes_subtrees() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // A2 <- X3 - // F <- A1 <- A2 <- A3. - // A1 <- B2 - // F <- C1 <- C2 <- C3 - // C2 <- D3 - // - // Finalize A2. Only A2, A3, and X3 should remain. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 10], - finalized_number, - finalized_hash, - |h| salt_header(h, b"a"), - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (x3_hash, chain_x) = construct_chain_on_base( - vec![3], - 2, - a2_hash, - |h| salt_header(h, b"x"), - ); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![6], - 1, - a1_hash, - |h| salt_header(h, b"b"), - ); - - let (c3_hash, chain_c) = construct_chain_on_base( - vec![1, 2, 8], - finalized_number, - finalized_hash, - |h| salt_header(h, b"c"), - ); - let (_, c2_hash, _) = extract_info_from_chain(1, &chain_c); - - let (d3_hash, chain_d) = construct_chain_on_base( - vec![7], - 2, - c2_hash, - |h| salt_header(h, b"d"), - ); - - let all_chains = vec![ - chain_a.clone(), - chain_x.clone(), - chain_b.clone(), - chain_c.clone(), - chain_d.clone(), - ]; - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - all_chains.clone(), - ).await; - - assert_backend_contains_chains( - &backend, - all_chains.clone(), - ); - assert_leaves(&backend, vec![a3_hash, c3_hash, d3_hash, b2_hash, x3_hash]); - - // Finalize block A2. Now lots of blocks should go missing. - finalize_block( - &mut virtual_overseer, - &backend, - 2, - a2_hash, - ).await; - - // A2 <- A3 - // A2 <- X3 - - backend.assert_contains_only(vec![ - (3, a3_hash), - (3, x3_hash), - ]); - - assert_leaves(&backend, vec![a3_hash, x3_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a3_hash, x3_hash]).await; - - assert_eq!( - backend.load_first_block_number().unwrap().unwrap(), - 3, - ); - - assert_eq!( - backend.load_blocks_by_number(3).unwrap(), - vec![a3_hash, x3_hash], - ); - - virtual_overseer - }); -} - -#[test] -fn finalization_does_not_clobber_unviability() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A3 reverts A2. - // Finalize A1. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 10], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 3 { - add_reversions(h, Some(2)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - import_blocks_into( - &mut virtual_overseer, - &backend, - Some((finalized_number, finalized_hash)), - chain_a.clone(), - ).await; - - finalize_block( - &mut virtual_overseer, - &backend, - 1, - a1_hash, - ).await; - - assert_leaves(&backend, vec![]); - assert_finalized_leaves_query( - &mut virtual_overseer, - 1, - a1_hash, - ).await; - backend.assert_contains_only(vec![ - (3, a3_hash), - (2, a2_hash), - ]); - - virtual_overseer - }); -} - -#[test] -fn finalization_erases_unviable() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A1 <- B2 - // - // A2 reverts A1. - // Finalize A1. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 2 { - add_reversions(h, Some(1)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![1], - 1, - a1_hash, - |h| salt_header(h, b"b"), - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone()], - ).await; - - assert_leaves(&backend, vec![]); - - finalize_block( - &mut virtual_overseer, - &backend, - 1, - a1_hash, - ).await; - - assert_leaves(&backend, vec![a3_hash, b2_hash]); - assert_leaves_query(&mut virtual_overseer, vec![a3_hash, b2_hash]).await; - - backend.assert_contains_only(vec![ - (3, a3_hash), - (2, a2_hash), - (2, b2_hash), - ]); - - virtual_overseer - }); -} - -#[test] -fn finalize_erases_unviable_but_keeps_later_unviability() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A1 <- B2 - // - // A2 reverts A1. - // A3 reverts A2. - // Finalize A1. A2 is stil unviable, but B2 is viable. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 2 { - add_reversions(h, Some(1)); - } - if h.number == 3 { - add_reversions(h, Some(2)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![1], - 1, - a1_hash, - |h| salt_header(h, b"b"), - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone()], - ).await; - - assert_leaves(&backend, vec![]); - - finalize_block( - &mut virtual_overseer, - &backend, - 1, - a1_hash, - ).await; - - assert_leaves(&backend, vec![b2_hash]); - assert_leaves_query(&mut virtual_overseer, vec![b2_hash]).await; - - backend.assert_contains_only(vec![ - (3, a3_hash), - (2, a2_hash), - (2, b2_hash), - ]); - - virtual_overseer - }); -} - -#[test] -fn finalize_erases_unviable_from_one_but_not_all_reverts() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // - // A3 reverts A2 and A1. - // Finalize A1. A2 is stil unviable. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 3 { - add_reversions(h, Some(1)); - add_reversions(h, Some(2)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone()], - ).await; - - assert_leaves(&backend, vec![]); - - finalize_block( - &mut virtual_overseer, - &backend, - 1, - a1_hash, - ).await; - - assert_leaves(&backend, vec![]); - assert_finalized_leaves_query( - &mut virtual_overseer, - 1, - a1_hash, - ).await; - - backend.assert_contains_only(vec![ - (3, a3_hash), - (2, a2_hash), - ]); - - virtual_overseer - }); -} - -#[test] -fn finalize_triggers_viability_search() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A2 <- B3 - // A2 <- C3 - // A3 reverts A1. - // Finalize A1. A3, B3, and C3 are all viable now. - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 3 { - add_reversions(h, Some(1)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - let (b3_hash, chain_b) = construct_chain_on_base( - vec![4], - 2, - a2_hash, - |h| salt_header(h, b"b"), - ); - - let (c3_hash, chain_c) = construct_chain_on_base( - vec![5], - 2, - a2_hash, - |h| salt_header(h, b"c"), - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone(), chain_c.clone()], - ).await; - - assert_leaves(&backend, vec![]); - - finalize_block( - &mut virtual_overseer, - &backend, - 1, - a1_hash, - ).await; - - assert_leaves(&backend, vec![c3_hash, b3_hash, a3_hash]); - assert_leaves_query(&mut virtual_overseer, vec![c3_hash, b3_hash, a3_hash]).await; - - backend.assert_contains_only(vec![ - (3, a3_hash), - (3, b3_hash), - (3, c3_hash), - (2, a2_hash), - ]); - - virtual_overseer - }); -} - -#[test] -fn best_leaf_none_with_empty_db() { - test_harness(|_backend, mut virtual_overseer| async move { - let required = Hash::repeat_byte(1); - let best_leaf = best_leaf_containing(&mut virtual_overseer, required).await; - assert!(best_leaf.is_none()); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_none_with_no_viable_leaves() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 - // - // A2 reverts A1. - - let (a2_hash, chain_a) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 2 { - add_reversions(h, Some(1)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a2_hash).await; - assert!(best_leaf.is_none()); - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a1_hash).await; - assert!(best_leaf.is_none()); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_none_with_unknown_required() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 - - let (_a2_hash, chain_a) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let unknown_hash = Hash::repeat_byte(0x69); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, unknown_hash).await; - assert!(best_leaf.is_none()); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_none_with_unviable_required() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 - // F <- B1 <- B2 - // - // A2 reverts A1. - - let (a2_hash, chain_a) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - if h.number == 2 { - add_reversions(h, Some(1)); - } - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - let (_b2_hash, chain_b) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"b"); - } - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a2_hash).await; - assert!(best_leaf.is_none()); - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a1_hash).await; - assert!(best_leaf.is_none()); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_with_finalized_required() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 - // F <- B1 <- B2 - // - // B2 > A2 - - let (_a2_hash, chain_a) = construct_chain_on_base( - vec![1, 1], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let (b2_hash, chain_b) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"b"); - } - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, finalized_hash).await; - assert_eq!(best_leaf, Some(b2_hash)); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_with_unfinalized_required() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 - // F <- B1 <- B2 - // - // B2 > A2 - - let (a2_hash, chain_a) = construct_chain_on_base( - vec![1, 1], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - let (_b2_hash, chain_b) = construct_chain_on_base( - vec![1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"b"); - } - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a1_hash).await; - assert_eq!(best_leaf, Some(a2_hash)); - - virtual_overseer - }) -} - -#[test] -fn best_leaf_ancestor_of_all_leaves() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - // A1 <- B2 <- B3 - // B2 <- C3 - // - // C3 > B3 > A3 - - let (_a3_hash, chain_a) = construct_chain_on_base( - vec![1, 1, 2], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - - let (_b3_hash, chain_b) = construct_chain_on_base( - vec![2, 3], - 1, - a1_hash, - |h| { - salt_header(h, b"b"); - } - ); - - let (_, b2_hash, _) = extract_info_from_chain(0, &chain_b); - - let (c3_hash, chain_c) = construct_chain_on_base( - vec![4], - 2, - b2_hash, - |h| { - salt_header(h, b"c"); - } - ); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone(), chain_b.clone(), chain_c.clone()], - ).await; - - let best_leaf = best_leaf_containing(&mut virtual_overseer, a1_hash).await; - assert_eq!(best_leaf, Some(c3_hash)); - - virtual_overseer - }) -} - -#[test] -fn approve_message_approves_block_entry() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone()], - ).await; - - approve_block(&mut virtual_overseer, &backend, a3_hash).await; - - // a3 is approved, but not a1 or a2. - assert_matches!( - backend.load_block_entry(&a3_hash).unwrap().unwrap().viability.approval, - Approval::Approved - ); - - assert_matches!( - backend.load_block_entry(&a2_hash).unwrap().unwrap().viability.approval, - Approval::Unapproved - ); - - assert_matches!( - backend.load_block_entry(&a1_hash).unwrap().unwrap().viability.approval, - Approval::Unapproved - ); - - virtual_overseer - }) -} - -#[test] -fn approve_nonexistent_has_no_effect() { - test_harness(|backend, mut virtual_overseer| async move { - let finalized_number = 0; - let finalized_hash = Hash::repeat_byte(0); - - // F <- A1 <- A2 <- A3 - - let (a3_hash, chain_a) = construct_chain_on_base( - vec![1, 2, 3], - finalized_number, - finalized_hash, - |h| { - salt_header(h, b"a"); - } - ); - - let (_, a1_hash, _) = extract_info_from_chain(0, &chain_a); - let (_, a2_hash, _) = extract_info_from_chain(1, &chain_a); - - import_chains_into_empty( - &mut virtual_overseer, - &backend, - finalized_number, - finalized_hash, - vec![chain_a.clone()], - ).await; - - let nonexistent = Hash::repeat_byte(1); - approve_block(&mut virtual_overseer, &backend, nonexistent).await; - - // a3 is approved, but not a1 or a2. - assert_matches!( - backend.load_block_entry(&a3_hash).unwrap().unwrap().viability.approval, - Approval::Unapproved - ); - - assert_matches!( - backend.load_block_entry(&a2_hash).unwrap().unwrap().viability.approval, - Approval::Unapproved - ); - - assert_matches!( - backend.load_block_entry(&a1_hash).unwrap().unwrap().viability.approval, - Approval::Unapproved - ); - - virtual_overseer - }) -} diff --git a/node/core/chain-selection/src/tree.rs b/node/core/chain-selection/src/tree.rs deleted file mode 100644 index a10f0d0c5ad5..000000000000 --- a/node/core/chain-selection/src/tree.rs +++ /dev/null @@ -1,584 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the tree-view over the data backend which we use to determine -//! viable leaves. -//! -//! The metadata is structured as a tree, with the root implicitly being the -//! finalized block, which is not stored as part of the tree. -//! -//! Each direct descendant of the finalized block acts as its own sub-tree, -//! and as the finalized block advances, orphaned sub-trees are entirely pruned. - -use polkadot_primitives::v1::{BlockNumber, Hash}; -use polkadot_node_primitives::BlockWeight; - - -use std::collections::HashMap; - -use super::{ - LOG_TARGET, - Approval, BlockEntry, Error, LeafEntry, ViabilityCriteria, - Timestamp, -}; -use crate::backend::{Backend, OverlayedBackend}; - -// A viability update to be applied to a block. -struct ViabilityUpdate(Option); - -impl ViabilityUpdate { - // Apply the viability update to a single block, yielding the updated - // block entry along with a vector of children and the updates to apply - // to them. - fn apply(self, mut entry: BlockEntry) -> ( - BlockEntry, - Vec<(Hash, ViabilityUpdate)> - ) { - // 1. When an ancestor has changed from unviable to viable, - // we erase the `earliest_unviable_ancestor` of all descendants - // until encountering a explicitly unviable descendant D. - // - // We then update the `earliest_unviable_ancestor` for all - // descendants of D to be equal to D. - // - // 2. When an ancestor A has changed from viable to unviable, - // we update the `earliest_unviable_ancestor` for all blocks - // to A. - // - // The following algorithm covers both cases. - // - // Furthermore, if there has been any change in viability, - // it is necessary to visit every single descendant of the root - // block. - // - // If a block B was unviable and is now viable, then every descendant - // has an `earliest_unviable_ancestor` which must be updated either - // to nothing or to the new earliest unviable ancestor. - // - // If a block B was viable and is now unviable, then every descendant - // has an `earliest_unviable_ancestor` which needs to be set to B. - - let maybe_earliest_unviable = self.0; - let next_earliest_unviable = { - if maybe_earliest_unviable.is_none() && !entry.viability.is_explicitly_viable() { - Some(entry.block_hash) - } else { - maybe_earliest_unviable - } - }; - entry.viability.earliest_unviable_ancestor = maybe_earliest_unviable; - - let recurse = entry.children.iter() - .cloned() - .map(move |c| (c, ViabilityUpdate(next_earliest_unviable))) - .collect(); - - (entry, recurse) - } -} - -// Propagate viability update to descendants of the given block. This writes -// the `base` entry as well as all descendants. If the parent of the block -// entry is not viable, this wlil not affect any descendants. -// -// If the block entry provided is self-unviable, then it's assumed that an -// unviability update needs to be propagated to descendants. -// -// If the block entry provided is self-viable, then it's assumed that a -// viability update needs to be propagated to descendants. -fn propagate_viability_update( - backend: &mut OverlayedBackend, - base: BlockEntry, -) -> Result<(), Error> { - enum BlockEntryRef { - Explicit(BlockEntry), - Hash(Hash), - } - - if !base.viability.is_parent_viable() { - // If the parent of the block is still unviable, - // then the `earliest_viable_ancestor` will not change - // regardless of the change in the block here. - // - // Furthermore, in such cases, the set of viable leaves - // does not change at all. - backend.write_block_entry(base); - return Ok(()) - } - - let mut viable_leaves = backend.load_leaves()?; - - // A mapping of Block Hash -> number - // Where the hash is the hash of a viable block which has - // at least 1 unviable child. - // - // The number is the number of known unviable children which is known - // as the pivot count. - let mut viability_pivots = HashMap::new(); - - // If the base block is itself explicitly unviable, - // this will change to a `Some(base_hash)` after the first - // invocation. - let viability_update = ViabilityUpdate(None); - - // Recursively apply update to tree. - // - // As we go, we remove any blocks from the leaves which are no longer viable - // leaves. We also add blocks to the leaves-set which are obviously viable leaves. - // And we build up a frontier of blocks which may either be viable leaves or - // the ancestors of one. - let mut tree_frontier = vec![(BlockEntryRef::Explicit(base), viability_update)]; - while let Some((entry_ref, update)) = tree_frontier.pop() { - let entry = match entry_ref { - BlockEntryRef::Explicit(entry) => entry, - BlockEntryRef::Hash(hash) => match backend.load_block_entry(&hash)? { - None => { - tracing::warn!( - target: LOG_TARGET, - block_hash = ?hash, - "Missing expected block entry" - ); - - continue; - } - Some(entry) => entry, - } - }; - - let (new_entry, children) = update.apply(entry); - - if new_entry.viability.is_viable() { - // A block which is viable has a parent which is obviously not - // in the viable leaves set. - viable_leaves.remove(&new_entry.parent_hash); - - // Furthermore, if the block is viable and has no children, - // it is viable by definition. - if new_entry.children.is_empty() { - viable_leaves.insert(new_entry.leaf_entry()); - } - } else { - // A block which is not viable is certainly not a viable leaf. - viable_leaves.remove(&new_entry.block_hash); - - // When the parent is viable but the entry itself is not, that means - // that the parent is a viability pivot. As we visit the children - // of a viability pivot, we build up an exhaustive pivot count. - if new_entry.viability.is_parent_viable() { - *viability_pivots.entry(new_entry.parent_hash).or_insert(0) += 1; - } - } - - backend.write_block_entry(new_entry); - - tree_frontier.extend( - children.into_iter().map(|(h, update)| (BlockEntryRef::Hash(h), update)) - ); - } - - // Revisit the viability pivots now that we've traversed the entire subtree. - // After this point, the viable leaves set is fully updated. A proof follows. - // - // If the base has become unviable, then we've iterated into all descendants, - // made them unviable and removed them from the set. We know that the parent is - // viable as this function is a no-op otherwise, so we need to see if the parent - // has other children or not. - // - // If the base has become viable, then we've iterated into all descendants, - // and found all blocks which are viable and have no children. We've already added - // those blocks to the leaf set, but what we haven't detected - // is blocks which are viable and have children, but all of the children are - // unviable. - // - // The solution of viability pivots addresses both of these: - // - // When the base has become unviable, the parent's viability is unchanged and therefore - // any leaves descending from parent but not base are still in the viable leaves set. - // If the parent has only one child which is the base, the parent is now a viable leaf. - // We've already visited the base in recursive search so the set of pivots should - // contain only a single entry `(parent, 1)`. qed. - // - // When the base has become viable, we've already iterated into every descendant - // of the base and thus have collected a set of pivots whose corresponding pivot - // counts have already been exhaustively computed from their children. qed. - for (pivot, pivot_count) in viability_pivots { - match backend.load_block_entry(&pivot)? { - None => { - // This means the block is finalized. We might reach this - // code path when the base is a child of the finalized block - // and has become unviable. - // - // Each such child is the root of its own tree - // which, as an invariant, does not depend on the viability - // of the finalized block. So no siblings need to be inspected - // and we can ignore it safely. - // - // Furthermore, if the set of viable leaves is empty, the - // finalized block is implicitly the viable leaf. - continue - } - Some(entry) => { - if entry.children.len() == pivot_count { - viable_leaves.insert(entry.leaf_entry()); - } - } - } - } - - backend.write_leaves(viable_leaves); - - Ok(()) -} - -/// Imports a new block and applies any reversions to ancestors. -pub(crate) fn import_block( - backend: &mut OverlayedBackend, - block_hash: Hash, - block_number: BlockNumber, - parent_hash: Hash, - reversion_logs: Vec, - weight: BlockWeight, -) -> Result<(), Error> { - add_block(backend, block_hash, block_number, parent_hash, weight)?; - apply_reversions( - backend, - block_hash, - block_number, - reversion_logs, - )?; - - Ok(()) -} - -// Load the given ancestor's block entry, in descending order from the `block_hash`. -// The ancestor_number must be at least one block less than the `block_number`. -// -// The returned entry will be `None` if the range is invalid or any block in the path had -// no entry present. If any block entry was missing, it can safely be assumed to -// be finalized. -fn load_ancestor( - backend: &mut OverlayedBackend, - block_hash: Hash, - block_number: BlockNumber, - ancestor_number: BlockNumber, -) -> Result, Error> { - if block_number <= ancestor_number { return Ok(None) } - - let mut current_hash = block_hash; - let mut current_entry = None; - - let segment_length = (block_number - ancestor_number) + 1; - for _ in 0..segment_length { - match backend.load_block_entry(¤t_hash)? { - None => return Ok(None), - Some(entry) => { - let parent_hash = entry.parent_hash; - current_entry = Some(entry); - current_hash = parent_hash; - } - } - } - - // Current entry should always be `Some` here. - Ok(current_entry) -} - -// Add a new block to the tree, which is assumed to be unreverted and unapproved, -// but not stagnant. It inherits viability from its parent, if any. -// -// This updates the parent entry, if any, and updates the viable leaves set accordingly. -// This also schedules a stagnation-check update and adds the block to the blocks-by-number -// mapping. -fn add_block( - backend: &mut OverlayedBackend, - block_hash: Hash, - block_number: BlockNumber, - parent_hash: Hash, - weight: BlockWeight, -) -> Result<(), Error> { - let mut leaves = backend.load_leaves()?; - let parent_entry = backend.load_block_entry(&parent_hash)?; - - let inherited_viability = parent_entry.as_ref() - .and_then(|parent| parent.non_viable_ancestor_for_child()); - - // 1. Add the block to the DB assuming it's not reverted. - backend.write_block_entry( - BlockEntry { - block_hash, - block_number, - parent_hash, - children: Vec::new(), - viability: ViabilityCriteria { - earliest_unviable_ancestor: inherited_viability, - explicitly_reverted: false, - approval: Approval::Unapproved, - }, - weight, - } - ); - - // 2. Update leaves if inherited viability is fine. - if inherited_viability.is_none() { - leaves.remove(&parent_hash); - leaves.insert(LeafEntry { block_hash, block_number, weight }); - backend.write_leaves(leaves); - } - - // 3. Update and write the parent - if let Some(mut parent_entry) = parent_entry { - parent_entry.children.push(block_hash); - backend.write_block_entry(parent_entry); - } - - // 4. Add to blocks-by-number. - let mut blocks_by_number = backend.load_blocks_by_number(block_number)?; - blocks_by_number.push(block_hash); - backend.write_blocks_by_number(block_number, blocks_by_number); - - // 5. Add stagnation timeout. - let stagnant_at = crate::stagnant_timeout_from_now(); - let mut stagnant_at_list = backend.load_stagnant_at(stagnant_at)?; - stagnant_at_list.push(block_hash); - backend.write_stagnant_at(stagnant_at, stagnant_at_list); - - Ok(()) -} - -// Assuming that a block is already imported, accepts the number of the block -// as well as a list of reversions triggered by the block in ascending order. -fn apply_reversions( - backend: &mut OverlayedBackend, - block_hash: Hash, - block_number: BlockNumber, - reversions: Vec, -) -> Result<(), Error> { - // Note: since revert numbers are in ascending order, the expensive propagation - // of unviability is only heavy on the first log. - for revert_number in reversions { - let mut ancestor_entry = match load_ancestor( - backend, - block_hash, - block_number, - revert_number, - )? { - None => { - tracing::warn!( - target: LOG_TARGET, - ?block_hash, - block_number, - revert_target = revert_number, - "The hammer has dropped. \ - A block has indicated that its finalized ancestor be reverted. \ - Please inform an adult.", - ); - - continue - } - Some(ancestor_entry) => { - tracing::info!( - target: LOG_TARGET, - ?block_hash, - block_number, - revert_target = revert_number, - revert_hash = ?ancestor_entry.block_hash, - "A block has signaled that its ancestor be reverted due to a bad parachain block.", - ); - - ancestor_entry - } - }; - - ancestor_entry.viability.explicitly_reverted = true; - propagate_viability_update(backend, ancestor_entry)?; - } - - Ok(()) -} - -/// Finalize a block with the given number and hash. -/// -/// This will prune all sub-trees not descending from the given block, -/// all block entries at or before the given height, -/// and will update the viability of all sub-trees descending from the given -/// block if the finalized block was not viable. -/// -/// This is assumed to start with a fresh backend, and will produce -/// an overlay over the backend with all the changes applied. -pub(super) fn finalize_block<'a, B: Backend + 'a>( - backend: &'a B, - finalized_hash: Hash, - finalized_number: BlockNumber, -) -> Result, Error> { - let earliest_stored_number = backend.load_first_block_number()?; - let mut backend = OverlayedBackend::new(backend); - - let earliest_stored_number = match earliest_stored_number { - None => { - // This implies that there are no unfinalized blocks and hence nothing - // to update. - return Ok(backend); - } - Some(e) => e, - }; - - let mut viable_leaves = backend.load_leaves()?; - - // Walk all numbers up to the finalized number and remove those entries. - for number in earliest_stored_number..finalized_number { - let blocks_at = backend.load_blocks_by_number(number)?; - backend.delete_blocks_by_number(number); - - for block in blocks_at { - viable_leaves.remove(&block); - backend.delete_block_entry(&block); - } - } - - // Remove all blocks at the finalized height, with the exception of the finalized block, - // and their descendants, recursively. - { - let blocks_at_finalized_height = backend.load_blocks_by_number(finalized_number)?; - backend.delete_blocks_by_number(finalized_number); - - let mut frontier: Vec<_> = blocks_at_finalized_height - .into_iter() - .filter(|h| h != &finalized_hash) - .map(|h| (h, finalized_number)) - .collect(); - - while let Some((dead_hash, dead_number)) = frontier.pop() { - let entry = backend.load_block_entry(&dead_hash)?; - backend.delete_block_entry(&dead_hash); - viable_leaves.remove(&dead_hash); - - // This does a few extra `clone`s but is unlikely to be - // a bottleneck. Code complexity is very low as a result. - let mut blocks_at_height = backend.load_blocks_by_number(dead_number)?; - blocks_at_height.retain(|h| h != &dead_hash); - backend.write_blocks_by_number(dead_number, blocks_at_height); - - // Add all children to the frontier. - let next_height = dead_number + 1; - frontier.extend( - entry.into_iter().flat_map(|e| e.children).map(|h| (h, next_height)) - ); - } - } - - // Visit and remove the finalized block, fetching its children. - let children_of_finalized = { - let finalized_entry = backend.load_block_entry(&finalized_hash)?; - backend.delete_block_entry(&finalized_hash); - viable_leaves.remove(&finalized_hash); - - finalized_entry.into_iter().flat_map(|e| e.children) - }; - - backend.write_leaves(viable_leaves); - - // Update the viability of each child. - for child in children_of_finalized { - if let Some(mut child) = backend.load_block_entry(&child)? { - // Finalized blocks are always viable. - child.viability.earliest_unviable_ancestor = None; - - propagate_viability_update(&mut backend, child)?; - } else { - tracing::debug!( - target: LOG_TARGET, - ?finalized_hash, - finalized_number, - child_hash = ?child, - "Missing child of finalized block", - ); - - // No need to do anything, but this is an inconsistent state. - } - } - - Ok(backend) -} - -/// Mark a block as approved and update the viability of itself and its -/// descendants accordingly. -pub(super) fn approve_block( - backend: &mut OverlayedBackend, - approved_hash: Hash, -) -> Result<(), Error> { - if let Some(mut entry) = backend.load_block_entry(&approved_hash)? { - let was_viable = entry.viability.is_viable(); - entry.viability.approval = Approval::Approved; - let is_viable = entry.viability.is_viable(); - - // Approval can change the viability in only one direction. - // If the viability has changed, then we propagate that to children - // and recalculate the viable leaf set. - if !was_viable && is_viable { - propagate_viability_update(backend, entry)?; - } else { - backend.write_block_entry(entry); - } - - } else { - tracing::debug!( - target: LOG_TARGET, - block_hash = ?approved_hash, - "Missing entry for freshly-approved block. Ignoring" - ); - } - - Ok(()) -} - -/// Check whether any blocks up to the given timestamp are stagnant and update -/// accordingly. -/// -/// This accepts a fresh backend and returns an overlay on top of it representing -/// all changes made. -// TODO https://github.com/paritytech/polkadot/issues/3293:: remove allow -#[allow(unused)] -pub(super) fn detect_stagnant<'a, B: 'a + Backend>( - backend: &'a B, - up_to: Timestamp, -) -> Result, Error> { - let stagnant_up_to = backend.load_stagnant_at_up_to(up_to)?; - let mut backend = OverlayedBackend::new(backend); - - // As this is in ascending order, only the earliest stagnant - // blocks will involve heavy viability propagations. - for (timestamp, maybe_stagnant) in stagnant_up_to { - backend.delete_stagnant_at(timestamp); - - for block_hash in maybe_stagnant { - if let Some(mut entry) = backend.load_block_entry(&block_hash)? { - let was_viable = entry.viability.is_viable(); - if let Approval::Unapproved = entry.viability.approval { - entry.viability.approval = Approval::Stagnant; - } - let is_viable = entry.viability.is_viable(); - - if was_viable && !is_viable { - propagate_viability_update(&mut backend, entry)?; - } else { - backend.write_block_entry(entry); - } - } - } - } - - Ok(backend) -} diff --git a/node/core/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml deleted file mode 100644 index f2ba0491005f..000000000000 --- a/node/core/dispute-coordinator/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "polkadot-node-core-dispute-coordinator" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -futures = "0.3.12" -tracing = "0.1.26" -parity-scale-codec = "2" -kvdb = "0.9.0" -derive_more = "0.99.14" -thiserror = "1.0.23" - -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } - -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -kvdb-memorydb = "0.9.0" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers"} -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -assert_matches = "1.4.0" diff --git a/node/core/dispute-coordinator/src/db/mod.rs b/node/core/dispute-coordinator/src/db/mod.rs deleted file mode 100644 index 9b79bd5bc74c..000000000000 --- a/node/core/dispute-coordinator/src/db/mod.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Database component for the dispute coordinator. - -pub(super) mod v1; diff --git a/node/core/dispute-coordinator/src/db/v1.rs b/node/core/dispute-coordinator/src/db/v1.rs deleted file mode 100644 index 2253b83c6192..000000000000 --- a/node/core/dispute-coordinator/src/db/v1.rs +++ /dev/null @@ -1,585 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! V1 database for the dispute coordinator. - -use polkadot_primitives::v1::{ - CandidateReceipt, ValidDisputeStatementKind, InvalidDisputeStatementKind, ValidatorIndex, - ValidatorSignature, SessionIndex, CandidateHash, -}; - -use kvdb::{KeyValueDB, DBTransaction}; -use parity_scale_codec::{Encode, Decode}; - -use crate::DISPUTE_WINDOW; - -const ACTIVE_DISPUTES_KEY: &[u8; 15] = b"active-disputes"; -const EARLIEST_SESSION_KEY: &[u8; 16] = b"earliest-session"; -const CANDIDATE_VOTES_SUBKEY: &[u8; 15] = b"candidate-votes"; - -fn candidate_votes_key(session: SessionIndex, candidate_hash: &CandidateHash) -> [u8; 15 + 4 + 32] { - let mut buf = [0u8; 15 + 4 + 32]; - buf[..15].copy_from_slice(CANDIDATE_VOTES_SUBKEY); - - // big-endian encoding is used to ensure lexicographic ordering. - buf[15..][..4].copy_from_slice(&session.to_be_bytes()); - candidate_hash.using_encoded(|s| buf[(15 + 4)..].copy_from_slice(s)); - - buf -} - -// Computes the upper lexicographic bound on DB keys for candidate votes with a given -// upper-exclusive bound on sessions. -fn candidate_votes_range_upper_bound(upper_exclusive: SessionIndex) -> [u8; 15 + 4] { - let mut buf = [0; 15 + 4]; - buf[..15].copy_from_slice(CANDIDATE_VOTES_SUBKEY); - // big-endian encoding is used to ensure lexicographic ordering. - buf[15..][..4].copy_from_slice(&upper_exclusive.to_be_bytes()); - - buf -} - -fn decode_candidate_votes_key(key: &[u8]) -> Option<(SessionIndex, CandidateHash)> { - if key.len() != 15 + 4 + 32 { - return None; - } - - let mut session_buf = [0; 4]; - session_buf.copy_from_slice(&key[15..][..4]); - let session = SessionIndex::from_be_bytes(session_buf); - - CandidateHash::decode(&mut &key[(15 + 4)..]).ok().map(|hash| (session, hash)) -} - -/// Column configuration information for the DB. -#[derive(Debug, Clone)] -pub struct ColumnConfiguration { - /// The column in the key-value DB where data is stored. - pub col_data: u32, -} - -/// Tracked votes on candidates, for the purposes of dispute resolution. -#[derive(Debug, Clone, Encode, Decode)] -pub struct CandidateVotes { - /// The receipt of the candidate itself. - pub candidate_receipt: CandidateReceipt, - /// Votes of validity, sorted by validator index. - pub valid: Vec<(ValidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, - /// Votes of invalidity, sorted by validator index. - pub invalid: Vec<(InvalidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, -} - -impl From for polkadot_node_primitives::CandidateVotes { - fn from(db_votes: CandidateVotes) -> polkadot_node_primitives::CandidateVotes { - polkadot_node_primitives::CandidateVotes { - candidate_receipt: db_votes.candidate_receipt, - valid: db_votes.valid, - invalid: db_votes.invalid, - } - } -} - -impl From for CandidateVotes { - fn from(primitive_votes: polkadot_node_primitives::CandidateVotes) -> CandidateVotes { - CandidateVotes { - candidate_receipt: primitive_votes.candidate_receipt, - valid: primitive_votes.valid, - invalid: primitive_votes.invalid, - } - } -} - -/// Meta-key for tracking active disputes. -#[derive(Debug, Default, Clone, Encode, Decode, PartialEq)] -pub struct ActiveDisputes { - /// All disputed candidates, sorted by session index and then by candidate hash. - pub disputed: Vec<(SessionIndex, CandidateHash)>, -} - -impl ActiveDisputes { - /// Whether the set of active disputes contains the given candidate. - pub(crate) fn contains( - &self, - session: SessionIndex, - candidate_hash: CandidateHash, - ) -> bool { - self.disputed.contains(&(session, candidate_hash)) - } - - /// Insert the session and candidate hash from the set of active disputes. - /// Returns 'true' if the entry was not already in the set. - pub(crate) fn insert( - &mut self, - session: SessionIndex, - candidate_hash: CandidateHash, - ) -> bool { - let new_entry = (session, candidate_hash); - - let pos = self.disputed.iter() - .take_while(|&e| &new_entry < e) - .count(); - if self.disputed.get(pos).map_or(false, |&e| new_entry == e) { - false - } else { - self.disputed.insert(pos, new_entry); - true - } - } - - /// Delete the session and candidate hash from the set of active disputes. - /// Returns 'true' if the entry was present. - pub(crate) fn delete( - &mut self, - session: SessionIndex, - candidate_hash: CandidateHash, - ) -> bool { - let new_entry = (session, candidate_hash); - - match self.disputed.iter().position(|e| &new_entry == e) { - None => false, - Some(pos) => { - self.disputed.remove(pos); - true - } - } - } -} - -/// Errors while accessing things from the DB. -#[derive(Debug, thiserror::Error)] -pub enum Error { - #[error(transparent)] - Io(#[from] std::io::Error), - #[error(transparent)] - Codec(#[from] parity_scale_codec::Error), -} - -/// Result alias for DB errors. -pub type Result = std::result::Result; - -fn load_decode(db: &dyn KeyValueDB, col_data: u32, key: &[u8]) - -> Result> -{ - match db.get(col_data, key)? { - None => Ok(None), - Some(raw) => D::decode(&mut &raw[..]) - .map(Some) - .map_err(Into::into), - } -} - -/// Load the candidate votes for the identified candidate under the given hash. -pub(crate) fn load_candidate_votes( - db: &dyn KeyValueDB, - config: &ColumnConfiguration, - session: SessionIndex, - candidate_hash: &CandidateHash, -) -> Result> { - load_decode(db, config.col_data, &candidate_votes_key(session, candidate_hash)) -} - -/// Load the earliest session, if any. -pub(crate) fn load_earliest_session( - db: &dyn KeyValueDB, - config: &ColumnConfiguration, -) -> Result> { - load_decode(db, config.col_data, EARLIEST_SESSION_KEY) -} - -/// Load the active disputes, if any. -pub(crate) fn load_active_disputes( - db: &dyn KeyValueDB, - config: &ColumnConfiguration, -) -> Result> { - load_decode(db, config.col_data, ACTIVE_DISPUTES_KEY) -} - -/// An atomic transaction to be commited to the underlying DB. -#[derive(Debug, Default, Clone)] -pub(crate) struct Transaction { - earliest_session: Option, - active_disputes: Option, - write_candidate_votes: Vec<(SessionIndex, CandidateHash, CandidateVotes)>, - delete_candidate_votes: Vec<(SessionIndex, CandidateHash)>, -} - -impl Transaction { - /// Prepare a write to the 'earliest session' field of the DB. - /// - /// Later calls to this function will override earlier ones. - pub(crate) fn put_earliest_session(&mut self, session: SessionIndex) { - self.earliest_session = Some(session); - } - - /// Prepare a write to the active disputes stored in the DB. - /// - /// Later calls to this function will override earlier ones. - pub(crate) fn put_active_disputes(&mut self, active: ActiveDisputes) { - self.active_disputes = Some(active); - } - - - /// Prepare a write of the candidate votes under the indicated candidate. - /// - /// Later calls to this function for the same candidate will override earlier ones. - /// Any calls to this function will be overridden by deletions of the same candidate. - pub(crate) fn put_candidate_votes( - &mut self, - session: SessionIndex, - candidate_hash: CandidateHash, - votes: CandidateVotes, - ) { - self.write_candidate_votes.push((session, candidate_hash, votes)) - } - - /// Prepare a deletion of the candidate votes under the indicated candidate. - /// - /// Any calls to this function will override writes to the same candidate. - pub(crate) fn delete_candidate_votes( - &mut self, - session: SessionIndex, - candidate_hash: CandidateHash, - ) { - self.delete_candidate_votes.push((session, candidate_hash)) - } - - /// Write the transaction atomically to the DB. - pub(crate) fn write(self, db: &dyn KeyValueDB, config: &ColumnConfiguration) -> Result<()> { - let mut tx = DBTransaction::new(); - - if let Some(s) = self.earliest_session { - tx.put_vec(config.col_data, EARLIEST_SESSION_KEY, s.encode()); - } - - if let Some(a) = self.active_disputes { - tx.put_vec(config.col_data, ACTIVE_DISPUTES_KEY, a.encode()); - } - - for (session, candidate_hash, votes) in self.write_candidate_votes { - tx.put_vec(config.col_data, &candidate_votes_key(session, &candidate_hash), votes.encode()); - } - - for (session, candidate_hash) in self.delete_candidate_votes { - tx.delete(config.col_data, &candidate_votes_key(session, &candidate_hash)); - } - - db.write(tx).map_err(Into::into) - } -} - -/// Maybe prune data in the DB based on the provided session index. -/// -/// This is intended to be called on every block, and as such will be used to populate the DB on -/// first launch. If the on-disk data does not need to be pruned, only a single storage read -/// will be performed. -/// -/// If one or more ancient sessions are pruned, all metadata on candidates within the ancient -/// session will be deleted. -pub(crate) fn note_current_session( - store: &dyn KeyValueDB, - config: &ColumnConfiguration, - current_session: SessionIndex, -) -> Result<()> { - let new_earliest = current_session.saturating_sub(DISPUTE_WINDOW); - let mut tx = Transaction::default(); - - match load_earliest_session(store, config)? { - None => { - // First launch - write new-earliest. - tx.put_earliest_session(new_earliest); - } - Some(prev_earliest) if new_earliest > prev_earliest => { - // Prune all data in the outdated sessions. - tx.put_earliest_session(new_earliest); - - // Clear active disputes metadata. - { - let mut active_disputes = load_active_disputes(store, config)?.unwrap_or_default(); - let prune_up_to = active_disputes.disputed.iter() - .take_while(|s| s.0 < new_earliest) - .count(); - - if prune_up_to > 0 { - let _ = active_disputes.disputed.drain(..prune_up_to); - tx.put_active_disputes(active_disputes); - } - } - - // Clear all candidate data with session less than the new earliest kept. - { - let end_prefix = candidate_votes_range_upper_bound(new_earliest); - - store.iter_with_prefix(config.col_data, CANDIDATE_VOTES_SUBKEY) - .take_while(|(k, _)| &k[..] < &end_prefix[..]) - .filter_map(|(k, _)| decode_candidate_votes_key(&k[..])) - .for_each(|(session, candidate_hash)| { - tx.delete_candidate_votes(session, candidate_hash); - }); - } - } - Some(_) => { - // nothing to do. - } - }; - - tx.write(store, config) -} - -#[cfg(test)] -mod tests { - use super::*; - use polkadot_primitives::v1::{Hash, Id as ParaId}; - - #[test] - fn candidate_votes_key_works() { - let session = 4; - let candidate = CandidateHash(Hash::repeat_byte(0x01)); - - let key = candidate_votes_key(session, &candidate); - - assert_eq!(&key[0..15], CANDIDATE_VOTES_SUBKEY); - assert_eq!(&key[15..19], &[0x00, 0x00, 0x00, 0x04]); - assert_eq!(&key[19..51], candidate.0.as_bytes()); - - assert_eq!( - decode_candidate_votes_key(&key[..]), - Some((session, candidate)), - ); - } - - #[test] - fn db_transaction() { - let store = kvdb_memorydb::create(1); - let config = ColumnConfiguration { col_data: 0 }; - - { - let mut tx = Transaction::default(); - - tx.put_earliest_session(0); - tx.put_earliest_session(1); - - tx.put_active_disputes(ActiveDisputes { - disputed: vec![ - (0, CandidateHash(Hash::repeat_byte(0))), - ], - }); - - tx.put_active_disputes(ActiveDisputes { - disputed: vec![ - (1, CandidateHash(Hash::repeat_byte(1))), - ], - }); - - tx.put_candidate_votes( - 1, - CandidateHash(Hash::repeat_byte(1)), - CandidateVotes { - candidate_receipt: Default::default(), - valid: Vec::new(), - invalid: Vec::new(), - }, - ); - tx.put_candidate_votes( - 1, - CandidateHash(Hash::repeat_byte(1)), - CandidateVotes { - candidate_receipt: { - let mut receipt = CandidateReceipt::default(); - receipt.descriptor.para_id = 5.into(); - - receipt - }, - valid: Vec::new(), - invalid: Vec::new(), - }, - ); - - tx.write(&store, &config).unwrap(); - } - - // Test that subsequent writes were written. - { - assert_eq!( - load_earliest_session(&store, &config).unwrap().unwrap(), - 1, - ); - - assert_eq!( - load_active_disputes(&store, &config).unwrap().unwrap(), - ActiveDisputes { - disputed: vec![ - (1, CandidateHash(Hash::repeat_byte(1))), - ], - }, - ); - - assert_eq!( - load_candidate_votes( - &store, - &config, - 1, - &CandidateHash(Hash::repeat_byte(1)) - ).unwrap().unwrap().candidate_receipt.descriptor.para_id, - ParaId::from(5), - ); - } - } - - #[test] - fn db_deletes_supersede_writes() { - let store = kvdb_memorydb::create(1); - let config = ColumnConfiguration { col_data: 0 }; - - { - let mut tx = Transaction::default(); - tx.put_candidate_votes( - 1, - CandidateHash(Hash::repeat_byte(1)), - CandidateVotes { - candidate_receipt: Default::default(), - valid: Vec::new(), - invalid: Vec::new(), - } - ); - - tx.write(&store, &config).unwrap(); - } - - assert_eq!( - load_candidate_votes( - &store, - &config, - 1, - &CandidateHash(Hash::repeat_byte(1)) - ).unwrap().unwrap().candidate_receipt.descriptor.para_id, - ParaId::from(0), - ); - - { - let mut tx = Transaction::default(); - tx.put_candidate_votes( - 1, - CandidateHash(Hash::repeat_byte(1)), - CandidateVotes { - candidate_receipt: { - let mut receipt = CandidateReceipt::default(); - receipt.descriptor.para_id = 5.into(); - - receipt - }, - valid: Vec::new(), - invalid: Vec::new(), - } - ); - - tx.delete_candidate_votes(1, CandidateHash(Hash::repeat_byte(1))); - - tx.write(&store, &config).unwrap(); - } - - assert!( - load_candidate_votes( - &store, - &config, - 1, - &CandidateHash(Hash::repeat_byte(1)) - ).unwrap().is_none() - ); - } - - #[test] - fn note_current_session_prunes_old() { - let store = kvdb_memorydb::create(1); - let config = ColumnConfiguration { col_data: 0 }; - - let hash_a = CandidateHash(Hash::repeat_byte(0x0a)); - let hash_b = CandidateHash(Hash::repeat_byte(0x0b)); - let hash_c = CandidateHash(Hash::repeat_byte(0x0c)); - let hash_d = CandidateHash(Hash::repeat_byte(0x0d)); - - let prev_earliest_session = 0; - let new_earliest_session = 5; - let current_session = 5 + DISPUTE_WINDOW; - - let very_old = 3; - let slightly_old = 4; - let very_recent = current_session - 1; - - let blank_candidate_votes = || CandidateVotes { - candidate_receipt: Default::default(), - valid: Vec::new(), - invalid: Vec::new(), - }; - - { - let mut tx = Transaction::default(); - tx.put_earliest_session(prev_earliest_session); - tx.put_active_disputes(ActiveDisputes { - disputed: vec![ - (very_old, hash_a), - (slightly_old, hash_b), - (new_earliest_session, hash_c), - (very_recent, hash_d), - ], - }); - - tx.put_candidate_votes( - very_old, - hash_a, - blank_candidate_votes(), - ); - - tx.put_candidate_votes( - slightly_old, - hash_b, - blank_candidate_votes(), - ); - - tx.put_candidate_votes( - new_earliest_session, - hash_c, - blank_candidate_votes(), - ); - - tx.put_candidate_votes( - very_recent, - hash_d, - blank_candidate_votes(), - ); - - tx.write(&store, &config).unwrap(); - } - - note_current_session(&store, &config, current_session).unwrap(); - - assert_eq!( - load_earliest_session(&store, &config).unwrap(), - Some(new_earliest_session), - ); - - assert_eq!( - load_active_disputes(&store, &config).unwrap().unwrap(), - ActiveDisputes { - disputed: vec![(new_earliest_session, hash_c), (very_recent, hash_d)], - }, - ); - - assert!(load_candidate_votes(&store, &config, very_old, &hash_a).unwrap().is_none()); - assert!(load_candidate_votes(&store, &config, slightly_old, &hash_b).unwrap().is_none()); - assert!(load_candidate_votes(&store, &config, new_earliest_session, &hash_c).unwrap().is_some()); - assert!(load_candidate_votes(&store, &config, very_recent, &hash_d).unwrap().is_some()); - } -} diff --git a/node/core/dispute-coordinator/src/lib.rs b/node/core/dispute-coordinator/src/lib.rs deleted file mode 100644 index 9d4daeeba7e4..000000000000 --- a/node/core/dispute-coordinator/src/lib.rs +++ /dev/null @@ -1,647 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the dispute coordinator subsystem. -//! -//! This is the central subsystem of the node-side components which participate in disputes. -//! This subsystem wraps a database which tracks all statements observed by all validators over some window of sessions. -//! Votes older than this session window are pruned. -//! -//! This subsystem will be the point which produce dispute votes, either positive or negative, based on locally-observed -//! validation results as well as a sink for votes received by other subsystems. When importing a dispute vote from -//! another node, this will trigger the dispute participation subsystem to recover and validate the block and call -//! back to this subsystem. - -use std::collections::HashSet; -use std::sync::Arc; - -use polkadot_node_primitives::{CandidateVotes, SignedDisputeStatement}; -use polkadot_node_subsystem::{ - messages::{ - DisputeCoordinatorMessage, ChainApiMessage, DisputeParticipationMessage, - }, - Subsystem, SubsystemContext, FromOverseer, OverseerSignal, SpawnedSubsystem, - SubsystemError, - errors::{ChainApiError, RuntimeApiError}, -}; -use polkadot_node_subsystem_util::rolling_session_window::{ - RollingSessionWindow, SessionWindowUpdate, -}; -use polkadot_primitives::v1::{ - SessionIndex, CandidateHash, Hash, CandidateReceipt, DisputeStatement, ValidatorIndex, - ValidatorSignature, BlockNumber, ValidatorPair, -}; - -use futures::prelude::*; -use futures::channel::oneshot; -use kvdb::KeyValueDB; -use parity_scale_codec::Error as CodecError; -use sc_keystore::LocalKeystore; - -use db::v1::ActiveDisputes; - -mod db; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::dispute-coordinator"; - -// It would be nice to draw this from the chain state, but we have no tools for it right now. -// On Polkadot this is 1 day, and on Kusama it's 6 hours. -const DISPUTE_WINDOW: SessionIndex = 6; - -struct State { - keystore: Arc, - highest_session: Option, - rolling_session_window: RollingSessionWindow, -} - -/// Configuration for the dispute coordinator subsystem. -#[derive(Debug, Clone, Copy)] -pub struct Config { - /// The data column in the store to use for dispute data. - pub col_data: u32, -} - -impl Config { - fn column_config(&self) -> db::v1::ColumnConfiguration { - db::v1::ColumnConfiguration { col_data: self.col_data } - } -} - -/// An implementation of the dispute coordinator subsystem. -pub struct DisputeCoordinatorSubsystem { - config: Config, - store: Arc, - keystore: Arc, -} - -impl DisputeCoordinatorSubsystem { - /// Create a new instance of the subsystem. - pub fn new( - store: Arc, - config: Config, - keystore: Arc, - ) -> Self { - DisputeCoordinatorSubsystem { store, config, keystore } - } -} - -impl Subsystem for DisputeCoordinatorSubsystem - where Context: SubsystemContext -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = run(self, ctx) - .map(|_| Ok(())) - .boxed(); - - SpawnedSubsystem { - name: "dispute-coordinator-subsystem", - future, - } - } -} - -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - RuntimeApi(#[from] RuntimeApiError), - - #[error(transparent)] - ChainApi(#[from] ChainApiError), - - #[error(transparent)] - Io(#[from] std::io::Error), - - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - - #[error(transparent)] - Subsystem(#[from] SubsystemError), - - #[error(transparent)] - Codec(#[from] CodecError), -} - -impl From for Error { - fn from(err: db::v1::Error) -> Self { - match err { - db::v1::Error::Io(io) => Self::Io(io), - db::v1::Error::Codec(e) => Self::Codec(e), - } - } -} - -impl Error { - fn trace(&self) { - match self { - // don't spam the log with spurious errors - Self::RuntimeApi(_) | - Self::Oneshot(_) => tracing::debug!(target: LOG_TARGET, err = ?self), - // it's worth reporting otherwise - _ => tracing::warn!(target: LOG_TARGET, err = ?self), - } - } -} - -async fn run(subsystem: DisputeCoordinatorSubsystem, mut ctx: Context) - where Context: SubsystemContext -{ - loop { - let res = run_iteration(&mut ctx, &subsystem).await; - match res { - Err(e) => { - e.trace(); - - if let Error::Subsystem(SubsystemError::Context(_)) = e { - break; - } - } - Ok(()) => { - tracing::info!(target: LOG_TARGET, "received `Conclude` signal, exiting"); - break; - } - } - } -} - -// Run the subsystem until an error is encountered or a `conclude` signal is received. -// Most errors are non-fatal and should lead to another call to this function. -// -// A return value of `Ok` indicates that an exit should be made, while non-fatal errors -// lead to another call to this function. -async fn run_iteration(ctx: &mut Context, subsystem: &DisputeCoordinatorSubsystem) - -> Result<(), Error> - where Context: SubsystemContext -{ - let DisputeCoordinatorSubsystem { ref store, ref keystore, ref config } = *subsystem; - let mut state = State { - keystore: keystore.clone(), - highest_session: None, - rolling_session_window: RollingSessionWindow::new(DISPUTE_WINDOW), - }; - - loop { - match ctx.recv().await? { - FromOverseer::Signal(OverseerSignal::Conclude) => { - return Ok(()) - } - FromOverseer::Signal(OverseerSignal::ActiveLeaves(update)) => { - handle_new_activations( - ctx, - &**store, - &mut state, - config, - update.activated.into_iter().map(|a| a.hash), - ).await? - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(_, _)) => {}, - FromOverseer::Communication { msg } => { - handle_incoming( - ctx, - &**store, - &mut state, - config, - msg, - ).await? - } - } - } -} - -async fn handle_new_activations( - ctx: &mut impl SubsystemContext, - store: &dyn KeyValueDB, - state: &mut State, - config: &Config, - new_activations: impl IntoIterator, -) -> Result<(), Error> { - for new_leaf in new_activations { - let block_header = { - let (tx, rx) = oneshot::channel(); - - ctx.send_message( - ChainApiMessage::BlockHeader(new_leaf, tx).into() - ).await; - - match rx.await?? { - None => continue, - Some(header) => header, - } - }; - - match state.rolling_session_window.cache_session_info_for_head( - ctx, - new_leaf, - &block_header, - ).await { - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Failed to update session cache for disputes", - ); - - continue - } - Ok(SessionWindowUpdate::Initialized { window_end, .. }) - | Ok(SessionWindowUpdate::Advanced { new_window_end: window_end, .. }) - => { - let session = window_end; - if state.highest_session.map_or(true, |s| s < session) { - tracing::trace!( - target: LOG_TARGET, - session, - "Observed new session. Pruning", - ); - - state.highest_session = Some(session); - - db::v1::note_current_session( - store, - &config.column_config(), - session, - )?; - } - } - _ => {} - } - - // TODO [after https://github.com/paritytech/polkadot/issues/3160]: chain rollbacks - } - - Ok(()) -} - -async fn handle_incoming( - ctx: &mut impl SubsystemContext, - store: &dyn KeyValueDB, - state: &mut State, - config: &Config, - message: DisputeCoordinatorMessage, -) -> Result<(), Error> { - match message { - DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt, - session, - statements, - } => { - handle_import_statements( - ctx, - store, - state, - config, - candidate_hash, - candidate_receipt, - session, - statements, - ).await?; - } - DisputeCoordinatorMessage::ActiveDisputes(rx) => { - let active_disputes = db::v1::load_active_disputes(store, &config.column_config())? - .map(|d| d.disputed) - .unwrap_or_default(); - - let _ = rx.send(active_disputes); - } - DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - rx - ) => { - let candidate_votes = db::v1::load_candidate_votes( - store, - &config.column_config(), - session, - &candidate_hash, - )?; - - let _ = rx.send(candidate_votes.map(Into::into)); - } - DisputeCoordinatorMessage::IssueLocalStatement( - session, - candidate_hash, - candidate_receipt, - valid, - ) => { - issue_local_statement( - ctx, - state, - store, - config, - candidate_hash, - candidate_receipt, - session, - valid, - ).await?; - } - DisputeCoordinatorMessage::DetermineUndisputedChain { - base_number, - block_descriptions, - tx, - } => { - let undisputed_chain = determine_undisputed_chain( - store, - &config, - base_number, - block_descriptions - )?; - - let _ = tx.send(undisputed_chain); - } - } - - Ok(()) -} - -fn insert_into_statement_vec( - vec: &mut Vec<(T, ValidatorIndex, ValidatorSignature)>, - tag: T, - val_index: ValidatorIndex, - val_signature: ValidatorSignature, -) { - let pos = match vec.binary_search_by_key(&val_index, |x| x.1) { - Ok(_) => return, // no duplicates needed. - Err(p) => p, - }; - - vec.insert(pos, (tag, val_index, val_signature)); -} - -async fn handle_import_statements( - ctx: &mut impl SubsystemContext, - store: &dyn KeyValueDB, - state: &mut State, - config: &Config, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, - statements: Vec<(SignedDisputeStatement, ValidatorIndex)>, -) -> Result<(), Error> { - if state.highest_session.map_or(true, |h| session + DISPUTE_WINDOW < h) { - return Ok(()); - } - - let validators = match state.rolling_session_window.session_info(session) { - None => { - tracing::warn!( - target: LOG_TARGET, - session, - "Missing info for session which has an active dispute", - ); - - return Ok(()) - } - Some(info) => info.validators.clone(), - }; - - let n_validators = validators.len(); - - let supermajority_threshold = polkadot_primitives::v1::supermajority_threshold(n_validators); - - let mut votes = db::v1::load_candidate_votes( - store, - &config.column_config(), - session, - &candidate_hash - )? - .map(CandidateVotes::from) - .unwrap_or_else(|| CandidateVotes { - candidate_receipt: candidate_receipt.clone(), - valid: Vec::new(), - invalid: Vec::new(), - }); - - let was_undisputed = votes.valid.is_empty() || votes.invalid.is_empty(); - - // Update candidate votes. - for (statement, val_index) in statements { - if validators.get(val_index.0 as usize) - .map_or(true, |v| v != statement.validator_public()) - { - tracing::debug!( - target: LOG_TARGET, - ?val_index, - session, - claimed_key = ?statement.validator_public(), - "Validator index doesn't match claimed key", - ); - - continue - } - - match statement.statement().clone() { - DisputeStatement::Valid(valid_kind) => { - insert_into_statement_vec( - &mut votes.valid, - valid_kind, - val_index, - statement.validator_signature().clone(), - ); - } - DisputeStatement::Invalid(invalid_kind) => { - insert_into_statement_vec( - &mut votes.invalid, - invalid_kind, - val_index, - statement.validator_signature().clone(), - ); - } - } - } - - // Check if newly disputed. - let is_disputed = !votes.valid.is_empty() && !votes.invalid.is_empty(); - let freshly_disputed = is_disputed && was_undisputed; - let already_disputed = is_disputed && !was_undisputed; - let concluded_valid = votes.valid.len() >= supermajority_threshold; - - let mut tx = db::v1::Transaction::default(); - - if freshly_disputed && !concluded_valid { - // add to active disputes and begin local participation. - update_active_disputes( - store, - config, - &mut tx, - |active| active.insert(session, candidate_hash), - )?; - - ctx.send_message(DisputeParticipationMessage::Participate { - candidate_hash, - candidate_receipt, - session, - n_validators: n_validators as u32, - }.into()).await; - } - - if concluded_valid && already_disputed { - // remove from active disputes. - update_active_disputes( - store, - config, - &mut tx, - |active| active.delete(session, candidate_hash), - )?; - } - - tx.put_candidate_votes(session, candidate_hash, votes.into()); - tx.write(store, &config.column_config())?; - - Ok(()) -} - -fn update_active_disputes( - store: &dyn KeyValueDB, - config: &Config, - tx: &mut db::v1::Transaction, - with_active: impl FnOnce(&mut ActiveDisputes) -> bool, -) -> Result<(), Error> { - let mut active_disputes = db::v1::load_active_disputes(store, &config.column_config())? - .unwrap_or_default(); - - if with_active(&mut active_disputes) { - tx.put_active_disputes(active_disputes); - } - - Ok(()) -} - -async fn issue_local_statement( - ctx: &mut impl SubsystemContext, - state: &mut State, - store: &dyn KeyValueDB, - config: &Config, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, - valid: bool, -) -> Result<(), Error> { - // Load session info. - let validators = match state.rolling_session_window.session_info(session) { - None => { - tracing::warn!( - target: LOG_TARGET, - session, - "Missing info for session which has an active dispute", - ); - - return Ok(()) - } - Some(info) => info.validators.clone(), - }; - - let votes = db::v1::load_candidate_votes( - store, - &config.column_config(), - session, - &candidate_hash - )? - .map(CandidateVotes::from) - .unwrap_or_else(|| CandidateVotes { - candidate_receipt: candidate_receipt.clone(), - valid: Vec::new(), - invalid: Vec::new(), - }); - - // Sign a statement for each validator index we control which has - // not already voted. This should generally be maximum 1 statement. - let voted_indices = votes.voted_indices(); - let mut statements = Vec::new(); - - let voted_indices: HashSet<_> = voted_indices.into_iter().collect(); - for (index, validator) in validators.iter().enumerate() { - let index = ValidatorIndex(index as _); - if voted_indices.contains(&index) { continue } - if state.keystore.key_pair::(validator).ok().flatten().is_none() { - continue - } - - let keystore = state.keystore.clone() as Arc<_>; - let res = SignedDisputeStatement::sign_explicit( - &keystore, - valid, - candidate_hash, - session, - validator.clone(), - ).await; - - match res { - Ok(Some(signed_dispute_statement)) => { - statements.push((signed_dispute_statement, index)); - } - Ok(None) => {} - Err(e) => { - tracing::error!( - target: LOG_TARGET, - err = ?e, - "Encountered keystore error while signing dispute statement", - ); - } - } - } - - // Do import - if !statements.is_empty() { - handle_import_statements( - ctx, - store, - state, - config, - candidate_hash, - candidate_receipt, - session, - statements, - ).await?; - } - - Ok(()) -} - -fn determine_undisputed_chain( - store: &dyn KeyValueDB, - config: &Config, - base_number: BlockNumber, - block_descriptions: Vec<(Hash, SessionIndex, Vec)>, -) -> Result, Error> { - let last = block_descriptions.last() - .map(|e| (base_number + block_descriptions.len() as BlockNumber, e.0)); - - // Fast path for no disputes. - let active_disputes = match db::v1::load_active_disputes(store, &config.column_config())? { - None => return Ok(last), - Some(a) if a.disputed.is_empty() => return Ok(last), - Some(a) => a, - }; - - for (i, (_, session, candidates)) in block_descriptions.iter().enumerate() { - if candidates.iter().any(|c| active_disputes.contains(*session, *c)) { - if i == 0 { - return Ok(None); - } else { - return Ok(Some(( - base_number + i as BlockNumber, - block_descriptions[i - 1].0, - ))); - } - } - } - - Ok(last) -} diff --git a/node/core/dispute-coordinator/src/tests.rs b/node/core/dispute-coordinator/src/tests.rs deleted file mode 100644 index dc8c93de968d..000000000000 --- a/node/core/dispute-coordinator/src/tests.rs +++ /dev/null @@ -1,706 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - - -use super::*; -use polkadot_primitives::v1::{BlakeTwo256, HashT, ValidatorId, Header, SessionInfo}; -use polkadot_node_subsystem::{jaeger, ActiveLeavesUpdate, ActivatedLeaf, LeafStatus}; -use polkadot_node_subsystem::messages::{ - AllMessages, ChainApiMessage, RuntimeApiMessage, RuntimeApiRequest, -}; -use polkadot_node_subsystem_test_helpers::{make_subsystem_context, TestSubsystemContextHandle}; -use sp_core::testing::TaskExecutor; -use sp_keyring::Sr25519Keyring; -use sp_keystore::{SyncCryptoStore, SyncCryptoStorePtr}; -use futures::future::{self, BoxFuture}; -use parity_scale_codec::Encode; -use assert_matches::assert_matches; - -// sets up a keystore with the given keyring accounts. -fn make_keystore(accounts: &[Sr25519Keyring]) -> LocalKeystore { - let store = LocalKeystore::in_memory(); - - for s in accounts.iter().copied().map(|k| k.to_seed()) { - store.sr25519_generate_new( - polkadot_primitives::v1::PARACHAIN_KEY_TYPE_ID, - Some(s.as_str()), - ).unwrap(); - } - - store -} - -fn session_to_hash(session: SessionIndex, extra: impl Encode) -> Hash { - BlakeTwo256::hash_of(&(session, extra)) -} - -type VirtualOverseer = TestSubsystemContextHandle; - -struct TestState { - validators: Vec, - validator_public: Vec, - validator_groups: Vec>, - master_keystore: Arc, - subsystem_keystore: Arc, - db: Arc, - config: Config, -} - -impl Default for TestState { - fn default() -> TestState { - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Eve, - Sr25519Keyring::One, - ]; - - let validator_public = validators.iter() - .map(|k| ValidatorId::from(k.public())) - .collect(); - - let validator_groups = vec![ - vec![ValidatorIndex(0), ValidatorIndex(1)], - vec![ValidatorIndex(2), ValidatorIndex(3)], - vec![ValidatorIndex(4), ValidatorIndex(5)], - ]; - - let master_keystore = make_keystore(&validators).into(); - let subsystem_keystore = make_keystore(&[Sr25519Keyring::Alice]).into(); - - let db = Arc::new(kvdb_memorydb::create(1)); - let config = Config { - col_data: 0, - }; - - TestState { - validators, - validator_public, - validator_groups, - master_keystore, - subsystem_keystore, - db, - config, - } - } -} - -impl TestState { - async fn activate_leaf_at_session( - &self, - virtual_overseer: &mut VirtualOverseer, - session: SessionIndex, - block_number: BlockNumber, - ) { - assert!(block_number > 0); - - let parent_hash = session_to_hash(session, b"parent"); - let block_header = Header { - parent_hash, - number: block_number, - digest: Default::default(), - state_root: Default::default(), - extrinsics_root: Default::default(), - }; - let block_hash = block_header.hash(); - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: block_hash, - span: Arc::new(jaeger::Span::Disabled), - number: block_number, - status: LeafStatus::Fresh, - }) - ))).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - assert_eq!(h, block_hash); - let _ = tx.send(Ok(Some(block_header))); - } - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(h, parent_hash); - let _ = tx.send(Ok(session)); - } - ); - - loop { - // answer session info queries until the current session is reached. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(session_index, tx), - )) => { - assert_eq!(h, block_hash); - - let _ = tx.send(Ok(Some(self.session_info()))); - if session_index == session { break } - } - ) - } - } - - fn session_info(&self) -> SessionInfo { - let discovery_keys = self.validators.iter() - .map(|k| <_>::from(k.public())) - .collect(); - - let assignment_keys = self.validators.iter() - .map(|k| <_>::from(k.public())) - .collect(); - - SessionInfo { - validators: self.validator_public.clone(), - discovery_keys, - assignment_keys, - validator_groups: self.validator_groups.clone(), - n_cores: self.validator_groups.len() as _, - zeroth_delay_tranche_width: 0, - relay_vrf_modulo_samples: 1, - n_delay_tranches: 100, - no_show_slots: 1, - needed_approvals: 10, - } - } - - async fn issue_statement_with_index( - &self, - index: usize, - candidate_hash: CandidateHash, - session: SessionIndex, - valid: bool, - ) -> SignedDisputeStatement { - let public = self.validator_public[index].clone(); - - let keystore = self.master_keystore.clone() as SyncCryptoStorePtr; - - SignedDisputeStatement::sign_explicit( - &keystore, - valid, - candidate_hash, - session, - public, - ).await.unwrap().unwrap() - } -} - -fn test_harness(test: F) - where F: FnOnce(TestState, VirtualOverseer) -> BoxFuture<'static, ()> -{ - let (ctx, ctx_handle) = make_subsystem_context(TaskExecutor::new()); - - let state = TestState::default(); - let subsystem = DisputeCoordinatorSubsystem::new( - state.db.clone(), - state.config.clone(), - state.subsystem_keystore.clone(), - ); - - let subsystem_task = run(subsystem, ctx); - let test_task = test(state, ctx_handle); - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn conflicting_votes_lead_to_dispute_participation() { - test_harness(|test_state, mut virtual_overseer| Box::pin(async move { - let session = 1; - - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); - - test_state.activate_leaf_at_session( - &mut virtual_overseer, - session, - 1, - ).await; - - let valid_vote = test_state.issue_statement_with_index( - 0, - candidate_hash, - session, - true, - ).await; - - let invalid_vote = test_state.issue_statement_with_index( - 1, - candidate_hash, - session, - false, - ).await; - - let invalid_vote_2 = test_state.issue_statement_with_index( - 2, - candidate_hash, - session, - false, - ).await; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote, ValidatorIndex(0)), - (invalid_vote, ValidatorIndex(1)), - ], - }, - }).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeParticipation(DisputeParticipationMessage::Participate { - candidate_hash: c_hash, - candidate_receipt: c_receipt, - session: s, - n_validators, - }) => { - assert_eq!(c_hash, candidate_hash); - assert_eq!(c_receipt, candidate_receipt); - assert_eq!(s, session); - assert_eq!(n_validators, test_state.validators.len() as u32); - } - ); - - { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }).await; - - assert_eq!(rx.await.unwrap(), vec![(session, candidate_hash)]); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - tx, - ), - }).await; - - let votes = rx.await.unwrap().unwrap(); - assert_eq!(votes.valid.len(), 1); - assert_eq!(votes.invalid.len(), 1); - } - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (invalid_vote_2, ValidatorIndex(2)), - ], - }, - }).await; - - { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - tx, - ), - }).await; - - let votes = rx.await.unwrap().unwrap(); - assert_eq!(votes.valid.len(), 1); - assert_eq!(votes.invalid.len(), 2); - } - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - - // This confirms that the second vote doesn't lead to participation again. - assert!(virtual_overseer.try_recv().await.is_none()); - })); -} - -#[test] -fn positive_votes_dont_trigger_participation() { - test_harness(|test_state, mut virtual_overseer| Box::pin(async move { - let session = 1; - - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); - - test_state.activate_leaf_at_session( - &mut virtual_overseer, - session, - 1, - ).await; - - let valid_vote = test_state.issue_statement_with_index( - 0, - candidate_hash, - session, - true, - ).await; - - let valid_vote_2 = test_state.issue_statement_with_index( - 1, - candidate_hash, - session, - true, - ).await; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote, ValidatorIndex(0)), - ], - }, - }).await; - - { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }).await; - - assert!(rx.await.unwrap().is_empty()); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - tx, - ), - }).await; - - let votes = rx.await.unwrap().unwrap(); - assert_eq!(votes.valid.len(), 1); - assert!(votes.invalid.is_empty()); - } - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote_2, ValidatorIndex(1)), - ], - }, - }).await; - - { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }).await; - - assert!(rx.await.unwrap().is_empty()); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - tx, - ), - }).await; - - let votes = rx.await.unwrap().unwrap(); - assert_eq!(votes.valid.len(), 2); - assert!(votes.invalid.is_empty()); - } - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - - // This confirms that no participation request is made. - assert!(virtual_overseer.try_recv().await.is_none()); - })); -} - -#[test] -fn wrong_validator_index_is_ignored() { - test_harness(|test_state, mut virtual_overseer| Box::pin(async move { - let session = 1; - - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); - - test_state.activate_leaf_at_session( - &mut virtual_overseer, - session, - 1, - ).await; - - let valid_vote = test_state.issue_statement_with_index( - 0, - candidate_hash, - session, - true, - ).await; - - let invalid_vote = test_state.issue_statement_with_index( - 1, - candidate_hash, - session, - false, - ).await; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote, ValidatorIndex(1)), - (invalid_vote, ValidatorIndex(0)), - ], - }, - }).await; - - { - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }).await; - - assert!(rx.await.unwrap().is_empty()); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::QueryCandidateVotes( - session, - candidate_hash, - tx, - ), - }).await; - - let votes = rx.await.unwrap().unwrap(); - assert!(votes.valid.is_empty()); - assert!(votes.invalid.is_empty()); - } - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - - // This confirms that no participation request is made. - assert!(virtual_overseer.try_recv().await.is_none()); - })); -} - -#[test] -fn finality_votes_ignore_disputed_candidates() { - test_harness(|test_state, mut virtual_overseer| Box::pin(async move { - let session = 1; - - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); - - test_state.activate_leaf_at_session( - &mut virtual_overseer, - session, - 1, - ).await; - - let valid_vote = test_state.issue_statement_with_index( - 0, - candidate_hash, - session, - true, - ).await; - - let invalid_vote = test_state.issue_statement_with_index( - 1, - candidate_hash, - session, - false, - ).await; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote, ValidatorIndex(0)), - (invalid_vote, ValidatorIndex(1)), - ], - }, - }).await; - let _ = virtual_overseer.recv().await; - - { - let (tx, rx) = oneshot::channel(); - - let block_hash_a = Hash::repeat_byte(0x0a); - let block_hash_b = Hash::repeat_byte(0x0b); - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::DetermineUndisputedChain { - base_number: 10, - block_descriptions: vec![ - (block_hash_a, session, vec![candidate_hash]), - ], - tx, - }, - }).await; - - assert!(rx.await.unwrap().is_none()); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::DetermineUndisputedChain { - base_number: 10, - block_descriptions: vec![ - (block_hash_a, session, vec![]), - (block_hash_b, session, vec![candidate_hash]), - ], - tx, - }, - }).await; - - assert_eq!(rx.await.unwrap(), Some((11, block_hash_a))); - } - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - assert!(virtual_overseer.try_recv().await.is_none()); - })); -} - -#[test] -fn supermajority_valid_dispute_may_be_finalized() { - test_harness(|test_state, mut virtual_overseer| Box::pin(async move { - let session = 1; - - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); - - test_state.activate_leaf_at_session( - &mut virtual_overseer, - session, - 1, - ).await; - - let supermajority_threshold = polkadot_primitives::v1::supermajority_threshold( - test_state.validators.len() - ); - - let valid_vote = test_state.issue_statement_with_index( - 0, - candidate_hash, - session, - true, - ).await; - - let invalid_vote = test_state.issue_statement_with_index( - 1, - candidate_hash, - session, - false, - ).await; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (valid_vote, ValidatorIndex(0)), - (invalid_vote, ValidatorIndex(1)), - ], - }, - }).await; - - let _ = virtual_overseer.recv().await; - - let mut statements = Vec::new(); - for i in (0..supermajority_threshold - 1).map(|i| i + 2) { - let vote = test_state.issue_statement_with_index( - i, - candidate_hash, - session, - true, - ).await; - - statements.push((vote, ValidatorIndex(i as _))); - }; - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements, - }, - }).await; - - { - let (tx, rx) = oneshot::channel(); - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }).await; - - assert!(rx.await.unwrap().is_empty()); - - let (tx, rx) = oneshot::channel(); - - let block_hash_a = Hash::repeat_byte(0x0a); - let block_hash_b = Hash::repeat_byte(0x0b); - - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::DetermineUndisputedChain { - base_number: 10, - block_descriptions: vec![ - (block_hash_a, session, vec![candidate_hash]), - ], - tx, - }, - }).await; - - assert_eq!(rx.await.unwrap(), Some((11, block_hash_a))); - - let (tx, rx) = oneshot::channel(); - virtual_overseer.send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::DetermineUndisputedChain { - base_number: 10, - block_descriptions: vec![ - (block_hash_a, session, vec![]), - (block_hash_b, session, vec![candidate_hash]), - ], - tx, - }, - }).await; - - assert_eq!(rx.await.unwrap(), Some((12, block_hash_b))); - } - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - assert!(virtual_overseer.try_recv().await.is_none()); - })); -} diff --git a/node/core/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml deleted file mode 100644 index 7de5c195b6d7..000000000000 --- a/node/core/dispute-participation/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "polkadot-node-core-dispute-participation" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.12" -thiserror = "1.0.23" -tracing = "0.1.26" - -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-primitives = { path = "../../../primitives" } - -[dev-dependencies] -assert_matches = "1.5.0" -parity-scale-codec = "2.0.0" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers"} -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/dispute-participation/src/lib.rs b/node/core/dispute-participation/src/lib.rs deleted file mode 100644 index 19bc56a020a6..000000000000 --- a/node/core/dispute-participation/src/lib.rs +++ /dev/null @@ -1,372 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the dispute participation subsystem. -//! -//! This subsystem is responsible for actually participating in disputes: when -//! notified of a dispute, we recover the candidate data, validate the -//! candidate, and cast our vote in the dispute. - -use futures::channel::oneshot; -use futures::prelude::*; - -use polkadot_node_primitives::ValidationResult; -use polkadot_node_subsystem::{ - errors::{RecoveryError, RuntimeApiError}, - messages::{ - AllMessages, AvailabilityRecoveryMessage, AvailabilityStoreMessage, - CandidateValidationMessage, DisputeCoordinatorMessage, DisputeParticipationMessage, - RuntimeApiMessage, RuntimeApiRequest, - }, - ActiveLeavesUpdate, FromOverseer, OverseerSignal, SpawnedSubsystem, Subsystem, - SubsystemContext, SubsystemError, -}; -use polkadot_primitives::v1::{BlockNumber, CandidateHash, CandidateReceipt, Hash, SessionIndex}; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::dispute-participation"; - -struct State { - recent_block: Option<(BlockNumber, Hash)>, -} - -/// An implementation of the dispute participation subsystem. -pub struct DisputeParticipationSubsystem; - -impl DisputeParticipationSubsystem { - /// Create a new instance of the subsystem. - pub fn new() -> Self { - DisputeParticipationSubsystem - } -} - -impl Subsystem for DisputeParticipationSubsystem -where - Context: SubsystemContext, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = run(ctx).map(|_| Ok(())).boxed(); - - SpawnedSubsystem { - name: "dispute-participation-subsystem", - future, - } - } -} - -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - RuntimeApi(#[from] RuntimeApiError), - - #[error(transparent)] - Subsystem(#[from] SubsystemError), - - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - - #[error(transparent)] - Participation(#[from] ParticipationError), -} - -#[derive(Debug, thiserror::Error)] -pub enum ParticipationError { - #[error("Missing recent block state to participate in dispute")] - MissingRecentBlockState, - #[error("Failed to recover available data for candidate {0}")] - MissingAvailableData(CandidateHash), - #[error("Failed to recover validation code for candidate {0}")] - MissingValidationCode(CandidateHash), -} - -impl Error { - fn trace(&self) { - match self { - // don't spam the log with spurious errors - Self::RuntimeApi(_) | Self::Oneshot(_) => { - tracing::debug!(target: LOG_TARGET, err = ?self) - } - // it's worth reporting otherwise - _ => tracing::warn!(target: LOG_TARGET, err = ?self), - } - } -} - -async fn run(mut ctx: Context) -where - Context: SubsystemContext, -{ - let mut state = State { recent_block: None }; - - loop { - match ctx.recv().await { - Err(_) => return, - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => { - tracing::info!(target: LOG_TARGET, "Received `Conclude` signal, exiting"); - return; - } - Ok(FromOverseer::Signal(OverseerSignal::BlockFinalized(_, _))) => {} - Ok(FromOverseer::Signal(OverseerSignal::ActiveLeaves(update))) => { - update_state(&mut state, update); - } - Ok(FromOverseer::Communication { msg }) => { - if let Err(err) = handle_incoming(&mut ctx, &mut state, msg).await { - err.trace(); - if let Error::Subsystem(SubsystemError::Context(_)) = err { - return; - } - } - } - } - } -} - -fn update_state(state: &mut State, update: ActiveLeavesUpdate) { - for active in update.activated { - if state.recent_block.map_or(true, |s| active.number > s.0) { - state.recent_block = Some((active.number, active.hash)); - } - } -} - -async fn handle_incoming( - ctx: &mut impl SubsystemContext, - state: &mut State, - message: DisputeParticipationMessage, -) -> Result<(), Error> { - match message { - DisputeParticipationMessage::Participate { - candidate_hash, - candidate_receipt, - session, - n_validators, - } => { - if let Some((_, block_hash)) = state.recent_block { - participate( - ctx, - block_hash, - candidate_hash, - candidate_receipt, - session, - n_validators, - ) - .await - } else { - return Err(ParticipationError::MissingRecentBlockState.into()); - } - } - } -} - -async fn participate( - ctx: &mut impl SubsystemContext, - block_hash: Hash, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, - n_validators: u32, -) -> Result<(), Error> { - let (recover_available_data_tx, recover_available_data_rx) = oneshot::channel(); - let (code_tx, code_rx) = oneshot::channel(); - let (store_available_data_tx, store_available_data_rx) = oneshot::channel(); - let (validation_tx, validation_rx) = oneshot::channel(); - - // in order to validate a candidate we need to start by recovering the - // available data - ctx.send_message( - AvailabilityRecoveryMessage::RecoverAvailableData( - candidate_receipt.clone(), - session, - None, - recover_available_data_tx, - ) - .into(), - ) - .await; - - let available_data = match recover_available_data_rx.await? { - Ok(data) => data, - Err(RecoveryError::Invalid) => { - // the available data was recovered but it is invalid, therefore we'll - // vote negatively for the candidate dispute - cast_invalid_vote(ctx, candidate_hash, candidate_receipt, session).await; - return Ok(()); - } - Err(RecoveryError::Unavailable) => { - return Err(ParticipationError::MissingAvailableData(candidate_hash).into()); - } - }; - - // we also need to fetch the validation code which we can reference by its - // hash as taken from the candidate descriptor - ctx.send_message( - RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::ValidationCodeByHash( - candidate_receipt.descriptor.validation_code_hash, - code_tx, - ), - ) - .into(), - ) - .await; - - let validation_code = match code_rx.await?? { - Some(code) => code, - None => { - tracing::warn!( - target: LOG_TARGET, - "Validation code unavailable for code hash {:?} in the state of block {:?}", - candidate_receipt.descriptor.validation_code_hash, - block_hash, - ); - - return Err(ParticipationError::MissingValidationCode(candidate_hash).into()); - } - }; - - // we dispatch a request to store the available data for the candidate. we - // want to maximize data availability for other potential checkers involved - // in the dispute - ctx.send_message( - AvailabilityStoreMessage::StoreAvailableData( - candidate_hash, - None, - n_validators, - available_data.clone(), - store_available_data_tx, - ) - .into(), - ) - .await; - - match store_available_data_rx.await? { - Err(_) => { - tracing::warn!( - target: LOG_TARGET, - "Failed to store available data for candidate {:?}", - candidate_hash, - ); - } - Ok(()) => {} - } - - // we issue a request to validate the candidate with the provided exhaustive - // parameters - ctx.send_message( - CandidateValidationMessage::ValidateFromExhaustive( - available_data.validation_data, - validation_code, - candidate_receipt.descriptor.clone(), - available_data.pov, - validation_tx, - ) - .into(), - ) - .await; - - // we cast votes (either positive or negative) depending on the outcome of - // the validation and if valid, whether the commitments hash matches - match validation_rx.await? { - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - "Candidate {:?} validation failed with: {:?}", - candidate_receipt.hash(), - err, - ); - - cast_invalid_vote(ctx, candidate_hash, candidate_receipt, session).await; - } - Ok(ValidationResult::Invalid(invalid)) => { - tracing::warn!( - target: LOG_TARGET, - "Candidate {:?} considered invalid: {:?}", - candidate_hash, - invalid, - ); - - cast_invalid_vote(ctx, candidate_hash, candidate_receipt, session).await; - } - Ok(ValidationResult::Valid(commitments, _)) => { - if commitments.hash() != candidate_receipt.commitments_hash { - tracing::warn!( - target: LOG_TARGET, - expected = ?candidate_receipt.commitments_hash, - got = ?commitments.hash(), - "Candidate is valid but commitments hash doesn't match", - ); - - cast_invalid_vote(ctx, candidate_hash, candidate_receipt, session).await; - } else { - cast_valid_vote(ctx, candidate_hash, candidate_receipt, session).await; - } - } - } - - Ok(()) -} - -async fn cast_valid_vote( - ctx: &mut impl SubsystemContext, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, -) { - tracing::info!( - target: LOG_TARGET, - "Casting valid vote in dispute for candidate {:?}", - candidate_hash, - ); - - issue_local_statement(ctx, candidate_hash, candidate_receipt, session, true).await; -} - -async fn cast_invalid_vote( - ctx: &mut impl SubsystemContext, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, -) { - tracing::info!( - target: LOG_TARGET, - "Casting invalid vote in dispute for candidate {:?}", - candidate_hash, - ); - - issue_local_statement(ctx, candidate_hash, candidate_receipt, session, false).await; -} - -async fn issue_local_statement( - ctx: &mut impl SubsystemContext, - candidate_hash: CandidateHash, - candidate_receipt: CandidateReceipt, - session: SessionIndex, - valid: bool, -) { - ctx.send_message(AllMessages::DisputeCoordinator( - DisputeCoordinatorMessage::IssueLocalStatement( - session, - candidate_hash, - candidate_receipt, - valid, - ), - )) - .await -} diff --git a/node/core/dispute-participation/src/tests.rs b/node/core/dispute-participation/src/tests.rs deleted file mode 100644 index 2b086c43d179..000000000000 --- a/node/core/dispute-participation/src/tests.rs +++ /dev/null @@ -1,425 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use assert_matches::assert_matches; -use futures::future::{self, BoxFuture}; -use std::sync::Arc; - -use sp_core::testing::TaskExecutor; - -use super::*; -use parity_scale_codec::Encode; -use polkadot_node_primitives::{AvailableData, BlockData, InvalidCandidate, PoV}; -use polkadot_node_subsystem::{ - jaeger, messages::ValidationFailed, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, -}; -use polkadot_node_subsystem_test_helpers::{make_subsystem_context, TestSubsystemContextHandle}; -use polkadot_primitives::v1::{BlakeTwo256, CandidateCommitments, HashT, Header, ValidationCode}; - -type VirtualOverseer = TestSubsystemContextHandle; - -fn test_harness(test: F) -where - F: FnOnce(VirtualOverseer) -> BoxFuture<'static, VirtualOverseer>, -{ - let (ctx, ctx_handle) = make_subsystem_context(TaskExecutor::new()); - - let subsystem = DisputeParticipationSubsystem::new(); - let spawned_subsystem = subsystem.start(ctx); - let test_future = test(ctx_handle); - - let (subsystem_result, _) = - futures::executor::block_on(future::join(spawned_subsystem.future, async move { - let mut ctx_handle = test_future.await; - ctx_handle - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .await; - - // no further request is received by the overseer which means that - // no further attempt to participate was made - assert!(ctx_handle.try_recv().await.is_none()); - })); - - subsystem_result.unwrap(); -} - -async fn activate_leaf(virtual_overseer: &mut VirtualOverseer, block_number: BlockNumber) { - let block_header = Header { - parent_hash: BlakeTwo256::hash(&block_number.encode()), - number: block_number, - digest: Default::default(), - state_root: Default::default(), - extrinsics_root: Default::default(), - }; - - let block_hash = block_header.hash(); - - virtual_overseer - .send(FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: block_hash, - span: Arc::new(jaeger::Span::Disabled), - number: block_number, - status: LeafStatus::Fresh, - }), - ))) - .await; -} - -async fn participate(virtual_overseer: &mut VirtualOverseer) { - let commitments = CandidateCommitments::default(); - let candidate_receipt = { - let mut receipt = CandidateReceipt::default(); - receipt.commitments_hash = commitments.hash(); - receipt - }; - let candidate_hash = candidate_receipt.hash(); - let session = 1; - let n_validators = 10; - - virtual_overseer - .send(FromOverseer::Communication { - msg: DisputeParticipationMessage::Participate { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - n_validators, - }, - }) - .await; -} - -async fn recover_available_data(virtual_overseer: &mut VirtualOverseer) { - let pov_block = PoV { - block_data: BlockData(Vec::new()), - }; - - let available_data = AvailableData { - pov: Arc::new(pov_block), - validation_data: Default::default(), - }; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityRecovery( - AvailabilityRecoveryMessage::RecoverAvailableData(_, _, _, tx) - ) => { - tx.send(Ok(available_data)).unwrap(); - }, - "overseer did not receive recover available data message", - ); -} - -async fn fetch_validation_code(virtual_overseer: &mut VirtualOverseer) { - let validation_code = ValidationCode(Vec::new()); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::ValidationCodeByHash( - _, - tx, - ) - )) => { - tx.send(Ok(Some(validation_code))).unwrap(); - }, - "overseer did not receive runtime api request for validation code", - ); -} - -async fn store_available_data(virtual_overseer: &mut VirtualOverseer, success: bool) { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityStore(AvailabilityStoreMessage::StoreAvailableData( - _, - _, - _, - _, - tx, - )) => { - if success { - tx.send(Ok(())).unwrap(); - } else { - tx.send(Err(())).unwrap(); - } - }, - "overseer did not receive store available data request", - ); -} - -#[test] -fn cannot_participate_when_recent_block_state_is_missing() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - participate(&mut virtual_overseer).await; - - virtual_overseer - }) - }); - - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - - // after activating at least one leaf the recent block - // state should be available which should lead to trying - // to participate by first trying to recover the available - // data - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityRecovery( - AvailabilityRecoveryMessage::RecoverAvailableData(..) - ), - "overseer did not receive recover available data message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cannot_participate_if_cannot_recover_available_data() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityRecovery( - AvailabilityRecoveryMessage::RecoverAvailableData(_, _, _, tx) - ) => { - tx.send(Err(RecoveryError::Unavailable)).unwrap(); - }, - "overseer did not receive recover available data message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cannot_participate_if_cannot_recover_validation_code() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - recover_available_data(&mut virtual_overseer).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::ValidationCodeByHash( - _, - tx, - ) - )) => { - tx.send(Ok(None)).unwrap(); - }, - "overseer did not receive runtime api request for validation code", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cast_invalid_vote_if_available_data_is_invalid() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::AvailabilityRecovery( - AvailabilityRecoveryMessage::RecoverAvailableData(_, _, _, tx) - ) => { - tx.send(Err(RecoveryError::Invalid)).unwrap(); - }, - "overseer did not receive recover available data message", - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeCoordinator(DisputeCoordinatorMessage::IssueLocalStatement( - _, - _, - _, - false, - )), - "overseer did not receive issue local statement message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cast_invalid_vote_if_validation_fails_or_is_invalid() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - recover_available_data(&mut virtual_overseer).await; - fetch_validation_code(&mut virtual_overseer).await; - store_available_data(&mut virtual_overseer, true).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { - tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::Timeout))).unwrap(); - }, - "overseer did not receive candidate validation message", - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeCoordinator(DisputeCoordinatorMessage::IssueLocalStatement( - _, - _, - _, - false, - )), - "overseer did not receive issue local statement message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cast_invalid_vote_if_validation_passes_but_commitments_dont_match() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - recover_available_data(&mut virtual_overseer).await; - fetch_validation_code(&mut virtual_overseer).await; - store_available_data(&mut virtual_overseer, true).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { - let mut commitments = CandidateCommitments::default(); - // this should lead to a commitments hash mismatch - commitments.processed_downward_messages = 42; - - tx.send(Ok(ValidationResult::Valid(commitments, Default::default()))).unwrap(); - }, - "overseer did not receive candidate validation message", - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeCoordinator(DisputeCoordinatorMessage::IssueLocalStatement( - _, - _, - _, - false, - )), - "overseer did not receive issue local statement message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn cast_valid_vote_if_validation_passes() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - recover_available_data(&mut virtual_overseer).await; - fetch_validation_code(&mut virtual_overseer).await; - store_available_data(&mut virtual_overseer, true).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { - tx.send(Ok(ValidationResult::Valid(Default::default(), Default::default()))).unwrap(); - }, - "overseer did not receive candidate validation message", - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeCoordinator(DisputeCoordinatorMessage::IssueLocalStatement( - _, - _, - _, - true, - )), - "overseer did not receive issue local statement message", - ); - - virtual_overseer - }) - }); -} - -#[test] -fn failure_to_store_available_data_does_not_preclude_participation() { - test_harness(|mut virtual_overseer| { - Box::pin(async move { - activate_leaf(&mut virtual_overseer, 10).await; - participate(&mut virtual_overseer).await; - recover_available_data(&mut virtual_overseer).await; - fetch_validation_code(&mut virtual_overseer).await; - // the store available data request should fail - store_available_data(&mut virtual_overseer, false).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { - tx.send(Err(ValidationFailed("fail".to_string()))).unwrap(); - }, - "overseer did not receive candidate validation message", - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeCoordinator(DisputeCoordinatorMessage::IssueLocalStatement( - _, - _, - _, - false, - )), - "overseer did not receive issue local statement message", - ); - - virtual_overseer - }) - }); -} diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml deleted file mode 100644 index 6dd3d3bbdab6..000000000000 --- a/node/core/parachains-inherent/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "polkadot-node-core-parachains-inherent" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -futures-timer = "3.0.2" -tracing = "0.1.26" -thiserror = "1.0.23" -async-trait = "0.1.47" -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-overseer = { path = "../../overseer" } -polkadot-primitives = { path = "../../../primitives" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/parachains-inherent/src/lib.rs b/node/core/parachains-inherent/src/lib.rs deleted file mode 100644 index e8ffb573658c..000000000000 --- a/node/core/parachains-inherent/src/lib.rs +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The parachain inherent data provider -//! -//! Parachain backing and approval is an off-chain process, but the parachain needs to progress on chain as well. To -//! make it progress on chain a block producer needs to forward information about the state of a parachain to the -//! runtime. This information is forwarded through an inherent to the runtime. Here we provide the -//! [`ParachainInherentDataProvider`] that requests the relevant data from the provisioner subsystem and creates the -//! the inherent data that the runtime will use to create an inherent. - -#![deny(unused_crate_dependencies, unused_results)] - -use futures::{select, FutureExt}; -use polkadot_node_subsystem::{ - messages::{AllMessages, ProvisionerMessage}, SubsystemError, -}; -use polkadot_overseer::OverseerHandler; -use polkadot_primitives::v1::{ - Block, Hash, InherentData as ParachainsInherentData, -}; -use sp_blockchain::HeaderBackend; -use sp_runtime::generic::BlockId; -use std::time; - -/// How long to wait for the provisioner, before giving up. -const PROVISIONER_TIMEOUT: time::Duration = core::time::Duration::from_millis(2500); - -/// Provides the parachains inherent data. -pub struct ParachainsInherentDataProvider { - inherent_data: ParachainsInherentData, -} - -impl ParachainsInherentDataProvider { - /// Create a new instance of the [`ParachainsInherentDataProvider`]. - pub async fn create>( - client: &C, - mut overseer: OverseerHandler, - parent: Hash, - ) -> Result { - let pid = async { - let (sender, receiver) = futures::channel::oneshot::channel(); - overseer.wait_for_activation(parent, sender).await; - receiver.await.map_err(|_| Error::ClosedChannelAwaitingActivation)?.map_err(Error::Subsystem)?; - - let (sender, receiver) = futures::channel::oneshot::channel(); - overseer.send_msg(AllMessages::Provisioner( - ProvisionerMessage::RequestInherentData(parent, sender), - )).await; - - receiver.await.map_err(|_| Error::ClosedChannelAwaitingInherentData) - }; - - let mut timeout = futures_timer::Delay::new(PROVISIONER_TIMEOUT).fuse(); - - let parent_header = match client.header(BlockId::Hash(parent)) { - Ok(Some(h)) => h, - Ok(None) => return Err(Error::ParentHeaderNotFound(parent)), - Err(err) => return Err(Error::Blockchain(err)), - }; - - let res = select! { - pid = pid.fuse() => pid, - _ = timeout => Err(Error::Timeout), - }; - - let inherent_data = match res { - Ok(pd) => ParachainsInherentData { - bitfields: pd.bitfields.into_iter().map(Into::into).collect(), - backed_candidates: pd.backed_candidates, - disputes: pd.disputes, - parent_header, - }, - Err(err) => { - tracing::debug!( - ?err, - "Could not get provisioner inherent data; injecting default data", - ); - ParachainsInherentData { - bitfields: Vec::new(), - backed_candidates: Vec::new(), - disputes: Vec::new(), - parent_header, - } - } - }; - - Ok(Self { inherent_data }) - } -} - -#[async_trait::async_trait] -impl sp_inherents::InherentDataProvider for ParachainsInherentDataProvider { - fn provide_inherent_data(&self, inherent_data: &mut sp_inherents::InherentData) -> Result<(), sp_inherents::Error> { - inherent_data.put_data( - polkadot_primitives::v1::PARACHAINS_INHERENT_IDENTIFIER, - &self.inherent_data, - ) - } - - async fn try_handle_error( - &self, - _: &sp_inherents::InherentIdentifier, - _: &[u8], - ) -> Option> { - // Inherent isn't checked and can not return any error - None - } -} - -#[derive(thiserror::Error, Debug)] -pub enum Error { - #[error("Blockchain error")] - Blockchain(sp_blockchain::Error), - #[error("Timeout: provisioner did not return inherent data after {:?}", PROVISIONER_TIMEOUT)] - Timeout, - #[error("Could not find the parent header in the blockchain: {:?}", _0)] - ParentHeaderNotFound(Hash), - #[error("Closed channel from overseer when awaiting activation")] - ClosedChannelAwaitingActivation, - #[error("Closed channel from provisioner when awaiting inherent data")] - ClosedChannelAwaitingInherentData, - #[error("Subsystem failed")] - Subsystem(SubsystemError), -} diff --git a/node/core/provisioner/Cargo.toml b/node/core/provisioner/Cargo.toml deleted file mode 100644 index fb6259f6878e..000000000000 --- a/node/core/provisioner/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "polkadot-node-core-provisioner" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -futures = "0.3.15" -tracing = "0.1.26" -thiserror = "1.0.23" -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -futures-timer = "3.0.2" - -[dev-dependencies] -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } diff --git a/node/core/provisioner/src/lib.rs b/node/core/provisioner/src/lib.rs deleted file mode 100644 index 7a730aa8cfdf..000000000000 --- a/node/core/provisioner/src/lib.rs +++ /dev/null @@ -1,604 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The provisioner is responsible for assembling a relay chain block -//! from a set of available parachain candidates of its choice. - -#![deny(missing_docs, unused_crate_dependencies)] - -use bitvec::vec::BitVec; -use futures::{ - channel::{mpsc, oneshot}, - prelude::*, -}; -use polkadot_node_subsystem::{ - errors::{ChainApiError, RuntimeApiError}, PerLeafSpan, SubsystemSender, jaeger, - messages::{ - CandidateBackingMessage, ChainApiMessage, ProvisionableData, ProvisionerInherentData, - ProvisionerMessage, - }, -}; -use polkadot_node_subsystem_util::{ - self as util, JobSubsystem, JobSender, - request_availability_cores, request_persisted_validation_data, JobTrait, metrics::{self, prometheus}, -}; -use polkadot_primitives::v1::{ - BackedCandidate, BlockNumber, CandidateReceipt, CoreState, Hash, OccupiedCoreAssumption, - SignedAvailabilityBitfield, ValidatorIndex, -}; -use std::{pin::Pin, collections::BTreeMap, sync::Arc}; -use thiserror::Error; -use futures_timer::Delay; - -#[cfg(test)] -mod tests; - -/// How long to wait before proposing. -const PRE_PROPOSE_TIMEOUT: std::time::Duration = core::time::Duration::from_millis(2000); - -const LOG_TARGET: &str = "parachain::provisioner"; - -enum InherentAfter { - Ready, - Wait(Delay), -} - -impl InherentAfter { - fn new_from_now() -> Self { - InherentAfter::Wait(Delay::new(PRE_PROPOSE_TIMEOUT)) - } - - fn is_ready(&self) -> bool { - match *self { - InherentAfter::Ready => true, - InherentAfter::Wait(_) => false, - } - } - - async fn ready(&mut self) { - match *self { - InherentAfter::Ready => { - // Make sure we never end the returned future. - // This is required because the `select!` that calls this future will end in a busy loop. - futures::pending!() - }, - InherentAfter::Wait(ref mut d) => { - d.await; - *self = InherentAfter::Ready; - }, - } - } -} - -/// A per-relay-parent job for the provisioning subsystem. -pub struct ProvisioningJob { - relay_parent: Hash, - receiver: mpsc::Receiver, - backed_candidates: Vec, - signed_bitfields: Vec, - metrics: Metrics, - inherent_after: InherentAfter, - awaiting_inherent: Vec> -} - -/// Errors in the provisioner. -#[derive(Debug, Error)] -#[allow(missing_docs)] -pub enum Error { - #[error(transparent)] - Util(#[from] util::Error), - - #[error("failed to get availability cores")] - CanceledAvailabilityCores(#[source] oneshot::Canceled), - - #[error("failed to get persisted validation data")] - CanceledPersistedValidationData(#[source] oneshot::Canceled), - - #[error("failed to get block number")] - CanceledBlockNumber(#[source] oneshot::Canceled), - - #[error("failed to get backed candidates")] - CanceledBackedCandidates(#[source] oneshot::Canceled), - - #[error(transparent)] - ChainApi(#[from] ChainApiError), - - #[error(transparent)] - Runtime(#[from] RuntimeApiError), - - #[error("failed to send message to ChainAPI")] - ChainApiMessageSend(#[source] mpsc::SendError), - - #[error("failed to send message to CandidateBacking to get backed candidates")] - GetBackedCandidatesSend(#[source] mpsc::SendError), - - #[error("failed to send return message with Inherents")] - InherentDataReturnChannel, - - #[error("backed candidate does not correspond to selected candidate; check logic in provisioner")] - BackedCandidateOrderingProblem, -} - -impl JobTrait for ProvisioningJob { - type ToJob = ProvisionerMessage; - type Error = Error; - type RunArgs = (); - type Metrics = Metrics; - - const NAME: &'static str = "ProvisioningJob"; - - /// Run a job for the parent block indicated - // - // this function is in charge of creating and executing the job's main loop - fn run( - relay_parent: Hash, - span: Arc, - _run_args: Self::RunArgs, - metrics: Self::Metrics, - receiver: mpsc::Receiver, - mut sender: JobSender, - ) -> Pin> + Send>> { - async move { - let job = ProvisioningJob::new( - relay_parent, - metrics, - receiver, - ); - - job.run_loop(sender.subsystem_sender(), PerLeafSpan::new(span, "provisioner")).await - } - .boxed() - } -} - -impl ProvisioningJob { - fn new( - relay_parent: Hash, - metrics: Metrics, - receiver: mpsc::Receiver, - ) -> Self { - Self { - relay_parent, - receiver, - backed_candidates: Vec::new(), - signed_bitfields: Vec::new(), - metrics, - inherent_after: InherentAfter::new_from_now(), - awaiting_inherent: Vec::new(), - } - } - - async fn run_loop( - mut self, - sender: &mut impl SubsystemSender, - span: PerLeafSpan, - ) -> Result<(), Error> { - use ProvisionerMessage::{ - ProvisionableData, RequestInherentData, - }; - loop { - futures::select! { - msg = self.receiver.next().fuse() => match msg { - Some(RequestInherentData(_, return_sender)) => { - let _span = span.child("req-inherent-data"); - let _timer = self.metrics.time_request_inherent_data(); - - if self.inherent_after.is_ready() { - self.send_inherent_data(sender, vec![return_sender]).await; - } else { - self.awaiting_inherent.push(return_sender); - } - } - Some(ProvisionableData(_, data)) => { - let span = span.child("provisionable-data"); - let _timer = self.metrics.time_provisionable_data(); - - self.note_provisionable_data(&span, data); - } - None => break, - }, - _ = self.inherent_after.ready().fuse() => { - let _span = span.child("send-inherent-data"); - let return_senders = std::mem::take(&mut self.awaiting_inherent); - if !return_senders.is_empty() { - self.send_inherent_data(sender, return_senders).await; - } - } - } - } - - Ok(()) - } - - async fn send_inherent_data( - &mut self, - sender: &mut impl SubsystemSender, - return_senders: Vec>, - ) { - if let Err(err) = send_inherent_data( - self.relay_parent, - &self.signed_bitfields, - &self.backed_candidates, - return_senders, - sender, - ) - .await - { - tracing::warn!(target: LOG_TARGET, err = ?err, "failed to assemble or send inherent data"); - self.metrics.on_inherent_data_request(Err(())); - } else { - self.metrics.on_inherent_data_request(Ok(())); - } - } - - fn note_provisionable_data(&mut self, span: &jaeger::Span, provisionable_data: ProvisionableData) { - match provisionable_data { - ProvisionableData::Bitfield(_, signed_bitfield) => { - self.signed_bitfields.push(signed_bitfield) - } - ProvisionableData::BackedCandidate(backed_candidate) => { - let _span = span.child("provisionable-backed") - .with_para_id(backed_candidate.descriptor().para_id); - self.backed_candidates.push(backed_candidate) - } - _ => {} - } - } -} - -type CoreAvailability = BitVec; - -/// The provisioner is the subsystem best suited to choosing which specific -/// backed candidates and availability bitfields should be assembled into the -/// block. To engage this functionality, a -/// `ProvisionerMessage::RequestInherentData` is sent; the response is a set of -/// non-conflicting candidates and the appropriate bitfields. Non-conflicting -/// means that there are never two distinct parachain candidates included for -/// the same parachain and that new parachain candidates cannot be included -/// until the previous one either gets declared available or expired. -/// -/// The main complication here is going to be around handling -/// occupied-core-assumptions. We might have candidates that are only -/// includable when some bitfields are included. And we might have candidates -/// that are not includable when certain bitfields are included. -/// -/// When we're choosing bitfields to include, the rule should be simple: -/// maximize availability. So basically, include all bitfields. And then -/// choose a coherent set of candidates along with that. -async fn send_inherent_data( - relay_parent: Hash, - bitfields: &[SignedAvailabilityBitfield], - candidates: &[CandidateReceipt], - return_senders: Vec>, - from_job: &mut impl SubsystemSender, -) -> Result<(), Error> { - let availability_cores = request_availability_cores(relay_parent, from_job) - .await - .await.map_err(|err| Error::CanceledAvailabilityCores(err))??; - - let bitfields = select_availability_bitfields(&availability_cores, bitfields); - let candidates = select_candidates( - &availability_cores, - &bitfields, - candidates, - relay_parent, - from_job, - ).await?; - - let inherent_data = ProvisionerInherentData { - bitfields, - backed_candidates: candidates, - disputes: Vec::new(), // until disputes are implemented. - }; - - for return_sender in return_senders { - return_sender.send(inherent_data.clone()).map_err(|_data| Error::InherentDataReturnChannel)?; - } - - Ok(()) -} - -/// In general, we want to pick all the bitfields. However, we have the following constraints: -/// -/// - not more than one per validator -/// - each 1 bit must correspond to an occupied core -/// -/// If we have too many, an arbitrary selection policy is fine. For purposes of maximizing availability, -/// we pick the one with the greatest number of 1 bits. -/// -/// Note: This does not enforce any sorting precondition on the output; the ordering there will be unrelated -/// to the sorting of the input. -fn select_availability_bitfields( - cores: &[CoreState], - bitfields: &[SignedAvailabilityBitfield], -) -> Vec { - let mut selected: BTreeMap = BTreeMap::new(); - - 'a: - for bitfield in bitfields.iter().cloned() { - if bitfield.payload().0.len() != cores.len() { - continue - } - - let is_better = selected.get(&bitfield.validator_index()) - .map_or(true, |b| b.payload().0.count_ones() < bitfield.payload().0.count_ones()); - - if !is_better { continue } - - for (idx, _) in cores.iter().enumerate().filter(|v| !v.1.is_occupied()) { - // Bit is set for an unoccupied core - invalid - if *bitfield.payload().0.get(idx).as_deref().unwrap_or(&false) { - continue 'a - } - } - - let _ = selected.insert(bitfield.validator_index(), bitfield); - } - - selected.into_iter().map(|(_, b)| b).collect() -} - -/// Determine which cores are free, and then to the degree possible, pick a candidate appropriate to each free core. -async fn select_candidates( - availability_cores: &[CoreState], - bitfields: &[SignedAvailabilityBitfield], - candidates: &[CandidateReceipt], - relay_parent: Hash, - sender: &mut impl SubsystemSender, -) -> Result, Error> { - let block_number = get_block_number_under_construction(relay_parent, sender).await?; - - let mut selected_candidates = - Vec::with_capacity(candidates.len().min(availability_cores.len())); - - for (core_idx, core) in availability_cores.iter().enumerate() { - let (scheduled_core, assumption) = match core { - CoreState::Scheduled(scheduled_core) => (scheduled_core, OccupiedCoreAssumption::Free), - CoreState::Occupied(occupied_core) => { - if bitfields_indicate_availability(core_idx, bitfields, &occupied_core.availability) { - if let Some(ref scheduled_core) = occupied_core.next_up_on_available { - (scheduled_core, OccupiedCoreAssumption::Included) - } else { - continue; - } - } else { - if occupied_core.time_out_at != block_number { - continue; - } - if let Some(ref scheduled_core) = occupied_core.next_up_on_time_out { - (scheduled_core, OccupiedCoreAssumption::TimedOut) - } else { - continue; - } - } - } - CoreState::Free => continue, - }; - - let validation_data = match request_persisted_validation_data( - relay_parent, - scheduled_core.para_id, - assumption, - sender, - ) - .await - .await.map_err(|err| Error::CanceledPersistedValidationData(err))?? - { - Some(v) => v, - None => continue, - }; - - let computed_validation_data_hash = validation_data.hash(); - - // we arbitrarily pick the first of the backed candidates which match the appropriate selection criteria - if let Some(candidate) = candidates.iter().find(|backed_candidate| { - let descriptor = &backed_candidate.descriptor; - descriptor.para_id == scheduled_core.para_id - && descriptor.persisted_validation_data_hash == computed_validation_data_hash - }) { - let candidate_hash = candidate.hash(); - tracing::trace!( - target: LOG_TARGET, - "Selecting candidate {}. para_id={} core={}", - candidate_hash, - candidate.descriptor.para_id, - core_idx, - ); - - selected_candidates.push(candidate_hash); - } - } - - // now get the backed candidates corresponding to these candidate receipts - let (tx, rx) = oneshot::channel(); - sender.send_message(CandidateBackingMessage::GetBackedCandidates( - relay_parent, - selected_candidates.clone(), - tx, - ).into()).await; - let mut candidates = rx.await.map_err(|err| Error::CanceledBackedCandidates(err))?; - - // `selected_candidates` is generated in ascending order by core index, and `GetBackedCandidates` - // _should_ preserve that property, but let's just make sure. - // - // We can't easily map from `BackedCandidate` to `core_idx`, but we know that every selected candidate - // maps to either 0 or 1 backed candidate, and the hashes correspond. Therefore, by checking them - // in order, we can ensure that the backed candidates are also in order. - let mut backed_idx = 0; - for selected in selected_candidates { - if selected == candidates.get(backed_idx).ok_or(Error::BackedCandidateOrderingProblem)?.hash() { - backed_idx += 1; - } - } - if candidates.len() != backed_idx { - Err(Error::BackedCandidateOrderingProblem)?; - } - - // keep only one candidate with validation code. - let mut with_validation_code = false; - candidates.retain(|c| { - if c.candidate.commitments.new_validation_code.is_some() { - if with_validation_code { - return false - } - - with_validation_code = true; - } - - true - }); - - tracing::debug!( - target: LOG_TARGET, - "Selected {} candidates for {} cores", - candidates.len(), - availability_cores.len(), - ); - - Ok(candidates) -} - -/// Produces a block number 1 higher than that of the relay parent -/// in the event of an invalid `relay_parent`, returns `Ok(0)` -async fn get_block_number_under_construction( - relay_parent: Hash, - sender: &mut impl SubsystemSender, -) -> Result { - let (tx, rx) = oneshot::channel(); - sender - .send_message(ChainApiMessage::BlockNumber( - relay_parent, - tx, - ).into()) - .await; - - match rx.await.map_err(|err| Error::CanceledBlockNumber(err))? { - Ok(Some(n)) => Ok(n + 1), - Ok(None) => Ok(0), - Err(err) => Err(err.into()), - } -} - -/// The availability bitfield for a given core is the transpose -/// of a set of signed availability bitfields. It goes like this: -/// -/// - construct a transverse slice along `core_idx` -/// - bitwise-or it with the availability slice -/// - count the 1 bits, compare to the total length; true on 2/3+ -fn bitfields_indicate_availability( - core_idx: usize, - bitfields: &[SignedAvailabilityBitfield], - availability: &CoreAvailability, -) -> bool { - let mut availability = availability.clone(); - let availability_len = availability.len(); - - for bitfield in bitfields { - let validator_idx = bitfield.validator_index().0 as usize; - match availability.get_mut(validator_idx) { - None => { - // in principle, this function might return a `Result` so that we can more clearly express this error condition - // however, in practice, that would just push off an error-handling routine which would look a whole lot like this one. - // simpler to just handle the error internally here. - tracing::warn!( - target: LOG_TARGET, - validator_idx = %validator_idx, - availability_len = %availability_len, - "attempted to set a transverse bit at idx {} which is greater than bitfield size {}", - validator_idx, - availability_len, - ); - - return false; - } - Some(mut bit_mut) => *bit_mut |= bitfield.payload().0[core_idx], - } - } - - 3 * availability.count_ones() >= 2 * availability.len() -} - -#[derive(Clone)] -struct MetricsInner { - inherent_data_requests: prometheus::CounterVec, - request_inherent_data: prometheus::Histogram, - provisionable_data: prometheus::Histogram, -} - -/// Provisioner metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_inherent_data_request(&self, response: Result<(), ()>) { - if let Some(metrics) = &self.0 { - match response { - Ok(()) => metrics.inherent_data_requests.with_label_values(&["succeeded"]).inc(), - Err(()) => metrics.inherent_data_requests.with_label_values(&["failed"]).inc(), - } - } - } - - /// Provide a timer for `request_inherent_data` which observes on drop. - fn time_request_inherent_data(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.request_inherent_data.start_timer()) - } - - /// Provide a timer for `provisionable_data` which observes on drop. - fn time_provisionable_data(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.provisionable_data.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - inherent_data_requests: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_inherent_data_requests_total", - "Number of InherentData requests served by provisioner.", - ), - &["success"], - )?, - registry, - )?, - request_inherent_data: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_provisioner_request_inherent_data", - "Time spent within `provisioner::request_inherent_data`", - ) - )?, - registry, - )?, - provisionable_data: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_provisioner_provisionable_data", - "Time spent within `provisioner::provisionable_data`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - - -/// The provisioning subsystem. -pub type ProvisioningSubsystem = JobSubsystem; diff --git a/node/core/provisioner/src/tests.rs b/node/core/provisioner/src/tests.rs deleted file mode 100644 index 8c5587ab147d..000000000000 --- a/node/core/provisioner/src/tests.rs +++ /dev/null @@ -1,471 +0,0 @@ -use super::*; -use bitvec::bitvec; -use polkadot_primitives::v1::{OccupiedCore, ScheduledCore}; - -pub fn occupied_core(para_id: u32) -> CoreState { - CoreState::Occupied(OccupiedCore { - group_responsible: para_id.into(), - next_up_on_available: None, - occupied_since: 100_u32, - time_out_at: 200_u32, - next_up_on_time_out: None, - availability: bitvec![bitvec::order::Lsb0, u8; 0; 32], - candidate_descriptor: Default::default(), - candidate_hash: Default::default(), - }) -} - -pub fn build_occupied_core(para_id: u32, builder: Builder) -> CoreState -where - Builder: FnOnce(&mut OccupiedCore), -{ - let mut core = match occupied_core(para_id) { - CoreState::Occupied(core) => core, - _ => unreachable!(), - }; - - builder(&mut core); - - CoreState::Occupied(core) -} - -pub fn default_bitvec(n_cores: usize) -> CoreAvailability { - bitvec![bitvec::order::Lsb0, u8; 0; n_cores] -} - -pub fn scheduled_core(id: u32) -> ScheduledCore { - ScheduledCore { - para_id: id.into(), - ..Default::default() - } -} - -mod select_availability_bitfields { - use super::super::*; - use super::{default_bitvec, occupied_core}; - use futures::executor::block_on; - use std::sync::Arc; - use polkadot_primitives::v1::{SigningContext, ValidatorIndex, ValidatorId}; - use sp_application_crypto::AppKey; - use sp_keystore::{CryptoStore, SyncCryptoStorePtr, testing::KeyStore}; - - async fn signed_bitfield( - keystore: &SyncCryptoStorePtr, - field: CoreAvailability, - validator_idx: ValidatorIndex, - ) -> SignedAvailabilityBitfield { - let public = CryptoStore::sr25519_generate_new(&**keystore, ValidatorId::ID, None) - .await - .expect("generated sr25519 key"); - SignedAvailabilityBitfield::sign( - &keystore, - field.into(), - &>::default(), - validator_idx, - &public.into(), - ).await.ok().flatten().expect("Should be signed") - } - - #[test] - fn not_more_than_one_per_validator() { - let keystore: SyncCryptoStorePtr = Arc::new(KeyStore::new()); - let mut bitvec = default_bitvec(2); - bitvec.set(0, true); - bitvec.set(1, true); - - let cores = vec![occupied_core(0), occupied_core(1)]; - - // we pass in three bitfields with two validators - // this helps us check the postcondition that we get two bitfields back, for which the validators differ - let bitfields = vec![ - block_on(signed_bitfield(&keystore, bitvec.clone(), ValidatorIndex(0))), - block_on(signed_bitfield(&keystore, bitvec.clone(), ValidatorIndex(1))), - block_on(signed_bitfield(&keystore, bitvec, ValidatorIndex(1))), - ]; - - let mut selected_bitfields = select_availability_bitfields(&cores, &bitfields); - selected_bitfields.sort_by_key(|bitfield| bitfield.validator_index()); - - assert_eq!(selected_bitfields.len(), 2); - assert_eq!(selected_bitfields[0], bitfields[0]); - // we don't know which of the (otherwise equal) bitfields will be selected - assert!(selected_bitfields[1] == bitfields[1] || selected_bitfields[1] == bitfields[2]); - } - - #[test] - fn each_corresponds_to_an_occupied_core() { - let keystore: SyncCryptoStorePtr = Arc::new(KeyStore::new()); - let bitvec = default_bitvec(3); - - // invalid: bit on free core - let mut bitvec0 = bitvec.clone(); - bitvec0.set(0, true); - - // invalid: bit on scheduled core - let mut bitvec1 = bitvec.clone(); - bitvec1.set(1, true); - - // valid: bit on occupied core. - let mut bitvec2 = bitvec.clone(); - bitvec2.set(2, true); - - let cores = vec![ - CoreState::Free, - CoreState::Scheduled(Default::default()), - occupied_core(2), - ]; - - let bitfields = vec![ - block_on(signed_bitfield(&keystore, bitvec0, ValidatorIndex(0))), - block_on(signed_bitfield(&keystore, bitvec1, ValidatorIndex(1))), - block_on(signed_bitfield(&keystore, bitvec2.clone(), ValidatorIndex(2))), - ]; - - let selected_bitfields = select_availability_bitfields(&cores, &bitfields); - - // selects only the valid bitfield - assert_eq!(selected_bitfields.len(), 1); - assert_eq!(selected_bitfields[0].payload().0, bitvec2); - } - - #[test] - fn more_set_bits_win_conflicts() { - let keystore: SyncCryptoStorePtr = Arc::new(KeyStore::new()); - let mut bitvec = default_bitvec(2); - bitvec.set(0, true); - - let mut bitvec1 = bitvec.clone(); - bitvec1.set(1, true); - - let cores = vec![occupied_core(0), occupied_core(1)]; - - let bitfields = vec![ - block_on(signed_bitfield(&keystore, bitvec, ValidatorIndex(1))), - block_on(signed_bitfield(&keystore, bitvec1.clone(), ValidatorIndex(1))), - ]; - - let selected_bitfields = select_availability_bitfields(&cores, &bitfields); - assert_eq!(selected_bitfields.len(), 1); - assert_eq!(selected_bitfields[0].payload().0, bitvec1.clone()); - } - - #[test] - fn more_complex_bitfields() { - let keystore: SyncCryptoStorePtr = Arc::new(KeyStore::new()); - - let cores = vec![occupied_core(0), occupied_core(1), occupied_core(2), occupied_core(3)]; - - let mut bitvec0 = default_bitvec(4); - bitvec0.set(0, true); - bitvec0.set(2, true); - - let mut bitvec1 = default_bitvec(4); - bitvec1.set(1, true); - - let mut bitvec2 = default_bitvec(4); - bitvec2.set(2, true); - - let mut bitvec3 = default_bitvec(4); - bitvec3.set(0, true); - bitvec3.set(1, true); - bitvec3.set(2, true); - bitvec3.set(3, true); - - // these are out of order but will be selected in order. The better - // bitfield for 3 will be selected. - let bitfields = vec![ - block_on(signed_bitfield(&keystore, bitvec2.clone(), ValidatorIndex(3))), - block_on(signed_bitfield(&keystore, bitvec3.clone(), ValidatorIndex(3))), - block_on(signed_bitfield(&keystore, bitvec0.clone(), ValidatorIndex(0))), - block_on(signed_bitfield(&keystore, bitvec2.clone(), ValidatorIndex(2))), - block_on(signed_bitfield(&keystore, bitvec1.clone(), ValidatorIndex(1))), - ]; - - let selected_bitfields = select_availability_bitfields(&cores, &bitfields); - assert_eq!(selected_bitfields.len(), 4); - assert_eq!(selected_bitfields[0].payload().0, bitvec0); - assert_eq!(selected_bitfields[1].payload().0, bitvec1); - assert_eq!(selected_bitfields[2].payload().0, bitvec2); - assert_eq!(selected_bitfields[3].payload().0, bitvec3); - } -} - -mod select_candidates { - use super::super::*; - use super::{build_occupied_core, occupied_core, scheduled_core, default_bitvec}; - use polkadot_node_subsystem::messages::{ - AllMessages, RuntimeApiMessage, - RuntimeApiRequest::{AvailabilityCores, PersistedValidationData as PersistedValidationDataReq}, - }; - use polkadot_primitives::v1::{ - BlockNumber, CandidateDescriptor, PersistedValidationData, CommittedCandidateReceipt, CandidateCommitments, - }; - use polkadot_node_subsystem_test_helpers::TestSubsystemSender; - - const BLOCK_UNDER_PRODUCTION: BlockNumber = 128; - - fn test_harness( - overseer_factory: OverseerFactory, - test_factory: TestFactory, - ) where - OverseerFactory: FnOnce(mpsc::UnboundedReceiver) -> Overseer, - Overseer: Future, - TestFactory: FnOnce(TestSubsystemSender) -> Test, - Test: Future, - { - let (tx, rx) = polkadot_node_subsystem_test_helpers::sender_receiver(); - let overseer = overseer_factory(rx); - let test = test_factory(tx); - - futures::pin_mut!(overseer, test); - - let _ = futures::executor::block_on(future::join(overseer, test)); - } - - // For test purposes, we always return this set of availability cores: - // - // [ - // 0: Free, - // 1: Scheduled(default), - // 2: Occupied(no next_up set), - // 3: Occupied(next_up_on_available set but not available), - // 4: Occupied(next_up_on_available set and available), - // 5: Occupied(next_up_on_time_out set but not timeout), - // 6: Occupied(next_up_on_time_out set and timeout but available), - // 7: Occupied(next_up_on_time_out set and timeout and not available), - // 8: Occupied(both next_up set, available), - // 9: Occupied(both next_up set, not available, no timeout), - // 10: Occupied(both next_up set, not available, timeout), - // 11: Occupied(next_up_on_available and available, but different successor para_id) - // ] - fn mock_availability_cores() -> Vec { - use std::ops::Not; - use CoreState::{Free, Scheduled}; - - vec![ - // 0: Free, - Free, - // 1: Scheduled(default), - Scheduled(scheduled_core(1)), - // 2: Occupied(no next_up set), - occupied_core(2), - // 3: Occupied(next_up_on_available set but not available), - build_occupied_core(3, |core| { - core.next_up_on_available = Some(scheduled_core(3)); - }), - // 4: Occupied(next_up_on_available set and available), - build_occupied_core(4, |core| { - core.next_up_on_available = Some(scheduled_core(4)); - core.availability = core.availability.clone().not(); - }), - // 5: Occupied(next_up_on_time_out set but not timeout), - build_occupied_core(5, |core| { - core.next_up_on_time_out = Some(scheduled_core(5)); - }), - // 6: Occupied(next_up_on_time_out set and timeout but available), - build_occupied_core(6, |core| { - core.next_up_on_time_out = Some(scheduled_core(6)); - core.time_out_at = BLOCK_UNDER_PRODUCTION; - core.availability = core.availability.clone().not(); - }), - // 7: Occupied(next_up_on_time_out set and timeout and not available), - build_occupied_core(7, |core| { - core.next_up_on_time_out = Some(scheduled_core(7)); - core.time_out_at = BLOCK_UNDER_PRODUCTION; - }), - // 8: Occupied(both next_up set, available), - build_occupied_core(8, |core| { - core.next_up_on_available = Some(scheduled_core(8)); - core.next_up_on_time_out = Some(scheduled_core(8)); - core.availability = core.availability.clone().not(); - }), - // 9: Occupied(both next_up set, not available, no timeout), - build_occupied_core(9, |core| { - core.next_up_on_available = Some(scheduled_core(9)); - core.next_up_on_time_out = Some(scheduled_core(9)); - }), - // 10: Occupied(both next_up set, not available, timeout), - build_occupied_core(10, |core| { - core.next_up_on_available = Some(scheduled_core(10)); - core.next_up_on_time_out = Some(scheduled_core(10)); - core.time_out_at = BLOCK_UNDER_PRODUCTION; - }), - // 11: Occupied(next_up_on_available and available, but different successor para_id) - build_occupied_core(11, |core| { - core.next_up_on_available = Some(scheduled_core(12)); - core.availability = core.availability.clone().not(); - }), - ] - } - - async fn mock_overseer( - mut receiver: mpsc::UnboundedReceiver, - expected: Vec, - ) { - use ChainApiMessage::BlockNumber; - use RuntimeApiMessage::Request; - - while let Some(from_job) = receiver.next().await { - match from_job { - AllMessages::ChainApi(BlockNumber(_relay_parent, tx)) => { - tx.send(Ok(Some(BLOCK_UNDER_PRODUCTION - 1))).unwrap() - } - AllMessages::RuntimeApi(Request( - _parent_hash, - PersistedValidationDataReq(_para_id, _assumption, tx), - )) => tx.send(Ok(Some(Default::default()))).unwrap(), - AllMessages::RuntimeApi(Request(_parent_hash, AvailabilityCores(tx))) => { - tx.send(Ok(mock_availability_cores())).unwrap() - } - AllMessages::CandidateBacking( - CandidateBackingMessage::GetBackedCandidates(_, _, sender) - ) => { - let _ = sender.send(expected.clone()); - } - _ => panic!("Unexpected message: {:?}", from_job), - } - } - } - - #[test] - fn can_succeed() { - test_harness(|r| mock_overseer(r, Vec::new()), |mut tx: TestSubsystemSender| async move { - select_candidates(&[], &[], &[], Default::default(), &mut tx).await.unwrap(); - }) - } - - // this tests that only the appropriate candidates get selected. - // To accomplish this, we supply a candidate list containing one candidate per possible core; - // the candidate selection algorithm must filter them to the appropriate set - #[test] - fn selects_correct_candidates() { - let mock_cores = mock_availability_cores(); - let n_cores = mock_cores.len(); - - let empty_hash = PersistedValidationData::::default().hash(); - - let candidate_template = CandidateReceipt { - descriptor: CandidateDescriptor { - persisted_validation_data_hash: empty_hash, - ..Default::default() - }, - commitments_hash: CandidateCommitments::default().hash(), - }; - - let candidates: Vec<_> = std::iter::repeat(candidate_template) - .take(mock_cores.len()) - .enumerate() - .map(|(idx, mut candidate)| { - candidate.descriptor.para_id = idx.into(); - candidate - }) - .cycle() - .take(mock_cores.len() * 3) - .enumerate() - .map(|(idx, mut candidate)| { - if idx < mock_cores.len() { - // first go-around: use candidates which should work - candidate - } else if idx < mock_cores.len() * 2 { - // for the second repetition of the candidates, give them the wrong hash - candidate.descriptor.persisted_validation_data_hash - = Default::default(); - candidate - } else { - // third go-around: right hash, wrong para_id - candidate.descriptor.para_id = idx.into(); - candidate - } - }) - .collect(); - - // why those particular indices? see the comments on mock_availability_cores() - let expected_candidates: Vec<_> = [1, 4, 7, 8, 10] - .iter() - .map(|&idx| candidates[idx].clone()) - .collect(); - - let expected_backed = expected_candidates - .iter() - .map(|c| BackedCandidate { - candidate: CommittedCandidateReceipt { descriptor: c.descriptor.clone(), ..Default::default() }, - validity_votes: Vec::new(), - validator_indices: default_bitvec(n_cores), - }) - .collect(); - - test_harness(|r| mock_overseer(r, expected_backed), |mut tx: TestSubsystemSender| async move { - let result = - select_candidates(&mock_cores, &[], &candidates, Default::default(), &mut tx) - .await.unwrap(); - - result.into_iter() - .for_each(|c| - assert!( - expected_candidates.iter().any(|c2| c.candidate.corresponds_to(c2)), - "Failed to find candidate: {:?}", - c, - ) - ); - }) - } - - #[test] - fn selects_max_one_code_upgrade() { - let mock_cores = mock_availability_cores(); - let n_cores = mock_cores.len(); - - let empty_hash = PersistedValidationData::::default().hash(); - - // why those particular indices? see the comments on mock_availability_cores() - // the first candidate with code is included out of [1, 4, 7, 8, 10]. - let cores = [1, 7, 10]; - let cores_with_code = [1, 4, 8]; - - let committed_receipts: Vec<_> = (0..mock_cores.len()) - .map(|i| CommittedCandidateReceipt { - descriptor: CandidateDescriptor { - para_id: i.into(), - persisted_validation_data_hash: empty_hash, - ..Default::default() - }, - commitments: CandidateCommitments { - new_validation_code: if cores_with_code.contains(&i) { Some(vec![].into()) } else { None }, - ..Default::default() - }, - ..Default::default() - }) - .collect(); - - let candidates: Vec<_> = committed_receipts.iter().map(|r| r.to_plain()).collect(); - - let expected_candidates: Vec<_> = cores - .iter() - .map(|&idx| candidates[idx].clone()) - .collect(); - - let expected_backed: Vec<_> = cores - .iter() - .map(|&idx| BackedCandidate { - candidate: committed_receipts[idx].clone(), - validity_votes: Vec::new(), - validator_indices: default_bitvec(n_cores), - }) - .collect(); - - test_harness(|r| mock_overseer(r, expected_backed), |mut tx: TestSubsystemSender| async move { - let result = - select_candidates(&mock_cores, &[], &candidates, Default::default(), &mut tx) - .await.unwrap(); - - result.into_iter() - .for_each(|c| - assert!( - expected_candidates.iter().any(|c2| c.candidate.corresponds_to(c2)), - "Failed to find candidate: {:?}", - c, - ) - ); - }) - } -} diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml deleted file mode 100644 index 13d0ce7e1dbb..000000000000 --- a/node/core/pvf/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "polkadot-node-core-pvf" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[[bin]] -name = "puppet_worker" -path = "bin/puppet_worker.rs" - -[dependencies] -always-assert = "0.1" -async-std = { version = "1.8.0", features = ["attributes"] } -async-process = "1.0.1" -assert_matches = "1.4.0" -futures = "0.3.15" -futures-timer = "3.0.2" -libc = "0.2.81" -slotmap = "1.0" -tracing = "0.1.26" -pin-project = "1.0.7" -rand = "0.8.3" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -polkadot-parachain = { path = "../../../parachain" } -polkadot-core-primitives = { path = "../../../core-primitives" } -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor-wasmtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor-common = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-wasm-interface = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -adder = { package = "test-parachain-adder", path = "../../../parachain/test-parachains/adder" } -halt = { package = "test-parachain-halt", path = "../../../parachain/test-parachains/halt" } -hex-literal = "0.3.1" -tempfile = "3.2.0" diff --git a/node/core/pvf/bin/puppet_worker.rs b/node/core/pvf/bin/puppet_worker.rs deleted file mode 100644 index 4b026e96a809..000000000000 --- a/node/core/pvf/bin/puppet_worker.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -polkadot_node_core_pvf::decl_puppet_worker_main!(); diff --git a/node/core/pvf/src/artifacts.rs b/node/core/pvf/src/artifacts.rs deleted file mode 100644 index 2b739fe1230e..000000000000 --- a/node/core/pvf/src/artifacts.rs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use always_assert::always; -use async_std::{ - path::{Path, PathBuf}, -}; -use polkadot_parachain::primitives::ValidationCodeHash; -use std::{ - collections::HashMap, - time::{Duration, SystemTime}, -}; -use parity_scale_codec::{Encode, Decode}; - -/// A final product of preparation process. Contains either a ready to run compiled artifact or -/// a description what went wrong. -#[derive(Encode, Decode)] -pub enum Artifact { - /// During the prevalidation stage of preparation an issue was found with the PVF. - PrevalidationErr(String), - /// Compilation failed for the given PVF. - PreparationErr(String), - /// This state indicates that the process assigned to prepare the artifact wasn't responsible - /// or were killed. This state is reported by the validation host (not by the worker). - DidntMakeIt, - /// The PVF passed all the checks and is ready for execution. - Compiled { compiled_artifact: Vec }, -} - -impl Artifact { - /// Serializes this struct into a byte buffer. - pub fn serialize(&self) -> Vec { - self.encode() - } - - /// Deserialize the given byte buffer to an artifact. - pub fn deserialize(mut bytes: &[u8]) -> Result { - Artifact::decode(&mut bytes).map_err(|e| format!("{:?}", e)) - } -} - -/// Identifier of an artifact. Right now it only encodes a code hash of the PVF. But if we get to -/// multiple engine implementations the artifact ID should include the engine type as well. -#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct ArtifactId { - code_hash: ValidationCodeHash, -} - -impl ArtifactId { - const PREFIX: &'static str = "wasmtime_"; - - /// Creates a new artifact ID with the given hash. - pub fn new(code_hash: ValidationCodeHash) -> Self { - Self { code_hash } - } - - /// Tries to recover the artifact id from the given file name. - #[cfg(test)] - pub fn from_file_name(file_name: &str) -> Option { - use std::str::FromStr as _; - use polkadot_core_primitives::Hash; - - let file_name = file_name.strip_prefix(Self::PREFIX)?; - let code_hash = Hash::from_str(file_name).ok()?.into(); - - Some(Self { code_hash }) - } - - /// Returns the expected path to this artifact given the root of the cache. - pub fn path(&self, cache_path: &Path) -> PathBuf { - let file_name = format!("{}{:#x}", Self::PREFIX, self.code_hash); - cache_path.join(file_name) - } -} - -pub enum ArtifactState { - /// The artifact is ready to be used by the executor. - /// - /// That means that the artifact should be accessible through the path obtained by the artifact - /// id (unless, it was removed externally). - Prepared { - /// The time when the artifact was the last time needed. - /// - /// This is updated when we get the heads up for this artifact or when we just discover - /// this file. - last_time_needed: SystemTime, - }, - /// A task to prepare this artifact is scheduled. - Preparing, -} - -/// A container of all known artifact ids and their states. -pub struct Artifacts { - artifacts: HashMap, -} - -impl Artifacts { - /// Initialize a blank cache at the given path. This will clear everything present at the - /// given path, to be populated over time. - /// - /// The recognized artifacts will be filled in the table and unrecognized will be removed. - pub async fn new(cache_path: &Path) -> Self { - // Make sure that the cache path directory and all it's parents are created. - // First delete the entire cache. Nodes are long-running so this should populate shortly. - let _ = async_std::fs::remove_dir_all(cache_path).await; - let _ = async_std::fs::create_dir_all(cache_path).await; - - Self { artifacts: HashMap::new() } - } - - #[cfg(test)] - pub(crate) fn empty() -> Self { - Self { - artifacts: HashMap::new(), - } - } - - /// Returns the state of the given artifact by its ID. - pub fn artifact_state_mut(&mut self, artifact_id: &ArtifactId) -> Option<&mut ArtifactState> { - self.artifacts.get_mut(artifact_id) - } - - /// Inform the table about the artifact with the given ID. The state will be set to "preparing". - /// - /// This function must be used only for brand new artifacts and should never be used for - /// replacing existing ones. - pub fn insert_preparing(&mut self, artifact_id: ArtifactId) { - // See the precondition. - always!(self - .artifacts - .insert(artifact_id, ArtifactState::Preparing) - .is_none()); - } - - /// Insert an artifact with the given ID as "prepared". - /// - /// This function must be used only for brand new artifacts and should never be used for - /// replacing existing ones. - #[cfg(test)] - pub fn insert_prepared(&mut self, artifact_id: ArtifactId, last_time_needed: SystemTime) { - // See the precondition. - always!(self - .artifacts - .insert(artifact_id, ArtifactState::Prepared { last_time_needed }) - .is_none()); - } - - /// Remove and retrieve the artifacts from the table that are older than the supplied Time-To-Live. - pub fn prune(&mut self, artifact_ttl: Duration) -> Vec { - let now = SystemTime::now(); - - let mut to_remove = vec![]; - for (k, v) in self.artifacts.iter() { - if let ArtifactState::Prepared { - last_time_needed, .. - } = *v { - if now - .duration_since(last_time_needed) - .map(|age| age > artifact_ttl) - .unwrap_or(false) - { - to_remove.push(k.clone()); - } - } - } - - for artifact in &to_remove { - self.artifacts.remove(artifact); - } - - to_remove - } -} - -#[cfg(test)] -mod tests { - use async_std::path::Path; - use super::{Artifacts, ArtifactId}; - use sp_core::H256; - use std::str::FromStr; - - #[test] - fn from_file_name() { - assert!(ArtifactId::from_file_name("").is_none()); - assert!(ArtifactId::from_file_name("junk").is_none()); - - assert_eq!( - ArtifactId::from_file_name( - "wasmtime_0x0022800000000000000000000000000000000000000000000000000000000000" - ), - Some(ArtifactId::new( - hex_literal::hex![ - "0022800000000000000000000000000000000000000000000000000000000000" - ] - .into() - )), - ); - } - - #[test] - fn path() { - let path = Path::new("/test"); - let hash = H256::from_str("1234567890123456789012345678901234567890123456789012345678901234").unwrap().into(); - - assert_eq!( - ArtifactId::new(hash).path(path).to_str(), - Some("/test/wasmtime_0x1234567890123456789012345678901234567890123456789012345678901234"), - ); - } - - #[test] - fn artifacts_removes_cache_on_startup() { - let fake_cache_path = async_std::task::block_on(async move { crate::worker_common::tmpfile("test-cache").await.unwrap() }); - let fake_artifact_path = { - let mut p = fake_cache_path.clone(); - p.push("wasmtime_0x1234567890123456789012345678901234567890123456789012345678901234"); - p - }; - - // create a tmp cache with 1 artifact. - - std::fs::create_dir_all(&fake_cache_path).unwrap(); - std::fs::File::create(fake_artifact_path).unwrap(); - - // this should remove it and re-create. - - let p = &fake_cache_path; - async_std::task::block_on(async { Artifacts::new(p).await }); - - assert_eq!(std::fs::read_dir(&fake_cache_path).unwrap().count(), 0); - - std::fs::remove_dir_all(fake_cache_path).unwrap(); - } -} diff --git a/node/core/pvf/src/error.rs b/node/core/pvf/src/error.rs deleted file mode 100644 index 71377cdf3dc2..000000000000 --- a/node/core/pvf/src/error.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// A error raised during validation of the candidate. -#[derive(Debug, Clone)] -pub enum ValidationError { - /// The error was raised because the candidate is invalid. - InvalidCandidate(InvalidCandidate), - /// This error is raised due to inability to serve the request. - InternalError(String), -} - -/// A description of an error raised during executing a PVF and can be attributed to the combination -/// of the candidate [`polkadot_parachain::primitives::ValidationParams`] and the PVF. -#[derive(Debug, Clone)] -pub enum InvalidCandidate { - /// The failure is reported by the worker. The string contains the error message. - /// - /// This also includes the errors reported by the preparation pipeline. - WorkerReportedError(String), - /// The worker has died during validation of a candidate. That may fall in one of the following - /// categories, which we cannot distinguish programmatically: - /// - /// (a) Some sort of transient glitch caused the worker process to abort. An example would be that - /// the host machine ran out of free memory and the OOM killer started killing the processes, - /// and in order to save the parent it will "sacrifice child" first. - /// - /// (b) The candidate triggered a code path that has lead to the process death. For example, - /// the PVF found a way to consume unbounded amount of resources and then it either exceeded - /// an rlimit (if set) or, again, invited OOM killer. Another possibility is a bug in - /// wasmtime allowed the PVF to gain control over the execution worker. - /// - /// We attribute such an event to an invalid candidate in either case. - /// - /// The rationale for this is that a glitch may lead to unfair rejecting candidate by a single - /// validator. If the glitch is somewhat more persistant the validator will reject all candidate - /// thrown at it and hopefully the operator notices it by decreased reward performance of the - /// validator. On the other hand, if the worker died because of (b) we would have better chances - /// to stop the attack. - AmbigiousWorkerDeath, - /// PVF execution (compilation is not included) took more time than was allotted. - HardTimeout, -} diff --git a/node/core/pvf/src/execute/mod.rs b/node/core/pvf/src/execute/mod.rs deleted file mode 100644 index f1580f9d668e..000000000000 --- a/node/core/pvf/src/execute/mod.rs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Execution part of the pipeline. -//! -//! The validation host [runs the queue][`start`] communicating with it by sending [`ToQueue`] -//! messages. The queue will spawn workers in new processes. Those processes should jump to -//! [`worker_entrypoint`]. - -mod queue; -mod worker; - -pub use queue::{ToQueue, start}; -pub use worker::worker_entrypoint; diff --git a/node/core/pvf/src/execute/queue.rs b/node/core/pvf/src/execute/queue.rs deleted file mode 100644 index 98aab605affc..000000000000 --- a/node/core/pvf/src/execute/queue.rs +++ /dev/null @@ -1,344 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A queue that handles requests for PVF execution. - -use crate::{ - worker_common::{IdleWorker, WorkerHandle}, - host::ResultSender, - LOG_TARGET, InvalidCandidate, ValidationError, -}; -use super::worker::Outcome; -use std::{collections::VecDeque, fmt, time::Duration}; -use futures::{ - Future, FutureExt, - channel::mpsc, - future::BoxFuture, - stream::{FuturesUnordered, StreamExt as _}, -}; -use async_std::path::PathBuf; -use slotmap::HopSlotMap; - -slotmap::new_key_type! { struct Worker; } - -#[derive(Debug)] -pub enum ToQueue { - Enqueue { - artifact_path: PathBuf, - params: Vec, - result_tx: ResultSender, - }, -} - -struct ExecuteJob { - artifact_path: PathBuf, - params: Vec, - result_tx: ResultSender, -} - -struct WorkerData { - idle: Option, - handle: WorkerHandle, -} - -impl fmt::Debug for WorkerData { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "WorkerData(pid={})", self.handle.id()) - } -} - -struct Workers { - /// The registry of running workers. - running: HopSlotMap, - - /// The number of spawning but not yet spawned workers. - spawn_inflight: usize, - - /// The maximum number of workers queue can have at once. - capacity: usize, -} - -impl Workers { - fn can_afford_one_more(&self) -> bool { - self.spawn_inflight + self.running.len() < self.capacity - } - - fn find_available(&self) -> Option { - self.running - .iter() - .find_map(|d| if d.1.idle.is_some() { Some(d.0) } else { None }) - } - - /// Find the associated data by the worker token and extract it's [`IdleWorker`] token. - /// - /// Returns `None` if either worker is not recognized or idle token is absent. - fn claim_idle(&mut self, worker: Worker) -> Option { - self - .running - .get_mut(worker)? - .idle - .take() - } -} - -enum QueueEvent { - Spawn((IdleWorker, WorkerHandle)), - StartWork(Worker, Outcome, ResultSender), -} - -type Mux = FuturesUnordered>; - -struct Queue { - /// The receiver that receives messages to the pool. - to_queue_rx: mpsc::Receiver, - - program_path: PathBuf, - spawn_timeout: Duration, - - /// The queue of jobs that are waiting for a worker to pick up. - queue: VecDeque, - workers: Workers, - mux: Mux, -} - -impl Queue { - fn new( - program_path: PathBuf, - worker_capacity: usize, - spawn_timeout: Duration, - to_queue_rx: mpsc::Receiver, - ) -> Self { - Self { - program_path, - spawn_timeout, - to_queue_rx, - queue: VecDeque::new(), - mux: Mux::new(), - workers: Workers { - running: HopSlotMap::with_capacity_and_key(10), - spawn_inflight: 0, - capacity: worker_capacity, - }, - } - } - - async fn run(mut self) { - loop { - futures::select! { - to_queue = self.to_queue_rx.next() => { - if let Some(to_queue) = to_queue { - handle_to_queue(&mut self, to_queue); - } else { - break; - } - } - ev = self.mux.select_next_some() => handle_mux(&mut self, ev).await, - } - - purge_dead(&mut self.workers).await; - } - } -} - -async fn purge_dead(workers: &mut Workers) { - let mut to_remove = vec![]; - for (worker, data) in workers.running.iter_mut() { - if futures::poll!(&mut data.handle).is_ready() { - // a resolved future means that the worker has terminated. Weed it out. - to_remove.push(worker); - } - } - for w in to_remove { - let _ = workers.running.remove(w); - } -} - -fn handle_to_queue(queue: &mut Queue, to_queue: ToQueue) { - let ToQueue::Enqueue { - artifact_path, - params, - result_tx, - } = to_queue; - - let job = ExecuteJob { - artifact_path, - params, - result_tx, - }; - - if let Some(available) = queue.workers.find_available() { - assign(queue, available, job); - } else { - if queue.workers.can_afford_one_more() { - spawn_extra_worker(queue); - } - queue.queue.push_back(job); - } -} - -async fn handle_mux(queue: &mut Queue, event: QueueEvent) { - match event { - QueueEvent::Spawn((idle, handle)) => { - queue.workers.spawn_inflight -= 1; - - let worker = queue.workers.running.insert(WorkerData { - idle: Some(idle), - handle, - }); - - if let Some(job) = queue.queue.pop_front() { - assign(queue, worker, job); - } - } - QueueEvent::StartWork(worker, outcome, result_tx) => { - handle_job_finish(queue, worker, outcome, result_tx); - } - } -} - -/// If there are pending jobs in the queue, schedules the next of them onto the just freed up -/// worker. Otherwise, puts back into the available workers list. -fn handle_job_finish(queue: &mut Queue, worker: Worker, outcome: Outcome, result_tx: ResultSender) { - let (idle_worker, result) = match outcome { - Outcome::Ok { - result_descriptor, - duration_ms, - idle_worker, - } => { - // TODO: propagate the soft timeout - drop(duration_ms); - - (Some(idle_worker), Ok(result_descriptor)) - } - Outcome::InvalidCandidate { err, idle_worker } => ( - Some(idle_worker), - Err(ValidationError::InvalidCandidate( - InvalidCandidate::WorkerReportedError(err), - )), - ), - Outcome::InternalError { err, idle_worker } => ( - Some(idle_worker), - Err(ValidationError::InternalError(err)), - ), - Outcome::HardTimeout => ( - None, - Err(ValidationError::InvalidCandidate( - InvalidCandidate::HardTimeout, - )), - ), - Outcome::IoErr => ( - None, - Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - )), - ), - }; - - // First we send the result. It may fail due the other end of the channel being dropped, that's - // legitimate and we don't treat that as an error. - let _ = result_tx.send(result); - - // Then, we should deal with the worker: - // - // - if the `idle_worker` token was returned we should either schedule the next task or just put - // it back so that the next incoming job will be able to claim it - // - // - if the `idle_worker` token was consumed, all the metadata pertaining to that worker should - // be removed. - if let Some(idle_worker) = idle_worker { - if let Some(data) = queue.workers.running.get_mut(worker) { - data.idle = Some(idle_worker); - - if let Some(job) = queue.queue.pop_front() { - assign(queue, worker, job); - } - } - } else { - // Note it's possible that the worker was purged already by `purge_dead` - queue.workers.running.remove(worker); - - if !queue.queue.is_empty() { - // The worker has died and we still have work we have to do. Request an extra worker. - // - // That can potentially overshoot, but that should be OK. - spawn_extra_worker(queue); - } - } -} - -fn spawn_extra_worker(queue: &mut Queue) { - queue - .mux - .push(spawn_worker_task(queue.program_path.clone(), queue.spawn_timeout).boxed()); - queue.workers.spawn_inflight += 1; -} - -async fn spawn_worker_task(program_path: PathBuf, spawn_timeout: Duration) -> QueueEvent { - use futures_timer::Delay; - - loop { - match super::worker::spawn(&program_path, spawn_timeout).await { - Ok((idle, handle)) => break QueueEvent::Spawn((idle, handle)), - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - "failed to spawn an execute worker: {:?}", - err, - ); - - // Assume that the failure intermittent and retry after a delay. - Delay::new(Duration::from_secs(3)).await; - } - } - } -} - -/// Ask the given worker to perform the given job. -/// -/// The worker must be running and idle. -fn assign(queue: &mut Queue, worker: Worker, job: ExecuteJob) { - let idle = queue - .workers - .claim_idle(worker) - .expect( - "this caller must supply a worker which is idle and running; - thus claim_idle cannot return None; - qed." - ); - queue.mux.push( - async move { - let outcome = super::worker::start_work(idle, job.artifact_path, job.params).await; - QueueEvent::StartWork(worker, outcome, job.result_tx) - } - .boxed(), - ); -} - -pub fn start( - program_path: PathBuf, - worker_capacity: usize, - spawn_timeout: Duration, -) -> (mpsc::Sender, impl Future) { - let (to_queue_tx, to_queue_rx) = mpsc::channel(20); - let run = Queue::new( - program_path, - worker_capacity, - spawn_timeout, - to_queue_rx, - ) - .run(); - (to_queue_tx, run) -} diff --git a/node/core/pvf/src/execute/worker.rs b/node/core/pvf/src/execute/worker.rs deleted file mode 100644 index 3f9466e7cc49..000000000000 --- a/node/core/pvf/src/execute/worker.rs +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - artifacts::Artifact, - LOG_TARGET, - executor_intf::TaskExecutor, - worker_common::{ - IdleWorker, SpawnErr, WorkerHandle, bytes_to_path, framed_recv, framed_send, path_to_bytes, - spawn_with_program_path, worker_event_loop, - }, -}; -use std::time::{Duration, Instant}; -use async_std::{ - io, - os::unix::net::UnixStream, - path::{Path, PathBuf}, -}; -use futures::FutureExt; -use futures_timer::Delay; -use polkadot_parachain::primitives::ValidationResult; -use parity_scale_codec::{Encode, Decode}; - -const EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); - -/// Spawns a new worker with the given program path that acts as the worker and the spawn timeout. -/// -/// The program should be able to handle ` execute-worker ` invocation. -pub async fn spawn( - program_path: &Path, - spawn_timeout: Duration, -) -> Result<(IdleWorker, WorkerHandle), SpawnErr> { - spawn_with_program_path( - "execute", - program_path, - &["execute-worker"], - spawn_timeout, - ) - .await -} - -/// Outcome of PVF execution. -pub enum Outcome { - /// PVF execution completed successfully and the result is returned. The worker is ready for - /// another job. - Ok { - result_descriptor: ValidationResult, - duration_ms: u64, - idle_worker: IdleWorker, - }, - /// The candidate validation failed. It may be for example because the preparation process - /// produced an error or the wasm execution triggered a trap. - InvalidCandidate { - err: String, - idle_worker: IdleWorker, - }, - /// An internal error happened during the validation. Such an error is most likely related to - /// some transient glitch. - InternalError { - err: String, - idle_worker: IdleWorker, - }, - /// The execution time exceeded the hard limit. The worker is terminated. - HardTimeout, - /// An I/O error happened during communication with the worker. This may mean that the worker - /// process already died. The token is not returned in any case. - IoErr, -} - -/// Given the idle token of a worker and parameters of work, communicates with the worker and -/// returns the outcome. -pub async fn start_work( - worker: IdleWorker, - artifact_path: PathBuf, - validation_params: Vec, -) -> Outcome { - let IdleWorker { mut stream, pid } = worker; - - tracing::debug!( - target: LOG_TARGET, - worker_pid = %pid, - "starting execute for {}", - artifact_path.display(), - ); - - if send_request(&mut stream, &artifact_path, &validation_params).await.is_err() { - return Outcome::IoErr; - } - - let response = futures::select! { - response = recv_response(&mut stream).fuse() => { - match response { - Err(_err) => return Outcome::IoErr, - Ok(response) => response, - } - }, - _ = Delay::new(EXECUTION_TIMEOUT).fuse() => return Outcome::HardTimeout, - }; - - match response { - Response::Ok { - result_descriptor, - duration_ms, - } => Outcome::Ok { - result_descriptor, - duration_ms, - idle_worker: IdleWorker { stream, pid }, - }, - Response::InvalidCandidate(err) => Outcome::InvalidCandidate { - err, - idle_worker: IdleWorker { stream, pid }, - }, - Response::InternalError(err) => Outcome::InternalError { - err, - idle_worker: IdleWorker { stream, pid }, - }, - } -} - -async fn send_request( - stream: &mut UnixStream, - artifact_path: &Path, - validation_params: &[u8], -) -> io::Result<()> { - framed_send(stream, path_to_bytes(artifact_path)).await?; - framed_send(stream, validation_params).await -} - -async fn recv_request(stream: &mut UnixStream) -> io::Result<(PathBuf, Vec)> { - let artifact_path = framed_recv(stream).await?; - let artifact_path = bytes_to_path(&artifact_path).ok_or_else(|| { - io::Error::new( - io::ErrorKind::Other, - "execute pvf recv_request: non utf-8 artifact path".to_string(), - ) - })?; - let params = framed_recv(stream).await?; - Ok((artifact_path, params)) -} - -async fn send_response(stream: &mut UnixStream, response: Response) -> io::Result<()> { - framed_send(stream, &response.encode()).await -} - -async fn recv_response(stream: &mut UnixStream) -> io::Result { - let response_bytes = framed_recv(stream).await?; - Response::decode(&mut &response_bytes[..]).map_err(|e| { - io::Error::new( - io::ErrorKind::Other, - format!("execute pvf recv_response: decode error: {:?}", e), - ) - }) -} - -#[derive(Encode, Decode)] -enum Response { - Ok { - result_descriptor: ValidationResult, - duration_ms: u64, - }, - InvalidCandidate(String), - InternalError(String), -} - -impl Response { - fn format_invalid(ctx: &'static str, msg: &str) -> Self { - if msg.is_empty() { - Self::InvalidCandidate(ctx.to_string()) - } else { - Self::InvalidCandidate(format!("{}: {}", ctx, msg)) - } - } -} - -/// The entrypoint that the spawned execute worker should start with. The socket_path specifies -/// the path to the socket used to communicate with the host. -pub fn worker_entrypoint(socket_path: &str) { - worker_event_loop("execute", socket_path, |mut stream| async move { - let executor = TaskExecutor::new().map_err(|e| { - io::Error::new( - io::ErrorKind::Other, - format!("cannot create task executor: {}", e), - ) - })?; - loop { - let (artifact_path, params) = recv_request(&mut stream).await?; - tracing::debug!( - target: LOG_TARGET, - worker_pid = %std::process::id(), - "worker: validating artifact {}", - artifact_path.display(), - ); - let response = validate_using_artifact(&artifact_path, ¶ms, &executor).await; - send_response(&mut stream, response).await?; - } - }); -} - -async fn validate_using_artifact( - artifact_path: &Path, - params: &[u8], - spawner: &TaskExecutor, -) -> Response { - let artifact_bytes = match async_std::fs::read(artifact_path).await { - Err(e) => { - return Response::InternalError(format!( - "failed to read the artifact at {}: {:?}", - artifact_path.display(), - e, - )) - } - Ok(b) => b, - }; - - let artifact = match Artifact::deserialize(&artifact_bytes) { - Err(e) => return Response::InternalError(format!("artifact deserialization: {:?}", e)), - Ok(a) => a, - }; - - let compiled_artifact = match &artifact { - Artifact::PrevalidationErr(msg) => { - return Response::format_invalid("prevalidation", msg); - } - Artifact::PreparationErr(msg) => { - return Response::format_invalid("preparation", msg); - } - Artifact::DidntMakeIt => { - return Response::format_invalid("preparation timeout", ""); - } - - Artifact::Compiled { compiled_artifact } => compiled_artifact, - }; - - let validation_started_at = Instant::now(); - let descriptor_bytes = - match unsafe { - // SAFETY: this should be safe since the compiled artifact passed here comes from the - // file created by the prepare workers. These files are obtained by calling - // [`executor_intf::prepare`]. - crate::executor_intf::execute(compiled_artifact, params, spawner.clone()) - } { - Err(err) => { - return Response::format_invalid("execute", &err.to_string()); - } - Ok(d) => d, - }; - - let duration_ms = validation_started_at.elapsed().as_millis() as u64; - - let result_descriptor = match ValidationResult::decode(&mut &descriptor_bytes[..]) { - Err(err) => { - return Response::InvalidCandidate(format!( - "validation result decoding failed: {}", - err - )) - } - Ok(r) => r, - }; - - Response::Ok { - result_descriptor, - duration_ms, - } -} diff --git a/node/core/pvf/src/executor_intf.rs b/node/core/pvf/src/executor_intf.rs deleted file mode 100644 index 81fc4fb86494..000000000000 --- a/node/core/pvf/src/executor_intf.rs +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Interface to the Substrate Executor - -use std::any::{TypeId, Any}; -use sc_executor_common::{ - runtime_blob::RuntimeBlob, - wasm_runtime::{InvokeMethod, WasmModule as _}, -}; -use sc_executor_wasmtime::{Config, Semantics}; -use sp_core::{ - storage::{ChildInfo, TrackedStorageKey}, -}; -use sp_wasm_interface::HostFunctions as _; - -const CONFIG: Config = Config { - // TODO: Make sure we don't use more than 1GB: https://github.com/paritytech/polkadot/issues/699 - heap_pages: 2048, - allow_missing_func_imports: true, - cache_path: None, - semantics: Semantics { - fast_instance_reuse: false, - stack_depth_metering: false, - }, -}; - -/// Runs the prevaldation on the given code. Returns a [`RuntimeBlob`] if it succeeds. -pub fn prevalidate(code: &[u8]) -> Result { - let blob = RuntimeBlob::new(code)?; - // It's assumed this function will take care of any prevalidation logic - // that needs to be done. - // - // Do nothing for now. - Ok(blob) -} - -/// Runs preparation on the given runtime blob. If successful, it returns a serialized compiled -/// artifact which can then be used to pass into [`execute`]. -pub fn prepare(blob: RuntimeBlob) -> Result, sc_executor_common::error::WasmError> { - sc_executor_wasmtime::prepare_runtime_artifact(blob, &CONFIG.semantics) -} - -/// Executes the given PVF in the form of a compiled artifact and returns the result of execution -/// upon success. -/// -/// # Safety -/// -/// The compiled artifact must be produced with [`prepare`]. Not following this guidance can lead -/// to arbitrary code execution. -pub unsafe fn execute( - compiled_artifact: &[u8], - params: &[u8], - spawner: impl sp_core::traits::SpawnNamed + 'static, -) -> Result, sc_executor_common::error::Error> { - let mut extensions = sp_externalities::Extensions::new(); - - extensions.register(sp_core::traits::TaskExecutorExt::new(spawner)); - extensions.register(sp_core::traits::ReadRuntimeVersionExt::new(ReadRuntimeVersion)); - - let mut ext = ValidationExternalities(extensions); - - sc_executor::with_externalities_safe(&mut ext, || { - let runtime = sc_executor_wasmtime::create_runtime_from_artifact( - compiled_artifact, - CONFIG, - HostFunctions::host_functions(), - )?; - runtime - .new_instance()? - .call(InvokeMethod::Export("validate_block"), params) - })? -} - -type HostFunctions = ( - sp_io::misc::HostFunctions, - sp_io::crypto::HostFunctions, - sp_io::hashing::HostFunctions, - sp_io::allocator::HostFunctions, - sp_io::logging::HostFunctions, - sp_io::trie::HostFunctions, -); - -/// The validation externalities that will panic on any storage related access. -struct ValidationExternalities(sp_externalities::Extensions); - -impl sp_externalities::Externalities for ValidationExternalities { - fn storage(&self, _: &[u8]) -> Option> { - panic!("storage: unsupported feature for parachain validation") - } - - fn storage_hash(&self, _: &[u8]) -> Option> { - panic!("storage_hash: unsupported feature for parachain validation") - } - - fn child_storage_hash(&self, _: &ChildInfo, _: &[u8]) -> Option> { - panic!("child_storage_hash: unsupported feature for parachain validation") - } - - fn child_storage(&self, _: &ChildInfo, _: &[u8]) -> Option> { - panic!("child_storage: unsupported feature for parachain validation") - } - - fn kill_child_storage(&mut self, _: &ChildInfo, _: Option) -> (bool, u32) { - panic!("kill_child_storage: unsupported feature for parachain validation") - } - - fn clear_prefix(&mut self, _: &[u8], _: Option) -> (bool, u32) { - panic!("clear_prefix: unsupported feature for parachain validation") - } - - fn clear_child_prefix(&mut self, _: &ChildInfo, _: &[u8], _: Option) -> (bool, u32) { - panic!("clear_child_prefix: unsupported feature for parachain validation") - } - - fn place_storage(&mut self, _: Vec, _: Option>) { - panic!("place_storage: unsupported feature for parachain validation") - } - - fn place_child_storage(&mut self, _: &ChildInfo, _: Vec, _: Option>) { - panic!("place_child_storage: unsupported feature for parachain validation") - } - - fn storage_root(&mut self) -> Vec { - panic!("storage_root: unsupported feature for parachain validation") - } - - fn child_storage_root(&mut self, _: &ChildInfo) -> Vec { - panic!("child_storage_root: unsupported feature for parachain validation") - } - - fn storage_changes_root(&mut self, _: &[u8]) -> Result>, ()> { - panic!("storage_changes_root: unsupported feature for parachain validation") - } - - fn next_child_storage_key(&self, _: &ChildInfo, _: &[u8]) -> Option> { - panic!("next_child_storage_key: unsupported feature for parachain validation") - } - - fn next_storage_key(&self, _: &[u8]) -> Option> { - panic!("next_storage_key: unsupported feature for parachain validation") - } - - fn storage_append(&mut self, _key: Vec, _value: Vec) { - panic!("storage_append: unsupported feature for parachain validation") - } - - fn storage_start_transaction(&mut self) { - panic!("storage_start_transaction: unsupported feature for parachain validation") - } - - fn storage_rollback_transaction(&mut self) -> Result<(), ()> { - panic!("storage_rollback_transaction: unsupported feature for parachain validation") - } - - fn storage_commit_transaction(&mut self) -> Result<(), ()> { - panic!("storage_commit_transaction: unsupported feature for parachain validation") - } - - fn wipe(&mut self) { - panic!("wipe: unsupported feature for parachain validation") - } - - fn commit(&mut self) { - panic!("commit: unsupported feature for parachain validation") - } - - fn read_write_count(&self) -> (u32, u32, u32, u32) { - panic!("read_write_count: unsupported feature for parachain validation") - } - - fn reset_read_write_count(&mut self) { - panic!("reset_read_write_count: unsupported feature for parachain validation") - } - - fn get_whitelist(&self) -> Vec { - panic!("get_whitelist: unsupported feature for parachain validation") - } - - fn set_whitelist(&mut self, _: Vec) { - panic!("set_whitelist: unsupported feature for parachain validation") - } - - fn set_offchain_storage(&mut self, _: &[u8], _: std::option::Option<&[u8]>) { - panic!("set_offchain_storage: unsupported feature for parachain validation") - } -} - -impl sp_externalities::ExtensionStore for ValidationExternalities { - fn extension_by_type_id(&mut self, type_id: TypeId) -> Option<&mut dyn Any> { - self.0.get_mut(type_id) - } - - fn register_extension_with_type_id( - &mut self, - type_id: TypeId, - extension: Box, - ) -> Result<(), sp_externalities::Error> { - self.0.register_with_type_id(type_id, extension) - } - - fn deregister_extension_by_type_id( - &mut self, - type_id: TypeId, - ) -> Result<(), sp_externalities::Error> { - if self.0.deregister(type_id) { - Ok(()) - } else { - Err(sp_externalities::Error::ExtensionIsNotRegistered(type_id)) - } - } -} - -/// An implementation of `SpawnNamed` on top of a futures' thread pool. -/// -/// This is a light handle meaning it will only clone the handle not create a new thread pool. -#[derive(Clone)] -pub(crate) struct TaskExecutor(futures::executor::ThreadPool); - -impl TaskExecutor { - pub(crate) fn new() -> Result { - futures::executor::ThreadPoolBuilder::new() - .pool_size(4) - .name_prefix("pvf-task-executor") - .create() - .map_err(|e| e.to_string()) - .map(Self) - } -} - -impl sp_core::traits::SpawnNamed for TaskExecutor { - fn spawn_blocking(&self, _: &'static str, future: futures::future::BoxFuture<'static, ()>) { - self.0.spawn_ok(future); - } - - fn spawn(&self, _: &'static str, future: futures::future::BoxFuture<'static, ()>) { - self.0.spawn_ok(future); - } -} - -struct ReadRuntimeVersion; - -impl sp_core::traits::ReadRuntimeVersion for ReadRuntimeVersion { - fn read_runtime_version( - &self, - wasm_code: &[u8], - _ext: &mut dyn sp_externalities::Externalities, - ) -> Result, String> { - let blob = RuntimeBlob::uncompress_if_needed(wasm_code) - .map_err(|e| format!("Failed to read the PVF runtime blob: {:?}", e))?; - - match sc_executor::read_embedded_version(&blob) - .map_err(|e| format!("Failed to read the static section from the PVF blob: {:?}", e))? - { - Some(version) => { - use parity_scale_codec::Encode; - Ok(version.encode()) - }, - None => Err(format!("runtime version section is not found")), - } - } -} diff --git a/node/core/pvf/src/host.rs b/node/core/pvf/src/host.rs deleted file mode 100644 index 1777af3b4ed4..000000000000 --- a/node/core/pvf/src/host.rs +++ /dev/null @@ -1,1040 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Validation host - is the primary interface for this crate. It allows the clients to enqueue -//! jobs for PVF execution or preparation. -//! -//! The validation host is represented by a future/task that runs an event-loop and by a handle, -//! [`ValidationHost`], that allows communication with that event-loop. - -use crate::{ - Priority, Pvf, ValidationError, - artifacts::{Artifacts, ArtifactState, ArtifactId}, - execute, prepare, -}; -use std::{ - collections::HashMap, - time::{Duration, SystemTime}, -}; -use always_assert::never; -use async_std::{ - path::{Path, PathBuf}, -}; -use polkadot_parachain::primitives::ValidationResult; -use futures::{ - Future, FutureExt, SinkExt, StreamExt, - channel::{mpsc, oneshot}, -}; - -/// An alias to not spell the type for the oneshot sender for the PVF execution result. -pub(crate) type ResultSender = oneshot::Sender>; - -/// A handle to the async process serving the validation host requests. -#[derive(Clone)] -pub struct ValidationHost { - to_host_tx: mpsc::Sender, -} - -impl ValidationHost { - /// Execute PVF with the given code, params and priority. The result of execution will be sent - /// to the provided result sender. - /// - /// This is async to accommodate the fact a possibility of back-pressure. In the vast majority of - /// situations this function should return immediately. - /// - /// Returns an error if the request cannot be sent to the validation host, i.e. if it shut down. - pub async fn execute_pvf( - &mut self, - pvf: Pvf, - params: Vec, - priority: Priority, - result_tx: ResultSender, - ) -> Result<(), String> { - self.to_host_tx - .send(ToHost::ExecutePvf { - pvf, - params, - priority, - result_tx, - }) - .await - .map_err(|_| "the inner loop hung up".to_string()) - } - - /// Sends a signal to the validation host requesting to prepare a list of the given PVFs. - /// - /// This is async to accommodate the fact a possibility of back-pressure. In the vast majority of - /// situations this function should return immediately. - /// - /// Returns an error if the request cannot be sent to the validation host, i.e. if it shut down. - pub async fn heads_up(&mut self, active_pvfs: Vec) -> Result<(), String> { - self.to_host_tx - .send(ToHost::HeadsUp { active_pvfs }) - .await - .map_err(|_| "the inner loop hung up".to_string()) - } -} - -enum ToHost { - ExecutePvf { - pvf: Pvf, - params: Vec, - priority: Priority, - result_tx: ResultSender, - }, - HeadsUp { - active_pvfs: Vec, - }, -} - -/// Configuration for the validation host. -pub struct Config { - /// The root directory where the prepared artifacts can be stored. - pub cache_path: PathBuf, - /// The path to the program that can be used to spawn the prepare workers. - pub prepare_worker_program_path: PathBuf, - /// The time alloted for a prepare worker to spawn and report to the host. - pub prepare_worker_spawn_timeout: Duration, - /// The maximum number of workers that can be spawned in the prepare pool for tasks with the - /// priority below critical. - pub prepare_workers_soft_max_num: usize, - /// The absolute number of workers that can be spawned in the prepare pool. - pub prepare_workers_hard_max_num: usize, - /// The path to the program that can be used to spawn the execute workers. - pub execute_worker_program_path: PathBuf, - /// The time alloted for an execute worker to spawn and report to the host. - pub execute_worker_spawn_timeout: Duration, - /// The maximum number of execute workers that can run at the same time. - pub execute_workers_max_num: usize, -} - -impl Config { - /// Create a new instance of the configuration. - pub fn new(cache_path: std::path::PathBuf, program_path: std::path::PathBuf) -> Self { - // Do not contaminate the other parts of the codebase with the types from async_std. - let cache_path = PathBuf::from(cache_path); - let program_path = PathBuf::from(program_path); - - Self { - cache_path, - prepare_worker_program_path: program_path.clone(), - prepare_worker_spawn_timeout: Duration::from_secs(3), - prepare_workers_soft_max_num: 8, - prepare_workers_hard_max_num: 5, - execute_worker_program_path: program_path, - execute_worker_spawn_timeout: Duration::from_secs(3), - execute_workers_max_num: 5, - } - } -} - -/// Start the validation host. -/// -/// Returns a [handle][`ValidationHost`] to the started validation host and the future. The future -/// must be polled in order for validation host to function. -/// -/// The future should not return normally but if it does then that indicates an unrecoverable error. -/// In that case all pending requests will be cancelled, dropping the result senders and new ones -/// will be rejected. -pub fn start(config: Config) -> (ValidationHost, impl Future) { - let (to_host_tx, to_host_rx) = mpsc::channel(10); - - let validation_host = ValidationHost { to_host_tx }; - - let (to_prepare_pool, from_prepare_pool, run_prepare_pool) = prepare::start_pool( - config.prepare_worker_program_path.clone(), - config.cache_path.clone(), - config.prepare_worker_spawn_timeout, - ); - - let (to_prepare_queue_tx, from_prepare_queue_rx, run_prepare_queue) = prepare::start_queue( - config.prepare_workers_soft_max_num, - config.prepare_workers_hard_max_num, - config.cache_path.clone(), - to_prepare_pool, - from_prepare_pool, - ); - - let (to_execute_queue_tx, run_execute_queue) = execute::start( - config.execute_worker_program_path.to_owned(), - config.execute_workers_max_num, - config.execute_worker_spawn_timeout, - ); - - let (to_sweeper_tx, to_sweeper_rx) = mpsc::channel(100); - let run_sweeper = sweeper_task(to_sweeper_rx); - - let run = async move { - let artifacts = Artifacts::new(&config.cache_path).await; - - futures::pin_mut!( - run_prepare_queue, - run_prepare_pool, - run_execute_queue, - run_sweeper - ); - - run( - Inner { - cache_path: config.cache_path, - cleanup_pulse_interval: Duration::from_secs(3600), - artifact_ttl: Duration::from_secs(3600 * 24), - artifacts, - to_host_rx, - to_prepare_queue_tx, - from_prepare_queue_rx, - to_execute_queue_tx, - to_sweeper_tx, - awaiting_prepare: AwaitingPrepare::default(), - }, - run_prepare_pool, - run_prepare_queue, - run_execute_queue, - run_sweeper, - ) - .await - }; - - (validation_host, run) -} - -/// An execution request that should execute the PVF (known in the context) and send the results -/// to the given result sender. -#[derive(Debug)] -struct PendingExecutionRequest { - params: Vec, - result_tx: ResultSender, -} - -/// A mapping from an artifact ID which is in preparation state to the list of pending execution -/// requests that should be executed once the artifact's prepration is finished. -#[derive(Default)] -struct AwaitingPrepare(HashMap>); - -impl AwaitingPrepare { - fn add(&mut self, artifact_id: ArtifactId, params: Vec, result_tx: ResultSender) { - self.0 - .entry(artifact_id) - .or_default() - .push(PendingExecutionRequest { params, result_tx }); - } - - fn take(&mut self, artifact_id: &ArtifactId) -> Vec { - self.0.remove(artifact_id).unwrap_or_default() - } -} - -struct Inner { - cache_path: PathBuf, - cleanup_pulse_interval: Duration, - artifact_ttl: Duration, - artifacts: Artifacts, - - to_host_rx: mpsc::Receiver, - - to_prepare_queue_tx: mpsc::Sender, - from_prepare_queue_rx: mpsc::UnboundedReceiver, - - to_execute_queue_tx: mpsc::Sender, - to_sweeper_tx: mpsc::Sender, - - awaiting_prepare: AwaitingPrepare, -} - -#[derive(Debug)] -struct Fatal; - -async fn run( - Inner { - cache_path, - cleanup_pulse_interval, - artifact_ttl, - mut artifacts, - to_host_rx, - from_prepare_queue_rx, - mut to_prepare_queue_tx, - mut to_execute_queue_tx, - mut to_sweeper_tx, - mut awaiting_prepare, - }: Inner, - prepare_pool: impl Future + Unpin, - prepare_queue: impl Future + Unpin, - execute_queue: impl Future + Unpin, - sweeper: impl Future + Unpin, -) { - macro_rules! break_if_fatal { - ($expr:expr) => { - match $expr { - Err(Fatal) => break, - Ok(v) => v, - } - }; - } - - let cleanup_pulse = pulse_every(cleanup_pulse_interval).fuse(); - futures::pin_mut!(cleanup_pulse); - - let mut to_host_rx = to_host_rx.fuse(); - let mut from_prepare_queue_rx = from_prepare_queue_rx.fuse(); - - // Make sure that the task-futures are fused. - let mut prepare_queue = prepare_queue.fuse(); - let mut prepare_pool = prepare_pool.fuse(); - let mut execute_queue = execute_queue.fuse(); - let mut sweeper = sweeper.fuse(); - - loop { - // biased to make it behave deterministically for tests. - futures::select_biased! { - _ = prepare_queue => { - never!("prepare_pool: long-running task never concludes; qed"); - break; - }, - _ = prepare_pool => { - never!("prepare_pool: long-running task never concludes; qed"); - break; - }, - _ = execute_queue => { - never!("execute_queue: long-running task never concludes; qed"); - break; - }, - _ = sweeper => { - never!("sweeper: long-running task never concludes; qed"); - break; - }, - () = cleanup_pulse.select_next_some() => { - // `select_next_some` because we don't expect this to fail, but if it does, we - // still don't fail. The tradeoff is that the compiled cache will start growing - // in size. That is, however, rather a slow process and hopefully the operator - // will notice it. - - break_if_fatal!(handle_cleanup_pulse( - &cache_path, - &mut to_sweeper_tx, - &mut artifacts, - artifact_ttl, - ).await); - }, - to_host = to_host_rx.next() => { - let to_host = break_if_fatal!(to_host.ok_or(Fatal)); - - break_if_fatal!(handle_to_host( - &cache_path, - &mut artifacts, - &mut to_prepare_queue_tx, - &mut to_execute_queue_tx, - &mut awaiting_prepare, - to_host, - ) - .await); - }, - from_prepare_queue = from_prepare_queue_rx.next() => { - let prepare::FromQueue::Prepared(artifact_id) - = break_if_fatal!(from_prepare_queue.ok_or(Fatal)); - - // Note that preparation always succeeds. - // - // That's because the error conditions are written into the artifact and will be - // reported at the time of the execution. It potentially, but not necessarily, - // can be scheduled as a result of this function call, in case there are pending - // executions. - // - // We could be eager in terms of reporting and plumb the result from the prepartion - // worker but we don't for the sake of simplicity. - break_if_fatal!(handle_prepare_done( - &cache_path, - &mut artifacts, - &mut to_execute_queue_tx, - &mut awaiting_prepare, - artifact_id, - ).await); - }, - } - } -} - -async fn handle_to_host( - cache_path: &Path, - artifacts: &mut Artifacts, - prepare_queue: &mut mpsc::Sender, - execute_queue: &mut mpsc::Sender, - awaiting_prepare: &mut AwaitingPrepare, - to_host: ToHost, -) -> Result<(), Fatal> { - match to_host { - ToHost::ExecutePvf { - pvf, - params, - priority, - result_tx, - } => { - handle_execute_pvf( - cache_path, - artifacts, - prepare_queue, - execute_queue, - awaiting_prepare, - pvf, - params, - priority, - result_tx, - ) - .await?; - } - ToHost::HeadsUp { active_pvfs } => { - handle_heads_up(artifacts, prepare_queue, active_pvfs).await?; - } - } - - Ok(()) -} - -async fn handle_execute_pvf( - cache_path: &Path, - artifacts: &mut Artifacts, - prepare_queue: &mut mpsc::Sender, - execute_queue: &mut mpsc::Sender, - awaiting_prepare: &mut AwaitingPrepare, - pvf: Pvf, - params: Vec, - priority: Priority, - result_tx: ResultSender, -) -> Result<(), Fatal> { - let artifact_id = pvf.as_artifact_id(); - - if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { - match state { - ArtifactState::Prepared { - ref mut last_time_needed, - } => { - *last_time_needed = SystemTime::now(); - - send_execute( - execute_queue, - execute::ToQueue::Enqueue { - artifact_path: artifact_id.path(cache_path), - params, - result_tx, - }, - ) - .await?; - } - ArtifactState::Preparing => { - send_prepare( - prepare_queue, - prepare::ToQueue::Amend { - priority, - artifact_id: artifact_id.clone(), - }, - ) - .await?; - - awaiting_prepare.add(artifact_id, params, result_tx); - } - } - } else { - // Artifact is unknown: register it and enqueue a job with the corresponding priority and - // - artifacts.insert_preparing(artifact_id.clone()); - send_prepare(prepare_queue, prepare::ToQueue::Enqueue { priority, pvf }).await?; - - awaiting_prepare.add(artifact_id, params, result_tx); - } - - return Ok(()); -} - -async fn handle_heads_up( - artifacts: &mut Artifacts, - prepare_queue: &mut mpsc::Sender, - active_pvfs: Vec, -) -> Result<(), Fatal> { - let now = SystemTime::now(); - - for active_pvf in active_pvfs { - let artifact_id = active_pvf.as_artifact_id(); - if let Some(state) = artifacts.artifact_state_mut(&artifact_id) { - match state { - ArtifactState::Prepared { - last_time_needed, .. - } => { - *last_time_needed = now; - } - ArtifactState::Preparing => { - // Already preparing. We don't need to send a priority amend either because - // it can't get any lower than the background. - } - } - } else { - // The artifact is unknown: register it and put a background job into the prepare queue. - artifacts.insert_preparing(artifact_id.clone()); - - send_prepare( - prepare_queue, - prepare::ToQueue::Enqueue { - priority: Priority::Background, - pvf: active_pvf, - }, - ) - .await?; - } - } - - Ok(()) -} - -async fn handle_prepare_done( - cache_path: &Path, - artifacts: &mut Artifacts, - execute_queue: &mut mpsc::Sender, - awaiting_prepare: &mut AwaitingPrepare, - artifact_id: ArtifactId, -) -> Result<(), Fatal> { - // Make some sanity checks and extract the current state. - let state = match artifacts.artifact_state_mut(&artifact_id) { - None => { - // before sending request to prepare, the artifact is inserted with `preparing` state; - // the requests are deduplicated for the same artifact id; - // there is only one possible state change: prepare is done; - // thus the artifact cannot be unknown, only preparing; - // qed. - never!("an unknown artifact was prepared: {:?}", artifact_id); - return Ok(()); - } - Some(ArtifactState::Prepared { .. }) => { - // before sending request to prepare, the artifact is inserted with `preparing` state; - // the requests are deduplicated for the same artifact id; - // there is only one possible state change: prepare is done; - // thus the artifact cannot be prepared, only preparing; - // qed. - never!("the artifact is already prepared: {:?}", artifact_id); - return Ok(()); - } - Some(state @ ArtifactState::Preparing) => state, - }; - - // It's finally time to dispatch all the execution requests that were waiting for this artifact - // to be prepared. - let artifact_path = artifact_id.path(&cache_path); - let pending_requests = awaiting_prepare.take(&artifact_id); - for PendingExecutionRequest { params, result_tx } in pending_requests { - if result_tx.is_canceled() { - // Preparation could've taken quite a bit of time and the requester may be not interested - // in execution anymore, in which case we just skip the request. - continue; - } - - send_execute( - execute_queue, - execute::ToQueue::Enqueue { - artifact_path: artifact_path.clone(), - params, - result_tx, - }, - ) - .await?; - } - - // Now consider the artifact prepared. - *state = ArtifactState::Prepared { - last_time_needed: SystemTime::now(), - }; - - Ok(()) -} - -async fn send_prepare( - prepare_queue: &mut mpsc::Sender, - to_queue: prepare::ToQueue, -) -> Result<(), Fatal> { - prepare_queue.send(to_queue).await.map_err(|_| Fatal) -} - -async fn send_execute( - execute_queue: &mut mpsc::Sender, - to_queue: execute::ToQueue, -) -> Result<(), Fatal> { - execute_queue.send(to_queue).await.map_err(|_| Fatal) -} - -async fn handle_cleanup_pulse( - cache_path: &Path, - sweeper_tx: &mut mpsc::Sender, - artifacts: &mut Artifacts, - artifact_ttl: Duration, -) -> Result<(), Fatal> { - let to_remove = artifacts.prune(artifact_ttl); - for artifact_id in to_remove { - let artifact_path = artifact_id.path(cache_path); - sweeper_tx.send(artifact_path).await.map_err(|_| Fatal)?; - } - - Ok(()) -} - -/// A simple task which sole purpose is to delete files thrown at it. -async fn sweeper_task(mut sweeper_rx: mpsc::Receiver) { - loop { - match sweeper_rx.next().await { - None => break, - Some(condemned) => { - let _ = async_std::fs::remove_file(condemned).await; - } - } - } -} - -/// A stream that yields a pulse continuously at a given interval. -fn pulse_every(interval: std::time::Duration) -> impl futures::Stream { - futures::stream::unfold(interval, { - |interval| async move { - futures_timer::Delay::new(interval).await; - Some(((), interval)) - } - }) - .map(|_| ()) -} - -#[cfg(test)] -mod tests { - use super::*; - use futures::future::BoxFuture; - use assert_matches::assert_matches; - - #[async_std::test] - async fn pulse_test() { - let pulse = pulse_every(Duration::from_millis(100)); - futures::pin_mut!(pulse); - - for _ in 0usize..5usize { - let start = std::time::Instant::now(); - let _ = pulse.next().await.unwrap(); - - let el = start.elapsed().as_millis(); - assert!(el > 50 && el < 150, "{}", el); - } - } - - /// Creates a new pvf which artifact id can be uniquely identified by the given number. - fn artifact_id(descriminator: u32) -> ArtifactId { - Pvf::from_discriminator(descriminator).as_artifact_id() - } - - fn artifact_path(descriminator: u32) -> PathBuf { - artifact_id(descriminator) - .path(&PathBuf::from(std::env::temp_dir())) - .to_owned() - } - - struct Builder { - cleanup_pulse_interval: Duration, - artifact_ttl: Duration, - artifacts: Artifacts, - } - - impl Builder { - fn default() -> Self { - Self { - // these are selected high to not interfere in tests in which pruning is irrelevant. - cleanup_pulse_interval: Duration::from_secs(3600), - artifact_ttl: Duration::from_secs(3600), - - artifacts: Artifacts::empty(), - } - } - - fn build(self) -> Test { - Test::new(self) - } - } - - struct Test { - to_host_tx: Option>, - - to_prepare_queue_rx: mpsc::Receiver, - from_prepare_queue_tx: mpsc::UnboundedSender, - to_execute_queue_rx: mpsc::Receiver, - to_sweeper_rx: mpsc::Receiver, - - run: BoxFuture<'static, ()>, - } - - impl Test { - fn new( - Builder { - cleanup_pulse_interval, - artifact_ttl, - artifacts, - }: Builder, - ) -> Self { - let cache_path = PathBuf::from(std::env::temp_dir()); - - let (to_host_tx, to_host_rx) = mpsc::channel(10); - let (to_prepare_queue_tx, to_prepare_queue_rx) = mpsc::channel(10); - let (from_prepare_queue_tx, from_prepare_queue_rx) = mpsc::unbounded(); - let (to_execute_queue_tx, to_execute_queue_rx) = mpsc::channel(10); - let (to_sweeper_tx, to_sweeper_rx) = mpsc::channel(10); - - let mk_dummy_loop = || std::future::pending().boxed(); - - let run = run( - Inner { - cache_path, - cleanup_pulse_interval, - artifact_ttl, - artifacts, - to_host_rx, - to_prepare_queue_tx, - from_prepare_queue_rx, - to_execute_queue_tx, - to_sweeper_tx, - awaiting_prepare: AwaitingPrepare::default(), - }, - mk_dummy_loop(), - mk_dummy_loop(), - mk_dummy_loop(), - mk_dummy_loop(), - ) - .boxed(); - - Self { - to_host_tx: Some(to_host_tx), - to_prepare_queue_rx, - from_prepare_queue_tx, - to_execute_queue_rx, - to_sweeper_rx, - run, - } - } - - fn host_handle(&mut self) -> ValidationHost { - let to_host_tx = self.to_host_tx.take().unwrap(); - ValidationHost { to_host_tx } - } - - async fn poll_and_recv_to_prepare_queue(&mut self) -> prepare::ToQueue { - let to_prepare_queue_rx = &mut self.to_prepare_queue_rx; - run_until( - &mut self.run, - async { to_prepare_queue_rx.next().await.unwrap() }.boxed(), - ) - .await - } - - async fn poll_and_recv_to_execute_queue(&mut self) -> execute::ToQueue { - let to_execute_queue_rx = &mut self.to_execute_queue_rx; - run_until( - &mut self.run, - async { to_execute_queue_rx.next().await.unwrap() }.boxed(), - ) - .await - } - - async fn poll_ensure_to_execute_queue_is_empty(&mut self) { - use futures_timer::Delay; - - let to_execute_queue_rx = &mut self.to_execute_queue_rx; - run_until( - &mut self.run, - async { - futures::select! { - _ = Delay::new(Duration::from_millis(500)).fuse() => (), - _ = to_execute_queue_rx.next().fuse() => { - panic!("the execute queue supposed to be empty") - } - } - } - .boxed(), - ) - .await - } - - async fn poll_ensure_to_sweeper_is_empty(&mut self) { - use futures_timer::Delay; - - let to_sweeper_rx = &mut self.to_sweeper_rx; - run_until( - &mut self.run, - async { - futures::select! { - _ = Delay::new(Duration::from_millis(500)).fuse() => (), - msg = to_sweeper_rx.next().fuse() => { - panic!("the sweeper supposed to be empty, but received: {:?}", msg) - } - } - } - .boxed(), - ) - .await - } - } - - async fn run_until( - task: &mut (impl Future + Unpin), - mut fut: (impl Future + Unpin), - ) -> R { - use std::task::Poll; - - let start = std::time::Instant::now(); - let fut = &mut fut; - loop { - if start.elapsed() > std::time::Duration::from_secs(2) { - // We expect that this will take only a couple of iterations and thus to take way - // less than a second. - panic!("timeout"); - } - - if let Poll::Ready(r) = futures::poll!(&mut *fut) { - break r; - } - - if futures::poll!(&mut *task).is_ready() { - panic!() - } - } - } - - #[async_std::test] - async fn shutdown_on_handle_drop() { - let test = Builder::default().build(); - - let join_handle = async_std::task::spawn(test.run); - - // Dropping the handle will lead to conclusion of the read part and thus will make the event - // loop to stop, which in turn will resolve the join handle. - drop(test.to_host_tx); - join_handle.await; - } - - #[async_std::test] - async fn pruning() { - let mock_now = SystemTime::now() - Duration::from_millis(1000); - - let mut builder = Builder::default(); - builder.cleanup_pulse_interval = Duration::from_millis(100); - builder.artifact_ttl = Duration::from_millis(500); - builder.artifacts.insert_prepared(artifact_id(1), mock_now); - builder.artifacts.insert_prepared(artifact_id(2), mock_now); - let mut test = builder.build(); - let mut host = test.host_handle(); - - host.heads_up(vec![Pvf::from_discriminator(1)]) - .await - .unwrap(); - - let to_sweeper_rx = &mut test.to_sweeper_rx; - run_until( - &mut test.run, - async { - assert_eq!(to_sweeper_rx.next().await.unwrap(), artifact_path(2)); - } - .boxed(), - ) - .await; - - // Extend TTL for the first artifact and make sure we don't receive another file removal - // request. - host.heads_up(vec![Pvf::from_discriminator(1)]) - .await - .unwrap(); - test.poll_ensure_to_sweeper_is_empty().await; - } - - #[async_std::test] - async fn amending_priority() { - let mut test = Builder::default().build(); - let mut host = test.host_handle(); - - host.heads_up(vec![Pvf::from_discriminator(1)]) - .await - .unwrap(); - - // Run until we receive a prepare request. - let prepare_q_rx = &mut test.to_prepare_queue_rx; - run_until( - &mut test.run, - async { - assert_matches!( - prepare_q_rx.next().await.unwrap(), - prepare::ToQueue::Enqueue { .. } - ); - } - .boxed(), - ) - .await; - - let (result_tx, _result_rx) = oneshot::channel(); - host.execute_pvf( - Pvf::from_discriminator(1), - vec![], - Priority::Critical, - result_tx, - ) - .await - .unwrap(); - - run_until( - &mut test.run, - async { - assert_matches!( - prepare_q_rx.next().await.unwrap(), - prepare::ToQueue::Amend { .. } - ); - } - .boxed(), - ) - .await; - } - - #[async_std::test] - async fn execute_pvf_requests() { - use crate::error::InvalidCandidate; - - let mut test = Builder::default().build(); - let mut host = test.host_handle(); - - let (result_tx, result_rx_pvf_1_1) = oneshot::channel(); - host.execute_pvf( - Pvf::from_discriminator(1), - b"pvf1".to_vec(), - Priority::Normal, - result_tx, - ) - .await - .unwrap(); - - let (result_tx, result_rx_pvf_1_2) = oneshot::channel(); - host.execute_pvf( - Pvf::from_discriminator(1), - b"pvf1".to_vec(), - Priority::Critical, - result_tx, - ) - .await - .unwrap(); - - let (result_tx, result_rx_pvf_2) = oneshot::channel(); - host.execute_pvf( - Pvf::from_discriminator(2), - b"pvf2".to_vec(), - Priority::Normal, - result_tx, - ) - .await - .unwrap(); - - assert_matches!( - test.poll_and_recv_to_prepare_queue().await, - prepare::ToQueue::Enqueue { .. } - ); - assert_matches!( - test.poll_and_recv_to_prepare_queue().await, - prepare::ToQueue::Amend { .. } - ); - assert_matches!( - test.poll_and_recv_to_prepare_queue().await, - prepare::ToQueue::Enqueue { .. } - ); - - test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(1))) - .await - .unwrap(); - let result_tx_pvf_1_1 = assert_matches!( - test.poll_and_recv_to_execute_queue().await, - execute::ToQueue::Enqueue { result_tx, .. } => result_tx - ); - let result_tx_pvf_1_2 = assert_matches!( - test.poll_and_recv_to_execute_queue().await, - execute::ToQueue::Enqueue { result_tx, .. } => result_tx - ); - - test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(2))) - .await - .unwrap(); - let result_tx_pvf_2 = assert_matches!( - test.poll_and_recv_to_execute_queue().await, - execute::ToQueue::Enqueue { result_tx, .. } => result_tx - ); - - result_tx_pvf_1_1 - .send(Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - ))) - .unwrap(); - assert_matches!( - result_rx_pvf_1_1.now_or_never().unwrap().unwrap(), - Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - )) - ); - - result_tx_pvf_1_2 - .send(Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - ))) - .unwrap(); - assert_matches!( - result_rx_pvf_1_2.now_or_never().unwrap().unwrap(), - Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - )) - ); - - result_tx_pvf_2 - .send(Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - ))) - .unwrap(); - assert_matches!( - result_rx_pvf_2.now_or_never().unwrap().unwrap(), - Err(ValidationError::InvalidCandidate( - InvalidCandidate::AmbigiousWorkerDeath, - )) - ); - } - - #[async_std::test] - async fn cancellation() { - let mut test = Builder::default().build(); - let mut host = test.host_handle(); - - let (result_tx, result_rx) = oneshot::channel(); - host.execute_pvf( - Pvf::from_discriminator(1), - b"pvf1".to_vec(), - Priority::Normal, - result_tx, - ) - .await - .unwrap(); - - assert_matches!( - test.poll_and_recv_to_prepare_queue().await, - prepare::ToQueue::Enqueue { .. } - ); - - test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(1))) - .await - .unwrap(); - - drop(result_rx); - - test.poll_ensure_to_execute_queue_is_empty().await; - } -} diff --git a/node/core/pvf/src/lib.rs b/node/core/pvf/src/lib.rs deleted file mode 100644 index d29887edba2b..000000000000 --- a/node/core/pvf/src/lib.rs +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -#![warn(missing_docs)] - -//! A crate that implements PVF validation host. -//! -//! This crate provides a simple API. You first [`start`] the validation host, which gives you the -//! [handle][`ValidationHost`] and the future you need to poll. -//! -//! Then using the handle the client can send two types of requests: -//! -//! (a) PVF execution. This accepts the PVF [params][`polkadot_parachain::primitives::ValidationParams`] -//! and the PVF [code][`Pvf`], prepares (verifies and compiles) the code, and then executes PVF -//! with the params. -//! -//! (b) Heads up. This request allows to signal that the given PVF may be needed soon and that it -//! should be prepared for execution. -//! -//! The preparation results are cached for some time after they either used or was signalled in heads up. -//! All requests that depends on preparation of the same PVF are bundled together and will be executed -//! as soon as the artifact is prepared. -//! -//! # Priority -//! -//! PVF execution requests can specify the [priority][`Priority`] with which the given request should -//! be handled. Different priority levels have different effects. This is discussed below. -//! -//! Preparation started by a heads up signal always starts in with the background priority. If there -//! is already a request for that PVF preparation under way the priority is inherited. If after heads -//! up, a new PVF execution request comes in with a higher priority, then the original task's priority -//! will be adjusted to match the new one if it's larger. -//! -//! Priority can never go down, only up. -//! -//! # Under the hood -//! -//! Under the hood, the validation host is built using a bunch of communicating processes, not -//! dissimilar to actors. Each of such "processes" is a future task that contains an event loop that -//! processes incoming messages, potentially delegating sub-tasks to other "processes". -//! -//! Two of these processes are queues. The first one is for preparation jobs and the second one is for -//! execution. Both of the queues are backed by separate pools of workers of different kind. -//! -//! Preparation workers handle preparation requests by preverifying and instrumenting PVF wasm code, -//! and then passing it into the compiler, to prepare the artifact. -//! -//! Artifact is a final product of preparation. If the preparation succeeded, then the artifact will -//! contain the compiled code usable for quick execution by a worker later on. -//! -//! If the preparation failed, then the worker will still write the artifact with the error message. -//! We save the artifact with the error so that we don't try to prepare the artifacts that are broken -//! repeatedly. -//! -//! The artifact is saved on disk and is also tracked by an in memory table. This in memory table -//! doesn't contain the artifact contents though, only a flag that the given artifact is compiled. -//! -//! The execute workers will be fed by the requests from the execution queue, which is basically a -//! combination of a path to the compiled artifact and the -//! [params][`polkadot_parachain::primitives::ValidationParams`]. -//! -//! Each fixed interval of time a pruning task will run. This task will remove all artifacts that -//! weren't used or received a heads up signal for a while. - -mod artifacts; -mod error; -mod execute; -mod executor_intf; -mod host; -mod prepare; -mod priority; -mod pvf; -mod worker_common; - -#[doc(hidden)] -pub mod testing; - -pub use error::{ValidationError, InvalidCandidate}; -pub use priority::Priority; -pub use pvf::Pvf; - -pub use host::{start, Config, ValidationHost}; - -pub use execute::worker_entrypoint as execute_worker_entrypoint; -pub use prepare::worker_entrypoint as prepare_worker_entrypoint; - -const LOG_TARGET: &str = "parachain::pvf"; diff --git a/node/core/pvf/src/prepare/mod.rs b/node/core/pvf/src/prepare/mod.rs deleted file mode 100644 index 080dd069e29d..000000000000 --- a/node/core/pvf/src/prepare/mod.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Preparation part of pipeline -//! -//! The validation host spins up two processes: the queue (by running [`start_queue`]) and the pool -//! (by running [`start_pool`]). -//! -//! The pool will spawn workers in new processes and those should execute pass control to -//! [`worker_entrypoint`]. - -mod pool; -mod queue; -mod worker; - -pub use queue::{ToQueue, FromQueue, start as start_queue}; -pub use pool::start as start_pool; -pub use worker::worker_entrypoint; diff --git a/node/core/pvf/src/prepare/pool.rs b/node/core/pvf/src/prepare/pool.rs deleted file mode 100644 index 618c71e25383..000000000000 --- a/node/core/pvf/src/prepare/pool.rs +++ /dev/null @@ -1,351 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - worker_common::{IdleWorker, WorkerHandle}, - LOG_TARGET, -}; -use super::{ - worker::{self, Outcome}, -}; -use std::{fmt, sync::Arc, task::Poll, time::Duration}; -use async_std::path::{Path, PathBuf}; -use futures::{ - Future, FutureExt, StreamExt, channel::mpsc, future::BoxFuture, stream::FuturesUnordered, -}; -use slotmap::HopSlotMap; -use assert_matches::assert_matches; -use always_assert::never; - -slotmap::new_key_type! { pub struct Worker; } - -/// Messages that the pool handles. -#[derive(Debug, PartialEq, Eq)] -pub enum ToPool { - /// Request a new worker to spawn. - /// - /// This request won't fail in case if the worker cannot be created. Instead, we consider - /// the failures transient and we try to spawn a worker after a delay. - /// - /// [`FromPool::Spawned`] will be returned as soon as the worker is spawned. - /// - /// The client should anticipate a [`FromPool::Rip`] message, in case the spawned worker was - /// stopped for some reason. - Spawn, - - /// Kill the given worker. No-op if the given worker is not running. - /// - /// [`FromPool::Rip`] won't be sent in this case. However, the client should be prepared to - /// receive [`FromPool::Rip`] nonetheless, since the worker may be have been ripped before - /// this message is processed. - Kill(Worker), - - /// If the given worker was started with the background priority, then it will be raised up to - /// normal priority. Otherwise, it's no-op. - BumpPriority(Worker), - - /// Request the given worker to start working on the given code. - /// - /// Once the job either succeeded or failed, a [`FromPool::Concluded`] message will be sent back. - /// - /// This should not be sent again until the concluded message is received. - StartWork { - worker: Worker, - code: Arc>, - artifact_path: PathBuf, - background_priority: bool, - }, -} - -/// A message sent from pool to its client. -#[derive(Debug)] -pub enum FromPool { - /// The given worker was just spawned and is ready to be used. - Spawned(Worker), - - /// The given worker either succeeded or failed the given job. Under any circumstances the - /// artifact file has been written. The bool says whether the worker ripped. - Concluded(Worker, bool), - - /// The given worker ceased to exist. - Rip(Worker), -} - -struct WorkerData { - idle: Option, - handle: WorkerHandle, -} - -impl fmt::Debug for WorkerData { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "WorkerData(pid={})", self.handle.id()) - } -} - -enum PoolEvent { - Spawn(IdleWorker, WorkerHandle), - StartWork(Worker, Outcome), -} - -type Mux = FuturesUnordered>; - -struct Pool { - program_path: PathBuf, - cache_path: PathBuf, - spawn_timeout: Duration, - to_pool: mpsc::Receiver, - from_pool: mpsc::UnboundedSender, - spawned: HopSlotMap, - mux: Mux, -} - -/// A fatal error that warrants stopping the event loop of the pool. -struct Fatal; - -async fn run( - Pool { - program_path, - cache_path, - spawn_timeout, - to_pool, - mut from_pool, - mut spawned, - mut mux, - }: Pool, -) { - macro_rules! break_if_fatal { - ($expr:expr) => { - match $expr { - Err(Fatal) => break, - Ok(v) => v, - } - }; - } - - let mut to_pool = to_pool.fuse(); - - loop { - futures::select! { - to_pool = to_pool.next() => { - let to_pool = break_if_fatal!(to_pool.ok_or(Fatal)); - handle_to_pool( - &program_path, - &cache_path, - spawn_timeout, - &mut spawned, - &mut mux, - to_pool, - ) - } - ev = mux.select_next_some() => break_if_fatal!(handle_mux(&mut from_pool, &mut spawned, ev)), - } - - break_if_fatal!(purge_dead(&mut from_pool, &mut spawned).await); - } -} - -async fn purge_dead( - from_pool: &mut mpsc::UnboundedSender, - spawned: &mut HopSlotMap, -) -> Result<(), Fatal> { - let mut to_remove = vec![]; - for (worker, data) in spawned.iter_mut() { - if data.idle.is_none() { - // The idle token is missing, meaning this worker is now occupied: skip it. This is - // because the worker process is observed by the work task and should it reach the - // deadline or be terminated it will be handled by the corresponding mux event. - continue; - } - - if let Poll::Ready(()) = futures::poll!(&mut data.handle) { - // a resolved future means that the worker has terminated. Weed it out. - to_remove.push(worker); - } - } - for w in to_remove { - let _ = spawned.remove(w); - reply(from_pool, FromPool::Rip(w))?; - } - Ok(()) -} - -fn handle_to_pool( - program_path: &Path, - cache_path: &Path, - spawn_timeout: Duration, - spawned: &mut HopSlotMap, - mux: &mut Mux, - to_pool: ToPool, -) { - match to_pool { - ToPool::Spawn => { - mux.push(spawn_worker_task(program_path.to_owned(), spawn_timeout).boxed()); - } - ToPool::StartWork { - worker, - code, - artifact_path, - background_priority, - } => { - if let Some(data) = spawned.get_mut(worker) { - if let Some(idle) = data.idle.take() { - mux.push( - start_work_task( - worker, - idle, - code, - cache_path.to_owned(), - artifact_path, - background_priority - ) - .boxed(), - ); - } else { - // idle token is present after spawn and after a job is concluded; - // the precondition for `StartWork` is it should be sent only if all previous work - // items concluded; - // thus idle token is Some; - // qed. - never!("unexpected abscence of the idle token in prepare pool"); - } - } else { - // That's a relatively normal situation since the queue may send `start_work` and - // before receiving it the pool would report that the worker died. - } - } - ToPool::Kill(worker) => { - // It may be absent if it were previously already removed by `purge_dead`. - let _ = spawned.remove(worker); - } - ToPool::BumpPriority(worker) => { - if let Some(data) = spawned.get(worker) { - worker::bump_priority(&data.handle); - } - } - } -} - -async fn spawn_worker_task(program_path: PathBuf, spawn_timeout: Duration) -> PoolEvent { - use futures_timer::Delay; - - loop { - match worker::spawn(&program_path, spawn_timeout).await { - Ok((idle, handle)) => break PoolEvent::Spawn(idle, handle), - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - "failed to spawn a prepare worker: {:?}", - err, - ); - - // Assume that the failure intermittent and retry after a delay. - Delay::new(Duration::from_secs(3)).await; - } - } - } -} - -async fn start_work_task( - worker: Worker, - idle: IdleWorker, - code: Arc>, - cache_path: PathBuf, - artifact_path: PathBuf, - background_priority: bool, -) -> PoolEvent { - let outcome = - worker::start_work(idle, code, &cache_path, artifact_path, background_priority).await; - PoolEvent::StartWork(worker, outcome) -} - -fn handle_mux( - from_pool: &mut mpsc::UnboundedSender, - spawned: &mut HopSlotMap, - event: PoolEvent, -) -> Result<(), Fatal> { - match event { - PoolEvent::Spawn(idle, handle) => { - let worker = spawned.insert(WorkerData { - idle: Some(idle), - handle, - }); - - reply(from_pool, FromPool::Spawned(worker))?; - - Ok(()) - } - PoolEvent::StartWork(worker, outcome) => { - match outcome { - Outcome::Concluded(idle) => { - let data = match spawned.get_mut(worker) { - None => { - // Perhaps the worker was killed meanwhile and the result is no longer - // relevant. - return Ok(()); - } - Some(data) => data, - }; - - // We just replace the idle worker that was loaned from this option during - // the work starting. - let old = data.idle.replace(idle); - assert_matches!(old, None, "attempt to overwrite an idle worker"); - - reply(from_pool, FromPool::Concluded(worker, false))?; - - Ok(()) - } - Outcome::DidntMakeIt => { - if let Some(_data) = spawned.remove(worker) { - reply(from_pool, FromPool::Concluded(worker, true))?; - } - - Ok(()) - } - } - } - } -} - -fn reply(from_pool: &mut mpsc::UnboundedSender, m: FromPool) -> Result<(), Fatal> { - from_pool.unbounded_send(m).map_err(|_| Fatal) -} - -/// Spins up the pool and returns the future that should be polled to make the pool functional. -pub fn start( - program_path: PathBuf, - cache_path: PathBuf, - spawn_timeout: Duration, -) -> ( - mpsc::Sender, - mpsc::UnboundedReceiver, - impl Future, -) { - let (to_pool_tx, to_pool_rx) = mpsc::channel(10); - let (from_pool_tx, from_pool_rx) = mpsc::unbounded(); - - let run = run(Pool { - program_path, - cache_path, - spawn_timeout, - to_pool: to_pool_rx, - from_pool: from_pool_tx, - spawned: HopSlotMap::with_capacity_and_key(20), - mux: Mux::new(), - }); - - (to_pool_tx, from_pool_rx, run) -} diff --git a/node/core/pvf/src/prepare/queue.rs b/node/core/pvf/src/prepare/queue.rs deleted file mode 100644 index b81a47ee9918..000000000000 --- a/node/core/pvf/src/prepare/queue.rs +++ /dev/null @@ -1,894 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A queue that handles requests for PVF preparation. - -use super::{ - pool::{self, Worker}, -}; -use crate::{LOG_TARGET, Priority, Pvf, artifacts::ArtifactId}; -use futures::{Future, SinkExt, channel::mpsc, stream::StreamExt as _}; -use std::collections::{HashMap, VecDeque}; -use async_std::path::PathBuf; -use always_assert::{always, never}; - -/// A request to pool. -#[derive(Debug)] -pub enum ToQueue { - /// This schedules preparation of the given PVF. - /// - /// Note that it is incorrect to enqueue the same PVF again without first receiving the - /// [`FromQueue::Prepared`] response. In case there is a need to bump the priority, use - /// [`ToQueue::Amend`]. - Enqueue { priority: Priority, pvf: Pvf }, - /// Amends the priority for the given [`ArtifactId`] if it is running. If it's not, then it's noop. - Amend { - priority: Priority, - artifact_id: ArtifactId, - }, -} - -/// A response from queue. -#[derive(Debug, PartialEq, Eq)] -pub enum FromQueue { - Prepared(ArtifactId), -} - -#[derive(Default)] -struct Limits { - /// The maximum number of workers this pool can ever host. This is expected to be a small - /// number, e.g. within a dozen. - hard_capacity: usize, - - /// The number of workers we want aim to have. If there is a critical job and we are already - /// at `soft_capacity`, we are allowed to grow up to `hard_capacity`. Thus this should be equal - /// or smaller than `hard_capacity`. - soft_capacity: usize, -} - -impl Limits { - /// Returns `true` if the queue is allowed to request one more worker. - fn can_afford_one_more(&self, spawned_num: usize, critical: bool) -> bool { - let cap = if critical { - self.hard_capacity - } else { - self.soft_capacity - }; - spawned_num < cap - } - - /// Offer the worker back to the pool. The passed worker ID must be considered unusable unless - /// it wasn't taken by the pool, in which case it will be returned as `Some`. - fn should_cull(&mut self, spawned_num: usize) -> bool { - spawned_num > self.soft_capacity - } -} - -slotmap::new_key_type! { pub struct Job; } - -struct JobData { - /// The priority of this job. Can be bumped. - priority: Priority, - pvf: Pvf, - worker: Option, -} - -#[derive(Default)] -struct WorkerData { - job: Option, -} - -impl WorkerData { - fn is_idle(&self) -> bool { - self.job.is_none() - } -} - -/// A queue structured like this is prone to starving, however, we don't care that much since we expect -/// there is going to be a limited number of critical jobs and we don't really care if background starve. -#[derive(Default)] -struct Unscheduled { - background: VecDeque, - normal: VecDeque, - critical: VecDeque, -} - -impl Unscheduled { - fn queue_mut(&mut self, prio: Priority) -> &mut VecDeque { - match prio { - Priority::Background => &mut self.background, - Priority::Normal => &mut self.normal, - Priority::Critical => &mut self.critical, - } - } - - fn add(&mut self, prio: Priority, job: Job) { - self.queue_mut(prio).push_back(job); - } - - fn readd(&mut self, prio: Priority, job: Job) { - self.queue_mut(prio).push_front(job); - } - - fn is_empty(&self) -> bool { - self.background.is_empty() && self.normal.is_empty() && self.critical.is_empty() - } - - fn next(&mut self) -> Option { - let mut check = |prio: Priority| self.queue_mut(prio).pop_front(); - check(Priority::Critical) - .or_else(|| check(Priority::Normal)) - .or_else(|| check(Priority::Background)) - } -} - -struct Queue { - to_queue_rx: mpsc::Receiver, - from_queue_tx: mpsc::UnboundedSender, - - to_pool_tx: mpsc::Sender, - from_pool_rx: mpsc::UnboundedReceiver, - - cache_path: PathBuf, - limits: Limits, - - jobs: slotmap::SlotMap, - - /// A mapping from artifact id to a job. - artifact_id_to_job: HashMap, - /// The registry of all workers. - workers: slotmap::SparseSecondaryMap, - /// The number of workers requested to spawn but not yet spawned. - spawn_inflight: usize, - - /// The jobs that are not yet scheduled. These are waiting until the next `poll` where they are - /// processed all at once. - unscheduled: Unscheduled, -} - -/// A fatal error that warrants stopping the queue. -struct Fatal; - -impl Queue { - fn new( - soft_capacity: usize, - hard_capacity: usize, - cache_path: PathBuf, - to_queue_rx: mpsc::Receiver, - from_queue_tx: mpsc::UnboundedSender, - to_pool_tx: mpsc::Sender, - from_pool_rx: mpsc::UnboundedReceiver, - ) -> Self { - Self { - to_queue_rx, - from_queue_tx, - to_pool_tx, - from_pool_rx, - cache_path, - spawn_inflight: 0, - limits: Limits { - hard_capacity, - soft_capacity, - }, - jobs: slotmap::SlotMap::with_key(), - unscheduled: Unscheduled::default(), - artifact_id_to_job: HashMap::new(), - workers: slotmap::SparseSecondaryMap::new(), - } - } - - async fn run(mut self) { - macro_rules! break_if_fatal { - ($expr:expr) => { - if let Err(Fatal) = $expr { - break; - } - }; - } - - loop { - // biased to make it behave deterministically for tests. - futures::select_biased! { - to_queue = self.to_queue_rx.select_next_some() => - break_if_fatal!(handle_to_queue(&mut self, to_queue).await), - from_pool = self.from_pool_rx.select_next_some() => - break_if_fatal!(handle_from_pool(&mut self, from_pool).await), - } - } - } -} - -async fn handle_to_queue(queue: &mut Queue, to_queue: ToQueue) -> Result<(), Fatal> { - match to_queue { - ToQueue::Enqueue { priority, pvf } => { - handle_enqueue(queue, priority, pvf).await?; - } - ToQueue::Amend { - priority, - artifact_id, - } => { - handle_amend(queue, priority, artifact_id).await?; - } - } - Ok(()) -} - -async fn handle_enqueue(queue: &mut Queue, priority: Priority, pvf: Pvf) -> Result<(), Fatal> { - let artifact_id = pvf.as_artifact_id(); - if never!( - queue.artifact_id_to_job.contains_key(&artifact_id), - "second Enqueue sent for a known artifact" - ) { - // This function is called in response to a `Enqueue` message; - // Precondtion for `Enqueue` is that it is sent only once for a PVF; - // Thus this should always be `false`; - // qed. - tracing::warn!( - target: LOG_TARGET, - "duplicate `enqueue` command received for {:?}", - artifact_id, - ); - return Ok(()); - } - - let job = queue.jobs.insert(JobData { - priority, - pvf, - worker: None, - }); - queue.artifact_id_to_job.insert(artifact_id, job); - - if let Some(available) = find_idle_worker(queue) { - // This may seem not fair (w.r.t priority) on the first glance, but it should be. This is - // because as soon as a worker finishes with the job it's immediatelly given the next one. - assign(queue, available, job).await?; - } else { - spawn_extra_worker(queue, priority.is_critical()).await?; - queue.unscheduled.add(priority, job); - } - - Ok(()) -} - -fn find_idle_worker(queue: &mut Queue) -> Option { - queue - .workers - .iter() - .filter(|(_, data)| data.is_idle()) - .map(|(k, _)| k) - .next() -} - -async fn handle_amend( - queue: &mut Queue, - priority: Priority, - artifact_id: ArtifactId, -) -> Result<(), Fatal> { - if let Some(&job) = queue.artifact_id_to_job.get(&artifact_id) { - let mut job_data: &mut JobData = &mut queue.jobs[job]; - - if job_data.priority < priority { - // The new priority is higher. We should do two things: - // - if the worker was already spawned with the background prio and the new one is not - // (it's already the case, if we are in this branch but we still do the check for - // clarity), then we should tell the pool to bump the priority for the worker. - // - // - save the new priority in the job. - - if let Some(worker) = job_data.worker { - if job_data.priority.is_background() && !priority.is_background() { - send_pool(&mut queue.to_pool_tx, pool::ToPool::BumpPriority(worker)).await?; - } - } - - job_data.priority = priority; - } - } - - Ok(()) -} - -async fn handle_from_pool(queue: &mut Queue, from_pool: pool::FromPool) -> Result<(), Fatal> { - use pool::FromPool::*; - match from_pool { - Spawned(worker) => handle_worker_spawned(queue, worker).await?, - Concluded(worker, rip) => handle_worker_concluded(queue, worker, rip).await?, - Rip(worker) => handle_worker_rip(queue, worker).await?, - } - Ok(()) -} - -async fn handle_worker_spawned(queue: &mut Queue, worker: Worker) -> Result<(), Fatal> { - queue.workers.insert(worker, WorkerData::default()); - queue.spawn_inflight -= 1; - - if let Some(job) = queue.unscheduled.next() { - assign(queue, worker, job).await?; - } - - Ok(()) -} - -async fn handle_worker_concluded( - queue: &mut Queue, - worker: Worker, - rip: bool, -) -> Result<(), Fatal> { - macro_rules! never_none { - ($expr:expr) => { - match $expr { - Some(v) => v, - None => { - // Precondition of calling this is that the $expr is never none; - // Assume the conditions holds, then this never is not hit; - // qed. - never!("never_none, {}", stringify!($expr)); - return Ok(()); - } - } - }; - } - - // Find out on which artifact was the worker working. - - // workers are registered upon spawn and removed in one of the following cases: - // 1. received rip signal - // 2. received concluded signal with rip=true; - // concluded signal only comes from a spawned worker and only once; - // rip signal is not sent after conclusion with rip=true; - // the worker should be registered; - // this can't be None; - // qed. - let worker_data = never_none!(queue.workers.get_mut(worker)); - - // worker_data.job is set only by `assign` and removed only here for a worker; - // concluded signal only comes for a worker that was previously assigned and only once; - // the worker should have the job; - // this can't be None; - // qed. - let job = never_none!(worker_data.job.take()); - - // job_data is inserted upon enqueue and removed only here; - // as was established above, this worker was previously `assign`ed to the job; - // that implies that the job was enqueued; - // conclude signal only comes once; - // we are just to remove the job for the first and the only time; - // this can't be None; - // qed. - let job_data = never_none!(queue.jobs.remove(job)); - let artifact_id = job_data.pvf.as_artifact_id(); - - queue.artifact_id_to_job.remove(&artifact_id); - - reply(&mut queue.from_queue_tx, FromQueue::Prepared(artifact_id))?; - - // Figure out what to do with the worker. - if rip { - let worker_data = queue.workers.remove(worker); - // worker should exist, it's asserted above; - // qed. - always!(worker_data.is_some()); - - if !queue.unscheduled.is_empty() { - // That is unconditionally not critical just to not accidentally fill up - // the pool up to the hard cap. - spawn_extra_worker(queue, false).await?; - } - } else { - if queue - .limits - .should_cull(queue.workers.len() + queue.spawn_inflight) - { - // We no longer need services of this worker. Kill it. - queue.workers.remove(worker); - send_pool(&mut queue.to_pool_tx, pool::ToPool::Kill(worker)).await?; - } else { - // see if there are more work available and schedule it. - if let Some(job) = queue.unscheduled.next() { - assign(queue, worker, job).await?; - } - } - } - - Ok(()) -} - -async fn handle_worker_rip(queue: &mut Queue, worker: Worker) -> Result<(), Fatal> { - let worker_data = queue.workers.remove(worker); - - if let Some(WorkerData { job: Some(job), .. }) = worker_data { - // This is an edge case where the worker ripped after we sent assignment but before it - // was received by the pool. - let priority = queue - .jobs - .get(job) - .map(|data| data.priority) - .unwrap_or_else(|| { - // job is inserted upon enqueue and removed on concluded signal; - // this is enclosed in the if statement that narrows the situation to before - // conclusion; - // that means that the job still exists and is known; - // this path cannot be hit; - // qed. - never!("the job of the ripped worker must be known but it is not"); - Priority::Normal - }); - queue.unscheduled.readd(priority, job); - } - - // If there are still jobs left, spawn another worker to replace the ripped one (but only if it - // was indeed removed). That is unconditionally not critical just to not accidentally fill up - // the pool up to the hard cap. - if worker_data.is_some() && !queue.unscheduled.is_empty() { - spawn_extra_worker(queue, false).await?; - } - Ok(()) -} - -/// Spawns an extra worker if possible. -async fn spawn_extra_worker(queue: &mut Queue, critical: bool) -> Result<(), Fatal> { - if queue - .limits - .can_afford_one_more(queue.workers.len() + queue.spawn_inflight, critical) - { - queue.spawn_inflight += 1; - send_pool(&mut queue.to_pool_tx, pool::ToPool::Spawn).await?; - } - - Ok(()) -} - -/// Attaches the work to the given worker telling the poll about the job. -async fn assign(queue: &mut Queue, worker: Worker, job: Job) -> Result<(), Fatal> { - let job_data = &mut queue.jobs[job]; - - let artifact_id = job_data.pvf.as_artifact_id(); - let artifact_path = artifact_id.path(&queue.cache_path); - - job_data.worker = Some(worker); - - queue.workers[worker].job = Some(job); - - send_pool( - &mut queue.to_pool_tx, - pool::ToPool::StartWork { - worker, - code: job_data.pvf.code.clone(), - artifact_path, - background_priority: job_data.priority.is_background(), - }, - ) - .await?; - - Ok(()) -} - -fn reply(from_queue_tx: &mut mpsc::UnboundedSender, m: FromQueue) -> Result<(), Fatal> { - from_queue_tx.unbounded_send(m).map_err(|_| { - // The host has hung up and thus it's fatal and we should shutdown ourselves. - Fatal - }) -} - -async fn send_pool( - to_pool_tx: &mut mpsc::Sender, - m: pool::ToPool, -) -> Result<(), Fatal> { - to_pool_tx.send(m).await.map_err(|_| { - // The pool has hung up and thus we are no longer are able to fulfill our duties. Shutdown. - Fatal - }) -} - -/// Spins up the queue and returns the future that should be polled to make the queue functional. -pub fn start( - soft_capacity: usize, - hard_capacity: usize, - cache_path: PathBuf, - to_pool_tx: mpsc::Sender, - from_pool_rx: mpsc::UnboundedReceiver, -) -> ( - mpsc::Sender, - mpsc::UnboundedReceiver, - impl Future, -) { - let (to_queue_tx, to_queue_rx) = mpsc::channel(150); - let (from_queue_tx, from_queue_rx) = mpsc::unbounded(); - - let run = Queue::new( - soft_capacity, - hard_capacity, - cache_path, - to_queue_rx, - from_queue_tx, - to_pool_tx, - from_pool_rx, - ) - .run(); - - (to_queue_tx, from_queue_rx, run) -} - -#[cfg(test)] -mod tests { - use slotmap::SlotMap; - use assert_matches::assert_matches; - use futures::{FutureExt, future::BoxFuture}; - use std::task::Poll; - use super::*; - - /// Creates a new pvf which artifact id can be uniquely identified by the given number. - fn pvf(descriminator: u32) -> Pvf { - Pvf::from_discriminator(descriminator) - } - - async fn run_until( - task: &mut (impl Future + Unpin), - mut fut: (impl Future + Unpin), - ) -> R { - let start = std::time::Instant::now(); - let fut = &mut fut; - loop { - if start.elapsed() > std::time::Duration::from_secs(1) { - // We expect that this will take only a couple of iterations and thus to take way - // less than a second. - panic!("timeout"); - } - - if let Poll::Ready(r) = futures::poll!(&mut *fut) { - break r; - } - - if futures::poll!(&mut *task).is_ready() { - panic!() - } - } - } - - struct Test { - _tempdir: tempfile::TempDir, - run: BoxFuture<'static, ()>, - workers: SlotMap, - from_pool_tx: mpsc::UnboundedSender, - to_pool_rx: mpsc::Receiver, - to_queue_tx: mpsc::Sender, - from_queue_rx: mpsc::UnboundedReceiver, - } - - impl Test { - fn new(soft_capacity: usize, hard_capacity: usize) -> Self { - let tempdir = tempfile::tempdir().unwrap(); - - let (to_pool_tx, to_pool_rx) = mpsc::channel(10); - let (from_pool_tx, from_pool_rx) = mpsc::unbounded(); - - let workers: SlotMap = SlotMap::with_key(); - - let (to_queue_tx, from_queue_rx, run) = start( - soft_capacity, - hard_capacity, - tempdir.path().to_owned().into(), - to_pool_tx, - from_pool_rx, - ); - - Self { - _tempdir: tempdir, - run: run.boxed(), - workers, - from_pool_tx, - to_pool_rx, - to_queue_tx, - from_queue_rx, - } - } - - fn send_queue(&mut self, to_queue: ToQueue) { - self.to_queue_tx - .send(to_queue) - .now_or_never() - .unwrap() - .unwrap(); - } - - async fn poll_and_recv_from_queue(&mut self) -> FromQueue { - let from_queue_rx = &mut self.from_queue_rx; - run_until( - &mut self.run, - async { from_queue_rx.next().await.unwrap() }.boxed(), - ) - .await - } - - fn send_from_pool(&mut self, from_pool: pool::FromPool) { - self.from_pool_tx - .send(from_pool) - .now_or_never() - .unwrap() - .unwrap(); - } - - async fn poll_and_recv_to_pool(&mut self) -> pool::ToPool { - let to_pool_rx = &mut self.to_pool_rx; - run_until( - &mut self.run, - async { to_pool_rx.next().await.unwrap() }.boxed(), - ) - .await - } - - async fn poll_ensure_to_pool_is_empty(&mut self) { - use futures_timer::Delay; - use std::time::Duration; - - let to_pool_rx = &mut self.to_pool_rx; - run_until( - &mut self.run, - async { - futures::select! { - _ = Delay::new(Duration::from_millis(500)).fuse() => (), - _ = to_pool_rx.next().fuse() => { - panic!("to pool supposed to be empty") - } - } - } - .boxed(), - ) - .await - } - } - - #[async_std::test] - async fn properly_concludes() { - let mut test = Test::new(2, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Background, - pvf: pvf(1), - }); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w)); - test.send_from_pool(pool::FromPool::Concluded(w, false)); - - assert_eq!( - test.poll_and_recv_from_queue().await, - FromQueue::Prepared(pvf(1).as_artifact_id()) - ); - } - - #[async_std::test] - async fn dont_spawn_over_soft_limit_unless_critical() { - let mut test = Test::new(2, 3); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(1), - }); - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(2), - }); - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(3), - }); - - // Receive only two spawns. - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w1 = test.workers.insert(()); - let w2 = test.workers.insert(()); - - test.send_from_pool(pool::FromPool::Spawned(w1)); - test.send_from_pool(pool::FromPool::Spawned(w2)); - - // Get two start works. - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - - test.send_from_pool(pool::FromPool::Concluded(w1, false)); - - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - - // Enqueue a critical job. - test.send_queue(ToQueue::Enqueue { - priority: Priority::Critical, - pvf: pvf(4), - }); - - // 2 out of 2 are working, but there is a critical job incoming. That means that spawning - // another worker is warranted. - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - } - - #[async_std::test] - async fn cull_unwanted() { - let mut test = Test::new(1, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(1), - }); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - let w1 = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w1)); - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - - // Enqueue a critical job, which warrants spawning over the soft limit. - test.send_queue(ToQueue::Enqueue { - priority: Priority::Critical, - pvf: pvf(2), - }); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - // However, before the new worker had a chance to spawn, the first worker finishes with its - // job. The old worker will be killed while the new worker will be let live, even though - // it's not instantiated. - // - // That's a bit silly in this context, but in production there will be an entire pool up - // to the `soft_capacity` of workers and it doesn't matter which one to cull. Either way, - // we just check that edge case of an edge case works. - test.send_from_pool(pool::FromPool::Concluded(w1, false)); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Kill(w1)); - } - - #[async_std::test] - async fn bump_prio_on_urgency_change() { - let mut test = Test::new(2, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Background, - pvf: pvf(1), - }); - - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w)); - - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - test.send_queue(ToQueue::Amend { - priority: Priority::Normal, - artifact_id: pvf(1).as_artifact_id(), - }); - - assert_eq!( - test.poll_and_recv_to_pool().await, - pool::ToPool::BumpPriority(w) - ); - } - - #[async_std::test] - async fn worker_mass_die_out_doesnt_stall_queue() { - let mut test = Test::new(2, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(1), - }); - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(2), - }); - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(3), - }); - - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w1 = test.workers.insert(()); - let w2 = test.workers.insert(()); - - test.send_from_pool(pool::FromPool::Spawned(w1)); - test.send_from_pool(pool::FromPool::Spawned(w2)); - - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - - // Conclude worker 1 and rip it. - test.send_from_pool(pool::FromPool::Concluded(w1, true)); - - // Since there is still work, the queue requested one extra worker to spawn to handle the - // remaining enqueued work items. - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!( - test.poll_and_recv_from_queue().await, - FromQueue::Prepared(pvf(1).as_artifact_id()) - ); - } - - #[async_std::test] - async fn doesnt_resurrect_ripped_worker_if_no_work() { - let mut test = Test::new(2, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(1), - }); - - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w1 = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w1)); - - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - - test.send_from_pool(pool::FromPool::Concluded(w1, true)); - test.poll_ensure_to_pool_is_empty().await; - } - - #[async_std::test] - async fn rip_for_start_work() { - let mut test = Test::new(2, 2); - - test.send_queue(ToQueue::Enqueue { - priority: Priority::Normal, - pvf: pvf(1), - }); - - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w1 = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w1)); - - // Now, to the interesting part. After the queue normally issues the start_work command to - // the pool, before receiving the command the queue may report that the worker ripped. - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - test.send_from_pool(pool::FromPool::Rip(w1)); - - // In this case, the pool should spawn a new worker and request it to work on the item. - assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - - let w2 = test.workers.insert(()); - test.send_from_pool(pool::FromPool::Spawned(w2)); - assert_matches!( - test.poll_and_recv_to_pool().await, - pool::ToPool::StartWork { .. } - ); - } -} diff --git a/node/core/pvf/src/prepare/worker.rs b/node/core/pvf/src/prepare/worker.rs deleted file mode 100644 index 307396b01af5..000000000000 --- a/node/core/pvf/src/prepare/worker.rs +++ /dev/null @@ -1,314 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - LOG_TARGET, - artifacts::Artifact, - worker_common::{ - IdleWorker, SpawnErr, WorkerHandle, bytes_to_path, framed_recv, framed_send, path_to_bytes, - spawn_with_program_path, tmpfile_in, worker_event_loop, - }, -}; -use async_std::{ - io, - os::unix::net::UnixStream, - path::{PathBuf, Path}, -}; -use futures::FutureExt as _; -use futures_timer::Delay; -use std::{sync::Arc, time::Duration}; - -const NICENESS_BACKGROUND: i32 = 10; -const NICENESS_FOREGROUND: i32 = 0; - -const COMPILATION_TIMEOUT: Duration = Duration::from_secs(10); - -/// Spawns a new worker with the given program path that acts as the worker and the spawn timeout. -/// -/// The program should be able to handle ` prepare-worker ` invocation. -pub async fn spawn( - program_path: &Path, - spawn_timeout: Duration, -) -> Result<(IdleWorker, WorkerHandle), SpawnErr> { - spawn_with_program_path( - "prepare", - program_path, - &["prepare-worker"], - spawn_timeout, - ) - .await -} - -pub enum Outcome { - /// The worker has finished the work assigned to it. - Concluded(IdleWorker), - /// The execution was interrupted abruptly and the worker is not available anymore. For example, - /// this could've happen because the worker hadn't finished the work until the given deadline. - /// - /// Note that in this case the artifact file is written (unless there was an error writing the - /// the artifact). - /// - /// This doesn't return an idle worker instance, thus this worker is no longer usable. - DidntMakeIt, -} - -/// Given the idle token of a worker and parameters of work, communicates with the worker and -/// returns the outcome. -pub async fn start_work( - worker: IdleWorker, - code: Arc>, - cache_path: &Path, - artifact_path: PathBuf, - background_priority: bool, -) -> Outcome { - let IdleWorker { mut stream, pid } = worker; - - tracing::debug!( - target: LOG_TARGET, - worker_pid = %pid, - %background_priority, - "starting prepare for {}", - artifact_path.display(), - ); - - if background_priority { - renice(pid, NICENESS_BACKGROUND); - } - - with_tmp_file(pid, cache_path, |tmp_file| async move { - if let Err(err) = send_request(&mut stream, code, &tmp_file).await { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "failed to send a prepare request: {:?}", - err, - ); - return Outcome::DidntMakeIt; - } - - // Wait for the result from the worker, keeping in mind that there may be a timeout, the - // worker may get killed, or something along these lines. - // - // In that case we should handle these gracefully by writing the artifact file by ourselves. - // We may potentially overwrite the artifact in rare cases where the worker didn't make - // it to report back the result. - - enum Selected { - Done, - IoErr, - Deadline, - } - - let selected = futures::select! { - res = framed_recv(&mut stream).fuse() => { - match res { - Ok(x) if x == &[1u8] => { - tracing::debug!( - target: LOG_TARGET, - worker_pid = %pid, - "promoting WIP artifact {} to {}", - tmp_file.display(), - artifact_path.display(), - ); - - async_std::fs::rename(&tmp_file, &artifact_path) - .await - .map(|_| Selected::Done) - .unwrap_or_else(|err| { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "failed to rename the artifact from {} to {}: {:?}", - tmp_file.display(), - artifact_path.display(), - err, - ); - Selected::IoErr - }) - } - Ok(response_bytes) => { - use sp_core::hexdisplay::HexDisplay; - let bound_bytes = - &response_bytes[..response_bytes.len().min(4)]; - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "received unexpected response from the prepare worker: {}", - HexDisplay::from(&bound_bytes), - ); - Selected::IoErr - }, - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "failed to recv a prepare response: {:?}", - err, - ); - Selected::IoErr - } - } - }, - _ = Delay::new(COMPILATION_TIMEOUT).fuse() => Selected::Deadline, - }; - - match selected { - Selected::Done => { - renice(pid, NICENESS_FOREGROUND); - Outcome::Concluded(IdleWorker { stream, pid }) - } - Selected::IoErr | Selected::Deadline => { - let bytes = Artifact::DidntMakeIt.serialize(); - // best effort: there is nothing we can do here if the write fails. - let _ = async_std::fs::write(&artifact_path, &bytes).await; - Outcome::DidntMakeIt - } - } - }) - .await -} - -/// Create a temporary file for an artifact at the given cache path and execute the given -/// future/closure passing the file path in. -/// -/// The function will try best effort to not leave behind the temporary file. -async fn with_tmp_file(pid: u32, cache_path: &Path, f: F) -> Outcome -where - Fut: futures::Future, - F: FnOnce(PathBuf) -> Fut, -{ - let tmp_file = match tmpfile_in("prepare-artifact-", cache_path).await { - Ok(f) => f, - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "failed to create a temp file for the artifact: {:?}", - err, - ); - return Outcome::DidntMakeIt; - } - }; - - let outcome = f(tmp_file.clone()).await; - - // The function called above is expected to move `tmp_file` to a new location upon success. However, - // the function may as well fail and in that case we should remove the tmp file here. - // - // In any case, we try to remove the file here so that there are no leftovers. We only report - // errors that are different from the `NotFound`. - match async_std::fs::remove_file(tmp_file).await { - Ok(()) => (), - Err(err) if err.kind() == std::io::ErrorKind::NotFound => (), - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "failed to remove the tmp file: {:?}", - err, - ); - } - } - - outcome -} - -async fn send_request( - stream: &mut UnixStream, - code: Arc>, - tmp_file: &Path, -) -> io::Result<()> { - framed_send(stream, &*code).await?; - framed_send(stream, path_to_bytes(tmp_file)).await?; - Ok(()) -} - -async fn recv_request(stream: &mut UnixStream) -> io::Result<(Vec, PathBuf)> { - let code = framed_recv(stream).await?; - let tmp_file = framed_recv(stream).await?; - let tmp_file = bytes_to_path(&tmp_file).ok_or_else(|| { - io::Error::new( - io::ErrorKind::Other, - "prepare pvf recv_request: non utf-8 artifact path".to_string(), - ) - })?; - Ok((code, tmp_file)) -} - -pub fn bump_priority(handle: &WorkerHandle) { - let pid = handle.id(); - renice(pid, NICENESS_FOREGROUND); -} - -fn renice(pid: u32, niceness: i32) { - tracing::debug!( - target: LOG_TARGET, - worker_pid = %pid, - "changing niceness to {}", - niceness, - ); - - // Consider upstreaming this to the `nix` crate. - unsafe { - if -1 == libc::setpriority(libc::PRIO_PROCESS, pid, niceness) { - let err = std::io::Error::last_os_error(); - tracing::warn!(target: LOG_TARGET, "failed to set the priority: {:?}", err,); - } - } -} - -/// The entrypoint that the spawned prepare worker should start with. The socket_path specifies -/// the path to the socket used to communicate with the host. -pub fn worker_entrypoint(socket_path: &str) { - worker_event_loop("prepare", socket_path, |mut stream| async move { - loop { - let (code, dest) = recv_request(&mut stream).await?; - - tracing::debug!( - target: LOG_TARGET, - worker_pid = %std::process::id(), - "worker: preparing artifact", - ); - let artifact_bytes = prepare_artifact(&code).serialize(); - - // Write the serialized artifact into into a temp file. - tracing::debug!( - target: LOG_TARGET, - worker_pid = %std::process::id(), - "worker: writing artifact to {}", - dest.display(), - ); - async_std::fs::write(&dest, &artifact_bytes).await?; - - // Return back a byte that signals finishing the work. - framed_send(&mut stream, &[1u8]).await?; - } - }); -} - -fn prepare_artifact(code: &[u8]) -> Artifact { - let blob = match crate::executor_intf::prevalidate(code) { - Err(err) => { - return Artifact::PrevalidationErr(format!("{:?}", err)); - } - Ok(b) => b, - }; - - match crate::executor_intf::prepare(blob) { - Ok(compiled_artifact) => Artifact::Compiled { compiled_artifact }, - Err(err) => Artifact::PreparationErr(format!("{:?}", err)), - } -} diff --git a/node/core/pvf/src/priority.rs b/node/core/pvf/src/priority.rs deleted file mode 100644 index 8ba7b3907257..000000000000 --- a/node/core/pvf/src/priority.rs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// A priority assigned to execution of a PVF. -#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] -pub enum Priority { - /// Jobs in this priority will be executed in the background, meaning that they will be only - /// given spare CPU time. - /// - /// This is mainly for cache warmings. - Background, - /// Normal priority for things that do not require immediate response, but still need to be - /// done pretty quick. - /// - /// Approvals and disputes fall into this category. - Normal, - /// This priority is used for requests that are required to be processed as soon as possible. - /// - /// For example, backing is on critical path and require execution as soon as possible. - Critical, -} - -impl Priority { - /// Returns `true` if `self` is `Crticial` - pub fn is_critical(self) -> bool { - self == Priority::Critical - } - - /// Returns `true` if `self` is `Background` - pub fn is_background(self) -> bool { - self == Priority::Background - } -} diff --git a/node/core/pvf/src/pvf.rs b/node/core/pvf/src/pvf.rs deleted file mode 100644 index 00c0777a5489..000000000000 --- a/node/core/pvf/src/pvf.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::artifacts::ArtifactId; -use polkadot_parachain::primitives::ValidationCodeHash; -use sp_core::blake2_256; -use std::{fmt, sync::Arc}; - -/// A struct that carries code of a parachain validation function and it's hash. -/// -/// Should be cheap to clone. -#[derive(Clone)] -pub struct Pvf { - pub(crate) code: Arc>, - pub(crate) code_hash: ValidationCodeHash, -} - -impl fmt::Debug for Pvf { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Pvf {{ code, code_hash: {:?} }}", self.code_hash) - } -} - -impl Pvf { - /// Returns an instance of the PVF out of the given PVF code. - pub fn from_code(code: Vec) -> Self { - let code = Arc::new(code); - let code_hash = blake2_256(&code).into(); - Self { code, code_hash } - } - - /// Creates a new pvf which artifact id can be uniquely identified by the given number. - #[cfg(test)] - pub(crate) fn from_discriminator(num: u32) -> Self { - let descriminator_buf = num.to_le_bytes().to_vec(); - Pvf::from_code(descriminator_buf) - } - - /// Returns the artifact ID that corresponds to this PVF. - pub(crate) fn as_artifact_id(&self) -> ArtifactId { - ArtifactId::new(self.code_hash) - } -} diff --git a/node/core/pvf/src/testing.rs b/node/core/pvf/src/testing.rs deleted file mode 100644 index 21ebf138cd09..000000000000 --- a/node/core/pvf/src/testing.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various things for testing other crates. -//! -//! N.B. This is not guarded with some feature flag. Overexposing items here may affect the final -//! artifact even for production builds. - -pub mod worker_common { - pub use crate::worker_common::{spawn_with_program_path, SpawnErr}; -} - -/// A function that emulates the stitches together behaviors of the preparation and the execution -/// worker in a single synchronous function. -pub fn validate_candidate( - code: &[u8], - params: &[u8], -) -> Result, Box> { - use crate::executor_intf::{prevalidate, prepare, execute, TaskExecutor}; - - let blob = prevalidate(code)?; - let artifact = prepare(blob)?; - let executor = TaskExecutor::new()?; - let result = unsafe { - // SAFETY: This is trivially safe since the artifact is obtained by calling `prepare`. - execute(&artifact, params, executor)? - }; - - Ok(result) -} - -/// Use this macro to declare a `fn main() {}` that will check the arguments and dispatch them to -/// the appropriate worker, making the executable that can be used for spawning workers. -#[macro_export] -macro_rules! decl_puppet_worker_main { - () => { - fn main() { - let args = std::env::args().collect::>(); - if args.len() < 2 { - panic!("wrong number of arguments"); - } - - let subcommand = &args[1]; - match subcommand.as_ref() { - "sleep" => { - std::thread::sleep(std::time::Duration::from_secs(5)); - } - "prepare-worker" => { - let socket_path = &args[2]; - $crate::prepare_worker_entrypoint(socket_path); - } - "execute-worker" => { - let socket_path = &args[2]; - $crate::execute_worker_entrypoint(socket_path); - } - other => panic!("unknown subcommand: {}", other), - } - } - }; -} diff --git a/node/core/pvf/src/worker_common.rs b/node/core/pvf/src/worker_common.rs deleted file mode 100644 index 46d0b730b929..000000000000 --- a/node/core/pvf/src/worker_common.rs +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Common logic for implementation of worker processes. - -use crate::LOG_TARGET; -use async_std::{ - io, - os::unix::net::{UnixListener, UnixStream}, - path::{PathBuf, Path}, -}; -use futures::{ - AsyncRead, AsyncWrite, AsyncReadExt as _, AsyncWriteExt as _, FutureExt as _, never::Never, -}; -use futures_timer::Delay; -use rand::Rng; -use std::{ - fmt, mem, - pin::Pin, - task::{Context, Poll}, - time::Duration, -}; -use pin_project::pin_project; - -/// This is publicly exposed only for integration tests. -#[doc(hidden)] -pub async fn spawn_with_program_path( - debug_id: &'static str, - program_path: impl Into, - extra_args: &'static [&'static str], - spawn_timeout: Duration, -) -> Result<(IdleWorker, WorkerHandle), SpawnErr> { - let program_path = program_path.into(); - with_transient_socket_path(debug_id, |socket_path| { - let socket_path = socket_path.to_owned(); - async move { - let listener = UnixListener::bind(&socket_path) - .await - .map_err(|_| SpawnErr::Bind)?; - - let handle = WorkerHandle::spawn(program_path, extra_args, socket_path) - .map_err(|_| SpawnErr::ProcessSpawn)?; - - futures::select! { - accept_result = listener.accept().fuse() => { - let (stream, _) = accept_result.map_err(|_| SpawnErr::Accept)?; - Ok((IdleWorker { stream, pid: handle.id() }, handle)) - } - _ = Delay::new(spawn_timeout).fuse() => { - Err(SpawnErr::AcceptTimeout) - } - } - } - }) - .await -} - -async fn with_transient_socket_path(debug_id: &'static str, f: F) -> Result -where - F: FnOnce(&Path) -> Fut, - Fut: futures::Future> + 'static, -{ - let socket_path = tmpfile(&format!("pvf-host-{}", debug_id)) - .await - .map_err(|_| SpawnErr::TmpFile)?; - let result = f(&socket_path).await; - - // Best effort to remove the socket file. Under normal circumstances the socket will be removed - // by the worker. We make sure that it is removed here, just in case a failed rendezvous. - let _ = async_std::fs::remove_file(socket_path).await; - - result -} - -/// Returns a path under the given `dir`. The file name will start with the given prefix. -/// -/// There is only a certain number of retries. If exceeded this function will give up and return an -/// error. -pub async fn tmpfile_in(prefix: &str, dir: &Path) -> io::Result { - fn tmppath(prefix: &str, dir: &Path) -> PathBuf { - use rand::distributions::Alphanumeric; - - const DESCRIMINATOR_LEN: usize = 10; - - let mut buf = Vec::with_capacity(prefix.len() + DESCRIMINATOR_LEN); - buf.extend(prefix.as_bytes()); - buf.extend( - rand::thread_rng() - .sample_iter(&Alphanumeric) - .take(DESCRIMINATOR_LEN), - ); - - let s = std::str::from_utf8(&buf) - .expect("the string is collected from a valid utf-8 sequence; qed"); - - let mut file = dir.to_owned(); - file.push(s); - file - } - - const NUM_RETRIES: usize = 50; - - for _ in 0..NUM_RETRIES { - let candidate_path = tmppath(prefix, dir); - if !candidate_path.exists().await { - return Ok(candidate_path) - } - } - - Err( - io::Error::new(io::ErrorKind::Other, "failed to create a temporary file") - ) -} - -/// The same as [`tmpfile_in`], but uses [`std::env::temp_dir`] as the directory. -pub async fn tmpfile(prefix: &str) -> io::Result { - let temp_dir = PathBuf::from(std::env::temp_dir()); - tmpfile_in(prefix, &temp_dir).await -} - -pub fn worker_event_loop(debug_id: &'static str, socket_path: &str, mut event_loop: F) -where - F: FnMut(UnixStream) -> Fut, - Fut: futures::Future>, -{ - let err = async_std::task::block_on::<_, io::Result>(async move { - let stream = UnixStream::connect(socket_path).await?; - let _ = async_std::fs::remove_file(socket_path).await; - - event_loop(stream).await - }) - .unwrap_err(); // it's never `Ok` because it's `Ok(Never)` - - tracing::debug!( - target: LOG_TARGET, - worker_pid = %std::process::id(), - "pvf worker ({}): {:?}", - debug_id, - err, - ); -} - -/// A struct that represents an idle worker. -/// -/// This struct is supposed to be used as a token that is passed by move into a subroutine that -/// initiates a job. If the worker dies on the duty, then the token is not returned back. -#[derive(Debug)] -pub struct IdleWorker { - /// The stream to which the child process is connected. - pub stream: UnixStream, - - /// The identifier of this process. Used to reset the niceness. - pub pid: u32, -} - -/// An error happened during spawning a worker process. -#[derive(Clone, Debug)] -pub enum SpawnErr { - /// Cannot obtain a temporary file location. - TmpFile, - /// Cannot bind the socket to the given path. - Bind, - /// An error happened during accepting a connection to the socket. - Accept, - /// An error happened during spawning the process. - ProcessSpawn, - /// The deadline alloted for the worker spawning and connecting to the socket has elapsed. - AcceptTimeout, -} - -/// This is a representation of a potentially running worker. Drop it and the process will be killed. -/// -/// A worker's handle is also a future that resolves when it's detected that the worker's process -/// has been terminated. Since the worker is running in another process it is obviously not necessarily -/// to poll this future to make the worker run, it's only for termination detection. -/// -/// This future relies on the fact that a child process's stdout fd is closed upon it's termination. -#[pin_project] -pub struct WorkerHandle { - child: async_process::Child, - #[pin] - stdout: async_process::ChildStdout, - drop_box: Box<[u8]>, -} - -impl WorkerHandle { - fn spawn( - program: impl AsRef, - extra_args: &[&str], - socket_path: impl AsRef, - ) -> io::Result { - let mut child = async_process::Command::new(program.as_ref()) - .args(extra_args) - .arg(socket_path.as_ref().as_os_str()) - .stdout(async_process::Stdio::piped()) - .kill_on_drop(true) - .spawn()?; - - let stdout = child - .stdout - .take() - .expect("the process spawned with piped stdout should have the stdout handle"); - - Ok(WorkerHandle { - child, - stdout, - // We don't expect the bytes to be ever read. But in case we do, we should not use a buffer - // of a small size, because otherwise if the child process does return any data we will end up - // issuing a syscall for each byte. We also prefer not to do allocate that on the stack, since - // each poll the buffer will be allocated and initialized (and that's due poll_read takes &mut [u8] - // and there are no guarantees that a `poll_read` won't ever read from there even though that's - // unlikely). - // - // OTOH, we also don't want to be super smart here and we could just afford to allocate a buffer - // for that here. - drop_box: vec![0; 8192].into_boxed_slice(), - }) - } - - /// Returns the process id of this worker. - pub fn id(&self) -> u32 { - self.child.id() - } -} - -impl futures::Future for WorkerHandle { - type Output = (); - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let me = self.project(); - match futures::ready!(AsyncRead::poll_read(me.stdout, cx, &mut *me.drop_box)) { - Ok(0) => { - // 0 means EOF means the child was terminated. Resolve. - Poll::Ready(()) - } - Ok(_bytes_read) => { - // weird, we've read something. Pretend that never happened and reschedule ourselves. - cx.waker().wake_by_ref(); - Poll::Pending - } - Err(_) => { - // The implementation is guaranteed to not to return WouldBlock and Interrupted. This - // leaves us with a legit errors which we suppose were due to termination. - Poll::Ready(()) - } - } - } -} - -impl fmt::Debug for WorkerHandle { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "WorkerHandle(pid={})", self.id()) - } -} - -/// Convert the given path into a byte buffer. -pub fn path_to_bytes(path: &Path) -> &[u8] { - // Ideally, we take the OsStr of the path, send that and reconstruct this on the other side. - // However, libstd doesn't provide us with such an option. There are crates out there that - // allow for extraction of a path, but TBH it doesn't seem to be a real issue. - // - // However, should be there reports we can incorporate such a crate here. - path.to_str().expect("non-UTF-8 path").as_bytes() -} - -/// Interprets the given bytes as a path. Returns `None` if the given bytes do not constitute a -/// a proper utf-8 string. -pub fn bytes_to_path(bytes: &[u8]) -> Option { - std::str::from_utf8(bytes).ok().map(PathBuf::from) -} - -pub async fn framed_send(w: &mut (impl AsyncWrite + Unpin), buf: &[u8]) -> io::Result<()> { - let len_buf = buf.len().to_le_bytes(); - w.write_all(&len_buf).await?; - w.write_all(buf).await?; - Ok(()) -} - -pub async fn framed_recv(r: &mut (impl AsyncRead + Unpin)) -> io::Result> { - let mut len_buf = [0u8; mem::size_of::()]; - r.read_exact(&mut len_buf).await?; - let len = usize::from_le_bytes(len_buf); - let mut buf = vec![0; len]; - r.read_exact(&mut buf).await?; - Ok(buf) -} diff --git a/node/core/pvf/tests/it/adder.rs b/node/core/pvf/tests/it/adder.rs deleted file mode 100644 index 97af2ef4efca..000000000000 --- a/node/core/pvf/tests/it/adder.rs +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::TestHost; -use polkadot_parachain::{ - primitives::{ - RelayChainBlockNumber, BlockData as GenericBlockData, HeadData as GenericHeadData, - ValidationParams, - }, -}; -use parity_scale_codec::{Decode, Encode}; -use adder::{HeadData, BlockData, hash_state}; - -#[async_std::test] -async fn execute_good_on_parent() { - let parent_head = HeadData { - number: 0, - parent_hash: [0; 32], - post_state: hash_state(0), - }; - - let block_data = BlockData { state: 0, add: 512 }; - - let host = TestHost::new(); - - let ret = host - .validate_candidate( - adder::wasm_binary_unwrap(), - ValidationParams { - parent_head: GenericHeadData(parent_head.encode()), - block_data: GenericBlockData(block_data.encode()), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ) - .await - .unwrap(); - - let new_head = HeadData::decode(&mut &ret.head_data.0[..]).unwrap(); - - assert_eq!(new_head.number, 1); - assert_eq!(new_head.parent_hash, parent_head.hash()); - assert_eq!(new_head.post_state, hash_state(512)); -} - -#[async_std::test] -async fn execute_good_chain_on_parent() { - let mut number = 0; - let mut parent_hash = [0; 32]; - let mut last_state = 0; - - let host = TestHost::new(); - - for add in 0..10 { - let parent_head = HeadData { - number, - parent_hash, - post_state: hash_state(last_state), - }; - - let block_data = BlockData { - state: last_state, - add, - }; - - let ret = host - .validate_candidate( - adder::wasm_binary_unwrap(), - ValidationParams { - parent_head: GenericHeadData(parent_head.encode()), - block_data: GenericBlockData(block_data.encode()), - relay_parent_number: number as RelayChainBlockNumber + 1, - relay_parent_storage_root: Default::default(), - }, - ) - .await - .unwrap(); - - let new_head = HeadData::decode(&mut &ret.head_data.0[..]).unwrap(); - - assert_eq!(new_head.number, number + 1); - assert_eq!(new_head.parent_hash, parent_head.hash()); - assert_eq!(new_head.post_state, hash_state(last_state + add)); - - number += 1; - parent_hash = new_head.hash(); - last_state += add; - } -} - -#[async_std::test] -async fn execute_bad_on_parent() { - let parent_head = HeadData { - number: 0, - parent_hash: [0; 32], - post_state: hash_state(0), - }; - - let block_data = BlockData { - state: 256, // start state is wrong. - add: 256, - }; - - let host = TestHost::new(); - - let _ret = host - .validate_candidate( - adder::wasm_binary_unwrap(), - ValidationParams { - parent_head: GenericHeadData(parent_head.encode()), - block_data: GenericBlockData(block_data.encode()), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ) - .await - .unwrap_err(); -} diff --git a/node/core/pvf/tests/it/main.rs b/node/core/pvf/tests/it/main.rs deleted file mode 100644 index 6ea41b11d531..000000000000 --- a/node/core/pvf/tests/it/main.rs +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use polkadot_node_core_pvf::{Pvf, ValidationHost, start, Config, InvalidCandidate, ValidationError}; -use polkadot_parachain::{ - primitives::{BlockData, ValidationParams, ValidationResult}, -}; -use parity_scale_codec::Encode as _; -use async_std::sync::Mutex; - -mod adder; -mod worker_common; - -const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_puppet_worker"); - -struct TestHost { - _cache_dir: tempfile::TempDir, - host: Mutex, -} - -impl TestHost { - fn new() -> Self { - Self::new_with_config(|_| ()) - } - - fn new_with_config(f: F) -> Self - where - F: FnOnce(&mut Config), - { - let cache_dir = tempfile::tempdir().unwrap(); - let program_path = std::path::PathBuf::from(PUPPET_EXE); - let mut config = Config::new(cache_dir.path().to_owned(), program_path); - f(&mut config); - let (host, task) = start(config); - let _ = async_std::task::spawn(task); - Self { - _cache_dir: cache_dir, - host: Mutex::new(host), - } - } - - async fn validate_candidate( - &self, - code: &[u8], - params: ValidationParams, - ) -> Result { - let (result_tx, result_rx) = futures::channel::oneshot::channel(); - self.host - .lock() - .await - .execute_pvf( - Pvf::from_code(code.to_vec()), - params.encode(), - polkadot_node_core_pvf::Priority::Normal, - result_tx, - ) - .await - .unwrap(); - result_rx.await.unwrap() - } -} - -#[async_std::test] -async fn terminates_on_timeout() { - let host = TestHost::new(); - - let result = host - .validate_candidate( - halt::wasm_binary_unwrap(), - ValidationParams { - block_data: BlockData(Vec::new()), - parent_head: Default::default(), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ) - .await; - - match result { - Err(ValidationError::InvalidCandidate(InvalidCandidate::HardTimeout)) => {} - r => panic!("{:?}", r), - } -} - -#[async_std::test] -async fn parallel_execution() { - let host = TestHost::new(); - let execute_pvf_future_1 = host.validate_candidate( - halt::wasm_binary_unwrap(), - ValidationParams { - block_data: BlockData(Vec::new()), - parent_head: Default::default(), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ); - let execute_pvf_future_2 = host.validate_candidate( - halt::wasm_binary_unwrap(), - ValidationParams { - block_data: BlockData(Vec::new()), - parent_head: Default::default(), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ); - - let start = std::time::Instant::now(); - let (_, _) = futures::join!(execute_pvf_future_1, execute_pvf_future_2); - - // total time should be < 2 x EXECUTION_TIMEOUT_SEC - const EXECUTION_TIMEOUT_SEC: u64 = 3; - assert!( - std::time::Instant::now().duration_since(start) - < std::time::Duration::from_secs(EXECUTION_TIMEOUT_SEC * 2) - ); -} - -#[async_std::test] -async fn execute_queue_doesnt_stall_if_workers_died() { - let host = TestHost::new_with_config(|cfg| { - assert_eq!(cfg.execute_workers_max_num, 5); - }); - - // Here we spawn 8 validation jobs for the `halt` PVF and share those between 5 workers. The - // first five jobs should timeout and the workers killed. For the next 3 jobs a new batch of - // workers should be spun up. - futures::future::join_all((0u8..=8).map(|_| { - host.validate_candidate( - halt::wasm_binary_unwrap(), - ValidationParams { - block_data: BlockData(Vec::new()), - parent_head: Default::default(), - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }, - ) - })) - .await; -} diff --git a/node/core/pvf/tests/it/worker_common.rs b/node/core/pvf/tests/it/worker_common.rs deleted file mode 100644 index ec77bd710441..000000000000 --- a/node/core/pvf/tests/it/worker_common.rs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::PUPPET_EXE; -use polkadot_node_core_pvf::testing::worker_common::{spawn_with_program_path, SpawnErr}; -use std::time::Duration; - -#[async_std::test] -async fn spawn_timeout() { - let result = spawn_with_program_path( - "integration-test", - PUPPET_EXE, - &["sleep"], - Duration::from_secs(2), - ) - .await; - assert!(matches!(result, Err(SpawnErr::AcceptTimeout))); -} - -#[async_std::test] -async fn should_connect() { - let _ = spawn_with_program_path( - "integration-test", - PUPPET_EXE, - &["prepare-worker"], - Duration::from_secs(2), - ) - .await - .unwrap(); -} diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml deleted file mode 100644 index 27d2c5a20a3b..000000000000 --- a/node/core/runtime-api/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "polkadot-node-core-runtime-api" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -memory-lru = "0.1.0" -parity-util-mem = { version = "0.9.0", default-features = false } - -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-primitives = { path = "../../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures = { version = "0.3.15", features = ["thread-pool"] } -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -polkadot-node-primitives = { path = "../../primitives" } diff --git a/node/core/runtime-api/src/cache.rs b/node/core/runtime-api/src/cache.rs deleted file mode 100644 index 97d392863dd9..000000000000 --- a/node/core/runtime-api/src/cache.rs +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::btree_map::BTreeMap; - -use memory_lru::{MemoryLruCache, ResidentSize}; -use parity_util_mem::{MallocSizeOf, MallocSizeOfExt}; -use sp_consensus_babe::Epoch; - -use polkadot_primitives::v1::{ - AuthorityDiscoveryId, BlockNumber, CandidateCommitments, CandidateEvent, - CommittedCandidateReceipt, CoreState, GroupRotationInfo, Hash, Id as ParaId, - InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, PersistedValidationData, - SessionIndex, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, -}; - -const AUTHORITIES_CACHE_SIZE: usize = 128 * 1024; -const VALIDATORS_CACHE_SIZE: usize = 64 * 1024; -const VALIDATOR_GROUPS_CACHE_SIZE: usize = 64 * 1024; -const AVAILABILITY_CORES_CACHE_SIZE: usize = 64 * 1024; -const PERSISTED_VALIDATION_DATA_CACHE_SIZE: usize = 64 * 1024; -const CHECK_VALIDATION_OUTPUTS_CACHE_SIZE: usize = 64 * 1024; -const SESSION_INDEX_FOR_CHILD_CACHE_SIZE: usize = 64 * 1024; -const VALIDATION_CODE_CACHE_SIZE: usize = 10 * 1024 * 1024; -const CANDIDATE_PENDING_AVAILABILITY_CACHE_SIZE: usize = 64 * 1024; -const CANDIDATE_EVENTS_CACHE_SIZE: usize = 64 * 1024; -const SESSION_INFO_CACHE_SIZE: usize = 64 * 1024; -const DMQ_CONTENTS_CACHE_SIZE: usize = 64 * 1024; -const INBOUND_HRMP_CHANNELS_CACHE_SIZE: usize = 64 * 1024; -const CURRENT_BABE_EPOCH_CACHE_SIZE: usize = 64 * 1024; - -struct ResidentSizeOf(T); - -impl ResidentSize for ResidentSizeOf { - fn resident_size(&self) -> usize { - std::mem::size_of::() + self.0.malloc_size_of() - } -} - -struct DoesNotAllocate(T); - -impl ResidentSize for DoesNotAllocate { - fn resident_size(&self) -> usize { - std::mem::size_of::() - } -} - -// this is an ugly workaround for `AuthorityDiscoveryId` -// not implementing `MallocSizeOf` -struct VecOfDoesNotAllocate(Vec); - -impl ResidentSize for VecOfDoesNotAllocate { - fn resident_size(&self) -> usize { - std::mem::size_of::() * self.0.capacity() - } -} - -pub(crate) struct RequestResultCache { - authorities: MemoryLruCache>, - validators: MemoryLruCache>>, - validator_groups: MemoryLruCache>, GroupRotationInfo)>>, - availability_cores: MemoryLruCache>>, - persisted_validation_data: MemoryLruCache<(Hash, ParaId, OccupiedCoreAssumption), ResidentSizeOf>>, - check_validation_outputs: MemoryLruCache<(Hash, ParaId, CandidateCommitments), ResidentSizeOf>, - session_index_for_child: MemoryLruCache>, - validation_code: MemoryLruCache<(Hash, ParaId, OccupiedCoreAssumption), ResidentSizeOf>>, - validation_code_by_hash: MemoryLruCache<(Hash, ValidationCodeHash), ResidentSizeOf>>, - candidate_pending_availability: MemoryLruCache<(Hash, ParaId), ResidentSizeOf>>, - candidate_events: MemoryLruCache>>, - session_info: MemoryLruCache<(Hash, SessionIndex), ResidentSizeOf>>, - dmq_contents: MemoryLruCache<(Hash, ParaId), ResidentSizeOf>>>, - inbound_hrmp_channels_contents: MemoryLruCache<(Hash, ParaId), ResidentSizeOf>>>>, - current_babe_epoch: MemoryLruCache>, -} - -impl Default for RequestResultCache { - fn default() -> Self { - Self { - authorities: MemoryLruCache::new(AUTHORITIES_CACHE_SIZE), - validators: MemoryLruCache::new(VALIDATORS_CACHE_SIZE), - validator_groups: MemoryLruCache::new(VALIDATOR_GROUPS_CACHE_SIZE), - availability_cores: MemoryLruCache::new(AVAILABILITY_CORES_CACHE_SIZE), - persisted_validation_data: MemoryLruCache::new(PERSISTED_VALIDATION_DATA_CACHE_SIZE), - check_validation_outputs: MemoryLruCache::new(CHECK_VALIDATION_OUTPUTS_CACHE_SIZE), - session_index_for_child: MemoryLruCache::new(SESSION_INDEX_FOR_CHILD_CACHE_SIZE), - validation_code: MemoryLruCache::new(VALIDATION_CODE_CACHE_SIZE), - validation_code_by_hash: MemoryLruCache::new(VALIDATION_CODE_CACHE_SIZE), - candidate_pending_availability: MemoryLruCache::new(CANDIDATE_PENDING_AVAILABILITY_CACHE_SIZE), - candidate_events: MemoryLruCache::new(CANDIDATE_EVENTS_CACHE_SIZE), - session_info: MemoryLruCache::new(SESSION_INFO_CACHE_SIZE), - dmq_contents: MemoryLruCache::new(DMQ_CONTENTS_CACHE_SIZE), - inbound_hrmp_channels_contents: MemoryLruCache::new(INBOUND_HRMP_CHANNELS_CACHE_SIZE), - current_babe_epoch: MemoryLruCache::new(CURRENT_BABE_EPOCH_CACHE_SIZE), - } - } -} - -impl RequestResultCache { - pub(crate) fn authorities(&mut self, relay_parent: &Hash) -> Option<&Vec> { - self.authorities.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_authorities(&mut self, relay_parent: Hash, authorities: Vec) { - self.authorities.insert(relay_parent, VecOfDoesNotAllocate(authorities)); - } - - pub(crate) fn validators(&mut self, relay_parent: &Hash) -> Option<&Vec> { - self.validators.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_validators(&mut self, relay_parent: Hash, validators: Vec) { - self.validators.insert(relay_parent, ResidentSizeOf(validators)); - } - - pub(crate) fn validator_groups(&mut self, relay_parent: &Hash) -> Option<&(Vec>, GroupRotationInfo)> { - self.validator_groups.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_validator_groups(&mut self, relay_parent: Hash, groups: (Vec>, GroupRotationInfo)) { - self.validator_groups.insert(relay_parent, ResidentSizeOf(groups)); - } - - pub(crate) fn availability_cores(&mut self, relay_parent: &Hash) -> Option<&Vec> { - self.availability_cores.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_availability_cores(&mut self, relay_parent: Hash, cores: Vec) { - self.availability_cores.insert(relay_parent, ResidentSizeOf(cores)); - } - - pub(crate) fn persisted_validation_data(&mut self, key: (Hash, ParaId, OccupiedCoreAssumption)) -> Option<&Option> { - self.persisted_validation_data.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_persisted_validation_data(&mut self, key: (Hash, ParaId, OccupiedCoreAssumption), data: Option) { - self.persisted_validation_data.insert(key, ResidentSizeOf(data)); - } - - pub(crate) fn check_validation_outputs(&mut self, key: (Hash, ParaId, CandidateCommitments)) -> Option<&bool> { - self.check_validation_outputs.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_check_validation_outputs(&mut self, key: (Hash, ParaId, CandidateCommitments), value: bool) { - self.check_validation_outputs.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn session_index_for_child(&mut self, relay_parent: &Hash) -> Option<&SessionIndex> { - self.session_index_for_child.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_session_index_for_child(&mut self, relay_parent: Hash, index: SessionIndex) { - self.session_index_for_child.insert(relay_parent, ResidentSizeOf(index)); - } - - pub(crate) fn validation_code(&mut self, key: (Hash, ParaId, OccupiedCoreAssumption)) -> Option<&Option> { - self.validation_code.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_validation_code(&mut self, key: (Hash, ParaId, OccupiedCoreAssumption), value: Option) { - self.validation_code.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn validation_code_by_hash(&mut self, key: (Hash, ValidationCodeHash)) -> Option<&Option> { - self.validation_code_by_hash.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_validation_code_by_hash(&mut self, key: (Hash, ValidationCodeHash), value: Option) { - self.validation_code_by_hash.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn candidate_pending_availability(&mut self, key: (Hash, ParaId)) -> Option<&Option> { - self.candidate_pending_availability.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_candidate_pending_availability(&mut self, key: (Hash, ParaId), value: Option) { - self.candidate_pending_availability.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn candidate_events(&mut self, relay_parent: &Hash) -> Option<&Vec> { - self.candidate_events.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_candidate_events(&mut self, relay_parent: Hash, events: Vec) { - self.candidate_events.insert(relay_parent, ResidentSizeOf(events)); - } - - pub(crate) fn session_info(&mut self, key: (Hash, SessionIndex)) -> Option<&Option> { - self.session_info.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_session_info(&mut self, key: (Hash, SessionIndex), value: Option) { - self.session_info.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn dmq_contents(&mut self, key: (Hash, ParaId)) -> Option<&Vec>> { - self.dmq_contents.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_dmq_contents(&mut self, key: (Hash, ParaId), value: Vec>) { - self.dmq_contents.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn inbound_hrmp_channels_contents(&mut self, key: (Hash, ParaId)) -> Option<&BTreeMap>>> { - self.inbound_hrmp_channels_contents.get(&key).map(|v| &v.0) - } - - pub(crate) fn cache_inbound_hrmp_channel_contents(&mut self, key: (Hash, ParaId), value: BTreeMap>>) { - self.inbound_hrmp_channels_contents.insert(key, ResidentSizeOf(value)); - } - - pub(crate) fn current_babe_epoch(&mut self, relay_parent: &Hash) -> Option<&Epoch> { - self.current_babe_epoch.get(relay_parent).map(|v| &v.0) - } - - pub(crate) fn cache_current_babe_epoch(&mut self, relay_parent: Hash, epoch: Epoch) { - self.current_babe_epoch.insert(relay_parent, DoesNotAllocate(epoch)); - } -} - -pub(crate) enum RequestResult { - Authorities(Hash, Vec), - Validators(Hash, Vec), - ValidatorGroups(Hash, (Vec>, GroupRotationInfo)), - AvailabilityCores(Hash, Vec), - PersistedValidationData(Hash, ParaId, OccupiedCoreAssumption, Option), - CheckValidationOutputs(Hash, ParaId, CandidateCommitments, bool), - SessionIndexForChild(Hash, SessionIndex), - ValidationCode(Hash, ParaId, OccupiedCoreAssumption, Option), - ValidationCodeByHash(Hash, ValidationCodeHash, Option), - CandidatePendingAvailability(Hash, ParaId, Option), - CandidateEvents(Hash, Vec), - SessionInfo(Hash, SessionIndex, Option), - DmqContents(Hash, ParaId, Vec>), - InboundHrmpChannelsContents(Hash, ParaId, BTreeMap>>), - CurrentBabeEpoch(Hash, Epoch), -} diff --git a/node/core/runtime-api/src/lib.rs b/node/core/runtime-api/src/lib.rs deleted file mode 100644 index 839cbfa3938c..000000000000 --- a/node/core/runtime-api/src/lib.rs +++ /dev/null @@ -1,416 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Implements the Runtime API Subsystem -//! -//! This provides a clean, ownerless wrapper around the parachain-related runtime APIs. This crate -//! can also be used to cache responses from heavy runtime APIs. - -#![deny(unused_crate_dependencies)] -#![warn(missing_docs)] - -use polkadot_subsystem::{ - Subsystem, SpawnedSubsystem, SubsystemResult, SubsystemContext, - FromOverseer, OverseerSignal, - messages::{ - RuntimeApiMessage, RuntimeApiRequest as Request, - }, - errors::RuntimeApiError, -}; -use polkadot_node_subsystem_util::metrics::{self, prometheus}; -use polkadot_primitives::v1::{Block, BlockId, Hash, ParachainHost}; - -use sp_api::ProvideRuntimeApi; -use sp_authority_discovery::AuthorityDiscoveryApi; -use sp_core::traits::SpawnNamed; -use sp_consensus_babe::BabeApi; - -use futures::{prelude::*, stream::FuturesUnordered, channel::oneshot, select}; -use std::{sync::Arc, collections::VecDeque, pin::Pin}; -use cache::{RequestResult, RequestResultCache}; - -mod cache; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::runtime-api"; - -/// The number of maximum runtime api requests can be executed in parallel. Further requests will be buffered. -const MAX_PARALLEL_REQUESTS: usize = 4; - -/// The name of the blocking task that executes a runtime api request. -const API_REQUEST_TASK_NAME: &str = "polkadot-runtime-api-request"; - -/// The `RuntimeApiSubsystem`. See module docs for more details. -pub struct RuntimeApiSubsystem { - client: Arc, - metrics: Metrics, - spawn_handle: Box, - /// If there are [`MAX_PARALLEL_REQUESTS`] requests being executed, we buffer them in here until they can be executed. - waiting_requests: VecDeque<( - Pin + Send>>, - oneshot::Receiver>, - )>, - /// All the active runtime api requests that are currently being executed. - active_requests: FuturesUnordered>>, - /// Requests results cache - requests_cache: RequestResultCache, -} - -impl RuntimeApiSubsystem { - /// Create a new Runtime API subsystem wrapping the given client and metrics. - pub fn new(client: Arc, metrics: Metrics, spawn_handle: impl SpawnNamed + 'static) -> Self { - RuntimeApiSubsystem { - client, - metrics, - spawn_handle: Box::new(spawn_handle), - waiting_requests: Default::default(), - active_requests: Default::default(), - requests_cache: RequestResultCache::default(), - } - } -} - -impl Subsystem for RuntimeApiSubsystem where - Client: ProvideRuntimeApi + Send + 'static + Sync, - Client::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Context: SubsystemContext -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - SpawnedSubsystem { - future: run(ctx, self).boxed(), - name: "runtime-api-subsystem", - } - } -} - -impl RuntimeApiSubsystem where - Client: ProvideRuntimeApi + Send + 'static + Sync, - Client::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, -{ - fn store_cache(&mut self, result: RequestResult) { - use RequestResult::*; - - match result { - Authorities(relay_parent, authorities) => - self.requests_cache.cache_authorities(relay_parent, authorities), - Validators(relay_parent, validators) => - self.requests_cache.cache_validators(relay_parent, validators), - ValidatorGroups(relay_parent, groups) => - self.requests_cache.cache_validator_groups(relay_parent, groups), - AvailabilityCores(relay_parent, cores) => - self.requests_cache.cache_availability_cores(relay_parent, cores), - PersistedValidationData(relay_parent, para_id, assumption, data) => - self.requests_cache.cache_persisted_validation_data((relay_parent, para_id, assumption), data), - CheckValidationOutputs(relay_parent, para_id, commitments, b) => - self.requests_cache.cache_check_validation_outputs((relay_parent, para_id, commitments), b), - SessionIndexForChild(relay_parent, session_index) => - self.requests_cache.cache_session_index_for_child(relay_parent, session_index), - ValidationCode(relay_parent, para_id, assumption, code) => - self.requests_cache.cache_validation_code((relay_parent, para_id, assumption), code), - ValidationCodeByHash(relay_parent, validation_code_hash, code) => - self.requests_cache.cache_validation_code_by_hash((relay_parent, validation_code_hash), code), - CandidatePendingAvailability(relay_parent, para_id, candidate) => - self.requests_cache.cache_candidate_pending_availability((relay_parent, para_id), candidate), - CandidateEvents(relay_parent, events) => - self.requests_cache.cache_candidate_events(relay_parent, events), - SessionInfo(relay_parent, session_index, info) => - self.requests_cache.cache_session_info((relay_parent, session_index), info), - DmqContents(relay_parent, para_id, messages) => - self.requests_cache.cache_dmq_contents((relay_parent, para_id), messages), - InboundHrmpChannelsContents(relay_parent, para_id, contents) => - self.requests_cache.cache_inbound_hrmp_channel_contents((relay_parent, para_id), contents), - CurrentBabeEpoch(relay_parent, epoch) => - self.requests_cache.cache_current_babe_epoch(relay_parent, epoch), - } - } - - fn query_cache(&mut self, relay_parent: Hash, request: Request) -> Option { - macro_rules! query { - // Just query by relay parent - ($cache_api_name:ident (), $sender:expr) => {{ - let sender = $sender; - if let Some(value) = self.requests_cache.$cache_api_name(&relay_parent) { - let _ = sender.send(Ok(value.clone())); - self.metrics.on_cached_request(); - None - } else { - Some(sender) - } - }}; - // Query by relay parent + additional parameters - ($cache_api_name:ident ($($param:expr),+), $sender:expr) => {{ - let sender = $sender; - if let Some(value) = self.requests_cache.$cache_api_name((relay_parent.clone(), $($param.clone()),+)) { - self.metrics.on_cached_request(); - let _ = sender.send(Ok(value.clone())); - None - } else { - Some(sender) - } - }} - } - - match request { - Request::Authorities(sender) => query!(authorities(), sender) - .map(|sender| Request::Authorities(sender)), - Request::Validators(sender) => query!(validators(), sender) - .map(|sender| Request::Validators(sender)), - Request::ValidatorGroups(sender) => query!(validator_groups(), sender) - .map(|sender| Request::ValidatorGroups(sender)), - Request::AvailabilityCores(sender) => query!(availability_cores(), sender) - .map(|sender| Request::AvailabilityCores(sender)), - Request::PersistedValidationData(para, assumption, sender) => - query!(persisted_validation_data(para, assumption), sender) - .map(|sender| Request::PersistedValidationData(para, assumption, sender)), - Request::CheckValidationOutputs(para, commitments, sender) => - query!(check_validation_outputs(para, commitments), sender) - .map(|sender| Request::CheckValidationOutputs(para, commitments, sender)), - Request::SessionIndexForChild(sender) => - query!(session_index_for_child(), sender) - .map(|sender| Request::SessionIndexForChild(sender)), - Request::ValidationCode(para, assumption, sender) => - query!(validation_code(para, assumption), sender) - .map(|sender| Request::ValidationCode(para, assumption, sender)), - Request::ValidationCodeByHash(validation_code_hash, sender) => - query!(validation_code_by_hash(validation_code_hash), sender) - .map(|sender| Request::ValidationCodeByHash(validation_code_hash, sender)), - Request::CandidatePendingAvailability(para, sender) => - query!(candidate_pending_availability(para), sender) - .map(|sender| Request::CandidatePendingAvailability(para, sender)), - Request::CandidateEvents(sender) => query!(candidate_events(), sender) - .map(|sender| Request::CandidateEvents(sender)), - Request::SessionInfo(index, sender) => query!(session_info(index), sender) - .map(|sender| Request::SessionInfo(index, sender)), - Request::DmqContents(id, sender) => query!(dmq_contents(id), sender) - .map(|sender| Request::DmqContents(id, sender)), - Request::InboundHrmpChannelsContents(id, sender) => - query!(inbound_hrmp_channels_contents(id), sender) - .map(|sender| Request::InboundHrmpChannelsContents(id, sender)), - Request::CurrentBabeEpoch(sender) => - query!(current_babe_epoch(), sender) - .map(|sender| Request::CurrentBabeEpoch(sender)), - } - } - - /// Spawn a runtime api request. - /// - /// If there are already [`MAX_PARALLEL_REQUESTS`] requests being executed, the request will be buffered. - fn spawn_request(&mut self, relay_parent: Hash, request: Request) { - let client = self.client.clone(); - let metrics = self.metrics.clone(); - let (sender, receiver) = oneshot::channel(); - - let request = match self.query_cache(relay_parent.clone(), request) { - Some(request) => request, - None => return, - }; - - let request = async move { - let result = make_runtime_api_request( - client, - metrics, - relay_parent, - request, - ); - let _ = sender.send(result); - }.boxed(); - - if self.active_requests.len() >= MAX_PARALLEL_REQUESTS { - self.waiting_requests.push_back((request, receiver)); - - if self.waiting_requests.len() > MAX_PARALLEL_REQUESTS * 10 { - tracing::warn!( - target: LOG_TARGET, - "{} runtime api requests waiting to be executed.", - self.waiting_requests.len(), - ) - } - } else { - self.spawn_handle.spawn_blocking(API_REQUEST_TASK_NAME, request); - self.active_requests.push(receiver); - } - } - - /// Poll the active runtime api requests. - async fn poll_requests(&mut self) { - // If there are no active requests, this future should be pending forever. - if self.active_requests.len() == 0 { - return futures::pending!() - } - - // If there are active requests, this will always resolve to `Some(_)` when a request is finished. - if let Some(Ok(Some(result))) = self.active_requests.next().await { - self.store_cache(result); - } - - if let Some((req, recv)) = self.waiting_requests.pop_front() { - self.spawn_handle.spawn_blocking(API_REQUEST_TASK_NAME, req); - self.active_requests.push(recv); - } - } -} - -async fn run( - mut ctx: impl SubsystemContext, - mut subsystem: RuntimeApiSubsystem, -) -> SubsystemResult<()> where - Client: ProvideRuntimeApi + Send + Sync + 'static, - Client::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, -{ - loop { - select! { - req = ctx.recv().fuse() => match req? { - FromOverseer::Signal(OverseerSignal::Conclude) => return Ok(()), - FromOverseer::Signal(OverseerSignal::ActiveLeaves(_)) => {}, - FromOverseer::Signal(OverseerSignal::BlockFinalized(..)) => {}, - FromOverseer::Communication { msg } => match msg { - RuntimeApiMessage::Request(relay_parent, request) => { - subsystem.spawn_request(relay_parent, request); - }, - } - }, - _ = subsystem.poll_requests().fuse() => {}, - } - } -} - -fn make_runtime_api_request( - client: Arc, - metrics: Metrics, - relay_parent: Hash, - request: Request, -) -> Option -where - Client: ProvideRuntimeApi, - Client::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, -{ - let _timer = metrics.time_make_runtime_api_request(); - - macro_rules! query { - ($req_variant:ident, $api_name:ident (), $sender:expr) => {{ - let sender = $sender; - let api = client.runtime_api(); - let res = api.$api_name(&BlockId::Hash(relay_parent)) - .map_err(|e| RuntimeApiError::from(format!("{:?}", e))); - metrics.on_request(res.is_ok()); - let _ = sender.send(res.clone()); - - if let Ok(res) = res { - Some(RequestResult::$req_variant(relay_parent, res.clone())) - } else { - None - } - }}; - ($req_variant:ident, $api_name:ident ($($param:expr),+), $sender:expr) => {{ - let sender = $sender; - let api = client.runtime_api(); - let res = api.$api_name(&BlockId::Hash(relay_parent), $($param.clone()),*) - .map_err(|e| RuntimeApiError::from(format!("{:?}", e))); - metrics.on_request(res.is_ok()); - let _ = sender.send(res.clone()); - - if let Ok(res) = res { - Some(RequestResult::$req_variant(relay_parent, $($param),+, res.clone())) - } else { - None - } - }} - } - - match request { - Request::Authorities(sender) => query!(Authorities, authorities(), sender), - Request::Validators(sender) => query!(Validators, validators(), sender), - Request::ValidatorGroups(sender) => query!(ValidatorGroups, validator_groups(), sender), - Request::AvailabilityCores(sender) => query!(AvailabilityCores, availability_cores(), sender), - Request::PersistedValidationData(para, assumption, sender) => - query!(PersistedValidationData, persisted_validation_data(para, assumption), sender), - Request::CheckValidationOutputs(para, commitments, sender) => - query!(CheckValidationOutputs, check_validation_outputs(para, commitments), sender), - Request::SessionIndexForChild(sender) => query!(SessionIndexForChild, session_index_for_child(), sender), - Request::ValidationCode(para, assumption, sender) => - query!(ValidationCode, validation_code(para, assumption), sender), - Request::ValidationCodeByHash(validation_code_hash, sender) => - query!(ValidationCodeByHash, validation_code_by_hash(validation_code_hash), sender), - Request::CandidatePendingAvailability(para, sender) => - query!(CandidatePendingAvailability, candidate_pending_availability(para), sender), - Request::CandidateEvents(sender) => query!(CandidateEvents, candidate_events(), sender), - Request::SessionInfo(index, sender) => query!(SessionInfo, session_info(index), sender), - Request::DmqContents(id, sender) => query!(DmqContents, dmq_contents(id), sender), - Request::InboundHrmpChannelsContents(id, sender) => query!(InboundHrmpChannelsContents, inbound_hrmp_channels_contents(id), sender), - Request::CurrentBabeEpoch(sender) => query!(CurrentBabeEpoch, current_epoch(), sender), - } -} - -#[derive(Clone)] -struct MetricsInner { - chain_api_requests: prometheus::CounterVec, - make_runtime_api_request: prometheus::Histogram, -} - -/// Runtime API metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_request(&self, succeeded: bool) { - if let Some(metrics) = &self.0 { - if succeeded { - metrics.chain_api_requests.with_label_values(&["succeeded"]).inc(); - } else { - metrics.chain_api_requests.with_label_values(&["failed"]).inc(); - } - } - } - - fn on_cached_request(&self) { - self.0.as_ref() - .map(|metrics| metrics.chain_api_requests.with_label_values(&["cached"]).inc()); - } - - /// Provide a timer for `make_runtime_api_request` which observes on drop. - fn time_make_runtime_api_request(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.make_runtime_api_request.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - chain_api_requests: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_runtime_api_requests_total", - "Number of Runtime API requests served.", - ), - &["success"], - )?, - registry, - )?, - make_runtime_api_request: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_runtime_api_make_runtime_api_request", - "Time spent within `runtime_api::make_runtime_api_request`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/core/runtime-api/src/tests.rs b/node/core/runtime-api/src/tests.rs deleted file mode 100644 index 787dc8884b0b..000000000000 --- a/node/core/runtime-api/src/tests.rs +++ /dev/null @@ -1,790 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; - -use polkadot_primitives::v1::{ - ValidatorId, ValidatorIndex, GroupRotationInfo, CoreState, PersistedValidationData, - Id as ParaId, OccupiedCoreAssumption, SessionIndex, ValidationCode, - CommittedCandidateReceipt, CandidateEvent, InboundDownwardMessage, - InboundHrmpMessage, SessionInfo, AuthorityDiscoveryId, ValidationCodeHash, -}; -use polkadot_node_subsystem_test_helpers as test_helpers; -use sp_core::testing::TaskExecutor; -use std::{collections::{HashMap, BTreeMap}, sync::{Arc, Mutex}}; -use futures::channel::oneshot; -use polkadot_node_primitives::{ - BabeEpoch, BabeEpochConfiguration, BabeAllowedSlots, -}; - -#[derive(Default, Clone)] -struct MockRuntimeApi { - authorities: Vec, - validators: Vec, - validator_groups: Vec>, - availability_cores: Vec, - availability_cores_wait: Arc>, - validation_data: HashMap, - session_index_for_child: SessionIndex, - session_info: HashMap, - validation_code: HashMap, - validation_code_by_hash: HashMap, - validation_outputs_results: HashMap, - candidate_pending_availability: HashMap, - candidate_events: Vec, - dmq_contents: HashMap>, - hrmp_channels: HashMap>>, - babe_epoch: Option, -} - -impl ProvideRuntimeApi for MockRuntimeApi { - type Api = Self; - - fn runtime_api<'a>(&'a self) -> sp_api::ApiRef<'a, Self::Api> { - self.clone().into() - } -} - -sp_api::mock_impl_runtime_apis! { - impl ParachainHost for MockRuntimeApi { - fn validators(&self) -> Vec { - self.validators.clone() - } - - fn validator_groups(&self) -> (Vec>, GroupRotationInfo) { - ( - self.validator_groups.clone(), - GroupRotationInfo { - session_start_block: 1, - group_rotation_frequency: 100, - now: 10, - }, - ) - } - - fn availability_cores(&self) -> Vec { - let _ = self.availability_cores_wait.lock().unwrap(); - self.availability_cores.clone() - } - - fn persisted_validation_data( - &self, - para: ParaId, - _assumption: OccupiedCoreAssumption, - ) -> Option { - self.validation_data.get(¶).cloned() - } - - fn check_validation_outputs( - &self, - para_id: ParaId, - _commitments: polkadot_primitives::v1::CandidateCommitments, - ) -> bool { - self.validation_outputs_results - .get(¶_id) - .cloned() - .expect( - "`check_validation_outputs` called but the expected result hasn't been supplied" - ) - } - - fn session_index_for_child(&self) -> SessionIndex { - self.session_index_for_child.clone() - } - - fn session_info(&self, index: SessionIndex) -> Option { - self.session_info.get(&index).cloned() - } - - fn validation_code( - &self, - para: ParaId, - _assumption: OccupiedCoreAssumption, - ) -> Option { - self.validation_code.get(¶).map(|c| c.clone()) - } - - fn candidate_pending_availability( - &self, - para: ParaId, - ) -> Option { - self.candidate_pending_availability.get(¶).map(|c| c.clone()) - } - - fn candidate_events(&self) -> Vec { - self.candidate_events.clone() - } - - fn dmq_contents( - &self, - recipient: ParaId, - ) -> Vec { - self.dmq_contents.get(&recipient).map(|q| q.clone()).unwrap_or_default() - } - - fn inbound_hrmp_channels_contents( - &self, - recipient: ParaId - ) -> BTreeMap> { - self.hrmp_channels.get(&recipient).map(|q| q.clone()).unwrap_or_default() - } - - fn validation_code_by_hash( - &self, - hash: ValidationCodeHash, - ) -> Option { - self.validation_code_by_hash.get(&hash).map(|c| c.clone()) - } - } - - impl BabeApi for MockRuntimeApi { - fn configuration(&self) -> sp_consensus_babe::BabeGenesisConfiguration { - unimplemented!() - } - - fn current_epoch_start(&self) -> sp_consensus_babe::Slot { - self.babe_epoch.as_ref().unwrap().start_slot - } - - fn current_epoch(&self) -> BabeEpoch { - self.babe_epoch.as_ref().unwrap().clone() - } - - fn next_epoch(&self) -> BabeEpoch { - unimplemented!() - } - - fn generate_key_ownership_proof( - _slot: sp_consensus_babe::Slot, - _authority_id: sp_consensus_babe::AuthorityId, - ) -> Option { - None - } - - fn submit_report_equivocation_unsigned_extrinsic( - _equivocation_proof: sp_consensus_babe::EquivocationProof, - _key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof, - ) -> Option<()> { - None - } - } - - impl AuthorityDiscoveryApi for MockRuntimeApi { - fn authorities(&self) -> Vec { - self.authorities.clone() - } - } -} - -#[test] -fn requests_authorities() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::Authorities(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), runtime_api.authorities); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_validators() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::Validators(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), runtime_api.validators); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_validator_groups() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::ValidatorGroups(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap().0, runtime_api.validator_groups); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_availability_cores() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::AvailabilityCores(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), runtime_api.availability_cores); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_persisted_validation_data() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let relay_parent = [1; 32].into(); - let para_a = 5.into(); - let para_b = 6.into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let mut runtime_api = MockRuntimeApi::default(); - runtime_api.validation_data.insert(para_a, Default::default()); - let runtime_api = Arc::new(runtime_api); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::PersistedValidationData(para_a, OccupiedCoreAssumption::Included, tx) - ), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), Some(Default::default())); - - let (tx, rx) = oneshot::channel(); - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::PersistedValidationData(para_b, OccupiedCoreAssumption::Included, tx) - ), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), None); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_check_validation_outputs() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let mut runtime_api = MockRuntimeApi::default(); - let relay_parent = [1; 32].into(); - let para_a = 5.into(); - let para_b = 6.into(); - let commitments = polkadot_primitives::v1::CandidateCommitments::default(); - let spawner = sp_core::testing::TaskExecutor::new(); - - runtime_api.validation_outputs_results.insert(para_a, false); - runtime_api.validation_outputs_results.insert(para_b, true); - - let runtime_api = Arc::new(runtime_api); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::CheckValidationOutputs( - para_a, - commitments.clone(), - tx, - ), - ) - }).await; - assert_eq!( - rx.await.unwrap().unwrap(), - runtime_api.validation_outputs_results[¶_a], - ); - - let (tx, rx) = oneshot::channel(); - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::CheckValidationOutputs( - para_b, - commitments, - tx, - ), - ) - }).await; - assert_eq!( - rx.await.unwrap().unwrap(), - runtime_api.validation_outputs_results[¶_b], - ); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_session_index_for_child() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::SessionIndexForChild(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), runtime_api.session_index_for_child); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_session_info() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let mut runtime_api = MockRuntimeApi::default(); - let session_index = 1; - runtime_api.session_info.insert(session_index, Default::default()); - let runtime_api = Arc::new(runtime_api); - let spawner = sp_core::testing::TaskExecutor::new(); - - let relay_parent = [1; 32].into(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::SessionInfo(session_index, tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), Some(Default::default())); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_validation_code() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - - let relay_parent = [1; 32].into(); - let para_a = 5.into(); - let para_b = 6.into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let mut runtime_api = MockRuntimeApi::default(); - runtime_api.validation_code.insert(para_a, Default::default()); - let runtime_api = Arc::new(runtime_api); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::ValidationCode(para_a, OccupiedCoreAssumption::Included, tx) - ), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), Some(Default::default())); - - let (tx, rx) = oneshot::channel(); - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::ValidationCode(para_b, OccupiedCoreAssumption::Included, tx) - ), - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), None); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_candidate_pending_availability() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let relay_parent = [1; 32].into(); - let para_a = 5.into(); - let para_b = 6.into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let mut runtime_api = MockRuntimeApi::default(); - runtime_api.candidate_pending_availability.insert(para_a, Default::default()); - let runtime_api = Arc::new(runtime_api); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::CandidatePendingAvailability(para_a, tx), - ) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), Some(Default::default())); - - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::CandidatePendingAvailability(para_b, tx), - ) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), None); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_candidate_events() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::CandidateEvents(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), runtime_api.candidate_events); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_dmq_contents() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - - let relay_parent = [1; 32].into(); - let para_a = 5.into(); - let para_b = 6.into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let runtime_api = Arc::new({ - let mut runtime_api = MockRuntimeApi::default(); - - runtime_api.dmq_contents.insert(para_a, vec![]); - runtime_api.dmq_contents.insert( - para_b, - vec![InboundDownwardMessage { - sent_at: 228, - msg: b"Novus Ordo Seclorum".to_vec(), - }], - ); - - runtime_api - }); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - ctx_handle - .send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::DmqContents(para_a, tx)), - }) - .await; - assert_eq!(rx.await.unwrap().unwrap(), vec![]); - - let (tx, rx) = oneshot::channel(); - ctx_handle - .send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::DmqContents(para_b, tx)), - }) - .await; - assert_eq!( - rx.await.unwrap().unwrap(), - vec![InboundDownwardMessage { - sent_at: 228, - msg: b"Novus Ordo Seclorum".to_vec(), - }] - ); - - ctx_handle - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .await; - }; - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_inbound_hrmp_channels_contents() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - - let relay_parent = [1; 32].into(); - let para_a = 99.into(); - let para_b = 66.into(); - let para_c = 33.into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let para_b_inbound_channels = [ - (para_a, vec![]), - ( - para_c, - vec![InboundHrmpMessage { - sent_at: 1, - data: "𝙀=𝙈𝘾²".as_bytes().to_owned(), - }], - ), - ] - .iter() - .cloned() - .collect::>(); - - let runtime_api = Arc::new({ - let mut runtime_api = MockRuntimeApi::default(); - - runtime_api.hrmp_channels.insert(para_a, BTreeMap::new()); - runtime_api - .hrmp_channels - .insert(para_b, para_b_inbound_channels.clone()); - - runtime_api - }); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - ctx_handle - .send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::InboundHrmpChannelsContents(para_a, tx), - ), - }) - .await; - assert_eq!(rx.await.unwrap().unwrap(), BTreeMap::new()); - - let (tx, rx) = oneshot::channel(); - ctx_handle - .send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::InboundHrmpChannelsContents(para_b, tx), - ), - }) - .await; - assert_eq!(rx.await.unwrap().unwrap(), para_b_inbound_channels,); - - ctx_handle - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .await; - }; - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn requests_validation_code_by_hash() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let spawner = sp_core::testing::TaskExecutor::new(); - - let (runtime_api, validation_code) = { - let mut runtime_api = MockRuntimeApi::default(); - let mut validation_code = Vec::new(); - - for n in 0..5 { - let code = ValidationCode::from(vec![n; 32]); - runtime_api.validation_code_by_hash.insert( - code.hash(), - code.clone(), - ); - validation_code.push(code); - } - - (runtime_api, validation_code) - }; - - let subsystem = RuntimeApiSubsystem::new(Arc::new(runtime_api), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - - let relay_parent = [1; 32].into(); - let test_task = async move { - for code in validation_code { - let (tx, rx) = oneshot::channel(); - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request( - relay_parent, - Request::ValidationCodeByHash(code.hash(), tx), - ) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), Some(code)); - } - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn multiple_requests_in_parallel_are_working() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let runtime_api = Arc::new(MockRuntimeApi::default()); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - let mutex = runtime_api.availability_cores_wait.clone(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - // Make all requests block until we release this mutex. - let lock = mutex.lock().unwrap(); - - let mut receivers = Vec::new(); - - for _ in 0..MAX_PARALLEL_REQUESTS * 10 { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::AvailabilityCores(tx)) - }).await; - - receivers.push(rx); - } - - let join = future::join_all(receivers); - - drop(lock); - - join.await - .into_iter() - .for_each(|r| assert_eq!(r.unwrap().unwrap(), runtime_api.availability_cores)); - - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} - -#[test] -fn request_babe_epoch() { - let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); - let mut runtime_api = MockRuntimeApi::default(); - let epoch = BabeEpoch { - epoch_index: 100, - start_slot: sp_consensus_babe::Slot::from(1000), - duration: 10, - authorities: Vec::new(), - randomness: [1u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: BabeAllowedSlots::PrimarySlots, - }, - }; - runtime_api.babe_epoch = Some(epoch.clone()); - let runtime_api = Arc::new(runtime_api); - let relay_parent = [1; 32].into(); - let spawner = sp_core::testing::TaskExecutor::new(); - - let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); - let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); - let test_task = async move { - let (tx, rx) = oneshot::channel(); - - ctx_handle.send(FromOverseer::Communication { - msg: RuntimeApiMessage::Request(relay_parent, Request::CurrentBabeEpoch(tx)) - }).await; - - assert_eq!(rx.await.unwrap().unwrap(), epoch); - ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::executor::block_on(future::join(subsystem_task, test_task)); -} diff --git a/node/jaeger/Cargo.toml b/node/jaeger/Cargo.toml deleted file mode 100644 index 4bbcb0541473..000000000000 --- a/node/jaeger/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "polkadot-node-jaeger" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Polkadot Jaeger primitives" - -[dependencies] -async-std = "1.8.0" -mick-jaeger = "0.1.4" -lazy_static = "1.4" -parking_lot = "0.11.1" -polkadot-primitives = { path = "../../primitives" } -polkadot-node-primitives = { path = "../primitives" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -thiserror = "1.0.23" -log = "0.4.13" -parity-scale-codec = { version = "2.0.0", default-features = false } diff --git a/node/jaeger/src/config.rs b/node/jaeger/src/config.rs deleted file mode 100644 index 777d7705f5e7..000000000000 --- a/node/jaeger/src/config.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot Jaeger configuration. - -/// Configuration for the jaeger tracing. -#[derive(Clone)] -pub struct JaegerConfig { - pub(crate) node_name: String, - pub(crate) agent_addr: std::net::SocketAddr, -} - -impl std::default::Default for JaegerConfig { - fn default() -> Self { - Self { - node_name: "unknown_".to_owned(), - agent_addr: "127.0.0.1:6831" - .parse() - .expect(r#"Static "127.0.0.1:6831" is a valid socket address string. qed"#), - } - } -} - -impl JaegerConfig { - /// Use the builder pattern to construct a configuration. - pub fn builder() -> JaegerConfigBuilder { - JaegerConfigBuilder::default() - } -} - -/// Jaeger configuration builder. -#[derive(Default)] -pub struct JaegerConfigBuilder { - inner: JaegerConfig, -} - -impl JaegerConfigBuilder { - /// Set the name for this node. - pub fn named(mut self, name: S) -> Self - where - S: AsRef, - { - self.inner.node_name = name.as_ref().to_owned(); - self - } - - /// Set the agent address to send the collected spans to. - pub fn agent(mut self, addr: U) -> Self - where - U: Into, - { - self.inner.agent_addr = addr.into(); - self - } - - /// Construct the configuration. - pub fn build(self) -> JaegerConfig { - self.inner - } -} diff --git a/node/jaeger/src/errors.rs b/node/jaeger/src/errors.rs deleted file mode 100644 index cf5cdc1e8649..000000000000 --- a/node/jaeger/src/errors.rs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot Jaeger error definitions. - -/// A description of an error during jaeger initialization. -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum JaegerError { - #[error("Already launched the collector thread")] - AlreadyLaunched, - - #[error("Missing jaeger configuration")] - MissingConfiguration, -} diff --git a/node/jaeger/src/lib.rs b/node/jaeger/src/lib.rs deleted file mode 100644 index 4b88966f3f96..000000000000 --- a/node/jaeger/src/lib.rs +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot Jaeger related primitives -//! -//! Provides primitives used by Polkadot for interfacing with Jaeger. -//! -//! # Integration -//! -//! See for an introduction. -//! -//! The easiest way to try Jaeger is: -//! -//! - Start a docker container with the all-in-one docker image (see below). -//! - Open your browser and navigate to to access the UI. -//! -//! The all-in-one image can be started with: -//! -//! ```not_rust -//! podman login docker.io -//! podman run -d --name jaeger \ -//! -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -//! -p 5775:5775/udp \ -//! -p 6831:6831/udp \ -//! -p 6832:6832/udp \ -//! -p 5778:5778 \ -//! -p 16686:16686 \ -//! -p 14268:14268 \ -//! -p 14250:14250 \ -//! -p 9411:9411 \ -//! docker.io/jaegertracing/all-in-one:1.21 -//! ``` - -#![forbid(unused_imports)] - -mod config; -mod errors; -mod spans; - -pub use self::config::{JaegerConfig, JaegerConfigBuilder}; -pub use self::errors::JaegerError; -pub use self::spans::{PerLeafSpan, Span, Stage}; - -use self::spans::TraceIdentifier; - -use sp_core::traits::SpawnNamed; - -use parking_lot::RwLock; -use std::{result, sync::Arc}; - -lazy_static::lazy_static! { - static ref INSTANCE: RwLock = RwLock::new(Jaeger::None); -} - -/// Stateful convenience wrapper around [`mick_jaeger`]. -pub enum Jaeger { - /// Launched and operational state. - Launched { - /// [`mick_jaeger`] provided API to record spans to. - traces_in: Arc, - }, - /// Preparation state with the necessary config to launch the collector. - Prep(JaegerConfig), - /// Uninitialized, suggests wrong API usage if encountered. - None, -} - -impl Jaeger { - /// Spawn the jaeger instance. - pub fn new(cfg: JaegerConfig) -> Self { - Jaeger::Prep(cfg) - } - - /// Spawn the background task in order to send the tracing information out via udp - #[cfg(target_os = "unknown")] - pub fn launch(self, _spawner: S) -> result::Result<(), JaegerError> { - Ok(()) - } - - /// Spawn the background task in order to send the tracing information out via udp - #[cfg(not(target_os = "unknown"))] - pub fn launch(self, spawner: S) -> result::Result<(), JaegerError> { - let cfg = match self { - Self::Prep(cfg) => Ok(cfg), - Self::Launched { .. } => return Err(JaegerError::AlreadyLaunched), - Self::None => Err(JaegerError::MissingConfiguration), - }?; - - let jaeger_agent = cfg.agent_addr; - - log::info!("🐹 Collecting jaeger spans for {:?}", &jaeger_agent); - - let (traces_in, mut traces_out) = - mick_jaeger::init(mick_jaeger::Config { service_name: format!("polkadot-{}", cfg.node_name) }); - - // Spawn a background task that pulls span information and sends them on the network. - spawner.spawn( - "jaeger-collector", - Box::pin(async move { - match async_std::net::UdpSocket::bind("0.0.0.0:0").await { - Ok(udp_socket) => loop { - let buf = traces_out.next().await; - // UDP sending errors happen only either if the API is misused or in case of missing privilege. - if let Err(e) = udp_socket.send_to(&buf, jaeger_agent).await { - log::debug!(target: "jaeger", "UDP send error: {}", e); - } - }, - Err(e) => { - log::warn!(target: "jaeger", "UDP socket open error: {}", e); - } - } - }), - ); - - *INSTANCE.write() = Self::Launched { traces_in }; - Ok(()) - } - - pub(crate) fn span(&self, lazy_hash: F, span_name: &'static str) -> Option - where - F: Fn() -> TraceIdentifier, - { - if let Self::Launched { traces_in, .. } = self { - let ident = lazy_hash(); - let trace_id = std::num::NonZeroU128::new(ident)?; - Some(traces_in.span(trace_id, span_name)) - } else { - None - } - } -} diff --git a/node/jaeger/src/spans.rs b/node/jaeger/src/spans.rs deleted file mode 100644 index acbb8541f291..000000000000 --- a/node/jaeger/src/spans.rs +++ /dev/null @@ -1,432 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot Jaeger span definitions. -//! -//! ```rust -//! # use polkadot_primitives::v1::{CandidateHash, Hash}; -//! # fn main() { -//! use polkadot_node_jaeger as jaeger; -//! -//! let relay_parent = Hash::default(); -//! let candidate = CandidateHash::default(); -//! -//! #[derive(Debug, Default)] -//! struct Foo { -//! a: u8, -//! b: u16, -//! c: u32, -//! }; -//! -//! let foo = Foo::default(); -//! -//! let span = -//! jaeger::Span::new(relay_parent, "root_of_aaall_spans") -//! // explicit well defined items -//! .with_candidate(candidate) -//! // anything that implements `trait std::fmt::Debug` -//! .with_string_fmt_debug_tag("foo", foo) -//! // anything that implements `trait std::str::ToString` -//! .with_string_tag("again", 1337_u32) -//! // add a `Stage` for [`dot-jaeger`](https://github.com/paritytech/dot-jaeger) -//! .with_stage(jaeger::Stage::CandidateBacking); -//! // complete by design, no completion required -//! # } -//! ``` -//! -//! In a few cases additional annotations might want to be added -//! over the course of a function, for this purpose use the non-consuming -//! `fn` variants, i.e. -//! ```rust -//! # use polkadot_primitives::v1::{CandidateHash, Hash}; -//! # fn main() { -//! # use polkadot_node_jaeger as jaeger; -//! -//! # let relay_parent = Hash::default(); -//! # let candidate = CandidateHash::default(); -//! -//! # #[derive(Debug, Default)] -//! # struct Foo { -//! # a: u8, -//! # b: u16, -//! # c: u32, -//! # }; -//! # -//! # let foo = Foo::default(); -//! -//! let root_span = -//! jaeger::Span::new(relay_parent, "root_of_aaall_spans"); -//! -//! // the prefered way of adding additional delayed information: -//! let span = root_span.child("inner"); -//! -//! // ... more operations ... -//! -//! // but this is also possible: -//! -//! let mut root_span = root_span; -//! root_span.add_string_fmt_debug_tag("foo_constructed", &foo); -//! root_span.add_string_tag("bar", true); -//! # } -//! ``` - -use parity_scale_codec::Encode; -use polkadot_primitives::v1::{BlakeTwo256, CandidateHash, Hash, HashT, Id as ParaId, ValidatorIndex}; -use polkadot_node_primitives::PoV; -use sc_network::PeerId; - -use std::fmt; -use std::sync::Arc; - -use super::INSTANCE; - -/// A special "per leaf span". -/// -/// Essentially this span wraps two spans: -/// -/// 1. The span that is created per leaf in the overseer. -/// 2. Some child span of the per-leaf span. -/// -/// This just works as auxiliary structure to easily store both. -#[derive(Debug)] -pub struct PerLeafSpan { - leaf_span: Arc, - span: Span, -} - -impl PerLeafSpan { - /// Creates a new instance. - /// - /// Takes the `leaf_span` that is created by the overseer per leaf and a name for a child span. - /// Both will be stored in this object, while the child span is implicitly accessible by using the - /// [`Deref`](std::ops::Deref) implementation. - pub fn new(leaf_span: Arc, name: &'static str) -> Self { - let span = leaf_span.child(name); - - Self { span, leaf_span } - } - - /// Returns the leaf span. - pub fn leaf_span(&self) -> &Arc { - &self.leaf_span - } -} - -/// Returns a reference to the child span. -impl std::ops::Deref for PerLeafSpan { - type Target = Span; - - fn deref(&self) -> &Span { - &self.span - } -} - -/// A helper to annotate the stage with a numerical value -/// to ease the life of the tooling team creating viable -/// statistical metrics for which stage of the inclusion -/// pipeline drops a significant amount of candidates, -/// statistically speaking. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -#[repr(u8)] -#[non_exhaustive] -pub enum Stage { - CandidateSelection = 1, - CandidateBacking = 2, - StatementDistribution = 3, - PoVDistribution = 4, - AvailabilityDistribution = 5, - AvailabilityRecovery = 6, - BitfieldDistribution = 7, - ApprovalChecking = 8, - // Expand as needed, numbers should be ascending according to the stage - // through the inclusion pipeline, or according to the descriptions - // in [the path of a para chain block] - // (https://polkadot.network/the-path-of-a-parachain-block/) - // see [issue](https://github.com/paritytech/polkadot/issues/2389) -} - -/// A wrapper type for a span. -/// -/// Handles running with and without jaeger. -pub enum Span { - /// Running with jaeger being enabled. - Enabled(mick_jaeger::Span), - /// Running with jaeger disabled. - Disabled, -} - -/// Alias for the 16 byte unique identifier used with jaeger. -pub(crate) type TraceIdentifier = u128; - -/// A helper to convert the hash to the fixed size representation -/// needed for jaeger. -#[inline] -fn hash_to_identifier(hash: Hash) -> TraceIdentifier { - let mut buf = [0u8; 16]; - buf.copy_from_slice(&hash.as_ref()[0..16]); - u128::from_be_bytes(buf) as TraceIdentifier -} - -/// Helper to unify lazy proxy evaluation. -pub trait LazyIdent { - /// Evaluate the type to a unique trace identifier. - /// Called lazily on demand. - fn eval(&self) -> TraceIdentifier; - - /// Annotate a new root item with these additional spans - /// at construction. - fn extra_tags(&self, _span: &mut Span) {} -} - -impl<'a> LazyIdent for &'a [u8] { - fn eval(&self) -> TraceIdentifier { - hash_to_identifier(BlakeTwo256::hash_of(self)) - } -} - -impl LazyIdent for &PoV { - fn eval(&self) -> TraceIdentifier { - hash_to_identifier(self.hash()) - } - - fn extra_tags(&self, span: &mut Span) { - span.add_pov(self) - } -} - -impl LazyIdent for Hash { - fn eval(&self) -> TraceIdentifier { - hash_to_identifier(*self) - } - - fn extra_tags(&self, span: &mut Span) { - span.add_string_fmt_debug_tag("relay-parent", self); - } -} - -impl LazyIdent for &Hash { - fn eval(&self) -> TraceIdentifier { - hash_to_identifier(**self) - } - - fn extra_tags(&self, span: &mut Span) { - span.add_string_fmt_debug_tag("relay-parent", self); - } -} - -impl LazyIdent for CandidateHash { - fn eval(&self) -> TraceIdentifier { - hash_to_identifier(self.0) - } - - fn extra_tags(&self, span: &mut Span) { - span.add_string_fmt_debug_tag("candidate-hash", &self.0); - } -} - -impl Span { - /// Creates a new span builder based on anything that can be lazily evaluated - /// to and identifier. - pub fn new(identifier: I, span_name: &'static str) -> Span { - let mut span = INSTANCE.read_recursive().span(|| ::eval(&identifier), span_name).into(); - ::extra_tags(&identifier, &mut span); - span - } - - /// Creates a new span builder based on an encodable type. - /// The encoded bytes are then used to derive the true trace identifier. - pub fn from_encodable(identifier: I, span_name: &'static str) -> Span { - INSTANCE - .read_recursive() - .span( - move || { - let bytes = identifier.encode(); - LazyIdent::eval(&bytes.as_slice()) - }, - span_name, - ) - .into() - } - - /// Derive a child span from `self`. - pub fn child(&self, name: &'static str) -> Self { - match self { - Self::Enabled(inner) => Self::Enabled(inner.child(name)), - Self::Disabled => Self::Disabled, - } - } - - #[inline(always)] - pub fn with_string_tag(mut self, tag: &'static str, val: V) -> Self { - self.add_string_tag::(tag, val); - self - } - - #[inline(always)] - pub fn with_peer_id(self, peer: &PeerId) -> Self { - self.with_string_tag("peer-id", &peer.to_base58()) - } - - /// Attach a candidate hash to the span. - #[inline(always)] - pub fn with_candidate(self, candidate_hash: CandidateHash) -> Self { - self.with_string_fmt_debug_tag("candidate-hash", &candidate_hash.0) - } - - /// Attach a para-id to the span. - #[inline(always)] - pub fn with_para_id(self, para_id: ParaId) -> Self { - self.with_int_tag("para-id", u32::from(para_id) as i64) - } - - /// Attach a candidate stage. - /// Should always come with a `CandidateHash`. - #[inline(always)] - pub fn with_stage(self, stage: Stage) -> Self { - self.with_string_tag("candidate-stage", stage as u8) - } - - #[inline(always)] - pub fn with_validator_index(self, validator: ValidatorIndex) -> Self { - self.with_string_tag("validator-index", &validator.0) - } - - #[inline(always)] - pub fn with_chunk_index(self, chunk_index: u32) -> Self { - self.with_string_tag("chunk-index", chunk_index) - } - - #[inline(always)] - pub fn with_relay_parent(self, relay_parent: Hash) -> Self { - self.with_string_fmt_debug_tag("relay-parent", relay_parent) - } - - #[inline(always)] - pub fn with_claimed_validator_index(self, claimed_validator_index: ValidatorIndex) -> Self { - self.with_string_tag("claimed-validator", &claimed_validator_index.0) - } - - #[inline(always)] - pub fn with_pov(mut self, pov: &PoV) -> Self { - self.add_pov(pov); - self - } - - /// Add an additional int tag to the span without consuming. - /// - /// Should be used sparingly, introduction of new types is prefered. - #[inline(always)] - pub fn with_int_tag(mut self, tag: &'static str, i: i64) -> Self { - self.add_int_tag(tag, i); - self - } - - #[inline(always)] - pub fn with_uint_tag(mut self, tag: &'static str, u: u64) -> Self { - self.add_uint_tag(tag, u); - self - } - - #[inline(always)] - pub fn with_string_fmt_debug_tag(mut self, tag: &'static str, val: V) -> Self { - self.add_string_tag(tag, format!("{:?}", val)); - self - } - - /// Adds the `FollowsFrom` relationship to this span with respect to the given one. - #[inline(always)] - pub fn add_follows_from(&mut self, other: &Self) { - match (self, other) { - (Self::Enabled(ref mut inner), Self::Enabled(ref other_inner)) => inner.add_follows_from(&other_inner), - _ => {} - } - } - - /// Add a pov hash meta tag with lazy hash eval, without consuming the span. - #[inline(always)] - pub fn add_pov(&mut self, pov: &PoV) { - if self.is_enabled() { - // avoid computing the pov hash if jaeger is not enabled - self.add_string_fmt_debug_tag("pov", pov.hash()); - } - } - - #[inline(always)] - pub fn add_para_id(&mut self, para_id: ParaId) { - self.add_int_tag("para-id", u32::from(para_id) as i64); - } - - /// Add a string tag, without consuming the span. - pub fn add_string_tag(&mut self, tag: &'static str, val: V) { - match self { - Self::Enabled(ref mut inner) => inner.add_string_tag(tag, val.to_string().as_str()), - Self::Disabled => {} - } - } - - /// Add a string tag, without consuming the span. - pub fn add_string_fmt_debug_tag(&mut self, tag: &'static str, val: V) { - match self { - Self::Enabled(ref mut inner) => inner.add_string_tag(tag, format!("{:?}", val).as_str()), - Self::Disabled => {} - } - } - - pub fn add_int_tag(&mut self, tag: &'static str, value: i64) { - match self { - Self::Enabled(ref mut inner) => inner.add_int_tag(tag, value), - Self::Disabled => {} - } - } - - pub fn add_uint_tag(&mut self, tag: &'static str, value: u64) { - match self { - Self::Enabled(ref mut inner) => inner.add_int_tag(tag, value as i64), - Self::Disabled => {} - } - } - - /// Check whether jaeger is enabled - /// in order to avoid computational overhead. - pub const fn is_enabled(&self) -> bool { - match self { - Span::Enabled(_) => true, - _ => false, - } - } -} - -impl std::fmt::Debug for Span { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "") - } -} - -impl From> for Span { - fn from(src: Option) -> Self { - if let Some(span) = src { - Self::Enabled(span) - } else { - Self::Disabled - } - } -} - -impl From for Span { - fn from(src: mick_jaeger::Span) -> Self { - Self::Enabled(src) - } -} diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml deleted file mode 100644 index 30c1da1d4057..000000000000 --- a/node/malus/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[lib] -name = "malus" -path = "src/lib.rs" - -[[bin]] -name = "malus-variant-a" -path = "src/variant-a.rs" - -[package] -name = "polkadot-test-malus" -description = "Misbehaving nodes for local testnets, system and simnet tests." -license = "GPL-3.0-only" -version = "0.9.4" -authors = ["Parity Technologies "] -edition = "2018" -readme = "README.md" -publish = false - -[dependencies] -polkadot-cli = { path = "../../cli", default-features = false, features = [ "cli", "malus" ] } -polkadot-node-subsystem = { path = "../subsystem" } -polkadot-node-subsystem-util = { path = "../subsystem-util" } -polkadot-node-core-candidate-validation = { path = "../core/candidate-validation" } -parity-util-mem = { version = "*", default-features = false, features = ["jemalloc-global"] } -color-eyre = { version = "0.5.11", default-features = false } -assert_matches = "1.5" -structopt = "0.3.21" -async-trait = "0.1.50" diff --git a/node/malus/src/lib.rs b/node/malus/src/lib.rs deleted file mode 100644 index 1b8945a6c465..000000000000 --- a/node/malus/src/lib.rs +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2017-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A small set of wrapping types to cover most of our adversary test cases. -//! -//! This allows types with internal mutability to synchronize across -//! multiple subsystems and intercept or replace incoming and outgoing -//! messages on the overseer level. - -use polkadot_node_subsystem::*; -pub use polkadot_node_subsystem::{messages::AllMessages, FromOverseer}; -use std::future::Future; -use std::pin::Pin; - -/// Filter incoming and outgoing messages. -pub trait MsgFilter: Send + Sync + Clone + 'static { - /// The message type the original subsystm handles incoming. - type Message: Send + 'static; - - /// Filter messages that are to be received by - /// the subsystem. - fn filter_in(&self, msg: FromOverseer) -> Option> { - Some(msg) - } - - /// Modify outgoing messages. - fn filter_out(&self, msg: AllMessages) -> Option { - Some(msg) - } -} - -/// A sender with the outgoing messages filtered. -#[derive(Clone)] -pub struct FilteredSender { - inner: Sender, - message_filter: Fil, -} - -#[async_trait::async_trait] -impl SubsystemSender for FilteredSender -where - Sender: SubsystemSender, - Fil: MsgFilter, -{ - async fn send_message(&mut self, msg: AllMessages) { - if let Some(msg) = self.message_filter.filter_out(msg) { - self.inner.send_message(msg).await; - } - } - - async fn send_messages(&mut self, msgs: T) - where - T: IntoIterator + Send, - T::IntoIter: Send, - { - for msg in msgs { - self.send_message(msg).await; - } - } - - fn send_unbounded_message(&mut self, msg: AllMessages) { - if let Some(msg) = self.message_filter.filter_out(msg) { - self.inner.send_unbounded_message(msg); - } - } -} - -/// A subsystem context, that filters the outgoing messages. -pub struct FilteredContext { - inner: Context, - message_filter: Fil, - sender: FilteredSender<::Sender, Fil>, -} - -impl FilteredContext -where - Context: SubsystemContext, - Fil: MsgFilter::Message>, -{ - pub fn new(mut inner: Context, message_filter: Fil) -> Self { - let sender = FilteredSender::<::Sender, Fil> { - inner: inner.sender().clone(), - message_filter: message_filter.clone(), - }; - Self { - inner, - message_filter, - sender, - } - } -} - -#[async_trait::async_trait] -impl SubsystemContext for FilteredContext -where - Context: SubsystemContext, - Fil: MsgFilter::Message>, -{ - type Message = ::Message; - type Sender = FilteredSender<::Sender, Fil>; - - async fn try_recv(&mut self) -> Result>, ()> { - loop { - match self.inner.try_recv().await? { - None => return Ok(None), - Some(msg) => { - if let Some(msg) = self.message_filter.filter_in(msg) { - return Ok(Some(msg)); - } - } - } - } - } - - async fn recv(&mut self) -> SubsystemResult> { - loop { - let msg = self.inner.recv().await?; - if let Some(msg) = self.message_filter.filter_in(msg) { - return Ok(msg); - } - } - } - - fn spawn( - &mut self, - name: &'static str, - s: Pin + Send>>, - ) -> SubsystemResult<()> { - self.inner.spawn(name, s) - } - - fn spawn_blocking( - &mut self, - name: &'static str, - s: Pin + Send>>, - ) -> SubsystemResult<()> { - self.inner.spawn_blocking(name, s) - } - - fn sender(&mut self) -> &mut Self::Sender { - &mut self.sender - } -} - -/// A subsystem to which incoming and outgoing filters are applied. -pub struct FilteredSubsystem { - subsystem: Sub, - message_filter: Fil, -} - -impl FilteredSubsystem { - pub fn new(subsystem: Sub, message_filter: Fil) -> Self { - Self { - subsystem, - message_filter, - } - } -} - -impl Subsystem for FilteredSubsystem -where - Context: SubsystemContext + Sync + Send, - Sub: Subsystem>, - FilteredContext: SubsystemContext, - Fil: MsgFilter::Message>, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let ctx = FilteredContext::new(ctx, self.message_filter); - Subsystem::>::start(self.subsystem, ctx) - } -} diff --git a/node/malus/src/variant-a.rs b/node/malus/src/variant-a.rs deleted file mode 100644 index 1e9cb7928cb2..000000000000 --- a/node/malus/src/variant-a.rs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A malicious overseer. -//! -//! An example on how to use the `OverseerGen` pattern to -//! instantiate a modified subsystem implementation -//! for usage with simnet/gurke. - -#![allow(missing_docs)] - -use color_eyre::eyre; -use polkadot_cli::{ - create_default_subsystems, - service::{ - AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, HeaderBackend, Overseer, - OverseerGen, OverseerGenArgs, OverseerHandler, ParachainHost, ProvideRuntimeApi, - SpawnNamed, - }, - Cli, -}; - -// Import extra types relevant to the particular -// subsystem. -use polkadot_node_core_candidate_validation::{CandidateValidationSubsystem, Metrics}; -use polkadot_node_subsystem::messages::CandidateValidationMessage; -use polkadot_node_subsystem_util::metrics::Metrics as _; - -// Filter wrapping related types. -use malus::*; - -use std::sync::atomic::{AtomicUsize, Ordering}; -use std::sync::Arc; - -use structopt::StructOpt; - -/// Silly example, just drop every second outgoing message. -#[derive(Clone, Default, Debug)] -struct Skippy(Arc); - -impl MsgFilter for Skippy { - type Message = CandidateValidationMessage; - - fn filter_in(&self, msg: FromOverseer) -> Option> { - if self.0.fetch_add(1, Ordering::Relaxed) % 2 == 0 { - Some(msg) - } else { - None - } - } - fn filter_out(&self, msg: AllMessages) -> Option { - Some(msg) - } -} - -/// Generates an overseer that exposes bad behavior. -struct BehaveMaleficient; - -impl OverseerGen for BehaveMaleficient { - fn generate<'a, Spawner, RuntimeClient>( - &self, - args: OverseerGenArgs<'a, Spawner, RuntimeClient>, - ) -> Result<(Overseer>, OverseerHandler), Error> - where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, - { - let spawner = args.spawner.clone(); - let leaves = args.leaves.clone(); - let runtime_client = args.runtime_client.clone(); - let registry = args.registry.clone(); - let candidate_validation_config = args.candidate_validation_config.clone(); - // modify the subsystem(s) as needed: - let all_subsystems = create_default_subsystems(args)?.replace_candidate_validation( - // create the filtered subsystem - FilteredSubsystem::new( - CandidateValidationSubsystem::with_config( - candidate_validation_config, - Metrics::register(registry)?, - ), - Skippy::default(), - ), - ); - - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) - .map_err(|e| e.into()) - } -} - -fn main() -> eyre::Result<()> { - color_eyre::install()?; - let cli = Cli::from_args(); - assert_matches::assert_matches!(cli.subcommand, None); - polkadot_cli::run_node(cli, BehaveMaleficient)?; - Ok(()) -} diff --git a/node/metered-channel/Cargo.toml b/node/metered-channel/Cargo.toml deleted file mode 100644 index 19145ae5164e..000000000000 --- a/node/metered-channel/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "metered-channel" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Channels with attached Meters" - -[dependencies] -futures = "0.3.15" -futures-timer = "3.0.2" -derive_more = "0.99" - -[dev-dependencies] -assert_matches = "1.4.0" -futures = { version = "0.3.15", features = ["thread-pool"] } diff --git a/node/metered-channel/src/bounded.rs b/node/metered-channel/src/bounded.rs deleted file mode 100644 index 38aa6f15c65f..000000000000 --- a/node/metered-channel/src/bounded.rs +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2017-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Metered variant of bounded mpsc channels to be able to extract metrics. - -use futures::{channel::mpsc, task::Poll, task::Context, sink::SinkExt, stream::Stream}; - -use std::result; -use std::pin::Pin; - -use super::Meter; - - -/// Create a wrapped `mpsc::channel` pair of `MeteredSender` and `MeteredReceiver`. -pub fn channel(capacity: usize) -> (MeteredSender, MeteredReceiver) { - let (tx, rx) = mpsc::channel(capacity); - let shared_meter = Meter::default(); - let tx = MeteredSender { meter: shared_meter.clone(), inner: tx }; - let rx = MeteredReceiver { meter: shared_meter, inner: rx }; - (tx, rx) -} - -/// A receiver tracking the messages consumed by itself. -#[derive(Debug)] -pub struct MeteredReceiver { - // count currently contained messages - meter: Meter, - inner: mpsc::Receiver, -} - -impl std::ops::Deref for MeteredReceiver { - type Target = mpsc::Receiver; - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl std::ops::DerefMut for MeteredReceiver { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl Stream for MeteredReceiver { - type Item = T; - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match mpsc::Receiver::poll_next(Pin::new(&mut self.inner), cx) { - Poll::Ready(x) => { - self.meter.note_received(); - Poll::Ready(x) - } - other => other, - } - } - - /// Don't rely on the unreliable size hint. - fn size_hint(&self) -> (usize, Option) { - self.inner.size_hint() - } -} - -impl MeteredReceiver { - /// Get an updated accessor object for all metrics collected. - pub fn meter(&self) -> &Meter { - &self.meter - } - - /// Attempt to receive the next item. - pub fn try_next(&mut self) -> Result, mpsc::TryRecvError> { - match self.inner.try_next()? { - Some(x) => { - self.meter.note_received(); - Ok(Some(x)) - } - None => Ok(None), - } - } -} - -impl futures::stream::FusedStream for MeteredReceiver { - fn is_terminated(&self) -> bool { - self.inner.is_terminated() - } -} - - -/// The sender component, tracking the number of items -/// sent across it. -#[derive(Debug)] -pub struct MeteredSender { - meter: Meter, - inner: mpsc::Sender, -} - -impl Clone for MeteredSender { - fn clone(&self) -> Self { - Self { meter: self.meter.clone(), inner: self.inner.clone() } - } -} - -impl std::ops::Deref for MeteredSender { - type Target = mpsc::Sender; - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl std::ops::DerefMut for MeteredSender { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl MeteredSender { - /// Get an updated accessor object for all metrics collected. - pub fn meter(&self) -> &Meter { - &self.meter - } - - /// Send message, wait until capacity is available. - pub async fn send(&mut self, item: T) -> result::Result<(), mpsc::SendError> - where - Self: Unpin, - { - self.meter.note_sent(); - let fut = self.inner.send(item); - futures::pin_mut!(fut); - fut.await.map_err(|e| { - self.meter.retract_sent(); - e - }) - } - - /// Attempt to send message or fail immediately. - pub fn try_send(&mut self, msg: T) -> result::Result<(), mpsc::TrySendError> { - self.meter.note_sent(); - self.inner.try_send(msg).map_err(|e| { - self.meter.retract_sent(); - e - }) - } -} - -impl futures::sink::Sink for MeteredSender { - type Error = mpsc::SendError; - - fn start_send(mut self: Pin<&mut Self>, item: T) -> Result<(), Self::Error> { - Pin::new(&mut self.inner).start_send(item) - } - - fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - Pin::new(&mut self.inner).poll_ready(cx) - } - - fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match Pin::new(&mut self.inner).poll_close(cx) { - val @ Poll::Ready(_)=> { - val - } - other => other, - } - } - - fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match Pin::new(&mut self.inner).poll_flush(cx) { - val @ Poll::Ready(_)=> { - self.meter.note_sent(); - val - } - other => other, - } - } -} diff --git a/node/metered-channel/src/lib.rs b/node/metered-channel/src/lib.rs deleted file mode 100644 index 917c04264df1..000000000000 --- a/node/metered-channel/src/lib.rs +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2017-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Metered variant of mpsc channels to be able to extract metrics. - -use std::sync::atomic::{AtomicUsize, Ordering}; -use std::sync::Arc; - -use derive_more::{Add, Display}; - -mod bounded; -mod unbounded; - -pub use self::bounded::*; -pub use self::unbounded::*; - -/// A peek into the inner state of a meter. -#[derive(Debug, Clone, Default)] -pub struct Meter { - // Number of sends on this channel. - sent: Arc, - // Number of receives on this channel. - received: Arc, -} - -/// A readout of sizes from the meter. Note that it is possible, due to asynchrony, for received -/// to be slightly higher than sent. -#[derive(Debug, Add, Display, Clone, Default, PartialEq)] -#[display(fmt = "(sent={} received={})", sent, received)] -pub struct Readout { - /// The amount of messages sent on the channel, in aggregate. - pub sent: usize, - /// The amount of messages received on the channel, in aggregate. - pub received: usize, -} - -impl Meter { - /// Count the number of items queued up inside the channel. - pub fn read(&self) -> Readout { - // when obtaining we don't care much about off by one - // accuracy - Readout { - sent: self.sent.load(Ordering::Relaxed), - received: self.received.load(Ordering::Relaxed), - } - } - - fn note_sent(&self) { - self.sent.fetch_add(1, Ordering::Relaxed); - } - - fn retract_sent(&self) { - self.sent.fetch_sub(1, Ordering::Relaxed); - } - - fn note_received(&self) { - self.received.fetch_add(1, Ordering::Relaxed); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use futures::executor::block_on; - use futures::StreamExt; - - #[derive(Clone, Copy, Debug, Default)] - struct Msg { - val: u8, - } - - #[test] - fn try_send_try_next() { - block_on(async move { - let (mut tx, mut rx) = channel::(5); - let msg = Msg::default(); - assert_eq!(rx.meter().read(), Readout { sent: 0, received: 0 }); - tx.try_send(msg).unwrap(); - assert_eq!(tx.meter().read(), Readout { sent: 1, received: 0 }); - tx.try_send(msg).unwrap(); - tx.try_send(msg).unwrap(); - tx.try_send(msg).unwrap(); - assert_eq!(tx.meter().read(), Readout { sent: 4, received: 0 }); - rx.try_next().unwrap(); - assert_eq!(rx.meter().read(), Readout { sent: 4, received: 1 }); - rx.try_next().unwrap(); - rx.try_next().unwrap(); - assert_eq!(tx.meter().read(), Readout { sent: 4, received: 3 }); - rx.try_next().unwrap(); - assert_eq!(rx.meter().read(), Readout { sent: 4, received: 4 }); - assert!(rx.try_next().is_err()); - }); - } - - #[test] - fn with_tasks() { - let (ready, go) = futures::channel::oneshot::channel(); - - let (mut tx, mut rx) = channel::(5); - block_on(async move { - futures::join!( - async move { - let msg = Msg::default(); - assert_eq!(tx.meter().read(), Readout { sent: 0, received: 0 }); - tx.try_send(msg).unwrap(); - assert_eq!(tx.meter().read(), Readout { sent: 1, received: 0 }); - tx.try_send(msg).unwrap(); - tx.try_send(msg).unwrap(); - tx.try_send(msg).unwrap(); - ready.send(()).expect("Helper oneshot channel must work. qed"); - }, - async move { - go.await.expect("Helper oneshot channel must work. qed"); - assert_eq!(rx.meter().read(), Readout { sent: 4, received: 0 }); - rx.try_next().unwrap(); - assert_eq!(rx.meter().read(), Readout { sent: 4, received: 1 }); - rx.try_next().unwrap(); - rx.try_next().unwrap(); - assert_eq!(rx.meter().read(), Readout { sent: 4, received: 3 }); - rx.try_next().unwrap(); - assert_eq!(dbg!(rx.meter().read()), Readout { sent: 4, received: 4 }); - } - ) - }); - } - - use std::time::Duration; - use futures_timer::Delay; - - #[test] - fn stream_and_sink() { - let (mut tx, mut rx) = channel::(5); - - block_on(async move { - futures::join!( - async move { - for i in 0..15 { - println!("Sent #{} with a backlog of {} items", i + 1, tx.meter().read()); - let msg = Msg { val: i as u8 + 1u8 }; - tx.send(msg).await.unwrap(); - assert!(tx.meter().read().sent > 0usize); - Delay::new(Duration::from_millis(20)).await; - } - () - }, - async move { - while let Some(msg) = rx.next().await { - println!("rx'd one {} with {} backlogged", msg.val, rx.meter().read()); - Delay::new(Duration::from_millis(29)).await; - } - } - ) - }); - } - - #[test] - fn failed_send_does_not_inc_sent() { - let (mut bounded, _) = channel::(5); - let (unbounded, _) = unbounded::(); - - block_on(async move { - assert!(bounded.send(Msg::default()).await.is_err()); - assert!(bounded.try_send(Msg::default()).is_err()); - assert_eq!(bounded.meter().read(), Readout { sent: 0, received: 0 }); - - assert!(unbounded.unbounded_send(Msg::default()).is_err()); - assert_eq!(unbounded.meter().read(), Readout { sent: 0, received: 0 }); - }); - } -} diff --git a/node/metered-channel/src/unbounded.rs b/node/metered-channel/src/unbounded.rs deleted file mode 100644 index bf1400681a65..000000000000 --- a/node/metered-channel/src/unbounded.rs +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2017-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Metered variant of unbounded mpsc channels to be able to extract metrics. - -use futures::{channel::mpsc, task::Poll, task::Context, stream::Stream}; - -use std::result; -use std::pin::Pin; - -use super::Meter; - - -/// Create a wrapped `mpsc::channel` pair of `MeteredSender` and `MeteredReceiver`. -pub fn unbounded() -> (UnboundedMeteredSender, UnboundedMeteredReceiver) { - let (tx, rx) = mpsc::unbounded(); - let shared_meter = Meter::default(); - let tx = UnboundedMeteredSender { meter: shared_meter.clone(), inner: tx }; - let rx = UnboundedMeteredReceiver { meter: shared_meter, inner: rx }; - (tx, rx) -} - -/// A receiver tracking the messages consumed by itself. -#[derive(Debug)] -pub struct UnboundedMeteredReceiver { - // count currently contained messages - meter: Meter, - inner: mpsc::UnboundedReceiver, -} - -impl std::ops::Deref for UnboundedMeteredReceiver { - type Target = mpsc::UnboundedReceiver; - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl std::ops::DerefMut for UnboundedMeteredReceiver { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl Stream for UnboundedMeteredReceiver { - type Item = T; - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match mpsc::UnboundedReceiver::poll_next(Pin::new(&mut self.inner), cx) { - Poll::Ready(x) => { - self.meter.note_received(); - Poll::Ready(x) - } - other => other, - } - } - - /// Don't rely on the unreliable size hint. - fn size_hint(&self) -> (usize, Option) { - self.inner.size_hint() - } -} - -impl UnboundedMeteredReceiver { - /// Get an updated accessor object for all metrics collected. - pub fn meter(&self) -> &Meter { - &self.meter - } - - /// Attempt to receive the next item. - pub fn try_next(&mut self) -> Result, mpsc::TryRecvError> { - match self.inner.try_next()? { - Some(x) => { - self.meter.note_received(); - Ok(Some(x)) - } - None => Ok(None), - } - } -} - -impl futures::stream::FusedStream for UnboundedMeteredReceiver { - fn is_terminated(&self) -> bool { - self.inner.is_terminated() - } -} - - -/// The sender component, tracking the number of items -/// sent across it. -#[derive(Debug)] -pub struct UnboundedMeteredSender { - meter: Meter, - inner: mpsc::UnboundedSender, -} - -impl Clone for UnboundedMeteredSender { - fn clone(&self) -> Self { - Self { meter: self.meter.clone(), inner: self.inner.clone() } - } -} - -impl std::ops::Deref for UnboundedMeteredSender { - type Target = mpsc::UnboundedSender; - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl std::ops::DerefMut for UnboundedMeteredSender { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl UnboundedMeteredSender { - /// Get an updated accessor object for all metrics collected. - pub fn meter(&self) -> &Meter { - &self.meter - } - - /// Attempt to send message or fail immediately. - pub fn unbounded_send(&self, msg: T) -> result::Result<(), mpsc::TrySendError> { - self.meter.note_sent(); - self.inner.unbounded_send(msg).map_err(|e| { - self.meter.retract_sent(); - e - }) - } -} diff --git a/node/network/README.md b/node/network/README.md deleted file mode 100644 index e035485b85ec..000000000000 --- a/node/network/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder holds all networking subsystem implementations, each with their own crate. diff --git a/node/network/approval-distribution/Cargo.toml b/node/network/approval-distribution/Cargo.toml deleted file mode 100644 index fc730de427b4..000000000000 --- a/node/network/approval-distribution/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "polkadot-approval-distribution" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-network-protocol = { path = "../protocol" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-primitives = { path = "../../../primitives" } - -futures = "0.3.15" -tracing = "0.1.26" - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } - -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } - -assert_matches = "1.4.0" -schnorrkel = { version = "0.9.1", default-features = false } -rand_core = "0.5.1" # should match schnorrkel -env_logger = "0.8.4" -log = "0.4.13" diff --git a/node/network/approval-distribution/src/lib.rs b/node/network/approval-distribution/src/lib.rs deleted file mode 100644 index 160d45957b0e..000000000000 --- a/node/network/approval-distribution/src/lib.rs +++ /dev/null @@ -1,1382 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! [`ApprovalDistributionSubsystem`] implementation. -//! -//! https://w3f.github.io/parachain-implementers-guide/node/approval/approval-distribution.html - -#![warn(missing_docs)] - -use std::collections::{BTreeMap, HashMap, HashSet, hash_map}; -use futures::{channel::oneshot, FutureExt as _}; -use polkadot_primitives::v1::{ - Hash, BlockNumber, ValidatorIndex, ValidatorSignature, CandidateIndex, -}; -use polkadot_node_primitives::{ - approval::{AssignmentCert, BlockApprovalMeta, IndirectSignedApprovalVote, IndirectAssignmentCert}, -}; -use polkadot_node_subsystem::{ - messages::{ - AllMessages, ApprovalDistributionMessage, ApprovalVotingMessage, NetworkBridgeMessage, - AssignmentCheckResult, ApprovalCheckResult, NetworkBridgeEvent, - }, - ActiveLeavesUpdate, FromOverseer, OverseerSignal, SpawnedSubsystem, Subsystem, SubsystemContext, -}; -use polkadot_node_subsystem_util::{ - metrics::{self, prometheus}, - self as util, MIN_GOSSIP_PEERS, -}; -use polkadot_node_network_protocol::{ - PeerId, View, v1 as protocol_v1, UnifiedReputationChange as Rep, -}; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::approval-distribution"; - -const COST_UNEXPECTED_MESSAGE: Rep = Rep::CostMinor("Peer sent an out-of-view assignment or approval"); -const COST_DUPLICATE_MESSAGE: Rep = Rep::CostMinorRepeated("Peer sent identical messages"); -const COST_ASSIGNMENT_TOO_FAR_IN_THE_FUTURE: Rep = Rep::CostMinor("The vote was valid but too far in the future"); -const COST_INVALID_MESSAGE: Rep = Rep::CostMajor("The vote was bad"); - -const BENEFIT_VALID_MESSAGE: Rep = Rep::BenefitMinor("Peer sent a valid message"); -const BENEFIT_VALID_MESSAGE_FIRST: Rep = Rep::BenefitMinorFirst("Valid message with new information"); - -/// The Approval Distribution subsystem. -pub struct ApprovalDistribution { - metrics: Metrics, -} - -/// The [`State`] struct is responsible for tracking the overall state of the subsystem. -/// -/// It tracks metadata about our view of the unfinalized chain, -/// which assignments and approvals we have seen, and our peers' views. -#[derive(Default)] -struct State { - /// These two fields are used in conjunction to construct a view over the unfinalized chain. - blocks_by_number: BTreeMap>, - blocks: HashMap, - - /// Our view updates to our peers can race with `NewBlocks` updates. We store messages received - /// against the directly mentioned blocks in our view in this map until `NewBlocks` is received. - /// - /// As long as the parent is already in the `blocks` map and `NewBlocks` messages aren't delayed - /// by more than a block length, this strategy will work well for mitigating the race. This is - /// also a race that occurs typically on local networks. - pending_known: HashMap>, - - /// Peer view data is partially stored here, and partially inline within the [`BlockEntry`]s - peer_views: HashMap, - - /// Track all our neighbors in the current gossip topology. - /// We're not necessarily connected to all of them. - gossip_peers: HashSet, -} - -#[derive(Debug, Clone, Hash, PartialEq, Eq)] -enum MessageFingerprint { - Assignment(Hash, CandidateIndex, ValidatorIndex), - Approval(Hash, CandidateIndex, ValidatorIndex), -} - -#[derive(Debug, Clone, Default)] -struct Knowledge { - known_messages: HashSet, -} - -impl Knowledge { - fn contains(&self, fingerprint: &MessageFingerprint) -> bool { - self.known_messages.contains(fingerprint) - } - - fn insert(&mut self, fingerprint: MessageFingerprint) -> bool { - self.known_messages.insert(fingerprint) - } -} - -#[derive(Debug, Clone, Default)] -struct PeerKnowledge { - /// The knowledge we've sent to the peer. - sent: Knowledge, - /// The knowledge we've received from the peer. - received: Knowledge, -} - -impl PeerKnowledge { - fn contains(&self, fingerprint: &MessageFingerprint) -> bool { - self.sent.contains(fingerprint) || self.received.contains(fingerprint) - } -} - -/// Information about blocks in our current view as well as whether peers know of them. -struct BlockEntry { - /// Peers who we know are aware of this block and thus, the candidates within it. - /// This maps to their knowledge of messages. - known_by: HashMap, - /// The number of the block. - number: BlockNumber, - /// The parent hash of the block. - parent_hash: Hash, - /// Our knowledge of messages. - knowledge: Knowledge, - /// A votes entry for each candidate indexed by [`CandidateIndex`]. - candidates: Vec, -} - -#[derive(Debug)] -enum ApprovalState { - Assigned(AssignmentCert), - Approved(AssignmentCert, ValidatorSignature), -} - -#[derive(Debug, Clone, Copy)] -enum LocalSource { - Yes, - No, -} - -/// Information about candidates in the context of a particular block they are included in. -/// In other words, multiple `CandidateEntry`s may exist for the same candidate, -/// if it is included by multiple blocks - this is likely the case when there are forks. -#[derive(Debug, Default)] -struct CandidateEntry { - approvals: HashMap, -} - -#[derive(Debug, Clone)] -enum MessageSource { - Peer(PeerId), - Local, -} - -impl MessageSource { - fn peer_id(&self) -> Option { - match self { - Self::Peer(id) => Some(id.clone()), - Self::Local => None, - } - } - - fn as_local_source(&self) -> LocalSource { - match self { - Self::Local => LocalSource::Yes, - _ => LocalSource::No, - } - } -} - -enum PendingMessage { - Assignment(IndirectAssignmentCert, CandidateIndex), - Approval(IndirectSignedApprovalVote), -} - -impl State { - async fn handle_network_msg( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - event: NetworkBridgeEvent, - ) { - match event { - NetworkBridgeEvent::PeerConnected(peer_id, role, _) => { - // insert a blank view if none already present - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?role, - "Peer connected", - ); - self.peer_views.entry(peer_id).or_default(); - } - NetworkBridgeEvent::PeerDisconnected(peer_id) => { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - "Peer disconnected", - ); - self.peer_views.remove(&peer_id); - self.blocks.iter_mut().for_each(|(_hash, entry)| { - entry.known_by.remove(&peer_id); - }) - } - NetworkBridgeEvent::NewGossipTopology(peers) => { - let newly_added: Vec = peers.difference(&self.gossip_peers).cloned().collect(); - self.gossip_peers = peers; - for peer_id in newly_added { - if let Some(view) = self.peer_views.remove(&peer_id) { - self.handle_peer_view_change(ctx, metrics, peer_id, view).await; - } - } - } - NetworkBridgeEvent::PeerViewChange(peer_id, view) => { - self.handle_peer_view_change(ctx, metrics, peer_id, view).await; - } - NetworkBridgeEvent::OurViewChange(view) => { - tracing::trace!( - target: LOG_TARGET, - ?view, - "Own view change", - ); - for head in view.iter() { - if !self.blocks.contains_key(head) { - self.pending_known.entry(*head).or_default(); - } - } - - self.pending_known.retain(|h, _| { - let live = view.contains(h); - if !live { - tracing::trace!( - target: LOG_TARGET, - block_hash = ?h, - "Cleaning up stale pending messages", - ); - } - live - }); - } - NetworkBridgeEvent::PeerMessage(peer_id, msg) => { - self.process_incoming_peer_message(ctx, metrics, peer_id, msg).await; - } - } - } - - async fn handle_new_blocks( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - metas: Vec, - ) { - let mut new_hashes = HashSet::new(); - for meta in &metas { - match self.blocks.entry(meta.hash.clone()) { - hash_map::Entry::Vacant(entry) => { - let candidates_count = meta.candidates.len(); - let mut candidates = Vec::with_capacity(candidates_count); - candidates.resize_with(candidates_count, Default::default); - - entry.insert(BlockEntry { - known_by: HashMap::new(), - number: meta.number, - parent_hash: meta.parent_hash.clone(), - knowledge: Knowledge::default(), - candidates, - }); - new_hashes.insert(meta.hash.clone()); - - // In case there are duplicates, we should only set this if the entry - // was vacant. - self.blocks_by_number.entry(meta.number).or_default().push(meta.hash); - } - _ => continue, - } - } - - tracing::debug!( - target: LOG_TARGET, - "Got new blocks {:?}", - metas.iter().map(|m| (m.hash, m.number)).collect::>(), - ); - - { - let pending_now_known = self.pending_known.keys() - .filter(|k| self.blocks.contains_key(k)) - .copied() - .collect::>(); - - let to_import = pending_now_known.into_iter() - .inspect(|h| tracing::trace!( - target: LOG_TARGET, - block_hash = ?h, - "Extracting pending messages for new block" - )) - .filter_map(|k| self.pending_known.remove(&k)) - .flatten() - .collect::>(); - - if !to_import.is_empty() { - tracing::debug!( - target: LOG_TARGET, - num = to_import.len(), - "Processing pending assignment/approvals", - ); - - let _timer = metrics.time_import_pending_now_known(); - - for (peer_id, message) in to_import { - match message { - PendingMessage::Assignment(assignment, claimed_index) => { - self.import_and_circulate_assignment( - ctx, - metrics, - MessageSource::Peer(peer_id), - assignment, - claimed_index, - ).await; - } - PendingMessage::Approval(approval_vote) => { - self.import_and_circulate_approval( - ctx, - metrics, - MessageSource::Peer(peer_id), - approval_vote, - ).await; - } - } - } - } - } - - for (peer_id, view) in self.peer_views.iter() { - let intersection = view.iter().filter(|h| new_hashes.contains(h)); - let view_intersection = View::new( - intersection.cloned(), - view.finalized_number, - ); - Self::unify_with_peer( - ctx, - &self.gossip_peers, - metrics, - &mut self.blocks, - peer_id.clone(), - view_intersection, - ).await; - } - } - - async fn process_incoming_peer_message( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - peer_id: PeerId, - msg: protocol_v1::ApprovalDistributionMessage, - ) { - match msg { - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) => { - tracing::trace!( - target: LOG_TARGET, - peer_id = %peer_id, - num = assignments.len(), - "Processing assignments from a peer", - ); - for (assignment, claimed_index) in assignments.into_iter() { - if let Some(pending) = self.pending_known.get_mut(&assignment.block_hash) { - let fingerprint = MessageFingerprint::Assignment( - assignment.block_hash, - claimed_index, - assignment.validator, - ); - - tracing::trace!( - target: LOG_TARGET, - %peer_id, - ?fingerprint, - "Pending assignment", - ); - - pending.push(( - peer_id.clone(), - PendingMessage::Assignment(assignment, claimed_index), - )); - - continue; - } - - self.import_and_circulate_assignment( - ctx, - metrics, - MessageSource::Peer(peer_id.clone()), - assignment, - claimed_index, - ).await; - } - } - protocol_v1::ApprovalDistributionMessage::Approvals(approvals) => { - tracing::trace!( - target: LOG_TARGET, - peer_id = %peer_id, - num = approvals.len(), - "Processing approvals from a peer", - ); - for approval_vote in approvals.into_iter() { - if let Some(pending) = self.pending_known.get_mut(&approval_vote.block_hash) { - let fingerprint = MessageFingerprint::Approval( - approval_vote.block_hash, - approval_vote.candidate_index, - approval_vote.validator, - ); - - tracing::trace!( - target: LOG_TARGET, - %peer_id, - ?fingerprint, - "Pending approval", - ); - - pending.push(( - peer_id.clone(), - PendingMessage::Approval(approval_vote), - )); - - continue; - } - - self.import_and_circulate_approval( - ctx, - metrics, - MessageSource::Peer(peer_id.clone()), - approval_vote, - ).await; - } - } - } - } - - async fn handle_peer_view_change( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - peer_id: PeerId, - view: View, - ) { - tracing::trace!( - target: LOG_TARGET, - ?view, - "Peer view change", - ); - let finalized_number = view.finalized_number; - let old_view = self.peer_views.insert(peer_id.clone(), view.clone()); - let old_finalized_number = old_view.map(|v| v.finalized_number).unwrap_or(0); - - // we want to prune every block known_by peer up to (including) view.finalized_number - let blocks = &mut self.blocks; - // the `BTreeMap::range` is constrained by stored keys - // so the loop won't take ages if the new finalized_number skyrockets - // but we need to make sure the range is not empty, otherwise it will panic - // it shouldn't be, we make sure of this in the network bridge - let range = old_finalized_number..=finalized_number; - if !range.is_empty() && !blocks.is_empty() { - self.blocks_by_number - .range(range) - .flat_map(|(_number, hashes)| hashes) - .for_each(|hash| { - if let Some(entry) = blocks.get_mut(hash) { - entry.known_by.remove(&peer_id); - } - }); - } - - Self::unify_with_peer( - ctx, - &self.gossip_peers, - metrics, - &mut self.blocks, - peer_id.clone(), - view, - ).await; - } - - fn handle_block_finalized( - &mut self, - finalized_number: BlockNumber, - ) { - // we want to prune every block up to (including) finalized_number - // why +1 here? - // split_off returns everything after the given key, including the key - let split_point = finalized_number.saturating_add(1); - let mut old_blocks = self.blocks_by_number.split_off(&split_point); - // after split_off old_blocks actually contains new blocks, we need to swap - std::mem::swap(&mut self.blocks_by_number, &mut old_blocks); - - // now that we pruned `self.blocks_by_number`, let's clean up `self.blocks` too - old_blocks.values() - .flatten() - .for_each(|h| { - self.blocks.remove(h); - }); - } - - async fn import_and_circulate_assignment( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - source: MessageSource, - assignment: IndirectAssignmentCert, - claimed_candidate_index: CandidateIndex, - ) { - let block_hash = assignment.block_hash.clone(); - let validator_index = assignment.validator; - - let entry = match self.blocks.get_mut(&block_hash) { - Some(entry) => entry, - None => { - if let Some(peer_id) = source.peer_id() { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?block_hash, - ?validator_index, - "Unexpected assignment", - ); - modify_reputation(ctx, peer_id, COST_UNEXPECTED_MESSAGE).await; - } - return; - } - }; - - // compute a fingerprint of the assignment - let fingerprint = MessageFingerprint::Assignment( - block_hash, - claimed_candidate_index, - validator_index, - ); - - if let Some(peer_id) = source.peer_id() { - // check if our knowledge of the peer already contains this assignment - match entry.known_by.entry(peer_id.clone()) { - hash_map::Entry::Occupied(mut peer_knowledge) => { - let peer_knowledge = peer_knowledge.get_mut(); - if peer_knowledge.contains(&fingerprint) { - if peer_knowledge.received.contains(&fingerprint) { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Duplicate assignment", - ); - modify_reputation(ctx, peer_id, COST_DUPLICATE_MESSAGE).await; - } - peer_knowledge.received.insert(fingerprint); - return; - } - } - hash_map::Entry::Vacant(_) => { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Assignment from a peer is out of view", - ); - modify_reputation(ctx, peer_id.clone(), COST_UNEXPECTED_MESSAGE).await; - } - } - - // if the assignment is known to be valid, reward the peer - if entry.knowledge.known_messages.contains(&fingerprint) { - modify_reputation(ctx, peer_id.clone(), BENEFIT_VALID_MESSAGE).await; - if let Some(peer_knowledge) = entry.known_by.get_mut(&peer_id) { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Known assignment", - ); - peer_knowledge.received.insert(fingerprint.clone()); - } - return; - } - - let (tx, rx) = oneshot::channel(); - - ctx.send_message(AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportAssignment( - assignment.clone(), - claimed_candidate_index, - tx, - ))).await; - - let timer = metrics.time_awaiting_approval_voting(); - let result = match rx.await { - Ok(result) => result, - Err(_) => { - tracing::debug!( - target: LOG_TARGET, - "The approval voting subsystem is down", - ); - return; - } - }; - drop(timer); - - tracing::trace!( - target: LOG_TARGET, - ?source, - ?fingerprint, - ?result, - "Checked assignment", - ); - match result { - AssignmentCheckResult::Accepted => { - modify_reputation(ctx, peer_id.clone(), BENEFIT_VALID_MESSAGE_FIRST).await; - entry.knowledge.known_messages.insert(fingerprint.clone()); - if let Some(peer_knowledge) = entry.known_by.get_mut(&peer_id) { - peer_knowledge.received.insert(fingerprint.clone()); - } - } - AssignmentCheckResult::AcceptedDuplicate => { - // "duplicate" assignments aren't necessarily equal. - // There is more than one way each validator can be assigned to each core. - // cf. https://github.com/paritytech/polkadot/pull/2160#discussion_r557628699 - if let Some(peer_knowledge) = entry.known_by.get_mut(&peer_id) { - peer_knowledge.received.insert(fingerprint); - } - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - "Got an `AcceptedDuplicate` assignment", - ); - return; - } - AssignmentCheckResult::TooFarInFuture => { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - "Got an assignment too far in the future", - ); - modify_reputation(ctx, peer_id, COST_ASSIGNMENT_TOO_FAR_IN_THE_FUTURE).await; - return; - } - AssignmentCheckResult::Bad(error) => { - tracing::info!( - target: LOG_TARGET, - ?peer_id, - %error, - "Got a bad assignment from peer", - ); - modify_reputation(ctx, peer_id, COST_INVALID_MESSAGE).await; - return; - } - } - } else { - if !entry.knowledge.known_messages.insert(fingerprint.clone()) { - // if we already imported an assignment, there is no need to distribute it again - tracing::warn!( - target: LOG_TARGET, - ?fingerprint, - "Importing locally an already known assignment", - ); - return; - } else { - tracing::debug!( - target: LOG_TARGET, - ?fingerprint, - "Importing locally a new assignment", - ); - } - } - - let local_source = source.as_local_source(); - - // Invariant: none of the peers except for the `source` know about the assignment. - metrics.on_assignment_imported(); - - match entry.candidates.get_mut(claimed_candidate_index as usize) { - Some(candidate_entry) => { - // set the approval state for validator_index to Assigned - // unless the approval state is set already - candidate_entry.approvals - .entry(validator_index) - .or_insert_with(|| (ApprovalState::Assigned(assignment.cert.clone()), local_source)); - } - None => { - tracing::warn!( - target: LOG_TARGET, - hash = ?block_hash, - ?claimed_candidate_index, - "Expected a candidate entry on import_and_circulate_assignment", - ); - } - } - - // Dispatch a ApprovalDistributionV1Message::Assignment(assignment, candidate_index) - // to all peers in the BlockEntry's known_by set who know about the block, - // excluding the peer in the source, if source has kind MessageSource::Peer. - let maybe_peer_id = source.peer_id(); - let peers = entry - .known_by - .keys() - .cloned() - .filter(|key| maybe_peer_id.as_ref().map_or(true, |id| id != key)) - .collect::>(); - - let assignments = vec![(assignment, claimed_candidate_index)]; - let gossip_peers = &self.gossip_peers; - let peers = util::choose_random_subset( - |e| gossip_peers.contains(e), - peers, - MIN_GOSSIP_PEERS, - ); - - // Add the fingerprint of the assignment to the knowledge of each peer. - for peer in peers.iter() { - // we already filtered peers above, so this should always be Some - if let Some(peer_knowledge) = entry.known_by.get_mut(peer) { - peer_knowledge.sent.insert(fingerprint.clone()); - } - } - - if !peers.is_empty() { - tracing::trace!( - target: LOG_TARGET, - ?block_hash, - ?claimed_candidate_index, - ?local_source, - num_peers = peers.len(), - "Sending an assignment to peers", - ); - - ctx.send_message(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ), - ).into()).await; - } - } - - async fn import_and_circulate_approval( - &mut self, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, - source: MessageSource, - vote: IndirectSignedApprovalVote, - ) { - let block_hash = vote.block_hash.clone(); - let validator_index = vote.validator; - let candidate_index = vote.candidate_index; - - let entry = match self.blocks.get_mut(&block_hash) { - Some(entry) if entry.candidates.get(candidate_index as usize).is_some() => entry, - _ => { - if let Some(peer_id) = source.peer_id() { - modify_reputation(ctx, peer_id, COST_UNEXPECTED_MESSAGE).await; - } - return; - } - }; - - // compute a fingerprint of the approval - let fingerprint = MessageFingerprint::Approval( - block_hash.clone(), - candidate_index, - validator_index, - ); - - if let Some(peer_id) = source.peer_id() { - let assignment_fingerprint = MessageFingerprint::Assignment( - block_hash.clone(), - candidate_index, - validator_index, - ); - - if !entry.knowledge.known_messages.contains(&assignment_fingerprint) { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Unknown approval assignment", - ); - modify_reputation(ctx, peer_id, COST_UNEXPECTED_MESSAGE).await; - return; - } - - // check if our knowledge of the peer already contains this approval - match entry.known_by.entry(peer_id.clone()) { - hash_map::Entry::Occupied(mut knowledge) => { - let peer_knowledge = knowledge.get_mut(); - if peer_knowledge.contains(&fingerprint) { - if peer_knowledge.received.contains(&fingerprint) { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Duplicate approval", - ); - - modify_reputation(ctx, peer_id, COST_DUPLICATE_MESSAGE).await; - } - peer_knowledge.received.insert(fingerprint); - return; - } - } - hash_map::Entry::Vacant(_) => { - tracing::debug!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Approval from a peer is out of view", - ); - modify_reputation(ctx, peer_id.clone(), COST_UNEXPECTED_MESSAGE).await; - } - } - - // if the approval is known to be valid, reward the peer - if entry.knowledge.contains(&fingerprint) { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - "Known approval", - ); - modify_reputation(ctx, peer_id.clone(), BENEFIT_VALID_MESSAGE).await; - if let Some(peer_knowledge) = entry.known_by.get_mut(&peer_id) { - peer_knowledge.received.insert(fingerprint.clone()); - } - return; - } - - let (tx, rx) = oneshot::channel(); - - ctx.send_message(AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportApproval( - vote.clone(), - tx, - ))).await; - - let timer = metrics.time_awaiting_approval_voting(); - let result = match rx.await { - Ok(result) => result, - Err(_) => { - tracing::debug!( - target: LOG_TARGET, - "The approval voting subsystem is down", - ); - return; - } - }; - drop(timer); - - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?fingerprint, - ?result, - "Checked approval", - ); - match result { - ApprovalCheckResult::Accepted => { - modify_reputation(ctx, peer_id.clone(), BENEFIT_VALID_MESSAGE_FIRST).await; - - entry.knowledge.insert(fingerprint.clone()); - if let Some(peer_knowledge) = entry.known_by.get_mut(&peer_id) { - peer_knowledge.received.insert(fingerprint.clone()); - } - } - ApprovalCheckResult::Bad(error) => { - modify_reputation(ctx, peer_id, COST_INVALID_MESSAGE).await; - tracing::info!( - target: LOG_TARGET, - ?peer_id, - %error, - "Got a bad approval from peer", - ); - return; - } - } - } else { - if !entry.knowledge.insert(fingerprint.clone()) { - // if we already imported an approval, there is no need to distribute it again - tracing::warn!( - target: LOG_TARGET, - ?fingerprint, - "Importing locally an already known approval", - ); - return; - } else { - tracing::debug!( - target: LOG_TARGET, - ?fingerprint, - "Importing locally a new approval", - ); - } - } - - let local_source = source.as_local_source(); - - // Invariant: none of the peers except for the `source` know about the approval. - metrics.on_approval_imported(); - - match entry.candidates.get_mut(candidate_index as usize) { - Some(candidate_entry) => { - // set the approval state for validator_index to Approved - // it should be in assigned state already - match candidate_entry.approvals.remove(&validator_index) { - Some((ApprovalState::Assigned(cert), _local)) => { - candidate_entry.approvals.insert( - validator_index, - (ApprovalState::Approved(cert, vote.signature.clone()), local_source), - ); - } - Some((ApprovalState::Approved(..), _)) => { - unreachable!( - "we only insert it after the fingerprint, checked the fingerprint above; qed" - ); - } - None => { - // this would indicate a bug in approval-voting - tracing::warn!( - target: LOG_TARGET, - hash = ?block_hash, - ?candidate_index, - ?validator_index, - "Importing an approval we don't have an assignment for", - ); - } - } - } - None => { - tracing::warn!( - target: LOG_TARGET, - hash = ?block_hash, - ?candidate_index, - ?validator_index, - "Expected a candidate entry on import_and_circulate_approval", - ); - } - } - - // Dispatch a ApprovalDistributionV1Message::Approval(vote) - // to all peers in the BlockEntry's known_by set who know about the block, - // excluding the peer in the source, if source has kind MessageSource::Peer. - let maybe_peer_id = source.peer_id(); - let peers = entry - .known_by - .keys() - .cloned() - .filter(|key| maybe_peer_id.as_ref().map_or(true, |id| id != key)) - .collect::>(); - - let gossip_peers = &self.gossip_peers; - let peers = util::choose_random_subset( - |e| gossip_peers.contains(e), - peers, - MIN_GOSSIP_PEERS, - ); - - // Add the fingerprint of the assignment to the knowledge of each peer. - for peer in peers.iter() { - // we already filtered peers above, so this should always be Some - if let Some(entry) = entry.known_by.get_mut(peer) { - entry.sent.insert(fingerprint.clone()); - } - } - - let approvals = vec![vote]; - if !peers.is_empty() { - tracing::trace!( - target: LOG_TARGET, - ?block_hash, - ?candidate_index, - ?local_source, - num_peers = peers.len(), - "Sending an approval to peers", - ); - - ctx.send_message(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Approvals(approvals) - ), - ).into()).await; - } - } - - async fn unify_with_peer( - ctx: &mut impl SubsystemContext, - gossip_peers: &HashSet, - metrics: &Metrics, - entries: &mut HashMap, - peer_id: PeerId, - view: View, - ) { - let is_gossip_peer = gossip_peers.contains(&peer_id); - let lucky = is_gossip_peer || util::gen_ratio( - util::MIN_GOSSIP_PEERS.saturating_sub(gossip_peers.len()), - util::MIN_GOSSIP_PEERS, - ); - - if !lucky { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - "Unlucky peer", - ); - return; - } - - metrics.on_unify_with_peer(); - let _timer = metrics.time_unify_with_peer(); - let mut to_send: Vec = Vec::new(); - - let view_finalized_number = view.finalized_number; - for head in view.into_iter() { - let mut block = head; - let interesting_blocks = std::iter::from_fn(|| { - // step 2. - let entry = match entries.get_mut(&block) { - Some(entry) if entry.number > view_finalized_number => entry, - _ => return None, - }; - let interesting_block = match entry.known_by.entry(peer_id.clone()) { - // step 3. - hash_map::Entry::Occupied(_) => return None, - // step 4. - hash_map::Entry::Vacant(vacant) => { - let knowledge = PeerKnowledge { - sent: entry.knowledge.clone(), - received: Default::default(), - }; - vacant.insert(knowledge); - block - } - }; - // step 5. - block = entry.parent_hash.clone(); - Some(interesting_block) - }); - to_send.extend(interesting_blocks); - } - // step 6. - // send all assignments and approvals for all candidates in those blocks to the peer - Self::send_gossip_messages_to_peer( - entries, - ctx, - peer_id, - to_send - ).await; - } - - async fn send_gossip_messages_to_peer( - entries: &HashMap, - ctx: &mut impl SubsystemContext, - peer_id: PeerId, - blocks: Vec, - ) { - let mut assignments = Vec::new(); - let mut approvals = Vec::new(); - let num_blocks = blocks.len(); - - for block in blocks.into_iter() { - let entry = match entries.get(&block) { - Some(entry) => entry, - None => continue, // should be unreachable - }; - - tracing::trace!( - target: LOG_TARGET, - "Sending all assignments and approvals in block {} to peer {}", - block, - peer_id, - ); - - for (candidate_index, candidate_entry) in entry.candidates.iter().enumerate() { - let candidate_index = candidate_index as u32; - for (validator_index, (approval_state, _is_local)) in candidate_entry.approvals.iter() { - match approval_state { - ApprovalState::Assigned(cert) => { - assignments.push(( - IndirectAssignmentCert { - block_hash: block.clone(), - validator: validator_index.clone(), - cert: cert.clone(), - }, - candidate_index.clone(), - )); - } - ApprovalState::Approved(assignment_cert, signature) => { - assignments.push(( - IndirectAssignmentCert { - block_hash: block.clone(), - validator: validator_index.clone(), - cert: assignment_cert.clone(), - }, - candidate_index.clone(), - )); - approvals.push(IndirectSignedApprovalVote { - block_hash: block.clone(), - validator: validator_index.clone(), - candidate_index: candidate_index.clone(), - signature: signature.clone(), - }); - } - } - } - } - } - - if !assignments.is_empty() { - tracing::trace!( - target: LOG_TARGET, - num = assignments.len(), - ?num_blocks, - ?peer_id, - "Sending assignments to a peer", - ); - - ctx.send_message(NetworkBridgeMessage::SendValidationMessage( - vec![peer_id.clone()], - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ), - ).into()).await; - } - - if !approvals.is_empty() { - tracing::trace!( - target: LOG_TARGET, - num = approvals.len(), - ?num_blocks, - ?peer_id, - "Sending approvals to a peer", - ); - - ctx.send_message(NetworkBridgeMessage::SendValidationMessage( - vec![peer_id], - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Approvals(approvals) - ), - ).into()).await; - } - } -} - - -/// Modify the reputation of a peer based on its behavior. -async fn modify_reputation( - ctx: &mut impl SubsystemContext, - peer_id: PeerId, - rep: Rep, -) { - tracing::trace!( - target: LOG_TARGET, - reputation = ?rep, - ?peer_id, - "Reputation change for peer", - ); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer_id, rep), - )).await; -} - -impl ApprovalDistribution { - /// Create a new instance of the [`ApprovalDistribution`] subsystem. - pub fn new(metrics: Metrics) -> Self { - Self { metrics } - } - - async fn run(self, ctx: Context) - where - Context: SubsystemContext, - { - let mut state = State::default(); - self.run_inner(ctx, &mut state).await - } - - /// Used for testing. - async fn run_inner(self, mut ctx: Context, state: &mut State) - where - Context: SubsystemContext, - { - loop { - let message = match ctx.recv().await { - Ok(message) => message, - Err(e) => { - tracing::debug!(target: LOG_TARGET, err = ?e, "Failed to receive a message from Overseer, exiting"); - return; - }, - }; - match message { - FromOverseer::Communication { - msg: ApprovalDistributionMessage::NetworkBridgeUpdateV1(event), - } => { - state.handle_network_msg(&mut ctx, &self.metrics, event).await; - } - FromOverseer::Communication { - msg: ApprovalDistributionMessage::NewBlocks(metas), - } => { - tracing::debug!(target: LOG_TARGET, "Processing NewBlocks"); - state.handle_new_blocks(&mut ctx, &self.metrics, metas).await; - } - FromOverseer::Communication { - msg: ApprovalDistributionMessage::DistributeAssignment(cert, candidate_index), - } => { - tracing::debug!( - target: LOG_TARGET, - "Distributing our assignment on candidate (block={}, index={})", - cert.block_hash, - candidate_index, - ); - - state.import_and_circulate_assignment( - &mut ctx, - &self.metrics, - MessageSource::Local, - cert, - candidate_index, - ).await; - } - FromOverseer::Communication { - msg: ApprovalDistributionMessage::DistributeApproval(vote), - } => { - tracing::debug!( - target: LOG_TARGET, - "Distributing our approval vote on candidate (block={}, index={})", - vote.block_hash, - vote.candidate_index, - ); - - state.import_and_circulate_approval( - &mut ctx, - &self.metrics, - MessageSource::Local, - vote, - ).await; - } - FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { .. })) => { - tracing::trace!(target: LOG_TARGET, "active leaves signal (ignored)"); - // handled by NewBlocks - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(_hash, number)) => { - tracing::trace!(target: LOG_TARGET, number = %number, "finalized signal"); - state.handle_block_finalized(number); - }, - FromOverseer::Signal(OverseerSignal::Conclude) => { - return; - } - } - } - } -} - -impl Subsystem for ApprovalDistribution -where - C: SubsystemContext + Sync + Send, -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = self.run(ctx) - .map(|_| Ok(())) - .boxed(); - - SpawnedSubsystem { - name: "approval-distribution-subsystem", - future, - } - } -} - - -/// Approval Distribution metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -#[derive(Clone)] -struct MetricsInner { - assignments_imported_total: prometheus::Counter, - approvals_imported_total: prometheus::Counter, - unified_with_peer_total: prometheus::Counter, - - time_unify_with_peer: prometheus::Histogram, - time_import_pending_now_known: prometheus::Histogram, - time_awaiting_approval_voting: prometheus::Histogram, -} - -impl Metrics { - fn on_assignment_imported(&self) { - if let Some(metrics) = &self.0 { - metrics.assignments_imported_total.inc(); - } - } - - fn on_approval_imported(&self) { - if let Some(metrics) = &self.0 { - metrics.approvals_imported_total.inc(); - } - } - - fn on_unify_with_peer(&self) { - if let Some(metrics) = &self.0 { - metrics.unified_with_peer_total.inc(); - } - } - - fn time_unify_with_peer(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.time_unify_with_peer.start_timer()) - } - - fn time_import_pending_now_known(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.time_import_pending_now_known.start_timer()) - } - - fn time_awaiting_approval_voting(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.time_awaiting_approval_voting.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - assignments_imported_total: prometheus::register( - prometheus::Counter::new( - "parachain_assignments_imported_total", - "Number of valid assignments imported locally or from other peers.", - )?, - registry, - )?, - approvals_imported_total: prometheus::register( - prometheus::Counter::new( - "parachain_approvals_imported_total", - "Number of valid approvals imported locally or from other peers.", - )?, - registry, - )?, - unified_with_peer_total: prometheus::register( - prometheus::Counter::new( - "parachain_unified_with_peer_total", - "Number of times `unify_with_peer` is called.", - )?, - registry, - )?, - time_unify_with_peer: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_time_unify_with_peer", - "Time spent within fn `unify_with_peer`.", - ) - )?, - registry, - )?, - time_import_pending_now_known: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_time_import_pending_now_known", - "Time spent on importing pending assignments and approvals.", - ) - )?, - registry, - )?, - time_awaiting_approval_voting: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_time_awaiting_approval_voting", - "Time spent awaiting a reply from the Approval Voting Subsystem.", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/network/approval-distribution/src/tests.rs b/node/network/approval-distribution/src/tests.rs deleted file mode 100644 index 675761ef14b9..000000000000 --- a/node/network/approval-distribution/src/tests.rs +++ /dev/null @@ -1,1019 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::time::Duration; -use futures::{future, Future, executor}; -use assert_matches::assert_matches; -use polkadot_node_subsystem::messages::ApprovalCheckError; -use polkadot_node_subsystem_test_helpers as test_helpers; -use polkadot_node_subsystem_util::TimeoutExt as _; -use polkadot_node_network_protocol::{view, ObservedRole}; -use polkadot_node_primitives::approval::{ - AssignmentCertKind, RELAY_VRF_MODULO_CONTEXT, VRFOutput, VRFProof, -}; -use super::*; - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -fn test_harness>( - mut state: State, - test_fn: impl FnOnce(VirtualOverseer) -> T, -) -> State { - let _ = env_logger::builder() - .is_test(true) - .filter( - Some(LOG_TARGET), - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = ApprovalDistribution::new(Default::default()); - { - let subsystem = subsystem.run_inner(context, &mut state); - - let test_fut = test_fn(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .timeout(TIMEOUT) - .await - .expect("Conclude send timeout"); - }, subsystem)); - } - - state -} - -const TIMEOUT: Duration = Duration::from_millis(100); - -async fn overseer_send( - overseer: &mut VirtualOverseer, - msg: ApprovalDistributionMessage, -) { - tracing::trace!(msg = ?msg, "Sending message"); - overseer - .send(FromOverseer::Communication { msg }) - .timeout(TIMEOUT) - .await - .expect("msg send timeout"); -} - -async fn overseer_signal_block_finalized( - overseer: &mut VirtualOverseer, - number: BlockNumber, -) { - tracing::trace!( - ?number, - "Sending a finalized signal", - ); - // we don't care about the block hash - overseer - .send(FromOverseer::Signal(OverseerSignal::BlockFinalized(Hash::zero(), number))) - .timeout(TIMEOUT) - .await - .expect("signal send timeout"); -} - -async fn overseer_recv( - overseer: &mut VirtualOverseer, -) -> AllMessages { - tracing::trace!("Waiting for a message"); - let msg = overseer - .recv() - .timeout(TIMEOUT) - .await - .expect("msg recv timeout"); - - tracing::trace!(msg = ?msg, "Received message"); - - msg -} - -async fn setup_peer_with_view( - virtual_overseer: &mut VirtualOverseer, - peer_id: &PeerId, - view: View, -) { - overseer_send( - virtual_overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected(peer_id.clone(), ObservedRole::Full, None) - ) - ).await; - overseer_send( - virtual_overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_id.clone(), view) - ) - ).await; -} - -async fn send_message_from_peer( - virtual_overseer: &mut VirtualOverseer, - peer_id: &PeerId, - msg: protocol_v1::ApprovalDistributionMessage, -) { - overseer_send( - virtual_overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage(peer_id.clone(), msg) - ) - ).await; -} - -fn fake_assignment_cert( - block_hash: Hash, - validator: ValidatorIndex, -) -> IndirectAssignmentCert { - let ctx = schnorrkel::signing_context(RELAY_VRF_MODULO_CONTEXT); - let msg = b"WhenParachains?"; - let mut prng = rand_core::OsRng; - let keypair = schnorrkel::Keypair::generate_with(&mut prng); - let (inout, proof, _) = keypair.vrf_sign(ctx.bytes(msg)); - let out = inout.to_output(); - - IndirectAssignmentCert { - block_hash, - validator, - cert: AssignmentCert { - kind: AssignmentCertKind::RelayVRFModulo { - sample: 1, - }, - vrf: (VRFOutput(out), VRFProof(proof)), - } - } -} - -async fn expect_reputation_change( - virtual_overseer: &mut VirtualOverseer, - peer_id: &PeerId, - expected_reputation_change: Rep, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer( - rep_peer, - rep, - ) - ) => { - assert_eq!(peer_id, &rep_peer); - assert_eq!(expected_reputation_change, rep); - } - ); -} - - -/// import an assignment -/// connect a new peer -/// the new peer sends us the same assignment -#[test] -fn try_import_the_same_assignment() { - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - let peer_d = PeerId::random(); - let parent_hash = Hash::repeat_byte(0xFF); - let hash = Hash::repeat_byte(0xAA); - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // setup peers - setup_peer_with_view(overseer, &peer_a, view![]).await; - setup_peer_with_view(overseer, &peer_b, view![hash]).await; - setup_peer_with_view(overseer, &peer_c, view![hash]).await; - - // new block `hash_a` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 2, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - // send the assignment related to `hash` - let validator_index = ValidatorIndex(0); - let cert = fake_assignment_cert(hash, validator_index); - let assignments = vec![(cert.clone(), 0u32)]; - - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments.clone()); - send_message_from_peer(overseer, &peer_a, msg).await; - - expect_reputation_change(overseer, &peer_a, COST_UNEXPECTED_MESSAGE).await; - - // send an `Accept` message from the Approval Voting subsystem - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportAssignment( - assignment, - 0u32, - tx, - )) => { - assert_eq!(assignment, cert); - tx.send(AssignmentCheckResult::Accepted).unwrap(); - } - ); - - expect_reputation_change(overseer, &peer_a, BENEFIT_VALID_MESSAGE_FIRST).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ) - )) => { - assert_eq!(peers.len(), 2); - assert_eq!(assignments.len(), 1); - } - ); - - // setup new peer - setup_peer_with_view(overseer, &peer_d, view![]).await; - - // send the same assignment from peer_d - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments); - send_message_from_peer(overseer, &peer_d, msg).await; - - expect_reputation_change(overseer, &peer_d, COST_UNEXPECTED_MESSAGE).await; - expect_reputation_change(overseer, &peer_d, BENEFIT_VALID_MESSAGE).await; - - assert!(overseer - .recv() - .timeout(TIMEOUT) - .await - .is_none(), - "no message should be sent", - ); - virtual_overseer - }); -} - -/// https://github.com/paritytech/polkadot/pull/2160#discussion_r547594835 -/// -/// 1. Send a view update that removes block B from their view. -/// 2. Send a message from B that they incur COST_UNEXPECTED_MESSAGE for, -/// but then they receive BENEFIT_VALID_MESSAGE. -/// 3. Send all other messages related to B. -#[test] -fn spam_attack_results_in_negative_reputation_change() { - let parent_hash = Hash::repeat_byte(0xFF); - let peer_a = PeerId::random(); - let hash_b = Hash::repeat_byte(0xBB); - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - let peer = &peer_a; - setup_peer_with_view(overseer, peer, view![]).await; - - // new block `hash_b` with 20 candidates - let candidates_count = 20; - let meta = BlockApprovalMeta { - hash: hash_b.clone(), - parent_hash, - number: 2, - candidates: vec![Default::default(); candidates_count], - slot: 1.into(), - }; - - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - // send 20 assignments related to `hash_b` - // to populate our knowledge - let assignments: Vec<_> = (0..candidates_count) - .map(|candidate_index| { - let validator_index = ValidatorIndex(candidate_index as u32); - let cert = fake_assignment_cert(hash_b, validator_index); - (cert, candidate_index as u32) - }).collect(); - - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments.clone()); - send_message_from_peer(overseer, peer, msg.clone()).await; - - for i in 0..candidates_count { - expect_reputation_change(overseer, peer, COST_UNEXPECTED_MESSAGE).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportAssignment( - assignment, - claimed_candidate_index, - tx, - )) => { - assert_eq!(assignment, assignments[i].0); - assert_eq!(claimed_candidate_index, assignments[i].1); - tx.send(AssignmentCheckResult::Accepted).unwrap(); - } - ); - - expect_reputation_change(overseer, peer, BENEFIT_VALID_MESSAGE_FIRST).await; - } - - // send a view update that removes block B from peer's view by bumping the finalized_number - overseer_send( - overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::with_finalized(2)) - ) - ).await; - - // send the assignments again - send_message_from_peer(overseer, peer, msg.clone()).await; - - // each of them will incur `COST_UNEXPECTED_MESSAGE`, not only the first one - for _ in 0..candidates_count { - expect_reputation_change(overseer, peer, COST_UNEXPECTED_MESSAGE).await; - expect_reputation_change(overseer, peer, BENEFIT_VALID_MESSAGE).await; - } - virtual_overseer - }); -} - - -/// Imagine we send a message to peer A and peer B. -/// Upon receiving them, they both will try to send the message each other. -/// This test makes sure they will not punish each other for such duplicate messages. -/// -/// See https://github.com/paritytech/polkadot/issues/2499. -#[test] -fn peer_sending_us_the_same_we_just_sent_them_is_ok() { - let parent_hash = Hash::repeat_byte(0xFF); - let peer_a = PeerId::random(); - let hash = Hash::repeat_byte(0xAA); - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - let peer = &peer_a; - setup_peer_with_view(overseer, peer, view![]).await; - - // new block `hash` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - // import an assignment related to `hash` locally - let validator_index = ValidatorIndex(0); - let candidate_index = 0u32; - let cert = fake_assignment_cert(hash, validator_index); - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert.clone(), candidate_index) - ).await; - - // update peer view to include the hash - overseer_send( - overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer.clone(), view![hash]) - ) - ).await; - - // we should send them the assignment - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ) - )) => { - assert_eq!(peers.len(), 1); - assert_eq!(assignments.len(), 1); - } - ); - - // but if someone else is sending it the same assignment - // the peer could send us it as well - let assignments = vec![(cert, candidate_index)]; - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments); - send_message_from_peer(overseer, peer, msg.clone()).await; - - assert!(overseer - .recv() - .timeout(TIMEOUT) - .await - .is_none(), - "we should not punish the peer", - ); - - // send the assignments again - send_message_from_peer(overseer, peer, msg).await; - - // now we should - expect_reputation_change(overseer, peer, COST_DUPLICATE_MESSAGE).await; - virtual_overseer - }); -} - -#[test] -fn import_approval_happy_path() { - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - let parent_hash = Hash::repeat_byte(0xFF); - let hash = Hash::repeat_byte(0xAA); - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // setup peers - setup_peer_with_view(overseer, &peer_a, view![]).await; - setup_peer_with_view(overseer, &peer_b, view![hash]).await; - setup_peer_with_view(overseer, &peer_c, view![hash]).await; - - // new block `hash_a` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - // import an assignment related to `hash` locally - let validator_index = ValidatorIndex(0); - let candidate_index = 0u32; - let cert = fake_assignment_cert(hash, validator_index); - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert, candidate_index) - ).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ) - )) => { - assert_eq!(peers.len(), 2); - assert_eq!(assignments.len(), 1); - } - ); - - // send the an approval from peer_b - let approval = IndirectSignedApprovalVote { - block_hash: hash, - candidate_index, - validator: validator_index, - signature: Default::default(), - }; - let msg = protocol_v1::ApprovalDistributionMessage::Approvals(vec![approval.clone()]); - send_message_from_peer(overseer, &peer_b, msg).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportApproval( - vote, - tx, - )) => { - assert_eq!(vote, approval); - tx.send(ApprovalCheckResult::Accepted).unwrap(); - } - ); - - expect_reputation_change(overseer, &peer_b, BENEFIT_VALID_MESSAGE_FIRST).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Approvals(approvals) - ) - )) => { - assert_eq!(peers.len(), 1); - assert_eq!(approvals.len(), 1); - } - ); - virtual_overseer - }); -} - -#[test] -fn import_approval_bad() { - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - let parent_hash = Hash::repeat_byte(0xFF); - let hash = Hash::repeat_byte(0xAA); - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // setup peers - setup_peer_with_view(overseer, &peer_a, view![]).await; - setup_peer_with_view(overseer, &peer_b, view![hash]).await; - - // new block `hash_a` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - let validator_index = ValidatorIndex(0); - let candidate_index = 0u32; - let cert = fake_assignment_cert(hash, validator_index); - - // send the an approval from peer_b, we don't have an assignment yet - let approval = IndirectSignedApprovalVote { - block_hash: hash, - candidate_index, - validator: validator_index, - signature: Default::default(), - }; - let msg = protocol_v1::ApprovalDistributionMessage::Approvals(vec![approval.clone()]); - send_message_from_peer(overseer, &peer_b, msg).await; - - expect_reputation_change(overseer, &peer_b, COST_UNEXPECTED_MESSAGE).await; - - // now import an assignment from peer_b - let assignments = vec![(cert.clone(), candidate_index)]; - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments); - send_message_from_peer(overseer, &peer_b, msg).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportAssignment( - assignment, - i, - tx, - )) => { - assert_eq!(assignment, cert); - assert_eq!(i, candidate_index); - tx.send(AssignmentCheckResult::Accepted).unwrap(); - } - ); - - expect_reputation_change(overseer, &peer_b, BENEFIT_VALID_MESSAGE_FIRST).await; - - // and try again - let msg = protocol_v1::ApprovalDistributionMessage::Approvals(vec![approval.clone()]); - send_message_from_peer(overseer, &peer_b, msg).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportApproval( - vote, - tx, - )) => { - assert_eq!(vote, approval); - tx.send(ApprovalCheckResult::Bad(ApprovalCheckError::UnknownBlock(hash))).unwrap(); - } - ); - - expect_reputation_change(overseer, &peer_b, COST_INVALID_MESSAGE).await; - virtual_overseer - }); -} - -/// make sure we clean up the state on block finalized -#[test] -fn update_our_view() { - let parent_hash = Hash::repeat_byte(0xFF); - let hash_a = Hash::repeat_byte(0xAA); - let hash_b = Hash::repeat_byte(0xBB); - let hash_c = Hash::repeat_byte(0xCC); - - let state = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // new block `hash_a` with 1 candidates - let meta_a = BlockApprovalMeta { - hash: hash_a, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let meta_b = BlockApprovalMeta { - hash: hash_b, - parent_hash: hash_a, - number: 2, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let meta_c = BlockApprovalMeta { - hash: hash_c, - parent_hash: hash_b, - number: 3, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta_a, meta_b, meta_c]); - overseer_send(overseer, msg).await; - virtual_overseer - }); - - assert!(state.blocks_by_number.get(&1).is_some()); - assert!(state.blocks_by_number.get(&2).is_some()); - assert!(state.blocks_by_number.get(&3).is_some()); - assert!(state.blocks.get(&hash_a).is_some()); - assert!(state.blocks.get(&hash_b).is_some()); - assert!(state.blocks.get(&hash_c).is_some()); - - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // finalize a block - overseer_signal_block_finalized(overseer, 2).await; - virtual_overseer - }); - - assert!(state.blocks_by_number.get(&1).is_none()); - assert!(state.blocks_by_number.get(&2).is_none()); - assert!(state.blocks_by_number.get(&3).is_some()); - assert!(state.blocks.get(&hash_a).is_none()); - assert!(state.blocks.get(&hash_b).is_none()); - assert!(state.blocks.get(&hash_c).is_some()); - - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // finalize a very high block - overseer_signal_block_finalized(overseer, 4_000_000_000).await; - virtual_overseer - }); - - assert!(state.blocks_by_number.get(&3).is_none()); - assert!(state.blocks.get(&hash_c).is_none()); -} - -/// make sure we unify with peers and clean up the state -#[test] -fn update_peer_view() { - let parent_hash = Hash::repeat_byte(0xFF); - let hash_a = Hash::repeat_byte(0xAA); - let hash_b = Hash::repeat_byte(0xBB); - let hash_c = Hash::repeat_byte(0xCC); - let hash_d = Hash::repeat_byte(0xDD); - let peer_a = PeerId::random(); - let peer = &peer_a; - - let state = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // new block `hash_a` with 1 candidates - let meta_a = BlockApprovalMeta { - hash: hash_a, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let meta_b = BlockApprovalMeta { - hash: hash_b, - parent_hash: hash_a, - number: 2, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let meta_c = BlockApprovalMeta { - hash: hash_c, - parent_hash: hash_b, - number: 3, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta_a, meta_b, meta_c]); - overseer_send(overseer, msg).await; - - let cert_a = fake_assignment_cert(hash_a, ValidatorIndex(0)); - let cert_b = fake_assignment_cert(hash_b, ValidatorIndex(0)); - - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert_a, 0) - ).await; - - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert_b, 0) - ).await; - - // connect a peer - setup_peer_with_view(overseer, peer, view![hash_a]).await; - - // we should send relevant assignments to the peer - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ) - )) => { - assert_eq!(peers.len(), 1); - assert_eq!(assignments.len(), 1); - } - ); - virtual_overseer - }); - - assert_eq!(state.peer_views.get(peer).map(|v| v.finalized_number), Some(0)); - assert_eq!( - state.blocks - .get(&hash_a) - .unwrap() - .known_by - .get(peer) - .unwrap() - .sent - .known_messages - .len(), - 1, - ); - - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // update peer's view - overseer_send( - overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::new(vec![hash_b, hash_c, hash_d], 2)) - ) - ).await; - - let cert_c = fake_assignment_cert(hash_c, ValidatorIndex(0)); - - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert_c.clone(), 0) - ).await; - - // we should send relevant assignments to the peer - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(assignments) - ) - )) => { - assert_eq!(peers.len(), 1); - assert_eq!(assignments.len(), 1); - assert_eq!(assignments[0].0, cert_c); - } - ); - virtual_overseer - }); - - assert_eq!(state.peer_views.get(peer).map(|v| v.finalized_number), Some(2)); - assert_eq!( - state.blocks - .get(&hash_c) - .unwrap() - .known_by - .get(peer) - .unwrap() - .sent - .known_messages - .len(), - 1, - ); - - let finalized_number = 4_000_000_000; - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // update peer's view - overseer_send( - overseer, - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::with_finalized(finalized_number)) - ) - ).await; - virtual_overseer - }); - - assert_eq!(state.peer_views.get(peer).map(|v| v.finalized_number), Some(finalized_number)); - assert!( - state.blocks - .get(&hash_c) - .unwrap() - .known_by - .get(peer) - .is_none() - ); -} - -/// E.g. if someone copies the keys... -#[test] -fn import_remotely_then_locally() { - let peer_a = PeerId::random(); - let parent_hash = Hash::repeat_byte(0xFF); - let hash = Hash::repeat_byte(0xAA); - let peer = &peer_a; - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - // setup the peer - setup_peer_with_view(overseer, peer, view![hash]).await; - - // new block `hash_a` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - // import the assignment remotely first - let validator_index = ValidatorIndex(0); - let candidate_index = 0u32; - let cert = fake_assignment_cert(hash, validator_index); - let assignments = vec![(cert.clone(), candidate_index)]; - let msg = protocol_v1::ApprovalDistributionMessage::Assignments(assignments.clone()); - send_message_from_peer(overseer, peer, msg).await; - - // send an `Accept` message from the Approval Voting subsystem - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportAssignment( - assignment, - i, - tx, - )) => { - assert_eq!(assignment, cert); - assert_eq!(i, candidate_index); - tx.send(AssignmentCheckResult::Accepted).unwrap(); - } - ); - - expect_reputation_change(overseer, peer, BENEFIT_VALID_MESSAGE_FIRST).await; - - // import the same assignment locally - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert, candidate_index) - ).await; - - assert!(overseer - .recv() - .timeout(TIMEOUT) - .await - .is_none(), - "no message should be sent", - ); - - // send the approval remotely - let approval = IndirectSignedApprovalVote { - block_hash: hash, - candidate_index, - validator: validator_index, - signature: Default::default(), - }; - let msg = protocol_v1::ApprovalDistributionMessage::Approvals(vec![approval.clone()]); - send_message_from_peer(overseer, peer, msg).await; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::ApprovalVoting(ApprovalVotingMessage::CheckAndImportApproval( - vote, - tx, - )) => { - assert_eq!(vote, approval); - tx.send(ApprovalCheckResult::Accepted).unwrap(); - } - ); - expect_reputation_change(overseer, peer, BENEFIT_VALID_MESSAGE_FIRST).await; - - // import the same approval locally - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeApproval(approval) - ).await; - - assert!(overseer - .recv() - .timeout(TIMEOUT) - .await - .is_none(), - "no message should be sent", - ); - virtual_overseer - }); -} - -#[test] -fn sends_assignments_even_when_state_is_approved() { - let peer_a = PeerId::random(); - let parent_hash = Hash::repeat_byte(0xFF); - let hash = Hash::repeat_byte(0xAA); - let peer = &peer_a; - - let _ = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - - // new block `hash_a` with 1 candidates - let meta = BlockApprovalMeta { - hash, - parent_hash, - number: 1, - candidates: vec![Default::default(); 1], - slot: 1.into(), - }; - let msg = ApprovalDistributionMessage::NewBlocks(vec![meta]); - overseer_send(overseer, msg).await; - - let validator_index = ValidatorIndex(0); - let candidate_index = 0u32; - - // import an assignment and approval locally. - let cert = fake_assignment_cert(hash, validator_index); - let approval = IndirectSignedApprovalVote { - block_hash: hash, - candidate_index, - validator: validator_index, - signature: Default::default(), - }; - - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeAssignment(cert.clone(), candidate_index) - ).await; - - overseer_send( - overseer, - ApprovalDistributionMessage::DistributeApproval(approval.clone()), - ).await; - - // connect the peer. - setup_peer_with_view(overseer, peer, view![hash]).await; - - let assignments = vec![(cert.clone(), candidate_index)]; - let approvals = vec![approval.clone()]; - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Assignments(sent_assignments) - ) - )) => { - assert_eq!(peers, vec![peer.clone()]); - assert_eq!(sent_assignments, assignments); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers, - protocol_v1::ValidationProtocol::ApprovalDistribution( - protocol_v1::ApprovalDistributionMessage::Approvals(sent_approvals) - ) - )) => { - assert_eq!(peers, vec![peer.clone()]); - assert_eq!(sent_approvals, approvals); - } - ); - - assert!(overseer - .recv() - .timeout(TIMEOUT) - .await - .is_none(), - "no message should be sent", - ); - virtual_overseer - }); -} diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml deleted file mode 100644 index ea6accbeb8cf..000000000000 --- a/node/network/availability-distribution/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -name = "polkadot-availability-distribution" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -parity-scale-codec = { version = "2.0.0", features = ["std"] } -polkadot-primitives = { path = "../../../primitives" } -polkadot-erasure-coding = { path = "../../../erasure-coding" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-network-protocol = { path = "../../network/protocol" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-core-runtime-api = { path = "../../core/runtime-api" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -thiserror = "1.0.23" -rand = "0.8.3" -lru = "0.6.5" - -[dev-dependencies] -polkadot-subsystem-testhelpers = { package = "polkadot-node-subsystem-test-helpers", path = "../../subsystem-test-helpers" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures-timer = "3.0.2" -assert_matches = "1.4.0" -maplit = "1.0" -smallvec = "1.6.1" diff --git a/node/network/availability-distribution/src/error.rs b/node/network/availability-distribution/src/error.rs deleted file mode 100644 index 666e9a377690..000000000000 --- a/node/network/availability-distribution/src/error.rs +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -// - -//! Error handling related code and Error/Result definitions. - -use polkadot_node_network_protocol::request_response::request::RequestError; -use thiserror::Error; - -use futures::channel::oneshot; - -use polkadot_node_subsystem_util::{Fault, runtime, unwrap_non_fatal}; -use polkadot_subsystem::SubsystemError; - -use crate::LOG_TARGET; - -#[derive(Debug, Error)] -#[error(transparent)] -pub struct Error(pub Fault); - -impl From for Error { - fn from(e: NonFatal) -> Self { - Self(Fault::from_non_fatal(e)) - } -} - -impl From for Error { - fn from(f: Fatal) -> Self { - Self(Fault::from_fatal(f)) - } -} - -impl From for Error { - fn from(o: runtime::Error) -> Self { - Self(Fault::from_other(o)) - } -} - -/// Fatal errors of this subsystem. -#[derive(Debug, Error)] -pub enum Fatal { - /// Spawning a running task failed. - #[error("Spawning subsystem task failed")] - SpawnTask(#[source] SubsystemError), - - /// Requester stream exhausted. - #[error("Erasure chunk requester stream exhausted")] - RequesterExhausted, - - #[error("Receive channel closed")] - IncomingMessageChannel(#[source] SubsystemError), - - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::Fatal), -} - -/// Non-fatal errors of this subsystem. -#[derive(Debug, Error)] -pub enum NonFatal { - /// av-store will drop the sender on any error that happens. - #[error("Response channel to obtain chunk failed")] - QueryChunkResponseChannel(#[source] oneshot::Canceled), - - /// av-store will drop the sender on any error that happens. - #[error("Response channel to obtain available data failed")] - QueryAvailableDataResponseChannel(#[source] oneshot::Canceled), - - /// We tried accessing a session that was not cached. - #[error("Session is not cached.")] - NoSuchCachedSession, - - /// Sending request response failed (Can happen on timeouts for example). - #[error("Sending a request's response failed.")] - SendResponse, - - /// Fetching PoV failed with `RequestError`. - #[error("FetchPoV request error")] - FetchPoV(#[source] RequestError), - - /// Fetching PoV failed as the received PoV did not match the expected hash. - #[error("Fetched PoV does not match expected hash")] - UnexpectedPoV, - - #[error("Remote responded with `NoSuchPoV`")] - NoSuchPoV, - - /// No validator with the index could be found in current session. - #[error("Given validator index could not be found")] - InvalidValidatorIndex, - - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::NonFatal), -} - -pub type Result = std::result::Result; - -/// Utility for eating top level errors and log them. -/// -/// We basically always want to try and continue on error. This utility function is meant to -/// consume top-level errors by simply logging them -pub fn log_error(result: Result<()>, ctx: &'static str) - -> std::result::Result<(), Fatal> -{ - if let Some(error) = unwrap_non_fatal(result.map_err(|e| e.0))? { - tracing::warn!(target: LOG_TARGET, error = ?error, ctx); - } - Ok(()) -} diff --git a/node/network/availability-distribution/src/lib.rs b/node/network/availability-distribution/src/lib.rs deleted file mode 100644 index 65580ea41d88..000000000000 --- a/node/network/availability-distribution/src/lib.rs +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use futures::{future::Either, FutureExt, StreamExt, TryFutureExt}; - -use sp_keystore::SyncCryptoStorePtr; - -use polkadot_subsystem::{ - messages::AvailabilityDistributionMessage, FromOverseer, OverseerSignal, SpawnedSubsystem, - Subsystem, SubsystemContext, SubsystemError, -}; - -/// Error and [`Result`] type for this subsystem. -mod error; -use error::Fatal; -use error::{Result, log_error}; - -use polkadot_node_subsystem_util::runtime::RuntimeInfo; - -/// `Requester` taking care of requesting chunks for candidates pending availability. -mod requester; -use requester::Requester; - -/// Handing requests for PoVs during backing. -mod pov_requester; - -/// Responding to erasure chunk requests: -mod responder; -use responder::{answer_chunk_request_log, answer_pov_request_log}; - -mod metrics; -/// Prometheus `Metrics` for availability distribution. -pub use metrics::Metrics; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &'static str = "parachain::availability-distribution"; - -/// The availability distribution subsystem. -pub struct AvailabilityDistributionSubsystem { - /// Easy and efficient runtime access for this subsystem. - runtime: RuntimeInfo, - /// Prometheus metrics. - metrics: Metrics, -} - -impl Subsystem for AvailabilityDistributionSubsystem -where - Context: SubsystemContext + Sync + Send, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = self - .run(ctx) - .map_err(|e| SubsystemError::with_origin("availability-distribution", e)) - .boxed(); - - SpawnedSubsystem { - name: "availability-distribution-subsystem", - future, - } - } -} - -impl AvailabilityDistributionSubsystem { - - /// Create a new instance of the availability distribution. - pub fn new(keystore: SyncCryptoStorePtr, metrics: Metrics) -> Self { - let runtime = RuntimeInfo::new(Some(keystore)); - Self { runtime, metrics } - } - - /// Start processing work as passed on from the Overseer. - async fn run(mut self, mut ctx: Context) -> std::result::Result<(), Fatal> - where - Context: SubsystemContext + Sync + Send, - { - let mut requester = Requester::new(self.metrics.clone()).fuse(); - loop { - let action = { - let mut subsystem_next = ctx.recv().fuse(); - futures::select! { - subsystem_msg = subsystem_next => Either::Left(subsystem_msg), - from_task = requester.next() => Either::Right(from_task), - } - }; - - // Handle task messages sending: - let message = match action { - Either::Left(subsystem_msg) => { - subsystem_msg.map_err(|e| Fatal::IncomingMessageChannel(e))? - } - Either::Right(from_task) => { - let from_task = from_task.ok_or(Fatal::RequesterExhausted)?; - ctx.send_message(from_task).await; - continue; - } - }; - match message { - FromOverseer::Signal(OverseerSignal::ActiveLeaves(update)) => { - log_error( - requester.get_mut().update_fetching_heads(&mut ctx, &mut self.runtime, update).await, - "Error in Requester::update_fetching_heads" - )?; - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(..)) => {} - FromOverseer::Signal(OverseerSignal::Conclude) => { - return Ok(()); - } - FromOverseer::Communication { - msg: AvailabilityDistributionMessage::ChunkFetchingRequest(req), - } => { - answer_chunk_request_log(&mut ctx, req, &self.metrics).await - } - FromOverseer::Communication { - msg: AvailabilityDistributionMessage::PoVFetchingRequest(req), - } => { - answer_pov_request_log(&mut ctx, req, &self.metrics).await - } - FromOverseer::Communication { - msg: AvailabilityDistributionMessage::FetchPoV { - relay_parent, - from_validator, - candidate_hash, - pov_hash, - tx, - }, - } => { - log_error( - pov_requester::fetch_pov( - &mut ctx, - &mut self.runtime, - relay_parent, - from_validator, - candidate_hash, - pov_hash, - tx, - ).await, - "pov_requester::fetch_pov" - )?; - } - } - } - } -} diff --git a/node/network/availability-distribution/src/metrics.rs b/node/network/availability-distribution/src/metrics.rs deleted file mode 100644 index 925bbc8fe430..000000000000 --- a/node/network/availability-distribution/src/metrics.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use polkadot_node_subsystem_util::metrics::prometheus::{Counter, U64, Registry, PrometheusError, CounterVec, Opts}; -use polkadot_node_subsystem_util::metrics::prometheus; -use polkadot_node_subsystem_util::metrics; - -/// Label for success counters. -pub const SUCCEEDED: &'static str = "succeeded"; - -/// Label for fail counters. -pub const FAILED: &'static str = "failed"; - -/// Label for chunks/PoVs that could not be served, because they were not available. -pub const NOT_FOUND: &'static str = "not-found"; - -/// Availability Distribution metrics. -#[derive(Clone, Default)] -pub struct Metrics(Option); - - -#[derive(Clone)] -struct MetricsInner { - /// Number of chunks fetched. - /// - /// Note: The failed count gets incremented, when we were not able to fetch the chunk at all. - /// For times, where we failed downloading, but succeeded on the next try (with different - /// backers), see `retries`. - fetched_chunks: CounterVec, - - /// Number of chunks served. - /// - /// Note: Right now, `Succeeded` gets incremented whenever we were able to successfully respond - /// to a chunk request. This includes `NoSuchChunk` responses. - served_chunks: CounterVec, - - /// Number of PoVs served. - /// - /// Note: Right now, `Succeeded` gets incremented whenever we were able to successfully respond - /// to a PoV request. This includes `NoSuchPoV` responses. - served_povs: CounterVec, - - /// Number of times our first set of validators did not provide the needed chunk and we had to - /// query further validators. - retries: Counter, -} - -impl Metrics { - /// Create new dummy metrics, not reporting anything. - pub fn new_dummy() -> Self { - Metrics(None) - } - - /// Increment counter on fetched labels. - pub fn on_fetch(&self, label: &'static str) { - if let Some(metrics) = &self.0 { - metrics.fetched_chunks.with_label_values(&[label]).inc() - } - } - - /// Increment counter on served chunks. - pub fn on_served_chunk(&self, label: &'static str) { - if let Some(metrics) = &self.0 { - metrics.served_chunks.with_label_values(&[label]).inc() - } - } - - /// Increment counter on served PoVs. - pub fn on_served_pov(&self, label: &'static str) { - if let Some(metrics) = &self.0 { - metrics.served_povs.with_label_values(&[label]).inc() - } - } - - /// Increment retry counter. - pub fn on_retry(&self) { - if let Some(metrics) = &self.0 { - metrics.retries.inc() - } - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &Registry) -> Result { - let metrics = MetricsInner { - fetched_chunks: prometheus::register( - CounterVec::new( - Opts::new( - "parachain_fetched_chunks_total", - "Total number of fetched chunks.", - ), - &["success"] - )?, - registry, - )?, - served_chunks: prometheus::register( - CounterVec::new( - Opts::new( - "parachain_served_chunks_total", - "Total number of chunks served by this backer.", - ), - &["success"] - )?, - registry, - )?, - served_povs: prometheus::register( - CounterVec::new( - Opts::new( - "parachain_served_povs_total", - "Total number of povs served by this backer.", - ), - &["success"] - )?, - registry, - )?, - retries: prometheus::register( - Counter::new( - "parachain_fetch_retries_total", - "Number of times we did not succeed in fetching a chunk and needed to try more backers.", - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - diff --git a/node/network/availability-distribution/src/pov_requester/mod.rs b/node/network/availability-distribution/src/pov_requester/mod.rs deleted file mode 100644 index 3d7e41e6ae6b..000000000000 --- a/node/network/availability-distribution/src/pov_requester/mod.rs +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! PoV requester takes care of requesting PoVs from validators of a backing group. - -use futures::{FutureExt, channel::oneshot, future::BoxFuture}; - -use polkadot_subsystem::jaeger; -use polkadot_node_network_protocol::{ - request_response::{OutgoingRequest, Recipient, request::{RequestError, Requests}, - v1::{PoVFetchingRequest, PoVFetchingResponse}} -}; -use polkadot_primitives::v1::{ - CandidateHash, Hash, ValidatorIndex, -}; -use polkadot_node_primitives::PoV; -use polkadot_subsystem::{ - SubsystemContext, - messages::{AllMessages, NetworkBridgeMessage, IfDisconnected} -}; -use polkadot_node_subsystem_util::runtime::RuntimeInfo; - -use crate::error::{Fatal, NonFatal}; -use crate::LOG_TARGET; - -/// Start background worker for taking care of fetching the requested `PoV` from the network. -pub async fn fetch_pov( - ctx: &mut Context, - runtime: &mut RuntimeInfo, - parent: Hash, - from_validator: ValidatorIndex, - candidate_hash: CandidateHash, - pov_hash: Hash, - tx: oneshot::Sender -) -> super::Result<()> -where - Context: SubsystemContext, -{ - let info = &runtime.get_session_info(ctx, parent).await?.session_info; - let authority_id = info.discovery_keys.get(from_validator.0 as usize) - .ok_or(NonFatal::InvalidValidatorIndex)? - .clone(); - let (req, pending_response) = OutgoingRequest::new( - Recipient::Authority(authority_id), - PoVFetchingRequest { - candidate_hash, - }, - ); - let full_req = Requests::PoVFetching(req); - - ctx.send_message( - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - vec![full_req], - // We are supposed to be connected to validators of our group via `PeerSet`, - // but at session boundaries that is kind of racy, in case a connection takes - // longer to get established, so we try to connect in any case. - IfDisconnected::TryConnect - ) - )).await; - - let span = jaeger::Span::new(candidate_hash, "fetch-pov") - .with_validator_index(from_validator) - .with_relay_parent(parent); - ctx.spawn("pov-fetcher", fetch_pov_job(pov_hash, pending_response.boxed(), span, tx).boxed()) - .map_err(|e| Fatal::SpawnTask(e))?; - Ok(()) -} - -/// Future to be spawned for taking care of handling reception and sending of PoV. -async fn fetch_pov_job( - pov_hash: Hash, - pending_response: BoxFuture<'static, Result>, - span: jaeger::Span, - tx: oneshot::Sender, -) { - if let Err(err) = do_fetch_pov(pov_hash, pending_response, span, tx).await { - tracing::warn!( - target: LOG_TARGET, - ?err, - "fetch_pov_job" - ); - } -} - -/// Do the actual work of waiting for the response. -async fn do_fetch_pov( - pov_hash: Hash, - pending_response: BoxFuture<'static, Result>, - _span: jaeger::Span, - tx: oneshot::Sender, -) - -> std::result::Result<(), NonFatal> -{ - let response = pending_response.await.map_err(NonFatal::FetchPoV)?; - let pov = match response { - PoVFetchingResponse::PoV(pov) => pov, - PoVFetchingResponse::NoSuchPoV => { - return Err(NonFatal::NoSuchPoV) - } - }; - if pov.hash() == pov_hash { - tx.send(pov).map_err(|_| NonFatal::SendResponse) - } else { - Err(NonFatal::UnexpectedPoV) - } -} - -#[cfg(test)] -mod tests { - use assert_matches::assert_matches; - use futures::{executor, future}; - - use parity_scale_codec::Encode; - use sp_core::testing::TaskExecutor; - - use polkadot_primitives::v1::{CandidateHash, Hash, ValidatorIndex}; - use polkadot_node_primitives::BlockData; - use polkadot_subsystem_testhelpers as test_helpers; - use polkadot_subsystem::messages::{AvailabilityDistributionMessage, RuntimeApiMessage, RuntimeApiRequest}; - - use super::*; - use crate::LOG_TARGET; - use crate::tests::mock::{make_session_info, make_ferdie_keystore}; - - #[test] - fn rejects_invalid_pov() { - sp_tracing::try_init_simple(); - let pov = PoV { - block_data: BlockData(vec![1,2,3,4,5,6]), - }; - test_run(Hash::default(), pov); - } - - #[test] - fn accepts_valid_pov() { - sp_tracing::try_init_simple(); - let pov = PoV { - block_data: BlockData(vec![1,2,3,4,5,6]), - }; - test_run(pov.hash(), pov); - } - - fn test_run(pov_hash: Hash, pov: PoV) { - let pool = TaskExecutor::new(); - let (mut context, mut virtual_overseer) = - test_helpers::make_subsystem_context::(pool.clone()); - let keystore = make_ferdie_keystore(); - let mut runtime = polkadot_node_subsystem_util::runtime::RuntimeInfo::new(Some(keystore)); - - let (tx, rx) = oneshot::channel(); - let testee = async { - fetch_pov( - &mut context, - &mut runtime, - Hash::default(), - ValidatorIndex(0), - CandidateHash::default(), - pov_hash, - tx, - ).await.expect("Should succeed"); - }; - - let tester = async move { - loop { - match virtual_overseer.recv().await { - AllMessages::RuntimeApi( - RuntimeApiMessage::Request( - _, - RuntimeApiRequest::SessionIndexForChild(tx) - ) - ) => { - tx.send(Ok(0)).unwrap(); - } - AllMessages::RuntimeApi( - RuntimeApiMessage::Request( - _, - RuntimeApiRequest::SessionInfo(_, tx) - ) - ) => { - tx.send(Ok(Some(make_session_info()))).unwrap(); - } - AllMessages::NetworkBridge(NetworkBridgeMessage::SendRequests(mut reqs, _)) => { - let req = assert_matches!( - reqs.pop(), - Some(Requests::PoVFetching(outgoing)) => {outgoing} - ); - req.pending_response.send(Ok(PoVFetchingResponse::PoV(pov.clone()).encode())) - .unwrap(); - break - }, - msg => tracing::debug!(target: LOG_TARGET, msg = ?msg, "Received msg"), - } - } - if pov.hash() == pov_hash { - assert_eq!(rx.await, Ok(pov)); - } else { - assert_eq!(rx.await, Err(oneshot::Canceled)); - } - }; - futures::pin_mut!(testee); - futures::pin_mut!(tester); - executor::block_on(future::join(testee, tester)); - } -} diff --git a/node/network/availability-distribution/src/requester/fetch_task/mod.rs b/node/network/availability-distribution/src/requester/fetch_task/mod.rs deleted file mode 100644 index c936d443fc6b..000000000000 --- a/node/network/availability-distribution/src/requester/fetch_task/mod.rs +++ /dev/null @@ -1,448 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashSet; - -use futures::channel::mpsc; -use futures::channel::oneshot; -use futures::future::select; -use futures::{FutureExt, SinkExt}; - -use polkadot_erasure_coding::branch_hash; -use polkadot_node_network_protocol::request_response::{ - request::{OutgoingRequest, RequestError, Requests, Recipient}, - v1::{ChunkFetchingRequest, ChunkFetchingResponse}, -}; -use polkadot_primitives::v1::{AuthorityDiscoveryId, BlakeTwo256, CandidateHash, GroupIndex, Hash, HashT, OccupiedCore, SessionIndex}; -use polkadot_node_primitives::ErasureChunk; -use polkadot_subsystem::messages::{ - AllMessages, AvailabilityStoreMessage, NetworkBridgeMessage, IfDisconnected, -}; -use polkadot_subsystem::{SubsystemContext, jaeger}; - -use crate::{ - error::{Fatal, Result}, - requester::session_cache::{BadValidators, SessionInfo}, - LOG_TARGET, - metrics::{Metrics, SUCCEEDED, FAILED}, -}; - -#[cfg(test)] -mod tests; - -/// Configuration for a `FetchTask` -/// -/// This exists to separate preparation of a `FetchTask` from actual starting it, which is -/// beneficial as this allows as for taking session info by reference. -pub struct FetchTaskConfig { - prepared_running: Option, - live_in: HashSet, -} - -/// Information about a task fetching an erasure chunk. -pub struct FetchTask { - /// For what relay parents this task is relevant. - /// - /// In other words, for which relay chain parents this candidate is considered live. - /// This is updated on every `ActiveLeavesUpdate` and enables us to know when we can safely - /// stop keeping track of that candidate/chunk. - live_in: HashSet, - - /// We keep the task around in until `live_in` becomes empty, to make - /// sure we won't re-fetch an already fetched candidate. - state: FetchedState, -} - -/// State of a particular candidate chunk fetching process. -enum FetchedState { - /// Chunk fetch has started. - /// - /// Once the contained `Sender` is dropped, any still running task will be canceled. - Started(oneshot::Sender<()>), - /// All relevant live_in have been removed, before we were able to get our chunk. - Canceled, -} - -/// Messages sent from `FetchTask`s to be handled/forwarded. -pub enum FromFetchTask { - /// Message to other subsystem. - Message(AllMessages), - - /// Concluded with result. - /// - /// In case of `None` everything was fine, in case of `Some`, some validators in the group - /// did not serve us our chunk as expected. - Concluded(Option), - - /// We were not able to fetch the desired chunk for the given `CandidateHash`. - Failed(CandidateHash), -} - -/// Information a running task needs. -struct RunningTask { - /// For what session we have been spawned. - session_index: SessionIndex, - - /// Index of validator group to fetch the chunk from. - /// - /// Needef for reporting bad validators. - group_index: GroupIndex, - - /// Validators to request the chunk from. - /// - /// This vector gets drained during execution of the task (it will be empty afterwards). - group: Vec, - - /// The request to send. - request: ChunkFetchingRequest, - - /// Root hash, for verifying the chunks validity. - erasure_root: Hash, - - /// Relay parent of the candidate to fetch. - relay_parent: Hash, - - /// Sender for communicating with other subsystems and reporting results. - sender: mpsc::Sender, - - /// Prometheues metrics for reporting results. - metrics: Metrics, - - /// Span tracking the fetching of this chunk. - span: jaeger::Span, -} - -impl FetchTaskConfig { - /// Create a new configuration for a [`FetchTask`]. - /// - /// The result of this function can be passed into [`FetchTask::start`]. - pub fn new( - leaf: Hash, - core: &OccupiedCore, - sender: mpsc::Sender, - metrics: Metrics, - session_info: &SessionInfo, - ) -> Self { - let live_in = vec![leaf].into_iter().collect(); - - // Don't run tasks for our backing group: - if session_info.our_group == Some(core.group_responsible) { - return FetchTaskConfig { - live_in, - prepared_running: None, - }; - } - - let span = jaeger::Span::new(core.candidate_hash, "availability-distribution") - .with_stage(jaeger::Stage::AvailabilityDistribution); - - let prepared_running = RunningTask { - session_index: session_info.session_index, - group_index: core.group_responsible, - group: session_info.validator_groups.get(core.group_responsible.0 as usize) - .expect("The responsible group of a candidate should be available in the corresponding session. qed.") - .clone(), - request: ChunkFetchingRequest { - candidate_hash: core.candidate_hash, - index: session_info.our_index, - }, - erasure_root: core.candidate_descriptor.erasure_root, - relay_parent: core.candidate_descriptor.relay_parent, - metrics, - sender, - span, - }; - FetchTaskConfig { - live_in, - prepared_running: Some(prepared_running), - } - } -} - -impl FetchTask { - /// Start fetching a chunk. - /// - /// A task handling the fetching of the configured chunk will be spawned. - pub async fn start(config: FetchTaskConfig, ctx: &mut Context) -> Result - where - Context: SubsystemContext, - { - let FetchTaskConfig { - prepared_running, - live_in, - } = config; - - if let Some(running) = prepared_running { - let (handle, kill) = oneshot::channel(); - - ctx.spawn("chunk-fetcher", running.run(kill).boxed()) - .map_err(|e| Fatal::SpawnTask(e))?; - - Ok(FetchTask { - live_in, - state: FetchedState::Started(handle), - }) - } else { - Ok(FetchTask { - live_in, - state: FetchedState::Canceled, - }) - } - } - - /// Add the given leaf to the relay parents which are making this task relevant. - /// - /// This is for book keeping, so we know we are already fetching a given chunk. - pub fn add_leaf(&mut self, leaf: Hash) { - self.live_in.insert(leaf); - } - - /// Remove leaves and cancel the task, if it was the last one and the task has still been - /// fetching. - pub fn remove_leaves(&mut self, leaves: &HashSet) { - self.live_in.difference(leaves); - if self.live_in.is_empty() && !self.is_finished() { - self.state = FetchedState::Canceled - } - } - - /// Whether there are still relay parents around with this candidate pending - /// availability. - pub fn is_live(&self) -> bool { - !self.live_in.is_empty() - } - - /// Whether this task can be considered finished. - /// - /// That is, it is either canceled, succeeded or failed. - pub fn is_finished(&self) -> bool { - match &self.state { - FetchedState::Canceled => true, - FetchedState::Started(sender) => sender.is_canceled(), - } - } -} - -/// Things that can go wrong in task execution. -#[derive(Debug)] -enum TaskError { - /// The peer failed to deliver a correct chunk for some reason (has been reported as - /// appropriate). - PeerError, - /// This very node is seemingly shutting down (sending of message failed). - ShuttingDown, -} - -impl RunningTask { - async fn run(self, kill: oneshot::Receiver<()>) { - // Wait for completion/or cancel. - let run_it = self.run_inner(); - futures::pin_mut!(run_it); - let _ = select(run_it, kill).await; - } - - /// Fetch and store chunk. - /// - /// Try validators in backing group in order. - async fn run_inner(mut self) { - let mut bad_validators = Vec::new(); - let mut succeeded = false; - let mut count: u32 = 0; - let mut _span = self.span.child("fetch-task") - .with_chunk_index(self.request.index.0) - .with_relay_parent(self.relay_parent); - // Try validators in reverse order: - while let Some(validator) = self.group.pop() { - let _try_span = _span.child("try"); - // Report retries: - if count > 0 { - self.metrics.on_retry(); - } - count +=1; - - // Send request: - let resp = match self.do_request(&validator).await { - Ok(resp) => resp, - Err(TaskError::ShuttingDown) => { - tracing::info!( - target: LOG_TARGET, - "Node seems to be shutting down, canceling fetch task" - ); - self.metrics.on_fetch(FAILED); - return - } - Err(TaskError::PeerError) => { - bad_validators.push(validator); - continue - } - }; - let chunk = match resp { - ChunkFetchingResponse::Chunk(resp) => { - resp.recombine_into_chunk(&self.request) - } - ChunkFetchingResponse::NoSuchChunk => { - tracing::debug!( - target: LOG_TARGET, - validator = ?validator, - "Validator did not have our chunk" - ); - bad_validators.push(validator); - continue - } - }; - - // Data genuine? - if !self.validate_chunk(&validator, &chunk) { - bad_validators.push(validator); - continue; - } - - // Ok, let's store it and be happy: - self.store_chunk(chunk).await; - succeeded = true; - _span.add_string_tag("success", "true"); - break; - } - _span.add_int_tag("tries", count as _); - if succeeded { - self.metrics.on_fetch(SUCCEEDED); - self.conclude(bad_validators).await; - } else { - self.metrics.on_fetch(FAILED); - self.conclude_fail().await - } - } - - /// Do request and return response, if successful. - async fn do_request( - &mut self, - validator: &AuthorityDiscoveryId, - ) -> std::result::Result { - let (full_request, response_recv) = - OutgoingRequest::new(Recipient::Authority(validator.clone()), self.request); - let requests = Requests::ChunkFetching(full_request); - - self.sender - .send(FromFetchTask::Message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests(vec![requests], IfDisconnected::TryConnect) - ))) - .await - .map_err(|_| TaskError::ShuttingDown)?; - - match response_recv.await { - Ok(resp) => Ok(resp), - Err(RequestError::InvalidResponse(err)) => { - tracing::warn!( - target: LOG_TARGET, - origin= ?validator, - err= ?err, - "Peer sent us invalid erasure chunk data" - ); - Err(TaskError::PeerError) - } - Err(RequestError::NetworkError(err)) => { - tracing::warn!( - target: LOG_TARGET, - origin= ?validator, - err= ?err, - "Some network error occurred when fetching erasure chunk" - ); - Err(TaskError::PeerError) - } - Err(RequestError::Canceled(oneshot::Canceled)) => { - tracing::warn!(target: LOG_TARGET, - origin= ?validator, - "Erasure chunk request got canceled"); - Err(TaskError::PeerError) - } - } - } - - fn validate_chunk(&self, validator: &AuthorityDiscoveryId, chunk: &ErasureChunk) -> bool { - let anticipated_hash = - match branch_hash(&self.erasure_root, &chunk.proof, chunk.index.0 as usize) { - Ok(hash) => hash, - Err(e) => { - tracing::warn!( - target: LOG_TARGET, - candidate_hash = ?self.request.candidate_hash, - origin = ?validator, - error = ?e, - "Failed to calculate chunk merkle proof", - ); - return false; - } - }; - let erasure_chunk_hash = BlakeTwo256::hash(&chunk.chunk); - if anticipated_hash != erasure_chunk_hash { - tracing::warn!(target: LOG_TARGET, origin = ?validator, "Received chunk does not match merkle tree"); - return false; - } - true - } - - /// Store given chunk and log any error. - async fn store_chunk(&mut self, chunk: ErasureChunk) { - let (tx, rx) = oneshot::channel(); - let r = self - .sender - .send(FromFetchTask::Message(AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreChunk { - candidate_hash: self.request.candidate_hash, - chunk, - tx, - }, - ))) - .await; - if let Err(err) = r { - tracing::error!(target: LOG_TARGET, err= ?err, "Storing erasure chunk failed, system shutting down?"); - } - - if let Err(oneshot::Canceled) = rx.await { - tracing::error!(target: LOG_TARGET, "Storing erasure chunk failed"); - } - } - - /// Tell subsystem we are done. - async fn conclude(&mut self, bad_validators: Vec) { - let payload = if bad_validators.is_empty() { - None - } else { - Some(BadValidators { - session_index: self.session_index, - group_index: self.group_index, - bad_validators, - }) - }; - if let Err(err) = self.sender.send(FromFetchTask::Concluded(payload)).await { - tracing::warn!( - target: LOG_TARGET, - err= ?err, - "Sending concluded message for task failed" - ); - } - } - - async fn conclude_fail(&mut self) { - if let Err(err) = self.sender.send(FromFetchTask::Failed(self.request.candidate_hash)).await { - tracing::warn!( - target: LOG_TARGET, - ?err, - "Sending `Failed` message for task failed" - ); - } - } -} diff --git a/node/network/availability-distribution/src/requester/fetch_task/tests.rs b/node/network/availability-distribution/src/requester/fetch_task/tests.rs deleted file mode 100644 index db8790435b2c..000000000000 --- a/node/network/availability-distribution/src/requester/fetch_task/tests.rs +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashMap; - - -use parity_scale_codec::Encode; - -use futures::channel::{mpsc, oneshot}; -use futures::{executor, Future, FutureExt, StreamExt, select}; -use futures::task::{Poll, Context, noop_waker}; - -use sc_network as network; -use sp_keyring::Sr25519Keyring; - -use polkadot_primitives::v1::{CandidateHash, ValidatorIndex}; -use polkadot_node_primitives::{BlockData, PoV}; -use polkadot_node_network_protocol::request_response::v1; -use polkadot_node_network_protocol::request_response::Recipient; -use polkadot_subsystem::messages::AllMessages; - -use crate::metrics::Metrics; -use crate::tests::mock::get_valid_chunk_data; -use super::*; - -#[test] -fn task_can_be_canceled() { - let (task, _rx) = get_test_running_task(); - let (handle, kill) = oneshot::channel(); - std::mem::drop(handle); - let running_task = task.run(kill); - futures::pin_mut!(running_task); - let waker = noop_waker(); - let mut ctx = Context::from_waker(&waker); - assert!(running_task.poll(&mut ctx) == Poll::Ready(()), "Task is immediately finished"); -} - -/// Make sure task won't accept a chunk that has is invalid. -#[test] -fn task_does_not_accept_invalid_chunk() { - let (mut task, rx) = get_test_running_task(); - let validators = vec![Sr25519Keyring::Alice.public().into()]; - task.group = validators; - let test = TestRun { - chunk_responses: { - let mut m = HashMap::new(); - m.insert( - Recipient::Authority(Sr25519Keyring::Alice.public().into()), - ChunkFetchingResponse::Chunk( - v1::ChunkResponse { - chunk: vec![1,2,3], - proof: vec![vec![9,8,2], vec![2,3,4]], - } - ) - ); - m - }, - valid_chunks: HashSet::new(), - }; - test.run(task, rx); -} - -#[test] -fn task_stores_valid_chunk() { - let (mut task, rx) = get_test_running_task(); - let pov = PoV { - block_data: BlockData(vec![45, 46, 47]), - }; - let (root_hash, chunk) = get_valid_chunk_data(pov); - task.erasure_root = root_hash; - task.request.index = chunk.index; - - let validators = vec![Sr25519Keyring::Alice.public().into()]; - task.group = validators; - - let test = TestRun { - chunk_responses: { - let mut m = HashMap::new(); - m.insert( - Recipient::Authority(Sr25519Keyring::Alice.public().into()), - ChunkFetchingResponse::Chunk( - v1::ChunkResponse { - chunk: chunk.chunk.clone(), - proof: chunk.proof, - } - ) - ); - m - }, - valid_chunks: { - let mut s = HashSet::new(); - s.insert(chunk.chunk); - s - }, - }; - test.run(task, rx); -} - -#[test] -fn task_does_not_accept_wrongly_indexed_chunk() { - let (mut task, rx) = get_test_running_task(); - let pov = PoV { - block_data: BlockData(vec![45, 46, 47]), - }; - let (root_hash, chunk) = get_valid_chunk_data(pov); - task.erasure_root = root_hash; - task.request.index = ValidatorIndex(chunk.index.0+1); - - let validators = vec![Sr25519Keyring::Alice.public().into()]; - task.group = validators; - - let test = TestRun { - chunk_responses: { - let mut m = HashMap::new(); - m.insert( - Recipient::Authority(Sr25519Keyring::Alice.public().into()), - ChunkFetchingResponse::Chunk( - v1::ChunkResponse { - chunk: chunk.chunk.clone(), - proof: chunk.proof, - } - ) - ); - m - }, - valid_chunks: HashSet::new(), - }; - test.run(task, rx); -} - -/// Task stores chunk, if there is at least one validator having a valid chunk. -#[test] -fn task_stores_valid_chunk_if_there_is_one() { - let (mut task, rx) = get_test_running_task(); - let pov = PoV { - block_data: BlockData(vec![45, 46, 47]), - }; - let (root_hash, chunk) = get_valid_chunk_data(pov); - task.erasure_root = root_hash; - task.request.index = chunk.index; - - let validators = [ - // Only Alice has valid chunk - should succeed, even though she is tried last. - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, Sr25519Keyring::Eve, - ] - .iter().map(|v| v.public().into()).collect::>(); - task.group = validators; - - let test = TestRun { - chunk_responses: { - let mut m = HashMap::new(); - m.insert( - Recipient::Authority(Sr25519Keyring::Alice.public().into()), - ChunkFetchingResponse::Chunk( - v1::ChunkResponse { - chunk: chunk.chunk.clone(), - proof: chunk.proof, - } - ) - ); - m.insert( - Recipient::Authority(Sr25519Keyring::Bob.public().into()), - ChunkFetchingResponse::NoSuchChunk - ); - m.insert( - Recipient::Authority(Sr25519Keyring::Charlie.public().into()), - ChunkFetchingResponse::Chunk( - v1::ChunkResponse { - chunk: vec![1,2,3], - proof: vec![vec![9,8,2], vec![2,3,4]], - } - ) - ); - - m - }, - valid_chunks: { - let mut s = HashSet::new(); - s.insert(chunk.chunk); - s - }, - }; - test.run(task, rx); -} - -struct TestRun { - /// Response to deliver for a given validator index. - /// None means, answer with NetworkError. - chunk_responses: HashMap, - /// Set of chunks that should be considered valid: - valid_chunks: HashSet>, -} - - -impl TestRun { - fn run(self, task: RunningTask, rx: mpsc::Receiver) { - sp_tracing::try_init_simple(); - let mut rx = rx.fuse(); - let task = task.run_inner().fuse(); - futures::pin_mut!(task); - executor::block_on(async { - let mut end_ok = false; - loop { - let msg = select!( - from_task = rx.next() => { - match from_task { - Some(msg) => msg, - None => break, - } - }, - () = task => - break, - ); - match msg { - FromFetchTask::Concluded(_) => break, - FromFetchTask::Failed(_) => break, - FromFetchTask::Message(msg) => - end_ok = self.handle_message(msg).await, - } - } - if !end_ok { - panic!("Task ended prematurely (failed to store valid chunk)!"); - } - }); - } - - /// Returns true, if after processing of the given message it would be ok for the stream to - /// end. - async fn handle_message(&self, msg: AllMessages) -> bool { - match msg { - AllMessages::NetworkBridge(NetworkBridgeMessage::SendRequests(reqs, IfDisconnected::TryConnect)) => { - let mut valid_responses = 0; - for req in reqs { - let req = match req { - Requests::ChunkFetching(req) => req, - _ => panic!("Unexpected request"), - }; - let response = self.chunk_responses.get(&req.peer) - .ok_or(network::RequestFailure::Refused); - - if let Ok(ChunkFetchingResponse::Chunk(resp)) = &response { - if self.valid_chunks.contains(&resp.chunk) { - valid_responses += 1; - } - } - req.pending_response.send(response.map(Encode::encode)) - .expect("Sending response should succeed"); - } - return (valid_responses == 0) && self.valid_chunks.is_empty() - } - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreChunk { chunk, tx, .. } - ) => { - assert!(self.valid_chunks.contains(&chunk.chunk)); - tx.send(Ok(())).expect("Answering fetching task should work"); - return true - } - _ => { - tracing::debug!(target: LOG_TARGET, "Unexpected message"); - return false - } - } - } -} - -/// Get a `RunningTask` filled with dummy values. -fn get_test_running_task() -> (RunningTask, mpsc::Receiver) { - let (tx,rx) = mpsc::channel(0); - - ( - RunningTask { - session_index: 0, - group_index: GroupIndex(0), - group: Vec::new(), - request: ChunkFetchingRequest { - candidate_hash: CandidateHash([43u8;32].into()), - index: ValidatorIndex(0), - }, - erasure_root: Hash::repeat_byte(99), - relay_parent: Hash::repeat_byte(71), - sender: tx, - metrics: Metrics::new_dummy(), - span: jaeger::Span::Disabled, - }, - rx - ) -} - diff --git a/node/network/availability-distribution/src/requester/mod.rs b/node/network/availability-distribution/src/requester/mod.rs deleted file mode 100644 index 8e6f1451c60f..000000000000 --- a/node/network/availability-distribution/src/requester/mod.rs +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Requester takes care of requesting erasure chunks for candidates that are pending -//! availability. - -use std::collections::{ - hash_map::{Entry, HashMap}, - hash_set::HashSet, -}; -use std::iter::IntoIterator; -use std::pin::Pin; - -use futures::{ - channel::mpsc, - task::{Context, Poll}, - Stream, -}; - -use polkadot_node_subsystem_util::runtime::{RuntimeInfo, get_occupied_cores}; -use polkadot_primitives::v1::{CandidateHash, Hash, OccupiedCore}; -use polkadot_subsystem::{ - messages::AllMessages, ActiveLeavesUpdate, SubsystemContext, ActivatedLeaf, -}; - -use super::{LOG_TARGET, Metrics}; - -/// Cache for session information. -mod session_cache; -use session_cache::SessionCache; - - -/// A task fetching a particular chunk. -mod fetch_task; -use fetch_task::{FetchTask, FetchTaskConfig, FromFetchTask}; - -/// Requester takes care of requesting erasure chunks from backing groups and stores them in the -/// av store. -/// -/// It implements a stream that needs to be advanced for it making progress. -pub struct Requester { - /// Candidates we need to fetch our chunk for. - /// - /// We keep those around as long as a candidate is pending availability on some leaf, so we - /// won't fetch chunks multiple times. - /// - /// We remove them on failure, so we get retries on the next block still pending availability. - fetches: HashMap, - - /// Localized information about sessions we are currently interested in. - session_cache: SessionCache, - - /// Sender to be cloned for `FetchTask`s. - tx: mpsc::Sender, - - /// Receive messages from `FetchTask`. - rx: mpsc::Receiver, - - /// Prometheus Metrics - metrics: Metrics, -} - -impl Requester { - /// Create a new `Requester`. - /// - /// You must feed it with `ActiveLeavesUpdate` via `update_fetching_heads` and make it progress - /// by advancing the stream. - pub fn new(metrics: Metrics) -> Self { - let (tx, rx) = mpsc::channel(1); - Requester { - fetches: HashMap::new(), - session_cache: SessionCache::new(), - tx, - rx, - metrics, - } - } - /// Update heads that need availability distribution. - /// - /// For all active heads we will be fetching our chunks for availability distribution. - pub async fn update_fetching_heads( - &mut self, - ctx: &mut Context, - runtime: &mut RuntimeInfo, - update: ActiveLeavesUpdate, - ) -> super::Result<()> - where - Context: SubsystemContext, - { - tracing::trace!( - target: LOG_TARGET, - ?update, - "Update fetching heads" - ); - let ActiveLeavesUpdate { - activated, - deactivated, - } = update; - // Order important! We need to handle activated, prior to deactivated, otherwise we might - // cancel still needed jobs. - self.start_requesting_chunks(ctx, runtime, activated.into_iter()).await?; - self.stop_requesting_chunks(deactivated.into_iter()); - Ok(()) - } - - /// Start requesting chunks for newly imported heads. - async fn start_requesting_chunks( - &mut self, - ctx: &mut Context, - runtime: &mut RuntimeInfo, - new_heads: impl Iterator, - ) -> super::Result<()> - where - Context: SubsystemContext, - { - for ActivatedLeaf { hash: leaf, .. } in new_heads { - let cores = get_occupied_cores(ctx, leaf).await?; - tracing::trace!( - target: LOG_TARGET, - occupied_cores = ?cores, - "Query occupied core" - ); - self.add_cores(ctx, runtime, leaf, cores).await?; - } - Ok(()) - } - - /// Stop requesting chunks for obsolete heads. - /// - fn stop_requesting_chunks(&mut self, obsolete_leaves: impl Iterator) { - let obsolete_leaves: HashSet<_> = obsolete_leaves.collect(); - self.fetches.retain(|_, task| { - task.remove_leaves(&obsolete_leaves); - task.is_live() - }) - } - - /// Add candidates corresponding for a particular relay parent. - /// - /// Starting requests where necessary. - /// - /// Note: The passed in `leaf` is not the same as CandidateDescriptor::relay_parent in the - /// given cores. The latter is the relay_parent this candidate considers its parent, while the - /// passed in leaf might be some later block where the candidate is still pending availability. - async fn add_cores( - &mut self, - ctx: &mut Context, - runtime: &mut RuntimeInfo, - leaf: Hash, - cores: impl IntoIterator, - ) -> super::Result<()> - where - Context: SubsystemContext, - { - for core in cores { - match self.fetches.entry(core.candidate_hash) { - Entry::Occupied(mut e) => - // Just book keeping - we are already requesting that chunk: - { - e.get_mut().add_leaf(leaf); - } - Entry::Vacant(e) => { - let tx = self.tx.clone(); - let metrics = self.metrics.clone(); - - let task_cfg = self - .session_cache - .with_session_info( - ctx, - runtime, - // We use leaf here, as relay_parent must be in the same session as the - // leaf. (Cores are dropped at session boundaries.) At the same time, - // only leaves are guaranteed to be fetchable by the state trie. - leaf, - |info| FetchTaskConfig::new(leaf, &core, tx, metrics, info), - ) - .await?; - - if let Some(task_cfg) = task_cfg { - e.insert(FetchTask::start(task_cfg, ctx).await?); - } - // Not a validator, nothing to do. - } - } - } - Ok(()) - } -} - -impl Stream for Requester { - type Item = AllMessages; - - fn poll_next( - mut self: Pin<&mut Self>, - ctx: &mut Context, - ) -> Poll> { - loop { - match Pin::new(&mut self.rx).poll_next(ctx) { - Poll::Ready(Some(FromFetchTask::Message(m))) => - return Poll::Ready(Some(m)), - Poll::Ready(Some(FromFetchTask::Concluded(Some(bad_boys)))) => { - self.session_cache.report_bad_log(bad_boys); - continue - } - Poll::Ready(Some(FromFetchTask::Concluded(None))) => - continue, - Poll::Ready(Some(FromFetchTask::Failed(candidate_hash))) => { - // Make sure we retry on next block still pending availability. - self.fetches.remove(&candidate_hash); - } - Poll::Ready(None) => - return Poll::Ready(None), - Poll::Pending => - return Poll::Pending, - } - } - } -} - diff --git a/node/network/availability-distribution/src/requester/session_cache.rs b/node/network/availability-distribution/src/requester/session_cache.rs deleted file mode 100644 index a7e1d69d78fd..000000000000 --- a/node/network/availability-distribution/src/requester/session_cache.rs +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashSet; - -use lru::LruCache; -use rand::{seq::SliceRandom, thread_rng}; - -use polkadot_node_subsystem_util::runtime::RuntimeInfo; -use polkadot_primitives::v1::{ - AuthorityDiscoveryId, GroupIndex, Hash, SessionIndex, ValidatorIndex, -}; -use polkadot_subsystem::SubsystemContext; - -use crate::{ - error::{Error, NonFatal}, - LOG_TARGET, -}; - -/// Caching of session info as needed by availability chunk distribution. -/// -/// It should be ensured that a cached session stays live in the cache as long as we might need it. -pub struct SessionCache { - - /// Look up cached sessions by SessionIndex. - /// - /// Note: Performance of fetching is really secondary here, but we need to ensure we are going - /// to get any existing cache entry, before fetching new information, as we should not mess up - /// the order of validators in `SessionInfo::validator_groups`. - session_info_cache: LruCache, -} - -/// Localized session information, tailored for the needs of availability distribution. -#[derive(Clone)] -pub struct SessionInfo { - /// The index of this session. - pub session_index: SessionIndex, - - /// Validator groups of the current session. - /// - /// Each group's order is randomized. This way we achieve load balancing when requesting - /// chunks, as the validators in a group will be tried in that randomized order. Each node - /// should arrive at a different order, therefore we distribute the load on individual - /// validators. - pub validator_groups: Vec>, - - /// Information about ourself: - pub our_index: ValidatorIndex, - - /// Remember to which group we belong, so we won't start fetching chunks for candidates with - /// our group being responsible. (We should have that chunk already.) - /// - /// `None`, if we are not in fact part of any group. - pub our_group: Option, -} - -/// Report of bad validators. -/// -/// Fetching tasks will report back validators that did not respond as expected, so we can re-order -/// them. -pub struct BadValidators { - /// The session index that was used. - pub session_index: SessionIndex, - /// The group, the not properly responding validators belong to. - pub group_index: GroupIndex, - /// The list of bad validators. - pub bad_validators: Vec, -} - -impl SessionCache { - /// Create a new `SessionCache`. - pub fn new() -> Self { - SessionCache { - // We need to cache the current and the last session the most: - session_info_cache: LruCache::new(2), - } - } - - /// Tries to retrieve `SessionInfo` and calls `with_info` if successful. - /// - /// If this node is not a validator, the function will return `None`. - /// - /// Use this function over any `fetch_session_info` if all you need is a reference to - /// `SessionInfo`, as it avoids an expensive clone. - pub async fn with_session_info( - &mut self, - ctx: &mut Context, - runtime: &mut RuntimeInfo, - parent: Hash, - with_info: F, - ) -> Result, Error> - where - Context: SubsystemContext, - F: FnOnce(&SessionInfo) -> R, - { - let session_index = runtime.get_session_index(ctx, parent).await?; - - if let Some(o_info) = self.session_info_cache.get(&session_index) { - tracing::trace!(target: LOG_TARGET, session_index, "Got session from lru"); - return Ok(Some(with_info(o_info))); - } - - if let Some(info) = self - .query_info_from_runtime(ctx, runtime, parent, session_index) - .await? - { - tracing::trace!(target: LOG_TARGET, session_index, "Calling `with_info`"); - let r = with_info(&info); - tracing::trace!(target: LOG_TARGET, session_index, "Storing session info in lru!"); - self.session_info_cache.put(session_index, info); - Ok(Some(r)) - } else { - Ok(None) - } - } - - /// Variant of `report_bad` that never fails, but just logs errors. - /// - /// Not being able to report bad validators is not fatal, so we should not shutdown the - /// subsystem on this. - pub fn report_bad_log(&mut self, report: BadValidators) { - if let Err(err) = self.report_bad(report) { - tracing::warn!( - target: LOG_TARGET, - err = ?err, - "Reporting bad validators failed with error" - ); - } - } - - /// Make sure we try unresponsive or misbehaving validators last. - /// - /// We assume validators in a group are tried in reverse order, so the reported bad validators - /// will be put at the beginning of the group. - pub fn report_bad(&mut self, report: BadValidators) -> crate::Result<()> { - let session = self - .session_info_cache - .get_mut(&report.session_index) - .ok_or(NonFatal::NoSuchCachedSession)?; - let group = session - .validator_groups - .get_mut(report.group_index.0 as usize) - .expect("A bad validator report must contain a valid group for the reported session. qed."); - let bad_set = report.bad_validators.iter().collect::>(); - - // Get rid of bad boys: - group.retain(|v| !bad_set.contains(v)); - - // We are trying validators in reverse order, so bad ones should be first: - let mut new_group = report.bad_validators; - new_group.append(group); - *group = new_group; - Ok(()) - } - - /// Query needed information from runtime. - /// - /// We need to pass in the relay parent for our call to `request_session_info`. We should - /// actually don't need that: I suppose it is used for internal caching based on relay parents, - /// which we don't use here. It should not do any harm though. - /// - /// Returns: `None` if not a validator. - async fn query_info_from_runtime( - &self, - ctx: &mut Context, - runtime: &mut RuntimeInfo, - parent: Hash, - session_index: SessionIndex, - ) -> Result, Error> - where - Context: SubsystemContext, - { - let info = runtime.get_session_info_by_index(ctx, parent, session_index).await?; - - let discovery_keys = info.session_info.discovery_keys.clone(); - let mut validator_groups = info.session_info.validator_groups.clone(); - - if let Some(our_index) = info.validator_info.our_index { - // Get our group index: - let our_group = info.validator_info.our_group; - - // Shuffle validators in groups: - let mut rng = thread_rng(); - for g in validator_groups.iter_mut() { - g.shuffle(&mut rng) - } - // Look up `AuthorityDiscoveryId`s right away: - let validator_groups: Vec> = validator_groups - .into_iter() - .map(|group| { - group - .into_iter() - .map(|index| { - discovery_keys.get(index.0 as usize) - .expect("There should be a discovery key for each validator of each validator group. qed.") - .clone() - }) - .collect() - }) - .collect(); - - let info = SessionInfo { - validator_groups, - our_index, - session_index, - our_group, - }; - return Ok(Some(info)) - } - return Ok(None) - } -} diff --git a/node/network/availability-distribution/src/responder.rs b/node/network/availability-distribution/src/responder.rs deleted file mode 100644 index 9a20510eb354..000000000000 --- a/node/network/availability-distribution/src/responder.rs +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Answer requests for availability chunks. - -use std::sync::Arc; - -use futures::channel::oneshot; - -use polkadot_node_network_protocol::request_response::{request::IncomingRequest, v1}; -use polkadot_primitives::v1::{CandidateHash, ValidatorIndex}; -use polkadot_node_primitives::{AvailableData, ErasureChunk}; -use polkadot_subsystem::{ - messages::{AllMessages, AvailabilityStoreMessage}, - SubsystemContext, jaeger, -}; - -use crate::error::{NonFatal, Result}; -use crate::{LOG_TARGET, metrics::{Metrics, SUCCEEDED, FAILED, NOT_FOUND}}; - -/// Variant of `answer_pov_request` that does Prometheus metric and logging on errors. -/// -/// Any errors of `answer_pov_request` will simply be logged. -pub async fn answer_pov_request_log( - ctx: &mut Context, - req: IncomingRequest, - metrics: &Metrics, -) -where - Context: SubsystemContext, -{ - let res = answer_pov_request(ctx, req).await; - match res { - Ok(result) => - metrics.on_served_pov(if result {SUCCEEDED} else {NOT_FOUND}), - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - err= ?err, - "Serving PoV failed with error" - ); - metrics.on_served_pov(FAILED); - } - } -} - -/// Variant of `answer_chunk_request` that does Prometheus metric and logging on errors. -/// -/// Any errors of `answer_request` will simply be logged. -pub async fn answer_chunk_request_log( - ctx: &mut Context, - req: IncomingRequest, - metrics: &Metrics, -) -> () -where - Context: SubsystemContext, -{ - let res = answer_chunk_request(ctx, req).await; - match res { - Ok(result) => - metrics.on_served_chunk(if result {SUCCEEDED} else {NOT_FOUND}), - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - err= ?err, - "Serving chunk failed with error" - ); - metrics.on_served_chunk(FAILED); - } - } -} - -/// Answer an incoming PoV fetch request by querying the av store. -/// -/// Returns: Ok(true) if chunk was found and served. -pub async fn answer_pov_request( - ctx: &mut Context, - req: IncomingRequest, -) -> Result -where - Context: SubsystemContext, -{ - let _span = jaeger::Span::new(req.payload.candidate_hash, "answer-pov-request"); - - let av_data = query_available_data(ctx, req.payload.candidate_hash).await?; - - let result = av_data.is_some(); - - let response = match av_data { - None => v1::PoVFetchingResponse::NoSuchPoV, - Some(av_data) => { - let pov = Arc::try_unwrap(av_data.pov).unwrap_or_else(|a| (&*a).clone()); - v1::PoVFetchingResponse::PoV(pov) - } - }; - - req.send_response(response).map_err(|_| NonFatal::SendResponse)?; - Ok(result) -} - -/// Answer an incoming chunk request by querying the av store. -/// -/// Returns: Ok(true) if chunk was found and served. -pub async fn answer_chunk_request( - ctx: &mut Context, - req: IncomingRequest, -) -> Result -where - Context: SubsystemContext, -{ - let span = jaeger::Span::new(req.payload.candidate_hash, "answer-chunk-request"); - - let _child_span = span.child("answer-chunk-request") - .with_chunk_index(req.payload.index.0); - - let chunk = query_chunk(ctx, req.payload.candidate_hash, req.payload.index).await?; - - let result = chunk.is_some(); - - tracing::trace!( - target: LOG_TARGET, - hash = ?req.payload.candidate_hash, - index = ?req.payload.index, - peer = ?req.peer, - has_data = ?chunk.is_some(), - "Serving chunk", - ); - - let response = match chunk { - None => v1::ChunkFetchingResponse::NoSuchChunk, - Some(chunk) => v1::ChunkFetchingResponse::Chunk(chunk.into()), - }; - - req.send_response(response).map_err(|_| NonFatal::SendResponse)?; - Ok(result) -} - -/// Query chunk from the availability store. -async fn query_chunk( - ctx: &mut Context, - candidate_hash: CandidateHash, - validator_index: ValidatorIndex, -) -> Result> -where - Context: SubsystemContext, -{ - let (tx, rx) = oneshot::channel(); - ctx.send_message(AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryChunk(candidate_hash, validator_index, tx), - )) - .await; - - let result = rx.await.map_err(|e| { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?candidate_hash, - error = ?e, - "Error retrieving chunk", - ); - NonFatal::QueryChunkResponseChannel(e) - })?; - Ok(result) -} - -/// Query PoV from the availability store. -async fn query_available_data( - ctx: &mut Context, - candidate_hash: CandidateHash, -) -> Result> -where - Context: SubsystemContext, -{ - let (tx, rx) = oneshot::channel(); - ctx.send_message(AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryAvailableData(candidate_hash, tx), - )) - .await; - - let result = rx.await.map_err(|e| NonFatal::QueryAvailableDataResponseChannel(e))?; - Ok(result) -} diff --git a/node/network/availability-distribution/src/tests/mock.rs b/node/network/availability-distribution/src/tests/mock.rs deleted file mode 100644 index 6ba0973400db..000000000000 --- a/node/network/availability-distribution/src/tests/mock.rs +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - - -//! Helper functions and tools to generate mock data useful for testing this subsystem. - -use std::sync::Arc; - -use sc_keystore::LocalKeystore; -use sp_keyring::Sr25519Keyring; -use sp_application_crypto::AppKey; - -use polkadot_erasure_coding::{branches, obtain_chunks_v1 as obtain_chunks}; -use polkadot_primitives::v1::{ - CandidateCommitments, CandidateDescriptor, CandidateHash, - CommittedCandidateReceipt, GroupIndex, Hash, HeadData, Id as ParaId, - OccupiedCore, PersistedValidationData, SessionInfo, ValidatorId, ValidatorIndex -}; -use polkadot_node_primitives::{PoV, ErasureChunk, AvailableData, BlockData}; -use sp_keystore::{SyncCryptoStore, SyncCryptoStorePtr}; - -/// Get mock keystore with `Ferdie` key. -pub fn make_ferdie_keystore() -> SyncCryptoStorePtr { - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - SyncCryptoStore::sr25519_generate_new( - &*keystore, - ValidatorId::ID, - Some(&Sr25519Keyring::Ferdie.to_seed()), - ) - .expect("Insert key into keystore"); - keystore -} - -/// Create dummy session info with two validator groups. -pub fn make_session_info() -> SessionInfo { - let validators = vec![ - Sr25519Keyring::Ferdie, // <- this node, role: validator - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Eve, - Sr25519Keyring::One, - ]; - - let validator_groups: Vec> = [vec![5, 0, 3], vec![1, 6, 2, 4]] - .iter().map(|g| g.into_iter().map(|v| ValidatorIndex(*v)).collect()).collect(); - - SessionInfo { - discovery_keys: validators.iter().map(|k| k.public().into()).collect(), - // Not used: - n_cores: validator_groups.len() as u32, - validator_groups, - // Not used values: - validators: validators.iter().map(|k| k.public().into()).collect(), - assignment_keys: Vec::new(), - zeroth_delay_tranche_width: 0, - relay_vrf_modulo_samples: 0, - n_delay_tranches: 0, - no_show_slots: 0, - needed_approvals: 0, - } -} - -/// Builder for constructing occupied cores. -/// -/// Takes all the values we care about and fills the rest with dummy values on `build`. -pub struct OccupiedCoreBuilder { - pub group_responsible: GroupIndex, - pub para_id: ParaId, - pub relay_parent: Hash, -} - -impl OccupiedCoreBuilder { - pub fn build(self) -> (OccupiedCore, (CandidateHash, ErasureChunk)) { - let pov = PoV { - block_data: BlockData(vec![45, 46, 47]), - }; - let pov_hash = pov.hash(); - let (erasure_root, chunk) = get_valid_chunk_data(pov.clone()); - let candidate_receipt = TestCandidateBuilder { - para_id: self.para_id, - pov_hash, - relay_parent: self.relay_parent, - erasure_root, - ..Default::default() - }.build(); - let core = OccupiedCore { - next_up_on_available: None, - occupied_since: 0, - time_out_at: 0, - next_up_on_time_out: None, - availability: Default::default(), - group_responsible: self.group_responsible, - candidate_hash: candidate_receipt.hash(), - candidate_descriptor: candidate_receipt.descriptor().clone(), - }; - (core, (candidate_receipt.hash(), chunk)) - } -} - -#[derive(Default)] -pub struct TestCandidateBuilder { - para_id: ParaId, - head_data: HeadData, - pov_hash: Hash, - relay_parent: Hash, - erasure_root: Hash, -} - -impl TestCandidateBuilder { - pub fn build(self) -> CommittedCandidateReceipt { - CommittedCandidateReceipt { - descriptor: CandidateDescriptor { - para_id: self.para_id, - pov_hash: self.pov_hash, - relay_parent: self.relay_parent, - erasure_root: self.erasure_root, - ..Default::default() - }, - commitments: CandidateCommitments { - head_data: self.head_data, - ..Default::default() - }, - } - } -} - -// Get chunk for index 0 -pub fn get_valid_chunk_data(pov: PoV) -> (Hash, ErasureChunk) { - let fake_validator_count = 10; - let persisted = PersistedValidationData { - parent_head: HeadData(vec![7, 8, 9]), - relay_parent_number: Default::default(), - max_pov_size: 1024, - relay_parent_storage_root: Default::default(), - }; - let available_data = AvailableData { - validation_data: persisted, pov: Arc::new(pov), - }; - let chunks = obtain_chunks(fake_validator_count, &available_data).unwrap(); - let branches = branches(chunks.as_ref()); - let root = branches.root(); - let chunk = branches.enumerate() - .map(|(index, (proof, chunk))| ErasureChunk { - chunk: chunk.to_vec(), - index: ValidatorIndex(index as _), - proof, - }) - .next().expect("There really should be 10 chunks."); - (root, chunk) -} diff --git a/node/network/availability-distribution/src/tests/mod.rs b/node/network/availability-distribution/src/tests/mod.rs deleted file mode 100644 index b914a0cc0ba3..000000000000 --- a/node/network/availability-distribution/src/tests/mod.rs +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashSet; - -use futures::{executor, future, Future}; - -use polkadot_primitives::v1::CoreState; -use sp_keystore::SyncCryptoStorePtr; - -use polkadot_subsystem_testhelpers as test_helpers; - -use super::*; - -mod state; -/// State for test harnesses. -use state::{TestState, TestHarness}; - -/// Mock data useful for testing. -pub(crate) mod mock; - -fn test_harness>( - keystore: SyncCryptoStorePtr, - test_fx: impl FnOnce(TestHarness) -> T, -) { - sp_tracing::try_init_simple(); - - let pool = sp_core::testing::TaskExecutor::new(); - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = AvailabilityDistributionSubsystem::new(keystore, Default::default()); - { - let subsystem = subsystem.run(context); - - let test_fut = test_fx(TestHarness { virtual_overseer, pool }); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(test_fut, subsystem)).1.unwrap(); - } -} - -/// Simple basic check, whether the subsystem works as expected. -/// -/// Exceptional cases are tested as unit tests in `fetch_task`. -#[test] -fn check_basic() { - let state = TestState::default(); - test_harness(state.keystore.clone(), move |harness| { - state.run(harness) - }); -} - -/// Check whether requester tries all validators in group. -#[test] -fn check_fetch_tries_all() { - let mut state = TestState::default(); - for (_, v) in state.chunks.iter_mut() { - // 4 validators in group, so this should still succeed: - v.push(None); - v.push(None); - v.push(None); - } - test_harness(state.keystore.clone(), move |harness| { - state.run(harness) - }); -} - -/// Check whether requester tries all validators in group -/// -/// Check that requester will retry the fetch on error on the next block still pending -/// availability. -#[test] -fn check_fetch_retry() { - let mut state = TestState::default(); - state.cores.insert( - state.relay_chain[2], - state.cores.get(&state.relay_chain[1]).unwrap().clone(), - ); - // We only care about the first three blocks. - // 1. scheduled - // 2. occupied - // 3. still occupied - state.relay_chain.truncate(3); - - // Get rid of unused valid chunks: - let valid_candidate_hashes: HashSet<_> = state.cores - .get(&state.relay_chain[1]) - .iter() - .flat_map(|v| v.iter()) - .filter_map(|c| { - match c { - CoreState::Occupied(core) => Some(core.candidate_hash), - _ => None, - } - }) - .collect(); - state.valid_chunks.retain(|(ch, _)| valid_candidate_hashes.contains(ch)); - - - for (_, v) in state.chunks.iter_mut() { - // This should still succeed as cores are still pending availability on next block. - v.push(None); - v.push(None); - v.push(None); - v.push(None); - v.push(None); - } - test_harness(state.keystore.clone(), move |harness| { - state.run(harness) - }); -} diff --git a/node/network/availability-distribution/src/tests/state.rs b/node/network/availability-distribution/src/tests/state.rs deleted file mode 100644 index 11680c38b91e..000000000000 --- a/node/network/availability-distribution/src/tests/state.rs +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::{collections::{HashMap, HashSet}, sync::Arc, time::Duration}; - -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_subsystem_testhelpers::TestSubsystemContextHandle; -use smallvec::smallvec; - -use futures::{FutureExt, channel::oneshot, SinkExt, channel::mpsc, StreamExt}; -use futures_timer::Delay; - -use sp_keystore::SyncCryptoStorePtr; -use sp_core::{traits::SpawnNamed, testing::TaskExecutor}; -use sc_network as network; -use sc_network::IfDisconnected; -use sc_network::config as netconfig; - -use polkadot_subsystem::{ - ActiveLeavesUpdate, FromOverseer, OverseerSignal, ActivatedLeaf, LeafStatus, - messages::{ - AllMessages, AvailabilityDistributionMessage, AvailabilityStoreMessage, NetworkBridgeMessage, - RuntimeApiMessage, RuntimeApiRequest, - } -}; -use polkadot_primitives::v1::{CandidateHash, CoreState, GroupIndex, Hash, Id - as ParaId, ScheduledCore, SessionInfo, - ValidatorIndex -}; -use polkadot_node_primitives::ErasureChunk; -use polkadot_node_network_protocol::{ - jaeger, - request_response::{IncomingRequest, OutgoingRequest, Requests, v1} -}; -use polkadot_subsystem_testhelpers as test_helpers; -use test_helpers::SingleItemSink; - -use super::mock::{make_session_info, OccupiedCoreBuilder, make_ferdie_keystore}; -use crate::LOG_TARGET; - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; -pub struct TestHarness { - pub virtual_overseer: VirtualOverseer, - pub pool: TaskExecutor, -} - -/// TestState for mocking execution of this subsystem. -/// -/// The `Default` instance provides data, which makes the system succeed by providing a couple of -/// valid occupied cores. You can tune the data before calling `TestState::run`. E.g. modify some -/// chunks to be invalid, the test will then still pass if you remove that chunk from -/// `valid_chunks`. -#[derive(Clone)] -pub struct TestState { - /// Simulated relay chain heads: - pub relay_chain: Vec, - /// Whenever the subsystem tries to fetch an erasure chunk one item of the given vec will be - /// popped. So you can experiment with serving invalid chunks or no chunks on request and see - /// whether the subsystem still succeeds with its goal. - pub chunks: HashMap<(CandidateHash, ValidatorIndex), Vec>>, - /// All chunks that are valid and should be accepted. - pub valid_chunks: HashSet<(CandidateHash, ValidatorIndex)>, - pub session_info: SessionInfo, - /// Cores per relay chain block. - pub cores: HashMap>, - pub keystore: SyncCryptoStorePtr, -} - -impl Default for TestState { - fn default() -> Self { - let relay_chain: Vec<_> = (1u8..10).map(Hash::repeat_byte).collect(); - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - let chain_ids = vec![chain_a, chain_b]; - - let keystore = make_ferdie_keystore(); - - let session_info = make_session_info(); - - let (cores, chunks) = { - let mut cores = HashMap::new(); - let mut chunks = HashMap::new(); - - cores.insert(relay_chain[0], - vec![ - CoreState::Scheduled(ScheduledCore { - para_id: chain_ids[0], - collator: None, - }), - CoreState::Scheduled(ScheduledCore { - para_id: chain_ids[1], - collator: None, - }), - ] - ); - - let heads = { - let mut advanced = relay_chain.iter(); - advanced.next(); - relay_chain.iter().zip(advanced) - }; - for (relay_parent, relay_child) in heads { - let (p_cores, p_chunks): (Vec<_>, Vec<_>) = chain_ids.iter().enumerate() - .map(|(i, para_id)| { - let (core, chunk) = OccupiedCoreBuilder { - group_responsible: GroupIndex(i as _), - para_id: *para_id, - relay_parent: relay_parent.clone(), - }.build(); - (CoreState::Occupied(core), chunk) - } - ) - .unzip(); - cores.insert(relay_child.clone(), p_cores); - // Skip chunks for our own group (won't get fetched): - let mut chunks_other_groups = p_chunks.into_iter(); - chunks_other_groups.next(); - for (validator_index, chunk) in chunks_other_groups { - chunks.insert((validator_index, chunk.index), vec![Some(chunk)]); - } - } - (cores, chunks) - }; - Self { - relay_chain, - valid_chunks: chunks.clone().keys().map(Clone::clone).collect(), - chunks, - session_info, - cores, - keystore, - } - } -} - -impl TestState { - - /// Run, but fail after some timeout. - pub async fn run(self, harness: TestHarness) { - // Make sure test won't run forever. - let f = self.run_inner(harness.pool, harness.virtual_overseer).timeout(Duration::from_secs(10)); - assert!(f.await.is_some(), "Test ran into timeout"); - } - - /// Run tests with the given mock values in `TestState`. - /// - /// This will simply advance through the simulated chain and examines whether the subsystem - /// behaves as expected: It will succeed if all valid chunks of other backing groups get stored - /// and no other. - /// - /// We try to be as agnostic about details as possible, how the subsystem achieves those goals - /// should not be a matter to this test suite. - async fn run_inner(mut self, executor: TaskExecutor, virtual_overseer: VirtualOverseer) { - // We skip genesis here (in reality ActiveLeavesUpdate can also skip a block: - let updates = { - let mut advanced = self.relay_chain.iter(); - advanced.next(); - self - .relay_chain.iter().zip(advanced) - .map(|(old, new)| ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: new.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![old.clone()], - }).collect::>() - }; - - // We should be storing all valid chunks during execution: - // - // Test will fail if this does not happen until timeout. - let mut remaining_stores = self.valid_chunks.len(); - - let TestSubsystemContextHandle { tx, mut rx } = virtual_overseer; - - // Spawning necessary as incoming queue can only hold a single item, we don't want to dead - // lock ;-) - let update_tx = tx.clone(); - executor.spawn("Sending active leaves updates", async move { - for update in updates { - overseer_signal( - update_tx.clone(), - OverseerSignal::ActiveLeaves(update) - ).await; - // We need to give the subsystem a little time to do its job, otherwise it will - // cancel jobs as obsolete: - Delay::new(Duration::from_millis(20)).await; - } - }.boxed()); - - while remaining_stores > 0 - { - tracing::trace!(target: LOG_TARGET, remaining_stores, "Stores left to go"); - let msg = overseer_recv(&mut rx).await; - match msg { - AllMessages::NetworkBridge(NetworkBridgeMessage::SendRequests(reqs, IfDisconnected::TryConnect)) => { - for req in reqs { - // Forward requests: - let in_req = to_incoming_req(&executor, req); - - executor.spawn( - "Request forwarding", - overseer_send( - tx.clone(), - AvailabilityDistributionMessage::ChunkFetchingRequest(in_req) - ).boxed() - ); - } - } - AllMessages::AvailabilityStore(AvailabilityStoreMessage::QueryChunk(candidate_hash, validator_index, tx)) => { - let chunk = self.chunks.get_mut(&(candidate_hash, validator_index)).map(Vec::pop).flatten().flatten(); - tx.send(chunk) - .expect("Receiver is expected to be alive"); - } - AllMessages::AvailabilityStore(AvailabilityStoreMessage::StoreChunk{candidate_hash, chunk, tx, ..}) => { - assert!( - self.valid_chunks.contains(&(candidate_hash, chunk.index)), - "Only valid chunks should ever get stored." - ); - tx.send(Ok(())) - .expect("Receiver is expected to be alive"); - tracing::trace!(target: LOG_TARGET, "'Stored' fetched chunk."); - remaining_stores -= 1; - } - AllMessages::RuntimeApi(RuntimeApiMessage::Request(hash, req)) => { - match req { - RuntimeApiRequest::SessionIndexForChild(tx) => { - // Always session index 1 for now: - tx.send(Ok(1)) - .expect("Receiver should still be alive"); - } - RuntimeApiRequest::SessionInfo(_, tx) => { - tx.send(Ok(Some(self.session_info.clone()))) - .expect("Receiver should be alive."); - } - RuntimeApiRequest::AvailabilityCores(tx) => { - tracing::trace!(target: LOG_TARGET, cores= ?self.cores[&hash], hash = ?hash, "Sending out cores for hash"); - tx.send(Ok(self.cores[&hash].clone())) - .expect("Receiver should still be alive"); - } - _ => { - panic!("Unexpected runtime request: {:?}", req); - } - } - } - _ => { - } - } - } - - overseer_signal(tx, OverseerSignal::Conclude).await; - } -} - -async fn overseer_signal( - mut tx: SingleItemSink>, - msg: impl Into, -) { - let msg = msg.into(); - tracing::trace!(target: LOG_TARGET, msg = ?msg, "sending message"); - tx.send(FromOverseer::Signal(msg)) - .await - .expect("Test subsystem no longer live"); -} - -async fn overseer_send( - mut tx: SingleItemSink>, - msg: impl Into, -) { - let msg = msg.into(); - tracing::trace!(target: LOG_TARGET, msg = ?msg, "sending message"); - tx.send(FromOverseer::Communication { msg }).await - .expect("Test subsystem no longer live"); - tracing::trace!(target: LOG_TARGET, "sent message"); -} - - -async fn overseer_recv( - rx: &mut mpsc::UnboundedReceiver, -) -> AllMessages { - tracing::trace!(target: LOG_TARGET, "waiting for message ..."); - rx.next().await.expect("Test subsystem no longer live") -} - -fn to_incoming_req( - executor: &TaskExecutor, - outgoing: Requests -) -> IncomingRequest { - match outgoing { - Requests::ChunkFetching(OutgoingRequest { payload, pending_response, .. }) => { - let (tx, rx): (oneshot::Sender, oneshot::Receiver<_>) - = oneshot::channel(); - executor.spawn("Message forwarding", async { - let response = rx.await; - let payload = response.expect("Unexpected canceled request").result; - pending_response.send(payload.map_err(|_| network::RequestFailure::Refused)) - .expect("Sending response is expected to work"); - }.boxed() - ); - - IncomingRequest::new( - // We don't really care: - network::PeerId::random(), - payload, - tx - ) - } - _ => panic!("Unexpected request!"), - } -} diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml deleted file mode 100644 index c88b9fd98cdb..000000000000 --- a/node/network/availability-recovery/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "polkadot-availability-recovery" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -lru = "0.6.1" -rand = "0.8.3" -thiserror = "1.0.21" -tracing = "0.1.26" - -polkadot-erasure-coding = { path = "../../../erasure-coding" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-network-protocol = { path = "../../network/protocol" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -[dev-dependencies] -assert_matches = "1.4.0" -env_logger = "0.8.4" -futures-timer = "3.0.2" -log = "0.4.11" -smallvec = "1.5.1" - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-subsystem-testhelpers = { package = "polkadot-node-subsystem-test-helpers", path = "../../subsystem-test-helpers" } diff --git a/node/network/availability-recovery/src/error.rs b/node/network/availability-recovery/src/error.rs deleted file mode 100644 index 50a596ba2ac4..000000000000 --- a/node/network/availability-recovery/src/error.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The `Error` and `Result` types used by the subsystem. - -use futures::channel::oneshot; -use thiserror::Error; - -/// Error type used by the Availability Recovery subsystem. -#[derive(Debug, Error)] -pub enum Error { - #[error(transparent)] - Subsystem(#[from] polkadot_subsystem::SubsystemError), - - #[error("failed to query full data from store")] - CanceledQueryFullData(#[source] oneshot::Canceled), - - #[error("failed to query session info")] - CanceledSessionInfo(#[source] oneshot::Canceled), - - #[error("failed to send response")] - CanceledResponseSender, - - #[error(transparent)] - Runtime(#[from] polkadot_subsystem::errors::RuntimeApiError), - - #[error(transparent)] - Erasure(#[from] polkadot_erasure_coding::Error), - - #[error(transparent)] - Util(#[from] polkadot_node_subsystem_util::Error), -} - -pub type Result = std::result::Result; diff --git a/node/network/availability-recovery/src/lib.rs b/node/network/availability-recovery/src/lib.rs deleted file mode 100644 index efd8d3712851..000000000000 --- a/node/network/availability-recovery/src/lib.rs +++ /dev/null @@ -1,817 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Availability Recovery Subsystem of Polkadot. - -#![warn(missing_docs)] - -use std::collections::{HashMap, VecDeque}; -use std::pin::Pin; - -use futures::{channel::oneshot, prelude::*, stream::FuturesUnordered}; -use futures::future::{BoxFuture, RemoteHandle, FutureExt}; -use futures::task::{Context, Poll}; -use lru::LruCache; -use rand::seq::SliceRandom; - -use polkadot_primitives::v1::{ - AuthorityDiscoveryId, CandidateReceipt, CandidateHash, - Hash, ValidatorId, ValidatorIndex, - SessionInfo, SessionIndex, BlakeTwo256, HashT, GroupIndex, BlockNumber, -}; -use polkadot_node_primitives::{ErasureChunk, AvailableData}; -use polkadot_subsystem::{ - SubsystemContext, SubsystemResult, SubsystemError, Subsystem, SpawnedSubsystem, FromOverseer, - OverseerSignal, ActiveLeavesUpdate, SubsystemSender, - errors::RecoveryError, - jaeger, - messages::{ - AvailabilityStoreMessage, AvailabilityRecoveryMessage, AllMessages, NetworkBridgeMessage, - }, -}; -use polkadot_node_network_protocol::{ - IfDisconnected, - request_response::{ - self as req_res, OutgoingRequest, Recipient, Requests, - request::RequestError, - }, -}; -use polkadot_node_subsystem_util::request_session_info; -use polkadot_erasure_coding::{branches, branch_hash, recovery_threshold, obtain_chunks_v1}; - -mod error; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::availability-recovery"; - -// How many parallel requests interaction should have going at once. -const N_PARALLEL: usize = 50; - -// Size of the LRU cache where we keep recovered data. -const LRU_SIZE: usize = 16; - -/// The Availability Recovery Subsystem. -pub struct AvailabilityRecoverySubsystem { - fast_path: bool, -} - -struct RequestFromBackersPhase { - // a random shuffling of the validators from the backing group which indicates the order - // in which we connect to them and request the chunk. - shuffled_backers: Vec, -} - -struct RequestChunksPhase { - // a random shuffling of the validators which indicates the order in which we connect to the validators and - // request the chunk from them. - shuffling: VecDeque, - received_chunks: HashMap, - requesting_chunks: FuturesUnordered, (ValidatorIndex, RequestError)>>, - >, -} - -struct InteractionParams { - /// Discovery ids of `validators`. - validator_authority_keys: Vec, - - /// Validators relevant to this `Interaction`. - validators: Vec, - - /// The number of pieces needed. - threshold: usize, - - /// A hash of the relevant candidate. - candidate_hash: CandidateHash, - - /// The root of the erasure encoding of the para block. - erasure_root: Hash, -} - -enum InteractionPhase { - RequestFromBackers(RequestFromBackersPhase), - RequestChunks(RequestChunksPhase), -} - -/// A state of a single interaction reconstructing an available data. -struct Interaction { - sender: S, - - /// The parameters of the interaction. - params: InteractionParams, - - /// The phase of the interaction. - phase: InteractionPhase, -} - -impl RequestFromBackersPhase { - fn new(mut backers: Vec) -> Self { - backers.shuffle(&mut rand::thread_rng()); - - RequestFromBackersPhase { - shuffled_backers: backers, - } - } - - // Run this phase to completion. - async fn run( - &mut self, - params: &InteractionParams, - sender: &mut impl SubsystemSender, - ) -> Result { - tracing::trace!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - erasure_root = ?params.erasure_root, - "Requesting from backers", - ); - loop { - // Pop the next backer, and proceed to next phase if we're out. - let validator_index = self.shuffled_backers.pop().ok_or_else(|| RecoveryError::Unavailable)?; - - // Request data. - let (req, res) = OutgoingRequest::new( - Recipient::Authority(params.validator_authority_keys[validator_index.0 as usize].clone()), - req_res::v1::AvailableDataFetchingRequest { candidate_hash: params.candidate_hash }, - ); - - sender.send_message(NetworkBridgeMessage::SendRequests( - vec![Requests::AvailableDataFetching(req)], - IfDisconnected::TryConnect, - ).into()).await; - - match res.await { - Ok(req_res::v1::AvailableDataFetchingResponse::AvailableData(data)) => { - if reconstructed_data_matches_root(params.validators.len(), ¶ms.erasure_root, &data) { - tracing::trace!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - "Received full data", - ); - - return Ok(data); - } else { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - ?validator_index, - "Invalid data response", - ); - - // it doesn't help to report the peer with req/res. - } - } - Ok(req_res::v1::AvailableDataFetchingResponse::NoSuchData) => {} - Err(e) => tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - ?validator_index, - err = ?e, - "Error fetching full available data." - ), - } - } - } -} - -impl RequestChunksPhase { - fn new(n_validators: u32) -> Self { - let mut shuffling: Vec<_> = (0..n_validators).map(ValidatorIndex).collect(); - shuffling.shuffle(&mut rand::thread_rng()); - - RequestChunksPhase { - shuffling: shuffling.into(), - received_chunks: HashMap::new(), - requesting_chunks: FuturesUnordered::new(), - } - } - - fn is_unavailable(&self, params: &InteractionParams) -> bool { - is_unavailable( - self.received_chunks.len(), - self.requesting_chunks.len(), - self.shuffling.len(), - params.threshold, - ) - } - - fn can_conclude(&self, params: &InteractionParams) -> bool { - self.received_chunks.len() >= params.threshold || self.is_unavailable(params) - } - - async fn launch_parallel_requests( - &mut self, - params: &InteractionParams, - sender: &mut impl SubsystemSender, - ) { - let max_requests = std::cmp::min(N_PARALLEL, params.threshold); - while self.requesting_chunks.len() < max_requests { - if let Some(validator_index) = self.shuffling.pop_back() { - let validator = params.validator_authority_keys[validator_index.0 as usize].clone(); - tracing::trace!( - target: LOG_TARGET, - ?validator, - ?validator_index, - candidate_hash = ?params.candidate_hash, - "Requesting chunk", - ); - - // Request data. - let raw_request = req_res::v1::ChunkFetchingRequest { - candidate_hash: params.candidate_hash, - index: validator_index, - }; - - let (req, res) = OutgoingRequest::new( - Recipient::Authority(validator), - raw_request.clone(), - ); - - sender.send_message(NetworkBridgeMessage::SendRequests( - vec![Requests::ChunkFetching(req)], - IfDisconnected::TryConnect, - ).into()).await; - - self.requesting_chunks.push(Box::pin(async move { - match res.await { - Ok(req_res::v1::ChunkFetchingResponse::Chunk(chunk)) - => Ok(Some(chunk.recombine_into_chunk(&raw_request))), - Ok(req_res::v1::ChunkFetchingResponse::NoSuchChunk) => Ok(None), - Err(e) => Err((validator_index, e)), - } - })); - } else { - break; - } - } - } - - async fn wait_for_chunks( - &mut self, - params: &InteractionParams, - ) { - // Wait for all current requests to conclude or time-out, or until we reach enough chunks. - while let Some(request_result) = self.requesting_chunks.next().await { - match request_result { - Ok(Some(chunk)) => { - // Check merkle proofs of any received chunks. - - let validator_index = chunk.index; - - if let Ok(anticipated_hash) = branch_hash( - ¶ms.erasure_root, - &chunk.proof, - chunk.index.0 as usize, - ) { - let erasure_chunk_hash = BlakeTwo256::hash(&chunk.chunk); - - if erasure_chunk_hash != anticipated_hash { - tracing::debug!( - target: LOG_TARGET, - ?validator_index, - "Merkle proof mismatch", - ); - } else { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - "Received valid chunk.", - ); - self.received_chunks.insert(validator_index, chunk); - } - } else { - tracing::debug!( - target: LOG_TARGET, - ?validator_index, - "Invalid Merkle proof", - ); - } - } - Ok(None) => {} - Err((validator_index, e)) => { - tracing::debug!( - target: LOG_TARGET, - err = ?e, - ?validator_index, - "Failure requesting chunk", - ); - - match e { - RequestError::InvalidResponse(_) => {} - RequestError::NetworkError(_) | RequestError::Canceled(_) => { - self.shuffling.push_front(validator_index); - } - } - } - } - - // Stop waiting for requests when we either can already recover the data - // or have gotten firm 'No' responses from enough validators. - if self.can_conclude(params) { break } - } - } - - async fn run( - &mut self, - params: &InteractionParams, - sender: &mut impl SubsystemSender, - ) -> Result { - // First query the store for any chunks we've got. - { - let (tx, rx) = oneshot::channel(); - sender.send_message( - AvailabilityStoreMessage::QueryAllChunks(params.candidate_hash, tx).into() - ).await; - - match rx.await { - Ok(chunks) => { - // This should either be length 1 or 0. If we had the whole data, - // we wouldn't have reached this stage. - let chunk_indices: Vec<_> = chunks.iter().map(|c| c.index).collect(); - self.shuffling.retain(|i| !chunk_indices.contains(i)); - - for chunk in chunks { - self.received_chunks.insert(chunk.index, chunk); - } - } - Err(oneshot::Canceled) => { - tracing::warn!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - "Failed to reach the availability store" - ); - } - } - } - - loop { - if self.is_unavailable(¶ms) { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - erasure_root = ?params.erasure_root, - received = %self.received_chunks.len(), - requesting = %self.requesting_chunks.len(), - n_validators = %params.validators.len(), - "Data recovery is not possible", - ); - - return Err(RecoveryError::Unavailable); - } - - self.launch_parallel_requests(params, sender).await; - self.wait_for_chunks(params).await; - - // If received_chunks has more than threshold entries, attempt to recover the data. - // If that fails, or a re-encoding of it doesn't match the expected erasure root, - // return Err(RecoveryError::Invalid) - if self.received_chunks.len() >= params.threshold { - return match polkadot_erasure_coding::reconstruct_v1( - params.validators.len(), - self.received_chunks.values().map(|c| (&c.chunk[..], c.index.0 as usize)), - ) { - Ok(data) => { - if reconstructed_data_matches_root(params.validators.len(), ¶ms.erasure_root, &data) { - tracing::trace!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - erasure_root = ?params.erasure_root, - "Data recovery complete", - ); - - Ok(data) - } else { - tracing::trace!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - erasure_root = ?params.erasure_root, - "Data recovery - root mismatch", - ); - - Err(RecoveryError::Invalid) - } - } - Err(err) => { - tracing::trace!( - target: LOG_TARGET, - candidate_hash = ?params.candidate_hash, - erasure_root = ?params.erasure_root, - ?err, - "Data recovery error ", - ); - - Err(RecoveryError::Invalid) - }, - }; - } - } - } -} - -const fn is_unavailable( - received_chunks: usize, - requesting_chunks: usize, - unrequested_validators: usize, - threshold: usize, -) -> bool { - received_chunks + requesting_chunks + unrequested_validators < threshold -} - -fn reconstructed_data_matches_root( - n_validators: usize, - expected_root: &Hash, - data: &AvailableData, -) -> bool { - let chunks = match obtain_chunks_v1(n_validators, data) { - Ok(chunks) => chunks, - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - err = ?e, - "Failed to obtain chunks", - ); - return false; - } - }; - - let branches = branches(&chunks); - - branches.root() == *expected_root -} - -impl Interaction { - async fn run(mut self) -> Result { - // First just see if we have the data available locally. - { - let (tx, rx) = oneshot::channel(); - self.sender.send_message( - AvailabilityStoreMessage::QueryAvailableData(self.params.candidate_hash, tx).into() - ).await; - - match rx.await { - Ok(Some(data)) => return Ok(data), - Ok(None) => {} - Err(oneshot::Canceled) => { - tracing::warn!( - target: LOG_TARGET, - candidate_hash = ?self.params.candidate_hash, - "Failed to reach the availability store", - ) - } - } - } - - loop { - // These only fail if we cannot reach the underlying subsystem, which case there is nothing - // meaningful we can do. - match self.phase { - InteractionPhase::RequestFromBackers(ref mut from_backers) => { - match from_backers.run(&self.params, &mut self.sender).await { - Ok(data) => break Ok(data), - Err(RecoveryError::Invalid) => break Err(RecoveryError::Invalid), - Err(RecoveryError::Unavailable) => { - self.phase = InteractionPhase::RequestChunks( - RequestChunksPhase::new(self.params.validators.len() as _) - ) - } - } - } - InteractionPhase::RequestChunks(ref mut from_all) => { - break from_all.run(&self.params, &mut self.sender).await; - } - } - } - } -} - -/// Accumulate all awaiting sides for some particular `AvailableData`. -struct InteractionHandle { - candidate_hash: CandidateHash, - remote: RemoteHandle>, - awaiting: Vec>>, -} - -impl Future for InteractionHandle { - type Output = Option<(CandidateHash, Result)>; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let mut indices_to_remove = Vec::new(); - for (i, awaiting) in self.awaiting.iter_mut().enumerate().rev() { - if let Poll::Ready(()) = awaiting.poll_canceled(cx) { - indices_to_remove.push(i); - } - } - - // these are reverse order, so remove is fine. - for index in indices_to_remove { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?self.candidate_hash, - "Receiver for available data dropped.", - ); - - self.awaiting.swap_remove(index); - } - - if self.awaiting.is_empty() { - tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?self.candidate_hash, - "All receivers for available data dropped.", - ); - - return Poll::Ready(None); - } - - let remote = &mut self.remote; - futures::pin_mut!(remote); - let result = futures::ready!(remote.poll(cx)); - - for awaiting in self.awaiting.drain(..) { - let _ = awaiting.send(result.clone()); - } - - Poll::Ready(Some((self.candidate_hash, result))) - } -} - -struct State { - /// Each interaction is implemented as its own async task, - /// and these handles are for communicating with them. - interactions: FuturesUnordered, - - /// A recent block hash for which state should be available. - live_block: (BlockNumber, Hash), - - /// An LRU cache of recently recovered data. - availability_lru: LruCache>, -} - -impl Default for State { - fn default() -> Self { - Self { - interactions: FuturesUnordered::new(), - live_block: (0, Hash::default()), - availability_lru: LruCache::new(LRU_SIZE), - } - } -} - -impl Subsystem for AvailabilityRecoverySubsystem - where C: SubsystemContext -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = self.run(ctx) - .map_err(|e| SubsystemError::with_origin("availability-recovery", e)) - .boxed(); - SpawnedSubsystem { - name: "availability-recovery-subsystem", - future, - } - } -} - -/// Handles a signal from the overseer. -async fn handle_signal( - state: &mut State, - signal: OverseerSignal, -) -> SubsystemResult { - match signal { - OverseerSignal::Conclude => Ok(true), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { activated, .. }) => { - // if activated is non-empty, set state.live_block to the highest block in `activated` - for activated in activated { - if activated.number > state.live_block.0 { - state.live_block = (activated.number, activated.hash) - } - } - - Ok(false) - } - OverseerSignal::BlockFinalized(_, _) => Ok(false) - } -} - -/// Machinery around launching interactions into the background. -async fn launch_interaction( - state: &mut State, - ctx: &mut impl SubsystemContext, - session_info: SessionInfo, - receipt: CandidateReceipt, - backing_group: Option, - response_sender: oneshot::Sender>, -) -> error::Result<()> { - let candidate_hash = receipt.hash(); - - let params = InteractionParams { - validator_authority_keys: session_info.discovery_keys.clone(), - validators: session_info.validators.clone(), - threshold: recovery_threshold(session_info.validators.len())?, - candidate_hash, - erasure_root: receipt.descriptor.erasure_root, - }; - - let phase = backing_group - .and_then(|g| session_info.validator_groups.get(g.0 as usize)) - .map(|group| InteractionPhase::RequestFromBackers( - RequestFromBackersPhase::new(group.clone()) - )) - .unwrap_or_else(|| InteractionPhase::RequestChunks( - RequestChunksPhase::new(params.validators.len() as _) - )); - - let interaction = Interaction { - sender: ctx.sender().clone(), - params, - phase, - }; - - let (remote, remote_handle) = interaction.run().remote_handle(); - - state.interactions.push(InteractionHandle { - candidate_hash, - remote: remote_handle, - awaiting: vec![response_sender], - }); - - if let Err(e) = ctx.spawn("recovery interaction", Box::pin(remote)) { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Failed to spawn a recovery interaction task", - ); - } - - Ok(()) -} - -/// Handles an availability recovery request. -async fn handle_recover( - state: &mut State, - ctx: &mut impl SubsystemContext, - receipt: CandidateReceipt, - session_index: SessionIndex, - backing_group: Option, - response_sender: oneshot::Sender>, -) -> error::Result<()> { - let candidate_hash = receipt.hash(); - - let span = jaeger::Span::new(candidate_hash, "availbility-recovery") - .with_stage(jaeger::Stage::AvailabilityRecovery); - - if let Some(result) = state.availability_lru.get(&candidate_hash) { - if let Err(e) = response_sender.send(result.clone()) { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Error responding with an availability recovery result", - ); - } - return Ok(()); - } - - if let Some(i) = state.interactions.iter_mut().find(|i| i.candidate_hash == candidate_hash) { - i.awaiting.push(response_sender); - return Ok(()); - } - - let _span = span.child("not-cached"); - let session_info = request_session_info( - state.live_block.1, - session_index, - ctx.sender(), - ).await.await.map_err(error::Error::CanceledSessionInfo)??; - - let _span = span.child("session-info-ctx-received"); - match session_info { - Some(session_info) => { - launch_interaction( - state, - ctx, - session_info, - receipt, - backing_group, - response_sender, - ).await - } - None => { - tracing::warn!( - target: LOG_TARGET, - "SessionInfo is `None` at {:?}", state.live_block, - ); - response_sender - .send(Err(RecoveryError::Unavailable)) - .map_err(|_| error::Error::CanceledResponseSender)?; - Ok(()) - } - } -} - -/// Queries a chunk from av-store. -async fn query_full_data( - ctx: &mut impl SubsystemContext, - candidate_hash: CandidateHash, -) -> error::Result> { - let (tx, rx) = oneshot::channel(); - ctx.send_message(AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryAvailableData(candidate_hash, tx), - )).await; - - Ok(rx.await.map_err(error::Error::CanceledQueryFullData)?) -} - -impl AvailabilityRecoverySubsystem { - /// Create a new instance of `AvailabilityRecoverySubsystem` which starts with a fast path to request data from backers. - pub fn with_fast_path() -> Self { - Self { fast_path: true } - } - - /// Create a new instance of `AvailabilityRecoverySubsystem` which requests only chunks - pub fn with_chunks_only() -> Self { - Self { fast_path: false } - } - - async fn run( - self, - mut ctx: impl SubsystemContext, - ) -> SubsystemResult<()> { - let mut state = State::default(); - - loop { - futures::select! { - v = ctx.recv().fuse() => { - match v? { - FromOverseer::Signal(signal) => if handle_signal( - &mut state, - signal, - ).await? { - return Ok(()); - } - FromOverseer::Communication { msg } => { - match msg { - AvailabilityRecoveryMessage::RecoverAvailableData( - receipt, - session_index, - maybe_backing_group, - response_sender, - ) => { - if let Err(e) = handle_recover( - &mut state, - &mut ctx, - receipt, - session_index, - maybe_backing_group.filter(|_| self.fast_path), - response_sender, - ).await { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Error handling a recovery request", - ); - } - } - AvailabilityRecoveryMessage::AvailableDataFetchingRequest(req) => { - match query_full_data(&mut ctx, req.payload.candidate_hash).await { - Ok(res) => { - let _ = req.send_response(res.into()); - } - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - err = ?e, - "Failed to query available data.", - ); - - let _ = req.send_response(None.into()); - } - } - } - } - } - } - } - output = state.interactions.next() => { - if let Some((candidate_hash, result)) = output.flatten() { - state.availability_lru.put(candidate_hash, result); - } - } - } - } - } -} diff --git a/node/network/availability-recovery/src/tests.rs b/node/network/availability-recovery/src/tests.rs deleted file mode 100644 index 81d9a53c9a50..000000000000 --- a/node/network/availability-recovery/src/tests.rs +++ /dev/null @@ -1,1103 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::time::Duration; -use std::sync::Arc; - -use futures::{executor, future}; -use futures_timer::Delay; -use assert_matches::assert_matches; -use smallvec::smallvec; - -use parity_scale_codec::Encode; - -use super::*; - -use polkadot_primitives::v1::{ - AuthorityDiscoveryId, PersistedValidationData, HeadData, -}; -use polkadot_node_primitives::{PoV, BlockData}; -use polkadot_erasure_coding::{branches, obtain_chunks_v1 as obtain_chunks}; -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_subsystem_testhelpers as test_helpers; -use polkadot_subsystem::{ - messages::{RuntimeApiMessage, RuntimeApiRequest}, jaeger, ActivatedLeaf, LeafStatus, -}; - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -fn test_harness_fast_path>( - test: impl FnOnce(VirtualOverseer) -> T, -) { - let _ = env_logger::builder() - .is_test(true) - .filter( - Some("polkadot_availability_recovery"), - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = AvailabilityRecoverySubsystem::with_fast_path(); - let subsystem = subsystem.run(context); - - let test_fut = test(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer_signal(&mut overseer, OverseerSignal::Conclude).await; - }, subsystem)).1.unwrap(); -} - -fn test_harness_chunks_only>( - test: impl FnOnce(VirtualOverseer) -> T, -) { - let _ = env_logger::builder() - .is_test(true) - .filter( - Some("polkadot_availability_recovery"), - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = AvailabilityRecoverySubsystem::with_chunks_only(); - let subsystem = subsystem.run(context); - - let test_fut = test(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer_signal(&mut overseer, OverseerSignal::Conclude).await; - }, subsystem)).1.unwrap(); -} - -const TIMEOUT: Duration = Duration::from_millis(100); - -macro_rules! delay { - ($delay:expr) => { - Delay::new(Duration::from_millis($delay)).await; - }; -} - -async fn overseer_signal( - overseer: &mut test_helpers::TestSubsystemContextHandle, - signal: OverseerSignal, -) { - delay!(50); - overseer - .send(FromOverseer::Signal(signal)) - .timeout(TIMEOUT) - .await - .expect("10ms is more than enough for sending signals."); -} - -async fn overseer_send( - overseer: &mut test_helpers::TestSubsystemContextHandle, - msg: AvailabilityRecoveryMessage, -) { - tracing::trace!(msg = ?msg, "sending message"); - overseer - .send(FromOverseer::Communication { msg }) - .timeout(TIMEOUT) - .await - .expect("10ms is more than enough for sending messages."); -} - -async fn overseer_recv( - overseer: &mut test_helpers::TestSubsystemContextHandle, -) -> AllMessages { - tracing::trace!("waiting for message ..."); - let msg = overseer - .recv() - .timeout(TIMEOUT) - .await - .expect("TIMEOUT is enough to recv."); - tracing::trace!(msg = ?msg, "received message"); - msg -} - - -use sp_keyring::Sr25519Keyring; - -#[derive(Debug)] -enum Has { - No, - Yes, - NetworkError(sc_network::RequestFailure), -} - -impl Has { - fn timeout() -> Self { - Has::NetworkError(sc_network::RequestFailure::Network( - sc_network::OutboundFailure::Timeout - )) - } -} - -#[derive(Clone)] -struct TestState { - validators: Vec, - validator_public: Vec, - validator_authority_id: Vec, - current: Hash, - candidate: CandidateReceipt, - session_index: SessionIndex, - - persisted_validation_data: PersistedValidationData, - - available_data: AvailableData, - chunks: Vec, -} - -impl TestState { - fn threshold(&self) -> usize { - recovery_threshold(self.validators.len()).unwrap() - } - - fn impossibility_threshold(&self) -> usize { - self.validators.len() - self.threshold() + 1 - } - - async fn test_runtime_api( - &self, - virtual_overseer: &mut VirtualOverseer, - ) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionInfo( - session_index, - tx, - ) - )) => { - assert_eq!(relay_parent, self.current); - assert_eq!(session_index, self.session_index); - - tx.send(Ok(Some(SessionInfo { - validators: self.validator_public.clone(), - discovery_keys: self.validator_authority_id.clone(), - // all validators in the same group. - validator_groups: vec![(0..self.validators.len()).map(|i| ValidatorIndex(i as _)).collect()], - ..Default::default() - }))).unwrap(); - } - ); - } - - async fn respond_to_available_data_query( - &self, - virtual_overseer: &mut VirtualOverseer, - with_data: bool, - ) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryAvailableData(_, tx) - ) => { - let _ = tx.send(if with_data { - Some(self.available_data.clone()) - } else { - println!("SENDING NONE"); - None - }); - } - ) - } - - async fn respond_to_query_all_request( - &self, - virtual_overseer: &mut VirtualOverseer, - send_chunk: impl Fn(usize) -> bool - ) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::AvailabilityStore( - AvailabilityStoreMessage::QueryAllChunks(_, tx) - ) => { - let v = self.chunks.iter() - .filter(|c| send_chunk(c.index.0 as usize)) - .cloned() - .collect(); - - let _ = tx.send(v); - } - ) - } - - async fn test_chunk_requests( - &self, - candidate_hash: CandidateHash, - virtual_overseer: &mut VirtualOverseer, - n: usize, - who_has: impl Fn(usize) -> Has, - ) { - // arbitrary order. - for _ in 0..n { - // Receive a request for a chunk. - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut requests, - IfDisconnected::TryConnect, - ) - ) => { - assert_eq!(requests.len(), 1); - - assert_matches!( - requests.pop().unwrap(), - Requests::ChunkFetching(req) => { - assert_eq!(req.payload.candidate_hash, candidate_hash); - - let validator_index = req.payload.index.0 as usize; - let available_data = match who_has(validator_index) { - Has::No => Ok(None), - Has::Yes => Ok(Some(self.chunks[validator_index].clone().into())), - Has::NetworkError(e) => Err(e), - }; - - let _ = req.pending_response.send( - available_data.map(|r| - req_res::v1::ChunkFetchingResponse::from(r).encode() - ) - ); - } - ) - } - ); - } - } - - async fn test_full_data_requests( - &self, - candidate_hash: CandidateHash, - virtual_overseer: &mut VirtualOverseer, - who_has: impl Fn(usize) -> Has, - ) { - for _ in 0..self.validators.len() { - // Receive a request for a chunk. - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut requests, - IfDisconnected::TryConnect, - ) - ) => { - assert_eq!(requests.len(), 1); - - assert_matches!( - requests.pop().unwrap(), - Requests::AvailableDataFetching(req) => { - assert_eq!(req.payload.candidate_hash, candidate_hash); - let validator_index = self.validator_authority_id - .iter() - .position(|a| Recipient::Authority(a.clone()) == req.peer) - .unwrap(); - - let available_data = match who_has(validator_index) { - Has::No => Ok(None), - Has::Yes => Ok(Some(self.available_data.clone())), - Has::NetworkError(e) => Err(e), - }; - - let done = available_data.as_ref().ok().map_or(false, |x| x.is_some()); - - let _ = req.pending_response.send( - available_data.map(|r| - req_res::v1::AvailableDataFetchingResponse::from(r).encode() - ) - ); - - if done { break } - } - ) - } - ); - } - } -} - - -fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() -} - -fn validator_authority_id(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() -} - -fn derive_erasure_chunks_with_proofs_and_root( - n_validators: usize, - available_data: &AvailableData, - alter_chunk: impl Fn(usize, &mut Vec), -) -> (Vec, Hash) { - let mut chunks: Vec> = obtain_chunks(n_validators, available_data).unwrap(); - - for (i, chunk) in chunks.iter_mut().enumerate() { - alter_chunk(i, chunk) - } - - // create proofs for each erasure chunk - let branches = branches(chunks.as_ref()); - - let root = branches.root(); - let erasure_chunks = branches - .enumerate() - .map(|(index, (proof, chunk))| ErasureChunk { - chunk: chunk.to_vec(), - index: ValidatorIndex(index as _), - proof, - }) - .collect::>(); - - (erasure_chunks, root) -} - -impl Default for TestState { - fn default() -> Self { - let validators = vec![ - Sr25519Keyring::Ferdie, // <- this node, role: validator - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - ]; - - let validator_public = validator_pubkeys(&validators); - let validator_authority_id = validator_authority_id(&validators); - - let current = Hash::repeat_byte(1); - - let mut candidate = CandidateReceipt::default(); - - let session_index = 10; - - let persisted_validation_data = PersistedValidationData { - parent_head: HeadData(vec![7, 8, 9]), - relay_parent_number: Default::default(), - max_pov_size: 1024, - relay_parent_storage_root: Default::default(), - }; - - let pov = PoV { - block_data: BlockData(vec![42; 64]), - }; - - let available_data = AvailableData { - validation_data: persisted_validation_data.clone(), - pov: Arc::new(pov), - }; - - let (chunks, erasure_root) = derive_erasure_chunks_with_proofs_and_root( - validators.len(), - &available_data, - |_, _| {}, - ); - - candidate.descriptor.erasure_root = erasure_root; - candidate.descriptor.relay_parent = Hash::repeat_byte(10); - - Self { - validators, - validator_public, - validator_authority_id, - current, - candidate, - session_index, - persisted_validation_data, - available_data, - chunks, - } - } -} - -#[test] -fn availability_is_recovered_from_chunks_if_no_group_provided() { - let test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.threshold(), - |_| Has::Yes, - ).await; - - // Recovered data should match the original one. - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - - let (tx, rx) = oneshot::channel(); - - // Test another candidate, send no chunks. - let mut new_candidate = CandidateReceipt::default(); - - new_candidate.descriptor.relay_parent = test_state.candidate.descriptor.relay_parent; - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - new_candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - new_candidate.hash(), - &mut virtual_overseer, - test_state.impossibility_threshold(), - |_| Has::No, - ).await; - - // A request times out with `Unavailable` error. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Unavailable); - virtual_overseer - }); -} - -#[test] -fn availability_is_recovered_from_chunks_even_if_backing_group_supplied_if_chunks_only() { - let test_state = TestState::default(); - - test_harness_chunks_only(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - Some(GroupIndex(0)), - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.threshold(), - |_| Has::Yes, - ).await; - - // Recovered data should match the original one. - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - - let (tx, rx) = oneshot::channel(); - - // Test another candidate, send no chunks. - let mut new_candidate = CandidateReceipt::default(); - - new_candidate.descriptor.relay_parent = test_state.candidate.descriptor.relay_parent; - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - new_candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - new_candidate.hash(), - &mut virtual_overseer, - test_state.impossibility_threshold(), - |_| Has::No, - ).await; - - // A request times out with `Unavailable` error. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Unavailable); - virtual_overseer - }); -} - -#[test] -fn bad_merkle_path_leads_to_recovery_error() { - let mut test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - // Create some faulty chunks. - test_state.chunks[0].chunk = vec![0; 32]; - test_state.chunks[1].chunk = vec![1; 32]; - test_state.chunks[2].chunk = vec![2; 32]; - test_state.chunks[3].chunk = vec![3; 32]; - test_state.chunks[4].chunk = vec![4; 32]; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.impossibility_threshold(), - |_| Has::Yes, - ).await; - - // A request times out with `Unavailable` error. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Unavailable); - virtual_overseer - }); -} - -#[test] -fn wrong_chunk_index_leads_to_recovery_error() { - let mut test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - // These chunks should fail the index check as they don't have the correct index for validator. - test_state.chunks[1] = test_state.chunks[0].clone(); - test_state.chunks[2] = test_state.chunks[0].clone(); - test_state.chunks[3] = test_state.chunks[0].clone(); - test_state.chunks[4] = test_state.chunks[0].clone(); - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.impossibility_threshold(), - |_| Has::No, - ).await; - - // A request times out with `Unavailable` error as there are no good peers. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Unavailable); - virtual_overseer - }); -} - -#[test] -fn invalid_erasure_coding_leads_to_invalid_error() { - let mut test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - let pov = PoV { - block_data: BlockData(vec![69; 64]), - }; - - let (bad_chunks, bad_erasure_root) = derive_erasure_chunks_with_proofs_and_root( - test_state.chunks.len(), - &AvailableData { - validation_data: test_state.persisted_validation_data.clone(), - pov: Arc::new(pov), - }, - |i, chunk| *chunk = vec![i as u8; 32], - ); - - test_state.chunks = bad_chunks; - test_state.candidate.descriptor.erasure_root = bad_erasure_root; - - let candidate_hash = test_state.candidate.hash(); - - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.threshold(), - |_| Has::Yes, - ).await; - - // f+1 'valid' chunks can't produce correct data. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Invalid); - virtual_overseer - }); -} - -#[test] -fn fast_path_backing_group_recovers() { - let test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - Some(GroupIndex(0)), - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - let who_has = |i| match i { - 3 => Has::Yes, - _ => Has::No, - }; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - - test_state.test_full_data_requests( - candidate_hash, - &mut virtual_overseer, - who_has, - ).await; - - // Recovered data should match the original one. - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - virtual_overseer - }); -} - -#[test] -fn no_answers_in_fast_path_causes_chunk_requests() { - let test_state = TestState::default(); - - test_harness_fast_path(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - Some(GroupIndex(0)), - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - // mix of timeout and no. - let who_has = |i| match i { - 0 | 3 => Has::No, - _ => Has::timeout(), - }; - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - - test_state.test_full_data_requests( - candidate_hash, - &mut virtual_overseer, - who_has, - ).await; - - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.threshold(), - |_| Has::Yes, - ).await; - - // Recovered data should match the original one. - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - virtual_overseer - }); -} - -#[test] -fn task_canceled_when_receivers_dropped() { - let test_state = TestState::default(); - - test_harness_chunks_only(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, _) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - for _ in 0..test_state.validators.len() { - match virtual_overseer.recv().timeout(TIMEOUT).await { - None => return virtual_overseer, - Some(_) => continue, - } - } - - panic!("task requested all validators without concluding") - }); -} - -#[test] -fn chunks_retry_until_all_nodes_respond() { - let test_state = TestState::default(); - - test_harness_chunks_only(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - Some(GroupIndex(0)), - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - - let candidate_hash = test_state.candidate.hash(); - - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |_| false).await; - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.validators.len(), - |_| Has::timeout(), - ).await; - - // we get to go another round! - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.impossibility_threshold(), - |_| Has::No, - ).await; - - // Recovered data should match the original one. - assert_eq!(rx.await.unwrap().unwrap_err(), RecoveryError::Unavailable); - virtual_overseer - }); -} - -#[test] -fn returns_early_if_we_have_the_data() { - let test_state = TestState::default(); - - test_harness_chunks_only(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - test_state.respond_to_available_data_query(&mut virtual_overseer, true).await; - - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - virtual_overseer - }); -} - -#[test] -fn does_not_query_local_validator() { - let test_state = TestState::default(); - - test_harness_chunks_only(|mut virtual_overseer| async move { - overseer_signal( - &mut virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: smallvec![ActivatedLeaf { - hash: test_state.current.clone(), - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }], - deactivated: smallvec![], - }), - ).await; - - let (tx, rx) = oneshot::channel(); - - overseer_send( - &mut virtual_overseer, - AvailabilityRecoveryMessage::RecoverAvailableData( - test_state.candidate.clone(), - test_state.session_index, - None, - tx, - ) - ).await; - - test_state.test_runtime_api(&mut virtual_overseer).await; - test_state.respond_to_available_data_query(&mut virtual_overseer, false).await; - test_state.respond_to_query_all_request(&mut virtual_overseer, |i| i == 0).await; - - let candidate_hash = test_state.candidate.hash(); - - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.validators.len(), - |i| if i == 0 { - panic!("requested from local validator") - } else { - Has::timeout() - }, - ).await; - - // second round, make sure it uses the local chunk. - test_state.test_chunk_requests( - candidate_hash, - &mut virtual_overseer, - test_state.threshold() - 1, - |i| if i == 0 { - panic!("requested from local validator") - } else { - Has::Yes - }, - ).await; - - assert_eq!(rx.await.unwrap().unwrap(), test_state.available_data); - virtual_overseer - }); -} diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml deleted file mode 100644 index 35cb91acc83e..000000000000 --- a/node/network/bitfield-distribution/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "polkadot-availability-bitfield-distribution" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -polkadot-primitives = { path = "../../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-network-protocol = { path = "../../network/protocol" } - -[dev-dependencies] -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -maplit = "1.0.2" -log = "0.4.13" -env_logger = "0.8.4" -assert_matches = "1.4.0" diff --git a/node/network/bitfield-distribution/src/lib.rs b/node/network/bitfield-distribution/src/lib.rs deleted file mode 100644 index 55332389e0c9..000000000000 --- a/node/network/bitfield-distribution/src/lib.rs +++ /dev/null @@ -1,840 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The bitfield distribution -//! -//! In case this node is a validator, gossips its own signed availability bitfield -//! for a particular relay parent. -//! Independently of that, gossips on received messages from peers to other interested peers. - -#![deny(unused_crate_dependencies)] - -use futures::{channel::oneshot, FutureExt}; - -use polkadot_subsystem::messages::*; -use polkadot_subsystem::{ - PerLeafSpan, ActiveLeavesUpdate, FromOverseer, OverseerSignal, SpawnedSubsystem, Subsystem, - SubsystemContext, SubsystemResult, - jaeger, -}; -use polkadot_node_subsystem_util::{ - metrics::{self, prometheus}, - self as util, MIN_GOSSIP_PEERS, -}; -use polkadot_primitives::v1::{Hash, SignedAvailabilityBitfield, SigningContext, ValidatorId}; -use polkadot_node_network_protocol::{v1 as protocol_v1, PeerId, View, UnifiedReputationChange as Rep, OurView}; -use std::collections::{HashMap, HashSet}; - -#[cfg(test)] -mod tests; - -const COST_SIGNATURE_INVALID: Rep = Rep::CostMajor("Bitfield signature invalid"); -const COST_VALIDATOR_INDEX_INVALID: Rep = Rep::CostMajor("Bitfield validator index invalid"); -const COST_MISSING_PEER_SESSION_KEY: Rep = Rep::CostMinor("Missing peer session key"); -const COST_NOT_IN_VIEW: Rep = Rep::CostMinor("Not interested in that parent hash"); -const COST_PEER_DUPLICATE_MESSAGE: Rep = Rep::CostMinorRepeated("Peer sent the same message multiple times"); -const BENEFIT_VALID_MESSAGE_FIRST: Rep = Rep::BenefitMinorFirst("Valid message with new information"); -const BENEFIT_VALID_MESSAGE: Rep = Rep::BenefitMinor("Valid message"); - -/// Checked signed availability bitfield that is distributed -/// to other peers. -#[derive(Debug, Clone, PartialEq, Eq)] -struct BitfieldGossipMessage { - /// The relay parent this message is relative to. - relay_parent: Hash, - /// The actual signed availability bitfield. - signed_availability: SignedAvailabilityBitfield, -} - -impl BitfieldGossipMessage { - fn into_validation_protocol(self) -> protocol_v1::ValidationProtocol { - protocol_v1::ValidationProtocol::BitfieldDistribution( - self.into_network_message() - ) - } - - fn into_network_message(self) - -> protocol_v1::BitfieldDistributionMessage - { - protocol_v1::BitfieldDistributionMessage::Bitfield( - self.relay_parent, - self.signed_availability.into(), - ) - } -} - -/// Data used to track information of peers and relay parents the -/// overseer ordered us to work on. -#[derive(Default, Debug)] -struct ProtocolState { - /// Track all active peers and their views - /// to determine what is relevant to them. - peer_views: HashMap, - - /// Track all our neighbors in the current gossip topology. - /// We're not necessarily connected to all of them. - gossip_peers: HashSet, - - /// Our current view. - view: OurView, - - /// Additional data particular to a relay parent. - per_relay_parent: HashMap, -} - -/// Data for a particular relay parent. -#[derive(Debug)] -struct PerRelayParentData { - /// Signing context for a particular relay parent. - signing_context: SigningContext, - - /// Set of validators for a particular relay parent. - validator_set: Vec, - - /// Set of validators for a particular relay parent for which we - /// received a valid `BitfieldGossipMessage`. - /// Also serves as the list of known messages for peers connecting - /// after bitfield gossips were already received. - one_per_validator: HashMap, - - /// Avoid duplicate message transmission to our peers. - message_sent_to_peer: HashMap>, - - /// Track messages that were already received by a peer - /// to prevent flooding. - message_received_from_peer: HashMap>, - - /// The span for this leaf/relay parent. - span: PerLeafSpan, -} - -impl PerRelayParentData { - /// Create a new instance. - fn new(signing_context: SigningContext, validator_set: Vec, span: PerLeafSpan) -> Self { - Self { - signing_context, - validator_set, - span, - one_per_validator: Default::default(), - message_sent_to_peer: Default::default(), - message_received_from_peer: Default::default(), - } - } - - /// Determines if that particular message signed by a validator is needed by the given peer. - fn message_from_validator_needed_by_peer( - &self, - peer: &PeerId, - validator: &ValidatorId, - ) -> bool { - self.message_sent_to_peer.get(peer).map(|v| !v.contains(validator)).unwrap_or(true) - && self.message_received_from_peer.get(peer).map(|v| !v.contains(validator)).unwrap_or(true) - } -} - -const LOG_TARGET: &str = "parachain::bitfield-distribution"; - -/// The bitfield distribution subsystem. -pub struct BitfieldDistribution { - metrics: Metrics, -} - -impl BitfieldDistribution { - /// Create a new instance of the `BitfieldDistribution` subsystem. - pub fn new(metrics: Metrics) -> Self { - Self { metrics } - } - - /// Start processing work as passed on from the Overseer. - async fn run(self, mut ctx: Context) - where - Context: SubsystemContext, - { - // work: process incoming messages from the overseer and process accordingly. - let mut state = ProtocolState::default(); - loop { - let message = match ctx.recv().await { - Ok(message) => message, - Err(e) => { - tracing::debug!(target: LOG_TARGET, err = ?e, "Failed to receive a message from Overseer, exiting"); - return; - }, - }; - match message { - FromOverseer::Communication { - msg: BitfieldDistributionMessage::DistributeBitfield(hash, signed_availability), - } => { - tracing::trace!( - target: LOG_TARGET, - ?hash, - "Processing DistributeBitfield" - ); - handle_bitfield_distribution( - &mut ctx, - &mut state, - &self.metrics, - hash, - signed_availability, - ).await; - } - FromOverseer::Communication { - msg: BitfieldDistributionMessage::NetworkBridgeUpdateV1(event), - } => { - tracing::trace!(target: LOG_TARGET, "Processing NetworkMessage"); - // a network message was received - handle_network_msg(&mut ctx, &mut state, &self.metrics, event).await; - } - FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { activated, .. })) => { - let _timer = self.metrics.time_active_leaves_update(); - - for activated in activated { - let relay_parent = activated.hash; - - tracing::trace!(target: LOG_TARGET, relay_parent = %relay_parent, "activated"); - let span = PerLeafSpan::new(activated.span, "bitfield-distribution"); - let _span = span.child("query-basics"); - - // query validator set and signing context per relay_parent once only - match query_basics(&mut ctx, relay_parent).await { - Ok(Some((validator_set, signing_context))) => { - // If our runtime API fails, we don't take down the node, - // but we might alter peers' reputations erroneously as a result - // of not having the correct bookkeeping. If we have lost a race - // with state pruning, it is unlikely that peers will be sending - // us anything to do with this relay-parent anyway. - let _ = state.per_relay_parent.insert( - relay_parent, - PerRelayParentData::new(signing_context, validator_set, span), - ); - } - Err(e) => { - tracing::warn!(target: LOG_TARGET, err = ?e, "query_basics has failed"); - } - _ => {}, - } - } - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(hash, number)) => { - tracing::trace!(target: LOG_TARGET, hash = %hash, number = %number, "block finalized"); - } - FromOverseer::Signal(OverseerSignal::Conclude) => { - tracing::trace!(target: LOG_TARGET, "Conclude"); - return; - } - } - } - } -} - -/// Modify the reputation of a peer based on its behavior. -async fn modify_reputation( - ctx: &mut Context, - peer: PeerId, - rep: Rep, -) -where - Context: SubsystemContext, -{ - tracing::trace!(target: LOG_TARGET, ?rep, peer_id = %peer, "reputation change"); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep), - )) - .await -} - -/// Distribute a given valid and signature checked bitfield message. -/// -/// For this variant the source is this node. -async fn handle_bitfield_distribution( - ctx: &mut Context, - state: &mut ProtocolState, - metrics: &Metrics, - relay_parent: Hash, - signed_availability: SignedAvailabilityBitfield, -) -where - Context: SubsystemContext, -{ - let _timer = metrics.time_handle_bitfield_distribution(); - - // Ignore anything the overseer did not tell this subsystem to work on - let mut job_data = state.per_relay_parent.get_mut(&relay_parent); - let job_data: &mut _ = if let Some(ref mut job_data) = job_data { - job_data - } else { - tracing::trace!( - target: LOG_TARGET, - relay_parent = %relay_parent, - "Not supposed to work on relay parent related data", - ); - - return; - }; - let validator_set = &job_data.validator_set; - if validator_set.is_empty() { - tracing::trace!(target: LOG_TARGET, relay_parent = %relay_parent, "validator set is empty"); - return; - } - - let validator_index = signed_availability.validator_index().0 as usize; - let validator = if let Some(validator) = validator_set.get(validator_index) { - validator.clone() - } else { - tracing::trace!(target: LOG_TARGET, "Could not find a validator for index {}", validator_index); - return; - }; - - let msg = BitfieldGossipMessage { - relay_parent, - signed_availability, - }; - - let gossip_peers = &state.gossip_peers; - let peer_views = &mut state.peer_views; - relay_message(ctx, job_data, gossip_peers, peer_views, validator, msg).await; - - metrics.on_own_bitfield_gossipped(); -} - -/// Distribute a given valid and signature checked bitfield message. -/// -/// Can be originated by another subsystem or received via network from another peer. -async fn relay_message( - ctx: &mut Context, - job_data: &mut PerRelayParentData, - gossip_peers: &HashSet, - peer_views: &mut HashMap, - validator: ValidatorId, - message: BitfieldGossipMessage, -) -where - Context: SubsystemContext, -{ - let span = job_data.span.child("relay-msg"); - - let _span = span.child("provisionable"); - // notify the overseer about a new and valid signed bitfield - ctx.send_message(AllMessages::Provisioner( - ProvisionerMessage::ProvisionableData( - message.relay_parent, - ProvisionableData::Bitfield( - message.relay_parent, - message.signed_availability.clone(), - ), - ), - )) - .await; - - drop(_span); - - let _span = span.child("interested-peers"); - // pass on the bitfield distribution to all interested peers - let interested_peers = peer_views - .iter() - .filter_map(|(peer, view)| { - // check interest in the peer in this message's relay parent - if view.contains(&message.relay_parent) { - let message_needed = job_data.message_from_validator_needed_by_peer(&peer, &validator); - if message_needed { - Some(peer.clone()) - } else { - None - } - } else { - None - } - }) - .collect::>(); - let interested_peers = util::choose_random_subset( - |e| gossip_peers.contains(e), - interested_peers, - MIN_GOSSIP_PEERS, - ); - interested_peers.iter() - .for_each(|peer|{ - // track the message as sent for this peer - job_data.message_sent_to_peer - .entry(peer.clone()) - .or_default() - .insert(validator.clone()); - }); - - drop(_span); - - if interested_peers.is_empty() { - tracing::trace!( - target: LOG_TARGET, - relay_parent = %message.relay_parent, - "no peers are interested in gossip for relay parent", - ); - } else { - let _span = span.child("gossip"); - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage( - interested_peers, - message.into_validation_protocol(), - ), - )) - .await; - } -} - -/// Handle an incoming message from a peer. -async fn process_incoming_peer_message( - ctx: &mut Context, - state: &mut ProtocolState, - metrics: &Metrics, - origin: PeerId, - message: protocol_v1::BitfieldDistributionMessage, -) -where - Context: SubsystemContext, -{ - let protocol_v1::BitfieldDistributionMessage::Bitfield(relay_parent, bitfield) = message; - tracing::trace!( - target: LOG_TARGET, - peer_id = %origin, - ?relay_parent, - "received bitfield gossip from peer" - ); - // we don't care about this, not part of our view. - if !state.view.contains(&relay_parent) { - modify_reputation(ctx, origin, COST_NOT_IN_VIEW).await; - return; - } - - // Ignore anything the overseer did not tell this subsystem to work on. - let mut job_data = state.per_relay_parent.get_mut(&relay_parent); - let job_data: &mut _ = if let Some(ref mut job_data) = job_data { - job_data - } else { - modify_reputation(ctx, origin, COST_NOT_IN_VIEW).await; - return; - }; - - let validator_index = bitfield.unchecked_validator_index(); - - let mut _span = job_data.span - .child("msg-received") - .with_peer_id(&origin) - .with_claimed_validator_index(validator_index) - .with_stage(jaeger::Stage::BitfieldDistribution); - - let validator_set = &job_data.validator_set; - if validator_set.is_empty() { - tracing::trace!( - target: LOG_TARGET, - relay_parent = %relay_parent, - ?origin, - "Validator set is empty", - ); - modify_reputation(ctx, origin, COST_MISSING_PEER_SESSION_KEY).await; - return; - } - - // Use the (untrusted) validator index provided by the signed payload - // and see if that one actually signed the availability bitset. - let signing_context = job_data.signing_context.clone(); - let validator = if let Some(validator) = validator_set.get(validator_index.0 as usize) { - validator.clone() - } else { - modify_reputation(ctx, origin, COST_VALIDATOR_INDEX_INVALID).await; - return; - }; - - // Check if the peer already sent us a message for the validator denoted in the message earlier. - // Must be done after validator index verification, in order to avoid storing an unbounded - // number of set entries. - let received_set = job_data - .message_received_from_peer - .entry(origin.clone()) - .or_default(); - - if !received_set.contains(&validator) { - received_set.insert(validator.clone()); - } else { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?origin, - "Duplicate message", - ); - modify_reputation(ctx, origin, COST_PEER_DUPLICATE_MESSAGE).await; - return; - }; - - let one_per_validator = &mut (job_data.one_per_validator); - - // only relay_message a message of a validator once - if let Some(old_message) = one_per_validator.get(&validator) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - "already received a message for validator", - ); - if old_message.signed_availability.as_unchecked() == &bitfield { - modify_reputation(ctx, origin, BENEFIT_VALID_MESSAGE).await; - } - return; - } - let signed_availability = match bitfield.try_into_checked(&signing_context, &validator) { - Err(_) => { - modify_reputation(ctx, origin, COST_SIGNATURE_INVALID).await; - return; - }, - Ok(bitfield) => bitfield, - }; - - let message = BitfieldGossipMessage { - relay_parent, - signed_availability, - }; - - metrics.on_bitfield_received(); - one_per_validator.insert(validator.clone(), message.clone()); - - relay_message(ctx, job_data, &state.gossip_peers, &mut state.peer_views, validator, message).await; - - modify_reputation(ctx, origin, BENEFIT_VALID_MESSAGE_FIRST).await -} - -/// Deal with network bridge updates and track what needs to be tracked -/// which depends on the message type received. -async fn handle_network_msg( - ctx: &mut Context, - state: &mut ProtocolState, - metrics: &Metrics, - bridge_message: NetworkBridgeEvent, -) -where - Context: SubsystemContext, -{ - let _timer = metrics.time_handle_network_msg(); - - match bridge_message { - NetworkBridgeEvent::PeerConnected(peerid, role, _) => { - tracing::trace!( - target: LOG_TARGET, - ?peerid, - ?role, - "Peer connected", - ); - // insert if none already present - state.peer_views.entry(peerid).or_default(); - } - NetworkBridgeEvent::PeerDisconnected(peerid) => { - tracing::trace!( - target: LOG_TARGET, - ?peerid, - "Peer disconnected", - ); - // get rid of superfluous data - state.peer_views.remove(&peerid); - } - NetworkBridgeEvent::NewGossipTopology(peers) => { - let newly_added: Vec = peers.difference(&state.gossip_peers).cloned().collect(); - state.gossip_peers = peers; - for peer in newly_added { - if let Some(view) = state.peer_views.remove(&peer) { - handle_peer_view_change(ctx, state, peer, view).await; - } - } - } - NetworkBridgeEvent::PeerViewChange(peerid, view) => { - tracing::trace!( - target: LOG_TARGET, - ?peerid, - ?view, - "Peer view change", - ); - handle_peer_view_change(ctx, state, peerid, view).await; - } - NetworkBridgeEvent::OurViewChange(view) => { - tracing::trace!( - target: LOG_TARGET, - ?view, - "Our view change", - ); - handle_our_view_change(state, view); - } - NetworkBridgeEvent::PeerMessage(remote, message) => - process_incoming_peer_message(ctx, state, metrics, remote, message).await, - } -} - -/// Handle the changes necessary when our view changes. -fn handle_our_view_change(state: &mut ProtocolState, view: OurView) { - let old_view = std::mem::replace(&mut (state.view), view); - - for added in state.view.difference(&old_view) { - if !state.per_relay_parent.contains_key(&added) { - tracing::warn!( - target: LOG_TARGET, - added = %added, - "Our view contains {} but the overseer never told use we should work on this", - &added - ); - } - } - for removed in old_view.difference(&state.view) { - // cleanup relay parents we are not interested in any more - let _ = state.per_relay_parent.remove(&removed); - } -} - - -// Send the difference between two views which were not sent -// to that particular peer. -async fn handle_peer_view_change( - ctx: &mut Context, - state: &mut ProtocolState, - origin: PeerId, - view: View, -) -where - Context: SubsystemContext, -{ - let added = state.peer_views.entry(origin.clone()).or_default().replace_difference(view).cloned().collect::>(); - - let is_gossip_peer = state.gossip_peers.contains(&origin); - let lucky = is_gossip_peer || util::gen_ratio( - util::MIN_GOSSIP_PEERS.saturating_sub(state.gossip_peers.len()), - util::MIN_GOSSIP_PEERS, - ); - - if !lucky { - tracing::trace!( - target: LOG_TARGET, - ?origin, - "Peer view change is ignored", - ); - return; - } - - // Send all messages we've seen before and the peer is now interested - // in to that peer. - let delta_set: Vec<(ValidatorId, BitfieldGossipMessage)> = added - .into_iter() - .filter_map(|new_relay_parent_interest| { - if let Some(job_data) = (&*state).per_relay_parent.get(&new_relay_parent_interest) { - // Send all jointly known messages for a validator (given the current relay parent) - // to the peer `origin`... - let one_per_validator = job_data.one_per_validator.clone(); - let origin = origin.clone(); - Some( - one_per_validator - .into_iter() - .filter(move |(validator, _message)| { - // ..except for the ones the peer already has. - job_data.message_from_validator_needed_by_peer(&origin, validator) - }), - ) - } else { - // A relay parent is in the peers view, which is not in ours, ignore those. - None - } - }) - .flatten() - .collect(); - - for (validator, message) in delta_set.into_iter() { - send_tracked_gossip_message(ctx, state, origin.clone(), validator, message).await; - } -} - -/// Send a gossip message and track it in the per relay parent data. -async fn send_tracked_gossip_message( - ctx: &mut Context, - state: &mut ProtocolState, - dest: PeerId, - validator: ValidatorId, - message: BitfieldGossipMessage, -) -where - Context: SubsystemContext, -{ - let job_data = if let Some(job_data) = state.per_relay_parent.get_mut(&message.relay_parent) { - job_data - } else { - return; - }; - - let _span = job_data.span.child("gossip"); - tracing::trace!( - target: LOG_TARGET, - ?dest, - ?validator, - relay_parent = ?message.relay_parent, - "Sending gossip message" - ); - - job_data.message_sent_to_peer - .entry(dest.clone()) - .or_default() - .insert(validator.clone()); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage( - vec![dest], - message.into_validation_protocol(), - ), - )).await; -} - -impl Subsystem for BitfieldDistribution -where - C: SubsystemContext + Sync + Send, -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = self.run(ctx) - .map(|_| Ok(())) - .boxed(); - - SpawnedSubsystem { - name: "bitfield-distribution-subsystem", - future, - } - } -} - -/// Query our validator set and signing context for a particular relay parent. -async fn query_basics( - ctx: &mut Context, - relay_parent: Hash, -) -> SubsystemResult, SigningContext)>> -where - Context: SubsystemContext, -{ - let (validators_tx, validators_rx) = oneshot::channel(); - let (session_tx, session_rx) = oneshot::channel(); - - let query_validators = AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent.clone(), - RuntimeApiRequest::Validators(validators_tx), - )); - - let query_signing = AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent.clone(), - RuntimeApiRequest::SessionIndexForChild(session_tx), - )); - - ctx.send_messages(std::iter::once(query_validators).chain(std::iter::once(query_signing))) - .await; - - match (validators_rx.await?, session_rx.await?) { - (Ok(v), Ok(s)) => Ok(Some(( - v, - SigningContext { parent_hash: relay_parent, session_index: s }, - ))), - (Err(e), _) | (_, Err(e)) => { - tracing::warn!(target: LOG_TARGET, err = ?e, "Failed to fetch basics from runtime API"); - Ok(None) - } - } -} - -#[derive(Clone)] -struct MetricsInner { - gossipped_own_availability_bitfields: prometheus::Counter, - received_availability_bitfields: prometheus::Counter, - active_leaves_update: prometheus::Histogram, - handle_bitfield_distribution: prometheus::Histogram, - handle_network_msg: prometheus::Histogram, -} - -/// Bitfield Distribution metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_own_bitfield_gossipped(&self) { - if let Some(metrics) = &self.0 { - metrics.gossipped_own_availability_bitfields.inc(); - } - } - - fn on_bitfield_received(&self) { - if let Some(metrics) = &self.0 { - metrics.received_availability_bitfields.inc(); - } - } - - /// Provide a timer for `active_leaves_update` which observes on drop. - fn time_active_leaves_update(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.active_leaves_update.start_timer()) - } - - /// Provide a timer for `handle_bitfield_distribution` which observes on drop. - fn time_handle_bitfield_distribution(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.handle_bitfield_distribution.start_timer()) - } - - /// Provide a timer for `handle_network_msg` which observes on drop. - fn time_handle_network_msg(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.handle_network_msg.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - gossipped_own_availability_bitfields: prometheus::register( - prometheus::Counter::new( - "parachain_gossipped_own_availabilty_bitfields_total", - "Number of own availability bitfields sent to other peers." - )?, - registry, - )?, - received_availability_bitfields: prometheus::register( - prometheus::Counter::new( - "parachain_received_availabilty_bitfields_total", - "Number of valid availability bitfields received from other peers." - )?, - registry, - )?, - active_leaves_update: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_bitfield_distribution_active_leaves_update", - "Time spent within `bitfield_distribution::active_leaves_update`", - ) - )?, - registry, - )?, - handle_bitfield_distribution: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_bitfield_distribution_handle_bitfield_distribution", - "Time spent within `bitfield_distribution::handle_bitfield_distribution`", - ) - )?, - registry, - )?, - handle_network_msg: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_bitfield_distribution_handle_network_msg", - "Time spent within `bitfield_distribution::handle_network_msg`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - diff --git a/node/network/bitfield-distribution/src/tests.rs b/node/network/bitfield-distribution/src/tests.rs deleted file mode 100644 index de2da9316b9d..000000000000 --- a/node/network/bitfield-distribution/src/tests.rs +++ /dev/null @@ -1,734 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use bitvec::bitvec; -use futures::executor; -use maplit::hashmap; -use polkadot_primitives::v1::{Signed, AvailabilityBitfield, ValidatorIndex}; -use polkadot_node_subsystem_test_helpers::make_subsystem_context; -use polkadot_node_subsystem_util::TimeoutExt; -use sp_keystore::{SyncCryptoStorePtr, SyncCryptoStore}; -use sp_application_crypto::AppKey; -use sp_keystore::testing::KeyStore; -use std::sync::Arc; -use std::time::Duration; -use std::iter::FromIterator as _; -use assert_matches::assert_matches; -use polkadot_node_network_protocol::{view, ObservedRole, our_view}; -use polkadot_subsystem::jaeger; - -macro_rules! launch { - ($fut:expr) => { - $fut - .timeout(Duration::from_millis(10)) - .await - .expect("10ms is more than enough for sending messages.") - }; -} - -/// A very limited state, only interested in the relay parent of the -/// given message, which must be signed by `validator` and a set of peers -/// which are also only interested in that relay parent. -fn prewarmed_state( - validator: ValidatorId, - signing_context: SigningContext, - known_message: BitfieldGossipMessage, - peers: Vec, -) -> ProtocolState { - let relay_parent = known_message.relay_parent.clone(); - ProtocolState { - per_relay_parent: hashmap! { - relay_parent.clone() => - PerRelayParentData { - signing_context, - validator_set: vec![validator.clone()], - one_per_validator: hashmap! { - validator.clone() => known_message.clone(), - }, - message_received_from_peer: hashmap!{}, - message_sent_to_peer: hashmap!{}, - span: PerLeafSpan::new(Arc::new(jaeger::Span::Disabled), "test"), - }, - }, - peer_views: peers - .iter() - .cloned() - .map(|peer| (peer, view!(relay_parent))) - .collect(), - gossip_peers: peers.into_iter().collect(), - view: our_view!(relay_parent), - } -} - -fn state_with_view( - view: OurView, - relay_parent: Hash, -) -> (ProtocolState, SigningContext, SyncCryptoStorePtr, ValidatorId) { - let mut state = ProtocolState::default(); - - let signing_context = SigningContext { - session_index: 1, - parent_hash: relay_parent.clone(), - }; - - let keystore : SyncCryptoStorePtr = Arc::new(KeyStore::new()); - let validator = SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, None) - .expect("generating sr25519 key not to fail"); - - state.per_relay_parent = view.iter().map(|relay_parent| {( - relay_parent.clone(), - PerRelayParentData { - signing_context: signing_context.clone(), - validator_set: vec![validator.clone().into()], - one_per_validator: hashmap!{}, - message_received_from_peer: hashmap!{}, - message_sent_to_peer: hashmap!{}, - span: PerLeafSpan::new(Arc::new(jaeger::Span::Disabled), "test"), - }) - }).collect(); - - state.view = view; - - (state, signing_context, keystore, validator.into()) -} - -#[test] -fn receive_invalid_signature() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash_a: Hash = [0; 32].into(); - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - let signing_context = SigningContext { - session_index: 1, - parent_hash: hash_a.clone(), - }; - - // another validator not part of the validatorset - let keystore : SyncCryptoStorePtr = Arc::new(KeyStore::new()); - let malicious = SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, None) - .expect("Malicious key created"); - let validator_0 = SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, None) - .expect("key created"); - let validator_1 = SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, None) - .expect("key created"); - - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let invalid_signed = executor::block_on(Signed::::sign( - &keystore, - payload.clone(), - &signing_context, - ValidatorIndex(0), - &malicious.into(), - )).ok().flatten().expect("should be signed"); - let invalid_signed_2 = executor::block_on(Signed::::sign( - &keystore, - payload.clone(), - &signing_context, - ValidatorIndex(1), - &malicious.into(), - )).ok().flatten().expect("should be signed"); - - let valid_signed = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(0), - &validator_0.into(), - )).ok().flatten().expect("should be signed"); - - let invalid_msg = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: invalid_signed.clone(), - }; - let invalid_msg_2 = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: invalid_signed_2.clone(), - }; - let valid_msg = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: valid_signed.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - let mut state = prewarmed_state( - validator_0.into(), - signing_context.clone(), - valid_msg, - vec![peer_b.clone()], - ); - state.per_relay_parent.get_mut(&hash_a) - .unwrap() - .validator_set - .push(validator_1.into()); - - executor::block_on(async move { - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage(peer_b.clone(), invalid_msg.into_network_message()), - )); - - // reputation doesn't change due to one_job_per_validator check - assert!(handle.recv().timeout(Duration::from_millis(10)).await.is_none()); - - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage(peer_b.clone(), invalid_msg_2.into_network_message()), - )); - // reputation change due to invalid signature - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_SIGNATURE_INVALID) - } - ); - }); -} - -#[test] -fn receive_invalid_validator_index() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash_a: Hash = [0; 32].into(); - let hash_b: Hash = [1; 32].into(); // other - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - // validator 0 key pair - let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash_a, hash_b], hash_a.clone()); - - state.peer_views.insert(peer_b.clone(), view![hash_a]); - - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let signed = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(42), - &validator, - )).ok().flatten().expect("should be signed"); - - let msg = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: signed.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - executor::block_on(async move { - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage(peer_b.clone(), msg.into_network_message()), - )); - - // reputation change due to invalid validator index - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_VALIDATOR_INDEX_INVALID) - } - ); - }); -} - -#[test] -fn receive_duplicate_messages() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash_a: Hash = [0; 32].into(); - let hash_b: Hash = [1; 32].into(); - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - // validator 0 key pair - let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash_a, hash_b], hash_a.clone()); - - // create a signed message by validator 0 - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let signed_bitfield = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(0), - &validator, - )).ok().flatten().expect("should be signed"); - - let msg = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: signed_bitfield.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - executor::block_on(async move { - // send a first message - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - msg.clone().into_network_message(), - ), - )); - - // none of our peers has any interest in any messages - // so we do not receive a network send type message here - // but only the one for the next subsystem - assert_matches!( - handle.recv().await, - AllMessages::Provisioner(ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::Bitfield(hash, signed) - )) => { - assert_eq!(hash, hash_a); - assert_eq!(signed, signed_bitfield) - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST) - } - ); - - // let peer A send the same message again - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_a.clone(), - msg.clone().into_network_message(), - ), - )); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_a); - assert_eq!(rep, BENEFIT_VALID_MESSAGE) - } - ); - - // let peer B send the initial message again - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - msg.clone().into_network_message(), - ), - )); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_PEER_DUPLICATE_MESSAGE) - } - ); - }); -} - -#[test] -fn do_not_relay_message_twice() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash = Hash::random(); - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - // validator 0 key pair - let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash], hash.clone()); - - // create a signed message by validator 0 - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let signed_bitfield = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(0), - &validator, - )).ok().flatten().expect("should be signed"); - - state.peer_views.insert(peer_b.clone(), view![hash]); - state.peer_views.insert(peer_a.clone(), view![hash]); - - let msg = BitfieldGossipMessage { - relay_parent: hash.clone(), - signed_availability: signed_bitfield.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - executor::block_on(async move { - let gossip_peers = HashSet::from_iter(vec![ - peer_a.clone(), peer_b.clone(), - ].into_iter()); - relay_message( - &mut ctx, - state.per_relay_parent.get_mut(&hash).unwrap(), - &gossip_peers, - &mut state.peer_views, - validator.clone(), - msg.clone(), - ).await; - - assert_matches!( - handle.recv().await, - AllMessages::Provisioner(ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::Bitfield(h, signed) - )) => { - assert_eq!(h, hash); - assert_eq!(signed, signed_bitfield) - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage(peers, send_msg), - ) => { - assert_eq!(2, peers.len()); - assert!(peers.contains(&peer_a)); - assert!(peers.contains(&peer_b)); - assert_eq!(send_msg, msg.clone().into_validation_protocol()); - } - ); - - // Relaying the message a second time shouldn't work. - relay_message( - &mut ctx, - state.per_relay_parent.get_mut(&hash).unwrap(), - &gossip_peers, - &mut state.peer_views, - validator.clone(), - msg.clone(), - ).await; - - assert_matches!( - handle.recv().await, - AllMessages::Provisioner(ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::Bitfield(h, signed) - )) => { - assert_eq!(h, hash); - assert_eq!(signed, signed_bitfield) - } - ); - - // There shouldn't be any other message - assert!(handle.recv().timeout(Duration::from_millis(10)).await.is_none()); - }); -} - -#[test] -fn changing_view() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash_a: Hash = [0; 32].into(); - let hash_b: Hash = [1; 32].into(); - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - // validator 0 key pair - let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash_a, hash_b], hash_a.clone()); - - // create a signed message by validator 0 - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let signed_bitfield = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(0), - &validator, - )).ok().flatten().expect("should be signed"); - - let msg = BitfieldGossipMessage { - relay_parent: hash_a.clone(), - signed_availability: signed_bitfield.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - executor::block_on(async move { - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerConnected(peer_b.clone(), ObservedRole::Full, None), - )); - - // make peer b interested - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), view![hash_a, hash_b]), - )); - - assert!(state.peer_views.contains_key(&peer_b)); - - // recv a first message from the network - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - msg.clone().into_network_message(), - ), - )); - - // gossip to the overseer - assert_matches!( - handle.recv().await, - AllMessages::Provisioner(ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::Bitfield(hash, signed) - )) => { - assert_eq!(hash, hash_a); - assert_eq!(signed, signed_bitfield) - } - ); - - // reputation change for peer B - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST) - } - ); - - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), view![]), - )); - - assert!(state.peer_views.contains_key(&peer_b)); - assert_eq!( - state.peer_views.get(&peer_b).expect("Must contain value for peer B"), - &view![] - ); - - // on rx of the same message, since we are not interested, - // should give penalty - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - msg.clone().into_network_message(), - ), - )); - - // reputation change for peer B - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_PEER_DUPLICATE_MESSAGE) - } - ); - - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerDisconnected(peer_b.clone()), - )); - - // we are not interested in any peers at all anymore - state.view = our_view![]; - - // on rx of the same message, since we are not interested, - // should give penalty - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_a.clone(), - msg.clone().into_network_message(), - ), - )); - - // reputation change for peer B - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_a); - assert_eq!(rep, COST_NOT_IN_VIEW) - } - ); - - }); -} - -#[test] -fn do_not_send_message_back_to_origin() { - let _ = env_logger::builder() - .filter(None, log::LevelFilter::Trace) - .is_test(true) - .try_init(); - - let hash: Hash = [0; 32].into(); - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - assert_ne!(peer_a, peer_b); - - // validator 0 key pair - let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash], hash); - - // create a signed message by validator 0 - let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]); - let signed_bitfield = executor::block_on(Signed::::sign( - &keystore, - payload, - &signing_context, - ValidatorIndex(0), - &validator, - )).ok().flatten().expect("should be signed"); - - state.peer_views.insert(peer_b.clone(), view![hash]); - state.peer_views.insert(peer_a.clone(), view![hash]); - - let msg = BitfieldGossipMessage { - relay_parent: hash.clone(), - signed_availability: signed_bitfield.clone(), - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - make_subsystem_context::(pool); - - executor::block_on(async move { - // send a first message - launch!(handle_network_msg( - &mut ctx, - &mut state, - &Default::default(), - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - msg.clone().into_network_message(), - ), - )); - - assert_matches!( - handle.recv().await, - AllMessages::Provisioner(ProvisionerMessage::ProvisionableData( - _, - ProvisionableData::Bitfield(hash, signed) - )) => { - assert_eq!(hash, hash); - assert_eq!(signed, signed_bitfield) - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage(peers, send_msg), - ) => { - assert_eq!(1, peers.len()); - assert!(peers.contains(&peer_a)); - assert_eq!(send_msg, msg.clone().into_validation_protocol()); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST) - } - ); - }); -} diff --git a/node/network/bridge/Cargo.toml b/node/network/bridge/Cargo.toml deleted file mode 100644 index d9f8fedc19f7..000000000000 --- a/node/network/bridge/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "polkadot-network-bridge" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -async-trait = "0.1.42" -futures = "0.3.15" -tracing = "0.1.26" -polkadot-primitives = { path = "../../../primitives" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-network-protocol = { path = "../protocol" } -polkadot-node-subsystem-util = { path = "../../subsystem-util"} -strum = "0.20.0" -parking_lot = "0.11.1" - -[dev-dependencies] -assert_matches = "1.4.0" -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures-timer = "3" diff --git a/node/network/bridge/src/lib.rs b/node/network/bridge/src/lib.rs deleted file mode 100644 index 399b6e6c26d0..000000000000 --- a/node/network/bridge/src/lib.rs +++ /dev/null @@ -1,1150 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Network Bridge Subsystem - protocol multiplexer for Polkadot. - -#![deny(unused_crate_dependencies)] -#![warn(missing_docs)] - - -use parity_scale_codec::{Encode, Decode}; -use parking_lot::Mutex; -use futures::prelude::*; -use futures::stream::BoxStream; -use sc_network::Event as NetworkEvent; -use sp_consensus::SyncOracle; - -use polkadot_subsystem::{ - ActivatedLeaf, ActiveLeavesUpdate, FromOverseer, OverseerSignal, SpawnedSubsystem, - Subsystem, SubsystemContext, SubsystemError, SubsystemResult, SubsystemSender, - messages::StatementDistributionMessage -}; -use polkadot_subsystem::messages::{ - NetworkBridgeMessage, AllMessages, - CollatorProtocolMessage, NetworkBridgeEvent, -}; -use polkadot_primitives::v1::{Hash, BlockNumber}; -use polkadot_node_network_protocol::{ - PeerId, peer_set::PeerSet, View, v1 as protocol_v1, OurView, UnifiedReputationChange as Rep, - ObservedRole, -}; -use polkadot_node_subsystem_util::metrics::{self, prometheus}; - -/// Peer set infos for network initialization. -/// -/// To be added to [`NetworkConfiguration::extra_sets`]. -pub use polkadot_node_network_protocol::peer_set::{peer_sets_info, IsAuthority}; - -use std::collections::{HashMap, hash_map, HashSet}; -use std::sync::Arc; - -mod validator_discovery; - -/// Actual interfacing to the network based on the `Network` trait. -/// -/// Defines the `Network` trait with an implementation for an `Arc`. -mod network; -use network::{Network, send_message, get_peer_id_by_authority_id}; - -/// Request multiplexer for combining the multiple request sources into a single `Stream` of `AllMessages`. -mod multiplexer; -pub use multiplexer::RequestMultiplexer; - -#[cfg(test)] -mod tests; - -/// The maximum amount of heads a peer is allowed to have in their view at any time. -/// -/// We use the same limit to compute the view sent to peers locally. -const MAX_VIEW_HEADS: usize = 5; - - -const MALFORMED_MESSAGE_COST: Rep = Rep::CostMajor("Malformed Network-bridge message"); -const UNCONNECTED_PEERSET_COST: Rep = Rep::CostMinor("Message sent to un-connected peer-set"); -const MALFORMED_VIEW_COST: Rep = Rep::CostMajor("Malformed view"); -const EMPTY_VIEW_COST: Rep = Rep::CostMajor("Peer sent us an empty view"); - -// network bridge log target -const LOG_TARGET: &'static str = "parachain::network-bridge"; - -/// Metrics for the network bridge. -#[derive(Clone, Default)] -pub struct Metrics(Option); - -impl Metrics { - fn on_peer_connected(&self, peer_set: PeerSet) { - self.0.as_ref().map(|metrics| metrics - .connected_events - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc() - ); - } - - fn on_peer_disconnected(&self, peer_set: PeerSet) { - self.0.as_ref().map(|metrics| metrics - .disconnected_events - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc() - ); - } - - fn note_peer_count(&self, peer_set: PeerSet, count: usize) { - self.0.as_ref().map(|metrics| metrics - .peer_count - .with_label_values(&[peer_set.get_protocol_name_static()]) - .set(count as u64) - ); - } - - fn on_notification_received(&self, peer_set: PeerSet, size: usize) { - if let Some(metrics) = self.0.as_ref() { - metrics.notifications_received - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc(); - - metrics.bytes_received - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc_by(size as u64); - } - } - - fn on_notification_sent(&self, peer_set: PeerSet, size: usize, to_peers: usize) { - if let Some(metrics) = self.0.as_ref() { - metrics.notifications_sent - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc_by(to_peers as u64); - - metrics.bytes_sent - .with_label_values(&[peer_set.get_protocol_name_static()]) - .inc_by((size * to_peers) as u64); - } - } - - fn note_desired_peer_count(&self, peer_set: PeerSet, size: usize) { - self.0.as_ref().map(|metrics| metrics - .desired_peer_count - .with_label_values(&[peer_set.get_protocol_name_static()]) - .set(size as u64) - ); - } -} - -#[derive(Clone)] -struct MetricsInner { - peer_count: prometheus::GaugeVec, - connected_events: prometheus::CounterVec, - disconnected_events: prometheus::CounterVec, - desired_peer_count: prometheus::GaugeVec, - - notifications_received: prometheus::CounterVec, - notifications_sent: prometheus::CounterVec, - - bytes_received: prometheus::CounterVec, - bytes_sent: prometheus::CounterVec, -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) - -> std::result::Result - { - let metrics = MetricsInner { - peer_count: prometheus::register( - prometheus::GaugeVec::new( - prometheus::Opts::new( - "parachain_peer_count", - "The number of peers on a parachain-related peer-set", - ), - &["protocol"] - )?, - registry, - )?, - connected_events: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_peer_connect_events_total", - "The number of peer connect events on a parachain notifications protocol", - ), - &["protocol"] - )?, - registry, - )?, - disconnected_events: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_peer_disconnect_events_total", - "The number of peer disconnect events on a parachain notifications protocol", - ), - &["protocol"] - )?, - registry, - )?, - desired_peer_count: prometheus::register( - prometheus::GaugeVec::new( - prometheus::Opts::new( - "parachain_desired_peer_count", - "The number of peers that the local node is expected to connect to on a parachain-related peer-set", - ), - &["protocol"] - )?, - registry, - )?, - notifications_received: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_notifications_received_total", - "The number of notifications received on a parachain protocol", - ), - &["protocol"] - )?, - registry, - )?, - notifications_sent: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_notifications_sent_total", - "The number of notifications sent on a parachain protocol", - ), - &["protocol"] - )?, - registry, - )?, - bytes_received: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_notification_bytes_received_total", - "The number of bytes received on a parachain notification protocol", - ), - &["protocol"] - )?, - registry, - )?, - bytes_sent: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_notification_bytes_sent_total", - "The number of bytes sent on a parachain notification protocol", - ), - &["protocol"] - )?, - registry, - )?, - }; - - Ok(Metrics(Some(metrics))) - } -} - -/// Messages from and to the network. -/// -/// As transmitted to and received from subsystems. -#[derive(Debug, Encode, Decode, Clone)] -pub enum WireMessage { - /// A message from a peer on a specific protocol. - #[codec(index = 1)] - ProtocolMessage(M), - /// A view update from a peer. - #[codec(index = 2)] - ViewUpdate(View), -} - -/// The network bridge subsystem. -pub struct NetworkBridge { - /// `Network` trait implementing type. - network_service: N, - authority_discovery_service: AD, - request_multiplexer: RequestMultiplexer, - sync_oracle: Box, - metrics: Metrics, -} - -impl NetworkBridge { - /// Create a new network bridge subsystem with underlying network service and authority discovery service. - /// - /// This assumes that the network service has had the notifications protocol for the network - /// bridge already registered. See [`peers_sets_info`](peers_sets_info). - pub fn new( - network_service: N, - authority_discovery_service: AD, - request_multiplexer: RequestMultiplexer, - sync_oracle: Box, - metrics: Metrics, - ) -> Self { - NetworkBridge { - network_service, - authority_discovery_service, - request_multiplexer, - sync_oracle, - metrics, - } - } -} - -impl Subsystem for NetworkBridge - where - Net: Network + Sync, - AD: validator_discovery::AuthorityDiscovery, - Context: SubsystemContext, -{ - fn start(mut self, ctx: Context) -> SpawnedSubsystem { - // The stream of networking events has to be created at initialization, otherwise the - // networking might open connections before the stream of events has been grabbed. - let network_stream = self.network_service.event_stream(); - - // Swallow error because failure is fatal to the node and we log with more precision - // within `run_network`. - let future = run_network(self, ctx, network_stream) - .map_err(|e| { - SubsystemError::with_origin("network-bridge", e) - }) - .boxed(); - SpawnedSubsystem { - name: "network-bridge-subsystem", - future, - } - } -} - -struct PeerData { - /// The Latest view sent by the peer. - view: View, -} - -#[derive(Debug)] -enum UnexpectedAbort { - /// Received error from overseer: - SubsystemError(polkadot_subsystem::SubsystemError), - /// The stream of incoming events concluded. - EventStreamConcluded, - /// The stream of incoming requests concluded. - RequestStreamConcluded, -} - -impl From for UnexpectedAbort { - fn from(e: SubsystemError) -> Self { - UnexpectedAbort::SubsystemError(e) - } -} - -#[derive(Default, Clone)] -struct Shared(Arc>); - -#[derive(Default)] -struct SharedInner { - local_view: Option, - validation_peers: HashMap, - collation_peers: HashMap, -} - -enum Mode { - Syncing(Box), - Active, -} - -async fn handle_subsystem_messages( - mut ctx: Context, - mut network_service: N, - mut authority_discovery_service: AD, - shared: Shared, - sync_oracle: Box, - metrics: Metrics, -) -> Result<(), UnexpectedAbort> -where - Context: SubsystemContext, - N: Network, - AD: validator_discovery::AuthorityDiscovery, -{ - // This is kept sorted, descending, by block number. - let mut live_heads: Vec = Vec::with_capacity(MAX_VIEW_HEADS); - let mut finalized_number = 0; - let mut validator_discovery = validator_discovery::Service::::new(); - - let mut mode = Mode::Syncing(sync_oracle); - - loop { - futures::select! { - msg = ctx.recv().fuse() => match msg { - Ok(FromOverseer::Signal(OverseerSignal::ActiveLeaves(active_leaves))) => { - let ActiveLeavesUpdate { activated, deactivated } = active_leaves; - tracing::trace!( - target: LOG_TARGET, - action = "ActiveLeaves", - num_activated = %activated.len(), - num_deactivated = %deactivated.len(), - ); - - for activated in activated { - let pos = live_heads - .binary_search_by(|probe| probe.number.cmp(&activated.number).reverse()) - .unwrap_or_else(|i| i); - - live_heads.insert(pos, activated); - } - live_heads.retain(|h| !deactivated.contains(&h.hash)); - - // if we're done syncing, set the mode to `Mode::Active`. - // Otherwise, we don't need to send view updates. - { - let is_done_syncing = match mode { - Mode::Active => true, - Mode::Syncing(ref mut sync_oracle) => !sync_oracle.is_major_syncing(), - }; - - if is_done_syncing { - mode = Mode::Active; - - update_our_view( - &mut network_service, - &mut ctx, - &live_heads, - &shared, - finalized_number, - &metrics, - ); - } - } - } - Ok(FromOverseer::Signal(OverseerSignal::BlockFinalized(_hash, number))) => { - tracing::trace!( - target: LOG_TARGET, - action = "BlockFinalized" - ); - - debug_assert!(finalized_number < number); - - // we don't send the view updates here, but delay them until the next `ActiveLeaves` - // otherwise it might break assumptions of some of the subsystems - // that we never send the same `ActiveLeavesUpdate` - finalized_number = number; - } - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => { - return Ok(()); - } - Ok(FromOverseer::Communication { msg }) => match msg { - NetworkBridgeMessage::ReportPeer(peer, rep) => { - if !rep.is_benefit() { - tracing::debug!( - target: LOG_TARGET, - ?peer, - ?rep, - action = "ReportPeer" - ); - } - network_service.report_peer(peer, rep); - } - NetworkBridgeMessage::DisconnectPeer(peer, peer_set) => { - tracing::trace!( - target: LOG_TARGET, - action = "DisconnectPeer", - ?peer, - peer_set = ?peer_set, - ); - network_service.disconnect_peer(peer, peer_set); - } - NetworkBridgeMessage::SendValidationMessage(peers, msg) => { - tracing::trace!( - target: LOG_TARGET, - action = "SendValidationMessages", - num_messages = 1, - ); - - send_message( - &mut network_service, - peers, - PeerSet::Validation, - WireMessage::ProtocolMessage(msg), - &metrics, - ); - } - NetworkBridgeMessage::SendValidationMessages(msgs) => { - tracing::trace!( - target: LOG_TARGET, - action = "SendValidationMessages", - num_messages = %msgs.len(), - ); - - for (peers, msg) in msgs { - send_message( - &mut network_service, - peers, - PeerSet::Validation, - WireMessage::ProtocolMessage(msg), - &metrics, - ); - } - } - NetworkBridgeMessage::SendCollationMessage(peers, msg) => { - tracing::trace!( - target: LOG_TARGET, - action = "SendCollationMessages", - num_messages = 1, - ); - - send_message( - &mut network_service, - peers, - PeerSet::Collation, - WireMessage::ProtocolMessage(msg), - &metrics, - ); - } - NetworkBridgeMessage::SendCollationMessages(msgs) => { - tracing::trace!( - target: LOG_TARGET, - action = "SendCollationMessages", - num_messages = %msgs.len(), - ); - - for (peers, msg) in msgs { - send_message( - &mut network_service, - peers, - PeerSet::Collation, - WireMessage::ProtocolMessage(msg), - &metrics, - ); - } - } - NetworkBridgeMessage::SendRequests(reqs, if_disconnected) => { - tracing::trace!( - target: LOG_TARGET, - action = "SendRequests", - num_requests = %reqs.len(), - ); - - for req in reqs { - network_service - .start_request(&mut authority_discovery_service, req, if_disconnected) - .await; - } - } - NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - } => { - tracing::trace!( - target: LOG_TARGET, - action = "ConnectToValidators", - peer_set = ?peer_set, - ids = ?validator_ids, - "Received a validator connection request", - ); - - metrics.note_desired_peer_count(peer_set, validator_ids.len()); - - let (ns, ads) = validator_discovery.on_request( - validator_ids, - peer_set, - failed, - network_service, - authority_discovery_service, - ).await; - - network_service = ns; - authority_discovery_service = ads; - } - NetworkBridgeMessage::NewGossipTopology { - our_neighbors, - } => { - tracing::debug!( - target: LOG_TARGET, - action = "NewGossipTopology", - neighbors = our_neighbors.len(), - "Gossip topology has changed", - ); - - let ads = &mut authority_discovery_service; - let mut gossip_peers = HashSet::with_capacity(our_neighbors.len()); - for authority in our_neighbors { - let addr = get_peer_id_by_authority_id( - ads, - authority.clone(), - ).await; - - if let Some(peer_id) = addr { - gossip_peers.insert(peer_id); - } - } - - dispatch_validation_event_to_all_unbounded( - NetworkBridgeEvent::NewGossipTopology(gossip_peers), - ctx.sender(), - ); - } - } - Err(e) => return Err(e.into()), - }, - } - } -} - -async fn handle_network_messages( - mut sender: impl SubsystemSender, - mut network_service: impl Network, - network_stream: BoxStream<'static, NetworkEvent>, - mut authority_discovery_service: AD, - mut request_multiplexer: RequestMultiplexer, - metrics: Metrics, - shared: Shared, -) -> Result<(), UnexpectedAbort> { - let mut network_stream = network_stream.fuse(); - loop { - futures::select! { - network_event = network_stream.next() => match network_event { - None => return Err(UnexpectedAbort::EventStreamConcluded), - Some(NetworkEvent::Dht(_)) - | Some(NetworkEvent::SyncConnected { .. }) - | Some(NetworkEvent::SyncDisconnected { .. }) => {} - Some(NetworkEvent::NotificationStreamOpened { remote: peer, protocol, role, .. }) => { - let role = ObservedRole::from(role); - let peer_set = match PeerSet::try_from_protocol_name(&protocol) { - None => continue, - Some(peer_set) => peer_set, - }; - - tracing::debug!( - target: LOG_TARGET, - action = "PeerConnected", - peer_set = ?peer_set, - peer = ?peer, - role = ?role - ); - - let local_view = { - let mut shared = shared.0.lock(); - let peer_map = match peer_set { - PeerSet::Validation => &mut shared.validation_peers, - PeerSet::Collation => &mut shared.collation_peers, - }; - - match peer_map.entry(peer.clone()) { - hash_map::Entry::Occupied(_) => continue, - hash_map::Entry::Vacant(vacant) => { - vacant.insert(PeerData { view: View::default() }); - } - } - - metrics.on_peer_connected(peer_set); - metrics.note_peer_count(peer_set, peer_map.len()); - - shared.local_view.clone().unwrap_or(View::default()) - }; - - let maybe_authority = - authority_discovery_service - .get_authority_id_by_peer_id(peer).await; - - match peer_set { - PeerSet::Validation => { - dispatch_validation_events_to_all( - vec![ - NetworkBridgeEvent::PeerConnected(peer.clone(), role, maybe_authority), - NetworkBridgeEvent::PeerViewChange( - peer.clone(), - View::default(), - ), - ], - &mut sender, - ).await; - - send_message( - &mut network_service, - vec![peer], - PeerSet::Validation, - WireMessage::::ViewUpdate( - local_view, - ), - &metrics, - ); - } - PeerSet::Collation => { - dispatch_collation_events_to_all( - vec![ - NetworkBridgeEvent::PeerConnected(peer.clone(), role, maybe_authority), - NetworkBridgeEvent::PeerViewChange( - peer.clone(), - View::default(), - ), - ], - &mut sender, - ).await; - - send_message( - &mut network_service, - vec![peer], - PeerSet::Collation, - WireMessage::::ViewUpdate( - local_view, - ), - &metrics, - ); - } - } - } - Some(NetworkEvent::NotificationStreamClosed { remote: peer, protocol }) => { - let peer_set = match PeerSet::try_from_protocol_name(&protocol) { - None => continue, - Some(peer_set) => peer_set, - }; - - tracing::debug!( - target: LOG_TARGET, - action = "PeerDisconnected", - peer_set = ?peer_set, - peer = ?peer - ); - - let was_connected = { - let mut shared = shared.0.lock(); - let peer_map = match peer_set { - PeerSet::Validation => &mut shared.validation_peers, - PeerSet::Collation => &mut shared.collation_peers, - }; - - let w = peer_map.remove(&peer).is_some(); - - metrics.on_peer_disconnected(peer_set); - metrics.note_peer_count(peer_set, peer_map.len()); - - w - }; - - if was_connected { - match peer_set { - PeerSet::Validation => dispatch_validation_event_to_all( - NetworkBridgeEvent::PeerDisconnected(peer), - &mut sender, - ).await, - PeerSet::Collation => dispatch_collation_event_to_all( - NetworkBridgeEvent::PeerDisconnected(peer), - &mut sender, - ).await, - } - } - } - Some(NetworkEvent::NotificationsReceived { remote, messages }) => { - let v_messages: Result, _> = messages - .iter() - .filter(|(protocol, _)| { - protocol == &PeerSet::Validation.into_protocol_name() - }) - .map(|(_, msg_bytes)| { - WireMessage::decode(&mut msg_bytes.as_ref()) - .map(|m| (m, msg_bytes.len())) - }) - .collect(); - - let v_messages = match v_messages { - Err(_) => { - tracing::debug!( - target: LOG_TARGET, - action = "ReportPeer" - ); - - network_service.report_peer(remote, MALFORMED_MESSAGE_COST); - continue; - } - Ok(v) => v, - }; - - let c_messages: Result, _> = messages - .iter() - .filter(|(protocol, _)| { - protocol == &PeerSet::Collation.into_protocol_name() - }) - .map(|(_, msg_bytes)| { - WireMessage::decode(&mut msg_bytes.as_ref()) - .map(|m| (m, msg_bytes.len())) - }) - .collect(); - - match c_messages { - Err(_) => { - tracing::debug!( - target: LOG_TARGET, - action = "ReportPeer" - ); - - network_service.report_peer(remote, MALFORMED_MESSAGE_COST); - continue; - } - Ok(c_messages) => { - if v_messages.is_empty() && c_messages.is_empty() { - continue; - } else { - tracing::trace!( - target: LOG_TARGET, - action = "PeerMessages", - peer = ?remote, - num_validation_messages = %v_messages.len(), - num_collation_messages = %c_messages.len() - ); - - if !v_messages.is_empty() { - let (events, reports) = handle_peer_messages( - remote.clone(), - PeerSet::Validation, - &mut shared.0.lock().validation_peers, - v_messages, - &metrics, - ); - - for report in reports { - network_service.report_peer(remote.clone(), report); - } - - dispatch_validation_events_to_all(events, &mut sender).await; - } - - if !c_messages.is_empty() { - let (events, reports) = handle_peer_messages( - remote.clone(), - PeerSet::Collation, - &mut shared.0.lock().collation_peers, - c_messages, - &metrics, - ); - - for report in reports { - network_service.report_peer(remote.clone(), report); - } - - - dispatch_collation_events_to_all(events, &mut sender).await; - } - } - } - } - } - }, - req_res_event = request_multiplexer.next().fuse() => match req_res_event { - None => return Err(UnexpectedAbort::RequestStreamConcluded), - Some(Err(err)) => { - network_service.report_peer(err.peer, MALFORMED_MESSAGE_COST); - } - Some(Ok(msg)) => { - sender.send_message(msg).await; - } - }, - } - } -} - -/// Main driver, processing network events and messages from other subsystems. -/// -/// THIS IS A HACK. We need to ensure we never hold the mutex across a `.await` boundary -/// and `parking_lot` currently does not provide `Send`, which helps us enforce that. -/// If this breaks, we need to find another way to protect ourselves. -/// -/// ```compile_fail -/// #use parking_lot::MutexGuard; -/// #fn is_send(); -/// #is_send::(); -/// ``` -async fn run_network( - bridge: NetworkBridge, - mut ctx: impl SubsystemContext, - network_stream: BoxStream<'static, NetworkEvent>, -) -> SubsystemResult<()> -where - N: Network, - AD: validator_discovery::AuthorityDiscovery, -{ - let shared = Shared::default(); - - let NetworkBridge { - network_service, - mut request_multiplexer, - authority_discovery_service, - metrics, - sync_oracle, - } = bridge; - - let statement_receiver = request_multiplexer - .get_statement_fetching() - .expect("Gets initialized, must be `Some` on startup. qed."); - - let (remote, network_event_handler) = handle_network_messages( - ctx.sender().clone(), - network_service.clone(), - network_stream, - authority_discovery_service.clone(), - request_multiplexer, - metrics.clone(), - shared.clone(), - ).remote_handle(); - - ctx.spawn("network-bridge-network-worker", Box::pin(remote))?; - - ctx.send_message(AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(statement_receiver) - )).await; - - let subsystem_event_handler = handle_subsystem_messages( - ctx, - network_service, - authority_discovery_service, - shared, - sync_oracle, - metrics, - ); - - futures::pin_mut!(subsystem_event_handler); - - match futures::future::select(subsystem_event_handler, network_event_handler) - .await - .factor_first() - .0 - { - Ok(()) => Ok(()), - Err(UnexpectedAbort::SubsystemError(err)) => { - tracing::warn!( - target: LOG_TARGET, - err = ?err, - "Shutting down Network Bridge due to error" - ); - - Err(SubsystemError::Context(format!( - "Received SubsystemError from overseer: {:?}", - err - ))) - } - Err(UnexpectedAbort::EventStreamConcluded) => { - tracing::info!( - target: LOG_TARGET, - "Shutting down Network Bridge: underlying request stream concluded" - ); - Err(SubsystemError::Context( - "Incoming network event stream concluded.".to_string(), - )) - } - Err(UnexpectedAbort::RequestStreamConcluded) => { - tracing::info!( - target: LOG_TARGET, - "Shutting down Network Bridge: underlying request stream concluded" - ); - Err(SubsystemError::Context( - "Incoming network request stream concluded".to_string(), - )) - } - } -} - -fn construct_view(live_heads: impl DoubleEndedIterator, finalized_number: BlockNumber) -> View { - View::new( - live_heads.take(MAX_VIEW_HEADS), - finalized_number, - ) -} - -fn update_our_view( - net: &mut impl Network, - ctx: &mut impl SubsystemContext, - live_heads: &[ActivatedLeaf], - shared: &Shared, - finalized_number: BlockNumber, - metrics: &Metrics, -) { - let new_view = construct_view(live_heads.iter().map(|v| v.hash), finalized_number); - - let (validation_peers, collation_peers) = { - let mut shared = shared.0.lock(); - - // We only want to send a view update when the heads changed. - // A change in finalized block number only is _not_ sufficient. - // - // If this is the first view update since becoming active, but our view is empty, - // there is no need to send anything. - match shared.local_view { - Some(ref v) if v.check_heads_eq(&new_view) => { - return; - } - None if live_heads.is_empty() => { - shared.local_view = Some(new_view); - return; - } - _ => { - shared.local_view = Some(new_view.clone()); - } - - } - - ( - shared.validation_peers.keys().cloned().collect::>(), - shared.collation_peers.keys().cloned().collect::>(), - ) - }; - - send_validation_message( - net, - validation_peers, - WireMessage::ViewUpdate(new_view.clone()), - metrics, - ); - - send_collation_message( - net, - collation_peers, - WireMessage::ViewUpdate(new_view), - metrics, - ); - - let our_view = OurView::new( - live_heads.iter().take(MAX_VIEW_HEADS).cloned().map(|a| (a.hash, a.span)), - finalized_number, - ); - - dispatch_validation_event_to_all_unbounded( - NetworkBridgeEvent::OurViewChange(our_view.clone()), - ctx.sender(), - ); - - dispatch_collation_event_to_all_unbounded( - NetworkBridgeEvent::OurViewChange(our_view), - ctx.sender(), - ); -} - -// Handle messages on a specific peer-set. The peer is expected to be connected on that -// peer-set. -fn handle_peer_messages( - peer: PeerId, - peer_set: PeerSet, - peers: &mut HashMap, - messages: Vec<(WireMessage, usize)>, - metrics: &Metrics, -) -> (Vec>, Vec) { - let peer_data = match peers.get_mut(&peer) { - None => { - return (Vec::new(), vec![UNCONNECTED_PEERSET_COST]); - }, - Some(d) => d, - }; - - let mut outgoing_messages = Vec::with_capacity(messages.len()); - let mut reports = Vec::new(); - - for (message, size_bytes) in messages { - metrics.on_notification_received(peer_set, size_bytes); - - outgoing_messages.push(match message { - WireMessage::ViewUpdate(new_view) => { - if new_view.len() > MAX_VIEW_HEADS || - new_view.finalized_number < peer_data.view.finalized_number - { - reports.push(MALFORMED_VIEW_COST); - continue - } else if new_view.is_empty() { - reports.push(EMPTY_VIEW_COST); - continue - } else if new_view == peer_data.view { - continue - } else { - peer_data.view = new_view; - - NetworkBridgeEvent::PeerViewChange( - peer.clone(), - peer_data.view.clone(), - ) - } - } - WireMessage::ProtocolMessage(message) => { - NetworkBridgeEvent::PeerMessage(peer.clone(), message) - } - }) - } - - (outgoing_messages, reports) -} - -fn send_validation_message( - net: &mut impl Network, - peers: Vec, - message: WireMessage, - metrics: &Metrics, -) { - send_message(net, peers, PeerSet::Validation, message, metrics); -} - -fn send_collation_message( - net: &mut impl Network, - peers: Vec, - message: WireMessage, - metrics: &Metrics, -) { - send_message(net, peers, PeerSet::Collation, message, metrics) -} - - -async fn dispatch_validation_event_to_all( - event: NetworkBridgeEvent, - ctx: &mut impl SubsystemSender -) { - dispatch_validation_events_to_all(std::iter::once(event), ctx).await -} - -async fn dispatch_collation_event_to_all( - event: NetworkBridgeEvent, - ctx: &mut impl SubsystemSender -) { - dispatch_collation_events_to_all(std::iter::once(event), ctx).await -} - -fn dispatch_validation_event_to_all_unbounded( - event: NetworkBridgeEvent, - ctx: &mut impl SubsystemSender -) { - for msg in AllMessages::dispatch_iter(event) { - ctx.send_unbounded_message(msg); - } -} - -fn dispatch_collation_event_to_all_unbounded( - event: NetworkBridgeEvent, - ctx: &mut impl SubsystemSender -) { - if let Some(msg) = event.focus().ok().map(CollatorProtocolMessage::NetworkBridgeUpdateV1) { - ctx.send_unbounded_message(msg.into()); - } -} - -async fn dispatch_validation_events_to_all( - events: I, - ctx: &mut impl SubsystemSender -) - where - I: IntoIterator>, - I::IntoIter: Send, -{ - ctx.send_messages(events.into_iter().flat_map(AllMessages::dispatch_iter)).await -} - -async fn dispatch_collation_events_to_all( - events: I, - ctx: &mut impl SubsystemSender -) - where - I: IntoIterator>, - I::IntoIter: Send, -{ - let messages_for = |event: NetworkBridgeEvent| { - event.focus().ok().map(|m| AllMessages::CollatorProtocol( - CollatorProtocolMessage::NetworkBridgeUpdateV1(m) - )) - }; - - ctx.send_messages(events.into_iter().flat_map(messages_for)).await -} diff --git a/node/network/bridge/src/multiplexer.rs b/node/network/bridge/src/multiplexer.rs deleted file mode 100644 index ad65309d3eea..000000000000 --- a/node/network/bridge/src/multiplexer.rs +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::pin::Pin; - -use futures::channel::mpsc; -use futures::stream::{FusedStream, Stream}; -use futures::task::{Context, Poll}; -use strum::IntoEnumIterator; - -use parity_scale_codec::{Decode, Error as DecodingError}; - -use sc_network::config as network; -use sc_network::PeerId; - -use polkadot_node_network_protocol::request_response::{ - request::IncomingRequest, v1, Protocol, RequestResponseConfig, -}; -use polkadot_subsystem::messages::AllMessages; - -/// Multiplex incoming network requests. -/// -/// This multiplexer consumes all request streams and makes them a `Stream` of a single message -/// type, useful for the network bridge to send them via the `Overseer` to other subsystems. -/// -/// The resulting stream will end once any of its input ends. -/// -/// TODO: Get rid of this: https://github.com/paritytech/polkadot/issues/2842 -pub struct RequestMultiplexer { - receivers: Vec<(Protocol, mpsc::Receiver)>, - statement_fetching: Option>, - next_poll: usize, -} - -/// Multiplexing can fail in case of invalid messages. -#[derive(Debug, PartialEq, Eq)] -pub struct RequestMultiplexError { - /// The peer that sent the invalid message. - pub peer: PeerId, - /// The error that occurred. - pub error: DecodingError, -} - -impl RequestMultiplexer { - /// Create a new `RequestMultiplexer`. - /// - /// This function uses `Protocol::get_config` for each available protocol and creates a - /// `RequestMultiplexer` from it. The returned `RequestResponseConfig`s must be passed to the - /// network implementation. - pub fn new() -> (Self, Vec) { - let (mut receivers, cfgs): (Vec<_>, Vec<_>) = Protocol::iter() - .map(|p| { - let (rx, cfg) = p.get_config(); - ((p, rx), cfg) - }) - .unzip(); - - let index = receivers.iter().enumerate().find_map(|(i, (p, _))| - if let Protocol::StatementFetching = p { - Some(i) - } else { - None - } - ).expect("Statement fetching must be registered. qed."); - let statement_fetching = Some(receivers.remove(index).1); - - ( - Self { - receivers, - statement_fetching, - next_poll: 0, - }, - cfgs, - ) - } - - /// Get the receiver for handling statement fetching requests. - /// - /// This function will only return `Some` once. - pub fn get_statement_fetching(&mut self) -> Option> { - std::mem::take(&mut self.statement_fetching) - } -} - -impl Stream for RequestMultiplexer { - type Item = Result; - - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let len = self.receivers.len(); - let mut count = len; - let mut i = self.next_poll; - let mut result = Poll::Ready(None); - // Poll streams in round robin fashion: - while count > 0 { - // % safe, because count initialized to len, loop would not be entered if 0, also - // length of receivers is fixed. - let (p, rx): &mut (_, _) = &mut self.receivers[i % len]; - // Avoid panic: - if rx.is_terminated() { - // Early return, we don't want to update next_poll. - return Poll::Ready(None); - } - i += 1; - count -= 1; - match Pin::new(rx).poll_next(cx) { - Poll::Pending => result = Poll::Pending, - // We are done, once a single receiver is done. - Poll::Ready(None) => return Poll::Ready(None), - Poll::Ready(Some(v)) => { - result = Poll::Ready(Some(multiplex_single(*p, v))); - break; - } - } - } - self.next_poll = i; - result - } -} - -impl FusedStream for RequestMultiplexer { - fn is_terminated(&self) -> bool { - let len = self.receivers.len(); - if len == 0 { - return true; - } - let (_, rx) = &self.receivers[self.next_poll % len]; - rx.is_terminated() - } -} - -/// Convert a single raw incoming request into a `MultiplexMessage`. -fn multiplex_single( - p: Protocol, - network::IncomingRequest { - payload, - peer, - pending_response, - }: network::IncomingRequest, -) -> Result { - let r = match p { - Protocol::ChunkFetching => From::from(IncomingRequest::new( - peer, - decode_with_peer::(peer, payload)?, - pending_response, - )), - Protocol::CollationFetching => From::from(IncomingRequest::new( - peer, - decode_with_peer::(peer, payload)?, - pending_response, - )), - Protocol::PoVFetching => From::from(IncomingRequest::new( - peer, - decode_with_peer::(peer, payload)?, - pending_response, - )), - Protocol::AvailableDataFetching => From::from(IncomingRequest::new( - peer, - decode_with_peer::(peer, payload)?, - pending_response, - )), - Protocol::StatementFetching => { - panic!("Statement fetching requests are handled directly. qed."); - } - }; - Ok(r) -} - -fn decode_with_peer( - peer: PeerId, - payload: Vec, -) -> Result { - Req::decode(&mut payload.as_ref()).map_err(|error| RequestMultiplexError { peer, error }) -} - -#[cfg(test)] -mod tests { - use futures::prelude::*; - use futures::stream::FusedStream; - - use super::RequestMultiplexer; - #[test] - fn check_exhaustion_safety() { - // Create and end streams: - fn drop_configs() -> RequestMultiplexer { - let (multiplexer, _) = RequestMultiplexer::new(); - multiplexer - } - let multiplexer = drop_configs(); - futures::executor::block_on(async move { - let mut f = multiplexer; - assert!(f.next().await.is_none()); - assert!(f.is_terminated()); - assert!(f.next().await.is_none()); - assert!(f.is_terminated()); - assert!(f.next().await.is_none()); - assert!(f.is_terminated()); - }); - } -} diff --git a/node/network/bridge/src/network.rs b/node/network/bridge/src/network.rs deleted file mode 100644 index 3ffdb4baa114..000000000000 --- a/node/network/bridge/src/network.rs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::borrow::Cow; -use std::collections::HashSet; -use std::sync::Arc; - -use async_trait::async_trait; -use futures::prelude::*; -use futures::stream::BoxStream; - -use parity_scale_codec::Encode; - -use sc_network::Event as NetworkEvent; -use sc_network::{IfDisconnected, NetworkService, OutboundFailure, RequestFailure}; -use sc_network::{config::parse_addr, multiaddr::Multiaddr}; - -use polkadot_node_network_protocol::{ - peer_set::PeerSet, - request_response::{OutgoingRequest, Requests, Recipient}, - PeerId, UnifiedReputationChange as Rep, -}; -use polkadot_primitives::v1::{AuthorityDiscoveryId, Block, Hash}; - -use crate::validator_discovery::AuthorityDiscovery; - -use super::LOG_TARGET; - -/// Send a message to the network. -/// -/// This function is only used internally by the network-bridge, which is responsible to only send -/// messages that are compatible with the passed peer set, as that is currently not enforced by -/// this function. These are messages of type `WireMessage` parameterized on the matching type. -pub(crate) fn send_message( - net: &mut impl Network, - mut peers: Vec, - peer_set: PeerSet, - message: M, - metrics: &super::Metrics, -) -where - M: Encode + Clone, -{ - let message = { - let encoded = message.encode(); - metrics.on_notification_sent(peer_set, encoded.len(), peers.len()); - encoded - }; - - // optimization: avoid cloning the message for the last peer in the - // list. The message payload can be quite large. If the underlying - // network used `Bytes` this would not be necessary. - let last_peer = peers.pop(); - peers.into_iter().for_each(|peer| { - net.write_notification(peer, peer_set, message.clone()); - }); - if let Some(peer) = last_peer { - net.write_notification(peer, peer_set, message); - } -} - -/// An abstraction over networking for the purposes of this subsystem. -#[async_trait] -pub trait Network: Clone + Send + 'static { - /// Get a stream of all events occurring on the network. This may include events unrelated - /// to the Polkadot protocol - the user of this function should filter only for events related - /// to the [`VALIDATION_PROTOCOL_NAME`](VALIDATION_PROTOCOL_NAME) - /// or [`COLLATION_PROTOCOL_NAME`](COLLATION_PROTOCOL_NAME) - fn event_stream(&mut self) -> BoxStream<'static, NetworkEvent>; - - /// Ask the network to keep a substream open with these nodes and not disconnect from them - /// until removed from the protocol's peer set. - /// Note that `out_peers` setting has no effect on this. - async fn add_to_peers_set( - &mut self, - protocol: Cow<'static, str>, - multiaddresses: HashSet, - ) -> Result<(), String>; - - /// Cancels the effects of `add_to_peers_set`. - async fn remove_from_peers_set( - &mut self, - protocol: Cow<'static, str>, - multiaddresses: HashSet, - ) -> Result<(), String>; - - /// Send a request to a remote peer. - async fn start_request( - &self, - authority_discovery: &mut AD, - req: Requests, - if_disconnected: IfDisconnected, - ); - - /// Report a given peer as either beneficial (+) or costly (-) according to the given scalar. - fn report_peer(&self, who: PeerId, cost_benefit: Rep); - - /// Disconnect a given peer from the peer set specified without harming reputation. - fn disconnect_peer(&self, who: PeerId, peer_set: PeerSet); - - /// Write a notification to a peer on the given peer-set's protocol. - fn write_notification( - &self, - who: PeerId, - peer_set: PeerSet, - message: Vec, - ); -} - -#[async_trait] -impl Network for Arc> { - fn event_stream(&mut self) -> BoxStream<'static, NetworkEvent> { - NetworkService::event_stream(self, "polkadot-network-bridge").boxed() - } - - async fn add_to_peers_set( - &mut self, - protocol: Cow<'static, str>, - multiaddresses: HashSet, - ) -> Result<(), String> { - sc_network::NetworkService::add_peers_to_reserved_set(&**self, protocol, multiaddresses) - } - - async fn remove_from_peers_set( - &mut self, - protocol: Cow<'static, str>, - multiaddresses: HashSet, - ) -> Result<(), String> { - sc_network::NetworkService::remove_peers_from_reserved_set( - &**self, - protocol.clone(), - multiaddresses.clone(), - )?; - sc_network::NetworkService::remove_from_peers_set(&**self, protocol, multiaddresses) - } - - fn report_peer(&self, who: PeerId, cost_benefit: Rep) { - sc_network::NetworkService::report_peer(&**self, who, cost_benefit.into_base_rep()); - } - - fn disconnect_peer(&self, who: PeerId, peer_set: PeerSet) { - sc_network::NetworkService::disconnect_peer(&**self, who, peer_set.into_protocol_name()); - } - - fn write_notification(&self, who: PeerId, peer_set: PeerSet, message: Vec) { - sc_network::NetworkService::write_notification( - &**self, - who, - peer_set.into_protocol_name(), - message, - ); - } - - async fn start_request( - &self, - authority_discovery: &mut AD, - req: Requests, - if_disconnected: IfDisconnected, - ) { - let ( - protocol, - OutgoingRequest { - peer, - payload, - pending_response, - }, - ) = req.encode_request(); - - let peer_id = match peer { - Recipient::Peer(peer_id) => Some(peer_id), - Recipient::Authority(authority) => { - let mut found_peer_id = None; - // Note: `get_addresses_by_authority_id` searched in a cache, and it thus expected - // to be very quick. - for addr in authority_discovery - .get_addresses_by_authority_id(authority).await - .into_iter().flat_map(|list| list.into_iter()) - { - let (peer_id, addr) = match parse_addr(addr) { - Ok(v) => v, - Err(_) => continue, - }; - NetworkService::add_known_address( - &*self, - peer_id.clone(), - addr, - ); - found_peer_id = Some(peer_id); - } - found_peer_id - } - }; - - let peer_id = match peer_id { - None => { - tracing::debug!(target: LOG_TARGET, "Discovering authority failed"); - match pending_response - .send(Err(RequestFailure::Network(OutboundFailure::DialFailure))) - { - Err(_) => tracing::debug!( - target: LOG_TARGET, - "Sending failed request response failed." - ), - Ok(_) => {} - } - return; - } - Some(peer_id) => peer_id, - }; - - NetworkService::start_request( - &*self, - peer_id, - protocol.into_protocol_name(), - payload, - pending_response, - if_disconnected, - ); - } -} - -/// We assume one peer_id per authority_id. -pub async fn get_peer_id_by_authority_id( - authority_discovery: &mut AD, - authority: AuthorityDiscoveryId, -) -> Option { - // Note: `get_addresses_by_authority_id` searched in a cache, and it thus expected - // to be very quick. - authority_discovery - .get_addresses_by_authority_id(authority).await - .into_iter() - .flat_map(|list| list.into_iter()) - .find_map(|addr| parse_addr(addr).ok().map(|(p, _)| p)) -} diff --git a/node/network/bridge/src/tests.rs b/node/network/bridge/src/tests.rs deleted file mode 100644 index 48296fb94f05..000000000000 --- a/node/network/bridge/src/tests.rs +++ /dev/null @@ -1,1345 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use futures::executor; -use futures::stream::BoxStream; -use futures::channel::oneshot; - -use std::borrow::Cow; -use std::collections::HashSet; -use std::sync::atomic::{AtomicBool, Ordering}; -use async_trait::async_trait; -use parking_lot::Mutex; -use assert_matches::assert_matches; - -use sc_network::{Event as NetworkEvent, IfDisconnected}; - -use polkadot_subsystem::{jaeger, ActiveLeavesUpdate, FromOverseer, OverseerSignal, LeafStatus}; -use polkadot_subsystem::messages::{ - ApprovalDistributionMessage, - BitfieldDistributionMessage, - StatementDistributionMessage -}; -use polkadot_node_subsystem_test_helpers::{ - SingleItemSink, SingleItemStream, TestSubsystemContextHandle, -}; -use polkadot_node_subsystem_util::metered; -use polkadot_node_network_protocol::view; -use sc_network::Multiaddr; -use sc_network::config::RequestResponseConfig; -use sp_keyring::Sr25519Keyring; -use polkadot_primitives::v1::AuthorityDiscoveryId; -use polkadot_node_network_protocol::{ObservedRole, request_response::request::Requests}; - -use crate::network::Network; -use crate::validator_discovery::AuthorityDiscovery; -use crate::Rep; - -#[derive(Debug, PartialEq)] -pub enum NetworkAction { - /// Note a change in reputation for a peer. - ReputationChange(PeerId, Rep), - /// Disconnect a peer from the given peer-set. - DisconnectPeer(PeerId, PeerSet), - /// Write a notification to a given peer on the given peer-set. - WriteNotification(PeerId, PeerSet, Vec), -} - -// The subsystem's view of the network - only supports a single call to `event_stream`. -#[derive(Clone)] -struct TestNetwork { - net_events: Arc>>>, - action_tx: Arc>>, - _req_configs: Vec, -} - -#[derive(Clone)] -struct TestAuthorityDiscovery; - -// The test's view of the network. This receives updates from the subsystem in the form -// of `NetworkAction`s. -struct TestNetworkHandle { - action_rx: metered::UnboundedMeteredReceiver, - net_tx: SingleItemSink, -} - -fn new_test_network(req_configs: Vec) -> ( - TestNetwork, - TestNetworkHandle, - TestAuthorityDiscovery, -) { - let (net_tx, net_rx) = polkadot_node_subsystem_test_helpers::single_item_sink(); - let (action_tx, action_rx) = metered::unbounded(); - - ( - TestNetwork { - net_events: Arc::new(Mutex::new(Some(net_rx))), - action_tx: Arc::new(Mutex::new(action_tx)), - _req_configs: req_configs, - }, - TestNetworkHandle { - action_rx, - net_tx, - }, - TestAuthorityDiscovery, - ) -} - -#[async_trait] -impl Network for TestNetwork { - fn event_stream(&mut self) -> BoxStream<'static, NetworkEvent> { - self.net_events.lock() - .take() - .expect("Subsystem made more than one call to `event_stream`") - .boxed() - } - - async fn add_to_peers_set(&mut self, _protocol: Cow<'static, str>, _: HashSet) -> Result<(), String> { - Ok(()) - } - - async fn remove_from_peers_set(&mut self, _protocol: Cow<'static, str>, _: HashSet) -> Result<(), String> { - Ok(()) - } - - async fn start_request(&self, _: &mut AD, _: Requests, _: IfDisconnected) { - } - - fn report_peer(&self, who: PeerId, cost_benefit: Rep) { - self.action_tx.lock().unbounded_send( - NetworkAction::ReputationChange(who, cost_benefit) - ).unwrap(); - } - - fn disconnect_peer(&self, who: PeerId, peer_set: PeerSet) { - self.action_tx.lock().unbounded_send( - NetworkAction::DisconnectPeer(who, peer_set) - ).unwrap(); - } - - fn write_notification( - &self, - who: PeerId, - peer_set: PeerSet, - message: Vec, - ) { - self.action_tx.lock().unbounded_send( - NetworkAction::WriteNotification(who, peer_set, message) - ).unwrap(); - } -} - -#[async_trait] -impl validator_discovery::AuthorityDiscovery for TestAuthorityDiscovery { - async fn get_addresses_by_authority_id(&mut self, _authority: AuthorityDiscoveryId) -> Option> { - None - } - - async fn get_authority_id_by_peer_id(&mut self, _peer_id: PeerId) -> Option { - None - } -} - -impl TestNetworkHandle { - // Get the next network action. - async fn next_network_action(&mut self) -> NetworkAction { - self.action_rx.next().await.expect("subsystem concluded early") - } - - // Wait for the next N network actions. - async fn next_network_actions(&mut self, n: usize) -> Vec { - let mut v = Vec::with_capacity(n); - for _ in 0..n { - v.push(self.next_network_action().await); - } - - v - } - - async fn connect_peer(&mut self, peer: PeerId, peer_set: PeerSet, role: ObservedRole) { - self.send_network_event(NetworkEvent::NotificationStreamOpened { - remote: peer, - protocol: peer_set.into_protocol_name(), - negotiated_fallback: None, - role: role.into(), - }).await; - } - - async fn disconnect_peer(&mut self, peer: PeerId, peer_set: PeerSet) { - self.send_network_event(NetworkEvent::NotificationStreamClosed { - remote: peer, - protocol: peer_set.into_protocol_name(), - }).await; - } - - async fn peer_message(&mut self, peer: PeerId, peer_set: PeerSet, message: Vec) { - self.send_network_event(NetworkEvent::NotificationsReceived { - remote: peer, - messages: vec![(peer_set.into_protocol_name(), message.into())], - }).await; - } - - async fn send_network_event(&mut self, event: NetworkEvent) { - self.net_tx.send(event).await.expect("subsystem concluded early"); - } -} - -/// Assert that the given actions contain the given `action`. -fn assert_network_actions_contains(actions: &[NetworkAction], action: &NetworkAction) { - if !actions.iter().any(|x| x == action) { - panic!("Could not find `{:?}` in `{:?}`", action, actions); - } -} - -#[derive(Clone)] -struct TestSyncOracle { - flag: Arc, - done_syncing_sender: Arc>>>, -} - -struct TestSyncOracleHandle { - done_syncing_receiver: oneshot::Receiver<()>, - flag: Arc, -} - -impl TestSyncOracleHandle { - fn set_done(&self) { - self.flag.store(false, Ordering::SeqCst); - } - - async fn await_mode_switch(self) { - let _ = self.done_syncing_receiver.await; - } -} - -impl SyncOracle for TestSyncOracle { - fn is_major_syncing(&mut self) -> bool { - let is_major_syncing = self.flag.load(Ordering::SeqCst); - - if !is_major_syncing { - if let Some(sender) = self.done_syncing_sender.lock().take() { - let _ = sender.send(()); - } - } - - is_major_syncing - } - - fn is_offline(&mut self) -> bool { - unimplemented!("not used in network bridge") - } -} - -// val - result of `is_major_syncing`. -fn make_sync_oracle(val: bool) -> (TestSyncOracle, TestSyncOracleHandle) { - let (tx, rx) = oneshot::channel(); - let flag = Arc::new(AtomicBool::new(val)); - - ( - TestSyncOracle { - flag: flag.clone(), - done_syncing_sender: Arc::new(Mutex::new(Some(tx))), - }, - TestSyncOracleHandle { - flag, - done_syncing_receiver: rx, - } - ) -} - -fn done_syncing_oracle() -> Box { - let (oracle, _) = make_sync_oracle(false); - Box::new(oracle) -} - -type VirtualOverseer = TestSubsystemContextHandle; - -struct TestHarness { - network_handle: TestNetworkHandle, - virtual_overseer: VirtualOverseer, -} - -fn test_harness>( - sync_oracle: Box, - test: impl FnOnce(TestHarness) -> T, -) { - let pool = sp_core::testing::TaskExecutor::new(); - let (request_multiplexer, req_configs) = RequestMultiplexer::new(); - let (mut network, network_handle, discovery) = new_test_network(req_configs); - let (context, virtual_overseer) = polkadot_node_subsystem_test_helpers::make_subsystem_context(pool); - let network_stream = network.event_stream(); - - let bridge = NetworkBridge { - network_service: network, - authority_discovery_service: discovery, - request_multiplexer, - metrics: Metrics(None), - sync_oracle, - }; - - let network_bridge = run_network( - bridge, - context, - network_stream, - ) - .map_err(|_| panic!("subsystem execution failed")) - .map(|_| ()); - - let test_fut = test(TestHarness { - network_handle, - virtual_overseer, - }); - - futures::pin_mut!(test_fut); - futures::pin_mut!(network_bridge); - - let _ = executor::block_on(future::join(async move { - let mut virtual_overseer = test_fut.await; - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }, network_bridge)); -} - -async fn assert_sends_validation_event_to_all( - event: NetworkBridgeEvent, - virtual_overseer: &mut TestSubsystemContextHandle, -) { - // Ordering must match the enum variant order - // in `AllMessages`. - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::NetworkBridgeUpdateV1(e) - ) if e == event.focus().expect("could not focus message") - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::BitfieldDistribution( - BitfieldDistributionMessage::NetworkBridgeUpdateV1(e) - ) if e == event.focus().expect("could not focus message") - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::ApprovalDistribution( - ApprovalDistributionMessage::NetworkBridgeUpdateV1(e) - ) if e == event.focus().expect("could not focus message") - ); -} - -async fn assert_sends_collation_event_to_all( - event: NetworkBridgeEvent, - virtual_overseer: &mut TestSubsystemContextHandle, -) { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CollatorProtocol( - CollatorProtocolMessage::NetworkBridgeUpdateV1(e) - ) if e == event.focus().expect("could not focus message") - ) -} - -#[test] -fn send_our_view_upon_connection() { - let (oracle, handle) = make_sync_oracle(false); - test_harness(Box::new(oracle), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - let head = Hash::repeat_byte(1); - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: head, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - handle.await_mode_switch().await; - - network_handle.connect_peer(peer.clone(), PeerSet::Validation, ObservedRole::Full).await; - network_handle.connect_peer(peer.clone(), PeerSet::Collation, ObservedRole::Full).await; - - let view = view![head]; - let actions = network_handle.next_network_actions(2).await; - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer.clone(), - PeerSet::Validation, - WireMessage::::ViewUpdate( - view.clone(), - ).encode(), - ), - ); - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer.clone(), - PeerSet::Collation, - WireMessage::::ViewUpdate( - view.clone(), - ).encode(), - ), - ); - virtual_overseer - }); -} - -#[test] -fn sends_view_updates_to_peers() { - let (oracle, handle) = make_sync_oracle(false); - test_harness(Box::new(oracle), |test_harness| async move { - let TestHarness { mut network_handle, mut virtual_overseer } = test_harness; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate { - activated: Default::default(), - deactivated: Default::default(), - } - )) - ).await; - - handle.await_mode_switch().await; - - network_handle.connect_peer( - peer_a.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - network_handle.connect_peer( - peer_b.clone(), - PeerSet::Collation, - ObservedRole::Full, - ).await; - - let actions = network_handle.next_network_actions(2).await; - let wire_message = WireMessage::::ViewUpdate( - View::default(), - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a, - PeerSet::Validation, - wire_message.clone(), - ), - ); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_b, - PeerSet::Collation, - wire_message.clone(), - ), - ); - - let hash_a = Hash::repeat_byte(1); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - let actions = network_handle.next_network_actions(2).await; - let wire_message = WireMessage::::ViewUpdate( - view![hash_a] - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a, - PeerSet::Validation, - wire_message.clone(), - ), - ); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_b, - PeerSet::Collation, - wire_message.clone(), - ), - ); - virtual_overseer - }); -} - -#[test] -fn do_not_send_view_update_until_synced() { - let (oracle, handle) = make_sync_oracle(true); - test_harness(Box::new(oracle), |test_harness| async move { - let TestHarness { mut network_handle, mut virtual_overseer } = test_harness; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - - network_handle.connect_peer( - peer_a.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - network_handle.connect_peer( - peer_b.clone(), - PeerSet::Collation, - ObservedRole::Full, - ).await; - - { - let actions = network_handle.next_network_actions(2).await; - let wire_message = WireMessage::::ViewUpdate( - View::default(), - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a, - PeerSet::Validation, - wire_message.clone(), - ), - ); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_b, - PeerSet::Collation, - wire_message.clone(), - ), - ); - } - - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(1); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - // delay until the previous update has certainly been processed. - futures_timer::Delay::new(std::time::Duration::from_millis(100)).await; - - handle.set_done(); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_b, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - handle.await_mode_switch().await; - - // There should be a mode switch only for the second view update. - { - let actions = network_handle.next_network_actions(2).await; - let wire_message = WireMessage::::ViewUpdate( - view![hash_a, hash_b] - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a, - PeerSet::Validation, - wire_message.clone(), - ), - ); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_b, - PeerSet::Collation, - wire_message.clone(), - ), - ); - } - virtual_overseer - }); -} - -#[test] -fn do_not_send_view_update_when_only_finalized_block_changed() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { mut network_handle, mut virtual_overseer } = test_harness; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - - network_handle.connect_peer( - peer_a.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - network_handle.connect_peer( - peer_b.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - - let hash_a = Hash::repeat_byte(1); - - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::BlockFinalized(Hash::random(), 5))).await; - - // Send some empty active leaves update - // - // This should not trigger a view update to our peers. - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::default())) - ).await; - - // This should trigger the view update to our peers. - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - let actions = network_handle.next_network_actions(4).await; - let wire_message = WireMessage::::ViewUpdate( - View::new(vec![hash_a], 5) - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a, - PeerSet::Validation, - wire_message.clone(), - ), - ); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_b, - PeerSet::Validation, - wire_message.clone(), - ), - ); - virtual_overseer - }); -} - -#[test] -fn peer_view_updates_sent_via_overseer() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - network_handle.connect_peer(peer.clone(), PeerSet::Validation, ObservedRole::Full).await; - - let view = view![Hash::repeat_byte(1)]; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - network_handle.peer_message( - peer.clone(), - PeerSet::Validation, - WireMessage::::ViewUpdate( - view.clone(), - ).encode(), - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), view), - &mut virtual_overseer, - ).await; - virtual_overseer - }); -} - -#[test] -fn peer_messages_sent_via_overseer() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - network_handle.connect_peer( - peer.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - let approval_distribution_message = protocol_v1::ApprovalDistributionMessage::Approvals( - Vec::new() - ); - - let message = protocol_v1::ValidationProtocol::ApprovalDistribution( - approval_distribution_message.clone(), - ); - - network_handle.peer_message( - peer.clone(), - PeerSet::Validation, - WireMessage::ProtocolMessage(message.clone()).encode(), - ).await; - - network_handle.disconnect_peer(peer.clone(), PeerSet::Validation).await; - - // Approval distribution message comes first, and the message is only sent to that subsystem. - // then a disconnection event arises that is sent to all validation networking subsystems. - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::ApprovalDistribution( - ApprovalDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage(p, m) - ) - ) => { - assert_eq!(p, peer); - assert_eq!(m, approval_distribution_message); - } - ); - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerDisconnected(peer), - &mut virtual_overseer, - ).await; - virtual_overseer - }); -} - -#[test] -fn peer_disconnect_from_just_one_peerset() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - network_handle.connect_peer(peer.clone(), PeerSet::Validation, ObservedRole::Full).await; - network_handle.connect_peer(peer.clone(), PeerSet::Collation, ObservedRole::Full).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - { - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - network_handle.disconnect_peer(peer.clone(), PeerSet::Validation).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerDisconnected(peer.clone()), - &mut virtual_overseer, - ).await; - - // to show that we're still connected on the collation protocol, send a view update. - - let hash_a = Hash::repeat_byte(1); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - let actions = network_handle.next_network_actions(3).await; - let wire_message = WireMessage::::ViewUpdate( - view![hash_a] - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer.clone(), - PeerSet::Collation, - wire_message.clone(), - ), - ); - virtual_overseer - }); -} - -#[test] -fn relays_collation_protocol_messages() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - network_handle.connect_peer(peer_a.clone(), PeerSet::Validation, ObservedRole::Full).await; - network_handle.connect_peer(peer_b.clone(), PeerSet::Collation, ObservedRole::Full).await; - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer_a.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer_a.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - { - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer_b.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - // peer A gets reported for sending a collation message. - - let collator_protocol_message = protocol_v1::CollatorProtocolMessage::Declare( - Sr25519Keyring::Alice.public().into(), - Default::default(), - Default::default(), - ); - - let message = protocol_v1::CollationProtocol::CollatorProtocol( - collator_protocol_message.clone() - ); - - network_handle.peer_message( - peer_a.clone(), - PeerSet::Collation, - WireMessage::ProtocolMessage(message.clone()).encode(), - ).await; - - let actions = network_handle.next_network_actions(3).await; - assert_network_actions_contains( - &actions, - &NetworkAction::ReputationChange( - peer_a.clone(), - UNCONNECTED_PEERSET_COST, - ), - ); - - // peer B has the message relayed. - - network_handle.peer_message( - peer_b.clone(), - PeerSet::Collation, - WireMessage::ProtocolMessage(message.clone()).encode(), - ).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::CollatorProtocol( - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage(p, m) - ) - ) => { - assert_eq!(p, peer_b); - assert_eq!(m, collator_protocol_message); - } - ); - virtual_overseer - }); -} - -#[test] -fn different_views_on_different_peer_sets() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - network_handle.connect_peer(peer.clone(), PeerSet::Validation, ObservedRole::Full).await; - network_handle.connect_peer(peer.clone(), PeerSet::Collation, ObservedRole::Full).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - { - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - let view_a = view![Hash::repeat_byte(1)]; - let view_b = view![Hash::repeat_byte(2)]; - - network_handle.peer_message( - peer.clone(), - PeerSet::Validation, - WireMessage::::ViewUpdate(view_a.clone()).encode(), - ).await; - - network_handle.peer_message( - peer.clone(), - PeerSet::Collation, - WireMessage::::ViewUpdate(view_b.clone()).encode(), - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), view_a.clone()), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), view_b.clone()), - &mut virtual_overseer, - ).await; - virtual_overseer - }); -} - -#[test] -fn sent_views_include_finalized_number_update() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { mut network_handle, mut virtual_overseer } = test_harness; - - let peer_a = PeerId::random(); - - network_handle.connect_peer( - peer_a.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(2); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::BlockFinalized(hash_a, 1)) - ).await; - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: hash_b, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }) - )) - ).await; - - let actions = network_handle.next_network_actions(2).await; - let wire_message = WireMessage::::ViewUpdate( - View::new(vec![hash_b], 1) - ).encode(); - - assert_network_actions_contains( - &actions, - &NetworkAction::WriteNotification( - peer_a.clone(), - PeerSet::Validation, - wire_message.clone(), - ), - ); - virtual_overseer - }); -} - -#[test] -fn view_finalized_number_can_not_go_down() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { mut network_handle, virtual_overseer } = test_harness; - - let peer_a = PeerId::random(); - - network_handle.connect_peer( - peer_a.clone(), - PeerSet::Validation, - ObservedRole::Full, - ).await; - - network_handle.peer_message( - peer_a.clone(), - PeerSet::Validation, - WireMessage::::ViewUpdate( - View::new(vec![Hash::repeat_byte(0x01)], 1), - ).encode(), - ).await; - - network_handle.peer_message( - peer_a.clone(), - PeerSet::Validation, - WireMessage::::ViewUpdate( - View::new(vec![], 0), - ).encode(), - ).await; - - let actions = network_handle.next_network_actions(2).await; - assert_network_actions_contains( - &actions, - &NetworkAction::ReputationChange( - peer_a.clone(), - MALFORMED_VIEW_COST, - ), - ); - virtual_overseer - }); -} - -#[test] -fn send_messages_to_peers() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut network_handle, - mut virtual_overseer, - } = test_harness; - - let peer = PeerId::random(); - - network_handle.connect_peer(peer.clone(), PeerSet::Validation, ObservedRole::Full).await; - network_handle.connect_peer(peer.clone(), PeerSet::Collation, ObservedRole::Full).await; - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - // bridge will inform about all connected peers. - { - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - { - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerConnected(peer.clone(), ObservedRole::Full, None), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::default()), - &mut virtual_overseer, - ).await; - } - - // consume peer view changes - { - let _peer_view_changes = network_handle.next_network_actions(2).await; - } - - // send a validation protocol message. - - { - let approval_distribution_message = protocol_v1::ApprovalDistributionMessage::Approvals( - Vec::new() - ); - - let message = protocol_v1::ValidationProtocol::ApprovalDistribution( - approval_distribution_message.clone(), - ); - - virtual_overseer.send(FromOverseer::Communication { - msg: NetworkBridgeMessage::SendValidationMessage( - vec![peer.clone()], - message.clone(), - ) - }).await; - - assert_eq!( - network_handle.next_network_action().await, - NetworkAction::WriteNotification( - peer.clone(), - PeerSet::Validation, - WireMessage::ProtocolMessage(message).encode(), - ) - ); - } - - // send a collation protocol message. - - { - let collator_protocol_message = protocol_v1::CollatorProtocolMessage::Declare( - Sr25519Keyring::Alice.public().into(), - Default::default(), - Default::default(), - ); - - let message = protocol_v1::CollationProtocol::CollatorProtocol( - collator_protocol_message.clone() - ); - - virtual_overseer.send(FromOverseer::Communication { - msg: NetworkBridgeMessage::SendCollationMessage( - vec![peer.clone()], - message.clone(), - ) - }).await; - - assert_eq!( - network_handle.next_network_action().await, - NetworkAction::WriteNotification( - peer.clone(), - PeerSet::Collation, - WireMessage::ProtocolMessage(message).encode(), - ) - ); - } - virtual_overseer - }); -} - -#[test] -fn spread_event_to_subsystems_is_up_to_date() { - // Number of subsystems expected to be interested in a network event, - // and hence the network event broadcasted to. - const EXPECTED_COUNT: usize = 3; - - let mut cnt = 0_usize; - for msg in AllMessages::dispatch_iter(NetworkBridgeEvent::PeerDisconnected(PeerId::random())) { - match msg { - AllMessages::CandidateValidation(_) => unreachable!("Not interested in network events"), - AllMessages::CandidateBacking(_) => unreachable!("Not interested in network events"), - AllMessages::ChainApi(_) => unreachable!("Not interested in network events"), - AllMessages::CollatorProtocol(_) => unreachable!("Not interested in network events"), - AllMessages::StatementDistribution(_) => { cnt += 1; } - AllMessages::AvailabilityDistribution(_) => unreachable!("Not interested in network events"), - AllMessages::AvailabilityRecovery(_) => unreachable!("Not interested in network events"), - AllMessages::BitfieldDistribution(_) => { cnt += 1; } - AllMessages::BitfieldSigning(_) => unreachable!("Not interested in network events"), - AllMessages::Provisioner(_) => unreachable!("Not interested in network events"), - AllMessages::RuntimeApi(_) => unreachable!("Not interested in network events"), - AllMessages::AvailabilityStore(_) => unreachable!("Not interested in network events"), - AllMessages::NetworkBridge(_) => unreachable!("Not interested in network events"), - AllMessages::CollationGeneration(_) => unreachable!("Not interested in network events"), - AllMessages::ApprovalVoting(_) => unreachable!("Not interested in network events"), - AllMessages::ApprovalDistribution(_) => { cnt += 1; } - AllMessages::GossipSupport(_) => unreachable!("Not interested in network events"), - AllMessages::DisputeCoordinator(_) => unreachable!("Not interested in network events"), - AllMessages::DisputeParticipation(_) => unreachable!("Not interetsed in network events"), - AllMessages::ChainSelection(_) => unreachable!("Not interested in network events"), - // Add variants here as needed, `{ cnt += 1; }` for those that need to be - // notified, `unreachable!()` for those that should not. - } - } - assert_eq!(cnt, EXPECTED_COUNT); -} - -#[test] -fn our_view_updates_decreasing_order_and_limited_to_max() { - test_harness(done_syncing_oracle(), |test_harness| async move { - let TestHarness { - mut virtual_overseer, - .. - } = test_harness; - - - // to show that we're still connected on the collation protocol, send a view update. - - let hashes = (0..MAX_VIEW_HEADS * 3).map(|i| Hash::repeat_byte(i as u8)); - - virtual_overseer.send( - FromOverseer::Signal(OverseerSignal::ActiveLeaves( - // These are in reverse order, so the subsystem must sort internally to - // get the correct view. - ActiveLeavesUpdate { - activated: hashes.enumerate().map(|(i, h)| ActivatedLeaf { - hash: h, - number: i as _, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }).rev().collect(), - deactivated: Default::default(), - } - )) - ).await; - - let view_heads = (MAX_VIEW_HEADS * 2 .. MAX_VIEW_HEADS * 3).rev() - .map(|i| (Hash::repeat_byte(i as u8), Arc::new(jaeger::Span::Disabled)) ); - - let our_view = OurView::new( - view_heads, - 0, - ); - - assert_matches!( - virtual_overseer.recv().await, - AllMessages::StatementDistribution( - StatementDistributionMessage::StatementFetchingReceiver(_) - ) - ); - - assert_sends_validation_event_to_all( - NetworkBridgeEvent::OurViewChange(our_view.clone()), - &mut virtual_overseer, - ).await; - - assert_sends_collation_event_to_all( - NetworkBridgeEvent::OurViewChange(our_view), - &mut virtual_overseer, - ).await; - virtual_overseer - }); -} diff --git a/node/network/bridge/src/validator_discovery.rs b/node/network/bridge/src/validator_discovery.rs deleted file mode 100644 index 2debf12d8c0e..000000000000 --- a/node/network/bridge/src/validator_discovery.rs +++ /dev/null @@ -1,318 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A validator discovery service for the Network Bridge. - -use crate::Network; - -use core::marker::PhantomData; -use std::collections::HashSet; - -use async_trait::async_trait; -use futures::channel::oneshot; - -use sc_network::multiaddr::Multiaddr; -use sc_authority_discovery::Service as AuthorityDiscoveryService; -use polkadot_node_network_protocol::PeerId; -use polkadot_primitives::v1::AuthorityDiscoveryId; -use polkadot_node_network_protocol::peer_set::{PeerSet, PerPeerSet}; - -const LOG_TARGET: &str = "parachain::validator-discovery"; - -/// An abstraction over the authority discovery service. -#[async_trait] -pub trait AuthorityDiscovery: Send + Clone + 'static { - /// Get the addresses for the given [`AuthorityId`] from the local address cache. - async fn get_addresses_by_authority_id(&mut self, authority: AuthorityDiscoveryId) -> Option>; - /// Get the [`AuthorityId`] for the given [`PeerId`] from the local address cache. - async fn get_authority_id_by_peer_id(&mut self, peer_id: PeerId) -> Option; -} - -#[async_trait] -impl AuthorityDiscovery for AuthorityDiscoveryService { - async fn get_addresses_by_authority_id(&mut self, authority: AuthorityDiscoveryId) -> Option> { - AuthorityDiscoveryService::get_addresses_by_authority_id(self, authority).await - } - - async fn get_authority_id_by_peer_id(&mut self, peer_id: PeerId) -> Option { - AuthorityDiscoveryService::get_authority_id_by_peer_id(self, peer_id).await - } -} - -pub(super) struct Service { - state: PerPeerSet, - // PhantomData used to make the struct generic instead of having generic methods - _phantom: PhantomData<(N, AD)>, -} - -#[derive(Default)] -struct StatePerPeerSet { - previously_requested: HashSet, -} - -impl Service { - pub fn new() -> Self { - Self { - state: Default::default(), - _phantom: PhantomData, - } - } - - /// On a new connection request, a peer set update will be issued. - /// It will ask the network to connect to the validators and not disconnect - /// from them at least until the next request is issued for the same peer set. - /// - /// This method will also disconnect from previously connected validators not in the `validator_ids` set. - /// it takes `network_service` and `authority_discovery_service` by value - /// and returns them as a workaround for the Future: Send requirement imposed by async fn impl. - pub async fn on_request( - &mut self, - validator_ids: Vec, - peer_set: PeerSet, - failed: oneshot::Sender, - mut network_service: N, - mut authority_discovery_service: AD, - ) -> (N, AD) { - // collect multiaddress of validators - let mut failed_to_resolve: usize = 0; - let mut newly_requested = HashSet::new(); - let requested = validator_ids.len(); - for authority in validator_ids.into_iter() { - let result = authority_discovery_service.get_addresses_by_authority_id(authority.clone()).await; - if let Some(addresses) = result { - newly_requested.extend(addresses); - } else { - failed_to_resolve += 1; - tracing::debug!(target: LOG_TARGET, "Authority Discovery couldn't resolve {:?}", authority); - } - } - - let state = &mut self.state[peer_set]; - // clean up revoked requests - let multiaddr_to_remove: HashSet<_> = state.previously_requested - .difference(&newly_requested) - .cloned() - .collect(); - let multiaddr_to_add: HashSet<_> = newly_requested.difference(&state.previously_requested) - .cloned() - .collect(); - state.previously_requested = newly_requested; - - tracing::debug!( - target: LOG_TARGET, - ?peer_set, - ?requested, - added = multiaddr_to_add.len(), - removed = multiaddr_to_remove.len(), - ?failed_to_resolve, - "New ConnectToValidators request", - ); - // ask the network to connect to these nodes and not disconnect - // from them until removed from the set - if let Err(e) = network_service.add_to_peers_set( - peer_set.into_protocol_name(), - multiaddr_to_add, - ).await { - tracing::warn!(target: LOG_TARGET, err = ?e, "AuthorityDiscoveryService returned an invalid multiaddress"); - } - // the addresses are known to be valid - let _ = network_service.remove_from_peers_set( - peer_set.into_protocol_name(), - multiaddr_to_remove - ).await; - - let _ = failed.send(failed_to_resolve); - - (network_service, authority_discovery_service) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::network::Network; - - use std::{borrow::Cow, collections::HashMap}; - use futures::stream::BoxStream; - use sc_network::{Event as NetworkEvent, IfDisconnected}; - use sp_keyring::Sr25519Keyring; - use polkadot_node_network_protocol::request_response::request::Requests; - - fn new_service() -> Service { - Service::new() - } - - fn new_network() -> (TestNetwork, TestAuthorityDiscovery) { - (TestNetwork::default(), TestAuthorityDiscovery::new()) - } - - #[derive(Default, Clone)] - struct TestNetwork { - peers_set: HashSet, - } - - #[derive(Default, Clone)] - struct TestAuthorityDiscovery { - by_authority_id: HashMap, - by_peer_id: HashMap, - } - - impl TestAuthorityDiscovery { - fn new() -> Self { - let peer_ids = known_peer_ids(); - let authorities = known_authorities(); - let multiaddr = known_multiaddr(); - Self { - by_authority_id: authorities.iter() - .cloned() - .zip(multiaddr.into_iter()) - .collect(), - by_peer_id: peer_ids.into_iter() - .zip(authorities.into_iter()) - .collect(), - } - } - } - - #[async_trait] - impl Network for TestNetwork { - fn event_stream(&mut self) -> BoxStream<'static, NetworkEvent> { - panic!() - } - - async fn add_to_peers_set(&mut self, _protocol: Cow<'static, str>, multiaddresses: HashSet) -> Result<(), String> { - self.peers_set.extend(multiaddresses.into_iter()); - Ok(()) - } - - async fn remove_from_peers_set(&mut self, _protocol: Cow<'static, str>, multiaddresses: HashSet) -> Result<(), String> { - self.peers_set.retain(|elem| !multiaddresses.contains(elem)); - Ok(()) - } - - async fn start_request(&self, _: &mut AD, _: Requests, _: IfDisconnected) { - } - - fn report_peer(&self, _: PeerId, _: crate::Rep) { - panic!() - } - - fn disconnect_peer(&self, _: PeerId, _: PeerSet) { - panic!() - } - - fn write_notification( - &self, - _: PeerId, - _: PeerSet, - _: Vec, - ) { - panic!() - } - } - - #[async_trait] - impl AuthorityDiscovery for TestAuthorityDiscovery { - async fn get_addresses_by_authority_id(&mut self, authority: AuthorityDiscoveryId) -> Option> { - self.by_authority_id.get(&authority).cloned().map(|addr| vec![addr]) - } - - async fn get_authority_id_by_peer_id(&mut self, peer_id: PeerId) -> Option { - self.by_peer_id.get(&peer_id).cloned() - } - } - - fn known_authorities() -> Vec { - [ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - ].iter().map(|k| k.public().into()).collect() - } - - fn known_peer_ids() -> Vec { - (0..3).map(|_| PeerId::random()).collect() - } - - fn known_multiaddr() -> Vec { - vec![ - "/ip4/127.0.0.1/tcp/1234".parse().unwrap(), - "/ip4/127.0.0.1/tcp/1235".parse().unwrap(), - "/ip4/127.0.0.1/tcp/1236".parse().unwrap(), - ] - } - // Test cleanup works. - #[test] - fn old_multiaddrs_are_removed_on_new_request() { - let mut service = new_service(); - - let (ns, ads) = new_network(); - - let authority_ids: Vec<_> = ads.by_peer_id.values().cloned().collect(); - - futures::executor::block_on(async move { - let (failed, _) = oneshot::channel(); - let (ns, ads) = service.on_request( - vec![authority_ids[0].clone()], - PeerSet::Validation, - failed, - ns, - ads, - ).await; - - let (failed, _) = oneshot::channel(); - let (_, ads) = service.on_request( - vec![authority_ids[1].clone()], - PeerSet::Validation, - failed, - ns, - ads, - ).await; - - let state = &service.state[PeerSet::Validation]; - assert_eq!(state.previously_requested.len(), 1); - assert!(state.previously_requested.contains(ads.by_authority_id.get(&authority_ids[1]).unwrap())); - }); - } - - #[test] - fn failed_resolution_is_reported_properly() { - let mut service = new_service(); - - let (ns, ads) = new_network(); - - let authority_ids: Vec<_> = ads.by_peer_id.values().cloned().collect(); - - futures::executor::block_on(async move { - let (failed, failed_rx) = oneshot::channel(); - let unknown = Sr25519Keyring::Ferdie.public().into(); - let (_, ads) = service.on_request( - vec![authority_ids[0].clone(), unknown], - PeerSet::Validation, - failed, - ns, - ads, - ).await; - - let state = &service.state[PeerSet::Validation]; - assert_eq!(state.previously_requested.len(), 1); - assert!(state.previously_requested.contains(ads.by_authority_id.get(&authority_ids[0]).unwrap())); - - let failed = failed_rx.await.unwrap(); - assert_eq!(failed, 1); - }); - } -} diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml deleted file mode 100644 index 971e4903f22a..000000000000 --- a/node/network/collator-protocol/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "polkadot-collator-protocol" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -always-assert = "0.1.2" -futures = "0.3.15" -futures-timer = "3" -thiserror = "1.0.23" -tracing = "0.1.26" - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-network-protocol = { path = "../../network/protocol" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } - -[dev-dependencies] -log = "0.4.13" -env_logger = "0.8.4" -assert_matches = "1.4.0" - -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-subsystem-testhelpers = { package = "polkadot-node-subsystem-test-helpers", path = "../../subsystem-test-helpers" } diff --git a/node/network/collator-protocol/src/collator_side/mod.rs b/node/network/collator-protocol/src/collator_side/mod.rs deleted file mode 100644 index 5fae120b6156..000000000000 --- a/node/network/collator-protocol/src/collator_side/mod.rs +++ /dev/null @@ -1,877 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::{HashMap, HashSet}; - -use futures::{FutureExt, channel::oneshot}; -use sp_core::Pair; - -use polkadot_primitives::v1::{AuthorityDiscoveryId, CandidateHash, CandidateReceipt, CollatorPair, CoreIndex, CoreState, GroupIndex, Hash, Id as ParaId}; -use polkadot_subsystem::{ - FromOverseer, OverseerSignal, PerLeafSpan, SubsystemContext, jaeger, - messages::{ - AllMessages, CollatorProtocolMessage, NetworkBridgeEvent, NetworkBridgeMessage, - }, -}; -use polkadot_node_network_protocol::{ - OurView, PeerId, View, peer_set::PeerSet, - request_response::{ - IncomingRequest, - v1::{CollationFetchingRequest, CollationFetchingResponse}, - }, - v1 as protocol_v1, - UnifiedReputationChange as Rep, -}; -use polkadot_node_subsystem_util::{ - metrics::{self, prometheus}, - runtime::{RuntimeInfo, get_availability_cores, get_group_rotation_info} -}; -use polkadot_node_primitives::{SignedFullStatement, Statement, PoV}; - -use crate::error::{Fatal, NonFatal, log_error}; -use super::{LOG_TARGET, Result}; - -#[cfg(test)] -mod tests; - -const COST_UNEXPECTED_MESSAGE: Rep = Rep::CostMinor("An unexpected message"); - -#[derive(Clone, Default)] -pub struct Metrics(Option); - -impl Metrics { - fn on_advertisment_made(&self) { - if let Some(metrics) = &self.0 { - metrics.advertisements_made.inc(); - } - } - - fn on_collation_sent(&self) { - if let Some(metrics) = &self.0 { - metrics.collations_sent.inc(); - } - } - - /// Provide a timer for `process_msg` which observes on drop. - fn time_process_msg(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_msg.start_timer()) - } -} - -#[derive(Clone)] -struct MetricsInner { - advertisements_made: prometheus::Counter, - collations_sent: prometheus::Counter, - process_msg: prometheus::Histogram, -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) - -> std::result::Result - { - let metrics = MetricsInner { - advertisements_made: prometheus::register( - prometheus::Counter::new( - "parachain_collation_advertisements_made_total", - "A number of collation advertisements sent to validators.", - )?, - registry, - )?, - collations_sent: prometheus::register( - prometheus::Counter::new( - "parachain_collations_sent_total", - "A number of collations sent to validators.", - )?, - registry, - )?, - process_msg: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collator_protocol_collator_process_msg", - "Time spent within `collator_protocol_collator::process_msg`", - ) - )?, - registry, - )?, - }; - - Ok(Metrics(Some(metrics))) - } -} - -/// The group of validators that is assigned to our para at a given point of time. -/// -/// This structure is responsible for keeping track of which validators belong to a certain group for a para. It also -/// stores a mapping from [`PeerId`] to [`ValidatorId`] as we learn about it over the lifetime of this object. Besides -/// that it also keeps track to which validators we advertised our collation. -#[derive(Debug)] -struct ValidatorGroup { - /// All [`AuthorityDiscoveryId`]'s that are assigned to us in this group. - discovery_ids: HashSet, - /// All [`ValidatorId`]'s of the current group to that we advertised our collation. - advertised_to: HashSet, -} - -impl ValidatorGroup { - /// Returns `true` if we should advertise our collation to the given peer. - fn should_advertise_to(&self, peer_ids: &HashMap, peer: &PeerId) - -> bool { - match peer_ids.get(peer) { - Some(discovery_id) => !self.advertised_to.contains(discovery_id), - None => false, - } - } - - /// Should be called after we advertised our collation to the given `peer` to keep track of it. - fn advertised_to_peer(&mut self, peer_ids: &HashMap, peer: &PeerId) { - if let Some(validator_id) = peer_ids.get(peer) { - self.advertised_to.insert(validator_id.clone()); - } - } -} - -impl From> for ValidatorGroup { - fn from(discovery_ids: HashSet) -> Self { - Self { - discovery_ids, - advertised_to: HashSet::new(), - } - } -} - -/// The status of a collation as seen from the collator. -enum CollationStatus { - /// The collation was created, but we did not advertise it to any validator. - Created, - /// The collation was advertised to at least one validator. - Advertised, - /// The collation was requested by at least one validator. - Requested, -} - -impl CollationStatus { - /// Advance to the [`Self::Advertised`] status. - /// - /// This ensures that `self` isn't already [`Self::Requested`]. - fn advance_to_advertised(&mut self) { - if !matches!(self, Self::Requested) { - *self = Self::Advertised; - } - } - - /// Advance to the [`Self::Requested`] status. - fn advance_to_requested(&mut self) { - *self = Self::Requested; - } -} - -/// A collation built by the collator. -struct Collation { - receipt: CandidateReceipt, - pov: PoV, - status: CollationStatus, -} - -struct State { - /// Our network peer id. - local_peer_id: PeerId, - - /// Our collator pair. - collator_pair: CollatorPair, - - /// The para this collator is collating on. - /// Starts as `None` and is updated with every `CollateOn` message. - collating_on: Option, - - /// Track all active peers and their views - /// to determine what is relevant to them. - peer_views: HashMap, - - /// Our own view. - view: OurView, - - /// Span per relay parent. - span_per_relay_parent: HashMap, - - /// Possessed collations. - /// - /// We will keep up to one local collation per relay-parent. - collations: HashMap, - - /// The result senders per collation. - collation_result_senders: HashMap>, - - /// Our validator groups per active leaf. - our_validators_groups: HashMap, - - /// The mapping from [`PeerId`] to [`ValidatorId`]. This is filled over time as we learn the [`PeerId`]'s by `PeerConnected` events. - peer_ids: HashMap, - - /// Metrics. - metrics: Metrics, -} - -impl State { - /// Creates a new `State` instance with the given parameters and setting all remaining - /// state fields to their default values (i.e. empty). - fn new(local_peer_id: PeerId, collator_pair: CollatorPair, metrics: Metrics) -> State { - State { - local_peer_id, - collator_pair, - metrics, - collating_on: Default::default(), - peer_views: Default::default(), - view: Default::default(), - span_per_relay_parent: Default::default(), - collations: Default::default(), - collation_result_senders: Default::default(), - our_validators_groups: Default::default(), - peer_ids: Default::default(), - } - } - - /// Get all peers which have the given relay parent in their view. - fn peers_interested_in_leaf(&self, relay_parent: &Hash) -> Vec { - self.peer_views - .iter() - .filter(|(_, v)| v.contains(relay_parent)) - .map(|(peer, _)| *peer) - .collect() - } -} - -/// Distribute a collation. -/// -/// Figure out the core our para is assigned to and the relevant validators. -/// Issue a connection request to these validators. -/// If the para is not scheduled or next up on any core, at the relay-parent, -/// or the relay-parent isn't in the active-leaves set, we ignore the message -/// as it must be invalid in that case - although this indicates a logic error -/// elsewhere in the node. -async fn distribute_collation( - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - state: &mut State, - id: ParaId, - receipt: CandidateReceipt, - pov: PoV, - result_sender: Option>, -) -> Result<()> { - let relay_parent = receipt.descriptor.relay_parent; - - // This collation is not in the active-leaves set. - if !state.view.contains(&relay_parent) { - tracing::warn!( - target: LOG_TARGET, - ?relay_parent, - "distribute collation message parent is outside of our view", - ); - - return Ok(()); - } - - // We have already seen collation for this relay parent. - if state.collations.contains_key(&relay_parent) { - return Ok(()); - } - - // Determine which core the para collated-on is assigned to. - // If it is not scheduled then ignore the message. - let (our_core, num_cores) = match determine_core(ctx, id, relay_parent).await? { - Some(core) => core, - None => { - tracing::warn!( - target: LOG_TARGET, - para_id = %id, - ?relay_parent, - "looks like no core is assigned to {} at {}", id, relay_parent, - ); - - return Ok(()) - } - }; - - // Determine the group on that core and the next group on that core. - let (current_validators, next_validators) = - determine_our_validators(ctx, runtime, our_core, num_cores, relay_parent,).await?; - - if current_validators.validators.is_empty() && next_validators.validators.is_empty() { - tracing::warn!( - target: LOG_TARGET, - core = ?our_core, - "there are no validators assigned to core", - ); - - return Ok(()); - } - - tracing::debug!( - target: LOG_TARGET, - para_id = %id, - relay_parent = %relay_parent, - candidate_hash = ?receipt.hash(), - pov_hash = ?pov.hash(), - core = ?our_core, - ?current_validators, - ?next_validators, - "Accepted collation, connecting to validators." - ); - - let validator_group: HashSet<_> = current_validators.validators.iter().map(Clone::clone).collect(); - - // Issue a discovery request for the validators of the current group and the next group: - connect_to_validators( - ctx, - current_validators.validators - .into_iter() - .chain(next_validators.validators.into_iter()) - .collect(), - ).await; - - state.our_validators_groups.insert(relay_parent, validator_group.into()); - - if let Some(result_sender) = result_sender { - state.collation_result_senders.insert(receipt.hash(), result_sender); - } - - state.collations.insert(relay_parent, Collation { receipt, pov, status: CollationStatus::Created }); - - // Make sure already connected peers get collations: - for peer_id in state.peers_interested_in_leaf(&relay_parent) { - advertise_collation(ctx, state, relay_parent, peer_id).await; - } - - Ok(()) -} - -/// Get the Id of the Core that is assigned to the para being collated on if any -/// and the total number of cores. -async fn determine_core( - ctx: &mut impl SubsystemContext, - para_id: ParaId, - relay_parent: Hash, -) -> Result> { - let cores = get_availability_cores(ctx, relay_parent).await?; - - for (idx, core) in cores.iter().enumerate() { - if let CoreState::Scheduled(occupied) = core { - if occupied.para_id == para_id { - return Ok(Some(((idx as u32).into(), cores.len()))); - } - } - } - Ok(None) -} - -/// Validators of a particular group index. -#[derive(Debug)] -struct GroupValidators { - /// The group those validators belong to. - group: GroupIndex, - /// The validators of above group (their discovery keys). - validators: Vec, -} - -/// Figure out current and next group of validators assigned to the para being collated on. -/// -/// Returns [`ValidatorId`]'s of current and next group as determined based on the `relay_parent`. -async fn determine_our_validators( - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - core_index: CoreIndex, - cores: usize, - relay_parent: Hash, -) -> Result<(GroupValidators, GroupValidators)> { - let session_index = runtime.get_session_index(ctx, relay_parent).await?; - let info = &runtime.get_session_info_by_index(ctx, relay_parent, session_index) - .await? - .session_info; - tracing::debug!(target: LOG_TARGET, ?session_index, "Received session info"); - let groups = &info.validator_groups; - let rotation_info = get_group_rotation_info(ctx, relay_parent).await?; - - let current_group_index = rotation_info.group_for_core(core_index, cores); - let current_validators = groups.get(current_group_index.0 as usize).map(|v| v.as_slice()).unwrap_or_default(); - - let next_group_idx = (current_group_index.0 as usize + 1) % groups.len(); - let next_validators = groups.get(next_group_idx).map(|v| v.as_slice()).unwrap_or_default(); - - let validators = &info.discovery_keys; - - let current_validators = current_validators.iter().map(|i| validators[i.0 as usize].clone()).collect(); - let next_validators = next_validators.iter().map(|i| validators[i.0 as usize].clone()).collect(); - - let current_validators = GroupValidators { - group: current_group_index, - validators: current_validators, - }; - let next_validators = GroupValidators { - group: GroupIndex(next_group_idx as u32), - validators: next_validators, - }; - - Ok((current_validators, next_validators)) -} - -/// Issue a `Declare` collation message to the given `peer`. -async fn declare( - ctx: &mut impl SubsystemContext, - state: &mut State, - peer: PeerId, -) { - let declare_signature_payload = protocol_v1::declare_signature_payload(&state.local_peer_id); - - if let Some(para_id) = state.collating_on { - let wire_message = protocol_v1::CollatorProtocolMessage::Declare( - state.collator_pair.public(), - para_id, - state.collator_pair.sign(&declare_signature_payload), - ); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendCollationMessage( - vec![peer], - protocol_v1::CollationProtocol::CollatorProtocol(wire_message), - ) - )).await; - } -} - -/// Issue a connection request to a set of validators and -/// revoke the previous connection request. -async fn connect_to_validators( - ctx: &mut impl SubsystemContext, - validator_ids: Vec, -) { - // ignore address resolution failure - // will reissue a new request on new collation - let (failed, _) = oneshot::channel(); - ctx.send_message(AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, peer_set: PeerSet::Collation, failed, - })).await; -} - -/// Advertise collation to the given `peer`. -/// -/// This will only advertise a collation if there exists one for the given `relay_parent` and the given `peer` is -/// set as validator for our para at the given `relay_parent`. -async fn advertise_collation( - ctx: &mut impl SubsystemContext, - state: &mut State, - relay_parent: Hash, - peer: PeerId, -) { - let should_advertise = state.our_validators_groups - .get(&relay_parent) - .map(|g| g.should_advertise_to(&state.peer_ids, &peer)) - .unwrap_or(false); - - match (state.collations.get_mut(&relay_parent), should_advertise) { - (None, _) => { - tracing::trace!( - target: LOG_TARGET, - ?relay_parent, - peer_id = %peer, - "No collation to advertise.", - ); - return - }, - (_, false) => { - tracing::debug!( - target: LOG_TARGET, - ?relay_parent, - peer_id = %peer, - "Not advertising collation as we already advertised it to this validator.", - ); - return - } - (Some(collation), true) => { - tracing::debug!( - target: LOG_TARGET, - ?relay_parent, - peer_id = %peer, - "Advertising collation.", - ); - collation.status.advance_to_advertised() - }, - } - - let wire_message = protocol_v1::CollatorProtocolMessage::AdvertiseCollation( - relay_parent, - ); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendCollationMessage( - vec![peer.clone()], - protocol_v1::CollationProtocol::CollatorProtocol(wire_message), - ) - )).await; - - if let Some(validators) = state.our_validators_groups.get_mut(&relay_parent) { - validators.advertised_to_peer(&state.peer_ids, &peer); - } - - state.metrics.on_advertisment_made(); -} - -/// The main incoming message dispatching switch. -async fn process_msg( - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - state: &mut State, - msg: CollatorProtocolMessage, -) -> Result<()> { - use CollatorProtocolMessage::*; - - let _timer = state.metrics.time_process_msg(); - - match msg { - CollateOn(id) => { - state.collating_on = Some(id); - } - DistributeCollation(receipt, pov, result_sender) => { - let _span1 = state.span_per_relay_parent - .get(&receipt.descriptor.relay_parent).map(|s| s.child("distributing-collation")); - let _span2 = jaeger::Span::new(&pov, "distributing-collation"); - match state.collating_on { - Some(id) if receipt.descriptor.para_id != id => { - // If the ParaId of a collation requested to be distributed does not match - // the one we expect, we ignore the message. - tracing::warn!( - target: LOG_TARGET, - para_id = %receipt.descriptor.para_id, - collating_on = %id, - "DistributeCollation for unexpected para_id", - ); - } - Some(id) => { - distribute_collation(ctx, runtime, state, id, receipt, pov, result_sender).await?; - } - None => { - tracing::warn!( - target: LOG_TARGET, - para_id = %receipt.descriptor.para_id, - "DistributeCollation message while not collating on any", - ); - } - } - } - ReportCollator(_) => { - tracing::warn!( - target: LOG_TARGET, - "ReportCollator message is not expected on the collator side of the protocol", - ); - } - NetworkBridgeUpdateV1(event) => { - if let Err(e) = handle_network_msg( - ctx, - runtime, - state, - event, - ).await { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Failed to handle incoming network message", - ); - } - }, - CollationFetchingRequest(incoming) => { - let _span = state.span_per_relay_parent.get(&incoming.payload.relay_parent).map(|s| s.child("request-collation")); - match state.collating_on { - Some(our_para_id) => { - if our_para_id == incoming.payload.para_id { - let (receipt, pov) = if let Some(collation) = state.collations.get_mut(&incoming.payload.relay_parent) { - collation.status.advance_to_requested(); - (collation.receipt.clone(), collation.pov.clone()) - } else { - tracing::warn!( - target: LOG_TARGET, - relay_parent = %incoming.payload.relay_parent, - "received a `RequestCollation` for a relay parent we don't have collation stored.", - ); - - return Ok(()); - }; - - let _span = _span.as_ref().map(|s| s.child("sending")); - send_collation(state, incoming, receipt, pov).await; - } else { - tracing::warn!( - target: LOG_TARGET, - for_para_id = %incoming.payload.para_id, - our_para_id = %our_para_id, - "received a `CollationFetchingRequest` for unexpected para_id", - ); - } - } - None => { - tracing::warn!( - target: LOG_TARGET, - for_para_id = %incoming.payload.para_id, - "received a `RequestCollation` while not collating on any para", - ); - } - } - } - _ => {}, - } - - Ok(()) -} - -/// Issue a response to a previously requested collation. -async fn send_collation( - state: &mut State, - request: IncomingRequest, - receipt: CandidateReceipt, - pov: PoV, -) { - if let Err(_) = request.send_response(CollationFetchingResponse::Collation(receipt, pov)) { - tracing::warn!( - target: LOG_TARGET, - "Sending collation response failed", - ); - } - state.metrics.on_collation_sent(); -} - -/// A networking messages switch. -async fn handle_incoming_peer_message( - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - state: &mut State, - origin: PeerId, - msg: protocol_v1::CollatorProtocolMessage, -) -> Result<()> { - use protocol_v1::CollatorProtocolMessage::*; - - match msg { - Declare(_, _, _) => { - tracing::trace!( - target: LOG_TARGET, - ?origin, - "Declare message is not expected on the collator side of the protocol", - ); - - // If we are declared to, this is another collator, and we should disconnect. - ctx.send_message( - NetworkBridgeMessage::DisconnectPeer(origin, PeerSet::Collation).into() - ).await; - } - AdvertiseCollation(_) => { - tracing::trace!( - target: LOG_TARGET, - ?origin, - "AdvertiseCollation message is not expected on the collator side of the protocol", - ); - - ctx.send_message( - NetworkBridgeMessage::ReportPeer(origin.clone(), COST_UNEXPECTED_MESSAGE).into() - ).await; - - // If we are advertised to, this is another collator, and we should disconnect. - ctx.send_message( - NetworkBridgeMessage::DisconnectPeer(origin, PeerSet::Collation).into() - ).await; - } - CollationSeconded(relay_parent, statement) => { - if !matches!(statement.unchecked_payload(), Statement::Seconded(_)) { - tracing::warn!( - target: LOG_TARGET, - ?statement, - ?origin, - "Collation seconded message received with none-seconded statement.", - ); - } else { - let statement = runtime.check_signature(ctx, relay_parent, statement) - .await? - .map_err(NonFatal::InvalidStatementSignature)?; - - let removed = state.collation_result_senders - .remove(&statement.payload().candidate_hash()); - - if let Some(sender) = removed { - tracing::trace!( - target: LOG_TARGET, - ?statement, - ?origin, - "received a `CollationSeconded`", - ); - let _ = sender.send(statement); - } - } - } - } - - Ok(()) -} - -/// Our view has changed. -async fn handle_peer_view_change( - ctx: &mut impl SubsystemContext, - state: &mut State, - peer_id: PeerId, - view: View, -) { - let current = state.peer_views.entry(peer_id.clone()).or_default(); - - let added: Vec = view.difference(&*current).cloned().collect(); - - *current = view; - - for added in added.into_iter() { - advertise_collation(ctx, state, added, peer_id.clone()).await; - } -} - -/// Bridge messages switch. -async fn handle_network_msg( - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - state: &mut State, - bridge_message: NetworkBridgeEvent, -) -> Result<()> { - use NetworkBridgeEvent::*; - - match bridge_message { - PeerConnected(peer_id, observed_role, maybe_authority) => { - // If it is possible that a disconnected validator would attempt a reconnect - // it should be handled here. - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?observed_role, - "Peer connected", - ); - if let Some(authority) = maybe_authority { - tracing::trace!( - target: LOG_TARGET, - ?authority, - ?peer_id, - "Connected to requested validator" - ); - state.peer_ids.insert(peer_id, authority); - - declare(ctx, state, peer_id).await; - } - } - PeerViewChange(peer_id, view) => { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - ?view, - "Peer view change", - ); - handle_peer_view_change(ctx, state, peer_id, view).await; - } - PeerDisconnected(peer_id) => { - tracing::trace!( - target: LOG_TARGET, - ?peer_id, - "Peer disconnected", - ); - state.peer_views.remove(&peer_id); - state.peer_ids.remove(&peer_id); - } - OurViewChange(view) => { - tracing::trace!( - target: LOG_TARGET, - ?view, - "Own view change", - ); - handle_our_view_change(state, view).await?; - } - PeerMessage(remote, msg) => { - handle_incoming_peer_message(ctx, runtime, state, remote, msg).await?; - } - NewGossipTopology(..) => { - // impossibru! - } - } - - Ok(()) -} - -/// Handles our view changes. -async fn handle_our_view_change( - state: &mut State, - view: OurView, -) -> Result<()> { - for removed in state.view.difference(&view) { - tracing::debug!(target: LOG_TARGET, relay_parent = ?removed, "Removing relay parent because our view changed."); - - if let Some(collation) = state.collations.remove(removed) { - state.collation_result_senders.remove(&collation.receipt.hash()); - - match collation.status { - CollationStatus::Created => tracing::warn!( - target: LOG_TARGET, - candidate_hash = ?collation.receipt.hash(), - pov_hash = ?collation.pov.hash(), - "Collation wasn't advertised to any validator.", - ), - CollationStatus::Advertised => tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?collation.receipt.hash(), - pov_hash = ?collation.pov.hash(), - "Collation was advertised but not requested by any validator.", - ), - CollationStatus::Requested => tracing::debug!( - target: LOG_TARGET, - candidate_hash = ?collation.receipt.hash(), - pov_hash = ?collation.pov.hash(), - "Collation was requested.", - ) - } - } - state.our_validators_groups.remove(removed); - state.span_per_relay_parent.remove(removed); - } - - state.view = view; - - Ok(()) -} - -/// The collator protocol collator side main loop. -pub(crate) async fn run( - mut ctx: impl SubsystemContext, - local_peer_id: PeerId, - collator_pair: CollatorPair, - metrics: Metrics, -) -> Result<()> { - use FromOverseer::*; - use OverseerSignal::*; - - let mut state = State::new(local_peer_id, collator_pair, metrics); - let mut runtime = RuntimeInfo::new(None); - - loop { - let msg = ctx.recv().fuse().await.map_err(Fatal::SubsystemReceive)?; - match msg { - Communication { msg } => { - log_error( - process_msg(&mut ctx, &mut runtime, &mut state, msg).await, - "Failed to process message" - )?; - }, - Signal(ActiveLeaves(_update)) => {} - Signal(BlockFinalized(..)) => {} - Signal(Conclude) => return Ok(()), - } - } -} diff --git a/node/network/collator-protocol/src/collator_side/tests.rs b/node/network/collator-protocol/src/collator_side/tests.rs deleted file mode 100644 index 1153ff5c73b9..000000000000 --- a/node/network/collator-protocol/src/collator_side/tests.rs +++ /dev/null @@ -1,793 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; - -use std::{sync::Arc, time::Duration}; - -use assert_matches::assert_matches; -use futures::{executor, future, Future}; - -use sp_core::{crypto::Pair, Decode}; -use sp_keyring::Sr25519Keyring; -use sp_runtime::traits::AppVerify; - -use polkadot_node_network_protocol::{ - our_view, - view, - request_response::request::IncomingRequest, -}; -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_primitives::v1::{AuthorityDiscoveryId, CandidateDescriptor, CollatorPair, GroupRotationInfo, ScheduledCore, SessionIndex, SessionInfo, ValidatorId, ValidatorIndex}; -use polkadot_node_primitives::BlockData; -use polkadot_subsystem::{ - jaeger, - messages::{RuntimeApiMessage, RuntimeApiRequest}, - ActiveLeavesUpdate, ActivatedLeaf, LeafStatus, -}; -use polkadot_subsystem_testhelpers as test_helpers; - -#[derive(Default)] -struct TestCandidateBuilder { - para_id: ParaId, - pov_hash: Hash, - relay_parent: Hash, - commitments_hash: Hash, -} - -impl TestCandidateBuilder { - fn build(self) -> CandidateReceipt { - CandidateReceipt { - descriptor: CandidateDescriptor { - para_id: self.para_id, - pov_hash: self.pov_hash, - relay_parent: self.relay_parent, - ..Default::default() - }, - commitments_hash: self.commitments_hash, - } - } -} - -#[derive(Clone)] -struct TestState { - para_id: ParaId, - validators: Vec, - session_info: SessionInfo, - group_rotation_info: GroupRotationInfo, - validator_peer_id: Vec, - relay_parent: Hash, - availability_core: CoreState, - local_peer_id: PeerId, - collator_pair: CollatorPair, - session_index: SessionIndex, -} - -fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() -} - -fn validator_authority_id(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() -} - -impl Default for TestState { - fn default() -> Self { - let para_id = ParaId::from(1); - - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - - let validator_public = validator_pubkeys(&validators); - let discovery_keys = validator_authority_id(&validators); - - let validator_peer_id = std::iter::repeat_with(|| PeerId::random()) - .take(discovery_keys.len()) - .collect(); - - let validator_groups = vec![vec![2, 0, 4], vec![3, 2, 4]] - .into_iter().map(|g| g.into_iter().map(ValidatorIndex).collect()).collect(); - let group_rotation_info = GroupRotationInfo { - session_start_block: 0, - group_rotation_frequency: 100, - now: 1, - }; - - let availability_core = CoreState::Scheduled(ScheduledCore { - para_id, - collator: None, - }); - - let relay_parent = Hash::random(); - - let local_peer_id = PeerId::random(); - let collator_pair = CollatorPair::generate().0; - - Self { - para_id, - validators, - session_info: SessionInfo { - validators: validator_public, - discovery_keys, - validator_groups, - ..Default::default() - }, - group_rotation_info, - validator_peer_id, - relay_parent, - availability_core, - local_peer_id, - collator_pair, - session_index: 1, - } - } -} - -impl TestState { - fn current_group_validator_indices(&self) -> &[ValidatorIndex] { - &self.session_info.validator_groups[0] - } - - fn current_session_index(&self) -> SessionIndex { - self.session_index - } - - fn current_group_validator_peer_ids(&self) -> Vec { - self.current_group_validator_indices().iter().map(|i| self.validator_peer_id[i.0 as usize].clone()).collect() - } - - fn current_group_validator_authority_ids(&self) -> Vec { - self.current_group_validator_indices() - .iter() - .map(|i| self.session_info.discovery_keys[i.0 as usize].clone()) - .collect() - } - - /// Generate a new relay parent and inform the subsystem about the new view. - /// - /// If `merge_views == true` it means the subsystem will be informed that we are working on the old `relay_parent` - /// and the new one. - async fn advance_to_new_round(&mut self, virtual_overseer: &mut VirtualOverseer, merge_views: bool) { - let old_relay_parent = self.relay_parent; - - while self.relay_parent == old_relay_parent { - self.relay_parent.randomize(); - } - - let our_view = if merge_views { - our_view![old_relay_parent, self.relay_parent] - } else { - our_view![self.relay_parent] - }; - - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::OurViewChange(our_view)), - ).await; - } -} - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -struct TestHarness { - virtual_overseer: VirtualOverseer, -} - -fn test_harness>( - local_peer_id: PeerId, - collator_pair: CollatorPair, - test: impl FnOnce(TestHarness) -> T, -) { - let pool = sp_core::testing::TaskExecutor::new(); - - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let subsystem = run(context, local_peer_id, collator_pair, Metrics::default()); - - let test_fut = test(TestHarness { virtual_overseer }); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer_signal(&mut overseer, OverseerSignal::Conclude).await; - }, subsystem)).1.unwrap(); -} - -const TIMEOUT: Duration = Duration::from_millis(100); - -async fn overseer_send( - overseer: &mut VirtualOverseer, - msg: CollatorProtocolMessage, -) { - tracing::trace!(?msg, "sending message"); - overseer - .send(FromOverseer::Communication { msg }) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is more than enough for sending messages.", TIMEOUT)); -} - -async fn overseer_recv( - overseer: &mut VirtualOverseer, -) -> AllMessages { - let msg = overseer_recv_with_timeout(overseer, TIMEOUT) - .await - .expect(&format!("{:?} is more than enough to receive messages", TIMEOUT)); - - tracing::trace!(?msg, "received message"); - - msg -} - -async fn overseer_recv_with_timeout( - overseer: &mut VirtualOverseer, - timeout: Duration, -) -> Option { - tracing::trace!("waiting for message..."); - overseer - .recv() - .timeout(timeout) - .await -} - -async fn overseer_signal( - overseer: &mut VirtualOverseer, - signal: OverseerSignal, -) { - overseer - .send(FromOverseer::Signal(signal)) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is more than enough for sending signals.", TIMEOUT)); -} - -// Setup the system by sending the `CollateOn`, `ActiveLeaves` and `OurViewChange` messages. -async fn setup_system(virtual_overseer: &mut VirtualOverseer, test_state: &TestState) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::CollateOn(test_state.para_id), - ).await; - - overseer_signal( - virtual_overseer, - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: test_state.relay_parent, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: [][..].into(), - }), - ).await; - - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]), - ), - ).await; -} - -/// Result of [`distribute_collation`] -struct DistributeCollation { - candidate: CandidateReceipt, - pov_block: PoV, -} - -/// Create some PoV and distribute it. -async fn distribute_collation( - virtual_overseer: &mut VirtualOverseer, - test_state: &TestState, - // whether or not we expect a connection request or not. - should_connect: bool, -) -> DistributeCollation { - // Now we want to distribute a PoVBlock - let pov_block = PoV { - block_data: BlockData(vec![42, 43, 44]), - }; - - let pov_hash = pov_block.hash(); - - let candidate = TestCandidateBuilder { - para_id: test_state.para_id, - relay_parent: test_state.relay_parent, - pov_hash, - ..Default::default() - }.build(); - - overseer_send( - virtual_overseer, - CollatorProtocolMessage::DistributeCollation(candidate.clone(), pov_block.clone(), None), - ).await; - - // obtain the availability cores. - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::AvailabilityCores(tx) - )) => { - assert_eq!(relay_parent, test_state.relay_parent); - tx.send(Ok(vec![test_state.availability_core.clone()])).unwrap(); - } - ); - - // We don't know precisely what is going to come as session info might be cached: - loop { - match overseer_recv(virtual_overseer).await { - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, test_state.relay_parent); - tx.send(Ok(test_state.current_session_index())).unwrap(); - } - - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionInfo(index, tx), - )) => { - assert_eq!(relay_parent, test_state.relay_parent); - assert_eq!(index, test_state.current_session_index()); - - tx.send(Ok(Some(test_state.session_info.clone()))).unwrap(); - } - - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::ValidatorGroups(tx) - )) => { - assert_eq!(relay_parent, test_state.relay_parent); - tx.send(Ok(( - test_state.session_info.validator_groups.clone(), - test_state.group_rotation_info.clone(), - ))).unwrap(); - // This call is mandatory - we are done: - break; - } - other => - panic!("Unexpected message received: {:?}", other), - } - } - - if should_connect { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ConnectToValidators { - .. - } - ) => {} - ); - } - - DistributeCollation { - candidate, - pov_block, - } -} - -/// Connect a peer -async fn connect_peer( - virtual_overseer: &mut VirtualOverseer, - peer: PeerId, - authority_id: Option -) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer.clone(), - polkadot_node_network_protocol::ObservedRole::Authority, - authority_id, - ), - ), - ).await; - - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer, view![]), - ), - ).await; -} - -/// Disconnect a peer -async fn disconnect_peer(virtual_overseer: &mut VirtualOverseer, peer: PeerId) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::PeerDisconnected(peer)), - ).await; -} - -/// Check that the next received message is a `Declare` message. -async fn expect_declare_msg( - virtual_overseer: &mut VirtualOverseer, - test_state: &TestState, - peer: &PeerId, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendCollationMessage( - to, - protocol_v1::CollationProtocol::CollatorProtocol(wire_message), - ) - ) => { - assert_eq!(to[0], *peer); - assert_matches!( - wire_message, - protocol_v1::CollatorProtocolMessage::Declare( - collator_id, - para_id, - signature, - ) => { - assert!(signature.verify( - &*protocol_v1::declare_signature_payload(&test_state.local_peer_id), - &collator_id), - ); - assert_eq!(collator_id, test_state.collator_pair.public()); - assert_eq!(para_id, test_state.para_id); - } - ); - } - ); -} - -/// Check that the next received message is a collation advertisement message. -async fn expect_advertise_collation_msg( - virtual_overseer: &mut VirtualOverseer, - peer: &PeerId, - expected_relay_parent: Hash, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendCollationMessage( - to, - protocol_v1::CollationProtocol::CollatorProtocol(wire_message), - ) - ) => { - assert_eq!(to[0], *peer); - assert_matches!( - wire_message, - protocol_v1::CollatorProtocolMessage::AdvertiseCollation( - relay_parent, - ) => { - assert_eq!(relay_parent, expected_relay_parent); - } - ); - } - ); -} - -/// Send a message that the given peer's view changed. -async fn send_peer_view_change(virtual_overseer: &mut VirtualOverseer, peer: &PeerId, hashes: Vec) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer.clone(), View::new(hashes, 0)), - ), - ).await; -} - -#[test] -fn advertise_and_send_collation() { - let mut test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - setup_system(&mut virtual_overseer, &test_state).await; - - let DistributeCollation { candidate, pov_block } = - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - for (val, peer) in test_state.current_group_validator_authority_ids() - .into_iter() - .zip(test_state.current_group_validator_peer_ids()) - { - connect_peer(&mut virtual_overseer, peer.clone(), Some(val.clone())).await; - } - - // We declare to the connected validators that we are a collator. - // We need to catch all `Declare` messages to the validators we've - // previosly connected to. - for peer_id in test_state.current_group_validator_peer_ids() { - expect_declare_msg(&mut virtual_overseer, &test_state, &peer_id).await; - } - - let peer = test_state.current_group_validator_peer_ids()[0].clone(); - - // Send info about peer's view. - send_peer_view_change(&mut virtual_overseer, &peer, vec![test_state.relay_parent]).await; - - // The peer is interested in a leaf that we have a collation for; - // advertise it. - expect_advertise_collation_msg(&mut virtual_overseer, &peer, test_state.relay_parent).await; - - // Request a collation. - let (tx, rx) = oneshot::channel(); - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::CollationFetchingRequest( - IncomingRequest::new( - peer, - CollationFetchingRequest { - relay_parent: test_state.relay_parent, - para_id: test_state.para_id, - }, - tx, - ) - ) - ).await; - - assert_matches!( - rx.await, - Ok(full_response) => { - let CollationFetchingResponse::Collation(receipt, pov): CollationFetchingResponse - = CollationFetchingResponse::decode( - &mut full_response.result - .expect("We should have a proper answer").as_ref() - ) - .expect("Decoding should work"); - assert_eq!(receipt, candidate); - assert_eq!(pov, pov_block); - } - ); - - let old_relay_parent = test_state.relay_parent; - test_state.advance_to_new_round(&mut virtual_overseer, false).await; - - let peer = test_state.validator_peer_id[2].clone(); - - // Re-request a collation. - let (tx, rx) = oneshot::channel(); - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::CollationFetchingRequest( - IncomingRequest::new( - peer, - CollationFetchingRequest { - relay_parent: old_relay_parent, - para_id: test_state.para_id, - }, - tx, - ) - ) - ).await; - // Re-requesting collation should fail: - assert_matches!( - rx.await, - Err(_) => {} - ); - - assert!(overseer_recv_with_timeout(&mut virtual_overseer, TIMEOUT).await.is_none()); - - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - // Send info about peer's view. - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange( - peer.clone(), - view![test_state.relay_parent], - ) - ) - ).await; - - expect_advertise_collation_msg(&mut virtual_overseer, &peer, test_state.relay_parent).await; - virtual_overseer - }); -} - -#[test] -fn collators_declare_to_connected_peers() { - let test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - let peer = test_state.validator_peer_id[0].clone(); - let validator_id = test_state.current_group_validator_authority_ids()[0].clone(); - - setup_system(&mut virtual_overseer, &test_state).await; - - // A validator connected to us - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id)).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - virtual_overseer - }) -} - -#[test] -fn collations_are_only_advertised_to_validators_with_correct_view() { - let test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - let peer = test_state.current_group_validator_peer_ids()[0].clone(); - let validator_id = test_state.current_group_validator_authority_ids()[0].clone(); - - let peer2 = test_state.current_group_validator_peer_ids()[1].clone(); - let validator_id2 = test_state.current_group_validator_authority_ids()[1].clone(); - - setup_system(&mut virtual_overseer, &test_state).await; - - // A validator connected to us - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id)).await; - - // Connect the second validator - connect_peer(&mut virtual_overseer, peer2.clone(), Some(validator_id2)).await; - - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer2).await; - - // And let it tell us that it is has the same view. - send_peer_view_change(&mut virtual_overseer, &peer2, vec![test_state.relay_parent]).await; - - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - expect_advertise_collation_msg(&mut virtual_overseer, &peer2, test_state.relay_parent).await; - - // The other validator announces that it changed its view. - send_peer_view_change(&mut virtual_overseer, &peer, vec![test_state.relay_parent]).await; - - // After changing the view we should receive the advertisement - expect_advertise_collation_msg(&mut virtual_overseer, &peer, test_state.relay_parent).await; - virtual_overseer - }) -} - -#[test] -fn collate_on_two_different_relay_chain_blocks() { - let mut test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - let peer = test_state.current_group_validator_peer_ids()[0].clone(); - let validator_id = test_state.current_group_validator_authority_ids()[0].clone(); - - let peer2 = test_state.current_group_validator_peer_ids()[1].clone(); - let validator_id2 = test_state.current_group_validator_authority_ids()[1].clone(); - - setup_system(&mut virtual_overseer, &test_state).await; - - // A validator connected to us - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id)).await; - - // Connect the second validator - connect_peer(&mut virtual_overseer, peer2.clone(), Some(validator_id2)).await; - - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer2).await; - - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - let old_relay_parent = test_state.relay_parent; - - // Advance to a new round, while informing the subsystem that the old and the new relay parent are active. - test_state.advance_to_new_round(&mut virtual_overseer, true).await; - - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - send_peer_view_change(&mut virtual_overseer, &peer, vec![old_relay_parent]).await; - expect_advertise_collation_msg(&mut virtual_overseer, &peer, old_relay_parent).await; - - send_peer_view_change(&mut virtual_overseer, &peer2, vec![test_state.relay_parent]).await; - - expect_advertise_collation_msg(&mut virtual_overseer, &peer2, test_state.relay_parent).await; - virtual_overseer - }) -} - -#[test] -fn validator_reconnect_does_not_advertise_a_second_time() { - let test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - let peer = test_state.current_group_validator_peer_ids()[0].clone(); - let validator_id = test_state.current_group_validator_authority_ids()[0].clone(); - - setup_system(&mut virtual_overseer, &test_state).await; - - // A validator connected to us - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id.clone())).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - - distribute_collation(&mut virtual_overseer, &test_state, true).await; - - send_peer_view_change(&mut virtual_overseer, &peer, vec![test_state.relay_parent]).await; - expect_advertise_collation_msg(&mut virtual_overseer, &peer, test_state.relay_parent).await; - - // Disconnect and reconnect directly - disconnect_peer(&mut virtual_overseer, peer.clone()).await; - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id)).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - - send_peer_view_change(&mut virtual_overseer, &peer, vec![test_state.relay_parent]).await; - - assert!(overseer_recv_with_timeout(&mut virtual_overseer, TIMEOUT).await.is_none()); - virtual_overseer - }) -} - -#[test] -fn collators_reject_declare_messages() { - let test_state = TestState::default(); - let local_peer_id = test_state.local_peer_id.clone(); - let collator_pair = test_state.collator_pair.clone(); - let collator_pair2 = CollatorPair::generate().0; - - test_harness(local_peer_id, collator_pair, |test_harness| async move { - let mut virtual_overseer = test_harness.virtual_overseer; - - let peer = test_state.current_group_validator_peer_ids()[0].clone(); - let validator_id = test_state.current_group_validator_authority_ids()[0].clone(); - - setup_system(&mut virtual_overseer, &test_state).await; - - // A validator connected to us - connect_peer(&mut virtual_overseer, peer.clone(), Some(validator_id)).await; - expect_declare_msg(&mut virtual_overseer, &test_state, &peer).await; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer.clone(), - protocol_v1::CollatorProtocolMessage::Declare( - collator_pair2.public(), - ParaId::from(5), - collator_pair2.sign(b"garbage"), - ), - ) - ) - ).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::DisconnectPeer( - p, - PeerSet::Collation, - )) if p == peer - ); - virtual_overseer - }) -} diff --git a/node/network/collator-protocol/src/error.rs b/node/network/collator-protocol/src/error.rs deleted file mode 100644 index 37f8df0731b2..000000000000 --- a/node/network/collator-protocol/src/error.rs +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -// - -//! Error handling related code and Error/Result definitions. - -use polkadot_node_primitives::UncheckedSignedFullStatement; -use polkadot_subsystem::SubsystemError; -use thiserror::Error; - -use polkadot_node_subsystem_util::{Fault, runtime, unwrap_non_fatal}; - -use crate::LOG_TARGET; - -/// General result. -pub type Result = std::result::Result; - -/// Result for fatal only failures. -pub type FatalResult = std::result::Result; - -/// Errors for statement distribution. -#[derive(Debug, Error)] -#[error(transparent)] -pub struct Error(pub Fault); - -impl From for Error { - fn from(e: NonFatal) -> Self { - Self(Fault::from_non_fatal(e)) - } -} - -impl From for Error { - fn from(f: Fatal) -> Self { - Self(Fault::from_fatal(f)) - } -} - -impl From for Error { - fn from(o: runtime::Error) -> Self { - Self(Fault::from_other(o)) - } -} - -/// Fatal runtime errors. -#[derive(Debug, Error)] -pub enum Fatal { - /// Receiving subsystem message from overseer failed. - #[error("Receiving message from overseer failed")] - SubsystemReceive(#[source] SubsystemError), - - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::Fatal), -} - -/// Errors for fetching of runtime information. -#[derive(Debug, Error)] -pub enum NonFatal { - /// Signature was invalid on received statement. - #[error("CollationSeconded contained statement with invalid signature.")] - InvalidStatementSignature(UncheckedSignedFullStatement), - - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::NonFatal), -} - -/// Utility for eating top level errors and log them. -/// -/// We basically always want to try and continue on error. This utility function is meant to -/// consume top-level errors by simply logging them. -pub fn log_error(result: Result<()>, ctx: &'static str) - -> FatalResult<()> -{ - if let Some(error) = unwrap_non_fatal(result.map_err(|e| e.0))? { - tracing::warn!(target: LOG_TARGET, error = ?error, ctx) - } - Ok(()) -} diff --git a/node/network/collator-protocol/src/lib.rs b/node/network/collator-protocol/src/lib.rs deleted file mode 100644 index c95828913360..000000000000 --- a/node/network/collator-protocol/src/lib.rs +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Collator Protocol allows collators and validators talk to each other. -//! This subsystem implements both sides of the collator protocol. - -#![deny(missing_docs, unused_crate_dependencies)] -#![recursion_limit="256"] - -use std::time::Duration; - -use futures::{FutureExt, TryFutureExt}; - -use sp_keystore::SyncCryptoStorePtr; - -use polkadot_node_network_protocol::{PeerId, UnifiedReputationChange as Rep}; -use polkadot_primitives::v1::CollatorPair; -use polkadot_subsystem::{ - messages::{AllMessages, CollatorProtocolMessage, NetworkBridgeMessage}, - SpawnedSubsystem, Subsystem, SubsystemContext, SubsystemError, -}; - -mod error; -use error::Result; - -mod collator_side; -mod validator_side; - -const LOG_TARGET: &'static str = "parachain::collator-protocol"; - -/// A collator eviction policy - how fast to evict collators which are inactive. -#[derive(Debug, Clone, Copy)] -pub struct CollatorEvictionPolicy { - /// How fast to evict collators who are inactive. - pub inactive_collator: Duration, - /// How fast to evict peers which don't declare their para. - pub undeclared: Duration, -} - -impl Default for CollatorEvictionPolicy { - fn default() -> Self { - CollatorEvictionPolicy { - inactive_collator: Duration::from_secs(24), - undeclared: Duration::from_secs(1), - } - } -} - -/// What side of the collator protocol is being engaged -pub enum ProtocolSide { - /// Validators operate on the relay chain. - Validator { - /// The keystore holding validator keys. - keystore: SyncCryptoStorePtr, - /// An eviction policy for inactive peers or validators. - eviction_policy: CollatorEvictionPolicy, - /// Prometheus metrics for validators. - metrics: validator_side::Metrics, - }, - /// Collators operate on a parachain. - Collator(PeerId, CollatorPair, collator_side::Metrics), -} - -/// The collator protocol subsystem. -pub struct CollatorProtocolSubsystem { - protocol_side: ProtocolSide, -} - -impl CollatorProtocolSubsystem { - /// Start the collator protocol. - /// If `id` is `Some` this is a collator side of the protocol. - /// If `id` is `None` this is a validator side of the protocol. - /// Caller must provide a registry for prometheus metrics. - pub fn new(protocol_side: ProtocolSide) -> Self { - Self { - protocol_side, - } - } - - async fn run(self, ctx: Context) -> Result<()> - where - Context: SubsystemContext, - { - match self.protocol_side { - ProtocolSide::Validator { keystore, eviction_policy, metrics } => validator_side::run( - ctx, - keystore, - eviction_policy, - metrics, - ).await, - ProtocolSide::Collator(local_peer_id, collator_pair, metrics) => collator_side::run( - ctx, - local_peer_id, - collator_pair, - metrics, - ).await, - } - } -} - -impl Subsystem for CollatorProtocolSubsystem -where - Context: SubsystemContext + Sync + Send, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = self - .run(ctx) - .map_err(|e| SubsystemError::with_origin("collator-protocol", e)) - .boxed(); - - SpawnedSubsystem { - name: "collator-protocol-subsystem", - future, - } - } -} - -/// Modify the reputation of a peer based on its behavior. -async fn modify_reputation(ctx: &mut Context, peer: PeerId, rep: Rep) -where - Context: SubsystemContext, -{ - tracing::trace!( - target: LOG_TARGET, - rep = ?rep, - peer_id = %peer, - "reputation change for peer", - ); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep), - )).await; -} diff --git a/node/network/collator-protocol/src/validator_side/mod.rs b/node/network/collator-protocol/src/validator_side/mod.rs deleted file mode 100644 index 51890d5fa6d7..000000000000 --- a/node/network/collator-protocol/src/validator_side/mod.rs +++ /dev/null @@ -1,1320 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::{collections::{HashMap, HashSet}, sync::Arc, task::Poll}; -use std::collections::hash_map::Entry; -use std::time::{Duration, Instant}; -use always_assert::never; -use futures::{ - channel::oneshot, future::{BoxFuture, Fuse, FusedFuture}, FutureExt, StreamExt, - stream::FuturesUnordered, select, -}; -use futures_timer::Delay; - -use sp_keystore::SyncCryptoStorePtr; - -use polkadot_node_network_protocol::{ - request_response as req_res, v1 as protocol_v1, - peer_set::PeerSet, - request_response::{ - request::{Recipient, RequestError}, - v1::{CollationFetchingRequest, CollationFetchingResponse}, - OutgoingRequest, Requests, - }, - OurView, PeerId, UnifiedReputationChange as Rep, View, -}; -use polkadot_node_primitives::{SignedFullStatement, PoV}; -use polkadot_node_subsystem_util::metrics::{self, prometheus}; -use polkadot_primitives::v1::{CandidateReceipt, CollatorId, Hash, Id as ParaId}; -use polkadot_subsystem::{ - jaeger, - messages::{ - AllMessages, CollatorProtocolMessage, IfDisconnected, - NetworkBridgeEvent, NetworkBridgeMessage, CandidateBackingMessage, - }, - FromOverseer, OverseerSignal, PerLeafSpan, SubsystemContext, SubsystemSender, -}; - -use super::{modify_reputation, Result, LOG_TARGET}; - -#[cfg(test)] -mod tests; - -const COST_UNEXPECTED_MESSAGE: Rep = Rep::CostMinor("An unexpected message"); -/// Message could not be decoded properly. -const COST_CORRUPTED_MESSAGE: Rep = Rep::CostMinor("Message was corrupt"); -/// Network errors that originated at the remote host should have same cost as timeout. -const COST_NETWORK_ERROR: Rep = Rep::CostMinor("Some network error"); -const COST_REQUEST_TIMED_OUT: Rep = Rep::CostMinor("A collation request has timed out"); -const COST_INVALID_SIGNATURE: Rep = Rep::Malicious("Invalid network message signature"); -const COST_REPORT_BAD: Rep = Rep::Malicious("A collator was reported by another subsystem"); -const COST_WRONG_PARA: Rep = Rep::Malicious("A collator provided a collation for the wrong para"); -const COST_UNNEEDED_COLLATOR: Rep = Rep::CostMinor("An unneeded collator connected"); -const BENEFIT_NOTIFY_GOOD: Rep = Rep::BenefitMinor("A collator was noted good by another subsystem"); - -// How often to check all peers with activity. -#[cfg(not(test))] -const ACTIVITY_POLL: Duration = Duration::from_secs(1); - -#[cfg(test)] -const ACTIVITY_POLL: Duration = Duration::from_millis(10); - -#[derive(Clone, Default)] -pub struct Metrics(Option); - -impl Metrics { - fn on_request(&self, succeeded: std::result::Result<(), ()>) { - if let Some(metrics) = &self.0 { - match succeeded { - Ok(()) => metrics.collation_requests.with_label_values(&["succeeded"]).inc(), - Err(()) => metrics.collation_requests.with_label_values(&["failed"]).inc(), - } - } - } - - /// Provide a timer for `process_msg` which observes on drop. - fn time_process_msg(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_msg.start_timer()) - } - - /// Provide a timer for `handle_collation_request_result` which observes on drop. - fn time_handle_collation_request_result(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.handle_collation_request_result.start_timer()) - } - - /// Note the current number of collator peers. - fn note_collator_peer_count(&self, collator_peers: usize) { - self.0.as_ref().map(|metrics| metrics.collator_peer_count.set(collator_peers as u64)); - } -} - -#[derive(Clone)] -struct MetricsInner { - collation_requests: prometheus::CounterVec, - process_msg: prometheus::Histogram, - handle_collation_request_result: prometheus::Histogram, - collator_peer_count: prometheus::Gauge, -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) - -> std::result::Result - { - let metrics = MetricsInner { - collation_requests: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_collation_requests_total", - "Number of collations requested from Collators.", - ), - &["success"], - )?, - registry, - )?, - process_msg: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collator_protocol_validator_process_msg", - "Time spent within `collator_protocol_validator::process_msg`", - ) - )?, - registry, - )?, - handle_collation_request_result: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_collator_protocol_validator_handle_collation_request_result", - "Time spent within `collator_protocol_validator::handle_collation_request_result`", - ) - )?, - registry, - )?, - collator_peer_count: prometheus::register( - prometheus::Gauge::new( - "parachain_collator_peer_count", - "Amount of collator peers connected", - )?, - registry, - )?, - }; - - Ok(Metrics(Some(metrics))) - } -} - -struct PerRequest { - /// Responses from collator. - from_collator: Fuse>>, - /// Sender to forward to initial requester. - to_requester: oneshot::Sender<(CandidateReceipt, PoV)>, - /// A jaeger span corresponding to the lifetime of the request. - span: Option, -} - -#[derive(Debug)] -struct CollatingPeerState { - collator_id: CollatorId, - para_id: ParaId, - // Advertised relay parents. - advertisements: HashSet, - last_active: Instant, -} - -#[derive(Debug)] -enum PeerState { - // The peer has connected at the given instant. - Connected(Instant), - // Thepe - Collating(CollatingPeerState), -} - -#[derive(Debug)] -enum AdvertisementError { - Duplicate, - OutOfOurView, - UndeclaredCollator, -} - -#[derive(Debug)] -struct PeerData { - view: View, - state: PeerState, -} - -impl PeerData { - fn new(view: View) -> Self { - PeerData { - view, - state: PeerState::Connected(Instant::now()), - } - } - - /// Update the view, clearing all advertisements that are no longer in the - /// current view. - fn update_view(&mut self, new_view: View) { - let old_view = std::mem::replace(&mut self.view, new_view); - if let PeerState::Collating(ref mut peer_state) = self.state { - for removed in old_view.difference(&self.view) { - let _ = peer_state.advertisements.remove(&removed); - } - } - } - - /// Prune old advertisements relative to our view. - fn prune_old_advertisements(&mut self, our_view: &View) { - if let PeerState::Collating(ref mut peer_state) = self.state { - peer_state.advertisements.retain(|a| our_view.contains(a)); - } - } - - /// Note an advertisement by the collator. Returns `true` if the advertisement was imported - /// successfully. Fails if the advertisement is duplicate, out of view, or the peer has not - /// declared itself a collator. - fn insert_advertisement( - &mut self, - on_relay_parent: Hash, - our_view: &View, - ) - -> std::result::Result<(CollatorId, ParaId), AdvertisementError> - { - match self.state { - PeerState::Connected(_) => Err(AdvertisementError::UndeclaredCollator), - _ if !our_view.contains(&on_relay_parent) => Err(AdvertisementError::OutOfOurView), - PeerState::Collating(ref mut state) => { - if state.advertisements.insert(on_relay_parent) { - state.last_active = Instant::now(); - Ok((state.collator_id.clone(), state.para_id.clone())) - } else { - Err(AdvertisementError::Duplicate) - } - } - } - } - - /// Whether a peer is collating. - fn is_collating(&self) -> bool { - match self.state { - PeerState::Connected(_) => false, - PeerState::Collating(_) => true, - } - } - - /// Note that a peer is now collating with the given collator and para ids. - /// - /// This will overwrite any previous call to `set_collating` and should only be called - /// if `is_collating` is false. - fn set_collating(&mut self, collator_id: CollatorId, para_id: ParaId) { - self.state = PeerState::Collating(CollatingPeerState { - collator_id, - para_id, - advertisements: HashSet::new(), - last_active: Instant::now(), - }); - } - - fn collator_id(&self) -> Option<&CollatorId> { - match self.state { - PeerState::Connected(_) => None, - PeerState::Collating(ref state) => Some(&state.collator_id), - } - } - - fn collating_para(&self) -> Option { - match self.state { - PeerState::Connected(_) => None, - PeerState::Collating(ref state) => Some(state.para_id), - } - } - - /// Whether the peer has advertised the given collation. - fn has_advertised(&self, relay_parent: &Hash) -> bool { - match self.state { - PeerState::Connected(_) => false, - PeerState::Collating(ref state) => state.advertisements.contains(relay_parent), - } - } - - /// Whether the peer is now inactive according to the current instant and the eviction policy. - fn is_inactive(&self, policy: &crate::CollatorEvictionPolicy) -> bool { - match self.state { - PeerState::Connected(connected_at) => connected_at.elapsed() >= policy.undeclared, - PeerState::Collating(ref state) => state.last_active.elapsed() >= policy.inactive_collator, - } - } -} - -impl Default for PeerData { - fn default() -> Self { - PeerData::new(Default::default()) - } -} - -struct GroupAssignments { - current: Option, - next: Option, -} - -#[derive(Default)] -struct ActiveParas { - relay_parent_assignments: HashMap, - current_assignments: HashMap, - next_assignments: HashMap -} - -impl ActiveParas { - async fn assign_incoming( - &mut self, - sender: &mut impl SubsystemSender, - keystore: &SyncCryptoStorePtr, - new_relay_parents: impl IntoIterator, - ) { - for relay_parent in new_relay_parents { - let mv = polkadot_node_subsystem_util::request_validators(relay_parent, sender) - .await - .await - .ok() - .map(|x| x.ok()) - .flatten(); - - let mg = polkadot_node_subsystem_util::request_validator_groups(relay_parent, sender) - .await - .await - .ok() - .map(|x| x.ok()) - .flatten(); - - - let mc = polkadot_node_subsystem_util::request_availability_cores(relay_parent, sender) - .await - .await - .ok() - .map(|x| x.ok()) - .flatten(); - - let (validators, groups, rotation_info, cores) = match (mv, mg, mc) { - (Some(v), Some((g, r)), Some(c)) => (v, g, r, c), - _ => { - tracing::debug!( - target: LOG_TARGET, - ?relay_parent, - "Failed to query runtime API for relay-parent", - ); - - continue - } - }; - - let (para_now, para_next) = match polkadot_node_subsystem_util - ::signing_key_and_index(&validators, keystore) - .await - .and_then(|(_, index)| polkadot_node_subsystem_util::find_validator_group( - &groups, - index, - )) - { - Some(group) => { - let next_rotation_info = rotation_info.bump_rotation(); - - let core_now = rotation_info.core_for_group(group, cores.len()); - let core_next = next_rotation_info.core_for_group(group, cores.len()); - - ( - cores.get(core_now.0 as usize).and_then(|c| c.para_id()), - cores.get(core_next.0 as usize).and_then(|c| c.para_id()), - ) - } - None => { - tracing::trace!( - target: LOG_TARGET, - ?relay_parent, - "Not a validator", - ); - - continue - } - }; - - // This code won't work well, if at all for parathreads. For parathreads we'll - // have to be aware of which core the parathread claim is going to be multiplexed - // onto. The parathread claim will also have a known collator, and we should always - // allow an incoming connection from that collator. If not even connecting to them - // directly. - // - // However, this'll work fine for parachains, as each parachain gets a dedicated - // core. - if let Some(para_now) = para_now { - let entry = self.current_assignments.entry(para_now).or_default(); - *entry += 1; - if *entry == 1 { - tracing::debug!( - target: LOG_TARGET, - ?relay_parent, - para_id = ?para_now, - "Assigned to a parachain", - ); - } - } - - if let Some(para_next) = para_next { - *self.next_assignments.entry(para_next).or_default() += 1; - } - - self.relay_parent_assignments.insert( - relay_parent, - GroupAssignments { current: para_now, next: para_next }, - ); - } - } - - fn remove_outgoing( - &mut self, - old_relay_parents: impl IntoIterator, - ) { - for old_relay_parent in old_relay_parents { - if let Some(assignments) = self.relay_parent_assignments.remove(&old_relay_parent) { - let GroupAssignments { current, next } = assignments; - - if let Some(cur) = current { - if let Entry::Occupied(mut occupied) = self.current_assignments.entry(cur) { - *occupied.get_mut() -= 1; - if *occupied.get() == 0 { - occupied.remove_entry(); - tracing::debug!( - target: LOG_TARGET, - para_id = ?cur, - "Unassigned from a parachain", - ); - } - } - } - - if let Some(next) = next { - if let Entry::Occupied(mut occupied) = self.next_assignments.entry(next) { - *occupied.get_mut() -= 1; - if *occupied.get() == 0 { - occupied.remove_entry(); - } - } - } - } - } - } - - fn is_current_or_next(&self, id: ParaId) -> bool { - self.current_assignments.contains_key(&id) || self.next_assignments.contains_key(&id) - } -} - -#[derive(Debug, Clone, Hash, Eq, PartialEq)] -struct PendingCollation { - relay_parent: Hash, - para_id: ParaId, - peer_id: PeerId, - commitments_hash: Option, -} - -impl PendingCollation { - fn new(relay_parent: Hash, para_id: &ParaId, peer_id: &PeerId) -> Self { - Self { relay_parent, para_id: para_id.clone(), peer_id: peer_id.clone(), commitments_hash: None } - } -} - -type CollationEvent = (CollatorId, PendingCollation); - -type PendingCollationFetch = ( - CollationEvent, - std::result::Result<(CandidateReceipt, PoV), oneshot::Canceled>, -); - -/// The status of the collations in [`CollationsPerRelayParent`]. -#[derive(Debug)] -enum CollationStatus { - /// We are waiting for a collation to be advertised to us. - Waiting, - /// We are currently fetching a collation. - Fetching, - /// We have seconded a collation. - Seconded, -} - -impl Default for CollationStatus { - fn default() -> Self { - Self::Waiting - } -} - -/// Information about collations per relay parent. -#[derive(Default)] -struct CollationsPerRelayParent { - /// What is the current status in regards to a collation for this relay parent? - status: CollationStatus, - /// Collation that were advertised to us, but we did not yet fetch. - unfetched_collations: Vec<(PendingCollation, CollatorId)>, -} - -/// All state relevant for the validator side of the protocol lives here. -#[derive(Default)] -struct State { - /// Our own view. - view: OurView, - - /// Active paras based on our view. We only accept collators from these paras. - active_paras: ActiveParas, - - /// Track all active collators and their data. - peer_data: HashMap, - - /// The collations we have requested by relay parent and para id. - /// - /// For each relay parent and para id we may be connected to a number - /// of collators each of those may have advertised a different collation. - /// So we group such cases here. - requested_collations: HashMap, - - /// Metrics. - metrics: Metrics, - - /// Span per relay parent. - span_per_relay_parent: HashMap, - - /// Keep track of all fetch collation requests - collation_fetches: FuturesUnordered>, - - /// Information about the collations per relay parent. - collations_per_relay_parent: HashMap, - - /// Keep track of all pending candidate collations - pending_candidates: HashMap, -} - -// O(n) search for collator ID by iterating through the peers map. This should be fast enough -// unless a large amount of peers is expected. -fn collator_peer_id( - peer_data: &HashMap, - collator_id: &CollatorId, -) -> Option { - peer_data.iter() - .find_map(|(peer, data)| - data.collator_id().filter(|c| c == &collator_id).map(|_| peer.clone()) - ) -} - -async fn disconnect_peer(ctx: &mut impl SubsystemContext, peer_id: PeerId) { - ctx.send_message( - NetworkBridgeMessage::DisconnectPeer(peer_id, PeerSet::Collation).into() - ).await -} - -/// Another subsystem has requested to fetch collations on a particular leaf for some para. -async fn fetch_collation( - ctx: &mut impl SubsystemContext, - state: &mut State, - pc: PendingCollation, - id: CollatorId, -) { - let (tx, rx) = oneshot::channel(); - - let PendingCollation { relay_parent, para_id, peer_id, .. } = pc; - if state.peer_data.get(&peer_id).map_or(false, |d| d.has_advertised(&relay_parent)) { - request_collation(ctx, state, relay_parent, para_id, peer_id, tx).await; - } - - state.collation_fetches.push(rx.map(|r| ((id, pc), r)).boxed()); -} - -/// Report a collator for some malicious actions. -async fn report_collator( - ctx: &mut Context, - peer_data: &HashMap, - id: CollatorId, -) -where - Context: SubsystemContext -{ - if let Some(peer_id) = collator_peer_id(peer_data, &id) { - modify_reputation(ctx, peer_id, COST_REPORT_BAD).await; - } -} - -/// Some other subsystem has reported a collator as a good one, bump reputation. -async fn note_good_collation( - ctx: &mut Context, - peer_data: &HashMap, - id: CollatorId, -) -where - Context: SubsystemContext -{ - if let Some(peer_id) = collator_peer_id(peer_data, &id) { - modify_reputation(ctx, peer_id, BENEFIT_NOTIFY_GOOD).await; - } -} - -/// Notify a collator that its collation got seconded. -async fn notify_collation_seconded( - ctx: &mut impl SubsystemContext, - peer_id: PeerId, - relay_parent: Hash, - statement: SignedFullStatement, -) { - let wire_message = protocol_v1::CollatorProtocolMessage::CollationSeconded(relay_parent, statement.into()); - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendCollationMessage( - vec![peer_id], - protocol_v1::CollationProtocol::CollatorProtocol(wire_message), - ) - )).await; - - modify_reputation(ctx, peer_id, BENEFIT_NOTIFY_GOOD).await; -} - -/// A peer's view has changed. A number of things should be done: -/// - Ongoing collation requests have to be cancelled. -/// - Advertisements by this peer that are no longer relevant have to be removed. -async fn handle_peer_view_change( - state: &mut State, - peer_id: PeerId, - view: View, -) -> Result<()> { - let peer_data = state.peer_data.entry(peer_id.clone()).or_default(); - - peer_data.update_view(view); - state.requested_collations - .retain(|pc, _| pc.peer_id != peer_id || !peer_data.has_advertised(&pc.relay_parent)); - - Ok(()) -} - -/// Request a collation from the network. -/// This function will -/// - Check for duplicate requests. -/// - Check if the requested collation is in our view. -/// - Update PerRequest records with the `result` field if necessary. -/// And as such invocations of this function may rely on that. -async fn request_collation( - ctx: &mut Context, - state: &mut State, - relay_parent: Hash, - para_id: ParaId, - peer_id: PeerId, - result: oneshot::Sender<(CandidateReceipt, PoV)>, -) -where - Context: SubsystemContext -{ - if !state.view.contains(&relay_parent) { - tracing::debug!( - target: LOG_TARGET, - peer_id = %peer_id, - para_id = %para_id, - relay_parent = %relay_parent, - "collation is no longer in view", - ); - return; - } - let pending_collation = PendingCollation::new(relay_parent, ¶_id, &peer_id); - if state.requested_collations.contains_key(&pending_collation) { - tracing::warn!( - target: LOG_TARGET, - peer_id = %pending_collation.peer_id, - %pending_collation.para_id, - ?pending_collation.relay_parent, - "collation has already been requested", - ); - return; - } - - let (full_request, response_recv) = - OutgoingRequest::new(Recipient::Peer(peer_id), CollationFetchingRequest { - relay_parent, - para_id, - }); - let requests = Requests::CollationFetching(full_request); - - let per_request = PerRequest { - from_collator: response_recv.boxed().fuse(), - to_requester: result, - span: state.span_per_relay_parent.get(&relay_parent).map(|s| { - s.child("collation-request") - .with_para_id(para_id) - }), - }; - - state.requested_collations.insert( - PendingCollation::new(relay_parent, ¶_id, &peer_id), - per_request - ); - - tracing::debug!( - target: LOG_TARGET, - peer_id = %peer_id, - %para_id, - ?relay_parent, - "Requesting collation", - ); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests(vec![requests], IfDisconnected::ImmediateError)) - ).await; -} - -/// Networking message has been received. -async fn process_incoming_peer_message( - ctx: &mut Context, - state: &mut State, - origin: PeerId, - msg: protocol_v1::CollatorProtocolMessage, -) -where - Context: SubsystemContext -{ - use protocol_v1::CollatorProtocolMessage::*; - use sp_runtime::traits::AppVerify; - match msg { - Declare(collator_id, para_id, signature) => { - if collator_peer_id(&state.peer_data, &collator_id).is_some() { - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - return - } - - let peer_data = match state.peer_data.get_mut(&origin) { - Some(p) => p, - None => { - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - return - } - }; - - if peer_data.is_collating() { - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - return - } - - if !signature.verify(&*protocol_v1::declare_signature_payload(&origin), &collator_id) { - modify_reputation(ctx, origin, COST_INVALID_SIGNATURE).await; - return - } - - if state.active_paras.is_current_or_next(para_id) { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - ?collator_id, - ?para_id, - "Declared as collator for current or next para", - ); - - peer_data.set_collating(collator_id, para_id); - } else { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - ?collator_id, - ?para_id, - "Declared as collator for unneeded para", - ); - - modify_reputation(ctx, origin.clone(), COST_UNNEEDED_COLLATOR).await; - disconnect_peer(ctx, origin).await; - } - } - AdvertiseCollation(relay_parent) => { - let _span = state.span_per_relay_parent.get(&relay_parent).map(|s| s.child("advertise-collation")); - if !state.view.contains(&relay_parent) { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - ?relay_parent, - "Advertise collation out of view", - ); - - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - return; - } - - let peer_data = match state.peer_data.get_mut(&origin) { - None => { - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - return; - } - Some(p) => p, - }; - - match peer_data.insert_advertisement(relay_parent, &state.view) { - Ok((id, para_id)) => { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - %para_id, - ?relay_parent, - "Received advertise collation", - ); - - let pending_collation = PendingCollation::new( - relay_parent, - ¶_id, - &origin, - ); - - let collations = state.collations_per_relay_parent.entry(relay_parent).or_default(); - - match collations.status { - CollationStatus::Fetching => - collations.unfetched_collations.push((pending_collation, id)), - CollationStatus::Waiting => { - collations.status = CollationStatus::Fetching; - drop(collations); - - fetch_collation(ctx, state, pending_collation.clone(), id).await; - }, - CollationStatus::Seconded => {}, - } - } - Err(error) => { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - ?relay_parent, - ?error, - "Invalid advertisement", - ); - - modify_reputation(ctx, origin, COST_UNEXPECTED_MESSAGE).await; - } - } - } - CollationSeconded(_, _) => { - tracing::warn!( - target: LOG_TARGET, - peer_id = ?origin, - "Unexpected `CollationSeconded` message, decreasing reputation", - ); - } - } -} - -/// A leaf has become inactive so we want to -/// - Cancel all ongoing collation requests that are on top of that leaf. -/// - Remove all stored collations relevant to that leaf. -async fn remove_relay_parent( - state: &mut State, - relay_parent: Hash, -) -> Result<()> { - state.requested_collations.retain(|k, _| { - k.relay_parent != relay_parent - }); - - state.pending_candidates.retain(|k, _| { - k != &relay_parent - }); - - state.collations_per_relay_parent.remove(&relay_parent); - Ok(()) -} - -/// Our view has changed. -async fn handle_our_view_change( - ctx: &mut impl SubsystemContext, - state: &mut State, - keystore: &SyncCryptoStorePtr, - view: OurView, -) -> Result<()> { - let old_view = std::mem::replace(&mut state.view, view); - - let added: HashMap> = state.view - .span_per_head() - .iter() - .filter(|v| !old_view.contains(&v.0)) - .map(|v| (v.0.clone(), v.1.clone())) - .collect(); - - added.into_iter().for_each(|(h, s)| { - state.span_per_relay_parent.insert(h, PerLeafSpan::new(s, "validator-side")); - }); - - let added = state.view.difference(&old_view).cloned().collect::>(); - let removed = old_view - .difference(&state.view) - .cloned() - .collect::>(); - - for removed in removed.iter().cloned() { - remove_relay_parent(state, removed).await?; - state.span_per_relay_parent.remove(&removed); - } - - state.active_paras.assign_incoming(ctx.sender(), keystore, added).await; - state.active_paras.remove_outgoing(removed); - - for (peer_id, peer_data) in state.peer_data.iter_mut() { - peer_data.prune_old_advertisements(&state.view); - - // Disconnect peers who are not relevant to our current or next para. - // - // If the peer hasn't declared yet, they will be disconnected if they do not - // declare. - if let Some(para_id) = peer_data.collating_para() { - if !state.active_paras.is_current_or_next(para_id) { - disconnect_peer(ctx, peer_id.clone()).await; - } - } - } - - Ok(()) -} - -/// Bridge event switch. -async fn handle_network_msg( - ctx: &mut Context, - state: &mut State, - keystore: &SyncCryptoStorePtr, - bridge_message: NetworkBridgeEvent, -) -> Result<()> -where - Context: SubsystemContext -{ - use NetworkBridgeEvent::*; - - match bridge_message { - PeerConnected(peer_id, _role, _) => { - state.peer_data.entry(peer_id).or_default(); - state.metrics.note_collator_peer_count(state.peer_data.len()); - }, - PeerDisconnected(peer_id) => { - state.peer_data.remove(&peer_id); - state.metrics.note_collator_peer_count(state.peer_data.len()); - }, - NewGossipTopology(..) => { - // impossibru! - } - PeerViewChange(peer_id, view) => { - handle_peer_view_change(state, peer_id, view).await?; - }, - OurViewChange(view) => { - handle_our_view_change(ctx, state, keystore, view).await?; - }, - PeerMessage(remote, msg) => { - process_incoming_peer_message(ctx, state, remote, msg).await; - } - } - - Ok(()) -} - -/// The main message receiver switch. -async fn process_msg( - ctx: &mut Context, - keystore: &SyncCryptoStorePtr, - msg: CollatorProtocolMessage, - state: &mut State, -) -where - Context: SubsystemContext -{ - use CollatorProtocolMessage::*; - - let _timer = state.metrics.time_process_msg(); - - match msg { - CollateOn(id) => { - tracing::warn!( - target: LOG_TARGET, - para_id = %id, - "CollateOn message is not expected on the validator side of the protocol", - ); - } - DistributeCollation(_, _, _) => { - tracing::warn!( - target: LOG_TARGET, - "DistributeCollation message is not expected on the validator side of the protocol", - ); - } - ReportCollator(id) => { - report_collator(ctx, &state.peer_data, id).await; - } - NetworkBridgeUpdateV1(event) => { - if let Err(e) = handle_network_msg( - ctx, - state, - keystore, - event, - ).await { - tracing::warn!( - target: LOG_TARGET, - err = ?e, - "Failed to handle incoming network message", - ); - } - } - CollationFetchingRequest(_) => { - tracing::warn!( - target: LOG_TARGET, - "CollationFetchingRequest message is not expected on the validator side of the protocol", - ); - } - Seconded(parent, stmt) => { - if let Some(collation_event) = state.pending_candidates.remove(&parent) { - let (collator_id, pending_collation) = collation_event; - let PendingCollation { relay_parent, peer_id, .. } = pending_collation; - note_good_collation(ctx, &state.peer_data, collator_id).await; - notify_collation_seconded(ctx, peer_id, relay_parent, stmt).await; - - if let Some(collations) = state.collations_per_relay_parent.get_mut(&parent) { - collations.status = CollationStatus::Seconded; - } - } else { - tracing::debug!( - target: LOG_TARGET, - relay_parent = ?parent, - "Collation has been seconded, but the relay parent is deactivated", - ); - } - } - Invalid(parent, candidate_receipt) => { - if state.pending_candidates - .get(&parent) - .map(|e| e.1.commitments_hash == Some(candidate_receipt.commitments_hash)) - .unwrap_or_default() - { - if let Some((id, _)) = state.pending_candidates.remove(&parent) { - report_collator(ctx, &state.peer_data, id).await; - } - } - } - } -} - -// wait until next inactivity check. returns the instant for the following check. -async fn wait_until_next_check(last_poll: Instant) -> Instant { - let now = Instant::now(); - let next_poll = last_poll + ACTIVITY_POLL; - - if next_poll > now { - Delay::new(next_poll - now).await - } - - Instant::now() -} - -/// The main run loop. -pub(crate) async fn run( - mut ctx: Context, - keystore: SyncCryptoStorePtr, - eviction_policy: crate::CollatorEvictionPolicy, - metrics: Metrics, -) -> Result<()> - where Context: SubsystemContext -{ - use FromOverseer::*; - use OverseerSignal::*; - - let mut state = State { - metrics, - ..Default::default() - }; - - let next_inactivity_stream = futures::stream::unfold( - Instant::now() + ACTIVITY_POLL, - |next_check| async move { Some(((), wait_until_next_check(next_check).await)) } - ).fuse(); - - futures::pin_mut!(next_inactivity_stream); - - loop { - select! { - res = ctx.recv().fuse() => { - match res { - Ok(Communication { msg }) => { - tracing::trace!(target: LOG_TARGET, msg = ?msg, "received a message"); - process_msg( - &mut ctx, - &keystore, - msg, - &mut state, - ).await; - } - Ok(Signal(Conclude)) => break, - _ => {}, - } - } - _ = next_inactivity_stream.next() => { - disconnect_inactive_peers(&mut ctx, &eviction_policy, &state.peer_data).await; - } - res = state.collation_fetches.next() => { - if let Some(res) = res { - handle_collation_fetched_result(&mut ctx, &mut state, res).await; - } - } - } - - let mut retained_requested = HashSet::new(); - for (pending_collation, per_req) in state.requested_collations.iter_mut() { - // Despite the await, this won't block on the response itself. - let finished = poll_collation_response( - &mut ctx, &state.metrics, &state.span_per_relay_parent, pending_collation, per_req, - ).await; - if !finished { - retained_requested.insert(pending_collation.clone()); - } - } - state.requested_collations.retain(|k, _| retained_requested.contains(k)); - } - Ok(()) -} - -/// Handle a fetched collation result. -async fn handle_collation_fetched_result( - ctx: &mut impl SubsystemContext, - state: &mut State, - (mut collation_event, res): PendingCollationFetch, -) { - // If no prior collation for this relay parent has been seconded, then - // memoize the collation_event for that relay_parent, such that we may - // notify the collator of their successful second backing - let relay_parent = collation_event.1.relay_parent; - - let (candidate_receipt, pov) = match res { - Ok(res) => res, - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - relay_parent = ?collation_event.1.relay_parent, - para_id = ?collation_event.1.para_id, - peer_id = ?collation_event.1.peer_id, - collator_id = ?collation_event.0, - error = ?e, - "Failed to fetch collation.", - ); - - let (next_try, id) = if let Some(collations) = state.collations_per_relay_parent.get_mut(&relay_parent) { - if let Some(next_try) = collations.unfetched_collations.pop() { - next_try - } else if matches!(collations.status, CollationStatus::Fetching) { - collations.status = CollationStatus::Waiting; - return - } else { - tracing::error!( - target: LOG_TARGET, - status = ?collations.status, - "Expected status `CollationStatus::Fetching` but got unexpected status." - ); - return - } - } else { - return - }; - - fetch_collation(ctx, state, next_try, id).await; - - return - }, - }; - - if let Entry::Vacant(entry) = state.pending_candidates.entry(relay_parent) { - collation_event.1.commitments_hash = Some(candidate_receipt.commitments_hash); - ctx.send_message( - CandidateBackingMessage::Second( - relay_parent.clone(), - candidate_receipt, - pov, - ).into() - ).await; - - entry.insert(collation_event); - } -} - -// This issues `NetworkBridge` notifications to disconnect from all inactive peers at the -// earliest possible point. This does not yet clean up any metadata, as that will be done upon -// receipt of the `PeerDisconnected` event. -async fn disconnect_inactive_peers( - ctx: &mut impl SubsystemContext, - eviction_policy: &crate::CollatorEvictionPolicy, - peers: &HashMap, -) { - for (peer, peer_data) in peers { - if peer_data.is_inactive(&eviction_policy) { - disconnect_peer(ctx, peer.clone()).await; - } - } -} - -/// Poll collation response, return immediately if there is none. -/// -/// Ready responses are handled, by logging and decreasing peer's reputation on error and by -/// forwarding proper responses to the requester. -/// -/// Returns: `true` if `from_collator` future was ready. -async fn poll_collation_response( - ctx: &mut Context, - metrics: &Metrics, - spans: &HashMap, - pending_collation: &PendingCollation, - per_req: &mut PerRequest, -) --> bool -where - Context: SubsystemContext -{ - if never!(per_req.from_collator.is_terminated()) { - tracing::error!( - target: LOG_TARGET, - "We remove pending responses once received, this should not happen." - ); - return true - } - - if let Poll::Ready(response) = futures::poll!(&mut per_req.from_collator) { - let _span = spans.get(&pending_collation.relay_parent) - .map(|s| s.child("received-collation")); - let _timer = metrics.time_handle_collation_request_result(); - - let mut metrics_result = Err(()); - let mut success = "false"; - - match response { - Err(RequestError::InvalidResponse(err)) => { - tracing::warn!( - target: LOG_TARGET, - hash = ?pending_collation.relay_parent, - para_id = ?pending_collation.para_id, - peer_id = ?pending_collation.peer_id, - err = ?err, - "Collator provided response that could not be decoded" - ); - modify_reputation( - ctx, - pending_collation.peer_id.clone(), - COST_CORRUPTED_MESSAGE - ).await; - } - Err(RequestError::NetworkError(err)) => { - tracing::warn!( - target: LOG_TARGET, - hash = ?pending_collation.relay_parent, - para_id = ?pending_collation.para_id, - peer_id = ?pending_collation.peer_id, - err = ?err, - "Fetching collation failed due to network error" - ); - // A minor decrease in reputation for any network failure seems - // sensbile. In theory this could be exploited, by DoSing this node, - // which would result in reduced reputation for proper nodes, but the - // same can happen for penalities on timeouts, which we also have. - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_NETWORK_ERROR).await; - } - Err(RequestError::Canceled(_)) => { - tracing::warn!( - target: LOG_TARGET, - hash = ?pending_collation.relay_parent, - para_id = ?pending_collation.para_id, - peer_id = ?pending_collation.peer_id, - "Request timed out" - ); - // A minor decrease in reputation for any network failure seems - // sensbile. In theory this could be exploited, by DoSing this node, - // which would result in reduced reputation for proper nodes, but the - // same can happen for penalities on timeouts, which we also have. - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_REQUEST_TIMED_OUT).await; - } - Ok(CollationFetchingResponse::Collation(receipt, _)) - if receipt.descriptor().para_id != pending_collation.para_id => - { - tracing::debug!( - target: LOG_TARGET, - expected_para_id = ?pending_collation.para_id, - got_para_id = ?receipt.descriptor().para_id, - peer_id = ?pending_collation.peer_id, - "Got wrong para ID for requested collation." - ); - - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_WRONG_PARA).await; - } - Ok(CollationFetchingResponse::Collation(receipt, pov)) => { - tracing::debug!( - target: LOG_TARGET, - para_id = %pending_collation.para_id, - hash = ?pending_collation.relay_parent, - candidate_hash = ?receipt.hash(), - "Received collation", - ); - // Actual sending: - let _span = jaeger::Span::new(&pov, "received-collation"); - let (mut tx, _) = oneshot::channel(); - std::mem::swap(&mut tx, &mut (per_req.to_requester)); - let result = tx.send((receipt, pov)); - - if let Err(_) = result { - tracing::warn!( - target: LOG_TARGET, - hash = ?pending_collation.relay_parent, - para_id = ?pending_collation.para_id, - peer_id = ?pending_collation.peer_id, - "Sending response back to requester failed (receiving side closed)" - ); - } else { - metrics_result = Ok(()); - success = "true"; - } - } - }; - metrics.on_request(metrics_result); - per_req.span.as_mut().map(|s| s.add_string_tag("success", success)); - true - } else { - false - } -} diff --git a/node/network/collator-protocol/src/validator_side/tests.rs b/node/network/collator-protocol/src/validator_side/tests.rs deleted file mode 100644 index dc79c575cdeb..000000000000 --- a/node/network/collator-protocol/src/validator_side/tests.rs +++ /dev/null @@ -1,962 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use std::{iter, time::Duration}; -use std::sync::Arc; -use futures::{executor, future, Future}; -use sp_core::{crypto::Pair, Encode}; -use sp_keystore::SyncCryptoStore; -use sp_keystore::testing::KeyStore as TestKeyStore; -use sp_keyring::Sr25519Keyring; -use assert_matches::assert_matches; - -use polkadot_primitives::v1::{ - CollatorPair, ValidatorId, ValidatorIndex, CoreState, CandidateDescriptor, - GroupRotationInfo, ScheduledCore, OccupiedCore, GroupIndex, -}; -use polkadot_node_primitives::BlockData; -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_subsystem_testhelpers as test_helpers; -use polkadot_subsystem::messages::{RuntimeApiMessage, RuntimeApiRequest}; -use polkadot_node_network_protocol::{ - our_view, ObservedRole, request_response::{Requests, ResponseSender}, -}; - -const ACTIVITY_TIMEOUT: Duration = Duration::from_millis(50); -const DECLARE_TIMEOUT: Duration = Duration::from_millis(25); - -#[derive(Clone)] -struct TestState { - chain_ids: Vec, - relay_parent: Hash, - collators: Vec, - validators: Vec, - validator_public: Vec, - validator_groups: Vec>, - group_rotation_info: GroupRotationInfo, - cores: Vec, -} - -impl Default for TestState { - fn default() -> Self { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - let chain_ids = vec![chain_a, chain_b]; - let relay_parent = Hash::repeat_byte(0x05); - let collators = iter::repeat(()) - .map(|_| CollatorPair::generate().0) - .take(4) - .collect(); - - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Eve, - ]; - - let validator_public = validators.iter().map(|k| k.public().into()).collect(); - let validator_groups = vec![ - vec![ValidatorIndex(0), ValidatorIndex(1)], - vec![ValidatorIndex(2), ValidatorIndex(3)], - vec![ValidatorIndex(4)], - ]; - - let group_rotation_info = GroupRotationInfo { - session_start_block: 0, - group_rotation_frequency: 1, - now: 0, - }; - - let cores = vec![ - CoreState::Scheduled(ScheduledCore { - para_id: chain_ids[0], - collator: None, - }), - CoreState::Free, - CoreState::Occupied(OccupiedCore { - next_up_on_available: None, - occupied_since: 0, - time_out_at: 1, - next_up_on_time_out: None, - availability: Default::default(), - group_responsible: GroupIndex(0), - candidate_hash: Default::default(), - candidate_descriptor: { - let mut d = CandidateDescriptor::default(); - d.para_id = chain_ids[1]; - - d - }, - }), - ]; - - Self { - chain_ids, - relay_parent, - collators, - validators, - validator_public, - validator_groups, - group_rotation_info, - cores, - } - } -} - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -struct TestHarness { - virtual_overseer: VirtualOverseer, -} - -fn test_harness>(test: impl FnOnce(TestHarness) -> T) { - let _ = env_logger::builder() - .is_test(true) - .filter( - Some("polkadot_collator_protocol"), - log::LevelFilter::Trace, - ) - .filter( - Some(LOG_TARGET), - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let keystore = TestKeyStore::new(); - keystore.sr25519_generate_new( - polkadot_primitives::v1::PARACHAIN_KEY_TYPE_ID, - Some(&Sr25519Keyring::Alice.to_seed()), - ).unwrap(); - - let subsystem = run( - context, - Arc::new(keystore), - crate::CollatorEvictionPolicy { - inactive_collator: ACTIVITY_TIMEOUT, - undeclared: DECLARE_TIMEOUT, - }, - Metrics::default(), - ); - - let test_fut = test(TestHarness { virtual_overseer }); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer_signal(&mut overseer, OverseerSignal::Conclude).await; - }, subsystem)).1.unwrap(); -} - -const TIMEOUT: Duration = Duration::from_millis(200); - -async fn overseer_send( - overseer: &mut VirtualOverseer, - msg: CollatorProtocolMessage, -) { - tracing::trace!("Sending message:\n{:?}", &msg); - overseer - .send(FromOverseer::Communication { msg }) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is enough for sending messages.", TIMEOUT)); -} - -async fn overseer_recv( - overseer: &mut VirtualOverseer, -) -> AllMessages { - let msg = overseer_recv_with_timeout(overseer, TIMEOUT) - .await - .expect(&format!("{:?} is enough to receive messages.", TIMEOUT)); - - tracing::trace!("Received message:\n{:?}", &msg); - - msg -} - -async fn overseer_recv_with_timeout( - overseer: &mut VirtualOverseer, - timeout: Duration, -) -> Option { - tracing::trace!("Waiting for message..."); - overseer - .recv() - .timeout(timeout) - .await -} - -async fn overseer_signal( - overseer: &mut VirtualOverseer, - signal: OverseerSignal, -) { - overseer - .send(FromOverseer::Signal(signal)) - .timeout(TIMEOUT) - .await - .expect(&format!("{:?} is more than enough for sending signals.", TIMEOUT)); -} - -async fn respond_to_core_info_queries( - virtual_overseer: &mut VirtualOverseer, - test_state: &TestState, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::Validators(tx), - )) => { - let _ = tx.send(Ok(test_state.validator_public.clone())); - } - ); - - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::ValidatorGroups(tx), - )) => { - let _ = tx.send(Ok(( - test_state.validator_groups.clone(), - test_state.group_rotation_info.clone(), - ))); - } - ); - - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::AvailabilityCores(tx), - )) => { - let _ = tx.send(Ok(test_state.cores.clone())); - } - ); -} - -/// Assert that the next message is a `CandidateBacking(Second())`. -async fn assert_candidate_backing_second( - virtual_overseer: &mut VirtualOverseer, - expected_relay_parent: Hash, - expected_para_id: ParaId, - expected_pov: &PoV, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::CandidateBacking(CandidateBackingMessage::Second(relay_parent, candidate_receipt, incoming_pov) - ) => { - assert_eq!(expected_relay_parent, relay_parent); - assert_eq!(expected_para_id, candidate_receipt.descriptor.para_id); - assert_eq!(*expected_pov, incoming_pov); - }); -} - -/// Assert that a collator got disconnected. -async fn assert_collator_disconnect( - virtual_overseer: &mut VirtualOverseer, - expected_peer: PeerId, -) { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::DisconnectPeer( - peer, - peer_set, - )) => { - assert_eq!(expected_peer, peer); - assert_eq!(PeerSet::Collation, peer_set); - } - ); -} - -/// Assert that the given collators got disconnected. -async fn assert_collators_disconnect( - virtual_overseer: &mut VirtualOverseer, - expected_peers: &[PeerId], -) { - for _ in expected_peers { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::DisconnectPeer( - peer, - peer_set, - )) => { - assert!(expected_peers.contains(&peer), "Unexpected collator disconnected: {:?}", peer); - assert_eq!(PeerSet::Collation, peer_set); - } - ); - } -} - -/// Assert that a fetch collation request was send. -async fn assert_fetch_collation_request( - virtual_overseer: &mut VirtualOverseer, - relay_parent: Hash, - para_id: ParaId, -) -> ResponseSender { - assert_matches!( - overseer_recv(virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendRequests(reqs, IfDisconnected::ImmediateError) - ) => { - let req = reqs.into_iter().next() - .expect("There should be exactly one request"); - match req { - Requests::CollationFetching(req) => { - let payload = req.payload; - assert_eq!(payload.relay_parent, relay_parent); - assert_eq!(payload.para_id, para_id); - req.pending_response - } - _ => panic!("Unexpected request"), - } - }) -} - -/// Connect and declare a collator -async fn connect_and_declare_collator( - virtual_overseer: &mut VirtualOverseer, - peer: PeerId, - collator: CollatorPair, - para_id: ParaId, -) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer.clone(), - ObservedRole::Full, - None, - ), - ) - ).await; - - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer.clone(), - protocol_v1::CollatorProtocolMessage::Declare( - collator.public(), - para_id, - collator.sign(&protocol_v1::declare_signature_payload(&peer)), - ) - ) - ) - ).await; -} - -/// Advertise a collation. -async fn advertise_collation( - virtual_overseer: &mut VirtualOverseer, - peer: PeerId, - relay_parent: Hash, -) { - overseer_send( - virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer, - protocol_v1::CollatorProtocolMessage::AdvertiseCollation( - relay_parent, - ) - ) - ) - ).await; -} - -// As we receive a relevant advertisement act on it and issue a collation request. -#[test] -fn act_on_advertisement() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let pair = CollatorPair::generate().0; - tracing::trace!("activating"); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - connect_and_declare_collator(&mut virtual_overseer, peer_b.clone(), pair.clone(), test_state.chain_ids[0]).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), test_state.relay_parent).await; - - assert_fetch_collation_request(&mut virtual_overseer, test_state.relay_parent, test_state.chain_ids[0]).await; - - virtual_overseer - }); -} - -// Test that other subsystems may modify collators' reputations. -#[test] -fn collator_reporting_works() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - - connect_and_declare_collator( - &mut virtual_overseer, - peer_b.clone(), - test_state.collators[0].clone(), - test_state.chain_ids[0].clone(), - ).await; - - connect_and_declare_collator( - &mut virtual_overseer, - peer_c.clone(), - test_state.collators[1].clone(), - test_state.chain_ids[0].clone(), - ).await; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::ReportCollator(test_state.collators[0].public()), - ).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep), - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REPORT_BAD); - } - ); - - virtual_overseer - }); -} - -// Test that we verify the signatures on `Declare` and `AdvertiseCollation` messages. -#[test] -fn collator_authentication_verification_works() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let peer_b = PeerId::random(); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_b, - ObservedRole::Full, - None, - ), - ) - ).await; - - // the peer sends a declare message but sign the wrong payload - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - protocol_v1::CollatorProtocolMessage::Declare( - test_state.collators[0].public(), - test_state.chain_ids[0], - test_state.collators[0].sign(&[42]), - ), - )), - ) - .await; - - // it should be reported for sending a message with an invalid signature - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep), - ) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_INVALID_SIGNATURE); - } - ); - virtual_overseer - }); -} - -// A test scenario that takes the following steps -// - Two collators connect, declare themselves and advertise a collation relevant to -// our view. -// - Collation protocol should request one PoV. -// - Collation protocol should disconnect both collators after having received the collation. -// - The same collators connect again and send povs for a different relay parent. -// - Collation protocol will request one PoV, but we will cancel it. -// - Collation protocol should request the second PoV. -#[test] -fn fetch_collations_works() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let second = Hash::random(); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent, second]) - ), - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - - connect_and_declare_collator( - &mut virtual_overseer, - peer_b.clone(), - test_state.collators[0].clone(), - test_state.chain_ids[0].clone(), - ).await; - - connect_and_declare_collator( - &mut virtual_overseer, - peer_c.clone(), - test_state.collators[1].clone(), - test_state.chain_ids[0].clone(), - ).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), test_state.relay_parent).await; - advertise_collation(&mut virtual_overseer, peer_c.clone(), test_state.relay_parent).await; - - let response_channel = assert_fetch_collation_request( - &mut virtual_overseer, - test_state.relay_parent, - test_state.chain_ids[0], - ).await; - - assert!( - overseer_recv_with_timeout(&mut &mut virtual_overseer, Duration::from_millis(30)).await.is_none(), - "There should not be sent any other PoV request while the first one wasn't finished", - ); - - let pov = PoV { block_data: BlockData(vec![]) }; - let mut candidate_a = CandidateReceipt::default(); - candidate_a.descriptor.para_id = test_state.chain_ids[0]; - candidate_a.descriptor.relay_parent = test_state.relay_parent; - response_channel.send(Ok( - CollationFetchingResponse::Collation( - candidate_a.clone(), - pov.clone(), - ).encode() - )).expect("Sending response should succeed"); - - assert_candidate_backing_second( - &mut virtual_overseer, - test_state.relay_parent, - test_state.chain_ids[0], - &pov, - ).await; - - assert_collators_disconnect(&mut virtual_overseer, &[peer_b.clone(), peer_c.clone()]).await; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::PeerDisconnected(peer_b.clone())), - ).await; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::PeerDisconnected(peer_c.clone())), - ).await; - - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - - connect_and_declare_collator( - &mut virtual_overseer, - peer_b.clone(), - test_state.collators[2].clone(), - test_state.chain_ids[0].clone(), - ).await; - - connect_and_declare_collator( - &mut virtual_overseer, - peer_c.clone(), - test_state.collators[3].clone(), - test_state.chain_ids[0].clone(), - ).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), second).await; - advertise_collation(&mut virtual_overseer, peer_c.clone(), second).await; - - // Dropping the response channel should lead to fetching the second collation. - assert_fetch_collation_request( - &mut virtual_overseer, - second, - test_state.chain_ids[0], - ).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REQUEST_TIMED_OUT); - } - ); - - let response_channel = assert_fetch_collation_request( - &mut virtual_overseer, - second, - test_state.chain_ids[0], - ).await; - - let pov = PoV { block_data: BlockData(vec![1]) }; - let mut candidate_a = CandidateReceipt::default(); - candidate_a.descriptor.para_id = test_state.chain_ids[0]; - candidate_a.descriptor.relay_parent = second; - response_channel.send(Ok( - CollationFetchingResponse::Collation( - candidate_a.clone(), - pov.clone(), - ).encode() - )).expect("Sending response should succeed"); - - assert_candidate_backing_second( - &mut virtual_overseer, - second, - test_state.chain_ids[0], - &pov, - ).await; - - virtual_overseer - }); -} - -#[test] -fn inactive_disconnected() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let pair = CollatorPair::generate().0; - - let hash_a = test_state.relay_parent; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![hash_a]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - connect_and_declare_collator(&mut virtual_overseer, peer_b.clone(), pair.clone(), test_state.chain_ids[0]).await; - advertise_collation(&mut virtual_overseer, peer_b.clone(), test_state.relay_parent).await; - - assert_fetch_collation_request(&mut virtual_overseer, test_state.relay_parent, test_state.chain_ids[0]).await; - - Delay::new(ACTIVITY_TIMEOUT * 3).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REQUEST_TIMED_OUT); - } - ); - - assert_collator_disconnect(&mut virtual_overseer, peer_b.clone()).await; - virtual_overseer - }); -} - -#[test] -fn activity_extends_life() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let pair = CollatorPair::generate().0; - - let hash_a = test_state.relay_parent; - let hash_b = Hash::repeat_byte(1); - let hash_c = Hash::repeat_byte(2); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![hash_a, hash_b, hash_c]) - ) - ).await; - - // 3 heads, 3 times. - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - connect_and_declare_collator(&mut virtual_overseer, peer_b.clone(), pair.clone(), test_state.chain_ids[0]).await; - - Delay::new(ACTIVITY_TIMEOUT * 2 / 3).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), hash_a).await; - - assert_fetch_collation_request(&mut virtual_overseer, hash_a, test_state.chain_ids[0]).await; - - Delay::new(ACTIVITY_TIMEOUT * 2 / 3).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), hash_b).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REQUEST_TIMED_OUT); - } - ); - - assert_fetch_collation_request(&mut virtual_overseer, hash_b, test_state.chain_ids[0]).await; - - Delay::new(ACTIVITY_TIMEOUT * 2 / 3).await; - - advertise_collation(&mut virtual_overseer, peer_b.clone(), hash_c).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REQUEST_TIMED_OUT); - } - ); - - assert_fetch_collation_request(&mut virtual_overseer, hash_c, test_state.chain_ids[0]).await; - - Delay::new(ACTIVITY_TIMEOUT * 3 / 2).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_REQUEST_TIMED_OUT); - } - ); - - assert_collator_disconnect(&mut virtual_overseer, peer_b.clone()).await; - - virtual_overseer - }); -} - -#[test] -fn disconnect_if_no_declare() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_b.clone(), - ObservedRole::Full, - None, - ) - ) - ).await; - - assert_collator_disconnect(&mut virtual_overseer, peer_b.clone()).await; - - virtual_overseer - }) -} - -#[test] -fn disconnect_if_wrong_declare() { - let test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let pair = CollatorPair::generate().0; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_b.clone(), - ObservedRole::Full, - None, - ) - ) - ).await; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_b.clone(), - protocol_v1::CollatorProtocolMessage::Declare( - pair.public(), - ParaId::from(69), - pair.sign(&protocol_v1::declare_signature_payload(&peer_b)), - ) - ) - ) - ).await; - - assert_matches!( - overseer_recv(&mut virtual_overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( - peer, - rep, - )) => { - assert_eq!(peer, peer_b); - assert_eq!(rep, COST_UNNEEDED_COLLATOR); - } - ); - - assert_collator_disconnect(&mut virtual_overseer, peer_b.clone()).await; - - virtual_overseer - }) -} - -#[test] -fn view_change_clears_old_collators() { - let mut test_state = TestState::default(); - - test_harness(|test_harness| async move { - let TestHarness { - mut virtual_overseer, - } = test_harness; - - let pair = CollatorPair::generate().0; - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![test_state.relay_parent]) - ) - ).await; - - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - let peer_b = PeerId::random(); - - connect_and_declare_collator(&mut virtual_overseer, peer_b.clone(), pair.clone(), test_state.chain_ids[0]).await; - - let hash_b = Hash::repeat_byte(69); - - overseer_send( - &mut virtual_overseer, - CollatorProtocolMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::OurViewChange(our_view![hash_b]) - ) - ).await; - - test_state.group_rotation_info = test_state.group_rotation_info.bump_rotation(); - respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; - - assert_collator_disconnect(&mut virtual_overseer, peer_b.clone()).await; - - virtual_overseer - }) -} diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml deleted file mode 100644 index acce9e222968..000000000000 --- a/node/network/gossip-support/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "polkadot-gossip-support" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-node-network-protocol = { path = "../protocol" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-primitives = { path = "../../../primitives" } - -futures = "0.3.15" -rand = { version = "0.8.3", default-features = false } -rand_chacha = { version = "0.3.1", default-features = false } -tracing = "0.1.26" - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } - -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } - -assert_matches = "1.4.0" diff --git a/node/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs deleted file mode 100644 index 29ba32b6163b..000000000000 --- a/node/network/gossip-support/src/lib.rs +++ /dev/null @@ -1,340 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! This subsystem is responsible for keeping track of session changes -//! and issuing a connection request to the relevant validators -//! on every new session. -//! -//! In addition to that, it creates a gossip overlay topology -//! which limits the amount of messages sent and received -//! to be an order of sqrt of the validators. Our neighbors -//! in this graph will be forwarded to the network bridge with -//! the `NetworkBridgeMessage::NewGossipTopology` message. - -use std::time::{Duration, Instant}; -use futures::{channel::oneshot, FutureExt as _}; -use rand::{SeedableRng, seq::SliceRandom as _}; -use rand_chacha::ChaCha20Rng; -use polkadot_node_subsystem::{ - messages::{ - AllMessages, GossipSupportMessage, NetworkBridgeMessage, - RuntimeApiMessage, RuntimeApiRequest, - }, - ActiveLeavesUpdate, FromOverseer, OverseerSignal, - Subsystem, SpawnedSubsystem, SubsystemContext, -}; -use polkadot_node_subsystem_util as util; -use polkadot_primitives::v1::{ - Hash, SessionIndex, AuthorityDiscoveryId, -}; -use polkadot_node_network_protocol::peer_set::PeerSet; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr}; -use sp_application_crypto::{Public, AppKey}; - -#[cfg(test)] -mod tests; - -const LOG_TARGET: &str = "parachain::gossip-support"; -// How much time should we wait to reissue a connection request -// since the last authority discovery resolution failure. -const BACKOFF_DURATION: Duration = Duration::from_secs(5); - -/// The Gossip Support subsystem. -pub struct GossipSupport { - keystore: SyncCryptoStorePtr, -} - -#[derive(Default)] -struct State { - last_session_index: Option, - // Some(timestamp) if we failed to resolve - // at least a third of authorities the last time. - // `None` otherwise. - last_failure: Option, -} - -impl GossipSupport { - /// Create a new instance of the [`GossipSupport`] subsystem. - pub fn new(keystore: SyncCryptoStorePtr) -> Self { - Self { - keystore, - } - } - - async fn run(self, ctx: Context) - where - Context: SubsystemContext, - { - let mut state = State::default(); - self.run_inner(ctx, &mut state).await; - } - - async fn run_inner(self, mut ctx: Context, state: &mut State) - where - Context: SubsystemContext, - { - let Self { keystore } = self; - loop { - let message = match ctx.recv().await { - Ok(message) => message, - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - err = ?e, - "Failed to receive a message from Overseer, exiting", - ); - return; - }, - }; - match message { - FromOverseer::Communication { .. } => {}, - FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated, - .. - })) => { - tracing::trace!(target: LOG_TARGET, "active leaves signal"); - - let leaves = activated.into_iter().map(|a| a.hash); - if let Err(e) = state.handle_active_leaves(&mut ctx, &keystore, leaves).await { - tracing::debug!(target: LOG_TARGET, error = ?e); - } - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => {}, - FromOverseer::Signal(OverseerSignal::Conclude) => { - return; - } - } - } - } -} - -async fn determine_relevant_authorities( - ctx: &mut impl SubsystemContext, - relay_parent: Hash, -) -> Result, util::Error> { - let authorities = util::request_authorities(relay_parent, ctx.sender()).await.await??; - tracing::debug!( - target: LOG_TARGET, - authority_count = ?authorities.len(), - "Determined relevant authorities", - ); - Ok(authorities) -} - -/// Return an error if we're not a validator in the given set (do not have keys). -/// Otherwise, returns the index of our keys in `authorities`. -async fn ensure_i_am_an_authority( - keystore: &SyncCryptoStorePtr, - authorities: &[AuthorityDiscoveryId], -) -> Result { - for (i, v) in authorities.iter().enumerate() { - if CryptoStore::has_keys( - &**keystore, - &[(v.to_raw_vec(), AuthorityDiscoveryId::ID)] - ).await { - return Ok(i); - } - } - Err(util::Error::NotAValidator) -} - -/// A helper function for making a `ConnectToValidators` request. -async fn connect_to_authorities( - ctx: &mut impl SubsystemContext, - validator_ids: Vec, - peer_set: PeerSet, -) -> oneshot::Receiver { - let (failed, failed_rx) = oneshot::channel(); - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - } - )).await; - failed_rx -} - -/// We partition the list of all sorted `authorities` into sqrt(len) groups of sqrt(len) size -/// and form a matrix where each validator is connected to all validators in its row and column. -/// This is similar to [web3] research proposed topology, except for the groups are not parachain -/// groups (because not all validators are parachain validators and the group size is small), -/// but formed randomly via BABE randomness from two epochs ago. -/// This limits the amount of gossip peers to 2 * sqrt(len) and ensures the diameter of 2. -/// -/// [web3]: https://research.web3.foundation/en/latest/polkadot/networking/3-avail-valid.html#topology -async fn update_gossip_topology( - ctx: &mut impl SubsystemContext, - our_index: usize, - authorities: Vec, - relay_parent: Hash, -) -> Result<(), util::Error> { - // retrieve BABE randomness - let random_seed = { - let (tx, rx) = oneshot::channel(); - - ctx.send_message(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::CurrentBabeEpoch(tx), - ).into()).await; - - let randomness = rx.await??.randomness; - let mut subject = [0u8; 40]; - subject[..8].copy_from_slice(b"gossipsu"); - subject[8..].copy_from_slice(&randomness); - sp_core::blake2_256(&subject) - }; - - // shuffle the indices - let mut rng: ChaCha20Rng = SeedableRng::from_seed(random_seed); - let len = authorities.len(); - let mut indices: Vec = (0..len).collect(); - indices.shuffle(&mut rng); - let our_shuffled_position = indices.iter() - .position(|i| *i == our_index) - .expect("our_index < len; indices contains it; qed"); - - let neighbors = matrix_neighbors(our_shuffled_position, len); - let our_neighbors = neighbors.map(|i| authorities[indices[i]].clone()).collect(); - - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::NewGossipTopology { - our_neighbors, - } - )).await; - - Ok(()) -} - -/// Compute our row and column neighbors in a matrix -fn matrix_neighbors(our_index: usize, len: usize) -> impl Iterator { - assert!(our_index < len, "our_index is computed using `enumerate`; qed"); - - // e.g. for size 11 the matrix would be - // - // 0 1 2 - // 3 4 5 - // 6 7 8 - // 9 10 - // - // and for index 10, the neighbors would be 1, 4, 7, 9 - - let sqrt = (len as f64).sqrt() as usize; - let our_row = our_index / sqrt; - let our_column = our_index % sqrt; - let row_neighbors = our_row * sqrt..std::cmp::min(our_row * sqrt + sqrt, len); - let column_neighbors = (our_column..len).step_by(sqrt); - - row_neighbors.chain(column_neighbors).filter(move |i| *i != our_index) -} - -impl State { - /// 1. Determine if the current session index has changed. - /// 2. If it has, determine relevant validators - /// and issue a connection request. - async fn handle_active_leaves( - &mut self, - ctx: &mut impl SubsystemContext, - keystore: &SyncCryptoStorePtr, - leaves: impl Iterator, - ) -> Result<(), util::Error> { - for leaf in leaves { - let current_index = util::request_session_index_for_child(leaf, ctx.sender()).await.await??; - let since_failure = self.last_failure.map(|i| i.elapsed()).unwrap_or_default(); - let force_request = since_failure >= BACKOFF_DURATION; - let leaf_session = Some((current_index, leaf)); - let maybe_new_session = match self.last_session_index { - Some(i) if current_index <= i => None, - _ => leaf_session, - }; - - let maybe_issue_connection = if force_request { - leaf_session - } else { - maybe_new_session - }; - - if let Some((session_index, relay_parent)) = maybe_issue_connection { - let is_new_session = maybe_new_session.is_some(); - if is_new_session { - tracing::debug!( - target: LOG_TARGET, - %session_index, - "New session detected", - ); - } - - let authorities = determine_relevant_authorities(ctx, relay_parent).await?; - let our_index = ensure_i_am_an_authority(keystore, &authorities).await?; - - self.issue_connection_request(ctx, authorities.clone()).await?; - - if is_new_session { - self.last_session_index = Some(session_index); - update_gossip_topology(ctx, our_index, authorities, relay_parent).await?; - } - } - - } - - Ok(()) - } - - async fn issue_connection_request( - &mut self, - ctx: &mut impl SubsystemContext, - authorities: Vec, - ) -> Result<(), util::Error> { - let num = authorities.len(); - tracing::debug!(target: LOG_TARGET, %num, "Issuing a connection request"); - - let failures = connect_to_authorities( - ctx, - authorities, - PeerSet::Validation, - ).await; - - // we await for the request to be processed - // this is fine, it should take much less time than one session - let failures = failures.await.unwrap_or(num); - - // issue another request for the same session - // if at least a third of the authorities were not resolved - self.last_failure = if failures >= num / 3 { - Some(Instant::now()) - } else { - None - }; - - Ok(()) - } -} - -impl Subsystem for GossipSupport -where - Context: SubsystemContext + Sync + Send, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = self.run(ctx) - .map(|_| Ok(())) - .boxed(); - - SpawnedSubsystem { - name: "gossip-support-subsystem", - future, - } - } -} diff --git a/node/network/gossip-support/src/tests.rs b/node/network/gossip-support/src/tests.rs deleted file mode 100644 index 7f96f4caf7ac..000000000000 --- a/node/network/gossip-support/src/tests.rs +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Unit tests for Gossip Support Subsystem. - -use super::*; -use polkadot_node_subsystem::{ - jaeger, ActivatedLeaf, LeafStatus, - messages::{RuntimeApiMessage, RuntimeApiRequest}, -}; -use polkadot_node_subsystem_test_helpers as test_helpers; -use polkadot_node_subsystem_util::TimeoutExt as _; -use sc_keystore::LocalKeystore; -use sp_keyring::Sr25519Keyring; -use sp_keystore::SyncCryptoStore; -use sp_consensus_babe::{ - Epoch as BabeEpoch, BabeEpochConfiguration, AllowedSlots, -}; - -use std::sync::Arc; -use std::time::Duration; -use assert_matches::assert_matches; -use futures::{Future, executor, future}; - -type VirtualOverseer = test_helpers::TestSubsystemContextHandle; - -fn test_harness>( - mut state: State, - test_fn: impl FnOnce(VirtualOverseer) -> T, -) -> State { - let pool = sp_core::testing::TaskExecutor::new(); - let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - - let keystore = make_ferdie_keystore(); - let subsystem = GossipSupport::new(keystore); - { - let subsystem = subsystem.run_inner(context, &mut state); - - let test_fut = test_fn(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join(async move { - let mut overseer = test_fut.await; - overseer - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .timeout(TIMEOUT) - .await - .expect("Conclude send timeout"); - }, subsystem)); - } - - state -} - -const TIMEOUT: Duration = Duration::from_millis(100); - -async fn overseer_signal_active_leaves( - overseer: &mut VirtualOverseer, - leaf: Hash, -) { - let leaf = ActivatedLeaf { - hash: leaf, - number: 0xdeadcafe, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }; - overseer - .send(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(leaf)))) - .timeout(TIMEOUT) - .await - .expect("signal send timeout"); -} - -async fn overseer_recv( - overseer: &mut VirtualOverseer, -) -> AllMessages { - let msg = overseer - .recv() - .timeout(TIMEOUT) - .await - .expect("msg recv timeout"); - - msg -} - -fn make_ferdie_keystore() -> SyncCryptoStorePtr { - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - SyncCryptoStore::sr25519_generate_new( - &*keystore, - AuthorityDiscoveryId::ID, - Some(&Sr25519Keyring::Ferdie.to_seed()), - ) - .expect("Insert key into keystore"); - keystore -} - -fn authorities() -> Vec { - vec![ - Sr25519Keyring::Alice.public().into(), - Sr25519Keyring::Bob.public().into(), - Sr25519Keyring::Charlie.public().into(), - Sr25519Keyring::Ferdie.public().into(), - Sr25519Keyring::Eve.public().into(), - Sr25519Keyring::One.public().into(), - ] -} - -fn neighbors() -> Vec { - vec![ - Sr25519Keyring::One.public().into(), - Sr25519Keyring::Alice.public().into(), - Sr25519Keyring::Eve.public().into(), - ] -} - -async fn test_neighbors(overseer: &mut VirtualOverseer) { - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - _, - RuntimeApiRequest::CurrentBabeEpoch(tx), - )) => { - let _ = tx.send(Ok(BabeEpoch { - epoch_index: 2 as _, - start_slot: 0.into(), - duration: 200, - authorities: vec![(Sr25519Keyring::Alice.public().into(), 1)], - randomness: [0u8; 32], - config: BabeEpochConfiguration { - c: (1, 4), - allowed_slots: AllowedSlots::PrimarySlots, - }, - })).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::NewGossipTopology { - our_neighbors, - }) => { - let mut got: Vec<_> = our_neighbors.into_iter().collect(); - got.sort(); - assert_eq!(got, neighbors()); - } - ); -} - -#[test] -fn issues_a_connection_request_on_new_session() { - let hash = Hash::repeat_byte(0xAA); - let state = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(1)).unwrap(); - } - ); - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Authorities(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - }) => { - assert_eq!(validator_ids, authorities()); - assert_eq!(peer_set, PeerSet::Validation); - failed.send(0).unwrap(); - } - ); - - test_neighbors(overseer).await; - - virtual_overseer - }); - - assert_eq!(state.last_session_index, Some(1)); - assert!(state.last_failure.is_none()); - - // does not issue on the same session - let hash = Hash::repeat_byte(0xBB); - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(1)).unwrap(); - } - ); - virtual_overseer - }); - - assert_eq!(state.last_session_index, Some(1)); - assert!(state.last_failure.is_none()); - - // does on the new one - let hash = Hash::repeat_byte(0xCC); - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(2)).unwrap(); - } - ); - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Authorities(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - }) => { - assert_eq!(validator_ids, authorities()); - assert_eq!(peer_set, PeerSet::Validation); - failed.send(0).unwrap(); - } - ); - - test_neighbors(overseer).await; - - virtual_overseer - }); - assert_eq!(state.last_session_index, Some(2)); - assert!(state.last_failure.is_none()); -} - -#[test] -fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { - let hash = Hash::repeat_byte(0xAA); - let mut state = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(1)).unwrap(); - } - ); - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Authorities(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - }) => { - assert_eq!(validator_ids, authorities()); - assert_eq!(peer_set, PeerSet::Validation); - failed.send(2).unwrap(); - } - ); - - test_neighbors(overseer).await; - - virtual_overseer - }); - - assert_eq!(state.last_session_index, Some(1)); - assert!(state.last_failure.is_some()); - state.last_failure = state.last_failure.and_then(|i| i.checked_sub(BACKOFF_DURATION)); - - let hash = Hash::repeat_byte(0xBB); - let state = test_harness(state, |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(1)).unwrap(); - } - ); - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Authorities(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - }) => { - assert_eq!(validator_ids, authorities()); - assert_eq!(peer_set, PeerSet::Validation); - failed.send(1).unwrap(); - } - ); - - virtual_overseer - }); - - assert_eq!(state.last_session_index, Some(1)); - assert!(state.last_failure.is_none()); -} - -#[test] -fn test_matrix_neighbors() { - for (our_index, len, expected) in vec![ - (0usize, 1usize, vec![]), - (1, 2, vec![0usize]), - (0, 9, vec![1, 2, 3, 6]), - (9, 10, vec![0, 3, 6]), - (10, 11, vec![1, 4, 7, 9]), - (7, 11, vec![1, 4, 6, 8, 10]), - ].into_iter() { - let mut result: Vec<_> = matrix_neighbors(our_index, len).collect(); - result.sort(); - assert_eq!(result, expected); - } -} diff --git a/node/network/protocol/Cargo.toml b/node/network/protocol/Cargo.toml deleted file mode 100644 index 2e83e01fa045..000000000000 --- a/node/network/protocol/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "polkadot-node-network-protocol" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Primitives types for the Node-side" - -[dependencies] -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-jaeger = { path = "../../jaeger" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -strum = { version = "0.20", features = ["derive"] } -futures = "0.3.15" -thiserror = "1.0.23" diff --git a/node/network/protocol/src/lib.rs b/node/network/protocol/src/lib.rs deleted file mode 100644 index acd24f7156bf..000000000000 --- a/node/network/protocol/src/lib.rs +++ /dev/null @@ -1,449 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Network protocol types for parachains. - -#![deny(unused_crate_dependencies)] -#![warn(missing_docs)] - -use polkadot_primitives::v1::{Hash, BlockNumber}; -use parity_scale_codec::{Encode, Decode}; -use std::{fmt, collections::HashMap}; - -pub use sc_network::{PeerId, IfDisconnected}; -#[doc(hidden)] -pub use polkadot_node_jaeger as jaeger; -#[doc(hidden)] -pub use std::sync::Arc; - -mod reputation; -pub use self::reputation::{ReputationChange, UnifiedReputationChange}; - -/// Peer-sets and protocols used for parachains. -pub mod peer_set; - -/// Request/response protocols used in Polkadot. -pub mod request_response; - -/// A version of the protocol. -pub type ProtocolVersion = u32; -/// The minimum amount of peers to send gossip messages to. -pub const MIN_GOSSIP_PEERS: usize = 25; - - -/// An error indicating that this the over-arching message type had the wrong variant -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct WrongVariant; - -impl fmt::Display for WrongVariant { - fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(formatter, "Wrong message variant") - } -} - -impl std::error::Error for WrongVariant {} - -/// The advertised role of a node. -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum ObservedRole { - /// A light node. - Light, - /// A full node. - Full, - /// A node claiming to be an authority (unauthenticated) - Authority, -} - -impl From for ObservedRole { - fn from(role: sc_network::ObservedRole) -> ObservedRole { - match role { - sc_network::ObservedRole::Light => ObservedRole::Light, - sc_network::ObservedRole::Authority => ObservedRole::Authority, - sc_network::ObservedRole::Full => ObservedRole::Full, - } - } -} - -impl Into for ObservedRole { - fn into(self) -> sc_network::ObservedRole { - match self { - ObservedRole::Light => sc_network::ObservedRole::Light, - ObservedRole::Full => sc_network::ObservedRole::Full, - ObservedRole::Authority => sc_network::ObservedRole::Authority, - } - } -} - -macro_rules! impl_try_from { - ($m_ty:ident, $variant:ident, $out:ty) => { - impl TryFrom<$m_ty> for $out { - type Error = crate::WrongVariant; - - #[allow(unreachable_patterns)] // when there is only one variant - fn try_from(x: $m_ty) -> Result<$out, Self::Error> { - match x { - $m_ty::$variant(y) => Ok(y), - _ => Err(crate::WrongVariant), - } - } - } - - impl<'a> TryFrom<&'a $m_ty> for &'a $out { - type Error = crate::WrongVariant; - - fn try_from(x: &'a $m_ty) -> Result<&'a $out, Self::Error> { - #[allow(unreachable_patterns)] // when there is only one variant - match *x { - $m_ty::$variant(ref y) => Ok(y), - _ => Err(crate::WrongVariant), - } - } - } - } -} - - -/// Specialized wrapper around [`View`]. -/// -/// Besides the access to the view itself, it also gives access to the [`jaeger::Span`] per leave/head. -#[derive(Debug, Clone, Default)] -pub struct OurView { - view: View, - span_per_head: HashMap>, -} - -impl OurView { - /// Creates a new instance. - pub fn new(heads: impl IntoIterator)>, finalized_number: BlockNumber) -> Self { - let state_per_head = heads.into_iter().collect::>(); - let view = View::new( - state_per_head.keys().cloned(), - finalized_number, - ); - Self { - view, - span_per_head: state_per_head, - } - } - - /// Returns the span per head map. - /// - /// For each head there exists one span in this map. - pub fn span_per_head(&self) -> &HashMap> { - &self.span_per_head - } -} - -impl PartialEq for OurView { - fn eq(&self, other: &Self) -> bool { - self.view == other.view - } -} - -impl std::ops::Deref for OurView { - type Target = View; - - fn deref(&self) -> &View { - &self.view - } -} - -/// Construct a new [`OurView`] with the given chain heads, finalized number 0 and disabled [`jaeger::Span`]'s. -/// -/// NOTE: Use for tests only. -/// -/// # Example -/// -/// ``` -/// # use polkadot_node_network_protocol::our_view; -/// # use polkadot_primitives::v1::Hash; -/// let our_view = our_view![Hash::repeat_byte(1), Hash::repeat_byte(2)]; -/// ``` -#[macro_export] -macro_rules! our_view { - ( $( $hash:expr ),* $(,)? ) => { - $crate::OurView::new( - vec![ $( $hash.clone() ),* ].into_iter().map(|h| (h, $crate::Arc::new($crate::jaeger::Span::Disabled))), - 0, - ) - }; -} - -/// A succinct representation of a peer's view. This consists of a bounded amount of chain heads -/// and the highest known finalized block number. -/// -/// Up to `N` (5?) chain heads. -#[derive(Default, Debug, Clone, PartialEq, Eq, Encode, Decode)] -pub struct View { - /// A bounded amount of chain heads. - /// Invariant: Sorted. - heads: Vec, - /// The highest known finalized block number. - pub finalized_number: BlockNumber, -} - -/// Construct a new view with the given chain heads and finalized number 0. -/// -/// NOTE: Use for tests only. -/// -/// # Example -/// -/// ``` -/// # use polkadot_node_network_protocol::view; -/// # use polkadot_primitives::v1::Hash; -/// let view = view![Hash::repeat_byte(1), Hash::repeat_byte(2)]; -/// ``` -#[macro_export] -macro_rules! view { - ( $( $hash:expr ),* $(,)? ) => { - $crate::View::new(vec![ $( $hash.clone() ),* ], 0) - }; -} - -impl View { - /// Construct a new view based on heads and a finalized block number. - pub fn new(heads: impl IntoIterator, finalized_number: BlockNumber) -> Self - { - let mut heads = heads.into_iter().collect::>(); - heads.sort(); - Self { - heads, - finalized_number, - } - } - - /// Start with no heads, but only a finalized block number. - pub fn with_finalized(finalized_number: BlockNumber) -> Self { - Self { - heads: Vec::new(), - finalized_number, - } - } - - /// Obtain the number of heads that are in view. - pub fn len(&self) -> usize { - self.heads.len() - } - - /// Check if the number of heads contained, is null. - pub fn is_empty(&self) -> bool { - self.heads.is_empty() - } - - /// Obtain an iterator over all heads. - pub fn iter<'a>(&'a self) -> impl Iterator { - self.heads.iter() - } - - /// Obtain an iterator over all heads. - pub fn into_iter(self) -> impl Iterator { - self.heads.into_iter() - } - - /// Replace `self` with `new`. - /// - /// Returns an iterator that will yield all elements of `new` that were not part of `self`. - pub fn replace_difference(&mut self, new: View) -> impl Iterator { - let old = std::mem::replace(self, new); - - self.heads.iter().filter(move |h| !old.contains(h)) - } - - /// Returns an iterator of the hashes present in `Self` but not in `other`. - pub fn difference<'a>(&'a self, other: &'a View) -> impl Iterator + 'a { - self.heads.iter().filter(move |h| !other.contains(h)) - } - - /// An iterator containing hashes present in both `Self` and in `other`. - pub fn intersection<'a>(&'a self, other: &'a View) -> impl Iterator + 'a { - self.heads.iter().filter(move |h| other.contains(h)) - } - - /// Whether the view contains a given hash. - pub fn contains(&self, hash: &Hash) -> bool { - self.heads.contains(hash) - } - - /// Check if two views have the same heads. - /// - /// Equivalent to the `PartialEq` fn, - /// but ignores the `finalized_number` field. - pub fn check_heads_eq(&self, other: &Self) -> bool { - self.heads == other.heads - } -} - -/// v1 protocol types. -pub mod v1 { - use parity_scale_codec::{Encode, Decode}; - use std::convert::TryFrom; - - use polkadot_primitives::v1::{ - CandidateHash, CandidateIndex, CollatorId, CollatorSignature, - CompactStatement, Hash, Id as ParaId, UncheckedSignedAvailabilityBitfield, - ValidatorIndex, ValidatorSignature, - }; - - use polkadot_node_primitives::{ - approval::{IndirectAssignmentCert, IndirectSignedApprovalVote}, - UncheckedSignedFullStatement, - }; - - - /// Network messages used by the bitfield distribution subsystem. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum BitfieldDistributionMessage { - /// A signed availability bitfield for a given relay-parent hash. - #[codec(index = 0)] - Bitfield(Hash, UncheckedSignedAvailabilityBitfield), - } - - /// Network messages used by the statement distribution subsystem. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum StatementDistributionMessage { - /// A signed full statement under a given relay-parent. - #[codec(index = 0)] - Statement(Hash, UncheckedSignedFullStatement), - /// Seconded statement with large payload (e.g. containing a runtime upgrade). - /// - /// We only gossip the hash in that case, actual payloads can be fetched from sending node - /// via req/response. - #[codec(index = 1)] - LargeStatement(StatementMetadata), - } - - /// Data that makes a statement unique. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, Hash)] - pub struct StatementMetadata { - /// Relay parent this statement is relevant under. - pub relay_parent: Hash, - /// Hash of the candidate that got validated. - pub candidate_hash: CandidateHash, - /// Validator that attested the validity. - pub signed_by: ValidatorIndex, - /// Signature of seconding validator. - pub signature: ValidatorSignature, - } - - impl StatementDistributionMessage { - /// Get meta data of the given `StatementDistributionMessage`. - pub fn get_metadata(&self) -> StatementMetadata { - match self { - Self::Statement(relay_parent, statement) => StatementMetadata { - relay_parent: *relay_parent, - candidate_hash: statement.unchecked_payload().candidate_hash(), - signed_by: statement.unchecked_validator_index(), - signature: statement.unchecked_signature().clone(), - }, - Self::LargeStatement(metadata) => metadata.clone(), - } - } - - /// Get fingerprint describing the contained statement uniquely. - pub fn get_fingerprint(&self) -> (CompactStatement, ValidatorIndex) { - match self { - Self::Statement(_, statement) => - (statement.unchecked_payload().to_compact(), statement.unchecked_validator_index()), - Self::LargeStatement(meta) => - (CompactStatement::Seconded(meta.candidate_hash), meta.signed_by), - } - } - - /// Get contained relay parent. - pub fn get_relay_parent(&self) -> Hash { - match self { - Self::Statement(r, _) => *r, - Self::LargeStatement(meta) => meta.relay_parent, - } - } - - /// Whether this message contains a large statement. - pub fn is_large_statement(&self) -> bool { - if let Self::LargeStatement(_) = self { - true - } else { - false - } - } - } - - /// Network messages used by the approval distribution subsystem. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum ApprovalDistributionMessage { - /// Assignments for candidates in recent, unfinalized blocks. - /// - /// Actually checking the assignment may yield a different result. - #[codec(index = 0)] - Assignments(Vec<(IndirectAssignmentCert, CandidateIndex)>), - /// Approvals for candidates in some recent, unfinalized block. - #[codec(index = 1)] - Approvals(Vec), - } - - /// Network messages used by the collator protocol subsystem - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum CollatorProtocolMessage { - /// Declare the intent to advertise collations under a collator ID, attaching a - /// signature of the `PeerId` of the node using the given collator ID key. - #[codec(index = 0)] - Declare(CollatorId, ParaId, CollatorSignature), - /// Advertise a collation to a validator. Can only be sent once the peer has - /// declared that they are a collator with given ID. - #[codec(index = 1)] - AdvertiseCollation(Hash), - /// A collation sent to a validator was seconded. - #[codec(index = 4)] - CollationSeconded(Hash, UncheckedSignedFullStatement), - } - - /// All network messages on the validation peer-set. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum ValidationProtocol { - /// Bitfield distribution messages - #[codec(index = 1)] - BitfieldDistribution(BitfieldDistributionMessage), - /// Statement distribution messages - #[codec(index = 3)] - StatementDistribution(StatementDistributionMessage), - /// Approval distribution messages - #[codec(index = 4)] - ApprovalDistribution(ApprovalDistributionMessage), - } - - impl_try_from!(ValidationProtocol, BitfieldDistribution, BitfieldDistributionMessage); - impl_try_from!(ValidationProtocol, StatementDistribution, StatementDistributionMessage); - impl_try_from!(ValidationProtocol, ApprovalDistribution, ApprovalDistributionMessage); - - /// All network messages on the collation peer-set. - #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] - pub enum CollationProtocol { - /// Collator protocol messages - #[codec(index = 0)] - CollatorProtocol(CollatorProtocolMessage), - } - - impl_try_from!(CollationProtocol, CollatorProtocol, CollatorProtocolMessage); - - /// Get the payload that should be signed and included in a `Declare` message. - /// - /// The payload is the local peer id of the node, which serves to prove that it - /// controls the collator key it is declaring an intention to collate under. - pub fn declare_signature_payload(peer_id: &sc_network::PeerId) -> Vec { - let mut payload = peer_id.to_bytes(); - payload.extend_from_slice(b"COLL"); - payload - } -} diff --git a/node/network/protocol/src/peer_set.rs b/node/network/protocol/src/peer_set.rs deleted file mode 100644 index e83019d5d385..000000000000 --- a/node/network/protocol/src/peer_set.rs +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! All peersets and protocols used for parachains. - -use sc_network::config::{NonDefaultSetConfig, SetConfig}; -use std::{borrow::Cow, ops::{Index, IndexMut}}; -use strum::{EnumIter, IntoEnumIterator}; - -/// The peer-sets and thus the protocols which are used for the network. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, EnumIter)] -pub enum PeerSet { - /// The validation peer-set is responsible for all messages related to candidate validation and - /// communication among validators. - Validation, - /// The collation peer-set is used for validator<>collator communication. - Collation, -} - -/// Whether a node is an authority or not. -/// -/// Peer set configuration gets adjusted accordingly. -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum IsAuthority { - /// Node is authority. - Yes, - /// Node is not an authority. - No, -} - -impl PeerSet { - /// Get `sc_network` peer set configurations for each peerset. - /// - /// Those should be used in the network configuration to register the protocols with the - /// network service. - pub fn get_info(self, is_authority: IsAuthority) -> NonDefaultSetConfig { - let protocol = self.into_protocol_name(); - let max_notification_size = 100 * 1024; - - match self { - PeerSet::Validation => NonDefaultSetConfig { - notifications_protocol: protocol, - fallback_names: Vec::new(), - max_notification_size, - set_config: sc_network::config::SetConfig { - // we allow full nodes to connect to validators for gossip - // to ensure any `MIN_GOSSIP_PEERS` always include reserved peers - // we limit the amount of non-reserved slots to be less - // than `MIN_GOSSIP_PEERS` in total - in_peers: super::MIN_GOSSIP_PEERS as u32 / 2 - 1, - out_peers: super::MIN_GOSSIP_PEERS as u32 / 2 - 1, - reserved_nodes: Vec::new(), - non_reserved_mode: sc_network::config::NonReservedPeerMode::Accept, - }, - }, - PeerSet::Collation => NonDefaultSetConfig { - notifications_protocol: protocol, - fallback_names: Vec::new(), - max_notification_size, - set_config: SetConfig { - // Non-authority nodes don't need to accept incoming connections on this peer set: - in_peers: if is_authority == IsAuthority::Yes { 25 } else { 0 }, - out_peers: 0, - reserved_nodes: Vec::new(), - non_reserved_mode: if is_authority == IsAuthority::Yes { - sc_network::config::NonReservedPeerMode::Accept - } else { - sc_network::config::NonReservedPeerMode::Deny - } - }, - }, - } - } - - /// Get the protocol name associated with each peer set as static str. - pub const fn get_protocol_name_static(self) -> &'static str { - match self { - PeerSet::Validation => "/polkadot/validation/1", - PeerSet::Collation => "/polkadot/collation/1", - } - } - - /// Convert a peer set into a protocol name as understood by Substrate. - pub fn into_protocol_name(self) -> Cow<'static, str> { - self.get_protocol_name_static().into() - } - - /// Try parsing a protocol name into a peer set. - pub fn try_from_protocol_name(name: &Cow<'static, str>) -> Option { - match name { - n if n == &PeerSet::Validation.into_protocol_name() => Some(PeerSet::Validation), - n if n == &PeerSet::Collation.into_protocol_name() => Some(PeerSet::Collation), - _ => None, - } - } -} - -/// A small and nifty collection that allows to store data pertaining to each peer set. -#[derive(Debug, Default)] -pub struct PerPeerSet { - validation: T, - collation: T, -} - -impl Index for PerPeerSet { - type Output = T; - fn index(&self, index: PeerSet) -> &T { - match index { - PeerSet::Validation => &self.validation, - PeerSet::Collation => &self.collation, - } - } -} - -impl IndexMut for PerPeerSet { - fn index_mut(&mut self, index: PeerSet) -> &mut T { - match index { - PeerSet::Validation => &mut self.validation, - PeerSet::Collation => &mut self.collation, - } - } -} - -/// Get `NonDefaultSetConfig`s for all available peer sets. -/// -/// Should be used during network configuration (added to [`NetworkConfiguration::extra_sets`]) -/// or shortly after startup to register the protocols with the network service. -pub fn peer_sets_info(is_authority: IsAuthority) -> Vec { - PeerSet::iter().map(|s| s.get_info(is_authority)).collect() -} diff --git a/node/network/protocol/src/reputation.rs b/node/network/protocol/src/reputation.rs deleted file mode 100644 index 1773ecdcb832..000000000000 --- a/node/network/protocol/src/reputation.rs +++ /dev/null @@ -1,76 +0,0 @@ -pub use sc_network::ReputationChange; - -/// Unified annoyance cost and good behavior benefits. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -#[allow(missing_docs)] -pub enum UnifiedReputationChange { - CostMajor(&'static str), - CostMinor(&'static str), - CostMajorRepeated(&'static str), - CostMinorRepeated(&'static str), - Malicious(&'static str), - BenefitMinorFirst(&'static str), - BenefitMinor(&'static str), - BenefitMajorFirst(&'static str), - BenefitMajor(&'static str), -} - -impl UnifiedReputationChange { - /// Obtain the cost or benefit associated with - /// the enum variant. - /// - /// Order of magnitude rationale: - /// - /// * the peerset will not connect to a peer whose reputation is below a fixed value - /// * `max(2% *$rep, 1)` is the delta of convergence towards a reputation of 0 - /// - /// The whole range of an `i32` should be used, so order of magnitude of - /// something malicious should be `1<<20` (give or take). - const fn cost_or_benefit(&self) -> i32 { - match self { - Self::CostMinor(_) => -100_000, - Self::CostMajor(_) => -300_000, - Self::CostMinorRepeated(_) => -200_000, - Self::CostMajorRepeated(_) => -600_000, - Self::Malicious(_) => i32::min_value(), - Self::BenefitMajorFirst(_) => 300_000, - Self::BenefitMajor(_) => 200_000, - Self::BenefitMinorFirst(_) => 15_000, - Self::BenefitMinor(_) => 10_000, - } - } - - /// Extract the static description. - pub const fn description(&self) -> &'static str { - match self { - Self::CostMinor(description) => description, - Self::CostMajor(description) => description, - Self::CostMinorRepeated(description) => description, - Self::CostMajorRepeated(description) => description, - Self::Malicious(description) => description, - Self::BenefitMajorFirst(description) => description, - Self::BenefitMajor(description) => description, - Self::BenefitMinorFirst(description) => description, - Self::BenefitMinor(description) => description, - } - } - - /// Whether the reputation change is for good behavior. - pub const fn is_benefit(&self) -> bool { - match self { - Self::BenefitMajorFirst(_) | - Self::BenefitMajor(_) | - Self::BenefitMinorFirst(_) | - Self::BenefitMinor(_) => true, - _ => false, - } - } - - /// Convert into a base reputation as used with substrate. - pub const fn into_base_rep(self) -> ReputationChange { - ReputationChange::new( - self.cost_or_benefit(), - self.description() - ) - } -} diff --git a/node/network/protocol/src/request_response/mod.rs b/node/network/protocol/src/request_response/mod.rs deleted file mode 100644 index 2ad578891032..000000000000 --- a/node/network/protocol/src/request_response/mod.rs +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Overview over request/responses as used in `Polkadot`. -//! -//! enum Protocol .... List of all supported protocols. -//! -//! enum Requests .... List of all supported requests, each entry matches one in protocols, but -//! has the actual request as payload. -//! -//! struct IncomingRequest .... wrapper for incoming requests, containing a sender for sending -//! responses. -//! -//! struct OutgoingRequest .... wrapper for outgoing requests, containing a sender used by the -//! networking code for delivering responses/delivery errors. -//! -//! trait `IsRequest` .... A trait describing a particular request. It is used for gathering meta -//! data, like what is the corresponding response type. -//! -//! Versioned (v1 module): The actual requests and responses as sent over the network. - -use std::{borrow::Cow, u64}; -use std::time::Duration; - -use futures::channel::mpsc; -use polkadot_primitives::v1::{MAX_CODE_SIZE, MAX_POV_SIZE}; -use strum::EnumIter; - -pub use sc_network::config as network; -pub use sc_network::config::RequestResponseConfig; - -/// All requests that can be sent to the network bridge. -pub mod request; -pub use request::{IncomingRequest, OutgoingRequest, Requests, Recipient, OutgoingResult, ResponseSender}; - -///// Multiplexer for incoming requests. -// pub mod multiplexer; - -/// Actual versioned requests and responses, that are sent over the wire. -pub mod v1; - -/// A protocol per subsystem seems to make the most sense, this way we don't need any dispatching -/// within protocols. -#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, EnumIter)] -pub enum Protocol { - /// Protocol for chunk fetching, used by availability distribution and availability recovery. - ChunkFetching, - /// Protocol for fetching collations from collators. - CollationFetching, - /// Protocol for fetching seconded PoVs from validators of the same group. - PoVFetching, - /// Protocol for fetching available data. - AvailableDataFetching, - /// Fetching of statements that are too large for gossip. - StatementFetching, -} - - -/// Minimum bandwidth we expect for validators - 500Mbit/s is the recommendation, so approximately -/// 50Meg bytes per second: -const MIN_BANDWIDTH_BYTES: u64 = 50 * 1024 * 1024; - -/// Default request timeout in seconds. -/// -/// When decreasing this value, take into account that the very first request might need to open a -/// connection, which can be slow. If this causes problems, we should ensure connectivity via peer -/// sets. -#[allow(dead_code)] -const DEFAULT_REQUEST_TIMEOUT: Duration = Duration::from_secs(3); - -/// Request timeout where we can assume the connection is already open (e.g. we have peers in a -/// peer set as well). -const DEFAULT_REQUEST_TIMEOUT_CONNECTED: Duration = Duration::from_secs(1); - -/// This timeout is based on what seems sensible from a time budget perspective, considering 6 -/// second block time. This is going to be tough, if we have multiple forks and large PoVs, but we -/// only have so much time. -const POV_REQUEST_TIMEOUT_CONNECTED: Duration = Duration::from_millis(1000); - -/// We want timeout statement requests fast, so we don't waste time on slow nodes. Responders will -/// try their best to either serve within that timeout or return an error immediately. (We need to -/// fit statement distribution within a block of 6 seconds.) -const STATEMENTS_TIMEOUT: Duration = Duration::from_secs(1); - -/// We don't want a slow peer to slow down all the others, at the same time we want to get out the -/// data quickly in full to at least some peers (as this will reduce load on us as they then can -/// start serving the data). So this value is a tradeoff. 3 seems to be sensible. So we would need -/// to have 3 slow noded connected, to delay transfer for others by `STATEMENTS_TIMEOUT`. -pub const MAX_PARALLEL_STATEMENT_REQUESTS: u32 = 3; - -impl Protocol { - /// Get a configuration for a given Request response protocol. - /// - /// Returns a receiver for messages received on this protocol and the requested - /// `ProtocolConfig`. - /// - /// See also `dispatcher::RequestDispatcher`, which makes use of this function and provides a more - /// high-level interface. - pub fn get_config( - self, - ) -> ( - mpsc::Receiver, - RequestResponseConfig, - ) { - let p_name = self.into_protocol_name(); - let (tx, rx) = mpsc::channel(self.get_channel_size()); - let cfg = match self { - Protocol::ChunkFetching => RequestResponseConfig { - name: p_name, - max_request_size: 1_000, - max_response_size: MAX_POV_SIZE as u64 / 10, - // We are connected to all validators: - request_timeout: DEFAULT_REQUEST_TIMEOUT_CONNECTED, - inbound_queue: Some(tx), - }, - Protocol::CollationFetching => RequestResponseConfig { - name: p_name, - max_request_size: 1_000, - max_response_size: MAX_POV_SIZE as u64 + 1000, - // Taken from initial implementation in collator protocol: - request_timeout: POV_REQUEST_TIMEOUT_CONNECTED, - inbound_queue: Some(tx), - }, - Protocol::PoVFetching => RequestResponseConfig { - name: p_name, - max_request_size: 1_000, - max_response_size: MAX_POV_SIZE as u64, - request_timeout: POV_REQUEST_TIMEOUT_CONNECTED, - inbound_queue: Some(tx), - }, - Protocol::AvailableDataFetching => RequestResponseConfig { - name: p_name, - max_request_size: 1_000, - // Available data size is dominated by the PoV size. - max_response_size: MAX_POV_SIZE as u64 + 1000, - request_timeout: POV_REQUEST_TIMEOUT_CONNECTED, - inbound_queue: Some(tx), - }, - Protocol::StatementFetching => RequestResponseConfig { - name: p_name, - max_request_size: 1_000, - // Available data size is dominated code size. - // + 1000 to account for protocol overhead (should be way less). - max_response_size: MAX_CODE_SIZE as u64 + 1000, - // We need statement fetching to be fast and will try our best at the responding - // side to answer requests within that timeout, assuming a bandwidth of 500Mbit/s - // - which is the recommended minimum bandwidth for nodes on Kusama as of April - // 2021. - // Responders will reject requests, if it is unlikely they can serve them within - // the timeout, so the requester can immediately try another node, instead of - // waiting for timeout on an overloaded node. Fetches from slow nodes will likely - // fail, but this is desired, so we can quickly move on to a faster one - we should - // also decrease its reputation. - request_timeout: Duration::from_secs(1), - inbound_queue: Some(tx), - }, - }; - (rx, cfg) - } - - // Channel sizes for the supported protocols. - fn get_channel_size(self) -> usize { - match self { - // Hundreds of validators will start requesting their chunks once they see a candidate - // awaiting availability on chain. Given that they will see that block at different - // times (due to network delays), 100 seems big enough to accomodate for "bursts", - // assuming we can service requests relatively quickly, which would need to be measured - // as well. - Protocol::ChunkFetching => 100, - // 10 seems reasonable, considering group sizes of max 10 validators. - Protocol::CollationFetching => 10, - // 10 seems reasonable, considering group sizes of max 10 validators. - Protocol::PoVFetching => 10, - // Validators are constantly self-selecting to request available data which may lead - // to constant load and occasional burstiness. - Protocol::AvailableDataFetching => 100, - // Our queue size approximation is how many blocks of the size of - // a runtime we can transfer within a statements timeout, minus the requests we handle - // in parallel. - Protocol::StatementFetching => { - // We assume we can utilize up to 70% of the available bandwidth for statements. - // This is just a guess/estimate, with the following considerations: If we are - // faster than that, queue size will stay low anyway, even if not - requesters will - // get an immediate error, but if we are slower, requesters will run in a timeout - - // waisting precious time. - let available_bandwidth = 7 * MIN_BANDWIDTH_BYTES / 10; - let size = u64::saturating_sub( - STATEMENTS_TIMEOUT.as_millis() as u64 * available_bandwidth / (1000 * MAX_CODE_SIZE as u64), - MAX_PARALLEL_STATEMENT_REQUESTS as u64 - ); - debug_assert!( - size > 0, - "We should have a channel size greater zero, otherwise we won't accept any requests." - ); - size as usize - } - } - } - - /// Get the protocol name of this protocol, as understood by substrate networking. - pub fn into_protocol_name(self) -> Cow<'static, str> { - self.get_protocol_name_static().into() - } - - /// Get the protocol name associated with each peer set as static str. - pub const fn get_protocol_name_static(self) -> &'static str { - match self { - Protocol::ChunkFetching => "/polkadot/req_chunk/1", - Protocol::CollationFetching => "/polkadot/req_collation/1", - Protocol::PoVFetching => "/polkadot/req_pov/1", - Protocol::AvailableDataFetching => "/polkadot/req_available_data/1", - Protocol::StatementFetching => "/polkadot/req_statement/1", - } - } -} diff --git a/node/network/protocol/src/request_response/request.rs b/node/network/protocol/src/request_response/request.rs deleted file mode 100644 index 4e6456627bd5..000000000000 --- a/node/network/protocol/src/request_response/request.rs +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use futures::channel::oneshot; -use futures::prelude::Future; - -use thiserror::Error; -use parity_scale_codec::{Decode, Encode, Error as DecodingError}; -use sc_network as network; -use sc_network::config as netconfig; -use sc_network::PeerId; - -use polkadot_primitives::v1::AuthorityDiscoveryId; - -use crate::UnifiedReputationChange; - -use super::{v1, Protocol}; - -/// Used by the network to send us a response to a request. -pub type ResponseSender = oneshot::Sender, network::RequestFailure>>; - -/// Common properties of any `Request`. -pub trait IsRequest { - /// Each request has a corresponding `Response`. - type Response; - - /// What protocol this `Request` implements. - const PROTOCOL: Protocol; -} - -/// All requests that can be sent to the network bridge via `NetworkBridgeMessage::SendRequest`. -#[derive(Debug)] -pub enum Requests { - /// Request an availability chunk from a node. - ChunkFetching(OutgoingRequest), - /// Fetch a collation from a collator which previously announced it. - CollationFetching(OutgoingRequest), - /// Fetch a PoV from a validator which previously sent out a seconded statement. - PoVFetching(OutgoingRequest), - /// Request full available data from a node. - AvailableDataFetching(OutgoingRequest), - /// Requests for fetching large statements as part of statement distribution. - StatementFetching(OutgoingRequest), -} - -impl Requests { - /// Get the protocol this request conforms to. - pub fn get_protocol(&self) -> Protocol { - match self { - Self::ChunkFetching(_) => Protocol::ChunkFetching, - Self::CollationFetching(_) => Protocol::CollationFetching, - Self::PoVFetching(_) => Protocol::PoVFetching, - Self::AvailableDataFetching(_) => Protocol::AvailableDataFetching, - Self::StatementFetching(_) => Protocol::StatementFetching, - } - } - - /// Encode the request. - /// - /// The corresponding protocol is returned as well, as we are now leaving typed territory. - /// - /// Note: `Requests` is just an enum collecting all supported requests supported by network - /// bridge, it is never sent over the wire. This function just encodes the individual requests - /// contained in the enum. - pub fn encode_request(self) -> (Protocol, OutgoingRequest>) { - match self { - Self::ChunkFetching(r) => r.encode_request(), - Self::CollationFetching(r) => r.encode_request(), - Self::PoVFetching(r) => r.encode_request(), - Self::AvailableDataFetching(r) => r.encode_request(), - Self::StatementFetching(r) => r.encode_request(), - } - } -} - -/// Potential recipients of an outgoing request. -#[derive(Debug, Eq, Hash, PartialEq)] -pub enum Recipient { - /// Recipient is a regular peer and we know its peer id. - Peer(PeerId), - /// Recipient is a validator, we address it via this `AuthorityDiscoveryId`. - Authority(AuthorityDiscoveryId), -} - -/// A request to be sent to the network bridge, including a sender for sending responses/failures. -/// -/// The network implementation will make use of that sender for informing the requesting subsystem -/// about responses/errors. -/// -/// When using `Recipient::Peer`, keep in mind that no address (as in IP address and port) might -/// be known for that specific peer. You are encouraged to use `Peer` for peers that you are -/// expected to be already connected to. -/// When using `Recipient::Authority`, the addresses can be found thanks to the authority -/// discovery system. -#[derive(Debug)] -pub struct OutgoingRequest { - /// Intended recipient of this request. - pub peer: Recipient, - /// The actual request to send over the wire. - pub payload: Req, - /// Sender which is used by networking to get us back a response. - pub pending_response: ResponseSender, -} - -/// Any error that can occur when sending a request. -#[derive(Debug, Error)] -pub enum RequestError { - /// Response could not be decoded. - #[error("Response could not be decoded")] - InvalidResponse(#[source] DecodingError), - - /// Some error in substrate/libp2p happened. - #[error("Some network error occurred")] - NetworkError(#[source] network::RequestFailure), - - /// Response got canceled by networking. - #[error("Response channel got canceled")] - Canceled(#[source] oneshot::Canceled), -} - -/// Responses received for an `OutgoingRequest`. -pub type OutgoingResult = Result; - -impl OutgoingRequest -where - Req: IsRequest + Encode, - Req::Response: Decode, -{ - /// Create a new `OutgoingRequest`. - /// - /// It will contain a sender that is used by the networking for sending back responses. The - /// connected receiver is returned as the second element in the returned tuple. - pub fn new( - peer: Recipient, - payload: Req, - ) -> ( - Self, - impl Future>, - ) { - let (tx, rx) = oneshot::channel(); - let r = Self { - peer, - payload, - pending_response: tx, - }; - (r, receive_response::(rx)) - } - - /// Encode a request into a `Vec`. - /// - /// As this throws away type information, we also return the `Protocol` this encoded request - /// adheres to. - pub fn encode_request(self) -> (Protocol, OutgoingRequest>) { - let OutgoingRequest { - peer, - payload, - pending_response, - } = self; - let encoded = OutgoingRequest { - peer, - payload: payload.encode(), - pending_response, - }; - (Req::PROTOCOL, encoded) - } -} - -impl From for RequestError { - fn from(err: DecodingError) -> Self { - Self::InvalidResponse(err) - } -} - -impl From for RequestError { - fn from(err: network::RequestFailure) -> Self { - Self::NetworkError(err) - } -} - -impl From for RequestError { - fn from(err: oneshot::Canceled) -> Self { - Self::Canceled(err) - } -} - -/// A request coming in, including a sender for sending responses. -/// -/// `IncomingRequest`s are produced by `RequestMultiplexer` on behalf of the network bridge. -#[derive(Debug)] -pub struct IncomingRequest { - /// PeerId of sending peer. - pub peer: PeerId, - /// The sent request. - pub payload: Req, - pending_response: oneshot::Sender, -} - -/// Typed variant of [`netconfig::OutgoingResponse`]. -/// -/// Responses to `IncomingRequest`s. -pub struct OutgoingResponse { - /// The payload of the response. - pub result: Result, - - /// Reputation changes accrued while handling the request. To be applied to the reputation of - /// the peer sending the request. - pub reputation_changes: Vec, - - /// If provided, the `oneshot::Sender` will be notified when the request has been sent to the - /// peer. - pub sent_feedback: Option>, -} - -impl IncomingRequest -where - Req: IsRequest, - Req::Response: Encode, -{ - /// Create new `IncomingRequest`. - pub fn new( - peer: PeerId, - payload: Req, - pending_response: oneshot::Sender, - ) -> Self { - Self { - peer, - payload, - pending_response, - } - } - - /// Send the response back. - /// - /// On success we return Ok(()), on error we return the not sent `Response`. - /// - /// netconfig::OutgoingResponse exposes a way of modifying the peer's reputation. If needed we - /// can change this function to expose this feature as well. - pub fn send_response(self, resp: Req::Response) -> Result<(), Req::Response> { - self.pending_response - .send(netconfig::OutgoingResponse { - result: Ok(resp.encode()), - reputation_changes: Vec::new(), - sent_feedback: None, - }) - .map_err(|_| resp) - } - - /// Send response with additional options. - /// - /// This variant allows for waiting for the response to be sent out, allows for changing peer's - /// reputation and allows for not sending a response at all (for only changing the peer's - /// reputation). - pub fn send_outgoing_response(self, resp: OutgoingResponse<::Response>) - -> Result<(), ()> { - let OutgoingResponse { - result, - reputation_changes, - sent_feedback, - } = resp; - - let response = netconfig::OutgoingResponse { - result: result.map(|v| v.encode()), - reputation_changes: reputation_changes - .into_iter() - .map(|c| c.into_base_rep()) - .collect(), - sent_feedback, - }; - - self.pending_response.send(response).map_err(|_| ()) - } -} - -/// Future for actually receiving a typed response for an OutgoingRequest. -async fn receive_response( - rec: oneshot::Receiver, network::RequestFailure>>, -) -> OutgoingResult -where - Req: IsRequest, - Req::Response: Decode, -{ - let raw = rec.await??; - Ok(Decode::decode(&mut raw.as_ref())?) -} diff --git a/node/network/protocol/src/request_response/v1.rs b/node/network/protocol/src/request_response/v1.rs deleted file mode 100644 index 89c732773552..000000000000 --- a/node/network/protocol/src/request_response/v1.rs +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Requests and responses as sent over the wire for the individual protocols. - -use parity_scale_codec::{Decode, Encode}; - -use polkadot_primitives::v1::{CandidateHash, CandidateReceipt, CommittedCandidateReceipt, Hash, ValidatorIndex}; -use polkadot_primitives::v1::Id as ParaId; -use polkadot_node_primitives::{AvailableData, PoV, ErasureChunk}; - -use super::request::IsRequest; -use super::Protocol; - -/// Request an availability chunk. -#[derive(Debug, Copy, Clone, Encode, Decode)] -pub struct ChunkFetchingRequest { - /// Hash of candidate we want a chunk for. - pub candidate_hash: CandidateHash, - /// The index of the chunk to fetch. - pub index: ValidatorIndex, -} - -/// Receive a requested erasure chunk. -#[derive(Debug, Clone, Encode, Decode)] -pub enum ChunkFetchingResponse { - /// The requested chunk data. - #[codec(index = 0)] - Chunk(ChunkResponse), - /// Node was not in possession of the requested chunk. - #[codec(index = 1)] - NoSuchChunk, -} - -impl From> for ChunkFetchingResponse { - fn from(x: Option) -> Self { - match x { - Some(c) => ChunkFetchingResponse::Chunk(c), - None => ChunkFetchingResponse::NoSuchChunk, - } - } -} - -/// Skimmed down variant of `ErasureChunk`. -/// -/// Instead of transmitting a full `ErasureChunk` we transmit `ChunkResponse` in -/// `ChunkFetchingResponse`, which omits the chunk's index. The index is already known by -/// the requester and by not transmitting it, we ensure the requester is going to use his index -/// value for validating the response, thus making sure he got what he requested. -#[derive(Debug, Clone, Encode, Decode)] -pub struct ChunkResponse { - /// The erasure-encoded chunk of data belonging to the candidate block. - pub chunk: Vec, - /// Proof for this chunk's branch in the Merkle tree. - pub proof: Vec>, -} - -impl From for ChunkResponse { - fn from(ErasureChunk {chunk, index: _, proof}: ErasureChunk) -> Self { - ChunkResponse {chunk, proof} - } -} - -impl ChunkResponse { - /// Re-build an `ErasureChunk` from response and request. - pub fn recombine_into_chunk(self, req: &ChunkFetchingRequest) -> ErasureChunk { - ErasureChunk { - chunk: self.chunk, - proof: self.proof, - index: req.index, - } - } -} - -impl IsRequest for ChunkFetchingRequest { - type Response = ChunkFetchingResponse; - const PROTOCOL: Protocol = Protocol::ChunkFetching; -} - -/// Request the advertised collation at that relay-parent. -#[derive(Debug, Clone, Encode, Decode)] -pub struct CollationFetchingRequest { - /// Relay parent we want a collation for. - pub relay_parent: Hash, - /// The `ParaId` of the collation. - pub para_id: ParaId, -} - -/// Responses as sent by collators. -#[derive(Debug, Clone, Encode, Decode)] -pub enum CollationFetchingResponse { - /// Deliver requested collation. - #[codec(index = 0)] - Collation(CandidateReceipt, PoV), -} - -impl IsRequest for CollationFetchingRequest { - type Response = CollationFetchingResponse; - const PROTOCOL: Protocol = Protocol::CollationFetching; -} - -/// Request the advertised collation at that relay-parent. -#[derive(Debug, Clone, Encode, Decode)] -pub struct PoVFetchingRequest { - /// Candidate we want a PoV for. - pub candidate_hash: CandidateHash, -} - -/// Responses to `PoVFetchingRequest`. -#[derive(Debug, Clone, Encode, Decode)] -pub enum PoVFetchingResponse { - /// Deliver requested PoV. - #[codec(index = 0)] - PoV(PoV), - /// PoV was not found in store. - #[codec(index = 1)] - NoSuchPoV, -} - -impl IsRequest for PoVFetchingRequest { - type Response = PoVFetchingResponse; - const PROTOCOL: Protocol = Protocol::PoVFetching; -} - -/// Request the entire available data for a candidate. -#[derive(Debug, Clone, Encode, Decode)] -pub struct AvailableDataFetchingRequest { - /// The candidate hash to get the available data for. - pub candidate_hash: CandidateHash, -} - -/// Receive a requested available data. -#[derive(Debug, Clone, Encode, Decode)] -pub enum AvailableDataFetchingResponse { - /// The requested data. - #[codec(index = 0)] - AvailableData(AvailableData), - /// Node was not in possession of the requested data. - #[codec(index = 1)] - NoSuchData, -} - -impl From> for AvailableDataFetchingResponse { - fn from(x: Option) -> Self { - match x { - Some(data) => AvailableDataFetchingResponse::AvailableData(data), - None => AvailableDataFetchingResponse::NoSuchData, - } - } -} - -impl IsRequest for AvailableDataFetchingRequest { - type Response = AvailableDataFetchingResponse; - const PROTOCOL: Protocol = Protocol::AvailableDataFetching; -} - -/// Request for fetching a large statement via request/response. -#[derive(Debug, Clone, Encode, Decode)] -pub struct StatementFetchingRequest { - /// Data needed to locate and identify the needed statement. - pub relay_parent: Hash, - /// Hash of candidate that was used create the CommitedCandidateRecept. - pub candidate_hash: CandidateHash, -} - -/// Respond with found full statement. -/// -/// In this protocol the requester will only request data it was previously notified about, -/// therefore not having the data is not really an option and would just result in a -/// `RequestFailure`. -#[derive(Debug, Clone, Encode, Decode)] -pub enum StatementFetchingResponse { - /// Data missing to reconstruct the full signed statement. - #[codec(index = 0)] - Statement(CommittedCandidateReceipt), -} - -impl IsRequest for StatementFetchingRequest { - type Response = StatementFetchingResponse; - const PROTOCOL: Protocol = Protocol::StatementFetching; -} diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml deleted file mode 100644 index c21b1fdf7818..000000000000 --- a/node/network/statement-distribution/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "polkadot-statement-distribution" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Statement Distribution Subsystem" -edition = "2018" - -[dependencies] -futures = "0.3.15" -tracing = "0.1.26" -polkadot-primitives = { path = "../../../primitives" } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-node-subsystem-util = { path = "../../subsystem-util" } -polkadot-node-network-protocol = { path = "../../network/protocol" } -arrayvec = "0.5.2" -indexmap = "1.6.1" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -thiserror = "1.0.23" - -[dev-dependencies] -polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } -assert_matches = "1.4.0" -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures-timer = "3.0.2" diff --git a/node/network/statement-distribution/src/error.rs b/node/network/statement-distribution/src/error.rs deleted file mode 100644 index 097b37099975..000000000000 --- a/node/network/statement-distribution/src/error.rs +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -// - -//! Error handling related code and Error/Result definitions. - -use polkadot_node_network_protocol::PeerId; -use polkadot_primitives::v1::{CandidateHash, Hash}; -use polkadot_subsystem::SubsystemError; -use thiserror::Error; - -use polkadot_node_subsystem_util::{Fault, runtime, unwrap_non_fatal}; - -use crate::LOG_TARGET; - -/// General result. -pub type Result = std::result::Result; -/// Result for non-fatal only failures. -pub type NonFatalResult = std::result::Result; -/// Result for fatal only failures. -pub type FatalResult = std::result::Result; - -/// Errors for statement distribution. -#[derive(Debug, Error)] -#[error(transparent)] -pub struct Error(pub Fault); - -impl From for Error { - fn from(e: NonFatal) -> Self { - Self(Fault::from_non_fatal(e)) - } -} - -impl From for Error { - fn from(f: Fatal) -> Self { - Self(Fault::from_fatal(f)) - } -} - -impl From for Error { - fn from(o: runtime::Error) -> Self { - Self(Fault::from_other(o)) - } -} - -/// Fatal runtime errors. -#[derive(Debug, Error)] -pub enum Fatal { - /// Requester channel is never closed. - #[error("Requester receiver stream finished.")] - RequesterReceiverFinished, - - /// Responder channel is never closed. - #[error("Responder receiver stream finished.")] - ResponderReceiverFinished, - - /// Spawning a running task failed. - #[error("Spawning subsystem task failed")] - SpawnTask(#[source] SubsystemError), - - /// Receiving subsystem message from overseer failed. - #[error("Receiving message from overseer failed")] - SubsystemReceive(#[source] SubsystemError), - - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::Fatal), -} - -/// Errors for fetching of runtime information. -#[derive(Debug, Error)] -pub enum NonFatal { - /// Errors coming from runtime::Runtime. - #[error("Error while accessing runtime information")] - Runtime(#[from] #[source] runtime::NonFatal), - - /// Relay parent was not present in active heads. - #[error("Relay parent could not be found in active heads")] - NoSuchHead(Hash), - - /// Peer requested statement data for candidate that was never announced to it. - #[error("Peer requested data for candidate it never received a notification for")] - RequestedUnannouncedCandidate(PeerId, CandidateHash), - - /// A large statement status was requested, which could not be found. - #[error("Statement status does not exist")] - NoSuchLargeStatementStatus(Hash, CandidateHash), - - /// A fetched large statement was requested, but could not be found. - #[error("Fetched large statement does not exist")] - NoSuchFetchedLargeStatement(Hash, CandidateHash), - - /// Responder no longer waits for our data. (Should not happen right now.) - #[error("Oneshot `GetData` channel closed")] - ResponderGetDataCanceled, -} - -/// Utility for eating top level errors and log them. -/// -/// We basically always want to try and continue on error. This utility function is meant to -/// consume top-level errors by simply logging them. -pub fn log_error(result: Result<()>, ctx: &'static str) - -> FatalResult<()> -{ - if let Some(error) = unwrap_non_fatal(result.map_err(|e| e.0))? { - tracing::debug!(target: LOG_TARGET, error = ?error, ctx) - } - Ok(()) -} diff --git a/node/network/statement-distribution/src/lib.rs b/node/network/statement-distribution/src/lib.rs deleted file mode 100644 index b0b2d8d8f859..000000000000 --- a/node/network/statement-distribution/src/lib.rs +++ /dev/null @@ -1,2099 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Statement Distribution Subsystem. -//! -//! This is responsible for distributing signed statements about candidate -//! validity amongst validators. - -#![deny(unused_crate_dependencies)] -#![warn(missing_docs)] - -use error::{FatalResult, NonFatalResult, log_error}; -use parity_scale_codec::Encode; - -use polkadot_subsystem::{ - ActiveLeavesUpdate, FromOverseer, OverseerSignal, PerLeafSpan, SpawnedSubsystem, Subsystem, - SubsystemContext, SubsystemError, jaeger, - messages::{ - AllMessages, NetworkBridgeMessage, StatementDistributionMessage, - CandidateBackingMessage, NetworkBridgeEvent, - }, -}; -use polkadot_node_subsystem_util::{ - metrics::{self, prometheus}, - self as util, MIN_GOSSIP_PEERS, -}; -use polkadot_node_primitives::{SignedFullStatement, UncheckedSignedFullStatement, Statement}; -use polkadot_primitives::v1::{ - CandidateHash, CommittedCandidateReceipt, CompactStatement, Hash, - SigningContext, ValidatorId, ValidatorIndex, ValidatorSignature, AuthorityDiscoveryId, -}; -use polkadot_node_network_protocol::{ - IfDisconnected, PeerId, UnifiedReputationChange as Rep, View, - peer_set::{ - IsAuthority, PeerSet - }, - v1::{ - self as protocol_v1, StatementMetadata - } -}; - -use futures::{channel::mpsc, future::RemoteHandle, prelude::*}; -use futures::channel::oneshot; -use indexmap::{IndexMap, map::Entry as IEntry}; -use sp_keystore::SyncCryptoStorePtr; -use util::{Fault, runtime::RuntimeInfo}; - -use std::collections::{HashMap, HashSet, hash_map::Entry}; - -mod error; -pub use error::{Error, NonFatal, Fatal, Result}; - -/// Background task logic for requesting of large statements. -mod requester; -use requester::{RequesterMessage, fetch}; - -/// Background task logic for responding for large statements. -mod responder; -use responder::{ResponderMessage, respond}; - -#[cfg(test)] -mod tests; - -const COST_UNEXPECTED_STATEMENT: Rep = Rep::CostMinor("Unexpected Statement"); -const COST_FETCH_FAIL: Rep = Rep::CostMinor("Requesting `CommittedCandidateReceipt` from peer failed"); -const COST_INVALID_SIGNATURE: Rep = Rep::CostMajor("Invalid Statement Signature"); -const COST_WRONG_HASH: Rep = Rep::CostMajor("Received candidate had wrong hash"); -const COST_DUPLICATE_STATEMENT: Rep = Rep::CostMajorRepeated("Statement sent more than once by peer"); -const COST_APPARENT_FLOOD: Rep = Rep::Malicious("Peer appears to be flooding us with statements"); - -const BENEFIT_VALID_STATEMENT: Rep = Rep::BenefitMajor("Peer provided a valid statement"); -const BENEFIT_VALID_STATEMENT_FIRST: Rep = Rep::BenefitMajorFirst( - "Peer was the first to provide a valid statement", -); -const BENEFIT_VALID_RESPONSE: Rep = Rep::BenefitMajor("Peer provided a valid large statement response"); - -/// The maximum amount of candidates each validator is allowed to second at any relay-parent. -/// Short for "Validator Candidate Threshold". -/// -/// This is the amount of candidates we keep per validator at any relay-parent. -/// Typically we will only keep 1, but when a validator equivocates we will need to track 2. -const VC_THRESHOLD: usize = 2; - -const LOG_TARGET: &str = "parachain::statement-distribution"; - -/// Large statements should be rare. -const MAX_LARGE_STATEMENTS_PER_SENDER: usize = 20; - -/// The statement distribution subsystem. -pub struct StatementDistribution { - /// Pointer to a keystore, which is required for determining this nodes validator index. - keystore: SyncCryptoStorePtr, - // Prometheus metrics - metrics: Metrics, -} - -impl Subsystem for StatementDistribution - where C: SubsystemContext -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - // Swallow error because failure is fatal to the node and we log with more precision - // within `run`. - SpawnedSubsystem { - name: "statement-distribution-subsystem", - future: self - .run(ctx) - .map_err(|e| SubsystemError::with_origin("statement-distribution", e)) - .boxed(), - } - } -} - -impl StatementDistribution { - /// Create a new Statement Distribution Subsystem - pub fn new(keystore: SyncCryptoStorePtr, metrics: Metrics) -> StatementDistribution { - StatementDistribution { - keystore, - metrics, - } - } -} - -/// Tracks our impression of a single peer's view of the candidates a validator has seconded -/// for a given relay-parent. -/// -/// It is expected to receive at most `VC_THRESHOLD` from us and be aware of at most `VC_THRESHOLD` -/// via other means. -#[derive(Default)] -struct VcPerPeerTracker { - local_observed: arrayvec::ArrayVec<[CandidateHash; VC_THRESHOLD]>, - remote_observed: arrayvec::ArrayVec<[CandidateHash; VC_THRESHOLD]>, -} - -impl VcPerPeerTracker { - /// Note that the remote should now be aware that a validator has seconded a given candidate (by hash) - /// based on a message that we have sent it from our local pool. - fn note_local(&mut self, h: CandidateHash) { - if !note_hash(&mut self.local_observed, h) { - tracing::warn!( - target: LOG_TARGET, - "Statement distribution is erroneously attempting to distribute more \ - than {} candidate(s) per validator index. Ignoring", - VC_THRESHOLD, - ); - } - } - - /// Note that the remote should now be aware that a validator has seconded a given candidate (by hash) - /// based on a message that it has sent us. - /// - /// Returns `true` if the peer was allowed to send us such a message, `false` otherwise. - fn note_remote(&mut self, h: CandidateHash) -> bool { - note_hash(&mut self.remote_observed, h) - } - - /// Returns `true` if the peer is allowed to send us such a message, `false` otherwise. - fn is_wanted_candidate(&self, h: &CandidateHash) -> bool { - !self.remote_observed.contains(h) && - !self.remote_observed.is_full() - } -} - -fn note_hash( - observed: &mut arrayvec::ArrayVec<[CandidateHash; VC_THRESHOLD]>, - h: CandidateHash, -) -> bool { - if observed.contains(&h) { return true; } - - observed.try_push(h).is_ok() -} - -/// knowledge that a peer has about goings-on in a relay parent. -#[derive(Default)] -struct PeerRelayParentKnowledge { - /// candidates that the peer is aware of because we sent statements to it. This indicates that we can - /// send other statements pertaining to that candidate. - sent_candidates: HashSet, - /// candidates that peer is aware of, because we received statements from it. - received_candidates: HashSet, - /// fingerprints of all statements a peer should be aware of: those that - /// were sent to the peer by us. - sent_statements: HashSet<(CompactStatement, ValidatorIndex)>, - /// fingerprints of all statements a peer should be aware of: those that - /// were sent to us by the peer. - received_statements: HashSet<(CompactStatement, ValidatorIndex)>, - /// How many candidates this peer is aware of for each given validator index. - seconded_counts: HashMap, - /// How many statements we've received for each candidate that we're aware of. - received_message_count: HashMap, - - - /// How many large statements this peer already sent us. - /// - /// Flood protection for large statements is rather hard and as soon as we get - /// https://github.com/paritytech/polkadot/issues/2979 implemented also no longer necessary. - /// Reason: We keep messages around until we fetched the payload, but if a node makes up - /// statements and never provides the data, we will keep it around for the slot duration. Not - /// even signature checking would help, as the sender, if a validator, can just sign arbitrary - /// invalid statements and will not face any consequences as long as it won't provide the - /// payload. - /// - /// Quick and temporary fix, only accept `MAX_LARGE_STATEMENTS_PER_SENDER` per connected node. - /// - /// Large statements should be rare, if they were not, we would run into problems anyways, as - /// we would not be able to distribute them in a timely manner. Therefore - /// `MAX_LARGE_STATEMENTS_PER_SENDER` can be set to a relatively small number. It is also not - /// per candidate hash, but in total as candidate hashes can be made up, as illustrated above. - /// - /// An attacker could still try to fill up our memory, by repeatedly disconnecting and - /// connecting again with new peer ids, but we assume that the resulting effective bandwidth - /// for such an attack would be too low. - large_statement_count: usize, -} - -impl PeerRelayParentKnowledge { - /// Updates our view of the peer's knowledge with this statement's fingerprint based - /// on something that we would like to send to the peer. - /// - /// NOTE: assumes `self.can_send` returned true before this call. - /// - /// Once the knowledge has incorporated a statement, it cannot be incorporated again. - /// - /// This returns `true` if this is the first time the peer has become aware of a - /// candidate with the given hash. - fn send(&mut self, fingerprint: &(CompactStatement, ValidatorIndex)) -> bool { - debug_assert!( - self.can_send(fingerprint), - "send is only called after `can_send` returns true; qed", - ); - - let new_known = match fingerprint.0 { - CompactStatement::Seconded(ref h) => { - self.seconded_counts.entry(fingerprint.1) - .or_default() - .note_local(h.clone()); - - self.sent_candidates.insert(h.clone()) - }, - CompactStatement::Valid(_) => { - false - } - }; - - self.sent_statements.insert(fingerprint.clone()); - - new_known - } - - /// This returns `true` if the peer cannot accept this statement, without altering internal - /// state, `false` otherwise. - fn can_send(&self, fingerprint: &(CompactStatement, ValidatorIndex)) -> bool { - let already_known = self.sent_statements.contains(fingerprint) - || self.received_statements.contains(fingerprint); - - if already_known { - return false; - } - - match fingerprint.0 { - CompactStatement::Valid(ref h) => { - // The peer can only accept Valid and Invalid statements for which it is aware - // of the corresponding candidate. - self.is_known_candidate(h) - } - CompactStatement::Seconded(_) => { - true - }, - } - } - - /// Attempt to update our view of the peer's knowledge with this statement's fingerprint based on - /// a message we are receiving from the peer. - /// - /// Provide the maximum message count that we can receive per candidate. In practice we should - /// not receive more statements for any one candidate than there are members in the group assigned - /// to that para, but this maximum needs to be lenient to account for equivocations that may be - /// cross-group. As such, a maximum of 2 * n_validators is recommended. - /// - /// This returns an error if the peer should not have sent us this message according to protocol - /// rules for flood protection. - /// - /// If this returns `Ok`, the internal state has been altered. After `receive`ing a new - /// candidate, we are then cleared to send the peer further statements about that candidate. - /// - /// This returns `Ok(true)` if this is the first time the peer has become aware of a - /// candidate with given hash. - fn receive( - &mut self, - fingerprint: &(CompactStatement, ValidatorIndex), - max_message_count: usize, - ) -> std::result::Result { - // We don't check `sent_statements` because a statement could be in-flight from both - // sides at the same time. - if self.received_statements.contains(fingerprint) { - return Err(COST_DUPLICATE_STATEMENT); - } - - let candidate_hash = match fingerprint.0 { - CompactStatement::Seconded(ref h) => { - let allowed_remote = self.seconded_counts.entry(fingerprint.1) - .or_insert_with(Default::default) - .note_remote(h.clone()); - - if !allowed_remote { - return Err(COST_UNEXPECTED_STATEMENT); - } - - h - } - CompactStatement::Valid(ref h) => { - if !self.is_known_candidate(&h) { - return Err(COST_UNEXPECTED_STATEMENT); - } - - h - } - }; - - { - let received_per_candidate = self.received_message_count - .entry(*candidate_hash) - .or_insert(0); - - if *received_per_candidate >= max_message_count { - return Err(COST_APPARENT_FLOOD); - } - - *received_per_candidate += 1; - } - - self.received_statements.insert(fingerprint.clone()); - Ok(self.received_candidates.insert(candidate_hash.clone())) - } - - /// Note a received large statement metadata. - fn receive_large_statement(&mut self) -> std::result::Result<(), Rep> { - if self.large_statement_count >= MAX_LARGE_STATEMENTS_PER_SENDER { - return Err(COST_APPARENT_FLOOD); - } - self.large_statement_count += 1; - Ok(()) - } - - /// This method does the same checks as `receive` without modifying the internal state. - /// Returns an error if the peer should not have sent us this message according to protocol - /// rules for flood protection. - fn check_can_receive( - &self, - fingerprint: &(CompactStatement, ValidatorIndex), - max_message_count: usize, - ) -> std::result::Result<(), Rep> { - // We don't check `sent_statements` because a statement could be in-flight from both - // sides at the same time. - if self.received_statements.contains(fingerprint) { - return Err(COST_DUPLICATE_STATEMENT); - } - - let candidate_hash = match fingerprint.0 { - CompactStatement::Seconded(ref h) => { - let allowed_remote = self.seconded_counts.get(&fingerprint.1) - .map_or(true, |r| r.is_wanted_candidate(h)); - - if !allowed_remote { - return Err(COST_UNEXPECTED_STATEMENT); - } - - h - } - CompactStatement::Valid(ref h) => { - if !self.is_known_candidate(&h) { - return Err(COST_UNEXPECTED_STATEMENT); - } - - h - } - }; - - let received_per_candidate = self.received_message_count - .get(candidate_hash) - .unwrap_or(&0); - - if *received_per_candidate >= max_message_count { - Err(COST_APPARENT_FLOOD) - } else { - Ok(()) - } - } - - /// Check for candidates that the peer is aware of. This indicates that we can - /// send other statements pertaining to that candidate. - fn is_known_candidate(&self, candidate: &CandidateHash) -> bool { - self.sent_candidates.contains(candidate) || self.received_candidates.contains(candidate) - } -} - -struct PeerData { - view: View, - view_knowledge: HashMap, - // Peer might be an authority. - maybe_authority: Option, -} - -impl PeerData { - /// Updates our view of the peer's knowledge with this statement's fingerprint based - /// on something that we would like to send to the peer. - /// - /// NOTE: assumes `self.can_send` returned true before this call. - /// - /// Once the knowledge has incorporated a statement, it cannot be incorporated again. - /// - /// This returns `true` if this is the first time the peer has become aware of a - /// candidate with the given hash. - fn send( - &mut self, - relay_parent: &Hash, - fingerprint: &(CompactStatement, ValidatorIndex), - ) -> bool { - debug_assert!( - self.can_send(relay_parent, fingerprint), - "send is only called after `can_send` returns true; qed", - ); - self.view_knowledge - .get_mut(relay_parent) - .expect("send is only called after `can_send` returns true; qed") - .send(fingerprint) - } - - /// This returns `None` if the peer cannot accept this statement, without altering internal - /// state. - fn can_send( - &self, - relay_parent: &Hash, - fingerprint: &(CompactStatement, ValidatorIndex), - ) -> bool { - self.view_knowledge - .get(relay_parent) - .map_or(false, |k| k.can_send(fingerprint)) - } - - /// Attempt to update our view of the peer's knowledge with this statement's fingerprint based on - /// a message we are receiving from the peer. - /// - /// Provide the maximum message count that we can receive per candidate. In practice we should - /// not receive more statements for any one candidate than there are members in the group assigned - /// to that para, but this maximum needs to be lenient to account for equivocations that may be - /// cross-group. As such, a maximum of 2 * n_validators is recommended. - /// - /// This returns an error if the peer should not have sent us this message according to protocol - /// rules for flood protection. - /// - /// If this returns `Ok`, the internal state has been altered. After `receive`ing a new - /// candidate, we are then cleared to send the peer further statements about that candidate. - /// - /// This returns `Ok(true)` if this is the first time the peer has become aware of a - /// candidate with given hash. - fn receive( - &mut self, - relay_parent: &Hash, - fingerprint: &(CompactStatement, ValidatorIndex), - max_message_count: usize, - ) -> std::result::Result { - self.view_knowledge - .get_mut(relay_parent) - .ok_or(COST_UNEXPECTED_STATEMENT)? - .receive(fingerprint, max_message_count) - } - - /// This method does the same checks as `receive` without modifying the internal state. - /// Returns an error if the peer should not have sent us this message according to protocol - /// rules for flood protection. - fn check_can_receive( - &self, - relay_parent: &Hash, - fingerprint: &(CompactStatement, ValidatorIndex), - max_message_count: usize, - ) -> std::result::Result<(), Rep> { - self.view_knowledge - .get(relay_parent) - .ok_or(COST_UNEXPECTED_STATEMENT)? - .check_can_receive(fingerprint, max_message_count) - } - - /// Basic flood protection for large statements. - fn receive_large_statement( - &mut self, - relay_parent: &Hash, - ) -> std::result::Result<(), Rep> { - self.view_knowledge - .get_mut(relay_parent) - .ok_or(COST_UNEXPECTED_STATEMENT)? - .receive_large_statement() - } -} - -// A statement stored while a relay chain head is active. -#[derive(Debug, Copy, Clone)] -struct StoredStatement<'a> { - comparator: &'a StoredStatementComparator, - statement: &'a SignedFullStatement, -} - -// A value used for comparison of stored statements to each other. -// -// The compact version of the statement, the validator index, and the signature of the validator -// is enough to differentiate between all types of equivocations, as long as the signature is -// actually checked to be valid. The same statement with 2 signatures and 2 statements with -// different (or same) signatures wll all be correctly judged to be unequal with this comparator. -#[derive(PartialEq, Eq, Hash, Clone, Debug)] -struct StoredStatementComparator { - compact: CompactStatement, - validator_index: ValidatorIndex, - signature: ValidatorSignature, -} - -impl<'a> From<(&'a StoredStatementComparator, &'a SignedFullStatement)> for StoredStatement<'a> { - fn from((comparator, statement): (&'a StoredStatementComparator, &'a SignedFullStatement)) -> Self { - Self { comparator, statement } - } -} - -impl<'a> StoredStatement<'a> { - fn compact(&self) -> &'a CompactStatement { - &self.comparator.compact - } - - fn fingerprint(&self) -> (CompactStatement, ValidatorIndex) { - (self.comparator.compact.clone(), self.statement.validator_index()) - } -} - -#[derive(Debug)] -enum NotedStatement<'a> { - NotUseful, - Fresh(StoredStatement<'a>), - UsefulButKnown -} - -/// Large statement fetching status. -enum LargeStatementStatus { - /// We are currently fetching the statement data from a remote peer. We keep a list of other nodes - /// claiming to have that data and will fallback on them. - Fetching(FetchingInfo), - /// Statement data is fetched or we got it locally via `StatementDistributionMessage::Share`. - FetchedOrShared(CommittedCandidateReceipt), -} - -/// Info about a fetch in progress. -struct FetchingInfo { - /// All peers that send us a `LargeStatement` or a `Valid` statement for the given - /// `CandidateHash`, together with their originally sent messages. - /// - /// We use an `IndexMap` here to preserve the ordering of peers sending us messages. This is - /// desirable because we reward first sending peers with reputation. - available_peers: IndexMap>, - /// Peers left to try in case the background task needs it. - peers_to_try: Vec, - /// Sender for sending fresh peers to the fetching task in case of failure. - peer_sender: Option>>, - /// Task taking care of the request. - /// - /// Will be killed once dropped. - #[allow(dead_code)] - fetching_task: RemoteHandle<()>, -} - -/// Messages to be handled in this subsystem. -enum Message { - /// Messages from other subsystems. - Subsystem(FatalResult>), - /// Messages from spawned requester background tasks. - Requester(Option), - /// Messages from spawned responder background task. - Responder(Option) -} - -impl Message { - async fn receive( - ctx: &mut impl SubsystemContext, - from_requester: &mut mpsc::Receiver, - from_responder: &mut mpsc::Receiver, - ) -> Message { - // We are only fusing here to make `select` happy, in reality we will quit if one of those - // streams end: - let from_overseer = ctx.recv().fuse(); - let from_requester = from_requester.next().fuse(); - let from_responder = from_responder.next().fuse(); - futures::pin_mut!(from_overseer, from_requester, from_responder); - futures::select!( - msg = from_overseer => Message::Subsystem(msg.map_err(Fatal::SubsystemReceive)), - msg = from_requester => Message::Requester(msg), - msg = from_responder => Message::Responder(msg), - ) - } -} - -#[derive(Debug, PartialEq, Eq)] -enum DeniedStatement { - NotUseful, - UsefulButKnown, -} - -struct ActiveHeadData { - /// All candidates we are aware of for this head, keyed by hash. - candidates: HashSet, - /// Stored statements for circulation to peers. - /// - /// These are iterable in insertion order, and `Seconded` statements are always - /// accepted before dependent statements. - statements: IndexMap, - /// Large statements we are waiting for with associated meta data. - waiting_large_statements: HashMap, - /// The validators at this head. - validators: Vec, - /// The session index this head is at. - session_index: sp_staking::SessionIndex, - /// How many `Seconded` statements we've seen per validator. - seconded_counts: HashMap, - /// A Jaeger span for this head, so we can attach data to it. - span: PerLeafSpan, -} - -impl ActiveHeadData { - fn new( - validators: Vec, - session_index: sp_staking::SessionIndex, - span: PerLeafSpan, - ) -> Self { - ActiveHeadData { - candidates: Default::default(), - statements: Default::default(), - waiting_large_statements: Default::default(), - validators, - session_index, - seconded_counts: Default::default(), - span, - } - } - - /// Note the given statement. - /// - /// If it was not already known and can be accepted, returns `NotedStatement::Fresh`, - /// with a handle to the statement. - /// - /// If it can be accepted, but we already know it, returns `NotedStatement::UsefulButKnown`. - /// - /// We accept up to `VC_THRESHOLD` (2 at time of writing) `Seconded` statements - /// per validator. These will be the first ones we see. The statement is assumed - /// to have been checked, including that the validator index is not out-of-bounds and - /// the signature is valid. - /// - /// Any other statements or those that reference a candidate we are not aware of cannot be accepted - /// and will return `NotedStatement::NotUseful`. - fn note_statement(&mut self, statement: SignedFullStatement) -> NotedStatement { - let validator_index = statement.validator_index(); - let comparator = StoredStatementComparator { - compact: statement.payload().to_compact(), - validator_index, - signature: statement.signature().clone(), - }; - - match comparator.compact { - CompactStatement::Seconded(h) => { - let seconded_so_far = self.seconded_counts.entry(validator_index).or_insert(0); - if *seconded_so_far >= VC_THRESHOLD { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Extra statement is ignored" - ); - return NotedStatement::NotUseful; - } - - self.candidates.insert(h); - if let Some(old) = self.statements.insert(comparator.clone(), statement) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - statement = ?old, - "Known statement" - ); - NotedStatement::UsefulButKnown - } else { - *seconded_so_far += 1; - - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - statement = ?self.statements.last().expect("Just inserted").1, - "Noted new statement" - ); - // This will always return `Some` because it was just inserted. - let key_value = self.statements - .get_key_value(&comparator) - .expect("Statement was just inserted; qed"); - - NotedStatement::Fresh(key_value.into()) - } - } - CompactStatement::Valid(h) => { - if !self.candidates.contains(&h) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Statement for unknown candidate" - ); - return NotedStatement::NotUseful; - } - - if let Some(old) = self.statements.insert(comparator.clone(), statement) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - statement = ?old, - "Known statement" - ); - NotedStatement::UsefulButKnown - } else { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - statement = ?self.statements.last().expect("Just inserted").1, - "Noted new statement" - ); - // This will always return `Some` because it was just inserted. - NotedStatement::Fresh( - self.statements - .get_key_value(&comparator) - .expect("Statement was just inserted; qed") - .into() - ) - } - } - } - } - - /// Returns an error if the statement is already known or not useful - /// without modifying the internal state. - fn check_useful_or_unknown(&self, statement: &UncheckedSignedFullStatement) - -> std::result::Result<(), DeniedStatement> - { - let validator_index = statement.unchecked_validator_index(); - let compact = statement.unchecked_payload().to_compact(); - let comparator = StoredStatementComparator { - compact: compact.clone(), - validator_index, - signature: statement.unchecked_signature().clone(), - }; - - match compact { - CompactStatement::Seconded(_) => { - let seconded_so_far = self.seconded_counts.get(&validator_index).unwrap_or(&0); - if *seconded_so_far >= VC_THRESHOLD { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Extra statement is ignored", - ); - return Err(DeniedStatement::NotUseful); - } - - if self.statements.contains_key(&comparator) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Known statement", - ); - return Err(DeniedStatement::UsefulButKnown); - } - } - CompactStatement::Valid(h) => { - if !self.candidates.contains(&h) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Statement for unknown candidate", - ); - return Err(DeniedStatement::NotUseful); - } - - if self.statements.contains_key(&comparator) { - tracing::trace!( - target: LOG_TARGET, - ?validator_index, - ?statement, - "Known statement", - ); - return Err(DeniedStatement::UsefulButKnown); - } - } - } - Ok(()) - } - - /// Get an iterator over all statements for the active head. Seconded statements come first. - fn statements(&self) -> impl Iterator> + '_ { - self.statements.iter().map(Into::into) - } - - /// Get an iterator over all statements for the active head that are for a particular candidate. - fn statements_about(&self, candidate_hash: CandidateHash) - -> impl Iterator> + '_ { - self.statements().filter(move |s| s.compact().candidate_hash() == &candidate_hash) - } -} - -/// Check a statement signature under this parent hash. -fn check_statement_signature( - head: &ActiveHeadData, - relay_parent: Hash, - statement: UncheckedSignedFullStatement, -) -> std::result::Result { - let signing_context = SigningContext { - session_index: head.session_index, - parent_hash: relay_parent, - }; - - head.validators - .get(statement.unchecked_validator_index().0 as usize) - .ok_or_else(|| statement.clone()) - .and_then(|v| statement.try_into_checked(&signing_context, v)) -} - -/// Places the statement in storage if it is new, and then -/// circulates the statement to all peers who have not seen it yet, and -/// sends all statements dependent on that statement to peers who could previously not receive -/// them but now can. -async fn circulate_statement_and_dependents( - gossip_peers: &HashSet, - peers: &mut HashMap, - active_heads: &mut HashMap, - ctx: &mut impl SubsystemContext, - relay_parent: Hash, - statement: SignedFullStatement, - priority_peers: Vec, - metrics: &Metrics, -) { - let active_head = match active_heads.get_mut(&relay_parent) { - Some(res) => res, - None => return, - }; - - let _span = active_head.span.child("circulate-statement") - .with_candidate(statement.payload().candidate_hash()) - .with_stage(jaeger::Stage::StatementDistribution); - - // First circulate the statement directly to all peers needing it. - // The borrow of `active_head` needs to encompass only this (Rust) statement. - let outputs: Option<(CandidateHash, Vec)> = { - match active_head.note_statement(statement) { - NotedStatement::Fresh(stored) => - { - Some(( - *stored.compact().candidate_hash(), - circulate_statement( - gossip_peers, - peers, - ctx, - relay_parent, - stored, - priority_peers, - ).await, - )) - }, - _ => None, - } - }; - - let _span = _span.child("send-to-peers"); - // Now send dependent statements to all peers needing them, if any. - if let Some((candidate_hash, peers_needing_dependents)) = outputs { - for peer in peers_needing_dependents { - if let Some(peer_data) = peers.get_mut(&peer) { - let _span_loop = _span.child("to-peer") - .with_peer_id(&peer); - // defensive: the peer data should always be some because the iterator - // of peers is derived from the set of peers. - send_statements_about( - peer, - peer_data, - ctx, - relay_parent, - candidate_hash, - &*active_head, - metrics, - ).await; - } - } - } -} - -fn statement_message(relay_parent: Hash, statement: SignedFullStatement) - -> protocol_v1::ValidationProtocol -{ - let msg = if is_statement_large(&statement) { - protocol_v1::StatementDistributionMessage::LargeStatement( - StatementMetadata { - relay_parent, - candidate_hash: statement.payload().candidate_hash(), - signed_by: statement.validator_index(), - signature: statement.signature().clone(), - } - ) - } else { - protocol_v1::StatementDistributionMessage::Statement(relay_parent, statement.into()) - }; - - protocol_v1::ValidationProtocol::StatementDistribution(msg) -} - -/// Check whether a statement should be treated as large statement. -fn is_statement_large(statement: &SignedFullStatement) -> bool { - match &statement.payload() { - Statement::Seconded(committed) => { - // Runtime upgrades will always be large and even if not - no harm done. - if committed.commitments.new_validation_code.is_some() { - return true - } - // No runtime upgrade, now we need to be more nuanced: - let size = statement.as_unchecked().encoded_size(); - - // Half max size seems to be a good threshold to start not using notifications: - let threshold = - PeerSet::Validation.get_info(IsAuthority::Yes) - .max_notification_size as usize / 2; - - size >= threshold - } - Statement::Valid(_) => - false, - } -} - -/// Circulates a statement to all peers who have not seen it yet, and returns -/// an iterator over peers who need to have dependent statements sent. -async fn circulate_statement<'a>( - gossip_peers: &HashSet, - peers: &mut HashMap, - ctx: &mut impl SubsystemContext, - relay_parent: Hash, - stored: StoredStatement<'a>, - mut priority_peers: Vec, -) -> Vec { - let fingerprint = stored.fingerprint(); - - let mut peers_to_send: Vec = peers.iter().filter_map(|(peer, data)| { - if data.can_send(&relay_parent, &fingerprint) { - Some(peer.clone()) - } else { - None - } - }).collect(); - - let good_peers: HashSet<&PeerId> = peers_to_send.iter().collect(); - // Only take priority peers we can send data to: - priority_peers.retain(|p| good_peers.contains(p)); - - // Avoid duplicates: - let priority_set: HashSet<&PeerId> = priority_peers.iter().collect(); - peers_to_send.retain(|p| !priority_set.contains(p)); - - let mut peers_to_send = - util::choose_random_subset( - |e| gossip_peers.contains(e), - peers_to_send, - MIN_GOSSIP_PEERS, - ); - // We don't want to use less peers, than we would without any priority peers: - let min_size = std::cmp::max(peers_to_send.len(), MIN_GOSSIP_PEERS); - // Make set full: - let needed_peers = min_size as i64 - priority_peers.len() as i64; - if needed_peers > 0 { - peers_to_send.truncate(needed_peers as usize); - // Order important here - priority peers are placed first, so will be sent first. - // This gives backers a chance to be among the first in requesting any large statement - // data. - priority_peers.append(&mut peers_to_send); - } - peers_to_send = priority_peers; - // We must not have duplicates: - debug_assert!( - peers_to_send.len() == peers_to_send.clone().into_iter().collect::>().len(), - "We filter out duplicates above. qed.", - ); - let peers_to_send: Vec<(PeerId, bool)> = peers_to_send.into_iter() - .map(|peer_id| { - let new = peers.get_mut(&peer_id) - .expect("a subset is taken above, so it exists; qed") - .send(&relay_parent, &fingerprint); - (peer_id, new) - }).collect(); - - // Send all these peers the initial statement. - if !peers_to_send.is_empty() { - let payload = statement_message(relay_parent, stored.statement.clone()); - tracing::trace!( - target: LOG_TARGET, - ?peers_to_send, - ?relay_parent, - statement = ?stored.statement, - "Sending statement", - ); - ctx.send_message(AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - peers_to_send.iter().map(|(p, _)| p.clone()).collect(), - payload, - ))).await; - } - - peers_to_send.into_iter().filter_map(|(peer, needs_dependent)| if needs_dependent { - Some(peer) - } else { - None - }).collect() -} - -/// Send all statements about a given candidate hash to a peer. -async fn send_statements_about( - peer: PeerId, - peer_data: &mut PeerData, - ctx: &mut impl SubsystemContext, - relay_parent: Hash, - candidate_hash: CandidateHash, - active_head: &ActiveHeadData, - metrics: &Metrics, -) { - for statement in active_head.statements_about(candidate_hash) { - let fingerprint = statement.fingerprint(); - if !peer_data.can_send(&relay_parent, &fingerprint) { - continue; - } - peer_data.send(&relay_parent, &fingerprint); - let payload = statement_message( - relay_parent, - statement.statement.clone(), - ); - - tracing::trace!( - target: LOG_TARGET, - ?peer, - ?relay_parent, - ?candidate_hash, - statement = ?statement.statement, - "Sending statement", - ); - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage(vec![peer.clone()], payload) - )).await; - - metrics.on_statement_distributed(); - } -} - -/// Send all statements at a given relay-parent to a peer. -async fn send_statements( - peer: PeerId, - peer_data: &mut PeerData, - ctx: &mut impl SubsystemContext, - relay_parent: Hash, - active_head: &ActiveHeadData, - metrics: &Metrics, -) { - for statement in active_head.statements() { - let fingerprint = statement.fingerprint(); - if !peer_data.can_send(&relay_parent, &fingerprint) { - continue; - } - peer_data.send(&relay_parent, &fingerprint); - let payload = statement_message( - relay_parent, - statement.statement.clone(), - ); - - tracing::trace!( - target: LOG_TARGET, - ?peer, - ?relay_parent, - statement = ?statement.statement, - "Sending statement" - ); - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage(vec![peer.clone()], payload) - )).await; - - metrics.on_statement_distributed(); - } -} - -async fn report_peer( - ctx: &mut impl SubsystemContext, - peer: PeerId, - rep: Rep, -) { - ctx.send_message(AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(peer, rep) - )).await -} - -/// If message contains a statement, then retrieve it, otherwise fork task to fetch it. -/// -/// This function will also return `None` if the message did not pass some basic checks, in that -/// case no statement will be requested, on the flipside you get `ActiveHeadData` in addition to -/// your statement. -/// -/// If the message was large, but the result has been fetched already that one is returned. -async fn retrieve_statement_from_message<'a>( - peer: PeerId, - message: protocol_v1::StatementDistributionMessage, - active_head: &'a mut ActiveHeadData, - ctx: &mut impl SubsystemContext, - req_sender: &mpsc::Sender, - metrics: &Metrics, -) -> Option { - - let fingerprint = message.get_fingerprint(); - let candidate_hash = *fingerprint.0.candidate_hash(); - - // Immediately return any Seconded statement: - let message = - if let protocol_v1::StatementDistributionMessage::Statement(h, s) = message { - if let Statement::Seconded(_) = s.unchecked_payload() { - return Some(s) - } - protocol_v1::StatementDistributionMessage::Statement(h, s) - } else { - message - }; - - match active_head.waiting_large_statements.entry(candidate_hash) { - Entry::Occupied(mut occupied) => { - match occupied.get_mut() { - LargeStatementStatus::Fetching(info) => { - - let is_large_statement = message.is_large_statement(); - - let is_new_peer = - match info.available_peers.entry(peer) { - IEntry::Occupied(mut occupied) => { - occupied.get_mut().push(message); - false - } - IEntry::Vacant(vacant) => { - vacant.insert(vec![message]); - true - } - }; - - if is_new_peer & is_large_statement { - info.peers_to_try.push(peer); - // Answer any pending request for more peers: - if let Some(sender) = info.peer_sender.take() { - let to_send = std::mem::take(&mut info.peers_to_try); - if let Err(peers) = sender.send(to_send) { - // Requester no longer interested for now, might want them - // later: - info.peers_to_try = peers; - } - } - } - } - LargeStatementStatus::FetchedOrShared(committed) => { - match message { - protocol_v1::StatementDistributionMessage::Statement(_, s) => { - // We can now immediately return any statements (should only be - // `Statement::Valid` ones, but we don't care at this point.) - return Some(s) - } - protocol_v1::StatementDistributionMessage::LargeStatement(metadata) => { - return Some(UncheckedSignedFullStatement::new( - Statement::Seconded( - committed.clone()), - metadata.signed_by, - metadata.signature.clone(), - )) - } - } - } - } - } - Entry::Vacant(vacant) => { - match message { - protocol_v1::StatementDistributionMessage::LargeStatement(metadata) => { - if let Some(new_status) = launch_request( - metadata, - peer, - req_sender.clone(), - ctx, - metrics - ).await { - vacant.insert(new_status); - } - } - protocol_v1::StatementDistributionMessage::Statement(_, s) => { - // No fetch in progress, safe to return any statement immediately (we don't bother - // about normal network jitter which might cause `Valid` statements to arrive early - // for now.). - return Some(s) - } - } - } - } - None -} - -/// Launch request for a large statement and get tracking status. -/// -/// Returns `None` if spawning task failed. -async fn launch_request( - meta: StatementMetadata, - peer: PeerId, - req_sender: mpsc::Sender, - ctx: &mut impl SubsystemContext, - metrics: &Metrics, -) -> Option { - - let (task, handle) = fetch( - meta.relay_parent, - meta.candidate_hash, - vec![peer], - req_sender, - metrics.clone(), - ) - .remote_handle(); - - let result = ctx.spawn("large-statement-fetcher", task.boxed()); - if let Err(err) = result { - tracing::error!(target: LOG_TARGET, ?err, "Spawning task failed."); - return None - } - let available_peers = { - let mut m = IndexMap::new(); - m.insert(peer, vec![protocol_v1::StatementDistributionMessage::LargeStatement(meta)]); - m - }; - Some(LargeStatementStatus::Fetching(FetchingInfo { - available_peers, - peers_to_try: Vec::new(), - peer_sender: None, - fetching_task: handle, - })) -} - -/// Handle incoming message and circulate it to peers, if we did not know it already. -/// -async fn handle_incoming_message_and_circulate<'a>( - peer: PeerId, - gossip_peers: &HashSet, - peers: &mut HashMap, - active_heads: &'a mut HashMap, - ctx: &mut impl SubsystemContext, - message: protocol_v1::StatementDistributionMessage, - req_sender: &mpsc::Sender, - metrics: &Metrics, -) { - let handled_incoming = match peers.get_mut(&peer) { - Some(data) => { - handle_incoming_message( - peer, - data, - active_heads, - ctx, - message, - req_sender, - metrics, - ).await - } - None => None, - }; - - // if we got a fresh message, we need to circulate it to all peers. - if let Some((relay_parent, statement)) = handled_incoming { - // we can ignore the set of peers who this function returns as now expecting - // dependent statements. - // - // we have the invariant in this subsystem that we never store a `Valid` or `Invalid` - // statement before a `Seconded` statement. `Seconded` statements are the only ones - // that require dependents. Thus, if this is a `Seconded` statement for a candidate we - // were not aware of before, we cannot have any dependent statements from the candidate. - let _ = circulate_statement( - gossip_peers, - peers, - ctx, - relay_parent, - statement, - Vec::new(), - ).await; - } -} - -// Handle a statement. Returns a reference to a newly-stored statement -// if we were not already aware of it, along with the corresponding relay-parent. -// -// This function checks the signature and ensures the statement is compatible with our -// view. It also notifies candidate backing if the statement was previously unknown. -async fn handle_incoming_message<'a>( - peer: PeerId, - peer_data: &mut PeerData, - active_heads: &'a mut HashMap, - ctx: &mut impl SubsystemContext, - message: protocol_v1::StatementDistributionMessage, - req_sender: &mpsc::Sender, - metrics: &Metrics, -) -> Option<(Hash, StoredStatement<'a>)> { - let relay_parent = message.get_relay_parent(); - - let active_head = match active_heads.get_mut(&relay_parent) { - Some(h) => h, - None => { - tracing::debug!( - target: LOG_TARGET, - %relay_parent, - "our view out-of-sync with active heads; head not found", - ); - report_peer(ctx, peer, COST_UNEXPECTED_STATEMENT).await; - return None - } - }; - - if let protocol_v1::StatementDistributionMessage::LargeStatement(_) = message { - if let Err(rep) = peer_data.receive_large_statement(&relay_parent) { - tracing::debug!( - target: LOG_TARGET, - ?peer, - ?message, - ?rep, - "Unexpected large statement.", - ); - report_peer(ctx, peer, rep).await; - return None; - } - } - - let fingerprint = message.get_fingerprint(); - let candidate_hash = fingerprint.0.candidate_hash().clone(); - let handle_incoming_span = active_head.span.child("handle-incoming") - .with_candidate(candidate_hash) - .with_peer_id(&peer); - - let max_message_count = active_head.validators.len() * 2; - - // perform only basic checks before verifying the signature - // as it's more computationally heavy - if let Err(rep) = peer_data.check_can_receive(&relay_parent, &fingerprint, max_message_count) { - tracing::debug!( - target: LOG_TARGET, - ?peer, - ?message, - ?rep, - "Error inserting received statement" - ); - report_peer(ctx, peer, rep).await; - return None; - } - - let statement = retrieve_statement_from_message( - peer, - message, - active_head, - ctx, - req_sender, - metrics, - ).await?; - - match active_head.check_useful_or_unknown(&statement) { - Ok(()) => {}, - Err(DeniedStatement::NotUseful) => { - return None; - } - Err(DeniedStatement::UsefulButKnown) => { - report_peer(ctx, peer, BENEFIT_VALID_STATEMENT).await; - return None; - } - } - - // check the signature on the statement. - let statement = match check_statement_signature(&active_head, relay_parent, statement) { - Err(statement) => { - tracing::debug!( - target: LOG_TARGET, - ?peer, - ?statement, - "Invalid statement signature" - ); - report_peer(ctx, peer, COST_INVALID_SIGNATURE).await; - return None - } - Ok(statement) => statement, - }; - - // Ensure the statement is stored in the peer data. - // - // Note that if the peer is sending us something that is not within their view, - // it will not be kept within their log. - match peer_data.receive(&relay_parent, &fingerprint, max_message_count) { - Err(_) => { - unreachable!("checked in `check_can_receive` above; qed"); - } - Ok(true) => { - tracing::trace!( - target: LOG_TARGET, - ?peer, - ?statement, - "Statement accepted" - ); - // Send the peer all statements concerning the candidate that we have, - // since it appears to have just learned about the candidate. - send_statements_about( - peer.clone(), - peer_data, - ctx, - relay_parent, - candidate_hash, - &*active_head, - metrics, - ).await; - } - Ok(false) => {} - } - - // Note: `peer_data.receive` already ensures that the statement is not an unbounded equivocation - // or unpinned to a seconded candidate. So it is safe to place it into the storage. - match active_head.note_statement(statement) { - NotedStatement::NotUseful | - NotedStatement::UsefulButKnown => { - unreachable!("checked in `is_useful_or_unknown` above; qed"); - } - NotedStatement::Fresh(statement) => { - report_peer(ctx, peer, BENEFIT_VALID_STATEMENT_FIRST).await; - - let mut _span = handle_incoming_span.child("notify-backing"); - - // When we receive a new message from a peer, we forward it to the - // candidate backing subsystem. - let message = AllMessages::CandidateBacking( - CandidateBackingMessage::Statement(relay_parent, statement.statement.clone()) - ); - ctx.send_message(message).await; - - Some((relay_parent, statement)) - } - } -} - -/// Update a peer's view. Sends all newly unlocked statements based on the previous -async fn update_peer_view_and_maybe_send_unlocked( - peer: PeerId, - gossip_peers: &HashSet, - peer_data: &mut PeerData, - ctx: &mut impl SubsystemContext, - active_heads: &HashMap, - new_view: View, - metrics: &Metrics, -) { - let old_view = std::mem::replace(&mut peer_data.view, new_view); - - // Remove entries for all relay-parents in the old view but not the new. - for removed in old_view.difference(&peer_data.view) { - let _ = peer_data.view_knowledge.remove(removed); - } - - let is_gossip_peer = gossip_peers.contains(&peer); - let lucky = is_gossip_peer || util::gen_ratio( - util::MIN_GOSSIP_PEERS.saturating_sub(gossip_peers.len()), - util::MIN_GOSSIP_PEERS, - ); - - // Add entries for all relay-parents in the new view but not the old. - // Furthermore, send all statements we have for those relay parents. - let new_view = peer_data.view.difference(&old_view).copied().collect::>(); - for new in new_view.iter().copied() { - peer_data.view_knowledge.insert(new, Default::default()); - if !lucky { - continue; - } - if let Some(active_head) = active_heads.get(&new) { - send_statements( - peer.clone(), - peer_data, - ctx, - new, - active_head, - metrics, - ).await; - } - } -} - -async fn handle_network_update( - peers: &mut HashMap, - gossip_peers: &mut HashSet, - authorities: &mut HashMap, - active_heads: &mut HashMap, - ctx: &mut impl SubsystemContext, - req_sender: &mpsc::Sender, - update: NetworkBridgeEvent, - metrics: &Metrics, -) { - match update { - NetworkBridgeEvent::PeerConnected(peer, role, maybe_authority) => { - tracing::trace!( - target: LOG_TARGET, - ?peer, - ?role, - "Peer connected", - ); - peers.insert(peer, PeerData { - view: Default::default(), - view_knowledge: Default::default(), - maybe_authority: maybe_authority.clone(), - }); - if let Some(authority) = maybe_authority { - authorities.insert(authority, peer); - } - } - NetworkBridgeEvent::PeerDisconnected(peer) => { - tracing::trace!( - target: LOG_TARGET, - ?peer, - "Peer disconnected", - ); - if let Some(auth_id) = peers.remove(&peer).and_then(|p| p.maybe_authority) { - authorities.remove(&auth_id); - } - } - NetworkBridgeEvent::NewGossipTopology(new_peers) => { - let newly_added: Vec = new_peers.difference(gossip_peers).cloned().collect(); - *gossip_peers = new_peers; - for peer in newly_added { - if let Some(data) = peers.get_mut(&peer) { - let view = std::mem::take(&mut data.view); - update_peer_view_and_maybe_send_unlocked( - peer, - gossip_peers, - data, - ctx, - &*active_heads, - view, - metrics, - ).await - } - } - } - NetworkBridgeEvent::PeerMessage(peer, message) => { - handle_incoming_message_and_circulate( - peer, - gossip_peers, - peers, - active_heads, - ctx, - message, - req_sender, - metrics, - ).await; - } - NetworkBridgeEvent::PeerViewChange(peer, view) => { - tracing::trace!( - target: LOG_TARGET, - ?peer, - ?view, - "Peer view change", - ); - match peers.get_mut(&peer) { - Some(data) => { - update_peer_view_and_maybe_send_unlocked( - peer, - gossip_peers, - data, - ctx, - &*active_heads, - view, - metrics, - ).await - } - None => (), - } - } - NetworkBridgeEvent::OurViewChange(_view) => { - // handled by `ActiveLeavesUpdate` - } - } -} - -impl StatementDistribution { - async fn run( - self, - mut ctx: impl SubsystemContext, - ) -> std::result::Result<(), Fatal> { - let mut peers: HashMap = HashMap::new(); - let mut gossip_peers: HashSet = HashSet::new(); - let mut authorities: HashMap = HashMap::new(); - let mut active_heads: HashMap = HashMap::new(); - - let mut runtime = RuntimeInfo::new(Some(self.keystore.clone())); - - // Sender/Receiver for getting news from our statement fetching tasks. - let (req_sender, mut req_receiver) = mpsc::channel(1); - // Sender/Receiver for getting news from our responder task. - let (res_sender, mut res_receiver) = mpsc::channel(1); - - loop { - let message = Message::receive(&mut ctx, &mut req_receiver, &mut res_receiver).await; - match message { - Message::Subsystem(result) => { - let result = self.handle_subsystem_message( - &mut ctx, - &mut runtime, - &mut peers, - &mut gossip_peers, - &mut authorities, - &mut active_heads, - &req_sender, - &res_sender, - result?, - ) - .await; - match result { - Ok(true) => break, - Ok(false) => {} - Err(Error(Fault::Fatal(f))) => return Err(f), - Err(Error(Fault::Err(error))) => - tracing::debug!(target: LOG_TARGET, ?error) - } - } - Message::Requester(result) => { - let result = self.handle_requester_message( - &mut ctx, - &gossip_peers, - &mut peers, - &mut active_heads, - &req_sender, - result.ok_or(Fatal::RequesterReceiverFinished)? - ) - .await; - log_error(result.map_err(From::from), "handle_requester_message")?; - } - Message::Responder(result) => { - let result = self.handle_responder_message( - &peers, - &mut active_heads, - result.ok_or(Fatal::ResponderReceiverFinished)? - ) - .await; - log_error(result.map_err(From::from), "handle_responder_message")?; - } - }; - } - Ok(()) - } - - /// Handle messages from responder background task. - async fn handle_responder_message( - &self, - peers: &HashMap, - active_heads: &mut HashMap, - message: ResponderMessage, - ) -> NonFatalResult<()> { - match message { - ResponderMessage::GetData { - requesting_peer, - relay_parent, - candidate_hash, - tx, - } => { - if !requesting_peer_knows_about_candidate( - peers, - &requesting_peer, - &relay_parent, - &candidate_hash - ) { - return Err( - NonFatal::RequestedUnannouncedCandidate(requesting_peer, candidate_hash) - ) - } - - let active_head = active_heads - .get(&relay_parent) - .ok_or(NonFatal::NoSuchHead(relay_parent))?; - - let committed = match active_head.waiting_large_statements.get(&candidate_hash) { - Some(LargeStatementStatus::FetchedOrShared(committed)) => committed.clone(), - _ => { - return Err( - NonFatal::NoSuchFetchedLargeStatement(relay_parent, candidate_hash) - ) - } - }; - - tx.send(committed).map_err(|_| NonFatal::ResponderGetDataCanceled)?; - } - } - Ok(()) - } - - async fn handle_requester_message( - &self, - ctx: &mut impl SubsystemContext, - gossip_peers: &HashSet, - peers: &mut HashMap, - active_heads: &mut HashMap, - req_sender: &mpsc::Sender, - message: RequesterMessage, - ) -> NonFatalResult<()> { - match message { - RequesterMessage::Finished { - relay_parent, - candidate_hash, - from_peer, - response, - bad_peers, - } => { - for bad in bad_peers { - report_peer(ctx, bad, COST_FETCH_FAIL).await; - } - report_peer(ctx, from_peer, BENEFIT_VALID_RESPONSE).await; - - let active_head = active_heads - .get_mut(&relay_parent) - .ok_or(NonFatal::NoSuchHead(relay_parent))?; - - let status = active_head - .waiting_large_statements - .remove(&candidate_hash); - - let info = match status { - Some(LargeStatementStatus::Fetching(info)) => info, - Some(LargeStatementStatus::FetchedOrShared(_)) => { - // We are no longer interested in the data. - return Ok(()) - } - None => { - return Err( - NonFatal::NoSuchLargeStatementStatus(relay_parent, candidate_hash) - ) - } - }; - - active_head.waiting_large_statements.insert( - candidate_hash, - LargeStatementStatus::FetchedOrShared(response), - ); - - // Cache is now populated, send all messages: - for (peer, messages) in info.available_peers { - for message in messages { - handle_incoming_message_and_circulate( - peer, - gossip_peers, - peers, - active_heads, - ctx, - message, - req_sender, - &self.metrics, - ) - .await; - } - } - } - RequesterMessage::SendRequest(req) => { - ctx.send_message( - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - vec![req], - IfDisconnected::ImmediateError, - ) - )) - .await; - } - RequesterMessage::GetMorePeers { - relay_parent, - candidate_hash, - tx, - } => { - let active_head = active_heads - .get_mut(&relay_parent) - .ok_or(NonFatal::NoSuchHead(relay_parent))?; - - let status = active_head - .waiting_large_statements - .get_mut(&candidate_hash); - - let info = match status { - Some(LargeStatementStatus::Fetching(info)) => info, - Some(LargeStatementStatus::FetchedOrShared(_)) => { - // This task is going to die soon - no need to send it anything. - tracing::debug!( - target: LOG_TARGET, - "Zombie task wanted more peers." - ); - return Ok(()) - } - None => { - return Err( - NonFatal::NoSuchLargeStatementStatus(relay_parent, candidate_hash) - ) - } - }; - - if info.peers_to_try.is_empty() { - info.peer_sender = Some(tx); - } else { - let peers_to_try = std::mem::take(&mut info.peers_to_try); - if let Err(peers) = tx.send(peers_to_try) { - // No longer interested for now - might want them later: - info.peers_to_try = peers; - } - } - } - RequesterMessage::ReportPeer(peer, rep) => - report_peer(ctx, peer, rep).await, - } - Ok(()) - } - - - async fn handle_subsystem_message( - &self, - ctx: &mut impl SubsystemContext, - runtime: &mut RuntimeInfo, - peers: &mut HashMap, - gossip_peers: &mut HashSet, - authorities: &mut HashMap, - active_heads: &mut HashMap, - req_sender: &mpsc::Sender, - res_sender: &mpsc::Sender, - message: FromOverseer, - ) -> Result { - let metrics = &self.metrics; - - match message { - FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { activated, deactivated })) => { - let _timer = metrics.time_active_leaves_update(); - - for activated in activated { - let relay_parent = activated.hash; - let span = PerLeafSpan::new(activated.span, "statement-distribution"); - tracing::trace!( - target: LOG_TARGET, - hash = ?relay_parent, - "New active leaf", - ); - - let session_index = runtime.get_session_index(ctx, relay_parent).await?; - let info = runtime.get_session_info_by_index(ctx, relay_parent, session_index).await?; - let session_info = &info.session_info; - - active_heads.entry(relay_parent) - .or_insert(ActiveHeadData::new(session_info.validators.clone(), session_index, span)); - - active_heads.retain(|h, _| { - let live = !deactivated.contains(h); - if !live { - tracing::trace!( - target: LOG_TARGET, - hash = ?h, - "Deactivating leaf", - ); - } - live - }); - } - } - FromOverseer::Signal(OverseerSignal::BlockFinalized(..)) => { - // do nothing - } - FromOverseer::Signal(OverseerSignal::Conclude) => return Ok(true), - FromOverseer::Communication { msg } => match msg { - StatementDistributionMessage::Share(relay_parent, statement) => { - let _timer = metrics.time_share(); - - // Make sure we have data in cache: - if is_statement_large(&statement) { - if let Statement::Seconded(committed) = &statement.payload() { - let active_head = active_heads - .get_mut(&relay_parent) - // This should never be out-of-sync with our view if the view - // updates correspond to actual `StartWork` messages. - .ok_or(NonFatal::NoSuchHead(relay_parent))?; - active_head.waiting_large_statements.insert( - statement.payload().candidate_hash(), - LargeStatementStatus::FetchedOrShared(committed.clone()) - ); - } - } - - let info = runtime.get_session_info(ctx, relay_parent).await?; - let session_info = &info.session_info; - let validator_info = &info.validator_info; - - // Get peers in our group, so we can make sure they get our statement - // directly: - let group_peers = { - if let Some(our_group) = validator_info.our_group { - let our_group = &session_info.validator_groups[our_group.0 as usize]; - - our_group.into_iter() - .filter_map(|i| { - if Some(*i) == validator_info.our_index { - return None - } - let authority_id = &session_info.discovery_keys[i.0 as usize]; - authorities.get(authority_id).map(|p| *p) - }) - .collect() - } else { - Vec::new() - } - }; - circulate_statement_and_dependents( - gossip_peers, - peers, - active_heads, - ctx, - relay_parent, - statement, - group_peers, - metrics, - ).await; - } - StatementDistributionMessage::NetworkBridgeUpdateV1(event) => { - let _timer = metrics.time_network_bridge_update_v1(); - - handle_network_update( - peers, - gossip_peers, - authorities, - active_heads, - ctx, - req_sender, - event, - metrics, - ).await; - } - StatementDistributionMessage::StatementFetchingReceiver(receiver) => { - ctx.spawn( - "large-statement-responder", - respond(receiver, res_sender.clone()).boxed() - ).map_err(Fatal::SpawnTask)?; - } - } - } - Ok(false) - } -} - -/// Check whether a peer knows about a candidate from us. -/// -/// If not, it is deemed illegal for it to request corresponding data from us. -fn requesting_peer_knows_about_candidate( - peers: &HashMap, - requesting_peer: &PeerId, - relay_parent: &Hash, - candidate_hash: &CandidateHash, -) -> bool { - requesting_peer_knows_about_candidate_inner( - peers, - requesting_peer, - relay_parent, - candidate_hash, - ).is_some() -} - -/// Helper function for `requesting_peer_knows_about_statement`. -fn requesting_peer_knows_about_candidate_inner( - peers: &HashMap, - requesting_peer: &PeerId, - relay_parent: &Hash, - candidate_hash: &CandidateHash, -) -> Option<()> { - let peer_data = peers.get(requesting_peer)?; - let knowledge = peer_data.view_knowledge.get(relay_parent)?; - knowledge.sent_candidates.get(&candidate_hash)?; - Some(()) -} - -#[derive(Clone)] -struct MetricsInner { - statements_distributed: prometheus::Counter, - sent_requests: prometheus::Counter, - received_responses: prometheus::CounterVec, - active_leaves_update: prometheus::Histogram, - share: prometheus::Histogram, - network_bridge_update_v1: prometheus::Histogram, -} - -/// Statement Distribution metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_statement_distributed(&self) { - if let Some(metrics) = &self.0 { - metrics.statements_distributed.inc(); - } - } - - fn on_sent_request(&self) { - if let Some(metrics) = &self.0 { - metrics.sent_requests.inc(); - } - } - - fn on_received_response(&self, success: bool) { - if let Some(metrics) = &self.0 { - let label = if success { "succeeded" } else { "failed" }; - metrics.received_responses.with_label_values(&[label]).inc(); - } - } - - /// Provide a timer for `active_leaves_update` which observes on drop. - fn time_active_leaves_update(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.active_leaves_update.start_timer()) - } - - /// Provide a timer for `share` which observes on drop. - fn time_share(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.share.start_timer()) - } - - /// Provide a timer for `network_bridge_update_v1` which observes on drop. - fn time_network_bridge_update_v1(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.network_bridge_update_v1.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> std::result::Result { - let metrics = MetricsInner { - statements_distributed: prometheus::register( - prometheus::Counter::new( - "parachain_statements_distributed_total", - "Number of candidate validity statements distributed to other peers." - )?, - registry, - )?, - sent_requests: prometheus::register( - prometheus::Counter::new( - "parachain_statement_distribution_sent_requests_total", - "Number of large statement fetching requests sent." - )?, - registry, - )?, - received_responses: prometheus::register( - prometheus::CounterVec::new( - prometheus::Opts::new( - "parachain_statement_distribution_received_responses_total", - "Number of received responses for large statement data." - ), - &["success"], - )?, - registry, - )?, - active_leaves_update: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_statement_distribution_active_leaves_update", - "Time spent within `statement_distribution::active_leaves_update`", - ) - )?, - registry, - )?, - share: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_statement_distribution_share", - "Time spent within `statement_distribution::share`", - ) - )?, - registry, - )?, - network_bridge_update_v1: prometheus::register( - prometheus::Histogram::with_opts( - prometheus::HistogramOpts::new( - "parachain_statement_distribution_network_bridge_update_v1", - "Time spent within `statement_distribution::network_bridge_update_v1`", - ) - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/network/statement-distribution/src/requester.rs b/node/network/statement-distribution/src/requester.rs deleted file mode 100644 index f2430ed10d75..000000000000 --- a/node/network/statement-distribution/src/requester.rs +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Large statement requesting background task logic. - -use std::time::Duration; - -use futures::{SinkExt, channel::{mpsc, oneshot}}; - -use polkadot_node_network_protocol::{ - PeerId, UnifiedReputationChange, - request_response::{ - OutgoingRequest, Recipient, Requests, - v1::{ - StatementFetchingRequest, StatementFetchingResponse - } - }}; -use polkadot_node_subsystem_util::TimeoutExt; -use polkadot_primitives::v1::{CandidateHash, CommittedCandidateReceipt, Hash}; -use polkadot_subsystem::{Span, Stage}; - -use crate::{LOG_TARGET, Metrics, COST_WRONG_HASH}; - -// In case we failed fetching from our known peers, how long we should wait before attempting a -// retry, even though we have not yet discovered any new peers. Or in other words how long to -// wait before retrying peers that already failed. -const RETRY_TIMEOUT: Duration = Duration::from_millis(500); - -/// Messages coming from a background task. -pub enum RequesterMessage { - /// Get an update of available peers to try for fetching a given statement. - GetMorePeers { - relay_parent: Hash, - candidate_hash: CandidateHash, - tx: oneshot::Sender> - }, - /// Fetching finished, ask for verification. If verification failes, task will continue asking - /// peers for data. - Finished { - /// Relay parent this candidate is in the context of. - relay_parent: Hash, - /// The candidate we fetched data for. - candidate_hash: CandidateHash, - /// Data was fetched from this peer. - from_peer: PeerId, - /// Response we received from above peer. - response: CommittedCandidateReceipt, - /// Peers which failed providing the data. - bad_peers: Vec, - }, - /// Report a peer which behaved worse than just not providing data: - ReportPeer(PeerId, UnifiedReputationChange), - /// Ask subsystem to send a request for us. - SendRequest(Requests), -} - - -/// A fetching task, taking care of fetching large statements via request/response. -/// -/// A fetch task does not know about a particular `Statement` instead it just tries fetching a -/// `CommittedCandidateReceipt` from peers, whether this can be used to re-assemble one ore -/// many `SignedFullStatement`s needs to be verified by the caller. -pub async fn fetch( - relay_parent: Hash, - candidate_hash: CandidateHash, - peers: Vec, - mut sender: mpsc::Sender, - metrics: Metrics, -) { - let span = Span::new(candidate_hash, "fetch-large-statement") - .with_relay_parent(relay_parent) - .with_stage(Stage::StatementDistribution); - - // Peers we already tried (and failed). - let mut tried_peers = Vec::new(); - // Peers left for trying out. - let mut new_peers = peers; - - let req = StatementFetchingRequest { - relay_parent, - candidate_hash, - }; - - // We retry endlessly (with sleep periods), and rely on the subsystem to kill us eventually. - loop { - - let span = span.child("try-available-peers"); - - while let Some(peer) = new_peers.pop() { - - let _span = span.child("try-peer") - .with_peer_id(&peer); - - let (outgoing, pending_response) = OutgoingRequest::new( - Recipient::Peer(peer), - req.clone(), - ); - if let Err(err) = sender.feed( - RequesterMessage::SendRequest(Requests::StatementFetching(outgoing)) - ).await { - tracing::info!( - target: LOG_TARGET, - ?err, - "Sending request failed, node might be shutting down - exiting." - ); - return - } - - metrics.on_sent_request(); - - match pending_response.await { - Ok(StatementFetchingResponse::Statement(statement)) => { - - if statement.hash() != candidate_hash { - metrics.on_received_response(false); - - if let Err(err) = sender.feed( - RequesterMessage::ReportPeer(peer, COST_WRONG_HASH) - ).await { - tracing::warn!( - target: LOG_TARGET, - ?err, - "Sending reputation change failed: This should not happen." - ); - } - // We want to get rid of this peer: - continue - } - - if let Err(err) = sender.feed( - RequesterMessage::Finished { - relay_parent, - candidate_hash, - from_peer: peer, - response: statement, - bad_peers: tried_peers, - } - ).await { - tracing::warn!( - target: LOG_TARGET, - ?err, - "Sending task response failed: This should not happen." - ); - } - - metrics.on_received_response(true); - - // We are done now. - return - }, - Err(err) => { - tracing::debug!( - target: LOG_TARGET, - ?err, - "Receiving response failed with error - trying next peer." - ); - - metrics.on_received_response(false); - } - } - - tried_peers.push(peer); - } - - new_peers = std::mem::take(&mut tried_peers); - - // All our peers failed us - try getting new ones before trying again: - match try_get_new_peers(relay_parent, candidate_hash, &mut sender, &span).await { - Ok(Some(mut peers)) => { - tracing::trace!( - target: LOG_TARGET, - ?peers, - "Received new peers." - ); - // New arrivals will be tried first: - new_peers.append(&mut peers); - } - // No new peers, try the old ones again (if we have any): - Ok(None) => { - // Note: In case we don't have any more peers, we will just keep asking for new - // peers, which is exactly what we want. - }, - Err(()) => return, - } - } -} - -/// Try getting new peers from subsystem. -/// -/// If there are non, we will return after a timeout with `None`. -async fn try_get_new_peers( - relay_parent: Hash, - candidate_hash: CandidateHash, - sender: &mut mpsc::Sender, - span: &Span, -) -> Result>, ()> { - - let _span = span.child("wait-for-peers"); - - let (tx, rx) = oneshot::channel(); - - if let Err(err) = sender.send( - RequesterMessage::GetMorePeers { relay_parent, candidate_hash, tx } - ).await { - tracing::debug!( - target: LOG_TARGET, - ?err, - "Failed sending background task message, subsystem probably moved on." - ); - return Err(()) - } - - match rx.timeout(RETRY_TIMEOUT).await.transpose() { - Err(_) => { - tracing::debug!( - target: LOG_TARGET, - "Failed fetching more peers." - ); - Err(()) - } - Ok(val) => Ok(val) - } -} - diff --git a/node/network/statement-distribution/src/responder.rs b/node/network/statement-distribution/src/responder.rs deleted file mode 100644 index da7e914edc93..000000000000 --- a/node/network/statement-distribution/src/responder.rs +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Large statement responding background task logic. - -use futures::{SinkExt, StreamExt, channel::{mpsc, oneshot}, stream::FuturesUnordered}; - -use parity_scale_codec::Decode; - -use polkadot_node_network_protocol::{ - PeerId, UnifiedReputationChange as Rep, - request_response::{ - IncomingRequest, MAX_PARALLEL_STATEMENT_REQUESTS, request::OutgoingResponse, - v1::{ - StatementFetchingRequest, StatementFetchingResponse - }, - }, -}; -use polkadot_primitives::v1::{CandidateHash, CommittedCandidateReceipt, Hash}; - -use crate::LOG_TARGET; - -const COST_INVALID_REQUEST: Rep = Rep::CostMajor("Peer sent unparsable request"); - -/// Messages coming from a background task. -pub enum ResponderMessage { - /// Get an update of available peers to try for fetching a given statement. - GetData { - requesting_peer: PeerId, - relay_parent: Hash, - candidate_hash: CandidateHash, - tx: oneshot::Sender - }, -} - - -/// A fetching task, taking care of fetching large statements via request/response. -/// -/// A fetch task does not know about a particular `Statement` instead it just tries fetching a -/// `CommittedCandidateReceipt` from peers, whether this can be used to re-assemble one ore -/// many `SignedFullStatement`s needs to be verified by the caller. -pub async fn respond( - mut receiver: mpsc::Receiver, - mut sender: mpsc::Sender, -) { - let mut pending_out = FuturesUnordered::new(); - loop { - // Ensure we are not handling too many requests in parallel. - // We do this for three reasons: - // - // 1. We want some requesters to have full data fast, rather then lots of them having them - // late, as each requester having the data will help distributing it. - // 2. If we take too long, the requests timing out will not yet have had any data sent, - // thus we wasted no bandwidth. - // 3. If the queue is full, requestes will get an immediate error instead of running in a - // timeout, thus requesters can immediately try another peer and be faster. - // - // From this perspective we would not want parallel response sending at all, but we don't - // want a single slow requester slowing everyone down, so we want some parallelism for that - // reason. - if pending_out.len() >= MAX_PARALLEL_STATEMENT_REQUESTS as usize { - // Wait for one to finish: - pending_out.next().await; - } - - let raw = match receiver.next().await { - None => { - tracing::debug!( - target: LOG_TARGET, - "Shutting down request responder" - ); - return - } - Some(v) => v, - }; - - let sc_network::config::IncomingRequest { - payload, - peer, - pending_response, - } = raw; - - let payload = match StatementFetchingRequest::decode(&mut payload.as_ref()) { - Err(err) => { - tracing::debug!( - target: LOG_TARGET, - ?err, - "Decoding request failed" - ); - report_peer(pending_response, COST_INVALID_REQUEST); - continue - } - Ok(payload) => payload, - }; - - let req = IncomingRequest::new( - peer, - payload, - pending_response - ); - - let (tx, rx) = oneshot::channel(); - if let Err(err) = sender.feed( - ResponderMessage::GetData { - requesting_peer: peer, - relay_parent: req.payload.relay_parent, - candidate_hash: req.payload.candidate_hash, - tx, - } - ).await { - tracing::debug!( - target: LOG_TARGET, - ?err, - "Shutting down responder" - ); - return - } - let response = match rx.await { - Err(err) => { - tracing::debug!( - target: LOG_TARGET, - ?err, - "Requested data not found." - ); - Err(()) - } - Ok(v) => Ok(StatementFetchingResponse::Statement(v)), - }; - let (pending_sent_tx, pending_sent_rx) = oneshot::channel(); - let response = OutgoingResponse { - result: response, - reputation_changes: Vec::new(), - sent_feedback: Some(pending_sent_tx), - }; - pending_out.push(pending_sent_rx); - if let Err(_) = req.send_outgoing_response(response) { - tracing::debug!( - target: LOG_TARGET, - "Sending response failed" - ); - } - } -} - -/// Report peer who sent us a request. -fn report_peer( - tx: oneshot::Sender, - rep: Rep, -) { - if let Err(_) = tx.send(sc_network::config::OutgoingResponse { - result: Err(()), - reputation_changes: vec![rep.into_base_rep()], - sent_feedback: None, - }) { - tracing::debug!( - target: LOG_TARGET, - "Reporting peer failed." - ); - } -} diff --git a/node/network/statement-distribution/src/tests.rs b/node/network/statement-distribution/src/tests.rs deleted file mode 100644 index 32a7eb77a168..000000000000 --- a/node/network/statement-distribution/src/tests.rs +++ /dev/null @@ -1,1717 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::time::Duration; -use std::sync::Arc; -use std::iter::FromIterator as _; -use parity_scale_codec::{Decode, Encode}; -use super::*; -use sp_keyring::Sr25519Keyring; -use sp_application_crypto::{AppKey, sr25519::Pair, Pair as TraitPair}; -use polkadot_node_primitives::Statement; -use polkadot_primitives::v1::{CommittedCandidateReceipt, ValidationCode, SessionInfo}; -use assert_matches::assert_matches; -use futures::executor::{self, block_on}; -use futures_timer::Delay; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr, SyncCryptoStore}; -use sc_keystore::LocalKeystore; -use polkadot_node_network_protocol::{view, ObservedRole, request_response::Recipient}; -use polkadot_subsystem::{ - jaeger, ActivatedLeaf, messages::{RuntimeApiMessage, RuntimeApiRequest}, LeafStatus, -}; -use polkadot_node_network_protocol::request_response::{ - Requests, - v1::{ - StatementFetchingRequest, - StatementFetchingResponse, - }, -}; - -#[test] -fn active_head_accepts_only_2_seconded_per_validator() { - let validators = vec![ - Sr25519Keyring::Alice.public().into(), - Sr25519Keyring::Bob.public().into(), - Sr25519Keyring::Charlie.public().into(), - ]; - let parent_hash: Hash = [1; 32].into(); - - let session_index = 1; - let signing_context = SigningContext { - parent_hash, - session_index, - }; - - let candidate_a = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = parent_hash; - c.descriptor.para_id = 1.into(); - c - }; - - let candidate_b = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = parent_hash; - c.descriptor.para_id = 2.into(); - c - }; - - let candidate_c = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = parent_hash; - c.descriptor.para_id = 3.into(); - c - }; - - let mut head_data = ActiveHeadData::new( - validators, - session_index, - PerLeafSpan::new(Arc::new(jaeger::Span::Disabled), "test"), - ); - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let alice_public = SyncCryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).unwrap(); - let bob_public = SyncCryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Bob.to_seed()) - ).unwrap(); - - // note A - let a_seconded_val_0 = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate_a.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(head_data.check_useful_or_unknown(&a_seconded_val_0.clone().into()).is_ok()); - let noted = head_data.note_statement(a_seconded_val_0.clone()); - - assert_matches!(noted, NotedStatement::Fresh(_)); - - // note A (duplicate) - assert_eq!( - head_data.check_useful_or_unknown(&a_seconded_val_0.clone().into()), - Err(DeniedStatement::UsefulButKnown), - ); - let noted = head_data.note_statement(a_seconded_val_0); - - assert_matches!(noted, NotedStatement::UsefulButKnown); - - // note B - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate_b.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(head_data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = head_data.note_statement(statement); - assert_matches!(noted, NotedStatement::Fresh(_)); - - // note C (beyond 2 - ignored) - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate_c.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - )).ok().flatten().expect("should be signed"); - assert_eq!( - head_data.check_useful_or_unknown(&statement.clone().into()), - Err(DeniedStatement::NotUseful), - ); - let noted = head_data.note_statement(statement); - assert_matches!(noted, NotedStatement::NotUseful); - - // note B (new validator) - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate_b.clone()), - &signing_context, - ValidatorIndex(1), - &bob_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(head_data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = head_data.note_statement(statement); - assert_matches!(noted, NotedStatement::Fresh(_)); - - // note C (new validator) - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate_c.clone()), - &signing_context, - ValidatorIndex(1), - &bob_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(head_data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = head_data.note_statement(statement); - assert_matches!(noted, NotedStatement::Fresh(_)); -} - -#[test] -fn note_local_works() { - let hash_a = CandidateHash([1; 32].into()); - let hash_b = CandidateHash([2; 32].into()); - - let mut per_peer_tracker = VcPerPeerTracker::default(); - per_peer_tracker.note_local(hash_a.clone()); - per_peer_tracker.note_local(hash_b.clone()); - - assert!(per_peer_tracker.local_observed.contains(&hash_a)); - assert!(per_peer_tracker.local_observed.contains(&hash_b)); - - assert!(!per_peer_tracker.remote_observed.contains(&hash_a)); - assert!(!per_peer_tracker.remote_observed.contains(&hash_b)); -} - -#[test] -fn note_remote_works() { - let hash_a = CandidateHash([1; 32].into()); - let hash_b = CandidateHash([2; 32].into()); - let hash_c = CandidateHash([3; 32].into()); - - let mut per_peer_tracker = VcPerPeerTracker::default(); - assert!(per_peer_tracker.note_remote(hash_a.clone())); - assert!(per_peer_tracker.note_remote(hash_b.clone())); - assert!(!per_peer_tracker.note_remote(hash_c.clone())); - - assert!(per_peer_tracker.remote_observed.contains(&hash_a)); - assert!(per_peer_tracker.remote_observed.contains(&hash_b)); - assert!(!per_peer_tracker.remote_observed.contains(&hash_c)); - - assert!(!per_peer_tracker.local_observed.contains(&hash_a)); - assert!(!per_peer_tracker.local_observed.contains(&hash_b)); - assert!(!per_peer_tracker.local_observed.contains(&hash_c)); -} - -#[test] -fn per_peer_relay_parent_knowledge_send() { - let mut knowledge = PeerRelayParentKnowledge::default(); - - let hash_a = CandidateHash([1; 32].into()); - - // Sending an un-pinned statement should not work and should have no effect. - assert!(!knowledge.can_send(&(CompactStatement::Valid(hash_a), ValidatorIndex(0)))); - assert!(!knowledge.is_known_candidate(&hash_a)); - assert!(knowledge.sent_statements.is_empty()); - assert!(knowledge.received_statements.is_empty()); - assert!(knowledge.seconded_counts.is_empty()); - assert!(knowledge.received_message_count.is_empty()); - - // Make the peer aware of the candidate. - assert_eq!(knowledge.send(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0))), true); - assert_eq!(knowledge.send(&(CompactStatement::Seconded(hash_a), ValidatorIndex(1))), false); - assert!(knowledge.is_known_candidate(&hash_a)); - assert_eq!(knowledge.sent_statements.len(), 2); - assert!(knowledge.received_statements.is_empty()); - assert_eq!(knowledge.seconded_counts.len(), 2); - assert!(knowledge.received_message_count.get(&hash_a).is_none()); - - // And now it should accept the dependent message. - assert_eq!(knowledge.send(&(CompactStatement::Valid(hash_a), ValidatorIndex(0))), false); - assert!(knowledge.is_known_candidate(&hash_a)); - assert_eq!(knowledge.sent_statements.len(), 3); - assert!(knowledge.received_statements.is_empty()); - assert_eq!(knowledge.seconded_counts.len(), 2); - assert!(knowledge.received_message_count.get(&hash_a).is_none()); -} - -#[test] -fn cant_send_after_receiving() { - let mut knowledge = PeerRelayParentKnowledge::default(); - - let hash_a = CandidateHash([1; 32].into()); - assert!(knowledge.check_can_receive(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0)), 3).is_ok()); - assert!(knowledge.receive(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0)), 3).unwrap()); - assert!(!knowledge.can_send(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0)))); -} - -#[test] -fn per_peer_relay_parent_knowledge_receive() { - let mut knowledge = PeerRelayParentKnowledge::default(); - - let hash_a = CandidateHash([1; 32].into()); - - assert_eq!( - knowledge.check_can_receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(0)), 3), - Err(COST_UNEXPECTED_STATEMENT), - ); - assert_eq!( - knowledge.receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(0)), 3), - Err(COST_UNEXPECTED_STATEMENT), - ); - - assert!(knowledge.check_can_receive(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0)), 3).is_ok()); - assert_eq!( - knowledge.receive(&(CompactStatement::Seconded(hash_a), ValidatorIndex(0)), 3), - Ok(true), - ); - - // Push statements up to the flood limit. - assert!(knowledge.check_can_receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(1)), 3).is_ok()); - assert_eq!( - knowledge.receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(1)), 3), - Ok(false), - ); - - assert!(knowledge.is_known_candidate(&hash_a)); - assert_eq!(*knowledge.received_message_count.get(&hash_a).unwrap(), 2); - - assert!(knowledge.check_can_receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(2)), 3).is_ok()); - assert_eq!( - knowledge.receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(2)), 3), - Ok(false), - ); - - assert_eq!(*knowledge.received_message_count.get(&hash_a).unwrap(), 3); - - assert_eq!( - knowledge.check_can_receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(7)), 3), - Err(COST_APPARENT_FLOOD), - ); - assert_eq!( - knowledge.receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(7)), 3), - Err(COST_APPARENT_FLOOD), - ); - - assert_eq!(*knowledge.received_message_count.get(&hash_a).unwrap(), 3); - assert_eq!(knowledge.received_statements.len(), 3); // number of prior `Ok`s. - - // Now make sure that the seconding limit is respected. - let hash_b = CandidateHash([2; 32].into()); - let hash_c = CandidateHash([3; 32].into()); - - assert!(knowledge.check_can_receive(&(CompactStatement::Seconded(hash_b), ValidatorIndex(0)), 3).is_ok()); - assert_eq!( - knowledge.receive(&(CompactStatement::Seconded(hash_b), ValidatorIndex(0)), 3), - Ok(true), - ); - - assert_eq!( - knowledge.check_can_receive(&(CompactStatement::Seconded(hash_c), ValidatorIndex(0)), 3), - Err(COST_UNEXPECTED_STATEMENT), - ); - assert_eq!( - knowledge.receive(&(CompactStatement::Seconded(hash_c), ValidatorIndex(0)), 3), - Err(COST_UNEXPECTED_STATEMENT), - ); - - // Last, make sure that already-known statements are disregarded. - assert_eq!( - knowledge.check_can_receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(2)), 3), - Err(COST_DUPLICATE_STATEMENT), - ); - assert_eq!( - knowledge.receive(&(CompactStatement::Valid(hash_a), ValidatorIndex(2)), 3), - Err(COST_DUPLICATE_STATEMENT), - ); - - assert_eq!( - knowledge.check_can_receive(&(CompactStatement::Seconded(hash_b), ValidatorIndex(0)), 3), - Err(COST_DUPLICATE_STATEMENT), - ); - assert_eq!( - knowledge.receive(&(CompactStatement::Seconded(hash_b), ValidatorIndex(0)), 3), - Err(COST_DUPLICATE_STATEMENT), - ); -} - -#[test] -fn peer_view_update_sends_messages() { - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(2); - let hash_c = Hash::repeat_byte(3); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_c; - c.descriptor.para_id = 1.into(); - c - }; - let candidate_hash = candidate.hash(); - - let old_view = view![hash_a, hash_b]; - let new_view = view![hash_b, hash_c]; - - let mut active_heads = HashMap::new(); - let validators = vec![ - Sr25519Keyring::Alice.public().into(), - Sr25519Keyring::Bob.public().into(), - Sr25519Keyring::Charlie.public().into(), - ]; - - let session_index = 1; - let signing_context = SigningContext { - parent_hash: hash_c, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - - let alice_public = SyncCryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).unwrap(); - let bob_public = SyncCryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Bob.to_seed()) - ).unwrap(); - let charlie_public = SyncCryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Charlie.to_seed()) - ).unwrap(); - - let new_head_data = { - let mut data = ActiveHeadData::new( - validators, - session_index, - PerLeafSpan::new(Arc::new(jaeger::Span::Disabled), "test"), - ); - - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = data.note_statement(statement); - - assert_matches!(noted, NotedStatement::Fresh(_)); - - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Valid(candidate_hash), - &signing_context, - ValidatorIndex(1), - &bob_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = data.note_statement(statement); - - assert_matches!(noted, NotedStatement::Fresh(_)); - - let statement = block_on(SignedFullStatement::sign( - &keystore, - Statement::Valid(candidate_hash), - &signing_context, - ValidatorIndex(2), - &charlie_public.into(), - )).ok().flatten().expect("should be signed"); - assert!(data.check_useful_or_unknown(&statement.clone().into()).is_ok()); - let noted = data.note_statement(statement); - assert_matches!(noted, NotedStatement::Fresh(_)); - - data - }; - - active_heads.insert(hash_c, new_head_data); - - let mut peer_data = PeerData { - view: old_view, - view_knowledge: { - let mut k = HashMap::new(); - - k.insert(hash_a, Default::default()); - k.insert(hash_b, Default::default()); - - k - }, - maybe_authority: None, - }; - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - polkadot_node_subsystem_test_helpers - ::make_subsystem_context - ::(pool); - let peer = PeerId::random(); - - executor::block_on(async move { - let gossip_peers = HashSet::from_iter(vec![peer.clone()].into_iter()); - update_peer_view_and_maybe_send_unlocked( - peer.clone(), - &gossip_peers, - &mut peer_data, - &mut ctx, - &active_heads, - new_view.clone(), - &Default::default(), - ).await; - - assert_eq!(peer_data.view, new_view); - assert!(!peer_data.view_knowledge.contains_key(&hash_a)); - assert!(peer_data.view_knowledge.contains_key(&hash_b)); - - let c_knowledge = peer_data.view_knowledge.get(&hash_c).unwrap(); - - assert!(c_knowledge.is_known_candidate(&candidate_hash)); - assert!(c_knowledge.sent_statements.contains( - &(CompactStatement::Seconded(candidate_hash), ValidatorIndex(0)) - )); - assert!(c_knowledge.sent_statements.contains( - &(CompactStatement::Valid(candidate_hash), ValidatorIndex(1)) - )); - assert!(c_knowledge.sent_statements.contains( - &(CompactStatement::Valid(candidate_hash), ValidatorIndex(2)) - )); - - // now see if we got the 3 messages from the active head data. - let active_head = active_heads.get(&hash_c).unwrap(); - - // semi-fragile because hashmap iterator ordering is undefined, but in practice - // it will not change between runs of the program. - for statement in active_head.statements_about(candidate_hash) { - let message = handle.recv().await; - let expected_to = vec![peer.clone()]; - let expected_payload - = statement_message(hash_c, statement.statement.clone()); - - assert_matches!( - message, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - to, - payload, - )) => { - assert_eq!(to, expected_to); - assert_eq!(payload, expected_payload) - } - ) - } - }); -} - -#[test] -fn circulated_statement_goes_to_all_peers_with_view() { - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(2); - let hash_c = Hash::repeat_byte(3); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_b; - c.descriptor.para_id = 1.into(); - c - }; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - let peer_c = PeerId::random(); - - let peer_a_view = view![hash_a]; - let peer_b_view = view![hash_a, hash_b]; - let peer_c_view = view![hash_b, hash_c]; - - let session_index = 1; - - let peer_data_from_view = |view: View| PeerData { - view: view.clone(), - view_knowledge: view.iter().map(|v| (v.clone(), Default::default())).collect(), - maybe_authority: None, - }; - - let mut peer_data: HashMap<_, _> = vec![ - (peer_a.clone(), peer_data_from_view(peer_a_view)), - (peer_b.clone(), peer_data_from_view(peer_b_view)), - (peer_c.clone(), peer_data_from_view(peer_c_view)), - ].into_iter().collect(); - - let pool = sp_core::testing::TaskExecutor::new(); - let (mut ctx, mut handle) = - polkadot_node_subsystem_test_helpers - ::make_subsystem_context - ::(pool); - - executor::block_on(async move { - let signing_context = SigningContext { - parent_hash: hash_b, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let alice_public = CryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).await.unwrap(); - - let statement = SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - ).await.ok().flatten().expect("should be signed"); - - let comparator = StoredStatementComparator { - compact: statement.payload().to_compact(), - validator_index: ValidatorIndex(0), - signature: statement.signature().clone() - }; - let statement = StoredStatement { - comparator: &comparator, - statement: &statement, - }; - - let gossip_peers = HashSet::from_iter(vec![ - peer_a.clone(), peer_b.clone(), peer_c.clone(), - ].into_iter()); - let needs_dependents = circulate_statement( - &gossip_peers, - &mut peer_data, - &mut ctx, - hash_b, - statement, - Vec::new(), - ).await; - - { - assert_eq!(needs_dependents.len(), 2); - assert!(needs_dependents.contains(&peer_b)); - assert!(needs_dependents.contains(&peer_c)); - } - - let fingerprint = (statement.compact().clone(), ValidatorIndex(0)); - - assert!( - peer_data.get(&peer_b).unwrap() - .view_knowledge.get(&hash_b).unwrap() - .sent_statements.contains(&fingerprint), - ); - - assert!( - peer_data.get(&peer_c).unwrap() - .view_knowledge.get(&hash_b).unwrap() - .sent_statements.contains(&fingerprint), - ); - - let message = handle.recv().await; - assert_matches!( - message, - AllMessages::NetworkBridge(NetworkBridgeMessage::SendValidationMessage( - to, - payload, - )) => { - assert_eq!(to.len(), 2); - assert!(to.contains(&peer_b)); - assert!(to.contains(&peer_c)); - - assert_eq!( - payload, - statement_message(hash_b, statement.statement.clone()), - ); - } - ) - }); -} - -#[test] -fn receiving_from_one_sends_to_another_and_to_candidate_backing() { - let hash_a = Hash::repeat_byte(1); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_a; - c.descriptor.para_id = 1.into(); - c - }; - - let peer_a = PeerId::random(); - let peer_b = PeerId::random(); - - let validators = vec![ - Sr25519Keyring::Alice.pair(), - Sr25519Keyring::Bob.pair(), - Sr25519Keyring::Charlie.pair(), - ]; - - let session_info = make_session_info(validators, vec![]); - - let session_index = 1; - - let pool = sp_core::testing::TaskExecutor::new(); - let (ctx, mut handle) = polkadot_node_subsystem_test_helpers::make_subsystem_context(pool); - - let bg = async move { - let s = StatementDistribution { metrics: Default::default(), keystore: Arc::new(LocalKeystore::in_memory()) }; - s.run(ctx).await.unwrap(); - }; - - let test_fut = async move { - // register our active heads. - handle.send(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }))).await; - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionIndexForChild(tx)) - ) - if r == hash_a - => { - let _ = tx.send(Ok(session_index)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionInfo(sess_index, tx)) - ) - if r == hash_a && sess_index == session_index - => { - let _ = tx.send(Ok(Some(session_info))); - } - ); - - // notify of peers and view - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected(peer_a.clone(), ObservedRole::Full, None) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected(peer_b.clone(), ObservedRole::Full, None) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_a.clone(), view![hash_a]) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), view![hash_a]) - ) - }).await; - - // receive a seconded statement from peer A. it should be propagated onwards to peer B and to - // candidate backing. - let statement = { - let signing_context = SigningContext { - parent_hash: hash_a, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let alice_public = CryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).await.unwrap(); - - SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - ).await.ok().flatten().expect("should be signed") - }; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_a.clone(), - protocol_v1::StatementDistributionMessage::Statement(hash_a, statement.clone().into()), - ) - ) - }).await; - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_a && r == BENEFIT_VALID_STATEMENT_FIRST => {} - ); - - assert_matches!( - handle.recv().await, - AllMessages::CandidateBacking( - CandidateBackingMessage::Statement(r, s) - ) if r == hash_a && s == statement => {} - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage( - recipients, - protocol_v1::ValidationProtocol::StatementDistribution( - protocol_v1::StatementDistributionMessage::Statement(r, s) - ), - ) - ) => { - assert_eq!(recipients, vec![peer_b.clone()]); - assert_eq!(r, hash_a); - assert_eq!(s, statement.into()); - } - ); - handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::pin_mut!(test_fut); - futures::pin_mut!(bg); - - executor::block_on(future::join(test_fut, bg)); -} - -#[test] -fn receiving_large_statement_from_one_sends_to_another_and_to_candidate_backing() { - sp_tracing::try_init_simple(); - let hash_a = Hash::repeat_byte(1); - let hash_b = Hash::repeat_byte(2); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_a; - c.descriptor.para_id = 1.into(); - c.commitments.new_validation_code = Some(ValidationCode(vec![1,2,3])); - c - }; - - let peer_a = PeerId::random(); // Alice - let peer_b = PeerId::random(); // Bob - let peer_c = PeerId::random(); // Charlie - let peer_bad = PeerId::random(); // No validator - - let validators = vec![ - Sr25519Keyring::Alice.pair(), - Sr25519Keyring::Bob.pair(), - Sr25519Keyring::Charlie.pair(), - // We: - Sr25519Keyring::Ferdie.pair(), - ]; - - let session_info = make_session_info( - validators, - vec![vec![0,1,2,4], vec![3]] - ); - - let session_index = 1; - - let pool = sp_core::testing::TaskExecutor::new(); - let (ctx, mut handle) = polkadot_node_subsystem_test_helpers::make_subsystem_context(pool); - - let bg = async move { - let s = StatementDistribution { metrics: Default::default(), keystore: make_ferdie_keystore()}; - s.run(ctx).await.unwrap(); - }; - - let (mut tx_reqs, rx_reqs) = mpsc::channel(1); - - let test_fut = async move { - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::StatementFetchingReceiver(rx_reqs) - }).await; - - // register our active heads. - handle.send(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }))).await; - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionIndexForChild(tx)) - ) - if r == hash_a - => { - let _ = tx.send(Ok(session_index)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionInfo(sess_index, tx)) - ) - if r == hash_a && sess_index == session_index - => { - let _ = tx.send(Ok(Some(session_info))); - } - ); - - // notify of peers and view - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_a.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Alice.public().into()) - ) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_b.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Bob.public().into()) - ) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_c.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Charlie.public().into()) - ) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected(peer_bad.clone(), ObservedRole::Full, None) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_a.clone(), view![hash_a]) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), view![hash_a]) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_c.clone(), view![hash_a]) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_bad.clone(), view![hash_a]) - ) - }).await; - - // receive a seconded statement from peer A, which does not provide the request data, - // then get that data from peer C. It should be propagated onwards to peer B and to - // candidate backing. - let statement = { - let signing_context = SigningContext { - parent_hash: hash_a, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let alice_public = CryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).await.unwrap(); - - SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - ).await.ok().flatten().expect("should be signed") - }; - - let metadata = - protocol_v1::StatementDistributionMessage::Statement(hash_a, statement.clone().into()).get_metadata(); - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_a.clone(), - protocol_v1::StatementDistributionMessage::LargeStatement(metadata.clone()), - ) - ) - }).await; - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - assert_eq!(outgoing.peer, Recipient::Peer(peer_a)); - // Just drop request - should trigger error. - } - ); - - // There is a race between request handler asking for more peers and processing of the - // coming `PeerMessage`s, we want the request handler to ask first here for better test - // coverage: - Delay::new(Duration::from_millis(20)).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_c.clone(), - protocol_v1::StatementDistributionMessage::LargeStatement(metadata.clone()), - ) - ) - }).await; - - // Malicious peer: - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_bad.clone(), - protocol_v1::StatementDistributionMessage::LargeStatement(metadata.clone()), - ) - ) - }).await; - - // Let c fail once too: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - assert_eq!(outgoing.peer, Recipient::Peer(peer_c)); - } - ); - - // a fails again: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - // On retry, we should have reverse order: - assert_eq!(outgoing.peer, Recipient::Peer(peer_a)); - } - ); - - // Send invalid response (all other peers have been tried now): - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - assert_eq!(outgoing.peer, Recipient::Peer(peer_bad)); - let bad_candidate = { - let mut bad = candidate.clone(); - bad.descriptor.para_id = 0xeadbeaf.into(); - bad - }; - let response = StatementFetchingResponse::Statement(bad_candidate); - outgoing.pending_response.send(Ok(response.encode())).unwrap(); - } - ); - - // Should get punished and never tried again: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_bad && r == COST_WRONG_HASH => {} - ); - - // a is tried again (retried in reverse order): - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - // On retry, we should have reverse order: - assert_eq!(outgoing.peer, Recipient::Peer(peer_a)); - } - ); - - // c succeeds now: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - // On retry, we should have reverse order: - assert_eq!(outgoing.peer, Recipient::Peer(peer_c)); - let response = StatementFetchingResponse::Statement(candidate.clone()); - outgoing.pending_response.send(Ok(response.encode())).unwrap(); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_a && r == COST_FETCH_FAIL => {} - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_c && r == BENEFIT_VALID_RESPONSE => {} - ); - - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_a && r == BENEFIT_VALID_STATEMENT_FIRST => {} - ); - - assert_matches!( - handle.recv().await, - AllMessages::CandidateBacking( - CandidateBackingMessage::Statement(r, s) - ) if r == hash_a && s == statement => {} - ); - - - // Now messages should go out: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage( - mut recipients, - protocol_v1::ValidationProtocol::StatementDistribution( - protocol_v1::StatementDistributionMessage::LargeStatement(meta) - ), - ) - ) => { - tracing::debug!( - target: LOG_TARGET, - ?recipients, - "Recipients received" - ); - recipients.sort(); - let mut expected = vec![peer_b, peer_c, peer_bad]; - expected.sort(); - assert_eq!(recipients, expected); - assert_eq!(meta.relay_parent, hash_a); - assert_eq!(meta.candidate_hash, statement.payload().candidate_hash()); - assert_eq!(meta.signed_by, statement.validator_index()); - assert_eq!(&meta.signature, statement.signature()); - } - ); - - // Now that it has the candidate it should answer requests accordingly (even after a - // failed request): - - // Failing request first (wrong relay parent hash): - let (pending_response, response_rx) = oneshot::channel(); - let inner_req = StatementFetchingRequest { - relay_parent: hash_b, - candidate_hash: metadata.candidate_hash, - }; - let req = sc_network::config::IncomingRequest { - peer: peer_b, - payload: inner_req.encode(), - pending_response, - }; - tx_reqs.send(req).await.unwrap(); - assert_matches!( - response_rx.await.unwrap().result, - Err(()) => {} - ); - - // Another failing request (peer_a never received a statement from us, so it is not - // allowed to request the data): - let (pending_response, response_rx) = oneshot::channel(); - let inner_req = StatementFetchingRequest { - relay_parent: metadata.relay_parent, - candidate_hash: metadata.candidate_hash, - }; - let req = sc_network::config::IncomingRequest { - peer: peer_a, - payload: inner_req.encode(), - pending_response, - }; - tx_reqs.send(req).await.unwrap(); - assert_matches!( - response_rx.await.unwrap().result, - Err(()) => {} - ); - - // And now the succeding request from peer_b: - let (pending_response, response_rx) = oneshot::channel(); - let inner_req = StatementFetchingRequest { - relay_parent: metadata.relay_parent, - candidate_hash: metadata.candidate_hash, - }; - let req = sc_network::config::IncomingRequest { - peer: peer_b, - payload: inner_req.encode(), - pending_response, - }; - tx_reqs.send(req).await.unwrap(); - let StatementFetchingResponse::Statement(committed) = - Decode::decode(&mut response_rx.await.unwrap().result.unwrap().as_ref()).unwrap(); - assert_eq!(committed, candidate); - - handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::pin_mut!(test_fut); - futures::pin_mut!(bg); - - executor::block_on(future::join(test_fut, bg)); -} - -#[test] -fn share_prioritizes_backing_group() { - sp_tracing::try_init_simple(); - let hash_a = Hash::repeat_byte(1); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_a; - c.descriptor.para_id = 1.into(); - c.commitments.new_validation_code = Some(ValidationCode(vec![1,2,3])); - c - }; - - let peer_a = PeerId::random(); // Alice - let peer_b = PeerId::random(); // Bob - let peer_c = PeerId::random(); // Charlie - let peer_bad = PeerId::random(); // No validator - let peer_other_group = PeerId::random(); //Ferdie - - let mut validators = vec![ - Sr25519Keyring::Alice.pair(), - Sr25519Keyring::Bob.pair(), - Sr25519Keyring::Charlie.pair(), - // other group - Sr25519Keyring::Dave.pair(), - // We: - Sr25519Keyring::Ferdie.pair(), - ]; - - // Strictly speaking we only need MIN_GOSSIP_PEERS - 3 to make sure only priority peers - // will be served, but by using a larger value we test for overflow errors: - let dummy_count = MIN_GOSSIP_PEERS; - - // We artificially inflate our group, so there won't be any free slots for other peers. (We - // want to test that our group is prioritized): - let dummy_pairs: Vec<_> = std::iter::repeat_with(|| Pair::generate().0).take(dummy_count).collect(); - let dummy_peers: Vec<_> = std::iter::repeat_with(|| PeerId::random()).take(dummy_count).collect(); - - validators = validators.into_iter().chain(dummy_pairs.clone()).collect(); - - let mut first_group = vec![0,1,2,4]; - first_group.append(&mut (0..dummy_count as u32).map(|v| v + 5).collect()); - let session_info = make_session_info( - validators, - vec![first_group, vec![3]] - ); - - let session_index = 1; - - let pool = sp_core::testing::TaskExecutor::new(); - let (ctx, mut handle) = polkadot_node_subsystem_test_helpers::make_subsystem_context(pool); - - let bg = async move { - let s = StatementDistribution { metrics: Default::default(), keystore: make_ferdie_keystore()}; - s.run(ctx).await.unwrap(); - }; - - let (mut tx_reqs, rx_reqs) = mpsc::channel(1); - - let test_fut = async move { - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::StatementFetchingReceiver(rx_reqs) - }).await; - - // register our active heads. - handle.send(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }))).await; - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionIndexForChild(tx)) - ) - if r == hash_a - => { - let _ = tx.send(Ok(session_index)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionInfo(sess_index, tx)) - ) - if r == hash_a && sess_index == session_index - => { - let _ = tx.send(Ok(Some(session_info))); - } - ); - - // notify of dummy peers and view - for (peer, pair) in dummy_peers.clone().into_iter().zip(dummy_pairs) { - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer, - ObservedRole::Full, - Some(pair.public().into()), - ) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer, view![hash_a]) - ) - }).await; - } - - // notify of peers and view - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_a.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Alice.public().into()) - ) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_b.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Bob.public().into()) - ) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_c.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Charlie.public().into()) - ) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected(peer_bad.clone(), ObservedRole::Full, None) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_other_group.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Dave.public().into()) - ) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_a.clone(), view![hash_a]) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_b.clone(), view![hash_a]) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_c.clone(), view![hash_a]) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_bad.clone(), view![hash_a]) - ) - }).await; - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_other_group.clone(), view![hash_a]) - ) - }).await; - - // receive a seconded statement from peer A, which does not provide the request data, - // then get that data from peer C. It should be propagated onwards to peer B and to - // candidate backing. - let statement = { - let signing_context = SigningContext { - parent_hash: hash_a, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let ferdie_public = CryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Ferdie.to_seed()) - ).await.unwrap(); - - SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate.clone()), - &signing_context, - ValidatorIndex(4), - &ferdie_public.into(), - ).await.ok().flatten().expect("should be signed") - }; - - let metadata = - protocol_v1::StatementDistributionMessage::Statement(hash_a, statement.clone().into()).get_metadata(); - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::Share(hash_a, statement.clone()) - }).await; - - // Messages should go out: - assert_matches!( - handle.recv().await, - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendValidationMessage( - mut recipients, - protocol_v1::ValidationProtocol::StatementDistribution( - protocol_v1::StatementDistributionMessage::LargeStatement(meta) - ), - ) - ) => { - tracing::debug!( - target: LOG_TARGET, - ?recipients, - "Recipients received" - ); - recipients.sort(); - // We expect only our backing group to be the recipients, du to the inflated - // test group above: - let mut expected: Vec<_> = vec![peer_a, peer_b, peer_c].into_iter().chain(dummy_peers).collect(); - expected.sort(); - assert_eq!(recipients.len(), expected.len()); - assert_eq!(recipients, expected); - assert_eq!(meta.relay_parent, hash_a); - assert_eq!(meta.candidate_hash, statement.payload().candidate_hash()); - assert_eq!(meta.signed_by, statement.validator_index()); - assert_eq!(&meta.signature, statement.signature()); - } - ); - - // Now that it has the candidate it should answer requests accordingly: - - let (pending_response, response_rx) = oneshot::channel(); - let inner_req = StatementFetchingRequest { - relay_parent: metadata.relay_parent, - candidate_hash: metadata.candidate_hash, - }; - let req = sc_network::config::IncomingRequest { - peer: peer_b, - payload: inner_req.encode(), - pending_response, - }; - tx_reqs.send(req).await.unwrap(); - let StatementFetchingResponse::Statement(committed) = - Decode::decode(&mut response_rx.await.unwrap().result.unwrap().as_ref()).unwrap(); - assert_eq!(committed, candidate); - - handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::pin_mut!(test_fut); - futures::pin_mut!(bg); - - executor::block_on(future::join(test_fut, bg)); -} - -#[test] -fn peer_cant_flood_with_large_statements() { - sp_tracing::try_init_simple(); - let hash_a = Hash::repeat_byte(1); - - let candidate = { - let mut c = CommittedCandidateReceipt::default(); - c.descriptor.relay_parent = hash_a; - c.descriptor.para_id = 1.into(); - c.commitments.new_validation_code = Some(ValidationCode(vec![1,2,3])); - c - }; - - let peer_a = PeerId::random(); // Alice - - let validators = vec![ - Sr25519Keyring::Alice.pair(), - Sr25519Keyring::Bob.pair(), - Sr25519Keyring::Charlie.pair(), - // other group - Sr25519Keyring::Dave.pair(), - // We: - Sr25519Keyring::Ferdie.pair(), - ]; - - let first_group = vec![0,1,2,4]; - let session_info = make_session_info( - validators, - vec![first_group, vec![3]] - ); - - let session_index = 1; - - let pool = sp_core::testing::TaskExecutor::new(); - let (ctx, mut handle) = polkadot_node_subsystem_test_helpers::make_subsystem_context(pool); - - let bg = async move { - let s = StatementDistribution { metrics: Default::default(), keystore: make_ferdie_keystore()}; - s.run(ctx).await.unwrap(); - }; - - let (_, rx_reqs) = mpsc::channel(1); - - let test_fut = async move { - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::StatementFetchingReceiver(rx_reqs) - }).await; - - // register our active heads. - handle.send(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: vec![ActivatedLeaf { - hash: hash_a, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].into(), - deactivated: vec![].into(), - }))).await; - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionIndexForChild(tx)) - ) - if r == hash_a - => { - let _ = tx.send(Ok(session_index)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi( - RuntimeApiMessage::Request(r, RuntimeApiRequest::SessionInfo(sess_index, tx)) - ) - if r == hash_a && sess_index == session_index - => { - let _ = tx.send(Ok(Some(session_info))); - } - ); - - // notify of peers and view - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerConnected( - peer_a.clone(), - ObservedRole::Full, - Some(Sr25519Keyring::Alice.public().into()) - ) - ) - }).await; - - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerViewChange(peer_a.clone(), view![hash_a]) - ) - }).await; - - // receive a seconded statement from peer A. - let statement = { - let signing_context = SigningContext { - parent_hash: hash_a, - session_index, - }; - - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - let alice_public = CryptoStore::sr25519_generate_new( - &*keystore, ValidatorId::ID, Some(&Sr25519Keyring::Alice.to_seed()) - ).await.unwrap(); - - SignedFullStatement::sign( - &keystore, - Statement::Seconded(candidate.clone()), - &signing_context, - ValidatorIndex(0), - &alice_public.into(), - ).await.ok().flatten().expect("should be signed") - }; - - let metadata = - protocol_v1::StatementDistributionMessage::Statement(hash_a, statement.clone().into()).get_metadata(); - - for _ in 0..MAX_LARGE_STATEMENTS_PER_SENDER + 1 { - handle.send(FromOverseer::Communication { - msg: StatementDistributionMessage::NetworkBridgeUpdateV1( - NetworkBridgeEvent::PeerMessage( - peer_a.clone(), - protocol_v1::StatementDistributionMessage::LargeStatement(metadata.clone()), - ) - ) - }).await; - } - - // We should try to fetch the data and punish the peer (but we don't know what comes - // first): - let mut requested = false; - let mut punished = false; - for _ in 0..2 { - match handle.recv().await { - AllMessages::NetworkBridge( - NetworkBridgeMessage::SendRequests( - mut reqs, IfDisconnected::ImmediateError - ) - ) => { - let reqs = reqs.pop().unwrap(); - let outgoing = match reqs { - Requests::StatementFetching(outgoing) => outgoing, - _ => panic!("Unexpected request"), - }; - let req = outgoing.payload; - assert_eq!(req.relay_parent, metadata.relay_parent); - assert_eq!(req.candidate_hash, metadata.candidate_hash); - assert_eq!(outgoing.peer, Recipient::Peer(peer_a)); - // Just drop request - should trigger error. - requested = true; - } - - AllMessages::NetworkBridge( - NetworkBridgeMessage::ReportPeer(p, r) - ) if p == peer_a && r == COST_APPARENT_FLOOD => { - punished = true; - } - - m => panic!("Unexpected message: {:?}", m), - } - } - assert!(requested, "large data has not been requested."); - assert!(punished, "Peer should have been punished for flooding."); - - handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - }; - - futures::pin_mut!(test_fut); - futures::pin_mut!(bg); - - executor::block_on(future::join(test_fut, bg)); -} - -fn make_session_info(validators: Vec, groups: Vec>) -> SessionInfo { - - let validator_groups: Vec> = groups - .iter().map(|g| g.into_iter().map(|v| ValidatorIndex(*v)).collect()).collect(); - - SessionInfo { - discovery_keys: validators.iter().map(|k| k.public().into()).collect(), - // Not used: - n_cores: validator_groups.len() as u32, - validator_groups, - validators: validators.iter().map(|k| k.public().into()).collect(), - // Not used values: - assignment_keys: Vec::new(), - zeroth_delay_tranche_width: 0, - relay_vrf_modulo_samples: 0, - n_delay_tranches: 0, - no_show_slots: 0, - needed_approvals: 0, - } -} - -pub fn make_ferdie_keystore() -> SyncCryptoStorePtr { - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - SyncCryptoStore::sr25519_generate_new( - &*keystore, - ValidatorId::ID, - Some(&Sr25519Keyring::Ferdie.to_seed()), - ) - .expect("Insert key into keystore"); - keystore -} diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml deleted file mode 100644 index 0d83f5da4150..000000000000 --- a/node/overseer/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "polkadot-overseer" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -async-trait = "0.1.42" -client = { package = "sc-client-api", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures = "0.3.15" -futures-timer = "3.0.2" -polkadot-node-primitives = { package = "polkadot-node-primitives", path = "../primitives" } -polkadot-node-subsystem-util = { path = "../subsystem-util" } -polkadot-procmacro-overseer-subsystems-gen = { path = "./subsystems-gen" } -polkadot-primitives = { path = "../../primitives" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../subsystem" } -tracing = "0.1.26" -lru = "0.6" - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-node-network-protocol = { path = "../network/protocol" } -futures = { version = "0.3.15", features = ["thread-pool"] } -femme = "2.1.1" -kv-log-macro = "1.0.7" -assert_matches = "1.4.0" diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs deleted file mode 100644 index bd3170fa1367..000000000000 --- a/node/overseer/examples/minimal-example.rs +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Shows a basic usage of the `Overseer`: -//! * Spawning subsystems and subsystem child jobs -//! * Establishing message passing - -use std::time::Duration; -use futures::{ - channel::oneshot, - pending, pin_mut, select, stream, - FutureExt, StreamExt, -}; -use futures_timer::Delay; - -use polkadot_node_primitives::{PoV, BlockData}; -use polkadot_primitives::v1::Hash; -use polkadot_overseer::{Overseer, HeadSupportsParachains, AllSubsystems}; - -use polkadot_subsystem::{Subsystem, SubsystemContext, SpawnedSubsystem, FromOverseer}; -use polkadot_subsystem::messages::{ - CandidateValidationMessage, CandidateBackingMessage, AllMessages, -}; - -struct AlwaysSupportsParachains; -impl HeadSupportsParachains for AlwaysSupportsParachains { - fn head_supports_parachains(&self, _head: &Hash) -> bool { true } -} - -struct Subsystem1; - -impl Subsystem1 { - async fn run(mut ctx: impl SubsystemContext) { - loop { - match ctx.try_recv().await { - Ok(Some(msg)) => { - if let FromOverseer::Communication { msg } = msg { - tracing::info!("msg {:?}", msg); - } - continue; - } - Ok(None) => (), - Err(_) => { - tracing::info!("exiting"); - return; - } - } - - Delay::new(Duration::from_secs(1)).await; - let (tx, _) = oneshot::channel(); - - ctx.send_message(AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - Default::default(), - PoV { - block_data: BlockData(Vec::new()), - }.into(), - tx, - ) - )).await; - } - } -} - -impl Subsystem for Subsystem1 - where C: SubsystemContext -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = Box::pin(async move { - Self::run(ctx).await; - Ok(()) - }); - - SpawnedSubsystem { - name: "subsystem-1", - future, - } - } -} - -struct Subsystem2; - -impl Subsystem2 { - async fn run(mut ctx: impl SubsystemContext) { - ctx.spawn( - "subsystem-2-job", - Box::pin(async { - loop { - tracing::info!("Job tick"); - Delay::new(Duration::from_secs(1)).await; - } - }), - ).unwrap(); - - loop { - match ctx.try_recv().await { - Ok(Some(msg)) => { - tracing::info!("Subsystem2 received message {:?}", msg); - continue; - } - Ok(None) => { pending!(); } - Err(_) => { - tracing::info!("exiting"); - return; - }, - } - } - } -} - -impl Subsystem for Subsystem2 - where C: SubsystemContext -{ - fn start(self, ctx: C) -> SpawnedSubsystem { - let future = Box::pin(async move { - Self::run(ctx).await; - Ok(()) - }); - - SpawnedSubsystem { - name: "subsystem-2", - future, - } - } -} - -fn main() { - femme::with_level(femme::LevelFilter::Trace); - let spawner = sp_core::testing::TaskExecutor::new(); - futures::executor::block_on(async { - let timer_stream = stream::repeat(()).then(|_| async { - Delay::new(Duration::from_secs(1)).await; - }); - - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(Subsystem2) - .replace_candidate_backing(Subsystem1); - let (overseer, _handler) = Overseer::new( - vec![], - all_subsystems, - None, - AlwaysSupportsParachains, - spawner, - ).unwrap(); - let overseer_fut = overseer.run().fuse(); - let timer_stream = timer_stream; - - pin_mut!(timer_stream); - pin_mut!(overseer_fut); - - loop { - select! { - _ = overseer_fut => break, - _ = timer_stream.next() => { - tracing::info!("tick"); - } - complete => break, - } - } - }); -} diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs deleted file mode 100644 index 7e6f831dd70a..000000000000 --- a/node/overseer/src/lib.rs +++ /dev/null @@ -1,2241 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! # Overseer -//! -//! `overseer` implements the Overseer architecture described in the -//! [implementers-guide](https://w3f.github.io/parachain-implementers-guide/node/index.html). -//! For the motivations behind implementing the overseer itself you should -//! check out that guide, documentation in this crate will be mostly discussing -//! technical stuff. -//! -//! An `Overseer` is something that allows spawning/stopping and overseing -//! asynchronous tasks as well as establishing a well-defined and easy to use -//! protocol that the tasks can use to communicate with each other. It is desired -//! that this protocol is the only way tasks communicate with each other, however -//! at this moment there are no foolproof guards against other ways of communication. -//! -//! The `Overseer` is instantiated with a pre-defined set of `Subsystems` that -//! share the same behavior from `Overseer`'s point of view. -//! -//! ```text -//! +-----------------------------+ -//! | Overseer | -//! +-----------------------------+ -//! -//! ................| Overseer "holds" these and uses |.............. -//! . them to (re)start things . -//! . . -//! . +-------------------+ +---------------------+ . -//! . | Subsystem1 | | Subsystem2 | . -//! . +-------------------+ +---------------------+ . -//! . | | . -//! .................................................................. -//! | | -//! start() start() -//! V V -//! ..................| Overseer "runs" these |....................... -//! . +--------------------+ +---------------------+ . -//! . | SubsystemInstance1 | | SubsystemInstance2 | . -//! . +--------------------+ +---------------------+ . -//! .................................................................. -//! ``` - -// #![deny(unused_results)] -// unused dependencies can not work for test and examples at the same time -// yielding false positives -#![warn(missing_docs)] - -use std::fmt::{self, Debug}; -use std::pin::Pin; -use std::sync::{atomic::{self, AtomicUsize}, Arc}; -use std::task::Poll; -use std::time::Duration; -use std::collections::{hash_map, HashMap}; - -use futures::channel::oneshot; -use futures::{ - poll, select, - future::BoxFuture, - stream::{self, FuturesUnordered, Fuse}, - Future, FutureExt, StreamExt, -}; -use futures_timer::Delay; -use lru::LruCache; - -use polkadot_primitives::v1::{Block, BlockId,BlockNumber, Hash, ParachainHost}; -use client::{BlockImportNotification, BlockchainEvents, FinalityNotification}; -use sp_api::{ApiExt, ProvideRuntimeApi}; - -use polkadot_subsystem::messages::{ - CandidateValidationMessage, CandidateBackingMessage, - ChainApiMessage, StatementDistributionMessage, - AvailabilityDistributionMessage, BitfieldSigningMessage, BitfieldDistributionMessage, - ProvisionerMessage, RuntimeApiMessage, - AvailabilityStoreMessage, NetworkBridgeMessage, AllMessages, CollationGenerationMessage, - CollatorProtocolMessage, AvailabilityRecoveryMessage, ApprovalDistributionMessage, - ApprovalVotingMessage, GossipSupportMessage, -}; -pub use polkadot_subsystem::{ - Subsystem, SubsystemContext, SubsystemSender, OverseerSignal, FromOverseer, SubsystemError, - SubsystemResult, SpawnedSubsystem, ActiveLeavesUpdate, ActivatedLeaf, DummySubsystem, jaeger, - LeafStatus, -}; -use polkadot_node_subsystem_util::{TimeoutExt, metrics::{self, prometheus}, metered, Metronome}; -use polkadot_node_primitives::SpawnNamed; -use polkadot_procmacro_overseer_subsystems_gen::AllSubsystemsGen; - -#[cfg(test)] -mod tests; - -// A capacity of bounded channels inside the overseer. -const CHANNEL_CAPACITY: usize = 1024; -// The capacity of signal channels to subsystems. -const SIGNAL_CHANNEL_CAPACITY: usize = 64; - -// A graceful `Overseer` teardown time delay. -const STOP_DELAY: u64 = 1; -// Target for logs. -const LOG_TARGET: &'static str = "parachain::overseer"; - -trait MapSubsystem { - type Output; - - fn map_subsystem(&self, sub: T) -> Self::Output; -} - -impl MapSubsystem for F where F: Fn(T) -> U { - type Output = U; - - fn map_subsystem(&self, sub: T) -> U { - (self)(sub) - } -} - -/// Whether a header supports parachain consensus or not. -pub trait HeadSupportsParachains { - /// Return true if the given header supports parachain consensus. Otherwise, false. - fn head_supports_parachains(&self, head: &Hash) -> bool; -} - -impl HeadSupportsParachains for Arc where - Client: ProvideRuntimeApi, - Client::Api: ParachainHost, -{ - fn head_supports_parachains(&self, head: &Hash) -> bool { - let id = BlockId::Hash(*head); - self.runtime_api().has_api::>(&id).unwrap_or(false) - } -} - -/// This struct is passed as an argument to create a new instance of an [`Overseer`]. -/// -/// As any entity that satisfies the interface may act as a [`Subsystem`] this allows -/// mocking in the test code: -/// -/// Each [`Subsystem`] is supposed to implement some interface that is generic over -/// message type that is specific to this [`Subsystem`]. At the moment not all -/// subsystems are implemented and the rest can be mocked with the [`DummySubsystem`]. -#[derive(Debug, Clone, AllSubsystemsGen)] -pub struct AllSubsystems< - CV = (), CB = (), SD = (), AD = (), AR = (), BS = (), BD = (), P = (), - RA = (), AS = (), NB = (), CA = (), CG = (), CP = (), ApD = (), ApV = (), - GS = (), -> { - /// A candidate validation subsystem. - pub candidate_validation: CV, - /// A candidate backing subsystem. - pub candidate_backing: CB, - /// A statement distribution subsystem. - pub statement_distribution: SD, - /// An availability distribution subsystem. - pub availability_distribution: AD, - /// An availability recovery subsystem. - pub availability_recovery: AR, - /// A bitfield signing subsystem. - pub bitfield_signing: BS, - /// A bitfield distribution subsystem. - pub bitfield_distribution: BD, - /// A provisioner subsystem. - pub provisioner: P, - /// A runtime API subsystem. - pub runtime_api: RA, - /// An availability store subsystem. - pub availability_store: AS, - /// A network bridge subsystem. - pub network_bridge: NB, - /// A Chain API subsystem. - pub chain_api: CA, - /// A Collation Generation subsystem. - pub collation_generation: CG, - /// A Collator Protocol subsystem. - pub collator_protocol: CP, - /// An Approval Distribution subsystem. - pub approval_distribution: ApD, - /// An Approval Voting subsystem. - pub approval_voting: ApV, - /// A Connection Request Issuer subsystem. - pub gossip_support: GS, -} - -impl - AllSubsystems -{ - /// Create a new instance of [`AllSubsystems`]. - /// - /// Each subsystem is set to [`DummySystem`]. - /// - ///# Note - /// - /// Because of a bug in rustc it is required that when calling this function, - /// you provide a "random" type for the first generic parameter: - /// - /// ``` - /// polkadot_overseer::AllSubsystems::<()>::dummy(); - /// ``` - pub fn dummy() -> AllSubsystems< - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - > { - AllSubsystems { - candidate_validation: DummySubsystem, - candidate_backing: DummySubsystem, - statement_distribution: DummySubsystem, - availability_distribution: DummySubsystem, - availability_recovery: DummySubsystem, - bitfield_signing: DummySubsystem, - bitfield_distribution: DummySubsystem, - provisioner: DummySubsystem, - runtime_api: DummySubsystem, - availability_store: DummySubsystem, - network_bridge: DummySubsystem, - chain_api: DummySubsystem, - collation_generation: DummySubsystem, - collator_protocol: DummySubsystem, - approval_distribution: DummySubsystem, - approval_voting: DummySubsystem, - gossip_support: DummySubsystem, - } - } - - fn as_ref(&self) -> AllSubsystems<&'_ CV, &'_ CB, &'_ SD, &'_ AD, &'_ AR, &'_ BS, &'_ BD, &'_ P, &'_ RA, &'_ AS, &'_ NB, &'_ CA, &'_ CG, &'_ CP, &'_ ApD, &'_ ApV, &'_ GS> { - AllSubsystems { - candidate_validation: &self.candidate_validation, - candidate_backing: &self.candidate_backing, - statement_distribution: &self.statement_distribution, - availability_distribution: &self.availability_distribution, - availability_recovery: &self.availability_recovery, - bitfield_signing: &self.bitfield_signing, - bitfield_distribution: &self.bitfield_distribution, - provisioner: &self.provisioner, - runtime_api: &self.runtime_api, - availability_store: &self.availability_store, - network_bridge: &self.network_bridge, - chain_api: &self.chain_api, - collation_generation: &self.collation_generation, - collator_protocol: &self.collator_protocol, - approval_distribution: &self.approval_distribution, - approval_voting: &self.approval_voting, - gossip_support: &self.gossip_support, - } - } - - fn map_subsystems(self, m: M) - -> AllSubsystems< - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - > - where - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem

, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - M: MapSubsystem, - { - AllSubsystems { - candidate_validation: m.map_subsystem(self.candidate_validation), - candidate_backing: m.map_subsystem(self.candidate_backing), - statement_distribution: m.map_subsystem(self.statement_distribution), - availability_distribution: m.map_subsystem(self.availability_distribution), - availability_recovery: m.map_subsystem(self.availability_recovery), - bitfield_signing: m.map_subsystem(self.bitfield_signing), - bitfield_distribution: m.map_subsystem(self.bitfield_distribution), - provisioner: m.map_subsystem(self.provisioner), - runtime_api: m.map_subsystem(self.runtime_api), - availability_store: m.map_subsystem(self.availability_store), - network_bridge: m.map_subsystem(self.network_bridge), - chain_api: m.map_subsystem(self.chain_api), - collation_generation: m.map_subsystem(self.collation_generation), - collator_protocol: m.map_subsystem(self.collator_protocol), - approval_distribution: m.map_subsystem(self.approval_distribution), - approval_voting: m.map_subsystem(self.approval_voting), - gossip_support: m.map_subsystem(self.gossip_support), - } - } -} - -type AllSubsystemsSame = AllSubsystems< - T, T, T, T, T, - T, T, T, T, T, - T, T, T, T, T, - T, T, ->; - -/// A type of messages that are sent from [`Subsystem`] to [`Overseer`]. -/// -/// It wraps a system-wide [`AllMessages`] type that represents all possible -/// messages in the system. -/// -/// [`AllMessages`]: enum.AllMessages.html -/// [`Subsystem`]: trait.Subsystem.html -/// [`Overseer`]: struct.Overseer.html -enum ToOverseer { - /// A message that wraps something the `Subsystem` is desiring to - /// spawn on the overseer and a `oneshot::Sender` to signal the result - /// of the spawn. - SpawnJob { - name: &'static str, - s: BoxFuture<'static, ()>, - }, - - /// Same as `SpawnJob` but for blocking tasks to be executed on a - /// dedicated thread pool. - SpawnBlockingJob { - name: &'static str, - s: BoxFuture<'static, ()>, - }, -} - -/// An event telling the `Overseer` on the particular block -/// that has been imported or finalized. -/// -/// This structure exists solely for the purposes of decoupling -/// `Overseer` code from the client code and the necessity to call -/// `HeaderBackend::block_number_from_id()`. -#[derive(Debug, Clone)] -pub struct BlockInfo { - /// hash of the block. - pub hash: Hash, - /// hash of the parent block. - pub parent_hash: Hash, - /// block's number. - pub number: BlockNumber, -} - -impl From> for BlockInfo { - fn from(n: BlockImportNotification) -> Self { - BlockInfo { - hash: n.hash, - parent_hash: n.header.parent_hash, - number: n.header.number, - } - } -} - -impl From> for BlockInfo { - fn from(n: FinalityNotification) -> Self { - BlockInfo { - hash: n.hash, - parent_hash: n.header.parent_hash, - number: n.header.number, - } - } -} - -/// Some event from the outer world. -enum Event { - BlockImported(BlockInfo), - BlockFinalized(BlockInfo), - MsgToSubsystem(AllMessages), - ExternalRequest(ExternalRequest), - Stop, -} - -/// Some request from outer world. -enum ExternalRequest { - WaitForActivation { - hash: Hash, - response_channel: oneshot::Sender>, - }, -} - -/// A handler used to communicate with the [`Overseer`]. -/// -/// [`Overseer`]: struct.Overseer.html -#[derive(Clone)] -pub struct OverseerHandler { - events_tx: Option>, -} - -impl OverseerHandler { - /// Create a disconnected overseer handler. - pub fn disconnected() -> Self { - OverseerHandler { - events_tx: None, - } - } - - /// Whether the overseer handler is connected to an overseer. - pub fn is_connected(&self) -> bool { - self.events_tx.is_some() - } - - /// Whether the handler is disconnected. - pub fn is_disconnected(&self) -> bool { - self.events_tx.is_none() - } - - /// Using this handler, connect another handler to the same - /// overseer, if any. - pub fn connect_other(&self, other: &mut OverseerHandler) { - other.events_tx = self.events_tx.clone(); - } - - /// Inform the `Overseer` that that some block was imported. - pub async fn block_imported(&mut self, block: BlockInfo) { - self.send_and_log_error(Event::BlockImported(block)).await - } - - /// Send some message to one of the `Subsystem`s. - pub async fn send_msg(&mut self, msg: impl Into) { - self.send_and_log_error(Event::MsgToSubsystem(msg.into())).await - } - - /// Inform the `Overseer` that some block was finalized. - pub async fn block_finalized(&mut self, block: BlockInfo) { - self.send_and_log_error(Event::BlockFinalized(block)).await - } - - /// Wait for a block with the given hash to be in the active-leaves set. - /// - /// The response channel responds if the hash was activated and is closed if the hash was deactivated. - /// Note that due the fact the overseer doesn't store the whole active-leaves set, only deltas, - /// the response channel may never return if the hash was deactivated before this call. - /// In this case, it's the caller's responsibility to ensure a timeout is set. - pub async fn wait_for_activation(&mut self, hash: Hash, response_channel: oneshot::Sender>) { - self.send_and_log_error(Event::ExternalRequest(ExternalRequest::WaitForActivation { - hash, - response_channel - })).await - } - - /// Tell `Overseer` to shutdown. - pub async fn stop(&mut self) { - self.send_and_log_error(Event::Stop).await - } - - async fn send_and_log_error(&mut self, event: Event) { - if let Some(ref mut events_tx) = self.events_tx { - if events_tx.send(event).await.is_err() { - tracing::info!(target: LOG_TARGET, "Failed to send an event to Overseer"); - } - } - } -} - -/// Glues together the [`Overseer`] and `BlockchainEvents` by forwarding -/// import and finality notifications into the [`OverseerHandler`]. -/// -/// [`Overseer`]: struct.Overseer.html -/// [`OverseerHandler`]: struct.OverseerHandler.html -pub async fn forward_events>( - client: Arc

, - mut handler: OverseerHandler, -) { - let mut finality = client.finality_notification_stream(); - let mut imports = client.import_notification_stream(); - - loop { - select! { - f = finality.next() => { - match f { - Some(block) => { - handler.block_finalized(block.into()).await; - } - None => break, - } - }, - i = imports.next() => { - match i { - Some(block) => { - handler.block_imported(block.into()).await; - } - None => break, - } - }, - complete => break, - } - } -} - -impl Debug for ToOverseer { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - ToOverseer::SpawnJob { .. } => write!(f, "OverseerMessage::Spawn(..)"), - ToOverseer::SpawnBlockingJob { .. } => write!(f, "OverseerMessage::SpawnBlocking(..)") - } - } -} - -/// A running instance of some [`Subsystem`]. -/// -/// [`Subsystem`]: trait.Subsystem.html -struct SubsystemInstance { - tx_signal: metered::MeteredSender, - tx_bounded: metered::MeteredSender>, - meters: SubsystemMeters, - signals_received: usize, - name: &'static str, -} - -#[derive(Debug)] -struct MessagePacket { - signals_received: usize, - message: T, -} - -fn make_packet(signals_received: usize, message: T) -> MessagePacket { - MessagePacket { - signals_received, - message, - } -} - -// The channels held by every subsystem to communicate with every other subsystem. -#[derive(Debug, Clone)] -struct ChannelsOut { - candidate_validation: metered::MeteredSender>, - candidate_backing: metered::MeteredSender>, - statement_distribution: metered::MeteredSender>, - availability_distribution: metered::MeteredSender>, - availability_recovery: metered::MeteredSender>, - bitfield_signing: metered::MeteredSender>, - bitfield_distribution: metered::MeteredSender>, - provisioner: metered::MeteredSender>, - runtime_api: metered::MeteredSender>, - availability_store: metered::MeteredSender>, - network_bridge: metered::MeteredSender>, - chain_api: metered::MeteredSender>, - collation_generation: metered::MeteredSender>, - collator_protocol: metered::MeteredSender>, - approval_distribution: metered::MeteredSender>, - approval_voting: metered::MeteredSender>, - gossip_support: metered::MeteredSender>, - - candidate_validation_unbounded: metered::UnboundedMeteredSender>, - candidate_backing_unbounded: metered::UnboundedMeteredSender>, - statement_distribution_unbounded: metered::UnboundedMeteredSender>, - availability_distribution_unbounded: metered::UnboundedMeteredSender>, - availability_recovery_unbounded: metered::UnboundedMeteredSender>, - bitfield_signing_unbounded: metered::UnboundedMeteredSender>, - bitfield_distribution_unbounded: metered::UnboundedMeteredSender>, - provisioner_unbounded: metered::UnboundedMeteredSender>, - runtime_api_unbounded: metered::UnboundedMeteredSender>, - availability_store_unbounded: metered::UnboundedMeteredSender>, - network_bridge_unbounded: metered::UnboundedMeteredSender>, - chain_api_unbounded: metered::UnboundedMeteredSender>, - collation_generation_unbounded: metered::UnboundedMeteredSender>, - collator_protocol_unbounded: metered::UnboundedMeteredSender>, - approval_distribution_unbounded: metered::UnboundedMeteredSender>, - approval_voting_unbounded: metered::UnboundedMeteredSender>, - gossip_support_unbounded: metered::UnboundedMeteredSender>, -} - -impl ChannelsOut { - async fn send_and_log_error( - &mut self, - signals_received: usize, - message: AllMessages, - ) { - let res = match message { - AllMessages::CandidateValidation(msg) => { - self.candidate_validation.send(make_packet(signals_received, msg)).await - }, - AllMessages::CandidateBacking(msg) => { - self.candidate_backing.send(make_packet(signals_received, msg)).await - }, - AllMessages::StatementDistribution(msg) => { - self.statement_distribution.send(make_packet(signals_received, msg)).await - }, - AllMessages::AvailabilityDistribution(msg) => { - self.availability_distribution.send(make_packet(signals_received, msg)).await - }, - AllMessages::AvailabilityRecovery(msg) => { - self.availability_recovery.send(make_packet(signals_received, msg)).await - }, - AllMessages::BitfieldDistribution(msg) => { - self.bitfield_distribution.send(make_packet(signals_received, msg)).await - }, - AllMessages::BitfieldSigning(msg) => { - self.bitfield_signing.send(make_packet(signals_received, msg)).await - }, - AllMessages::Provisioner(msg) => { - self.provisioner.send(make_packet(signals_received, msg)).await - }, - AllMessages::RuntimeApi(msg) => { - self.runtime_api.send(make_packet(signals_received, msg)).await - }, - AllMessages::AvailabilityStore(msg) => { - self.availability_store.send(make_packet(signals_received, msg)).await - }, - AllMessages::NetworkBridge(msg) => { - self.network_bridge.send(make_packet(signals_received, msg)).await - }, - AllMessages::ChainApi(msg) => { - self.chain_api.send(make_packet(signals_received, msg)).await - }, - AllMessages::CollationGeneration(msg) => { - self.collation_generation.send(make_packet(signals_received, msg)).await - }, - AllMessages::CollatorProtocol(msg) => { - self.collator_protocol.send(make_packet(signals_received, msg)).await - }, - AllMessages::ApprovalDistribution(msg) => { - self.approval_distribution.send(make_packet(signals_received, msg)).await - }, - AllMessages::ApprovalVoting(msg) => { - self.approval_voting.send(make_packet(signals_received, msg)).await - }, - AllMessages::GossipSupport(msg) => { - self.gossip_support.send(make_packet(signals_received, msg)).await - }, - AllMessages::DisputeCoordinator(_) => Ok(()), - AllMessages::DisputeParticipation(_) => Ok(()), - AllMessages::ChainSelection(_) => Ok(()), - }; - - if res.is_err() { - tracing::debug!( - target: LOG_TARGET, - "Failed to send a message to another subsystem", - ); - } - } - - - fn send_unbounded_and_log_error( - &self, - signals_received: usize, - message: AllMessages, - ) { - let res = match message { - AllMessages::CandidateValidation(msg) => { - self.candidate_validation_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::CandidateBacking(msg) => { - self.candidate_backing_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::StatementDistribution(msg) => { - self.statement_distribution_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::AvailabilityDistribution(msg) => { - self.availability_distribution_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::AvailabilityRecovery(msg) => { - self.availability_recovery_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::BitfieldDistribution(msg) => { - self.bitfield_distribution_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::BitfieldSigning(msg) => { - self.bitfield_signing_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::Provisioner(msg) => { - self.provisioner_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::RuntimeApi(msg) => { - self.runtime_api_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::AvailabilityStore(msg) => { - self.availability_store_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::NetworkBridge(msg) => { - self.network_bridge_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::ChainApi(msg) => { - self.chain_api_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::CollationGeneration(msg) => { - self.collation_generation_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::CollatorProtocol(msg) => { - self.collator_protocol_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::ApprovalDistribution(msg) => { - self.approval_distribution_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::ApprovalVoting(msg) => { - self.approval_voting_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::GossipSupport(msg) => { - self.gossip_support_unbounded - .unbounded_send(make_packet(signals_received, msg)) - .map_err(|e| e.into_send_error()) - }, - AllMessages::DisputeCoordinator(_) => Ok(()), - AllMessages::DisputeParticipation(_) => Ok(()), - AllMessages::ChainSelection(_) => Ok(()), - }; - - if res.is_err() { - tracing::debug!( - target: LOG_TARGET, - "Failed to send a message to another subsystem", - ); - } - } -} - -type SubsystemIncomingMessages = stream::Select< - metered::MeteredReceiver>, - metered::UnboundedMeteredReceiver>, ->; - -#[derive(Debug, Default, Clone)] -struct SignalsReceived(Arc); - -impl SignalsReceived { - fn load(&self) -> usize { - self.0.load(atomic::Ordering::SeqCst) - } - - fn inc(&self) { - self.0.fetch_add(1, atomic::Ordering::SeqCst); - } -} - -/// A sender from subsystems to other subsystems. -#[derive(Debug, Clone)] -pub struct OverseerSubsystemSender { - channels: ChannelsOut, - signals_received: SignalsReceived, -} - -#[async_trait::async_trait] -impl SubsystemSender for OverseerSubsystemSender { - async fn send_message(&mut self, msg: AllMessages) { - self.channels.send_and_log_error(self.signals_received.load(), msg).await; - } - - async fn send_messages(&mut self, msgs: T) - where T: IntoIterator + Send, T::IntoIter: Send - { - // This can definitely be optimized if necessary. - for msg in msgs { - self.send_message(msg).await; - } - } - - fn send_unbounded_message(&mut self, msg: AllMessages) { - self.channels.send_unbounded_and_log_error(self.signals_received.load(), msg); - } -} - -/// A context type that is given to the [`Subsystem`] upon spawning. -/// It can be used by [`Subsystem`] to communicate with other [`Subsystem`]s -/// or to spawn it's [`SubsystemJob`]s. -/// -/// [`Overseer`]: struct.Overseer.html -/// [`Subsystem`]: trait.Subsystem.html -/// [`SubsystemJob`]: trait.SubsystemJob.html -#[derive(Debug)] -pub struct OverseerSubsystemContext{ - signals: metered::MeteredReceiver, - messages: SubsystemIncomingMessages, - to_subsystems: OverseerSubsystemSender, - to_overseer: metered::UnboundedMeteredSender, - signals_received: SignalsReceived, - pending_incoming: Option<(usize, M)>, - metrics: Metrics, -} - -impl OverseerSubsystemContext { - /// Create a new `OverseerSubsystemContext`. - fn new( - signals: metered::MeteredReceiver, - messages: SubsystemIncomingMessages, - to_subsystems: ChannelsOut, - to_overseer: metered::UnboundedMeteredSender, - metrics: Metrics, - ) -> Self { - let signals_received = SignalsReceived::default(); - OverseerSubsystemContext { - signals, - messages, - to_subsystems: OverseerSubsystemSender { - channels: to_subsystems, - signals_received: signals_received.clone(), - }, - to_overseer, - signals_received, - pending_incoming: None, - metrics, - } - } - - /// Create a new `OverseerSubsystemContext` with no metering. - /// - /// Intended for tests. - #[allow(unused)] - fn new_unmetered( - signals: metered::MeteredReceiver, - messages: SubsystemIncomingMessages, - to_subsystems: ChannelsOut, - to_overseer: metered::UnboundedMeteredSender, - ) -> Self { - let metrics = Metrics::default(); - OverseerSubsystemContext::new(signals, messages, to_subsystems, to_overseer, metrics) - } -} - -#[async_trait::async_trait] -impl SubsystemContext for OverseerSubsystemContext { - type Message = M; - type Sender = OverseerSubsystemSender; - - async fn try_recv(&mut self) -> Result>, ()> { - match poll!(self.recv()) { - Poll::Ready(msg) => Ok(Some(msg.map_err(|_| ())?)), - Poll::Pending => Ok(None), - } - } - - async fn recv(&mut self) -> SubsystemResult> { - loop { - // If we have a message pending an overseer signal, we only poll for signals - // in the meantime. - if let Some((needs_signals_received, msg)) = self.pending_incoming.take() { - if needs_signals_received <= self.signals_received.load() { - return Ok(FromOverseer::Communication { msg }); - } else { - self.pending_incoming = Some((needs_signals_received, msg)); - - // wait for next signal. - let signal = self.signals.next().await - .ok_or(SubsystemError::Context( - "Signal channel is terminated and empty." - .to_owned() - ))?; - - self.signals_received.inc(); - return Ok(FromOverseer::Signal(signal)) - } - } - - let mut await_message = self.messages.next().fuse(); - let mut await_signal = self.signals.next().fuse(); - let signals_received = self.signals_received.load(); - let pending_incoming = &mut self.pending_incoming; - - // Otherwise, wait for the next signal or incoming message. - let from_overseer = futures::select_biased! { - signal = await_signal => { - let signal = signal - .ok_or(SubsystemError::Context( - "Signal channel is terminated and empty." - .to_owned() - ))?; - - FromOverseer::Signal(signal) - } - msg = await_message => { - let packet = msg - .ok_or(SubsystemError::Context( - "Message channel is terminated and empty." - .to_owned() - ))?; - - if packet.signals_received > signals_received { - // wait until we've received enough signals to return this message. - *pending_incoming = Some((packet.signals_received, packet.message)); - continue; - } else { - // we know enough to return this message. - FromOverseer::Communication { msg: packet.message} - } - } - }; - - if let FromOverseer::Signal(_) = from_overseer { - self.signals_received.inc(); - } - - return Ok(from_overseer); - } - } - - fn spawn(&mut self, name: &'static str, s: Pin + Send>>) - -> SubsystemResult<()> - { - self.to_overseer.unbounded_send(ToOverseer::SpawnJob { - name, - s, - }).map_err(|_| SubsystemError::TaskSpawn(name)) - } - - fn spawn_blocking(&mut self, name: &'static str, s: Pin + Send>>) - -> SubsystemResult<()> - { - self.to_overseer.unbounded_send(ToOverseer::SpawnBlockingJob { - name, - s, - }).map_err(|_| SubsystemError::TaskSpawn(name)) - } - - fn sender(&mut self) -> &mut OverseerSubsystemSender { - &mut self.to_subsystems - } -} - -/// A subsystem that we oversee. -/// -/// Ties together the [`Subsystem`] itself and it's running instance -/// (which may be missing if the [`Subsystem`] is not running at the moment -/// for whatever reason). -/// -/// [`Subsystem`]: trait.Subsystem.html -struct OverseenSubsystem { - instance: Option>, -} - -impl OverseenSubsystem { - /// Send a message to the wrapped subsystem. - /// - /// If the inner `instance` is `None`, nothing is happening. - async fn send_message(&mut self, msg: M) -> SubsystemResult<()> { - const MESSAGE_TIMEOUT: Duration = Duration::from_secs(10); - - if let Some(ref mut instance) = self.instance { - match instance.tx_bounded.send(MessagePacket { - signals_received: instance.signals_received, - message: msg.into() - }).timeout(MESSAGE_TIMEOUT).await - { - None => { - tracing::error!(target: LOG_TARGET, "Subsystem {} appears unresponsive.", instance.name); - Err(SubsystemError::SubsystemStalled(instance.name)) - } - Some(res) => res.map_err(Into::into), - } - } else { - Ok(()) - } - } - - /// Send a signal to the wrapped subsystem. - /// - /// If the inner `instance` is `None`, nothing is happening. - async fn send_signal(&mut self, signal: OverseerSignal) -> SubsystemResult<()> { - const SIGNAL_TIMEOUT: Duration = Duration::from_secs(10); - - if let Some(ref mut instance) = self.instance { - match instance.tx_signal.send(signal).timeout(SIGNAL_TIMEOUT).await { - None => { - tracing::error!(target: LOG_TARGET, "Subsystem {} appears unresponsive.", instance.name); - Err(SubsystemError::SubsystemStalled(instance.name)) - } - Some(res) => { - let res = res.map_err(Into::into); - if res.is_ok() { - instance.signals_received += 1; - } - res - } - } - } else { - Ok(()) - } - } -} - -#[derive(Clone)] -struct SubsystemMeters { - bounded: metered::Meter, - unbounded: metered::Meter, - signals: metered::Meter, -} - -impl SubsystemMeters { - fn read(&self) -> SubsystemMeterReadouts { - SubsystemMeterReadouts { - bounded: self.bounded.read(), - unbounded: self.unbounded.read(), - signals: self.signals.read(), - } - } -} - -struct SubsystemMeterReadouts { - bounded: metered::Readout, - unbounded: metered::Readout, - signals: metered::Readout, -} - - -/// Store 2 days worth of blocks, not accounting for forks, -/// in the LRU cache. Assumes a 6-second block time. -const KNOWN_LEAVES_CACHE_SIZE: usize = 2 * 24 * 3600 / 6; - -/// The `Overseer` itself. -pub struct Overseer { - /// Handles to all subsystems. - subsystems: AllSubsystems< - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - OverseenSubsystem, - >, - - /// Spawner to spawn tasks to. - s: S, - - /// Here we keep handles to spawned subsystems to be notified when they terminate. - running_subsystems: FuturesUnordered>>, - - /// Gather running subsystems' outbound streams into one. - to_overseer_rx: Fuse>, - - /// Events that are sent to the overseer from the outside world - events_rx: metered::MeteredReceiver, - - /// External listeners waiting for a hash to be in the active-leave set. - activation_external_listeners: HashMap>>>, - - /// Stores the [`jaeger::Span`] per active leaf. - span_per_active_leaf: HashMap>, - - /// A set of leaves that `Overseer` starts working with. - /// - /// Drained at the beginning of `run` and never used again. - leaves: Vec<(Hash, BlockNumber)>, - - /// The set of the "active leaves". - active_leaves: HashMap, - - /// An implementation for checking whether a header supports parachain consensus. - supports_parachains: SupportsParachains, - - /// An LRU cache for keeping track of relay-chain heads that have already been seen. - known_leaves: LruCache, - - /// Various Prometheus metrics. - metrics: Metrics, -} - -/// Overseer Prometheus metrics. -#[derive(Clone)] -struct MetricsInner { - activated_heads_total: prometheus::Counter, - deactivated_heads_total: prometheus::Counter, - messages_relayed_total: prometheus::Counter, - to_subsystem_bounded_sent: prometheus::GaugeVec, - to_subsystem_bounded_received: prometheus::GaugeVec, - to_subsystem_unbounded_sent: prometheus::GaugeVec, - to_subsystem_unbounded_received: prometheus::GaugeVec, - signals_sent: prometheus::GaugeVec, - signals_received: prometheus::GaugeVec, -} - -#[derive(Default, Clone)] -struct Metrics(Option); - -impl Metrics { - fn on_head_activated(&self) { - if let Some(metrics) = &self.0 { - metrics.activated_heads_total.inc(); - } - } - - fn on_head_deactivated(&self) { - if let Some(metrics) = &self.0 { - metrics.deactivated_heads_total.inc(); - } - } - - fn on_message_relayed(&self) { - if let Some(metrics) = &self.0 { - metrics.messages_relayed_total.inc(); - } - } - - fn channel_fill_level_snapshot( - &self, - to_subsystem: AllSubsystemsSame<(&'static str, SubsystemMeterReadouts)>, - ) { - self.0.as_ref().map(|metrics| { - to_subsystem.map_subsystems( - |(name, readouts): (_, SubsystemMeterReadouts)| { - metrics.to_subsystem_bounded_sent.with_label_values(&[name]) - .set(readouts.bounded.sent as u64); - - metrics.to_subsystem_bounded_received.with_label_values(&[name]) - .set(readouts.bounded.received as u64); - - metrics.to_subsystem_unbounded_sent.with_label_values(&[name]) - .set(readouts.unbounded.sent as u64); - - metrics.to_subsystem_unbounded_received.with_label_values(&[name]) - .set(readouts.unbounded.received as u64); - - metrics.signals_sent.with_label_values(&[name]) - .set(readouts.signals.sent as u64); - - metrics.signals_received.with_label_values(&[name]) - .set(readouts.signals.received as u64); - }); - }); - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - activated_heads_total: prometheus::register( - prometheus::Counter::new( - "parachain_activated_heads_total", - "Number of activated heads." - )?, - registry, - )?, - deactivated_heads_total: prometheus::register( - prometheus::Counter::new( - "parachain_deactivated_heads_total", - "Number of deactivated heads." - )?, - registry, - )?, - messages_relayed_total: prometheus::register( - prometheus::Counter::new( - "parachain_messages_relayed_total", - "Number of messages relayed by Overseer." - )?, - registry, - )?, - to_subsystem_bounded_sent: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_subsystem_bounded_sent", - "Number of elements sent to subsystems' bounded queues", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - to_subsystem_bounded_received: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_subsystem_bounded_received", - "Number of elements received by subsystems' bounded queues", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - to_subsystem_unbounded_sent: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_subsystem_unbounded_sent", - "Number of elements sent to subsystems' unbounded queues", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - to_subsystem_unbounded_received: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_subsystem_unbounded_received", - "Number of elements received by subsystems' unbounded queues", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - signals_sent: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_overseer_signals_sent", - "Number of signals sent by overseer to subsystems", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - signals_received: prometheus::register( - prometheus::GaugeVec::::new( - prometheus::Opts::new( - "parachain_overseer_signals_received", - "Number of signals received by subsystems from overseer", - ), - &[ - "subsystem_name", - ], - )?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} - -impl fmt::Debug for Metrics { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("Metrics {{...}}") - } -} - -impl Overseer -where - S: SpawnNamed, - SupportsParachains: HeadSupportsParachains, -{ - /// Create a new instance of the [`Overseer`] with a fixed set of [`Subsystem`]s. - /// - /// This returns the overseer along with an [`OverseerHandler`] which can - /// be used to send messages from external parts of the codebase. - /// - /// The [`OverseerHandler`] returned from this function is connected to - /// the returned [`Overseer`]. - /// - /// ```text - /// +------------------------------------+ - /// | Overseer | - /// +------------------------------------+ - /// / | | \ - /// ................. subsystems................................... - /// . +-----------+ +-----------+ +----------+ +---------+ . - /// . | | | | | | | | . - /// . +-----------+ +-----------+ +----------+ +---------+ . - /// ............................................................... - /// | - /// probably `spawn` - /// a `job` - /// | - /// V - /// +-----------+ - /// | | - /// +-----------+ - /// - /// ``` - /// - /// [`Subsystem`]: trait.Subsystem.html - /// - /// # Example - /// - /// The [`Subsystems`] may be any type as long as they implement an expected interface. - /// Here, we create a mock validation subsystem and a few dummy ones and start the `Overseer` with them. - /// For the sake of simplicity the termination of the example is done with a timeout. - /// ``` - /// # use std::time::Duration; - /// # use futures::{executor, pin_mut, select, FutureExt}; - /// # use futures_timer::Delay; - /// # use polkadot_overseer::{Overseer, HeadSupportsParachains, AllSubsystems}; - /// # use polkadot_primitives::v1::Hash; - /// # use polkadot_subsystem::{ - /// # Subsystem, DummySubsystem, SpawnedSubsystem, SubsystemContext, - /// # messages::CandidateValidationMessage, - /// # }; - /// - /// struct ValidationSubsystem; - /// - /// impl Subsystem for ValidationSubsystem - /// where C: SubsystemContext - /// { - /// fn start( - /// self, - /// mut ctx: C, - /// ) -> SpawnedSubsystem { - /// SpawnedSubsystem { - /// name: "validation-subsystem", - /// future: Box::pin(async move { - /// loop { - /// Delay::new(Duration::from_secs(1)).await; - /// } - /// }), - /// } - /// } - /// } - /// - /// # fn main() { executor::block_on(async move { - /// - /// struct AlwaysSupportsParachains; - /// impl HeadSupportsParachains for AlwaysSupportsParachains { - /// fn head_supports_parachains(&self, _head: &Hash) -> bool { true } - /// } - /// let spawner = sp_core::testing::TaskExecutor::new(); - /// let all_subsystems = AllSubsystems::<()>::dummy().replace_candidate_validation(ValidationSubsystem); - /// let (overseer, _handler) = Overseer::new( - /// vec![], - /// all_subsystems, - /// None, - /// AlwaysSupportsParachains, - /// spawner, - /// ).unwrap(); - /// - /// let timer = Delay::new(Duration::from_millis(50)).fuse(); - /// - /// let overseer_fut = overseer.run().fuse(); - /// pin_mut!(timer); - /// pin_mut!(overseer_fut); - /// - /// select! { - /// _ = overseer_fut => (), - /// _ = timer => (), - /// } - /// # - /// # }); } - /// ``` - pub fn new( - leaves: impl IntoIterator, - all_subsystems: AllSubsystems, - prometheus_registry: Option<&prometheus::Registry>, - supports_parachains: SupportsParachains, - mut s: S, - ) -> SubsystemResult<(Self, OverseerHandler)> - where - CV: Subsystem> + Send, - CB: Subsystem> + Send, - SD: Subsystem> + Send, - AD: Subsystem> + Send, - AR: Subsystem> + Send, - BS: Subsystem> + Send, - BD: Subsystem> + Send, - P: Subsystem> + Send, - RA: Subsystem> + Send, - AS: Subsystem> + Send, - NB: Subsystem> + Send, - CA: Subsystem> + Send, - CG: Subsystem> + Send, - CP: Subsystem> + Send, - ApD: Subsystem> + Send, - ApV: Subsystem> + Send, - GS: Subsystem> + Send, - { - let (events_tx, events_rx) = metered::channel(CHANNEL_CAPACITY); - - let handler = OverseerHandler { - events_tx: Some(events_tx.clone()), - }; - - let metrics = ::register(prometheus_registry)?; - - let (to_overseer_tx, to_overseer_rx) = metered::unbounded(); - - let mut running_subsystems = FuturesUnordered::new(); - - let (candidate_validation_bounded_tx, candidate_validation_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (candidate_backing_bounded_tx, candidate_backing_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (statement_distribution_bounded_tx, statement_distribution_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (availability_distribution_bounded_tx, availability_distribution_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (availability_recovery_bounded_tx, availability_recovery_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (bitfield_signing_bounded_tx, bitfield_signing_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (bitfield_distribution_bounded_tx, bitfield_distribution_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (provisioner_bounded_tx, provisioner_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (runtime_api_bounded_tx, runtime_api_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (availability_store_bounded_tx, availability_store_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (network_bridge_bounded_tx, network_bridge_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (chain_api_bounded_tx, chain_api_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (collator_protocol_bounded_tx, collator_protocol_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (collation_generation_bounded_tx, collation_generation_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (approval_distribution_bounded_tx, approval_distribution_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (approval_voting_bounded_tx, approval_voting_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - let (gossip_support_bounded_tx, gossip_support_bounded_rx) - = metered::channel(CHANNEL_CAPACITY); - - let (candidate_validation_unbounded_tx, candidate_validation_unbounded_rx) - = metered::unbounded(); - let (candidate_backing_unbounded_tx, candidate_backing_unbounded_rx) - = metered::unbounded(); - let (statement_distribution_unbounded_tx, statement_distribution_unbounded_rx) - = metered::unbounded(); - let (availability_distribution_unbounded_tx, availability_distribution_unbounded_rx) - = metered::unbounded(); - let (availability_recovery_unbounded_tx, availability_recovery_unbounded_rx) - = metered::unbounded(); - let (bitfield_signing_unbounded_tx, bitfield_signing_unbounded_rx) - = metered::unbounded(); - let (bitfield_distribution_unbounded_tx, bitfield_distribution_unbounded_rx) - = metered::unbounded(); - let (provisioner_unbounded_tx, provisioner_unbounded_rx) - = metered::unbounded(); - let (runtime_api_unbounded_tx, runtime_api_unbounded_rx) - = metered::unbounded(); - let (availability_store_unbounded_tx, availability_store_unbounded_rx) - = metered::unbounded(); - let (network_bridge_unbounded_tx, network_bridge_unbounded_rx) - = metered::unbounded(); - let (chain_api_unbounded_tx, chain_api_unbounded_rx) - = metered::unbounded(); - let (collator_protocol_unbounded_tx, collator_protocol_unbounded_rx) - = metered::unbounded(); - let (collation_generation_unbounded_tx, collation_generation_unbounded_rx) - = metered::unbounded(); - let (approval_distribution_unbounded_tx, approval_distribution_unbounded_rx) - = metered::unbounded(); - let (approval_voting_unbounded_tx, approval_voting_unbounded_rx) - = metered::unbounded(); - let (gossip_support_unbounded_tx, gossip_support_unbounded_rx) - = metered::unbounded(); - - let channels_out = ChannelsOut { - candidate_validation: candidate_validation_bounded_tx.clone(), - candidate_backing: candidate_backing_bounded_tx.clone(), - statement_distribution: statement_distribution_bounded_tx.clone(), - availability_distribution: availability_distribution_bounded_tx.clone(), - availability_recovery: availability_recovery_bounded_tx.clone(), - bitfield_signing: bitfield_signing_bounded_tx.clone(), - bitfield_distribution: bitfield_distribution_bounded_tx.clone(), - provisioner: provisioner_bounded_tx.clone(), - runtime_api: runtime_api_bounded_tx.clone(), - availability_store: availability_store_bounded_tx.clone(), - network_bridge: network_bridge_bounded_tx.clone(), - chain_api: chain_api_bounded_tx.clone(), - collator_protocol: collator_protocol_bounded_tx.clone(), - collation_generation: collation_generation_bounded_tx.clone(), - approval_distribution: approval_distribution_bounded_tx.clone(), - approval_voting: approval_voting_bounded_tx.clone(), - gossip_support: gossip_support_bounded_tx.clone(), - - candidate_validation_unbounded: candidate_validation_unbounded_tx.clone(), - candidate_backing_unbounded: candidate_backing_unbounded_tx.clone(), - statement_distribution_unbounded: statement_distribution_unbounded_tx.clone(), - availability_distribution_unbounded: availability_distribution_unbounded_tx.clone(), - availability_recovery_unbounded: availability_recovery_unbounded_tx.clone(), - bitfield_signing_unbounded: bitfield_signing_unbounded_tx.clone(), - bitfield_distribution_unbounded: bitfield_distribution_unbounded_tx.clone(), - provisioner_unbounded: provisioner_unbounded_tx.clone(), - runtime_api_unbounded: runtime_api_unbounded_tx.clone(), - availability_store_unbounded: availability_store_unbounded_tx.clone(), - network_bridge_unbounded: network_bridge_unbounded_tx.clone(), - chain_api_unbounded: chain_api_unbounded_tx.clone(), - collator_protocol_unbounded: collator_protocol_unbounded_tx.clone(), - collation_generation_unbounded: collation_generation_unbounded_tx.clone(), - approval_distribution_unbounded: approval_distribution_unbounded_tx.clone(), - approval_voting_unbounded: approval_voting_unbounded_tx.clone(), - gossip_support_unbounded: gossip_support_unbounded_tx.clone(), - }; - - let candidate_validation_subsystem = spawn( - &mut s, - candidate_validation_bounded_tx, - stream::select(candidate_validation_bounded_rx, candidate_validation_unbounded_rx), - candidate_validation_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.candidate_validation, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let candidate_backing_subsystem = spawn( - &mut s, - candidate_backing_bounded_tx, - stream::select(candidate_backing_bounded_rx, candidate_backing_unbounded_rx), - candidate_backing_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.candidate_backing, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let statement_distribution_subsystem = spawn( - &mut s, - statement_distribution_bounded_tx, - stream::select(statement_distribution_bounded_rx, statement_distribution_unbounded_rx), - statement_distribution_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.statement_distribution, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let availability_distribution_subsystem = spawn( - &mut s, - availability_distribution_bounded_tx, - stream::select(availability_distribution_bounded_rx, availability_distribution_unbounded_rx), - availability_distribution_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.availability_distribution, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let availability_recovery_subsystem = spawn( - &mut s, - availability_recovery_bounded_tx, - stream::select(availability_recovery_bounded_rx, availability_recovery_unbounded_rx), - availability_recovery_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.availability_recovery, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let bitfield_signing_subsystem = spawn( - &mut s, - bitfield_signing_bounded_tx, - stream::select(bitfield_signing_bounded_rx, bitfield_signing_unbounded_rx), - bitfield_signing_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.bitfield_signing, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let bitfield_distribution_subsystem = spawn( - &mut s, - bitfield_distribution_bounded_tx, - stream::select(bitfield_distribution_bounded_rx, bitfield_distribution_unbounded_rx), - bitfield_distribution_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.bitfield_distribution, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let provisioner_subsystem = spawn( - &mut s, - provisioner_bounded_tx, - stream::select(provisioner_bounded_rx, provisioner_unbounded_rx), - provisioner_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.provisioner, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let runtime_api_subsystem = spawn( - &mut s, - runtime_api_bounded_tx, - stream::select(runtime_api_bounded_rx, runtime_api_unbounded_rx), - runtime_api_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.runtime_api, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let availability_store_subsystem = spawn( - &mut s, - availability_store_bounded_tx, - stream::select(availability_store_bounded_rx, availability_store_unbounded_rx), - availability_store_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.availability_store, - &metrics, - &mut running_subsystems, - TaskKind::Blocking, - )?; - - let network_bridge_subsystem = spawn( - &mut s, - network_bridge_bounded_tx, - stream::select(network_bridge_bounded_rx, network_bridge_unbounded_rx), - network_bridge_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.network_bridge, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let chain_api_subsystem = spawn( - &mut s, - chain_api_bounded_tx, - stream::select(chain_api_bounded_rx, chain_api_unbounded_rx), - chain_api_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.chain_api, - &metrics, - &mut running_subsystems, - TaskKind::Blocking, - )?; - - let collation_generation_subsystem = spawn( - &mut s, - collation_generation_bounded_tx, - stream::select(collation_generation_bounded_rx, collation_generation_unbounded_rx), - collation_generation_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.collation_generation, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let collator_protocol_subsystem = spawn( - &mut s, - collator_protocol_bounded_tx, - stream::select(collator_protocol_bounded_rx, collator_protocol_unbounded_rx), - collator_protocol_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.collator_protocol, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let approval_distribution_subsystem = spawn( - &mut s, - approval_distribution_bounded_tx, - stream::select(approval_distribution_bounded_rx, approval_distribution_unbounded_rx), - approval_distribution_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.approval_distribution, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let approval_voting_subsystem = spawn( - &mut s, - approval_voting_bounded_tx, - stream::select(approval_voting_bounded_rx, approval_voting_unbounded_rx), - approval_voting_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.approval_voting, - &metrics, - &mut running_subsystems, - TaskKind::Blocking, - )?; - - let gossip_support_subsystem = spawn( - &mut s, - gossip_support_bounded_tx, - stream::select(gossip_support_bounded_rx, gossip_support_unbounded_rx), - gossip_support_unbounded_tx.meter().clone(), - channels_out.clone(), - to_overseer_tx.clone(), - all_subsystems.gossip_support, - &metrics, - &mut running_subsystems, - TaskKind::Regular, - )?; - - let leaves = leaves - .into_iter() - .map(|BlockInfo { hash, parent_hash: _, number }| (hash, number)) - .collect(); - - let active_leaves = HashMap::new(); - let activation_external_listeners = HashMap::new(); - - let subsystems = AllSubsystems { - candidate_validation: candidate_validation_subsystem, - candidate_backing: candidate_backing_subsystem, - statement_distribution: statement_distribution_subsystem, - availability_distribution: availability_distribution_subsystem, - availability_recovery: availability_recovery_subsystem, - bitfield_signing: bitfield_signing_subsystem, - bitfield_distribution: bitfield_distribution_subsystem, - provisioner: provisioner_subsystem, - runtime_api: runtime_api_subsystem, - availability_store: availability_store_subsystem, - network_bridge: network_bridge_subsystem, - chain_api: chain_api_subsystem, - collation_generation: collation_generation_subsystem, - collator_protocol: collator_protocol_subsystem, - approval_distribution: approval_distribution_subsystem, - approval_voting: approval_voting_subsystem, - gossip_support: gossip_support_subsystem, - }; - - { - struct ExtractNameAndMeters; - impl<'a, T: 'a> MapSubsystem<&'a OverseenSubsystem> for ExtractNameAndMeters { - type Output = (&'static str, SubsystemMeters); - - fn map_subsystem(&self, subsystem: &'a OverseenSubsystem) -> Self::Output { - let instance = subsystem.instance.as_ref() - .expect("Extraction is done directly after spawning when subsystems\ - have not concluded; qed"); - - ( - instance.name, - instance.meters.clone(), - ) - } - } - - let subsystem_meters = subsystems.as_ref().map_subsystems(ExtractNameAndMeters); - let metronome_metrics = metrics.clone(); - let metronome = Metronome::new(std::time::Duration::from_millis(950)) - .for_each(move |_| { - let subsystem_meters = subsystem_meters.as_ref() - .map_subsystems(|&(name, ref meters): &(_, SubsystemMeters)| (name, meters.read())); - - // We combine the amount of messages from subsystems to the overseer - // as well as the amount of messages from external sources to the overseer - // into one to_overseer value. - metronome_metrics.channel_fill_level_snapshot(subsystem_meters); - - async move { - () - } - }); - s.spawn("metrics_metronome", Box::pin(metronome)); - } - - let this = Self { - subsystems, - s, - running_subsystems, - to_overseer_rx: to_overseer_rx.fuse(), - events_rx, - activation_external_listeners, - leaves, - active_leaves, - metrics, - span_per_active_leaf: Default::default(), - known_leaves: LruCache::new(KNOWN_LEAVES_CACHE_SIZE), - supports_parachains, - }; - - Ok((this, handler)) - } - - // Stop the overseer. - async fn stop(mut self) { - let _ = self.subsystems.candidate_validation.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.candidate_backing.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.statement_distribution.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.availability_distribution.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.availability_recovery.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.bitfield_signing.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.bitfield_distribution.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.provisioner.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.runtime_api.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.availability_store.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.network_bridge.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.chain_api.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.collator_protocol.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.collation_generation.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.approval_distribution.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.approval_voting.send_signal(OverseerSignal::Conclude).await; - let _ = self.subsystems.gossip_support.send_signal(OverseerSignal::Conclude).await; - - let mut stop_delay = Delay::new(Duration::from_secs(STOP_DELAY)).fuse(); - - loop { - select! { - _ = self.running_subsystems.next() => { - if self.running_subsystems.is_empty() { - break; - } - }, - _ = stop_delay => break, - complete => break, - } - } - } - - /// Run the `Overseer`. - pub async fn run(mut self) -> SubsystemResult<()> { - let mut update = ActiveLeavesUpdate::default(); - - for (hash, number) in std::mem::take(&mut self.leaves) { - let _ = self.active_leaves.insert(hash, number); - if let Some((span, status)) = self.on_head_activated(&hash, None) { - update.activated.push(ActivatedLeaf { - hash, - number, - status, - span, - }); - } - } - - if !update.is_empty() { - self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await?; - } - - loop { - select! { - msg = self.events_rx.next().fuse() => { - let msg = if let Some(msg) = msg { - msg - } else { - continue - }; - - match msg { - Event::MsgToSubsystem(msg) => { - self.route_message(msg.into()).await?; - } - Event::Stop => { - self.stop().await; - return Ok(()); - } - Event::BlockImported(block) => { - self.block_imported(block).await?; - } - Event::BlockFinalized(block) => { - self.block_finalized(block).await?; - } - Event::ExternalRequest(request) => { - self.handle_external_request(request); - } - } - }, - msg = self.to_overseer_rx.next() => { - let msg = match msg { - Some(m) => m, - None => { - // This is a fused stream so we will shut down after receiving all - // shutdown notifications. - continue - } - }; - - match msg { - ToOverseer::SpawnJob { name, s } => { - self.spawn_job(name, s); - } - ToOverseer::SpawnBlockingJob { name, s } => { - self.spawn_blocking_job(name, s); - } - } - }, - res = self.running_subsystems.next().fuse() => { - let finished = if let Some(finished) = res { - finished - } else { - continue - }; - - tracing::error!(target: LOG_TARGET, subsystem = ?finished, "subsystem finished unexpectedly"); - self.stop().await; - return finished; - }, - } - } - } - - async fn block_imported(&mut self, block: BlockInfo) -> SubsystemResult<()> { - match self.active_leaves.entry(block.hash) { - hash_map::Entry::Vacant(entry) => entry.insert(block.number), - hash_map::Entry::Occupied(entry) => { - debug_assert_eq!(*entry.get(), block.number); - return Ok(()); - } - }; - - let mut update = match self.on_head_activated(&block.hash, Some(block.parent_hash)) { - Some((span, status)) => ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: block.hash, - number: block.number, - status, - span - }), - None => ActiveLeavesUpdate::default(), - }; - - if let Some(number) = self.active_leaves.remove(&block.parent_hash) { - debug_assert_eq!(block.number.saturating_sub(1), number); - update.deactivated.push(block.parent_hash); - self.on_head_deactivated(&block.parent_hash); - } - - self.clean_up_external_listeners(); - - if !update.is_empty() { - self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await - } else { - Ok(()) - } - } - - async fn block_finalized(&mut self, block: BlockInfo) -> SubsystemResult<()> { - let mut update = ActiveLeavesUpdate::default(); - - self.active_leaves.retain(|h, n| { - if *n <= block.number { - update.deactivated.push(*h); - false - } else { - true - } - }); - - for deactivated in &update.deactivated { - self.on_head_deactivated(deactivated) - } - - self.broadcast_signal(OverseerSignal::BlockFinalized(block.hash, block.number)).await?; - - // If there are no leaves being deactivated, we don't need to send an update. - // - // Our peers will be informed about our finalized block the next time we activating/deactivating some leaf. - if !update.is_empty() { - self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await?; - } - - Ok(()) - } - - async fn broadcast_signal(&mut self, signal: OverseerSignal) -> SubsystemResult<()> { - self.subsystems.candidate_validation.send_signal(signal.clone()).await?; - self.subsystems.candidate_backing.send_signal(signal.clone()).await?; - self.subsystems.statement_distribution.send_signal(signal.clone()).await?; - self.subsystems.availability_distribution.send_signal(signal.clone()).await?; - self.subsystems.availability_recovery.send_signal(signal.clone()).await?; - self.subsystems.bitfield_signing.send_signal(signal.clone()).await?; - self.subsystems.bitfield_distribution.send_signal(signal.clone()).await?; - self.subsystems.provisioner.send_signal(signal.clone()).await?; - self.subsystems.runtime_api.send_signal(signal.clone()).await?; - self.subsystems.availability_store.send_signal(signal.clone()).await?; - self.subsystems.network_bridge.send_signal(signal.clone()).await?; - self.subsystems.chain_api.send_signal(signal.clone()).await?; - self.subsystems.collator_protocol.send_signal(signal.clone()).await?; - self.subsystems.collation_generation.send_signal(signal.clone()).await?; - self.subsystems.approval_distribution.send_signal(signal.clone()).await?; - self.subsystems.approval_voting.send_signal(signal.clone()).await?; - self.subsystems.gossip_support.send_signal(signal).await?; - - Ok(()) - } - - async fn route_message(&mut self, msg: AllMessages) -> SubsystemResult<()> { - self.metrics.on_message_relayed(); - match msg { - AllMessages::CandidateValidation(msg) => { - self.subsystems.candidate_validation.send_message(msg).await?; - }, - AllMessages::CandidateBacking(msg) => { - self.subsystems.candidate_backing.send_message(msg).await?; - }, - AllMessages::StatementDistribution(msg) => { - self.subsystems.statement_distribution.send_message(msg).await?; - }, - AllMessages::AvailabilityDistribution(msg) => { - self.subsystems.availability_distribution.send_message(msg).await?; - }, - AllMessages::AvailabilityRecovery(msg) => { - self.subsystems.availability_recovery.send_message(msg).await?; - }, - AllMessages::BitfieldDistribution(msg) => { - self.subsystems.bitfield_distribution.send_message(msg).await?; - }, - AllMessages::BitfieldSigning(msg) => { - self.subsystems.bitfield_signing.send_message(msg).await?; - }, - AllMessages::Provisioner(msg) => { - self.subsystems.provisioner.send_message(msg).await?; - }, - AllMessages::RuntimeApi(msg) => { - self.subsystems.runtime_api.send_message(msg).await?; - }, - AllMessages::AvailabilityStore(msg) => { - self.subsystems.availability_store.send_message(msg).await?; - }, - AllMessages::NetworkBridge(msg) => { - self.subsystems.network_bridge.send_message(msg).await?; - }, - AllMessages::ChainApi(msg) => { - self.subsystems.chain_api.send_message(msg).await?; - }, - AllMessages::CollationGeneration(msg) => { - self.subsystems.collation_generation.send_message(msg).await?; - }, - AllMessages::CollatorProtocol(msg) => { - self.subsystems.collator_protocol.send_message(msg).await?; - }, - AllMessages::ApprovalDistribution(msg) => { - self.subsystems.approval_distribution.send_message(msg).await?; - }, - AllMessages::ApprovalVoting(msg) => { - self.subsystems.approval_voting.send_message(msg).await?; - }, - AllMessages::GossipSupport(msg) => { - self.subsystems.gossip_support.send_message(msg).await?; - }, - AllMessages::DisputeCoordinator(_) => {} - AllMessages::DisputeParticipation(_) => {} - AllMessages::ChainSelection(_) => {} - } - - Ok(()) - } - - /// Handles a header activation. If the header's state doesn't support the parachains API, - /// this returns `None`. - fn on_head_activated(&mut self, hash: &Hash, parent_hash: Option) - -> Option<(Arc, LeafStatus)> - { - if !self.supports_parachains.head_supports_parachains(hash) { - return None; - } - - self.metrics.on_head_activated(); - if let Some(listeners) = self.activation_external_listeners.remove(hash) { - for listener in listeners { - // it's fine if the listener is no longer interested - let _ = listener.send(Ok(())); - } - } - - let mut span = jaeger::Span::new(*hash, "leaf-activated"); - - if let Some(parent_span) = parent_hash.and_then(|h| self.span_per_active_leaf.get(&h)) { - span.add_follows_from(&*parent_span); - } - - let span = Arc::new(span); - self.span_per_active_leaf.insert(*hash, span.clone()); - - let status = if let Some(_) = self.known_leaves.put(*hash, ()) { - LeafStatus::Stale - } else { - LeafStatus::Fresh - }; - - Some((span, status)) - } - - fn on_head_deactivated(&mut self, hash: &Hash) { - self.metrics.on_head_deactivated(); - self.activation_external_listeners.remove(hash); - self.span_per_active_leaf.remove(hash); - } - - fn clean_up_external_listeners(&mut self) { - self.activation_external_listeners.retain(|_, v| { - // remove dead listeners - v.retain(|c| !c.is_canceled()); - !v.is_empty() - }) - } - - fn handle_external_request(&mut self, request: ExternalRequest) { - match request { - ExternalRequest::WaitForActivation { hash, response_channel } => { - if self.active_leaves.get(&hash).is_some() { - // it's fine if the listener is no longer interested - let _ = response_channel.send(Ok(())); - } else { - self.activation_external_listeners.entry(hash).or_default().push(response_channel); - } - } - } - } - - fn spawn_job(&mut self, name: &'static str, j: BoxFuture<'static, ()>) { - self.s.spawn(name, j); - } - - fn spawn_blocking_job(&mut self, name: &'static str, j: BoxFuture<'static, ()>) { - self.s.spawn_blocking(name, j); - } -} - -enum TaskKind { - Regular, - Blocking, -} - -fn spawn( - spawner: &mut S, - message_tx: metered::MeteredSender>, - message_rx: SubsystemIncomingMessages, - unbounded_meter: metered::Meter, - to_subsystems: ChannelsOut, - to_overseer_tx: metered::UnboundedMeteredSender, - s: impl Subsystem>, - metrics: &Metrics, - futures: &mut FuturesUnordered>>, - task_kind: TaskKind, -) -> SubsystemResult> { - let (signal_tx, signal_rx) = metered::channel(SIGNAL_CHANNEL_CAPACITY); - let ctx = OverseerSubsystemContext::new( - signal_rx, - message_rx, - to_subsystems, - to_overseer_tx, - metrics.clone(), - ); - let SpawnedSubsystem { future, name } = s.start(ctx); - - let (tx, rx) = oneshot::channel(); - - let fut = Box::pin(async move { - if let Err(e) = future.await { - tracing::error!(subsystem=name, err = ?e, "subsystem exited with error"); - } else { - tracing::debug!(subsystem=name, "subsystem exited without an error"); - } - let _ = tx.send(()); - }); - - match task_kind { - TaskKind::Regular => spawner.spawn(name, fut), - TaskKind::Blocking => spawner.spawn_blocking(name, fut), - } - - futures.push(Box::pin(rx.map(|e| { tracing::warn!(err = ?e, "dropping error"); Ok(()) }))); - - let instance = Some(SubsystemInstance { - meters: SubsystemMeters { - unbounded: unbounded_meter, - bounded: message_tx.meter().clone(), - signals: signal_tx.meter().clone(), - }, - tx_signal: signal_tx, - tx_bounded: message_tx, - signals_received: 0, - name, - }); - - Ok(OverseenSubsystem { - instance, - }) -} diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs deleted file mode 100644 index c33a01dabfec..000000000000 --- a/node/overseer/src/tests.rs +++ /dev/null @@ -1,1153 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::sync::atomic; -use std::collections::HashMap; -use futures::{executor, pin_mut, select, FutureExt, pending}; - -use polkadot_primitives::v1::{CollatorPair, CandidateHash}; -use polkadot_subsystem::{messages::RuntimeApiRequest, messages::NetworkBridgeEvent, jaeger}; -use polkadot_node_primitives::{CollationResult, CollationGenerationConfig, PoV, BlockData}; -use polkadot_node_network_protocol::{PeerId, UnifiedReputationChange}; -use polkadot_node_subsystem_util::metered; - -use sp_core::crypto::Pair as _; -use assert_matches::assert_matches; - -use super::*; - -struct TestSubsystem1(metered::MeteredSender); - -impl Subsystem for TestSubsystem1 - where C: SubsystemContext -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - let mut sender = self.0; - SpawnedSubsystem { - name: "test-subsystem-1", - future: Box::pin(async move { - let mut i = 0; - loop { - match ctx.recv().await { - Ok(FromOverseer::Communication { .. }) => { - let _ = sender.send(i).await; - i += 1; - continue; - } - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => return Ok(()), - Err(_) => return Ok(()), - _ => (), - } - } - }), - } - } -} - -struct TestSubsystem2(metered::MeteredSender); - -impl Subsystem for TestSubsystem2 - where C: SubsystemContext -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - let sender = self.0.clone(); - SpawnedSubsystem { - name: "test-subsystem-2", - future: Box::pin(async move { - let _sender = sender; - let mut c: usize = 0; - loop { - if c < 10 { - let (tx, _) = oneshot::channel(); - ctx.send_message( - AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromChainState( - Default::default(), - PoV { - block_data: BlockData(Vec::new()), - }.into(), - tx, - ) - ) - ).await; - c += 1; - continue; - } - match ctx.try_recv().await { - Ok(Some(FromOverseer::Signal(OverseerSignal::Conclude))) => { - break; - } - Ok(Some(_)) => { - continue; - } - Err(_) => return Ok(()), - _ => (), - } - pending!(); - } - - Ok(()) - }), - } - } -} - -struct ReturnOnStart; - -impl Subsystem for ReturnOnStart - where C: SubsystemContext -{ - fn start(self, mut _ctx: C) -> SpawnedSubsystem { - SpawnedSubsystem { - name: "test-subsystem-4", - future: Box::pin(async move { - // Do nothing and exit. - Ok(()) - }), - } - } -} - -struct MockSupportsParachains; - -impl HeadSupportsParachains for MockSupportsParachains { - fn head_supports_parachains(&self, _head: &Hash) -> bool { - true - } -} - -// Checks that a minimal configuration of two jobs can run and exchange messages. -#[test] -fn overseer_works() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let (s1_tx, s1_rx) = metered::channel::(64); - let (s2_tx, s2_rx) = metered::channel::(64); - - let mut s1_rx = s1_rx.fuse(); - let mut s2_rx = s2_rx.fuse(); - - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(TestSubsystem1(s1_tx)) - .replace_candidate_backing(TestSubsystem2(s2_tx)); - - let (overseer, mut handler) = Overseer::new( - vec![], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - let overseer_fut = overseer.run().fuse(); - - pin_mut!(overseer_fut); - - let mut s1_results = Vec::new(); - let mut s2_results = Vec::new(); - - loop { - select! { - _ = overseer_fut => break, - s1_next = s1_rx.next() => { - match s1_next { - Some(msg) => { - s1_results.push(msg); - if s1_results.len() == 10 { - handler.stop().await; - } - } - None => break, - } - }, - s2_next = s2_rx.next() => { - match s2_next { - Some(_) => s2_results.push(s2_next), - None => break, - } - }, - complete => break, - } - } - - assert_eq!(s1_results, (0..10).collect::>()); - }); -} - -// Checks activated/deactivated metrics are updated properly. -#[test] -fn overseer_metrics_work() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let first_block_hash = [1; 32].into(); - let second_block_hash = [2; 32].into(); - let third_block_hash = [3; 32].into(); - - let first_block = BlockInfo { - hash: first_block_hash, - parent_hash: [0; 32].into(), - number: 1, - }; - let second_block = BlockInfo { - hash: second_block_hash, - parent_hash: first_block_hash, - number: 2, - }; - let third_block = BlockInfo { - hash: third_block_hash, - parent_hash: second_block_hash, - number: 3, - }; - - let all_subsystems = AllSubsystems::<()>::dummy(); - let registry = prometheus::Registry::new(); - let (overseer, mut handler) = Overseer::new( - vec![first_block], - all_subsystems, - Some(®istry), - MockSupportsParachains, - spawner, - ).unwrap(); - let overseer_fut = overseer.run().fuse(); - - pin_mut!(overseer_fut); - - handler.block_imported(second_block).await; - handler.block_imported(third_block).await; - handler.send_msg(AllMessages::CandidateValidation(test_candidate_validation_msg())).await; - handler.stop().await; - - select! { - res = overseer_fut => { - assert!(res.is_ok()); - let metrics = extract_metrics(®istry); - assert_eq!(metrics["activated"], 3); - assert_eq!(metrics["deactivated"], 2); - assert_eq!(metrics["relayed"], 1); - }, - complete => (), - } - }); -} - -fn extract_metrics(registry: &prometheus::Registry) -> HashMap<&'static str, u64> { - let gather = registry.gather(); - assert_eq!(gather[0].get_name(), "parachain_activated_heads_total"); - assert_eq!(gather[1].get_name(), "parachain_deactivated_heads_total"); - assert_eq!(gather[2].get_name(), "parachain_messages_relayed_total"); - let activated = gather[0].get_metric()[0].get_counter().get_value() as u64; - let deactivated = gather[1].get_metric()[0].get_counter().get_value() as u64; - let relayed = gather[2].get_metric()[0].get_counter().get_value() as u64; - let mut result = HashMap::new(); - result.insert("activated", activated); - result.insert("deactivated", deactivated); - result.insert("relayed", relayed); - result -} - -// Spawn a subsystem that immediately exits. -// -// Should immediately conclude the overseer itself. -#[test] -fn overseer_ends_on_subsystem_exit() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_backing(ReturnOnStart); - let (overseer, _handle) = Overseer::new( - vec![], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - - overseer.run().await.unwrap(); - }) -} - -struct TestSubsystem5(metered::MeteredSender); - -impl Subsystem for TestSubsystem5 - where C: SubsystemContext -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - let mut sender = self.0.clone(); - - SpawnedSubsystem { - name: "test-subsystem-5", - future: Box::pin(async move { - loop { - match ctx.try_recv().await { - Ok(Some(FromOverseer::Signal(OverseerSignal::Conclude))) => break, - Ok(Some(FromOverseer::Signal(s))) => { - sender.send(s).await.unwrap(); - continue; - }, - Ok(Some(_)) => continue, - Err(_) => break, - _ => (), - } - pending!(); - } - - Ok(()) - }), - } - } -} - -struct TestSubsystem6(metered::MeteredSender); - -impl Subsystem for TestSubsystem6 - where C: SubsystemContext -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - let mut sender = self.0.clone(); - - SpawnedSubsystem { - name: "test-subsystem-6", - future: Box::pin(async move { - loop { - match ctx.try_recv().await { - Ok(Some(FromOverseer::Signal(OverseerSignal::Conclude))) => break, - Ok(Some(FromOverseer::Signal(s))) => { - sender.send(s).await.unwrap(); - continue; - }, - Ok(Some(_)) => continue, - Err(_) => break, - _ => (), - } - pending!(); - } - - Ok(()) - }), - } - } -} - -// Tests that starting with a defined set of leaves and receiving -// notifications on imported blocks triggers expected `StartWork` and `StopWork` heartbeats. -#[test] -fn overseer_start_stop_works() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let first_block_hash = [1; 32].into(); - let second_block_hash = [2; 32].into(); - let third_block_hash = [3; 32].into(); - - let first_block = BlockInfo { - hash: first_block_hash, - parent_hash: [0; 32].into(), - number: 1, - }; - let second_block = BlockInfo { - hash: second_block_hash, - parent_hash: first_block_hash, - number: 2, - }; - let third_block = BlockInfo { - hash: third_block_hash, - parent_hash: second_block_hash, - number: 3, - }; - - let (tx_5, mut rx_5) = metered::channel(64); - let (tx_6, mut rx_6) = metered::channel(64); - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(TestSubsystem5(tx_5)) - .replace_candidate_backing(TestSubsystem6(tx_6)); - let (overseer, mut handler) = Overseer::new( - vec![first_block], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - - let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - - let mut ss5_results = Vec::new(); - let mut ss6_results = Vec::new(); - - handler.block_imported(second_block).await; - handler.block_imported(third_block).await; - - let expected_heartbeats = vec![ - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: first_block_hash, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - })), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ActivatedLeaf { - hash: second_block_hash, - number: 2, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].as_ref().into(), - deactivated: [first_block_hash].as_ref().into(), - }), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ActivatedLeaf { - hash: third_block_hash, - number: 3, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].as_ref().into(), - deactivated: [second_block_hash].as_ref().into(), - }), - ]; - - loop { - select! { - res = overseer_fut => { - assert!(res.is_ok()); - break; - }, - res = rx_5.next() => { - if let Some(res) = res { - ss5_results.push(res); - } - } - res = rx_6.next() => { - if let Some(res) = res { - ss6_results.push(res); - } - } - complete => break, - } - - if ss5_results.len() == expected_heartbeats.len() && - ss6_results.len() == expected_heartbeats.len() { - handler.stop().await; - } - } - - assert_eq!(ss5_results, expected_heartbeats); - assert_eq!(ss6_results, expected_heartbeats); - }); -} - -// Tests that starting with a defined set of leaves and receiving -// notifications on imported blocks triggers expected `StartWork` and `StopWork` heartbeats. -#[test] -fn overseer_finalize_works() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let first_block_hash = [1; 32].into(); - let second_block_hash = [2; 32].into(); - let third_block_hash = [3; 32].into(); - - let first_block = BlockInfo { - hash: first_block_hash, - parent_hash: [0; 32].into(), - number: 1, - }; - let second_block = BlockInfo { - hash: second_block_hash, - parent_hash: [42; 32].into(), - number: 2, - }; - let third_block = BlockInfo { - hash: third_block_hash, - parent_hash: second_block_hash, - number: 3, - }; - - let (tx_5, mut rx_5) = metered::channel(64); - let (tx_6, mut rx_6) = metered::channel(64); - - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(TestSubsystem5(tx_5)) - .replace_candidate_backing(TestSubsystem6(tx_6)); - - // start with two forks of different height. - let (overseer, mut handler) = Overseer::new( - vec![first_block, second_block], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - - let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - - let mut ss5_results = Vec::new(); - let mut ss6_results = Vec::new(); - - // this should stop work on both forks we started with earlier. - handler.block_finalized(third_block).await; - - let expected_heartbeats = vec![ - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ - ActivatedLeaf { - hash: first_block_hash, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }, - ActivatedLeaf { - hash: second_block_hash, - number: 2, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }, - ].as_ref().into(), - ..Default::default() - }), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - deactivated: [first_block_hash, second_block_hash].as_ref().into(), - ..Default::default() - }), - OverseerSignal::BlockFinalized(third_block_hash, 3), - ]; - - loop { - select! { - res = overseer_fut => { - assert!(res.is_ok()); - break; - }, - res = rx_5.next() => { - if let Some(res) = res { - ss5_results.push(res); - } - } - res = rx_6.next() => { - if let Some(res) = res { - ss6_results.push(res); - } - } - complete => break, - } - - if ss5_results.len() == expected_heartbeats.len() && ss6_results.len() == expected_heartbeats.len() { - handler.stop().await; - } - } - - assert_eq!(ss5_results.len(), expected_heartbeats.len()); - assert_eq!(ss6_results.len(), expected_heartbeats.len()); - - // Notifications on finality for multiple blocks at once - // may be received in different orders. - for expected in expected_heartbeats { - assert!(ss5_results.contains(&expected)); - assert!(ss6_results.contains(&expected)); - } - }); -} - -#[test] -fn do_not_send_empty_leaves_update_on_block_finalization() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let imported_block = BlockInfo { - hash: Hash::random(), - parent_hash: Hash::random(), - number: 1, - }; - - let finalized_block = BlockInfo { - hash: Hash::random(), - parent_hash: Hash::random(), - number: 1, - }; - - let (tx_5, mut rx_5) = metered::channel(64); - - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_backing(TestSubsystem6(tx_5)); - - let (overseer, mut handler) = Overseer::new( - Vec::new(), - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - - let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - - let mut ss5_results = Vec::new(); - - handler.block_finalized(finalized_block.clone()).await; - handler.block_imported(imported_block.clone()).await; - - let expected_heartbeats = vec![ - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ - ActivatedLeaf { - hash: imported_block.hash, - number: imported_block.number, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled) - } - ].as_ref().into(), - ..Default::default() - }), - OverseerSignal::BlockFinalized(finalized_block.hash, 1), - ]; - - loop { - select! { - res = overseer_fut => { - assert!(res.is_ok()); - break; - }, - res = rx_5.next() => { - if let Some(res) = dbg!(res) { - ss5_results.push(res); - } - } - } - - if ss5_results.len() == expected_heartbeats.len() { - handler.stop().await; - } - } - - assert_eq!(ss5_results.len(), expected_heartbeats.len()); - - for expected in expected_heartbeats { - assert!(ss5_results.contains(&expected)); - } - }); -} - -// Tests that duplicate leaves have an attached 'Stale' status. -#[test] -fn overseer_stale_detection() { - let spawner = sp_core::testing::TaskExecutor::new(); - - executor::block_on(async move { - let a1_hash = [1; 32].into(); - let b1_hash = [2; 32].into(); - - let a2_hash = [3; 32].into(); - let b2_hash = [4; 32].into(); - - let first_block = BlockInfo { - hash: a1_hash, - parent_hash: [0; 32].into(), - number: 1, - }; - let second_block = BlockInfo { - hash: b1_hash, - parent_hash: [0; 32].into(), - number: 1, - }; - - let third_block = BlockInfo { - hash: a2_hash, - parent_hash: a1_hash, - number: 2, - }; - - let fourth_block = BlockInfo { - hash: b2_hash, - parent_hash: b1_hash, - number: 2, - }; - - let (tx_5, mut rx_5) = metered::channel(64); - let (tx_6, mut rx_6) = metered::channel(64); - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(TestSubsystem5(tx_5)) - .replace_candidate_backing(TestSubsystem6(tx_6)); - - let (overseer, mut handler) = Overseer::new( - vec![first_block.clone()], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - - let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - - let mut ss5_results = Vec::new(); - let mut ss6_results = Vec::new(); - - handler.block_imported(second_block.clone()).await; - - // import the second block of each chain to deactivate the heads. - handler.block_imported(third_block).await; - handler.block_imported(fourth_block).await; - - // import the first blocks again (emulating a revert) - handler.block_imported(first_block).await; - handler.block_imported(second_block).await; - - let expected_heartbeats = vec![ - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: a1_hash, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - })), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: b1_hash, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - })), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ActivatedLeaf { - hash: a2_hash, - number: 2, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].as_ref().into(), - deactivated: [a1_hash].as_ref().into(), - }), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated: [ActivatedLeaf { - hash: b2_hash, - number: 2, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }].as_ref().into(), - deactivated: [b1_hash].as_ref().into(), - }), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: a1_hash, - number: 1, - status: LeafStatus::Stale, - span: Arc::new(jaeger::Span::Disabled), - })), - OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: b1_hash, - number: 1, - status: LeafStatus::Stale, - span: Arc::new(jaeger::Span::Disabled), - })), - ]; - - loop { - select! { - res = overseer_fut => { - assert!(res.is_ok()); - break; - }, - res = rx_5.next() => { - if let Some(res) = res { - ss5_results.push(res); - } - } - res = rx_6.next() => { - if let Some(res) = res { - ss6_results.push(res); - } - } - complete => break, - } - - if ss5_results.len() == expected_heartbeats.len() && - ss6_results.len() == expected_heartbeats.len() { - handler.stop().await; - } - } - - assert_eq!(ss5_results, expected_heartbeats); - assert_eq!(ss6_results, expected_heartbeats); - }); -} - -#[derive(Clone)] -struct CounterSubsystem { - stop_signals_received: Arc, - signals_received: Arc, - msgs_received: Arc, -} - -impl CounterSubsystem { - fn new( - stop_signals_received: Arc, - signals_received: Arc, - msgs_received: Arc, - ) -> Self { - Self { - stop_signals_received, - signals_received, - msgs_received, - } - } -} - -impl Subsystem for CounterSubsystem - where - C: SubsystemContext, - M: Send, -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - SpawnedSubsystem { - name: "counter-subsystem", - future: Box::pin(async move { - loop { - match ctx.try_recv().await { - Ok(Some(FromOverseer::Signal(OverseerSignal::Conclude))) => { - self.stop_signals_received.fetch_add(1, atomic::Ordering::SeqCst); - break; - }, - Ok(Some(FromOverseer::Signal(_))) => { - self.signals_received.fetch_add(1, atomic::Ordering::SeqCst); - continue; - }, - Ok(Some(FromOverseer::Communication { .. })) => { - self.msgs_received.fetch_add(1, atomic::Ordering::SeqCst); - continue; - }, - Err(_) => (), - _ => (), - } - pending!(); - } - - Ok(()) - }), - } - } -} - -fn test_candidate_validation_msg() -> CandidateValidationMessage { - let (sender, _) = oneshot::channel(); - let pov = Arc::new(PoV { block_data: BlockData(Vec::new()) }); - CandidateValidationMessage::ValidateFromChainState(Default::default(), pov, sender) -} - -fn test_candidate_backing_msg() -> CandidateBackingMessage { - let (sender, _) = oneshot::channel(); - CandidateBackingMessage::GetBackedCandidates(Default::default(), Vec::new(), sender) -} - -fn test_chain_api_msg() -> ChainApiMessage { - let (sender, _) = oneshot::channel(); - ChainApiMessage::FinalizedBlockNumber(sender) -} - -fn test_collator_generation_msg() -> CollationGenerationMessage { - CollationGenerationMessage::Initialize(CollationGenerationConfig { - key: CollatorPair::generate().0, - collator: Box::new(|_, _| TestCollator.boxed()), - para_id: Default::default(), - }) -} -struct TestCollator; - -impl Future for TestCollator { - type Output = Option; - - fn poll(self: Pin<&mut Self>, _cx: &mut futures::task::Context) -> Poll { - panic!("at the Disco") - } -} - -impl Unpin for TestCollator {} - -fn test_collator_protocol_msg() -> CollatorProtocolMessage { - CollatorProtocolMessage::CollateOn(Default::default()) -} - -fn test_network_bridge_event() -> NetworkBridgeEvent { - NetworkBridgeEvent::PeerDisconnected(PeerId::random()) -} - -fn test_statement_distribution_msg() -> StatementDistributionMessage { - StatementDistributionMessage::NetworkBridgeUpdateV1(test_network_bridge_event()) -} - -fn test_availability_recovery_msg() -> AvailabilityRecoveryMessage { - let (sender, _) = oneshot::channel(); - AvailabilityRecoveryMessage::RecoverAvailableData( - Default::default(), - Default::default(), - None, - sender, - ) -} - -fn test_bitfield_distribution_msg() -> BitfieldDistributionMessage { - BitfieldDistributionMessage::NetworkBridgeUpdateV1(test_network_bridge_event()) -} - -fn test_provisioner_msg() -> ProvisionerMessage { - let (sender, _) = oneshot::channel(); - ProvisionerMessage::RequestInherentData(Default::default(), sender) -} - -fn test_runtime_api_msg() -> RuntimeApiMessage { - let (sender, _) = oneshot::channel(); - RuntimeApiMessage::Request(Default::default(), RuntimeApiRequest::Validators(sender)) -} - -fn test_availability_store_msg() -> AvailabilityStoreMessage { - let (sender, _) = oneshot::channel(); - AvailabilityStoreMessage::QueryAvailableData(CandidateHash(Default::default()), sender) -} - -fn test_network_bridge_msg() -> NetworkBridgeMessage { - NetworkBridgeMessage::ReportPeer(PeerId::random(), UnifiedReputationChange::BenefitMinor("")) -} - -fn test_approval_distribution_msg() -> ApprovalDistributionMessage { - ApprovalDistributionMessage::NewBlocks(Default::default()) -} - -fn test_approval_voting_msg() -> ApprovalVotingMessage { - let (sender, _) = oneshot::channel(); - ApprovalVotingMessage::ApprovedAncestor(Default::default(), 0, sender) -} - -// Checks that `stop`, `broadcast_signal` and `broadcast_message` are implemented correctly. -#[test] -fn overseer_all_subsystems_receive_signals_and_messages() { - const NUM_SUBSYSTEMS: usize = 17; - // -3 for BitfieldSigning, GossipSupport and AvailabilityDistribution - const NUM_SUBSYSTEMS_MESSAGED: usize = NUM_SUBSYSTEMS - 3; - - let spawner = sp_core::testing::TaskExecutor::new(); - executor::block_on(async move { - let stop_signals_received = Arc::new(atomic::AtomicUsize::new(0)); - let signals_received = Arc::new(atomic::AtomicUsize::new(0)); - let msgs_received = Arc::new(atomic::AtomicUsize::new(0)); - - let subsystem = CounterSubsystem::new( - stop_signals_received.clone(), - signals_received.clone(), - msgs_received.clone(), - ); - - let all_subsystems = AllSubsystems { - candidate_validation: subsystem.clone(), - candidate_backing: subsystem.clone(), - collation_generation: subsystem.clone(), - collator_protocol: subsystem.clone(), - statement_distribution: subsystem.clone(), - availability_distribution: subsystem.clone(), - availability_recovery: subsystem.clone(), - bitfield_signing: subsystem.clone(), - bitfield_distribution: subsystem.clone(), - provisioner: subsystem.clone(), - runtime_api: subsystem.clone(), - availability_store: subsystem.clone(), - network_bridge: subsystem.clone(), - chain_api: subsystem.clone(), - approval_distribution: subsystem.clone(), - approval_voting: subsystem.clone(), - gossip_support: subsystem.clone(), - }; - let (overseer, mut handler) = Overseer::new( - vec![], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ).unwrap(); - let overseer_fut = overseer.run().fuse(); - - pin_mut!(overseer_fut); - - // send a signal to each subsystem - handler.block_imported(BlockInfo { - hash: Default::default(), - parent_hash: Default::default(), - number: Default::default(), - }).await; - - // send a msg to each subsystem - // except for BitfieldSigning and GossipSupport as the messages are not instantiable - handler.send_msg(AllMessages::CandidateValidation(test_candidate_validation_msg())).await; - handler.send_msg(AllMessages::CandidateBacking(test_candidate_backing_msg())).await; - handler.send_msg(AllMessages::CollationGeneration(test_collator_generation_msg())).await; - handler.send_msg(AllMessages::CollatorProtocol(test_collator_protocol_msg())).await; - handler.send_msg(AllMessages::StatementDistribution(test_statement_distribution_msg())).await; - handler.send_msg(AllMessages::AvailabilityRecovery(test_availability_recovery_msg())).await; - // handler.send_msg(AllMessages::BitfieldSigning(test_bitfield_signing_msg())).await; - // handler.send_msg(AllMessages::GossipSupport(test_bitfield_signing_msg())).await; - handler.send_msg(AllMessages::BitfieldDistribution(test_bitfield_distribution_msg())).await; - handler.send_msg(AllMessages::Provisioner(test_provisioner_msg())).await; - handler.send_msg(AllMessages::RuntimeApi(test_runtime_api_msg())).await; - handler.send_msg(AllMessages::AvailabilityStore(test_availability_store_msg())).await; - handler.send_msg(AllMessages::NetworkBridge(test_network_bridge_msg())).await; - handler.send_msg(AllMessages::ChainApi(test_chain_api_msg())).await; - handler.send_msg(AllMessages::ApprovalDistribution(test_approval_distribution_msg())).await; - handler.send_msg(AllMessages::ApprovalVoting(test_approval_voting_msg())).await; - - // Wait until all subsystems have received. Otherwise the messages might race against - // the conclude signal. - loop { - match (&mut overseer_fut).timeout(Duration::from_millis(100)).await { - None => { - let r = msgs_received.load(atomic::Ordering::SeqCst); - if r < NUM_SUBSYSTEMS_MESSAGED { - Delay::new(Duration::from_millis(100)).await; - } else if r > NUM_SUBSYSTEMS_MESSAGED { - panic!("too many messages received??"); - } else { - break - } - } - Some(_) => panic!("exited too early"), - } - } - - // send a stop signal to each subsystems - handler.stop().await; - - let res = overseer_fut.await; - assert_eq!(stop_signals_received.load(atomic::Ordering::SeqCst), NUM_SUBSYSTEMS); - assert_eq!(signals_received.load(atomic::Ordering::SeqCst), NUM_SUBSYSTEMS); - assert_eq!(msgs_received.load(atomic::Ordering::SeqCst), NUM_SUBSYSTEMS_MESSAGED); - - assert!(res.is_ok()); - }); -} - -#[test] -fn context_holds_onto_message_until_enough_signals_received() { - let (candidate_validation_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (candidate_backing_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (statement_distribution_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (availability_distribution_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (availability_recovery_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (bitfield_signing_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (bitfield_distribution_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (provisioner_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (runtime_api_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (availability_store_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (network_bridge_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (chain_api_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (collator_protocol_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (collation_generation_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (approval_distribution_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (approval_voting_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - let (gossip_support_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY); - - let (candidate_validation_unbounded_tx, _) = metered::unbounded(); - let (candidate_backing_unbounded_tx, _) = metered::unbounded(); - let (statement_distribution_unbounded_tx, _) = metered::unbounded(); - let (availability_distribution_unbounded_tx, _) = metered::unbounded(); - let (availability_recovery_unbounded_tx, _) = metered::unbounded(); - let (bitfield_signing_unbounded_tx, _) = metered::unbounded(); - let (bitfield_distribution_unbounded_tx, _) = metered::unbounded(); - let (provisioner_unbounded_tx, _) = metered::unbounded(); - let (runtime_api_unbounded_tx, _) = metered::unbounded(); - let (availability_store_unbounded_tx, _) = metered::unbounded(); - let (network_bridge_unbounded_tx, _) = metered::unbounded(); - let (chain_api_unbounded_tx, _) = metered::unbounded(); - let (collator_protocol_unbounded_tx, _) = metered::unbounded(); - let (collation_generation_unbounded_tx, _) = metered::unbounded(); - let (approval_distribution_unbounded_tx, _) = metered::unbounded(); - let (approval_voting_unbounded_tx, _) = metered::unbounded(); - let (gossip_support_unbounded_tx, _) = metered::unbounded(); - - let channels_out = ChannelsOut { - candidate_validation: candidate_validation_bounded_tx.clone(), - candidate_backing: candidate_backing_bounded_tx.clone(), - statement_distribution: statement_distribution_bounded_tx.clone(), - availability_distribution: availability_distribution_bounded_tx.clone(), - availability_recovery: availability_recovery_bounded_tx.clone(), - bitfield_signing: bitfield_signing_bounded_tx.clone(), - bitfield_distribution: bitfield_distribution_bounded_tx.clone(), - provisioner: provisioner_bounded_tx.clone(), - runtime_api: runtime_api_bounded_tx.clone(), - availability_store: availability_store_bounded_tx.clone(), - network_bridge: network_bridge_bounded_tx.clone(), - chain_api: chain_api_bounded_tx.clone(), - collator_protocol: collator_protocol_bounded_tx.clone(), - collation_generation: collation_generation_bounded_tx.clone(), - approval_distribution: approval_distribution_bounded_tx.clone(), - approval_voting: approval_voting_bounded_tx.clone(), - gossip_support: gossip_support_bounded_tx.clone(), - - candidate_validation_unbounded: candidate_validation_unbounded_tx.clone(), - candidate_backing_unbounded: candidate_backing_unbounded_tx.clone(), - statement_distribution_unbounded: statement_distribution_unbounded_tx.clone(), - availability_distribution_unbounded: availability_distribution_unbounded_tx.clone(), - availability_recovery_unbounded: availability_recovery_unbounded_tx.clone(), - bitfield_signing_unbounded: bitfield_signing_unbounded_tx.clone(), - bitfield_distribution_unbounded: bitfield_distribution_unbounded_tx.clone(), - provisioner_unbounded: provisioner_unbounded_tx.clone(), - runtime_api_unbounded: runtime_api_unbounded_tx.clone(), - availability_store_unbounded: availability_store_unbounded_tx.clone(), - network_bridge_unbounded: network_bridge_unbounded_tx.clone(), - chain_api_unbounded: chain_api_unbounded_tx.clone(), - collator_protocol_unbounded: collator_protocol_unbounded_tx.clone(), - collation_generation_unbounded: collation_generation_unbounded_tx.clone(), - approval_distribution_unbounded: approval_distribution_unbounded_tx.clone(), - approval_voting_unbounded: approval_voting_unbounded_tx.clone(), - gossip_support_unbounded: gossip_support_unbounded_tx.clone(), - }; - - let (mut signal_tx, signal_rx) = metered::channel(CHANNEL_CAPACITY); - let (mut bounded_tx, bounded_rx) = metered::channel(CHANNEL_CAPACITY); - let (unbounded_tx, unbounded_rx) = metered::unbounded(); - let (to_overseer_tx, _to_overseer_rx) = metered::unbounded(); - - let mut ctx = OverseerSubsystemContext::<()>::new_unmetered( - signal_rx, - stream::select(bounded_rx, unbounded_rx), - channels_out, - to_overseer_tx, - ); - - assert_eq!(ctx.signals_received.load(), 0); - - let test_fut = async move { - signal_tx.send(OverseerSignal::Conclude).await.unwrap(); - assert_matches!(ctx.recv().await.unwrap(), FromOverseer::Signal(OverseerSignal::Conclude)); - - assert_eq!(ctx.signals_received.load(), 1); - bounded_tx.send(MessagePacket { - signals_received: 2, - message: (), - }).await.unwrap(); - unbounded_tx.unbounded_send(MessagePacket { - signals_received: 2, - message: (), - }).unwrap(); - - match poll!(ctx.recv()) { - Poll::Pending => {} - Poll::Ready(_) => panic!("ready too early"), - }; - - assert!(ctx.pending_incoming.is_some()); - - signal_tx.send(OverseerSignal::Conclude).await.unwrap(); - assert_matches!(ctx.recv().await.unwrap(), FromOverseer::Signal(OverseerSignal::Conclude)); - assert_matches!(ctx.recv().await.unwrap(), FromOverseer::Communication { msg: () }); - assert_matches!(ctx.recv().await.unwrap(), FromOverseer::Communication { msg: () }); - assert!(ctx.pending_incoming.is_none()); - }; - - futures::executor::block_on(test_fut); -} diff --git a/node/overseer/subsystems-gen/Cargo.toml b/node/overseer/subsystems-gen/Cargo.toml deleted file mode 100644 index 9d386083e89a..000000000000 --- a/node/overseer/subsystems-gen/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "polkadot-procmacro-overseer-subsystems-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Small proc macro to create mocking level iface type helpers" - -[lib] -proc-macro = true - -[dependencies] -syn = { version = "1.0.60", features = ["full", "extra-traits"] } -quote = "1.0.9" -proc-macro2 = "1.0.24" -assert_matches = "1.5.0" - -[dev-dependencies] -trybuild = "1.0.42" diff --git a/node/overseer/subsystems-gen/src/lib.rs b/node/overseer/subsystems-gen/src/lib.rs deleted file mode 100644 index c15d08bb04f4..000000000000 --- a/node/overseer/subsystems-gen/src/lib.rs +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashSet; - -use proc_macro2::TokenStream; -use quote::quote; - -use syn::{Error, GenericParam, Ident, Result, Type, parse2}; - -#[proc_macro_derive(AllSubsystemsGen)] -pub fn subsystems_gen(item: proc_macro::TokenStream) -> proc_macro::TokenStream { - let item: TokenStream = item.into(); - impl_subsystems_gen(item).unwrap_or_else(|err| err.to_compile_error()).into() -} - -fn impl_subsystems_gen(item: TokenStream) -> Result { - let span = proc_macro2::Span::call_site(); - let ds = parse2::(item.clone())?; - - match ds.fields { - syn::Fields::Named(named) => { - #[derive(Clone)] - struct NameTyTup { - field: Ident, - ty: Type, - } - let mut orig_generics = ds.generics; - // remove default types - orig_generics.params = orig_generics.params.into_iter().map(|mut generic| { - match generic { - GenericParam::Type(ref mut param) => { - param.eq_token = None; - param.default = None; - } - _ => {} - } - generic - }).collect(); - - // prepare a hashmap of generic type to member that uses it - let generic_types = orig_generics.params.iter().filter_map(|generic| { - if let GenericParam::Type(param) = generic { - Some(param.ident.clone()) - } else { - None - } - }).collect::>(); - - let strukt_ty = ds.ident; - - if generic_types.is_empty() { - return Err(Error::new(strukt_ty.span(), "struct must have at least one generic parameter.")) - } - - // collect all fields that exist, and all fields that are replaceable - let mut replacable_items = Vec::::with_capacity(64); - let mut all_fields = replacable_items.clone(); - - - let mut duplicate_generic_detection = HashSet::::with_capacity(64); - - for field in named.named { - let field_ident = field.ident.clone().ok_or_else(|| Error::new(span, "Member field must have a name."))?; - let ty = field.ty.clone(); - let ntt = NameTyTup { field: field_ident, ty }; - - replacable_items.push(ntt.clone()); - - - // assure every generic is used exactly once - let ty_ident = match field.ty { - Type::Path(path) => path.path.get_ident().cloned().ok_or_else(|| { - Error::new(proc_macro2::Span::call_site(), "Expected an identifier, but got a path.") - }), - _ => return Err(Error::new(proc_macro2::Span::call_site(), "Must be path.")) - }?; - - if generic_types.contains(&ty_ident) { - if let Some(previous) = duplicate_generic_detection.replace(ty_ident) { - return Err(Error::new(previous.span(), "Generic type parameters may only be used for exactly one field, but is used more than once.")) - } - } - - all_fields.push(ntt); - } - - - let msg = "Generated by #[derive(AllSubsystemsGen)] derive proc-macro."; - let mut additive = TokenStream::new(); - - // generate an impl of `fn replace_#name` - for NameTyTup { field: replacable_item, ty: replacable_item_ty } in replacable_items { - let keeper = all_fields.iter().filter(|ntt| ntt.field != replacable_item).map(|ntt| ntt.field.clone()); - let strukt_ty = strukt_ty.clone(); - let fname = Ident::new(&format!("replace_{}", replacable_item), span); - // adjust the generics such that the appropriate member type is replaced - let mut modified_generics = orig_generics.clone(); - modified_generics.params = modified_generics.params.into_iter().map(|mut generic| { - match generic { - GenericParam::Type(ref mut param) => { - param.eq_token = None; - param.default = None; - if match &replacable_item_ty { - Type::Path(path) => - path.path.get_ident().filter(|&ident| ident == ¶m.ident).is_some(), - _ => false - } { - param.ident = Ident::new("NEW", span); - } - } - _ => {} - } - generic - }).collect(); - - additive.extend(quote! { - impl #orig_generics #strukt_ty #orig_generics { - #[doc = #msg] - pub fn #fname < NEW > (self, replacement: NEW) -> #strukt_ty #modified_generics { - #strukt_ty :: #modified_generics { - #replacable_item: replacement, - #( - #keeper: self.#keeper, - )* - } - } - } - }); - } - - Ok(additive) - } - syn::Fields::Unit => Err(Error::new(span, "Must be a struct with named fields. Not an unit struct.")), - syn::Fields::Unnamed(_) => { - Err(Error::new(span, "Must be a struct with named fields. Not an unnamed fields struct.")) - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic() { - let item = quote! { - pub struct AllSubsystems { - pub a: A, - pub beee: B, - pub dj: CD, - } - }; - - let output = impl_subsystems_gen(item).expect("Simple example always works. qed"); - println!("//generated:"); - println!("{}", output); - } - - #[test] - fn ui() { - let t = trybuild::TestCases::new(); - t.compile_fail("tests/ui/err-*.rs"); - t.pass("tests/ui/ok-*.rs"); - } -} diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-enum.rs b/node/overseer/subsystems-gen/tests/ui/err-01-enum.rs deleted file mode 100644 index 318636279ea5..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-enum.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_overseer_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -enum AllSubsystems { - A(A), - B(B), -} - -fn main() { - let all = AllSubsystems::::A(0u8); -} diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-enum.stderr b/node/overseer/subsystems-gen/tests/ui/err-01-enum.stderr deleted file mode 100644 index 5f61df1057cb..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-enum.stderr +++ /dev/null @@ -1,5 +0,0 @@ -error: expected `struct` - --> $DIR/err-01-enum.rs:6:1 - | -6 | enum AllSubsystems { - | ^^^^ diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.rs b/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.rs deleted file mode 100644 index f89939d5c306..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_overseer_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: X, - b: X, -} - -fn main() { - let all = AllSubsystems:: { - a: 0_u16, - b: 1_u16, - }; - let _all = all.replace_a(77u8); -} diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.stderr b/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.stderr deleted file mode 100644 index 23e1404ff822..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-generic-used-twice.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: Generic type parameters may only be used for exactly one field, but is used more than once. - --> $DIR/err-01-generic-used-twice.rs:7:5 - | -7 | a: X, - | ^ - -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope - --> $DIR/err-01-generic-used-twice.rs:16:17 - | -6 | struct AllSubsystems { - | ----------------------- method `replace_a` not found for this -... -16 | let _all = all.replace_a(77u8); - | ^^^^^^^^^ method not found in `AllSubsystems` diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-no-generic.rs b/node/overseer/subsystems-gen/tests/ui/err-01-no-generic.rs deleted file mode 100644 index 0466eb444cd9..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-no-generic.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_overseer_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: f32, - b: u16, -} - -fn main() { - let all = AllSubsystems { - a: 0_f32, - b: 1_u16, - }; - let _all = all.replace_a(77u8); -} diff --git a/node/overseer/subsystems-gen/tests/ui/err-01-no-generics.stderr b/node/overseer/subsystems-gen/tests/ui/err-01-no-generics.stderr deleted file mode 100644 index 1de880ae433c..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/err-01-no-generics.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: Generic type parameters may only be used once have at least one generic parameter. - --> $DIR/err-01-no-generics.rs:7:5 - | -7 | a: X, - | ^ - -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope - --> $DIR/err-01-no-generics.rs:16:17 - | -6 | struct AllSubsystems { - | ----------------------- method `replace_a` not found for this -... -16 | let _all = all.replace_a(77u8); - | ^^^^^^^^^ method not found in `AllSubsystems` diff --git a/node/overseer/subsystems-gen/tests/ui/ok-01-w-generics.rs b/node/overseer/subsystems-gen/tests/ui/ok-01-w-generics.rs deleted file mode 100644 index 1519990a0a55..000000000000 --- a/node/overseer/subsystems-gen/tests/ui/ok-01-w-generics.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_overseer_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: A, - b: B, -} - -fn main() { - let all = AllSubsystems:: { - a: 0u8, - b: 1u16, - }; - let _all: AllSubsystems<_,_> = all.replace_a::(777_777u32); -} diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml deleted file mode 100644 index 7cefeab9ba03..000000000000 --- a/node/primitives/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "polkadot-node-primitives" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Primitives types for the Node-side" - -[dependencies] -futures = "0.3.15" -polkadot-primitives = { path = "../../primitives" } -polkadot-statement-table = { path = "../../statement-table" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -runtime_primitives = { package = "sp-runtime", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-vrf = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-maybe-compressed-blob = { git = "https://github.com/paritytech/substrate", branch = "master" } -polkadot-parachain = { path = "../../parachain", default-features = false } -schnorrkel = "0.9.1" -thiserror = "1.0.22" -serde = { version = "1.0.123", features = ["derive"] } - -[target.'cfg(not(target_os = "unknown"))'.dependencies] -zstd = "0.6.0" diff --git a/node/primitives/src/approval.rs b/node/primitives/src/approval.rs deleted file mode 100644 index 743c37f32759..000000000000 --- a/node/primitives/src/approval.rs +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Types relevant for approval. - -pub use sp_consensus_vrf::schnorrkel::{VRFOutput, VRFProof, Randomness}; -pub use sp_consensus_babe::Slot; - -use polkadot_primitives::v1::{ - CandidateHash, Hash, ValidatorIndex, ValidatorSignature, CoreIndex, - Header, BlockNumber, CandidateIndex, -}; -use parity_scale_codec::{Encode, Decode}; -use sp_consensus_babe as babe_primitives; -use sp_application_crypto::Public; - -/// Validators assigning to check a particular candidate are split up into tranches. -/// Earlier tranches of validators check first, with later tranches serving as backup. -pub type DelayTranche = u32; - -/// A static context used to compute the Relay VRF story based on the -/// VRF output included in the header-chain. -pub const RELAY_VRF_STORY_CONTEXT: &[u8] = b"A&V RC-VRF"; - -/// A static context used for all relay-vrf-modulo VRFs. -pub const RELAY_VRF_MODULO_CONTEXT: &[u8] = b"A&V MOD"; - -/// A static context used for all relay-vrf-modulo VRFs. -pub const RELAY_VRF_DELAY_CONTEXT: &[u8] = b"A&V DELAY"; - -/// A static context used for transcripts indicating assigned availability core. -pub const ASSIGNED_CORE_CONTEXT: &[u8] = b"A&V ASSIGNED"; - -/// A static context associated with producing randomness for a core. -pub const CORE_RANDOMNESS_CONTEXT: &[u8] = b"A&V CORE"; - -/// A static context associated with producing randomness for a tranche. -pub const TRANCHE_RANDOMNESS_CONTEXT: &[u8] = b"A&V TRANCHE"; - -/// random bytes derived from the VRF submitted within the block by the -/// block author as a credential and used as input to approval assignment criteria. -#[derive(Debug, Clone, Encode, Decode, PartialEq)] -pub struct RelayVRFStory(pub [u8; 32]); - -/// Different kinds of input data or criteria that can prove a validator's assignment -/// to check a particular parachain. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] -pub enum AssignmentCertKind { - /// An assignment story based on the VRF that authorized the relay-chain block where the - /// candidate was included combined with a sample number. - /// - /// The context used to produce bytes is [`RELAY_VRF_MODULO_CONTEXT`] - RelayVRFModulo { - /// The sample number used in this cert. - sample: u32, - }, - /// An assignment story based on the VRF that authorized the relay-chain block where the - /// candidate was included combined with the index of a particular core. - /// - /// The context is [`RELAY_VRF_DELAY_CONTEXT`] - RelayVRFDelay { - /// The core index chosen in this cert. - core_index: CoreIndex, - }, -} - -/// A certification of assignment. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] -pub struct AssignmentCert { - /// The criterion which is claimed to be met by this cert. - pub kind: AssignmentCertKind, - /// The VRF showing the criterion is met. - pub vrf: (VRFOutput, VRFProof), -} - -/// An assignment crt which refers to the candidate under which the assignment is -/// relevant by block hash. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] -pub struct IndirectAssignmentCert { - /// A block hash where the candidate appears. - pub block_hash: Hash, - /// The validator index. - pub validator: ValidatorIndex, - /// The cert itself. - pub cert: AssignmentCert, -} - -/// A signed approval vote which references the candidate indirectly via the block. -/// -/// In practice, we have a look-up from block hash and candidate index to candidate hash, -/// so this can be transformed into a `SignedApprovalVote`. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] -pub struct IndirectSignedApprovalVote { - /// A block hash where the candidate appears. - pub block_hash: Hash, - /// The index of the candidate in the list of candidates fully included as-of the block. - pub candidate_index: CandidateIndex, - /// The validator index. - pub validator: ValidatorIndex, - /// The signature by the validator. - pub signature: ValidatorSignature, -} - -/// Metadata about a block which is now live in the approval protocol. -#[derive(Debug)] -pub struct BlockApprovalMeta { - /// The hash of the block. - pub hash: Hash, - /// The number of the block. - pub number: BlockNumber, - /// The hash of the parent block. - pub parent_hash: Hash, - /// The candidates included by the block. - /// Note that these are not the same as the candidates that appear within the block body. - pub candidates: Vec, - /// The consensus slot of the block. - pub slot: Slot, -} - -/// Errors that can occur during the approvals protocol. -#[derive(Debug, thiserror::Error)] -#[allow(missing_docs)] -pub enum ApprovalError { - #[error("Schnorrkel signature error")] - SchnorrkelSignature(schnorrkel::errors::SignatureError), - #[error("Authority index {0} out of bounds")] - AuthorityOutOfBounds(usize), -} - -/// An unsafe VRF output. Provide BABE Epoch info to create a `RelayVRFStory`. -pub struct UnsafeVRFOutput { - vrf_output: VRFOutput, - slot: Slot, - authority_index: u32, -} - -impl UnsafeVRFOutput { - /// Get the slot. - pub fn slot(&self) -> Slot { - self.slot - } - - /// Compute the randomness associated with this VRF output. - pub fn compute_randomness( - self, - authorities: &[(babe_primitives::AuthorityId, babe_primitives::BabeAuthorityWeight)], - randomness: &babe_primitives::Randomness, - epoch_index: u64, - ) -> Result { - let author = match authorities.get(self.authority_index as usize) { - None => return Err(ApprovalError::AuthorityOutOfBounds(self.authority_index as _)), - Some(x) => &x.0, - }; - - let pubkey = schnorrkel::PublicKey::from_bytes(author.as_slice()) - .map_err(ApprovalError::SchnorrkelSignature)?; - - let transcript = babe_primitives::make_transcript( - randomness, - self.slot, - epoch_index, - ); - - let inout = self.vrf_output.0.attach_input_hash(&pubkey, transcript) - .map_err(ApprovalError::SchnorrkelSignature)?; - Ok(RelayVRFStory(inout.make_bytes(RELAY_VRF_STORY_CONTEXT))) - } -} - -/// Extract the slot number and relay VRF from a header. -/// -/// This fails if either there is no BABE `PreRuntime` digest or -/// the digest has type `SecondaryPlain`, which Substrate nodes do -/// not produce or accept anymore. -pub fn babe_unsafe_vrf_info(header: &Header) -> Option { - use babe_primitives::digests::{CompatibleDigestItem, PreDigest}; - - for digest in &header.digest.logs { - if let Some(pre) = digest.as_babe_pre_digest() { - let slot = pre.slot(); - let authority_index = pre.authority_index(); - - // exhaustive match to defend against upstream variant changes. - let vrf_output = match pre { - PreDigest::Primary(primary) => primary.vrf_output, - PreDigest::SecondaryVRF(secondary) => secondary.vrf_output, - PreDigest::SecondaryPlain(_) => return None, - }; - - return Some(UnsafeVRFOutput { - vrf_output, - slot, - authority_index, - }); - } - } - - None -} diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs deleted file mode 100644 index 490367db4cca..000000000000 --- a/node/primitives/src/lib.rs +++ /dev/null @@ -1,407 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Primitive types used on the node-side. -//! -//! Unlike the `polkadot-primitives` crate, these primitives are only used on the node-side, -//! not shared between the node and the runtime. This crate builds on top of the primitives defined -//! there. - -#![deny(missing_docs)] - -use std::convert::TryInto; -use std::pin::Pin; - -use serde::{Serialize, Deserialize}; -use futures::Future; -use parity_scale_codec::{Decode, Encode}; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr, Error as KeystoreError}; -use sp_application_crypto::AppKey; - -pub use sp_core::traits::SpawnNamed; -pub use sp_consensus_babe::{ - Epoch as BabeEpoch, BabeEpochConfiguration, AllowedSlots as BabeAllowedSlots, -}; - -use polkadot_primitives::v1::{ - BlakeTwo256, CandidateCommitments, CandidateHash, CollatorPair, CommittedCandidateReceipt, - CompactStatement, EncodeAs, Hash, HashT, HeadData, Id as ParaId, OutboundHrmpMessage, - PersistedValidationData, Signed, UncheckedSigned, UpwardMessage, ValidationCode, - ValidatorIndex, ValidatorSignature, ValidDisputeStatementKind, InvalidDisputeStatementKind, - CandidateReceipt, ValidatorId, SessionIndex, DisputeStatement, MAX_CODE_SIZE, MAX_POV_SIZE, -}; - -pub use polkadot_parachain::primitives::BlockData; - -pub mod approval; - -/// The bomb limit for decompressing code blobs. -pub const VALIDATION_CODE_BOMB_LIMIT: usize = (MAX_CODE_SIZE * 4u32) as usize; - -/// The bomb limit for decompressing PoV blobs. -pub const POV_BOMB_LIMIT: usize = (MAX_POV_SIZE * 4u32) as usize; - -/// The cumulative weight of a block in a fork-choice rule. -pub type BlockWeight = u32; - -/// A statement, where the candidate receipt is included in the `Seconded` variant. -/// -/// This is the committed candidate receipt instead of the bare candidate receipt. As such, -/// it gives access to the commitments to validators who have not executed the candidate. This -/// is necessary to allow a block-producing validator to include candidates from outside the para -/// it is assigned to. -#[derive(Clone, PartialEq, Eq, Encode, Decode)] -pub enum Statement { - /// A statement that a validator seconds a candidate. - #[codec(index = 1)] - Seconded(CommittedCandidateReceipt), - /// A statement that a validator has deemed a candidate valid. - #[codec(index = 2)] - Valid(CandidateHash), -} - -impl std::fmt::Debug for Statement { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Statement::Seconded(seconded) => write!(f, "Seconded: {:?}", seconded.descriptor), - Statement::Valid(hash) => write!(f, "Valid: {:?}", hash), - } - } -} - -impl Statement { - /// Get the candidate hash referenced by this statement. - /// - /// If this is a `Statement::Seconded`, this does hash the candidate receipt, which may be expensive - /// for large candidates. - pub fn candidate_hash(&self) -> CandidateHash { - match *self { - Statement::Valid(ref h) => *h, - Statement::Seconded(ref c) => c.hash(), - } - } - - /// Transform this statement into its compact version, which references only the hash - /// of the candidate. - pub fn to_compact(&self) -> CompactStatement { - match *self { - Statement::Seconded(ref c) => CompactStatement::Seconded(c.hash()), - Statement::Valid(hash) => CompactStatement::Valid(hash), - } - } -} - -impl From<&'_ Statement> for CompactStatement { - fn from(stmt: &Statement) -> Self { - stmt.to_compact() - } -} - -impl EncodeAs for Statement { - fn encode_as(&self) -> Vec { - self.to_compact().encode() - } -} - -/// A statement, the corresponding signature, and the index of the sender. -/// -/// Signing context and validator set should be apparent from context. -/// -/// This statement is "full" in the sense that the `Seconded` variant includes the candidate receipt. -/// Only the compact `SignedStatement` is suitable for submission to the chain. -pub type SignedFullStatement = Signed; - -/// Variant of `SignedFullStatement` where the signature has not yet been verified. -pub type UncheckedSignedFullStatement = UncheckedSigned; - -/// Candidate invalidity details -#[derive(Debug)] -pub enum InvalidCandidate { - /// Failed to execute.`validate_block`. This includes function panicking. - ExecutionError(String), - /// Validation outputs check doesn't pass. - InvalidOutputs, - /// Execution timeout. - Timeout, - /// Validation input is over the limit. - ParamsTooLarge(u64), - /// Code size is over the limit. - CodeTooLarge(u64), - /// Code does not decompress correctly. - CodeDecompressionFailure, - /// PoV does not decompress correctly. - PoVDecompressionFailure, - /// Validation function returned invalid data. - BadReturn, - /// Invalid relay chain parent. - BadParent, - /// POV hash does not match. - PoVHashMismatch, - /// Bad collator signature. - BadSignature, - /// Para head hash does not match. - ParaHeadHashMismatch, - /// Validation code hash does not match. - CodeHashMismatch, -} - -/// Result of the validation of the candidate. -#[derive(Debug)] -pub enum ValidationResult { - /// Candidate is valid. The validation process yields these outputs and the persisted validation - /// data used to form inputs. - Valid(CandidateCommitments, PersistedValidationData), - /// Candidate is invalid. - Invalid(InvalidCandidate), -} - -/// A Proof-of-Validity -#[derive(PartialEq, Eq, Clone, Encode, Decode, Debug)] -pub struct PoV { - /// The block witness data. - pub block_data: BlockData, -} - -impl PoV { - /// Get the blake2-256 hash of the PoV. - pub fn hash(&self) -> Hash { - BlakeTwo256::hash_of(self) - } -} - -/// The output of a collator. -/// -/// This differs from `CandidateCommitments` in two ways: -/// -/// - does not contain the erasure root; that's computed at the Polkadot level, not at Cumulus -/// - contains a proof of validity. -#[derive(Clone, Encode, Decode)] -pub struct Collation { - /// Messages destined to be interpreted by the Relay chain itself. - pub upward_messages: Vec, - /// The horizontal messages sent by the parachain. - pub horizontal_messages: Vec>, - /// New validation code. - pub new_validation_code: Option, - /// The head-data produced as a result of execution. - pub head_data: HeadData, - /// Proof to verify the state transition of the parachain. - pub proof_of_validity: PoV, - /// The number of messages processed from the DMQ. - pub processed_downward_messages: u32, - /// The mark which specifies the block number up to which all inbound HRMP messages are processed. - pub hrmp_watermark: BlockNumber, -} - -/// Result of the [`CollatorFn`] invocation. -pub struct CollationResult { - /// The collation that was build. - pub collation: Collation, - /// An optional result sender that should be informed about a successfully seconded collation. - /// - /// There is no guarantee that this sender is informed ever about any result, it is completely okay to just drop it. - /// However, if it is called, it should be called with the signed statement of a parachain validator seconding the - /// collation. - pub result_sender: Option>, -} - -impl CollationResult { - /// Convert into the inner values. - pub fn into_inner(self) -> (Collation, Option>) { - (self.collation, self.result_sender) - } -} - -/// Collation function. -/// -/// Will be called with the hash of the relay chain block the parachain block should be build on and the -/// [`ValidationData`] that provides information about the state of the parachain on the relay chain. -/// -/// Returns an optional [`CollationResult`]. -pub type CollatorFn = Box< - dyn Fn(Hash, &PersistedValidationData) -> Pin> + Send>> - + Send - + Sync, ->; - -/// Configuration for the collation generator -pub struct CollationGenerationConfig { - /// Collator's authentication key, so it can sign things. - pub key: CollatorPair, - /// Collation function. See [`CollatorFn`] for more details. - pub collator: CollatorFn, - /// The parachain that this collator collates for - pub para_id: ParaId, -} - -impl std::fmt::Debug for CollationGenerationConfig { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "CollationGenerationConfig {{ ... }}") - } -} - -/// This is the data we keep available for each candidate included in the relay chain. -#[derive(Clone, Encode, Decode, PartialEq, Eq, Debug)] -pub struct AvailableData { - /// The Proof-of-Validation of the candidate. - pub pov: std::sync::Arc, - /// The persisted validation data needed for secondary checks. - pub validation_data: PersistedValidationData, -} - -/// A chunk of erasure-encoded block data. -#[derive(PartialEq, Eq, Clone, Encode, Decode, Serialize, Deserialize, Debug, Hash)] -pub struct ErasureChunk { - /// The erasure-encoded chunk of data belonging to the candidate block. - pub chunk: Vec, - /// The index of this erasure-encoded chunk of data. - pub index: ValidatorIndex, - /// Proof for this chunk's branch in the Merkle tree. - pub proof: Vec>, -} - -/// Compress a PoV, unless it exceeds the [`POV_BOMB_LIMIT`]. -#[cfg(not(target_os = "unknown"))] -pub fn maybe_compress_pov(pov: PoV) -> PoV { - let PoV { block_data: BlockData(raw) } = pov; - let raw = sp_maybe_compressed_blob::compress(&raw, POV_BOMB_LIMIT) - .unwrap_or(raw); - - let pov = PoV { block_data: BlockData(raw) }; - pov -} - -/// Tracked votes on candidates, for the purposes of dispute resolution. -#[derive(Debug, Clone)] -pub struct CandidateVotes { - /// The receipt of the candidate itself. - pub candidate_receipt: CandidateReceipt, - /// Votes of validity, sorted by validator index. - pub valid: Vec<(ValidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, - /// Votes of invalidity, sorted by validator index. - pub invalid: Vec<(InvalidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, -} - -impl CandidateVotes { - /// Get the set of all validators who have votes in the set, ascending. - pub fn voted_indices(&self) -> Vec { - let mut v: Vec<_> = self.valid.iter().map(|x| x.1).chain( - self.invalid.iter().map(|x| x.1) - ).collect(); - - v.sort(); - v.dedup(); - - v - } -} - - -/// A checked dispute statement from an associated validator. -#[derive(Debug, Clone)] -pub struct SignedDisputeStatement { - dispute_statement: DisputeStatement, - candidate_hash: CandidateHash, - validator_public: ValidatorId, - validator_signature: ValidatorSignature, - session_index: SessionIndex, -} - -impl SignedDisputeStatement { - /// Create a new `SignedDisputeStatement`, which is only possible by checking the signature. - pub fn new_checked( - dispute_statement: DisputeStatement, - candidate_hash: CandidateHash, - session_index: SessionIndex, - validator_public: ValidatorId, - validator_signature: ValidatorSignature, - ) -> Result { - dispute_statement.check_signature( - &validator_public, - candidate_hash, - session_index, - &validator_signature, - ).map(|_| SignedDisputeStatement { - dispute_statement, - candidate_hash, - validator_public, - validator_signature, - session_index, - }) - } - - /// Sign this statement with the given keystore and key. Pass `valid = true` to - /// indicate validity of the candidate, and `valid = false` to indicate invalidity. - pub async fn sign_explicit( - keystore: &SyncCryptoStorePtr, - valid: bool, - candidate_hash: CandidateHash, - session_index: SessionIndex, - validator_public: ValidatorId, - ) -> Result, KeystoreError> { - let dispute_statement = if valid { - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit) - } else { - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit) - }; - - let data = dispute_statement.payload_data(candidate_hash, session_index); - let signature = CryptoStore::sign_with( - &**keystore, - ValidatorId::ID, - &validator_public.clone().into(), - &data, - ).await?; - - let signature = match signature { - Some(sig) => sig.try_into().map_err(|_| KeystoreError::KeyNotSupported(ValidatorId::ID))?, - None => return Ok(None), - }; - - Ok(Some(Self { - dispute_statement, - candidate_hash, - validator_public, - validator_signature: signature, - session_index, - })) - } - - /// Access the underlying dispute statement - pub fn statement(&self) -> &DisputeStatement { - &self.dispute_statement - } - - /// Access the underlying candidate hash. - pub fn candidate_hash(&self) -> &CandidateHash { - &self.candidate_hash - } - - /// Access the underlying validator public key. - pub fn validator_public(&self) -> &ValidatorId { - &self.validator_public - } - - /// Access the underlying validator signature. - pub fn validator_signature(&self) -> &ValidatorSignature { - &self.validator_signature - } - - /// Access the underlying session index. - pub fn session_index(&self) -> SessionIndex { - self.session_index - } -} diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml deleted file mode 100644 index 14b5082b222b..000000000000 --- a/node/service/Cargo.toml +++ /dev/null @@ -1,163 +0,0 @@ -[package] -name = "polkadot-service" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -# Substrate Client -sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -babe = { package = "sc-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master" } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } -beefy-gadget = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } -grandpa = { package = "sc-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } -sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client-db = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-uncles = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa-warp-sync = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } -service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } - -# Substrate Primitives -sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -consensus_common = { package = "sp-consensus", git = "https://github.com/paritytech/substrate", branch = "master" } -grandpa_primitives = { package = "sp-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-offchain = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } - -# Substrate Pallets -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-im-online = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master" } - -# Substrate Other -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -prometheus-endpoint = { package = "substrate-prometheus-endpoint", git = "https://github.com/paritytech/substrate", branch = "master" } - -# External Crates -futures = "0.3.15" -hex-literal = "0.3.1" -tracing = "0.1.26" -serde = { version = "1.0.123", features = ["derive"] } -thiserror = "1.0.23" -kvdb = "0.9.0" -kvdb-rocksdb = { version = "0.11.1", optional = true } -async-trait = "0.1.42" - -# Polkadot -polkadot-node-core-parachains-inherent = { path = "../core/parachains-inherent" } -polkadot-overseer = { path = "../overseer" } -polkadot-client = { path = "../client" } -polkadot-parachain = { path = "../../parachain" } -polkadot-primitives = { path = "../../primitives" } -polkadot-node-primitives = { path = "../primitives" } -polkadot-rpc = { path = "../../rpc" } -polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../subsystem" } -polkadot-node-subsystem-util = { path = "../subsystem-util" } -polkadot-runtime-parachains = { path = "../../runtime/parachains" } - -# Polkadot Runtimes -polkadot-runtime = { path = "../../runtime/polkadot" } -kusama-runtime = { path = "../../runtime/kusama", optional = true } -westend-runtime = { path = "../../runtime/westend", optional = true } -rococo-runtime = { path = "../../runtime/rococo", optional = true } - -# Polkadot Subsystems -polkadot-availability-bitfield-distribution = { path = "../network/bitfield-distribution", optional = true } -polkadot-availability-distribution = { path = "../network/availability-distribution", optional = true } -polkadot-availability-recovery = { path = "../network/availability-recovery", optional = true } -polkadot-collator-protocol = { path = "../network/collator-protocol", optional = true } -polkadot-gossip-support = { path = "../network/gossip-support", optional = true } -polkadot-network-bridge = { path = "../network/bridge", optional = true } -polkadot-node-collation-generation = { path = "../collation-generation", optional = true } -polkadot-node-core-av-store = { path = "../core/av-store", optional = true } -polkadot-node-core-backing = { path = "../core/backing", optional = true } -polkadot-node-core-bitfield-signing = { path = "../core/bitfield-signing", optional = true } -polkadot-node-core-candidate-validation = { path = "../core/candidate-validation", optional = true } -polkadot-node-core-chain-api = { path = "../core/chain-api", optional = true } -polkadot-node-core-provisioner = { path = "../core/provisioner", optional = true } -polkadot-node-core-runtime-api = { path = "../core/runtime-api", optional = true } -polkadot-statement-distribution = { path = "../network/statement-distribution", optional = true } -polkadot-approval-distribution = { path = "../network/approval-distribution", optional = true } -polkadot-node-core-approval-voting = { path = "../core/approval-voting", optional = true } - -[dev-dependencies] -polkadot-test-client = { path = "../test/client" } -env_logger = "0.8.4" - -[features] -default = ["db", "full-node"] - -db = [ - "service/db" -] - -full-node = [ - "polkadot-node-core-av-store", - "polkadot-node-core-approval-voting", - "polkadot-availability-bitfield-distribution", - "polkadot-availability-distribution", - "polkadot-availability-recovery", - "polkadot-collator-protocol", - "polkadot-gossip-support", - "polkadot-network-bridge", - "polkadot-node-collation-generation", - "polkadot-node-core-backing", - "polkadot-node-core-bitfield-signing", - "polkadot-node-core-candidate-validation", - "polkadot-node-core-chain-api", - "polkadot-node-core-provisioner", - "polkadot-node-core-runtime-api", - "polkadot-statement-distribution", - "polkadot-approval-distribution", - "sc-finality-grandpa-warp-sync", - "kvdb-rocksdb" -] - -light-node = [] - -# Configure the native runtimes to use. Polkadot is always enabled by default. -# -# Validators require the native runtime currently -kusama-native = [ "kusama-runtime", "polkadot-client/kusama" ] -westend-native = [ "westend-runtime", "polkadot-client/westend" ] -rococo-native = [ "rococo-runtime", "polkadot-client/rococo" ] - -runtime-benchmarks = [ - "polkadot-runtime/runtime-benchmarks", - "kusama-runtime/runtime-benchmarks", - "westend-runtime/runtime-benchmarks", - "rococo-runtime/runtime-benchmarks" -] -try-runtime = [ - "polkadot-runtime/try-runtime", - "kusama-runtime/try-runtime", - "westend-runtime/try-runtime", - "rococo-runtime/try-runtime", -] -malus = ["full-node"] diff --git a/node/service/README.adoc b/node/service/README.adoc deleted file mode 100644 index 2196d5467806..000000000000 --- a/node/service/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Service - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/node/service/res/.gitignore b/node/service/res/.gitignore deleted file mode 100644 index 11a43e289a21..000000000000 --- a/node/service/res/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!/*.json diff --git a/node/service/res/kusama.json b/node/service/res/kusama.json deleted file mode 100644 index 082121c74752..000000000000 --- a/node/service/res/kusama.json +++ /dev/null @@ -1,3459 +0,0 @@ -{ - "name": "Kusama", - "id": "ksmcc3", - "bootNodes": [ - "/dns/p2p.0.kusama.network/tcp/30333/p2p/12D3KooWJDohybWd7FvRmyeGjgi56yy36mRWLHmgRprFdUadUt6b", - "/dns/p2p.1.kusama.network/tcp/30333/p2p/12D3KooWC7dnTvDY97afoLrvQSBrh7dDFEkWniTwyxAsBjfpaZk6", - "/dns/p2p.2.kusama.network/tcp/30333/p2p/12D3KooWGGK6Mj1pWF1bk4R1HjBQ4E7bgkfSJ5gmEfVRuwRZapT5", - "/dns/p2p.3.kusama.network/tcp/30333/p2p/12D3KooWRp4qgusMiUobJ9Uw1XAwtsokqx9YwgHDv5wQXjxqETji", - "/dns/p2p.4.kusama.network/tcp/30333/p2p/12D3KooWMVXPbqWR1erNKRSWDVPjcAQ9XtxqLTVzV4ccox9Y8KNL", - "/dns/p2p.5.kusama.network/tcp/30333/p2p/12D3KooWBsJKGJFuv83ixryzMsUS53A8JzEVeTA8PGi4U6T2dnif", - "/dns/kusama-bootnode-0.paritytech.net/tcp/30333/p2p/12D3KooWSueCPH3puP2PcvqPJdNaDNF3jMZjtJtDiSy35pWrbt5h", - "/dns/kusama-bootnode-0.paritytech.net/tcp/30334/ws/p2p/12D3KooWSueCPH3puP2PcvqPJdNaDNF3jMZjtJtDiSy35pWrbt5h", - "/dns/kusama-bootnode-1.paritytech.net/tcp/30333/p2p/12D3KooWQKqane1SqWJNWMQkbia9qiMWXkcHtAdfW5eVF8hbwEDw" - ], - "telemetryEndpoints": [ - [ - "wss://telemetry.polkadot.io/submit/", - 0 - ] - ], - "protocolId": "ksmcc3", - "properties": { - "ss58Format": 2, - "tokenDecimals": 12, - "tokenSymbol": "KSM" - }, - "consensusEngine": null, - "forkBlocks": null, - "badBlocks": [ - "0x15b1b925b0aa5cfe43c88cd024f74258cb5cfe3af424882c901014e8acd0d241", - "0x2563260209012232649ab9dc003f62e274c684037de499a23062f8e0e816c605" - ], - "genesis": { - "raw": [ - { - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397974a8f6e094002e424b603628718939b060c4c6305a73d36a014468c29b8b7d7": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397997f7003f78328f30c57e6ce10b1956c77d2187fe08441845cc0c18273852039": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41a7b36634518c4bd258451d3afca781ef41c43e2cc13767ade6d58216bb4b54e": "0x0000c52ebca2b1000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f1f621ca0c3b5528d881122bde90e1b827b4cf30e43a6ae6992990aece379759": "0x003aac1de83100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770172b12d479580b3200b65e470a74b301403e004dede5291371b4a6bf56f75c": "0x00301a45ba2900000000000000000000", - "0x3fba98689ebed1138735e0e7a5a790ab0b76934f4cc08dee01012d059e1b83ee": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e6fca7ae4b2bdba3bcf530e3ac30f406c684c98a715c7677eff8435fcc63667": "0x00f022a88c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d02912bd748b4a3fffe3895a192330666e76812a79ce9c5603a1e801fe0e7835": "0x00920d70945f06000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b458ad08561bd8f502d2ba488697d10b58aaa7c4097d4abb1c8861495348fd6970": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bfd7d57d0af52453054536bd75561fff89c21e4c6c3ab4176749649ce3730cc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6e6e15195495b9f45f5eb6c1a25ead6c5e55e89fa4df899a90017c726f6e009": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741729cf5ccc6e78bada8a3aa4ee8b0be1c301f8940e2a802060a243e141bbf26": "0x0090abc6635300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3d5078eb15a7c55ac1c9a7fa8c9477c1366019254190a89532d8f409f880bf5": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e828d3681c05e5b3d05a2dd796e2181d0494268719a65431f4739324cf46f68d": "0x00c0af01f46809000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5c9c45d99505e974266122ed319959d5a83056b47a39b2be2fc61de416c5b4a": "0x008ace1a761902000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44a73cc327e8dd9d815b75faf8562eaf386c553988f2301c833b0499374c722fd": "0x0010d454955324000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729dd8b37c40d54bc1a5689953a012fb1a0c87c90a525191b26029aa294ba42a9": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1922ce8b85461eba96590da85abb24d7b0c6fc5e45be1d4649d0bf06587c7dd": "0x000e760ff72301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fae3a1d0125f219c434a804bf7bcf8ef325828c8867d124454c57340163b7da8": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fa41f9c794f8a8d146e1718da84032c0de8dbb719f3f612410af88aec4d5a4e": "0x004ac18c1b6500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779e8bd48f5982c1b708c9ed6e21d84676744194ae3ccc71d121d913afa0bbe00": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dcbcdfa57483f63b3d483712d8ab90389e7c58a118004af3cd338a0661e37a88": "0x00ba1ae7383a03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e4cdea903ea0345006c772579a6701839634ad756b04cfb27513721f356879a": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b85307d4e3bf44c953c4d908bb16bca7c150ab259cdc7c27e4abc6e2a88b0da": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5c2b93c7484f200a29d0afe11d3385d232db85399794fd95f11e010b2d1734d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397789c577644ce1638f28532b6e3c933204ee95ea3eba4a2231cb174e7954f498a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a70073f6a4313f86ec574fc4f59ae10a5a0fcd4498b44fe1931bd5792b00ca82": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397754d4cee53776905c849cd201ca56292ea3f1d3ed2360f8ede3f380bb1fedb4c": "0x007274b1750100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754379caf721a3c90b76521f29b4e3f28a33cbd73f85d2092ce9cebfaf006a3fd": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca6ba022f6bac3be96d8f735dbc086a10287a1bab66d847e3d83c3bc64ee4e9f": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397052a7c59281721b1a40e2f586925a0b1767151bb100c458151c7f56270b3f5d7": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972dc2f9578bbe9dd3fb8ba0738523960abbecff4afd648d56a80132e2163f83f3": "0x0094dd8dd8a400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ad78517765d2a0a421f61fe196497805cc5f43a1b5fd8a826524e2b775f5319": "0x00e69d55840b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d33e5781c49c9c746b2e131b9cff6fb78904d9e7bf24ee7892196ddd1632eecd": "0x009e86e7d71100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799ab88eff5e24ed56030f881123207fa2f62c4c365ee2f7c3b4856ef2e320b7b": "0x007465c1f55500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad1578ed6e6b827a9fc09893cfe78624c7b93de6c45b6c06d3f1ce2f16d0b523": "0x0034a8c5180900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579733de9bb3e2b5cdc4c62897bbb89b90cb7cd4f88d3fd74f75b9e2287f8a688fbb2": "0x2280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767707643450e6414713f1a209956d1a8a3c017638a62b089196a201f831e867d": "0x00de0af1581922000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976be50ac8ed1b058edcff2da0258f9889fd94623b2de76e4014f12f4a65f74256": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff4c96fd615086a7582e09747547294f94f01a1c1b96cf9a3ff416b5ab9be05e": "0x004ed7a1c0bf03000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44520e3e74c0b8ee4bebb68dcdd5682bbb448f5f23eca33e44d815c7184fd0a5c": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcdc525a4440d717d18fb6336df540e601e4e27825c1b3db2c1e5ce2000521e7": "0x0050be534a1700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d77e2cd53251d7768d3266d193a967a8e232116e221a6cca7563ae548b11c34a": "0x007e84c4358901000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ba1ba137f951df73983d306bb783236caeb9420de73544761d9cc5908df98dec": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e6d721da930ac167a1e7d12abca9ab8e9f845cd3eb429af032d14e67c4f894a": "0x006c9bea403b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397067c9380a294fa0728d3be3dc810771972ee69ccb575a8b860760246ce3a3578": "0x0062b4f104d248000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397204dc87cf6847e48faf6b4fa494554988bf17416549ba38f3238b4820426c545": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730218c717b1fc594ffa846b27a4c215aae934219d804fa2f74a845ac0cb50cfe": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d90cd396f1a6384b0fddf41d93617ba1170c1da431c959df6b7b5a6c1e8a69b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1735a3fc5e7f4e72f6d7b9b7c16c1679140f9c7e61b578cd5218d49b89d6d80": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcb14d8270187870723fd212870b79a003c6635fe1b876f80ed7295b5a187d26": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ceff548f87c2755fd1944f1d2666347dfd1eda6ae32f9793c9bffac1924c1b2a": "0x00a8b5d34bc800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741f5e2d0ceb8587b5c293e028135bb1e3abd2ac7f7d931872b9cf7dff845564d": "0x009cb26e1c2100000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973aea5831caa7a6398ec3db4a14da0e8b8581c5a7ef73696fcd6b6d3106dfae129": "0x7ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710ac69ce999dcdb321d47c111dde561e0e868109cc545b2c9ac7406fd9557954": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397745abd91bdffdfa88cd35b300f1c414a7ce04adbc46c22b40503776d5263c480": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4655b53a0769c2e6956a1df10c8c9135cbf7acc2b09fbf9b569590bb17a98a0": "0x0012fd6a7f1500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e922ce7fa58efcf807e3653bc7b03d14507704042251611d15a7b004a407b4d9": "0x0050a795168301000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243dea3ffc2e7aa5c5b6d6831d2cad7782d8da64a543ce26678c125c61022369a13": "0x00f45658a0d7480000000000000000002029f5c202000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a3a59829e59a4cfc32f5ce21b45d1c06c2e0fa883df5e8f261c0add2ca8fc792": "0x008032b03281ca000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b424b1cffe3c67b4fa4fac0de9c461c26445222ccee3bd2f9026cc44e907699495": "0x0040763a6b0bde000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fe5adc9e97722f9dce228015d3f7bfe9d51e6cb62cb5ba50a24de8d0ded8744": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d58666e3bb47d5457964ecbe97528e53f1de01399f1bb9ed0a53af5ab6bda669": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d78ff82e686f83dae1e8b24e4a1ede7d1c62b481f791d59ae2ee58d21818efe": "0x00e0e6a5d93411000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba02d42c0bcabb479f9f045e31ff7c9a22621e048b609196b3eea05421d1ed9f": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971322ac4e3a23a5c23f17712dbf14691b7c72958c2f74ed442f977060ac58b837": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397822340b1e940c2975f00edd96ebd8c82f9b5a1eaa1b83f1133b5f028f330ee4d": "0x005ecf6db84c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a03d38d5c398b22dfd48cdb59c1d4d875a13b742f833558868b2455a12211a78": "0x00d6de0f830800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733799c5c462e17b01355b89cf4f4f54a4e056aaea1f52cabad063a87b1492263": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f89a780b1339e04925d09322877157ffe42e26662488a9dd3f80e84bd4ce63b9": "0x00d6c280a42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972941f4915b68d9d76470f34bdc1d32655a1e7dc016715d07e4174a9455284545": "0x003644e1317705000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a266abdfb072f3c5feac53966a1349f33dca4aed4785b2700aa7395cbb530b8": "0x008e804bf80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753b81957ac67b7566d6ac5c4968f98b99bee8d28b75fe84d8d6aea149bd2e076": "0x0024a0d50d5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6e998558892d6e155a9e08d4d470d9a26ae666d5c351c947ca507e7c83b057b": "0x0044c061f50800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f980ff1f6395141a6d33d4300e72d0c3d2bfd71afb8b7e6fafd0d586c950945": "0x00fc7e05c71200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8c0b4a5c3c2090684d60accb45b33076ffe96c512d2c93ea4f77dd798ae4b3d": "0x004e99ec4e3705000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397332f19a7c772fc929cf3e6858d7bcddec594def82f95ffda9fa39a70b95ec6d4": "0x0036e9591cef02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e331dc123c692c6fa8fc0cd5c83f3a28d9013ed90266ef14a1b418f2454197a4": "0x008234c2fa5801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c00fa65e05a83080147cce317492a0e666a1c78bfddfe6d51b46d0db25b54cc5": "0x00a29994f40300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa9545512900538bc6ffbdd43f9b69938a43f5073795bfab2de9df840aa4347b": "0x00ace901606903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4b0dfd2227de2f1b0588b27fb63a5aeea396b7fd21f51f5e61be7cf0e311797": "0x009268fea65208000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973cfcaf4e0903d8db4125a2f2d29810a08af34556fa01c201b913132cd16356ce": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a69383b523d6131828456403fc270357768525ef7f0dec8c17e38936d62458f2": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794e26bd60d5401eeeb593664c906a4260794b653da1a63911ee41e011df81e49": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4eb5a80d3f6499d0fd58861912f5adfff048b42fd057e6cfeae0add8a360a95cf": "0x007ae6d4678500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c2a82a7ca7c78f90553ebcc61e889d7e4f3488953d6e1c5552b93dc62ffa3ad": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971eb6d94274fa7bc01759df096c9d1f3fb465521b8b84e8685efa9f43136b19cf": "0x000484564a1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ec30caabee77a4a9ce9bd60c8e96a8661ccca76be5bc2c24301ffb9d7a09926": "0x00de9804010b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dea1062b95a1ff932a7569ed813f11468f457bf2ff0150657a5dbdb8a677f3f1": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f724485f4ab5308fb16482200dde5684b0e0146836c2b03f03c1c0056f667bd": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c341e6645b1317451d5ea6e1f735eb00e1d63bd71020725237684d06f060a60e": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8835f23f30bf64485525782f19b70eda5c22dd35afac03e128e564513b66a10": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704a8b2517a75b8dbc8bfeb7aed28fad5f8f23315e3f90433cbd1ef357c60daa1": "0x00865401b47f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3512369f689cbec16974ec77f6fdf5541bfe6726d8f745905d35dc1a2e7da2f": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5208cbdba231edd4f04daa745a321b1c31b8ab825d02b361ef852750cd53ef1": "0x0076e6a2f50000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c11874611da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab0af96c9d94350c72015a59f3bf17c8a682e1009120026ab04d605b19cad232": "0x003a6373de8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785dcc8d184bc511fe6653e1981fbd0666c5d14b16e6c720e3d313ee0f9d90535": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974faa8a59d4dc6db203199ec3677375d168946b033e0f1c404d31ca95fe7a4be7": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a5b2821c132430e22c7fc76d8baf93f29346c79855d0a3241575e5abbe7ffff": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973398dad16f5305521e1e3380f67a8c06d0c0c03de197cab91c8bfe7d01d124e0": "0x00747465e12500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397370672289ba510a03758a226e3168237a2a3ed4050b732c202cf26d24aed3eab": "0x002caf1a406500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a437dcc0b229de3ffb8288984c6433377ff074367e39c9bf881b91f48939f14": "0x00aac947aa0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ac527cac1cd33c6c873d70069434757b8dbf06274ee4bacedfb0be7db757170": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397247b4d30bbb2a911d8806e2c5203c8a236eed8d2bc636dc0d3ea227bab946df5": "0x00009791882600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397354df7167eafd48698755862192ae0b37aee48a686206711497ba4416f638bbf": "0x00ea6c66a4cf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6312ce2f4e48653f666f9c944828ed65959d9f0644e47318ad699a4ed3eaab7": "0x0074e2759bf100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd66a982c7a0626195bc52619a34a09478f5ae3231f6ceb9b1e02a100a6c3790": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9e0cd7b294115092be477193f1c3b31b71e18ab9612822c5916c7f3165046af": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778c98ca3b99346fe215a33131b2bf9f6824f904a48cd715f5b11716453cf7def": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fd4b96ef6543fa8bb66ec982db68418467d5d2a5334e86dff53d1c88d76592a": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397220cfdd38475e3e5d451c5dc5158eb704abafe2bd9be13ce7de31a2ea1689971": "0x0018dc4ea44500000000000000000000", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d06cbf065af0fc33efb57ddadf42d19dba5e17b32d0df1073df994783b63ab2": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973257e712280e9d1fb0b6f6d548a9005d065628973dbe342f5fa97c7879bedcb5": "0x0094adb1ce9700000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973c86ae114840e37d825672c2bec7ac6f8f89a419ed5d0dd5103bffa73d923dcb9": "0xfcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a51601", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0ba7f983b8dd3bdfa2e5ac1d582063d75183b49f3ac7cd0f17350e6fb4ad717": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788227ca9bc76f0f72d22a2609a87988589c288f1c05bc74f4528c4c4d1156690": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0a824df4457348a140dfe24017db194f233640e99ec2763d93b08ccf21fa3d5": "0x00c029f73d5405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d2563bc02213b8451f5e068530a2843dd7abc6417e29e67178e8eae3b5e78cc": "0x0078ca2c506300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397995e43c001a9f6ebe8ea2eb6dcc6177df5693d5207da9c223c8d3d8ad00498dc": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720798289dc984aa716a2784d8b8ccb4f9413e9349cad67412ba8942446134276": "0x00e45615d51b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b48b110bf4ba7b91a18ebdf61c146ad49c8e05668e5b8e3dbefcbf519adf0f32": "0x0086985bd4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397339115f62e0a5f0702de68f262266de196470a62228a7987df67f81c96238a8c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1c95c5a320a8afceb1e04c073f7f31035d9ccd37105575c251365a56508223e": "0x00e26fad98e612000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ece4f70b3cefa862644a5725c11c08c247b2835d6252f28038ec19b0bb9ab20a": "0x00d6c0fd102d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e49e9344ad7601a3591e06a19ac8b9c420f38d78afc7aada469d0d714aa54797": "0x00246fa6c1c601000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243381b5bd9b04a62616c14b718a534b6cbdc303df70f4a1ffe5c65cee67f955361": "0x009071177792b4000000000000000000409682d806000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397829ad0a116ab8a11380353da58affc5ce4c0ff1c781659c43ed61b3dee8e3d2f": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757ec21ab6695ab295d17684e75453c487312befafe2d26b93d155f893dafb942": "0x00a030937f8901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764875eb01bc6af788c3c31d26fc5e4e8787378a4eae04a00d795cad1f81adf82": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798bd9508a53aa1bb688972851bf0424a1530baca911a2250fb7f4a064f557721": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b87024e52bb095a2083cae78771c38202f742214c69237fb98bc6764e051983": "0x00cc6fa527a006000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710a8ab45e9b45a8c21686c5513ab7dcfa5f664f6dae36e7f3b53cff0f5d4fabe": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c7d8f5be66c2b4b70532c287ab16c0ffbad0c2ef6e0b160aec3db34acf414ed": "0x00828a13987702000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973722f024c8c23dba42c4239f27469279d5017d5b769d01b35d769e04239022dbb": "0x7ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d583ed371e8169c890cd663ff695710d6fb853c34d6722f172135594b99a729": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b429a1871d8a2faba2d97a0a0718446d183c369590c64c8c513572a1268ab76095": "0x004c9749858e05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6458eb8d26660af37c2faea09a11599ca89b85f9e3c2107b134a5578b555ea9": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707ab9dd594f4dbf2c191da3651968cb34d5151497dc4b124a8376bfa39f54fcf": "0x00341a7e291900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718ebec30e87e22b66f38451d845720e58bbf851147b4200924ee28e3f22ff948": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce7e20b990a459a8443e0b3670ede0c1a92781285a93bbbc1cdcd481ca4444eb": "0x0088515494a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b338b0ad71aa9de326d890546d6138d5307d5e67909c7a446fc8fb7a3be700e8": "0x004cc5b2780900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e5454f3364bab53e88a03b781ef5830939ab7febd729453cb1085ab4dfa9b88": "0x00c0e1d0612100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282430def09fdffb7bd58bb75d518d2249595980d1cc1bf2dc93d937c237869a8f1f0": "0x00b072e0e023200000000000000000001f2fee3701000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973308654661e24d83a269e88eb8982eecca4971f8af63ac7dbe6016e33e7febfa": "0x00da02e30fe310000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d7e38c71716c0de7a18f08802575a5785b319ad2b2b7a9e3e3f9722682b7838": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a3d8f06212bf3ce7ff91c8bd512b1165029b3c1a080fdaf174772c41c375607": "0x00c0d0d335a51a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac694ee8d96a0c6bdd326d674a53f4cc39e5f10bd7adf331f604022b04ad4f3d": "0x00aa63d0763c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b23da41df1a59bc8ff0087355ae5a165235a85140df3a2705ba33c4a4562c04c": "0x0004f52ee08d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b470490cb6ec60dc6b19173b661b8cd3092307f849ae2648554c2874b55ad11374": "0x00c06e31d91001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f64a3bb27db1537ac602507c29b91156971f1fd3c5d4d6487c4a7773db6b0b85": "0x00f4fb4e8b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf8d3b3d2143653fc8819c06758165b46d58ba4dc341a5aea9133ceed2a69c17": "0x0042224efe1700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243004def926cde2699f236c59fa11909a2aee554f0fe56fb88b9a9604669a200a9": "0x0044aba9fe9a18000000000000000000ccc0cdee00000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c35e845c54d8010c8eff4ccab96cfab69a229cc701584c09f668f9a6ae9311cb": "0x00741a684c6926000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754d731dd1079e9d06d41ee942f6ca5dd511a052e59ab4672cd9ccbc771bcce4e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9c38f3cb67ad389da1fea02b50934044c8942b235076a2733615be45696e2d4": "0x007ef911b4c709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971372cf7ad7d5fbbf810e611df7f7eebf31e82de6b19cdbc06d913b2cbdd49878": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b5ef48ee1b70d183dd75d55e962e7aee8d2cf86efee716b94e8942b77a2e75": "0x00769ce20bfe00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397982e792cd0b86e3573f32d4e83cac5d3a7af33d5dc32952742122e3e58c01e7d": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397171164e36c6ae5461e56a6e9b052623f3d84ba8166d5ef7bf1f36c21c93795db": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397782573037266ead3a88b370a9178a50d8ffbf73e92b386d998666201edb2b3f6": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9b73a54869acaefd3ffcaed30fdad0d7c1ae6b67f28afa9e65b92197d1fe8b6": "0x0094a032a61000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b44e2aa4f43b1e7480b75e951cc9367626f75f8403bc9d70f8eaa13d552d2dd": "0x00724f344b0a05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768759212e8924e5e295195452fd08a3d1caba0b182590e0b0d1e9a32ea841057": "0x00f2bf116e4100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794d38658f722ad8c9e3fdf95527698a1cc8b77b36fb8c1527da15593a30ec378": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b95ce3677f1d0f62f0f65f43b693a4f52ec1a3d31112d550590d92df03412bb0": "0x00a0ed86271400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb1f28fe192cb557d4b1bcbea1da02b6f8b5fdfd7d705c44a1f21dae311f15da": "0x00d44d82b10900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397229c4b0d50e65af496b3306472337a93ed36c69413e935cc240fb00023564007": "0x0064befdaed000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f932ff39814a267614a8ab7c9e755ae4f1058e4cc415c58cbf154c7e4f70907": "0x000ec19d5bbf09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bf02156495e978eb8ed406023f4cc77cc77d7095abed7a0ec70faff06e8e14a": "0x00d616f8da0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972054580f8eaef85b62f26ecc78f8aa9b74a07632a700983c0dcd27adfceb7b7a": "0x00be6c373c2000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a3b010f7e0b3d115b8200220a679a8f3335a91b48ba574ab94bd24fa4c725af": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d742cf2731edeacd2d1baf6df78afb6321b22fb511463acc1b1a76d7169e1c94": "0x00d26a9b6f0d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75122c088bf3b4e7853c99e49636d9e7c9a351918d70bd6cdf6148b81e68f5706f68": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532140a5f09cf809733cce35f1e7c955aec37d1cc921354afd09761dfe53cb973de8788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455321288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532119f86e142266f7792e51697db6bb58a6a791096b533e2196c7a00f2c6bcdaa09e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320f2a3fa40b4085d8adf7dddf3e3073d45d43cc9e55de72822990fa2d84b18faf2088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320c1e85a736bc96d03373ecee63582d6395f0072537b645ed6310d15523c098906188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320aa4242d7ddc8058699e8d9ab1f810f623827db979c509b6376846b8520196031388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320274996f6e635ee65e9f3cf43e61001b20dafc62ce52407ec51c9b16ca9ec9a57f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455320088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ff88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531fe88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531fd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531fc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531fb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531fa88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531f088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ef88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ee88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ed88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397896422f5233646e6d8bc797b65565527a8d7e0f542465afcee1611612d13f8fe": "0x00407a10f35a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4da2f35c114e20fb2cbd91fc405b01b55351f52d67b07ece1098a99a87fea47f2": "0x001e0f9c057b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f81d492aec4ea43c63935d2f751a13e1b7a3e8a4e630771fd3a8d86cba351b8": "0x004810e3f90a10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dee46171653cac09b2d1a2c9837a7c5186c5703b8573163120dc3d7241cefeb": "0x00a0325a721f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cab17f38e77eebe85314e92ddae79d2700aa6741407e57f1b0792c1b7b3c3fa": "0x00a81d21e0b50a000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b484dd0841a25608fd02380415d38d197c86e52a283ac20ad7a81af41d86aec634": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6777b222c262269dac0c0827a1f9dfa1aaf612c04b0a5abd6161ed0a70635ad": "0x0058692a7db81f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b173661cfecc5e1f85c941d089dd9de22f20d3e03a0c0f63e47b7af40ef44fa": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5124afd69644bd34ed0200f2d8517a264a9b4f675474924a2867424006a5e6e": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc9ac3cc9b683af33c32050cefd0537c96c771931d798d6858b8e5c252e5b21f": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c660feb22fa22977a5d9b631db428315ce49cb7afeb3b154a5c0967f23e99a01": "0x00defe0f6a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752fd2c21f385a37fb1d87d501f2e88d5cd5f9ca9e0773b67e3c4dcce2e05a8ba": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f39c1422cc4dc706e2c6f94f9ddf1c3d91c18011d027fc732b92a29ccb8083ac": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc104196ef44beecbdaa8e10362a09d79ef8971a0618729ee10583a05eee822e": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397533d597f2adc9d49d811f43791770dd9dfb20e4a174fc682cf495ab40075d7b5": "0x0008711b0c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eab4b1bd47696057bde71475818281cd44c69dfec55ad3ad41dbb8b90afc23d9": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793077e5016b943743b2d61870baf68d5b53386dedd3abf30970c7686e610d48b": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397996613041f3f0e70cfa79a798dd9bb49be0daa10c0b3c8bfbf600bd24241e151": "0x00f424648f0c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d228d43339f8a0079374f79c73208a869c3d9a14d17a2597d132022617a289ba": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977810ab558742e904081bf499861a76ad7609566d4243ad39febb66a46a4bfa2c": "0x0012a3c85efa00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b436d2aac8ef5db749006e32aa850ee6cd732276ddc239a1a7d39a1abdd9003090": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b9eaee18fa03d2a8d852e58f35244ac4f15d38d42377be65125a73493f75c02": "0x0052f09cb80800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d56a060dbc7fab1ba55722fef90cb348328bbb736a77cf01b8f19c24f56d099": "0x00a630de2a5002000000000000000000", - "0x3a636f6465": "0x0061736d0100000001a4022b60037f7f7f017f60027f7f017f60027f7f0060017f0060017f017e60037f7e7e0060017e017f60027e7e0060017e017e60017e006000017e60037f7e7f017f6000017f60027f7e017e60047f7e7e7e017f60027f7e017f60037e7e7f017e60017f017f60037f7f7e017e60027f7f017e60000060037f7f7f0060047f7f7f7f0060027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60027f7e0060067f7f7f7f7f7f0060057f7f7f7f7f0060047f7f7e7e0060067f7f7e7e7f7f0060027e7f0060077f7e7e7e7e7e7e0060087e7e7e7e7e7e7e7e017f60057f7f7f7e7e0060067f7f7f7e7e7f0060067f7f7f7f7e7e0060047f7e7e7e0060077f7f7f7f7f7e7e0060057f7e7e7f7f0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002ca0a2103656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000503656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000603656e76196578745f73746f726167655f7365745f76657273696f6e5f31000703656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000603656e76196578745f73746f726167655f6765745f76657273696f6e5f31000803656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000903656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31000a03656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000803656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000903656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f31000b03656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000903656e76206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31000603656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000603656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31000b03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000903656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000903656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31000c03656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31000d03656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31000e03656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000503656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31000f03656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31000603656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31000603656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001003656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000803656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31000a03656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001103656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000303656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000403656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31001203656e762c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f31001303656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31001303656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31000f03c604c4041111030300001111131403021500140216030001010201021703041819020016010101110101010101020116030103000101000101000100010102021502010201000101010203021602020302020202020202020202010202030202020202021101110215020202021503021503151a021503010303020202140302021501020215020215020215020203020c020202020203150202011b010215021402021502020202151c030303150202021615150202020311021c1102030302150502021c0302030203030202020302020202151d19151502031e151502150303021502030202021615021e15151515150303030215030202021d030202110202021515030302020201030302021f16030202150319111603021511030302020202140203022021011c161d07050703140202021502021503031502020503050322020202021d0303020302110302030303020302021903030302020202010101020214231511020224050303030202020215030302160202011602020102030202030203020202251515151115151515020215021502021602150203030202151414020302030302030202021102161602030303020202151503020202260303030303030303030303030303030303030303021502140303030303030303020202020213130302160213131302131313131315071302031c001313131313131313131315131300010103030215150303030302020202031d02270202031403021502020202020302152202020303020303030315151101010205011c010000000028282929292a0407017001b601b60105030100120619037f01418080c0000b7f0041f8bec6000b7f0041f8bec6000b0795061c066d656d6f72790200195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000a5f5f646174615f656e6403010b5f5f686561705f62617365030209686173685f7465737400290c436f72655f76657273696f6e00810412436f72655f657865637574655f626c6f636b00820415436f72655f696e697469616c697a655f626c6f636b008704114d657461646174615f6d657461646174610088041c426c6f636b4275696c6465725f6170706c795f65787472696e7369630089041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b008b0420426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373008c041c426c6f636b4275696c6465725f636865636b5f696e686572656e7473008d0418426c6f636b4275696c6465725f72616e646f6d5f73656564008e042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e008f04214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b65720092041850617261636861696e486f73745f76616c696461746f72730097041950617261636861696e486f73745f647574795f726f737465720098041f50617261636861696e486f73745f6163746976655f70617261636861696e730099041e50617261636861696e486f73745f70617261636861696e5f737461747573009a041c50617261636861696e486f73745f70617261636861696e5f636f6465009b041550617261636861696e486f73745f696e6772657373009c041e4772616e6470614170695f6772616e6470615f617574686f726974696573009d0415426162654170695f636f6e66696775726174696f6e009e0421417574686f72697479446973636f766572794170695f617574686f726974696573009f042153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300a0041d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500a204205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00a30409ce02010041010bb50137464b41d8044243618201594e9f0157940177fc02fb02b90149323334358f025a3b4f5051525354555f60676263646566fd029901f1029801ea019701e602ff03e901e801ef01ee01ed01ec01ad02da0483028202aa02da03a902af02ae02b002b602a302e802fe03ef02c203fa02f902f802f7028e038d038b039203a003a303a203c503d504d903d80396019501e003b902b301cd049f03a103f403f503f603b903e103ed02ec02e203ee0290039103a804a704bc04ba04e303c404f002e403e502e402e503e702ca04cb04a802a702e603c901c701e703e701e601e803eb01d103cf03e903d003f502f402ea03f602f703f803de0389038803eb038a03c103c303ec03c40381028e02ce04cf04d703dc03ed03b502ba02ee03a202a102ef03f903fa03df03fb03fd03fc038004a404a504a604c304c204c104c004bf04bd04c504cc0447480af39638c4040600200010220b06002000101a0b0600200010240b06002000101b0b0a0020002001200210260b2801017f02402002101a2203450d002003200020022001200120024b1b10dc041a2000101b0b20030b0600200010280b1c01017f02402000101a2201450d0020014100200010db041a0b20010bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010e104200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010e104200241086a290300210420022903002103200241206a2400200420037c42c300850b0a00418080c000102b000b5b02017f037e230041306b220124002000290208210220002902102103200029020021042001420437031020014201370204200120043703182001200141186a36020020012003370328200120023703202001200141206a1038000b870301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d0041c080c00041004100102d000b024002402006410f4b0d002003280204450d010b200620066a220720064f0d010b4101210541002107200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041012105410021070c010b200710212205450d020b200241003602102002200736020c200220053602082002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41d080c000200241186a102e0d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b102f000b200741011030000b41e880c0004133200241186a419c81c0001031000b6c01017f230041306b2203240020032002360204200320013602002003411c6a41023602002003412c6a41013602002003420237020c200341f881c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20001038000bbd0801087f230041c0006b22032400200341246a2001360200200341346a200241146a2802002204360200200341033a00382003412c6a2002280210220520044103746a36020020034280808080800437030820032000360220410021062003410036021820034100360210200320053602302003200536022802400240024002400240200228020822070d0020022802002108200228020422092004200420094b1b220a450d0141012104200020082802002008280204200128020c1100000d04200841086a210241012106034002402005280200200341086a200541046a280200110100450d00410121040c060b2006200a4f0d02200241046a210020022802002101200541086a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c050b0b20022802002108200228020422092002410c6a2802002205200520094b1b220a450d0041012104200020082802002008280204200128020c1100000d03200741106a2105200841086a21024101210603402003200541786a28020036020c2003200541106a2d00003a003820032005417c6a28020036020841002101410021040240024002400240200541086a2802000e0400010203000b2005410c6a2802002100410121040c020b02402005410c6a2802002207200328023422044f0d0041002104200328023020074103746a22072802044102470d0220072802002802002100410121040c020b41b087c00020072004102d000b4100210420032802282207200328022c460d002003200741086a3602284100210420072802044102470d0020072802002802002100410121040b2003200036021420032004360210024002400240024002400240024020052802000e0404010006040b20032802282200200328022c470d010c050b200541046a2802002200200328023422044f0d01200328023020004103746a22002802044102470d04200028020028020021040c030b2003200041086a36022820002802044102470d03200028020028020021040c020b41b087c00020002004102d000b200541046a28020021040b410121010b2003200436021c2003200136021802400240200541706a2802004101460d0020032802282204200328022c460d042003200441086a3602280c010b200541746a2802002204200328023422004f0d04200328023020044103746a21040b02402004280200200341086a200441046a280200110100450d00410121040c050b2006200a4f0d01200241046a210020022802002101200541246a2105200241086a210241012104200641016a2106200328022020012000280200200328022428020c110000450d000c040b0b0240200920064d0d00410121042003280220200820064103746a22052802002005280204200328022428020c1100000d030b410021040c020b418086c000102b000b41c087c00020042000102d000b200341c0006a240020040b0500102a000b2400410041bcb8c600ad4280808080f0008441c4b8c600ad4280808080a00484100000000b810101017f230041c0006b220424002004200136020c2004200036020820042003360214200420023602102004412c6a41023602002004413c6a41033602002004420237021c200441f8a9c500360218200441043602342004200441306a3602282004200441106a3602382004200441086a360230200441186a4190adc0001038000b02000bb10101037f0240024002400240200028020022002802042203200028020822046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102121030c010b200028020020032004102521030b2003450d012000200436020420002003360200200028020821040b2000200420026a360208200320046a2001200210dc041a41000f0b200441011030000b102a000ba70401047f230041106b220224002000280200210002400240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c040b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c030b0240200028020822032000280204470d00200341016a22042003490d06200341017422052004200520044b1b22044100480d060240024020030d002004102121030c010b200028020020032004102521030b2003450d022000200436020420002003360200200028020821030b200028020020036a20013a00002000200028020841016a3602080c030b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b200441011030000b0240024020002802042204200028020822036b2001490d00200028020021040c010b200320016a22052003490d03200441017422032005200320054b1b22034100480d030240024020040d002003102121040c010b200028020020042003102521040b2004450d022000200336020420002004360200200028020821030b2000200320016a360208200420036a2002410c6a200110dc041a0b200241106a240041000f0b200341011030000b102a000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d080c000200241086a102e2101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c2002419484c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a484c0001038000b0b002000350200200110390b4702017f017e230041206b2202240020012902002103200241146a20012902083702002002200337020c200220003602082002418882c000360204200241013602002002103a000bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a200020004290ce0080220442f0b17f7e7ca7220641ffff037141e4006e220741017441ca82c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441ca82c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441ca82c0006a2f00003b00000b024002402005410a480d00200241096a2003417e6a22036a200541017441ca82c0006a2f00003b00000c010b200241096a2003417f6a22036a200541306a3a00000b200141c4b8c6004100200241096a20036a412720036b103c2103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141b4b8c6003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a102c410141bcb8c60041072001280210200128021810d90400000b0d0042e7d9f4a2e3fcafadee000bc50501067f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001466a2108200a41016a210a2009417f6a22090d000b0b200720026a20086b21070b412b418080c40020061b21080240024020002802084101460d004101210a2000200820012002103d0d012000280218200320042000411c6a28020028020c1100000f0b02402000410c6a280200220920074b0d004101210a2000200820012002103d0d012000280218200320042000411c6a28020028020c1100000f0b0240024020054108710d00200920076b21094100210a024002400240410120002d0030220720074103461b0e0402000100020b2009210a410021090c010b2009410176210a200941016a41017621090b200a41016a210a0340200a417f6a220a450d0220002802182000280204200028021c280210110100450d000b41010f0b4101210a200041013a0030200041303602042000200820012002103d0d01200920076b21084100210a024002400240410120002d0030220920094103461b0e0402000100020b2008210a410021080c010b2008410176210a200841016a41017621080b200a41016a210a02400340200a417f6a220a450d0120002802182000280204200028021c280210110100450d000b41010f0b200028020421094101210a200028021820032004200028021c28020c1100000d01200841016a2108200028021c210220002802182100034002402008417f6a22080d0041000f0b4101210a200020092002280210110100450d000c020b0b200028020421074101210a2000200820012002103d0d00200028021820032004200028021c28020c1100000d00200941016a2108200028021c210920002802182100034002402008417f6a22080d0041000f0b4101210a200020072009280210110100450d000b0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420237020c200241dc84c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41ec84c0001038000b8307010c7f200028021021030240024002400240200028020822044101460d0020030d012000280218200120022000411c6a28020028020c11000021030c030b2003450d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20040d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a210a024002400240410020002d0030220320034103461b0e0402000100020b200a21074100210a0c010b200a4101762107200a41016a410176210a0b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bcd0801067f230041f0006b220424002004200336020c20042002360208410121052001210602402001418102490d00410020016b2107418002210803400240200820014f0d00200020086a2c000041bf7f4c0d0041002105200821060c020b2008417f6a21064100210520084101460d01200720086a21092006210820094101470d000b0b200420063602142004200036021020044100410520051b36021c200441c4b8c60041a285c00020051b3602180240024002400240200220014b22080d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200420023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210820024101460d0420092002462106200821022006450d000c040b0b20042002200320081b360228200441306a41146a4103360200200441c8006a41146a4104360200200441d4006a410436020020044203370234200441a885c0003602302004410136024c2004200441c8006a3602402004200441186a3602582004200441106a3602502004200441286a360248200441306a41c085c0001038000b200441e4006a4104360200200441c8006a41146a4104360200200441d4006a4101360200200441306a41146a410436020020044204370234200441d085c0003602302004410136024c2004200441c8006a3602402004200441186a3602602004200441106a36025820042004410c6a3602502004200441086a360248200441306a41f085c0001038000b200221080b024020082001460d00410121060240024002400240200020086a22092c00002202417f4a0d0041002105200020016a220621010240200941016a2006460d00200941026a210120092d0001413f7121050b2002411f712109200241ff017141df014b0d01200520094106747221010c020b2004200241ff0171360224200441286a21020c020b4100210020062107024020012006460d00200141016a210720012d0000413f7121000b200020054106747221010240200241ff017141f0014f0d0020012009410c747221010c010b41002102024020072006460d0020072d0000413f7121020b20014106742009411274418080f00071722002722201418080c400460d020b2004200136022441012106200441286a21022001418001490d00410221062001418010490d0041034104200141808004491b21060b200420083602282004200620086a36022c200441306a41146a4105360200200441ec006a4104360200200441e4006a4104360200200441c8006a41146a4106360200200441d4006a4107360200200442053702342004419886c000360230200420023602582004410136024c2004200441c8006a3602402004200441186a3602682004200441106a3602602004200441246a3602502004200441206a360248200441306a41c086c0001038000b418086c000102b000b1000200120002802002000280204103f0b6f01037f230041206b2202240002402000280200200110450d002001411c6a280200210320012802182104200242043703182002420137020c200241a887c00036020820042003200241086a102e0d002000280204200110452101200241206a240020010f0b200241206a240041010bd90a02077f017e410121020240200128021841272001411c6a2802002802101101000d0041022103024002400240024002402000280200220241776a2200411e4d0d00200241dc00470d010c020b41f40021040240024020000e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021040c040b41ee0021040c030b0240024002400240024002400240200210440d00024002400240024002400240200241808004490d00200241808008490d0120024190fc476a4190fc0b490d0a200241e28b746a41e28d2c490d0a2002419fa8746a419f18490d0a200241dee2746a410e490d0a200241feffff0071419ef00a460d0a200241a9b2756a4129490d0a200241cb91756a410a4d0d0a410121030c0e0b20024180fe0371410876210541e093c000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d092008210620072100200741b294c000470d010c090b20082006490d02200841a5024b0d03200641b294c0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0c0b0b2008210620072100200741b294c000470d000c080b0b20024180fe03714108762105419199c000210041002106200241ff017121040340200041026a2107200620002d000122036a2108024020002d000022002005460d00200020054b0d072008210620072100200741d799c000470d010c070b20082006490d03200841a6014b0d04200641d799c0006a2100024003402003450d012003417f6a210320002d00002106200041016a210020062004470d000c0b0b0b2008210620072100200741d799c000470d000c060b0b20062008103e000b200841a5021036000b20062008103e000b200841a6011036000b200241017267410276410773ad4280808080d0008421090c040b200241ffff0371210441fd9ac00021034101210002400340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b200841959ec000460d02200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d0320004101732100200341959ec000470d000c030b0b418086c000102b000b200241ffff0371210441d796c0002103410121000340200341016a21080240024020032d0000220641187441187522074100480d00200821030c010b2008419199c000460d05200741ff007141087420032d0001722106200341026a21030b200420066b22044100480d01200041017321002003419199c000470d000b0b4101210320004101710d030b200241017267410276410773ad4280808080d0008421090b410321030c020b418086c000102b000b0b200221040b03402003210641dc0021004101210241012103024002400240024020060e0401020300010b024002400240024002402009422088a741ff01710e06050403020100050b200942ffffffff8f60834280808080c000842109410321030c060b200942ffffffff8f608342808080803084210941f5002100410321030c050b200942ffffffff8f608342808080802084210941fb002100410321030c040b20042009a72206410274411c7176410f712203413072200341d7006a2003410a491b210002402006450d002009427f7c42ffffffff0f83200942808080807083842109410321030c040b200942ffffffff8f6083428080808010842109410321030c030b200942ffffffff8f6083210941fd002100410321030c020b20012802184127200128021c2802101101000f0b41002103200421000b20012802182000200128021c280210110100450d000b0b20020b950201017f024002402000418010490d00024002400240024002400240200041808004490d002000410c7641706a2201418002490d0141b89ec0002001418002102d000b200041067641606a220141df074b0d01200141808ac0006a2d0000220141c9004b0d02200141037441909fc0006a21010c060b200141e091c0006a2d00004106742000410676413f7172220141ff034b0d02200141e0a3c0006a2d0000220141394b0d03200141037441e0a7c0006a21010c050b41989ec000200141e007102d000b41a89ec000200141ca00102d000b41c89ec0002001418004102d000b41d89ec0002001413a102d000b200041037641f8ffffff017141e887c0006a21010b200129030042012000413f71ad86834200520b9b0201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad2001103921000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141a085c0004102200220036a4180016a410020036b103c21000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141a085c0004102200220036a4180016a410020036b103c21000b20024180016a240020000f0b2000418001103e000b2000418001103e000b0b002000350200200110390b1c00200128021841a8acc000410b2001411c6a28020028020c1100000b1c00200128021841b3acc000410e2001411c6a28020028020c1100000b15002001200028020022002802002000280204103f0b5e01017f230041306b220224002002200136020c20022000360208200241246a410136020020024201370214200241b4b8c6003602102002410436022c2002200241286a3602202002200241086a360228200241106a4180adc0001038000b140020002802002001200028020428020c1101000bf30201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b20042003103e000b20002005360204200020033602000b2601017f200028020022012802002001280204200028020428020020002802082802001040000b0b002000310000200110390b02000ba20401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041ecadc0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a20012002104c024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610de04450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b104c2003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b200641041036000b20012002410020041040000b20012002200420021040000b410121040b200341306a240020040bf90101017f230041106b220224002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a200110502101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d4adc000200241086a102e2101200241206a240020010b0d0020002802002001200210500b800201017f230041106b22022400200028020021002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b20002002410c6a200110502101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d4adc000200241086a102e2101200241206a240020010bf40202037f057e230041d0006b2203240041012104024020002d00040d0020002d000521040240200028020022052d00004104710d000240200441ff0171450d0041012104200528021841d2adc00041022005411c6a28020028020c1100000d02200028020021050b20012005200228020c11010021040c010b0240200441ff01710d0041012104200528021841b7adc00041012005411c6a28020028020c1100000d01200028020021050b41012104200341013a00172003200341176a3602102005290208210620052902102107200341346a41b8adc000360200200320052902183703082005290220210820052902282109200320052d00303a00482005290200210a200320093703402003200837033820032007370328200320063703202003200a3703182003200341086a3602302001200341186a200228020c1101000d00200328023041d0adc0004102200328023428020c11000021040b200041013a0005200020043a0004200341d0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a102e2100200241206a240020000bb50f020d7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a21062000210741002105410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210b0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210b0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220b418080c400470d020c040b200b41ff0171210b0b200a21070b4102210a024002400240024002400240200b41776a220c411e4d0d00200b41dc00470d010c020b41f400210e02400240200c0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b02400240200b10440d00024002400240024002400240024002400240200b41808004490d00200b41808008490d01200b4190fc476a4190fc0b490d09200b41e28b746a41e28d2c490d09200b419fa8746a419f18490d09200b41dee2746a410e490d09200b41feffff0071419ef00a460d09200b41a9b2756a4129490d09200b41cb91756a410a4d0d090c0e0b200b4180fe0371410876210f41e093c000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d08200e2104200d210c200d41b294c000470d010c080b200e2004490d02200e41a5024b0d03200441b294c0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0b0b0b200e2104200d210c200d41b294c000470d000c070b0b200b4180fe0371410876210f419199c000210c410021040340200c41026a210d2004200c2d0001220a6a210e0240200c2d0000220c200f460d00200c200f4b0d06200e2104200d210c200d41d799c000470d010c060b200e2004490d03200e41a6014b0d04200441d799c0006a210c02400340200a450d01200a417f6a210a200c2d00002104200c41016a210c2004200b41ff0171470d000c0a0b0b200e2104200d210c200d41d799c000470d000c050b0b2004200e103e000b200e41a5021036000b2004200e103e000b200e41a6011036000b200b41ffff0371210e41fd9ac000210a4101210c02400340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d41959ec000460d02200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d03200c410173210c200a41959ec000470d000c030b0b418086c000102b000b200b41ffff0371210e41d796c000210a4101210c0340200a41016a210d02400240200a2d00002204411874411875220f4100480d00200d210a0c010b200d419199c000460d04200f41ff0071410874200a2d0001722104200a41026a210a0b200e20046b220e4100480d01200c410173210c200a419199c000470d000b0b200c4101710d050b200b41017267410276410773ad4280808080d0008421104103210a0c020b418086c000102b000b0b200b210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110000450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a104d000b0340200a210c4101210441dc0021054101210a024002400240024002400240200c0e0402010500020b02400240024002402010422088a741ff01710e06050302010006050b201042ffffffff8f60834280808080308421104103210a41f50021050c070b201042ffffffff8f60834280808080208421104103210a41fb0021050c060b200e2010a7220c410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200c450d002010427f7c42ffffffff0f832010428080808070838421100c050b201042ffffffff8f60834280808080108421100c040b201042ffffffff8f608321104103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200b418001490d004102210a200b418010490d0041034104200b41808004491b210a0b200a20086a21050c040b201042ffffffff8f60834280808080c0008421100b4103210a0b20022802182005200228021c2802101101000d050c000b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341206a240020040f0b20002001200520011040000b8b0101037f23004180016b2202240020002802002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a2100200341047622030d000b024020004180016a2203418101490d002003418001103e000b200141a085c0004102200220006a4180016a410020006b103c210020024180016a240020000b1c00200128021841b1bac00041052001411c6a28020028020c1100000b800401087f200028020421020240024002400240024020002802004101460d00200041086a28020022002001105c20004103742200450d01200220006a2103200141086a2104034020022802002105200241046a28020022002001105c02400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d06200741017422082009200820094b1b22084100480d060240024020070d002008102121070c010b200128020020072008102521070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010dc041a200241086a22022003470d000c020b0b2000410c6a28020022002001105c20004103742200450d00200220006a2103200141086a2104034020022802002105200241046a28020022002001105c02400240200141046a22062802002207200428020022086b2000490d00200128020021070c010b200820006a22092008490d05200741017422082009200820094b1b22084100480d050240024020070d002008102121070c010b200128020020072008102521070b2007450d042001200736020020062008360200200428020021080b2004200820006a360200200720086a2005200010dc041a200241086a22022003470d000b0b0f0b200841011030000b200841011030000b102a000b920701037f0240024002400240024002402000413f4b0d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102121030c010b200128020020022004102521030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a20004102743a00000f0b200041808001490d032000418080808004490d020c010b200441011030000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102121030c010b200128020020022004102521030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a000002400240200141046a2802002203200428020022026b4104490d00200128020021030c010b200241046a22042002490d05200341017422022004200220044b1b22024100480d050240024020030d002002102121030c010b200128020020032002102521030b2003450d0220012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20003600000f0b200441011030000b200241011030000b024002400240200141046a2802002203200141086a28020022026b4104490d00200128020021030c010b200241046a22042002490d03200341017422022004200220044b1b22024100480d030240024020030d002002102121030c010b200128020020032002102521030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241046a360200200320026a20004102744102723600000f0b200241011030000b024002400240200141046a2802002203200141086a28020022026b4102490d00200128020021030c010b200241026a22042002490d02200341017422022004200220044b1b22024100480d020240024020030d002002102121030c010b200128020020032002102521030b2003450d0120012003360200200141046a2002360200200141086a28020021020b200141086a200241026a360200200320026a20004102744101723b00000f0b200241011030000b102a000b951d010a7f230041106b2203240020012002105c024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001450d00200141d8006c2104410021050340200020056a220641046a2802002107200641086a28020022082002105c02400240200241046a2209280200220a200241086a2201280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d18200a410174220b200c200b200c4b1b220b4100480d1802400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d032002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a200641d4006a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1820084101742207200b2007200b4b1b22074100480d180240024020080d0020071021210b0c010b2002280200200820071025210b0b200b450d042002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a000002402006410c6a2d0000220841024b0d0002400240024020080e03000102000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d082002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a0000200641146a2802002107200641186a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1b200a410174220b200c200b200c4b1b220b4100480d1b02400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d092002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a0c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d092002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a20084101742207200b2007200b4b1b22074100480d1a0240024020080d0020071021210b0c010b2002280200200820071025210b0b200b450d0a2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d0b2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a200641206a2802002107200641246a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d0c2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a2006410e6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a20084101742207200b2007200b4b1b22074100480d1a0240024020080d0020071021210b0c010b2002280200200820071025210b0b200b450d0d2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d0d2002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00002006410d6a2d0000210a02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1920084101742207200b2007200b4b1b22074100480d190240024020080d0020071021210b0c010b2002280200200820071025210b0b200b450d0e2002200b36020020092007360200200128020021080b2001200841016a360200200b20086a200a3a0000200641146a2802002107200641186a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d0f2002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a200641206a2802002107200641246a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d102002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a2006412c6a2802002107200641306a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d112002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a2006410e6a2d0000220841044b0d000240024002400240024020080e050001020304000b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1d2008410174220a200b200a200b4b1b220a4100480d1d0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41003a00000c040b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1c2008410174220a200b200a200b4b1b220a4100480d1c0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41013a00000c030b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1b2008410174220a200b200a200b4b1b220a4100480d1b0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41023a00000c020b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d1a2008410174220a200b200a200b4b1b220a4100480d1a0240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41033a00000c010b02400240200928020020012802002208460d002002280200210b0c010b200841016a220b2008490d192008410174220a200b200a200b4b1b220a4100480d190240024020080d00200a1021210b0c010b20022802002008200a1025210b0b200b450d162002200b3602002009200a360200200128020021080b2001200841016a360200200b20086a41043a00000b02400240200641346a2802004101460d002003200641386a2802002006413c6a28020028020c11020020032802002107200328020822082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d1a200a410174220b200c200b200c4b1b220b4100480d1a02400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a2003280204450d01200710230c010b200641386a2802002107200641c0006a28020022082002105c024002402009280200220a2001280200220b6b2008490d002002280200210a0c010b200b20086a220c200b490d19200a410174220b200c200b200c4b1b220b4100480d1902400240200a0d00200b1021210a0c010b2002280200200a200b1025210a0b200a450d182002200a3602002009200b3602002001280200210b0b2001200b20086a360200200a200b6a2007200810dc041a0b200641c4006a2002105b2004200541d8006a2205470d000b0b200341106a24000f0b200b41011030000b200741011030000b200a41011030000b200b41011030000b200a41011030000b200741011030000b200b41011030000b200b41011030000b200741011030000b200a41011030000b200741011030000b200b41011030000b200b41011030000b200b41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200b41011030000b200b41011030000b102a000bfe0601087f20002802042102024002400240024002400240024020002802004101460d00200041086a28020022002001105c2000450d01200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a28020022062001105c0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102121070c010b200128020020072008102521070b2007450d042001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610dc041a2000417c6a2802002105200028020022062001105c0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d08200741017422082009200820094b1b22084100480d080240024020070d002008102121070c010b200128020020072008102521070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610dc041a200041186a2100200341686a22030d000c020b0b2000410c6a28020022002001105c2000450d00200041186c2103200241146a2100200141086a2102200141046a21040340200041706a2802002105200041746a28020022062001105c0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102121070c010b200128020020072008102521070b2007450d052001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610dc041a2000417c6a2802002105200028020022062001105c0240024020042802002207200228020022086b2006490d00200128020021070c010b200820066a22092008490d07200741017422082009200820094b1b22084100480d070240024020070d002008102121070c010b200128020020072008102521070b2007450d062001200736020020042008360200200228020021080b2002200820066a360200200720086a2005200610dc041a200041186a2100200341686a22030d000b0b0f0b200841011030000b200841011030000b200841011030000b200841011030000b102a000b040041010bb60101017f230041c0006b2202240020024100360210200242013703082002410836021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241b4b8c6003602282002200241186a360238200241246a4188aec000200241286a102e1a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410000240200228020c450d00200228020810230b200241c0006a24000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a102e2101200241206a240020010bc00101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102121030c010b200028020020032004102521030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210dc041a41000f0b200441011030000b102a000bab0301047f230041106b22022400200028020021002002410036020c02400240200141ff004b0d00200220013a000c410121010c010b0240200141ff0f4b0d0020022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b0240200141ffff034b0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102121030c010b200028020020032004102521030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110dc041a200241106a240041000f0b200441011030000b102a000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a4188aec000200241086a102e2101200241206a240020010b040041000b02000b02000bf00101067f2001280204210202400240024003402001280200220341086a210420032f01062205410374210141002106024003402001450d0141d8b9c0002004410810de042207450d03200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b02402002450d002002417f6a2102200320054102746a41e4016a21010c010b0b200041e0b9c000360204200041086a41283602000c010b200341e0006a2006410c6c6a220128020841074b0d0120004188bac000360204200041086a41293602000b200041013602000f0b200041086a2001280200290000370300200041003602000bd40201027f0240024002402002450d002002417f6a2104024020012d0000220241037122054103460d000240024020050e03040001040b2004450d0220012d0001410874200272220241ffff0371418002490d02200241fcff037141027621020c040b20044103490d0120012f0001200141036a2d000041107472410874200272220241808004490d01200241027621020c030b200241034b0d0020044104490d002001280001220241ffffffff034b0d020b200041013602000f0b200241027621020b0240200220036a220120024f0d00200041013602000f0b41012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000bc43102077f027e230041306b220224002002410036021820024201370310200128021021030240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410410212204450d0020024284808080c000370214200220043602102004200336000020012d0038210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0220022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0039210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0320022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003a210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0420022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003b210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0520022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003c210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0620022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003d210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0720022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003e210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0820022006360214200220033602100b2002200441016a360218200320046a20053a000020012d003f210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0920022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0040210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0a20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0041210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0b20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0042210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0c20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0043210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0d20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0044210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0e20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0045210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d0f20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0046210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1020022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0047210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1120022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0048210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1220022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0049210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1320022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004a210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1420022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004b210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1520022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004c210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1620022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004d210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1720022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004e210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1820022006360214200220033602100b2002200441016a360218200320046a20053a000020012d004f210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1920022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0050210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1a20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0051210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1b20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0052210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1c20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0053210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1d20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0054210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1e20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0055210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d1f20022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0056210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d2020022006360214200220033602100b2002200441016a360218200320046a20053a000020012d0057210502400240200228021420022802182204460d00200228021021030c010b200441016a22032004490d28200441017422062003200620034b1b22064100480d280240024020040d002006102121030c010b200228021020042006102521030b2003450d2120022006360214200220033602100b2002200441016a360218200320046a20053a0000200141d8006a2107410021030340200720036a2d0000210602400240200228021420022802182204460d00200228021021050c010b200441016a22052004490d29200441017422082005200820054b1b22084100480d290240024020040d002008102121050c010b200228021020042008102521050b2005450d2320022008360214200220053602100b2002200441016a360218200520046a20063a0000200341016a220341c000470d000b200128021421062001411c6a2802002204200241106a105c0240024020022802142205200228021822036b2004490d00200228021021050c010b200320046a22082003490d28200541017422072008200720084b1b22084100480d280240024020050d002008102121050c010b200228021020052008102521050b2005450d2320022008360214200220053602100b2002200320046a360218200520036a2006200410dc041a20012802202103200141286a2802002204200241106a105c02402004450d002003200441246c6a21070340200328020021060240024020022802142205200228021822046b4104490d00200228021021050c010b200441046a22082004490d2a200541017422042008200420084b1b22044100480d2a0240024020050d002004102121050c010b200228021020052004102521050b2005450d262002200436021420022005360210200228021821040b2002200441046a360218200520046a20063600002002200241106a36020c200341046a2002410c6a106b200341246a22032007470d000b0b200141086a29030021092001290300210a0240024020022802142203200228021822046b4110490d00200228021021030c010b200441106a22052004490d28200341017422042005200420054b1b22044100480d280240024020030d002004102121030c010b200228021020032004102521030b2003450d252002200436021420022003360210200228021821040b200320046a220320093700082003200a3700002002200441106a3602182002200241106a36020c20014198016a2002410c6a106b200128022c2104200141346a2802002203200241106a105c02402003450d0020034104742108034002402004410c6a2d000022034103714103460d004100210602400240024020030e03020001020b410121060c010b410221060b02400240200228021420022802182203460d00200228021021050c010b200341016a22052003490d2b200341017422012005200120054b1b22014100480d2b0240024020030d002001102121050c010b200228021020032001102521050b2005450d292002200136021420022005360210200228021821030b2002200341016a360218200520036a20063a00000b20042802002101200441086a2802002203200241106a105c0240024020022802142206200228021822056b2003490d00200228021021060c010b200520036a22072005490d2a200641017422052007200520074b1b22054100480d2a0240024020060d002005102121060c010b200228021020062005102521060b2006450d292002200536021420022006360210200228021821050b200441106a21042002200520036a360218200620056a2001200310dc041a200841706a22080d000b0b20022802142103200241106a41186a2205200235021842208620022802102201ad841001220441186a290000370300200241106a41106a2206200441106a290000370300200241106a41086a2208200441086a2900003703002002200429000037031020041023200041186a2005290300370000200041106a2006290300370000200041086a20082903003700002000200229031037000002402003450d00200110230b200241306a24000f0b410441011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200841011030000b200841011030000b200441011030000b200441011030000b200141011030000b200541011030000b102a000bd20501037f20002d0000210202400240024002400240024002400240410110212203450d00200320023a000020002d0001210220034101410210252203450d01200320023a000120002d0002210220034102410410252203450d02200320023a0002200320002d00033a000320002d0004210220034104410810252203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d0008210220034108411010252203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d0010210220034110412010252203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f024002402001280200220041046a2802002202200041086a28020022016b4120490d00200028020021020c010b200141206a22042001490d08200241017422012004200120044b1b22014100480d080240024020020d002001102121020c010b200028020020022001102521020b2002450d0720002002360200200041046a2001360200200041086a28020021010b200041086a200141206a360200200220016a220041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a29000037000020002003290000370000200310230f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b200141011030000b102a000bce0101027f0240200041186a280200450d00200028021410230b0240200041246a280200450d00200028022010230b0240200041346a2802002201450d00200028022c21022001410474210103400240200241046a280200450d00200228020010230b200241106a2102200141706a22010d000b0b0240200041306a280200450d00200028022c10230b0240200041bc016a280200450d0020002802b80110230b200041c8016a410036020020002802c4012102200041013602c4010240200041cc016a280200450d00200210230b0bb005020c7f047e230041f0006b2202240020022001106e0240024002400240024020022802000d00200128020441286e220341286c2204417f4c0d02200228020421050240024020040d00410821060c010b200410212206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4108490d01200b290001210e2001200b41096a3602002001200c41786a360204200241086a41086a220c200d290300370300200241086a41106a2209200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42287e220f422088a70d00200fa7220441004e0d030b102a000b200441ff0171450d00200241003a00680b200041003602002003450d05200610230c050b0240024020080d002004102121060c010b2006200841286c2004102521060b2006450d070b2006200841286c6a22042002290308370300200c290300210f20092903002110200a29030021112004200e370320200441186a2011370300200441106a2010370300200441086a200f37030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b102f000b200441081030000b200441081030000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000b960301097f230041106b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a3602002006450d0020042d0003210620012003417c6a3602042001200441046a360200200241086a2001106e20022802080d022001280204200228020c2204490d022004417f4c0d0302400240024020040d004101210341010d010c050b200410272203450d0120012802042004490d0320032001280200200410dc0421092001280204220a2004490d062001200a20046b3602042001200128020020046a3602002009450d040b20002004360208200020033602042000410c6a2004360200200020074108742005722008411074722006411874723602000c060b200441011030000b200041003602040c040b200310230b200041003602040c020b102f000b2004200a103e000b200241106a24000bdd0203037f017e027f230041106b22022400024002400240410110212203450d00200242818080801037020420022003360200200320002d00003a0000200028020422002802002103200028020822002002105c02402000450d002003200041286c6a21040340200320021071200341206a29030021050240024020022802042206200228020822006b4108490d00200228020021060c010b200041086a22072000490d05200641017422002007200020074b1b22004100480d050240024020060d002000102121060c010b200228020020062000102521060b2006450d042002200036020420022006360200200228020821000b2002200041086a360208200620006a20053700002004200341286a2203470d000b0b200228020421002001290200200235020842208620022802002203ad84100202402000450d00200310230b200241106a24000f0b410141011030000b200041011030000b102a000b952901067f20002d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1020012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d21200041017422062003200620034b1b22064100480d210240024020000d002006102121030c010b200128020020002006102521030b2003450d2020012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200641011030000b102a000bd70302077f027e230041106b22022400024002400240024002402000280208220341146a2204417f4c0d000240024020040d00410121050c010b200410212205450d02200028020821030b2002410036020820022004360204200220053602002000280200210620032002105c0240024020022802042205200228020822076b2003490d00200228020021040c010b200720036a22042007490d05200541017422082004200820044b1b22084100480d050240024020050d002008102121040c010b200228020020052008102521040b2004450d032002200836020420022004360200200821050b2002200720036a2208360208200420076a2006200310dc041a200041186a29030021092000290310210a02400240200520086b4110490d00200841106a21030c010b200841106a22032008490d05200541017422002003200020034b1b22004100480d050240024020050d002000102121040c010b200420052000102521040b2004450d042002200036020420022004360200200021050b200420086a220020093700082000200a37000020012902002003ad4220862004ad84100202402005450d00200410230b200241106a24000f0b102f000b200441011030000b200841011030000b200041011030000b102a000be80201087f230041106b220224002000280200210320002802082100200241003602082002420137030020002002105c0240024002402000450d0020032000410c6c6a2104034020032802002105200328020822002002105c02402000450d002005200041246c6a21060340200528020021070240024020022802042208200228020822006b4104490d00200228020021080c010b200041046a22092000490d06200841017422002009200020094b1b22004100480d060240024020080d002000102121080c010b200228020020082000102521080b2008450d052002200036020420022008360200200228020821000b2002200041046a360208200820006a2007360000200541046a20021071200541246a22052006470d000b0b2003410c6a22032004470d000b0b200228020421002001290200200235020842208620022802002205ad84100202402000450d00200510230b200241106a24000f0b200041011030000b102a000bbb03010b7f200041086a22022802002103410021042002410036020002402003450d00200128020421052001280200210641002107410021084100210441002101024003400240024002402004450d00200141246c21090340200120034f0d0220062802002000280200220a20096a220b280200220c460d032005280200200c460d030240200820016a220c20034f0d00200a20076a20096a220c200b290200370200200c41206a200b41206a280200360200200c41186a200b41186a290200370200200c41106a200b41106a290200370200200c41086a200b41086a290200370200200941246a2109200141016a22012003490d010c060b0b41c4bcc000200c2003102d000b2000280200200141246c6a210b0340200120034f0d012006280200200b280200220c460d022005280200200c460d02200b41246a210b200141016a22012003490d000b410021040c040b41f0bbc00020012003102d000b2007415c6a21072008417f6a2108200441016a2104200141016a22012003490d000b0b2004450d00200320014d0d002000280200200141246c6a220b410020046b41246c6a200b200320016b41246c10dd041a0b2002200320046b3602000b9d03010a7f200041086a220228020021034100210420024100360200024002402003450d00200128020021054100210641002107410021044100210102400340024002402004450d00200141246c21080340200120034f0d0620052802002000280200220920086a220a280200460d020240200720016a220b20034f0d00200920066a20086a2209200a290200370200200941206a200a41206a280200360200200941186a200a41186a290200370200200941106a200a41106a290200370200200941086a200a41086a290200370200200841246a2108200141016a22012003490d010c050b0b41c4bcc000200b2003102d000b2000280200200141246c6a210a0340200120034f0d052005280200200a280200460d01200a41246a210a200141016a22012003490d000b410021040c030b2006415c6a21062007417f6a2107200441016a2104200141016a22012003490d000b0b2004450d00200320014d0d002000280200200141246c6a220a410020046b41246c6a200a200320016b41246c10dd041a0b2002200320046b3602000f0b41f0bbc00020012003102d000b9203010a7f200041086a220228020021034100210420024100360200024002402003450d004100210541002106410021044100210702400340024002402004450d00200741057421080340200720034f0d062001200028020022096b2008460d02200920086a220a2001412010de04450d020240200620076a220b20034f0d00200920056a20086a2209200a290000370000200941186a200a41186a290000370000200941106a200a41106a290000370000200941086a200a41086a290000370000200841206a2108200741016a22072003490d010c050b0b41c4bcc000200b2003102d000b200028020020074105746a21080340200720034f0d0520012008460d0120082001412010de04450d01200841206a2108200741016a22072003490d000b410021040c030b200541606a21052006417f6a2106200441016a2104200741016a22072003490d000b0b2004450d00200320074d0d00200028020020074105746a220820044105746b2008200320076b41057410dd041a0b2002200320046b3602000f0b41f0bbc00020072003102d000bbd0101047f230041106b22022400200028020821032000280200210041012104200128021841b5adc00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41a0bdc00010561a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d002002280200220028021841b6adc00041012000411c6a28020028020c11000021040b200241106a240020040b850505027f017e0a7f037e037f230041206b2202240002400240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b200510212207450d020b0240024020030d00410021080c010b2006200341d0006c6a2109410021082007210a0340200241186a220b200641186a290300370300200241106a220c200641106a290300370300200241086a220d200641086a29030037030020022006290300370300200641c8006a280200220ead42307e2204422088a70d022004a72205417f4c0d02200641386a2903002104200641306a290300210f200641286a2903002110200641c0006a2802002101200629032021110240024020050d00410821120c010b200510212212450d050b200641d0006a210602400240200e0d00410021130c010b2001200e41306c6a211441002113201221050340200520012903003703002005200141086a290300370308200541106a200141106a290300370300200541186a200141186a290300370300200541206a200141206a290300370300200541286a200141286a290300370300200541306a2105201341016a2113200141306a22012014470d000b0b200a2011370320200a2002290300370300200a41386a2004370300200a41306a200f370300200a41286a2010370300200a41c8006a2013360200200a41c4006a200e360200200a41c0006a2012360200200a41186a200b290300370300200a41106a200c290300370300200a41086a200d290300370300200841016a2108200a41d0006a210a20062009470d000b0b200020083602082000200336020420002007360200200241206a24000f0b102f000b200541081030000b200541081030000beb02010b7f230041106b220224000240024002402001280208220341ffffffff00712003470d0020034104742204417f4c0d00200128020021050240024020040d00410421060c010b200410212206450d020b0240024020030d00410021070c010b20034104742108410021072002410f6a21092006210103404102210a0240024002402005410c6a2d00004103710e03000102000b4100210a0c010b4101210a0b200541086a2802002204417f4c0d022005280200210b0240024020040d004101210c0c010b20041021220c450d050b200541106a2105200c200b200410dc04210b2001410c6a200a3a0000200141086a2004360200200141046a20043602002001200b3602002001410d6a20022f000d3b00002001410f6a20092d00003a0000200141106a2101200741016a2107200841706a22080d000b0b200020073602082000200336020420002006360200200241106a24000f0b102f000b200441041030000b200441011030000be70201037f024020002802082201450d002000280200220020014188016c6a21020340024020002d0000417c6a220141074b0d000240024002400240024020010e080005010203050504000b200041086a280200450d04200041046a28020010230c040b200041046a2802000d032000410c6a280200450d03200041086a28020010230c030b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2103200041086a28020041c0006a210103400240200141046a280200450d00200128020010230b200141d0006a2101200341b07f6a22030d000b0b2000410c6a280200450d02200028020810230c020b200041086a2d00004101470d01200041146a280200450d01200041106a28020010230c010b200041046a2d00000d002000410c6a280200450d00200041086a28020010230b20004188016a21010240200041fc006a280200450d00200028027810230b2001210020012002470d000b0b0bf602010b7f230041106b22022400200241086a2001106e0240024002400240024020022802080d0020012802042203417c712204417f4c0d02200228020c210502400240200341027622060d00410421070c010b200410212207450d040b02402005450d0041002108410021094100210403400240024002402001280204220a4104490d00200441016a21032001280200220b280000210c2001200a417c6a3602042001200b41046a36020020042006470d02024020082003200820034b1b220641ffffffff03712006470d002006410274220a41004e0d020b102a000b200041003602002006450d05200710230c050b0240024020040d00200a102121070c010b20072009200a102521070b2007450d070b200720096a200c360200200841026a2108200941046a21092003210420052003470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241106a24000f0b102f000b200441041030000b200a41041030000b990a02137f017e230041e0006b22022400200241086a2001106e0240024020022802080d000240200128020441246e220341246c2204417f4c0d00200228020c210502400240024020040d00410421060c010b200410212206450d010b02400240024020050d00410021040c010b2002412d6a2107200241cb006a220841056a21094100210a4100210b0340024002402001280204220c450d002001280200220d2d000021042001200c417f6a220e3602042001200d41016a360200200441064b0d00024002400240024002400240024020040e0700070107030402000b20022001106e20022802000d0620012802042002280204220c490d06200c417f4c0d0c024002400240200c0d004101210441010d010c090b200c10272204450d012001280204200c490d0620042001280200200c10dc04210f2001280204220d200c490d072001200d200c6b36020420012001280200200c6a360200200f450d080b200241206a41086a200241386a41086a290200370300200220022902383703202004410876210f4104210d200c210e201041ffffff0771200441187472221021110c080b200c41011030000b41002104200241003a0058200c417e6a210c03400240200e2004470d00200441ff0171450d07200241003a00580c070b200241386a20046a200d20046a220f41016a2d00003a00002001200c3602042001200f41026a3602002002200441016a220f3a0058200c417f6a210c200f2104200f4120470d000b2002200829000037032020022009290000370025200228004721122002280043210e200228003f210c2002280238211120022f013c210420022d003e210f200741026a200241356a41026a2d00003a0000200720022f00353b00002004200f41107472210f4100210d0c060b200241386a2001106f200228023c220c450d04200228024421122002280240210e200228023821114101210d0c050b200241386a2001106f200228023c220c450d03200228024421122002280240210e200228023821114102210d0c040b200241386a2001106f200228023c220c450d02200228024421122002280240210e200228023821114103210d0c030b200410230c010b200c200d103e000b200041003602000240200b450d002006210403400240024020042d0000220141034b0d0002400240024020010e0404000102040b2004410c6a280200450d03200441086a28020010230c030b2004410c6a280200450d02200441086a28020010230c020b2004410c6a280200450d01200441086a28020010230c010b200441086a280200450d00200441046a28020010230b200441246a2104200a415c6a220a0d000b0b2003450d07200610230c070b200241106a41086a2213200241206a41086a290300370300200220022903203703100240200b2003470d0002400240200341016a22042003490d00200341017422142004201420044b1b2204ad42247e2215422088a70d002015a7221441004e0d010b102a000b0240024020030d002014102121060c010b2006200341246c2014102521060b2006450d03200421030b2006200b41246c6a220420123600102004200e36000c2004200c3600082004200f3b0005200420113600012004200d3a0000200441076a200f4110763a0000200420022903103700142004411c6a2013290300370000200a41246a210a200b41016a2204210b20042005470d000b0b2000200336020420002006360200200041086a20043602000c040b201441041030000b200441041030000b102f000b200041003602000b200241e0006a24000be304020c7f017e230041d0006b2202240020022001106e024002400240024002400240024020022802000d00200128020441246e220341246c2204417f4c0d01200228020421050240024020040d00410421060c010b200410212206450d030b02402005450d00410021070340200128020422084104490d07200741016a21092001280200220a280000210b20012008417c6a220c3602042001200a41046a36020041002104200241003a00482008417b6a210803400240200c2004470d00200441ff0171450d09200241003a00480c090b200241286a20046a200a20046a220d41046a2d00003a0000200120083602042001200d41056a3602002002200441016a220d3a00482008417f6a2108200d2104200d4120470d000b200241086a41186a2208200241286a41186a290300370300200241086a41106a220d200241286a41106a290300370300200241086a41086a220a200241286a41086a29030037030020022002290328370308024020032007470d00200741017422042009200420094b1b2203ad42247e220e422088a70d07200ea722044100480d070240024020070d002004102121060c010b2006200741246c2004102521060b2006450d060b2006200741246c6a2204200b360200200420022903083702042004410c6a200a290300370200200441146a200d2903003702002004411c6a20082903003702002009210720092005470d000b0b2000200336020420002006360200200041086a20053602000c060b200041003602000c050b102f000b200441041030000b200441041030000b102a000b200041003602002003450d00200610230b200241d0006a24000baf04010a7f230041d0006b2202240020022001106e0240024002400240024020022802000d00200128020422034160712204417f4c0d022002280204210502400240200341057622060d00410121070c010b200410212207450d040b02402005450d00410021080340200241003a00482008220941016a21082001280204417f6a21034100210402400240024003402003417f460d01200241286a20046a2001280200220a2d00003a0000200120033602042001200a41016a3602002002200441016a220a3a00482003417f6a2103200a2104200a4120470d000b200241086a41186a2204200241286a41186a290300370300200241086a41106a220a200241286a41106a290300370300200241086a41086a220b200241286a41086a2903003703002002200229032837030820062009470d020240200941017422032008200320084b1b220641ffffff3f712006470d002006410574220341004e0d020b102a000b0240200441ff0171450d00200241003a00480b200041003602002006450d05200710230c050b0240024020090d002003102121070c010b200720094105742003102521070b2007450d070b200720094105746a22032002290308370000200341186a2004290300370000200341106a200a290300370000200341086a200b29030037000020082005470d000b0b2000200636020420002007360200200041086a20053602000c010b200041003602000b200241d0006a24000f0b102f000b200441011030000b200341011030000b9e2905257f027e0c7f077e057f23004190076b22022400200241206a2001106e02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802200d00200128020441d0016e220341d0016c2204417f4c0d01200228022421050240024020040d00410821060c010b200410212206450d030b02402005450d0020024188046a2107200241a8036a41206a2108410021094100210a03402001280204220b4104490d1d200a41016a210c2001280200220d280000210e2001200b417c6a220f3602042001200d41046a36020041002110200241003a00a805417b211103400240200f20102204470d00200441ff0171450d1f200241003a00a8050c1f0b20024188056a20046a200d20046a221041046a2d00003a00002001200b20116a3602042001201041056a3602002002200441016a22103a00a8052011417f6a211120104120470d000b200241c8046a41086a221220024188056a41086a2213290300370300200241c8046a41106a221420024188056a41106a2215290300370300200241c8046a41186a221620024188056a41186a221729030037030020022002290388053703c80441002111200241003a00c805200d20106a210f2010200b6b41046a210d200b20046b417a6a210403400240200d20116a0d00201141ff0171450d1f200241003a00c8050c1f0b20024188056a20116a200f20116a221041046a2d00003a0000200120043602042001201041056a3602002002201141016a22103a00c8052004417f6a210420102111201041c000470d000b200241d0066a41386a221820024188056a41386a2219290300370300200241d0066a41306a221a20024188056a41306a221b290300370300200241d0066a41286a221c20024188056a41286a221d290300370300200241d0066a41206a221e20024188056a41206a221f290300370300200241d0066a41186a22202017290300370300200241d0066a41106a22212015290300370300200241d0066a41086a2222201329030037030020022002290388053703d006200241186a2001106e20022802180d1d2001280204200228021c220f490d1d200f417f4c0d0302400240200f0d00410121230c010b200f10272223450d202001280204200f490d1d20232001280200200f10dc041a20012802042204200f490d0620012004200f6b36020420012001280200200f6a3602000b2023450d1d20024188056a2001107d2002280288052224450d1b200228028c052125200128020422104110490d1a20022802900521262001280200220b41086a2900002127200b29000021282001200b41106a3602002001201041706a220d36020441002104200241003a00a8052010416f6a211003400240200d2004470d000240200441ff0171450d00200241003a00a8050b02402025450d00202410230b200f450d1f202310230c1f0b20024188056a20046a200b20046a221141106a2d00003a0000200120103602042001201141116a3602002002200441016a22113a00a8052010417f6a21102011210420114120470d000b200241e8046a41086a22042013290300370300200241e8046a41106a22102015290300370300200241e8046a41186a2211201729030037030020022002290388053703e80420024188056a2001108001024020022802880522290d0002402025450d00202410230b200f450d1e202310230c1e0b200241a8036a41086a222a2012290300370300200241a8036a41106a222b2014290300370300200241a8036a41186a222c201629030037030020024190066a41086a2215202229030037030020024190066a41106a2216202129030037030020024190066a41186a222d202029030037030020024190066a41206a222e201e29030037030020024190066a41286a222f201c29030037030020024190066a41306a2230201a29030037030020024190066a41386a22312018290300370300200220022903c8043703a803200220022903d006370390062002280290052132200228028c052133200241a8046a41186a220b2011290300370300200241a8046a41106a22112010290300370300200241a8046a41086a22102004290300370300200220022903e8043703a804200841386a2031290300370300200841306a2030290300370300200841286a202f290300370300200841206a202e290300370300200841186a202d290300370300200841106a2016290300370300200841086a20152903003703002008200229039006370300200720022903a804370300200741086a2010290300370300200741106a2011290300370300200741186a200b290300370300200241a8026a200241a8036a41800110dc041a200241106a2001106e20022802100d18200128020441c1006e223441c1006c2204417f4c0d03200228021421140240024020040d00410121120c010b200410212212450d070b02402014450d0041002113034020012802042210450d192001280200220b2d0000210420012010417f6a220d3602042001200b41016a3602002004417f6a220441014b0d1902400240024020040e020001000b41002104200241003a00e8032010417e6a211003400240200d2004470d00200441ff0171450d1d200241003a00e8030c1d0b200241a8036a20046a200b20046a221141016a2d00003a0000200120103602042001201141026a3602002002200441016a22113a00e8032010417f6a211020112104201141c000470d000b2019200241a8036a41386a2903002235370300201b200241a8036a41306a2903002236370300201d200241a8036a41286a2903002237370300201f200829030022383703002017202c29030022393703002022202a2903003703002021202b29030037030020202039370300201e2038370300201c2037370300201a203637030020182035370300200220022903a8033703d006410021110c010b41002104200241003a00e8032010417e6a211003400240200d2004470d00200441ff0171450d1c200241003a00e8030c1c0b200241a8036a20046a200b20046a221141016a2d00003a0000200120103602042001201141026a3602002002200441016a22113a00e8032010417f6a211020112104201141c000470d000b2019200241a8036a41386a2903002235370300201b200241a8036a41306a2903002236370300201d200241a8036a41286a2903002237370300201f200829030022383703002017202c29030022393703002022202a2903003703002021202b29030037030020202039370300201e2038370300201c2037370300201a203637030020182035370300200220022903a8033703d006410121110b201341016a21102031201829030022353703002030201a2903002236370300202f201c2903002237370300202e201e2903002238370300202d2020290300223937030020162021290300223a37030020152022290300223b370300200241d0056a41086a220b203b370300200241d0056a41106a220d203a370300200241d0056a41186a223c2039370300200241d0056a41206a223d2038370300200241d0056a41286a223e2037370300200241d0056a41306a223f2036370300200241d0056a41386a22402035370300200220022903d006223537039006200220353703d005024020342013470d00201341017422042010200420104b1b2234ad42c1007e2235422088a70d142035a722044100480d140240024020130d002004102121120c010b2012201341c1006c2004102521120b2012450d150b2012201341c1006c6a220420113a0000200420022903d005370001200441096a200b290300370000200441116a200d290300370000200441196a203c290300370000200441216a203d290300370000200441296a203e290300370000200441316a203f290300370000200441396a20402903003700002010211320102014470d000b0b2012450d18200241086a2001106e20022802080d1602400240200228020c221841076a221041037622160d004101211a0c010b20161027221a450d1420012802042016490d16201a2001280200201610dc041a200128020422042016490d082001200420166b3602042001200128020020166a3602000b200220163602c80420104188808080024f0d082002201041787122043602e804024002400240200441ffffffff014b0d00201a410120161b210b20040d01410021110c020b20024194056a4101360200200241bc036a4102360200200242023702ac03200241d4d3c4003602a803200241d0d3c400360290052002410136028c05200220024188056a3602b8032002200241e8046a36028805200241a8036a41e4d3c4001038000b4101211120044109490d00200441786a41037641016a21110b200220113602d0052002200b20116a2211360290062011200b490d092004410374210d4100210402400240201041f8ffffff017122100d0041012117410021110c010b410121110240200d41c800490d00201041786a41037641016a21110b201110212217450d0b0b2002200d3602d4062002200b3602d0060240200241d0066a10810141ff017122134102460d00410021104100210403404100210b0240024020044108490d002004410376220d20046a410771220b45410374200b724108470d014101210b200d410820044107716b22154d0d00200d20156b220b410376200b410771456b41026a210b0b0240200b2011470d00201141016a220b2011490d152011410174220d200b200d200b4b1b220d4100480d150240024020110d00200d102121170c010b20172011200d102521170b2017450d182011210b200d21110b2017200b6a41003a00000b200220103602d00520022004200441086a200441774b1b2204410376220b36029006024002400240200b20104d0d0002400240201020044107716a22104108490d002010410771210d201041037621150c010b410021152010210d0b20024107200d6b22103a00e804201041ff017141084f0d104100201720044108491b20156a210d410120104107717421102013410171450d01200d2d000020107221100c020b20024194056a4101360200200241bc036a4102360200200242023702ac03200241989dc6003602a8032002410136028c05200220024188056a3602b803200220024190066a360290052002200241d0056a36028805200241a8036a41c09dc6001038000b200d2d00002010417f737121100b200d20103a0000200b2110200241d0066a10810141ff017122134102470d000b0b20044103762018490d0f2002201836029006201841ffffffff014b0d0d201141ffffffff01712011470d0c20114103742018490d0e02402016450d00201a10230b2017450d16200241a8016a200241a8026a41800110dc041a2023450d1d200241286a200241a8016a41800110dc041a02402003200a470d00200a4101742210200c2010200c4b1b2203ad42d0017e2235422088a70d122035a722104100480d1202400240200a0d002010102121060c010b2006200a41d0016c2010102521060b2006450d110b2006200a41d0016c6a22102027370308201020283703002010202936022c20102024360220201020233602142010200e360210201041346a2032360200201041306a2033360200201041286a2026360200201041246a20253602002010411c6a200f360200201041186a200f360200201041386a200241286a41800110dc041a201041c8016a2011ad4220862004410771201841037472ad84370200201020173602c401201041c0016a2014360200201041bc016a2034360200201020123602b801200941d0016a2109200c210a200c2005470d000b0b2000200336020420002006360200200041086a20053602000c1c0b200041003602000c1b0b102f000b200441081030000b200f2004103e000b200441011030000b20162004103e000b200241bc036a4101360200200242023702ac03200241fc9bc6003602a8032002410136028c05200220024188056a3602b8032002200241c8046a36028805200241a8036a41b09cc6001038000b200241a8036a41146a4109360200200241a8036a410c6a410a36020020024188056a41146a410336020020024188056a410c6a41033602002002418cd4c400360290052002410336028c05200241f4d3c40036028805200241093602ac032002200b3602d0062002200241a8036a36029805200220024190066a3602b8032002200241d0056a3602b0032002200241d0066a3602a80320024188056a41f8d4c4001038000b201141011030000b20024194056a4104360200200241bc036a4102360200200242023702ac03200241b8a4c5003602a803200241d8a3c500360290052002410b36028c05200220024188056a3602b8032002200241e8046a36028805200241a8036a41eca4c5001038000b41f3f0c2004118104a000b20024194056a4101360200200241bc036a4102360200200242023702ac032002418cf1c2003602a803200241d0d3c400360290052002410136028c05200220024188056a3602b803200220024190066a36028805200241a8036a419cf1c2001038000b2011108301210120024194056a4101360200200241bc036a41023602002002410136028c05200220013602d006200242023702ac03200241acf1c2003602a8032002200241d0066a36029005200220024190066a36028805200220024188056a3602b803200241a8036a41bcf1c2001038000b41ccf1c200102b000b201041081030000b102a000b200441011030000b201641011030000b200d41011030000b201a10230b02402034450d00201210230b0240200f450d00202310230b02402025450d00202410230b02402032450d00203241047421042029210103400240200141046a280200450d00200128020010230b200141106a2101200441706a22040d000b0b2033450d060c020b2034450d00201210230b0240200f450d00202310230b02402025450d00202410230b02402032450d00203241047421042029210103400240200141046a280200450d00200128020010230b200141106a2101200441706a22040d000b0b2033450d040b202910230c030b02402025450d00202410230b200f450d02202310230c020b200f450d01202310230c010b202310230b200041003602000240200a450d002006210103402001106c200141d0016a2101200941b07e6a22090d000b0b2003450d00200610230b20024190076a24000f0b200f41011030000b9b05010d7f230041206b22022400200241106a2001106e02400240024002400240024020022802100d00200128020422034170712204417f4c0d022002280214210541042106024020034104762207450d00200410212206450d040b0240024002402005450d00410021084100210441002109034020012802042203450d032001280200220a2d0000210b20012003417f6a3602042001200a41016a360200200b41034f0d03200241086a2001106e20022802080d032001280204200228020c2203490d032003417f4c0d060240024002400240024020030d004101210c0c010b20031027220c450d0120012802042003490d06200c2001280200200310dc041a2001280204220a2003490d0c2001200a20036b3602042001200128020020036a3602000b200941016a210a2002411a6a41026a220d2002411d6a41026a2d00003a0000200220022f001d3b011a20092007470d0202402008200a2008200a4b1b220741ffffffff00712007470d002007410474220e41004e0d020b102a000b200341011030000b0240024020090d00200e102121060c010b20062004200e102521060b2006450d0a0b200620046a2209410c6a200b3a00002009200c360200200941086a2003360200200941046a20033602002009410d6a20022f011a3b00002009410f6a200d2d00003a0000200841026a2108200441106a2104200a21092005200a470d000b0b2000200736020420002006360200200041086a20053602000c030b200c10230b2000410036020002402009450d002006210103400240200141046a280200450d00200128020010230b200141106a2101200441706a22040d000b0b2007450d01200610230c010b200041003602000b200241206a24000f0b102f000b200441041030000b2003200a103e000b200e41041030000bfc0101067f230041306b220124004102210202400240200028020422034108490d0020002802002102200141003602002001200341037622043602042004450d012002410120031b22042d0000210520002003410771220641016a2202410771200341786a417871723602042000200241037622034100200241084922021b20044100200320021b6a72360200200541012006410773747141004721020b200141306a240020020f0b2001412c6a41013602002001411c6a41023602002001420237020c200141989dc600360208200141013602242001200141206a3602182001200141046a36022820012001360220200141086a41b4acc6001038000bec0101067f23004180016b220224002001410c6a28020021032001280208210420012802002205210602402005410471450d0020012005410872220636020020040d0020014281808080a0013702080b2001200641047236020020002802002100410021060340200220066a41ff006a2000410f712207413072200741d7006a2007410a491b3a00002006417f6a2106200041047622000d000b024020064180016a2200418101490d002000418001103e000b200141a085c0004102200220066a4180016a410020066b103c21062001200336020c200120043602082001200536020020024180016a240020060b22000240200041ffffffff01712000460d0041f3f0c2004118104a000b20004103740bc805020c7f067e230041f0006b2202240020022001106e0240024002400240024020022802000d00200128020441306e220341306c2204417f4c0d02200228020421050240024020040d00410821060c010b200410212206450d040b02402005450d00410021070340200241003a00682007220841016a210720012802042109417f210a410021040240024002400240034020092004460d01200241c8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0068200a417f6a210a200c2104200c4120470d000b200241286a41186a2204200241c8006a41186a290300370300200241286a41106a220a200241c8006a41106a290300370300200241286a41086a220d200241c8006a41086a290300370300200220022903483703282009200c6b220c4110490d01200b41096a290000210e200b290001210f2001200c41706a3602042001200b41116a360200200241086a41086a220c200d290300370300200241086a41106a2209200a290300370300200241086a41186a220a20042903003703002002200229032837030820032008470d030240200841017422042007200420074b1b2203ad42307e2210422088a70d002010a7220441004e0d030b102a000b200441ff0171450d00200241003a00680b200041003602002003450d05200610230c050b0240024020080d002004102121060c010b2006200841306c2004102521060b2006450d070b200c290300211020092903002111200a2903002112200229030821132006200841306c6a2204200f37032020042013370300200441286a200e370300200441186a2012370300200441106a2011370300200441086a201037030020072005470d000b0b2000200336020420002006360200200041086a20053602000c010b200041003602000b200241f0006a24000f0b102f000b200441081030000b200441081030000bed0704067f017e0a7f027e230041f0006b22032400200341206a2001200228020c22041102000240024020032802200d002000410036020820004208370200200120022802001103002002280204450d01200110230c010b200341c8006a41106a200341206a41106a290300370300200341c8006a41086a200341206a41086a290300370300200341c8006a41186a200341206a41186a290300370300200341c8006a41206a200341206a41206a280200360200200341086a200341d4006a290200370300200341106a200341dc006a290200370300200341186a200341e4006a290200370300200320032903203703482003200329024c370300200341c8006a2001200228021022051102000240024002400240417f2003280248220641016a220720072006491b2208ad42287e2209422088a70d002009a72206417f4c0d000240024020060d004108210a4108210b0c010b20061021220a450d02200a210b0b200a2003290300370300200a41186a200341186a220c290300370300200a41106a200341106a220d290300370300200a41086a200341086a290300370300200b4201370320200341206a200120041102000240024020032802200d004101210e0c010b200341c8006a410472210641c800210f4101210e0340200341c8006a41206a200341206a41206a280200360200200341c8006a41186a2210200341206a41186a290300370300200341c8006a41106a2211200341206a41106a290300370300200341c8006a41086a2212200341206a41086a29030037030020032003290320370348200341086a2207200641086a290200370300200d200641106a290200370300200c200641186a290200370300200320062902003703002010200c2903003703002011200d29030037030020122007290300370300200320032903003703480240200e2008470d00200341206a200120051102002008417f2003280220220741016a221320132007491b6a22072008490d06200841017422132007201320074b1b2213ad42287e2209422088a70d062009a722074100480d060240024020080d0020071021210a0c010b200a200841286c20071025210a0b200a450d05200a210b201321080b200b200f6a221341606a2207200329034837030020122903002109201129030021142010290300211520134201370300200741186a2015370300200741106a2014370300200741086a2009370300200341206a20012004110200200f41286a210f200e41016a210e20032802200d000b0b2001200228020011030002402002280204450d00200110230b2000200e360208200020083602042000200b3602000c040b102f000b200641081030000b200741081030000b102a000b200341f0006a24000bad08040c7f017e057f037e23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d002001280210220628020021072006280208220841014b210903402003200441206a220a360200200241e0006a41186a200441186a290000370300200241e0006a41106a200441106a290000370300200241e0006a41086a200441086a29000037030020022004290000370360410021040240024020090d0020080e020401040b2008210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a412010de044101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010de040d02200a2104200a2005470d000b0b20004100360208200042013702002001280204450d01200128020010230c010b200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a220b200241e0006a41106a290300370300200241c0006a41186a220c200241e0006a41186a29030037030020022002290360220e3703002002200e370340024041201021220f450d00200f2002290340370000200f41186a200c290300370000200f41106a200b290300370000200f41086a2004290300370000200128020421102001280200211102400240200a2005470d0041012112410121130c010b41012112410121130340200628020821032006280200210702400340200241e0006a41186a2208200a41186a290000370300200241e0006a41106a2209200a41106a290000370300200241e0006a41086a2201200a41086a2900003703002002200a290000370360200a41206a210a4100210402400240200341014b0d0020030e020301030b2003210b0340200b410176220c20046a220d20042007200d4105746a200241e0006a412010de044101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241e0006a412010de040d01200a2005470d000c030b0b200241c0006a41086a2001290300220e370300200241c0006a41106a20092903002214370300200241c0006a41186a20082903002215370300200220022903602216370340200241186a220b2015370300200241106a220c2014370300200241086a220d200e37030020022016370300024020132012470d000240201241016a22042012490d00201241017422072004200720044b1b221341ffffff3f712013470d00201341057422044100480d000240024020120d0020041021210f0c010b200f201241057420041025210f0b200f0d01200441011030000b102a000b200f20124105746a22042002290300370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000201241016a2112200a2005470d000b0b02402010450d00201110230b20002012360208200020133602042000200f3602000c010b412041011030000b20024180016a24000bb00705077f037e097f017e017f23004180016b22022400024002400240200141086a220328020022042001410c6a2802002205460d0020012802102106200241f4006a2107034020032004220841206a2204360200200841086a2903002109200841106a290300210a2008290300210b200241e0006a41186a200841186a290300370300200241e0006a41106a200a370300200241e0006a41086a20093703002002200b3703600240200aa720062802004d0d002001280214220c2007460d002007290000200c290000520d030b20052004470d000b0b20004100360208200042083702002001280204450d01200128020010230c010b200241086a2204200241e0006a41086a290300370300200241106a2203200241e0006a41106a290300370300200241186a2207200241e0006a41186a29030037030020022002290360220a3703202002200a3703000240024002400240024041201021220d450d00200d2002290300370300200d41186a2007290300370300200d41106a2003290300370300200d41086a20042903003703002001280204210e2001280200210f200541606a2008460d03200841206a2110200541606a2111200241f4006a21014101211241012113200d21140340200c2001460d042010210802400340200241e0006a41186a2204200841186a290300370300200241e0006a41106a2203200841106a290300220a370300200241e0006a41086a2207200841086a290300370300200220082903003703600240200aa720062802004d0d002001290000200c290000520d020b2005200841206a2208470d000c070b0b200241206a41086a2007290300220a370300200241206a41106a20032903002209370300200241206a41186a2004290300220b3703002002200229036022153703202004200b370300200320093703002007200a37030020022015370360024020132012470d00201241016a22132012490d04201241017422102013201020134b1b221341ffffff3f712013470d04201341057422104100480d040240024020120d002010102121140c010b201420124105742010102521140b2014450d030b200841206a2110201420124105746a22162002290360370300201641186a2004290300370300201641106a2003290300370300201641086a2007290300370300201241016a211220112008470d000c050b0b412041081030000b201041081030000b102a000b4101211241012113200d21140b0240200e450d00200f10230b2000201236020820002013360204200020143602000b20024180016a24000b9f0a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a80237036820022001106e2002280200450d01200041003602040c020b0240200341ff0171450d00200241003a00c8020b200041003602040c010b2002280204210641002104200241003a00c80220012802042107417f21030240034020072004460d01200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a210303400240200c2004470d000240200441ff0171450d00200241003a00c8020b200041003602040c030b200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a2001107c024020022802a8022201450d00200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c020b200041003602040c010b0240200441ff0171450d00200241003a00c8020b200041003602040b200241d0026a24000bf40401067f230041f0006b22022400200241086a220341c4fbc400ad4280808080e000841003220441086a2900003703002002200429000037030020041023200241286a41086a2205200329030037030020022002290300370328200341f0bcc000ad42808080809001841003220441086a2900003703002002200429000037030020041023200241386a41086a22062003290300370300200220022903003703382002200136026c200241186a2201200241ec006aad4280808080c000841001220441186a290000370300200241106a2207200441106a2900003703002003200441086a2900003703002002200429000037030020041023200241c8006a41186a22042001290300370300200241c8006a41106a22012007290300370300200241c8006a41086a2207200329030037030020022002290300370348024041c00010212203450d00200320022903283700002003200229033837001020032002290348370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a20042903003700002002200341c000108a012007200241096a2900003703002001200241116a2900003703002004200241196a290000370300200220022900013703480240024020022d00004101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290348370000200041186a200241c8006a41186a290300370000200041106a200241c8006a41106a290300370000200041086a200241c8006a41086a2903003700000b20031023200241f0006a24000f0b41c00041011030000bd50302047f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041003a00000c010b200341186a28020021052003280214210641002101200341003a006802400340024020052001470d000240200141ff0171450d00200341003a00680b4100210120034100360228200342013703202003410c3602442003200341086a3602402003200341206a36026c200341dc006a41013602002003420137024c20034198c2c3003602482003200341c0006a360258200341ec006a41b8a3c500200341c8006a102e1a200335022842208620033502208410082003280224450d02200328022010230c020b200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010b200020013a00002006450d00200410230b200341f0006a24000bbc0806017f017e057f017e017f017e230041f0006b2201240042002102200141386a41186a22034200370300200141386a41106a22044200370300200141386a41086a2205420037030020014200370338200141e0006a41086a220641c4fbc400ad4280808080e000841003220741086a2900003703002001200729000037036020071023200520062903003703002001200129036037033820064197bdc000ad4280808080e000841003220741086a2900003703002001200729000037036020071023200420012903602208370300200141086a41086a2005290300370300200141086a41106a2008370300200141086a41186a20062903003703002001200837032820012001290338370308200141386a200141086a108c0102400240200128023822070d004104210741002106410021090c010b200129023c2202422088a721062002a721090b200141386a41206a200041206a2802003602002003200041186a2902003703002004200041106a2902003703002005200041086a2902003703002001200029020037033802400240024020062009470d00024020062002a7470d00200641016a22002006490d03200641017422052000200520004b1bad220842247e220a422088a70d03200aa722004100480d030240024020060d002000102121070c010b2007200641246c2000102521070b2007450d0220024280808080708320088421020b2002422088a721060b2007200641246c22096a22002001290338370200200041206a200141386a41206a280200360200200041186a200141386a41186a2205290300370200200041106a200141386a41106a2204290300370200200041086a200141386a41086a220029030037020020054200370300200442003703002000420037030020014200370338200141e0006a41086a220541c4fbc400ad4280808080e000841003220341086a2900003703002001200329000037036020031023200020052903003703002001200129036037033820054197bdc000ad4280808080e000841003220341086a2900003703002001200329000037036020031023200420012903602208370300200141086a41086a2000290300370300200141086a41106a2008370300200141086a41186a200529030037030020012008370328200120012903383703082001412036023c2001200141086a3602382007200641016a2200200141386a108d01024020002006490d00200941246a21002007210603400240024020062d0000220541034b0d0002400240024020050e0404000102040b2006410c6a280200450d03200641086a28020010230c030b2006410c6a280200450d02200641086a28020010230c020b2006410c6a280200450d01200641086a28020010230c010b200641086a280200450d00200641046a28020010230b200641246a21062000415c6a22000d000b0b02402002a7450d00200710230b200141f0006a24000f0b200041041030000b102a000bae0201037f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022010d00200041003602000c010b200228021421032002200241186a28020036022420022001360220200241c8006a200241206a107c0240024020022802482204450d002000200229024c370204200020043602000c010b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a2002350230422086200235022884100820004100360200200228022c450d00200228022810230b2003450d00200110230b200241e0006a24000bd40201087f230041206b22032400200341003602082003420137030020012003105c024002400240024020010d002003280208210420032802042105200328020021060c010b200141246c210720032802042105200328020821010340200341106a200010b0012003280210210802400240200520016b20032802182209490d00200120096a2104200328020021060c010b200120096a22042001490d04200541017422062004200620044b1b220a4100480d040240024020050d00200a102121060c010b20032802002005200a102521060b2006450d032003200a36020420032006360200200a21050b20032004360208200620016a2008200910dc041a02402003280214450d00200810230b200041246a2100200421012007415c6a22070d000b0b20022902002004ad4220862006ad84100202402005450d00200610230b200341206a24000f0b200a41011030000b102a000bfb1005047f017e017f027e067f230041e0036b22012400200141186a41d4bcc0004110108f012001280218210220014194016a200128021c360200200120024536029001200141206a200041f00010dc041a200141a0016a41003602002001420137039801200141d0026a41186a22034200370300200141d0026a41106a22044200370300200141d0026a41086a22024200370300200142003703d002200141c0036a41086a220041c4fbc400ad4280808080e0008422051003220641086a290000370300200120062900003703c0032006102320022000290300370300200120012903c00322073703a803200120073703d002200041a4d0c000ad4280808080a0018422081003220641086a290000370300200120062900003703c00320061023200420012903c0032207370300200141b0026a41086a22062002290300370300200141b0026a41106a22092007370300200141b0026a41186a220a2000290300370300200120073703a803200120012903d0023703b002200141106a200141b0026a4120108f010240024002400240024002400240024002400240024002402001280214410020012802101b220b41016a220c200b490d00200342003703002004420037030020024200370300200142003703d002200020051003220b41086a2900003703002001200b2900003703c003200b102320022000290300370300200120012903c00322073703a803200120073703d002200020081003220b41086a2900003703002001200b2900003703c003200b1023200141a8036a41086a220d20002903002207370300200120012903c00322083703a80320042008370000200441086a220e20073700002006200229030037030020092004290300370300200a2003290300370300200120012903d0023703b0022001200c3602a801200141b0026aad42808080808004842207200141a8016aad4280808080c000841002200141a8016a200141206a41880110dc041a200342003703002004420037030020024200370300200142003703d002200020051003220b41086a2900003703002001200b2900003703c003200b102320022000290300370300200120012903c00322053703a803200120053703d002200041c0bdc000ad4280808080e000841003220b41086a2900003703002001200b2900003703c003200b1023200d20002903002205370300200120012903c00322083703a80320042008370000200e20053700002006200229030037030020092004290300370300200a2003290300370300200120012903d0023703b002200141a8036a200710041090010240024020012802a803450d00200141f0026a41086a200141a8036a41086a280200360200200120012903a8033703f0020c010b200141003602c803200142083703c003200141003602d802200142013703d0024100200141d0026a105c200141f8026a20012802d802360200200120012903d0023703f002200141c0036a107a0b20014180036a41086a200141f0026a41086a2802002200360200200120012903f00237038003024002402000450d00200141d0026a20012802800320004101106920012802d0024101470d01200128028403450d0b20012802800310230c0b0b410120014180036a105c200141a8016a20014180036a1091010c080b20012802d40221060240200141dc026a2802002200200141d0026a41086a2802002202460d00200128028803200020026b6a220341046a2209417f4c0d020240024020090d004101210a0c010b20091021220a450d040b20012009360294032001200a360290032001200336029803200120014190036a3602d0022006200141d0026a200010920120032000490d0420012802980322062003490d0520012802880322062002490d062001280290032109200128028003210a2001200320006b22033602a0032001200620026b22063602a40320032006470d07200920006a200a20026a200310dc041a200141a8016a20014190036a109101200128029803210220012802940321032001280290032100200128028403450d0920012802800310230c090b200120014180036a3602d0022006200141d0026a2002109201200141a8016a20014180036a1091010c070b200141206a1093010c0a0b102f000b200941011030000b20002003103e000b200320061036000b20022006103e000b200141c0036a41146a410d360200200141cc036a410e360200200141a8036a41146a4103360200200142033702ac03200141acb6c6003602a8032001410e3602c4032001200141a0036a3602d8032001200141a4036a3602dc03200142043703e002200142013702d40220014180b7c6003602d0022001200141c0036a3602b8032001200141d0026a3602d0032001200141dc036a3602c8032001200141d8036a3602c003200141a8036a41bcb7c6001038000b2001280288032102200128028403210320012802800321000b20000d010b200141a8016a1093010c010b20072002ad4220862000ad84100202402003450d00200010230b200141a8016a109301200141d0026a41186a22064200370300200141d0026a41106a22094200370300200141d0026a41086a22024200370300200142003703d002200141c0036a41086a220041c4fbc400ad4280808080e000841003220341086a290000370300200120032900003703c0032003102320022000290300370300200120012903c00322073703a803200120073703d002200041f9bcc000ad4280808080e000841003220341086a290000370300200120032900003703c00320031023200141a8036a41086a20002903002207370300200120012903c00322053703a80320042005370000200441086a2007370000200141b0026a41086a2002290300370300200141b0026a41106a2009290300370300200141b0026a41186a2006290300370300200120012903d0023703b002200141086a200141b0026a4120108f010b200141e0036a24000b8f0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034198c2c3003602382003200341286a360248200341346a41b8a3c500200341386a102e1a200335022042208620033502188410080240200328021c450d00200328021810230b0b2005450d00200410230b2000200236020420002001360200200341d0006a24000b920201057f230041206b2202240020022001a7220336021020022001422088a7220436021402402004450d0020032d0000210520022004417f6a3602142002200341016a360210200541014b0d0041002103024002400240024020050e020100010b200241086a200241106a106e20022802080d0320022802142205200228020c2204490d032004417f4c0d010240024020040d00410121030c010b200410272203450d03200320022802102206200410dc041a2002200520046b3602142002200620046a3602100b2003450d032004ad220142208620018421010b2000200137020420002003360200200241206a24000f0b102f000b200441011030000b41f4b7c600412e200241186a41a4b8c6001031000bf90401057f230041106b2202240002400240024002400240024020002802704101460d0002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d06200341017422052004200520044b1b22054100480d060240024020030d002005102121040c010b200128020020032005102521040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280274210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d06200441017422032005200320054b1b22034100480d060240024020040d002003102121040c010b200128020020042003102521040b2004450d0420012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d05200341017422052004200520044b1b22054100480d050240024020030d002005102121040c010b200128020020032005102521040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00000b2000200110b2012000280278210320004180016a28020022002001105c02402000450d002000410574210003402002200136020c20032002410c6a106b200341206a2103200041606a22000d000b0b200241106a24000f0b200541011030000b200341011030000b200541011030000b102a000b8d0301027f230041e0006b22032400200341003a0005024002402000413f4b0d0041012104200341013a0005200320004102743a00000c010b02400240200041808001490d0020004180808080044f0d0141042104200341043a0005200320004102744102723602000c020b41022104200341023a0005200320004102744101723b01000c010b41052104200341053a0005200341033a0000200320003600010b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d0120002003200210dc041a200341e0006a24000f0b200220011036000b200341286a41146a410d360200200341346a410e360200200341106a41146a410336020020034203370214200341acb6c6003602102003410e36022c2003200341086a36024020032003410c6a360244200342043703582003420137024c20034180b7c6003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a41bcb7c6001038000bb40201027f024020002d0000417c6a220141074b0d000240024002400240024020010e080005010203050504000b200041086a280200450d04200041046a28020010230c040b200041046a2802000d032000410c6a280200450d03200041086a28020010230c030b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2102200041086a28020041c0006a210103400240200141046a280200450d00200128020010230b200141d0006a2101200241b07f6a22020d000b0b2000410c6a280200450d02200028020810230c020b200041086a2d00004101470d01200041146a280200450d01200041106a28020010230c010b200041046a2d00000d002000410c6a280200450d00200041086a28020010230b0240200041fc006a280200450d00200028027810230b0bb00201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001103921000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000b20024180016a240020000f0b2004418001103e000b2004418001103e000b130020004107360204200041d4bdc0003602000b3400200041c4fbc40036020420004100360200200041146a410d360200200041106a4180c5c000360200200041086a42063702000b5401017f230041206b22022400200241003602082002420837030020024100360218200242013703104100200241106a105c200041086a2002280218360200200020022903103702002002107a200241206a24000b7101017f230041306b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030020024100360228200242013703202002200241206a36022c20022002412c6a106b200041086a200228022836020020002002290320370200200241306a24000b2f01017f02404101102122020d00410141011030000b200042818080801037020420002002360200200241003a00000bac0405057f017e017f027e047f230041f0006b22002400200041306a41186a22014200370300200041306a41106a22024200370300200041306a41086a2203420037030020004200370330200041e0006a41086a220441c4fbc400ad4280808080e0008422051003220641086a29000037030020002006290000370360200610232003200429030037030020002000290360220737035020002007370330200441a0cec000ad4280808080b0028422081003220641086a2900003703002000200629000037036020061023200220002903602207370300200041106a41086a22062003290300370300200041106a41106a22092007370300200041106a41186a220a20042903003703002000200737035020002000290330370310200041086a200041106a4120108f01200028020c210b2000280208210c20014200370300200242003703002003420037030020004200370330200420051003220241086a29000037030020002002290000370360200210232003200429030037030020002000290360220737035020002007370330200420081003220241086a290000370300200020022900003703602002102320012004290300220737030020062003290300370300200920002903602205370300200a200737030020002005370350200020002903303703102000200b4100200c1b2204418094ebdc032004418094ebdc03491b360230200041106aad4280808080800484200041306aad4280808080c000841002200041f0006a24000bfc1e09057f017e017f017e027f017e017f027e077f230041f0016b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41086a220541c4fbc400ad4280808080e0008422061003220741086a290000370300200120072900003703c8012007102320042005290300370300200120012903c801220837039801200120083703a80120054188cec000ad4280808080e001841003220741086a290000370300200120072900003703c80120071023200320012903c8012208370300200141f8006a41086a22072004290300370300200141f8006a41106a22092008370300200141f8006a41186a220a200529030037030020012008370350200120012903a801370378200141f8006aad220b428080808080048422081005200242003703002003420037030020044200370300200142003703a801200520061003220c41086a2900003703002001200c2900003703c801200c102320042005290300370300200120012903c801220d370398012001200d3703a801200541a0cec000ad4280808080b002841003220c41086a2900003703002001200c2900003703c801200c102320022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a80137037820081005200242003703002003420037030020044200370300200142003703a801200520061003220c41086a2900003703002001200c2900003703c801200c102320042005290300370300200120012903c801220d370398012001200d3703a801200541c4cec000ad42808080808002841003220c41086a2900003703002001200c2900003703c801200c102320022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a80137037820081005200242003703002003420037030020044200370300200142003703a801200520061003220c41086a2900003703002001200c2900003703c801200c102320042005290300370300200120012903c801220d370398012001200d3703a801200541f9bcc000ad4280808080e000841003220c41086a2900003703002001200c2900003703c801200c102320022005290300220d37030020072004290300370300200920012903c801220e370300200a200d3703002001200e370350200120012903a801370378200141086a200141f8006a4120108f01200128020c210f0240200128020822104101470d00200810050b200242003703002003420037030020044200370300200142003703a801200520061003220c41086a2900003703002001200c2900003703c801200c102320042005290300370300200120012903c801220637039801200120063703a801200541ffbcc000ad4280808080a001841003220c41086a2900003703002001200c2900003703c801200c1023200141d0006a41086a20052903002206370300200120012903c801220d3703502003200d370000200341086a20063700002007200429030037030020092003290300370300200a2002290300370300200120012903a801370378200141c8016a200141f8006a4120108a010240024020012d00c8014101460d00200141106a41086a4200370300200141106a41106a4200370300200141106a41186a4200370300200141a8016a41186a200141e1016a290000370300200141a8016a41106a200141d9016a290000370300200141a8016a41086a200141d1016a290000370300200120012900c9013703a801200142003703100c010b20081005200141a8016a41186a200141e1016a2900002206370300200141a8016a41106a200141d9016a290000220d370300200141a8016a41086a200141d1016a290000220e370300200141106a41086a200e370300200141106a41106a200d370300200141106a41186a2006370300200120012900c90122063703a801200120063703100b200141a8016a41186a22024200370300200141a8016a41106a22074200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41086a220541c4fbc400ad4280808080e00084220d1003220941086a290000370300200120092900003703c8012009102320042005290300370300200120012903c801220637039801200120063703a80120054197bdc000ad4280808080e000841003220941086a290000370300200120092900003703c80120091023200141d0006a41086a221120052903002206370300200120012903c801220e3703502003200e370000200341086a22122006370000200141f8006a41086a22132004290300370300200141f8006a41106a22142007290300370300200141f8006a41186a22152002290300370300200120012903a801370378200141c8016a200141f8006a108c010240024020012802c80122090d0041042109420021060c010b2008100520012902cc0121060b200f410020101b210a200242003703002007420037030020044200370300200142003703a8012005200d1003220c41086a2900003703002001200c2900003703c801200c102320042005290300370300200120012903c801220d370398012001200d3703a80120054189bdc000ad4280808080e001841003220c41086a2900003703002001200c2900003703c801200c102320112005290300220d370300200120012903c801220e3703502003200e3700002012200d370000201320042903003703002014200729030037030020152002290300370300200120012903a801370378200141c8016a200141f8006a4120108a010240024020012d00c8014101460d00200141306a41086a4200370300200141306a41106a4200370300200141306a41186a4200370300200141a8016a41186a200141e1016a290000370300200141a8016a41106a200141d9016a290000370300200141a8016a41086a200141d1016a290000370300200120012900c9013703a801200142003703300c010b20081005200141a8016a41186a200141e1016a2900002208370300200141a8016a41106a200141d9016a290000220d370300200141a8016a41086a200141d1016a290000220e370300200141306a41086a200e370300200141306a41106a200d370300200141306a41186a2008370300200120012900c90122083703a801200120083703300b02400240024002400240200a41fb01490d00200a41857e6a2203450d00200141c8016a41086a220541c4fbc400ad4280808080e000841003220441086a290000370300200120042900003703c8012004102320014198016a41086a22022005290300370300200120012903c80137039801200541f0bcc000ad42808080809001841003220441086a290000370300200120042900003703c80120041023200141d0006a41086a22072005290300370300200120012903c80137035020012003360278200141c8016a41186a2203200b4280808080c000841001220441186a290000370300200141c8016a41106a220c200441106a2900003703002005200441086a290000370300200120042900003703c80120041023200141a8016a41186a22042003290300370300200141a8016a41106a2203200c290300370300200141a8016a41086a220c2005290300370300200120012903c8013703a80141c00010212205450d01200520012903980137000020052001290350370010200520012903a801370020200541086a2002290300370000200541186a2007290300370000200541286a200c290300370000200541306a2003290300370000200541386a20042903003700002005ad42808080808008841005200510230b1006210841002105200141003a00e8012008422088a721022008a722072104034020022005460d04200141c8016a20056a20042d00003a00002001200541016a22033a00e801200441016a21042003210520034120470d000b200141d0006a41086a200141c8016a41086a290300370300200141d0006a41106a200141c8016a41106a290300370300200141d0006a41186a200141c8016a41186a290300370300200120012903c80137035002402002450d00200710230b200141003602d001200142013703c8012001200141c8016a3602a801200141106a200141a8016a106b20012802cc01210520014198016a20013502d00142208620012802c8012204ad84100710900102402005450d00200410230b02402001280298012203450d00200141a0016a2802002102200128029c01210c41002105200141003a00e8010340024020022005470d000240200541ff0171450d00200141003a00e8010b419fdcc000412c200141c8016a41b0bdc0001031000b200141c8016a20056a200320056a2d00003a00002001200541016a22043a00e8012004210520044120470d000b200141f8006a41086a200141c8016a41086a22042903002208370300200141f8006a41106a200141c8016a41106a2202290300220d370300200141f8006a41186a200141c8016a41186a2207290300220e370300200120012903c801220b370378200420083703002002200d3703002007200e3703002001200b3703c801200141a8016a41026a220f200141f5006a41026a2d00003a0000200120012f00753b01a8010240024020064220882208a722052006a7460d002006210d0c010b200541016a22102005490d042008a74101742211201020102011491bad220d42247e2208422088a70d042008a722104100480d040240024020050d002010102121090c010b2009200541246c2010102521090b2009450d0320064220882208a721050b2009200541246c6a220541003a0000200520012903c801370001200541096a2004290300370000200541116a2002290300370000200541196a2007290300370000200520012f01a8013b0021200541236a200f2d00003a00002008422086200d42ffffffff0f83844280808080107c2106200c450d00200310230b200020012903103700102000200a36020020002001290350370030200041286a200141106a41186a290300370000200041206a200141106a41106a290300370000200041186a200141106a41086a290300370000200041386a200141d0006a41086a290300370000200041c0006a200141d0006a41106a290300370000200041c8006a200141d0006a41186a290300370000200041086a200637020020002009360204200041e8006a200141306a41186a290300370000200041e0006a200141306a41106a290300370000200041d8006a200141306a41086a29030037000020002001290330370050200141f0016a24000f0b41c00041011030000b201041041030000b102a000b0240200541ff0171450d00200141003a00e8010b419fdcc000412c200141c8016a41b0bdc0001031000b820803037f047e067f230022022103200241c0036b41607122022400200141186a22042900002105200420022903b80237000020012900102106200120022903b00237001020012900082107200120022903a802370008200241003a00a00220012900002108200120022903a002370000200220053703b801200220063703b001200220073703a801200220083703a001200141206a2d00002104200241a0026a41176a22092005370000200241a0026a41106a220a20022900b101370300200241a0026a41086a220b20022900a901370300200220022900a1013703a002024002402008a741ff01714101460d00200041073a00400c010b200241106a41176a2009290000370000200241106a41106a200a290300370300200241106a41086a200b290300370300200220022903a002370310200220043a002f20024190026a200241106a109d01200241a0026a2002280290022204200228029802109e01024020022d00c1024102470d00200241003602a0032002420137039803200241306a41146a410f3602002002413c6a410c360200200241093602ac03200241aefcc4003602a8032002410c3602342002410b3602b403200241b2edc0003602b003200220024190026a3602402002200241b0036a3602382002200241a8036a360230200220024198036a3602bc03200241d8006a41146a41033602002002420337025c200241ccdcc0003602582002200241306a360268200241bc036a41b8a3c500200241d8006a102e1a20023502a003422086200235029803841008200041073a00400240200228029c03450d0020022802980310230b200228029402450d012002280290021023200324000f0b200241a0016a200241a0026a41e30010dc041a0240200228029402450d00200410230b200241306a41206a2204200241a0026a41206a2d00003a0000200241306a41186a2209200241a0026a41186a220a290300370300200241306a41106a220b200241a0026a41106a220c290300370300200241306a41086a220d200241a0026a41086a220e290300370300200220022903a002370330200241d8006a200241c1016a41c20010dc041a200141206a200241d8006a41c1006a2d00003a0000200141186a20024191016a290000370000200141106a20024189016a290000370000200141086a20024181016a29000037000020012002290079370000200a200241106a41186a290300370300200c200241106a41106a290300370300200e200241106a41086a290300370300200220022903103703a002200241c8026a200d290300370300200241d0026a200b290300370300200241d8026a2009290300370300200241e0026a20042d00003a0000200220022903303703c0022000200241a0026a41c10010dc041a200324000f0b200324000bc20201057f230041c0006b22022400200241206a41086a220341aefcc400ad42808080809001841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341b2edc000ad4280808080b001841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200110ac01024041c000102122040d0041c00041011030000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000bee0d03077f017e067f230041c0026b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822040d00200041023a00210c010b200341106a2802002105200328020c210641002101200341003a00b8022005417e6a21070240024002400340024020052001470d00200141ff0171450d02200341003a00b8020c020b20034198026a20016a200420016a2d00003a00002003200141016a22023a00b8022007417f6a21072002210120024120470d000b200341f8016a41186a20034198026a41186a290300370300200341f8016a41106a20034198026a41106a290300370300200341f8016a41086a20034198026a41086a29030037030020032003290398023703f80120052002460d00200420026a22082d0000220941074f0d00200341f8006a41186a200341f8016a41186a290300370300200341f8006a41106a200341f8016a41106a290300370300200341f8006a41086a200341f8016a41086a290300370300200320032903f8013703782005417f6a2002460d00200841016a2d0000220141014b0d00200520026b210202400240024020010e020100010b41002101200341003a00b8022002417e6a21050340024020052001470d00200141ff0171450d04200341003a00b8020c040b20034198026a20016a200820016a41026a2d00003a00002003200141016a22023a00b8022002210120024120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801200720026b2107200820026a41026a2105410121010c010b200841026a21052002417e6a2107410021010b20034198016a41186a200341b8016a41186a29030037030020034198016a41106a200341b8016a41106a29030037030020034198016a41086a200341b8016a41086a290300370300200320032903b801370398012007450d0020052d0000220241014b0d00410021080240024020020e020100010b41002102200341003a00b802200541016a21082007417f6a21050340024020052002470d00200241ff0171450d03200341003a00b8020c030b20034198026a20026a200820026a2d00003a00002003200241016a22073a00b8022007210220074120470d000b200341d8016a41086a20034198026a41086a290300220a370300200341b8016a41186a20034198026a41186a290300370300200341b8016a41106a20034198026a41106a290300370300200341b8016a41086a200a3703002003200329039802220a3703d8012003200a3703b801410121080b200341186a41186a2202200341b8016a41186a290300370300200341186a41106a2207200341b8016a41106a290300370300200341186a41086a2205200341b8016a41086a290300370300200341386a41086a220b20034198016a41086a290300370300200341386a41106a220c20034198016a41106a290300370300200341386a41186a220d20034198016a41186a290300370300200320032903b8013703182003200329039801370338200341d8006a41186a220e200341f8006a41186a290300370300200341d8006a41106a220f200341f8006a41106a290300370300200341d8006a41086a2210200341f8006a41086a2903003703002003200329037837035820014102460d0120002003290358370000200020093a0020200041186a200e290300370000200041106a200f290300370000200041086a201029030037000020034198026a41086a2209200b29030037030020034198026a41106a220b200c29030037030020034198026a41186a220c200d2903003703002003200329033837039802200341f8016a41186a220d2002290300370300200341f8016a41106a22022007290300370300200341f8016a41086a22072005290300370300200320032903183703f8012000413a6a200c290300370000200041326a200b2903003700002000412a6a20092903003700002000200329039802370022200041c2006a20083a0000200041c3006a20032903f801370000200041cb006a2007290300370000200041d3006a2002290300370000200041db006a200d2903003700000c020b410221010b2003410036028002200342013703f8012003410c3602dc01200320033602d8012003200341f8016a3602b801200341ac026a41013602002003420137029c0220034198c2c300360298022003200341d8016a3602a802200341b8016a41b8a3c50020034198026a102e1a20033502800242208620033502f80184100820032802fc01450d0020032802f80110230b200020013a00212006450d00200410230b200341c0026a24000bbd0101047f230041106b22022400200028020421032000280200210041012104200128021841b5adc00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41a0bdc00010561a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d002002280200220028021841b6adc00041012000411c6a28020028020c11000021040b200241106a240020040bbe0703037f047e037f23002202210320024180036b41607122022400200141186a22042900002105200420022903f80137000020012900102106200120022903f00137001020012900082107200120022903e801370008200241003a00e00120012900002108200120022903e0013700002002200537039801200220063703900120022007370388012002200837038001200141206a2d00002104200241e0016a41176a22092005370000200241e0016a41106a220a200229009101370300200241e0016a41086a220b20022900890137030020022002290081013703e001024002402008a741ff01714101460d00200041003602200c010b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b290300370300200220022903e001370318200220043a0037200241d0016a200241186a10a101200241e0016a20022802d001220420022802d80110a201024020022d00ec014102470d00200241003602c802200242013703c002200241d0026a41146a410f360200200241dc026a410c360200200241103602ec022002419da0c2003602e8022002410c3602d402200241073602f402200241ada0c2003602f0022002200241d0016a3602e0022002200241f0026a3602d8022002200241e8026a3602d0022002200241c0026a3602fc02200241386a41146a41033602002002420337023c200241ccdcc0003602382002200241d0026a360248200241fc026a41b8a3c500200241386a102e1a20023502c80242208620023502c00284100820004100360220024020022802c402450d0020022802c00210230b20022802d401450d0120022802d0011023200324000f0b20024180016a200241e0016a41d00010dc041a024020022802d401450d00200410230b200241d0026a41086a220420024180016a41086a28020036020020022002290380013703d002200241386a2002418c016a41c20010dc041a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a29000037000020012002290059370000200241e0016a41186a200241186a41186a2903002205370300200241e0016a41106a200241186a41106a2903002208370300200241e0016a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a2005370200200220073703e001200041206a20022903d002370200200041286a2004280200360200200324000f0b200324000bc20201057f230041c0006b22022400200241206a41086a2203419da0c200ad42808080808002841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341ada0c200ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200110ac01024041c000102122040d0041c00041011030000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000be70b030a7f017e027f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041023a000c0c010b200328021421052003200341106a41086a28020036026420032004360260200341e8006a200341e0006a107e02400240024020032802682206450d00200328026c2107024020032802642201450d00200341e8006a41086a280200210820032001417f6a220936026420032003280260220a41016a220b360260200a2d0000220141014b0d004100210c0240024020010e020100010b41002101200341003a0098020340024020092001470d0020034100360264200141ff0171450d03200341003a0098020c030b200341f8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b2209360264200320032903f801220d3703b8012003200d370398014101210c200a20026a41016a210b0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a29030037030020032003290398013703782009450d0020032009417f6a22093602642003200b41016a360260200b2d0000220141014b0d00410021020240024020010e020100010b41002101200341003a0098020340024020092001470d0020034100360264200141ff0171450d03200341003a0098020c030b200341f8016a20016a200b20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0098022002210120024120470d000b200341b8016a41086a200341f8016a41086a290300220d37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200d3703002003200920026b360264200320032903f801220d3703b8012003200d37039801410121020b200341206a41186a220120034198016a41186a290300370300200341206a41106a220920034198016a41106a290300370300200341206a41086a220a20034198016a41086a290300370300200341c0006a41086a220b200341f8006a41086a290300370300200341c0006a41106a220e200341f8006a41106a290300370300200341c0006a41186a220f200341f8006a41186a290300370300200320032903980137032020032003290378370340200c4102460d02200020083602082000200736020420002006360200200341f8016a41086a2206200b290300370300200341f8016a41106a220b200e290300370300200341f8016a41186a2207200f290300370300200341d8016a41086a2208200a290300370300200341d8016a41106a220a2009290300370300200341d8016a41186a22092001290300370300200320032903403703f801200320032903203703d801200320032f011e3b01b801200041256a20072903003700002000411d6a200b290300370000200041156a2006290300370000200020032903f80137000d2000412d6a20023a00002000412e6a20032903d801370000200041366a20082903003700002000413e6a200a290300370000200041c6006a2009290300370000200041ce006a20032f01b8013b00000c030b2007450d00200610230b4102210c0b200341003602e001200342013703d8012003410c3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc0120034198c2c3003602f8012003200341b8016a3602880220034198016a41b8a3c500200341f8016a102e1a20033502e00142208620033502d80184100820032802dc01450d0020032802d80110230b2000200c3a000c2005450d00200410230b200341a0026a24000baf0603037f047e037f230022022103200241a0026b41607122022400200141186a220429000021052004200229039801370000200129001021062001200229039001370010200129000821072001200229038801370008200241003a00800120012900002108200120022903800137000020022005370338200220063703302002200737032820022008370320200141206a2d0000210420024180016a41176a2209200537000020024180016a41106a220a200229003137030020024180016a41086a220b20022900293703002002200229002137038001024002402008a741ff01714101460d00200041003602000c010b200241176a2009290000370000200241106a200a290300370300200241086a200b2903003703002002200229038001370300200220043a001f200241f0006a200210a40120024180016a20022802702204200228027810a501024020022d0084014102470d00200241003602e801200242013703e001200241f0016a41146a410f360200200241fc016a410c3602002002410736028c02200241c6acc500360288022002410c3602f4012002410a36029402200241e7acc500360290022002200241f0006a36028002200220024190026a3602f801200220024188026a3602f0012002200241e0016a36029c02200241206a41146a410336020020024203370224200241ccdcc0003602202002200241f0016a3602302002419c026a41b8a3c500200241206a102e1a20023502e80142208620023502e00184100820004100360200024020022802e401450d0020022802e00110230b2002280274450d0120022802701023200324000f0b20024180016a4104722109200228028001210a02402002280274450d00200410230b200241206a200941c20010dc041a200141206a200241e1006a2d00003a0000200141186a200241d9006a290000370000200141106a200241d1006a290000370000200141086a200241c9006a29000037000020012002290041370000200020022903003700042000410c6a200241086a290300370000200041146a200241106a2903003700002000411c6a200241186a29030037000020004101360200200041246a200a360200200324000f0b200324000bc20201057f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341e7acc500ad4280808080a001841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200110ac01024041c000102122040d0041c00041011030000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000bbc0b03097f017e027f23004190026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041023a00040c010b200328021421052003200341186a280200360264200320043602602003200341e0006a106e4102210602400240024020032802000d0020032802642201450d002003280204210720032001417f6a220836026420032003280260220941016a220a36026020092d0000220141014b0d004100210b0240024020010e020100010b41002101200341003a0088020340024020082001470d0020034100360264200141ff0171450d03200341003a0088020c030b200341e8016a20016a200920016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b2208360264200320032903e801220c3703a8012003200c370388014101210b200920026a41016a210a0b200341e8006a41186a20034188016a41186a290300370300200341e8006a41106a20034188016a41106a290300370300200341e8006a41086a20034188016a41086a29030037030020032003290388013703682008450d0020032008417f6a22083602642003200a41016a360260200a2d0000220141014b0d00410021020240024020010e020100010b41002101200341003a0088020340024020082001470d0020034100360264200141ff0171450d03200341003a0088020c030b200341e8016a20016a200a20016a220241016a2d00003a00002003200241026a3602602003200141016a22023a0088022002210120024120470d000b200341a8016a41086a200341e8016a41086a290300220c37030020034188016a41186a200341e8016a41186a29030037030020034188016a41106a200341e8016a41106a29030037030020034188016a41086a200c3703002003200820026b360264200320032903e801220c3703a8012003200c37038801410121020b200341206a41186a220120034188016a41186a290300370300200341206a41106a220620034188016a41106a290300370300200341206a41086a220820034188016a41086a290300370300200341c0006a41086a2209200341e8006a41086a290300370300200341c0006a41106a220a200341e8006a41106a290300370300200341c0006a41186a220d200341e8006a41186a290300370300200320032903880137032020032003290368370340200b4102470d01200b21060b200341003602d001200342013703c8012003410c3602ac012003200341086a3602a8012003200341c8016a36028801200341fc016a4101360200200342013702ec0120034198c2c3003602e8012003200341a8016a3602f80120034188016a41b8a3c500200341e8016a102e1a20033502d00142208620033502c80184100820032802cc01450d0120032802c80110230c010b200341e8016a41186a220e200d290300370300200341e8016a41106a220d200a290300370300200341e8016a41086a220a2009290300370300200341c8016a41086a22092008290300370300200341c8016a41106a22082006290300370300200341c8016a41186a22062001290300370300200320032903403703e801200320032903203703c801200320032f011e3b01a80120002007360200200020032903e8013700052000410d6a200a290300370000200041156a200d2903003700002000411d6a200e290300370000200041256a20023a0000200041266a20032903c8013700002000412e6a2009290300370000200041366a20082903003700002000413e6a2006290300370000200041c6006a20032f01a8013b0000200b21060b200020063a00042005450d00200410230b20034190026a24000be50703037f047e037f230022022103200241a0036b41607122022400200141186a220429000021052004200229039802370000200129001021062001200229039002370010200129000821072001200229038802370008200241003a0080022001290000210820012002290380023700002002200537039801200220063703900120022007370388012002200837038001200141206a2d0000210420024180026a41176a2209200537000020024180026a41106a220a20022900910137030020024180026a41086a220b200229008901370300200220022900810137038002024002402008a741ff01714101460d00200041023a00300c010b200241186a41176a2009290000370000200241186a41106a200a290300370300200241186a41086a200b2903003703002002200229038002370318200220043a0037200241f0016a200241186a10a70120024180026a20022802f001220420022802f80110a801024020022d0090024102470d00200241003602e802200242013703e002200241f0026a41146a410f360200200241fc026a410c3602002002410736028c03200241c6acc500360288032002410c3602f4022002410a36029403200241cdacc500360290032002200241f0016a36028003200220024190036a3602f802200220024188036a3602f0022002200241e0026a36029c03200241386a41146a41033602002002420337023c200241ccdcc0003602382002200241f0026a3602482002419c036a41b8a3c500200241386a102e1a20023502e80242208620023502e002841008200041023a0030024020022802e402450d0020022802e00210230b20022802f401450d0120022802f0011023200324000f0b20024180016a20024180026a41d80010dc041a024020022802f401450d00200410230b200241f0026a41106a220420024180016a41106a280200360200200241f0026a41086a220920024180016a41086a29030037030020022002290380013703f002200241386a20024194016a41c20010dc041a200141206a200241f9006a2d00003a0000200141186a200241f1006a290000370000200141106a200241e9006a290000370000200141086a200241e1006a2900003700002001200229005937000020024180026a41186a200241186a41186a290300220537030020024180026a41106a200241186a41106a290300220837030020024180026a41086a200241186a41086a2903002206370300200020022903182207370200200041086a2006370200200041106a2008370200200041186a20053702002002200737038002200041206a20022903f002370200200041286a2009290300370200200041306a2004280200360200200324000f0b200324000bc20201057f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341cdacc500ad4280808080a001841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200110ac01024041c000102122040d0041c00041011030000b200420022903003700002004200229031037001020042002290020370020200042c0808080800837020420002004360200200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c0006a24000b930e030c7f017e037f230041a0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041023a00100c010b200328021421042003200341106a41086a28020036026c20032001360268200341f8016a200341e8006a107e02400240024020032802f8012205450d0020032802fc01210602400240200328026c22074104490d00200341f8016a41086a280200210820032007417c6a220236026c20032003280268220941046a220a3602680240024002402002450d002009280000210b20032007417b6a220c36026c2003200a41016a360268200a2d0000220d41014b0d0041002102200d0e020201020b2006450d040c030b410121020b200341f4006a41026a200341d8016a41026a2d00003a0000200320032f00d8013b01740240200c450d0020032007417a6a220c36026c2003200a41026a220d360268200a2d0001220a41014b0d004100210e02400240200a0e020100010b4100210a200341003a0098022007417a6a210e4179210c03400240200e200a470d00200a41ff0171450d03200341003a0098020c030b200341f8016a200a6a2009200a6a220d41066a2d00003a000020032007200c6a36026c2003200d41076a3602682003200a41016a220d3a009802200c417f6a210c200d210a200d4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f370398012007200d6b417a6a210c2009200d6a41066a210d4101210e0b200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a2903003703002003200329039801370378200c450d002003200c417f6a36026c2003200d41016a360268200d2d0000220a41014b0d004100210702400240200a0e020100010b4100210a200341003a009802200c417f6a2109200c417e6a2107034002402009200a470d00200a41ff0171450d03200341003a00980220060d050c060b200341f8016a200a6a200d200a6a220c41016a2d00003a00002003200c41026a3602682003200a41016a220c3a0098022003200736026c2007417f6a2107200c210a200c4120470d000b200341b8016a41086a200341f8016a41086a290300220f37030020034198016a41186a200341f8016a41186a29030037030020034198016a41106a200341f8016a41106a29030037030020034198016a41086a200f370300200320032903f801220f3703b8012003200f37039801410121070b200341206a41186a220a20034198016a41186a290300370300200341206a41106a220c20034198016a41106a290300370300200341206a41086a220d20034198016a41086a290300370300200341c0006a41086a2209200341f8006a41086a290300370300200341c0006a41106a2210200341f8006a41106a290300370300200341c0006a41186a2211200341f8006a41186a290300370300200320032903980137032020032003290378370340200341e4006a41026a2212200341f4006a41026a2d00003a0000200320032f01743b016420024102460d042000200b36020c200020083602082000200636020420002005360200200341b8016a41026a220520122d00003a0000200341f8016a41086a22062009290300370300200341f8016a41106a22092010290300370300200341f8016a41186a22082011290300370300200341d8016a41086a220b200d290300370300200341d8016a41106a220d200c290300370300200341d8016a41186a220c200a290300370300200320032f01643b01b801200320032903403703f801200320032903203703d801200320032f011e3b019801200041136a20052d00003a0000200020032f01b8013b0011200041146a200e3a0000200041156a20032903f8013700002000411d6a2006290300370000200041256a20092903003700002000412d6a2008290300370000200041356a20073a0000200041366a20032903d8013700002000413e6a200b290300370000200041c6006a200d290300370000200041ce006a200c290300370000200041d6006a20032f0198013b00000c050b20060d010c020b2006450d010b200510230b410221020b200341003602e001200342013703d8012003410c3602bc012003200341086a3602b8012003200341d8016a360298012003418c026a4101360200200342013702fc0120034198c2c3003602f8012003200341b8016a3602880220034198016a41b8a3c500200341f8016a102e1a20033502e00142208620033502d80184100820032802dc01450d0020032802d80110230b200020023a00102004450d00200110230b200341a0026a24000bd50501037f024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d07200241017422042003200420034b1b22044100480d070240024020020d002004102121030c010b200128020020022004102521030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41003a00000c010b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d06200241017422042003200420034b1b22044100480d060240024020020d002004102121030c010b200128020020022004102521030b2003450d0320012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041016a200110710b024020002d00214101460d0002400240200141046a280200200141086a2802002200460d00200128020021020c010b200041016a22022000490d06200041017422032002200320024b1b22034100480d060240024020000d002003102121020c010b200128020020002003102521020b2002450d0420012002360200200141046a2003360200200141086a28020021000b200141086a200041016a360200200220006a41003a00000f0b02400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102121030c010b200128020020022004102521030b2003450d0420012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41013a0000200041226a200110710f0b200441011030000b200441011030000b200341011030000b200441011030000b102a000bc00501047f200141046a2802002102200141086a28020021030240024002400240024002400240200028020022040d000240024020022003460d00200128020021020c010b200341016a22022003490d07200341017422042002200420024b1b22044100480d070240024020030d002004102121020c010b200128020020032004102521020b2002450d0320012002360200200141046a2004360200200141086a28020021030b200141086a200341016a360200200220036a41003a00000c010b0240024020022003460d00200128020021020c010b200341016a22022003490d06200341017422052002200520024b1b22054100480d060240024020030d002005102121020c010b200128020020032005102521020b2002450d0320012002360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200220036a41013a00002004280200200110710b200141046a2802002102200141086a28020021030240200028020422040d000240024020022003460d00200128020021000c010b200341016a22002003490d06200341017422022000200220004b1b22024100480d060240024020030d002002102121000c010b200128020020032002102521000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021000c010b200341016a22002003490d05200341017422022000200220004b1b22024100480d050240024020030d002002102121000c010b200128020020032002102521000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41013a00002004200110710f0b200441011030000b200541011030000b200241011030000b200241011030000b102a000bc00201057f230041c0006b22012400200141206a41086a220241c4fbc400ad4280808080e000841003220341086a2900003703002001200329000037032020031023200141086a2204200229030037030020012001290320370300200241e4bcc000ad4280808080c001841003220341086a2900003703002001200329000037032020031023200141106a41086a2205200229030037030020012001290320370310200141206a200010ac01024041c000102122030d0041c00041011030000b200320012903003700002003200129031037001020032001290020370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141306a290000370000200341386a200141206a41186a2900003700002003ad4280808080800884100520031023200141c0006a24000bf90401057f230041206b2202240020012d00002103024002400240024002400240410110212204450d00200420033a000020012d0001210320044101410210252204450d01200420033a000120012d0002210320044102410410252204450d02200420033a0002200420012d00033a000320012d0004210320044104410810252204450d03200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d0008210320044108411010252204450d04200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f20012d0010210320044110412010252204450d05200420033a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f200241186a22032004ad42808080808004841001220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a2900003703002002200129000037030020011023200041186a2003290300370000200041106a2005290300370000200041086a20062903003700002000200229030037000020041023200241206a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b040041020b890401077f230041306b22022400200241003602082002420137030020022002360210200141106a200241106a106b2001200210af0120022002360210200141306a200241106a106b20022002360210200141d0006a200241106a106b200128020421032001410c6a28020022012002105c0240024002402001450d00200141246c21040340200241106a200310b001200228021021050240024020022802042206200228020822016b20022802182207490d00200228020021060c010b200120076a22082001490d04200641017422012008200120084b1b22014100480d040240024020060d002001102121060c010b200228020020062001102521060b2006450d032002200136020420022006360200200228020821010b2002200120076a360208200620016a2005200710dc041a02402002280214450d00200510230b200341246a21032004415c6a22040d000b0b20022802042107200241106a41186a2203200235020842208620022802002204ad841001220141186a290000370300200241106a41106a2206200141106a290000370300200241106a41086a2205200141086a2900003703002002200129000037031020011023200041186a2003290300370000200041106a2006290300370000200041086a20052903003700002000200229031037000002402007450d00200410230b200241306a24000f0b200141011030000b102a000b9e0701037f02400240024002400240024020002802002202413f4b0d0002400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d06200041017422042003200420034b1b22044100480d060240024020000d002004102121030c010b200128020020002004102521030b2003450d0220012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20024102743a00000f0b200241808001490d032002418080808004490d020c010b200441011030000b0240024002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d05200241017422042003200420034b1b22044100480d050240024020020d002004102121030c010b200128020020022004102521030b2003450d0120012003360200200141046a2004360200200141086a28020021020b200141086a2204200241016a360200200320026a41033a00002000280200210302400240200141046a2802002202200428020022006b4104490d00200128020021020c010b200041046a22042000490d05200241017422002004200020044b1b22004100480d050240024020020d002000102121020c010b200128020020022000102521020b2002450d0220012002360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200220006a20033600000f0b200441011030000b200041011030000b024002400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102121030c010b200128020020032000102521030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20024102744102723600000f0b200041011030000b024002400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d02200341017422002004200020044b1b22004100480d020240024020030d002000102121030c010b200128020020032000102521030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20024102744101723b00000f0b200041011030000b102a000bde1601067f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e050003010204000b2002410036020820024201370300410110212203450d05200242818080801037020420022003360200200341023a00002002200236020c200141016a2002410c6a106b0c040b2002410036020820024201370300410110212203450d05200242818080801037020420022003360200200341043a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102121050c010b200228020020032006102521050b2005450d0720022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102121050c010b200228020020032006102521050b2005450d0820022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102121050c010b200228020020032006102521050b2005450d0920022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422062005200620054b1b22064100480d1a0240024020030d002006102121050c010b200228020020032006102521050b2005450d0a20022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002105c0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d1a200541017422072006200720064b1b22064100480d1a0240024020050d002006102121050c010b200228020020052006102521050b2005450d0b20022006360204200220053602000b2002200320016a360208200520036a2004200110dc041a0c030b2002410036020820024201370300410110212203450d0a200242818080801037020420022003360200200341053a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102121050c010b200228020020032006102521050b2005450d0c20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102121050c010b200228020020032006102521050b2005450d0d20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102121050c010b200228020020032006102521050b2005450d0e20022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422062005200620054b1b22064100480d190240024020030d002006102121050c010b200228020020032006102521050b2005450d0f20022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002105c0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d19200541017422072006200720064b1b22064100480d190240024020050d002006102121050c010b200228020020052006102521050b2005450d1020022006360204200220053602000b2002200320016a360208200520036a2004200110dc041a0c020b2002410036020820024201370300410110212203450d0f200242818080801037020420022003360200200341063a000020012d0001210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102121050c010b200228020020032006102521050b2005450d1120022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0002210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102121050c010b200228020020032006102521050b2005450d1220022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0003210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102121050c010b200228020020032006102521050b2005450d1320022006360204200220053602000b2002200341016a360208200520036a20043a000020012d0004210402400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422062005200620054b1b22064100480d180240024020030d002006102121050c010b200228020020032006102521050b2005450d1420022006360204200220053602000b2002200341016a360208200520036a20043a000020012802082104200141106a28020022012002105c0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d18200541017422072006200720064b1b22064100480d180240024020050d002006102121050c010b200228020020052006102521050b2005450d1520022006360204200220053602000b2002200320016a360208200520036a2004200110dc041a0c010b2002410036020820024201370300410110212203450d14200242818080801037020420022003360200200341003a0000200141046a28020021042001410c6a28020022012002105c0240024020022802042205200228020822036b2001490d00200228020021050c010b200320016a22062003490d17200541017422072006200720064b1b22064100480d170240024020050d002006102121050c010b200228020020052006102521050b2005450d1620022006360204200220053602000b2002200320016a360208200520036a2004200110dc041a0b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b410141011030000b410141011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b410141011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b410141011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b410141011030000b200641011030000b102a000bea0b02097f027e230041106b22022400200028021021030240024002400240024002400240024002400240200141046a2802002204200141086a28020022056b4104490d00200128020021040c010b200541046a22062005490d08200441017422052006200520064b1b22054100480d080240024020040d002005102121040c010b200128020020042005102521040b2004450d0120012004360200200141046a2005360200200141086a28020021050b200141086a2206200541046a360200200420056a2003360000200041386a20011071200041d8006a2107410021040340200720046a2d0000210802400240200141046a220928020020062802002205460d00200128020021030c010b200541016a22032005490d092005410174220a2003200a20034b1b220a4100480d090240024020050d00200a102121030c010b20012802002005200a102521030b2003450d03200120033602002009200a360200200628020021050b2006200541016a360200200320056a20083a0000200441016a220441c000470d000b200028021421082000411c6a28020022052001105c02400240200141046a2802002203200141086a28020022046b2005490d00200128020021030c010b200420056a22062004490d08200341017422042006200420064b1b22044100480d080240024020030d002004102121030c010b200128020020032004102521030b2003450d0320012003360200200141046a2004360200200141086a28020021040b200141086a2206200420056a360200200320046a2008200510dc041a20002802202104200041286a28020022052001105c02402005450d002004200541246c6a210703402004280200210802400240200141046a22092802002203200628020022056b4104490d00200128020021030c010b200541046a220a2005490d0a20034101742205200a2005200a4b1b22054100480d0a0240024020030d002005102121030c010b200128020020032005102521030b2003450d062001200336020020092005360200200628020021050b2006200541046a360200200320056a200836000020022001360208200441046a200241086a106b200441246a22042007470d000b0b200041086a290300210b2000290300210c02400240200141046a2802002204200628020022056b4110490d00200128020021040c010b200541106a22032005490d08200441017422052003200520034b1b22054100480d080240024020040d002005102121040c010b200128020020042005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021050b200141086a2206200541106a360200200420056a2205200b3700082005200c3700002002200136020c20004198016a2002410c6a106b200028022c2105200041346a28020022042001105c02402004450d0020044104742109034002402005410c6a2d000022044103714103460d004100210802400240024020040e03020001020b410121080c010b410221080b02400240200141046a220728020020062802002204460d00200128020021030c010b200441016a22032004490d0b2004410174220a2003200a20034b1b220a4100480d0b0240024020040d00200a102121030c010b20012802002004200a102521030b2003450d09200120033602002007200a360200200628020021040b2006200441016a360200200320046a20083a00000b2005280200210a200541086a28020022042001105c02400240200141046a22072802002208200628020022036b2004490d00200128020021080c010b200320046a22002003490d0a200841017422032000200320004b1b22034100480d0a0240024020080d002003102121080c010b200128020020082003102521080b2008450d092001200836020020072003360200200628020021030b200541106a21052006200320046a360200200820036a200a200410dc041a200941706a22090d000b0b200241106a24000f0b200541011030000b200a41011030000b200441011030000b200541011030000b200541011030000b200a41011030000b200341011030000b102a000bd9d20103067f027e017f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d0000220341124b0d00024002400240024002400240024002400240024002400240024002400240024002400240024020030e13000102030405060708090a0b0c0d0e0f101112000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102121040c010b200128020020032005102521040b2004450d1420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00000240024020002802044101460d00200241003a000c02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d61200341017422052004200520044b1b22054100480d610240024020030d002005102121040c010b200128020020032005102521040b2004450d1720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280208210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d61200441017422032005200320054b1b22034100480d610240024020040d002003102121040c010b200128020020042003102521040b2004450d1820012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a20063600002000410c6a2103410721050c010b200241013a000c02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d60200341017422052004200520044b1b22054100480d600240024020030d002005102121040c010b200128020020032005102521040b2004450d1820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000410021040240200041106a2d00004101470d00200241013a000c02400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d61200341017422062004200620044b1b22064100480d610240024020030d002006102121040c010b200128020020032006102521040b2004450d1a20012004360200200141046a2006360200200141086a28020021030b200141086a200341016a360200200420036a41013a000020002d001121040b200220043a000c02400240200141046a28020020052802002203460d00200128020021050c010b200341016a22052003490d60200341017422062005200620054b1b22064100480d600240024020030d002006102121050c010b200128020020032006102521050b2005450d1a20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a20043a00002002200041126a2d000022053a000c02400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d60200341017422062004200620044b1b22064100480d600240024020030d002006102121040c010b200128020020032006102521040b2004450d1b20012004360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200420036a20053a00002000280214210502400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22062003490d60200441017422032006200320064b1b22034100480d600240024020040d002003102121040c010b200128020020042003102521040b2004450d1c20012004360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200420036a2005360000200041186a2103411321050b200220032d000022063a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422072004200720044b1b22074100480d5f0240024020030d002007102121040c010b200128020020032007102521040b2004450d1c20012004360200200141046a2007360200200141086a28020021030b200141086a2207200341016a360200200420036a20063a00002002200020056a41066a2d000022043a000c02400240200141046a28020020072802002200460d00200128020021030c010b200041016a22032000490d5f200041017422052003200520034b1b22054100480d5f0240024020000d002005102121030c010b200128020020002005102521030b2003450d1d20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c120b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102121040c010b200128020020032005102521040b2004450d1d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102121040c010b200128020020032005102521040b2004450d1e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041086a200110712000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d5e200341017422002005200020054b1b22004100480d5e0240024020030d002000102121030c010b200128020020032000102521030b2003450d1f20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c110b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102121040c010b200128020020032005102521040b2004450d1f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020002d0008220341024b0d1002400240024020030e03000102000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5f200341017422052004200520044b1b22054100480d5f0240024020030d002005102121040c010b200128020020032005102521040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5f200341017422002004200020044b1b22004100480d5f0240024020030d002000102121030c010b200128020020032000102521030b2003450d2320012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c120b200241013a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102121040c010b200128020020032005102521040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a200110710c110b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102121040c010b200128020020032005102521040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200041096a20011071200041296a20011071200041d8006a29030021082000290350210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d5d200441017422032005200320054b1b22034100480d5d0240024020040d002003102121040c010b200128020020042003102521040b2004450d2420012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200837000820032009370000200041e8006a29030021082000290360210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5d200341017422002004200020044b1b22004100480d5d0240024020030d002000102121030c010b200128020020032000102521030b2003450d2520012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c100b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102121040c010b200128020020032005102521040b2004450d2520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002d0008220341024b0d0f02400240024020030e03000102000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5e200341017422052004200520044b1b22054100480d5e0240024020030d002005102121040c010b200128020020032005102521040b2004450d2820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041186a29030021082000290310210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d5e200441017422032005200320054b1b22034100480d5e0240024020040d002003102121040c010b200128020020042003102521040b2004450d2920012004360200200141046a2003360200200141086a28020021030b200141086a2205200341106a360200200420036a2203200837000820032009370000200041286a29030021082000290320210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5e200341017422002004200020044b1b22004100480d5e0240024020030d002000102121030c010b200128020020032000102521030b2003450d2a20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c110b200241013a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5d200341017422052004200520044b1b22054100480d5d0240024020030d002005102121040c010b200128020020032005102521040b2004450d2a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d5d200341017422002004200020044b1b22004100480d5d0240024020030d002000102121030c010b200128020020032000102521030b2003450d2b20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c100b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5c200341017422052004200520044b1b22054100480d5c0240024020030d002005102121040c010b200128020020032005102521040b2004450d2b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d5c200341017422002005200020054b1b22004100480d5c0240024020030d002000102121030c010b200128020020032000102521030b2003450d2c20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0f0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102121040c010b200128020020032005102521040b2004450d2c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102121040c010b200128020020032005102521040b2004450d2d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a200110c201200028020421062000410c6a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d5b200441017422032005200320054b1b22034100480d5b0240024020040d002003102121040c010b200128020020042003102521040b2004450d2e20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0c0e0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102121040c010b200128020020032005102521040b2004450d2e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102121040c010b200128020020032005102521040b2004450d2f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d5a200341017422002005200020054b1b22004100480d5a0240024020030d002000102121030c010b200128020020032000102521030b2003450d3020012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0d0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102121040c010b200128020020032005102521040b2004450d3020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a00002000280204220341024b0d0c02400240024020030e03000102000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5b200341017422052004200520044b1b22054100480d5b0240024020030d002005102121040c010b200128020020032005102521040b2004450d3320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082103200041106a28020022002001105c2000450d0e2003200041286c6a210a200141046a21060340200320011071200341206a29030021080240024020062802002204200528020022006b4108490d00200128020021040c010b200041086a22072000490d5c200441017422002007200020074b1b22004100480d5c0240024020040d002000102121040c010b200128020020042000102521040b2004450d352001200436020020062000360200200528020021000b2005200041086a360200200420006a2008370000200a200341286a2203470d000c0f0b0b200241013a000c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d5a200041017422042003200420034b1b22044100480d5a0240024020000d002004102121030c010b200128020020002004102521030b2003450d3420012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0d0b200241023a000c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d59200041017422042003200420034b1b22044100480d590240024020000d002004102121030c010b200128020020002004102521030b2003450d3420012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c0c0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102121040c010b200128020020032005102521040b2004450d3420012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a000020002d0004220341024b0d0b02400240024020030e03000102000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d5a200341017422052004200520044b1b22054100480d5a0240024020030d002005102121040c010b200128020020032005102521040b2004450d3720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041056a200110710c0d0b200241013a000c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d59200041017422042003200420034b1b22044100480d590240024020000d002004102121030c010b200128020020002004102521030b2003450d3720012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0c0b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102121040c010b200128020020032005102521040b2004450d3720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a000020002802082104200041106a28020022002001105c2000450d0b2004200041d0006c6a210503402004200110712002200441206a36020c2002410c6a200110c3012002200441306a36020c2002410c6a200110c30120042802402100200428024822032001105c200441d0006a210402402003450d00200341306c21030340200041106a200110712002200036020c2002410c6a200110c301200041306a2100200341506a22030d000b0b20052004470d000c0c0b0b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d57200341017422072005200720054b1b22074100480d570240024020030d002007102121050c010b200128020020032007102521050b2005450d3720012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41083a000020002d00082203410a4b0d0a0240024002400240024002400240024002400240024020030e0b000102030405060708090a000b200241003a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d61200341017422072005200720054b1b22074100480d610240024020030d002007102121050c010b200128020020032007102521050b2005450d4220012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41003a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d6120054101742203200a2003200a4b1b22034100480d610240024020050d002003102121050c010b200128020020052003102521050b2005450d4320012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200041186a2903002108200029031021090240024020062802002203200428020022006b4110490d00200128020021030c010b200041106a22052000490d61200341017422002005200020054b1b22004100480d610240024020030d002000102121030c010b200128020020032000102521030b2003450d4420012003360200200141046a2000360200200141086a28020021000b2004200041106a360200200320006a22012008370008200120093700000c140b200241013a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d60200341017422072005200720054b1b22074100480d600240024020030d002007102121050c010b200128020020032007102521050b2005450d4420012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41013a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d6020054101742203200a2003200a4b1b22034100480d600240024020050d002003102121050c010b200128020020052003102521050b2005450d4520012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200041286a2903002108200029032021090240024020062802002205200428020022036b4110490d00200128020021040c010b200341106a22042003490d60200541017422032004200320044b1b22034100480d600240024020050d002003102121040c010b200128020020052003102521040b2004450d4620012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a220320083700082003200937000020002802102103200041186a28020022002001105c2000450d13200041057421000340200320011071200341206a2103200041606a22000d000c140b0b200241023a000c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5f200041017422052003200520034b1b22054100480d5f0240024020000d002005102121030c010b200128020020002005102521030b2003450d4620012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c120b200241033a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5e200341017422072005200720054b1b22074100480d5e0240024020030d002007102121050c010b200128020020032007102521050b2005450d4620012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41033a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d5e20054101742203200a2003200a4b1b22034100480d5e0240024020050d002003102121050c010b200128020020052003102521050b2005450d4720012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200736000020002d0009220041024b0d1102400240024020000e03000102000b200241003a000c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d60200041017422052003200520034b1b22054100480d600240024020000d002005102121030c010b200128020020002005102521030b2003450d4a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41003a00000c130b200241013a000c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5f200041017422052003200520034b1b22054100480d5f0240024020000d002005102121030c010b200128020020002005102521030b2003450d4a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41013a00000c120b200241023a000c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5e200041017422052003200520034b1b22054100480d5e0240024020000d002005102121030c010b200128020020002005102521030b2003450d4a20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41023a00000c110b200241043a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5d200341017422072005200720054b1b22074100480d5d0240024020030d002007102121050c010b200128020020032007102521050b2005450d4a20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5d200341017422002006200020064b1b22004100480d5d0240024020030d002000102121030c010b200128020020032000102521030b2003450d4b20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c100b200241053a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5c200341017422072005200720054b1b22074100480d5c0240024020030d002007102121050c010b200128020020032007102521050b2005450d4b20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41053a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5c200341017422002006200020064b1b22004100480d5c0240024020030d002000102121030c010b200128020020032000102521030b2003450d4c20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0f0b200241063a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5b200341017422072005200720054b1b22074100480d5b0240024020030d002007102121050c010b200128020020032007102521050b2005450d4c20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41063a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490d5b200341017422002006200020064b1b22004100480d5b0240024020030d002000102121030c010b200128020020032000102521030b2003450d4d20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0e0b200241073a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d5a200341017422072005200720054b1b22074100480d5a0240024020030d002007102121050c010b200128020020032007102521050b2005450d4d20012005360200200141046a2007360200200141086a28020021030b2004200341016a360200200520036a41073a0000200028020c21070240024020062802002205200428020022036b4104490d00200128020021050c010b200341046a220a2003490d5a20054101742203200a2003200a4b1b22034100480d5a0240024020050d002003102121050c010b200128020020052003102521050b2005450d4e20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a2007360000200220002d000922053a000c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d5a200041017422062003200620034b1b22064100480d5a0240024020000d002006102121030c010b200128020020002006102521030b2003450d4f20012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000c0d0b200241083a000c02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d59200341017422052004200520044b1b22054100480d590240024020030d002005102121040c010b200128020020032005102521040b2004450d4f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a0000200041096a20011071200041296a200110710c0c0b200241093a000c02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102121040c010b200128020020032005102521040b2004450d4f20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041096a200110710c0b0b2002410a3a000c02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490d57200341017422062005200620054b1b22064100480d570240024020030d002006102121050c010b200128020020032006102521050b2005450d4f20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a410a3a0000200041096a200110712002200136020c200041296a2002410c6a106b200028024c210502400240200141046a2802002203200628020022006b4104490d00200128020021030c010b200041046a22062000490d57200341017422002006200020064b1b22004100480d570240024020030d002000102121030c010b200128020020032000102521030b2003450d5020012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000c0a0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d56200341017422052004200520044b1b22054100480d560240024020030d002005102121040c010b200128020020032005102521040b2004450d5020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a0000200041046a200110d4030c090b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d55200341017422052004200520044b1b22054100480d550240024020030d002005102121040c010b200128020020032005102521040b2004450d5020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a0000200041046a200110d4030c080b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d54200341017422052004200520044b1b22054100480d540240024020030d002005102121040c010b200128020020032005102521040b2004450d5020012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a000020002d0004220341044b0d070240024002400240024020030e050001020304000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d58200341017422052004200520044b1b22054100480d580240024020030d002005102121040c010b200128020020032005102521040b2004450d5520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082103200041106a28020022002001105c2000450d0b2003200041306c6a210a200141046a21060340200320011071200341286a2903002108200341206a29030021090240024020062802002204200528020022006b4110490d00200128020021040c010b200041106a22072000490d59200441017422002007200020074b1b22004100480d590240024020040d002000102121040c010b200128020020042000102521040b2004450d572001200436020020062000360200200528020021000b2005200041106a360200200420006a2200200837000820002009370000200a200341306a2203470d000c0c0b0b200241013a000c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d57200041017422042003200420034b1b22044100480d570240024020000d002004102121030c010b200128020020002004102521030b2003450d5620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c0a0b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9d01200341017422052004200520044b1b22054100480d9d010240024020030d002005102121040c010b200128020020032005102521040b2004450d5720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041056a200110710c090b200241033a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102121040c010b200128020020032005102521040b2004450d5720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a0000200041056a200110710c080b200141086a2802002103200241043a000c024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d5720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041056a20011071200041256a20011071200220002d004522043a000c02400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d9b01200041017422052003200520034b1b22054100480d9b010240024020000d002005102121030c010b200128020020002005102521030b2003450d5820012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c070b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d5820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a000020002d0001220041044b0d060240024002400240024020000e050001020304000b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9e01200041017422042003200420034b1b22044100480d9e010240024020000d002004102121030c010b200128020020002004102521030b2003450d5d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000c0a0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9d01200041017422042003200420034b1b22044100480d9d010240024020000d002004102121030c010b200128020020002004102521030b2003450d5d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000c090b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9c01200041017422042003200420034b1b22044100480d9c010240024020000d002004102121030c010b200128020020002004102521030b2003450d5d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41023a00000c080b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9b01200041017422042003200420034b1b22044100480d9b010240024020000d002004102121030c010b200128020020002004102521030b2003450d5d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000c070b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9a01200041017422042003200420034b1b22044100480d9a010240024020000d002004102121030c010b200128020020002004102521030b2003450d5d20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41043a00000c060b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9901200341017422052004200520044b1b22054100480d99010240024020030d002005102121040c010b200128020020032005102521040b2004450d5d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410d3a000020002d0008220341054b0d0502400240024002400240024020030e06000102030405000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9e01200341017422052004200520044b1b22054100480d9e010240024020030d002005102121040c010b200128020020032005102521040b2004450d6320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020c210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d9e01200341017422002005200020054b1b22004100480d9e010240024020030d002000102121030c010b200128020020032000102521030b2003450d6420012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c0a0b200241013a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9d01200341017422052004200520044b1b22054100480d9d010240024020030d002005102121040c010b200128020020032005102521040b2004450d6420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041186a29030021082000290310210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9d01200341017422002004200020044b1b22004100480d9d010240024020030d002000102121030c010b200128020020032000102521030b2003450d6520012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c090b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102121040c010b200128020020032005102521040b2004450d6520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200028022c210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d9c01200441017422032005200320054b1b22034100480d9c010240024020040d002003102121040c010b200128020020042003102521040b2004450d6620012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a2006360000200041386a29030021082000290330210902400240200141046a2802002204200528020022036b4110490d00200128020021040c010b200341106a22052003490d9c01200441017422032005200320054b1b22034100480d9c010240024020040d002003102121040c010b200128020020042003102521040b2004450d6720012004360200200141046a2003360200200141086a28020021030b200141086a200341106a360200200420036a2203200837000820032009370000200041096a200110710c080b200241033a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d6720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041186a29030021082000290310210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9b01200341017422002004200020044b1b22004100480d9b010240024020030d002000102121030c010b200128020020032000102521030b2003450d6820012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c070b200141086a2802002103200241043a000c024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d6820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041186a29030021082000290310210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9a01200341017422002004200020044b1b22004100480d9a010240024020030d002000102121030c010b200128020020032000102521030b2003450d6920012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c060b200241053a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9901200341017422052004200520044b1b22054100480d99010240024020030d002005102121040c010b200128020020032005102521040b2004450d6920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a0000200041186a29030021082000290310210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9901200341017422002004200020044b1b22004100480d99010240024020030d002000102121030c010b200128020020032000102521030b2003450d6a20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9801200341017422052004200520044b1b22054100480d98010240024020030d002005102121040c010b200128020020032005102521040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410e3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d9801200341017422052004200520044b1b22054100480d98010240024020030d002005102121040c010b200128020020032005102521040b2004450d6b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041186a20011071200041386a200110c003200041106a29030021082000290308210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9801200341017422002004200020044b1b22004100480d98010240024020030d002000102121030c010b200128020020032000102521030b2003450d6c20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c040b02400240200141046a2205280200200141086a22032802002204460d00200128020021060c010b200441016a22062004490d9701200441017422072006200720064b1b22074100480d97010240024020040d002007102121060c010b200128020020042007102521060b2006450d6c20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a410f3a000020002d0008220441064b0d03024002400240024002400240024020040e0700010203040506000b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9d01200441017422072006200720064b1b22074100480d9d010240024020040d002007102121060c010b200128020020042007102521060b2006450d7320012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41003a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d9d01200441017422002005200020054b1b22004100480d9d010240024020040d002000102121040c010b200128020020042000102521040b2004450d7420012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c090b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9c01200441017422072006200720064b1b22074100480d9c010240024020040d002007102121060c010b200128020020042007102521060b2006450d7420012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41013a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a220a2004490d9c0120064101742204200a2004200a4b1b22044100480d9c010240024020060d002004102121060c010b200128020020062004102521060b2006450d7520012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200028021021070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a220a2004490d9c0120064101742204200a2004200a4b1b22044100480d9c010240024020060d002004102121060c010b200128020020062004102521060b2006450d7620012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200028021421060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d9c01200441017422002005200020054b1b22004100480d9c010240024020040d002000102121040c010b200128020020042000102521040b2004450d7720012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c080b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9b01200441017422072006200720064b1b22074100480d9b010240024020040d002007102121060c010b200128020020042007102521060b2006450d7720012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41023a0000200028020c21060240024020052802002204200328020022006b4104490d00200128020021040c010b200041046a22052000490d9b01200441017422002005200020054b1b22004100480d9b010240024020040d002000102121040c010b200128020020042000102521040b2004450d7820012004360200200141046a2000360200200141086a28020021000b2003200041046a360200200420006a20063600000c070b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9a01200441017422072006200720064b1b22074100480d9a010240024020040d002007102121060c010b200128020020042007102521060b2006450d7820012006360200200141046a2007360200200141086a28020021040b200141086a2207200441016a360200200620046a41033a0000200041106a20011071200028020c210a02400240200141046a2802002206200728020022046b4104490d00200128020021060c010b200441046a22072004490d9a01200641017422042007200420074b1b22044100480d9a010240024020060d002004102121060c010b200128020020062004102521060b2006450d7920012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a200a360000024020002d00092204410f7141094b0d000240024002400240024002400240024002400240024020040e0a00010203040506070809000b410021060c090b410121060c080b410221060c070b410321060c060b410421060c050b410521060c040b410621060c030b410721060c020b410821060c010b410921060b200220063a000c02400240200528020020032802002204460d00200128020021070c010b200441016a22072004490d9b012004410174220a2007200a20074b1b220a4100480d9b010240024020040d00200a102121070c010b20012802002004200a102521070b2007450d7b20012007360200200141046a200a360200200141086a28020021040b2003200441016a360200200720046a20063a00000b200028023021070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a220a2004490d9a0120064101742204200a2004200a4b1b22044100480d9a010240024020060d002004102121060c010b200128020020062004102521060b2006450d7b20012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000200041c0006a2903002108200029033821090240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d9a01200441017422002005200020054b1b22004100480d9a010240024020040d002000102121040c010b200128020020042000102521040b2004450d7c20012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a22012008370008200120093700000c060b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9901200441017422072006200720064b1b22074100480d99010240024020040d002007102121060c010b200128020020042007102521060b2006450d7c20012006360200200141046a2007360200200141086a28020021040b2003200441016a360200200620046a41043a0000200028020c21070240024020052802002206200328020022046b4104490d00200128020021060c010b200441046a220a2004490d990120064101742204200a2004200a4b1b22044100480d99010240024020060d002004102121060c010b200128020020062004102521060b2006450d7d20012006360200200141046a2004360200200141086a28020021040b2003200441046a360200200620046a2007360000024020002d00092204410f7141094b0d000240024002400240024002400240024002400240024020040e0a00010203040506070809000b410021060c090b410121060c080b410221060c070b410321060c060b410421060c050b410521060c040b410621060c030b410721060c020b410821060c010b410921060b200220063a000c02400240200528020020032802002204460d00200128020021070c010b200441016a22072004490d9a012004410174220a2007200a20074b1b220a4100480d9a010240024020040d00200a102121070c010b20012802002004200a102521070b2007450d7f20012007360200200141046a200a360200200141086a28020021040b2003200441016a360200200720046a20063a00000b200041186a2903002108200029031021090240024020052802002206200328020022046b4110490d00200128020021060c010b200441106a22072004490d9901200641017422042007200420074b1b22044100480d99010240024020060d002004102121060c010b200128020020062004102521060b2006450d7f20012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a2204200837000820042009370000200041286a2903002108200029032021090240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d9901200441017422002005200020054b1b22004100480d99010240024020040d002000102121040c010b200128020020042000102521040b2004450d800120012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a22012008370008200120093700000c050b02400240200528020020032802002204460d00200128020021060c010b200441016a22062004490d9801200441017422072006200720064b1b22074100480d98010240024020040d002007102121060c010b200128020020042007102521060b2006450d800120012006360200200141046a2007360200200141086a28020021040b200141086a2207200441016a360200200620046a41053a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002206200728020022046b4110490d00200128020021060c010b200441106a22072004490d9801200641017422042007200420074b1b22044100480d98010240024020060d002004102121060c010b200128020020062004102521060b2006450d810120012006360200200141046a2004360200200141086a28020021040b2003200441106a360200200620046a2204200837000820042009370000200041c8006a2903002108200029034021090240024020052802002204200328020022006b4110490d00200128020021040c010b200041106a22052000490d9801200441017422002005200020054b1b22004100480d98010240024020040d002000102121040c010b200128020020042000102521040b2004450d820120012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a22012008370008200120093700000c040b02400240200528020020032802002204460d00200128020021050c010b200441016a22052004490d9701200441017422062005200620054b1b22064100480d97010240024020040d002006102121050c010b200128020020042006102521050b2005450d820120012005360200200141046a2006360200200141086a28020021040b200141086a2206200441016a360200200520046a41063a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002204200628020022006b4110490d00200128020021040c010b200041106a22052000490d9701200441017422002005200020054b1b22004100480d97010240024020040d002000102121040c010b200128020020042000102521040b2004450d830120012004360200200141046a2000360200200141086a28020021000b2003200041106a360200200420006a22012008370008200120093700000c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d830120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41103a0000200141046a280200210420052802002103024020002802044101460d000240024020042003460d00200128020021040c010b200341016a22042003490d9701200341017422052004200520044b1b22054100480d97010240024020030d002005102121040c010b200128020020032005102521040b2004450d850120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280208210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d9701200341017422002005200020054b1b22004100480d97010240024020030d002000102121030c010b200128020020032000102521030b2003450d860120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c030b0240024020042003460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d860120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a00002000280208210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d9601200341017422002005200020054b1b22004100480d96010240024020030d002000102121030c010b200128020020032000102521030b2003450d870120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9501200341017422052004200520044b1b22054100480d95010240024020030d002005102121040c010b200128020020032005102521040b2004450d870120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a000020002d0001220341024b0d0102400240024020030e03000102000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9701200341017422052004200520044b1b22054100480d97010240024020030d002005102121040c010b200128020020032005102521040b2004450d8a0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200220002d000222043a000c02400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d9701200041017422052003200520034b1b22054100480d97010240024020000d002005102121030c010b200128020020002005102521030b2003450d8b0120012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c030b200241013a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041026a200110710c020b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9501200341017422052004200520044b1b22054100480d95010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a0000200220002d000222043a000c02400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d9501200041017422052003200520034b1b22054100480d95010240024020000d002005102121030c010b200128020020002005102521030b2003450d8c0120012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9401200341017422052004200520044b1b22054100480d94010240024020030d002005102121040c010b200128020020032005102521040b2004450d8c0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a000020002d0008220341044b0d000240024002400240024020030e050001020304000b200241003a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9801200341017422052004200520044b1b22054100480d98010240024020030d002005102121040c010b200128020020032005102521040b2004450d910120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041096a200110710c040b200241013a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9701200341017422052004200520044b1b22054100480d97010240024020030d002005102121040c010b200128020020032005102521040b2004450d910120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041096a200110710c030b200241023a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d910120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041096a200110710c020b200241033a000c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9501200341017422052004200520044b1b22054100480d95010240024020030d002005102121040c010b200128020020032005102521040b2004450d910120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9501200341017422002004200020044b1b22004100480d95010240024020030d002000102121030c010b200128020020032000102521030b2003450d920120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000c010b200141086a2802002103200241043a000c024002402003200141046a280200460d00200128020021040c010b200341016a22042003490d9401200341017422052004200520044b1b22054100480d94010240024020030d002005102121040c010b200128020020032005102521040b2004450d920120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a0000200041096a20011071200041386a29030021082000290330210902400240200141046a2802002203200528020022006b4110490d00200128020021030c010b200041106a22042000490d9401200341017422002004200020044b1b22004100480d94010240024020030d002000102121030c010b200128020020032000102521030b2003450d930120012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a22012008370008200120093700000b200241106a24000f0b200541011030000b200541011030000b200341011030000b200541011030000b200641011030000b200641011030000b200641011030000b200341011030000b200741011030000b200541011030000b200541011030000b200541011030000b200041011030000b200541011030000b200541011030000b200041011030000b200541011030000b200541011030000b200341011030000b200041011030000b200541011030000b200541011030000b200341011030000b200041011030000b200541011030000b200041011030000b200541011030000b200041011030000b200541011030000b200541011030000b200341011030000b200541011030000b200541011030000b200041011030000b200541011030000b200541011030000b200041011030000b200441011030000b200441011030000b200541011030000b200541011030000b200441011030000b200541011030000b200741011030000b200741011030000b200341011030000b200041011030000b200741011030000b200341011030000b200341011030000b200541011030000b200741011030000b200341011030000b200541011030000b200541011030000b200541011030000b200741011030000b200041011030000b200741011030000b200041011030000b200741011030000b200041011030000b200741011030000b200341011030000b200641011030000b200541011030000b200541011030000b200641011030000b200041011030000b200541011030000b200541011030000b200541011030000b200541011030000b200041011030000b200441011030000b102a000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200441011030000b200441011030000b200441011030000b200541011030000b200541011030000b200041011030000b200541011030000b200041011030000b200541011030000b200341011030000b200341011030000b200541011030000b200041011030000b200541011030000b200041011030000b200541011030000b200041011030000b200541011030000b200541011030000b200041011030000b200741011030000b200741011030000b200041011030000b200741011030000b200441011030000b200441011030000b200041011030000b200741011030000b200041011030000b200741011030000b200441011030000b200a41011030000b200441011030000b200041011030000b200741011030000b200441011030000b200a41011030000b200441011030000b200041011030000b200741011030000b200441011030000b200041011030000b200641011030000b200041011030000b200541011030000b200541011030000b200041011030000b200541011030000b200041011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200041011030000b200541011030000b200041011030000b102a000b130020004103360204200041bcb0c0003602000bd90303027f017e027f02402001450d00034020002802e40121002001417f6a22010d000b0b02402002450d004100210341002101034002400240200120002f01064f0d0020002001410c6c6a220441e4006a2902002105200441e0006a2802002104200141016a21010c010b02400240200028020022010d002003ad210541002106410021010c010b20003301044220862003ad842105410121060b200010232005a72103024002402005422088a7220720012f01064f0d00200121040c010b034002400240200128020022040d002003ad2105410021040c010b200641016a210620013301044220862003ad8421050b200110232005a72103200421012005422088a7220720042f01064f0d000b0b200741027420046a41e8016a280200210020042007410c6c6a220141e4006a2902002105200141e0006a280200210402402006417f6a2201450d00034020002802e40121002001417f6a22010d000b0b410021010b2004450d012002417f6a210202402005a7450d00200410230b20020d000b0b0240200041d8a7c300460d0020002802002101200010232001450d0020012802002104200110232004450d00024020042802002201450d000340200410232001210420012802002200210120000d000b0b200410230b0bff0303067f017e027f230041206b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2203200128020422052f01064f0d012000200520034102746a41086a28020036020020052003410c6c6a2206413c6a2802002107200641346a29020021082001200341016a36020c2001200436020820012005360204200020083702042000410c6a20073602000c020b200041003602040c010b2001280200210602400240200528020022030d002004ad2108410021030c010b200641016a210620053301044220862004ad8421080b200510232008a72104024002402008422088a7220720032f01064f0d00200321050c010b034002400240200328020022050d002004ad2108410021050c010b200641016a210620033301044220862004ad8421080b200310232008a72104200521032008422088a7220720052f01064f0d000b0b200741027420056a220341086a2802002109200241106a41086a220a20052007410c6c6a2205413c6a2802003602002002200541346a290200370310200341bc016a280200210302402006417f6a2205450d00034020032802b80121032005417f6a22050d000b0b2001410036020c20012004360208200120033602042001410036020020002009360200200020022903103702042000410c6a200a2802003602000b200241206a24000bd308030d7f017e017f230041a0016b2202240002400240024020012802202203450d0020012003417f6a36022020012802082104200128020c2205200128020422062f01064f0d01200241186a2207200620054105746a220341206a290000370300200241106a2208200341186a290000370300200241086a2209200341106a2900003703002002200341086a290000370300200241206a41286a220a2006200541306c6a22034190036a290300370300200241206a41206a220b20034188036a290300370300200241206a41186a220c20034180036a290300370300200241206a41106a220d200341f8026a290300370300200241206a41086a220e200341f0026a290300370300200341e8026a290300210f2001200541016a36020c20012004360208200120063602042002200f370320200241d0006a41186a2007290300370300200241d0006a41106a2008290300370300200241d0006a41086a200929030037030020022002290300370350200241d0006a41286a200e290300370300200241d0006a41306a200d29030037030020024188016a200c29030037030020024190016a200b29030037030020024198016a200a290300370300200220022903203703702000200241d0006a41d00010dc041a0c020b200041003602400c010b2001280200210702400240200628020022030d002004ad210f410021030c010b200741016a210720063301044220862004ad84210f0b20061023200fa7210502400240200f422088a7220420032f01064f0d00200321060c010b034002400240200328020022060d002005ad210f410021060c010b200741016a210720033301044220862005ad84210f0b20031023200fa7210520062103200f422088a7220420062f01064f0d000b0b200241186a2208200620044105746a220341206a290000370300200241106a2209200341186a290000370300200241086a220a200341106a2900003703002002200341086a290000370300200241206a41286a220b2006200441306c6a22034190036a290300370300200241206a41206a220c20034188036a290300370300200241206a41186a220d20034180036a290300370300200241206a41106a220e200341f8026a290300370300200241206a41086a2210200341f0026a2903003703002002200341e8026a290300370320200441027420066a41fc066a280200210302402007417f6a2206450d00034020032802f80621032006417f6a22060d000b0b2001410036020c200120053602082001200336020420014100360200200241d0006a41186a2008290300370300200241d0006a41106a2009290300370300200241d0006a41086a200a290300370300200241d0006a41286a2010290300370300200241d0006a41306a200e29030037030020024188016a200d29030037030020024190016a200c29030037030020024198016a200b29030037030020022002290300370350200220022903203703702000200241d0006a41d00010dc041a0b200241a0016a24000b830c04067f017e067f017e23004190016b22022400200241206a41186a22034200370300200241206a41106a22044200370300200241206a41086a2205420037030020024200370320200241e0006a41086a220641f7fbc400ad4280808080f000841003220741086a2900003703002002200729000037036020071023200520062903003703002002200229036037032020064194b7c200ad4280808080c001841003220741086a2900003703002002200729000037036020071023200420022903602208370300200241f0006a41086a22072005290300370300200241f0006a41106a22092008370300200241f0006a41186a220a20062903003703002002200837034020022002290320370370200241186a200241f0006a4120108f01200228021c210b2002280218210c20064194fcc400ad42808080808001841003220d41086a2900003703002002200d290000370360200d1023200241d0006a41086a220e200629030037030020022002290360370350200641d8e9c000ad4280808080a002841003220d41086a2900003703002002200d290000370360200d1023200241c0006a41086a220d2006290300370300200220022903603703402002200b4100200c1b220b360260200a200241e0006aad220f4280808080c0008422081001220641186a2900003703002009200641106a2900003703002007200641086a29000037030020022006290000370370200610232003200a290300370300200420092903003703002005200729030037030020022002290370370320024002400240024041c00010212206450d00200620022903503700002006200229034037001020062002290320370020200641086a200e290300370000200641186a200d290300370000200641286a2005290300370000200641306a2004290300370000200641386a200329030037000020022000360260200a20081001220d41186a2900003703002009200d41106a2900003703002007200d41086a2900003703002002200d290000370370200d10232003200a290300370300200420092903003703002005200729030037030020022002290370370320200641c00041800110252206450d0120062002290320370040200641d8006a200241206a41186a2207290300370000200641d0006a200241206a41106a2209290300370000200641c8006a200241206a41086a220a29030037000041012105200241106a200641e00041014100410010b8012002280210210420061023024020044101460d00200241e0006a41086a22064194fcc400ad42808080808001841003220541086a2900003703002002200529000037036020051023200241c0006a41086a200629030037030020022002290360370340200641a9e4c000ad4280808080e001841003220541086a2900003703002002200529000037036020051023200241d0006a41086a2006290300370300200220022903603703502002200b360260200241f0006a41186a2205200f4280808080c000841001220641186a290000370300200241f0006a41106a2204200641106a290000370300200241f0006a41086a220d200641086a29000037030020022006290000370370200610232007200529030037030020092004290300370300200a200d2903003703002002200229037037032041c00010212206450d03200620022903403700002006200229035037001020062002290320370020200641086a200241c0006a41086a290300370000200641186a200241d0006a41086a290300370000200641286a200241206a41086a290300370000200641306a200241206a41106a290300370000200641386a200241206a41186a290300370000200241f0006a200110ac01200641c00041800110252206450d0420062002290070370040200641d8006a200241f0006a41186a290000370000200641d0006a200241f0006a41106a290000370000200641c8006a200241f0006a41086a290000370000200241086a200641e000108f01200228020c21052002280208210420061023200541004720044100477121050b20024190016a240020050f0b41c00041011030000b41800141011030000b41c00041011030000b41800141011030000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510172207422088a72203450d002007a722042d0000220241014b0d00410021050240024020020e020100010b2003417f6a4104490d0120042800012101410121050b2000200136020420002005360200200641106a24000f0b41f4b7c600412e200641086a41a4b8c6001031000ba90201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001103921000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000b20024180016a240020000f0b2004418001103e000b2004418001103e000bf31005067f017e017f017e067f230041f0006b2202240020012802202103200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a2205420037030020024200370330200241e0006a41086a220641f7fbc400ad4280808080f000841003220741086a29000037030020022007290000370360200710232005200629030037030020022002290360370330200641e7acc500ad4280808080a001841003220741086a2900003703002002200729000037036020071023200420022903602208370300200241106a41086a2005290300370300200241106a41106a2008370300200241106a41186a20062903003703002002200837035020022002290330370310200241306a200241106a412010bb0120022802302206410120061b21050240024002400240024002400240024002400240024002400240024002400240024020032002290234420020061b2208422088a7490d002008a7450d01200510230c010b2003200520034105746a10b701210602402008a7450d00200510230b20060d010b200241306a41186a22054200370300200241306a41106a22074200370300200241306a41086a2203420037030020024200370330200241e0006a41086a220641f7fbc400ad4280808080f000841003220941086a2900003703002002200929000037036020091023200320062903003703002002200229036037033020064194b7c200ad4280808080c001841003220941086a2900003703002002200929000037036020091023200241d0006a41086a22092006290300220837030020022002290360220a3703502004200a370000200441086a220b2008370000200241106a41086a220c2003290300370300200241106a41106a220d2007290300370300200241106a41186a220e200529030037030020022002290330370310200241086a200241106a4120108f01200128021c200228020c410020022802081b220f470d012005420037030020074200370300200342003703002002420037033020064194fcc400ad42808080808001841003221041086a290000370300200220102900003703602010102320032006290300370300200220022903603703302006419ddfc000ad4280808080c000841003221041086a290000370300200220102900003703602010102320092006290300220837030020022002290360220a3703502004200a370000200b2008370000200c2003290300370300200d2007290300370300200e200529030037030020022002290330370310200241306a200241106a10bc0120022802302206410120061b210d200128022022032002290234420020061b2208422088a74f0d04200d20034105746a220e450d04200241003602382002420137033020012802002104410410212206450d0620024284808080c0003702342002200636023020062004360000200128020421072001410c6a2802002206200241306a105c20022802342205200228023822046b2006490d02200228023021050c030b20004180063b0001200041013a0000200041036a41003a00000c0d0b20004180063b0001200041013a0000200041036a41003a00000c0c0b200420066a22092004490d082005410174220b2009200b20094b1b22094100480d080240024020050d002009102121050c010b200228023020052009102521050b2005450d0420022009360234200220053602300b2002200420066a360238200520046a2007200610dc041a200141106a2802002104200141186a2802002206200241306a105c0240024020060d00200228023421052002280238210b200f21070c010b20042006410c6c6a210c034020042802002109200441086a2802002206200241306a105c0240024020022802342205200228023822036b2006490d00200228023021070c010b200320066a22072003490d0a2005410174220b2007200b20074b1b220b4100480d0a0240024020050d00200b102121070c010b20022802302005200b102521070b2007450d072002200b36023420022007360230200b21050b2002200320066a220b360238200720036a2009200610dc041a2004410c6a2204200c470d000b20012802202103200128021c21070b024002402005200b6b4104490d00200b41046a2104200228023021060c010b200b41046a2204200b490d08200541017422062004200620044b1b22094100480d080240024020050d002009102121060c010b200228023020052009102521060b2006450d062002200936023420022006360230200921050b200220043602382006200b6a200736000002400240200520046b41034d0d00200521070c010b200441046a22072004490d08200541017422092007200920074b1b22074100480d080240024020050d002007102121060c010b200620052007102521060b2006450d0720022007360234200220063602300b200620046a2003360000200141246a200441046aad4220862006ad84200e1009210402402007450d00200610230b20044101460d010b20004180083b0001200041013a0000200041036a41003a00002008a7450d09200d10230c090b410c10212206450d06410410212204450d0720024284808080c000370234200220043602302004200f360000200e200241306a1071200241106a41086a2002280238220436020020022002290330220a370310200641086a20043602002006200a370200200041306a41013a0000200041286a428180808010370200200041246a2006360200200041206a4100360200200041186a4204370300200041106a42ac02370300200041086a427f370300200041316a2002280030360000200041346a200241336a280000360000200041003a00002008a7450d08200d10230c080b410441011030000b200941011030000b200b41011030000b200941011030000b200741011030000b102a000b410c41041030000b410441011030000b200241f0006a24000bbb0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a107e024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360200200328022c450d00200328022810230b2002450d00200110230b200341e0006a24000bf006010d7f23004190016b220224002002412036021420022001360210200241186a2001ad4280808080800484100410900102400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036023c20022003360238200241086a200241386a106e0240024002400240024020022802080d0002400240200228023c22014160712205417f4c0d00200228020c210602400240200141057622070d00410121080c010b200510212208450d020b02402006450d004100210903402001210a200241003a0088012009220b41016a2109410021010240024002400340200a2001460d01200241e8006a20016a200228023822052d00003a00002002200541016a3602382002200141016a22053a0088012005210120054120470d000b200241c8006a41186a220c200241e8006a41186a290300370300200241c8006a41106a220d200241e8006a41106a290300370300200241c8006a41086a220e200241e8006a41086a290300370300200220022903683703482007200b470d020240200b41017422012009200120094b1b220741ffffff3f712007470d002007410574220141004e0d020b102a000b2002410036023c0240200141ff0171450d00200241003a0088010b200241003602282007450d08200810230c080b02400240200b0d002001102121080c010b2008200b4105742001102521080b2008450d060b200a20056b21012008200b4105746a220b2002290348370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092006470d000b200241306a20063602002002200736022c200220083602282002200a20056b36023c0c060b200241306a20063602002002200736022c2002200836022820080d050c040b102f000b200541011030000b200241003602280c010b200141011030000b20024100360250200242013703482002410c36022c2002200241106a3602282002200241c8006a360244200241fc006a41013602002002420137026c20024198c2c3003602682002200241286a360278200241c4006a41b8a3c500200241e8006a102e1a2002350250422086200235024884100820004100360200200228024c450d01200228024810230c010b20002002290328370200200041086a200241286a41086a2802003602000b2004450d00200310230b20024190016a24000bbe7a0d067f017e017f017e057f017e017f017e0a7f017e167f037e057f230041f0056b2200240020004180056a41186a2201420037030020004180056a41106a220242003703004108210320004180056a41086a220442003703002000420037038005200041b0026a41086a220541f7fbc400ad4280808080f0008422061003220741086a290000370300200020072900003703b0022007102320042005290300370300200020002903b0023703800520054194b7c200ad4280808080c001841003220741086a290000370300200020072900003703b00220071023200220002903b0022208370300200041b0046a41086a22092004290300370300200041b0046a41106a220a2008370300200041b0046a41186a220b2005290300370300200020083703e00320002000290380053703b004200041286a200041b0046a4120108f01200028022c210c2000280228210d200142003703002002420037030020044200370300200042003703800520054194fcc400ad42808080808001841003220741086a290000370300200020072900003703b0022007102320042005290300370300200020002903b002370380052005419ddfc000ad4280808080c000841003220741086a290000370300200020072900003703b0022007102320012005290300220837030020092004290300370300200a20002903b002220e370300200b20083703002000200e3703e00320002000290380053703b00420004180056a200041b0046a10bc01200028028005210f20002902840521102001420037030020024200370300200442003703002000420037038005200520061003220741086a290000370300200020072900003703b0022007102320042005290300370300200020002903b00237038005200541e7acc500ad4280808080a001841003220741086a290000370300200020072900003703b0022007102320012005290300220837030020092004290300370300200a20002903b0022206370300200b2008370300200020063703e00320002000290380053703b00420004180056a200041b0046a412010bb012000280280052207410120071b2111200029028405420020071b2208a7211202400240024002402008422088a72207450d002011200741057422136a2114200041c4036a211520004180056a41206a2116200041f8026a4104722117200041d0026a410472211841022107410021190340200041e0016a41186a201120196a221a41186a2900002208370300200041e0016a41106a201a41106a2900002206370300200041e0016a41086a201a41086a290000220e3703002000201a290000221b3703e0012018201b370200201841086a200e370200201841106a2006370200201841186a200837020020002007417e6a221c3602d0024100211d0240201c201810b7010d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a221d201741186a221c29000037030020004190026a41106a221e201741106a221f29000037030020004190026a41086a2220201741086a222129000037030020002017290000370390022001201c2900003703002002201f290000370300200420212900003703002000201729000037038005200041a0036a20004180056a10be01200041b0026a41186a221c201d290300370300200041b0026a41106a221f201e2903003703002005202029030037030020002000290390023703b00220002802c003221d450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a2903003703002001201c2903003703002002201f2903003703002004200529030037030020004180026a41086a221c201541086a280200360200200020002903b002370380052000201529020037038002200041b0046a41386a221e20004180056a41386a290300370300200041b0046a41306a221f20004180056a41306a290300370300200041b0046a41286a222020004180056a41286a290300370300200041b0046a41206a22212016290300370300200b2001290300370300200a20022903003703002009200429030037030020002000290380053703b004200041e0036a41386a201e290300370300200041e0036a41306a201f290300370300200041e0036a41286a2020290300370300200041e0036a41206a2021290300370300200041e0036a41186a200b290300370300200041e0036a41106a200a290300370300200041e0036a41086a2009290300370300200020002903b0043703e003200041d0036a41086a201c28020036020020002000290380023703d0030b200041a0016a41086a200041e0036a41086a290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001201d0d02200741016a21072013201941206a2219470d000b0b410021222000410036029801200042083703900102402012450d00201110230b4100211d0c010b200041c0006a41386a2218200041a0016a41386a290300370300200041c0006a41306a2217200041a0016a41306a290300370300200041c0006a41286a2204200041a0016a41286a290300370300200041c0006a41206a221c200041a0016a41206a290300370300200041c0006a41186a2205200041a0016a41186a290300370300200041c0006a41106a2201200041a0016a41106a290300370300200041c0006a41086a221e200041a0016a41086a29030037030020004180016a41086a221f20004190016a41086a280200360200200020002903a001370340200020002903900137038001200041306a41086a2220201f280200360200200020002903800137033020004180056a41086a221f201e29030037030020004180056a41106a221e200129030037030020004180056a41186a2201200529030037030020004180056a41206a2205201c29030037030020004180056a41286a221c200429030037030020004180056a41306a2204201729030037030020004180056a41386a221720182903003703002000200029034037038005200041b0046a41086a22182020280200360200200020002903303703b00402400240024041d00010212203450d0020032000290380053703002003201d360240200320002903b004370244200341386a2017290300370300200341306a2004290300370300200341286a201c290300370300200341206a2005290300370300200341186a2001290300370300200341106a201e290300370300200341086a201f290300370300200341cc006a2018280200360200024002400240201341606a2019470d004101211d0c010b201a41206a2118201320196b41606a2105200041c4036a2120200041f8026a4104722117200041d0026a410472211a0340200041e0016a41186a201841186a2219290000370300200041e0016a41106a201841106a221d290000370300200041e0016a41086a201841086a2204290000370300200020182900003703e00120002007417f6a221c3602d00220042900002108201d29000021062018290000210e201a41186a2019290000370000201a41106a2006370000201a41086a2008370000201a200e370000410021190240201c201a10b7010d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2219201741186a220429000037030020004190026a41106a2201201741106a221c29000037030020004190026a41086a2213201741086a221e290000370300200020172900003703900220004180056a41186a221d200429000037030020004180056a41106a2204201c29000037030020004180056a41086a221c201e2900003703002000201729000037038005200041a0036a20004180056a10be01200041b0026a41186a221e2019290300370300200041b0026a41106a221f2001290300370300200041b0026a41086a2201201329030037030020002000290390023703b00220002802c0032219450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a290300370300201d201e2903003703002004201f290300370300201c200129030037030020004180026a41086a2201202041086a280200360200200020002903b002370380052000202029020037038002200041b0046a41386a221320004180056a41386a290300370300200041b0046a41306a221e20004180056a41306a290300370300200041b0046a41286a221f20004180056a41286a290300370300200041b0046a41206a222120004180056a41206a290300370300200041b0046a41186a2209201d290300370300200041b0046a41106a221d2004290300370300200041b0046a41086a2204201c29030037030020002000290380053703b004200041e0036a41386a2013290300370300200041e0036a41306a201e290300370300200041e0036a41286a201f290300370300200041e0036a41206a2021290300370300200041e0036a41186a2009290300370300200041e0036a41106a201d290300370300200041e0036a41086a2004290300370300200020002903b0043703e003200041d0036a41086a200128020036020020002000290380023703d0030b200041a0016a41086a200041e0036a41086a290300370300200041a0016a41106a200041e0036a41106a290300370300200041a0016a41186a200041e0036a41186a290300370300200041a0016a41206a200041e0036a41206a290300370300200041a0016a41286a200041e0036a41286a290300370300200041a0016a41306a200041e0036a41306a290300370300200041a0016a41386a200041e0036a41386a29030037030020004190016a41086a200041d0036a41086a280200360200200020002903e0033703a001200020002903d0033703900120190d02201841206a21184101211d200741016a2107200541606a22050d000b0b410121220c030b200041c0006a41386a2223200041a0016a41386a221e290300370300200041c0006a41306a2224200041a0016a41306a221f290300370300200041c0006a41286a2225200041a0016a41286a2220290300370300200041c0006a41206a2226200041a0016a41206a2221290300370300200041c0006a41186a2227200041a0016a41186a2209290300370300200041c0006a41106a2228200041a0016a41106a220a290300370300200041c0006a41086a2229200041a0016a41086a220b29030037030020004180016a41086a222a20004190016a41086a2215280200360200200020002903a001370340200020002903900137038001200041306a41086a222b202a2802003602002000200029038001370330201841206a2118200041c4036a212c200041f8026a4104722117200041d0026a410472211a4101211d41012122034020004180056a41086a2205202929030037030020004180056a41106a2201202829030037030020004180056a41186a2213202729030037030020004180056a41206a222d202629030037030020004180056a41286a222e202529030037030020004180056a41306a222f202429030037030020004180056a41386a223020232903003703002000200029034037038005200041b0046a41086a2231202b280200360200200020002903303703b00402402022201d470d00201d41016a2204201d490d06201d410174221c2004201c20044b1b2222ad42d0007e2208422088a70d062008a722044100480d0602400240201d0d002004102121030c010b2003201d41d0006c2004102521030b2003450d030b2003201d41d0006c6a22042000290380053703002001290300210820132903002106202d290300210e202e290300211b202f2903002132203029030021332005290300213420042019360240200441086a2034370300200441386a2033370300200441306a2032370300200441286a201b370300200441206a200e370300200441186a2006370300200441106a2008370300200420002903b004370244200441cc006a2031280200360200201d41016a211d20182014460d030340200041e0016a41186a201841186a2219290000370300200041e0016a41106a201841106a2204290000370300200041e0016a41086a201841086a221c290000370300200020182900003703e001200020073602d002201c2900002108200429000021062018290000210e201a41186a2019290000370000201a41106a2006370000201a41086a2008370000201a200e3700004100211902402007201a10b7010d00200041f8026a41206a200041d0026a41206a280200360200200041f8026a41186a200041d0026a41186a290300370300200041f8026a41106a200041d0026a41106a290300370300200041f8026a41086a200041d0026a41086a290300370300200020002903d0023703f80220004190026a41186a2219201741186a220429000037030020004190026a41106a221c201741106a223529000037030020004190026a41086a2236201741086a223729000037030020002017290000370390022013200429000037030020012035290000370300200520372900003703002000201729000037038005200041a0036a20004180056a10be01200041b0026a41186a22042019290300370300200041b0026a41106a2235201c290300370300200041b0026a41086a221c203629030037030020002000290390023703b00220002802c0032219450d00201620002903a003370300201641186a200041a0036a41186a290300370300201641106a200041a0036a41106a290300370300201641086a200041a0036a41086a29030037030020132004290300370300200120352903003703002005201c29030037030020004180026a41086a2204202c41086a280200360200200020002903b002370380052000202c29020037038002200041b0046a41386a221c2030290300370300200041b0046a41306a2235202f290300370300200041b0046a41286a2236202e290300370300200041b0046a41206a2237202d290300370300200041b0046a41186a22382013290300370300200041b0046a41106a223920012903003703002031200529030037030020002000290380053703b004200041e0036a41386a201c290300370300200041e0036a41306a2035290300370300200041e0036a41286a2036290300370300200041e0036a41206a2037290300370300200041e0036a41186a2038290300370300200041e0036a41106a2039290300370300200041e0036a41086a2031290300370300200020002903b0043703e003200041d0036a41086a200428020036020020002000290380023703d0030b200b200041e0036a41086a290300370300200a200041e0036a41106a2903003703002009200041e0036a41186a2903003703002021200041e0036a41206a2903003703002020200041e0036a41286a290300370300201f200041e0036a41306a290300370300201e200041e0036a41386a2903003703002015200041d0036a41086a280200360200200020002903e0033703a001200020002903d00337039001024020190d00200741016a21072014201841206a2218460d050c010b0b2023201e2903003703002024201f2903003703002025202029030037030020262021290300370300202720092903003703002028200a2903003703002029200b290300370300202a2015280200360200200020002903a001370340200020002903900137038001202b202a2802003602002000200029038001370330201841206a2118200741016a21070c000b0b41d00041081030000b200441081030000b02402012450d00201110230b2000201d36029801200020223602940120002003360290010b20004180056a41186a2219420037030020004180056a41106a2217420037030020004180056a41086a221a42003703002000420037038005200041b0026a41086a220741f7fbc400ad4280808080f0008422081003221841086a290000370300200020182900003703b00220181023201a2007290300370300200020002903b0023703800520074194b7c200ad4280808080c0018422061003221841086a290000370300200020182900003703b00220181023200041e0036a41086a22162007290300220e370300200020002903b002221b3703e0032002201b370000200241086a2201200e370000200041b0046a41086a2204201a290300370300200041b0046a41106a22112017290300370300200041b0046a41186a2213201929030037030020002000290380053703b004200041206a200041b0046a4120108f012000280224211c2000280220210520074194fcc400ad4280808080800184220e1003221841086a290000370300200020182900003703b0022018102320042007290300370300200020002903b0023703b004200741d8e9c000ad4280808080a002841003221841086a290000370300200020182900003703b0022018102320162007290300370300200020002903b0023703e0032000201c410020051b3602a001200041b0026a41186a221c200041a0016aad4280808080c00084221b1001221841186a290000370300200041b0026a41106a2205201841106a2900003703002007201841086a290000370300200020182900003703b002201810232019201c29030037030020172005290300370300201a2007290300370300200020002903b0023703800502400240024002400240024002400240024002400240024002400240024041c00010212218450d00201820002903b004370000201820002903e0033700102018200029038005370020201841086a2004290300370000201841186a2016290300370000201841286a201a290300370000201841306a2017290300370000201841386a20192903003700002018ad4280808080800884100a201810232019420037030020174200370300201a42003703002000420037038005200720081003221841086a290000370300200020182900003703b00220181023201a2007290300370300200020002903b00237038005200720061003221841086a290000370300200020182900003703b00220181023201620072903002208370300200020002903b00222063703e00320022006370000200120083700002004201a290300370300201120172903003703002013201929030037030020002000290380053703b004200041186a200041b0046a4120108f01200028021c2102200028021821012007200e1003221841086a290000370300200020182900003703b0022018102320162007290300370300200020002903b0023703e003200741a9e4c000ad4280808080e001841003221841086a290000370300200020182900003703b0022018102320042007290300370300200020002903b0023703b00420002002410020011b3602a001201c201b1001221841186a2900003703002005201841106a2900003703002007201841086a290000370300200020182900003703b002201810232019201c29030037030020172005290300370300201a2007290300370300200020002903b0023703800541c00010212207450d0120104200200f1b210e200720002903e003370000200720002903b0043700102007200029038005370020200741086a200041e0036a41086a290300370000200741186a200041b0046a41086a290300370000200741286a20004180056a41086a2218290300370000200741306a20004180056a41106a290300370000200741386a20004180056a41186a2903003700002007ad4280808080800884100a200710230240201d450d0020004180056a20004190016a1078200041bb046a201828020036000020002000290380053700b304200041073a0080052000418c056a200041b0046a41076a290000370000200041023a008405200020002900b0043700850520004180056a108e01200041f8026a41106a20004190016a41086a2802003602002000200e422088a722393602fc022000200c4100200d1b22173602f802200020002903900137038003200041d0036a200041f8026a41086a107820002802d803211c20002802d403213820002802d0032122410410212212450d032012201736000020004284808080c0003702a401200020123602a001200041b0026a41086a220741effbc400ad42808080808001841003221841086a290000370300200020182900003703b00220181023200041e0036a41086a221a2007290300370300200020002903b0023703e003200741e4ecc200ad4280808080a002841003221841086a290000370300200020182900003703b00220181023200041b0046a41086a22182007290300370300200020002903b0023703b00420004190026a4187f4c20010bf0141c00010212207450d04200720002903e003370000200720002903b0043700102007200029039002370020200741086a201a290300370000200741186a2018290300370000200741286a20004190026a41086a290300370000200741306a200041a0026a290300370000200741386a20004190026a41186a29030037000020004180056a200741c00010c001200029028405210820002802800521182007102320002008420020181b22064220883e02b40420002018410120181b22053602b004200041106a200041b0046a106e200028021421044100211620002802100d0920002802b404220741246e221d41246c2218417f4c0d050240024020180d00410421160c010b201810212216450d070b2004450d0941002102034020074104490d09200241016a210120002007417c6a221a3602b404200020002802b004221941046a3602b0042019280000211141002107200041003a00a00503400240201a2007470d00200041003602b404200741ff0171450d0b200041003a00a0050c0b0b20004180056a20076a201920076a221841046a2d00003a00002000201841056a3602b0042000200741016a22183a00a0052018210720184120470d000b200041b0026a41086a221920004180056a41086a290300370300200041b0026a41106a221320004180056a41106a290300370300200041b0026a41186a221e20004180056a41186a29030037030020002000290380053703b0022000201a20186b22073602b4040240201d2002470d00200241017422182001201820014b1b221dad42247e2208422088a70d122008a722184100480d120240024020020d002018102121160c010b2016200241246c2018102521160b2016450d090b2016200241246c6a22182011360200201820002903b0023702042018410c6a2019290300370200201841146a20132903003702002018411c6a201e2903003702002001210220012004470d000c0a0b0b200041013a008405200041073a00800520004180056a108e012022450d09200310230c090b41c00041011030000b41c00041011030000b410441011030000b41c00041011030000b102f000b201841041030000b201841041030000b0240201d0d00410021160c010b20161023410021160b20004180056a200041a0016a10c101200041b0046a200028028005221820002802880510bb0120002802b004210720002902b40421080240200028028405450d00201810230b2008420020071b210802402006a7450d00200510230b201d410020161b21312016410420161b211d2007410120071b21362008a721350240024002400240024002400240201c450d002004410020161b21042008422088a721012022201c41d0006c6a210320004180056a410c6a211120004180056a41306a211e20004180056a41206a211f200041e0036a41c4006a210a200041a8046a21374100212c2022211602400240034020004180056a41386a22182016220741386a290300370300201e200741306a29030037030020004180056a41286a221a200741286a290300370300201f200741206a29030037030020004180056a41186a221c200741186a29030037030020004180056a41106a2205200741106a29030037030020004180056a41086a2202200741086a29030037030020004180026a41086a2219200741cc006a28020036020020002007290300370380052000200741c4006a29020037038002200741d0006a2116200741c0006a2802002207450d04200041c0006a41386a22132018290300370300200041c0006a41306a2218201e290300370300200041c0006a41286a2220201a290300370300200041c0006a41206a221a201f290300370300200041c0006a41186a2221201c290300370300200041c0006a41106a22092005290300370300200041c0006a41086a220b200229030037030020004180016a41086a221520192802003602002000200029038005370340200020002903800237038001200041e0036a41386a2013290300370300200041e0036a41306a22192018290300370300200041e0036a41286a2020290300370300200041e0036a41206a2213201a290300370300200041e0036a41186a2021290300370300200041e0036a41106a2009290300370300200041e0036a41086a200b290300370300200020002903403703e003200020073602a004200a200029038001370200200a41086a201528020036020002400240024002400240024041041021221a450d00201a201736000020114100290087f442370000201141086a410029008ff44237000020004284808080c000370284052000201a360280052000200041e0036a36029c05410810212207450d01200042083702b404200020073602b0042011200041b0046a10c2014104200041b0046a105c0240024020002802b404221820002802b80422076b4104490d0020002802b00421180c010b200741046a22202007490d17201841017422072020200720204b1b22074100480d170240024020180d002007102121180c010b20002802b00420182007102521180b2018450d03200020073602b404200020183602b00420002802b80421070b2000200741046a3602b804201820076a201a280000360000200041e0036a200041b0046a1071200020133602a003200041a0036a200041b0046a10c301200020193602a003200041a0036a200041b0046a10c30120002802a004210720372802002218200041b0046a105c02402018450d00201841306c21180340200741106a200041b0046a1071200020073602a003200741306a2107200041a0036a200041b0046a10c301201841506a22180d000b0b20002802b4042119200041b0026a41186a221320003502b80442208620002802b0042221ad841001220741186a290000370300200041b0026a41106a2220200741106a290000370300200041b0026a41086a2218200741086a290000370300200020072900003703b00220071023200041a0016a41186a220b2013290300370300200041a0016a41106a22152020290300370300200041a0016a41086a22142018290300370300200020002903b0023703a00102402019450d00202110230b201a1023201841effbc400ad428080808080018422081003220741086a290000370300200020072900003703b00220071023200041d0026a41086a22192018290300370300200020002903b0023703d002201841c2a3c200ad4280808080f0008422061003220741086a290000370300200020072900003703b00220071023200041a0036a41086a22132018290300370300200020002903b0023703a003200041b0046a200041a0016a10ac0141c00010212207450d03200720002903d002370000200720002903a003370010200720002900b004370020200741086a2019290300370000200741186a2013290300370000200741286a200041b0046a41086a2220290000370000200741306a200041b0046a41106a2221290000370000200741386a200041b0046a41186a2209290000370000200041086a200741c00041014100410010b8012000280208211a20071023201a4101470d0420002802a404450d0520002802a00410230c050b410441011030000b410841011030000b200741011030000b41c00041011030000b200041b0046a200041e0036a41d00010dc041a20004180056a200041b0046a41d00010dc041a200041003602d805200042013703d005201820081003220741086a290000370300200020072900003703b0022007102320192018290300370300200020002903b0023703d002201820061003220741086a290000370300200020072900003703b0022007102320132018290300370300200020002903b0023703a003200041b0046a200041a0016a10ac0102400240024041c0001021221a450d00201a20002903d002370000201a20002903a003370010201a20002900b004370020201a41086a2019290300370000201a41186a2013290300370000201a41286a2020290000370000201a41306a2021290000370000201a41386a2009290000370000200041003602b804200042013703b00420004180056a200041b0046a10712000201f3602a003200041a0036a200041b0046a10c3012000201e3602a003200041a0036a200041b0046a10c30120002802c005210720002802c8052218200041b0046a105c02402018450d00201841306c21180340200741106a200041b0046a1071200020073602a003200741306a2107200041a0036a200041b0046a10c301201841506a22180d000b0b20002802d005210720002802d8052218200041b0046a105c02402018450d002018410574211803402007200041b0046a1071200741206a2107201841606a22180d000b0b20002802b4042107201aad428080808080088420003502b80442208620002802b0042218ad84100202402007450d00201810230b201a1023024020002802c405450d0020002802c00510230b024020002802d405450d0020002802d00510230b201c200b2903003703002005201529030037030020022014290300370300200020002903a00137038005410021070240200441014b0d00024020040e020003000b200041e0016a41186a201c290300370300200041e0016a41106a2005290300370300200041e0016a41086a200229030037030020002000290380053703e001410021070c030b20042118034020072018410176221a20076a2219201d201941246c6a28020020174b1b21072018201a6b221841014b0d000c020b0b41c00041011030000b0240201d200741246c6a28020022182017460d00200720182017496a21070b200041e0016a41186a201c290300370300200041e0016a41106a2005290300370300200041e0016a41086a200229030037030020002000290380053703e001200420074f0d004180bbc000102b000b024020042031470d00200441016a22182004490d122004410174221a2018201a20184b1b2231ad42247e2208422088a70d122008a722184100480d120240024020040d0020181021211d0c010b201d200441246c20181025211d0b201d450d030b201d200741246c6a221841246a2018200420076b41246c10dd041a201820173602002018411c6a200041e0016a41186a290300370200201841146a200041e0016a41106a2903003702002018410c6a200041e0016a41086a290300370200201820002903e0013702042009201c290300370300202120052903003703002020200229030037030020002000290380053703b004024020012035470d00200141016a22072001490d12200141017422182007201820074b1b223541ffffff3f712035470d12203541057422074100480d120240024020010d002007102121360c010b203620014105742007102521360b2036450d040b200441016a2104203620014105746a220720002903b004370000200741186a2009290300370000200741106a2021290300370000200741086a20202903003700004101212c200141016a21010b20162003470d000b200321160c030b201841041030000b200741011030000b2038450d01202210230c010b024020162003460d000340201641c0006a2802002218450d01201641d0006a21070240201641c4006a280200450d00201810230b2007211620032007470d000b0b02402038450d00202210230b202c410171450d0002402001450d002001410574211820362107034020004180056a200710c40120002802c005221a0d03200741206a2107201841606a22180d000b0b4108211c41002105410021020c020b2012102302402035450d00203610230b2031450d02201d10230c020b200041e0036a41386a221c20004180056a41386a2219290300370300200041e0036a41306a222020004180056a41306a2205290300370300200041e0036a41286a222120004180056a41286a2202290300370300200041e0036a41206a220920004180056a41206a2211290300370300200041e0036a41186a220a20004180056a41186a2213290300370300200041e0036a41106a220b20004180056a41106a221e290300370300200041e0036a41086a221520004180056a41086a221f290300370300200041a0036a41086a220320004180056a41cc006a290200370300200041a0036a41106a221420004180056a41d4006a290200370300200041a0036a41186a223720004180056a41dc006a28020036020020002000290380053703e0032000200041c4056a22162902003703a003200041c0006a41086a222c2015290300370300200041c0006a41106a2215200b290300370300200041c0006a41186a220b200a290300370300200041c0006a41206a220a2009290300370300200041c0006a41286a22092021290300370300200041c0006a41306a22212020290300370300200041c0006a41386a2220201c290300370300200041a0016a41086a221c2003290300370300200041a0016a41106a22032014290300370300200041a0016a41186a22142037280200360200200020002903e003370340200020002903a0033703a001201f202c290300370300201e20152903003703002013200b2903003703002011200a2903003703002002200929030037030020052021290300370300201920202903003703002000200029034037038005200041b0046a41086a2220201c290300370300200041b0046a41106a22212003290300370300200041b0046a41186a22092014280200360200200020002903a0013703b00441e0001021221c450d04201c200029038005370300201c201a360240201c20002903b004370244201c41386a2019290300370300201c41306a2005290300370300201c41286a2002290300370300201c41206a2011290300370300201c41186a2013290300370300201c41106a201e290300370300201c41086a201f290300370300201c41cc006a2020290300370200201c41d4006a2021290300370200201c41dc006a2009280200360200024020184120470d0041012105410121020c010b200741206a211f203620014105746a221a41606a211441012105410121020340201f21070240034020004180056a200710c40120002802c00522180d01201a200741206a2207470d000c030b0b200041e0036a41386a221920004180056a41386a2220290300370300200041e0036a41306a221f20004180056a41306a2221290300370300200041e0036a41286a223720004180056a41286a2209290300370300200041e0036a41206a222c20004180056a41206a220a290300370300200041e0036a41186a221120004180056a41186a220b290300370300200041e0036a41106a221320004180056a41106a2215290300370300200041e0036a41086a221e20004180056a41086a2203290300370300200041a0036a41086a2222201641086a290200370300200041a0036a41106a2238201641106a290200370300200041a0036a41186a220c201641186a28020036020020002000290380053703e003200020162902003703a003200041b0046a41086a220d201e290300370300200041b0046a41106a222d2013290300370300200041b0046a41186a222e2011290300370300200041b0046a41206a222f202c290300370300200041b0046a41286a222c2037290300370300200041b0046a41306a2237201f290300370300200041b0046a41386a221f2019290300370300200041a0016a41086a22192022290300370300200041a0016a41106a22222038290300370300200041a0016a41186a2238200c280200360200200020002903e0033703b004200020002903a0033703a0012003200d2903003703002015202d290300370300200b202e290300370300200a202f2903003703002009202c290300370300202120372903003703002020201f290300370300200020002903b00437038005201e20192903003703002013202229030037030020112038280200360200200020002903a0013703e003024020022005470d00200541016a22192005490d0b200541017422022019200220194b1b2202ad42e0007e2208422088a70d0b2008a722194100480d0b0240024020050d0020191021211c0c010b201c200541e0006c20191025211c0b201c450d070b200741206a211f201c200541e0006c6a2219200029038005370300201941106a2015290300370300201941086a200329030037030020212903002108202029030021062009290300211b200a2903002110200b2903002132201941c0006a2018360200201941186a2032370300201941206a2010370300201941286a201b370300201941386a2006370300201941306a2008370300201941c4006a20002903e003370200201941cc006a201e290300370200201941d4006a2013290300370200201941dc006a2011280200360200200541016a210520142007470d000b0b200041a0056a20043602002000419c056a203136020020004190056a2001ad4220862035ad843703002000203636028c0520004284808080c0003702840520002012360280052000201d36029805200041003602b804200042013703b0042004200041b0046a105c02402004450d00201d200441246c6a2104201d21180340201828020021190240024020002802b404221a20002802b80422076b4104490d0020002802b004211a0c010b200741046a22162007490d0b201a41017422072016200720164b1b22074100480d0b02400240201a0d0020071021211a0c010b20002802b004201a20071025211a0b201a450d08200020073602b4042000201a3602b00420002802b80421070b2000200741046a3602b804201a20076a20193600002000200041b0046a3602e003201841046a200041e0036a106b201841246a22182004470d000b0b20002802b804211920002802b404211620002802b004211a200041b0026a41086a220741effbc400ad42808080808001841003221841086a290000370300200020182900003703b00220181023200041e0036a41086a22042007290300370300200020002903b0023703e003200741e4ecc200ad4280808080a002841003221841086a290000370300200020182900003703b00220181023200041b0046a41086a22182007290300370300200020002903b0023703b00420004190026a4187f4c20010bf0141c00010212207450d06200720002903e003370000200720002903b0043700102007200029039002370020200741086a2004290300370000200741186a2018290300370000200741286a20004190026a41086a290300370000200741306a200041a0026a290300370000200741386a20004190026a41186a290300370000200041c0003602b404200020073602b004201a2019200041b0046a10c5012007102302402016450d00201a10230b200041e0036a20004180056a10c10120003502e803210820002802e003211a200041003602b804200042013703b0042001200041b0046a105c02402001450d00200141057421182036210703402000200041b0046a3602a0012007200041a0016a106b200741206a2107201841606a22180d000b0b20002802b40421072008422086201aad8420003502b80442208620002802b0042218ad84100202402007450d00201810230b024020002802e403450d00201a10230b2012102302402035450d00203610230b02402031450d00201d10230b201c0d010b200028028003211a024020004188036a2802002207450d00200741d0006c2118201a41c0006a210703400240200741046a280200450d00200728020010230b200741d0006a2107201841b07f6a22180d000b0b20004184036a280200450d01201a10230c010b410410212207450d052007201736000020004188056a4284808080c0003703004100211a20004190056a4100290087f44237030020004198056a410029008ff4423703002000200736028405200041043a00800520004180056a108e0102402039410a6e417f7320056a221820054b0d002000418094ebdc0336028405200020394101203941014b1b2207201841036c221820072018491b2007418094ebdc036e22184101201841014b1b22186ead428094ebdc037e200720186ead8042ffffffff0f834280bbb0217e428094ebdc0380a722073602800520004180056a2007418094ebdc034b4102746a280200211a0b0240024002402005450d00200541ffffffff03712005470d09200541027422074100480d092007102122190d01200741041030000b201c410041044100201710c6010c010b200521182019210703402007201a360200200741046a21072018417f6a22180d000b201c200520192005201710c60102402005450d00201910230b2005450d00200541e0006c2118201c41d4006a210703400240200741706a280200450d002007416c6a28020010230b02402007280200450d002007417c6a28020010230b200741e0006a2107201841a07f6a22180d000b0b02402002450d00201c10230b200028028003211a024020004188036a2802002207450d00200741d0006c2118201a41c0006a210703400240200741046a280200450d00200728020010230b200741d0006a2107201841b07f6a22180d000b0b20004184036a280200450d00201a10230b0240200ea7450d00200f4101200f1b10230b200041f0056a24000f0b41e00041081030000b201941081030000b200741011030000b41c00041011030000b410441011030000b102a000bc30701067f23004190016b22022400200241d0006a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241386a41086a2205200329030037030020022002290350370338200341fdacc500ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241186a41086a2206200329030037030020022002290350370318200241d0006a200110ac01024041c00010212204450d00200420022903383700002004200229031837001020042002290050370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241d0006a41106a2205290000370000200441386a200241d0006a41186a2206290000370000200241c00036024c20022004360248200241386a2004ad4280808080800884100410900102400240200228023822010d00410021030c010b200228023c21072002200241386a41086a280200360284012002200136028001200241d0006a20024180016a10fe020240024020022802702203450d00200241186a41186a200241d0006a41186a290300370300200241186a41106a200241d0006a41106a290300370300200241186a41086a200241d0006a41086a290300370300200241086a41086a200241fc006a28020036020020022002290350370318200220022902743703080c010b4100210320024100360220200242013703182002410c36020c2002200241c8006a3602082002200241186a36028c01200241e4006a41013602002002420137025420024198c2c3003602502002200241086a3602602002418c016a41b8a3c500200241d0006a102e1a20023502204220862002350218841008200228021c450d00200228021810230b2007450d00200110230b200241d0006a41086a2201200241186a41086a2903003703002005200241186a41106a2903003703002006200241186a41186a290300370300200241386a41086a2205200241086a41086a2802003602002002200229031837035020022002290308370338024002402003450d002000200229035037030020002003360220200041246a2002290338370200200041186a200241d0006a41186a290300370300200041106a200241d0006a41106a290300370300200041086a20012903003703002000412c6a20052802003602000c010b2000420037030020004208370320200041186a4200370300200041106a4200370300200041086a4200370300200041286a41003602000b2004102320024190016a24000f0b41c00041011030000bbe0301057f230041206b2202240020012d0000210302400240024002400240410110212204450d00200420033a000020012d0001210320044101410210252204450d01200420033a000120012d0002210320044102410410252204450d02200420033a0002200420012d00033a000320012d0004210320044104410810252204450d03200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d0008210320044108411010252204450d04200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f200241186a22032004ad42808080808002841001220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a2900003703002002200129000037030020011023200041186a2003290300370000200041106a2005290300370000200041086a20062903003700002000200229030037000020041023200241206a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000bc00301057f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841004109001024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a106e024002400240024020032802000d002003280224220420032802042205490d0120054100480d0502400240024020050d00410121060c010b200510272206450d01200620032802202207200510dc041a2003200420056b3602242003200720056a3602200b200341c8006a41086a2005360200200041086a20053602002003200536024c20032006360248200020032903483702000c040b200541011030000b200341003602480c010b200341003602480b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360200200328022c450d00200328022810230b2002450d00200110230b200341e0006a24000f0b102f000baf0601077f230041d0006b22022400200241306a41086a220341effbc400ad42808080808001841003220441086a2900003703002002200429000037033020041023200241206a41086a2205200329030037030020022002290330370320200341a0ecc200ad4280808080e002841003220441086a2900003703002002200429000037033020041023200241086a2206200329030037030020022002290330370300200241306a4187f4c20010bf0102400240024002400240024041c00010212204450d00200420022903203700002004200229030037001020042002290030370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a290000370000200441386a200241306a41186a2900003700002001280208220341046a2205417f4c0d01200128020021070240024020050d00410121010c010b200510212201450d030b2002410036023820022005360234200220013602302003200241306a105c0240024020022802342206200228023822016b2003490d00200228023021050c010b200120036a22052001490d05200641017422082005200820054b1b22084100480d050240024020060d002008102121050c010b200228023020062008102521050b2005450d042002200836023420022005360230200821060b200520016a2007200310dc041a200241306a41186a2207200120036aad4220862005ad841001220341186a290000370300200241306a41106a2201200341106a290000370300200241306a41086a2208200341086a2900003703002002200329000037033020031023200241186a2007290300370300200241106a2001290300370300200241086a20082903003703002002200229033037030002402006450d00200510230b200441c00041800110252204450d0520042002290300370040200441d8006a200241186a290300370000200441d0006a200241106a290300370000200441c8006a200241086a29030037000020004280818080800c37020420002004360200200241d0006a24000f0b41c00041011030000b102f000b200541011030000b200841011030000b102a000b41800141011030000bcc1501047f20002d000021020240024002400240024002400240024002400240024002400240024002400240024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0001210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0002210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0003210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0004210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0005210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0006210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0007210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0008210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0009210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000a210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000b210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000c210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000d210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000e210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000f210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d11200041017422022003200220034b1b22024100480d110240024020000d002002102121030c010b200128020020002002102521030b2003450d1020012003360200200141046a2002360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000f0b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200241011030000b102a000b800a03017f027e057f230041e0006b2202240002400240024002400240024002400240024002400240200028020022002903002203423f56200041086a290300220442005220045022051b0d0002400240200141046a280200200141086a2802002200460d00200128020021050c010b200041016a22052000490d0b200041017422062005200620054b1b22064100480d0b0240024020000d002006102121050c010b200128020020002006102521050b2005450d0220012005360200200141046a2006360200200141086a28020021000b200141086a200041016a360200200520006a2003a74102743a00000c080b20034280800154410020051b0d06200342808080800454410020051b0d05411020047920037942c0007c20044200521ba741037622066b4104490d0402400240200141046a280200200141086a2802002205460d00200128020021070c010b200541016a22082005490d0a200541017422072008200720084b1b22084100480d0a0240024020050d002008102121070c010b200128020020052008102521070b2007450d0220012007360200200141046a2008360200200141086a28020021050b200141086a2208200541016a360200200720056a413320064102746b3a0000200029030021032002200041086a290300220437030820022003370300200641706a2105200141046a2107034002400240200728020020082802002200460d00200128020021060c010b200041016a22062000490d0b200041017422092006200920064b1b22094100480d0b0240024020000d002009102121060c010b200128020020002009102521060b2006450d042001200636020020072009360200200828020021000b2008200041016a360200200620006a2003a73a00002003420888200442388684210320044208882104200541016a22002005492106200021052006450d000b2002200337030020022004370308200320048450450d030c070b200641011030000b200841011030000b200941011030000b200241286a41146a410d360200200241346a4110360200200241106a41146a41033602002002200236024020024188a9c30036024420024203370214200241acb6c6003602102002411036022c200242043703582002420137024c200241e0a7c3003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4198a9c3001038000b41eca8c300102b000b024002400240200141046a2802002205200141086a28020022006b4104490d00200128020021050c010b200041046a22062000490d05200541017422002006200020064b1b22004100480d050240024020050d002000102121050c010b200128020020052000102521050b2005450d0120012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a2003a74102744102723600000c020b200041011030000b02400240200141046a2802002205200141086a28020022006b4102490d00200128020021050c010b200041026a22062000490d03200541017422002006200020064b1b22004100480d030240024020050d002000102121050c010b200128020020052000102521050b2005450d0220012005360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200520006a2003a74102744101723b00000b200241e0006a24000f0b200041011030000b102a000bf20c020e7f017e23004180026b22022400200241a0016a41086a220341effbc400ad42808080808001841003220441086a290000370300200220042900003703a00120041023200241086a22052003290300370300200220022903a001370300200341c2a3c200ad4280808080f000841003220441086a290000370300200220042900003703a00120041023200241e0006a41086a22042003290300370300200220022903a001370360200241a0016a200110ac01024041c00010212201450d002001200229030037000020012002290360370010200120022900a001370020200141086a2005290300370000200141186a2004290300370000200141286a2003290000370000200141306a200241a0016a41106a2206290000370000200141386a200241a0016a41186a2207290000370000200241c00036024420022001360240200241c8006a2001ad4280808080800884100410900102400240200228024822050d00410021030c010b200228024c21082002200241d0006a280200220936025c2002200536025841002103200241003a00200240024002400340024020092003470d002002410036025c200341ff0171450d02200241003a00200c020b200220036a200520036a22042d00003a00002002200441016a3602582002200341016a22043a00202004210320044120470d000b200241e0016a41086a220a200241086a220b290300370300200241e0016a41106a220c200241106a220d290300370300200241e0016a41186a220e200241186a220f290300370300200220022903003703e0012002200920046b36025c2002200241d8006a10fe0220022802202203450d00200241a0016a41186a2209200e290300370300200241a0016a41106a220e200c290300370300200241a0016a41086a220c200a290300370300200241a0016a41286a220a200b290300370300200241a0016a41306a220b200d290300370300200241a0016a41386a220d200f290300370300200220022903e0013703a001200220022903003703c001200241246a2802002104200241286a220f2903002110200241e0006a41086a200c290300370300200241e0006a41106a200e290300370300200241e0006a41186a2009290300370300200241e0006a41206a220920022903c001370300200241e0006a41286a220c200a290300370300200241e0006a41306a220a200b290300370300200241e0006a41386a220b200d290300370300200220022903a001370360200241a0016a200241d8006a107e20022802a0010d012004450d00200310230b4100210320024100360268200242013703602002410c3602042002200241c0006a3602002002200241e0006a3602e001200241b4016a4101360200200242013702a40120024198c2c3003602a001200220023602b001200241e0016a41b8a3c500200241a0016a102e1a2002350268422086200235026084100802402002280264450d00200228026010230b0c010b200241e0016a41086a200241a0016a41086a280200360200200241086a200241e0006a41086a290300370300200241106a200241e0006a41106a290300370300200241186a200241e0006a41186a290300370300200241206a2009290300370300200f200c290300370300200241306a200a290300370300200241386a200b290300370300200220022903a0013703e001200220022903603703000b2008450d00200510230b200241a0016a41086a2205200241086a2903003703002006200241106a2903003703002007200241186a290300370300200241a0016a41206a2209200241206a290300370300200241a0016a41286a200241286a290300370300200241a0016a41306a200241306a290300370300200241a0016a41386a200241386a290300370300200220022903003703a001200241e0006a41086a2206200241e0016a41086a280200360200200220022903e00137036002402003450d00200020022903a00137030020002004360244200041c8006a2010370200200041386a200241a0016a41386a290300370300200041306a200241a0016a41306a290300370300200041286a200241a0016a41286a290300370300200041206a2009290300370300200041186a200241a0016a41186a290300370300200041106a200241a0016a41106a290300370300200041086a2005290300370300200041d8006a2006280200360200200041d0006a20022903603702000b200020033602402001102320024180026a24000f0b41c00041011030000b9d0201057f230041106b220324000240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b20034100360208200320043602042003200536020020012003105c0240024020032802042206200328020822056b2001490d00200328020021040c010b200520016a22042005490d04200641017422072004200720044b1b22074100480d040240024020060d002007102121040c010b200328020020062007102521040b2004450d032003200736020420032004360200200721060b200420056a2000200110dc041a2002290200200520016aad4220862004ad84100202402006450d00200410230b200341106a24000f0b102f000b200441011030000b200741011030000b102a000be94312057f017e017f017e027f027e047f017e067f017e067f027e027f017e067f027e017f027e230041f0036b22052400200541c8036a41186a22064200370300200541c8036a41106a22074200370300200541c8036a41086a22084200370300200542003703c80320054188036a41086a220941c6acc500ad4280808080f00084220a1003220b41086a2900003703002005200b29000037038803200b1023200820092903003703002005200529038803220c3703c8022005200c3703c80320094190fcc500ad4280808080b002841003220b41086a2900003703002005200b29000037038803200b10232007200529038803220c37030020054198036a41086a220b200829030037030020054198036a41106a220d200c37030020054198036a41186a220e20092903003703002005200c3703d802200520052903c80337039803200541203602ec01200520054198036a3602e80120054188026a20054198036aad220f4280808080800484221010041090010240024020052802880222110d00410021120c010b200528028c0221130240024020054188026a41086a2802004104490d0020112800002114410121120c010b41002112200541003602b002200542013703a8022005410c36028c032005200541e8016a360288032005200541a8026a3602d802200541dc036a4101360200200542013702cc0320054198c2c3003602c803200520054188036a3602d803200541d8026a41b8a3c500200541c8036a102e1a20053502b00242208620053502a802841008024020052802ac02450d0020052802a80210230b0b2013450d00201110230b200642003703002007420037030020084200370300200542003703c8032009200a1003221141086a290000370300200520112900003703880320111023200820092903003703002005200529038803220c3703c8022005200c3703c803200941b0fac500ad4280808080a001841003221141086a290000370300200520112900003703880320111023200541d8026a41086a22132009290300220c370300200520052903880322153703d80220072015370000200741086a2216200c370000200b2008290300370300200d2007290300370300200e2006290300370300200520052903c80337039803200541e0016a20054198036a4120108f0120052802e401211720052802e0012118200642003703002007420037030020084200370300200542003703c8032009200a1003221141086a290000370300200520112900003703880320111023200820092903003703002005200529038803220a3703c8022005200a3703c803200941e8fac500ad4280808080b003841003221141086a29000037030020052011290000370388032011102320132009290300220a3703002005200529038803220c3703d8022007200c3700002016200a370000200b2008290300370300200d2007290300370300200e2006290300370300200520052903c80337039803200541d8016a20054198036a4120108f012017410020181b2219211702400240024020052802dc01410020052802d8011b20044d0d00200541c8036a41186a220b4200370300200541c8036a41106a220d4200370300200541c8036a41086a22084200370300200542003703c80320054188036a41086a220941c6acc500ad4280808080f000841003220641086a290000370300200520062900003703880320061023200820092903003703002005200529038803220a3703c8022005200a3703c803200941d0fdc500ad4280808080a001841003220641086a290000370300200520062900003703880320061023200541d8026a41086a2009290300220a3703002005200529038803220c3703d8022007200c370000200741086a200a37000020054198036a41086a200829030037030020054198036a41106a200d29030037030020054198036a41186a200b290300370300200520052903c80337039803200541c8036a20054198036a10af0320052802c8032209410420091b220b20052902cc03420020091b220a422088a741037422096a210803402009450d02200941786a21092008417c6a2106200841786a2108200628020020044b0d000b200b20096a2802002117200aa7450d00200b10230b200541c8036a41186a22184200370300200541c8036a41106a221a4200370300200541c8036a41086a22164200370300200542003703c80320054188036a41086a221b41c6acc500ad4280808080f00084221c1003220941086a2900003703002005200929000037038803200910232016201b2903003703002005200529038803220a3703c8022005200a3703c803201b41f8ffc500ad4280808080e00284220a1003220941086a290000370300200520092900003703880320091023200541d8026a41086a221d201b290300220c370300200520052903880322153703d80220072015370000200741086a221e200c37000020054198036a41086a2213201629030037030020054198036a41106a221f201a29030037030020054198036a41186a22202018290300370300200520052903c80337039803200541d0016a20054198036a4120108f0120052802d401210820052802d001210620184200370300201a420037030020164200370300200542003703c803201b201c1003220941086a2900003703002005200929000037038803200910232016201b2903003703002005200529038803220c3703c8022005200c3703c803201b200a1003220941086a290000370300200520092900003703880320091023201d201b290300220a3703002005200529038803220c3703d8022007200c370000201e200a37000020132016290300370300201f201a29030037030020202018290300370300200520052903c8033703980320052008201920064101461b3602c8032010200541c8036aad4280808080c00084100220032001200120034b1b2221450d012014410020121b212220054188036aad4280808080c000842123200f42808080808002842124201941016a21252000211141002126024002400240024002400240034020184200370300201a420037030020164200370300200542003703c803201b201c1003220941086a2900003703002005200929000037038803200910232016201b2903003703002005200529038803220a3703c8022005200a3703c803201b41e4f7c500ad4280808080d001841003220941086a290000370300200520092900003703880320091023201d201b290300220a3703002005200529038803220c3703d8022007200c370000201e200a37000020132016290300370300201f201a29030037030020202018290300370300200520052903c80337039803200541c8036a20054198036a412010bb0120052902cc03420020052802c80322091b220a422088a741057421082026220641016a2126200220064102746a210e2000200641e0006c6a210b2009410120091b220d210902400340024020080d00410021040c020b4101210420112009460d012009200b412010de042106200841606a2108200941206a210920060d000b0b0240200aa7450d00200d10230b0240024020040d00200e2802002109200542003703d002200542003703c802200541c0016a200b290320220a200b41286a290300428094ebdc03420010e204200541a0016a200b290330220c200b41386a290300428094ebdc03420010e204200541b0016a20052903c0012210200541c0016a41086a290300220f4280ec94a37c427f10e104200541f0006a2010200f2009ad2215420010e10420054190016a20052903a0012210200541a0016a41086a290300220f4280ec94a37c427f10e10420054180016a2010200f2015420010e104200542003703e002200542003703d802200c2005290390017c20157e2210428094ebdc0380210c024002400240024002400240024002400240024020052903704200200a20052903b0017c20157e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76a2208ad7d85200541f0006a41086a29030042002008410047ad7d8584500d00200529038001210a20054180016a41086a290300212720054188026a2017200b10aa042005280288022108200520052802900222063602ec01200520083602e801200541a8026a2006ad4220862008ad8410041090010240024020052802a80222060d004200210f0c010b20052802ac0221040240024020052802b002220d4104490d00200d417c6a410f4d0d00200628000021284201210f0c010b200541003602d003200542013703c8032005410c36028c032005200541e8016a360288032005200541c8036a3602ec03200541013602ac032005420137029c0320054198c2c30036029803200520054188036a3602a803200541ec036a41b8a3c50020054198036a102e1a20053502d00342208620053502c803841008024020052802cc03450d0020052802c80310230b4200210f0b2004450d00200610230b0240200528028c02450d00200810230b200920284100200f4200521b22034d0d0a20054198036a2017200b10aa0420053502a003210f2005280298032106411010212208450d042008200936000020084110412010252209450d052009200a2010200c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c3700042009410c6a2027200c200a54ad7c220a370000200f4220862006ad842009ad4280808080c002841002200910230240200528029c03450d00200610230b200541a8026a200b10b20420052802b002450d0120054188026a41106a200541a8026a41106a28020036020020054188026a41086a200541a8026a41086a290300370300200520052903a802370388020c020b20054200370390032005420037038803200542003703f001200542003703e801200541a8026a200b10b2040240024020052802b002450d0020054188026a41106a200541a8026a41106a28020036020020054188026a41086a200541a8026a41086a290300370300200520052903a802370388020c010b200541003602d803200542043703d003200520193602cc03200541003602c803200b200541c8036a10b30420054188026a41106a20052802d80336020020054188026a41086a20052903d003370300200520052903c803370388020b2013200529038802370200201341086a20054188026a41086a290300370200201341106a20054188026a41106a280200360200200541003a00c0032005200b36029c032005201936029803200520223602bc032005200541e8016a3602b803200520054188036a3602b403200541c8036a20054198036a201710c604024020052802d0034102460d0020052802c803220d20052802a003470d00410021090240202520052802a40322064d0d00024020052802b003220820052802ac03470d00200841016a22092008490d13200841017422042009200420094b1b220941ffffffff03712009470d132009410274220e4100480d130240024020080d00200e102121040c010b20052802a8032008410274200e102521040b2004450d05200520093602ac03200520043602a8030b20052802a803220941046a2009200841027410dd041a2009202520066b360200200520253602a403410121092005200841016a3602b0032005200d41016a220d3602a0030b200520093a00c003200b10ac04200b10ae040240200b10e90241ff017122084102460d002008410171450d0010bb040b2009450d0020052802a403210e02400240024020052802b0032201450d0020052802a80321082001410274210441002106200e210902400340200920194d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b200120064f0d010b2005200e2019200e20194b1b3602a4030c010b2005200e2019200e20194b1b3602a403200520063602b00341000d00200d20016b200d20066b4f0d00410020016b210903402016200b41086a290200370300201a200b41106a2902003703002018200b41186a2902003703002005200b2902003703c8032005200d20096a3602e803200541c8036a10b4042006200941016a22096a0d000b0b200b201310b3040b20052802ac03450d0920052802a80310230c090b200541003602d803200542043703d003200520193602cc03200541003602c803200b200541c8036a10b30420054188026a41106a20052802d80336020020054188026a41086a20052903d003370300200520052903c803370388020b2013200529038802370200201341086a222920054188026a41086a222a290300370200201341106a222b20054188026a41106a222c280200360200200541003a00c0032005200b36029c032005201936029803200520223602bc032005200541d8026a3602b8032005200541c8026a3602b403200541e8006a20054198036a2017200c200a10c70420052802a003210e0240024020052802684101470d00200528026c2208200e460d010b20052d00c00321090c070b202520052802a40322094d0d04024020052802b003220620052802ac03470d00200641016a22042006490d0f2006410174220d2004200d20044b1b220441ffffffff03712004470d0f2004410274220e4100480d0f0240024020060d00200e1021210d0c010b20052802a8032006410274200e1025210d0b200d450d04200520043602ac032005200d3602a8030b20052802a803220441046a2004200641027410dd041a2004202520096b360200200520253602a403410121092005200641016a3602b0032005200841016a22083602a0030c050b200e41041030000b411041011030000b412041011030000b200e41041030000b20052d00c00321090b200520093a00c003200b10ac04200b10ae040240200b10e90241ff017122064102460d002006410171450d0010bb040b2008210e0b0240200941ff0171450d0020052802a4032101200528029803210d02400240024020052802b0032212450d0020052802a8032108201241027421044100210620012109024003402009200d4d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b201220064f0d010b20052001200d2001200d4b1b3602a4030c010b20052001200d2001200d4b1b3602a403200520063602b00341000d00200e20126b200e20066b4f0d00410020126b2108200528029c0321090340200941086a290000210a200941106a290000210c200929000021102018200941186a290000370300201a200c3703002016200a370300200520103703c8032005200e20086a3602e803200541c8036a10b4042006200841016a22086a0d000b0b200528029c03201310b3040b024020052802ac03450d0020052802a80310230b4200210a200542003703900320054200370388030240024002400240200b41c8006a220928020022080d00410821120c010b2008ad220a42307e220c422088a70d0a200ca722084100480d0a200810212212450d0b200928020022090d010b420021104200210f0c010b200b41c0006a2802002201200941306c6a212d2003ad212e0340200542003703f001200542003703e801200541c0006a2001290300220f200141086a290300428094ebdc03420010e204200541306a2005290340220c200541c0006a41086a29030022104280ec94a37c427f10e104200541206a200c2010202e420010e104200541106a200c20102015420010e10420054198036a2017200141106a220d10ab04200541d0006a200528029803220820052802a0031089024200200541106a41086a29030020052903102210200f20052903307c220f20157e220c200c428094ebdc0380220c4280ec94a37c7e7c4280cab5ee0156200ca76aad7c220c201054ad7c2210200541206a41086a29030020052903202227200f202e7e220f200f428094ebdc0380220f4280ec94a37c7e7c4280cab5ee0156200fa76aad7c220f202754ad7c7d200c200f54ad7d2227200c200f7d220f200c56202720105620272010511b22091b21104200200f20091b210c200541d0006a41106a290300210f20052903582127200528025021090240200528029c03450d00200810230b200541c8036a2017200d10ab0420052802c803210820053502d003212f20052027420020091b2227200c7c220c370398032005200f420020091b20107c200c202754ad7c22103703a003202f4220862008ad8420241002024020052802cc03450d00200810230b200541a8026a200d10b2040240024020052802b002450d00202c200541a8026a41106a280200360200202a200541a8026a41086a290300370300200520052903a802370388020c010b200541003602d803200542043703d003200520193602cc03200541003602c803200d200541c8036a10b304202c20052802d803360200202a20052903d003370300200520052903c803370388020b20132005290388023702002029202a290300370200202b202c280200360200200541003a00c0032005200d36029c032005201936029803200520223602bc032005200541e8016a3602b803200520054188036a3602b403200541086a20054198036a2017200c201010c70420052802a003210302400240024020052802084101470d00200528020c22062003460d010b20052d00c00321090c010b02400240202520052802a40322094d0d000240024020052802b003220820052802ac03470d00200841016a22042008490d0e2008410174220e2004200e20044b1b220441ffffffff03712004470d0e200441027422034100480d0e0240024020080d0020031021210e0c010b20052802a803200841027420031025210e0b200e450d01200520043602ac032005200e3602a8030b20052802a803220441046a2004200841027410dd041a2004202520096b360200200520253602a403410121092005200841016a3602b0032005200641016a22033602a0030c020b200341041030000b20052d00c0032109200621030b200520093a00c003200d10ac04200d10ae040b0240200941ff0171450d0020052802a4032114200528029803210e02400240024020052802b0032230450d0020052802a8032108203041027421044100210620142109024003402009200e4d0d01200641016a2106200920082802006b2109200841046a21082004417c6a22040d000c020b0b203020064f0d010b20052014200e2014200e4b1b3602a4030c010b20052014200e2014200e4b1b3602a403200520063602b00341000d00200320306b200320066b4f0d00410020306b2108200528029c0321090340200941086a290000210c200941106a29000021102009290000210f2018200941186a290000370300201a20103703002016200c3703002005200f3703c8032005200320086a3602e803200541c8036a10b4042006200841016a22086a0d000b0b200528029c03201310b3040b024020052802ac03450d0020052802a80310230b200d41086a290000210c200d29000021102020200d41186a290000370300201f200d41106a2900003703002013200c3703002005201037039803200541e8016a41086a290300210c20052903e801211002400240200a422088220fa72209200aa7460d00200921080c010b200941016a22062009490d0a200fa722084101742204200620062004491bad220a42307e220f422088a70d0a200fa722064100480d0a0240024020090d002006102121120c010b2012200941306c2006102521120b2012450d040b2013290300210f201f29030021272020290300212f20052903980321312012200841306c6a2209201037032020092031370300200941286a200c370300200941186a202f370300200941106a2027370300200941086a200f370300200a42ffffffff0f83200841016aad42208684210a200141306a2201202d470d000b201b290300210f20052903880321100b200541c8026a41086a2204290300212720052903c8022115200541e8016a41086a2209200b41086a290300370300200541e8016a41106a2208200b41106a290300370300200541e8016a41186a2206200b41186a2903003703002005200b2903003703e8012012450d00201d290300212e20052903d802212f20054188026a41186a220e2006290300370300202c2008290300370300202a2009290300370300200520052903e80137038802200b280258220d41ffffff3f71200d470d03200d4105742206417f4c0d03200b28025021090240024020060d004101210b0c010b20061021220b450d050b02400240200d0d00410021010c010b200b2108034020082009290000370000200841186a200941186a290000370000200841106a200941106a290000370000200841086a200941086a290000370000200841206a2108200941206a2109200641606a22060d000b200d41057441606a41057641016a21010b200541a8026a41186a2203200e290300370300200541a8026a41106a220e202c290300370300200541a8026a41086a2214202a29030037030020052005290388023703a802201b201c1003220941086a2900003703002005200929000037038803200910232004201b29030037030020052005290388033703c802201b419cb2c500ad42808080808002841003220941086a290000370300200520092900003703880320091023201d201b29030037030020052005290388033703d8022005201936028803202020231001220941186a290000370300201f200941106a2900003703002013200941086a29000037030020052009290000370398032009102320182020290300370300201a201f2903003703002016201329030037030020052005290398033703c80341c00010212206450d05200620052903c802370000200620052903d802370010200620052903c80337002041082104200641086a200541c8026a41086a290300370000200641186a200541d8026a41086a290300370000200641286a200541c8036a41086a290300370000200641306a201a290300370000200641386a201829030037000020054198036a200641c00010a80302400240200528029803222a0d00410021084200210c410021090c010b200529029c03220c422088a72108200ca72109202a21040b20202003290300370300201f200e29030037030020132014290300370300200520052903a80237039803024020082009470d0002402008200ca7470d00200841016a22092008490d092008410174220e2009200e20094b1bad223142d8007e2232422088a70d092032a722094100480d090240024020080d002009102121040c010b2004200841d8006c2009102521040b2004450d08200c42808080807083203184210c0b200c422088a721080b2004200841d8006c220e6a2209201520107c22103703102009202e3703082009202f3703002009200b36022c20092012360220200941186a2027200f7c2010201554ad7c370300200941346a2001360200200941306a200d360200200941246a200a3702002009200529039803370338200941c0006a2013290300370300200941c8006a201f290300370300200941d0006a20202903003703000240024020040d002006ad428080808080088410050c010b20054198036a2004200841016a220910be042006ad428080808080088420053502a0034220862005280298032208ad8410020240200528029c03450d00200810230b200ca7210b02402009450d00200441306a2109200e41d8006a210803400240200941746a280200450d00200941706a28020010230b02402009280200450d002009417c6a28020010230b200941d8006a2109200841a87f6a22080d000b0b200b450d00200410230b200610230b201141e0006a211120262021490d010c090b0b200641081030000b102f000b200641011030000b41c00041011030000b200941081030000b102a000b200841081030000b200aa7450d00200b10230b200541f0036a24000b13002000410136020420004188e5c0003602000ba40703067f017e057f230041a0016b2201240020014180016a41186a2202420037030020014180016a41106a2203420037030020014180016a41086a220442003703002001420037038001200141f0006a41086a220541f7fbc400ad4280808080f000841003220641086a290000370300200120062900003703702006102320042005290300370300200120012903703703800120054194b7c200ad4280808080c001841003220641086a2900003703002001200629000037037020061023200320012903702207370300200141d0006a41086a22062004290300370300200141d0006a41106a22082007370300200141d0006a41186a22092005290300370300200120073703102001200129038001370350200141086a200141d0006a4120108f01200128020c210a2001280208210b200141106a41186a200041186a290000370300200141106a41106a200041106a290000370300200141106a41086a200041086a2900003703002001200029000037031020054194fcc400ad42808080808001841003220041086a2900003703002001200029000037037020001023200141306a41086a220c200529030037030020012001290370370330200541a9e4c000ad4280808080e001841003220041086a2900003703002001200029000037037020001023200141c0006a41086a22002005290300370300200120012903703703402001200a4100200b1b3602702002200141f0006aad4280808080c000841001220541186a2900003703002003200541106a2900003703002004200541086a29000037030020012005290000370380012005102320092002290300370300200820032903003703002006200429030037030020012001290380013703500240024041c00010212205450d00200520012903303700002005200129034037001020052001290350370020200541086a200c290300370000200541186a2000290300370000200541286a2006290300370000200541306a2008290300370000200541386a200929030037000020014180016a200141106a10ac01200541c00041800110252205450d012005200129008001370040200541d8006a20014198016a290000370000200541d0006a20014190016a290000370000200541c8006a20014188016a2900003700002001200541e000108f012001200128020441016a410120012802001b360280012005ad4280808080800c8420014180016aad4280808080c00084100220051023200141a0016a24000f0b41c00041011030000b41800141011030000b340020004194fcc40036020420004100360200200041146a4104360200200041106a41c4e6c000360200200041086a42083702000bda0401057f230041106b22032400200341003602082003420137030020022003105c024002400240024002402002450d00200241b8016c210403402003280204210520032802082102024002402001280200411a470d000240024020052002460d00200328020021050c010b200241016a22052002490d08200241017422062005200620054b1b22064100480d080240024020020d002006102121050c010b200328020020022006102521050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b0240024020052002460d00200328020021050c010b200241016a22052002490d07200241017422062005200620054b1b22064100480d070240024020020d002006102121050c010b200328020020022006102521050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002001200310cb01200141b0016a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d07200541017422022007200220074b1b22024100480d070240024020050d002002102121050c010b200328020020052002102521050b2005450d062003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000b200141b8016a2101200441c87e6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200641011030000b200641011030000b200241011030000b102a000bb7fb0104057f017e067f017e230041e0006b220224000240024002402000280200220341194b0d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e1a000102030405060708090a0b0c0d0e0f10111213141516171819000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc401200341017422052004200520044b1b22054100480dc4010240024020030d002005102121040c010b200128020020032005102521040b2004450d1a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208417f6a220341064b0dc101024002400240024002400240024020030e0700010203040506000b200241003a003c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490dca01200041017422042003200420034b1b22044100480dca010240024020000d002004102121030c010b200128020020002004102521030b2003450d2120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000cc7010b200241013a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc901200341017422052004200520044b1b22054100480dc9010240024020030d002005102121040c010b200128020020032005102521040b2004450d2120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200028020c2106200041146a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490dc901200441017422032005200320054b1b22034100480dc9010240024020040d002003102121040c010b200128020020042003102521040b2004450d2220012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cc6010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc801200341017422052004200520044b1b22054100480dc8010240024020030d002005102121040c010b200128020020032005102521040b2004450d2220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000290310210702400240200141046a2802002203200528020022006b4108490d00200128020021030c010b200041086a22042000490dc801200341017422002004200020044b1b22004100480dc8010240024020030d002000102121030c010b200128020020032000102521030b2003450d2320012003360200200141046a2000360200200141086a28020021000b200141086a200041086a360200200320006a20073700000cc5010b200241033a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc701200341017422052004200520044b1b22054100480dc7010240024020030d002005102121040c010b200128020020032005102521040b2004450d2320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200028020c2106200041146a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490dc701200441017422032005200320054b1b22034100480dc7010240024020040d002003102121040c010b200128020020042003102521040b2004450d2420012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cc4010b200141086a2802002103200241043a003c024002402003200141046a280200460d00200128020021050c010b200341016a22042003490dc601200341017422052004200520044b1b22044100480dc6010240024020030d002004102121050c010b200128020020032004102521050b2005450d2420012005360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200520036a41043a0000200028020c2103200041146a28020022002001105c2000450dc3012003200041186c6a2108200141046a2106034020032802002109200341086a28020022002001105c024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490dc701200a4101742205200b2005200b4b1b22054100480dc70102400240200a0d0020051021210a0c010b2001280200200a20051025210a0b200a450d262001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010dc041a2003410c6a2802002109200341146a28020022002001105c024002402006280200220a200428020022056b2000490d002001280200210a0c010b200520006a220b2005490dc701200a4101742205200b2005200b4b1b22054100480dc70102400240200a0d0020051021210a0c010b2001280200200a20051025210a0b200a450d272001200a36020020062005360200200428020021050b2004200520006a360200200a20056a2009200010dc041a200341186a22032008470d000cc4010b0b200241053a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc501200341017422052004200520044b1b22054100480dc5010240024020030d002005102121040c010b200128020020032005102521040b2004450d2620012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41053a0000200028020c2104200041146a28020022002001105c2000450dc20120042000410c6c6a2108200141046a210903402004280200210a200441086a28020022002001105c0240024020092802002205200628020022036b2000490d00200128020021050c010b200320006a220b2003490dc60120054101742203200b2003200b4b1b22034100480dc6010240024020050d002003102121050c010b200128020020052003102521050b2005450d282001200536020020092003360200200628020021030b2006200320006a360200200520036a200a200010dc041a2004410c6a22042008470d000cc3010b0b200241063a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc401200341017422052004200520044b1b22054100480dc4010240024020030d002005102121040c010b200128020020032005102521040b2004450d2720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41063a0000200028020c2106200041146a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490dc401200441017422032005200320054b1b22034100480dc4010240024020040d002003102121040c010b200128020020042003102521040b2004450d2820012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cc1010b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490dc301200041017422042003200420034b1b22044100480dc3010240024020000d002004102121030c010b200128020020002004102521030b2003450d2820012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a0000200110ba030cc0010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc201200341017422052004200520044b1b22054100480dc2010240024020030d002005102121040c010b200128020020032005102521040b2004450d2820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490dc201200341017422052004200520044b1b22054100480dc2010240024020030d002005102121040c010b200128020020032005102521040b2004450d2920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000024020002903082207423f560d0020022007a741027422043a003c02400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490dc301200041017422052003200520034b1b22054100480dc3010240024020000d002005102121030c010b200128020020002005102521030b2003450d2b20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000cc0010b200742808001540dbe012007428080808004540dbd014108200779a741037622046b4104490dbc012002411320044102746b220a3a003c02400240200141046a280200200141086a2802002203460d00200128020021060c010b200341016a22052003490dc201200341017422062005200620054b1b22054100480dc2010240024020030d002005102121060c010b200128020020032005102521060b2006450d2b20012006360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200620036a200a3a0000200220002903082207370300200441786a2103200141046a210a034020022007a722063a003c02400240200a28020020052802002200460d00200128020021040c010b200041016a22042000490dc301200041017422092004200920044b1b22094100480dc3010240024020000d002009102121040c010b200128020020002009102521040b2004450d2d20012004360200200a2009360200200528020021000b2005200041016a360200200420006a20063a000020074208882107200341016a22002003492104200021032004450d000b200220073703002007500dbf01200241206a41146a410d3602002002412c6a4111360200200241086a41146a41033602002002200236023c200241d8a7c30036025c2002420337020c200241acb6c600360208200241113602242002420437035020024201370244200241e0a7c3003602402002200241206a3602182002200241c0006a3602302002200241dc006a36022820022002413c6a360220200241086a41e8a7c3001038000b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490dc101200041017422042003200420034b1b22044100480dc1010240024020000d002004102121030c010b200128020020002004102521030b2003450d2c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a0000200110ba030cbe010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dc001200341017422052004200520044b1b22054100480dc0010240024020030d002005102121040c010b200128020020032005102521040b2004450d2c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000280208417f6a220341034b0dbd010240024002400240024020030e0400010203000b200241003a003c02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490dc401200441017422052003200520034b1b22034100480dc4010240024020040d002003102121050c010b200128020020042003102521050b2005450d3120012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41003a00002000410c6a200110d902200241dc006a21000c030b200241013a003c02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490dc301200441017422052003200520034b1b22034100480dc3010240024020040d002003102121050c010b200128020020042003102521050b2005450d3120012005360200200141046a2003360200200141086a28020021040b200041c0006a2103200141086a200441016a360200200520046a41013a00002000410c6a200110d9022002200041306a3602002002200110c301200241086a21000c020b200241023a003c02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490dc201200441017422052003200520034b1b22034100480dc2010240024020040d002003102121050c010b200128020020042003102521050b2005450d3120012005360200200141046a2003360200200141086a28020021040b200041d8006a2103200141086a200441016a360200200520046a41023a00002000410c6a200110d902200041306a200110d902200241206a21000c010b200241033a003c02400240200141046a280200200141086a2802002204460d00200128020021050c010b200441016a22032004490dc101200441017422052003200520034b1b22034100480dc1010240024020040d002003102121050c010b200128020020042003102521050b2005450d3120012005360200200141046a2003360200200141086a28020021040b200041306a2103200141086a200441016a360200200520046a41033a00002000410c6a200110d902200241c0006a21000b200020033602002000200110c3010cbd010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dbf01200341017422052004200520044b1b22054100480dbf010240024020030d002005102121040c010b200128020020032005102521040b2004450d3020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490dbf01200341017422052004200520044b1b22054100480dbf010240024020030d002005102121040c010b200128020020032005102521040b2004450d3120012004360200200141046a2005360200200141086a28020021030b200141086a220a200341016a360200200420036a41003a00002000280204210c2000410c6a28020022002001105c2000450dbc01200c200041f0006c6a210d200141046a210b034020022001360240200c41106a200241c0006a106b200c200110af0120022001360240200c41306a200241c0006a106b20022001360240200c41d0006a200241c0006a106b200c2802042104200c28020c22002001105c02402000450d00200041246c21090340200241c0006a200410b0012002280240210602400240200b2802002205200a28020022006b20022802482203490d00200128020021050c010b200020036a22082000490dc201200541017422002008200020084b1b22004100480dc2010240024020050d002000102121050c010b200128020020052000102521050b2005450d3520012005360200200b2000360200200a28020021000b200a200020036a360200200520006a2006200310dc041a02402002280244450d00200610230b200441246a21042009415c6a22090d000b0b200c41f0006a220c200d470d000cbd010b0b02400240200141046a2206280200200141086a22032802002204460d00200128020021050c010b200441016a22052004490dbe012004410174220a2005200a20054b1b220a4100480dbe010240024020040d00200a102121050c010b20012802002004200a102521050b2005450d3220012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a41063a0000200041086a22052d0000417f6a2204410f4b0dbb01024002400240024002400240024002400240024002400240024002400240024020040e10000102030405060708090a0b0c0d0e0f000b200241003a003c02400240200628020020032802002204460d002001280200210a0c010b200441016a220a2004490dcd0120044101742209200a2009200a4b1b22094100480dcd010240024020040d0020091021210a0c010b2001280200200420091025210a0b200a450d422001200a360200200141046a2009360200200141086a28020021040b200141086a200441016a360200200a20046a41003a00002000410c6a200110d9022002200041306a360240200241c0006a200110c30120052d0001220041024b0dca0102400240024020000e03000102000b200241003a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dcf01200041017422052004200520044b1b22054100480dcf010240024020000d002005102121040c010b200128020020002005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000ccc010b200241013a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dce01200041017422052004200520044b1b22054100480dce010240024020000d002005102121040c010b200128020020002005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000ccb010b200241023a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dcd01200041017422052004200520044b1b22054100480dcd010240024020000d002005102121040c010b200128020020002005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000cca010b200241013a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dcc01200341017422052004200520044b1b22054100480dcc010240024020030d002005102121040c010b200128020020032005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002002200041106a360240200241c0006a200110c3010cc9010b200241023a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dcb01200341017422052004200520044b1b22054100480dcb010240024020030d002005102121040c010b200128020020032005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200041106a360240200241c0006a200110c3010cc8010b200241033a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dca01200041017422052004200520044b1b22054100480dca010240024020000d002005102121040c010b200128020020002005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41033a00000cc7010b200241043a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dc901200341017422052004200520044b1b22054100480dc9010240024020030d002005102121040c010b200128020020032005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41043a00002000410c6a200110af010cc6010b200241053a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dc801200341017422052004200520044b1b22054100480dc8010240024020030d002005102121040c010b200128020020032005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c2103200041146a28020022002001105c2000450dc501200041246c210003402003200110d902200341246a21032000415c6a22000d000cc6010b0b200241063a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc701200041017422052004200520044b1b22054100480dc7010240024020000d002005102121040c010b200128020020002005102521040b2004450d4520012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41063a00000cc4010b200241073a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc6012000410174220a2004200a20044b1b220a4100480dc6010240024020000d00200a102121040c010b20012802002000200a102521040b2004450d4520012004360200200141046a200a360200200141086a28020021000b2003200041016a360200200420006a41073a000020052d0001220041024b0dc30102400240024020000e03000102000b200241003a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc801200041017422052004200520044b1b22054100480dc8010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41003a00000cc5010b200241013a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc701200041017422052004200520044b1b22054100480dc7010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41013a00000cc4010b200241023a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc601200041017422052004200520044b1b22054100480dc6010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a41023a00000cc3010b200241083a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dc501200341017422052004200520044b1b22054100480dc5010240024020030d002005102121040c010b200128020020032005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41083a00002000410c6a200110d9020cc2010b200241093a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dc401200341017422052004200520044b1b22054100480dc4010240024020030d002005102121040c010b200128020020032005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41093a00002000410c6a200110af010cc1010b2002410a3a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc301200041017422052004200520044b1b22054100480dc3010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410a3a00000cc0010b2002410b3a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dc201200041017422052004200520044b1b22054100480dc2010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410b3a00000cbf010b2002410c3a003c02400240200628020020032802002203460d00200128020021040c010b200341016a22042003490dc101200341017422052004200520044b1b22054100480dc1010240024020030d002005102121040c010b200128020020032005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410c3a0000200028020c2103200041146a28020022002001105c2000450dbe01200041057421000340200320011071200341206a2103200041606a22000d000cbf010b0b2002410d3a003c02400240200628020020032802002200460d00200128020021030c010b200041016a22032000490dc001200041017422042003200420034b1b22044100480dc0010240024020000d002004102121030c010b200128020020002004102521030b2003450d4820012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410d3a0000200541016a200110710cbd010b2002410e3a003c02400240200628020020032802002200460d00200128020021040c010b200041016a22042000490dbf01200041017422052004200520044b1b22054100480dbf010240024020000d002005102121040c010b200128020020002005102521040b2004450d4820012004360200200141046a2005360200200141086a28020021000b2003200041016a360200200420006a410e3a00000cbc010b2002410f3a003c02400240200628020020032802002204460d00200128020021050c010b200441016a22052004490dbe012004410174220a2005200a20054b1b220a4100480dbe010240024020040d00200a102121050c010b20012802002004200a102521050b2005450d4820012005360200200141046a200a360200200141086a28020021040b2003200441016a360200200520046a410f3a0000200028020c210a0240024020062802002205200328020022046b4104490d00200128020021050c010b200441046a22092004490dbe01200541017422042009200420094b1b22044100480dbe010240024020050d002004102121050c010b200128020020052004102521050b2005450d4920012005360200200141046a2004360200200141086a28020021040b200141086a2208200441046a360200200520046a200a36000020002802102104200041186a28020022002001105c2000450dbb012000410274210a0340200428020021090240024020062802002205200328020022006b4104490d00200128020021050c010b200041046a220b2000490dbf0120054101742200200b2000200b4b1b22004100480dbf010240024020050d002000102121050c010b200128020020052000102521050b2005450d4b20012005360200200141046a2000360200200828020021000b200441046a21042003200041046a360200200520006a2009360000200a417c6a220a0d000cbc010b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490dbd01200041017422042003200420034b1b22044100480dbd010240024020000d002004102121030c010b200128020020002004102521030b2003450d4a20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41073a0000200110ba030cba010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dbc01200341017422052004200520044b1b22054100480dbc010240024020030d002005102121040c010b200128020020032005102521040b2004450d4a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41083a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490dbc01200341017422052004200520044b1b22054100480dbc010240024020030d002005102121040c010b200128020020032005102521040b2004450d4b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041106a20011071200041306a20011071200041d0006a20011071200041f0006a2001107120004190016a20011071200028020421062000410c6a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490dbc01200441017422032005200320054b1b22034100480dbc010240024020040d002003102121040c010b200128020020042003102521040b2004450d4c20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cb9010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dbb01200341017422052004200520044b1b22054100480dbb010240024020030d002005102121040c010b200128020020032005102521040b2004450d4c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41093a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490dbb01200341017422052004200520044b1b22054100480dbb010240024020030d002005102121040c010b200128020020032005102521040b2004450d4d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200041046a200110af010cb8010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490dba01200341017422052004200520044b1b22054100480dba010240024020030d002005102121040c010b200128020020032005102521040b2004450d4d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410a3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490dba01200341017422052004200520044b1b22054100480dba010240024020030d002005102121040c010b200128020020032005102521040b2004450d4e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200028020421062000410c6a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490dba01200441017422032005200320054b1b22034100480dba010240024020040d002003102121040c010b200128020020042003102521040b2004450d4f20012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cb7010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490db901200341017422052004200520044b1b22054100480db9010240024020030d002005102121040c010b200128020020032005102521040b2004450d4f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a410b3a000002400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490db901200341017422052004200520044b1b22054100480db9010240024020030d002005102121040c010b200128020020032005102521040b2004450d5020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a00002000280204210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490db901200441017422032005200320054b1b22034100480db9010240024020040d002003102121040c010b200128020020042003102521040b2004450d5120012004360200200141046a2003360200200141086a28020021030b200141086a220a200341046a360200200420036a2006360000200041086a2802002106200041106a28020022032001105c02400240200141046a2802002205200a28020022046b2003490d00200128020021050c010b200420036a220a2004490db90120054101742204200a2004200a4b1b22044100480db9010240024020050d002004102121050c010b200128020020052004102521050b2005450d5220012005360200200141046a2004360200200141086a28020021040b200141086a220a200420036a360200200520046a2006200310dc041a200041146a28020021052000411c6a28020022032001105c02402003450d0020052003410c6c6a210c200141046a210b034020052802002109200541086a28020022032001105c02400240200b2802002206200a28020022046b2003490d00200128020021060c010b200420036a22082004490dbb01200641017422042008200420084b1b22044100480dbb010240024020060d002004102121060c010b200128020020062004102521060b2006450d5520012006360200200b2004360200200a28020021040b200a200420036a360200200620046a2009200310dc041a2005410c6a2205200c470d000b0b200041206a280200210502400240200141046a2802002204200a28020022036b4104490d00200128020021040c010b200341046a22062003490db901200441017422032006200320064b1b22034100480db9010240024020040d002003102121040c010b200128020020042003102521040b2004450d5420012004360200200141046a2003360200200141086a28020021030b200141086a2206200341046a360200200420036a2005360000200041246a280200210a02400240200141046a2802002204200628020022036b4104490d00200128020021040c010b200341046a22052003490db901200441017422032005200320054b1b22034100480db9010240024020040d002003102121040c010b200128020020042003102521040b2004450d5520012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a200a360000200041286a210b4100210303402002200b20036a2d000022063a003c02400240200141046a220a28020020052802002200460d00200128020021040c010b200041016a22042000490dba01200041017422092004200920044b1b22094100480dba010240024020000d002009102121040c010b200128020020002009102521040b2004450d5720012004360200200a2009360200200528020021000b2005200041016a360200200420006a20063a0000200341016a220341c000470d000cb7010b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490da001200041017422042003200420034b1b22044100480da0010240024020000d002004102121030c010b200128020020002004102521030b2003450d5620012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410c3a0000200110ba030cb5010b02400240200141046a2206280200200141086a22042802002203460d00200128020021050c010b200341016a22052003490d9f012003410174220a2005200a20054b1b220a4100480d9f010240024020030d00200a102121050c010b20012802002003200a102521050b2005450d5620012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a410d3a0000200041086a22052d0000417f6a220341104b0db4010240024002400240024002400240024002400240024002400240024002400240024020030e11000102030405060708090a0b0c0d0e0f10000b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490daf01200341017422052004200520044b1b22054100480daf010240024020030d002005102121040c010b200128020020032005102521040b2004450d6720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020c200110cb012002200041106a360240200241c0006a200110c3010cc4010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490dae01200341017422052004200520044b1b22054100480dae010240024020030d002005102121040c010b200128020020032005102521040b2004450d6720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110af010cc3010b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490dad012003410174220a2006200a20064b1b220a4100480dad010240024020030d00200a102121060c010b20012802002003200a102521060b2006450d6720012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41023a00002000410c6a200110af0120052d00012106200541026a2d0000210502400240200141046a280200200a2802002200460d00200128020021030c010b200041016a22032000490dad012000410174220a2003200a20034b1b220a4100480dad010240024020000d00200a102121030c010b20012802002000200a102521030b2003450d6820012003360200200141046a200a360200200141086a28020021000b2004200041016a360200200320006a20064100474107742005723a00000cc2010b02400240200628020020042802002203460d00200128020021060c010b200341016a22062003490dac012003410174220a2006200a20064b1b220a4100480dac010240024020030d00200a102121060c010b20012802002003200a102521060b2006450d6820012006360200200141046a200a360200200141086a28020021030b200141086a220a200341016a360200200620036a41033a00002000410c6a200110af0120052d00012106200541026a2d0000210502400240200141046a280200200a2802002200460d00200128020021030c010b200041016a22032000490dac012000410174220a2003200a20034b1b220a4100480dac010240024020000d00200a102121030c010b20012802002000200a102521030b2003450d6920012003360200200141046a200a360200200141086a28020021000b2004200041016a360200200320006a20064100474107742005723a00000cc1010b02400240200628020020042802002203460d00200128020021050c010b200341016a22052003490dab012003410174220a2005200a20054b1b220a4100480dab010240024020030d00200a102121050c010b20012802002003200a102521050b2005450d6920012005360200200141046a200a360200200141086a28020021030b2004200341016a360200200520036a41043a0000200028020c21050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490dab01200341017422002006200020064b1b22004100480dab010240024020030d002000102121030c010b200128020020032000102521030b2003450d6a20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000cc0010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490daa01200341017422052004200520044b1b22054100480daa010240024020030d002005102121040c010b200128020020032005102521040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a0000200028020c200110cb010cbf010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490da901200341017422052004200520044b1b22054100480da9010240024020030d002005102121040c010b200128020020032005102521040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a0000200028020c200110cb010cbe010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490da801200341017422052004200520044b1b22054100480da8010240024020030d002005102121040c010b200128020020032005102521040b2004450d6a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41073a0000200028020c200110cb010cbd010b02400240200628020020042802002203460d002001280200210a0c010b200341016a220a2003490da70120034101742209200a2009200a4b1b22094100480da7010240024020030d0020091021210a0c010b2001280200200320091025210a0b200a450d6a2001200a360200200141046a2009360200200141086a28020021030b200141086a2209200341016a360200200a20036a41083a000020022001360240200541016a200241c0006a106b200028022c210a02400240200141046a2802002205200928020022036b4104490d00200128020021050c010b200341046a22092003490da701200541017422032009200320094b1b22034100480da7010240024020050d002003102121050c010b200128020020052003102521050b2005450d6b20012005360200200141046a2003360200200141086a28020021030b2004200341046a360200200520036a200a360000200028023021050240024020062802002203200428020022006b4104490d00200128020021030c010b200041046a22062000490da701200341017422002006200020064b1b22004100480da7010240024020030d002000102121030c010b200128020020032000102521030b2003450d6c20012003360200200141046a2000360200200141086a28020021000b2004200041046a360200200320006a20053600000cbc010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da601200041017422042003200420034b1b22044100480da6010240024020000d002004102121030c010b200128020020002004102521030b2003450d6c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41093a000020022001360240200541016a200241c0006a106b0cbb010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490da501200341017422052004200520044b1b22054100480da5010240024020030d002005102121040c010b200128020020032005102521040b2004450d6c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410a3a00002000410c6a200110af010cba010b02400240200628020020042802002203460d00200128020021040c010b200341016a22042003490da401200341017422052004200520044b1b22054100480da4010240024020030d002005102121040c010b200128020020032005102521040b2004450d6c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410b3a00002000410c6a200110af01200041106a200110af01200041146a200110af010cb9010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da301200041017422042003200420034b1b22044100480da3010240024020000d002004102121030c010b200128020020002004102521030b2003450d6c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410c3a0000200541016a200110710cb8010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da201200041017422052003200520034b1b22054100480da2010240024020000d002005102121030c010b200128020020002005102521030b2003450d6c20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a410d3a00000cb7010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da101200041017422042003200420034b1b22044100480da1010240024020000d002004102121030c010b200128020020002004102521030b2003450d6c20012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a410e3a0000200541016a200110710cb6010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da0012000410174220a2003200a20034b1b220a4100480da0010240024020000d00200a102121030c010b20012802002000200a102521030b2003450d6c20012003360200200141046a200a360200200141086a28020021000b200141086a200041016a360200200320006a410f3a0000200541016a2001107120052d0021220041064b0db5010240024002400240024002400240024020000e0700010203040506000b410021050c060b410121050c050b410221050c040b410321050c030b410421050c020b410521050c010b410621050b200220053a003c02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490da001200041017422062003200620034b1b22064100480da0010240024020000d002006102121030c010b200128020020002006102521030b2003450d6d20012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000cb5010b02400240200628020020042802002200460d00200128020021030c010b200041016a22032000490d9f01200041017422052003200520034b1b22054100480d9f010240024020000d002005102121030c010b200128020020002005102521030b2003450d6d20012003360200200141046a2005360200200141086a28020021000b2004200041016a360200200320006a41103a00000cb4010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9e01200341017422052004200520044b1b22054100480d9e010240024020030d002005102121040c010b200128020020032005102521040b2004450d6d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410e3a0000200041046a200110d3030cb3010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9d01200341017422052004200520044b1b22054100480d9d010240024020030d002005102121040c010b200128020020032005102521040b2004450d6d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a410f3a0000200041046a200110d3030cb2010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102121040c010b200128020020032005102521040b2004450d6d20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41103a00002000280208417f6a220341054b0db10102400240024002400240024020030e06000102030405000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da101200341017422052004200520044b1b22054100480da1010240024020030d002005102121040c010b200128020020032005102521040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200041186a2105200141086a200341016a360200200420036a41003a0000200028020c2103200041146a28020022002001105c02402000450d00200041057421000340200320011071200341206a2103200041606a22000d000b0b20022005360240200241c0006a200110c3010cb6010b200241013a003c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490da001200041017422042003200420034b1b22044100480da0010240024020000d002004102121030c010b200128020020002004102521030b2003450d7320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000cb5010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9f01200341017422052004200520044b1b22054100480d9f010240024020030d002005102121040c010b200128020020032005102521040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110d9020cb4010b200241033a003c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9e01200041017422042003200420034b1b22044100480d9e010240024020000d002004102121030c010b200128020020002004102521030b2003450d7320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41033a00000cb3010b200141086a2802002100200241043a003c024002402000200141046a280200460d00200128020021030c010b200041016a22032000490d9d01200041017422042003200420034b1b22044100480d9d010240024020000d002004102121030c010b200128020020002004102521030b2003450d7320012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41043a00000cb2010b200241053a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102121040c010b200128020020032005102521040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41053a00002000410c6a200110d9020cb1010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d7320012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41113a0000200041046a22032d0000417f6a220441034b0db001024002400240024020040e0400010203000b200241003a003c02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d9e01200041017422052004200520044b1b22054100480d9e010240024020000d002005102121040c010b200128020020002005102521040b2004450d7720012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41003a0000200341016a200110710cb3010b200141086a2802002100200141046a2802002104200241013a003c0240024020042000460d00200128020021040c010b200041016a22042000490d9d01200041017422052004200520044b1b22054100480d9d010240024020000d002005102121040c010b200128020020002005102521040b2004450d7720012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41013a0000200341016a200110710cb2010b200241023a003c02400240200141046a280200200141086a2802002200460d00200128020021040c010b200041016a22042000490d9c01200041017422052004200520044b1b22054100480d9c010240024020000d002005102121040c010b200128020020002005102521040b2004450d7720012004360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200420006a41023a0000200341016a20011071200341216a200110710cb1010b200241033a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d7720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a000020002802082103200041106a28020022002001105c2000450db001200041057421000340200320011071200341206a2103200041606a22000d000cb1010b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d7720012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41123a00002000280208417f6a220341024b0daf0102400240024020030e03000102000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9c01200341017422052004200520044b1b22054100480d9c010240024020030d002005102121040c010b200128020020032005102521040b2004450d7a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002002200041306a360240200241c0006a200110c3012000410c6a200110d9020cb1010b200241013a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d7a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110af010cb0010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d7a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110af010caf010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9901200341017422052004200520044b1b22054100480d99010240024020030d002005102121040c010b200128020020032005102521040b2004450d7a20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41133a0000200041086a22042d0000417f6a220341014b0dae010240024020030e020001000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d9a01200341017422062005200620054b1b22064100480d9a010240024020030d002006102121050c010b200128020020032006102521050b2005450d7c20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41003a0000200441016a2001107141292104200141046a210903402002200020046a2d0000220a3a003c02400240200928020020062802002203460d00200128020021050c010b200341016a22052003490d9b012003410174220b2005200b20054b1b220b4100480d9b010240024020030d00200b102121050c010b20012802002003200b102521050b2005450d7e200120053602002009200b360200200628020021030b2006200341016a360200200520036a200a3a0000200441016a220441ea00470d000cb0010b0b200141086a2802002103200141046a2802002105200241013a003c0240024020052003460d00200128020021050c010b200341016a22052003490d9901200341017422062005200620054b1b22064100480d99010240024020030d002006102121050c010b200128020020032006102521050b2005450d7d20012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41013a0000200441016a200110c003200041286a29030021072000290320210e02400240200141046a2802002203200628020022006b4110490d00200128020021030c010b200041106a22042000490d9901200341017422002004200020044b1b22004100480d99010240024020030d002000102121030c010b200128020020032000102521030b2003450d7e20012003360200200141046a2000360200200141086a28020021000b200141086a200041106a360200200320006a220020073700082000200e3700000cae010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9801200341017422052004200520044b1b22054100480d98010240024020030d002005102121040c010b200128020020032005102521040b2004450d7e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41143a000002400240200141046a28020020052802002204460d00200128020021050c010b200441016a22032004490d9801200441017422052003200520034b1b22034100480d98010240024020040d002003102121050c010b200128020020042003102521050b2005450d7f20012005360200200141046a2003360200200141086a28020021040b200141086a2203200441016a360200200520046a41003a00002000280204210c2000410c6a28020022002001105c2000450dad01200c200041d0016c6a210d200141046a21040340200c200110b101200c2802b801210a200c2802c00122002001105c02402000450d00200a200041c1006c6a2108034002400240200a2d00004101460d00200241013a003c02400240200428020020032802002200460d00200128020021060c010b200041016a22052000490d9d01200041017422062005200620054b1b22054100480d9d010240024020000d002005102121060c010b200128020020002005102521060b2006450d85012001200636020020042005360200200328020021000b410121052003200041016a360200200620006a41013a000003402002200a20056a2d000022093a003c02400240200428020020032802002200460d00200128020021060c010b200041016a22062000490d9e012000410174220b2006200b20064b1b220b4100480d9e010240024020000d00200b102121060c010b20012802002000200b102521060b2006450d8701200120063602002004200b360200200328020021000b2003200041016a360200200620006a20093a0000200541016a220541c100470d000c020b0b200241023a003c02400240200428020020032802002200460d00200128020021060c010b200041016a22052000490d9c01200041017422062005200620054b1b22054100480d9c010240024020000d002005102121060c010b200128020020002005102521060b2006450d86012001200636020020042005360200200328020021000b410121052003200041016a360200200620006a41023a000003402002200a20056a2d000022093a003c02400240200428020020032802002200460d00200128020021060c010b200041016a22062000490d9d012000410174220b2006200b20064b1b220b4100480d9d010240024020000d00200b102121060c010b20012802002000200b102521060b2006450d8801200120063602002004200b360200200328020021000b2003200041016a360200200620006a20093a0000200541016a220541c100470d000b0b200a41c1006a220a2008470d000b0b200c2802c4012109200c2802c801220641037622052001105c0240024020050d0020032802002105410021002001280200210a0c010b4101210002402005410820064107716b220a4d0d002005200a6b22004103762000410771456b41026a21000b02402004280200220a200328020022056b2000490d002001280200210a0c010b200520006a220b2005490d9901200a4101742205200b2005200b4b1b22054100480d990102400240200a0d0020051021210a0c010b2001280200200a20051025210a0b200a450d85012001200a36020020042005360200200328020021050b2003200520006a360200200a20056a2009410120061b200010dc041a200c41d0016a220c200d470d000cae010b0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d9701200041017422042003200420034b1b22044100480d97010240024020000d002004102121030c010b200128020020002004102521030b2003450d840120012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41153a000002400240200141046a28020020042802002200460d00200128020021030c010b200041016a22032000490d9701200041017422042003200420034b1b22044100480d97010240024020000d002004102121030c010b200128020020002004102521030b2003450d850120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41003a00000cac010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d850120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41163a0000200041086a22042d0000417f6a220341054b0dab0102400240024002400240024020030e06000102030405000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422052004200520044b1b22054100480d9b010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000410c6a200110af01200041106a200110af010cb0010b200241013a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000410c6a200110af01200041106a200110af01200041146a200110af01200041186a200110af012002200041206a360240200241c0006a200110c3010caf010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9901200341017422052004200520044b1b22054100480d99010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002000410c6a200110af01200041106a200110af01200041146a200110af012002200041186a360240200241c0006a200110c3010cae010b200241033a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9801200341017422052004200520044b1b22054100480d98010240024020030d002005102121040c010b200128020020032005102521040b2004450d8b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002000410c6a200110d9020cad010b200141086a2802002103200241043a003c024002402003200141046a280200460d00200128020021050c010b200341016a22052003490d9701200341017422062005200620054b1b22064100480d97010240024020030d002006102121050c010b200128020020032006102521050b2005450d8b0120012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41043a00002000412c6a200110af01200041306a200110af0120022001360240200441016a200241c0006a106b200028023421052000413c6a28020022002001105c02400240200141046a2802002204200628020022036b2000490d00200128020021040c010b200320006a22062003490d9701200441017422032006200320064b1b22034100480d97010240024020040d002003102121040c010b200128020020042003102521040b2004450d8c0120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2005200010dc041a0cac010b200241053a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9601200341017422052004200520044b1b22054100480d96010240024020030d002005102121040c010b200128020020032005102521040b2004450d8c0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a00002000410c6a200110af0120002802102106200041186a28020022002001105c02400240200141046a2802002204200528020022036b2000490d00200128020021040c010b200320006a22052003490d9601200441017422032005200320054b1b22034100480d96010240024020040d002003102121040c010b200128020020042003102521040b2004450d8d0120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2006200010dc041a0cab010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9501200341017422052004200520044b1b22054100480d95010240024020030d002005102121040c010b200128020020032005102521040b2004450d8d0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41173a0000200041046a22042d0000417f6a220341064b0daa01024002400240024002400240024020030e0700010203040506000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021050c010b200341016a22052003490d9b01200341017422062005200620054b1b22064100480d9b010240024020030d002006102121050c010b200128020020032006102521050b2005450d940120012005360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200520036a41003a0000200041086a200110af01200220042d000141014622053a003c02400240200141046a28020020062802002203460d00200128020021040c010b200341016a22042003490d9b01200341017422062004200620044b1b22064100480d9b010240024020030d002006102121040c010b200128020020032006102521040b2004450d950120012004360200200141046a2006360200200141086a28020021030b200141086a2206200341016a360200200420036a20053a0000200028020c210a200041146a28020022032001105c02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490d9b01200541017422042006200420064b1b22044100480d9b010240024020050d002004102121050c010b200128020020052004102521050b2005450d960120012005360200200141046a2004360200200141086a28020021040b200141086a2206200420036a360200200520046a200a200310dc041a20002802182105200041206a28020022002001105c02400240200141046a2802002204200628020022036b2000490d00200128020021040c010b200320006a22062003490d9b01200441017422032006200320064b1b22034100480d9b010240024020040d002003102121040c010b200128020020042003102521040b2004450d970120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2005200010dc041a0cb0010b200241013a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9a01200341017422052004200520044b1b22054100480d9a010240024020030d002005102121040c010b200128020020032005102521040b2004450d970120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a200110af010caf010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d9901200341017422052004200520044b1b22054100480d99010240024020030d002005102121040c010b200128020020032005102521040b2004450d970120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41023a00002000280208210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d9901200341017422002005200020054b1b22004100480d99010240024020030d002000102121030c010b200128020020032000102521030b2003450d980120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000cae010b200241033a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490daa01200341017422052004200520044b1b22054100480daa010240024020030d002005102121040c010b200128020020032005102521040b2004450d990120012004360200200141046a2005360200200141086a28020021030b200141086a2206200341016a360200200420036a41033a00002000280208210a200041106a28020022032001105c02400240200141046a2802002205200628020022046b2003490d00200128020021050c010b200420036a22062004490daa01200541017422042006200420064b1b22044100480daa010240024020050d002004102121050c010b200128020020052004102521050b2005450d9a0120012005360200200141046a2004360200200141086a28020021040b200141086a2206200420036a360200200520046a200a200310dc041a200028021421052000411c6a28020022002001105c02400240200141046a2802002204200628020022036b2000490d00200128020021040c010b200320006a22062003490daa01200441017422032006200320064b1b22034100480daa010240024020040d002003102121040c010b200128020020042003102521040b2004450d9b0120012004360200200141046a2003360200200141086a28020021030b200141086a200320006a360200200420036a2005200010dc041a0cad010b200141086a2802002103200241043a003c024002402003200141046a280200460d00200128020021050c010b200341016a22052003490da901200341017422062005200620054b1b22064100480da9010240024020030d002006102121050c010b200128020020032006102521050b2005450d9b0120012005360200200141046a2006360200200141086a28020021030b200141086a200341016a360200200520036a41043a0000200041c8006a200110af01200441016a2001107120022001360240200441216a200241c0006a106b0cac010b200241053a003c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490da801200041017422042003200420034b1b22044100480da8010240024020000d002004102121030c010b200128020020002004102521030b2003450d9b0120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41053a00000cab010b200241063a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da701200341017422052004200520044b1b22054100480da7010240024020030d002005102121040c010b200128020020032005102521040b2004450d9b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41063a0000200041086a200110af010caa010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da601200341017422052004200520044b1b22054100480da6010240024020030d002005102121040c010b200128020020032005102521040b2004450d9b0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41183a00002000280204417f6a220341024b0da90102400240024020030e03000102000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da801200341017422052004200520044b1b22054100480da8010240024020030d002005102121040c010b200128020020032005102521040b2004450d9e0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a00002000280208200110cb010cab010b200241013a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da701200341017422052004200520044b1b22054100480da7010240024020030d002005102121040c010b200128020020032005102521040b2004450d9e0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a0000200041086a200110d9020caa010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da601200341017422052004200520044b1b22054100480da6010240024020030d002005102121040c010b200128020020032005102521040b2004450d9e0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a200110d902200028022c200110cb010ca9010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da501200341017422052004200520044b1b22054100480da5010240024020030d002005102121040c010b200128020020032005102521040b2004450d9e0120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41193a00002000280204417f6a220341034b0da801024002400240024020030e0400010203000b200241003a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da801200341017422052004200520044b1b22054100480da8010240024020030d002005102121040c010b200128020020032005102521040b2004450da20120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a000020002802082106200041106a28020022032001105c02400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490da801200441017422002005200020054b1b22004100480da8010240024020040d002000102121040c010b200128020020042000102521040b2004450da30120012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a2006200310dc041a0cab010b200241013a003c02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490da701200041017422042003200420034b1b22044100480da7010240024020000d002004102121030c010b200128020020002004102521030b2003450da30120012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a41013a00000caa010b200241023a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da601200341017422052004200520044b1b22054100480da6010240024020030d002005102121040c010b200128020020032005102521040b2004450da30120012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041086a200110d9020ca9010b200241033a003c02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490da501200341017422052004200520044b1b22054100480da5010240024020030d002005102121040c010b200128020020032005102521040b2004450da30120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a0000200041086a200110d902200028022c2106200041346a28020022032001105c02400240200141046a2802002204200528020022006b2003490d00200128020021040c010b200020036a22052000490da501200441017422002005200020054b1b22004100480da5010240024020040d002000102121040c010b200128020020042000102521040b2004450da40120012004360200200141046a2000360200200141086a28020021000b200141086a200020036a360200200420006a2006200310dc041a0ca8010b200541011030000b200441011030000b200541011030000b200341011030000b200541011030000b200041011030000b200541011030000b200341011030000b200441011030000b200541011030000b200541011030000b200541011030000b200341011030000b200541011030000b200341011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200941011030000b200441011030000b200541011030000b200341011030000b200341011030000b200341011030000b200341011030000b200541011030000b200541011030000b200041011030000b200a41011030000b200941011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200a41011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200541011030000b200a41011030000b200441011030000b200041011030000b200441011030000b200541011030000b200541011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200541011030000b200541011030000b200341011030000b200441011030000b200441011030000b200341011030000b200341011030000b200941011030000b200441011030000b200a41011030000b200541011030000b200541011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200041011030000b200541011030000b200541011030000b200541011030000b200941011030000b200341011030000b200041011030000b200441011030000b200541011030000b200541011030000b200441011030000b200541011030000b200441011030000b200a41011030000b200641011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200641011030000b200b41011030000b200641011030000b200041011030000b200541011030000b200341011030000b200541011030000b200b41011030000b200541011030000b200b41011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200641011030000b200341011030000b200541011030000b200341011030000b200541011030000b200641011030000b200641011030000b200441011030000b200341011030000b200541011030000b200541011030000b200041011030000b102a000b200541011030000b200441011030000b200341011030000b200641011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200041011030000b200441011030000b200541011030000b200541011030000b200041011030000b102a000b41bca7c300102b000b024002400240200141046a2802002203200141086a28020022006b4104490d00200128020021030c010b200041046a22042000490d05200341017422002004200020044b1b22004100480d050240024020030d002000102121030c010b200128020020032000102521030b2003450d0120012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a2007a74102744102723600000c020b200041011030000b02400240200141046a2802002203200141086a28020022006b4102490d00200128020021030c010b200041026a22042000490d03200341017422002004200020044b1b22004100480d030240024020030d002000102121030c010b200128020020032000102521030b2003450d0220012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a2007a74102744101723b00000b200241e0006a24000f0b200041011030000b102a000b6801037f024041094101200128020022024101461b220310212204450d000240024020020d00200441003a0000410121010c010b200441013a000020042001290204370001410921010b2000200136020820002003360204200020043602000f0b200341011030000bfd5102057f027e230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410110212203450d002002428180808010370204200220033602000240200128020022044103470d00200341003a00000c3f0b200341013a000020022802042105200228020821030240024020044102470d000240024020052003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d0420022005360204200220043602000b2002200341016a360208200420036a41003a0000200228020821030c010b0240024020052003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d0420022005360204200220043602000b2002200341016a360208200420036a41013a00000240024020012802004101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d0720022005360204200220043602000b2002200341016a360208200420036a41003a0000200141086a2002107120022001280204220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d0720022005360204200220043602000b2002200341016a360208200420036a41013a000020022001280204220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d3f200441017422032005200320054b1b22034100480d3f0240024020040d002003102121040c010b200228020020042003102521040b2004450d07200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141306a2903002107200129032821080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d3f200441017422032005200320054b1b22034100480d3f0240024020040d002003102121040c010b200228020020042003102521040b2004450d082002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080b200228020421040240024020012802384102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d0a2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802384101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d0d2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141c0006a2002107120022001413c6a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d0d2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00002002200128023c220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d0d200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141e8006a2903002107200129036021080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d0e2002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d0e2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b200228020421040240024020012802704102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d102002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802704101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d132002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141f8006a200210712002200141f4006a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d132002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a000020022001280274220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d13200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141a0016a290300210720012903980121080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d142002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d142002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b200228020421040240024020012802a8014102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d162002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802a8014101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d192002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141b0016a200210712002200141ac016a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d192002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000200220012802ac01220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d19200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141d8016a290300210720012903d00121080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d1a2002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d1a2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b200228020421040240024020012802e0014102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d1c2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802e0014101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d1f2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141e8016a200210712002200141e4016a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d1f2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000200220012802e401220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d1f200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a200536000020014190026a290300210720012903880221080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d202002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d202002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b20022802042104024002402001280298024102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d222002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000024002402001280298024101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d252002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141a0026a2002107120022001419c026a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d252002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00002002200128029c02220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d25200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141c8026a290300210720012903c00221080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d262002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d262002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b200228020421040240024020012802d0024102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d282002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802d0024101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d2b2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141d8026a200210712002200141d4026a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d2b2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000200220012802d402220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d2b200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a200536000020014180036a290300210720012903f80221080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d2c2002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d2c2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b20022802042104024002402001280288034102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d2e2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000024002402001280288034101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d312002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a000020014190036a2002107120022001418c036a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d312002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00002002200128028c03220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d31200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141b8036a290300210720012903b00321080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d322002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d322002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b200228020421040240024020012802c0034102460d000240024020042003460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d342002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802c0034101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d42200341017422052004200520044b1b22054100480d420240024020030d002005102121040c010b200228020020032005102521040b2004450d372002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200141c8036a200210712002200141c4036a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d372002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000200220012802c403220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d37200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141f0036a290300210720012903e80321080240024020022802042204200228020822036b4110490d00200228020021040c010b200341106a22052003490d40200441017422032005200320054b1b22034100480d400240024020040d002003102121040c010b200228020020042003102521040b2004450d382002200336020420022004360200200228020821030b200420036a22042007370008200420083700002002200341106a22033602080c010b0240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d382002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a0000200228020821030b20022802042104024020012802f8034102460d000240024020042003460d00200228020021040c010b200341016a22042003490d3f200341017422052004200520044b1b22054100480d3f0240024020030d002005102121040c010b200228020020032005102521040b2004450d392002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a00000240024020012802f8034101460d0002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d41200341017422052004200520044b1b22054100480d410240024020030d002005102121040c010b200228020020032005102521040b2004450d3c2002200536020420022004360200200228020821030b2002200341016a360208200420036a41003a000020014180046a200210712002200141fc036a280200220536020c2002410c6a21060c010b02400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d40200341017422052004200520044b1b22054100480d400240024020030d002005102121040c010b200228020020032005102521040b2004450d3c2002200536020420022004360200200228020821030b2002200341016a360208200420036a41013a0000200220012802fc03220536020c2002410c6a21060b0240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22052003490d3f200441017422032005200320054b1b22034100480d3f0240024020040d002003102121040c010b200228020020042003102521040b2004450d3c200220033602042002200436020020062802002105200228020821030b2002200341046a360208200420036a2005360000200141a8046a290300210720012903a00421080240024020022802042203200228020822016b4110490d00200228020021030c010b200141106a22042001490d3f200341017422012004200120044b1b22014100480d3f0240024020030d002001102121030c010b200228020020032001102521030b2003450d3d2002200136020420022003360200200228020821010b200320016a22032007370008200320083700002002200141106a3602080c3f0b0240024020042003460d00200228020021010c010b200341016a22012003490d3e200341017422042001200420014b1b22044100480d3e0240024020030d002004102121010c010b200228020020032004102521010b2001450d3d2002200436020420022001360200200228020821030b2002200341016a360208200120036a41003a00000c3e0b410141011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b200141011030000b200441011030000b102a000b20002002290300370200200041086a200241086a280200360200200241106a24000b9c2903087f057e277f230041d00c6b22042400200441e0016a41186a200241186a290000370300200441e0016a41106a200241106a290000370300200441e0016a41086a200241086a290000370300200420022900003703e0010240024002400240024002400240024002402001280200220541d8a7c300460d00200128020421060c010b41002106200441c0026a410041e00210db041a200441a8056a410041900410db041a41f80610212205450d01200541003b010620054100360200200541086a200441c0026a41e00210dc041a200541e8026a200441a8056a41900410dc041a20014100360204200120053602000b02400340200541086a2107200541066a210820052f0106220941057421024100210a0240024003402002450d01200441e0016a2007412010de04220b450d02200241606a2102200a41016a210a200741206a2107200b417f4a0d000b200a417f6a21090b2006450d022006417f6a2106200520094102746a41f8066a28020021050c010b0b2005200a41306c6a22024180036a2207290300210c2003290300210d2003290308210e2003290310210f2007200341186a290300370300200241f8026a220729030021102007200f370300200241f0026a2207290300210f2007200e370300200241e8026a2207290300210e2007200d370300200441a8056a41086a220720024190036a220a290300370300200420024188036a22022903003703a80520022003290320370300200a200341286a290300370300200441c0026a41086a22022007290300370300200420042903a805220d3703c002200041186a200c370300200020103703102000200f3703082000200e3703002000200d370320200041286a20022903003703000c060b200441186a2202200441e0016a41186a2207290300370300200441106a200441e0016a41106a220a290300220c370300200441086a200441e0016a41086a220b290300220d370300200420042903e001220e3703002001200128020841016a360208200441f8006a41106a2206200c370300200441f8006a41086a2211200d370300200441f8006a41186a221220022903003703002004200e370378200441e0016a41286a2213200341286a290300370300200441e0016a41206a2214200341206a2903003703002007200341186a290300370300200a200341106a290300370300200b200341086a290300370300200420032903003703e001024020082f01002203410b490d00200441c0026a410041e00210db041a200441a8056a410041900410db041a41f80610212215450d02201541003b010620154100360200201541086a200441c0026a41e00210dc042107201541e8026a200441a8056a41900410dc04210a200441a8056a41086a220b20054190056a290300370300200441a8056a41106a220320054198056a290300370300200441a8056a41186a2206200541a0056a290300370300200441a8056a41206a2211200541a8056a290300370300200441a8056a41286a2212200541b0056a290300370300200420052900db013703a8022004200541e0016a2900003700ad0220042005290388053703a805200420052f00c8013b01bc022004200541ca016a2d00003a00be02200541cb016a2800002116200541cf016a2800002117200541d3016a2800002118200541d7016a28000021192007200541e8016a20052f010641796a220241057410dc042107200a200541b8056a200241306c10dc04210a200541063b0106201520023b0106200420042f01bc023b01a402200420042d00be023a00a602200420042903a80237039002200420042900ad0237009502200441c0026a41286a2012290300370300200441c0026a41206a2011290300370300200441c0026a41186a2006290300370300200441c0026a41106a2003290300370300200441c0026a41086a200b290300370300200420042903a8053703c0020240024020094107490d00200941057420076a41c07e6a2007200941796a220b4105746a2207200241ffff0371200b6b41057410dd041a200741186a200441f8006a41186a290300370000200741106a200441f8006a41106a290300370000200741086a200441f8006a41086a29030037000020072004290378370000200941306c200a6a220241e07d6a200241b07d6a2202201541066a22082f0100200b6b41306c10dd041a200241286a200441e0016a41286a290300370300200241206a200441e0016a41206a290300370300200241186a200441e0016a41186a290300370300200241106a200441e0016a41106a290300370300200241086a200441e0016a41086a290300370300200220042903e0013703000c010b200541086a20094105746a220241206a200220082f010020096b41057410dd041a200241186a200441f8006a41186a290300370000200241106a200441f8006a41106a290300370000200241086a200441f8006a41086a29030037000020022004290378370000200541e8026a200941306c6a220241306a200220082f010020096b41306c10dd041a200241286a200441e0016a41286a290300370300200241206a200441e0016a41206a290300370300200241186a200441e0016a41186a290300370300200241106a200441e0016a41106a290300370300200241086a200441e0016a41086a290300370300200220042903e0013703000b200820082f010041016a3b0100200441c8016a41026a220220042d00a6023a000020044198016a41086a221a200441c0026a41086a221b29030037030020044198016a41106a221c200441c0026a41106a221d29030037030020044198016a41186a221e200441c0026a41186a221f29030037030020044198016a41206a2220200441c0026a41206a222129030037030020044198016a41286a2222200441c0026a41286a2223290300370300200420042f01a4023b01c8012004200429039002370368200420042900950237006d200420042903c00237039801200441386a41286a22242022290300370300200441386a41206a22252020290300370300200441386a41186a2226201e290300370300200441386a41106a2227201c290300370300200441386a41086a2228201a290300370300200441346a41026a222920022d00003a00002004200429039801370338200420042903683703202004200429006d370025200420042f01c8013b013420052802002203450d0420052f01042114200441a8056a410272212a0340200441dc016a41026a222b20292d00003a0000200420042f01343b01dc01200420042903203703682004200429002537006d200441e0016a41286a222c2024290300370300200441e0016a41206a222d2025290300370300200441e0016a41186a222e2026290300370300200441e0016a41106a222f2027290300370300200441e0016a41086a22302028290300370300200420042903383703e001201441ffff0371210502400240024020032f01062202410b490d00202a410041a20710db041a41a8071021220b450d07200b4100360200200b41046a200441a8056a41a40710dc041a200420032f00c8013b01bc022004200341ca016a2d00003a00be02200420032900db013703a8022004200341e0016a2900003700ad02200341cb016a2800002131200341cf016a2800002132200341d3016a2800002133200341d7016a2800002134200441a8056a41286a2209200341b0056a290300370300200441a8056a41206a2208200341a8056a290300370300200441a8056a41186a2211200341a0056a290300370300200441a8056a41106a221220034198056a290300370300200441a8056a41086a221320034190056a29030037030020042003290388053703a805200b41086a200341e8016a20032f0106220741796a220241057410dc042135200b41e8026a200341b8056a200241306c10dc042136200b41f8066a20034194076a2007417a6a220641027410dc042137200341063b0106200b20023b010602402006450d00410021022037210703402007280200220a20023b0104200a200b360200200741046a21072006200241016a2202470d000b0b2023200929030037030020212008290300370300201f2011290300370300201d2012290300370300201b2013290300370300200420042903a8053703c002200420042f01bc023b01a402200420042d00be023a00a602200420042903a80237039002200420042900ad0237009502200441a4056a41026a220620042d00a6023a0000200420042f01a4023b01a4052004200429039002370378200420042900950237007d20092023290300370300200820212903003703002011201f2903003703002012201d2903003703002013201b290300370300200420042903c0023703a805201441ffff037122074107490d0120352005417a6a220a4105746a2035200541796a22024105746a2207200b2f010620026b41057410dd041a200741186a200429006d3700002007201936000f2007201836000b2007201736000720072016360003200741026a202b2d00003a0000200720042f01dc013b000020072004290368370013200541306c20366a220741e07d6a200741b07d6a2207200b2f0106221420026b41306c10dd041a200741286a202c290300370300200741206a202d290300370300200741186a202e290300370300200741106a202f290300370300200741086a2030290300370300200720042903e001370300200b201441016a22073b01062005410274221620376a416c6a2037200a4102746a2214200741ffff03712205200a6b41027410dd041a201420153602002005200a490d02200b20166a41e0066a210703402007280200220a200241016a22023b0104200a200b360200200741046a210720022005490d000c030b0b200341086a2207200541016a220a4105746a200720054105746a2207200220056b220b41057410dd041a2007201936000f2007201836000b2007201736000720072016360003200741026a200441dc016a41026a2d00003a0000200720042f01dc013b000020072004290368370013200741186a200429006d3700002003200541306c6a22074198036a200741e8026a2206200b41306c10dd041a20074190036a20044188026a29030037030020074188036a20044180026a29030037030020074180036a200441e0016a41186a290300370300200741f8026a200441f0016a290300370300200741f0026a200441e0016a41086a290300370300200620042903e0013703002003200241016a22023b01062005410274200341f8066a22076a41086a2007200a4102746a2207200241ffff0371200a6b41027410dd041a20072015360200201441ffff037120032f010622024f0d082015200a3b010420152003360200200a20024f0d082002417f6a210b2003200a417f6a22024102746a4180076a210703402007280200220a200241026a3b0104200a2003360200200741046a2107200b200241016a2202470d000c090b0b200341086a2202200541016a220a4105746a200220054105746a220220032f0106221420056b223741057410dd041a2002201936000f2002201836000b2002201736000720022016360003200241026a202b2d00003a0000200220042f01dc013b000020022004290368370013200241186a200429006d370000200341e8026a200541306c6a220241306a2002203741306c10dd041a200241286a202c290300370300200241206a202d290300370300200241186a202e290300370300200241106a202f290300370300200241086a2030290300370300200220042903e0013703002003201441016a22023b010620054102742237200341f8066a22146a41086a2014200a4102746a2214200241ffff0371200a6b41027410dd041a20142015360200200720032f0106220a4f0d00200320376a41fc066a2102034020022802002207200541016a22053b010420072003360200200241046a2102200a2005470d000b0b200441d8016a41026a220220062d00003a0000201a2013290300370300201c2012290300370300201e20112903003703002020200829030037030020222009290300370300200420042f01a4053b01d801200420042903783703c8012004200429007d3700cd01200420042903a8053703980120242022290300370300202520202903003703002026201e2903003703002027201c2903003703002028201a290300370300202920022d00003a00002004200429039801370338200420042903c801370320200420042900cd01370025200420042f01d8013b01340240200328020022020d0020312116203421192033211820322117200b21150c060b20032f010421142031211620342119203321182032211720022103200b21150c000b0b200520094105746a220241286a200241086a2201200320096b41057410dd041a200241206a2012290300370000200241186a2006290300370000200241106a2011290300370000200120042903783700002005200941306c6a22024198036a200241e8026a220320052f010620096b41306c10dd041a20024190036a201329030037030020024188036a201429030037030020024180036a2007290300370300200241f8026a200a290300370300200241f0026a200b290300370300200320042903e001370300200520052f010641016a3b01060c040b41f80641081030000b41f80641081030000b41a80741081030000b200441a8056a410272410041a20710db041a41a80710212202450d0220024100360200200241046a200441a8056a41a40710dc041a2002200128020022073602f806200120023602002001200128020441016a360204200741003b010420072002360200200220022f0106220a4105746a220741086a20042f01343b00002007410a6a200441346a41026a2d00003a0000200741176a2019360000200741136a20183600002007410f6a20173600002007410b6a20163600002007411b6a2004290320370000200741206a20042900253700002002200a41306c6a220741e8026a2004290338370300200741f0026a200441386a41086a290300370300200741f8026a200441c8006a29030037030020074180036a200441d0006a29030037030020074188036a200441386a41206a29030037030020074190036a200441e0006a290300370300200241f8066a200a41016a22074102746a2015360200200220073b010620152002360200201520073b01040b200041003602200b200441d00c6a24000f0b41a80741081030000bd21b03087f047e107f23004180056b22032400200341d0006a41186a200141186a290000370300200341d0006a41106a200141106a290000370300200341d0006a41086a200141086a290000370300200320012900003703500240024002400240024002402000280200220441d8a7c300460d00200028020421050c010b41002105200341c0016a410041e00210db041a200341b8016a22014100360200200341b0016a2206420037030020034190016a41186a420037030020034190016a41106a420037030020034190016a41086a4200370300200342003703900141940310212204450d01200441003b010620044100360200200441086a200341c0016a41e00210dc041a20044190036a200128020036020020044188036a200629030037020020044180036a200341a8016a290300370200200441f8026a200341a0016a290300370200200441f0026a20034190016a41086a29030037020020042003290390013702e80220004100360204200020043602000b02400340200441086a2106200441066a210720042f010622084105742101410021090240024003402001450d01200341d0006a2006412010de04220a450d02200141606a2101200941016a2109200641206a2106200a417f4a0d000b2009417f6a21080b2005450d022005417f6a2105200420084102746a4194036a28020021040c010b0b200420094102746a41e8026a20023602000c030b200341086a41186a200341d0006a41186a2201290300220b370300200341086a41106a200341d0006a41106a2206290300220c370300200341086a41086a200341d0006a41086a2209290300220d37030020032003290350220e3703082000200028020841016a3602082001200b3703002006200c3703002009200d3703002003200e370350024002400240024020072f01002205410b490d00200341c0016a410041e00210db041a200341b8016a22014100360200200341b0016a2206420037030020034190016a41186a420037030020034190016a41106a420037030020034190016a41086a420037030020034200370390014194031021220f450d03200f41003b0106200f4100360200200f41086a200341c0016a41e00210dc042109200f4190036a2001280200360200200f4188036a2006290300370200200f4180036a20034190016a41186a290300370200200f41f8026a20034190016a41106a290300370200200f41f0026a20034190016a41086a290300370200200f2003290390013702e802200320042f00c8013b018c012003200441ca016a2d00003a008e01200441cb016a2800002110200441cf016a2800002111200441d3016a2800002112200441d7016a28000021132003200441e0016a29000037007d200320042900db0137037820042802800321142009200441e8016a20042f010641796a220141057410dc042109200f41e8026a20044184036a200141027410dc04210a200441063b0106200f20013b0106200320032f018c013b0174200320032d008e013a007620032003290378370390012003200329007d3700950120084107490d01200f41066a210720092008417a6a22054105746a2009200841796a22064105746a2209200141ffff037120066b41057410dd041a200941186a200341d0006a41186a290300370000200941106a200341d0006a41106a290300370000200941086a200341d0006a41086a29030037000020092003290350370000200a20054102746a2109200a20064102746a21010c020b200441086a220a200841016a22004105746a200a20084105746a220a200520086b41057410dd041a200a41186a2001290300370000200a41106a2006290300370000200a41086a2009290300370000200a2003290350370000200441e8026a220120004102746a200120084102746a220120042f010620086b41027410dd041a20012002360200200420042f010641016a3b01060c050b200441086a2201200841016a22064105746a200120084105746a220120072f010020086b41057410dd041a200141186a200341d0006a41186a290300370000200141106a200341d0006a41106a290300370000200141086a200341d0006a41086a29030037000020012003290350370000200441e8026a220920084102746a2101200920064102746a2109200821060b2009200120072f010020066b41027410dd041a20012002360200200720072f010041016a3b0100200341f0006a41026a221520032d007622013a00002003413c6a41026a221620013a000020032003290095013700452003200329039001370340200320032f017422013b01702003200329004537002d20032003290340370328200320013b013c20042802002205450d0220042f01042107200341c0016a41027221170340201520162d00003a0000200320032f013c3b0170200320032903283703502003200329002d370055200741ffff037121040240024002400240024020052f01062201410b490d002017410041be0310db041a41c4031021220a450d03200a4100360200200a41046a200341c0016a41c00310dc041a200320052f00c8013b018c012003200541ca016a2d00003a008e012003200541db016a2900003703782003200541e0016a29000037007d200541cb016a2800002118200541cf016a2800002119200541d3016a280000211a200541d7016a280000211b20054180036a280200211c200a41086a200541e8016a20052f0106220641796a220141057410dc04211d200a41e8026a20054184036a200141027410dc04211e200a4194036a200541b0036a2006417a6a220841027410dc042102200541063b0106200a20013b010602402008450d00410021012002210603402006280200220920013b01042009200a360200200641046a21062008200141016a2201470d000b0b200320032d008e0122013a0076200320032f018c0122063b017420032003290378370390012003200329007d37009501200341c0006a41026a220820013a0000200320063b014020032003290390013703c00120032003290095013700c501200741ffff037122064107490d01201d2004417a6a22094105746a201d200441796a22014105746a2206200a2f010620016b41057410dd041a200641186a20032900553700002006201336000f2006201236000b2006201136000720062010360003200641026a20152d00003a0000200620032f01703b000020062003290350370013201e200941027422066a201e20014102746a2207200a2f0106221020016b41027410dd041a20072014360200200a201041016a22073b01062004410274221020026a416c6a200220066a2206200741ffff0371220420096b41027410dd041a2006200f36020020042009490d02200a20106a41fc026a2106034020062802002209200141016a22013b01042009200a360200200641046a210620012004490d000c030b0b200541086a2206200441016a22094105746a200620044105746a2206200120046b41057410dd041a200641186a20032900553700002006201336000f2006201236000b2006201136000720062010360003200641026a200341f0006a41026a2d00003a0000200620032f01703b000020062003290350370013200541e8026a2201200941027422066a20012004410274220a6a220120052f0106220820046b41027410dd041a200120143602002005200841016a22013b0106200a20054194036a22046a41086a200420066a2206200141ffff0371220a20096b41027410dd041a2006200f360200200741ffff0371200a4f0d0820052009417f6a22014102746a4198036a2106034020062802002209200141016a22013b010420092005360200200641046a21062001200a490d000c090b0b200541086a2201200441016a22074105746a200120044105746a220120052f010620046b41057410dd041a200141186a20032900553700002001201336000f2001201236000b2001201136000720012010360003200141026a20152d00003a0000200120032f01703b000020012003290350370013200541e8026a2209200741027422026a2009200441027422016a220920052f0106221020046b41027410dd041a200920143602002005201041016a22093b0106200120054194036a22106a41086a201020026a2202200941ffff0371220920076b41027410dd041a2002200f360200200620094f0d00200520016a4198036a2101034020012802002206200441016a22043b010420062005360200200141046a210120092004470d000b0b201620082d00003a0000200320032f01403b013c200320032903c001370328200320032900c50137002d200528020022010d0120182110201b2113201a211220192111200a210f201c21140c050b41c40341041030000b20052f0104210720182110201b2113201a21122019211120012105201c2114200a210f0c000b0b41940341041030000b41940341041030000b200341c0016a410272410041be0310db041a41c40310212201450d0120014100360200200141046a200341c0016a41c00310dc041a20012000280200220636029403200020013602002000200028020441016a360204200641003b010420062001360200200120012f010622094105746a220641086a20032f013c3b00002006410a6a2003413c6a41026a2d00003a0000200641176a2013360000200641136a20123600002006410f6a20113600002006410b6a20103600002006411b6a2003290328370000200641206a200329002d37000020014194036a200941016a22064102746a200f360200200120094102746a41e8026a2014360200200120063b0106200f20063b0104200f20013602000b20034180056a24000f0b41c40341041030000b8b0303017f017e027f02402001450d00034020002802940321002001417f6a22010d000b0b02402002450d00410021034100210103402002417f6a210202400240200120002f01064f0d00200141016a21010c010b02400240200028020022010d002003ad210441002105410021010c010b20003301044220862003ad842104410121050b200010232004a72103024002402004422088a7220620012f01064f0d00200121000c010b034002400240200128020022000d002003ad2104410021000c010b200541016a210520013301044220862003ad8421040b200110232004a72103200021012004422088a7220620002f01064f0d000b0b200641027420006a4198036a280200210002402005417f6a2201450d00034020002802940321002001417f6a22010d000b0b410021010b20020d000b0b0240200041d8a7c300460d0020002802002101200010232001450d0020012802002100200110232000450d00024020002802002201450d000340200010232001210020012802002203210120030d000b0b200010230b0ba65002057f027e230041106b220224002002410036020820024201370300200028020021034101102121040240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020034102470d002004450d02200242818080801037020420022004360200200441003a0000200228020821040c010b2004450d02200242818080801037020420022004360200200441013a00000240024020002802004101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d0620022005360204200220033602000b2002200441016a360208200320046a41003a0000200041086a2002107120022000280204220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d0620022005360204200220033602000b2002200441016a360208200320046a41013a000020022000280204220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3e200341017422042005200420054b1b22044100480d3e0240024020030d002004102121030c010b200228020020032004102521030b2003450d06200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041306a2903002107200029032821080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3e200341017422042005200420054b1b22044100480d3e0240024020030d002004102121030c010b200228020020032004102521030b2003450d072002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080b200228020421030240024020002802384102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d092002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802384101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d0c2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041c0006a2002107120022000413c6a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d0c2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00002002200028023c220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d0c200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041e8006a2903002107200029036021080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d0d2002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d0d2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802704102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d0f2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802704101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d122002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041f8006a200210712002200041f4006a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d122002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a000020022000280274220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d12200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041a0016a290300210720002903980121080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d132002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d132002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802a8014102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d152002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802a8014101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d182002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041b0016a200210712002200041ac016a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d182002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000200220002802ac01220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d18200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041d8016a290300210720002903d00121080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d192002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d192002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802e0014102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d1b2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802e0014101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d1e2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041e8016a200210712002200041e4016a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d1e2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000200220002802e401220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d1e200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a200536000020004190026a290300210720002903880221080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d1f2002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d1f2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b20022802042103024002402000280298024102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d212002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000024002402000280298024101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d242002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041a0026a2002107120022000419c026a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d242002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00002002200028029c02220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d24200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041c8026a290300210720002903c00221080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d252002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d252002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802d0024102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d272002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802d0024101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d2a2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041d8026a200210712002200041d4026a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d2a2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000200220002802d402220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d2a200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a200536000020004180036a290300210720002903f80221080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d2b2002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d2b2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b20022802042103024002402000280288034102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d2d2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000024002402000280288034101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d302002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a000020004190036a2002107120022000418c036a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d302002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00002002200028028c03220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d30200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041b8036a290300210720002903b00321080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d312002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d312002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802c0034102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d332002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802c0034101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d362002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200041c8036a200210712002200041c4036a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d362002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000200220002802c403220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d36200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041f0036a290300210720002903e80321080240024020022802042203200228020822046b4110490d00200228020021030c010b200441106a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d372002200436020420022003360200200228020821040b200320046a22032007370008200320083700002002200441106a22043602080c010b0240024020032004460d00200228020021030c010b200441016a22032004490d3e200441017422052003200520034b1b22054100480d3e0240024020040d002005102121030c010b200228020020042005102521030b2003450d372002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a0000200228020821040b200228020421030240024020002802f8034102460d000240024020032004460d00200228020021030c010b200441016a22032004490d3f200441017422052003200520034b1b22054100480d3f0240024020040d002005102121030c010b200228020020042005102521030b2003450d392002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a00000240024020002802f8034101460d0002400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d41200441017422052003200520034b1b22054100480d410240024020040d002005102121030c010b200228020020042005102521030b2003450d3c2002200536020420022003360200200228020821040b2002200441016a360208200320046a41003a000020004180046a200210712002200041fc036a280200220536020c2002410c6a21060c010b02400240200228020420022802082204460d00200228020021030c010b200441016a22032004490d40200441017422052003200520034b1b22054100480d400240024020040d002005102121030c010b200228020020042005102521030b2003450d3c2002200536020420022003360200200228020821040b2002200441016a360208200320046a41013a0000200220002802fc03220536020c2002410c6a21060b0240024020022802042203200228020822046b4104490d00200228020021030c010b200441046a22052004490d3f200341017422042005200420054b1b22044100480d3f0240024020030d002004102121030c010b200228020020032004102521030b2003450d3c200220043602042002200336020020062802002105200228020821040b2002200441046a360208200320046a2005360000200041a8046a290300210720002903a00421080240024020022802042204200228020822036b4110490d00200228020021000c010b200341106a22002003490d3f200441017422032000200320004b1b22054100480d3f0240024020040d002005102121000c010b200228020020042005102521000b2000450d3d200220053602042002200036020020022802082103200521040b200020036a22052007370008200520083700002002200341106a22033602080c010b0240024020032004460d00200228020021000c010b200441016a22002004490d3e200441017422032000200320004b1b22034100480d3e0240024020040d002003102121000c010b200228020020042003102521000b2000450d3d2002200336020420022000360200200228020821040b2002200441016a360208200020046a41003a00002002280208210320022802042104200228020021000b20012902002003ad4220862000ad84100220040d3d0c3e0b410141011030000b410141011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200441011030000b200541011030000b200341011030000b102a000b200010230b200241106a24000be71207027f017e057f027e017f017e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2103200028020821052000280200210620002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024020002f01062201410b490d00200241d0026a410272410041da0010db041a200241386a410041840110db041a0240024041e40110212208450d0020084100360200200841046a200241d0026a41dc0010dc041a200841e0006a200241386a41840110dc042107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413c6a330000210a2000413e6a310000210b20002d003f210c2000350038210d200841086a200041c0006a20002f010641796a220141037410dc04210e2007200041b4016a2001410c6c10dc042107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200d200a200b4210868442208684210a0240024020034107490d002003410374200e6a41506a200e200341796a22094103746a220e200141ffff037120096b41037410dd041a200e20043700002003410c6c20076a220341b87f6a200341ac7f6a2203200841066a22012f010020096b410c6c10dd041a200341086a200241f0016a41086a280200360200200320022903f0013702000c010b200041086a20034103746a220741086a2007200041066a22012f010020036b41037410dd041a20072004370000200041e0006a2003410c6c6a2207410c6a200720012f010020036b410c6c10dd041a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002203360200200241086a221120033602002002200c3a0017200220022903d00222043703282002200a3e02102002200a4230883c00162002200a4220883d011420022004370300200229031021042000280200220c450d0320002f01042112200241d0026a410272211303402002200641016a22063602202002200c360224200f201128020036020020022002290300370328201241ffff03712109024002400240200c2f01062200410b490d002013410041da0010db041a200241f0016a200241d0026a41dc0010dc041a200241386a410041b40110db041a41940210212207450d0520074100360200200741046a200241f0016a41dc0010dc041a200741e0006a200241386a41b40110dc042103200c41386a290000210a200241386a41086a2214200c41b0016a2802003602002002200c41a8016a290200370338200741086a200c41c0006a200c2f0106220141796a220041037410dc0421152003200c41b4016a2000410c6c10dc042116200741e4016a200c4180026a2001417a6a220e41027410dc042117200c41063b0106200720003b01060240200e450d00410021002017210303402003280200220120003b010420012007360200200341046a2103200e200041016a2200470d000b0b20102014280200220036020020022002290338220b3703d002201420003602002002200b370338201241ffff037122034107490d0120152009417a6a22034103746a2015200941796a22004103746a220120072f010620006b41037410dd041a200120043700002009410c6c20166a220141b87f6a200141ac7f6a220120072f0106220e20006b410c6c10dd041a200141086a200f280200360200200120022903283702002007200e41016a22013b01062009410274221220176a416c6a201720034102746a220e200141ffff0371220920036b41027410dd041a200e200836020020092003490d02200720126a41cc016a2103034020032802002201200041016a22003b010420012007360200200341046a210320002009490d000c030b0b200c41086a2201200941016a22034103746a200120094103746a2201200020096b220741037410dd041a20012004370000200c2009410c6c6a220141ec006a200141e0006a220e2007410c6c10dd041a200141e8006a200241286a41086a280200360200200e2002290328370200200c200041016a22003b01062009410274200c41e4016a22016a41086a200120034102746a2201200041ffff0371220720036b41027410dd041a20012008360200201241ffff037120074f0d07200c2003417f6a22004102746a41e8016a2103034020032802002201200041016a22003b01042001200c360200200341046a210320002007490d000c080b0b200c41086a2200200941016a220e4103746a200020094103746a2200200c2f0106220120096b221241037410dd041a20002004370000200c41e0006a2009410c6c6a2200410c6a20002012410c6c10dd041a200041086a200f28020036020020002002290328370200200c200141016a22003b010620094102742217200c41e4016a22016a41086a2001200e4102746a2212200041ffff03712201200e6b41027410dd041a20122008360200200320014f0d00200c20176a41e8016a2100034020002802002203200941016a22093b01042003200c360200200041046a210020012009470d000b0b200241106a41086a2014280200220036020020112000360200200220022903382204370310200220043703000240200c28020022000d0020072108200a21040c050b200c2f010421122000210c200a2104200721080c000b0b41e40141041030000b41940241041030000b200020034103746a220941106a200941086a2209200120036b41037410dd041a2009200437000020002003410c6c6a220141ec006a200141e0006a220920002f010620036b410c6c10dd041a200141e8006a2007280200360200200920022903f001370200200020002f010641016a3b01060c010b200241d0026a410272410041da0010db041a200241f0016a200241d0026a41dc0010dc041a200241386a410041b40110db041a41940210212200450d0120004100360200200041046a200241f0016a41dc0010dc041a200041e0006a200241386a41b40110dc0421012000200528020022033602e401200520003602002005200528020441016a360204200341003b010420032000360200200120002f01062203410c6c6a22012002290300370200200020034103746a41086a2004370000200141086a200241086a280200360200200041e4016a200341016a22034102746a2008360200200020033b0106200820033b0104200820003602000b200241b0036a24000f0b41940241041030000bea0601037f200141046a2802002102200141086a2802002103024002400240024002400240024020002802204102470d000240024020022003460d00200128020021000c010b200341016a22002003490d07200341017422022000200220004b1b22024100480d070240024020030d002002102121000c010b200128020020032002102521000b2000450d0220012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b0240024020022003460d00200128020021020c010b200341016a22022003490d06200341017422042002200420024b1b22044100480d060240024020030d002004102121020c010b200128020020032004102521020b2002450d0220012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41013a0000200020011071024020002802204101460d0002400240200141046a28020020042802002203460d00200128020021000c010b200341016a22002003490d07200341017422022000200220004b1b22024100480d070240024020030d002002102121000c010b200128020020032002102521000b2000450d0420012000360200200141046a2002360200200141086a28020021030b200141086a200341016a360200200020036a41003a00000f0b02400240200141046a28020020042802002203460d00200128020021020c010b200341016a22022003490d06200341017422042002200420024b1b22044100480d060240024020030d002004102121020c010b200128020020032004102521020b2002450d0420012002360200200141046a2004360200200141086a28020021030b200141086a2204200341016a360200200220036a41013a00002000280224210202400240200141046a2802002200200428020022036b4104490d00200128020021000c010b200341046a22042003490d06200041017422032004200320044b1b22034100480d060240024020000d002003102121000c010b200128020020002003102521000b2000450d0520012000360200200141046a2003360200200141086a28020021030b200141086a200341046a360200200020036a20023600000f0b200241011030000b200441011030000b200241011030000b200441011030000b200341011030000b102a000bab0101037f230041d0006b220124002001200010b6010240200141c0006a2802002202450d00034002402001280244450d00200210230b2001200010b601200128024022020d000b0b02402000280204220241d8a7c300460d0020022802002103200210232003450d0020032802002100200310232000450d00024020002802002202450d000340200010232002210020022802002203210220030d000b0b200010230b200141d0006a24000bf40506057f017e017f017e067f017e230041b0036b22012400200141d8016a41186a22024200370300200141d8016a41106a22034200370300200141d8016a41086a22044200370300200142003703d801200141a0036a41086a220541aefcc400ad428080808090018422061003220741086a290000370300200120072900003703a0032007102320042005290300370300200120012903a003220837039003200120083703d801200541a8f5c000ad4280808080c001841003220741086a290000370300200120072900003703a00320071023200320012903a0032208370300200141b8016a41086a22072004290300370300200141b8016a41106a22092008370300200141b8016a41186a220a20052903003703002001200837039003200120012903d8013703b801200141d8016a200141b8016a10d6010240024020012802d801220b411a470d0041b4f5c00021050c010b200141b8016aad4280808080800484220810052001410c6a200141d8016a410472220c41ac0110dc041a20014188036a2d0000210d200242003703002003420037030020044200370300200142003703d801200520061003220e41086a2900003703002001200e2900003703a003200e102320042005290300370300200120012903a003220637039003200120063703d801200541e8a1c100ad4280808080d002841003220e41086a2900003703002001200e2900003703a003200e102320014190036a41086a20052903002206370300200120012903a003220f370390032003200f370000200341086a20063700002007200429030037030020092003290300370300200a2002290300370300200120012903d8013703b801200141013a00d8012008200141d8016aad428080808010841002200441023a0000200141083a00d801200141d8016a108e012001200b3602d801200c2001410c6a41ac0110dc041a200141b8016a200041c093066a200141d8016a200d4180840710d7014100210520012802b8014101470d0020012802bc0121050b200141b0036a240020050baa0401057f230041c0046b220224002002412036020420022001360200200241086a2001ad4280808080800484100410900102400240200228020822010d002000411a3602000c010b200228020c21032002200241106a2802003602d401200220013602d00120024190036a200241d0016a10d90102400240200228029003411a460d00200241e0016a20024190036a41b00110dc041a0240024020022802d4012204450d0020022802d00122052d0000210620022004417f6a3602d4012002200541016a3602d00120064103490d010b200241e0016a10da010c010b20022802e0012104200241206a200241e0016a41047241ac0110dc041a200220022800d8013602182002200241d8016a41036a28000036001b2004411a460d0020024190036a200241206a41ac0110dc041a2002200228001b3600e301200220022802183602e001200041046a20024190036a41ac0110dc041a200041b0016a20063a0000200020022802e0013600b101200041b4016a20022800e3013600000c010b200241003602e801200242013703e0012002410c360224200220023602202002200241e0016a3602d801200241a4036a4101360200200242013702940320024198c2c300360290032002200241206a3602a003200241d8016a41b8a3c50020024190036a102e1a20023502e80142208620023502e001841008024020022802e401450d0020022802e00110230b411a21040b200020043602002003450d00200110230b200241c0046a24000b8a0e04057f017e037f027e230041d0036b22052400200541c8016a41186a4200370300200541c8016a41106a22064200370300200541c8016a41086a22074200370300200542003703c801200541086a41086a220841aefcc400ad42808080809001841003220941086a29000037030020052009290000370308200910232007200829030037030020052005290308220a3703e8012005200a3703c801200841ec9ec100ad4280808080f001841003220941086a290000370300200520092900003703082009102320062005290308220a37030020054188026a41086a200729030037030020054188026a41106a200a37030020054188026a41186a20082903003703002005200a3703f801200520052903c80137038802200520054188026a4120108f010240024002402005280204410020052802001b2207417f6a220820074d0d002005411a3602080c010b200541086a200810e5012005280208411a460d0020054188026a200541086a41c00110dc041a20052802b803210820054188026a10db01200820014d0d0020004194f4c00036020420004101360200200041086a41c700360200200210db010c010b200541c8016a41186a220b4200370300200541c8016a41106a220c4200370300200541c8016a41086a22094200370300200542003703c801200541086a41086a220841aefcc400ad4280808080900184220a1003220d41086a2900003703002005200d290000370308200d10232009200829030037030020052005290308220e3703e8012005200e3703c801200841ec9ec100ad4280808080f001841003220d41086a2900003703002005200d290000370308200d1023200541f8016a41086a220d2008290300220e37030020052005290308220f3703f8012006200f370000200641086a200e37000020054188026a41086a200929030037030020054188026a41106a200c29030037030020054188026a41186a200b290300370300200520052903c801370388022005200741016a36020820054188026aad4280808080800484200541086aad4280808080c00084100220054188026a200241b00110dc041a200520033a00c003200520043602bc03200520013602b8032008200a1003220641086a2900003703002005200629000037030820061023200541e8016a41086a22012008290300370300200520052903083703e801200841bcf3c000ad42808080808002841003220641086a2900003703002005200629000037030820061023200d2008290300370300200520052903083703f801200520073602cc03200541086a41186a2202200541cc036aad4280808080c000841001220641186a290000370300200541086a41106a2204200641106a2900003703002008200641086a2900003703002005200629000037030820061023200b2002290300370300200c200429030037030020092008290300370300200520052903083703c8010240024002400240024041c00010212208450d00200820052903e801370000200820052903f801370010200820052903c801370020200841086a2001290300370000200841186a200d290300370000200841386a200b290300370000200841306a200c290300370000200841286a2009290300370000200541003602102005420137030820052802b8032106410410212209450d012005410436020c20052005280210220b41046a360210200520093602082009200b6a200636000020054188026a200541086a10cb01024020052d00c003220941024b0d00024002400240024020090e03000102000b410021060c020b410121060c010b410221060b200520063a00c80102400240200528020c20052802102209460d002005280208210b0c010b200941016a220b2009490d062009410174220c200b200c200b4b1b220c4100480d060240024020090d00200c1021210b0c010b20052802082009200c1025210b0b200b450d042005200c36020c2005200b360208200528021021090b2005200941016a360210200b20096a20063a00000b20052802bc03210b02400240200528020c2206200528021022096b4104490d00200528020821060c010b200941046a220c2009490d0520064101742209200c2009200c4b1b22094100480d050240024020060d002009102121060c010b200528020820062009102521060b2006450d042005200936020c20052006360208200528021021090b2005200941046a360210200620096a200b360000200528020c21092008ad4280808080800884200535021042208620052802082206ad84100202402009450d00200610230b2008102320054188026a10db0120054194026a200736020020054191026a20033a0000200541083a00880220054188026a41086a41033a000020054188026a108e0120004100360200200020073602040c050b41c00041011030000b410441011030000b200c41011030000b200941011030000b102a000b200541d0036a24000ba72304057f027e0d7f1b7e230041c0076b22012400200141c8056a41186a4200370300200141c8056a41106a22024200370300200141c8056a41086a22034200370300200142003703c805200141e8026a41086a220441aefcc400ad42808080809001841003220541086a290000370300200120052900003703e8022005102320032004290300370300200120012903e802220637039807200120063703c805200441d5f3c000ad4280808080b001841003220541086a290000370300200120052900003703e80220051023200220012903e8022206370300200141286a41086a2003290300370300200141286a41106a2006370300200141286a41186a20042903003703002001200637039801200120012903c8053703282001412036024c2001200141286a360248200141d0006a200141286aad42808080808004842207100410900102400240024002400240024002400240200128025022080d00410021090c010b2001280254210a2001200141d0006a41086a28020036027420012008360270200141206a200141f0006a106e02400240024020012802200d00200128027441d8016e220b41d8016c2204417f4c0d042001280224210c0240024020040d00410821090c010b200410212209450d060b0240200c450d0020014198046a410472210d4100210e4100210f0340024002400240200128027422044104490d0020012802702203280000211020012004417c6a3602742001200341046a360270200141c8056a200141f0006a10d90120012802c805411a460d00200f41016a211120014198046a200141c8056a41b00110dc041a41002103200141003a00b8072001280274417f6a2104024003402004417f460d0120014198076a20036a200128027022052d00003a00002001200541016a3602702001200341016a22053a00b807200120043602742004417f6a21042005210320054120470d000b200141f8066a41186a220420014198076a41186a290300370300200141f8066a41106a220520014198076a41106a290300370300200141f8066a41086a221220014198076a41086a29030037030020012001290398073703f8062001280298042103200141e8026a200d41ac0110dc041a200141c8026a41086a22132012290300370300200141c8026a41106a22122005290300370300200141c8026a41186a22052004290300370300200120012903f8063703c8022003411a460d0120014198016a200141e8026a41ac0110dc041a200141f8006a41186a22142005290300370300200141f8006a41106a22052012290300370300200141f8006a41086a22122013290300370300200120012903c802370378200b200f470d03200f41017422042011200420114b1b220bad42d8017e2206422088a70d0f2006a7220441004e0d020c0f0b0240200341ff0171450d00200141003a00b8070b20014198046a10da010b200141003602600240200f450d00200921040340200410db01200441d8016a2104200e41a87e6a220e0d000b0b200b450d05200910230c050b02400240200f0d002004102121090c010b2009200f41d8016c2004102521090b2009450d090b2009200f41d8016c6a22042003360200200441046a20014198016a41ac0110dc041a200420103602b001200420012903783702b401200441bc016a2012290300370200200441c4016a2005290300370200200441cc016a2014290300370200200e41d8016a210e2011210f2011200c470d000b0b200141e8006a200c3602002001200b360264200120093602602009450d01200129026421060c020b200141003602600b41002109200141003602a00420014201370398042001410c3602ec022001200141c8006a3602e802200120014198046a36029801200141dc056a4101360200200142013702cc0520014198c2c3003602c8052001200141e8026a3602d80520014198016a41b8a3c500200141c8056a102e1a20013502a0044220862001350298048410080240200128029c04450d0020012802980410230b0b200a450d00200810230b2009410820091b210a02402006420020091b2215422088a7220f450d00200a200f41d8016c6a2108200141c8056a200a2802b00110dc01200a41d8016a21040240024020012802d80522030d0042002116420021060c010b200141106a20012903c805200141c8056a41086a290300200141e0056a350200420010e104200141106a41086a29030021062001290310211620012802dc05450d00200310230b024020042008470d004100210e0c050b4100210e200a2109410121050340200141c8056a200441b0016a28020010dc010240024020012802d80522030d0042002117420021180c010b200120012903c805200141c8056a41086a29030020013502e005420010e104200141086a29030021182001290300211720012802dc05450d00200310230b200620182016201756200620185620062018511b22031b21062016201720031b21162009200420031b2109200e200520031b210e200541016a2105200441d8016a22042008470d000b20090d04200f41d8016c2103200a21040340200410db01200441d8016a2104200341a87e6a22030d000b0b41f9f3c00021042015a7450d04200a10230c040b102f000b200441081030000b200441081030000b024002400240200e200f4f0d00200a200f417f6a220c41d8016c6a220441a0016a2903002116200441a8016a2903002117200441b0016a2903002119200441b8016a290300211a20044180016a290300211b20044188016a290300211c20044190016a290300211d20044198016a290300211e200441e0006a290300211f200441e8006a2903002120200441f0006a2903002121200441f8006a2903002122200441c0006a2903002123200441c8006a2903002124200441d0006a2903002125200441d8006a2903002126200441206a2903002127200441286a2903002128200441306a2903002129200441386a290300212a2004290300212b2004290308212c2004290310212d200441186a290300212e200441c0016a2903002106200441c8016a2903002118200141c8056a41106a2203200441d0016a290300370300200141c8056a41086a22052018370300200a200e41d8016c6a220441186a220e290300212f200e202e3703002004290310212e2004202d3703102004290308212d2004202c3703082004290300212c2004202b370300200441386a220e290200212b200e202a370200200441306a220e290200212a200e2029370200200441286a220e2902002129200e2028370200200441206a220e2902002128200e2027370200200441d8006a220e2902002127200e2026370200200441d0006a220e2902002126200e2025370200200441c8006a220e2902002125200e2024370200200441c0006a220e2902002124200e2023370200200441f8006a220e2902002123200e2022370200200441f0006a220e2902002122200e2021370200200441e8006a220e2902002121200e2020370200200441e0006a220e2902002120200e201f37020020044198016a220e290200211f200e201e37020020044190016a220e290200211e200e201d37020020044188016a220e290200211d200e201c37020020044180016a220e290200211c200e201b370200200441b8016a201a370200200441b0016a220e280200210b200e2019370200200441a8016a220e2902002119200e2017370200200441a0016a220e2902002117200e2016370200200120063703c805200441c0016a2006370200200441c8016a2018370200200441d0016a200329030037020020014198046a41a8016a201937030020014198046a41a0016a201737030020014198046a4198016a201f37030020014198046a4190016a201e37030020014198046a4188016a201d37030020014198046a4180016a201c37030020014198046a41f8006a202337030020014198046a41f0006a202237030020014198046a41e8006a202137030020014198046a41e0006a202037030020014198046a41d8006a202737030020014198046a41d0006a202637030020014198046a41c8006a202537030020014198046a41c0006a202437030020014198046a41386a202b37030020014198046a41306a202a37030020014198046a41286a202937030020014198046a41206a202837030020014198046a41186a202f3703002001202e3703a8042001202d3703a0042001202c37039804200141c8056a41186a220942003703002003420037030020054200370300200142003703c805200141e8026a41086a220441aefcc400ad42808080809001841003220e41086a2900003703002001200e2900003703e802200e102320052004290300370300200120012903e802220637039807200120063703c805200441d5f3c000ad4280808080b001841003220e41086a2900003703002001200e2900003703e802200e102320014198016a41086a20042903002206370300200120012903e80222183703980120022018370000200241086a2006370000200141286a41086a2005290300370300200141286a41106a2003290300370300200141286a41186a2009290300370300200120012903c805370328200141003602d005200142013703c805200c200141c8056a105c0240200c450d00200f41d8016c41a87e6a210e200a21040340200441b0016a28020021090240024020012802cc05220520012802d00522036b4104490d0020012802c80521050c010b200341046a22082003490d07200541017422032008200320084b1b22034100480d070240024020050d002003102121050c010b20012802c80520052003102521050b2005450d04200120033602cc05200120053602c80520012802d00521030b2001200341046a3602d005200520036a20093600002004200141c8056a10cb01200441b4016a200141c8056a1071200441d8016a2104200e41a87e6a220e0d000b0b20012802cc052104200720013502d00542208620012802c8052203ad84100202402004450d00200310230b0240200c450d00200f41d8016c41a87e6a2103200a21040340200410db01200441d8016a2104200341a87e6a22030d000b0b02402015a7450d00200a10230b200141e8026a41086a220441aefcc400ad42808080809001841003220341086a290000370300200120032900003703e8022003102320014198076a41086a22052004290300370300200120012903e80237039807200441f0f3c000ad42808080809001841003220341086a290000370300200120032900003703e8022003102320014198016a41086a22032004290300370300200120012903e802370398012001200b3602e802200141f8066a41186a220e200141e8026aad4280808080c000841001220441186a290000370300200141f8066a41106a2209200441106a290000370300200141f8066a41086a2208200441086a290000370300200120042900003703f80620041023200141c8056a41186a220a200e290300370300200141c8056a41106a220e2009290300370300200141c8056a41086a22092008290300370300200120012903f8063703c80541c00010212204450d0220042001290398073700002004200129039801370010200420012903c805370020200441086a2005290300370000200441186a2003290300370000200441286a2009290300370000200441306a200e290300370000200441386a200a290300370000200141c8056a200441c00010dd01024020012802d8052205450d002004ad428080808080088410050b200141d0056a2903002106200141e0056a280200210e20012903c805211820012802dc05210920041023024002402005450d000240200e4105742203450d0020052104034020042018200610de01200441206a2104200341606a22030d000b0b200141f0056a2006370300200141e8056a2018370300200141e0056a200e360200200141dc056a2009360200200141d8056a2005360200200141d4056a200b360200200141083a00c805200141c8056a41086a41013a0000200141c8056a108e01200141c8056a20014198046a41b00110dc041a200141e8026a200041c093066a200141c8056a41004180840710d70120012802e8024101470d0120012802ec0221040c050b20014198046a10db010b410021040c030b41e0f3c000200e200f102d000b200341011030000b41c00041011030000b200141c0076a240020040f0b102a000bd9ae0108087f017e067f067e037f037e017f017e230041f00b6b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541194b0d1b200141046a210720050e1a0102030405060708090a0b0c0d0e0f101112131415161718191a010b2000411a3602000c670b2006450d6320042d0001210620012003417e6a22083602042001200441026a360200200641064b0d634101210902400240024002400240024020060e076b0001020304056b0b20022001106e20022802000d68200128020420022802042204490d682004417f4c0d2802400240024020040d00410121050c010b200410272205450d0120072802002004490d6920052001280200200410dc041a200128020422032004490d2b2001200320046b3602042001200128020020046a3602000b2005450d692004ad220a422086200a84210a410221090c6b0b200441011030000b20084108490d672004290002210a2001200341766a36020420012004410a6a360200410321090c690b200241086a2001106e20022802080d662001280204200228020c2204490d662004417f4c0d2602400240024020040d00410121050c010b200410272205450d0120072802002004490d6720052001280200200410dc041a200128020422032004490d2a2001200320046b3602042001200128020020046a3602000b2005450d672004ad220a422086200a84210a410421090c690b200441011030000b200241206a2001106e20022802200d65200728020041186e220b41186c2204417f4c0d252002280224210c0240024020040d00410421050c010b200410212205450d290b0240200c450d004100210d41002106410021090340200241186a2001106e02400240024020022802180d002001280204200228021c2203490d002003417f4c0d2a02400240024020030d004101210e0c010b20031027220e450d4920072802002003490d01200e2001280200200310dc041a200128020422042003490d302001200420036b3602042001200128020020036a3602000b200241106a2001106e024020022802100d00200128020420022802142204490d002004417f4c0d2c024002400240024020040d004101210f0c010b20041027220f450d0120072802002004490d02200f2001280200200410dc041a200128020422082004490d342001200820046b3602042001200128020020046a3602000b200941016a21082009200b470d06200d2008200d20084b1b220bad42187e220a422088a70d6f200aa7221041004e0d050c6f0b200441011030000b200f10230b2003450d010b200e10230b02402009450d002005210103400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200641686a22060d000b0b200b450d690c680b0240024020090d002010102121050c010b200520062010102521050b2005450d2e0b200520066a2209200e360200200941146a2004360200200941106a20043602002009410c6a200f360200200941046a2003ad220a422086200a84370200200d41026a210d200641186a210620082109200c2008470d000b0b2005450d65200cad422086200bad84210a410521090c670b200241306a2001106e20022802300d642007280200410c6e220e410c6c2204417f4c0d242002280234210f0240024020040d00410421050c010b200410212205450d2c0b024002400240200f450d004100210841002103410021090340200241286a2001106e20022802280d032001280204200228022c2204490d032004417f4c0d280240024020040d004101210d0c010b20041027220d450d4720072802002004490d03200d2001280200200410dc041a200128020422062004490d312001200620046b3602042001200128020020046a3602000b200941016a210602402009200e470d0020082006200820064b1b220ead420c7e220a422088a70d6a200aa7220b4100480d6a0240024020090d00200b102121050c010b20052003200b102521050b2005450d320b200520036a2209200d360200200941086a2004360200200941046a2004360200200841026a21082003410c6a210320062109200f2006470d000b0b2005450d66200fad422086200ead84210a410621090c680b200d10230b02402009450d002005210103400240200141046a280200450d00200128020010230b2001410c6a2101200341746a22030d000b0b200e0d630c640b200241386a2001106e20022802380d632001280204200228023c2204490d632004417f4c0d2302400240024020040d00410121050c010b200410272205450d0120072802002004490d6420052001280200200410dc041a200128020422032004490d2f2001200320046b3602042001200128020020046a3602000b2005450d642004ad220a422086200a84210a410721090c660b200441011030000b02402006450d0020012003417e6a3602042001200441026a3602000b2000411a3602000c650b2006450d5f20042d0001210520012003417e6a22063602042001200441026a36020020050d5f2006450d5f20042d0002210520012003417d6a22073602042001200441036a360200024002400240200541037122064103460d000240024020060e03030001030b2007450d6320042d0003210620012003417c6a3602042001200441046a3602002006410874200572220141ffff0371418002490d63200141fcff0371410276ad210a0c030b20074103490d62200441056a2d0000210620042f0003210720012003417a6a3602042001200441066a3602002007200641107472410874200572220141808004490d622001410276ad210a0c020b02402005410276220941044b0d000240024020090e050002020201000b20074104490d63200428000321052001200341796a3602042001200441076a3602002005418080808004490d632005ad210a0c030b20074108490d622004290003210a2001200341756a36020420012004410b6a360200200a42ffffffffffffffff00560d020c620b200941046a220641084b0d612003417c6a2103200441046a2104410021054200210a03402003417f460d622004417f6a310000211120012003360204200120043602002003417f6a2103200441016a210420112005410374413871ad86200a84210a200541016a220541ff01712006490d000b200a427f412820094103746b413871ad88580d610c010b2005410276ad210a0b20004102360200200041086a200a370300200041106a200241c00a6a41a00110dc041a0c640b02402006450d0020012003417e6a3602042001200441026a3602000b2000411a3602000c630b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b20024190096a200110d80220022d0090094102460d03200241f0066a41086a22032002419c096a290200370300200241f0066a41106a2205200241a4096a290200370300200241f0066a41186a2206200241ac096a29020037030020022002290294093703f0062002280290092104200241c0006a200110eb022002290340a70d03200241c0006a41106a290300210a20022903482111200241b8086a41186a2006290300370300200241b8086a41106a2005290300370300200241b8086a41086a2003290300370300200220022903f0063703b808410121010c600b20024190096a200110d80220022d0090094102460d02200241f8066a2002419c096a290200370300200241f0066a41106a200241a4096a29020037030020024188076a200241ac096a29020037030020022002290294093703f0062002280290092104200241f0006a200110eb022002290370a70d02200241f0006a41106a290300210a20022903782111200241d8006a200110eb022002290358a70d02200241d8006a41106a290300211220022903602113200241b8086a41186a200241f0066a41186a290300370300200241b8086a41106a200241f0066a41106a290300370300200241b8086a41086a200241f0066a41086a290300370300200220022903f0063703b808410221010c5f0b20024190096a200110d80220022d0090094102460d01200241d0056a41086a2002419c096a290200370300200241d0056a41106a200241a4096a290200370300200241d0056a41186a200241ac096a29020037030020022002290294093703d005200228029009210420024190096a200110d80220022d0090094102460d01200241f0066a41206a220320024190096a41206a280200360200200241f0066a41186a20024190096a41186a290300370300200241f0066a41106a20024190096a41106a290300370300200241f0066a41086a20024190096a41086a29030037030020022002290390093703f00620024188016a200110eb02200229038801a70d0120024188016a41106a29030021142002290390012115200241d8086a41186a200241d0056a41186a290300220a370300200241d8086a41106a200241d0056a41106a2903002211370300200241b8086a41086a200241d0056a41086a290300370300200241b8086a41106a2011370300200241b8086a41186a200a370300200220022903d0053703b808200241f0066a41086a290300210a200241f0066a41186a2903002112200241f0066a41106a29030021132003350200211620022903f0062111410321010c5e0b20024190096a200110d80220022d0090094102460d00200241f0066a41086a22032002419c096a290200370300200241f0066a41106a2205200241a4096a290200370300200241f0066a41186a2206200241ac096a29020037030020022002290294093703f0062002280290092104200241a0016a200110eb0220022903a001a70d00200241a0016a41106a290300210a20022903a8012111200241b8086a41086a2003290300370300200241b8086a41106a2005290300370300200241b8086a41186a2006290300370300200220022903f0063703b808410421010c5d0b2000411a3602000c620b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241b8016a2001106e20022802b8010d00200728020041f0006e220941f0006c2204417f4c0d1f20022802bc0121080240024020040d00410421070c010b200410212207450d2b0b024002402008450d00410021064100210541002103034020024190096a2001108801200228029409450d02200341016a2104200241f0066a20024190096a41f00010dc041a024020032009470d0020062004200620044b1b2209ad42f0007e220a422088a70d64200aa7220d4100480d640240024020030d00200d102121070c010b20072005200d102521070b2007450d2f0b200720056a200241f0066a41f00010dc041a200641026a2106200541f0006a21052004210320082004470d000b0b2007450d012000200736020420004105360200200041086a2008ad4220862009ad84370200200041106a200241c00a6a41a00110dc041a0c630b02402003450d00200720056a210620072105034002402005410c6a2802002204450d0020052802042101200441246c210403400240024020012d0000220341034b0d0002400240024020030e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012004415c6a22040d000b0b200541f0006a21010240200541086a280200450d00200528020410230b2001210520062001470d000b0b2009450d00200710230b2000411a3602000c610b2006450d5920042d0001210520012003417e6a220b3602042001200441026a3602002005410f4b0d594104210d02400240024002400240024002400240024002400240024002400240024002400240024020050e1000010211030405060708090a0b0d0e0f000b20024190096a200110d80220022d0090094102460d6a2002419c096a2902002116200241ac096a2902002115200241a4096a290200211420022902940921112002280290092106200241c0016a200110eb0220022903c001a70d6a20072802002204450d6a200241d0016a290300211220022903c8012113200128020022032d0000210820012004417f6a3602044101210d2001200341016a360200200841024b0d6a2013423888201242088684210a2013421888a7210e2012423888a7210f2013a721090c100b200241d8016a200110eb0220022903d801a70d69200241e8016a290300211620022903e00121114102210d4200210a0c0e0b200241f0016a200110eb0220022903f001a70d6820024180026a290300211620022903f80121114103210d4100210e4200210a4100210f0c0d0b20024188026a2001106e2002280288020d67200228028c0221064105210d4100210e4200210a4100210f0c0c0b20024190026a2001106e2002280290020d66200728020041246e221041246c2204417f4c0d2a20022802940221170240024020040d00410421060c010b200410212206450d380b02402017450d0020024190096a4101722103410021094100210741002104034020024190096a200110d802200241f0066a41086a2208200341086a290000370300200241f0066a41106a220d200341106a290000370300200241f0066a41186a220e200341186a290000370300200241f0066a411f6a220f2003411f6a280000360000200220032900003703f006024020022d009009220b4102470d002010450d69200610230c690b200441016a2105200241d0056a411f6a220c200f280000360000200241d0056a41186a220f200e290300370300200241d0056a41106a220e200d290300370300200241d0056a41086a220d2008290300370300200220022903f0063703d005024020042010470d0020092005200920054b1b2210ad42247e220a422088a70d6e200aa722084100480d6e0240024020040d002008102121060c010b200620072008102521060b2006450d3b0b200620076a2204200b3a0000200441016a20022903d005370000200441096a200d290300370000200441116a200e290300370000200441196a200f290300370000200441206a200c280000360000200941026a2109200741246a21072005210420172005470d000b0b2006450d662017ad4220862010ad8421114200210a4106210d0c070b4107210d0c0a0b200b450d6420042d0002210820012003417d6a3602042001200441036a360200200841034f0d644108210d4100210e4200210a4100210f0c0a0b20024190096a200110d80220022d0090094102460d632002419c096a2902002116200241ac096a2902002115200241a4096a2902002114200229029409211120022802900921064109210d410021094200210a4100210e4100210f0c080b20024198026a2001106e2002280298020d62200228029c022106410a210d410021094200210a4100210e4100210f0c070b410b210d0c060b410c210d0c050b20024190096a2001107e2002280290092206450d5f20022902940921114200210a410d210d0b4100210e4100210f420021160c030b41002105200241003a00b0092003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d5f200241003a00b0090c5f0b20024190096a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00b0092003417f6a21032006210520064120470d000b200241e8056a2201200241af096a2d00003a00002002419f096a2900002116200241a7096a2900002114200228009309210620022f009109210920022d0090092108200229009709211120013100002115410e210d4100210e4200210a4100210f0c030b410f210d0c010b200b4104490d5b2004280002210620012003417a6a3602042001200441066a36020020024190096a2001107b200228029009450d5b20024198096a350200211620022903900921114110210d410021094200210a4100210e4100210f0b0b200020093b010a200020083a000920004106360200200041186a2016370200200041106a2011370200200041286a2015370200200041206a20143702002000410c6a2006360200200041086a200d3a0000200041386a200fad423886200a42088884370200200041306a200a423886200ead421886842009ad42ffffff078384370200200041c0006a200241c00a6a41f00010dc041a0c600b02402006450d0020012003417e6a3602042001200441026a3602000b2000411a3602000c5f0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c00a6a200110ce0220022d00c00a4101460d0020024190096a200241c00a6a41017241a00110dc041a200241a0026a2001106e20022802a0020d00200128020420022802a4022204490d002004417f4c0d1c024002400240024020040d004101210341010d010c040b200410272203450d0120072802002004490d0220032001280200200410dc042105200128020422062004490d2e2001200620046b3602042001200128020020046a3602002005450d030b200241f0066a20024190096a41a00110dc041a200241d0056a200241f0066a41a00110dc041a2000410c6a2004360200200041086a20043602002000200336020420004108360200200041106a200241d0056a41a00110dc041a0c610b200441011030000b200310230b2000411a3602000c5e0b024002402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241a8026a2001106e20022802a802450d010b2000411a3602000c5e0b20022802ac0221012000410936020020002001360204200041086a200241c00a6a41a80110dc041a0c5d0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241b0026a2001106e20022802b0020d00200128020420022802b4022204490d002004417f4c0d1a024002400240024020040d00410121030c010b200410272203450d0120072802002004490d0220032001280200200410dc041a200128020422052004490d2d2001200520046b3602042001200128020020046a3602000b2003450d02200020033602042000410a360200200041086a2004ad220a422086200a84370200200041106a200241c00a6a41a00110dc041a0c5f0b200441011030000b200310230b2000411a3602000c5c0b2006450d5320042d0001210520012003417e6a22063602042001200441026a36020020050d5320064104490d532004280002210b20012003417a6a3602042001200441066a360200200241c8026a2001106e20022802c8020d53200128020420022802cc022205490d532005417f4c0d180240024002400240024020050d004101210c41010d010c580b20051027220c450d0120072802002005490d02200c2001280200200510dc042104200128020422032005490d2d2001200320056b3602042001200128020020056a3602002004450d570b200241c0026a2001106e20022802c002450d020c550b200541011030000b200c10230c540b2007280200410c6e220f410c6c2204417f4c0d1820022802c40221100240024020040d004104210e0c010b20041021220e450d2b0b0240024002400240024002402010450d004100210841002103410021090340200241b8026a2001106e20022802b8020d03200128020420022802bc022204490d032004417f4c0d1f0240024020040d004101210d0c010b20041027220d450d3f20072802002004490d03200d2001280200200410dc041a200128020422062004490d332001200620046b3602042001200128020020046a3602000b200941016a210602402009200f470d0020082006200820064b1b220fad420c7e220a422088a70d61200aa722174100480d610240024020090d0020171021210e0c010b200e200320171025210e0b200e450d340b200e20036a2209200d360200200941046a2004ad220a422086200a84370200200841026a21082003410c6a21032006210920102006470d000b0b200e450d57200c450d58200728020022034104490d0220012802002207280000210820012003417c6a22043602042001200741046a36020020044104490d032007280004210d2001200341786a22093602042001200741086a36020041002104200241003a00d009200341776a2103034020092004460d0520024190096a20046a200720046a220641086a2d00003a0000200120033602042001200641096a3602002002200441016a22063a00d0092003417f6a210320062104200641c000470d000b200641ff017141c000490d55200c450d58200241c8096a350200210a200241b0096a290300211120022903c009211620022903a809211520022802cc09210120022903b809211420022802a409210420022802a0092103200228029c0921062002280298092107200228029409210920022802900921172000200b3602042000410b360200200041e0006a200a3e0200200041d8006a2016370200200041c8006a2011370200200041c0006a2015370200200041e4006a2001360200200041d0006a20143702002000413c6a2004360200200041386a2003360200200041346a2006360200200041306a20073602002000412c6a2009360200200041286a2017360200200041246a200d360200200041206a20083602002000411c6a2010360200200041186a200f360200200041146a200e360200200041106a20053602002000410c6a2005360200200041086a200c360200200041e8006a200241c00a6a41c80010dc041a0c600b200d10230b02402009450d00200e210103400240200141046a280200450d00200128020010230b2001410c6a2101200341746a22030d000b0b200f450d55200e10230c550b02402005450d00200c10230b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200f0d530c550b02402005450d00200c10230b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200f0d520c540b200441ff0171450d50200241003a00d0090c500b02402006450d0020012003417e6a3602042001200441026a3602000b2000411a3602000c5a0b2006450d4d20042d0001210520012003417e6a22183602042001200441026a360200200541104b0d4d410e21100240024002400240024002400240024002400240024002400240024002400240024020050e11000102030405060708090a0c0d5d0e0f10000b20024190096a200110d901200228029009411a460d5d200241c00a6a20024190096a41b00110dc041a41b00110212206450d462006200241c00a6a41b00110dc042104200241d0026a200110eb02024020022903d002a7450d00200410db01200410230c5e0b200241e0026a290300210a20022903d8022211422088a721172011a7210b410121100c5c0b200241e8026a2001106e20022802e8020d5c20022802ec022106410221100c5a0b200241f0026a2001106e20022802f0020d5b20072802002204450d5b20022802f4022106200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220941064b0d5b2003410776210e410321100c580b200241f8026a2001106e20022802f8020d5a20072802002204450d5a20022802fc022106200128020022052d0000210320012004417f6a3602042001200541016a360200200341ff0071220941064b0d5a2003410776210e410421100c570b20184104490d592004280002210620012003417a6a3602042001200441066a360200410521100c570b20024190096a200110d901200228029009411a460d58200241c00a6a20024190096a41b00110dc041a41b00110212206450d422006200241c00a6a41b00110dc041a410621100c560b20024190096a200110d901200228029009411a460d57200241c00a6a20024190096a41b00110dc041a41b00110212206450d422006200241c00a6a41b00110dc041a410721100c550b20024190096a200110d901200228029009411a460d56200241c00a6a20024190096a41b00110dc041a41b00110212206450d422006200241c00a6a41b00110dc041a410821100c030b41002105200241003a00e00a2003417e6a2109417d21060340024020092005470d00200541ff0171450d57200241003a00e00a0c570b200241c00a6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00a2006417f6a21062007210520074120470d000b200241d0056a41086a200241cf0a6a290000220a370300200320076b2203417e6a4104490d5520022f00c10a2109200241d70a6a2900002111200241df0a6a2d0000210f20022800c30a210620022d00c00a210e20022900c70a2116200420076a220441026a280000210d20012003417a6a22053602042001200441066a220736020020054104490d552009410876210c200728000021192001200341766a36020420012004410a6a3602002016422088a721172016a7210b410921100c540b41002105200241003a00e00a2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d56200241003a00e00a0c560b200241c00a6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00a2003417f6a21032006210520064120470d000b200241d0056a41086a200241cf0a6a290000220a37030020022f00c10a2209410876210c20022900c70a2216422088a72117200241d70a6a2900002111200241df0a6a2d0000210f20022800c30a210620022d00c00a210e2016a7210b410a21100c530b20024180036a2001106e2002280280030d532002280284032106410b21100b410021174200210a4100210b410021194100210d410021080c510b20024198036a2001106e2002280298030d51200228029c03210620024190036a2001106e2002280290030d51200228029403210b20024188036a2001106e2002280288030d51200228028c032117410c21100c500b41002105200241003a00e00a2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d52200241003a00e00a0c520b200241c00a6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00a2003417f6a21032006210520064120470d000b200241d0056a41086a200241cf0a6a290000220a37030020022f00c10a2209410876210c20022900c70a2216422088a72117200241d70a6a2900002111200241df0a6a2d0000210f20022800c30a210620022d00c00a210e2016a7210b410d21100c4f0b41002105200241003a00e00a2003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d51200241003a00e00a0c510b200241c00a6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00a2003417f6a21032006210520064120470d000b200220022800c30a22063600bb08200220022f00c10a22093b00b908200220022d00c00a220e3a00b8082009410876210c20022900c70a2216422088a72117410f2110200241c00a6a410f6a290000210a200241d70a6a2900002111200241df0a6a2d0000210f2016a7210b0c4e0b41002105200241003a00e00a2003417e6a21092003417d6a21060340024020092005470d00200541ff0171450d50200241003a00e00a0c500b200241c00a6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00a2006417f6a21062007210520074120470d000b200241e8056a200241df0a6a2d00003a0000200241e0056a200241d70a6a290000370300200241d8056a200241c00a6a410f6a290000220a37030020024198086a410f6a200a3c0000200220022800c30a36009b08200220022f00c10a3b009908200220022d00c00a3a009808200220022900c70a37009f082003417e6a2007460d4e200241e1056a290000211620022900d905210a200420076a220441026a2d00002108200120063602042001200441036a360200200841064b0d4e200241d8086a41086a20024198086a41086a2903003703002002200a3e02e808200241ee086a200a4230883c0000200241ec086a200a4220883d0100200220022903980822153703d808200a4238882016420886220a8442ffffffff0f83200a428080808070838421112016423888a7210f20022900df082216422088a72117200241e7086a290000210a20022d00d908210920022d00da08210c20022800db0821062015a7210e2016a7210b411021100c4d0b411121100c4c0b20024190096a200110d20320022d0090094105470d0e2000411a3602000c580b20024190096a200110d20320022d0090094105470d0e2000411a3602000c570b2006450d4620042d0001210520012003417e6a360204410221032001200441026a360200200541054b0d460240024002400240024020050e06001401020304000b20024190096a2001107e2002280290092204450d4a20024198096a28020021072002280294092106200241a0036a200110eb0220022903a003a7450d122006450d4a200410230c4a0b20024190096a200110d80220022d0090094102460d49200220022902940922153703d8082002419c096a2902002111200241a4096a2902002116200241ac096a290200210a200228029009210420022802dc0821072015a72106410321030c120b410421030c110b410521030c100b20024190096a200110d80220022d0090094102460d46200220022902940922153703d8082002419c096a2902002111200241a4096a2902002116200241ac096a290200210a200228029009210420022802dc0821072015a72106410621030c0f0b2006450d4420042d0001210520012003417e6a3602042001200441026a360200200541034b0d440240024002400240024020050e0400010203000b41002105200241003a00f8082003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d4a200241003a00f8080c4a0b200241d8086a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f8082003417f6a21032006210520064120470d000b200241b8086a41186a200241d8086a41186a290300220a37030020024190096a41086a200241d8086a41086a29030037030020024190096a41106a200241d8086a41106a29030037030020024190096a41186a200a370300200241cf096a200241ef056a280000360000200241c8096a200241d0056a41186a290000370300200241c0096a200241d0056a41106a290000370300200241b8096a200241d0056a41086a290000370300200220022903d80837039009200220022900d0053703b009410121010c030b41002105200241003a00f8082003417e6a21072003417d6a21030340024020072005470d00200541ff0171450d49200241003a00f8080c490b200241d8086a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f8082003417f6a21032006210520064120470d000b200241b8086a41186a200241d8086a41186a290300220a37030020024190096a41086a200241d8086a41086a29030037030020024190096a41106a200241d8086a41106a29030037030020024190096a41186a200a370300200241cf096a200241ef056a280000360000200241c8096a200241d0056a41186a290000370300200241c0096a200241d0056a41106a290000370300200241b8096a200241d0056a41086a290000370300200220022903d80837039009200220022900d0053703b009410221010c020b41002105200241003a00f005410220036b21092003417d6a210603400240200920056a0d00200541ff0171450d48200241003a00f0050c480b200241d0056a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00f0052006417f6a21062007210520074120470d000b200241d8086a41086a200241d0056a41086a290300370300200241d8086a41106a200241d0056a41106a290300370300200241d8086a41186a200241d0056a41186a290300370300200220022903d0053703d80841002105200241003a00f005200420076a2109200720036b41026a210303400240200320056a0d00200541ff0171450d48200241003a00f0050c480b200241d0056a20056a200920056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00f0052006417f6a21062004210520044120470d000b200241b8086a41186a200241d0056a41186a290300220a37030020024198086a41086a2201200241d0056a41086a29030037030020024198086a41106a2204200241d0056a41106a29030037030020024198086a41186a2203200a37030020024190096a41186a200241d8086a41186a29030037030020024190096a41106a200241d8086a41106a29030037030020024190096a41086a200241d8086a41086a290300370300200220022903d00537039808200220022903d80837039009200241c8096a2003290300370300200241c0096a2004290300370300200241b8096a200129030037030020022002290398083703b009200241d2096a20024197086a2d00003a0000200220022f0095083b01d009410321010c010b200241b8086a2001107e20022802b808450d45200241e3086a200241b8086a41086a280200360000200241a7096a200241d0056a41086a290200370000200241af096a200241e0056a290200370000200241b7096a200241e8056a290200370000200241bf096a200241f0056a290200370000200241c7096a200241f8056a290200370000200241cf096a20024180066a280200360000200220022903b8083700db08200220022902d00537009f09200220022900d808370390092002200241df086a29000037009709410421010b200241f0066a20024190096a41c30010dc041a200020013a000420004111360200200041056a200241f0066a41c30010dc041a200041c8006a200241c00a6a41e80010dc041a0c550b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0002400240024020050e03000102000b200241b8036a200110eb0220022903b803a70d02200241c8036a290300210a20022903c003211120024190096a200110d80220022d0090094102460d02200241f8066a2002419c096a29020037030020024180076a200241a4096a29020037030020024188076a200241ac096a29020037030020022002290294093703f0062002280290092101410121040c450b200241d0036a2001106e20022802d0030d0120022802d4032101200241f0066a41186a20024190096a41186a290300370300200241f0066a41106a20024190096a41106a290300370300200241f0066a41086a20024190096a41086a29030037030020022002290390093703f006410221040c440b200241d8036a2001106e20022802d8030d0020022802dc032101200241f0066a41186a20024190096a41186a290300370300200241f0066a41106a20024190096a41106a290300370300200241f0066a41086a20024190096a41086a29030037030020022002290390093703f006410321040c430b2000411a3602000c540b2006450d4020042d0001210520012003417e6a22063602042001200441026a360200200541014b0d4002400240024020050e020001000b41002105200241003a00e00a410220036b21092003417d6a210603400240200920056a0d00200541ff0171450d44200241003a00e00a0c440b200241c00a6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00a2006417f6a21062007210520074120470d000b200241d8056a200241cf0a6a290000370300200241e0056a200241d70a6a290000370300200241e8056a200241df0a6a2d00003a0000200220022900c70a3703d00520022800c30a210820022f00c10a210d20022d00c00a210e41002105200241003a00810b200420076a2109200720036b41026a210303400240200320056a0d00200541ff0171450d44200241003a00810b0c440b200241c00a6a20056a200920056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00810b2006417f6a210620042105200441c100470d000b200241a7086a200241d0056a41086a2d00003a00002002200836009b082002200d3b0099082002200e3a009808200220022903d00537009f08200241ff0a6a3300002116200241e70a6a290000211520022900f70a211420022900df0a211320022900ef0a211220022800db0a210120022800d70a210420022800d30a210320022800cf0a210520022800cb0a210620022800c70a210720023502c00a211a20023301c40a211b20023100c60a211c200241e1056a290000211120022900d905210a200241d8086a41086a20024198086a41086a29030037030020022002290398083703d8082011423888201a201b201c421086844220868442088684211a200a4238882011420886842111410121090c010b200241003a00d40a2006450d4120042d0002210520012003417d6a22063602042001200441036a360200200241013a00d40a200220053a00c00a2006450d4020042d0003210520012003417c6a22063602042001200441046a360200200241023a00d40a200220053a00c10a2006450d4020042d0004210520012003417b6a22063602042001200441056a360200200241033a00d40a200220053a00c20a2006450d4020042d0005210520012003417a6a22063602042001200441066a360200200241043a00d40a200220053a00c30a2006450d4020042d000621052001200341796a22063602042001200441076a360200200241053a00d40a200220053a00c40a2006450d4020042d000721052001200341786a22063602042001200441086a360200200241063a00d40a200220053a00c50a2006450d4020042d000821052001200341776a22063602042001200441096a360200200241073a00d40a200220053a00c60a2006450d4020042d000921052001200341766a220636020420012004410a6a360200200241083a00d40a200220053a00c70a2006450d4020042d000a21052001200341756a220636020420012004410b6a360200200241093a00d40a200220053a00c80a2006450d4020042d000b21052001200341746a220636020420012004410c6a3602002002410a3a00d40a200220053a00c90a2006450d4020042d000c21052001200341736a220636020420012004410d6a3602002002410b3a00d40a200220053a00ca0a2006450d4020042d000d21052001200341726a220636020420012004410e6a3602002002410c3a00d40a200220053a00cb0a2006450d4020042d000e21052001200341716a220636020420012004410f6a3602002002410d3a00d40a200220053a00cc0a2006450d4020042d000f21052001200341706a22063602042001200441106a3602002002410e3a00d40a200220053a00cd0a2006450d4020042d0010210520012003416f6a22063602042001200441116a3602002002410f3a00d40a200220053a00ce0a2006450d4020042d0011210520012003416e6a22063602042001200441126a360200200241103a00d40a200220053a00cf0a2006450d4020042d0012210520012003416d6a22063602042001200441136a360200200241113a00d40a200220053a00d00a2006450d4020042d0013210520012003416c6a22063602042001200441146a360200200241123a00d40a200220053a00d10a2006450d4020042d0014210520012003416b6a22063602042001200441156a360200200241133a00d40a200220053a00d20a2006450d4020042d0015210520012003416a6a22063602042001200441166a360200200241f0066a41086a2207200241c00a6a41086a290300370300200220053a00d30a200220022903c00a3703f00620064110490d4120022802d00a21052004411e6a290000211a2004290016211120012003415a6a3602042001200441266a360200200241d8086a41086a2007290300370300200220022903f0063703d8082005ad210a410221090b200241b8086a41086a200241d8086a41086a290300221b370300200220022903d808221c3703b8082000411f6a200a4230883c00002000411d6a200a4220883d00002000200a3e0019200041e8006a20163e0200200041e0006a2014370200200041d0006a2015370200200041c8006a2013370200200041286a201a370200200041206a2011370200200041086a20093a0000200041133602002000201c370009200041116a201b370000200041d8006a2012370200200041c4006a2001360200200041c0006a20043602002000413c6a2003360200200041386a2005360200200041346a2006360200200041306a2007360200200041f0006a200229039009370300200041f8006a20024190096a41086a29030037030020004180016a200241a0096a29030037030020004188016a200241a8096a29030037030020004190016a20024190096a41206a29030037030020004198016a20024190096a41286a290300370300200041a0016a20024190096a41306a290300370300200041a8016a20024190096a41386a2903003703000c530b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d0020024190096a2001107f20022802900922010d0d0b2000411a3602000c520b024002402006450d0020042d0001210520012003417e6a3602042001200441026a3602002005450d010b2000411a3602000c520b20004115360200200041046a200241c00a6a41ac0110dc041a0c510b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541054b0d0002400240024002400240024020050e06000102030405000b200241e8036a2001106e20022802e8030d0520022802ec032104200241e0036a2001106e20022802e0030d0520022802e4032105410121010c410b200241a0046a2001106e20022802a0040d0420022802a404210420024198046a2001106e2002280298040d04200228029c04210520024190046a2001106e2002280290040d04200228029404210320024188046a2001106e2002280288040d04200228028c042106200241f0036a200110eb0220022903f003a70d0420022903f803210a200241f0066a41106a200241f0036a41106a2903003703002002200a3703f806200220063602f006410221010c400b200241d0046a2001106e20022802d0040d0320022802d4042104200241c8046a2001106e20022802c8040d0320022802cc042105200241c0046a2001106e20022802c0040d0320022802c4042103200241a8046a200110eb0220022903a804a70d03200241b8046a290300210a200220022903b0043703f0062002200a3703f80641032101410021074200210a410021090c3f0b20024190096a200110d80220022d0090094102460d022002200241ac096a290200370380072002200241a4096a2902003703f80620022002419c096a2902003703f006200229029409220a422088a721032002280290092104200aa72105410421010c3e0b200241e8046a2001106e20022802e8040d0120022802ec04210e200241e0046a2001106e20022802e0040d0120022802e404210941002103200241003a00b0092007280200417f6a21040240024002400240024003402004417f460d0120024190096a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00b0092004417f6a21042005210320054120470d000b200241d8056a2002419f096a290000370300200241e0056a200241a7096a290000370300200241e8056a200241af096a2d00003a000020022002290097093703d005200228009309210420022f009109210820022d009009210d200241d8046a2001106e20022802d8040d06200128020420022802dc042206490d062006417f4c0d1420060d01410121030c020b200341ff0171450d05200241003a00b0090c050b200610272203450d0120072802002006490d0220032001280200200610dc041a200128020422052006490d272001200520066b3602042001200128020020066a3602000b2003450d03200241f9066a200241e1056a2900003700002002200436009b08200220022903d005221137009f08200220022900d9053700f1062002200e36028407200241003b0182072002200241d0056a41086a2d00003a00f00620084180fe037141087621072006ad4220862003ad84210a20022800a30821032011a72105410521010c3f0b200641011030000b200310230c010b200241f8046a2001106e20022802f8040d0020022802fc042104200241f0046a2001106e20022802f0040d00200128020420022802f4042203490d002003417f4c0d0e024002400240024020030d004101210541010d010c040b200310272205450d0120072802002003490d0220052001280200200310dc042106200128020422072003490d272001200720036b3602042001200128020020036a3602002006450d030b200220033602f00641062101410021064200210a0c3e0b200341011030000b200510230b2000411a3602000c500b2006450d3920042d0001210520012003417e6a221d3602042001200441026a36020041062108200541064b0d3902400240024002400240024002400240024002400240024020050e0700010203043d05000b20024190056a2001106e2002280290050d4420072802002203450d442002280294052109200128020022052d0000210420012003417f6a3602042001200541016a360200200441014b0d444100210b0240024020040e020100010b4101210b0b20024188056a2001106e2002280288050d442001280204200228028c05220d490d44200d417f4c0d17024002400240200d0d004101210c41010d010c470b200d1027220c450d012007280200200d490d45200c2001280200200d10dc04210420012802042203200d490d3020012003200d6b36020420012001280200200d6a3602002004450d460b20024180056a2001106e2002280280050d4320012802042002280284052210490d432010417f4c0d1820100d06410121170c070b200d41011030000b20024198056a2001106e2002280298050d43200228029c052109410221080c3b0b201d4104490d422004280002210920012003417a6a3602042001200441066a360200410321080c3a0b200241a8056a2001106e20022802a8050d41200128020420022802ac052206490d412006417f4c0d1402400240024020060d004101210941010d010c440b200610272209450d0120072802002006490d3f20092001280200200610dc042104200128020422032006490d2e2001200320066b3602042001200128020020066a3602002004450d430b200241a0056a2001106e20022802a0050d3d200128020420022802a405220e490d3d200e417f4c0d15200e0d064101210d0c070b200641011030000b200241b0056a2001106e20022802b0050d4020022802b405210f41002104200241003a00b00920072802002107417f2103034020072004460d3a20024190096a20046a200128020022062d00003a00002001200720036a3602042001200641016a3602002002200441016a22053a00b0092003417f6a21032005210420054120470d000b200241e8056a200241af096a2d00003a0000200241e0056a200241a7096a290000370300200241d8056a20024190096a410f6a290000220a37030020024198086a410f6a200a3c0000200220022800930936009b08200220022f0091093b009908200220022d0090093a009808200220022900970937009f08200241e1056a290000211320022900d905211441002104200241003a00b009200720056b2109200720036a21030340024020092004470d00200441ff0171450d42200241003a00b0090c420b20024190096a20046a200620046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00b0092003417f6a21032005210420054120470d000b200241e8056a2201200241af096a2d00003a0000200241d8086a41086a20024198086a41086a29030037030020022002280093093600bb08200220022f0091093b00b908200220022d0090093a00b80820022002290097093700bf0820022002419f096a2900003700c70820022002290398083703d808200241a7096a290000211620013100002115200220143e02e808200241ee086a20144230883c0000200241ec086a20144220883d0100200241b8086a41086a350200200241c4086a330100200241c6086a310000421086844220868442088620022903b808220a4238888421112013423888200a42088684210a2014423888201342088684a7210e2014421888a721172013421888a7211020022800e708210d20022900c708211420022800e308210620022800df08210c20022800db08210920022d00da08211920022d00d908211820022d00d808210b410521080c380b200241b8056a2001106e20022802b8050d3f20022802bc052109410721080c370b201010272217450d0120072802002010490d3b20172001280200201010dc041a200128020422042010490d2a2001200420106b3602042001200128020020106a3602000b2017450d3b4200210a410121084100210f2010210e42002111200d21060c350b201041011030000b200e1027220d450d012007280200200e490d35200d2001280200200e10dc041a20012802042204200e490d2820012004200e6b36020420012001280200200e6a3602000b200d450d35420021164104210841002119200e2117420021152006210c0c320b200e41011030000b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0002400240024020050e03000102000b20024190096a200110d901200228029009411a460d02200241c00a6a20024190096a41b00110dc041a41b001102122040d0c41b00141081030000b200241c00a6a200110d8024102210120022d00c00a4102460d01200241f0086a200241dc0a6a290200220a370300200241e8086a200241d40a6a2902002211370300200241cc0a6a290200211620022802c00a210420022902c40a21150c0c0b200241c00a6a200110d80220022d00c00a4102460d00200241d8056a200241cc0a6a290200370300200241e0056a200241d40a6a290200370300200241e8056a200241dc0a6a290200370300200220022902c40a3703d00520022802c00a210420024190096a200110d901200228029009411a460d00200241c00a6a20024190096a41b00110dc041a41b00110212203450d302003200241c00a6a41b00110dc041a200241d8086a41186a200241d0056a41186a290300220a370300200241d8086a41106a200241d0056a41106a2903002211370300200241d8056a290300211620022903d0052115410321010c0b0b2000411a3602000c4e0b2006450d0220042d0001210520012003417e6a360204410221092001200441026a360200200541034b0d020240024002400240024020050e0400030102000b200241c0056a2001106e20022802c0050d06200128020420022802c4052204490d062004417f4c0d0e024002400240024020040d00410121060c010b200410272206450d0120072802002004490d0220062001280200200410dc041a200128020422032004490d2c2001200320046b3602042001200128020020046a3602000b2006450d08200241d0056a41106a20024190096a41106a290200370300200241d0056a41086a20024190096a41086a29020037030020022002290290093703d00541012109200421080c040b200441011030000b200610230c060b20024190096a200110d80220022d0090094102460d05200241d0056a41086a200241a4096a290200370300200241e0056a200241ac096a29020037030020022002419c096a2902003703d00520024190096a41086a280200210420022802940921082002280290092106410321090c010b20024190096a200110d80220022d0090094102460d04200241f0066a41086a200241a4096a29020037030020024180076a200241ac096a29020037030020022002419c096a2902003703f00620024190096a41086a280200210420022802940921082002280290092106200241c8056a2001106e20022802c8050d04200128020420022802cc052203490d042003417f4c0d0c0240024020030d004101210d41010d010c060b20031027220d450d0220072802002003490d04200d2001280200200310dc042105200128020422072003490d292001200720036b3602042001200128020020036a3602002005450d050b200241d0056a41106a200241f0066a41106a290300370300200241d0056a41086a200241f0066a41086a290300370300200220022903f0063703d005410421090b200241d8086a41106a200241d0056a41106a290300220a370300200241d8086a41086a200241d0056a41086a2903002211370300200220022903d00522163703d808200041106a20043602002000410c6a2008360200200041086a20063602002000200936020420004119360200200041146a20163702002000411c6a2011370200200041246a200a370200200041346a2003360200200041306a20033602002000412c6a200d360200200041386a200241c00a6a41f80010dc041a0c4e0b200341011030000b2000411a3602000c4c0b200d10230b2000411a3602000c4a0b200241f0066a41206a20024190096a41206a290300220a370300200241f0066a41186a20024190096a41186a2903002211370300200241f0066a41106a20024190096a41106a2903002216370300200241f0066a41086a20024190096a41086a2903002215370300200220022903900922143703f0062000410e360200200020143702042000410c6a2015370200200041146a20163702002000411c6a2011370200200041246a200a3702002000412c6a200241c00a6a41840110dc041a0c490b200241f0066a41206a20024190096a41206a290300220a370300200241f0066a41186a20024190096a41186a2903002211370300200241f0066a41106a20024190096a41106a2903002216370300200241f0066a41086a20024190096a41086a2903002215370300200220022903900922143703f0062000410f360200200020143702042000410c6a2015370200200041146a20163702002000411c6a2011370200200041246a200a3702002000412c6a200241c00a6a41840110dc041a0c480b200241b0036a290300211620022903a8032111410121030b20004110360200200041206a2016370200200041186a2011370200200041286a200a370200200041146a2007360200200041106a20063602002000410c6a2004360200200041086a2003360200200041306a200241c00a6a41800110dc041a0c460b200041086a2002290294093702002000200136020420004114360200200041106a200241c00a6a41a00110dc041a0c450b2004200241c00a6a41b00110dc041a410121010b2000200136020420004118360200200041246a200a3702002000411c6a2011370200200041146a20163702002000410c6a20153702002000412c6a2003360200200041086a2004360200200041306a200241f0066a41800110dc041a0c430b102f000b20042003103e000b20042003103e000b200441041030000b20032004103e000b20042008103e000b201041041030000b200441041030000b20042006103e000b200b41041030000b20042003103e000b200441041030000b200d41041030000b200441041030000b200841041030000b20042006103e000b20042005103e000b20052003103e000b200441041030000b20042006103e000b201741041030000b20062005103e000b20032007103e000b200d2003103e000b20062003103e000b20102004103e000b200e2004103e000b20042003103e000b20032007103e000b200341011030000b200441011030000b200441011030000b41b00141081030000b41b00141081030000b41b00141081030000b41b00141081030000b41b00141081030000b200020193a0007200020183a00062000200b3a0005200020083a000420004117360200200041c4006a20153e02002000413c6a20163702002000412c6a2011370200200041246a200a370200200041c8006a200f360200200041346a2014370200200041206a20103602002000411c6a200e360200200041186a2017360200200041146a200d360200200041106a20063602002000410c6a200c360200200041086a2009360200200041cc006a200241c00a6a41e40010dc041a0c1d0b200441ff0171450d06200241003a00b0090c060b200d10230b2006450d040b200910230c030b201710230b200d450d010b200c10230b2000411a3602000c150b200241d8086a41106a200241f0066a41106a2903002211370300200241d8086a41086a200241f0066a41086a2903002216370300200220022903f00622153703d808200041146a2003360200200041106a20053602002000410c6a2004360200200020073a000b200020083a000a2000200d3a0009200041086a20013a000020004116360200200041186a2015370200200041206a2016370200200041286a20113702002000413c6a2006360200200041346a200a370200200041306a2009360200200041c0006a200241c00a6a41f00010dc041a0c140b200241003a00d40a0b2000411a3602000c120b200241d0056a41186a200241f0066a41186a2903002216370300200241d0056a41106a200241f0066a41106a2903002215370300200241d0056a41086a200241f0066a41086a2903002214370300200220022903f00622133703d005200041386a200a370200200041306a20113702002000410c6a2001360200200041086a200436020020004112360200200041106a2013370200200041186a2014370200200041206a2015370200200041286a2016370200200041c0006a200241c00a6a41f00010dc041a0c110b2000411a3602000c100b2000411a3602000c0f0b410021174200210a0c010b410021174200210a0b200041003b012a200020083a00292000200c3a000b200020093a000a2000200e3a00092000410d360200200041186a200a370200200041346a4100360200200041306a20193602002000412c6a200d360200200041286a200f3a0000200041206a20113702002000410c6a2006360200200041086a20103a0000200041106a2017ad422086200bad84370200200041386a200241f0066a41f80010dc041a0c0c0b2000411a3602000c0b0b02402005450d00200c10230b02402010450d002010410c6c2104200e210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200f450d020b200e10230c010b2005450d00200c10230b2000411a3602000c070b2000411a3602000c060b20024198086a41186a200241b8086a41186a290300221a37030020024198086a41106a200241b8086a41106a290300221b37030020024198086a41086a200241b8086a41086a290300221c370300200220022903b808221e37039808200041e0006a2014370200200041d8006a2015370200200041c8006a2012370200200041c0006a2013370200200041386a200a370200200041306a20113702002000410c6a2004360200200041086a200136020020004104360200200041106a201e370200200041186a201c370200200041206a201b370200200041286a201a370200200041d0006a2016370200200041e8006a200241c00a6a41c80010dc041a0c050b2000411a3602000c040b200510230b2000411a3602000c020b102a000b20004100360200200041106a200a3702002000410c6a2005360200200041086a2009360200200041186a200241c00a6a41980110dc041a0b200241f00b6a24000b930b01057f024002402000280200220141184b0d0002400240024002400240024002400240024002400240024002400240024020010e1900101010100102100310040510060708090a10100b100c0d0e000b200041086a10dd030f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a2103034002402002410c6a2802002204450d0020022802042101200441246c210403400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012004415c6a22040d000b0b200241f0006a21010240200241086a280200450d00200228020410230b2001210220012003470d000b0b200041086a280200450d0e200028020410230f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0e024020014106470d00200041106a280200450d0f2000410c6a28020010230f0b200041106a280200450d0e2000410c6a28020010230f0b200041146a280200450d0d200041106a28020010230f0b200041086a280200450d0c200028020410230f0b200041086a280200450d0b200028020410230f0b02402000410c6a280200450d00200041086a28020010230b02402000411c6a2802002204450d00200041146a28020021012004410c6c210403400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200041186a280200450d0a200028021410230f0b200041086a2d0000417f6a220141074b0d09024002400240024020010e08000d0d0d0d010203000b2000410c6a220128020010da01200128020010230f0b2000410c6a220128020010da01200128020010230f0b2000410c6a220128020010da01200128020010230f0b2000410c6a220128020010da01200128020010230f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a28020010230f0b200041086a220128020010da01200128020010230f0b2000410c6a220128020010da01200128020010230f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a28020010230f0b200041086a220128020010da01200128020010230f0b2000410c6a220128020010da01200128020010230f0b200041086a2802004101470d06200041106a280200450d062000410c6a28020010230f0b20002d00044104490d052000410c6a280200450d05200041086a28020010230f0b02402000410c6a2802002204450d0020002802042101200441d0016c210403402001106c200141d0016a2101200441b07e6a22040d000b0b200041086a280200450d04200028020410230f0b200041086a2d000022014105490d03024020014105470d00200041386a280200450d04200041346a28020010230f0b200041146a280200450d03200041106a28020010230f0b20002d0004417f6a220141034b0d020240024020010e0400040401000b0240200041106a280200450d002000410c6a28020010230b2000411c6a280200450d03200041186a28020010230c030b02402000410c6a280200450d00200041086a28020010230b200041186a280200450d02200041146a28020010230f0b02402000280204220141024b0d00024020010e03030003030b200041086a220128020010da01200128020010230f0b2000412c6a220128020010da01200128020010230f0b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a28020010230f0b200041306a280200450d002000412c6a28020010230f0b0bc60d01057f024002402000280200220141184b0d0002400240024002400240024002400240024002400240024002400240024020010e1900101010100102100310040510060708090a10100b100c0d0e000b0240200041086a280200220141064b0d00024002400240024020010e0714140014010203140b200041106a280200450d132000410c6a28020010230f0b200041106a280200450d122000410c6a28020010230f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200241686a22020d000b0b200041106a280200450d11200028020c10230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a280200450d10200028020c10230f0b200041106a280200450d0f2000410c6a28020010230f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d00200328020410230b2001210320012004470d000b0b200041086a280200450d0e200028020410230f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0e024020014106470d00200041106a280200450d0f2000410c6a28020010230f0b200041106a280200450d0e2000410c6a28020010230f0b200041146a280200450d0d200041106a28020010230f0b200041086a280200450d0c200028020410230f0b200041086a280200450d0b200028020410230f0b02402000410c6a280200450d00200041086a28020010230b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041186a280200450d0a200028021410230f0b200041086a2d0000417f6a220141074b0d09024002400240024020010e08000d0d0d0d010203000b2000410c6a220128020010db01200128020010230f0b2000410c6a220128020010db01200128020010230f0b2000410c6a220128020010db01200128020010230f0b2000410c6a220128020010db01200128020010230f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a28020010230f0b200041086a220128020010db01200128020010230f0b2000410c6a220128020010db01200128020010230f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a28020010230f0b200041086a220128020010db01200128020010230f0b2000410c6a220128020010db01200128020010230f0b200041086a2802004101470d06200041106a280200450d062000410c6a28020010230f0b20002d00044104490d052000410c6a280200450d05200041086a28020010230f0b02402000410c6a2802002202450d0020002802042101200241d0016c210203402001106c200141d0016a2101200241b07e6a22020d000b0b200041086a280200450d04200028020410230f0b200041086a2d000022014105490d03024020014105470d00200041386a280200450d04200041346a28020010230f0b200041146a280200450d03200041106a28020010230f0b20002d0004417f6a220141034b0d020240024020010e0400040401000b0240200041106a280200450d002000410c6a28020010230b2000411c6a280200450d03200041186a28020010230c030b02402000410c6a280200450d00200041086a28020010230b200041186a280200450d02200041146a28020010230f0b02402000280204220141024b0d00024020010e03030003030b200041086a220128020010db01200128020010230f0b2000412c6a220128020010db01200128020010230f0b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a28020010230f0b200041306a280200450d002000412c6a28020010230f0b0bd00401087f230041f0006b22022400200241d0006a41086a220341aefcc400ad42808080809001841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341f0f3c000ad42808080809001841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22082001290300370300200241286a41106a22092007290300370300200241286a41086a2201200329030037030020022002290350370328024041c00010212204450d00200420022903083700002004200229031837001020042002290328370020200441086a2005290300370000200441186a2006290300370000200441286a2001290300370000200441306a2009290300370000200441386a2008290300370000200241d0006a200441c00010dd01200120032903003703002006200241d0006a411c6a2802003602002002200229035037032820022002290264370318024020022802602203450d002000200229032837030020002002290318370214200041086a200241286a41086a2903003703002000411c6a200241186a41086a2802003602000b2000200336021020041023200241f0006a24000f0b41c00041011030000bf20202027f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602100c010b200328021421042003200341106a41086a2802002202360224200320013602200240024020024110490d002003200241706a3602242003200141106a360220200141086a290000210520012900002106200341c8006a200341206a107e20032802482202450d00200329024c2107200020053703082000200637030020002007370214200020023602100c010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360210200328022c450d00200328022810230b2004450d00200110230b200341e0006a24000b890606027f017e057f027e017f027e230041f0006b22032400200341d0006a41086a220441d5fbc400ad428080808080018422051003220641086a2900003703002003200629000037035020061023200341306a41086a2207200429030037030020032003290350370330200441eea0c200ad4280808080f001841003220641086a2900003703002003200629000037035020061023200341c0006a41086a2208200429030037030020032003290350370340200341d0006a200010ac010240024041c00010212206450d00200620032903303700002006200329034037001020062003290050370020200641086a2007290300370000200641186a2008290300370000200641286a2004290000370000200641306a200341d0006a41106a2209290000370000200641386a200341d0006a41186a220a290000370000200341186a200641c000108902200341186a41106a290300210b2003290320210c2003280218210d20061023200420051003220641086a29000037030020032006290000370350200610232007200429030037030020032003290350370330200441e3a0c200ad4280808080b001841003220641086a29000037030020032006290000370350200610232008200429030037030020032003290350370340200341d0006a200010ac0141c00010212206450d01200620032903303700002006200329034037001020062003290050370020200641086a200341306a41086a290300370000200641186a200341c0006a41086a290300370000200641286a200341d0006a41086a290000370000200641306a2009290000370000200641386a200a2900003700002003200641c000108902200341106a290300210e20032903082105200328020021042006102320002005420020041b220f2001200c4200200d1b22052005200156200b4200200d1b220b200256200b2002511b22061b22017c220c200e420020041b2002200b20061b22027c200c200f54ad7c10dc022000200520017d200b20027d2005200154ad7d10ca02200341f0006a24000f0b41c00041011030000b41c00041011030000b840401067f230041f0006b22022400200241d0006a41086a220341aefcc400ad42808080809001841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341ccf3c000ad42808080809001841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c00010212203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010bb010240024020022802502204450d0020002002290254370204200020043602000c010b20004100360208200042013702000b20031023200241f0006a24000f0b41c00041011030000b940701067f23004190016b22022400200241206a200141206a280200360200200241186a200141186a290200370300200241106a200141106a290200370300200241086a200141086a29020037030020022001290200370300200241e8006a41086a220141aefcc400ad42808080809001841003220341086a2900003703002002200329000037036820031023200241286a41086a200129030037030020022002290368370328200141bdedc000ad4280808080e000841003220341086a2900003703002002200329000037036820031023200241386a41086a20012903003703002002200229036837033802400240410410212203450d0020024284808080c00037026c20022003360268200320022802003600002002410472200241e8006a1071200228026c2104200241e8006a41186a2205200235027042208620022802682206ad841001220341186a290000370300200241e8006a41106a2207200341106a2900003703002001200341086a2900003703002002200329000037036820031023200241c8006a41186a2005290300370300200241c8006a41106a2007290300370300200241c8006a41086a20012903003703002002200229036837034802402004450d00200610230b41c00010212201450d01200120022903283700002001200229033837001020012002290348370020200141086a200241286a41086a290300370000200141186a200241386a41086a290300370000200141286a200241c8006a41086a2204290300370000200141306a200241d8006a290300370000200141386a200241c8006a41186a290300370000200241c00036022c20022001360228200241c8006a2001ad4280808080800884100410900102400240200228024822030d0041002103410021040c010b200228024c2107024002402004280200450d0020032d0000220441ff0071220541064b0d00200441077621040c010b20024100360270200242013703682002410c36023c2002200241286a3602382002200241e8006a36028c01200241146a41013602002002420137020420024198c2c3003602002002200241386a3602102002418c016a41b8a3c5002002102e1a200235027042208620023502688410080240200228026c450d00200228026810230b410221040b02402007450d00200310230b4100200520044102461b2103200441017121040b20011023200020033a0001200020043a000020024190016a24000f0b410441011030000b41c00041011030000bc50d04017f047e137f087e230041a0046b22052400024002400240024020040d00420021064200210742002108420021090c010b200541e8016a10e201200541b0026a20052802e801220a20052802f001108a01024020052802ec01450d00200a10230b20054198016a41086a200541b0026a41086a290300220637030020054198016a41106a200541b0026a41106a290300220737030020054198016a41186a200541b0026a41186a220b290300220837030020054198016a41206a200541b0026a41206a220c2d0000220a3a0000200520052903b002220937039801200541c0016a41206a200a3a0000200541c0016a41186a2008370300200541c0016a41106a2007370300200541c0016a41086a2006370300200520093703c001200541e8016a200541c0016a109c014200210842002109420021064200210720052d00a8024107460d002004417f6a210d20054198036a410472210e200541b0026a41c0006a210f420021064200210742002108420021090340200b2007370300200520063703c002200520083703b002200520093703b802200c200541e8016a41c10010dc04211002400240200f2002460d00200f2002412010de040d010b200e2010290200370200200e41086a201041086a2211290200370200200e41106a201041106a2212290200370200200e41186a201041186a2213290200370200200520013602980320054180046a41086a220a41aefcc400ad42808080809001841003220441086a290000370300200520042900003703800420041023200541c0036a41086a2214200a29030037030020052005290380043703c003200a41bdedc000ad4280808080e000841003220441086a290000370300200520042900003703800420041023200541d0036a41086a2215200a29030037030020052005290380043703d003410410212204450d0320054284808080c0003702840420052004360280042004200528029803360000200e20054180046a1071200528028404211620054180046a41186a22172005350288044220862005280280042218ad841001220441186a29000037030020054180046a41106a2219200441106a290000370300200a200441086a290000370300200520042900003703800420041023200541e0036a41186a221a2017290300370300200541e0036a41106a221b2019290300370300200541e0036a41086a221c200a29030037030020052005290380043703e00302402016450d00201810230b41c00010212204450d04200420052903c003370000200420052903d003370010200420052903e003370020200441086a2014290300370000200441186a2015290300370000200441286a201c290300370000200441306a201b290300370000200441386a201a29030037000020054190016a200441c00041014100410010b80120052802900121142004102320144101460d0020052d00900321042017201329000037030020192012290000370300200a2011290000370300200520102900003703800420054180016a20054180046a10e30120054180016a41086a290300211d200529038001211e02400240200420032004200341ff0171491b220441ff01710d002005201e201d420a420010e20420054198036a41186a201729030037030020054198036a41106a201929030037030020054198036a41086a200a290300370300200520052903800437039803200541106a200120054198036a4100200d10e101200541106a41186a290300211f200541106a41086a2903002120200529032021212005290310212220052903002223211e200541086a2903002224211d0c010b200541c0006a201d42002004ad42ff01832223420010e104200541d0006a201e42002023420010e10420054198036a41186a201729030037030020054198036a41106a201929030037030020054198036a41086a200a290300370300200520052903800437039803200541e0006a200120054198036a2004200d10e101200541306a42004200201e420010e104427f200541d0006a41086a2903002223200529034020052903307c7c221f2005290348200529033884420052201f2023547222041b2124427f200529035020041b2123200541e0006a41186a290300211f200541e0006a41086a290300212020052903702121200529036021220b201d20077c201e20067c2207201e54ad7c201f7c200720217c2206200754ad7c2107202420097c202320087c2209202354ad7c20207c200920227c2208200954ad7c21090b200541e8016a200541c0016a109c0120052d00a8024107470d000b0b2000200637031020002008370300200041186a200737030020002009370308200541a0046a24000f0b410441011030000b41c00041011030000bc60303047f017e017f230041d0006b22012400200141c0006a41086a220241aefcc400ad42808080809001841003220341086a2900003703002001200329000037034020031023200141206a41086a2204200229030037030020012001290340370320200241a1edc000ad42808080809002841003220341086a2900003703002001200329000037034020031023200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210302400240024002404120450d004120102122020d01412041011030000b411021030240411010212202450d00200141106a210420022001290300370000200241086a200141086a2903003700000c020b411041011030000b20022001290300370000200241086a200141086a290300370000200141106a210441204110470d010b20022003200341017422064120200641204b1b220610252202450d02200621030b20022004290000370010200241186a200441086a290000370000200041203602082000200336020420002002360200200141d0006a24000f0b102f000b200641011030000bd50504027f017e057f047e230041f0006b22022400200241d0006a41086a220341d5fbc400ad428080808080018422041003220541086a2900003703002002200529000037035020051023200241306a41086a2206200329030037030020022002290350370330200341e3a0c200ad4280808080b001841003220541086a2900003703002002200529000037035020051023200241c0006a41086a2207200329030037030020022002290350370340200241d0006a200110ac010240024041c00010212205450d00200520022903303700002005200229034037001020052002290050370020200541086a2006290300370000200541186a2007290300370000200541286a2003290000370000200541306a200241d0006a41106a2208290000370000200541386a200241d0006a41186a2209290000370000200241186a200541c000108902200241186a41106a290300210a2002290320210b2002290318210c20051023200320041003220541086a29000037030020022005290000370350200510232006200329030037030020022002290350370330200341eea0c200ad4280808080f001841003220541086a29000037030020022005290000370350200510232007200329030037030020022002290350370340200241d0006a200110ac0141c00010212205450d01200520022903303700002005200229034037001020052002290050370020200541086a200241306a41086a290300370000200541186a200241c0006a41086a290300370000200541286a200241d0006a41086a290000370000200541306a2008290000370000200541386a20092900003700002002200541c000108902200241106a29030021042002290308210d20022802002103200510232000200d420020031b220d200b4200200ca722051b7c220b37030020002004420020031b200a420020051b7c200b200d54ad7c370308200241f0006a24000f0b41c00041011030000b41c00041011030000bbe0c07027f017e047f017e077f037e047f230041b0016b2201240020014190016a41086a220241aefcc400ad428080808090018422031003220441086a290000370300200120042900003703900120041023200141286a41086a220520022903003703002001200129039001370328200241bcf3c000ad42808080808002841003220441086a290000370300200120042900003703900120041023200141386a41086a2206200229030037030020012001290390013703382001200036029001200141e8006a41186a220720014190016aad4280808080c0008422081001220441186a290000370300200141e8006a41106a2209200441106a290000370300200141e8006a41086a220a200441086a2900003703002001200429000037036820041023200141c8006a41186a220b2007290300370300200141c8006a41106a220c2009290300370300200141c8006a41086a220d200a29030037030020012001290368370348024002400240024041c00010212204450d00200420012903283700002004200129033837001020042001290348370020200441086a2005290300370000200441186a2006290300370000200441286a200d290300370000200441306a200c290300370000200441386a200b2903003700002004ad4280808080800884100520041023200220031003220441086a290000370300200120042900003703900120041023200520022903003703002001200129039001370328200241ccf3c000ad42808080809001841003220441086a2900003703002001200429000037039001200410232006200229030037030020012001290390013703382001200036029001200720081001220441186a2900003703002009200441106a290000370300200a200441086a2900003703002001200429000037036820041023200b2007290300370300200c2009290300370300200d200a2903003703002001200129036837034841c00010212204450d01200420012903283700002004200129033837001020042001290348370020200441086a200141286a41086a220a290300370000200441186a200141386a41086a2205290300370000200441286a200141c8006a41086a2206290300370000200441306a200141c8006a41106a220b290300370000200441386a200141c8006a41186a220c2903003700002004ad4280808080800884100520041023200141e8006a200010df01200128026c210e2001280268210f024020012802702204450d002004410574210d200141e8006a410472210741aefcc400ad42808080809001842110200f21020340200141086a41186a200241186a2900002203370300200141086a41106a200241106a2900002208370300200141086a41086a200241086a290000221137030020012002290000221237030820072012370200200741086a2011370200200741106a2008370200200741186a20033702002001200036026820014190016a41086a220420101003220941086a290000370300200120092900003703900120091023200a20042903003703002001200129039001370328200441bdedc000ad4280808080e000841003220941086a290000370300200120092900003703900120091023200520042903003703002001200129039001370338410410212209450d0420014284808080c00037029401200120093602900120092001280268360000200720014190016a1071200128029401211320014190016a41186a22142001350298014220862001280290012215ad841001220941186a29000037030020014190016a41106a2216200941106a2900003703002004200941086a290000370300200120092900003703900120091023200c2014290300370300200b201629030037030020062004290300370300200120012903900137034802402013450d00201510230b41c00010212204450d05200241206a2102200420012903283700002004200129033837001020042001290348370020200441086a200a290300370000200441186a2005290300370000200441286a2006290300370000200441306a200b290300370000200441386a200c2903003700002004ad4280808080800884100520041023200d41606a220d0d000b0b0240200e450d00200f10230b200141b0016a24000f0b41c00041011030000b41c00041011030000b410441011030000b41c00041011030000b860901087f230041c0046b2202240020024190036a41086a220341aefcc400ad42808080809001841003220441086a290000370300200220042900003703900320041023200241086a220520032903003703002002200229039003370300200341bcf3c000ad42808080808002841003220441086a290000370300200220042900003703900320041023200241206a41086a220620032903003703002002200229039003370320200220013602d00120024190036a41186a2201200241d0016aad4280808080c000841001220441186a29000037030020024190036a41106a2207200441106a2900003703002003200441086a290000370300200220042900003703900320041023200241e0016a41186a22042001290300370300200241e0016a41106a22012007290300370300200241e0016a41086a2207200329030037030020022002290390033703e001024002400240024041c00010212203450d002003200229030037000020032002290320370010200320022903e001370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241c0003602142002200336021020022003ad428080808080088410041090010240200228020022040d00411a21010c040b200228020421082002200241086a28020022013602d401200220043602d0010240024020014104490d002004280000210520022001417c6a3602d4012002200441046a3602d00120024190036a200241d0016a10d901200228029003411a460d00200241e0016a20024190036a41b00110dc041a024020022802d4012201450d0020022802d00122092d0000210620022001417f6a22073602d4012002200941016a3602d001200641034f0d00200741034b0d02200241e0016a10db010c010b200241e0016a10db010b411a21010c020b2009280001210720022001417b6a3602d4012002200941056a3602d00120022802e0012101200241206a200241e0016a41047241ac0110dc041a200220022800d8013602182002200241db016a28000036001b2001411a460d01200241e0016a200241206a41ac0110dc041a2002200228001b3600db01200220022802183602d8010c020b41c00041011030000b200241003602e801200242013703e0012002410c3602242002200241106a3602202002200241e0016a3602d801200241a4036a4101360200200242013702940320024198c2c300360290032002200241206a3602a003200241d8016a41b8a3c50020024190036a102e1a20023502e80142208620023502e00184100820022802e401450d0020022802e00110230b2008450d00200410230b20024190036a200241e0016a41ac0110dc041a200220022800db01360023200220022802d801360220024002402001411a470d002000411a3602000c010b20002001360200200041046a20024190036a41ac0110dc041a200041b8016a20063a0000200041b4016a2007360200200041b0016a2005360200200020022802203600b901200041bc016a20022800233600000b20031023200241c0046a24000b130020004111360204200041d0f5c0003602000b3400200041aefcc40036020420004100360200200041146a410f360200200041106a41bc93c100360200200041086a42093702000b5f01027f230041c0016b220224002002411a3602080240410110212203450d00200341003a000020004281808080103702042000200336020002402002280208411a460d00200241086a10db010b200241c0016a24000f0b410141011030000bfc0201057f230041c0006b22022400200241206a4200370300200241186a4200370300200241086a41086a4200370300200241003a0028200242003703082002410036023820024201370330200241086a200241306a107102400240024020022d0028220341064b0d000240024002400240024002400240024020030e0700010203040506000b410021040c060b410121040c050b410221040c040b410321040c030b410421040c020b410521040c010b410621040b200220043a003f02400240200228023420022802382203460d00200228023021050c010b200341016a22052003490d03200341017422062005200620054b1b22064100480d030240024020030d002006102121050c010b200228023020032006102521050b2005450d022002200636023420022005360230200228023821030b2002200341016a360238200520036a20043a00000b20002002290330370200200041086a200241306a41086a280200360200200241c0006a24000f0b200641011030000b102a000b3f01017f230041106b22022400200241003602082002420137030041002002105c200041086a200228020836020020002002290300370200200241106a24000b130020004106360204200041f8aec1003602000b3201017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241c093063600000b3101017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241d8043600000b3c01017f02404110102122020d00411041011030000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b3201017f02404104102122020d00410441011030000b20004284808080c000370204200020023602002002418084073600000ba9f40107017f027e017f017e137f027e027f23004190096b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e12000102030405060708090a0b0c0d0e111215000b200341ec046a4101360200200342013702dc04200341d09dc6003602d804200341043602dc01200341849ec6003602d8012003200341d8016a3602e804200341d8046a41a8b8c1001038000b200141106a2903002104200141086a2903002105200141046a28020021062002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d00002115200241026a2f0100211602400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da042003200a3b01d8040c010b200241086a2d00002117200241066a2f01002118200241056a2d0000211920022d0001211a200320073703d80441002102201a41ff01714101460d010b410121024102211941002117410021180b200320073703b003200320083a00af03200320093a00ae032003200a3b01ac032003200b3a00ab032003200c3a00aa032003200d3b01a8032003200e3a00a7032003200f3a00a603200320103b01a403200320113a00a303200320123a00a203200320133b01a003200320143a009f03200320153a009a03200320163b0198032003201841ffff0371410874201741187472201941ff017172220a36009b0302402002450d00410f210841aab0c00021090240024002400240200a0e050001020363000b200328009f03210920032800a30321080c620b410e210841aabac60021090c610b411321084197b0c00021090c600b411121084186b0c00021090c5f0b20034198066a41186a20034198036a41186a29030037030020034198066a41106a20034198036a41106a29030037030020034198066a41086a20034198036a41086a290300370300200320032903980337039806024020054280a094a58d1d5441002004501b450d0041b8b8c1002109410d21080c5f0b200341086a20034198066a2005200410f10102402003280208450d0041c5b8c1002109411a21080c5f0b20034198016a41186a220a420037030020034198016a41106a2208420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad428080808090018422071003221741086a290000370300200320172900003703b0082017102320092002290300370300200320032903b008221b3703b8012003201b37039801200241e49dc100ad4280808080f00184221c1003221741086a290000370300200320172900003703b00820171023200820032903b008221b370300200341f8006a41086a22182009290300370300200341f8006a41106a2219201b370300200341f8006a41186a220b20022903003703002003201b3703c80120032003290398013703782003200341f8006a4120108f012003280204210c2003280200210d200a420037030020084200370300200942003703002003420037039801200220071003221741086a290000370300200320172900003703b0082017102320092002290300370300200320032903b008221b3703b8012003201b370398012002201c1003221741086a290000370300200320172900003703b00820171023200a2002290300221b37030020182009290300370300201920032903b008221c370300200b201b3703002003201c3703c80120032003290398013703782003200c4100200d1b221741016a3602d804200341f8006aad4280808080800484221b200341d8046aad4280808080c00084221c1002200320034198066a3602d801200220071003221841086a290000370300200320182900003703b00820181023200341b8016a41086a22192002290300370300200320032903b0083703b801200241f0f3c000ad42808080809001841003221841086a290000370300200320182900003703b00820181023200341c8016a41086a22182002290300370300200320032903b0083703c801200320173602d80420034198036a41186a220b201c1001220241186a29000037030020034198036a41106a220c200241106a29000037030020034198036a41086a220d200241086a290000370300200320022900003703980320021023200a200b2903003703002008200c2903003703002009200d29030037030020032003290398033703980141c00010212202450d17200220032903b801370000200241086a2019290300370000200220032903c801370010200241186a20182903003700002002200329039801370020200241286a2009290300370000200241306a2008290300370000200241386a200a290300370000411010212209450d1820092005370000200920043700082003429080808080023702dc04200320093602d8044101200341d8046a105c20032802d801200341d8046a107120032802dc0421092002ad428080808080088420033502e00442208620032802d804220aad84100202402009450d00200a10230b20021023200341d8016a41106a20034198066a41086a290300370300200341d8016a41186a20034198066a41106a290300370300200341f8016a20034198066a41186a290300370300200320063602dc01200320173602d80120032003290398063703e0012003200341d8016a3602e80820034198016a41186a220a420037030020034198016a41106a2218420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241d5f3c000ad4280808080b001841003220641086a290000370300200320062900003703b00820061023200341c8016a41086a20022903002207370300200320032903b008221c3703c8012008201c370000200841086a2007370000200341f8006a41086a2009290300370300200341f8006a41106a2018290300370300200341f8006a41186a200a290300370300200320032903980137037820034198036a201b1004109001024002402003280298032209450d0020034198036a41086a2802002102200328029c0321060c010b200341003602e004200342013703d8044100200341d8046a105c20032802e004210220032802dc04210620032802d80421090b200320023602d008200320063602cc08200320093602c808024002402002450d00200341d8046a200920024101106920032802d8044101470d0120032802cc08450d5c20032802c80810230c5c0b4101200341c8086a105c20032802e8082206280200210a0240024020032802cc08220920032802d00822026b4104490d0020032802c80821090c010b200241046a22182002490d5f200941017422022018200220184b1b22024100480d5f0240024020090d002002102121090c010b20032802c80820092002102521090b2009450d1b200320023602cc08200320093602c80820032802d00821020b2003200241046a3602d008200920026a200a3600002006280204200341c8086a10cb01200641086a200341c8086a10710c590b20032802dc04210a0240200341e4046a2802002202200341e0046a2802002209460d0020032802d008200220096b6a220641046a2218417f4c0d1b0240024020180d00410121190c010b201810212219450d1d0b200320183602ec07200320193602e807200320063602f0072003200341e8076a3602d804200a200341d8046a200210920120062002490d1d20032802f007220a2006490d1e20032802d008220a2009490d1f20032802e807211820032802c80821192003200620026b22063602c8012003200a20096b220a3602582006200a470d20201820026a201920096a200610dc041a20032802e8082209280200210a0240024020032802ec07220620032802f00722026b4104490d0020032802e80721060c010b200241046a22182002490d5f200641017422022018200220184b1b22024100480d5f0240024020060d002002102121060c010b20032802e80720062002102521060b2006450d22200320023602ec07200320063602e80720032802f00721020b2003200241046a3602f007200620026a200a3600002009280204200341e8076a10cb01200941086a200341e8076a107120032802f007210920032802ec07210620032802e807210220032802cc08450d5a20032802c80810230c5a0b2003200341c8086a3602d804200a200341d8046a200910920120032802e8082209280200210a0240024020032802cc08220620032802d00822026b4104490d0020032802c80821060c010b200241046a22182002490d5e200641017422022018200220184b1b22024100480d5e0240024020060d002002102121060c010b20032802c80820062002102521060b2006450d22200320023602cc08200320063602c80820032802d00821020b2003200241046a3602d008200620026a200a3600002009280204200341c8086a10cb01200941086a200341c8086a10710c580b200141046a28020021162002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d0001211a200320073703d80441002102201a41ff01714101460d010b41012102410221184100210a410021170b200320073703b003200320083a00af03200320093a00ae03200320063b01ac03200320193a00ab032003200b3a00aa032003200c3b01a8032003200d3a00a7032003200e3a00a6032003200f3b01a403200320103a00a303200320113a00a203200320123b01a003200320133a009f03200320143a009a03200320153b0198032003201741ffff0371410874200a41187472201841ff017172220636009b0302402002450d00410f210841aab0c0002109024020060e050015165556000b200328009f03210920032800a3032108410121060c560b200341d8016a41186a20034198036a41186a290300370300200341d8016a41106a20034198036a41106a290300370300200341d8016a41086a20034198036a41086a29030037030020032003290398033703d801200341d8046a201610dc01024020032802e80422060d0041dfb8c100210941242108410121060c560b200341d8046a41186a280200210820032802ec042102200341106a200341d8016a20032902dc04220742208620033502d804842204200341e4046a350200422086200742208884220710f10120032802100d52200341f8006a41186a200341d8016a41186a290300370300200341f8006a41106a2209200341d8016a41106a290300370300200341f8006a41086a2217200341d8016a41086a290300370300200320032903d8013703780240024020082002460d002002210a200821020c010b200241016a220a2002490d5d20024101742218200a2018200a4b1b220a41ffffff3f71200a470d5d200a41057422184100480d5d0240024020020d002018102121060c010b200620024105742018102521060b2006450d350b200620024105746a22022003290378370000200241186a200341f8006a41186a290300370000200241106a2009290300370000200241086a2017290300370000200341b0086a41086a220241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b00820091023200341b8016a41086a2002290300370300200320032903b0083703b801200241f0f3c000ad42808080809001841003220941086a290000370300200320092900003703b00820091023200341c8016a41086a2002290300370300200320032903b0083703c801200320163602d80420034198036a41186a2209200341d8046aad4280808080c000841001220241186a29000037030020034198036a41106a2217200241106a29000037030020034198036a41086a2218200241086a29000037030020032002290000370398032002102320034198016a41186a2202200929030037030020034198016a41106a201729030037030020034198016a41086a201829030037030020032003290398033703980141c00010212209450d21200920032903b801370000200941086a200341b8016a41086a290300370000200920032903c801370010200941186a200341c8016a41086a2903003700002009200329039801370020200941286a20034198016a41086a290300370000200941306a20034198016a41106a290300370000200941386a2002290300370000411010212202450d2220022004370000200220073700082003429080808080023702dc04200320023602d804200841016a2202200341d8046a105c02402002450d00200841057441206a21082006210203402002200341d8046a1071200241206a2102200841606a22080d000b0b20032802dc0421022009ad428080808080088420033502e00442208620032802d8042208ad84100202402002450d00200810230b20091023200a450d50200610230c500b200141026a2d00002116200141046a280200211a20012d0001211d2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d0001211e200320073703d80441002102201e41ff01714101460d010b41012102410221184100210a410021170b200320073703b001200320083a00af01200320093a00ae01200320063b01ac01200320193a00ab012003200b3a00aa012003200c3b01a8012003200d3a00a7012003200e3a00a6012003200f3b01a401200320103a00a301200320113a00a201200320123b01a001200320133a009f01200320143a009a01200320153b0198012003201741ffff0371410874200a41187472201841ff017172220636009b0102402002450d00410f210841aab0c000210920060e050c131453540c0b200341f8006a41186a20034198016a41186a2903002207370300200341f8006a41106a20034198016a41106a2903002204370300200341f8006a41086a20034198016a41086a29030022053703002003200329039801221b370378200341d8046a41186a2007370300200341d8046a41106a2004370300200341d8046a41086a20053703002003201b3703d804200341d8046a201a201d41ff0171410047201610f20121090c4e0b200141026a2d00002116200141046a280200211a20012d0001211d2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d0001211e200320073703d80441002102201e41ff01714101460d010b41012102410221184100210a410021170b2003200737039001200320083a008f01200320093a008e01200320063b018c01200320193a008b012003200b3a008a012003200c3b0188012003200d3a0087012003200e3a0086012003200f3b018401200320103a008301200320113a008201200320123b018001200320133a007f200320143a007a200320153b01782003201741ffff0371410874200a41187472201841ff017172220636007b02402002450d00410f210841aab0c000210920060e050f121352530f0b200341d8046a41186a200341f8006a41186a290300370300200341d8046a41106a200341f8006a41106a290300370300200341d8046a41086a200341f8006a41086a290300370300200320032903783703d804200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b8012002418ca1c100ad4280808080d000841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198016a200341d8046a10ac0141c00010212202450d21200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a2209290300370000200241306a20034198016a41106a2206290300370000200241386a20034198016a41186a2208290300370000200341d8046a200241c000108a012009200341e1046a2900003703002006200341e9046a2900003703002008200341f1046a290000370300200320032900d90437039801410121060240024020032d00d8044101460d004100210a0c010b200341da006a20032d009a013a0000200341c8076a41086a200341ab016a290000370300200341d5076a2008290000370000200320032f0198013b0158200320032900a3013703c8074101210a200328009f012108200328009b0121090b2002102302400240200a0d00410b2108419db9c10021090c010b200341e8086a41026a200341d8006a41026a2d00003a0000200341e8076a41086a200341c8076a41086a290300370300200341e8076a410d6a200341c8076a410d6a290000370000200320032f01583b01e808200320032903c8073703e807410021060b20034180096a41026a2202200341e8086a41026a2d00003a0000200341c8086a41086a220a200341e8076a41086a290300370300200341c8086a41106a200341e8076a41106a290300370300200320032f01e8083b018009200320032903e8073703c80820060d5220034198036a41026a20022d000022023a0000200341d8016a41086a2206200a290300370300200341d8016a410d6a220a200341c8086a410d6a290000370000200320032f01800922173b019803200320032903c8083703d801200341eb046a2006290300370000200341f0046a200a290000370000200320023a00da04200320173b01d804200320083600df04200320093600db04200320032903d8013700e304200341d8046a201a201d41ff0171410047201610f20121090c4d0b419cbac6002109410e210820022d0000417f6a221941034b0d51200141046a280200210b4101210641012117410121184101210a0240024020190e04005d5d01000b200241046a2d00000d524101210641012117410121184101210a200241086a28020041036c2002410c6a280200410174490d5c0b200341d8046a200b10e501024020032802d8042202411a470d00418ebbc1002109410d2108410121060c530b20034198036a200341d8046a41047241bc0110dc041a200320023602d801200341d8016a41047220034198036a41bc0110dc041a200341003602e004200342013703d804200341d8016a200341d8046a10cb0120032802dc04210820034198036a41186a220920033502e00442208620032802d8042217ad841001220241186a29000037030020034198036a41106a2206200241106a29000037030020034198036a41086a220a200241086a29000037030020032002290000370398032002102320034198066a41186a2202200929030037030020034198066a41106a2209200629030037030020034198066a41086a2206200a29030037030020032003290398033703980602402008450d00201710230b200341d8046a41186a2002290300370300200341d8046a41106a2009290300370300200341d8046a41086a200629030037030020032003290398063703d804200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b801200241a8a3c100ad4280808080d001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198016a200341d8046a10ac0141c00010212202450d21200220032903b801370000200241086a200341b8016a41086a2209290300370000200220032903c801370010200241186a200341c8016a41086a220a2903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a29030037000041012106200341186a200241c00041014100410010b801200328021821082002102320084101470d4b200341d8016a10db01419bbbc1002109412521080c520b200141046a2802002106419cbac6002109410e210820022d0000417f6a220a41034b0d4902400240200a0e04004b4b01000b200241086a2802004101742002410c6a280200490d4a200241046a28020041ff01710d4a0b20034198016a41186a420037030020034198016a41106a220a420037030020034198016a41086a220842003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b0082009102320082002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220941086a290000370300200320092900003703b00820091023200a20032903b0082207370300200341f8006a41086a2008290300370300200341f8006a41106a2007370300200341f8006a41186a2002290300370300200320073703c8012003200329039801370378200341286a200341f8006a412041014100410010b801024020032802284101470d0041c2b9c1002109411521080c4a0b200341003602e004200342013703d8042006200341d8046a10cb0120032802dc04210820034198036a41186a220920033502e00442208620032802d8042219ad841001220241186a29000037030020034198036a41106a2217200241106a29000037030020034198036a41086a2218200241086a290000370300200320022900003703980320021023200341d8016a41186a2009290300370300200341d8016a41106a2017290300370300200341d8016a41086a201829030037030020032003290398033703d80102402008450d00201910230b200341d8046a41186a200341d8016a41186a290300370300200341d8046a41106a200341d8016a41106a290300370300200341d8046a41086a200341d8016a41086a290300370300200320032903d8013703d804200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a22092002290300370300200320032903b0083703b801200241dca2c100ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a22082002290300370300200320032903b0083703c80120034198016a200341d8046a10ac0141c00010212202450d21200220032903b801370000200241086a2009290300370000200220032903c801370010200241186a20082903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a290300370000200341d8046a200241c00010f30120032802d804211820032903e004210420032802dc0421082002102302402008450d00200341d8046a41186a4200370300200341d8046a41106a22194200370300200341d8046a41086a22094200370300200342003703d804200341b0086a41086a220241c4fbc400ad4280808080e000841003221741086a290000370300200320172900003703b0082017102320092002290300370300200320032903b0083703d804200241f9bcc000ad4280808080e000841003221741086a290000370300200320172900003703b00820171023201920032903b008220737030020034198036a41086a200929030037030020034198036a41106a200737030020034198036a41186a20022903003703002003200737039806200320032903d80437039803200341206a20034198036a4120108f012003280224410020032802201b210202402004a7450d00200810230b200220184f0d0041a8b9c1002109411a21080c4a0b200341d8046a200641b00110dd041a200341003a00880620034198016a41186a2217420037030020034198016a41106a2218420037030020034198016a41086a220842003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b0082009102320082002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220941086a290000370300200320092900003703b00820091023200341c8016a41086a20022903002207370300200320032903b00822043703c801200a2004370000200a41086a2007370000200341f8006a41086a2008290300370300200341f8006a41106a2018290300370300200341f8006a41186a20172903003703002003200329039801370378200341003602a0032003420137039803200341d8046a20034198036a10cb01024020032d008806220241024b0d00024002400240024020020e03000102000b410021080c020b410121080c010b410221080b200320083a00b00802400240200328029c0320032802a0032202460d0020032802980321090c010b200241016a22082002490d5a200241017422092008200920084b1b22084100480d5a0240024020020d002008102121090c010b20032802980320022008102521090b2009450d242003200836029c03200320093602980320032d00b008210820032802a00321020b2003200241016a3602a003200920026a20083a00000b200328029c032102200341f8006aad428080808080048420033502a0034220862003280298032208ad84100202402002450d00200810230b200341d8046a10db012006102341002106410121170c470b200141046a28020021080240024020022d0000417f6a220941034b0d00024020090e0400010102000b200241086a2802004101742002410c6a280200490d00200241046a28020041ff0171450d010b200810db0120081023419cbac6002109410e21084100211741012106410121180c520b200341d8046a200841b00110dc041a200341023a00880620034198016a41186a420037030020034198016a41106a220a420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220641086a290000370300200320062900003703b00820061023200a20032903b0082207370300200341f8006a41086a2009290300370300200341f8006a41106a2007370300200341f8006a41186a2002290300370300200320073703c8012003200329039801370378200341003602e001200342013703d801200341d8046a200341d8016a10cb01024020032d008806220241024b0d00024002400240024020020e03000102000b410021090c020b410121090c010b410221090b200320093a00b0080240024020032802dc0120032802e0012202460d0020032802d80121060c010b200241016a22092002490d59200241017422062009200620094b1b22094100480d590240024020020d002009102121060c010b20032802d80120022009102521060b2006450d24200320093602dc01200320063602d80120032d00b008210920032802e00121020b2003200241016a3602e001200620026a20093a00000b20032802dc012102200341f8006aad428080808080048420033502e00142208620032802d8012209ad84100202402002450d00200910230b200341d8046a10db012008102341002117410121060c460b200141046a28020021080240024020022d0000417f6a220941034b0d00024020090e0400010102000b200241086a2802002002410c6a280200490d00200241046a28020041ff0171450d010b200810db0120081023419cbac6002109410e21084100211841012106410121170c510b200341d8046a200841b00110dc041a200341013a00880620034198016a41186a420037030020034198016a41106a220a420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220641086a290000370300200320062900003703b00820061023200a20032903b0082207370300200341f8006a41086a2009290300370300200341f8006a41106a2007370300200341f8006a41186a2002290300370300200320073703c8012003200329039801370378200341003602e001200342013703d801200341d8046a200341d8016a10cb01024020032d008806220241024b0d00024002400240024020020e03000102000b410021090c020b410121090c010b410221090b200320093a00b0080240024020032802dc0120032802e0012202460d0020032802d80121060c010b200241016a22092002490d58200241017422062009200620094b1b22094100480d580240024020020d002009102121060c010b20032802d80120022009102521060b2006450d24200320093602dc01200320063602d80120032d00b008210920032802e00121020b2003200241016a3602e001200620026a20093a00000b20032802dc012102200341f8006aad428080808080048420033502e00142208620032802d8012209ad84100202402002450d00200910230b200341d8046a10db01200810234100211841012106410121170c460b200141286a2802002117200141246a280200210a20034180086a200141196a290000370300200341f8076a200141116a290000370300200341e8076a41086a200141096a290000370300200320012900013703e807419cbac6002109410e210820022d0000417e6a220641024b0d4d0240024020060e03004f01000b200241046a2d00000d4e200241086a28020041036c2002410c6a280200410174490d4e0b20034198016a41186a42003703004110210820034198016a41106a2218420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220641086a290000370300200320062900003703b00820061023201820032903b0082207370300200341f8006a41086a2009290300370300200341f8006a41106a2007370300200341f8006a41186a2002290300370300200320073703c8012003200329039801370378200341d8046a200341f8006a10d60120032802d804210220034198036a200341d8046a41047241ac0110dc041a20032003280089063602c80720032003418c066a2800003600cb0702402002411a470d00418dbac1002109410121060c4f0b20034188066a2d0000210820034198066a20034198036a41ac0110dc041a200320023602d801200341d8016a41047220034198066a41ac0110dc041a200841ff01710d4241e3b9c1002109412a21080c430b200341e0086a200141196a290000370300200341c8086a41106a200141116a290000370300200341c8086a41086a200141096a290000370300200320012900013703c808200241216a2f0000200241236a2d00004110747221082002411d6a2f00002002411f6a2d00004110747221092002410d6a2f00002002410f6a2d0000411074722106200241096a2f00002002410b6a2d000041107472210a200241056a2f0000200241076a2d0000411074722117200241206a2d0000210b200241106a2d0000210c2002410c6a2d0000210d200241086a2d0000210e0240024020022d00004102460d00410121180c010b200241246a2802002119200241116a2900002107200241046a2d0000210f2003200241196a2800003602e004200320073703d804410121180240200f4101460d000c010b2007421888a7210f2007a721024100211820032902dc0421070b200320083b01b403200341b6036a20084110763a0000200320093b01b00320034198036a411a6a20094110763a0000200320023b01a403410e210820034198036a410e6a20024110763a0000200320063b01a003200341a2036a20064110763a0000200320193a00b7032003200b3a00b303200320073703a8032003200f3a00a7032003200c3a00a3032003200d3a009f032003200e3a009b032003200a3b019c032003200a4110763a009e03200320173b019803200320174110763a009a0302402018450d00419cbac6002109410121060c4e0b200341e8076a41186a20034198036a41186a2206290300370300200341e8076a41106a20034198036a41106a2217290300370300200341e8076a41086a20034198036a41086a221829030037030020032003290398033703e80720034198016a41186a420037030020034198016a41106a220a420037030020034198016a41086a220842003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b0082009102320082002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220941086a290000370300200320092900003703b00820091023200a20032903b0082207370300200341f8006a41086a2008290300370300200341f8006a41106a2007370300200341f8006a41186a2002290300370300200320073703c8012003200329039801370378200341d8046a200341f8006a10d60120032802d804210220034198036a200341d8046a410472220841ac0110dc041a20032003418c066a2800003600cb0720032003280089063602c80702402002411a460d00200341d8016a20034198036a41ac0110dc041a200320023602d8042008200341d8016a41ac0110dc041a200341003602a0032003420137039803200341d8046a20034198036a10cb01200328029c032108200620033502a0034220862003280298032209ad841001220241186a2900003703002017200241106a2900003703002018200241086a29000037030020032002290000370398032002102320034198066a41186a200629030037030020034198066a41106a201729030037030020034198066a41086a201829030037030020032003290398033703980602402008450d00200910230b200341c8086a20034198066a412010de042102200341d8046a10db0102402002450d0041102108419dbac1002109410121060c4f0b200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a22092002290300370300200320032903b0083703b801200241dca2c100ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a22082002290300370300200320032903b0083703c80120034198016a200341c8086a10ac0141c00010212202450d22200220032903b801370000200241086a2009290300370000200220032903c801370010200241186a20082903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a290300370000200341d8046a200241c00010f30120032903e004210720032802e004211820032802dc042117200210234100210820170d364101211741002118410021190c370b4114210841adbac1002109410121060c4d0b4101210620022d000120022d0000720d33200141046a28020010e401410021090c480b4101210620022d000120022d0000720d322001410c6a280200210b200141086a2802002109200141046a2802002117200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b801200241aff3c000ad4280808080d001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c801200320173602d80420034198036a41186a2208200341d8046aad22044280808080c000841001220241186a29000037030020034198036a41106a220a200241106a29000037030020034198036a41086a2218200241086a29000037030020032002290000370398032002102320034198016a41186a2219200829030037030020034198016a41106a2208200a29030037030020034198016a41086a201829030037030020032003290398033703980141c00010212202450d20200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a2008290300370000200241386a2019290300370000200341d8046a200241c00010f40120032902dc04210720032802d8042108200210232008410820081b210a024002400240024020092007420020081b2207422088a722024f0d00200a200941b8016c6a2208450d002008280200411a460d01200a200941b8016c6a220941b0016a280200200b470d01200810db012008411a360200200941046a20034198036a41ac0110dc041a200941b4016a200341cb076a280000360000200941b1016a20032800c807360000200341b0086a41086a220841aefcc400ad42808080809001841003220941086a290000370300200320092900003703b00820091023200341b8016a41086a22182008290300370300200320032903b0083703b801200841aff3c000ad4280808080d001841003220941086a290000370300200320092900003703b00820091023200341c8016a41086a22092008290300370300200320032903b0083703c801200320173602d80420034198036a41186a221720044280808080c000841001220841186a29000037030020034198036a41106a2219200841106a29000037030020034198036a41086a220b200841086a29000037030020032008290000370398032008102320034198016a41186a220c201729030037030020034198016a41106a2217201929030037030020034198016a41086a2219200b29030037030020032003290398033703980141c00010212208450d25200820032903b801370000200841086a2018290300370000200820032903c801370010200841186a20092903003700002008200329039801370020200841286a2019290300370000200841306a2017290300370000200841386a200c290300370000200341d8046a200a200210ca012008ad428080808080088420033502e00442208620032802d8042209ad841002024020032802dc04450d00200910230b20081023200241b8016c2108200a2102034002402002280200411a460d00200210db010b200241b8016a2102200841c87e6a22080d000b410021092007a70d030c4b0b2002450d010b200241b8016c2108200a2102034002402002280200411a460d00200210db010b200241b8016a2102200841c87e6a22080d000b0b41c0bbc1002109411221082007a7450d4c200a10230c4c0b200a10230c470b20034198066a41186a200141196a29000037030020034198066a41106a200141116a29000037030020034198066a41086a200141096a29000037030020032001290001370398062002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d00012116200320073703d80441002102201641ff01714101460d010b4101210241002117410221184100210a0b2003200737039001200320083a008f01200320093a008e01200320063b018c01200320193a008b012003200b3a008a012003200c3b0188012003200d3a0087012003200e3a0086012003200f3b018401200320103a008301200320113a008201200320123b018001200320133a007f200320143a007a200320153b01782003201741ffff0371410874201841ff017172200a41187472220636007b02402002450d00410f210841aab0c000210920060e0506090a494a060b20034198036a41186a200341f8006a41186a29030037030020034198036a41106a200341f8006a41106a29030037030020034198036a41086a200341f8006a41086a2903003703002003200329037837039803200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b8012002418ca1c100ad4280808080d000841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198016a20034198066a10ac0141c00010212202450d21200220032903b801370000200241086a200341b8016a41086a2209290300370000200220032903c801370010200241186a200341c8016a41086a22062903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a290300370000200341c0006a200241c00041014100410010b8012003280240210820021023024020084101470d0041e7bac1002109410f2108410121060c4b0b200341d8016a41186a20034198036a41186a290300370300200341d8016a41106a20034198036a41106a290300370300200341d8016a41086a20034198036a41086a29030037030020032003290398033703d801200341d8046a41186a20034198066a41186a290300370300200341d8046a41106a20034198066a41106a290300370300200341d8046a41086a20034198066a41086a29030037030020032003290398063703d804200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b0082008102320092002290300370300200320032903b0083703b8012002418ca1c100ad4280808080d000841003220841086a290000370300200320082900003703b0082008102320062002290300370300200320032903b0083703c80120034198016a200341d8046a10ac0141c00010212202450d22200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a290300370000200341c0003602dc04200320023602d804200341d8016a200341d8046a10f501200210230c390b2002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d00012116200320073703d80441002102201641ff01714101460d010b4101210241002117410221184100210a0b200320073703b001200320083a00af01200320093a00ae01200320063b01ac01200320193a00ab012003200b3a00aa012003200c3b01a8012003200d3a00a7012003200e3a00a6012003200f3b01a401200320103a00a301200320113a00a201200320123b01a001200320133a009f01200320143a009a01200320153b0198012003201741ffff0371410874201841ff017172200a41187472220636009b012002450d01410f210841aab0c000210920060e050007084748000b200328009f01210920032800a3012108410121060c480b200341f8006a41186a20034198016a41186a2903002207370300200341f8006a41106a20034198016a41106a2903002204370300200341f8006a41086a20034198016a41086a29030022053703002003200329039801221b370378200341d8046a41186a2007370300200341d8046a41106a2004370300200341d8046a41086a20053703002003201b3703d804200341d8046a10f6010c420b20034198066a41186a200141196a29000037030020034198066a41106a200141116a29000037030020034198066a41086a200141096a29000037030020032001290001370398062002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d00002119200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d0000210a200241066a2f01002117200241056a2d0000211820022d00012116200320073703d80441002102201641ff01714101460d010b4101210241002117410221184100210a0b2003200737039001200320083a008f01200320093a008e01200320063b018c01200320193a008b012003200b3a008a012003200c3b0188012003200d3a0087012003200e3a0086012003200f3b018401200320103a008301200320113a008201200320123b018001200320133a007f200320143a007a200320153b01782003201741ffff0371410874201841ff017172200a41187472220636007b02402002450d00410f210841aab0c000210920060e050205064546020b20034198036a41186a200341f8006a41186a29030037030020034198036a41106a200341f8006a41106a29030037030020034198036a41086a200341f8006a41086a2903003703002003200329037837039803200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b8012002418ca1c100ad4280808080d000841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198016a20034198066a10ac0141c00010212202450d1f200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a2209290300370000200241306a20034198016a41106a2206290300370000200241386a20034198016a41186a2208290300370000200341d8046a200241c000108a012009200341e1046a2900003703002006200341e9046a2900003703002008200341f1046a290000370300200320032900d90437039801410121060240024020032d00d8044101460d004100210a0c010b200341da006a20032d009a013a0000200341c8076a41086a200341ab016a290000370300200341d5076a2008290000370000200320032f0198013b0158200320032900a3013703c8074101210a200328009f012108200328009b0121090b2002102302400240200a0d00410b2108419db9c10021090c010b200341e8086a41026a200341d8006a41026a2d00003a0000200341e8076a41086a200341c8076a41086a290300370300200341e8076a410d6a200341c8076a410d6a290000370000200320032f01583b01e808200320032903c8073703e807410021060b20034180096a41026a2202200341e8086a41026a2d00003a0000200341c8086a41086a220a200341e8076a41086a290300370300200341c8086a41106a200341e8076a41106a290300370300200320032f01e8083b018009200320032903e8073703c80820060d45200341eb016a200a290300370000200341d8016a41186a200341d5086a290000370000200320032f0180093b01d801200320083600df01200320093600db01200320032903c8083700e301200320022d00003a00da010240200341d8016a20034198036a412010de04450d0041f6bac1002109410b2108410121060c470b200341d8046a41186a20034198066a41186a290300370300200341d8046a41106a20034198066a41106a290300370300200341d8046a41086a20034198066a41086a29030037030020032003290398063703d804200341d8046a10f6010c350b200141216a2d0000210a200341d8006a41186a200141196a290000370300200341d8006a41106a200141116a290000370300200341d8006a41086a200141096a290000370300200320012900013703582002411a6a2901002107200241196a2d00002108200241186a2d00002109200241166a2f01002106200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d00002115200241026a2f0100211602400240024020022d0000450d00200320073702dc04200320083a00db04200320093a00da04200320063b01d8040c010b200241086a2d00002117200241066a2f01002118200241056a2d0000211920022d0001211a200320073703d80441002102201a41ff01714101460d010b410121024100211841022119410021170b2003200737039001200320083a008f01200320093a008e01200320063b018c012003200b3a008b012003200c3a008a012003200d3b0188012003200e3a0087012003200f3a008601200320103b018401200320113a008301200320123a008201200320133b018001200320143a007f200320153a007a200320163b01782003201841ffff0371410874201941ff017172201741187472220636007b2002450d01410f210841aab0c000210920060e050003044344000b200328007f21092003280083012108410121060c440b200341c8076a41186a200341f8006a41186a290300370300200341c8076a41106a200341f8006a41106a290300370300200341c8076a41086a200341f8006a41086a290300370300200320032903783703c807200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b801200241b2edc000ad4280808080b001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198016a200341c8076a10ac0141c00010212202450d1d200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a20034198016a41106a290300370000200241386a20034198016a41186a290300370000200341d8016a200241c000109e01024020032d00f90122084102470d002003200341c8076a36028009200341d8046a10e201200341e8076a20032802d804220820032802e004108a01024020032802dc04450d00200810230b024020032d00e8070d00200341d8046a10e20120032802d8042108200320032802e00436029c032003200836029803200341c8076a20034198036a10f50120032802dc04450d2a200810230c2a0b200341c8086a41186a20034181086a290000370300200341c8086a41106a200341f9076a290000370300200341c8086a41086a200341e8076a41096a290000370300200320032900e9073703c808200341f8006a200341c8086a109d01200341d8046a200328027822062003280280012217109e01024020032d00f9044102470d00200341003602a0062003420137039806200341b0086a41146a410f360200200341bc086a410c360200200341093602cc01200341aefcc4003602c8012003410c3602b4082003410b36029c01200341b2edc000360298012003200341f8006a3602c008200320034198016a3602b8082003200341c8016a3602b008200320034198066a3602b80120034198036a41146a41033602002003420337029c03200341e4ddc000360298032003200341b0086a3602a803200341b8016a41b8a3c50020034198036a102e1a20033502a006422086200335029806841008200328028009210920034198036a10e2012003280298032108200320032802a00336029c012003200836029801200920034198016a10f5010240200328029c03450d00200810230b0240200328029c06450d0020032802980610230b200328027c450d2a200328027810230c2a0b20034198036a200341f9046a41c20010dc041a20032d00b903210820034198066a41206a2209200341d8046a41206a2d00003a000020034198066a41186a200341d8046a41186a29030037030020034198066a41106a200341d8046a41106a29030037030020034198066a41086a200341d8046a41086a290300370300200341c0066a200341ba036a410020084101461b360200200320032903d80437039806200320034180096a3602bc06200341003602a001200342013703980120034198066a20034198016a1071024020092d0000220841064b0d000240024002400240024002400240024020080e0700010203040506000b410021090c060b410121090c050b410221090c040b410321090c030b410421090c020b410521090c010b410621090b200320093a00b00802400240200328029c0120032802a0012208460d0020032802980121180c010b200841016a22092008490d4d200841017422182009201820094b1b22094100480d4d0240024020080d002009102121180c010b20032802980120082009102521180b2018450d212003200936029c01200320183602980120032d00b008210920032802a00121080b2003200841016a3602a001201820086a20093a00000b200341bc066a20034198016a10aa01200328029c0121082017ad4220862006ad8420033502a0014220862003280298012209ad84100202402008450d00200910230b0240200328027c450d00200328027810230b2003280280092109200341d8046a10e20120032802d8042108200320032802e00436029c032003200836029803200920034198036a10f501024020032802dc04450d00200810230b20034198066a41086a200341c8086a41086a29030037030020034198066a41106a200341c8086a41106a29030037030020034198066a41186a200341c8086a41186a290300370300200320032903c8083703980641012109410021080c2a0b20034198036a41186a20034192026a29010037030020034198036a41106a2003418a026a29010037030020034198036a41086a20034182026a29010037030020034198066a41086a200341a3026a29000037030020034198066a41106a200341ab026a29000037030020034198066a41186a200341b3026a290000370300200320032901fa013703980320032003419b026a290000370398062003419a026a2d000021090c290b2002411a6a2901002107200241196a2d0000210a200241186a2d00002117200241166a2f01002118200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021192002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241046a2d00002114200241026a2f0100211502400240024020022d0000450d00200320073702dc042003200a3a00db04200320173a00da04200320183b01d8040c010b200241086a2d00002108200241066a2f01002109200241056a2d0000210620022d00012116200320073703d80441002102201641ff01714101460d010b410121024100210941022106410021080b200941ffff0371410874200641ff01717220084118747221062002450d02410f210841aab0c0002109024020060e050001024142000b200e410874200f72200d411874722109200b410874200c722019411874722108410121060c420b410e210841aabac6002109410121060c410b411321084197b0c0002109410121060c400b200320073703e0072003200a3a00df07200320173a00de07200320183b01dc07200320103a00db07200320113a00da07200320123b01d807200320133a00d707200320193a00d6072003200b3b01d4072003200c3a00d3072003200d3a00d2072003200e3b01d0072003200f3a00cf07200320063600cb07200320143a00ca07200320153b01c807200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b00820081023200341b8016a41086a2002290300370300200320032903b0083703b801200241b2edc000ad4280808080b001841003220841086a290000370300200320082900003703b00820081023200341c8016a41086a2002290300370300200320032903b0083703c80120034198036a200341c8076a10ac0141c00010212202450d1b200220032903b801370000200241086a200341b8016a41086a2209290300370000200220032903c801370010200241186a200341c8016a41086a22062903003700002002200329029803370020200241286a20034198036a41086a290200370000200241306a200341a8036a290200370000200241386a20034198036a41186a290200370000200341d0006a200241c00041014100410010b8012003280250210820021023024020084101460d004181bbc1002109410d2108410121060c400b200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b0082008102320092002290300370300200320032903b0083703b801200241b2edc000ad4280808080b001841003220841086a290000370300200320082900003703b0082008102320062002290300370300200320032903b0083703c80120034198036a200341c8076a10ac0141c00010212202450d1c200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329029803370020200241286a20034198036a41086a290200370000200241306a20034198036a41106a290200370000200241386a20034198036a41186a290200370000200341d8046a200241c000109e01024020032d00f904220841024622090d002002ad428080808080088410050b200341c8086a41186a2206200341d8046a41186a290300370300200341c8086a41106a220a200341d8046a41106a290300370300200341c8086a41086a2217200341d8046a41086a290300370300200320032903d8043703c80820032d00f8042118200341e8076a200341d8046a41226a41c10010dc041a20034198016a41086a201729030037030020034198016a41106a200a29030037030020034198016a41186a2006290300370300200320032903c8083703980120034198066a200341e8076a41c10010dc041a4107210620090d22200341f8006a41186a20034198016a41186a290300370300200341f8006a41106a20034198016a41106a290300370300200341f8006a41086a20034198016a41086a2903003703002003200329039801370378200320083a00980320034198036a41017220034198066a41c10010dc04210620034198036a41226a21090240024020032d00b9034101460d00200341003602e8080c010b200341e8086a2009109d0120032d00980321080b024002400240200841ff01714101460d00200341003602b8010c010b200341b8016a2006109d0120032802b8010d010b024020032d00b9034101460d00200341d8046a10e20120033502e00442208620032802d8042208ad84100520032802dc04450d22200810230c220b200341d8046a10e20120032802d8042108200320032802e0043602dc01200320083602d8012009200341d8016a10f50120032802dc04450d21200810230c210b200341c8016a41086a200341b8016a41086a2802002209360200200320032903b80122073703c801200341d8016a2007a7220a2009109e01024020032d00f9014102470d00200341003602b808200342013703b008200341d8006a41146a410f360200200341e4006a410c360200200341093602fc08200341aefcc4003602f8082003410c36025c2003410b36028409200341b2edc000360280092003200341c8016a360268200320034180096a3602602003200341f8086a3602582003200341b0086a36028c09200341d8046a41146a4103360200200342033702dc04200341a8ddc0003602d8042003200341d8006a3602e8042003418c096a41b8a3c500200341d8046a102e1a20033502b80842208620033502b00884100820032802b408450d2020032802b00810230c200b200341d8046a200341d8016a41c20010dc041a200341ba056a200341b9036a220841206a2d00003a0000200341b2056a200841186a290000370100200341aa056a200841106a290000370100200341a2056a200841086a290000370100200341d8046a41c2006a20082900003701002003410036026020034201370358200341d8046a200341d8006a1071024020032d00f804220841064b0d000240024002400240024002400240024020080e0700010203040506000b410021060c060b410121060c050b410221060c040b410321060c030b410421060c020b410521060c010b410621060b200320063a00b00802400240200328025c20032802602208460d00200328025821170c010b200841016a22062008490d48200841017422172006201720064b1b22064100480d480240024020080d002006102121170c010b200328025820082006102521170b2017450d1f2003200636025c2003201736025820032d00b0082106200328026021080b2003200841016a360260201720086a20063a00000b200341f9046a200341d8006a10a901200328025c21082009ad422086200aad84200335026042208620032802582209ad8410022008450d1f200910230c1f0b41c00041011030000b411041011030000b200241011030000b102f000b201841011030000b20022006103e000b2006200a1036000b2009200a103e000b200341b0086a41146a410d360200200341bc086a410e36020020034198036a41146a41033602002003420337029c03200341acb6c600360298032003410e3602b4082003200341c8016a360298012003200341d8006a3602c807200342043703e804200342013702dc0420034180b7c6003602d8042003200341b0086a3602a8032003200341d8046a3602c0082003200341c8076a3602b808200320034198016a3602b00820034198036a41bcb7c6001038000b200241011030000b200241011030000b41c00041011030000b411041011030000b41c00041011030000b41c00041011030000b41c00041011030000b200841011030000b200941011030000b200941011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b200941011030000b41c00041011030000b41c00041011030000b200641011030000b201841011030000b024020032802cc01450d0020032802c80110230b410121090c010b410021090b0240024020032802e80822080d00410021060c010b200341c8016a41086a200341e8086a41086a280200220a360200200320032903e80822073703c801200341d8016a2007a72219200a109e010240024020032d00f9014102470d002003410036026020034201370358200341b0086a41146a410f360200200341bc086a410c360200200341093602fc08200341aefcc4003602f8082003410c3602b4082003410b36028409200341b2edc000360280092003200341c8016a3602c008200320034180096a3602b8082003200341f8086a3602b0082003200341d8006a36028c09200341d8046a41146a4103360200200342033702dc04200341ccdcc0003602d8042003200341b0086a3602e8042003418c096a41b8a3c500200341d8046a102e1a20033502604220862003350258841008200328025c450d01200328025810230c010b200341d8046a200341d8016a41e30010dc041a20034199056a200341b8036a2d00003a000020034191056a200341b0036a29030037000020034189056a200341a8036a29030037000020034181056a20034198036a41086a29030037000020032003290398033700f9042003410036026020034201370358200341d8046a200341d8006a1071024020032d00f804220641064b0d000240024002400240024002400240024020060e0700010203040506000b410021170c060b410121170c050b410221170c040b410321170c030b410421170c020b410521170c010b410621170b200320173a00b00802400240200328025c20032802602206460d002003280258210b0c010b200641016a22172006490d282006410174220b2017200b20174b1b22174100480d280240024020060d0020171021210b0c010b2003280258200620171025210b0b200b450d052003201736025c2003200b36025820032d00b0082117200328026021060b2003200641016a360260200b20066a20173a00000b200341f9046a200341d8006a10a901200328025c2106200aad4220862019ad8420033502604220862003280258220aad8410022006450d00200a10230b024020032802cc01450d0020032802c80110230b410121060b0240200920032802b801220a45720d0020032802bc01450d00200a10230b02402006200845720d0020032802ec08450d00200810230b201821060b20021023200341d8046a41186a4200370300200341d8046a41106a220a4200370300200341d8046a41086a22024200370300200342003703d804200341b0086a41086a220841c4fbc400ad4280808080e000841003220941086a290000370300200320092900003703b0082009102320022008290300370300200320032903b0083703d804200841f9bcc000ad4280808080e000841003220941086a290000370300200320092900003703b00820091023200a20032903b008220737030020034198036a41086a200229030037030020034198036a41106a200737030020034198036a41186a20082903003703002003200737039806200320032903d80437039803200341c8006a20034198036a4120108f01200342e4cab5fbb6ccdcb0e3003703d80141002109200341d8016a200341c8076a427f427f41002006200641ff01714107461b41187441187541027441c0b1c0006a280200418084076c200328024c410020032802481b6a410210f701200241093a0000200341d8046a41096a20032903c807370000200341e9046a200341c8076a41086a290300370000200341f1046a200341c8076a41106a290300370000200341f9046a200341c8076a41186a290300370000200341083a00d804200341d8046a108e01410121060c1c0b201741011030000b41002109410021080b200341e1046a20032903980337000020034181056a20093a000020034182056a200329039806370100200341e9046a20034198036a41086a290300370000200341f1046a20034198036a41106a290300370000200341f9046a20034198036a41186a2903003700002003418a056a20034198066a41086a29030037010020034192056a20034198066a41106a2903003701002003419a056a20034198066a41186a290300370100200320083a00e0042003200a3a00dc042003200341d8006a3602d804200341003602e001200342013703d801200341d8006a200341d8016a107102400240200a41064b0d0002400240024002400240024002400240200a0e0700010203040506000b410021090c060b410121090c050b410221090c040b410321090c030b410421090c020b410521090c010b410621090b200320093a00b0080240024020032802dc0120032802e0012208460d0020032802d80121060c010b200841016a22092008490d23200841017422062009200620094b1b22094100480d230240024020080d002009102121060c010b20032802d80120082009102521060b2006450d02200320093602dc01200320063602d80120032d00b008210920032802e00121080b2003200841016a3602e001200620086a20093a00000b200341d8046a41086a200341d8016a10a90120032802dc0121082002ad428080808080088420033502e00142208620032802d8012209ad84100202402008450d00200910230b20021023200342e4cab5fbb6ccdcb0e3003703e808200341e8086a200341c8076a417f10f801200341d8046a41086a41083a0000200341e1046a20032903c807370000200341e9046a200341c8076a41086a290300370000200341f1046a200341c8076a41106a290300370000200341f9046a200341c8076a41186a29030037000020034181056a200329035837000020034189056a200341d8006a41086a29030037000020034191056a200341d8006a41106a29030037000020034199056a200341d8006a41186a290300370000200341083a00d804200341d8046a108e010c150b200941011030000b4186b0c0002109411121080c180b2007a7211941002102024002402007422088a7220b41014b0d00200b0e020201020b200b210803402008410176220920026a22062002201720064105746a200341e8076a412010de044101481b2102200820096b220841014b0d000b0b201720024105746a200341e8076a412010de042208450d0a0c010b200341d8046a41186a200341e8076a41186a290300370300200341d8046a41106a200341e8076a41106a290300370300200341d8046a41086a200341e8076a41086a290300370300200320032903e8073703d804200341d8046a2109410021060c010b200341d8046a41186a200341e8076a41186a290300370300200341d8046a41106a200341e8076a41106a290300370300200341d8046a41086a200341e8076a41086a290300370300200320032903e8073703d8042008411f7620026a2206200b4b0d01200341d8046a2109200b21080b20082019460d01201821190c020b4180bbc000102b000b024020182008460d00201821190c010b201841016a22022018490d19201841017422192002201920024b1b221941ffffff3f712019470d19201941057422024100480d190240024020180d002002102121170c010b201720184105742002102521170b2017450d020b201720064105746a220241206a2002200820066b41057410dd041a200241186a200941186a290000370000200241106a200941106a290000370000200241086a200941086a29000037000020022009290000370000200341d8046a41186a4200370300200341d8046a41106a22184200370300200341d8046a41086a22094200370300200342003703d804200341b0086a41086a220241c4fbc400ad4280808080e000841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b0083703d804200241f9bcc000ad4280808080e000841003220641086a290000370300200320062900003703b00820061023201820032903b008220737030020034198036a41086a200929030037030020034198036a41106a200737030020034198036a41186a20022903003703002003200737039806200320032903d80437039803200341386a20034198036a4120108f0120032802382106200328023c2118200241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b00820091023200341b8016a41086a220b2002290300370300200320032903b0083703b801200241dca2c100ad42808080809001841003220941086a290000370300200320092900003703b00820091023200341c8016a41086a220c2002290300370300200320032903b0083703c80120034198016a200341c8086a10ac0141c00010212209450d02200920032903b801370000200941086a200b290300370000200920032903c801370010200941186a200c2903003700002009200329039801370020200941286a20034198016a41086a290300370000200941306a20034198016a41106a290300370000200941386a20034198016a41186a290300370000410410212202450d0320034284808080c0003702dc04200320023602d8042002201841c093066a41c0930620061b2206360000200841016a2202200341d8046a105c02402002450d00200841057441206a21082017210203402002200341d8046a1071200241206a2102200841606a22080d000b0b20032802dc0421022009ad428080808080088420033502e00442208620032802d8042208ad84100202402002450d00200810230b2009102302402019450d00201710230b200341e1046a20032903e80737000020034181056a20032903c808370000200341083a00d804200341d8046a41086a410a3a0000200341f1046a200341e8076a41106a290300370000200341f9046a200341e8076a41186a29030037000020034191056a200341c8086a41106a29030037000020034199056a200341c8086a41186a290300370000200341e9046a200341e8076a41086a29030037000020034189056a200341c8086a41086a290300370000200341a4056a2006360200200341d8046a108e0120034198016a41186a2206420037030020034198016a41106a2217420037030020034198016a41086a220842003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220941086a290000370300200320092900003703b0082009102320082002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220941086a290000370300200320092900003703b00820091023200341c8016a41086a20022903002207370300200320032903b00822043703c801200a2004370000200a41086a2007370000200341f8006a41086a2008290300370300200341f8006a41106a2017290300370300200341f8006a41186a20062903003703002003200329039801370378200341f8006aad428080808080048410050b41002109410121060c100b200241011030000b41c00041011030000b410441011030000b41c1bac1002109412621082019450d0b20171023410121060c0c0b200341003602e004200342013703d804200341d8016a200341d8046a10cb0120032802dc04210920034198036a41186a220620033502e00442208620032802d804220cad841001220241186a29000037030020034198036a41106a2219200241106a29000037030020034198036a41086a220b200241086a290000370300200320022900003703980320021023200341d8046a41186a2006290300370300200341d8046a41106a2019290300370300200341d8046a41086a200b29030037030020032003290398033703d80402402009450d00200c10230b0240200341e8076a200341d8046a412010de04450d0041d7b9c1002109410c21080c010b20034198016a41186a2219420037030020034198016a41106a220b420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241a8f5c000ad4280808080c001841003220641086a290000370300200320062900003703b00820061023200341c8016a41086a20022903002207370300200320032903b00822043703c80120182004370000201841086a2007370000200341f8006a41086a2009290300370300200341f8006a41106a200b290300370300200341f8006a41186a20192903003703002003200329039801370378200341f8006aad42808080808004841005200341d8046a41186a4200370300200341d8046a41106a22184200370300200341d8046a41086a22094200370300200342003703d804200241c4fbc400ad4280808080e000841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b0083703d804200241f9bcc000ad4280808080e000841003220641086a290000370300200320062900003703b00820061023201820032903b008220737030020034198036a41086a2218200929030037030020034198036a41106a200737030020034198036a41186a20022903003703002003200737039806200320032903d80437039803200341306a20034198036a4120108f012003280234210220032802302106200341d8046a200341d8016a41b00110dc041a4100210920034198036a2002410020061b200a41d804200a41d8044b1b6a200341d8046a2008201710d70102402003280298034101470d00200328029c032202450d002018280200210820022109410121060c0c0b410121060c0b0b200341d8016a10db01410121060c0a0b410121180b4101210a410021090c110b200610db01200610234101211741002106410121180c080b200341d8046a41186a20034198066a41186a290300370300200341d8046a41106a20034198066a41106a290300370300200341d8046a41086a20034198066a41086a29030037030020032003290398063703d804200341b0086a41086a220241aefcc400ad42808080809001841003220841086a290000370300200320082900003703b0082008102320092002290300370300200320032903b0083703b801200241a8a3c100ad4280808080d001841003220841086a290000370300200320082900003703b00820081023200a2002290300370300200320032903b0083703c80120034198016a200341d8046a10ac01024041c00010212202450d00200220032903b801370000200241086a200341b8016a41086a290300370000200220032903c801370010200241186a200341c8016a41086a2903003700002002200329039801370020200241286a20034198016a41086a290300370000200241306a200341a8016a290300370000200241386a20034198016a41186a29030037000041012106200341013a00d8042002ad4280808080800884200341d8046aad42808080801084100220021023200b10e401200341d8016a10db01410021090c030b41c00041011030000b41222108410121060c050b41002109410121060b41012117410121184101210a0c0c0b4183b9c1002109411a21082002450d0120061023410121060c020b411121084186b0c00021090b410121060b41012117410121180b4101210a0c070b20032802d008210920032802cc08210620032802c80821020b2002450d00201b2009ad4220862002ad8410022006450d01200210230c010b20034198016a41186a220a420037030020034198016a41106a2218420037030020034198016a41086a220942003703002003420037039801200341b0086a41086a220241aefcc400ad42808080809001841003220641086a290000370300200320062900003703b0082006102320092002290300370300200320032903b00822073703b8012003200737039801200241d5f3c000ad4280808080b001841003220641086a290000370300200320062900003703b00820061023200341c8016a41086a20022903002207370300200320032903b008221c3703c8012008201c370000200841086a2007370000200341f8006a41086a2009290300370300200341f8006a41106a2018290300370300200341f8006a41186a200a2903003703002003200329039801370378200341003602e004200342013703d8044101200341d8046a105c20032802e808220828020021060240024020032802dc04220920032802e00422026b4104490d0020032802d80421090c010b200241046a220a2002490d0320094101742202200a2002200a4b1b22024100480d030240024020090d002002102121090c010b20032802d80420092002102521090b2009450d02200320023602dc04200320093602d80420032802e00421020b2003200241046a3602e004200920026a20063600002008280204200341d8046a10cb01200841086a200341d8046a107120032802dc042102201b20033502e00442208620032802d8042208ad8410022002450d00200810230b200341f0046a2004370300200341e8046a2005370300200341e4046a2017360200200341083a00d8044100210a200341d8046a41086a41003a0000200341d8046a108e0120032802dc0110db0120032802dc011023410121064101211741012118410021090c030b200241011030000b102a000b200610db01200610234100210a4101210641012117410121180b0240024020012d0000417f6a2202410f4b0d00024002400240024020020e1000040404040102030404040405040505000b200a450d04200141046a220228020010db01200228020010230c040b2006450d03200141046a220228020010db01200228020010230c030b2017450d02200141046a220228020010db01200228020010230c020b2018450d01200141046a220228020010db01200228020010230c010b200241074b0d00024002400240024020020e080004040404010203000b200141046a220228020010db01200228020010230c030b200141046a220228020010db01200228020010230c020b200141046a220228020010db01200228020010230c010b200141046a220228020010db01200228020010230b200020083602042000200936020020034190096a24000be40602057f047e23004180016b22042400200441e0006a41086a220541d5fbc400ad42808080808001841003220641086a2900003703002004200629000037036020061023200441c0006a41086a2207200529030037030020042004290360370340200541e3a0c200ad4280808080b001841003220641086a2900003703002004200629000037036020061023200441d0006a41086a2208200529030037030020042004290360370350200441e0006a200110ac01024002400240024041c00010212206450d00200620042903403700002006200429035037001020062004290060370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441e0006a41106a290000370000200641386a200441e0006a41186a290000370000200441286a200641c000108902200441286a41106a29030021092004290330210a20042802282105200610230240200a420020051b220a20025422062009420020051b220920035420092003511b450d0041d6c0c2002106411521050c040b200441206a20014104200a20027d220a200920037d2006ad7d220910de02200428022022060d02200441e0006a41086a220541d5fbc400ad42808080808001841003220641086a2900003703002004200629000037036020061023200441c0006a41086a2207200529030037030020042004290360370340200541eea0c200ad4280808080f001841003220641086a2900003703002004200629000037036020061023200441d0006a41086a2208200529030037030020042004290360370350200441e0006a200110ac0141c00010212206450d01200620042903403700002006200429035037001020062004290060370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441e0006a41106a290000370000200641386a200441e0006a41186a290000370000200441086a200641c000108902200441086a41106a290300210b2004290310210c20042802082105200610232001200c420020051b220c20027c2202200b420020051b20037c2002200c54ad7c10ca022001200a200910dc02410021060c030b41c00041011030000b41c00041011030000b200428022421050b200020053602042000200636020020044180016a24000be41a04067f017e047f017e230041a0016b2204240020044180016a41086a220541aefcc400ad42808080809001841003220641086a290000370300200420062900003703800120061023200441186a41086a220720052903003703002004200429038001370318200541bcf3c000ad42808080808002841003220641086a290000370300200420062900003703800120061023200441e0006a41086a2208200529030037030020042004290380013703602004200136024820044180016a41186a2209200441c8006aad220a4280808080c000841001220641186a29000037030020044180016a41106a220b200641106a2900003703002005200641086a290000370300200420062900003703800120061023200441286a41186a22062009290300370300200441286a41106a2209200b290300370300200441286a41086a220b20052903003703002004200429038001370328024002400240024002400240024002400240024002400240024002400240024002400240024041c00010212205450d00200520042903183700002005200429036037001020052004290328370020200541086a2007290300370000200541186a2008290300370000200541286a200b290300370000200541306a2009290300370000200541386a2006290300370000200441086a200541c00041014100410010b801200428020821072005102341d2bbc100210620074101470d0e20044180016a41086a220541aefcc400ad42808080809001841003220641086a290000370300200420062900003703800120061023200441186a41086a20052903003703002004200429038001370318200541bdedc000ad4280808080e000841003220641086a290000370300200420062900003703800120061023200441e0006a41086a20052903003703002004200429038001370360410410212206450d0120044284808080c00037028401200420063602800120062001360000200020044180016a1071200428028401210720044180016a41186a2208200435028801422086200428028001220bad841001220641186a29000037030020044180016a41106a2209200641106a2900003703002005200641086a290000370300200420062900003703800120061023200441286a41186a2008290300370300200441286a41106a2009290300370300200441286a41086a2005290300370300200420042903800137032802402007450d00200b10230b41c00010212205450d02200520042903183700002005200429036037001020052004290328370020200541086a200441186a41086a2207290300370000200541186a200441e0006a41086a2208290300370000200541286a200441286a41086a2209290300370000200541306a200441286a41106a220b290300370000200541386a200441286a41186a220c2903003700002004200541c00041014100410010b801200428020021062005102320064101460d0d2004200036021420044180016a41086a220541aefcc400ad42808080809001841003220641086a290000370300200420062900003703800120061023200720052903003703002004200429038001370318200541ccf3c000ad42808080809001841003220641086a2900003703002004200629000037038001200610232008200529030037030020042004290380013703602004200136024820044180016a41186a220d200a4280808080c000841001220641186a29000037030020044180016a41106a220e200641106a2900003703002005200641086a290000370300200420062900003703800120061023200c200d290300370300200b200e29030037030020092005290300370300200420042903800137032841c00010212205450d03200520042903183700002005200429036037001020052004290328370020200541086a200441186a41086a290300370000200541186a200441e0006a41086a290300370000200541286a200441286a41086a2206290300370000200541306a200441386a290300370000200541386a200441286a41186a290300370000200441286a2005ad4280808080800884220f10041090010240024020042802282209450d0020062802002106200428022c210b0c010b20044100360288012004420137038001410020044180016a105c2004280288012106200428028401210b20042802800121090b200420063602502004200b36024c20042009360248024002402006450d0020044180016a20092006410110692004280280014101470d01200428024c450d0e200428024810230c0e0b4101200441c8006a105c2004280214200441c8006a10710c0b0b200428028401210c02402004418c016a280200220620044188016a2802002209460d002004280250200620096b6a220b41046a220d417f4c0d0502400240200d0d004101210e0c010b200d1021220e450d070b2004200d36021c2004200e3602182004200b3602202004200441186a36028001200c20044180016a2006109201200b2006490d072004280220220c200b490d082004280250220c2009490d092004280218210d2004280248210e2004200b20066b220b3602582004200c20096b220c36025c200b200c470d0a200d20066a200e20096a200b10dc041a2004280214200441186a107120042802202109200428021c210b20042802182106200428024c450d0c200428024810230c0c0b2004200441c8006a36028001200c20044180016a20091092012004280214200441c8006a10710c0a0b41c00041011030000b410441011030000b41c00041011030000b41c00041011030000b102f000b200d41011030000b2006200b103e000b200b200c1036000b2009200c103e000b200441286a41146a410d360200200441346a410e360200200441e0006a41146a410336020020044203370264200441acb6c6003602602004410e36022c2004200441d8006a3602782004200441dc006a36027c2004420437039001200442013702840120044180b7c600360280012004200441286a360270200420044180016a3602382004200441fc006a3602302004200441f8006a360228200441e0006a41bcb7c6001038000b20042802502109200428024c210b200428024821060b2006450d00200f2009ad4220862006ad8410020240200b450d00200610230b200510230c010b2005102320044180016a41086a220541aefcc400ad42808080809001841003220641086a290000370300200420062900003703800120061023200441186a41086a220920052903003703002004200429038001370318200541ccf3c000ad42808080809001841003220641086a290000370300200420062900003703800120061023200441e0006a41086a220b200529030037030020042004290380013703602004200136024820044180016a41186a220c200a4280808080c000841001220641186a29000037030020044180016a41106a220d200641106a2900003703002005200641086a290000370300200420062900003703800120061023200441286a41186a2206200c290300370300200441286a41106a220c200d290300370300200441286a41086a220d2005290300370300200420042903800137032841c00010212205450d02200520042903183700002005200429036037001020052004290328370020200541086a2009290300370000200541186a200b290300370000200541286a200d290300370000200541306a200c290300370000200541386a200629030037000020044100360288012004420137038001410120044180016a105c200428021420044180016a107120042802840121062005ad42808080808008842004350288014220862004280280012209ad84100202402006450d00200910230b200510230b20044180016a41086a220541aefcc400ad42808080809001841003220641086a290000370300200420062900003703800120061023200720052903003703002004200429038001370318200541bdedc000ad4280808080e000841003220641086a290000370300200420062900003703800120061023200820052903003703002004200429038001370360410410212205450d0220044284808080c00037028401200420053602800120052001360000200020044180016a1071200428028401210620044180016a41186a22012004350288014220862004280280012208ad841001220541186a29000037030020044180016a41106a2200200541106a29000037030020044180016a41086a2207200541086a290000370300200420052900003703800120051023200441286a41186a2001290300370300200441286a41106a2000290300370300200441286a41086a2007290300370300200420042903800137032802402006450d00200810230b41c00010212205450d03200520042903183700002005200429036037001020052004290328370020200541086a200441186a41086a290300370000200541186a200441e0006a41086a290300370000200541286a200441286a41086a290300370000200541306a200441386a290300370000200541386a200441286a41186a290300370000410110212201450d0441002106200141807f410020021b2003723a00002005ad42808080808008842001ad42808080801084100220011023200510230b200441a0016a240020060f0b41c00041011030000b410441011030000b41c00041011030000b410141011030000bd80201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602040c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d0020032002417c6a3602242003200141046a36022020012800002102200341c8006a200341206a107e20032802482205450d002000200329024c37020820002005360204200020023602000c010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360204200328022c450d00200328022810230b2004450d00200110230b200341e0006a24000bde07020c7f017e230041a0076b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360234200320043602302003200341306a106e0240024002400240024002400240024020032802000d002003280234220641b8016e220741b8016c2201417f4c0d03200328020421080240024020010d00410821090c010b200110212209450d050b2008450d01200341c0046a410472210a4100210b410121024100210103400240024002402006450d002003280230220c2d0000210d20032006417f6a3602342003200c41016a360230200d41014b0d00411a2106024002400240200d0e020100010b200341f0056a200341306a10d90120032802f005411a460d02200341c0046a200341f0056a41b00110dc041a200328023422064104490d012003280230220d280000210e20032006417c6a3602342003200d41046a36023020032802c004210620034190036a200a41ac0110dc041a2006411a460d02200341e4016a20034190036a41ac0110dc041a2006411b460d020b200341386a200341e4016a41ac0110dc041a2002417f6a2007470d030240200b2002200b20024b1b2207ad42b8017e220f422088a70d00200fa7220d41004e0d030b102a000b200341c0046a10da010b20034100360220024020024101460d0020092102034002402002280200411a460d00200210db010b200241b8016a2102200141c87e6a22010d000b0b2007450d05200910230c050b0240024020024101470d00200d102121090c010b20092001200d102521090b2009450d070b200920016a220d2006360200200d41046a200341386a41ac0110dc041a200d41b0016a200e360200024020082002470d00200341286a200836020020032007360224200320093602200c080b200b41026a210b200241016a2102200141b8016a2101200328023421060c000b0b200341003602200c010b200341286a2008360200200320073602242003200936022020090d040b200341003602c804200342013703c0042003410c360294032003200341086a360290032003200341c0046a3602e40120034184066a4101360200200342013702f40520034198c2c3003602f005200320034190036a36028006200341e4016a41b8a3c500200341f0056a102e1a20033502c80442208620033502c0048410082000410036020020032802c404450d0420032802c00410230c040b102f000b200141081030000b200d41081030000b20002003290320370200200041086a200341206a41086a2802003602000b2005450d00200410230b200341a0076a24000bf90301027f20002d00002102024002400240024002400240410110212203450d00200320023a000020002d0001210220034101410210252203450d01200320023a000120002d0002210220034102410410252203450d02200320023a0002200320002d00033a000320002d0004210220034104410810252203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d0008210220034108411010252203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d0010210220034110412010252203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad42808080808004841002200310230f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b840301047f230041e0006b22012400200141186a200041186a290000370300200141106a200041106a290000370300200141086a200041086a29000037030020012000290000370300200141c0006a41086a220241aefcc400ad42808080809001841003220041086a2900003703002001200029000037034020001023200141206a41086a22032002290300370300200120012903403703202002418ca1c100ad4280808080d000841003220041086a2900003703002001200029000037034020001023200141306a41086a2204200229030037030020012001290340370330200141c0006a200110ac01024041c000102122000d0041c00041011030000b200020012903203700002000200129033037001020002001290040370020200041086a2003290300370000200041186a2004290300370000200041286a2002290000370000200041306a200141c0006a41106a290000370000200041386a200141c0006a41186a2900003700002000ad4280808080800884100520001023200141e0006a24000bfa0c06077f027e017f017e037f0b7e23002206210720064180016b41607122062400200641e0006a41186a22084200370300200641e0006a41106a22094200370300200641e0006a41086a220a420037030020064200370360200641d0006a41086a220b41c4fbc400ad4280808080e000841003220c41086a2900003703002006200c290000370350200c1023200a200b29030037030020062006290350370360200b41f9bcc000ad4280808080e000841003220c41086a2900003703002006200c290000370350200c102320092006290350220d370300200641206a41086a200a290300370300200641206a41106a200d370300200641206a41186a200b2903003703002006200d37034020062006290360370320200641186a200641206a4120108f01200628021c210b2006280218210c2006200337033020062002370328200620043602384201210e200642013703202006200028000036023c2000350004210d200641e0006a200110df024100210f200d2005ad42ff018342208684211020062802602111200628026421120240024002400240024020062802682205450d00200b4100200c1b210420112005410574220c6a2113200641f4006a21052006290320220e21022006290328221421152006290330221621172006290338221821192011210b0340200b41086a290300210d200b41106a2903002103200b290300211a2008200b41186a29030037030020092003370300200a200d3703002006201a3703600240024020052000460d0020052900002000290000510d000240200628027020044b0d002002210d420021020c020b2009290300211b2006290368211c2006290360211d2006290378211e2002210d420121020c010b4200210e4200211442002116420021184200210d2010211e2015211d2017211c2019211b0b20024201510d02200b41206a210b200d2102200c41606a220c0d000b2006200e3703202006201437032820062016370330200620183703380b2012450d01201110230c010b2006200d3703202006201537032820062017370330200620193703380240412010212205450d002005201e3703182005201d3703002005201c370308200541106a201b370300024002400240200c4120470d004101210f200d210e4101210a0c010b200b41206a210b200641f4006a2109200d210e4101210f4101210a03400240024020092000460d00200d21020340200641e0006a41186a200b41186a290300370300200641e0006a41106a220c200b41106a290300370300200641e0006a41086a200b41086a2903003703002006200b2903003703600240024020092900002000290000510d000240200628027020044b0d002002210d420021020c020b200c290300211e2006290368211a200629036021032006290378211d2002210d420121020c010b4200210e200642003703204200210d201521032017211a2019211e2010211d0b024020024201510d00200d21022013200b41206a220b470d010c050b0b200b41206a210b0c010b0240034020064200370320200d4201510d014200210d2013200b41206a220b470d000b4200210e0c030b200b41206a210b4200210e4200210d201521032017211a2019211e2010211d0b0240200a200f470d00200f41016a220c200f490d07200f410174220a200c200a200c4b1b220a41ffffff3f71200a470d07200a410574220c4100480d0702400240200f0d00200c102121050c010b2005200f410574200c102521050b2005450d030b2005200f4105746a220c201a370308200c2003370300200c41106a201e370300200c41186a201d370300200f41016a210f200b2013470d000b0b2012450d03201110230c030b200c41081030000b412041081030000b4100210a410821050b02400240200e4201520d00200641e0006a41106a2200200641206a410872220b41106a290300370300200641e0006a41086a220c200b41086a2903003703002006200b2903003703600240200f200a470d00200f41016a220b200f490d03200f4101742209200b2009200b4b1b220a41ffffff3f71200a470d03200a410574220b4100480d0302400240200f0d00200b102121050c010b2005200f410574200b102521050b2005450d020b2005200f4105746a220b2006290360370300200b41106a2000290300370300200b41086a200c290300370300200b41186a2010370300200f41016a210f0b2006200f3602682006200a360264200620053602602001200641e0006a10e002200724000f0b200b41081030000b102a000b830d0b077f017e017f017e067f027e017f027e027f017e017f230041f0006b22032400200341d0006a41186a22044200370300200341d0006a41106a2205420037030041082106200341d0006a41086a2207420037030020034200370350200341386a41086a220841c4fbc400ad4280808080e000841003220941086a29000037030020032009290000370338200910232007200829030037030020032003290338370350200841f9bcc000ad4280808080e000841003220941086a290000370300200320092900003703382009102320052003290338220a370300200341086a41086a2007290300370300200341086a41106a200a370300200341086a41186a20082903003703002003200a370328200320032903503703082003200341086a4120108f0120032802042108200328020021092000280000210b2000350004210c200341d0006a200110df024100210d2003280250210e2003280254210f02400240024002400240024002400240024020032802582210450d002008410020091b2111200e201041057422106a2112200341e4006a2109200e21080340200841086a290300210a200841106a2903002113200829030021142004200841186a290300370300200520133703002007200a3703002003201437035020092000460d0220092900002000290000510d0202402003280260221520114d0d002003410a6a200341ef006a2d00003a0000200320032f006d3b0108200341d8006a2903002114427f2113200329035021164201210a20032d006c2109200329026421170c040b200841206a2108201041606a22100d000b0b200f450d02200e10230c020b200328026022092002200920024b1b211520032d006c4102722109427f21164200211341002102200329026421174200210a4100210b427f21140b200341cc006a41026a220d200341086a41026a2d00003a0000200320032f01083b014c02400240412010212206450d0020062016370300200620093a001c2006201737021420062015360210200620032f014c3b001d200620143703082006411f6a200d2d00003a00000240024020104120470d004101210d20132114410121070c010b200841206a2104201241606a2115200341ed006a2118200341e4006a2109201321144101210d41012107034020042108024002400340200341d0006a41186a200841186a290300370300200341d0006a41106a200841106a290300370300200341d0006a41086a2210200841086a290300370300200320082903003703500240024020092000460d0020092900002000290000510d002003280260220520114d0d01200341086a41026a201841026a2d00003a0000200320182f00003b0108201029030021162003290350211720032d006c21192003290264211a0c040b200a4201510d024200211341002102420021144200210a4100210b0b2012200841206a2208470d000c040b0b2010290300220a201420032903502217201356200a201456200a2014511b22101b21162017201320101b2117200328026022102002201020024b1b210520032d006c410272211942002113410021022003290264211a420021144200210a4100210b0b200341286a41026a200341086a41026a2d000022103a0000200320032f010822043b0128200341d0006a41026a221b20103a0000200320043b015002402007200d470d00200d41016a2210200d490d0a200d41017422072010200720104b1b220741ffffff3f712007470d0a200741057422104100480d0a02400240200d0d002010102121060c010b2006200d4105742010102521060b2006450d040b200841206a21042006200d4105746a221020193a001c20102016370308201020173703002010201a37021420102005360210201020032f01503b001d2010411f6a201b2d00003a0000200d41016a210d20152008470d000b0b0240200f450d00200e10230b200a4201520d05200d2007470d040c030b412041081030000b201041081030000b427f2113427f21140b200d41016a2208200d490d03200d41017422002008200020084b1b220741ffffff3f712007470d03200741057422084100480d0302400240200d0d002008102121060c010b2006200d4105742008102521060b2006450d020b2006200d4105746a22082014370308200820133703002008200b36021420082002360210200841186a200c42808080802084370300200d41016a210d0b2003200d36025820032007360254200320063602502001200341d0006a10e002200341f0006a24000f0b200841081030000b102a000bb40602067f017e23004180016b22032400200341c8006a41086a22044182fdc400ad4280808080a001841003220541086a2900003703002003200529000037034820051023200341086a41086a200429030037030020032003290348370308200441fbbdc100ad4280808080f001841003220541086a2900003703002003200529000037034820051023200341186a41086a200429030037030020032003290348370318024002400240410410212204450d002004200236000020044104410810252205450d0120052001360004200341c8006a41186a22012005ad42808080808001841001220441186a290000370300200341c8006a41106a2206200441106a290000370300200341c8006a41086a2207200441086a2900003703002003200429000037034820041023200341286a41186a22082001290300370300200341286a41106a22012006290300370300200341286a41086a22062007290300370300200320032903483703282005102341c00010212204450d02200420032903083700002004200329031837001020042003290328370020200441086a200341086a41086a290300370000200441186a200341186a41086a290300370000200441286a2006290300370000200441306a2001290300370000200441386a2008290300370000200341c00036026c20032004360268200341186a2004ad4280808080800884100410900102400240200328021822010d00410021050c010b200328021c21062003200341206a28020036027420032001360270200341c8006a200341f0006a107d0240024020032802482205450d00200329024c21090c010b4100210520034100360230200342013703282003410c36020c2003200341e8006a3602082003200341286a36027c200341dc006a41013602002003420137024c20034198c2c3003602482003200341086a360258200341fc006a41b8a3c500200341c8006a102e1a200335023042208620033502288410080240200328022c450d00200328022810230b0b2006450d00200110230b2004102302402005450d0020002009370208200020023602000b2000200536020420034180016a24000f0b410441011030000b410841011030000b41c00041011030000bee1405177f017e017f027e047f230041206b220224000240024020014115490d0002402001410176220341ffffff3f712003470d0020034105742204417f4c0d0041012105024002402004450d00200410212205450d010b200041606a2106200041a07f6a210741002108410021094104210a4100210b2001210c034002400240200c220d417f6a220e0d004101210f4100210c0c010b0240024002400240024002402000200e4105746a200d410574221020006a41406a412010de044100480d004102200d6b210e200720106a21044101210f03400240200e200f6a4101470d004100210c200d210f0c080b200f41016a210f200441206a2004412010de042111200441606a21042011417f4a0d000b200d200f6b210e0c010b200720106a2104024003400240200e4101470d004100210e0c020b200e417f6a210e200441206a2004412010de042111200441606a210420114100480d000b0b200d200e490d01200d20014b0d03200d200e6b220f4101762212450d00200620106a21042000200e4105746a21110340200241186a2210201141186a2213290000370300200241106a2214201141106a2215290000370300200241086a2216201141086a221729000037030020022011290000370300200441086a22182900002119200441106a221a290000211b200441186a220c290000211c201120042900003700002013201c3700002015201b37000020172019370000200c2010290300370000201a20142903003700002018201629030037000020042002290300370000200441606a2104201141206a21112012417f6a22120d000b0b0240200e0d00200e210c0c050b0240200f41094d0d00200e210c0c050b200d20014b0d01200d200e6b21122000200e4105746a21100340200d200e417f6a220c490d040240200d200c6b220f4102490d002000200e4105746a22042000200c4105746a220e412010de04417f4a0d00200e2900002119200e2004290000370000200241186a2216200e41186a2211290000370300200241106a2217200e41106a2213290000370300200241086a2218200e41086a22142900003703002014200441086a2900003700002013200441106a2900003700002011200441186a29000037000020022019370300410121150240200f4103490d00200e41c0006a2002412010de04417f4a0d00410221112010210402400340200441186a200441386a290000370000200441106a200441306a290000370000200441086a200441286a2900003700002004200441206a221329000037000020122011460d01200441c0006a21142011211520132104201141016a211120142002412010de04417f4a0d020c000b0b201121150b200e20154105746a22042002290300370000200441186a2016290300370000200441106a2017290300370000200441086a20182903003700000b200c450d05201041606a2110201241016a2112200c210e200f410a4f0d050c000b0b200e200d103e000b200d200e417f6a220c490d010b200d20011036000b200c200d103e000b024002400240200b2009470d0002400240200941016a22042009490d00200941017422112004201120044b1b220441ffffffff01712004470d002004410374221141004e0d010b102a000b0240024020090d0020111021210a0c010b200a200941037420111025210a0b200a450d01200421092008210b0b200a200b4103746a2204200f3602042004200c360200200841016a220b2108200b4102490d01024003400240024002400240200a200b417f6a22084103746a2204280200450d00200b410374200a6a220f41746a280200220e200428020422114d0d000240200b41024b0d00200b21084102210b0c080b200a200b417d6a22164103746a28020422042011200e6a4d0d010240200b41034b0d00200b21084103210b0c080b200f41646a2802002004200e6a4d0d01200b21080c070b200b4103490d0120042802042111200a200b417d6a22164103746a28020421040b20042011490d010b200b417e6a21160b024002400240024002400240200b201641016a221d4b221e450d00200b20164b221f450d01200a20164103746a2217280204222020172802006a2204200a201d4103746a2218280200221a490d02200420014b0d032000201a4105746a22142018280204221541057422116a210f2004410574210e2004201a6b220d20156b220420154f0d042005200f2004410574221110dc04221320116a21120240024020154101480d00200441014e0d010b200f2104201321110c060b2006200e6a210e200f21040340200e200441606a220f201241606a220d200d200f412010de0441004822101b2211290000370000200e41186a201141186a290000370000200e41106a201141106a290000370000200e41086a201141086a2900003700002012200d20101b211202402014200f200420101b2204490d00201321110c070b200e41606a210e2013211120132012490d000c060b0b4198bfc100201d200b102d000b4198bfc1002016200b102d000b201a2004103e000b200420011036000b20052014201110dc04221320116a21120240024020154101480d00200d20154a0d010b20142104201321110c010b2000200e6a2110201321112014210403402004200f2011200f2011412010de04410048220d1b220e290000370000200441186a200e41186a290000370000200441106a200e41106a290000370000200441086a200e41086a2900003700002011201141206a200d1b2111200441206a2104200f41206a200f200d1b220f20104f0d01201220114b0d000b0b20042011201220116b41607110dc041a0240201f450d002017201a360200201741046a202020156a360200201e450d022018201841086a200b201d417f736a41037410dd041a2008210b200841014d0d040c010b0b41a8bfc1002016200b102d000b41b8bbc000102b000b201141041030000b200c0d000b02402009450d00200a10230b2003450d03200510230c030b200441011030000b102f000b20014102490d002001417f6a2111200141057420006a41206a2110410121120340024002400240024020112204417f6a221120014b0d00200120116b220e4102490d03200020044105746a2204200020114105746a220d412010de04417f4a0d03200d2900002119200d2004290000370000200241186a2214200d41186a220f290000370300200241106a220b200d41106a2213290000370300200241086a2215200d41086a220a290000370300200a200441086a2900003700002013200441106a290000370000200f200441186a2900003700002002201937030041012104200e4103490d02200d41c0006a2002412010de04417f4a0d0241002113201021040340200441406a220e200441606a220f290000370000200e41186a200f41186a290000370000200e41106a200f41106a290000370000200e41086a200f41086a29000037000020122013220e460d02200e417f6a211320042002412010de04210f200441206a2104200f417f4a0d020c000b0b20112001103e000b4102200e6b21040b200d20044105746a22042002290300370000200441186a2014290300370000200441106a200b290300370000200441086a20152903003700000b201041606a21102012417f6a211220110d000b0b200241206a24000be60401067f230041106b2203240020034100360208200342013703000240024002400240024020012d0000220441024b0d0002400240024020040e03000102000b410110212204450d03200342818080801037020420032004360200200441013a0000200141086a200310b1010c020b410110212204450d03200342818080801037020420032004360200200441023a00002003200336020c200141016a2003410c6a106b0c010b410110212204450d03200342818080801037020420032004360200200441033a00002003200336020c200141016a2003410c6a106b0b20032802002104024020032802042205200328020822066b4120490d00200641206a21070c040b0240200641206a22072006490d00200541017422082007200820074b1b22084100480d000240024020050d002008102121040c010b200420052008102521040b02402004450d00200821050c050b200841011030000b102a000b410141011030000b410141011030000b410141011030000b200420066a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a290000370000200020073602082000200536020420002004360200024020012d00000d000240200141206a280200450d002001411c6a28020010230b02402001412c6a280200450d00200141286a28020010230b02402001413c6a2802002204450d00200141346a28020021022004410474210403400240200241046a280200450d00200228020010230b200241106a2102200441706a22040d000b0b200141386a280200450d00200128023410230b200341106a24000b980401067f230041e0006b22012400200141c0006a41086a22024182fdc400ad4280808080a001841003220341086a2900003703002001200329000037034020031023200141086a200229030037030020012001290340370300200241fbbdc100ad4280808080f001841003220341086a2900003703002001200329000037034020031023200141106a41086a200229030037030020012001290340370310024002400240410410212202450d00200220002802003600002000280204210320024104410810252200450d0120002003360004200141c0006a41186a22032000ad42808080808001841001220241186a290000370300200141c0006a41106a2204200241106a290000370300200141c0006a41086a2205200241086a2900003703002001200229000037034020021023200141206a41186a22062003290300370300200141206a41106a22032004290300370300200141206a41086a22042005290300370300200120012903403703202000102341c00010212202450d02200220012903003700002002200129031037001020022001290320370020200241086a200141086a290300370000200241186a200141106a41086a290300370000200241286a2004290300370000200241306a2003290300370000200241386a20062903003700002002ad4280808080800884100520021023200141e0006a24000f0b410441011030000b410841011030000b41c00041011030000bf70b07067f017e067f017e067f027e037f23004180016b22012400200141e0006a41186a22024200370300200141e0006a41106a22034200370300200141e0006a41086a2204420037030020014200370360200141086a22054191fdc400ad42808080809001841003220641086a2900003703002001200629000037030020061023200420052903003703002001200129030037036020054184ddc100ad4280808080e000841003220641086a2900003703002001200629000037030020061023200320012903002207370300200141206a41086a22082004290300370300200141206a41106a22092007370300200141206a41186a220a20052903003703002001200737034020012001290360370320200141e0006a200141206a10fe01024002402001280260220b0d004104210b4100210c4100210d0c010b20012902642207422088a7210c2007a7210d0b2002420037030020034200370300200442003703002001420037036020054182fdc400ad4280808080a001841003220641086a29000037030020012006290000370300200610232004200529030037030020012001290300370360200541fccfc300ad4280808080b001841003220641086a2900003703002001200629000037030020061023200141c0006a41086a2005290300220737030020012001290300220e3703402003200e370000200341086a20073700002008200429030037030020092003290300370300200a200229030037030020012001290360370320200141d0006a200141206a10bc0102400240200128025022050d00410021030c010b20012902542207422088a721032007a7450d00200510230b4100210f4100210a0240200c450d002003417f6a200c6e210a0b02400240024002400240024020030d0041042108410021050c010b02400240200341ffffffff01712003470d00200341037422054100480d002005102122080d01200541041030000b102a000b0240200a450d00200a200c6c210941002105200821040340410021020240200920054d0d00200c2005200a6e22024d0d04200b2002412c6c6a2802002106410121020b20042002360200200441046a2006360200200441086a21042003200541016a2205470d000b2003210f0c010b2003210420082105034020054100360200200541086a21052004417f6a22040d000b2003210f200321050b200141206a4188c0c100411410ff0141002104200141e0006a41186a220a41204100412020034102746b2202200241204b1b22026bad422086200141206a20026aad841001220241186a290000370300200141e0006a41106a2210200241106a290000370300200141e0006a41086a2211200241086a2900003703002001200229000037036020021023200141186a2212200a2903002207370300200141106a22132010290300220e370300200141086a221420112903002215370300200120012903602216370300200141206a41186a22172007370300200141206a41106a2218200e370300200141206a41086a221920153703002001201637032041002003417f6a2202200220034b1b2209450d032001ad4280808080800484210e034002402004411c71220241046a220641204d0d00200641201036000b200120026a2800002003410120031b220c70210602402002411c470d00200a200e1001220241186a2900003703002010200241106a2900003703002011200241086a29000037030020012002290000370360200210232012200a2903003703002013201029030037030020142011290300370300200120012903603703000b200c417f6a220220054f0d02200620054f0d03200820024103746a220229020021072002200820064103746a220629020037020020062007370200200441046a21042003417f6a21032009417f6a22090d000c040b0b41a0abc2002002200c102d000b419cc0c10020022005102d000b41acc0c10020062005102d000b200020053602082000200f360204200020083602002000200129032037000c200041146a20192903003700002000411c6a2018290300370000200041246a20172903003700000240200d450d00200b10230b20014180016a24000b900b02117f037e230041c0026b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360234200220033602302002200241306a106e02400240024002400240024020022802000d00024002400240024020022802342205412c6e2206412c6c2201417f4c0d00200228020421070240024020010d00410421080c010b200110212208450d020b02402007450d0041002109034020054104490d0920022005417c6a220a36023420022002280230220b41046a2201360230200a450d09200b280000210c20022005417b6a220d3602342002200141016a36023020012d0000220141014b0d094102210e0240024020010e020100010b41002101200241003a00b8022005417b6a210d417a210a03400240200d2001470d00200141ff0171450d0b200241003a00b8020c0b0b20024198026a20016a200b20016a220e41056a2d00003a000020022005200a6a3602342002200e41066a3602302002200141016a220e3a00b802200a417f6a210a200e2101200e4120470d000b200241f8016a41186a220f20024198026a41186a290300370300200241f8016a41106a221020024198026a41106a290300370300200241f8016a41086a221120024198026a41086a29030037030020022002290398023703f801200d200e460d0920022005200a6a220d3602342002200b200e6a220141066a220b360230200141056a2d0000220a41014b0d09024002400240200a0e020100010b200d4104490d0b20022005200e6b41766a220d36023420022001410a6a360230200b28000021124101210e0c010b4100210e0b200241b8016a41086a2011290300221337030020024198016a41186a200f29030037030020024198016a41106a201029030037030020024198016a41086a2013370300200220022903f80122133703b80120022013370398010b200941016a210a200241d8006a41086a20024198016a41086a2903002213370300200241d8006a41106a20024198016a41106a2903002214370300200241d8006a41186a20024198016a41186a2903002215370300200241386a41086a22052013370300200241386a41106a220b2014370300200241386a41186a220f20153703002002200229039801221337035820022013370338024020062009470d0020094101742201200a2001200a4b1b2206ad422c7e2213422088a70d062013a722014100480d060240024020090d002001102121080c010b20082009412c6c2001102521080b2008450d050b20082009412c6c6a2201200c360200200120022903383702042001410c6a2005290300370200200141146a200b2903003702002001411c6a200f290300370200200141286a2012360200200141246a200e360200200d2105200a2109200a2007470d000b200241286a200736020020022006360224200220083602200c060b200241286a2007360200200220063602242002200836022020080d050c080b102f000b200141041030000b200141041030000b102a000b200241003602200c030b20002002290320370200200041086a200241206a41086a2802003602000c030b200241b8016a41186a200241d8016a41186a290300370300200241b8016a41106a200241d8016a41106a2903003703000b200241003602202006450d00200810230b2002410036028002200242013703f8012002410c3602dc012002200241086a3602d8012002200241f8016a3602b801200241ac026a41013602002002420137029c0220024198c2c300360298022002200241d8016a3602a802200241b8016a41b8a3c50020024198026a102e1a20023502800242208620023502f8018410082000410036020020022802fc01450d0020022802f80110230b2004450d00200310230b200241c0026a24000bdb1b05047f017e047f017e277f230041c00d6b220324002003200236020c20032001360208200341206a41186a22024200370300200341206a41106a22044200370300200341206a41086a2201420037030020034200370320200341800d6a41086a220541c4fbc400ad4280808080e000841003220641086a290000370300200320062900003703800d2006102320012005290300370300200320032903800d370320200541f9bcc000ad4280808080e000841003220641086a290000370300200320062900003703800d20061023200420032903800d2207370300200341a00d6a41086a22082001290300370300200341a00d6a41106a22092007370300200341a00d6a41186a220a200529030037030020032007370310200320032903203703a00d2003200341a00d6a4120108f01200328020421062003280200210b20024200370300200442003703002001420037030020034200370320200541d899c600ad42808080808003841003220441086a290000370300200320042900003703800d2004102320012005290300370300200320032903800d370320200541f099c600ad4280808080e001841003220441086a290000370300200320042900003703800d2004102320022005290300220737030020082001290300370300200920032903800d220c370300200a20073703002003200c370310200320032903203703a00d200341206a200341a00d6a412010bb0120032802202201410120011b210d024002402003290224420020011b2207422088a722020d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341206a410041e00c10db041a2006417f6a41d100704130200b1b2101200d41206a210e200d20024105746a210f410021104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f200d210b4100213041d10021310240034020302104024002400240024002402001450d00200d450d03200141016a2102200b21010340024002402001200f470d00200e210b200e2101200d21060c010b20012106200141206a220b21010b2002417f6a22020d000c020b0b200b200f470d01200e210b200d21060b20060d020c040b200b2106200b41206a210b0c010b200b200f460d02200141016a210202400340200b41206a21012002417f6a2202450d012001210b200f2001460d040c000b0b200b21062001210b2006450d020b024002400240024002400240200328020c220141056a2202417f4c0d0020032802082132024002402002450d00200210212230450d0341002133200341003602a80d200320023602a40d200320303602a00d0c010b200341003602a80d200320023602a40d200341013602a00d410110212230450d03200341013602a40d200320303602a00d20032802a80d21330b2003203341016a3602a80d203020336a20043a00002001200341a00d6a105c0240024020032802a40d223320032802a80d22026b2001490d0020032802a00d21330c010b200220016a22302002490d05203341017422022030200220304b1b22024100480d050240024020330d002002102121330c010b20032802a00d20332002102521330b2033450d04200320023602a40d200320333602a00d20032802a80d21020b2003200220016a3602a80d203320026a2032200110dc041a2003200341a00d6a3602102006200341106a106b20032802a40d2102200a20033502a80d42208620032802a00d2230ad841001220141186a2900003703002009200141106a2900003703002008200141086a290000370300200320012900003703a00d20011023200341800d6a41186a2206200a290300370300200341800d6a41106a2233200929030037030020052008290300370300200320032903a00d3703800d02402002450d00203010230b2031417f6a2131200441016a2130200341206a20044103704105746a220120032903800d370000200141186a2006290300370000200141106a2033290300370000200141086a20052903003700004100210203402004200441036e2206417d6c6a4102470d06200341206a20026a220141df006a2d000022102001411f6a2d000022117120102011722001413f6a2d00007172212d200141de006a2d000022102001411e6a2d000022117120102011722001413e6a2d00007172212c200141dd006a2d000022102001411d6a2d000022117120102011722001413d6a2d00007172212b200141dc006a2d000022102001411c6a2d000022117120102011722001413c6a2d00007172212a200141db006a2d000022102001411b6a2d000022117120102011722001413b6a2d000071722129200141da006a2d000022102001411a6a2d000022117120102011722001413a6a2d000071722128200141d9006a2d00002210200141196a2d00002211712010201172200141396a2d000071722127200141d8006a2d00002210200141186a2d00002211712010201172200141386a2d000071722126200141d7006a2d00002210200141176a2d00002211712010201172200141376a2d000071722125200141d6006a2d00002210200141166a2d00002211712010201172200141366a2d000071722124200141d5006a2d00002210200141156a2d00002211712010201172200141356a2d000071722123200141d4006a2d00002210200141146a2d00002211712010201172200141346a2d000071722122200141d3006a2d00002210200141136a2d00002211712010201172200141336a2d000071722121200141d2006a2d00002210200141126a2d00002211712010201172200141326a2d000071722120200141d1006a2d00002210200141116a2d00002211712010201172200141316a2d00007172211f200141d0006a2d00002210200141106a2d00002211712010201172200141306a2d00007172211e200141cf006a2d000022102001410f6a2d000022117120102011722001412f6a2d00007172211d200141ce006a2d000022102001410e6a2d000022117120102011722001412e6a2d00007172211c200141cd006a2d000022102001410d6a2d000022117120102011722001412d6a2d00007172211b200141cc006a2d000022102001410c6a2d000022117120102011722001412c6a2d00007172211a200141cb006a2d000022102001410b6a2d000022117120102011722001412b6a2d000071722119200141ca006a2d000022102001410a6a2d000022117120102011722001412a6a2d000071722118200141c9006a2d00002210200141096a2d00002211712010201172200141296a2d000071722117200141c8006a2d00002210200141086a2d00002211712010201172200141286a2d000071722116200141c7006a2d00002210200141076a2d00002211712010201172200141276a2d000071722115200141c6006a2d00002210200141066a2d00002211712010201172200141266a2d000071722114200141c5006a2d00002210200141056a2d00002211712010201172200141256a2d000071722113200141c4006a2d00002210200141046a2d00002211712010201172200141246a2d000071722112200141c3006a2d00002210200141036a2d00002211712010201172200141236a2d000071722111200141c2006a2d00002210200141026a2d0000222e712010202e72200141226a2d000071722110200141c1006a2d0000222e200141016a2d0000222f71202e202f72200141216a2d00007172212e200141c0006a2d0000222f20012d0000223371202f203372200141206a2d00007172212f200241800c460d06200341206a20022006410574200441096e41e0006c6b6a6a220141ff006a202d3a0000200141fe006a202c3a0000200141fd006a202b3a0000200141fc006a202a3a0000200141fb006a20293a0000200141fa006a20283a0000200141f9006a20273a0000200141f8006a20263a0000200141f7006a20253a0000200141f6006a20243a0000200141f5006a20233a0000200141f4006a20223a0000200141f3006a20213a0000200141f2006a20203a0000200141f1006a201f3a0000200141f0006a201e3a0000200141ef006a201d3a0000200141ee006a201c3a0000200141ed006a201b3a0000200141ec006a201a3a0000200141eb006a20193a0000200141ea006a20183a0000200141e9006a20173a0000200141e8006a20163a0000200141e7006a20153a0000200141e6006a20143a0000200141e5006a20133a0000200141e4006a20123a0000200141e3006a20113a0000200141e2006a20103a0000200141e1006a202e3a0000200141e0006a202f3a000020062104200241e0006a220241e00c470d000c060b0b102f000b200241011030000b410141011030000b200241011030000b102a000b4100210120310d000b0b2000202d3a001f2000202c3a001e2000202b3a001d2000202a3a001c200020293a001b200020283a001a200020273a0019200020263a0018200020253a0017200020243a0016200020233a0015200020223a0014200020213a0013200020203a00122000201f3a00112000201e3a00102000201d3a000f2000201c3a000e2000201b3a000d2000201a3a000c200020193a000b200020183a000a200020173a0009200020163a0008200020153a0007200020143a0006200020133a0005200020123a0004200020113a0003200020103a00022000202e3a00012000202f3a00000b02402007a7450d00200d10230b200341c00d6a24000bfc0301067f230041f0006b22022400200241d0006a41086a22034182fdc400ad4280808080a001841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341ecbdc100ad4280808080d000841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c00010212203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010c00102400240200228025022040d00200041003602000c010b20002002290254370204200020043602000b20031023200241f0006a24000f0b41c00041011030000b340020004182fdc40036020420004100360200200041146a4109360200200041106a4194c1c100360200200041086a420a3702000b3001017f02404108102122020d00410841011030000b20024200370000200042888080808001370204200020023602000b2201017f230041106b220224002002410036020020002002108402200241106a24000b970301067f230041106b22022400024002400240024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b102f000b200410212205450d03200241003602082002200436020420022005360200024020030d00200541003a0000200241013602080c030b20040d010b410110212205450d0320024101360204200220053602000b200541013a000020024101360208200141086a28020022042002105c0240024020022802042201200228020822056b2004490d00200228020021010c010b200520046a22062005490d05200141017422072006200720064b1b22064100480d050240024020010d002006102121010c010b200228020020012006102521010b2001450d0420022006360204200220013602000b2002200520046a360208200120056a2003200410dc041a0b20002002290300370200200041086a200241086a280200360200200241106a24000f0b200441011030000b410141011030000b200641011030000b102a000ba1b0010d057f017e037f017e117f037e027f027e097f017e027f027e167f230041c0076b2204240041aab0c0002105410f210602400240200141ff01710d00200241ff01714102470d00200441d8016a41186a4200370300200441d8016a41106a22074200370300200441d8016a41086a22024200370300200442003703d801200441b0076a41086a22014182fdc400ad4280808080a001841003220841086a290000370300200420082900003703b0072008102320022001290300370300200420042903b007220937038807200420093703d801200141b39fc600ad42808080809001841003220841086a290000370300200420082900003703b00720081023200720042903b0072209370300200441b8016a41086a2002290300370300200441b8016a41106a2009370300200441b8016a41186a20012903003703002004200937038804200420042903d8013703b801200441c0006a200441b8016a412041014100410010b801024020042802404101470d0041dbd3c1002105413621060c010b200441b8056a41186a4200370300200441b8056a41106a220a4200370300200441b8056a41086a22024200370300200442003703b80520014191fdc400ad42808080809001841003220841086a290000370300200420082900003703b0072008102320022001290300370300200420042903b0073703b80520014184ddc100ad4280808080e000841003220841086a290000370300200420082900003703b00720081023200a20042903b007220937030020044188046a41086a200229030037030020044188046a41106a200937030020044188046a41186a2001290300370300200420093703c802200420042903b80537038804200441c8026a20044188046a10fe0120042802c8022201410420011b210b02400240200341086a280200220c20042902cc02420020011b220d422088a7220e4d0d004191d4c1002105411d21060c010b02400240024002400240200c41ffffffff0371200c470d00200c4102742201417f4c0d00024002400240024002400240024020010d004104210f0c010b20011021220f450d010b200441003602502004200c36024c2004200f3602480240200e0d0041002102200f2108200c21100c090b20032802002211200c41d0016c6a2112200c450d02200441c8026aad4280808080c000842109200b200e412c6c6a2108200c2113200c21144100211541012101200b21162011211702400340201722182802102119200441c8006a211a024020014101710d0020022019490d004194d7c1002105411621060c060b201841d0016a2117201621010340024020082001470d0041ddd6c1002105412721060c070b200128020021022001412c6a2216210120022019470d000b0240201641786a2802004102460d00201841e0006a2016460d00201641586a201841386a412010de04450d004184d7c1002105411021060c060b0240201841346a280200221b450d00201828022c2110200441b0076a41086a22014182fdc400ad4280808080a001841003220241086a290000370300200420022900003703b0072002102320044188076a41086a22052001290300370300200420042903b00737038807200141acc9c100ad4280808080e002841003220241086a290000370300200420022900003703b0072002102320044188046a41086a22022001290300370300200420042903b00737038804200420193602c802200441b8056a41186a220620091001220141186a290000370300200441b8056a41106a221c200141106a290000370300200441b8056a41086a221d200141086a290000370300200420012900003703b80520011023200441d8016a41186a221e2006290300370300200441d8016a41106a2206201c290300370300200441d8016a41086a221c201d290300370300200420042903b8053703d80141c00010212201450d022001200429038807370000200141086a20052903003700002001200429038804370010200141186a2002290300370000200120042903d801370020200141286a201c290300370000200141306a2006290300370000200141386a201e290300370000200441c8026a200141c00010860220042802cc02210220042802d002211c20042802c8022105200110230240200241002005410146221d1b201b6a22014101460d0041bcd7c1002105411e2106200141e4004b0d07201c4100201d1b2102201b410474211c201041086a21010340200128020020026a2102200141106a2101201c41706a221c0d000b200241a09c014b0d070b201941e807490d00201b410474210103402001450d01200141706a210120102d000c2102201041106a211020024102470d000b41aad7c1002105411221060c060b024020182802282201450d0020182802202205200141246c6a211c41002101200b211903400240024020010d00200528020021010c010b200128020020052802002201490d004120210641ccd8c10021050c080b024020012018280210470d004119210641b3d8c10021050c080b200441d8016a41086a41002900e2d741221f370300200441d8016a41106a41002900ead7412220370300200441d8016a41186a41002900f2d7412221370300200441c8026a41086a201f370300200441c8026a41106a2020370300200441c8026a41186a2021370300200441002900dad741221f3703d8012004201f3703c802200441c8026a200541046a2201460d052001200441c8026a412010de04450d05200541246a2106201921010340024020082001470d00412121064192d8c10021050c090b200128020021022001412c6a2219210120022005280200470d000b20052101200621052006201c470d000b0b201828021021020240024020152014470d00024020132014460d00201321140c010b201341016a22012013490d0d201341017422052001200520014b1b221441ffffffff03712014470d0d201441027422014100480d0d0240024020130d0020011021210f0c010b200f201341027420011025210f0b200f450d012004201436024c2004200f360248201421130b200f20154102746a20023602002004201541016a22153602504100210120172012470d010c050b0b200141041030000b41c00041011030000b200141041030000b4118210641fad7c10021050c010b200441b8056a41186a22164200370300200441b8056a41106a22054200370300200441b8056a41086a22024200370300200442003703b805200441b0076a41086a22014182fdc400ad4280808080a001841003220841086a290000370300200420082900003703b0072008102320022001290300370300200420042903b0073703b805200141fccfc300ad4280808080b001841003220841086a290000370300200420082900003703b00720081023200441c8026a41086a20012903002209370300200420042903b007221f3703c802200a201f370000200a41086a200937000020044188046a41086a200229030037030020044188046a41106a200529030037030020044188046a41186a2016290300370300200420042903b80537038804200441c8026a20044188046a10bc0120042802c802211a20042902cc022109200441c8026a10fd0120042802cc02212220042802c802211320042802d002210f200441f8016a41186a200441ec026a290200370300200441f8016a41106a200441e4026a290200370300200441f8016a41086a200441dc026a290200370300200420042902d4023703f801200f200f41ffffffff0171470d02200f4103742201417f4c0d02024002400240024020010d00410421190c010b200110212219450d010b024002400240200f41037422010d00410021080c010b201320016a2118410021082013211c4100211003400240201c2802004101470d00024002400240200841014b0d000240024020080e020001000b201c2802042106410021010c030b201c2802042106410021010c010b201c28020421064100210120082102034020012002410176221620016a2205201920054103746a28020420064b1b2101200220166b220241014b0d000b0b0240201920014103746a28020422022006460d00200120022006496a21010b200820014f0d004180bbc000102b000b02402008200f470d00200f41016a2202200f490d0d200f41017422162002201620024b1b220241ffffffff01712002470d0d200241037422164100480d0d02400240200f0d002016102121190c010b2019200f4103742016102521190b2019450d042002210f0b201920014103746a220241086a2002200820016b41037410dd041a2002200636020420022010360200200841016a21080b201041016a2110201c41086a221c2018470d000b0b200441b8056a41186a22164200370300200441b8056a41106a22054200370300200441b8056a41086a22014200370300200442003703b805200441b0076a41086a220241c4fbc400ad4280808080e000841003220641086a290000370300200420062900003703b0072006102320012002290300370300200420042903b0073703b805200241ffbcc000ad4280808080a001841003220641086a290000370300200420062900003703b00720061023200441c8026a41086a2002290300221f370300200420042903b00722203703c802200a2020370000200a41086a201f37000020044188046a41086a200129030037030020044188046a41106a200529030037030020044188046a41186a2016290300370300200420042903b80537038804200441c8026a20044188046a4120108a0120042d00c80221022016200441e1026a2900003703002005200441d9026a2900003703002001200441d1026a290000370300200420042900c9023703b8050240024020024101460d00200441e8066a41186a4200370300200441e8066a41106a4200370300200441e8066a41086a4200370300200442003703e8060c010b200441e8066a41186a2016290300370300200441e8066a41106a2005290300370300200441e8066a41086a2001290300370300200420042903b8053703e8060b20094200201a1b2109201a4101201a1b21230240200c0d004101211e4100211b4100211d0c050b2019410c6a2117200441b8056aad42808080808002842124200441c8026aad428080808080048421252009422088a72126200441c8026a4101722127200441b8056a41106a2114200441e8036a2128200441a8036a212920044188036a212a200441fc026a212b412021064100211b4100211d4101211e4100210203402011211541aed4c100210520022008460d03201541d0016a2111201528021021182002211c024002400240024002400240024002400240034002400240201c20084f0d002019201c41037422106a221a28020421162008201c41016a22024d0d01201720106a2101034020012802002016470d02200141086a21012008200241016a2202470d000b200821020c010b41bcc0c100201c2008102d000b2002201c490d010240200820024f0d00200220081036000b024020162018460d002002211c20022008460d0e0c010b0b201a450d0c0240201541c0016a222c28020022162002201c6b220141017620014101716a4f0d0041ced4c10021050c0d0b0240201620264d0d00413c210641eed4c10021050c0d0b201541086a220c290300211f20152903002120200420183602b80220044188046a200441b8026a10870220044188076a20044188046a2020201f4108410010880202402004280288074101470d002004280290072106200428028c0721050c0d0b20044188076a41106a222d2903002121200429039007211f200441b8056a41186a222e420037030020144200370300200441b8056a41086a22184200370300200442003703b805200441b0076a41086a221641d5fbc400ad428080808080018422201003220141086a290000370300200420012900003703b0072001102320182016290300370300200420042903b007222f3703b8012004202f3703b805200441d8016a41086a223041d6a0c200ad4280808080d00184222f1003220141086a290000370300200420012900003703d80120011023200441b8016a41086a223120302903002232370300200420042903d80122333703b80120142033370000201441086a22052032370000200441c8026a41086a22342018290300370300200441c8026a41106a22352014290300370300200441c8026a41186a2236202e290300370300200420042903b8053703c802200441286a200441c8026a4120108902200441286a41106a29030021322004290330213320042802282101202e42003703002014420037030020184200370300200442003703b805203020201003221641086a290000370300200420162900003703d8012016102320182030290300370300200420042903d80122203703b801200420203703b8052030202f1003221641086a290000370300200420162900003703d80120161023203120302903002220370300200420042903d801222f3703b8012014202f3700002005202037000020342018290300370300203520142903003703002036202e290300370300200420042903b8053703c802200442002032420020011b222020217d2033420020011b2221201f54ad7d222f2021201f7d221f202156202f202056202f2020511b22011b3703c00520044200201f20011b3703b805202520241002410021372004410036029802200441003602a80220152902c401211f200442003703b8072004201f3703b007200241037420106b2138201541386a21392015412c6a213a20154198016a213b201541d8006a213c4100213d410021104100213e4100213f41002140034002400240200441b0076a10810141ff017122014102460d00200420042802b807221641016a3602b8072001410171450d02200420042802bc07220141016a22403602bc07202c28020020014b0d014119210641e2d5c10021050c090b203620044188076a41186a2903003703002035202d290300370300203420044188076a41086a29030037030020042004290388073703c802203741ff01714101470d06202e20362903003703002014203529030037030020182034290300370300200420042903c8023703b8050c070b20152802b801200141c1006c6a214120382101201a21050340024020010d004138210641aad5c10021050c090b200141786a21012005280200211c200541086a2105201c2016470d000b0240024020412d00004101460d0020044198026a2101203f0d012030203941086a2903003703002015280210213d200441d8016a41186a223e203941186a290300370300200441d8016a41106a2242203941106a290300370300200441b8056a41306a2243203c41306a290000370300200441b8056a41286a2244203c41286a290000370300200441b8056a41206a2245203c41206a290000370300202e203c41186a2900003703002014203c41106a2900003703002018203c41086a2900003703002039290300211f200441b8056a41386a2246203c41386a2900003703002004201f3703d8012004203c2900003703b805201528021c2205417f4c0d122015280214211c0240024020050d004101213f0c010b20051021223f450d050b203f201c200510dc0421472015280228223fad42247e221f422088a70d12201fa7221c417f4c0d122015280220214802400240201c0d00410421490c010b201c10212249450d060b20492048201c10dc04211c200c290300211f20152903002120200441b8016a41186a2248203b41186a290000370300200441b8016a41106a2249203b41106a2900003703002031203b41086a2900003703002004203b2900003703b801200441b8026a203a10792035201f370300202b20042903b802370000202b41086a200441b8026a41086a280200360000202a20042903d801370000202a41086a2030290300370000202a41106a2042290300370000202a41186a203e290300370000200420203703d0022004203f3602f8022004203f3602f4022004201c3602f002200420053602ec02200420053602e802200420473602e4022004203d3602e002200441003a00c802202941386a2046290300370000202941306a2043290300370000202941286a2044290300370000202941206a2045290300370000202941186a202e290300370000202941106a2014290300370000202941086a2018290300370000202920042903b805370000202820042903b801370000202841086a2031290300370000202841106a2049290300370000202841186a204829030037000020044188046a41186a200441e8066a41186a29030037030020044188046a41106a200441e8066a41106a29030037030020044188046a41086a200441e8066a41086a290300370300200420042903e8063703880420044198026a200441c8026a20044188046a10fb01200428029802223d213e203d213f0c010b0240203741ff01710d00200441d8016a2015106a20044188076a41186a200441d8016a41186a290300370300202d200441d8016a41106a29030037030020044188076a41086a2030290300370300200420042903d80137038807410121370b20044188046a41186a220120044188076a41186a29030037030020044188046a41106a2205202d29030037030020044188046a41086a221c20044188076a41086a290300370300200420042903880737038804024020100d002027200429038804370000202741086a201c290300370000202741106a2005290300370000202741186a2001290300370000200441013a00c802202e200441e8066a41186a2903003703002014200441e8066a41106a2903003703002018200441e8066a41086a290300370300200420042903e8063703b805200441a8026a200441c8026a200441b8056a10fb0120042802a80221100b200441a8026a21010b201620264f0d04204141016a2001350208422086200135020084202320164105746a10094101460d000b4130210641fbd5c10021050c060b201c2002103e000b200541011030000b201c41041030000b4198bfc10020162026102d000b200441b8056a2015106a0b0240201b201d470d00201b4101742201201b41016a2216200120164b1b221d41ffffff3f71201d470d0e201d41057422014100480d0e02400240201b0d0020011021211e0c010b201e201b41057420011025211e0b201e450d030b201e201b4105746a220120042903b805370000200141186a202e290300370000200141106a2014290300370000200141086a2018290300370000202c2802002040460d014132210641abd6c10021050b02402010450d0020042802ac02450d00201010230b203f450d05200428029c02450d05203e10230c050b02402010450d0020042802ac02450d00201010230b0240203f450d00200428029c02450d00203d10230b201b41016a211b20112012460d060c010b0b200141011030000b201641041030000b200141041030000b0240201d450d00201e10230b0240200f450d00201910230b02402022450d00201310230b02402009a7450d00202310230b200441f8006a41186a20044198016a41186a290200370300200441f8006a41106a20044198016a41106a290200370300200441c8006a211a0b201a41046a280200450d06201a28020010230c060b200441b8056a41186a22084200370300200441b8056a41106a22164200370300200441b8056a41086a22024200370300200442003703b805200441b0076a41086a220141c4fbc400ad4280808080e000841003220541086a290000370300200420052900003703b0072005102320022001290300370300200420042903b0073703b805200141f9bcc000ad4280808080e000841003220541086a290000370300200420052900003703b00720051023200441c8026a41086a22062001290300221f370300200420042903b00722203703c802200a2020370000200a41086a221c201f37000020044188046a41086a2210200229030037030020044188046a41106a2218201629030037030020044188046a41186a221a2008290300370300200420042903b80537038804200441206a20044188046a4120108f012004280224211720042802202111200842003703002016420037030020024200370300200442003703b805200141f7fbc400ad4280808080f000841003220541086a290000370300200420052900003703b0072005102320022001290300370300200420042903b0073703b80520014194b7c200ad4280808080c001841003220541086a290000370300200420052900003703b0072005102320062001290300221f370300200420042903b00722203703c802200a2020370000201c201f3700002010200229030037030020182016290300370300201a2008290300370300200420042903b80537038804200441186a20044188046a4120108f0120042802182102200428021c2116200e412c6c2208412c6e2101410421064100211c024002402008450d002001410274220510212206450d012001211c0b2017410020111b21102016410020021b21184100211620062101200b2102034020012002280200360200201641016a2116200141046a21012002412c6a2102200841546a22080d000b20044198016a41186a200441f8016a41186a29030037030020044198016a41106a200441f8016a41106a29030037030020044198016a41086a200441f8016a41086a290300370300200420042903f801370398010240200f450d00201910230b02402022450d00201310230b02402009a7450d00202310230b200441d8006a41086a220f20044198016a41086a2228290300370300200441d8006a41106a220e20044198016a41106a290300370300200441d8006a41186a221a20044198016a41186a290300370300200420042903980137035842002121200441b8056a41186a22084200370300200441b8056a41106a22054200370300200441b8056a41086a22024200370300200442003703b805200441b0076a41086a220141c4fbc400ad4280808080e000841003221941086a290000370300200420192900003703b0072019102320022001290300370300200420042903b0073703b805200141f9bcc000ad4280808080e000841003221941086a290000370300200420192900003703b00720191023200441c8026a41086a221920012903002209370300200420042903b007221f3703c802200a201f370000200a41086a2217200937000020044188046a41086a2211200229030037030020044188046a41106a2215200529030037030020044188046a41186a22142008290300370300200420042903b80537038804200441106a20044188046a4120108f012004280214211220042802102113200341086a280200210c2003280200213c200441e4026a201b360200200441c8026a41186a201d360200200441c8026a41106a2016360200200441d4026a201c360200200441f0026a200f290300370300200441f8026a200e29030037030020044180036a201a2903003703002004201e3602dc02200420063602d002200420183602cc02200420103602c802200420042903583703e802203c200c200441c8026a108a022004420037029c01200441d8a7c30036029801200842003703002005420037030020024200370300200442003703b80520014182fdc400ad4280808080a001841003221641086a290000370300200420162900003703b0072016102320022001290300370300200420042903b0073703b805200141f4c9c100ad4280808080d001841003221641086a290000370300200420162900003703b00720161023201920012903002209370300200420042903b007221f3703c802200a201f37000020172009370000201120022903003703002015200529030037030020142008290300370300200420042903b80537038804200441c8026a20044188046a4120108b020240024020042802c802223d0d004104213d41002101410021100c010b20042902cc022221422088a721012021a721100b2012410020131b213a200c450d034100203a417f6a22012001203a4b1b2138203c200c41d0016c6a2142200441c8026aad4280808080c00084211f20044188076a41186a214320044188076a41086a213e20044188076a41146a212a20044188076a410472212d200441c8026a4104722144200441b8056a410272221241266a212e201241206a21230340203c2802102131200441b0076a41086a222b4182fdc400ad4280808080a0018422201003220141086a290000370300200420012900003703b00720011023203e202b290300370300200420042903b00737038807202b41ecbdc100ad4280808080d000841003220141086a290000370300200420012900003703b0072001102320044188046a41086a2211202b290300370300200420042903b00737038804200420313602c802200441b8056a41186a2230201f1001220141186a290000370300200441b8056a41106a2222200141106a290000370300200441b8056a41086a221a200141086a290000370300200420012900003703b80520011023200441b8016a41186a22392030290300370300200441b8016a41106a223b2022290300370300200441b8016a41086a2241201a290300370300200420042903b8053703b8010240024041c00010212201450d002001200429038807370000200141086a203e2903003700002001200429038804370010200141186a2011290300370000200120042903b801370020200141286a2041290300370000200141306a203b290300370000200141386a2039290300370000200420013602c802203c411c6a2802002102200441c0003602cc02203c2802142002200441c8026a10c50120011023202b20201003220141086a290000370300200420012900003703b00720011023203e202b290300370300200420042903b00737038807202b41f1bdc100ad4280808080a001841003220141086a290000370300200420012900003703b007200110232011202b290300370300200420042903b00737038804200420313602c8022030201f1001220141186a2900003703002022200141106a290000370300201a200141086a290000370300200420012900003703b8052001102320392030290300370300203b20222903003703002041201a290300370300200420042903b8053703b801024041c00010212202450d002002200429038807370000200241086a203e2903003700002002200429038804370010200241186a2011290300370000200220042903b801370020200241286a2041290300370000200241306a203b290300370000200241386a2039290300370000200441086a200241c000108f01200428020c210120042802082108200420383602c8022002ad4280808080800884201f100220021023024020084101470d00200120384f0d000340200420313602cc02200420013602c802200441c8026a10fc012038200141016a2201470d000b0b203c2802282201450d02203c2802202218200141246c6a212702400240034020182802002119200441f8016a41186a22402018411c6a290000370300200441f8016a41106a223f201841146a290000370300200441f8016a41086a22292018410c6a290000370300200420182900043703f801024002400240024002400240200428029801220141d8a7c300460d00200428029c0121060c010b202e420037010020234200370100201241186a4200370100201241106a4200370100201241086a420037010020124200370100200441c8026a410041840110db041a41b80110212201450d014100210620014100360200200120042903b8053702042001410c6a201a290300370200200141146a20222903003702002001411c6a2030290300370200200141246a200441b8056a41206a2903003702002001412c6a200441b8056a41286a290300370200200141346a200441c8026a41840110dc041a2004410036029c0120042001360298010b201841246a211802400340200141086a210820012f0106221c4102742102417f211602400340024020020d00201c21160c020b200828020021052002417c6a2102201641016a2116200841046a21080240417f2005201947200520194b1b41016a0e03020001020b0b41012108202a2105202d21020c020b02402006450d002006417f6a2106200120164102746a41b8016a28020021010c010b0b2004201936028c074100210620432105203e2102410021080b2002201636020c2002200136020420022006360200200220044198016a36020820052028360200200420083602880702402008450d00200428029007200428029807410c6c6a41346a210f0c040b20042802a0072201200128020041016a360200200428028c072108200428029c07210220042802940722012f01062216410b490d012004280298072137202e420037010020234200370100201241186a22264200370100201241106a22354200370100201241086a2234420037010020124200370100200441c8026a410041840110db041a024041b80110212210450d0020104100360200201020042903b8053702042010410c6a201a290300370200201041146a20222903003702002010411c6a2030290300370200201041246a200441b8056a41206a22362903003702002010412c6a200441b8056a41286a222c290300370200201041346a200441c8026a41840110dc042105200441c8026a41086a221c20014184016a2802003602002004200129027c3703c80220012802202114201041086a200141246a20012f010641796a221641027410dc042119200520014188016a2016410c6c10dc042105200141063b0106201020163b0106201a201c280200360200200420042903c8023703b8050240024020024107490d00200241027420196a41686a2019200241796a22064102746a2219201641ffff037120066b41027410dd041a201920083602002002410c6c20056a220241b87f6a200241ac7f6a220f201041066a22162f010020066b410c6c10dd041a0c010b200141086a20024102746a220541046a2005200141066a22162f010020026b41027410dd041a20052008360200200141346a2002410c6c6a220f410c6a200f20162f010020026b410c6c10dd041a0b200f4100360208200f4204370200201620162f010041016a3b01002011201a2802002202360200200441d8016a41086a22152002360200200420042903b805220937038804200420093703d80120012802002219450d0320012f0104210e0340200441e8066a41086a22132015280200360200200420042903d8013703e806200e41ffff037121050240024002400240024020192f01062201410b490d00202e420037010020234200370100202642003701002035420037010020344200370100201242003701002011201a29030037030020044188046a41106a2201202229030037030020044188046a41186a2202203029030037030020044188046a41206a2216203629030037030020044188046a41286a2206202c290300370300200420042903b80537038804200441c8026a410041b40110db041a41e80110212208450d032008410036020020082004290388043702042008410c6a2011290300370200200841146a20012903003702002008411c6a2002290300370200200841246a20162903003702002008412c6a2006290300370200200841346a200441c8026a41b40110dc042102201941206a280200211b201c20194184016a2802003602002004201941fc006a2902003703c802200841086a201941246a20192f0106221641796a220141027410dc04211d200220194188016a2001410c6c10dc04211e200841b8016a201941d4016a2016417a6a220641027410dc042117201941063b0106200820013b010602402006450d00410021012017210203402002280200221620013b010420162008360200200241046a21022006200141016a2201470d000b0b201a201c2802002201360200200420042903c80222093703b805201c2001360200200420093703c802200e41ffff037122024107490d01201d2005417a6a220241027422066a201d200541796a22014102746a221620082f010620016b41027410dd041a201620143602002005410c6c201e6a221641b87f6a201641ac7f6a221620082f010620016b410c6c10dd041a201641086a2013280200360200201620042903e806370200200820082f010641016a22163b01062005410274220e20176a416c6a201720066a2206201641ffff0371220520026b41027410dd041a2006201036020020052002490d022008200e6a41a0016a2102034020022802002216200141016a22013b010420162008360200200241046a210220012005490d000c030b0b201941086a2202200541016a220841027422166a2002200541027422066a2202200120056b221c41027410dd041a2002201436020020192005410c6c6a220241c0006a200241346a220e201c410c6c10dd041a2002413c6a2013280200360200200e20042903e8063702002019200141016a22013b01062006201941b8016a22026a41086a200220166a2202200141ffff0371221620086b41027410dd041a20022010360200200520164f0d0920192008417f6a22014102746a41bc016a2102034020022802002208200141016a22013b010420082019360200200241046a210220012016490d000c0a0b0b201941086a2201200541016a220e41027422166a2001200541027422066a220120192f0106221720056b221d41027410dd041a20012014360200201941346a2005410c6c6a2201410c6a2001201d410c6c10dd041a200141086a2013280200360200200120042903e8063702002019201741016a22013b01062006201941b8016a22176a41086a201720166a2217200141ffff03712216200e6b41027410dd041a20172010360200200220164f0d00201920066a41bc016a2101034020012802002202200541016a22053b010420022019360200200141046a210120162005470d000b0b2015201c280200360200200420042903c8023703d801201928020022010d0120082110201b21140c060b41e80141041030000b20192f0104210e20012119201b2114200821100c000b0b41b80141041030000b41b80141041030000b200120024102746a2205410c6a200541086a2205201620026b41027410dd041a2005200836020020012002410c6c6a220841c0006a200841346a220f20012f010620026b410c6c10dd041a2008413c6a4100360200200f4204370200200120012f010641016a3b01060c010b202e420037010020234200370100202642003701002035420037010020344200370100201242003701002011201a29030037030020044188046a41106a2202202229030037030020044188046a41186a2208203029030037030020044188046a41206a2216203629030037030020044188046a41286a2205202c290300370300200420042903b80537038804200441c8026a410041b40110db041a41e80110212201450d022001410036020020012004290388043702042001410c6a2011290300370200200141146a20022903003702002001411c6a2008290300370200200141246a20162903003702002001412c6a2005290300370200200141346a200441c8026a41b40110dc0421082001203728020022023602b801203720013602002037203728020441016a360204200241003b010420022001360200200820012f01062202410c6c6a220820042903d801370200200841086a2015280200360200200120024102746a41086a2014360200200141b8016a200241016a22024102746a2010360200200120023b0106201020023b0104201020013602000b200441c8026a41186a22022040290300370300200441c8026a41106a2208203f290300370300200441c8026a41086a22162029290300370300200420042903f8013703c8020240200f2802082201200f41046a2205280200470d00200141016a22192001490d0d200141017422062019200620194b1b2219ad42247e2209422088a70d0d2009a722064100480d0d0240024020010d002006102121010c010b200f280200200141246c2006102521010b2001450d03200f200136020020052019360200200f28020821010b200f280200200141246c6a220120042903c802370204200120313602002001410c6a2016290300370200200141146a20082903003702002001411c6a2002290300370200200f200f28020841016a36020820182027470d000c050b0b41e80141041030000b200641041030000b41c00041011030000b41c00041011030000b02400240203c41346a2802002206450d00203c28022c2101202b20201003220241086a290000370300200420022900003703b00720021023203e202b290300370300200420042903b00737038807202b41acc9c100ad4280808080e002841003220241086a290000370300200420022900003703b007200210232011202b290300370300200420042903b00737038804200420313602c8022030201f1001220241186a2900003703002022200241106a290000370300201a200241086a290000370300200420022900003703b8052002102320392030290300370300203b20222903003703002041201a290300370300200420042903b8053703b801024002400240024002400240024002400240024002400240024002400240024041c00010212219450d002019200429038807370000201941086a203e2903003700002019200429038804370010201941186a2011290300370000201920042903b801370020201941286a2041290300370000201941306a203b290300370000201941386a2039290300370000200441c8026a201941c000108602200141086a210220042802d002211c20042802cc02211020042802c802210f410021082006410474220521160340200228020020086a2108200241106a2102201641706a22160d000b200441013602c80220042008201c4100200f41014622021b6a3602d00220042010410020021b20066a3602cc02201941c0002044108c0220191023202b20201003220241086a290000370300200420022900003703b00720021023203e202b290300370300200420042903b00737038807202b41e8c8c100ad4280808080a002841003220241086a290000370300200420022900003703b007200210232011202b290300370300200420042903b00737038804200420313602c8022030201f1001220241186a2900003703002022200241106a290000370300201a200241086a290000370300200420022900003703b8052002102320392030290300370300203b20222903003703002041201a290300370300200420042903b8053703b80141c0001021221c450d01201c200429038807370000201c41086a203e290300370000201c200429038804370010201c41186a2011290300370000201c20042903b801370020201c41286a2041290300370000201c41306a203b290300370000201c41386a2039290300370000200441b8056a201cad4280808080800884220910041090010240024020042802b8050d00200441003602d002200442013703c8024100200441c8026a105c200441f8016a41086a20042802d002360200200420042903c8023703f8010c010b200441f8016a41086a201a280200360200200420042903b8053703f8010b200441e8066a41086a200441f8016a41086a2802002202360200200420042903f8013703e806024002400240024002402002450d00200441c8026a20042802e80620022006106920042802c8024101460d0420042802cc02211920042802d402220220042802d0022208460d0320042802f006200220086b6a221620064102746a2206417f4c0d1920060d01410121100c020b2006200441e8066a105c034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021080c020b410121080c010b410221080b200420083a00c8020240024020042802ec0620042802f0062202460d0020042802e80621160c010b200241016a22082002490d1f200241017422162008201620084b1b22084100480d1f0240024020020d002008102121160c010b20042802e80620022008102521160b2016450d09200420083602ec06200420163602e80620042d00c802210820042802f00621020b2004200241016a3602f006201620026a20083a00000b20012802002119200141086a2802002202200441e8066a105c0240024020042802ec06221620042802f00622086b2002490d0020042802e80621160c010b200820026a22062008490d1e201641017422082006200820064b1b22084100480d1e0240024020160d002008102121160c010b20042802e80620162008102521160b2016450d09200420083602ec06200420163602e80620042802f00621080b200141106a21012004200820026a3602f006201620086a2019200210dc041a200541706a22050d000c120b0b200610212210450d070b2004200636028c0720042010360288072004201636029007200420044188076a3602c8022019200441c8026a200210920120162002490d0720042802900722192016490d0820042802f00622192008490d09200428028807210620042802e80621102004201620026b22163602b0072004201920086b221936027820162019470d0a200620026a201020086a201610dc041a034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021080c020b410121080c010b410221080b200420083a00c80202400240200428028c072004280290072202460d0020042802880721160c010b200241016a22082002490d1d200241017422162008201620084b1b22084100480d1d0240024020020d002008102121160c010b20042802880720022008102521160b2016450d0e2004200836028c07200420163602880720042d00c802210820042802900721020b2004200241016a36029007201620026a20083a00000b20012802002119200141086a280200220220044188076a105c02400240200428028c07221620042802900722086b2002490d0020042802880721160c010b200820026a22062008490d1c201641017422082006200820064b1b22084100480d1c0240024020160d002008102121160c010b20042802880720162008102521160b2016450d0e2004200836028c07200420163602880720042802900721080b200141106a21012004200820026a36029007201620086a2019200210dc041a200541706a22050d000b2004280290072102200428028c072108200428028807210120042802ec06450d1020042802e80610230c100b2004200441e8066a3602c8022019200441c8026a2008109201034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021080c020b410121080c010b410221080b200420083a00c8020240024020042802ec0620042802f0062202460d0020042802e80621160c010b200241016a22082002490d1c200241017422162008201620084b1b22084100480d1c0240024020020d002008102121160c010b20042802e80620022008102521160b2016450d0f200420083602ec06200420163602e80620042d00c802210820042802f00621020b2004200241016a3602f006201620026a20083a00000b20012802002119200141086a2802002202200441e8066a105c0240024020042802ec06221620042802f00622086b2002490d0020042802e80621160c010b200820026a22062008490d1b201641017422082006200820064b1b22084100480d1b0240024020160d002008102121160c010b20042802e80620162008102521160b2016450d0f200420083602ec06200420163602e80620042802f00621080b200141106a21012004200820026a3602f006201620086a2019200210dc041a200541706a2205450d0f0c000b0b20042802ec06450d0f20042802e80610230c0f0b41c00041011030000b41c00041011030000b200841011030000b200841011030000b200641011030000b20022016103e000b201620191036000b20082019103e000b200441b8056a41146a410d360200200441c4056a410e36020020044188046a41146a41033602002004420337028c04200441acb6c600360288042004410e3602bc052004200441b0076a3602b8012004200441f8006a3602d801200442043703d802200442013702cc0220044180b7c6003602c8022004200441b8056a360298042004200441c8026a3602c8052004200441d8016a3602c0052004200441b8016a3602b80520044188046a41bcb7c6001038000b200841011030000b200841011030000b200841011030000b200841011030000b20042802f006210220042802ec06210820042802e80621010b2001450d0020092002ad4220862001ad8410022008450d00200110230b201c1023410021010240024002400240024002402021422088a7220541014b0d0020050e020201020b20052102034020012002410176220820016a22162031203d20164102746a280200491b2101200220086b220241014b0d000b0b02402031203d20014102746a2802002202470d0041ecd8c100ad4280808080c0048410080c050b2001203120024b6a220120054b0d010b20052021a7460d01202121090c020b4180bbc000102b000b200541016a22022005490d0920054101742208200220022008491b220241ffffffff03712002470d09200241027422084100480d090240024020050d0020081021213d0c010b203d200541027420081025213d0b203d450d022002ad21090b203d20014102746a220241046a2002200520016b41027410dd041a20022031360200200942ffffffff0f8320214280808080107c428080808070838421210b203c41d0016a223c2042460d040c010b0b200841041030000b200541041030000b102f000b2021422088a721012021a721100b200441b8016a41186a4200370300200441b8016a41106a22264200370300200441b8016a41086a22084200370300200442003703b801200441b0076a41086a22024182fdc400ad4280808080a001841003221641086a290000370300200420162900003703b0072016102320082002290300370300200420042903b007220937038807200420093703b801200241f4c9c100ad4280808080d001841003221641086a290000370300200420162900003703b00720161023202620042903b0072209370300200441d8016a41086a2008290300370300200441d8016a41106a2009370300200441d8016a41186a20022903003703002004200937038804200420042903b8013703d801200441003602d002200442013703c8022001200441c8026a105c024002400240024002400240024002400240024020010d0020042802d002211920042802cc02210520042802c80221020c010b20014102742106410020042802d00222016b210820042802cc022105203d211603402016280200211c02400240200520086a4104490d0020042802c80221020c010b200141046a22022001490d0c200541017422192002201920024b1b22194100480d0c0240024020050d002019102121020c010b20042802c80220052019102521020b2002450d03200420193602cc02200420023602c802201921050b201641046a21162004200141046a22193602d002200220016a201c3600002008417c6a2108201921012006417c6a22060d000b0b200441d8016aad4280808080800484222f2019ad4220862002ad84100202402005450d00200210230b02402010450d00203d10230b20042802a0012105200428029801210102400240200428029c0122080d00200121020c010b2008211620012102034020022802b80121022016417f6a22160d000b0340200120012f01064102746a41b8016a28020021012008417f6a22080d000b0b200441e4026a20012f0106360200200441c8026a41186a4100360200200441dc026a2001360200200420053602e802200441003602d802200442003703d002200420023602cc02200441003602c802200441b8056a200441c8026a10b501024020042802bc05221c450d004182fdc400ad4280808080a00184210941fbbdc100ad4280808080f00184211f034020042802c405210820042802c005211020042802b8052116200441b0076a41086a220120091003220241086a290000370300200420022900003703b0072002102320044188076a41086a22052001290300370300200420042903b007370388072001201f1003220241086a290000370300200420022900003703b0072002102320044188046a41086a22192001290300370300200420042903b00737038804410410212201450d032001203a36000020014104410810252202450d0420022016360004200441b8056a41186a22162002ad42808080808001841001220141186a290000370300200441b8056a41106a2206200141106a290000370300200441b8056a41086a220f200141086a290000370300200420012900003703b80520011023200441b8016a41186a22012016290300370300200441b8016a41106a22162006290300370300200441b8016a41086a2218200f290300370300200420042903b8053703b8012002102341c00010212206450d052006200429038807370000200641086a20052903003700002006200429038804370010200641186a2019290300370000200620042903b801370020200641286a2018290300370000200641306a2016290300370000200641386a2001290300370000200441003602c005200442013703b8052008200441b8056a105c02402008450d00201c200841246c6a2119201c21020340200228020021160240024020042802bc05220820042802c00522016b4104490d0020042802b80521080c010b200141046a22052001490d0e200841017422012005200120054b1b22014100480d0e0240024020080d002001102121080c010b20042802b80520082001102521080b2008450d09200420013602bc05200420083602b80520042802c00521010b2004200141046a3602c005200820016a20163600002004200441b8056a36028804200241046a20044188046a106b200241246a22022019470d000b0b20042802bc0521012006ad428080808080088420043502c00542208620042802b8052202ad84100202402001450d00200210230b2006102302402010450d00201c10230b200441b8056a200441c8026a10b50120042802bc05221c0d000b0b200441b8056a200441c8026a10b5010240034020042802bc052201450d01024020042802c005450d00200110230b200441b8056a200441c8026a10b5010c000b0b20042802cc02220141d8a7c300460d0720012802002108200110232008450d0720082802002102200810232002450d07200228020022010d050c060b201941011030000b410441011030000b410841011030000b41c00041011030000b200141011030000b0340200210232001210220012802002208210120080d000b0b200210230b200441b8056a41186a22174200370300200441b8056a41106a22114200370300200441b8056a41086a220e4200370300200442003703b805200441b0076a41086a22104182fdc400ad4280808080a0018422091003220141086a290000370300200420012900003703b00720011023200e2010290300370300200420042903b0073703b805201041f4c9c100ad4280808080d0018422241003220141086a290000370300200420012900003703b00720011023200441c8026a41086a2010290300221f370300200420042903b00722203703c802200a2020370000200a41086a201f37000020044188046a41086a221a200e29030037030020044188046a41106a201129030037030020044188046a41186a2017290300370300200420042903b80537038804200441c8026a20044188046a4120108b0220042802c8022201410420011b21344100211b024020042902cc02420020011b2225422088a72235450d00203420354102746a212e200441c8026aad4280808080c00084211f20044188076a41086a2102200441c8026a41067221144100211b41002113410021302034211c02400340201b211e201020091003220141086a290000370300200420012900003703b0072001102320022010290300370300200420042903b00737038807201041acc9c100ad4280808080e0028422201003220141086a290000370300200420012900003703b00720011023201a2010290300370300200420042903b007370388042004201c2802003602c8022017201f1001220141186a2900003703002011200141106a290000370300200e200141086a290000370300200420012900003703b80520011023200441b8016a41186a22082017290300370300200441b8016a41106a22162011290300370300200441b8016a41086a2205200e290300370300200420042903b8053703b80102400240024002400240024041c00010212201450d002001200429038807370000200141086a20022903003700002001200429038804370010200141186a201a290300370000200120042903b801370020200141286a2005290300370000200141306a2016290300370000200141386a2008290300370000200441c8026a200141c00010860220042802d002211920042802cc02210620042802c802210f200110234101210120064100200f410146220f1b211220194100200f1b211d02402013450d00201220136a41e50049201d20306a41a19c01497121010b201e41016a211b2012450d052001450d05201020091003220141086a290000370300200420012900003703b0072001102320022010290300370300200420042903b00737038807201020201003220141086a290000370300200420012900003703b00720011023201a2010290300370300200420042903b007370388042004201c2802003602c8022017201f1001220141186a2900003703002011200141106a290000370300200e200141086a290000370300200420012900003703b8052001102320082017290300370300201620112903003703002005200e290300370300200420042903b8053703b80141c00010212201450d012001200429038807370000200141086a20022903003700002001200429038804370010200141186a201a290300370000200120042903b801370020200141286a2005290300370000200141306a2016290300370000200141386a20082903003700002001ad4280808080800884100520011023201020091003220141086a290000370300200420012900003703b0072001102320022010290300370300200420042903b00737038807201041e8c8c100ad4280808080a002841003220141086a290000370300200420012900003703b00720011023201a2010290300370300200420042903b007370388042004201c2802003602c8022017201f1001220141186a2900003703002011200141106a290000370300200e200141086a290000370300200420012900003703b8052001102320082017290300370300201620112903003703002005200e290300370300200420042903b8053703b80141c00010212201450d022001200429038807370000200141086a20022903003700002001200429038804370010200141186a201a290300370000200120042903b801370020200141286a2005290300370000200141306a2016290300370000200141386a2008290300370000200441c0003602fc01200420013602f80120044188046a2001ad4280808080800884222110041090010240024020042802880422160d00410021080c010b200428028c04210520042004280290043602ec06200420163602e806200441c8026a200441e8066a1080010240024020042802c8022208450d0020042902cc0221200c010b200441003602c005200442013703b8052004410c36028c072004200441f8016a360288072004200441b8056a3602d801200441013602dc02200442013702cc0220044198c2c3003602c802200420044188076a3602d802200441d8016a41b8a3c500200441c8026a102e1a20043502c00542208620043502b80584100820042802bc05450d0020042802b80510230b02402005450d00201610230b024020080d00410021080c010b202110050b200110232008410420081b22222020420020081b2220422088a722014104746a21192020a72123024020010d00202221010c040b20222101034002402001410c6a2d0000220f4103470d00200141106a21010c050b200141046a280200211620012802002108200141086a28020021052004201c28020022063602b801200420053602dc01200420083602d80120044188046a200441d8016a10d9010240200428028804411a460d00200441b8056a20044188046a41b00110dc041a41032105024002400240200f4103710e03010200010b41002105410021150c010b200441c8026a200441b8016a108702200441e8066a41086a201441086a290100370300200441e8066a41106a201441106a290100370300200441e8066a41186a201441186a2f01003b0100200420142901003703e80620042801ca02210620042f01c802211841012115410021050b200441c8026a200441b8056a41b00110dc041a200220042903e806370200200241086a200441e8066a41086a290300370200200241106a200441e8066a41106a290300370200200241186a200441e8066a41186a2903003702002004200636028c07200420183b018a07200420153a008907200420053a008807200441f8016a200441c8026a20044188076a108d020b02402016450d00200810230b200141106a22012019470d000c050b0b41c00041011030000b41c00041011030000b41c00041011030000b20012019460d0003402001410c6a2d00004103460d010240200141046a280200450d00200128020010230b200141106a22012019470d000b0b02402023450d00202210230b201220136a221341e3004b0d02201d20306a2230419f9c014b0d020b201c41046a221c202e470d000b0b201e2035490d00201b2035103e000b200441b8016a41186a22084200370300200441b8016a41106a22164200370300200441b8016a41086a22014200370300200442003703b801201020091003220241086a290000370300200420022900003703b0072002102320012010290300370300200420042903b007220937038807200420093703b801201020241003220241086a290000370300200420022900003703b00720021023201a20102903002209370300200420042903b007221f370388042026201f370000202641086a2009370000200441d8016a41086a2001290300370300200441d8016a41106a2016290300370300200441d8016a41186a2008290300370300200420042903b8013703d801200441003602d002200442013703c8022035201b6b2201200441c8026a105c02400240024020010d0020042802d002211920042802cc02210520042802c80221020c010b2035410274201b41027422026b2106410020042802d00222016b2108203420026a211620042802cc02210503402016280200211c02400240200520086a4104490d0020042802c80221020c010b200141046a22022001490d05200541017422192002201920024b1b22194100480d050240024020050d002019102121020c010b20042802c80220052019102521020b2002450d03200420193602cc02200420023602c802201921050b201641046a21162004200141046a22193602d002200220016a201c3600002008417c6a2108201921012006417c6a22060d000b0b202f2019ad4220862002ad84100202402005450d00200210230b02402025a7450d00203410230b20042802502102200428024c21102004280248220f21080c010b201941011030000b200441d8016a41186a22194200370300200441d8016a41106a22064200370300200441d8016a41086a22164200370300200442003703d801200441b0076a41086a22014182fdc400ad4280808080a001841003220541086a290000370300200420052900003703b0072005102320162001290300370300200420042903b007220937038807200420093703d801200141b39fc600ad42808080809001841003220541086a290000370300200420052900003703b0072005102320044188046a41086a20012903002209370300200420042903b007221f370388042007201f370000200741086a2009370000200441b8016a41086a2016290300370300200441b8016a41106a2006290300370300200441b8016a41186a2019290300370300200420042903d8013703b801200441003602d002200442013703c8022002200441c8026a105c02400240024020020d0020042802d002211920042802cc02210520042802c80221020c010b20024102742106410020042802d00222016b211620042802cc02210503402008280200211c02400240200520166a4104490d0020042802c80221020c010b200141046a22022001490d04200541017422192002201920024b1b22194100480d040240024020050d002019102121020c010b20042802c80220052019102521020b2002450d03200420193602cc02200420023602c802201921050b200841046a21082004200141046a22193602d002200220016a201c3600002016417c6a2116201921012006417c6a22060d000b0b200441b8016aad42808080808004842019ad4220862002ad84100202402005450d00200210230b02402010450d00200f10230b0240200da7450d00200b10230b200328020021080240200c450d00200c41d0016c21022008210103402001106c200141d0016a2101200241b07e6a22020d000b0b410021050240200341046a280200450d00200810230b0c040b201941011030000b102a000b200da7450d00200b10230b20032802002108024020032802082201450d00200141d0016c21022008210103402001106c200141d0016a2101200241b07e6a22020d000b0b200341046a280200450d00200810230b2000200636020420002005360200200441c0076a24000bb70201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822010d00200041003602000c010b200341106a2802002102200328020c2104200341003602380240024020024104490d0020012800002105200341003602382002417c714104460d00200041086a200128000436020020002005360204200041013602000c010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034198c2c3003602382003200341286a360248200341346a41b8a3c500200341386a102e1a2003350220422086200335021884100820004100360200200328021c450d00200328021810230b2004450d00200110230b200341d0006a24000bbf0301067f230041d0006b22022400200241f0003a000802400240024002400240410110212203450d00200341f0003a0000200241e1003a000820034101410210252203450d01200341e1003a0001200241f2003a000820034102410410252204450d02200441f2003a0002200441e1003a0003200128020021014108210320044104410810252205450d0320052001360004200241003a004820052101410021060340200241003a0008200241086a20012003410047220410dc041a024020030d00200241003a00080b20032004490d05200241286a20066a20022d00083a00002002200641016a22073a0048200320046b2103200120046a21012007210620074120470d000b200241086a41186a2203200241286a41186a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41086a2201200241286a41086a2903003703002002200229032837030820051023200041186a2003290300370000200041106a2004290300370000200041086a200129030037000020002002290308370000200241d0006a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b20042003103e000be10402057f047e230041e0006b22062400200641c0006a41086a220741d5fbc400ad42808080808001841003220841086a2900003703002006200829000037034020081023200641206a41086a2209200729030037030020062006290340370320200741e3a0c200ad4280808080b001841003220841086a2900003703002006200829000037034020081023200641306a41086a220a200729030037030020062006290340370330200641c0006a200110ac010240024002400240024041c00010212208450d00200820062903203700002008200629033037001020082006290040370020200841086a2009290300370000200841186a200a290300370000200841286a2007290000370000200841306a200641c0006a41106a290000370000200841386a200641c0006a41186a290000370000200641086a200841c000108902200641086a41106a290300210b2006290310210c2006280208210720081023410121080240200c420020071b220c20027d220d200c56200b420020071b220b20037d200c200254ad7d220e200b56200e200b511b4101470d0020004196adc200360204200041086a411d3602000c050b20050d01200c4280c8afa025544100200b501b0d01200d42ffc7afa02556200e420052200e501b0d01200041b3adc200360204200041086a411a3602000c020b41c00041011030000b200620012004200d200e10de0220062802002208450d012006280204210720002008360204200041086a20073602000b410121080c010b2001200d200e10dc02200041106a2003370300200041086a2002370300410021080b20002008360200200641e0006a24000ba80202017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034198c2c3003602382003200341286a360248200341346a41b8a3c500200341386a102e1a200335022042208620033502188410080240200328021c450d00200328021810230b420021040b2002450d00200110230b2000200637030820002004370300200041106a2005370300200341d0006a24000bb8380b077f017e027f027e067f027e0c7f017e047f017e067f230041a0036b2203240020022802002104200341f0016a41086a220541a79fc600ad4280808080c001841003220641086a290000370300200320062900003703f00120061023200341d0026a41086a22072005290300370300200320032903f0013703d002200541d4acc600ad42808080808002841003220641086a290000370300200320062900003703f0012006102320034190026a41086a22082005290300370300200320032903f00137039002200320044132702209360220200341e0026a41186a2206200341206aad220a4280808080c000841001220541186a290000370300200341e0026a41106a2204200541106a290000370300200341e0026a41086a220b200541086a290000370300200320052900003703e0022005102320034180036a41186a2205200629030037030020034180036a41106a220c200429030037030020034180036a41086a2204200b290300370300200320032903e00237038003024002400240024002400240024002400240024041c00010212206450d00200620032903d00237000020062003290390023700102006200329038003370020200641086a2007290300370000200641186a2008290300370000200641286a2004290300370000200641306a200c290300370000200641386a2005290300370000200341c00036021420032006360210200341f0016a2006ad4280808080800884220d100410900120032802f0012207450d0320032802f401210b2003200341f8016a28020022053602d402200320073602d00220054104490d012003200741046a3602d00220032005417c6a22043602d40220044104490d012007350000210e2003200541786a22083602d4022003200741086a3602d00241002105200341003a00400340024020082005470d00200341003602d402200541ff0171450d03200341003a00400c030b200341206a20056a200720056a220441086a2d00003a00002003200441096a3602d0022003200541016a22043a00402004210520044120470d000b20034190026a41086a200341206a41086a29030037030020034190026a41106a200341206a41106a29030037030020034190026a41186a200341206a41186a2903003703002003200820046b3602d4022003200329032037039002200341206a200341d0026a107b20032802202204450d0120032802242108200341206a200341d0026a107e02402003280220220f0d002008450d02200410230c020b20034180036a41086a20034190026a41086a29030037030020034180036a41106a20034190026a41106a2903003703002003280224210c410021050c020b41c00041011030000b41002104200341003602980220034201370390022003410c360284032003200341106a36028003200320034190026a3602e00241012105200341346a41013602002003420137022420034198c2c300360220200320034180036a360230200341e0026a41b8a3c500200341206a102e1a2003350298024220862003350290028410080240200328029402450d0020032802900210230b0b0240200b450d00200710230b2005450d010b200610230c010b200d1005200610232004450d00200341f0016a41086a220541a79fc600ad4280808080c001841003220641086a290000370300200320062900003703f00120061023200341d0026a41086a22072005290300370300200320032903f0013703d002200541e4acc600ad4280808080d002841003220641086a290000370300200320062900003703f0012006102320034190026a41086a22062005290300370300200320032903f001370390022003200e3e0220200341e0026a41186a220b200a4280808080c000841001220541186a290000370300200341e0026a41106a2210200541106a290000370300200341e0026a41086a2211200541086a290000370300200320052900003703e0022005102320034180036a41186a2212200b29030037030020034180036a41106a220b201029030037030020034180036a41086a22102011290300370300200320032903e0023703800341c00010212205450d01200520032903d00237000020052003290390023700102005200329038003370020200541086a2007290300370000200541186a2006290300370000200541286a2010290300370000200541306a200b290300370000200541386a20122903003700002005ad4280808080800884100a2005102302402008450d00200410230b200c450d00200f10230b200341206a41186a4200370300200341206a41106a22074200370300200341206a41086a2206420037030020034200370320200341f0016a41086a220541f7fbc400ad4280808080f000841003220441086a290000370300200320042900003703f0012004102320062005290300370300200320032903f001370320200541e7acc500ad4280808080a001841003220441086a290000370300200320042900003703f00120041023200720032903f001220d37030020034190026a41086a200629030037030020034190026a41106a200d37030020034190026a41186a20052903003703002003200d370380032003200329032037039002200341206a20034190026a412010bb010240024020032802202205450d0020032003290224370204200320053602000c010b20034100360208200342013703000b2002411c6a2802002205200120052001491b2213450d0220022802142114200341f0016aad4280808080c000842115200a4280808080800484211620034180036a41106a210f200341e0026a41106a2117200341d8016a2118200341b8016a2119200341f8006a211a200341206a41386a211b200341206a412c6a211c20034190026a41286a211d20034190026a41306a211e4100211f0c010b41c00041011030000b0240024002400240024002400240024002400240024002400240034020034100360218200342013703102000201f41d0016c6a22082802c4012106200841c8016a2802002104200341e0026a41186a2220420037030020174200370300200341e0026a41086a22214200370300200342003703e002200341f0016a41086a221141c6acc500ad4280808080f00084220e1003220541086a290000370300200320052900003703f0012005102320212011290300370300200320032903f0013703e00220114185b2c500ad4280808080e001841003220541086a290000370300200320052900003703f00120051023200341206a41086a22222011290300220d370300200320032903f001222337032020172023370000201741086a200d37000020034190026a41086a2224202129030037030020034190026a41106a2225201729030037030020034190026a41186a22262020290300370300200320032903e0023703900220034180036a20034190026a412010bb010240024020032802800322050d00410021010c010b200329028403220d422088a72101200da7450d00200510230b201f41016a212720034180036a41186a22124200370300200f420037030020034180036a41086a2210420037030020034200370380032011200e1003220541086a290000370300200320052900003703f0012005102320102011290300370300200320032903f001220d370390022003200d370380032011418cfbc500ad4280808080e0028422281003220541086a290000370300200320052900003703f0012005102320242011290300220d370300200320032903f001222337039002200f2023370000200f41086a2229200d37000020222010290300370300200341206a41106a222a200f290300370300200341206a41186a222b2012290300370300200320032903800337032020034190026a200341206a10ae0320032802900221072003280294022105200329039802210d2003200436022420032006360220200d420020051b210d200341003602282007410020051b21072005410420051b210c2003200341106a3602302003200336022c02400340410221060240200341206a10810141ff017122044102460d0020032003280228220541016a3602282004410171450d0141012106200328022c220b28020820054d0d00200328023021042012200b28020020054105746a220b41186a290000370300200f200b41106a2900003703002010200b41086a2900003703002003200b2900003703800302402004280208220b200441046a222c280200470d00200b41016a222d200b490d13200b410174222e202d202e202d4b1b222d41ffffff3f71202d470d13202d410574222e4100480d1302400240200b0d00202e1021210b0c010b2004280200200b410574202e1025210b0b200b450d032004200b360200202c202d3602002004280208210b0b2004280200200b4105746a220b200329038003370000200b41186a2012290300370000200b41106a200f290300370000200b41086a20102903003700002004200428020841016a3602080b0240200641ff01714102460d00200520014f0d01200741146a22042007490d010240200541016a2207200d422088a722064d0d000240200da7220b20066b20072006200720064b1b222d20066b22074f0d00200620076a222c2006490d14200b410174222e202c202e202c4b1b222c41ffffffff0371202c470d14202c410274222e4100480d1402400240200b0d00202e1021210c0c010b200c200b410274202e1025210c0b200c450d06202cad210d0b200c20064102746a210b0240024020074102490d00200b4100202d2006417f736a220741027410db041a200c2006202d6a20066b4102746a417c6a210b200720066a21060c010b2007450d010b200b4100360200200641016a21060b200620054d0d05200c20054102746a2205200528020041146a360200200d42ffffffff0f832006ad42208684210d200421070c010b0b2003200c3602e402200320073602e0022003200d3703e80220124200370300200f42003703002010420037030020034200370380032011200e1003220541086a290000370300200320052900003703f0012005102320102011290300370300200320032903f001220e370390022003200e37038003201120281003220541086a290000370300200320052900003703f0012005102320242011290300220e370300200320032903f001222337039002200f20233700002029200e37000020222010290300370300202a200f290300370300202b2012290300370300200320032903800337032002400240200c0d00201610050c010b20034120360294022003200341206a36029002200341e0026a20034190026a10a904200c450d00200da7450d00200c10230b200828021021072012200841d0006a290000370300200f200841c8006a2900003703002010200841c0006a2900003703002024200841e0006a2903003703002025200841e8006a2903003703002026200841f0006a29030037030020034190026a41206a2201200841f8006a290300370300201d20084180016a290300370300201e20084188016a29030037030020034190026a41386a220b20084190016a290300370300200320082900383703800320032008290358370390022008411c6a2802002205417f4c0d04200828021421060240024020050d00410121040c010b200510212204450d060b20042006200510dc04210c200841286a2802002204ad42247e220d422088a70d04200da72206417f4c0d04200841206a280200212d0240024020060d004104212c0c010b20061021222c450d070b202c202d200610dc04212d2011200841a0016a290300370300200341f0016a41106a222c200841a8016a290300370300200341f0016a41186a222e200841b0016a29030037030020032008290398013703f001200841086a290300210d2008290300210e200341d0026a2008412c6a1079202020122903003703002017200f2903003703002021201029030037030020032003290380033703e002201c20032903d002370200201c41086a200341d0026a41086a22062802003602002003200d3703282003200e37032020032004360248200320043602442003202d3602402003200536023c200320053602382003200c36023420032007360230201b20032903e002370300201b41086a2021290300370300201b41106a2017290300370300201b41186a2020290300370300201a41386a200b290300370300201a41306a201e290300370300201a41286a201d290300370300201a41206a2001290300370300201a41186a2026290300370300201a41106a2025290300370300201a41086a2024290300370300201a200329039002370300201941186a202e290300370300201941106a202c290300370300201941086a2011290300370300201920032903f001370300201841086a200341106a41086a28020036020020182003290310370200200341003602ec01200342013702e401201141a79fc600ad4280808080c001841003220541086a290000370300200320052900003703f0012005102320062011290300370300200320032903f0013703d002201141e4acc600ad4280808080d002841003220541086a290000370300200320052900003703f0012005102320242011290300370300200320032903f00137039002200320022802003602f001202020151001220541186a2900003703002017200541106a2900003703002021200541086a290000370300200320052900003703e0022005102320122020290300370300200f201729030037030020102021290300370300200320032903e0023703800341c00010212204450d07200420032903d00237000020042003290390023700102004200329038003370020200441086a2006290300370000200441186a2024290300370000200441286a2010290300370000200441306a200f290300370000200441386a20122903003700002014201f4105746a22052d00002107410110212206450d08200620073a000020052d0001210720064101410210252206450d09200620073a000120052d0002210720064102410410252206450d0a200620073a0002200620052d00033a000320052d0004210720064104410810252206450d0b200620073a0004200620052d00053a0005200620052d00063a0006200620052d00073a000720052d0008210720064108411010252206450d0c200620073a0008200620052d00093a0009200620052d000a3a000a200620052d000b3a000b200620052d000c3a000c200620052d000d3a000d200620052d000e3a000e200620052d000f3a000f20052d0010210720064110412010252206450d0d200620073a0010200620052d00113a0011200620052d00123a0012200620052d00133a0013200620052d00143a0014200620052d00153a0015200620052d00163a0016200620052d00173a0017200620052d00183a0018200620052d00193a0019200620052d001a3a001a200620052d001b3a001b200620052d001c3a001c200620052d001d3a001d200620052d001e3a001e200620052d001f3a001f20112006ad42808080808004841015220541086a290000370300200320052900003703f0012005102320242011290300370300200320032903f0013703900220061023200441c00041800110252204450d0e2004200329039002370040200441c8006a202429030037000020034100360298022003420137039002200341206a20034190026a10b10120032802d801210520032802e001220620034190026a105c02402006450d00200641057421060340200520034190026a1071200541206a2105200641606a22060d000b0b20032802e401210520032802ec01220620034190026a105c02402006450d00200641057421060340200520034190026a1071200541206a2105200641606a22060d000b0b20032802940221052004ad4280808080800a842003350298024220862003280290022206ad84100202402005450d00200610230b2004102302402003280238450d00200328023410230b02402003280244450d00200328024010230b024020032802542206450d00200328024c21052006410474210603400240200541046a280200450d00200528020010230b200541106a2105200641706a22060d000b0b02402003280250450d00200328024c10230b024020032802dc01450d0020032802d80110230b024020032802e801450d0020032802e40110230b2027211f202720134f0d0f0c010b0b202e41011030000b202e41041030000b4180b9c00020052006102d000b102f000b200541011030000b200641041030000b41c00041011030000b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b41800141011030000b200341f0016a41086a220541a79fc600ad4280808080c001841003220641086a290000370300200320062900003703f00120061023200341d0026a41086a22012005290300370300200320032903f0013703d002200541d4acc600ad42808080808002841003220641086a290000370300200320062900003703f0012006102320034190026a41086a22082005290300370300200320032903f0013703900220032009360220200341e0026a41186a2206200a4280808080c000841001220541186a290000370300200341e0026a41106a2204200541106a290000370300200341e0026a41086a2207200541086a290000370300200320052900003703e0022005102320034180036a41186a2205200629030037030020034180036a41106a2206200429030037030020034180036a41086a22042007290300370300200320032903e00237038003024002400240024041c0001021220b450d00200b20032903d002370000200b200329039002370010200b200329038003370020200b41086a2001290300370000200b41186a2008290300370000200b41286a2004290300370000200b41306a2006290300370000200b41386a2005290300370000200341003602282003420137032020022802002106410410212205450d012003410436022420032003280228220441046a36022820032005360220200520046a2006360000200228020421040240024020032802242206200328022822056b4104490d00200328022021060c010b200541046a22072005490d05200641017422052007200520074b1b22054100480d050240024020060d002005102121060c010b200328022020062005102521060b2006450d032003200536022420032006360220200328022821050b2003200541046a360228200620056a2004360000200241206a200341206a109e0320022802082106200241106a2802002205200341206a105c02402005450d00200541027421070340200628020021010240024020032802242204200328022822056b4104490d00200328022021040c010b200541046a22082005490d07200441017422052008200520084b1b22054100480d070240024020040d002005102121040c010b200328022020042005102521040b2004450d062003200536022420032004360220200328022821050b200641046a21062003200541046a360228200420056a20013600002007417c6a22070d000b0b20022802142105200228021c2206200341206a105c02402006450d002006410574210603402003200341206a36029002200520034190026a106b200541206a2105200641606a22060d000b0b20032802242105200bad4280808080800884200335022842208620032802202206ad84100202402005450d00200610230b200b102302402003280204450d00200328020010230b02402002410c6a280200450d00200228020810230b0240200241186a280200450d00200228021410230b200341a0036a24000f0b41c00041011030000b410441011030000b200541011030000b200541011030000b102a000bbb0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a107b024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360200200328022c450d00200328022810230b2002450d00200110230b200341e0006a24000b4501017f02404108102122030d00410841011030000b20032002280200360000200320022802043600042001ad4220862000ad842003ad42808080808001841002200310230b8ced030b017f017e067f017e017f017e027f027e127f057e107f230041d00d6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1a000102030405060708090a0b0c0d0e0f10111213141516171819000b200141106a29030021042001410c6a280200210520022d0001210620022d000021020240024002400240024002400240024002400240200141086a28020022070e080009010203040506000b200341b40c6a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a419cdec0001038000b2004a7210702400240200241ff01710d00200641ff01714101460d010b2007450d9d01200510230c9d010b2007450d9801200510230c98010b200220067241ff01710d9a01410810212202450d202002200437000041acdec000ad4280808080a001842002ad42808080808001841002200210230c97010b2004a721070240200220067241ff0171450d0020070d040c9a010b41b6dec000ad4280808080d000842004428080808070832005ad8410022007450d9601200510230c96010b2004422088a721082004a721090240200220067241ff0171450d0002402008450d00200841186c21062005210203400240200241046a280200450d00200228020010230b0240200241106a280200450d002002410c6a28020010230b200241186a2102200641686a22060d000b0b410121064100210a4103210820090d94010c95010b0240200841186c2202450d00200520026a2106200521020340200241086a350200422086200235020084200241146a3502004220862002410c6a350200841002200241186a22022006470d000b0b02402008450d00200841186c21062005210203400240200241046a280200450d00200228020010230b0240200241106a280200450d002002410c6a28020010230b200241186a2102200641686a22060d000b0b410121064100210a4105210820090d93010c94010b2004422088a721082004a721090240200220067241ff0171450d0002402008450d002008410c6c21062005210203400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b410021064101210a410321082009450d94010c93010b02402008410c6c2202450d00200520026a2106200521020340200241086a35020042208620023502008410052002410c6a22022006470d000b0b02402008450d002008410c6c21062005210203400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b410021064101210a4105210820090d92010c93010b2004a72107200220067241ff0171450d012007450d96010b200510230c95010b2004428080808070832005ad84100a2007450d9101200510230c91010b200220067241ff01710d93010c90010b10be03000b024020022d00000d0020022d000141ff01714102470d00200141086a290300210420034180076a41186a2207420037030020034180076a41106a2202420037030020034180076a41086a22064200370300200342003703800741be99c600ad4280808080900184220b100322052f0000210820052d0002210a2005280003210920052d0007210c2005290008210d200510232006200d3703002003200c3a00870720032009360083072003200a3a008207200320083b01800741b39fc600ad4280808080900184100322052d000221082005280003210a20052d000721092005290008210d20052f0000210c200510232002200c3b0100200341c0056a41186a220c200d370300200341c0056a41086a220e2006290300370300200320093a0097072003200a36009307200320083a009207200341c0056a41106a2208200229030037030020032003290380073703c005200341286a200341c0056a412041014100410010b80120032802284101460d192007420037030020024200370300200642003703002003420037038007200b100322052f0000210720052d0002210a2005280003210920052d0007210f2005290008210b200510232006200b3703002003200f3a00870720032009360083072003200a3a008207200320073b01800741f0cec400ad42808080803084220b100322052d000221072005280003210a20052d000721092005290008210d20052f0000210f200510232002200f3b0100200c200d370300200e2006290300370300200320093a0097072003200a36009307200320073a0092072008200229030037030020032003290380073703c005200341186a200341c0056a109c0202402003290320500d002003280218450d0020034180076a41186a420037030020034180076a41106a2206420037030020034180076a41086a22054200370300200342003703800741be99c600ad4280808080900184100322022f0000210720022d000221082002280003210a20022d000721092002290008210d200210232005200d370300200320093a0087072003200a36008307200320083a008207200320073b01800741f0cec400ad42808080803084100322022d000221072002280003210820022d0007210a2002290008210d20022f0000210920021023200620093b0100200341c0056a41186a200d370300200341c0056a41086a20052903003703002003200a3a0097072003200836009307200320073a009207200341c0056a41106a200629030037030020032003290380073703c005200341086a200341c0056a109c02200329031042b8177c42b81720032802081b2004560d1b0b20034180076a41186a2207420037030020034180076a41106a2202420037030020034180076a41086a22064200370300200342003703800741be99c600ad4280808080900184220d100322052f0000210820052d0002210a2005280003210920052d0007210c2005290008211020051023200620103703002003200c3a00870720032009360083072003200a3a008207200320083b018007200b100322052d000221082005280003210a20052d000721092005290008210b20052f0000210c200510232002200c3b0100200341c0056a41186a220c200b370300200341c0056a41086a220e2006290300370300200320093a0097072003200a36009307200320083a009207200341c0056a41106a2208200229030037030020032003290380073703c005200320043703a00c200341c0056aad42808080808004842204200341a00c6aad220b428080808080018410022007420037030020024200370300200642003703002003420037038007200d100322052f0000210720052d0002210a2005280003210920052d0007210f2005290008210d200510232006200d3703002003200f3a00870720032009360083072003200a3a008207200320073b01800741b39fc600ad4280808080900184100322052d000221072005280003210a20052d000721092005290008210d20052f0000210f200510232002200f3b0100200c200d370300200e2006290300370300200320093a0097072003200a36009307200320073a0092072008200229030037030020032003290380073703c00541012106200341013a00a00c2004200b428080808010841002200041023a0008410121080c96010b20004181043b01082000410f360204200041aab0c0003602002000410a6a41003a00000c8b010b10bf03000b200341e0066a41026a22072001410f6a2d00003a0000200341f00a6a41086a22082001411c6a290200370300200341f00a6a41106a220a200141246a290200370300200341f00a6a41186a22092001412c6a280200360200200320012f000d3b01e0062003200141146a2902003703f00a200141c8006a2903002110200141c0006a2903002111200141386a290300210b2002411a6a290100210d200241196a2d0000210f200241186a2d00002112200241166a2f01002113200241156a2d00002114200241146a2d00002115200241126a2f0100211641112106200241116a2d00002117200241106a2d000021182002410e6a2f010021192002410d6a2d0000211a2002410c6a2d0000211b2002410a6a2f0100211c200241096a2d0000211d200241086a2d0000211e200241066a2f0100211f200241056a2d00002120200241046a2d00002121200241026a2f01002122200141106a28020021052001410c6a2d00002123200141306a290300210420022d0001210c20022d0000210e0240024002400240024002400240024002400240200141086a2802000e050001020304000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a41b49ac3001038000b200341a0086a41086a2008290300370300200341a0086a41106a200a290300370300200341a0086a41186a2009280200360200200320032f01e0063b01c005200320032903f00a3703a008200320072d00003a00c2052003200d370398072003200f3a009707200320123a009607200320133b019407200320143a009307200320153a009207200320163b019007200320173a008f07200320183a008e07200320193b018c072003201a3a008b072003201b3a008a072003201c3b0188072003201d3a00870720034102201f410874202072201e411874724102200c41ff017141014622061b200e41ff017122021b220736008307200320213a008207200320223b0180070240024020020d0020060d010b410f210641aab0c000210220070e05040506079101040b200341c8096a41186a20034180076a41186a290300370300200341c8096a41106a20034180076a41106a290300370300200341c8096a41086a20034180076a41086a29030037030020032003290380073703c8090240202341ff01714101460d0020032f01c00520032d00c205411074722102200341a0086a41106a290300210d20032903a808211020032802b808210620032903a00821110c8c010b20034180076a200541067610bc022003280280072108024002402003280288072005413f7122024b0d00410021070c010b200820024105746a22072f0000200741026a2d0000411074722102200729000f211020072d001f21062007290007211120072800032105200741176a290000210d410121070b0240200328028407450d00200810230b20070d8b01410121070c8c010b200341c8096a41086a2008290300370300200341c8096a41106a200a290300370300200341c8096a41186a2009280200360200200320032f01e0063b01c005200320032903f00a3703c809200320072d00003a00c2054186b0c0002102200c200e7241ff01710d8f0102400240202341ff01714101460d0020032f01c00520032d00c205411074722102200341c8096a41106a290300210d20032903d009212420032802e009210620032903c80921250c010b200341a0086a200541067610bc0220032802a00821080240024020032802a8082005413f7122024b0d00410021070c010b200820024105746a22072f0000200741026a2d0000411074722102200729000f212420072d001f21062007290007212520072800032105200741176a290000210d410121070b024020032802a408450d00200810230b2007450d8d010b200341b70c6a200d370000200320243700af0c200320063a00bf0c200320253700a70c200320053600a30c200320023b01a00c200320024110763a00a20c41d5fbc400ad4280808080800184100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341e3a0c200ad4280808080b00184100322022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d000721192002280003211a20022d0002211b20022f0000211c2002102320034180076a200341a00c6a10ac0141c00010212202450d1f2002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b0008200220193a00172002201a3600132002201b3a00122002201c3b0010200220133a001f200220143a001e200220153b001c200220163a001b200220173a001a200220183b0018200241386a20034180076a41186a290300370000200241306a20034180076a41106a290300370000200241286a20034180076a41086a2903003700002002200329038007370020200341b0016a200241c000108902200341b0016a41106a290300210d20032903b801212420032802b0012106200210232024420020061b22242004542207200d420020061b220d200b54200d200b5122021b0d202024200456200d200b5620021b450d8901200341a0056a41186a220a4200370300200341a0056a41106a22024200370300200341a0056a41086a22064200370300200342003703a00541d5fbc400ad42808080808001842225100322052f0000210820052d000221092005280003210c20052d0007210e2005290008212620051023200620263703002003200e3a00a7052003200c3600a305200320093a00a205200320083b01a00541d6a0c200ad4280808080d001842226100322052d000221082005280003210920052d0007210c2005290008212720052f0000210e200510232002200e3b010020034180056a41186a220e202737030020034180056a41086a220f20062903003703002003200c3a00b705200320093600b305200320083a00b20520034180056a41106a22092002290300370300200320032903a0053703800520034198016a20034180056a412010890220034198016a41106a290300212720032903a00121282003280298012108200a42003703002002420037030020064200370300200342003703a0052025100322052f0000210a20052d0002210c2005280003211220052d00072113200529000821252005102320062025370300200320133a00a705200320123600a3052003200c3a00a2052003200a3b01a0052026100322052d0002210a2005280003210c20052d000721122005290008212520052f0000211320051023200220133b0100200e2025370300200f2006290300370300200320123a00b7052003200c3600b3052003200a3a00b20520092002290300370300200320032903a00537038005200342002027420020081b22252007ad200b200d7d7c7c2028420020081b220d202420047d222654ad7d2224200d20267d2226200d56202420255620242025511b22021b3703a80820034200202620021b3703a008200341a0086a210220034180056a21060c88010b200141e0006a290300210d200141d8006a2903002124200141d0006a2903002125200341a0086a41086a2008290300370300200341a0086a41106a200a290300370300200341a0086a41186a2009280200360200200320032f01e0063b01c005200320072d00003a00c205200320032903f00a3703a0084186b0c0002102200c200e7241ff01710d8e010240202341ff01714101460d0020032f01c00520032d00c205411074722102200341a0086a41106a290300212620032903a808212720032802b808210620032903a00821280c86010b200341a00c6a200541067610bc0220032802a00c21080240024020032802a80c2005413f7122024b0d00410021070c010b200820024105746a22072f0000200741026a2d0000411074722102200729000f212720072d001f21062007290007212820072800032105200741176a2900002126410121070b024020032802a40c450d00200810230b20070d8501410121070c86010b200341a0086a41086a2008290300370300200341a0086a41106a200a290300370300200341a0086a41186a2009280200360200200320032f01e0063b01c005200320032903f00a3703a008200320072d00003a00c2052003200d370398072003200f3a009707200320123a009607200320133b019407200320143a009307200320153a009207200320163b019007200320173a008f07200320183a008e07200320193b018c072003201a3a008b072003201b3a008a072003201c3b0188072003201d3a00870720034102201f410874201e411874722020724102200c41ff017141014622061b200e41ff017122021b220736008307200320213a008207200320223b018007024020020d0020060d050b410f210641aab0c000210220070e05000102038d01000b2003280087072102200328008b0721060c8c010b410e210641aabac60021020c8b010b411321064197b0c00021020c8a010b411121064186b0c00021020c89010b200341c8096a41186a20034180076a41186a290300370300200341c8096a41106a20034180076a41106a290300370300200341c8096a41086a20034180076a41086a29030037030020032003290380073703c8090240202341ff01714101460d0020032f01c00520032d00c205411074722102200341a0086a41106a290300210d20032903a808211020032802b808210620032903a00821110c7e0b20034180076a200541067610bc022003280280072108024002402003280288072005413f7122024b0d00410021070c010b200820024105746a22072f0000200741026a2d0000411074722102200729000f211020072d001f21062007290007211120072800032105200741176a290000210d410121070b0240200328028407450d00200810230b20070d7d410121070c7e0b2001410c6a2802002107200141086a28020021142001280204210941aab0c000210e410f210f20022d00000d7a20022d000141ff01714102470d7a200341e0046a41186a22084200370300200341e0046a41106a22024200370300200341e0046a41086a22064200370300200342003703e00441a6a3c500ad4280808080a001842204100322052f0000210a20052d0002210c2005280003210e20052d0007210f2005290008210b200510232006200b3703002003200f3a00e7042003200e3600e3042003200c3a00e2042003200a3b01e0044184a9c500ad4280808080c00184220d100322052d0002210a2005280003210c20052d0007210e2005290008210b20052f0000210f200510232002200f3b010020034180076a41186a220f200b37030020034180076a41086a221220062903003703002003200e3a00f7042003200c3600f3042003200a3a00f20420034180076a41106a220a2002290300370300200320032903e00437038007024020034180076a109b02220541ff01714102460d002005410171450d00418aaac500210e411c210f0c7b0b200842003703002002420037030020064200370300200342003703e0042004100322052f0000210c20052d0002210e2005280003211320052d000721152005290008210b200510232006200b370300200320153a00e704200320133600e3042003200e3a00e2042003200c3b01e004200d100322052d0002210c2005280003210e20052d000721132005290008210b20052f0000211520051023200220153b0100200f200b37030020122006290300370300200320133a00f7042003200e3600f3042003200c3a00f204200a2002290300370300200320032903e00437038007200341013a00a00c20034180076aad42808080808004842211200341a00c6aad428080808010841002200341a0056a41186a4200370300200341a0056a41106a220c4200370300200341a0056a41086a220e4200370300200342003703a00541c4fbc400ad4280808080e00084100322052f0000211320052d000221152005280003211620052d000721172005290008210b20051023200e200b370300200320173a00a705200320163600a305200320153a00a205200320133b01a00541f9bcc000ad4280808080e00084100322052d000221132005280003211520052d000721162005290008210b20052f0000211720051023200c20173b010020034180056a41186a200b37030020034180056a41086a200e290300370300200320163a00b705200320153600b305200320133a00b20520034180056a41106a200c290300370300200320032903a00537038005200341e0016a20034180056a4120108f0120032802e401210c20032802e001210e200842003703002002420037030020064200370300200342003703e0042004100322052f0000210820052d000221132005280003211520052d00072116200529000821042005102320062004370300200320163a00e704200320153600e304200320133a00e204200320083b01e00441fca4c500ad4280808080e00084100322052d000221082005280003211320052d000721152005290008210420052f0000211620051023200220163b0100200f200437030020122006290300370300200320153a00f704200320133600f304200320083a00f204200a2002290300370300200320032903e00437038007200341a00c6a20034180076a10d3020240024020032802a00c22050d0041042105200341043602900c42002104200341a00c6a2106410021020c010b200320053602900c20032902a40c2204422088220ba722022004a7470d1a200341a00c6a21060b024020022004a7470d00200241016a22082002490d772002410174220a2008200a20084b1bad220b42c4007e220d422088a70d77200da722084100480d770240024020020d002008102121050c010b2005200241c4006c2008102521050b2005450d1b200320053602900c200442808080807083200b8421040b2004422088220ba721020c750b200341a00c6a41306a200141386a290300370300200341a00c6a41286a200141306a290300370300200341a00c6a41206a200141286a290300370300200341a00c6a41186a200141206a290300370300200341a00c6a41106a200141186a290300370300200341a00c6a41086a200141106a2903003703002003200141086a2903003703a00c200341c8096a41206a200241206a290200370300200341c8096a41186a200241186a290200370300200341c8096a41106a200241106a290200370300200341c8096a41086a200241086a290200370300200320022902003703c809200341e8016a200341a00c6a200341c8096a10f103024020032802e80122020d00200041023a0008410021050c740b20032802ec012106200041810c3b010820002002360200410021052000410a6a41003a0000200020063602040c730b108003000b200141086a280200211320012802042114200341a00c6a2001410c6a41a40110dc041a2002411a6a2901002104200241196a2d0000210f200241186a2d00002112200241166a2f01002115200241156a2d00002116200241146a2d00002117200241126a2f01002118200241116a2d00002119200241106a2d000021072002410e6a2f010021082002410d6a2d0000210a2002410c6a2d000021092002410a6a2f0100210c200241096a2d0000210e200241046a2d0000211a200241026a2f0100211b200241056a280000210520022d0000210620022d00012102200341c0056a200341a00c6a41046a41a00110dc041a410220054102200241014622021b20061b21050240024020060d0020020d010b410f210641aab0c0002102024002400240024020050e050001020373000b200c410874200e7220094118747221022008410874200a7220074118747221060c720b410e210641aabac60021020c710b411321064197b0c00021020c700b411121064186b0c00021020c6f0b200320043703880b2003200f3a00870b200320123a00860b200320153b01840b200320163a00830b200320173a00820b200320183b01800b200320193a00ff0a200320073a00fe0a200320083b01fc0a2003200a3a00fb0a200320093a00fa0a2003200c3b01f80a2003200e3a00f70a200320053600f30a2003201a3a00f20a2003201b3b01f00a200341c8096a200341f00a6a10f20320032802e8092202450d18200341a0086a41106a200341800a6a290300370300200341a0086a41086a200341f8096a290300370300200341a0086a41186a200341880a6a290300370300200341c0086a200341900a6a280200360200200341a0056a41086a2206200341ac086a290200370300200341a0056a41106a2205200341b4086a290200370300200341a0056a41186a2207200341bc086a2902003703002003200341f0096a2903003703a008200320032902a4083703a005024020032802ec09450d00200210230b200341e0066a41086a2006290300370300200341e0066a41106a2005290300370300200341e0066a41186a2007290300370300200320032903a0053703e00620034180076a200341c0056a41a00110dc041a200341a0056a200341e0066a10d002200341c8096a20032802a005220620032802a80510d10220032d00c8092102200341f00a6a200341c8096a41017241a00110dc041a0240024020024101460d00200341003a00a0080c010b200341013a00a008200341a0086a410172200341f00a6a41a00110dc041a0b024020032802a405450d00200610230b20034180076a41206a2115200341c0076a2116200341e0076a211720034180086a2118200341c1086a2119200341e1086a211a20034181096a211b200341a1096a211c200341a0086a410172211d200341c8096a4101722105416c2108034041002106024002400240024020084188d1c4006a280000220241e0ea91cb064a220f0d00200241f0c2c98b06460d0141012107200241e2c289ab06470d0341202106201521070c030b200241e1ea91cb06460d010240200241e9dabdf306460d0041012107200241e7e485f306470d034120210620034180076a21070c030b41202106201621070c020b41202106201721070c010b41202106201821070b200320063602f80a200320073602f40a200320023602f00a200341a0056a200341f00a6a10ff02200341c8096a20032802a005220a20032802a805108a0120034180056a41086a2209200541086a29000037030020034180056a41106a220c200541106a29000037030020034180056a41186a220e200541186a29000037030020032005290000370380050240024020032d00c8094101470d00200341e0046a41186a2212200e290300370300200341e0046a41106a220e200c290300370300200341e0046a41086a220c200929030037030020032003290380053703e004024020032802a405450d00200a10230b200341c8096a41186a2012290300370300200341c8096a41106a200e290300370300200341c8096a41086a200c290300370300200320032903e0043703c809200341c8096a200341e0066a412010de04450d01419b9ac3002102411821060c710b20032802a405450d00200a10230b0240024020032d00a0084101470d004100210a410121090240024002400240200f0d00200241f0c2c98b06460d01200241e2c289ab06470d034120210a201921090c030b200241e1ea91cb06460d010240200241e9dabdf306460d00200241e7e485f306470d034120210a201d21090c030b4120210a201a21090c020b4120210a201b21090c010b4120210a201c21090b02402006200a470d0020072009460d0220072009200610de04450d020b2003200a3602d009200320093602cc09200320023602c809200341f00a6a200341c8096a10ff0220033502f80a42208620032802f00a220aad84100520032802f40a450d00200a10230b200320063602d009200320073602cc09200320023602c809200341f00a6a200341c8096a10ff0220032802f00a2102200320032802f80a3602cc09200320023602c809200341e0066a200341c8096a10f50120032802f40a450d00200210230b200841046a22080d000b200341f00a6a200341e0066a10d00220032802f00a210220033502f80a2104200341003602d009200342013703c80920034180076a200341c8096a1071200341a0076a200341c8096a1071200341c0076a200341c8096a1071200341e0076a200341c8096a107120034180086a200341c8096a107120032802cc09210620044220862002ad8420033502d00942208620032802c8092205ad84100202402006450d00200510230b024020032802f40a450d00200210230b2013450d6f201410230c6f0b024020022d00000d0020022d000141ff01714102470d0020012802042106200341e0046a41186a4200370300200341e0046a41106a22054200370300200341e0046a41086a22074200370300200342003703e00441be99c600ad4280808080900184100322022f0000210820022d0002210a2002280003210920022d0007210c2002290008210420021023200720043703002003200c3a00e704200320093600e3042003200a3a00e204200320083b01e00441c799c600ad4280808080e00084100322022d000221082002280003210a20022d000721092002290008210420022f0000210c200210232005200c3b010020034180076a41186a200437030020034180076a41086a2007290300370300200320093a00f7042003200a3600f304200320083a00f20420034180076a41106a2005290300370300200320032903e00437038007200341f8016a20034180076a412041014100410010b80120032802f8014101460d19200341a0056a41186a4200370300200341a0056a41106a22054200370300200341a0056a41086a22074200370300200342003703a00541c4fbc400ad4280808080e00084100322022f0000210820022d0002210a2002280003210920022d0007210c2002290008210420021023200720043703002003200c3a00a705200320093600a3052003200a3a00a205200320083b01a00541f9bcc000ad4280808080e00084100322022d000221082002280003210a20022d000721092002290008210420022f0000210c200210232005200c3b010020034180056a41186a200437030020034180056a41086a2007290300370300200320093a00b7052003200a3600b305200320083a00b20520034180056a41106a2005290300370300200320032903a00537038005200341f0016a20034180056a4120108f0120032802f401410020032802f0011b2006490d1a200341e0046a41186a4200370300200341e0046a41106a22054200370300200341e0046a41086a22074200370300200342003703e00441be99c600ad4280808080900184100322022f0000210820022d0002210a2002280003210920022d0007210c2002290008210420021023200720043703002003200c3a00e704200320093600e3042003200a3a00e204200320083b01e00441c799c600ad4280808080e00084100322022d000221082002280003210a20022d000721092002290008210420022f0000210c200210232005200c3b010020034180076a41186a200437030020034180076a41086a2007290300370300200320093a00f7042003200a3600f304200320083a00f20420034180076a41106a2005290300370300200320032903e00437038007200320063602a00c20034180076aad4280808080800484200341a00c6aad4280808080c000841002200041023a00080c85010b20004181123b01082000410f360204200041aab0c0003602002000410a6a41003a00000c84010b200141086a28020021062001280204210502400240024020022d00000d0020022d000141ff01714101460d010b02402006450d00200510230b20004181143b01082000411336020420004197b0c0003602004100210a2000410a6a41003a00000c010b02402006450d00200510230b200041023a00084100210a0b410121064101210841012105410121070c90010b2001411c6a280200210e200141186a2802002112200141146a280200210f2001410c6a2802002113200141086a280200211441aab0c0002107410f210520022d00000d6920022d000141ff01714102470d69200141246a2802002115200141106a280200210c20034180056a41186a2209420037030020034180056a41106a2206420037030020034180056a41086a22054200370300200342003703800541f7fbc400ad4280808080f00084100322022f0000210720022d000221082002280003210a20022d00072116200229000821042002102320052004370300200320163a0087052003200a36008305200320083a008205200320073b0180054194b7c200ad4280808080c00184100322022d000221072002280003210820022d0007210a2002290008210420022f0000211620021023200620163b0100200341e0046a41186a2004370300200341e0046a41086a20052903003703002003200a3a0097052003200836009305200320073a009205200341e0046a41106a200629030037030020032003290380053703e00420034188026a200341e0046a4120108f01200328028c02210720032802880221084194fcc400ad4280808080800184100322022d000f211620022d000e211720022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f2002102341d8e9c000ad4280808080a002841003220231000f2104200231000e210b200233000c210d200231000b2110200231000a21112002330008212420022d000721202002280003212120022d0002212220022f000021232002102320032007410020081b22293602a00c200341a0056a41186a2207200341a00c6aad22264280808080c0008422251001220241186a290000370300200341a0056a41106a2208200241106a290000370300200341a0056a41086a220a200241086a290000370300200320022900003703a0052002102320092007290300370300200620082903003703002005200a290300370300200320032903a0053703800541c00010212202450d182002201c3a00072002201d3600032002201e3a00022002201f3b0000200220163a000f200220173a000e200220183b000c200220193a000b2002201a3a000a2002201b3b0008200220203a001720022021360013200220223a0012200220233b001020022011421086202484201042188684200d42208684200b423086842004423886843700182002200329038005370020200241286a2005290300370000200241306a2006290300370000200241386a2009290300370000200320153602a00c200720251001220641186a2900003703002008200641106a290000370300200a200641086a290000370300200320062900003703a0052006102320034180076a41186a200729030037030020034180076a41106a200829030037030020034180076a41086a200a290300370300200320032903a00537038007200241c00041800110252202450d19200220032903800737004041182105200241d8006a20034180076a41186a290300370000200241d0006a20034180076a41106a290300370000200241c8006a20034180076a41086a29030037000020034180026a200241e00041014100410010b80120032802800221082002102320034180056a41186a420037030020034180056a41106a2206420037030020034180056a41086a2207420037030020034200370380054194fcc400ad4280808080800184100322022f0000210a20022d000221092002280003211620022d00072117200229000821042002102320072004370300200320173a0087052003201636008305200320093a0082052003200a3b018005419ddfc000ad4280808080c00084100322022d0002210a2002280003210920022d000721162002290008210420022f0000211720021023200620173b0100200341e0046a41186a2004370300200341e0046a41086a2007290300370300200320163a00970520032009360093052003200a3a009205200341e0046a41106a200629030037030020032003290380053703e004200341a00c6a200341e0046a10bc0120032802a00c2202410120021b211620032902a40c420020021b210402400240024020084101470d0041f4ecc0002107411521050c010b201620154105746a410020152004422088a7491b22020d014189edc00021070b2004a7450d6a201610230c6a0b20022f0000210620022d000221052002280003210720022d000721082002290008210b20022f0010210a20022d001221092002280013211720022d00172118200341bd0c6a2002290018370000200341bc0c6a20183a0000200341b80c6a2017360200200341b70c6a20093a0000200341b50c6a200a3b0000200341ad0c6a200b370000200341ac0c6a20083a0000200341a80c6a2007360200200320053a00a70c200320063b00a50c200341003a00a40c200341073a00a00c200341a00c6a108e01200341003602a80c200342013703a00c200c200341a00c6a105c0240024020032802a40c220620032802a80c22026b200c490d0020032802a00c21060c010b2002200c6a22052002490d71200641017422072005200720054b1b22054100480d710240024020060d002005102121060c010b20032802a00c20062005102521060b2006450d1b200320053602a40c200320063602a00c0b20032002200c6a3602a80c200620026a2014200c10dc041a200e200341a00c6a105c200e450d1b200f200e410c6c6a210c200f210603402006280200210a200641086a2802002202200341a00c6a105c0240024020032802a40c220820032802a80c22056b2002490d0020032802a00c21070c010b200520026a22072005490d72200841017422092007200920074b1b22094100480d720240024020080d002009102121070c010b20032802a00c20082009102521070b2007450d1e200320093602a40c200320073602a00c200921080b2003200520026a22093602a80c200720056a200a200210dc041a2006410c6a2206200c470d000c690b0b10f303000b200341a00c6a41286a200141306a290300370300200341a00c6a41206a200141286a290300370300200341a00c6a41186a200141206a290300370300200341a00c6a41106a200141186a290300370300200341a00c6a41086a200141106a2903003703002003200141086a2903003703a00c200341c8096a41206a200241206a290200370300200341c8096a41186a200241186a290200370300200341c8096a41106a200241106a290200370300200341c8096a41086a200241086a290200370300200320022902003703c80920034190026a200341a00c6a200341c8096a10f001024020032802900222020d00200041023a00084100210c0c660b2003280294022106200041811a3b0108200020023602004100210c2000410a6a41003a0000200020063602040c650b200341c8096a41206a200141246a290200370300200341c8096a41186a2001411c6a290200370300200341c8096a41106a200141146a290200370300200341c8096a41086a2001410c6a290200370300200320012902043703c809200341a00c6a41206a200241206a290200370300200341a00c6a41186a200241186a290200370300200341a00c6a41106a200241106a290200370300200341a00c6a41086a200241086a290200370300200320022902003703a00c20034198026a200341c8096a200341a00c6a10d603024020032802980222020d00200041023a00084100210e0c640b200328029c022106200041811c3b0108200020023602004100210e2000410a6a41003a0000200020063602040c630b200341c8096a41206a200141246a290200370300200341c8096a41186a2001411c6a290200370300200341c8096a41106a200141146a290200370300200341c8096a41086a2001410c6a290200370300200320012902043703c809200341a00c6a41206a200241206a290200370300200341a00c6a41186a200241186a290200370300200341a00c6a41106a200241106a290200370300200341a00c6a41086a200241086a290200370300200320022902003703a00c200341a0026a200341c8096a200341a00c6a10d503024020032802a00222020d00200041023a00084100210f0c620b20032802a4022106200041811e3b0108200020023602004100210f2000410a6a41003a0000200020063602040c610b200341c8096a41206a200141286a290300370300200341c8096a41186a200141206a290300370300200341c8096a41106a200141186a290300370300200341c8096a41086a200141106a2903003703002003200141086a2903003703c809200341a00c6a41206a200241206a290200370300200341a00c6a41186a200241186a290200370300200341a00c6a41106a200241106a290200370300200341a00c6a41086a200241086a290200370300200320022902003703a00c200341a8026a200341c8096a200341a00c6a108203024020032802a80222020d00200041023a0008410021120c600b20032802ac02210620004181203b010820002002360200410021122000410a6a41003a0000200020063602040c5f0b200341a2056a2205200141076a2d00003a0000200341c8096a41086a22072001411c6a290200370300200341c8096a41106a220a200141246a290200370300200341c8096a41186a2001412c6a290200370300200341e8096a200141346a290200370300200341f0096a2001413c6a290200370300200341f8096a200141c4006a2d00003a0000200320012f00053b01a0052003200141146a2902003703c809200141086a28020021082001410c6a2802002109200141106a280200210620022f0001200241036a2d000041107472210c2002410c6a2802002112200241086a2802002113200241046a280200210f20022d00002102024002400240024002400240024020012d0004220e0e050001020304000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602a408200341849ec6003602a0082003200341a0086a3602b00c200341a00c6a41e0dfc4001038000b200341b7086a2007290300370000200341bf086a200a2d00003a0000200320032f01a0053b01a008200320063600ab08200320093600a708200320083600a308200320032903c8093700af08200320052d00003a00a208024002402002417f6a220641034b0d00024020060e0400010102000b200f41ff01710d00201341017420124b0d010b2002200c7241ff01710d040b41f0dfc400ad4280808080b00284100322022f0000210620022d000221052002280003210720022d0007210a20022900082104200210234183e0c400ad4280808080f00084100322022f0000210c20022d0002210f2002280003211220022d000721132002290008210b200210232003200b3701b80c200320133a00b70c200320123600b30c2003200f3a00b20c2003200c3b01b00c200320043701a80c2003200a3a00a70c200320073600a30c200320053a00a20c200320063b01a00c200341f00a6a200341a00c6a412010bb01024020032802f00a220a0d004100210f200341003602e0064101210a2003410136028007410021120c5c0b2003200a360280072003200341f80a6a2802003602e00620032802f40a210f20032902f40a2204a7211241002102024002402004422088a7220c41014b0d00200c0e025d015d0b200c210603402006410176220520026a22072002200a20074105746a200341a0086a412010de044101481b2102200620056b220641014b0d000b0b0240200a20024105746a200341a0086a412010de0422060d00418ae0c400210c2012450d5e200a10234110210f0c5f0b200341a00c6a41186a200341a0086a41186a290300370300200341a00c6a41106a200341a0086a41106a290300370300200341a00c6a41086a200341a0086a41086a290300370300200320032903a0083703a00c02402006411f7620026a2205200c4b0d00200341a00c6a21060c5d0b4180bbc000102b000b200341b7086a2007290300370000200341bf086a200a2d00003a0000200320032f01a0053b01a008200320063600ab08200320093600a708200320083600a308200320032903c8093700af08200320052d00003a00a208024002402002417f6a220641034b0d00024020060e0400010102000b200f41ff01710d00201341017420124b0d010b2002200c7241ff01710d030b41f0dfc400ad4280808080b00284100322022f0000210620022d000221052002280003210720022d0007210a20022900082104200210234183e0c400ad4280808080f00084100322022f0000210c20022d0002210f2002280003211220022d000721132002290008210b200210232003200b3701b80c200320133a00b70c200320123600b30c2003200f3a00b20c2003200c3b01b00c200320043701a80c2003200a3a00a70c200320073600a30c200320053a00a20c200320063b01a00c200341f00a6a200341a00c6a412010bb0120032802f00a2206410120061b210a41002102024002400240024020032902f40a420020061b2204422088a7220c41014b0d00200c0e020201020b200c210603402006410176220520026a22072002200a20074105746a200341a0086a412010de044101481b2102200620056b220641014b0d000b0b200a20024105746a200341a0086a412010de04450d010b419ae0c400210c410c210f2004a7450d5e200a10230c5e0b2002200c4f0d1b200a20024105746a2206200641206a2002417f73200c6a41057410dd041a200341c0056a41186a4200370300200341c0056a41106a22064200370300200341c0056a41086a22054200370300200342003703c00541f0dfc400ad4280808080b00284100322022f0000210720022d0002210f2002280003211220022d000721132002290008210b200210232005200b370300200320133a00c705200320123600c3052003200f3a00c205200320073b01c0054183e0c400ad4280808080f00084100322022d000221072002280003210f20022d000721122002290008210b20022f0000211320021023200620133b0100200341a00c6a41186a200b370300200341a00c6a41086a2005290300370300200320123a00d7052003200f3600d305200320073a00d205200341a00c6a41106a2006290300370300200320032903c0053703a00c200341003602f80a200342013703f00a200c417f6a2205200341f00a6a105c02402005450d00200c41057441606a2106200a210203402002200341f00a6a1071200241206a2102200641606a22060d000b0b20032802f40a2102200341a00c6aad428080808080048420033502f80a42208620032802f00a2206ad84100202402002450d00200610230b200341a00c6a41186a200341a0086a41186a290300370300200341a00c6a41106a200341a0086a41106a290300370300200341a00c6a41086a200341a0086a41086a290300370300200320032903a0083703a00c200341a00c6a4101200a200510cd032003418c023b01a00c200341a00c6a108e014100210c2004a7450d59200a10230c590b200341870b6a20072903003700002003418f0b6a200a2d00003a0000200320032f01a0053b01f00a200320063600fb0a200320093600f70a200320083600f30a200320032903c8093700ff0a200320052d00003a00f20a200341a0086a41186a200341f1096a290000370300200341a0086a41106a200341e9096a290000370300200341a0086a41086a200341e1096a290000370300200320032900d9093703a008024002402002417f6a220641034b0d00024020060e0400010102000b200f41ff01710d00201341017420124b0d010b2002200c7241ff0171450d0041b696c600210c410a210f0c5d0b0240200341f00a6a200341a0086a412010de040d004100210c0c5d0b41f0dfc400ad4280808080b00284100322022f0000210620022d000221052002280003210720022d0007210a20022900082104200210234183e0c400ad4280808080f00084100322022f0000210c20022d0002210f2002280003211220022d000721132002290008210b200210232003200b3701b80c200320133a00b70c200320123600b30c2003200f3a00b20c2003200c3b01b00c200320043701a80c2003200a3a00a70c200320073600a30c200320053a00a20c200320063b01a00c20034180076a200341a00c6a412010bb012003280280072206410120061b210a419ae0c400210c410c210f4100210202400240200329028407420020061b2204422088a7221241014b0d0020120e025901590b2012210603402006410176220520026a22072002200a20074105746a200341f00a6a412010de044101481b2102200620056b220641014b0d000b0b200a20024105746a2206200341f00a6a412010de040d5720034180076a41186a2205200341a0086a41186a29030037030020034180076a41106a2207200341a0086a41106a29030037030020034180076a41086a220c200341a0086a41086a290300370300200320032903a00837038007200220124f0d1b2006200329038007370000200641186a2005290300370000200641106a2007290300370000200641086a200c29030037000041002102024020124101460d00410021022012210603402006410176220520026a22072002200a20074105746a200341a0086a412010de044101481b2102200620056b220641014b0d000b0b0240200a20024105746a200341a0086a412010de040d00418ae0c400210c4110210f0c580b200a201210fa01200341c0056a41186a4200370300200341c0056a41106a22064200370300200341c0056a41086a22054200370300200342003703c00541f0dfc400ad4280808080b00284100322022f0000210720022d0002210c2002280003210f20022d000721132002290008210b200210232005200b370300200320133a00c7052003200f3600c3052003200c3a00c205200320073b01c0054183e0c400ad4280808080f00084100322022d000221072002280003210c20022d0007210f2002290008210b20022f0000211320021023200620133b0100200341a00c6a41186a200b370300200341a00c6a41086a20052903003703002003200f3a00d7052003200c3600d305200320073a00d205200341a00c6a41106a2006290300370300200320032903c0053703a00c20034100360288072003420137038007201220034180076a105c02402012450d0020124105742106200a21020340200220034180076a1071200241206a2102200641606a22060d000b0b2003280284072102200341a00c6aad42808080808004842003350288074220862003280280072206ad84100202402002450d00200610230b200341a00c6a41186a200341f00a6a41186a290300370300200341a00c6a41106a200341f00a6a41106a290300370300200341a00c6a41086a200341f00a6a41086a290300370300200320032903f00a3703a00c200341a00c6a4101200a201210cd032003418c043b01a00c200341a00c6a108e014100210c2004a7450d58200a10230c5c0b02402002417f6a220541034b0d00024020050e0400010103000b200f41ff01710d00201341017420124b0d020b2002200c7241ff0171450d012009450d00200810230b41b696c600210c410a210f0c5d0b2008200610fa0141f0dfc400ad4280808080b002842204100322022f0000210520022d000221072002280003210a20022d0007210c2002290008210b200210234183e0c400ad4280808080f00084220d100322022f0000210e20022d0002210f2002280003211220022d000721132002290008211020021023200320103701b80c200320133a00b70c200320123600b30c2003200f3a00b20c2003200e3b01b00c2003200b3701a80c2003200c3a00a70c2003200a3600a30c200320073a00a20c200320053b01a00c200341a0086a200341a00c6a412010bb012008200620032802a0082202410120021b220520032902a408420020021b220b422088a710cc030240200ba7450d00200510230b200341c0056a41186a4200370300200341c0056a41106a22054200370300200341c0056a41086a22074200370300200342003703c0052004100322022f0000210a20022d0002210c2002280003210e20022d0007210f2002290008210420021023200720043703002003200f3a00c7052003200e3600c3052003200c3a00c2052003200a3b01c005200d100322022d0002210a2002280003210c20022d0007210e2002290008210420022f0000210f200210232005200f3b0100200341a00c6a41186a2004370300200341a00c6a41086a20072903003703002003200e3a00d7052003200c3600d3052003200a3a00d205200341a00c6a41106a2005290300370300200320032903c0053703a00c200341003602a808200342013703a0082006200341a0086a105c02402006450d00200641057421062008210203402002200341a0086a1071200241206a2102200641606a22060d000b0b20032802a4082102200341a00c6aad428080808080048420033502a80842208620032802a0082206ad84100202402002450d00200610230b02402009450d00200810230b2003418c063b01a00c200341a00c6a108e010c5a0b20034180076a41086a22082001411c6a29020037030020034180076a41106a220c200141246a29020037030020034180076a41186a220e2001412c6a2802003602002003200141146a290200370380072002410c6a2802002107200241086a28020021052001410c6a2802002109200241046a280200210a20022d000021060240024002400240024002400240200141086a2802000e0400010203000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a41f8c0c3001038000b20074110762112200741087621132005411076211420054108762115200141386a290300210b200141306a29030021042002411a6a290100210d200241196a2d00002117200241186a2d00002118200241166a2f01002119200241156a2d0000211a200241146a2d0000211b200241126a2f0100211c200241116a2d0000211d200241106a2d00002116200241026a2f0100211e200141106a280200210f20022d00012102200341a0086a41186a200e280200360200200341a0086a41106a200c290300370300200341a0086a41086a200829030037030020032003290380073703a0084102200a4108762005411874724102200241014622021b20061b21050240024020060d0020020d010b410f210841aab0c0002102024002400240024020050e050001020357000b201541ff01712014410874722007411874722102201341ff017120124108747220164118747221080c560b410e210841aabac60021020c550b411321084197b0c00021020c540b411121084186b0c00021020c530b2003200d3703e009200320173a00df09200320183a00de09200320193b01dc092003201a3a00db092003201b3a00da092003201c3b01d8092003201d3a00d709200320163a00d609200320123b01d409200320133a00d309200320073a00d209200320143b01d009200320153a00cf09200320053600cb092003200a3a00ca092003201e3b01c8090240200941ff01714101460d0020094108762107200341b0086a290300211120032903a808212420032802b808210820032903a00821250c520b200341a00c6a200f41067610bc0220032802a00c21060240024020032802a80c200f413f7122024b0d00410021020c010b200620024105746a22022f0000200241026a2d0000411074722107200229000f212420022d001f2108200229000721252002280003210f200241176a2900002111410121020b024020032802a40c450d00200610230b20020d5141aabac6002102410e21080c520b419cbac6002102410e21082006417f6a220641034b0d520240024020060e0400545401000b200541017420074d0d53200a41ff01710d530b41f4fcc400ad42808080808001841003220231000f2104200231000e210b200233000c210d200231000b2110200231000a21112002330008212420022d000721062002280003210520022d0002210720022f000021082002102341f980c400ad4280808080900184100322022d000f210a20022d000e210c20022f000c210e20022d000b210f20022d000a211220022f0008211320022d000721142002280003211520022d0002211620022f0000211720021023200320093602a00c200341a0056a41186a2209200341a00c6aad4280808080c000841001220241186a290000370300200341a0056a41106a2218200241106a290000370300200341a0056a41086a2219200241086a290000370300200320022900003703a0052002102320034180056a41186a221a200929030037030020034180056a41106a2209201829030037030020034180056a41086a22182019290300370300200320032903a0053703800541c00010212202450d1c200220063a000720022005360003200220073a0002200220083b000020022011421086202484201042188684200d42208684200b42308684200442388684370008200220143a001720022015360013200220163a0012200220173b00102002200a3a001f2002200c3a001e2002200e3b001c2002200f3a001b200220123a001a200220133b00182002200329038005370020200241286a2018290300370000200241306a2009290300370000200241386a201a290300370000200341a00c6a200241c000108f03024020032903a00c22044201520d002002ad428080808080088410050b20032802a80c2106200341a0086a200341ac0c6a41dc0010dc041a200341a00c6a200341a0086a41dc0010dc041a20044201510d03200210230c010b419cbac6002102410e21082006417f6a220641034b0d510240024020060e0400535301000b200a41ff01710d52200541056c200741036c490d520b41f4fcc400ad42808080808001841003220231000f2104200231000e210b200233000c210d200231000b2110200231000a21112002330008212420022d000721062002280003210520022d0002210720022f000021082002102341f980c400ad4280808080900184100322022d000f210a20022d000e210c20022f000c210e20022d000b210f20022d000a211220022f0008211320022d000721142002280003211520022d0002211620022f0000211720021023200320093602a00c200341a0056a41186a2218200341a00c6aad4280808080c000841001220241186a290000370300200341a0056a41106a2219200241106a290000370300200341a0056a41086a221a200241086a290000370300200320022900003703a0052002102320034180056a41186a221b201829030037030020034180056a41106a2218201929030037030020034180056a41086a2219201a290300370300200320032903a0053703800541c00010212202450d1c200220063a000720022005360003200220073a0002200220083b000020022011421086202484201042188684200d42208684200b42308684200442388684370008200220143a001720022015360013200220163a0012200220173b00102002200a3a001f2002200c3a001e2002200e3b001c2002200f3a001b200220123a001a200220133b00182002200329038005370020200241286a2019290300370000200241306a2018290300370000200241386a201b29030037000020034180036a200241c00041014100410010b80120032802800321062002102320064101460d010b41a2c1c3002102411921080c500b20034180056a41186a2207420037030020034180056a41106a2202420037030020034180056a41086a22064200370300200342003703800541f4fcc400ad4280808080800184220d100322052f0000210820052d0002210a2005280003210c20052d0007210e2005290008210420051023200620043703002003200e3a0087052003200c360083052003200a3a008205200320083b0180054180b4c300ad42808080809001842210100322052d000221082005280003210a20052d0007210c2005290008210420052f0000210e200510232002200e3b0100200341e0046a41186a220f2004370300200341e0046a41086a221220062903003703002003200c3a0097052003200a36009305200320083a009205200341e0046a41106a2208200229030037030020032003290380053703e004200341a00c6a200341e0046a10950220032802a00c2205410420051b210e024020032902a40c420020051b2204422088220ba722052004a7470d00200541016a220a2005490d6b200ba72213410174220c200a200a200c491b220a41ffffffff0371200a470d6b200a410274220c4100480d6b0240024020050d00200c1021210e0c010b200e2013410274200c1025210e0b200e450d1c2004422088220ba72105200aad21040b200e20054102746a20093602002007420037030020024200370300200642003703002003420037038005200d100322052f0000210720052d0002210a2005280003210920052d0007210c2005290008210d200510232006200d3703002003200c3a00870520032009360083052003200a3a008205200320073b0180052010100322052d000221072005280003210a20052d000721092005290008210d20052f0000210c200510232002200c3b0100200f200d37030020122006290300370300200320093a0097052003200a36009305200320073a0092052008200229030037030020032003290380053703e0040240200e0d00200341e0046aad428080808080048410050c510b200341003602a80c200342013703a00c200ba741016a2206200341a00c6a105c0240024020060d0020032802a80c210a20032802a40c210820032802a00c21060c010b410020032802a80c22026b2105200e20064102746a210c20032802a40c2108200e210703402007280200210902400240200820056a4104490d0020032802a00c21060c010b200241046a22062002490d6d2008410174220a2006200a20064b1b220a4100480d6d0240024020080d00200a102121060c010b20032802a00c2008200a102521060b2006450d1f2003200a3602a40c200320063602a00c200a21080b2003200241046a220a3602a80c200620026a20093600002005417c6a2105200a2102200c200741046a2207470d000b0b2004a72102200341e0046aad4280808080800484200aad4220862006ad84100202402008450d00200610230b2002450d50200e10230c500b200341f00a6a200341a00c6a41dc0010dc041a20021023200320063602c809200341c8096a410472200341f00a6a41dc0010dc041a200341f0026a200341e8096a20032903d809200341e0096a29030010c80220032903f002200341f8026a29030010c9020c4f0b200341c0056a41086a2205200141116a290000370300410f2106200341c0056a410f6a220a200141186a290000370000200341a0086a41086a2209200141386a290300370300200341a0086a41106a220c200141c0006a290300370300200341a0086a41186a220e200141c8006a290300370300200341a0086a41206a220f200141d0006a290300370300200341a0086a41286a2212200141d8006a290300370300200341a0086a41306a2213200141e0006a290300370300200341a0086a41386a2214200141e8006a290300370300200320012900093703c0052003200141306a2903003703a008200141286a2903002104200141206a290300210b20022d0001210820022d00002107024002400240200141086a2d00000e03000102000b200341b40c6a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a41ace6c3001038000b200341f00a6a411f6a20043c0000200341f00a6a410f6a200a290000370000200341f00a6a41086a20052903003703002003200b3700870b200320032903c0053703f00a200341c8096a410f6a2009290300370000200341df096a200c290300370000200341c8096a411f6a200e290300370000200341ef096a200f290300370000200341f7096a2012290300370000200341ff096a2013290300370000200341870a6a20142f01003b0000200320044238883c00ce09200320044228883d01cc09200320044208883e02c809200320032903a0083700cf0941aab0c0002102200741ff01710d4b200841ff01714102470d4b200341900c6a200341f00a6a10b403200341a00c6a200341c8096a20032802900c220520032802980c10b503024020032d00a00c4101460d00411a210641bce6c30021020c4b0b20034180076a41086a2202200341b40c6a2d00003a0000200341f3066a20022802003a0000200320032d00a30c3a00e206200320032f00a10c3b01e006200320032902a40c3700e3062003200341ac0c6a2902003700eb0641fcfcc400ad4280808080e000842204100322022d000f210620022d000e210720022f000c210820022d000b210a20022d000a210920022f0008210c20022d0007210e2002280003210f20022d0002211220022f00002113200210232004100322022d000f211420022d000e211520022f000c211620022d000b211720022d000a211820022f0008211920022d0007211a2002280003211b20022d0002211c20022f0000211d20021023200341e0046a200341e0066a10b60341c00010212202450d1c2002200e3a00072002200f360003200220123a0002200220133b0000200220063a000f200220073a000e200220083b000c2002200a3a000b200220093a000a2002200c3b00082002201a3a00172002201b3600132002201c3a00122002201d3b0010200220143a001f200220153a001e200220163b001c200220173a001b200220183a001a200220193b0018200241386a200341f8046a290300370000200241306a200341e0046a41106a290300370000200241286a200341e0046a41086a290300370000200220032903e004370020200341c8036a200241c000108902200341c8036a41106a290300210420032903d003210b024020032903c803220d4201520d002002ad428080808080088410050b200210230240200da70d0041d6e6c3002102411d21060c4b0b200341e0046a41186a22074200370300200341e0046a41106a22024200370300200341e0046a41086a22064200370300200342003703e00441fcfcc400ad4280808080e000842211100322052f0000210820052d0002210a2005280003210920052d0007210c2005290008210d200510232006200d3703002003200c3a00e704200320093600e3042003200a3a00e204200320083b01e0044194e6c300ad4280808080d000842224100322052d000221082005280003210a20052d000721092005290008210d20052f0000210c200510232002200c3b010020034180076a41186a220c200d37030020034180076a41086a220e2006290300370300200320093a00f7042003200a3600f304200320083a00f20420034180076a41106a22082002290300370300200320032903e00437038007200341b0036a20034180076a412010890220032903b803420020032802b00322051b220d200b5a200341b0036a41106a290300420020051b221020045a20102004511b450d1d200742003703002002420037030020064200370300200342003703e0042011100322052f0000210720052d0002210a2005280003210920052d0007210f2005290008211120051023200620113703002003200f3a00e704200320093600e3042003200a3a00e204200320073b01e0042024100322052d000221072005280003210a20052d000721092005290008211120052f0000210f200510232002200f3b0100200c2011370300200e2006290300370300200320093a00f7042003200a3600f304200320073a00f20420082002290300370300200320032903e004370380072003201020047d200d200b54ad7d3703a80c2003200d200b7d3703a00c20034180076aad4280808080800484200341a00c6aad428080808080028422111002200341a0036a200341f00a6a200b2004109702200341a0036a41086a290300211020032903a0032124200341a0056a41186a22084200370300200341a0056a41106a22024200370300200341a0056a41086a22064200370300200342003703a00541d5fbc400ad4280808080800184220d100322052f0000210720052d0002210a2005280003210920052d0007210c2005290008212520051023200620253703002003200c3a00a705200320093600a3052003200a3a00a205200320073b01a00541d6a0c200ad4280808080d001842225100322052d000221072005280003210a20052d000721092005290008212620052f0000210c200510232002200c3b010020034180056a41186a220c202637030020034180056a41086a220e2006290300370300200320093a00b7052003200a3600b305200320073a00b20520034180056a41106a220a2002290300370300200320032903a0053703800520034188036a20034180056a412010890220034188036a41106a290300212620032903900321272003280288032107200842003703002002420037030020064200370300200342003703a005200d100322052f0000210820052d000221092005280003210f20052d000721122005290008210d200510232006200d370300200320123a00a7052003200f3600a305200320093a00a205200320083b01a0052025100322052d000221082005280003210920052d0007210f2005290008210d20052f0000211220051023200220123b0100200c200d370300200e20062903003703002003200f3a00b705200320093600b305200320083a00b205200a2002290300370300200320032903a005370380052003427f20102026420020071b220d7c20242027420020071b22107c22242010542202ad7c221020022010200d542010200d511b22021b3703a80c2003427f202420021b3703a00c20034180056aad428080808080048420111002200341a00c6a41106a2004370300200341a00c6a41086a200b370300200341a00c6a41186a20032903f00a370300200341a00c6a41206a200341f00a6a41086a290300370300200341c80c6a200341f00a6a41106a290300370300200341d00c6a200341f00a6a41186a290300370300200341d80c6a20032903e006370300200341e00c6a200341e0066a41086a290300370300200341e80c6a200341e0066a41106a2802003602002003410e3a00a00c200341a00c6a108e01024020032802940c450d0020032802900c10230b410021020c4b0b200341c8096a41106a200341c0056a41106a280200360200200341c8096a41086a2005290300370300200320032903c0053703c8094186b0c00021020240200820077241ff01710d0020034180076a41186a2207420037030020034180076a41106a2206420037030020034180076a41086a22054200370300200342003703800741fcfcc400ad4280808080e00084220d100322022f0000210820022d0002210a2002280003210920022d0007210c2002290008211020021023200520103703002003200c3a00870720032009360083072003200a3a008207200320083b0180074194e6c300ad4280808080d000842210100322022d000221082002280003210a20022d000721092002290008211120022f0000210c200210232006200c3b0100200341e0046a41186a220c2011370300200341e0046a41086a220e2005290300370300200320093a0097072003200a36009307200320083a009207200341e0046a41106a220a200629030037030020032003290380073703e004200341e0036a200341e0046a4120108902200341e0036a41106a290300211120032903e803212420032802e00321082007420037030020064200370300200542003703002003420037038007200d100322022f0000210920022d0002210f2002280003211220022d00072113200229000821252002102320052025370300200320133a00870720032012360083072003200f3a008207200320093b0180072010100322022d000221092002280003210f20022d000721122002290008211020022f0000211320021023200620133b0100200c2010370300200e2005290300370300200320123a0097072003200f36009307200320093a009207200a200629030037030020032003290380073703e00420032024420020081b2210200b7c22243703a00c20032011420020081b20047c2024201054ad7c3703a80c200341e0046aad4280808080800484200341a00c6aad428080808080028422101002200341a00c6a41106a200341c8096a41106a280200360200200341a00c6a41086a200341c8096a41086a290300370300200320032903c8093703a00c200d100322022d000f210820022d000e210a20022f000c210920022d000b210c20022d000a210e20022f0008210f20022d000721122002280003211320022d0002211420022f0000211520021023200d100322022d000f211620022d000e211720022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f2002102320034180076a200341a00c6a10b60341c00010212202450d1e200220123a000720022013360003200220143a0002200220153b0000200220083a000f2002200a3a000e200220093b000c2002200c3a000b2002200e3a000a2002200f3b00082002201c3a00172002201d3600132002201e3a00122002201f3b0010200220163a001f200220173a001e200220183b001c200220193a001b2002201a3a001a2002201b3b0018200241386a2007290300370000200241306a2006290300370000200241286a20052903003700002002200329038007370020200320043703a80c2003200b3703a00c2002ad42808080808008842010100220021023410021020b411121060c4a0b20022d0001210620022d00002102200341a80c6a2001410c6a280200360200200320012902043703a00c200341f8036a20022006200341a00c6a108502024020032802f80322020d00200041023a0008410021170c480b20032802fc03210620004181283b010820002002360200410021172000410a6a41003a0000200020063602040c470b41aab0c0002106410f2105024020022d00000d0020022d000141ff01714102470d00200341a0056a41186a220c4200370300200341a0056a41106a22054200370300200341a0056a41086a22074200370300200342003703a00541a79fc600ad4280808080c00184220b100322022f0000210620022d000221082002280003210a20022d00072109200229000821042002102320072004370300200320093a00a7052003200a3600a305200320083a00a205200320063b01a00541b39fc600ad4280808080900184220d100322022d000221062002280003210820022d0007210a2002290008210420022f0000210920021023200520093b010020034180056a41186a2209200437030020034180056a41086a220e20072903003703002003200a3a00b705200320083600b305200320063a00b20520034180056a41106a22082005290300370300200320032903a005370380054101210620034180046a20034180056a412041014100410010b8012003280280044101470d1d41bc9fc6002106413421050b200041812a3b010820002005360204200020063602002000410a6a41003a00000c780b200341900c6a41026a22232001410b6a2d00003a0000200341c0056a41086a2218200141206a290300370300200341c0056a41106a2219200141286a290300370300200320012f00093b01900c2003200141186a2903003703c0052001410c6a28020021172002411a6a2901002104200241196a2d0000211a200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f41112106200241116a2d00002120200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002108200241066a2f0100210a200241056a2d00002109200241046a2d00002121200241026a2f01002122200141146a2802002116200141106a280200210c20022d0001210520022d0000210702400240024002400240024002400240024002400240200141086a2d00000e070001020304090a000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a41dcadc4001038000b4186b0c0002102200520077241ff01710d4c418cfdc400ad4280808080d00084100322022f0000210620022d000221052002280003210720022d00072108200229000821042002102341d8fdc300ad4280808080b00184100322022f0000210a20022d000221092002280003210e20022d0007210f2002290008210b200210232003200b3703880b2003200f3a00870b2003200e3600830b200320093a00820b2003200a3b01800b200320043703f80a200320083a00f70a200320073600f30a200320053a00f20a200320063b01f00a200341a0046a200341f00a6a412041014100410010b801024020032802a0044101470d00411b210641aaafc40021020c4d0b20034180056a41186a220e420037030020034180056a41106a2206420037030020034180056a41086a22054200370300200342003703800541c4fbc400ad4280808080e00084220b100322022f0000210720022d000221082002280003210a20022d00072109200229000821042002102320052004370300200320093a0087052003200a36008305200320083a008205200320073b01800541f9bcc000ad4280808080e00084220d100322022d000221072002280003210820022d0007210a2002290008210420022f0000210920021023200620093b0100200341e0046a41186a22092004370300200341e0046a41086a220f20052903003703002003200a3a0097052003200836009305200320073a009205200341e0046a41106a2207200629030037030020032003290380053703e00420034198046a200341e0046a4120108f010240200328029c0441a08d066e41002003280298041b200c4d0d004114210641c5afc40021020c4d0b418cfdc400ad4280808080d000842204100322022f0000210820022d0002210a2002280003211220022d000721132002290008211020021023419efec300ad4280808080e001842211100322022f0000211420022d000221152002280003211620022d000721182002290008212420021023200320243703880b200320183a00870b200320163600830b200320153a00820b200320143b01800b200320103703f80a200320133a00f70a200320123600f30a2003200a3a00f20a200320083b01f00a20034190046a200341f00a6a4120108f012003280290042108200328029404210a2004100322022f0000211220022d000221132002280003211420022d0007211520022900082110200210232011100322022f0000211620022d000221182002280003211920022d0007211a2002290008211120021023200320113703880b2003201a3a00870b200320193600830b200320183a00820b200320163b01800b200320103703f80a200320153a00f70a200320143600f30a200320133a00f20a200320123b01f00a2003200a41016a410120081b22083602a00c200341f00a6aad42808080808004842210200341a00c6aad4280808080c000841002200e420037030020064200370300200542003703002003420037038005200b100322022f0000210a20022d0002210e2002280003211220022d000721132002290008210b200210232005200b370300200320133a00870520032012360083052003200e3a0082052003200a3b018005200d100322022d0002210a2002280003210e20022d000721122002290008210b20022f0000211320021023200620133b01002009200b370300200f2005290300370300200320123a0097052003200e360093052003200a3a0092052007200629030037030020032003290380053703e00420034188046a200341e0046a4120108f01200328028c04210620032802880421052004100322022f0000210720022d0002210a2002280003210920022d0007210e200229000821042002102341d8fdc300ad4280808080b00184100322022f0000210f20022d000221122002280003211320022d000721142002290008210b200210232003200b3703880b200320143a00870b200320133600830b200320123a00820b2003200f3b01800b200320043703f80a2003200e3a00f70a200320093600f30a2003200a3a00f20a200320073b01f00a410810212202450d2520022006410020051b20176a22063600042002200c36000020102002ad4280808080800184100220021023200341b40c6a2006360200200341b00c6a200c360200200341ac0c6a2008360200200341a80c6a41013a00002003410f3a00a00c200341a00c6a108e010c4a0b4102200a4108742008411874722009724102200541ff017141014622061b200741ff017122021b21050240024020020d0020060d010b410f210641aab0c0002102024020050e05000405064a000b20144108742015722013411874722102200f410874201272200e4118747221060c490b2019290300210b20032903c805210d20032802c0052102200320153a00f70a200320053600f30a200320213a00f20a200320223b01f00a200320203a00ff0a2003200e3a00fe0a2003200f3b01fc0a200320123a00fb0a200320133a00fa0a200320143b01f80a2003201a3a00870b2003201e3a00820b2003201f3b01800b200320043703880b2003201b411874201c41087472201d723600830b200341a00c6a41086a20032903f00a370300200341b00c6a20032903f80a370300200341a00c6a41186a20032903800b370300200341c00c6a2004370300200320173602a40c200341003602a00c200341a8046a200341a00c6a200c20162002200d200b10db0320032802a8042202450d4920032802ac0421060c4b0b4102200a4108742008411874722009724102200541ff017141014622061b200741ff017122021b21050240024020020d0020060d010b410f210641aab0c0002102024020050e050003040549000b20144108742015722013411874722102200f410874201272200e4118747221060c480b2018290300210b20032903c005210d200320043703e0092003201a3a00df092003201e3a00da092003201f3b01d809200320203a00d7092003200e3a00d6092003200f3b01d409200320123a00d309200320133a00d209200320143b01d009200320153a00cf09200320053600cb09200320213a00ca09200320223b01c8092003201b411874201c41087472201d723600db09200341a00c6a200341c8096a10bb03024020032802a00c4101460d0041ecadc4002102411a21060c480b200320032802a40c3602a40c200341013602a00c200341b0046a200341a00c6a2017200c2016200d200b10db0320032802b0042202450d4820032802b40421060c470b200341a0086a410c6a2018290300370200200341a0086a41146a2019290300370200200320163602a008200320032903c0053702a4084102200a4108742009722008411874724102200541ff017141014622061b200741ff017122021b2105024020020d0020060d040b410f210641aab0c0002102024020050e050001020347000b20144108742015722013411874722102200f410874201272200e4118747221060c460b410e210641aabac60021020c450b411321064197b0c00021020c440b411121064186b0c00021020c430b200320043703e0092003201a3a00df092003201b3a00de092003201c3b01dc092003201d3a00db092003201e3a00da092003201f3b01d809200320203a00d7092003200e3a00d6092003200f3b01d409200320123a00d309200320133a00d209200320143b01d009200320153a00cf09200320053600cb09200320213a00ca09200320223b01c8090240201741ff01714101460d0020174108762102200341b0086a290300210420032903a808210b20032802b808210620032903a008210d0c3f0b200341a00c6a200c41067610bc0220032802a00c21070240024020032802a80c200c413f7122024b0d00410021050c010b200720024105746a22052f0000200541026a2d0000411074722102200529000f210b20052d001f21062005290007210d2005280003210c200541176a2900002104410121050b024020032802a40c450d00200710230b20050d3e410121050c3f0b2001413c6a280200212a200141386a2802002129200141346a280200212b200141306a280200212c20032802d405212d20034180056a41026a20232d00003a000020034180076a41086a201829030037030020034180076a41106a20192d00003a0000200320032f01900c3b018005200320032903c00537038007200320043703880b2003201a3a00870b2003201b3a00860b2003201c3b01840b2003201d3a00830b2003201e3a00820b2003201f3b01800b200320203a00ff0a2003200e3a00fe0a2003200f3b01fc0a200320123a00fb0a200320133a00fa0a200320143b01f80a200320153a00f70a20034102200a4108742009722008411874724102200541ff017141014622061b200741ff017122021b22053600f30a200320213a00f20a200320223b01f00a0240024020020d0020060d010b410f210641aab0c0002102024002400240024020050e050001020341000b20032800f70a210220032800fb0a21060c400b410e210641aabac60021020c3f0b411321064197b0c00021020c3e0b411121064186b0c00021020c3d0b200341a0086a41186a200341f00a6a41186a290300370300200341a0086a41106a200341f00a6a41106a290300370300200341a0086a41086a200341f00a6a41086a290300370300200320032903f00a3703a008418cfdc400ad4280808080d00084100322022d000f210520022d000e210720022f000c210820022d000b210a20022d000a210920022f0008210e20022d0007210f2002280003211220022d0002211320022f000021142002102341c7f3c300ad4280808080a00184100322022d000f211520022d000e211820022f000c211920022d000b211a20022d000a211b20022f0008211c20022d0007211d2002280003211e20022d0002211f20022f00002120200210232003202c3602c809200341a0056a41186a2221200341c8096aad4280808080c000841001220241186a290000370300200341a0056a41106a2222200241106a290000370300200341a0056a41086a2206200241086a290000370300200320022900003703a005200210232021290300210420222f0100212120062f0100212220032d00b705212320032800b305212e20032d00b205212f20032d00af05213020032d00ae05213120032f01ac05213220032d00ab05213320032d00aa05213420032d00a705213520032800a305213620032d00a205213720032f01a005213841c00010212202450d1e20022004370038200220233a00372002202e3600332002202f3a0032200220213b0030200220303a002f200220313a002e200220323b002c200220333a002b200220343a002a200220223b0028200220353a002720022036360023200220373a0022200220383b0020200220153a001f200220183a001e200220193b001c2002201a3a001b2002201b3a001a2002201c3b00182002201d3a00172002201e3600132002201f3a0012200220203b0010200220053a000f200220073a000e200220083b000c2002200a3a000b200220093a000a2002200e3b00082002200f3a000720022012360003200220133a0002200220143b0000200341a00c6a200241c00010aa032006200341a00c6a41246a2802003602002003200341bc0c6a2902003703a005024020032d00a40c22064103470d0020021023419caec4002102411e21060c3d0b20032d00a70c210f20032f00a50c2112200341a00c6a412c6a2802002107200341a00c6a41286a2802002109200341a00c6a41186a280200210a200341a00c6a41146a280200210e200341a00c6a41106a2802002113200341a00c6a410c6a2802002108200341a00c6a41086a280200210520032802a00c2118200341f00a6a41086a2214200341a0056a41086a280200360200200320032903a0053703f00a200341d00c6a280200211520021023200341e0066a41086a20142802002202360200200320032903f00a22043703e006200341c8096a41146a200a360200200341d8096a200e360200200341c8096a410c6a2013360200200341c8096a41086a22132008360200200341e0096a2004370300200341e8096a2002360200200341c8096a412c6a2015360200200341c8096a41286a2007360200200341c8096a41246a2009360200200320053602cc0920032012200f411074724108742006723602c809200641014b0d3920060e023b3a3b0b20032802c0052133418cfdc400ad4280808080d00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210e2002280003210f20022d0002211220022f000021132002102341c7f3c300ad4280808080a00184100322022d000f211420022d000e211520022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f20021023200320173602a008200341a0056a41186a2220200341a0086aad4280808080c000841001220241186a290000370300200341a0056a41106a2221200241106a290000370300200341a0056a41086a2222200241086a290000370300200320022900003703a005200210232020290300210420212f0100212020222f0100212120032d00b705212220032800b305212320032d00b205212920032d00af05212b20032d00ae05212c20032f01ac05212d20032d00ab05212a20032d00aa05212e20032d00a705212f20032800a305213020032d00a205213120032f01a005213241c00010212202450d1e20022004370038200220223a003720022023360033200220293a0032200220203b00302002202b3a002f2002202c3a002e2002202d3b002c2002202a3a002b2002202e3a002a200220213b00282002202f3a002720022030360023200220313a0022200220323b0020200220143a001f200220153a001e200220183b001c200220193a001b2002201a3a001a2002201b3b00182002201c3a00172002201d3600132002201e3a00122002201f3b0010200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b00082002200e3a00072002200f360003200220123a0002200220133b0000200341a00c6a200241c00010aa03200341a0056a41086a2206200341c40c6a2802003602002003200341bc0c6a2902003703a005024020032d00a40c22054103470d0020021023419caec4002102411e21060c380b20032d00a70c211220032f00a50c2113200341d00c6a2802002119200341cc0c6a2802002114200341c80c6a2802002115200341b80c6a280200210a200341b40c6a280200210e200341a00c6a41106a280200210f200341ac0c6a2802002108200341a00c6a41086a280200210920032802a00c2118200341f00a6a41086a22072006280200360200200320032903a0053703f00a20021023200341c8096a41086a20072802002202360200200320032903f00a22043703c80920034180076a41086a2002360200200320043703800741eeaec4002102411921060240200541014b0d0020050e023837380b02402008450d00200910230b200a450d37200e10230c370b200341a00c6a200141046a41c80010dc041a200341c8096a41206a200241206a290200370300200341c8096a41186a200241186a290200370300200341c8096a41106a200241106a290200370300200341c8096a41086a200241086a290200370300200320022902003703c809200341c0046a200341a00c6a200341c8096a10b702024020032802c00422020d00200041023a0008410021150c350b20032802c4042106200041812e3b010820002002360200410021152000410a6a41003a0000200020063602040c340b2002411a6a2901002104200241196a2d00002114200241186a2d00002115200241166a2f01002116200241156a2d00002117200241146a2d00002118200241126a2f01002119200241116a2d0000211a200241106a2d000021092002410e6a2f0100210c2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002112200241096a2d00002113200241086a2d00002106200241066a2f01002105200241056a2d00002107200241046a2d0000211b200241026a2f0100211c200141216a290000210b200141206a2d0000211e2001411d6a2f0000211f2001411c6a2d00002120200141196a2f00002121200141186a2d00002122200141156a2f00002123200141146a2d00002129200141116a2f0000212b200141106a2d0000212c2001410c6a280200211d200141086a280200210a20022d0001210820022d0000210220012d001f212d20012d001b212a20012d0017212e20012d0013212f024002400240024020012802040e0400010203000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602cc09200341849ec6003602c8092003200341c8096a3602b00c200341a00c6a418cfac1001038000b410220054108742006411874722007724102200841ff017141014622061b200241ff017122021b21050240024020020d0020060d010b410f210641aab0c0002102024002400240024020050e050001020335000b2012410874201372200f411874722102200c410874200e7220094118747221060c340b410e210641aabac60021020c330b411321064197b0c00021020c320b411121064186b0c00021020c310b200320043703b808200320143a00b708200320153a00b608200320163b01b408200320173a00b308200320183a00b208200320193b01b0082003201a3a00af08200320093a00ae082003200c3b01ac082003200e3a00ab082003200f3a00aa08200320123b01a808200320133a00a708200320053600a3082003201b3a00a2082003201c3b01a008200341a0056a41186a22074200370300200341a0056a41106a22064200370300200341a0056a41086a22054200370300200342003703a00541e3e0c400ad4280808080c00084100322022f0000210820022d000221092002280003210c20022d0007210e2002290008210420021023200520043703002003200e3a00a7052003200c3600a305200320093a00a205200320083b01a00541e8e7c100ad42808080803084100322022d000221082002280003210920022d0007210c2002290008210420022f0000210e200210232006200e3b010020034180056a41186a200437030020034180056a41086a20052903003703002003200c3a00b705200320093600b305200320083a00b20520034180056a41106a2006290300370300200320032903a00537038005200341a00c6a20034180056a4120108a0120032d00a00c21022007200341b90c6a2900003703002006200341b10c6a2900003703002005200341a90c6a290000370300200320032900a10c3703a0050240024020024101460d00200341c8096a41186a4200370300200341c8096a41106a4200370300200341c8096a41086a4200370300200342003703c8090c010b200341c8096a41186a2007290300370300200341c8096a41106a2006290300370300200341c8096a41086a2005290300370300200320032903a0053703c8090b0240200341a0086a200341c8096a412010de04450d00419cfac1002102412221060c310b200341a00c6a200a41b00110dc041a200341003b01c809200341f00a6a200341a00c6a200341c8096a108d0241012102024020032d00f80a22064102460d00200341f90a6a310000210b20033100fa0a210420033502f40a210d20032802f00a210541b8bac600ad4280808080d00184100802402006450d00200b100e0b2004100e410021022005450d00200d4220862005ad8410080b200320023a00a20c200341113b01a00c200341a00c6a108e01200a10230c330b410220054108742006411874722007724102200841ff017141014622061b200241ff017122021b21050240024020020d0020060d010b410f210641aab0c0002102024002400240024020050e050001020335000b2012410874201372200f411874722102200c410874200e7220094118747221060c340b410e210641aabac60021020c330b411321064197b0c00021020c320b411121064186b0c00021020c310b200320043703b808200320143a00b708200320153a00b608200320163b01b408200320173a00b308200320183a00b208200320193b01b0082003201a3a00af08200320093a00ae082003200c3b01ac082003200e3a00ab082003200f3a00aa08200320123b01a808200320133a00a708200320053600a3082003201b3a00a2082003201c3b01a008200341a0056a41186a22074200370300200341a0056a41106a22064200370300200341a0056a41086a22054200370300200342003703a00541e3e0c400ad4280808080c00084100322022f0000210820022d000221092002280003210c20022d0007210e2002290008210420021023200520043703002003200e3a00a7052003200c3600a305200320093a00a205200320083b01a00541e8e7c100ad42808080803084100322022d000221082002280003210920022d0007210c2002290008210420022f0000210e200210232006200e3b010020034180056a41186a200437030020034180056a41086a20052903003703002003200c3a00b705200320093600b305200320083a00b20520034180056a41106a2006290300370300200320032903a00537038005200341a00c6a20034180056a4120108a0120032d00a00c21022007200341b90c6a2900003703002006200341b10c6a2900003703002005200341a90c6a290000370300200320032900a10c3703a0050240024020024101460d00200341c8096a41186a4200370300200341c8096a41106a4200370300200341c8096a41086a4200370300200342003703c8090c010b200341c8096a41186a2007290300370300200341c8096a41106a2006290300370300200341c8096a41086a2005290300370300200320032903a0053703c8090b0240200341a0086a200341c8096a412010de04450d0041befac1002102413121060c320b0240200a41ff01714101460d00200a4118762107200a41087621080c2f0b200341a00c6a201d41067610bc0220032802a00c21060240024020032802a80c201d413f7122024b0d00410021020c010b200620024105746a2202290018210b20022d0017211e20022d0016212d20022f0014211f20022d0013212020022d0012212a20022f0010212120022d000f212220022d000e212e20022f000c212320022d000b212920022d000a212f20022f0008212b20022d0007212c2002280003211d20022d0002210720022f00002108410121020b024020032802a40c450d00200610230b20020d2e41aabac6002102410e21060c310b2001412c6a2802002130410220054108742006411874722007724102200841ff017141014622061b200241ff017122021b21050240024020020d0020060d010b410f210641aab0c0002102024002400240024020050e050001020331000b2012410874201372200f411874722102200c410874200e7220094118747221060c300b410e210641aabac60021020c2f0b411321064197b0c00021020c2e0b411121064186b0c00021020c2d0b200320043703b808200320143a00b708200320153a00b608200320163b01b408200320173a00b308200320183a00b208200320193b01b0082003201a3a00af08200320093a00ae082003200c3b01ac082003200e3a00ab082003200f3a00aa08200320123b01a808200320133a00a708200320053600a3082003201b3a00a2082003201c3b01a008200341a0056a41186a22074200370300200341a0056a41106a22064200370300200341a0056a41086a22054200370300200342003703a00541e3e0c400ad4280808080c00084100322022f0000210820022d000221092002280003210c20022d0007210e2002290008210420021023200520043703002003200e3a00a7052003200c3600a305200320093a00a205200320083b01a00541e8e7c100ad42808080803084100322022d000221082002280003210920022d0007210c2002290008210420022f0000210e200210232006200e3b010020034180056a41186a200437030020034180056a41086a20052903003703002003200c3a00b705200320093600b305200320083a00b20520034180056a41106a2006290300370300200320032903a00537038005200341a00c6a20034180056a4120108a0120032d00a00c21022007200341b90c6a2900003703002006200341b10c6a2900003703002005200341a90c6a290000370300200320032900a10c3703a0050240024020024101460d00200341c8096a41186a4200370300200341c8096a41106a4200370300200341c8096a41086a4200370300200342003703c8090c010b200341c8096a41186a2007290300370300200341c8096a41106a2006290300370300200341c8096a41086a2005290300370300200320032903a0053703c8090b0240200341a0086a200341c8096a412010de04450d00419cfac1002102412221060c2d0b410121060240200a41ff01714101460d00200a4118762105200a41087621020c2c0b200341a00c6a201d41067610bc0220032802a00c21070240024020032802a80c201d413f7122024b0d00410021080c010b200720024105746a2202290018210b20022d0017211e20022d0016212d20022f0014211f20022d0013212020022d0012212a20022f0010212120022d000f212220022d000e212e20022f000c212320022d000b212920022d000a212f20022f0008212b20022d0007212c2002280003211d20022d0002210520022f00002102410121080b024020032802a40c450d00200710230b20080d2b41aabac6002102410e21060c2c0b200341e0066a41086a22122001411c6a290200370300200341e0066a41106a2213200141246a2902003703002003200141146a2902003703e0062002411a6a2901002104200241196a2d00002114200241186a2d00002115200241166a2f01002116200241156a2d00002117200241146a2d00002118200241126a2f01002119200241116a2d0000211a200241106a2d0000211b2002410e6a2f0100211c2002410d6a2d0000211d2002410c6a2d0000211e2002410a6a2f01002108200241096a2d00002106200241086a2d0000211f200241066a2f0100210a200241056a2d00002109200241046a2d0000210c200241026a2f01002120200141106a28020021072001410c6a2802002105200141086a280200210f20022d0001210e20022d000021020240024002400240024020012802040e050001020304000b200341a00c6a41146a4101360200200342013702a40c200341d09dc6003602a00c200341043602a408200341849ec6003602a0082003200341a0086a3602b00c200341a00c6a41b8e0c4001038000b200320043702b80c200320143a00b70c200320153a00b60c200320163b01b40c200320173a00b30c200320183a00b20c200320193b01b00c2003201a3a00af0c2003201b3a00ae0c2003201c3b01ac0c2003201d3a00ab0c2003201e3a00aa0c200320083b01a80c200320063a00a70c2003200c3a00a20c200320203b01a00c2003200a410874200972201f411874724102200241ff017145200e41ff01714101467122021b22083600a30c024020020d00410f210641aab0c0002102024002400240024020080e05000102032d000b20032800a70c210220032800ab0c21060c2c0b410e210641aabac60021020c2b0b411321064197b0c00021020c2a0b411121064186b0c00021020c290b200341c8096a41186a200341a00c6a41186a290200370300200341c8096a41106a200341a00c6a41106a290200370300200341c8096a41086a200341a00c6a41086a290200370300200320032902a00c3703c8090240200741034f0d0041c8e0c4002102410e21060c290b0240200741104d0d0041d6e0c4002102410d21060c290b41e3e0c400ad4280808080c00084100322022d000f210620022d000e210820022f000c210a20022d000b210920022d000a210c20022f0008210e20022d000721122002280003211320022d0002211420022f000021152002102341e7e0c400ad4280808080e00084100322022d000f211620022d000e211720022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f20021023200341c0056a200341c8096a10ac0141c00010212202450d1f200220123a000720022013360003200220143a0002200220153b0000200220063a000f200220083a000e2002200a3b000c200220093a000b2002200c3a000a2002200e3b00082002201c3a00172002201d3600132002201e3a00122002201f3b0010200220163a001f200220173a001e200220183b001c200220193a001b2002201a3a001a2002201b3b0018200241386a200341c0056a41186a290200370000200241306a200341c0056a41106a290200370000200241286a200341c0056a41086a290200370000200220032902c005370020200341a00c6a200241c00010ac03024020032802a00c22060d0020021023420021044280c8afa025210b200341c8046a200341c8096a4280c8afa025420010f10120032802c8042202450d2120032802cc0421060c290b200341a00c6a41186a2903002104200341a00c6a41106a290300210b20032802a40c210820021023200341a00c6a41086a41003a0000200341a90c6a20032903c809370000200341b10c6a200341c8096a41086a290300370000200341b90c6a200341c8096a41106a290300370000200341c10c6a200341c8096a41186a290300370000200341123a00a00c200341a00c6a108e012008450d27200610230c270b200320043702d805200320143a00d705200320153a00d605200320163b01d405200320173a00d305200320183a00d205200320193b01d0052003201a3a00cf052003201b3a00ce052003201c3b01cc052003201d3a00cb052003201e3a00ca05200320083b01c805200320063a00c7052003200c3a00c205200320203b01c0052003200a410874200972201f411874724102200241ff017145200e41ff01714101467122021b22053600c305024020020d00410f210641aab0c0002102024002400240024020050e05000102032d000b20032800c705210220032800cb0521060c2c0b410e210641aabac60021020c2b0b411321064197b0c00021020c2a0b411121064186b0c00021020c290b200341c8096a41186a200341c0056a41186a290200370300200341c8096a41106a200341c0056a41106a290200370300200341c8096a41086a200341c0056a41086a290200370300200320032902c0053703c80941e3e0c400ad4280808080c00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341e7e0c400ad4280808080e00084100322022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d000721192002280003211a20022d0002211b20022f0000211c2002102320034180076a200341c8096a10ac0141c00010212202450d202002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b0008200220193a00172002201a3600132002201b3a00122002201c3b0010200220133a001f200220143a001e200220153b001c200220163a001b200220173a001a200220183b0018200241386a20034180076a41186a290100370000200241306a20034180076a41106a290100370000200241286a20034180076a41086a2901003700002002200329018007370020200341a00c6a200241c00010ac03024020032802a00c2206450d002002ad428080808080088410050b200341b80c6a2903002104200341b00c6a290300210b20032802a40c210520021023024020060d0041ede0c4002102410921060c2b0b02402005450d00200610230b200341c8096a200b200410de01200341d80c6a2004370300200341d00c6a200b370300200341a00c6a41086a41033a0000200341a90c6a20032903c809370000200341b10c6a200341c8096a41086a290300370000200341b90c6a200341d8096a290300370000200341c10c6a200341e0096a290300370000200341123a00a00c200341a00c6a108e010c290b200341f00a6a41106a2013290300370300200341f00a6a41086a2012290300370300200320032903e0063703f00a02400240200241ff01714101470d002008410874200641ff0171722108200c41ff01714101470d010c240b200a4108742009722108200e21060b200241ff01714104460d22200620027241ff0171450d2241b696c6002102410a21060c270b200141346a2802002116200141306a28020021142001412c6a2802002115200341f00a6a41106a2013290300370300200341f00a6a41086a2012290300370300200320032903e0063703f00a02400240200241ff01714101470d002008410874200641ff0171722108200c41ff01714101470d010c210b200a4108742009722108200e21060b200241ff01714104460d1f200620027241ff0171450d1f41b696c6002102410a21060c200b410841011030000b41b0dfc400102b000b41c8dfc400102b000b41c00041011030000b200341a0056a41186a22084200370300200341a0056a41106a22024200370300200341a0056a41086a22064200370300200342003703a00541d5fbc400ad42808080808001842225100322052f0000210720052d0002210a2005280003210920052d0007210c2005290008212620051023200620263703002003200c3a00a705200320093600a3052003200a3a00a205200320073b01a00541d6a0c200ad4280808080d001842226100322052d000221072005280003210a20052d000721092005290008212720052f0000210c200510232002200c3b010020034180056a41186a220c202737030020034180056a41086a220e2006290300370300200320093a00b7052003200a3600b305200320073a00b20520034180056a41106a220a2002290300370300200320032903a0053703800520034180016a20034180056a412010890220034180016a41106a290300212720032903880121282003280280012107200842003703002002420037030020064200370300200342003703a0052025100322052f0000210820052d000221092005280003210f20052d00072112200529000821252005102320062025370300200320123a00a7052003200f3600a305200320093a00a205200320083b01a0052026100322052d000221082005280003210920052d0007210f2005290008212520052f0000211220051023200220123b0100200c2025370300200e20062903003703002003200f3a00b705200320093600b305200320083a00b205200a2002290300370300200320032903a005370380052003427f2027420020071b2225200b200d7d2004202454ad7d7c2028420020071b220d200420247d7c2224200d542202ad7c220d2002200d202554200d2025511b22021b3703a8082003427f202420021b3703a008200341a0086a210220034180056a21060c670b200341a00c6a21060c5b0b200841041030000b41f499c3002102412721060c550b41809ac600102b000b41b09bc600102b000b41c00041011030000b41800141011030000b200541011030000b20032802a80c210920032802a40c210820032802a00c21070c4c0b200941011030000b41b8bbc000102b000b41a8e0c40020022012102d000b41c00041011030000b41c00041011030000b200c41041030000b200a41011030000b41c00041011030000b41f4e6c300102b000b41c00041011030000b200c42003703002005420037030020074200370300200342003703a005200b100322022f0000210a20022d0002210c2002280003210f20022d00072112200229000821042002102320072004370300200320123a00a7052003200f3600a3052003200c3a00a2052003200a3b01a005200d100322022d0002210a2002280003210c20022d0007210f2002290008210420022f0000211220021023200520123b010020092004370300200e20072903003703002003200f3a00b7052003200c3600b3052003200a3a00b20520082005290300370300200320032903a00537038005200341013a00a00c20034180056aad4280808080800484200341a00c6aad428080808010841002200041023a0008410121080c650b410841011030000b41c00041011030000b41c00041011030000b41c00041011030000b200341a00c6a41086a41023a0000200341a90c6a20032903c809370000200341b10c6a200341c8096a41086a290300370000200341b90c6a200341d8096a290300370000200341c10c6a200341e0096a290300370000200341123a00a00c200341a00c6a108e010c060b41c00041011030000b200341a0086a41106a200341f00a6a41106a290300370300200341a0086a41086a2202200341f00a6a41086a290300370300200320032903f00a3703a008024002400240200f41ff01714101460d0020034180076a410d6a200341a0086a410d6a29000037000020034180076a41086a2002290300370300200320032903a00837038007200f41087621080c010b200341c0056a200541067610bc0220032802c00521060240024020032802c8052005413f7122024b0d00410021020c010b20034188076a200620024105746a220241136a2900003703002003418d076a200241186a2900003700002003200229000b3703800720022f0000200241026a2d00004110747221082002280007210720022800032105410121020b024020032802c405450d00200610230b20020d00410121020c010b200341a0086a410d6a20034180076a410d6a290000370000200341a0086a41086a20034180076a41086a29030037030020032003290380073703a008410021020b200341b30c6a200341a0086a41086a290300370000200341a00c6a41186a2206200341ad086a290000370000200320073600a70c200320053600a30c200320032903a0083700ab0c200320083b01a00c200320084110763a00a20c02402002450d0041aabac6002102410e21060c010b200341c8096a41186a2006290200370300200341c8096a41106a200341a00c6a41106a290200370300200341c8096a41086a200341a00c6a41086a290200370300200320032902a00c3703c80941e3e0c400ad4280808080c00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341e7e0c400ad4280808080e00084100322022d000f211320022d000e211720022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f2002102320034180076a200341c8096a10ac010240024041c00010212202450d002002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b00082002201c3a00172002201d3600132002201e3a00122002201f3b0010200220133a001f200220173a001e200220183b001c200220193a001b2002201a3a001a2002201b3b0018200241386a20034180076a41186a290100370000200241306a20034180076a41106a290100370000200241286a20034188076a2901003700002002200329018007370020200341a00c6a200241c00010ac03200341a00c6a41186a22052903002104200341a00c6a41106a290300210b20032802a40c210720032802a00c2106200210230240024020060d004200210b420021040c010b2007450d00200610230b200520043703002003200b3703b00c200320163602a80c200320143602a40c200320153602a00c41e3e0c400ad4280808080c00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341e7e0c400ad4280808080e00084100322022d000f211320022d000e211620022f000c211720022d000b211820022d000a211920022f0008211a20022d0007211b2002280003211c20022d0002211d20022f0000211e20021023200341c0056a200341c8096a10ac0141c00010212202450d012002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b00082002201b3a00172002201c3600132002201d3a00122002201e3b0010200220133a001f200220163a001e200220173b001c200220183a001b200220193a001a2002201a3b0018200241386a200341c0056a41186a290200370000200241306a200341c0056a41106a290200370000200241286a200341c0056a41086a290200370000200220032902c005370020200341c0003602a408200320023602a008200341a00c6a200341a0086a10722002102302402014450d00201510230b200341a00c6a41086a41013a0000200341a90c6a20032903c809370000200341b10c6a200341c8096a41086a290300370000200341b90c6a200341c8096a41106a290300370000200341c10c6a200341c8096a41186a290300370000200341123a00a00c200341a00c6a108e010c040b41c00041011030000b41c00041011030000b2014450d05201510230c050b200341a0086a41106a200341f00a6a41106a290300370300200341a0086a41086a2202200341f00a6a41086a290300370300200320032903f00a3703a008024002400240200f41ff01714101460d0020034180076a410d6a200341a0086a410d6a29000037000020034180076a41086a2002290300370300200320032903a00837038007200f41087621080c010b200341a00c6a200541067610bc0220032802a00c21060240024020032802a80c2005413f7122024b0d00410021020c010b20034188076a200620024105746a220241136a2900003703002003418d076a200241186a2900003700002003200229000b3703800720022f0000200241026a2d00004110747221082002280007210720022800032105410121020b024020032802a40c450d00200610230b20020d00410121020c010b200341a00c6a410d6a20034180076a410d6a290000370000200341a00c6a41086a20034180076a41086a29030037030020032003290380073703a00c410021020b200341d3056a200341a00c6a41086a290300370000200341c0056a41186a2206200341ad0c6a290000370000200320073600c705200320053600c305200320032903a00c3700cb05200320083b01c005200320084110763a00c20502402002450d0041aabac6002102410e21060c050b200341c8096a41186a2006290200370300200341c8096a41106a200341c0056a41106a290200370300200341c8096a41086a200341c0056a41086a290200370300200320032902c0053703c80941e3e0c400ad4280808080c00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341e7e0c400ad4280808080e00084100322022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d000721192002280003211a20022d0002211b20022f0000211c2002102320034180076a200341c8096a10ac0141c00010212202450d012002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b0008200220193a00172002201a3600132002201b3a00122002201c3b0010200220133a001f200220143a001e200220153b001c200220163a001b200220173a001a200220183b0018200241386a20034180076a41186a290100370000200241306a20034180076a41106a290100370000200241286a20034188076a2901003700002002200329018007370020200341a00c6a200241c00010ac03024020032802a00c2206450d002002ad428080808080088410050b200341a00c6a41186a2903002104200341a00c6a41106a290300210b20032802a40c210520021023024020060d0041ede0c4002102410921060c050b02402005450d00200610230b200341d0046a200341c8096a200b200410c80220032903d004200341d0046a41086a29030010c902200341d80c6a2004370300200341d00c6a200b370300200341a00c6a41086a41043a0000200341a90c6a20032903c809370000200341b10c6a200341c8096a41086a290300370000200341b90c6a200341d8096a290300370000200341c10c6a200341e0096a290300370000200341123a00a00c200341a00c6a108e010b410021020c030b41c00041011030000b200341a00c6a41186a20043703002003200b3703b00c200320073602a80c200320053602a40c2003200f3602a00c41e3e0c400ad4280808080c00084100322022d000f210620022d000e210720022f000c210820022d000b210a20022d000a210920022f0008210c20022d0007210e2002280003211220022d0002211320022f000021142002102341e7e0c400ad4280808080e00084100322022d000f211520022d000e211620022f000c211720022d000b211820022d000a211920022f0008211a20022d0007211b2002280003211c20022d0002211d20022f0000211e2002102320034180076a200341c8096a10ac01024041c00010212202450d002002200e3a000720022012360003200220133a0002200220143b0000200220063a000f200220073a000e200220083b000c2002200a3a000b200220093a000a2002200c3b00082002201b3a00172002201c3600132002201d3a00122002201e3b0010200220153a001f200220163a001e200220173b001c200220183a001b200220193a001a2002201a3b0018200241386a20034180076a41186a290100370000200241306a20034190076a290100370000200241286a20034188076a2901003700002002200329018007370020200341c0003602a408200320023602a008200341a00c6a200341a0086a1072200210232005450d03200f10230c030b41c00041011030000b2005450d00200f10230b20020d010b200041023a0008410021180c010b20004181323b01082000200636020420002002360200410021182000410a6a41003a00000b410121064101210841012105410121074101210a410121094101210c4101210e4101210f4101211241012113410121174101211441012115410121160c610b2003200b3702f8042003201e3a00f7042003202d3a00f6042003201f3b01f404200320203a00f3042003202a3a00f204200320213b01f004200320223a00ef042003202e3a00ee04200320233b01ec04200320293a00eb042003202f3a00ea042003202b3b01e8042003202c3a00e7042003201d3600e304200320053a00e204200320023b01e004200341a00c6a203041b00110dc041a200341d2096a20032902e804370100200341da096a20032902f004370100200341e2096a20032902f80437010020034180023b01c809200320032902e0043701ca09200341f00a6a200341a00c6a200341c8096a108d02024020032d00f80a22024102460d00200341f90a6a310000210b20033100fa0a210420033502f40a210d20032802f00a210541b8bac600ad4280808080d00184100802402002450d00200b100e0b2004100e410021062005450d00200d4220862005ad8410080b200320063a00a20c20034191043b01a00c200341a00c6a108e01203010230c050b203010b102203010230c020b42002104200341a0056a41186a220a4200370300200341a0056a41106a22064200370300200341a0056a41086a22054200370300200342003703a00541e3e0c400ad4280808080c00084220d100322022f0000210920022d0002210c2002280003210e20022d0007210f2002290008211020021023200520103703002003200f3a00a7052003200e3600a3052003200c3a00a205200320093b01a00541e8e7c100ad428080808030842210100322022d000221092002280003210c20022d0007210e2002290008211120022f0000210f200210232006200f3b010020034180056a41186a201137030020034180056a41086a20052903003703002003200e3a00b7052003200c3600b305200320093a00b20520034180056a41106a2006290300370300200320032903a00537038005200341a00c6a20034180056a4120108a0120032d00a00c2102200a200341b90c6a22092900003703002006200341b10c6a220a2900003703002005200341a90c6a2206290000370300200320032900a10c3703a0050240024020024101460d0041002102410021054100210c4100210e4100210f41002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c0c010b20032903b805210420032d00b705210220032d00b605210520032f01b405210c20032d00b305210e20032d00b205210f20032f01b005211220032d00af05211320032d00ae05211420032f01ac05211520032d00ab05211620032d00aa05211720032f01a805211820032d00a705211920032800a305211a20032d00a205211b20032f01a005211c0b200341ba0c6a2004370100200920023a0000200341a00c6a41186a20053a0000200341b60c6a200c3b0100200341b50c6a200e3a0000200341b40c6a200f3a0000200341b20c6a20123b0100200a20133a0000200341a00c6a41106a20143a0000200341ae0c6a20153b0100200341ad0c6a20163a0000200341ac0c6a20173a0000200341aa0c6a20183b0100200620193a00002003201a3600a50c2003201b3a00a40c2003201c3b01a20c20034191023b01a00c200341a00c6a108e012003200b3703b80c2003201e3a00b70c2003202d3a00b60c2003201f3b01b40c200320203a00b30c2003202a3a00b20c200320213b01b00c200320223a00af0c2003202e3a00ae0c200320233b01ac0c200320293a00ab0c2003202f3a00aa0c2003202b3b01a80c2003202c3a00a70c2003201d3600a30c200320073a00a20c200320083b01a00c200d100322022f0000210520022d000221072002280003210820022d0007210a20022900082104200210232010100322022f0000210920022d0002210c2002280003210620022d0007210e2002290008210b200210232003200b3702f8042003200e3a00f704200320064118763a00f604200320064108763b01f404200320063a00f3042003200c3a00f204200320093b01f004200320043702e8042003200a3a00e704200320083600e304200320073a00e204200320053b01e004200341203602cc092003200341e0046a3602c809200341a00c6a200341c8096a10f5010c030b200a10b102200a10230b2002450d010b20004181303b01082000200636020420002002360200410021162000410a6a41003a00000c010b200041023a0008410021160b410121064101210841012105410121074101210a410121094101210c4101210e4101210f41012112410121134101211741012114410121150c580b410121064101210841012105410121074101210a410121094101210c4101210e4101210f41012112410121134101211741012114410121160c570b200341e7096a20034180076a41086a2d00003a00002003200a3600db092003200e3600d7092003200f3600d309200320083600cf09200320093600cb0920032003290380073700df092003201320124110747222023b01c809200320024110763a00ca09200341a0056a41186a22062033ad422086200cad841001220241186a290000370300200341a0056a41106a2205200241106a290000370300200341a0056a41086a2207200241086a290000370300200320022900003703a00520021023200341a00c6a41186a2006290300370300200341a00c6a41106a2005290300370300200341a00c6a41086a2007290300370300200320032903a0053703a00c02400240200341a00c6a200341c8096a412010de040d0020034180056a41186a420037030020034180056a41106a2206420037030020034180056a41086a22054200370300200342003703800541c4fbc400ad4280808080e00084100322022f0000210720022d000221082002280003210a20022d00072109200229000821042002102320052004370300200320093a0087052003200a36008305200320083a008205200320073b01800541f9bcc000ad4280808080e00084100322022d000221072002280003210820022d0007210a2002290008210420022f0000210920021023200620093b0100200341e0046a41186a2004370300200341e0046a41086a20052903003703002003200a3a0097052003200836009305200320073a009205200341e0046a41106a200629030037030020032003290380053703e004200341b8046a200341e0046a4120108f014100210220032802bc0441a08d066e410020032802b8041b20184f0d01200341bc0c6a2019360200200341b80c6a2014360200200341b40c6a2015360200200341b00c6a2033360200200341ac0c6a2016360200200341a80c6a200c360200200341023a00a40c200320183602a00c2017200341a00c6a10c9030c0a0b02402014450d00201510230b4187afc4002102412321060c010b418cfdc400ad4280808080d00084100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210e2002280003210f20022d0002211220022f000021132002102341c7f3c300ad4280808080a001841003220231000f2104200231000e210b200233000c210d200231000b2110200231000a21112002330008212420022d000721182002280003211a20022d0002211b20022f0000211c20021023200320173602a00c200341a0056a41186a221d200341a00c6aad4280808080c000841001220241186a290000370300200341a0056a41106a221e200241106a290000370300200341a0056a41086a221f200241086a290000370300200320022900003703a00520021023200341f00a6a41186a2220201d290300370300200341f00a6a41106a221d201e290300370300200341f00a6a41086a221e201f290300370300200320032903a0053703f00a024041c00010212202450d002002200e3a00072002200f360003200220123a0002200220133b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b0008200220183a00172002201a3600132002201b3a00122002201c3b001020022011421086202484201042188684200d42208684200b42308684200442388684370018200220032903f00a370020200241286a201e290300370000200241306a201d290300370000200241386a20202903003700002002ad4280808080800884100520021023200320333602a808200320163602a4082003200c3602a008200320193602a80c200320143602a40c200320153602a00c4100210220174100200341a0086a200341a00c6a10b2021a0c090b41c00041011030000b2016450d08200c10230c080b02402008450d00200510230b4112210641baaec4002102200a450d02200e10230c020b4112210641baaec40021022007450d01200910230c010b4122210641ccaec40021022013200341a0086a412010de040d002005202d470d00200341a00c6a41106a2016360200200341ac0c6a200c360200200341a00c6a41086a2017360200200341b40c6a200329038007370200200341d00c6a202a360200200341cc0c6a2029360200200341c80c6a202b360200200341bc0c6a20034180076a41086a290300370200200341c40c6a20034180076a41106a2d00003a0000200341013a00a40c200320183602a00c200320032f0180053b00a50c200320034182056a2d00003a00a70c202c200341a00c6a10c9030c030b2029450d04202b10230c040b410021050b200341870b6a20043700002003200b3700ff0a200320063a008f0b2003200d3700f70a2003200c3600f30a200320023b01f00a200320024110763a00f20a02402005450d0041aabac6002102410e21060c030b20034180076a41186a2202200341f00a6a41186a29030037030020034180076a41106a200341f00a6a41106a29030037030020034180076a41086a2206200341f00a6a41086a290300370300200320032903f00a37038007200341a00c6a200341c8096a10bb03024020032802a00c4101460d004186aec4002102411621060c030b20032802a40c2105200341a00c6a41186a2002290300370300200341a00c6a41106a20034180076a41106a290300370300200341a00c6a41086a200629030037030020032003290380073703a00c418cfdc400ad4280808080d00084100322022d000f210620022d000e210720022f000c210820022d000b210a20022d000a210920022f0008210c20022d0007210e2002280003210f20022d0002211220022f00002113200210234184ffc300ad4280808080b00184100322022d000f211420022d000e211520022f000c211620022d000b211720022d000a211820022f0008211920022d0007211a2002280003211b20022d0002211c20022f0000211d20021023200320053602f00a200341a0056a41186a2205200341f00a6aad4280808080c000841001220241186a290000370300200341a0056a41106a221e200241106a290000370300200341a0056a41086a221f200241086a290000370300200320022900003703a0052002102320052903002104201e2f01002105201f2f0100211e20032d00b705211f20032800b305212020032d00b205212120032d00af05212220032d00ae05212320032f01ac05212920032d00ab05212b20032d00aa05212c20032d00a705212d20032800a305212a20032d00a205212e20032f01a005212f41c00010212202450d04200220043700382002201f3a003720022020360033200220213a0032200220053b0030200220223a002f200220233a002e200220293b002c2002202b3a002b2002202c3a002a2002201e3b00282002202d3a00272002202a3600232002202e3a00222002202f3b0020200220143a001f200220153a001e200220163b001c200220173a001b200220183a001a200220193b00182002201a3a00172002201b3600132002201c3a00122002201d3b0010200220063a000f200220073a000e200220083b000c2002200a3a000b200220093a000a2002200c3b00082002200e3a00072002200f360003200220123a0002200220133b0000200341c0003602f40a200320023602f00a200341a00c6a200341f00a6a10f501200210230b410021020b0b20020d020b200041023a0008410021140c020b41c00041011030000b200041812c3b01082000200636020420002002360200410021142000410a6a41003a00000b410121064101210841012105410121074101210a410121094101210c4101210e4101210f4101211241012113410121170c470b410121064101210841012105410121074101210a410121094101210c4101210e4101210f41012112410121130c450b20032802940c450d00200510230b024020020d00200041023a00080c300b20004181263b010820002006360204200020023602002000410a6a41003a00000c2f0b200341d8026a2004200b42c0843d420010e204200341c8026a20032903d802220d200341d8026a41086a290300221042c0fb42427f10e104200341b8026a200d201042d08603420010e104200341e8026a200341c8096a20032903b8022210200420032903c8027c220d42d086037e200d421480220d42c0fb427e7c42a0c21e56200da76aad7c220d4280a094a58d1d200d4280a094a58d1d56200341b8026a41086a290300200d201054ad7c220d420052200d501b22021b2210200d420020021b220d10f101024020032802e802450d004188c1c3002102411a21080c010b200341e0046a41186a220a4200370300200341e0046a41106a22064200370300200341e0046a41086a22054200370300200342003703e00441f4fcc400ad42808080808001842226100322022f0000210920022d0002210c2002280003210e20022d00072112200229000821272002102320052027370300200320123a00e7042003200e3600e3042003200c3a00e204200320093b01e00441888ac400ad4280808080d001842227100322022d000221092002280003210c20022d0007210e2002290008212820022f0000211220021023200620123b010020034180056a41186a2212202837030020034180056a41086a221320052903003703002003200e3a00f7042003200c3600f304200320093a00f20420034180056a41106a22092006290300370300200320032903e00437038005200341b0026a20034180056a4120108f0120032802b402210c20032802b002210e200a42003703002006420037030020054200370300200342003703e0042026100322022f0000211420022d000221152002280003211620022d00072117200229000821282002102320052028370300200320173a00e704200320163600e304200320153a00e204200320143b01e0042027100322022d000221142002280003211520022d000721162002290008212720022f0000211720021023200620173b01002012202737030020132005290300370300200320163a00f704200320153600f304200320143a00f20420092006290300370300200320032903e004370380052003200c4100200e1b220941016a3602a00c20034180056aad4280808080800484200341a00c6aad4280808080c000841002200341f70c6a2011370000200341ef0c6a2024370000200341a00c6a41186a200d370300200341a00c6a41386a200341c8096a41186a290300370300200341a00c6a41306a200341c8096a41106a290300370300200341a00c6a41286a200341c8096a41086a290300370300200341ff0c6a20083a0000200341e70c6a2025370000200341e30c6a200f360000200320073b01e00c200341e20c6a20074110763a00002003200b3703a80c200320043703a00c200320103703b00c200320032903c8093703c00c20261003220231000f2104200231000e210b200233000c210d200231000b2110200231000a21112002330008212420022d000721072002280003210820022d0002210c20022f0000210e2002102341f980c400ad4280808080900184100322022d000f210f20022d000e211220022f000c211320022d000b211420022d000a211520022f0008211620022d000721172002280003211820022d0002211920022f0000211a20021023200320093602f00a200341a0056a41186a221b200341f00a6aad4280808080c000841001220241186a290000370300200341a0056a41106a221c200241106a290000370300200341a0056a41086a221d200241086a290000370300200320022900003703a00520021023200a201b2903003703002006201c2903003703002005201d290300370300200320032903a0053703e00441c00010212202450d03200220073a0007200220083600032002200c3a00022002200e3b000020022011421086202484201042188684200d42208684200b42308684200442388684370008200220173a001720022018360013200220193a00122002201a3b00102002200f3a001f200220123a001e200220133b001c200220143a001b200220153a001a200220163b0018200220032903e004370020200241286a200341e0046a41086a290300370000200241306a2006290300370000200241386a200a290300370000200341003602f80a200342013703f00a200341a00c6a41206a200341f00a6a1071200341a00c6a41086a290300210420032903a00c210b0240024020032802f40a220520032802f80a22066b4110490d0020032802f00a21050c010b200641106a22072006490d1d200541017422062007200620074b1b22064100480d1d0240024020050d002006102121050c010b20032802f00a20052006102521050b2005450d05200320063602f40a200320053602f00a20032802f80a21060b200520066a220520043700082005200b3700002003200641106a3602f80a200341a00c6a41c0006a200341f00a6a1071200341b80c6a290300210420032903b00c210b0240024020032802f40a220720032802f80a22056b4110490d0020032802f00a21060c010b200541106a22062005490d1d200741017422052006200520064b1b22084100480d1d0240024020070d002008102121060c010b20032802f00a20072008102521060b2006450d06200320083602f40a200320063602f00a20032802f80a2105200821070b200620056a220820043700082008200b3700002002ad4280808080800884200541106aad4220862006ad84100202402007450d00200610230b20021023200341ac0c6a200936020041002102200341a80c6a41003a00002003410d3a00a00c200341a00c6a108e010b2002450d010b20004181243b010820002008360204200020023602002000410a6a41003a00000c2c0b200041023a00080c2b0b41c00041011030000b200641011030000b200841011030000b2004a7450d04200a10230c040b0c030b200341a00c6a41186a200341a0086a41186a290300370300200341a00c6a41106a200341a0086a41106a290300370300200341a00c6a41086a200341a0086a41086a290300370300200320032903a0083703a00c4100210c200341a00c6a2106410021050b02400240200c2012460d00200f21070c010b0240200f200c460d00200f21070c010b200f41016a2202200f490d13200f41017422072002200720024b1b220741ffffff3f712007470d13200741057422024100480d1302400240200f0d0020021021210a0c010b200a200f41057420021025210a0b200a450d042003200a360280070b200a20054105746a220241206a2002200c20056b41057410dd041a200241186a200641186a290000370000200241106a200641106a290000370000200241086a200641086a290000370000200220062900003700002003200c41016a3602e006200341c0056a41186a4200370300200341c0056a41106a22064200370300200341c0056a41086a22054200370300200342003703c00541f0dfc400ad4280808080b00284100322022f0000210a20022d0002210c2002280003210f20022d00072112200229000821042002102320052004370300200320123a00c7052003200f3600c3052003200c3a00c2052003200a3b01c0054183e0c400ad4280808080f00084100322022d0002210a2002280003210c20022d0007210f2002290008210420022f0000211220021023200620123b0100200341a00c6a41186a2004370300200341a00c6a41086a20052903003703002003200f3a00d7052003200c3600d3052003200a3a00d205200341a00c6a41106a2006290300370300200320032903c0053703a00c200328028007210220032802e0062105200341003602f80a200342013703f00a2005200341f00a6a105c02402005450d002005410574210603402002200341f00a6a1071200241206a2102200641606a22060d000b0b20032802f40a2102200341a00c6aad428080808080048420033502f80a42208620032802f00a2206ad84100202402002450d00200610230b200341a00c6a41186a200341a0086a41186a290300370300200341a00c6a41106a200341a0086a41106a290300370300200341a00c6a41086a200341a0086a41086a290300370300200320032903a0083703a00c4100210c410141002003280280072202200510cd032003410c3b01a00c200341a00c6a108e012007450d00200210230b4110210f0b024002400240200e417f6a220241034b0d00024020020e0403030300030b20090d010c020b200e4104490d012009450d010b200810230b200c0d020b200041023a0008410021130c020b200241011030000b20004181223b01082000200f3602042000200c360200410021132000410a6a41003a00000b410121064101210841012105410121074101210a410121094101210c4101210e4101210f410121120c310b410121064101210841012105410121074101210a410121094101210c4101210e4101210f0c2f0b410121064101210841012105410121074101210a410121094101210c4101210e0c2d0b410121064101210841012105410121074101210a410121094101210c0c2b0b410121064101210841012105410121074101210a410121090c290b4194fcc400ad4280808080800184100322022d000f210620022d000e211720022f000c211820022d000b211920022d000a211a20022f0008211b20022d0007211c2002280003211d20022d0002211e20022f0000211f2002102341d8e9c000ad4280808080a002841003220231000f210b200231000e210d200233000c2110200231000b2111200231000a21242002330008212520022d000721202002280003212120022d0002212220022f0000212320021023200320293602a00c200341a0056a41186a220520264280808080c0008422261001220241186a290000370300200341a0056a41106a220a200241106a290000370300200341a0056a41086a220c200241086a290000370300200320022900003703a0052002102320034180056a41186a2229200529030037030020034180056a41106a222b200a29030037030020034180056a41086a222c200c290300370300200320032903a005370380050240024041c00010212202450d002002201c3a00072002201d3600032002201e3a00022002201f3b0000200220063a000f200220173a000e200220183b000c200220193a000b2002201a3a000a2002201b3b0008200220203a001720022021360013200220223a0012200220233b001020022024421086202584201142188684201042208684200d42308684200b423886843700182002200329038005370020200241286a202c290300370000200241306a202b290300370000200241386a2029290300370000200320153602a00c200520261001220641186a290000370300200a200641106a290000370300200c200641086a290000370300200320062900003703a0052006102320034180076a41186a200529030037030020034180076a41106a200a29030037030020034180076a41086a200c290300370300200320032903a00537038007200241c00041800110252202450d012002200329038007370040200241d8006a20034198076a290300370000200241d0006a20034190076a290300370000200241c8006a20034188076a290300370000200341e0003602a40c200320023602a00c20072009200341a00c6a10c5012002102302402008450d00200710230b02402004a7450d00201610230b02402013450d00201410230b0240200e450d00200e410c6c2106200f210203400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b02402012450d00200f10230b200041023a0008410021090c030b41c00041011030000b41800141011030000b02402013450d00201410230b0240200e450d00200e410c6c2106200f210203400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b02402012450d00200f10230b20004181163b01082000200536020420002007360200410021092000410a6a41003a00000b410121064101210841012105410121074101210a0c250b02402013450d00201410230b2002450d0020004181103b01082000200636020420002002360200410021072000410a6a41003a00000c010b200041023a0008410021070b4101210641012108410121050c200b41012106410121080c1e0b2005200241c4006c6a2202200c4100200e1b360204200241003a000020022006290200370208200241106a200641086a290200370200200241186a200641106a290200370200200241206a200641186a290200370200200241286a200641206a290200370200200241306a200641286a290200370200200241386a200641306a290200370200200241c0006a200641386a280200360200200b422086200442ffffffff0f83844280808080107c21042009200741f0006c6a210a024020070d00200921070c030b200341a00c6a41106a211f200341a00c6a41086a211e20092107024003402007280204210220072802002106200341a00c6a200741086a41e80010dc041a200741f0006a21072002450d04200341c8096a200341a00c6a41e80010dc041a200320023602a40c200320063602a00c201e200341c8096a41e80010dc041a20032802900c2105200341a0056a41186a22154200370300200341a0056a41106a22064200370300200341a0056a41086a220c4200370300200342003703a00541c4fbc400ad4280808080e00084100322022f0000210820022d0002210e2002280003210f20022d000721122002290008210b20021023200c200b370300200320123a00a7052003200f3600a3052003200e3a00a205200320083b01a00541f9bcc000ad4280808080e00084100322022d000221082002280003210e20022d0007210f2002290008210b20022f0000211220021023200620123b010020034180056a41186a2212200b37030020034180056a41086a2213200c2903003703002003200f3a00b7052003200e3600b305200320083a00b20520034180056a41106a2006290300370300200320032903a00537038005200341d8016a20034180056a4120108f0120032802d801210620032802dc012108200341f00a6a200341a00c6a10ae0102400240024020032802a00c22020d0041bcaac500210e4110210f0c010b024020022008410020061b22064d0d00411a210f41ccaac500210e0c010b200341a0086a2002417f6a1089010240200341a0086a201f412010de04450d004119210f41e6aac500210e0c010b024020032802a00c220e20064f0d004126210f41ffaac500210e0c010b02400240200520052004422088220ba7220841c4006c22066a460d00200541016a2102034002402002417f6a2d00004101470d0041012105200341f00a6a2002460d032002200341f00a6a412010de04450d030b200241c4006a2102200641bc7f6a22060d000b0b410021050b200341a0086a200e108901200341a0086a200341f00a6a412010de042102200341c0056a41086a220620034180076a41086a290200370300200341c0056a41106a20034180076a41106a29020037030020032003290280073703c00541a6aac500210e4116210f20050d0520020d010c050b200341c0056a41086a20034180076a41086a290200370300200341c0056a41106a20034180076a41106a29020037030020032003290280073703c0050c040b200341e0066a410e6a2205200341c0056a410e6a290100370100200341e0066a41086a220e2006290300370300200320032903c0053703e00620034180076a200341a00c6a10ae01200341f00a6a41186a22064200370300200341f00a6a41106a220f4200370300200341f00a6a41086a22164200370300200342003703f00a2012420037030020034180056a41106a22174200370300201342003703002003420037038005024041c80010212202450d00200341a0056a10d502200241186a2015290300370200200241106a200341a0056a41106a290300370200200241086a200c290300370200200220032903a005370200200241023602202002410136024420022003290380053701242002412c6a2013290300370100200241346a20172903003701002002413c6a2012290300370100200320023602a00820034282808080203702a408200341a0086a10d602200341a0086a41186a2006290300370300200341a0086a41106a200f290300370300200341a0086a41086a22062016290300370300200320032903f00a3703a008200341a0086a10c8012006200e290300370300200341a0086a410e6a220c2005290100370100200320032903e0063703a008200329039807210d20032d0097072105200328009307210e20032d009207210f20032f019007211220032d008f07211320032d008e07211520032f018c07211620032d008b07211720032d008a07211820032f018807211920032d008707211a200328008307211b20032d008207211c20032f018007211d0240024020082004a7460d00200421100c010b200841016a22022008490d04200ba74101742220200220022020491bad221042c4007e220b422088a70d04200ba722204100480d040240024020080d002020102121020c010b20032802900c200841c4006c2020102521020b2002450d03200320023602900c2004422088220ba721080b20032802900c200841c4006c6a22024116360028200241a6aac500360024200241003a00212002200d370019200220053a00182002200e3600142002200f3a0013200220123b0011200220133a0010200220153a000f200220163b000d200220173a000c200220183a000b200220193b00092002201a3a00082002201b3600042002201c3a00032002201d3b0001200241013a00002002413a6a200c290100370000200241346a2006290300370000200220032903a00837002c201042ffffffff0f832104200b422086210b024020032802ac0c2206450d0020032802a40c2102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b200b2004842104024020032802a80c450d0020032802a40c10230b20044280808080107c21042007200a470d010c060b0b41c80041041030000b202041041030000b102a000b024020032802ac0c2206450d0020032802a40c2102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b024020032802a80c450d0020032802a40c10230b02402007200a460d00034020072802042208450d01200741086a280200210c02402007410c6a2802002202450d00200241246c21062008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b200741f0006a21070240200c450d00200810230b2007200a470d000b0b02402014450d00200910230b2004a7450d0320032802900c10230c030b2007200a460d00034020072802042208450d01200741086a280200210c02402007410c6a2802002202450d00200241246c21062008210203400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b200741f0006a21070240200c450d00200810230b2007200a470d000b0b02402014450d00200910230b200341e0046a41186a4200370300200341e0046a41106a22064200370300200341e0046a41086a22054200370300200342003703e00441a6a3c500ad4280808080a00184100322022f0000210720022d000221082002280003210a20022d000721092002290008210b200210232005200b370300200320093a00e7042003200a3600e304200320083a00e204200320073b01e00441fca4c500ad4280808080e00084100322022d000221072002280003210820022d0007210a2002290008210b20022f0000210920021023200620093b010020034180076a41186a200b37030020034180076a41086a20052903003703002003200a3a00f704200320083600f304200320073a00f20420034180076a41106a2006290300370300200320032903e00437038007200341a00c6a20032802900c22022004422088a710d402201120033502a80c42208620032802a00c2206ad841002024020032802a40c450d00200610230b02402004a7450d00200210230b200041023a000841002108410121060c180b02402007450d002009200741f0006c6a210820092107034002402007410c6a2802002206450d0020072802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b200741f0006a21020240200741086a280200450d00200728020410230b2002210720022008470d000b0b2014450d00200910230b200041810a3b01082000200f3602042000200e360200410021082000410a6a41003a0000410121060c160b410021070b200341f7046a200d370000200320103700ef04200320063a00ff04200320113700e704200320053600e304200320023b01e004200320024110763a00e20420070d06200341a00c6a41186a200341e0046a41186a290300370300200341a00c6a41106a200341e0046a41106a290300370300200341a00c6a41086a200341e0046a41086a290300370300200320032903e0043703a00c200341d0016a200341c8096a200341a00c6a2004200b4100108103024020032802d0012202450d0020032802d40121060c0a0b410021020c090b410021070b20034197076a20263700002003202737008f07200320063a009f0720032028370087072003200536008307200320023b018007200320024110763a00820720070d042004422088a72105200341c8096a41186a20034180076a41186a290300370300200341c8096a41106a20034180076a41106a290300370300200341c8096a41086a20034180076a41086a29030037030020032003290380073703c8090240024002402004a741ff01714101460d002004420888a721022025a721060c010b20034180076a2004422688a710bc022003280280072108024002402003280288072005413f7122054b0d00410021072028210b20272111202621100c010b200820054105746a22072f0000200741026a2d0000411074722102200729000f211120072d001f21062007290007210b20072800032105200741176a2900002110410121070b0240200328028407450d00200810230b20070d00410121070c010b410021070b200341f7046a2010370000200320113700ef04200320063a00ff042003200b3700e704200320053600e304200320023b01e004200320024110763a00e20420070d04200341a00c6a41186a200341e0046a41186a290300370300200341a00c6a41106a200341e0046a41106a290300370300200341a00c6a41086a200341e0046a41086a290300370300200320032903e0043703a00c200341c8016a200341c8096a200341a00c6a2024200d410110810320032802c8012202450d0620032802cc0121060c070b2006ad42808080808004842002ad428080808080028410020b200341a00c6a2004200b10dc0241d5fbc400ad4280808080800184100322022d000f210620022d000e210520022f000c210720022d000b210820022d000a210a20022f0008210920022d0007210c2002280003210e20022d0002210f20022f000021122002102341eea0c200ad4280808080f00184100322022d000f211320022d000e211420022f000c211520022d000b211620022d000a211720022f0008211820022d000721192002280003211a20022d0002211b20022f0000211c20021023200341e0046a200341a00c6a10ac01024002400240024041c00010212202450d002002200c3a00072002200e3600032002200f3a0002200220123b0000200220063a000f200220053a000e200220073b000c200220083a000b2002200a3a000a200220093b0008200220193a00172002201a3600132002201b3a00122002201c3b0010200220133a001f200220143a001e200220153b001c200220163a001b200220173a001a200220183b0018200241386a200341e0046a41186a290300370000200241306a200341e0046a41106a290300370000200241286a200341e0046a41086a290300370000200220032903e004370020200341e8006a200241c000108902200341e8006a41106a29030021042003290370210b2003280268210620021023200b420020061b220b20115422072004420020061b2204201054200420105122021b0d01200b201156200420105620021b450d03200341a0056a41186a220a4200370300200341a0056a41106a22024200370300200341a0056a41086a22064200370300200342003703a00541d5fbc400ad4280808080800184220d100322052f0000210820052d000221092005280003210c20052d0007210e2005290008212420051023200620243703002003200e3a00a7052003200c3600a305200320093a00a205200320083b01a00541d6a0c200ad4280808080d001842224100322052d000221082005280003210920052d0007210c2005290008212520052f0000210e200510232002200e3b010020034180056a41186a220e202537030020034180056a41086a220f20062903003703002003200c3a00b705200320093600b305200320083a00b20520034180056a41106a22092002290300370300200320032903a00537038005200341d0006a20034180056a4120108902200341d0006a41106a29030021252003290358212620032802502108200a42003703002002420037030020064200370300200342003703a005200d100322052f0000210a20052d0002210c2005280003211220052d000721132005290008210d200510232006200d370300200320133a00a705200320123600a3052003200c3a00a2052003200a3b01a0052024100322052d0002210a2005280003210c20052d000721122005290008210d20052f0000211320051023200220133b0100200e200d370300200f2006290300370300200320123a00b7052003200c3600b3052003200a3a00b20520092002290300370300200320032903a00537038005200342002025420020081b220d2007ad201020047d7c7c2026420020081b2204200b20117d222454ad7d220b200420247d2224200456200b200d56200b200d511b22021b3703a80820034200202420021b3703a008200341a0086a210220034180056a21060c020b41c00041011030000b200341a0056a41186a22084200370300200341a0056a41106a22024200370300200341a0056a41086a22064200370300200342003703a00541d5fbc400ad4280808080800184220d100322052f0000210720052d0002210a2005280003210920052d0007210c2005290008212420051023200620243703002003200c3a00a705200320093600a3052003200a3a00a205200320073b01a00541d6a0c200ad4280808080d001842224100322052d000221072005280003210a20052d000721092005290008212520052f0000210c200510232002200c3b010020034180056a41186a220c202537030020034180056a41086a220e2006290300370300200320093a00b7052003200a3600b305200320073a00b20520034180056a41106a220a2002290300370300200320032903a00537038005200341386a20034180056a4120108902200341386a41106a29030021252003290340212620032802382107200842003703002002420037030020064200370300200342003703a005200d100322052f0000210820052d000221092005280003210f20052d000721122005290008210d200510232006200d370300200320123a00a7052003200f3600a305200320093a00a205200320083b01a0052024100322052d000221082005280003210920052d0007210f2005290008210d20052f0000211220051023200220123b0100200c200d370300200e20062903003703002003200f3a00b705200320093600b305200320083a00b205200a2002290300370300200320032903a005370380052003427f2025420020071b220d201020047d2011200b54ad7d7c2026420020071b22042011200b7d7c220b2004542202ad7c220420022004200d542004200d511b22021b3703a8082003427f200b20021b3703a008200341a0086a210220034180056a21060b2006ad42808080808004842002ad428080808080028410020b200341a00c6a2011201010ca020c040b410021070b200341f7046a200d370000200320103700ef04200320063a00ff04200320113700e704200320053600e304200320023b01e004200320024110763a00e2042007450d010b41aabac6002102410e21060c020b200341a00c6a41186a200341e0046a41186a290300370300200341a00c6a41106a200341e0046a41106a290300370300200341a00c6a41086a200341e0046a41086a290300370300200320032903e0043703a00c200341306a200341c8096a200341a00c6a2004200b410110810320032802302202450d00200328023421060c010b410021020b024020020d00200041023a00080c010b20004181083b010820002006360204200020023602002000410a6a41003a00000b41012106410121080c090b200510230b0240024002402007417f6a220241064b0d000240024002400240024020020e0707000701020304070b41000d062004a70d050c060b41000d052004a70d040c050b200a450d0402402004422088a72202450d00200241186c21062005210203400240200241046a280200450d00200228020010230b0240200241106a280200450d002002410c6a28020010230b200241186a2102200641686a22060d000b0b2004a70d030c040b2006450d0302402004422088a72202450d002002410c6c21062005210203400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b2004a70d020c030b41000d022004a70d010c020b2004a7450d010b200510230b410f210241aab0c00021064104210520080e06010204030500010b200041023a0008410121080c050b410021050c030b410e210241aabac6002106410121050c020b411121024186b0c0002106410321050c010b411321024197b0c0002106410221050b41012108200041013b010820002002360204200020063602002000410a6a20053a00000b410021060b410121050b410121070b4101210a0b410121090b4101210c0b4101210e0b4101210f0b410121120b410121130b410121170b410121140b41012115410121160b410121180b024002402001280200220241184b0d0002400240024002400240024002400240024002400240024002400240024020020e1900101010100102100310040510060708090a10100b100c0d0e000b2006450d0f200141086a10dd030c0f0b2008450d0e02402001410c6a2802002202450d0020012802042200200241f0006c6a2107034002402000410c6a2802002206450d0020002802042102200641246c210603400240024020022d0000220541034b0d0002400240024020050e0404000102040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022006415c6a22060d000b0b200041f0006a21020240200041086a280200450d00200028020410230b2002210020022007470d000b0b200141086a280200450d0e200128020410230c0e0b2005450d0d0240200141086a2d00002202410f4b0d00410120027441bfbf03710d0e024020024106470d00200141106a280200450d0f2001410c6a28020010230c0f0b200141106a280200450d0e2001410c6a28020010230c0e0b200141146a280200450d0d200141106a28020010230c0d0b2007450d0c200141086a280200450d0c200128020410230c0c0b200a450d0b200141086a280200450d0b200128020410230c0b0b2009450d0a02402001410c6a280200450d00200141086a28020010230b02402001411c6a2802002206450d00200141146a28020021022006410c6c210603400240200241046a280200450d00200228020010230b2002410c6a2102200641746a22060d000b0b200141186a280200450d0a200128021410230c0a0b200c450d09200141086a2d0000417f6a220241074b0d09024002400240024020020e08000d0d0d0d010203000b2001410c6a220228020010da01200228020010230c0c0b2001410c6a220228020010da01200228020010230c0b0b2001410c6a220228020010da01200228020010230c0a0b2001410c6a220228020010da01200228020010230c090b200e450d0820012d0004417f6a220241024b0d0802400240024020020e03000102000b2001410c6a280200450d0a200141086a28020010230c0a0b200141086a220228020010da01200228020010230c090b2001410c6a220228020010da01200228020010230c080b200f450d0720012d0004417f6a220241024b0d0702400240024020020e03000102000b2001410c6a280200450d09200141086a28020010230c090b200141086a220228020010da01200228020010230c080b2001410c6a220228020010da01200228020010230c070b2012450d06200141086a2802004101470d06200141106a280200450d062001410c6a28020010230c060b2013450d0520012d00044104490d052001410c6a280200450d05200141086a28020010230c050b2017450d0402402001410c6a2802002206450d0020012802042102200641d0016c210603402002106c200241d0016a2102200641b07e6a22060d000b0b200141086a280200450d04200128020410230c040b2014450d03200141086a2d000022024105490d03024020024105470d00200141386a280200450d04200141346a28020010230c040b200141146a280200450d03200141106a28020010230c030b2015450d0220012d0004417f6a220241034b0d020240024020020e0400040401000b0240200141106a280200450d002001410c6a28020010230b2001411c6a280200450d03200141186a28020010230c030b02402001410c6a280200450d00200141086a28020010230b200141186a280200450d02200141146a28020010230c020b2016450d0102402001280204220241024b0d00024020020e03030003030b200141086a220228020010da01200228020010230c020b2001412c6a220228020010da01200228020010230c010b2018450d0002402001280204220241034b0d00024020020e0402000202020b2001410c6a280200450d01200141086a28020010230c010b200141306a280200450d002001412c6a28020010230b200341d00d6a24000b13002000410136020420004190d9c1003602000b02000ba44b10057f017e017f017e077f017e017f017e057f017e037f017e027f027e057f027e230041f00b6b2201240020014188066a41186a420037030020014188066a41106a2202420037030020014188066a41086a220342003703002001420037038806200141c8016a41086a22044182fdc400ad4280808080a001841003220541086a290000370300200120052900003703c8012005102320032004290300370300200120012903c80137038806200441b39fc600ad42808080809001841003220541086a290000370300200120052900003703c80120051023200220012903c8012206370300200141d8016a41086a2003290300370300200141d8016a41106a2006370300200141d8016a41186a2004290300370300200120063703f80a20012001290388063703d801200141900b6a200141d8016a4120108b020240024002400240024002400240024020012802900b2207450d000240024020012902940b2208422088a722050d00410021092007210a0c010b200741046a210a2007280200210b410121090b20014188066a41186a220c420037030020014188066a41106a220d420037030020014188066a41086a220e42003703002001420037038806200141c8016a41086a220f4191fdc400ad428080808090018422101003220441086a290000370300200120042900003703c80120041023200e200f290300370300200120012903c80137038806200f4184ddc100ad4280808080e000841003220441086a290000370300200120042900003703c80120041023200141f80a6a41086a2211200f2903002206370300200120012903c80122123703f80a20022012370000200241086a22132006370000200141d8016a41086a2214200e290300370300200141d8016a41106a2215200d290300370300200141d8016a41186a2216200c29030037030020012001290388063703d80120014188066a200141d8016a10fe012001280288062204410420041b221721030240200129028c06420020041b2218422088a72219450d00200720054102746a211a20172019412c6c6a211b200141d8016aad4280808080800484211c201721030340200e20032204410c6a290200370300200d200441146a290200370300200c2004411c6a29020037030020012004290204370388062004412c6a2103200441246a28020022054103460d01200441286a280200211d2004280200211e200141a8016a41186a200c2903002206370300200141a8016a41106a200d2903002212370300200141a8016a41086a200e290300221f370300200120012903880622203703a801200141c80a6a41186a22042006370300200141c80a6a41106a22212012370300200141c80a6a41086a2222201f370300200120203703c80a0240024002400240024020094101470d00200b201e460d010b20054101470d03200141900b6a41186a22052004290300370300200141900b6a41106a22232021290300370300200141900b6a41086a22212022290300370300200120012903c80a3703900b201d41024b0d03200c4200370300200d4200370300200e42003703002001420037038806200f20101003220441086a290000370300200120042900003703c80120041023200e200f290300370300200120012903c80137038806200f419adfc100ad4280808080a0018422121003220441086a290000370300200120042900003703c801200410232011200f2903002206370300200120012903c801221f3703f80a2002201f370000201320063700002014200e2903003703002015200d2903003703002016200c29030037030020012001290388063703d80120014188066a200141d8016a1091022001280288062104200129028c062106201620052903003703002015202329030037030020142021290300370300200120012903900b3703d8012004410420041b21242006420020041b2206422088a722214103490d01024020214103460d002021417d6a210520242021410c6c6a41746a210403400240200441046a280200450d00200428020010230b200441746a21042005417f6a22050d000b0b200642ffffffff0f834280808080308421060c020b0240200a201a470d0041002109201a210a0c030b200a280200210b41012109200a41046a210a0c020b02402006a7220420216b410320216b22254f0d00202120256a22052021490d06200441017422222005202220054b1bad2206420c7e221f422088a70d06201fa722054100480d060240024020040d002005102121240c010b20242004410c6c2005102521240b2024450d0c0b20242021410c6c6a21040240024020254102490d002021417e6a2105034020044204370200200441086a41003602002004410c6a2104202141016a2121200541016a222220054f21232022210520230d000b2025450d010b2004410036020820044204370200200642ffffffff0f83202141016aad4220868421060c010b200642ffffffff0f832021ad4220868421060b201d2006422088a722224f0d09200c2016290300370300200d2015290300370300200e2014290300370300200120012903d801370388062024201d410c6c6a220541086a2121024020052802082204200541046a2223280200470d00200441016a221d2004490d0520044101742225201d2025201d4b1b221dad42247e221f422088a70d05201fa722254100480d050240024020040d002025102121040c010b2005280200200441246c2025102521040b2004450d092023201d36020020052004360200202128020021040b2005280200200441246c6a22042001290388063702042004201e3602002004410c6a200e290300370200200441146a200d2903003702002004411c6a200c2903003702002021202128020041016a360200200120243602e80a200120063702ec0a200c4200370300200d4200370300200e42003703002001420037038806200f20101003220441086a290000370300200120042900003703c80120041023200e200f290300370300200120012903c801221f3703f80a2001201f37038806200f20121003220441086a290000370300200120042900003703c801200410232011200f2903002212370300200120012903c801221f3703f80a200d201f370000200d41086a20123700002014200e2903003703002015200d2903003703002016200c29030037030020012001290388063703d801024020240d00201c10050c010b2006a721212001412036028c062022410c6c21052001200141d8016a36028806200141e80a6a20014188066a10732024210403400240200441046a280200450d00200428020010230b2004410c6a2104200541746a22050d000b2021450d00202410230b2003201b470d000b201b21030b2008a7210e2018a7210d2003410020196b412c6c6a21040240034020172004460d012004412c6a2104200341246a21052003412c6a210320052802004103470d000b0b0240200d450d00201710230b200e450d00200710230b20014188066a41186a420037030020014188066a41106a220e420037030020014188066a41086a220342003703002001420037038806200141b80a6a41086a2204418cfdc400ad4280808080d000841003220541086a290000370300200120052900003703b80a2005102320032004290300370300200120012903b80a37038806200441d8fdc300ad4280808080b001841003220541086a290000370300200120052900003703b80a20051023200e20012903b80a2206370300200141d8016a41086a2003290300370300200141d8016a41106a2006370300200141d8016a41186a2004290300370300200120063703900b20012001290388063703d801200141c80a6a200141d8016a4120108602024020012802c80a4101470d002000200141c80a6a41086a2802006b220341e7074b0d00200320004b0d00200141b80a6a41086a2204418cfdc400ad4280808080d000841003220541086a290000370300200120052900003703b80a20051023200141a8016a41086a220e2004290300370300200120012903b80a3703a801200441e3fdc300ad4280808080f000841003220541086a290000370300200120052900003703b80a20051023200141900b6a41086a22052004290300370300200120012903b80a3703900b200120033602d801200141c80a6a41186a220d200141d8016aad4280808080c000841001220441186a290000370300200141c80a6a41106a220c200441106a290000370300200141c80a6a41086a2221200441086a290000370300200120042900003703c80a2004102320014188066a41186a2222200d29030037030020014188066a41106a220d200c29030037030020014188066a41086a220c2021290300370300200120012903c80a3703880641c00010212204450d04200420012903a801370000200420012903900b3700102004200129038806370020200441086a200e290300370000200441186a2005290300370000200441286a200c290300370000200441306a200d290300370000200441386a2022290300370000200141a0016a200441c00041014100410010b80120012802a00121052004102320054101460d0020014188066a2003417f6a220420034d2004109202024002402001280288064103470d00200141023602d0052001410236029805200141023602e004200141023602a804200141023602f003200141023602b8032001410236028003200141023602c8022001410236029002200141023602d8010c010b200141d8016a20014188066a41b00410dc041a0b200141b80a6a41086a2204418cfdc400ad4280808080d000841003220541086a290000370300200120052900003703b80a20051023200141a8016a41086a220e2004290300370300200120012903b80a3703a801200441e3fdc300ad4280808080f000841003220541086a290000370300200120052900003703b80a20051023200141900b6a41086a22052004290300370300200120012903b80a3703900b200120033602f80a200141c80a6a41186a2203200141f80a6aad4280808080c000841001220441186a290000370300200141c80a6a41106a220d200441106a290000370300200141c80a6a41086a220c200441086a290000370300200120042900003703c80a2004102320014188066a41186a2221200329030037030020014188066a41106a2203200d29030037030020014188066a41086a220d200c290300370300200120012903c80a3703880641c00010212204450d03200420012903a801370000200420012903900b3700102004200129038806370020200441086a200e290300370000200441186a2005290300370000200441286a200d290300370000200441306a2003290300370000200441386a2021290300370000200141c00036028c062001200436028806200141d8016a20014188066a10d101200410230b20014188066a41186a220d420037030020014188066a41106a2205420037030020014188066a41086a220342003703002001420037038806200141e80a6a41086a220441a79fc600ad4280808080c001841003220e41086a2900003703002001200e2900003703e80a200e102320032004290300370300200120012903e80a37038806200441b39fc600ad428080808090018422121003220e41086a2900003703002001200e2900003703e80a200e1023200520012903e80a2206370300200141d8016a41086a220c2003290300370300200141d8016a41106a22212006370300200141d8016a41186a22222004290300370300200120063703900b20012001290388063703d801200141d8016aad221042808080808004841005200d42003703002005420037030020034200370300200142003703880620044182fdc400ad4280808080a001841003220e41086a2900003703002001200e2900003703e80a200e102320032004290300370300200120012903e80a37038806200420121003220e41086a2900003703002001200e2900003703e80a200e1023200520012903e80a2206370300200c20032903003703002021200637030020222004290300370300200120063703900b20012001290388063703d80120014198016a200141d8016a412041014100410010b8012001280298014101470d0102400240024020004180a305700d0020014188066a10930220014188016a20014188066a1094022001420020014188016a41086a290300221220012903880122064280c8afa02554ad7d221f20064280b8d0df5a7c2220200656201f201256200642ffc7afa025561b22041b22063703800b20014200202020041b22123703f80a20014188066a41186a2209200637030020014188066a41106a2223201237030020014188066a41086a221741013a00002001410d3a00880620014188066a108e014100211e200141003a008f0b200142003703b001200142003703a8012009420037030020234200370300201742003703002001420037038806200141c8016a41086a222241f4fcc400ad428080808080018422081003220441086a290000370300200120042900003703c8012004102320172022290300370300200120012903c80122063703900b200120063703880620224180b4c300ad428080808090018422181003220441086a290000370300200120042900003703c80120041023202320012903c8012206370300200141d8016a41086a220d2017290300370300200141d8016a41106a220b2006370300200141d8016a41186a221b2022290300370300200120063703900b20012001290388063703d80120014188066a200141d8016a1095022001280288062204410420041b210a0240200129028c06420020041b221c422088a72203450d00200141c8016aad4280808080c00084212620014191066a210f200141900b6a41c0006a211d200141b00b6a2124410021214100211e41002104024003400240024002400240201e450d00200a20044102746a2105200a200420216a4102746a210e0340200420034f0d02200141d8016a2005280200220c10960220012903d8014201520d04200141900b6a200d41e00010dc041a20012903f80a221f20012903900b222054200141f80a6a41086a2903002206200141900b6a41086a29030022125420062012511b450d03200141013a008f0b0240202120046a220c20034f0d00200e2005280200360200200541046a2105200e41046a210e200441016a22042003490d010c070b0b41c4bcc000200c2003102d000b200a20044102746a21050340200420034f0d01200141d8016a2005280200220c10960220012903d8014201520d03200141900b6a200d41e00010dc041a20012903f80a221f20012903900b22205a200141f80a6a41086a2903002206200141900b6a41086a29030022125a20062012511b0d02200541046a2105200141013a008f0b200441016a22042003490d000b4100211e0c050b41f0bbc00020042003102d000b2001201f20207d3703f80a2001200620127d201f202054ad7d3703800b202220081003220541086a290000370300200120052900003703c80120051023200141b80a6a41086a220e2022290300370300200120012903c8013703b80a202241f980c400ad42808080809001841003220541086a290000370300200120052900003703c80120051023200141e80a6a41086a221a2022290300370300200120012903c8013703e80a2001200c3602c801200141c80a6a41186a220220261001220541186a290000370300200141c80a6a41106a2214200541106a290000370300200141c80a6a41086a2215200541086a290000370300200120052900003703c80a20051023200920022903003703002023201429030037030020172015290300370300200120012903c80a3703880641c00010212205450d05200520012903b80a370000200541086a200e290300370000200520012903e80a370010200541186a201a2903003700002005200129038806370020200541286a2017290300370000200541306a2023290300370000200541386a20092903003700002005ad4280808080800884100520051023202420012903a00b200141900b6a41186a29030010de01200141f8006a201d20012903900b200141900b6a41086a2205290300109702200141a8016a41086a220e427f200e2903002206200141f8006a41086a2903007c20012903a801221220012903787c221f201254220ead7c2212200e201220065420122006511b220e1b3703002001427f201f200e1b3703a80120012903900b210620014188066a41386a2005290300370300200f201d290000370000200f41086a201d41086a290000370000200f41106a201d41106a290000370000200f41186a201d41186a290000370000200120063703b806200141023a0090062001410d3a0088062001200c3602b40620014188066a108e010b2021417f6a2121201e41016a211e200441016a22042003490d000b0b201e450d00200420034f0d00200a20044102746a2205201e4102746b2005200320046b41027410dd041a0b2009420037030020234200370300201742003703002001420037038806202220081003220441086a290000370300200120042900003703c8012004102320172022290300370300200120012903c80122063703900b2001200637038806202220181003220441086a290000370300200120042900003703c80120041023200141900b6a41086a20222903002206370300200120012903c80122123703900b20232012370000202341086a2006370000200d2017290300370300200b2023290300370300201b200929030037030020012001290388063703d80102400240200a0d002010428080808080048410050c010b200141003602900620014201370388062003201e6b220320014188066a105c0240024020030d00200128029006210c200128028c06210d20012802880621030c010b410020012802900622046b2105200a20034102746a2122200128028c06210d200a210e0340200e280200212102400240200d20056a4104490d0020012802880621030c010b200441046a22032004490d07200d410174220c2003200c20034b1b220c4100480d0702400240200d0d00200c102121030c010b200128028806200d200c102521030b2003450d062001200c36028c062001200336028806200c210d0b2001200441046a220c36029006200320046a20213600002005417c6a2105200c21042022200e41046a220e470d000b0b201ca7210420104280808080800484200cad4220862003ad8410020240200d450d00200310230b2004450d00200a10230b024020012d008f0b0d00200141d0006a20012903f80a2206200141f80a6a41086a2204290300221242c0843d420010e204200141c0006a2001290350221f200141d0006a41086a290300222042c0fb42427f10e104200141306a201f20204290ce00420010e104200420122012200141306a41086a2903002001290330221f200620012903407c22204290ce007e202042e40080222042c0fb427e7c42a0c21e562020a76aad7c2220201f54ad7c221f2020200656201f201256201f2012511b22031b221f7d20062006202020031b221254ad7d3703002001200620127d3703f80a20014188066a41186a2205420037030020014188066a41106a220e420037030020014188066a41086a220342003703002001420037038806200141c8016a41086a220441d5fbc400ad428080808080018422201003220d41086a2900003703002001200d2900003703c801200d102320032004290300370300200120012903c80122063703c80a2001200637038806200441d6a0c200ad4280808080d0018422081003220d41086a2900003703002001200d2900003703c801200d1023200e20012903c8012206370300200141d8016a41086a22212003290300370300200141d8016a41106a22222006370300200141d8016a41186a22232004290300370300200120063703c80a20012001290388063703d801200141e0006a200141d8016a4120108902200141e0006a41106a2903002106200129036821182001280260210d20054200370300200e4200370300200342003703002001420037038806200420201003220c41086a2900003703002001200c2900003703c801200c102320032004290300370300200120012903c80122203703c80a2001202037038806200420081003220c41086a2900003703002001200c2900003703c801200c102320052004290300222037030020212003290300370300202220012903c801220837030020232020370300200120083703c80a20012001290388063703d8012001420020064200200d1b2206201f7d20184200200d1b2220201254ad7d2208202020127d2218202056200820065620082006511b22041b3703900620014200201820041b370388062010428080808080048420014188066aad42808080808002841002200141a8016a41086a220d427f200d29030022082006201f20041b7c20012903a80122062020201220041b7c22202006542204ad7c22062004200620085420062008511b22041b3703002001427f202020041b3703a8012005201f370300200e2012370300200341033a00002001410d3a00880620014188066a108e010b200141900b6a109302200141d8016a200141900b6a20012903a8012206200141a8016a41086a2903002212410241001088020240024020012802d8010d00200141d8016a41106a290300212020012903e001211f200141c80a6a41186a22054200370300200141c80a6a41106a22044200370300200141c80a6a41086a220e4200370300200142003703c80a200141c8016a41086a220341d5fbc400ad4280808080800184221c1003220d41086a2900003703002001200d2900003703c801200d1023200e2003290300370300200120012903c80122103703b80a200120103703c80a200341d6a0c200ad4280808080d0018422261003220d41086a2900003703002001200d2900003703c801200d1023200420012903c801221037030020014188066a41086a200e29030037030020014188066a41106a220e201037030020014188066a41186a220d2003290300370300200120103703e80a200120012903c80a37038806200120014188066a4120108902201220207d2006201f54ad7d202020127d201f200654ad7d201f2006582020201258202020125122031b220c1b21272006201f7d201f20067d200c1b2118200141106a29030042002001280200220c1b211020012903084200200c1b210802400240201f200656202020125620031b0d002005420037030020044200370300200141c80a6a41086a220c4200370300200142003703c80a200141c8016a41086a2203201c1003222141086a290000370300200120212900003703c80120211023200c2003290300370300200120012903c80122063703b80a200120063703c80a200320261003222141086a290000370300200120212900003703c80120211023200141e80a6a41086a20032903002206370300200120012903c80122123703e80a20042012370000200441086a200637000020014188066a41086a200c290300370300200e2004290300370300200d2005290300370300200120012903c80a370388062001427f201020277c200820187c22122008542204ad7c22062004200620105420062010511b22041b3703d00a2001427f201220041b3703c80a200141c80a6a21040c010b2005420037030020044200370300200141c80a6a41086a220c4200370300200142003703c80a200141c8016a41086a2203201c1003222141086a290000370300200120212900003703c80120211023200c2003290300370300200120012903c80122063703b80a200120063703c80a200320261003222141086a290000370300200120212900003703c80120211023200141e80a6a41086a20032903002206370300200120012903c80122123703e80a20042012370000200441086a200637000020014188066a41086a200c290300370300200e2004290300370300200d2005290300370300200120012903c80a3703880620014200201020277d2008201854ad7d2206200820187d2212200856200620105620062010511b22041b3703d00a20014200201220041b3703c80a200141c80a6a21040b20014188066aad42808080808004842004ad428080808080028410020c010b41a8a9c300ad4280808080a00984100820014188066a41186a2205420037030020014188066a41106a220e420037030020014188066a41086a220342003703002001420037038806200141c8016a41086a220441d5fbc400ad428080808080018422201003220d41086a2900003703002001200d2900003703c801200d102320032004290300370300200120012903c801221f3703c80a2001201f37038806200441d6a0c200ad4280808080d0018422081003220d41086a2900003703002001200d2900003703c801200d1023200e20012903c801221f370300200141d8016a41086a220c2003290300370300200141d8016a41106a2221201f370300200141d8016a41186a222220042903003703002001201f3703c80a20012001290388063703d801200141186a200141d8016a4120108902200141186a41106a290300211f200129032021182001280218210d20054200370300200e4200370300200342003703002001420037038806200420201003220e41086a2900003703002001200e2900003703c801200e102320032004290300370300200120012903c80122203703c80a2001202037038806200420081003220e41086a2900003703002001200e2900003703c801200e1023200520042903002220370300200c2003290300370300202120012903c801220837030020222020370300200120083703c80a20012001290388063703d8012001427f201f4200200d1b221f20127c20184200200d1b221220067c22202012542204ad7c220620042006201f542006201f511b22041b370390062001427f202020041b370388062010428080808080048420014188066aad428080808080028410020b20012903f80a2106200141a0066a200141f80a6a41086a29030037030020014198066a200637030020014188066a41086a41043a00002001410d3a00880620014188066a108e010b2000109802200141f00b6a24000f0b41c00041011030000b200c41011030000b102a000b418cbec100102b000b41c00041011030000b41c00041011030000b202541041030000b41a4dfc100201d2022102d000b200541041030000bd00a050c7f017e037f037e037f230041d0016b220224002002412036021c20022001360218200241206a2001ad4280808080800484100410900102400240200228022022030d00200041003602000c010b200228022421042002200241286a28020036024420022003360240200241106a200241c0006a106e02400240024002400240024020022802100d000240024002400240024002402002280244410c6e2205410c6c2201417f4c0d00200228021421060240024020010d00410421070c010b200110212207450d020b02402006450d0041002108410021090340200241086a200241c0006a106e20022802080d0b2002280244220141246e220a41246c220b417f4c0d02200228020c210c02400240200b0d004104210d0c010b200b1021220d450d050b200aad210e02400240200c450d004100210f034020014104490d0d200f41016a210f20022001417c6a220a36024420022002280240221041046a3602402010280000211141002101200241003a00c80103400240200a2001470d0020024100360244200141ff0171450d0f200241003a00c8010c0f0b200241a8016a20016a201020016a220b41046a2d00003a00002002200b41056a3602402002200141016a220b3a00c801200b2101200b4120470d000b200241e8006a41086a200241a8016a41086a2903002212370300200241e8006a41106a200241a8016a41106a2903002213370300200241e8006a41186a200241a8016a41186a2903002214370300200241c8006a41086a22102012370300200241c8006a41106a22152013370300200241c8006a41186a221620143703002002200a200b6b2201360244200220022903a8012212370368200220123703480240200ea7200e422088a7220b470d00200b41016a220a200b490d0b200b4101742217200a200a2017491bad221242247e2213422088a70d0b2013a7220a4100480d0b02400240200b0d00200a1021210d0c010b200d200b41246c200a1025210d0b200d450d09200e42808080807083201284210e0b200d200b41246c6a220b2011360200200b2002290348370204200b410c6a2010290300370200200b41146a2015290300370200200b411c6a2016290300370200200e4280808080107c210e200f200c470d000c020b0b200d450d0c0b200941016a2101024020052009470d002009410174220b2001200b20014b1b2205ad420c7e2212422088a70d082012a7220b4100480d080240024020090d00200b102121070c010b20072009410c6c200b102521070b2007450d070b20072009410c6c6a220b200e370204200b200d3602002008410c6a21082001210920012006470d000b200241386a200636020020022005360234200220073602300c080b200241386a2006360200200220053602342002200736023020070d070c0a0b102f000b200141041030000b200b41041030000b200a41041030000b200b41041030000b102a000b200241003602300c030b20002002290330370200200041086a200241306a41086a2802003602000c030b200ea7450d00200d10230b2002410036023002402009450d002007210103400240200141046a280200450d00200128020010230b2001410c6a2101200841746a22080d000b0b2005450d00200710230b200241003602900120024201370388012002410c36026c2002200241186a360268200220024188016a360248200241bc016a4101360200200242013702ac0120024198c2c3003602a8012002200241e8006a3602b801200241c8006a41b8a3c500200241a8016a102e1a20023502900142208620023502880184100820004100360200200228028c01450d0020022802880110230b2004450d00200310230b200241d0016a24000bb90401057f23004190096b2203240002400240024020010d00200041033602000c010b200341086a41086a2201418cfdc400ad4280808080d000841003220441086a2900003703002003200429000037030820041023200341e8086a41086a22052001290300370300200320032903083703e808200141e3fdc300ad4280808080f000841003220441086a2900003703002003200429000037030820041023200341f8086a41086a22062001290300370300200320032903083703f8082003200236028c09200341086a41186a22022003418c096aad4280808080c000841001220441186a290000370300200341086a41106a2207200441106a2900003703002001200441086a2900003703002003200429000037030820041023200341b8046a41186a22042002290300370300200341b8046a41106a22022007290300370300200341b8046a41086a22072001290300370300200320032903083703b80441c00010212201450d01200120032903e808370000200120032903f808370010200120032903b804370020200141086a2005290300370000200141186a2006290300370000200141286a2007290300370000200141306a2002290300370000200141386a2004290300370000200341086a200141c00010a60320032802082104200341b8046a200341086a41047241ac0410dc041a0240024020044103470d00200041033602000c010b20002004360200200041046a200341b8046a41ac0410dc041a0b200110230b20034190096a24000f0b41c00041011030000bbf0301077f230041d0006b22012400024002400240024002400240410110212202450d00200241ed003a000020024101410210252202450d01200241ef003a000120024102410410252202450d02200241e4d8013b000220024104410810252202450d03200241f0f2bda10736000420024108411010252203450d04200341f2e6c9cb07360008200141003a0048410c210220032104410021050340200141003a0008200141086a20042002410047220610dc041a024020020d00200141003a00080b20022006490d06200141286a20056a20012d00083a00002001200541016a22073a0048200220066b2102200420066a21042007210520074120470d000b200141086a41186a2202200141286a41186a290300370300200141086a41106a2206200141286a41106a290300370300200141086a41086a2204200141286a41086a2903003703002001200129032837030820031023200041186a2002290300370000200041106a2006290300370000200041086a200429030037000020002001290308370000200141d0006a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b20062002103e000bff0202057f027e230041e0006b22022400200241c0006a41086a220341d5fbc400ad42808080808001841003220441086a2900003703002002200429000037034020041023200241206a41086a2205200329030037030020022002290340370320200341e3a0c200ad4280808080b001841003220441086a2900003703002002200429000037034020041023200241306a41086a2206200329030037030020022002290340370330200241c0006a200110ac01024041c000102122040d0041c00041011030000b200420022903203700002004200229033037001020042002290040370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a41106a290000370000200441386a200241c0006a41186a290000370000200241086a200441c000108902200241086a41106a290300210720022903102108200228020821032004102320002007420020031b37030820002008420020031b370300200241e0006a24000bbc0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a107b024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a2002350230422086200235022884100820004100360200200228022c450d00200228022810230b2003450d00200110230b200241e0006a24000b920402077f017e230041f0016b22022400200241086a220341f4fcc400ad42808080808001841003220441086a2900003703002002200429000037030020041023200241e8006a41086a2205200329030037030020022002290300370368200341f980c400ad42808080809001841003220441086a2900003703002002200429000037030020041023200241f8006a41086a2206200329030037030020022002290300370378200220013602ec01200241186a2201200241ec016aad4280808080c000841001220441186a290000370300200241106a2207200441106a2900003703002003200441086a290000370300200220042900003703002004102320024188016a41186a2208200129030037030020024188016a41106a2201200729030037030020024188016a41086a220720032903003703002002200229030037038801024041c00010212204450d0020042002290368370000200420022903783700102004200229038801370020200441086a2005290300370000200441186a2006290300370000200441286a2007290300370000200441306a2001290300370000200441386a20082903003700002002200441c000108f032002290300210920024188016a200341e00010dc041a0240024020094201510d00200042003703000c010b20004201370300200041086a20024188016a41e00010dc041a0b20041023200241f0016a24000f0b41c00041011030000bbb0f0a027f017e027f017e037f027e017f047e017f017e23004180026b22042400200441f0016a41086a220541d5fbc400ad428080808080018422061003220741086a290000370300200420072900003703f00120071023200441f0006a41086a22082005290300370300200420042903f001370370200541e3a0c200ad4280808080b0018422091003220741086a290000370300200420072900003703f00120071023200441d0006a41086a220a2005290300370300200420042903f00137035020044180016a200110ac0102400240024041c00010212207450d0020072004290370370000200720042903503700102007200429008001370020200741086a2008290300370000200741186a200a290300370000200741286a20044180016a41086a290000370000200741306a20044180016a41106a220b290000370000200741386a20044180016a41186a220c290000370000200441386a200741c000108902200441386a41106a290300210d2004290340210e2004280238210f20071023200520061003220741086a290000370300200420072900003703f0012007102320082005290300370300200420042903f001370370200520091003220741086a290000370300200420072900003703f00120071023200a2005290300370300200420042903f00137035020044180016a200110ac0141c00010212207450d014200211020072004290370370000200720042903503700102007200429008001370020200741086a200441f0006a41086a290300370000200741186a200441d0006a41086a290300370000200741286a20044180016a41086a290000370000200741306a200b290000370000200741386a200c290000370000200441206a200741c000108902200441206a41106a29030021062004290328211120042802202105200710232006420020051b21092011420020051b210602400240200e4200200f1b220e20027c220242ffc7afa02556200d4200200f1b20037c2002200e54ad7c220342005220035022071b0d004200210d2006200984500d010b024020024280c8afa02554410020071b0d00200441f0016a41086a220741d5fbc400ad42808080808001841003220541086a290000370300200420052900003703f00120051023200441f0006a41086a22082007290300370300200420042903f001370370200741e3a0c200ad4280808080b001841003220541086a290000370300200420052900003703f00120051023200441d0006a41086a22052007290300370300200420042903f00137035020044180016a200110ac0141c00010212207450d0420072004290370370000200720042903503700102007200429008001370020200741086a2008290300370000200741186a2005290300370000200741286a20044180016a41086a290000370000200741306a20044180016a41106a290000370000200741386a20044180016a41186a290000370000200441186a200741c00041014100410010b801200428021821052007102320054101460d00200110db0220044180016a41386a200337030020044180016a41306a200237030020044180016a41086a41003a000020044189016a200129000037000020044191016a200141086a29000037000020044199016a200141106a290000370000200441a1016a200141186a290000370000200441023a00800120044180016a108e010b200320097d2002200654ad7d210d200220067d211020012002200310dc022006200256200920035620092003511b2201450d00200620027d201020011b210e4200211020044180016a41186a2208420037030020044180016a41106a220a420037030020044180016a41086a220542003703002004420037038001200441f0016a41086a220741d5fbc400ad428080808080018422121003220f41086a2900003703002004200f2900003703f001200f102320052007290300370300200420042903f00122113703702004201137038001200741d6a0c200ad4280808080d0018422131003220f41086a2900003703002004200f2900003703f001200f1023200a20042903f0012211370300200441d0006a41086a220b2005290300370300200441d0006a41106a220c2011370300200441d0006a41186a221420072903003703002004201137037020042004290380013703502004200441d0006a4120108902200441106a2903002111200429030821152004280200210f20084200370300200a4200370300200542003703002004420037038001200720121003220a41086a2900003703002004200a2900003703f001200a102320052007290300370300200420042903f00122123703702004201237038001200720131003220a41086a2900003703002004200a2900003703f001200a1023200820072903002212370300200b2005290300370300200c20042903f0012213370300201420123703002004201337037020042004290380013703502004420020114200200f1b2211200920037d2006200254ad7d200d20011b7d20154200200f1b2202200e54ad7d22032002200e7d2206200256200320115620032011511b22071b3703880120044200200620071b37038001200441d0006aad428080808080048420044180016aad428080808080028410024200210d0b200020103703002000200d37030820044180026a24000f0b41c00041011030000b41c00041011030000b41c00041011030000bc86e05057f037e077f037e047f230041f0026b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a2203420037030020014200370360200141d0016a41086a22044188e0c100ad4280808080f001841003220541086a290000370300200120052900003703d0012005102320032004290300370300200120012903d0012206370380022001200637036020044197e0c100ad4280808080d001841003220541086a290000370300200120052900003703d00120051023200220012903d0012206370300200141d0026a41086a2003290300370300200141d0026a41106a2006370300200141d0026a41186a20042903003703002001200637038002200120012903603703d002200141203602e4012001200141d0026a3602e00120014180026a200141d0026aad22074280808080800484220810041090010240024020012802800222030d0041022104200141023602c4020c010b2001280284022105200120014180026a41086a28020022043602d401200120033602d0010240024020044104490d002001200341046a3602d00120012004417c6a22093602d40120094104490d00200328000021092001200441786a3602d4012001200341086a3602d0012003280004210a200141e0006a200141d0016a106d2001280260220b450d002001290264210641002104200141003a006002400240024020012802d401220c450d002001200c417f6a220d3602d401200120012802d001220e41016a3602d001200e2d00004101460d010b0c010b200d4104490d002001200c417b6a3602d4012001200e41056a3602d001200e280001210f410121040b2001200f3602c802200120063702bc022001200b3602b8022001200a3602b402200120093602b0020c010b200141003602980220014201370390022001410c3602f4012001200141e0016a3602f001200120014190026a3602ec01200141f4006a41013602002001420137026420014198c2c3003602602001200141f0016a360270200141ec016a41b8a3c500200141e0006a102e1a2001350298024220862001350290028410080240200128029402450d0020012802900210230b410221040b200120043602c4022005450d00200310230b200141e0006a41106a2203200141b0026a41106a2205280200360200200141e0006a41086a2209200141b0026a41086a220a290300370300200120012903b002370360024002400240024002400240024020044102460d0020014190026a41106a2003280200220336020020014190026a41086a200929030022103703002001200129036022063703900220052003360200200a2010370300200141c8026a200f360200200120063703b002200120043602c40202402006a722032000470d000240024020044101460d00200141c0026a280200220fad42287e2206422088a70d042006a72203417f4c0d0420012802b802210420012802b402210b0240024020030d004108210a0c010b20031021220a450d060b410021050240200f450d00200f41286c210941002105200a21030340200441086a2903002106200441106a2903002110200441186a290300211120042903002112200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200637030020032012370300200341286a2103200541016a2105200441286a2104200941586a22090d000b0b200141e0026a200b360200200141d0026a410c6a2005360200200141d0026a41086a200f3602002001200a3602d402200141003602d002200141e0006a200141d0026a1099022001418b026a200141e0006a41086a2802003600002001200129036037008302200141e0006a410c6a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a108b01200f450d01200a10230c010b200141c0026a280200220aad42287e2206422088a70d032006a72203417f4c0d0320012802b802210420012802b402210c0240024020030d004108210b0c010b20031021220b450d060b02400240200a0d00410021050c010b200a41286c210941002105200b21030340200441086a2903002106200441106a2903002110200441186a290300211120042903002112200341206a200441206a290300370300200341186a2011370300200341106a2010370300200341086a200637030020032012370300200341286a2103200541016a2105200441286a2104200941586a22090d000b0b200141e4026a200c360200200141e0026a2005360200200141d0026a410c6a200a360200200141d0026a41086a200b3602002001200f3602d402200141013602d002200141e0006a200141d0026a1099022001418b026a200141e0006a41086a2802003600002001200129036037008302200141e0006a410c6a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a108b01200a450d00200b10230b20012802b00221030b024020012802b40220036a2000470d00200141143602d4022001418adcc1003602d002200141013a00602001200141b0026a41086a2203360264200141e0006a200141d0026a1070200141e0006a41086a22042003290000370300200141e0006a41106a2205200341086a28000036020020014100360264200141063a0060200141e0006a108e01200141e0006a41186a220f4200370300200542003703002004420037030020014200370360200141d0016a41086a22034188e0c100ad4280808080f001841003220941086a290000370300200120092900003703d0012009102320042003290300370300200120012903d0012206370380022001200637036020034197e0c100ad4280808080d001841003220941086a290000370300200120092900003703d0012009102320014180026a41086a20032903002206370300200120012903d00122103703800220022010370000200241086a2006370000200141d0026a41086a2004290300370300200141d0026a41106a2005290300370300200141d0026a41186a200f290300370300200120012903603703d002200810050c010b200141bc026a280200450d0020012802b80210230b200141e0006a41186a22094200370300200141e0006a41106a220f4200370300200141e0006a41086a2203420037030020014200370360200141d0016a41086a22044188e0c100ad4280808080f001841003220541086a290000370300200120052900003703d0012005102320032004290300370300200120012903d00122063703800220012006370360200441a4e0c100ad4280808080d000841003220541086a290000370300200120052900003703d0012005102320014180026a41086a20042903002206370300200120012903d00122103703800220022010370000200241086a2006370000200141d0026a41086a2003290300370300200141d0026a41106a200f290300370300200141d0026a41186a2009290300370300200120012903603703d00220014120360284022001200141d0026a3602800220014190026a200810041090012001280290022204450d0520014190026a41086a2802002105200128029402210941002103200141003a00600240024002402005450d0020042d0000220f41034b0d00024002400240200f0e0405000102050b2005417f6a4108490d0220042900012106410121030c040b410221030c020b2005417f6a4108490d0020042900012106410321030c020b200141003602b802200142013703b0022001410c3602f401200120014180026a3602f0012001200141b0026a3602d001200141f4006a41013602002001420137026420014198c2c3003602602001200141f0016a360270200141d0016a41b8a3c500200141e0006a102e1a20013502b80242208620013502b002841008024020012802b402450d0020012802b00210230b410421030b0b02402009450d00200410230b2003417f6a220441024b0d0520040e03040503040b102f000b200341081030000b200341081030000b2006422088a7210402402006a722032000470d00200141043602d002200120043602d402200141e0006a200141d0026a1099022001418b026a200141e8006a2802003600002001200129036037008302200141ec006a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a108b010b200420036a2000470d01200141003602b002200141e0006a41186a22094200370300200141e0006a41106a22004200370300200141e0006a41086a2203420037030020014200370360200141d0016a41086a22044188e0c100ad4280808080f001841003220541086a290000370300200120052900003703d0012005102320032004290300370300200120012903d00122063703800220012006370360200441a4e0c100ad4280808080d000841003220541086a290000370300200120052900003703d0012005102320014180026a41086a20042903002206370300200120012903d00122103703800220022010370000200241086a2006370000200141d0026a41086a2003290300370300200141d0026a41106a2000290300370300200141d0026a41186a2009290300370300200120012903603703d002200141e0006a200141b0026a109a022008200135026842208620012802602204ad84100202402001280264450d00200410230b20014102360264200141063a0060200141e0006a108e010c010b2006422088a7210402402006a722032000470d00200141033602d002200120043602d402200141e0006a200141d0026a1099022001418b026a200141e8006a2802003600002001200129036037008302200141ec006a20014187026a290000370000200141c6a4b9da04360061200141023a00602001200129008002370065200141e0006a108b010b200420036a2000470d00200141023602b002200141e0006a41186a22094200370300200141e0006a41106a22004200370300200141e0006a41086a2203420037030020014200370360200141d0016a41086a22044188e0c100ad4280808080f001841003220541086a290000370300200120052900003703d0012005102320032004290300370300200120012903d00122063703800220012006370360200441a4e0c100ad4280808080d000841003220541086a290000370300200120052900003703d0012005102320014180026a41086a20042903002206370300200120012903d00122103703800220022010370000200241086a2006370000200141d0026a41086a2003290300370300200141d0026a41106a2000290300370300200141d0026a41186a2009290300370300200120012903603703d002200141e0006a200141b0026a109a022008200135026842208620012802602204ad84100202402001280264450d00200410230b20014101360264200141063a0060200141e0006a108e010b200141e0006a41186a22054200370300200141e0006a41106a220e4200370300200141e0006a41086a2203420037030020014200370360200141b0026a41086a220441be99c600ad428080808090018422101003220941086a290000370300200120092900003703b0022009102320032004290300370300200120012903b00222063703900220012006370360200441c799c600ad4280808080e000841003220941086a290000370300200120092900003703b00220091023200e20012903b0022206370300200141d0026a41086a22022003290300370300200141d0026a41106a22002006370300200141d0026a41186a220f20042903003703002001200637039002200120012903603703d002200141d8006a200141d0026a4120108f01200128025c210d02402001280258220a4101470d002007428080808080048410050b20054200370300200e42003703002003420037030020014200370360200420101003220941086a290000370300200120092900003703b0022009102320032004290300370300200120012903b0022206370390022001200637036020044188d3c300ad4280808080b001841003220941086a290000370300200120092900003703b0022009102320014190026a41086a20042903002206370300200120012903b002221037039002200e2010370000200e41086a2006370000200220032903003703002000200e290300370300200f2005290300370300200120012903603703d00202400240024002400240024002400240024002400240200141d0026a109b02220441ff01714102460d0020044101710d010b410410212203450d0120034100360200200141e0006a41186a22024200370300200141e0006a41106a22004200370300200141e0006a41086a2205420037030020014200370360200141b0026a41086a220441be99c600ad42808080809001841003220941086a290000370300200120092900003703b0022009102320052004290300370300200120012903b00222063703900220012006370360200441cd99c600ad4280808080b001841003220941086a290000370300200120092900003703b0022009102320014190026a41086a20042903002206370300200120012903b002221037039002200e2010370000200e41086a2006370000200141d0026a41086a2005290300370300200141d0026a41106a2000290300370300200141d0026a41186a2002290300370300200120012903603703d00220014100360268200142013703604101200141e0006a105c200328020021020240024020012802642209200128026822056b4104490d00200128026021040c010b200541046a22042005490d0a200941017422002004200020044b1b22004100480d0a0240024020090d002000102121040c010b200128026020092000102521040b2004450d032001200036026420012004360260200021090b2001200541046a2200360268200420056a20023600002007428080808080048422062000ad4220862004ad84100202402009450d00200410230b20031023410410212203450d0320034100360200200141e0006a41186a22024200370300200141e0006a41106a22004200370300200141e0006a41086a2205420037030020014200370360200141b0026a41086a220441be99c600ad42808080809001841003220941086a290000370300200120092900003703b0022009102320052004290300370300200120012903b00222103703900220012010370360200441f09fc600ad4280808080c001841003220941086a290000370300200120092900003703b0022009102320014190026a41086a20042903002210370300200120012903b002221137039002200e2011370000200e41086a2010370000200141d0026a41086a2005290300370300200141d0026a41106a2000290300370300200141d0026a41186a2002290300370300200120012903603703d00220014100360268200142013703604101200141e0006a105c200328020021020240024020012802642209200128026822056b4104490d00200128026021040c010b200541046a22042005490d0a200941017422002004200020044b1b22004100480d0a0240024020090d002000102121040c010b200128026020092000102521040b2004450d052001200036026420012004360260200021090b2001200541046a2200360268200420056a200236000020062000ad4220862004ad84100202402009450d00200410230b20031023200141e0006a41186a22054200370300200141e0006a41106a22094200370300200141e0006a41086a2203420037030020014200370360200141b0026a41086a220441be99c600ad428080808090018422101003220241086a290000370300200120022900003703b0022002102320032004290300370300200120012903b00222113703900220012011370360200441fc9fc600ad4280808080e000841003220241086a290000370300200120022900003703b0022002102320014190026a41086a220020042903002211370300200120012903b002221237039002200e2012370000200e41086a220f2011370000200141d0026a41086a220b2003290300370300200141d0026a41106a220c2009290300370300200141d0026a41186a22132005290300370300200120012903603703d002200141003602602006200141e0006aad22114280808080c00084100220054200370300200942003703002003420037030020014200370360200420101003220241086a290000370300200120022900003703b0022002102320032004290300370300200120012903b0022210370390022001201037036020044188d3c300ad4280808080b001841003220241086a290000370300200120022900003703b00220021023200020042903002210370300200120012903b002221237039002200e2012370000200f2010370000200b2003290300370300200c200929030037030020132005290300370300200120012903603703d002200141013a0060200620114280808080108410020b200141e0006a41186a22054200370300200141e0006a41106a22144200370300200141e0006a41086a2203420037030020014200370360200141b0026a41086a220441be99c600ad428080808090018422101003220941086a290000370300200120092900003703b0022009102320032004290300370300200120012903b002370360200441cd99c600ad4280808080b001841003220941086a290000370300200120092900003703b00220091023201420012903b0022206370300200141d0026a41086a22022003290300370300200141d0026a41106a22002006370300200141d0026a41186a220f20042903003703002001200637039002200120012903603703d002200141e0006a200141d0026a10950202400240200128026022130d004104211341002115420021110c010b20012902642211422088a721150b20054200370300201442003703002003420037030020014200370360200420101003220941086a290000370300200120092900003703b0022009102320032004290300370300200120012903b00222063703900220012006370360200441f09fc600ad4280808080c001841003220941086a290000370300200120092900003703b0022009102320014190026a41086a20042903002206370300200120012903b002221037039002200e2010370000200e41086a20063700002002200329030037030020002014290300370300200f2005290300370300200120012903603703d002200141e0006a200141d0026a1095020240024020012802602202450d00200120023602800220012902642210422088a7210b0c010b4104210220014104360280024100210b420021100b0240200a0d002015417f6a220420154f0d05200420154b0d05201320044102746a280200210d0b201541002015419c7f6a22042004201541016a4b1b2216490d052016450d07201320164102746a210c200bad21062013210a0340200a2802002100024002400240024002402006a7220f41014b0d0041002104200f0e020201020b41002104200f2103034020042003410176220520046a22092000200220094102746a280200491b2104200320056b220341014b0d000b0b20002002200441027422036a2802002205460d022004200020054b6a21040c010b410021040b2001200436026041a8a0c600412e200141e0006a41d8a0c6001031000b20062004ad580d07200220036a2203200341046a2004417f73200f6a41027410dd041a201042ffffffff0f83200f417f6a220bad422086842110200a41046a220a200c460d082006427f7c210620012802800221020c000b0b410441041030000b200041011030000b410441041030000b200041011030000b4182a0c6004126104a000b41ccbac000102b000b41b8bbc000102b000b201142ffffffff0f8321060240201520166b2204450d0002402016450d002013201320164102746a200441027410dd041a2010422088a7210b0b20062004ad4220868421060b200128028002210241002104024002400240024002400240024002400240024002400240024002400240200b41014b0d00200b0e020201020b200b2103034020042003410176220520046a2209200d200220094102746a280200491b2104200320056b220341014b0d000b0b0240200d200220044102746a2802002203460d002004200d20034b6a21040b200b2004490d010b200b2010a7470d02200b41016a2203200b490d0c200b41017422052003200520034b1b220341ffffffff03712003470d0c2003410274220541004e0d010c0c0b4180bbc000102b000b02400240200b0d002005102121020c010b2002200b4102742005102521020b2002450d0120012002360280022003ad21100b200220044102746a220341046a2003200b20046b41027410dd041a2003200d360200024020064220882211a722032006a7470d00200341016a22042003490d0a2011a722094101742205200420042005491b220441ffffffff03712004470d0a200441027422054100480d0a0240024020030d002005102121130c010b201320094102742005102521130b2013450d022006422088a721032004ad21060b201320034102746a200d3602000240200b41016a220c0d0041e8a0c600102b000b200c200c41017622044d0d02200128028002220520044102746a280200210d0240200c4101710d00200c2004417f6a22044d0d04200520044102746a280200200d6a410176210d0b200141e0006a41186a22024200370300200141e0006a41106a22004200370300200141e0006a41086a2205420037030020014200370360200141b0026a41086a220441be99c600ad42808080809001841003220941086a290000370300200120092900003703b0022009102320052004290300370300200120012903b00222113703900220012011370360200441cd99c600ad4280808080b001841003220941086a290000370300200120092900003703b0022009102320014190026a41086a20042903002211370300200120012903b002221237039002200e2012370000200e41086a2011370000200141d0026a41086a2005290300370300200141d0026a41106a2000290300370300200141d0026a41186a2002290300370300200120012903603703d0022001410036026820014201370360200341016a2215200141e0006a105c0240024020150d002001280268210020012802642102200128026021030c010b4100200128026822046b2105200341027441046a210f200128026421022013210903402009280200210a02400240200220056a4104490d00200128026021030c010b200441046a22032004490d0c200241017422002003200020034b1b22004100480d0c0240024020020d002000102121030c010b200128026020022000102521030b2003450d072001200036026420012003360260200021020b200941046a21092001200441046a2200360268200320046a200a3600002005417c6a210520002104200f417c6a220f0d000b0b2006a721042007428080808080048422062000ad4220862003ad84100202402002450d00200310230b02402004450d00201310230b2001280280022113200141e0006a41186a22094200370300200141e0006a41106a22024200370300200141e0006a41086a2203420037030020014200370360200141b0026a41086a220441be99c600ad42808080809001841003220541086a290000370300200120052900003703b0022005102320032004290300370300200120012903b00222113703900220012011370360200441f09fc600ad4280808080c001841003220541086a290000370300200120052900003703b0022005102320014190026a41086a20042903002211370300200120012903b002221237039002200e2012370000200e41086a2011370000200141d0026a41086a2003290300370300200141d0026a41106a2002290300370300200141d0026a41186a2009290300370300200120012903603703d0022001420137036020014100360268200c200141e0006a105c200b41027441046a21004100200128026822046b21052010a7210b200128026421022013210903402009280200210a02400240200220056a4104490d00200128026021030c010b200441046a22032004490d0b2002410174220f2003200f20034b1b220f4100480d0b0240024020020d00200f102121030c010b20012802602002200f102521030b2003450d072001200f36026420012003360260200f21020b200941046a21092001200441046a220f360268200320046a200a3600002005417c6a2105200f21042000417c6a22000d000b2006200fad4220862003ad84100202402002450d00200310230b0240200b450d00201310230b200141e0006a41186a22094200370300200141e0006a41106a22034200370300200141e0006a41086a2204420037030020014200370360200141b0026a41086a220541be99c600ad42808080809001841003220241086a290000370300200120022900003703b0022002102320042005290300370300200120012903b00222103703900220012010370360200541fc9fc600ad4280808080e000841003220241086a290000370300200120022900003703b0022002102320014190026a41086a220a20052903002210370300200120012903b002221137039002200e2011370000200e41086a2010370000200141d0026a41086a22022004290300370300200141d0026a41106a22002003290300370300200141d0026a41186a220f2009290300370300200120012903603703d0022001200d3602602006200141e0006aad22104280808080c0008410020240201541e500470d0020094200370300200342003703002004420037030020014200370360200541c4fbc400ad4280808080e000841003220b41086a2900003703002001200b2900003703b002200b102320042005290300370300200120012903b002370360200541f9bcc000ad4280808080e000841003220b41086a2900003703002001200b2900003703b002200b1023200a20052903002206370300200120012903b00222113703900220142011370000201441086a20063700002002200429030037030020002003290300370300200f2009290300370300200120012903603703d002200141d0006a200141d0026a4120108f010b20094200370300200342003703002004420037030020014200370360200141f0016a41086a220541c6acc500ad4280808080f0008422111003220941086a290000370300200120092900003703f0012009102320042005290300370300200120012903f00122063703b0022001200637036020054184adc500ad4280808080f0018422121003220941086a290000370300200120092900003703f00120091023200320012903f00122063703002002200429030037030020002006370300200f2005290300370300200120063703b002200120012903603703d002200141c8006a200141d0026a412041014100410010b8010240024020012802484101470d00200141d0026a210a0c010b200141e0006a41186a22024200370300200141e0006a41106a22094200370300200141e0006a41086a2205420037030020014200370360200141f0016a41086a220441be99c600ad42808080809001841003220041086a290000370300200120002900003703f0012000102320052004290300370300200120012903f001370360200441f0cec400ad428080808030841003220041086a290000370300200120002900003703f00120001023200920012903f0012206370300200141d0026a41086a220f2005290300370300200141d0026a41106a220a2006370300200141d0026a41186a220b2004290300370300200120063703b002200120012903603703d002200141386a200141d0026a109c02200129034021062001280238210c20024200370300200942003703002005420037030020014200370360200420111003220041086a290000370300200120002900003703f0012000102320052004290300370300200120012903f00122113703b00220012011370360200420121003220041086a290000370300200120002900003703f00120001023200141b0026a41086a20042903002211370300200120012903f00122123703b00220032012370000200341086a2011370000200f2005290300370300200a2009290300370300200b2002290300370300200120012903603703d002200120064200200c1b37036020074280808080800484201042808080808001841002200141d0026a210a0b200141e0006a41186a22094200370300200141e0006a41106a22034200370300200141e0006a41086a2204420037030020014200370360200141f0016a41086a220541a6a3c500ad4280808080a0018422111003220241086a290000370300200120022900003703f0012002102320042005290300370300200120012903f001370360200541b0a3c500ad4280808080e000841003220241086a290000370300200120022900003703f00120021023200320012903f0012206370300200141d0026a41086a22022004290300370300200141d0026a41106a22002006370300200141d0026a41186a220f2005290300370300200120063703b002200120012903603703d002200aad42808080808004842206100520094200370300200342003703002004420037030020014200370360200520111003220a41086a2900003703002001200a2900003703f001200a102320042005290300370300200120012903f00137036020054184a9c500ad4280808080c001841003220a41086a2900003703002001200a2900003703f001200a102320092005290300221137030020022004290300370300200020012903f0012212370300200f2011370300200120123703b002200120012903603703d002200610052009420037030020034200370300200442003703002001420037036020014180026a41086a220541d5fbc400ad42808080808001841003220a41086a2900003703002001200a29000037038002200a102320042005290300370300200120012903800222063703b00220012006370360200541e8bbc300ad42808080809002841003220a41086a2900003703002001200a29000037038002200a1023200320012903800222063703002002200429030037030020002006370300200f2005290300370300200120063703b002200120012903603703d002200141286a200141d0026a109c02200129033021112001280228210f200141b0026a41186a4200370300200141b0026a41106a220a4200370300200141b0026a41086a22024200370300200142003703b002200541c4fbc400ad4280808080e000841003220041086a2900003703002001200029000037038002200010232002200529030037030020012001290380023703b002200541a0cec000ad4280808080b002841003220041086a290000370300200120002900003703800220001023200a2001290380022206370300200420022903003703002003200637030020092005290300370300200120063703d001200120012903b002370360200141206a200141e0006a4120108f01200141106a2001280224410020012802201b22044180e59af70020044180e59af7004b22051b4180e59af700200420051b6b2205ad220642002006420010e104200642a8c30180211242ffffffffffffffffff00428080808080808080807f20051b2001290310220620012903182006423f87521b42808090bbbad6adf00d7f210820114200200f1b210602400240200441ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f2006201220087d22127d22114200531b20112006427f5522042012427f554720042011427f5547711b22064280ec94a37c20064280ec94a37c551b21060c010b42ffffffffffffffffff00428080808080808080807f2006201220087c22127c22114200531b20112006427f5522042012427f554620042011427f5547711b21060b200141e0006a41186a22024200370300200141e0006a41106a22054200370300200141e0006a41086a220442003703002001420037036020014180026a41086a220941d5fbc400ad42808080808001841003220041086a29000037030020012000290000370380022000102320042009290300370300200120012903800222113703b00220012011370360200941e8bbc300ad42808080809002841003220041086a290000370300200120002900003703800220001023200141b0026a41086a20092903002211370300200120012903800222123703b00220032012370000200341086a2011370000200141d0026a41086a22002004290300370300200141d0026a41106a220f2005290300370300200141d0026a41186a220a2002290300370300200120012903603703d0022001200637036020074280808080800484221120104280808080800184100220024200370300200542003703002004420037030020014200370360200141f0016a41086a220341be99c600ad42808080809001841003220941086a290000370300200120092900003703f0012009102320042003290300370300200120012903f001370360200341b39fc600ad42808080809001841003220941086a290000370300200120092900003703f00120091023200520012903f001220637030020002004290300370300200f2006370300200a2003290300370300200120063703b002200120012903603703d002200141d0026a109b02220441ff01714102460d06201110052004410171450d06200141e0006a41186a4200370300200141e0006a41106a22094200370300200141e0006a41086a2203420037030020014200370360200141f0016a41086a220441cafbc400ad4280808080c000841003220541086a290000370300200120052900003703f0012005102320032004290300370300200120012903f00122063703d0012001200637036020044188d3c300ad4280808080b001841003220541086a290000370300200120052900003703f00120051023200920012903f0012206370300200141d0026a41086a2003290300370300200141d0026a41106a2006370300200141d0026a41186a20042903003703002001200637038002200120012903603703d002200141e0006a200141d0026a109d02024020012d006022044102460d0020074280808080800484100520014190026a41086a200141e9006a29000037030020014190026a41106a200141f1006a29000037030020014190026a41186a200141f9006a29000037030020012001290061370390020240200441037122044103460d0020040e03010001010b200141b0026a41186a20014190026a41186a290300370300200141b0026a41106a20014190026a41106a290300370300200141b0026a41086a20014190026a41086a29030037030020012001290390023703b002200141e0006a41186a22024200370300200141e0006a41106a22004200370300200141e0006a41086a2203420037030020014200370360200141f0016a41086a220441cafbc400ad4280808080c000841003220541086a290000370300200120052900003703f0012005102320032004290300370300200120012903f00122063703d0012001200637036020044184d2c300ad4280808080c001841003220541086a290000370300200120052900003703f0012005102320014180026a41086a20042903002206370300200120012903f00122113703800220092011370000200941086a2006370000200141d0026a41086a2003290300370300200141d0026a41106a2000290300370300200141d0026a41186a2002290300370300200120012903603703d002200141086a200141d0026a4120108f01200141e0006a200128020c410020012802081b2205109e02200141d0026a200128026022032001280268109f0220012902d402420020012802d00222041b210602402001280264450d00200310230b2004410120041b21030240024020064220882211a72204418002490d00412010212204450d0a200420012903b002370000200441186a200141b0026a41186a290300370000200441106a200141b0026a41106a290300370000200441086a200141b0026a41086a290300370000200141d0026a200541016a2200109e0220012802d002210520013502d8022111200141e0006a2004410110a00220114220862005ad84200135026842208620012802602202ad84100202402001280264450d00200210230b024020012802d402450d00200510230b20041023200141e0006a41186a220f4200370300200141e0006a41106a220a4200370300200141e0006a41086a2205420037030020014200370360200141f0016a41086a220441cafbc400ad4280808080c000841003220241086a290000370300200120022900003703f0012002102320052004290300370300200120012903f00122113703d0012001201137036020044184d2c300ad4280808080c001841003220241086a290000370300200120022900003703f0012002102320014180026a41086a20042903002211370300200120012903f00122123703800220092012370000200941086a2011370000200141d0026a41086a2005290300370300200141d0026a41106a200a290300370300200141d0026a41186a200f290300370300200120012903603703d002200120003602602007428080808080048420104280808080c0008410020c010b200141e0006a41186a2202200141b0026a41186a290300370300200141e0006a41106a2200200141b0026a41106a290300370300200141e0006a41086a220f200141b0026a41086a290300370300200120012903b002370360024020042006a7470d00200441016a22092004490d0c2011a7220b410174220a20092009200a491b220941ffffff3f712009470d0c2009410574220a4100480d0c0240024020040d00200a102121030c010b2003200b410574200a102521030b2003450d0b2006422088a721042009ad21060b200320044105746a22092001290360370000200941186a2002290300370000200941106a2000290300370000200941086a200f290300370000200141d0026a2005109e0220012802d002210520013502d8022110200141e0006a2003200441016a10a00220104220862005ad84200135026842208620012802602204ad84100202402001280264450d00200410230b024020012802d402450d00200510230b200642ffffffff0f8321060b2006a7450d00200310230b200141f0026a24000f0b200541041030000b200541041030000b4180a1c6002004200c102d000b4180a1c6002004200c102d000b200041011030000b200f41011030000b41d0cdc400102b000b412041011030000b200a41011030000b102a000bde0d03047f017e027f230041106b2202240020024100360208200242013703000240024002400240024002400240024002400240024002400240024002402001280200220341044b0d000240024002400240024020030e050001020304000b410110212203450d05200242818080801037020420022003360200200341013a0000200128020421042001410c6a28020022032002105c02402003450d002004200341286c6a21050340200420021071200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d15200741017422032008200320084b1b22034100480d150240024020070d002003102121070c010b200228020020072003102521070b2007450d092002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141106a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d13200441017422032008200320084b1b22034100480d130240024020040d002003102121040c010b200228020020042003102521040b2004450d082002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c040b410110212203450d07200242818080801037020420022003360200200341023a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422052008200520084b1b22084100480d120240024020040d002008102121040c010b200228020020042008102521040b2004450d0920022008360204200220043602000b2002200341046a360208200420036a200736000020012802082104200141106a28020022032002105c02402003450d002004200341286c6a21050340200420021071200441206a29030021060240024020022802042207200228020822036b4108490d00200228020021070c010b200341086a22082003490d14200741017422032008200320084b1b22034100480d140240024020070d002003102121070c010b200228020020072003102521070b2007450d0c2002200336020420022007360200200228020821030b2002200341086a360208200720036a20063700002005200441286a2204470d000b0b200141146a28020021070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d12200441017422032008200320084b1b22034100480d120240024020040d002003102121040c010b200228020020042003102521040b2004450d0b2002200336020420022004360200200228020821030b2002200341046a360208200420036a20073600000c030b410110212203450d0a200242818080801037020420022003360200200341033a0000200141086a29030021060240024020022802042207200228020822036b4108490d00200341086a2104200228020021070c010b200341086a22042003490d11200741017422082004200820044b1b22084100480d110240024020070d002008102121070c010b200228020020072008102521070b2007450d0c20022008360204200220073602000b20022004360208200720036a20063700000c020b410110212203450d0b200242818080801037020420022003360200200341043a0000200128020421070240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22082003490d10200441017422012008200120084b1b22084100480d100240024020040d002008102121040c010b200228020020042008102521040b2004450d0d20022008360204200220043602000b2002200341046a360208200420036a20073600000c010b410110212203450d0c200242818080801037020420022003360200200341053a0000200128020421080240024020022802042207200228020822036b4104490d00200341046a2104200228020021070c010b200341046a22042003490d0f200741017422012004200120044b1b22014100480d0f0240024020070d002001102121070c010b200228020020072001102521070b2007450d0e20022001360204200220073602000b20022004360208200720036a20083600000b20002002290300370200200041086a200241086a280200360200200241106a24000f0b410141011030000b200341011030000b200341011030000b410141011030000b200841011030000b200341011030000b200341011030000b410141011030000b200841011030000b410141011030000b200841011030000b410141011030000b200141011030000b102a000bd60201037f0240024002400240024002400240024002400240024002400240024020012802000e0400010203000b41012102410110212201450d05200141003a0000410121030c040b410110212202450d05200241013a00002001280204210320024101410510252202450d062002200336000120012802082104410a210320024105410a10252201450d07200120043600050c020b41012102410110212201450d07200141023a0000410121030c020b410110212202450d07200241033a00002001280204210320024101410510252202450d082002200336000120012802082104410a210320024105410a10252201450d09200120043600050b410921020b2000200236020820002003360204200020013602000f0b410141011030000b410141011030000b410541011030000b410a41011030000b410141011030000b410141011030000b410541011030000b410a41011030000b950201047f230041d0006b220124002001412036020420012000360200200141086a2000ad4280808080800484100410900102400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410c36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c20014198c2c3003602382001200141286a360248200141346a41b8a3c500200141386a102e1a200135022042208620013502188410080240200128021c450d00200128021810230b410221000b2003450d00200210230b200141d0006a240020000b990204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001ad4280808080800484100410900102400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024198c2c3003602382002200241286a360248200241346a41b8a3c500200241386a102e1a200235022042208620023502188410080240200228021c450d00200228021810230b420021030b2004450d00200110230b2000200537030820002003370300200241d0006a24000bd80402067f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022030d00200041023a00000c010b2002280214210402400240200241186a2802002205450d0020032d0000220641014b0d00410021010240024020060e020100010b41002101200241003a0068200341016a21072005417f6a21060340024020062001470d00200141ff0171450d03200241003a00680c030b200241c8006a20016a200720016a2d00003a00002002200141016a22053a00682005210120054120470d000b200241206a41186a200241c8006a41186a290300370300200241206a41106a200241c8006a41106a290300370300200241206a41086a200241c8006a41086a29030037030020022002290348370320410121010b200241c8006a41186a200241206a41186a2903002208370300200241c8006a41106a200241206a41106a2903002209370300200241c8006a41086a200241206a41086a290300220a37030020022002290320220b370348200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c010b20024100360228200242013703202002410c3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c20024198c2c3003602482002200241c0006a360258200241ec006a41b8a3c500200241c8006a102e1a2002350228422086200235022084100802402002280224450d00200228022010230b410221010b200020013a00002004450d00200310230b200241f0006a24000bd20301067f230041f0006b22022400200241d0006a41086a220341cafbc400ad4280808080c000841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341d8d2c300ad42808080809002841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c000102122030d0041c00041011030000b200320022903083700002003200229031837001020032002290328370020200042c0808080800837020420002003360200200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241f0006a24000bef06010c7f23004190016b220324002003200236021420032001360210200341186a2002ad4220862001ad84100410900102400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036023c20032004360238200341086a200341386a106e0240024002400240024020032802080d0002400240200328023c22014160712202417f4c0d00200328020c210602400240200141057622070d00410121080c010b200210212208450d020b02402006450d004100210903402001210a200341003a0088012009220b41016a2109410021010240024002400340200a2001460d01200341e8006a20016a200328023822022d00003a00002003200241016a3602382003200141016a22023a0088012002210120024120470d000b200341c8006a41186a220c200341e8006a41186a290300370300200341c8006a41106a220d200341e8006a41106a290300370300200341c8006a41086a220e200341e8006a41086a290300370300200320032903683703482007200b470d020240200b41017422012009200120094b1b220741ffffff3f712007470d002007410574220141004e0d020b102a000b2003410036023c0240200141ff0171450d00200341003a0088010b200341003602282007450d08200810230c080b02400240200b0d002001102121080c010b2008200b4105742001102521080b2008450d060b200a20026b21012008200b4105746a220b2003290348370000200b41186a200c290300370000200b41106a200d290300370000200b41086a200e29030037000020092006470d000b200341306a20063602002003200736022c200320083602282003200a20026b36023c0c060b200341306a20063602002003200736022c2003200836022820080d050c040b102f000b200241011030000b200341003602280c010b200141011030000b20034100360250200342013703482003410c36022c2003200341106a3602282003200341c8006a360244200341fc006a41013602002003420137026c20034198c2c3003602682003200341286a360278200341c4006a41b8a3c500200341e8006a102e1a2003350250422086200335024884100820004100360200200328024c450d01200328024810230c010b20002003290328370200200041086a200341286a41086a2802003602000b2005450d00200410230b20034190016a24000ba72701057f230041106b22032400200341003602082003420137030020022003105c02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402002450d00200120024105746a2104034020012d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141016a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0420032007360204200320063602000b2003200241016a360208200620026a20053a0000200141026a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0520032007360204200320063602000b2003200241016a360208200620026a20053a0000200141036a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0620032007360204200320063602000b2003200241016a360208200620026a20053a0000200141046a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0720032007360204200320063602000b2003200241016a360208200620026a20053a0000200141056a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0820032007360204200320063602000b2003200241016a360208200620026a20053a0000200141066a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0920032007360204200320063602000b2003200241016a360208200620026a20053a0000200141076a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0a20032007360204200320063602000b2003200241016a360208200620026a20053a0000200141086a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0b20032007360204200320063602000b2003200241016a360208200620026a20053a0000200141096a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0c20032007360204200320063602000b2003200241016a360208200620026a20053a00002001410a6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0d20032007360204200320063602000b2003200241016a360208200620026a20053a00002001410b6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0e20032007360204200320063602000b2003200241016a360208200620026a20053a00002001410c6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d0f20032007360204200320063602000b2003200241016a360208200620026a20053a00002001410d6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1020032007360204200320063602000b2003200241016a360208200620026a20053a00002001410e6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1120032007360204200320063602000b2003200241016a360208200620026a20053a00002001410f6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1220032007360204200320063602000b2003200241016a360208200620026a20053a0000200141106a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1320032007360204200320063602000b2003200241016a360208200620026a20053a0000200141116a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1420032007360204200320063602000b2003200241016a360208200620026a20053a0000200141126a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1520032007360204200320063602000b2003200241016a360208200620026a20053a0000200141136a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1620032007360204200320063602000b2003200241016a360208200620026a20053a0000200141146a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1720032007360204200320063602000b2003200241016a360208200620026a20053a0000200141156a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1820032007360204200320063602000b2003200241016a360208200620026a20053a0000200141166a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1920032007360204200320063602000b2003200241016a360208200620026a20053a0000200141176a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1a20032007360204200320063602000b2003200241016a360208200620026a20053a0000200141186a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1b20032007360204200320063602000b2003200241016a360208200620026a20053a0000200141196a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1c20032007360204200320063602000b2003200241016a360208200620026a20053a00002001411a6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1d20032007360204200320063602000b2003200241016a360208200620026a20053a00002001411b6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1e20032007360204200320063602000b2003200241016a360208200620026a20053a00002001411c6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d1f20032007360204200320063602000b2003200241016a360208200620026a20053a00002001411d6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d2020032007360204200320063602000b2003200241016a360208200620026a20053a00002001411e6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d2120032007360204200320063602000b2003200241016a360208200620026a20053a00002001411f6a2d0000210502400240200328020420032802082202460d00200328020021060c010b200241016a22062002490d23200241017422072006200720064b1b22074100480d230240024020020d002007102121060c010b200328020020022007102521060b2006450d2220032007360204200320063602000b2003200241016a360208200620026a20053a0000200141206a22012004470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b102a000b130020004103360204200041b8e0c1003602000b3400200041e3e0c40036020420004100360200200041146a4101360200200041106a4190e7c100360200200041086a42043702000b4001017f230041206b22022400200241186a4200370300200241106a4200370300200241086a4200370300200242003703002000200210a402200241206a24000bf60301027f20012d00002102024002400240024002400240410110212203450d00200320023a000020012d0001210220034101410210252203450d01200320023a000120012d0002210220034102410410252203450d02200320023a0002200320012d00033a000320012d0004210220034104410810252203450d03200320023a0004200320012d00053a0005200320012d00063a0006200320012d00073a000720012d0008210220034108411010252203450d04200320023a0008200320012d00093a0009200320012d000a3a000a200320012d000b3a000b200320012d000c3a000c200320012d000d3a000d200320012d000e3a000e200320012d000f3a000f20012d0010210220034110412010252203450d05200320023a0010200320012d00113a0011200320012d00123a0012200320012d00133a0013200320012d00143a0014200320012d00153a0015200320012d00163a0016200320012d00173a0017200320012d00183a0018200320012d00193a0019200320012d001a3a001a200320012d001b3a001b200320012d001c3a001c200320012d001d3a001d200320012d001e3a001e200320012d001f3a001f200042a08080808004370204200020033602000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000bfc1804097f017e097f017e230041a0016b220224004104210302400240024002400240024002400240024020012802004117460d00410021040c010b41002104200141046a22052d00004105470d00200141c8006a280200210620024190016a41086a22044191fdc400ad42808080809001841003220341086a290000370300200220032900003703900120031023200241306a41086a22072004290300370300200220022903900137033020044198e9c100ad4280808080d000841003220341086a290000370300200220032900003703900120031023200241c0006a41086a22032004290300370300200220022903900137034020022006360210200241f0006a41186a2206200241106aad4280808080c000841001220441186a290000370300200241f0006a41106a2208200441106a290000370300200241f0006a41086a2209200441086a2900003703002002200429000037037020041023200241d0006a41186a220a2006290300370300200241d0006a41106a22062008290300370300200241d0006a41086a22082009290300370300200220022903703703500240024002400240024041c00010212204450d00200420022903303700002004200229034037001020042002290350370020200441086a2007290300370000200441186a2003290300370000200441286a2008290300370000200441306a2006290300370000200441386a200a290300370000200441c00010a60221032004102302400240200341ff017122044102460d0020044101710d010b200041800e3b0001200041013a0000200041036a41013a00000c0d0b200241f0006a41186a4200370300200241f0006a41106a22074200370300200241f0006a41086a220342003703002002420037037020024190016a41086a22044191fdc400ad42808080809001841003220641086a290000370300200220062900003703900120061023200320042903003703002002200229039001370370200441a9e0c100ad4280808080f001841003220641086a2900003703002002200629000037039001200610232007200229039001220b370300200241d0006a41086a2003290300370300200241d0006a41106a200b370300200241d0006a41186a20042903003703002002200b37031020022002290370370350200241c0006a200241d0006a10910202400240024002402002280240220a0d004100210c2002410036020c0c010b2002200241c0006a41086a280200220c36020c2002280244210d02402002290244220b422088a72204450d002004417f6a210e0c030b0240200ba7450d004100210c0c020b200d0d010b410c1021220a450d034101210d0b200a200c410c6c6a22044100360208200442043702002002200228020c220e41016a220c36020c200c200e490d030b200241d0006a41186a4200370300200241d0006a41106a220f4200370300200241d0006a41086a220342003703002002420037035020024190016a41086a22044191fdc400ad42808080809001841003220641086a290000370300200220062900003703900120061023200320042903003703002002200229039001220b3703302002200b3703502004419de9c100ad4280808080b001841003220641086a290000370300200220062900003703900120061023200f200229039001220b370300200241f0006a41086a2003290300370300200241f0006a41106a200b370300200241f0006a41186a20042903003703002002200b370340200220022903503703702002200241f0006a4120108f0102400240200a200e410c6c6a221041086a221128020022042002280204410020022802001b4f0d00201028020021090240200441014b0d00024020040e020300030b20012802482108410021030c060b2001280248210841002103034020032004410176220620036a220720082009200741246c6a280200491b2103200420066b220441014b0d000c060b0b200041800c3b0001200041013a0000200041036a41003a00000c0c0b20012802482108410021060c040b41c00041011030000b410c41041030000b41a4dfc100200e4100102d000b024020082009200341246c6a2802002204460d002003200820044b6a21060c010b200041800e3b0001200041013a0000200041036a41003a00000c070b200241f0006a20081080020240200228027022120d00200041800e3b0001200041013a0000200041036a41013a00000c070b20022802742113200241f0006a41186a2207200241f0006a41086a22033502004220862012ad841001220441186a290000370300200241f0006a41106a2208200441106a2900003703002003200441086a2900003703002002200429000037037020041023200241106a41186a2007290300370300200241106a41106a2008290300370300200241106a41086a2003290300370300200220022903703703100240200241106a200541216a2214460d00200241106a2014412010de04450d0020004180063b0001200041013a0000200041036a41003a00002013450d07201210230c070b2007200541196a2900003703002008200541116a2900003703002003200541096a29000037030020022005290001370370201128020022042006490d012001280248210302402004200a200e410c6c6a41046a2201280200470d00200441016a22072004490d05200441017422082007200820074b1b2208ad42247e220b422088a70d05200ba722094100480d050240024020040d002009102121070c010b2010280200200441246c2009102521070b2007450d0320012008360200201020073602000b2010280200200641246c6a220141246a2001200420066b41246c10dd041a20012003360200200120022903703702042001410c6a200241f0006a41086a2206290300370200200141146a200241f0006a41106a22072903003702002001411c6a200241f0006a41186a22082903003702002011200441016a360200200228020c210c200241d0006a41186a22094200370300200241d0006a41106a22054200370300200241d0006a41086a220442003703002002420037035020024190016a41086a22014191fdc400ad42808080809001841003220341086a290000370300200220032900003703900120031023200420012903003703002002200229039001220b3703302002200b370350200141a9e0c100ad4280808080f001841003220341086a290000370300200220032900003703900120031023200241c0006a41086a2001290300220b37030020022002290390012215370340200f2015370000200f41086a200b370000200620042903003703002007200529030037030020082009290300370300200220022903503703702002410036025820024201370350200c200241d0006a105c0240200c450d00200a200c410c6c6a2105200a210903402009280200210420092802082201200241d0006a105c02402001450d002004200141246c6a21080340200428020021060240024020022802542203200228025822016b4104490d00200228025021030c010b200141046a22072001490d09200341017422012007200120074b1b22014100480d090240024020030d002001102121030c010b200228025020032001102521030b2003450d082002200136025420022003360250200228025821010b2002200141046a360258200320016a2006360000200441046a200241d0006a1071200441246a22042008470d000b0b2009410c6a22092005470d000b0b20022802542101200241f0006aad4280808080800484200235025842208620022802502204ad84100202402001450d00200410230b0240200c450d00200c410c6c2104200a210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b0240200d450d00200a10230b410c10212203450d0520024100360278200242013703702002200241f0006a36029001201420024190016a106b200241d0006a41086a2002280278220136020020022002290370220b370350200341086a20013602002003200b37020002402013450d00201210230b410121040b200041003a0000200041306a41013a00002000412c6a2004360200200041286a2004360200200041246a2003360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a4200370300200041316a2002280070360000200041346a200241f3006a2800003600000c060b4180bbc000102b000b200941041030000b200141011030000b102a000b410c41041030000b0240200c450d00200c410c6c2104200a210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200d450d00200a10230b200241a0016a24000b940201037f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad84100410900102400240200228020822010d00410221000c010b200228020c210302400240200241106a280200450d0020012d0000220441014b0d0041002100024020040e020200020b410121000c010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024198c2c3003602382002200241286a360248200241346a41b8a3c500200241386a102e1a200235022042208620023502188410080240200228021c450d00200228021810230b410221000b2003450d00200110230b200241d0006a240020000b130020004101360204200041a8e9c1003602000b340020004188e0c10036020420004100360200200041146a4107360200200041106a41a8eac100360200200041086a420f3702000b3001017f02404108102122020d00410841011030000b20004288808080800137020420002002360200200242003700000b2201017f230041106b220224002002410036020020002002109a02200241106a24000be60301077f230041f0006b22022400200241d0006a41086a22034188e0c100ad4280808080f001841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341a8f1c100ad4280808080c001841003220441086a2900003703002002200429000037035020041023200241186a41086a220620032903003703002002200229035037031820022000370348200241d0006a41186a2207200241c8006aad42808080808001841001220441186a290000370300200241d0006a41106a2208200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042007290300370300200241286a41106a22072008290300370300200241286a41086a2208200329030037030020022002290350370328024041c000102122030d0041c00041011030000b200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2008290300370000200341306a2007290300370000200341386a2004290300370000200220013602502003ad4280808080800884200241d0006aad4280808080c00084100220031023200241f0006a24000bba1305067f017e027f037e057f23004180016b22042400200441c0006a41186a22054200370300200441c0006a41106a22064200370300200441c0006a41086a2207420037030020044200370340200441f0006a41086a22084188e0c100ad4280808080f001841003220941086a29000037030020042009290000370370200910232007200829030037030020042004290370220a3703602004200a37034020084197e0c100ad4280808080d001841003220941086a290000370300200420092900003703702009102320062004290370220a370300200441206a41086a22092007290300370300200441206a41106a220b200a370300200441206a41186a220c20082903003703002004200a37036020042004290340370320200441186a200441206a412041014100410010b80102400240024020042802184101460d0020054200370300200642003703002007420037030020044200370340200841c4fbc400ad4280808080e000841003220541086a29000037030020042005290000370370200510232007200829030037030020042004290370370340200841f9bcc000ad4280808080e000841003220541086a290000370300200420052900003703702005102320062004290370220a37030020092007290300370300200b200a370300200c20082903003703002004200a37036020042004290340370320200441106a200441206a4120108f012004280214410020042802101b2109024020024101460d00200441206a210c0c020b200441c0006a41186a22054200370300200441c0006a41106a220b4200370300200441c0006a41086a2207420037030020044200370340200441f0006a41086a22084188e0c100ad4280808080f00184220d1003220c41086a2900003703002004200c290000370370200c10232007200829030037030020042004290370220a3703602004200a370340200841a0f0c100ad4280808080a00184220e1003220c41086a2900003703002004200c290000370370200c1023200441e0006a41086a220c2008290300220a37030020042004290370220f3703602006200f370000200641086a2210200a370000200441206a41086a22112007290300370300200441206a41106a2212200b290300370300200441206a41186a2213200529030037030020042004290340370320200441086a200441206a4120108f01024002402004280208450d00200428020c20094b0d010b20054200370300200b420037030020074200370300200442003703402008200d1003221441086a29000037030020042014290000370370201410232007200829030037030020042004290370220a3703602004200a3703402008200e1003221441086a2900003703002004201429000037037020141023200c2008290300220a37030020042004290370220f3703602006200f3700002010200a370000201120072903003703002012200b29030037030020132005290300370300200420042903403703202004200920014101746a360240200441206aad4280808080800484200441c0006aad4280808080c000841002200441206a210c0c020b200041046a280200450d02200028020010230c020b200041046a280200450d01200028020010230c010b20002802082107200028020421102000280200210b200441c0006a41186a22114200370300200441c0006a41106a22124200370300200441c0006a41086a2200420037030020044200370340200441f0006a41086a22084188e0c100ad4280808080f001841003220541086a29000037030020042005290000370370200510232000200829030037030020042004290370220a3703602004200a37034020084197e0c100ad4280808080d001841003220541086a2900003703002004200529000037037020051023200441e0006a41086a2008290300220a37030020042004290370220f3703602006200f370000200641086a200a370000200441206a41086a2000290300370300200441206a41106a2012290300370300200441206a41186a20112903003703002004200429034037032020044100360248200442013703400240024002400240024002400240410410212208450d002004410436024420042004280248220641046a36024820042008360240200820066a20093600000240024020042802442206200428024822086b4104490d00200428024021060c010b200841046a22002008490d07200641017422082000200820004b1b22084100480d070240024020060d002008102121060c010b200428024020062008102521060b2006450d022004200836024420042006360240200428024821080b2004200841046a360248200620086a20013600002007200441c0006a105c02402007450d00200b200741286c6a2109200b210703402007200441c0006a1071200741206a290300210a0240024020042802442206200428024822086b4108490d00200428024021060c010b200841086a22002008490d09200641017422082000200820004b1b22084100480d090240024020060d002008102121060c010b200428024020062008102521060b2006450d052004200836024420042006360240200428024821080b2004200841086a360248200620086a200a3700002009200741286a2207470d000b0b20042802442107200428024821080240024020024101460d000240024020072008460d00200428024021070c010b200841016a22072008490d09200841017422062007200620074b1b22064100480d090240024020080d002006102121070c010b200428024020082006102521070b2007450d062004200636024420042007360240200428024821080b2004200841016a360248200720086a41003a00000c010b0240024020072008460d00200428024021070c010b200841016a22072008490d08200841017422062007200620074b1b22064100480d080240024020080d002006102121070c010b200428024020082006102521070b2007450d062004200636024420042007360240200428024821080b2004200841016a360248200720086a41013a00000240024020042802442207200428024822086b4104490d00200428024021070c010b200841046a22062008490d08200741017422082006200820064b1b22084100480d080240024020070d002008102121070c010b200428024020072008102521070b2007450d072004200836024420042007360240200428024821080b2004200841046a360248200720086a20033600000b20042802442108200cad4280808080800484200435024842208620042802402207ad84100202402008450d00200710230b2010450d07200b10230c070b410441011030000b200841011030000b200841011030000b200641011030000b200641011030000b200841011030000b102a000b20044180016a24000b02000b290020004101360204200041086a200128020420012802006b41c0016e2201360200200020013602000bf40101047f230041d0006b21020240200128020022032001280204470d00200041003602000f0b2001200341c0016a3602002002200341c2006a29000037012a2002200341ca006a290000370132200241106a220120022903303703002002200341d2006a29000037013a200241186a220420022903383703002002200341da006a2800003601422002200341de006a2f00003b0146200241206a220520022903403703002002200341c0006a2f00003b01282002200229032837030820002003360200200020022903083700042000410c6a2001290300370000200041146a20042903003700002000411c6a20052903003700000b8406020e7f047e230041b0016b22032400024002402001280200220420012802042205460d002001200441c0016a22063602002003200429004237018a012003200429004a37019201200341e8006a41086a22072003290390013703002003200429005237019a01200341e8006a41106a22082003290398013703002003200428005a3601a201200320042f005e3b01a601200341e8006a41186a220920032903a001370300200320042f00403b0188012003200329038801370368200341c8006a41186a220a2009290300370300200341c8006a41106a220b2008290300370300200341c8006a41086a220c200729030037030020032003290368370348200341286a41186a220d200a290300370300200341286a41106a220e200b290300370300200341286a41086a220f200c29030037030020032003290348370328200541c07e6a211002400340200341086a41186a200d2903002211370300200341086a41106a200e2903002212370300200341086a41086a200f290300221337030020032003290328221437030820034188016a41186a201137030020034188016a41106a201237030020034188016a41086a201337030020032014370388012002450d0120102004460d022001200641c0016a22053602002003200629004237018a012003200629004a3701920120072003290390013703002003200629005237019a0120082003290398013703002003200628005a3601a201200320062f005e3b01a601200920032903a001370300200320062f00403b0188012003200329038801370368200a2009290300370300200b2008290300370300200c200729030037030020032003290368370348200d200a290300370300200e200b290300370300200f200c29030037030020032003290348370328200441c0016a21042002417f6a2102200521060c000b0b2000200436020020002003290388013702042000410c6a20034190016a290300370200200041146a20034198016a2903003702002000411c6a200341a0016a2903003702000c010b200041003602000b200341b0016a24000bc60d01057f024002402000280200220141184b0d0002400240024002400240024002400240024002400240024002400240024020010e1900101010100102100310040510060708090a10100b100c0d0e000b0240200041086a280200220141064b0d00024002400240024020010e0714140014010203140b200041106a280200450d132000410c6a28020010230f0b200041106a280200450d122000410c6a28020010230f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200241686a22020d000b0b200041106a280200450d11200028020c10230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a280200450d10200028020c10230f0b200041106a280200450d0f2000410c6a28020010230f0b02402000410c6a2802002201450d0020002802042203200141f0006c6a2104034002402003410c6a2802002202450d0020032802042101200241246c210203400240024020012d0000220541034b0d0002400240024020050e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012002415c6a22020d000b0b200341f0006a21010240200341086a280200450d00200328020410230b2001210320012004470d000b0b200041086a280200450d0e200028020410230f0b0240200041086a2d00002201410f4b0d00410120017441bfbf03710d0e024020014106470d00200041106a280200450d0f2000410c6a28020010230f0b200041106a280200450d0e2000410c6a28020010230f0b200041146a280200450d0d200041106a28020010230f0b200041086a280200450d0c200028020410230f0b200041086a280200450d0b200028020410230f0b02402000410c6a280200450d00200041086a28020010230b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041186a280200450d0a200028021410230f0b200041086a2d0000417f6a220141074b0d09024002400240024020010e08000d0d0d0d010203000b2000410c6a220128020010b102200128020010230f0b2000410c6a220128020010b102200128020010230f0b2000410c6a220128020010b102200128020010230f0b2000410c6a220128020010b102200128020010230f0b20002d0004417f6a220141024b0d0802400240024020010e03000102000b2000410c6a280200450d0a200041086a28020010230f0b200041086a220128020010b102200128020010230f0b2000410c6a220128020010b102200128020010230f0b20002d0004417f6a220141024b0d0702400240024020010e03000102000b2000410c6a280200450d09200041086a28020010230f0b200041086a220128020010b102200128020010230f0b2000410c6a220128020010b102200128020010230f0b200041086a2802004101470d06200041106a280200450d062000410c6a28020010230f0b20002d00044104490d052000410c6a280200450d05200041086a28020010230f0b02402000410c6a2802002202450d0020002802042101200241d0016c210203402001106c200141d0016a2101200241b07e6a22020d000b0b200041086a280200450d04200028020410230f0b200041086a2d000022014105490d03024020014105470d00200041386a280200450d04200041346a28020010230f0b200041146a280200450d03200041106a28020010230f0b20002d0004417f6a220141034b0d020240024020010e0400040401000b0240200041106a280200450d002000410c6a28020010230b2000411c6a280200450d03200041186a28020010230c030b02402000410c6a280200450d00200041086a28020010230b200041186a280200450d02200041146a28020010230f0b02402000280204220141024b0d00024020010e03030003030b200041086a220128020010b102200128020010230f0b2000412c6a220128020010b102200128020010230f0b02402000280204220141034b0d00024020010e0402000202020b2000410c6a280200450d01200041086a28020010230f0b200041306a280200450d002000412c6a28020010230f0b0b9e1f06057f017e047f017e037f017e230041b0016b22042400200441d0006a41086a22054191fdc400ad42808080809001841003220641086a2900003703002004200629000037035020061023200441186a41086a220720052903003703002004200429035037031820054198e9c100ad4280808080d000841003220641086a2900003703002004200629000037035020061023200441e0006a41086a22062005290300370300200420042903503703602004200036029001200441f0006a41186a220820044190016aad22094280808080c000841001220541186a290000370300200441f0006a41106a220a200541106a290000370300200441f0006a41086a220b200541086a2900003703002004200529000037037020051023200441286a41186a220c2008290300370300200441286a41106a2208200a290300370300200441286a41086a220a200b29030037030020042004290370370328024002400240024002400240024002400240024002400240024002400240024002400240024041c00010212205450d00200520042903183700002005200429036037001020052004290328370020200541086a2007290300370000200541186a2006290300370000200541286a200a290300370000200541306a2008290300370000200541386a200c290300370000200441106a200541c00041014100410010b801200428021021062005102341c7fbc100210d20064101460d1120010d0820044190016a41186a420037030020044190016a41106a2208420037030020044190016a41086a220642003703002004420037039001200441d0006a41086a22054191fdc400ad42808080809001841003220741086a290000370300200420072900003703502007102320062005290300370300200420042903503703900120054182fdc400ad4280808080a001841003220741086a290000370300200420072900003703502007102320082004290350220e370300200441f0006a41086a2006290300370300200441f0006a41106a200e370300200441f0006a41186a20052903003703002004200e3703282004200429039001370370200441e0006a200441f0006a4120108b0202402004280260220f0d004100210a2004410036024c4104210f410021054100210b0c040b20042004280264220b36024c2004290264220ea72110410021050240200e422088a7220a41014b0d00200a0e020302030b200a2106034020052006410176220720056a2208200f20084102746a28020020004b1b2105200620076b220641014b0d000c020b0b41c00041011030000b41c7fbc100210d200f20054102746a28020022062000460d05200520062000496a2205200a4b0d020b200a2010470d03200b200a470d030b200b41016a2206200b490d0c200b41017422072006200720064b1b220641ffffffff03712006470d0c2006410274220741004e0d010c0c0b4180bbc000102b000b02400240200b0d0020071021210f0c010b200f200b41027420071025210f0b200f450d032004200636024c0b200f20054102746a220641046a2006200a20056b41027410dd041a20062000360200200a41016a210a4100210d200428024c21100b200441286a41186a4200370300200441286a41106a22084200370300200441286a41086a2206420037030020044200370328200441d0006a41086a22054191fdc400ad42808080809001841003220741086a29000037030020042007290000370350200710232006200529030037030020042004290350220e3703182004200e37032820054182fdc400ad4280808080a001841003220741086a290000370300200420072900003703502007102320082004290350220e37030020044190016a41086a200629030037030020044190016a41106a200e37030020044190016a41186a20052903003703002004200e370360200420042903283703900102400240200f0d002009428080808080048410050c010b2004410036027820044201370370200a200441f0006a105c02400240200a0d002004280278210b2004280274210a200428027021060c010b200a410274210c4100200428027822056b21072004280274210a200f210803402008280200211102400240200a20076a4104490d00200428027021060c010b200541046a22062005490d0c200a410174220b2006200b20064b1b220b4100480d0c02400240200a0d00200b102121060c010b2004280270200a200b102521060b2006450d062004200b36027420042006360270200b210a0b200841046a21082004200541046a220b360278200620056a20113600002007417c6a2107200b2105200c417c6a220c0d000b0b20094280808080800484200bad4220862006ad8410020240200a450d00200610230b2010450d00200f10230b200d0d090b2003280208210a2003280204210b200328020021072002280208210c2002280204211120022802002108200441d0006a41086a22054182fdc400ad4280808080a001841003220641086a2900003703002004200629000037035020061023200441e0006a41086a2202200529030037030020042004290350370360200541e8bdc100ad4280808080c000841003220641086a2900003703002004200629000037035020061023200441286a41086a220620052903003703002004200429035037032820042000360250200441f0006a41186a2203200441d0006aad220e4280808080c000841001220541186a290000370300200441f0006a41106a220f200541106a290000370300200441f0006a41086a220d200541086a290000370300200420052900003703702005102320044190016a41186a2210200329030037030020044190016a41106a2203200f29030037030020044190016a41086a220f200d290300370300200420042903703703900141c00010212205450d0220052004290360370000200520042903283700102005200429039001370020200541086a2002290300370000200541186a2006290300370000200541286a200f290300370000200541306a2003290300370000200541386a2010290300370000200441c0003602940120042005360290012008200c20044190016a10c5012005102302402011450d00200810230b200441d0006a41086a22054182fdc400ad4280808080a001841003220641086a2900003703002004200629000037035020061023200441e0006a41086a2208200529030037030020042004290350370360200541ecbdc100ad4280808080d000841003220641086a2900003703002004200629000037035020061023200441286a41086a220620052903003703002004200429035037032820042000360250200441f0006a41186a220c200e4280808080c000841001220541186a290000370300200441f0006a41106a2211200541106a290000370300200441f0006a41086a2202200541086a290000370300200420052900003703702005102320044190016a41186a2203200c29030037030020044190016a41106a220c201129030037030020044190016a41086a22112002290300370300200420042903703703900141c00010212205450d0320052004290360370000200520042903283700102005200429039001370020200541086a2008290300370000200541186a2006290300370000200541286a2011290300370000200541306a200c290300370000200541386a2003290300370000200441c0003602940120042005360290012007200a20044190016a10c501200510230240200b450d00200710230b20044190016a41186a2211420037030020044190016a41106a220c420037030020044190016a41086a220742003703002004420037039001200441d0006a41086a220541c4fbc400ad4280808080e000841003220641086a2900003703002004200629000037035020061023200720052903003703002004200429035037039001200541f9bcc000ad4280808080e000841003220641086a2900003703002004200629000037035020061023200c20042903502212370300200441f0006a41086a22082007290300370300200441f0006a41106a220a2012370300200441f0006a41186a220b2005290300370300200420123703282004200429039001370370200441086a200441f0006a4120108f01200428020c210f2004280208210d20054182fdc400ad4280808080a001841003220641086a2900003703002004200629000037035020061023200441e0006a41086a2202200529030037030020042004290350370360200541f1bdc100ad4280808080a001841003220641086a2900003703002004200629000037035020061023200441286a41086a220320052903003703002004200429035037032820042000360250200b200e4280808080c000841001220641186a290000370300200a200641106a2900003703002008200641086a29000037030020042006290000370370200610232011200b290300370300200c200a29030037030020072008290300370300200420042903703703900141c00010212206450d0420062004290360370000200620042903283700102006200429039001370020200641086a2002290300370000200641186a2003290300370000200641286a2007290300370000200641306a200c290300370000200641386a201129030037000020044100200f4100200d1b2207417f6a220c200c20074b1b360290012006ad428080808080088420094280808080c00084220910022006102320054191fdc400ad42808080809001841003220641086a2900003703002004200629000037035020061023200441186a41086a20052903003703002004200429035037031820054198e9c100ad4280808080d000841003220641086a290000370300200420062900003703502006102320022005290300370300200420042903503703602004200036029001200b20091001220541186a290000370300200a200541106a2900003703002008200541086a2900003703002004200529000037037020051023200441286a41186a200b290300370300200441286a41106a200a290300370300200320082903003703002004200429037037032841c00010212205450d05200520042903183700002005200429036037001020052004290328370020200541086a200441186a41086a290300370000200541186a200441e0006a41086a290300370000200541286a200441286a41086a290300370000200541306a200441386a290300370000200541386a200441286a41186a290300370000410110212206450d06200620013a00002005ad42808080808008842006ad42808080801084100220061023200510234100210d0c090b200741041030000b200b41011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b410141011030000b102a000b0240200341046a280200450d00200328020010230b200241046a280200450d00200228020010230b200441b0016a2400200d0bfe1c08057f017e047f017e027f017e017f017e230041a0016b22012400200141c0006a41086a22024191fdc400ad42808080809001841003220341086a2900003703002001200329000037034020031023200141106a41086a220420022903003703002001200129034037031020024198e9c100ad4280808080d000841003220341086a2900003703002001200329000037034020031023200141d0006a41086a22032002290300370300200120012903403703502001200036028001200141e0006a41186a220520014180016aad22064280808080c000841001220241186a290000370300200141e0006a41106a2207200241106a290000370300200141e0006a41086a2208200241086a2900003703002001200229000037036020021023200141206a41186a22092005290300370300200141206a41106a22052007290300370300200141206a41086a220720082903003703002001200129036037032002400240024002400240024002400240024041c00010212202450d00200220012903103700002002200129035037001020022001290320370020200241086a2004290300370000200241186a2003290300370000200241286a2007290300370000200241306a2005290300370000200241386a200929030037000002400240024002400240200241c00010a60241ff017122034102460d002002ad42808080808008841005200210234101210a20034101710d0420014180016a41186a420037030020014180016a41106a2205420037030020014180016a41086a220342003703002001420037038001200141c0006a41086a22024191fdc400ad42808080809001841003220441086a290000370300200120042900003703402004102320032002290300370300200120012903403703800120024182fdc400ad4280808080a001841003220441086a290000370300200120042900003703402004102320052001290340220b370300200141e0006a41086a2003290300370300200141e0006a41106a200b370300200141e0006a41186a20022903003703002001200b370320200120012903800137036020014180016a200141e0006a4120108b022001280280012202410420021b210c41dffbc100210d200129028401420020021b220e422088a7220741014b0d014100210220070e020302030b2002102341dffbc100210d0c0c0b4100210220072103034020022003410176220420026a2205200c20054102746a28020020004b1b2102200320046b220341014b0d000b0b200c20024102746a2802002000470d00200220074f0d03200c20024102746a2203280200210d2003200341046a2002417f7320076a41027410dd041a200e4280808080707c210e4100210a0b200141206a41186a4200370300200141206a41106a22054200370300200141206a41086a2203420037030020014200370320200141c0006a41086a22024191fdc400ad42808080809001841003220441086a29000037030020012004290000370340200410232003200229030037030020012001290340220b3703102001200b37032020024182fdc400ad4280808080a001841003220441086a290000370300200120042900003703402004102320052001290340220b37030020014180016a41086a200329030037030020014180016a41106a200b37030020014180016a41186a20022903003703002001200b370350200120012903203703800102400240200c0d002006428080808080048410050c010b2001410036026820014201370360200e422088a72202200141e0006a105c0240024020020d002001280268210820012802642107200128026021030c010b200241027421094100200128026822026b210420012802642107200c210503402005280200210f02400240200720046a4104490d00200128026021030c010b200241046a22032002490d08200741017422082003200820034b1b22084100480d080240024020070d002008102121030c010b200128026020072008102521030b2003450d072001200836026420012003360260200821070b200541046a21052001200241046a2208360268200320026a200f3600002004417c6a2104200821022009417c6a22090d000b0b200642808080808004842008ad4220862003ad84100202402007450d00200310230b200ea7450d00200c10230b200a0d090b200141c0006a41086a22034182fdc400ad4280808080a00184220b1003220241086a2900003703002001200229000037034020021023200141d0006a41086a2208200329030037030020012001290340370350200341e8bdc100ad4280808080c000841003220241086a2900003703002001200229000037034020021023200141206a41086a220920032903003703002001200129034037032020012000360240200141e0006a41186a2204200141c0006aad220e4280808080c0008422101001220241186a290000370300200141e0006a41106a2205200241106a290000370300200141e0006a41086a2207200241086a290000370300200120022900003703602002102320014180016a41186a220f200429030037030020014180016a41106a220c200529030037030020014180016a41086a220d2007290300370300200120012903603703800141c00010212202450d0420022001290350370000200220012903203700102002200129038001370020200241086a2008290300370000200241186a2009290300370000200241286a200d290300370000200241306a200c290300370000200241386a200f2903003700002002ad42808080808008841005200210232003200b1003220241086a29000037030020012002290000370340200210232008200329030037030020012001290340370350200341ecbdc100ad4280808080d000841003220241086a2900003703002001200229000037034020021023200920032903003703002001200129034037032020012000360240200420101001220241186a2900003703002005200241106a2900003703002007200241086a2900003703002001200229000037036020021023200f2004290300370300200c2005290300370300200d2007290300370300200120012903603703800141c00010212202450d0520022001290350370000200220012903203700102002200129038001370020200241086a200141d0006a41086a2204290300370000200241186a200141206a41086a2205290300370000200241286a20014180016a41086a2207290300370000200241306a20014180016a41106a2208290300370000200241386a20014180016a41186a22092903003700002002ad4280808080800884100520021023200141c0006a41086a22024182fdc400ad4280808080a001841003220341086a29000037030020012003290000370340200310232004200229030037030020012001290340370350200241f1bdc100ad4280808080a001841003220341086a2900003703002001200329000037034020031023200520022903003703002001200129034037032020012000360240200141e0006a41186a2203200e4280808080c000841001220241186a290000370300200141e0006a41106a220f200241106a290000370300200141e0006a41086a220c200241086a2900003703002001200229000037036020021023200920032903003703002008200f2903003703002007200c290300370300200120012903603703800141c00010212203450d0620032001290350370000200320012903203700102003200129038001370020200341086a2004290300370000200341186a2005290300370000200341286a2007290300370000200341306a2008290300370000200341386a2009290300370000200141086a200341c000108f010240024020012802084101470d00200128020c21022003ad428080808080088410052003102320014180016a41186a420037030020014180016a41106a2207420037030020014180016a41086a220442003703002001420037038001200141c0006a41086a220341c4fbc400ad4280808080e000841003220541086a2900003703002001200529000037034020051023200420032903003703002001200129034037038001200341f9bcc000ad4280808080e000841003220541086a290000370300200120052900003703402005102320072001290340220b370300200141e0006a41086a2004290300370300200141e0006a41106a200b370300200141e0006a41186a20032903003703002001200b37032020012001290380013703602001200141e0006a4120108f0120022001280204410020012802001b22034f0d01034020012000360284012001200241016a22023602800120014180016a10fc0120032002470d000c020b0b200310230b200141c0006a41086a22024191fdc400ad42808080809001841003220341086a2900003703002001200329000037034020031023200141106a41086a220420022903003703002001200129034037031020024198e9c100ad4280808080d000841003220341086a2900003703002001200329000037034020031023200141d0006a41086a22032002290300370300200120012903403703502001200036028001200141e0006a41186a220520064280808080c000841001220241186a290000370300200141e0006a41106a2200200241106a290000370300200141e0006a41086a2207200241086a2900003703002001200229000037036020021023200141206a41186a22082005290300370300200141206a41106a22052000290300370300200141206a41086a220020072903003703002001200129036037032041c00010212202450d07200220012903103700002002200129035037001020022001290320370020200241086a2004290300370000200241186a2003290300370000200241286a2000290300370000200241306a2005290300370000200241386a20082903003700002002ad42808080808008841005200210234100210d0c080b41c00041011030000b41b8bbc000102b000b200841011030000b102a000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b200141a0016a2400200d0bb81101197f41002104024002400240200141014b0d0020010e020201020b20012105034020042005410176220620046a2207200020074102746a28020020024b1b2104200520066b220541014b0d000b0b4100210502400240200020044102746a28020022062002470d00410021080c010b200420062002496a2104410121080b41012109024002400240200141014b0d0020010e020201020b4100210520012106034020052006410176220720056a220a2000200a4102746a28020020034b1b2105200620076b220641014b0d000b0b0240200020054102746a28020022062003470d00410021090c010b200520062003496a21050b024002400240024020080d002009450d04200420014f0d0120042105200321020c030b2009450d010c030b41f4dcc10020042001102d000b20052001490d0041a0dcc10020052001102d000b200020054102746a2002360200024020014115490d0002402001410176220b41ffffffff0371200b470d00200b4102742204417f4c0d0002400240024020040d004104210c410421030c010b20041021220c450d01200c21030b2000417c6a210d200041746a210e4100210f4100211041042111410021082001211203402012210a41002112410121070240200a417f6a2213450d00024002400240024002400240200020134102746a280200200a410274221420006a41786a2802002205490d00200a417e6a2109200e20146a210641002112410021040340024020092004470d00200a21070c080b200441016a21042005200628020022074f21022006417c6a21062007210520020d000b200441016a21072004417f73200a6a21040c010b200e20146a21062013210402400340024020044101470d00410021040c020b2004417f6a21042005200628020022074921022006417c6a21062007210520020d000b0b200a2004490d01200a20014b0d03200a20046b22074101762202450d00200020044102746a2105200d20146a21060340200528020021092005200628020036020020062009360200200541046a21052006417c6a21062002417f6a22020d000b0b024020040d00200421120c050b0240200741094d0d00200421120c050b200a20014b0d01200020044102746a21140340200a2004417f6a2212490d040240200a20126b22074102490d00200020044102746a22062802002205200020124102746a220928020022154f0d0020092005360200024020074103490d0020132102201421052009280208220920154f0d00034020052009360200200541046a210620042002417f6a2202460d01200541086a210920062105200928020022092015490d000b0b200620153602000b2012450d052014417c6a2114201221042007410a4f0d050c000b0b2004200a103e000b200a2004417f6a2212490d010b200a20011036000b2012200a103e000b02400240024020082010470d0002400240201041016a22042010490d00201041017422052004200520044b1b220441ffffffff01712004470d002004410374220541004e0d010b102a000b0240024020100d002005102121110c010b201120104103742005102521110b2011450d0120042110200f21080b201120084103746a2204200736020420042012360200200f41016a2208210f20084102490d0102400340024002400240024020112008417f6a220f4103746a2204280200450d00200841037420116a220741746a2802002206200428020422054d0d000240200841024b0d002008210f410221080c080b20112008417d6a22134103746a2802042204200520066a4d0d010240200841034b0d002008210f410321080c080b200741646a280200200420066a4d0d012008210f0c070b20084103490d012004280204210520112008417d6a22134103746a28020421040b20042005490d010b2008417e6a21130b0240024002400240024002402008201341016a22164b2217450d00200820134b2218450d01201120134103746a2219280204221a20192802006a2204201120164103746a221b280200221c490d02200420014b0d032000201c4102746a2209201b280204221541027422056a21072004410274210a2004201c6b220220156b220420154f0d04200c20072004410274220510dc041a200320056a21060240024020154101480d00200441014e0d010b20072105200321040c060b200d200a6a210a200721050340200a2005417c6a22042006417c6a2207200728020020042802004922021b2802003602002006200720021b2106024020092004200520021b2205490d00200321040c070b200a417c6a210a2003210420032006490d000c060b0b4198bfc10020162008102d000b4198bfc10020132008102d000b201c2004103e000b200420011036000b200c2009200510dc041a200320056a21060240024020154101480d00200220154a0d010b20092105200321040c010b2000200a6a21142003210420092105034020052007280200220a20042802002202200a200249220a1b3602002004200441046a200a1b2104200541046a2105200741046a2007200a1b220720144f0d01200620044b0d000b0b20052004200620046b417c7110dc041a02402018450d002019201c360200201941046a201a20156a3602002017450d02201b201b41086a20082016417f736a41037410dd041a200f2108200f41014d0d040c010b0b41a8bfc10020132008102d000b41b8bbc000102b000b200541041030000b20120d000b02402010450d00201110230b200b450d03200c10230f0b200441041030000b102f000b20014102490d002001417f6a2104200020014102746a21074100210a034002400240024020042205417f6a220420014b0d00200120046b22064102490d02200020054102746a22052802002202200020044102746a220328020022094f0d022003200236020020064103490d01200a2106200721022003280208220320094f0d01034020022205417c6a20033602002006417f6a2206450d02200541046a2202280200220320094f0d020c000b0b20042001103e000b200520093602000b200a41016a210a2007417c6a210720040d000b0b0b340020004191fdc40036020420004100360200200041146a4109360200200041106a41ecfbc100360200200041086a42093702000b3101017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241e8073600000bcd860104077f017e137f077e230022032104200341a0026b416071220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e080001020304050809000b20034194016a41013602002003420137028401200341d09dc600360280012003410436028402200341849ec60036028002200320034180026a3602900120034180016a41f08ac2001038000b41182105200141186a2802002106200141146a28020021072001410c6a2802002108200141086a280200210920022d000120022d000072450d0802402006450d00200710230b4186b0c00021024111210541012107410021062008450d20200910230c200b4101210620022d000120022d0000720d1e200141046a28020010b3022102410a2105410121070c1f0b4101210620022d000120022d0000720d1d200141046a2802002108200341306a4200370300200341286a22094200370300200341186a41086a2205420037030020034200370318200341f0016a41086a22024191fdc400ad42808080809001841003220741086a290000370300200320072900003703f0012007102320052002290300370300200320032903f001220a3703382003200a3703182002419de9c100ad4280808080b001841003220741086a290000370300200320072900003703f00120071023200920032903f001220a3703002003200a370348200320032903183703800220032005290300370388022003200a370390022003200229030037039802200320083602800120034180026aad428080808080048420034180016aad4280808080c0008410020c020b200141186a280200210b200141146a2802002107200141106a280200210c2001410c6a280200210d200141086a2802002108200141046a280200210e2002411a6a290100210a200241196a2d00002106200241186a2d00002109200241166a2f0100210f200241156a2d00002110200241146a2d00002111200241126a2f01002112200241116a2d00002113200241106a2d000021142002410e6a2f010021152002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241046a2d0000211a41022105200241026a2f0100211b0240024020022d00000d0020022d00014101470d00200241056a2d00002105200241066a2f0100211c200241086a2d000021024100211d0c010b4101211d410021024100211c0b2003200a37039802200320063a009702200320093a0096022003200f3b019402200320103a009302200320113a009202200320123b019002200320133a008f02200320143a008e02200320153b018c02200320163a008b02200320173a008a02200320183b018802200320193a0087022003201a3a0082022003201b3b0180022003201c41ffff0371410874200241187472200541ff0171722206360083020240201d450d00410f210541aab0c0002102024002400240024020060e050001020320000b2003280087022102200328008b0221050c1f0b410e210541aabac60021020c1e0b411321054197b0c00021020c1d0b411121054186b0c00021020c1c0b200341d8006a41186a200329039802370300200341d8006a41106a2211200329039002370300200341d8006a41086a2003290388023703002003200329038002370358200341086a200341d8006a4280a0e5b9c29101420010f101024020032802082202450d00200328020c21050c1c0b20034180016a41186a2209420037030020034180016a41106a220f420037030020034180016a41086a220542003703002003420037038001200341f0016a41086a22024191fdc400ad4280808080900184220a1003220641086a290000370300200320062900003703f0012006102320052002290300370300200320032903f001221e3703182003201e370380012002418addc100ad4280808080a00184221f1003220641086a290000370300200320062900003703f00120061023200f20032903f001221e37030020034180026a41086a2212200529030037030020034180026a41106a2213201e37030020034180026a41186a221420022903003703002003201e370318200320032903800137038002200320034180026a4120108f01200328020421102003280200211520094200370300200f42003703002005420037030020034200370380012002200a1003220641086a290000370300200320062900003703f0012006102320052002290300370300200320032903f001221e3703182003201e370380012002201f1003220641086a290000370300200320062900003703f0012006102320092002290300221e37030020122005290300370300201320032903f001221f3703002014201e3703002003201f370318200320032903800137038002410121062003201041e80720151b221041016a3602800120034180026aad428080808080048420034180016aad4280808080c0008410022003200d3602880220032008360284022003200e360280022003200b3602880120032007360284012003200c360280012010410120034180026a20034180016a10b2021a2014200341d8006a41186a290300370300201320112903003703002012200341d8006a41086a29030037030020032003290358370380022002200a1003220741086a290000370300200320072900003703f00120071023200341386a41086a22082002290300370300200320032903f001370338200241a884c200ad4280808080f000841003220741086a290000370300200320072900003703f00120071023200341c8006a41086a22072002290300370300200320032903f001370348200320103602f0012009200341f0016aad4280808080c000841001220241186a290000370300200f200241106a2900003703002005200241086a290000370300200320022900003703800120021023200341186a41186a22112009290300370300200341186a41106a200f290300370300200341186a41086a22092005290300370300200320032903800137031841c00010212202450d0620022003290338370000200241086a200829030037000020022003290348370010200241186a200729030037000020022003290318370020200241286a2009290300370000200241306a200341186a41106a290300370000200241386a2011290300370000200341c00036028401200320023602800120034180026a20034180016a10f5012002102320052010360200410021072003410036028401200341103a00800120034180016a108e01410021020c1d0b20022d00000d014101210620022d00014101470d010b41002102410121070c1b0b4197b0c0002102411321050c170b20022d00004103470d152003200241046a2802002206360278200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200341186a41086a22072002290300370300200320032903f00137031820024198e9c100ad4280808080d000841003220541086a290000370300200320052900003703f00120051023200341d8006a41086a22052002290300370300200320032903f001370358200320063602f00120034180016a41186a2206200341f0016aad4280808080c000841001220241186a29000037030020034180016a41106a2208200241106a29000037030020034180016a41086a2209200241086a29000037030020032002290000370380012002102320034180026a41186a220f200629030037030020034180026a41106a2206200829030037030020034180026a41086a2208200929030037030020032003290380013703800241c00010212202450d0320022003290318370000200220032903583700102002200329038002370020200241086a2007290300370000200241186a2005290300370000200241286a2008290300370000200241306a2006290300370000200241386a200f290300370000200241c00010a60221062002102341808bc2002102410a2105200641ff017122064102460d16024020064101710d00418a8bc2002102411521050c170b200328027810b30222020d162003200341f8006a36027c20034180016a41186a420037030020034180016a41106a2207420037030020034180016a41086a220242003703002003420037038001200341f0016a41086a22064191fdc400ad4280808080900184221f1003220541086a290000370300200320052900003703f0012005102320022006290300370300200320032903f001370380012006419adfc100ad4280808080a0018422201003220541086a290000370300200320052900003703f00120051023200720032903f001220a37030020034180026a41086a200229030037030020034180026a41106a200a37030020034180026a41186a20062903003703002003200a37031820032003290380013703800220034180016a20034180026a109102200329028401420020032802800122021b221e422088a7210902402002410420021b2208450d002009450d002009410c6c21052008210203402002200341fc006a10752002410c6a2102200541746a22050d000b0b20032008360280012003201e37028401200341186a41186a4200370300200341186a41106a220f4200370300200341186a41086a22024200370300200342003703182006201f1003220541086a290000370300200320052900003703f0012005102320022006290300370300200320032903f001220a3703382003200a370318200620201003220541086a290000370300200320052900003703f00120051023200f20032903f001220a3703002003200a370348200320032903183703800220032002290300370388022003200a3703900220032006290300370398022003412036025c200320034180026a36025820034180016a200341d8006a107302402008450d00201ea7210602402009450d002009410c6c21052008210203400240200241046a280200450d00200228020010230b2002410c6a2102200541746a22050d000b0b2006450d00200810230b20034180016a41186a2208420037030020034180016a41106a2209420037030020034180016a41086a220542003703002003420037038001200341f0016a41086a22024191fdc400ad42808080809001841003220641086a290000370300200320062900003703f0012006102320052002290300370300200320032903f00137038001200241a9e0c100ad4280808080f001841003220641086a290000370300200320062900003703f00120061023200341186a41086a2002290300220a370300200320032903f001221e3703182007201e370000200741086a200a37000020034180026a41086a200529030037030020034180026a41106a200929030037030020034180026a41186a200829030037030020032003290380013703800220034180016a20034180026a109102200329028401420020032802800122021b220a422088a7210802402002410420021b2206450d002008450d002008410c6c21052006210203402002200341fc006a10752002410c6a2102200541746a22050d000b0b20032006360280012003200a370284010240024020060d00200341306a4200370300200341286a22084200370300200341186a41086a2205420037030020034200370318200341f0016a41086a22024191fdc400ad42808080809001841003220641086a290000370300200320062900003703f0012006102320052002290300370300200320032903f001220a3703382003200a370318200241a9e0c100ad4280808080f001841003220641086a290000370300200320062900003703f00120061023200820032903f001220a3703002003200a370348200320032903183703800220032005290300370388022003200a37039002200320022903003703980220034180026aad428080808080048410050c010b200aa7210f200341306a4200370300200341286a22104200370300200341186a41086a2205420037030020034200370318200341f0016a41086a22024191fdc400ad42808080809001841003220941086a290000370300200320092900003703f0012009102320052002290300370300200320032903f001220a3703382003200a370318200241a9e0c100ad4280808080f001841003220941086a290000370300200320092900003703f00120091023201020032903f001220a3703002003200a370348200320032903183703800220032005290300370388022003200a3703900220032002290300370398022003412036025c200320034180026a36025820034180016a200341d8006a107302402008450d002008410c6c21052006210203400240200241046a280200450d00200228020010230b2002410c6a2102200541746a22050d000b0b200f450d00200610230b20034180016a41186a2206420037030020034180016a41106a220f420037030020034180016a41086a220242003703002003420037038001200341f0016a41086a22084191fdc400ad4280808080900184220a1003220541086a290000370300200320052900003703f0012005102320022008290300370300200320032903f0013703800120084184ddc100ad4280808080e00084221e1003220541086a290000370300200320052900003703f00120051023200341186a41086a22092008290300221f370300200320032903f001222037031820072020370000200741086a201f37000020034180026a41086a200229030037030020034180026a41106a200f29030037030020034180026a41186a200629030037030020032003290380013703800220034180016a20034180026a10fe01200329028401420020032802800122021b221f422088a7220f412c6c21112002410420021b21100240200f450d00200328027c210620112105201021020340024020022802002006280200470d00200241246a22072802004102460d00200741003602000b2002412c6a2102200541546a22050d000b0b200341186a41186a4200370300200341186a41106a2205420037030020094200370300200342003703182008200a1003220241086a290000370300200320022900003703f0012002102320092008290300370300200320032903f001220a3703382003200a3703182008201e1003220241086a290000370300200320022900003703f00120021023200520032903f001220a3703002003200a370348200320032903183703800220032009290300370388022003200a37039002200320082903003703980220034100360288012003420137038001200f20034180016a105c0240200f450d00201020116a21092010210503402005280200210702400240200328028401220620032802880122026b4104490d0020032802800121060c010b200241046a22082002490d17200641017422022008200220084b1b22024100480d170240024020060d002002102121060c010b20032802800120062002102521060b2006450d072003200236028401200320063602800120032802880121020b2003200241046a36028801200620026a2007360000200541046a20034180016a10d3012005412c6a22052009470d000b0b200328028401210220034180026aad220a42808080808004842003350288014220862003280280012205ad84100202402002450d00200510230b0240201fa7450d00201010230b20032802782106200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200341386a41086a22072002290300370300200320032903f001370338200241a884c200ad4280808080f000841003220541086a290000370300200320052900003703f00120051023200341c8006a41086a22052002290300370300200320032903f001370348200320063602800220034180016a41186a2206200a4280808080c000841001220241186a29000037030020034180016a41106a2208200241106a29000037030020034180016a41086a2209200241086a290000370300200320022900003703800120021023200341186a41186a220f2006290300370300200341186a41106a22062008290300370300200341186a41086a22082009290300370300200320032903800137031841c00010212202450d0520022003290338370000200241086a200729030037000020022003290348370010200241186a200529030037000020022003290318370020200241286a2008290300370000200241306a2006290300370000200241386a200f29030037000020034180016a200241c000108a010240024020032d0080014101470d002002ad4280808080800884100520034180026a41186a20034199016a290000220a37030020034180026a41106a20034191016a290000221e37030020034180026a41086a20034189016a290000221f370300200341d8006a41186a200a370300200341d8006a41106a201e370300200341d8006a41086a201f3703002003200329008101222037038002200341186a41186a200a370300200341186a41106a201e370300200341186a41086a201f37030020032020370358200320203703180c010b20034180026a41186a20034199016a290000220a37030020034180026a41106a20034191016a290000221e37030020034180026a41086a20034189016a290000221f370300200341d8006a41186a4200370300200341d8006a41106a4200370300200341d8006a41086a42003703002003200329008101222037038002200341186a41186a200a370300200341186a41106a201e370300200341186a41086a201f37030020034200370358200320203703180b20021023200341d8006a4280a0e5b9c29101420010de0120034188016a2003280278360200410021022003410036028401200341103a00800120034180016a108e0141012106410121070c190b2003200141046a280200220536027820022d00004103470d142003200241046a28020036027c200341f0016a41086a22024191fdc400ad42808080809001841003220641086a290000370300200320062900003703f00120061023200341386a41086a22072002290300370300200320032903f001370338200241cc83c200ad4280808080b001841003220641086a290000370300200320062900003703f00120061023200341c8006a41086a22062002290300370300200320032903f0013703482003200536025820034180016a41186a2205200341d8006aad220a4280808080c000841001220241186a29000037030020034180016a41106a2208200241106a29000037030020034180016a41086a2209200241086a29000037030020032002290000370380012002102320032005290300370398022003200829030037039002200320092903003703880220032003290380013703800241c00010212202450d0520022003290338370000200241086a200729030037000020022003290348370010200241186a20062903003700002002200329038002370020200241286a200329038802370000200241306a200329039002370000200241386a200329039802370000200341106a200241c000108f01200328021421082003280210210520021023200328027c210602400240024020054101460d00200328027821070c010b2003280278210720082006460d010b200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200341386a41086a22082002290300370300200320032903f001370338200241cc83c200ad4280808080b001841003220541086a290000370300200320052900003703f00120051023200341c8006a41086a22052002290300370300200320032903f0013703482003200636025820034180016a41186a2206200a4280808080c000841001220241186a29000037030020034180016a41106a2209200241106a29000037030020034180016a41086a220f200241086a290000370300200320022900003703800120021023200320062903003703980220032009290300370390022003200f2903003703880220032003290380013703800241c00010212202450d0720022003290338370000200241086a200829030037000020022003290348370010200241186a20052903003700002002200329038002370020200241286a200329038802370000200241306a200329039002370000200241386a20032903980237000020032007360280012002ad428080808080088420034180016aad4280808080c00084100220021023410021020c160b41a5f3c300210241222105200610b8020d15200710b8020d1520032802782106200341f0016a41086a22054191fdc400ad4280808080900184221e1003220241086a290000370300200320022900003703f00120021023200341386a41086a22082005290300370300200320032903f001370338200541cc83c200ad4280808080b001841003220241086a290000370300200320022900003703f00120021023200341c8006a41086a22092005290300370300200320032903f0013703482003200636025820034180016a41186a2207200a4280808080c000841001220241186a29000037030020034180016a41106a220f200241106a29000037030020034180016a41086a2206200241086a29000037030020032002290000370380012002102320032007290300370398022003200f29030037039002200320062903003703880220032003290380013703800241c00010212202450d0720022003290338370000200241086a200829030037000020022003290348370010200241186a20092903003700002002200329038002370020200241286a200329038802370000200241306a200329039002370000200241386a2003290398023700002002ad42808080808008841005200210232003200341f8006a36025c2003200341fc006a36025820074200370300200f42003703002006420037030020034200370380012005201e1003220241086a290000370300200320022900003703f0012002102320062005290300370300200320032903f001370380012005419adfc100ad4280808080a001841003220241086a290000370300200320022900003703f00120021023200f20032903f001221e37030020034180026a41086a200629030037030020034180026a41106a201e37030020034180026a41186a20052903003703002003201e37031820032003290380013703800220034180016a20034180026a109102200329028401420020032802800122021b221e422088a7210702402002410420021b2206450d002007450d002007410c6c21052006210203402002200341d8006a10742002410c6a2102200541746a22050d000b0b20032006360280012003201e370284010240024020060d002003420037039802200342003703900220034200370388022003420037038002200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200320032903f001221e3703382003201e3703800220032002290300370388022002419adfc100ad4280808080a001841003220541086a290000370300200320052900003703f00120051023200341186a41086a200329038802370300200341286a20032903f001221e370300200341306a20022903003703002003201e3703482003201e370390022003200329038002370318200341186aad428080808080048410050c010b201ea721082003420037039802200342003703900220034200370388022003420037038002200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200320032903f001221e3703382003201e3703800220032002290300370388022002419adfc100ad4280808080a001841003220541086a290000370300200320052900003703f00120051023200341186a41086a200329038802370300200341286a20032903f001221e370300200341306a20022903003703002003201e3703482003201e37039002200320032903800237031820034120360284022003200341186a3602800220034180016a20034180026a107302402007450d002007410c6c21052006210203400240200241046a280200450d00200228020010230b2002410c6a2102200541746a22050d000b0b2008450d00200610230b20034180016a41186a2207420037030020034180016a41106a2208420037030020034180016a41086a220542003703002003420037038001200341f0016a41086a22024191fdc400ad42808080809001841003220641086a290000370300200320062900003703f0012006102320052002290300370300200320032903f00137038001200241a9e0c100ad4280808080f001841003220641086a290000370300200320062900003703f00120061023200341186a41086a2002290300221e370300200320032903f001221f370318200f201f370000200f41086a201e37000020034180026a41086a200529030037030020034180026a41106a200829030037030020034180026a41186a200729030037030020032003290380013703800220034180016a20034180026a109102200329028401420020032802800122021b221e422088a7210702402002410420021b2206450d002007450d002007410c6c21052006210203402002200341d8006a10742002410c6a2102200541746a22050d000b0b20032006360280012003201e370284010240024020060d002003420037039802200342003703900220034200370388022003420037038002200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200320032903f001221e3703382003201e370380022003200229030037038802200241a9e0c100ad4280808080f001841003220541086a290000370300200320052900003703f00120051023200341186a41086a200329038802370300200341286a20032903f001221e370300200341306a20022903003703002003201e3703482003201e370390022003200329038002370318200341186aad428080808080048410050c010b201ea721082003420037039802200342003703900220034200370388022003420037038002200341f0016a41086a22024191fdc400ad42808080809001841003220541086a290000370300200320052900003703f00120051023200320032903f001221e3703382003201e370380022003200229030037038802200241a9e0c100ad4280808080f001841003220541086a290000370300200320052900003703f00120051023200341186a41086a200329038802370300200341286a20032903f001221e370300200341306a20022903003703002003201e3703482003201e37039002200320032903800237031820034120360284022003200341186a3602800220034180016a20034180026a107302402007450d002007410c6c21052006210203400240200241046a280200450d00200228020010230b2002410c6a2102200541746a22050d000b0b2008450d00200610230b20034180016a41186a2206420037030020034180016a41106a2207420037030020034180016a41086a220242003703002003420037038001200341f0016a41086a22094191fdc400ad4280808080900184221e1003220541086a290000370300200320052900003703f0012005102320022009290300370300200320032903f0013703800120094184ddc100ad4280808080e00084221f1003220541086a290000370300200320052900003703f00120051023200341186a41086a221320092903002220370300200320032903f0012221370318200f2021370000200f41086a202037000020034180026a41086a200229030037030020034180026a41106a200729030037030020034180026a41186a200629030037030020032003290380013703800220034180016a20034180026a10fe01200329028401420020032802800122021b2220422088a72210412c6c21122002410420021b211102402010450d00200328025c2108200328025821072012210520112102034002400240200228020022062007280200460d0020082802002006470d010b200241246a22062802004102460d00200641003602000b2002412c6a2102200541546a22050d000b0b20034200370398022003420037039002200342003703880220034200370380022009201e1003220241086a290000370300200320022900003703f00120021023200320032903f001221e3703382003201e3703800220032009290300370388022009201f1003220241086a290000370300200320022900003703f001200210232013200329038802370300200341186a41106a20032903f001221e370300200341186a41186a20092903003703002003201e3703482003201e37039002200320032903800237031820034100360288012003420137038001201020034180016a105c02402010450d00201120126a21092011210503402005280200210702400240200328028401220620032802880122026b4104490d0020032802800121060c010b200241046a22082002490d16200641017422022008200220084b1b22024100480d160240024020060d002002102121060c010b20032802800120062002102521060b2006450d0b2003200236028401200320063602800120032802880121020b2003200241046a36028801200620026a2007360000200541046a20034180016a10d3012005412c6a22052009470d000b0b2003280284012102200341186aad4280808080800484221e2003350288014220862003280280012205ad84100202402002450d00200510230b20034180026a411072210502402020a7450d00201110230b200328027c21082003280278210920034180016a41186a2210420037030020034180016a41106a2211420037030020034180016a41086a220642003703002003420037038001200341f0016a41086a22024191fdc400ad4280808080900184221f1003220741086a290000370300200320072900003703f0012007102320062002290300370300200320032903f0013703800120024182fdc400ad4280808080a0018422201003220741086a290000370300200320072900003703f00120071023200341186a41086a221220022903002221370300200320032903f0012222370318200f2022370000200f41086a202137000020034180026a41086a200629030037030020034180026a41106a201129030037030020034180026a41186a201029030037030020032003290380013703800220034180016a20034180026a4120108b022003280280012206410420061b2211200329028401420020061b2221422088a722072008200910b40220034200370398022003420037039002200342003703880220034200370380022002201f1003220641086a290000370300200320062900003703f00120061023200320032903f001221f3703382003201f370380022003200229030037038802200220201003220641086a290000370300200320062900003703f00120061023200341c8006a41086a2002290300221f370300200320032903f001222037034820052020370000200541086a201f3700002012200329038802370300200341186a41106a200329039002370300200341186a41186a20032903980237030020032003290380023703180240024020110d00201e10050c010b20034100360288012003420137038001200720034180016a105c0240024020070d002003280288012109200328028401210820032802800121050c010b2007410274210f410020032802880122026b210620032802840121082011210703402007280200211002400240200820066a4104490d0020032802800121050c010b200241046a22052002490d17200841017422092005200920054b1b22094100480d170240024020080d002009102121050c010b20032802800120082009102521050b2005450d0d20032009360284012003200536028001200921080b200741046a21072003200241046a220936028801200520026a20103600002006417c6a210620092102200f417c6a220f0d000b0b201e2009ad4220862005ad84100202402008450d00200510230b2021a7450d00201110230b20032802782111200328027c2106200341f0016a41086a22054191fdc400ad4280808080900184221e1003220241086a290000370300200320022900003703f00120021023200341386a41086a22092005290300370300200320032903f00137033820054198e9c100ad4280808080d00084221f1003220241086a290000370300200320022900003703f00120021023200341c8006a41086a220f2005290300370300200320032903f0013703482003200636025820034180016a41186a2206200a4280808080c0008422201001220241186a29000037030020034180016a41106a2207200241106a29000037030020034180016a41086a2208200241086a29000037030020032002290000370380012002102320032006290300370398022003200729030037039002200320082903003703880220032003290380013703800241c00010212202450d0a20022003290338370000200241086a200929030037000020022003290348370010200241186a200f2903003700002002200329038002370020200241286a200329038802370000200241306a200329039002370000200241386a200329039802370000200241c00010a60221122005201e1003221041086a290000370300200320102900003703f0012010102320092005290300370300200320032903f0013703382005201f1003220941086a290000370300200320092900003703f00120091023200f2005290300370300200320032903f00137034820032011360258200620201001220541186a2900003703002007200541106a2900003703002008200541086a29000037030020032005290000370380012005102320032006290300370398022003200729030037039002200320082903003703880220032003290380013703800241c00010212205450d0b20052003290338370000200541086a200341386a41086a29030037000020052003290348370010200541186a200341c8006a41086a2903003700002005200329038002370020200541286a200329038802370000200541306a200329039002370000200541386a200329039802370000200541c00010a602210602400240201241ff017122084102470d002005ad428080808080088410050c010b410110212207450d0d200720084101463a00002005ad42808080808008842007ad428080808010841002200710230b2005102302400240200641ff017122064102470d002002ad428080808080088410050c010b410110212205450d0e200520064101463a00002002ad42808080808008842005ad428080808010841002200510230b2002102320032802782114200328027c2106200341f0016a41086a22054191fdc400ad4280808080900184221e1003220241086a290000370300200320022900003703f00120021023200341386a41086a22112005290300370300200320032903f001370338200541a884c200ad4280808080f00084221f1003220241086a290000370300200320022900003703f00120021023200341c8006a41086a22122005290300370300200320032903f0013703482003200636025820034180016a41186a2206200a4280808080c00084220a1001220241186a29000037030020034180016a41106a2207200241106a29000037030020034180016a41086a2208200241086a29000037030020032002290000370380012002102320032006290300370398022003200729030037039002200320082903003703880220032003290380013703800241c00010212202450d0e20022003290338370000200241086a201129030037000020022003290348370010200241186a20122903003700002002200329038002370020200241286a200329038802370000200241306a200329039002370000200241386a20032903980237000020034180016a200241c000108a0120034189016a2209290000212020034191016a220f290000212120034199016a2210290000212220032d008001211520032900810121232005201e1003221341086a290000370300200320132900003703f0012013102320112005290300370300200320032903f0013703382005201f1003221141086a290000370300200320112900003703f0012011102320122005290300370300200320032903f001370348200320143602582006200a1001220541186a2900003703002007200541106a2900003703002008200541086a29000037030020032005290000370380012005102320032006290300370398022003200729030037039002200320082903003703880220032003290380013703800241c00010212205450d0f20052003290338370000200541086a200341386a41086a29030037000020052003290348370010200541186a200341c8006a41086a2903003700002005200329038002370020200541286a200329038802370000200541306a200329039002370000200541386a20032903980237000020034180016a200541c000108a012009290000210a200f290000211e2010290000211f200329008101212420032d0080012107201020224200201541ff017141014622061b370000200f2021420020061b37000020092020420020061b37000020032023420020061b37008101200341013a008001200341c00036028402200320053602800220034180016a410172220620034180026a10f501200510232010201f4200200741014622051b370000200f201e420020051b3700002009200a420020051b37000020032024420020051b37008101200341013a008001200341c000360284022003200236028002200620034180026a10f5012002102320032802782106200328027c2107200341f0016a41086a2205418cfdc400ad4280808080d00084220a1003220241086a290000370300200320022900003703f00120021023200341186a41086a22102005290300370300200320032903f00137031820054184ffc300ad4280808080b00184221e1003220241086a290000370300200320022900003703f00120021023200341d8006a41086a22112005290300370300200320032903f001370358200320073602f00120034180016a41186a2208200341f0016aad221f4280808080c0008422201001220241186a29000037030020034180016a41106a2209200241106a29000037030020034180016a41086a220f200241086a29000037030020032002290000370380012002102320034180026a41186a2212200829030037030020034180026a41106a2213200929030037030020034180026a41086a2214200f29030037030020032003290380013703800241c00010212202450d1020022003290318370000200220032903583700102002200329038002370020200241086a2010290300370000200241186a2011290300370000200241286a2014290300370000200241306a2013290300370000200241386a20122903003700002005200a1003221541086a290000370300200320152900003703f0012015102320102005290300370300200320032903f0013703182005201e1003221041086a290000370300200320102900003703f0012010102320112005290300370300200320032903f001370358200320063602f001200820201001220541186a2900003703002009200541106a290000370300200f200541086a29000037030020032005290000370380012005102320122008290300370300201320092903003703002014200f29030037030020032003290380013703800241c00010212205450d1120052003290318370000200520032903583700102005200329038002370020200541086a200341186a41086a290300370000200541186a200341d8006a41086a290300370000200541286a20034180026a41086a290300370000200541306a20034190026a290300370000200541386a20034180026a41186a29030037000020034180026a2002ad4280808080800884220a100410900120034180016a2005ad4280808080800884221e100410900102402003280280012208450d002003280284012109200a20034180016a41086a3502004220862008ad8410022009450d13200810230c130b200a10050c120b200141046a28020021022001411c6a280200210f20012d000121102003200141106a28020036028802200320083602840220032009360280022003200f36028801200320063602840120032007360280012002201020034180026a20034180016a10b202210241012107410021060c170b41c00041011030000b41c00041011030000b200241011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b200241011030000b200941011030000b41c00041011030000b41c00041011030000b410141011030000b410141011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b024002402003280280022208450d002003280284022109201e20034188026a3502004220862008ad8410022009450d01200810230c010b201e10050b2005102320021023200341f0016a41086a2205418cfdc400ad4280808080d00084220a1003220241086a290000370300200320022900003703f00120021023200341186a41086a22102005290300370300200320032903f001370318200541d0ffc300ad4280808080800184221e1003220241086a290000370300200320022900003703f00120021023200341d8006a41086a22112005290300370300200320032903f001370358200320073602f00120034180016a41186a2208201f4280808080c00084221f1001220241186a29000037030020034180016a41106a2209200241106a29000037030020034180016a41086a220f200241086a29000037030020032002290000370380012002102320034180026a41186a2212200829030037030020034180026a41106a2213200929030037030020034180026a41086a2214200f29030037030020032003290380013703800202400240024041c00010212202450d0020022003290318370000200220032903583700102002200329038002370020200241086a2010290300370000200241186a2011290300370000200241286a2014290300370000200241306a2013290300370000200241386a20122903003700002005200a1003221541086a290000370300200320152900003703f0012015102320102005290300370300200320032903f0013703182005201e1003221041086a290000370300200320102900003703f0012010102320112005290300370300200320032903f001370358200320063602f0012008201f1001220541186a2900003703002009200541106a290000370300200f200541086a29000037030020032005290000370380012005102320122008290300370300201320092903003703002014200f29030037030020032003290380013703800241c00010212205450d0120052003290318370000200520032903583700102005200329038002370020200541086a200341186a41086a290300370000200541186a200341d8006a41086a290300370000200541286a20034180026a41086a290300370000200541306a20034190026a290300370000200541386a20034180026a41186a29030037000020034180026a2002ad4280808080800884220a100410900120034180016a2005ad4280808080800884221e100410900102402003280280012208450d002003280284012109200a20034180016a41086a3502004220862008ad8410022009450d03200810230c030b200a10050c020b41c00041011030000b41c00041011030000b024002402003280280022208450d002003280284022109201e20034188026a3502004220862008ad8410022009450d01200810230c010b201e10050b200510232002102320034180016a41186a2212420037030020034180016a41106a2209420037030020034180016a41086a220542003703002003420037038001200341f0016a41086a2202418cfdc400ad4280808080d00084221e1003220841086a290000370300200320082900003703f0012008102320052002290300370300200320032903f00137038001200241acfec300ad4280808080a00184221f1003220841086a290000370300200320082900003703f00120081023200920032903f001220a37030020034180026a41086a2208200529030037030020034180026a41106a220f200a37030020034180026a41186a221320022903003703002003200a37035820032003290380013703800220034180016a20034180026a4120108b022003280280012210410420101b2211200329028401420020101b2220422088a722102007200610b40220134200370300200f42003703002008420037030020034200370380022002201e1003220641086a290000370300200320062900003703f0012006102320082002290300370300200320032903f001220a3703182003200a370380022002201f1003220641086a290000370300200320062900003703f00120061023200f20032903f001220a370300200520082903003703002009200a370300201220022903003703002003200a370358200320032903800237038001024020110d0020034180016aad42808080808004841005410021020c030b20034100360288022003420137038002201020034180026a105c02400240024020100d002003280288022109200328028402210820032802800221050c010b2010410274210f410020032802880222026b210620032802840221082011210703402007280200211002400240200820066a4104490d0020032802800221050c010b200241046a22052002490d04200841017422092005200920054b1b22094100480d040240024020080d002009102121050c010b20032802800220082009102521050b2005450d0320032009360284022003200536028002200921080b200741046a21072003200241046a220936028802200520026a20103600002006417c6a210620092102200f417c6a220f0d000b0b20034180016aad42808080808004842009ad4220862005ad84100202402008450d00200510230b4100210202402020a7450d00201110230b0c030b200941011030000b102a000b41bbbdc1002102412d21050b41012106410121070c020b02402007450d00200c10230b41002107410121062008450d01200e10230c010b4186b0c000210241112105410121070b024020012d0000417f6a220341034b0d000240024020030e0401020200010b2007450d010240200141086a280200450d00200141046a28020010230b200141146a280200450d01200141106a28020010230c010b2006450d0002402001410c6a280200450d00200141086a28020010230b200141186a280200450d00200141146a28020010230b2000200536020420002002360200200424000bdf0301067f230041f0006b22012400200141d0006a41086a2202418cfdc400ad4280808080d000841003220341086a2900003703002001200329000037035020031023200141086a41086a2204200229030037030020012001290350370308200241c7f3c300ad4280808080a001841003220341086a2900003703002001200329000037035020031023200141186a41086a22052002290300370300200120012903503703182001200036024c200141d0006a41186a2200200141cc006aad4280808080c000841001220341186a290000370300200141d0006a41106a2206200341106a2900003703002002200341086a2900003703002001200329000037035020031023200141286a41186a22032000290300370300200141286a41106a22002006290300370300200141286a41086a2206200229030037030020012001290350370328024041c000102122020d0041c00041011030000b200220012903083700002002200129031837001020022001290328370020200241086a2004290300370000200241186a2005290300370000200241286a2006290300370000200241306a2000290300370000200241386a20032903003700002001200241c00041014100410010b8012001280200210320021023200141f0006a240020034101460b0900200042043702000b130020004107360204200041e48bc2003602000bb60b01097f230041f0016b220224000240024020012802102203450d0020012802082204200128020c460d00200128021421052001200441246a3602082002413c6a41026a2206200441036a2d00003a0000200241206a41086a2207200441106a290000370300200241206a41106a2208200441186a290000370300200241206a41186a2209200441206a280000360200200220042f00013b013c2002200441086a29000037032020042d0000220a4102460d00200441046a280000210420012003417f6a360210200241dc016a41026a20062d00003a0000200241c0016a41086a2007290300370300200241c0016a41106a2008290300370300200241c0016a41186a2009280200360200200220022f013c3b01dc01200220022903203703c001024002400240200a4101460d00200241bc016a41026a200241dc016a41026a2d00003a0000200241a0016a41086a200241c0016a41086a290300370300200241a0016a41106a200241c0016a41106a290300370300200241a0016a41186a200241c0016a41186a2d00003a0000200220022f01dc013b01bc01200220022903c0013703a0010c010b200241e0016a200441067610bc0220022802e00121030240024020022802e8012004413f7122014b0d00410021010c010b200241bc016a41026a200320014105746a220141026a2d00003a0000200241a8016a2001410f6a290000370300200241b0016a200141176a290000370300200241b8016a2001411f6a2d00003a0000200220012f00003b01bc01200220012900073703a00120012800032104410121010b024020022802e401450d00200310230b20010d00410121010c010b2002419c016a41026a200241bc016a41026a2d00003a000020024180016a41086a200241a0016a41086a29030037030020024180016a41106a200241a0016a41106a29030037030020024180016a41186a200241a0016a41186a2d00003a0000200220022f01bc013b019c01200220022903a00137038001410021010b200241fc006a41026a22032002419c016a41026a2d00003a0000200241e0006a41086a220620024180016a41086a290300370300200241e0006a41106a220720024180016a41106a290300370300200241e0006a41186a220820024180016a41186a2d00003a0000200220022f019c013b017c2002200229038001370360024020010d00200241dc006a41026a20032d000022013a0000200241c0006a41086a22032006290300370300200241c0006a41106a22062007290300370300200241c0006a41186a220720082d00003a00002002411c6a41026a220820013a0000200220022f017c22013b015c20022002290360370340200220013b011c200241186a220120072d00003a0000200241106a22072006290300370300200241086a2206200329030037030020022002290340370300200241206a41026a220320082d00003a0000200220022f011c3b0120200241c0016a41186a220820012d00003a0000200241c0016a41106a22012007290300370300200241c0016a41086a22072006290300370300200220022903003703c001200041046a2004360000200041036a20032d00003a0000200020022f01203b0001200041086a20022903c001370000200041106a2007290300370000200041186a2001290300370000200041206a20082d00003a0000410121010c020b200541013a00002002411c6a41026a2201200241dc006a41026a2d00003a0000200241086a2204200241c0006a41086a290300370300200241106a2203200241c0006a41106a290300370300200241186a2206200241c0006a41186a2d00003a0000200220022f015c3b011c20022002290340370300200241206a41026a20012d00003a0000200220022f011c3b0120200241c0016a41186a20062d00003a0000200241c0016a41106a2003290300370300200241c0016a41086a2004290300370300200220022903003703c0010b410021010b200020013a0000200241f0016a24000b840401067f230041f0006b22022400200241d0006a41086a220341cefbc400ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341b5e1c300ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c00010212203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010bb010240024020022802502204450d0020002002290254370204200020043602000c010b20004100360208200042013702000b20031023200241f0006a24000f0b41c00041011030000bd50505067f017e047f017e027f23004180026b22022400024002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a2000280208280200220710be0220022d00184101460d0120022900192108200241086a2007106e20022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d00410121090c010b200310272209450d0820072802042003490d0120092007280200200310dc041a2007280204220a2003490d062007200a20036b3602042007200728020020036a3602000b20022008370310024002402001280200220b41d8a7c300460d002001280204210c0c010b2006410041da0010db041a200241186a410041840110db041a41e4011021220b450d074100210c200b4100360200200b41046a200241a0016a41dc0010dc041a200b41e0006a200241186a41840110dc041a200141003602042001200b3602000b2003ad220d422086200d84210d024002400340200b41086a2107200b2f0106220e41037421034100210a024003402003450d01200241106a2007410810de04220f450d03200341786a2103200a41016a210a200741086a2107200f417f4a0d000b200a417f6a210e0b0240200c450d00200c417f6a210c200b200e4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200e360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a10d2010c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d00200310230b200028020022032000280204490d010c030b0b200910230b200441013a00000b20024180026a24000f0b102f000b2003200a103e000b41e40141041030000b200341011030000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bc3b6010f017f017e047f017e077f017e027f017e037f017e027f017e177f027e127f230041e0056b2200240042002101200041b0036a41186a4200370300200041b0036a41106a22024200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703b003200441e4acc200ad4280808080a001841003220541086a290000370300200020052900003703a00420051023200220002903a0042206370300200041b0056a41086a2003290300370300200041b0056a41106a2006370300200041b0056a41186a20042903003703002000200637038803200020002903b0033703b005200041b0036a200041b0056a412010bb010240024020002802b00322070d0041012107410021080c010b20002902b4032201422088a721080b024002400240024002400240200841ffffff3f712008470d0020084105742204417f4c0d0002400240024002400240024002400240024002400240024002400240024002400240024020040d00410121090c010b200410212209450d010b4100210a4100210b4100210c02402008450d00200841057421052009210420072103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200541606a22050d000b200841057441606a41057641016a210c2008210b0b200041b0036a41186a22084200370300200041b0036a41106a220d4200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703b00320044183e0c400ad4280808080f000841003220541086a290000370300200020052900003703a0042005102320004188036a41086a20042903002206370300200020002903a004220e370388032002200e370000200241086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a200d290300370300200041b0056a41186a2008290300370300200020002903b0033703b005200041b0036a200041b0056a10c00220002902b403420020002802b00322031b2206422088a7220541306c220841306d21040240024020080d004101210d0c010b200441ffffff3f712004470d16200441057422084100480d1620081021220d450d022004210a0b2006a7210f2003410820031b21100240024020050d00410021080c010b200541306c210541002108200d2104201021030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200841016a2108200441206a2104200341306a2103200541506a22050d000b0b0240200f450d00201010230b02402001a722042001422088a722106b20084f0d00201020086a22032010490d16200441017422052003200520034b1b220341ffffff3f712003470d16200341057422054100480d160240024020040d002005102121070c010b200720044105742005102521070b2007450d032001422088a721102003ad21010b200720104105746a200d200841057410dc041a0240200a450d00200d10230b200041b0036a41186a220d4200370300200041b0036a41106a220a4200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703b003200441eeacc200ad42808080809001841003220541086a290000370300200020052900003703a0042005102320004188036a41086a20042903002206370300200020002903a004220e370388032002200e370000200241086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a200a290300370300200041b0056a41186a200d290300370300200020002903b0033703b005200041b0036a200041b0056a10c00220002902b403420020002802b00322041b2206422088a7220341306c220d41306d210a4100210502400240200d0d004101210f4100210a0c010b200a41ffffff3f71200a470d16200a410574220d4100480d16200d1021220f450d040b2006a721122004410820041b211302402003450d00200341306c210d41002105200f2104201321030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200541016a2105200441206a2104200341306a2103200d41506a220d0d000b0b201020086a211402402012450d00201310230b024002402001a7220420146b2005490d00200142ffffffff0f8321150c010b201420056a22032014490d16200441017422082003200820034b1b220341ffffff3f712003470d16200341057422084100480d160240024020040d002008102121070c010b200720044105742008102521070b2007450d052003ad21150b200720144105746a200f200541057410dc041a0240200a450d00200f10230b200041b0036a10c102200041e0026a20002802b003220420002802b803108a01024020002802b403450d00200410230b20004188036a41206a200041e0026a41206a2d00003a000020004188036a41186a200041e0026a41186a29030037030020004188036a41106a200041e0026a41106a29030037030020004188036a41086a200041e0026a41086a290300370300200020002903e00237038803200041b0036a20004188036a10a0010240024020002802d00322040d004104211641002108410021170c010b200041b0056a41186a200041b0036a41186a290300370300200041b0056a41106a200041b0036a41106a290300370300200041b0056a41086a200041b0036a41086a290300370300200020002903b0033703b00520002902d4032106412c10212216450d06201620002903b0053702002016200637022420162004360220201641186a200041b0056a41186a2204290300370200201641106a200041b0056a41106a2203290300370200201641086a200041b0056a41086a2208290300370200200041b0056a41206a20004188036a41206a2d00003a0000200420004188036a41186a290300370300200320004188036a41106a290300370300200820004188036a41086a29030037030020002000290388033703b005200041b0036a200041b0056a10a001024020002802d00322100d0041012108410121170c010b4102210d412c210341012108410121170340200041b0046a41186a200041b0036a41186a2903002206370300200041b0046a41106a200041b0036a41106a290300220e370300200041b0046a41086a200041b0036a41086a2903002211370300200020002903b00322013703b00420002902d4032118200041d0046a41186a220a2006370300200041d0046a41106a220f200e370300200041d0046a41086a22132011370300200020013703d004024020082017470d00200841016a22042008490d18200d2004200d20044b1b2217ad422c7e2206422088a70d182006a722044100480d180240024020080d002004102121160c010b201620032004102521160b2016450d090b201620036a220420002903d004370200200441186a200a290300370200200441106a200f290300370200200441086a2013290300370200200441246a2018370200200441206a2010360200200d41026a210d2003412c6a2103200841016a2108200041b0036a200041b0056a10a00120002802d00322100d000b0b200042003702f404200041d8a7c3003602f0042008201420056a22046a2219ad42e0007e2206422088a70d102006a7221a417f4c0d104108211202400240201a0d004108211b4108211c0c010b201a1021221b450d08201b211c0b410021144100211d02402004410574220d450d00200d410575221dad42d8007e2206422088a70d162006a722034100480d16200310212212450d090b02402004450d00200d41606a211e200041e0036a2103200041d8036a211f2012211041002105200721040340200041e0026a41186a220a200441186a220f290000370300200041e0026a41106a2213200441106a2214290000370300200041e0026a41086a2220200441086a2221290000370300200020042900003703e002200041b0056a41186a200f290000370300200041b0056a41106a2014290000370300200041b0056a41086a2021290000370300200020042900003703b005200041f0046a200041b0056a200510cf01200041b0036a41086a4200370300200041b0036a41106a4200370300200041b0036a41186a4200370300200041b0036a41206a4200370300201f4200370300200341186a200a290300370000200341106a2013290300370000200341086a2020290300370000200320002903e002370000200042003703b0032010200041b0036a41d00010dc04221041d0006a41003a0000201041d8006a2110200441206a2104200541016a2105200d41606a220d0d000b201e41057641016a21140b02402015500d00200710230b0240024020192008412c6c2203412c6d2204490d00201921220c010b201941017422052004200520044b1b2222ad42e0007e2206422088a70d162006a722044100480d160240024020190d0020041021211b0c010b201b201a20041025211b0b201b450d0a201b211c0b201620036a2123024020080d0041002124201621250c0f0b200041d0046a41106a212020162104201b2126410021240340200041b0046a41186a2203200441186a290200370300200041b0046a41106a2205200441106a290200370300200041b0046a41086a2208200441086a290200370300200020042902003703b0042004412c6a212520042802202227450d0f200441286a2802002113200441246a2802002128200041e0026a41186a22292003290300370300200041e0026a41106a222a2005290300370300200041e0026a41086a222b2008290300370300200020002903b0043703e002200041d0026a200041e0026a10c2022013ad42c8007e2206422088a70d112006a72204417f4c0d11200041d0026a41086a290300211820002903d00221150240024020040d004108211f0c010b20041021221f450d0c0b0240024020130d0041002113410021210c010b202720134105746a211e41002121202721100340201041086a2900002106201041106a290000210e20102900002111200041b0036a41186a2207201041186a290000370300200041b0036a41106a2219200e370300200041b0036a41086a221a2006370300200020113703b003201041206a2110200041f0046a210420002802f404210a024003402004280200220d41086a2103200d2f0106220f4105742104410021050240024003402004450d01200041b0036a2003412010de042208450d02200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a210f0b200a450d02200a417f6a210a200d200f4102746a4194036a21040c010b0b2014200d20054102746a41e8026a220328020022044d0d0f2012200441d8006c6a22042903202106200441286a290300210e200041d0046a41186a220d420037030020204200370300200041d0046a41086a22054200370300200042003703d004200041a0046a41086a220441d5fbc400ad42808080808001841003220841086a290000370300200020082900003703a0042008102320052004290300370300200020002903a0043703d004200441d6a0c200ad4280808080d001841003220841086a290000370300200020082900003703a00420081023200041a0056a41086a20042903002211370300200020002903a00422013703a00520202001370000202041086a2011370000200041b0056a41086a2005290300370300200041b0056a41106a2020290300370300200041b0056a41186a200d290300370300200020002903d0043703b005200041b8026a200041b0056a4120108902200041a8026a20002903c002200041b8026a41106a290300427f420010e2042014200328020022044d0d1020004198026a2015201820002903a802420020002802b80222051b221142012011420156200041a8026a41086a290300420020051b22114200522011501b22051b2011420020051b10e2042012200441d8006c6a220441286a427f200e20062000290398027c22112006542205ad7c220120052001200e54201120065a1b22051b3703002004427f201120051b37032020004188036a41186a2205200729030037030020004188036a41106a2208201929030037030020004188036a41086a220d201a290300370300200020002903b00337038803200328020021030240024020212013460d00202121040c010b201341016a22042013490d1a2013410174220a2004200a20044b1b220aad42c8007e2206422088a70d1a2006a722044100480d1a0240024020130d0020041021211f0c010b201f201341c8006c20041025211f0b201f450d1220132104200a21130b201f200441c8006c6a2204420037030020042003360220200441186a4200370300200441106a4200370300200441086a420037030020042000290388033702242004412c6a200d290300370200200441346a20082903003702002004413c6a2005290300370200202141016a21210b2010201e470d000b0b02402028450d00202710230b20004180056a41186a2208202929030037030020004180056a41106a220d202a29030037030020004180056a41086a2210202b290300370300200020002903e00237038005200041d0046a41186a220a420037030020204200370300200041d0046a41086a22034200370300200042003703d004200041a0046a41086a220441d5fbc400ad42808080808001841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703d004200441d6a0c200ad4280808080d001841003220541086a290000370300200020052900003703a00420051023200041a0056a41086a20042903002206370300200020002903a004220e3703a0052020200e370000202041086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a2020290300370300200041b0056a41186a200a290300370300200020002903d0043703b00520004180026a200041b0056a4120108902200041f0016a20002903880220004180026a41106a290300427f420010e204200041e0016a2015201820002903f001420020002802800222041b220642012006420156200041f0016a41086a290300420020041b22064200522006501b22041b2006420020041b10e20420264200370308202620002903e00137030020264200370310202641186a4200370300202641286a42003703002026420137032020262021360238202620133602342026201f360230202620002903800537023c202641c4006a2010290300370200202641cc006a200d290300370200202641d4006a2008290300370200202441016a2124202641e0006a21262025210420252023470d000c100b0b200441011030000b200841011030000b200541011030000b200d41011030000b200841011030000b412c41041030000b200441041030000b201a41081030000b200341081030000b200441081030000b200441081030000b41a0abc20020042014102d000b41c8a1c30020042014102d000b200441081030000b20252023460d000340202541206a2802002203450d012025412c6a21040240202541246a280200450d00200310230b2004212520232004470d000b0b02402017450d00201610230b0240024041c00710212207450d00024041f0061021222c450d004100212d4114212e02402014411420144114491b22290d004114212f410021160c030b201241a87f6a2127201441d8006c2125201c202441e0006c6a21194114211e200041b0036a41186a2117200041b0036a41106a211f200041b0036a41086a21284100211641002126034002402014450d00202521032012210403400240200441d0006a2d00000d0002400240200441206a290300220e200441286a29030022118450450d0042002106427f210e427f21110c010b427f2106200041d0016a427f427f200e201110e204200041d0016a41086a290300211120002903d001210e0b2004200e37030020042011370308200441106a2006370300200441186a20063703000b200441d8006a2104200341a87f6a22030d000b0b201c210802402024450d0002400340024020082802382204450d00200441c8006c2105200828023041206a210403402014200428020022034d0d0302402012200341d8006c6a22032d00500d0020032903202206200341286a290300220e84500d00200041b0036a2008290310200841186a2903002008290300200841086a2903002006200e10c302200320032903002206427f2006427f20002903b80320002802b003410146220d1b22117c220e200e2006542210200341086a220a2903002206427f201f290300200d1b22017c2010ad7c220e200654200e2006511b220d1b20112001845022101b370300200a2006427f200e200d1b20101b3703000b200441c8006a2104200541b87f6a22050d000b0b200841e0006a22082019460d020c000b0b41e4ecc00020032014102d000b202641016a212620252104202721050340024020040d00201e212f0c050b200441a87f6a2104200541a8016a2108200541d8006a2203210520082d00000d000b02402004450d00200341d8006a2105200341086a2903002106200341186a290300210e200341106a2903002111200329030021014100210803400240200541d0006a2d00000d00200541086a29030022182006200120062011200e200529030022152018200541106a2903002230200541186a290300223110c40241ff0171410146220d1b210620152001200d1b21012031200e200d1b210e20302011200d1b211120052003200d1b21030b200541d8006a21052004200841d8006a2208470d000b20030d00201e212f0c040b200341013a005002402024450d002003410c6a2120200341306a2121201c21050340200541e0006a211a024020052802382208450d0020052802302104200841c8006c210803400240024020202004460d00200441246a2021412010de040d010b200541186a220d2903002101200341086a22102903002106200529031021112003290300210e20032903102118200441186a200341186a220a290300370300200441106a2018370300200420064200200620017d200e201154ad7d2218200e20117d2215200e56201820065620182006511b220f1b20112001845022131b3703082004200e42002015200f1b20131b37030020102903002106200a290300210e2003290300211120052003290310370320200541286a200e37030020052011370310200d20063703000b200441c8006a2104200841b87f6a22080d000b0b201a2105201a2019470d000b0b2017200341c8006a290000370300201f200341c0006a2900003703002028200341386a290000370300200020032900303703b003200341286a29030021062003290320210e0240024002402016201e460d00201e212f0c010b201e41016a2204201e490d0b201e41017422032004200320044b1b222fad42307e2211422088a70d0b2011a722044100480d0b02400240201e0d002004102121070c010b2007201e41306c2004102521070b2007450d01201e2116202f211e0b20282903002111201f29030021012017290300211820002903b00321152007201641306c6a2204200e37032020042015370300200441286a2006370300200441186a2018370300200441106a2001370300200441086a2011370300201641016a2116202620294f0d040c010b0b200441081030000b41f00641041030000b41c00741081030000b02402024450d00201c202441e0006c6a2125201641306c21194114212e200041b0056a41186a211a200041b0056a41106a211e200041b0056a41086a21264100212d201c21200340201a202041d4006a290000370300201e202041cc006a2900003703002026202041c4006a2900003703002000202029003c3703b005024020202802382204450d002020280230220f200441c8006c6a2121202041106a211f41002113410421144100210a02400240024002400340200f221041246a2105201041c8006a210f410021082019210320072104024003402003450d01024020052004460d0020042005412010de04210d200841016a2108200341506a2103200441306a2104200d0d010b0b418094ebdc0321040240201f201010c5020d004100210302402010290310202029032085201041186a290300202041286a29030085844200520d00200041b0036a428094ebdc0342002010290300201041086a290300201f290300201f41086a29030010c30220002802b0034101460d0120002903b803220e42ff93ebdc0356200041b0036a41106a29030022064200522006501b0d01200ea721030b200321040b200020043602b0032000418094ebdc033602b403200041b0036a2004418094ebdc034b4102746a2802002103200041b0036a41186a22052010413c6a290000370300200041b0036a41106a2208201041346a290000370300200041b0036a41086a220d2010412c6a290000370300200020102900243703b00302400240200a2013460d00200a21040c010b201341016a22042013490d0f201341017422102004201020044b1b2210ad42247e2206422088a70d0f2006a722044100480d0f0240024020130d002004102121140c010b2014201341246c2004102521140b2014450d0320132104201021130b2014200441246c6a220420002903b003370200200d29030021062008290300210e2005290300211120042003360220200441186a2011370200200441106a200e370200200441086a2006370200200a41016a210a0b200f2021470d000b0240200a450d0002400240200a41246c22050d00410021030c010b201441206a2104410021030340200428020020036a2103200441246a21042005415c6a22050d000b0b02404100418094ebdc0320036b22042004418094ebdc034b1b2210200a6e2204418094ebdc032004418094ebdc03491b220d450d00201441206a2104410021030340200a2003460d042000417f20042802002205200d6a220820082005491b22053602b0032000418094ebdc033602b4032004200041b0036a2005418094ebdc034b4102746a280200360200200441246a2104200a200341016a2203470d000b0b02402010200d200a6c6b220d450d00410021040340200a2004200a7022034d0d062000417f2014200341246c6a2203280220220541016a220820082005491b22053602b0032000418094ebdc033602b4032003200041b0036a2005418094ebdc034b4102746a280200360220200441016a2204200d490d000b0b200041b0036a41186a2203201a290300370300200041b0036a41106a2205201e290300370300200041b0036a41086a22082026290300370300200020002903b0053703b0030240202d202e470d00202e41016a2204202e490d0e202e410174220d2004200d20044b1b2204ad422c7e2206422088a70d0e2006a7220d4100480d0e02400240202e0d00200d1021212c0c010b202c202e412c6c200d1025212c0b202c450d04202e212d2004212e0b202c202d412c6c6a220420002903b003370200200829030021062005290300210e200329030021112004200a3602282004201336022420042014360220200441186a2011370200200441106a200e370200200441086a2006370200202d41016a212d0c050b2013450d04201410230c040b200441041030000b41ece2c0002003200a102d000b200d41041030000b41ece2c0002003200a102d000b202041e0006a22202025470d000b0b0240201d450d00201210230b02402024450d00202441e0006c2103201c41306a210403400240200441046a280200450d00200428020010230b200441e0006a2104200341a07f6a22030d000b0b02402022450d00201b10230b20002802f00420002802f40420002802f80410d0010240024020070d0041012114200041013a00b4032000410b3a00b003200041b0036a108e01200041b0056a210d0c010b42002115200041b0036a41186a22054200370300200041b0036a41106a2232420037030041082133200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad4280808080800284220e1003220841086a290000370300200020082900003703a0042008102320032004290300370300200020002903a004220637038803200020063703b00320044183e0c400ad4280808080f000841003220841086a290000370300200020082900003703a00420081023203220002903a0042206370300200041b0056a41086a220d2003290300370300200041b0056a41106a22102006370300200041b0056a41186a220a20042903003703002000200637038803200020002903b0033703b005200041b0036a200041b0056a10c0024200213041082134024020002802b0032208450d00200041b0056aad4280808080800484100520002902b4032130200821340b200542003703002032420037030020034200370300200042003703b0032004200e1003220841086a290000370300200020082900003703a0042008102320032004290300370300200020002903a004220637038803200020063703b003200441eeacc200ad42808080809001841003220841086a290000370300200020082900003703a0042008102320004188036a41086a20042903002206370300200020002903a004220e370388032032200e370000203241086a2006370000200d200329030037030020102032290300370300200a2005290300370300200020002903b0033703b005200041b0036a200041b0056a10c002024020002802b0032204450d00200041b0056aad4280808080800484100520002902b4032115200421330b024002400240024002400240024002400240024002400240201641306c2203450d00200721040340200441286a2903002106200441206a290300210e200041d0046a41186a200441186a290200370300200041d0046a41106a200441106a290200370300200041d0046a41086a200441086a290200370300200020042902003703d004200e2006844200520d02200441306a2104200341506a22030d000b0b4101211a410021190240202f0d004100211e0c020b200710234100211e0c010b200041e0026a41086a2205200041d0046a41086a290300370300200041e0026a41106a2208200041d0046a41106a290300370300200041e0026a41186a220d200041d0046a41186a290300370300200020002903d004220637038005200020063703e00241201021221a450d07201a20002903e002370000201a41186a200d290300370000201a41106a2008290300370000201a41086a20052903003700000240024020034130470d00410121194101211e0c010b200441306a21052007201641306c6a220d41506a2110410121194101211e03402005210402400340200441286a2903002106200441206a290300210e200041d0046a41186a2203200441186a290200370300200041d0046a41106a2205200441106a290200370300200041d0046a41086a2208200441086a290200370300200020042902003703d004200e2006844200520d01200d200441306a2204470d000c030b0b200041b0056a41086a20082903002206370300200041b0056a41106a2005290300220e370300200041b0056a41186a20032903002211370300200020002903d00422013703b00520004180056a41186a2208201137030020004180056a41106a220a200e37030020004180056a41086a220f200637030020002001370380050240201e2019470d00201941016a22032019490d13201941017422052003200520034b1b221e41ffffff3f71201e470d13201e41057422034100480d130240024020190d0020031021211a0c010b201a201941057420031025211a0b201a450d040b200441306a2105201a20194105746a2203200029038005370000200341186a2008290300370000200341106a200a290300370000200341086a200f290300370000201941016a211920102004470d000b0b202f450d00200710230b200042003702e402200041d8a7c3003602e00202402019450d0020194105742103201a2104034020004188036a41186a200441186a29000037030020004188036a41106a200441106a29000037030020004188036a41086a200441086a2900003703002000200429000037038803200041b0036a41186a4200370300200041b0036a41106a4200370300200041b0036a41086a4200370300200042003703b003200041003602d803200042083703d003200041b0056a200041e0026a20004188036a200041b0036a10ce01024020002802d0052205450d0020002802d405450d00200510230b200441206a2104200341606a22030d000b0b0240202d412c6c2204450d00202c20046a211f200041d0046a41106a211441d5fbc400ad42808080808001842118202c211303400240201328022841246c2204450d002013280220221220046a21200340200041c0016a201310c202200041c0016a41086a290300210e20002903c0012111200041d0046a41186a2208420037030020144200370300200041d0046a41086a22034200370300200042003703d004200041a0046a41086a220420181003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703d004200441d6a0c200ad4280808080d001841003220541086a290000370300200020052900003703a00420051023200041a0056a41086a20042903002206370300200020002903a00422013703a00520142001370000201441086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a2014290300370300200041b0056a41186a2008290300370300200020002903d0043703b005200041a8016a200041b0056a412010890220004198016a20002903b001200041a8016a41106a290300427f420010e20420004188016a2011200e200029039801420020002802a80122041b22064201200642015620004198016a41086a290300420020041b22064200522006501b22041b2006420020041b10e204200041f8006a2000290388012206428094ebdc0380220e42002012220d3502202211420010e104200041f8006a41086a2903002000290378220120112006200e4280ec94a37c7e7c7e22062006428094ebdc038022064280ec94a37c7e7c4280cab5ee01562006a76aad7c2206200154ad7c210e200d41246a2112200041e0026a210420002802e402210a0240024003402004280200221041086a210320102f0106220f4105742104410021050240024003402004450d01200d2003412010de042208450d02200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a210f0b200a450d02200a417f6a210a2010200f4102746a41f8066a21040c010b0b201041e8026a200541306c6a21040240200d2013460d00200d2013412010de04450d002004427f2004290310221120067c220120012011542203200441186a22052903002211200e7c2003ad7c220120115420012011511b22031b3703102005427f200120031b37030020004188036a41186a220d201341186a29000037030020004188036a41106a2210201341106a29000037030020004188036a41086a220a201341086a2900003703002000201329000037038803200441286a2105200441206a2108024020042802282203200441246a280200470d00200341016a22042003490d172003410174220f2004200f20044b1b220fad42307e2211422088a70d172011a722214100480d170240024020030d002021102121040c010b2008280200200341306c2021102521040b2004450d0320082004360200200841046a200f360200200528020021030b2008280200200341306c6a220420002903880337030020042006370320200441186a200d290300370300200441106a2010290300370300200441086a200a290300370300200441286a200e3703002005200528020041016a3602000c010b2004427f2004290300221120067c220120012011542203200441086a22052903002211200e7c2003ad7c220120115420012011511b22031b3703002005427f200120031b3703002004427f2004290310221120067c220620062011542203200441186a22052903002206200e7c2003ad7c220e200654200e2006511b22031b3703102005427f200e20031b3703000b20122020460d020c010b0b202141081030000b2013412c6a2213201f470d000b0b4108213520004180056a41086a200041e0026a41086a280200360200200020002903e0023703800502400240024020190d0041002136410021120c010b201941057422044105752236ad42307e2206422088a70d112006a722034100480d11200310212235450d01201a20046a2119200041d0046a41106a21144100211241d5fbc400ad4280808080800184211820352110201a210a0340200a41086a2900002106200a41106a290000210e200a2900002111200041b0036a41186a2220200a41186a290000370300200041b0036a41106a2221200e370300200041b0036a41086a221f2006370300200020113703b003200a41206a210a20004180056a2104200028028405210f024003402004280200220d41086a2103200d2f01062213410574210441002105024003402004450d01200041b0036a2003412010de042208450d03200441606a2104200541016a2105200341206a21032008417f4a0d000b2005417f6a21130b0240200f450d00200f417f6a210f200d20134102746a41f8066a21040c010b0b41c9a3c20041da00104a000b20004188036a41186a2208202029030037030020004188036a41106a220f202129030037030020004188036a41086a2213201f290300370300200020002903b00337038803200d200541306c6a22044180036a290300210e200441f8026a2903002111200041d0046a41186a220d420037030020144200370300200041d0046a41086a22034200370300200042003703d004200041a0046a41086a220420181003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703d004200441d6a0c200ad4280808080d001841003220541086a290000370300200020052900003703a00420051023200041a0056a41086a20042903002206370300200020002903a00422013703a00520142001370000201441086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a2014290300370300200041b0056a41186a200d290300370300200020002903d0043703b005200041e0006a200041b0056a4120108902200041d0006a2000290368200041e0006a41106a290300427f420010e204200041c0006a20002903504200200028026022041b220642012006420156200041d0006a41086a290300420020041b22064200522006501b22041b2006420020041b2011200e10e104201041186a2008290300370300201041106a200f290300370300201041086a20132903003703002010200029038803370300201041286a200041c0006a41086a29030037030020102000290340370320201241016a2112201041306a2110200a2019470d000b0b0240201e450d00201a10230b41002137024002402012410d2012410d491b220d0d004108212141002138410021290c010b200d41306c220410212221450d070240200d41306c22080d00200d2138410021290c010b41002105410021290340203520056a22042903002106200441086a290300210e200441106a2903002111200441186a2903002101202120056a220341286a200441286a290300370300200341206a200441206a290300370300200341186a2001370300200341106a2011370300200341086a200e37030020032006370300202941016a21292008200541306a2205470d000b200d21380b202941306c220441306e21030240024020040d00410121390c010b200341057422054100480d11200510212239450d06200321370b024002402021202120046a223a470d004100211d0c010b202941306c21054100211d2039210420212103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000201d41016a211d200441206a2104200341306a2103200541506a22050d000b0b024002402035201241306c6a2035200d41306c6a6b22040d004108213b4100213c0c010b200441306e213c20044100480d1120041021223b450d050b024002402012410d4b0d004101213d4100213e203b21224101213f0c010b200d41306c201241306c22046b2105200420356a41506a21044100213e203b21030340200441086a2903002106200441106a290300210e200441186a290300211120042903002101200341286a200441286a290300370300200341206a200441206a290300370300200341186a2011370300200341106a200e370300200341086a200637030020032001370300200341306a2103200441506a2104203e41016a213e200541306a22050d000b203e41ffffff3f71203e470d11203e41057422044100480d1120041021223f450d04203b203e41306c6a21224100213d0b02400240203b2022470d004100211b0c010b4100211b203f2104203b2103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000201b41016a211b200441206a21042022200341306a2203470d000b0b20294115490d0820294101762240ad42307e2206422088a70d0b2006a72204417f4c0d0b0240024020040d004108211c4108210a0c010b20041021221c450d03201c210a0b202141506a2141202141406a2142200041b0036a41506a212a4104211f41002143410021164100211220292125034020252110410021254101210d02402010417f6a2204450d000240024002400240024002402021200441306c6a220420212010417e6a220341306c6a2205412010de042208450d0020084100480d010c020b200429032020052903205a200441286a2903002206200541286a290300220e5a2006200e511b0d010b4100210802402003450d002042201041306c6a21040340024002400240200441606a200441b07f6a412010de042205450d00200541004e0d010c020b2004290300200441506a220529030054200441086a2903002206200541086a290300220e542006200e511b0d010b200321080c020b200441506a21042003417f6a22030d000b0b024020102008490d00201020294b0d03201020086b220d4101762205450d022041201041306c6a21042021200841306c6a21030340200041b0036a41286a220f200341286a2213290300370300200041b0036a41206a2214200341206a2220290300370300200041b0036a41186a2219200341186a221a290300370300200041b0036a41106a221e200341106a2226290300370300200041b0036a41086a2225200341086a2227290300370300200020032903003703b003200441086a22242903002106200441106a2217290300210e200441186a22282903002111200441206a222b2903002101200441286a22232903002118200320042903003703002013201837030020202001370300201a20113703002026200e370300202720063703002023200f290300370300202b2014290300370300202820192903003703002017201e29030037030020242025290300370300200420002903b003370300200441506a2104200341306a21032005417f6a22050d000c030b0b20082010103e000b024020030d004102210d410021250c040b2042201041306c6a21044102210d0240034002400240200441606a200441b07f6a412010de042203450d00200341004e0d010c030b2004290300200441506a220329030054200441086a2903002206200341086a290300220e542006200e511b0d020b200441506a21042010200d41016a220d470d000b410021252010210d0c040b2010200d6b21080b024020080d00200821250c030b0240200d41094d0d00200821250c030b0240201020294b0d00201020086b21052021200841306c6a2113034020102008417f6a2225490d030240201020256b220d4102490d00024002402021200841306c6a22042021202541306c6a220f412010de042203450d0020034100480d010c020b2004290320200f2903205a200441286a2903002206200f41286a290300220e5a2006200e511b0d010b200041b0036a41286a2214200f41286a2203290300370300200041b0036a41206a2220200f41206a2208290300370300200041b0036a41186a2219200f41186a221a290300370300200041b0036a41106a221e200f41106a2226290300370300200041b0036a41086a2227200f41086a22242903003703002000200f2903003703b003200f20042903003703002024200441086a2903003703002026200441106a290300370300201a200441186a2903003703002008200441206a2903003703002003200441286a290300370300410121030240200d4103490d004101210320132104034002400240202a2004460d00200441306a200041b0036a412010de042208450d0020084100480d010c030b200441d0006a29030020002903d0035a200441d8006a29030022062014290300220e5a2006200e511b0d020b200441286a200441d8006a290300370300200441206a200441d0006a290300370300200441186a200441c8006a290300370300200441106a200441c0006a290300370300200441086a200441386a2903003703002004200441306a2208290300370300200821042005200341016a2203470d000b0b200f200341306c6a220420002903b003370300200441286a2014290300370300200441206a2020290300370300200441186a2019290300370300200441106a201e290300370300200441086a20272903003703000b2025450d04200541016a2105201341506a211320252108200d410a4f0d040c000b0b20102008417f6a2225490d010b201020291036000b20252010103e000b02400240024020122043470d00204341016a22042043490d14204341017422032004200320044b1b220441ffffffff01712004470d14200441037422034100480d140240024020430d0020031021211f0c010b201f204341037420031025211f0b201f450d0120042143201621120b201f20124103746a2204200d36020420042025360200201641016a2212211620124102490d01024003400240024002400240201f2012417f6a22164103746a2204280200450d002012410374201f6a220841746a2802002205200428020422034d0d000240201241024b0d0020122116410221120c080b201f2012417d6a22194103746a2802042204200320056a4d0d010240201241034b0d0020122116410321120c080b200841646a280200200420056a4d0d01201221160c070b20124103490d0120042802042103201f2012417d6a22194103746a28020421040b20042003490d010b2012417e6a21190b0240024002400240024002402012201941016a22274b2224450d00201220194b2217450d01201f20194103746a221a2802042228201a2802006a2204201f20274103746a221e2802002226490d02200420294b0d032021202641306c6a220f201e280204222041306c22036a2105200441306c2108200420266b221020206b220420204f0d04201c2005200441306c220310dc041a200a20036a210d0240024020204101480d00200441014e0d010b20052104200a21080c060b204120086a21030340200541506a2104200d41506a2110024002400240200d2005460d0020102004412010de042213450d0020042108201341004e0d010c020b20042108200d41706a2213290300200541706a221429030054201341086a2903002206201441086a290300220e542006200e511b0d010b200521042010210d201021080b20032008290300370300200341286a200841286a290300370300200341206a200841206a290300370300200341186a200841186a290300370300200341106a200841106a290300370300200341086a200841086a2903003703000240200f2004490d00200a21080c070b200341506a210320042105200a2108200a200d490d000c060b0b4198bfc10020272012102d000b4198bfc10020192012102d000b20262004103e000b200420291036000b201c200f200310dc041a200a20036a210d0240024020204101480d00201020204a0d010b200f2104200a21080c010b202120086a2113200a2103200a2108200f21040340024002400240024020052003460d0020052003412010de042210450d00201041004e0d010c020b2005290320200329032054200541286a2903002206200341286a290300220e542006200e511b0d010b200341306a2108200521100c010b200541306a2110200521030b20042003290300370300200441286a200341286a290300370300200441206a200341206a290300370300200441186a200341186a290300370300200441106a200341106a290300370300200441086a200341086a290300370300200441306a2104201020134f0d012008210320102105200d20084b0d000b0b20042008200d20086b220320034130706b10dc041a02402017450d00201a2026360200201a41046a202820206a3602002024450d02201e201e41086a20122027417f736a41037410dd041a20162112201641014d0d040c010b0b41a8bfc10020192012102d000b41b8bbc000102b000b200341041030000b20250d000b02402043450d00201f10230b2040450d09201c10230c090b200341081030000b200341011030000b200441081030000b200441011030000b200441081030000b200541011030000b200441081030000b412041011030000b20294102490d002029417f6a21052021202941306c6a210a4100210d03400240024002400240202920052204417f6a2205490d00202920056b22034102490d03024002402021200441306c6a22042021200541306c6a2210412010de042208450d0020084100480d010c050b200429032020102903205a200441286a2903002206201041286a290300220e5a2006200e511b0d040b200041b0036a41286a220f201041286a2208290300370300200041b0036a41206a2213201041206a2214290300370300200041b0036a41186a2212201041186a2220290300370300200041b0036a41106a221f201041106a2219290300370300200041b0036a41086a221a201041086a221e290300370300200020102903003703b00320102004290300370300201e200441086a2903003703002019200441106a2903003703002020200441186a2903003703002014200441206a2903003703002008200441286a2903003703004101210420034103490d0241002108200a2104034002400240200041b0036a2004460d002004200041b0036a412010de042203450d0020034100480d010c040b200441206a29030020002903d0035a200441286a2903002206200f290300220e5a2006200e511b0d030b200441506a22032004290300370300200341286a200441286a290300370300200341206a200441206a290300370300200341186a200441186a290300370300200341106a200441106a290300370300200341086a200441086a290300370300200441306a2104200d200841016a2208470d000c020b0b20052029103e000b200841016a21040b2010200441306c6a220420002903b003370300200441286a200f290300370300200441206a2013290300370300200441186a2012290300370300200441106a201f290300370300200441086a201a2903003703000b200d41016a210d200a41506a210a20050d000b0b2030422088a7220441306c220341306d2110410021050240024002400240024002400240024020030d004101210a410021100c010b201041ffffff3f712010470d0d201041057422034100480d0d20031021220a450d010b2030a7210d02402004450d00200441306c210841002105200a2104203421030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200541016a2105200441206a2104200341306a2103200841506a22080d000b0b0240200d450d00203410230b200041b0036a2039201d200a200510c602200041c4036a280200210d200041c0036a280200211920002802bc03211f20002802b403211a20002802b003212602402010450d00200a10230b200d41ffffff3f71200d470d07200d4105742210417f4c0d070240024020100d004101210a0c010b20101021220a450d020b4100211341002114410021120240200d450d00200d4105742105200a2104201f2103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200541606a22050d000b200d41057441606a41057641016a2112200d21140b200041b0036a41186a22084200370300200041b0036a41106a220f4200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a0043703b00320044183e0c400ad4280808080f000841003220541086a290000370300200020052900003703a0042005102320004188036a41086a20042903002206370300200020002903a004220e370388032002200e370000200241086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a200f290300370300200041b0056a41186a2008290300370300200020002903b0033703b005200041b0036a200041b0056a10c00220002902b403420020002802b00322031b2206422088a7220541306c220841306d21040240024020080d004101210f0c010b200441ffffff3f712004470d0d200441057422084100480d0d20081021220f450d03200421130b2006a7211e2003410820031b21200240024020050d00410021050c010b200541306c210841002105200f2104202021030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200541016a2105200441206a2104200341306a2103200841506a22080d000b0b0240201e450d00202010230b200a2012200f200510c70202402013450d00200f10230b02402014450d00200a10230b0240024020100d00410121140c010b201010212214450d040b4100210f4100210a410021100240200d450d00200d410574210520142104201f2103034020042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200441206a2104200341206a2103200541606a22050d000b200d41057441606a41057641016a2110200d210a0b2015422088a7220341306c220541306d21040240024020050d004101210d0c010b200441ffffff3f712004470d0d200441057422054100480d0d20051021220d450d052004210f0b2015a721130240024020030d00410021050c010b200341306c210841002105200d2104203321030340200341086a2900002106200341106a290000210e20032900002111200441186a200341186a290000370000200441106a200e370000200441086a200637000020042011370000200541016a2105200441206a2104200341306a2103200841506a22080d000b0b02402013450d00203310230b200041b0036a203f201b200d200510c602200041c4036a2802002103200041c0036a280200210520002802bc032104024020002802b403450d0020002802b00310230b0240200f450d00200d10230b0240200a20106b200341057422034105752208490d00201020086a2112200a21200c060b201020086a22122010490d0c200a41017422082012200820124b1b222041ffffff3f712020470d0c202041057422084100480d0c02400240200a0d002008102121140c010b2014200a4105742008102521140b20140d05200841011030000b200341011030000b201041011030000b200841011030000b201041011030000b200541011030000b201420104105746a2004200310dc041a02402005450d00200410230b0240200c450d002009200c4105746a210a024020290d00201b410574210d200921080340200841086a2900002106200841106a290000210e20082900002111200041b0056a41186a200841186a290000370300200041b0056a41106a200e370300200041b0056a41086a2006370300200020113703b005200841206a2108200d2103203f21040240024003402003450d01200041b0056a2004460d02200341606a21032004200041b0056a412010de042105200441206a210420050d000c020b0b200041206a200041b0056a4280a094a58d1d420010c8022000290320200041206a41086a29030010c9020b2008200a470d000c020b0b201b410574210f20294101462113200921100340201041086a2900002106201041106a290000210e20102900002111200041b0056a41186a201041186a290000370300200041b0056a41106a200e370300200041b0056a41086a2006370300200020113703b00541002103024020130d0041002103202921050340200041b0036a41186a20212005410176220820036a220d41306c6a220441186a290000370300200041b0036a41106a200441106a290000370300200041b0036a41086a200441086a290000370300200020042900003703b003200d2003200041b0036a200041b0056a412010de044101481b2103200520086b220541014b0d000b0b201041206a2110200041b0036a41186a2021200341306c6a220441186a290000370300200041b0036a41106a200441106a290000370300200041b0036a41086a200441086a290000370300200020042900003703b003200f2103203f21040240200041b0036a200041b0056a412010de04450d00024003402003450d01200041b0056a2004460d02200341606a21032004200041b0056a412010de042105200441206a210420050d000c020b0b200041306a200041b0056a4280a094a58d1d420010c8022000290330200041306a41086a29030010c9020b2010200a470d000b0b0240200b450d00200910230b02402012450d0020124105742103201421040340200441086a2900002106200441106a290000210e20042900002111200041b0036a41186a200441186a290000370300200041b0036a41106a200e370300200041b0036a41086a2006370300200020113703b003200041106a200041b0036a4280a094a58d1d420010c8022000290310200041106a41086a29030010c902200441206a2104200341606a22030d000b0b02402020450d00201410230b200041b0036a41186a22084200370300200041b0036a41106a220d4200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a004220637038803200020063703b00320044183e0c400ad4280808080f000841003220541086a290000370300200020052900003703a0042005102320004188036a41086a20042903002206370300200020002903a004220e370388032032200e370000203241086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a200d290300370300200041b0056a41186a2008290300370300200020002903b0033703b005200041003602b803200042013703b0032029200041b0036a105c0240024002402029450d002021210403402004200041b0036a1071200441286a2903002106200441206a290300210e0240024020002802b403220820002802b80322036b4110490d0020002802b00321050c010b200341106a22052003490d0b200841017422032005200320054b1b220d4100480d0b0240024020080d00200d102121050c010b20002802b0032008200d102521050b2005450d032000200d3602b403200020053602b00320002802b8032103200d21080b200520036a220d2006370008200d200e3700002000200341106a22033602b803203a200441306a2204470d000c030b0b20002802b803210320002802b403210820002802b00321050c010b200d41011030000b200041b0056aad428080808080048422112003ad4220862005ad84100202402008450d00200510230b200041b0036a41186a22084200370300200041b0036a41106a220d4200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad42808080808002841003220541086a290000370300200020052900003703a0042005102320032004290300370300200020002903a004220637038803200020063703b003200441eeacc200ad42808080809001841003220541086a290000370300200020052900003703a0042005102320004188036a41086a20042903002206370300200020002903a004220e370388032032200e370000203241086a2006370000200041b0056a41086a2003290300370300200041b0056a41106a200d290300370300200041b0056a41186a2008290300370300200020002903b0033703b005200041003602b803200042013703b003203e200041b0036a105c02400240203d450d0020002802b803210320002802b403210820002802b00321050c010b203b210403402004200041b0036a1071200441286a2903002106200441206a290300210e0240024020002802b403220820002802b80322036b4110490d0020002802b00321050c010b200341106a22052003490d09200841017422032005200320054b1b220d4100480d090240024020080d00200d102121050c010b20002802b0032008200d102521050b2005450d052000200d3602b403200020053602b00320002802b8032103200d21080b200520036a220d2006370008200d200e3700002000200341106a22033602b8032022200441306a2204470d000b0b20112003ad4220862005ad84100202402008450d00200510230b2029ad42307e2206422088a70d012006a72204417f4c0d010240024020040d00410821100c010b200410212210450d040b02400240203a2021470d00410021050c010b202941306c21084100210520102104202121030340200341086a2903002106200341106a290300210e200341186a290300211120032903002101200441286a200341286a290300370300200441206a200341206a290300370300200441186a2011370300200441106a200e370300200441086a200637030020042001370300200441306a2104200541016a2105200341306a2103200841506a22080d000b0b2005ad42307e2206422088a70d012006a72204417f4c0d010240024020040d004108210a0c010b20041021220a450d050b410021080240200541306c220d450d0041002108200a2104201021030340200341086a2903002106200341106a290300210e200341186a290300211120032903002101200441286a200341286a290300370300200441206a200341206a290300370300200441186a2011370300200441106a200e370300200441086a200637030020042001370300200441306a2104200841016a2108200341306a2103200d41506a220d0d000b0b200041c0036a2008360200200041bc036a2005360200200041b8036a200a360200200041003a00b4032000410b3a00b003200020002f00b0053b00b5032000200041b2056a2d00003a00b703200041b0036a108e0102402029450d00201010230b02402019450d00201f10230b0240201a450d00202610230b0240203e450d00203f10230b0240203c450d00203b10230b02402037450d00203910230b02402038450d00202110230b02402036450d00203510230b200028028805210d20002802800521040240024020002802840522050d00200421030c010b2005210820042103034020032802f80621032008417f6a22080d000b0340200420042f01064102746a41f8066a28020021042005417f6a22050d000b0b200041cc036a20042f010636020041002114200041c8036a4100360200200041c4036a20043602002000200d3602d003200041003602c003200042003703b803200020033602b403200041003602b003200041b0036a10d4010240202d450d00202d412c6c2103202c41206a210403400240200441046a280200450d00200428020010230b2004412c6a2104200341546a22030d000b0b200041b0056a210d202e450d00202c10230b200041b0036a41186a22054200370300200041b0036a41106a22084200370300200041b0036a41086a22034200370300200042003703b003200041a0046a41086a2204419da0c200ad428080808080028422061003221041086a290000370300200020102900003703a0042010102320032004290300370300200020002903a004220e370388032000200e3703b003200441e4acc200ad4280808080a001841003221041086a290000370300200020102900003703a00420101023200820002903a004220e370300200041b0056a41086a22102003290300370300200041b0056a41106a220a200e370300200041b0056a41186a220f20042903003703002000200e37038803200020002903b0033703b005200dad4280808080800484220e1005200542003703002008420037030020034200370300200042003703b003200420061003221341086a290000370300200020132900003703a0042013102320032004290300370300200020002903a004221137038803200020113703b0032004418c92c300ad4280808080e0018422111003221341086a290000370300200020132900003703a0042013102320052004290300220137030020102003290300370300200a20002903a0042218370300200f20013703002000201837038803200020002903b0033703b005200041086a200d4120108f012000280208210d200028020c2113200542003703002008420037030020034200370300200042003703b003200420061003220841086a290000370300200020082900003703a0042008102320032004290300370300200020002903a004220637038803200020063703b003200420111003220841086a290000370300200020082900003703a0042008102320052004290300220637030020102003290300370300200a20002903a0042211370300200f20063703002000201137038803200020002903b0033703b0052000201341016a4101200d1b3602b003200e200041b0036aad4280808080c0008410020240024020070d00200b450d062014410173450d010c060b2014450d050240202f450d00200710230b0240202d450d00202d412c6c2103202c41206a210403400240200441046a280200450d00200428020010230b2004412c6a2104200341546a22030d000b0b0240202e450d00202c10230b200b450d050b200910230c040b102f000b200d41011030000b200441081030000b200441081030000b200041e0056a24000f0b102a000bbd0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a108401024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a2002350230422086200235022884100820004100360200200228022c450d00200228022810230b2003450d00200110230b200241e0006a24000bc60303047f017e017f230041d0006b22012400200141c0006a41086a2202419da0c200ad42808080808002841003220341086a2900003703002001200329000037034020031023200141206a41086a220420022903003703002001200129034037032020024190a0c200ad4280808080d001841003220341086a2900003703002001200329000037034020031023200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210302400240024002404120450d004120102122020d01412041011030000b411021030240411010212202450d00200141106a210420022001290300370000200241086a200141086a2903003700000c020b411041011030000b20022001290300370000200241086a200141086a290300370000200141106a210441204110470d010b20022003200341017422064120200641204b1b220610252202450d02200621030b20022004290000370010200241186a200441086a290000370000200041203602082000200336020420002002360200200141d0006a24000f0b102f000b200641011030000bff0202057f027e230041e0006b22022400200241c0006a41086a2203419da0c200ad42808080808002841003220441086a2900003703002002200429000037034020041023200241206a41086a2205200329030037030020022002290340370320200341a3a4c200ad4280808080f000841003220441086a2900003703002002200429000037034020041023200241306a41086a2206200329030037030020022002290340370330200241c0006a200110ac01024041c000102122040d0041c00041011030000b200420022903203700002004200229033037001020042002290040370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241c0006a41106a290000370000200441386a200241c0006a41186a290000370000200241086a200441c000108902200241086a41106a290300210720022903102108200228020821032004102320002007420020031b37030820002008420020031b370300200241e0006a24000bac2e07017f017e017f027e017f027e187f23004180036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610e20420074188016a200729039801220d20074198016a41086a290300220e2005200610e1042002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610e204200741e8006a20072903782201200741f8006a41086a29030022032005200610e1044200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010e104200741c8006a20024200200a420010e104200741d8006a200a42002004420010e104024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d00411010212209450d032009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037029c02200720093602980220074198026a10d004200741a8016a41086a20072802a00236020020072007290398023703a801411010212209450d02200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029c02200720093602980220074198026a10d004200741b8016a41086a20072802a00236020020072007290398023703b801411010212209450d0120092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c00037029c02200720093602980220074198026a10d00420072802a0022110200728029c0221112007280298022112200741f0026a41086a200741b8016a41086a280200360200200720072903b8013703f00220074198026a41086a200741a8016a41086a280200360200200720072903a80137039802200741c8016a20074198026a200741f0026a10d204024020072802f402450d0020072802f00210230b200741c8016a10d00420104101460d0420072802cc01211320072802c80121142010450d0e2012280200450d0e024020072802d0012215450d002014280200450d0f201520104d0d0f200720103602d401201520106b221641016a22174101201741014b1b221841ffffffff03712018470d0620184102742209417f4c0d0602400240024020090d00410421190c010b200910272219450d010b201041ffffffff03712010470d072010410274221a417f4c0d07024002400240201a0d004104211b0c010b201a1027221b450d010b410221094101210f2012280200220c67221c211d0240200c41ffffffff034b0d0041022109201c210c4101210f034020094101200c4101711b200f6c210f200c41034b211e200920096c2109200c410176221d210c201e0d000b0b200720153602f802200720133602f402200720143602f002024041041021220c450d00200c20094101201d4101461b200f6c220f360200200742818080801037029c022007200c36029802200741d8016a200741f0026a20074198026a10d204200c1023024002400240201a0d00410421090c010b201a10212209450d010b20092012201041027410dc042109200720103602f802200720103602f402200720093602f0020240410410212209450d002009200f360200200742818080801037029c022007200936029802200741e8016a200741f0026a20074198026a10d20420091023024002400240024020072802d40120176a220920072802e001220c4d0d00024002402009200c6b22090d004104210f410021090c010b200941ffffffff03712009470d032009410274221e4100480d03201e1021220f450d02200f4100200941027410db041a0b20072802d801211d2009211e0240200c450d002009200c6a221e2009490d0320094101742214201e2014201e4b1b221e41ffffffff0371201e470d03201e41027422144100480d030240024020090d0020141021210f0c010b200f200941027420141025210f0b200f450d040b200f20094102746a201d200c41027410dc041a2009200c6a2109024020072802dc01450d00201d10230b200720093602e0012007201e3602dc012007200f3602d8010b200741e8016a10d00402400240024002400240024002400240024002400240034020072016221f3602f401024020072802e001220920072802d401220c201f6a220f417f736a221e2009490d0041d4b2c600201e2009102d000b0240024002400240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802f00122092009200c6b220c4d0d0120072802e801200c4102746a35020022024200510d02201f201f4100476b211620072802d8012209201e4102746a35020021012009200f4102746a3502002104200741003602f80120072004200142208684200280220137038002200741003602880220072004200120027e7d42ffffffff0f83370390022007200741f4016a3602ac022007200741d8016a3602a8022007200741d4016a3602a4022007200741e8016a3602a002200720074188026a36029c022007200741f8016a3602980220074198026a10d3041a034020072802880241016a41004c0d04024020072903900242ffffffff0f560d0020074198026a10d3040d010b0b2007290380022102200720072802d40120072802f40122096a3602f402200720093602f0022007200741d8016a3602fc02200741023a00f802200741b0026a200741f0026a10d60420072802f001220941ffffffff03712009470d2b2009410274220c417f4c0d2b20072802e801210f02400240200c0d004104211e0c010b200c1021221e450d050b201e200f200c10dc04210c200720093602e802200720093602e4022007200c3602e002410810212209450d0520092002a72220360204200920024220883e020020074282808080203702f402200720093602f002200741c0026a200741e0026a200741f0026a10d2042009102320072802b802222120072802c8022222202120224b1b22144101201441014b1b220c41ffffffff0371200c470d2b200c410274220f417f4c0d2b20072802b402212320072802b002212402400240200f0d00410421250c010b200f10272225450d070b2014450d092022417f6a221720224b211520072802c00221262021417f6a221a20214b0d07200c417f6a21092025200f6a417c6a211d4100210f4200210203404100211e02402021201a200f6b22134d0d004100211e2013201a4b0d00202420134102746a280200211e0b201ead21044100211e024020150d0020222017200f6b22134d0d00201320174b0d00202620134102746a280200211e0b024002402004201ead22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d0c201d20043e0200201d417c6a211d2009417f6a2109200f41016a220f2014490d000c090b0b41d4b2c600200f2009102d000b41d4b2c600200c2009102d000b41c8b3c600102b000b4187b5c6004118200741f0026a41a0b5c6001031000b200c41041030000b410841041030000b200f41041030000b200c417f6a21092025200f6a417c6a211e4100211d4200210203404100210f024020150d004100210f20222017201d6b22134d0d004100210f201320174b0d00202620134102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201e20043e0200201e417c6a211e2009417f6a2109201d41016a221d2014490d000b0b41012113200250450d010b410021130b02402023450d00202410230b20072802d401221e20072802f401220f6a2215201e490d05200f20154f0d01200f417f7321090340200c200c200f6a20096a221d4d0d03200920072802e00122146a220f20094f0d0420072802d801200f4102746a2025201d4102746a2802003602002009417f6a210920072802f401210f201e417f6a221e0d000c050b0b41b8b3c6002009200c102d000b201e450d020c030b41d4b2c60020222021202220214b1b22074101200741014b1b200f6a20096a200c102d000b41b8b3c600200f2014102d000b200c200c2015417f7322096a200f6a220f4d0d0220072802e001220c20096a2209200c4f0d0320072802d80120094102746a2025200f4102746a28020036020020072802f401210f0b2018200f417f736a220920184f0d03201920094102746a202036020002402013450d00201820072802f401417f736a220920184f0d05201920094102746a22092009280200417f6a36020020072802f401210920072802d401210c200741023a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741d0026a200741f0026a10d60420072802f001220941ffffffff03712009470d1b2009410274220c417f4c0d1b20072802e801210f02400240200c0d004104211e0c010b200c1021221e450d070b201e200f200c10dc04210c200720093602f802200720093602f4022007200c3602f002200741e0026a200741f0026a200741d0026a10d104024020072802d401220920072802f40122146a220c2009490d00024002402014200c4f0d00200c417f73210920072802e002211320072802e802210f2014211e0340200f200f201e6a20096a221e4d0d0b200920072802e00122156a221d20094f0d0c20072802d801201d4102746a2013201e4102746a280200360200200941016a210920072802f401211e2014200c417f6a220c490d000c020b0b20090d0120072802e802210f2014211e0b201e2014417f7322096a220c200f6a221e200c4f0d0a20072802e001220c20096a2209200c4f0d0b20072802d80120094102746a20072802e002201e4102746a2802003602000b024020072802e402450d0020072802e00210230b20072802d402450d0020072802d00210230b20251023024020072802c402450d0020072802c00210230b201f0d000b0240201c450d004101210920072802d401220c4101460d1f4100200c6b2114201c411f7121134100201c6b411f7121152010410274201b6a417c6a210c417f210903400240200920072802e001221e6a220f2009490d0041d4b2c600200f201e102d000b201e200f417f6a221d4d0d0b201020096a221e20104f0d0c200c20072802d801221e201d4102746a280200201574201e200f4102746a28020020137672360200200c417c6a210c20142009417f6a2209460d1f0c000b0b20072802e001211020072802dc01210f20072802d801211e201b1023410021090c1f0b41d4b2c600200f200c102d000b41b8b3c6002009200c102d000b41b8b3c60020092018102d000b41d4b2c60020092018102d000b200c41041030000b41d4b2c600201e200f102d000b41b8b3c600201d2015102d000b41d4b2c600201e200f102d000b41b8b3c6002009200c102d000b41d4b2c600200f417f6a201e102d000b41b8b3c600201e2010102d000b201e41041030000b102a000b201441041030000b410441041030000b201a41041030000b410441041030000b201a41041030000b200941041030000b41d4b2c60041004100102d000b200741286a200729035820032008200610e20420004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c140b411041041030000b411041041030000b411041041030000b20074198026a41086a200741c8016a41086a280200221d360200200720072903c80137039802201d4101201d41014b1b221e41ffffffff0371201e470d00201e4102742209417f4c0d000240024020090d004104211a0c010b20091027221a450d020b201d450d03201d417f6a2114201a201e201d6b22134102746a210c200f4101200f41014b1bad21024200210441002109200728029802210f0340201e201320096a22154d0d03200c2004422086200f35020084220420028022013e020020142009460d04200c41046a210c200f41046a210f2004200120027e7d2104201d200941016a22094b0d000b41d4b2c6002009201d102d000b102f000b200941041030000b41b8b3c6002015201e102d000b2007201e3602f8022007201e3602f4022007201a3602f002200728029c02450d0720072802980210230c070b20072802d40121090b20072802e001220c200c20096b220f4d0d012010201020096b22094d0d02201b20094102746a20072802d801200f4102746a280200201c411f7176360200410121092010210f201b211e0b024020072802ec01450d0020072802e80110230b2009450d0320072802dc01450d0320072802d80110230c030b41d4b2c600200f200c102d000b41b8b3c60020092010102d000b4100211902402013450d00201410230b0b410410212209450d012009410036020041041021220c450d02200c41003602004101211d0240024020190d002009211941012118200c211e4101210f410121100c010b20091023200c10230b2007201836028002200720183602fc01200720193602f801200720103602a0022007200f36029c022007201e3602980220074198026a10d004420021020240024020072802a00222094105744180014d0d00421d21040c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741206a211e4120210c420021020340200741186a200f20096a3502004200200c41e0007110df04201e29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d0020072802980210230b201d0d030240200420084201882006423f8684562002200642018822045620022004511b450d0020074188026a41086a200741f8016a41086a280200360200200720072903f80137038802411010212209450d0520094280808080103702082009420037020020074284808080c00037029c02200720093602980220074198026a10d004200741f0026a41086a20072802a00236020020072007290398023703f002200741f8016a20074188026a200741f0026a10d10420072802f402450d0020072802f00210230b200741f0026a41086a200741f8016a41086a280200360200200720072903f8013703f0020b200741f0026a10d00420074198026a41086a2209200741f0026a41086a280200360200200720072903f0023703980220074198026a10d0044200210202400240200928020022094105744180014d0d00421d21044101211d0c010b4100211d024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211e0240200c200f470d00201ead21040c010b200c41786a210f201ead2104200741106a211e4120210c420021020340200741086a200f20096a3502004200200c41e0007110df04201e29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c02450d0020072802980210230b02400240201d0d00200041106a2002370300200041086a2004370300410021090c010b20004190b6c600360204200041086a4119360200410121090b200020093602002011450d04201210230c040b410441041030000b410441041030000b200720043e029c02200741eab4c6003602980241d0b5c600412f20074198026a4180b6c6001031000b411041041030000b20074180036a24000bd30201037f230041d0006b220824000240024002402002200685200320078584500d00200220038450450d01410121090c020b417f20002004852001200585844200522000200454200120055420012005511b1b21090c010b0240200620078450450d0041ff0121090c010b200841206a2000200110d704200841306a2006200710d704200841c0006a41086a2209200841206a41086a220a280200360200200820082903203703402008200841c0006a200841306a10d20402402008280234450d00200828023010230b200841206a2004200510d704200841306a2002200310d7042009200a28020036020020082008290320370340200841106a200841c0006a200841306a10d20402402008280234450d00200828023010230b2008200841106a10d404210902402008280214450d00200828021010230b2008280204450d00200828020010230b200841d0006a240020090beb0203017f047e017f230041d0006b2202240002400240200029031022032001290310220485200041186a2903002205200141186a29030022068584500d00200241206a2000290300200041086a29030010d704200241306a2004200610d704200241c0006a41086a2200200241206a41086a2207280200360200200220022903203703402002200241c0006a200241306a10d20402402002280234450d00200228023010230b200241206a2001290300200141086a29030010d704200241306a2003200510d7042000200728020036020020022002290320370340200241106a200241c0006a200241306a10d20402402002280234450d00200228023010230b2002200241106a10d404210002402002280214450d00200228021010230b200041ff0171210002402002280204450d00200228020010230b20004521000c010b2000290300200129030085200041086a290300200141086a29030085845021000b200241d0006a240020000bc40901157f230041206b220524002003410020041b21062001410020021b2107200341206a200320041b2108200141206a200120021b2109200120024105746a210a200320044105746a210b4100210c4100210d4101210e4100210f410021104101211102400340200c4101742112200c410574211302400240024002400340024020060d0020082114200e2115200d2116200c21020c040b2006210120082103200e2115200d2116200c2102201321042012211702400340024002402007450d0020012007460d0620012007412010de042214450d062014417f4c0d01200321082015210e2016210d2002210c200121060c080b200541186a2203200641186a290000370300200541106a2202200641106a290000370300200541086a2207200641086a290000370300200520062900003703000240200c200d470d00200c41016a2201200c490d0a200c41017422042001200420014b1b220d41ffffff3f71200d470d0a200d41057422014100480d0a02400240200c0d0020011021210e0c010b200e200c41057420011025210e0b200e450d030b200e200c4105746a22012005290300370000200141186a2003290300370000200141106a2002290300370000200141086a200729030037000041002107410020082008200b4622011b2106201241026a2112201341206a2113200c41016a210c2008200841206a20011b21080c030b200541186a2214200141186a290000370300200541106a2218200141106a290000370300200541086a2219200141086a29000037030020052001290000370300024020022016470d00200241016a22012002490d0920172001201720014b1b221641ffffff3f712016470d09201641057422014100480d090240024020020d002001102121150c010b201520042001102521150b2015450d040b201520046a22012005290300370000200141186a2014290300370000200141106a2018290300370000200141086a2019290300370000410020032003200b4622141b2101201741026a2117200441206a2104200241016a21022003200341206a20141b221421032001450d050c000b0b0b200141011030000b200141011030000b2015210e2016210d2002210c2003200341206a2003200b4622011b2108410020092009200a4622021b21074100200320011b21062009200941206a20021b21090c020b41002106024020070d002000201536020c2000200f3602082000201036020420002011360200200041146a2002360200200041106a2016360200200541206a24000f0b201421082015210e2016210d2002210c0b200541186a2203200741186a290000370300200541106a2202200741106a290000370300200541086a2204200741086a2900003703002005200729000037030002400240200f2010470d00200f41016a2201200f490d03200f41017422072001200720014b1b221041ffffff3f712010470d03201041057422014100480d0302400240200f0d002001102121110c010b2011200f4105742001102521110b2011450d010b2011200f4105746a22012005290300370000200141186a2003290300370000200141106a2002290300370000200141086a2004290300370000410020092009200a4622011b2107200f41016a210f2009200941206a20011b21090c010b0b200141011030000b102a000b9e1008087f027e047f017e057f027e017f057e230022042105200441a0016b416071220424000240024002400240200141ffffff3f712001470d0020014105742206417f4c0d000240024020060d00410121070c010b200610212207450d020b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b200420063602102004200836020c2004200736020820072006410041202006676b109303200441e0006a41186a22094200370300200441e0006a41106a220a4200370300200441e0006a41086a220b420037030020044200370360200441286a41086a2208418881c400ad4280808080b00284220c1003220041086a2900003703002004200029000037032820001023200b200829030037030020042004290328370360200841f980c400ad42808080809001841003220041086a2900003703002004200029000037032820001023200a2004290328220d370300200441c0006a41086a220e200b290300370300200441c0006a41106a220f200d370300200441c0006a41186a221020082903003703002004200d3703900120042004290360370340200441e0006a200441c0006a412010bb0120042802602200410120001b21112004290264420020001b2212422088a72200450d0320004105742113200441e0006a4114722114200441e0006a4108722115200441c0006a410c722116200441e0006a410c6a2117201121060340200641086a290000210d200641106a2900002118200629000021192009200641186a290000370300200a2018370300200b200d370300200420193703602008200c1003220041086a2900003703002004200029000037032820001023200441186a41086a22012008290300370300200420042903283703182008418281c400ad4280808080e000841003220041086a290000370300200420002900003703282000102320044190016a41086a220720082903003703002004200429032837039001200441c0006a200441e0006a10ac0141c00010212200450d0320002004290318370000200020042903900137001020002004290040370020200041086a2001290300370000200041186a2007290300370000200041286a200e290000370000200041306a200f290000370000200041386a2010290000370000200441e0006a200041c00010a7032008201741086a290200370300200441286a41106a221a201741106a28020036020020042017290200370328024020042802682201450d002004290360210d20162004290328370200201641086a2008290300370200201641106a201a2802003602002004200d3703400b20042001360248200441003602682004290358211920042004290378221b3703582004290350211c20042004290370221d3703502004290340211e2004200429036022183703402004290348210d20042004290368221f370348201fa7210102400240200da7221a0d00201f210d201d211c201b21190c010b2004201e3703602004200d3703682004201c370370200420193703782004201a201ca74105746a3602342004201a3602302004200d422088a736022c2004201a3602282004200441086a36023820044190016a200441286a108601201541086a200728020036020020152004290390013702002004201c422088a7221a2019422088a74105746a3602342004201a36023020042019a736022c2004201a3602282004200441086a36023820044190016a200441286a108601201441086a200728020036020020142004290390013702002004290368210d20042903602118200429037821192004290370211c02402001450d00201ba721070240201f422088a7450d00200110230b2007450d00201d422088a710230b200420183703402004200d3703482004201c37035020042019370358200da721010b200420183703602004200d3703682004201c370370200da72107200420193703780240024020010d002000ad428080808080088410050c010b200441c00036022c20042000360228200441e0006a200441286a10ce030b02402007450d002019a721010240200d422088a7450d00200710230b2001450d00201c422088a710230b200641206a210620001023201341606a22130d000c040b0b102f000b200641011030000b41c00041011030000b02402012a7450d00201110230b200441c0006a41186a4200370300200441c0006a41106a22014200370300200441c0006a41086a2206420037030020044200370340200441286a41086a2200418881c400ad4280808080b002841003220841086a29000037030020042008290000370328200810232006200029030037030020042004290328220d3703182004200d37034020004183e0c400ad4280808080f000841003220841086a290000370300200420082900003703282008102320012004290328220d370300200441e0006a41086a2006290300370300200441e0006a41106a200d370300200441e0006a41186a20002903003703002004200d370390012004200429034037036020044100360248200442013703402003200441c0006a105c02402003450d002003410574210003402002200441c0006a1071200241206a2102200041606a22000d000b0b20042802442100200441e0006aad4280808080800484200435024842208620042802402206ad84100202402000450d00200610230b0240200428020c450d00200428020810230b200524000bb70302057f027e230041e0006b22042400200441c0006a41086a220541d5fbc400ad42808080808001841003220641086a2900003703002004200629000037034020061023200441206a41086a2207200529030037030020042004290340370320200541eea0c200ad4280808080f001841003220641086a2900003703002004200629000037034020061023200441306a41086a2208200529030037030020042004290340370330200441c0006a200110ac01024041c000102122060d0041c00041011030000b200620042903203700002006200429033037001020062004290040370020200641086a2007290300370000200641186a2008290300370000200641286a2005290000370000200641306a200441c0006a41106a290000370000200641386a200441c0006a41186a290000370000200441086a200641c000108902200441086a41106a29030021092004290310210a20042802082105200610232001200a420020051b220a2002200a200a2002562009420020051b220920035620092003511b22061b22027d20092003200920061b22037d200a200254ad7d10ca022000200337030820002002370300200441e0006a24000bf00508017f017e047f017e017f017e037f017e230041e0016b22022400200241186a20002001108703200241186a41106a2903002101200229032021000240024020022903182203a7450d00200241e0006a109302200241e0006a2000200110da02200241f8006a2001370300200241e0006a41106a2000370300200241e8006a41053a00002002410d3a0060200241e0006a108e010c010b2003500d00200241e0006a41186a22044200370300200241e0006a41106a22054200370300200241e0006a41086a2206420037030020024200370360200241d0016a41086a220741d5fbc400ad428080808080018422081003220941086a290000370300200220092900003703d0012009102320062007290300370300200220022903d001220337035020022003370360200741d6a0c200ad4280808080d00184220a1003220941086a290000370300200220092900003703d00120091023200520022903d0012203370300200241306a41086a220b2006290300370300200241306a41106a220c2003370300200241306a41186a220d200729030037030020022003370350200220022903603703302002200241306a4120108902200241106a29030021032002290308210e2002280200210920044200370300200542003703002006420037030020024200370360200720081003220541086a290000370300200220052900003703d0012005102320062007290300370300200220022903d0012208370350200220083703602007200a1003220541086a290000370300200220052900003703d00120051023200420072903002208370300200b2006290300370300200c20022903d001220a370300200d20083703002002200a37035020022002290360370330200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37036820024200200020071b370360200241306aad4280808080800484200241e0006aad428080808080028410020b200241e0016a24000bbc0902057f017e230041c0016b22032400200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441eea0c200ad4280808080f001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0102400240024041c00010212205450d00200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341e0006a290000370000200541386a200341d0006a41186a29000037000020032001370350200320023703582005ad4280808080800884200341d0006aad42808080808002841002200510230240200142ffc7afa0255620024200522002501b0d00200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441eea0c200ad4280808080f001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0141c00010212205450d02200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a290000370000200341186a200541c000108902200341186a41106a2903002102200329032021010240200329031822084201520d002005ad428080808080088410050b2005102302402001200284500d002008a7450d002001200210cb020b200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441e3a0c200ad4280808080b001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0141c00010212205450d03200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a2900003700002003200541c000108902200341106a290300210220032802002104200329030821012005102302402001200284500d0020040d010b200010ab01200341d0006a41086a41013a0000200341d9006a2000290000370000200341e1006a200041086a290000370000200341e9006a200041106a290000370000200341f1006a200041186a290000370000200341023a0050200341d0006a108e010b200341c0016a24000f0b41c00041011030000b41c00041011030000b41c00041011030000b890a08017f017e047f017e017f017e037f017e230041b0016b22022400200241386a20002001108703200241386a41106a29030021012002290340210002400240024020022903382203a7450d00200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a2206420037030020024200370370200241a0016a41086a220741d5fbc400ad428080808080018422081003220941086a290000370300200220092900003703a0012009102320062007290300370300200220022903a00122033703900120022003370370200741d6a0c200ad4280808080d00184220a1003220941086a290000370300200220092900003703a00120091023200520022903a0012203370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c2003370300200241d0006a41186a220d2007290300370300200220033703900120022002290370370350200241206a200241d0006a4120108902200241206a41106a29030021032002290328210e2002280220210920044200370300200542003703002006420037030020024200370370200720081003220541086a290000370300200220052900003703a0012005102320062007290300370300200220022903a001220837039001200220083703702007200a1003220541086a290000370300200220052900003703a00120051023200420072903002208370300200b2006290300370300200c20022903a001220a370300200d20083703002002200a3703900120022002290370370350200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37037820024200200020071b370370200241f0006a2107200241d0006a21060c010b2003500d01200241f0006a41186a22044200370300200241f0006a41106a22054200370300200241f0006a41086a2206420037030020024200370370200241a0016a41086a220741d5fbc400ad428080808080018422081003220941086a290000370300200220092900003703a0012009102320062007290300370300200220022903a00122033703900120022003370370200741d6a0c200ad4280808080d00184220a1003220941086a290000370300200220092900003703a00120091023200520022903a0012203370300200241d0006a41086a220b2006290300370300200241d0006a41106a220c2003370300200241d0006a41186a220d2007290300370300200220033703900120022002290370370350200241086a200241d0006a4120108902200241086a41106a29030021032002290310210e2002280208210920044200370300200542003703002006420037030020024200370370200720081003220541086a290000370300200220052900003703a0012005102320062007290300370300200220022903a001220837039001200220083703702007200a1003220541086a290000370300200220052900003703a00120051023200420072903002208370300200b2006290300370300200c20022903a001220a370300200d20083703002002200a3703900120022002290370370350200242002003420020091b220320017d200e420020091b2201200054ad7d2208200120007d2200200156200820035620082003511b22071b37037820024200200020071b370370200241f0006a2107200241d0006a21060b2006ad42808080808004842007ad428080808080028410020b200241b0016a24000bd08c010c057f017e017f017e047f027e0a7f017e077f017e057f017e230041b0086b2201240010cd020240024020004101460d00200141d0056a41186a22024200370300200141d0056a41106a22034200370300200141d0056a41086a22044200370300200142003703d00520014180016a41086a220541cafbc400ad4280808080c0008422061003220741086a29000037030020012007290000370380012007102320042005290300370300200120012903800122083703a001200120083703d005200541d4d0c300ad4280808080b001841003220741086a29000037030020012007290000370380012007102320032001290380012208370300200141b0046a41086a22072004290300370300200141b0046a41106a22092008370300200141b0046a41186a220a2005290300370300200120083703b001200120012903d0053703b004200141f0006a200141b0046a109c02200129037821082001280270210b200242003703002003420037030020044200370300200142003703d005200520061003220c41086a2900003703002001200c29000037038001200c1023200420052903003703002001200129038001220d3703a0012001200d3703d005200541e4cfc300ad4280808080a001841003220c41086a2900003703002001200c29000037038001200c102320022005290300220d370300200720042903003703002009200129038001220e370300200a200d3703002001200e3703b001200120012903d0053703b004200141e0006a200141b0046a109c022001280260210c2001290368210d200242003703002003420037030020044200370300200142003703d005200520061003220341086a29000037030020012003290000370380012003102320042005290300370300200120012903800122063703a001200120063703d005200541b8d0c300ad4280808080b001841003220341086a290000370300200120032900003703800120031023200220052903002206370300200720042903003703002009200129038001220e370300200a20063703002001200e3703b001200120012903d0053703b004200141d0006a200141b0046a109c02420020084200200b1b22062001290358420020012802501b200d42d8047e4200200c1b7c7d220820082006561b42d804540d00200141f0066a41186a22024200370300200141f0066a41106a220f4200370300200141f0066a41086a22044200370300200142003703f006200541f7fbc400ad4280808080f0008422061003220341086a29000037030020012003290000370380012003102320042005290300370300200120012903800122083703c801200120083703f00620054194b7c200ad4280808080c001841003220341086a290000370300200120032900003703800120031023200f20012903800122083703002007200429030037030020092008370300200a2005290300370300200120083703c801200120012903f0063703b004200141c8006a200141b0046a4120108f01200128024c210b2001280248211020024200370300200f420037030020044200370300200142003703f006200520061003220341086a29000037030020012003290000370380012003102320042005290300370300200120012903800122083703c801200120083703f006200541a8b7c200ad4280808080d001841003220341086a290000370300200120032900003703800120031023200220052903002208370300200720042903003703002009200129038001220d370300200a20083703002001200d3703c801200120012903f0063703b004200141b0046a109b02210310bd0120024200370300200f420037030020044200370300200142003703f006200520061003220c41086a2900003703002001200c29000037038001200c102320042005290300370300200120012903800122063703c801200120063703f006200541f7acc200ad4280808080a001841003220c41086a2900003703002001200c29000037038001200c10232002200529030022063703002007200429030037030020092001290380012208370300200a2006370300200120083703c801200120012903f0063703b004200141203602c4012001200141b0046a3602c001200141b0016a200141b0046aad428080808080048422061004109001410021110240024002400240024002400240024002400240024002400240024020012802b00122090d00410021070c010b20012802b401210a2001200141b8016a2802003602a401200120093602a001200141c0006a200141a0016a106e02400240024020012802400d0020012802a401220241c0016e221241c0016c2205417f4c0d04200128024421130240024020050d00410121070c010b200510212207450d0d0b02402013450d00200141f0066a41206a211420014188036a41017221154100210c0340200141003a00a803200c41016a21164100210502400240024002400340200141003a00af0420022005460d0120014188036a20056a20012802a00122042d00003a00002001200441016a3602a0012001200541016a22043a00a8032004210520044120470d000b200141d0056a41086a220520014188036a41086a290300370300200141d0056a41106a221720014188036a41106a290300370300200141d0056a41186a221820014188036a41186a29030037030020012001290388033703d0052001200220046b3602a40120014188036a200141a0016a10ce0220012d0088034101460d01200141f0066a41186a2018290300370300200141f0066a41106a2017290300370300200141f0066a41086a2005290300370300200120012903d0053703f0062014201541a00110dc041a200141c8016a200141f0066a41c00110dc041a2012200c470d03200c41017422052016200520164b1b2212ad42c0017e2208422088a70d172008a7220541004e0d020c170b200141003602a401200541ff0171450d00200141003a00a8030b20014100360280012012450d05200710230c050b02400240200c0d002005102121070c010b2007200c41c0016c2005102521070b2007450d0c0b2007200c41c0016c6a200141c8016a41c00110dc041a20162013460d0120012802a40121022016210c0c000b0b20014188016a2013360200200120123602840120012007360280012007450d0120012902840121080c020b20014100360280010b41002107200141003602d001200142013703c8012001410c36028c032001200141c0016a360288032001200141c8016a3602d00520014184076a4101360200200142013702f40620014198c2c3003602f006200120014188036a36028007200141d0056a41b8a3c500200141f0066a102e1a20013502d00142208620013502c801841008024020012802cc01450d0020012802c80110230b0b200a450d00200910230b2008420020071b2219422088a7221841c0016c220941c0016e21054101211a02402009450d00200541057422041021221a450d08200521110b200341ff0171210a2007410120071b21164100210202402018450d00201841c0016c210741002102201a210520162104034020052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200241016a2102200541206a2105200441c0016a2104200741c07e6a22070d000b0b200a410247210a200141f0066a41186a220c4200370300200141f0066a41106a22134200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220741086a29000037030020012007290000370380012007102320042005290300370300200120012903800122083703c801200120083703f006200541e7acc500ad4280808080a001841003220741086a290000370300200120072900003703800120071023200141c8016a41086a200529030022083703002001200129038001220d3703c801200f200d370000200f41086a2008370000200141b0046a41086a2004290300370300200141b0046a41106a2013290300370300200141b0046a41186a200c290300370300200120012903f0063703b004200141003602f806200142013703f0062002200141f0066a105c02402002450d0020024105742104201a210503402005200141f0066a1071200541206a2105200441606a22040d000b0b2003200a71211720012802f4062105200620013502f80642208620012802f0062204ad84100202402005450d00200410230b02402017450d00200141f0066a41186a22074200370300200141f0066a41106a220a4200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220241086a29000037030020012002290000370380012002102320042005290300370300200120012903800122083703c801200120083703f00620054198b8c200ad4280808080a002841003220241086a290000370300200120022900003703800120021023200141c8016a41086a200529030022083703002001200129038001220d3703c801200f200d370000200f41086a2008370000200141b0046a41086a2004290300370300200141b0046a41106a200a290300370300200141b0046a41186a2007290300370300200120012903f0063703b004200141f0066a200141b0046a10950220012802f0062205450d002006100520012802f406450d00200510230b201620096a21154101211b200141f0066a200b41016a410120101b221c10cf020240024020012802f006221d0d00200141f0066a41186a4200370300200141f0066a41106a22074200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220241086a2900003703002001200229000037038001200210232004200529030037030020012001290380013703f006200541e7acc500ad4280808080a001841003220241086a29000037030020012002290000370380012002102320072001290380012208370300200141c8016a41086a2004290300370300200141c8016a41106a2008370300200141c8016a41186a20052903003703002001200837038803200120012903f0063703c801200141f0066a200141c8016a412010bb0120012902f406420020012802f00622051b21082005410120051b211e4100211d4100211f0c010b200141f8066a350200210820014180076a2802002107200141fc066a280200210220012802f4062120024020014184076a2802002205450d00200541d0006c2104200241c0006a210503400240200541046a280200450d00200528020010230b200541d0006a2105200441b07f6a22040d000b0b02402007450d00200210230b20084220862020ad8421084101211f4100211b201d211e0b200141f0066a41186a22074200370300200141f0066a41106a22094200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220241086a290000370300200120022900003703800120021023200420052903003703002001200129038001220d3703c8012001200d3703f00620054194b7c200ad4280808080c001841003220241086a290000370300200120022900003703800120021023200141c8016a41086a2005290300220d3703002001200129038001220e3703c801200f200e370000200f41086a200d370000200141b0046a41086a2004290300370300200141b0046a41106a2009290300370300200141b0046a41186a2007290300370300200120012903f0063703b0042001201c3602f0062006200141f0066aad22214280808080c0008410022001201f3a00af04200120153602c401200120163602c0012001200141c0016a3602a4012001200141af046a3602a00141002112024002402008422088a7220541057422040d0041012114410021220c010b20044105752222ad42c0017e220d422088a70d0e200da722044100480d0e200410212214450d070b2008a7212302402005450d002005410574220441606a4105762124200141f0066a41206a210b200141b0046a4180016a2125200141b0046a41e0006a2126200141b0046a41c0006a2112200141b0046a41206a2113200141c8016a410172211020142102201e2105034020014180016a41186a2207200541186a29000037030020014180016a41106a2209200541106a29000037030020014180016a41086a220a200541086a2900003703002001200529000037038001200141b0016a20014180016a10d002200141c8016a20012802b001220c20012802b80110d10220012d00c801210320014188036a201041a00110dc041a0240024020034101470d00200141d0056a20014188036a41a00110dc041a024020012802b401450d00200c10230b200141b0046a200141d0056a41a00110dc041a0c010b024020012802b401450d00200c10230b200141b0046a410041a00110db041a0b024020012802a0012d00000d0020012802a401220c2802002203200c280204460d00200c200341c0016a36020002400240200141b0046a200341206a220c460d00200c200141b0046a412010de040d010b02402013200341c0006a220c460d00200c2013412010de040d010b02402012200341e0006a220c460d00200c2012412010de040d010b0240202620034180016a220c460d00200c2026412010de040d010b2025200341a0016a2203460d0120032025412010de04450d010b20012802a00141013a00000b200541206a2105200141f0066a41186a2007290300370300200141f0066a41106a2009290300370300200141f0066a41086a200a29030037030020012001290380013703f006200b200141b0046a41a00110dc041a2002200141f0066a41c00110dc0441c0016a2102200441606a22040d000b202441016a21120b02402023450d00201e10230b2012ad42c0017e2208422088a70d002008a72205417f4c0d0020012d00af0421130240024020050d00410121100c010b200510212210450d020b4100210302402012450d002014201241c0016c6a210b200141f0066a41a0016a2104200141f0066a4180016a2102200141f0066a41e0006a2107200141f0066a41c0006a2109200141f0066a41206a210a410021032010210c201421050340200141f0066a41186a200541186a290000370300200141f0066a41106a200541106a290000370300200141f0066a41086a200541086a290000370300200120052900003703f006200a41186a200541386a290000370000200a41106a200541306a290000370000200a41086a200541286a290000370000200a200541206a2900003700002009200541c0006a290000370000200941086a200541c8006a290000370000200941106a200541d0006a290000370000200941186a200541d8006a2900003700002007200541e0006a290000370000200741086a200541e8006a290000370000200741106a200541f0006a290000370000200741186a200541f8006a290000370000200220054180016a290000370000200241086a20054188016a290000370000200241106a20054190016a290000370000200241186a20054198016a2900003700002004200541a0016a290000370000200441086a200541a8016a290000370000200441186a200541b8016a290000370000200441106a200541b0016a290000370000200341016a2103200c200141f0066a41c00110dc0441c0016a210c200541c0016a2205200b470d000b0b200141f0066a41186a22074200370300200141f0066a41106a22094200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220241086a29000037030020012002290000370380012002102320042005290300370300200120012903800122083703c801200120083703f006200541f7acc200ad4280808080a001841003220241086a290000370300200120022900003703800120021023200141c8016a41086a200529030022083703002001200129038001220d3703c801200f200d370000200f41086a2008370000200141b0046a41086a2004290300370300200141b0046a41106a2009290300370300200141b0046a41186a2007290300370300200120012903f0063703b004200141003602f806200142013703f0062003200141f0066a105c02402003450d002010200341c0016c6a21042010210503402005200141f0066a1071200541206a200141f0066a1071200541c0006a200141f0066a1071200541e0006a200141f0066a107120054180016a200141f0066a1071200541a0016a200141f0066a1071200541c0016a22052004470d000b0b20012802f4062105200620013502f80642208620012802f0062204ad84100202402005450d00200410230b02402012450d00201010230b200141f0066a41186a22074200370300200141f0066a41106a22094200370300200141f0066a41086a22044200370300200142003703f00620014180016a41086a220541f7fbc400ad4280808080f000841003220241086a29000037030020012002290000370380012002102320042005290300370300200120012903800122083703c801200120083703f006200541a8b7c200ad4280808080d001841003220241086a290000370300200120022900003703800120021023200141c8016a41086a200529030022083703002001200129038001220d3703c801200f200d370000200f41086a2008370000200141b0046a41086a2004290300370300200141b0046a41106a2009290300370300200141b0046a41186a2007290300370300200120012903f0063703b004200120133a00f006200620214280808080108410022001201c3602f406200141053a00f006200141f0066a108e01410810212202450d022002201536020420022016360200024020170d00200141f0066a41186a220a4200370300200141f0066a41106a22074200370300200141f0066a41086a22044200370300200142003703f006200141d0056a41086a22054188e0c100ad4280808080f001841003220941086a290000370300200120092900003703d0052009102320042005290300370300200120012903d005220637038803200120063703f006200541f4f0c100ad4280808080c001841003220941086a290000370300200120092900003703d00520091023200720012903d0052206370300200141c8016a41086a22032004290300370300200141c8016a41106a220c2006370300200141c8016a41186a220b20052903003703002001200637038803200120012903f0063703c801200141306a200141c8016a109c022001290338210820012802302110200a42003703002007420037030020044200370300200142003703f006200541f7fbc400ad4280808080f000841003220941086a290000370300200120092900003703d0052009102320042005290300370300200120012903d0053703f00620054194b7c200ad4280808080c001841003220941086a290000370300200120092900003703d00520091023200720012903d005220637030020032004290300370300200c2006370300200b20052903003703002001200637038803200120012903f0063703c801200141286a200141c8016a4120108f012008420020101b200128022c410020012802281b10ab02200210230c0c0b024002402018450d002002201641c0016a2207360200200141003a009007201641206a2104410021050340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b200141c8016a41086a2205200141f0066a41086a290300370300200141c8016a41106a2204200141f0066a41106a290300370300200141c8016a41186a2209200141f0066a41186a290300370300200120012903f0063703c80120160d010b200210234108210c41002107410021050c0b0b200141d0056a41186a2009290300370300200141d0056a41106a2004290300370300200141d0056a41086a2005290300370300200120012903c8013703d005201520076b41c0016e41016a220541286c2204417f4c0d0020041021220c450d03200c20012903d005370300200c4201370320200c41186a200141d0056a41186a290300370300200c41106a200141d0056a41106a290300370300200c41086a200141d0056a41086a2903003703000240200228020022042002280204470d00410121070c0a0b2002200441c0016a360200200141003a009007200441206a2107410021040340200141003a00af04200141f0066a20046a200720046a2d00003a00002001200441016a22043a00900720044120470d000b20014188036a41186a2218200141f0066a41186a22092903002206370300200141c8016a41086a220b200141f0066a41086a220a290300370300200141c8016a41106a2210200141f0066a41106a2203290300370300200141c8016a41186a220f2006370300200120012903f0063703c801410121070340200141d0056a41186a200f2903002206370300200141d0056a41106a20102903002208370300200141d0056a41086a200b290300220d370300200120012903c801220e3703d0052009200637030020032008370300200a200d3703002001200e3703f0060240024020052007460d00200521130c010b200228020420022802006b41c0016e20056a41016a22042005490d0f200541017422132004201320044b1b2213ad42287e2206422088a70d0f2006a722044100480d0f0240024020050d0020041021210c0c010b200c200541286c20041025210c0b200c450d060b200c200741286c6a220520012903f006370300200a2903002106200329030021082009290300210d20054201370320200541186a200d370300200541106a2008370300200541086a2006370300200741016a21070240200228020022042002280204470d00201321050c0b0b2002200441c0016a36020041002105200141003a009007200441206a21040340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b201820092903002206370300200b200a29030037030020102003290300370300200f2006370300200120012903f0063703c801201321050c000b0b102f000b200541011030000b410841041030000b200441081030000b200441081030000b200541011030000b200441011030000b200441011030000b200541011030000b200210230b200141f0066a41186a4200370300200141f0066a41106a22094200370300200141f0066a41086a22024200370300200142003703f006200141d0056a41086a22044188e0c100ad4280808080f001841003220a41086a2900003703002001200a2900003703d005200a102320022004290300370300200120012903d005220637038803200120063703f006200441b4f0c100ad4280808080f000841003220a41086a2900003703002001200a2900003703d005200a1023200920012903d0052206370300200141c8016a41086a2002290300370300200141c8016a41106a2006370300200141c8016a41186a20042903003703002001200637038803200120012903f0063703c801200141f0066a200141c8016a41201086020240024020012802f0064101460d00200120073602f806200120053602f4062001200c3602f006200141f0066a41004100200110ac02200141c8016aad428080808080048421060c010b200141c8016aad42808080808004842206100520012902f4062108200120073602f806200120053602f4062001200c3602f006200141f0066a2008a741012008422088a710ac020b200141f0066a41186a22074200370300200141f0066a41106a22024200370300200141f0066a41086a22044200370300200142003703f006200141d0056a41086a22054188e0c100ad4280808080f0018422081003220a41086a2900003703002001200a2900003703d005200a102320042005290300370300200120012903d005220d370388032001200d3703f006200541f4f0c100ad4280808080c00184220d1003220a41086a2900003703002001200a2900003703d005200a102320014188036a41086a22102005290300220e370300200120012903d00522273703880320092027370000200941086a220f200e370000200141c8016a41086a220a2004290300370300200141c8016a41106a22032002290300370300200141c8016a41186a220c2007290300370300200120012903f0063703c801200141186a200141c8016a109c02200128021821132001290320210e200742003703002002420037030020044200370300200142003703f006200520081003220b41086a2900003703002001200b2900003703d005200b102320042005290300370300200120012903d005220837038803200120083703f0062005200d1003220b41086a2900003703002001200b2900003703d005200b1023201020052903002208370300200120012903d005220d370388032009200d370000200f2008370000200a200429030037030020032002290300370300200c2007290300370300200120012903f0063703c8012001200e42017c420120131b22083703f0062006202142808080808001841002200742003703002002420037030020044200370300200142003703f006200541f7fbc400ad4280808080f000841003220741086a290000370300200120072900003703d0052007102320042005290300370300200120012903d0053703f00620054194b7c200ad4280808080c001841003220741086a290000370300200120072900003703d00520071023200220012903d0052206370300200a200429030037030020032006370300200c20052903003703002001200637038803200120012903f0063703c801200141106a200141c8016a4120108f0120082001280214410020012802101b10ab020b024002400240410810212205450d0020052015360204200520163602000240410810212204450d0020042014201241c0016c6a221c360204200420143602002005200410d2020240410810212202450d0020022015360204200220163602000240410810212226450d002026201c36020420262014360200200141f0066a41186a220a4200370300200141f0066a41106a22184200370300200141f0066a41086a22044200370300200142003703f006200141d0056a41086a220541c4fbc400ad4280808080e000841003220741086a290000370300200120072900003703d0052007102320042005290300370300200120012903d0053703f006200541f9bcc000ad4280808080e000841003220741086a290000370300200120072900003703d00520071023201820012903d0052206370300200141c8016a41086a2004290300370300200141c8016a41106a2006370300200141c8016a41186a20052903003703002001200637038001200120012903f0063703c801200141086a200141c8016a4120108f0120012802082103200128020c210c20014188036a41186a420037030020014188036a41106a221e420037030020014188036a41086a22074200370300200142003703880320054194fcc400ad42808080808001841003220941086a290000370300200120092900003703d0052009102320072005290300370300200120012903d00522063703a001200120063703880320054195dfc000ad42808080808001841003220941086a290000370300200120092900003703d00520091023201e20012903d00522063703002004200729030037030020182006370300200a2005290300370300200120063703b00120012001290388033703f0062001200c41ac026a41ac0220031b3602c801202142808080808004842221200141c8016aad22274280808080c00084100202402002280200220520022802042209460d002002200541c0016a220a360200200141003a009007200541e0006a2104410021050340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b200141b0046a41086a2205200141f0066a41086a290300370300200141b0046a41106a2203200141f0066a41106a290300370300200141b0046a41186a220c200141f0066a41186a290300370300200120012903f00622063703c801200120063703b0044101210702402009200a6b41c0016e41016a220441057422091021220b450d00200b20012903b004370000200b41186a200c290300370000200b41106a2003290300370000200b41086a2005290300370000200228020022052002280204460d062002200541c0016a360200200141003a009007200541e0006a2107410021050340200141003a00af04200141f0066a20056a200720056a2d00003a00002001200541016a22053a00900720054120470d000b20014188036a41186a2212200141f0066a41186a22092903002206370300200141c8016a41086a2210200141f0066a41086a220a290300370300200141c8016a41106a220f200141f0066a41106a2203290300370300200141c8016a41186a22132006370300200120012903f0063703c801410121070340200141d0056a41186a20132903002206370300200141d0056a41106a200f2903002208370300200141d0056a41086a2010290300220d370300200120012903c801220e3703d0052009200637030020032008370300200a200d3703002001200e3703f0060240024020042007460d002004210c0c010b200228020420022802006b41c0016e20046a41016a22052004490d0b2004410174220c2005200c20054b1b220c41ffffff3f71200c470d0b200c41057422054100480d0b0240024020040d0020051021210b0c010b200b200441057420051025210b0b200b0d00200541011030000b200b20074105746a220520012903f006370000200541186a2009290300370000200541106a2003290300370000200541086a200a290300370000200741016a21070240200228020022042002280204470d00200c21040c080b2002200441c0016a36020041002105200141003a009007200441e0006a21040340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b2012200929030022063703002010200a290300370300200f200329030037030020132006370300200120012903f0063703c801200c21040c000b0b200941011030000b200210234101210b41002107410021040c050b410841041030000b410841041030000b410841041030000b410841041030000b200210230b20014188036a41186a220a420037030020014188036a41106a2203420037030020014188036a41086a220242003703002001420037038803200141d0056a41086a22054194fcc400ad42808080808001841003220941086a290000370300200120092900003703d0052009102320022005290300370300200120012903d00522063703a00120012006370388032005419ddfc000ad4280808080c000841003220941086a290000370300200120092900003703d00520091023200141b0016a41086a20052903002206370300200120012903d00522083703b001201e2008370000201e41086a2006370000200141f0066a41086a2002290300370300200141f0066a41106a2003290300370300200141f0066a41186a200a29030037030020012001290388033703f006200141003602d001200142013703c8012007200141c8016a105c02402007450d0020074105742102200b210503402005200141c8016a1071200541206a2105200241606a22020d000b0b20012802cc012105202120013502d00142208620012802c8012202ad84100202402005450d00200210230b02402004450d00200b10230b2026102302400240024002400240410810212202450d0020022015360204200220163602000240410810212226450d002026201c360204202620143602002017450d0202402002280200220520022802042209460d002002200541c0016a220a360200200141003a00900720054180016a2104410021050340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b200141b0046a41086a2205200141f0066a41086a290300370300200141b0046a41106a2203200141f0066a41106a290300370300200141b0046a41186a220c200141f0066a41186a290300370300200120012903f00622063703c801200120063703b0044101210702402009200a6b41c0016e41016a220441057422091021220b450d00200b20012903b004370000200b41186a200c290300370000200b41106a2003290300370000200b41086a2005290300370000200228020022052002280204460d052002200541c0016a360200200141003a00900720054180016a2107410021050340200141003a00af04200141f0066a20056a200720056a2d00003a00002001200541016a22053a00900720054120470d000b20014188036a41186a2212200141f0066a41186a22092903002206370300200141c8016a41086a2210200141f0066a41086a220a290300370300200141c8016a41106a220f200141f0066a41106a2203290300370300200141c8016a41186a22132006370300200120012903f0063703c801410121070340200141d0056a41186a20132903002206370300200141d0056a41106a200f2903002208370300200141d0056a41086a2010290300220d370300200120012903c801220e3703d0052009200637030020032008370300200a200d3703002001200e3703f0060240024020042007460d002004210c0c010b200228020420022802006b41c0016e20046a41016a22052004490d0b2004410174220c2005200c20054b1b220c41ffffff3f71200c470d0b200c41057422054100480d0b0240024020040d0020051021210b0c010b200b200441057420051025210b0b200b0d00200541011030000b200b20074105746a220520012903f006370000200541186a2009290300370000200541106a2003290300370000200541086a200a290300370000200741016a21070240200228020022042002280204470d00200c21040c070b2002200441c0016a36020041002105200141003a00900720044180016a21040340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b2012200929030022063703002010200a290300370300200f200329030037030020132006370300200120012903f0063703c801200c21040c000b0b200941011030000b20021023410021044101210b410021070c040b410841041030000b410841041030000b20261023200210230c020b200210230b200141f0066a41186a220a4200370300200141f0066a41106a22034200370300200141f0066a41086a22024200370300200142003703f006200141d0056a41086a22054182fdc400ad4280808080a001841003220941086a290000370300200120092900003703d0052009102320022005290300370300200120012903d0053703f006200541fccfc300ad4280808080b001841003220941086a290000370300200120092900003703d0052009102320014180016a41086a20052903002206370300200120012903d00522083703800120182008370000201841086a2006370000200141c8016a41086a2002290300370300200141c8016a41106a2003290300370300200141c8016a41186a200a290300370300200120012903f0063703c801200141003602f806200142013703f0062007200141f0066a105c02402007450d0020074105742102200b210503402005200141f0066a1071200541206a2105200241606a22020d000b0b20012802f40621052027428080808080048420013502f80642208620012802f0062202ad84100202402005450d00200210230b02402004450d00200b10230b202610230b02400240024002400240410810212202450d0020022015360204200220163602000240410810212215450d002015201c360204201520143602002017450d0202402002280200220520022802042209460d002002200541c0016a220a360200200141003a009007200541a0016a2104410021050340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b200141b0046a41086a2205200141f0066a41086a290300370300200141b0046a41106a2203200141f0066a41106a290300370300200141b0046a41186a220c200141f0066a41186a290300370300200120012903f00622063703c801200120063703b0044101210702402009200a6b41c0016e41016a220441057422091021220b450d00200b20012903b004370000200b41186a200c290300370000200b41106a2003290300370000200b41086a2005290300370000200228020022052002280204460d052002200541c0016a360200200141003a009007200541a0016a2107410021050340200141003a00af04200141f0066a20056a200720056a2d00003a00002001200541016a22053a00900720054120470d000b20014188036a41186a2212200141f0066a41186a22092903002206370300200141c8016a41086a2210200141f0066a41086a220a290300370300200141c8016a41106a220f200141f0066a41106a2203290300370300200141c8016a41186a22132006370300200120012903f0063703c801410121070340200141d0056a41186a20132903002206370300200141d0056a41106a200f2903002208370300200141d0056a41086a2010290300220d370300200120012903c801220e3703d0052009200637030020032008370300200a200d3703002001200e3703f0060240024020042007460d002004210c0c010b200228020420022802006b41c0016e20046a41016a22052004490d0b2004410174220c2005200c20054b1b220c41ffffff3f71200c470d0b200c41057422054100480d0b0240024020040d0020051021210b0c010b200b200441057420051025210b0b200b0d00200541011030000b200b20074105746a220520012903f006370000200541186a2009290300370000200541106a2003290300370000200541086a200a290300370000200741016a21070240200228020022042002280204470d00200c21040c070b2002200441c0016a36020041002105200141003a009007200441a0016a21040340200141003a00af04200141f0066a20056a200420056a2d00003a00002001200541016a22053a00900720054120470d000b2012200929030022063703002010200a290300370300200f200329030037030020132006370300200120012903f0063703c801200c21040c000b0b200941011030000b20021023410021044101210b410021070c040b410841041030000b410841041030000b20151023200210230c020b200210230b200141f0066a41186a220a4200370300200141f0066a41106a22034200370300200141f0066a41086a22024200370300200142003703f006200141d0056a41086a2205419cfcc400ad4280808080a002841003220941086a290000370300200120092900003703d0052009102320022005290300370300200120012903d0053703f0062005419ddfc000ad4280808080c000841003220941086a290000370300200120092900003703d0052009102320014180016a41086a20052903002206370300200120012903d00522083703800120182008370000201841086a2006370000200141c8016a41086a2002290300370300200141c8016a41106a2003290300370300200141c8016a41186a200a290300370300200120012903f0063703c801200141003602f806200142013703f0062007200141f0066a105c02402007450d0020074105742102200b210503402005200141f0066a1071200541206a2105200241606a22020d000b0b20012802f40621052027428080808080048420013502f80642208620012802f0062202ad84100202402005450d00200210230b02402004450d00200b10230b201510230b02402022450d00201410230b02402020450d00201b201f720d00201d10230b02402011450d00201a10230b2019a7450d00201610230b20014188036a41186a420037030020014188036a41106a2207420037030020014188036a41086a220442003703002001420037038803200141a0016a41086a220541a6a3c500ad4280808080a001841003220241086a290000370300200120022900003703a0012002102320042005290300370300200120012903a00137038803200541fca4c500ad4280808080e000841003220241086a290000370300200120022900003703a00120021023200720012903a0012206370300200141f0066a41086a2004290300370300200141f0066a41106a2006370300200141f0066a41186a2005290300370300200120063703d00520012001290388033703f006200141c8016a200141f0066a10d30220012802c8012205410420051b210902400240024002400240024020012902cc01420020051b2206422088a7220a41c4006c22050d00410021040c010b200920056a2102410021042009210502400340024020052d00004101460d00200541046a28020020004f0d020b200441016a21042002200541c4006a2205470d000b0b2004200a4b0d010b200642ffffffff0f8321060240200a20046b2205450d0002402004450d0020092009200441c4006c6a200541c4006c10dd041a0b2005ad42208620068421060b20014188036a41186a220a420037030020014188036a41106a2203420037030020014188036a41086a220442003703002001420037038803200141a0016a41086a220541a6a3c500ad4280808080a001841003220241086a290000370300200120022900003703a0012002102320042005290300370300200120012903a00137038803200541fca4c500ad4280808080e000841003220241086a290000370300200120022900003703a00120021023200141d0056a41086a20052903002208370300200120012903a001220d3703d0052007200d370000200741086a2008370000200141f0066a41086a2004290300370300200141f0066a41106a2003290300370300200141f0066a41186a200a29030037030020012001290388033703f006200141c8016a20092006422088a710d402200141f0066aad4280808080800484220820013502d00142208620012802c8012204ad8410022006a72105024020012802cc01450d00200410230b02402005450d00200910230b20014188036a41186a2203420037030020014188036a41106a220a420037030020014188036a41086a220442003703002001420037038803200141a0016a41086a220541a6a3c500ad4280808080a001841003220241086a290000370300200120022900003703a0012002102320042005290300370300200120012903a0013703880320054184a9c500ad4280808080c001841003220241086a290000370300200120022900003703a00120021023200141d0056a41086a220220052903002206370300200120012903a001220d3703d0052007200d370000200741086a2006370000200141f0066a41086a22072004290300370300200141f0066a41106a2209200a290300370300200141f0066a41186a220a200329030037030020012001290388033703f006200141003a00af042008200141af046aad428080808010841002200141c8016a10d502200a200141c8016a41186a22032903003703002009200141c8016a41106a220c2903003703002007200141c8016a41086a220b290300370300200120012903c8013703f006412410212204450d01200420012903f00637000020044114360220200441186a200a290300370000200441106a2009290300370000200441086a2007290300370000200142818080801037028c03200120043602880320014188036a10d602200a20032903003703002009200c2903003703002007200b290300370300200120012903c8013703f006200141f0066a10c80110cd02200141d0056a41186a22094200370300200141d0056a41106a2204420037030020024200370300200142003703d005200541c4fbc400ad4280808080e000841003220741086a290000370300200120072900003703a0012007102320022005290300370300200120012903a0013703d005200541ffbcc000ad4280808080a001841003220741086a290000370300200120072900003703a00120071023200420012903a0012206370300200141b0046a41086a2002290300370300200141b0046a41106a2006370300200141b0046a41186a20052903003703002001200637038001200120012903d0053703b004200141f0066a200141b0046a4120108a0120012d00f0062105200920014189076a290000370300200420014181076a2900003703002002200141f9066a290000370300200120012900f1063703d0050240024020054101460d00200141a0036a420037030020014198036a420037030020014190036a420037030020014200370388030c010b20014188036a41186a200141d0056a41186a29030037030020014188036a41106a200141d0056a41106a29030037030020014188036a41086a200141d0056a41086a290300370300200120012903d005370388030b200141d0056a41186a22094200370300200141d0056a41106a220a4200370300200141d0056a41086a22024200370300200142003703d005200141a0016a41086a220541d899c600ad42808080808003841003220741086a290000370300200120072900003703a0012007102320022005290300370300200120012903a0013703d005200541f099c600ad4280808080e001841003220741086a290000370300200120072900003703a0012007102320014180016a41086a20052903002206370300200120012903a00122083703800120042008370000200441086a2006370000200141b0046a41086a2002290300370300200141b0046a41106a200a290300370300200141b0046a41186a2009290300370300200120012903d0053703b004200141f0066a200141b0046a412010bb01024002400240024020012802f00622020d00200141c8016a41186a20014188036a41186a290300370300200141c8016a41106a20014188036a41106a290300370300200141c8016a41086a20014188036a41086a29030037030020012001290388033703c8014101210241002107200141c8016a2105410021090c010b20012902f4062206a7210a02402006422088a7220441d100490d00200141f0066a41186a220720014188036a41186a290300370300200141f0066a41106a220920014188036a41106a290300370300200141f0066a41086a220320014188036a41086a29030037030020012001290388033703f0062000417f6a41d10070220520044f0d06200220054105746a220520012903f006370000200541186a2007290300370000200541106a2009290300370000200541086a2003290300370000200a21070c030b200141f0066a41086a280200210920012802f4062107200141c8016a41186a20014188036a41186a290300370300200141c8016a41106a20014188036a41106a290300370300200141c8016a41086a20014188036a41086a29030037030020012001290388033703c80102402004200a460d00200141c8016a2105200a2107200421090c020b200141c8016a210520072004470d010b200741016a22042007490d062007410174220a2004200a20044b1b220441ffffff3f712004470d062004410574220a4100480d060240024020070d00200a102121020c010b20022007410574200a102521020b2002450d05200421070b200220094105746a22042005290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000200941016a21040b200141f0066a41186a4200370300200141f0066a41106a22034200370300200141f0066a41086a22094200370300200142003703f006200141a0016a41086a220541d899c600ad42808080808003841003220a41086a2900003703002001200a2900003703a001200a102320092005290300370300200120012903a0013703f006200541f099c600ad4280808080e001841003220a41086a2900003703002001200a2900003703a001200a1023200320012903a0012206370300200141c8016a41086a2009290300370300200141c8016a41106a2006370300200141c8016a41186a2005290300370300200120063703b001200120012903f0063703c8010240024020020d00200141c8016aad428080808080048410050c010b200141003602f806200142013703f0062004200141f0066a105c02402004450d00200441057421042002210503402001200141f0066a3602d0052005200141d0056a106b200541206a2105200441606a22040d000b0b20012802f4062105200141c8016aad428080808080048420013502f80642208620012802f0062204ad84100202402005450d00200410230b2007450d00200210230b200141b0086a24000f0b41ccbac000102b000b412441041030000b41c4acc60020052004102d000b200a41011030000b102a000b8b1b09017f017e047f017e027f017e017f017e057f23004190046b2200240042002101200041c0036a41186a4200370300200041c0036a41106a22024200370300200041c0036a41086a22034200370300200042003703c003200041a0036a41086a220441cafbc400ad4280808080c000841003220541086a290000370300200020052900003703a0032005102320032004290300370300200020002903a00322063703d801200020063703c00320044188d3c300ad4280808080b001841003220541086a290000370300200020052900003703a00320051023200220002903a0032206370300200041f0036a41086a2003290300370300200041f0036a41106a2006370300200041f0036a41186a2004290300370300200020063703d801200020002903c0033703f003200041e8016a200041f0036a109d020240024020002d00e8014102470d00200041e8016a41186a4200370300200041e8016a41106a22074200370300200041e8016a41086a22034200370300200042003703e801200441c4fbc400ad4280808080e000841003220541086a290000370300200020052900003703a0032005102320032004290300370300200020002903a0033703e80120044197bdc000ad4280808080e000841003220541086a290000370300200020052900003703a00320051023200720002903a0032206370300200041f8006a41086a2003290300370300200041f8006a41106a2006370300200041f8006a41186a200429030037030020002006370310200020002903e801370378200041e8016a200041f8006a108c010240024020002802e80122080d0041042108410021040c010b20002902ec012201422088a721040b02400240200441246c2203450d002008210402400340024020042d00004101470d00200441016a2800002105200441086a28020021072000200441106a28020036027c20002007360278200541c28289aa04470d00200041e8016a200041f8006a109b0320002d00e80122074102470d020b200441246a21042003415c6a2203450d020c000b0b200020002800ec0136006b200020002800e901360268200041f0016a2903002106200041106a200041f8016a41d80010dc041a200041d0026a29030021090c010b410221070b02402001422088a72204450d00200441246c21032008210403400240024020042d0000220541034b0d0002400240024020050e0404000102040b2004410c6a280200450d03200441086a28020010230c030b2004410c6a280200450d02200441086a28020010230c020b2004410c6a280200450d01200441086a28020010230c010b200441086a280200450d00200441046a28020010230b200441246a21042003415c6a22030d000b0b02402001a7450d00200810230b200020002802683602d0012000200028006b3600d301200041f8006a200041106a41d80010dc041a0240024020074102470d0041002103200041f0036a21080c010b200020002802d0013602e802200020002800d3013600eb02200020063703e002200041e8016a200041f8006a41d80010dc041a200020093703d802200041c0036a41186a22054200370300200041c0036a41106a22084200370300200041c0036a41086a22034200370300200042003703c003200041a0036a41086a220441cafbc400ad4280808080c0008422061003220a41086a2900003703002000200a2900003703a003200a102320032004290300370300200020002903a00322013703d801200020013703c003200441b8d0c300ad4280808080b00184220b1003220a41086a2900003703002000200a2900003703a003200a1023200041d8016a41086a220c20042903002201370300200020002903a00322093703d80120022009370000200241086a220d2001370000200041f0036a41086a220a2003290300370300200041f0036a41106a220e2008290300370300200041f0036a41186a220f2005290300370300200020002903c0033703f0032000200041f0036a109c02024002402000280200450d002000290308500d00200041f0036aad42808080808004842101200041f0036a21080c010b200041e0026a200041d8026a20074101461b2903002101200542003703002008420037030020034200370300200042003703c003200420061003221041086a290000370300200020102900003703a0032010102320032004290300370300200020002903a00322093703d801200020093703c0032004200b1003221041086a290000370300200020102900003703a00320101023200c20042903002209370300200020002903a003220b3703d8012002200b370000200d2009370000200a2003290300370300200e2008290300370300200f2005290300370300200020002903c0033703f003200020013703c003200041f0036aad42808080808004842201200041c0036aad42808080808001841002200041f0026a109c03200542003703002008420037030020034200370300200042003703c003200420061003221041086a290000370300200020102900003703a0032010102320032004290300370300200020002903a00322063703d801200020063703c003200441f8d0c300ad4280808080a001841003221041086a290000370300200020102900003703a00320101023200c20042903002206370300200020002903a00322093703d80120022009370000200d2006370000200a2003290300370300200e2008290300370300200f2005290300370300200020002903c0033703f003200041c0036a200041f0036a109d0320002d00c0032104200f200041d9036a290000370300200e200041d1036a290000370300200a200041c9036a290000370300200020002900c1033703f0030240024020044101460d00200041b8036a4200370300200041b0036a4200370300200041a8036a4200370300200042003703a0030c010b200041a0036a41186a200041f0036a41186a290300370300200041a0036a41106a200041f0036a41106a290300370300200041a0036a41086a200041f0036a41086a290300370300200020002903f0033703a0030b200041f0026a41246a200041a0036a41186a290300370200200041f0026a411c6a200041a0036a41106a290300370200200041f0026a41146a200041a0036a41086a290300370200200020002903a0033702fc02200041ec036a20004198036a280200360200200041c0036a41246a20004190036a290300370200200041c0036a411c6a200041f0026a41186a290300370200200041c0036a41146a200041f0026a41106a290300370200200041cc036a200041f0026a41086a290300370200200020002903f0023702c403200041003602c003200041c0036a10ea02200041f0036a21080b41012103200041e0026a200041d8026a20074101461b2903002106200041c0036a41186a220e4200370300200041c0036a41106a220f4200370300200041c0036a41086a22054200370300200042003703c003200041a0036a41086a220441cafbc400ad4280808080c000841003220a41086a2900003703002000200a2900003703a003200a102320052004290300370300200020002903a00322093703d801200020093703c003200441d4d0c300ad4280808080b001841003220a41086a2900003703002000200a2900003703a003200a1023200041d8016a41086a20042903002209370300200020002903a003220b3703d8012002200b370000200241086a2009370000200041f0036a41086a2005290300370300200041f0036a41106a200f290300370300200041f0036a41186a200e290300370300200020002903c0033703f003200020063703c0032001200041c0036aad4280808080800184100202402007450d00410021030c010b200041f0026a41086a200041e8016a41086a290300370300200041f0026a41106a200041e8016a41106a2d00003a0000200020002800eb02360073200020002802e802360270200020002903e8013703f00220002903e00221060b200041e8016a41086a2006370300200041e8016a41106a20002903f002370300200041e8016a41186a200041f0026a41086a29030037030020004188026a200041f0026a41106a2d00003a0000200020033a00e801200020002802703600e901200020002800733600ec01200041c0036a41186a220a4200370300200041c0036a41106a220e4200370300200041c0036a41086a22054200370300200042003703c003200041a0036a41086a220441cafbc400ad4280808080c000841003220741086a290000370300200020072900003703a0032007102320052004290300370300200020002903a00322063703d801200020063703c00320044188d3c300ad4280808080b001841003220741086a290000370300200020072900003703a00320071023200041d8016a41086a20042903002206370300200020002903a00322013703d80120022001370000200241086a2006370000200041f0036a41086a2005290300370300200041f0036a41106a200e290300370300200041f0036a41186a200a290300370300200020002903c0033703f003410110212204450d012000420137027c200020043602780240024020030d002000410136028001200441003a00000c010b2000410136028001200441013a0000200041e8016a410172200041f8006a109e030b200028027c21042008ad428080808080048420003502800142208620002802782203ad8410022004450d00200310230b20004190046a24000f0b410141011030000bc30b01087f23004190036b2202240041002103200241003a002820012802042204417f6a2105417f210602400240034020042003460d01200241086a20036a200128020022072d00003a00002001200420066a3602042001200741016a22083602002002200341016a22093a00282005417f6a21052006417f6a21062009210320094120470d000b200241a8016a41086a200241086a41086a290300370300200241a8016a41106a200241086a41106a290300370300200241a8016a41186a200241086a41186a290300370300200220022903083703a80141002106200241003a0028200420096b21030340024020030d000240200641ff0171450d00200241003a00280b200041013a00000c030b200241086a20066a20082d00003a000020012003417f6a22033602042001200841016a22083602002002200641016a22093a00282009210620094120470d000b200241c8016a41086a200241086a41086a290300370300200241c8016a41106a200241086a41106a290300370300200241c8016a41186a200241086a41186a290300370300200220022903083703c80141002106200241003a0028200520096b2103200720096a2105034002402003417f470d000240200641ff0171450d00200241003a00280b200041013a00000c030b200241086a20066a200820066a2d00003a0000200120033602042001200520066a41026a3602002002200641016a22093a00282003417f6a21032009210620094120470d000b200241e8016a41086a200241086a41086a290300370300200241e8016a41106a200241086a41106a290300370300200241e8016a41186a200241086a41186a290300370300200220022903083703e80141002104200241003a0028200820096a2106200520096a2108034002402003417f470d000240200441ff0171450d00200241003a00280b200041013a00000c030b200241086a20046a20062d00003a0000200120033602042001200820046a41026a3602002002200441016a22093a00282003417f6a2103200641016a21062009210420094120470d000b20024188026a41086a200241086a41086a29030037030020024188026a41106a200241086a41106a29030037030020024188026a41186a200241086a41186a290300370300200220022903083703880241002109200241003a008803034002402003417f470d000240200941ff0171450d00200241003a0088030b200041013a00000c030b200241e8026a20096a20062d00003a0000200120033602042001200641016a22063602002002200941016a22083a0088032003417f6a21032008210920084120470d000b200241a8026a41086a2201200241e8026a41086a290300370300200241a8026a41106a2203200241e8026a41106a290300370300200241a8026a41186a2206200241e8026a41186a290300370300200241086a41086a200241a8016a41086a290300370300200241086a41106a200241a8016a41106a290300370300200241086a41186a200241a8016a41186a290300370300200220022903e8023703a802200220022903a801370308200241c0006a200241c8016a41186a290300370300200241386a200241c8016a41106a290300370300200241306a200241c8016a41086a290300370300200220022903c801370328200241e0006a200241e8016a41186a290300370300200241d8006a200241e8016a41106a290300370300200241d0006a200241e8016a41086a290300370300200220022903e80137034820024180016a20024188026a41186a290300370300200241f8006a20024188026a41106a290300370300200241f0006a20024188026a41086a2903003703002002200229038802370368200241a0016a200629030037030020024198016a200329030037030020024190016a2001290300370300200220022903a80237038801200041016a200241086a41a00110dc041a200041003a00000c010b0240200341ff0171450d00200241003a00280b200041013a00000b20024190036a24000bd89c020f057f017e017f017e097f017e037f017e017f027e017f037e017f157e1a7f230041a00f6b22022400200241e00e6a41186a22034200370300200241e00e6a41106a22044200370300200241e00e6a41086a22054200370300200242003703e00e200241980d6a41086a220641c6acc500ad4280808080f0008422071003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703f80d200220093703e00e200641e8fac500ad4280808080b003841003220841086a290000370300200220082900003703980d20081023200420022903980d2209370300200241c80b6a41086a220a2005290300370300200241c80b6a41106a220b2009370300200241c80b6a41186a220c2006290300370300200220093703980e200220022903e00e3703c80b200241880b6a200241c80b6a4120108f01200228028c0b210d20022802880b210e200342003703002004420037030020054200370300200242003703e00e200620071003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703f80d200220093703e00e200641e8fbc500ad42808080808001841003220841086a290000370300200220082900003703980d20081023200320062903002209370300200a2005290300370300200b20022903980d2207370300200c2009370300200220073703980e200220022903e00e3703c80b02400240024002404100200241c80b6a10a9032206200641ff01714104461b41ff0171220641034b0d00024020060e0400020103000b2001200d4100200e1b6b220620014b0d00200641064f0d020b200041003602000c020b200241e00e6a41186a22084200370300200241e00e6a41106a220a4200370300200241e00e6a41086a22054200370300200242003703e00e200241980d6a41086a220641c6acc500ad4280808080f000841003220341086a290000370300200220032900003703980d2003102320052006290300370300200220022903980d22093703f80d200220093703e00e200641e8fbc500ad42808080808001841003220341086a290000370300200220032900003703980d20031023200241980e6a41086a20062903002209370300200220022903980d22073703980e20042007370000200441086a2009370000200241c80b6a41086a2005290300370300200241c80b6a41106a200a290300370300200241c80b6a41186a2008290300370300200220022903e00e3703c80b200241c80b6aad428080808080048410050b200241a80c6a41186a4200370300200241a80c6a41106a220f420037030041082110200241a80c6a41086a22054200370300200242003703a80c200241980d6a41086a220641f7fbc400ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d3703a80c200641e7acc500ad4280808080a001841003220441086a290000370300200220042900003703980d20041023200f20022903980d2209370300200241c80b6a41086a2005290300370300200241c80b6a41106a2009370300200241c80b6a41186a2006290300370300200220093703980e200220022903a80c3703c80b200241a80c6a200241c80b6a412010bb014100211141002112024002400240024002400240024002400240024020022902ac0c420020022802a80c22061b2209422088a722054105742204450d0020044105752212ad42d0007e2207422088a70d092007a722044100480d09200410212210450d010b2009a7210d2006410120061b210c02402005450d002005410574220441606a210e200241a80c6a41206a210620102103200c21050340200541086a2900002109200541106a290000210720052900002113200241c80b6a41186a2208200541186a290000370300200241c80b6a41106a220a2007370300200241c80b6a41086a220b2009370300200220133703c80b200241f00b6a200241c80b6a10be01200241a80c6a41186a2008290300370300200241a80c6a41106a200a290300370300200241a80c6a41086a200b290300370300200620022903f00b370300200641086a200241f00b6a41086a290300370300200641106a200241f00b6a41106a290300370300200641186a200241f00b6a41186a290300370300200641206a200241f00b6a41206a290300370300200641286a200241f00b6a41286a290300370300200220022903c80b3703a80c2003200241a80c6a41d00010dc0441d0006a2103200541206a2105200441606a22040d000b200e41057641016a21110b0240200d450d00200c10230b200241c80b6a41186a22044200370300200241c80b6a41106a22144200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f0008422091003220341086a290000370300200220032900003703980d2003102320052006290300370300200220022903980d22073703f80d200220073703c80b2006418cfbc500ad4280808080e002841003220341086a290000370300200220032900003703980d20031023201420022903980d2207370300200241a80c6a41086a22032005290300370300200241a80c6a41106a22082007370300200241a80c6a41186a220a2006290300370300200220073703980e200220022903c80b3703a80c200241f00b6a200241a80c6a10ae03410021150240024020022802f40b22160d004104211642002117410021180c010b200241a80c6aad4280808080800484100520022802f00b211820022903f80b21170b200a42003703002008420037030020034200370300200242003703a80c200641be99c600ad42808080809001841003220b41086a2900003703002002200b2900003703980d200b102320032006290300370300200220022903980d3703a80c200641f0cec400ad428080808030841003220b41086a2900003703002002200b2900003703980d200b1023200241980e6a41086a220b20062903002207370300200220022903980d22133703980e200f2013370000200f41086a200737000020052003290300370300201420082903003703002004200a290300370300200220022903a80c3703c80b200241f80a6a200241c80b6a109c0220022903800b210720022802f80a210d200442003703002014420037030020054200370300200242003703c80b200620091003220c41086a2900003703002002200c2900003703980d200c102320052006290300370300200220022903980d22133703f80d200220133703c80b20064184adc500ad4280808080f0018422131003220c41086a2900003703002002200c2900003703980d200c1023200b20062903002219370300200220022903980d221a3703980e2014201a370000201441086a220e20193700002003200529030037030020082014290300370300200a2004290300370300200220022903c80b3703a80c200241e80a6a200241a80c6a109c0220022903f00a211920022802e80a211b200442003703002014420037030020054200370300200242003703c80b200620091003220c41086a2900003703002002200c2900003703980d200c102320052006290300370300200220022903980d22093703f80d200220093703c80b200620131003220c41086a2900003703002002200c2900003703980d200c1023200b20062903002209370300200220022903980d22133703980e20142013370000200e20093700002003200529030037030020082014290300370300200a2004290300370300200220022903c80b3703a80c200220074200200d1b22093703f00b200241a80c6aad221c4280808080800484221d200241f00b6aad221e42808080808001841002200920194200201b1b7d2213500d07200241a80c6a41186a22044200370300200241a80c6a41106a22034200370300200241a80c6a41086a22054200370300200242003703a80c200241980d6a41086a220641c6acc500ad4280808080f0008422091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d3703a80c20064185b2c500ad4280808080e001841003220841086a290000370300200220082900003703980d20081023200241980e6a41086a220d20062903002207370300200220022903980d22193703980e200f2019370000200f41086a221f2007370000200241c80b6a41086a22082005290300370300200241c80b6a41106a220a2003290300370300200241c80b6a41186a220b2004290300370300200220022903a80c3703c80b200241a80c6a200241c80b6a412010bb0120022802a80c210c20022902ac0c2119200b4200370300200a420037030020084200370300200242003703c80b200620091003220e41086a2900003703002002200e2900003703980d200e102320082006290300370300200220022903980d22093703f80d200220093703c80b20064193b2c500ad42808080809001841003220e41086a2900003703002002200e2900003703980d200e1023200d20062903002209370300200220022903980d22073703980e20142007370000201441086a2009370000200520082903003703002003200a2903003703002004200b290300370300200220022903c80b3703a80c200241d00a6a200241a80c6a4120108902200241d00a6a41106a290300211a20022903d80a212020022802d00a210e200442003703002003420037030020054200370300200242003703a80c200641d5fbc400ad42808080808001841003221b41086a2900003703002002201b2900003703980d201b102320052006290300370300200220022903980d3703a80c200641d6a0c200ad4280808080d001841003221b41086a2900003703002002201b2900003703980d201b1023200d20062903002209370300200220022903980d22073703980e200f2007370000201f200937000020082005290300370300200a2003290300370300200b2004290300370300200220022903a80c3703c80b200241b80a6a200241c80b6a4120108902200241a80a6a20022903c00a420020022802b80a22061b2207200241b80a6a41106a290300420020061b2209428094ebdc03420010e204200241880a6a20204200200e1b201a4200200e1b20194200200c1b22214220882222420010e104200241980a6a20022903a80a221a200241a80a6a41086a29030022204280ec94a37c427f10e1042009200241880a6a41086a290300221920022903880a2223200756201920095620192009511b22061b21092007202320061b212320022903980a20077c21192022a721032013428086ebc7f5002013428086ebc7f500541b421f8042ffffffff0f83428094ebdc037e429880b5e50380212241012105200c4101200c1b211f41d87d21060240024003402006450d01200241f8096a201a2020200641b0d3c4006a3502002207420010e1042005417f6a2105200641086a2106202320022903f8092213200720197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207542009200241f8096a41086a2903002007201354ad7c22075420092007511b2204450d000b0240200441016a41017120056b2206417f6a220520064d0d00200241f8086a201a202042c0f0f50b420010e10420024180096a29030020022903f8082207201942c0f0f50b7e201942288022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c21130c020b0240200541244b0d00200241e8096a201a2020200541037422044188d1c4006a2802002208ad2207420010e104200241c8096a202320022903e8092213200720197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c220720232007562009200241e8096a41086a2903002007201354ad7c22135620092013511b22051b22242007202320051b22077d22232009201320051b2013200920051b7d2024200754ad7d41002006410374220a4188d1c4006a280200220620086b2208200820064b1b22064101200641014b1bad2209420010e204200241b8096a20022903c8092207200241c8096a41086a29030022242009420010e104200241d8096a201a20202004418cd1c4006a2802002206ad2225420010e10420024188096a20244200200a418cd1c4006a28020022042006200420064b22081b2006200420081b6bad2213420010e104200241a8096a200742002013420010e10420024198096a420042002007420010e104427f427f200241a8096a41086a29030022072002290388092002290398097c7c222420022903900920022903a0098442005220242007547222081b2224427f20022903a80920081b2207202320022903b8097d20137e2009807c22092007542208ad7c221320082013202454200920075a1b22081b2123427f200920081b2113200241d8096a41086a29030020022903d8092209202520197e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207200954ad7c210902402005200420064d730d004200200920237d2007201354ad7d2223200720137d2224200756202320095620232009511b22061b21134200202420061b21090c030b427f200920237c200720137c22232007542206ad7c22072006200720095420072009511b22061b2113427f202320061b21090c020b4198e8c10020054125102d000b200241e8086a201a202042e8aafa0b420010e104200241f0086a29030020022903e8082207201942e8aafa0b7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c21130b42002126200241a8086a201a20204280c2d72f420010e10420024198086a20022903a808221a20194280c2d72f7e2019420a8022074280ec94a37c7e7c4280cab5ee01562007a76aad7c2207200241a8086a41086a2903002007201a54ad7c428094ebdc03420010e204200241d8086a20092013428094ebdc03420010e20420024188086a200229039808221320024198086a41086a29030022194280ec94a37c427f10e104200241f8076a201320192022420010e104200241c8086a20022903d8082213200241d8086a41086a29030022194280ec94a37c427f10e104200241b8086a201320192022420010e104202220072002290388087c7e2227428094ebdc0380212820022903f8072129200241f8076a41086a290300212a2022200920022903c8087c7e2207428094ebdc03802109024020030d004200212b0c070b201f20034105746a210e20162017422088a74102746a210d200241e8076a20022903b8082213200720094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200241b8086a41086a2903002009201354ad7c428094ebdc03420010e204200241d8076a20022903e807222c200241e8076a41086a290300222d4280ec94a37c427f10e10420184101201841014b1b220a418094ebdc036e22064101200641014b1b210b200920022903d8077c212e200241c80b6a41106a2118420021264200212b20162103201f2108024003402003200d460d080240024020032802002206450d00200241c8076a202c202d200a2006200a2006491b200b6ead428094ebdc037e200a200b6ead8042ffffffff0f832209420010e104200241980d6a41086a220641c6acc500ad4280808080f000841003220541086a290000370300200220052900003703980d20051023200241f80d6a41086a22042006290300370300200220022903980d3703f80d200641e7acc500ad4280808080a001841003220541086a290000370300200220052900003703980d20051023200241980e6a41086a22052006290300370300200220022903980d3703980e200241c80b6a200810ac012009202e7e2213428094ebdc0380210920022903c8072107200241c8076a41086a290300211941c00010212206450d0520192007201320094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209200754ad7c2107200620022903f80d370000200641086a2004290300370000200620022903980e370010200641186a2005290300370000200620022903c80b370020200641286a200241c80b6a41086a290300370000200641306a2018290300370000200641386a200241c80b6a41186a290300370000200241c0003602840f200220063602800f200241c80b6a2006ad428080808080088410041090010240024020022802c80b22050d00410021040c010b20022802cc0b211b200220022802d00b3602a40b200220053602a00b200241c0076a200241a00b6a106e0240024020022802c0070d0020022802c407210c410121040c010b200241003602f80b200242013703f00b2002410c3602bc0e2002200241800f6a3602b80e2002200241f00b6a3602e00e200241013602bc0c200242013702ac0c20024198c2c3003602a80c2002200241b80e6a3602b80c200241e00e6a41b8a3c500200241a80c6a102e1a20023502f80b42208620023502f00b841008024020022802f40b450d0020022802f00b10230b410021040b201b450d00200510230b42002113200241b0076a20092007428094ebdc03420010e204200241a0076a20022903b0072219200241b0076a41086a290300221a4280ec94a37c427f10e10420024190076a2019201a200c410020041bad2220420010e10420061023200242003703f80b200242003703f00b024002404200200920022903900722192020200920022903a0077c7e221a201a428094ebdc0380221a4280ec94a37c7e7c4280cab5ee0156201aa76aad7c222f7d221a201a200956200720024190076a41086a290300202f201954ad7c22307d2009202f54ad7d220920075620092007511b22061b22314200200920061b22328450450d00420021090c010b200241a80c6a200810be0120024180076a20022903a80c220942012009420156200241a80c6a41086a29030022094200522009501b22061b22132009420020061b2209428094ebdc03420010e20420022802c80c210c20024180076a41086a29030021332002290380072134024020022802d00c2206450d00200241f0066a2013200920344201203442015620334200522033501b22051b221a2033420020051b222010e204200241d0066a20312032428094ebdc03420010e204200241e0066a20312032428094ebdc03420010e30420022903f006220742ffffffff0f56200241f0066a41086a29030022194200522019501b0d032007a7450d05200c200641306c6a2104200742ffffffff0f832123200241d0066a41086a290300212220022903d006212420022903e0062125200c21060340200241c0066a20132006290300220720132007542009200641086a29030022075420092007511b22051b2009200720051b201a202010e20420022903c0062207428080808010544100200241c0066a41086a290300501b450d0c20024198066a20242022200742ffffffff0f83428094ebdc037e20238042ffffffff0f832207420010e104200241a8066a200641106a2002290398062219200720257e22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76aad7c220720024198066a41086a2903002007201954ad7c10b504200241f00b6a20022903a80620022903b006200241a8066a41106a29030010a503200641306a22062004470d000b0b200241f8056a2013200920344201203442015620334200522033501b22061b221a2033420020061b222010e20420022903f8052207428080808010544100200241f8056a41086a290300501b450d07200241e8056a201320022903b80c221920132019542009200241a80c6a41186a29030022195420092019511b22061b2009201920061b201a202010e20420022903e8052209428080808010544100200241e8056a41086a290300501b450d082007a7450d09200241d8056a20312032428094ebdc03420010e204200241c8056a20022903d8052213200241d8056a41086a29030022194280ec94a37c427f10e104200241b8056a20132019200942ffffffff0f83428094ebdc037e200742ffffffff0f838042ffffffff0f832209420010e10420022903b80522072009203120022903c8057c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2213200754ad2109200241b8056a41086a2903002107024020022802cc0c450d00200c10230b200720097c21090b200241a0056a20082013202f7c2207200920307c2007201354ad7c10b504200241f00b6a20022903a00520022903a805200241a0056a41106a29030010a503427f202b200241f00b6a41086a2903007c202620022903f00b7c22072026542206ad7c220920062009202b542009202b511b22061b212b427f200720061b21260b200341046a2103200841206a2208200e470d010c090b0b200241113602cc0b200241ad99c6003602c80b419b97c60041e000200241c80b6a41ec9bc6001031000b20024188066a2013200c290300220720132007542009200c41086a29030022075420092007511b22061b2009200720061b201a202010e20420022903880642808080801054410020024188066a41086a290300501b450d0541fc97c600102b000b200441081030000b41c00041011030000b200241113602cc0b200241ad99c6003602c80b419b97c60041e000200241c80b6a41ec9bc6001031000b200241113602cc0b200241ad99c6003602c80b419b97c60041e000200241c80b6a41ec9bc6001031000b41fc97c600102b000b200241113602cc0b200241ad99c6003602c80b419b97c60041e000200241c80b6a41ec9bc6001031000b202a2029202720284280ec94a37c7e7c4280cab5ee01562028a76aad7c2209202954ad7c210702402017a7450d00201610230b200241a80c6a41186a202b370300200241a80c6a41106a2026370300200241a80c6a41086a41003a0000200241d00c6a42002007202b7d2009202654ad7d2213200920267d2219200956201320075620132007511b22061b2207370300200241a80c6a41206a4200201920061b2213370300200241033a00a80c200241a80c6a108e0120024188056a2026202b10870320024188056a41106a2903002119200229039005211a0240024002402002290388052209a7450d00200241c80d6a41186a22044200370300200241c80d6a41106a22034200370300200241c80d6a41086a22054200370300200242003703c80d200241980d6a41086a220641d5fbc400ad428080808080018422201003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703a00b200220093703c80d200641d6a0c200ad4280808080d0018422231003220841086a290000370300200220082900003703980d20081023200320022903980d2209370300200241a80d6a41086a220a2005290300370300200241a80d6a41106a220b2009370300200241a80d6a41186a220c2006290300370300200220093703e80d200220022903c80d3703a80d200241f0046a200241a80d6a4120108902200241f0046a41106a290300210920022903f804212220022802f0042108200442003703002003420037030020054200370300200242003703c80d200620201003220341086a290000370300200220032900003703980d2003102320052006290300370300200220022903980d22203703a00b200220203703c80d200620231003220341086a290000370300200220032900003703980d20031023200420062903002220370300200a2005290300370300200b20022903980d2223370300200c2020370300200220233703e80d200220022903c80d3703a80d2002427f2009420020081b220920197c2022420020081b2219201a7c221a2019542206ad7c22192006201920095420192009511b22061b3703b00c2002427f201a20061b3703a80c200241a80c6a2106200241a80d6a21050c010b2009500d01200241c80d6a41186a22044200370300200241c80d6a41106a22034200370300200241c80d6a41086a22054200370300200242003703c80d200241980d6a41086a220641d5fbc400ad428080808080018422201003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703a00b200220093703c80d200641d6a0c200ad4280808080d0018422231003220841086a290000370300200220082900003703980d20081023200320022903980d2209370300200241a80d6a41086a220a2005290300370300200241a80d6a41106a220b2009370300200241a80d6a41186a220c2006290300370300200220093703e80d200220022903c80d3703a80d200241d8046a200241a80d6a4120108902200241d8046a41106a290300210920022903e004212220022802d8042108200442003703002003420037030020054200370300200242003703c80d200620201003220341086a290000370300200220032900003703980d2003102320052006290300370300200220022903980d22203703a00b200220203703c80d200620231003220341086a290000370300200220032900003703980d20031023200420062903002220370300200a2005290300370300200b20022903980d2223370300200c2020370300200220233703e80d200220022903c80d3703a80d2002427f2009420020081b220920197c2022420020081b2219201a7c221a2019542206ad7c22192006201920095420192009511b22061b3703b00c2002427f201a20061b3703a80c200241a80c6a2106200241a80d6a21050b2005ad42808080808004842006ad428080808080028410020b200241a80c6a41186a22044200370300200241a80c6a41106a22034200370300200241a80c6a41086a22064200370300200242003703a80c200241980d6a41086a220541d5fbc400ad428080808080018422201003220841086a290000370300200220082900003703980d2008102320062005290300370300200220022903980d22093703f00b200220093703a80c200541d6a0c200ad4280808080d0018422231003220841086a290000370300200220082900003703980d20081023200241980e6a41086a220b20052903002209370300200220022903980d22193703980e200f2019370000200f41086a220c2009370000200241c80b6a41086a220d2006290300370300200241c80b6a41106a220e2003290300370300200241c80b6a41186a221b2004290300370300200220022903a80c3703c80b200241c0046a200241c80b6a4120108902200241c0046a41106a290300210920022903c804211920022802c0042108200442003703002003420037030020064200370300200242003703a80c200520201003220a41086a2900003703002002200a2900003703980d200a102320062005290300370300200220022903980d221a3703f00b2002201a3703a80c200520231003220a41086a2900003703002002200a2900003703980d200a1023200b2005290300221a370300200220022903980d22223703980e200f2022370000200c201a370000200d2006290300370300200e2003290300370300201b2004290300370300200220022903a80c3703c80b2002427f2009420020081b220920077c2019420020081b221920137c22222019542208ad7c221a2008201a200954201a2009511b22081b3703b00c2002427f202220081b3703a80c200241c80b6aad4280808080800484201c4280808080800284221a1002024002402019427f85201320081b22132009427f85200720081b2209844200520d00200241c80d6a41186a22034200370300200241c80d6a41106a22084200370300200241c80d6a41086a22044200370300200242003703c80d200520201003220a41086a2900003703002002200a2900003703980d200a102320042005290300370300200220022903980d22093703a00b200220093703c80d200620231003220541086a290000370300200220052900003703a80c20051023200820022903a80c2209370300200241a80d6a41086a220a2004290300370300200241a80d6a41106a220b2009370300200241a80d6a41186a220c2006290300370300200220093703e80d200220022903c80d3703a80d200241a8046a200241a80d6a4120108902200241a8046a41106a290300210920022903b004210720022802a8042105200342003703002008420037030020044200370300200242003703c80d200620201003220841086a290000370300200220082900003703a80c2008102320042006290300370300200220022903a80c22133703a00b200220133703c80d200620231003220841086a290000370300200220082900003703a80c20081023200320062903002213370300200a2004290300370300200b20022903a80c2219370300200c2013370300200220193703e80d200220022903c80d3703a80d20022009420020051b3703b00c20022007420020051b3703a80c200241a80d6aad4280808080800484201a10020c010b200241a80c6a109302200241a80c6a2013200910da022004200937030020032013370300200641053a00002002410d3a00a80c200241a80c6a108e010b410121152021a7450d00201f10230b200241c80b6a41186a22044200370300200241c80b6a41106a22034200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f0008422091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22073703f80d200220073703c80b200641b0fac500ad4280808080a0018422071003220841086a290000370300200220082900003703980d20081023200241980e6a41086a220820062903002213370300200220022903980d22193703980e20142019370000201441086a220a2013370000200241a80c6a41086a220b2005290300370300200241a80c6a41106a220c2003290300370300200241a80c6a41186a220d2004290300370300200220022903c80b3703a80c200241a0046a200241a80c6a4120108f0120022802a004211b20022802a4042118200442003703002003420037030020054200370300200242003703c80b200620091003220e41086a2900003703002002200e2900003703980d200e102320052006290300370300200220022903980d22133703f80d200220133703c80b200620071003220e41086a2900003703002002200e2900003703980d200e1023200820062903002207370300200220022903980d22133703980e20142013370000200a2007370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903c80b3703a80c2002201841016a4101201b1b22353602f00b201d201e4280808080c0008422071002200442003703002003420037030020054200370300200242003703c80b200620091003220e41086a2900003703002002200e2900003703980d200e102320052006290300370300200220022903980d22133703f80d200220133703c80b200641e8fac500ad4280808080b0038422131003220e41086a2900003703002002200e2900003703980d200e1023200820062903002219370300200220022903980d221a3703980e2014201a370000200a2019370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903c80b3703a80c20024198046a200241a80c6a4120108f01200442003703002003420037030020054200370300200242003703c80b200620091003220e41086a2900003703002002200e2900003703980d200e102320052006290300370300200220022903980d22193703f80d200220193703c80b200620131003220e41086a2900003703002002200e2900003703980d200e1023200820062903002213370300200220022903980d22193703980e20142019370000200a2013370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903c80b3703a80c200220013602f00b201d20071002200442003703002003420037030020054200370300200242003703c80b200620091003220e41086a2900003703002002200e2900003703980d200e102320052006290300370300200220022903980d22093703f80d200220093703c80b200641d0fdc500ad4280808080a001841003220e41086a2900003703002002200e2900003703980d200e1023200820062903002209370300200220022903980d22073703980e20142007370000200a2009370000200b2005290300370300200c2003290300370300200d2004290300370300200220022903c80b3703a80c200241f00b6a200241a80c6a10af0320022802f00b2206410420061b2136024002400240024002400240024002400240024002400240024002400240024002400240024020022902f40b420020061b22094220882207a722062009a7470d00200641016a22052006490d132007a722034101742204200520052004491b220541ffffffff01712005470d13200541037422044100480d130240024020060d002004102121360c010b203620034103742004102521360b2036450d012009422088a721062005ad21090b203620064103746a2205200136020420052035360200200942ffffffff0f832113200641016a2137024020350d0020132037ad4220868421130c060b2037450d05200641037441086a21054100211f2036210602400340200628020020354f0d01200641086a2106201f41016a211f200541786a22050d000b0b2037201f490d010240201f0d00410021060c050b201f4103742118201c4280808080c0008421092036211b0340201b2802002101200241980d6a41086a220541c6acc500ad4280808080f0008422071003220641086a290000370300200220062900003703980d20061023200241a00b6a41086a22042005290300370300200220022903980d3703a00b20054193adc500ad4280808080b002841003220641086a290000370300200220062900003703980d20061023200241e80d6a41086a22032005290300370300200220022903980d3703e80d200220013602a80c200241c80d6a41186a220820091001220641186a290000370300200241c80d6a41106a220a200641106a290000370300200241c80d6a41086a220b200641086a290000370300200220062900003703c80d20061023200241a80d6a41186a220c2008290300370300200241a80d6a41106a220d200a290300370300200241a80d6a41086a220e200b290300370300200220022903c80d3703a80d41c00010212206450d03200620022903a00b370000200641086a2004290300370000200620022903e80d370010200641186a2003290300370000200620022903a80d370020200641286a200e290300370000200641306a200d290300370000200641386a200c2903003700002006ad4280808080800884100a20061023200520071003220641086a290000370300200220062900003703980d2006102320042005290300370300200220022903980d3703a00b200541a6adc500ad4280808080b002841003220641086a290000370300200220062900003703980d2006102320032005290300370300200220022903980d3703e80d200220013602a80c200820091001220641186a290000370300200a200641106a290000370300200b200641086a290000370300200220062900003703c80d20061023200c2008290300370300200d200a290300370300200e200b290300370300200220022903c80d3703a80d41c00010212206450d04201b41086a211b200620022903a00b370000200641086a2004290300370000200620022903e80d370010200641186a2003290300370000200620022903a80d370020200641286a200e290300370000200641306a200d290300370000200641386a200c2903003700002006ad4280808080800884100a20061023201841786a22180d000b201f21060c040b200441041030000b41ccbac000102b000b41c00041011030000b41c00041011030000b2037201f6b221b450d0002402006450d002036203620064103746a201b41037410dd041a0b20362802042101200241a80d6a41186a4200370300200241a80d6a41106a220e4200370300200241a80d6a41086a22054200370300200242003703a80d200241980d6a41086a220641f7fbc400ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d22093703a00b200220093703a80d200641f3b8c000ad4280808080b001841003220441086a290000370300200220042900003703980d20041023200e20022903980d2209370300200241f80d6a41086a2005290300370300200241f80d6a41106a2009370300200241f80d6a41186a2006290300370300200220093703e80d200220022903a80d3703f80d200241a80c6a200241f80d6a41201086024101210620022902ac0c21190240024020022802a80c22054101460d00200541014621060c010b2019422088a722182001200120184b1b220d2019a72205490d000240200d20054d0d00201c4280808080c00084210941f7fbc400ad4280808080f0008421070340200241980d6a41086a220620071003220441086a290000370300200220042900003703980d20041023200241a00b6a41086a22032006290300370300200220022903980d3703a00b200641f2a9c300ad4280808080a002841003220441086a290000370300200220042900003703980d20041023200241e80d6a41086a22042006290300370300200220022903980d3703e80d200220053602a80c200241c80d6a41186a220820091001220641186a290000370300200241c80d6a41106a220a200641106a290000370300200241c80d6a41086a220b200641086a290000370300200220062900003703c80d20061023200241a80d6a41186a220c2008290300370300200241a80d6a41106a2208200a290300370300200241a80d6a41086a220a200b290300370300200220022903c80d3703a80d41c00010212206450d04200620022903a00b370000200641086a2003290300370000200620022903e80d370010200641186a2004290300370000200620022903a80d370020200641286a200a290300370000200641306a2008290300370000200641386a200c2903003700002006ad4280808080800884100520061023200d200541016a2205470d000b0b20012018492106201942808080807083200dad8421190b201bad4220862109200220193702ac0c200220063602a80c0240024020060d00200241a80d6a41186a22034200370300200241a80d6a41106a22084200370300200241a80d6a41086a22054200370300200242003703a80d200241980d6a41086a220641f7fbc400ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d22073703a00b200220073703a80d200641f3b8c000ad4280808080b001841003220441086a290000370300200220042900003703980d20041023200241e80d6a41086a20062903002207370300200220022903980d22193703e80d200e2019370000200e41086a2007370000200241f80d6a41086a2005290300370300200241f80d6a41106a2008290300370300200241f80d6a41186a2003290300370300200220022903a80d3703f80d200241f80d6aad428080808080048410050c010b200241a80d6a41186a22034200370300200241a80d6a41106a22084200370300200241a80d6a41086a22054200370300200242003703a80d200241980d6a41086a220641f7fbc400ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d22073703a00b200220073703a80d200641f3b8c000ad4280808080b001841003220441086a290000370300200220042900003703980d20041023200241e80d6a41086a20062903002207370300200220022903980d22193703e80d200e2019370000200e41086a2007370000200241f80d6a41086a2005290300370300200241f80d6a41106a2008290300370300200241f80d6a41186a2003290300370300200220022903a80d3703f80d200241f80d6a4120200241a80c6a410472108c020b201320098421130b200241c80b6a41186a22034200370300200241c80b6a41106a22084200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d22093703f80d200220093703c80b200641d0fdc500ad4280808080a001841003220441086a290000370300200220042900003703980d20041023200241980e6a41086a20062903002209370300200220022903980d22073703980e20142007370000201441086a2009370000200241a80c6a41086a2005290300370300200241a80c6a41106a2008290300370300200241a80c6a41186a2003290300370300200220022903c80b3703a80c024002400240024020360d00201d10050c010b200241003602f80b200242013703f00b2013422088a72206200241f00b6a105c0240024020060d0020022802f80b210320022802f40b210420022802f00b21050c010b203620064103746a210c20022802f40b210420022802f80b21032036210803402008280200210b02400240200420036b4104490d00200341046a210620022802f00b21050c010b200341046a22062003490d12200441017422052006200520064b1b220a4100480d120240024020040d00200a102121050c010b20022802f00b2004200a102521050b2005450d052002200a3602f40b200220053602f00b200a21040b200220063602f80b200520036a200b360000200841046a280200210a0240200420066b41034b0d00200641046a22032006490d122004410174220b2003200b20034b1b22034100480d120240024020040d002003102121050c010b200520042003102521050b2005450d04200220033602f40b200220053602f00b200321040b2002200641046a22033602f80b200520066a200a360000200841086a2208200c470d000b0b2013a72106201d2003ad4220862005ad84100202402004450d00200510230b2006450d00203610230b200241003602980b200242043703900b200241a80c6a10ad04200241a00b6a20022802a80c220620022802b00c108a01024020022802ac0c450d00200610230b200241c80b6a410c6a200241a00b6a41086a290300370200200241c80b6a41146a200241a00b6a41106a290300370200200241c80b6a411c6a200241a00b6a41186a290300370200200241c80b6a41246a200241a00b6a41206a2d00003a0000200220022903a00b3702cc0b2002200241900b6a3602c80b200241a80c6a200241c80b6a41047210a301410121180240024002400240024002400240024020022802a80c4101460d004100210e4100211f0c010b200241f00b6a41206a200241a80c6a41246a280200360200200241f00b6a41186a200241a80c6a411c6a22062902002209370300200241f00b6a41106a200241a80c6a41146a22052902002207370300200241f00b6a41086a200241a80c6a410c6a22042902002213370300200220022902ac0c22193703f00b200241e00e6a41186a2009370300200241e00e6a41106a2007370300200241e00e6a41086a2013370300200220193703e00e200241a80d6a41186a2006290200370300200241a80d6a41106a2005290200370300200241a80d6a41086a2004290200370300200220022902ac0c3703a80d412010212205450d06200520022903e00e370000200541186a200241e00e6a41186a2203290300370000200541106a200241e00e6a41106a2208290300370000200541086a200241e00e6a41086a220a290300370000200241f80d6a41086a200241a80d6a41086a2903002209370300200241f80d6a41106a200241a80d6a41106a2903002207370300200241f80d6a41186a200241a80d6a41186a2903002213370300200220022903a80d22193703f80d20022802c80b2106200241c80d6a41186a220b2013370300200241c80d6a41106a220c2007370300200241c80d6a41086a220d2009370300200220193703c80d024020062802082204200641046a280200470d00200441016a220e2004490d162004410174221b200e201b200e4b1b220ead422c7e2209422088a70d162009a7221b4100480d160240024020040d00201b102121040c010b20062802002004412c6c201b102521040b2004450d0620062004360200200641046a200e360200200628020821040b200d2903002109200c2903002107200b290300211320022903c80d211920062802002004412c6c6a22044281808080103702242004200536022020042019370200200441186a2013370200200441106a2007370200200441086a20093702004101210e2006200628020841016a360208200241800f6a41086a200a290300370300200241800f6a41106a2008290300370300200241800f6a41186a2003290300370300200220022903e00e3703800f412010212218450d04201820022903800f370000201841186a200241800f6a41186a221b290300370000201841106a200241800f6a41106a2201290300370000201841086a200241800f6a41086a2236290300370000200241f00b6a41206a200241c80b6a41206a290300370300200241f00b6a41186a200241c80b6a41186a290300370300200241f00b6a41106a200241c80b6a41106a290300370300200241f00b6a41086a200241c80b6a41086a290300370300200220022903c80b3703f00b200241a80c6a200241f00b6a410472223810a301024020022802a80c4101460d004101211f0c010b200241a80c6a41047221054102210a412021084101210e4101211f0340200241b80e6a41206a200541206a280200360200200241b80e6a41186a200541186a22062902002209370300200241b80e6a41106a200541106a22042902002207370300200241b80e6a41086a200541086a220329020022133703002002200529020022193703b80e200241e00e6a41186a220b2009370300200241e00e6a41106a220c2007370300200241e00e6a41086a220d2013370300200220193703e00e200241a80d6a41186a22372006290000370300200241a80d6a41106a22062004290000370300200241a80d6a41086a22392003290000370300200220052900003703a80d412010212204450d04200420022903e00e370000200441186a200b290300370000200441106a200c290300370000200441086a200d290300370000200241f80d6a41086a20392903002209370300200241f80d6a41106a20062903002207370300200241f80d6a41186a20372903002213370300200220022903a80d22193703f80d20022802f00b2106200241c80d6a41186a22372013370300200241c80d6a41106a22392007370300200241c80d6a41086a223a2009370300200220193703c80d024020062802082203200641046a223b280200470d00200341016a223c2003490d172003410174223d203c203d203c4b1b223cad422c7e2209422088a70d172009a7223d4100480d170240024020030d00203d102121030c010b20062802002003412c6c203d102521030b2003450d0420062003360200203b203c360200200628020821030b203a2903002109203929030021072037290300211320022903c80d211920062802002003412c6c6a22034281808080103702242003200436022020032019370200200341186a2013370200200341106a2007370200200341086a20093702002006200628020841016a360208200241980e6a41086a2206200d290300370300200241980e6a41106a2204200c290300370300200241980e6a41186a2203200b290300370300200220022903e00e3703980e201b20032903003703002001200429030037030020362006290300370300200220022903980e3703800f0240200e201f470d00200e41016a2206200e490d17200a2006200a20064b1b221f41ffffff3f71201f470d17201f41057422064100480d1702400240200e0d002006102121180c010b201820082006102521180b2018450d030b201820086a220620022903800f370000200641186a201b290300370000200641106a2001290300370000200641086a2036290300370000200241a80c6a203810a301200a41026a210a200841206a2108200e41016a210e20022802a80c4101460d000b0b200241f00b6a10af04200241a80c6a20022802f00b220620022802f80b108a01024020022802f40b450d00200610230b200241b80e6a41086a200241a80c6a41086a22372903002209370300200241b80e6a41106a200241a80c6a41106a22392903002207370300200241b80e6a41186a200241a80c6a41186a223a2903002213370300200241b80e6a41206a200241a80c6a41206a220d2d000022063a0000200220022903a80c22193703b80e200241c80b6a41206a20063a0000200241c80b6a41186a2013370300200241c80b6a41106a2007370300200241c80b6a41086a2009370300200220193703c80b200241a80c6a200241c80b6a10a60102400240024002400240024002400240024020022d00d80c4102460d000340200241f00b6a41286a200241a80c6a41286a280200360200200241f00b6a41206a200d290300370300200241f00b6a41186a221b203a290300370300200241f00b6a41106a22012039290300370300200241f00b6a41086a22362037290300370300200220022903a80c3703f00b200d28020021084100210a024020022902cc0c2209422088a72203450d0020022802d40c210c4100210a41002106024003402006210502400240200a0d000340024020062003490d00200621050c240b2002200820064105746a3602980e200241e00e6a200241980e6a10b1040240024020022802e80e2205450d0020022802e40e2104024020022802ec0e450d00200510230b200641016a21062004200c4d0d010c040b200641016a21060b20062003490d000b4100210a0c040b0340200520034f0d222002200820054105746a22043602980e200241e00e6a200241980e6a10b1040240024020022802e80e22060d00200541016a21060c010b20022802e40e210b024020022802ec0e450d00200610230b200541016a2106200b200c4b0d020b02402005200a6b220520034f0d00200820054105746a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a29000037000020062105200620034f0d040c010b0b41c4bcc00020052003102d000b200a41016a210a20062003490d000b0b200a450d00200620034f0d00200820064105746a2205200a4105746b2005200320066b41057410dd041a0b200241800f6a41186a2206201b290300370300200241800f6a41106a22052001290300370300200241800f6a41086a22042036290300370300200220022903f00b3703800f2008450d01200241c80d6a41186a220b2006290300370300200241c80d6a41106a220c2005290300370300200241c80d6a41086a221b2004290300370300200220022903800f3703c80d0240024020022802980b220520022802940b460d0020022802900b21060c010b200541016a22062005490d1f200541017422042006200420064b1b2204ad422c7e2207422088a70d1f2007a722014100480d1f0240024020050d002001102121060c010b20022802900b2005412c6c2001102521060b2006450d03200220043602940b200220063602900b0b201b2903002107200c2903002113200b290300211920022903c80d211a20062005412c6c6a2206200942ffffffff0f832003200a6bad42208684370224200620083602202006201a370200200641186a2019370200200641106a2013370200200641086a20073702002002200541016a3602980b200241a80c6a200241c80b6a10a60120022d00d80c4102470d000b0b200241c80b6a41186a22044200370300200241c80b6a41106a22034200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f0008422091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22073703f80d200220073703c80b20064198f7c500ad4280808080e001841003220841086a290000370300200220082900003703980d20081023200241980e6a41086a220a20062903002207370300200220022903980d22133703980e20142013370000201441086a220b2007370000200241a80c6a41086a220c2005290300370300200241a80c6a41106a220d2003290300370300200241a80c6a41186a221b2004290300370300200220022903c80b3703a80c20024190046a200241a80c6a4120108f01200228029404213e200228029004213f200442003703002003420037030020054200370300200242003703c80b200620091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703f80d200220093703c80b200641b4f7c500ad4280808080d002841003220841086a290000370300200220082900003703980d20081023200a20062903002209370300200220022903980d22073703980e20142007370000200b2009370000200c2005290300370300200d2003290300370300201b2004290300370300200220022903c80b3703a80c20024188046a200241a80c6a4120108f01200228028c042106200228028804210520022802900b214020022802940b214120022802980b2137200242003702cc0b200241d8a7c3003602c80b2037200e6a223aad42e0007e2209422088a70d132009a72239417f4c0d134108211b0240024020390d0041082142410821430c010b203910212242450d02204221430b4100210d410021440240200e4105742203450d0020034105752244ad42d8007e2209422088a70d1d2009a722044100480d1d20041021221b450d030b2006410420051b223b41014b213c0240200e450d00200341606a2138200241d80c6a2105200241d00c6a2136201b210841002104201821060340200241800f6a41186a220a200641186a220b290000370300200241800f6a41106a220c200641106a220d290000370300200241800f6a41086a220e200641086a2201290000370300200220062900003703800f200241f00b6a41186a200b290000370300200241f00b6a41106a200d290000370300200241f00b6a41086a2001290000370300200220062900003703f00b200241c80b6a200241f00b6a200410cf01200241a80c6a41086a4200370300200241a80c6a41106a4200370300200241a80c6a41186a4200370300200241a80c6a41206a420037030020364200370300200541186a200a290300370000200541106a200c290300370000200541086a200e290300370000200520022903800f370000200242003703a80c2008200241a80c6a41d00010dc04220841d0006a41003a0000200841d8006a2108200641206a2106200441016a2104200341606a22030d000b203841057641016a210d0b203b4101203c1b21060240201f450d00201810230b0240200d2006490d0002400240203a2037412c6c2206412c6d2205490d00203a21450c010b203a41017422042005200420054b1b2245ad42e0007e2209422088a70d1e2009a722054100480d1e02400240203a0d002005102121420c010b204220392005102521420b2042450d05204221430b204020066a2146024020370d004100213d2040213c0c130b200241c80d6a41106a2101204021062042213b4100213d0340200241800f6a41186a2205200641186a290200370300200241800f6a41106a2204200641106a290200370300200241800f6a41086a2203200641086a290200370300200220062902003703800f2006412c6a213c20062802202238450d13200641286a280200210e200641246a2802002147200241f00b6a41186a22482005290300370300200241f00b6a41106a22492004290300370300200241f00b6a41086a224a2003290300370300200220022903800f3703f00b200241f8036a200241f00b6a10b604200ead42c8007e2209422088a70d152009a72206417f4c0d15200241f8036a41086a290300211a20022903f80321200240024020060d004108211f0c010b20061021221f450d070b02400240200e0d004100210e410021180c010b2038200e4105746a213a410021182038210a0340200a41086a2900002109200a41106a2900002107200a2900002113200241a80c6a41186a2236200a41186a290000370300200241a80c6a41106a22372007370300200241a80c6a41086a22392009370300200220133703a80c200a41206a210a200241c80b6a210620022802cc0b210b024003402006280200220841086a210520082f0106220c4105742106410021040240024003402006450d01200241a80c6a2005412010de042203450d02200641606a2106200441016a2104200541206a21052003417f4a0d000b2004417f6a210c0b200b450d02200b417f6a210b2008200c4102746a4194036a21060c010b0b200d200820044102746a41e8026a220528020022064d0d0a201b200641d8006c6a22062903202109200641286a2903002107200241c80d6a41186a2208420037030020014200370300200241c80d6a41086a22044200370300200242003703c80d200241980d6a41086a220641d5fbc400ad42808080808001841003220341086a290000370300200220032900003703980d2003102320042006290300370300200220022903980d3703c80d200641d6a0c200ad4280808080d001841003220341086a290000370300200220032900003703980d20031023200241e80d6a41086a20062903002213370300200220022903980d22193703e80d20012019370000200141086a2013370000200241a80d6a41086a2004290300370300200241a80d6a41106a2001290300370300200241a80d6a41186a2008290300370300200220022903c80d3703a80d200241e0036a200241a80d6a4120108902200241d0036a20022903e803200241e0036a41106a290300427f420010e204200d200528020022064d0d0b200241c0036a2020201a20022903d003420020022802e00322041b221342012013420156200241d0036a41086a290300420020041b22134200522013501b22041b2013420020041b10e204201b200641d8006c6a220641286a427f2007200920022903c0037c22132009542204ad7c221920042019200754201320095a1b22041b3703002006427f201320041b370320200241f80d6a41186a22042036290300370300200241f80d6a41106a22032037290300370300200241f80d6a41086a22082039290300370300200220022903a80c3703f80d20052802002105024002402018200e460d00201821060c010b200e41016a2206200e490d22200e410174220b2006200b20064b1b220bad42c8007e2209422088a70d222009a722064100480d2202400240200e0d0020061021211f0c010b201f200e41c8006c20061025211f0b201f450d0d200e2106200b210e0b201f200641c8006c6a2206420037030020062005360220200641186a4200370300200641106a4200370300200641086a4200370300200620022903f80d3702242006412c6a2008290300370200200641346a20032903003702002006413c6a2004290300370200201841016a21180b200a203a470d000b0b02402047450d00203810230b200241e00e6a41186a22032048290300370300200241e00e6a41106a22082049290300370300200241e00e6a41086a220a204a290300370300200220022903f00b3703e00e200241c80d6a41186a220b420037030020014200370300200241c80d6a41086a22054200370300200242003703c80d200241980d6a41086a220641d5fbc400ad42808080808001841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d3703c80d200641d6a0c200ad4280808080d001841003220441086a290000370300200220042900003703980d20041023200241e80d6a41086a20062903002209370300200220022903980d22073703e80d20012007370000200141086a2009370000200241a80d6a41086a2005290300370300200241a80d6a41106a2001290300370300200241a80d6a41186a200b290300370300200220022903c80d3703a80d200241a8036a200241a80d6a412010890220024198036a20022903b003200241a8036a41106a290300427f420010e20420024188036a2020201a200229039803420020022802a80322061b22094201200942015620024198036a41086a290300420020061b22094200522009501b22061b2009420020061b10e204203b4200370308203b200229038803370300203b4200370310203b41186a4200370300203b41286a4200370300203b4201370320203b2018360238203b200e360234203b201f360230203b20022903e00e37023c203b41c4006a200a290300370200203b41cc006a2008290300370200203b41d4006a2003290300370200203d41016a213d203b41e0006a213b203c2106203c2046470d000c140b0b02402044450d00201b10230b0240203a450d00204210230b20022802c80b20022802cc0b20022802d00b10d00102402037450d002037412c6c2105204041206a210603400240200641046a280200450d00200628020010230b2006412c6a2106200541546a22050d000b0b2041450d19204010230c190b200141041030000b203941081030000b200441081030000b200541081030000b200641081030000b41a0abc2002006200d102d000b41c8a1c3002006200d102d000b200641081030000b200641011030000b203d41041030000b412041011030000b412041011030000b201b41041030000b412041011030000b200341011030000b200a41011030000b41c00041011030000b203c2046460d000340203c41206a2802002205450d01203c412c6a21060240203c41246a280200450d00200510230b2006213c20462006470d000b0b203e4100203f1b213b02402041450d00204010230b203bad42307e2209422088a70d002009a72206417f4c0d00024002400240024020060d00410821360c010b200610212236450d010b203b412c6c2206417f4c0d0202400240024020060d00410421460c010b200610212246450d010b4100213c0240200d203b200d203b491b223e0d00203b2140410021480c030b201b41a87f6a2147200d41d8006c21382043203d41e0006c6a211f200241800f6a41186a2149200241800f6a41106a214a200241800f6a41086a2141203b2139410021484100213a03400240200d450d0020382105201b210603400240200641d0006a2d00000d0002400240200641206a2903002207200641286a29030022138450450d0042002109427f2107427f21130c010b427f2109200241f8026a427f427f2007201310e204200241f8026a41086a290300211320022903f80221070b2006200737030020062013370308200641106a2009370300200641186a20093703000b200641d8006a2106200541a87f6a22050d000b0b204321030240203d450d0002400340024020032802382206450d00200641c8006c2104200328023041206a21060340200d200628020022054d0d030240201b200541d8006c6a22052d00500d0020052903202209200541286a290300220784500d00200241a80c6a2003290310200341186a2903002003290300200341086a2903002009200710c302200520052903002209427f2009427f20022903b00c20022802a80c41014622081b22137c22072007200954220a200541086a220b2903002209427f200241a80c6a41106a29030020081b22197c200aad7c220720095420072009511b22081b201320198450220a1b370300200b2009427f200720081b200a1b3703000b200641c8006a2106200441b87f6a22040d000b0b200341e0006a2203201f460d020c000b0b41e4ecc0002005200d102d000b203a41016a213a20382106204721040340024020060d00203921400c050b200641a87f6a2106200441a8016a2103200441d8006a2205210420032d00000d000b02402006450d00200541d8006a2104200541086a2903002109200541186a2903002107200541106a2903002113200529030021194100210303400240200441d0006a2d00000d00200441086a290300221a2009201920092013200720042903002220201a200441106a2903002223200441186a290300222210c40241ff017141014622081b21092020201920081b21192022200720081b21072023201320081b21132004200520081b21050b200441d8006a21042006200341d8006a2203470d000b20050d00203921400c040b200541013a00500240203d450d002005410c6a2101200541306a2118204321040340200441e0006a2137024020042802382203450d0020042802302106200341c8006c210303400240024020012006460d00200641246a2018412010de040d010b200441186a22082903002119200541086a220a290300210920042903102113200529030021072005290310211a200641186a200541186a220b290300370300200641106a201a370300200620094200200920197d2007201354ad7d221a200720137d2220200756201a200956201a2009511b220c1b201320198450220e1b3703082006200742002020200c1b200e1b370300200a2903002109200b29030021072005290300211320042005290310370320200441286a200737030020042013370310200820093703000b200641c8006a2106200341b87f6a22030d000b0b203721042037201f470d000b0b2049200541c8006a290000370300204a200541c0006a2900003703002041200541386a290000370300200220052900303703800f200541286a29030021092005290320210702400240024020482039460d00203921400c010b203941016a22062039490d0f203941017422052006200520064b1b2240ad42307e2213422088a70d0f2013a722064100480d0f0240024020390d002006102121360c010b2036203941306c2006102521360b2036450d0120392148204021390b20412903002113204a29030021192049290300211a20022903800f21202036204841306c6a2206200737032020062020370300200641286a2009370300200641186a201a370300200641106a2019370300200641086a2013370300204841016a2148203a203e4f0d040c010b0b200641081030000b200641041030000b200641081030000b0240203d450d002043203d41e0006c6a2147204841306c2137200241f00b6a41186a2139200241f00b6a41106a213a200241f00b6a41086a21384100213c2043210103402039200141d4006a290000370300203a200141cc006a2900003703002038200141c4006a2900003703002002200129003c3703f00b024020012802382206450d002001280230220c200641c8006c6a2118200141106a211f4100210d4104210e4100210b02400240024002400340200c220a41246a2104200a41c8006a210c410021032037210520362106024003402005450d01024020042006460d0020062004412010de042108200341016a2103200541506a2105200641306a210620080d010b0b418094ebdc0321060240201f200a10c5020d00410021050240200a290310200129032085200a41186a290300200141286a29030085844200520d00200241a80c6a428094ebdc034200200a290300200a41086a290300201f290300201f41086a29030010c30220022802a80c4101460d0120022903b00c220742ff93ebdc0356200241a80c6a41106a29030022094200522009501b0d012007a721050b200521060b200220063602a80c2002418094ebdc033602ac0c200241a80c6a2006418094ebdc034b4102746a2802002105200241980e6a41186a2204200a413c6a290000370300200241980e6a41106a2203200a41346a290000370300200241980e6a41086a2208200a412c6a2900003703002002200a2900243703980e02400240200b200d460d00200b21060c010b200d41016a2206200d490d13200d410174220a2006200a20064b1b220aad42247e2209422088a70d132009a722064100480d1302400240200d0d0020061021210e0c010b200e200d41246c20061025210e0b200e450d03200d2106200a210d0b200e200641246c6a220620022903980e37020020082903002109200329030021072004290300211320062005360220200641186a2013370200200641106a2007370200200641086a2009370200200b41016a210b0b200c2018470d000b0240200b450d0002400240200b41246c22040d00410021050c010b200e41206a2106410021050340200628020020056a2105200641246a21062004415c6a22040d000b0b02404100418094ebdc0320056b22062006418094ebdc034b1b220a200b6e2206418094ebdc032006418094ebdc03491b2208450d00200e41206a2106410021050340200b2005460d042002417f2006280200220420086a220320032004491b22043602a80c2002418094ebdc033602ac0c2006200241a80c6a2004418094ebdc034b4102746a280200360200200641246a2106200b200541016a2205470d000b0b0240200a2008200b6c6b2208450d00410021060340200b2006200b7022054d0d062002417f200e200541246c6a2205280220220441016a220320032004491b22043602a80c2002418094ebdc033602ac0c2005200241a80c6a2004418094ebdc034b4102746a280200360220200641016a22062008490d000b0b200241a80c6a41186a22052039290300370300200241a80c6a41106a2204203a290300370300200241a80c6a41086a22032038290300370300200220022903f00b3703a80c0240203c203b470d00203b41016a2206203b490d12203b41017422082006200820064b1b2206ad422c7e2209422088a70d122009a722084100480d1202400240203b0d002008102121460c010b2046203b412c6c2008102521460b2046450d04203b213c2006213b0b2046203c412c6c6a220620022903a80c3702002003290300210920042903002107200529030021132006200b3602282006200d3602242006200e360220200641186a2013370200200641106a2007370200200641086a2009370200203c41016a213c0c050b200d450d04200e10230c040b200641041030000b41ece2c0002005200b102d000b200841041030000b41ece2c0002005200b102d000b200141e0006a22012047470d000b0b02402044450d00201b10230b0240203d450d00203d41e0006c2105204341306a210603400240200641046a280200450d00200628020010230b200641e0006a2106200541a07f6a22050d000b0b02402045450d00204210230b20022802c80b20022802cc0b20022802d00b10d0012036450d06204841306c220641306e21050240024020060d00420021264101213e0c010b200541057422044100480d0a20041021223e450d052005ad21260b024002402036203620066a470d00410021490c010b204841306c210441002149203e210620362105034020062005290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000204941016a2149200641206a2106200541306a2105200441506a22040d000b0b200242003702840f200241d8a7c3003602800f02402049450d0020494105742105203e21060340200241c80b6a41186a200641186a290000370300200241c80b6a41106a200641106a290000370300200241c80b6a41086a200641086a290000370300200220062900003703c80b200241a80c6a41186a4200370300200241a80c6a41106a4200370300200241a80c6a41086a4200370300200242003703a80c200241003602d00c200242083703c80c200241f00b6a200241800f6a200241c80b6a200241a80c6a10ce01024020022802900c2204450d0020022802940c450d00200410230b200641206a2106200541606a22050d000b0b0240203c412c6c2206450d00204620066a211f200241c80d6a41106a210e41d5fbc400ad4280808080800184211a2046210d03400240200d28022841246c2206450d00200d280220221b20066a21010340200241e8026a200d10b604200241e8026a41086a290300210720022903e8022113200241c80d6a41186a22034200370300200e4200370300200241c80d6a41086a22054200370300200242003703c80d200241980d6a41086a2206201a1003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d3703c80d200641d6a0c200ad4280808080d001841003220441086a290000370300200220042900003703980d20041023200241e80d6a41086a20062903002209370300200220022903980d22193703e80d200e2019370000200e41086a2009370000200241a80d6a41086a2005290300370300200241a80d6a41106a200e290300370300200241a80d6a41186a2003290300370300200220022903c80d3703a80d200241d0026a200241a80d6a4120108902200241c0026a20022903d802200241d0026a41106a290300427f420010e204200241b0026a2013200720022903c002420020022802d00222061b220942012009420156200241c0026a41086a290300420020061b22094200522009501b22061b2009420020061b10e204200241a0026a20022903b0022209428094ebdc038022074200201b22083502202213420010e104200241a0026a41086a29030020022903a00222192013200920074280ec94a37c7e7c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c2209201954ad7c2107200841246a211b200241800f6a210620022802840f210b0240024003402006280200220a41086a2105200a2f0106220c4105742106410021040240024003402006450d0120082005412010de042203450d02200641606a2106200441016a2104200541206a21052003417f4a0d000b2004417f6a210c0b200b450d02200b417f6a210b200a200c4102746a41f8066a21060c010b0b200a41e8026a200441306c6a210602402008200d460d002008200d412010de04450d002006427f2006290310221320097c221920192013542205200641186a2204290300221320077c2005ad7c221920135420192013511b22051b3703102004427f201920051b370300200241f80d6a41186a2208200d41186a290000370300200241f80d6a41106a220a200d41106a290000370300200241f80d6a41086a220b200d41086a2900003703002002200d2900003703f80d200641286a2104200641206a2103024020062802282205200641246a280200470d00200541016a22062005490d112005410174220c2006200c20064b1b220cad42307e2213422088a70d112013a722184100480d110240024020050d002018102121060c010b2003280200200541306c2018102521060b2006450d0320032006360200200341046a200c360200200428020021050b200b2903002113200a29030021192008290300212020022903f80d21232003280200200541306c6a2206200937032020062023370300200641286a2007370300200641186a2020370300200641106a2019370300200641086a20133703002004200428020041016a3602000c010b2006427f2006290300221320097c221920192013542205200641086a2204290300221320077c2005ad7c221920135420192013511b22051b3703002004427f201920051b3703002006427f2006290310221320097c220920092013542205200641186a2204290300220920077c2005ad7c220720095420072009511b22051b3703102004427f200720051b3703000b201b2001460d020c010b0b201841081030000b200d412c6a220d201f470d000b0b20022802880f210e20022802840f210820022802800f2105200241a80c6a41186a220a4200370300200241a80c6a41106a220b4200370300200241a80c6a41086a22044200370300200242003703a80c200241980d6a41086a220641c6acc500ad4280808080f000841003220341086a290000370300200220032900003703980d2003102320042006290300370300200220022903980d3703a80c20064185b2c500ad4280808080e001841003220341086a290000370300200220032900003703980d20031023200241980e6a41086a20062903002209370300200220022903980d22073703980e200f2007370000200f41086a2009370000200241c80b6a41086a2004290300370300200241c80b6a41106a200b290300370300200241c80b6a41186a200a290300370300200220022903a80c3703c80b200241a80c6a200241c80b6a412010bb0120022902ac0c420020022802a80c22061b210702402006410120061b220d450d002007422088a72206450d002006410574210a41c6acc500ad4280808080f000842109200241d80b6a210c200d21040340200241980d6a41086a220620091003220341086a290000370300200220032900003703980d20031023200241f80d6a41086a220b2006290300370300200220022903980d3703f80d200641fdacc500ad4280808080f000841003220341086a290000370300200220032900003703980d20031023200241980e6a41086a22032006290300370300200220022903980d3703980e200241c80b6a200410ac0141c00010212206450d03200441206a2104200620022903f80d370000200641086a200b290300370000200620022903980e370010200641186a2003290300370000200620022903c80b370020200641286a200241c80b6a41086a290300370000200641306a200c290300370000200641386a200241c80b6a41186a2903003700002006ad4280808080800884100520061023200a41606a220a0d000b0b02402007a7450d00200d10230b0240024020080d00200521060c010b2008210420052106034020062802f80621062004417f6a22040d000b0340200520052f01064102746a41f8066a28020021052008417f6a22080d000b0b2002418c0c6a20052f0106360200200241f00b6a41186a4100360200200241840c6a20053602002002200e3602900c200241003602800c200242003703f80b200220063602f40b200241003602f00b200241a80c6a200241f00b6a10b6010240200241a80c6a41c0006a28020022370d00427f2125427f21220c060b200241c80d6a41106a2103200241a80c6a41106a2118200241a80c6a41386a2142200241a80c6a41286a2143427f2125427f21220340200241e00e6a41086a200241a80c6a41086a22062903002209370300200241e00e6a41106a20182903002207370300200241e00e6a41186a200241a80c6a41186a221f2903002213370300200220022903a80c22193703e00e204229030021232043290300212420022802ec0c214a20022802f00c210a20022903d80c212b20022903c80c212f200241800f6a41186a2013370300200241800f6a41106a2007370300200241800f6a41086a2009370300200220193703800f201f42003703002018420037030020064200370300200242003703a80c200241980d6a41086a220441d5fbc400ad4280808080800184221a1003220541086a290000370300200220052900003703980d2005102320062004290300370300200220022903980d3703a80c200441d6a0c200ad4280808080d0018422201003220541086a290000370300200220052900003703980d20051023200241980e6a41086a223a20042903002209370300200220022903980d22073703980e200f2007370000200f41086a220b2009370000200241c80b6a41086a22382006290300370300200241c80b6a41106a223d2018290300370300200241c80b6a41186a2247201f290300370300200220022903a80c3703c80b20024188026a200241c80b6a4120108902200241e0016a20022903900220024188026a41106a290300427f420010e2042002280288022105201f42003703002018420037030020064200370300200242003703a80c2004201a1003220841086a290000370300200220082900003703980d2008102320062004290300370300200220022903980d3703a80c200420201003220841086a290000370300200220082900003703980d20081023203a20042903002209370300200220022903980d22073703980e200f2007370000200b200937000020382006290300370300203d20182903003703002047201f290300370300200220022903a80c3703c80b200241f0016a200241c80b6a4120108902200241d0016a20022903f801200241f0016a41106a290300427f420010e204200241b0016a20022903e001420020051b220942012009420156200241e0016a41086a290300420020051b22094200522009501b22061b2009420020061b202f202410e104200241c0016a20022903d001420020022802f00122061b220942012009420156200241d0016a41086a290300420020061b22094200522009501b22061b2009420020061b202b202310e104200a41306c220c41306d2106200241b0016a41086a290300212b200241c0016a41086a29030021234100210b20022903b001212f20022903c001212441002148410821390240200c450d002006ad42307e2209422088a70d0b2009a722054100480d0b200510212239450d04200621480b02402037200c6a2037460d004100210b20392106203721050340200541286a2903002107200541206a2903002113200241f80d6a41186a220d200541186a290300370300200241f80d6a41106a220e200541106a290300370300200241f80d6a41086a221b200541086a290300370300200220052903003703f80d200241c80d6a41186a2201420037030020034200370300200241c80d6a41086a22084200370300200242003703c80d2004201a1003220a41086a2900003703002002200a2900003703980d200a102320082004290300370300200220022903980d3703c80d200420201003220a41086a2900003703002002200a2900003703980d200a1023200241e80d6a41086a20042903002209370300200220022903980d22193703e80d20032019370000200341086a2009370000200241a80d6a41086a2008290300370300200241a80d6a41106a2003290300370300200241a80d6a41186a2001290300370300200220022903c80d3703a80d20024198016a200241a80d6a412010890220024188016a20022903a00120024198016a41106a290300427f420010e204200241f8006a200229038801420020022802980122081b22094201200942015620024188016a41086a290300420020081b22094200522009501b22081b2009420020081b2013200710e1042006200241f8006a41086a29030037030820062002290378370300200641106a20022903f80d370300200641186a201b290300370300200641206a200e290300370300200641286a200d290300370300200641306a2106200b41016a210b200541306a2105200c41506a220c0d000b0b0240204a450d00203710230b200bad42307e2209422088a70d012009a72206417f4c0d010240024020060d004108210c0c010b20061021220c450d050b02400240200b0d00410021080c010b2039200b41306c6a210a41002108200c2106203921050340200620052903003703002006200541086a290300370308200641106a200541106a290300370300200641186a200541186a290300370300200641206a200541206a290300370300200641286a200541286a290300370300200641306a2106200841016a2108200541306a2205200a470d000b0b201f202b3703002002202f3703b80c200220243703a80c200220083602d00c2002200b3602cc0c2002200c3602c80c200220233703b00c200441c6acc500ad4280808080f000841003220641086a290000370300200220062900003703980d20061023200241f80d6a41086a22052004290300370300200220022903980d3703f80d200441fdacc500ad4280808080f000841003220641086a290000370300200220062900003703980d20061023203a2004290300370300200220022903980d3703980e200241c80b6a200241800f6a10ac01024041c00010212204450d00200420022903f80d370000200441086a2005290300370000200420022903980e370010200441186a203a290300370000200420022903c80b370020200441286a2038290300370000200441306a203d290300370000200441386a2047290300370000200241003602d00b200242013703c80b2002200241a80c6a3602980e200241980e6a200241c80b6a10c301200220183602980e200241980e6a200241c80b6a10c30120022802c80c210620022802d00c2205200241c80b6a105c02402005450d00200541306c21050340200641106a200241c80b6a1071200220063602980e200641306a2106200241980e6a200241c80b6a10c301200541506a22050d000b0b20022802cc0b21062004ad428080808080088420023502d00b42208620022802c80b2205ad84100202402006450d00200510230b20242025542106202320225121052023202254210820041023024020022802cc0c450d0020022802c80c10230b2006200820051b210602402048450d00203910230b2023202220061b21222024202520061b2125200241a80c6a200241f00b6a10b60120022802e80c2237450d070c010b0b41c00041011030000b102f000b41c00041011030000b200541081030000b200641081030000b200441011030000b200241f00b6a10d401200241c80b6a41186a22044200370300200241c80b6a41106a22034200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f0008422091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22073703f80d200220073703c80b20064193b2c500ad42808080809001841003220841086a290000370300200220082900003703980d20081023200241980e6a41086a220a20062903002207370300200220022903980d22133703980e20142013370000201441086a220b2007370000200241a80c6a41086a220c2005290300370300200241a80c6a41106a220d2003290300370300200241a80c6a41186a220e2004290300370300200220022903c80b3703a80c200220223703f80b200220253703f00b201d201e42808080808002841002200442003703002003420037030020054200370300200242003703c80b200620091003220841086a290000370300200220082900003703980d2008102320052006290300370300200220022903980d22093703f80d200220093703c80b20064185b2c500ad4280808080e001841003220841086a290000370300200220082900003703980d20081023200a20062903002209370300200220022903980d22073703980e20142007370000200b2009370000200c2005290300370300200d2003290300370300200e2004290300370300200220022903c80b3703a80c200241003602f80b200242013703f00b2049200241f00b6a105c02402049450d0020494105742105203e210603402006200241f00b6a1071200641206a2106200541606a22050d000b0b20022802f40b2106201d20023502f80b42208620022802f00b2205ad84100202402006450d00200510230b2049ad21090240203c450d00203c412c6c2105204641206a210603400240200641046a280200450d00200628020010230b2006412c6a2106200541546a22050d000b0b200942208621090240203b450d00204610230b202620098421292040450d01203610230c010b200241c80b6a41186a22034200370300200241c80b6a41106a22084200370300200241c80b6a41086a22054200370300200242003703c80b200241980d6a41086a220641c6acc500ad4280808080f000841003220441086a290000370300200220042900003703980d2004102320052006290300370300200220022903980d22093703f80d200220093703c80b20064193b2c500ad42808080809001841003220441086a290000370300200220042900003703980d20041023200241980e6a41086a20062903002209370300200220022903980d22073703980e20142007370000201441086a2009370000200241a80c6a41086a2005290300370300200241a80c6a41106a2008290300370300200241a80c6a41186a2003290300370300200220022903c80b3703a80c200241e0006a200241a80c6a41201089024100213e0b200241c80b6a41186a22404200370300200241c80b6a41106a22444200370300200241c80b6a41086a22434200370300200242003703c80b200241980d6a41086a224241c6acc500ad4280808080f00084222e1003220641086a290000370300200220062900003703980d2006102320432042290300370300200220022903980d22093703f80d200220093703c80b204241f8ffc500ad4280808080e0028422281003220641086a290000370300200220062900003703980d20061023200241980e6a41086a223f20422903002209370300200220022903980d22073703980e20142007370000201441086a22452009370000200241a80c6a41086a224b2043290300370300200241a80c6a41106a224c2044290300370300200241a80c6a41186a224d2040290300370300200220022903c80b3703a80c200241d8006a200241a80c6a4120108f01200228025c214102402002280258224e4101470d00024020414100203541796a2206200620354b1b22464f0d00200241a00b6aad4280808080800284212b200241a80d6aad4280808080800484212f201c4280808080c00084212d200241c80d6a41106a2106200241c80b6a41086a211b200241a80c6a41386a2149200241a80c6a41246a213a2041214a0340200241980d6a41086a220141c6acc500ad4280808080f000841003220541086a290000370300200220052900003703980d20051023200241f80d6a41086a22082001290300370300200220022903980d3703f80d2001419cb2c500ad42808080808002841003220541086a290000370300200220052900003703980d20051023200241980e6a41086a22482001290300370300200220022903980d3703980e2002204a3602a80c200241c80d6a41186a2203202d1001220541186a2900003703002006200541106a290000370300200241c80d6a41086a2204200541086a290000370300200220052900003703c80d20051023200241c80b6a41186a223b2003290300370300200241c80b6a41106a220a2006290300370300201b2004290300370300200220022903c80d3703c80b0240024041c00010212205450d00200520022903f80d370000200541086a2008290300370000200520022903980e370010200541186a2048290300370000200520022903c80b370020200541286a201b290300370000200541306a200a290300370000200541386a203b290300370000200241a80c6a200541c00010a8030240024020022802a80c2235450d002005ad4280808080800884100520022902ac0c212c0c010b4200212c410821350b200510232035202c422088a7220541d8006c6a213c2035210e2005450d010340203b200e41186a290300370300200a200e41106a290300370300201b200e41086a290300370300200e280220210c200e2903002109200241a80c6a41206a220d200e41c4006a290200370300200241a80c6a41286a2218200e41cc006a290200370300200241a80c6a41306a221f200e41d4006a280200360200200241a80c6a41086a2205200e412c6a290200370300200241a80c6a41106a2208200e41346a290200370300200241a80c6a41186a220b200e413c6a290200370300200220093703c80b2002200e41246a2902003703a80c200e41d8006a210e200c450d02200241b80e6a41186a2236203b290300370300200241b80e6a41106a2237200a290300370300200241b80e6a41086a2239201b290300370300200241f00b6a41086a220f2005290300370300200241f00b6a41106a22382008290300370300200241f00b6a41186a223d200b290300370300200241f00b6a41206a2247200d290300370300200241f00b6a41286a220d2018290300370300200241f00b6a41306a2218201f280200360200200220022903c80b3703b80e200220022903a80c3703f00b200b20362903003703002008203729030037030020052039290300370300203a20022903f00b370200203a41086a200f290300370200203a41106a2038290300370200203a41186a203d290300370200203a41206a2047290300370200203a41286a200d290300370200203a41306a2018280200360200200220022903b80e3703a80c2002200c3602c80c200242003703a00e200242003703980e2002200b2903003703e80e200220082903003703e00e204920022903a80c2005290300200241e00e6a200241980e6a10b704024020022802d00c2208450d0020022802c80c2105200841306c210803402005200541206a290300200541286a290300200241e00e6a200241980e6a10b704200541306a2105200841506a22080d000b0b2048290300213120022903980e21340240024020022903e00e2207200241e00e6a41086a290300220984500d0020022802dc0c2205450d0020022802d40c2108200241c8006a203420072034200754203120095420312009511b220b1b223220312009200b1b22302005ad420010e2042005410574210b200241c8006a41086a290300212320022903482122203221192030211a0340200241386a2008202220192019202256201a202356201a2023511b22051b22092023201a20051b2207109702200a2007200241386a41086a29030022207d20092002290338221354ad7d202020077d2013200954ad7d20132009582020200758202020075122051b220c1b3703002002200920137d201320097d200c1b3703d00b20022013200956202020075620051b2205ad3703c80b201a20077d21072019200954ad21130240024020050d002002201b3602f80d200342003703002006420037030020044200370300200242003703c80d200241a00b6a41086a220541d5fbc400ad428080808080018422201003220c41086a2900003703002002200c2900003703a00b200c102320042005290300370300200220022903a00b221a3703800f2002201a3703c80d200541d6a0c200ad4280808080d0018422241003220c41086a2900003703002002200c2900003703a00b200c1023200241800f6a41086a220d2005290300221a370300200220022903a00b22253703800f20062025370000200641086a2218201a370000200241a80d6a41086a221f2004290300370300200241a80d6a41106a22362006290300370300200241a80d6a41186a22372003290300370300200220022903c80d3703a80d200241086a200241a80d6a4120108902200241086a41106a29030021252002290310212620022802082105200a290300213320022903d00b211a200342003703002006420037030020044200370300200242003703c80d200241e80d6a41086a223920201003220c41086a2900003703002002200c2900003703e80d200c102320042039290300370300200220022903e80d22203703800f200220203703c80d200120241003220c41086a2900003703002002200c2900003703980d200c1023200d20012903002220370300200220022903980d22243703800f2006202437000020182020370000201f20042903003703002036200629030037030020372003290300370300200220022903c80d3703a80d200242002025420020051b222020337d2026420020051b2224201a54ad7d22252024201a7d221a202456202520205620252020511b22051b3703a80b20024200201a20051b3703a00b0c010b2002201b3602f80d200342003703002006420037030020044200370300200242003703c80d200241a00b6a41086a220541d5fbc400ad4280808080800184221a1003220c41086a2900003703002002200c2900003703a00b200c102320042005290300370300200220022903a00b22203703800f200220203703c80d200541d6a0c200ad4280808080d0018422201003220c41086a2900003703002002200c2900003703a00b200c1023200241800f6a41086a221820052903002224370300200220022903a00b22253703800f20062025370000200641086a221f2024370000200241a80d6a41086a22362004290300370300200241a80d6a41106a22372006290300370300200241a80d6a41186a22392003290300370300200220022903c80d3703a80d200241206a200241a80d6a4120108902200241206a41106a2903002124200229032821252002280220210c200a290300212620022903d00b2133200342003703002006420037030020044200370300200242003703c80d2005201a1003220d41086a2900003703002002200d2900003703a00b200d102320042005290300370300200220022903a00b221a3703800f2002201a3703c80d200520201003220d41086a2900003703002002200d2900003703a00b200d102320182005290300221a370300200220022903a00b22203703800f20062020370000201f201a370000203620042903003703002037200629030037030020392003290300370300200220022903c80d3703a80d2002427f202620244200200c1b221a7c203320254200200c1b22207c22242020542205ad7c222020052020201a542020201a511b22051b3703a80b2002427f202420051b3703a00b0b202f202b1002200720137d211a201920097d2119200841206a2108200b41606a220b0d000b427f203420327d220920197c220720072009542205203120307d2034203254ad7d2209201a7c2005ad7c220720095420072009511b22051b427f200720051b10c9020c010b2034203110c9020b024020022802cc0c450d0020022802c80c10230b024020022802d80c450d0020022802d40c10230b200e203c470d000b203c210e0c010b41c00041011030000b202ca721080240200e203c460d000340200e41206a2802002204450d01200e41306a2802002105200e412c6a28020021030240200e41246a280200450d00200410230b200e41d8006a210e02402005450d00200310230b203c200e470d000b0b204a41016a214a02402008450d00203510230b204a2046470d000b0b20412046204120464b1b21410b204042003703002044420037030020434200370300200242003703c80b2042202e1003220641086a290000370300200220062900003703980d2006102320432042290300370300200220022903980d22093703f80d200220093703c80b204220281003220641086a290000370300200220062900003703980d20061023203f20422903002209370300200220022903980d22073703980e2014200737000020452009370000204b2043290300370300204c2044290300370300204d2040290300370300200220022903c80b3703a80c02400240204e0d00201d10050c010b200220413602f00b201d201e4280808080c0008410020b024020152017a745720d00201610230b0240203e0d002000410036020002402011450d00201141d0006c2105201041c0006a210603400240200641046a280200450d00200628020010230b200641d0006a2106200541b07f6a22050d000b0b2012450d03201010230c030b200020293702042000203e360200200041146a2011360200200041106a20123602002000410c6a20103602000c020b41f0bbc00020052003102d000b102a000b200241a00f6a24000bd50501087f230041c0006b22022400200241086a220341f7fbc400ad4280808080f000841003220441086a2900003703002002200429000037030020041023200241206a41086a2003290300370300200220022903003703202003418eadc200ad42808080808001841003220441086a2900003703002002200429000037030020041023200241306a41086a20032903003703002002200229030037033020024181adc200410d10d7020240024002400240024002400240024002402002280208220541206a2206417f4c0d0020022802002107024002402006450d00200610212203450d032006410f4d0d01200621040c060b200641017422034110200341104b1b2204102121030c040b200641017422044110200441104b1b220441004e0d020c050b102f000b200641011030000b200320062004102521030b20030d00200441011030000b20032002290320370000200341086a200241206a41086a290300370000024020044170714110470d00200441017422084120200841204b1b22084100480d0120032004200810252203450d02200821040b20032002290330370010200341186a200241306a41086a2903003700000240200441606a20054f0d00200541206a22082005490d01200441017422092008200920084b1b22084100480d0120032004200810252203450d03200821040b200341206a2007200510dc041a02402002280204450d00200710230b2002200110ac010240200420066b411f4b0d00200641206a22072006490d01200441017422012007200120074b1b22074100480d0120032004200710252203450d04200721040b200320066a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700002000200541c0006a3602082000200436020420002003360200200241c0006a24000f0b102a000b200841011030000b200841011030000b200741011030000bd60201027f23004180036b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003a00000c010b200328021421042003200341186a2802003602ec02200320013602e802200341c0016a200341e8026a10ce02410121020240024020032d00c0014101460d00200341206a200341c0016a41017241a00110dc041a200041016a200341206a41a00110dc041a0c010b4100210220034100360228200342013703202003410c3602f4022003200341086a3602f0022003200341206a3602fc02200341d4016a4101360200200342013702c40120034198c2c3003602c0012003200341f0026a3602d001200341fc026a41b8a3c500200341c0016a102e1a200335022842208620033502208410082003280224450d00200328022010230b200020023a00002004450d00200110230b20034180036a24000be62f0b067f017e017f027e027f017e037f017e207f027e1a7f230041e0016b22022400200241206a200041f4f5c100108501200241306a20014180f8c100108501200228022821032002280224210420022802202105200241c0006a41086a200241306a41086a28020036020020022002290330370340200241d0006a41186a22064200370300200241d0006a41106a22074200370300200241d0006a41086a2200420037030020024200370350200241d0016a41086a220141cafbc400ad4280808080c0008422081003220941086a290000370300200220092900003703d0012009102320002001290300370300200220022903d001220a3703a0012002200a370350200141e4cfc300ad4280808080a00184220b1003220941086a290000370300200220092900003703d00120091023200720022903d001220a37030020024180016a41086a2209200029030037030020024180016a41106a220c200a37030020024180016a41186a220d20012903003703002002200a3703a0012002200229035037038001200241106a20024180016a109c0202400240024002400240024002400240024002400240024002400240024002400240024002402002290318420020022802101b220e42017c220a200e540d0020064200370300200742003703002000420037030020024200370350200120081003220f41086a2900003703002002200f2900003703d001200f102320002001290300370300200220022903d001220e3703a0012002200e3703502001200b1003220f41086a2900003703002002200f2900003703d001200f1023200241a0016a41086a22102001290300220b370300200220022903d001220e3703a0012007200e370000200741086a2211200b37000020092000290300370300200c2007290300370300200d200629030037030020022002290350370380012002200a37035020024180016aad4280808080800484220e200241d0006aad220b4280808080800184100220064200370300200742003703002000420037030020024200370350200120081003220f41086a2900003703002002200f2900003703d001200f102320002001290300370300200220022903d00122083703a00120022008370350200141fccfc300ad4280808080b001841003220f41086a2900003703002002200f2900003703d001200f1023201020012903002208370300200220022903d00122123703a001200720123700002011200837000020092000290300370300200c2007290300370300200d2006290300370300200220022903503703800120024100360258200242013703502003200241d0006a105c02402003450d002005200341286c6a21092005210003402000200241d0006a1071200041206a29030021080240024020022802542206200228025822016b4108490d00200228025021060c010b200141086a22032001490d15200641017422012003200120034b1b22014100480d150240024020060d002001102121060c010b200228025020062001102521060b2006450d042002200136025420022006360250200228025821010b2002200141086a360258200620016a20083700002009200041286a2200470d000b0b20022802542101200e200235025842208620022802502200ad84100202402001450d00200010230b02402004450d00200510230b200a42017c2212200a540d0220024180016a41186a2206420037030020024180016a41106a2211420037030020024180016a41086a220042003703002002420037038001200241d0016a41086a220141cafbc400ad4280808080c0008422081003220341086a290000370300200220032900003703d0012003102320002001290300370300200220022903d001220a3703a0012002200a37038001200141dcd1c300ad4280808080e001841003220341086a290000370300200220032900003703d00120031023201120022903d001220a370300200241b0016a41086a22032000290300370300200241b0016a41106a2209200a370300200241b0016a41186a220c20012903003703002002200a3703a00120022002290380013703b001200241d0006a200241b0016a109d03410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f410021304100213141002132024020022d00504101470d00200241d0006a41086a2d0000211a200241d9006a2d0000211b200241da006a2d0000211c200241db006a2d0000211d200241dc006a2d0000211e200241dd006a2d0000211f200241de006a2d00002120200241df006a2d00002121200241d0006a41106a2d00002122200241e1006a2d00002123200241e2006a2d00002124200241e3006a2d00002125200241e4006a2d00002126200241e5006a2d00002127200241e6006a2d00002128200241e7006a2d00002129200241d0006a41186a2d0000212a200241e9006a2d0000212b200241ea006a2d0000212c200241eb006a2d0000212d200241ec006a2d0000212e200241ed006a2d0000212f200241ee006a2d00002130200241ef006a2d00002131200241f0006a2d0000213220022d0051211320022d0052211420022d0053211520022d0054211620022d0055211720022d0056211820022d005721190b2006420037030020114200370300200042003703002002420037038001200120081003220d41086a2900003703002002200d2900003703d001200d102320002001290300370300200220022903d001220a3703a0012002200a3703800120014184d2c300ad4280808080c00184220a1003220d41086a2900003703002002200d2900003703d001200d1023200241a0016a41086a220f20012903002233370300200220022903d00122343703a00120112034370000201141086a220520333700002003200029030037030020092011290300370300200c200629030037030020022002290380013703b001200241086a200241b0016a4120108f01200228020c2104200228020821102006420037030020114200370300200042003703002002420037038001200120081003220d41086a2900003703002002200d2900003703d001200d102320002001290300370300200220022903d00122083703a00120022008370380012001200a1003220d41086a2900003703002002200d2900003703d001200d1023200f20012903002208370300200220022903d001220a3703a0012011200a370000200520083700002003200029030037030020092011290300370300200c200629030037030020022002290380013703b00120024100360250200241b0016aad42808080808004842233200b4280808080c000841002417f2004410020101b220541016a220120012005491b410d744128722235417f4c0d03203510212203450d0420032012370020200320323a001f200320313a001e200320303a001d2003202f3a001c2003202e3a001b2003202d3a001a2003202c3a00192003202b3a00182003202a3a0017200320293a0016200320283a0015200320273a0014200320263a0013200320253a0012200320243a0011200320233a0010200320223a000f200320213a000e200320203a000d2003201f3a000c2003201e3a000b2003201d3a000a2003201c3a00092003201b3a00082003201a3a0007200320193a0006200320183a0005200320173a0004200320163a0003200320153a0002200320143a0001200320133a00004128211041002100410021044100210f410021010340024002400240024002402001450d0020362006470d010b03402001210c200020054f0d02200241d0016a2000109e0220024180016a20022802d001220920022802d8012201109f0202402002280280012206450d002001ad4220862009ad8410050b20022902840121082006410120061b2101024020022802d401450d00200910230b2001450d022008420020061b2208422088a721060240200c450d00200d450d00200f10230b200041016a21002008a7210d2001210f200121042006450d000b200120064105746a2136200121042001210f200121060b200241b0016a41186a200641186a2209290000370300200241b0016a41106a200641106a220c290000370300200241b0016a41086a200641086a2237290000370300200220062900003703b00120372900002108200c290000210a2006290000210b200241d0006a41186a220c2009290000370300200241d0006a41106a2209200a370300200241d0006a41086a223720083703002002200b37035020024180016a41186a2238200c29030037030020024180016a41106a220c200929030037030020024180016a41086a223920372903003703002002200229035037038001203520106b411f4b0d02201041206a22092010490d16203541017422372009203720094b1b220941004e0d010c160b0240200c450d00200d450d00200410230b2010ad4220862003ad84100122012d001f210920012d001e210c20012d001d210d20012d001c210f20012d001b210520012d001a210420012d0019211020012d0018213720012d0017213820012d0016213920012d0015213620012d0014213a20012d0013213b20012d0012213c20012d0011213d20012d0010213e20012d000f213f20012d000e214020012d000d214120012d000c214220012d000b214320012d000a214420012d0009214520012d0008214620012d0007214720012d0006214820012d0005214920012d0004214a20012d0003214b20012d0002214c20012d0001214d20012d0000214e2001102302402035450d00200310230b20024180016a41186a2203420037030020024180016a41106a2235420037030020024180016a41086a220042003703002002420037038001200241d0016a41086a220141cafbc400ad4280808080c000841003220641086a290000370300200220062900003703d0012006102320002001290300370300200220022903d00122083703a0012002200837038001200141dcd1c300ad4280808080e001841003220641086a290000370300200220062900003703d00120061023200241a0016a41086a20012903002208370300200220022903d001220a3703a0012011200a370000201141086a2008370000200241b0016a41086a2000290300370300200241b0016a41106a2035290300370300200241b0016a41186a200329030037030020022002290380013703b001410110212201450d092001204e3a000020014101410210252201450d0a2001204d3a000120014102410410252201450d0b2001204b3a00032001204c3a000220014104410810252201450d0c200120473a0007200120483a0006200120493a00052001204a3a000420014108411010252201450d0d2001203f3a000f200120403a000e200120413a000d200120423a000c200120433a000b200120443a000a200120453a0009200120463a000820014110412010252201450d0e200120093a001f2001200c3a001e2001200d3a001d2001200f3a001c200120053a001b200120043a001a200120103a0019200120373a0018200120383a0017200120393a0016200120363a00152001203a3a00142001203b3a00132001203c3a00122001203d3a00112001203e3a001020332001ad4280808080800484100220011023200241d0006a41186a22034200370300200241d0006a41106a22094200370300200241d0006a41086a2200420037030020024200370350200241d0016a41086a220141cafbc400ad4280808080c000841003220641086a290000370300200220062900003703d0012006102320002001290300370300200220022903d00122083703a00120022008370350200141f8d0c300ad4280808080a001841003220641086a290000370300200220062900003703d00120061023200241a0016a41086a20012903002208370300200220022903d001220a3703a0012007200a370000200741086a200837000020024180016a41086a200029030037030020024180016a41106a200929030037030020024180016a41186a20032903003703002002200229035037038001410110212201450d0f200120133a000020014101410210252201450d10200120143a000120014102410410252201450d11200120163a0003200120153a000220014104410810252201450d122001201a3a0007200120193a0006200120183a0005200120173a000420014108411010252201450d13200120223a000f200120213a000e200120203a000d2001201f3a000c2001201e3a000b2001201d3a000a2001201c3a00092001201b3a000820014110412010252201450d14200120323a001f200120313a001e200120303a001d2001202f3a001c2001202e3a001b2001202d3a001a2001202c3a00192001202b3a00182001202a3a0017200120293a0016200120283a0015200120273a0014200120263a0013200120253a0012200120243a0011200120233a0010200e2001ad4280808080800484100220011023200241d0006a41186a22004200370300200241d0006a41106a22064200370300200241d0006a41086a2203420037030020024200370350200241d0016a41086a220141cafbc400ad4280808080c000841003220941086a290000370300200220092900003703d0012009102320032001290300370300200220022903d00122083703a00120022008370350200141dcd1c300ad4280808080e001841003220941086a290000370300200220092900003703d00120091023200241a0016a41086a20012903002208370300200220022903d001220a3703a0012007200a370000200741086a200837000020024180016a41086a200329030037030020024180016a41106a200629030037030020024180016a41186a20002903003703002002200229035037038001200241d0006a20024180016a109d0341002101410021094100210c4100210d4100210f41002105410021044100210741002110410021114100213541002137410021384100213941002136410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f41002120410021214100212241002123024020022d00504101470d0020032d0000211c200241d9006a2d0000211b200241da006a2d0000211a200241db006a2d00002119200241dc006a2d00002118200241dd006a2d00002117200241de006a2d00002116200241df006a2d0000211520062d00002114200241e1006a2d00002113200241e2006a2d00002136200241e3006a2d00002139200241e4006a2d00002138200241e5006a2d00002137200241e6006a2d00002135200241e7006a2d0000211120002d00002110200241e9006a2d00002107200241ea006a2d00002104200241eb006a2d00002105200241ec006a2d0000210f200241ed006a2d0000210d200241ee006a2d0000210c200241ef006a2d00002109200241f0006a2d0000210120022d0051212320022d0052212220022d0053212120022d0054212020022d0055211f20022d0056211e20022d0057211d0b200241fc006a200d3a0000200241f8006a20073a0000200241f4006a20373a0000200241f0006a20133a0000200241ec006a20173a00002000201b3a0000200241e4006a201f3a0000200620233a0000200241dc006a200241c0006a41086a28020036020020022002290340370254200220013a007f200220093a007e2002200c3a007d2002200f3a007b200220053a007a200220043a0079200220103a0077200220113a0076200220353a0075200220383a0073200220393a0072200220363a0071200220143a006f200220153a006e200220163a006d200220183a006b200220193a006a2002201a3a00692002201c3a00672002201d3a00662002201e3a0065200220203a0063200220213a0062200220223a006120024100360250200241d0006a10ea02200241e0016a24000f0b0240024020350d002009102121030c010b200320352009102521030b2003450d07200921350b200641206a2106200320106a2209200229038001370000200941186a2038290300370000200941106a200c290300370000200941086a2039290300370000201041206a21100c000b0b41dce1c30041c900104a000b200141011030000b41dce1c30041c900104a000b102f000b203541011030000b200941011030000b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b102a000be51302157f037e230041f0026b220224002002412036021420022001360210200241186a2001ad4280808080800484100410900102400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036023c20022003360238200241086a200241386a106e024002400240024002400240024020022802080d00200228023c220541c4006e220641c4006c2201417f4c0d02200228020c21070240024020010d00410421080c010b200110212208450d020b2007450d03200241c8026a41077221094100210a024003400240024002400240024002402005450d0020022005417f6a220b36023c20022002280238220c41016a360238200c2d0000220141014b0d000240024020010e020001000b200b41034d0d0120024184026a41026a20024188026a41026a2d00003a0000200241e8016a41086a200241a8026a41086a290200370300200241e8016a41106a200241a8026a41106a290200370300200241e8016a41186a200241a8026a41186a2d00003a0000200241c8016a41086a200241c8026a41086a290100370300200241c8016a41106a200241c8026a41106a290100370300200241c8016a41186a200241c8026a41186a290100370300200220022f0088023b018402200220022902a8023703e801200220022901c8023703c80120022005417b6a220d36023c2002200c41056a360238200c280001210e200220022f01a4023b01c6014100210f0c030b4100210f200241003a00e8022005417e6a211003400240200b200f2201470d000240200141ff0171450d00200241003a00e8020b4100210d4102210f0c040b200241c8026a20016a200c20016a220f41016a2d00003a00002002200f41026a3602382002200141016a220f3a00e8022002201036023c2010417f6a2110200f4120470d000b200241a4026a41026a221120022d00ca023a000020024188026a41086a2212200941086a29000037030020024188026a41106a2213200941106a29000037030020024188026a41186a2214200941186a2d00003a0000200220022f01c8023b01a40220022009290000370388024100210d200b200f460d0120022800cb0221152002201036023c2002200c200f6a220b41026a3602380240200b41016a2d0000220f41014d0d002010210d4102210f0c030b024002400240200f0e020100010b4100210f200241003a00e802200520016b417c6a2101034002402010200f470d000240200f41ff0171450d00200241003a00e8020b4100210d0c050b200241c8026a200f6a200b200f6a220c41026a2d00003a00002002200c41036a3602382002200f41016a220c3a00e8022002200136023c2001417f6a2101200c210f200c4120470d000b200241a8026a41186a200241c8026a41186a290300370300200241a8026a41106a200241c8026a41106a290300370300200241a8026a41086a200241c8026a41086a290300370300200220022903c8023703a8022010200c6b210d410121160c010b410021162010210d0b200241c8016a41186a200241a8026a41186a290300370300200241c8016a41106a200241a8026a41106a290300370300200241c8016a41086a200241a8026a41086a29030037030020024184026a41026a20112d00003a0000200241e8016a41086a2012290300370300200241e8016a41106a2013290300370300200241e8016a41186a20142d00003a0000200220022903a8023703c801200220022f01a4023b01840220022002290388023703e8014101210f2015210e0c020b200241c2016a41026a20024184026a41026a2d00003a0000200241a8016a41086a200241e8016a41086a290300370300200241a8016a41106a200241e8016a41106a290300370300200241a8016a41186a200241e8016a41186a2d00003a000020024188016a41086a200241c8016a41086a29030037030020024188016a41106a200241c8016a41106a29030037030020024188016a41186a200241c8016a41186a290300370300200220022f0184023b01c201200220022903e8013703a801200220022903c80137038801200220022f01c6013b0186010c020b4102210f0b200241c2016a41026a220120024184026a41026a2d00003a0000200241a8016a41086a220c200241e8016a41086a290300370300200241a8016a41106a220b200241e8016a41106a290300370300200241a8016a41186a2205200241e8016a41186a2d00003a000020024188016a41086a2211200241c8016a41086a29030037030020024188016a41106a2212200241c8016a41106a29030037030020024188016a41186a2213200241c8016a41186a290300370300200220022f0184023b01c201200220022903e8013703a801200220022903c80137038801200220022f01c6013b018601200f4102460d00200a41016a211020024182016a41026a221420012d00003a0000200241e8006a41086a2215200c290300370300200241e8006a41106a220c200b290300370300200241e8006a41186a220b20052d00003a0000200241c8006a41086a22052011290300370300200241c8006a41106a22112012290300370300200241c8006a41186a22122013290300370300200220022f01c2013b018201200220022903a8013703682002200229038801370348200220022f0186013b01462006200a470d020240200a41017422012010200120104b1b2206ad42c4007e2217422088a70d002017a7220141004e0d020b102a000b200241003602282006450d08200810230c080b02400240200a0d002001102121080c010b2008200a41c4006c2001102521080b2008450d020b2008200a41c4006c6a2201200f3a00002001200e360004200141036a20142d00003a0000200120022f0182013b0001200b2d0000210f200c29030021172015290300211820022903682119200120163a002120012019370008200141106a2018370000200141186a2017370000200141206a200f3a00002001413a6a2012290300370000200141326a20112903003700002001412a6a200529030037000020012002290348370022200120022f01463b0042200d21052010210a20102007470d000b200241306a20073602002002200636022c200220083602280c060b200141041030000b200241003602280c030b200141041030000b102f000b200241306a20073602002002200636022c2002200836022820080d010b200241003602b002200242013703a8022002410c3602cc012002200241106a3602c8012002200241a8026a36028801200241dc026a4101360200200242013702cc0220024198c2c3003602c8022002200241c8016a3602d80220024188016a41b8a3c500200241c8026a102e1a20023502b00242208620023502a8028410082000410036020020022802ac02450d0120022802a80210230c010b20002002290328370200200041086a200241286a41086a2802003602000b2004450d00200310230b200241f0026a24000bb00701057f230041106b22032400200341003602082003420137030020022003105c02400240024002400240024002402002450d00200241c4006c210403400240024020012d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102121050c010b200328020020022006102521050b2005450d052003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a0000200141046a28020021060240024020032802042205200328020822026b4104490d00200328020021050c010b200241046a22072002490d0a200541017422022007200220074b1b22024100480d0a0240024020050d002002102121050c010b200328020020052002102521050b2005450d062003200236020420032005360200200328020821020b2003200241046a360208200520026a20063600000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102121050c010b200328020020022006102521050b2005450d062003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a00002003200336020c200141016a2003410c6a106b0240200141216a2d00004101460d0002400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d0a200241017422062005200620054b1b22064100480d0a0240024020020d002006102121050c010b200328020020022006102521050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41003a00000c010b02400240200328020420032802082202460d00200328020021050c010b200241016a22052002490d09200241017422062005200620054b1b22064100480d090240024020020d002006102121050c010b200328020020022006102521050b2005450d082003200636020420032005360200200328020821020b2003200241016a360208200520026a41013a0000200141226a200310710b200141c4006a2101200441bc7f6a22040d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200641011030000b200241011030000b200641011030000b200641011030000b200641011030000b102a000b900f06017f017e057f017e057f017e230041f0016b2201240042002102200141e0006a41186a22034200370300200141e0006a41106a22044200370300200141e0006a41086a2205420037030020014200370360200141d0006a41086a220641a6a3c500ad4280808080a001841003220741086a29000037030020012007290000370350200710232005200629030037030020012001290350370360200641b0a3c500ad4280808080e000841003220741086a2900003703002001200729000037035020071023200420012903502208370300200141206a41086a2005290300370300200141206a41106a2008370300200141206a41186a2006290300370300200120083703402001200129036037032020014180016a200141206a4120108a0120012d0080012107200320014199016a290000370300200420014191016a290000370300200520014189016a29000037030020012001290081013703600240024020074101470d0020002001290360370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700000c010b20014180016a41186a420037030020014180016a41106a2209420037030020014180016a41086a220742003703002001420037038001200641c4fbc400ad4280808080e000841003220a41086a2900003703002001200a290000370350200a102320072006290300370300200120012903503703800120064197bdc000ad4280808080e000841003220a41086a2900003703002001200a290000370350200a102320092001290350220837030020052007290300370300200420083703002003200629030037030020012008370320200120012903800137036020014180016a200141e0006a108c0102400240200128028001220a0d004104210a410021060c010b2001290284012202422088a721060b02400240200641246c2206450d002006415c6a2105200a210603400240024020062d00004101460d002005450d030c010b200641016a2800002103200641086a28020021072001200641106a280200360264200120073602600240200341c28289aa04460d0020050d010c030b20014180016a200141e0006a109b0320012d00800122054102460d02200141e4016a2802002109200128028401210b20014180016a41186a420037030020014180016a41106a220c420037030020014180016a41086a220342003703002001420037038001200141d0006a41086a220641f7fbc400ad4280808080f000841003220741086a2900003703002001200729000037035020071023200320062903003703002001200129035037038001200641e7acc500ad4280808080a001841003220741086a2900003703002001200729000037035020071023200c20012903502208370300200141e0006a41086a2003290300370300200141e0006a41106a2008370300200141e0006a41186a200629030037030020012008370320200120012903800137036020014180016a200141e0006a412010bb012001280280012206410120061b2107410021030240200b200920054101711b2205200129028401420020061b2208422088a74f0d00200720054105746a2206450d00200141186a200641186a290000370300200141106a200641106a290000370300200141086a200641086a29000037030020012006290000370300410121030b02402008a7450d00200710230b2003450d0220014180016a41186a2207200141186a29030037030020014180016a41106a2209200141106a29030037030020014180016a41086a220b200141086a2903003703002001200129030037038001200141e0006a41186a220c4200370300200141e0006a41106a220d4200370300200141e0006a41086a2205420037030020014200370360200141d0006a41086a220641a6a3c500ad4280808080a001841003220341086a29000037030020012003290000370350200310232005200629030037030020012001290350370360200641b0a3c500ad4280808080e000841003220341086a2900003703002001200329000037035020031023200141c0006a41086a2006290300220837030020012001290350220e3703402004200e370000200441086a2008370000200141206a41086a2005290300370300200141206a41106a200d290300370300200141206a41186a200c29030037030020012001290360370320200141203602642001200141206a36026020014180016a200141e0006a10f501200041186a2007290300370000200041106a2009290300370000200041086a200b29030037000020002001290380013700000c030b200641246a21062005415c6a21050c000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402002422088a72206450d00200641246c2105200a210603400240024020062d0000220341034b0d0002400240024020030e0404000102040b2006410c6a280200450d03200641086a28020010230c030b2006410c6a280200450d02200641086a28020010230c020b2006410c6a280200450d01200641086a28020010230c010b200641086a280200450d00200641046a28020010230b200641246a21062005415c6a22050d000b0b2002a7450d00200a10230b200141f0016a24000b980e09057f017e017f017e037f017e027f027e087f230041f0006b22012400200141306a41186a22024200370300200141306a41106a22034200370300200141306a41086a2204420037030020014200370330200141e0006a41086a220541c6acc500ad4280808080f0008422061003220741086a290000370300200120072900003703602007102320042005290300370300200120012903602208370350200120083703302005418cfbc500ad4280808080e002841003220741086a2900003703002001200729000037036020071023200320012903602208370300200141106a41086a22092004290300370300200141106a41106a220a2008370300200141106a41186a220b20052903003703002001200837035020012001290330370310200141306a200141106a10ae032001290338210c200128023421072001280230210d20024200370300200342003703002004420037030020014200370330200520061003220e41086a2900003703002001200e290000370360200e1023200420052903003703002001200129036037033020054185b2c500ad4280808080e001841003220e41086a2900003703002001200e290000370360200e102320032001290360220837030020092004290300370300200a2008370300200b20052903003703002001200837035020012001290330370310200141306a200141106a412010bb01200d410020071b210b200c420020071b210f20012902344200200128023022051b21102007410420071b21112005410120051b210d2000280200211220002802042113024002400240024020002802082205450d002012200541246c6a21142010422088a741057421152012210903402009280220210a200941086a2900002108200941106a29000021062009290000210c2002200941186a29000037030020032006370300200420083703002001200c370330200941246a21094100210020152107200d21050240024003402007450d02200141306a2005460d01200041016a2100200741606a21072005200141306a412010de04210e200541206a2105200e0d000b200e4541016a41017120006a417f6a21000b200b200a6a2207200b490d000240200041016a220e200f422088a722054d0d000240200fa7220b20056b200e2005200e20054b1b221620056b220e4f0d002005200e6a22172005490d06200b41017422182017201820174b1b221741ffffffff03712017470d06201741027422184100480d0602400240200b0d002018102121110c010b2011200b4102742018102521110b2011450d052017ad210f0b201120054102746a210b02400240200e4102490d00200b410020162005417f736a220e41027410db041a2011200520166a20056b4102746a417c6a210b200e20056a21050c010b200e450d010b200b4100360200200541016a21050b200520004d0d05201120004102746a22002000280200200a6a360200200f42ffffffff0f832005ad42208684210f2007210b0b20092014470d000b0b02402013450d00201210230b02402010a7450d00200d10230b200120113602042001200b3602002001200f3703080240024020110d00200141306a41186a220e4200370300200141306a41106a22094200370300200141306a41086a2207420037030020014200370330200141e0006a41086a220541c6acc500ad4280808080f000841003220041086a290000370300200120002900003703602000102320072005290300370300200120012903602208370350200120083703302005418cfbc500ad4280808080e002841003220041086a2900003703002001200029000037036020001023200141d0006a41086a2005290300220837030020012001290360220637035020032006370000200341086a2008370000200141106a41086a2007290300370300200141106a41106a2009290300370300200141106a41186a200e29030037030020012001290330370310200141106aad428080808080048410050c010b200141306a41186a220e4200370300200141306a41106a22094200370300200141306a41086a2207420037030020014200370330200141e0006a41086a220541c6acc500ad4280808080f000841003220041086a290000370300200120002900003703602000102320072005290300370300200120012903602208370350200120083703302005418cfbc500ad4280808080e002841003220041086a2900003703002001200029000037036020001023200141d0006a41086a2005290300220837030020012001290360220637035020032006370000200341086a2008370000200141106a41086a2007290300370300200141106a41106a2009290300370300200141106a41186a200e29030037030020012001290330370310200141203602342001200141106a3602302001200141306a10a9042011450d00200fa7450d00201110230b200141f0006a24000f0b201841041030000b102a000b4180b9c00020002005102d000bcb0603067f017e077f230041106b2203240002400240024002400240200241046a2204417f4c0d0002400240024020040d00410121050c010b200410212205450d010b20034100360208200320043602042003200536020020022003105c02400240024020032802042206200328020822046b2002490d00200328020021070c010b200420026a22052004490d07200641017422082005200820054b1b22054100480d070240024020060d002005102121070c010b200328020020062005102521070b2007450d012003200536020420032007360200200521060b200720046a2001200210dc041a200420026a2201ad4220862007ad84100c220229000021092002102320032009370300200720016a210a200141086a220b20014f0d03200341086a210c20032108410021024100210b410121042007210d41002105034020024101742101200c200841016a220e6b210f034020082d0000210802400240024002402002200b470d00200f210b024002400240200541ff01710e03010200010b200a200d6b210b0c010b417f200f200a200d6b6a220b200b200f491b210b0b2002417f200b41016a22102010200b491b6a220b2002490d0c2001200b2001200b4b1b220b4100480d0c0240024020020d00200b102121040c010b20042002200b102521040b2004450d010b200420026a20083a00000240024002400240200541ff01710e03010300010b200a200d460d010c050b0240200e200c460d00410021050c040b200a200d470d040b200241016a21020c0a0b41012105200e200c470d01200241016a21020c090b200b41011030000b200241016a2102200e21080c020b200241016a210241022105200141026a2101200d220841016a210d0c000b0b0b200541011030000b200441011030000b102f000b410121040240200b450d00200b4100480d03200b10212204450d020b410021020340200420026a200320026a2d00003a0000200241016a22024108470d000b024020010d00410821020c010b200420026a2105410021020340200520026a200720026a2d00003a00002001200241016a2202470d000b200a20076b41086a21020b200020023602082000200b3602042000200436020002402006450d00200710230b200341106a24000f0b200b41011030000b102a000bf40601067f230041f0006b21020240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204410121072001200441016a360200200541f001490d0a200541847e6a220541034b0d0420050e0401020803010b200041023a00000f0b20064102490d0320042f0001210520012003417d6a3602042001200441036a360200200541ef014b0d04200041023a00000f0b20064104490d042004280001210520012003417b6a3602042001200441056a36020041012107200541ffff034b0d07200041023a00000f0b41002105200241003a00682003417f6a21062003417e6a210302400340024020062005470d000240200541ff0171450d00200241003a00680b410121010c020b200241c8006a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00682003417f6a21032007210520074120470d000b200241c6006a20022d004a3a0000200241306a200241d7006a290000370300200241386a200241df006a290000370300200241c0006a200241e7006a2d00003a0000200220022f01483b01442002200229004f370328200228004b2105410021010b200241246a41026a2203200241c4006a41026a2d00003a0000200241086a41086a2207200241286a41086a290300370300200241086a41106a2204200241286a41106a290300370300200241086a41186a2206200241286a41186a2d00003a0000200220022f01443b0124200220022903283703082001450d05200041023a00000f0b200041023a00000f0b200041023a00000f0b410121070c030b200041023a00000f0b0240200641044f0d00200041023a00000f0b200041023a000020012003417b6a3602042001200441056a3602000f0b200241286a41026a20032d00003a0000200241c8006a41086a2007290300370300200241c8006a41106a2004290300370300200241c8006a41186a20062d00003a0000200220022f01243b012820022002290308370348410021070b200020073a0000200020022f01283b0001200041046a2005360200200041086a2002290348370200200041036a2002412a6a2d00003a0000200041106a200241c8006a41086a290300370200200041186a200241c8006a41106a290300370200200041206a200241c8006a41186a2802003602000bb20801037f0240024002400240024002400240024020002d00004101460d0002400240200141046a280200200141086a2802002202460d00200128020021030c010b200241016a22032002490d08200241017422042003200420034b1b22044100480d080240024020020d002004102121030c010b200128020020022004102521030b2003450d0220012003360200200141046a2004360200200141086a28020021020b200141086a200241016a360200200320026a41ff013a0000200041016a200110710f0b0240024002400240200041046a280200220241ffff034b0d00200241ef014b0d03200141046a280200200141086a2802002200460d01200128020021030c020b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d0a200041017422042003200420034b1b22044100480d0a0240024020000d002004102121030c010b200128020020002004102521030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fd013a000002400240200141046a2802002203200428020022006b4104490d00200128020021030c010b200041046a22042000490d0a200341017422002004200020044b1b22004100480d0a0240024020030d002000102121030c010b200128020020032000102521030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20023600000f0b200041016a22032000490d08200041017422042003200420034b1b22044100480d080240024020000d002004102121030c010b200128020020002004102521030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a200041016a360200200320006a20023a00000f0b02400240200141046a280200200141086a2802002200460d00200128020021030c010b200041016a22032000490d07200041017422042003200420034b1b22044100480d070240024020000d002004102121030c010b200128020020002004102521030b2003450d0520012003360200200141046a2004360200200141086a28020021000b200141086a2204200041016a360200200320006a41fc013a000002400240200141046a2802002203200428020022006b4102490d00200128020021030c010b200041026a22042000490d07200341017422002004200020044b1b22004100480d070240024020030d002000102121030c010b200128020020032000102521030b2003450d0620012003360200200141046a2000360200200141086a28020021000b200141086a200041026a360200200320006a20023b00000f0b200441011030000b200441011030000b200041011030000b200441011030000b200441011030000b200041011030000b102a000b9a0808017f027e037f017e017f027e047f037e23004190016b22032400200341206a200020012002109702200341206a41086a290300210420032903202105200341d0006a41186a22064200370300200341d0006a41106a22074200370300200341d0006a41086a220842003703002003420037035020034180016a41086a220041d5fbc400ad428080808080018422091003220a41086a2900003703002003200a29000037038001200a1023200820002903003703002003200329038001220b3703702003200b370350200041d6a0c200ad4280808080d00184220c1003220a41086a2900003703002003200a29000037038001200a10232007200329038001220b370300200341306a41086a220a2008290300370300200341306a41106a220d200b370300200341306a41186a220e20002903003703002003200b37037020032003290350370330200341086a200341306a4120108902200120057d200520017d200520015820042002582004200251220f1b22101b2111200220047d2001200554ad7d200420027d2005200154ad7d20101b2112200341086a41106a2903004200200328020822101b210b2003290310420020101b21130240024020052001562004200256200f1b0d0020064200370300200742003703002008420037030020034200370350200020091003220f41086a2900003703002003200f29000037038001200f10232008200029030037030020032003290380012201370370200320013703502000200c1003220f41086a2900003703002003200f29000037038001200f1023200341f0006a41086a200029030022013703002003200329038001220237037020072002370000200741086a2001370000200a2008290300370300200d2007290300370300200e20062903003703002003200329035037033020034200200b20127d2013201154ad7d2201201320117d22022013562001200b562001200b511b22001b37035820034200200220001b370350200341d0006a21000c010b20064200370300200742003703002008420037030020034200370350200020091003220f41086a2900003703002003200f29000037038001200f10232008200029030037030020032003290380012201370370200320013703502000200c1003220f41086a2900003703002003200f29000037038001200f1023200341f0006a41086a200029030022013703002003200329038001220237037020072002370000200741086a2001370000200a2008290300370300200d2007290300370300200e2006290300370300200320032903503703302003427f200b20127c201320117c22022013542200ad7c220120002001200b542001200b511b22001b3703582003427f200220001b370350200341d0006a21000b200341306aad42808080808004842000ad4280808080800284100220034190016a24000bf70e05057f017e027f027e037f230041e0016b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a2203420037030020014200370360200141d0016a41086a220441cefbc400ad4280808080f000841003220541086a290000370300200120052900003703d0012005102320032004290300370300200120012903d001220637035020012006370360200441aae1c300ad4280808080b001841003220541086a290000370300200120052900003703d00120051023200220012903d0012206370300200141306a41086a2003290300370300200141306a41106a2006370300200141306a41186a20042903003703002001200637035020012001290360370330200141186a200141306a4120108f0120012802182107200128021c210820002d00002103024002400240024002400240024002400240410110212204450d00200420033a000020002d0001210320044101410210252204450d01200420033a000120002d0002210320044102410410252204450d02200420033a0002200420002d00033a000320002d0004210320044104410810252204450d03200420033a0004200420002d00053a0005200420002d00063a0006200420002d00073a000720002d0008210320044108411010252204450d04200420033a0008200420002d00093a0009200420002d000a3a000a200420002d000b3a000b200420002d000c3a000c200420002d000d3a000d200420002d000e3a000e200420002d000f3a000f20002d0010210320044110412010252204450d05200420033a0010200420002d00113a0011200420002d00123a0012200420002d00133a0013200420002d00143a0014200420002d00153a0015200420002d00163a0016200420002d00173a0017200420002d00183a0018200420002d00193a0019200420002d001a3a001a200420002d001b3a001b200420002d001c3a001c200420002d001d3a001d200420002d001e3a001e200420002d001f3a001f20042d0000210320042d0001210520041023200141306a2003200541087472410676220510bc0202402003413f71220420012802384f0d00200141086a200128023020044105746a220410e3012001290308200141086a41086a290300844200520d00200041086a2900002106200041106a2900002109200041186a290000210a20042000290000370000200441186a200a370000200441106a2009370000200441086a2006370000200141e0006a41086a200141306a41086a280200360200200120012903303703602005200141e0006a10a4030c090b2008410020071b210402402001280234450d00200128023010230b200141e0006a200410bc020240200128026841c000490d000340200441016a210402402001280264450d00200128026010230b200141e0006a200410bc022001280268413f4b0d000b0b200141206a41086a200141e0006a41086a2207280200220336020020012001290360370320200141e0006a41186a2208200041186a290000370300200141e0006a41106a220b200041106a2900003703002007200041086a29000037030020012000290000370360024020032001280224470d00200341016a22052003490d082003410174220c2005200c20054b1b220541ffffff3f712005470d082005410574220d4100480d080240024020030d00200d1021210c0c010b20012802202003410574200d1025210c0b200c450d07200120053602242001200c3602200b200320044106746a210c200128022020034105746a22052001290360370000200541086a2007290300370000200541106a200b290300370000200541186a20082903003700002001200341016a22033602280240200341c000470d00200141e0006a41186a22084200370300200141e0006a41106a220b4200370300200141e0006a41086a2205420037030020014200370360200141d0016a41086a220341cefbc400ad4280808080f000841003220741086a290000370300200120072900003703d0012007102320052003290300370300200120012903d001220637035020012006370360200341aae1c300ad4280808080b001841003220741086a290000370300200120072900003703d00120071023200141d0006a41086a20032903002206370300200120012903d001220937035020022009370000200241086a2006370000200141306a41086a2005290300370300200141306a41106a200b290300370300200141306a41186a2008290300370300200120012903603703302001200441016a360260200141306aad4280808080800484200141e0006aad4280808080c0008410020b200141e0006a41086a2203200141206a41086a280200360200200120012903203703602004200141e0006a10a40320032000290000370300200141e0006a41106a200041086a290000370300200141e0006a41186a200041106a29000037030020014180016a200041186a2900003703002001200c360264200141013a0060200141e0006a108e010c080b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b200d41011030000b102a000b200141e0016a24000bf40b02057f017e230041c0016b22032400200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441e3a0c200ad4280808080b001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac01024002400240024041c00010212205450d00200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341e0006a290000370000200541386a200341d0006a41186a29000037000020032001370350200320023703582005ad4280808080800884200341d0006aad42808080808002841002200510230240200142ffc7afa0255620024200522002501b0d00200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441e3a0c200ad4280808080b001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0141c00010212205450d02200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a290000370000200341186a200541c000108902200341186a41106a2903002102200329032021010240200329031822084201520d002005ad428080808080088410050b20051023200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441fda0c200ad4280808080d000841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0141c00010212205450d03200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341e0006a290000370000200541386a200341d0006a41186a2900003700002005ad428080808080088410052005102302402001200284500d002008a7450d002001200210cb020b200010dd02200341d0006a41086a220441d5fbc400ad42808080808001841003220541086a2900003703002003200529000037035020051023200341306a41086a2206200429030037030020032003290350370330200441eea0c200ad4280808080f001841003220541086a2900003703002003200529000037035020051023200341c0006a41086a2207200429030037030020032003290350370340200341d0006a200010ac0141c00010212205450d04200520032903303700002005200329034037001020052003290050370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200341d0006a41106a290000370000200541386a200341d0006a41186a2900003700002003200541c000108902200341106a290300210220032802002104200329030821012005102302402001200284500d0020040d010b200010ab01200341d0006a41086a41013a0000200341d9006a2000290000370000200341e1006a200041086a290000370000200341e9006a200041106a290000370000200341f1006a200041186a290000370000200341023a0050200341d0006a108e010b200341c0016a24000f0b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b9b0e03057f017e077f23004190016b22012400200141e8006a41086a220241c6acc500ad4280808080f000841003220341086a2900003703002001200329000037036820031023200141c8006a41086a2204200229030037030020012001290368370348200241f1acc500ad4280808080e000841003220341086a2900003703002001200329000037036820031023200141d8006a41086a2205200229030037030020012001290368370358200141e8006a200010ac0102400240024002400240024002400240024041c00010212203450d00200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141e8006a41106a290000370000200341386a200141e8006a41186a290000370000200141e8006a200341c000108a010240024020012d00684101470d002003ad42808080808008841005200141086a41186a220220014181016a290000370300200141086a41106a2204200141f9006a290000370300200141086a41086a2205200141f1006a2900003703002001200129006937030820031023200141286a41186a2002290300370300200141286a41106a2004290300370300200141286a41086a200529030037030020012001290308370328200141e8006a41086a220241c6acc500ad4280808080f000841003220341086a2900003703002001200329000037036820031023200141c8006a41086a2204200229030037030020012001290368370348200241f7acc500ad4280808080e000841003220341086a2900003703002001200329000037036820031023200141d8006a41086a2205200229030037030020012001290368370358200141e8006a200141286a10ac0141c00010212203450d03200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141f8006a290000370000200341386a200141e8006a41186a2900003700002003ad42808080808008841005200310230c010b200310230b200141e8006a41086a220241c6acc500ad4280808080f0008422061003220341086a2900003703002001200329000037036820031023200141c8006a41086a2204200229030037030020012001290368370348200241acb2c500ad4280808080d000841003220341086a2900003703002001200329000037036820031023200141d8006a41086a2205200229030037030020012001290368370358200141e8006a200010ac0141c00010212203450d02200320012903483700002003200129035837001020032001290068370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141f8006a2204290000370000200341386a200141e8006a41186a22052900003700002003ad4280808080800884100520031023200010ac04200010ae04200220061003220341086a2900003703002001200329000037036820031023200141086a41086a200229030037030020012001290368370308200241b9adc500ad4280808080d001841003220341086a2900003703002001200329000037036820031023200141286a41086a200229030037030020012001290368370328200141e8006a200010ac0141c00010212203450d03200320012903083700002003200129032837001020032001290068370020200341086a200141086a41086a290300370000200341186a200141286a41086a290300370000200341286a200141e8006a41086a2207290000370000200341306a2004290000370000200341386a2005290000370000200141e8006a200341c00010ab030240200128027022080d00200310230c090b2003ad4280808080800884100520012802682109200129027421062003102320082006422088a74102746a210a2006a7210b2009210c2008210441002105410041ff01710e03040506040b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b410121030c020b410221030c010b410021030b0340024002400240024002400240024020030e03000102020b2004200a460d03200441046a210441022103200c417f6a2202210c0c020b41002103024020054102460d0041022105200921020c020b2004200a460d02200441046a210441022105200c417f6a2202210c410221030c010b2005410247210d410121034102210520092102200d450d010b200141e8006a41186a200041186a290000370300200141e8006a41106a200041106a2900003703002007200041086a290000370300200120023602880120012000290000370368200141e8006a10b4040240200341ff01710e03000203000b410121030c030b200b450d03200810230c030b410221030c010b410021030c000b0b20014190016a24000be40f08047f017e017f047e037f027e017f017e230041d0016b220524000240024002400240024002402002410671450d00200541b8016a41086a220641d5fbc400ad42808080808001841003220741086a290000370300200520072900003703b80120071023200541a8016a41086a22082006290300370300200520052903b8013703a801200641cdadc200ad4280808080f000841003220741086a290000370300200520072900003703b80120071023200541e8006a41086a22072006290300370300200520052903b80137036820054188016a200110ac0141c00010212206450d01200620052903a801370000200620052903683700102006200529008801370020200641086a2008290300370000200641186a2007290300370000200641286a20054188016a41086a290000370000200641306a20054188016a41106a290000370000200641386a20054188016a41186a290000370000200541c00036025c20052006360258200541b8016a2006ad428080808080088410041090010240024020052802b80122070d00420021090c010b20052802bc01210802400240200541b8016a41086a280200220a4110490d00200a4170714110460d00200a417c714120460d00200741086a290000210b2007290000210c200741186a290000210d2007290010210e2007280020210a420121090c010b20054100360270200542013703682005410c3602ac012005200541d8006a3602a8012005200541e8006a3602cc012005419c016a41013602002005420137028c0120054198c2c300360288012005200541a8016a36029801200541cc016a41b8a3c50020054188016a102e1a200535027042208620053502688410080240200528026c450d00200528026810230b420021090b2008450d00200710230b200610232009500d00200541b8016a41086a220741d5fbc400ad42808080808001841003220641086a290000370300200520062900003703b80120061023200541a8016a41086a22082007290300370300200520052903b8013703a801200741e3a0c200ad4280808080b001841003220641086a290000370300200520062900003703b80120061023200541e8006a41086a220f2007290300370300200520052903b80137036820054188016a200110ac0141c00010212206450d02200620052903a801370000200620052903683700102006200529008801370020200641086a2008290300370000200641186a200f290300370000200641286a20054188016a41086a2208290000370000200641306a20054188016a41106a2210290000370000200641386a20054188016a41186a2211290000370000200541c0006a200641c000108902200541c0006a41106a2903002112200529034821132005280240211420061023420021152011420037030020104200370300200842003703002005420037038801200741c4fbc400ad4280808080e000841003220641086a290000370300200520062900003703b8012006102320082007290300370300200520052903b80137038801200741f9bcc000ad4280808080e000841003220641086a290000370300200520062900003703b80120061023201020052903b8012209370300200f2008290300370300200541e8006a41106a2009370300200541e8006a41186a2007290300370300200520093703a8012005200529038801370368200541386a200541e8006a4120108f01200541186a200d42004100200528023c410020052802381b2206200a6b2207200720064b1bad2209420010e104200541286a20094200200e420010e104200541086a42004200200e420010e1042012420020141b210e2013420020141b210d4200210902402005290310200529032084420052200541286a41086a2903002213200529030820052903187c7c2212201354720d00200b2012200c2005290328221556200b201256200b2012511b22061b20127d200c201520061b220b201554ad7d2109200b20157d21150b2015200d200d201556200e200956200e2009511b22061b2003562009200e20061b220920045620092004511b450d004185aec2002106412621010c050b200541d8006a200110df02200528026022080d0241002106200528025c450d03200528025810230c030b41c00041011030000b41c00041011030000b20054188016a41186a420037030020054188016a41106a220a420037030020054188016a41086a220142003703002005420037038801200541b8016a41086a220641c4fbc400ad4280808080e000841003220741086a290000370300200520072900003703b8012007102320012006290300370300200520052903b80137038801200641f9bcc000ad4280808080e000841003220741086a290000370300200520072900003703b80120071023200a20052903b8012209370300200541e8006a41086a2001290300370300200541e8006a41106a2009370300200541e8006a41186a2006290300370300200520093703a80120052005290388013703682005200541e8006a4120108f012005280204410020052802001b210720084105742101200528025c21082005280258220a21060240034002402007200641106a2802004f0d002006290300200358200641086a290300220920045820092004511b0d002006411c6a2d000020027141ff01710d020b200641206a2106200141606a22010d000b410021062008450d01200a10230c010b41d4adc20021062008450d00200a10230b413121010b2000200136020420002006360200200541d0016a24000bc509030c7f037e037f230041f0006b22022400200241286a41086a220341d5fbc400ad42808080808001841003220441086a2900003703002002200429000037032820041023200241086a41086a2205200329030037030020022002290328370308200341fda0c200ad4280808080d000841003220441086a2900003703002002200429000037032820041023200241186a41086a2206200329030037030020022002290328370318200241286a200110ac010240024002400240024041c00010212204450d00200420022903083700002004200229031837001020042002290028370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241386a290000370000200441386a200241286a41186a290000370000200241c00036024c20022004360248200241086a2004ad428080808080088410041090010240024020022802082207450d00200228020c21082002200241106a280200360254200220073602502002200241d0006a106e02400240024020022802000d00200228025422034160712205417f4c0d0620022802042109024002402003410576220a0d00410821010c010b200510212201450d080b02402009450d00411d210b4100210c4100210d0340200241186a200241d0006a10be020240024020022d00184101460d00200228025422054110490d002002290019210e20022002280250220341106a3602502002200541706a220636025420064104490d00200341086a290000210f2003290000211020022005416c6a22063602542002200341146a36025020060d010b20024100360228200a450d04200110230c040b200d41016a210620032800102111200241ec006a41026a200241d8006a41026a2d000022123a0000200241e8006a41026a221320123a000020022005416b6a3602542002200341156a360250200220022f005822053b016c200220053b016820032d001421050240200d200a470d00200c2006200c20064b1b220a41ffffff3f71200a470d0c200a41057422034100480d0c02400240200d0d002003102121010c010b2001200b41636a2003102521010b2001450d0b0b2001200b6a2203417f6a20053a0000200341636a2205200f37030820052010370300200341776a200e370200200341736a2011360200200320022f01683b0000200341026a20132d00003a0000200c41026a210c200b41206a210b2006210d20092006470d000b200241306a20093602002002200a36022c20022001360228200229022c210e0c030b200241306a20093602002002200a36022c200220013602282001450d01200229022c210e0c020b200241003602280b4100210120024100360220200242013703182002410c36025c2002200241c8006a3602582002200241186a3602642002413c6a41013602002002420137022c20024198c2c3003602282002200241d8006a360238200241e4006a41b8a3c500200241286a102e1a200235022042208620023502188410080240200228021c450d00200228021810230b0b02402008450d00200710230b2001450d002000200e370204200020013602000c010b20004100360208200042083702000b20041023200241f0006a24000f0b41c00041011030000b102f000b200541081030000b200341081030000b102a000bf61003097f027e037f230041c0006b22022400200241206a41086a220341d5fbc400ad42808080808001841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341fda0c200ad4280808080d000841003220441086a2900003703002002200429000037032020041023200241106a41086a2204200329030037030020022002290320370310200241206a200010ac01024002400240024002400240024002400240024002400240024041c00010212206450d00200620022903003700002006200229031037001020062002290020370020200641086a2005290300370000200641186a2004290300370000200641286a2003290000370000200641306a200241206a41106a290000370000200641386a200241206a41186a290000370000200128020021072001280208210320024100360228200242013703202003200241206a105c02402003450d0020034105742108410021090340200720096a220341146a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d042002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341156a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d052002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341166a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d062002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341176a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d072002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341186a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d082002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341196a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d092002200a360224200220003602200b2002200441016a360228200020046a20053a00002003411a6a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d0a2002200a360224200220003602200b2002200441016a360228200020046a20053a00002003411b6a2d0000210502400240200228022420022802282204460d00200228022021000c010b200441016a22002004490d0f2004410174220a2000200a20004b1b220a4100480d0f0240024020040d00200a102121000c010b20022802202004200a102521000b2000450d0b2002200a360224200220003602200b2002200441016a360228200020046a20053a0000200341086a290300210b2003290300210c0240024020022802242200200228022822056b4110490d00200228022021040c010b200541106a22042005490d0f2000410174220a2004200a20044b1b220a4100480d0f0240024020000d00200a102121040c010b20022802202000200a102521040b2004450d0c2002200a36022420022004360220200a21000b200420056a220a200b370008200a200c3700002002200541106a220a360228200341106a280200210d02402000200a6b41034b0d00200a41046a220e200a490d0f2000410174220f200e200f200e4b1b220e4100480d0f0240024020000d00200e102121040c010b20042000200e102521040b2004450d0d2002200e360224200220043602200b2002200541146a3602282004200a6a200d3600002003411c6a2d0000210002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102121040c010b200228022020032005102521040b2004450d0e20022005360224200220043602200b2002200341016a360228200420036a20003a00002008200941206a2209470d000b0b200228022421032006ad4280808080800884200235022842208620022802202204ad84100202402003450d00200410230b200610230240200141046a280200450d00200710230b200241c0006a24000f0b41c00041011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200a41011030000b200e41011030000b200541011030000b102a000bec05030c7f017e017f23004180066b22022400200241b8036a20011088010240024020022802bc0322030d00200041003602040c010b200241c4036a280200210420022802c003210520022802b8032106200241106a200241c8036a41e00010dc041a200241086a2001106e024020022802080d000240024002400240200128020441c8026e220741c8026c2208417f4c0d00200228020c21090240024020080d004108210a0c010b20081021220a450d020b024002402009450d004100210b410021084100210c0340200241b8036a200110e20220022903a0044203510d02200c41016a210d200241f0006a200241b8036a41c80210dc041a0240200c2007470d00200b200d200b200d4b1b2207ad42c8027e220e422088a70d07200ea7220f4100480d0702400240200c0d00200f1021210a0c010b200a2008200f1025210a0b200a450d060b200a20086a200241f0006a41c80210dc041a200b41026a210b200841c8026a2108200d210c2009200d470d000b0b200a450d05200241b8036a200241106a41e00010dc041a2000410c6a2004360200200020053602082000200336020420002006360200200041106a200241b8036a41e00010dc041a200041f8006a2009360200200041f4006a2007360200200041f0006a200a3602000c060b0240200c450d00200a4198016a210d0340200d10db01200d41c8026a210d200841b87d6a22080d000b0b2007450d04200a10230c040b102f000b200841081030000b200f41081030000b102a000b2000410036020402402004450d00200441246c210d2003210803400240024020082d0000220c41034b0d00024002400240200c0e0404000102040b2008410c6a280200450d03200841086a28020010230c030b2008410c6a280200450d02200841086a28020010230c020b2008410c6a280200450d01200841086a28020010230c010b200841086a280200450d00200841046a28020010230b200841246a2108200d415c6a220d0d000b0b2005450d00200310230b20024180066a24000be31104047f017e037f047e230041d0056b22022400200241206a2001106e02400240024002400240024020022802200d00024020022802242203450d0003402003417f6a22030d000b0b20012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a36020002400240200541ff00714104470d0020054118744118754100480d01420221060c060b200042033703680c060b200241e0036a200110d80220022d00e0034102460d02200241b8036a41206a200241e0036a41206a280200360200200241b8036a41186a200241e0036a41186a290300370300200241b8036a41106a200241e0036a41106a290300370300200241b8036a41086a200241e0036a41086a290300370300200220022903e0033703b80320012802042205450d02200128020022042d0000210320012005417f6a3602042001200441016a360200200341024b0d02024002400240024020030e03000102000b41002103200241003a00c0022005417f6a2107417e21080340024020072003470d00200341ff0171450d07200241003a00c0020c070b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c0022008417f6a210820092103200941c000470d000b20024190056a41386a20024180026a41386a290300220637030020024190056a41306a20024180026a41306a290300220a37030020024190056a41286a20024180026a41286a290300220b37030020024190056a41206a20024180026a41206a290300220c37030020024190056a41186a20024180026a41186a290300220d370300200241c8046a41086a20024180026a41086a290300370300200241c8046a41106a20024180026a41106a290300370300200241c8046a41186a200d370300200241c8046a41206a200c370300200241c8046a41286a200b370300200241c8046a41306a200a370300200241c8046a41386a200637030020022002290380023703c8042009417f7320056a2105200420096a41016a2104410021030c020b41002103200241003a00c0022005417f6a2107417e21080340024020072003470d00200341ff0171450d06200241003a00c002420221060c070b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c0022008417f6a210820092103200941c000470d000b20024190056a41386a20024180026a41386a290300220637030020024190056a41306a20024180026a41306a290300220a37030020024190056a41286a20024180026a41286a290300220b37030020024190056a41206a20024180026a41206a290300220c37030020024190056a41186a20024180026a41186a290300220d370300200241c8046a41086a20024180026a41086a290300370300200241c8046a41106a20024180026a41106a290300370300200241c8046a41186a200d370300200241c8046a41206a200c370300200241c8046a41286a200b370300200241c8046a41306a200a370300200241c8046a41386a200637030020022002290380023703c8042009417f7320056a210541012103200420096a41016a21040c010b41002103200241003a00c1022005417f6a2107417e21080340024020072003470d00200341ff0171450d05200241003a00c102420221060c060b20024180026a20036a200420036a220941016a2d00003a00002001200520086a3602042001200941026a3602002002200341016a22093a00c1022008417f6a210820092103200941c100470d000b200241c8046a20024180026a41c10010dc041a2009417f7320056a2105200420096a41016a2104410221030b20024187046a200241c8046a41c10010dc041a2005450d022004310000210b20012005417f6a22083602042001200441016a36020002400240200b50450d00420021060c010b2008450d032004310001210c20012005417e6a3602042001200441026a3602004202200b420f8386220a4204540d0342012106200c420886200b84420488200a420c88220b4201200b4201561b7e220b200a5a0d030b200241186a2001106e20022802180d02200228021c21052002200110eb022002290300a70d02200241106a290300210d2002290308210c20024190056a41206a200241b8036a41206a28020036020020024190056a41186a200241b8036a41186a29030037030020024190056a41106a200241b8036a41106a29030037030020024190056a41086a200241b8036a41086a290300370300200220022903b8033703900520024180026a20024187046a41c10010dc041a200220022f01b6033b01fe010c030b200042033703680c040b200042033703680c030b420221060b200241d8016a41086a220420024190056a41086a290300370300200241d8016a41106a220820024190056a41106a290300370300200241d8016a41186a220920024190056a41186a290300370300200241d8016a41206a220720024190056a41206a28020036020020022002290390053703d80120024197016a20024180026a41c10010dc041a200220022f01fe013b019401024020064202520d00200042033703680c020b200241f0006a41206a2007280200360200200241f0006a41186a2009290300370300200241f0006a41106a2008290300370300200241f0006a41086a2004290300370300200220022903d8013703702002412f6a20024197016a41c10010dc041a200220022f0194013b012c0b20024180026a200110d9010240200228028002411a460d0020002002290370370300200020033a0024200041206a200241f0006a41206a280200360200200041186a200241f0006a41186a290300370300200041106a200241f0006a41106a290300370300200041086a200241f0006a41086a290300370300200041256a2002412f6a41c10010dc041a200020022f012c3b016620004188016a200d37030020004180016a200c37030020004190016a2005360200200041f8006a200b3703002000200a3703702000200637036820004198016a20024180026a41b00110dc041a0c010b200042033703680b200241d0056a24000bfb0302037f037e230041f0006b22042400200441206a200110e3010240024002402004290320200441206a41086a29030084500d00200441d0006a41086a220541d5fbc400ad42808080808001841003220641086a2900003703002004200629000037035020061023200441306a41086a200529030037030020042004290350370330200541e3a0c200ad4280808080b001841003220641086a2900003703002004200629000037035020061023200441c0006a41086a200529030037030020042004290350370340200441d0006a200110ac0141c00010212205450d02200520042903303700002005200429034037001020052004290050370020200541086a200441306a41086a290300370000200541186a200441c0006a41086a290300370000200541286a200441d0006a41086a290000370000200541306a200441d0006a41106a290000370000200541386a200441d0006a41186a290000370000200441086a200541c000108902200441086a41106a290300210720042903102108200428020821062005102320012008420020061b220820027c22092007420020061b20037c2009200854ad7c10dc02200041106a2003370300200041086a2002370300410021050c010b200041b4a0c200360204200041086a4122360200410121050b20002005360200200441f0006a24000f0b41c00041011030000b130020004101360204200041acaec2003602000b3400200041f7fbc40036020420004100360200200041146a4107360200200041106a4190b2c200360200200041086a42073702000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241003600000b13002000410136020420004188bfc2003602000b880201057f230041106b22022400024002400240411110212203450d002002421137020420022003360200410d2002105c0240024020022802042204200228020822036b410d490d002003410d6a2105200228020021040c010b2003410d6a22052003490d03200441017422062005200620054b1b22064100480d030240024020040d002006102121040c010b200228020020042006102521040b2004450d0220022006360204200220043602000b20022005360208200420036a22034100290081ad42370000200341056a4100290086ad4237000020002002290300370200200041086a2002280208360200200241106a24000f0b411141011030000b200641011030000b102a000b891206057f027e047f017e047f027e23004180016b22012400200141d0006a41186a4200370300200141d0006a41106a22024200370300200141d0006a41086a2203420037030020014200370350200141c0006a41086a220441f7fbc400ad4280808080f000841003220541086a29000037030020012005290000370340200510232003200429030037030020012001290340370350200441e7acc500ad4280808080a001841003220541086a2900003703002001200529000037034020051023200220012903402206370300200141106a41086a2003290300370300200141106a41106a2006370300200141106a41186a20042903003703002001200637033020012001290350370310200141d0006a200141106a412010bb0120012902544200200128025022041b2207422088a74105742103410021052004410120041b220821040240024002400240024002400340024020030d00410221090c030b20002004460d0120042000412010de042102200541016a2105200341606a2103200441206a210420020d000b20024541016a41017120056a417f6a21050b200141d0006a41186a4200370300200141d0006a41106a220a4200370300200141d0006a41086a2203420037030020014200370350200141c0006a41086a220441f7fbc400ad4280808080f000841003220041086a2900003703002001200029000037034020001023200320042903003703002001200129034022063703302001200637035020044198b8c200ad4280808080a002841003220041086a2900003703002001200029000037034020001023200a20012903402206370300200141106a41086a2003290300370300200141106a41106a2006370300200141106a41186a20042903003703002001200637033020012001290350370310200141d0006a200141106a10950220012802502203410420031b210b4100210402400240024002402001290254420020031b2206422088220ca7220d41014b0d00200d0e020201020b200d2103034020042003410176220020046a22022005200b20024102746a280200491b2104200320006b220341014b0d000b0b4100210902402005200b20044102746a2802002203470d004100210e0c020b2004200520034b6a21040b200141d0006a41186a220f4200370300200141d0006a41106a22104200370300200141d0006a41086a2200420037030020014200370350200141c0006a41086a220341f7fbc400ad4280808080f000841003220241086a29000037030020012002290000370340200210232000200329030037030020012001290340220c3703302001200c370350200341e7acc500ad4280808080a001841003220241086a2900003703002001200229000037034020021023200141306a41086a2003290300220c370300200120012903402211370330200a2011370000200a41086a200c370000200141106a41086a2000290300370300200141106a41106a2010290300370300200141106a41186a200f29030037030020012001290350370310200141d0006a200141106aad4280808080800484100410900102400240200128025022020d00410021030c010b2001280254210f2001200028020036024420012002360240200141086a200141c0006a106e0240024020012802080d00200128020c21030c010b410021030b200f450d00200210230b20032003418094ebdc036e22004180ec94a37c6c6aad4280fd87d1007e2212428094ebdc038021112004200d4b0d020240200d2006a7470d00200d41016a2203200d490d06200d4101742202200320032002491b220341ffffffff03712003470d06200341027422024100480d0602400240200d0d0020021021210b0c010b200b200d41027420021025210b0b200b450d042003ad21060b200b20044102746a220341046a2003200d20046b41027410dd041a200320053602004101210e200642ffffffff0f83200d41016a2204ad220c422086842106200420004180fd87d1006c2011a76a201220114280ec94a37c7e7c4280cab5ee01566a4b21090b200141d0006a41186a22024200370300200141d0006a41106a220d4200370300200141d0006a41086a2203420037030020014200370350200141c0006a41086a220441f7fbc400ad4280808080f000841003220041086a2900003703002001200029000037034020001023200320042903003703002001200129034022113703302001201137035020044198b8c200ad4280808080a002841003220041086a2900003703002001200029000037034020001023200141306a41086a20042903002211370300200120012903402212370330200a2012370000200a41086a2011370000200141106a41086a2003290300370300200141106a41106a200d290300370300200141106a41186a20022903003703002001200129035037031002400240200b0d00200141106aad428080808080048410050c010b2001410036025820014201370350200ca72203200141d0006a105c0240024020030d002001280258210a2001280254210d200128025021030c010b4100200128025822046b2100200b20034102746a21102001280254210d200b210203402002280200210f02400240200d20006a4104490d00200128025021030c010b200441046a22032004490d08200d410174220a2003200a20034b1b220a4100480d0802400240200d0d00200a102121030c010b2001280250200d200a102521030b2003450d072001200a36025420012003360250200a210d0b2001200441046a220a360258200320046a200f3600002000417c6a2100200a21042010200241046a2202470d000b0b2006a72104200141106aad4280808080800484200aad4220862003ad8410020240200d450d00200310230b2004450d00200b10230b200e450d00200141106a41086a2005ad37030020014102360210200141d0006a200141106a109902200141cb006a200141d0006a41086a28020036000020012001290350370043200141dc006a200141c7006a290000370000200141c6a4b9da04360051200141023a005020012001290040370055200141d0006a108b012001410136025020012005360254200141d0006a10ea020b02402007a7450d00200810230b20014180016a240020090f0b4180bbc000102b000b200241041030000b200a41011030000b102a000bbc0503047f017e027f230041e0006b22012400200141003602402001420137033820002802002102410110212103024002400240024002400240024020024101460d002003450d02200142818080801037023c20012003360238200341013a0000200028020421022000410c6a2802002203200141386a105c02402003450d002002200341286c6a210403402002200141386a1071200241206a290300210502400240200128023c2206200128024022036b4108490d00200128023821060c010b200341086a22072003490d09200641017422032007200320074b1b22034100480d090240024020060d002003102121060c010b200128023820062003102521060b2006450d062001200336023c20012006360238200128024021030b2001200341086a360240200620036a20053700002004200241286a2202470d000b0b200041106a200141386a109e030c010b2003450d03200142818080801037023c20012003360238200341023a00002000280204210602400240200128023c2202200128024022036b4104490d00200128023821020c010b200341046a22072003490d06200241017422042007200420074b1b22074100480d060240024020020d002007102121020c010b200128023820022007102521020b2002450d052001200736023c200120023602380b2001200341046a360240200220036a20063600000b200141246a200141386a41086a2802003600002001200129033837001c200141c4006a200141206a290000370000200141cc006a2001290208370200200141d4006a200141086a41086a290200370200200141c28289aa04360039200141023a00382001200129001937003d200141386a108b01024020002802000d00200041086a280200450d00200028020410230b200141e0006a24000f0b410141011030000b200341011030000b410141011030000b200741011030000b102a000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110df0420012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110e0042008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000b130020004104360204200041ecc0c2003602000b3400200041d5fbc40036020420004100360200200041146a4105360200200041106a41d8d5c200360200200041086a42083702000b130020004103360204200041ace6c2003602000b3a01017f02404110102122020d00411041011030000b2002420037000820024280c2d72f370000200042908080808002370204200020023602000b3400200041effbc40036020420004100360200200041146a4103360200200041106a41bce9c200360200200041086a42083702000b5101027f230041106b2202240002404104102122030d00410441011030000b200242043702042002200336020041002002105c200041086a200228020836020020002002290300370200200241106a24000bd72305017f037e087f017e037f230041900d6b220224004202210302400240024002400240024002400240024002400240200129036822044202520d00200241106a20014198016a41b00110dc041a0c010b2002418e026a200141246a41c20010dc041a200241d0026a41086a20014188016a290300370300200241d0026a41106a20014190016a290300370300200220014180016a2903003703d002200141f8006a2903002103200129037021052001280204210620012d00002107200241f00c6a41026a2208200141036a2d00003a000020024188036a41086a2209200141106a29020037030020024188036a41106a220a200141186a29020037030020024188036a41186a220b200141206a280200360200200220012f00013b01f00c200220012902083703880302400240024020074101460d00200241a00c6a41026a20082d00003a0000200241c0076a41086a2009290300370300200241c0076a41106a200a290300370300200241c0076a41186a200b2d00003a0000200220022f01f00c3b01a00c20022002290388033703c0070c010b200241f8086a200641067610bc0220022802f8082107024002402002280280092006413f7122064b0d00410021080c010b200241a00c6a41026a200720064105746a220641026a2d00003a0000200241c8076a2006410f6a290000370300200241d0076a200641176a290000370300200241d8076a2006411f6a2d00003a0000200220062f00003b01a00c200220062900073703c00720062800032106410121080b024020022802fc08450d00200710230b20080d00410121070c010b200241f8086a41026a200241a00c6a41026a2d00003a000020024188036a41086a200241c0076a41086a29030037030020024188036a41106a200241c0076a41106a29030037030020024188036a41186a200241c0076a41186a2d00003a0000200220022f01a00c3b01f808200220022903c00737038803410021070b200241800c6a41026a2208200241f8086a41026a2d00003a000020024188066a41086a220920024188036a41086a29030037030020024188066a41106a220a20024188036a41106a29030037030020024188066a41186a220b20024188036a41186a2d00003a0000200220022f01f8083b01800c20022002290388033703880602402007450d00200041013b0001200041013a0000200041036a41003a000020014198016a10db010c0a0b200241f7026a2009290300370000200241ff026a200a29030037000020024187036a200b2d00003a0000200220022f01800c3b01e802200220063600eb0220022002290388063700ef02200220082d00003a00ea02200241f8086a20014198016a41b00110dc041a200241a80a6a41106a200241d0026a41106a290300370300200241a80a6a41086a200241d0026a41086a290300370300200220022903d0023703a80a41002106200241f00c6a4100108901200241c00b6a41086a200241fb0c6a290000370300200241c00b6a41106a200241830d6a290000370300200241d50b6a200241f00c6a41186a2209290000370000200220022900f30c3703c00b20022f01f00c210c20022d00f20c210d200241a00c6a41186a4200370300200241a00c6a41106a220a4200370300200241a00c6a41086a22074200370300200242003703a00c200241e00c6a41086a220141c4fbc400ad4280808080e000841003220841086a290000370300200220082900003703e00c2008102320072001290300370300200220022903e00c220e3703c00c2002200e3703a00c200141f9bcc000ad4280808080e000841003220841086a290000370300200220082900003703e00c20081023200a20022903e00c220e370300200241f00c6a41086a2007290300370300200241f00c6a41106a200e370300200920012903003703002002200e3703d00c200220022903a00c3703f00c200241086a200241f00c6a4120108f01024020044201520d0020054200510d02200228020c410020022802081b2101417f21062001ad220e20032003200e541b220e200e20037d2005827d220e42ffffffff0f560d00200ea721060b200241e00c6a41086a220141c4fbc400ad4280808080e000841003220741086a290000370300200220072900003703e00c20071023200241c00c6a41086a22082001290300370300200220022903e00c3703c00c200141f0bcc000ad42808080809001841003220741086a290000370300200220072900003703e00c20071023200241d00c6a41086a22072001290300370300200220022903e00c3703d00c200220063602e00c200241f00c6a41186a2209200241e00c6aad4280808080c000841001220141186a290000370300200241f00c6a41106a220a200141106a290000370300200241f00c6a41086a220b200141086a290000370300200220012900003703f00c20011023200241a00c6a41186a220f2009290300370300200241a00c6a41106a2209200a290300370300200241a00c6a41086a220a200b290300370300200220022903f00c3703a00c41c00010212201450d02200120022903c00c370000200141086a2008290300370000200120022903d00c370010200141186a2007290300370000200120022903a00c370020200141286a200a290300370000200141306a2009290300370000200141386a200f2903003700002002200141c00041014100410010b8012002280200210720011023024020074101460d00200241e00b6a41156a200241800c6a41156a290000370000200241e00a6a41086a200241a00b6a41086a290000370300200241e00a6a41106a200241a00b6a41106a290000370300200241e00a6a41156a200241a00b6a41156a290000370000200241c00a6a41156a200241800b6a41156a290000370000200220022900a00b3703e00a200241f8086a10db01200041036a41003a0000200041800a3b0001200041013a00000c0a0b200241f00c6a2006108901200241800c6a41156a2201200241880d6a290000370000200241800c6a41106a2206200241830d6a290000370300200241e00b6a41086a2207200241fb0c6a290000370300200241e00b6a41106a22082006290300370300200241e00b6a41156a22062001290000370000200220022900f30c3703e00b20022f01f00c210120022d00f20c2109200241a00b6a41156a220a200241c00b6a41156a290000370000200241a00b6a41106a220b200241c00b6a41106a290300370300200241a00b6a41086a220f200241c00b6a41086a290300370300200220022903c00b3703a00b200241800b6a41156a22102006290000370000200241800b6a41106a22062008290300370300200241800b6a41086a22082007290300370300200220022903e00b3703800b200241e00a6a41156a2207200a290000370000200241e00a6a41106a220a200b290300370300200241e00a6a41086a220b200f290300370300200220022903a00b3703e00a200241c00a6a41156a220f2010290000370000200241c00a6a41106a22102006290300370300200241c00a6a41086a22062008290300370300200220022903800b3703c00a200241d0056a41156a22082007290000370000200241d0056a41106a2207200a290300370300200241d0056a41086a220a200b290300370300200220022903e00a3703d005200241b0056a41156a220b200f290000370000200241b0056a41106a220f2010290300370300200241b0056a41086a22102006290300370300200220022903c00a3703b005200241f0056a41106a2206200241a80a6a41106a290300370300200241f0056a41086a2211200241a80a6a41086a290300370300200220022903a80a3703f005200241c0076a41046a200241f8086a41b00110dc041a20024188066a200241c0076a41b40110dc041a20024188036a20024188066a41046a41b00110dc041a200241ee046a200c200d41107472220c4110763a0000200241ec046a220d200c3b0100200241c8046a2003370300200241c0046a2005370300200241d0046a220c20022903f005370300200241d8046a2011290300370300200241e0046a22112006290300370300200241ef046a20022903d005370000200241f7046a200a290300370000200241ff046a200729030037000020024184056a2008290000370000200220043703b804200241fc073602e8042002418e056a20093a00002002418c056a220720013b01002002418f056a20022903b00537000020024197056a20102903003700002002419f056a200f290300370000200241a4056a200b290000370000410410212201450d03200242043702c407200220013602c00720024188036a200241c0076a10cb010240024020022903b8044201510d000240024020022802c40720022802c8072201460d0020022802c00721060c010b200141016a22062001490d0a200141017422082006200820064b1b22084100480d0a0240024020010d002008102121060c010b20022802c00720012008102521060b2006450d07200220083602c407200220063602c00720022802c80721010b2002200141016a3602c807200620016a41003a00000c010b20022903c80420022903c0042203420c882204420120044201561b8021040240024020022802c407220620022802c80722016b4102490d0020022802c00721060c010b200141026a22082001490d09200641017422012008200120084b1b22014100480d090240024020060d002001102121060c010b20022802c00720062001102521060b2006450d07200220013602c407200220063602c00720022802c80721010b2002200141026a3602c807200620016a2004a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b00000b2011200241c0076a10af012002200c3602880620024188066a200241c0076a10c30120022802e80421080240024020022802c407220620022802c80722016b4104490d0020022802c00721060c010b200141046a22092001490d08200641017422012009200120094b1b22014100480d080240024020060d002001102121060c010b20022802c00720062001102521060b2006450d07200220013602c407200220063602c00720022802c80721010b2002200141046a3602c807200620016a20083600002002200241c0076a36028806200d20024188066a106b2002200241c0076a36028806200720024188066a106b20022802c007210120022802c40721070240024020022802c80722064180024b0d002002418e026a20012006200241e8026a10f30221060c010b200241f00c6a41186a22082006ad4220862001ad841001220641186a290000370300200241f00c6a41106a2209200641106a290000370300200241f00c6a41086a220a200641086a290000370300200220062900003703f00c20061023200241a00c6a41186a2008290300370300200241a00c6a41106a2009290300370300200241a00c6a41086a200a290300370300200220022903f00c3703a00c2002418e026a200241a00c6a4120200241e8026a10f30221060b02402007450d00200110230b2006450d08200241e8016a41086a200241e8026a41086a290300370300200241e8016a41106a200241e8026a41106a290300370300200241e8016a41186a200241e8026a41186a290300370300200241c0016a41086a200241c8046a290300370300200241c0016a41106a200241d0046a290300370300200241c0016a41186a200241d8046a290300370300200241e0016a200241e0046a290300370300200220022903e8023703e8012002200241c0046a2903003703c00120022903b8042103200241106a20024188036a41b00110dc041a0b200041086a20022903e801370300200041286a2003370300200041306a20022903c001370300200041206a200241e8016a41186a290300370300200041186a200241e8016a41106a290300370300200041106a200241e8016a41086a290300370300200041386a200241c0016a41086a290300370300200041c0006a200241c0016a41106a290300370300200041c8006a200241c0016a41186a290300370300200041d0006a200241c0016a41206a290300370300200041d8006a200241106a41b00110dc041a200041003a0000200241900d6a24000f0b41e8b8c600102b000b41c00041011030000b410441011030000b200841011030000b200141011030000b200141011030000b102a000b20004180083b0001200041013a0000200041036a41003a000020024188036a10db010b200241900d6a24000b9e0501037f230041b0016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a100d41014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a100941014621000c010b20044190016a41186a22052002ad4220862001ad841001220141186a29000037030020044190016a41106a2202200141106a29000037030020044190016a41086a2206200141086a290000370300200420012900003703900120011023200441186a2005290300370300200441106a2002290300370300200441086a2006290300370300200420042903900137030041012101200441206a200041016a200410bd034100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a290000370300200420042900213703482005200441c8006aad42808080809004841001220041186a2900003703002002200041106a2900003703002006200041086a290000370300200420002900003703900120001023200441f0006a41186a2005290300370300200441f0006a41106a2002290300370300200441f0006a41086a200629030037030020042004290390013703700240200441f0006a2003460d00200441f0006a2003412010de044521010b200121000b200441b0016a240020000b13002000410636020420004198f4c2003602000b34002000419da0c20036020420004100360200200041146a4106360200200041106a41c88dc300360200200041086a42103702000b130020004105360204200041c496c3003602000b3101017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241b0093600000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241073600000b3001017f02404104102122020d00410441011030000b20004284808080c000370204200020023602002002410d3600000b3c01017f02404110102122020d00411041011030000b2002420037000820024280e8eda1ba01370000200042908080808002370204200020023602000bb90202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042001103921000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000b20024180016a240020000f0b2003418001103e000b2003418001103e000bfb0505027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d02200141a085c0004102200241206a20006a41800120006b103c21000c060b41272100200241186a21060340200241106a200520044290ce00420010e2042002200229031022072006290300220842f0b17f427f10e104200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441ca82c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441ca82c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d01200141a085c0004102200241206a20006a41800120006b103c21000c040b2000418001103e000b2000418001103e000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441ca82c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441ca82c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b200141c4b8c6004100200241206a20006a412720006b103c21000b200241a0016a240020000bba0201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff01832001103921000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141a085c0004102200220006a4180016a410020006b103c21000b20024180016a240020000f0b2004418001103e000b2004418001103e000b940705017f047e087f057e017f23004180026b22022400200241c0006a200110eb02024002402002290340a7450d00200041003602200c010b200241c0006a41106a290300210320022903482104200241286a200110eb0202402002290328a7450d00200041003602200c010b200241286a41106a290300210520022903302106200241206a2001106e0240024002400240024020022802200d00200128020441306e220741306c2208417f4c0d02200228022421090240024020080d004108210a0c010b20081021220a450d040b02402009450d004100210b0340200241003a00f801200b220c41016a210b2001280204417f6a21084100210d024002400240024003402008417f460d01200241d8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a00f8012008417f6a2108200e210d200e4120470d000b200241b8016a41186a2208200241d8016a41186a290300370300200241b8016a41106a220d200241d8016a41106a290300370300200241b8016a41086a220e200241d8016a41086a290300370300200220022903d8013703b801200241086a200110eb022002290308a70d01200241086a41106a290300210f20022903102110200241f8006a41086a200e2903002211370300200241f8006a41106a200d2903002212370300200241f8006a41186a20082903002213370300200241d8006a41086a220d2011370300200241d8006a41106a220e2012370300200241d8006a41186a22142013370300200220022903b8012211370378200220113703582007200c470d030240200c4101742208200b2008200b4b1b2207ad42307e2211422088a70d002011a7220841004e0d030b102a000b200d41ff0171450d00200241003a00f8010b200241f8006a41086a20024198016a41086a2903003703002007450d04200a10230c040b02400240200c0d0020081021210a0c010b200a200c41306c20081025210a0b200a450d070b200a200c41306c6a2208200f3703082008201037030020082002290358370310200841186a200d290300370300200841206a200e290300370300200841286a2014290300370300200b2009470d000b0b200a0d010b200041003602200c040b20002004370300200020073602242000200a3602202000200637031020002003370308200041286a2009360200200041186a20053703000c030b102f000b200841081030000b200841081030000b20024180026a24000ba90c010d7f230041d0006b22022400200241306a41086a220341f7fbc400ad4280808080f000841003220441086a2900003703002002200429000037033020041023200241206a41086a20032903003703002002200229033037032020034184b9c200ad42808080808001841003220441086a2900003703002002200429000037033020041023200241086a200329030037030020022002290330370300200241306a4181adc200410d10d702024002400240024002400240024002402002280238220541206a2206417f4c0d00200228023021040240024002400240024002402006450d00200610212203450d022006410f4d0d01200621070c050b200641017422034110200341104b1b2207102121030c030b200641017422074110200741104b1b220741004e0d010c0b0b200641011030000b200320062007102521030b20030d00200741011030000b20032002290320370000200341086a200241206a41086a2903003700000240024002400240024020074170714110470d00200741017422084120200841204b1b22084100480d0c20032007200810252203450d01200821070b20032002290300370010200341186a200241086a2903003700000240200741606a20054f0d00200541206a22082005490d0c200741017422092008200920084b1b22084100480d0c20032007200810252203450d02200821070b200341206a2004200510dc041a02402002280234450d00200410230b200141086a280200220a41046a2208417f4c0d0420080d02410121040c030b200841011030000b200841011030000b200810212204450d020b20024100360238200220083602342002200436023020012d00002109024020080d00410110212204450d0320024101360234200220043602300b20024101360238200420093a000020012d0001210b02402002280234220920022802382208470d00200841016a22092008490d082008410174220c2009200c20094b1b22094100480d080240024020080d002009102121040c010b200420082009102521040b2004450d0420022009360234200220043602300b2002200841016a220c360238200420086a200b3a000020012d0002210d024002402009200c460d002009210b0c010b200941016a220b2009490d082009410174220e200b200e200b4b1b220b4100480d080240024020090d00200b102121040c010b20042009200b102521040b2004450d052002200b360234200220043602300b2002200841026a22093602382004200c6a200d3a000020012d0003210c0240200b2009470d00200b41016a220d200b490d08200b410174220e200d200e200d4b1b220d4100480d0802400240200b0d00200d102121040c010b2004200b200d102521040b2004450d062002200d360234200220043602300b2002200841036a360238200420096a200c3a000020012802042109200a200241306a105c0240024020022802342201200228023822046b200a490d00200228023021080c010b2004200a6a22082004490d082001410174220b2008200b20084b1b220b4100480d080240024020010d00200b102121080c010b20022802302001200b102521080b2008450d072002200b36023420022008360230200b21010b200820046a2009200a10dc041a200241306a41186a22092004200a6aad4220862008ad841001220441186a290000370300200241306a41106a220a200441106a290000370300200241306a41086a220b200441086a2900003703002002200429000037033020041023200241186a2009290300370300200241106a200a290300370300200241086a200b2903003703002002200229033037030002402001450d00200810230b02400240200720066b411f4b0d00200641206a22042006490d09200741017422082004200820044b1b22044100480d0920032007200410252203450d01200421070b200320066a22042002290300370000200441186a200241186a290300370000200441106a200241106a290300370000200441086a200241086a2903003700002000200541c0006a3602082000200736020420002003360200200241d0006a24000f0b200441011030000b102f000b200841011030000b410141011030000b200941011030000b200b41011030000b200d41011030000b200b41011030000b102a000b4d01017f230041206b22002400200041146a410136020020004201370204200041d09dc6003602002000410436021c200041849ec6003602182000200041186a360210200041f8abc2001038000bc20d08027f017e027f017e047f027e017f037e230041d0016b22062400200641e0006a41086a220741d5fbc400ad428080808080018422081003220941086a2900003703002006200929000037036020091023200641c0006a41086a220a200729030037030020062006290360370340200741e3a0c200ad4280808080b00184220b1003220941086a2900003703002006200929000037036020091023200641d0006a41086a220c200729030037030020062006290360370350200641e0006a200110ac01024002400240024041c00010212209450d00200920062903403700002009200629035037001020092006290060370020200941086a200a290300370000200941186a200c2903003700004128210d200941286a2007290000370000200941306a200641e0006a41106a220e290000370000200941386a200641e0006a41186a220f290000370000200641286a200941c000108902200641286a41106a2903002110200629033021112006280228211220091023200720081003220941086a2900003703002006200929000037036020091023200a2007290300370300200620062903603703402007200b1003220941086a2900003703002006200929000037036020091023200c200729030037030020062006290360370350200641e0006a200210ac0141c00010212209450d01200920062903403700002009200629035037001020092006290060370020200941086a200641c0006a41086a290300370000200941186a200641d0006a41086a290300370000200941286a200641e0006a41086a290000370000200941306a200e290000370000200941386a200f290000370000200641106a200941c000108902200641106a41106a2903002113200629031821142006280210210a2009102341c49ac300210920034280c2d72f7c2208200354220720042007ad7c220b200454200820035a1b0d0302402011420020121b221120087d22152011562010420020121b2210200b7d2011200854ad7d220820105620082010511b4101470d0041ec9ac3002109411d210d0c040b20134200200a1b210b20144200200a1b21100240200342ffc7afa0255620044200522004501b0d002010200b8450450d0041b69bc3002109411f210d0c040b200641086a200141022015200810de02024020062802082209450d00200628020c210d0c040b0240201020037c22112010542209200b20047c2009ad7c2210200b542010200b511b450d0041899bc3002109412d210d0c040b41002109024020012002470d000c040b024020012002412010de040d000c040b0240201542ffc7afa0255620084200522008501b0d0020050d0041d59bc3002109411b210d0c040b20012015200810dc02200641e0006a41086a220941d5fbc400ad42808080808001841003220741086a2900003703002006200729000037036020071023200641c0006a41086a220a200929030037030020062006290360370340200941e3a0c200ad4280808080b001841003220741086a2900003703002006200729000037036020071023200641d0006a41086a220c200929030037030020062006290360370350200641e0006a200210ac0141c00010212207450d02200720062903403700002007200629035037001020072006290060370020200741086a200a290300370000200741186a200c290300370000200741286a2009290000370000200741306a200641e0006a41106a290000370000200741386a200641e0006a41186a290000370000410021092006200741c00041014100410010b8012006280200210a200710230240200a4101460d00200210db02200641e0006a41386a2010370300200641e0006a41306a2011370300200641e0006a41086a41003a0000200641e9006a2002290000370000200641f1006a200241086a290000370000200641f9006a200241106a29000037000020064181016a200241186a290000370000200641023a0060200641e0006a108e010b20022011201010dc024280c2d72f420010cb02200641c8016a4200370300200641c0016a4280c2d72f370300200641b8016a2004370300200641b0016a2003370300200641e0006a41086a41023a0000200641e9006a2001290000370000200641f1006a200141086a290000370000200641f9006a200141106a29000037000020064181016a200141186a29000037000020064189016a200229000037000020064191016a200241086a29000037000020064199016a200241106a290000370000200641a1016a200241186a290000370000200641023a0060200641e0006a108e010c030b41c00041011030000b41c00041011030000b41c00041011030000b2000200d36020420002009360200200641d0016a24000b997908017f027e037f017e117f027e0f7f017e230041f0046b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e070001020304050a000b200341d4026a4101360200200342013702c402200341d09dc6003602c002200341043602e401200341849ec6003602e0012003200341e0016a3602d002200341c0026a41cc9cc3001038000b200141186a2903002104200141106a29030021052001410c6a2802002106200141086a2802002107200128020421082002411a6a2901002109200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241046a2d0000211741022101200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002101200241066a2f01002119200241086a2d000021024100211a0c010b4101211a41002102410021190b201941ffff0371410874200241187472200141ff01717221010240201a450d00410f211941aab0c0002102024002400240024020010e050001020321000b20154108742016722014411874722102201241087420137220114118747221190c200b410e211941aabac60021020c1f0b411321194197b0c00021020c1e0b411121194186b0c00021020c1d0b200320093703b0012003200a3a00af012003200b3a00ae012003200c3b01ac012003200d3a00ab012003200e3a00aa012003200f3b01a801200320103a00a701200320113a00a601200320123b01a401200320133a00a301200320143a00a201200320153b01a001200320163a009f012003200136009b01200320173a009a01200320183b019801200341c0026a41186a4200370300200341c0026a41106a22024200370300200341c0026a41086a22194200370300200342003703c002200341c0016a41086a2201419da0c200ad4280808080800284221b1003221a41086a2900003703002003201a2900003703c001201a102320192001290300370300200320032903c00122093703b002200320093703c002200141e4acc200ad4280808080a001841003221a41086a2900003703002003201a2900003703c001201a1023200220032903c0012209370300200341e0036a41086a2019290300370300200341e0036a41106a22132009370300200341e0036a41186a2001290300370300200320093703e001200320032903c0023703e003200341c0026a200341e0036aad4280808080800484220910041090014100211141002112024020032802c0022201450d0020032802c40221192003200341c8026a2802003602e401200320013602e001200341286a200341e0016a106e0240024020032802280d00200328022c21120c010b410021120b2019450d00200110230b200341c0026a41186a2214420037030020024200370300200341c0026a41086a22194200370300200342003703c002200341c0016a41086a2201201b1003221a41086a2900003703002003201a2900003703c001201a102320192001290300370300200320032903c001221b3703b0022003201b3703c00220014183e0c400ad4280808080f000841003221a41086a2900003703002003201a2900003703c001201a1023200341e0016a41086a2001290300221b370300200320032903c001221c3703e0012002201c370000200241086a201b370000200341e0036a41086a201929030037030020132002290300370300200341e0036a41186a2014290300370300200320032903c0023703e003200341c0026a20091004109001024020032802c0022202450d0020032802c4022101200320192802003602e401200320023602e001200341206a200341e0016a106e0240024020032802200d00200328022421110c010b410021110b2001450d00200210230b0240201120126a22020d0041dc9cc3002102412f21190c1d0b0240200620024d0d00418b9dc3002102412021190c1d0b41ab9dc300210241252119200641104b0d1c024020060d0041d09dc30021020c1d0b024020054281c8afa0255441002004501b450d0041f59dc3002102413021190c1d0b024020034198016a1083030d00200341186a20034198016a4280e8eda1ba01420010f1012003280218450d0041a59ec3002102411d21190c1d0b200341086a20034198016a10e301200342f0d0c9abc6add9b1f4003703b801200341b8016a20034198016a2003290308220920052009200554200341086a41086a290300220920045420092004511b22021b22052009200420021b2209417f411e10f701200341c0016a41086a2201419da0c200ad428080808080028422041003220241086a290000370300200320022900003703c00120021023200341b0026a41086a22192001290300370300200320032903c0013703b002200141a3a4c200ad4280808080f000841003220241086a290000370300200320022900003703c00120021023200341e0016a41086a221a2001290300370300200320032903c0013703e001200341c0026a20034198016a10ac0141c00010212202450d0a200220032903b002370000200241086a2019290300370000200220032903e001370010200241186a201a290300370000200220032903c002370020200241286a200341c0026a41086a290300370000200241306a200341d0026a2211290300370000200241386a200341c0026a41186a2212290300370000200320093703c802200320053703c0022002ad4280808080800884200341c0026aad4280808080800284100220021023200120041003220241086a290000370300200320022900003703c0012002102320192001290300370300200320032903c0013703b002200141ada0c200ad4280808080f000841003220241086a290000370300200320022900003703c00120021023201a2001290300370300200320032903c0013703e001200341c0026a20034198016a10ac0141c00010212201450d0b200120032903b002370000200141086a200341b0026a41086a290300370000200120032903e001370010200141186a200341e0016a41086a290300370000200120032903c002370020200141286a200341c0026a41086a290300370000200141306a2011290300370000200141386a2012290300370000200341e0016a200141c00010a2010240024020032d00ec0122024102460d0020034190046a41086a200341f5016a29000037030020034190046a41106a200341fd016a29000037030020034190046a41186a20034185026a290000370300200341c0016a41086a20034196026a290100370300200341c0016a41106a2003419e026a290100370300200341c0016a41186a200341a6026a2901003703002003200341ed016a2900003703900420032003418e026a2901003703c0012003418d026a2d0000211920032802e401450d0120032802e00110230c010b200320034198016a3602b403200341c0026a10c102200341b8036a20032802c002220220032802c802108a01024020032802c402450d00200210230b0240024020032d00b8030d00200341c0026a10c10220032802c0022102200320032802c80236029404200320023602900420034198016a20034190046a10f501024020032802c402450d00200210230b410021190c010b200341f8036a200341d1036a290000370300200341e0036a41106a200341c9036a290000370300200341e0036a41086a200341c1036a290000370300200320032900b9033703e00320034180046a200341e0036a10a101200341c0026a200328028004221a200328028804221110a201024020032d00cc024102470d00200341003602b802200342013703b002200341c0016a41146a410f360200200341c0016a410c6a410c360200200341103602dc042003419da0c2003602d8042003410c3602c401200341073602e404200341ada0c2003602e004200320034180046a3602d0012003200341e0046a3602c8012003200341d8046a3602c0012003200341b0026a3602ec0420034190046a41146a41033602002003420337029404200341e4ddc000360290042003200341c0016a3602a004200341ec046a41b8a3c50020034190046a102e1a20033502b80242208620033502b00284100820032802b403211920034190046a10c102200328029004210220032003280298043602c401200320023602c0012019200341c0016a10f5010240200328029404450d00200210230b024020032802b402450d0020032802b00210230b0240200328028404450d0020032802800410230b410021190c010b20034190046a200341c0026a410c6a41c20010dc041a20032d00b1042119200341c0016a41086a200341c0026a41086a2802002202360200200341c0016a41106a200341b2046a410020194101461b360200200320032903c00222093703c0012003200341b4036a3602cc01200341003602b802200342013703b0022002200341b0026a105c200341c0016a410c6a21132009a7211202402002450d00200241057421192012210203402002200341b0026a1071200241206a2102201941606a22190d000b0b2013200341b0026a10aa0120032802b40221022011ad422086201aad8420033502b80242208620032802b0022219ad84100202402002450d00201910230b024020032802c401450d00201210230b0240200328028404450d0020032802800410230b20032802b4032119200341c0026a10c10220032802c0022102200320032802c802360294042003200236029004201920034190046a10f501024020032802c402450d00200210230b200341c0016a41086a200341e0036a41086a290300370300200341c0016a41106a200341e0036a41106a290300370300200341c0016a41186a200341e0036a41186a290300370300200320032903e0033703c001410121190b410021020b200341cd026a200329039004370000200341ed026a20193a0000200341ee026a20032903c001370100200341d5026a20034190046a41086a290300370000200341dd026a20034190046a41106a290300370000200341e5026a20034190046a41186a290300370000200341f6026a200341c0016a41086a290300370100200341fe026a200341c0016a41106a29030037010020034186036a200341c0016a41186a290300370100200320023a00cc02200320063602c802200320073602c402200320083602c002200341003602e801200342013703e0012006200341e0016a105c20064105742102200341cc026a211903402008200341e0016a1071200841206a2108200241606a22020d000b2019200341e0016a10a90120032802e40121022001ad428080808080088420033502e80142208620032802e0012208ad84100202402002450d00200810230b20011023024020032802c402450d0020032802c00210230b410021020c1d0b2002411a6a2901002109200241196a2d00002119200241186a2d00002107200241166a2f0100211a200241156a2d00002111200241146a2d00002112200241126a2f01002113200241116a2d00002114200241106a2d000021152002410e6a2f010021162002410d6a2d000021062002410c6a2d0000210a2002410a6a2f0100210b200241096a2d0000210c200241046a2d0000210d41022108200241026a2f0100210e0240024020022d00000d0020022d00014101470d00200241056a2d00002108200241066a2f0100210f200241086a2d00002102410021100c010b41012110410021024100210f0b200320093703f803200320193a00f703200320073a00f6032003201a3b01f403200320113a00f303200320123a00f203200320133b01f003200320143a00ef03200320153a00ee03200320163b01ec03200320063a00eb032003200a3a00ea032003200b3b01e8032003200c3a00e7032003200d3a00e2032003200e3b01e0032003200f41ffff0371410874200241187472200841ff01717222083600e30302402010450d00410f211941aab0c0002102024020080e05000506071c000b20032800e703210220032800eb0321190c1b0b200341c0026a41186a200341e0036a41186a290300370300200341c0026a41106a200341e0036a41106a290300370300200341c0026a41086a200341e0036a41086a290300370300200320032903e0033703c002200341c0026a108303450d08200341c0026a4101108403410021020c1a0b2001411d6a29000021092001411c6a2d00002111200141196a2f00002112200141186a2d00002113200141156a2f00002114200141146a2d00002115200141116a2f00002116200141106a2d000021062001410d6a2f0000210a2001410c6a2d0000210b200141086a280200211920012d001b210c20012d0017210d20012d0013210e20012d000f210f20012d0007211020012f0005211720012d0004211d2002411a6a2901002104200241196a2d0000211e200241186a2d0000211f200241166a2f01002120200241156a2d00002121200241146a2d00002122200241126a2f01002123200241116a2d00002124200241106a2d000021182002410e6a2f010021252002410d6a2d000021262002410c6a2d000021272002410a6a2f01002128200241096a2d00002129200241046a2d0000212a41022108200241026a2f0100212b0240024020022d00000d0020022d00014101470d00200241056a2d00002108200241066a2f01002107200241086a2d000021024100211a0c010b4101211a41002102410021070b200741ffff0371410874200241187472200841ff01717221080240201a450d00410f211941aab0c0002102024020080e05000405061b000b20284108742029722027411874722102202541087420267220184118747221190c1a0b200320043703d0032003201e3a00cf032003201f3a00ce03200320203b01cc03200320213a00cb03200320223a00ca03200320233b01c803200320243a00c703200320183a00c603200320253b01c403200320263a00c303200320273a00c203200320283b01c003200320293a00bf03200320083600bb032003202a3a00ba032003202b3b01b8030240201d41ff01714101470d00200341c0026a201941067610bc0220032802c00221080240024020032802c8022019413f7122024b0d00410021020c010b200820024105746a2202290018210920022d0017211120022d0016210c20022f0014211220022d0013211320022d0012210d20022f0010211420022d000f211520022d000e210e20022f000c211620022d000b210620022d000a210f20022f0008210a20022d0007210b2002280003211920022d0002211020022f00002117410121020b024020032802c402450d00200810230b2002450d190b200320093703a804200320113a00a7042003200c3a00a604200320123b01a404200320133a00a3042003200d3a00a204200320143b01a004200320153a009f042003200e3a009e04200320163b019c04200320063a009b042003200f3a009a042003200a3b0198042003200b3a0097042003201936009304200320103a009204200320173b0190040240200341b8036a20034190046a412010de040d0041c29ec3002102411221190c1a0b0240200341b8036a1083030d0041d49ec3002102411821190c1a0b02400240024020034190046a108303450d00200341c0016a41086a2212419da0c200ad4280808080800284221b1003220241086a290000370300200320022900003703c00120021023200341b0026a41086a22082012290300370300200320032903c0013703b002201241ada0c200ad4280808080f000841003220241086a290000370300200320022900003703c00120021023200341e0016a41086a220a2012290300370300200320032903c0013703e001200341e0036a20034190046a10ac0141c00010212202450d0d200220032903b002370000200241086a2008290300370000200220032903e001370010200241186a200a290300370000200220032903e003370020200241286a200341e0036a41086a220b290300370000200241306a200341e0036a41106a290300370000200241386a200341e0036a41186a290300370000200341c0026a200241c00010bb012002102320032802c0022202410120021b221720032902c402420020021b221c422088a74105746a2110200341c0026a41106a21132017211a0340201a2010460d02200341c0026a41186a2215420037030020134200370300200341c0026a41086a22144200370300200342003703c0022012201b1003220241086a290000370300200320022900003703c0012002102320142012290300370300200320032903c0013703c00220124183e0c400ad4280808080f000841003220241086a290000370300200320022900003703c00120021023200b20122903002209370300200320032903c00122043703e00320132004370000201341086a220d2009370000200a2014290300370300200341e0016a41106a220e2013290300370300200341e0016a41186a220f2015290300370300200320032903c0023703e001200341c0026a200341e0016a10c002410021190240024020032902c402420020032802c00222021b2209422088a7220841306c22070d0041012111410021160c010b200741306d221641ffffff3f712016470d1c201641057422064100480d1c200610212211450d100b2009a7210c2002410820021b210602402008450d004100211920112102200621080340200841086a2900002109200841106a290000210420082900002105200241186a200841186a290000370000200241106a2004370000200241086a200937000020022005370000201941016a2119200241206a2102200841306a2108200741506a22070d000b0b0240200c450d00200610230b4101210841002102024002400240201941014b0d0020190e020201020b03402019410176220820026a22072002201120074105746a201a412010de044101481b2102201920086b221941014b0d000b0b201120024105746a201a412010de0441004721080b02402016450d00201110230b02402008450d00201542003703002013420037030020144200370300200342003703c0022012201b1003220241086a290000370300200320022900003703c0012002102320142012290300370300200320032903c0013703c002201241e4acc200ad4280808080a001841003220241086a290000370300200320022900003703c00120021023200b20122903002209370300200320032903c00122043703e00320132004370000200d2009370000200a2014290300370300200e2013290300370300200f2015290300370300200320032903c0023703e001200341c0026a200341e0016a412010bb0120032802c0022208410120081b21114100210202400240024020032902c402420020081b2209422088a7220841014b0d0020080e020201020b03402008410176221920026a22072002201120074105746a201a412010de044101481b2102200820196b220841014b0d000b0b201120024105746a201a412010de044521020b02402009a7450d00201110230b201a41206a211a2002450d010b0b201ca7450d00201710230b200341f0006a200341b8036a4280e8eda1ba01420010c8022003290370200341f8006a29030010c90241002108200341b8036a21190c010b0240201ca7450d00201710230b200341e0006a200341b8036a10e30102402003290360200341e0006a41086a2903008450450d0041b4a0c2002102412221190c1b0b200341c0016a41086a220241d5fbc400ad428080808080018422091003220841086a290000370300200320082900003703c00120081023200341e0036a41086a2002290300370300200320032903c0013703e003200241eea0c200ad4280808080f001841003220841086a290000370300200320082900003703c00120081023200341e0016a41086a2002290300370300200320032903c0013703e001200341c0026a20034190046a10ac0141c00010212202450d0d200220032903e003370000200241086a200341e0036a41086a221a290300370000200220032903e001370010200241186a200341e0016a41086a2208290300370000200220032903c002370020200241286a200341c0026a41086a290300370000200241306a200341c0026a41106a290300370000200241386a200341c0026a41186a290300370000200341c8006a200241c000108902200341c8006a41106a2903002104200329035021052003280248211920021023200341c0016a41086a220220091003220741086a290000370300200320072900003703c00120071023200341b0026a41086a22112002290300370300200320032903c0013703b002200241e3a0c200ad4280808080b001841003220741086a290000370300200320072900003703c0012007102320082002290300370300200320032903c0013703e001200341e0036a200341b8036a10ac0141c00010212202450d0e200220032903b002370000200241086a2011290300370000200220032903e001370010200241186a2008290300370000200220032903e003370020200241286a201a290300370000200241306a200341e0036a41106a290300370000200241386a200341e0036a41186a290300370000200341306a200241c000108902200341306a41106a290300211b200329033821092003280230210820021023200341b8036a2009420020081b221c2005420020191b22094280e8eda1ba0120094280e8eda1ba015441002004420020191b2204501b22021b22057c222c201b420020081b2004420020021b221b7c202c201c54ad7c10dc0220034190046a200920057d2004201b7d2009200554ad7d10ca024101210820034190046a21190b4100210220194100108403200341cd026a20034190046a41086a290300370000200341d5026a20034190046a41106a290300370000200341dd026a20034190046a41186a290300370000200341e5026a20032903b803370000200341ed026a200341b8036a41086a290300370000200341f5026a200341b8036a41106a290300370000200341fd026a200341b8036a41186a29030037000020034185036a20083a0000200341043a00c4022003410b3a00c00220032003290390043700c502200341c0026a108e010c190b2002411a6a2901002109200241196a2d00002116200241186a2d00002106200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000211a2002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241046a2d0000210f41022108200241026a2f010021100240024020022d00000d0020022d00014101470d00200241056a2d00002108200241066a2f01002119200241086a2d00002102410021070c010b4101210741002119410021020b201941ffff0371410874200841ff017172200241187472210802402007450d00410f211941aab0c0002102024020080e05000304051a000b201441087420157220134118747221022011410874201272201a4118747221190c190b200320093703a804200320163a00a704200320063a00a6042003200a3b01a4042003200b3a00a3042003200c3a00a2042003200d3b01a0042003200e3a009f042003201a3a009e04200320113b019c04200320123a009b04200320133a009a04200320143b019804200320153a00970420032008360093042003200f3a009204200320103b019004200341c0026a41186a4200370300200341c0026a41106a22114200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c0013703c002200241e4acc200ad4280808080a001841003221941086a290000370300200320192900003703c00120191023201120032903c0012209370300200341e0016a41086a2008290300370300200341e0016a41106a2009370300200341e0016a41186a2002290300370300200320093703e003200320032903c0023703e001200341c0026a200341e0016a412010bb0120032802c0022208410120081b211a4100211241002102024020032902c402420020081b2209422088a7220841014b0d004100211320080e021615160b03402008410176221920026a22072002201a20074105746a20034190046a412010de044101481b2102200820196b220841014b0d000c150b0b2002411a6a2901002109200241196a2d00002116200241186a2d00002106200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000211a2002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241046a2d0000210f41022108200241026a2f010021100240024020022d00000d0020022d00014101470d00200241056a2d00002108200241066a2f01002119200241086a2d00002102410021070c010b4101210741002119410021020b201941ffff0371410874200841ff01717220024118747221082007450d03410f211941aab0c0002102024020080e050001020318000b201441087420157220134118747221022011410874201272201a4118747221190c170b410e211941aabac60021020c160b411321194197b0c00021020c150b411121194186b0c00021020c140b200320093703a804200320163a00a704200320063a00a6042003200a3b01a4042003200b3a00a3042003200c3a00a2042003200d3b01a0042003200e3a009f042003201a3a009e04200320113b019c04200320123a009b04200320133a009a04200320143b019804200320153a00970420032008360093042003200f3a009204200320103b019004200341e0016a20034190046a108503024002400240024002400240024020032d00e001450d00200341c0026a41186a4200370300200341c0026a41106a22114200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c0013703c002200241eeacc200ad42808080809001841003221941086a290000370300200320192900003703c00120191023201120032903c0012209370300200341e0016a41086a2008290300370300200341e0016a41106a2009370300200341e0016a41186a2002290300370300200320093703e003200320032903c0023703e001200341c0026a200341e0016a10c00220032802c0022208410820081b211a4100210202400240024020032902c402420020081b2205422088a7221241014b0d0020120e020201020b2012210803402008410176221920026a22072002201a200741306c6a20034190046a412010de044101481b2102200820196b220841014b0d000b0b201a200241306c6a20034190046a412010de04450d050b200341c0026a41186a22074200370300200341c0026a41106a22124200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c0013703c002200241e4acc200ad4280808080a001841003221941086a290000370300200320192900003703c00120191023200341e0036a41086a20022903002209370300200320032903c00122043703e00320112004370000201141086a2009370000200341e0016a41086a2008290300370300200341e0016a41106a2012290300370300200341e0016a41186a2007290300370300200320032903c0023703e001200341c0026a200341e0016a412010bb0120032802c0022202410120021b211120032902c402420020021b2209422088a7221241014b0d014100210220120e020302030b20034190046a4280a094a58d1d420010de01200341cd026a20034198046a290300370000200341d5026a200341a0046a290300370000200341dd026a200341a8046a290300370000200341033a00c4022003410b3a00c00220032003290390043700c502200341c0026a108e01410021020c140b410021022012210803402008410176221920026a22072002201120074105746a20034190046a412010de044101481b2102200820196b220841014b0d000b0b201120024105746a20034190046a412010de04450d030b41f09fc30021022009a70d010c100b200220124f0d0a201a200241306c6a2208200841306a2002417f7320126a41306c10dd041a20034190046a4280a094a58d1d420010de01200341e0036a41186a4200370300200341e0036a41106a22074200370300200341e0036a41086a22084200370300200342003703e003200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c00122093703b002200320093703e003200241eeacc200ad42808080809001841003221941086a290000370300200320192900003703c00120191023200720032903c0012209370300200341c0026a41086a2008290300370300200341c0026a41106a2009370300200341c0026a41186a2002290300370300200320093703e001200320032903e0033703c002200341003602e801200342013703e0012012417f6a2202200341e0016a105c0240024020020d0020032802e801210820032802e401210720032802e00121190c010b201a200241306c6a2112201a210203402002200341e0016a1071200241286a2903002109200241206a29030021040240024020032802e401220720032802e80122086b4110490d0020032802e00121190c010b200841106a22192008490d16200741017422082019200820194b1b22114100480d160240024020070d002011102121190c010b20032802e00120072011102521190b2019450d0e200320113602e401200320193602e00120032802e8012108201121070b201920086a22112009370008201120043700002003200841106a22083602e8012012200241306a2202470d000b0b200341c0026aad42808080808004842008ad4220862019ad84100202402007450d00201910230b410021022005a7450d10201a1023412e21190c150b201110230c0e0b200220124f0d0a201120024105746a2208200841206a2002417f7320126a41057410dd041a20034190046a4280a094a58d1d420010de01200341e0036a41186a4200370300200341e0036a41106a22074200370300200341e0036a41086a22084200370300200342003703e003200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c00122043703b002200320043703e003200241e4acc200ad4280808080a001841003221941086a290000370300200320192900003703c00120191023200720032903c0012204370300200341c0026a41086a2008290300370300200341c0026a41106a2004370300200341c0026a41186a2002290300370300200320043703e001200320032903e0033703c002200341003602e801200342013703e0012012417f6a2202200341e0016a105c02402002450d00201241057441606a21082011210203402002200341e0016a1071200241206a2102200841606a22080d000b0b20032802e4012102200341c0026aad428080808080048420033502e80142208620032802e0012208ad84100202402002450d00200810230b410021022009a7450d0d201110230c0d0b024020022d000120022d000072450d004186b0c0002102411121190c130b200141086a2802002108024020012d00044101460d00200141106a2d00002119200141146a2d00002107200141186a2d0000211a2001411c6a2d0000211120012f0005210220012d0007211220012d000c211320012f000d211420012d000f211520012f0011211620012d0013210620012f0015210a20012d0017210b20012f0019210c20012d001b210d200129001d21090c0b0b200341c0026a200841067610bc0220032802c002210e0240024020032802c8022008413f7122024b0d004100210f0c010b200e20024105746a2202290018210920022d0017211120022d0016210d20022f0014210c20022d0013211a20022d0012210b20022f0010210a20022d000f210720022d000e210620022f000c211620022d000b211920022d000a211520022f0008211420022d000721132002280003210820022d0002211220022f000021024101210f0b024020032802c402450d00200e10230b200f0d0a4101210e0c0b0b419ea0c3002102410f21190c110b41c00041011030000b41c00041011030000b41c00041011030000b200641011030000b41c00041011030000b41c00041011030000b41b8bbc000102b000b201141011030000b41b8bbc000102b000b4100210e0b200320093701f803200320113a00f7032003200d3a00f6032003200c3b01f4032003201a3a00f3032003200b3a00f2032003200a3b01f003200320073a00ef03200320063a00ee03200320163b01ec03200320193a00eb03200320153a00ea03200320143b01e803200320133a00e703200320083600e303200320123a00e203200320023b01e003200e0d05200341e0016a41186a2202200341e0036a41186a290100370300200341e0016a41106a2208200341e0036a41106a290100370300200341e0016a41086a2219200341e0036a41086a290100370300200320032901e0033703e00120034190046a200341e0016a108503024020032d0090044101460d0020032d009104210720034188016a200341e0016a4280a094a58d1d420010c80220032903880120034188016a41086a29030010c902200341cd026a2019290300370000200341d5026a2008290300370000200341dd026a2002290300370000200341023a00c4022003410b3a00c002200320032903e0013700c502200341c0026a108e014100210202402007450d000c080b10bf020c070b20034190046a41086a280200211920032802940421020c060b2005a7450d00201a1023412e21190c050b412e21190c040b0240201a20024105746a20034190046a412010de0422080d0041012112200221130c010b2008411f7620026a21130b02402009a7450d00201a10230b02402012450d0041ec9ec3002102411e21190c030b200341c0026a41186a22074200370300200341c0026a41106a221a4200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c0013703c00220024183e0c400ad4280808080f000841003221941086a290000370300200320192900003703c00120191023200341e0036a41086a20022903002209370300200320032903c00122043703e00320112004370000201141086a2009370000200341e0016a41086a2008290300370300200341e0016a41106a201a290300370300200341e0016a41186a2007290300370300200320032903c0023703e001200341c0026a200341e0016a10c00220032902c402420020032802c00222021b2209422088a7220841306c220741306d21124100211902400240024002400240024020070d004101211a410021120c010b201241ffffff3f712012470d05201241057422074100480d0520071021221a450d010b2009a721152002410820021b211402402008450d00200841306c210741002119201a2102201421080340200841086a2900002109200841106a290000210420082900002105200241186a200841186a290000370000200241106a2004370000200241086a200937000020022005370000201941016a2119200241206a2102200841306a2108200741506a22070d000b0b02402015450d00201410230b4101210841002102024002400240201941014b0d0020190e020201020b03402019410176220820026a22072002201a20074105746a20034190046a412010de044101481b2102201920086b221941014b0d000b0b201a20024105746a20034190046a412010de0441004721080b02402012450d00201a10230b418a9fc3002102412121192008450d06200341c0026a41186a221a4200370300200341c0026a41106a22124200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003220741086a290000370300200320072900003703c0012007102320082002290300370300200320032903c0013703c002200241eeacc200ad42808080809001841003220741086a290000370300200320072900003703c00120071023200341e0036a41086a20022903002209370300200320032903c00122043703e00320112004370000201141086a2009370000200341e0016a41086a2008290300370300200341e0016a41106a2012290300370300200341e0016a41186a201a290300370300200320032903c0023703e001200341c0026a200341e0016a10c00220032902c402420020032802c00222021b2209422088a7220841306c221a41306d21144100210702400240201a0d0041012112410021140c010b201441ffffff3f712014470d052014410574221a4100480d05201a10212212450d020b2009a721162002410820021b211502402008450d00200841306c211a4100210720122102201521080340200841086a2900002109200841106a290000210420082900002105200241186a200841186a290000370000200241106a2004370000200241086a200937000020022005370000200741016a2107200241206a2102200841306a2108201a41506a221a0d000b0b02402016450d00201510230b4101210841002102024002400240200741014b0d0020070e020201020b03402007410176220820026a221a20022012201a4105746a20034190046a412010de044101481b2102200720086b220741014b0d000b0b201220024105746a20034190046a412010de0441004721080b02402014450d00201210230b41ab9fc30021022008450d064200210920034180016a20034190046a4280a094a58d1d420010f1010240200328028001450d0041cc9fc3002102412421190c070b20032903a804210420032d00a704210720032d00a604211a20032f01a404211220032d00a304211420032d00a204211520032f01a004211620032d009f04210620032d009e04210a20032f019c04210b20032d009b04210c20032d009a04210d20032f019804210e20032d009704210f200328009304211020032d009204211720032f0190042118200341c0026a41186a22254200370300200341c0026a41106a22264200370300200341c0026a41086a22084200370300200342003703c002200341c0016a41086a2202419da0c200ad42808080808002841003221941086a290000370300200320192900003703c0012019102320082002290300370300200320032903c0013703c002200241e4acc200ad4280808080a001841003221941086a290000370300200320192900003703c00120191023200341e0036a41086a20022903002205370300200320032903c001221b3703e0032011201b370000201141086a2005370000200341e0016a41086a2008290300370300200341e0016a41106a2026290300370300200341e0016a41186a2025290300370300200320032903c0023703e001200341c0026a200341e0016a412010bb010240024020032802c00222190d004100210241012119410021080c010b20032902c4022209422088a721082009a721020b20082013490d02024020082002470d0020022009a7470d00200241016a22112002490d05200241017422252011202520114b1b221141ffffff3f712011470d05201141057422254100480d050240024020020d002025102121190c010b201920024105742025102521190b2019450d042011ad21090b201920134105746a220241206a2002200820136b41057410dd041a20022004370018200220073a00172002201a3a0016200220123b0014200220143a0013200220153a0012200220163b0010200220063a000f2002200a3a000e2002200b3b000c2002200c3a000b2002200d3a000a2002200e3b00082002200f3a000720022010360003200220173a0002200220183b0000200341e0036a41186a4200370300200341e0036a41106a22114200370300200341e0036a41086a22074200370300200342003703e003200341c0016a41086a2202419da0c200ad42808080808002841003221a41086a2900003703002003201a2900003703c001201a102320072002290300370300200320032903c00122043703b002200320043703e003200241e4acc200ad4280808080a001841003221a41086a2900003703002003201a2900003703c001201a1023201120032903c0012204370300200341c0026a41086a2007290300370300200341c0026a41106a2004370300200341c0026a41186a2002290300370300200320043703e001200320032903e0033703c002024020190d00200341c0026aad42808080808004841005410021020c070b200341003602e801200342013703e001200841016a2202200341e0016a105c02402002450d00201920024105746a21082019210203402002200341e0016a10712008200241206a2202470d000b0b2009a7210220032802e4012108200341c0026aad428080808080048420033502e80142208620032802e0012207ad84100202402008450d00200710230b02402002450d00201910230b410021020c060b200741011030000b201a41011030000b4180bbc000102b000b202541011030000b102a000b41aabac6002102410e21190b20012802004101470d01200141086a280200450d01200128020410230c010b2007450d00200810230b2000201936020420002002360200200341f0046a24000bd60201057f230041d0006b22012400200141306a41086a2202419da0c200ad42808080808002841003220341086a2900003703002001200329000037033020031023200141106a41086a2204200229030037030020012001290330370310200241a3a4c200ad4280808080f000841003220341086a2900003703002001200329000037033020031023200141206a41086a2205200229030037030020012001290330370320200141306a200010ac01024041c000102122030d0041c00041011030000b200320012903103700002003200129032037001020032001290030370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141c0006a290000370000200341386a200141306a41186a290000370000200141086a200341c00041014100410010b8012001280208210220031023200141d0006a240020024101460bea1505047f017e027f017e047f23004180046b22022400200241e0006a41086a2203419da0c200ad42808080808002841003220441086a2900003703002002200429000037036020041023200241186a41086a2205200329030037030020022002290360370318200341ada0c200ad4280808080f000841003220441086a2900003703002002200429000037036020041023200241a0026a41086a22042003290300370300200220022903603703a002200241f0026a200010ac010240024002400240024041c00010212203450d0020032002290318370000200320022903a002370010200320022900f002370020200341086a2005290300370000200341186a2004290300370000200341286a200241f0026a41086a290000370000200341306a20024180036a290000370000200341386a200241f0026a41186a290000370000200241f0026a200341c00010a201024020022d00fc0222044102460d002003ad428080808080088410050b20022902f402210620022802f0022107200241186a200241fd026a41c30010dc041a200241e0006a200241186a41c30010dc041a024020044102470d00200310230c050b200220043a00a801200241a8016a410172200241e0006a41c10010dc042108200241ca016a21050240024020022d00c9014101460d00200241003602f0010c010b200241f0016a200510a10120022d00a80121040b024002400240200441ff01714101460d0020024100360280020c010b20024180026a200810a1012002280280020d010b024020022d00c9014101460d00200241f0026a10c10220023502f80242208620022802f0022204ad84100520022802f402450d04200410230c040b200241f0026a10c10220022802f0022104200220022802f8023602a402200220043602a0022005200241a0026a10f50120022802f402450d03200410230c030b20024190026a41086a20024180026a41086a28020022083602002002200229038002220937039002200241a0026a2009a7220a200810a201024020022d00ac024102470d00200241003602c803200242013703c003200241d0036a41146a410f360200200241dc036a410c360200200241103602ec032002419da0c2003602e8032002410c3602d403200241073602f403200241ada0c2003602f003200220024190026a3602e0032002200241f0036a3602d8032002200241e8036a3602d0032002200241c0036a3602fc03200241f0026a41146a4103360200200242033702f402200241a8ddc0003602f0022002200241d0036a36028003200241fc036a41b8a3c500200241f0026a102e1a20023502c80342208620023502c00384100820022802c403450d0220022802c00310230c020b200241f0026a200241a0026a41d00010dc041a200241bd036a200241c9016a220441206a2d00003a0000200241b5036a200441186a290000370000200241ad036a200441106a290000370000200241a5036a200441086a2900003700002002419d036a2004290000370000200241003602d803200242013703d00320022802f002210420022802f8022205200241d0036a105c200241fc026a210b02402005450d002005410574210503402004200241d0036a1071200441206a2104200541606a22050d000b0b200b200241d0036a10a90120022802d40321042008ad422086200aad8420023502d80342208620022802d0032205ad84100202402004450d00200510230b20022802f402450d0120022802f00210230c010b41c00041011030000b0240200228029402450d0020022802900210230b4101210a0c010b4100210a0b0240024020022802f00122080d00410021040c010b20024190026a41086a200241f0016a41086a280200220b360200200220022903f001220937039002200241a0026a2009a7220c200b10a2010240024020022d00ac024102470d00200241003602c803200242013703c003200241d0036a41146a410f360200200241dc036a410c360200200241103602ec032002419da0c2003602e8032002410c3602d403200241073602f403200241ada0c2003602f003200220024190026a3602e0032002200241f0036a3602d8032002200241e8036a3602d0032002200241c0036a3602fc03200241f0026a41146a4103360200200242033702f402200241ccdcc0003602f0022002200241d0036a36028003200241fc036a41b8a3c500200241f0026a102e1a20023502c80342208620023502c00384100820022802c403450d0120022802c00310230c010b200241f0026a200241a0026a41d00010dc041a2002419c036a200241a8016a41206a2d00003a000020024194036a200241c0016a2903003702002002418c036a200241b8016a29030037020020024184036a200241a8016a41086a290300370200200220022903a8013702fc02200241003602d803200242013703d00320022802f002210420022802f8022205200241d0036a105c200241fc026a210d02402005450d002005410574210503402004200241d0036a1071200441206a2104200541606a22050d000b0b200d200241d0036a10a90120022802d4032104200bad422086200cad8420023502d80342208620022802d0032205ad84100202402004450d00200510230b20022802f402450d0020022802f00210230b0240200228029402450d0020022802900210230b410121040b0240200a200228028002220545720d00200228028402450d00200510230b02402004200845720d0020022802f401450d00200810230b200310232007450d002006a7450d002007410120071b10230b200241e0006a41086a2204419da0c200ad42808080808002841003220341086a2900003703002002200329000037036020031023200241186a41086a2205200429030037030020022002290360370318200441a3a4c200ad4280808080f000841003220341086a2900003703002002200329000037036020031023200241a0026a41086a22072004290300370300200220022903603703a002200241f0026a200010ac01024041c00010212203450d0020032002290318370000200320022903a002370010200320022900f002370020200341086a2005290300370000200341186a2007290300370000200341286a200241f0026a41086a2205290000370000200341306a200241f0026a41106a2208290000370000200341386a200241f0026a41186a220a2900003700002003ad4280808080800884100520031023200242f0d0c9abc6add9b1f400370310200a42003703002008420037030020054200370300200242003703f002200441c4fbc400ad4280808080e000841003220341086a290000370300200220032900003703602003102320052004290300370300200220022903603703f002200441f9bcc000ad4280808080e000841003220341086a290000370300200220032900003703602003102320082002290360220637030020072005290300370300200241a0026a41106a2006370300200241a0026a41186a200429030037030020022006370318200220022903f0023703a002200241086a200241a0026a4120108f012002200228020c410020022802081b360260200241f0026a200010df0220022802f402210420022802f002210320022802f802210820024184036a200241106a3602002002200320084105746a3602fc02200220033602f802200220043602f402200220033602f0022002200241e0006a36028003200241a0026a200241f0026a10870120052007280200360200200220022903a0023703f0022000200241f0026a10e00202402001450d0020004280e8eda1ba01420010de010b20024180046a24000f0b41c00041011030000bb9200b057f017e027f017e037f017e017f017e037f047e017f23004190016b22022400200241e0006a41186a4200370300200241e0006a41106a22034200370300200241e0006a41086a220442003703002002420037036020024180016a41086a2205419da0c200ad42808080808002841003220641086a29000037030020022006290000370380012006102320042005290300370300200220022903800137036020054183e0c400ad4280808080f000841003220641086a29000037030020022006290000370380012006102320032002290380012207370300200241c0006a41086a2004290300370300200241c0006a41106a2007370300200241c0006a41186a20052903003703002002200737031020022002290360370340200241306a200241c0006a10c0020240024002400240024002400240024002400240200228023022080d0041002109410821080c010b2002290234220aa721094100210502400240200a422088a7220b41014b0d00200b0e020201020b200b210403402004410176220620056a220c20052008200c41306c6a2001412010de044101481b2105200420066b220441014b0d000b0b2008200541306c6a2001412010de04450d010b200041013a0000200041086a410c360200200041046a419ae0c4003602002009450d01200810230c010b024002400240024002402005200b4f0d002008200541306c6a2204200441306a200b2005417f736a41306c10dd041a200241e0006a41186a220d4200370300200241e0006a41106a220c4200370300200241e0006a41086a220442003703002002420037036020024180016a41086a2205419da0c200ad4280808080800284220e1003220641086a290000370300200220062900003703800120061023200420052903003703002002200229038001370360200541eeacc200ad42808080809001841003220641086a290000370300200220062900003703800120061023200241106a41086a220f200529030022073703002002200229038001221037031020032010370000200341086a2007370000200241c0006a41086a22112004290300370300200241c0006a41106a2212200c290300370300200241c0006a41186a2213200d29030037030020022002290360370340200241e0006a200241c0006a10c002200b417f6a210320022802602206410820061b210902402002290264420020061b221442208822074200520d00200d4200370300200c420037030020044200370300200242003703602005200e1003220641086a29000037030020022006290000370380012006102320042005290300370300200220022903800122073703302002200737036020054183e0c400ad4280808080f000841003220641086a290000370300200220062900003703800120061023200c2002290380012207370300201120042903003703002012200737030020132005290300370300200220073703302002200229036037034020024100360268200242013703602003200241e0006a105c0240024020030d00200228026821042002280264210c200228026021060c010b2008200341306c6a21032008210503402005200241e0006a1071200541286a2903002107200541206a2903002110024002402002280264220c200228026822046b4110490d00200228026021060c010b200441106a22062004490d0f200c41017422042006200420064b1b22014100480d0f02400240200c0d002001102121060c010b2002280260200c2001102521060b2006450d052002200136026420022006360260200228026821042001210c0b200620046a22012007370008200120103700002002200441106a22043602682003200541306a2205470d000b0b200aa72105200241c0006aad42808080808004842004ad4220862006ad8410020240200c450d00200610230b02402005450d00200810230b200041003b01002014a7450d06200910230c060b200a42ffffffff0f83210e20092007a7417f6a220d41306c6a22052903202115200541286a290300211620052900002107200541086a2900002110200541106a2900002117200241106a41186a200541186a290000370300200241106a41106a2017370300200f201037030020022007370310410021050240200b417f6a220441014b0d00024020040e020004000b200241e0006a41186a200241106a41186a290300370300200241e0006a41106a200241106a41106a290300370300200241e0006a41086a200241106a41086a2903003703002002200229031037036041002106200241e0006a21040c040b2003210403402004410176220620056a220c20052008200c41306c6a200241106a412010de044101481b2105200420066b220441014b0d000c030b0b41b8bbc000102b000b200141011030000b02402008200541306c6a200241106a412010de0422060d00200241c0006a210f0c020b200241e0006a41186a200241106a41186a290300370300200241e0006a41106a200241106a41106a290300370300200241e0006a41086a200241106a41086a29030037030020022002290310370360200241e0006a210420032006411f7620056a2206490d030b02402003200aa7470d00200341016a22052003490d082003410174220c2005200c20054b1bad220e42307e2207422088a70d082007a722054100480d080240024020030d002005102121080c010b2008200341306c2005102521080b2008450d040b2008200641306c6a220541306a2005200320066b41306c10dd041a200541286a201637030020052015370320200541186a200441186a290300370300200541106a200441106a290300370300200541086a200441086a29030037030020052004290300370300200241e0006a41186a22064200370300200241e0006a41106a220c4200370300200241e0006a41086a220442003703002002420037036020024180016a41086a2205419da0c200ad428080808080028422101003220341086a2900003703002002200329000037038001200310232004200529030037030020022002290380012207370330200220073703602005418c92c300ad4280808080e0018422171003220341086a290000370300200220032900003703800120031023200c2002290380012207370300200241c0006a41086a220f2004290300370300200241c0006a41106a22112007370300200241c0006a41186a221220052903003703002002200737033020022002290360370340200241086a200241c0006a4120108f0120022802082113200228020c211820064200370300200c42003703002004420037030020024200370360200520101003220341086a290000370300200220032900003703800120031023200420052903003703002002200229038001220737033020022007370360200520171003220341086a290000370300200220032900003703800120031023200620052903002207370300200f2004290300370300201120022903800122103703002012200737030020022010370330200220022903603703404101210f2002201841016a410120131b360260200241c0006aad4280808080800484200241e0006aad4280808080c0008410022006200141186a290000370300200c200141106a2900003703002004200141086a2900003703002002200129000037036002400240200a422088a722030d00410021010c010b200341ffffff3f712003470d08200341057422054100480d0820051021220f450d05200321010b0240024020082008200341306c6a470d00410021060c010b200b41306c210c41002106200f210520082104034020052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200641016a2106200541206a2105200441306a2104200c41506a220c0d000b0b200241e0006a4101200f200610c70202402001450d00200f10230b200241c0006a210f0b200241e0006a41186a4200370300200241e0006a41106a220b4200370300200241e0006a41086a220442003703002002420037036020024180016a41086a2205419da0c200ad42808080808002841003220641086a29000037030020022006290000370380012006102320042005290300370300200220022903800122073703302002200737036020054183e0c400ad4280808080f000841003220641086a290000370300200220062900003703800120061023200b2002290380012207370300200241c0006a41086a2004290300370300200241c0006a41106a2007370300200241c0006a41186a2005290300370300200220073703302002200229036037034020024100360268200242013703602003200241e0006a105c0240024020030d00200228026821042002280264210c200228026021060c010b2008200341306c6a21032008210503402005200241e0006a1071200541286a2903002107200541206a2903002110024002402002280264220c200228026822046b4110490d00200228026021060c010b200441106a22062004490d09200c41017422042006200420064b1b22014100480d0902400240200c0d002001102121060c010b2002280260200c2001102521060b2006450d072002200136026420022006360260200228026821042001210c0b200620046a22012007370008200120103700002002200441106a22043602682003200541306a2205470d000b0b200fad4280808080800484220a2004ad4220862006ad8410020240200c450d00200610230b0240200e500d00200810230b200241e0006a41186a220c4200370300200241e0006a41106a22084200370300200241e0006a41086a220442003703002002420037036020024180016a41086a2205419da0c200ad42808080808002841003220641086a290000370300200220062900003703800120061023200420052903003703002002200229038001220737033020022007370360200541eeacc200ad42808080809001841003220641086a290000370300200220062900003703800120061023200241306a41086a2005290300220737030020022002290380012210370330200b2010370000200b41086a2007370000200241c0006a41086a2004290300370300200241c0006a41106a2008290300370300200241c0006a41186a200c290300370300200220022903603703402002410036026820024201370360200d200241e0006a105c02400240200d0d00200228026821042002280264210c200228026021060c010b2009200d41306c6a21012009210503402005200241e0006a1071200541286a2903002107200541206a2903002110024002402002280264220c200228026822046b4110490d00200228026021060c010b200441106a22062004490d09200c41017422042006200420064b1b22084100480d0902400240200c0d002008102121060c010b2002280260200c2008102521060b2006450d082002200836026420022006360260200228026821042008210c0b200620046a22082007370008200820103700002002200441106a22043602682001200541306a2205470d000b0b200a2004ad4220862006ad8410020240200c450d00200610230b02402014a7450d00200910230b20004180023b01000b20024190016a24000f0b4180bbc000102b000b200541081030000b200541011030000b200141011030000b200841011030000b102a000bb40602027f067e230041b0016b220624000240200341ff0171450d00200641306a2001ad420042c0843d420010e104200641206a2002418094ebdc032002418094ebdc03491bad420042e807420010e104200641f0006a41186a4200370300200641f0006a41106a22074200370300200641f0006a41086a2203420037030020064200370370200641a0016a41086a220241d5fbc400ad42808080808001841003220141086a290000370300200620012900003703a0012001102320032002290300370300200620062903a001370370200241e8bbc300ad42808080809002841003220141086a290000370300200620012900003703a00120011023200720062903a0012208370300200641d0006a41086a2003290300370300200641d0006a41106a2008370300200641d0006a41186a2002290300370300200620083703900120062006290370370350200641306a41086a290300200641206a41086a2903007c2006290330220820062903207c2209200854ad7c20094280c2d72f7c2208200954ad7c2109200641c0006a200641d0006a109c020240024020062802400d00410021024200210a0c010b2006290348220b200b423f87220a7c200a85210a200b42005521020b200641106a20082009200a428094ebdc0380220b420010e1042006200a200b4280ec94a37c7e7ca722033602702006418094ebdc0336027420062008428094ebdc03804200200641f0006a2003418094ebdc034b4102746a350200220a420010e104427f427f2009200641106a41086a290300200641086a2903007c2006290310220c20062903007c220b200c54ad7c200b200a2008428094ebdc03827e220a200a428094ebdc0380220a4280ec94a37c7e7c4280cab5ee0156200aa76aad7c220a200b54ad7c220c7c2008200a7c220d2008542203ad7c220b2003200b200954200b2009511b22031b42002009200c7d2008200a54ad7d220b2008200a7d220a200856200b200956200b2009511b22011b20021b220820057c427f200d20031b4200200a20011b20021b220920047c22042009542202ad7c22092002200920085420092008511b22021b2105427f200420021b21040b2000200437030020002005370308200641b0016a24000be90408027f017e037f017e017f027e037f017e23004180016b2203240020012002844200522204ad2105024020040d00200341c0006a41186a22064200370300200341c0006a41106a22074200370300200341c0006a41086a2208420037030020034200370340200341f0006a41086a220441d5fbc400ad428080808080018422091003220a41086a2900003703002003200a290000370370200a10232008200429030037030020032003290370220b3703602003200b370340200441d6a0c200ad4280808080d00184220c1003220a41086a2900003703002003200a290000370370200a102320072003290370220b370300200341206a41086a220d2008290300370300200341206a41106a220e200b370300200341206a41186a220f20042903003703002003200b37036020032003290340370320200341086a200341206a4120108902200341086a41106a290300210b200329031021102003280208210a20064200370300200742003703002008420037030020034200370340200420091003220741086a290000370300200320072900003703702007102320082004290300370300200320032903702209370360200320093703402004200c1003220741086a2900003703002003200729000037037020071023200620042903002209370300200d2008290300370300200e2003290370220c370300200f20093703002003200c370360200320032903403703202003200b4200200a1b370348200320104200200a1b370340200341206aad4280808080800484200341c0006aad428080808080028410020b2000200137030820002005370300200041106a200237030020034180016a24000b13002000410336020420004184aac3003602000b3400200041f4fcc40036020420004100360200200041146a4103360200200041106a41a4b1c300360200200041086a42083702000b130020004104360204200041bcb5c3003602000b0b0020004190ce00108c030b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200220013600000b3201017f02404104102122020d00410441011030000b20004284808080c0003702042000200236020020024180a3053600000b0b00200041d08603108c030be90804067f027e077f027e230041e0016b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822040d00200042003703000c010b200341106a2802002105200328020c210641002101200341003a00d801200541706a2107024002400340024020052001470d00200141ff0171450d02200341003a00d8010c020b200341b8016a20016a200420016a2d00003a00002003200141016a22023a00d8012007417f6a21072002210120024120470d000b200341d8006a41086a200341b8016a41086a290300370300200341d8006a41106a200341b8016a41106a290300370300200341d8006a41186a200341b8016a41186a290300370300200320032903b801370358200520026b22084110490d00200420026a22052900002109200541086a290000210a41002101200341003a00d801200841706a21080340024020082001470d00200141ff0171450d02200341003a00d8010c020b200341b8016a20016a200520016a41106a2d00003a00002003200141016a22023a00d8012002210120024120470d000b200341f8006a41086a220b200341b8016a41086a2201290300370300200341f8006a41106a220c200341b8016a41106a2208290300370300200341f8006a41186a220d200341b8016a41186a220e290300370300200320032903b801370378200720026b410f4d0d00200341386a41086a2207200341d8006a41086a290300370300200341386a41106a220f200341d8006a41106a290300370300200341386a41186a2210200341d8006a41186a290300370300200341186a41086a2211200b290300370300200341186a41106a220b200c290300370300200341186a41186a220c200d2903003703002003200329035837033820032003290378370318200520026a220241106a2900002112200241186a2900002113200120072903003703002008200f290300370300200e201029030037030020034198016a41086a2202201129030037030020034198016a41106a2207200b29030037030020034198016a41186a2205200c290300370300200320032903383703b8012003200329031837039801200041206a2013370300200041186a2012370300200041106a200a37030020002009370308200041286a20032903b801370300200041306a2001290300370300200041386a2008290300370300200041c0006a200e290300370300200041c8006a200329039801370300200041d0006a2002290300370300200041d8006a2007290300370300200041e0006a2005290300370300420121090c010b200341003602a00120034201370398012003410c36027c20032003360278200320034198016a360258200341cc016a4101360200200342013702bc0120034198c2c3003602b8012003200341f8006a3602c801200341d8006a41b8a3c500200341b8016a102e1a20033502a0014220862003350298018410080240200328029c01450d0020032802980110230b420021090b200020093703002006450d00200410230b200341e0016a24000b3400200041d5fbc40036020420004100360200200041146a4101360200200041106a4190bbc300360200200041086a42083702000b13002000410236020420004194bcc3003602000b3901017f02404110102122020d00411041011030000b20024200370008200242c0843d370000200042908080808002370204200020023602000bde2003167f037e067f230041c0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d00200020011094032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200a200a417f6a220d2000200a4105746a2000200d4105746a412010de04220e410048220f1b2210200a41016a2211200d200a200f1b220a200020114105746a2000200a4105746a412010de0441004822111b220a2000200a4105746a200020104105746a412010de0422104100481b210a200c200c417f6a220d2000200c4105746a2000200d4105746a412010de04221241004822131b2214200c4101722215200d200c20131b220c200020154105746a2000200c4105746a412010de0422134100481b220c2000200c4105746a200020144105746a412010de0422144100481b210c200b200b417f6a220d2000200b4105746a2000200d4105746a412010de04221541004822161b2217200b41016a2218200d200b20161b220b200020184105746a2000200b4105746a412010de04220d4100481b220b2000200b4105746a200020174105746a412010de0422164100481b210b41024101200f1b200e411f7620111b2010411f766a2012411f766a2013411f766a2014411f766a2015411f766a200d411f766a2016411f766a210d0b2000200c4105746a2000200a4105746a412010de04220f411f76200d6a2000200b4105746a2000200a200c200f410048220f1b220e4105746a412010de042210411f766a210d2000200b200e20104100481b220b4105746a2000200c200a200f1b22194105746a412010de04417f4c0d01200b21190c020b200020011095030c0f0b200d41016a220d410c490d0002402001410176220b450d00200020014105746a41606a210a2000210c0340200441206a41186a220d200c41186a220f290000370300200441206a41106a220e200c41106a2210290000370300200441206a41086a2211200c41086a22122900003703002004200c290000370320200a41086a2213290000211a200a41106a2214290000211b200a41186a2215290000211c200c200a290000370000200f201c3700002010201b3700002012201a3700002015200d2903003700002014200e29030037000020132011290300370000200a2004290320370000200a41606a210a200c41206a210c200b417f6a220b0d000b0b20012019417f736a21194101210a0c010b200d45210a0b0240200a452009724101710d00200020011096030d0d0b2002450d02201920014f0d0102402002200020194105746a220a412010de0441004e0d0020002108200121070c040b200441206a41186a2212200041186a220e290000370300200441206a41106a2213200041106a2210290000370300200441206a41086a2214200041086a221129000037030020042000290000370320200a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2000200a290000370000200e201c3700002010201b3700002011201a370000200d2012290300370000200b2013290300370000200c2014290300370000200a2004290320370000200441c0016a41186a2217200e290000370300200441c0016a41106a22182010290000370300200441c0016a41086a22192011290000370300200420002900003703c001200041606a2115200041206a21164100210c2001210b03400240200c200b417f6a220d4f0d002016200c4105746a210a0340200441c0016a200a412010de04417f4c0d01200a41206a210a200d200c41016a220c470d000b200d210c0b2015200b4105746a210a02400340200c200b417f6a220b4f0d01200441c0016a200a412010de04210d200a41606a220f210a200d4100480d000b20122016200c4105746a220a41186a220d2900003703002013200a41106a221d2900003703002014200a41086a22062900003703002004200a290000370320200f41286a221e290000211a200f41306a221f290000211b200f41386a2220290000211c200a200f41206a220f290000370000200d201c370000201d201b3700002006201a37000020202012290300370000201f2013290300370000201e2014290300370000200f2004290320370000200c41016a210c0c010b0b200020042903c001370000200e2017290300370000201020182903003700002011201929030037000002402001200c41016a220a490d002000200a4105746a21002001200a6b220141154f0d010c0c0b0b200a2001103e000b4190bfc30020192001102d000b2007450d010b201920074f0d01200441206a41186a2216200841186a221e290000370300200441206a41106a2217200841106a221f290000370300200441206a41086a2218200841086a222029000037030020042008290000370320200820194105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200441186a2205201e290000370300200441106a2209201f290000370300200441086a2221202029000037030020042008290000370300200841206a21014100211d2007417f6a220d450d022001210a0340200a2004412010de0441004e0d03200a41206a210a200d201d41016a221d470d000b200d211d0c020b41d8bec30041004100102d000b41e8bec30020192007102d000b200820074105746a210c200d210b02400340200c2100200b220a201d4d22060d01200a417f6a210b200041606a220c2004412010de04417f4a0d000b0b0240200a201d490d00200d200a490d0241800121144100210f410021124100210d4100211141800121152001201d4105746a2222210103400240200020016b220a419fc0004b22190d00200a410576220a41807f6a200a2012200f492011200d49220c72220b1b210a0240200b450d002015200a200c1b2115200a2014200c1b21140c010b200a200a41017622156b21140b02402011200d470d00024020150d00200441c0006a220d21110c010b4100210a200441c0006a2211210d2001210c0340200d200a3a0000200d200c2004412010de04417f73411f766a210d200c41206a210c2015200a41016a220a470d000b0b02402012200f470d00024020140d00200441c0016a220f21120c010b200041606a210a4100210c200441c0016a2212210f0340200f200c3a0000200f200a2004412010de04411f766a210f200a41606a210a2014200c41016a220c470d000b0b0240200f20126b220a200d20116b220c200c200a4b1b2213450d002016200120112d00004105746a220a41186a2900003703002017200a41106a2900003703002018200a41086a2900003703002004200a290000370320200120112d00004105746a220a200020122d0000417f734105746a220c290000370000200a41186a200c41186a290000370000200a41106a200c41106a290000370000200a41086a200c41086a290000370000024020134101460d004100210a034020002012200a6a220e2d0000417f734105746a220c20012011200a6a41016a22102d00004105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200120102d00004105746a220c2000200e41016a2d0000417f734105746a220b290000370000200c41186a200b41186a290000370000200c41106a200b41106a290000370000200c41086a200b41086a290000370000200a41026a210c200a41016a220b210a200c2013490d000b2012200b6a21122011200b6a21110b200020122d0000417f734105746a220a2004290320370000200a41186a2016290300370000200a41106a2017290300370000200a41086a2018290300370000201241016a2112201141016a21110b200020144105746b20002012200f461b2100200120154105746a20012011200d461b210120190d000b024002402011200d4f0d002000210a034020162001200d417f6a220d2d00004105746a220c41186a220b2900003703002017200c41106a220f2900003703002018200c41086a22002900003703002004200c290000370320200a41606a220a41086a220e290000211a200a41106a2210290000211b200a41186a2212290000211c200c200a290000370000200b201c370000200f201b3700002000201a3700002012201629030037000020102017290300370000200e2018290300370000200a20042903203700002011200d490d000c020b0b2001210a2012200f4f0d000340200f417f6a220f2d0000210c2016200a41186a220b2900003703002017200a41106a220d2900003703002018200a41086a22012900003703002004200a2900003703202000200c417f734105746a220c41086a220e290000211a200c41106a2210290000211b200c41186a2211290000211c200a200c290000370000200b201c370000200d201b3700002001201a3700002011201629030037000020102017290300370000200e2018290300370000200c2004290320370000200a41206a210a2012200f490d000b0b20082004290300370000201e2005290300370000201f2009290300370000202020212903003700002007200a20226b410576201d6a22014d0d032016201e2900003703002017201f2900003703002018202029000037030020042008290000370320200820014105746a220a41086a220c290000211a200a41106a220b290000211b200a41186a220d290000211c2008200a290000370000201e201c370000201f201b3700002020201a370000200d2016290300370000200b2017290300370000200c2018290300370000200a2004290320370000200720016b220c450d04200c20012001200c4b1b210b2007410376210d200a41206a2100024002402001200c417f6a220c490d002000200c200a2003109303200821000c010b2008200120022003109303200a2102200c21010b200b200d4f2105200141154f0d010c050b0b201d200a103e000b200a200d1036000b41e8bec30020012007102d000b41f8bec300102b000b20014102490d00200041606a210f4101210b0340200b410574210a200b417f6a210c200b41016a210b02402000200a6a220a2000200c4105746a220d412010de04417f4a0d00200441c0016a41186a220e200a41186a2210290000370300200441c0016a41106a2211200a41106a2212290000370300200441c0016a41086a2213200a41086a22142900003703002004200a2900003703c001200a200d2900003700002014200d41086a2900003700002012200d41106a2900003700002010200d41186a2900003700004100210d0240200c450d00200f210a03400240200441c0016a200a412010de044100480d00200c210d0c020b200a41206a200a290000370000200a41386a200a41186a290000370000200a41306a200a41106a290000370000200a41286a200a41086a290000370000200a41606a210a200c417f6a220c0d000b0b2000200d4105746a220a20042903c001370000200a41186a200e290300370000200a41106a2011290300370000200a41086a20132903003700000b200f41206a210f200b2001470d000b0b200441c0026a24000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b41e8bec30020052001102d000b41d8bec30020042001102d000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a412010de044100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a2205412010de0441004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b41d8c0c30020062001102d000b41e8c0c30020042001102d000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a412010de044100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a2206412010de0441004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b41d8c0c30020042007102d000b41e8c0c30020052007102d000b200741014b0d000b0b200241206a24000f0b41e8bec30020072001102d000bdb08030a7f017e0a7f230041c0006b22022400200041a07f6a21032001417f6a2104200141324921054101210641002107024003400240024020062001490d00410021080c010b41012108200020064105746a2209200941606a412010de044100480d0003404101210a20042006460d03200641016a2106200941206a220a2009412010de042108200a21092008417f4a0d000b200620014921080b2006200146210a20050d0120062001460d0102400240024002402006417f6a220920014f0d002008450d0120002006410574220b6a220a290000210c200a200020094105746a22092900003700002009200c370000200a41086a220d290000210c200d200941086a220e290000370000200e200c370000200a41106a220f290000210c200f200941106a22102900003700002010200c370000200a41186a2211290000210c2011200941186a22122900003700002012200c37000020064102490d03200920002006417e6a22084105746a2213412010de04417f4a0d032009290000210c20092013290000370000200241206a41186a22142012290000370300200241206a41106a22152010290000370300200241206a41086a2216200e290000370300200e201341086a2900003700002010201341106a2900003700002012201341186a2900003700002002200c3703204100210e2008450d022003200b6a210903400240200241206a2009412010de044100480d002008210e0c040b200941206a2009290000370000200941386a200941186a290000370000200941306a200941106a290000370000200941286a200941086a290000370000200941606a21092008417f6a22080d000c030b0b41d8bec30020092001102d000b41e8bec30020062001102d000b2000200e4105746a22092002290320370000200941186a2014290300370000200941106a2015290300370000200941086a20162903003700000b200741016a21070240200120066b22104102490d00200a41206a2209200a412010de04417f4a0d00200a290000210c200a2009290000370000200241206a41186a22122011290000370300200241206a41106a2213200f290000370300200241206a41086a220b200d290000370300200d200941086a290000370000200f200941106a2900003700002011200941186a2900003700002002200c3703204101210d024020104103490d00200a41c0006a200241206a412010de04417f4a0d00410321084102210e0340200a200e4105746a220941606a220d2009290000370000200d41186a200941186a290000370000200d41106a200941106a290000370000200d41086a200941086a290000370000024020082010490d00200e210d0c020b20084105742109200e210d2008210e200841016a2108200a20096a200241206a412010de044100480d000b0b200a200d4105746a22092002290320370000200941186a2012290300370000200941106a2013290300370000200941086a200b2903003700000b20074105470d000b4100210a0b200241c0006a2400200a0bbb1301147f23004180026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d00200020011098032003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00200b200b417f6a220e2000200b4102746a280200220f2000200e4102746a280200221049220d1b2211200b41016a2212200e200b200d1b200020124102746a280200220b2010200f200d1b220e4922101b200b200e20101b200020114102746a2802004922131b210b200c200c417f6a220e2000200c4102746a28020022112000200e4102746a280200221249220f1b2214200c4101722215200e200c200f1b200020154102746a280200220c20122011200f1b220e4922111b200c200e20111b200020144102746a2802004922141b210c200a200a417f6a22122000200a4102746a2802002215200020124102746a280200220649220e1b2216200a41016a22172012200a200e1b200020174102746a280200220a20062015200e1b22154922121b200a201520121b200020164102746a2802004922151b210a41024101200e1b200e20121b20156a200f6a20116a20146a200d6a20106a20136a210d0b200d2000200c4102746a280200220f2000200a4102746a280200221049220e6a2000200b4102746a280200220d2010200f200e1b22114922106a210f200d201120101b2000200c200a200e1b220d4102746a280200490d01200b200a200c200e1b20101b210d0c020b200020011099030c0f0b200f41016a220f410c490d0002402001410176220b450d00200020014102746a417c6a210a2000210c0340200c280200210e200c200a280200360200200a200e360200200c41046a210c200a417c6a210a200b417f6a220b0d000b0b2001200d417f736a210d4101210a0c010b200f45210a0b0240200a452009724101710d0020002001109a030d0d0b2002450d02200d20014f0d01024020022802002000200d4102746a220a280200220c4f0d0020002108200121070c040b2000280200210b2000200c360200200a200b3602002000417c6a2110200041046a21112000280200210d4100210c2001210b03400240200c200b417f6a220e4f0d002011200c4102746a210a0340200d200a280200490d01200a41046a210a200e200c41016a220c470d000b200e210c0b2010200b4102746a210a02400340200c200b417f6a220b4f0d01200a280200210e200a417c6a220f210a200d200e490d000b2011200c4102746a220a2802002112200a200e360200200f41046a2012360200200c41016a210c0c010b0b2000200d36020002402001200c41016a220a490d002000200a4102746a21002001200a6b220141154f0d010c0c0b0b200a2001103e000b4190bfc300200d2001102d000b2007450d010b200d20074f0d012008280200210a20082008200d4102746a220c280200360200200c200a360200200841046a210f20082802002111410021142007417f6a220d450d02200f210a0340200a28020020114f0d03200a41046a210a200d201441016a2214470d000b200d21140c020b41d8bec30041004100102d000b41e8bec300200d2007102d000b200820074102746a210c200d210b02400340200c210e200b220a20144d22060d01200a417f6a210b200e417c6a220c28020020114f0d000b0b0240200a2014490d00200d200a490d0241800121054100210b410021014100210c410021104180012109200f20144102746a2216210d03400240200e200d6b220a4183084b22130d00200a410276220a41807f6a200a2001200b492010200c49220f7222001b210a02402000450d002009200a200f1b2109200a2005200f1b21050c010b200a200a41017622096b21050b02402010200c470d00024020090d002004220c21100c010b4100210a20042210210c200d210f0340200c200a3a0000200c200f28020020114f6a210c200f41046a210f2009200a41016a220a470d000b0b02402001200b470d00024020050d0020044180016a220b21010c010b200e417c6a210a4100210f20044180016a2201210b0340200b200f3a0000200b200a2802002011496a210b200a417c6a210a2005200f41016a220f470d000b0b0240200b20016b220a200c20106b220f200f200a4b1b2212450d00200d20102d00004102746a220a2802002115200a200e20012d0000417f734102746a280200360200024020124101460d004100210a0340200e2001200a6a220f2d0000417f734102746a200d2010200a6a41016a22002d00004102746a280200360200200d20002d00004102746a200e200f41016a2d0000417f734102746a280200360200200a41026a210f200a41016a2200210a200f2012490d000b200120006a2101201020006a21100b200e20012d0000417f734102746a2015360200200141016a2101201041016a21100b200e20054102746b200e2001200b461b210e200d20094102746a200d2010200c461b210d20130d000b024002402010200c4f0d00200e210a0340200d200c417f6a220c2d00004102746a220b280200210e200b200a417c6a220a280200360200200a200e3602002010200c490d000c020b0b200d210a2001200b4f0d000340200a280200210c200a200e200b417f6a220b2d0000417f734102746a220d280200360200200d200c360200200a41046a210a2001200b490d000b0b200820113602002007200a20166b41027620146a22014d0d032008200820014102746a220a280200360200200a2011360200200720016b220c450d04200c20012001200c4b1b210b2007410376210e200a41046a2100024002402001200c417f6a220c490d002000200c200a2003109703200821000c010b2008200120022003109703200a2102200c21010b200b200e4f2105200141154f0d010c050b0b2014200a103e000b200a200d1036000b41e8bec30020012007102d000b41f8bec300102b000b20014102490d00200041746a210e4102210d4101210a0340200a41016a210c02402000200a4102746a2210280200220b2000200a417f6a22114102746a220f28020022124f0d002010201236020002402011450d00200b2000200a417e6a22104102746a221128020022124f0d00200f2012360200024020100d002011210f0c010b0240200b2000200a417d6a220a4102746a220f2802002210490d002011210f0c010b20112010360200200a450d00200d210f200e210a02400340200b200a28020022104f0d01200a41046a2010360200200a417c6a210a200f41016a2210200f4921112010210f2011450d000b0b200a41046a210f0b200f200b3602000b200d417f6a210d200e41046a210e200c210a200c2001470d000b0b20044180026a24000bf30201067f02400240024020014108490d00200141017641feffffff07712202417f6a220320014f0d022001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d01200020034102746a220328020021072003200020044102746a220428020036020020042007360200024020022001490d00200221030c030b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d01200020024102746a220328020021072003200020044102746a2204280200360200200420073602002002410172220320014f0d022005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d01200020034102746a220128020021022001200020044102746a2200280200360200200020023602000b0f0b41e8bec30020042001102d000b41d8bec30020032001102d000bc70301067f024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054102746a280200200020044102746a280200491b21050b200520014f0d03200320014f0d02200020034102746a22032802002204200020054102746a220628020022074f0d032003200736020020062004360200200521030c000b0b41d8c0c30020052001102d000b41e8c0c30020032001102d000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200028020021052000200020044102746a2203280200360200200320053602004100210302400240024003402003410174220641017221050240200641026a220620044f0d00200520044f0d0220062005200020054102746a280200200020064102746a280200491b21050b200520044f0d03200320044f0d02200020034102746a22032802002206200020054102746a220728020022024f0d032003200236020020072006360200200521030c000b0b41d8c0c30020052004102d000b41e8c0c30020032004102d000b200441014b0d000b0b0f0b41e8bec30020042001102d000b8a05010f7f2001417d6a2102200041086a21032000416c6a21042001417f6a2105200041046a2106410021072001413249210841012109024003400240024020092001490d004100210a0c010b4101210a20002009410274220b6a220c280200220d200c417c6a280200490d002006200b6a210a03404101210c20052009460d03200941016a2109200a280200220c200d4f210b200a41046a210a200c210d200b0d000b2009200149210a0b2009200146210c20080d0120092001460d0102400240024002402009417f6a220d20014f0d00200a450d012000200d4102746a220c280200210b200c20002009410274220e6a220a280200220d360200200a200b360200024020094102490d00200d20002009417e6a220b4102746a220f28020022104f0d00200c201036020002400240200b0d00200f210c0c010b0240200d20002009417d6a220b4102746a220c2802002210490d00200f210c0c010b200f2010360200200b450d00200d200a41706a280200220f4f0d002004200e6a2110024003402010220c41086a200f360200200b417f6a220b450d01200c417c6a2110200d200c280200220f490d000b0b200c41046a210c0b200c200d3602000b200741016a2107200120096b220b4102490d03200a280204220f200a280200220c4f0d03200a41046a210d200a200f360200200b4103490d02200a280208220f200c4f0d02200d200f3602000240200b41044f0d00200a41086a210d0c030b200220096b210a2003200e6a210d0340200d41046a220b280200220e200c4f0d03200d200e360200200b210d200a417f6a220a0d000b200b210d0c020b41d8bec300200d2001102d000b41e8bec30020092001102d000b200d200c3602000b20074105470d000b4100210c0b200c0bd20903067f017e057f230041f0016b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0520050e020102010b200041023a00000c050b20064104490d012004280001210720012003417b6a22053602042001200441056a36020020054108490d02200429000521082001200341736a36020420012004410d6a36020041002105200241003a00b001410d20036b2109200341726a210603400240200920056a0d000240200541ff0171450d00200241003a00b0010b200041023a00000c060b20024190016a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a00b0012006417f6a2106200a2105200a4120470d000b200241f0006a41186a20024190016a41186a290300370300200241f0006a41106a20024190016a41106a290300370300200241f0006a41086a20024190016a41086a290300370300200220022903900137037041002105200241003a00d0012004200a6a2109200a20036b410d6a210a03400240200a20056a0d000240200541ff0171450d00200241003a00d0010b200041023a00000c060b20024190016a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00d0012006417f6a210620042105200441c000470d000b200241106a41386a220120024190016a41386a290300370300200241106a41306a220520024190016a41306a290300370300200241106a41286a220620024190016a41286a290300370300200241106a41206a220420024190016a41206a290300370300200241106a41186a220a20024190016a41186a290300370300200241106a41106a220320024190016a41106a290300370300200241106a41086a220920024190016a41086a290300370300200241d0006a41086a220b200241f0006a41086a290300370300200241d0006a41106a220c200241f0006a41106a290300370300200241d0006a41186a220d200241f0006a41186a290300370300200220022903900137031020022002290370370350200041003a000020002002290350370001200041096a200b290300370000200041116a200c290300370000200041196a200d290300370000200041216a2002290310370000200041296a2009290300370000200041316a2003290300370000200041396a200a290300370000200041c1006a2004290300370000200041c9006a2006290300370000200041d1006a2005290300370000200041d9006a2001290300370000200041e3006a2002410f6a2d00003a0000200041e1006a20022f000d3b0000200041e8006a2008370300200041e4006a20073602000c040b0240024020064104490d002004280001210620012003417b6a22053602042001200441056a360200200541084f0d010b200041023a00000c040b200041013a0000200020022f00103b0001200429000521082001200341736a36020420012004410d6a360200200041086a2008370300200041046a2006360200200041036a200241126a2d00003a0000200041106a20024190016a41e00010dc041a0c030b200041023a00000c020b200041023a00000c010b200041023a00000b200241f0016a24000beb0904057f017e0a7f037e230041c0016b2201240020014198016a41186a420037030020014198016a41106a2202420037030020014198016a41086a220342003703002001420037039801200141f8006a41086a220441cafbc400ad4280808080c000841003220541086a2900003703002001200529000037037820051023200320042903003703002001200129037837039801200441fccfc300ad4280808080b001841003220541086a2900003703002001200529000037037820051023200220012903782206370300200141086a41086a2003290300370300200141086a41106a2006370300200141086a41186a20042903003703002001200637035820012001290398013703082001412036022c2001200141086a360228200141306a200141086aad4280808080800484100410900102400240024002400240200128023022070d00410021080c010b200128023421092001200141306a41086a280200360254200120073602502001200141d0006a106e02400240024020012802000d002001280254220241286e220a41286c2204417f4c0d042001280204210b0240024020040d00410821080c010b200410212208450d060b0240200b450d004100210c0340200141003a00b801200c220d41016a210c410021040240024002400240034020022004460d0120014198016a20046a200128025022052d00003a00002001200541016a3602502001200441016a22033a00b8012003210420034120470d000b200141f8006a41086a220e20014198016a41086a290300370300200141f8006a41106a220f20014198016a41106a290300370300200141f8006a41186a221020014198016a41186a29030037030020012001290398013703782001200220036b220436025420044108490d01200141d8006a41086a2203200e290300370300200141d8006a41106a220e200f290300370300200141d8006a41186a220f2010290300370300200120012903783703582001200541096a3602502001200441786a220236025420052900012106200a200d470d030240200d4101742204200c2004200c4b1b220aad42287e2211422088a70d002011a7220441004e0d030b102a000b20014100360254200441ff0171450d00200141003a00b8010b4100210420014100360240200a450d05200810230c050b02400240200d0d002004102121080c010b2008200d41286c2004102521080b2008450d090b2008200d41286c6a2204200129035837030020032903002111200e2903002112200f290300211320042006370320200441186a2013370300200441106a2012370300200441086a2011370300200c200b470d000b0b200141c8006a200b3602002001200a36024420012008360240024020080d00200821040c020b200129024421060c020b41002104200141003602400b2001410036028001200142013703782001410c36025c2001200141286a3602582001200141f8006a360240200141ac016a41013602002001420137029c0120014198c2c300360298012001200141d8006a3602a801200141c0006a41b8a3c50020014198016a102e1a20013502800142208620013502788410080240200128027c450d00200128027810230b200421080b2009450d00200710230b024002402008450d0020002006370204200020083602000c010b20004100360208200042083702000b200141c0016a24000f0b102f000b200441081030000b200441081030000bd60302057f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022030d00200041003a00000c010b200241186a28020021042002280214210541002101200241003a006802400340024020042001470d000240200141ff0171450d00200241003a00680b4100210120024100360228200242013703202002410c3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c20024198c2c3003602482002200241c0006a360258200241ec006a41b8a3c500200241c8006a102e1a200235022842208620023502208410082002280224450d02200228022010230c020b200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241206a41186a200241c8006a41186a2903002207370300200241206a41106a200241c8006a41106a2903002208370300200241206a41086a200241c8006a41086a290300220937030020022002290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010b200020013a00002005450d00200310230b200241f0006a24000b952901067f20002d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2203280200200141086a22042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0001210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0002210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0003210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0004210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0005210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0006210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0007210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0008210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0009210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d0f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d000f210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1020012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0010210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1120012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0011210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1220012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0012210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1320012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0013210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1420012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0014210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1520012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0015210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1620012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0016210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1720012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0017210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1820012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0018210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1920012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d0019210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1a20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001a210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1b20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001b210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1c20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001c210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1d20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001d210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1e20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001e210202400240200328020020042802002205460d00200128020021060c010b200541016a22062005490d21200541017422072006200720064b1b22074100480d210240024020050d002007102121060c010b200128020020052007102521060b2006450d1f20012006360200200141046a2007360200200141086a28020021050b2004200541016a360200200620056a20023a000020002d001f210502400240200328020020042802002200460d00200128020021030c010b200041016a22032000490d21200041017422062003200620034b1b22064100480d210240024020000d002006102121030c010b200128020020002006102521030b2003450d2020012003360200200141046a2006360200200141086a28020021000b2004200041016a360200200320006a20053a00000f0b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200641011030000b102a000b3400200041cafbc40036020420004100360200200041146a4109360200200041106a41ccc9c300360200200041086a42043702000bcf0101017f024002400240024002400240410110212202450d00200241003a000020024101410210252202450d01200241003a000120024102410410252202450d02200241003b000220024104410810252202450d032002410036000420024108411010252202450d042002420037000820024110412010252202450d052002420037001820024200370010200042a08080808004370204200020023602000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b1300200041023602042000418cdcc3003602000b3101017f02404108102122020d00410841011030000b20004288808080800137020420002002360200200242f02e3700000b3101017f02404108102122020d00410841011030000b20004288808080800137020420002002360200200242d8043700000bde0401077f230041f0006b22022400200241d0006a41086a220341cefbc400ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341b5e1c300ad4280808080f000841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200036024c200241d0006a41186a2200200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042000290300370300200241286a41106a22082007290300370300200241286a41086a2207200329030037030020022002290350370328024041c00010212200450d00200020022903083700002000200229031837001020002002290328370020200041086a2005290300370000200041186a2006290300370000200041286a2007290300370000200041306a2008290300370000200041386a2004290300370000200128020021052001280208210320024100360258200242013703502003200241d0006a105c02402003450d00200341057421042005210303402003200241d0006a1071200341206a2103200441606a22040d000b0b200228025421032000ad4280808080800884200235025842208620022802502204ad84100202402003450d00200410230b200010230240200141046a280200450d00200510230b200241f0006a24000f0b41c00041011030000bae0a04037f027e057f017e23004190016b220424004101210502402001a722064101470d002000427f2000290300220720027c220820082007542205200041086a2209290300220720037c2005ad7c220820075420082007511b22051b3703002009427f200820051b370300410021050b0240024020014201560d00024020060e020200020b2005450d01200441d0006a41186a22064200370300200441d0006a41106a22094200370300200441d0006a41086a220542003703002004420037035020044180016a41086a220041d5fbc400ad428080808080018422071003220a41086a2900003703002004200a29000037038001200a1023200520002903003703002004200429038001220137037020042001370350200041d6a0c200ad4280808080d0018422081003220a41086a2900003703002004200a29000037038001200a102320092004290380012201370300200441306a41086a220b2005290300370300200441306a41106a220c2001370300200441306a41186a220d20002903003703002004200137037020042004290350370330200441186a200441306a4120108902200441186a41106a29030021012004290320210e2004280218210a20064200370300200942003703002005420037030020044200370350200020071003220941086a290000370300200420092900003703800120091023200520002903003703002004200429038001220737037020042007370350200020081003220941086a290000370300200420092900003703800120091023200620002903002207370300200b2005290300370300200c2004290380012208370300200d200737030020042008370370200420042903503703302004427f20014200200a1b220120037c200e4200200a1b220320027c22072003542200ad7c22022000200220015420022001511b22001b3703582004427f200720001b370350200441306aad4280808080800484200441d0006aad428080808080028410020c010b200441d0006a41186a22064200370300200441d0006a41106a22094200370300200441d0006a41086a220542003703002004420037035020044180016a41086a220041d5fbc400ad428080808080018422071003220a41086a2900003703002004200a29000037038001200a1023200520002903003703002004200429038001220137037020042001370350200041d6a0c200ad4280808080d0018422081003220a41086a2900003703002004200a29000037038001200a102320092004290380012201370300200441306a41086a220b2005290300370300200441306a41106a220c2001370300200441306a41186a220d200029030037030020042001370370200420042903503703302004200441306a4120108902200441106a29030021012004290308210e2004280200210a20064200370300200942003703002005420037030020044200370350200020071003220941086a290000370300200420092900003703800120091023200520002903003703002004200429038001220737037020042007370350200020081003220941086a290000370300200420092900003703800120091023200620002903002207370300200b2005290300370300200c2004290380012208370300200d200737030020042008370370200420042903503703302004427f20014200200a1b220120037c200e4200200a1b220320027c22072003542200ad7c22022000200220015420022001511b22001b3703582004427f200720001b370350200441306aad4280808080800484200441d0006aad428080808080028410020b20044190016a24000bdb0c040a7f027e017f017e230041900f6b220324002003200236020420032001360200200341086a2002ad4220862001ad84100410900102400240200328020822040d00200041033602000c010b200341086a41086a2802002105200328020c2106200341003a00f8082004210241002107024002400240024003400240024002402005450d0020022d0000220141014b0d002005417f6a2108200241016a21090240024002400240024020010e020100010b2008450d01200241026a21092005417e6a210120022d0001220a41014b0d02024002400240200a0e020001000b41002101200341003a00e0092005417e6a210a03400240200a2001470d00200220016a41026a2109200141ff0171450d05200341003a00e0090c050b200341c0096a20016a200220016a41026a2d00003a00002003200141016a22093a00e0092009210120094120470d000b200341f00e6a41186a220a200341c0096a41186a290300370300200341f00e6a41106a220b200341c0096a41106a290300370300200341f00e6a41086a220c200341c0096a41086a290300370300200320032903c0093703f00e200220096a21020240200520096b2209417e6a220141034b0d00200241026a21094102210a0c060b200241026a2800002108200341d00e6a41186a200a290300370300200341d00e6a41106a200b290300370300200341d00e6a41086a200c290300370300200320032903f00e3703d00e2009417a6a2101200241066a21094100210a0c010b200141034d0d0320022800022108200341d00e6a41186a200341c0096a41186a290200370300200341d00e6a41106a200341c0096a41106a290200370300200341d00e6a41086a200341c0096a41086a290200370300200320032902c0093703d00e2005417a6a2101200241066a21094101210a0b200341b00e6a41086a2202200341d00e6a41086a290300370300200341b00e6a41106a2205200341d00e6a41106a290300370300200341b00e6a41186a220b200341d00e6a41186a290300370300200320032903d00e3703b00e20014110490d02200941086a290000210d2009290000210e200341c0096a41186a200b290300370300200341c0096a41106a2005290300370300200341c0096a41086a2002290300370300200320032903b00e3703c009200941106a2109200141706a21012008210f0c030b20034180096a41186a200341a0096a41186a29030037030020034180096a41106a200341a0096a41106a29030037030020034180096a41086a200341a0096a41086a290300370300200320032903a009370380094102210a200821050c050b410021010b4102210a0b200341f00d6a41086a2202200341c0096a41086a290300370300200341f00d6a41106a2205200341c0096a41106a290300370300200341f00d6a41186a2208200341c0096a41186a290300370300200320032903c0093703f00d200a4102470d010b20034180096a41186a200341a0096a41186a290300370300200741ff0171450d03200341003a00f8080c030b200341a0096a41186a2008290300221037030020034180096a41086a200229030037030020034180096a41106a200529030037030020034180096a41186a2010370300200320032903f00d37038009200121050b20092102200341c8046a200741386c6a2201200a360200200141086a200329038009370200200141106a20034180096a41086a290300370200200141186a20034180096a41106a290300370200200141206a20034180096a41186a290300370200200141306a200d370200200141286a200e3702002001200f3602042003200741016a22013a00f808200121072001410a470d000b20032802c8042102200341c0096a200341c8046a41047241ac0410dc041a200141ff017141094b0d010b410321020c010b200341186a200341c0096a41ac0410dc041a20024103460d00200341c8046a200341186a41ac0410dc041a200041046a200341c8046a41ac0410dc041a0c010b200341003602c809200342013703c0092003410c36021c200320033602182003200341c0096a3602f00e200341dc046a4101360200200342013702cc0420034198c2c3003602c8042003200341186a3602d804200341f00e6a41b8a3c500200341c8046a102e1a20033502c80942208620033502c00984100820032802c409450d0020032802c00910230b200020023602002006450d00200410230b200341900f6a24000bfa0302077f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602080c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021052003200241786a3602242003200141086a36022020012800042106200341c8006a200341206a107e20032802482202450d00200341c8006a41086a2802002107200328024c2108200341c8006a200341206a107e20032802480d012008450d00200210230b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360208200328022c450d01200328022810230c010b200341286a41086a200341c8006a41086a280200220936020020032003290348220a370328200041106a20073602002000200836020c200020023602082000200636020420002005360200200041146a200a3702002000411c6a20093602000b2004450d00200110230b200341e0006a24000b8e0b040e7f027e037f037e230041c0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360234200320043602302003200341306a106e024002400240024002400240024002400240024002400240024020032802000d002003280234220641d8006e220741d8006c2201417f4c0d02200328020421080240024020010d00410821090c010b200110212209450d040b2008450d014100210a4100210b0340200341003a00b801200b41016a210c4100210102400240034020062001460d0120034198016a20016a2003280230220d2d00003a00002003200d41016a3602302003200141016a22023a00b8012002210120024120470d000b200341f8006a41086a220e20034198016a41086a290300370300200341f8006a41106a220f20034198016a41106a290300370300200341f8006a41186a221020034198016a41186a29030037030020032003290398013703782003200620026b2201360234200141104f0d010c0d0b20034100360234200141ff0171450d0c200341003a00b8010c0c0b2003200d41116a3602302003200141706a360234200d41096a2900002111200d290001211220034198016a200341306a1084012003280298012202450d0b20032802a0012113200328029c01210d20034198016a200341306a107e2003280298012206450d0a200328029c012114024020032802342201410f4b0d0020140d090c0a0b20032802a0012115200341d8006a41086a200e2903002216370300200341d8006a41106a200f2903002217370300200341d8006a41186a20102903002218370300200341386a41086a220e2016370300200341386a41106a220f2017370300200341386a41186a221020183703002003200329037822163703582003200141706a36023420032003280230220141106a36023020032016370338200141086a29000021162001290000211702402007200b470d00200b4101742201200c2001200c4b1b2207ad42d8007e2218422088a70d072018a722014100480d0702400240200b0d002001102121090c010b2009200b41d8006c2001102521090b2009450d060b2009200b41d8006c6a2201201737031020012011370308200120123703002001200636022c20012002360220200141186a2016370300200141346a2015360200200141306a2014360200200141286a2013360200200141246a200d36020020012003290338370338200141c0006a200e290300370300200141c8006a200f290300370300200141d0006a20102903003703000240200c2008470d00200341286a200836020020032007360224200320093602200c080b200a41d8006a210a20032802342106200c210b0c000b0b200341003602200c0a0b200341286a2008360200200320073602242003200936022020090d040c090b102f000b200141081030000b200141081030000b102a000b20002003290320370200200041086a200341206a41086a2802003602000c050b200610230b200d450d01200210230c010b200d450d00200210230b200341003602200240200b450d00200941306a210103400240200141746a280200450d00200141706a28020010230b02402001280200450d002001417c6a28020010230b200141d8006a2101200a41a87f6a220a0d000b0b2007450d00200910230b2003410036028001200342013703782003410c36025c2003200341086a3602582003200341f8006a360238200341ac016a41013602002003420137029c0120034198c2c300360298012003200341d8006a3602a801200341386a41b8a3c50020034198016a102e1a200335028001422086200335027884100820004100360200200328027c450d00200328027810230b2005450d00200410230b200341c0016a24000b810201037f230041d0006b220124002001412036020420012000360200200141086a2000ad4280808080800484100410900102400240200128020822020d00410421000c010b200128020c210302400240200141106a280200450d0020022d000022004104490d010b20014100360220200142013703182001410c36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c20014198c2c3003602382001200141286a360248200141346a41b8a3c500200141386a102e1a200135022042208620013502188410080240200128021c450d00200128021810230b410421000b2003450d00200210230b200141d0006a240020000be10c05077f017e037f037e017f23004190016b220324002003200236022420032001360220200341286a2002ad4220862001ad84100410900102400240200328022822010d00200041033a00040c010b200328022c21042003200341306a280200220536023c200320013602380240024020054104490d002001280000210620032005417c6a220236023c2003200141046a3602382002450d0020012d0004210220032005417b6a36023c2003200141056a360238200241024b0d000240024002400240024002400240024020020e03000102000b41002102200341003a0088012005417b6a2107417a21080340024020072002470d00200241ff0171450d09200341003a0088010c090b200341e8006a20026a200120026a220941056a2d00003a00002003200520086a36023c2003200941066a3602382003200241016a22093a0088012008417f6a21082009210220094120470d000b200341c8006a41086a20034183016a2d00003a00002003200329006f37005f200320032903683703582003200329007b220a370348200520096b2202417b6a41034d0d07200341e6006a2d0000210b20032f0164210c200328028401210d20032800772108200328026021072003290358210e2003290049210f200341c4006a41026a200341c0006a41026a2d00003a0000200320032f00403b0144200120096a220941056a28000021052003200241776a36023c2003200941096a3602382008411874200c200b4110747241ffffff077172210b200aa741ff01714118742008410876722109410021020c020b41002102200341003a0088012005417b6a21092005417a6a21050340024020092002470d00200241ff0171450d08200341003a0088010c080b200341e8006a20026a200120026a220841056a2d00003a00002003200841066a3602382003200241016a22083a0088012003200536023c2005417f6a21052008210220084120470d000b200341d0006a220220034183016a2d00003a000020032003290368220e370358200341c2006a20032d005a3a00002003200329006f37005f2003200329007b220a3703482003200e3d0140200335028401210f2003280077210720023100002110200329005f210e200328005b2105200328024c2109200341086a200341386a106e20032802080d06200328023c2202200328020c2208490d062008417f4c0d0202400240024020080d004101210d4101450d090c010b20081027220d450d01200d2003280238220b200810dc04210c2003200220086b36023c2003200b20086a360238200c450d080b200aa7210b200341c4006a41026a200341c0006a41026a2d00003a0000200320032f01403b0144200f420886201084210f410121020c020b200841011030000b200341186a200341386a106e20032802180d05200328023c2208200328021c2202490d052002417f4c0d010240024020020d00410121050c010b200210272205450d03200520032802382209200210dc041a2003200820026b36023c2003200920026a3602380b2005450d052002ad220e422086200e84210e200341106a200341386a106e20032802100d04200328023c22022003280214220b490d04200b417f4c0d0102400240200b0d00410121070c010b200b10272207450d04200720032802382208200b10dc041a20032002200b6b36023c20032008200b6a3602380b2007450d0441022102200341c4006a41026a200341e8006a41026a2d00003a0000200320032f00683b0144200b21090b200341e8006a41026a200341c4006a41026a2d0000220c3a0000200320032f014422113b016820002006360200200020113b0005200041076a200c3a0000200041306a20083600002000412c6a2008360000200041286a200d360000200041206a200f3700002000411c6a2009360000200041186a200b360000200041146a20073600002000410c6a200e370000200041086a20053600000c050b102f000b200241011030000b200b41011030000b200ea7450d00200510230b20034100360260200342013703582003410c36024c2003200341206a3602482003200341d8006a360240200341fc006a41013602002003420137026c20034198c2c3003602682003200341c8006a360278200341c0006a41b8a3c500200341e8006a102e1a200335026042208620033502588410080240200328025c450d00200328025810230b410321020b200020023a00042004450d00200110230b20034190016a24000b830301047f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022010d00200041003602080c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021052003200241786a3602242003200141086a36022020012800042102200341c8006a200341206a107b20032802482206450d002000200329024c37020c2000200636020820002002360204200020053602000c010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360208200328022c450d00200328022810230b2004450d00200110230b200341e0006a24000be40301057f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad8410041090010240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a106e0240024020032802000d002003280224220420032802042205490d002005417f4c0d030240024020050d0041012106200328022421040c010b200510272206450d05200620032802202207200510dc041a2003200420056b22043602242003200720056a3602200b024020044110490d002000200536020420002006360200200041106a20032802202206290000370300200041086a2005360200200041186a200641086a2900003703002003200441706a3602242003200641106a3602200c020b2005450d00200610230b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360200200328022c450d00200328022810230b2002450d00200110230b200341e0006a24000f0b102f000b200541011030000beb0808047f047e057f027e017f017e017f017e230041f0016b220324002003200236026420032001360260200341e8006a2002ad4220862001ad84100410900102400240200328026822040d00200041003602200c010b200328026c21052003200341f0006a280200220636029c01200320043602980141002101200341003a00e801024002400340024020062001470d002003410036029c01200141ff0171450d02200341003a00e8010c020b200341c8016a20016a200420016a22022d00003a00002003200241016a360298012003200141016a22023a00e8012002210120024120470d000b200341a8016a41086a200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200341a8016a41186a200341c8016a41186a290300370300200320032903c8013703a8012003200620026b36029c01200341c8006a20034198016a10eb022003290348a70d00200341c8006a41106a290300210720032903502108200341306a20034198016a10eb022003290330a70d00200341306a41106a29030021092003290338210a200341286a20034198016a106e20032802280d000240024002400240200328029c0141186e220b41186c2201417f4c0d00200328022c210c0240024020010d004108210d0c010b20011021220d450d020b0240200c450d00200341106a41106a210e4100210f41002106410021020340200341106a20034198016a10eb02024002402003290310a70d00200e290300211020032903182111200341086a20034198016a106e2003280208450d010b200b450d07200d10230c070b200241016a2101200328020c211202402002200b470d00200f2001200f20014b1b220bad42187e2213422088a70d062013a722144100480d060240024020020d0020141021210d0c010b200d200620141025210d0b200d450d050b200d20066a2202201037030820022011370300200241106a2012360200200f41026a210f200641186a210620012102200c2001470d000b0b200d450d04200341f8006a41186a200341a8016a41186a2903002210370300200341f8006a41106a200341a8016a41106a2903002211370300200341f8006a41086a200341a8016a41086a2903002213370300200320032903a8012215370378200041186a20093703002000200a37031020002007370308200020083703002000200cad422086200bad843702242000200d3602202000412c6a2015370200200041346a20133702002000413c6a2011370200200041c4006a20103702000c050b102f000b200141081030000b201441081030000b102a000b200341003602b001200342013703a8012003410c36027c2003200341e0006a3602782003200341a8016a3602a401200341dc016a4101360200200342013702cc0120034198c2c3003602c8012003200341f8006a3602d801200341a4016a41b8a3c500200341c8016a102e1a20033502b00142208620033502a8018410082000410036022020032802ac01450d0020032802a80110230b2005450d00200410230b200341f0016a24000bd90201047f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022010d00200041003602040c010b200228021421032002200241186a2802002204360224200220013602200240024020044104490d0020022004417c6a3602242002200141046a36022020012800002104200241c8006a200241206a107b20022802482205450d002000200229024c37020820002005360204200020043602000c010b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a2002350230422086200235022884100820004100360204200228022c450d00200228022810230b2003450d00200110230b200241e0006a24000be005010d7f230041e0006b220224002002412036020c20022001360208200241106a2001ad4280808080800484100410900102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a106e024002400240024020022802000d00024002400240200228022422054178712201417f4c0d002002280204210602400240200541037622070d00410421080c010b200110212208450d020b02402006450d00410021094100210a4100210b03402002410036022802400240024020054104490d0020022005417c6a220536022420022002280220220141046a3602202001280000210c2002410036022820054104490d00200b41016a210d20022005417c6a22053602242002200141086a36022020012800042101200b2007470d0202402009200d2009200d4b1b220741ffffffff01712007470d002007410374220e41004e0d020b102a000b200241003602482007450d08200810230c080b02400240200b0d00200e102121080c010b2008200a200e102521080b2008450d050b2008200a6a220b200c360200200b41046a2001360200200941026a2109200a41086a210a200d210b2006200d470d000b200241d0006a20063602002002200736024c200220083602480c060b200241d0006a20063602002002200736024c2002200836024820080d050c040b102f000b200141041030000b200e41041030000b200241003602480b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a2002350230422086200235022884100820004100360200200228022c450d01200228022810230c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2004450d00200310230b200241e0006a24000bbf05020a7f027e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad84100410900102400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a106e024002400240024020032802000d00024002400240200328022422064170712201417f4c0d002003280204210702400240200641047622080d00410821090c010b200110212209450d020b02402007450d004100210a410021024100210b034002400240024020064110490d00200b41016a210120032003280220220c41106a360220200c41086a290000210d200c290000210e200b2008470d020240200a2001200a20014b1b220841ffffffff00712008470d002008410474220b41004e0d020b102a000b20034100360248200320063602242008450d08200910230c080b0240024020020d00200b102121090c010b20092002200b102521090b2009450d050b200641706a2106200920026a220b200d370308200b200e370300200a41026a210a200241106a21022001210b20072001470d000b200341d0006a20073602002003200836024c20032009360248200320063602240c060b200341d0006a20073602002003200836024c2003200936024820090d050c040b102f000b200141081030000b200b41081030000b200341003602480b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034198c2c3003602482003200341386a360258200341c4006a41b8a3c500200341c8006a102e1a2003350230422086200335022884100820004100360200200328022c450d01200328022810230c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2005450d00200410230b200341e0006a24000bf90301027f20002d00002102024002400240024002400240410110212203450d00200320023a000020002d0001210220034101410210252203450d01200320023a000120002d0002210220034102410410252203450d02200320023a0002200320002d00033a000320002d0004210220034104410810252203450d03200320023a0004200320002d00053a0005200320002d00063a0006200320002d00073a000720002d0008210220034108411010252203450d04200320023a0008200320002d00093a0009200320002d000a3a000a200320002d000b3a000b200320002d000c3a000c200320002d000d3a000d200320002d000e3a000e200320002d000f3a000f20002d0010210220034110412010252203450d05200320023a0010200320002d00113a0011200320002d00123a0012200320002d00133a0013200320002d00143a0014200320002d00153a0015200320002d00163a0016200320002d00173a0017200320002d00183a0018200320002d00193a0019200320002d001a3a001a200320002d001b3a001b200320002d001c3a001c200320002d001d3a001d200320002d001e3a001e200320002d001f3a001f20012902002003ad42808080808004841002200310230f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000be70203017f017e017f23004190036b22032400200320023602b401200320013602b001200341b8016a2002ad4220862001ad84220410041090010240024020032802b80122010d00411a21010c010b20032802bc0121052003200341c0016a2802003602fc02200320013602f802200341c8016a200341f8026a10d9010240024020032802c8012202411a460d002003200341c8016a41047241ac0110dc041a0c010b20034100360208200342013703002003410c360284032003200341b0016a360280032003200336028c03200341dc016a4101360200200342013702cc0120034198c2c3003602c801200320034180036a3602d8012003418c036a41b8a3c500200341c8016a102e1a200335020842208620033502008410082003280204450d00200328020010230b02402005450d00200110230b411a21012002411a460d0020041005200221010b20002001360200200041046a200341ac0110dc041a20034190036a24000b881f03037f017e197f23004190016b220224000240024020012d00004101460d00200041003b0001200041013a0000200041036a41003a00000c010b200241106a200141016a10b403200241206a200141216a20022802102203200228021810b5030240024020022d00200d00200041800e3b0001200041013a0000200041036a41003a00000c010b200241386a41106a200241316a280000360200200241386a41086a200241296a29000037030020022002290021370338200241f0006a41086a220441fcfcc400ad4280808080e0008422051003220141086a2900003703002002200129000037037020011023200241d0006a41086a2206200429030037030020022002290370370350200420051003220141086a2900003703002002200129000037037020011023200241e0006a41086a2207200429030037030020022002290370370360200241f0006a200241386a10b603024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024041c00010212201450d00200120022903503700002001200229036037001020012002290070370020200141086a2006290300370000200141186a2007290300370000200141286a2004290000370000200141306a200241f0006a41106a290000370000200141386a200241f0006a41186a290000370000200241086a200141c00041014100410010b8012002280208210420011023024020044101470d00410c10212207450d0220022d0038210820022d0039210920022d003a210a20022d003b210b20022d003c210c20022d003d210d20022d003e210e20022d003f210f20022d0040211020022d0041211120022d0042211220022d0043211320022d0044211420022d0045211520022d0046211620022d0047211720022d0048211820022d0049211920022d004a211a20022d004b211b410a10212201450d032002420a370274200220013602704106200241f0006a105c0240024020022802742201200228027822066b4106490d00200228027021040c010b200641066a22042006490d1a2001410174221c2004201c20044b1b221c4100480d1a0240024020010d00201c102121040c010b20022802702001201c102521040b2004450d052002201c36027420022004360270201c21010b2002200641066a221c360278200420066a221d41046a41002f00c0e1433b0000201d41002800bce14336000002402001201c470d00200141016a221d2001490d1a2001410174221e201d201e201d4b1b221d4100480d1a0240024020010d00201d102121040c010b20042001201d102521040b2004450d062002201d360274200220043602700b2002200641076a3602782004201c6a20083a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0720022006360274200220043602700b2002200141016a360278200420016a20093a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0820022006360274200220043602700b2002200141016a360278200420016a200a3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0920022006360274200220043602700b2002200141016a360278200420016a200b3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0a20022006360274200220043602700b2002200141016a360278200420016a200c3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0b20022006360274200220043602700b2002200141016a360278200420016a200d3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0c20022006360274200220043602700b2002200141016a360278200420016a200e3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0d20022006360274200220043602700b2002200141016a360278200420016a200f3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0e20022006360274200220043602700b2002200141016a360278200420016a20103a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d0f20022006360274200220043602700b2002200141016a360278200420016a20113a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1020022006360274200220043602700b2002200141016a360278200420016a20123a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1120022006360274200220043602700b2002200141016a360278200420016a20133a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1220022006360274200220043602700b2002200141016a360278200420016a20143a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1320022006360274200220043602700b2002200141016a360278200420016a20153a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1420022006360274200220043602700b2002200141016a360278200420016a20163a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1520022006360274200220043602700b2002200141016a360278200420016a20173a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1620022006360274200220043602700b2002200141016a360278200420016a20183a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1720022006360274200220043602700b2002200141016a360278200420016a20193a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1820022006360274200220043602700b2002200141016a360278200420016a201a3a000002400240200228027420022802782201460d00200228027021040c010b200141016a22042001490d1a200141017422062004200620044b1b22064100480d1a0240024020010d002006102121040c010b200228027020012006102521040b2004450d1920022006360274200220043602700b2002200141016a360278200420016a201b3a0000200241e0006a41086a20022802782201360200200220022903702205370360200741086a200136020020072005370200200041306a41013a0000200041286a428180808010370200200041246a2007360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a42e400370300200041316a2002280070360000200041346a200241f3006a280000360000200041003a00002002280214450d1b200310230c1b0b200041800e3b0001200041013a0000200041036a41013a00000c190b41c00041011030000b410c41041030000b410a41011030000b201c41011030000b201d41011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b200641011030000b102a000b2002280214450d00200310230b20024190016a24000bbe0601077f20012d000021020240410110212203450d00200320023a000020012d00012102024020034101410210252203450d00200320023a000120012d00022102024020034102410410252203450d00200320023a0002200320012d00033a000320012d00042102024020034104410810252203450d00200320023a0004200320012d00053a0005200320012d00063a0006200320012d00073a000720012d00082102024020034108411010252203450d00200320023a0008200320012d00093a0009200320012d000a3a000a200320012d000b3a000b200320012d000c3a000c200320012d000d3a000d200320012d000e3a000e200320012d000f3a000f20012d00102102024020034110412010252204450d00200420023a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f024041c00010212205450d00200421064100210241c0002103034020062d00002107024002400240024020022003460d00200321010c010b200341016a22012003490d01200341017422082001200820014b1b22014100480d010240024020030d002001102121050c010b200520032001102521050b20050d00200141011030000b200520026a413041d700200741a001491b20074104766a3a00000240200241016a22082001460d00200121030c020b200141016a22032001490d00200141017422082003200820034b1b22034100480d000240024020010d002003102121050c010b200520012003102521050b02402005450d00200121080c020b200341011030000b102a000b200520086a413041d7002007410f712201410a491b20016a3a0000200641016a2106200241026a220241c000470d000b200020023602082000200336020420002005360200200410230f0b41c00041011030000b412041011030000b411041011030000b410841011030000b410441011030000b410241011030000b410141011030000be50c02097f027e230041a0026b22042400024002400240024002400240024002400240024002402003411f6a22050d004101210641002107410021080c010b41002107410021084101210603402005410a6e2109024020072008470d00200841016a220a2008490d032008410174220b200a200b200a4b1b220a4100480d030240024020080d00200a102121060c010b20062008200a102521060b2006450d07200a21080b200620076a2005200941766c6a4130723a0000200741016a2107200541094b210a20092105200a0d000b0b411a210b411a1021220a450d05200a41186a41002f00dae1433b0000200a41106a41002900d2e143370000200a41086a41002900cae143370000200a41002900c2e1433700000240024020070d00411a21070c010b2007411a6a22052007490d0120054134200541344b1b220b4100480d01200a411a200b1025220a450d07200620076a210c2006417f6a2109200a411a6a210503402005200920076a2d00003a0000200541016a21052007417f6a22070d000b200c20066b411a6a21070b02402008450d00200610230b0240200b20076b411e4b0d002007411f6a22052007490d01200b41017422082005200820054b1b22054100480d01200a200b20051025220a450d022005210b0b200a20076a220541002900b0d344370000200541176a41002900c7d344370000200541106a41002900c0d344370000200541086a41002900b8d344370000200b2007411f6a22076b20034f0d03200720036a22052007490d00200b41017422082005200820054b1b220541004e0d020b102a000b200541011030000b02400240200b0d0020051021210a0c010b200a200b20051025210a0b200a450d042005210b0b200a20076a2002200310dc041a200441d8016a41186a2205200720036aad422086200aad84100b220741186a290000370300200441d8016a41106a2208200741106a290000370300200441d8016a41086a2209200741086a290000370300200420072900003703d80120071023200441186a2005290300370300200441106a2008290300370300200441086a2009290300370300200420042903d8013703000240200b450d00200a10230b41002107200441206a41106a4100360200200441206a41086a420037030020044200370320200441d8016a2001200410b703024020042d00d8014101460d00200441d0016a20044191026a290000370300200441c8016a20044189026a290000370300200441c0016a20044181026a290000370300200441b8016a200441f9016a290000370300200441b0016a200441f1016a29000037030020044198016a41106a200441e9016a29000037030020044198016a41086a200441e1016a290000370300200420042900d90137039801410121070b200441d8016a41386a220820044198016a41386a290300370300200441d8016a41306a220920044198016a41306a290300370300200441d8016a41286a220620044198016a41286a290300370300200441d8016a41206a220a20044198016a41206a290300370300200441d8016a41186a220520044198016a41186a290300370300200441d8016a41106a20044198016a41106a290300370300200441d8016a41086a20044198016a41086a29030037030020042004290398013703d801024020070d00410021070c050b200441d8006a41386a2008290300370300200441d8006a41306a2009290300370300200441d8006a41286a2006290300370300200441d8006a41206a200a290300370300200441d8006a41186a2005290300370300200441d8006a41106a200441d8016a41106a2208290300370300200441d8006a41086a200441d8016a41086a2209290300370300200420042903d8013703582005200441d8006aad4280808080800884100b220741186a2900003703002008200741106a2900003703002009200741086a290000370300200420072900003703d80120071023200441386a41186a2005290300370300200441386a41106a2008290300370300200441386a41086a2009290300370300200441206a41106a200441d4006a2802002207360200200441206a41086a200441cc006a290200220d370300200420042903d80137033820042004290244220e370320200041116a2007360000200041096a200d3700002000200e370001410121070c040b200a41011030000b411a41011030000b200b41011030000b200541011030000b200020073a0000200441a0026a24000bc50301057f230041206b2202240020012d00002103024002400240024002400240410110212204450d00200420033a000020012d0001210320044101410210252204450d01200420033a000120012d0002210320044102410410252204450d02200420033a0002200420012d00033a000320012d0004210320044104410810252204450d03200420033a0004200420012d00053a0005200420012f00063b000620012d0008210320044108411010252204450d04200420033a0008200420012d00093a0009200420012f000a3b000a2004200128000c36000c20012d0010210320044110412010252204450d05200420033a0010200420012d00113a0011200420012f00123b0012200241186a22032004ad4280808080c002841001220141186a290000370300200241106a2205200141106a290000370300200241086a2206200141086a2900003703002002200129000037030020011023200041186a2003290300370000200041106a2005290300370000200041086a20062903003700002000200229030037000020041023200241206a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000ba30503017f017e027f23004190016b22032400024020012002101e2204422088a72201450d002004a722022d0000220541014b0d002001417f6a210602400240024020050e020001000b41002101200341003a008801200241016a21050340024020062001470d00200141ff0171450d04200341003a0088010c040b200341c8006a20016a200520016a2d00003a00002003200141016a22023a00880120022101200241c000470d000b200341106a200341d1006a290000370300200341186a200341d9006a290000370300200341206a200341e1006a290000370300200341286a200341e9006a290000370300200341306a200341f1006a290000370300200341386a200341f9006a2900003703002003413f6a20034180016a2900003700002003200329004937030820032d00482101410021020c010b2006450d0120022d0001220141034f0d01200341086a41376a200341c8006a41376a290000370000200341086a41306a200341c8006a41306a290000370300200341086a41286a200341c8006a41286a290000370300200341086a41206a200341c8006a41206a290000370300200341086a41186a200341c8006a41186a290000370300200341086a41106a200341c8006a41106a290000370300200341086a41086a200341c8006a41086a29000037030020032003290048370308410121020b200020013a0001200020023a0000200041026a20032903083700002000410a6a200341106a290300370000200041126a200341186a2903003700002000411a6a200341206a290300370000200041226a200341286a2903003700002000412a6a200341306a290300370000200041326a200341386a290300370000200041396a2003413f6a29000037000020034190016a24000f0b41f4b7c600412e200341c8006a41a4b8c6001031000b831703077f027e057f230041206b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024041ca0210212203450d00200241ca0236020420022003360200200341003b00002002410236020802400240200128020022042903684202520d00024020022802044102470d0020022802004102410410252203450d0420024104360204200220033602000b200228020041043a00022002200228020841016a3602080c010b024020022802044102470d0020022802004102410410252203450d0420024104360204200220033602000b20022802004184013a00022002200228020841016a3602082004200210d902024020042d0024220341024b0d0002400240024020030e03000102000b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d19200341017422052001200520014b1b22054100480d190240024020030d002005102121010c010b200228020020032005102521010b2001450d082002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d1a200341017422082005200820054b1b22084100480d1a0240024020030d002008102121050c010b200228020020032008102521050b2005450d0a2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c030b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d18200341017422052001200520014b1b22054100480d180240024020030d002005102121010c010b200228020020032005102521010b2001450d092002200536020420022001360200200228020821030b2002200341016a360208200120036a41013a0000200441256a2106410021010340200620016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d19200341017422082005200820054b1b22084100480d190240024020030d002008102121050c010b200228020020032008102521050b2005450d0b2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141c000470d000c020b0b02400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d17200341017422052001200520014b1b22054100480d170240024020030d002005102121010c010b200228020020032005102521010b2001450d0a2002200536020420022001360200200228020821030b2002200341016a360208200120036a41023a0000412521010340200420016a2d0000210702400240200228020420022802082203460d00200228020021050c010b200341016a22052003490d18200341017422082005200820054b1b22084100480d180240024020030d002008102121050c010b200228020020032008102521050b2005450d0c2002200836020420022005360200200228020821030b2002200341016a360208200520036a20073a0000200141016a220141e600470d000b0b0240024020042903684201510d0002400240200228020420022802082203460d00200228020021010c010b200341016a22012003490d18200341017422052001200520014b1b22054100480d180240024020030d002005102121010c010b200228020020032005102521010b2001450d0d2002200536020420022001360200200228020821030b2002200341016a360208200120036a41003a00000c010b200441f8006a29030020042903702209420c88220a4201200a4201561b80210a0240024020022802042201200228020822036b4102490d00200228020021010c010b200341026a22052003490d17200141017422032005200320054b1b22034100480d170240024020010d002003102121010c010b200228020020012003102521010b2001450d0d2002200336020420022001360200200228020821030b2002200341026a360208200120036a200aa741047420097aa7417f6a22034101200341014b1b2203410f2003410f491b723b00000b20044190016a200210af01200220044180016a360210200241106a200210c3010b20044198016a200210cb012002280208210320024100360218200242013703102003417e6a200241106a105c2002280208220141014d0d0b200228021821042002280214210b200228021021072002410036020820022802002103024002402001417e6a2208450d00410221062004450d13200320072d00003a00004101210c2002200228020841016a36020820044101460d13200720046a210d200320072d00013a00012002200228020841016a36020841022106200741026a21052004417e6a220e0d014100210e0c110b0240024002402002280204220120044f0d00200141017422052004200520044b1b22054100480d180240024020010d002005102121030c010b200320012005102521030b2003450d102002200536020420022003360200200228020821060c010b410021062004450d010b200320066a220120072d00003a0000024020044101470d00200641016a21060c010b2004417f6a2105200741016a2103200141016a21010340200120032d00003a0000200141016a2101200341016a21032005417f6a22050d000b200620046a21060b20022006360208410221060c110b024002402002280204220320016b200e490d00200228020021030c010b2001200e6a22062001490d15200341017422012006200120064b1b22014100480d150240024020030d002001102121030c010b200228020020032001102521030b2003450d0e20022001360204200220033602000b200320046a200341026a200810dd041a0240200420022802082203460d00200420036b21062004417e6a2101200228020020036a210c410021030340024020012003470d00200421060c130b200c20036a20052d00003a00002002200228020841016a360208200541016a21052006200341016a2203470d000b200d20056b220e0d004100210e4101210c0c0f0b200e4100480d14200e1021220c0d0e200e41011030000b41ca0241011030000b410441011030000b410441011030000b200541011030000b200841011030000b200541011030000b200841011030000b200541011030000b200841011030000b200541011030000b200341011030000b41ccbac000102b000b200541011030000b200141011030000b200421060b0240200d2005460d00200c20052d00003a00004101210f02400240200541016a2203200d470d00200c41016a21040c010b200c41016a21012007200420056b6a21050340200120032d00003a0000200141016a2101200d200341016a2203470d000b2005450d01200c20056a21042005210f0b0240024020022802042203200820066a22016b200f490d00200228020021030c010b2001200f6a22052001490d06200341017422012005200120054b1b22014100480d060240024020030d002001102121030c010b200228020020032001102521030b2003450d0520022001360204200220033602000b20032006200f6a220d6a200320066a200810dd041a0240200d20022802082203460d00200228020020036a21012006200f6a20036b2105200c2103034020042003460d01200120032d00003a00002002200228020841016a360208200341016a2103200141016a21012005417f6a22050d000b0b200d21060b200e450d00200c10230b2008450d010b0240200620022802082203460d002002280200220120036a200120066a200810dd041a0b2002200820036a3602080b0240200b450d00200710230b20002002290300370200200041086a200241086a280200360200200241206a24000f0b200141011030000b102a000b3400200041cefbc40036020420004100360200200041146a4102360200200041106a41a8e2c300360200200041086a42073702000bfb0101077f230041106b220124002001410036020820014201370300200110ba0320012802042102200128020021030240024002400240200041046a2802002204200041086a28020022056b20012802082206490d00200028020021040c010b200520066a22072005490d02200441017422052007200520074b1b22054100480d020240024020040d002005102121040c010b200028020020042005102521040b2004450d0120002004360200200041046a2005360200200041086a28020021050b200041086a200520066a360200200420056a2003200610dc041a02402002450d00200310230b200141106a24000f0b200541011030000b102a000bd90401037f20012d000021020240024002400240024002400240410110212203450d00200320023a000020012d0001210220034101410210252203450d01200320023a000120012d0002210220034102410410252203450d02200320023a0002200320012d00033a000320012d0004210220034104410810252203450d03200320023a0004200320012d00053a0005200320012d00063a0006200320012d00073a000720012d0008210220034108411010252203450d04200320023a0008200320012d00093a0009200320012d000a3a000a200320012d000b3a000b200320012d000c3a000c200320012d000d3a000d200320012d000e3a000e200320012d000f3a000f20012d0010210220034110412010252203450d05200320023a0010200320012d00113a0011200320012d00123a0012200320012d00133a0013200320012d00143a0014200320012d00153a0015200320012d00163a0016200320012d00173a0017200320012d00183a0018200320012d00193a0019200320012d001a3a001a200320012d001b3a001b200320012d001c3a001c200320012d001d3a001d200320012d001e3a001e200320012d001f3a001f0240200341cde4c300460d00200328000041f0c2c98b06470d070b200328000421044108210102400240034020014120460d01200320016a2102200141016a210120022d0000450d000b410021010c010b20002004360204410121010b20002001360200200310230f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000b20004100360200200310230bbb0401037f230041106b2202240020012d00002103024002400240024002400240410110212204450d00200420033a000020012d0001210320044101410210252204450d01200420033a000120012d0002210320044102410410252204450d02200420033a0002200420012d00033a000320012d0004210320044104410810252204450d03200420033a0004200420012d00053a0005200420012d00063a0006200420012d00073a000720012d0008210320044108411010252204450d04200420033a0008200420012d00093a0009200420012d000a3a000a200420012d000b3a000b200420012d000c3a000c200420012d000d3a000d200420012d000e3a000e200420012d000f3a000f20012d0010210320044110412010252204450d05200420033a0010200420012d00113a0011200420012d00123a0012200420012d00133a0013200420012d00143a0014200420012d00153a0015200420012d00163a0016200420012d00173a0017200420012d00183a0018200420012d00193a0019200420012d001a3a001a200420012d001b3a001b200420012d001c3a001c200420012d001d3a001d200420012d001e3a001e200420012d001f3a001f200241086a22032004ad42808080808004841003220141086a2900003703002002200129000037030020011023200041086a20032903003700002000200229030037000020041023200241106a24000f0b410141011030000b410241011030000b410441011030000b410841011030000b411041011030000b412041011030000bb80303017f017e027f230041d0006b22032400024020012002101f2204422088a72201450d002004a722022d0000220541014b0d002001417f6a210602400240024020050e020001000b41002101200341003a0049200241016a21050340024020062001470d00200141ff0171450d04200341003a00490c040b200341286a20016a200520016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d00282101410021020c010b2006450d0120022d0001220141034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a29000037030020032003290028370308410121020b200020013a0001200020023a0000200041026a20032903083700002000410a6a200341106a290300370000200041126a200341186a2903003700002000411a6a200341206a290300370000200341d0006a24000f0b41f4b7c600412e200341286a41a4b8c6001031000b4d01017f230041206b22002400200041146a410136020020004201370204200041d09dc6003602002000410436021c200041849ec6003602182000200041186a360210200041b8c5c3001038000b4d01017f230041206b22002400200041146a410136020020004201370204200041d09dc6003602002000410436021c200041849ec6003602182000200041186a360210200041d4c6c3001038000bfc1a01047f20002d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0001210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0002210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0003210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0420012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0004210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0005210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0620012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0006210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0007210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0820012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0008210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0009210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000a210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0b20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000b210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000c210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000d210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0e20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000e210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d0f20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d000f210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d1020012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0010210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d1120012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0011210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d1220012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0012210202400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d15200341017422052004200520044b1b22054100480d150240024020030d002005102121040c010b200128020020032005102521040b2004450d1320012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20023a000020002d0013210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d15200041017422022003200220034b1b22024100480d150240024020000d002002102121030c010b200128020020002002102521030b2003450d1420012003360200200141046a2002360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000f0b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200241011030000b102a000b3400200041fcfcc40036020420004100360200200041146a4102360200200041106a41d4e4c300360200200041086a42063702000b3701017f02404110102122020d00411041011030000b2002420037000820024200370000200042908080808002370204200020023602000b130020004102360204200041fce7c3003602000b130020004101360204200041a8eac3003602000ba60201057f230041106b22022400024002400240412310212203450d002002422337020420022003360200411f2002105c0240024020022802042204200228020822036b411f490d002003411f6a2105200228020021040c010b2003411f6a22052003490d03200441017422062005200620054b1b22064100480d030240024020040d002006102121040c010b200228020020042006102521040b2004450d0220022006360204200220043602000b20022005360208200420036a220341002900b0d344370000200341106a41002900c0d344370000200341176a41002900c7d344370000200341086a41002900b8d34437000020002002290300370200200041086a2002280208360200200241106a24000f0b412341011030000b200641011030000b102a000b89d5010c067f017e067f027e097f067e0d7f017e057f047e097f067e230022012102200141c01a6b41607122012400200141a80d6a41186a4200370300200141a80d6a41106a22034200370300200141a80d6a41086a22044200370300200142003703a80d200141f0166a41086a2205418cfdc400ad4280808080d000841003220641086a290000370300200120062900003703f0162006102320042005290300370300200120012903f01622073703f808200120073703a80d200541d8fdc300ad4280808080b001841003220641086a290000370300200120062900003703f01620061023200320012903f0162207370300200141c80d6a41086a2004290300370300200141c80d6a41106a2007370300200141c80d6a41186a2005290300370300200120073703f811200120012903a80d3703c80d200141c8046a200141c80d6a4120108602200041a08d066e210802400240024002400240024020012802c8044101470d0020012902cc042207422088a741e8076a2000470d00200141c80d6a4101410010ff0120012802c80d2106200141f0166a41086a2205418cfdc400ad4280808080d000841003220441086a290000370300200120042900003703f01620041023200141a8166a41086a22092005290300370300200120012903f0163703a816200541e3fdc300ad4280808080f000841003220441086a290000370300200120042900003703f01620041023200141b8166a41086a22042005290300370300200120012903f0163703b8162001200641e807703602f81120014180176a41186a2206200141f8116aad4280808080c000841001220541186a29000037030020014180176a41106a220a200541106a29000037030020014180176a41086a220b200541086a290000370300200120052900003703801720051023200141f8086a41186a220c2006290300370300200141f8086a41106a2206200a290300370300200141f8086a41086a220a200b29030037030020012001290380173703f8080240024041c00010212205450d00200520012903a816370000200541086a2009290300370000200520012903b816370010200541186a2004290300370000200520012903f808370020200541286a200a290300370000200541306a2006290300370000200541386a200c290300370000200141c80d6a200541c00010a60320012802c80d2104200141f8116a200141c80d6a41047241ac0410dc041a0240024020044103460d00200141f8086a200141f8116a41ac0410dc041a20051023200120043602c804200141c8046a410472200141f8086a41ac0410dc041a0c010b20051023200141023602c0082001410236028808200141023602d0072001410236029807200141023602e006200141023602a806200141023602f005200141023602b8052001410236028005200141023602c8040b2007a7210d200141c80d6aad220e4280808080c00084210741002104418cfdc400ad4280808080d00084210f02400340200141f0166a41086a2205200f1003220641086a290000370300200120062900003703f01620061023200141f8086a41086a22092005290300370300200120012903f0163703f808200541e3fdc300ad4280808080f000841003220641086a290000370300200120062900003703f01620061023200141f8116a41086a22062005290300370300200120012903f0163703f811200120043602c80d20014180176a41186a220a20071001220541186a29000037030020014180176a41106a220b200541106a29000037030020014180176a41086a220c200541086a290000370300200120052900003703801720051023200141a80d6a41186a2210200a290300370300200141a80d6a41106a220a200b290300370300200141a80d6a41086a220b200c29030037030020012001290380173703a80d41c00010212205450d01200520012903f808370000200520012903f811370010200520012903a80d370020200541086a2009290300370000200541186a2006290300370000200541286a200b290300370000200541306a200a290300370000200541386a20102903003700002005ad4280808080800884100520051023200441016a220441e807470d000b200141a80d6a41186a22094200370300200141a80d6a41106a220a4200370300200141a80d6a41086a22044200370300200142003703a80d200141f0166a41086a2205418cfdc400ad4280808080d000841003220641086a290000370300200120062900003703f0162006102320042005290300370300200120012903f01622073703f808200120073703a80d200541d8fdc300ad4280808080b001841003220641086a290000370300200120062900003703f01620061023200141f8116a41086a20052903002207370300200120012903f016220f3703f8112003200f370000200341086a2007370000200141c80d6a41086a2004290300370300200141c80d6a41106a200a290300370300200141c80d6a41186a2009290300370300200120012903a80d3703c80d200e4280808080800484100520012802c8042105200141f8116a200141c8046a41047241ac0410dc041a20054103460d03200120053602c80d200141c80d6a410472200141f8116a41ac0410dc041a200141f8116a2109200141c80d6a2105200141b0046a41106a210a0240024002400240024002400240034002400240024020092005460d0020052802002104200541386a2206210520044102460d03200141c8046a200641486a220b10c703200141b0046a20012802c804220520012802d0042204108902200a290300210f20012903b804210e024020012903b00422074201520d002004ad4220862005ad8410050b2007a72104024020012802cc04450d00200510230b2006210520044101470d03200b2802004101460d01200141c8046a41186a200641506a220541186a290000370300200141c8046a41106a200541106a290000370300200141c8046a41086a200541086a290000370300200120052900003703c8040c020b200141c8046a200141c80d6a41b00410dc041a200141f0096a4200370300200141e8096a4200370300200141d0096a4200370300200141c8096a4200370300200141f8086a41386a4200370300200141f8086a41306a4200370300200141f8086a41186a4200370300200141e0096a4100360200200141c0096a4100360200200141f8086a41286a41003602002001420037038809200142013703d809200142013703b80920014201370398092001410036028009200142013703f8084100210403400240200141c8046a200441386c6a22052802004102460d00200541306a290300210f200541286a290300210e42012107024002400240024020044103710e0403000102030b420221070c020b420321070c010b420421070b200141a0046a20074200200e200f10e104410110212206450d0b200141a0046a41086a290300210720012903a004210f200620043a0000200141f8086a20044105746a2205410472210902402005280204450d00200528020010230b20094101360200200520063602002005200f37031020054101360208200541186a20073703000b02402004450d00200141f8086a20044105746a221141086a21122011410472210c201141106a210941002106200141f8086a21050340024020042006220a41016a22066b220b20044d0d00411b210541ddc7c30021040c160b0240200a41024d0d0041152105418ec8c30021040c160b024002400240024002400240200a0e03000102000b200b4103490d030c190b200b41014b0d184107210a200b0e020301030b4109210a200b0d170c020b4108210a0c010b200b41046a210a0b02400240200141c8046a200a41ff017141386c6a220b2802004102460d00200b41306a290300210f200b41286a290300210e4201210702400240024002400240200a410f710e0a04030001040302040304040b420321070c030b420421070c020b420321070c010b420221070b20014190046a20074200200e200f10e104200541106a290300220f2001290390047c2207200929030058200541186a29030020014190046a41086a2903007c2007200f54ad7c220f200941086a290300220e58200f200e511b0d01200541086a280200220b417f4c0d132005280200211002400240200b0d00410121130c010b200b10212213450d0e0b20132010200b10dc042114200b41016a2210200b490d15200b41017422132010201320104b1b22154100480d1502400240200b0d002015102121130c010b2014200b2015102521130b2013450d0a2013200b6a200a3a00000240200c280200450d00201128020010230b20092007370300200c201536020020112013360200201220103602002009200f3703080c010b200541106a220b290300200929030058200541186a22102903002207200941086a290300220f582007200f511b0d00200541086a280200220a417f4c0d122005280200211302400240200a0d0041012115410021140c010b200a2114200a10212215450d0c0b20152013200a10dc04211320102903002107200b290300210f0240200c280200450d00201128020010230b2009200f370300200c2014360200201120133602002012200a360200200920073703080b200541206a210520042006470d000b0b200441016a22044104470d000b20012802e009211620012802dc09211720012802d8092112024020012802fc08450d0020012802f80810230b0240200128029c09450d0020012802980910230b024020012802bc09450d0020012802b80910230b0240024020160d004100211641082118410021060c010b201641ffffff1f712016470d11201641067422054100480d11200510212218450d0520014180176aad4280808080c000842119200141f8086aad4280808080800484211a20014180176a41106a210b200141e0186a410872210941002106201821050340201220066a2d0000220a410a460d01200142013703e018200141c8046a200a41386c6a2204280200220c4102460d0841002004200c4102461b2204290310210f200420012903f0183703102004290308210e200420012903e81837030820042903002107200420012903e0183703002004290328211b20044200370328200441186a220c290300211c200c20012903f818370300200441306a220c290300211d200c42003703002001200f3703f0182001200e3703e818200120073703e0182001201c3703f8182004290320210f200141a0176a41106a2211200941106a290200370300200141a0176a41086a2215200941086a290200370300200120092902003703a017410021042007422088a72210210c02402007a70d0020014180176a41186a22134200370300200b420037030020014180176a41086a220c42003703002001420037038017200141f0166a41086a22044191fdc400ad428080808090018422071003221441086a290000370300200120142900003703f01620141023200c2004290300370300200120012903f016220e3703c8162001200e370380172004418addc100ad4280808080a00184220e1003221441086a290000370300200120142900003703f01620141023200141c8166a41086a22142004290300221c370300200120012903f016221e3703c816200b201e370000200b41086a221f201c370000200141f8086a41086a2220200c290300370300200141f8086a41106a2221200b290300370300200141f8086a41186a2222201329030037030020012001290380173703f80820014188046a200141f8086a4120108f01200128028c042123200128028804212420134200370300200b4200370300200c42003703002001420037038017200420071003222541086a290000370300200120252900003703f01620251023200c2004290300370300200120012903f01622073703c81620012007370380172004200e1003222541086a290000370300200120252900003703f01620251023201420042903002207370300200120012903f016220e3703c816200b200e370000201f20073700002020200c2903003703002021200b2903003703002022201329030037030020012001290380173703f808410121042001202341e80720241b220c41016a36028017201a2019100220142015290300370300200141c8166a41106a2011290300370300200120012903a0173703c8160b2005201d3703082005201b370300200541146a2010360200200541106a2004360200200141c8166a41106a2903002107200141c8166a41086a290300210e20012903c816211b2005413c6a200a3a0000200541186a201b370300200541206a200e370300200541286a2007370300200541386a200c360200200541306a200f3703002005413d6a20012f00f8083b00002005413f6a200141f8086a41026a2d00003a0000200541c0006a21052016200641016a2206470d000b0b02402017450d00201210230b200141a80d6a41186a22214200370300200141a80d6a41106a22224200370300200141a80d6a41086a221f4200370300200142003703a80d200141f0166a41086a2210418cfdc400ad4280808080d00084221e1003220541086a290000370300200120052900003703f01620051023201f2010290300370300200120012903f01622073703a816200120073703a80d2010419efec300ad4280808080e001841003220541086a290000370300200120052900003703f01620051023200141b8166a41086a222620102903002207370300200120012903f016220f3703b8162003200f370000200341086a22272007370000200141f8086a41086a2228201f290300370300200141f8086a41106a22292022290300370300200141f8086a41186a222a2021290300370300200120012903a80d3703f80820014180046a200141f8086a4120108f01200141d4046a20012802840441002001280280041b360200200141c8046a41086a221241023a00002001410f3a00c804201820064106746a212b200141c8046a108e0120060d03201821130c0c0b200141c8046a2006414c6a1087020b200141c8046a200e200f10de01200621050c000b0b200141c8046aad22074280808080c00084211920074280808080800284212c200141f8086aad4280808080800484211a200d20086b222d200d4b212e200141c8046a41106a2115200141e0186a4104722123200141c8046a410572212f200141c8046a41036a2130200141c8046a41186a2125200141c8046a41206a2117200141c8046a41286a21312018211303402013220541086a29030021072005290300210e200528021021042015200541246a29020037030020252005412c6a2902003703002017200541346a28020036020020122005411c6a2902003703002001200541146a2902003703c804200541c0006a211320044102460d09200141c8166a41086a2012290300220f370300200141c8166a41106a2015290300221b370300200141c8166a41186a2025290300221c370300200141c8166a41206a20172802002209360200200120012903c804221d3703c81620052d003c212420052802382106200141a0176a41206a22052009360200200141a0176a41186a2209201c370300200141a0176a41106a220a201b370300200141a0176a41086a220b200f3703002001201d3703a017200120063602bc1a0240024002400240024002400240024002400240024020040d00200141d8036a200610c8034200211b4200211c0240200e20012903d803220f7d221d200e562007200141d8036a41086a2903007d200e200f54ad7d220f200756200f2007511b0d00200141e0186a200141bc1a6a10870220014180176a200141e0186a201d200f41084101108802024020012802801722050d00202542003703002015420037030020124200370300200142003703c804201041d5fbc400ad4280808080800184221c1003220441086a290000370300200120042900003703f0162004102320122010290300370300200120012903f016221b3703a80d2001201b3703c804201041d6a0c200ad4280808080d0018422321003220441086a290000370300200120042900003703f01620041023201f2010290300221b370300200120012903f01622333703a80d20152033370000201541086a220a201b3700002028201229030037030020292015290300370300202a2025290300370300200120012903c8043703f808200141c0036a200141f8086a4120108902200141c0036a41106a290300213320012903c803213420012802c003210420014180176a41106a2903002135200129038817211b202542003703002015420037030020124200370300200142003703c8042010201c1003220941086a290000370300200120092900003703f0162009102320122010290300370300200120012903f016221c3703a80d2001201c3703c804201020321003220941086a290000370300200120092900003703f01620091023201f2010290300221c370300200120012903f01622323703a80d20152032370000200a201c3700002028201229030037030020292015290300370300202a2025290300370300200120012903c8043703f808200142002033420020041b221c20357d2034420020041b2232201b54ad7d22332032201b7d221b2032562033201c562033201c511b22041b3703d00420014200201b20041b3703c804201a202c10020b201d211b200f211c20054101460d0b0b203120073703002025201c3703002001200e3703e8042001201b3703d804200120063602d404200120243a00d104200141043a00d0042001410f3a00c804200141c8046a108e010c010b200141e0186a41206a22362005280200360200200141e0186a41186a22372009290300370300200141e0186a41106a2238200a290300370300200141e0186a41086a2239200b290300370300200120012903a0173703e01820014180176a2023200e200741084101108802024020012802801722050d00202542003703002015420037030020124200370300200142003703c804201041d5fbc400ad4280808080800184221b1003220441086a290000370300200120042900003703f0162004102320122010290300370300200120012903f016220f3703a80d2001200f3703c804201041d6a0c200ad4280808080d00184221c1003220441086a290000370300200120042900003703f01620041023201f2010290300220f370300200120012903f016221d3703a80d2015201d370000201541086a220a200f3700002028201229030037030020292015290300370300202a2025290300370300200120012903c8043703f808200141e8036a200141f8086a4120108902200141e8036a41106a290300211d20012903f003213220012802e803210420014180176a41106a2903002133200129038817210f202542003703002015420037030020124200370300200142003703c8042010201b1003220941086a290000370300200120092900003703f0162009102320122010290300370300200120012903f016221b3703a80d2001201b3703c8042010201c1003220941086a290000370300200120092900003703f01620091023201f2010290300221b370300200120012903f016221c3703a80d2015201c370000200a201b3700002028201229030037030020292015290300370300202a2025290300370300200120012903c8043703f80820014200201d420020041b221b20337d2032420020041b221c200f54ad7d221d201c200f7d220f201c56201d201b56201d201b511b22041b3703d00420014200200f20041b3703c804201a202c10020b20054101460d09202542003703002015420037030020124200370300200142003703c8042010201e1003220541086a290000370300200120052900003703f0162005102320122010290300370300200120012903f0163703c804201041acfec300ad4280808080a00184221b1003220541086a290000370300200120052900003703f01620051023201f2010290300220f370300200120012903f016221c3703a80d2015201c370000201541086a223a200f3700002028201229030037030020292015290300370300202a2025290300370300200120012903c8043703f80820014180176a200141f8086a4120108b0202400240024002400240024020012802801722140d004200210f4104211441002104410021050c010b200129028417220fa7212041002105024002400240200f422088a7220b41014b0d0041002104200b0e020201020b200b2104034020052004410176220920056a220a20062014200a4102746a280200491b2105200420096b220441014b0d000b0b2006201420054102746a2802002204460d052005200620044b6a2104200b21052004200b4b0d020b20052020470d030b2005200fa7470d02200541016a22092005490d1b2005410174220a2009200a20094b1b220941ffffffff03712009470d1b2009410274220a41004e0d010c1b0b4180bbc000102b000b0240024020050d00200a102121140c010b20142005410274200a102521140b2014450d082009ad210f0b201420044102746a220941046a2009200520046b41027410dd041a20092006360200200541016a210b200fa721200b2021420037030020224200370300201f4200370300200142003703a80d2010201e1003220541086a290000370300200120052900003703f01620051023201f2010290300370300200120012903f016220f3703a8162001200f3703a80d2010201b1003220541086a290000370300200120052900003703f0162005102320262010290300220f370300200120012903f016221b3703b8162003201b3700002027200f3700002028201f29030037030020292022290300370300202a2021290300370300200120012903a80d3703f8080240024020140d00201a10050c010b200141003602d004200142013703c804200b200141c8046a105c02400240200b0d0020012802d004210b20012802cc04210a20012802c80421040c010b200b410274210c410020012802d00422056b210620012802cc04210a2014210903402009280200211102400240200a20066a4104490d0020012802c80421040c010b200541046a22042005490d1b200a410174220b2004200b20044b1b220b4100480d1b02400240200a0d00200b102121040c010b20012802c804200a200b102521040b2004450d092001200b3602cc04200120043602c804200b210a0b200941046a21092001200541046a220b3602d004200420056a20113600002006417c6a2106200b2105200c417c6a220c0d000b0b201a200bad4220862004ad8410020240200a450d00200410230b2020450d00201410230b20012802bc1a210420012802e0182105200141c8046a41c0006a200737030020152023290000370000203a202341086a290000370000201541106a202341106a290000370000201541186a202341186a2900003700002001200e37038005200120053602d404200141033a00d004200120043602f8042001410f3a00c804200120243a00d104200141c8046a108e012010201e1003220541086a290000370300200120052900003703f01620051023200141a8166a41086a223a2010290300370300200120012903f0163703a816201041f8fec300ad4280808080c001841003220541086a290000370300200120052900003703f0162005102320262010290300370300200120012903f0163703b81620012024410873410f7141027441b8fec3006a280200200d6a223b3602c80420014180176a41186a223c20191001220541186a29000037030020014180176a41106a223d200541106a29000037030020014180176a41086a223e200541086a2900003703002001200529000037038017200510232021203c2903003703002022203d290300370300201f203e29030037030020012001290380173703a80d41c00010212214450d04201420012903a816370000201420012903b816370010201420012903a80d370020201441086a203a290300370000201441186a2026290300370000201441286a201f290300370000201441306a2022290300370000201441386a2021290300370000200141c8046a201441c000108b0202400240024020012802c80422200d0041002105410421204200210f0c010b20012902cc04220f422088a72205200fa7470d010b02402005200fa7470d00200541016a22062005490d19200541017422092006200920064b1b220641ffffffff03712006470d19200641027422094100480d190240024020050d002009102121200c010b202020054102742009102521200b2020450d05200f428080808070832006ad84210f0b200f422088a721050b2020200541027422096a20043602000240024020200d002014ad428080808080088410050c010b200141003602d004200142013703c804200541016a2205200141c8046a105c0240024020050d0020012802d004210b20012802cc04210a20012802c80421040c010b410020012802d00422056b2106202020096a41046a211120012802cc04210a2020210903402009280200210c02400240200a20066a4104490d0020012802c80421040c010b200541046a22042005490d1b200a410174220b2004200b20044b1b220b4100480d1b02400240200a0d00200b102121040c010b20012802c804200a200b102521040b2004450d062001200b3602cc04200120043602c804200b210a0b2001200541046a220b3602d004200420056a200c3600002006417c6a2106200b21052011200941046a2209470d000b0b200fa721052014ad4280808080800884200bad4220862004ad8410020240200a450d00200410230b2005450d00202010230b201410232010201e1003220541086a290000370300200120052900003703f01620051023203a2010290300370300200120012903f0163703a81620104184ffc300ad4280808080b001841003220541086a290000370300200120052900003703f0162005102320262010290300370300200120012903f0163703b816200120012802bc1a22063602c804203c20191001220541186a290000370300203d200541106a290000370300203e200541086a2900003703002001200529000037038017200510232021203c2903003703002022203d290300370300201f203e29030037030020012001290380173703a80d41c00010212205450d01200520012903a816370000200520012903b816370010200520012903a80d370020200541086a203a290300370000200541186a2026290300370000200541286a201f290300370000200541306a2022290300370000200541386a2021290300370000200141c0003602cc04200120053602c8042023200141c8046a10f50120051023203041206a2036280200360000203041186a2037290300370000203041106a2038290300370000203041086a2039290300370000203020012903e0183700002028201229000037030020292015290000370300202a2025290000370300200141f8086a411f6a2205200141c8046a411f6a290000370000200120012900c8043703f808200141003a00cc042001203b3602c804202f20012903f808370000202f41086a2028290300370000202f41106a2029290300370000202f41186a202a290300370000202f411f6a20052900003700002006200141c8046a10c9030b202e0d082010201e1003220541086a290000370300200120052900003703f01620051023200141a8166a41086a2010290300370300200120012903f0163703a816201041d0ffc300ad42808080808001841003220541086a290000370300200120052900003703f0162005102320262010290300370300200120012903f0163703b816200120063602c80420014180176a41186a220420191001220541186a29000037030020014180176a41106a2206200541106a29000037030020014180176a41086a2209200541086a2900003703002001200529000037038017200510232021200429030037030020222006290300370300201f200929030037030020012001290380173703a80d024041c00010212220450d002024410873410f71410274220941b8fec3006a2802002211202d6a2104202020012903a816370000202020012903b816370010202020012903a80d3700204108210c202041086a200141a8166a41086a290300370000202041186a200141b8166a41086a290300370000202041286a200141a80d6a41086a290300370000202041306a2022290300370000202041386a2021290300370000200141c8046a202041c00010b0030240024020012802c80422050d00410021064200210f0c010b20012902cc04220f422088a721062005210c0b024002400240200420064b0d00200621050c010b0240200fa7220520066b200420066b220b4f0d002006200b6a220a2006490d1a20054101742214200a2014200a4b1b220a41ffffffff0071200a470d1a200a41047422144100480d1a0240024020050d0020141021210c0c010b200c200541047420141025210c0b200c450d02200f42808080807083200aad84210f0b200c200f422088a722054104746a210a024002400240200b4102490d00200a410020042006417f736a220b41047410db041a200c2011200d6a20056a200820066a6b4104746a41706a210a200b20056a21050c010b200b450d010b200a4200370308200a4200370300200541016a21050b200f42ffffffff0f832005ad42208684210f0b200420094190ffc3006a280200202d6a220a4b0d082004410474210603400240024002400240200520044b0d0020042005470d0102402005200fa7470d00200541016a22092005490d1e2005410174220b2009200b20094b1b220941ffffffff00712009470d1e2009410474220b4100480d1e0240024020050d00200b1021210c0c010b200c2005410474200b1025210c0b200c450d03200f422088a721052009ad210f0b200c20054104746a220920073703082009200e370300200f42ffffffff0f83200541016a2205ad42208684210f0c030b200c20066a22092009290300221b200e201b200e56200941086a2209290300221b200756201b2007511b220b1b3703002009201b2007200b1b3703000c020b200141dc046a4101360200200142013702cc04200141d09dc6003602c804200141043602fc08200141d8ffc3003602f8082001200141f8086a3602d804200141c8046a41e0ffc3001038000b200b41081030000b200641106a21062004200a492109200441016a210420090d000c0a0b0b201441081030000b41c00041011030000b41c00041011030000b200b41011030000b200941041030000b41c00041011030000b200b41011030000b200a41041030000b200c0d002020ad42808080808008841005202010230c010b200141003602d004200142013703c8042005200141c8046a105c024002400240200541047422040d0020012802d004210520012802cc04210920012802c804210a0c010b410020012802d00422056b2106200c20046a211120012802c804210a20012802cc042109200c21040340200441086a29030021072004290300210e0240200920066a410f4b0d00200541106a220b2005490d1220094101742214200b2014200b4b1b220b4100480d120240024020090d00200b1021210a0c010b200a2009200b1025210a0b200a450d03200b21090b200a20056a220b2007370008200b200e370000200641706a2106200541106a21052011200441106a2204470d000b200120093602cc04200120053602d0042001200a3602c8040b200fa721042020ad42808080808008842005ad422086200aad84100202402009450d00200a10230b02402004450d00200c10230b202010230c010b200b41011030000b2013202b470d000b202b21130c080b200541081030000b201541011030000b4193a1c3004133104a000b200a41011030000b200b41011030000b410141011030000b41c00041011030000b41c00041011030000b202b20136b2105024003402005450d01200541406a210520132802102104201341c0006a211320044102470d000b0b2016450d00201810230b410021040240024002400240024002400240200841e0f2796c410020006b460d00200141f8086a2109200141c8046a21040c010b200141d40d6a2008360200200141c80d6a41086a41003a00002001410f3a00c80d200141c80d6a108e014200210f200141c8046a41186a4200370300200141c8046a41106a220a4200370300200141c8046a41086a22064200370300200142003703c804200141f0166a41086a2205418cfdc400ad4280808080d000841003220941086a290000370300200120092900003703f0162009102320062005290300370300200120012903f0163703c804200541acfec300ad4280808080a001841003220941086a290000370300200120092900003703f01620091023200a20012903f0162207370300200141f8086a41086a2006290300370300200141f8086a41106a2007370300200141f8086a41186a2005290300370300200120073703a80d200120012903c8043703f808200141c80d6a200141f8086a4120108b020240024020012802c80d220a0d004104210a410421050c010b20012902cc0d220f422088a72104200a21050b2005200441027422046a210602400340024020040d004104211341002109410021110c020b2001200528020022093602c80d2004417c6a2104200541046a2105200141c80d6a10ca03450d000b02400240410410212213450d00201320093602004101210941012111034020062005460d032001200528020022043602c80d200541046a2105200141c80d6a10ca03450d00024020112009470d00200941016a220b2009490d0d2009410174220c200b200c200b4b1b221141ffffffff03712011470d0d2011410274220b4100480d0d0240024020090d00200b102121130c010b20132009410274200b102521130b2013450d030b201320094102746a2004360200200941016a21090c000b0b410441041030000b200b41041030000b0240200fa7450d00200a10230b200141a80d6a41186a220a4200370300200141a80d6a41106a220b4200370300200141a80d6a41086a22044200370300200142003703a80d200141f0166a41086a2205418cfdc400ad4280808080d000841003220641086a290000370300200120062900003703f0162006102320042005290300370300200120012903f01622073703f808200120073703a80d200541acfec300ad4280808080a001841003220641086a290000370300200120062900003703f01620061023200141f8116a41086a20052903002207370300200120012903f016220f3703f8112003200f370000200341086a2007370000200141c80d6a41086a2004290300370300200141c80d6a41106a200b290300370300200141c80d6a41186a200a290300370300200120012903a80d3703c80d0240024020130d00200141c80d6aad428080808080048410050c010b200141003602d004200142013703c8042009200141c8046a105c0240024020090d0020012802d004210b20012802cc04210a20012802c80421040c010b410020012802d00422056b2106201320094102746a211020012802cc04210a2013210903402009280200210c02400240200a20066a4104490d0020012802c80421040c010b200541046a22042005490d0c200a410174220b2004200b20044b1b220b4100480d0c02400240200a0d00200b102121040c010b20012802c804200a200b102521040b2004450d062001200b3602cc04200120043602c804200b210a0b2001200541046a220b3602d004200420056a200c3600002006417c6a2106200b21052010200941046a2209470d000b0b200141c80d6aad4280808080800484200bad4220862004ad8410020240200a450d00200410230b2011450d00201310230b200141f0166a41086a2205418cfdc400ad4280808080d000841003220441086a290000370300200120042900003703f01620041023200141f8086a41086a22062005290300370300200120012903f0163703f808200541f8fec300ad4280808080c001841003220441086a290000370300200120042900003703f01620041023200141f8116a41086a22042005290300370300200120012903f0163703f811200120083602c80d20014180176a41186a2209200141c80d6aad22074280808080c000841001220541186a29000037030020014180176a41106a220a200541106a29000037030020014180176a41086a220b200541086a290000370300200120052900003703801720051023200141a80d6a41186a220c2009290300370300200141a80d6a41106a2209200a290300370300200141a80d6a41086a220a200b29030037030020012001290380173703a80d41c00010212205450d01200520012903f808370000200520012903f811370010200520012903a80d370020200541086a2006290300370000200541186a2004290300370000200541286a200a290300370000200541306a2009290300370000200541386a200c290300370000200141c80d6a200541c000108b020240024020012802c80d2224450d002005ad4280808080800884100520012902cc0d211b0c010b4200211b410421240b200510230240201b422088a72205450d002005410274211120074280808080c0008421072024210903402009280200210a200141f0166a41086a2204418cfdc400ad4280808080d00084220f1003220541086a290000370300200120052900003703f01620051023200141a8166a41086a22062004290300370300200120012903f0163703a816200441c7f3c300ad4280808080a00184220e1003220541086a290000370300200120052900003703f01620051023200141b8166a41086a22152004290300370300200120012903f0163703b8162001200a3602c80d20014180176a41186a220b20071001220541186a29000037030020014180176a41106a220c200541106a29000037030020014180176a41086a2210200541086a290000370300200120052900003703801720051023200141f8086a41186a2212200b290300370300200141f8086a41106a2214200c290300370300200141f8086a41086a2213201029030037030020012001290380173703f808024002400240024041c00010212205450d00200520012903a816370000200541086a2006290300370000200520012903b816370010200541186a2015290300370000200520012903f808370020200541286a2013290300370000200541306a2014290300370000200541386a2012290300370000200141c80d6a200541c00010aa03024020012d00cc0d220641034622150d0020012802f00d212320012802f40d210820012802d00d212020012802d40d212520012802d80d212220012802dc0d210320012802e00d211f20012802e40d21210b20051023410121122006410371417e6a220541014b0d020240024020050e020100010b20150d040240200641014b0d00024020060e020600060b2008450d05202310230c050b02402025450d00202010230b201f450d04200310230c040b200120223602d004200120253602cc04200120203602c804200120213602d00d2001201f3602cc0d200120033602c80d200a4100200141c8046a200141c80d6a10b2021a2004200f1003220541086a290000370300200120052900003703f0162005102320132004290300370300200120012903f0163703f8082004200e1003220541086a290000370300200120052900003703f01620051023200141f8116a41086a22122004290300370300200120012903f0163703f8112001200a3602c80d200b20071001220541186a290000370300200c200541106a2900003703002010200541086a290000370300200120052900003703801720051023200141a80d6a41186a2204200b290300370300200141a80d6a41106a220a200c290300370300200141a80d6a41086a220b201029030037030020012001290380173703a80d41c00010212205450d01200520012903f808370000200520012903f811370010200520012903a80d370020200541086a2013290300370000200541186a2012290300370000200541286a200b290300370000200541306a200a290300370000200541386a20042903003700002005ad4280808080800884100520051023410021122015450d020c030b41c00041011030000b41c00041011030000b0240200641024b0d000240024020060e03030100030b2012450d0202402025450d00202010230b201f450d02200310230c020b2008450d01202310230c010b02402025450d00202010230b201f450d00200310230b200941046a21092011417c6a22110d000b0b200141c8046a2104200141f8086a2109201ba7450d00202410230b200141c8046a41186a4200370300200141c8046a41106a220a4200370300200141c8046a41086a220b4200370300200142003703c804200141f0166a41086a22054182fdc400ad4280808080a001841003220641086a290000370300200120062900003703f01620061023200441086a2005290300370000200420012903f016370000200541b39fc600ad42808080809001841003220441086a290000370300200120042900003703f01620041023200a20012903f0162207370300200141f8086a41086a200b290300370300200141f8086a41106a2007370300200141f8086a41186a2005290300370300200120073703a80d200120012903c8043703f8082009ad428080808080048410050240200041b009700d0010bf020b02400240200041c0930670450d00200141f8116a2109200141e0186a2117200141a0176a2126200141f8086a21240c010b200141f8086a41186a4200370300200141f8086a41106a22094200370300200141f8086a41086a22044200370300200142003703f808200141f0166a41086a220541aefcc400ad42808080809001841003220641086a290000370300200120062900003703f0162006102320042005290300370300200120012903f01622073703a017200120073703f808200541e8a1c100ad4280808080d002841003220641086a290000370300200120062900003703f01620061023200920012903f0162207370300200141f8116a41086a2004290300370300200141f8116a41106a2007370300200141f8116a41186a2005290300370300200120073703e018200120012903f8083703f81102400240200141f8116a109b02220541ff01714102460d00200141f8116aad4280808080800484100520054101710d010b200141f8086a2124200141a0176a2126200141e0186a2117200141f8116a2109200010d501450d01200010d8011a0c010b200141f8086a2124200141a0176a2126200141e0186a2117200141f8116a2109200010d801450d00200010d5011a0b200141f8086a41186a22064200370300200141f8086a41106a222a4200370300200141f8086a41086a22044200370300200142003703f808200141f0166a41086a220541aefcc400ad428080808090018422071003220a41086a2900003703002001200a2900003703f016200a1023200141a0176a41086a220b2005290300370300200120012903f0163703a017202441086a220c202641086a221029000037000020242026290000370000200541849fc100ad42808080809001841003220a41086a2900003703002001200a2900003703f016200a1023200141e0186a41086a22132005290300370300200120012903f0163703e018202a2017290000220f370300200141f8116a41086a22112004290300370300200141f8116a41106a2215200f370300200141f8116a41186a2212201741086a2214290000370300200120012903f8083703f811200141b8036a20094120108f0120012802bc03212520012802b803211f20064200370300202a420037030020044200370300200142003703f808200520071003220a41086a2900003703002001200a2900003703f016200a1023200b2005290300370300200120012903f0163703a017200c201029000037000020242026290000370000200541ec9ec100ad4280808080f001841003220a41086a2900003703002001200a2900003703f016200a102320132005290300370300200120012903f0163703e018200620142900002207370300201120042903003703002015201729000037030020122007370300200120012903f8083703f811200141b0036a20094120108f010240024020254100201f1b220520012802b403410020012802b0031b22044f0d0002400340200141c8046a200510e50120012802c8042206411a470d012004200541016a2205470d000c020b0b200141f8116a200141c8046a41047241bc0110dc041a200141f8086a200141f8116a41bc0110dc041a200141e0186a200141f8086a41bc0110dc041a200120063602d00d20012005ad22073703c80d200141d40d6a200141e0186a41bc0110dc04210a200141800f6a2802002000460d01200141d00d6a10db010b4100213c4108213a410021050c050b200141a0176a200a41bc0110dc041a200141c80d6a200141a0176a41bc0110dc041a024041c8011021223a450d00203a2006360208203a2007370300203a410c6a200141c80d6a41bc0110dc041a02400240200541016a220620044f0d000340200141c8046a200610e50120012802c804220a411a470d022004200641016a2206470d000b0b410121054101213c0c060b200141f8116a200141c8046a410472221341bc0110dc041a200141f8086a200141f8116a41bc0110dc041a200141e0186a200141f8086a41bc0110dc041a2001200a3602d00d20012006ad22073703c80d200141c80d6a410c6a200141e0186a41bc0110dc04210c41012105200141d00d6a2110200141800f6a2802002000470d04200641016a2106200141a0176a200c41bc0110dc041a410121054101213c0340200141c80d6a200141a0176a41bc0110dc041a0240203c2005470d00200541016a220b2005490d0a20054101742211200b2011200b4b1b223cad42c8017e220f422088a70d0a200fa7220b4100480d0a024002402005450d00203a200541c8016c200b1025213a0c010b200b1021213a0b203a450d050b203a200541c8016c6a220b200a360208200b2007370300200b410c6a200141c80d6a41bc0110dc041a200541016a2105200620044f0d0602400340200141c8046a200610e501024020012802c804220a411a460d00200141f8116a201341bc0110dc041a200141f8086a200141f8116a41bc0110dc041a200141e0186a200141f8086a41bc0110dc041a2001200a3602d00d20012006ad22073703c80d200c200141e0186a41bc0110dc04210b20012802800f2000470d02200641016a2106200141a0176a200b41bc0110dc041a0c030b2004200641016a2206470d000c080b0b0b201010db010c050b41c80141081030000b41c00041011030000b200b41011030000b200b41081030000b201010db014101213c0b203a200541c8016c6a212f024020050d00203a21030c020b200141f8116a4104722105200141f8086aad4280808080c00084213f200141c8166aad4280808080c0008421402009ad42808080808004842141200141e0186a41106a2123200141c80d6a4104722116203a210303402003280200210920032802082104200141c80d6a2003410c6a41bc0110dc041a200341c8016a21032004411a460d02200141c8046a200141c80d6a41bc0110dc041a200120043602c80d2016200141c8046a41bc0110dc041a200141f8086a200910df0120012802f808210c0240024020012802800922040d0042002132420021334200212c420021344200211c420021190c010b2004410574210a4200211c200c2104420021194200212c4200213442002132420021330340200141a0036a200410e301200141a0036a41086a290300210f20012903a003210720052004290000370000200541086a200441086a290000370000200541106a200441106a290000370000200541186a200441186a290000370000200120093602f81120014198036a200141f8116a10e00120012d00980341017121060240024020012d009903220b0d00200141d8026a2007200f420a420010e20420012903d802220e2107200141d8026a41086a290300221b210f0c010b200141f8026a200f4200200bad220e420010e10420014188036a20074200200e420010e104200141e8026a420042002007420010e104427f20014188036a41086a290300220e20012903f80220012903e8027c7c221b20012903800320012903f00284420052201b200e5472220b1b211b427f200129038803200b1b210e0b200441206a21044200201b20061b20347c4200200e20061b221d202c7c222c201d54ad7c2134201b420020061b20337c200e420020061b220e20327c2232200e54ad7c2133200f20197c2007201c7c221c200754ad7c2119200a41606a220a0d000b0b024020012802fc08450d00200c10230b200141f8086a200910df0120012802f80821110240024020012802800922040d004200211d420021354200211e420021424200211b4200211a0c010b2004410574210a4200211b201121044200211a4200211e420021424200211d42002135034020052004290000370000200541086a200441086a2206290000370000200541106a200441106a220b290000370000200541186a200441186a220c290000370000200120093602f811200141d0026a200141f8116a10e00120012d00d002211020012d00d1022113200141f8116a41186a200c290000370300200141f8116a41106a200b290000370300200141f8116a41086a2006290000370300200120042900003703f811200141b0026a2009200141f8116a2013411010e101200141b0026a41186a290300201a7c20012903c0022207201b7c221b200754ad7c211a4200200141b0026a41086a2903002207201041017122061b20427c420020012903b002220f20061b220e201e7c221e200e54ad7c21422007420020061b20357c200f420020061b2207201d7c221d200754ad7c2135200441206a2104200a41606a220a0d000b0b024020012802fc08450d00201110230b200141e0186a41186a2206420037030020234200370300200141e0186a41086a22084200370300200142003703e018200141f0166a41086a222241d5fbc400ad42808080808001841003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e018202241d6a0c200ad4280808080d001841003220441086a290000370300200120042900003703f01620041023200141f8116a41086a222920222903002207370300200120012903f016220f3703f8112023200f370000202341086a2007370000200141a0176a41086a22102008290300370300200141a0176a41106a22132023290300370300200141a0176a41186a22112006290300370300200120012903e0183703a01720014198026a200141a0176a412010890220014198026a41106a290300420020012802980222041b210720012903a002420020041b210f02400240201b201c7c220e420288201a20197c200e201b54ad7c221b423e8684221c201b420288221984500d00201c200e852019201b8584500d00410021040240034020014188026a200e201b200441046a41fe007110e004200441026a2104200129038802221c20014188026a41086a290300221984500d01201c200e852019201b858450450d000b0b200141f8016a200e201b200441fe007110e00420012903f801200141f8016a41086a29030084211c42002119024020040d00201c420052ad211c0c020b201c420052ad211c0340200141d8016a200e201b41002004417e6a2206200620044b1b220441ff007110e004200141e8016a201c4201862243420184221a2019420186201c423f88842219201a201910e1042043201a20012903e80120012903d80156200141e8016a41086a290300221c200141d8016a41086a290300224456201c2044511b1b211c20040d000c020b0b42002119200e201b84420052ad211c0b02400240200f4202882007423e8684220e2007420288221b84500d00200e200f85201b20078584500d004100210402400340200141c8016a200f2007200441046a41fe007110e004200441026a210420012903c801220e200141c8016a41086a290300221b84500d01200e200f85201b2007858450450d000b0b200141b8016a200f2007200441fe007110e00420012903b801200141b8016a41086a29030084210e4200211b024020040d00200e420052ad210e0c020b200e420052ad210e034020014198016a200f200741002004417e6a2206200620044b1b220441ff007110e004200141a8016a200e4201862243420184221a201b420186200e423f8884221b201a201b10e1042043201a20012903a80120012903980156200141a8016a41086a290300220e20014198016a41086a290300224456200e2044511b1b210e20040d000c020b0b4200211b200f200784420052ad210e0b02400240024002400240201c20198450450d004100210c0c010b204220347c201e202c7c220f201e54ad7c211e203520337c201d20327c2207201d54ad7c211d02400240024020012d00800f0e03010200010b2007200f56201d201e56201d201e511b210c0c020b0340200141c8006a200f201e201c201910e204200e2232201b2233844200510d04200141c8006a41086a290300210e2001290348211b200141386a2007201d2032203310e2044101210c201b2001290338222c54200e200141386a41086a290300221a54200e201a5122041b0d020240202c201b54201a200e5420041b450d004100210c0c030b200141286a201b200e201c201910e104200141186a202c201a2032203310e104024020072001290318220e7d221b201d200141186a41086a2903007d2007200e54ad7d221a84500d00201e200141286a41086a2903007d212c200f20012903282207542104200f20077d210e201c21072019211d201b211c201a21192032210f2033211e200e202c2004ad7d221b84500d030c010b0b4100210c0c010b03402019211a201c2132200e201b844200510d02200141f8006a2007201d2032201a10e20420014188016a200f201e200e201b10e2044101210c20012903880122332001290378222c5420014188016a41086a290300221c200141f8006a41086a290300221954201c20195122041b0d010240202c2033542019201c5420041b450d004100210c0c020b200141e8006a2033201c200e201b10e104200141d8006a202c20192032201a10e104024020072001290358221c7d2219201d200141d8006a41086a2903007d2007201c54ad7d22338450450d004100210c0c020b201e200141e8006a41086a2903007d212c200f20012903682207542104200f20077d211c200e2107201b211d2019210e2033211b2032210f201a211e201c202c2004ad7d2219844200520d000b0b200141f8116a200910df0120012802f811212820012802fc1121302001280280122204450d022028200441057422256a21212028210402400340200141f8086a41186a2206200441186a2215290000370300200141f8086a41106a220a200441106a2212290000370300200141f8086a41086a220b200441086a2214290000370300200120042900003703f80820042900002107200541186a221f201529000037000020052007370000200541086a22152014290000370000200541106a22142012290000370000200120093602f811200141106a200141f8116a10e0012010200b2903003703002013200a29030037030020112006290300370300200120012903f8083703a0170240200c20012d001041017145734101470d0020012d00112112200441206a21040c020b200441206a2104202541606a22250d000c040b0b0340200141c8166a41186a20112903002207370300200141c8166a41106a2013290300220f370300200141c8166a41086a2010290300220e370300200120012903a017221b3703c816200141f8116a41186a2007370300200141f8116a41106a200f3703002029200e370300200142e4cab5fbb6ccdcb0e3003703b8162001201b3703f811200141b8166a200141f8116a201241187441187541027441c0b1c0006a280200418084076c20006a10f80120042021460d03024003402006200441186a2212290000370300200a200441106a2225290000370300200b200441086a2220290000370300200120042900003703f808200120093602f811202029000021072025290000210f2004290000210e201f20122900003700002014200f370000201520073700002005200e370000200141086a200141f8116a10e0012010200b2903003703002013200a29030037030020112006290300370300200120012903f8083703a017200c20012d000841017145730d012021200441206a2204470d000c050b0b20012d00092112200441206a21040c000b0b41b0c4c300102b000b41b0c4c300102b000b02402030450d00202810230b200910e40102400240200c0d00200141053a0080122001200936028412200141083a00f811200141f8116a108e01200141f8086a41186a22064200370300200141f8086a41106a220a4200370300200141f8086a41086a220b4200370300200142003703f808202241aefcc400ad42808080809001841003220441086a290000370300200120042900003703f0162004102320102022290300370300200120012903f0163703a017202441086a202641086a29000037000020242026290000370000202241849fc100ad42808080809001841003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e018202a2017290000370000202a41086a201741086a2900003700002029200b290300370300200141f8116a41106a200a290300370300200141f8116a41186a2006290300370300200120012903f8083703f8112001200941016a3602f8082041203f1002200141c80d6a10db010c010b2001200936028412200141043a008012200141083a00f811200141f8116a108e010240024020012802fc0e2206450d00200141f8116a200141c80d6a41b00110dc041a200120093602a813202241aefcc400ad428080808090018422071003220441086a290000370300200120042900003703f0162004102320102022290300370300200120012903f0163703a017202241aff3c000ad4280808080d00184220f1003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e0182001200620006a221f3602c81620014180176a41186a221320401001220441186a29000037030020014180176a41106a2211200441106a29000037030020014180176a41086a2206200441086a290000370300200120042900003703801720041023200141f8086a41186a220a2013290300370300200141f8086a41106a220b2011290300370300200141f8086a41086a220c200629030037030020012001290380173703f8080240024002400240024002400240024002400240024002400240024002400240024002400240024041c00010212204450d00200420262900003700002004201729000037001020042024290000370020200441086a202641086a2212290000370000200441186a201741086a2214290000370000200441286a202441086a2225290000370000200441306a202441106a2220290000370000200441386a202441186a2221290000370000200141e0186a2004ad4280808080800884220e10041090010240024020012802e0180d002001410036028009200142013703f8084100200141f8086a105c200141a80d6a41086a200128028009360200200120012903f8083703a80d0c010b200141a80d6a41086a2008280200360200200120012903e0183703a80d0b2006200141a80d6a41086a2802002215360200200120012903a80d37038017024002400240024002402015450d00200141f8086a20012802801720154101106920012802f8084101460d0420012802fc08213d20012802840922152001280280092228460d03200128028817201520286b6a223041046a223e417f4c0d1d203e0d014101212b0c020b410120014180176a105c20012802841721282001280288172115024020012802f811411a470d000240024020282015460d0020012802801721280c010b201541016a22282015490d20201541017422302028203020284b1b22304100480d200240024020150d002030102121280c010b20012802801720152030102521280b2028450d072001203036028417200120283602801720012802881721150b2001201541016a36028817202820156a41003a00000c140b0240024020282015460d0020012802801721280c010b201541016a22282015490d1f201541017422302028203020284b1b22304100480d1f0240024020150d002030102121280c010b20012802801720152030102521280b2028450d072001203036028417200120283602801720012802881721150b2001201541016a36028817202820156a41013a0000200141f8116a20014180176a10cb01200141f8116a41b0016a280200213002400240200128028417222820012802881722156b4104490d0020012802801721280c010b201541046a223d2015490d1f20284101742215203d2015203d4b1b22154100480d1f0240024020280d002015102121280c010b20012802801720282015102521280b2028450d082001201536028417200120283602801720012802881721150b2001201541046a36028817202820156a20303600000c130b203e1021222b450d070b2001203e3602cc162001202b3602c816200120303602d0162001200141c8166a3602f808203d200141f8086a201510920120302015490d0720012802d016223d2030490d08200128028817223d2028490d0920012802c816213e200128028017212b2001203020156b22303602b81a2001203d20286b223d3602bc1a2030203d470d0a203e20156a202b20286a203010dc041a20012802cc16212820012802d01621150240024020012802f811411a470d000240024020282015460d0020012802c81621280c010b201541016a22282015490d1f201541017422302028203020284b1b22304100480d1f0240024020150d002030102121280c010b20012802c81620152030102521280b2028450d0e200120303602cc16200120283602c81620012802d01621150b2001201541016a3602d016202820156a41003a00000c010b0240024020282015460d0020012802c81621280c010b201541016a22282015490d1e201541017422302028203020284b1b22304100480d1e0240024020150d002030102121280c010b20012802c81620152030102521280b2028450d0e200120303602cc16200120283602c81620012802d01621150b2001201541016a3602d016202820156a41013a0000200141f8116a200141c8166a10cb01200141f8116a41b0016a28020021300240024020012802cc16222820012802d01622156b4104490d0020012802c81621280c010b201541046a223d2015490d1e20284101742215203d2015203d4b1b22154100480d1e0240024020280d002015102121280c010b20012802c81620282015102521280b2028450d0f200120153602cc16200120283602c81620012802d01621150b2001201541046a3602d016202820156a20303600000b20012802d016212820012802cc16213020012802c8162115200128028417450d1220012802801710230c120b200120014180176a3602f808203d200141f8086a202810920120012802841721282001280288172115024020012802f811411a470d000240024020282015460d0020012802801721280c010b201541016a22282015490d1d201541017422302028203020284b1b22304100480d1d0240024020150d002030102121280c010b20012802801720152030102521280b2028450d0f2001203036028417200120283602801720012802881721150b2001201541016a36028817202820156a41003a00000c110b0240024020282015460d0020012802801721280c010b201541016a22282015490d1c201541017422302028203020284b1b22304100480d1c0240024020150d002030102121280c010b20012802801720152030102521280b2028450d0f2001203036028417200120283602801720012802881721150b2001201541016a36028817202820156a41013a0000200141f8116a20014180176a10cb01200141f8116a41b0016a280200213002400240200128028417222820012802881722156b4104490d0020012802801721280c010b201541046a223d2015490d1c20284101742215203d2015203d4b1b22154100480d1c0240024020280d002015102121280c010b20012802801720282015102521280b2028450d102001201536028417200120283602801720012802881721150b2001201541046a36028817202820156a20303600000c100b200128028417450d1120012802801710230c110b41c00041011030000b203041011030000b203041011030000b201541011030000b203e41011030000b20152030103e000b2030203d1036000b2028203d103e000b200141e0186a41146a410d360200200141ec186a410e360200200141a0176a41146a4103360200200142033702a417200141acb6c6003602a0172001410e3602e4182001200141b81a6a3602a8162001200141bc1a6a3602f0162001420437038809200142013702fc0820014180b7c6003602f8082001200141e0186a3602b0172001200141f8086a3602f0182001200141f0166a3602e8182001200141a8166a3602e018200141a0176a41bcb7c6001038000b203041011030000b203041011030000b201541011030000b203041011030000b203041011030000b201541011030000b2001280288172128200128028417213020012802801721150b2015450d00200e2028ad4220862015ad84100202402030450d00201510230b200410230c010b20041023202220071003220441086a290000370300200120042900003703f0162004102320102022290300370300200120012903f0163703a0172022200f1003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e0182001201f3602c816201320401001220441186a2900003703002011200441106a2900003703002006200441086a290000370300200120042900003703801720041023200a2013290300370300200b2011290300370300200c200629030037030020012001290380173703f80841c00010212204450d01200420262900003700002004201729000037001020042024290000370020200441086a2012290000370000200441186a2014290000370000200441286a2025290000370000200441306a2020290000370000200441386a2021290000370000200141f8086a200141f8116a410110ca012004ad428080808080088420013502800942208620012802f8082206ad841002024020012802fc08450d00200610230b200410230b024020012802f811411a460d00200141f8116a10db010b200a4200370300200b4200370300200c4200370300200142003703f808202220071003220441086a290000370300200120042900003703f0162004102320102022290300370300200120012903f0163703a0172025201229000037000020242026290000370000202241849fc100ad42808080809001841003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e018202a2017290000370000202a41086a20142900003700002029200c290300370300200141f8116a41106a200b290300370300200141f8116a41186a200a290300370300200120012903f8083703f8112001200941016a3602f8080c020b41c00041011030000b200141f8116a200141c80d6a41b00110dc041a200141003b01f808200141e0186a200141f8116a200141f8086a108d02200120012d00e8184102463a008112200141073a0080122001200936028412200141083a00f811200141f8116a108e01200141f8086a41186a22064200370300200141f8086a41106a220a4200370300200141f8086a41086a220b4200370300200142003703f808202241aefcc400ad42808080809001841003220441086a290000370300200120042900003703f0162004102320102022290300370300200120012903f0163703a017202441086a202641086a29000037000020242026290000370000202241849fc100ad42808080809001841003220441086a290000370300200120042900003703f0162004102320082022290300370300200120012903f0163703e018202a2017290000370000202a41086a201741086a2900003700002029200b290300370300200141f8116a41106a200a290300370300200141f8116a41186a2006290300370300200120012903f8083703f8112001200941016a3602f8080b2041203f10020b2003202f470d000b202f21030c010b102f000b02402003202f460d00200141c80d6a41086a2104200141c80d6a410c6a21060340200341086a280200210520032903002107200141c80d6a2003410c6a41bc0110dc041a2005411a460d01200141c8046a200141c80d6a41bc0110dc041a200120053602d00d200120073703c80d2006200141c8046a41bc0110dc041a200410db01200341c8016a2203202f470d000b0b0240203c450d00203a10230b200141f0166a41086a220541aefcc400ad42808080809001841003220441086a290000370300200120042900003703f01620041023200141a0176a41086a2005290300370300200120012903f0163703a017200541aff3c000ad4280808080d001841003220441086a290000370300200120042900003703f01620041023200141e0186a41086a2005290300370300200120012903f0163703e018200120003602c80d20014180176a41186a2204200141c80d6aad4280808080c000841001220541186a29000037030020014180176a41106a2206200541106a29000037030020014180176a41086a2209200541086a290000370300200120052900003703801720051023200141f8086a41186a2004290300370300200141f8086a41106a2006290300370300200141f8086a41086a200929030037030020012001290380173703f8080240024041c00010212205450d00200520262900003700002005201729000037001020052024290000370020200541086a202641086a290000370000200541186a201741086a290000370000200541286a202441086a290000370000200541306a202441106a290000370000200541386a202441186a290000370000200141c80d6a200541c00010f4010240024020012802c80d220c450d002005ad4280808080800884100520012902cc0d21070c010b420021074108210c0b20051023200c2007422088a7220441b8016c22066a2109200c210502402004450d00200641c87e6a2106200141c80d6a410472210b200c21050240034020052802002104200141c8046a200541046a41ac0110dc041a2004411b460d01200141c80d6a200141c8046a41ac0110dc041a0240024002402004411a470d0020060d01200921050c050b200541b0016a280200210a200141f8116a200141c80d6a41ac0110dc041a200120043602c80d200b200141f8116a41ac0110dc041a200141003b01c804200141f8086a200141c80d6a200141c8046a108d0220012d00800921042001200a3602d40d200120044102463a00d10d200141073a00d00d200141083a00c80d200141c80d6a108e012006450d010b200541b8016a2105200641c87e6a21060c010b0b200921050c010b200541b8016a21050b2007a7210a20052009460d01200141c80d6a4104722106034020052802002104200141c80d6a200541046a41b40110dc041a2004411b460d02200141c8046a200141c80d6a41b40110dc041a200120043602c80d2006200141c8046a41b40110dc041a02402004411a460d00200141c80d6a10db010b200541b8016a22052009470d000c020b0b41c00041011030000b0240200a450d00200c10230b20014180176a41186a220a420037030020014180176a41106a2206420037030020014180176a41086a220442003703002001420037038017200141f0166a41086a22054188e0c100ad4280808080f00184220f1003220941086a290000370300200120092900003703f0162009102320042005290300370300200120012903f01622073703c8162001200737038017200541fccfc300ad4280808080b00184220e1003220941086a290000370300200120092900003703f01620091023200620012903f0162207370300200141f8086a41086a22092004290300370300200141f8086a41106a220b2007370300200141f8086a41186a220c2005290300370300200120073703c81620012001290380173703f8082001200141f8086a412041014100410010b801024020012802004101470d00200a4200370300200642003703002004420037030020014200370380172005200f1003221041086a290000370300200120102900003703f0162010102320042005290300370300200120012903f01622073703c81620012007370380172005200e1003221041086a290000370300200120102900003703f01620101023200141c8166a41086a20052903002207370300200120012903f016220f3703c8162006200f370000200641086a200737000020092004290300370300200b2006290300370300200c200a29030037030020012001290380173703f808200141203602cc162001200141f8086a3602c816200141f8116a200141f8086aad4280808080800484220710041090010240024020012802f8112205450d0020012802fc112106200120014180126a2802003602a417200120053602a017200141c80d6a200141a0176a106d0240024020012802c80d2204450d0020012902cc0d210f0c010b41002104200141003602d004200142013703c8042001410c3602e4182001200141c8166a3602e0182001200141c8046a36028017200141dc0d6a4101360200200142013702cc0d20014198c2c3003602c80d2001200141e0186a3602d80d20014180176a41b8a3c500200141c80d6a102e1a20013502d00442208620013502c804841008024020012802cc04450d0020012802c80410230b0b02402006450d00200510230b2004450d00200710052001200f3702cc0d200120043602c80d0c010b200141003602d00d200142083703c80d0b200141143602fc112001418adcc1003602f811200141013a00c8042001200141c80d6a3602cc04200141c8046a200141f8116a107020012802cc0d450d0020012802c80d10230b200010cc02200224000f0b102a000b4113210541a3c8c30021040b200120053602e418200120043602e01841fcfdc3004122200141e0186a41ecfdc3001031000bcc0601067f230041e0006b22022400200241c0006a41086a2203418cfdc400ad4280808080d000841003220441086a2900003703002002200429000037034020041023200241086a200329030037030020022002290340370300200341d780c400ad4280808080f001841003220441086a2900003703002002200429000037034020041023200241106a41086a200329030037030020022002290340370310200241003602482002420137034020012802002104410110212103024002400240024002400240024020044101460d002003450d02200242818080801037024420022003360240200341003a0000200141086a200241c0006a1071200220012802042204360220200241206a21050c010b2003450d02200242818080801037024420022003360240200341013a0000200220012802042204360220200241206a21050b0240024020022802442201200228024822036b4104490d00200228024021010c010b200341046a22042003490d04200141017422032004200320044b1b22034100480d040240024020010d002003102121010c010b200228024020012003102521010b2001450d03200220033602442002200136024020052802002104200228024821030b2002200341046a360248200120036a200436000020022802442101200241c0006a41186a2204200235024842208620022802402206ad841001220341186a290000370300200241c0006a41106a2205200341106a290000370300200241c0006a41086a2207200341086a2900003703002002200329000037034020031023200241206a41186a2004290300370300200241206a41106a2005290300370300200241206a41086a20072903003703002002200229034037032002402001450d00200610230b41c00010212203450d04200320022903003700002003200229031037001020032002290320370020200042c0808080800837020420002003360200200341086a200241086a290300370000200341186a200241106a41086a290300370000200341286a200241206a41086a290300370000200341306a200241306a290300370000200341386a200241206a41186a290300370000200241e0006a24000f0b410141011030000b410141011030000b200341011030000b102a000b41c00041011030000bac0502067f047e230041f0006b22022400200241d0006a41086a2203418cfdc400ad4280808080d000841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341d0ffc300ad42808080808001841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200136024c200241d0006a41186a2201200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042001290300370300200241286a41106a22012007290300370300200241286a41086a2207200329030037030020022002290350370328024041c00010212203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2001290300370000200341386a2004290300370000200241d0006a200341c00010b003200229025421082002280250210420031023420021092008420020041b2208a721062004410820041b2105024002402008422088a722040d00024020060d00420021080c020b2005102342002109420021080c010b200541086a290300210820052903002109024020044101460d00200541106a2103200441047441706a210403402008200341086a290300220a20092003290300220b562008200a562008200a511b22011b21082009200b20011b2109200341106a2103200441706a22040d000b0b2006450d00200510230b2000200937030020002008370308200241f0006a24000f0b41c00041011030000b820501067f230041f0006b22022400200241d0006a41086a2203418cfdc400ad4280808080d000841003220441086a2900003703002002200429000037035020041023200241086a41086a2205200329030037030020022002290350370308200341c7f3c300ad4280808080a001841003220441086a2900003703002002200429000037035020041023200241186a41086a22062003290300370300200220022903503703182002200036024c200241d0006a41186a2200200241cc006aad4280808080c000841001220441186a290000370300200241d0006a41106a2207200441106a2900003703002003200441086a2900003703002002200429000037035020041023200241286a41186a22042000290300370300200241286a41106a22002007290300370300200241286a41086a22072003290300370300200220022903503703280240024041c00010212203450d00200320022903083700002003200229031837001020032002290328370020200341086a2005290300370000200341186a2006290300370000200341286a2007290300370000200341306a2000290300370000200341386a2004290300370000410410212204450d0120024204370254200220043602502001200241d0006a10cb03200228025421042003ad4280808080800884200235025842208620022802502200ad84100202402004450d00200010230b200310230240024020012d0004220341014b0d00024020030e020200020b2001412c6a280200450d01200141286a28020010230c010b02402001410c6a280200450d00200141086a28020010230b200141186a280200450d00200141146a28020010230b200241f0006a24000f0b41c00041011030000b410441011030000bc42508067f017e037f027e017f027e047f037e23004190026b2201240020014180026a41086a2202418cfdc400ad4280808080d000841003220341086a290000370300200120032900003703800220031023200141d8006a41086a220420022903003703002001200129038002370358200241d0ffc300ad42808080808001841003220341086a290000370300200120032900003703800220031023200141f8006a41086a22032002290300370300200120012903800237037820012000280200220536028002200141c8016a41186a220620014180026aad22074280808080c000841001220241186a290000370300200141c8016a41106a2208200241106a290000370300200141c8016a41086a2209200241086a290000370300200120022900003703c8012002102320014198016a41186a220a200629030037030020014198016a41106a2206200829030037030020014198016a41086a22082009290300370300200120012903c801370398010240024002400240024041c00010212202450d0020022001290358370000200220012903783700102002200129039801370020200241086a2004290300370000200241186a2003290300370000200241286a2008290300370000200241306a2006290300370000200241386a200a290300370000200141c8016a200241c00010b00320012902cc01210b20012802c8012103200210232003410820031b21060240024002400240200b420020031b220c422088a7220d41014b0d00200d0e020201020b200641086a290300210e2006290300210f2006200641106a2204200d41047441706a10dd04211020014180026a41086a2202418cfdc400ad4280808080d000841003220341086a290000370300200120032900003703800220031023200141d8006a41086a220620022903003703002001200129038002370358200241d0ffc300ad42808080808001841003220341086a29000037030020012003290000370380022003102320014198016a41086a220320022903003703002001200129038002370398012001200028020036028002200141c8016a41186a220820074280808080c000841001220241186a290000370300200141c8016a41106a2209200241106a290000370300200141c8016a41086a220a200241086a290000370300200120022900003703c80120021023200141f8006a41186a22022008290300370300200141f8006a41106a22082009290300370300200141f8006a41086a2209200a290300370300200120012903c80137037841c00010212211450d0420112001290358370000201120012903980137001020112001290378370020201141086a2006290300370000201141186a2003290300370000201141286a2009290300370000201141306a2008290300370000201141386a2002290300370000200141003602d001200142013703c801200d417f6a2212200141c8016a105c0240024002400240201241047422020d0020012802d001210220012802cc01210820012802c80121090c010b201020026a2105410020012802d00122026b210620012802c801210920012802cc012108201021030340200341086a29030021072003290300210b0240200820066a410f4b0d00200241106a220a2002490d0420084101742213200a2013200a4b1b220a4100480d040240024020080d00200a102121090c010b20092008200a102521090b2009450d03200a21080b200920026a220a2007370008200a200b370000200641706a2106200241106a21022005200341106a2203470d000b200120083602cc01200120023602d001200120093602c8010b2011ad42808080808008842002ad4220862009ad84100202402008450d00200910230b20111023201041086a2903002107200ca721062010290300210b024020124101460d00200d41047441606a210203402007200441086a290300220c200b20042903002214562007200c562007200c511b22031b2107200b201420031b210b200441106a2104200241706a22020d000b0b02402006450d00201010230b41012102200f200b7d220c200f56200e20077d200f200b54ad7d2207200e562007200e511b0d04200141f8006a2000108702200141206a200141f8006a200c2007109702200141206a41086a290300210b2001290320210c200141c8016a41186a22064200370300200141c8016a41106a22084200370300200141c8016a41086a22044200370300200142003703c80120014180026a41086a220341d5fbc400ad428080808080018422141003220941086a29000037030020012009290000370380022009102320042003290300370300200120012903800222073703b801200120073703c801200341d6a0c200ad4280808080d00184220e1003220941086a2900003703002001200929000037038002200910232008200129038002220737030020014198016a41086a220a200429030037030020014198016a41106a2205200737030020014198016a41186a22132003290300370300200120073703b801200120012903c80137039801200141086a20014198016a4120108902200141086a41106a29030021072001290310210f20012802082109200642003703002008420037030020044200370300200142003703c801200320141003220841086a29000037030020012008290000370380022008102320042003290300370300200120012903800222143703b801200120143703c8012003200e1003220841086a290000370300200120082900003703800220081023200620032903002214370300200a20042903003703002005200129038002220e370300201320143703002001200e3703b801200120012903c801370398012001427f200b2007420020091b22077c200c200f420020091b220b7c220c200b542203ad7c220b2003200b200754200b2007511b22031b3703d0012001427f200c20031b3703c80120014198016aad4280808080800484200141c8016aad428080808080028410020c040b200a41011030000b102a000b20014180026a41086a2202418cfdc400ad4280808080d000841003220341086a290000370300200120032900003703800220031023200141d8006a41086a220420022903003703002001200129038002370358200241c7f3c300ad4280808080a001841003220341086a29000037030020012003290000370380022003102320014198016a41086a220320022903003703002001200129038002370398012001200536028002200141c8016a41186a220820074280808080c000841001220241186a290000370300200141c8016a41106a2209200241106a290000370300200141c8016a41086a220a200241086a290000370300200120022900003703c80120021023200141f8006a41186a22132008290300370300200141f8006a41106a22082009290300370300200141f8006a41086a2209200a290300370300200120012903c80137037841c00010212202450d0420022001290358370000200220012903980137001020022001290378370020200241086a2004290300370000200241186a2003290300370000200241286a2009290300370000200241306a2008290300370000200241386a2013290300370000200141c8016a200241c00010aa03024020012d00cc0122034103460d002002ad428080808080088410050b200141f4016a2802002104200141c8016a41286a280200210a200141e0016a2802002108200141dc016a2802002113200141d4016a2802002109200141d0016a28020021112002102302400240200341034b0d00024020030e0402000102020b2004450d01200a10230c010b02402009450d00201110230b2008450d00201310230b024020034103470d00200510b3021a0b20014180026a41086a2202418cfdc400ad4280808080d000841003220341086a290000370300200120032900003703800220031023200141d8006a41086a22042002290300370300200120012903800237035820024184ffc300ad4280808080b001841003220341086a29000037030020012003290000370380022003102320014198016a41086a220320022903003703002001200129038002370398012001200536028002200141c8016a41186a220820074280808080c000841001220241186a290000370300200141c8016a41106a2209200241106a290000370300200141c8016a41086a220a200241086a290000370300200120022900003703c80120021023200141f8006a41186a22052008290300370300200141f8006a41106a22082009290300370300200141f8006a41086a2209200a290300370300200120012903c80137037841c00010212202450d0520022001290358370000200220012903980137001020022001290378370020200241086a2004290300370000200241186a2003290300370000200241286a2009290300370000200241306a2008290300370000200241386a2005290300370000200141c8016a200241c000108a010240024020012d00c8014101470d002002ad4280808080800884100520014198016a41186a200141e1016a290000220b37030020014198016a41106a200141d9016a290000221437030020014198016a41086a200141d1016a290000220e370300200141d8006a41186a200b370300200141d8006a41106a2014370300200141d8006a41086a200e370300200120012900c901220f37039801200141f8006a41186a200b370300200141f8006a41106a2014370300200141f8006a41086a200e3703002001200f3703582001200f3703780c010b20014198016a41186a200141e1016a290000220b37030020014198016a41106a200141d9016a290000221437030020014198016a41086a200141d1016a290000220e370300200141d8006a41186a4200370300200141d8006a41106a4200370300200141d8006a41086a4200370300200120012900c901220f37039801200141f8006a41186a200b370300200141f8006a41106a2014370300200141f8006a41086a200e370300200142003703582001200f3703780b20021023200141c8006a200141d8006a2006290300200641086a290300109702200141c8006a41086a29030021142001290348210e200141c8016a41186a22044200370300200141c8016a41106a22084200370300200141c8016a41086a22034200370300200142003703c80120014180026a41086a220241d5fbc400ad4280808080800184220f1003220941086a290000370300200120092900003703800220091023200320022903003703002001200129038002220b3703b8012001200b3703c801200241d6a0c200ad4280808080d0018422151003220941086a2900003703002001200929000037038002200910232008200129038002220b37030020014198016a41086a2209200329030037030020014198016a41106a2213200b37030020014198016a41186a221120022903003703002001200b3703b801200120012903c80137039801200141306a20014198016a4120108902200141306a41106a290300210b200129033821162001280230210a200442003703002008420037030020034200370300200142003703c8012002200f1003220541086a290000370300200120052900003703800220051023200320022903003703002001200129038002220f3703b8012001200f3703c801200220151003220541086a29000037030020012005290000370380022005102320042002290300220f37030020092003290300370300201320012903800222153703002011200f370300200120153703b801200120012903c801370398012001427f2014200b4200200a1b220b7c200e20164200200a1b22147c220e201454220aad7c2214200a2014200b542014200b511b220a1b3703d0012001427f200e200a1b3703c80120014198016aad4280808080800484200141c8016aad428080808080028410022002418cfdc400ad4280808080d000841003220a41086a2900003703002001200a29000037038002200a1023200141d8006a41086a220520022903003703002001200129038002370358200241d0ffc300ad42808080808001841003220a41086a2900003703002001200a29000037038002200a1023200920022903003703002001200129038002370398012001200028020036028002200420074280808080c000841001220241186a2900003703002008200241106a2900003703002003200241086a290000370300200120022900003703c80120021023200141f8006a41186a220a2004290300370300200141f8006a41106a22042008290300370300200141f8006a41086a22082003290300370300200120012903c80137037841c00010212202450d0620022001290358370000200220012903980137001020022001290378370020200241086a2005290300370000200241186a2009290300370000200241286a2008290300370000200241306a2004290300370000200241386a200a2903003700002002ad42808080808008841005200210230b41002102200ca7450d00200610230b20014190026a240020020f0b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000b41c00041011030000bf60b01067f230041106b220224002000280200210302400240024002400240024002400240024002400240200141046a2802002204200141086a28020022056b4104490d00200128020021040c010b200541046a22062005490d09200441017422052006200520064b1b22054100480d090240024020040d002005102121040c010b200128020020042005102521040b2004450d0120012004360200200141046a2005360200200141086a28020021050b200141086a200541046a360200200420056a2003360000024020002d0004220541024b0d0002400240024020050e03000102000b02400240200141046a280200200141086a2802002205460d00200128020021040c010b200541016a22042005490d0c200541017422032004200320044b1b22034100480d0c0240024020050d002003102121040c010b200128020020052003102521040b2004450d0520012004360200200141046a2003360200200141086a28020021050b200141086a2203200541016a360200200420056a41003a00002000410c6a200110712000280208210402400240200141046a2802002205200328020022006b4104490d00200128020021050c010b200041046a22032000490d0c200541017422002003200020034b1b22004100480d0c0240024020050d002000102121050c010b200128020020052000102521050b2005450d0620012005360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200520006a20043600000c020b02400240200141046a280200200141086a2802002205460d00200128020021040c010b200541016a22042005490d0b200541017422032004200320044b1b22034100480d0b0240024020050d002003102121040c010b200128020020052003102521040b2004450d0620012004360200200141046a2003360200200141086a28020021050b200141086a2203200541016a360200200420056a41013a00002002200136020c200041056a2002410c6a106b20002802282106200041306a28020022002001105c02400240200141046a2802002204200328020022056b2000490d00200128020021040c010b200520006a22032005490d0b200441017422052003200520034b1b22054100480d0b0240024020040d002005102121040c010b200128020020042005102521040b2004450d0720012004360200200141046a2005360200200141086a28020021050b200141086a200520006a360200200420056a2006200010dc041a0c010b02400240200141046a280200200141086a2802002205460d00200128020021040c010b200541016a22042005490d0a200541017422032004200320044b1b22034100480d0a0240024020050d002003102121040c010b200128020020052003102521040b2004450d0720012004360200200141046a2003360200200141086a28020021050b200141086a2206200541016a360200200420056a41023a000020002802082107200041106a28020022052001105c02400240200141046a2802002203200628020022046b2005490d00200128020021030c010b200420056a22062004490d0a200341017422042006200420064b1b22044100480d0a0240024020030d002004102121030c010b200128020020032004102521030b2003450d0820012003360200200141046a2004360200200141086a28020021040b200141086a2206200420056a360200200320046a2007200510dc041a200028021421032000411c6a28020022002001105c02400240200141046a2802002204200628020022056b2000490d00200128020021040c010b200520006a22062005490d0a200441017422052006200520064b1b22054100480d0a0240024020040d002005102121040c010b200128020020042005102521040b2004450d0920012004360200200141046a2005360200200141086a28020021050b200141086a200520006a360200200420056a2003200010dc041a0b200241106a24000f0b200541011030000b200341011030000b200041011030000b200341011030000b200541011030000b200341011030000b200441011030000b200541011030000b102a000bb80901177f230041206b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4100210b4100210c4101210d4100210e4100210f41012110024002400340200b4101742111200b4105742112024002400240024002400340024020050d0020072113200d2114200c2115200b21160c040b2005210220072103200d2114200c2115200b2116201221172011211802400340024002402006450d0020022006460d0620022006412010de042213450d062013417f4c0d01200321072014210d2015210c2016210b200221050c080b200441186a2203200541186a290000370300200441106a2216200541106a290000370300200441086a2206200541086a290000370300200420052900003703000240200b200c470d00200b41016a2202200b490d0c200b41017422172002201720024b1b220c41ffffff3f71200c470d0c200c41057422024100480d0c02400240200b0d0020021021210d0c010b200d200b41057420021025210d0b200d450d030b200d200b4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a200629030037000041002106410020072007200a4622021b2105201141026a2111201241206a2112200b41016a210b2007200741206a20021b21070c030b200441186a2213200241186a290000370300200441106a2219200241106a290000370300200441086a221a200241086a29000037030020042002290000370300024020162015470d00201641016a22022016490d0b20182002201820024b1b221541ffffff3f712015470d0b201541057422024100480d0b0240024020160d002002102121140c010b201420172002102521140b2014450d040b201420176a22022004290300370000200241186a2013290300370000200241106a2019290300370000200241086a201a290300370000410020032003200a4622131b2102201841026a2118201741206a2117201641016a21162003200341206a20131b221321032002450d050c000b0b0b200241011030000b200241011030000b2014210d2015210c2016210b2003200341206a2003200a4622021b210741002008200820094622161b21064100200320021b21052008200841206a20161b21080c030b410021052006450d01201321072014210d2015210c2016210b0b200441186a2203200641186a290000370300200441106a2216200641106a290000370300200441086a2217200641086a290000370300200420062900003703000240200e200f470d00200e41016a2202200e490d04200e41017422062002200620024b1b220f41ffffff3f71200f470d04200f41057422024100480d0402400240200e0d002002102121100c010b2010200e4105742002102521100b2010450d030b2010200e4105746a22022004290300370000200241186a2003290300370000200241106a2016290300370000200241086a201729030037000041002008200820094622021b2106200e41016a210e2008200841206a20021b21080c010b0b201420162000200110cd0302402015450d00201410230b0240200f450d00201010230b200441206a24000f0b200241011030000b102a000b9e1008087f027e047f017e057f027e017f057e230022042105200441a0016b416071220424000240024002400240200141ffffff3f712001470d0020014105742206417f4c0d000240024020060d00410121070c010b200610212207450d020b410021084100210602402001450d002001410574210820072106034020062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a290000370000200641206a2106200041206a2100200841606a22080d000b200141057441606a41057641016a2106200121080b200420063602102004200836020c2004200736020820072006410041202006676b109303200441e0006a41186a22094200370300200441e0006a41106a220a4200370300200441e0006a41086a220b420037030020044200370360200441286a41086a220841e680c400ad4280808080b00284220c1003220041086a2900003703002004200029000037032820001023200b200829030037030020042004290328370360200841f980c400ad42808080809001841003220041086a2900003703002004200029000037032820001023200a2004290328220d370300200441c0006a41086a220e200b290300370300200441c0006a41106a220f200d370300200441c0006a41186a221020082903003703002004200d3703900120042004290360370340200441e0006a200441c0006a412010bb0120042802602200410120001b21112004290264420020001b2212422088a72200450d0320004105742113200441e0006a4114722114200441e0006a4108722115200441c0006a410c722116200441e0006a410c6a2117201121060340200641086a290000210d200641106a2900002118200629000021192009200641186a290000370300200a2018370300200b200d370300200420193703602008200c1003220041086a2900003703002004200029000037032820001023200441186a41086a22012008290300370300200420042903283703182008418281c400ad4280808080e000841003220041086a290000370300200420002900003703282000102320044190016a41086a220720082903003703002004200429032837039001200441c0006a200441e0006a10ac0141c00010212200450d0320002004290318370000200020042903900137001020002004290040370020200041086a2001290300370000200041186a2007290300370000200041286a200e290000370000200041306a200f290000370000200041386a2010290000370000200441e0006a200041c00010a7032008201741086a290200370300200441286a41106a221a201741106a28020036020020042017290200370328024020042802682201450d002004290360210d20162004290328370200201641086a2008290300370200201641106a201a2802003602002004200d3703400b20042001360248200441003602682004290358211920042004290378221b3703582004290350211c20042004290370221d3703502004290340211e2004200429036022183703402004290348210d20042004290368221f370348201fa7210102400240200da7221a0d00201f210d201d211c201b21190c010b2004201e3703602004200d3703682004201c370370200420193703782004201a201ca74105746a3602342004201a3602302004200d422088a736022c2004201a3602282004200441086a36023820044190016a200441286a108601201541086a200728020036020020152004290390013702002004201c422088a7221a2019422088a74105746a3602342004201a36023020042019a736022c2004201a3602282004200441086a36023820044190016a200441286a108601201441086a200728020036020020142004290390013702002004290368210d20042903602118200429037821192004290370211c02402001450d00201ba721070240201f422088a7450d00200110230b2007450d00201d422088a710230b200420183703402004200d3703482004201c37035020042019370358200da721010b200420183703602004200d3703682004201c370370200da72107200420193703780240024020010d002000ad428080808080088410050c010b200441c00036022c20042000360228200441e0006a200441286a10ce030b02402007450d002019a721010240200d422088a7450d00200710230b2001450d00201c422088a710230b200641206a210620001023201341606a22130d000c040b0b102f000b200641011030000b41c00041011030000b02402012a7450d00201110230b200441c0006a41186a4200370300200441c0006a41106a22014200370300200441c0006a41086a2206420037030020044200370340200441286a41086a220041e680c400ad4280808080b002841003220841086a29000037030020042008290000370328200810232006200029030037030020042004290328220d3703182004200d37034020004183e0c400ad4280808080f000841003220841086a290000370300200420082900003703282008102320012004290328220d370300200441e0006a41086a2006290300370300200441e0006a41106a200d370300200441e0006a41186a20002903003703002004200d370390012004200429034037036020044100360248200442013703402003200441c0006a105c02402003450d002003410574210003402002200441c0006a1071200241206a2102200041606a22000d000b0b20042802442100200441e0006aad4280808080800484200435024842208620042802402206ad84100202402000450d00200610230b0240200428020c450d00200428020810230b200524000ba20301067f230041106b22022400200241003602082002420137030020002802002103024002400240410410212204450d0020024284808080c0003702042002200436020020042003360000200028020421050240024020022802042206200228020822046b4104490d00200441046a2103200228020021060c010b200441046a22032004490d03200641017422072003200720034b1b22074100480d030240024020060d002007102121060c010b200228020020062007102521060b2006450d0220022007360204200220063602000b20022003360208200620046a200536000020002802082104200041106a28020022032002105c02402003450d00200341057421030340200420021071200441206a2104200341606a22030d000b0b200028021421042000411c6a28020022032002105c02402003450d00200341057421030340200420021071200441206a2104200341606a22030d000b0b200228020421042001290200200235020842208620022802002203ad84100202402004450d00200310230b200241106a24000f0b410441011030000b200741011030000b102a000b1300200041043602042000419c81c4003602000b3400200041e680c40036020420004100360200200041146a4105360200200041106a418c8cc400360200200041086a42133702000b34002000418881c40036020420004100360200200041146a4105360200200041106a418c8cc400360200200041086a42133702000b950902067f047e230041a0036b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541034b0d0620050e0401020304010b200041053a00000c090b200241206a2001107e20022802200d03200041053a00000c080b200241c0006a200110d901024002402002280240411a460d00200241f0016a200241c0006a41b00110dc041a41b001102122050d0141b00141081030000b200041053a00000c080b2005200241f0016a41b00110dc042105200041023a0000200020022f00103b0001200041036a200241106a41026a2d00003a0000200041046a2005360200200041086a2002290220370200200041106a200241206a41086a290200370200200041186a200241206a41106a290200370200200041206a200241206a41186a2902003702000c070b20022001106e20022802000d0520022802042105200241c0006a200110d9012002280240411a460d05200241f0016a200241c0006a41b00110dc041a41b00110212201450d032001200241f0016a41b00110dc042101200041033a0000200020022f00103b0001200041036a200241126a2d00003a0000200041086a2001360200200041046a20053602002000410c6a2002290220370200200041146a200241206a41086a2902003702002000411c6a200241306a290200370200200041246a200241386a2802003602000c060b41002105200241003a0090022003417f6a21062003417e6a21030340024020062005470d00200541ff0171450d05200241003a0090020c050b200241f0016a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a0090022003417f6a21032007210520074120470d000b200241c0006a41186a200241f0016a41186a290300370300200241c0006a41106a200241f0016a41106a290300370300200241c0006a41086a200241f0016a41086a290300370300200220022903f001370340200241086a2001106e20022802080d0320012802042203450d03200228020c2104200128020022072d0000210520012003417f6a3602042001200741016a360200200541014b0d03410021010240024020050e020100010b410121010b200241206a41186a200241c0006a41186a2903002208370300200241206a41106a200241c0006a41106a2903002209370300200241206a41086a200241c0006a41086a290300220a37030020022002290340220b370320200041043a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041246a2004360200200041216a20013a00000c050b200241cb006a200241206a41086a28020036000020022002290320370043200041013a000020002002290040370001200041086a200241c7006a290000370000200041106a20022902f001370200200041186a200241f0016a41086a290200370200200041206a200241f0016a41106a2902003702000c040b200041053a00000c030b41b00141081030000b200041053a00000c010b200041053a00000b200241a0036a24000b810801047f230041106b22022400024002400240024002400240024020002d0000417f6a220341034b0d00024002400240024020030e0400010203000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0a200341017422052004200520044b1b22054100480d0a0240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41003a0000200028020421032000410c6a28020022002001105c2000450d03200041057421000340200320011071200341206a2103200041606a22000d000c040b0b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d09200341017422052004200520044b1b22054100480d090240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41013a00002000280204200110cb010c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d08200341017422052004200520044b1b22054100480d080240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a0000200041046a200110af012000280208200110cb010c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d07200341017422052004200520044b1b22054100480d070240024020030d002005102121040c010b200128020020032005102521040b2004450d0520012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a106b200041246a200110af0120002d0021210402400240200141046a28020020052802002203460d00200128020021000c010b200341016a22002003490d07200341017422052000200520004b1b22054100480d070240024020030d002005102121000c010b200128020020032005102521000b2000450d0620012000360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200020036a20043a00000b200241106a24000f0b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b102a000b811301057f230041106b2202240002400240024002400240024002400240024002400240024002400240024020002d0000220341054b0d0002400240024002400240024020030e06000102030405000b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d14200341017422052004200520044b1b22054100480d140240024020030d002005102121040c010b200128020020032005102521040b2004450d0720012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41003a0000200041016a200110712000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d14200441017422032005200320054b1b22034100480d140240024020040d002003102121040c010b200128020020042003102521040b2004450d0820012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002002200136020c200041216a2002410c6a106b2000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d14200341017422002005200020054b1b22004100480d140240024020030d002000102121030c010b200128020020032000102521030b2003450d0920012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c050b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102121040c010b200128020020032005102521040b2004450d0920012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41013a0000200041016a200110712002200136020c200041216a2002410c6a106b20002d0041210602400240200141046a28020020052802002203460d00200128020021040c010b200341016a22042003490d13200341017422052004200520044b1b22054100480d130240024020030d002005102121040c010b200128020020032005102521040b2004450d0a20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a20063a00002000280244210602400240200141046a2802002204200528020022036b4104490d00200128020021040c010b200341046a22052003490d13200441017422032005200320054b1b22034100480d130240024020040d002003102121040c010b200128020020042003102521040b2004450d0b20012004360200200141046a2003360200200141086a28020021030b200141086a2205200341046a360200200420036a20063600002000280248210402400240200141046a2802002203200528020022006b4104490d00200128020021030c010b200041046a22052000490d13200341017422002005200020054b1b22004100480d130240024020030d002000102121030c010b200128020020032000102521030b2003450d0c20012003360200200141046a2000360200200141086a28020021000b200141086a200041046a360200200320006a20043600000c040b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d12200341017422052004200520044b1b22054100480d120240024020030d002005102121040c010b200128020020032005102521040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41023a00002002200136020c200041016a2002410c6a106b0c030b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d11200341017422052004200520044b1b22054100480d110240024020030d002005102121040c010b200128020020032005102521040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a200341016a360200200420036a41033a00002002200136020c200041016a2002410c6a106b0c020b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d10200341017422052004200520044b1b22054100480d100240024020030d002005102121040c010b200128020020032005102521040b2004450d0c20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41043a00002002200136020c200041016a2002410c6a106b20002d0021210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d10200041017422052003200520034b1b22054100480d100240024020000d002005102121030c010b200128020020002005102521030b2003450d0d20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000c010b02400240200141046a280200200141086a2802002203460d00200128020021040c010b200341016a22042003490d0f200341017422052004200520044b1b22054100480d0f0240024020030d002005102121040c010b200128020020032005102521040b2004450d0d20012004360200200141046a2005360200200141086a28020021030b200141086a2205200341016a360200200420036a41053a00002002200136020c200041016a2002410c6a106b20002d0021210402400240200141046a28020020052802002200460d00200128020021030c010b200041016a22032000490d0f200041017422052003200520034b1b22054100480d0f0240024020000d002005102121030c010b200128020020002005102521030b2003450d0e20012003360200200141046a2005360200200141086a28020021000b200141086a200041016a360200200320006a20043a00000b200241106a24000f0b200541011030000b200341011030000b200041011030000b200541011030000b200541011030000b200341011030000b200041011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b102a000b966807067f017e017f027e0f7f027e097f230041c0056b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d000022040e050001020304000b200341e4026a4101360200200342013702d402200341d09dc6003602d0022003410436028404200341849ec60036028004200320034180046a3602e002200341d0026a41d48fc4001038000b200141086a2802002104200141046a2802002105024020022d000120022d000072450d00411121024186b0c00021062004450d19200510230c190b20052001410c6a280200220210fa01200341d0026a41186a22074200370300200341d0026a41106a22014200370300200341d0026a41086a22084200370300200342003703d002200341b0056a41086a220641e680c400ad4280808080b0028422091003220a41086a2900003703002003200a2900003703b005200a102320082006290300370300200320032903b0053703d00220064183e0c400ad4280808080f00084220b1003220a41086a2900003703002003200a2900003703b005200a1023200120032903b005220c37030020034180046a41086a200829030037030020034180046a41106a200c37030020034180046a41186a20062903003703002003200c370340200320032903d00237038004200341d0026a20034180046a412010bb012005200220032802d0022206410120061b220820032902d402420020061b220c422088a710cc030240200ca7450d00200810230b2007420037030020014200370300200341d0026a41086a22084200370300200342003703d002200341b0056a41086a220620091003220a41086a2900003703002003200a2900003703b005200a102320082006290300370300200320032903b005220c3703602003200c3703d0022006200b1003220a41086a2900003703002003200a2900003703b005200a1023200120032903b005220c370300200341c0006a41086a2008290300370300200341c0006a41106a200c370300200341c0006a41186a20062903003703002003200c370370200320032903d002370340200341003602d802200342013703d0022002200341d0026a105c02402002450d00200241057421012005210203402002200341d0026a1071200241206a2102200141606a22010d000b0b20032802d4022102200341c0006aad428080808080048420033502d80242208620032802d0022201ad84100202402002450d00200110230b4100210602402004450d00200510230b0c180b200141046a28020021072002411a6a290100210c200241196a2d00002105200241186a2d00002108200241166a2f0100210a200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241046a2d0000211741022106200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002119200241086a2d000021024100211a0c010b4101211a41002102410021190b2003200c3703e802200320053a00e702200320083a00e6022003200a3b01e4022003200d3a00e3022003200e3a00e2022003200f3b01e002200320103a00df02200320113a00de02200320123b01dc02200320133a00db02200320143a00da02200320153b01d802200320163a00d702200320173a00d202200320183b01d0022003201941ffff0371410874200241187472200641ff01717222053600d3020240201a450d00410f210241aab0c0002106024002400240024020050e05000102031a000b20032800d702210620032800db0221020c190b410e210241aabac60021060c180b411321024197b0c00021060c170b411121024186b0c00021060c160b20034180016a41186a200341d0026a41186a220629030037030020034180016a41106a200341d0026a41106a220529030037030020034180016a41086a200341d0026a41086a2202290300370300200320032903d00237038001200642003703002005420037030020024200370300200342003703d002200341b0056a41086a220641e680c400ad4280808080b002841003220841086a290000370300200320082900003703b0052008102320022006290300370300200320032903b0053703d00220064183e0c400ad4280808080f000841003220841086a290000370300200320082900003703b00520081023200520032903b005220c37030020034180046a41086a200229030037030020034180046a41106a200c37030020034180046a41186a20062903003703002003200c370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b220c422088a741057421062002410120021b220a210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b0240200ca7450d00200a10230b024020080d0041e48fc4002106411521020c160b4100210a200341003602d802200342013703d0022007200341d0026a10cb0120032802d4022106200341d0026a41186a220520033502d80242208620032802d002220fad841001220241186a290000370300200341d0026a41106a2208200241106a290000370300200341d0026a41086a220d200241086a290000370300200320022900003703d00220021023200341a0016a41186a22022005290300370300200341a0016a41106a22052008290300370300200341a0016a41086a220e200d290300370300200320032903d0023703a00102402006450d00200f10230b200341d0026a200741b00110dc041a20034180046a410d6a20034180016a41086a29030037000020034180046a41156a20034180016a41106a29030037000020034180046a411d6a20034180016a41186a29030037000041012108200341013a008404200320032903800137008504200341023a008004200341c0006a200341d0026a20034180046a108d0220032d00482106200341d0026a410d6a200e290300370000200341d0026a41156a2005290300370000200341d0026a411d6a2002290300370000200341f5026a20064102463a0000200341053a00d4022003410a3a00d002200320032903a0013700d502200341d0026a108e0120071023410021060c160b200141086a280200210a200141046a280200211b2002411a6a290100210c200241196a2d00002112200241186a2d00002113200241166a2f01002114200241156a2d00002115200241146a2d00002116200241126a2f01002117200241116a2d00002118200241106a2d000021072002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241046a2d0000211941022106200241026a2f0100211a0240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021080c010b4101210841002105410021020b200541ffff0371410874200641ff017172200241187472210502402008450d00410f210241aab0c0002106024002400240024020050e050001020318000b2010410874201172200f411874722106200d410874200e7220074118747221020c170b410e210241aabac60021060c160b411321024197b0c00021060c150b411121024186b0c00021060c140b2003200c37039801200320123a009701200320133a009601200320143b019401200320153a009301200320163a009201200320173b019001200320183a008f01200320073a008e012003200d3b018c012003200e3a008b012003200f3a008a01200320103b018801200320113a0087012003200536008301200320193a0082012003201a3b018001200341d0026a41186a4200370300200341d0026a41106a22074200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a220241e680c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200720032903b005220c37030020034180046a41086a200629030037030020034180046a41106a200c37030020034180046a41186a20022903003703002003200c370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b220c422088a741057421062002410120021b220d210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b0240200ca7450d00200d10230b024020080d0041e48fc4002106411521020c140b200341003602d802200342013703d002200a200341d0026a10cb0120032802d402210d200341d0026a41186a220620033502d80242208620032802d0022210ad841001220241186a290000370300200341d0026a41106a2205200241106a290000370300200341d0026a41086a2208200241086a290000370300200320022900003703d00220021023200341a0016a41186a22022006290300370300200341a0016a41106a220e2005290300370300200341a0016a41086a220f2008290300370300200320032903d0023703a0010240200d450d00201010230b200620022903003703002005200e2903003703002008200f290300370300200320032903a0013703d002200341b0056a41086a220241e680c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a2002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a2002290300370300200320032903b005370370200341c0006a200341d0026a10ac0141c00010212202450d0220022003290360370000200241086a200341e0006a41086a29030037000020022003290370370010200241186a200341f0006a41086a29030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341d0006a290300370000200241386a200341c0006a41186a290300370000200341186a200241c00041014100410010b801200328021821062002102320064101460d0302400240201b4102490d0042002109200341c0006a41186a220e4200370300200341c0006a41106a220f4200370300200341c0006a41086a2206420037030020034200370340200341b0056a41086a220241e680c400ad4280808080b00284220c1003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b005220b3703602003200b370340200241888ac400ad4280808080d00184220b1003220541086a290000370300200320052900003703b00520051023200f20032903b005221c370300200341d0026a41086a22052006290300370300200341d0026a41106a2208201c370300200341d0026a41186a220d20022903003703002003201c370370200320032903403703d002200341106a200341d0026a4120108f012003280214211120032802102112200e4200370300200f420037030020064200370300200342003703402002200c1003221041086a290000370300200320102900003703b0052010102320062002290300370300200320032903b005221c3703602003201c3703402002200b1003221041086a290000370300200320102900003703b00520101023200e2002290300221c37030020052006290300370300200820032903b005221d370300200d201c3703002003201d370370200320032903403703d002200341086a200341d0026a4120108f0120032802082110200328020c2113200e4200370300200f420037030020064200370300200342003703402002200c1003220f41086a2900003703002003200f2900003703b005200f102320062002290300370300200320032903b005221c3703602003201c3703402002200b1003220f41086a2900003703002003200f2900003703b005200f1023200e2002290300220b37030020052006290300370300200820032903b005221c370300200d200b3703002003201c370370200320032903403703d0024101210e2003201341016a410120101b36028004200341d0026aad428080808080048420034180046aad4280808080c000841002200d42003703002008420037030020054200370300200342003703d0022002200c1003220f41086a2900003703002003200f2900003703b005200f102320052002290300370300200320032903b0053703d002200241f980c400ad42808080809001841003220f41086a2900003703002003200f2900003703b005200f102320062002290300220c370300200320032903b005220b3703402007200b370000200741086a200c37000020034180046a41086a200529030037030020034180046a41106a200829030037030020034180046a41186a200d290300370300200320032903d00237038004200341d0026a20034180046a412010bb010240024020032802d00222070d0041002106410021020c010b20032902d4022209422088a721022009a721062007210e0b200d200341a0016a41186a2903003703002008200341a0016a41106a2903003703002005200341a0016a41086a290300370300200320032903a0013703d0020240024020022006460d002006210d0c010b024020062009a7220d470d00200641016a22022006490d05200641017422052002200520024b1b220d41ffffff3f71200d470d05200d41057422024100480d050240024020060d0020021021210e0c010b200e200641057420021025210e0b200e450d0820094280808080708321090b2009422088a721020b200e20024105746a220620032903d002370000200641186a200341d0026a41186a2205290300370000200641106a200341d0026a41106a2208290300370000200641086a200341d0026a41086a2206290300370000200542003703002008420037030020064200370300200342003703d002200341b0056a41086a220541e680c400ad4280808080b002841003220741086a290000370300200320072900003703b0052007102320062005290300370300200320032903b005220c3703602003200c3703d002200541f980c400ad42808080809001841003220741086a290000370300200320072900003703b00520071023200820032903b005220c370300200341c0006a41086a2006290300370300200341c0006a41106a200c370300200341c0006a41186a20052903003703002003200c370370200320032903d00237034002400240200e0d00200341c0006aad428080808080048410050c010b200341003602d802200342013703d002200241016a2206200341d0026a105c02402006450d00200241057441206a2106200e210203402003200341d0026a36028004200220034180046a106b200241206a2102200641606a22060d000b0b20032802d4022102200341c0006aad428080808080048420033502d80242208620032802d0022206ad84100202402002450d00200610230b200d450d00200e10230b200341d0026a200a41b00110dc041a20034180046a41186a200341a0016a41186a29030037030020034180046a41106a200341a0016a41106a29030037030020034180046a41086a200341a0016a41086a290300370300200320032903a00137038004200341b0056a41086a220241e680c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22052002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22062002290300370300200320032903b005370370200341c0006a20034180046a10ac0141c00010212202450d0720022003290360370000200241086a200529030037000020022003290370370010200241186a200629030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a29030037000020034100360288042003420137038004200341d0026a20034180046a10cb0120032802840421062002ad42808080808008842003350288044220862003280280042205ad84100202402006450d00200510230b20021023200341d0026a10db01412010212206450d082006200329038001370000200641186a20034180016a41186a2208290300370000200641106a20034180016a41106a2207290300370000200641086a20034180016a41086a220d2903003700002003419c046a41003602002003418c046a428180808010370200200342013702940420032006360288042003201b3602840420032011410020121b220e36028004200341d0026a41186a200341a0016a41186a220f290300370300200341d0026a41106a200341a0016a41106a2210290300370300200341d0026a41086a200341a0016a41086a2211290300370300200320032903a0013703d002200341b0056a41086a220241e680c400ad4280808080b002841003220541086a290000370300200320052900003703b00520051023200341e0006a41086a22122002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220541086a290000370300200320052900003703b00520051023200341f0006a41086a22052002290300370300200320032903b005370370200341c0006a200341d0026a10ac0141c00010212202450d0920022003290360370000200241086a201229030037000020022003290370370010200241186a200529030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341c0003602d402200320023602d00220034180046a200341d0026a10ce032002102320061023200341dd026a200d290300370000200341e5026a2007290300370000200341ed026a2008290300370000200341f5026a20032903a001370000200341fd026a201129030037000020034185036a20102903003700002003418d036a200f2903003700002003419c036a201b36020020034198036a200e360200200341003a00d4022003410a3a00d00220032003290380013700d502200341d0026a21020c010b200341d0026a41186a22084200370300200341d0026a41106a220d4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a220241e680c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200341c0006a41086a2002290300220c370300200320032903b005220937034020072009370000200741086a200c37000020034180046a41086a200629030037030020034180046a41106a200d29030037030020034180046a41186a2008290300370300200320032903d00237038004200341206a20034180046a412010bb0102400240200328022022060d00410021020c010b2003290224220c422088a72102200ca7450d00200610230b200341d0026a200a41b00110dc041a2003418c046a200236020020034180046a41086a4101360200200341003a008404200341023a008004200341c0006a200341d0026a20034180046a108d0220032d00482102200341dd026a200341a0016a41086a290300370000200341e5026a200341b0016a290300370000200341ed026a200341b8016a290300370000200341f5026a20024102463a0000200341043a00d4022003410a3a00d002200320032903a0013700d502200341d0026a21020b2002108e01200a1023410021084101210a410021060c150b200141216a2d0000211b200141246a280200211a200341206a41186a200141196a290000370300200341206a41106a200141116a290000370300200341206a41086a200141096a290000370300200320012900013703202002411a6a290100210c200241196a2d00002111200241186a2d00002112200241166a2f01002113200241156a2d00002114200241146a2d00002115200241126a2f01002116200241116a2d00002117200241106a2d0000210a2002410e6a2f010021072002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241046a2d0000211841022106200241026a2f010021190240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021080c010b4101210841002105410021020b200541ffff0371410874200641ff017172200241187472210502402008450d00410f210241aab0c0002106024002400240024020050e050001020316000b200f410874201072200e4118747221062007410874200d72200a4118747221020c150b410e210241aabac60021060c140b411321024197b0c00021060c130b411121024186b0c00021060c120b2003200c37039801200320113a009701200320123a009601200320133b019401200320143a009301200320153a009201200320163b019001200320173a008f012003200a3a008e01200320073b018c012003200d3a008b012003200e3a008a012003200f3b018801200320103a0087012003200536008301200320183a008201200320193b018001200341d0026a41186a4200370300200341d0026a41106a22074200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a220241e680c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200720032903b005220c37030020034180046a41086a200629030037030020034180046a41106a200c37030020034180046a41186a20022903003703002003200c370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b220c422088a741057421062002410120021b220a210202400340024020060d00410021080c020b4101210820034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b0240200ca7450d00200a10230b024020080d0041e490c4002106411221020c120b200341b0056a41086a220241e680c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22052002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22082002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212206450d0720062003290360370000200641086a200529030037000020062003290370370010200641186a200829030037000020062003290040370020200641286a200341c0006a41086a29000037000041102102200641306a200341c0006a41106a290000370000200641386a200341c0006a41186a290000370000200341d0026a200641c00010a703200341ec026a2802002113200341d0026a41186a2802002111200341e4026a280200210a200341d0026a41106a280200211020032802dc02211220032802d802210f20032802d402211420032802d0022105200610230240200f0d00419890c4002106411321020c120b41ab90c40021062005201a470d10201041057421064100211541002105200f21020240024003402006450d0220034180016a2002460d01200541016a2105200641606a2106200220034180016a412010de042108200241206a210220080d000b20084541016a41017120056a417f6a21050b410121150b2013410574210d20034180016a200a6b210e410021164100210641002102024002400340200d2002460d02200e2002460d01200641016a2106200a20026a2108200241206a2102200820034180016a412010de0422080d000b20084541016a41017120066a417f6a21060b410121160b02400240201b41ff01710d002016450d010c110b20150d10200341d0026a41186a220820034180016a41186a290300370300200341d0026a41106a220d20034180016a41106a290300370300200341d0026a41086a220e20034180016a41086a29030037030020032003290380013703d002024020102012460d0020122105201021120c0b0b201241016a22022012490d01201241017422052002200520024b1b220541ffffff3f712005470d01200541057422024100480d010240024020120d0020021021210f0c010b200f201241057420021025210f0b200f0d0a200241011030000b200329039801210c20032d009701210820032d009601210d20032f019401210e20032d009301211620032d009201211720032f019001211820032d008f01211920032d008e01211e20032f018c01211f20032d008b01212020032d008a01212120032f018801212220032d0087012123200328008301212420032d008201212520032f0180012126024020132011460d0020112106201321110c090b201141016a22022011490d00201141017422062002200620024b1b220641ffffff3f712006470d00200641057422024100480d000240024020110d0020021021210a0c010b200a201141057420021025210a0b200a0d08200241011030000b102a000b41c00041011030000b41f98fc4002106411f21020c0f0b200241011030000b41c00041011030000b412041011030000b41c00041011030000b41c00041011030000b200a20114105746a2202200c370018200220083a00172002200d3a00162002200e3b0014200220163a0013200220173a0012200220183b0010200220193a000f2002201e3a000e2002201f3b000c200220203a000b200220213a000a200220223b0008200220233a000720022024360003200220253a0002200220263b0000201341016a2113024002402015450d00201020054d0d01200f2010417f6a22104105746a2202290000210c200229000821092002290010210b200f20054105746a220541186a200241186a2900003700002005200b370010200520093700082005200c3700000b20062111201221050c020b41d490c40020052010102d000b200f20124105746a220220032903d002370000200241186a2008290300370000200241106a200d290300370000200241086a200e290300370000201041016a21102016450d00201320064d0d01200a2013417f6a22134105746a2202290000210c200229000821092002290010210b200a20064105746a220641186a200241186a2900003700002006200b370010200620093700082006200c3700000b200341f5026a2003290320370000200341dd026a20034180016a41086a290300370000200341e5026a20034180016a41106a290300370000200341ed026a20034180016a41186a290300370000200341fd026a200341206a41086a29030037000020034185036a200341206a41106a2903003700002003418d036a200341206a41186a290300370000200341013a00d4022003410a3a00d00220032003290380013700d5022003419c036a201336020020034198036a201036020020034195036a201b3a0000200341d0026a108e01200341d0026a41186a220d4200370300200341d0026a41106a220e4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a220241e680c400ad4280808080b002841003220841086a290000370300200320082900003703b0052008102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220841086a290000370300200320082900003703b00520081023200341c0006a41086a2002290300220c370300200320032903b005220937034020072009370000200741086a200c37000020034180046a41086a200629030037030020034180046a41106a200e29030037030020034180046a41186a200d290300370300200320032903d00237038004200341a0016a20034180046a412010bb010240024020032802a00122020d00410021060c010b20032902a401220c422088a72106200ca7450d00200210230b02400240201020144f22020d004100200620136b2208200820064b1b2014490d00200341ec026a2013360200200341d0026a41186a2011360200200341d0026a41106a2010360200200341dc026a20053602002003200a3602e4022003200f3602d802200320143602d4022003201a3602d002200341b0056a41086a220241e680c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22082002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22062002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0320022003290360370000200241086a200829030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341c000360284042003200236028004200341d0026a20034180046a10ce032002102302402005450d00200f10230b02402011450d00200a10230b410021060c010b0240024020020d00200341dd026a200341286a290300370000200341e5026a200341306a290300370000200341ed026a200341386a290300370000200341033a00d4022003410a3a00d002200320032903203700d502200341d0026a108e010c010b200341dd026a200341206a41086a290300370000200341e5026a200341206a41106a290300370000200341ed026a200341206a41186a290300370000200341023a00d4022003410a3a00d002200320032903203700d502200341d0026a108e01200341b0056a41086a220241e680c400ad4280808080b002841003220841086a290000370300200320082900003703b00520081023200341e0006a41086a220d2002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220841086a290000370300200320082900003703b00520081023200341f0006a41086a22082002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0420022003290360370000200241086a200d29030037000020022003290370370010200241186a200829030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341d0026a200241c00010b20320032802d002210820034180046a200341d0026a410472220d41ac0110dc041a02402008411a470d00200210230c010b200341a0016a20034180046a41ac0110dc041a20021023200320083602d002200d200341a0016a41ac0110dc041a2003418c046a200636020020034180046a41086a2014360200200341003a008404200341023a008004200341c0006a200341d0026a20034180046a108d0220032d00482102200341dd026a200341206a41086a290300370000200341e5026a200341306a290300370000200341ed026a200341386a290300370000200341f5026a20024102463a0000200341043a00d4022003410a3a00d002200320032903203700d502200341d0026a108e010b200341b0056a41086a220641e680c400ad4280808080b00284220c1003220241086a290000370300200320022900003703b00520021023200341e0006a41086a22082006290300370300200320032903b0053703602006418281c400ad4280808080e000841003220241086a290000370300200320022900003703b00520021023200341f0006a41086a220d2006290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0420022003290360370000200241086a200829030037000020022003290370370010200241186a200d29030037000020022003290040370020200241286a200341c0006a41086a220d290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad4280808080800884100520021023200341d0026a41186a220e4200370300200341d0026a41106a22104200370300200341d0026a41086a22024200370300200342003703d0022006200c1003220841086a290000370300200320082900003703b0052008102320022006290300370300200320032903b0053703d002200641f980c400ad42808080809001841003220841086a290000370300200320082900003703b00520081023200d2006290300220c370300200320032903b005220937034020072009370000200741086a200c37000020034180046a41086a200229030037030020034180046a41106a201029030037030020034180046a41186a200e290300370300200320032903d00237038004200341d0026a20034180046a412010bb010240024020032802d0022202450d00200320032902d4023702a401200320023602a0010c010b200341003602a801200342013703a0010b200341a0016a200341206a107620032802a801210d20032802a401211020032802a0012107200341c0006a41186a4200370300200341c0006a41106a220e4200370300200341c0006a41086a2206420037030020034200370340200341b0056a41086a220241e680c400ad4280808080b002841003220841086a290000370300200320082900003703b0052008102320062002290300370300200320032903b005220c3703602003200c370340200241f980c400ad42808080809001841003220841086a290000370300200320082900003703b00520081023200e20032903b005220c370300200341d0026a41086a2006290300370300200341d0026a41106a200c370300200341d0026a41186a20022903003703002003200c370370200320032903403703d0020240024020070d00200341d0026aad428080808080048410050c010b20034100360288042003420137038004200d20034180046a105c0240200d450d00200d4105742106200721020340200320034180046a3602402002200341c0006a106b200241206a2102200641606a22060d000b0b2003280284042102200341d0026aad42808080808004842003350288044220862003280280042206ad84100202402002450d00200610230b2010450d00200710230b02402005450d00200f10230b410021062011450d00200a10230b0c060b41d490c40020062013102d000b41c00041011030000b41c00041011030000b41c00041011030000b41bb90c4002106411621020b02402012450d00200f10230b2011450d00200a10230b4101210a410121080c020b200a10db01200a1023410021084101210a0c010b200710db0120071023410121084100210a0b2004417f6a220541024b0d0002400240024020050e03000102000b200141086a280200450d02200141046a28020010230c020b200a450d01200141046a280200220110db01200110230c010b2008450d00200141086a280200220110db01200110230b2000200236020420002006360200200341c0056a24000b816905067f017e107f047e097f230041c0056b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d000022040e050001020304000b200341e4026a4101360200200342013702d402200341d09dc6003602d0022003410436028404200341849ec60036028004200320034180046a3602e002200341d0026a41d48fc4001038000b200141086a2802002104200141046a2802002105024020022d000120022d000072450d00411121024186b0c00021062004450d19200510230c190b20052001410c6a280200220210fa01200341d0026a41186a4200370300200341d0026a41106a22064200370300200341d0026a41086a22074200370300200342003703d002200341b0056a41086a2201418881c400ad4280808080b002841003220841086a290000370300200320082900003703b0052008102320072001290300370300200320032903b0053703d00220014183e0c400ad4280808080f000841003220841086a290000370300200320082900003703b00520081023200620032903b005220937030020034180046a41086a200729030037030020034180046a41106a200937030020034180046a41186a200129030037030020032009370340200320032903d00237038004200341d0026a20034180046a412010bb01200341d0026a2005200220032802d0022201410120011b220720032902d402420020011b2209422088a710c6022006280200210120032802d402210620032802d002210820032802dc02220a200341e4026a2802002005200210c70202402001450d00200a10230b02402006450d00200810230b02402009a7450d00200710230b200341d0026a41186a4200370300200341d0026a41106a22084200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a2201418881c400ad4280808080b002841003220741086a290000370300200320072900003703b0052007102320062001290300370300200320032903b0052209370360200320093703d00220014183e0c400ad4280808080f000841003220741086a290000370300200320072900003703b00520071023200820032903b0052209370300200341c0006a41086a2006290300370300200341c0006a41106a2009370300200341c0006a41186a200129030037030020032009370370200320032903d002370340200341003602d802200342013703d0022002200341d0026a105c02402002450d00200241057421012005210203402002200341d0026a1071200241206a2102200141606a22010d000b0b20032802d4022102200341c0006aad428080808080048420033502d80242208620032802d0022201ad84100202402002450d00200110230b4100210602402004450d00200510230b0c180b200141046a280200210a2002411a6a2901002109200241196a2d00002105200241186a2d00002107200241166a2f01002108200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241046a2d0000211541022106200241026a2f010021160240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002117200241086a2d00002102410021180c010b4101211841002102410021170b200320093703e802200320053a00e702200320073a00e602200320083b01e4022003200b3a00e3022003200c3a00e2022003200d3b01e0022003200e3a00df022003200f3a00de02200320103b01dc02200320113a00db02200320123a00da02200320133b01d802200320143a00d702200320153a00d202200320163b01d0022003201741ffff0371410874200241187472200641ff01717222053600d30202402018450d00410f210241aab0c0002106024002400240024020050e05000102031a000b20032800d702210620032800db0221020c190b410e210241aabac60021060c180b411321024197b0c00021060c170b411121024186b0c00021060c160b20034180016a41186a200341d0026a41186a220629030037030020034180016a41106a200341d0026a41106a220529030037030020034180016a41086a200341d0026a41086a2202290300370300200320032903d00237038001200642003703002005420037030020024200370300200342003703d002200341b0056a41086a2206418881c400ad4280808080b002841003220741086a290000370300200320072900003703b0052007102320022006290300370300200320032903b0053703d00220064183e0c400ad4280808080f000841003220741086a290000370300200320072900003703b00520071023200520032903b005220937030020034180046a41086a200229030037030020034180046a41106a200937030020034180046a41186a200629030037030020032009370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b2209422088a741057421062002410120021b2208210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b02402009a7450d00200810230b024020070d0041e48fc4002106411521020c160b41002108200341003602d802200342013703d002200a200341d0026a10cb0120032802d4022106200341d0026a41186a220520033502d80242208620032802d002220dad841001220241186a290000370300200341d0026a41106a2207200241106a290000370300200341d0026a41086a220b200241086a290000370300200320022900003703d00220021023200341a0016a41186a22022005290300370300200341a0016a41106a22052007290300370300200341a0016a41086a220c200b290300370300200320032903d0023703a00102402006450d00200d10230b200341d0026a200a41b00110dc041a20034180046a410d6a20034180016a41086a29030037000020034180046a41156a20034180016a41106a29030037000020034180046a411d6a20034180016a41186a29030037000041012107200341013a008404200320032903800137008504200341013a008004200341c0006a200341d0026a20034180046a108d0220032d00482106200341d0026a410d6a200c290300370000200341d0026a41156a2005290300370000200341d0026a411d6a2002290300370000200341f5026a20064102463a0000200341053a00d402200341093a00d002200320032903a0013700d502200341d0026a108e01200a1023410021060c160b200141086a2802002108200141046a28020021192002411a6a2901002109200241196a2d00002110200241186a2d00002111200241166a2f01002112200241156a2d00002113200241146a2d00002114200241126a2f01002115200241116a2d00002116200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241046a2d0000211741022106200241026a2f010021180240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021070c010b4101210741002105410021020b200541ffff0371410874200641ff017172200241187472210502402007450d00410f210241aab0c0002106024002400240024020050e050001020318000b200e410874200f72200d411874722106200b410874200c72200a4118747221020c170b410e210241aabac60021060c160b411321024197b0c00021060c150b411121024186b0c00021060c140b2003200937039801200320103a009701200320113a009601200320123b019401200320133a009301200320143a009201200320153b019001200320163a008f012003200a3a008e012003200b3b018c012003200c3a008b012003200d3a008a012003200e3b0188012003200f3a0087012003200536008301200320173a008201200320183b018001200341d0026a41186a4200370300200341d0026a41106a220a4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a2202418881c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200a20032903b005220937030020034180046a41086a200629030037030020034180046a41106a200937030020034180046a41186a200229030037030020032009370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b2209422088a741057421062002410120021b220b210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b02402009a7450d00200b10230b024020070d0041e48fc4002106411521020c140b200341003602d802200342013703d0022008200341d0026a10cb0120032802d402210b200341d0026a41186a220620033502d80242208620032802d002220ead841001220241186a290000370300200341d0026a41106a2205200241106a290000370300200341d0026a41086a2207200241086a290000370300200320022900003703d00220021023200341a0016a41186a22022006290300370300200341a0016a41106a220c2005290300370300200341a0016a41086a220d2007290300370300200320032903d0023703a0010240200b450d00200e10230b200620022903003703002005200c2903003703002007200d290300370300200320032903a0013703d002200341b0056a41086a2202418881c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a2002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a2002290300370300200320032903b005370370200341c0006a200341d0026a10ac0141c00010212202450d0220022003290360370000200241086a200341e0006a41086a29030037000020022003290370370010200241186a200341f0006a41086a29030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341d0006a290300370000200241386a200341c0006a41186a290300370000200341186a200241c00041014100410010b801200328021821062002102320064101460d030240024020194102490d004200211a200341c0006a41186a220c4200370300200341c0006a41106a220d4200370300200341c0006a41086a2206420037030020034200370340200341b0056a41086a2202418881c400ad4280808080b0028422091003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b005221b3703602003201b370340200241888ac400ad4280808080d00184221b1003220541086a290000370300200320052900003703b00520051023200d20032903b005221c370300200341d0026a41086a22052006290300370300200341d0026a41106a2207201c370300200341d0026a41186a220b20022903003703002003201c370370200320032903403703d002200341106a200341d0026a4120108f012003280214210f20032802102110200c4200370300200d42003703002006420037030020034200370340200220091003220e41086a2900003703002003200e2900003703b005200e102320062002290300370300200320032903b005221c3703602003201c3703402002201b1003220e41086a2900003703002003200e2900003703b005200e1023200c2002290300221c37030020052006290300370300200720032903b005221d370300200b201c3703002003201d370370200320032903403703d002200341086a200341d0026a4120108f012003280208210e200328020c2111200c4200370300200d42003703002006420037030020034200370340200220091003220d41086a2900003703002003200d2900003703b005200d102320062002290300370300200320032903b005221c3703602003201c3703402002201b1003220d41086a2900003703002003200d2900003703b005200d1023200c2002290300221b37030020052006290300370300200720032903b005221c370300200b201b3703002003201c370370200320032903403703d0024101210c2003201141016a4101200e1b36028004200341d0026aad428080808080048420034180046aad4280808080c000841002200b42003703002007420037030020054200370300200342003703d002200220091003220d41086a2900003703002003200d2900003703b005200d102320052002290300370300200320032903b0053703d002200241f980c400ad42808080809001841003220d41086a2900003703002003200d2900003703b005200d1023200620022903002209370300200320032903b005221b370340200a201b370000200a41086a200937000020034180046a41086a200529030037030020034180046a41106a200729030037030020034180046a41186a200b290300370300200320032903d00237038004200341d0026a20034180046a412010bb010240024020032802d002220a0d0041002106410021020c010b20032902d402221a422088a72102201aa72106200a210c0b200b200341a0016a41186a2903003703002007200341a0016a41106a2903003703002005200341a0016a41086a290300370300200320032903a0013703d0020240024020022006460d002006210b0c010b02402006201aa7220b470d00200641016a22022006490d05200641017422052002200520024b1b220b41ffffff3f71200b470d05200b41057422024100480d050240024020060d0020021021210c0c010b200c200641057420021025210c0b200c450d08201a42808080807083211a0b201a422088a721020b200c20024105746a220620032903d002370000200641186a200341d0026a41186a2205290300370000200641106a200341d0026a41106a2207290300370000200641086a200341d0026a41086a2206290300370000200542003703002007420037030020064200370300200342003703d002200341b0056a41086a2205418881c400ad4280808080b002841003220a41086a2900003703002003200a2900003703b005200a102320062005290300370300200320032903b0052209370360200320093703d002200541f980c400ad42808080809001841003220a41086a2900003703002003200a2900003703b005200a1023200720032903b0052209370300200341c0006a41086a2006290300370300200341c0006a41106a2009370300200341c0006a41186a200529030037030020032009370370200320032903d00237034002400240200c0d00200341c0006aad428080808080048410050c010b200341003602d802200342013703d002200241016a2206200341d0026a105c02402006450d00200241057441206a2106200c210203402003200341d0026a36028004200220034180046a106b200241206a2102200641606a22060d000b0b20032802d4022102200341c0006aad428080808080048420033502d80242208620032802d0022206ad84100202402002450d00200610230b200b450d00200c10230b200341d0026a200841b00110dc041a20034180046a41186a200341a0016a41186a29030037030020034180046a41106a200341a0016a41106a29030037030020034180046a41086a200341a0016a41086a290300370300200320032903a00137038004200341b0056a41086a2202418881c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22052002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22062002290300370300200320032903b005370370200341c0006a20034180046a10ac0141c00010212202450d0720022003290360370000200241086a200529030037000020022003290370370010200241186a200629030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a29030037000020034100360288042003420137038004200341d0026a20034180046a10cb0120032802840421062002ad42808080808008842003350288044220862003280280042205ad84100202402006450d00200510230b20021023200341d0026a10db01412010212206450d082006200329038001370000200641186a20034180016a41186a2207290300370000200641106a20034180016a41106a220a290300370000200641086a20034180016a41086a220b2903003700002003419c046a41003602002003418c046a4281808080103702002003420137029404200320063602880420032019360284042003200f410020101b220c36028004200341d0026a41186a200341a0016a41186a220d290300370300200341d0026a41106a200341a0016a41106a220e290300370300200341d0026a41086a200341a0016a41086a220f290300370300200320032903a0013703d002200341b0056a41086a2202418881c400ad4280808080b002841003220541086a290000370300200320052900003703b00520051023200341e0006a41086a22102002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220541086a290000370300200320052900003703b00520051023200341f0006a41086a22052002290300370300200320032903b005370370200341c0006a200341d0026a10ac0141c00010212202450d0920022003290360370000200241086a201029030037000020022003290370370010200241186a200529030037000020022003290340370020200241286a200341c0006a41086a290300370000200241306a200341c0006a41106a290300370000200241386a200341c0006a41186a290300370000200341c0003602d402200320023602d00220034180046a200341d0026a10ce032002102320061023200341dd026a200b290300370000200341e5026a200a290300370000200341ed026a2007290300370000200341f5026a20032903a001370000200341fd026a200f29030037000020034185036a200e2903003700002003418d036a200d2903003700002003419c036a201936020020034198036a200c360200200341003a00d402200341093a00d00220032003290380013700d502200341d0026a21020c010b200341d0026a41186a22074200370300200341d0026a41106a220b4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a2202418881c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200341c0006a41086a20022903002209370300200320032903b005221a370340200a201a370000200a41086a200937000020034180046a41086a200629030037030020034180046a41106a200b29030037030020034180046a41186a2007290300370300200320032903d00237038004200341206a20034180046a412010bb0102400240200328022022060d00410021020c010b20032902242209422088a721022009a7450d00200610230b200341d0026a200841b00110dc041a2003418c046a200236020020034180046a41086a4101360200200341003a008404200341013a008004200341c0006a200341d0026a20034180046a108d0220032d00482102200341dd026a200341a0016a41086a290300370000200341e5026a200341b0016a290300370000200341ed026a200341b8016a290300370000200341f5026a20024102463a0000200341043a00d402200341093a00d002200320032903a0013700d502200341d0026a21020b2002108e01200810234100210741012108410021060c150b200141216a2d00002119200141246a2802002118200341206a41186a200141196a290000370300200341206a41106a200141116a290000370300200341206a41086a200141096a290000370300200320012900013703202002411a6a2901002109200241196a2d0000210f200241186a2d00002110200241166a2f01002111200241156a2d00002112200241146a2d00002113200241126a2f01002114200241116a2d00002115200241106a2d000021082002410e6a2f0100210a2002410d6a2d0000210b2002410c6a2d0000210c2002410a6a2f0100210d200241096a2d0000210e200241046a2d0000211641022106200241026a2f010021170240024020022d00000d0020022d00014101470d00200241056a2d00002106200241066a2f01002105200241086a2d00002102410021070c010b4101210741002105410021020b200541ffff0371410874200641ff017172200241187472210502402007450d00410f210241aab0c0002106024002400240024020050e050001020316000b200d410874200e72200c411874722106200a410874200b7220084118747221020c150b410e210241aabac60021060c140b411321024197b0c00021060c130b411121024186b0c00021060c120b20032009370398012003200f3a009701200320103a009601200320113b019401200320123a009301200320133a009201200320143b019001200320153a008f01200320083a008e012003200a3b018c012003200b3a008b012003200c3a008a012003200d3b0188012003200e3a0087012003200536008301200320163a008201200320173b018001200341d0026a41186a4200370300200341d0026a41106a220a4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a2202418881c400ad4280808080b002841003220541086a290000370300200320052900003703b0052005102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220541086a290000370300200320052900003703b00520051023200a20032903b005220937030020034180046a41086a200629030037030020034180046a41106a200937030020034180046a41186a200229030037030020032009370340200320032903d00237038004200341d0026a20034180046a412010bb0120032902d402420020032802d00222021b2209422088a741057421062002410120021b2208210202400340024020060d00410021070c020b4101210720034180016a2002460d01200641606a2106200220034180016a412010de042105200241206a210220050d000b0b02402009a7450d00200810230b024020070d0041e490c4002106411221020c120b200341b0056a41086a2202418881c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22052002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22072002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212206450d0720062003290360370000200641086a200529030037000020062003290370370010200641186a200729030037000020062003290040370020200641286a200341c0006a41086a29000037000041102102200641306a200341c0006a41106a290000370000200641386a200341c0006a41186a290000370000200341d0026a200641c00010a703200341ec026a2802002111200341d0026a41186a280200210f200341e4026a2802002108200341d0026a41106a280200210e20032802dc02211020032802d802210d20032802d402211220032802d0022105200610230240200d0d00419890c4002106411321020c120b41ab90c400210620052018470d10200e41057421064100211341002105200d21020240024003402006450d0220034180016a2002460d01200541016a2105200641606a2106200220034180016a412010de042107200241206a210220070d000b20074541016a41017120056a417f6a21050b410121130b2011410574210b20034180016a20086b210c410021144100210641002102024002400340200b2002460d02200c2002460d01200641016a2106200820026a2107200241206a2102200720034180016a412010de0422070d000b20074541016a41017120066a417f6a21060b410121140b02400240201941ff01710d002014450d010c110b20130d10200341d0026a41186a220720034180016a41186a290300370300200341d0026a41106a220b20034180016a41106a290300370300200341d0026a41086a220c20034180016a41086a29030037030020032003290380013703d0020240200e2010460d0020102105200e21100c0b0b201041016a22022010490d01201041017422052002200520024b1b220541ffffff3f712005470d01200541057422024100480d010240024020100d0020021021210d0c010b200d201041057420021025210d0b200d0d0a200241011030000b200329039801210920032d009701210720032d009601210b20032f019401210c20032d009301211420032d009201211520032f019001211620032d008f01211720032d008e01211e20032f018c01211f20032d008b01212020032d008a01212120032f018801212220032d0087012123200328008301212420032d008201212520032f018001212602402011200f460d00200f21062011210f0c090b200f41016a2202200f490d00200f41017422062002200620024b1b220641ffffff3f712006470d00200641057422024100480d0002400240200f0d002002102121080c010b2008200f4105742002102521080b20080d08200241011030000b102a000b41c00041011030000b41f98fc4002106411f21020c0f0b200241011030000b41c00041011030000b412041011030000b41c00041011030000b41c00041011030000b2008200f4105746a22022009370018200220073a00172002200b3a00162002200c3b0014200220143a0013200220153a0012200220163b0010200220173a000f2002201e3a000e2002201f3b000c200220203a000b200220213a000a200220223b0008200220233a000720022024360003200220253a0002200220263b0000201141016a2111024002402013450d00200e20054d0d01200d200e417f6a220e4105746a220229000021092002290008211a2002290010211b200d20054105746a220541186a200241186a2900003700002005201b3700102005201a370008200520093700000b2006210f201021050c020b41d490c4002005200e102d000b200d20104105746a220220032903d002370000200241186a2007290300370000200241106a200b290300370000200241086a200c290300370000200e41016a210e2014450d00201120064d0d0120082011417f6a22114105746a220229000021092002290008211a2002290010211b200820064105746a220641186a200241186a2900003700002006201b3700102006201a370008200620093700000b200341f5026a2003290320370000200341dd026a20034180016a41086a290300370000200341e5026a20034180016a41106a290300370000200341ed026a20034180016a41186a290300370000200341fd026a200341206a41086a29030037000020034185036a200341206a41106a2903003700002003418d036a200341206a41186a290300370000200341013a00d402200341093a00d00220032003290380013700d5022003419c036a201136020020034198036a200e36020020034195036a20193a0000200341d0026a108e01200341d0026a41186a220b4200370300200341d0026a41106a220c4200370300200341d0026a41086a22064200370300200342003703d002200341b0056a41086a2202418881c400ad4280808080b002841003220741086a290000370300200320072900003703b0052007102320062002290300370300200320032903b0053703d00220024183e0c400ad4280808080f000841003220741086a290000370300200320072900003703b00520071023200341c0006a41086a20022903002209370300200320032903b005221a370340200a201a370000200a41086a200937000020034180046a41086a200629030037030020034180046a41106a200c29030037030020034180046a41186a200b290300370300200320032903d00237038004200341a0016a20034180046a412010bb010240024020032802a00122020d00410021060c010b20032902a4012209422088a721062009a7450d00200210230b02400240200e20124f22020d004100200620116b2207200720064b1b2012490d00200341ec026a2011360200200341d0026a41186a200f360200200341d0026a41106a200e360200200341dc026a2005360200200320083602e4022003200d3602d802200320123602d402200320183602d002200341b0056a41086a2202418881c400ad4280808080b002841003220641086a290000370300200320062900003703b00520061023200341e0006a41086a22072002290300370300200320032903b0053703602002418281c400ad4280808080e000841003220641086a290000370300200320062900003703b00520061023200341f0006a41086a22062002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0320022003290360370000200241086a200729030037000020022003290370370010200241186a200629030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341c000360284042003200236028004200341d0026a20034180046a10ce032002102302402005450d00200d10230b0240200f450d00200810230b410021060c010b0240024020020d00200341dd026a200341286a290300370000200341e5026a200341306a290300370000200341ed026a200341386a290300370000200341033a00d402200341093a00d002200320032903203700d502200341d0026a108e010c010b200341dd026a200341206a41086a290300370000200341e5026a200341206a41106a290300370000200341ed026a200341206a41186a290300370000200341023a00d402200341093a00d002200320032903203700d502200341d0026a108e01200341b0056a41086a2202418881c400ad4280808080b002841003220741086a290000370300200320072900003703b00520071023200341e0006a41086a220b2002290300370300200320032903b005370360200241c089c400ad4280808080a001841003220741086a290000370300200320072900003703b00520071023200341f0006a41086a22072002290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0420022003290360370000200241086a200b29030037000020022003290370370010200241186a200729030037000020022003290040370020200241286a200341c0006a41086a290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a290000370000200341d0026a200241c00010b20320032802d002210720034180046a200341d0026a410472220b41ac0110dc041a02402007411a470d00200210230c010b200341a0016a20034180046a41ac0110dc041a20021023200320073602d002200b200341a0016a41ac0110dc041a2003418c046a200636020020034180046a41086a2012360200200341003a008404200341013a008004200341c0006a200341d0026a20034180046a108d0220032d00482102200341dd026a200341206a41086a290300370000200341e5026a200341306a290300370000200341ed026a200341386a290300370000200341f5026a20024102463a0000200341043a00d402200341093a00d002200320032903203700d502200341d0026a108e010b200341b0056a41086a2206418881c400ad4280808080b0028422091003220241086a290000370300200320022900003703b00520021023200341e0006a41086a22072006290300370300200320032903b0053703602006418281c400ad4280808080e000841003220241086a290000370300200320022900003703b00520021023200341f0006a41086a220b2006290300370300200320032903b005370370200341c0006a200341206a10ac0141c00010212202450d0420022003290360370000200241086a200729030037000020022003290370370010200241186a200b29030037000020022003290040370020200241286a200341c0006a41086a220b290000370000200241306a200341c0006a41106a290000370000200241386a200341c0006a41186a2900003700002002ad4280808080800884100520021023200341d0026a41186a220c4200370300200341d0026a41106a220e4200370300200341d0026a41086a22024200370300200342003703d002200620091003220741086a290000370300200320072900003703b0052007102320022006290300370300200320032903b0053703d002200641f980c400ad42808080809001841003220741086a290000370300200320072900003703b00520071023200b20062903002209370300200320032903b005221a370340200a201a370000200a41086a200937000020034180046a41086a200229030037030020034180046a41106a200e29030037030020034180046a41186a200c290300370300200320032903d00237038004200341d0026a20034180046a412010bb010240024020032802d0022202450d00200320032902d4023702a401200320023602a0010c010b200341003602a801200342013703a0010b200341a0016a200341206a107620032802a801210b20032802a401210e20032802a001210a200341c0006a41186a4200370300200341c0006a41106a220c4200370300200341c0006a41086a2206420037030020034200370340200341b0056a41086a2202418881c400ad4280808080b002841003220741086a290000370300200320072900003703b0052007102320062002290300370300200320032903b005220937036020032009370340200241f980c400ad42808080809001841003220741086a290000370300200320072900003703b00520071023200c20032903b0052209370300200341d0026a41086a2006290300370300200341d0026a41106a2009370300200341d0026a41186a200229030037030020032009370370200320032903403703d00202400240200a0d00200341d0026aad428080808080048410050c010b20034100360288042003420137038004200b20034180046a105c0240200b450d00200b4105742106200a21020340200320034180046a3602402002200341c0006a106b200241206a2102200641606a22060d000b0b2003280284042102200341d0026aad42808080808004842003350288044220862003280280042206ad84100202402002450d00200610230b200e450d00200a10230b02402005450d00200d10230b41002106200f450d00200810230b0c060b41d490c40020062011102d000b41c00041011030000b41c00041011030000b41c00041011030000b41bb90c4002106411621020b02402010450d00200d10230b200f450d00200810230b41012108410121070c020b200810db012008102341002107410121080c010b200a10db01200a102341012107410021080b2004417f6a220541024b0d0002400240024020050e03000102000b200141086a280200450d02200141046a28020010230c020b2008450d01200141046a280200220110db01200110230c010b2007450d00200141086a280200220110db01200110230b2000200236020420002006360200200341c0056a24000b34002000418cfdc40036020420004100360200200041146a4109360200200041106a41a892c400360200200041086a42053702000bb70101027f230041d0006b22022400200241033a000c0240410110212203450d00200341003a0000200041086a41013602002002410136024420022003360240200020022903403702000240024041000d00024020022d000c0e0402000102020b200241346a280200450d01200241306a28020010230c010b0240200241146a280200450d00200241106a28020010230b200241206a280200450d002002411c6a28020010230b200241d0006a24000f0b410141011030000b2401017f230041b0046b22022400200241033602002000200210cd01200241b0046a24000b2201017f230041106b22022400200241003602002000200210cc01200241106a24000be52f06057f017e017f017e077f047e230041e0126b22072400200741b8096a41186a22084200370300200741b8096a41106a22094200370300200741b8096a41086a220a4200370300200742003703b809200741e80d6a41086a220b418cfdc400ad4280808080d00084220c1003220d41086a2900003703002007200d2900003703e80d200d1023200a200b290300370300200720072903e80d220e3703b8122007200e3703b809200b419efec300ad4280808080e001841003220d41086a2900003703002007200d2900003703e80d200d1023200920072903e80d220e370300200741d8006a41086a220d200a290300370300200741d8006a41106a220f200e370300200741d8006a41186a2210200b2903003703002007200e37038805200720072903b809370358200741d0006a200741d8006a4120108f010240024002402007280254410020072802501b2002460d0041e7afc400210b0c010b2008420037030020094200370300200a4200370300200742003703b809200b200c1003220241086a290000370300200720022900003703e80d20021023200a200b290300370300200720072903e80d220e3703b8122007200e3703b809200b41d8fdc300ad4280808080b001841003220241086a290000370300200720022900003703e80d2002102320074188056a41086a200b290300220e370300200720072903e80d220c370388052009200c370000200941086a200e370000200d200a290300370300200f200929030037030020102008290300370300200720072903b809370358200741a8126a200741d8006a4120108602024020072802a8124101470d0041bfc7c300210b411e210a200320044b0d0220072802ac12220920034b0d02200941036a2004490d020240200420036b220b20044d0d0041ddc7c300210b411b210a0c030b0240200320096b220a20034d0d0041f8c7c300210b4116210a0c030b0240200a41034d0d00418ec8c300210b4115210a0c030b02400240024002400240024002400240200a0e0400010203000b200b4104490d040c060b200b41034f0d05200b41046a210f0c040b200b41014b0d044107210f200b0e020301030b200b0d034109210f0c020b4108210f0c010b200b210f0b200741b8096a41186a22024200370300200741b8096a41106a22094200370300200741b8096a41086a220a4200370300200742003703b809200741e80d6a41086a220b41c4fbc400ad4280808080e000841003220d41086a2900003703002007200d2900003703e80d200d1023200a200b290300370300200720072903e80d3703b809200b41f9bcc000ad4280808080e000841003220d41086a2900003703002007200d2900003703e80d200d1023200920072903e80d220e370300200741d8006a41086a2208200a290300370300200741d8006a41106a2203200e370300200741d8006a41186a2210200b2903003703002007200e37038805200720072903b809370358200741c8006a200741d8006a4120108f01200728024c2104200728024821112002420037030020094200370300200a4200370300200742003703b809200b418cfdc400ad4280808080d000841003220d41086a2900003703002007200d2900003703e80d200d1023200a200b290300370300200720072903e80d3703b809200b41d8fdc300ad4280808080b001841003220d41086a2900003703002007200d2900003703e80d200d1023200920072903e80d220e3703002008200a2903003703002003200e3703002010200b2903003703002007200e37038805200720072903b809370358200741b8126a200741d8006a41201086020240024020072802b8124101460d00410021120c010b410021122004410020111b220b200741b8126a41086a2802006b220a200b4b0d00200a4100200a41e807491b21120b200741e80d6a41086a220b418cfdc400ad4280808080d000841003220a41086a2900003703002007200a2900003703e80d200a102320074198126a41086a2209200b290300370300200720072903e80d37039812200b41e3fdc300ad4280808080f000841003220a41086a2900003703002007200a2900003703e80d200a1023200741a8126a41086a220d200b290300370300200720072903e80d3703a812200720123602dc12200741e80d6a41186a2202200741dc126aad4280808080c000841001220a41186a290000370300200741e80d6a41106a2208200a41106a290000370300200b200a41086a2900003703002007200a2900003703e80d200a1023200741b8126a41186a220a2002290300370300200741b8126a41106a22022008290300370300200741b8126a41086a2208200b290300370300200720072903e80d3703b81202400240024041c0001021220b450d00200b200729039812370000200b20072903a812370010200b20072903b812370020200b41086a2009290300370000200b41186a200d290300370000200b41286a2008290300370000200b41306a2002290300370000200b41386a200a290300370000200741b8096a200b41c00010a60320072802b809210a200741e80d6a200741b8096a410472220941ac0410dc041a0240200a4103460d0020074188056a200741e80d6a41ac0410dc041a200b10232007200a3602b809200920074188056a41ac0410dc041a0c020b200b1023200741b8096a2012417f6a220b20124d200b10920220072802b8094103470d01200741023602d0042007410236029804200741023602e003200741023602a803200741023602f002200741023602b8022007410236028002200741023602c8012007410236029001200741023602580c020b41c00041011030000b200741d8006a200741b8096a41b00410dc041a0b024002400240200741d8006a200f41ff0171221341386c6a22082802004102460d00200841286a29030020055a200841306a290300220e20065a200e2006511b0d010b200141086a211120012802042103200128020021020240024002400240200f410f71220b450d00200b417f6a2114410021094100210d03400240200741d8006a20096a220b280200410246220a0d004100200b200a1b220b2802002002470d000240024020024101460d000240200b41086a220a2011460d00200a2011412010de040d030b200b2802042003470d020c010b200b2802042003470d010b41032115410321044103210f024002400240024002400240024002400240024020140e09000102030405060709000b4100210f410121040c080b4100210f410221040c070b4100210f0c050b410121044101210f0c050b4101210f410221040c040b4101210f0c020b410221044102210f0c020b4102210f0b410321040b410321100240024002400240024002400240024002400240200d410f710e0a00010203040506070809000b41002115410021100c080b41002110410121150c070b41002110410221150c060b410021100c050b41012115410121100c040b41012110410221150c030b410121100c020b410221150b410221100b41faafc400210b4125210a200f20154b0d0b201020044b0d0b0b200d41016a210d200941386a220941b004470d000c020b0b0240024020072802b802410246220b0d004100200741b8026a200b1b220b2802002002470d00024020024101460d000240200b41086a220a2011460d00200a2011412010de040d020b200b2802042003470d010c020b200b2802042003460d010b024020072802f002410246220b0d004100200741f0026a200b1b220b2802002002470d00024020024101460d000240200b41086a220a2011460d00200a2011412010de040d020b200b2802042003460d020c010b200b2802042003460d010b024020072802a803410246220b0d004100200741a8036a200b1b220b2802002002470d00024020024101460d000240200b41086a220a2011460d00200a2011412010de040d020b200b2802042003460d020c010b200b2802042003460d010b024020072802e003410246220b0d004100200741e0036a200b1b220b2802002002470d00024020024101460d000240200b41086a220a2011460d00200a2011412010de040d020b200b2802042003460d020c010b200b2802042003460d010b0240200728029804410246220b0d00410020074198046a200b1b220b2802002002470d00024020024101460d000240200b41086a220a2011460d00200a2011412010de040d020b200b2802042003460d020c010b200b2802042003460d010b20072802d004410246220b0d014100200741d0046a200b1b220b2802002002470d01024020024101460d000240200b41086a220a2011460d004200210e4200210c200a2011412010de040d050b4200210e4200210c200b2802042003470d040c010b200b2802042003470d020b41faafc400210b4125210a0c080b4200210e4200210c20024101470d010b200741386a200310c803200741c0006a290300210c2007290338210e0b200741b8096a200110c703200741206a20072802b809220a20072802c009108902200741306a2903002116200729032821172007280220210b024020072802bc09450d00200a10230b0240200520174200200b1b2217200e7c220e7d2218200556200620164200200b1b200c7c200e201754ad7c7d2005200e54ad7d220e200656200e2006511b0d000240024020012802004101460d00200741b8096a41186a200141206a290000370300200741b8096a41106a200141186a290000370300200741b8096a41086a200141106a2900003703002007200141086a2900003703b8090c010b200741b8096a200141046a1087020b200741186a200741b8096a2018200e10f10102402007280218220b450d00200728021c210a0c070b200741e80d6a200110c70320072802e80d210b20073502f00d210c200720063703c009200720053703b809200c422086200bad84200741b8096aad42808080808002841002024020072802ec0d450d00200b10230b0240024020012802004101460d00200741b8096a41186a200141206a290000370300200741b8096a41106a200141186a290000370300200741b8096a41086a200141106a2900003703002007200141086a2900003703b8090c010b200741b8096a200141046a1087020b200741e80d6a41186a200741b8096a41186a290300220c370300200741e80d6a41106a200741b8096a41106a2903002216370300200741e80d6a41086a200741b8096a41086a220b2903002217370300200720072903b80922193703e80d200741800a6a2006370300200741f8096a2005370300200741f0096a200e370300200741e8096a2018370300200b41053a0000200741c1096a2019370000200741c9096a2017370000200741d1096a2016370000200741d9096a200c370000200741e1096a200728008805360000200741e4096a2007418b056a2800003600002007410f3a00b809200741b8096a108e010b2008290310210c2008200129021037031020082903082116200820012902083703082008290300210e20082001290200370300200841186a220b2903002117200b200141186a290200370300200741d8006a201341386c6a220b41306a2006370200200b41286a2005370200200b41206a220b2902002106200b200141206a2902003702000240200ea7220b4102460d00200e422088a7210a200741e80d6a41206a2006370300200741e80d6a41186a20173703002007200e3703e80d200720163703f00d2007200c3703f80d200741f00d6a210902402007280258220d4102460d00200d200b470d000240200b4101460d00200741e0006a2009412010de040d01200728025c200a460d020c010b200728025c200a460d010b0240200728029001220d4102460d00200d200b470d000240200b4101460d0020074198016a2009412010de040d0120074194016a280200200a460d020c010b20074194016a280200200a460d010b024020072802c801220d4102460d00200d200b470d000240200b4101460d00200741d0016a2009412010de040d01200741cc016a280200200a460d020c010b200741cc016a280200200a460d010b0240200728028002220d4102460d00200d200b470d000240200b4101460d0020074188026a2009412010de040d0120074184026a280200200a460d020c010b20074184026a280200200a460d010b024020072802b802220d4102460d00200d200b470d000240200b4101460d00200741c0026a2009412010de040d01200741bc026a280200200a460d020c010b200741bc026a280200200a460d010b024020072802f002220d4102460d00200d200b470d000240200b4101460d00200741f8026a2009412010de040d01200741f4026a280200200a460d020c010b200741f4026a280200200a460d010b024020072802a803220d4102460d00200d200b470d000240200b4101460d00200741b0036a2009412010de040d01200741ac036a280200200a460d020c010b200741ac036a280200200a460d010b024020072802e003220d4102460d00200d200b470d000240200b4101460d00200741e8036a2009412010de040d01200741e4036a280200200a460d020c010b200741e4036a280200200a460d010b0240200728029804220d4102460d00200d200b470d000240200b4101460d00200741a0046a2009412010de040d012007419c046a280200200a460d020c010b2007419c046a280200200a460d010b024020072802d004220d4102460d00200d200b470d000240200b4101460d00200741d8046a2009412010de040d01200741d4046a280200200a460d020c010b200741d4046a280200200a460d010b200741b8096a200741e80d6a10c703200720072802b809220b20072802c009220a108902200741106a29030021062007290308210c02402007290300220e4201520d00200aad422086200bad8410050b200ea7210a024020072802bc09450d00200b10230b200a4101470d000240024020072802e80d4101460d00200741b8096a41186a200741880e6a290300370300200741b8096a41106a200741e80d6a41186a290300370300200741b8096a41086a200741e80d6a41106a2903003703002007200741e80d6a41086a2903003703b8090c010b200741b8096a200741e80d6a4104721087020b200741b8096a200c200610de010240024020072802e80d4101460d00200741b8096a41186a200741880e6a290300370300200741b8096a41106a200741e80d6a41186a290300370300200741b8096a41086a200741e80d6a41106a2903003703002007200741e80d6a41086a2903003703b8090c010b200741b8096a200741e80d6a4104721087020b20074188056a41186a200741b8096a41186a290300220e37030020074188056a41106a200741b8096a41106a290300220537030020074188056a41086a200741b8096a41086a220b2903002216370300200720072903b809221737038805200741f0096a2006370300200741e8096a200c370300200b41063a0000200741c1096a2017370000200741c9096a2016370000200741d1096a2005370000200741d9096a200e370000200741e1096a20072800a812360000200741e4096a200741ab126a2800003600002007410f3a00b809200741f8096a20072903b812370300200741800a6a200741b8126a41086a290300370300200741b8096a108e010b200741e80d6a41086a220b418cfdc400ad4280808080d000841003220a41086a2900003703002007200a2900003703e80d200a1023200741b8126a41086a2209200b290300370300200720072903e80d3703b812200b41e3fdc300ad4280808080f000841003220a41086a2900003703002007200a2900003703e80d200a102320074188056a41086a220d200b290300370300200720072903e80d37038805200720123602a812200741e80d6a41186a2202200741a8126aad4280808080c000841001220a41186a290000370300200741e80d6a41106a2208200a41106a290000370300200b200a41086a2900003703002007200a2900003703e80d200a1023200741b8096a41186a2002290300370300200741b8096a41106a220a2008290300370300200741b8096a41086a2202200b290300370300200720072903e80d3703b80941c0001021220b450d01200b20072903b812370000200b200729038805370010200b20072903b809370020200b41086a2009290300370000200b41186a200d290300370000200b41286a2002290300370000200b41306a200a290300370000200b41386a200741b8096a41186a290300370000200741c0003602bc092007200b3602b809200741d8006a200741b8096a10d101200b10230b4100210b0c040b41c00041011030000b41a3c8c300210b0c010b41d9afc400210b410e210a0c010b4113210a0b2000200a3602042000200b360200200741e0126a24000b130020004106360204200041a4b0c4003602000bb20201027f024002402000280200220141064b0d00024002400240024020010e0705050005010203050b200041086a280200450d04200028020410230f0b200041086a280200450d03200028020410230f0b02402000410c6a2802002202450d0020002802042101200241186c210203400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200241686a22020d000b0b200041086a280200450d02200028020410230f0b02402000410c6a2802002202450d00200028020421012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041086a280200450d01200028020410230c010b200041086a280200450d00200028020410230f0b0b130020004105360204200041a8dac4003602000b130020004105360204200041c0d6c4003602000b130020004102360204200041a0aec0003602000b130020004101360204200041bcc2c3003602000b13002000410336020420004184a1c2003602000b130020004103360204200041d0adc5003602000b130020004101360204200041bcb5c0003602000b130020004101360204200041b4b7c0003602000b130020004103360204200041dcb1c0003602000b130020004103360204200041a4dfc0003602000b13002000410b360204200041c4edc0003602000b130020004106360204200041ccebc3003602000b130020004105360204200041aca4c2003602000b130020004106360204200041bca2c3003602000b130020004101360204200041b8c8c3003602000b130020004107360204200041d4f3c3003602000b13002000410236020420004194ddc1003602000b130020004103360204200041fcd9c1003602000b900e01037f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1a000102030405060708090a0b0c0d0e0f10111213141516171819000b417f2102024002400240200141086a280200417f6a220341064b0d0041012101024020030e0703010200020202030b41c09a0c21020c020b410021010b4190ce0021020b200041013a0005200020013a0004200020023602000f0b20004180023b010420004190ce003602000f0b20004181023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b4100210202400240200141086a280200417f6a220341034b0d0041c0843d2101024020030e0402000202020b4101210241d0860321010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b20004181023b010420004190ce003602000f0b410121024100210302400240200141086a2d0000417f6a2204410f4b0d0041a0c21e210102400240024020040e1004040000010104040102020202020202040b4180b51821010c030b41b0e32d21010c020b4100210141012103410021020c010b4190ce0021010b200020023a0005200020033a0004200020013602000f0b20004180023b010420004190ce003602000f0b20004180023b0104200041f093093602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b20004180023b010420004190ce003602000f0b4100210202400240200141086a2d0000417f6a220341104b0d0041c096b102210102400240024002400240024020030e110707000001070707020205050303030404070b41c09a0c21010c060b4101210241a0c21e21010c050b41c09a0c21010c040b41a08d0621010c030b41a0c21e21010c020b410121020b4190ce0021010b200041013a0005200020023a0004200020013602000f0b0240024020012d0004417f6a220341034b0d004101210241a08d0621010240024020030e0403030001030b41c096b10221010c020b41c09a0c21010c010b410021024190ce0021010b200041013a0005200020023a0004200020013602000f0b0240024020012d0004417f6a220341034b0d004101210241a08d0621010240024020030e0403030001030b41c096b10221010c020b41c09a0c21010c010b410021024190ce0021010b200041013a0005200020023a0004200020013602000f0b4100210202400240200141086a280200417f6a220341054b0d0041a08d06210102400240024020030e06040300010202040b41c0843d21010c030b41a0c21e21010c020b41012102418089fa0021010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b024020012d0004417f6a220141034b0d00024002400240024020010e0400010203000b20004180023b0104200041d086033602000f0b20004180023b0104200041d086033602000f0b20004180023b0104200041d086033602000f0b20004180023b0104200041d086033602000f0b20004180023b010420004190ce003602000f0b4100210202400240200141086a280200417f6a220341024b0d0041a0c21e2101024020030e03020000020b4101210241a08d0621010c010b4190ce0021010b200041013a0005200020023a0004200020013602000f0b410121024100210302400240200141086a2d0000417f6a220441014b0d0041c0843d2101024020040e020200020b4100210141012103410021020c010b4190ce0021010b200020023a0005200020033a0004200020013602000f0b20004180023b0104200041c0843d3602000f0b20004180023b010420004190ce003602000f0b02400240200141086a2d0000417f6a220341054b0d004101210141a08d06210202400240024020030e06040101000102040b4100210141c0843d21020c030b4100210141a0c21e21020c020b4100210141c096b10221020c010b410021014190ce0021020b200041013a0005200020013a0004200020023602000f0b02400240024020012d0004417f6a220341064b0d004101210241c096b102210120030e0702010000000000020b410021020b4190ce0021010b200041013a0005200020023a0004200020013602000f0b024002402001280204417f6a220441024b0d00410021014101210241002103024020040e03020100020b4101210241002101410121030c010b41012103410021024190ce0021010b200020033a0005200020023a0004200020013602000f0b02402001280204417f6a220141034b0d00024002400240024020010e0400010203000b20004180023b0104200041d086033602000f0b20004180023b010420004190ce003602000f0b200041013b0104200041003602000f0b200041013b0104200041003602000f0b20004180023b010420004190ce003602000b9ac20106017f037e127f017e127f057e23004190056b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e110001020304050607080b0f101112131415000b200341ec036a4101360200200342013702dc03200341d09dc6003602d803200341043602c401200341849ec6003602c0012003200341c0016a3602e803200341d8036a41c494c6001038000b200141306a2903002104200141286a29030021052001411d6a29000021062001411c6a2d000021072001411b6a2d00002108200141196a2f00002109200141186a2d0000210a200141176a2d0000210b200141156a2f0000210c200141146a2d0000210d200141136a2d0000210e200141116a2f0000210f200141106a2d000021102001410f6a2d000021112001410d6a2f000021122001410c6a2d00002113200141086a2802002114200141076a2d00002115200141056a2f00002116200141046a2d0000211720012d000121182002411a6a2901002119200241196a2d0000211a200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241046a2d0000212741022128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472202841ff01717221020240202b450d00410f212841aab0c000212a024020020e05000c0d4243000b2025410874202672202441187472212a202241087420237220214118747221284101212141012123410121220c430b20032019370388012003201a3a0087012003201b3a0086012003201c3b0184012003201d3a0083012003201e3a0082012003201f3b018001200320203a007f200320213a007e200320223b017c200320233a007b200320243a007a200320253b0178200320263a007720032002360073200320273a0072200320293b0170200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f8022028102320034190036a41086a2002290300370300200320032903f80237039003200241f1acc500ad4280808080e000841003222841086a290000370300200320282900003703f80220281023200341c0016a41086a2002290300370300200320032903f8023703c001200341b0046a200341f0006a10ac0141c00010212202450d142002200329039003370000200241086a20034190036a41086a290300370000200220032903c001370010200241186a200341c0016a41086a290300370000200220032903b004370020200241286a200341b0046a41086a290300370000200241306a200341c0046a290300370000200241386a200341b0046a41186a29030037000041012121200341186a200241c00041014100410010b8012003280218212820021023024020284101470d00419e95c600212a4114212841012123410121220c430b0240201741ff01714101460d0020164180fe037141087621280c3d0b200341d8036a201441067610bc0220032802d803212a0240024020032802e0032014413f7122024b0d00410021020c010b202a20024105746a22022f0000221641087621282002290018210620022d0017210720022d0016210820022f0014210920022d0013210a20022d0012210b20022f0010210c20022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d000721132002280003211420022d00022115410121020b024020032802dc03450d00202a10230b20020d3c41aabac600212a410e212841012123410121220c420b200141106a2903002106200141086a29030021042002411a6a2901002119200241196a2d0000212a200241186a2d0000212b200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021142002410d6a2d0000211a2002410c6a2d0000211b2002410a6a2f0100211c200241096a2d0000211d200241046a2d0000211e41022128200241026a2f0100211f0240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f01002120200241086a2d00002102410021270c010b4101212741002102410021200b200320193703f0032003202a3a00ef032003202b3a00ee03200320213b01ec03200320223a00eb03200320233a00ea03200320243b01e803200320253a00e703200320263a00e603200320143b01e4032003201a3a00e3032003201b3a00e2032003201c3b01e0032003201d3a00df032003201e3a00da032003201f3b01d8032003202041ffff0371410874200241187472202841ff01717222023600db0302402027450d00410f212841aab0c000212a20020e05070a0b4041070b200341b0046a41186a200341d8036a41186a290300370300200341b0046a41106a200341d8036a41106a290300370300200341b0046a41086a200341d8036a41086a290300370300200320032903d8033703b004200341d8036a200341b0046a10b804410121020240024020032d00d8034101460d00410b212841b295c600212a0c010b200341ba036a20032d00db033a0000200341c0016a41086a200341ec036a290200370300200341cd016a200341f1036a290000370000200320032f00d9033b01b8032003200341e4036a2902003703c001200341d8036a41086a28020021284100210220032802dc03212a0b200341d8026a41026a222b200341b8036a41026a2d00003a000020034190036a41086a2221200341c0016a41086a29030037030020034190036a41106a200341c0016a41106a290300370300200320032f01b8033b01d802200320032903c0013703900320020d4020034183016a2021290300370000200341f0006a41186a2003419d036a290000370000200320032f01d8023b0170200320283600772003202a360073200320032903900337007b2003202b2d00003a0072200341d8036a200341f0006a10f20320032802f8032202450d3a200341ee016a20032d0086043a0000200341f3016a20032d008b043a0000200341e4016a20032902fc03370200200341c0016a410c6a200341d8036a410c6a3502003e0200200341c0016a41186a200341d8036a41186a290300222c370300200341c0016a412f6a200341d8036a412f6a280000360000200341c0016a41c4006a200341d8036a41c4006a290200370200200341c0016a41346a200341d8036a41346a290200370200200341c0016a413c6a200341d8036a413c6a290200370200200320032902dc033702c401200320032903e803222d3703d001200320032802d8033602c001200320023602e001200320034184046a2f01003b01ec012003200341a4046a28020036028c02200341206a200341b0046a10940202402003290320221920032903c001222e7d222f201956200341206a41086a2903002205200341c0016a41086a29030022307d2019202e54ad7d221920055620192005511b0d0020032004202f202f200456201920065620192006511b22021b2204202d7c22053703d001200341d8016a2006201920021b2219202c7c2005200454ad7c37030020032004202e7c22063703c0012003201920307c2006200454ad7c3703c801200341f0006a200341c0016a10b9040b20032802e401450d3920032802e00110230c390b200141106a2903002106200141086a29030021042002411a6a2901002119200241196a2d00002114200241186a2d0000211a200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241046a2d0000212041022128200241026a2f010021270240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472202841ff01717221020240202b450d00410f212841aab0c000212a024020020e05000a0b4041000b2025410874202672202441187472212a202241087420237220214118747221284101212141012123410121220c410b2003201937038801200320143a0087012003201a3a0086012003201b3b0184012003201c3a0083012003201d3a0082012003201e3b0180012003201f3a007f200320213a007e200320223b017c200320233a007b200320243a007a200320253b0178200320263a007720032002360073200320203a0072200320273b0170200341d8036a200341f0006a10f20320032802f8032202450d39200341e4016a20032802fc03222b360200200341ee016a20032d0086043a0000200341f3016a20032d008b043a0000200341c0016a410c6a200341d8036a410c6a3502003e0200200341c0016a41186a200341d8036a41186a2903002219370300200341c0016a41286a200341d8036a41286a2802002228360200200341c0016a412f6a200341d8036a412f6a280000360000200341c0016a41c4006a200341d8036a41c4006a290200370200200341c0016a41346a200341d8036a41346a290200370200200341c0016a413c6a200341d8036a413c6a290200370200200320032902dc033702c401200320032903e80322053703d001200320032802d8033602c001200320023602e001200320034184046a2f01003b01ec012003200341a4046a28020036028c0202402028411f4d0d0041cd95c600212a41232128202b450d40200210234101212141012123410121220c410b200520042005200454201920065420192006511b22021b22042019200620021b220684500d36200341c0016a41186a4200201920067d2005200454ad7d222e200520047d222f4280c8afa025544100202e501b22281b37030020034200202f20281b3703d001200341d8036a41186a4200370300200341d8036a41106a22214200370300200341d8036a41086a222a4200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222b41086a2900003703002003202b2900003703f802202b1023202a2002290300370300200320032903f802222e3703602003202e3703d803200241b0fac500ad4280808080a001841003222b41086a2900003703002003202b2900003703f802202b1023202120032903f802222e370300200341b0046a41086a202a290300370300200341b0046a41106a202e370300200341b0046a41186a20022903003703002003202e3703b803200320032903d8033703b004200341306a200341b0046a4120108f012003280230212a2003280234212b20032802e801220220032802e401470d35200241016a22212002490d33200241017422222021202220214b1b2221ad42187e222e422088a70d33202ea7222241004e0d340c330b2002411a6a2901002119200241196a2d00002114200241186a2d0000211a200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241046a2d0000212041022128200241026a2f010021270240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b410021024100212a0b202a41ffff0371410874200241187472202841ff01717221020240202b450d00410f212841aab0c000212a024020020e0500090a3f40000b2025410874202672202441187472212a202241087420237220214118747221284101212141012123410121220c400b200320193703a803200320143a00a7032003201a3a00a6032003201b3b01a4032003201c3a00a3032003201d3a00a2032003201e3b01a0032003201f3a009f03200320213a009e03200320223b019c03200320233a009b03200320243a009a03200320253b019803200320263a0097032003200236009303200320203a009203200320273b019003200341d8036a20034190036a10f20320032802f8032224450d38200341d8036a41186a2202290300212e2003419c046a290200212c20034198046a2f0100212620034194046a2f0100211420034190046a2f0100211a2003418c046a2f0100211b20034187046a280000211c20034184046a2f0100211d20034180046a2802002125200341e4036a350200210420032903e803212f20032d009b04211e20032d009a04211f20032d009704212020032d009604212720032d009304212920032d009204211620032d008f04210720032d008e04210820032d008b04210920032d008604210a20032802fc03210b20033502d803210520032902dc03210620024200370300200341d8036a41106a222b420037030041082123200341d8036a41086a22284200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a102320282002290300370300200320032903f8022219370360200320193703d803200241b0fac500ad4280808080a001841003222a41086a2900003703002003202a2900003703f802202a1023202b20032903f8022219370300200341b0046a41086a2028290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b004200341c0006a200341b0046a4120108f01410021222004422086200642208884211920052006422086842106024002400240202541186c2202450d002003280244410020032802401b212b202420026a2121200241686a2128202421020340200241086a290300210520022903002104202b200241106a280200222a490d024200201920057d2006200454ad7d2205200620047d2204200656200520195620052019511b222a1b211942002004202a1b2106202841686a2128200241186a22022021470d000b0b0240200b0d004100212a0c020b202410234100212a0c010b411810212223450d13202320043703002023202a360210202320053703080240024020280d00410121224101212a0c010b200241186a210c202541186c20246a41686a210d410121224101212a0340200c210202400340200241086a290300210520022903002104202b200241106a2802002228490d014200201920057d2006200454ad7d2205200620047d2204200656200520195620052019511b22281b21194200200420281b2106200241186a22022021470d000c030b0b0240202a2022470d00202241016a222a2022490d3620224101742225202a2025202a4b1b222aad42187e222d422088a70d36202da722254100480d360240024020220d002025102121230c010b2023202241186c2025102521230b2023450d170b200241186a210c2023202241186c6a222520053703082025200437030020252028360210202241016a2122200d2002470d000b0b200b450d00202410230b2003419c046a202c3702002003419b046a201e3a00002003419a046a201f3a000020034198046a20263b010020034197046a20203a000020034196046a20273a000020034194046a20143b010020034193046a20293a000020034192046a20163a000020034190046a201a3b01002003418f046a20073a00002003418e046a20083a00002003418c046a201b3b01002003418b046a20093a000020034187046a201c36000020034186046a200a3a000020034180046a2022360200200341fc036a202a3602002003202f3703e803200341f0036a202e370300200320063703d8032003201d3b018404200320233602f803200320193703e0030240202f202e844200520d002022450d1a0b20034190036a200341d8036a10b9040c310b200141046a28020021292002411a6a2901002119200241196a2d0000212a200241186a2d0000212b200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021142002410d6a2d0000211a2002410c6a2d0000211b2002410a6a2f0100211c200241096a2d0000211d200241046a2d0000211e41022128200241026a2f0100211f0240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f01002120200241086a2d00002102410021270c010b4101212741002120410021020b200320193703c8042003202a3a00c7042003202b3a00c604200320213b01c404200320223a00c304200320233a00c204200320243b01c004200320253a00bf04200320263a00be04200320143b01bc042003201a3a00bb042003201b3a00ba042003201c3b01b8042003201d3a00b7042003201e3a00b2042003201f3b01b0042003202041ffff0371410874202841ff01717220024118747222023600b30402402027450d00410f212841aab0c000212a024020020e050008093e3f000b20032800b704212a20032800bb0421284101212141012123410121220c3f0b200341b8026a41186a200341b0046a41186a29030037030041102128200341b8026a41106a200341b0046a41106a290300370300200341b8026a41086a200341b0046a41086a290300370300200320032903b0043703b802200341d8036a200341b8026a10f20320032802f8032202450d2f200341ee016a20032d0086043a0000200341f3016a20032d008b043a0000200341e4016a20032902fc03370200200341c0016a410c6a200341d8036a410c6a3502003e0200200341c0016a41186a200341d8036a41186a222b290300370300200341c0016a412f6a200341d8036a412f6a280000360000200341c0016a41c4006a200341d8036a41c4006a290200370200200341c0016a41346a200341d8036a41346a290200370200200341c0016a413c6a200341d8036a413c6a290200370200200320032902dc033702c401200320032903e8033703d001200320032802d8033602c001200320023602e0012003200341d8036a412c6a2f01003b01ec012003200341a4046a28020036028c02200341c0016a412c6a222a10ae04200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f80220281023200341e0006a41086a22212002290300370300200320032903f802370360200241e7acc500ad4280808080a001841003222841086a290000370300200320282900003703f80220281023200341b8036a41086a22282002290300370300200320032903f8023703b803200341d8036a202a10ac0141c00010212202450d1320022003290360370000200241086a2021290300370000200220032903b803370010200241186a2028290300370000200220032903d803370020200241286a200341d8036a41086a290300370000200241306a200341d8036a41106a290300370000200241386a202b290300370000200341f0006a200241c00010a501024020032d007422284102470d002003202a36028c05200341d8036a10ad0420034190036a20032802d803222820032802e003108a01024020032802dc03450d00202810230b024020032d0090030d00200341d8036a10ad0420032802d8032128200320032802e0033602b404200320283602b004202a200341b0046a10f50120032802dc03450d2f202810230c2f0b200341d0036a200341a9036a290000370300200341c8036a200341a1036a290000370300200341b8036a41086a20034199036a29000037030020032003290091033703b803200341f8026a200341b8036a10a401200341d8036a20032802f8022228200328028003222a10a501024020032d00dc034102470d00200341003602a0022003420137039802200341d8026a41146a410f360200200341e4026a410c3602002003410736028405200341c6acc500360280052003410c3602dc022003410a360264200341e7acc5003602602003200341f8026a3602e8022003200341e0006a3602e002200320034180056a3602d802200320034198026a3602f804200341b0046a41146a4103360200200342033702b404200341e4ddc0003602b0042003200341d8026a3602c004200341f8046a41b8a3c500200341b0046a102e1a20033502a002422086200335029802841008200328028c05212a200341b0046a10ad0420032802b0042128200320032802b8043602dc02200320283602d802202a200341d8026a10f501024020032802b404450d00202810230b0240200328029c02450d0020032802980210230b20032802fc02450d2f20032802f80210230c2f0b20032802d803212b200341b0046a200341d8036a41047241c20010dc041a20034198026a41086a200341d2046a410020032d00d1044101461b3602002003202b3602980220032003418c056a36029c02200341003602e002200342013703d80220034198026a200341d8026a10af0120034198026a410472200341d8026a10aa0120032802dc02212b202aad4220862028ad8420033502e00242208620032802d8022228ad8410020240202b450d00202810230b024020032802fc02450d0020032802f80210230b200328028c05212a200341d8036a10ad0420032802d8032128200320032802e0033602b404200320283602b004202a200341b0046a10f501024020032802dc03450d00202810230b200341d8026a41086a200341b8036a41086a290300370300200341d8026a41106a200341b8036a41106a290300370300200341d8026a41186a200341b8036a41186a290300370300200320032903b8033703d8024101212a410021280c2f0b200341b0046a41186a2003418d016a290000370300200341b0046a41106a20034185016a290000370300200341b0046a41086a200341fd006a290000370300200341d8026a41086a2003419e016a290100370300200341d8026a41106a200341a6016a290100370300200341d8026a41186a200341ae016a290100370300200320032900753703b004200320034196016a2901003703d80220034195016a2d0000212a0c2e0b2001410c6a280200211b200141086a280200211a200141046a28020021142002411a6a2901002119200241196a2d0000211c200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002127200241116a2d00002129200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241046a2d0000211641022128200241026a2f010021070240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874202841ff01717220024118747221020240202b450d00410f212841aab0c000212a024002400240024020020e05000102032f000b2025410874202672202441187472212a202241087420237220214118747221280c2e0b410e212841aabac600212a0c2d0b411321284197b0c000212a0c2c0b411121284186b0c000212a0c2b0b200320193703d0022003201c3a00cf022003201d3a00ce022003201e3b01cc022003201f3a00cb02200320203a00ca02200320273b01c802200320293a00c702200320213a00c602200320223b01c402200320233a00c302200320243a00c202200320253b01c002200320263a00bf02200320023600bb02200320163a00ba02200320073b01b802200341d8036a200341b8026a10f203024020032802f80322020d004110212841bd95c600212a0c2b0b200341f0006a41246a20032802fc03222b3602002003419e016a20032d0086043a0000200341a3016a20032d008b043a0000200341f0006a410c6a200341d8036a410c6a3502003e0200200341f0006a41186a200341d8036a41186a290300370300200341f0006a41286a200341d8036a41286a280200360200200341f0006a412f6a200341d8036a412f6a280000360000200341f0006a41c4006a200341d8036a41c4006a290200370200200341f0006a41346a200341d8036a41346a290200370200200341f0006a413c6a200341d8036a413c6a290200370200200320032902dc03370274200320032903e80337038001200320032802d80336027020032002360290012003200341d8036a412c6a2f01003b019c012003200341a4046a2802003602bc01201b0d1e41f095c600212a41172128410121020c290b2002411a6a2901002119200241196a2d0000212a200241186a2d0000212b200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021142002410d6a2d0000211a2002410c6a2d0000211b2002410a6a2f0100211c200241096a2d0000211d200241046a2d0000211e41022128200241026a2f0100211f0240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f01002120200241086a2d00002102410021270c010b4101212741002120410021020b200320193703f0032003202a3a00ef032003202b3a00ee03200320213b01ec03200320223a00eb03200320233a00ea03200320243b01e803200320253a00e703200320263a00e603200320143b01e4032003201a3a00e3032003201b3a00e2032003201c3b01e0032003201d3a00df032003201e3a00da032003201f3b01d8032003202041ffff0371410874202841ff01717220024118747222023600db0302402027450d00410f212841aab0c000212a20020e050205063b3c020b200341f0006a41186a200341d8036a41186a29030037030041102128200341f0006a41106a200341d8036a41106a290300370300200341f0006a41086a200341d8036a41086a290300370300200320032903d803370370200341d8036a200341f0006a10f20320032802f8032202450d2d200341ee016a20032d0086043a0000200341f3016a20032d008b043a0000200341e4016a222820032902fc03370200200341c0016a410c6a200341d8036a410c6a3502003e0200200341c0016a41186a200341d8036a41186a290300370300200341c0016a412f6a200341d8036a412f6a280000360000200341c0016a41c4006a200341d8036a41c4006a290200370200200341c0016a41346a200341d8036a41346a290200370200200341c0016a413c6a200341d8036a413c6a290200370200200320032902dc033702c401200320032903e8033703d001200320032802d8033602c001200320023602e0012003200341d8036a412c6a2f01003b01ec012003200341a4046a28020036028c02200341c0016a412c6a220210ac04200210ae042028280200450d3420032802e00110234100212a0c370b20012d000121292002411a6a2901002119200241196a2d0000212a200241186a2d0000212b200241166a2f01002121200241156a2d00002122200241146a2d00002123200241126a2f01002124200241116a2d00002125200241106a2d000021262002410e6a2f010021142002410d6a2d0000211a2002410c6a2d0000211b2002410a6a2f0100211c200241096a2d0000211d200241046a2d0000211e41022128200241026a2f0100211f0240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f01002120200241086a2d00002102410021270c010b4101212741002120410021020b200320193703f0032003202a3a00ef032003202b3a00ee03200320213b01ec03200320223a00eb03200320233a00ea03200320243b01e803200320253a00e703200320263a00e603200320143b01e4032003201a3a00e3032003201b3a00e2032003201c3b01e0032003201d3a00df032003201e3a00da032003201f3b01d8032003202041ffff0371410874202841ff01717220024118747222023600db032027450d01410f212841aab0c000212a20020e05000304393a000b20032800df03212a20032800e30321284101212141012123410121220c3a0b200341f0006a41186a200341d8036a41186a29030037030041102128200341f0006a41106a200341d8036a41106a290300370300200341f0006a41086a200341d8036a41086a290300370300200320032903d803370370200341d8036a200341f0006a10f20320032802f8032202450d2a200341ee016a20032d0086043a0000200341f3016a20032d008b043a0000200341e4016a222820032902fc03370200200341c0016a410c6a200341d8036a410c6a3502003e0200200341c0016a41186a200341d8036a41186a290300370300200341c0016a412f6a200341d8036a412f6a280000360000200341c0016a41c4006a200341d8036a41c4006a290200370200200341c0016a41346a200341d8036a41346a290200370200200341c0016a413c6a200341d8036a413c6a290200370200200320032902dc033702c401200320032903e8033703d001200320032802d8033602c001200320023602e0012003200341d8036a412c6a2f01003b01ec012003200341a4046a28020036028c02200341c0016a412c6a202910c8042028280200450d3120032802e00110234100212a0c340b2001411d6a29000021062001411c6a2d000021072001411b6a2d00002108200141196a2f00002109200141186a2d0000210a200141176a2d0000210b200141156a2f0000210c200141146a2d0000210d200141136a2d0000210e200141116a2f0000210f200141106a2d000021102001410f6a2d000021112001410d6a2f000021122001410c6a2d00002113200141086a2802002114200141076a2d00002115200141056a2f00002116200141046a2d000021172002411a6a2901002119200241196a2d0000211a200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241046a2d0000212741022128200241026a2f010021290240024020022d00000d0020022d00014101470d00200241056a2d00002128200241066a2f0100212a200241086a2d000021024100212b0c010b4101212b4100212a410021020b202a41ffff0371410874202841ff0171722002411874722102202b450d02410f212841aab0c000212a024020020e050001023738000b2025410874202672202441187472212a202241087420237220214118747221284101212141012123410121220c380b410e212841aabac600212a4101212141012123410121220c370b411321284197b0c000212a4101212141012123410121220c360b200320193703b0022003201a3a00af022003201b3a00ae022003201c3b01ac022003201d3a00ab022003201e3a00aa022003201f3b01a802200320203a00a702200320213a00a602200320223b01a402200320233a00a302200320243a00a202200320253b01a002200320263a009f022003200236009b02200320273a009a02200320293b019802200341d8036a20034198026a10b804410121020240024020032d00d8034101460d00410b212841b295c600212a0c010b200341ba036a20032d00db033a0000200341c0016a41086a200341ec036a290200370300200341cd016a200341f1036a290000370000200320032f00d9033b01b8032003200341e4036a2902003703c001200341d8036a41086a28020021284100210220032802dc03212a0b200341d8026a41026a222b200341b8036a41026a2d00003a000020034190036a41086a2221200341c0016a41086a29030037030020034190036a41106a200341c0016a41106a290300370300200320032f01b8033b01d802200320032903c0013703900320020d34200341cb026a2021290300370000200341d0026a2003419d036a290000370000200320032f01d8023b01b802200320283600bf022003202a3600bb0220032003290390033700c3022003202b2d00003a00ba020240201741ff01714101460d0020164180fe037141087621280c160b200341d8036a201441067610bc0220032802d803212a0240024020032802e0032014413f7122024b0d00410021020c010b202a20024105746a22022f0000221641087621282002290018210620022d0017210720022d0016210820022f0014210920022d0013210a20022d0012210b20022f0010210c20022d000f210d20022d000e210e20022f000c210f20022d000b211020022d000a211120022f0008211220022d000721132002280003211420022d00022115410121020b024020032802dc03450d00202a10230b20020d1541aabac600212a410e21284101212141012123410121220c350b41012121024020022d000120022d000072450d004186b0c000212a4111212841012123410121220c350b200141046a280200212b200341d8036a41186a4200370300200341d8036a41106a22224200370300200341d8036a41086a22284200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a102320282002290300370300200320032903f8022219370360200320193703d80320024198f7c500ad4280808080e001841003222a41086a2900003703002003202a2900003703f802202a1023202220032903f8022219370300200341b0046a41086a2028290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b0042003202b3602d803200341b0046aad4280808080800484200341d8036aad4280808080c0008410024100212a0c300b20022d000120022d0000720d12200341d8036a41186a4200370300200341d8036a41106a222b4200370300200341d8036a41086a22284200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a102320282002290300370300200320032903f8022219370360200320193703d803200241e8fbc500ad42808080808001841003222a41086a2900003703002003202a2900003703f802202a1023202b20032903f8022219370300200341b0046a41086a2028290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b00441012121410110212202450d09200241023a0000200341b0046aad42808080808004842002ad428080808010841002200210234100212a0c2f0b20022d000120022d0000720d11200341d8036a41186a4200370300200341d8036a41106a222b4200370300200341d8036a41086a22284200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a102320282002290300370300200320032903f8022219370360200320193703d803200241e8fbc500ad42808080808001841003222a41086a2900003703002003202a2900003703f802202a1023202b20032903f8022219370300200341b0046a41086a2028290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b00441012121410110212202450d09200241013a0000200341b0046aad42808080808004842002ad428080808010841002200210234100212a0c2e0b200141086a280200212b200141046a2802002122024020022d000120022d000072450d004186b0c000212a411121284100212341012121202b450d2020221023410121220c320b2001410c6a2802002128200341d8036a41186a4200370300200341d8036a41106a22234200370300200341d8036a41086a222a4200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222141086a290000370300200320212900003703f80220211023202a2002290300370300200320032903f8022219370360200320193703d803200241e4f7c500ad4280808080d001841003222141086a290000370300200320212900003703f80220211023202320032903f8022219370300200341b0046a41086a202a290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b004200341003602e003200342013703d8032028200341d8036a105c02402028450d00202841057421282022210203402002200341d8036a1071200241206a2102202841606a22280d000b0b20032802dc032102200341b0046aad428080808080048420033502e00342208620032802d8032228ad84100202402002450d00202810230b41012121202b450d0f202210230c0f0b200341d8036a41186a200141196a29000037030041112128200341d8036a41106a200141116a290000370300200341d8036a41086a200141096a290000370300200320012900013703d8034186b0c000212a20022d000120022d0000720d2f200342f3e885db96cddbb3203703b004200341c0016a41186a4200370300200341c0016a41106a22214200370300200341c0016a41086a22024200370300200342003703c001200341f8026a41086a222a41c4fbc400ad4280808080e000841003222b41086a2900003703002003202b2900003703f802202b10232002202a290300370300200320032903f8023703c001202a41f9bcc000ad4280808080e000841003222b41086a2900003703002003202b2900003703f802202b1023202120032903f8022219370300200341f0006a41086a22212002290300370300200341f0006a41106a2019370300200341f0006a41186a202a290300370300200320193703b803200320032903c001370370200341d8006a200341f0006a4120108f014100212a2003200328025c410020032802581b36029003200341c0016a200341d8036a10df0220032802c401212220032802c001212b20032802c8012123200341d4016a200341b0046a3602002003202b20234105746a3602cc012003202b3602c801200320223602c4012003202b3602c001200320034190036a3602d001200341f0006a200341c0016a10870120022021280200360200200320032903703703c001200341d8036a200341c0016a10e002200341d8036a10dd024101212141012123410121220c300b20022d000120022d0000720d0e200341d8036a41186a4200370300200341d8036a41106a222b4200370300200341d8036a41086a22284200370300200342003703d803200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a102320282002290300370300200320032903f8022219370360200320193703d803200241e8fbc500ad42808080808001841003222a41086a2900003703002003202a2900003703f802202a1023202b20032903f8022219370300200341b0046a41086a2028290300370300200341b0046a41106a2019370300200341b0046a41186a2002290300370300200320193703b803200320032903d8033703b00441012121410110212202450d07200241033a0000200341b0046aad42808080808004842002ad428080808010841002200210234100212a0c2b0b200141106a28020021282001410c6a280200211d200141086a280200211a200141046a280200211e02400240024020022d0000222a4101470d00200241046a2d00004101460d02200241096a21020c010b200241016a21020b202a4104460d00202a20022d00007241ff0171450d0041b696c600212a410a21284100212241012121201d450d0c201a10230c0c0b201a2028410041202028676b109703200341f8026a41086a220241c6acc500ad4280808080f000841003222a41086a2900003703002003202a2900003703f802202a1023200341e0006a41086a222b2002290300370300200320032903f8023703602002419cb2c500ad42808080808002841003222a41086a2900003703002003202a2900003703f802202a1023200341b8036a41086a222a2002290300370300200320032903f8023703b8032003201e360270200341c0016a41186a2221200341f0006aad22064280808080c000841001220241186a290000370300200341c0016a41106a2222200241106a290000370300200341c0016a41086a2223200241086a290000370300200320022900003703c00120021023200341d8036a41186a22242021290300370300200341d8036a41106a22212022290300370300200341d8036a41086a22222023290300370300200320032903c0013703d80341c00010212202450d0720022003290360370000200241086a202b290300370000200220032903b803370010200241186a202a290300370000200220032903d803370020200241286a2022290300370000200241306a2021290300370000200241386a2024290300370000200341d8036a200241c00010a80320032902dc03211920032802d803212a2002102320194200202a1b2119202a4108202a1b211b2028410274221c450d0941002128417f21224100212b4100212a03400240201a20286a2802002221202a4f0d00418796c600212a410f21280c0c0b0240202b20216a22022019422088a72223490d00419696c600212a412021280c0c0b201b200241d8006c6a220228022c212620022802202114200241306a2802002124200241246a28020021252002200241d8006a202220236a20216b41d8006c10dd041a02402025450d00201410230b02402024450d00202610230b202a41016a212a20194280808080707c2119202241016a2122202b417f6a212b201c202841046a2228470d000c0a0b0b41c00041011030000b411841081030000b202541081030000b41c00041011030000b410141011030000b410141011030000b410141011030000b41c00041011030000b200341b0046a41186a2003419c046a290200370300200341b0046a41106a20034194046a290200370300200341b0046a41086a2003418c046a29020037030020032003290284043703b004200342f3e885db96cddbb3203703d802200341c0016a41186a4200370300200341c0016a41106a222b4200370300200341c0016a41086a22024200370300200342003703c001200341f8026a41086a222841c4fbc400ad4280808080e000841003222a41086a2900003703002003202a2900003703f802202a102320022028290300370300200320032903f8023703c001202841f9bcc000ad4280808080e000841003222a41086a2900003703002003202a2900003703f802202a1023202b20032903f8022219370300200341f0006a41086a222a2002290300370300200341f0006a41106a2019370300200341f0006a41186a2028290300370300200320193703b803200320032903c001370370200341386a200341f0006a4120108f012003200328023c410020032802381b3602b803200341c0016a200341b0046a10df0220032802c401212b20032802c001212820032802c8012121200341d4016a200341d8026a3602002003202820214105746a3602cc01200320283602c8012003202b3602c401200320283602c0012003200341b8036a3602d001200341f0006a200341c0016a1087012002202a280200360200200320032903703703c001200341b0046a200341c0016a10e002200341b0046a10dd020c170b0240201d450d00201a10230b200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f80220281023200341e0006a41086a222a2002290300370300200320032903f8023703602002419cb2c500ad42808080808002841003222841086a290000370300200320282900003703f80220281023200341b8036a41086a22282002290300370300200320032903f8023703b8032003201e360270200341c0016a41186a222b20064280808080c000841001220241186a290000370300200341c0016a41106a2221200241106a290000370300200341c0016a41086a2222200241086a290000370300200320022900003703c00120021023200341d8036a41186a2223202b290300370300200341d8036a41106a222b2021290300370300200341d8036a41086a22212022290300370300200320032903c0013703d8030240024041c00010212202450d0020022003290360370000200241086a202a290300370000200220032903b803370010200241186a2028290300370000200220032903d803370020200241286a2021290300370000200241306a202b290300370000200241386a2023290300370000200341d8036a201b2019422088a7222810be042002ad428080808080088420033502e00342208620032802d803222aad841002024020032802dc03450d00202a10230b2002102302402028450d00202841d8006c2128201b41306a210203400240200241746a280200450d00200241706a28020010230b02402002280200450d002002417c6a28020010230b200241d8006a2102202841a87f6a22280d000b0b410121212019a7450d01201b10230c010b41c00041011030000b41002122410121230c070b0240201d450d00201a10230b02402019422088a7222b450d00201b41306a2102202b41d8006c212b03400240200241746a280200450d00200241706a28020010230b02402002280200450d002002417c6a28020010230b200241d8006a2102202b41a87f6a222b0d000b0b41002122410121212019a7450d00201b1023410121230c230b410121230c220b410021230c030b4186b0c000212a411121284101212141012123410121220c200b200320063703f002200320073a00ef02200320083a00ee02200320093b01ec022003200a3a00eb022003200b3a00ea022003200c3b01e8022003200d3a00e7022003200e3a00e6022003200f3b01e402200320103a00e302200320113a00e202200320123b01e002200320133a00df02200320143600db02200320153a00da0220032028410874201641ff0171723b01d802200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f80220281023200341e0006a41086a222a2002290300370300200320032903f802370360200241f7acc500ad4280808080e000841003222841086a290000370300200320282900003703f80220281023200341b8036a41086a22282002290300370300200320032903f8023703b803200341d8036a200341d8026a10ac0102400240024041c00010212202450d0020022003290360370000200241086a202a290300370000200220032903b803370010200241186a2028290300370000200220032903d803370020200241286a200341d8036a41086a290300370000200241306a200341e8036a290300370000200241386a200341d8036a41186a290300370000200341d0006a200241c00041014100410010b8012003280250212820021023024020284101470d0041d494c600212a411921284101212141012123410121220c230b200341d8026a200341b8026a412010de04450d1a20034198026a200341d8026a10c904200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f8022028102320034190036a41086a222a2002290300370300200320032903f80237039003200241f7acc500ad4280808080e000841003222841086a290000370300200320282900003703f80220281023200341c0016a41086a22282002290300370300200320032903f8023703c001200341b0046a200341b8026a10ac0141c00010212202450d012002200329039003370000200241086a202a290300370000200220032903c001370010200241186a2028290300370000200220032903b004370020200241286a200341b0046a41086a290300370000200241306a200341b0046a41106a2222290300370000200241386a200341b0046a41186a2223290300370000200341d8036a200241c00010ad03024020032802f803222a450d002002ad428080808080088410050b20034190036a41186a2224200341d8036a41186a222529030037030020034190036a41106a2226200341d8036a41106a221429030037030020034190036a41086a222b200341d8036a41086a2228290300370300200341c0016a41086a222120034184046a221e290200370300200341c0016a41106a221a2003418c046a221f290200370300200341c0016a41186a221b20034194046a2220290200370300200341c0016a41206a221c2003419c046a2227290200370300200341c0016a41286a221d200341a4046a2229280200360200200320032903d80337039003200320032902fc033703c001200341b0046a41086a2216202b2903003703002022202629030037030020232024290300370300202820212903003703002014201a2903003703002025201b290300370300200341d8036a41206a2223201c290300370300200341d8036a41286a201d28020036020020032003290390033703b004200320032903c0013703d8030240202a450d00200341b8036a41186a2224200341b0046a41186a2225290300370300200341b8036a41106a2226200341b0046a41106a2214290300370300200341b8036a41086a221a2016290300370300200341f0006a41086a221b2028290300370300200341f0006a41106a221c200341d8036a41106a2222290300370300200341f0006a41186a221d200341d8036a41186a2216290300370300200341f0006a41206a22072023290300370300200341f0006a41286a2223200341d8036a41286a2208280200360200200320032903b0043703b803200320032903d8033703702002102320162024290300370300202220262903003703002028201a290300370300200341fc036a2003290370370200201e201b290300370200201f201c2903003702002020201d2903003702002027200729030037020020292023280200360200200320032903b8033703d8032003202a3602f803200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f80220281023202b2002290300370300200320032903f80237039003200241f7acc500ad4280808080e000841003222841086a290000370300200320282900003703f8022028102320212002290300370300200320032903f8023703c001200341b0046a200341d8026a10ac0141c0001021222a450d03202a200329039003370000202a41086a20034190036a41086a290300370000202a20032903c001370010202a41186a200341c0016a41086a290300370000202a20032903b004370020202a41286a200341b0046a41086a290300370000202a41306a2014290300370000202a41386a2025290300370000200341003602c801200342013703c00120034184046a200341c0016a10712003200341d8036a3602b004200341b0046a200341c0016a10c301200320223602b004200341b0046a200341c0016a10c30120032802f803210220082802002228200341c0016a105c02402028450d002002202841186c6a21280340200320023602b004200341b0046a200341c0016a10c301200241106a200341c0016a10af012028200241186a2202470d000b0b20032802c4012102202aad428080808080088420033502c80142208620032802c0012228ad84100202402002450d00202810230b202a102320032802fc03450d1b20032802f80310234100212a0c1e0b200210234100212a0c1d0b41c00041011030000b41c00041011030000b41c00041011030000b200341003a00b803200341103602a00320032014201b41246c6a36029c0320032014360298032003201a3602940320032014360290032003200341b8036a3602a403200341d8036a20034190036a10bb020240024020032d00d8034101460d00200328029c03212a2003280298032102024003400240202a2002470d002002212b0c020b20022d00002128200241246a222b210220284102470d000b0b2003202b36029803410021234101212202402003280294030d00410021020c020b2003280290031023410021020c010b412010212222450d03202220032900d903370000202241186a200341f1036a290000370000202241106a200341e9036a290000370000202241086a200341e1036a290000370000200341b0046a41106a20034190036a41106a290300370300200341b0046a41086a20034190036a41086a29030037030020032003290390033703b004200341d8036a200341b0046a10bb020240024020032d00d8030d0041012102410121230c010b200341d8036a4101722128410221214120212b41012102410121230340200341c0016a41186a2224202841186a290000370300200341c0016a41106a2225202841106a290000370300200341c0016a41086a2226202841086a290000370300200320282900003703c001024020022023470d00200241016a222a2002490d152021202a2021202a4b1b222341ffffff3f712023470d152023410574222a4100480d150240024020020d00202a102121220c010b2022202b202a102521220b2022450d0c0b2022202b6a222a20032903c001370000202a41186a2024290300370000202a41106a2025290300370000202a41086a2026290300370000202141026a2121202b41206a212b200241016a2102200341d8036a200341b0046a10bb0220032d00d8030d000b0b20032802bc04212b20032802b8042128024003400240202b2028470d00202b21210c020b20282d0000212a202841246a22212128202a4102470d000b0b200320213602b80420032802b404450d0020032802b00410230b024020032d00b803450d002023450d0a202210230c0a0b2022450d09200341d8036a41186a22244200370300200341d8036a41106a22214200370300200341d8036a41086a222b4200370300200342003703d803200341f8026a41086a222841c6acc500ad4280808080f0008422061003222a41086a2900003703002003202a2900003703f802202a1023202b2028290300370300200320032903f8022219370360200320193703d803202841b0fac500ad4280808080a001841003222a41086a2900003703002003202a2900003703f802202a1023202120032903f8022219370300200341b0046a41086a202b290300370300200341b0046a41106a2019370300200341b0046a41186a2028290300370300200320193703b803200320032903d8033703b004200341c8006a200341b0046a4120108f01200320023602a0022003202336029c022003202236029802200341003a00a8022003200328024c410020032802481b3602a402200341f0006a412c6a222210ac04202820061003220241086a290000370300200320022900003703f80220021023200341e0006a41086a22232028290300370300200320032903f802370360202841cdacc500ad4280808080a001841003220241086a290000370300200320022900003703f80220021023200341b8036a41086a22022028290300370300200320032903f8023703b803200341d8036a202210ac0141c0001021222a450d03202a2003290360370000202a41086a2023290300370000202a20032903b803370010202a41186a2002290300370000202a20032903d803370020202a41286a202b290300370000202a41306a2021290300370000202a41386a2024290300370000200341c0016a202a41c00010a8010240024020032d00d0014102460d00200341b0046a41086a200341dd016a290000370300200341b0046a41106a200341e5016a290000370300200341b0046a41186a200341ed016a290000370300200341d8026a41086a200341fe016a290100370300200341d8026a41106a20034186026a290100370300200341d8026a41186a2003418e026a2901003703002003200341d5016a2900003703b0042003200341f6016a2901003703d802200341f5016a2d0000210220032d00d401212820032802c401450d0120032802c00110230c010b2003202236028c03200341d8036a10af0420034190036a20032802d803220220032802e003108a01024020032802dc03450d00200210230b0240024020032d0090030d00200341d8036a10af0420032802d8032102200320032802e0033602b404200320023602b0042022200341b0046a10f501024020032802dc03450d00200210230b410021020c010b200341b8036a41186a200341a9036a290000370300200341b8036a41106a200341a1036a290000370300200341b8036a41086a20034199036a29000037030020032003290091033703b803200341e0006a200341b8036a10a701200341d8036a2003280260222b2003280268222110a801024020032d00e8034102470d002003410036028003200342013703f802200341d8026a41146a410f360200200341e4026a410c360200200341073602fc04200341c6acc5003602f8042003410c3602dc022003410a36028405200341cdacc500360280052003200341e0006a3602e802200320034180056a3602e0022003200341f8046a3602d8022003200341f8026a36028c05200341b0046a41146a4103360200200342033702b404200341e4ddc0003602b0042003200341d8026a3602c0042003418c056a41b8a3c500200341b0046a102e1a20033502800342208620033502f802841008200328028c032128200341b0046a10af0420032802b0042102200320032802b8043602dc02200320023602d8022028200341d8026a10f501024020032802b404450d00200210230b024020032802fc02450d0020032802f80210230b02402003280264450d00200328026010230b410021020c010b200341b0046a200341d8036a41146a41c20010dc041a20032d00d1042102200341d8026a41106a200341d8036a41106a280200360200200341d8026a41086a200341d8036a41086a2903002219370300200341d8026a41186a200341d2046a410020024101461b360200200320032903d80322063703d80220032003418c036a3602ec022003410036028003200342013703f8022019a72202200341f8026a105c2006a7212202402002450d00200241057421282022210203402002200341f8026a1071200241206a2102202841606a22280d000b0b20032802e40221230240024020032802fc02222820032802800322026b4104490d0020032802f80221280c010b200241046a22242002490d14202841017422022024200220244b1b22024100480d140240024020280d002002102121280c010b20032802f80220282002102521280b2028450d07200320023602fc02200320283602f80220032802800321020b2003200241046a36028003202820026a202336000020032d00e80221230240024020032802fc022003280280032202460d0020032802f80221280c010b200241016a22282002490d14200241017422242028202420284b1b22244100480d140240024020020d002024102121280c010b20032802f80220022024102521280b2028450d08200320243602fc02200320283602f80220032802800321020b2003200241016a36028003202820026a20233a0000200341d8026a41146a200341f8026a10aa0120032802fc0221022021ad422086202bad8420033502800342208620032802f8022228ad84100202402002450d00202810230b024020032802dc02450d00202210230b02402003280264450d00200328026010230b200328028c032128200341d8036a10af0420032802d8032102200320032802e0033602b404200320023602b0042028200341b0046a10f501024020032802dc03450d00200210230b200341d8026a41086a200341b8036a41086a290300370300200341d8026a41106a200341b8036a41106a290300370300200341d8026a41186a200341b8036a41186a290300370300200320032903b8033703d802410121020b410021280b200341fd036a20023a0000200341fe036a20032903d802370100200341e5036a200341b0046a41086a290300370000200341ed036a200341b0046a41106a290300370000200341f5036a200341b0046a41186a29030037000020034186046a200341d8026a41086a2903003701002003418e046a200341d8026a41106a29030037010020034196046a200341d8026a41186a290300370100200320283a00dc03200320032903b0043700dd03200320034198026a3602d803200341003602c801200342013703c001200328029802210220032802a0022228200341c0016a105c02402028450d002028410574212803402002200341c0016a1071200241206a2102202841606a22280d000b0b20032802a402212b0240024020032802c401222820032802c80122026b4104490d0020032802c00121280c010b200241046a22212002490d12202841017422022021200220214b1b22024100480d120240024020280d002002102121280c010b20032802c00120282002102521280b2028450d07200320023602c401200320283602c00120032802c80121020b2003200241046a3602c801202820026a202b36000020032d00a802212b0240024020032802c40120032802c8012202460d0020032802c00121280c010b200241016a22282002490d12200241017422212028202120284b1b22214100480d120240024020020d002021102121280c010b20032802c00120022021102521280b2028450d08200320213602c401200320283602c00120032802c80121020b2003200241016a3602c801202820026a202b3a0000200341d8036a410472200341c0016a10a90120032802c4012102202aad428080808080088420033502c80142208620032802c0012228ad84100202402002450d00202810230b202a10230240200328029c02450d0020032802980210230b0240200328029401450d0020032802900110230b41002121410121230b410121220b4100212a0c1c0b412041011030000b41c00041011030000b200241011030000b202441011030000b200241011030000b202141011030000b202a41011030000b41aabac600212a410e212841002102200328029401212b0b0240202b450d0020032802900110230b20020d004101212341002121410121220c130b4101212341002121201a450d00201410230b410121220c110b4100212a410021280b200341fd036a202a3a0000200341fe036a20032903d802370100200341e5036a200341b0046a41086a290300370000200341ed036a200341b0046a41106a290300370000200341f5036a200341b0046a41186a29030037000020034186046a200341d8026a41086a2903003701002003418e046a200341d8026a41106a29030037010020034196046a200341d8026a41186a290300370100200320283a00dc03200320293602d803200320032903b0043700dd032003410036027820034201370370200341d8036a200341f0006a10af01200341d8036a410472200341f0006a10a901200328027421282002ad428080808080088420033502784220862003280270222aad84100202402028450d00202a10230b2002102320032802e401450d0720032802e00110234100212a0c0a0b41bd95c600212a4101212141012123410121220c0e0b20032802fc03450d0520032802f80310234100212a0c080b102a000b0240024020020d002022102121020c010b20032802e001200241186c2022102521020b2002450d02200320213602e401200320023602e00120032802e80121020b20032802e001200241186c6a22022019200620281b37030820022005200420281b3703002002202b4100202a1b360210200320032802e80141016a3602e801200341f0006a200341c0016a10b90420032802e401212b0b202b450d0120032802e00110234100212a0c040b202241081030000b4100212a0c020b41bd95c600212a411021284101212141012123410121220c060b200320063703d801200320073a00d701200320083a00d601200320093b01d4012003200a3a00d3012003200b3a00d2012003200c3b01d0012003200d3a00cf012003200e3a00ce012003200f3b01cc01200320103a00cb01200320113a00ca01200320123b01c801200320133a00c701200320143600c301200320153a00c20120032028410874201641ff0171723b01c001200341f8026a41086a220241c6acc500ad4280808080f000841003222841086a290000370300200320282900003703f80220281023200341e0006a41086a222a2002290300370300200320032903f802370360200241f7acc500ad4280808080e000841003222841086a290000370300200320282900003703f80220281023200341b8036a41086a22282002290300370300200320032903f8023703b803200341d8036a200341c0016a10ac0141c00010212202450d0220022003290360370000200241086a202a290300370000200220032903b803370010200241186a2028290300370000200220032903d803370020200241286a200341d8036a41086a290300370000200241306a200341e8036a290300370000200241386a200341d8036a41186a290300370000200341106a200241c00041014100410010b8012003280210212820021023024020284101470d0041d494c600212a4119212841012123410121220c060b024020054280c8afa0255441002004501b450d0041ed94c600212a4131212841012123410121220c060b200341f0006a200341c0016a10c904200341f0006a201810c8042003200341f0006a109402200341086a2903002119200329030021064100212a20034180046a410036020020034186046a20032d00723a000020034187046a20032800733600002003418b046a20032d00773a00002003419c046a2003290388013702002003418c046a200329037837020020034194046a200329038001370200200341f0036a201920042006200554201920045420192004511b22021b2219370300200320032f01703b018404200342083703f803200320193703e00320032006200520021b22193703d803200320193703e803200341c0016a200341d8036a10b904200341fc036a280200450d0020032802f80310230b410121210b41012123410121220c030b41c00041011030000b411121284186b0c000212a0b4101212141012123410121220b0240024020012d0000222b417f6a2202410f4b0d0002400240024020020e1004030303040003030403030301040302040b2021450d03200141086a280200450d03200141046a28020010230c030b2023450d02200141086a280200450d02200141046a28020010230c020b2022450d012001410c6a280200450d01200141086a28020010230c010b0240202b410f4b0d004101202b7441bebf03710d010240202b4106460d00202b410d470d01200141086a280200450d02200141046a28020010230c020b200141086a280200450d01200141046a28020010230c010b2001410c6a280200450d00200141086a28020010230b200020283602042000202a36020020034190056a24000b8b0501087f230041a0016b22022400200241086a220341c6acc500ad4280808080f000841003220441086a290000370300200220042900003703002004102320024180016a41086a220520032903003703002002200229030037038001200341f7acc500ad4280808080e000841003220441086a2900003703002002200429000037030020041023200241d0006a41086a22062003290300370300200220022903003703502002200110ac01024041c00010212204450d0020042002290380013700002004200229035037001020042002290000370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241106a2201290000370000200441386a200241186a22072900003700002002200441c00010ad032005200329030037030020024180016a41106a2205200129030037030020024180016a41186a2201200729030037030020062002412c6a290200370300200241d0006a41106a2206200241346a290200370300200241d0006a41186a22072002413c6a290200370300200241f0006a2208200241c4006a290200370300200241d0006a41286a2209200241cc006a280200360200200220022903003703800120022002290224370350024020022802202203450d00200020022903800137030020002002290350370224200041186a2001290300370300200041106a2005290300370300200041086a20024180016a41086a2903003703002000412c6a200241d0006a41086a290300370200200041346a20062903003702002000413c6a2007290300370200200041c4006a2008290300370200200041cc006a20092802003602000b2000200336022020041023200241a0016a24000f0b41c00041011030000b4d01017f230041206b22002400200041146a410136020020004201370204200041d09dc6003602002000410436021c200041849ec6003602182000200041186a360210200041b09ec6001038000b3400200041be99c60036020420004100360200200041146a4102360200200041106a41bc9dc500360200200041086a42093702000b130020004101360204200041dc99c5003602000b130020004101360204200041b096c5003602000b3400200041f0dfc40036020420004100360200200041146a4101360200200041106a418c95c500360200200041086a42133702000b130020004104360204200041a88ec5003602000b3400200041e3e0c40036020420004100360200200041146a4101360200200041106a41848dc500360200200041086a42043702000b1300200041043602042000419080c5003602000b130020004103360204200041a0fdc4003602000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241103600000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241033600000b3b01017f02404110102122020d00411041011030000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000b4f01027f230041106b2202240002404101102122030d00410141011030000b200341003a0000200041086a4101360200200241013602042002200336020020002002290300370200200241106a24000b3101017f02404108102122020d00410841011030000b20004288808080800137020420002002360200200242b8173700000bea1102077f027e230041106b22022400200241003602082002420137030041062002105c0240024002400240024002400240024002400240024002400240024002400240024020022802042203200228020822046b4106490d00200441066a2105200228020021030c010b200441066a22052004490d0f200341017422062005200620054b1b22064100480d0f0240024020030d002006102121030c010b200228020020032006102521030b2003450d0120022006360204200220033602000b20022005360208200320046a220441002800d1cf44360000200441046a41002f00d5cf443b0000410d2002105c0240024020022802042203200228020822066b410d490d002006410d6a2104200228020021050c010b2006410d6a22042006490d0f200341017422052004200520044b1b22074100480d0f0240024020030d002007102121050c010b200228020020032007102521050b2005450d022002200736020420022005360200200721030b20022004360208200520066a220641002900d7cf44370000200641056a41002900dccf4437000002400240200320046b4104490d00200441046a21060c010b200441046a22062004490d0f200341017422072006200720064b1b22074100480d0f0240024020030d002007102121050c010b200520032007102521050b2005450d0320022007360204200220053602000b20022006360208200520046a41023600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102121050c010b200228020020052003102521050b2005450d0420022003360204200220053602000b2002200441046a360208200520046a41fc073600000240024020022802042205200228020822046b4104490d00200228020021050c010b200441046a22032004490d0f200541017422062003200620034b1b22034100480d0f0240024020050d002003102121050c010b200228020020052003102521050b2005450d0520022003360204200220053602000b2002200441046a360208200520046a4100360000410c2002105c41e4cfc4002104034020042d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0720022007360204200220033602000b2002200541016a360208200320056a20063a0000200441016a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0820022007360204200220033602000b2002200541016a360208200320056a20063a0000200441026a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0920022007360204200220033602000b2002200541016a360208200320056a20063a0000200441036a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0a20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441046a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0b20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441056a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0c20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441066a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0d20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441076a2d0000210602400240200228020420022802082205460d00200228020021030c010b200541016a22032005490d10200541017422072003200720034b1b22074100480d100240024020050d002007102121030c010b200228020020052007102521030b2003450d0e20022007360204200220033602000b2002200541016a360208200320056a20063a0000200441086a28020021060240024020022802042203200228020822056b4104490d00200228020021030c010b200541046a22072005490d10200341017422082007200820074b1b22074100480d100240024020030d002007102121030c010b200228020020032007102521030b2003450d0f20022007360204200220033602000b2002200541046a360208200320056a20063600002004410c6a220441f4d0c400470d000b200235020821092002350200210a200241106a2400200a2009422086840f0b200641011030000b200741011030000b200741011030000b200341011030000b200341011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b200741011030000b102a000bd31a05037f017e047f037e017f230041800b6b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241b8086a200241106a10e1020240024020022802bc08450d00200241186a200241b8086a41fc0010dc041a20024198016a200241186a41fc0010dc041a20024198016a10830402402002280298012201450d00200241b8086a2001417f6a108901200241b8086a200241a8016a412010de040d000240024020024190026a28020022030d004100210341042104410021010c010b024002402003ad420c7e2205422088a70d002005a722014100480d0020022802880221002001102122040d01200141041030000b102a000b200341c8026c210620034103742107200421010340200220003602e004200241b8086a200241e0046a10b803200141086a200241b8086a41086a280200360200200120022903b8083702002001410c6a2101200041c8026a2100200641b87d6a22060d000b200741786a41037641016a21010b200220013602e804200220033602e404200220043602e004200241b8086a200241e0046a1084040240200241e8016a2201200241b8086a412010de04450d00418ebac600ad4280808080e0018410082001ad4280808080800484100f200241b8086aad4280808080800484100f0b02402001200241b8086a412010de040d002002418c026a28020021082002280288022107200228029002210620024198026a20024198016a41f00010dc041a2007200641c8026c6a2100200228029802210920072101024002402006450d00200241e0046a41f0006a210441b8bac600ad4280808080d00184210a2007210102400340200241d0076a200141e80010dc041a200141e8006a290300210520024188036a200141f0006a41d80110dc041a20054203510d01200241e0046a200241d0076a41e80010dc041a200220053703c805200420024188036a41d80110dc041a2002200241e0046a3602a807200241b8086a200241a8076a10b80320022802c0082106024020022802bc08450d0020022802b80810230b200241b8086a200241e0046a41c80210dc041a200241003602b807200241a8076a200241b8086a2006200241b8076a10850420022d00a8074101460d03024020022d00b40722064102460d0020023100b607210520023100b507210b20023502b007210c20022802ac072103200a100802402006450d00200b100e0b2005100e2003450d00200c4220862003ad8410080b200141c8026a22012000470d000b200021010c010b200141c8026a21010b20012000460d04200241d0096a2106200241b8086a41f0006a2103034020024188036a200141e80010dc041a200141e8006a2903002105200241b8086a200141f0006a41d80110dc041a20054203510d05200241d0076a20024188036a41e80010dc041a200241e0046a200241b8086a41d80110dc041a200241b8086a200241d0076a41e80010dc041a200220053703a0092003200241e0046a41d80110dc041a200610db01200141c8026a22012000470d000c050b0b200241086a20022f00a90720022d00ab074110747210860420022903082105200241c4086a42dd808080f01e370200200241323602cc08200241cca2c6003602c008200220053703b808200241b8086a102b000b41b4a2c600102b000b419ca2c600102b000b20024194036a4104360200200241f4046a4102360200200242023702e404200241f89fc5003602e0042002410436028c03200241f09fc500360288032002410036029c01200241c4b8c60036029801200220024188036a3602f004200220024198016a36029003200241e0046a4188a0c5001038000b02402008450d00200710230b200241d4bcc0004110108f01200228020421030240200228020022044101470d0041d4bcc000ad428080808080028410050b200241b8086a41186a4200370300200241b8086a41106a22074200370300200241b8086a41086a22014200370300200242003703b808200241e0046a41086a220041c4fbc400ad4280808080e000841003220641086a290000370300200220062900003703e0042006102320012000290300370300200220022903e0043703b80820024188036a41086a22084188cec000ad4280808080e001841003220641086a2900003703002002200629000037038803200610232007200229038803220537030020002001290300370300200241e0046a41106a2005370300200241e0046a41186a2008290300370300200220053703d007200220022903b8083703e00420022003410020041b3602b808200241e0046aad4280808080800484200241b8086aad4280808080c0008410022009109002200241b8086a109b01200220024198026a410c6a28020022073602c807200228029c0221032002200241b8086a410c6a28020022013602cc07024020072001470d0002402007450d0020022802bc0821044100210641b6c9c300ad4280808080c0028421050340024002400240024002400240024002400240200320066a22012d00002208200420066a22002d0000470d000240024002400240024020080e050001020304000b20032004460d0c200141016a200041016a412010de040d040c070b024020032004460d00200141016a280000200041016a280000470d040b200141106a2802002208200041106a280200470d03200141086a2802002209200041086a280200220d460d092009200d200810de040d030c090b024020032004460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002209200041086a280200220d460d072009200d200810de040d020c070b024020032004460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002209200041086a280200220d460d052009200d200810de040d010c050b2001410c6a28020022082000410c6a280200470d00200141046a2802002209200041046a280200220d460d012009200d200810de04450d010b20051008200241e0046a200110b00120023502e80442208620022802e0042208ad84100f024020022802e404450d00200810230b200241e0046a200010b00120023502e80442208620022802e0042208ad84100f024020022802e404450d00200810230b20012d000020002d00002208470d0620080e050105040300010b2001410c6a28020022082000410c6a280200470d05200141046a2802002201200041046a2802002200460d0620012000200810de04450d060c050b20032004460d050b200141016a200041016a412010de040d030c040b024020032004460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200810de040d020c030b024020032004460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200810de040d010c020b024020032004460d00200141016a280000200041016a280000470d010b200141106a2802002208200041106a280200470d00200141086a2802002201200041086a2802002200460d0120012000200810de04450d010b41c4a3c600102b000b200641246a21062007417f6a22070d000b0b024020024198026a41306a2201200241b8086a41306a2200412010de04450d00418ebac600ad4280808080e0018410082001ad4280808080800484100f2000ad4280808080800484100f0b024020012000412010de04450d0041dca3c600102b000b024020022802c4082200450d0020022802bc082101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241c0086a280200450d0020022802bc0810230b024020022802a4022200450d00200228029c022101200041246c210003400240024020012d0000220641034b0d0002400240024020060e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241a0026a280200450d00200228029c0210230b200241800b6a240042010f0b20024188036a41146a410d36020020024188036a410c6a410e360200200241d0076a41146a4103360200200242033702d407200241acb6c6003602d0072002410e36028c032002200241c8076a3602b8072002200241cc076a3602a807200242043703f004200242013702e404200241aca3c6003602e004200220024188036a3602e0072002200241e0046a360298032002200241a8076a360290032002200241b8076a36028803200241d0076a41b4a3c6001038000bdc5a090e7f047e017f027e067f017e057f057e0e7f230022012102200141e0016b4160712203240002400240024002400240024002400240024002400240024002400240024002402000410c6a28020041246c22040d004104210541002106410021070c010b200028020421014104210541002106410021070340024020012d00004101470d00200141106a2802002208417f4c0d0d200141086a2802002109200141016a280000210a0240024020080d004101210b0c010b20081021220b450d040b200b2009200810dc04210b200341086a41026a220c200341c8006a41026a2d00003a0000200341a0016a41086a220d20034180016a41086a290200370300200320032f00483b010820032003290280013703a001024020062007470d00200641016a22092006490d112006410174220e2009200e20094b1b2207ad42247e220f422088a70d11200fa722094100480d110240024020060d002009102121050c010b2005200641246c2009102521050b2005450d050b2005200641246c6a220941013a00002009200a360001200920083600102009200836000c2009200b360008200920032f01083b0005200941076a200c2d00003a0000200920032903a0013702142009411c6a200d290300370200200641016a21060b200141246a21012004415c6a22040d000b0b200341003602a00141d4bcc000ad4280808080800284200341a0016aad22104280808080c000842211100220034180016a41186a2204420037030020034180016a41106a2208420037030020034180016a41086a220942003703002003420037038001200341386a41086a220141c4fbc400ad4280808080e00084220f1003220a41086a2900003703002003200a290000370338200a1023200920012903003703002003200329033822123703282003201237038001200141f9bcc000ad4280808080e000841003220a41086a2900003703002003200a290000370338200a1023200820032903382212370300200341086a41086a220b2009290300370300200341086a41106a220c2012370300200341086a41186a220d20012903003703002003201237036020032003290380013703082003200028020022133602a001200341086aad2214428080808080048422122011100220044200370300200842003703002009420037030020034200370380012001200f1003220a41086a2900003703002003200a290000370338200a102320092001290300370300200320032903382211370328200320113703800120014197bdc000ad4280808080e000841003220a41086a2900003703002003200a290000370338200a1023200420012903002211370300200b2009290300370300200c20032903382215370300200d2011370300200320153703602003200329038001370308200341203602a4012003200341086a3602a00120052006200341a0016a108d0120044200370300200842003703002009420037030020034200370380012001200f1003220a41086a2900003703002003200a290000370338200a1023200920012903003703002003200329033822113703282003201137038001200141ffbcc000ad4280808080a001841003220a41086a2900003703002003200a290000370338200a1023200420012903002211370300200b2009290300370300200c20032903382215370300200d2011370300200320153703602003200329038001370308200341203602a4012003200341086a3602a001200041106a2216200341a0016a10b1032001200f1003220a41086a2900003703002003200a290000370338200a1023200341286a41086a2217200129030037030020032003290338370328200141f0bcc000ad42808080809001841003220a41086a2900003703002003200a290000370338200a1023200341e0006a41086a220e20012903003703002003200329033837036020032013417f6a360208200341a0016a41186a221320144280808080c000841001220a41186a290000370300200341a0016a41106a2218200a41106a290000370300200341a0016a41086a2219200a41086a2900003703002003200a2900003703a001200a1023200420132903003703002008201829030037030020092019290300370300200320032903a0013703800141c0001021220a450d02200a2003290328370000200a41086a2017290300370000200a2003290360370010200a41186a200e290300370000200a200329038001370020200a41286a2009290300370000200a41306a2008290300370000200a41386a20042903003700002003200a3602a001200341c0003602a4012016200341a0016a10b103200a102320044200370300200842003703002009420037030020034200370380012001200f1003220a41086a2900003703002003200a290000370338200a102320092001290300370300200320032903382211370328200320113703800120014189bdc000ad4280808080e001841003220a41086a2900003703002003200a290000370338200a1023200e2001290300221137030020032003290338221437036020082014370000200841086a220a2011370000200b2009290300370300200c2008290300370300200d20042903003703002003200329038001370308200341203602a4012003200341086a3602a001200041d0006a200341a0016a10b10320044200370300200842003703002009420037030020034200370380012001200f1003221641086a2900003703002003201629000037033820161023200920012903003703002003200329033822113703282003201137038001200141c0bdc000ad4280808080e000841003221641086a2900003703002003201629000037033820161023200e2001290300221137030020032003290338221437036020082014370000200a2011370000200b2009290300370300200c2008290300370300200d200429030037030020032003290380013703082012100520044200370300200842003703002009420037030020034200370380012001200f1003221641086a2900003703002003201629000037033820161023200920012903003703002003200329033822113703282003201137038001200141a4d0c000ad4280808080a001841003221641086a2900003703002003201629000037033820161023200e2001290300221137030020032003290338221437036020082014370000200a2011370000200b2009290300370300200c2008290300370300200d20042903003703002003200329038001370308201210052001200f1003220a41086a2900003703002003200a290000370338200a10232017200129030037030020032003290338370328200141c6bdc000ad4280808080b001841003220a41086a2900003703002003200a290000370338200a1023200e200129030037030020032003290338370360201342011001220141186a2900003703002018200141106a2900003703002019200141086a290000370300200320012900003703a00120011023200420132903003703002008201829030037030020092019290300370300200320032903a0013703800141c00010212201450d0320012003290328370000200141086a200341286a41086a29030037000020012003290360370010200141186a200341e0006a41086a2903003700002001200329038001370020200141286a20034180016a41086a2204290300370000200141306a20034180016a41106a220a290300370000200141386a20034180016a41186a220b2903003700002001ad4280808080800884100a200110232000280200211a200341a0016a41186a4200370300200341a0016a41106a220c4200370300200341a0016a41086a22094200370300200342003703a001200341386a41086a22014191fdc400ad42808080809001841003220841086a290000370300200320082900003703382008102320092001290300370300200320032903383703a001200141a9e0c100ad4280808080f001841003220841086a2900003703002003200829000037033820081023200c2003290338220f37030020042009290300370300200a200f370300200b20012903003703002003200f370360200320032903a00137038001200341086a20034180016a109102024002400240200328020822040d00410421044100210141002109410021084100210e4100211b410421160c010b200328020c21010240200341086a41086a280200220941024f0d00410421164100210e200921084100211b0c010b2004280208210e2004280204211b2004280200211620042004410c6a2009417f6a2209410c6c10dd041a41012108200941014b0d010b0340024020082001470d00200141016a22082001490d102001410174220a2008200a20084b1b2208ad420c7e220f422088a70d10200fa7220a4100480d100240024020010d00200a102121040c010b20042001410c6c200a102521040b2004450d0720082101200921080b20042008410c6c6a2208410036020820084204370200200941016a2209210820094102490d000b0b20034180016a41086a2009360200200320013602840120032004360280010240024020040d00200341086a41186a4200370300200341086a41106a22044200370300200341086a41086a2209420037030020034200370308200341386a41086a22014191fdc400ad42808080809001841003220841086a29000037030020032008290000370338200810232009200129030037030020032003290338220f3703602003200f370308200141a9e0c100ad4280808080f001841003220841086a290000370300200320082900003703382008102320042003290338220f370300200341a0016a41086a2009290300370300200341a0016a41106a200f370300200341a0016a41186a20012903003703002003200f370328200320032903083703a0012010428080808080048410050c010b200341086a41186a4200370300200341086a41106a220d4200370300200341086a41086a220a420037030020034200370308200341386a41086a22084191fdc400ad42808080809001841003220b41086a2900003703002003200b290000370338200b1023200a200829030037030020032003290338220f3703602003200f370308200841a9e0c100ad4280808080f001841003220b41086a2900003703002003200b290000370338200b1023200d2003290338220f370300200341a0016a41086a200a290300370300200341a0016a41106a200f370300200341a0016a41186a20082903003703002003200f370328200320032903083703a0012003412036020c2009410c6c21082003200341a0016a36020820034180016a200341086a10732004210903400240200941046a280200450d00200928020010230b2009410c6a2109200841746a22080d000b2001450d00200410230b200341a0016a41186a22044200370300200341a0016a41106a220a4200370300200341a0016a41086a22094200370300200342003703a001200341386a41086a22014191fdc400ad42808080809001841003220841086a290000370300200320082900003703382008102320092001290300370300200320032903383703a0012001419adfc100ad4280808080a001841003220841086a2900003703002003200829000037033820081023200341e0006a41086a2001290300220f370300200320032903382212370360200c2012370000200c41086a200f37000020034180016a41086a200929030037030020034180016a41106a200a29030037030020034180016a41186a2004290300370300200320032903a00137038001200341a0016a20034180016a10910220032902a401420020032802a00122091b220f422088a72200410c6c21012009410420091b220d41746a2109410121080240034020082113024020010d00410021080c020b200141746a2101201341016a2108200941146a21042009410c6a220a210920042802002204450d000b20034180016a41086a200a2802002201410c6a29020037030020034190016a200141146a29020037030020032001290204370380012001411c6a290200211c2001280200210b2001200141246a2004417f6a220941246c10dd041a200a41086a2009360200410121080b2003200d3602702003200f37027402400240200d0d00200341086a41186a4200370300200341086a41106a220a4200370300200341086a41086a2209420037030020034200370308200341386a41086a22014191fdc400ad42808080809001841003220441086a29000037030020032004290000370338200410232009200129030037030020032003290338220f3703602003200f3703082001419adfc100ad4280808080a001841003220441086a2900003703002003200429000037033820041023200a2003290338220f370300200341a0016a41086a2009290300370300200341a0016a41106a200f370300200341a0016a41186a20012903003703002003200f370328200320032903083703a0012010428080808080048410050c010b200fa7210a200341086a41186a4200370300200341086a41106a22184200370300200341086a41086a2209420037030020034200370308200341386a41086a22014191fdc400ad42808080809001841003220441086a29000037030020032004290000370338200410232009200129030037030020032003290338220f3703602003200f3703082001419adfc100ad4280808080a001841003220441086a290000370300200320042900003703382004102320182003290338220f370300200341a0016a41086a2009290300370300200341a0016a41106a200f370300200341a0016a41186a20012903003703002003200f370328200320032903083703a0012003412036020c2003200341a0016a360208200341f0006a200341086a107302402000450d002000410c6c2109200d210103400240200141046a280200450d00200128020010230b2001410c6a2101200941746a22090d000b0b200a450d00200d10230b200341c8006a41086a20034180016a41086a290300370300200341c8006a41106a20034180016a41106a2903003703002003200329038001370348024002402008450d00200e41246c2101201621090340024020010d00410121180c030b2001415c6a210120092802002108200941246a21092008200b470d000b0b410021180b200341a0016a41186a22044200370300200341a0016a41106a220a4200370300200341a0016a41086a22094200370300200342003703a001200341386a41086a22014191fdc400ad42808080809001841003220841086a290000370300200320082900003703382008102320092001290300370300200320032903383703a00120014182fdc400ad4280808080a001841003220841086a2900003703002003200829000037033820081023200341e0006a41086a2001290300220f370300200320032903382212370360200c2012370000200c41086a200f37000020034180016a41086a200929030037030020034180016a41106a200a29030037030020034180016a41186a2004290300370300200320032903a00137038001200341a0016a20034180016a4120108b0220032802a001210120032902a401210f200341086a41106a2208200341c8006a41106a290300370300200341086a41086a2204200341c8006a41086a290300370300200320032903483703082001410420011b211d200f420020011b220fa7211e02400240200f422088a7220c410274220a41027522012016200e41246c6a221920166b41246d6a22092001490d00200920186a221f20094f0d010b201d200a6a21172003200b360284012003201836028001200320032903083703880120032004290300370290012003200829030037039801412821094100211f41042120410021214100210e2016210a201d21000240410041ff01710e03080900080b410021010c090b4100212102400240201f0d00410421204100211f410421010c010b201fad422c7e220f422088a70d0e200fa722014100480d0e200110212220450d06202021010b2003200b36028401200320183602800120032003290308370388012003200341106a290300370290012003200341186a290300370398010240200c450d00200c4102742208417c6a410276210a20202101201d2109034020092802002104200141246a4102360200200120043602002001412c6a2101200941046a21092008417c6a22080d000b200a41016a21210b0240201e450d00201d10230b024020192016460d00200341b8016a2108200341b0016a2104200341a8016a210a2016210903402009280200210b20082009411c6a2902003703002004200941146a290200370300200a2009410c6a2902003703002003200941046a2902003703a0012001200b360200200141046a20032903a0013702002001410c6a200a290300370200200141146a20042903003702002001411c6a2008290300370200200141246a42013702002001412c6a2101202141016a2121200941246a22092019470d000b0b0240201b450d00201610230b200329038801211220032903900121112003290398012114200329038001210f200341003602a001200fa74101470d09200f422088a7210920032903b801211520032903b001212220032903a801212320032903a001210f034020152124202221252023212620012009360200200141046a2012370200200141286a2013360200200141246a41013602002001411c6a201c3702002001410c6a2011370200200141146a2014370200200341003602a0012001412c6a2101202141016a2121200fa72108200f422088a7210920032903b801211520032903b001212220032903a801212320032903a001210f20262112202521112024211420084101460d000c0a0b0b200841011030000b200941041030000b41c00041011030000b41c00041011030000b200a41041030000b200141041030000b410121010c010b410221010b034002400240024002400240024002400240024020010e03000104040b200341003602a0012003290398012111200320032903b801370398012003290390012112200320032903b00137039001200329038801210f200320032903a801370388012003290380012114200320032903a0012215370380012014a74101470d042014422088a7210b2015a721180c010b0240024002400240200e41ff01710e03010200010b2019200a470d044102210e0c020b024020172000470d0002402019200a470d004102210e0c030b200a41146a2902002111200a410c6a2902002112200a411c6a2902002122200a290204210f4101210c4102210e200a2101200a41246a210a0c080b4102210c4100210e20002101200041046a21000c070b20172000470d054101210e0b200341003602a0012003290398012111200320032903b801370398012003290390012112200320032903b00137039001200329038801210f200320032903a801370388012003290380012114200320032903a0012215370380012014a74101470d032014422088a7210b2015a721180b4101210c41022104201c21142013210d0c050b200a41146a2902002111200a410c6a2902002112200a411c6a2902002122200a290204210f4101210c4102210e200a2101200a41246a210a0c030b024002400240200e41ff01710e03010200010b2019200a460d02200a41146a2902002111200a410c6a2902002112200a411c6a2902002114200a290204210f200a280200210b4100210d410121044102210e200a41246a210a4101210c0c050b024020172000470d002019200a460d02200a41146a2902002111200a410c6a2902002112200a411c6a2902002114200a290204210f200a280200210b4100210d410121044102210e200a41246a210a4101210c0c050b2000280200210b4102210c410121044100210e200041046a21000c040b20172000460d002000280200210b4102210c4101210e200041046a2100410121040c030b0240201e450d00201d10230b201b450d04201610230c040b4102210c4101210e200021012023210f2024211220252111200041046a21000b2001280200210b41002104200f21232012212420112125202221144100210d0b024002400240024002402021201f470d00024002400240024020040e03010200010b201841014621010c020b0240024002400240200e41ff01710e03010200010b2019200a6b41246d21010c020b417f201720006b41027522012019200a6b41246d6a220820082001491b21010c010b201720006b41027521010b417f200120184101466a220820082001491b21010c010b024002400240200e41ff01710e03010200010b2019200a6b41246d21010c020b417f201720006b41027522012019200a6b41246d6a220820082001491b21010c010b201720006b41027521010b201f417f200141016a220820082001491b6a2201201f490d0a201f41017422082001200820014b1b2201ad422c7e2215422088a70d0a2015a722084100480d0a02400240201f0d002008102121200c010b2020201f412c6c2008102521200b2020450d012001211f0b202020096a2201200d3602002001415c6a220820123702082008200f3702002001417c6a200c360200200141746a2014370200200141586a200b360200200841106a20113702002009412c6a2109202141016a2121200441ff01710e03010203010b200841041030000b410121010c020b410221010c010b410021010c000b0b20214115490d0120214101762227ad422c7e220f422088a70d00200fa72201417f4c0d0002400240024020010d00410421284104210d0c010b200110212228450d012028210d0b202041546a21292020412c6a212a202041fc7e6a212b410421184100212c4100211e410021002021211b0340201b210b4100211b4101210a0240200b417f6a2208450d0002400240024002400240024020202008412c6c6a280200200b412c6c220e20206a41a87f6a2802002201490d00200b417e6a210c202b200e6a21084100211b4100210903400240200c2009470d00200b210a0c080b200941016a21092001200828020022044f210a200841546a210820042101200a0d000b200941016a210a2009417f73200b6a21080c010b202b200e6a210902400340024020084101470d00410021080c020b2008417f6a210820012009280200220449210a200941546a210920042101200a0d000b0b200b2008490d01200b20214b0d03200b20086b220a4101762204450d0020202008412c6c6a21012029200e6a21090340200341a0016a41286a220c200141286a220e280200360200200341a0016a41206a2213200141206a2219290200370300200341a0016a41186a2217200141186a2216290200370300200341a0016a41106a221d200141106a221b290200370300200341a0016a41086a222d200141086a222e290200370300200320012902003703a001200941086a222f290200210f200941106a22302902002112200941186a22312902002111200941206a22322902002114200941286a2233280200213420012009290200370200200e20343602002019201437020020162011370200201b2012370200202e200f3702002033200c28020036020020322013290300370200203120172903003702002030201d290300370200202f202d290300370200200920032903a0013702002001412c6a2101200941546a21092004417f6a22040d000b0b024020080d002008211b0c050b0240200a41094d0d002008211b0c050b200b20214b0d01200b20086b2104202a2008412c6c6a210c0340200b2008417f6a221b490d040240200b201b6b220a4102490d0020202008412c6c6a22012802002020201b412c6c6a220828020022194f0d00200341a0016a41206a2217200841246a290200370300200341a0016a41186a22162008411c6a290200370300200341a0016a41106a221d200841146a290200370300200341a0016a41086a222d2008410c6a2902003703002008290204210f200841286a200141286a2802003602002003200f3703a001200841206a200141206a290200370200200841186a200141186a290200370200200841106a200141106a290200370200200841086a200141086a29020037020020082001290200370200410121090240200a4103490d00200828025820194f0d004102210e200c211303402013220141546a22092001290200370200200941286a200141286a280200360200200941206a200141206a290200370200200941186a200141186a290200370200200941106a200141106a290200370200200941086a200141086a2902003702002004200e2209460d01200941016a210e2001412c6a22132802002019490d000b0b2001201936020020082009412c6c6a220120032903a001370204200141246a20172903003702002001411c6a2016290300370200200141146a201d2903003702002001410c6a202d2903003702000b201b450d05200c41546a210c200441016a2104201b2108200a410a4f0d050c000b0b2008200b103e000b200b2008417f6a221b490d010b200b20211036000b201b200b103e000b0240024002402000202c470d00202c41016a2201202c490d08202c41017422092001200920014b1b220141ffffffff01712001470d08200141037422094100480d0802400240202c0d002009102121180c010b2018202c4103742009102521180b2018450d012001212c201e21000b201820004103746a2201200a3602042001201b360200201e41016a2200211e20004102490d0102400340024002400240024020182000417f6a221e4103746a2201280200450d00200041037420186a220441746a2802002208200128020422094d0d000240200041024b0d002000211e410221000c080b20182000417d6a22194103746a2802042201200920086a4d0d010240200041034b0d002000211e410321000c080b200441646a280200200120086a4d0d012000211e0c070b20004103490d012001280204210920182000417d6a22194103746a28020421010b20012009490d010b2000417e6a21190b0240024002400240024002402000201941016a222d4b222e450d00200020194b222f450d01201820194103746a2217280204223020172802006a22012018202d4103746a2216280200221d490d02200120214b0d032020201d412c6c6a220e20162802042213412c6c22096a21042001412c6c21082001201d6b220b20136b220120134f0d04202820042001412c6c220910dc041a200d20096a210a0240024020134101480d00200141014e0d010b20042101200d21080c060b202920086a21092004210103402009200141546a2204200a41546a220b200b280200200428020049220c1b2208290200370200200941286a200841286a280200360200200941206a200841206a290200370200200941186a200841186a290200370200200941106a200841106a290200370200200941086a200841086a290200370200200a200b200c1b210a0240200e20042001200c1b2201490d00200d21080c070b200941546a2109200d2108200d200a490d000c060b0b4198bfc100202d2000102d000b4198bfc10020192000102d000b201d2001103e000b200120211036000b2028200e200910dc041a200d20096a210a0240024020134101480d00200b20134a0d010b200e2101200d21080c010b202020086a210c200d2108200e210103402001200420082004280200200828020049220b1b2209290200370200200141286a200941286a280200360200200141206a200941206a290200370200200141186a200941186a290200370200200141106a200941106a290200370200200141086a200941086a29020037020020082008412c6a200b1b21082001412c6a21012004412c6a2004200b1b2204200c4f0d01200a20084b0d000b0b20012008200a20086b22092009412c706b10dc041a0240202f450d002017201d360200201741046a203020136a360200202e450d022016201641086a2000202d417f736a41037410dd041a201e2100201e41014d0d040c010b0b41a8bfc10020192000102d000b41b8bbc000102b000b200941041030000b201b0d000b0240202c450d00201810230b2027450d03202810230c030b200141041030000b102f000b20214102490d002021417f6a210820202021412c6c6a210b4101210a03400240024002400240202120082201417f6a2208490d00202120086b22094102490d0320202001412c6c6a220128020020202008412c6c6a2204280200220e4f0d03200341a0016a41206a2200200441246a290200370300200341a0016a41186a22132004411c6a290200370300200341a0016a41106a2218200441146a290200370300200341a0016a41086a22192004410c6a2902003703002004290204210f200441286a200141286a2802003602002003200f3703a001200441206a200141206a290200370200200441186a200141186a290200370200200441106a200141106a290200370200200441086a200141086a290200370200200420012902003702004101210c20094103490d022004280258200e4f0d024100210c200b210903402009220141546a22092001290200370200200941286a200141286a280200360200200941206a200141206a290200370200200941186a200141186a290200370200200941106a200141106a290200370200200941086a200141086a290200370200200a200c220d460d02200d417f6a210c2001412c6a2209280200200e4f0d020c000b0b20082021103e000b4102200d6b210c0b2001200e3602002004200c412c6c6a220120032903a001370204200141246a20002903003702002001411c6a2013290300370200200141146a20182903003702002001410c6a20192903003702000b200b41546a210b200a417f6a210a20080d000b0b200341086a41186a4200370300200341086a41106a22044200370300200341086a41086a2209420037030020034200370308200341386a41086a22014191fdc400ad42808080809001841003220841086a29000037030020032008290000370338200810232009200129030037030020032003290338220f3703602003200f37030820014184ddc100ad4280808080e000841003220841086a290000370300200320082900003703382008102320042003290338220f370300200341a0016a41086a2009290300370300200341a0016a41106a200f370300200341a0016a41186a20012903003703002003200f370328200320032903083703a00120034100360288012003420137038001202120034180016a105c024002402021450d0020202021412c6c6a210b2020210903402009280200210402400240200328028401220820032802880122016b4104490d0020032802800121080c010b200141046a220a2001490d0420084101742201200a2001200a4b1b22014100480d040240024020080d002001102121080c010b20032802800120082001102521080b2008450d032003200136028401200320083602800120032802880121010b2003200141046a36028801200820016a2004360000200941046a20034180016a10d3012009412c6a2209200b470d000b0b2003280284012101201042808080808004842003350288014220862003280280012209ad84100202402001450d00200910230b0240201f450d00202010230b201a10c603109a01109a0102402006450d00200641246c21092005210103400240024020012d0000220841034b0d0002400240024020080e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012009415c6a22090d000b0b02402007450d00200510230b200224000f0b200141011030000b102a000b8804010b7f230041206b220224002001280200210320012802082104200241003602082002420137030020042002105c024002400240024020040d002002280208210520022802042106200228020021070c010b20032004410c6c6a21082003210903402009280200210a200941086a280200220b2002105c02400240200228020422062002280208220c6b200b490d00200228020021070c010b200c200b6a2207200c490d04200641017422052007200520074b1b22054100480d040240024020060d002005102121070c010b200228020020062005102521070b2007450d032002200536020420022007360200200521060b2002200c200b6a22053602082007200c6a200a200b10dc041a2009410c6a22092008470d000b0b200241186a22092005ad4220862007ad841016220b41186a290000370300200241106a220c200b41106a290000370300200241086a220a200b41086a2900003703002002200b290000370300200b1023200041186a2009290300370000200041106a200c290300370000200041086a200a2903003700002000200229030037000002402006450d00200710230b02402004450d002004410c6c21092003210b03400240200b41046a280200450d00200b28020010230b200b410c6a210b200941746a22090d000b0b0240200141046a280200450d00200310230b200241206a24000f0b200541011030000b102a000bac2705097f077e027f017e027f230041e0086b22042400200441c8046a200141c80210dc041a200441c0026a200441c8046a10f2024101210502400240024020042d00c0024101470d00200020042f00c1023b0001200041013a0000200041036a20042d00c3023a000020032802002106410021000c010b200441c0006a200441c0026a41086a220741800210dc041a02400240024002400240024002400240024002400240024020032802002206450d00200341086a280200210820032802042109200441386a41d4bcc0004110108f01200428023c210a2004280238210b200441b8076a41086a220141c4fbc400ad4280808080e000841003220541086a290000370300200420052900003703b8072005102320044198076a41086a2001290300370300200420042903b80737039807200141f4cec000ad4280808080d001841003220541086a290000370300200420052900003703b80720051023200441a8076a41086a2001290300370300200420042903b8073703a807410021052004200a4100200b1b3602c804200441c0026a41186a220a200441c8046aad4280808080c000841001220141186a290000370300200441c0026a41106a220b200141106a2900003703002007200141086a290000370300200420012900003703c00220011023200441d8076a41186a220c200a290300370300200441d8076a41106a220a200b290300370300200441d8076a41086a2007290300370300200420042903c0023703d80741c00010212201450d012001200429039807370000200141086a20044198076a41086a290300370000200120042903a807370010200141186a200441a8076a41086a290300370000200120042903d807370020200141286a200441d8076a41086a290300370000200141306a200a290300370000200141386a200c290300370000200441c0003602cc04200420013602c80420062008200441c8046a10c501200110232009450d00200610230b20044190076a200441c0006a41d0006a10f003200441c8046a200441c0006a41800210dc041a200429039007210d02400240024020042903e804220e4202520d00024010ad01220141ff01714102460d0020014180feff077141087621070c0d0b024010ad01220141ff01714102460d0020014180feff077141087621070c0d0b024010ad01220141ff01714102460d0020014180feff077141087621070c0d0b10ad011a024010ad01220141ff01714102460d0020014180feff077141087621070c0d0b4100210920042802980541756a220141084b0d0b20010e09010b0b0b0b0b0b0b02010b200441a0086a41186a200441c8046a41186a290300370300200441a0086a41106a200441c8046a41106a290300370300200441a0086a41086a200441c8046a41086a290300370300200420042903c8043703a00820044188056a290300210f20044180056a290300211020044190056a280200210720042903f00421110240200428029805220141174b0d004101200174419080800671450d004100210141870421070c090b10ad011a024010ad01220141ff01714102460d0020014180feff077141087621070c090b200441c0026a41186a4200370300200441c0026a41106a22084200370300200441c0026a41086a22094200370300200442003703c002200441d0086a41086a220141c4fbc400ad4280808080e0008422121003220a41086a2900003703002004200a2900003703d008200a102320092001290300370300200420042903d0083703c002200141f9bcc000ad4280808080e000841003220a41086a2900003703002004200a2900003703d008200a1023200820042903d0082213370300200441d8076a41086a2009290300370300200441d8076a41106a2013370300200441d8076a41186a2001290300370300200420133703c008200420042903c0023703d807200441306a200441d8076a4120108f010240200e4201520d0020114200510d040b200120121003220941086a290000370300200420092900003703d00820091023200441a8076a41086a2001290300370300200420042903d0083703a807200141e4bcc000ad4280808080c001841003220941086a290000370300200420092900003703d00820091023200441c0086a41086a2001290300370300200420042903d0083703c008200441c0026a200441a0086a10ac0141c00010212201450d04200120042903a807370000200120042903c008370010200120042903c002370020200141086a200441a8076a41086a290300370000200141186a200441c0086a41086a290300370000200141286a200441c0026a41086a290300370000200141306a200441d0026a290300370000200141386a200441c0026a41186a290300370000200441286a200141c000108f01200428022c21092004280228210a200110234100210120094100200a1b22092007470d06200441d0086a41086a220141c4fbc400ad4280808080e00084220e1003220941086a290000370300200420092900003703d00820091023200441b8076a41086a2001290300370300200420042903d0083703b807200141e4bcc000ad4280808080c001841003220941086a290000370300200420092900003703d0082009102320044198076a41086a2001290300370300200420042903d00837039807200441d8076a200441a0086a10ac0141c00010212201450d05200120042903b807370000200141086a200441b8076a41086a2903003700002001200429039807370010200141186a20044198076a41086a290300370000200120042903d807370020200141286a200441d8076a41086a220c290300370000200141306a200441d8076a41106a2214290300370000200141386a200441d8076a41186a22152903003700002004200741016a3602c0022001ad4280808080800884200441c0026aad22164280808080c000842213100220011023200441c0026a41186a22174200370300200441c0026a41106a220b4200370300200441c0026a41086a22094200370300200442003703c002200441c0086a41086a220a200e1003220141086a290000370300200420012900003703c008200110232009200a290300370300200420042903c0083703c002200441d0086a41086a220741c4cec000ad428080808080028422121003220141086a290000370300200420012900003703d00820011023200441a8076a41086a2007290300220e370300200420042903d00822113703a80720082011370000200841086a200e370000200c20092903003703002014200b29030037030020152017290300370300200420042903c0023703d807200441206a200441d8076a4120108f014100210141062107417f2004280224410020042802201b220820026a221820182008491b220842808080c0f588fe064280808080f28ba809200d4280808080f01f835022181b220e200e428094ebdc0380220e4280ec94a37c7e7c4280cab5ee0156200ea76a4b0d0820174200370300200b420037030020094200370300200442003703c002200a41c4fbc400ad4280808080e0008422111003220141086a290000370300200420012900003703c008200110232009200a290300370300200420042903c008220e3703b8072004200e3703c002200a20121003220141086a290000370300200420012900003703c00820011023200b20042903c008220e370300200c20092903003703002014200e3703002015200a2903003703002004200e3703b807200420042903c0023703d807200420083602c002200441d8076aad428080808080048422122013100220174200370300200b420037030020094200370300200442003703c002200a20111003220141086a290000370300200420012900003703c008200110232009200a290300370300200420042903c0083703c002200a41a0cec000ad4280808080b0028422131003220141086a290000370300200420012900003703c00820011023200b20042903c008220e370300200c20092903003703002014200e3703002015200a2903003703002004200e37039807200420042903c0023703d807200441186a200441d8076a4120108f0141002101417f200428021c410020042802181b220a4180afd0e502418094ebdc0320181b2208200da7220920082009491b6a220c200c200a491b220a20084b0d08200441c0026a41186a22144200370300200441c0026a41106a220c4200370300200441c0026a41086a22074200370300200442003703c002200441c0086a41086a220120111003220841086a290000370300200420082900003703c0082008102320072001290300370300200420042903c008220e3703b8072004200e3703c002200120131003220841086a290000370300200420082900003703c00820081023200441b8076a41086a2001290300220e370300200420042903c00822113703b807200b2011370000200b41086a200e370000200441d8076a41086a2007290300370300200441d8076a41106a200c290300370300200441d8076a41186a2014290300370300200420042903c0023703d8072004200a3602c002201220164280808080c000841002200441086a20022009200d422888a72010200f1086034101210741002101200441c0026a200441a0086a2004290308200441086a41086a290300410141112010200f84501b410010880220042802c0024101460d0820042903c802200c290300109104200441c0026a200441c8046a41d0006a10a502024020042d00c0024101460d00200441ec026a2802002102200441e8026a280200210a200441e4026a2802002108200441dc026a280200210b200441d8026a28020021090240200441e0026a2802002201450d002001410c6c21072009210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b0240200b450d00200910230b02402002450d002002410c6c21072008210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b200a450d0a200810230c0a0b20042d00c10222014102460d0920042f01c20221070c080b200441c0026a2004419c056a10ba01024020042d00c0024101460d00200441ec026a2802002102200441e8026a280200210b200441e4026a2802002108200441dc026a280200210c200441d8026a280200210a0240200441e0026a2802002201450d002001410c6c2107200a210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b0240200c450d00200a10230b02402002450d002002410c6c21072008210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b200b450d0a200810230c0a0b20042d00c10222014102460d090c060b200441c0026a200441a0056a10b303024020042d00c0024101460d00200441ec026a2802002102200441e8026a280200210b200441e4026a2802002108200441dc026a280200210c200441d8026a280200210a0240200441e0026a2802002201450d002001410c6c2107200a210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b0240200c450d00200a10230b02402002450d002002410c6c21072008210103400240200141046a280200450d00200128020010230b2001410c6a2101200741746a22070d000b0b200b450d09200810230c090b20042d00c10222014102460d080c050b41c00041011030000b41e8b8c600102b000b41c00041011030000b41c00041011030000b41034102200920074b1b21070c010b20042f01c20241087420017221010c040b2007410874200141ff01717221010c030b20044180086a41186a200441a0086a41186a29030037030020044180086a41106a200441a0086a41106a29030037030020044180086a41086a200441a0086a41086a290300370300200420042903a00837038008410121090b200441b8076a41186a220820044180086a41186a2201290300370300200441b8076a41106a220a20044180086a41106a2207290300370300200441b8076a41086a220b20044180086a41086a220229030037030020042004290380083703b807200441c0026a20044198056a41b00110dc041a200441a0086a41186a220c2008290300370300200441a0086a41106a2214200a290300370300200441a0086a41086a220a200b290300370300200420042903b8073703a0084102210802402009450d002001200c290300370300200720142903003703002002200a290300370300200420042903a00837038008410121080b200441e2076a2002290300370100200441ea076a2007290300370100200441f2076a2001290300370100200420083a00d90720042004290380083701da07200441003a00d807200441a0086a200441c0026a200441d8076a108d02200441ab086a2d0000210720042903a008210e20042d00a808210120042f00a9082102200441dc046a200d370200200441c8046a41106a20012002200741107472410874722207360200200441c8046a41086a200d200e20014102461b370300200420014102473602cc04200441003a00c804200441c8046a108e01200441d4bcc0004110108f012004200428020441016a410120042802001b3602c80441d4bcc000ad4280808080800284200441c8046aad4280808080c0008410022000410c6a2007360200200041046a200e370200200041003a00002006450d032005450d03200341046a280200450d03200610230c030b2007410874200141ff01717221010b20044198056a10db01200041036a20014110763a0000200020013b0001200041013a000020054521000b20000d002006450d00200341046a280200450d00200610230b200441e0086a24000beb0101027f20014180feff077141087621020240024020014101710d00411f210341ccbcc60021010240024002400240024002400240200241ff01710e080006010203040508000b4120210341acbcc60021010c070b4127210341ccbbc60021010c060b4117210341b5bbc60021010c050b4196bbc60021010c040b4126210341f0bac60021010c030b412b210341c5bac60021010c020b4139210341f3bbc60021010c010b411f210341edbdc600210102400240200241ff01710e03000102000b41c100210341acbdc60021010c010b41c100210341ebbcc60021010b20002003360204200020013602000ba20301027f23004180026b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241f8006a20021088010240200228027c450d00200241086a200241f8006a41f00010dc041a200241086a1083040240200241086a410c6a2802002200450d00200228020c2101200041246c210003400240024020012d0000220341034b0d0002400240024020030e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241106a280200450d00200228020c10230b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c200241f89fc500360208200241043602ec01200241fca0c5003602e801200241003602fc01200241c4b8c6003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a4188a0c5001038000bbf2e020b7f017e230041d0006b22022400200241003602282002420137032002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410410212203450d0020024284808080c00037022420022003360220200341edcad18b0636000002400240200228022420022802282203460d00200228022021040c010b200341016a22042003490d26200341017422052004200520044b1b22054100480d260240024020030d002005102121040c010b200228022020032005102521040b2004450d0220022005360224200220043602200b2002200341016a360228200420036a41093a0000411c200241206a105c41f4e3c400210603402006280204210720062802082203200241206a105c0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d27200541017422042008200420084b1b22044100480d270240024020050d002004102121050c010b200228022020052004102521050b2005450d042002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310dc041a200228022421042002280228210302400240200628020c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d29200341017422052004200520044b1b22054100480d290240024020030d002005102121040c010b200228022020032005102521040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d28200341017422052004200520044b1b22054100480d280240024020030d002005102121040c010b200228022020032005102521040b2004450d072002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628020c4101460d00200241306a20062802101103002002280234210720022802382203200241206a105c0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d29200541017422042008200420084b1b22044100480d290240024020050d002004102121050c010b200228022020052004102521050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310dc041a200228024021050240200228023c4101460d0020052002280244200241206a105d0c020b200520022802482203200241206a105d02402003450d00200341d8006c21074100210403400240200520046a220341346a280200450d002003413c6a280200450d00200341386a28020010230b0240200341c4006a280200450d00200341cc006a280200450d00200341c8006a28020010230b2007200441d8006a2204470d000b0b2002280244450d01200510230c010b2006280214210720062802182203200241206a105c0240024020022802242205200228022822046b2003490d00200228022021050c010b200420036a22082004490d28200541017422042008200420084b1b22044100480d280240024020050d002004102121050c010b200228022020052004102521050b2005450d092002200436022420022005360220200228022821040b2002200420036a360228200520046a2007200310dc041a200628022021030240200628021c4101460d002003200641246a280200200241206a105d0c010b20032006280228200241206a105d0b200228022421042002280228210302400240200628022c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d29200341017422052004200520044b1b22054100480d290240024020030d002005102121040c010b200228022020032005102521040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d28200341017422052004200520044b1b22054100480d280240024020030d002005102121040c010b200228022020032005102521040b2004450d0b2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628022c4101460d00200241186a200628023011030020022802182104200228021c2203200241206a105c2003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2a20074101742205200a2005200a4b1b22054100480d2a0240024020070d002005102121070c010b200228022020072005102521070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a200341706a200241206a105e2003200241206a105b2003412c6a2103200841546a22080d000c020b0b2006280230210420062802382203200241206a105c2003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2920074101742205200a2005200a4b1b22054100480d290240024020070d002005102121070c010b200228022020072005102521070b2007450d0e2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a200341706a200241206a105e2003200241206a105b2003412c6a2103200841546a22080d000b0b200228022421042002280228210302400240200628023c4102470d000240024020042003460d00200228022021040c010b200341016a22042003490d29200341017422052004200520044b1b22054100480d290240024020030d002005102121040c010b200228022020032005102521040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41003a00000c010b0240024020042003460d00200228022021040c010b200341016a22042003490d28200341017422052004200520044b1b22054100480d280240024020030d002005102121040c010b200228022020032005102521040b2004450d0f2002200536022420022004360220200228022821030b2002200341016a360228200420036a41013a00000240200628023c4101460d00200241106a20062802401103002002280210210420022802142203200241206a105c2003450d012003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2a20074101742205200a2005200a4b1b22054100480d2a0240024020070d002005102121070c010b200228022020072005102521070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a200341706a200241206a105b2003200241206a105b2003412c6a2103200841546a22080d000c020b0b2006280240210420062802482203200241206a105c2003450d002003412c6c21082004411c6a21030340200341686a28020021092003416c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2920074101742205200a2005200a4b1b22054100480d290240024020070d002005102121070c010b200228022020072005102521070b2007450d122002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a200341706a200241206a105b2003200241206a105b2003412c6a2103200841546a22080d000b0b02400240200628024c4101460d00200241086a20062802501103002002280208210b200228020c2203200241206a105c2003450d01200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2a20084101742205200a2005200a4b1b22054100480d2a0240024020080d002005102121080c010b200228022020082005102521080b2008450d142002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a200341106a2802002109200341146a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2a20084101742205200a2005200a4b1b22054100480d2a0240024020080d002005102121080c010b200228022020082005102521080b2008450d152002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2c20084101742205200a2005200a4b1b22054100480d2c0240024020080d002005102121080c010b200228022020082005102521080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a2002280234450d01200910230c010b2003411c6a2802002109200341246a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2b20084101742205200a2005200a4b1b22054100480d2b0240024020080d002005102121080c010b200228022020082005102521080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a0b200341286a200241206a105b200c200741386a2207470d000c020b0b2006280250210b20062802582203200241206a105c2003450d00200341386c210c410021070340200b20076a220341046a2802002109200341086a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2920084101742205200a2005200a4b1b22054100480d290240024020080d002005102121080c010b200228022020082005102521080b2008450d172002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a200341106a2802002109200341146a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2920084101742205200a2005200a4b1b22054100480d290240024020080d002005102121080c010b200228022020082005102521080b2008450d182002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a02400240200341186a2802004101460d00200241306a2003411c6a280200200341206a28020028020c1102002002280230210920022802382204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2b20084101742205200a2005200a4b1b22054100480d2b0240024020080d002005102121080c010b200228022020082005102521080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a2002280234450d01200910230c010b2003411c6a2802002109200341246a2802002204200241206a105c0240024020022802242208200228022822056b2004490d00200228022021080c010b200520046a220a2005490d2a20084101742205200a2005200a4b1b22054100480d2a0240024020080d002005102121080c010b200228022020082005102521080b2008450d1b2002200536022420022008360220200228022821050b2002200520046a360228200820056a2009200410dc041a0b200341286a200241206a105b200c200741386a2207470d000b0b02400240200628025c4101460d00200220062802601103002002280200210420022802042203200241206a105c2003450d012003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2a20074101742205200a2005200a4b1b22054100480d2a0240024020070d002005102121070c010b200228022020072005102521070b2007450d1c2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a2003200241206a105b2003411c6a2103200841646a22080d000c020b0b2006280260210420062802682203200241206a105c2003450d002003411c6c21082004410c6a21030340200341786a28020021092003417c6a2802002204200241206a105c0240024020022802242207200228022822056b2004490d00200228022021070c010b200520046a220a2005490d2920074101742205200a2005200a4b1b22054100480d290240024020070d002005102121070c010b200228022020072005102521070b2007450d1c2002200536022420022007360220200228022821050b2002200520046a360228200720056a2009200410dc041a2003200241206a105b2003411c6a2103200841646a22080d000b0b200641ec006a220641c4fbc400470d000b2002280228220341046a2204417f4c0d192002280224210920022802202108024002402004450d00200410212205450d1c2003413f4b0d01200520034102743a0000410121070c240b41012104410110212205450d1c200541033a0000410521070c1e0b200341808001490d212003418080808004490d200c1c0b410441011030000b200541011030000b200441011030000b200541011030000b200541011030000b200441011030000b200441011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b200541011030000b102f000b200441011030000b410141011030000b200541033a00002004417f6a41044f0d01200441017422074105200741054b1b22074100480d080b20052004200710252205450d01200721040b20052003360001410521070c030b200741011030000b02400240200441034b0d00200441017422074104200741044b1b22074100480d0620052004200710252205450d01200721040b20052003410274410272360000410421070c020b200741011030000b0240200441014b0d0020052004200441017422074102200741024b1b220710252205450d02200721040b41022107200520034102744101723b00000b0240200420076b20034f0d00200720036a22062007490d032004410174220a2006200a20064b1b22064100480d0320052004200610252205450d020b200520076a2008200310dc041a200720036aad4220862005ad84210d02402009450d00200810230b200241d0006a2400200d0f0b200741011030000b200641011030000b102a000bca0601047f23004190086b22022400024002402001450d00200220003602000c010b200241013602000b20022001360204200241b8056a200210e20202400240024002400240024020022903a0064203510d00200241186a200241b8056a41c80210dc041a200241e0026a200241186a41c80210dc041a2002200241e0026a3602b805200241a8056a200241b8056a10b80320022802b0052101200241b8056a200241e0026a41c80210dc041a20024188086a20022802b005360200200220022903a80537038008200241086a200241b8056a200120024180086a1085044101410220022d000841014622031b220010212201450d01200241003602c005200220003602bc05200220013602b8050240024020030d00200141003a000041022103200241023602c0050240200241146a2d000022044102470d00200141003a00010c020b200141013a00010240024020044101470d0020014102410410252201450d06200141013a000220024284808080303702bc05200220013602b8054103210320022d001521040c010b410221034100210420004102470d0041000d0820004101742204200041016a2205200420054b1b22044100480d0820012000200410252201450d06200220043602bc05200220013602b805410021040b200120036a20043a00002002200341016a22003602c005200241166a2d00002104024020022802bc052000470d0041000d0820004101742203200041016a2205200320054b1b22034100480d080240024020000d002003102121010c010b200120002003102521010b2001450d07200220033602bc05200220013602b8050b2002200041016a22033602c005200120006a20043a00000c010b200141013a0000200241013602c005200241086a410172200241b8056a108a0420022802c005210320022802b80521010b20024190086a24002003ad4220862001ad840f0b200241246a4104360200200241f4026a4102360200200242023702e402200241f89fc5003602e0022002410436021c20024194a1c5003602182002410036020c200241c4b8c6003602082002200241186a3602f0022002200241086a360220200241e0026a4188a0c5001038000b200041011030000b410441011030000b200441011030000b200341011030000b102a000bea0b01057f230041106b22022400200141046a2802002103200141086a28020021040240024002400240024002400240024002400240024020002d00004101460d000240024020032004460d00200128020021050c010b200441016a22032004490d0b200441017422052003200520034b1b22034100480d0b0240024020040d002003102121050c010b200128020020042003102521050b2005450d0320012005360200200141046a2003360200200141086a28020021040b200141086a2206200441016a36020041002103200520046a41003a000002400240024002400240024002400240024020002d00010e080700010203040506070b200241013a000f410121030c070b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b200241073a000f02400240200141046a28020020062802002204460d00200128020021030c010b200441016a22032004490d0d200441017422052003200520034b1b22054100480d0d0240024020040d002005102121030c010b200128020020042005102521030b2003450d0620012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41073a000020002d000221030b200220033a000f0b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0b200441017422052000200520004b1b22054100480d0b0240024020040d002005102121000c010b200128020020042005102521000b2000450d0520012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000c010b0240024020032004460d00200128020021030c010b200441016a22032004490d0a200441017422052003200520034b1b22054100480d0a0240024020040d002005102121030c010b200128020020042005102521030b2003450d0520012003360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200320046a41013a000020002d0001220441024b0d0002400240024020040e03000102000b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0c200441017422032000200320004b1b22034100480d0c0240024020040d002003102121000c010b200128020020042003102521000b2000450d0820012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41003a00000c020b02400240200141046a280200200141086a2802002204460d00200128020021000c010b200441016a22002004490d0b200441017422032000200320004b1b22034100480d0b0240024020040d002003102121000c010b200128020020042003102521000b2000450d0820012000360200200141046a2003360200200141086a28020021040b200141086a200441016a360200200020046a41013a00000c010b02400240200141046a280200200141086a2802002204460d00200128020021030c010b200441016a22032004490d0a200441017422052003200520034b1b22054100480d0a0240024020040d002005102121030c010b200128020020042005102521030b2003450d0820012003360200200141046a2005360200200141086a28020021040b200141086a2205200441016a360200200320046a41023a000020002d0002210302400240200141046a28020020052802002204460d00200128020021000c010b200441016a22002004490d0a200441017422052000200520004b1b22054100480d0a0240024020040d002005102121000c010b200128020020042005102521000b2000450d0920012000360200200141046a2005360200200141086a28020021040b200141086a200441016a360200200020046a20033a00000b200241106a24000f0b200341011030000b200541011030000b200541011030000b200541011030000b200341011030000b200341011030000b200541011030000b200541011030000b102a000b901307077f017e017f027e067f017e067f23004190026b22022400200241186a41d4bcc0004110108f01200228021c21030240200228021822044101470d0041d4bcc000ad428080808080028410050b200241206a41186a22054200370300200241206a41106a22064200370300200241206a41086a2207420037030020024200370320200241b0016a41086a220841c4fbc400ad4280808080e0008422091003220a41086a2900003703002002200a2900003703b001200a102320072008290300370300200220022903b00137032020084188cec000ad4280808080e00184220b1003220a41086a2900003703002002200a2900003703b001200a1023200620022903b001220c370300200241d0016a41086a220d2007290300370300200241d0016a41106a220a200c370300200241d0016a41186a220e20082903003703002002200c37039001200220022903203703d00120022003410020041b360220200241d0016aad4280808080800484200241206aad4280808080c0008410022005420037030020064200370300200742003703002002420037032020024190016a41086a220f20091003220341086a2900003703002002200329000037039001200310232007200f2903003703002002200229039001370320200f41f9bcc000ad4280808080e000841003220341086a2900003703002002200329000037039001200310232006200229039001220c370300200d2007290300370300200a200c370300200e200f2903003703002002200c3703b001200220022903203703d001200241106a200241d0016a4120108f012002280214410020022802101b1090022005420037030020064200370300200742003703002002420037032020024180026a41086a221020091003220341086a290000370300200220032900003703800220031023200720102903003703002002200229038002220c3703f0012002200c3703202010200b1003220341086a2900003703002002200329000037038002200310232006200229038002220c370300200d2007290300370300200a200c370300200e20102903003703002002200c3703f001200220022903203703d001200241086a200241d0016a4120108f01024002400240024002400240200228020c410020022802081b22110d0041042112410021110c010b2011ad420c7e220c422088a70d03200ca7220a4100480d03200a10212212450d0420024180026aad4280808080c00084210b4100210341c4fbc400ad4280808080e00084211320122104034020024180026a41086a220a20131003221441086a290000370300200220142900003703800220141023200241b0016a41086a2215200a29030037030020022002290380023703b001200a41f4cec000ad4280808080d001841003221441086a29000037030020022014290000370380022014102320024190016a41086a2214200a2903003703002002200229038002370390012002200336028002200241206a41186a2216200b1001220a41186a290000370300200241206a41106a2217200a41106a290000370300200241206a41086a2218200a41086a2900003703002002200a290000370320200a1023200241d0016a41186a22192016290300370300200241d0016a41106a22162017290300370300200241d0016a41086a22172018290300370300200220022903203703d00141c0001021220a450d02200341016a2103200a20022903b001370000200a41086a2015290300370000200a200229039001370010200a41186a2014290300370000200a20022903d001370020200a41286a2017290300370000200a41306a2016290300370000200a41386a2019290300370000200241206a200a41c00010c001024020022802202214450d00200aad428080808080088410050b2002290224210c200a1023200441046a200c420020141b37020020042014410120141b3602002004410c6a210420112003470d000b0b20022011360228200220113602242002201236022020024190016a200241206a108404200241b0016a41186a20024190016a41186a290300370300200241b0016a41106a20024190016a41106a2903003703002008200f29030037030020022002290390013703b00120054200370300200241206a41106a220a42003703002007420037030020024200370320201020091003220341086a290000370300200220032900003703800220031023200720102903003703002002200229038002220c3703f0012002200c37032020104189bdc000ad4280808080e001841003220341086a290000370300200220032900003703800220031023200241f0016a41086a2010290300220c3703002002200229038002220b3703f0012006200b370000200641086a200c370000200d2007290300370300200241d0016a41106a200a290300370300200e2005290300370300200220022903203703d001200241203602242002200241d0016a360220200241b0016a200241206a10b103200241206a109b01200241003602b801200242013703b0012002200241b0016a3602d001200a200241d0016a106b200241206a200241b0016a10af012002200241b0016a3602d001200241d0006a200241d0016a106b2002200241b0016a3602d001200241f0006a200241d0016a106b200228022421042002412c6a280200220a200241b0016a105c0240200a450d00200a41246c21160340200241d0016a200410b00120022802d00121150240024020022802b401221420022802b801220a6b20022802d8012203490d0020022802b00121140c010b200a20036a2217200a490d052014410174220a2017200a20174b1b220a4100480d050240024020140d00200a102121140c010b20022802b0012014200a102521140b2014450d042002200a3602b401200220143602b00120022802b801210a0b2002200a20036a3602b8012014200a6a2015200310dc041a024020022802d401450d00201510230b200441246a21042016415c6a22160d000b0b20023502b801422086210c20023502b001210b0240200228022c2203450d002002280224210a200341246c2103034002400240200a2d0000220441034b0d0002400240024020040e0404000102040b200a410c6a280200450d03200a41086a28020010230c030b200a410c6a280200450d02200a41086a28020010230c020b200a410c6a280200450d01200a41086a28020010230c010b200a41086a280200450d00200a41046a28020010230b200a41246a210a2003415c6a22030d000b0b200c200b84210c0240200241286a280200450d00200228022410230b20024190026a2400200c0f0b41c00041011030000b200a41011030000b102a000b200a41041030000ba41305017f017e027f017e077f230041f0026b22022400024002402001450d00200220003602180c010b200241013602180b2002200136021c200241106a200241186a106e024020022802100d00200228021421012002200241186a3602d001200241003a00e002200242003702fc01200241d8a7c3003602f80120022001360234200241003602302002200241e0026a36023c2002200241d0016a360238200241306a200241f8016a10bd0220022802f801210120022902fc012103024020022d00e002450d0020012003a72003422088a710b4010c010b2001450d002002200337022420022001360220200241306a200241206a1068024002400240024002400240024020022802304101460d00200241306a41086a22002903002103200241306a41186a4200370300200241306a41106a220442003703002000420037030020024200370330200241d0016a41086a220141be99c600ad42808080809001841003220541086a290000370300200220052900003703d0012005102320002001290300370300200220022903d001370330200141f0cec400ad428080808030841003220541086a290000370300200220052900003703d00120051023200420022903d0012206370300200241f8016a41086a2000290300370300200241f8016a41106a2006370300200241f8016a41186a2001290300370300200220063703e002200220022903303703f8012002200241f8016a109c02200229030821062002280200210041c80210212207450d012007200241f8016a41e80010dc04220842023703682008410236029801200820022903d001370370200841f8006a200129030037030020084180016a200241d0016a41106a29030037030020084188016a200241d0016a41186a29030037030020084190016a200241f0016a29030037030020082003200642b8177c42b81720001b220620032006561b3703a001200841a8016a200241306a41a00110dc041a200241206a210120022802242109024003402001280200220a41086a2100200a2f0106220b4103742101410021050240024003402001450d01419ea3c5002000410810de04220c450d02200141786a2101200541016a2105200041086a2100200c417f4a0d000b2005417f6a210b0b024020090d004101210d0c030b2009417f6a2109200a200b4102746a41e4016a21010c010b0b4101210d200a41e0006a2005410c6c6a22012802084104490d0020012802002800002109200241306a41186a220c4200370300200241306a41106a220a4200370300200241306a41086a2200420037030020024200370330200241d0016a41086a220141be99c600ad42808080809001841003220541086a290000370300200220052900003703d0012005102320002001290300370300200220022903d001370330200141cd99c600ad4280808080b001841003220541086a290000370300200220052900003703d00120051023200241e0026a41086a20012903002203370300200220022903d00122063703e00220042006370000200441086a2003370000200241f8016a41086a2000290300370300200241f8016a41106a200a290300370300200241f8016a41186a200c290300370300200220022903303703f801200241306a200241f8016a10950220022802302201410420011b21054100210002402002290234420020011b2203422088a72201417f6a220c20014b0d00200c20014f0d002005200c4102746a2201450d00200128020020094721000b02402003a7450d00200510230b2000450d00200841c80241900510252207450d03200741c8026a200241f8016a41e80010dc041a200742023703b003200720093602e403200741093602e003200720022903d0013703b803200741c0036a200241d8016a290300370300200741c8036a200241e0016a290300370300200741d0036a200241e8016a290300370300200741d8036a200241f0016a290300370300200741f0036a200241306a41a00110dc041a4102210d0b200241206a21012002280224210a024003402001280200220841086a210020082f01062209410374210141002105024003402001450d0141e4bcc1002000410810de04220c450d03200141786a2101200541016a2105200041086a2100200c417f4a0d000b2005417f6a21090b0240200a450d00200a417f6a210a200820094102746a41e4016a21010c010b0b4191bdc100412a104a000b200220082005410c6c6a220141e8006a2802003602fc012002200141e0006a2802003602f801200241306a200241f8016a107f2002280230220c450d03200229023421032007200d41c8026c2200200d4101742201200d41016a2205200120054b1b41c8026c220110252204450d04200420006a200241f8016a41e80010dc0422014202370368200120022903d001370370200141f8006a200241d8016a29030037030020014180016a200241e0016a29030037030020014188016a200241e8016a29030037030020014190016a200241f0016a290300370300200141a0016a20033703002001419c016a200c3602002001411436029801200141a8016a200241306a41a00110dc041a20022802202002280224200228022810b4012002410036028002200242013703f8012005200241f8016a105c200041c8026a210720022802fc01210a2002280280022101200421050340200220053602d001200241306a200241d0016a10b8032002280230210902400240200a20016b20022802382208490d00200120086a210020022802f801210c0c010b200120086a22002001490d08200a410174220c2000200c20004b1b220b4100480d0802400240200a0d00200b1021210c0c010b20022802f801200a200b1025210c0b200c450d072002200b3602fc012002200c3602f801200b210a0b2002200036028002200c20016a2009200810dc041a02402002280234450d00200910230b200541c8026a210520002101200741b87d6a22070d000b20044198016a2101200d41c8026c41c8026a21052000ad422086200cad8421030340200110db01200141c8026a2101200541b87d6a22050d000b20041023200241f0026a240020030f0b200220022902343703f80141a9cfc4004128200241f8016a41f4cec4001031000b41c80241081030000b41900541081030000b2002412936023420024194bec60036023041ecbcc1004125200241306a41d4bcc1001031000b200141081030000b200b41011030000b102a000b20024184026a4104360200200241c4006a410236020020024202370234200241f89fc500360230200241043602fc01200241aca1c5003602f801200241003602d401200241c4b8c6003602d0012002200241f8016a3602402002200241d0016a36028002200241306a4188a0c5001038000be82c06077f017e0b7f027e017f037e230041c0026b22022400024002402001450d00200220003602200c010b200241013602200b20022001360224200241d8006a200241206a10e1020240024002400240200228025c2203450d00200241d0016a2802002104200241cc016a2802002105200241c8016a2802002106200241d8006a410c6a280200210720022802602108200241186a200241206a106e20022802180d02200228021c21012002200241206a360248200241003a0038200242003702e401200241d8a7c3003602e0012002200136025c200241003602582002200241386a3602642002200241c8006a360260200241d8006a200241e0016a10bd0220022802e001210120022902e401210920022d0038450d0120012009a72009422088a710b4010c020b200241d4006a4104360200200241f4016a4102360200200242023702e401200241f89fc5003602e0012002410436024c200241c8a1c5003602482002410036023c200241c4b8c6003602382002200241c8006a3602f0012002200241386a360250200241e0016a4188a0c5001038000b20010d010b200241e0016a410c6a4104360200200241ec006a41023602002002420237025c200241f89fc500360258200241043602e401200241c8a1c5003602e0012002410036024c200241c4b8c6003602482002200241e0016a3602682002200241c8006a3602e801200241d8006a4188a0c5001038000b2002200937022c20022001360228200241013b01442002420037023c200241d8a7c300360238200241386a41086a210a024002400240024002402004450d002006200441c8026c6a210b200241e0016a410272210c200241d8006a41106a210d2006210e024002400240024002400240024002400340200e41e8006a2903004202520d0902400240200e28029801410247220f0d00200e2903a0012109200241286a2101200228022c2110024002400240024002400240024002400240024002400240024002400240024003402001280200221141086a210020112f010622124103742101410021130240024003402001450d01418cbec6002000410810de042214450d02200141786a2101201341016a2113200041086a21002014417f4a0d000b2013417f6a21120b2010450d022010417f6a2110201120124102746a41e4016a21010c010b0b201141e0006a2013410c6c6a220128020841074b0d014194bec6002112201542808080807083422984a721100c020b41bdbec6002112201542808080807083421c84a721100c010b200942f02e8020012802002900002215510d0141a0c6c3002112413121100b0240024020022d0045450d00413121014185acc50021000c010b2002280238200228023c200228024010b4012002420037023c200241d8a7c300360238200242e2c289abb68edbb7f40037034841002101200241e0016a410272410041da0010db041a200241d8006a410041840110db041a41e40110212214450d0220144100360200201441046a200241e0016a41dc0010dc041a201441e0006a200241d8006a41840110dc041a2002410036023c2002201436023820142f0106220e4103742111417f2100024002400340024020112001470d00200e21000c020b200241c8006a201420016a41086a410810de042213450d02200141086a2101200041016a21002013417f4a0d000b0b200242e2c289abb68edbb7f40037026c2002200a360268200220003602642002201436025c200241003602582002200241386a360260201041046a2200417f4c0d04024002402000450d00200010212201450d07200241003602bc02200220013602e0012010413f4b0d01200120104102743a0000410121130c190b200241003602bc0241012100200241013602e001410110212201450d07200141033a0000200241013602bc02200220013602e001410521130c130b201041808001490d162010418080808004490d150c100b412d210141d8abc50021000b2002200136025c2002200036025841a5abc5004122200241d8006a41c8abc5001031000b200f0d0c200e2903a0012116200241d8006a200241286a10680240024020022802584101470d0020023502602109200228025c21174101210f0c010b20022903602109200241d8006a41186a22144200370300200d4200370300200241d8006a41086a2200420037030020024200370358200241e0016a41086a220141be99c600ad42808080809001841003221341086a290000370300200220132900003703e0012013102320002001290300370300200220022903e001370358200141f0cec400ad428080808030841003221341086a290000370300200220132900003703e00120131023200241c8006a41086a20012903002218370300200220022903e0012219370348200d2019370000200d41086a201837000020012000290300370300200241e0016a41106a200d290300370300200241e0016a41186a2014290300370300200220022903583703e001200241086a200241e0016a109c0202402016200942b0ea017c560d004100210f2016200229031042b8177c42b81720022802081b2209540d010c0e0b201a4280808080708342258421094101210f4184cfc40021170b024020022d0045450d00413121014185acc50021000c070b0240200f450d002002280238200228023c200228024010b4012002420037023c200241d8a7c300360238200242f4d2b59bc7ae98b8303703480c050b20022802382111200242f4d2b59bc7ae98b830370348201141d8a7c300460d04200228023c21100c050b41e40141041030000b102f000b200041011030000b410141011030000b200c410041da0010db041a200241d8006a410041840110db041a41e40110212211450d024100211020114100360200201141046a200241e0016a41dc0010dc041a201141e0006a200241d8006a41840110dc041a2002410036023c200220113602380b02400340201141086a210020112f01062212410374210141002113024003402001450d01200241c8006a2000410810de042214450d03200141786a2101201341016a2113200041086a21002014417f4a0d000b2013417f6a21120b02402010450d002010417f6a2110201120124102746a41e4016a28020021110c010b0b200242f4d2b59bc7ae98b83037026c2002200a360268200220123602642002201136025c200241003602582002200241386a360260200241003602e801200242013703e00141011021210102400240200f0d002001450d05200141003a000020024281808080103702e401200220013602e00120014101410910252201450d06200120093700012002428980808090013702e401200220013602e0010c010b2001450d06200141013a000020024281808080103702e401200220013602e0012009a72201200241e0016a105c0240024020022802e401221320022802e80122006b2001490d0020022802e00121130c010b200020016a22142000490d16201341017422112014201120144b1b22144100480d160240024020130d002014102121130c010b20022802e00120132014102521130b2013450d08200220143602e401200220133602e0010b2002200020016a3602e801201320006a2017200110dc041a0b200241c8006a41086a200241e0016a41086a280200360200200220022903e001370348200241d8006a200241c8006a10d2012002200f3a0045200241003a00442009211a200f450d07200241e0016a41086a200241386a41086a290300370300200220022903383703e0010c130b412d210141d8abc50021000b200220003602582002200136025c41a5abc5004122200241d8006a41c8abc5001031000b41e40141041030000b410141011030000b410941011030000b410141011030000b201441011030000b200e41c8026a220e200b470d010c0a0b0b200141033a0000200241013602bc022000417f6a41034b0d01200041017422134105201341054b1b22134100480d0a0b20012000201310252201450d01200220013602e001201321000b20012010360001410521130c030b201341011030000b02400240200041034b0d00200041017422134104201341044b1b22134100480d0820012000201310252201450d01200220013602e001201321000b20012010410274410272360000410421130c020b201341011030000b0240200041014b0d0020012000200041017422134102201341024b1b221310252201450d02200220013602e001201321000b41022113200120104102744101723b00000b200220133602bc0202400240200020136b2010490d00200021140c010b201320106a22142013490d05200041017422112014201120144b1b22144100480d0520012000201410252201450d02200220013602e0010b2002201320106a3602bc02200120136a2012201010dc041a2002201436024c200220022802e001360248200220022802bc02360250200241d8006a200241c8006a10d20120024180023b0144200241e0016a41086a200241386a41086a290300370300200220022903383703e0010c030b201341011030000b201441011030000b200241e0016a41086a200a290300370300200220022903383703e0010b2002280228200228022c200228023010b40102402007450d00200741246c21002003210103400240024020012d0000221341034b0d0002400240024020130e0404000102040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b02402008450d00200310230b02402004450d00200441c8026c210020064198016a21010340200110db01200141c8026a2101200041b87d6a22000d000b0b02402005450d00200610230b200241003602602002420137035820022d00ec012100410110212201450d022002410136025c20022002280260221341016a36026020022001360258200120136a20003a000020022d00ed01211302400240200228025c20022802602201460d00200228025821000c010b200141016a22002001490d01200141017422142000201420004b1b22144100480d010240024020010d002014102121000c010b200228025820012014102521000b2000450d022002201436025c20022000360258200228026021010b2002200141016a360260200020016a20133a000020022802e801200241d8006a105c20022802e00122132100024020022802e4012214450d002014210120132100034020002802e40121002001417f6a22010d000b0b0240024002400240024002400240024002400240024020022802e80122120d00410021010c010b200241e0016a210b41002114034002400240201420002f01064f0d0020002014410c6c6a41e0006a2111200020144103746a41086a2101201441016a21140c010b02400240200028020022010d00201642808080807083200bad84211641002113410021010c010b2000330104422086200bad842116410121130b201621152016210902402016422088a7220020012f0106490d0003402009221542ffffffff0f832109201341016a211320012f01042200200128020022012f01064f0d000b0b20012000410c6c6a2114200120004103746a2110200041027420016a41e8016a28020021002015a7210b02402013417f6a2201450d00034020002802e40121002001417f6a22010d000b0b201441e0006a2111201041086a2101410021140b20012d0000210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d032002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0001210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d042002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0002210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d052002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0003210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d062002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0004210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d072002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0005210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d082002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0006210e02400240200228025c20022802602213460d00200228025821100c010b201341016a22102013490d0c2013410174220f2010200f20104b1b220f4100480d0c0240024020130d00200f102121100c010b20022802582013200f102521100b2010450d092002200f36025c20022010360258200228026021130b2002201341016a360260201020136a200e3a000020012d0007211002400240200228025c20022802602201460d00200228025821130c010b200141016a22132001490d0c2001410174220e2013200e20134b1b220e4100480d0c0240024020010d00200e102121130c010b20022802582001200e102521130b2013450d0a2002200e36025c20022013360258200228026021010b2002200141016a360260201320016a20103a00002011280200211020112802082201200241d8006a105c02400240200228025c2211200228026022136b2001490d00200228025821110c010b201320016a220e2013490d0c20114101742213200e2013200e4b1b22134100480d0c0240024020110d002013102121110c010b200228025820112013102521110b2011450d0b2002201336025c20022011360258200228026021130b2002201320016a360260201120136a2010200110dc041a2012417f6a22120d000b20022802e801210120022802e401211420022802e00121130b200235025821092002350260211520132014200110b401200241c0026a240020092015422086840f0b200f41011030000b200f41011030000b200f41011030000b200f41011030000b200f41011030000b200f41011030000b200f41011030000b200e41011030000b201341011030000b102a000b201441011030000b410141011030000b5602017f027e230041306b2202240020024101410010ff0120024100360228200242013703202002200241206a36022c20022002412c6a106b2002350228210320023502202104200241306a240020042003422086840bfc4505077f027e027f047e067f230041d00e6b22022400024002402001450d00200220003602300c010b200241013602300b2002200136023420024188086a200241306a10e202024002400240024002400240024002400240024002400240024020022903f0084203510d00200241f0006a20024188086a41c80210dc041a200241b8036a200241f0006a41c80210dc041a2002200241b8036a3602800620024188086a20024180066a10b80320022802900821010240200228028c08450d0020022802880810230b20024188086a200241b8036a41c80210dc041a20024180066a20024188086a10f20241012100024020022d0080064101470d00200220022d0083063a003b200220022f0081063b0039200241013a00380c0c0b20024188086a20024180066a41086a41800210dc041a200241d00a6a200241d8086a220310f0030240024002400240024020022903a8084202520d00200241386a41206a22014200370300200241386a41186a22004280808080c000370300200241013a0060200242043703482002427f3703402002420037033820024180066a41206a2204420037030020024180066a41186a22054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241b80b6a200241386a20024180066a109004200241386a41286a2206200241b80b6a41286a2903003703002001200241b80b6a41206a2903003703002000200241b80b6a41186a290300370300200241386a41106a2207200241b80b6a41106a290300370300200241386a41086a2208200241b80b6a41086a290300370300200220022903b80b3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241e80b6a200241386a20024180066a1090042006200241e80b6a41286a2903003703002001200241e80b6a41206a2903003703002000200241e80b6a41186a2903003703002007200241e80b6a41106a2903003703002008200241e80b6a41086a290300370300200220022903e80b3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241980c6a200241386a20024180066a1090042006200241980c6a41286a2903003703002001200241980c6a41206a2903003703002000200241980c6a41186a2903003703002007200241980c6a41106a2903003703002008200241980c6a41086a290300370300200220022903980c3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241c80c6a200241386a20024180066a1090042006200241c80c6a41286a2903003703002001200241c80c6a41206a2903003703002000200241c80c6a41186a2903003703002007200241c80c6a41106a2903003703002008200241c80c6a41086a290300370300200220022903c80c3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241800d6a200241386a20024180066a1090042006200241800d6a41286a2903003703002001200241800d6a41206a2903003703002000200241800d6a41186a2903003703002007200241800d6a41106a2903003703002008200241800d6a41086a290300370300200220022903800d3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241b00d6a200241386a20024180066a1090042006200241b00d6a41286a2903003703002001200241b00d6a41206a2903003703002000200241b00d6a41186a2903003703002007200241b00d6a41106a2903003703002008200241b00d6a41086a290300370300200220022903b00d3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241e00d6a200241386a20024180066a1090042006200241e00d6a41286a2903003703002001200241e00d6a41206a2903003703002000200241e00d6a41186a2903003703002007200241e00d6a41106a2903003703002008200241e00d6a41086a290300370300200220022903e00d3703382004420037030020054280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241900e6a200241386a20024180066a109004200241940b6a2200200241900e6a41086a290300370200200220022903900e37028c0b200241a40e6a2802002107200241900e6a41186a2802002101200241900e6a41206a2802002108200241b40e6a280200210420022802a00e210520022802ac0e210620022903b80e2109200241d80a6a41086a20002902003703002002200229028c0b3703d80a20022802d80841756a220041084b0d0120000e09020101010101010103020b20022903d00a210a200241900e6a41206a4200370300200241900e6a41186a22044280808080c000370300200241013a00b80e200242043703a00e427f21092002427f3703980e200242003703900e024020022802d808220041174b0d004101200074419080800671450d00200241023a003b200241800e3b0039200241013a00380c0f0b20024180066a41206a2205420037030020024180066a41186a22004280808080c000370300200220022800e00d3602b00d2002200241e30d6a2800003600b30d200241ac066a20022800b30d360000200241013a00a80620024204370390062002427f370388062002420037038006200220022802b00d3600a906200241d80a6a200241900e6a20024180066a109004200241386a41286a2206200241d80a6a41286a290300370300200241386a41206a2207200241d80a6a41206a290300370300200241386a41186a2208200241d80a6a41186a290300370300200241386a41106a220b200241d80a6a41106a290300370300200241386a41086a220c200241d80a6a41086a290300370300200220022903d80a3703382005420037030020004280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241880b6a200241386a20024180066a1090042006200241880b6a41286a2903003703002007200241880b6a41206a2903003703002008200241880b6a41186a290300370300200b200241880b6a41106a290300370300200c200241880b6a41086a290300370300200220022903880b3703382005420037030020004280808080c000370300200241013a00a80620024204370390062002427f370388062002420037038006200241b80b6a200241386a20024180066a1090042006200241b80b6a41286a2903003703002007200241b80b6a41206a2903003703002008200241b80b6a41186a290300370300200b200241b80b6a41106a290300370300200c200241b80b6a41086a290300370300200220022903b80b3703382000420037030020024180066a41106a2207420037030020024180066a41086a220542003703002002420037038006200241c00e6a41086a220041c4fbc400ad4280808080e00084220d1003220641086a290000370300200220062900003703c00e2006102320052000290300370300200220022903c00e37038006200041f9bcc000ad4280808080e000841003220641086a290000370300200220062900003703c00e20061023200720022903c00e220e370300200241900e6a41086a22062005290300370300200241900e6a41106a2205200e370300200420002903003703002002200e3703e00d20022002290380063703900e200241286a200241900e6a4120108f01200228022c410020022802281bad210e024020022903a8084201520d0020022903b00822094200510d06200e200241b8086a290300220f200f200e541b221020097c2010200f7d2009827d21090b20024180066a41206a420037030020024180066a41186a4280808080c000370300200241013a00a80620024204370390062002420037038006200242002009200e7d220e200e2009561b37038806200241e80b6a200241386a20024180066a109004200241900e6a41286a200241e80b6a41286a290300370300200241900e6a41206a200241e80b6a41206a290300370300200241900e6a41186a200241e80b6a41186a2903003703002005200241e80b6a41106a2903003703002006200241e80b6a41086a290300370300200220022903e80b3703900e2000200d1003220441086a290000370300200220042900003703c00e20041023200241b00d6a41086a2000290300370300200220022903c00e3703b00d200041e4bcc000ad4280808080c001841003220441086a290000370300200220042900003703c00e20041023200241800d6a41086a2000290300370300200220022903c00e3703800d200241e00d6a20024188086a10ac0141c00010212200450d06200020022903b00d370000200020022903800d370010200020022900e00d370020200041086a200241b00d6a41086a290300370000200041186a200241800d6a41086a290300370000200041286a200241e00d6a41086a290000370000200041306a200241f00d6a290000370000200041386a200241e00d6a41186a290000370000200241206a200041c000108f012002280224210420022802202105200010230240024020022802d00822002004410020051b2208490d00410c10212205450d09410410212204450d0a2002420437023c2002200436023820024188086a200241386a107102400240200228023c2206200228024022046b4104490d00200228023821070c010b200441046a22072004490d13200641017422042007200420074b1b22044100480d130240024020060d002004102121070c010b200228023820062004102521070b2007450d0c2002200436023c20022007360238200228024021040b410421062002200441046a360240200720046a2000360000200241e00d6a41086a2204200228024022073602002002200229033822093703e00d200541086a200736020020052009370200410021070240200820004f0d00410c10212206450d0d410410212207450d0e2002420437023c2002200736023820024188086a200241386a107102400240200228023c2208200228024022076b4104490d00200228023821080c010b200741046a220b2007490d1420084101742207200b2007200b4b1b22074100480d140240024020080d002007102121080c010b200228023820082007102521080b2008450d102002200736023c20022008360238200228024021070b2002200741046a360240200820076a2000417f6a360000200241e00d6a41086a200228024022003602002002200229033822093703e00d200641086a200036020020062009370200410121070b20024180066a41206a42818080801037030020024180066a41186a200736020020024194066a2007360200200241ac066a200241cb0c6a280000360000200241013a00a8062002200536029c0620022006360290062002427f37038806200220022800c80c3600a9062002200a42ffffffff0f8337038006200241980c6a200241900e6a20024180066a109004200241900e6a41286a200241980c6a41286a290300370300200241900e6a41206a200241980c6a41206a290300370300200241900e6a41186a2207200241980c6a41186a290300370300200241900e6a41106a200241980c6a41106a290300370300200241900e6a41086a200241980c6a41086a290300370300200220022903980c3703900e200241e00d6a41186a22084200370300200241e00d6a41106a2205420037030020044200370300200242003703e00d200241800d6a41086a220641c4fbc400ad4280808080e00084220e1003220041086a290000370300200220002900003703800d2000102320042006290300370300200220022903800d3703e00d200241c00e6a41086a220641c4cec000ad42808080808002841003220041086a290000370300200220002900003703c00e20001023200520022903c00e2209370300200241386a41086a2004290300370300200241386a41106a22002009370300200241386a41186a220b2006290300370300200220093703b00d200220022903e00d370338200241186a200241386a4120108f010240417f200228021c410020022802181b220420016a220620062004491b4280808080f28ba80942808080c0f588fe06200a422088a7221141ff017122061b22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76a4b0d00200b420037030020004200370300200241386a41086a220b420037030020024200370338200241800d6a41086a2204200e1003220c41086a2900003703002002200c2900003703800d200c1023200b2004290300370300200220022903800d370338200441a0cec000ad4280808080b002841003220c41086a2900003703002002200c2900003703800d200c1023200020022903800d2209370300200241e00d6a41086a200b2903003703002005200937030020082004290300370300200220093703b00d200220022903383703e00d200241106a200241e00d6a4120108f01417f2002280214410020022802101b2205418094ebdc034180afd0e50220061b2200200aa7220420002004491b6a220620062005491b20004d0d020b200241003a003b200241800c3b0039200241013a003820022802a00e2104024020072802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b0240200241a40e6a280200450d00200410230b20022802ac0e21040240200241b40e6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b200241b00e6a280200450d10200410230c100b200241003a003b20024180063b0039200241013a003820022802a00e21040240200241a80e6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b0240200241a40e6a280200450d00200410230b20022802ac0e21040240200241b40e6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b200241b00e6a280200450d0f200410230c0f0b20024180066a41206a2200420037030020024180066a41186a22054280808080c000370300200241ac066a2206200241f90c6a41036a2800003600002002420437039006200220022800f90c3600a906200241013a00a8062002427f370388062002427f200a42ffffffff0f83201141ff01714101461b37038006200241c80c6a200241900e6a20024180066a109004200241900e6a41286a200241c80c6a41286a290300370300200241900e6a41206a200241c80c6a41206a290300370300200241900e6a41186a2207200241c80c6a41186a290300370300200241900e6a41106a200241c80c6a41106a290300370300200241900e6a41086a200241c80c6a41086a290300370300200220022903c80c3703900e200220012004200a422888a720022903c0082209200241c8086a290300220a108603200241e00d6a20024188086a2002290300220e200241086a290300220d410141112009200a84501b4100108802024020022802e00d4101470d00200241003a003b20024180023b0039200241013a003820022802a00e2104024020072802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b0240200241a40e6a280200450d00200410230b20022802ac0e21040240200241b40e6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b200241b00e6a280200450d0f200410230c0f0b20022903e80d200241e00d6a41106a22012903001091042000420037030020054280808080c0003703002006200241b00d6a41036a2800003600002002420437039006200220022800b00d3600a9062002427f370388062002200e427f200d501b37038006200241013a00a806200241800d6a200241900e6a20024180066a109004200241e00d6a41286a200241800d6a41286a290300370300200241e00d6a41206a200241800d6a41206a290300370300200241e00d6a41186a200241800d6a41186a2903003703002001200241800d6a41106a290300370300200241e00d6a41086a200241800d6a41086a290300370300200220022903800d3703e00d20024180066a200310a502024020022d0080064101470d00200220022d0083063a003b200220022f0081063b0039200241013a003820022802f00d21040240200241f80d6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b0240200241f40d6a280200450d00200410230b20022802fc0d21040240200241840e6a2802002201450d002001410c6c21002004210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b200241800e6a280200450d0f200410230c0f0b200241900e6a41286a20024180066a41306a290300370300200241900e6a41206a20024180066a41286a290300370300200241900e6a41186a20024180066a41206a290300370300200241900e6a41106a20024180066a41186a290300370300200241900e6a41086a20024180066a41106a29030037030020022002290388063703900e200241b00d6a200241e00d6a200241900e6a109004200241386a41086a20022903b00d370300200241386a41106a200241b00d6a41086a290300370300200241386a41186a200241b00d6a41106a290300370300200241386a41206a200241b00d6a41186a290300370300200241386a41286a200241b00d6a41206a290300370300200241386a41306a200241b00d6a41286a290300370300200241003a00380c0e0b200241003a008306418102210020024181023b008106200241013a0080060c0c0b20024180066a200241dc086a10ba010c010b20024180066a200241e0086a10b3030b024020022d0080064101470d0020022f00810620022d0083064110747221000c0a0b200241b00d6a41286a220020024180066a41306a290300370300200241b00d6a41206a220b20024180066a41286a220c290300370300200241b00d6a41186a221120024180066a41206a2212290300370300200241b00d6a41106a221320024180066a41186a2214290300370300200241b00d6a41086a221520024180066a41106a221629030037030020022002290388063703b00d200241900e6a41086a200241d80a6a41086a290300370300200241b40e6a2004360200200241900e6a41206a2008360200200241900e6a41186a2001360200200241a40e6a2007360200200220022903d80a3703900e200220093703b80e200220063602ac0e200220053602a00e200c20002903003703002012200b290300370300201420112903003703002016201329030037030020024180066a41086a2015290300370300200220022903b00d37038006200241e00d6a200241900e6a20024180066a109004200241386a41086a20022903e00d370300200241386a41106a200241e00d6a41086a290300370300200241386a41186a200241e00d6a41106a290300370300200241386a41206a200241e00d6a41186a290300370300200241386a41286a200241e00d6a41206a290300370300200241386a41306a200241e00d6a41286a290300370300200241003a00380c0a0b200241fc006a4104360200200241cc036a4102360200200242023702bc03200241f89fc5003602b80320024104360274200241e0a1c5003602702002410036028406200241c4b8c600360280062002200241f0006a3602c803200220024180066a360278200241b8036a4188a0c5001038000b41e8b8c600102b000b41c00041011030000b410c41041030000b410441011030000b200441011030000b410c41041030000b410441011030000b200741011030000b200241013a0038200220003b0039200220004110763a003b02402001450d002001410c6c21002005210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b02402007450d00200510230b02402004450d002004410c6c21002006210103400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b2008450d00200610230b200310db0120022d003821000b024002400240024002400240410110212201450d002002420137028c08200220013602880802400240200041ff01714101460d002002410136029008200141003a0000200241c0006a29030021090240200228028c082200417f6a41074b0d00200041017422044109200441094b1b22044100480d0920012000200410252201450d042002200436028c0820022001360288080b200241093602900820012009370001200241d0006a2802002100200241d8006a280200220120024188086a105c02402001450d0020002001410c6c6a2108034020002802002106200041086a280200220120024188086a105c02400240200228028c08220520022802900822046b2001490d0020022802880821050c010b200420016a22072004490d0b200541017422032007200320074b1b22074100480d0b0240024020050d002007102121050c010b20022802880820052007102521050b2005450d072002200736028c0820022005360288080b2002200420016a36029008200520046a2006200110dc041a2000410c6a22002008470d000b0b200241dc006a2802002100200241e4006a280200220120024188086a105c0240024020010d00200228028c08210620022802900821080c010b20002001410c6c6a2103034020002802002107200041086a280200220120024188086a105c02400240200228028c08220620022802900822046b2001490d0020022802880821050c010b200420016a22052004490d0b200641017422082005200820054b1b22084100480d0b0240024020060d002008102121050c010b20022802880820062008102521050b2005450d082002200836028c082002200536028808200821060b2002200420016a220836029008200520046a2007200110dc041a2000410c6a22002003470d000b0b200241c8006a290300210902400240200620086b4108490d0020022802880821010c010b200841086a22012008490d09200641017422002001200020014b1b22004100480d090240024020060d002000102121010c010b20022802880820062000102521010b2001450d072002200036028c0820022001360288080b2002200841086a36029008200120086a2009370000200241e8006a2d000021050240200228028c082002280290082200470d00200041016a22042000490d09200041017422062004200620044b1b22044100480d090240024020000d002004102121010c010b200120002004102521010b2001450d082002200436028c0820022001360288080b2002200041016a220436029008200120006a20053a00000c010b2002410136029008200141013a0000200241386a41017220024188086a108a04200228029008210420022802880821010b2004ad4220862001ad842109024020022d00380d000240200241d8006a2802002200450d00200241d0006a28020021012000410c6c210003400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b0240200241d4006a280200450d00200228025010230b0240200241e4006a2802002200450d00200241dc006a28020021012000410c6c210003400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b200241e0006a280200450d00200228025c10230b200241d00e6a240020090f0b410141011030000b200441011030000b200741011030000b200841011030000b200041011030000b200441011030000b102a000bd40505017f027e077f017e017f230041206b220324002002290300210420012903002105200141106a2106200228021021070240024002400240024002400240200141146a2802002208200141186a28020022096b200241186a280200220a490d00200628020021080c010b2009200a6a220b2009490d032008410174220c200b200c200b4b1b220bad420c7e220d422088a70d03200da7220c4100480d030240024020080d00200c102121080c010b20062802002008410c6c200c102521080b2008450d0120012008360210200141146a200b3602000b20082009410c6c6a2007200a410c6c10dc041a200141186a2009200a6a36020020024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b02400240200141206a2802002208200141246a28020022096b200241246a280200220a490d00200628020021080c010b2009200a6a220c2009490d032008410174220e200c200e200c4b1b220cad420c7e220d422088a70d03200da7220e4100480d030240024020080d00200e102121080c010b20062802002008410c6c200e102521080b2008450d022001200836021c200141206a200c3602000b427f200520047c220420042005541b210520082009410c6c6a200b200a410c6c10dc041a200141246a2009200a6a36020020024100360224200341106a41086a200641086a28020036020020032006290200370310200229030822042001290308220d200d2004561b210420012d0028450d034101210120022d0028450d030c040b200c41041030000b200e41041030000b102a000b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a280200450d00200710230b0240200241206a280200450d00200b10230b200341206a24000bb30c06017f027e057f017e037f017e230041f0016b22022400200241f8006a20002001108703200241f8006a41106a290300210020022903800121010240024020022903782203a7450d00200241c0006a200142004204420010e104200241306a420042002001420010e104200241d0006a2002290340200241c0006a41086a2903002203200042028620022903307c7c22044205420010e20442b3e6cc99b3e6cc99332002290350200042ffffffffffffffff3f8320005220022903384200527220042003547222051b220320012001200356200042b3e6cc99b3e6cc9933200241d0006a41086a29030020051b22035620002003511b22051b22042003200020051b220310c902200241e0006a200120047d200020037d2001200454ad7d108703200241e0006a41106a290300210120022903682100024020022903602203a7450d00200241b0016a10d502200241b0016a2000200110da020c020b2003500d01200241b0016a41186a22064200370300200241b0016a41106a22074200370300200241b0016a41086a22084200370300200242003703b001200241e0016a41086a220541d5fbc400ad428080808080018422041003220941086a290000370300200220092900003703e0012009102320082005290300370300200220022903e00122033703d001200220033703b001200541d6a0c200ad4280808080d00184220a1003220941086a290000370300200220092900003703e00120091023200720022903e001220337030020024190016a41086a220b200829030037030020024190016a41106a220c200337030020024190016a41186a220d2005290300370300200220033703d001200220022903b00137039001200241186a20024190016a4120108902200241186a41106a29030021032002290320210e20022802182109200642003703002007420037030020084200370300200242003703b001200520041003220741086a290000370300200220072900003703e0012007102320082005290300370300200220022903e00122043703d001200220043703b0012005200a1003220741086a290000370300200220072900003703e00120071023200620052903002204370300200b2008290300370300200c20022903e001220a370300200d20043703002002200a3703d001200220022903b00137039001200242002003420020091b220320017d200e420020091b2201200054ad7d2204200120007d2200200156200420035620042003511b22051b3703b80120024200200020051b3703b00120024190016aad4280808080800484200241b0016aad428080808080028410020c010b2003500d00200241b0016a41186a22064200370300200241b0016a41106a22074200370300200241b0016a41086a22084200370300200242003703b001200241e0016a41086a220541d5fbc400ad428080808080018422041003220941086a290000370300200220092900003703e0012009102320082005290300370300200220022903e00122033703d001200220033703b001200541d6a0c200ad4280808080d00184220a1003220941086a290000370300200220092900003703e00120091023200720022903e001220337030020024190016a41086a220b200829030037030020024190016a41106a220c200337030020024190016a41186a220d2005290300370300200220033703d001200220022903b00137039001200220024190016a4120108902200241106a29030021032002290308210e20022802002109200642003703002007420037030020084200370300200242003703b001200520041003220741086a290000370300200220072900003703e0012007102320082005290300370300200220022903e00122043703d001200220043703b0012005200a1003220741086a290000370300200220072900003703e00120071023200620052903002204370300200b2008290300370300200c20022903e001220a370300200d20043703002002200a3703d001200220022903b00137039001200242002003420020091b220320007d200e420020091b2200200154ad7d2204200020017d2201200056200420035620042003511b22051b3703b80120024200200120051b3703b00120024190016aad4280808080800484200241b0016aad428080808080028410020b200241f0016a24000bb53c07047f017e047f017e037f027e1a7f23004180046b2202240002400240024002400240024002400240024020014104490d0020002800002103410041002802ecbe462200410120001b3602ecbe460240200041014b0d000240024020000e020001000b410041f0adc0003602f4be46410041c4b8c6003602f0be46410041023602ecbe460c010b034041002802ecbe464101460d000b0b10104101470d05200241b0016a41186a4200370300200241b0016a41106a22044200370300200241b0016a41086a22014200370300200242003703b001200241206a41086a22004194fcc400ad42808080808001841003220541086a290000370300200220052900003703202005102320012000290300370300200220022903203703b00120004195dfc000ad42808080808001841003220541086a2900003703002002200529000037032020051023200420022903202206370300200241e0006a41086a2001290300370300200241e0006a41106a2006370300200241e0006a41186a2000290300370300200220063703a001200220022903b001370360200241106a200241e0006a4120108f01200228021421002002280210210141002105200241b0016a410041cce2c000ad4280808080e0038410111090012000410020011b21010240024020022802b00122000d00410121040c010b20022902b4012206422088a72205450d0320002d0000220441014b0d032005417f6a2105410021070240024020040e020100010b410121070b20054104490d032000280001210502400240024020070d0020052003460d0141002104200520034f0d02410121040c020b4101210420052001490d010b410021040b200021050b200120034f0d012004450d010240410110212200450d00200041003a0000024020004101410510252200450d00200020033600012002200536026020022006370264200241b0016a200241e0006a10840220022802b4012101410041cce2c000ad4280808080e0038420023502b80142208620022802b0012207ad842000ad4280808080d000841012210402402001450d00200710230b02402005450d002006a7450d00200510230b200010234101210820044101470d0720022003360218200241b0016a41186a4200370300200241b0016a41106a22094200370300200241b0016a41086a22014200370300200242003703b001200241206a41086a22004194fcc400ad42808080808001841003220541086a290000370300200220052900003703202005102320012000290300370300200220022903203703b0012000419ddfc000ad4280808080c000841003220541086a2900003703002002200529000037032020051023200920022903202206370300200241e0006a41086a2001290300370300200241e0006a41106a2006370300200241e0006a41186a2000290300370300200220063703a001200220022903b001370360200241b0016a200241e0006a10bc0120022802b001210a20022902b401210b200241b0016a41e9dabdf30610930420022802b001210320022802b40121070240024002400240024020022802b80122010d004100210c4100210d0c010b20014105742200410575220c41ffffff3f71200c470d0e20004100480d0e200010212208450d01200320006a210e20014105742104410021000340200320006a22012900002106200141086a290000210f200141106a2900002110200820006a220541186a200141186a290000370000200541106a2010370000200541086a200f370000200520063700002004200041206a2200470d000b200e20036b41606a41057641016a210d0b02402007450d00200310230b200d4115490d084101450d02200d41017622114105742200417f4c0d02200010212212450d01200841606a2113200841a07f6a211441042115410021164100211741002118200d2119034020192107410021194101210402402007417f6a2205450d00024002400240024002400240200820054105746a2007410574220e20086a41406a412010de044100480d002007417e6a21032014200e6a210041002119410021010340024020032001470d00200721040c080b200141016a2101200041206a2000412010de042105200041606a21002005417f4a0d000b200141016a21042001417f7320076a21050c010b2014200e6a210002400340024020054101470d00410021050c020b2005417f6a2105200041206a2000412010de042101200041606a210020014100480d000b0b20072005490d012007200d4b0d03200720056b22044101762203450d002013200e6a2100200820054105746a21010340200241b0016a41186a220e200141186a221a290000370300200241b0016a41106a221b200141106a221c290000370300200241b0016a41086a221d200141086a221e290000370300200220012900003703b001200041086a221f2900002106200041106a2220290000210f200041186a2219290000211020012000290000370000201a2010370000201c200f370000201e20063700002019200e2903003700002020201b290300370000201f201d290300370000200020022903b001370000200041606a2100200141206a21012003417f6a22030d000b0b024020050d00200521190c050b0240200441094d0d00200521190c050b2007200d4b0d01200720056b2103200820054105746a210e034020072005417f6a2219490d040240200720196b22044102490d00200820054105746a2200200820194105746a2205412010de04417f4a0d00200241b0016a41186a221d200541186a2201290000370300200241b0016a41106a221e200541106a221a290000370300200241b0016a41086a221f200541086a221b290000370300200220052900003703b00120052000290000370000201b200041086a290000370000201a200041106a2900003700002001200041186a2900003700004101211c024020044103490d00200541c0006a200241b0016a412010de04417f4a0d0041022101200e210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221a29000037000020032001460d01200041c0006a211b2001211c201a2100200141016a2101201b200241b0016a412010de04417f4a0d020c000b0b2001211c0b2005201c4105746a220020022903b001370000200041186a201d290300370000200041106a201e290300370000200041086a201f2903003700000b2019450d05200e41606a210e200341016a2103201921052004410a4f0d050c000b0b20052007103e000b20072005417f6a2219490d010b2007200d1036000b20192007103e000b02400240024020182016470d00201641016a22002016490d11201641017422012000200120004b1b220041ffffffff01712000470d11200041037422014100480d110240024020160d002001102121150c010b201520164103742001102521150b2015450d0120002116201721180b201520184103746a2200200436020420002019360200201741016a2218211720184102490d0102400340024002400240024020152018417f6a22174103746a2200280200450d00201841037420156a220341746a2802002205200028020422014d0d000240201841024b0d0020182117410221180c080b20152018417d6a221d4103746a2802042200200120056a4d0d010240201841034b0d0020182117410321180c080b200341646a280200200020056a4d0d01201821170c070b20184103490d012000280204210120152018417d6a221d4103746a28020421000b20002001490d010b2018417e6a211d0b0240024002400240024002402018201d41016a22214b2222450d002018201d4b2223450d012015201d4103746a221e2802042224201e2802006a2200201520214103746a221f2802002220490d022000200d4b0d03200820204105746a221b201f280204221c41057422016a210320004105742105200020206b2207201c6b2200201c4f0d04201220032000410574220110dc04221a20016a210402400240201c4101480d00200041014e0d010b20032100201a21010c060b201320056a21052003210003402005200041606a2203200441606a220720072003412010de04410048220e1b2201290000370000200541186a200141186a290000370000200541106a200141106a290000370000200541086a200141086a29000037000020042007200e1b21040240201b20032000200e1b2200490d00201a21010c070b200541606a2105201a2101201a2004490d000c060b0b4198bfc10020212018102d000b4198bfc100201d2018102d000b20202000103e000b2000200d1036000b2012201b200110dc04221a20016a210402400240201c4101480d002007201c4a0d010b201b2100201a21010c010b200820056a210e201a2101201b2100034020002003200120032001412010de0441004822071b2205290000370000200041186a200541186a290000370000200041106a200541106a290000370000200041086a200541086a2900003700002001200141206a20071b2101200041206a2100200341206a200320071b2203200e4f0d01200420014b0d000b0b20002001200420016b41607110dc041a02402023450d00201e2020360200201e41046a2024201c6a3602002022450d02201f201f41086a20182021417f736a41037410dd041a20172118201741014d0d040c010b0b41a8bfc100201d2018102d000b41b8bbc000102b000b200141041030000b20190d000b02402016450d00201510230b2011450d09201210230c090b200041011030000b200041011030000b102f000b410541011030000b410141011030000b200241ec006a4104360200200241c4016a4102360200200242023702b401200241f89fc5003602b00120024104360264200241fca1c50036026020024100360224200241c4b8c6003602202002200241e0006a3602c0012002200241206a360268200241b0016a4188a0c5001038000b2000450d032006a7450d03200510230c030b02402006a7450d00200010230b41e0b4c000ad4280808080d0058410080c020b200d4102490d002008200d417f6a22014105746a21044101210503400240024002400240200d20012200417f6a2201490d00200d20016b22074102490d03200820004105746a2200200820014105746a2203412010de04417f4a0d03200241b0016a41186a2218200341186a220e290000370300200241b0016a41106a221c200341106a221a290000370300200241b0016a41086a2215200341086a221b290000370300200220032900003703b00120032000290000370000201b200041086a290000370000201a200041106a290000370000200e200041186a2900003700004101210020074103490d02200341c0006a200241b0016a412010de04417f4a0d0241002107200421000340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221a29000037000020052007220e460d02200e417f6a2107200041c0006a211b201a2100201b200241b0016a412010de04417f4a0d020c000b0b2001200d103e000b4102200e6b21000b200320004105746a220020022903b001370000200041186a2018290300370000200041106a201c290300370000200041086a20152903003700000b200441606a21042005417f6a210520010d000b0b41012100200a4101200a1b2119200b4200200a1b2206a721230240024002402006422088a722010d0041002101410021030c010b201920014105746a211b200241c8026a2125200241f1026a211f200241b0016a41027221204100211e410021214101211741002107201921040240024003400240024002400240200d41014b0d004100210141002103410121000240200d0e020800080b0340200241b0016a41186a200441186a290000370300200241b0016a41106a200441106a290000370300200241b0016a41086a200441086a290000370300200220042900003703b0012008200241b0016a412010de04450d03200741016a2107201b200441206a2204470d000c020b0b0340200241b0016a41186a200441186a290000370300200241b0016a41106a200441106a290000370300200241b0016a41086a200441086a290000370300200220042900003703b001200441206a21040240200d450d0041002100200d210103402001410176220520006a22032000200820034105746a200241b0016a412010de044101481b2100200120056b220141014b0d000b200820004105746a200241b0016a412010de04450d040b200741016a21072004201b470d000b0b201e210120212103201721000c050b200441206a2104410021000b0240200d20004b0d0041ece2c0002000200d102d000b2002200736021c200241b0016a41186a22054200370300200241b0016a41106a22034200370300200241b0016a41086a22014200370300200242003703b001200241206a41086a221d41f7fbc400ad4280808080f0008422101003220e41086a2900003703002002200e290000370320200e10232001201d290300370300200220022903203703b001201d41e7acc500ad4280808080a001841003220e41086a2900003703002002200e290000370320200e1023200241a0016a41086a2218201d290300220637030020022002290320220f3703a0012009200f370000200941086a221c2006370000200241e0006a41086a22122001290300370300200241e0006a41106a22162003290300370300200241e0006a41186a22132005290300370300200220022903b001370360200241b0016a200241e0006a412010bb0120022802b001220e4101200e1b211a0240024002400240200720022902b4014200200e1b2206422088a7490d002006a7450d01201a10230c010b2007201a20074105746a10b701210e02402006a7450d00201a10230b200e0d010b200241b0016a1094040240024002400240024002400240024020022802b001220a450d0020022802c401212420022802c001212620022802bc01211420022802b801212220022802b401212720022802182111200542003703002003420037030020014200370300200242003703b001201d20101003220e41086a2900003703002002200e290000370320200e10232001201d290300370300200220022903203703b001201d4194b7c200ad4280808080c001841003220e41086a2900003703002002200e290000370320200e10232018201d290300220637030020022002290320220f3703a0012009200f370000201c2006370000201220012903003703002016200329030037030020132005290300370300200220022903b001370360200241086a200241e0006a4120108f01200228020c212820022802082129200228021c212a200242013703b001200241003602b801410410212201450d0120024284808080c0003702b401200220013602b001200120113600002022200241b0016a105c0240024020022802b401220520022802b80122016b2022490d0020022802b00121050c010b200120226a22032001490d132005410174220e2003200e20034b1b22034100480d130240024020050d002003102121050c010b20022802b00120052003102521050b2005450d03200220033602b401200220053602b0010b2002200120226a3602b801200520016a200a202210dc041a2024200241b0016a105c2024450d0320142024410c6c6a211520142105034020052802002118200541086a2802002201200241b0016a105c0240024020022802b401220e20022802b80122036b2001490d0020022802b001211a0c010b200320016a221a2003490d14200e410174221c201a201c201a4b1b221c4100480d1402400240200e0d00201c1021211a0c010b20022802b001200e201c1025211a0b201a450d062002201c3602b4012002201a3602b001201c210e0b2002200320016a221c3602b801201a20036a2018200110dc041a2005410c6a22052015470d000c060b0b410221050c050b410441011030000b200341011030000b20022802b401210e20022802b801211c0c010b201c41011030000b02400240200e201c6b4104490d0020022802b00121010c010b201c41046a2201201c490d0d200e41017422052001200520014b1b22054100480d0d02400240200e0d002005102121010c010b20022802b001200e2005102521010b2001450d04200220053602b401200220013602b0012005210e0b2002201c41046a22053602b8012001201c6a2028410020291b221a36000002400240200e20056b41034d0d00200e21030c010b200541046a22032005490d0d200e41017422182003201820034b1b22034100480d0d02400240200e0d002003102121010c010b2001200e2003102521010b2001450d06200220033602b401200220013602b0010b200120056a202a360000200241b0016a41e9dabdf306200820004105746a2001201c41086a10950420022d00b0014101460d0102402003450d00200110230b02402027450d00200a10230b02402024450d002024410c6c21012014210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b410121052026450d00201410230b4100210102402023450d00201910230b20212103201721000c070b201d202041086a290000370300200241206a41106a2200202041106a290000370300200241206a41186a2205202041186a290000370300200241206a41206a220e202041206a290000370300200241206a41286a2218202041286a290000370300200241206a41306a221c202041306a290000370300200241206a41376a2215202041376a2900003700002002202029000037032020022d00b101212802402003450d00200110230b200241e0006a41376a22012015290000370000200241e0006a41306a2203201c290300370300200241e0006a41286a221c2018290300370300200241e0006a41206a2218200e29030037030020132005290300370300201620002903003703002012201d29030037030020022002290320370360024041002802e8be464103490d00200241123602ac01200241123602a4012002200241186a3602a80120022002411c6a3602a00141002802f4be46210041002802f0be46210541002802ecbe46210e200241a7033602f001200242dd808080103703e801200241a4e3c0003602e401200242103702dc0120024194e3c0003602d801200242023703d001200242023703c001200241fce2c0003602bc01200241083602b8012002418ce3c0003602b401200241033602b001200041a8b1c000200e410246220e1b28021021002002200241a0016a3602cc01200541c0b1c000200e1b200241b0016a20001102000b201f2002290360370000201f41086a2012290300370000201f41106a2016290300370000201f41186a2013290300370000201f41206a2018290300370000201f41286a201c290300370000201f41306a2003290300370000201f41376a2001290000370000200220283a00f0022002202a3602ec022002201a3602e802200220243602e402200220263602e002200220143602dc02200220223602d802200220273602d4022002200a3602d002200220113602cc022002410b3602c80220024202370398022002200241b0016a3602fc03200241a0016a200241fc036a10b80320022802a00120022802a40120022802a8011096042100202510db010240201e2021470d00201e41016a2201201e490d0b201e41017422052001200520014b1b22214100480d0b02400240201e0d002021102121170c010b2017201e2021102521170b2017450d050b2017201e6a4103410420001b3a0000201e41016a211e0b200741016a2107201e210120212103201721002004201b460d040c010b0b200541011030000b200341011030000b202141011030000b02402023450d00201910230b4104210502400240024002402001450d00024020002d00002207417c6a220441014b0d0020040e020201020b200721050b20030d010c020b0240024020014101470d00410421050c010b20002d00012205417c6a220441014b0d0041042105024020040e020001000b4102210403402004450d08024020012004470d00410421050c020b200020046a2107200441016a21044104210520072d000022074104460d000b20074105460d00200721050b2003450d010b200010230b4101210120054104470d0020022802182101410110212200450d02200041013a000020004101410510252200450d0320002001360001410041cce2c000ad4280808080e003842000ad4280808080d00084101320001023200c450d01200810230c010b0240200c450d00200810230b02402001200345720d00200010230b412e2103418db5c0002100200241a0016a2101024002400240024020050e0400010203000b412d210341e0b4c0002100200241206a21010c020b411f210341c1b4c0002100200241e0006a21010c010b4193b4c0002100200241b0016a21010b20012003360204200120003602002003ad4220862000ad8410080b20024180046a240042010f0b410141011030000b410541011030000b102a000b8b0503017f017e0a7f230041e0006b220224002002200136020c20022002410c6a101c22034220883e0214200220033e02102002200241106a106e024020022802000d00024002400240200228021422044160712205417f4c0d002002280204210602400240200441057622010d00410121070c010b200510212207450d020b2001ad2103024002402006450d0041002108034020042109200241003a0058200841016a210841002101024002400240034020092001460d01200241386a20016a200228021022052d00003a00002002200541016a3602102002200141016a22053a00582005210120054120470d000b200241186a41186a220a200241386a41186a290300370300200241186a41106a220b200241386a41106a290300370300200241186a41086a220c200241386a41086a290300370300200220022903383703182003a72003422088a72201470d020240200141016a22042001490d002001410174220d20042004200d491b220441ffffff3f712004470d002004410574220d41004e0d020b102a000b200241003602140240200141ff0171450d00200241003a00580b2003a7450d08200710230c080b0240024020010d00200d102121070c010b20072001410574200d102521070b2007450d062003428080808070832004ad8421030b200920056b2104200720014105746a22012002290318370000200141186a200a290300370000200141106a200b290300370000200141086a200c29030037000020034280808080107c210320082006470d000b2002200920056b3602140c010b2007450d040b2000200337020420002007360200200241e0006a24000f0b102f000b200541011030000b200d41011030000b41f4b7c600412e200241386a41e4b7c6001031000b890603017f017e0c7f230041306b22012400200110192202a7220336022020012002422088a7220436022402402004450d0020032d0000210520012004417f6a3602242001200341016a360220200541014b0d00024002400240024002400240024002400240024020050e020001000b200141186a200141206a106e20012802180d0920012802242203200128021c2206490d092006417f4c0d020240024020060d004101210741010d010c0b0b200610272207450d08200720012802202204200610dc0421052001200320066b3602242001200420066a3602202005450d0a0b200141106a200141206a106e20012802100d082001280224410c6e2208410c6c2203417f4c0d02200128021421090240024020030d004104210a0c010b20031021220a450d040b024002402009450d004100210b410021044100210c0340200141086a200141206a106e20012802080d0220012802242205200128020c2203490d022003417f4c0d050240024020030d004101210d0c010b20031027220d450d08200d2001280220220e200310dc041a2001200520036b3602242001200e20036a3602200b200c41016a21050240200c2008470d00200b2005200b20054b1b2208ad420c7e2202422088a70d0a2002a7220e4100480d0a02400240200c0d00200e1021210a0c010b200a2004200e1025210a0b200a450d090b200a20046a220c200d360200200c41046a2003ad2202422086200284370200200b41026a210b2004410c6a21042005210c20092005470d000b0b200a450d0920070d020c0a0b0240200c450d00200a210303400240200341046a280200450d00200328020010230b2003410c6a2103200441746a22040d000b0b2008450d08200a10230c080b410021070b2000200636020420002007360200200041146a2009360200200041106a20083602002000410c6a200a360200200041086a2006360200200141306a24000f0b102f000b200341041030000b200341011030000b200e41041030000b102a000b200641011030000b2006450d00200710230b41f4b7c600412e200141286a41a4b8c6001031000b8e0402017f017e23004190016b22052400200520013602040240200541046a20022004ad4220862003ad84101d2206422088a72201450d002006a722042d0000220341014b0d00410021020240024020030e020100010b41002102200541003a008801200441016a21042001417f6a21010340024020012002470d00200241ff0171450d03200541003a0088010c030b200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a29030037000020054190016a24000f0b41f4b7c600412e200541c8006a41a4b8c6001031000b7603017f017e017f230041106b220324000240024002402002ad4220862000ad8410182204428080808010540d00410121022004a72d0000220541014b0d0020050e020102010b41f4b7c600412e200341086a41a4b8c6001031000b410021020b02402001450d00200010230b200341106a240020020b910302057f027e230041e0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a2204420037030020024200370320200241d0006a41086a22054182fdc400ad4280808080a001841003220641086a29000037030020022006290000370350200610232004200529030037030020022002290350370320200541fccfc300ad4280808080b001841003220641086a2900003703002002200629000037035020061023200320022903502207370300200241086a2004290300370300200241106a2007370300200241186a20052903003703002002200737034020022002290320370300200241206a200210bc01200228022021052002290224210720024100360228200242013703202007420020051b2207422088a72204200241206a105c2005410120051b210602402004450d00200441057421042006210503402005200241206a1071200541206a2105200441606a22040d000b0b2002350228422086200235022084210802402007a7450d00200610230b200241e0006a240020080be604020b7f017e230041306b22022400200210fd01200228020421032002280200210420022802082105200241003602082002420137030020052002105c0240024002400240024002402005450d00200541037421062004210703400240024020072802004101460d0002400240200228020420022802082208460d00200228020021050c010b200841016a22052008490d08200841017422092005200920054b1b22094100480d080240024020080d002009102121050c010b200228020020082009102521050b2005450d0520022009360204200220053602000b2002200841016a220a360208200520086a41003a00000c010b024002402002280204220920022802082208460d00200228020021050c010b200841016a22052008490d07200841017422092005200920054b1b22094100480d070240024020080d002009102121050c010b200228020020082009102521050b2005450d0520022009360204200220053602000b2002200841016a220b360208200520086a41013a0000200741046a280200210c024002402009200b6b4104490d00200841056a210a0c010b200b41046a220a200b490d0720094101742208200a2008200a4b1b22084100480d070240024020090d002008102121050c010b200520092008102521050b2005450d0620022008360204200220053602000b2002200a3602082005200b6a200c3600000b200741086a2107200641786a22060d000c060b0b2002280208210a200228020021050c040b200941011030000b200941011030000b200841011030000b102a000b200aad4220862005ad84210d02402003450d00200410230b200241306a2400200d0bc20404057f017e037f017e230041e0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a2204420037030020024200370320200241d0006a41086a22054191fdc400ad42808080809001841003220641086a2900003703002002200629000037035020061023200420052903003703002002200229035037032020054184ddc100ad4280808080e000841003220641086a2900003703002002200629000037035020061023200320022903502207370300200241086a2004290300370300200241106a2007370300200241186a20052903003703002002200737034020022002290320370300200241206a200210fe01200228022021052002290224210720024100360228200242013703202007420020051b2207422088a72204200241206a105c2005410420051b21080240024002402004450d0020082004412c6c6a2109200821040340200428020021030240024020022802242206200228022822056b4104490d00200228022021060c010b200541046a220a2005490d0420064101742205200a2005200a4b1b22054100480d040240024020060d002005102121060c010b200228022020062005102521060b2006450d032002200536022420022006360220200228022821050b2002200541046a360228200620056a2003360000200441046a200241206a10d3012004412c6a22042009470d000b0b2002350228422086200235022084210b02402007a7450d00200810230b200241e0006a2400200b0f0b200541011030000b102a000bb90703017f027e067f230041d0006b22022400024002400240024002400240024020014104490d00200220002800002200360218200241306a200241186a108702200241086a200241306a109402200241086a41086a290300210320022903082104200241306a2000108002200241306a41086a28020021012002280234210520022802302106410110212200450d012002428180808010370234200220003602300240024020060d0041002101200041003a000042808080801021030c010b200041013a00002001200241306a105c0240024020022802342200200228023822076b2001490d00200228023021000c010b200720016a22082007490d08200041017422092008200920084b1b22084100480d080240024020000d002008102121000c010b200228023020002008102521000b2000450d0420022008360234200220003602300b2002200720016a360238200020076a2006200110dc041a0240024020022802342207200228023822086b4110490d00200841106a21010c010b200841106a22012008490d08200741017422092001200920014b1b22094100480d080240024020070d002009102121000c010b200020072009102521000b2000450d052002200936023420022000360230200921070b200020086a22082003370008200820043700002002200136023802400240200720016b410f4d0d00200721080c010b200141106a22082001490d08200741017422092008200920084b1b22084100480d080240024020070d002008102121000c010b200020072008102521000b2000450d0620022008360234200220003602300b200020016a22074200370008200742003700002002200141106a22073602380240200820076b410f4b0d00200741106a22092007490d082008410174220a2009200a20094b1b22094100480d080240024020080d002009102121000c010b200020082009102521000b2000450d0720022009360234200220003602300b200020076a22074200370008200742003700002002200141206a22013602382001ad4220862103200621010b20032000ad84210302402006450d002005450d00200110230b200241d0006a240020030f0b200241246a4104360200200241c4006a410236020020024202370234200241f89fc5003602302002410436021c20024194a2c5003602182002410036022c200241c4b8c6003602282002200241186a3602402002200241286a360220200241306a4188a0c5001038000b410141011030000b200841011030000b200941011030000b200841011030000b200941011030000b102a000bb80502057f017e230041f0006b220224000240024020014104490d0020002800002103200241d0006a41086a22004182fdc400ad4280808080a001841003220141086a2900003703002002200129000037035020011023200241086a41086a2204200029030037030020022002290350370308200041e8bdc100ad4280808080c000841003220141086a2900003703002002200129000037035020011023200241186a41086a22052000290300370300200220022903503703182002200336024c200241d0006a41186a2203200241cc006aad4280808080c000841001220141186a290000370300200241d0006a41106a2206200141106a2900003703002000200141086a2900003703002002200129000037035020011023200241286a41186a22012003290300370300200241286a41106a22032006290300370300200241286a41086a220620002903003703002002200229035037032841c00010212200450d01200020022903083700002000200229031837001020002002290328370020200041086a2004290300370000200041186a2005290300370000200041286a2006290300370000200041306a2003290300370000200041386a2001290300370000200241d0006a200041c00010c00102400240200228025022010d0041002101200241003602280c010b20022002290254220737022c200220013602282007a74521030b20001023200241d0006a200241286a1084022002350258422086200235025084210702402001450d0020034101710d00200110230b200241f0006a240020070f0b200241346a4104360200200241e4006a410236020020024202370254200241f89fc5003602502002410436022c200241aca2c5003602282002410036021c200241c4b8c6003602182002200241286a3602602002200241186a360230200241d0006a4188a0c5001038000b41c00041011030000bd91003097f017e017f23004180016b220224000240024002400240024002400240024020014104490d00024020014104460d002000410120011b22032d0004220441014b0d0020032800002100410021050240024020040e020100010b2001417b6a4104490d0120032800052106410121050b200241d0006a41086a22014182fdc400ad4280808080a001841003220341086a2900003703002002200329000037035020031023200241106a41086a2204200129030037030020022002290350370310200141f1bdc100ad4280808080a001841003220341086a2900003703002002200329000037035020031023200241c0006a41086a220320012903003703002002200229035037034020022000360250200241e0006a41186a2207200241d0006aad4280808080c000841001220141186a290000370300200241e0006a41106a2208200141106a290000370300200241e0006a41086a2209200141086a2900003703002002200129000037036020011023200241206a41186a220a2007290300370300200241206a41106a22072008290300370300200241206a41086a220820092903003703002002200229036037032041c00010212201450d02200120022903103700002001200229034037001020012002290320370020200141086a2004290300370000200141186a2003290300370000200141286a2008290300370000200141306a2007290300370000200141386a200a290300370000200241086a200141c000108f01200228020c210320022802082104200110230240024020040d004100210a0c010b200241e0006a41186a4200370300200241e0006a41106a22084200370300200241e0006a41086a2204420037030020024200370360200241d0006a41086a220141c4fbc400ad4280808080e000841003220741086a29000037030020022007290000370350200710232004200129030037030020022002290350370360200141f9bcc000ad4280808080e000841003220741086a290000370300200220072900003703502007102320082002290350220b370300200241206a41086a2004290300370300200241206a41106a200b370300200241206a41186a20012903003703002002200b370340200220022903603703202002200241206a4120108f01410021094104210a02402006410020051b2201417f200341016a220520052003491b2203200120034b1b22012002280204410020022802001b2203490d004100210c0c010b200241e0006a2000200110f901200141016a21010240200228026422050d000340024020012003490d004100210c0c030b200241e0006a2000200110f901200141016a210120022802642205450d000b0b2002290368210b2002280260210641101021220a450d04200a200b370208200a2005360204200a2006360200024020012003490d00410121094101210c0c010b410121094101210c0340200241e0006a2000200110f90102400340200141016a2101200228026422050d01200120034f0d03200241e0006a2000200110f9010c000b0b2002290368210b200228026021040240200c2009470d00200941016a22062009490d0b200941017422072006200720064b1b220c41ffffffff0071200c470d0b200c41047422064100480d0b0240024020090d0020061021210a0c010b200a200941047420061025210a0b200a450d070b200a20094104746a2206200536020420062004360200200641086a200b370200200941016a210920012003490d000b0b410110212201450d0520024281808080103702642002200136026002400240200a0d00200141003a00000c010b200141013a00002009200241e0006a105c2009450d00200a20094104746a2108200a21070340200728020021030240024020022802642200200228026822016b4104490d00200228026021000c010b200141046a22052001490d0b200041017422012005200120054b1b22014100480d0b0240024020000d002001102121000c010b200228026020002001102521000b2000450d092002200136026420022000360260200228026821010b2002200141046a360268200020016a200336000020072802042100200728020c2201200241e0006a105c02402001450d002000200141246c6a21040340200028020021050240024020022802642203200228026822016b4104490d00200228026021030c010b200141046a22062001490d0d200341017422012006200120064b1b22014100480d0d0240024020030d002001102121030c010b200228026020032001102521030b2003450d0c2002200136026420022003360260200228026821010b2002200141046a360268200320016a20053600002002200241e0006a360220200041046a200241206a106b200041246a22002004470d000b0b200741106a22072008470d000b0b2002350268422086200235026084210b0240200a450d0002402009450d0020094104742100200a41046a210103400240200141046a280200450d00200128020010230b200141106a2101200041706a22000d000b0b200c450d00200a10230b20024180016a2400200b0f0b2002412c6a4104360200200241f4006a410236020020024202370264200241f89fc50036026020024104360224200241c4a2c50036022020024100360254200241c4b8c6003602502002200241206a3602702002200241d0006a360228200241e0006a4188a0c5001038000b2002412c6a4104360200200241f4006a410236020020024202370264200241f89fc50036026020024104360224200241c4a2c50036022020024100360254200241c4b8c6003602502002200241206a3602702002200241d0006a360228200241e0006a4188a0c5001038000b41c00041011030000b411041041030000b200641041030000b410141011030000b200141011030000b200141011030000b102a000ba20703067f067e017f230041e0006b220224002002411436020c2002418adcc100360208200241106a418adcc100ad4280808080c0028410041090010240024020022802102203450d00200228021421042002200241186a2802002205360224200220033602200240024002402005450d0020022005417f6a3602242002200341016a36022020032d00002105200241c8006a200241206a106d20022802482206450d00200228024c2107200541ff01714101460d012007450d00200610230b20024100360230200242013703282002410c36023c2002200241086a3602382002200241286a36024441012105200241dc006a41013602002002420137024c20024198c2c3003602482002200241386a360258200241c4006a41b8a3c500200241c8006a102e1a200235023042208620023502288410080240200228022c450d00200228022810230b410221070c010b200241d0006a3502004220862007ad84210841012107410021050b02402004450d00200310230b20050d0020074101460d010240024020062802082205ad220942287e220a422088a70d00200aa72204417f4c0d00200628020021030240024020040d00410821060c010b200410212206450d020b0240024020050d004200210a0c010b200541286c21044200210a200621050340200341086a2903002108200341106a290300210b200341186a290300210c2003290300210d200541206a200341206a290300370300200541186a200c370300200541106a200b370300200541086a20083703002005200d370300200541286a2105200a4280808080107c210a200341286a2103200441586a22040d000b0b200a20098421080c030b102f000b200441081030000b42002108410821060b20024100360250200242013703482008422088a72203200241c8006a105c0240024002402003450d002006200341286c6a210e2006210503402005200241c8006a1071200541206a290300210a02400240200228024c2204200228025022036b4108490d00200228024821040c010b200341086a22072003490d04200441017422032007200320074b1b22034100480d040240024020040d002003102121040c010b200228024820042003102521040b2004450d032002200336024c20022004360248200228025021030b2002200341086a360250200420036a200a370000200e200541286a2205470d000b0b2002350250422086200235024884210a02402008a7450d00200610230b200241e0006a2400200a0f0b200341011030000b102a000ba20d03057f017e017f230041d0016b22022400200241d8006a109c03200241086a41186a4200370300200241086a41106a22034200370300200241086a41086a220442003703002002420037030820024188016a41086a220541cafbc400ad4280808080c000841003220641086a290000370300200220062900003703880120061023200420052903003703002002200229038801370308200541f8d0c300ad4280808080a001841003220641086a29000037030020022006290000370388012006102320032002290388012207370300200241b0016a41086a22062004290300370300200241b0016a41106a22042007370300200241b0016a41186a2203200529030037030020022007370368200220022903083703b00120024188016a200241b0016a109d0320022d00880121052003200241a1016a290000370300200420024199016a290000370300200620024191016a29000037030020022002290089013703b0010240024020054101460d00200241e8006a41186a4200370300200241e8006a41106a4200370300200241e8006a41086a4200370300200242003703680c010b200241e8006a41186a2003290300370300200241e8006a41106a2004290300370300200241e8006a41086a2006290300370300200220022903b0013703680b200241086a41186a4204370300200241306a200241d8006a41086a2802003602002002413c6a200241e8006a41086a290300370200200241c4006a200241f8006a290300370200200241cc006a200241e8006a41186a29030037020020024201370318200242d804370310200242f02e3703082002200229035837032820022002290368370234200241013a0054200241003602900120024201370388010240024002400240024002400240410810212205450d002002410836028c012002200228029001220441086a360290012002200536028801200520046a42f02e3700002002290310210702400240200228028c01220420022802900122056b4108490d0020022802880121040c010b200541086a22062005490d07200441017422052006200520064b1b22054100480d070240024020040d002005102121040c010b20022802880120042005102521040b2004450d022002200536028c01200220043602880120022802900121050b2002200541086a36029001200420056a20073700002002290318210702400240200228028c01220420022802900122056b4108490d0020022802880121040c010b200541086a22062005490d07200441017422052006200520064b1b22054100480d070240024020040d002005102121040c010b20022802880120042005102521040b2004450d032002200536028c01200220043602880120022802900121050b2002200541086a36029001200420056a20073700002002290320210702400240200228028c01220420022802900122056b4108490d0020022802880121040c010b200541086a22062005490d07200441017422052006200520064b1b22054100480d070240024020040d002005102121040c010b20022802880120042005102521040b2004450d042002200536028c01200220043602880120022802900121050b2002200541086a36029001200420056a200737000020022802282104200241086a41286a280200220520024188016a105c02402005450d002004200541286c6a21080340200420024188016a1071200441206a290300210702400240200228028c01220620022802900122056b4108490d0020022802880121060c010b200541086a22032005490d09200641017422052003200520034b1b22054100480d090240024020060d002005102121060c010b20022802880120062005102521060b2006450d072002200536028c01200220063602880120022802900121050b2002200541086a36029001200620056a20073700002008200441286a2204470d000b0b200241346a20024188016a109e0320022d0054210602400240200228028c012002280290012205460d0020022802880121040c010b200541016a22042005490d07200541017422032004200320044b1b22034100480d070240024020050d002003102121040c010b20022802880120052003102521040b2004450d062002200336028c01200220043602880120022802900121050b2002200541016a36029001200420056a20063a000020023502900142208620023502880184210702402002412c6a280200450d00200228022810230b200241d0016a240020070f0b410841011030000b200541011030000b200541011030000b200541011030000b200541011030000b200341011030000b102a000be60904057f017e097f017e230041b0016b2202240020024188016a41186a420037030020024188016a41106a2203420037030020024188016a41086a220442003703002002420037038801200241e8006a41086a2205419cfcc400ad4280808080a002841003220641086a29000037030020022006290000370368200610232004200529030037030020022002290368370388012005419ddfc000ad4280808080c000841003220641086a2900003703002002200629000037036820061023200320022903682207370300200241106a41086a2004290300370300200241106a41106a2007370300200241106a41186a2005290300370300200220073703302002200229038801370310200241203602442002200241106a360240200241c8006a200241106aad4280808080800484100410900102400240024002400240200228024822080d00410021030c010b200228024c21092002200241c8006a41086a28020036025c20022008360258200241086a200241d8006a106e02400240024020022802080d00200228025c22054160712204417f4c0d04200228020c210a024002402005410576220b0d00410121030c010b200410212203450d060b0240200a450d004100210c034020052106200241003a00a801200c220d41016a210c41002105024002400240034020062005460d0120024188016a20056a200228025822042d00003a00002002200441016a3602582002200541016a22043a00a8012004210520044120470d000b200241e8006a41186a220e20024188016a41186a290300370300200241e8006a41106a220f20024188016a41106a290300370300200241e8006a41086a221020024188016a41086a2903003703002002200229038801370368200b200d470d020240200d4101742205200c2005200c4b1b220b41ffffff3f71200b470d00200b410574220541004e0d020b102a000b2002410036025c0240200541ff0171450d00200241003a00a8010b20024100360230200b450d05200310230c050b02400240200d0d002005102121030c010b2003200d4105742005102521030b2003450d090b200620046b21052003200d4105746a220d2002290368370000200d41186a200e290300370000200d41106a200f290300370000200d41086a2010290300370000200c200a470d000b200241386a200a3602002002200b360234200220033602302002200620046b36025c200229023421070c030b200241386a200a3602002002200b360234200220033602302003450d01200229023421070c020b200241003602300b4100210320024100360270200242013703682002410c3602342002200241c0006a3602302002200241e8006a3602642002419c016a41013602002002420137028c0120024198c2c300360288012002200241306a36029801200241e4006a41b8a3c50020024188016a102e1a200235027042208620023502688410080240200228026c450d00200228026810230b0b2009450d00200810230b200241003602900120024201370388012007420020031b2207422088a7220520024188016a105c2003410120031b210602402005450d0020054105742104200621050340200520024188016a1071200541206a2105200441606a22040d000b0b20023502900142208620023502880184211102402007a7450d00200610230b200241b0016a240020110f0b102f000b200441011030000b200541011030000b900f03037f027e047f230041e0026b220224000240024020010d002002200136020c200241013602080c010b20022001417f6a36020c2002200041016a36020820002d0000220141014b0d004100210002400240024002400240024002400240024002400240024020010e020100010b2002200241086a106e20022802000d0b200228020c220320022802042201490d0b2001417f4c0d010240024020010d00410121000c010b200110272200450d03200020022802082204200110dc041a2002200320016b36020c2002200420016a3602080b2000450d0b2001ad220542208620058421050b0240024020000d00410021030c010b20054220882206a72201417f4c0d010240024020010d00410121030c010b200110212203450d040b20032000200110dc041a20062005428080808070838421060b200220033602b002200220063702b402200241e7e485f30636029002200241106a200241b0026a10840220022802142104200241106a41186a220720024190026a200235021842208620022802102208ad841014220141186a290000370300200241106a41106a2209200141106a290000370300200241106a41086a220a200141086a2900003703002002200129000037031020011023200241b0016a41186a2007290300370300200241b0016a41106a2009290300370300200241b0016a41086a200a290300370300200220022903103703b00102402004450d00200810230b02402003450d002006a7450d00200310230b410021010240024020000d00410021030c010b20054220882206a72204417f4c0d010240024020040d00410121030c010b200410212203450d050b20032000200410dc041a20062005428080808070838421060b2002200637021420022003360210200241d0016a41e2c289ab06200241106a10a1040240024020000d000c010b20054220882206a72203417f4c0d010240024020030d00410121010c010b200310212201450d060b20012000200310dc041a20062005428080808070838421060b2002200637021420022001360210200241f0016a41e9dabdf306200241106a10a104410021010240024020000d00410021030c010b20054220882206a72204417f4c0d010240024020040d00410121030c010b200410212203450d070b20032000200410dc041a20062005428080808070838421060b200220063702142002200336021020024190026a41f0c2c98b06200241106a10a1040240024020000d000c010b20054220882206a72203417f4c0d010240024020030d00410121010c010b200310212201450d080b20012000200310dc041a20062005428080808070838421060b200220063702d402200220013602d002200241b0026a41e1ea91cb06200241d0026a10a104200241106a41086a200241b0016a41086a290300370300200241106a41106a200241b0016a41106a290300370300200241106a41186a200241b0016a41186a290300370300200241386a200241d0016a41086a290300370300200241c0006a200241d0016a41106a290300370300200241c8006a200241d0016a41186a290300370300200241d8006a200241f0016a41086a290300370300200241e0006a200241f0016a41106a290300370300200241e8006a200241f0016a41186a290300370300200220022903b001370310200220022903d001370330200220022903f00137035020024188016a20024190026a41186a29030037030020024180016a20024190026a41106a290300370300200241f8006a20024190026a41086a29030037030020024198016a200241b0026a41086a290300370300200241a0016a200241b0026a41106a290300370300200241a8016a200241b0026a41186a2903003703002002200229039002370370200220022903b00237039001200241003602b802200242013703b002200241106a200241b0026a1071200241306a200241b0026a1071200241d0006a200241b0026a1071200241f0006a200241b0026a107120024190016a200241b0026a107120022802b802210120022802b402210720022802b002210402402000450d002005a7450d00200010230b200141046a2200417f4c0d000240024020000d00410121030c010b200010212203450d080b2002410036021820022000360214200220033602102001200241106a105c0240024020022802142203200228021822006b2001490d00200228021021030c010b200020016a22092000490d0a2003410174220a2009200a20094b1b22094100480d0a0240024020030d002009102121030c010b200228021020032009102521030b2003450d0920022009360214200220033602100b200320006a2004200110dc041a200020016aad4220862003ad84210502402007450d00200410230b200241e0026a240020050f0b102f000b200141011030000b200141011030000b200441011030000b200341011030000b200441011030000b200341011030000b200041011030000b200941011030000b102a000b200241bc026a4104360200200241246a410236020020024202370214200241f89fc500360210200241043602b402200241d4a2c5003602b0022002410036029402200241c4b8c600360290022002200241b0026a360220200220024190026a3602b802200241106a4188a0c5001038000b810201057f230041306b22032400200341086a200241086a280200360200200320022902003703002003200136020c200341106a200310840220032802142101200341106a41186a22042003410c6a200335021842208620032802102205ad841020220241186a290000370300200341106a41106a2206200241106a290000370300200341106a41086a2207200241086a2900003703002003200229000037031020021023200041186a2004290300370000200041106a2006290300370000200041086a20072903003700002000200329031037000002402001450d00200510230b024020032802002200450d002003280204450d00200010230b200341306a24000bc80503037f047e027f23004190016b2202240041002103200241003a00482000410120011b2104024002400240034020012003460d01200241286a20036a200420036a2d00003a00002002200341016a22003a00482000210320004120470d000b200241086a41186a200241286a41186a22012903002205370300200241086a41106a200241286a41106a22042903002206370300200241086a41086a200241286a41086a22002903002207370300200220022903282208370308200241d0006a41186a2005370300200241d0006a41106a2006370300200241d0006a41086a200737030020022008370350200041c4fbc400ad4280808080e000841003220341086a2900003703002002200329000037032820031023200241f0006a41086a2209200029030037030020022002290328370370200041e4bcc000ad4280808080c001841003220341086a290000370300200220032900003703282003102320024180016a41086a220a20002903003703002002200229032837038001200241286a200241d0006a10ac0141c00010212203450d0120032002290370370000200320022903800137001020032002290028370020200341086a2009290300370000200341186a200a290300370000200341286a2000290000370000200341306a2004290000370000200341386a20012900003700002002200341c000108f01200228020421002002280200210120031023410410212203450d0220032000410020011b36000020024190016a24002003ad4280808080c000840f0b0240200341ff0171450d00200241003a00480b2002413c6a4102360200200241dc006a41043602002002420237022c200241f89fc50036022820024104360254200241f4a2c5003602502002410036020c200241c4b8c6003602082002200241d0006a3602382002200241086a360258200241286a4188a0c5001038000b41c00041011030000b410441011030000bc50402027f027e230041c0056b22022400024002402001450d00200220003602100c010b200241013602100b20022001360214200241f8026a200241106a10e202024002400240024020022903e0034203510d00200241186a200241f8026a41c80210dc041a0240200228021422014104490d0020022802102200280000210320022001417c6a3602142002200041046a360210200241f8026a200241186a41c80210dc041a200241e0026a20024190046a220110f0032002200320022903e0022204a722002004422888a742004200108603200241086a29030021042002290300210520022d00e4022103200110db01410410212201450d022001200036000020014104410810252201450d03200120033a000420014108411510252201450d04200120053700052001410d6a2004370000200241c0056a24002001ad4280808080d002840f0b200241ec026a41043602002002418c036a4102360200200242023702fc02200241f89fc5003602f802200241043602e4022002418ca3c5003602e002200241003602f402200241c4b8c6003602f0022002200241e0026a360288032002200241f0026a3602e802200241f8026a4188a0c5001038000b200241ec026a41043602002002412c6a41023602002002420237021c200241f89fc500360218200241043602e4022002418ca3c5003602e002200241003602f402200241c4b8c6003602f0022002200241e0026a3602282002200241f0026a3602e802200241186a4188a0c5001038000b410441011030000b410841011030000b411541011030000bc00101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021030c010b200420026a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102121030c010b200028020020032004102521030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420026a360200200320046a2001200210dc041a41000f0b200441011030000b102a000bab0301047f230041106b22022400200028020021002002410036020c0240024002402001418001490d002001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b200220013a000c410121010c010b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021030c010b200420016a22052004490d02200341017422042005200420054b1b22044100480d020240024020030d002004102121030c010b200028020020032004102521030b2003450d0120002003360200200041046a2004360200200041086a28020021040b200041086a200420016a360200200320046a2002410c6a200110dc041a200241106a240041000f0b200441011030000b102a000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41b8a3c500200241086a102e2101200241206a240020010b13002000410136020420004184a5c5003602000b3400200041a6a3c50036020420004100360200200041146a4103360200200041106a4190a6c500360200200041086a420a3702000bf60201087f230041106b22022400200241003602082002420137030020002802002103024002400240410410212204450d002004200336000020024284808080c00037020420022004360200200028020421052000410c6a28020022002002105c0240024020000d002002280208210420022802042106200228020021030c010b20004102742107200228020421062002280208210003402005280200210802400240200620006b4104490d00200041046a2104200228020021030c010b200041046a22042000490d05200641017422032004200320044b1b22094100480d050240024020060d002009102121030c010b200228020020062009102521030b2003450d042002200936020420022003360200200921060b200541046a210520022004360208200320006a2008360000200421002007417c6a22070d000b0b20012902002004ad4220862003ad84100202402006450d00200310230b200241106a24000f0b410441011030000b200941011030000b102a000b950401067f230041f0006b22032400200341d0006a41086a220441c6acc500ad4280808080f000841003220541086a2900003703002003200529000037035020051023200341086a41086a220620042903003703002003200329035037030820044193adc500ad4280808080b002841003220541086a2900003703002003200529000037035020051023200341186a41086a22072004290300370300200320032903503703182003200136024c200341d0006a41186a2201200341cc006aad4280808080c000841001220541186a290000370300200341d0006a41106a2208200541106a2900003703002004200541086a2900003703002003200529000037035020051023200341286a41186a22052001290300370300200341286a41106a22012008290300370300200341286a41086a22082004290300370300200320032903503703280240024041c00010212204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a2008290300370000200441306a2001290300370000200441386a2005290300370000200341d0006a200210bc03200441c00041800110252204450d0120042003290050370040200441c8006a200341d8006a29000037000020004280818080800a37020420002004360200200341f0006a24000f0b41c00041011030000b41800141011030000b950401067f230041f0006b22032400200341d0006a41086a220441c6acc500ad4280808080f000841003220541086a2900003703002003200529000037035020051023200341086a41086a2206200429030037030020032003290350370308200441a6adc500ad4280808080b002841003220541086a2900003703002003200529000037035020051023200341186a41086a22072004290300370300200320032903503703182003200136024c200341d0006a41186a2201200341cc006aad4280808080c000841001220541186a290000370300200341d0006a41106a2208200541106a2900003703002004200541086a2900003703002003200529000037035020051023200341286a41186a22052001290300370300200341286a41106a22012008290300370300200341286a41086a22082004290300370300200320032903503703280240024041c00010212204450d00200420032903083700002004200329031837001020042003290328370020200441086a2006290300370000200441186a2007290300370000200441286a2008290300370000200441306a2001290300370000200441386a2005290300370000200341d0006a200210bc03200441c00041800110252204450d0120042003290050370040200441c8006a200341d8006a29000037000020004280818080800a37020420002004360200200341f0006a24000f0b41c00041011030000b41800141011030000bad0e03057f017e017f230041e0036b22012400200141d8026a41086a220241c6acc500ad4280808080f000841003220341086a290000370300200120032900003703d80220031023200141d0006a41086a22042002290300370300200120012903d802370350200241e7acc500ad4280808080a001841003220341086a290000370300200120032900003703d8022003102320014190026a41086a22052002290300370300200120012903d80237039002200141d8026a200010ac010240024002400240024041c00010212203450d00200320012903503700002003200129039002370010200320012900d802370020200341086a2004290300370000200341186a2005290300370000200341286a2002290000370000200341306a200141e8026a290000370000200341386a200141d8026a41186a290000370000200141d8026a200341c00010a501024020012d00dc02220241024622000d002003ad428080808080088410050b2001410d6a200141d8026a41057241c30010dc041a200141d0006a2001410d6a41c30010dc041a20000d04200120023a00980120014198016a410172200141d0006a41c10010dc042104200141ba016a21000240024020012d00b9014101460d00200141003602e0010c010b200141e0016a200010a40120012d00980121020b024002400240200241ff01714101460d00200141003602f0010c010b200141f0016a200410a40120012802f0010d010b024020012d00b9014101460d00200141d8026a10ad0420013502e00242208620012802d8022202ad84100520012802dc02450d04200210230c040b200141d8026a10ad0420012802d8022102200120012802e002360294022001200236029002200020014190026a10f50120012802dc02450d03200210230c030b20014180026a41086a200141f0016a41086a2802002202360200200120012903f00122063703800220014190026a2006a72204200210a501024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a410f360200200141bc036a410c360200200141073602cc03200141c6acc5003602c8032001410c3602b4032001410a3602d403200141e7acc5003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc02200141a8ddc0003602d8022001200141b0036a3602e802200141dc036a41b8a3c500200141d8026a102e1a20013502a80342208620013502a00384100820012802a403450d0220012802a00310230c020b200141d8026a20014190026a41c80010dc041a2001419d036a200141b9016a220041206a2d00003a000020014195036a200041186a2900003700002001418d036a200041106a29000037000020014185036a200041086a290000370000200141fd026a2000290000370000200141003602b803200142013703b003200141d8026a200141b0036a10af01200141d8026a410472200141b0036a10a90120012802b40321002002ad4220862004ad8420013502b80342208620012802b0032202ad8410022000450d01200210230c010b41c00041011030000b0240200128028402450d0020012802800210230b410121000c010b410021000b0240024020012802e00122020d00410021040c010b20014180026a41086a200141e0016a41086a2802002204360200200120012903e00122063703800220014190026a2006a72205200410a5010240024020012d0094024102470d00200141003602a803200142013703a003200141b0036a41146a410f360200200141bc036a410c360200200141073602cc03200141c6acc5003602c8032001410c3602b4032001410a3602d403200141e7acc5003602d003200120014180026a3602c0032001200141d0036a3602b8032001200141c8036a3602b0032001200141a0036a3602dc03200141d8026a41146a4103360200200142033702dc02200141ccdcc0003602d8022001200141b0036a3602e802200141dc036a41b8a3c500200141d8026a102e1a20013502a80342208620013502a00384100820012802a403450d0120012802a00310230c010b200141d8026a20014190026a41c80010dc041a200141fc026a200141b8016a2d00003a0000200141f4026a200141b0016a290300370200200141ec026a200141a8016a290300370200200141e4026a20014198016a41086a29030037020020012001290398013702dc02200141003602b803200142013703b003200141d8026a200141b0036a10af01200141d8026a410472200141b0036a10a90120012802b40321072004ad4220862005ad8420013502b80342208620012802b0032204ad8410022007450d00200410230b0240200128028402450d0020012802800210230b410121040b0240200020012802f001220545720d0020012802f401450d00200510230b2004200245720d0020012802e401450d00200210230b20031023200141e0036a24000bc60303047f017e017f230041d0006b22012400200141c0006a41086a220241c6acc500ad4280808080f000841003220341086a2900003703002001200329000037034020031023200141206a41086a2204200229030037030020012001290340370320200241d7acc500ad42808080808002841003220341086a2900003703002001200329000037034020031023200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210302400240024002404120450d004120102122020d01412041011030000b411021030240411010212202450d00200141106a210420022001290300370000200241086a200141086a2903003700000c020b411041011030000b20022001290300370000200241086a200141086a290300370000200141106a210441204110470d010b20022003200341017422064120200641204b1b220610252202450d02200621030b20022004290000370010200241186a200441086a290000370000200041203602082000200336020420002002360200200141d0006a24000f0b102f000b200641011030000b8b0d05027f017e027f017e047f230041f0036b2201240041c6acc500ad4280808080f0008410032202290008210320022800042104200228000021052002102341cdacc500ad4280808080a00184100322022900082106200228000421072002280000210820021023200141d8026a200010ac010240024002400240024041c00010212202450d00200220063700182002200736001420022008360010200220033700082002200436000420022005360000200220012900d802370020200241286a200141e0026a290000370000200241306a200141e8026a290000370000200241386a200141f0026a290000370000200141d8026a200241c00010a801024020012d00e802220041024622040d002002ad428080808080088410050b20012802dc02210520012802d80221072001200141ec026a41c40010dc04220141c4006a200141c40010dc041a20040d0420014188016a200141c4006a41c20010dc041a200141aa016a21040240024020012d00a9014101460d00200141003602d0010c010b200141d0016a200410a7010b02400240024020012d0088014101460d00200141003602e0010c010b200141e0016a20014188016a41017210a70120012802e0010d010b024020012d00a9014101460d00200141d8026a10af0420013502e00242208620012802d8022204ad84100520012802dc02450d04200410230c040b200141d8026a10af0420012802d8022108200120012802e002360284022001200836028002200420014180026a10f50120012802dc02450d03200810230c030b200141f0016a41086a200141e0016a41086a2802002204360200200120012903e00122033703f00120014180026a2003a72209200410a801024020012d0090024102470d00200141003602b803200142013703b003200141c0036a41146a410f360200200141cc036a410c360200200141073602dc03200141c6acc5003602d8032001410c3602c4032001410a3602e403200141cdacc5003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc02200141a8ddc0003602d8022001200141c0036a3602e802200141ec036a41b8a3c500200141d8026a102e1a20013502b80342208620013502b00384100820012802b403450d0220012802b00310230c020b200141d8026a20014180026a41d80010dc041a200141ad036a200141a9016a220841206a2d00003a0000200141a5036a200841186a2900003700002001419d036a200841106a29000037000020014195036a200841086a2900003700002001418d036a2008290000370000200120043602c403200120093602c003200141d8026a200141c0036a10b00420012802dc02450d0120012802d80210230c010b41c00041011030000b024020012802f401450d0020012802f00110230b410121080c010b410021080b0240024020012802d00122040d00410021090c010b200141f0016a41086a200141d0016a41086a2802002209360200200120012903d00122033703f00120014180026a2003a7220a200910a8010240024020012d0090024102470d00200141003602b803200142013703b003200141c0036a41146a410f360200200141cc036a410c360200200141073602dc03200141c6acc5003602d8032001410c3602c4032001410a3602e403200141cdacc5003602e0032001200141f0016a3602d0032001200141e0036a3602c8032001200141d8036a3602c0032001200141b0036a3602ec03200141d8026a41146a4103360200200142033702dc02200141ccdcc0003602d8022001200141c0036a3602e802200141ec036a41b8a3c500200141d8026a102e1a20013502b80342208620013502b00384100820012802b403450d0120012802b00310230c010b200141d8026a20014180026a41d80010dc041a2001418c036a200141a8016a2d00003a000020014184036a200141a0016a290300370200200141fc026a20014198016a290300370200200141f4026a20014188016a41086a29030037020020012001290388013702ec02200120093602c4032001200a3602c003200141d8026a200141c0036a10b00420012802dc02450d0020012802d80210230b024020012802f401450d0020012802f00110230b410121090b0240200820012802e001220a45720d0020012802e401450d00200a10230b2009200445720d0020012802d401450d00200410230b20021023024020004102460d002005450d00200710230b200141f0036a24000bc60303047f017e017f230041d0006b22012400200141c0006a41086a220241c6acc500ad4280808080f000841003220341086a2900003703002001200329000037034020031023200141206a41086a2204200229030037030020012001290340370320200241b6acc500ad42808080808002841003220341086a2900003703002001200329000037034020031023200141306a41086a20022903002205370300200141086a2004290300370300200141186a20053703002001200129034022053703302001200129032037030020012005370310024002404101450d004120210302400240024002404120450d004120102122020d01412041011030000b411021030240411010212202450d00200141106a210420022001290300370000200241086a200141086a2903003700000c020b411041011030000b20022001290300370000200241086a200141086a290300370000200141106a210441204110470d010b20022003200341017422064120200641204b1b220610252202450d02200621030b20022004290000370010200241186a200441086a290000370000200041203602082000200336020420002002360200200141d0006a24000f0b102f000b200641011030000bd90301057f230041106b22022400200241003602082002420137030020002802002103200028020822042002105c02402004450d00200441057421040340200320021071200341206a2103200441606a22040d000b0b200028020c21050240024002400240024020022802042204200228020822036b4104490d00200228020021040c010b200341046a22062003490d03200441017422032006200320064b1b22034100480d030240024020040d002003102121040c010b200228020020042003102521040b2004450d012002200336020420022004360200200228020821030b2002200341046a360208200420036a200536000020002d0010210502400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d03200341017422062004200620044b1b22064100480d030240024020030d002006102121040c010b200228020020032006102521040b2004450d022002200636020420022004360200200228020821030b2002200341016a360208200420036a20053a0000200041146a200210a901200228020421032001290200200235020842208620022802002204ad84100202402003450d00200410230b200241106a24000f0b200341011030000b200641011030000b102a000bed0201057f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341b9adc500ad4280808080d001841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200128020010ac01024041c00010212204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241206a200441c00010ab03024020022802282203450d002000200229022c37020c200020022903203702000b2000200336020820041023200241c0006a24000f0b41c00041011030000bea0201057f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341b9adc500ad4280808080d001841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200110ac01024041c00010212204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241206a200441c00010ab03024020022802282203450d002000200229022c37020c200020022903203702000b2000200336020820041023200241c0006a24000f0b41c00041011030000be10501087f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341b9adc500ad4280808080d001841003220441086a2900003703002002200429000037032020041023200241106a41086a2204200329030037030020022002290320370310200241206a200010ac010240024002400240024041c00010212206450d00200620022903003700002006200229031037001020062002290020370020200641086a2005290300370000200641186a2004290300370000200641286a2003290000370000200641306a200241306a290000370000200641386a200241206a41186a290000370000200241003602282002420137032020012802002104410410212203450d0120024284808080c00037022420022003360220200320043600002001280204210420034104410810252203450d02200242888080808001370224200320043600042002200336022020012802082104200141106a2802002201200241206a105c0240024020010d002002280228210720022802242105200228022021030c010b200141027421084100200228022822016b21002002280224210503402004280200210902400240200520006a4104490d00200228022021030c010b200141046a22032001490d07200541017422072003200720034b1b22074100480d070240024020050d002007102121030c010b200228022020052007102521030b2003450d062002200736022420022003360220200721050b200441046a21042002200141046a2207360228200320016a20093600002000417c6a2100200721012008417c6a22080d000b0b2006ad42808080808008842007ad4220862003ad84100202402005450d00200310230b20061023200241c0006a24000f0b41c00041011030000b410441011030000b410841011030000b200741011030000b102a000bc80501067f230041e0006b22012400200141c0006a41086a220241c6acc500ad4280808080f000841003220341086a2900003703002001200329000037034020031023200141086a200229030037030020012001290340370300200241c6adc500ad42808080809001841003220341086a2900003703002001200329000037034020031023200141106a41086a2002290300370300200120012903403703100240024002400240410410212202450d0020014204370244200120023602402000200141c0006a1071200028022021030240024020012802442200200128024822026b4104490d00200128024021000c010b200241046a22042002490d03200041017422022004200220044b1b22024100480d030240024020000d002002102121000c010b200128024020002002102521000b2000450d022001200236024420012000360240200128024821020b2001200241046a360248200020026a200336000020012802442100200141c0006a41186a2203200135024842208620012802402205ad841001220241186a290000370300200141c0006a41106a2204200241106a290000370300200141c0006a41086a2206200241086a2900003703002001200229000037034020021023200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a20062903003703002001200129034037032002402000450d00200510230b41c00010212202450d03200220012903003700002002200129031037001020022001290320370020200241086a200141086a290300370000200241186a200141106a41086a290300370000200241286a200141206a41086a290300370000200241306a200141306a290300370000200241386a200141206a41186a2903003700002002ad4280808080800884100520021023200141e0006a24000f0b410441011030000b200241011030000b102a000b41c00041011030000bf60e04057f017e197f027e230041f0026b22042400200441a0026a41086a220541c6acc500ad4280808080f000841003220641086a290000370300200420062900003703a00220061023200441386a41086a22072005290300370300200420042903a002370338200541acb2c500ad4280808080d000841003220641086a290000370300200420062900003703a00220061023200441e0016a41086a22062005290300370300200420042903a0023703e001200441a0016a200110ac010240024002400240024041c00010212205450d0020052004290338370000200520042903e001370010200520042900a001370020200541086a2007290300370000200541186a2006290300370000200541286a200441a0016a41086a290000370000200541306a200441b0016a290000370000200541386a200441a0016a41186a290000370000200441c00036027c20042005360278200441386a2005ad42808080808008841004109001024020042802382206450d00200428023c210802400240200441c0006a280200450d0020062d000022074103490d010b200441003602e801200442013703e0012004410c36020c2004200441f8006a3602082004200441e0016a3602c001200441b4026a4101360200200442013702a40220044198c2c3003602a0022004200441086a3602b002200441c0016a41b8a3c500200441a0026a102e1a20043502e80142208620043502e001841008024020042802e401450d0020042802e00110230b410321070b02402008450d00200610230b20074103470d020b200510230c020b41c00041011030000b200510230240024020070e03020001020b200441a0026a20012002200310e30220043502a0024201852102200441b0026a2903002109200441a8026a29030021030c030b200441a0026a200110b80420042d00a0024101470d01200441f8016a200441b9026a290000370300200441e0016a41106a200441b1026a290000370300200441e0016a41086a200441a9026a290000370300200420042900a1023703e001200441386a200441e0016a2002200310e30220043502384201852102200441386a41106a2903002109200441386a41086a29030021030c020b200441f8006a200110b80420042d00784101470d00200441c0016a41186a220720044191016a290000370300200441c0016a41106a220520044189016a290000370300200441c0016a41086a220620044181016a290000370300200420042900793703c001200441a0026a200441c0016a10f203200441a0016a41186a22082007290300370300200441a0016a41106a22072005290300370300200441a0016a41086a220a2006290300370300200420042903c0013703a00120042802c002220b450d00200441e0016a41186a220c2008290300370300200441e0016a41106a220d2007290300370300200441e0016a41086a220e200a290300370300200441e0016a41286a2207200441a0026a41086a2208290300370300200441e0016a41306a220a200441a0026a41106a220f290300370300200441e0016a41386a2210200441a0026a41186a2211290300370300200441086a41286a2212200441ec026a2213280200360200200441086a41206a2214200441e4026a2215290200370300200441086a41186a2216200441dc026a2217290200370300200441086a41106a2218200441d4026a2219290200370300200441086a41086a221a200441cc026a221b290200370300200420042903a0013703e001200420042903a00237038002200420042902c402370308200441386a41386a221c2010290300370300200441386a41306a221d200a290300370300200441386a41286a221e2007290300370300200441386a41206a221f200429038002370300200441386a41186a2220200c290300370300200441386a41106a2221200d290300370300200441386a41086a2222200e290300370300200420042903e0013703382010201c290300370300200a201d2903003703002007201e290300370300200441e0016a41206a221c201f290300370300200c2020290300370300200d2021290300370300200e2022290300370300200420042903383703e001200441f8006a41186a2020290300370300200441f8006a41106a2021290300370300200441f8006a41086a20222903003703002004200429033837037820112010290300370300200f200a290300370300200820072903003703002004200b3602c0022004201c2903003703a002200441c4026a22072004290308370200201b201a2903003702002019201829030037020020172016290300370200201520142903003702002013201228020036020020112903002109200f200f290300222320027c22243703002011200920037c2024202354ad7c37030020082903002109200420042903a002222320027c22243703a0022008200920037c2024202354ad7c370300200441c0016a20012002200310e30220043502c00121022005290300210920062903002103200441f8006a200441a0026a10b90402402007280200450d0020042802c00210230b200242018521020c010b420021020b2000200337030820002002370300200041106a2009370300200441f0026a24000bf80302047f027e230041c0016b22022400200241086a200110b8040240024020022d00084101470d0020024180016a41186a200241216a29000037030020024180016a41106a200241196a29000037030020024180016a41086a200241116a2900003703002002200229000937038001200241306a41086a220341c6acc500ad4280808080f000841003220141086a2900003703002002200129000037033020011023200241a0016a41086a22042003290300370300200220022903303703a001200341f7acc500ad4280808080e000841003220141086a2900003703002002200129000037033020011023200241b0016a41086a22052003290300370300200220022903303703b001200241306a20024180016a10ac01024041c00010212201450d00200120022903a001370000200120022903b00137001020012002290030370020200141086a2004290300370000200141186a2005290300370000200141286a2003290000370000200141306a200241306a41106a290000370000200141386a200241306a41186a2203290000370000200241306a200141c00010ad0320032903002106200229034021072002280254210420022802502103200110232003450d012004450d02200310230c020b41c00041011030000b42002107420021060b2000200737030020002006370308200241c0016a24000bb71105017f047e017f057e047f230041b0026b22052400200541a0016a200010b80402400240024020052d00a0014101470d00200541306a41186a200541b9016a290000370300200541c0006a200541b1016a290000370300200541306a41086a200541a9016a290000370300200520052900a101370330200541a0016a200541306a10f20320052802c001450d00200541d0006a200541a0016a41d00010dc041a200541d0006a41086a290300210620052903502107024002402005290360220820012008200154200541d0006a41186a290300220920025420092002511b220a1b220b20092002200a1b220c8450450d002007210d2006210e0c010b200541e8006a220a2009200c7d2008200b54ad7d220d37030020052008200b7d220f37036002400240200f4280c8afa02556200d420052200d501b450d00200b2108200c21090c010b200a420037030020054200370360200d20027c200f20017c2201200f54ad7c21020b20054200200620097d2007200854ad7d220b200720087d220d200756200b200656200b2006511b220a1b220e37035820054200200d200a1b220d370350200220097d2001200854ad7d2102200120087d21010b02400240024002400240200541f8006a28020022100d004100210a410021100c010b2005280270210a201041186c21114100211003400240200a2903002208200120012008562002200a41086a221229030022095620022009511b22131b220b2009200220131b220c84500d00200a2008200b7d220f370300200a2009200c7d2008200b54ad7d220d37030802400240200f4280c8afa02556200d420052200d501b450d00200b2108200c21090c010b200a4200370308200a4200370300200d20027c200f20017c2201200f54ad7c21020b200541d0006a41086a221342002013290300220b20097d2005290350220d200854ad7d220c200d20087d220f200d56200c200b56200c200b511b22131b220e37030020054200200f20131b220d370350200220097d2001200854ad7d2102200120087d210120122903002109200a29030021080b024020082009844200520d00200a41186a210a201041016a2110201141686a22110d010b0b2005280278220a2010490d010b200541003602780240200a20106b220a450d0002402010450d00200528027022132013201041186c6a200a41186c10dd041a200541d8006a290300210e2005290350210d0b2005200a3602780b42002007200d7d220820082007562006200e7d2007200d54ad7d220920065620092006511b220a1b220842002009200a1b22098450450d010c020b41ccbac000102b000b200541a0016a41086a221041d5fbc400ad42808080808001841003220a41086a2900003703002005200a2900003703a001200a102320054190026a41086a22132010290300370300200520052903a00137039002201041e3a0c200ad4280808080b001841003220a41086a2900003703002005200a2900003703a001200a1023200541a0026a41086a22112010290300370300200520052903a0013703a002200541a0016a200010ac0141c0001021220a450d02200a200529039002370000200a20052903a002370010200a20052900a001370020200a41086a2013290300370000200a41186a2011290300370000200a41286a2010290000370000200a41306a200541a0016a41106a290000370000200a41386a200541a0016a41186a290000370000200541186a200a41c000108902200541186a41106a29030021022005290320210120052802182110200a102320002001420020101b22012008200120012008562002420020101b220b200956200b2009511b220a1b22027d200b2009200b200a1b220c7d2001200254ad7d10dc0202400240200820027d220b2009200c7d2008200254ad7d220d844200520d002004427f2004290300220220087c22012001200254220a200441086a2210290300220220097c200aad7c220120025420012002511b220a1b3703002010427f2001200a1b3703000c010b200541a0016a41086a221041d5fbc400ad42808080808001841003220a41086a2900003703002005200a2900003703a001200a102320054190026a41086a22132010290300370300200520052903a00137039002201041eea0c200ad4280808080f001841003220a41086a2900003703002005200a2900003703a001200a1023200541a0026a41086a22112010290300370300200520052903a0013703a002200541a0016a200010ac0141c0001021220a450d04200a200529039002370000200a20052903a002370010200a20052900a001370020200a41086a2013290300370000200a41186a2011290300370000200a41286a2010290000370000200a41306a200541a0016a41106a290000370000200a41386a200541a0016a41186a2900003700002005200a41c000108902200541106a29030021012005290308210f20052802002110200a10232000200f420020101b220f200b200f200f200b562001420020101b220e200d56200e200d511b220a1b22017d200e200d200e200a1b22067d200f200154ad7d10ca022004427f2004290300220f200120027c220e7c22022002200f54220a200441086a221029030022022006200c7c200e200154ad7c7c200aad7c220c200254200c2002511b220a1b3703002010427f200c200a1b370300200b20017d2202200d20067d200b200154ad7d220d84500d00200342002003290300220120027d220b200b200156200341086a220a290300220b200d7d2001200254ad7d2202200b562002200b511b22101b370300200a4200200220101b3703000b200541306a200541d0006a10b904200541d8016a2009370300200541d0016a2008370300200541a0016a41086a41013a0000200541a9016a2000290000370000200541b1016a200041086a290000370000200541b9016a200041106a290000370000200541c1016a200041186a290000370000200541033a00a001200541a0016a108e010b200541f4006a280200450d00200528027010230b200541b0026a24000f0b41c00041011030000b41c00041011030000be50301047f230041f0006b22022400200241086a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037030820041023200241306a41086a2205200329030037030020022002290308370330200341f1acc500ad4280808080e000841003220441086a2900003703002002200429000037030820041023200241c0006a41086a2204200329030037030020022002290308370340200241d0006a200110ac01024041c00010212203450d00200320022903303700002003200229034037001020032002290350370020200341086a2005290300370000200341186a2004290300370000200341286a200241d0006a41086a2205290300370000200341306a200241e0006a2204290300370000200341386a200241d0006a41186a2201290300370000200241086a200341c000108a012005200241086a41096a2900003703002004200241086a41116a2900003703002001200241086a41196a290000370300200220022900093703500240024020022d00084101460d00200041003a00000c010b200041013a000020002002290350370001200041096a200241d8006a290300370000200041116a2004290300370000200041196a20012903003700000b20031023200241f0006a24000f0b41c00041011030000bb70401067f230041d0006b22022400200242f3e885db96cddbb320370308200241086a2001412c6a22032001290300200141086a290300417f411f10f701200241306a41086a220441c6acc500ad4280808080f000841003220541086a2900003703002002200529000037033020051023200241106a41086a2206200429030037030020022002290330370310200441f7acc500ad4280808080e000841003220541086a2900003703002002200529000037033020051023200241206a41086a2207200429030037030020022002290330370320200241306a200010ac01024041c00010212205450d00200520022903103700002005200229032037001020052002290030370020200541086a2006290300370000200541186a2007290300370000200541286a2004290000370000200541306a200241306a41106a290000370000200541386a200241306a41186a29000037000020024100360238200242013703302003200241306a107120022001360220200241206a200241306a10c3012002200141106a360220200241206a200241306a10c30120012802202104200141286a2802002201200241306a105c02402001450d002004200141186c6a2101034020022004360220200241206a200241306a10c301200441106a200241306a10af012001200441186a2204470d000b0b200228023421042005ad4280808080800884200235023842208620022802302201ad84100202402004450d00200110230b20051023200241d0006a24000f0b41c00041011030000b130020004110360204200041b4b2c5003602000bcd0405057f017e017f027e037f230041e0006b22002400200041206a41186a22014200370300200041206a41106a22024200370300200041206a41086a2203420037030020004200370320200041d0006a41086a220441c6acc500ad4280808080f0008422051003220641086a29000037030020002006290000370350200610232003200429030037030020002000290350220737034020002007370320200441e8fbc500ad428080808080018422081003220641086a2900003703002000200629000037035020061023200220002903502207370300200041086a22092003290300370300200041106a220a2007370300200041186a220b200429030037030020002007370340200020002903203703000240024002404100200010a9032206200641ff01714104461b41ff0171417f6a220641024b0d0020060e03010001010b20014200370300200242003703002003420037030020004200370320200420051003220641086a29000037030020002006290000370350200610232003200429030037030020002000290350220737034020002007370320200420081003220641086a2900003703002000200629000037035020061023200041c0006a41086a2004290300220737030020002000290350220537034020022005370000200241086a200737000020092003290300370300200a2002290300370300200b200129030037030020002000290320370300410110212204450d01200441013a00002000ad42808080808004842004ad428080808010841002200410230b200041e0006a24000f0b410141011030000b3400200041c6acc50036020420004100360200200041146a411a360200200041106a41a8e5c500360200200041086a42073702000b6101017f02400240411010212202450d00200242003700082002420037000020024110412010252202450d0120024200370010200042a0808080800437020420002002360200200241186a42003700000f0b411041011030000b412041011030000b940603027f027e047f230041106b22032400200341003602082003420137030020022003105c024002400240024002402002450d002001200241d8006c6a21040340200141386a20031071200141086a2903002105200129030021060240024020032802042207200328020822026b4110490d00200328020021070c010b200241106a22082002490d06200741017422022008200220084b1b22024100480d060240024020070d002002102121070c010b200328020020072002102521070b2007450d032003200236020420032007360200200328020821020b200720026a22072005370008200720063700002003200241106a36020820012802202102200128022822072003105c02402007450d002002200741306c6a21090340200220031071200241286a2903002105200241206a29030021060240024020032802042208200328020822076b4110490d00200328020021080c010b200741106a220a2007490d0820084101742207200a2007200a4b1b22074100480d080240024020080d002007102121080c010b200328020020082007102521080b2008450d062003200736020420032008360200200328020821070b200820076a22082005370008200820063700002003200741106a3602082009200241306a2202470d000b0b200128022c2102200141346a28020022072003105c02402007450d00200741057421070340200220031071200241206a2102200741606a22070d000b0b200141186a2903002105200129031021060240024020032802042207200328020822026b4110490d00200328020021070c010b200241106a22082002490d06200741017422022008200220084b1b22024100480d060240024020070d002002102121070c010b200328020020072002102521070b2007450d052003200236020420032007360200200328020821020b200720026a22072005370008200720063700002003200241106a360208200141d8006a22012004470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b200241011030000b200741011030000b200241011030000b102a000b090020004100108c030b6b01027f230041106b22022400200241003602082002420137030002404104102122030d00410441011030000b2003410036000020024284808080c0003702042002200336020041002002105c200041086a200228020836020020002002290300370200200241106a24000b8c0201037f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10c3012002200336023c2002413c6a200241306a10c3012002280220210320042802002204200241306a105c02402004450d00200441306c21040340200341106a200241306a10712002200336023c200341306a21032002413c6a200241306a10c301200441506a22040d000b0b20002002290330370200200041086a200241306a41086a28020036020002402002280224450d00200228022010230b200241c0006a24000b890201047f230041106b220224002002410036020c024002400240024002400240410110212203450d000240200228020c2204413f4b0d00200320044102743a0000410121050c050b200441808001490d032004418080808004490d020c010b410141011030000b200341033a0000200228020c210441052105024020034101410510252203450d00200320043600010c030b410541011030000b41042105024020034101410410252203450d00200320044102744102723600000c020b410441011030000b4102210520034101410210252203450d01200320044102744101723b00000b200020053602082000200536020420002003360200200241106a24000f0b410241011030000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241043600000b130020004102360204200041ac92c6003602000b3001017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241063600000bbd0101057f2001280208210302402001410c6a280200220420024d0d0002400240200141186a2802002205450d00200141106a2802002101200541027421062003417f6a2103034002402004200128020022076b220520024b0d00200420024b0d030b200141046a21012003417f6a2103200521042006417c6a22060d000b0b200041023602080f0b2000200736020c2000410136020820002005ad4220862003ad843702000f0b2000410036020820002004ad4220862003ad843702000b931704027f037e057f047e230041e0026b22052400200541c8016a2001200210c6040240024020052802d0014102470d00410021020c010b20052802c80121062001280204220241086a2900002107200241106a290000210820022900002109200541c8016a41186a200241186a290000370300200541c8016a41106a2008370300200541c8016a41086a2007370300200520093703c801200520063602e801200541b0026a41086a220241c6acc500ad4280808080f000841003220a41086a2900003703002005200a2900003703b002200a1023200541f0016a41086a2002290300370300200520052903b0023703f001200241c6adc500ad42808080809001841003220a41086a2900003703002005200a2900003703b002200a102320054180026a41086a2002290300370300200520052903b00237038002024002400240024002400240024002400240024002400240410410212202450d00200542043702b402200520023602b002200541c8016a200541b0026a107120052802e801210b0240024020052802b402220a20052802b80222026b4104490d0020052802b002210a0c010b200241046a220c2002490d09200a4101742202200c2002200c4b1b22024100480d0902400240200a0d0020021021210a0c010b20052802b002200a20021025210a0b200a450d02200520023602b4022005200a3602b00220052802b80221020b2005200241046a3602b802200a20026a200b36000020052802b402210a200541b0026a41186a220b20053502b80242208620052802b002220dad841001220241186a290000370300200541b0026a41106a220c200241106a290000370300200541b0026a41086a220e200241086a290000370300200520022900003703b0022002102320054190026a41186a200b29030037030020054190026a41106a200c29030037030020054190026a41086a200e290300370300200520052903b002370390020240200a450d00200d10230b41c00010212202450d02200220052903f00137000020022005290380023700102002200529039002370020200241086a200541f0016a41086a290300370000200241186a20054180026a41086a220b290300370000200241286a20054190026a41086a290300370000200241306a20054190026a41106a290300370000200241386a20054190026a41186a290300370000200541c0003602d402200520023602d00220054180026a2002ad4280808080800884100410900102400240200528028002220a0d004200210f0c010b200528028402210c02400240200b280200220b4110490d00200b4170714110460d00200a41186a2900002108200a41086a2900002110200a2900102107200a29000021094201210f0c010b200541003602980220054201370390022005410c3602f4012005200541d0026a3602f001200520054190026a3602dc02200541c4026a4101360200200542013702b40220054198c2c3003602b0022005200541f0016a3602c002200541dc026a41b8a3c500200541b0026a102e1a2005350298024220862005350290028410080240200528029402450d0020052802900210230b4200210f0b200c450d00200a10230b2002102320084200200f42005222021b21082007420020021b21072009420020021b220f2003542010420020021b220920045420092004511b0d03200f20038520092004858450450d05200541b8016a20032004428094ebdc03420010e204200541a8016a20052903b8012209200541b8016a41086a290300220f4280ec94a37c427f10e10420054198016a2009200f20013502242210420010e10420054188016a4200200529039801220f201020052903a80120037c7e22092009428094ebdc038022094280ec94a37c7e7c4280cab5ee01562009a76aad7c220920077d2210201020095620054198016a41086a2903002009200f54ad7c220f20087d2009200754ad7d2209200f562009200f511b22021b220f4200200920021b428094ebdc03420010e204200541f8006a200529038801220920054188016a41086a29030022104280ec94a37c427f10e104200541e8006a200920104280cab5ee01420010e104200541e8006a41086a29030020052903682210200f20052903787c22094280cab5ee017e428094ebdc03824280cab5ee01562009420188a76aad7c2209201054ad7c210f410021020c040b410441011030000b200241011030000b41c00041011030000b200541c8006a20032004428094ebdc03420010e204200541d8006a20032004428094ebdc03420010e304200541386a2005290348200541c8006a41086a29030020013502242210420010e104200541286a420020052903382211201020052903587e22102010428094ebdc038022104280ec94a37c7e7c4280cab5ee01562010a76aad7c221020077d22122012201056200541386a41086a2903002010201154ad7c221120087d2010200754ad7d221020115620102011511b22021b22114200201020021b428094ebdc03420010e204200541186a20052903282210200541286a41086a29030022124280ec94a37c427f10e104200541086a201020124280cab5ee01420010e104200141206a28020022022003200f7d221020022903007c2212370300200241086a2202200420097d2003200f54ad7d20022903007c2012201054ad7c370300200541086a41086a2903002005290308220f201120052903187c22094280cab5ee017e428094ebdc03824280cab5ee01562009420188a76aad7c2209200f54ad7c210f410121020b024002402009200f84500d00200128021c22022002290300221020097c2211370300200241086a22022002290300200f7c2011201054ad7c3703002008200f7c200720097c2209200754ad7c2108200921070c010b2002450d010b200141013a0028200541b0026a41086a220241c6acc500ad4280808080f000841003220141086a290000370300200520012900003703b00220011023200541f0016a41086a2002290300370300200520052903b0023703f001200241c6adc500ad42808080809001841003220141086a290000370300200520012900003703b0022001102320054180026a41086a2002290300370300200520052903b00237038002410410212202450d01200542043702b402200520023602b002200541c8016a200541b0026a107120052802e801210a0240024020052802b402220120052802b80222026b4104490d0020052802b00221010c010b200241046a220b2002490d0420014101742202200b2002200b4b1b22024100480d040240024020010d002002102121010c010b20052802b00220012002102521010b2001450d03200520023602b402200520013602b00220052802b80221020b2005200241046a3602b802200120026a200a36000020052802b4022101200541b0026a41186a220a20053502b80242208620052802b002220ead841001220241186a290000370300200541b0026a41106a220b200241106a290000370300200541b0026a41086a220c200241086a290000370300200520022900003703b0022002102320054190026a41186a200a29030037030020054190026a41106a200b29030037030020054190026a41086a200c290300370300200520052903b0023703900202402001450d00200e10230b41c00010212202450d04200220052903f00137000020022005290380023700102002200529039002370020200241086a200541f0016a41086a290300370000200241186a20054180026a41086a290300370000200241286a20054190026a41086a290300370000200241306a20054190026a41106a290300370000200241386a20054190026a41186a290300370000411010212201450d05200120033700002001200437000820014110412010252201450d0620012007370010200141186a20083700002002ad42808080808008842001ad4280808080800484100220011023200210230b410121020c060b410441011030000b200241011030000b102a000b41c00041011030000b411041011030000b412041011030000b2000200636020420002002360200200541e0026a24000bc70302057f017e230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341acb2c500ad4280808080d000841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200010ac010240024041c00010212204450d00200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a29000037000002400240200141ff0171220341024d0d004101210342002107410121010c010b024002400240024020030e03000102000b410021010c020b410121010c010b410221010b200220013a0020410110212203450d02200320013a00004100210142808080801021070b2004ad428080808080088420072003ad841002024020010d00200310230b20041023200241c0006a24000f0b41c00041011030000b410141011030000bcc0201057f230041c0006b22022400200241206a41086a220341c6acc500ad4280808080f000841003220441086a2900003703002002200429000037032020041023200241086a2205200329030037030020022002290320370300200341f1acc500ad4280808080e000841003220441086a2900003703002002200429000037032020041023200241106a41086a2206200329030037030020022002290320370310200241206a200010ac01024041c000102122040d0041c00041011030000b200420022903003700002004200229031037001020042002290020370020200441086a2005290300370000200441186a2006290300370000200441286a2003290000370000200441306a200241306a290000370000200441386a200241206a41186a290000370000200241c000360224200220043602202001200241206a10f50120041023200241c0006a24000b130020004101360204200041b8a5c6003602000b1300200041023602042000418ca7c6003602000b3101017f02404104102122020d00410441011030000b20004284808080c00037020420002002360200200241e5003600000b3400200041d899c60036020420004100360200200041146a4101360200200041106a41e4a9c600360200200041086a42183702000b3400200041a79fc60036020420004100360200200041146a4103360200200041106a41fcacc600360200200041086a420c3702000b13002000410136020420004198b1c6003602000ba70201077f0240024002400240200041086a2802002201450d00410020014102746b2102417f210320002802002204210503402002450d01200341016a2103200241046a210220052802002106200541046a21052006450d000b4100200641004741016a41017122056b2003460d002001200520036a2207490d012001200641004741016a4101716b20036b220541ffffffff03712005470d0220054102742203417f4c0d020240024020030d00410421010c010b200310212201450d040b2001200420074102746a4104200641004741016a41017141027420026a6b10dc0421020240200041046a280200450d00200028020010230b20002002360200200041086a2005360200200041046a20053602000b0f0b20072001103e000b102f000b200341041030000bbf0403067f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b200610272208450d020b024020050d00420021090c040b2004417f6a220a20044b210b2002280200210c2003417f6a220d20034b0d022001280200210e20082007417f6a22024102746a210f410021064200210903404100211002402003200d20066b22114d0d00410021102011200d4b0d00200e20114102746a28020021100b410021110240200b0d002004200a20066b22124d0d002012200a4b0d00200c20124102746a28020021110b200720024d0d05200f20092010ad7c2011ad7c22093e0200200f417c6a210f2002417f6a210220094220882109200641016a22062005490d000c040b0b102f000b200641041030000b20082007417f6a22024102746a21104100210f420021090340410021060240200b0d00410021062004200a200f6b22114d0d00410021062011200a4b0d00200c20114102746a28020021060b200720024d0d02201020092006ad7c22093e02002010417c6a21102002417f6a210220094220882109200f41016a220f2005490d000b0b024020072005417f736a220220074f0d00200020073602082000200736020420002008360200200820024102746a20093e02000240200141046a280200450d00200128020010230b0f0b41b8b3c60020022007102d000b41b8b3c60020022007102d000bbf04030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b200510272207450d010b2004450d022001280200210802400240024020030d0020082004417f6a22054102746a210320072006417f6a22024102746a21090340200420054d0d0302402003280200450d00200620024d0d03200941003602000b2003417c6a21032009417c6a21092002417f6a21022005417f6a2205417f470d000c060b0b200641027420076a417c6a210a200341027420022802006a417c6a210b4100210c2006210d03402004200c417f736a220520044f0d020240200820054102746a220e280200220f450d0042002110417f2105200a2102200b2109024003402006200d20056a22114d0d0120022009350200200fad7e20107c20023502007c22103e0200201042208821100240200320056a0d002006200c20036a417f736a220220064f0d05200720024102746a20103e02000c030b2002417c6a21022009417c6a2109200e280200210f20032005417f6a22056a22112003490d000b41d4b2c60020112003102d000b41d4b2c60020112006102d000b200a417c6a210a200d417f6a210d200c41016a220c2004460d050c000b0b41b8b3c60020022006102d000b41d4b2c60020052004102d000b200541041030000b102f000b2000200636020820002006360204200020073602000240200141046a280200450d00200128020010230b0bb60302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b4187b5c6004118200141086a41a0b5c6001031000b4187b5c6004118200141086a41a0b5c6001031000b41d4b2c60020082005102d000b41d4b2c60020092000102d000b41b0b5c6004110200141086a41c0b5c6001031000b41d4b2c60020022000102d000b41b0b5c6004110200141086a41c0b5c6001031000b9e0301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b20082002103e000b20002009103e000b100020002802002000280204200110580b8906010d7f200128000c21022001280204210320012802002104024002400240024002400240024020012d000822054102470d00200320044f0d010c020b20054101710d010b41002106024002400240024002404100200320046b2201200120034b1b220741016a220120074f0d000240200420034b200520054102461b22014102460d002001410171450d004104210841002101410021060c080b2003417f732109200241086a210a41002107200321054104210841002106410021010340200920016a220b200a280200220c6a220d200b4f0d022004200549210b2002280200200d4102746a280200210d024020012006470d002006417f417f41002005200b6b220c20046b220e200e200c4b1b220c41016a220e200e200c491b4100200b1b220c41016a220e200e200c491b6a220c2006490d062006410174220e200c200e200c4b1b220c41ffffffff0371200c470d06200c410274220e4100480d060240024020060d00200e102121080c010b20082006410274200e102521080b2008450d04200c21060b200820076a200d360200200741046a21072005417f6a2105200141016a2101200b0d000c080b0b024020010d00410421080c060b200141ffffffff03712001470d03200141027422064100480d03200610212208450d02200121060c050b41d4b2c600200120036b200c6a417f6a200c102d000b200e41041030000b200641041030000b102a000b41042108410021060b410021012003200449200520054102461b4101710d0002400240200320044d0d002003417f732101200241086a210d200821052003210703402001200d280200220c6a220b20014f0d0420052002280200200b4102746a280200360200200141016a2101200541046a210520042007417f6a2207490d000b200320046b41016a21010c010b20032004470d0141012101200821050b200241086a28020022072004417f736a220420074f0d022005200228020020044102746a2802003602000b2000200136020820002006360204200020083602000f0b41d4b2c600200b200c102d000b41d4b2c60020042007102d000b7701027f230041106b2203240002404110102122040d00411041041030000b200420013e020c200420014220883e0208200420023e0204200420024220883e020020034284808080c00037020420032004360200200310d004200041086a200328020836020020002003290300370200200341106a24000bac0301047f230041c0006b2202240020002802002100410121030240200128021841c1acc000410c2001411c6a28020028020c1100000d0002400240200028020822030d0020002802002203200028020428020c11040042e4aec285979ba58811520d012002200336020c2002411336021420022002410c6a36021020012802182104200128021c2105410121032002413c6a41013602002002420237022c200241d0acc0003602282002200241106a36023820042005200241286a102e0d020c010b2002200336020c2002410836021420022002410c6a36021020012802182104200128021c2105410121032002413c6a41013602002002420237022c200241d0acc0003602282002200241106a36023820042005200241286a102e0d010b200241106a41146a4101360200200241106a410c6a4101360200200241043602142002200041186a3602202002200041146a36021820022000410c6a36021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241e0acc0003602282002200241106a36023820002001200241286a102e21030b200241c0006a240020030b21002000417f6a41ff01712002ad4220862001ad842004ad4220862003ad8410000b1c00200128021841d9bec600410f2001411c6a28020028020c1100000b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010e404200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10e404200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa710e004200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff007110df04200641106a20012002200741ff007110e004200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0b93bf060300418080c0000be8be061800100011000000290010001700000009030000050000006361706163697479206f766572666c6f777372632f6c6962616c6c6f632f7261775f7665632e7273b00010004600000063010000130000001400000004000000040000001500000016000000170000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f720018000000000000000100000019000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f666d742f6d6f642e72730000180110002000000038011000120000001800000000000000010000001a000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973203030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939000034021000060000003a02100022000000cc9b110018000000180a000005000000696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468207c02100016000000920210000d000000cc9b1100180000001e0a000005000000736c69636520696e64657820737461727473206174202062757420656e6473206174206030785b2e2e2e5d00660310000b00000012161000160000009f0210000100000050031000160000000308000009000000f01510000e000000fe1510000400000002161000100000009f0210000100000050031000160000000708000005000000b01510002b000000db151000150000007a01000015000000660310000b000000710310002600000097031000080000009f031000060000009f02100001000000500310001600000014080000050000007372632f6c6962636f72652f7374722f6d6f642e72736279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060000000e603100002000000d0031000160000006004000011000000d00310001600000054040000280000007372632f6c6962636f72652f666d742f6d6f642e72732e2e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000f8030000000000000000000000000000000000000000000000000000000000000000feffffffffbfb6000000000000000000ff070000000000f8ffff0000010000000000000000000000c09f9f3d0000000002000000ffffff0700000000000000000000c0ff01000000000000f80f20900f10004a000000e011100000020000e01310003a00000000010203040506070809080a0b0c0d0e0f10111213140215161718191a1b1c1d1e1f2002020202020202020202210202020202020202020202020202222324252602270228020202292a2b022c2d2e2f300202310202023202020202020202023302023402020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023502360237020202020202020238023902020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023a3b3c020202023d02023e3f4041424344454602020247020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202024802020202020202020202024902020202023b020001020202020302020202040205060202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020207020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200010305050606030706080809110a1c0b190c140d120e0d0f0410031212130916011705180219031a071c021d011f1620032b042c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f0040d1145496465808184b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596972f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab351e1580e003190801042f043404070301070607110a500f1207550802041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a061f414c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b030740c80d61a0c0580ff0580b605240c9bc60ad23010848d033709815c1480b80880c73035040a06380846080c06740b1e035a0459098083181c0a16094808808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b02100111041205131114021502170219041c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f906fa020c273b3e4e4f8f9e9e9f060709363d3e56f3d0d104141836375657bd35cecfe01287898e9e040d0e11122931343a4546494a4e4f64655a5cb6b71b1ca8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d00c72a3a4cbcc6e6f5e227b0503042d036504012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a81261f808128082a808617094e041e0f430e19070a0647092709750b3f412a063b050a0651060105100305808b602048080a80a65e22450b0a060d1339070a362c041080c03c64530c0180a0451b4808531d398107460a1d03474937030e080a0639070a81361980c7320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140041c97f80882f3a50d811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a0d035d033d391d0d2c040907020e06809a83d60a0d030b05740c59070c140c0438080a0628081e527703310380a60c14040305030d06856a000000700f1000200000002700000019000000700f1000200000002800000020000000700f1000200000002a00000019000000700f1000200000002b00000018000000700f1000200000002c0000002000000000000000000000007372632f6c6962636f72652f756e69636f64652f626f6f6c5f747269652e72730000c0fbef3e00000000000e0000000000000000000000000000f8fffbffffff0700000000000014fe21fe000c00000002000000000000501e2080000c00004006000000000000108639020000002300be2100000c0000fc02000000000000d01e20c0000c0000000400000000000040012080000000000011000000000000c0c13d60000c0000000200000000000090443060000c00000003000000000000581e2080000c00000000845c8000000000000000000000f207807f000000000000000000000000f21f003f000000000000000000030000a002000000000000fe7fdfe0fffeffffff1f40000000000000000000000000e0fd66000000c301001e006420002000000000000000e00000000000001c0000001c0000000c0000000c00000000000000b03f40fe0f200000000000380000000000006000000000020000000000008701040e00008009000000000000407fe51ff89f000000000000ff7f0f0000000000f0170400000000f80f00030000003c3b00000000000040a303000000000000f0cf000000f7fffd211003fffffffffffffffb00100000000000000000ffffffff01000000000000800300000000000000008000000000ffffffff0000000000fc00000000000600000000000000000080f73f000000c0000000000000000000000300440800006000000030000000ffff038000000000c03f000080ff030000000000070000000000c833000000002000000000000000007e660008100000000000100000000000009dc1020000000030400000000000202100000000004000000000ffff0000ffff00000000000000000001000000020003000000000000000000000000000000000000000000000000000004000005000000000000000006000000000000000007000008090a000b0c0d0e0f000010111200001314151600001718191a1b001c0000001d0000000000001e1f202100000000002200230024252600000000270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002829000000000000000000000000000000002a2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000002d2e00002f0000000000000000000000000000000000000000000000000000000000003031320000000000000000000000000000000000000000003300000029000000000000340000000000000000000000000000000000000000000000350036000000000000000000000000000000000000000000000000000037380000383838390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000c0076ef0000000000087000000006000000000000000f0000000c0ff01000000000002000000000000ff7f0000000000008003000000000078060700000080ef1f000000000000000800030000000000c07f001e000000000000000000000080d34000000080f8070000030000000000005801008000c01f1f0000000000000000ff5c00004000000000000000000000f9a50d000000000000000000000000803cb00100003000000000000000000000f8a70100000000000000000000000028bf00000000e0bc0f0000000000000080ff060000f00c01000000fe0700000000f87980007e0e0000000000fc7f03000000000000000000007fbf0000fcfffffc6d000000000000007eb4bf000000000000000000a3000000000000000000000018000000000000001f000000000000007f0000800000000000000080070000000000000000600000000000000000a0c307f8e70f0000003c00001c00000000000000ffffffffffff7ff8ffffffffff1f2000100000f8feff00007ffffff9db0700000000000000f0000000007f0000000000f00700000000000000000000ffffffffffffffffffffffffffffffffffff000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75657372632f6c6962636f72652f6f7074696f6e2e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f662060426f72726f774572726f72426f72726f774d75744572726f7270616e69636b65642061742000000079161000010000007a16100003000000449c110000000000781610000100000078161000010000003a27272c20000000db15100015000000a204000005000000a0161000150000008d040000050000007372632f6c6962636f72652f726573756c742e72735b5d0a1b0000000c000000040000001c0000001d0000001e0000002c0a2c201400000004000000040000001f000000200000002100000020202020180000000000000001000000220000002300000024000000140000000400000004000000250000002600000027000000000000007817100010000000000000008817100001000000000000000000000090171000010000000000000000000000981710000f00000000000000a8171000020000000000000000000000b8171000010000000000000045787472696e73696353756363657373d51710000c000000e11710002500000045787472696e7369634661696c656400389d11000d000000d51710000c000000c01710001500000020416e2065787472696e736963206661696c65642e4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e52657175697265526f6f744f726967696e526571756972655369676e65644f726967696e526571756972654e6f4f726967696e00000000000000171810001300000000000000449c1100000000000000000000000000061810001100000000000000449c11000000000000000000000000002a1810000f00000000000000449c110000000000000000001800000000000000010000002800000029000000240000001800000000000000010000002800000029000000240000000000000001000000020000000400000008000000100000002000000000000000601910000e000000000000007019100001000000000000000000000078191000010000000000000000000000801910000600000000000000449c110000000000000000000000000088191000010000000000000000000000901910000700000000000000449c11000000000000000000000000009819100001000000000000004e6577417574686f7269746965730000907710000d000000ef191000240000005061757365640000c819100027000000526573756d656400a0191000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e4f6666636861696e206572726f723a206665746368696e67206e6574776f726b207374617465206661696c6564214f6666636861696e206572726f723a207369676e696e67206661696c6564214f6666636861696e206572726f723a206465636f64696e6720576f726b6572537461747573206661696c6564214f6666636861696e206572726f723a207375626d697474696e67207472616e73616374696f6e206661696c6564210000000000e81a10000700000000000000f01a1000020000000000000000000000001b100002000000000000004f6666656e63650036b61000040000003ab610000e000000101b100055000000651b10004e00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e0000000000e01b10000a00000000000000b8571100010000000000000000000000ec1b100002000000000000004e657753657373696f6e0000fc1b100055000000511c100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53746f72656452616e67650000901c100048000000a20a00000e0000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e727374696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e4572726f727372632f6c6962616c6c6f632f7665632e7273000000641d10001c000000361d100013000000c904000009000000617373657274696f6e206661696c65643a20656e64203c3d206c656e981d10001e000000361d100013000000b603000009000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e0000d01d10001d000000361d100013000000de03000009000000617373657274696f6e206661696c65643a20696e646578203c206c656e000000001e1000430000000a0b0000300000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962616c6c6f632f7665632e727300001e100043000000160b00002c0000003a65787472696e7369635f696e6465784163636f756e744e6f6e6365426c6f636b486173684e756d626572506172656e744861736845787472696e73696373526f6f744469676573740000001400000004000000040000002a000000180000000000000001000000190000004576656e74734576656e74546f7069637300000000000000082010000a00000000000000449c1100000000000000000000000000142010000100000000000000000000001c2010000600000000000000242010000100000000000000000000003c201000010000000000000000000000442010000e00000000000000542010000100000000000000000000006c2010000100000000000000000000007420100008000000000000007c201000010000000000000000000000942010000100000000000000000000009c2010000b00000000000000a8201000010000000000000000000000c0201000010000000000000000000000c82010000c00000000000000d4201000010000000000000000000000ec201000010000000000000000000000f42010000b000000000000000021100001000000000000000000000018211000010000000000000066696c6c5f626c6f636b0000362210004800000072656d61726b0000000000002f2210000700000000000000dc43110007000000142210001b0000007365745f686561705f70616765730000000000000f2210000500000000000000eee7100003000000d02110003f0000007365745f636f646500000000986511000300000000000000dc43110007000000be211000120000007365745f73746f726167650000000000ac2110000500000000000000b12110000d000000912110001b0000006b696c6c5f73746f7261676500000000ff981000040000000000000089211000080000006b2110001e0000006b696c6c5f7072656669780000000000652110000600000000000000e8731000030000002021100045000000204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e707265666978204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e5665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e657720636f64652e2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b20412062696720646973706174636820746861742077696c6c20646973616c6c6f7720616e79206f74686572207472616e73616374696f6e20746f20626520696e636c756465642e000000000000641e10000c0000000101000000000000676411000c00000000000000f82610000800000000000000000000000000000000000000449c11003828100000000000000000000027100001000000000000000100000000000000082710000e0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100542710000000000000000000182710000100000000000000000000000000000020271000130000000000000000000000332710000600000000000000000000000000000000000000000000000000000000000000449c11005427100000000000000000003c2710000100000000000000000000000000000044271000100000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c11005427100000000000000000006427100001000000000000000000000000000000701e1000090000000101000000000000069411000e000000000000000c0311000700000000000000000000000000000000000000449c1100ac27100000000000000000006c27100001000000000000000100000000000000742710000d0000000101000000000000a67b11000300000000000000dc4311000700000000000000000000000000000000000000449c11008427100000000000000000009427100001000000000000000100000000000000791e1000060000000000000000000000069411000e00000000000000000000000000000000000000000000000000000000000000449c11003828100000000000000000009c271000010000000000000001000000000000007f1e10000a00000000000000000000000c0311000700000000000000000000000000000000000000000000000000000000000000449c1100ac2710000000000000000000a427100001000000000000000100000000000000891e10000e00000000000000000000000c0311000700000000000000000000000000000000000000000000000000000000000000449c1100ac2710000000000000000000bc27100001000000000000000100000000000000971e1000060000000000000000000000c42710000b00000000000000000000000000000000000000000000000000000000000000449c1100d02710000000000000000000e027100001000000000000000100000000000000c01e1000060000000000000000000000e82710002300000000000000000000000000000000000000000000000000000000000000449c11000c28100000000000000000001c28100001000000000000000100000000000000242810000a00000000000000000000002e2810000a00000000000000000000000000000000000000000000000000000000000000449c11003828100000000000000000004828100001000000000000000100000000000000c61e10000b00000002010100000000001f18110002000000000000000c0311000700000000000000502810002100000000000000449c1100742810000000000000000000842810000d0000000000000001000000543a3a496e646578002e10001f00000045787472696e736963436f756e740000d22d10002e000000416c6c45787472696e736963735765696768745765696768740000008d2d100045000000416c6c45787472696e736963734c656e1800000000000000010000002b0000003d2d100050000000172d10002600000045787472696e736963446174610000001800000000000000010000002c000000c82c10004f000000862c1000420000006a2c10001c0000001800000000000000010000002d000000252c1000450000004469676573744f663c543e001800000000000000010000002e000000e92b10003c0000005665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e001800000000000000010000002f000000c12b1000280000004576656e74436f756e744576656e74496e64657818000000000000000100000030000000932b10002e0000005665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e0000001800000000000000010000002e000000ec281000490000003529100025000000449c1100000000005a2910004b000000a52910002a000000449c110000000000cf29100054000000232a100051000000742a100039000000449c110000000000ad2a100053000000002b100053000000532b100040000000204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20546865206669727374206b657920736572766573206e6f20707572706f73652e2054686973206669656c64206973206465636c6172656420617320646f75626c655f6d6170206a75737420666f7220636f6e76656e69656e6365206f66207573696e67206072656d6f76655f707265666978602e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2045787472696e73696373206e6f6e636520666f72206163636f756e74732e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b2071656400642e100023000000449c110000000000872e10001e0000004552524f523a20436f727275707465642073746174653a206c696e6b6564206d6170203a206e6578742076616c756520646f65736e277420657869737420617420000000642e100023000000449c110000000000c02e1000220000003a2070726576696f75732076616c756520646f65736e2774206578697374206174200000642e100023000000449c110000000000fc2e10001e0000003a20686561642076616c756520646f65736e27742065786973742061742000003b2f10005a000000e6000000010000003a6865617070616765733a636f64652f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f73797374656d2f7372632f6c69622e7273476f7373697041744b657973000000000000002830100011000000000000003c301000010000000000000000000000443010000100000000000000000000004c3010000700000000000000449c1100000000000000000000000000543010000100000000000000000000005c3010000b00000000000000683010000100000000000000000000007030100001000000000000004865617274626561745265636569766564000000413110000b0000001131100030000000416c6c476f6f6400dc30100035000000536f6d654f66666c696e6500c430100018000000783010004c0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f7269747949647061726974792f696d2d6f6e6c696e652d776f726b65722d737461747573000040321000480000009c0a00000a00000001321000080000000932100020000000696d6f6e6c696e6570616c6c65745f696d5f6f6e6c696e652f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e72735b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20417574686f726564426c6f636b730000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000b43210000900000000000000c0321000020000000000000000000000449c1100000000000000000068656172746265617400000000000000b43210000900000000000000f03210001900000000000000093310000a00000000000000133310002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000000000952f1000080000000000000000000000069411000e00000000000000000000000000000000000000000000000000000000000000449c1100143510000000000000000000a4341000010000000000000001000000000000009d2f1000040000000000000000000000ac3410001300000000000000000000000000000000000000000000000000000000000000449c1100c03410000000000000000000d034100001000000000000000100000000000000d8341000120000000201010000000000295811000c00000000000000ea3410000900000000000000dc4311000700000000000000449c1100f434100000000000000000000435100002000000000000000000000000000000293210000e0000000201010000000000295811000c00000000000000449c10000e00000000000000a67b11000300000000000000449c1100143510000000000000000000243510000200000000000000010000003b361000280000005665633c543a3a417574686f7269747949643e001800000000000000010000002e000000073610003400000052656365697665644865617274626561747341757468496e646578001800000000000000010000002b000000ab35100039000000e435100023000000180000000000000001000000300000003435100045000000793510003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d626572207768656e2077652073686f756c6420676f737369702e004032100048000000a20a00000e0000004475706c696361746564206865617274626561742e4e6f6e206578697374656e74207075626c6963206b65792e486561644f6644656c65676174696f6e7344656c65676174696f6e73566f74654f660000000000d4f610000800000000000000a8381000020000000000000000000000449c1100000000000000000000000000b83810000600000000000000c0381000030000000000000000000000449c1100000000000000000000000000d83810000e00000000000000449c1100000000000000000000000000449c1100000000000000000000000000e63810000700000000000000f0381000020000000000000000000000449c110000000000000000000000000000391000060000000000000008391000010000000000000000000000449c110000000000000000000000000010391000090000000000000008391000010000000000000000000000449c110000000000000000000000000019391000090000000000000008391000010000000000000000000000449c110000000000000000000000000078f71000080000000000000024391000020000000000000000000000449c110000000000000000000000000034391000090000000000000040391000020000000000000000000000449c1100000000000000000000000000503910000b00000000000000242c1100010000000000000000000000449c11000000000000000000000000005b391000060000000000000064391000030000000000000000000000449c11000000000000000000983910000900000087581100070000005461626c6564000098391000090000008758110007000000a13910000e00000045787465726e616c5461626c6564537461727465640000007c3910000f0000008b3910000d00000050617373656400007c3910000f0000004e6f7450617373656443616e63656c6c656400007c3910000f000000e89711000400000044656c6567617465640000007e581100090000007e58110009000000556e64656c6567617465645665746f65640000007e58110009000000b897110004000000acfe10000b0000005265666572656e64756d496e646578566f74655468726573686f6c6450726f70496e6465785665633c4163636f756e7449643e446973706174636851756575655265666572656e64756d496e666f4f66566f74657273466f725075626c696350726f7073603a100048000000a20a00000e0000004465706f7369744f664e6f207075626c69632070726f706f73616c732077616974696e6743616e6e6f7420696e6a6563742061207265666572656e64756d207468617420656e6473206561726c696572207468616e2070726563656564696e67207265666572656e64756d00000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72734e65787445787465726e616c4e6f2065787465726e616c2070726f706f73616c2077616974696e6700000000c80111000700000000000000bc3d1000020000000000000000000000ec3d10000600000000000000000000001c3e10000600000000000000243e10000100000000000000000000003c3e10000600000000000000000000002002110004000000000000006c3e10000200000000000000000000009c3e1000070000000000000000000000d43e10000a000000000000006c3e1000020000000000000000000000e03e1000070000000000000000000000183f10001000000000000000283f1000010000000000000000000000403f1000020000000000000000000000503f10001000000000000000c0701000010000000000000000000000603f1000020000000000000000000000703f10001900000000000000c07010000100000000000000000000008c3f1000050000000000000000000000b43f10001800000000000000c0701000010000000000000000000000cc3f1000050000000000000000000000f43f10000a000000000000000040100003000000000000000000000048401000090000000000000000000000904010000d00000000000000a0401000010000000000000000000000b8401000010000000000000000000000c04010001100000000000000d4401000010000000000000000000000ec401000010000000000000000000000f44010000d00000000000000044110000300000000000000000000004c4110000100000000000000000000005441100009000000000000006041100001000000000000000000000078411000050000000000000000000000a04110000c00000000000000449c1100000000000000000000000000ac411000050000000000000000000000d44110000c0000000000000060411000010000000000000000000000e04110000500000000000000000000000842100008000000000000001042100002000000000000000000000040421000050000000000000000000000684210000a00000000000000449c110000000000000000000000000074421000050000000000000000000000040311000800000000000000d272100010000000000000004d6f11000500000000000000526f1100150000006249100028000000449c1100000000007e6311000b0000008d701100080000009c491000200000009e6311000c0000007365636f6e640000000000000403110008000000000000008a491000120000006249100028000000449c1100000000007e6311000b0000008d70110008000000336f1100100000009e6311000c00000000000000ab43100009000000000000007e43100018000000000000002002110004000000000000005e49100004000000e24810004d0000002f4910002f000000449c1100000000007e6311000b0000008d70110008000000c34810001f0000009e6311000c00000070726f78795f766f746500003148100054000000854810003e000000449c1100000000007e6311000b0000008d70110008000000c34810001f0000009e6311000c000000656d657267656e63795f63616e63656c00000000ab43100009000000000000007c3910000f000000dd47100054000000d14710000c00000065787465726e616c5f70726f706f7365854710004c000000d14710000c00000065787465726e616c5f70726f706f73655f6d616a6f7269747900000017471000560000006d47100018000000449c1100000000009d46100053000000f04610002700000065787465726e616c5f70726f706f73655f64656661756c742a461000520000007c46100021000000449c1100000000009d46100053000000f046100027000000666173745f747261636b000000000000e34310000d000000000000000c0311000700000000000000184610000d00000000000000069411000e00000000000000254610000500000000000000069411000e000000f04310005400000044441000590000009d4410003b000000449c110000000000d84410003e00000016451000580000006e451000260000009445100055000000e94510002f0000007665746f5f65787465726e616c00000000000000e34310000d000000000000000c03110007000000b44310002f00000063616e63656c5f7265666572656e64756d00000000000000ab43100009000000000000007e43100018000000964310001500000063616e63656c5f717565756564000000000000007143100004000000000000007493110017000000000000007543100005000000000000009b6511000c000000000000007a43100004000000000000007e4310001800000049431000280000007365745f70726f787900000000000000444310000500000000000000676411000c0000001e43100026000000449c1100000000007e6311000b000000e9981000160000009e6311000c00000072657369676e5f70726f7879f842100026000000449c1100000000007e6311000b000000abd71000100000009e6311000c00000072656d6f76655f70726f7879d242100026000000449c1100000000007e6311000b000000abd71000100000009e6311000c00000064656c656761746500000000bc4210000200000000000000676411000c00000000000000be4210000a00000000000000c84210000a000000ad4210000f000000449c1100000000007e6311000b000000e9981000160000009e6311000c000000756e64656c656761746500009c42100011000000449c1100000000007e6311000b0000008d701100080000009e6311000c00000020556e64656c656761746520766f74652e2044656c656761746520766f74652e746f636f6e76696374696f6e436f6e76696374696f6e20436c656172207468652070726f78792e2043616c6c6564206279207468652073746173682e20436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e205370656369667920612070726f78792e2043616c6c6564206279207468652073746173682e70726f78792043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e7768656e776869636877686174436f6d706163743c5265666572656e64756d496e6465783e2052656d6f76652061207265666572656e64756d2e7265665f696e646578205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e70726f706f73616c5f68617368205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f20202060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e766f74696e675f706572696f6464656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b20206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e20566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e566f74652050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e436f6d706163743c50726f70496e6465783e202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e00000000e44e10000f0000000000000000000000983910000900000000000000000000000000000000000000000000000000000000000000449c1100904f10000000000000000000f44e100001000000000000000100000000000000d53910000b0000000000000000000000fc4e10002b00000000000000000000000000000000000000000000000000000000000000449c1100245010000000000000000000284f100001000000000000000100000000000000f0391000090000000101000000000000983910000900000000000000304f10002100000000000000000000000000000000000000449c1100544f10000000000000000000644f1000010000000000000000000000000000006c4f10000f00000000000000000000007c3910000f00000000000000000000000000000000000000000000000000000000000000449c1100904f100000000000000000007c4f100001000000000000000100000000000000844f10000900000000000000000000007c3910000f00000000000000000000000000000000000000000000000000000000000000449c1100904f10000000000000000000a04f100001000000000000000100000000000000bc3910001000000001010000000000007c3910000f00000000000000a84f10002d00000000000000000000000000000000000000449c1100945010000000000000000000d84f100001000000000000000000000000000000af3910000d0000000101000000000000069411000e00000000000000e04f10002b00000000000000000000000000000000000000449c11000c50100000000000000000001c50100001000000000000000100000000000000cc3910000900000001010000000000007c3910000f00000000000000b06411001100000000000000000000000000000000000000449c11002450100000000000000000003450100001000000000000000100000000000000bd3610000600000001010000000000003c5010001f000000000000005e4910000400000000000000000000000000000000000000449c11005c50100000000000000000006c501000040000000000000001000000000000008c501000050000000101000000000000676411000c00000000000000676411000c00000000000000000000000000000000000000449c1100945010000000000000000000a450100002000000000000000000000000000000b23610000b0000000101010000000000676411000c00000000000000b45010001a00000000000000000000000000000000000000449c1100d05010000000000000000000e050100001000000000000000100000000000000e8501000150000000000000000000000e89711000400000000000000000000000000000000000000000000000000000000000000449c1100b851100000000000000000000051100002000000000000000100000000000000a83a10000c0000000000000000000000105110001c00000000000000000000000000000000000000000000000000000000000000449c11002c51100000000000000000003c511000040000000000000000000000000000005c5110000900000001010000000000000c0311000700000000000000655110002300000000000000000000000000000000000000449c11008851100000000000000000009851100002000000000000000000000000000000a85110000d00000001010000000000000c0311000700000000000000e89711000400000000000000000000000000000000000000449c1100b85110000000000000000000c85110000100000000000000010000005075626c696350726f70436f756e7400385710003d0000005665633c2850726f70496e6465782c20543a3a50726f706f73616c2c20543a3a4163636f756e744964293e0018571000200000002842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e2900000018000000000000000100000031000000f7561000210000005265666572656e64756d436f756e7400ab5610004c0000004e65787454616c6c79000000180000000000000001000000300000007956100032000000285265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a50726f706f73616c3e290000004c5610002d0000005665633c4f7074696f6e3c28543a3a50726f706f73616c2c205265666572656e64756d496e646578293e3e001800000000000000010000002e0000001c561000300000001800000000000000010000002e000000f355100029000000285265666572656e64756d496e6465782c20543a3a4163636f756e74496429001800000000000000010000002b000000b4541000580000000c551000530000005f55100057000000b65510003d00000050726f78790000001800000000000000010000002b000000465410004c000000925410002200000028543a3a4163636f756e7449642c20436f6e76696374696f6e29000018000000000000000100000032000000f6531000500000004c6173745461626c656457617345787465726e616c0000009653100056000000ec5310000a00000028543a3a50726f706f73616c2c20566f74655468726573686f6c642918000000000000000100000033000000a852100056000000fe5210005500000053531000290000007c5310001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e29180000000000000001000000310000001a521000540000006e5210003a00000043616e63656c6c6174696f6e730000001800000000000000010000002b000000d05110004a000000205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e2047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e2057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b65792069732074686520766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c792069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468652064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616e20616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a657869737473602066697273742e204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e20546865206e657874207265666572656e64756d20696e64657820746861742073686f756c642062652074616c6c6965642e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e00000000000000c85810000f00000000000000069411000e00000000000000449c1100d85810000000000000000000e8581000050000000000000000000000105910000c00000000000000069411000e00000000000000449c1100a059100000000000000000001c591000010000000000000000000000245910000c00000000000000069411000e00000000000000449c1100a0591000000000000000000030591000010000000000000000000000385910000e00000000000000c47d11000c00000000000000449c110048591000000000000000000058591000010000000000000000000000605910001500000000000000069411000e00000000000000449c110078591000000000000000000088591000010000000000000000000000905910000d00000000000000069411000e00000000000000449c1100a05910000000000000000000b05910000100000000000000456e6163746d656e74506572696f640018000000000000000100000034000000ff5a10005c000000449c1100000000005b5b10004c000000a75b10005a000000015c1000270000004c61756e6368506572696f64c65a100039000000566f74696e67506572696f64985a10002e0000004d696e696d756d4465706f7369740000180000000000000001000000350000004b5a10004d000000456d657267656e6379566f74696e67506572696f6400000018000000000000000100000036000000105a10003b000000436f6f6c6f6666506572696f6400000018000000000000000100000037000000b85910005800000020506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652ef45d10005d0000004d0100000100000076616c756520746f6f206c6f7770726f706f73657227732062616c616e636520746f6f206c6f7763616e206f6e6c79207365636f6e6420616e206578697374696e672070726f706f73616c7365636f6e64657227732062616c616e636520746f6f206c6f776e6f7420612070726f787970726f706f73616c207374696c6c20626c61636b6c697374656470726f706f73616c20616c7265616479206d616465696e76616c696420686173686e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974796e6f2070726f706f73616c206d616465756e6b6e6f776e2070726f706f73616c6e6f2065787465726e616c2070726f706f73616c6964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365616c726561647920612070726f787977726f6e672070726f78796e6f742064656c656761746564756e6b6e6f776e20696e64657863616e6e6f742063616e63656c207468652073616d652070726f706f73616c20747769636570726f706f73616c206e6f7420666f756e64766f746520676976656e20666f7220696e76616c6964207265666572656e64756d2e2f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f64656d6f63726163792f7372632f6c69622e7273000000380000000800000004000000390000006e6577686561647350617261636861696e20686561647320636f756c64206e6f74206265206465636f6465642e4e6f2070617261636861696e20686561647320666f756e6420696e20696e686572656e7420646174612e626164206f726967696e3a20657870656374656420746f20626520612070617261636861696e206f726967696e436f6465486561647357617465726d61726b73556e726f75746564496e67726573730000245f100031000000555f100043000000120100000400000050617261636861696e206865616473206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b2f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f70617261636861696e732e7273c05f1000480000009c0a00000a000000c05f100048000000a20a00000e00000000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e727376616c696461746f725f726f6c655f7061697273c05f100048000000b201000023000000c05f100048000000b3010000230000005060100043000000b402000014000000000000002f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f70617261636861696e732e72730000000000fce710000b0000000000000000000000ac6310001000000000000000000000000000000000000000000000000000000000000000449c1100046510000000000000000000bc63100001000000000000000100000000000000e85e100004000000010100000000000055fd10000600000000000000dc4311000700000000000000000000000000000000000000449c1100cc6310000000000000000000c463100001000000000000000000000000000000ec5e100005000000010100000000000055fd10000600000000000000dc4311000700000000000000000000000000000000000000449c1100cc6310000000000000000000dc63100001000000000000000000000000000000f15e10000a000000010100000000000055fd10000600000000000000069411000e00000000000000000000000000000000000000449c1100e46310000000000000000000f463100003000000000000000000000000000000fb5e10000f00000001010000000000000c6410001800000000000000246410001300000000000000000000000000000000000000449c110038641000000000000000000048641000040000000000000000000000000000006864100012000000010100000000000055fd100006000000000000007a6410001200000000000000000000000000000000000000449c11008c64100000000000000000009c64100002000000000000000100000000000000ac64100016000000010100000000000055fd10000600000000000000c26410000a00000000000000000000000000000000000000449c1100cc6410000000000000000000dc64100003000000000000000100000000000000f46410000d0000000000000000000000580c11000b00000000000000000000000000000000000000000000000000000000000000449c11000465100000000000000000001465100001000000000000000100000000000000b38f1100090000000000000000000000580c11000b00000000000000000000000000000000000000000000000000000000000000449c11001c65100000000000000000002c6510000400000000000000000000005665633c56616c696461746f7249643eb66910002500000090691000260000001800000000000000010000003a0000005d691000330000001800000000000000010000002b000000776810003f000000b668100050000000066910005700000028543a3a426c6f636b4e756d6265722c20506172614964295665633c285061726149642c2048617368293e001800000000000000010000002b000000ae67100055000000449c1100000000000368100053000000566810002100000052656c6179446973706174636851756575655665633c5570776172644d6573736167653e1800000000000000010000002e00000035671000470000007c6710003200000052656c61794469737061746368517565756553697a65287533322c20753332291800000000000000010000003b0000004f66100051000000a066100056000000f66610003f0000004e6565647344697370617463680000001800000000000000010000002e0000000b661000440000001800000000000000010000002b0000004c65100059000000a56510004d000000449c110000000000f26510001900000020536f6d65206966207468652070617261636861696e20686561647320676574207570646174656420696e207468697320626c6f636b2c20616c6f6e672077697468207468652070617261636861696e20494473207468617420646964207570646174652e204f72646572656420696e207468652073616d652077617920617320607265676973747261723a3a416374697665602028692e652e20627920506172614964292e204e6f6e65206966206e6f742079657420757064617465642e20546865206f726465726564206c697374206f662050617261496473207468617420686176652061206052656c6179446973706174636851756575656020656e7472792e2053697a65206f6620746865206469737061746368207175657565732e205365706172617465642066726f6d2061637475616c206461746120696e206f7264657220746f2061766f696420636f73746c79206465636f64696e67207768656e20636865636b696e6720726563656970742076616c69646974792e204669727374206974656d20696e207475706c652069732074686520636f756e74206f66206d65737361676573097365636f6e642069662074686520746f74616c206c656e6774682028696e20627974657329206f6620746865206d657373616765207061796c6f6164732e204d6573736167657320726561647920746f2062652064697370617463686564206f6e746f207468652072656c617920636861696e2e204974206973207375626a65637420746f20604d41585f4d4553534147455f434f554e546020616e64206057415445524d41524b5f4d4553534147455f53495a45602e20556e726f7574656420696e67726573732e204d6170732028426c6f636b4e756d6265722c20746f5f636861696e2920706169727320746f205b2866726f6d5f636861696e2c206567726573735f726f6f74295d2e205468657265206d617920626520616e20656e74727920756e6465722028692c20702920696e2074686973206d617020666f722065766572792069206265747765656e207468652070617261636861696e27732077617465726d61726b20616e64207468652063757272656e7420626c6f636b2e205468652077617465726d61726b2068656967687473206f66207468652070617261636861696e7320726567697374657265642061742070726573656e742e20466f722065766572792070617261636861696e2c20746869732069732074686520626c6f636b206865696768742066726f6d20776869636820616c6c206d6573736167657320746172676574696e6720746861742070617261636861696e2068617665206265656e2070726f6365737365642e2043616e20626520604e6f6e6560206f6e6c79206966207468652070617261636861696e20646f65736e27742065786973742e20546865206865616473206f66207468652070617261636861696e7320726567697374657265642061742070726573656e742e205468652070617261636861696e7320726567697374657265642061742070726573656e742e20416c6c20617574686f72697469657327206b65797320617420746865206d6f6d656e742e50617261636861696e206865616473206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b546f6f206d616e792070617261636861696e2063616e646964617465736e6f2076616c696461746f722067726f757020666f722070617261636861696e4e6f7420656e6f7567682076616c6964697479206174746573746174696f6e73546865206e756d626572206f66206174746573746174696f6e73206578636565647320746865206e756d626572206f6620617574686f726974696573417474657374696e672076616c696461746f72206e6f74206f6e207468697320636861696e27732076616c69646174696f6e20647574792e4e6f7420656e6f7567682076616c696469747920766f74657343616e6469646174652076616c6964697479206174746573746174696f6e207369676e6174757265206973206261642e457874726120756e7461676765642076616c696469747920766f74657320616c6f6e6720776974682063616e64696461746563616e64696461746520666f7220756e726567697374657265642070617261636861696e207b7d696e76616c696420636f6c6c61746f7263616e646964617465206f7574206f66206f72646572626164206d657373616765206f726967696e4d65737361676573206164646564207768656e2071756575652066756c6c03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314456d707479207472696520726f6f7420696e636c75646564526f7574696e6720746f206e6f6e2d6578697374656e742070617261636861696e50617261636861696e20726f7574696e6720746f2073656c6645677265737320726f75746573206f7574206f66206f726465722062792049446f7264657265645f6e656564735f646973706174636820636f6e7461696e732069643f2100000000bc6c10000900000000000000c86c1000010000000000000000000000f098110001000000000000007365745f686561647300000000000000e06c10000500000000000000e56c10001600000068656164735665633c417474657374656443616e6469646174653e0000000000806d10000500000000000000886d1000010000000000000000000000906d1000010000000000000000000000986d10000a00000000000000242c1100010000000000000000000000a46d1000010000000000000000000000ac6d10000a00000000000000886d1000010000000000000000000000906d100001000000000000005375646964000000e897110004000000f26d1000180000004b65794368616e6765640000b66d10003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e3a6772616e6470615f617574686f7269746965730000306e100042000000d30000001e0000002f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f7265676973747261722e72730000306e100042000000d20000001c0000004163746976654e65787446726565496400000000ec6e10001400000000000000006f1000010000000000000000000000086f1000010000000000000000000000106f10001600000000000000006f1000010000000000000000000000286f10000100000000000000506172617468726561645265676973746572656455fd100006000000656f100035000000506172617468726561644465726567697374657265640000306f100035000000205468652070617261746872656164206f662074686520737570706c696564204944207761732064652d726567697374657265642e204120706172617468726561642077617320726567697374657265643b20697473206e657720494420697320737570706c6965642e52657472795175657565c06f100048000000a20a00000e0000000000000000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72734772616e64706146696e616c69747950656e64696e674368616e6765537461746553656c65637465645468726561647300000000bc7010000400000000000000c0701000010000000000000000000000d87010000a0000000000000000000000287110000700000000000000307110000100000000000000000000004871100009000000000000000000000090711000070000000000000098711000020000000000000000000000c87110000b000000000000007375646f00000000040311000800000000000000d2721000100000003f7310004e000000449c1100000000000c45110034000000449c1100000000007e6311000b0000008d7011000800000042d710001900000085721000180000009d721000350000009e6311000c0000007365745f6b65790000000000986511000300000000000000f366110023000000e27210005d000000449c1100000000000c45110034000000449c1100000000007e6311000b0000008d7011000800000042d71000190000005bd71000110000009e6311000c0000007375646f5f61730000000000864a11000300000000000000f36611002300000000000000040311000800000000000000d27210001000000020721000540000007472100011000000449c1100000000000c45110034000000449c1100000000007e6311000b0000008d7011000800000042d710001900000085721000180000009d721000350000009e6311000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204f6e6520444220777269746520286576656e74292e202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e426f783c543a3a50726f706f73616c3e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00000000000000e8731000030000000000000000000000676411000c00000000000000000000000000000000000000000000000000000000000000449c1100308210000000000000000000ec7310000100000000000000010000004b657900f4731000210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e0000003074100068000000330000000600000000000000000000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f7072696d6974697665732f73722d7072696d6974697665732f7372632f63757276652e72735061726173546872656164436f756e7400000000d47410001200000000000000e87410000100000000000000000000000075100001000000000000007265706f72745f6d69736265686176696f72000000000000217510000700000000000000dc431100070000000875100019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f727400000000fce710000b0000000000000000000000907710000d00000000000000000000000000000000000000000000000000000000000000449c1100108210000000000000000000a07710000400000000000000010000000000000024701000050000000000000000000000c07710001b00000000000000000000000000000000000000000000000000000000000000449c1100dc7710000000000000000000ec77100001000000000000000100000000000000177010000d0000000000000000000000f47710002300000000000000000000000000000000000000000000000000000000000000449c1100d881100000000000000000001878100001000000000000000000000000000000207810000a0000000000000000000000069411000e00000000000000000000000000000000000000000000000000000000000000449c1100b478100000000000000000002c78100001000000000000000000000000000000347810000700000000000000000000003b7810002000000000000000000000000000000000000000000000000000000000000000449c11005c78100000000000000000006c78100001000000000000000000000000000000747810000c0000000000000000000000807810000500000000000000000000000000000000000000000000000000000000000000449c11008878100000000000000000009878100002000000000000000100000000000000a87810000c0000000101000000000000807810000500000000000000295811000c00000000000000000000000000000000000000449c1100b47810000000000000000000c4781000010000000000000000000000417574686f726974794c6973740000006c7a10000b000000449c110000000000777a100058000000cf7a10002500000053746f72656453746174653c543a3a426c6f636b4e756d6265723e001800000000000000010000003c000000487a10002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e00177a1000310000004e657874466f726365640000e87910002f0000005374616c6c656428543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d62657229001800000000000000010000003d000000c47910002400000043757272656e74536574496453657449640000001800000000000000010000003e0000003c791000570000009379100031000000536574496453657373696f6e1800000000000000010000002b000000cc781000700000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e20444550524543415445442054686973207573656420746f2073746f7265207468652063757272656e7420617574686f72697479207365742c20776869636820686173206265656e206d6967726174656420746f207468652077656c6c2d6b6e6f776e204752414e4450415f415554484f52495445535f4b455920756e686173686564206b65792e3800000008000000040000003f0000004000000000000000000000004100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003800000008000000040000003f0000004000000000000000000000004100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f7d1000580000006b000000010000006f6e6c79207468652063757272656e74207375646f206b65792063616e207375646f6f6e6c79207468652063757272656e74207375646f206b65792063616e206368616e676520746865207375646f206b65792f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f7375646f2f7372632f6c69622e727350617261636861696e20616c726561647920657869737473496e76616c696420696400000000000000823e11000a0000000000000000000000580c11000b00000000000000000000000000000000000000000000000000000000000000449c1100108210000000000000000000449c1100000000000000000001000000000000009d7410000b0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c11000481100000000000000000001481100001000000000000000100000000000000297010000f00000000000000000000001c8110001e00000000000000000000000000000000000000000000000000000000000000449c11001082100000000000000000003c81100002000000000000000100000000000000846e10000600000000000000000000004c8110002e00000000000000000000000000000000000000000000000000000000000000449c11001082100000000000000000007c811000060000000000000001000000000000008a6e10000a000000000000000000000055fd10000600000000000000000000000000000000000000000000000000000000000000449c1100ac8110000000000000000000bc81100002000000000000000100000000000000cc8110000b000000010100000000000055fd1000060000000000000055fd10000600000000000000000000000000000000000000449c1100d88110000000000000000000e8811000010000000000000000000000000000009874100005000000010100000000000055fd10000600000000000000f08110000800000000000000000000000000000000000000449c1100f8811000000000000000000008821000010000000000000000000000000000009a6f10000a00000000000000000000001c8110001e00000000000000000000000000000000000000000000000000000000000000449c110010821000000000000000000020821000010000000000000001000000000000002882100007000000010100000000000055fd10000600000000000000676411000c00000000000000000000000000000000000000449c11003082100000000000000000004082100001000000000000000100000018000000000000000100000030000000408510002d0000005665633c5665633c285061726149642c20436f6c6c61746f724964293e3e0000a084100054000000f48410004c0000005665633c285061726149642c204f7074696f6e3c28436f6c6c61746f7249642c20526574726961626c65293e293e00005483100057000000ab8310005800000003841000560000005984100034000000449c1100000000008d8410001300000018000000000000000100000042000000f08210004f0000003f8310001500000050656e64696e6753776170001800000000000000010000002b000000d78210001900000050617261496e666f1800000000000000010000002b000000ad8210002a0000001800000000000000010000002e000000738210003a000000446562746f72730018000000000000000100000043000000488210002b0000002055736572732077686f20686176652070616964206120706172617468726561642773206465706f736974205468652063757272656e7420717565756520666f7220706172617468726561647320746861742073686f756c6420626520726574726965642e204d6170206f6620616c6c20726567697374657265642070617261746872656164732f636861696e732e2050656e64696e672073776170206f7065726174696f6e732e20546865206e65787420756e75736564205061726149642076616c75652e2053746172742074686973206869676820696e206f7264657220746f206b656570206c6f77206e756d6265727320666f722073797374656d2d6c6576656c20636861696e732e2050617261746872656164732f636861696e73207363686564756c656420666f7220657865637574696f6e207468697320626c6f636b2e2049662074686520636f6c6c61746f72204944206973207365742c207468656e206120706172746963756c617220636f6c6c61746f722068617320616c7265616479206265656e2063686f73656e20666f7220746865206e65787420626c6f636b2c20616e64206e6f206f7468657220636f6c6c61746f72206d61792070726f766964652074686520626c6f636b2e20496e2074686973206361736520776520616c6c6f772074686520706f73736962696c697479206f662074686520636f6d62696e6174696f6e206265696e67207265747269656420696e2061206c6174657220626c6f636b2c206578707265737365642062792060526574726961626c65602e204f726465726564206279205061726149642e20416e206172726179206f6620746865207175657565206f6620736574206f662074687265616473207363686564756c656420666f722074686520636f6d696e6720626c6f636b733b206f72646572656420627920617363656e64696e6720706172612049442e2054686572652063616e206265206e6f206475706c696361746573206f66207061726120494420696e2065616368206c697374206974656d2e20546865206e756d626572206f66207468726561647320746f207363686564756c652070657220626c6f636b2e0000009f85100042000000d900000001000000696e76616c6964206964696e76616c696420706172617468726561642069642f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f7265676973747261722e727300000000000000188710000d000000000000002887100004000000000000000000000088871000020000000000000000000000988710000f00000000000000a8871000010000000000000000000000c0871000010000000000000000000000c88710001000000000000000d8871000010000000000000000000000f08710000500000000000000000000001888100013000000000000002c8810000200000000000000000000005c8810000400000000000000000000007c881000110000000000000090881000030000000000000000000000d8881000050000000000000000000000008910001500000000000000449c110000000000000000000000000018891000070000000000000000000000508910000400000000000000548910000100000000000000000000006c891000080000000000000072656769737465725f7061726100000000000000c18f10000200000000000000591f11000f000000000000000c9010000400000000000000f08110000800000000000000681f11000400000000000000dc4311000700000000000000f22011001100000000000000dc43110007000000c38f100026000000e98f100023000000646572656769737465725f706172610000000000c18f10000200000000000000591f11000f0000009c8f1000250000007365745f7468726561645f636f756e7400000000978f10000500000000000000a67b110003000000008f100050000000449c110000000000508f100026000000449c110000000000768f10002100000072656769737465725f706172617468726561640000000000681f11000400000000000000dc4311000700000000000000f22011001100000000000000dc43110007000000368e100029000000449c1100000000005f8e100053000000b28e10004e00000073656c6563745f7061726174687265616400000000000000168e10000300000000000000591f11000f00000000000000198e10000900000000000000228e10000a000000000000002c8e10000a000000000000000c03110007000000198d100041000000449c1100000000005a8d100050000000aa8d100057000000018e100015000000646572656769737465725f70617261746872656164000000de8b100032000000449c110000000000108c100048000000449c110000000000588c100056000000ae8c100051000000ff8c10001a0000007377617000000000d98b10000500000000000000591f11000f000000ac89100059000000058a1000590000005e8a100057000000449c110000000000b58a1000580000000d8b1000500000005d8b100056000000b38b100026000000205377617020612070617261636861696e207769746820616e6f746865722070617261636861696e206f7220706172617468726561642e20546865206f726967696e206d7573742062652061206050617261636861696e602e2054686520737761702077696c6c2068617070656e206f6e6c7920696620746865726520697320616c726561647920616e206f70706f7369746520737761702070656e64696e672e204966207468657265206973206e6f742c2074686520737761702077696c6c2062652073746f72656420696e207468652070656e64696e67207377617073206d61702c20726561647920666f722061206c6174657220636f6e6669726d61746f727920737761702e20546865206050617261496460732072656d61696e206d617070656420746f207468652073616d652068656164206461746120616e6420636f646520736f2065787465726e616c20636f64652063616e2072656c79206f6e20605061726149646020746f2062652061206c6f6e672d7465726d206964656e746966696572206f662061206e6f74696f6e616c202270617261636861696e222e20486f77657665722c207468656972207363686564756c696e6720696e666f2028692e652e2077686574686572207468657927726520612070617261746872656164206f722070617261636861696e292c2061756374696f6e20696e666f726d6174696f6e20616e64207468652061756374696f6e206465706f736974206172652073776974636865642e6f7468657220446572656769737465722061207061726174687265616420616e6420726574726965766520746865206465706f7369742e204d7573742062652073656e742066726f6d2061206050617261636861696e60206f726967696e2077686963682069732063757272656e746c79206120706172617468726561642e20456e737572652074686174206265666f72652063616c6c696e672074686973207468617420616e792066756e647320796f752077616e7420656d70746965642066726f6d2074686520706172617468726561642773206163636f756e74206973206d6f766564206f75743b20616674657220746869732069742077696c6c20626520696d706f737369626c6520746f207265747269657665207468656d2028776974686f757420676f7665726e616e636520696e74657276656e74696f6e292e20506c61636520612062696420666f722061207061726174687265616420746f2062652070726f6772657373656420696e20746865206e65787420626c6f636b2e20546869732069732061206b696e64206f66207370656369616c207472616e73616374696f6e20746861742073686f756c642062792068656176696c79207072696f726974697a656420696e20746865207472616e73616374696f6e20706f6f6c206163636f7264696e6720746f20746865206076616c7565603b206f6e6c792060546872656164436f756e7460206f66207468656d206d61792062652070726573656e74656420696e20616e792073696e676c6520626c6f636b2e5f69645f636f6c6c61746f72436f6c6c61746f7249645f686561645f686173682052656769737465722061207061726174687265616420666f7220696d6d656469617465207573652e204d7573742062652073656e742066726f6d2061205369676e6564206f726967696e20746861742069732061626c6520746f206861766520506172617468726561644465706f7369742072657365727665642e2060636f64656020616e642060696e697469616c5f686561645f646174616020617265207573656420746f20696e697469616c697a6520746865207061726174687265616427732073746174652e20526573657420746865206e756d626572206f6620706172617468726561647320746861742063616e2070617920746f206265207363686564756c656420696e20612073696e676c6520626c6f636b2e202d2060636f756e74603a20546865206e756d626572206f662070617261746872656164732e204d7573742062652063616c6c65642066726f6d20526f6f74206f726967696e2e636f756e74204465726567697374657220612070617261636861696e207769746820676976656e206964696420526567697374657220612070617261636861696e207769746820676976656e20636f64652e204661696c7320696620676976656e20494420697320616c726561647920757365642e696e666f486561644f66566f7465734f6650687261676d656e456c656374696f6e566f7465734f6662656e6566696369617279206163636f756e74206d757374207072652d6578697374546f74616c49737375616e63654672656542616c616e6365526573657276656442616c616e63654c6f636b73000000000000089110000a0000000000000084571100020000000000000000000000149110000100000000000000000000001c9110000d00000000000000242c11000100000000000000000000002c9110000100000000000000000000003491100008000000000000003c9110000400000000000000000000005c91100001000000000000004e65774163636f756e740000a79110001b0000005265617065644163636f756e7400000090911000170000005472616e736665727e581100090000007e5811000900000087581100070000008758110007000000649110002c000000205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e20416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e5265706f727473656e74697265206e65775f7365742077617320676976656e20746f206275696c645f737570706f72745f6d61703b20656e20656e747279206d757374206265206372656174656420666f722065616368206974656d3b207165645374616b654f660000000000000893100007000000000000001093100001000000000000000000000018931000020000000000000000000000289310000900000000000000449c1100000000000000000000000000349310000100000000000000000000003c9310000c00000000000000242c110001000000000000000000000048931000020000000000000000000000589310000f00000000000000242c110001000000000000000000000068931000010000000000000000000000709310000d00000000000000809310000300000000000000000000009893100002000000000000004e65775465726d008595100019000000df941000550000003495100051000000456d7074795465726d000000a9941000360000004d656d6265724b69636b65644b941000510000009c9410000d0000004d656d62657252656e6f756e636564002394100028000000566f7465725265706f727465640000007e581100090000007e58110009000000e897110004000000a8931000580000000094100023000000204120766f7465722028666972737420656c656d656e742920776173207265706f72746564202862797420746865207365636f6e6420656c656d656e742920776974682074686520746865207265706f7274206265696e67207375636365737366756c206f72206e6f742028746869726420656c656d656e74292e2041206d656d626572206861732072656e6f756e6365642074686569722063616e6469646163792e2041206d656d62657220686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f742060456d7074795465726d602e204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e2041206e6577207465726d2077697468206e6577206d656d626572732e205468697320696e64696361746573207468617420656e6f7567682063616e6469646174657320657869737465642c206e6f74207468617420656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e5665633c284163636f756e7449642c2042616c616e6365293e0000b0951000480000009c0a00000a0000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e7273089610005c0000004f000000010000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f6f6666656e6365732f7372632f6c69622e727343616e6469646174657352756e6e65727355705175657565644b6579733a73657373696f6e3a6b6579734e6578744b657973746f6f2066657720667265652066756e647320696e206163636f756e747061796d656e7420776f756c64206b696c6c206163636f756e7456657374696e676163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c76657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c7565000000000058971000080000000000000060971000020000000000000000000000909710000a000000000000007365745f6b65797300000000ff98100004000000000000000399100007000000000000000a9910000500000000000000dc43110007000000e09710003900000019981000480000006198100031000000449c1100000000009298100035000000449c1100000000007e6311000b000000c798100022000000e9981000160000009e6311000c0000002053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b6579602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e202d204f6e6520657874726120444220656e7472792e6b657973543a3a4b65797370726f6f660000000000675611000a0000000000000000000000789b10001300000000000000000000000000000000000000000000000000000000000000449c110054c9100000000000000000008c9b100001000000000000000100000000000000949b10000c0000000000000000000000295811000c00000000000000000000000000000000000000000000000000000000000000449c11001cc910000000000000000000a09b100001000000000000000100000000000000a89b10000d0000000000000000000000e89711000400000000000000000000000000000000000000000000000000000000000000449c1100b89b10000000000000000000c89b100002000000000000000100000000000000779610000a0000000000000000000000d89b10001e00000000000000000000000000000000000000000000000000000000000000449c1100f89b10000000000000000000089c100002000000000000000100000000000000189c1000120000000000000000000000c26311000800000000000000000000000000000000000000000000000000000000000000449c110054c9100000000000000000002c9c1000030000000000000001000000000000008e961000080000000204010000000000dc4311000700000000000000449c10000e00000000000000039910000700000000000000449c1100549c10000000000000000000649c100004000000000000000000000000000000849c1000080000000204010000000000dc43110007000000000000008c9c10001400000000000000449c10000e00000000000000449c110008b610000000000000000000a09c10000400000000000000000000005665633c543a3a56616c696461746f7249643e00679f10001f00000043757272656e74496e646578499f10001e0000005175657565644368616e6765640000001800000000000000010000002b000000d29e10004e000000209f1000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e00001800000000000000010000002e0000004b9e10004f0000009a9e10003800000044697361626c656456616c696461746f72730000de9d100020000000449c110000000000fe9d10004d000000543a3a56616c696461746f72496400001800000000000000010000002b000000b79d100027000000449c110000000000099d1000560000005f9d1000580000004b65794f776e6572284b65795479706549642c205665633c75383e29c09c100049000000449c110000000000099d1000560000005f9d10005800000020546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f662074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e000000000000c09f1000100000000000000066f510000500000000000000449c1100d09f10000000000000000000e09f1000020000000000000044454455505f4b45595f50524546495818000000000000000100000044000000f09f10005900000049a010000d0000002055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e6368206f662074686520747269652e6e6f7420656e6f75676820667265652066756e647300000000001ca11000080000000000000024a1100002000000000000000000000054a110001900000000000000000000001ca210000b0000000000000028a2100003000000000000000000000070a210000d0000000000000000000000d8a210000e00000000000000e8a2100003000000000000000000000030a3100002000000000000000000000040a31000130000000000000024a1100002000000000000000000000054a3100006000000000000007472616e7366657200000000a72111000400000000000000f366110023000000000000004d6f11000500000000000000ada410001300000081a6100036000000449c110000000000b7a6100042000000f9a610004800000041a710004500000086a710002d000000449c110000000000b3a7100046000000449c1100000000007e6311000b000000f9a710004c00000045a810003300000078a810005a000000449c110000000000d2a8100013000000449c110000000000e5a810005400000039a910004b00000084a9100035000000b9a9100037000000f0a910005600000046aa10005200000098aa10003e000000449c1100000000009e6311000c0000007365745f62616c616e63650000000000864a11000300000000000000f366110023000000000000006da610000800000000000000ada41000130000000000000075a610000c00000000000000ada4100013000000c0a4100025000000449c110000000000e5a41000480000002da51000420000006fa5100046000000b5a510003a000000449c110000000000efa510002d000000449c1100000000007e6311000b0000001ca61000200000003ca61000310000009e6311000c000000666f7263655f7472616e73666572000000000000a7a410000600000000000000f36611002300000000000000a72111000400000000000000f366110023000000000000004d6f11000500000000000000ada410001300000048a41000540000009ca410000b0000007472616e736665725f6b6565705f616c6976650084a3100054000000d8a3100010000000449c110000000000e8a310002f000000449c11000000000017a41000310000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665722045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f75726365436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e636520286073797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c2074726967676572202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e000000000000569010000d000000000000000000000090ac10000a00000000000000000000000000000000000000000000000000000000000000449c11003cc9100000000000000000009cac100001000000000000000100000000000000cd961000070000000101000000000000676411000c00000000000000a4ac10002b00000000000000000000000000000000000000449c1100d0ac10000000000000000000e0ac100001000000000000000000000000000000639010000b0000000101000000000000676411000c0000000000000090ac10000a00000000000000000000000000000000000000449c11003cc910000000000000000000e8ac10000b0000000000000001000000000000006e9010000f0000000101000000000000676411000c0000000000000090ac10000a00000000000000000000000000000000000000449c11003cc91000000000000000000040ad10000b0000000000000001000000000000007d901000050000000101000000000000676411000c0000000000000098ad10002c00000000000000000000000000000000000000449c1100c4ad10000000000000000000d4ad1000010000000000000001000000543a3a42616c616e6365000005b310002600000056657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e001800000000000000010000002b000000cfb210003600000055b0100027000000449c1100000000007cb0100050000000ccb010005d00000029b11000550000007eb110004f000000cdb11000510000001eb2100015000000449c11000000000033b21000570000008ab21000450000000aae10005d00000067ae100027000000449c1100000000008eae10005b000000e9ae100049000000449c11000000000032af10005d0000008faf10002d000000449c110000000000bcaf1000530000000fb01000460000005665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e3e1800000000000000010000002e000000dcad10002e00000020416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c2067657420736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e20546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e73207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e74272069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e2920546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e20497420616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069732064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b20697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f6369617465642077697468207468652064656c65746564206163636f756e742e206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f206765747320636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e20496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e0000000000d4b31000120000000000000090ac10000a00000000000000449c1100e8b310000000000000000000f8b3100001000000000000000000000000b410000b0000000000000090ac10000a00000000000000449c110020b4100000000000000000000cb4100001000000000000000000000014b410000b0000000000000090ac10000a00000000000000449c110020b41000000000000000000030b4100001000000000000004578697374656e7469616c4465706f73697400001800000000000000010000004500000084b41000350000005472616e73666572466565005fb41000250000004372656174696f6e466565001800000000000000010000004600000038b4100027000000205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e205468652066656520726571756972656420746f206d616b652061207472616e736665722e20546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e00000000000000c2911000070000000101000000000000c4b510000d00000000000000d1b510003400000000000000000000000000000000000000449c110008b61000000000000000000018b610000100000000000000000000000000000020b6100016000000020101000000000036b6100004000000000000003ab610000e0000000000000048b610001200000000000000449c110054c9100000000000000000005cb610000100000000000000010000000000000064b6100012000000010100000000000036b610000400000000000000dc4311000700000000000000000000000000000000000000449c110078b61000000000000000000088b610000600000000000000010000005265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e0000001800000000000000010000002b00000021b8100052000000436f6e63757272656e745265706f727473496e6465784b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e0000d7b710004a0000005265706f72747342794b696e64496e64657800001800000000000000010000002c000000b8b6100044000000449c110000000000fcb610002f000000449c1100000000002bb71000520000007db710005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e566563746f72206361706163697479206f766572666c6f7700bfb9100013000000edb910001a0000006cb91000530000005703000003000000bfb9100013000000d2b910001b0000006cb91000530000005d03000003000000e4b81000260000000ab91000620000004400000004000000617373657274696f6e206661696c65643a2062697473203c3d20726573756c742e6c656e28292f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e312e302f7372632f6269745f7665632e72732f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e31352e322f7372632f7665632e72734361706163697479206f766572666c6f773a20206f766572666c6f777320616c6c6f636174696f6e2073697a6520206f766572666c6f7773206d6178696d756d206c656e67746820696d2d6f6e6c696e653a6f66666c696e000000000020021100040000000000000020bb100002000000000000000000000050bb10000f0000000000000000000000c8bb10000c00000000000000449c1100000000000000000000000000d4bb10000700000000000000000000000cbc10001400000000000000c841110001000000000000000000000020bc10000d000000000000000000000088bc10001000000000000000449c110000000000000000000000000098bc10000d000000000000000000000000bd10001200000000000000449c110000000000000000000000000014bd1000090000000000000000000000144811000d000000000000005cbd100001000000000000000000000074bd10000d0000000000000000000000c2c610000500000000000000b064110011000000000000004d6f11000500000000000000526f11001500000028c5100041000000449c11000000000069c51000140000007dc51000120000008fc510002b000000449c110000000000bac510005700000011c610005700000068c6100028000000449c1100000000007e6311000b00000037bf10000b0000001cc510000c00000090c61000320000009e6311000c00000072656d6f76655f766f746572d4c4100048000000449c1100000000007e6311000b00000037bf10000b0000001cc510000c0000001bc310000d0000009e6311000c0000007265706f72745f646566756e63745f766f74657228c31000570000007fc3100057000000d6c3100017000000449c110000000000edc31000220000000fc410005300000062c410002d000000449c1100000000007e6311000b00000037bf10000b0000008fc41000450000001bc310000d0000009e6311000c0000007375626d69745f63616e646964616379d9c110001e000000449c110000000000f7c110001900000010c210003b0000004bc210004b00000096c2100055000000ebc210000d000000449c1100000000007e6311000b00000037bf10000b000000f8c21000230000001bc310000d0000009e6311000c00000072656e6f756e63655f63616e64696461637900006fbf100054000000c3bf100010000000d3bf10005000000023c010003d00000060c0100056000000b6c0100021000000d7c01000530000002ac110005600000080c110005900000000000000864a11000300000000000000f366110023000000dcbd10005700000033be100020000000449c11000000000053be100056000000a9be10003d000000449c110000000000e6be100051000000449c1100000000007e6311000b00000037bf10000b00000042bf10001600000058bf1000170000009e6311000c0000002052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f6620746865206f7574676f696e67206d656d62657220697320736c61736865642e20496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20726f756e6420697320737461727465642e204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e20232323232053746174652052656164733a204f28646f5f70687261676d656e29205772697465733a204f28646f5f70687261676d656e292052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c206f7574636f6d65732065786973743a202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c2074686520626f6e64206973202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e202d20606f726967696e6020697320612063757272656e742072756e6e65722075702e20496e207468697320636173652c2074686520626f6e6420697320756e72657365727665642c2072657475726e656420616e642020206f726967696e2069732072656d6f76656420617320612072756e6e65722e202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c2074686520626f6e6420697320756e726573657276656420616e64206f726967696e20697320202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e20202053696d696c617220746f205b6072656d6f76655f766f746572605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e205375626d6974206f6e6573656c6620666f722063616e6469646163792e20412063616e6469646174652077696c6c206569746865723a2020202d204c6f73652061742074686520656e64206f6620746865207465726d20616e6420666f7266656974207468656972206465706f7369742e2020202d2057696e20616e64206265636f6d652061206d656d6265722e204d656d626572732077696c6c206576656e7475616c6c7920676574207468656972207374617368206261636b2e2020202d204265636f6d6520612072756e6e65722d75702e2052756e6e6572732d75707320617265207265736572766564206d656d6265727320696e2063617365206f6e65206765747320666f72636566756c6c79202020202072656d6f7665642e2052656164733a204f284c6f674e2920476976656e204e2063616e646964617465732e205772697465733a204f283129205265706f727420607461726765746020666f72206265696e6720616e20646566756e637420766f7465722e20496e2063617365206f6620612076616c6964207265706f72742c20746865207265706f727465722069732072657761726465642062792074686520626f6e6420616d6f756e74206f662060746172676574602e204f74686572776973652c20746865207265706f7274657220697473656c662069732072656d6f76656420616e6420746865697220626f6e6420697320736c61736865642e204120646566756e637420766f74657220697320646566696e656420746f2062653a2020202d206120766f7465722077686f73652063757272656e74207375626d697474656420766f7465732061726520616c6c20696e76616c69642e20692e652e20616c6c206f66207468656d20617265206e6f20202020206c6f6e67657220612063616e646964617465206e6f7220616e20616374697665206d656d6265722e2052656164733a204f284e4c6f674d2920676976656e204d2063757272656e742063616e6469646174657320616e64204e20766f74657320666f722060746172676574602e2052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e732074686520626f6e642e2052656164733a204f28312920566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e205468652060766f746573602073686f756c643a2020202d206e6f7420626520656d7074792e2020202d206265206c657373207468616e20746865206e756d626572206f662063616e646964617465732e2055706f6e20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e64206120626f6e6420616d6f756e742069732072657365727665642e2049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f206e6f7420706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636b20616e64206b65657020736f6d6520666f722066757274686572207472616e73616374696f6e732e205772697465733a204f28562920676976656e2060566020766f7465732e205620697320626f756e6465642062792031362e766f746573000000000003301100070000000000000000000000d8c810002100000000000000000000000000000000000000000000000000000000000000449c110054c910000000000000000000fcc81000010000000000000001000000000000006e961000090000000000000000000000d8c810002100000000000000000000000000000000000000000000000000000000000000449c110054c91000000000000000000004c91000010000000000000001000000000000000cc910000e0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c11001cc9100000000000000000002cc91000010000000000000001000000000000002d901000070000000101010000000000676411000c00000000000000b06411001100000000000000000000000000000000000000449c110054c91000000000000000000034c910000100000000000000010000000000000023921000070000000101000000000000676411000c00000000000000c47d11000c00000000000000000000000000000000000000449c11003cc9100000000000000000004cc9100001000000000000000100000000000000649610000a0000000000000000000000b06411001100000000000000000000000000000000000000000000000000000000000000449c110054c91000000000000000000064c910000200000000000000010000005665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e00000008cb10003c000000b6ca100052000000456c656374696f6e526f756e647300001800000000000000010000003000000066ca10005000000026ca100040000000180000000000000001000000470000000dca1000190000001800000000000000010000002e00000074c9100059000000cdc9100040000000205468652070726573656e742063616e646964617465206c6973742e20536f72746564206261736564206f6e206163636f756e742069642e20412063757272656e74206d656d6265722063616e206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e204c6f636b6564207374616b65206f66206120766f7465722e20566f746573206f66206120706172746963756c617220766f7465722c20776974682074686520726f756e6420696e646578206f662074686520766f7465732e2054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e205468652063757272656e742072756e6e6572735f75702e20536f72746564206261736564206f6e206c6f7720746f2068696768206d657269742028776f72736520746f20626573742072756e6e6572292e205468652063757272656e7420656c6563746564206d656d626572736869702e20536f72746564206261736564206f6e206163636f756e742069642e000000005ccc10000d00000000000000c47d11000c00000000000000449c11006ccc10000000000000000000449c11000000000000000000000000007ccc10000a00000000000000c47d11000c00000000000000449c110088cc10000000000000000000449c110000000000000000000000000098cc10000e00000000000000a67b11000300000000000000449c1100a8cc10000000000000000000449c1100000000000000000000000000b8cc10001000000000000000a67b11000300000000000000449c1100c8cc10000000000000000000449c1100000000000000000000000000d8cc10000c00000000000000069411000e00000000000000449c1100e4cc10000000000000000000449c1100000000000000000043616e646964616379426f6e6400000018000000000000000100000035000000566f74696e67426f6e64000018000000000000000100000048000000446573697265644d656d626572730000180000000000000001000000490000004465736972656452756e6e65727355701800000000000000010000004a0000005465726d4475726174696f6e1800000000000000010000004b0000006e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e72656769737465726564206475706c6963617465206b657900f0cd10005c0000008401000001000000676f74206f766572666c6f7720616674657220616464696e6720612066656520746f2076616c756562616c616e636520746f6f206c6f7720746f2073656e642076616c756564657374696e6174696f6e2062616c616e636520746f6f206869676820746f20726563656976652076616c756576616c756520746f6f206c6f7720746f20637265617465206163636f756e747472616e7366657220776f756c64206b696c6c206163636f756e742f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f62616c616e6365732f7372632f6c69622e72732dd0100066000000ab0000000100000063616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d6265727320657869737463616e6e6f7420766f7465206d6f7265207468616e2063616e6469646174657363616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765646d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e63616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e6365766f7465722063616e206e6f742070617920766f74696e6720626f6e6463616e6e6f74207265706f72742073656c667265706f72746572206d757374206265206120766f7465726475706c69636174652063616e646964617465207375626d697373696f6e6d656d6265722063616e6e6f742072652d7375626d69742063616e64696461637972756e6e65722063616e6e6f742072652d7375626d69742063616e64696461637963616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64736f726967696e206973206e6f7420612063616e6469646174652c206d656d626572206f7220612072756e6e65722e6d757374206265206120766f7465722f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f656c656374696f6e732d70687261676d656e2f7372632f6c69622e72736e6f6e652076616c756573206172652066696c7465726564206f757420696e2070726576696f7573206c6f6769633b207165640000b095100048000000a20a00000e0000002f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e312e302f7372632f636f6d706163742e7273000000000000d4f61000080000000000000044d210000100000000000000000000004cd2100001000000000000000000000054d2100008000000000000005cd2100001000000000000000000000064d210000100000000000000000000006cd21000070000000000000074d210000300000000000000000000008cd2100001000000000000000000000094d2100005000000000000005cd210000100000000000000000000009cd21000010000000000000000000000a4d2100008000000000000005cd21000010000000000000000000000acd21000010000000000000000000000b4d2100007000000000000005cd21000010000000000000000000000bcd21000010000000000000098f910000d000000add310000e0000005370656e64696e67875811000700000073d310003a000000417761726465640098f910000d00000087581100070000007e5811000900000053d31000200000004275726e7400000030d3100023000000526f6c6c6f766572e4d210004c0000004465706f73697400c4d210002000000020536f6d652066756e64732068617665206265656e206465706f73697465642e205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e204e65772070726f706f73616c2e0035d4100036000000d8d01000620000005f01000005000000000000000000000000000000f8d310003d000000d8d01000620000006601000005000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b2071656450726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b207165640035d4100036000000d8d01000620000008b010000050000000000000000000000000000000000000000000000d8d01000620000009201000005000000496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e74206279207472656173757279486973746f726963616c53657373696f6e730000000088d510000d0000000000000098d51000020000000000000000000000c8d5100009000000000000000000000010d610000f0000000000000020d6100001000000000000000000000038d6100007000000000000000000000070d61000100000000000000020d6100001000000000000000000000080d61000080000000000000070726f706f73655f7370656e64000000000000004d6f11000500000000000000526f1100150000000000000098d810000b00000000000000f366110023000000c6d710004b00000011d810004d0000005ed8100015000000449c1100000000007e6311000b0000008d7011000800000042d710001900000073d81000250000009e6311000c00000072656a6563745f70726f706f73616c0000000000bbd710000b0000000000000018031100160000006cd710003f000000449c1100000000007e6311000b0000008d7011000800000042d7100019000000abd71000100000009e6311000c000000617070726f76655f70726f706f73616cc0d610005700000017d710002b000000449c1100000000007e6311000b0000008d7011000800000042d71000190000005bd71000110000009e6311000c00000020417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e202d204c696d697465642073746f726167652072656164732e202d204f6e65204442206368616e67652e2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e202d204f6e6520444220636c6561722e70726f706f73616c5f69642050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e62656e65666963696172790000000000080511000d000000000000000000000098f910000d00000000000000000000000000000000000000000000000000000000000000449c1100acd910000000000000000000bcd91000010000000000000001000000000000007900110009000000010100000000000098f910000d00000000000000c4d910002400000000000000000000000000000000000000449c1100e8d910000000000000000000f8d910000100000000000000000000000000000000da100009000000000000000000000009da10001200000000000000000000000000000000000000000000000000000000000000449c11001cda100000000000000000002cda10000100000000000000010000001800000000000000010000003000000091da10002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e1800000000000000010000002b00000072da10001f000000417070726f76616c735665633c50726f706f73616c496e6465783e001800000000000000010000002e00000034da10003e0000002050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e0000000000009cdb10000c00000000000000a8db10000700000000000000449c1100b0db10000000000000000000c0db1000020000000000000000000000d0db10001300000000000000c47d11000c00000000000000449c1100e4db10000000000000000000f4db1000010000000000000000000000fcdb10000b00000000000000069411000e00000000000000449c110008dc1000000000000000000018dc100001000000000000000000000020dc10000400000000000000a8db10000700000000000000449c110024dc1000000000000000000034dc1000010000000000000050726f706f73616c426f6e645065726d696c6c001800000000000000010000004c000000f4dc10005500000049dd10004400000050726f706f73616c426f6e644d696e696d756d0018000000000000000100000035000000a2dc1000520000005370656e64506572696f64001800000000000000010000004d00000080dc1000220000004275726e1800000000000000010000004e0000003cdc1000440000002050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e00000000000000e8dd1000110000000000000000000000f9dd10000a00000000000000000000000000000000000000000000000000000000000000449c110004de10000000000000000000449c11000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572001800000000000000010000003e0000000000000084de10001200000000000000c47d11000c00000000000000449c110098de10000000000000000000a8de1000010000000000000000000000b0de10001200000000000000c47d11000c00000000000000449c1100c4de10000000000000000000d4de100001000000000000005472616e73616374696f6e426173654665650000180000000000000001000000460000001fdf1000370000005472616e73616374696f6e4279746546656500001800000000000000010000004f000000dcde100043000000205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e000010e0100048000000b20100002300000010e0100048000000b301000023000000e9df10001c000000cc9b110018000000e60300000d000000a0df100049000000870200001d0000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f736f72742e7273617373657274696f6e206661696c65643a206d6964203c3d206c656e00000000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e7273a0df1000490000009d0000003a000000a0df100049000000a400000030000000bbe010005c000000720000000100000050726f706f73657227732062616c616e636520746f6f206c6f774e6f2070726f706f73616c206174207468617420696e6465782f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f74726561737572792f7372632f6c69622e72730020e110001a0000004552524f523a20436f727275707465642073746174652061742000000000000068e110000f0000000000000078e1100002000000000000000000000088e1100004000000000000004e65774163636f756e74496e646578007e5811000900000023e210000c000000a8e1100022000000449c110000000000cae11000410000000be21000180000002041206e6577206163636f756e7420696e646578207761732061737369676e65642e2054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e656420746f20616e6f7468657220604163636f756e744964602e4163636f756e74496e6465780050e210001900000070e2100048000000bb0100002d0000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f6f70732f61726974682e7273c8e2100058000000a1000000010000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f626162652f7372632f6c69622e727374696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c00000064e310005b0000004a000000010000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f696e64696365732f7372632f6c69622e7273496e76616c69642072616e676520666f7220746869732061756374696f6e72616e676520656e6473206265666f726520697420626567696e7372616e676520626567696e7320746f6f206561726c7972616e676520626567696e7320746f6f206c61746572616e676520656e647320746f6f206c61746500000000000064e4100007000000000000006ce4100003000000000000000000000084e410000100000000000000436c61696d6564007e58110009000000a7e410000f00000087581100070000008ce410001b00000020536f6d656f6e6520636c61696d656420736f6d6520444f54732e457468657265756d416464726573734469676573744974656d206e6f7420657175616c000000000000e4e710000a0000000000000000000000eee710000300000000000000000000000000000000000000000000000000000000000000449c110060e810000000000000000000f4e7100001000000000000000100000000000000fce710000b000000000000000000000007e810002700000000000000000000000000000000000000000000000000000000000000449c110000f21000000000000000000030e810000100000000000000010000000000000038e810000b0000000000000000000000eee710000300000000000000000000000000000000000000000000000000000000000000449c110060e81000000000000000000044e810000200000000000000010000000000000054e810000b0000000000000000000000eee710000300000000000000000000000000000000000000000000000000000000000000449c110060e81000000000000000000070e810000100000000000000010000000000000078e810000a000000000000000000000082e810000800000000000000000000000000000000000000000000000000000000000000449c1100ece8100000000000000000008ce810000a000000000000000100000000000000dce810000e000000000000000000000082e810000800000000000000000000000000000000000000000000000000000000000000449c1100ece810000000000000000000fce810000100000000000000010000000000000004e910000c0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100e8f11000000000000000000010e910000900000000000000010000000000000058e91000110000000101000000000000a67b1100030000000000000069e910000d00000000000000000000000000000000000000449c110078e910000000000000000000449c11000000000000000000010000000000000088e910000b000000000000000000000093e910000800000000000000000000000000000000000000000000000000000000000000449c11009ce910000000000000000000ace9100002000000000000000000000045706f6368496e646578753634000000f7ed100015000000417574686f7269746965735665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0000dced10001b00000047656e65736973536c6f74007aed10003e000000b8ed10002400000043757272656e74536c6f74001800000000000000010000003e00000065ed10001500000052616e646f6d6e6573735b75383b2033325d00009feb10002e000000449c110000000000cdeb10000b000000449c110000000000d8eb10004100000019ec10003e00000057ec1000450000009cec100045000000e1ec10004100000022ed1000430000004e65787452616e646f6d6e65737300001800000000000000010000005000000088eb1000170000005365676d656e74496e64657843ea10001f000000449c11000000000062ea10003d0000009fea100040000000dfea100025000000449c11000000000004eb10003b0000003feb10004200000081eb100007000000556e646572436f6e737472756374696f6e5665633c5b75383b2033325d3e00001800000000000000010000002e000000496e697469616c697a65644d61796265567266001800000000000000010000002b000000bce9100040000000fce91000470000002054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e000000007cee10000d00000000000000eee710000300000000000000449c11008cee100000000000000000009cee1000020000000000000000000000acee10001100000000000000754b11000900000000000000449c1100c0ee10000000000000000000d0ee1000050000000000000045706f63684475726174696f6e0000001800000000000000010000005100000028f01000430000006bf010003f0000004578706563746564426c6f636b54696d6500000018000000000000000100000052000000f8ee10004100000039ef1000440000007def100041000000beef10004200000000f010002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e4e657874456e756d536574456e756d536574636c61696d7319457468657265756d205369676e6564204d6573736167653a0a65706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b2071656400000000000000aaf010000b0000000000000000000000d8f110000f00000000000000000000000000000000000000000000000000000000000000449c1100e8f110000000000000000000f8f1100001000000000000000100000000000000b5f01000070000000101000000000000d8f110000f00000000000000b06411001100000000000000000000000000000000000000449c110000f21000000000000000000010f21000010000000000000001000000543a3a4163636f756e74496e64657800180000000000000001000000300000002ef210001f0000001800000000000000010000002e00000018f21000160000002054686520656e756d65726174696f6e20736574732e20546865206e657874206672656520656e756d65726174696f6e207365742e70617261000000000000007c3e1100060000000101000000000000a7e410000f00000000000000c47d11000c00000000000000000000000000000000000000449c110004f310000000000000000000449c11000000000000000000000000000000000014f31000050000000000000000000000c47d11000c00000000000000000000000000000000000000000000000000000000000000449c11001cf310000000000000000000449c11000000000000000000010000001800000000000000010000002b000000546f74616c00000018000000000000000100000047000000bbf310003f0000007900000001000000496e76616c696420457468657265756d207369676e6174757265457468657265756d206164647265737320686173206e6f20636c61696d008cf310002f000000bbf310003f0000008e000000050000004c6f676963206572726f723a20506f74206c657373207468616e2074686520746f74616c206f6620636c61696d73212f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f636c61696d732e727300000000000054f4100005000000000000005cf410000200000000000000000000008cf4100001000000000000000000000094f410000a00000000000000a0f41000020000000000000000000000d0f410000100000000000000636c61696d00000000000000a72111000400000000000000676411000c0000000000000008f5100012000000000000001af510000e000000faf410000e0000006d696e745f636c61696d000000000000864a11000300000000000000a7e410000f000000000000004d6f11000500000000000000c47d11000c000000d8f4100022000000204164642061206e657720636c61696d2c20696620796f752061726520726f6f742e204d616b65206120636c61696d2e657468657265756d5f7369676e617475726545636473615369676e61747572650000000060f51000060000000000000066f510000500000000000000449c11006cf5100000000000000000007cf510000100000000000000507265666978265b75385d001800000000000000010000005300000084f510004500000020546865205072656669782074686174206973207573656420696e207369676e656420457468657265756d206d6573736167657320666f722074686973206e6574776f726b00000000000000d4f610000800000000000000dcf61000040000000000000000000000fcf610000200000000000000000000000cf71000050000000000000014f710000500000000000000000000003cf710000200000000000000000000004cf71000080000000000000054f710000100000000000000000000005cf7100001000000000000000000000064f710000b0000000000000054f7100001000000000000000000000070f7100001000000000000000000000078f71000080000000000000080f7100002000000000000000000000090f7100001000000000000000000000098f710000e0000000000000080f71000020000000000000000000000a8f71000010000000000000050726f706f7365647e5811000900000098f910000d000000b8971100040000002af910000b00000035f910005300000088f9100010000000566f7465640000007e58110009000000b897110004000000e8971100040000002af910000b0000002af910000b000000a2f8100042000000e4f8100046000000417070726f766564b89711000400000071f8100031000000446973617070726f766564003cf81000350000004578656375746564b897110004000000e897110004000000fbf71000410000004d656d62657245786563757465640000b0f710004b00000020412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d656d626572436f756e742041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e50726f706f73616c496e64657863616e2774207377617020616e20756e6465706c6f7965642070617261636861696e4f6e626f617264696e670000000000000008fb10000e0000000000000018fb100001000000000000000000000020fb100001000000000000000000000028fb10000e0000000000000038fb100003000000000000000000000050fb100002000000000000000000000060fb10000d0000000000000070fb100001000000000000000000000078fb100001000000000000000000000080fb100009000000000000008cfb1000040000000000000000000000acfb1000010000000000000000000000b4fb10000a00000000000000c0fb1000040000000000000000000000e0fb1000020000000000000000000000f0fb10000800000000000000f8fb100003000000000000000000000010fc100002000000000000000000000020fc10000a00000000000000845711000200000000000000000000002cfc100001000000000000004e65774c65617365506572696f640000a1fe10000b000000b7fe10002100000041756374696f6e537461727465640000fcfd10000c000000a1fe10000b000000acfe10000b00000008fe1000530000005bfe10004600000041756374696f6e436c6f736564000000fcfd10000c000000cdfd10002f000000576f6e4465706c6f79000000b9fd1000140000005bfd10000900000055fd100006000000875811000700000064fd100055000000576f6e52656e6577616c000055fd1000060000005bfd10000900000087581100070000008758110007000000d4fc10003100000005fd10005000000052657365727665647e58110009000000875811000700000087581100070000006cfc100053000000bffc100015000000556e7265736572766564000034fc1000380000002046756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e2046756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e205365636f6e642069732074686520746f74616c2e20416e206578697374696e672070617261636861696e20776f6e2074686520726967687420746f20636f6e74696e75652e2046697273742062616c616e63652069732074686520657874726120616d6f756e7420726573657665642e205365636f6e642069732074686520746f74616c20616d6f756e742072657365727665642e506172614964536c6f7452616e676520536f6d656f6e6520776f6e2074686520726967687420746f206465706c6f7920612070617261636861696e2e2042616c616e636520616d6f756e7420697320646564756374656420666f72206465706f7369742e4e65774269646465723c4163636f756e7449643e20416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e41756374696f6e496e64657820416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f20636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e4c65617365506572696f64426c6f636b4e756d6265722041206e6577206c6561736520706572696f6420697320626567696e6e696e672e41756374696f6e496e666f57696e6e696e670000380000000800000004000000540000006069203c2034603b20606a203c2069603b20606a202b2031203c2034603b2071656441756374696f6e436f756e7465724d616e616765644964730000020000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000020000004f6e626f61726451756575654f6666626f617264696e6700030000000300000000000000000000000000000000000000000000000000000000000000010000000200000003000000010000000200000003000000020000004465706f736974732e00110029000000f0ff10003e0000004e020000080000002f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f736c6f74732e72736561726c69657220726573697a65206d65616e73206974206d757374206265203e3d20693b207165645265736572766564416d6f756e7473496e7374616e636532436f6c6c65637469766550726f706f73616c73566f74696e67496e7374616e636531436f6c6c65637469766500000000004c0111000b00000000000000580111000100000000000000000000007001110004000000000000000000000090011100070000000000000098011100010000000000000000000000b0011100030000000000000000000000c80111000700000000000000d001110002000000000000000000000000021100040000000000000000000000200211000400000000000000240211000300000000000000000000006c02110004000000000000007365745f6d656d626572730000000000ab0411000b00000000000000b0641100110000002a041100540000007e04110017000000449c1100000000009504110016000000657865637574650000000000040311000800000000000000a40311001e000000c20311003d000000449c110000000000ff0311002b00000070726f706f73650000000000870311000900000000000000900311001400000000000000040311000800000000000000a40311001e0000007e6311000b0000003503110024000000590311002e0000009e6311000c000000766f7465000000000403110008000000000000000c03110007000000000000001303110005000000000000001803110016000000000000002e0311000700000000000000e8971100040000007e6311000b0000008c02110023000000af021100550000009e6311000c000000202d20426f756e6465642073746f72616765207265616420616e64207772697465732e202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e70726f706f73616c543a3a48617368696e646578436f6d706163743c50726f706f73616c496e6465783e617070726f7665202d20426f756e6465642073746f7261676520726561647320616e64207772697465732e202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e7468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e642070726f76696465206974207072652d736f727465642e20526571756972657320726f6f74206f726967696e2e6e65775f6d656d626572730000e80511002400000050726f706f73616c4f663c542061732054726169743c493e3e3a3a50726f706f73616c00b505110033000000566f7465733c543a3a4163636f756e7449643e00880511002d00000050726f706f73616c436f756e740000007605110012000000280511004e000000205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e00000000790011000900000000000000000000003c9511000c00000000000000000000000000000000000000000000000000000000000000449c1100c80d11000000000000000000b804110001000000000000000100000000000000c00411000a00000001010000000000000c0311000700000000000000ca0411001900000000000000000000000000000000000000449c1100c40711000000000000000000e404110001000000000000000000000000000000820011000600000001010000000000000c0311000700000000000000ec0411001300000000000000000000000000000000000000449c1100c407110000000000000000000005110001000000000000000000000000000000080511000d0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100400c11000000000000000000180511000100000000000000010000000000000003301100070000000000000000000000b06411001100000000000000000000000000000000000000000000000000000000000000449c1100c80d11000000000000000000200511000100000000000000010000001800000000000000010000002b000000c80811005e000000820000000100000070726f706f736572206e6f742061206d656d6265726475706c69636174652070726f706f73616c73206e6f7420616c6c6f77656470726f706f73616c206d7573742065786973746d69736d61746368656420696e6465786475706c696361746520766f74652069676e6f7265640000008008110048000000a20a00000e000000766f746572206e6f742061206d656d626572000000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72732f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f636f6c6c6563746976652f7372632f6c69622e72730000000000001eff10000e0000000000000000000000fcfd10000c00000000000000000000000000000000000000000000000000000000000000449c1100400c11000000000000000000500c1100010000000000000001000000000000002cff10000a0000000000000000000000580c11000b00000000000000000000000000000000000000000000000000000000000000449c1100c80d11000000000000000000640c110002000000000000000100000000000000d0ff100008000000010100000000000055fd10000600000000000000740c11001100000000000000000000000000000000000000449c1100c80d11000000000000000000880c11000d000000000000000100000000000000d8fe10000b0000000000000000000000f00c11002200000000000000000000000000000000000000000000000000000000000000449c1100140d11000000000000000000240d110005000000000000000000000000000000e3fe1000070000000101000000000000069411000e000000000000004c0d11000e00000000000000000000000000000000000000449c11005c0d110000000000000000006c0d110003000000000000000000000000000000570011000f0000000101000000000000840d11001400000000000000c47d11000c00000000000000000000000000000000000000449c1100980d11000000000000000000a80d11000200000000000000000000000000000078ff10000c0000000101000000000000b80d11001000000000000000580c11000b00000000000000000000000000000000000000449c1100c80d11000000000000000000d80d110002000000000000000100000000000000c7f910000a000000010100000000000055fd10000600000000000000e80d11003c00000000000000000000000000000000000000449c1100240e11000000000000000000340e11000400000000000000000000000000000084ff10000b000000010100000000000055fd10000600000000000000676411000c00000000000000000000000000000000000000449c1100540e11000000000000000000640e110002000000000000000100000018000000000000000100000030000000ab161100310000005665633c5061726149643e000e16110053000000611611004a0000005665633c42616c616e63654f663c543e3e00000043131100570000009a13110014000000449c110000000000ae1311005900000007141100540000005b1411002c000000449c1100000000008714110058000000df1411002d000000449c1100000000000c151100540000006015110057000000b715110057000000284c65617365506572696f644f663c543e2c20543a3a426c6f636b4e756d6265722900001800000000000000010000003d000000091211003e000000449c11000000000047121100510000009812110054000000ec1211005700000057696e6e696e67446174613c543e00001800000000000000010000005500000017111100570000006e11110054000000c2111100470000004269646465723c543a3a4163636f756e7449643e1800000000000000010000002b000000bd1011004c000000091111000e0000004c65617365506572696f644f663c543e1800000000000000010000002e0000002810110059000000811011003c000000284c65617365506572696f644f663c543e2c20496e636f6d696e6750617261636861696e3c543a3a4163636f756e7449642c20543a3a486173683e29180000000000000001000000560000001b0f1100530000006e0f110049000000b70f1100560000000d1011001b00000018000000000000000100000043000000740e110059000000cd0e11004e000000204f66662d626f617264696e67206163636f756e743b2063757272656e63792068656c64206f6e206465706f73697420666f72207468652070617261636861696e206765747320706c616365642068657265206966207468652070617261636861696e2067657473206f66662d626f61726465643b20692e652e20697473206c6561736520706572696f6420697320757020616e642069742069736e27742072656e657765642e205468652061637475616c206f6e2d626f617264696e6720696e666f726d6174696f6e2e204f6e6c7920657869737473207768656e206f6e65206f662074686520666f6c6c6f77696e6720697320747275653a202d204974206973206265666f726520746865206c6561736520706572696f642074686174207468652070617261636861696e2073686f756c64206265206f6e2d626f61726465642e202d205468652066756c6c206f6e2d626f617264696e6720696e666f726d6174696f6e20686173206e6f7420796574206265656e2070726f766964656420616e64207468652070617261636861696e206973206e6f74207965742064756520746f206265206f66662d626f61726465642e2054686520736574206f662050617261204944732074686174206861766520776f6e20616e64206e65656420746f206265206f6e2d626f617264656420617420616e207570636f6d696e67206c656173652d706572696f642e205468697320697320636c6561726564206f7574206f6e2074686520666972737420626c6f636b206f6620746865206c6561736520706572696f642e20416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e6720287375622d2972616e6765732e205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e676573206174206561636820626c6f636b20696e207468652066696e616c20456e64696e6720506572696f64206f66207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f2074686520456e64696e6720506572696f642e2054686520666972737420626c6f636b206f662074686520656e64696e6720706572696f6420697320303b20746865206c6173742069732060456e64696e67506572696f64202d2031602e20496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e20546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f757220636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468652061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e20566172696f757320616d6f756e7473206f6e206465706f73697420666f7220656163682070617261636861696e2e20416e20656e74727920696e20604d616e616765644964736020696d706c6965732061206e6f6e2d2064656661756c7420656e74727920686572652e205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620617420616e792074696d6520697320746865206d6178696d756d206974656d20696e2074686973206c6973742e20546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572206578697374656429206173206661722061732074686973206d6f64756c6520697320636f6e6365726e65642e20496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e2069742077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f7265207a65726f657320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e204f726465726564206c697374206f6620616c6c2060506172614964602076616c756573207468617420617265206d616e616765642062792074686973206d6f64756c652e205468697320696e636c7564657320636861696e73207468617420617265206e6f7420796574206465706c6f7965642028627574206861766520776f6e20616e2061756374696f6e20696e2074686520667574757265292e20546865206e756d626572206f662061756374696f6e732074686174206265656e207374617274656420736f206661722ef0ff10003e000000e3000000010000006163636f756e74206973206e6f7420612070617261636861696e6e6f7420612070617261636861696e206f726967696e70617261636861696e206964206e6f7420696e206f6e626f617264696e67616c7265616479207265676973746572656470617261636861696e206e6f742072656769737465726564206279206f726967696e6465706c6f792064617461206e6f7420796574206669786564636f6465206e6f7420646f65736e277420636f72726573706f6e6420746f206861736861756374696f6e20616c726561647920696e2070726f67726573736c6561736520706572696f6420696e20706173746e6f7420616e2061756374696f6e6e6f742063757272656e742061756374696f6e6269646465722077696e6e696e67206e6f6e2d696e74657273656374696e672072616e67652829000000000000002c1911000b000000000000003819110002000000000000000000000068191100050000000000000000000000901911000300000000000000941911000500000000000000000000000c1a11001000000000000000000000008c1a11000900000000000000981a1100040000000000000000000000f81a11000f0000000000000000000000701b11000f00000000000000801b1100010000000000000000000000981b1100050000000000000000000000c01b11000f00000000000000d01b1100040000000000000000000000301c1100070000000000000000000000681c11001500000000000000801c1100020000000000000000000000b01c11000c000000000000006e65775f61756374696f6e0000000000b32611000800000000000000749311001700000000000000bb2611001200000000000000ae24110019000000a725110016000000449c110000000000bd25110055000000122611004a0000005c261100570000006269640000000000d82011000300000000000000db2011000e00000000000000822411000d000000000000008f2411001500000000000000a42411000a00000000000000ae2411001900000000000000c72411000900000000000000ae2411001900000000000000d02411000600000000000000526f110015000000d624110053000000292511000b000000449c110000000000ff211100570000005622110050000000449c11000000000034251100560000008a2511001d000000a622110054000000fa2211001b00000015231100530000006823110043000000ab231100510000006823110043000000fc231100530000004f241100330000006269645f72656e657700000000000000822411000d000000000000008f2411001500000000000000a42411000a00000000000000ae2411001900000000000000c72411000900000000000000ae2411001900000000000000d02411000600000000000000526f110015000000ab21110054000000449c110000000000352111002a000000449c110000000000ff211100570000005622110050000000449c110000000000a622110054000000fa2211001b00000015231100530000006823110043000000ab231100510000006823110043000000fc231100530000004f241100330000007365745f6f6666626f617264696e670000000000a72111000400000000000000f3661100230000000321110032000000449c110000000000352111002a000000449c1100000000005f211100480000006669785f6465706c6f795f646174610000000000d82011000300000000000000db2011000e00000000000000521f11000700000000000000591f11000f00000000000000e920110009000000000000000c0311000700000000000000f22011001100000000000000dc431100070000006c1f11004b000000449c110000000000b71f110032000000e91f11002c000000152011004000000055201100470000009c2011003c000000656c61626f726174655f6465706c6f795f6461746100000000000000521f11000700000000000000591f11000f00000000000000681f11000400000000000000dc43110007000000101d11001d000000449c1100000000002d1d110053000000801d110031000000449c110000000000b11d110058000000091e1100510000005a1e110059000000449c110000000000b31e11001b000000ce1e11003f0000000d1f110045000000204e6f74652061206e65772070617261636861696e277320636f64652e2054686973206d7573742062652063616c6c656420616674657220606669785f6465706c6f795f646174616020616e642060636f646560206d7573742062652074686520707265696d616765206f66207468652060636f64655f68617368602070617373656420746865726520666f72207468652073616d652060706172615f6964602e2054686973206d61792062652063616c6c6564206265666f7265206f722061667465722074686520626567696e6e696e67206f66207468652070617261636861696e2773206669727374206c6561736520706572696f642e2049662063616c6c6564206265666f7265207468656e207468652070617261636861696e2077696c6c206265636f6d65206163746976652061742074686520666972737420626c6f636b206f6620697473207374617274696e67206c6561736520706572696f642e2049662061667465722c207468656e2069742077696c6c206265636f6d652061637469766520696d6d6564696174656c7920616674657220746869732063616c6c2e202d20605f6f726967696e6020697320697272656c6576616e742e202d2060706172615f696460206973207468652070617261636861696e2049442077686f736520636f64652077696c6c20626520656c61626f72617465642e202d2060636f6465602069732074686520707265696d616765206f662074686520726567697374657265642060636f64655f6861736860206f662060706172615f6964602e706172615f6964436f6d706163743c5061726149643e636f64652053657420746865206465706c6f7920696e666f726d6174696f6e20666f722061207375636365737366756c2062696420746f206465706c6f792061206e65772070617261636861696e2e202d20606f726967696e60206d75737420626520746865207375636365737366756c20626964646572206163636f756e742e202d20607375626020697320746865207375622d626964646572204944206f6620746865206269646465722e202d2060706172615f696460206973207468652070617261636861696e20494420616c6c6f7474656420746f207468652077696e6e696e67206269646465722e202d2060636f64655f6861736860206973207468652068617368206f66207468652070617261636861696e2773205761736d2076616c69646174696f6e2066756e6374696f6e2e202d2060696e697469616c5f686561645f6461746160206973207468652070617261636861696e277320696e697469616c206865616420646174612e737562436f6d706163743c53756249643e636f64655f68617368696e697469616c5f686561645f646174612053657420746865206f66662d626f617264696e6720696e666f726d6174696f6e20666f7220612070617261636861696e2e20546865206f726967696e202a6d7573742a20626520612070617261636861696e206163636f756e742e202d20606465737460206973207468652064657374696e6174696f6e206163636f756e7420746f2072656365697665207468652070617261636861696e2773206465706f7369742e64657374204d616b652061206e6577206269642066726f6d20612070617261636861696e206163636f756e7420666f722072656e6577696e67207468617420287072652d6578697374696e67292070617261636861696e2e204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c206163746976652062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e742076616c7565206f66206041756374696f6e436f756e746572602e202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e61756374696f6e5f696e646578436f6d706163743c41756374696f6e496e6465783e66697273745f736c6f74436f6d706163743c4c65617365506572696f644f663c543e3e6c6173745f736c6f74616d6f756e74204d616b652061206e6577206269642066726f6d20616e206163636f756e742028696e636c7564696e6720612070617261636861696e206163636f756e742920666f72206465706c6f79696e672061206e65772070617261636861696e2e202d20607375626020697320746865207375622d6269646465722049442c20616c6c6f77696e6720666f72206d756c7469706c6520636f6d706574696e67206269647320746f206265206d6164652062792028616e642066756e64656420627929207468652073616d65206163636f756e742e204372656174652061206e65772061756374696f6e2e20546869732063616e206f6e6c792068617070656e207768656e2074686572652069736e277420616c726561647920616e2061756374696f6e20696e2070726f677265737320616e64206d6179206f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e20416363657074732074686520606475726174696f6e60206f6620746869732061756374696f6e20616e642074686520606c656173655f706572696f645f696e64657860206f662074686520696e697469616c206c6561736520706572696f64206f662074686520666f757220746861742061726520746f2062652061756374696f6e65642e6475726174696f6e6c656173655f706572696f645f696e646578000000e82611002b000000132711005d0000009e0000000400000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b2f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f74696d657374616d702f7372632f6c69622e72734e6f77003800000008000000040000005400000054696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570744765747320616e64206465636f6465732074696d657374616d7020696e686572656e7420646174616b7573616d617061726974792d6b7573616d61df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1501000000f78b278be53f454c01000000af2c0297a23e6d3d01000000ed99c5acb25eedf502000000cbca25e39f14238701000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a8010000006772616e62616265696d6f6e70617261617564690000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e01506179204b534d7320746f20746865204b7573616d61206163636f756e743a00ffffff1f122b110016000000282b110016000000882a110057000000a701000003000000df2a11002d0000000c2b1100030000000f2b110003000000010000000000000020000000000000000300000000000000030000000000000003000000010000000100000020000000080000000300000000000000000000000200000003000000010000000200000020000000000000000300000000000000030000000000000003000000882a110057000000b7010000030000002f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e31352e322f7372632f706f696e7465722e727342697450747220726567696f6e2063616e6e6f7420777261702074686520616464726573732073706163653a20202b20203d204269745074722063616e6e6f7420616464726573732020626974733b20746865206d6178696d756d206973200000000000001c2c11000700000000000000242c11000100000000000000000000002c2c1100010000000000000000000000342c11000a00000000000000242c1100010000000000000000000000402c1100010000000000000000000000482c11000b00000000000000242c1100010000000000000000000000542c11000100000000000000000000005c2c11000b0000000000000084571100020000000000000000000000682c1100010000000000000000000000702c11000a00000000000000845711000200000000000000000000007c2c110001000000000000004e616d65536574007e58110009000000172d1100100000004e616d65466f726365640000fe2c1100190000004e616d654368616e67656400ea2c1100140000004e616d65436c656172656400b62c1100340000004e616d654b696c6c65640000842c1100320000002041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e2041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e2041206e616d6520776173206368616e6765642e2041206e616d652077617320666f726369626c79207365742e2041206e616d6520776173207365742e0000000000042e11000b00000000000000449c1100000000000000000000000000102e1100010000000000000000000000182e11000d00000000000000449c1100000000000000000000000000282e1100010000000000000000000000302e11000e00000000000000449c1100000000000000000000000000402e1100010000000000000000000000482e11000c00000000000000449c1100000000000000000000000000542e11000100000000000000000000005c2e11000500000000000000642e11000100000000000000000000006c2e110001000000000000004d656d626572416464656400752f1100390000004d656d62657252656d6f7665640000003a2f11003b0000004d656d62657273537761707065640000032f1100370000004d656d626572735265736574bd2e11004600000044756d6d79000000902e11002d000000742e11001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e727374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e0000c431110030000000132711005d0000009200000004000000763111004e000000132711005d0000009300000004000000183111005e0000005e00000001000000496e7374616e6365314d656d626572736869704d656d62657273616c72656164792061206d656d6265726e6f742061206d656d6265720000d030110048000000a20a00000e000000763011005900000064000000010000004e616d6520746f6f2073686f72744e616d6520746f6f206c6f6e675375646f4e616d654f664e6f74206e616d65642f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f6e69636b732f7372632f6c69622e7273002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72732f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f6d656d626572736869702f7372632f6c69622e727354696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b7354696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b00000000c43d11000600000000000000570000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000590000000000000000000000000000005a0000000000000000000000000000005b000000000000000000000000000000d88c110018000000000000005c0000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000ca3d110004000000000000005d000000000000000000000000000000000000000000000000000000000000005a000000000000000000000002000000000000000000000000000000000000005e0000000000000000000000000000005a000000000000000000000000000000be8c110009000000000000005f000000000000000000000000000000000000000000000000000000000000006000000000000000000000000200000000000000000000000000000000000000610000000000000000000000000000005a000000000000000000000000000000ce3d1100070000000000000062000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000630000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000d53d1100080000000000000064000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000066000000000000000000000000000000670000000000000000000000000000005a000000000000000000000000000000dd3d1100120000000000000068000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000690000000000000000000000000000005a000000000000000000000000000000a65111000a000000000000006a000000000000000000000000000000000000000000000000000000000000006b000000000000000000000002000000000000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000004656110007000000000000006c000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000006e0000000000000000000000000000006f0000000000000000000000000000005a000000000000000000000000000000ef3d1100080000000000000070000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000710000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000f73d1100070000000000000072000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000074000000000000000000000000000000750000000000000000000000000000005a000000000000000000000000000000fe3d11000f0000000200000000000000000000000000000000000000000000000000000000000000000000007600000000000000000000000200000000000000000000000000000000000000770000000000000000000000000000005a0000000000000000000000000000000d3e110007000000000000007800000000000000000000000000000000000000000000000000000000000000790000000000000000000000000000007a0000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000143e110008000000000000007b000000000000000000000000000000000000000000000000000000000000007c0000000000000000000000000000007d0000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000001c3e1100120000000200000000000000000000000000000000000000000000000000000000000000000000005a000000000000000000000002000000000000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000002e3e110009000000000000007e000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000080000000000000000000000000000000810000000000000000000000000000005a000000000000000000000000000000373e11000700000000000000820000000000000000000000000000000000000000000000000000000000000083000000000000000000000000000000840000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000003e3e11001200000000000000850000000000000000000000000000000000000000000000000000000000000083000000000000000000000000000000840000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000503e1100110000000000000086000000000000000000000000000000000000000000000000000000000000008700000000000000000000000000000088000000000000000000000000000000890000000000000000000000000000005a000000000000000000000000000000613e110013000000000000008a000000000000000000000000000000000000000000000000000000000000008b0000000000000000000000000000008c0000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000743e110008000000000000008d000000000000000000000000000000000000000000000000000000000000008e0000000000000000000000000000008f000000000000000000000000000000900000000000000000000000000000005a0000000000000000000000000000007c3e1100060000000000000091000000000000000000000000000000000000000000000000000000000000009200000000000000000000000000000093000000000000000000000000000000940000000000000000000000000000005a000000000000000000000000000000823e11000a00000000000000950000000000000000000000000000000000000000000000000000000000000096000000000000000000000002000000000000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000a78f11000c00000000000000970000000000000000000000000000000000000000000000000000000000000098000000000000000000000002000000000000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000008c3e1100050000000000000099000000000000000000000000000000000000000000000000000000000000009a0000000000000000000000000000009b0000000000000000000000000000005a0000000000000000000000000000005a000000000000000000000000000000913e110009000000000000009c000000000000000000000000000000000000000000000000000000000000009d0000000000000000000000000000009e0000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000006330110004000000000000009f00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000a10000000000000000000000000000005a0000000000000000000000000000005a0000000000000000000000000000009a3e11000500000000000000a200000000000000000000000000000000000000000000000000000000000000a3000000000000000000000000000000a4000000000000000000000000000000a50000000000000000000000000000005a000000000000000000000053797374656d42616265496e646963657342616c616e6365735472616e73616374696f6e5061796d656e744f6666656e63657353657373696f6e46696e616c697479547261636b65724772616e647061496d4f6e6c696e65417574686f72697479446973636f7665727944656d6f6372616379436f756e63696c546563686e6963616c436f6d6d6974746565456c656374696f6e7350687261676d656e546563686e6963616c4d656d626572736869705472656173757279436c61696d7350617261636861696e73536c6f74735265676973747261724e69636b730000000000483f11000e00000000000000c47d11000c00000000000000449c1100583f11000000000000000000683f1100010000000000000000000000703f11000900000000000000a67b11000300000000000000449c11007c3f110000000000000000008c3f1100010000000000000000000000943f11000900000000000000a67b11000300000000000000449c1100a03f11000000000000000000b03f110001000000000000005265736572766174696f6e466565000018000000000000000100000045000000fc3f1100110000004d696e4c656e677468000000180000000000000001000000a6000000da3f1100220000004d61784c656e677468000000180000000000000001000000a7000000b83f11002200000020546865206d6178696d756d206c656e6774682061206e616d65206d61792062652e20546865206d696e696d756d206c656e6774682061206e616d65206d61792062652e205265736572766174696f6e206665652e00000000000000c04011000800000000000000c8401100010000000000000000000000e0401100100000000000000000000000604111000a00000000000000449c11000000000000000000000000006c4111000a0000000000000000000000bc4111000900000000000000c8411100010000000000000000000000e04111000d0000000000000000000000484211000a0000000000000054421100020000000000000000000000844211000c000000000000007365745f6e616d6500000000d84311000400000000000000dc431100070000005945110057000000b045110013000000449c110000000000c345110058000000449c1100000000001b461100570000007246110010000000449c1100000000000c45110034000000449c1100000000007e6311000b0000008d701100080000008a43110021000000ab4311001a000000c54311000d0000009e6311000c000000636c6561725f6e616d650000b844110054000000449c1100000000000c45110034000000449c1100000000007e6311000b0000008d701100080000004045110019000000ab4311001a000000c54311000d0000009e6311000c0000006b696c6c5f6e616d6500000000000000d24311000600000000000000f366110023000000e343110039000000449c1100000000001c441100520000006e44110013000000449c1100000000003e4311004c000000449c1100000000007e6311000b0000008d701100080000008144110037000000ab4311001a000000c54311000d0000009e6311000c000000666f7263655f6e616d65000000000000d24311000600000000000000f36611002300000000000000d84311000400000000000000dc43110007000000e442110032000000449c1100000000001643110028000000449c1100000000003e4311004c000000449c1100000000007e6311000b0000008d701100080000008a43110021000000ab4311001a000000c54311000d0000009e6311000c0000002053657420612074686972642d7061727479206163636f756e742773206e616d652077697468206e6f206465706f7369742e204e6f206c656e67746820636865636b696e6720697320646f6e65206f6e20746865206e616d652e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e202d204174206d6f7374206f6e652062616c616e6365206f7065726174696f6e2e202d204f6e652073746f7261676520726561642f77726974652e202d204f6e65206576656e742e7461726765746e616d655665633c75383e2052656d6f766520616e206163636f756e742773206e616d6520616e642074616b6520636861726765206f6620746865206465706f7369742e204661696c73206966206077686f6020686173206e6f74206265656e206e616d65642e20546865206465706f736974206973206465616c742077697468207468726f7567682060543a3a536c61736865646020696d62616c616e63652068616e646c65722e202d204f6e6520756e62616c616e6365642068616e646c6572202870726f6261626c7920612062616c616e6365207472616e736665722920436c65617220616e206163636f756e742773206e616d6520616e642072657475726e20746865206465706f7369742e204661696c7320696620746865206163636f756e7420776173206e6f74206e616d65642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e202d204f6e652062616c616e6365206f7065726174696f6e2e2053657420616e206163636f756e742773206e616d652e20546865206e616d652073686f756c642062652061205554462d382d656e636f64656420737472696e6720627920636f6e76656e74696f6e2c2074686f75676820776520646f6e277420636865636b2069742e20546865206e616d65206d6179206e6f74206265206d6f7265207468616e2060543a3a4d61784c656e677468602062797465732c206e6f72206c657373207468616e2060543a3a4d696e4c656e677468602062797465732e20496620746865206163636f756e7420646f65736e277420616c726561647920686176652061206e616d652c207468656e206120666565206f6620605265736572766174696f6e4665656020697320726573657276656420696e20746865206163636f756e742e00000000000067301100060000000101000000000000676411000c00000000000000dc4611001700000000000000000000000000000000000000449c1100f4461100000000000000000004471100010000000000000000000000285665633c75383e2c2042616c616e63654f663c543e2900180000000000000001000000310000000c4711001c00000020546865206c6f6f6b7570207461626c6520666f72206e616d65732e00000000d84711000a00000000000000e4471100010000000000000000000000fc471100030000000000000000000000144811000d00000000000000e4471100010000000000000000000000244811000300000000000000000000003c4811000b000000000000004848110002000000000000000000000078481100030000000000000000000000904811000d00000000000000a0481100010000000000000000000000b848110004000000000000006164645f6d656d626572000000000000864a11000300000000000000676411000c0000003a4a11001f000000449c110000000000594a11002d00000072656d6f76655f6d656d626572000000e649110024000000449c1100000000000a4a110030000000737761705f6d656d6265720000000000dd4911000600000000000000676411000c00000000000000e34911000300000000000000676411000c0000007f49110030000000449c110000000000af4911002e00000072657365745f6d656d6265727300000000000000784911000700000000000000b064110011000000d8481100560000002e4911001b000000449c110000000000494911002f000000204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e6d656d626572732053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e77686f0000000000000003301100070000000000000000000000b06411001100000000000000000000000000000000000000000000000000000000000000449c1100e44a11000000000000000000f44a11000100000000000000010000001800000000000000010000002e000000fc4a110032000000205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e000000000000684b11000d00000000000000754b11000900000000000000449c1100804b11000000000000000000904b110004000000000000004d696e696d756d506572696f64543a3a4d6f6d656e740000180000000000000001000000a8000000b04b11005a0000000a4c11005a000000644c110059000000bd4c11001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00000000000000084d110003000000000000000c4d1100010000000000000000000000244d110009000000000000007365740000000000a64e11000300000000000000a94e1100120000006c4d110016000000449c110000000000824d110056000000d84d110036000000449c1100000000000e4e1100510000005f4e110011000000449c110000000000704e11003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e000000000070271100030000000000000000000000754b11000900000000000000000000000000000000000000000000000000000000000000449c11006c4f110000000000000000007c4f110001000000000000000100000000000000b38f1100090000000000000000000000e89711000400000000000000000000000000000000000000000000000000000000000000449c1100844f11000000000000000000944f11000100000000000000010000001800000000000000010000003e000000c94f1100240000001800000000000000010000002b0000009c4f11002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e0000006f5011000d000000545011001b0000000855110002000000185011003c00000080020000010000002f686f6d652f766f6c742f776f726b7370616365732f706172697479746563682f706f6c6b61646f742f72756e74696d652f7372632f6c69622e727342616420696e70757420646174612070726f766964656420746f20657865637574655f626c6f636b8450110010000000696e697469616c697a655f626c6f636b9c5011000f0000006170706c795f65787472696e73696300b450110013000000696e686572656e745f65787472696e7369637300d05011000f000000636865636b5f696e686572656e747300e85011001400000076616c69646174655f7472616e73616374696f6e045111000f0000006f6666636861696e5f776f726b6572001c5111001000000070617261636861696e5f737461747573345111000e00000070617261636861696e5f636f646500004c51110007000000696e6772657373005c5111001500000067656e65726174655f73657373696f6e5f6b6579730000007c5111000d0000006163636f756e745f6e6f6e6365000000945111000a00000071756572795f696e666f66696e616c6e756d417574686f7273686970417574686f720000140000000400000004000000a9000000aa000000ab000000496e646578200000e05111000200000075382f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e31352e322f7372632f73746f72652e727300d0511100060000004852110022000000206973206e6f7420612076616c696420706f736974696f6e20666f722074797065200000e251110055000000a201000003000000556e636c6573000000000000b05211000a00000000000000bc521100010000000000000000000000d452110001000000000000007365745f756e636c6573000000000000f55211000a00000000000000ff5211000e000000dc521100190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e000000000000007c521100060000000000000000000000185411003a00000000000000000000000000000000000000000000000000000000000000449c11005454110000000000000000006454110001000000000000000100000000000000b0511100060000000000000000000000676411000c00000000000000000000000000000000000000000000000000000000000000449c11006c54110000000000000000007c54110001000000000000000000000000000000845411000c0000000000000000000000e89711000400000000000000000000000000000000000000000000000000000000000000449c1100905411000000000000000000a05411000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e00001800000000000000010000002e000000f0541100070000001800000000000000010000002b000000d754110019000000446964536574556e636c65731800000000000000010000002b000000a85411002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c657300449c11000000000008551100020000003a20556e636c657320616c72656164792073657420696e20626c6f636b2e756e636c6520616c726561647920696e636c75646564756e636c652069732067656e65736973756e636c6520697320746f6f206869676820696e20636861696e756e636c6520706172656e74206e6f7420696e20636861696e756e636c65206e6f7420726563656e7420656e6f75676820746f20626520696e636c756465645468657265206973206f6e6c79206f6e6520666174616c206572726f723b207165640038000000080000000400000039000000496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473214e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221486561644f664e6f6d696e61746f72735374616b696e674e6f6d696e61746f7273486561644f6656616c696461746f727356616c696461746f7273426f6e6465644c65646765725374616b65727343757272656e74457261537461727456616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e457261536c617368696e675370616e735370616e536c61736800000000005457110006000000000000005c5711000200000000000000000000006c5711000200000000000000000000007c571100050000000000000084571100020000000000000000000000945711000100000000000000000000009c5711001a00000000000000b8571100010000000000000000000000c057110002000000000000005265776172640000875811000700000087581100070000008e58110054000000e258110023000000536c6173680000007e58110009000000875811000700000035581100490000004f6c64536c617368696e675265706f72744469736361726465640000295811000c000000d057110047000000175811001200000020416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e53657373696f6e496e646578204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e4163636f756e74496442616c616e636520416c6c2076616c696461746f72732068617665206265656e207265776172646564206279207468652066697273742062616c616e63653b20746865207365636f6e64206973207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e43757272656e74456c6563746564536c6f745374616b65556e6170706c696564536c6173686573506179656500000000000000f45b11000400000000000000f85b1100030000000000000000000000405c11000f0000000000000000000000b85c11000a00000000000000c45c1100010000000000000000000000dc5c11000e00000000000000000000004c5d11000600000000000000545d11000100000000000000000000006c5d1100170000000000000000000000245e11001100000000000000449c1100000000000000000000000000385e1100100000000000000000000000b85e11000800000000000000c05e1100010000000000000000000000d85e11000b0000000000000000000000305f11000800000000000000385f1100010000000000000000000000505f11000b0000000000000000000000a85f11000500000000000000449c1100000000000000000000000000b05f11000b0000000000000000000000086011000900000000000000146011000100000000000000000000002c6011000b0000000000000000000000846011000e0000000000000094601100010000000000000000000000ac6011000b00000000000000000000000461110013000000000000001861110001000000000000000000000030611100010000000000000000000000386111000d00000000000000449c110000000000000000000000000048611100050000000000000000000000706111000d00000000000000449c110000000000000000000000000080611100060000000000000000000000b06111001100000000000000c4611100010000000000000000000000dc611100010000000000000000000000e46111000d00000000000000f46111000100000000000000000000000c621100010000000000000000000000146211001400000000000000449c11000000000000000000000000002862110005000000000000000000000050621100150000000000000068621100020000000000000000000000986211000700000000000000626f6e6400000000e96611000a00000000000000f366110023000000000000004d6f11000500000000000000526f110015000000000000009967110005000000000000009e67110011000000a370110059000000fc70110021000000449c1100000000001d7111004c000000449c1100000000006971110049000000449c1100000000007e6311000b000000b2711100350000008d70110008000000e77111001a000000449c110000000000017211005b0000005c721100490000009e6311000c000000626f6e645f6578747261000000000000957011000e00000000000000526f110015000000676f110059000000c06f11000d000000449c110000000000cd6f11005400000021701100590000007a70110013000000449c1100000000000266110055000000449c1100000000007e6311000b000000576611003a0000008d70110008000000336f1100100000009e6311000c000000756e626f6e640000000000004d6f11000500000000000000526f110015000000626b110055000000b76b110040000000f76b110049000000449c110000000000406c110052000000926c110030000000449c110000000000c26c11004f000000116d11004f000000606d11003f000000449c1100000000004467110055000000449c1100000000009f6d110026000000449c1100000000007e6311000b000000c56d1100500000009166110026000000156e1100590000006e6e11005c000000ca6e110069000000336f110010000000436f11000a00000077697468647261775f756e626f6e6465640000005b6911004b000000449c110000000000a66911004d000000f369110013000000449c1100000000004467110055000000449c110000000000066a11001b000000449c1100000000007e6311000b000000216a110055000000766a110051000000c76a11003d000000046b11005e000000b7661100320000009e6311000c00000076616c6964617465000000004869110005000000000000004d6911000e0000000e6911003a000000449c110000000000cb65110037000000449c1100000000004467110055000000449c1100000000007e6311000b000000576611003a0000009166110026000000b7661100320000009e6311000c0000006e6f6d696e61746500000000df6811000700000000000000e668110028000000f667110044000000449c110000000000cb65110037000000449c1100000000004467110055000000449c1100000000007e6311000b0000003a681100490000008368110026000000a9681100360000009e6311000c0000006368696c6c000000af67110032000000449c110000000000cb65110037000000449c1100000000004467110055000000449c1100000000007e6311000b000000576611003a000000e167110015000000b7661100320000009e6311000c0000007365745f7061796565000000000000009967110005000000000000009e67110011000000166711002e000000449c110000000000cb65110037000000449c1100000000004467110055000000449c1100000000007e6311000b000000576611003a0000009166110026000000b7661100320000009e6311000c0000007365745f636f6e74726f6c6c6572000000000000e96611000a00000000000000f366110023000000a765110024000000449c110000000000cb65110037000000449c1100000000000266110055000000449c1100000000007e6311000b000000576611003a0000009166110026000000b7661100320000009e6311000c0000007365745f76616c696461746f725f636f756e7400000000009865110003000000000000009b6511000c0000007865110020000000666f7263655f6e6f5f657261730000004c6511002c000000449c1100000000007e6311000b0000003c651100100000009e6311000c000000666f7263655f6e65775f657261000000c1641100530000001465110028000000449c1100000000007e6311000b0000003c651100100000009e6311000c0000007365745f696e76756c6e657261626c657300000000000000a66411000a00000000000000b0641100110000007364110033000000666f7263655f756e7374616b6500000000000000626411000500000000000000676411000c0000001f64110043000000666f7263655f6e65775f6572615f616c77617973ca63110041000000449c1100000000007e6311000b0000000b641100140000009e6311000c00000063616e63656c5f64656665727265645f736c61736800000000000000aa6311000300000000000000ad6311000800000000000000b56311000d00000000000000c263110008000000d062110051000000216311001c0000003d63110041000000449c1100000000007e6311000b00000089631100150000009e6311000c0000002043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e2070617373696e67207468652065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e2023203c7765696768743e202d204f6e652073746f726167652077726974652e2023203c2f7765696768743e657261457261496e646578736c6173685f696e64696365735665633c7533323e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e202d204f6e652073746f7261676520777269746520466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e7374617368543a3a4163636f756e74496420536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e76616c696461746f72735665633c543a3a4163636f756e7449643e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e6e6577436f6d706163743c7533323e202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c65723c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c656420766961206077697468647261775f756e626f6e646564602e202d204f6e6520444220656e7472792e203c2f7765696768743e76616c7565436f6d706163743c42616c616e63654f663c543e3e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e202d204f2831292e6d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e00000000000000987b11000e0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100d48911000000000000000000ac7b110001000000000000000100000000000000b47b1100150000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100cc7b11000000000000000000dc7b110001000000000000000100000000000000e47b11000d0000000000000000000000b06411001100000000000000000000000000000000000000000000000000000000000000449c1100f87e11000000000000000000f47b11000300000000000000010000000000000071561100060000000101000000000000676411000c00000000000000676411000c00000000000000000000000000000000000000449c1100407c110000000000000000000c7c11000100000000000000000000000000000077561100060000000101000000000000676411000c00000000000000147c11002900000000000000000000000000000000000000449c1100407c11000000000000000000507c1100010000000000000000000000000000002c591100050000000101000000000000676411000c000000000000009e6711001100000000000000000000000000000000000000449c1100587c11000000000000000000687c110001000000000000000100000000000000675611000a0000000101010000000000676411000c000000000000004d6911000e00000000000000000000000000000000000000449c1100707c11000000000000000000807c1100010000000000000001000000000000004d5611000a0000000101010000000000676411000c00000000000000887c11001900000000000000000000000000000000000000449c1100a47c11000000000000000000b47c1100040000000000000000000000000000007d561100070000000101000000000000676411000c00000000000000d47c11002400000000000000000000000000000000000000449c1100f87c11000000000000000000087d110004000000000000000100000000000000055911000e0000000000000000000000b06411001100000000000000000000000000000000000000000000000000000000000000449c1100f87e11000000000000000000287d110001000000000000000100000000000000307d11000a0000000000000000000000ad6311000800000000000000000000000000000000000000000000000000000000000000449c1100d489110000000000000000003c7d110001000000000000000100000000000000845611000f0000000000000000000000447d11000b00000000000000000000000000000000000000000000000000000000000000449c1100507d11000000000000000000607d110001000000000000000100000000000000687d11001b0000000000000000000000295811000c00000000000000000000000000000000000000000000000000000000000000449c1100d48911000000000000000000847d1100010000000000000001000000000000008c7d1100160000000000000000000000a27d11000900000000000000000000000000000000000000000000000000000000000000449c1100ac7d11000000000000000000bc7d11000100000000000000010000000000000013591100090000000000000000000000c47d11000c00000000000000000000000000000000000000000000000000000000000000449c1100687e11000000000000000000d07d110003000000000000000100000000000000e87d1100080000000000000000000000f07d11000700000000000000000000000000000000000000000000000000000000000000449c1100f87d11000000000000000000087e110001000000000000000100000000000000107e1100130000000000000000000000237e11000700000000000000000000000000000000000000000000000000000000000000449c11002c7e110000000000000000003c7e110003000000000000000100000000000000547e1100130000000000000000000000c47d11000c00000000000000000000000000000000000000000000000000000000000000449c1100687e11000000000000000000787e1100020000000000000001000000000000001c591100100000000101000000000000ad6311000800000000000000887e11002f00000000000000000000000000000000000000449c1100b87e11000000000000000000c87e110001000000000000000100000000000000d07e11000a0000000000000000000000da7e11001d00000000000000000000000000000000000000000000000000000000000000449c1100f87e11000000000000000000087f11000100000000000000010000000000000093561100130000000201020000000000ad6311000800000000000000676411000c00000000000000107f11001700000000000000449c1100287f11000000000000000000387f110002000000000000000000000000000000a6561100130000000201020000000000ad6311000800000000000000676411000c00000000000000c47d11000c00000000000000449c1100487f11000000000000000000587f110001000000000000000000000000000000b95611000d0000000101000000000000676411000c00000000000000607f11001700000000000000000000000000000000000000449c1100787f11000000000000000000887f110001000000000000000000000000000000c6561100090000000101000000000000907f11002300000000000000b37f11002200000000000000000000000000000000000000449c1100d87f11000000000000000000e87f110002000000000000000100000000000000f87f1100160000000000000000000000ad6311000800000000000000000000000000000000000000000000000000000000000000449c11001080110000000000000000002080110001000000000000000000000000000000288011000e0000000000000000000000a67b11000300000000000000000000000000000000000000000000000000000000000000449c1100d489110000000000000000003880110001000000000000000100000056616c696461746f72436f756e74753332000000ff8811002a0000004d696e696d756d56616c696461746f72436f756e74000000180000000000000001000000ac000000af88110050000000496e76756c6e657261626c6573000000db871100560000003188110053000000848811002b0000009b871100400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e0000001800000000000000010000002b0000004a871100510000001800000000000000010000002b0000001187110039000000180000000000000001000000ad000000c0861100510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e0000001800000000000000010000002b000000e485110059000000449c1100000000003d8611004d0000008a861100360000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e180000000000000001000000ae00000027851100530000007a85110046000000449c110000000000c085110024000000e88411003f00000043757272656e744572610000d1841100170000004d6f6d656e744f663c543e001800000000000000010000003e000000b38411001e00000043757272656e74457261537461727453657373696f6e496e646578007f8411003400000043757272656e74457261506f696e74734561726e6564457261506f696e747300180000000000000001000000af0000003c8411004300000042616c616e63654f663c543ec08311004c000000449c1100000000000c84110030000000466f726365457261466f7263696e67001800000000000000010000002b0000007983110047000000536c6173685265776172644672616374696f6e50657262696c6c0000180000000000000001000000b0000000028311003e000000449c110000000000408311003900000043616e63656c6564536c6173685061796f757400180000000000000001000000470000008282110045000000c78211003b0000005665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e001800000000000000010000002e0000005182110031000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e001800000000000000010000002e00000008821100490000002850657262696c6c2c2042616c616e63654f663c543e29001800000000000000010000002b0000009b81110051000000ec8111001c0000001800000000000000010000002b0000004381110058000000736c617368696e673a3a536c617368696e675370616e73001800000000000000010000002b000000208111002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e000000180000000000000001000000b1000000a38011004f000000f28011002e0000004561726c69657374556e6170706c696564536c61736800001800000000000000010000002b000000648011003f00000053746f7261676556657273696f6e00004080110024000000205468652076657273696f6e206f662073746f7261676520666f7220757067726164652e20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e20416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e2054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e2054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e205265776172647320666f72207468652063757272656e74206572612e205573696e6720696e6469636573206f662063757272656e7420656c6563746564207365742e205468652073657373696f6e20696e646578206174207768696368207468652063757272656e742065726120737461727465642e20546865207374617274206f66207468652063757272656e74206572612e205468652063757272656e742065726120696e6465782e205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e27742069746572617465207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e2054686973206973206b6579656420627920746865207374617368206163636f756e742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e204e4f54453a206973207072697661746520736f20746861742077652063616e20656e73757265207570677261646564206265666f726520616c6c207479706963616c2061636365737365732e204469726563742073746f7261676520415049732063616e207374696c6c2062797061737320746869732070726f74656374696f6e2e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e000000000000009c8911000e00000000000000295811000c00000000000000449c1100ac8911000000000000000000bc891100010000000000000000000000c48911000f00000000000000ad6311000800000000000000449c1100d48911000000000000000000e4891100010000000000000053657373696f6e735065724572610000180000000000000001000000b2000000258a11001c000000426f6e64696e674475726174696f6e0018000000000000000100000030000000ec89110039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e000000408b11005b0000001203000001000000636f6e74726f6c6c657220616c72656164792070616972656463616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e6365737461736820616c726561647920626f6e6465646e6f7420612073746173686e6f74206120636f6e74726f6c6c657263616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b73746172676574732063616e6e6f7420626520656d7074796475706c696361746520696e646578736c617368207265636f726420696e646578206f7574206f6620626f756e6473626164206f726967696e2f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f7374616b696e672f7372632f6c69622e727371202f2028712f246d617829203c202832202a20246d6178292e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b2071656400208c110019000000408c11006d0000006f00000012000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f7072696d6974697665732f73722d61726974686d657469632f7372632f7065725f7468696e67732e72734661696c656420746f20636f6e7665727454696d657374616d70557064617465526563656e7448696e747352616e646f6d6e657373436f6c6c656374697665466c697052616e646f6d4d6174657269616c0000188d110031000000498d110064000000470000000400000046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b2f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f66696e616c6974792d747261636b65722f7372632f6c69622e7273000000c88d110023000000498d110064000000480000000400000046696e616c697a6564206865696768742061626f766520626c6f636b206e756d62657200380000000800000004000000540000000c8e110018000000248e110009000000426974536c6963652063616e6e6f7420616464726573732020656c656d656e7473000000408e11005500000029010000030000002f686f6d652f766f6c742f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e31352e322f7372632f736c6963652e7273000000a88e110014000000bc8e110004000000496e646578206f7574206f662072616e67653a20203e3d20408e110055000000bc02000003000000d88e11002a000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a2000000c8f1100230000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e00408f1100670000002b000000010000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f617574686f726974792d646973636f766572792f7372632f6c69622e72734174746573746174696f6e734469645570646174654d6f7265206174746573746174696f6e732063616e206265206164646564206f6e6c79206f6e636520696e206120626c6f636b2e4f72646572656448696e74734d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b20716564726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b20716564000014000000040000000400000012000000d890110043000000498d110064000000800000000400000090901100480000009c0a00000a0000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72737072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b2071656400999211001c0000004c9111005d000000b70000000300000075921100240000004c9111005d000000c0000000030000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f6672616d652f6578656375746976652f7372632f6c69622e727300000043921100320000004c9111005d0000001b010000030000001c921100270000004c9111005d0000002301000004000000f4911100280000004c9111005d000000290100000300000053746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e506172656e7420686173682073686f756c642062652076616c69642e00000000000000e49211000a00000000000000f092110001000000000000000000000008931100020000000000000066696e616c5f68696e740000000000007093110004000000000000007493110017000000189311003d000000559311001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e0000000000fc9311000a00000000000000069411000e00000000000000449c1100149411000000000000000000249411000100000000000000000000002c9411000d00000000000000069411000e00000000000000449c11003c94110000000000000000004c941100010000000000000057696e646f7753697a65543a3a426c6f636b4e756d626572180000000000000001000000b30000009b941100460000005265706f72744c6174656e6379000000180000000000000001000000420000005494110047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e00000000000000f08c11000e00000000000000000000003c9511000c00000000000000000000000000000000000000000000000000000000000000449c1100489511000000000000000000589511000300000000000000010000005665633c543a3a486173683e1800000000000000010000002e0000007095110058000000c895110058000000209611001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e000000408e110055000000de0b0000030000009090110048000000a20a00000e000000526563656e7450617261426c6f636b7350617261426c6f636b4174746573746174696f6e730000000000000054961100100000000101000000000000069411000e00000000000000849711001100000000000000000000000000000000000000449c1100989711000000000000000000a89711000200000000000000000000000000000064961100150000000201000000000000069411000e00000000000000b89711000400000000000000bc9711001400000000000000449c1100d09711000000000000000000e097110001000000000000000000000000000000b38f1100090000000000000000000000e89711000400000000000000000000000000000000000000000000000000000000000000449c1100ec9711000000000000000000449c1100000000000000000001000000496e636c75646564426c6f636b733c543e0000001800000000000000010000002b000000269811003c000000629811003300000048617368426c6f636b4174746573746174696f6e733c543e1800000000000000010000002b000000fc9711002a000000626f6f6c1800000000000000010000002b000000204174746573746174696f6e73206f6e206120726563656e742070617261636861696e20626c6f636b2e2041206d617070696e672066726f6d206d6f64756c617220626c6f636b206e756d62657220286e2025204174746573746174696f6e506572696f642920746f2073657373696f6e20696e64657820616e6420746865206c697374206f662063616e646964617465206861736865732e00000000000000c49811001100000000000000d8981100010000000000000000000000f098110001000000000000006d6f72655f6174746573746174696f6e73000000000000003d99110005000000000000004299110010000000f8981100450000002050726f766964652063616e64696461746520726563656970747320666f722070617261636861696e732c20696e20617363656e64696e67206f726465722062792069642e5f6d6f72654d6f72654174746573746174696f6e73000070991100480000009c0a00000a0000000000000000000000000000002f72757374632f313732316339363835623165653639663165313762336138623039313435623130666466626534612f7372632f6c6962636f72652f736c6963652f6d6f642e72737099110048000000a20a00000e000000e099110019000000009a11006a000000440000000a000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f7072696d6974697665732f73722d61726974686d657469632f7372632f62696775696e742e727363616e6e6f74206669742061206e756d62657220696e746f2075313238616c7265616479206d757461626c7920626f72726f77656400180000000000000001000000b4000000616c726561647920626f72726f776564180000000000000001000000b500000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b207165640038000000080000000400000054000000726573756c742063616e6e6f742066697420696e2075313238000000449b11002d000000719b11000c0000007d9b110003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20889b11003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e67746873cc9b11001800000059080000090000007372632f6c6962636f72652f736c6963652f6d6f642e727318000000000000000100000019000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b20716564000018000000000000000100000019000000449c11000000000072756e74696d650052756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e670000809c110019000000a09c11006e0000005800000022000000617474656d707420746f20646976696465206279207a65726f000000000000002f686f6d652f766f6c742f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f643966636137652f7072696d6974697665732f73722d7072696d6974697665732f7372632f67656e657269632f6572612e727348617368206e6f7420657175616c496e76616c6964206f726967696e43616e206e6f74206c6f6f6b757044697370617463684572726f725472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f7262616265736c6f74436f756c64206e6f74206465636f64652072657175657374656420696e686572656e742074797065214241424520696e686572656e742064617461206e6f7420666f756e643c7761736d3a73747269707065643e0041e8bec6000b0800000000000000000041f0bec6000b08709f110090181000008aff02046e616d650181ff02e50400196578745f6c6f6767696e675f6c6f675f76657273696f6e5f3101206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3102196578745f73746f726167655f7365745f76657273696f6e5f31031e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f3104196578745f73746f726167655f6765745f76657273696f6e5f31051b6578745f73746f726167655f636c6561725f76657273696f6e5f31061a6578745f73746f726167655f726f6f745f76657273696f6e5f3107226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31081d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3109236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f310a226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f310b206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f310c1d6578745f68617368696e675f74776f785f36345f76657273696f6e5f310d236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f310e1c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f310f1c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f3110236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f3111286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f3112346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3113286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f3114256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3115206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31162a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31171a6578745f73746f726167655f726561645f76657273696f6e5f3118296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f3119246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f311a1e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f311b1c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f311c286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f311d216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f311e2c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f311f376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f3120256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31210c5f5f727573745f616c6c6f63220a5f5f72675f616c6c6f63230e5f5f727573745f6465616c6c6f63240c5f5f72675f6465616c6c6f63250e5f5f727573745f7265616c6c6f63260c5f5f72675f7265616c6c6f6327135f5f727573745f616c6c6f635f7a65726f656428115f5f72675f616c6c6f635f7a65726f65642909686173685f746573742a34616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68356233306265363662343435353034382b29636f72653a3a70616e69636b696e673a3a70616e69633a3a68323063313464323066633562643735392c25616c6c6f633a3a666d743a3a666f726d61743a3a68323831393632633865383762323437642d36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68616235343331366165643263313732662e23636f72653a3a666d743a3a77726974653a3a68396230643164626332363937633836392f48616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303032626638303561376238393139373008727573745f6f6f6d312e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a68356434303837616430646137363763653230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6831356333303661383239333633316437333a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6830663064323735666631376134343330343b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6832613832613334626139363963333332353a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68326638353766623233303363633838313634636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a6863376135643936316432663964303734374e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6863386666343861623735643264653361382d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6864646265316133303038306530306238392f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68626239333338383365613738393463623a11727573745f626567696e5f756e77696e643b313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68383833323064313536313161356639623c35636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68666161613666646133623938323461653d43636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68306262373635663830326331656166633e36636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68303462666530613564353537313264383f2c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6837333936386132343239306363343736402e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a683561353061613735386539323134323641323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830613866613161646266393336323933424a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683733656565373531373561303937306143323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838653032373461303430356432623664443d636f72653a3a756e69636f64653a3a626f6f6c5f747269653a3a426f6f6c547269653a3a6c6f6f6b75703a3a68343933346537373839666462616663394549636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68313937306334616565326135393234344634636f72653a3a666d743a3a417267756d656e7456313a3a73686f775f7573697a653a3a683839303832356232353731376561333647453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686135383738383335396463393431333148483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686663393736636137363865373336653349323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68626236666532383064653133383030614a2e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a68306464366561376562346534636134314b303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68316439353632393731326265616561394c2e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a68656166623931643661653061356431614d8001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68303238663933386333626434366139304e4d636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f722075383e3a3a666d743a3a68666266386165356233313032636537664f30636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a683032633035656539393633393062666450533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6864393661323463646635666665646462512f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a6831663336303037613334396331653532522e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a6866653239613738646439376265386334533a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6863626538666233323531333634626365543b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6839306530656362623334303434643465553a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68653233326239353739646430313736325637636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a683538346335386563663433353464313257443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683530623364376162653532633531383258313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834353039316439343663623062363337594a636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a557070657248657820666f72206933323e3a3a666d743a3a68326635306430643539646365373730395a3e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68393134323438356435303939613561645b693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68623738336331663064393763333535665c6c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68313261663538306634353835373264385d483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68363431636664663232393863363936385e693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68383161373938386163366633346363335f4d3c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a683632616539366461336438663630326560493c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a683761346666626135316439353365396261323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830643964396466316365613861363937623a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6863666361373562303439613238356130633b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6831383865313638636166383862646137643a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a686434386536363733393539386139666265383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a686138383639323036626636366439616366343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a683162643862633638613731393763303967363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a6866656365656266343364313635626161683a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a683535356131396632626264323066376369497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a68316465313665636364323536336461376a49706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a43616e646964617465526563656970743a3a686173683a3a68386262353262653939663139366233366b437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68353735646661343130366365313633326c30636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68386639636236313234373134613964356d543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68633864643835323366336661613731646e6b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613535393365393532376234376130666f7d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a686434653136336139363736313338666270437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a686238323633373630386435353034343771463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864323266356338616131656232346563724a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6832393738666530636364386362373338734a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836616236623433346437313262613435742d616c6c6f633a3a7665633a3a5665633c543e3a3a72657461696e3a3a6830633630396366653965656265396162752d616c6c6f633a3a7665633a3a5665633c543e3a3a72657461696e3a3a6831623565306664333631393764656338762d616c6c6f633a3a7665633a3a5665633c543e3a3a72657461696e3a3a686138643137646139383061323865373177403c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683137363661353762666132313764656378443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683534366333383061333664626666653379443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68363530646432306438643731613666647a463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68656535356135333065386630326365387b543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68323234613834363834396136326631347c543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68323966636330643836613939303336627d543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68356130363337303062613038336535357e543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68386533326239353931373032656365387f543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68616530326537353564343564653833348001543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a686534373936363137633633656439373981015d3c6269747665633a3a736c6963653a3a497465723c432c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68643338376262373565643135343363388201383c2a636f6e7374205420617320636f72653a3a666d743a3a506f696e7465723e3a3a666d743a3a68316363336237626530383139623430638301356269747665633a3a7665633a3a4269745665633c432c543e3a3a63617061636974793a3a68663738623033666438376664333866618401543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68626637663133613837356237323839628501513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68316263303232303837373562363463658601513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68343634623565306434316230343335338701513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68393439303336343565333134363562638801753c73725f7072696d6974697665733a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68323262643535643532343231333339308901366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a68613934316666333732623265616331658a01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333462663538386331633061363831668b01376672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a68666635653932363739346338613465628c01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333534613961363265323539656165328d01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68393466353934656363346530656333668e01416672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a68633333323564363337653866333237378f01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683162663265616537613834303336396590018a013c7375627374726174655f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e206173207375627374726174655f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a68303231356265633133313737353061379101463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68663031303038666133353934633665629201703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833346332646533613437663836646139930130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68333166613133333531656234343461659401303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683636333537653336383335646239313195013a6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686434306163376139386563386166616496013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68636338306631366539613962363264629701683c6672616d655f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68353036653539396634666139366266629801703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e73696373526f6f743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68363135346562643734373034613936399901703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e736963436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68316164313563373132343037306435339a014b6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a68306235656130333231396231656632349b01346672616d655f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a68346330383737323262343465356366379c0185013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68333431303163663439323534636438359d01696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a68333461663135346131306633626638649e01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68396631303565353830656665336333619f01303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838646365646131343438323233333538a00185013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6833383561326232626366316461623762a101696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6834353036393632306535383638396333a201386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865313839623063343263323137393666a30185013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6862306635373765396365633633303039a401696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6833326663653563336465313663616539a501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837313233303363613330363832626337a60185013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e756d657261746f723c4b2c562c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6863613563373839643232323464363038a701696672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f6b65793a3a6838366135616437356539656333326638a801386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865383233636634373763333336343337a901b8016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4c696e6b6167653c4b65793e3e3a3a656e636f64655f746f3a3a6861613135613765343230316261363833aa01cc016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a456e636f64654c696b654c696e6b6167653c504b65792c4e4b65792c4b65793e3e3a3a656e636f64655f746f3a3a6835396231323061666435663464623564ab01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6837633134663363313262633564386134ac01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832363734646632356635623665316632ad014773725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3a3a7072655f64697370617463683a3a6830313832373661623965393531643030ae01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832643635386663303736303232663430af016f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6837313436623762373930393038343666b001723c73725f7072696d6974697665733a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6838316238363763316530626639333634b1019e01706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a43616e646964617465526563656970743e3a3a656e636f64655f746f3a3a6839653465353938623961376664336139b20177706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6862383438376135393635623236653532b3015d3c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861306331356365323063646263643162b401613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6834326331323333663035616465363238b501723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836373031383039363364356531633437b601723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865306362383739383739613439636666b7013d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6861643961656537616531623031663762b8014373725f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6838356639353632393363333532623631b90147636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6838393861383166336230616565633136ba016e3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6838326164303030303536313830666637bb01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837343132626131646533666436343536bc01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837636665663966313564336561393766bd0196013c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732070616c6c65745f73657373696f6e3a3a4f6e6553657373696f6e48616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6265666f72655f73657373696f6e5f656e64696e673a3a6832306639393261346465306630613934be013570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7374616b6572733a3a6862653338663830653035323362643165bf014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6866396531313337333064333436613465c001386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831613061353364646437396565663566c101706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6830366264333931626265346530666139c2014b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6861613436353065353631383339613261c301723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866633065616261356335346365363130c40168636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6861363536653831336664373738356235c501437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832363335636433636136646466383936c601ff013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073725f7374616b696e675f7072696d6974697665733a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a54726169743e3a3a56616c696461746f7249642c203c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a54726169743e3a3a46756c6c4964656e74696669636174696f6e293e3e3a3a6f6e5f6f6666656e63653a3a6865383362383663633635643936663361c7013e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863303932613839336366313861626234c8013f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6839383536663630623538613433663337c9014070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865356536623736336532383463323731ca013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6861383636353561666666613632323262cb0176706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6865343336373637656334356261623635cc013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6832353237636464373564363162306337cd013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6837313266666665613837393535663833ce0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6838616239396162313931393632356164cf0148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6832653639303139636564396334616435d00130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6864396134393833376463303936393536d1014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6831316165333839326361646530666434d2014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6863333031623936653036343964323933d3015c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6838316264353335653565623331323965d401613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6865643365393131396164303936653830d5013f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a6831393062386137383132343538373230d601386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862613432343561373534613262313832d7014170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a6864363530643337623362653430666437d8013d70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a6837353933303839306638653765626633d90173706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6833656335353862633636626262303137da0130636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6861333832623266326564343162366335db0134636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68613338326232663265643431623663352e383635dc013a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6465706f7369745f6f663a3a6862353864303033633266333938306366dd01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862336461396364303565626263333935de0190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a756e726573657276653a3a6834396331393237383461323734313037df013a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f746572735f666f723a3a6836396338653537383563326537383562e0013770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a766f74655f6f663a3a6836666564316130643963643836363662e1013f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a64656c6567617465645f766f7465733a3a6864646131333861396564383433343231e2016e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6866333361316437643062363261326663e3018a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a746f74616c5f62616c616e63653a3a6832633866653562306435663266643932e4014070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a636c6561725f7265666572656e64756d3a3a6832646563303865326163373732353035e5013f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265666572656e64756d5f696e666f3a3a6839383030306532663330306161366331e6013e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863323138646464343831336135343433e7014070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831316632363735626534663339663662e801723c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563744e65787445787465726e616c3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862656332333135373163663030666331e901713c70616c6c65745f64656d6f63726163793a3a5f5f4765744279746553747275637444656c65676174696f6e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830613735663635666432363030396239ea01713c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563745075626c696350726f70733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863396634313065333464643333326236eb014970616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833636139636230366238643431653561ec019a013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861303434353763616636613030633336ed01a3013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456d657267656e6379566f74696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830616365373234393631336436383037ee019c013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833383636636565633630626530303436ef019d013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e6163746d656e74506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833376261313436356634323964303239f0015f3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6832376166396436623063346535366163f1018e013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726573657276653a3a6836626432666332393931643066653938f2013770616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f766f74653a3a6864323934316138366665663837343363f301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834353130306164373862323661643966f401386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838343666396133643162653531386634f5014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830303738363961346637666438313336f601776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6833393531383365383966346338626539f7018d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a6837353333623262306334616135613335f80190013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a657874656e645f6c6f636b3a3a6861386362633833623838323364303332f90168636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6862333866616238313137343266623065fa012b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6838333837343434383534393465616532fb0142706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a6c6f63616c697a65645f7061796c6f61643a3a6835656663356266316335306435356564fc01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6832336361396335313065343061366339fd0151706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c63756c6174655f647574795f726f737465723a3a6866323033373061643435393266356536fe01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834663232323231343364323135333264ff0190013c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a683533616639303539393039316264343180024a706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a4d6f64756c653c543e3a3a70617261636861696e5f686561643a3a683365653561316131323233616137346181024c706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866313636333231326563306630313339820288013c706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a5f5f4765744279746553747275637452656c61794469737061746368517565756553697a653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68396163303664656364376365386637628302763c706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a5f5f47657442797465537472756374436f64653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683931336330633637656264376263343784023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834343263613864356230323031313937850245706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a4d6f64756c653c543e3a3a7365745f68656164733a3a68373866653334633162646430633561648602386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686530613938663634636432396432383487024b73725f7072696d6974697665733a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6838643032653336393838663230326436880285013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a77697468647261773a3a68356132616238656661653863616435338902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68376131306538393334366565356532618a024b706f6c6b61646f745f72756e74696d653a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a6e6f74655f696e636c756465643a3a68383230396330333835353738653939388b02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68313432633464623838616636373736338c02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68313233306136373035323634666631378d025c3c706f6c6b61646f745f72756e74696d653a3a43616c6c2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68313330623338613565356237396465638e024a706f6c6b61646f745f72756e74696d653a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68366537356561343461323233623933338f0230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a68303261306438316533363762323331359002723c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a68346232373936613034363162373466369102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834623562613035373762333538323938920234636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e3a3a616e645f7468656e3a3a683536666636613230313866623364636293024b73725f7072696d6974697665733a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6862346562383831323936396539633336940289013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a667265655f62616c616e63653a3a68666439393364316630326534656562319502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683762623336323737306161663166323996023870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a70726f706f73616c733a3a683461303830393064386362653538633597028d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f6372656174696e673a3a68323432303336666261323836393431649802723c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a683465653230376638346662653932363299023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68636239636663616139643335323766329a023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68316332303762333164646566326236629b02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68346237393439396231323763633461649c02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68396533383638383766316561363066669d02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68306132653738333830303862353863379e025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68623033343336373765376133336166309f02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837663932366434643231303066643231a0023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6835386635643265303333643935316431a1023970616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835306461653162343632613831366164a2023b70616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835353637653934393537323163336266a302783c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a5f5f47657442797465537472756374446562746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864653131623834366535383931313666a40292017375627374726174655f7072696d6974697665733a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72207375627374726174655f7072696d6974697665733a3a63727970746f3a3a4163636f756e74496433323e3a3a656e636f64653a3a6836383861383133323362316231303336a5027f3c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4c696d697450617261746872656164436f6d6d6974733c543e2061732073725f7072696d6974697665733a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6833313138646364636533376539383233a602386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839623865313363366562346563643030a7023c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835343231323139653938646265366231a8023e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837356165333838326663373736306265a902703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831313230653565303337613233623033aa02693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837613534333431666261363664343966ab02776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6863393434346562333461646133343834ac023d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6864393734373734326439636130326361ad0230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6830643762346131323662383133373864ae02683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6834623836303634636232383230383763af02633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838363030383839393538386666643635b0023e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6830396166316261313562633038666236b10230636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6861333832623266326564343162366335b2029b013c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656769737465725f706172613a3a6834633639363762326134396434333139b3029d013c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a646572656769737465725f706172613a3a6839316338356166336236623166626564b40246706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a737761705f6f7264657265645f6578697374656e63653a3a6838373832653766616435616463633531b5024b706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861633237663963333461303038316131b6027b3c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a5f5f476574427974655374727563744e6578744672656549643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836663837333230326431373561303664b7026a3c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6862626337623035336361373762383530b802776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6578697374733a3a6831316133613339306536373337636231b9026c3c706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830316363626630386537633838393232ba0249706f6c6b61646f745f72756e74696d653a3a7265676973747261723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830643866653531313134313235663362bb026b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836333563653066306539386664303132bc023670616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a656e756d5f7365743a3a6837333431366434623236666263653239bd026f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6837316331383932343230626331303564be02483c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839346630323431346332383465313633bf024470616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f70687261676d656e3a3a6839353963393832353263336436316332c002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861336632613964656435666132376139c1026e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6866656364663961333736626430343233c2024870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6c6f636b65645f7374616b655f6f663a3a6837363562643263623837353632323834c3024673725f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a6865386435633263323766333462376566c402533c73725f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6836616633383563613266356162636235c502583c73725f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6835636362326465633666623437346539c6024d6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a636f6d707574655f6d656d626572735f646966663a3a6837656534643864383762656437616338c70299013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6839313034633061666431303638353534c80295013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736c6173685f72657365727665643a3a6865333263323136346533376561343038c902456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6830666436653964646439356566326461ca024570616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f72657365727665645f62616c616e63653a3a6835663334303235636538336461396335cb02456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6865613362313632363835303431313236cc02763c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6863656361626565363535303963343031cd023870616c6c65745f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6835313564336632356335303634323162ce027a706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6837383532373233386335353163623237cf023970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f73657373696f6e3a3a6836363830326337396263663566356537d002706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6836353436363562613535666563346266d102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832623437323463303665393137353435d20287013c70616c6c65745f626162653a3a4d6f64756c653c543e2061732070616c6c65745f73657373696f6e3a3a4f6e6553657373696f6e48616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6833363963653265656637663030653461d302386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838613331613035313165346462613537d4023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6839333765623564623535623536316236d5023770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6839313839326231373932623433666262d6023b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6836393430363732383338393033346238d7024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830633531626665343634633365326233d8027a3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838383239336536366263663063656532d9027d3c70616c6c65745f696e64696365733a3a616464726573733a3a416464726573733c4163636f756e7449642c4163636f756e74496e6465783e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6831313864636462356635366235306532da02446672616d655f737570706f72743a3a7472616974733a3a43757272656e63793a3a7265736f6c76655f6372656174696e673a3a6838346463303563376230306338636663db0283013c70616c6c65745f696e64696365733a3a4d6f64756c653c543e206173206672616d655f73797374656d3a3a4f6e4e65774163636f756e743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6f6e5f6e65775f6163636f756e743a3a6866316164336437326331666335653363dc024170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7365745f667265655f62616c616e63653a3a6835633661633030666562633362373935dd023870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a6830633764643730643561633765656234de0290013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a656e737572655f63616e5f77697468647261773a3a6836633732653265383962373537306265df023670616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6c6f636b733a3a6836353833666239383033303762333734e002776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6830323165663030383161326637306431e102a00173725f7072696d6974697665733a3a67656e657269633a3a626c6f636b3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073725f7072696d6974697665733a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c4865616465722c45787472696e7369633e3e3a3a6465636f64653a3a6861393030386330383265643534313638e2029f013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863343037303664373365373665633632e30292013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6465706f7369745f696e746f5f6578697374696e673a3a6830656137666532323235346436363334e4023c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833386133366534326161373761373864e5023e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839653561383531656236363332323331e602703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833343033353037306338306637653537e7024770616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6835313966346130633132333238636463e8029c013c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a44454455505f4b45595f50524546495844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866333639376262313764326666663432e9023570616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a64697361626c653a3a6864306566313534303337316265633262ea023c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6465706f7369745f636f6e73656e7375733a3a6862303330316235653165373838376437eb026c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864306361633939366162326234636435ec023f70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6838356536323365393562646338643434ed024170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6837343232303766356661373838323434ee024a70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6866343231383936616133333439306132ef029c013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4372656174696f6e46656544656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863386462663164313339346339383666f0023f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837626634323930326533356563353634f102773c70616c6c65745f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839306433306461666163643764643763f202a5013c73725f7072696d6974697665733a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073725f7072696d6974697665733a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6835656333383864613036623436663438f3025b3c73725f7072696d6974697665733a3a4d756c74695369676e61747572652061732073725f7072696d6974697665733a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6862343164333031613232636236343261f4024770616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864626634666530386534393538656339f5024970616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6864303432633337666562626335363134f6025270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863613533383361663434376235626639f702a3013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5465726d4475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861326538353731643235623566383863f802a7013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465736972656452756e6e657273557044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834353264393965386536323165323939f902a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446573697265644d656d6265727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861646161623033343334343836343536fa02a1013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e67426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865363065363861323036393531396531fb02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834613335383638383730363335376634fc02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838306132386662623738396334626365fd02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862346164353366363037623835653233fe02860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6838396537613966306338333563636665ff02706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a683062663430376633346566336337653180035e3c70616c6c65745f6f6666656e6365733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6839323534346466363265373233323131810385013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a68396238373961636165626636316561348203683c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683339323564636266653335306666343683034170616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f766f7465723a3a683436663166626365336236646637636184034870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f72656d6f76655f766f7465723a3a686434353766313762646332346261626685035270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a72656d6f76655f616e645f7265706c6163655f6d656d6265723a3a686636306566333436326130626233623486035770616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e3a3a636f6d707574655f6665653a3a68613630663534633331363733373763388703743c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a4e65676174697665496d62616c616e63653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a54727944726f703e3a3a7472795f64726f703a3a686365373632653961333161343166313488033d70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683233366134666530323262653531633589033f70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68373131393233643937353839383365348a034870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68653135313837386539356337323030308b0391013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68376164636239346330343162363133348c03880173725f61726974686d657469633a3a7065725f7468696e67733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3e3a3a656e636f64653a3a68373265336135643030373833646665628d0398013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68663739303262323434633265633038358e0399013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643937623262623439373636393566668f03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683131336239636134376230643235613590034a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683330336365326132336562303732306191035370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68333364333066396165653038663532649203aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686130653838303839633932323031306193032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6833316237386536666135393663633966940334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a686232343737386433333737313165643795032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a686639393031663136393238623533663796033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a686264373336356236666365356566343897032d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6866376435636530626533616338396432980334636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a683163316562383165313462373438346199032e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a68303563356337336435666138323534619a033c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a68313966376234363330323964313864389b03b5017375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72207375627374726174655f636f6e73656e7375735f626162655f7072696d6974697665733a3a6469676573743a3a526177426162655072654469676573743e3a3a6465636f64653a3a68666635633361396436363937366337359c033670616c6c65745f626162653a3a4d6f64756c653c543e3a3a617574686f7269746965733a3a68353962323934626133346265343031319d03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68653166653835386665646631383738349e034b3c5b543b205f5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68396363316266623438373363393537619f033b70616c6c65745f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839656463613961333936366537313435a0036b3c70616c6c65745f626162653a3a5f5f4765744279746553747275637452616e646f6d6e6573733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830613036616132373333613433396332a1034470616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6866626231363337306239343364656337a2039a013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837633133386363646165313663393732a30396013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863626532623665343961663834656638a403776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6834366530613532393863656334306439a503426672616d655f737570706f72743a3a7472616974733a3a496d62616c616e63653a3a6d617962655f73756273756d653a3a6830633934326266343562623834663263a603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830313965623739363035653233313735a703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830316162613161663761666437643333a803386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830623064626634643163663239306561a903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831653363306332356266363963346665aa03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834343566343339366539666230333931ab03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834353532343830646131353237303836ac03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837353530363033633833313461373766ad03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839653937633935336265363732386263ae03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861386638303565353931313565393134af03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862396539633666356535663831323033b003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864303131336134303961333439393865b103437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830303765356134666232653338393263b203396672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a74616b653a3a6865383432653861613836663738313334b303763c706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e2061732073725f7072696d6974697665733a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6832333931386334666432313264363161b4034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836373965356262666262363733663532b50343706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e3a3a6574685f7265636f7665723a3a6834363231326261626638346239343837b6039501706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a457468657265756d416464726573733e3a3a7573696e675f656e636f6465643a3a6838613665396631396634613730363639b7035573725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665723a3a6866356663306261396539363432353562b8034173725f7072696d6974697665733a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6833626261633531323935343463343132b9033e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833316635323065653666663535623836ba033f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6834366537393962613161346163373739bb034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6831636261376139633239623630353163bc034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6865346430613366343738313537633862bd036073725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6833323339376331383139353333363133be035a3c70616c6c65745f626162653a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6834343362613063323231313634663536bf035d3c70616c6c65745f696e64696365733a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6865616339316664653034643962303232c0039101706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a457468657265756d416464726573733e3a3a656e636f64655f746f3a3a6832613965643565363365653866376630c10348706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6864323366633166313838333463323036c203733c706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a5f5f47657442797465537472756374546f74616c3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834613465353838343965346238663631c30346706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839386563373762396631646332653564c40351706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833656161623364376232653136313835c5039c013c706f6c6b61646f745f72756e74696d653a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726566697844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830616333393831326236393263626566c603763c285475706c65456c656d656e74302c205475706c65456c656d656e7431292061732073725f7072696d6974697665733a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6834343532633562333330613664653962c7035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865643033636332616666363164323834c80343706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a4d6f64756c653c543e3a3a6465706f7369745f68656c643a3a6831663766316566633766636339656539c903776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6861613631653036626161343739666536ca0368636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6830303831333266643465633063393335cb0380017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c205230293e3a3a656e636f64655f746f3a3a6830626534613633393632363763613236cc034b6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6831343664336537306536313334313363cd0399013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6837363331316132346532323164306637ce034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6861343665336635343361653939313931cf034170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6832396535323565623362663539356637d0034370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6833376438613837653238373930383731d1034370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6839363333646338663734613563376563d2037a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6832313236313663363164336535613130d3037d70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a656e636f64655f746f3a3a6835353230333864623863316137343536d4038e0170616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a5261774576656e743c486173682c4163636f756e7449642c493e3e3a3a656e636f64655f746f3a3a6839653237623133653737646462313938d503623c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6833386165303336356361633964383834d603623c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6839396139333663636135343630393632d70347706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863353337303030323963323531656366d803773c706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a5f5f476574427974655374727563744f6e626f617264696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866373431373464383830356263323338d903743c706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a5f5f4765744279746553747275637457696e6e696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865643534373330316432613763393865da03783c706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a5f5f4765744279746553747275637441756374696f6e496e666f3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862356663643066333162663266616436db0341706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a4d6f64756c653c543e3a3a68616e646c655f6269643a3a6830366663323439386634643664623261dc0345706f6c6b61646f745f72756e74696d653a3a736c6f74733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837393136623439626164633435616235dd0330636f72653a3a7074723a3a7265616c5f64726f705f696e5f706c6163653a3a6861393134313132323634623061323762de0352706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6d656d626572736869705f496e7374616e6365313a3a6834656231306362316464346338636663df0343706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6e69636b733a3a6835616232653136326462306136376363e00344706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73797374656d3a3a6839633639663130326532633561343838e10345706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696e64696365733a3a6861323733636433343037333139363135e20346706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f62616c616e6365733a3a6837353034316665383765653839656132e30345706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7374616b696e673a3a6838633864616630613765653436656365e40346706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6f6666656e6365733a3a6835363962663633666530396231626661e50345706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73657373696f6e3a3a6865613037613565366662363064336634e60345706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6772616e6470613a3a6864393335616563316433323164633031e70347706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696d5f6f6e6c696e653a3a6864613937346163383162653839393361e80347706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f64656d6f63726163793a3a6866626539376232333863663037386463e90352706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636f6c6c6563746976655f496e7374616e6365313a3a6837336439303731353665373632333862ea0350706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f656c656374696f6e735f70687261676d656e3a3a6862336362303238346166616633343630eb0346706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f74726561737572793a3a6831303431306230346431623632346666ec0344706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636c61696d733a3a6866303335663761333963656534366336ed0343706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f736c6f74733a3a6839386332353637353165386661616335ee0347706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7265676973747261723a3a6861346362353931656234333364643164ef0342706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7375646f3a3a6830326164306232663035346438656230f003693c706f6c6b61646f745f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6837633335663831303230363436313338f1035d3c70616c6c65745f7374616b696e673a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6861633664663964616437653130386636f2033470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6c65646765723a3a6835383261663266366436336465626430f303693c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e2061732073725f7072696d6974697665733a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6832366664386531646635303139353139f4034070616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837383738326230393839393764316662f5033e70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835353236656430313534383862343731f6034970616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863386535616366646134323562633131f7034370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6864343633616330363438643766343333f8034170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6837613135363233356137316534363634f9033c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863373132393538353937613236383561fa033a70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862323562373639616133346533393063fb034570616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6838343432643265313365316533663964fc0393013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839326131613835353039336261313330fd0393013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862363937326331653862353534653536fe0398013c70616c6c65745f6e69636b733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5265736572766174696f6e46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833653632656264666666666331323837ff03683c70616c6c65745f6e69636b733a3a5f5f476574427974655374727563744e616d654f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686139333534666161643461373665333080049b013c70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686137363432393064396136623136623581040c436f72655f76657273696f6e820412436f72655f657865637574655f626c6f636b8304726672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a683962613735373265326364643261356684045373725f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a686164313731353032336439333666306285047a6672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a68383639393339643136633461626563358604363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6839353537363661393439366436336438870415436f72655f696e697469616c697a655f626c6f636b8804114d657461646174615f6d6574616461746189041c426c6f636b4275696c6465725f6170706c795f65787472696e7369638a04b00173725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a68353531616138343165643663366562358b041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b8c0420426c6f636b4275696c6465725f696e686572656e745f65787472696e736963738d041c426c6f636b4275696c6465725f636865636b5f696e686572656e74738e0418426c6f636b4275696c6465725f72616e646f6d5f736565648f042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e90045673725f7072696d6974697665733a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a68353336626465663630313337303534369104456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a68373033383966303763366430626166359204214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657293045173725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a686439386664653566623035363930613294044d73725f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a683462393032646635623163396431613795044a73725f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a683236306436636139343439323133623996045273725f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a686338653736346462653637623465353197041850617261636861696e486f73745f76616c696461746f727398041950617261636861696e486f73745f647574795f726f7374657299041f50617261636861696e486f73745f6163746976655f70617261636861696e739a041e50617261636861696e486f73745f70617261636861696e5f7374617475739b041c50617261636861696e486f73745f70617261636861696e5f636f64659c041550617261636861696e486f73745f696e67726573739d041e4772616e6470614170695f6772616e6470615f617574686f7269746965739e0415426162654170695f636f6e66696775726174696f6e9f0421417574686f72697479446973636f766572794170695f617574686f726974696573a0042153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973a104ad017375627374726174655f6170706c69636174696f6e5f63727970746f3a3a737232353531393a3a3c696d706c207375627374726174655f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d655075626c696320666f72207375627374726174655f7072696d6974697665733a3a737232353531393a3a5075626c69633e3a3a67656e65726174655f706169723a3a6836306331616663353539316639366464a2041d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365a304205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fa4043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6832306334303238323930633538326332a5043b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6836363335643463663633633863643538a6043a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6836373435393036666439333866663164a7043f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862386333663635336265626134643734a8044170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837313130303134643936663161386164a9044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6861653430663538643662633834653236aa04706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838626531633339316164626565376235ab04706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838663664633136316465646566356263ac0484016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6836316132656336386166646333393264ad046e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6861636365623438386631373237393561ae0484016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654c696e6b65644d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6866333266343634376565343936356564af046e6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6c696e6b65645f6d61703a3a4b6579466f726d61743a3a73746f726167655f6c696e6b65645f6d61705f66696e616c5f686561645f6b65793a3a6831373863376134633732623930663632b004437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830613161633334353833346165633735b104746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6864663338363036393231306362626635b204746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6866393636396130663933623330393736b304776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6837383732333166646234663336663437b404776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a72656d6f76653a3a6863396566306435396666633638346331b5043970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6865613364306161656134646366616131b6044270616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f663a3a6830643630663932386661663834366366b7043570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a6831336630666431633538623264316361b8043470616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a626f6e6465643a3a6834303937643962306335306566303063b9043b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7570646174655f6c65646765723a3a6835643738616633633035663339633938ba043c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6866303034616361383766303032386137bb043c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a656e737572655f6e65775f6572613a3a6832393564353235633637383261383331bc043e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835663335333161373865613536346261bd046d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861316166333363656639336435316133be043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6837336162353263353139343831636666bf04773c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374536c6173685265776172644672616374696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834383063633736356264663564633238c0047a3c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637443757272656e74457261506f696e74734561726e65643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837363066663632363032653962333932c1046b3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745374616b6572733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863653537313264663539623766393461c2046e3c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637456616c696461746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862633365663339366662623537333739c304793c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862326661626365333964636332323663c4044770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839326564356438616136383362663062c5049a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865313333393137303433363635326637c6044970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a6832393764353332646462313961626639c7045e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a6861656462356665333166366139313232c804776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6863393538373963393535643533373364c904776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6831643437613363613464313239656435ca044570616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833323762633966353735663538633938cb045070616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839613334303039336335656264323039cc049f013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862366662393166393066316634313362cd045170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866313963626535343464616533343038ce044e706f6c6b61646f745f72756e74696d653a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862366463663936373732616231353132cf044c706f6c6b61646f745f72756e74696d653a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864623532633830396639653339643332d0043a73725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6838623365363838333737356439653138d1043773725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6834313932363039613363303231636461d2043773725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6835366332626634383063346566383931d3044473725f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6865656538633661386366333439313565d4044b3c73725f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6836366238623565363864346262303437d504303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864336166303632633739626565376539d604513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6838613131363331663363643635633964d7043d73725f61726974686d657469633a3a68656c706572735f3132386269743a3a746f5f6269675f75696e743a3a6865323965356566323962613136653836d804323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6830373461333161653064336137356539d9044273725f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6866353239376165613937386438666162da04483c7375627374726174655f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835303330313663633833613537343038db04066d656d736574dc04066d656d637079dd04076d656d6d6f7665de04066d656d636d70df04095f5f6173686c746933e004095f5f6c736872746933e104085f5f6d756c746933e204095f5f75646976746933e304095f5f756d6f64746933e4040c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34302e302d6e696768746c79202831373231633936383520323031392d31302d313229", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b482d7d0ed7ce9120a7c1e2759f64e8d5bba9a0ecc5393ed70518ece8ade7c4b9b": "0x0000d098d4af71000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977671636ac6d1ebdd54d2c3096e71130c79a630182052427e3b8175336634f663": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9ac41ccca21a3f2433027c0dfba8c98d0e897f6d3885a1574b9ca27dfb5fe7d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761667e34990459e5ae02af8b6b7e4773e478fa4bda0dd10d7b055cc66a82d7e7": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1c99876c5e2c0846232fe3e31bf253ee30d545ec15911273ca9eed2ec696601": "0x00aae20ead3e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a52b8a0f88596b502b2af434bd8285cbd292415e50c37aa450da04bc447a5eb": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d5244f1d0c1d4efad45b9b07ae00c5c357815a7a4b1d54472b0fc88379bc95d": "0x00da3a60ac3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3055d92396a518ebfe69aaa049df702b160ced2edba85b1dc5ccf64ae4255bf": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d32c9c02fdbd6482236b8854f76b6d0e489b072047353054206f9fea4e896a46": "0x0046240a010300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fd57afbe7003217f29f9a10c6d83cbd10e55c6f1926c3938864e40d5c65eb50": "0x00582f6605815e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719a7e9de70786714521ca45ade3d746814a657a163956abe950a594bf2d6bab9": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b30565240cddb1d2ff58c014ea1cc6e0859c68625d994d9f84b6b2859550a4b": "0x006ee0d6c48800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea5b96e54f7577158753eb6572e43091b4abd60f2bd09b0f0fa0ce8b1371d891": "0x00c0fd58439600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397115ade7dc1611efbe66dbdc07c8763f1afb33ed720db2053e1b18b27ff90b214": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a93eeddddfbbf2b276cea0b161216cd5e74a7732e11dabc41189b0091a1f73b": "0x00e0c03b49b506000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e300e48673d6b13073527a20f3e0af735bf7739a7e954e5d7a4163ad4b0be696": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d650f0807f3988aca0e45a42ee6d286f717f94604144da5ca584e78060ae34e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d92601d917512822c6f525c805fa1f3df6faf0144d1a41ed579ba69160f4b487": "0x00f031b1450f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243f38e6f7e119f073e779d0332617609da1e6280bc277cc857bf53341c7e2930d1": "0x00b4606a31e0a50000000000000000002189e04906000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a3d227ce75bafe6872e2d7c30b7e2a1021e6c56a6059fd49534328e09ad26cf": "0x006e6c5ebe4d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974681115db6540f1f04fe30ea7b7f98d6d90575071becb20e80bd48671f6c570a": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c39e7044b28695d555cc7fd08899aebb2e4f930605e751613518a5e18b0a5d2e": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744fd32aa3556d2a6b52d2e3905e88a5b508ef007f5813039c3ba740f155c867d": "0x002a378ad65b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3033ac8d4b43439e640b3b3d48426eac4f1a3e479b8c5548665e9611bfdb03a": "0x006e35f8103500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df55cbd1c8513f158816f85118124483c789e8afc4645b244c5c5c906db7b1c7": "0x0054a6b6228506000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49dc520da360c6cfae88229e6f44d792083e74d431accdb3d77edefb3695a8bb2": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764a17f236d6e2bfda920eceb61f97b53f24efc7e598f093f1df1753f8d85963a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975458a965c90791988da9998b48a292dfa6be5ee5cfb5d20f2414b8d9b519d83a": "0x0018a2191e1300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47e04b920e66f97ee56f3aef9106f0f0a6135c2bb6e89b4cc6a63ec8b95917f91": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b39f9650c20719cce03a313fdd6a2e3adae3c18001253b8578027ef9d2c7fa4": "0x00ba51b4360400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b31429aa13fa8400b666f6d25bb3ee1ead8aeb180ac5587753b74262d44c7e6": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726e649d85e4a4035a743002eff9740606f1ecded199dd21dce2ce42f1ed533c6": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397734a17043b5ea921b582763d16428df9fa107605825da125b5689b426a224384": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e8b4bb344efdd8b68d3f4c7f4ac406c65d8c5e550851169b3677d29d34e60c9": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e86f242de9fd642a65e41c69c09543aa60841a060d90601bac4e859c94f356c": "0x001a4b6b869603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972dce15ca943b4c535d2755ae9c0740dcbce7fdfa69af298fb5a5f4eef7960a89": "0x007e313b741900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b3598947e6ed965466685f68a77c28385a58b0c499abab6f99cc8a92662af9e": "0x000822b9df0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca5038abdf0997d2d336ec7a491e615f4d660d11bd6b6cb5c2e1ed8745032bdb": "0x00ae0053919e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977da6d4b371ba81b11922456bfab9f01b6710498e122acc5b3a062775e1f21afc": "0x005a3db8ca1c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824382d7d0ed7ce9120a7c1e2759f64e8d5bba9a0ecc5393ed70518ece8ade7c4b9b": "0x005014176ae14c0000000000000000004d6726ea02000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798033b53969364066b87822d813bebd30728b79d25017214d3c3d61bd7d60845": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789b89d036f2f5a168b129c14319cfdba35c12b4de079b48a77874ec95b00fbe6": "0x00425a2f59a800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705bf4dba2fc0d3a46e9feb0a93128e69d1343f01f6f76adda58d2df619aafae5": "0x001ebc12440b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700777593d608cf1fb365f5121412687ff7509219848aa969da17b2bdb2500b66": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd766a279e77d75a40555fd1a595a8d0eebf45dcda1d37d3bff7c542bebd9ae0": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512f4aac2fbe33f03554bfeb559ea2690ed8521caa4be961e61c91ac9a1530dce7a": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533245a6b368f1f5b619d140c038534c88f2e466dac9efea3c175ed8002af0255627888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331de428baf9121ddc82d74517532355588094093681ce61ac3324be5a6f8451e0de88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455331088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553308daf7daff12d20c135d30d95040044a41b3839530c00b0f8ae606b9a34f7f8a2588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533066a52a40a6017ab19ed03e55e380890dc56ab547556311c6523d42a703cdf2f5588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455330088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ff88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532fe88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532fd68e5ac45776105b2219a062b8501857f2a82708c9a59c24691de932362a6f02b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532fb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532fa88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f8aa339be97e8b33e2eaa4bd2ae50e48d238882841f2a1caf34da47b021880443488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f49e1f33cc9f2d6793adb7b951d8a0f9cb3df1431174403a1f49428e876c995a6a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532f11e521cb4a4d0e788b8f9ccc773070719f576facaa1c5e73281eb9c0835d9de6388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ef88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ee88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ed88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff1f6b696f5e733257c2e8e74bffaa58cee1458b781265ae80e4fce51b41e80b": "0x00f8a4ceeddb3d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ac3e37a121c22d1a11a3ce928c8cbd6a9c871dc42ec4df6f70d0f199379a3e7": "0x00e8578c8f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779537b557100c9a92bea9603f575bd6c06806cf0acd0587d4fe07da4f9709cf1": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979148dce83378ee8df7ee746cd9fd3cef880599f0d3f738743026ffb3313fd176": "0x00827e537c0200000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973cf4669cdd41d904f4145be4a6ddc881619a5602776b5b7a57b1e655425e34310": "0x2280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b", - "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f95a4fc93d2953fddd1d2908d57d0b1b31057b93a4cf38d0b0c45844b63d1665": "0x00fe0f93981100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ff94cd3043734d2b438d3a2a7ae110c9062a6bb98b906b806a171748980b27f": "0x002af235ca8602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c01ff34785ebfa8b74f56ae1462583a37b9775b60486f65e00a631261e1909b": "0x0076cf5ffa7b0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2be65b515f0b5cacfec3c552d121cd28e452d2b580fa72771c3f590edf453fa": "0x003e8bb26e5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b89905c704657034fa62deb0d953353f50a4ddd2a7435b530297e0f1adcd73a": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970eb819ecd23c7864a7aee3288ff28984c84a3989e3468cc8739f8b4c934df72e": "0x0098983cd6fa02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733e49b51a89a4f03b57208c49010ef4fb78083f09dc8e454535ed7e86b52a1a9": "0x0078b90cce0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705c4d889f8a3042e36670d6460412701d39cb2c13733068432bb6cb2e5ab442d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758c5ff3621a50d12ebf945ca428496b3cbbc2eac6dd91660d587aad378db1c08": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746c4f1fbf545af69694a4b91d91ffdbb3c0aa59313885f645166835e703ff160": "0x007c90bd712c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397854beabb850b1980d90394ad5e5b2b7e959a95328f883fc05c20933f7f7abee4": "0x00e8912de00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea02e7cdb65e977fae1bd15e5d98abe96bdcb1042e1dd2a1c8e016ae376a021f": "0x00d422207f0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d487d1cfd300010bc4616f567abc94b791283cb37c84523f16294552fc189b04": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ce72b1965381ccf616fe86316f86e0c8c1f2cbffa7f273c4ada35d0651ee52c": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c1c5750ad558a38cd1fe783a745bf80ec9353d401a96de613767d28cc4fb2f80": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4de552eee2fc27186e728f2250b6bd071098c9ed7ea329b0e81e6f967e0110201": "0x00580efad5aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766957f862724ef07bb9db884c37cb744d23ae299bbea696e1bb682d078114f56": "0x000e103af39f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac8f469c598adf0217fa9b610052de1e0c9e16e71aaf0d4f6f1e8c498081743f": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49b2c66f6502344f8139a17f69c5ecc66b526c3806effd20058b03c5ef0faa3b4": "0x000082dfe40d47000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397598cd42a4149614d2b0a4ec474779568c753279f62ec072620f3842672da0bd3": "0x005857a4df5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4f65aaec46f126247a387f4f79c9289611e167f1f298a597eb4aa2f6f9c4897": "0x00e0b69c4f2f2a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797447b036c4e5775116ad453ccfabdd725d4cc49fc7172ec0765d9cdfcda69ca": "0x008aff50bf1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b91db8dc654e32665b5bc687b074d1828d6839f76ab78562b0a9e38beaab601d": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397896d0eabfcae6f909d783568dbed1cefcb7c83a9b1c38c653606ae731fb0a856": "0x008072f2681600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1d08fbad58c10631bf00b995e37d0a6639d2d09478222e8877e401c6229b12a": "0x008267fa158c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702ac7bf8afbc820f2dfae2821f34387ebfa43419fbd0bdde5a423b5aaea3c052": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9b6e93f06f81ccb0eefc6aaddf4bd4c006887806f50a83230fdb7a3f7c5fc4c": "0x00646ce1a00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397197564d03acdf71f90b949d3ca001b0cf8c78477d0a4483acb57e436c99549f7": "0x00eceb5f0dfc3b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976907a693f9deff845a634856a2234588bf407fc4b12a3c58c3b80100990423cb": "0x00f6428f3a2a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dae0d5cbeb2729f77ee085890cd7b20b4f30d049a061ca2e2ec984db94edefa0": "0x009e5cf258aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8bdf4066ac3511663eb54705d815f4df636136279b7db0310b7d1a0d9f24e2e": "0x000c439bb19703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b8e7fc3befcad11eb780e8d8048fed1e16bb6f01b3d9dea3ae343f907a1a5af": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d99f87a0f1830352377f4612d0738d1fb1c76fbb925cbd869fcee61b50ab7fd": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d34d5e6f629a188fcb1560e2fb78297cd8119d33b5498f0ec17eb7d7c2fa9e5": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f32ed3921eaf3bac22b8b7351ffdbf28c72d056c501d76a9fd64013abab05f65": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e9538cddbc4f7ac2c6e861737eb4117a233c7027707ec04d38a9cc8f7821fbb": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f78c7bc16bc5bdf1fdc4c80e99d94fbc5f9f290c8364daa57ec95fb0965ccc02": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767bfa5a0fab48893f3f570a5f909e238c984587f9916dc2ce388187bdedf52e7": "0x00c453c2e12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752a26ae49c8bcc421f389fffda53f29a646081f5d34512863ee3f9adc33b99c7": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3921d5ac95af7bcbfdbf8401693caab25b4ed34791bd61c1a41316ba1fecf3f": "0x000c58bce01700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9b9f7d58696585f1ceacfc6963892898a3b7072990bdfd7af767e1af1a25c27": "0x0042224efe1700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47103941c7d93ac9cee1efd10f90f56b81f2083ea8e8b75c92914343c257e67b4": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772ff2eef28878bab3656ede7298b91c7116faf4c780eaa76d57a1ed6d0fda7f0": "0x00f6fb67c47c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43620f81fe27dfa6ba47ad798b27edc1c659a13408a0f6bf2391bd7429020608b": "0x00003426f56b1c000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43ecd5b1ea87f1ca04360c76ef565df360eaedbb19dc38032889683032ab30bea": "0x00946f32c2d301000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46ed432ef91ac052f33dd1204fd1a3231ef3b7f9b56aafef555a9b7475b8c39fd": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fde7f62d60690156ec9068aefb7288d4d476ec6ca02fe13c939f35e65ebc9763": "0x0026f61e763a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397840ae2eefc05ae337de2452acdfdb4a1412a0963649ceb59d235c30d67bda606": "0x008ace1a761902000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c0f21c8a78b138a93128ee8b946198226a703dc2c64862f27b31b2cbecafaba": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a4f6eda0796c016cca5c4744c16eb11953922bd7c2d0e81dd2017434b2c74b5": "0x00e070e8b01000000000000000000000", - "0x492a52699edf49c972c21db794cfcf57ba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705af4ca7ab5b5bb4508b74b5ef125e3294f1757baf04825920eef2f2330e2f97": "0x00465d66090b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978861917955e1cacc13716d0a9c84e506c9998f9308ebaabef17c63b9156d7da8": "0x007ab0403b2c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7668e31deafe93ee7f0f2c5d69cf3ece8bce98b3a884c27b103aeb218f50b9b": "0x009273630f2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecf398321f1ea9a65d32afdb32307fb3e7c4d83c106b125acc2da1e5c8a90ac9": "0x001cd8b7510200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769ff0cc44aca8c694d1e1b8dd5d3cc82f7c614f8d8bc322ba35a603e1a148ad1": "0x00947b88965300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749cfd559ddf277df81cf714f6a29b71d8b76919923e8d4668237a6ab31905a36": "0x0094e7521f5300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43800c31b3b5adc4fa9318517ca5ac2cd4e4a2e7bd5467ac709dd55e29e294ffd": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3918837379b55dcfac6b4455aece06e403880a2fee590edfe3376aa36ba41f6": "0x009a32d2642900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975113c147150323541ef6be7620e10f5d85bc4177f715c1c3ca5f78da56777640": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c51f2f6c3defd2513db6fe017b23f8f6b4dd6da69e57cda76a7937c6266333c9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976866fd74f02b4862081e1d5026d57a2c5fc6783a3db2eb317a18e7d8da104323": "0x0052dba5770a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397298f6a2c18135b157a9666f5af3395db967135bb2d41ffbcc81e1589da973a30": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f10adc8239ec7c9c75993fb411f915446dd72078cf8fafd7e8b006cb9f88aeb": "0x000e064d410300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f784321a4cd932a42901f29665d2218a8417e8b1df6af53e4838311cb79318ee": "0x000e0675acf100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8eff0c4508c1d32bfac46d2b6f32e894f63561ea579d7ad947247f72e6ca995": "0x002604194c3900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45e216d3f400db7137984cc7a81d4553c7de1868e8ef21a66fbd34b8b836b78f7": "0x0080e03779c311000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397893c89d9e0fe9630f52c912e7905e5583483df10430d11723eff5bf3794a6923": "0x0062ebffa05700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2a7ffe640ce81a1c4d6ee4b8961e47556d0ddbd6c683e11780217db248d4679": "0x00a47a85db1001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781c07e03471906bdf2f1c5f0ab02a7aaa22beb31a00bf5cb51a94c352780152e": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979da9216982fa7476d4e5e1571e672d050c8c2e9e45c1780b787c1e903ca689b0": "0x00465a9730f100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397362f19f530f0206de88037f559072f1027a9d722c45ad756d80e625b0eef1267": "0x00e849c81e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792aad0d540ec94c5c4e722b3523ab900001354f06a241c9e0d5158ec5916076c": "0x00ccd58f146b2f010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974012f98fa3b2ba561fee4465ed85bee0c25381aa172584c56bee0d121a8e4c8a": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397999110adb233d8c399b930e93494714f93bd4951df407a6002d95f4ccb178891": "0x006cfad2dc649c010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bddae69348a3ac647f704fa679a0f4c887cf57c4353a87cfd50ad810cfa90e90": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acc54154646d6088b18dfd77a1014e2fa158cccc8c46512a312ca1feb5d67882": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700777ef98abbbd245b7f226f44f05fb6772d2d72f8313872e6a0adcafe358342": "0x009e4397200200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798f44c7267076dee66820b501a927e99f52678576ec2856dd5f726ce1238392f": "0x008cde7f2d6906000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fdbb237ec67e2ae5c6f724adeeb7828afedc40d84f7eba7de7fe08b8856e275": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b455440c8358681d0d42eabc8e59bd9a32e023cbaee84912960bd56af501c24e36": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0dd1291928a18ab72909da7f4ee01effe2991637397a9ccc330e2689701a548": "0x00263025941300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a998199d10df5046f7db080d882f39a8aee6f3c80e6195b21bf73dd9dc96c7d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9e840bf2aa607e057368e0d81807961f417fd1de5252647f8c0d22d0fcbc590": "0x00c0e1d0612100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40c4a4d22bcae4a833da8312076262f69476480b27467d4aa3c11cefd4084f0c6": "0x0056103f218725000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f313a55adef03ca6e6b0b6915a1dddb1b7e76d2ddc86d9ec8e7bafe65562f29": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759b07b7a13cb3a327e6541a27712a4addbef6c8ac382332a6b40600d7a000be3": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709d198430cc32b7f27e35c99d3ccbdaf242d787ff78e9387d6e17d0734e3f943": "0x00181b6acc0400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b443a876172f28175b3f1cf704f9e51aab77d3add14cb240c1b3e30fc1449ffe89": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a96200988b43c0803e46e478bdc937db993d9d90c41507d7e71af9b240d31051": "0x00de0f257d5781000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f927e749b712a31c0fa5841429733b79d7b8e8bf7a4c55af786bbfd49c387d2": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a5d87064488aa324f302b226b7002e1c5312cd977a223238611ae2f8068f68c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774d5306a4cdd52e1307bd5bd4cb864494c10b0cb84f410d9f8deeb32994df18d": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b25266585abf7a1e223c109fac5f86a63f4c8d0ee2e09b22ad19a311f46fc33": "0x002e79c7b73c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa9a9bcb8a7423fd058b1cfb5fbf9465d73e42a0188d8e501acce64eaf4ad59c": "0x00c0a31bf09801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da45a82ef60da55c1ec3d157a7cd3ff4c8a752f02c77b747e95addac9e589561": "0x003219bbda0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef9e40bedebe8947251fb0105ea1e37bb6be81dfe4489aa5dc31f034ac724934": "0x00c27e3a434100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb27abe92fd322f823be770b1925f9d631914e656743e898467b4224dd094a85": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d23396cddb8eb4e67cdacc09377f135b025099feed98f4d14668a13345b9a729": "0x007829c1894d02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1f1d36196595d0a3dce2d5bc087355e1aa4e298d20bfc7e714d6386e0091111": "0x006c564955cd08000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397503da82fc2af5453e97490bac96d885b7ce0ecde3b8010a96272df3fd0c1bd94": "0x008c0d35660200000000000000000000", - "0x3a6772616e6470615f617574686f726974696573": "0x0118316ecc2b9b780084ed10ba7b401696afd2106561b8192c3d821811eddc85be120100000000000000411fc1a5c88ab2bb7f63b23b15c39983cf38f3ac2dfd9c5168d5d7ebbad835440100000000000000d548c490ff6e728ed093a7406711d76b2c7d04c77277fb88b1c3c789fa6417370100000000000000b98c930b9b4a782ca392580d02ed1185fa3214be9e7669ff7dc096d17d286bd201000000000000005ce30d8c007d0a438c92c37a660b7709fd1ff3bba79c6c4832ea4107d266e0010100000000000000f45475c15d447317b7de38972656d207e362f7fa4429d665ce10a9da2ace254c0100000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397445f13a50ab1768f206f5b81d086d3c4e641dc31ea94e46aaee30554832d5a20": "0x00e00d9e260c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979758e656183ba79264d951d69d29a311f1b62f030c5c73e0cd51cb2c6a556262": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397869fe0ffa94376a9bafaa7e46a314b5ff0aeb1e485bbdfcc82ce3db094ac37fa": "0x0022afc58d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715d2669cc661cecdee75537ce806cc75e268b9a7d84ff3daa02f6dc00e3ea089": "0x00ba0f07985a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776a90a4d70fbe0c5a0fd199b1364531be573a3cae3e6b6589b37332d9925bc1f": "0x0010a7bc491a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c5e5db52c2f9abc54143d14fa7b63cfbac0815195860858f99e903e7455646e": "0x00befbbc765800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d60684b60090b1bb22baea329c5403c93d6f50a22ef0236957d9272147b003bb": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e28e339db3226e9c610158377032d299e4c221fd5b39697626db8994153a2a9c": "0x009294f9fd1201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b948a0e2060aee325e33e20b02890ff6d1f917fa9228a2b3323da451b63cc8b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733a07938bbdc73efdf476da8bf8d60af72f28ff19729ee57d57ecbe3eb709e6b": "0x00927581d50000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b422d74fed4421b5426c84e3aec1143a83a845931509bfb17c266bb4932934d25e": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fab33c6ae0efd7f2c424924c73ee053e698f39902a8a951504c29876376ed55a": "0x00e47f23dc8200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b4e7b1ce77602a1c473b343427e7ede04769f763473d8f86e53d6898a3c611c": "0x001e2ac52d2400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44624d5cce1d75d31071c7003edcad1ef6dc9027af9ab7f885bccd7545733300b": "0x00a4289f320700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397306e86da3b6a5c65d443b23a6649c910ddccc36f94d6b356f584dde4f82e1e59": "0x00148b66da2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a422dce0a81e403db6850f3bc3b6c310782995dd683a2f55ece7b1b9bfb60bff": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f5ea1558f10716a5401d5f9c791a3a7123fc16e4d3e8b676259e434c091274f": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b95e55eaeaa99686c477648ce51728e3af183eb3636606c1d66209fc89c7875": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703aa3baef1451c43582ee036693e1e1d851d6af7e50c9530e681bc17cd0536f7": "0x009cc589734803000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397398c57f32e9f6783d906f0e5692edb82fbc8a3ee2813bedb5e6c44065949c0a4": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771c411b8443e023c9d9b54750e40e19f40c9d9c79e6956dcb86b2ed718de1e56": "0x007a2120ce1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5caabcf774d24a5e4f8e3ff6b9671055cb94df3051ee174b1ab702d831c89b8": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769dbeff8f860954c118681b73c0b6f2fae29bd828d9835de9a2022cc27a58d88": "0x00a2ed9f605600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748f888815aefd10d9c17d36c85c0177f1018828644c24802c58cb8610a3a6d07": "0x00204a736c3d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397751ba57af7f80305a44c441d6c536169b9d214b891663400df601f6cb7dfd38e": "0x00564aa0b30100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397405607a92137bb895b8763a79dd425d6269606363aace7da137b4845d5077ae0": "0x00da5001030800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bfa69ed72b8e2aa38dc4070351a42ff3e32f2ec41cfbcf173218b51a33255ae": "0x00dc597e469902000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1513c640e2bd98200f8474bd498ea5dba83e1bf10ad31d0babf511c62fb42fe": "0x001442866bbc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ac6be94a01493d2005236a9ff343815717e1d8d35a24556004e704769845bb0": "0x00fe2d45b7a603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976dde58c5574e157ff0158d0bee26c1d758e274922bfc8b10f774c4cadda32761": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac0da986fcc45b839829efc91930b132eb80c7c9f643771f850b63fbd538cee0": "0x00ecdbb3710d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397beebcd787fe172c7778ceaa9675fc9d2a460a9735109e5615c33334721082d7b": "0x00942d64b5a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ccd07aa13473783cc5f1708a0e7d5e2e231d7da7ec5c7e16c06315ac18a7803e": "0x00c0b6403b6f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d9c4b5502024aefc02b3ad1541a51178bcf55c7fa419e3755f48d271653c8e1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a6b83b32af8ea92743df1fe346ab8b8b512e653bac49c8f1ba79edf7fe15b77": "0x0062844325d300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b145d3d06afedf6d3297055c7fdda2ea44e33e0d6d573b94b1386edd1684058": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f67001d5e20b77479af66d015adf408ef9f382573ea95d7f63ae83ddb8517e6f": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397805b7b1b819049494a689624e0000de44965d360d5de71f296882695d9c66046": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975afb598b91feb1ed9d63d6f78d66b03f9d18f1e002dc0b5f58c3a1c69d340836": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397302c53c50b6a38acb8b344c56e5f872a52394ca2402733d8c72deb0bf954f271": "0x00920d70945f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751827e01e708a0a9b81387229c9e388ffd457584a493a92fba733c493a8d135e": "0x0086319f582201000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4137548c71edcca875d889aa0b278b4961caaa01bb40cbff030dcf208d8086b58": "0x006cde705d0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9d5e42bb7e99ae5924e3bbf3233223a9408a0447c9aec995829bb0ad4d616a9": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c4f9db385f894a5158a21ed3d94247dbbc5859c45ef2b7e1f3a364f22491c2f": "0x001cd6fe584200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b6fe686d3b6660d949641f415c551ba6f019cc3723294eb198fbc13f78a66e9": "0x008e55b3603a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397488d554f733101cf9326fe71875dec746230abdc591a9d448cbe03ac8bb4edcd": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea83de81d97a98402635f3eb765fde5e1fd05431a04c4df0beba0485c8363b4f": "0x00dca897991c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c3a15f0ab0b851c9b612cedcaefe672acf182cc83e575aae72e62533d694db58": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735f7538488a779df3195981fe05dc0765a41e554bfed5c5625fe1260dcc692a0": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9c8301d4cfeefd77da70b8fd4ad62448bf8f3243fe07bb546e2c788a0d7ee57": "0x0030345aead918000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ae9ab57551a139c6d414a53664eae54dffed79b3c3dcf8854429367aed279c2": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f11af1a73d1428938849ba8db42af3817b29c50c57eefbfca8985103d63f3f7": "0x006c9bea403b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b432ee3634136384775c0e9028b914ad184b8f81bba53084072fe7e6f9b3406ef9": "0x006a0b9bba8400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f5c1714a4ed058c970fdd6e9e3696c8edc4849e185e25a5f43dd8694e5ec3ab": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d0afad14c97667e9075e2def3c51bb050276a3f3147b8ff2c985d5e02ee6c3e9": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eadf023c0bf67fb69c6b6b2e0eeda5ed7d171b26189e5ad3f7a29a546f2f58d7": "0x00d8dfea53d67d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397797561f723f5f5a823b1c6e9564912e2eb744d076a6ce934966dbf382d3330e8": "0x00427f58a79b02000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45529f46eb156dd9f4522ba93e47c1788c281e4fe0047799f35d52cdd3912e522": "0x00e4b0a9fb6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0e2132638067565cb814f7e38fa60a769197c2811c597389139edd53e67dfc6": "0x001a5524560200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec88647256ec1b7ccf461a2c8608b47f02fa7e55e65a5ee444c71e6908725ac3": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dd7051caef8ba0c977bfac03d8d42174881e96a15a8c392ef6b2868df640d1c": "0x00daf69b441c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca7495d2cb1bebc0a3da05ff93ba982d22008b16947a0f50c50d881136a64a8d": "0x00ae670f0d2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781af1d01483df2ca27b83022ece1e295b383d29d25cd9ad3d422463d2808001c": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972aea24c663637655acfbe5844ba7b946887de7299183b562b32ecb39d0dfda9a": "0x00806aacaf3c09000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47a1a7315341d9721845e161556656fa49e30fbd0d2116287f4396cd69758f236": "0x009e65b9ad8307000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b6579736b898a265f07867010402a3e0cc63cd48957e62d5e565df9d7c0360730857c5d": "0x316ecc2b9b780084ed10ba7b401696afd2106561b8192c3d821811eddc85be12ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0fc23e46a55a3c49ae6ace509d1709adabf081a125c31b54f00ff7fc8ebee34": "0x00904accfec908000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704a0e8ab3c0815670df25efc9ba7a363a3a88da911f491362d3135fd7f05daf7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc98858f8897216aa66f628d5e20806f9f8f9c190eec2aa8084aa2ca0b95c712": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a99dba37bc5b00f09133360896b206c2234d44ac24cb5f3b678108feea6ae383": "0x005e737e69fa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b470ffc2ca0928a7f05e0a579ea5edfb7113a3c9bb7f392204a9f6e6c25d2ae3": "0x00aa7f5f551c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d520c4950096510e347b29c703f08258c4f34253dfbd517a9319d3dc8cd8fda": "0x002e6ed21f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c3a8edcb45c45c0326aba09d730ba7f2d842ceb98ca3e9aaa2139e9a8b48f4a": "0x002e01f9b32d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fd33d957e2d31ffbe84d6e12bc69895a50883a4b1fc4d8e29f9a74f175f4f2f": "0x0026da6a887d25000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d15fc0b3d2ef2d27e5376b9df8591a37310f6cc3a2a00be3ffdffe4ceb600ac0": "0x0092ba17bedc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec436c051732cbcfee1a6ccb1ed412c06b27d30998ee51afec1dec2b444f4a38": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397606febf5974bd3e3c960d4b148827e7c9a8ff40e271a46ad1f061dee36f376cf": "0x0080292c6bc102000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fe60ebc97711032e5330887a2480efd46737a1ff256fa85c5fc8ec6c1d6dfcb": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c62c5eba29d405ef742e1e87d4b57812bc43c42d72b1a0a8309848d7148d3d9": "0x002e8b3a7c2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b90fb4e7e2c90e17e8709022a1d8135d8877665cd2af1ecfa82c22735b98564": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739861ebca070883b80417a4d3d7e062e2f6ba11ff63643ee49b5b152696366ed": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972be872213348f1d71f238eeb6086c7ba63bb2481d54db0b2a03ca4a3add825d6": "0x004a61a31c5e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975beb7fe937f3260ed00d05bc6b8014746853869caf0b5f8597304e4fbc3594a3": "0x0092cec9b62701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792819d383f4d8ef876f873382f52952741fe5d8c93cc49d7d36b1b6d58a6943d": "0x00d8adf2724902000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4937ff12d7dcc1f94d73ac61d6ca51165ef6bfbac182f91c60f588dd1c7fe9500": "0x005a3e8aa72920050000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b430b0df6ea16e3f4dcc4c17a39a9a7aa7dee0324a3cd377bc4f1d83889c9b8b1c": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e09b19ea8cfaca1845a1ab4ea080303b56e3dbda273bdca8dcf17207cec22ca": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5bb1d010739d204203c5c5964887e5c5822b017253b99fd7607ab5184c639a6": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46df572d5ef320c819d2f43859745ad9cb2bce64e6e57c92654b9e297e45a3443": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef413de1da8e5783cdd6a53a3363ff48acc6e2c6f364452c876075affa1bb6e5": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4aedf69b783ea7deadb7a21601e808da5aa4ac1a15702692a84dfd1fed5af85d9": "0x001a3995772200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e584291ffdfbf1c32ae5901fd9ddb93ace3da44fd0e53bac8c4cdc7e3d123496": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c5c95a72c9fbdaf3ba8e4e53438c6c4b336e009014c5e5704a45bf5e2e37ec6": "0x00c0a31bf09801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e65c3691498f1547f274d50dc82155e9d7e84d99a0383e83f273ffe7b7acb17": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b93f401c18aa67c2b410a827d50d372ba4332b20befbf6a6329559d8b9b22d2": "0x00c88263aa1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea4a03aba3cdb250170744f979c2226bcfe6bb2a9d9eb5454aa42be5071e4071": "0x0022bdbf630700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714f615ad01c6fd01da1cf0a7d5bb5fc003d3bf4c0b4a20ce5231204e6a907b12": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972386d822849c2e916b8f9e47866371387a8c016b5fd26b7bf73c206ea7814411": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0f6eccb34f6f35bd15f49eafea82914e6c35f5040645ddccfd17580f568c3b1": "0x00f27812638201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6a721f560fe78106aa4b9786de77f50277d052544cb0a24b2072c841ebc1a76": "0x00444b753ec100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6bd74c3fce84356218175172bdb6f80828c739d4ad4898e04ed6f99cb32324c": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c41a223f614c97ce66a7b642f0cc368cdf5de348327d49fa262f4fe4356b26a3": "0x00a452f2812100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e612a15bb049d65705df5885b0e73c41ec9046cc6cd87f74028167d5b2c301a3": "0x002082eff9af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707926c0fc752812d874e93b2b9c97a0c2905eb3d4a942af8252cb87e48da2884": "0x00ba4f31a30800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b435808ddac12abb15ee984f98ed63a5121ff68f78e98bff6c4fa1815b33cf6f4f": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778e270c088eb556a24e6a514f0d73b266c71ba2ae74b4061da3a968e40995510": "0x00e6add2ed0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735976d944c977fb4be81ffef1b43868b6c19083cce3e7efdd12ec0be9ec66162": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6b585744d014855922f92ecd193441f3fadb1bf68b7154b134e417e6dfde46e": "0x00c41afa0e9000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397462f05eba61a3a04f5c57272ba7e15bf7224f8bfba9d0458b80ddba42800499b": "0x000484564a1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a3ab87f7865a20c0d2e56b715f9a2af8cdcb0e543400fd511727a3dfbaa8c58": "0x00ec045dab5600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767f97a171460cb74e6c2f7217291b19dbcda15cdc06cb96c72a518945974fa0c": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978bf931b0ea9274239dc3d21134c5bfc8bf2a8866f0ee4683b060dbed00857ab9": "0x00488c227be903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971438c48e73d30b8e94915468d139c4b5b26814b18761ef26d7a41f047654c68f": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009d979fd811f5800c676031135433ac4708907c0dbc51eae8a7647d5d93341c": "0x00ea56e6bb8302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763b9e3c56d2d9cecf7be8b8405dd5e1e41293afefbd6a71b3e06db82fac4088a": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6ac1d22aa2ce27ea4989f917eecd3697e0dcd0831f077aba5f85f06f1edbf94": "0x0090abfcc81700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792352d605942a5f11ba508c3b2d69bb3e6eb64e9fd4b1e9e6688f5eefe65ccd3": "0x0020034cf68f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bae97af614e917d9642f013e93292079ed35b0419e0bee3cd63888b22249fe3b": "0x0088110e954c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977054aacdb4b13c6a43d118d7f9c1cad8bd88d542f0e1bbce4a612f03e14ed476": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397563ae8daa4a852be1ff31d52697bc28d293136b9b831d1cc33667ff632d93972": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977022988dac7483ad221c225931890d54f5ed44191f9beac9caee1a4bdea1fdfe": "0x00a4823fc99198000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a6e1177b6b513f9eac8962806c14bf75fff9dceda50cca675ee0658b03d88a1": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a901b01f88208e9a58ae4ef4f650b43012e70da09f155f560a6d37350a3ef91a": "0x003c7ab90c2c07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784badc906832425894fc981dd0df619d46040e6b95313045eee5c4e5ec60deaa": "0x00e09b147e5500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971449a37be4780294648da07a852d4188cc1a08403941358897f5044c5823811e": "0x00f4fb4e8b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c74f51b8df313289809bbaffe2dfa5f0cdbf627e7b4fa3c032faa45ffb224e4": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40df628aff3a76a499b37a11dc6a7b83c74e29a84e75a6cb8a4f79848bc166b67": "0x0040db35ba1601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de624c8e2e81331887918b3dadc74b63329920c9ea1de1562c24b1e063c72052": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970690115da28753b6521cc31164e272cb0674a7c9a02200be99cea44d972b63ea": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768daca4e2508d55a02d60ee13f181884888607c5b44b40f773302b2de627590d": "0x00703874580800000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca9cbd2f0b29a008a36009ac44cca0c969": "0x00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744b2aadcb24e100bf23e7f24e278fdc4786122e1abb8c011bb6432c0b568e34b": "0x0034bf3fed0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfd307cdf2e0cac8cfdff49cac81daf1aff76b8f7c7e8692c2f7fe9f87b45c44": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aeec2684cf98d8561dc00b33590a18bd39a61b9c74531ec8415b77be3a0bc84b": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f194f9d03ae634f4fc6b396ec77f5e7ded61c2de34b3b074dd2192749c6dfc6b": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b63de8048a8ba8500de75e66fd8fa73f9145ad83308cb9ab0be1311b72b40bb2": "0x00c41afa0e9000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738b9b0115fa58a8d30be0cb52066faac4dedc35795e188f735db8854c5be3969": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397637f77d119f7d3c7b9ee1fc91b4f309eb4c5d535b82892684942587a42f17099": "0x008a5f28be2406000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739e75f41063ea4ee3a3e92882e27f9a64ba31a736f6b32e81671f7b4af75cf00": "0x000e259dfe2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973daa530f5a0c6357cc274ffbe64ddc6dd48894a256af6fda4c019340802b14d8": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bf06ceca5faaa2d73758b478023dea97bdd98ef8bed91bd2f19dce87ce45d28": "0x00d6b1f4573f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d929b329a8d9651c1821da74687dfff7085d5ddc8976b8f41fc20c045b697311": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718b923ff2921c85bd0e8fe5eff9fd21d71d5850ed1ab8dc0e11c03dcf0768424": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785067909f7a3d6312cb985f1288f1b43eabe278d380f60bc10f6ad8ea2b57a8e": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715579ccea2ad656af34856b5679859be424b9cceb6ebb534e8c90a84e4572d47": "0x00881b5b9a2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282437103941c7d93ac9cee1efd10f90f56b81f2083ea8e8b75c92914343c257e67b4": "0x00bc15368e363d00000000000000000020bd175202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ecf4a69957902652982210bea651425cb8c0dff2e33f17624d8b18a16fdcfc2": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e1896f54e8368286b5b5709dc5b76d24bbe3f687e7e977790eb28a6e3853267": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d93c4c6e0b5550e12026e35a0581b1e132c4f861fa44c2b4bd45d8225d8b765": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f37803431e008ccef2526af4d0c41172ea262f967308bc4caab74aa16b24b07": "0x0072d1c9185b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e8372cecfd7ed1dbf3cf84708f6240656684de5dbd558921b3c739107f2a59c": "0x000a5aba704800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41acbc08df9659ed58911fdde3cc56c176373a0e1a6686bbbb437bc4b25da1c81": "0x0078818246ba00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcd342d8b90b9753f218b598b5ab7e2e29521e1b21a84e1fec98afe0c61280f3": "0x00f43bde630600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aed99f75b4259baa98249ed5ede86399b0e21a4c61027822e5f8e5584cd847d7": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2595cb78d2cbc57f249efeb19576e04517b42c7a4c6a7a3f274f0cdb6e436b4": "0x002691e58db100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722183db25c201fdd0d2bf07bb10f61c61955c3a317c6852982b9ee3b5670d7d8": "0x0098caaee7b005000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397943b0c82013475cff759e037d9ef4d6ab1b9ff86f5a044068df2237d527cdec5": "0x00728e40997870000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751a83c28100d253aeb2b58a4e1aec4514e516706b00c70f9d9ca97653be6cff9": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397763fae548b084dd248eaec9c64daa5bdac0fe0b9e81714c40c3f7a89b844c6df": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6e0fd3d4d512cc0e49b639ae93d66e069741fe09d5aa0ce52f3809361cd0687": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977fc85d7ff32ce65b580c4055e40fb503d2dd1910bfd9fda07ffad6cced33b15d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397270f7c4130c2c958c65b2389b3bc5ba99c6e597bbddd5a33a11b13109390a3a9": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4056ba8af483f8732a35c46e861d839c8acee98d14d6a2578708ea8271c8e2477": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397098b448fc2c2ec9f519634579c5efc3632ecaca3e9df6035f107c86cb47f049d": "0x00f022a88c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b77c2c3fd6e34e76c0ab67fb6a83170f371a5e80f269eeb2a63467f611c3fda5": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c143c370138b08ad1df8cf84c2afe88f8ec8a3d2cb06cc983f0e49527c2e8eb": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c59de23b2322ec9f9116b29878a212c39677bcf98aee2b84db77c8dd70fd0336": "0x00924866aa3700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b435c102d635357a134359ba658fe5a183a74b050d95e19e9ae61fccec7a4b1b71": "0x00e4dbdcc51000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791894e427f8a7d54a04efafe4298b3ed58255cf49c61f61aaa486b73f3c2be65": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e814caa722c07384eee3d0f308bc250898f968f406855de2c478fba12cbf2716": "0x0080ea33341900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8c77076ebdeabb6bfe1f7b030a3ed2b1aaa2e40a4dc70d2c48e0f48fd713d4b": "0x00ceaa99f6be0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0cf0ed909bf09d7560f0ef35d9d8cf06cbf004b72d2baf1fd25969d645cf15d": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c3047377e2403c45f0e5ade4e7ba7e3ec88f274249c4cae6cf3e7924c267f0b": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773eae323d27dcff658d01283e1648cb11b09a935da5910f155f7aa82e3260d61": "0x003036d4980900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797390df2fbb9e5803a1bfbb80016c5fbbda6a6adec011e684820eb8326ed6f47b83": "0x2280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6bf6a5cb066373827239ebc9181216aaa2650bbcf8d474b9e735bccebf479e3": "0x00a65f83e67f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397575269321554ea44fb3f18a44ded7b902797f5c2f34b13793592a06271425311": "0x007870ddfc680b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7348b74a1fd586aaa153d128ff63a96f70f1971dddd3219f8bf560a24e608b2": "0x002ccfe5aa0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d9b636bceefe8030141fb86c207996d0a50518ff1ff10998aea41f9cd7d8e2d": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c596eaaf328b622bf9b075379e7cbd3368c5f5bfa5344eadc0c3fc19eca7120": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c3d971aa8ce27924f14168b86a10618f84690e19b415ebb13ee60ec36785821": "0x00568005780100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792bfda510e2e3b64aa96a227d16668cec1698c898781f2f6a1a25851b7060ebc": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799ca0d955625d6b6a7e038ab401b977fc1495f304d48abeb0c77665ee0503241": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6a54d3466705b92ec92171961bc45b9ff4f6132077a6688999b10b2a26b1fa6": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776ac0ecf142fb7c670db687e9640f7ac10520defafebbf75952a93264c9690d1": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711e4bcabeaec31774bc1fe34ff6ed9a2dc72d4d9c95df23874d4ed9c3e08cc82": "0x00a854ae840c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41932680cd17166acd08c9559cca5c7233262b7a44b830868cbbc90e9050425ab": "0x0082377cd53497000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397157fd8eb8549ba225351c0a488606f67e798fefb99f0aed5a82f6a6374e24633": "0x00005fcd95f209000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1fb416256883c3b831a9595b144f54067b4b917d79b5c1a13cf4d750677e1cc": "0x0014a9784c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789157d4de1941b7574666d8752d24a8755c775e1b3e567aa47e39a7a83dcf5bb": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b438aec4b8524165a41bea452628f9389ab7a9bdddeb1b62f9ff4c69035e99af5d": "0x001c44aa45f000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397081ab7907be9204bead6842ffd54cd83be368107369086505577097297ab07ac": "0x00fc8d0e800000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397240d16d5d1c2f7fd517246e8516efae541b56a7d94541a992699af17f96b27c1": "0x00f456eebdaf62000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba1da6723c144dbab4126523069bf7fd186d031c1bcf611cb5f0c7dd7ed36d8f": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794643194f29fa159600d522012dda5592c2968c30cc4c872a6b792a4d3193ad9": "0x00284c32795300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b444b9a6c6c7e4ca1081995a55f75ebffedbc8bc9a2869e15ad7ef313de13b89ea": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be580a586fda73b919e6882786aba825641b41c184afd344261887010ad7aebb": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ed0e37a9eb3da5e7031190af90482495056dbc24c289bc7fc6a0fe49781a084": "0x00b0a6277a7802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729ffa19b01edb26c7f1fd68fb0e26812b793714f968703d8f528df67c4fcd838": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972123e6eef568309cb196f41e7842dc180c60684ea4f3bf9a222464facb8b8ea1": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397425dd320dc63e91f687f66fd80386667b743b578143453cf1d90c3a6213de201": "0x00e66123a67e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f2ec3ac826572b72f924adba308be75c142ad98b5391abddadc56be0b07cc04": "0x00888bf5e46100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972517ad3e93721594a89704d17d273eb40029889a8b00a2b51bc706f8a72052f6": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9bea4e4f24db23ea554a3a28aaa25b28873ccf4c7744539058760e78dfc98ab": "0x00fee1cd577700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddb2bf270287fab863f486e98e7cacfc141d0603264f33cebaa340f79bfa0a19": "0x0026dfe67d4703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758fb1bd6714fcd5b897a5af8b6b056d114109c2df0719487173f8bad13ba492c": "0x0032d33d7a2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6ce636fc7a501ac18da4ade87d47165864b1f985ab7abbabb6d8555f39e835c": "0x00ecf4b0d90200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5a12ef40ebcddaa71ecc91d2e71e7a1c12e4021e79c5070cdbe81a67f331956": "0x007629af4d7601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec759e7422cf7928c1abd3bbd5837d4623c69d58ab6954e02c564f227e7a8fa9": "0x001cd75d120e02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bbe23aa4d55cfff026536fd4322d77e653b3854012d45e2ba1454620ecd8010b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c61cbeb83abfd34ba0b4538d941faa5f08380da394e748a33d998fab7579d43b": "0x00142a8aecdf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979aec2bc0dcf3561ed862c1dd89bf7f539e9de80ba8cd90b95edb927d0ac3bac5": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339782791c76e28672a1bf19458a94f6e1ecdbcdcf568fb891a10bb5905ad55978fc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f3980260aa572aad6b6eedc5fe3929809afb961f91c19d96973adb1d3402c01": "0x009c4d06cc3e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054c4ddd8464beb867c4edb8fd1a2cd2f6dab6ad8f83d16877fac9d5d5ca65b": "0x006c2932302b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af769e1c58509e0de78c247003a7a95960c324259b0cac5b35a8ad8390a8f00c": "0x008e713b42af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736583bf0f5606cda3fec61ea5b63d1d12e6a340d22e6ef2a34a60635bb061288": "0x00d6087cfef24e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3189ff7ddc5c10fa16335c0d753250027c4efa187ae4c4f2a915b91bfe773a7": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b46b452ee13e9d747fa0394be282451a8d397744da9e64437a8bf63420f9cd7e": "0x00a21abb8b1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d462fc04b8f8d9acdfd7a7d3f7fc7ec60041d15afd7b444f18c97cb0e93febfb": "0x002a96626fe000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e799c586a3f41e71d9326288d2f7643ca97a72bf4a1117bf5ace92b266cb73d9": "0x00dc0b7d560300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f22ab503d7e4cc0583634058641016bc8f8891a76aa09004675da9bf377d4538": "0x00ae8f7afb2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ebc150773969a17faf8a247a59302cf421774c432b38a7c8767790c0a8cd6d4": "0x00dc6ca21dbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c82bbf2ad08a864dbb1540d8d92032c5248476dcd6e19b71a3a953d05d3943c": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9053fd5ceab233f4624ac83df47f11e552d0c68102bd9f3141ae92eb391f735": "0x00461784db1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd5d2778d9ca15138833551c7a70db3824a26bd533cbacc2a8e9513d6066e683": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46f6f43824e0fdfcdd9cadcd9c4fc550563dd9528f397c44d7be339ba9dcca231": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccfc7684727b484e2653e10e2bf5ef3cd67fc4f8c50f2e44b9377e1dbe896d6e": "0x002c490fd71c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397687cac370280ae914f53a65e26ebca34f592ddb9645f34126aa09a6268b6794f": "0x000c7a9e142600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397011945c9a166a3e3a591eedc896a6e813fdfacf2412ddea0ed982bad1f4af712": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b08eef7a2cab7c03bbe6bf5ebf50fee7da76f1e5c56747d9bf67a69071f779e2": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788d5c6c66cef535c7fc4c1339911283d6d0623199a9e298e50ad56730fd512d0": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397116aa5566225ac36172e736dfd3b43db4666d8a478238969107738a5005e5943": "0x002484462f7d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b447f3223051d5a5bfe1db28244b0729449d58f72600e41121e7abbefa884ee417": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b07ba2ef04e1d54ee13bd69766b9fe7d9b30db13a1be1ca728a330b0ae68a019": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bf224392199648bce8bf66416c0d64f4d72539d46b1cc3e8a8fae323fd14e02": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974baf300fc541b692ee61b4bbfa9cf2354a802ae7d95207f91966c2c38fb3d19d": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb067fb5318a62c247dfe66b337564198a0cfac71352b7db98a52f5af7d42544": "0x008aa98c5a0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753d88d7cdd039ce24a745031a73f83890e4c2e23b3fe61d2473a3409238ef098": "0x00ec8a7c58ac02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e81c3af44ad348575661f08d9f2e24c90e7d2eb02e84e99e1ba47bc1b516381": "0x002c79ae7efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b5ed326b66f41f12c82f13103e92e62da388426443c382e939176ff9f3f1f14": "0x00440062123503000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x32000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977533c07fc7e2b574aeab7470871dcc1a2662902cd028ab86ace16d53ddfd3455": "0x00e801c82a4100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca74c6b85347f130a2fee1829a6c3d09bb4f6d0946e3efd897e90fa837f2739d": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa5cca309371fb46dfe0ab4ddbda95fb2c0d6364013561faa2d17a08b713a623": "0x00e2ab7bb83800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a3d7a07174e4d4bb57cda6399dd754cce91881948aa40a0a6ab153a5e17393d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976076841f612727b0670023f6424b2948280c64cf3d87552494d2345890899739": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339790fa0f70c430e5a40a45155509a578b5c195acb96af8a01e6f7b4a23036d4d0e": "0x00702964a2af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794bdd08c266902071d4ae39be80edb6c96935c1b7c16ac7dd681ecd6f7498215": "0x000a78cce22300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718d6240cad1eef110b239f2b570a748796e4814752b813f2c3ee2ab8840757d1": "0x009c778883b200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f3aaf90ef248c4f9f0e62bb9d2ef7eb0202b41d6e3079bef714737b5c47784c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753f794c858e4e43a687a4011eedd33be735c283554eec87589529bc94a557f2c": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7cabb51075dd95e42915aacdf8caee49d70280b8fa14328aa2223c3260c3f2f": "0x008e46e00c1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f034a4482dd09b018a4be8a71455c429bfa0e4cb41520f93b11676a781f5e378": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb59d99c1e6f7c025a1b1995c1135ccb7c2dc7730f6c0abb50bba37b3dcd2bcb": "0x005ac97c261100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bbfbd713f0657e4e6657ea71df11d1311cb3a86f9feaa56b4e0ad0fffa7dd3c7": "0x00f660a1ac0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773ddfe8195e849ae1845532daf419b805752230587a121fde0c36f508c363a02": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48fce62c8e5cf3d38204b70e588e4d8ede1025f98593616e45843c7ad1d58deae": "0x00e01fd2053304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9896222fac623a45d8bf0006292f6b16cf0d7986cc1d5784628876b8d33e86d": "0x004e3715665c16000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d1fd9884a8fd6882c9f6950afb582b55e68208c793ad64cab01eb70e56efd70": "0x008c4400e13801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976521ab804b19a952c0bd05b5626bedb58fb4d7cadaee0c9ac779603c87b0a471": "0x002e03c87cac28000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa43264259775ecf6783ac2dee1c4d8c2d82208f7b9557170884b8ac9268bae8": "0x00bac1e9b31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397189b4308bf1339ba1df91b5c6261a2fa6a42b387a46ef24091e6477365f3e27b": "0x00be5290be5900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339787e4a0f4e442e57af9bb1df1693fe1772be0e1c9b5af9e103b3c9a4e61892001": "0x00782fcb050a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8be95b7fb56fc12c0663a77186aa41d8cc3f854325eef84d3ec47afde2d5206": "0x004067d2aa1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c9f0bf6c8c3598ac8d210709e2b32cb81cf8777765c7b6556495fcade38de83": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773f02028678bbf8c381b7ca1fed3c0c8d87daa83194033f85ce84c0033e268d7": "0x00f6e55aa32401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8af8c0184aa4ff4849a42a2a70abfe730b8f2bdd1409452af7f99705947125a": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fa35f4313040e8d1a25cf8cd42eef869a7770e9351569f8593c1229b81a6315": "0x00ceb632b62800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c210689a2cc48cca7b1579a30528f7b7b4e10f9be7b7f55bd7f4dd6d2f096c7": "0x0008bdebc10a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397759c95000cce052d53bbb433da2ff9887e2406a0fba7aaed430a2e80a79297fb": "0x002a799c422300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512e12c22d4f162d9a012c9319233da5d3e923cc5e1029b8f90e47249c9ab256b35": "0x010124a8e101a08e84136b0b33477867523ba2591ededc6c1247a0f77ab2b3ff746a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346a6cd54809a1cb5e1ca4ec9f583c00c98aec6ce768d9f10370b32add71bfade74a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534676444817329f55798fc369637f87586f4c897ab648b802d5424b66c5c99f0026488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553464acae4ebc67baab582b04298a37175961c531a1e8efeb94f03723b09678b91a7f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345c8a0f349c56207e869186a5a29e0f848fed08ab1617a4115f6a628531b54d2e7a9613f7a9e8e8b5c80805e4ab9474a540ac23d5b4c08ed3dbc23ed3bb00fd650858c6d7a3ca28af1cfd0d8c1cb69619e85a82404cdc655522756f1a498ff231be08c71e9b40bc639ac1b3e109b15f4a9f701529eb6941b0fbb51ca6856dea4c0820952856965f0099f1183f81f16cce52efe3ed2fd543c63c2692db598ddf97ae88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455345088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344c86a8c83bf323e6e4d715c2d24c71ada7edd456323c1eb66490752ee950b60c5788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344a1c41a9336d45cf1ee3e4e655c07f49af5e8313bf72298a06397d870bf2a05a3cc08d5de7a5d97bea2c7ddf516d0635bddc43f326ae2f80e2595b49d4a08c461988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344476d7aefcafa78ff735b07e082de3e15edc535b2a927a3922242fbab69af8a30d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455344088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553438a6ff2197e260745daf5ae4c9f73ec52ddb19dd9d9f4a31786ec16ecc54430a5f8ba481dddf61ceb606c28ba81e59bb525e81c9a0d78942bde63af3bac13b41eb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455343388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553432fefc84ec1b276e0664192695311c40885769b9a75954e49fe12c6aad6c85312888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553430a493de655d6a57c136e22828f46b8532e2d31cc6f2e7a5c7ba2a20e689f7540c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726f2cb4f443feeb4301ec5eeaa8da9be47c3a4f4764ffa3cb3add11f4902c11c": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a53c54b8ae518596eda89f856b3daf1fc645cb57044ec1dc38a105d9c3369f8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977fbdd8a1d211270d864cad77b9cd4ae786f972edf7d52e025c25bcd534b87825": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfef98f9b38129bfee60c37f6cac951d4d0e57bce8dcee22d411869be409c50e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777c3aed1b00522e49cd38c3cc93b4c9853cc328ab12c0704a88a5cb79555bf9c": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397708363b987e1d681773e9744d378a75ddb48d41d498531c78e8bcf79129d50c4": "0x004c98974d4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397090d8c6ab2a11fca5118cc839d4f55797c6725b538ea3c882af967a2bf75c8b3": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713ab80500c57e35644dd21d1ead928ed78039eed03891cdc4e6e2c4b1a8ce875": "0x00e0d10d78cc00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b431c523b86787810de50cb0882e93245d510c1a2cdb18a5aa97a6450855c7a904": "0x009657704f8a22000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970db1f747dbd00e3bf7c3d5b9c126befd95fc99263219440b73148dc5006264a6": "0x002046fdcb6951010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758065be8ea1c52d16814aa0e584cef0f95f90c03754bdb026b214de57b8334a4": "0x00ba6a3f4bb60d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978708a463d0c3a6cf3a55841ab4547c5363be5bf3300999f7a9d97999827e7c22": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397513638aa3ffcb89c023d6388bf942600ee03a54b251fa8c5b1d8bba74a7af52f": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da46e347c9815125352029863165b9f7764be16d0e49b03d94f0cb4aa55627ab": "0x0050a95c091900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47f21d7797148b01787a6a834bfd29b515f39e3806f45c1689550b6065389d9cc": "0x00e8addc7b5fc5000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd4a955a878c10d266f680daa5003880a0cefc9dd82e244e24df869817dd6f9a": "0x008435f8106000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975cf0de3e39b41586882cdc341a8b22f43b0b659358b686871af71176e3ff5ebf": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42bb0f1aaf77cb1892017d606f0207cbbcc9b3121c3fbdee7510c43277ce18786": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a96895559051fe5416f83d6edfb03ffac1bb534e272d2a83280d33f31a3aafd": "0x002468be4d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797b77d838b7a8cae4ff39140f61d6152ae857649c104d12f2b601ad91905f4b8": "0x0012a3c85efa00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4665cc45b15775fc7e47880ded45cee9b13304ac3608e635117247b84824ee4ff": "0x0074d5f6726a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736eb099b871dcb77a8dc2fbacc7e30e4ce78fd2aacdae7a38a3553469c6d9dff": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af1b018f3f16063bc6e50403b5dcfb9cf4e0898ed2ad8d4132f38410b6b560bc": "0x000258fb633200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adad3ed12941ae256ff82dbe5b0f4f09ad8cb0f5f2d2d44659196bbe4fe8ee7a": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779ce1845ff8cccdee165539136460d9f5f13b12a5d7143e8c2ba7a366666c320": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be43a023b1d031497efb54a0c42ac9b6774e57470cf8cb6701cdbff56888d54f": "0x00744903af1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fd8e006cbbfa649802122aae8a784f4ea766c78b6e25c824943021e8d749549": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e25ddd6cb49034d1ad1c3e9c4ab2acc28061cd69dc2e95ab023b59832cd6ba5d": "0x008ecd52fcef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ace88aec11b8637788709b5f2274124d4950835f2a0fe7638e3c232380fb7cdd": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afe3a11bbfe3dccd8f3b8a7daf329e35e3f2412675ebb3da56bdf101e0b707ae": "0x0060b7986c8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bddd7335e6a99d2e0fefd9ff5eee2a3a24efa0005bca0142c7607d7adb8dd565": "0x008644b5357200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46b951a8db9a908cd6f551a914d342ec0430111272509f8f2113bef298c9aab2e": "0x0014752a517800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765e0e36830e78b34cd29e1b0c7b6d9a8a78e921bcb7eda2098b50c645bc17129": "0x00987756112e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977477a534b83427e5628d292d5038b9a14716806b1011115eadc99541da36c8d9": "0x009ecc2ed32900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d4f1985a57bb95a814eb33a263b8137c4a79cf229456eda93602751cf0f99d3": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c78513abc7a05ad2995acd5b8bd9990245fc23d732046347a098ac4f8ed8940e": "0x00a0724e180900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41fab46e6c30411c4f3c1bcf39a0af80276f6ab1d4128bba449f536c8a2e336e9": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8bfffd6bf276b2419f40be97f06f921b4d852d0a1fc696a0995eadccb9bca89": "0x00ba080a2d5b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42a28eb16d16d51fd14274f75797968fa9a9b87aa0903119f048fa6eea8ad31cf": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970de04c75de5f9155046eb98e0a3f9e1be30313ad55d0f9c33e9735dad29cf8bb": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979916a8fbd0b4dc9dfe02706b55196675a69df32ed08f04b8c55d3e7d7a835fad": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760a64f2d3923932a08d5cdea19e6364430c7dda9027c50b2adda68e04436677e": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769693fa72206fdfd5660e9de0f37abc2acf0cc8448e3f05f609a4a595c6499c8": "0x00d0841bbabb00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4880186e45243126507b4a93305852d861645a12af9bebad33d383230de6fbd3b": "0x00f2b4d8768600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722b62a603f76fcb19f959aa9d4b779d9be8b0f055af308f5b5c67c73a441a480": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42ffb9d21fde4391995c63b6a40b00c886a7f770037e28572ac3bcdaa6e946f2f": "0x00fa444440aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a071dd1abe97111b852bf222f7431f59a5ab8d1868a12796254de06284f0c5e9": "0x004ce66c318e28000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ecfb49208f40f242724191878cfcf0b499f0b16298a469538f6eb8ed9e8aa0a": "0x00d26818dc1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6c2934814625e032a48cfb623b5254a37dd5254c874f3f86eb34214b369e2b9": "0x00ae658c792700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973dfe6717dd725eb7ebdd64e918b5a3d132606cf08b420ea6f26a7cb67afa6572": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea18561133afdb84564b80389c6c67ad9655f2842ae0b4d33a502ba1fd535839": "0x0038e5be87aa00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e4ee14073b491d25c23a2cb3d885a46ee9b2e3d0030a0a8cc57bbc74d84b563e": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397266ec3908702055d1a4bc9bcd532a23848df581733639416350d5bd86442b7ed": "0x0040ac6893f800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765d50d88acdd38bbf2cfabe6830ea768763214eb3d2cca4ebaa4ec423fbe7154": "0x00beeb09a89900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397326c51e1f18e150e7929b3d54a162dbed72bf65078f9cfb318d5c69b1bb9a210": "0x001230d9ff0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bb0eeb50f76a24637fed16f095ba55abb8a0cee3d5f3304fc5c1b1f9d96b254": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b9f1ee7e6b79937a8793537e34ba415b21957035ea751e73792ca0718144957": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f36b431133d814aab7f79af935d1babaf0ac54c4d75e103648a7867c7723dea8": "0x00dcbe9dbd0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a216e6784ec474a38033cbc71ec4b483ec4e78cc68ec04429ddefd19d7537cbe": "0x002acfc5745300000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac": "0x01000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bf5fdb0b6f3d2239ea709f67f721f6fd9c19fbc0ed7e319c7d66d2228a950fd": "0x00fad415c00000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a69488c456535b88afd15188fcca72c63980ed408ddfb5f7fc860484565069b1": "0x0072ef4755bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d7ca5cef727fa9e2e10e10a6f2aa2002b179da0c03f4dbe3761d12ac682aae3": "0x00f0f70ff55300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47e5da1f8d06bd05a22c85eb463bafad09fe2f84bb246f05c6c5d73b1c6406591": "0x00d01ea1f47316000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acc690dbd75f00629b3cffd916f17f3f7c9a0e937748fa00e969156145f81fce": "0x00d634d4e71a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afe065dc8ef7d45213dff1484d102f72fc078fb1e7b28a4879f40534cc79e7e3": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974801c7d8c8ab2ed5c8f04b3f96f4bda4b5f4f94587bcb75030a7a574fdc46491": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976440b2f0f371b962449cf9b850e8945dc2b09e5285723a64b7dd142acbb57213": "0x0032efcc580900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b463bc24437250a45806aa82b26d358e531e866bd18f1064f5d32386d5d5adcd32": "0x0054e32fcc5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970419a684c4ba8eea24a105b9e2efa7ba702e285ced1e4356eccd330d74ba3207": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d1aa2342296c48dd7afceb02304c99148d2621d0dc5b82273c5a89209bfdf22": "0x0072e669861100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a9145bd8ddbe0f263f5dcb897cb524ea564c344eaa6a051401c66ceeeb50dabf": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6f21e4e05240a412acdc70569b25d743a0046ffd076af2bded5a8119ac0c864": "0x007eed5f265e7d000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ab48b6454cdfd67ff61a56b11a3b06d55fbc4444422cdc60dbd32d85fab30aff": "0x00026c488f5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397818a564f05545812b1445a26e80822a983dabd311e132373129e621e5264b16c": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0455066a48da7b03beef39611674d8afa31dea711e575000b6545bd6b596e47": "0x002c0980fe5000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee8e13fbe6b18d535fc68677cf2f20babf80376bf345733c668d7ec1f698e5cd": "0x00e61c8dbda200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978527358cb6e201b3cc13e36c05dc0db718925ca5a8b82d0c75b9afb6c95c2e62": "0x00c68d5f688f13000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8ea06e4a46f0f3fc88ba8710519ca8e1c66d30f3b231f4b1d7b9e82c9ab21eb": "0x00962d3a03ff0e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759dac3301efe0a650f9054825b9fa16a46ef8966215ecdd6a457fd147330bbf3": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c83ce1c9d7f0e69716d96af4f91399d96329b8e1ce8bdfd74858447aea208523": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701e59759b4aeac8c1269efa9e2089131444fdc74d579eb94333d7f68d4c05295": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757f5f56f400da6a6359245483d277c5b3b6de46195126ecec78925a919c1b7ce": "0x008ae174b20300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974187114502206b363a742a7795537b4f0eeb69decfcf0cbecd936d9b2ffd5c49": "0x0020f84dde7004000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8efa60ce5fd9ebb42efb621ac7d7e832a19bda30f855845df437b8add25f269": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a80d33cf6c1f7b78d58fc1a0309406ad5157662d78c81840d01eaa19ad1365c5": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f751e373bb924e0480c128cc94653415e410305894df8410f4fb55df93b3c40": "0x0078e6bb2e4300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f1b1d07a2a9080fa1c149cd3d95985513f53f6cad7dd8206ba3f2bc8fe7560c3": "0x00bc04ffc76607000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512d86b397901605eef0229e0598759a8984f13c8d62b040e194fc5da975fd7d26e": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531eb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ea88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e868c56f1614b37b1505038f7115043fb06eb21bbaf39eca61ff34230a82fb931f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531e088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531df88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531de88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531dd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531dc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531db88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531da88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d7cc6a9d8c19b76a55b97079fee87bb615ef9bee42c269088ca4304b4245dbdf1a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531d088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531cf88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ce88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531cd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ccc4dab03cda4e9bc7e0e896342a87e55c15779683b42c81a2ac3a20494fd80b3488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ca88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c804c6871f21173e22bbcc9902a1ba41a513cc5fff797c948a36927cef70148c3088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531c088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531bf88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531be88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531bd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531bc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531bb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ba88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b4220567dfab9710deb501d5c1a3438e8146fa690ebf29968e6931cd8661bb5e3c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531b088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531af88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ae88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ad88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531ac", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d4f84015fff76695fcd49182be3cce2f00c991f0bad709c23e6a33f23dc0bb53": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c230c8505215b01d0b772638bfd4888773d0dd93e346ea6592df12c0de57c46": "0x0004b30e7af001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397465c15fa37a0ae0a71f412100a95f7a18ad9f0e2c5deb930c550057a5cd757ec": "0x00020edda97c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b7d7d7fb5ac1e17c013d66148ff4997a24f496de08de85e88f2f0f104fb52a8": "0x00dc2582a47c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c40f62b3e06894e1685b69b0626fc64b09c860db70a4cedfa01537ee09d9d462": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc6f0f65f80079c46f4b66a9495904f45b58b9c9e51a1ba6a94e9c121f98db57": "0x001e10b9e23f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41e700beba5dedb470bb3659d047cebc928d4b768d765395eaa0e71df122dff6f": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bb4424405846a424244f4ee870cfb85c4bd98ba4c7080fe7730b9e0676c9a58": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3b34fb913f2aaf3f36bef02c20fdeea4ee0541b93337730f7374bcf4e29e26c": "0x0072f3efab0300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b471789cf60430f48687793ff23a84066777552e5e14a7aaba2e12b75c1d9936de": "0x00409263457f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ca80d98f55c02a2e8d108088b781ce0b4ca8303cc6006e72b3bd3fab7d99f48d": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bad2f30876f406e954ca7f61e82532138dad18cda549bfd31bf45f83037f56b": "0x009e7961b21f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705285d2b67627342d20eda26ac41637cd32c0677da6251a4460abecbfb84c892": "0x00f67d9d3e8700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e3421ca364d240b9ad4bca9012fadc70e2f7c734895e3d93bda9989af7ecf92f": "0x001880cb1f7c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738c530150967a170af780787289ee0b33e2f655979f9a042f9baba621eea34ae": "0x00d03bdd7a9b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f8dad9ee41aa6542824534dafad0e5f72425a250416c8c3f31fa49f0d9fd91b": "0x004292e8484a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5e2c35fedd19964adeb0c0514aa6fa3d0657f5e808572cd96972275e51dbbc5": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e28adeb36591190f2996bd9dd5b1dbe0506dd7ce8787b4d547da82e6e446898f": "0x00406241594406000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a3ae29e2b3278aca8bf07cbf45d09e6a9f732c352c1c033cf8a0d6b39aea9032": "0x0080afe64af904000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44d8c5ecb1b94009145963370ed59151ba68e111f3512c73863fa05fab41a8c29": "0x00ac55c0712600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d45333762a76f91e4cf6b4c186f4f06242daf8919c8893f440665a567b7ebcfb": "0x002e275035cd25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a23bf9ee36f21aadd1e85a20b40fb8460d6dd1388c12a0648805157a9c75c68e": "0x00526255c91800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f9fbca6b5a880670494489b24cbb4ad9e42c08315caeb26995a5464884b079a": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4af75499c006821c1b1abc17cc7a8010a4d0c8bc03b7740cdb377bde30b64b0": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397042d3eca29bc94870a0c276f2d285c03bcef02af8d935a5a8743dc0eebaad361": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ed39c089c89f829a21881984fdfe23486452349b2f6697bd0c15a1ee0c560cc": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4ad84c1e345ad4f9c06f4c41e0a37573cce74377cb58b0202990f38fefe3ca6": "0x005ce2476b4302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972359ca6d2c2111c19f2bb5d67e07f46f0a9e4a1425cef937f78b4e2732a41eca": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e7d5bed556cc624b1b25d7bc4611e3d454aa70f0f149f9df165d5545db0e3c4": "0x008015c5ce7b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff78e91a1caceb500c719b70e9880f207431789e4764c6b0eae04d625264a1f1": "0x009e1b25359600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793392572264c56b9c190f370a2e2275dfbed5cc537ae334a42f5515d661f354f": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397184864eda38675200112934c75eb8852d4def5a1dd155b9ebaece76b167acc19": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b98edc72bd8f849b47fc2f8ec07fd59a17af429ee9c7feb306e5b2209126a7f8": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de8efe8ae4e905552287512100480858736bb689b0f34230cc16db4177359992": "0x00021044ae9920000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ff14fae086b15b5a9ff4fb34d8bbe0cfc81fdd1ea4ce544716f91cb6685005b": "0x00fa901bf31f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45c027f07edff51fa31270ba23681ee8c3534218fd05d966f86fbc10830035600": "0x00a29f816d3111000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761090e94773e281e074d40e3a6f9f6249cf0024f4de77782df53ae99d55e4b78": "0x001e076f490900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1b1912f549ce8fae24a22d542f22e90dc760ea6fca4fbae993fa6641090d1db": "0x00b2db83201e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8ba8c86dd8caa4b6ad2c93c6509256b4c757edd9b148a105dfeb8fc93778915": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d1d0cedf839e0f1243c580b58880b1b73e02d3c39671fb5562cd7a2b655e589": "0x00684cead73800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973708472cbe8043ccd43d5d2c359488eac57ea09af693a202841a7f2a733c9619": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743542f767665cb165df64d006e570cc2eb383cc0b889758f048d96686017b308": "0x0090f5e41d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397534fddbac734dc4a94910bc37f69fbbd82e0d1bacb46fa60e1c64d41b59955a8": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ff777f387387aa7de603f3c8884dcb8ff896ef923ce556135035a28f7ed491a": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781758e7c38eb588a9b5381da9f591a2c2783b1f505c2f641ab1e75dcd4a40664": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdc9a373c328c1928872e9cb060bd53a2804c5cd3b0f70054fc7509d54919a87": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f281dc549bbf774533e68c94fc96d10d97c7077f3323ac18f47eb45f7ed4f7c": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b154d257a5aabe2444cc5dbdb77099b97299a02b1d04f55511c02c7c7f90fc0": "0x00f00f84b5fb01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a77674411a00565f8d02f40c78dfc647c8130d67f0d19e51c8afaf0f3ce157f": "0x00ca8f386e0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a86bcf75dd3b4b1998dba49f61dd7c4eeaefa5d98cc946fef360d2e816680c51": "0x003a3ce86a1d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e3167acf2a51dd05680ee8b308e8752b90e0c55a8fadc62f849241ed400585a": "0x00c48801495d06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972952cce68054b323aca010dc8704015596ed279866052c8fbd89ab1fbab724de": "0x0040222ec86a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cffce8287f34891ff8e79b2749b43fc74b06072d012d187cbc0c49320ae443e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976fd76f801ee73afbcecf26a573635f920525a65d2f658bafe33600f883475748": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1f2572a684763c9f08b3d945f213d143755deabd93fc951c445841208ddcc4f": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397439746352d3919cba06acbb2aa769eecac816c3437f2f435507eb9db17477de5": "0x003ece57dbec23000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978340f58159a4f79e23193e97a1595ed6a586cfb6d38a4c07a0b261ae76deb67f": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771ae34877526fc1b2b5dfdd3c054b3867aae2e29ecc66962e2eefbc018217df1": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4cbb88d4229fc8fd49f408dd102e9e33777e4a7f9b18623c2bab9534cb3981f0d": "0x0042b0c4556100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49669a64740cf745804b66c8f917bc4ab2735089c66d40d8c95477f81ac769621": "0x00540ec8632600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4dea3ffc2e7aa5c5b6d6831d2cad7782d8da64a543ce26678c125c61022369a13": "0x0000434fd7946a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975107f5ff91483abb7e91f04060939b4a9fbe3fee0373a328b5973f93902309ff": "0x00cc087b5eff0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6798ee8b157d4b0d03a822bb85c440e82f0064d30a4a5e4951ad9972644fd6e": "0x0006b016fe1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a60b508eae97fc8ce6b4313ddc7ccdff6da7018a92b98c4b52071ad05a237f3f": "0x006af59b273877000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727205b9f209cc20090e4fa72acf677181650c2ffeeb0510eb59629031bbd6b71": "0x00aef96617b907000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adb51575bca3934ceb1ce3b042e63071d90a2f258b037200f1d9c8ff70e359e3": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975cebbfcc0f5d8d6841ba8086f4e33b5e527e8ab58224fd4052e6b2b9019ef7d2": "0x00881529b38401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793880cc3a43c056cda36aaabeaf82b9214c36b9d57b17c45097ac58617ef2cda": "0x00421e33e0df01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4842a67a9ee94a69fe0f8d499b6a218a07554ebad3475a3859251a32763478663": "0x00c2c5c6860c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b09c4fa81a4673cc9914f9f156e0694539e6dab93035f067075e6de4728c695": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6e2292b7f5ce1edbb03f88d8f8abeb805f36fd74fab5675cb344b1e2b5f98f0": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973465fe2e54c4e0acc0a8f3d23f2f0bdcb1b80ad7f9515e62ebcde655594a9985": "0x005264d85c1400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49fc1915721843e8350824cca390d9868f7f8fb1adc37552284516a1f3a28cdf7": "0x00244691bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eed0e260027d592543e765c3720dbfa9a8a9d3152ec12319aa499cc517909bdd": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720b82a85965b7152107002c25b91824488dab8c4fa5f1f24cf22f12bed83bb7f": "0x00c0fd2831272f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2484836d16a13490887f7e144fc5430782ef89564d05c479fe41cb45aa5cb7b": "0x002afac2d93e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49d21668a1a3ef94a64a5af64a329c7541ecbf7ace2afb902ae2947399b4d8e9d": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243ccb3f8c195a88489438996f9eb16bc71088f68cbdd83ea35a2c87d5c99fa3340": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397997d045efa097a494bf05f32b11f51c491b8e3f485e3514838beda7d6672da42": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ebb32ba26339347b4e83009e168888796123b73873e85d81cf21ef38e64d5c3": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773eea15a2bb63bbcc454f5cc88944a8cfe7641368d35273572386f077ad81441": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397734cc17b952f893758f51acdb5770fc3990d598f51303dc1e7d81bf4d155fb61": "0x0066fa41c93400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce4e344662c9851aefc3e333be7167b2108107db989fb1155d63d0a07e6ba61b": "0x008cc15e273d0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fba2c3aeb42690b1137ee801e4a431fd8950969d74ee38a10893ea292927f186": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972301cfd620add909dd375ff8b46ab5b02ba64098904f83cc027b02afab8035dd": "0x00cc1013714900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397940c1621093d2f5b26dd8515adde6aa1347acc4194dcdb6b3e9745e4bec153de": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c91aa6647bd073b3e0cd3a8bae5ce9a431c051a039b7a99f948bcad5a37a397": "0x00deb7eff01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732953f7ac4adc5f8b13135e71eaca64667837c6fff2b62e901dd16d388f8d1c2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970fa9ecb0d45413971f025b8addfacdd82580036e37decb9eb59d626cca9b239a": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e057a2b8323c917576c205e8383101b1628953d0189f5db1482fd1132bf959e": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa362ef1857d2b9654410fe133444f9b8c91ab84c9d62bb78ab801c6864d53b4": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973406e62e38f445c7e64356b963c67be9a495e719424a7fcc26eef5f7925fbec5": "0x005ea223252a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4eacfe7ef826eb7e7b04170ec5386e0c353a21008b43741476ec6d0723527e527": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb2c8bddb9207aa9d5a5821285404bbe4c240b585302d04c0acb90dfdeb764df": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397877e57ed2c807e969da6930161e158b4de21cc6b04495df3ce59812df24e274b": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e1897c799a7ef1bb6ff5ca48afc20da5cb3687e2947de19c5dc92889e51b9dd": "0x00fa5354f60200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45553dc2db9eab35ed889b303566d9a54eb347cfc381abba34b088ba46e176868": "0x00a85d62653804000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b657973185991e3eaddf311ebc1f06314a73571ffe74f4fb643117931b32a25b432401f": "0x411fc1a5c88ab2bb7f63b23b15c39983cf38f3ac2dfd9c5168d5d7ebbad83544b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723f", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d5344081f29ed47469574d50f99be66de01a498b94b76d09a34c934d1b5977b2": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e692e01188e905148759fd115a6e47bc3b0a41b959cd847ce5b20688d1c301ec": "0x006c054ca75702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791435485fbf38b699f830800c553fdd8f6ba45e891cc296b19c0abd8a628b299": "0x00244691bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e95d0b36a010ace2cabf2475b712633b7a35417640840abf82fc2f6bddab7b9b": "0x00581193490000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b41afacad27ecb70559cabb6caf6a625bd3769816b930596902dca35a7dcf64": "0x003cf35d972100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44f44dc8b1864565e9ad190a802b1f277b6993122c64acec1261edfabc62c52ff": "0x0000869eae29d5000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702859465ba9ad496d82c52ca148ed4440e4121a40462b45c4dbe28d2fd892144": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b77d4fb1e8c781c179e3de6a8ace53c3201575c2c7100391c94fb80414bc466a": "0x006a097df4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d2eac8363ee4b62eef4be1b5cfa7e5abcedad718206eb03716e3b30f80f9cfd": "0x00f2ce1a272f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7217121028a9b57870e244b10b1db93ba7b21b918d7050ff04e028104082e73": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707da2503f758d9e9c3c2dd7532beefe72fb583e5f5fe5067567d16157b88463f": "0x00ea26c1d80400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d122a79f7029d17ea90536eaeef3aa3991845d43ae6f2c75ec3b8b410641e6c": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f99c2e5f6061f3a446ffba00f687ba759d6399782ef69398d7c431640688f0a1": "0x00fe42f31e3301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974037e7890d14d1777ca4db487bdfebbc392547b16926d466deff6d052460d8fb": "0x00d6dc8cef0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc6c2f88fcd2189445e112681f2c97f74a3d5b9c42c60f6b51830c3a1fb03946": "0x001ec02c1dfb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397885a74e0f27b36ddbf09a916512fb676790647149905c8037efe52fa80c23cf8": "0x00b65f759d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afe5802ce9fc5b2ac73379d354243d3e83d11b7814812dfa18e801cb5d5483d6": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce3c6a597c4684b875ef7396fc42bf42f6c1fe36b504a7b96474b50704957ba0": "0x00427f58a79b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dca2f42dadb7b7e1662195ced1344d2e3b397949a45dbedbba48accbc2538c2b": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397726d96e5a59965b101b8e580ed098c91116828ff45fd4c9bf25b1775dd3644d5": "0x005e9fc7130400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d80a0d6b9917fbcb085ce60b340847de485d271f0c17278b3c475589e965b561": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976763305d8bf82f5d77efd2f1155f48541d113df08f5411367f06b7bd051dffa9": "0x00ee5692f26601000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b4928f23bb8bbfa6f2bade1035d417de218bc40a4d3f1d9270e4b550e9c6218d": "0x0050a95c091900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b459fd48f3366f87d047ba3711dfbb3e05e8f3f6791406bb87c5ea0468d094f1e4": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c5e0fdac13cf08a4889b2c26a1d326fd5f11bc51aeadcd0a28b4073db63d17c": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c2dcbab41ec1c04fea89109c20494f7378de2159116c1e14f23d71987cf62d1": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40e9d219852639b17bc0fef83fee476a9269c0eb4a537ee46ec0acef003dc2580": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ab62243ce81805faca0e50650a216f2fe54667f06626c6ebcdfd51f3fe298ab": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c32f12e2de4654204accbe490b9d6198a2c8357ddd050836259a84f764ba8bc1": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716f34d37413c95b23a8ec18a9f2f6482c444b375eb867c7967246a027cd6556c": "0x0050a95c091900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973889419c2db3e786bbc9e836cc9c315952c2a79e475f5670c5588a1733f577e23": "0x5e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784d1f6123736f0ecda66cbf97024496e477abbd149acdca2a0b97dfbf4305701": "0x006cfecffd2100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bf82afc94e60e8e44984107a15de7c79c5cd46212e124f819988005ea70d0171": "0x0024d4d8ace401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a04cd86b7efbeb8680a13bce1a93b2e19f16402332459e8c80402dea2095b927": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c368a0b8bd718c10f9512b51e6f8d85e85e689dac41ce3f8a489a0845134c91": "0x0080cbc1f98e0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6c795fecdddf2c3f90c2b3555ab3527aaa65334d23ae0471aef7c1abb867dad": "0x00e00d68c14700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714f15168900c74f6fdaa26e7fb86f24d47389c405a35ef21cd1cb67beb14538f": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c4131889ecaf3f77e968d226c24fc7e3b5a9af8a3db585ff02098e4c184262f": "0x000aa1d3ec1f01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46bd8ac4fd8983e3027b68b394e75c33c2cc34c1f696a48b622fa31515c084580": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ac227f883fe9cd6bca1d0b960897bc194fabfcb0f1f5e31501b8585beccdf9b": "0x00d25b92b61f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c01b4737f44e1181162c5dee8ab85ad54a2d4b14c4c8e4e5d7850d318864dc99": "0x00a07bce160400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b425d96534c5cd2686ba5ee1d4dba5ddff937a69a0509cc493188171f74728db8a": "0x0000b605da7963000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0e0b36fe998cfe2b2d3e35d4e59a5ca28cb814247226530df4666ff535f9d94": "0x00d4cb74a2ed00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733a0c15def809bbb275381d81721cac8302ff8596c1e477a5a99050e36ce3beb": "0x00021044ae9920000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751582819925aa3767b50eae9d54e5c2ecb7767be53844a258c0f4ba0c764b164": "0x0008711b0c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9fef3b71eb30622fd74306027c4acd769b38c693054cf50f82a3c47223682bd": "0x00f8199a6c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ce77f3920e5d25e9de252e8215a08edfb4a44a4103acd6e687af18bc22e9b4f": "0x009693c5b96000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e442ce51af228e7fd3018ace5bb7df8276bd0f5f44b781159696de41c33df43": "0x00261a1f702600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975eb7a1d98c91cb43411c000234441fee0e15ac6c042f014f5aeaea948435ead0": "0x00f6d259bd1500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b412e382b06c7aea3ab24617e0e49ad0f61c3be8c6454ce7244387c4fe514dc2ac": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397840afee2a276b201dd3ae19e5be94a7249bc5703b921d3acb1fab785742a0552": "0x00703af7eb0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e303a11455fa9730d42ebca802b41d61822f094d37558160feadade576c45722": "0x00bae4d8dbb77b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397456605a8db0d399f42aad60cf7cc4f62a09bc6f0dad991cfb1e4c5e7bac9f980": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708ec9c8cee8c49ae1f48d4726386ccea5528ef4083d08d055497a3feeb238b63": "0x00805ce547be00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979dee234be5196c23fcc660253e7cbb4a8fc11558781cafe37f52e4b73b62c316": "0x003278ff3d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397617134293d892cd046e9897e2b2d5363ba6be061df232b35a1800f4ada770688": "0x007ae857fb8000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1254621a41b048186879661e6913fa463a8829960aaed78d273a4195a915f60": "0x0024858b773000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1dd0c43a0ee986683fde2c9b8d5bbdc2c87834577f917ef64d821e818802fef": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972794662887f78dc7bf10783a9c60091886495cbf652eb84a67d5abbd616875b0": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f845619090323913773eab17f7a202431c1ae18b33703428dc8347a31f35f3a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707c4c5f55f17bf4ef73b2eecaea71eff731ed67e5688d2900dc93e7309239de8": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397838fbbb44e349682762c61b66df98f8d9476c2821d6f65e3c24b1fc728cdecbf": "0x0012fad10bc000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397494e067a028bc3a8e47d084948ec9df5765e7457051829cd8cabae0eec98aca4": "0x00523940c54600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee5def829790da3fe137b6fa22e21659a2403c17e6160f355fefc6dd4c28471d": "0x000472e3852901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397219f2a72e3088141e9dec06d557dba6fe23c6536aef89e2d72d46f795f3aed82": "0x00e04fa9956800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973afd5c59626469b8cfb8ebe9c47b298431e993f13c173b8fb966e2355b00fd30": "0x00b44bcbd90901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977834726ee292184aea17e359bf9ba2d017bbf04f9296813afc3e10519185c890": "0x0066497f817f07000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b485e466c0bd956930824487e2b329d1b833fb8dd50faded32d2e3d97b0f5b6991": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b59724f99572f6d006788cecc69e2c75d389e7a2b87c2a4e107f0f8976dabcb6": "0x000a357c2b1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731468145599563fc7c20939d44054f9dcccde2af2852f44fda25e21f07c8e618": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f7a7a51b59231fdf58397d7bc8ef6d86619d726d3387384204fd520f1d95967": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e44e9d7193a80054b84d8ea91773255bcd1bd60697c69c5e3fc3b7fcf2c5682": "0x00ca73a98f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7010f1fefc453f313f79fec58e1e58bc8d3f57cfd1d265988e84624b162b90e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c99b90a765dca9a7c511c137da7fbaefd2da371db78ffa2b448da0f214b615cd": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9c40705ed03023fbc4a9ee0b27bb42d19968ffc36a7c469f271345958282659": "0x00fc5e9c971e16000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397631e8cb77937226d5d564d41afe26f70cbaf5602eb53df84c63c18d9d3548122": "0x002e808ebd7701000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824324b1cffe3c67b4fa4fac0de9c461c26445222ccee3bd2f9026cc44e907699495": "0x00e0fe36966e94000000000000000000216794a005000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db91780bf30890a909a85d6a5da4cc0eb7fb90e1e9b91c0e992c56a808a3a6ca": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6f06fbe7af213f9b5642cdc32b90b1b9d41267f1a1f8760e5f0397efe248648": "0x00d6cf06ca1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979475d97d3b6ef68496025b690fd5272eb941af4f2206c19b46938372f186d888": "0x0036270f8e7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cdee41febc10da3b4cca5d65fe2f4a4bd224236e788819f0c9b2d423b975d02": "0x0088c596351d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b496f85828d8121a93de16b74433c25880f151c4174a07c8c7303f7041b557af32": "0x00825826b37f12000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae9b17db7cc854aa34f008299f73a1d2c75df7d3b800f954f0037d22a6909ddd": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bcf53ea60f2f640e33f7365213b5f206041921286b5e959534d2d970573af95": "0x0074aa57de3101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978239f70820c30ad94a520bc62ec9b3283165e93aab94e858b6de630a7ead2b23": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e762920380084e64ca750c8d8403a0a5480eef29d2303a76fca9ee5270abe02e": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243916c8a2802d08646f0782eed3a2fbe48dbdcaa5034109b4508cd0aa3dd0be3bd": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764d2ce7d5323ca206f861f436f58a7c4d89df57ed5e6d01db6f660f47defaf4a": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c783f9dd5d06ba309c7fdbbe9910caf92b5e665400305d0870a68da045091b1": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714a4b8ed05d5e419065d4403c40dcdf2c674e1b470bcc0bb8eb200fece975256": "0x00b8ee71e14001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977eae2d7b986f6f0f00a0d7a9b1080a0b5cf1699bc1c569dd37fb3f48544645a6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c1dace57a4226763052ffc92b8ed478bee699b2bc37f248ca16d80d7f309978": "0x00205917580d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3a9efec00d2a7f5a39d5f507e9b4c50686101c56dfd8fe9c54c3f6b1808aa1d": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978548554a9ab820870f106bcd74980dc046336a4330311799af6029e4c2f5505f": "0x000c5849192401000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42f9b131df6072a83ff8561a3454c091de778151d8da299bc6a35c6e0deb7326f": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750adf0ed850ca74398086cc5cd762423fb466257daf32b200c6a9807bfd4913b": "0x0030b795620700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970772bd24748c2d2b129168d0b23f6bd99501bfa237ec122b8b40decbb4279de8": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397731c214051abf5a2802015d2c71bcb92b267c502c120248e1c372993efcd686a": "0x00542cdad50100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718c10d31a81fbd1c8b017cb0ad339e536f675ad25a03d480551794c4a195755d": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970eed3827be8f759462f0ae66778195e788ccc72760e4b68310aab2406e4f20f6": "0x004cb4d510fb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7c08bba3a4378c7a78a42d97449130b9a8e9fefabb32c36dfc64c7fa1e156ca": "0x00684cead73800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740bcde914591be0ea55c5479b52782e7dd56529025833a7d6a5369f038ee50de": "0x0082663a29ff6d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5fc87bdb9d348ec4734060b29eaa3103bcbd13dd50920ef1e46546f77222535": "0x00142a8aecdf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397128f837cb10eeb57c4f8cc42cdaabdc935830b39ff751a80da7ce49d78d7c9b3": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebee9931da17ee80f25b1eb9e6ccf7dea2ef0ac49d696b5e0e26af071b2745e3": "0x00bc7c65071400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4513e1afd2ea2cc1b71e86f80ee1b4311c900689a1064c8008520db41317851e1": "0x00e42b2c22294b000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a0c9c6efe8ca0cc3abc38a67b8514ce3f0b61fdc4ab6f4346af42d4e038d671c": "0x000467eeed0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d50ac3f8e592913630d151a4474dab38801026db1e9622c08b3ce20a98208cb0": "0x00ba7a93d51100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783295360e02b5b2a382c977297d8d2ed47b1b048b5dfb270a101e18d2da0d781": "0x000449dc7b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a396cb25d2bac9942b5fc1eb7cda5874a1b126bb91d263ea7cdf500a5632dc8": "0x00f41015e14b04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397184f068dbb18ca09fe72241fc47e863c3c00bc215eb91a7b6c1ef5ca20f54980": "0x00f85e3055e100000000000000000000", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x18ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fd684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e17968195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e9411a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad820018168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da58009", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c088c440ddd847a1c92fe44c77cd4dca56c62bfd313ce677cb46137f3a6db2c9": "0x0060f86c8d0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be0255e51897933ec18f6cf9c44cacadc5e701a91f7d73bb5fc5574c6734e326": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b789ad9da19ac5b75e329ce138ddbecc6de7813f975439e86b6e9f2e48960e2": "0x00823eec0e2501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726bcdbdc088131dc85cf2674c308c94785aa41889b0ea0ea85c9fbcfa888146f": "0x0042224efe1700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42ad8c1e97d2c8faa7d56892254f9dee146f73fa3ba3cd965a31c8d630bdb194c": "0x0000434fd7946a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754113a167e5bc4ed3ed42f51c3d43f706b8fc845740cde3d25d84f7ace34e11b": "0x00da07bcc67c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d797007499b97b31a755ff665935c0b995c857d826ead3a59a3a799539a2213b": "0x0054daaab8531a000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a77acc3967bc83dfb00d72711a6f2aa77984b5c99143281b5430c58e5fbb4ee3": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f33a63ba672eff6bc2f676da96d15cfac312080df076d147b7c20e054b2d9868": "0x0088fe199a3012000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3fdfd0d1a7bb99dc2cabb394af9239eb2ca696d2c753aa6108eacad1571ab3d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746acb5b327ea208f0f577f5d6681d3240ed352d22221fe0ea2a331386132cbfa": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f24ef5227adf7dddd6d555b0963d84428bba066774f916847e44d8823b9855a5": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970add826e870bfea68577d447926caa3ae6e7b4c997f07cdc870f3d3360472602": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738bfe96aae343d135c2273308dfd12f5dbd02f1289cb885b35258d1f9a0258cb": "0x00a87036668100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b37f60fb942eaf61c64ba1780e41c0219842762d37c0c30338cdbff69fca9789": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d20b09743bed65f6da3b10858bc91c2fc590aff93267f22250b60be49bf8eafa": "0x004c343ee04c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706a3ec78e99bffa75e187aef2a1361c6e0d4c4a48be04fd6ce98f2737c3e5394": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b17271aa28133c9a5469f43d3626a0276105eac4414efa545016c66ba103df99": "0x008a74cb221f0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b038c38e469bff6842d33970f0f7f4e98bcedfd82246473837f8132a0138db9": "0x00985db8783319000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397999cfebbced3c77cf6262ba4dda9b1761cccade66bf9c191e7121ee93e115cc8": "0x00089d43ad531b000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48f15b4cbe531bc6b239eff53a34081915e2594df62cea3599787edbfe2066d64": "0x00d6cf06ca1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972048884f4cf97c937234e1bec98630bf96bb9f9ba790dd0af3b791a638b01ea6": "0x0062ad4a2fcf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972abccb6a55a5da8b67bc3e90ec438cd5f38052be4db36ee9447072f1f9e569d6": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973cbe15f62ac4e29402e2b414ca66e19dc1c8bc15d86390029dfe4f7c15ccf4ff": "0x000cb2866c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786c14477c78bf8091e15de92fa49120e55b0229278173c89c4e1e7047724f5dc": "0x0066172ede4c06000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b480b9435e656c8d37c51fc69e93feec2d159aab6cf5e888267a7108bb9b2ee15f": "0x0074e3f0486900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710297237efab673fab1df3db8426a623ad70abbb61f4cd59123de10baf0ed57f": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979afb5373093529c16a5a4a1eae86b2dfd5f94eb7d1d74b71a36bd3c98db638aa": "0x0094e7521f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397396320d55eb1ca81dbab001c5b4df2fd4173b74d8b53797c1c0d000e468afbb2": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742af40afa40e1b53e54063f83b5559c04c71197269feb0bd7a887bc34bb38e09": "0x00da79080d0401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e32f7a4cd6beb57cfba78775ecbaced4f048ef2be371e2599492a40ecf45e06": "0x00663dbd474427000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c63d41b77fcb6b03bbd9330f1a31d359262f165e52cbe8557ece5df5517a61d": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741b6152d7b3742371dfe34422edb833dd2b3f08bb1658116613f877016dc008e": "0x00b688ef6e0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9bf771203a3c05267f629e48df33bfeabbacf6e60e5eb08c791f4178ceecd95": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a69346652406feea422447a14e9d4b69a5c1ab51af78d3c234563097b7fc712": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e66c3ba225cbb941b76e2289300e859610bc70d59440da0d65dd3d5f54bf1ab": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bd4e1c68a9abe2ccc5b98c3f828201107fead78df6cd2425ff95e7c7bf972fe": "0x00f826855f1500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973493a6769216fc5e98a60b6eb723c64d2a2a4f72e72a9bb66ec7baa04bf445fc": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339747b4583d50fc1f64cd31dc8510df2aa452ef0b142f1c9feedc5f01adda95c1be": "0x00406352bfc601000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41ae071bcad08c3a2435a5fdc7ac2f912bf726716cc494430f9aedca5299f82cd": "0x00b638bc35ff0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978fdb892e0dac5cf839f29ba8dd52fb48a8153594103d94f893518cc9dc0b548c": "0x00e070e8b01000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b657973cad9c169c1c62126d0894e86e9f134182b99435fd1e9757d021c29832b076646": "0xf45475c15d447317b7de38972656d207e362f7fa4429d665ce10a9da2ace254c18168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da58009", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978db75a9da798262251e0a1662530510b292711075e9af9fc3de5569fc94fd5fe": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f50fcb27915225d87c756576219368c84cfaf086c745e40bebb3ec1bed4362ee": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5be522954f06d16baf26abb6010765f60235174d123dd1080390012d93a0574": "0x0098d65615a101000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45a9f66919e6f04d8dbcb0b1956c1b9eb750a6dbc08ebbfcca0f27f0bd0a290b4": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bca9a030ee36cd32fa6751d629d533bcf5f6ef13c3e9680b64f2426a9142cce6": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737f40ab390a33b551ff8ff69340dd07cf76ea36a23808a89baa49f0b300624f8": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fdd8b6058eff8e0f3d273ba92a773c648aee59715121b0fddd51d2e91a4e937d": "0x004043148d3703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9c9d550da30deff45c4b419cec63b7ebd63860c67544e8a2bca12b8c228e49a": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397140ff3e78e5a87925b4ce44c2b91bd65c00e46d5ebe4cfd064965f5413505788": "0x001e5c373fda02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c8cfaed86d6d385d7b20c7ec94e9b3bbe0cded2eeeb591b59e42e715c3296c2": "0x0002d580a17400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282438fce62c8e5cf3d38204b70e588e4d8ede1025f98593616e45843c7ad1d58deae": "0x0080c6a47e8d03000000000000000000a6ef7a2200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a3c5d810f32d22896fe8bb63cd77f9c3c075965e4502b4e30bddd91e6bddb64": "0x00769f7b7f5300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d67d83577a984ffeb93e107b8c74ef7f5a3dce23ec4502b958bbab972fa4f30a": "0x00d2a4642bb700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dbefda38295f7ebdde819a153e8b578cca7fdd1e95943ce7ac504c5f041ebfb": "0x0070720eac5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a2934c430ed73e6d6c4ab189b5507587c09df5344104bab1e4a96e9ccb81ca0": "0x000ec2dc1ab816000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4761f965d08861a460d72abfd2cda95138ba058d1d6e5d4cecef637d4b614e8": "0x00421e33e0df01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243a3a59829e59a4cfc32f5ce21b45d1c06c2e0fa883df5e8f261c0add2ca8fc792": "0x000c2a4df8178a0000000000000000006d243e3c05000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0cf4cbfd2bd015bfa98ec98dbe6971d64bb1ee2300612a2c5a8845682e1f6e9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff1238be060a274c5a2917e043f38ad7a1d533713d0c376927838569ebbcb46b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a13b3f73f65055111a283c3762f103a56e8b315b809073f5522996a221ccc92": "0x005892837b5700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b445b0fb57d713680efbaf7f194df25df17e793b1829fc2880646f6347a375c701": "0x007202ee615f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e44101503fa6c5f36602b0f54c98bb1208b7f52f3663e8a23b00d38a446bf9b": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706df00ede31f4c5716ee85e2cfbe38dcb9d8e00444c91c94af8c864e01b3fea9": "0x00226399efab18000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e35c7c080e52584dd84b45ad962c805d53b9887869ec1c34772e2d87cee858e8": "0x008025114d8904000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a0457a07d19fc10928d10961aef8996e871dc7fef5a78998a07e81ff1a3895b": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4099811b0d2cdde53295bd7a5ac1f4b30749317c0cd854d18c500a4f607e87332": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977fdea030349a680b7f024ae199fc624aed66a9b1afcfd7bcb8f1e9a5e0ce1dcd": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976138a4461802573af5b4569712452ebf1f4ebd176fa861b6c0f2ba960d094ed2": "0x00dee251231a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cca8ef3794c838c9ad2e1b6a7ac01ff2dd52ddf7046e08e534d09134b16307cb": "0x00dcea73a01f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bc6f4c280bc1d89aa90d2f3e4452c55401d6699a5b2d2b692b0e36c08e314b0": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768e74604bddc185f37e0cd7da36497bfcd6c365d89901dbac0f5c9868c36151a": "0x009c3a04d74c10000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b446d9a002e238ab1f2cf3dbbda3c3ade40e1711bcb55ba13183b3a07b17744154": "0x00989568830900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824308e0a2f0e999ae82dcb4bdc8bdf0dbfdc18baf86cd78e39ca7ca41c7c8dbfc61": "0x009c1abfd6ba6b000000000000000000206d8d1504000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6cd7f632afe15a36b13eac494a9c4a3bba3b6929895cf975e3236071497b938": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6ff6e14c28c9c3087687524f27442aae588c2572d9b1dcea5024673385ccef8": "0x00488c227be903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a1fa38b818648d04a34913261df63c14da6e70262e94766d6ef6c906396302a": "0x00fcc4c468c320000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da38ae92e6932dec243e7bb4ab9bbefe65accc09bb40b151bf88103413c82c47": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765922a92ae4df7ce35deefad339b8d1fb911b79d3517cf3b66a6eea579bd9d3d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a1ac0f66f869270cb1b5b6a2a46d8299d1d2366507777e07a5b776dbf01872b": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f894958709711e36eb4bf19d767cd697df4fa72953e454418a7ca7601943d76c": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970427ea5d7ef99c821faa6b9086bc40857a78b075687eae16a9a1a515f5f67833": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bebd5e78466ab2c98b3cd8b217bd0b4e6e7ac401b62e36a66e0e0cd5cd20a47e": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0953adfa9cdf494f868c12dc6989ae03c05c1828b9a57cea41e1a42aa3ee916": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab094d75d93e6683344f4dc710e41852292b6f9f39e66e0305610361bed2efda": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786f9db90362072607b0f46d3753ffc34466c291dd2cf6bbb00bd6200f3f88a4c": "0x00eca039a32700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46803c06cb50575a857d616b7a56a8318824c5eb070d4549cfe7f32060b0a4542": "0x00321a5ef36b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b291b35b5a09b938edfd10fcbacc615abb0c": "0x12000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973838dfa3265031479d77aec89ab08d6ee049eb33c42e1e5c8a4c3a865e4f8f52": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728857bc5d0be0ed73d3421ef5e50552c504b2aee52a2bfda041a3afbce46063a": "0x004e3ef96e2603000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75126c189a0c52c0032063c36617e81362ecfd24e7a5c7d9c3e259b6360e0f12310f": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310b88d78754004a285b5e8dcabacee518301ccf46c48d8de53da4821053ce798065b914ce57e256c7af66b34f7b442a23814cc1584bccd64550c8c7e0b265e73b7fd6c0f0b3e8b292aefe2d57f56eda3931aa84bdbc2afd2ad9b8aea91aab8ab74f749ddc93a65dfec3af27cc7478212cb7d4b0c0357fef35a0163966ab5333b757666c474e2f859bb39716a333ad449122df3605cf2d272ab876171d0a61cbdd07383f6c8cee12a4e767fc9012639af86a5cb0e6079a47bd0e4a66df193171010f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310a44806b5a6313e34e1c81efa55cdb8490770456364b07c1e56479ea940fd2ad5f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553108be4d59e1111ee942e04ee5449f4ed59493a65f9dd86edf0d28ad011d84d58001143c86ebc123cf0428b8d194ca19f43cf153792330ec1dd9c15325ab8f8cde6f9cf6346455aff64b7ca24e354ec2efd2aca023eafc4a5d9338d220ebe58245f17667171c3b0dd4476bb14003492aca83308a4d03df5e1c212605c841807a6e4ec2930567b62a6e88ddd91d65eb31331882234863fb0a8a6f46098aa45b9c5a0e1e1031c99a84bbdbca5c5238696791640981daf65140360dab49a457619b1717c5032a7bb8c6d069abb4f8969999472d20efb052cbac29c09bab99b6bc9b3d56deaa788e2b9ff2b707cb496b9eea85f891c723b489e78a9e2275444af678d304ac4c9729f118f6fdfcddd3eb272bee0228787f701757311a6e9f8983ba52b530ae277e9fae175d69912d4eaea13e25fa1df68883d7cfad302dabf37d5de6245484583d9d96ad734c94c2a8e35e9545434a0aaf87ef3b14a3aafeeb6f863ccbd4c283e873fb6464bdddf90e0b5a0f486535171834ed2c5f3fc9c01eaeadf05b7676729e17ad31469debcb60f3ce3622f79143e442e77b58d6e2195d9ea998680db8ca7586deadfd2c84ce9d5e964965b38e7c20d0d5609ce163c5047195f774618af72e08affdef4b7da68950bc485e933929281781fc12d524e98c8c1e90a41dccc83eab7836cb5f5d65190635c496470b3ce4eb9b505a711501fc3795e68f3659bf5059081b5ba8729c7944309194d9cf47dfc0dd9255166373fca9c1ccf93daad717d8a78b953151aa2ccfb93b48e3aadb7e84fc995491b810f206215414e73695abd0e874dd639c8d66c7b9e2af758b5b36de36bb01f0e95048cfb5e00f68ca228690381b9fafd16218c87bb0bab8ebb6db4fd3fd4994873c9b88cf3cad7ba0ea063ae5ef147ed12d8d69625d1e97fc5d527cd6c7d1140b5a94dbd4141f44f8fe5254bfe0680181070979efe72c5eb099043b30074f30dd0c15a84abc445c8a55ed29d113e0d64aad31f6877f7f724e8b3e2c384ae1c00f31da3720d47994cac28b50ec77e1f824e485d02fea983bb84a15959ed55a855e7f1ac4b1491643c4e3afd1ce0b8bf479541e3c7b1329897f65ad808d9dd7264b5909a4bfb7d63a1ed81036900b804ca0797c809eafcdf72d44f25d465898c9c004d302f469356c58ecfd5a68fd8ca1da05e049c26ff34b9ab4d6245a3e7f8e11ee5b24d9ee930e1c7e5c34d912a5c52443f04e01f962bd8454395c0ee1b8120ae84fae4079c13510afe343fd4a4a5c21f15cb0902fad69e18053c9918e48f3bf2e6a8d6f27f9d75a727272c1143df1c5f17343f9b1e84785fa861bccfc82c0284fbdb9ad59a7a5e80da4c39364068f1623952a196e57fb177c64e4d9e22324b80e7682fa97f34016886826bc110b26967c042dec94fb4a9b0bfed13b5f8b4dc00eec7b3419ec165cd992745ac97a51f7535709b288163895baa3b70f2620c3141f9a16b8ec8714365572e4f9d2762cc1c4312399485b3b3bbfe113fe2b5a12a73f9ffb5b9e694b98b834750c1ce700978b737dcece0acb33c01cbb2cfda7d07c5610bcd95c9f1070eda832cd7a8bdb1e2f8d8482a7d9448011029bb098ddf82a98f43cd12994130e4104be878e56062763ccdacf8fe28456f23d5d897404d32408cdf87b1a095788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553107b8b42f8f879fba9a112d9ca04605f67400a687ddbaabb883f9f81a7f4300f10b0ec611076c371039aabd585ff81f6cea47e94f526ac4d374b52bbd234fe02b2f0f930f177891d22296f55fd8d9b521d24fcd482e5931c168a4584c79f7e934199a7792b00a63329a247f5a75f7c87f28a3802c566044335df8320cb9ad78665a78e5a10b37e92b89b2a1e6d67b562da75eb5fcd9d75001c61ee625a688b63d1180caa53a3404ff9fb0ae79eaa486f7afa9e1531b97bc81caea35985b9f7c3c32c66b23b00fef56bb26c023059b77bb70cc9b41b7ee3251f7eafd1fb5c34c5f671e0a6917ff1ed3d4f87949fb4fbeb3d175b3065e1a68ce2ea09020b01479162a9e8183157aa5a4a2aaef7d51d91fce7ef7ce3c2208112a8f2abe66092df1b96856208625541b6ecf1bcc521bffdf173a21433afacfae5fccb3bbed79840f8905accf410e1f04248a1ce9b70693cfb6c0cc7647f11ee112806a354fbb02ccba0a2a0d6a5f9c64ade09131d059bdd96caa28198319f67fbabff92d5375a0ae02389a4534c80784a52f3cda33d89658bb22fd0267c637769d4e41da86dd65b949bed8db10fc7f845a393f39ca5611818f89daee51ad7273bd7f4a56b956f95a64145c8fb42e80bd47cf56e5f6255c175819a349ea6b93ef127d763984b3fd714f31", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46e9a5da7dde01fa79265c0039ec2aff96ae63d59b060aaf37faf579e5a6239b4": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778fbbd522a82beef632d26afdbf75583c140078904f33974bca69b6d576536b2": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397abd29bee4c14a11f0aa43143a0993b9bdf19e65168e30d19bcfda29702312a62": "0x00749ddfb21500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d1986ed767cb4636ca6b125c8c9ac32114697c04ae936be6d789edbeb353b09": "0x001e1d3f083200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c71fcaae5a65bf0255ce6deacf3e688ddbafb3439911fbd3bf9f1983fa10b2ed": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d78d0f66f39f3ce821a919ae830cee7b860e1f9ea944f6236a557b1430f29ba8": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdc1e6732e6c17002d3b8eb8a6a911193bd2696768c323a48509f1c5520d121f": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ea67b3e5bb9d17358af6f0536f6e3eef0af2e813d9edcc3d46b0142076d64ae": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d367ee3dee78bb26ecdb3f1aa9e45294dc83f01829148ab473804e6b39868b3": "0x0040ee7affbf00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41b2027bce60d117bd23db234e4f17003f55d2c1e71c563d7189977ebae960ba3": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be70ab4f36364d4d08f7c4e219e91e4d84f459363414f43a4979f1ae9ec5cde7": "0x004010ff621b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fbf71142f172fe154b2f6983b7e9be5a779b2efe041f90a4142201779a7381b1": "0x00b4a102061000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977fb96e19a97a9abbb65e7e27611c201b41d1c3937a4a348a88aa8802e7ded7b3": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397641957b230bcafd4e9d85fec2269a91b9cb576d357cef0a1ad201daffa3fe3eb": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4fcc4f44287d2b7cf00d9a0bd70d0305f6e50e1839699422614521a2d988254a4": "0x0000ef73b31600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397687d40f133b6d35cb65e6d3e156a9df59e0864e76b1b9960d2cb524b61a006fb": "0x0008711b0c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c1890b4244c1ad184f2d1acc0a8113e323ca99904f84708f241a10098e0079f9": "0x00d27175e9f502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783e41ab69fcc6360e3faf5f571683d49988d678bc3b9eecd62f4bd8e3172438a": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397198ad24ea7abd142f6538840f879ee0acbfcc87a0e9c6ecadfec2b95ad9ca5b4": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bf0178260f084881a56133e1e9a480c4547066ddd56150dc7ea65db4c5f90d7": "0x00ac81fb215a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f2c25372b894cea82c59fe6058793af0f0fb88238370cdd1df0546ccc026566": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397676d70165cf4daff1fc792f7fe92396d87ddd02a1cc0814818fbc92d8c13bd83": "0x00b875ca5f0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d83465cbca77fe97b60bd273a0fe1feb51b7b75976ae96ff514d375244f0cfca": "0x00b02d87f5a900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d8d5edbdca700c77ecfaf64a715106023e687eaa39c1883de9fb1d3ed986d75": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735052fbf04d43dc62fec473a04a62d95a142af0e6424ab668dfb1c2337018546": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397951e5e604f0b4ac50af235475be167f8c5bd01d32a55e621bd972aca9751ca94": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795a658df039d15b0fbfc3eb8605b3c1b3755a8d1887e9a3aee13dd3c251b454f": "0x002a3246641c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737749eef475d9b6c42b78db934f2407dfa9910ae15e4ca5a75a6e4144ed75ffd": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f5ee55ed6cf4a86743411af8dd6002bf7936c5ebd2d8406ba48815dfa5b94a3": "0x0068367fe62d00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579738fff7cc92faf04763097eabf4923b8e53152b8cf4570d76dc5cef74607f232e1": "0x7ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282437e04b920e66f97ee56f3aef9106f0f0a6135c2bb6e89b4cc6a63ec8b95917f91": "0x00b072e0e023200000000000000000001f2fee3701000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978aebeb192944d94e757f0165feda76794f628c9c69704b6dd510bde683fe0b56": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d45a5bed19fd6dfdc7c56a9063ef487e032b6f6b7fab3f9d4fdf6a7d52170c45": "0x00f45c7452f600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e637df8d67b685b610f109fde312d604c8a9f3e046810ab3b7c5344d947cacee": "0x006aedf4123200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ab3926aa424570cc17bd96e2f315d159cc2b6298ea5abd09f51d6439eeed2006": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4178dbe11e427d1edee939cfac2b88892d15eac14b9f323a8a648efdd7875bf9a": "0x006859ef3b6102000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bea566e10311e2a2c11e747610b3bdf0fd9cc949a676131c2414c516b808525f": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4455b315c37e2c7266fd31b68b850cdc3a62cc793acb049bd41025463a6d06654": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397689f3fb366c82e7c85717703bc7c8b1af26d100b1e9601d6685e64be021b6664": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f712571a476b511525ee202cf6dbc60eb6682f00a5f35e60c920c8ab0c840d9": "0x00fa7c33951000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x01000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a7f900780d0cd10b96fb7ab0d779830a88f81d5e90602165cc364cdf9d2b233a": "0x0024a8be34cf3e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732adf0a8caa14c2b9aad34484c60225e17088d9986bcb405a308bf4d61243a6f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970257899c73a3575b8e830a99d13f5ca2d0d34b8fa2a41eb1c7eabfa305f7ce5f": "0x002ecc1f8ebf06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978cbbfeb43a25f4c787c7f4c99325a38e2d2494f1c3cbdcc75975c02ae2e58c5f": "0x0080f420e6b500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725510d736793b76b0fb84381f356b002cac2fbd3351d6f8da6999cc8472ad515": "0x0074f9f66c5600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40a41b262709e64dc9956e5e93db4a7e217db6ccff10125e3fe2e561a910e0195": "0x00d4d44477c502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca7e1d45833f60f60b0daabad1ec96e00d35d053a089c82392e3c9a6b993dabb": "0x00563d1a8e0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0df6465b4a29356069006b6068c9464f97cedf3c5af4aac37e0459510308a14": "0x00fafc0f343c38000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783fea13414bf90ff3514c2661be75d5a90cfd392522c19e160d0afe3786f93d9": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d562df676bd2c52b4a2f05c3088cfdbf7f4eab2d134c1f4e51a65c77a72424c": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd3dcac29fe6cd540604eb17684e772d7c2befe4d5244c6f08bd9a863ea01859": "0x008c2a02902a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d93fcde6e1a188877216133ee4025ae2d75b679b513a825c16ecaf24206d2077": "0x0080c6a47e8d03000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45c03fcffb1a72f0f8a4ac38bae172f6e7ad04e4f1002408284edd7e34f91fdf5": "0x0028f637af7c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e56427d4f2895718f985423534cf20984429a108c348178f0027d1a201e28301": "0x00c0ddf9a28300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6ea6ef5e123dbea0e004e5349da00a746fa1b02d24def5b46fa00bdf4bdd9fc": "0x00e081d2cdac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f8e25036108a3737cdb400351b5821f25ac461d277636a2038598d32ae636ac": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a34be1ff96a02c4660f24398fbed24d9d3342c4bb89ed0240da9bd9b646ee6b": "0x0010fb62e84e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d4f970d8a1a28279d491c098ba977d212429c93dbd054a0e44a6d758ee971e8": "0x0038e451d40800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e25c629f28ddde70c6aeb1d55964fc96b174320c9917cbc7c37fdcabf00b49f": "0x009cc874400e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e058165e7b87daba18f3ee9b0ba59a1a6c2eb1b5e04be736a65e5d330d8c1660": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b3833ad709024c7eeb1aa35f51cf06a0dab1026494e91c773b29620dafbd22a": "0x004a61a31c5e04000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4274f4f56888cfffcfa71b364015dd34f8aae3f0923122fbd78639f299936160b": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732cd7de73177849f23e359b0e4e1a431ec8adf11824823380a6b2f973fea2ae5": "0x00943d4de92900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746cae6626514282b1478a6c1b90385ed4a4af3c93e3cabbcc1501e5036a354cb": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a4f1593a4af4d545aa176623d49226c2913a29a0e874008cd3d43bc0f562ee8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f65ba9ff10798d73a65538a500dac5cd11494bfef111f88d516aeab00aaabf6": "0x00581c527c5c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da7462891e1f5029c465abc3db3d8859c5cdf57999eeefc8559bb8bee6061674": "0x002cb5d95f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b31ae8779f7037be320b905b79f04ee79aa0f25cbda8c56024049bdcccdec6ab": "0x00c43733034100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397113b6b6421084df50c05c691a569ccb22f27dc28c72ff024efe87378c5ae94e6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977dc9dc6f9ffd18895bc89fbd4e6eeaae4d55580581628d83da97f2e45352da22": "0x004e67f401e000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4aa5cd4b3ced035011fec1d41b3e4ef15eeb7445794e20feb20f017e6f15347e3": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977eaad0b3c5910fc7edc8bc9d554f241193d6786bcf3b7a9e784e06501da7da8d": "0x006677ef716501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f56daf5420eed45bb1a0da2455d0e798c7589172a1ea32d18549022f94fe460a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fad1b8633c6a9fcdc646714045a037cf5cac26b0536c6eef1c2824bab9f6c613": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741581e7e97084ae0e3df8639275c7ee3cc95b45d3407b55b4d6a3eb6bbb93591": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775c32e20ef17142347dbb3e6b9c07a018d361cd8eafb3239288444733767dc30": "0x00f0f1bc9f2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a00625427025598cdac59fbc9c4fdee032c643e9395401b667a13877435a474c": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794f0460250ebc530349be56c86ebb55206906115bbbedcdba400716993b37765": "0x0020c9e7070400000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973f2f1ad465be4ffac30dd8bc6c522f448a2cb87524bbde8ca93c81b7aeb0e3df1": "0x7a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c21e46a4f95cf6be57022f95b71a21babe2bb5e047fabbe9fa76163596557f68": "0x00f41140b8e601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a464ad173716f23cd4d29b712191fddca8ed03702f5728aa8190e309bd37a6bf": "0x00463efd4e7f0a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397350ce34419f92ac5e4aadce1ad6bfe5a2171c1ec48595dd0d8e580c74ccc4c6a": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dacb479b4507d9c7e1c21f35ab7a703a7511d7bf98f3b115ef29c82153dd1062": "0x00f889cfe91900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8aeefc6f35613a5e8f7abddc5967428852b1b3431397e2b6cb2f9904dedd60c": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397309eb3856325e0cbba9a4622f164d2aade71c9dd494cc38bce0beca078a52374": "0x00da5001030800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397208857b2443cb23269809fc6be935970b76185bd18d1934161b684ca1f4a5fb8": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dc94182f190bbd123677024348620bcea71e2347a668f3cbcd483c6aeba725a": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b43eb98c54660a94919cf760008436c8ea54b3719dd102a8b9d64613fc59afd": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfb80b1473204da6b416add4deb918834f23be1e39a8a3974c5a7cb4f3caf91b": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc3e81cba512445b01bd37bc8a5d6df3fe1369fa93a983bec0ffca32fb330dd5": "0x009e05e9abe400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e4b19ce4928ef434b3fbf8c3f0975f87031f15147828e45f65a8d7f4569a888a": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397599a0618518f265f9a41e572bc7c18b3e56a1547431cd9965bd74c3ffd4cfab4": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762caf70d70dff4ee00845e0e2432ccd220e4f89063e06fc77bef04a039032984": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3c4303637923bc42c30b2eb3474f889fa0bc4d8f02500c91a98fb05c948966a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7afd3d6d7727f426c8e78dc55156379ecee88660a457494d4d5995d52e83647": "0x0084df6214a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971113faa19e595512fca8633bdad681b25a04157a77b07771eaed3bf57827f7c5": "0x0000b9d8895200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243bef865eb9f98fe4d6ddcdad70a4387f9052bfd76c68f0468de54f9c5ebbb9a05": "0x00bc15368e363d00000000000000000020bd175202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f37ac791ea0ec11f2e0b230943db05c000787f261fd949b80217d4c0b12ea52e": "0x00801a0941bb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977303c831db36d6f7c57c5154db6549f630bd6ecd4c5b5d598855080a3975a89d": "0x00805c14b01701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a562f7f057219037f1cde02f406566539ec238231e51dda180f8c864569f3718": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793bd2e508d7c6e555aedfce64188302dc08bda8c3d29eed9c3c2d17a13a9d410": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b926c0fa693a009462416eb269d3c237ad152c1d811021a1c180f7ffcb0f513": "0x00b02bfd644301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979dde172dcbb58af329c408e3dfd97e89b9ef799ad5e6290045f992ffadbb12fb": "0x006e525970d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b48c627bedf5b665a011533431f7908df477a02bffd42665f9e0fa78dd470b59": "0x001a8f7a4ab801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974afa4f29ea8a3645510f108b51d797af283bcf34550b95d8f4cc0995db9c17fb": "0x00f660a1ac0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976fc59c3f9b2baa6fdf8d6ae2968023af80598e7e9b354041e7d429749fb54ef8": "0x000a8552081600000000000000000000", - "0xf2794c22e353e9a839f12faab03a911ba8d640d9c77979401862d05552af4802": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974094c90b2b2d4cc3d73f94454b13c4ed7cc05dedce8e3c3957fe8006b174403e": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971cce9fc8c7efc5f1897e845bc85843f50b8ab905dcfdbca3b0e41e171e3450ff": "0x00c0ee56871300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c13d97ab9b388dcd9c2011ae287f67ec2a734e8f11fcfa5c43c30c3f300a56c7": "0x00ee5c29a72f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713313b92cbbd38d105776580b4a37993d42f5f340319e89bac2e64402e8aa4c8": "0x009259f2f62000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0b7f60e35a3f769bdcc1a23a0d239f963154909bae9acd6cd3a126f87c1ab1c": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704c247facc695598315cf680fd4f0275fcb309fd63927f1973d78396f03b2429": "0x00a4d3b34b1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e9d34254b1dac0f346afd36e9b5795f91b67ccf43cbc831e2aec4ed2eded7b3": "0x002888565d0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ceb6411a20d14e2f8ce54bbc3bbe15382fb90f5519aa16b20a8a36f774ae3734": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775d38f78534e607fc04f2f1d4987bdc75985c135908aa63364ce5b760c8d266e": "0x000af7ebba6e06010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707293d1037f775269c9a939dcd23e601f1621b32ba4f54693feb422a8541f08f": "0x00421fbc872d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774706ec327722e38362eb548156ba934d13f115a84678958d6f7ae99cebde835": "0x00dc5f23f53700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43ec7149041154e4e466c226b348f31d0cfd0a04d9c49c0793267214cce5ebbfd": "0x008eb9a57d7c04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971711d7718bc90de4e24ce3a6a5918771cac684d98473b2f080cd1335fca597f8": "0x001ab8ccb0b900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397443ec9b89ec4fb0b9cb8dd2fe957f79a20ec649df0ca567644ce897128e7fdb8": "0x002a0967c50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7ccb50052161bf3745a1a8f808abca871e6b49c5284b504ea3217b6d67d7cae": "0x00807c4be53b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b70d73f11cc47e242ac92b6479929c10f516465c854201eb4d4beaef9f354bd5": "0x00da602c785f20000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5d94e43148b70d5cea547c1e96aae36782c1428ae40b2d22b4653ca79180fb6": "0x00bcdd8acecf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f1fade96f8397fe0c93ca056301d96a4ab9a332769a80b527036957cd96b70a": "0x002828fa960f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d01b7216e2e771dd2a34d05c52a39fa21ec828b99fe5a16dd3fc3c2c7658a9a6": "0x00aa0f2ad80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979114e70e0c527d92676f3f1336eeebada2033ffd9b44aba8338baf9ac6d63b0c": "0x00b888d2428100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ae821a2492fe78b656aaa949610798897855b11debbcf84dc98ff1535d2c403": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec410c2a8b2283351b80650eed4cbba1488c85e6562fae7cdc10e3191aca5c88": "0x0086e2798e5c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cce430926378f7e79c1912bfa62465f7402dcd3bbc33b9e0f5f2edc95a416169": "0x0094e5cf8b5700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397254da64a76c363f498f548955ed29390d64baac62cf17eb82c5ef2c2755c8d4c": "0x009e00db9e6900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397572991957ff07ae0004c64faaa63615e9f32499e27b93a46235fd224831184d0": "0x00cac9c7bec709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c55798df116b1ccf0baa04e1efb8f46085f22999029fda28bea6b50f5946391": "0x005037a4f80800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e5b2484937e8b6efd90830b8f4a3d034a5d97b0ccb721540ff14481eb92faff": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f542ab5670084d1b434a6273be6d345f61131ba637fff00a253833f6b13a9812": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744855cf58fe81d1192e997c6bedfe9f6f773512868292b4071fb510482dac1ad": "0x00ec670c037900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca4d1e5ae50488084913e7ee67ad6dcce0def56068b3cfc09e0680df69d3b608": "0x00903973206100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749b6f96e1e913088a5b6d8920ab2474104f38920f299a4570e79016c6ae538e3": "0x00aa26be1d1a02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733afb1400e7f03b47392288717ec4ab02d3f09c2749158c94d75a481b5f2a3f1": "0x000e31dedb6500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af98cfdf2893a8c2ae10bdbee53afe12766b209330e7af29082ff1dd64b65f4b": "0x001e39c7e9a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4aaf0ef180e58af6c3ade791837cab8f59cb2e7ca35e27b031567b1786e2c682b": "0x00bacad1767508000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b909b6d66e3b4e6aa93d526fa3e2a50ab74e7f4ddda98ce8f5b66cc363ddfec": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7a0eb14740d9505f75c8150497aa30288140f77db18383fccf94c7c75a73e16": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd7f9f8be1a06705b993882e10f2c265ab2efe01bea026ed8a291a9bf4efa5f8": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b459626058c0b37d2e3ed4dcccc5a455d890335ca05a7c23928f541398a76f44dc": "0x007acc2a584816000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397241a987b1a0cd489ba7116e7ef09244d9be97aa771971cd33c087ba1954836cf": "0x00e6d7efd75b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a655a7eddd163df9a2d117800ab73b4d2a5a58d35867329c1cbde0c788ea2fcb": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e657140d1a920f23cb1eca7eb9f038dafcae16396a3291878f06e7eea1bc3ffb": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9c85a0df7196c2728bfdfc2e953008be2e32f2cdaaba0632eb36e06c586e849": "0x00ce84d3182000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac98857ae1c2be58afb211e29382a9fdb39d9cb43223afabd384458ea00b9e89": "0x00daf6518b2f68000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43fe45af9325987842111cf3c73082d12ac85d5b9046ae82af38d467286506020": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397097dec1909901391d3e485c8cabe1c9073278c7d5ed4c5e127fe84243f730e54": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c347818b19959a3040a44d5c8d95950c3d6d26d24b63c206774cdd6375ccb8b": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e17ae3992c3ba8158ff787b2720f8c03c3330496670a8ad2f57b916935b68eb": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6f2435429ad7d62468466adf835f9669aebac74655367a710ce6761ca6d6787": "0x002e3f6ac61b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bb532612d6b6ff897f66d6da00a1ec45e8d5f45fb3735eca3bae639dc165b8d": "0x0032cf29595c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f31159bac69af385b7fb821ecf833c6564288b81206df77a2c8c635e3802c164": "0x008aa477502200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a424394373c6c3fb1897fb45a9e1745856142f1f269c2ee758ad9b1e5216496": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774243b854b5de27233d88f981193f66bc5ce0a784f8f13bb61fbdb54c7c246d1": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a78e85e139cbfaf36ec6fb459f0c774a75dc65acd802335421ba3b1528f7fa41": "0x00a4d3b34b1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c365d8602e9017ec0eced75ff43f01e71b1c86db6d578896f315d56438eda1c": "0x00a0724e180900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282431a7b36634518c4bd258451d3afca781ef41c43e2cc13767ade6d58216bb4b54e": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397944e83d0cbe1e54530543a1f443a8900f3d928afb6f932f733ca9392add701ec": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af8eeec065a60f9ff21e7a24aa5f32c93f433d34b7eeefb88069058c40ce8588": "0x007ef91cb75900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725b1864dafe40e48303286cc37fe44a386e2bd0a75fb99fb5572d75db488a726": "0x005acbffb90c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc8fbc8f36d7c033ba24ea5eb8cba0af738246c30e09583e6eefc273c6e60b17": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec2bfcf13209f2a799a982f16350ee072b71922208d5b9caa24e8ee0c675999c": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978eab154ccc600d578d30dcb99987c7d66506951ef94141496ebfecfb73767fd2": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b414729ad00c64650f9752e4beae474199b2e656b1fdc07cbd428d6268a8a870e6": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975eeab8fbadee245fbcf39cf0fbf793b03d0a83008f34b22595b6f204f2f779a2": "0x0070644a3b1e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4395065dd404b0e20080049009aba7f480e3afe7fc6b841d1f3ed80d6c6b248cc": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0f1b00de53ad151794f529285ff718aa45585276522efbd169f27347df385a5": "0x00927581d50000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d5468ebeeda63faa15d4ef1f56cf6d9b82d7abf1b2ee479076f611239c803ec1": "0x00e022299d8100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f669a0345ef1fe9b6613370ce6cc3e369f4f3aa1fc015a6f2c0e93a08313639f": "0x00a277755ec600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777e83d4fa9d010909c6f053f6261bd46934558d64169d393aff0ecce3238e92e": "0x00a60beb412100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397486e7d5c396f6b16a570337a1c45384f724104e19cef44a82bffd78bd66029a1": "0x00f8199a6c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738e359405ecda5406958218b29d94793d3105cd21bc44fe3a208d7b23f152991": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725738f9ee464c222dcc0315e4e29680ffc7a0b9b3d3f7ad395edac98625e79db": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777c3c21554adcbad3bd994b3ddab7b23a30a0746d730e9b657bf4885867ef9ac": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea7a74b16ff06d4bca35bea0eb3af9adb7fc16e9fef18f97fcded490a6ceff87": "0x002026ca459901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397247e60aba93bb4e95a1ed1001efe52cf0d2824057c24e1ffd17bd6068c590598": "0x0074ace86b0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fec0b94ca8178c968b9b97f9646e455327a190ee40666da3ca1fdc23ee51891": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf02d0f399bb9410b2fbb5ea3cd9633870e4df2ad05983c6dacb974fa011e4fe": "0x00a209940c5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762a0130eddc82e1cc85eecdf5d1aad6dfb05c88b0a041460a01023801da24b03": "0x0072e25c62af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397950b62c8c2fcd768e9e1e27632a49c25fdca4cc93bf0262a145684760055ecf0": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d79760396dd611727f7815b8bf416f532f3f071f5bce70f7abecdd7912851627": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f3ca00d17f4cf1a35877afa6b679c1ca4504cc530e80b3e0bb59ca0eed18606": "0x00a673ea82c503000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397418101d136f0183e0482dd85fc44dd66f3e72029af30d2cfccce7578ee8189d2": "0x0068f8c974a501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf9dc3ebcda3ec43aaf5e8e9167c11485a3a06fca9b6877adb08f8b09409cace": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ba55bc9fba2f65fdced50f0c76d52c6f3d5127ee1849c0a0d0f45923ee03f2a": "0x000870a05e8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7ac865a345aa6cf53aade6558be29fd5d8b123cae2182351309f57cabdfd639": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707ed39eb3f9eadaa394eaff421a8ea0dec64daec1f3bbd3f6e98586adb597a2f": "0x008a28cb900a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b469f6a8b0eb22a3208efc7fa44a73247282b107ae335c695597fd1f8b0b2ee970": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397264c6d39e36e2ec355afed53260c0c9f04a1a5894bee33b5a59e75f4dfb7b5fa": "0x004e914751fa00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e41a5976acaf8d99505dd5e9cc86a00c260dd483ffe7d14fa9a0e03945b22287": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2a57f0e793d52d31bb64e1734e02a2a7de69ed835cff14b64f976affaed6789": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703b4c62e6ae85d5f04cfe9a8aa4cc2b02e72e476c63cfd7932d85cc7c7fb4ea4": "0x001013e5a2cc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ead1ff86cd47046a9275486c1d10d8a8b919d0f5a5315756e5e147d591a99a28": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2fb9377e9aa0383d7892dcb6e46244a8544274506836220fa54777c320f12d7": "0x006ee223f3bf00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579739412d46a6e26424f7d213c86bb856e50ef41be31798b3b9eb38f0c4eaa9a4137": "0x7a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab1d39a194ee869201ec3b10c9558c9bdccdd395795762425b6f6ab6143d1731": "0x0068520ec50d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d19a3fbf6ee3717a5f4e4bc2e2b2dce2f4467983acf5018f4c397d463ba6a9": "0x00e077afb64b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975cc9945283f8e3ef68f54dafba8ee02db2492d5d03c75ea0514c68d3131fa02a": "0x00e0609aaf6f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6bd71bf14ad09c77fa88ec5c147d9a67e970fdbc5a24040afde32592268f95b": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7f2f1c5d9f2d8d34c72c613eab7d500f323c4fedbce26f158f783ef60d269d1": "0x002a886f964c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f253c62b080f056ce32ea35b896093ea79f56952a7e1bcc72f4cfaa72f197b87": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e99d3a180e4a1ac3b38a592d5c399e849706e5c2f5c05afe5e779a3965dd26e3": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c59f68c284f61c93ba8a755bd3446d9a8d9ed56f7161b254cbd8c5b9b7f8801": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732db85578e133937f0f0208567403996a1c7a16c4b3a41469998b801a6cc748d": "0x0010ea0504bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397156f66301bd5477c8b1aa080eb065eecb2978c10b53313a054996ad71ec8e312": "0x003c7ab90c2c07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781c663e621993a7614c46ebe2bb8fd9c940b621a31ff3c6cb90172e90d9cd162": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eda36daf5716638e2ebde28c55d6f8922b56982e7e3cc7141ccfb0a546764bc4": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7a6507d87d179cb6dd8a6408440dbea4590b54aebadec6dbd1cdc81b6ba1deb": "0x006296e5511600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b993fe69e716e1e587b8593e3cd68517840a77f8a1c14f220076264cb9dd416": "0x00e8d992a10400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977545f08bb7d65a16434c5a814b183f22668fd0aa80daa21ac76e523faee4b291": "0x00a61c778e0a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4dd7a99947262f2084dbecb67fa16b1e71712de7108dbc4c2d30956f3fb16840c": "0x00385308034c27000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e244c1cbe2d65a7655a96f0f8c33de639928895b26504f56c0608533e7e7251f": "0x00809403057e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee28e8bbfcfdcaeea827979324c534898cdf81cba0208bade1ee6873fda93332": "0x005eb12cde1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1a68ccfc3ca3db31a3f7026b3c1c4840b1d0239570776eb12adc780988a460a": "0x00e24758b00900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d72f6ef9e8abfef85979d67b0cd9eba341dc2adf558caf470c7ad8f59a2cacee": "0x007e4df9ba5200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba95154c28512cc1f9dda97f2de93abbe9b2496cd263b5b8f7903b80212414fd": "0x007e222bbec000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b38c3145df44247d33becb305b1ded0c77a6aaeef4797bd69f45ac857086c2e4": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee337d8bfdfa65fc04a1c45b590f576e6ec3dc4ed9bda162e745d93f06e48f88": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e686c48b040296b06a91725afbea8167e85166738a7a7d6e81f3c67b9162cb9d": "0x00941032be6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c705864a9eaca8b5ab0f1bdd3e731fe2c0d2edcf9840dccd8f1e1c26a4f81a8": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e240f38dc56f5efe1705af285b4df30a0872c5c857b9e570defb2c8cfdbdd9d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da768cf39883d590a95680d30d4cbcf1ba1b561a22d91729810374df88f5e8af": "0x00de83d2453e1a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b52ebb26ab3ff7278cf818d74e195ba894b0c8d2c9d8e89ae021802d8949dc5": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d37a223d5f348ccad327e314cda5f8110ff00ac6d914c066eccb4935d2072d7c": "0x00a452f2812100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d4891c7a8b12e2969a1efa9b9df870a014e03909d840f1311a5200ef1402ec9": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705d16ecd4103cf73e7f0ddd189583edc83f800aae108695c3dfb79f7a31e2542": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722f0f47a726151a340b8bba485a646fd17010aea5df9095bcedcee5678029d66": "0x00328a93708000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e813cd0251a32b89556d2b5c7310c58ef06ee3b3813bc3c7906664491de2a250": "0x00221e875a1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6ffdf368d50b6cae19a1f6ea8d955eaf5727b6cfcfe7a46c222c156c1a8e3fd": "0x000892b8f75a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742c5a2f58ae523569577dc592b07b53a7df0e57dd0754eea77768a4c4a4bd161": "0x00a6ffa0e4e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff80209f783aa7d38931d92308b7f7efe8e7939ee1907206cf4861d56e87796f": "0x005a3db8ca1c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243e49e9344ad7601a3591e06a19ac8b9c420f38d78afc7aada469d0d714aa54797": "0x00406352bfc601000000000000000000d3773d1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd2d091670cbe8742470be07d52affb6b78f415174cacc9062c9f4535da7e836": "0x00f8d272f65700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4674f460f7b34f738dcdf0add24cae660769792afe6d911b20a0aa0582f4854": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736c1beaf90e604e0f01b57c0ac8253a8b43ddc55d38a8d737ff2a3c40210d8c9": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706cf46b7c899a94641bf32d08a43faacccfc7b78a254841685cf0060d500ee30": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8dd2d6a58c524edddb4f2aa92f657546b7b857353038864f34c4103aed0f730": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5d9c959441d9b447df05fd87f37d96ab470f72cb45aa6a0c6ef8ac5abf316b6": "0x00c01cbc746703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b51cbf678e47ff7e6cf78d497711d422508bd4e2ce62db7333851a4647073102": "0x006ee223f3bf00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41db3b3ebb8b6ce760c92dbc20cdb0ccc8f0fdd04fcc08c52fdbdabc31f91c290": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e761d62201ba910868a004f80251e3ad3f716636708c387386275af3afe4dff": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dac29e0680477be9923dd27793e4f2f31f959bf0f4ecfcbc2f514876bb720633": "0x00145319b51000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f265d301ba00e1b51f5ed8ac011c2f59e02fcf806c1db9da034e35dd1a5e14cb": "0x00f2b28b484f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c47cf22bfe24debc85580d1f7c1590823db81785865e47fefc4a7ebb63507fc9": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c43fedbd9927be2397a0fd962e74ceb51a65b8e5d5f1195254f4294bc12847e8": "0x006ee223f3bf00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d485f36bbf2cf79c89a72fbf8a151c33189e8866d749738aa416ba3b6365fbe9": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4f1c9015ba39e0866be17d362fa23c08e0d67f34ad44fdb8aad9fb6d98176b7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9b252d0c8edddd6c3244639e56050b53e8d9129aa09721d341e164a8d66485f": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971766ed4f76b734a2c1698c5f71b7efdfac7c193f7f5bed22e0cf3f643fa248ef": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd053fa7e107f1c0085c942848ffd2e32e789b5f6f960df491f967a719fcc2bf": "0x007403bcb30400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d046705c0e73224788f7c8596fbd6340f1a57168a510a60e774145760a4c04e2": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed03f9fe374a5fcfdee9a90b6fc5f62891866d0ccbc961d67086c02d03cd44e5": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786aa0c8a5e08c80f1e2dae097d3ce785b9981ad917c87610b67b22e3e1cd6385": "0x0074f6c33acf0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0c5f8fc4ccf949eae90b76f99913a5e34fb34ef8c406a69594509aababc5436": "0x00d4c710ab4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397394ac4a24c2edac23d081d43d15d584086e8d76b7dfcfd00f9cdf97d2057696c": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f21476e6b819c94192148710bc00fed733a2750229b60cf41541a74c7a0b007": "0x00a0a4c029bf02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d16e733e71e80b67a3df597da7e7e22a79b51b582eee506a6bce7c9b24f5285e": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e367ea0514323cc24f1ad97cdf1b7129de3c21a44e64b56e28fc29afb9676b2": "0x002e7164960600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40d94c0a4170857b4f1c810d5080a216b36211806b5c979f68746edeb95abc9b0": "0x0076aec8f5abb1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745e97712643393ea51bd32f8ab67bff2ba4ce722275125742eb8b467211553a8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc27747d9b01f6ccce6248bb60443560266587411371cc252d5358a9c40cb661": "0x00b808f1f31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae1e278fec0eb51839b4e47203ef9fe238435bb43a302d23d8a3e4bb04a412a5": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751865a8f0b8afacd9748b22b907d7d30e2913762743706e255b5a6ea0d39d24f": "0x00d0e98a070900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397937bb780ff2a3bdc3c8e45aa570890f12f6c0041e8fd44848415f1c41166119f": "0x00442e98972f06000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243e7fdd89a295dc1c99b9b12fbef35a876c135bacad08c10694369108a0f23c588": "0x00989999d6cd44000000000000000000f3eac39b02000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b485a5163d2fc99df3cf7a165aa11ed82b7d949d3fa493a0a502c21fe1381947f7": "0x0076cf5ffa7b0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9f34ecc172a1be1b15543cb010874184a71712c51d96cf6fd90625a135539df": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe6bdda1196e178f89fa0f4ce45804174b19ed5f5e23a7aee52615ce7359d23a": "0x0020750b040b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c85eb7f9b344e618e359c74857c27b2db8bd06b25f901aa48005959f819052ae": "0x00da99da740a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788da04c516bbe3241e8e4c686ca7ba807b2cb6e84b82531e598e8cca5e023a9f": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d5151651a109168f98e2a6aaa9d92cf888e14869c4a27d12d0dae683d9f6f2c": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791505e815ee86e260ae4bd65942a433db1acf6d5a8cc5c7d024a62f6c20348fe": "0x001cf28d372200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c34dae89d53d357089aa36916d35f35b7b5c4143d5898aec4cb4b2c8fe622802": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adfef38bb5ef59f31c94e3742b0a0be5148dc975336e6d5144cbe6ab0bbdeca0": "0x00c4c3f061ca00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f77082f9e3cdd8a409347b7a0f0418becd4b8aea2dcc713f9c0f8213bd0b1519": "0x00264979cf5001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970bfdd342898cab5c5d6a63703b837940b64c25b029acca77f257b81d2099f3c2": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727403f7a5e1a15a3b65a67cdd80177782cc2fb88e2b220494ea8771e360d2a33": "0x006897abaa5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397caf2a4ea0124d9bfef7513f368e8d24f487f2f00f9880bece2f88ede2d03f4d6": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788bc601dbeafbaf726f41866fbde22f3e1fa92c90091cd5fe732952aa1a475da": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397566f7b49435058cde0d5402ea6f96b7e84c1f81e63c5c64fdf04eca9db31942d": "0x00348d451d1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1df42c2368b351b759096bd75062fcc5b2d552816d6b903eb4054ccdf49a7f7": "0x00b267417fa700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978bea3b674d7b1a39b32b41ad2bf4bdec9fa2399305a767aed102551598cd4119": "0x00483fcba02401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741302bba9d7bfe4c4c7ba793490a066485beaf70764a46d8f9a8ad5cd769f046": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760b1bcd5e22bf543459bc0f52e11d6e9c3abf46aa753f44c356a60f1bf6f5763": "0x00a83f001d8002000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ee85a16d68e16c807ebe7578b256c0b8697fcc5dabeeca4c27f826e0fbee44d": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b154cdb472df5cddc74ff8a5f2d3f38e39661bf661a29fc230cdeff422452afe": "0x00461784db1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976da80cfafba089407e68aafd023b54c13cb3e6cb25201d08e9aad1f1e94dbf56": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b698da80c9dda47b701561ec023839fdb70392496f460011e023bba01cd7c0b0": "0x00aa03ee74a003000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f994858ce07080c01469119df43d75b97cbf89d40f06256f6093d1cbb995bc32": "0x00d487ed9c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785dae95854a080406380c47af1114e910d7623b214f587e22e4c534dce08b6ca": "0x00381c3a2c0400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41d4a42e23c1bfcaced1acefb3ffda01a2d9217d9e5cd2f18b27e4acbcdeeca34": "0x0022f2d1e57d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b5809cae82f537e0d48af3b64b4c47ecf9e25936c01dea087e3703993363cc4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792096f06493948512ad3af708a3c666a205c2df4c489bade2fdc05b5c7cb6a6a": "0x00ba12184d7b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d5d16db77dc11fd8c7c3548111420d036e699068cea6552bf2b2a8a9bd5e869": "0x000467eeed0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dc2a7559fcf21d1b2ede405ed7f3f4a73a58793b9af871ee93b084b5d6fbfef": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d10af48733a9ebe40a704aae0d735d34178aa56ad3eb3a2199c20d3ded81eedf": "0x000673b4ce1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a30b412ee9fafb4f7daa8730ff846b7c39b53b97f997c5e7c0f693e3b3e05e36": "0x0000d28398d702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7eed31ffcd91f1c03060ff4fb69b23e67b66fdadd53b3ab20432600ea849b8d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757c7aade2e9d97bbbee153a1aa3b7f560bccc754cdd3889569a2b4cb4fe412d9": "0x0018ee47a4d000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282432ad8c1e97d2c8faa7d56892254f9dee146f73fa3ba3cd965a31c8d630bdb194c": "0x00f45658a0d7480000000000000000002029f5c202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba91928aee0a5159cf240472dc4c706dd91c54f0a7b13515296ecf34b73f9d84": "0x0046e6548f7a01000000000000000000", - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b021cb75ddef6ae4200cc572254f41260aa063cd24b72b7ee3b2c4d08194488e": "0x0066497f817f07000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d64e04c31a1edad60ff60250a633b76600217b7c955af0d283f2892b70fca982": "0x0068d9d7873402000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c2b2424e2527c03b6888f5d9427f230a0c1698ebd3673a3016455e99230e3b5": "0x003a46774c0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d4da215ea234cb18abdbe3c98510b549b78d76c7b15ab8ad9f326c6bf906d82": "0x0020aeccd93000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0252a5c375d5f62912b63635d8200ea060ba5bfe4d91b3a64c4c0914144a740": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4e834a195636964ce6a22292f737af625669d46d8eb93fe75066ca842965e25": "0x0020f6cccd0800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4dafaf1257f056555f656fd352b8c2faa0647adb17d5fee73143d09ca6f9dcafb": "0x007a55aa1ceb0f000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243a868058bdf02b477f9ea4b522bf0af37b81192211dfe597c84b4ea83b1ef8db9": "0x0040f09bbce1080000000000000000001f57335600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b754f1c93c7537dc5dbe41a9e9204c510e7fa49ff520a2fcec76b0c4a8854d62": "0x003c34d961c502000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b6579730f1bab80e805877f676cab54e02bb7f2a9484e7e280fe592f6d4cdd424aaedc6": "0x5ce30d8c007d0a438c92c37a660b7709fd1ff3bba79c6c4832ea4107d266e0011a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad8200", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729023693c108d204dbd2fdd38166975f43685c92ac0967ee1d95df3ecb05365e": "0x00545a7c258502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e1526ece5025e3f79e30a30f3aa0c1a91d2859326bed81243a76efd0ee73e31": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397255cf0548fe8c7ec5004fdd911aea73b0986d1984d05e54870eac2aeb805f7ef": "0x00a0724e180900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b496ee88669be2277948736ed0660ccd2dcb99fb593c5bba6545ed67d0496d0056": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d4b93efedd7ccefd692d68487a3f2594004e3f1f0a28eff2697afcefd95ebf7": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44905f3de32049494ebca6cc26063eb29c899f8c0f64271bbdf2306e09648a579": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725f3e012b06c14d2535255568c6439bbed207770862d59a0d3b3b15d4af74909": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3574065c59f306ce90173fb8afb9f25c1dc38a5e8f5dd67369861fd46d5ab8f": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749005344d26261af83386a28d0481e7a49a1fc77ef7e6476b6ca736cd2d92aca": "0x000892b8f75a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44755bf64e1c024db208f3f22f77f1251cd56542a7e86216bea8abc4e7cb839ff": "0x0070b9648a5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e03aee2637e250a68730a19c3d2aa32ea5eca5308e001ba1933052ee764ba083": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8e4a2b960ce19a612ec799d97c8932109c6cf5090f077395d70520f87a55a35": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783726ef784a62502f80d868f6bf3f8f855d612decd71567f0c48161285d080d6": "0x0048a2f99b4a21000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774d174fbb74b8cf399fcbdd887b28fa8405b052dd49dcdca8384a61f379dee4e": "0x00a06e48f11100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd57478a371109c76d766e8701dae7d3a37f723d6daaaf24dc56dacb1852d65e": "0x0064eb1fd70400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397982d3b2ba19ab22b066122019c56e78f87eef4815ae4013ab11c4c3ffd4dd6f8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a248bed519bdbb8411f05be7e10224a253a09c5dc0aa131a538a78dbb20aab8f": "0x00a234c7d60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701a5746f2bf1f502927d1841714e2e78af0eadae74b3a7b3c11e01a4f37e3ea8": "0x0032d33d7a2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971190d99b4a99e01d3109b27b4f5bbda8ed442c7d50b5dabf50ed0199336c03c3": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab3041149c4f7e9aa0a25dd2a48378f2c8a824448684c05aaf19d24751bcd980": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6e84f914d4ce27d0ed58e69a5b96bd2a0747529a52db948afe38d5102a65021": "0x0000c8e1424000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397028beaaa72eb0285cfae6671fb9d9a4e53f0c0281c9172e0a197b30ea43c211e": "0x00f05585cee507000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8ec80cebf997a1a30cbfd2fbf16cee87c6880eaee10994cf23d05de31a4e615": "0x00d639e9f10000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c57cbc5283fcc7d20ccb0aa10b001d59366e6c307a39eb261ccf9dfe4aa50ac": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45ef64d0573364983dfa298afbe09486f27718e4b79b34f2f8d75a9f46a3d590c": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970265d2c27dd5bf7e0902a6771fe739fb639aa50c8f33b961c7543899ed7b62cb": "0x00e0d10d78cc00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4cac5f85b919511504e631b10c0f0f49c6c82501e5a6e19bd0cd7e078f8d7f456": "0x000ca376b6c800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48f4d52cf0e5baa6019bc9aeb9668f782555b8fb46b582143a246114a0a30fa3d": "0x00543b1e6e8b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e64ac94a423f38fbaf0806ac448724baacdb60dcf3fa0b28b1b62962f08f869b": "0x00bc082a630800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4114ea1bbc64ff8ae705f2e48730c3bb46824e1fdbe51e40738ee2c7b725b87f8": "0x00cc3bab081700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d9f6b3ec784a191faabc1fb4ad11216128013cceced07f372209863f8bd495d": "0x0010a3fee5b4a8000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973c6c90a3ba38fe11c932aab13fe8ce43cc23de985f861b688b38026630e4eb819": "0x3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717ad7486ea4e7ba0c56584993a3ffb8433d5b36907980e58ffb190c4a56301f3": "0x006044e269a307000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785673f28544e7a1371b66b2da1fa4f3492aee51e69d9ac134b7468eeddfe4884": "0x007c068aa30900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2bdaf1755900c6246a3f6541efc83bfbb1d0fb8d3301491d9daf5652a9bace1": "0x0090e5961c6800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42ef6d4ca0f83d3f66be9313c6fcbcc1490dff9d041c416ccb84a6e04d6dfa466": "0x0070bad83a6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8beffcf9a3f10e888776738881a80460d5844cf6c09cbd398dd8f79f59be6eb": "0x0026da6a887d25000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f6a3b982a158f205fb30470a7b2dc1d97d087c7a656e3279571c78d1b7f83894": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adaa6748d3ced35bc548ca12b1febe4a5e5c8120308e868f726641a335b1e7b9": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac35a73e4eef0b2a9432c9f042e2c7db5308027430afdb50272a6d0a49cf4ebd": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d7fa509df074efd0141e3b97599a13c815e3999e0c07d03c54b387d6036e9b6": "0x00d09172775400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b431b7722076e5a347070c05d6842117a06eea4c013ed03ad774d1e0e140357beb": "0x00b2cc7a673000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9f2411372716f459507d21d552740581165e79b69c04da4df0675aa30a5940c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc12f081d7abe1de939e5bdbb67e6f10ba3ac3286f937be52e7ef897cfaa7e4a": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe6c13e66b05e2f4cece5857ef52536ba84c107e031cda6e79966245869b61bc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397287e65aac01b7c949ec3ce08ba76b5b4ebf96e3cf55fe9dcbf53693ed1a54a44": "0x00d64e45001d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972375feb524cbc6ea00b3fb04ccf00f9e243bd571dcd03494a5491de7a05c5d53": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2e3d5770b0dc1f7e644a4d9c0daacd129cd072609bc31379facbe21885c65b9": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972aff94bbb0616aa5847232e425f5fc000d50cb070d2888c4aa88b84f2b320f45": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772f86816371f3cf3234453065a80b7c3db275398f765898d77f71ffad6b4d98f": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f843e82583cc74e8cae7eae1c5f1a30baeeab6b79341a8484c567a3cd2e209e8": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a4b808149d750966a59d63095c944f5e6d266b6f9a7668d60e4a568820c7fe7": "0x00e4c3b8db4500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ace1df625cb71a696f30548615fb7bd170dde5504653456c6ed2e9f7f2dc89d0": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974de8a7dc65573272a9cb9e93cd346361a27097f2ce913ca40f8216b99e2faff7": "0x00ae9ee8812f00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579735eea5fd9e6126eaa68a9bdd165641c070cc3e2ccfc49fb0b7827e4437bfb54ce": "0x5e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978461eb448400a344cb0617ebbb2f8a71f8b3269863c5103241effa2020940da2": "0x0016c10c435a01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339790cdab3e609d8845fdd9713984e94d839db2cf0f416531ca9774a1970e2d6842": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e20bd93804e1c49b667011e24340ee9ddf16cb91c2d9e2a6f3e45109312dcd1b": "0x00542e2007ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397228d6759232a475cd1c448e7a90708e7cc329da1acee733cbd5b202e55b86660": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ea747cff17180db4c1c79abeef6de72f2ee273831b7fb559ea53414fa51aeb8": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b6fc1a30dbd33604c0c75b4c64364de2897de5e912eb1b7fa32dc882bc4a959": "0x00ca8f386e0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df7c83a5fe3985a4860ad5f6fbacdc0ff84ebf33f21120219ac12bc5c960c960": "0x00b2c931cab702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efd36ab1b4e45c4394f040ec458b1664bf67b34eb8526efe23825878ab2d8c3d": "0x0098407d9c2100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c8f48ae4a42c972086f8a86102dbe3402370687eb58cebfedbe72ae1452d09a3": "0x008a5433260405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b305488542ed9e83488c7c260a6fe123b4f92d6bbb7e8421379d1d51ba48bc5": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdd1185bed7b2110b0c3c97ea86170eff785cfc3aaf61d260bacf8dc12666ed6": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a78939fd69c354d6be5ef6da739aab58f71d20ab82107522de06782d815a9f39": "0x00341c01bd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397210bc59c967e59dc492e6e8426ec11bb9df5506725826ce1f618145e61b33bb3": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2e8e3dde96da3475c621c545cf15952d47c2fce5cda5376f0d6348972ff3b23": "0x008c2a02902a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b485242d9831df008c158d9227b654ed49229ff4c6fb757b46962007df45a3507f": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fddc833a02d42951f63594d2041cc131ec8e5c2c70e4e9fae649895ab8f9a553": "0x00c8bab0cf2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977214b31910b07279bb52c72fcd286e8915a14fc78a92d743835cc8892098e8d2": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adfa5f8bda8f9cc71a0ceb4a3b054822c27cd4605826305af35fc4b679f94d53": "0x00fc8d0e800000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b89c1ee9307e44c5f3d73a029ff66d5aacc4594fda2f25fdf5c171dc1a7f88c": "0x00901ec4bc1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f58ad50d487ba1609645a6d02a5db0b462fbb208bc35bcba1a673d5c780262b": "0x007623119c4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977adcef9544a83dbeee911c7d9880e720c2b3bc9c1cdb4db2675c0ed661efc8c6": "0x000a56a64f7b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f088738d2b396c35b68fbfaffe4c0cd0831387d44a604185e40c990ac6b91281": "0x00828a13987702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a4f91fcb64332806d8807b4df54b5839ca7f4b676814145d28a91e2a825e525": "0x004ed2873c0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766880de76c39c4b25cdbb36304006989d6db2e45071b6e3f41cb4591859e246d": "0x00a2c3388eab0e000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973aee0fbd3e9007d21de253ca310762178e14b1bb9c11cde81c16d62b61d85cf51": "0xfcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a51601", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c1e185ead17919d3fcee877343a127b2972bebcfc18f16f2681a688d330d803": "0x004c44f1ae0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750ed976a5820820c21e1233c4ef2492470b9bbf679bbc0c3555983583c185f43": "0x00e86151d60100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b31b749029c02d6d9007613e8902e8bc0e362585c8c5873392859c80243cd46": "0x001c6ed5291c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397534f0bbbbf340acec9086589761a73f9e517fe0ee462cc2db2d01ed4e01660f3": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4e4e78ae4dc49ba352374a601eddcdea13c4b58f4924784c166a4663cffa81d": "0x00c6ac59614e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9a38bb0dc11b37441e961bb3053e3f4679a8a3a1a9cef8f6b4b041fd024aa65": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f99e8a4cf8fdb4937b57414de38fde110691159d60d9b55476e9d3fcc099b23": "0x00e4f2bb672800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397baec31b91f974ae1f5b617d61f7a66ddc3dce5d8208f134aeca2114c1865e8bc": "0x0098857b495f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d07420212911fdf76235c5f61b6900a098383a776d5a3f07d85ee74938bb9fe9": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d6e3ccff7f65603fe336a624138f82b05f9cf4fc8832022b5bc85aa56d79f26": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ced7d9cf225a1baa35c78417551bfd4de382f8cf0f5ee8f7c049eb22f6ced439": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397defddf7e4d536aa8fc7b983cd69598285d29016eff4c91bf7c07e68d2bf896de": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712a889e910303ad84ff685c95ec931e74edb25e209994a00eb590e7cc704d22b": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b25e6591b35337273c4e5da5a9944289afde945fc0cb6c485913efc048c4d4e3": "0x00c462cb9a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5dbd18addc00350952d8b9fa234b032cf2a5da43e674b7888774527a533b68f": "0x0000c16ff28623000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c5c0bac3f4ea355acf2e8fa2cce37ed01ddf54989c60f89c493b5a19452577d3": "0x0008385ea1ce14000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ce256ccf8e2bacaee33ad3eb81e58ced0c572ecca34ce1a96f9c9180ea5911c": "0x001ad45b8f9900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974134ab11c99f27e5c63a6fcf185f5156a519f8350bd9a260f54df75f4a6c74b9": "0x003497c6042c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710a515398090baaeeb23dec29f83c928ff80ef911847f93bfcd15525f4c6b21d": "0x00be174c553800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c67692bb06872b328904022c285952488bff6004a7e10194e44bd219bfe953f9": "0x0060a0b2cd0501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5d0f136261c43e2a5fab136c1374bdf9b2f5f828b300e05ae9bd55bda462d51": "0x001e20d17e1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397722be272c48a137139809b3450133aef35df9d45361700adda22bfb734c80c7d": "0x00ec2501941c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf0d7960b329c26ea0435adf5dda1e432b416104942d43aa4d38bb1042edb4a7": "0x00fa46ced01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b15805f1fc79439b05ca996d80f76cdcec9e9c64cddb9f875b9af893c9b3cdbc": "0x000e6e45853c04000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e7fdd89a295dc1c99b9b12fbef35a876c135bacad08c10694369108a0f23c588": "0x0000b605da7963000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779f3f6ec834cdf5fed55c15dbab533e2c05fdfe59dfc8c355c94b713f94119f2": "0x00704ccdfa7703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac0287e363931edd22b7c88c12275169f8fc0af76b9988011743c93f4405a39e": "0x001e39c7e9a600000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797344af557eb96e19e7d7d3593049767a261dde1196135e0ba6803b8cb287f4c6ec": "0x7ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979582ae130ddd5ab814cce3449ec4171d19627046bbfdcb58c3a30cfe334c340e": "0x00448fb25b5910000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786a48a94f7ad5f5425631b19df9fe043ac56b8f58a0ffd88c1f39d03839a53bf": "0x00de52b6088800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49199fc3778e84a44e88dfde4341db059f8a755e3caade4a97591878a75feeb60": "0x00761509960840000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c57348b07a00d27ab02e1686122e26d737c96cbfc8b2a6ba1350d35d6f775869": "0x005ca0805b8100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e72fc2442e17296bdd135b7906d2553674b6c8b850983e7163e6e07d55501674": "0x001aa84f47bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979946b34099750742bf4c0efb32cc68034ba4c70a49a521896641c365be7f8336": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976dafda8f2c905900238cd9456ee69472591d5bb121963915d09a7c9e2644f509": "0x007a6af93f1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b139545a06b47789bcafa4af28ded62af7600621f21fe3f8afaf23174bb60a6": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750543a87238aa5fbc162c418f9946f8cff1e3594671f31bd725a88c2ce1041f3": "0x002a0967c50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719230004512aa36170e94c7954acb1699882456a61ce5b1c7104ac86cefb7de4": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9cba11b8e4145a7249c17a903fbcfaf3ebc95d4401b29b300e0d39c40b9eb9d": "0x00dee86e138400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e3d9c1855bcdbe7a8a66c3353a980d054f1f7be07e550bc79bc4a7002020670": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1e37d1e9c4a10029a75454efdf29cc78ce3ac37f67b58ecd62ab9cd13bf85b3": "0x00ae839eeb0200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ed693bf8a6bfdd89021b00561e1e6442d501a00d2486676a98f5a841b70ec03a": "0x00d0f74e784300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43dd52beb9b7c03e80a2109b1ee1846cb734f35fa6d0eaf28455213407e64fff2": "0x00b22a00be2b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc9866f95925b4e09be15a0b9eed5ce133134cd9d4b2f3fca1105a5c989d1bd0": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397738ec5f118dfee5369e57df68b1278cdf1aeb953c38de28d8d6c232b6887731e": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebf95a8ff79550993df5b47749610d976c543cf6a5fa1dfca196612dab7abff2": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5fd87d8833f490920addade0da27348d7a3f303c4e8a034ab87158cac194a56": "0x00f6d4ce563b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397355d078a5123302e1d01dd1e7c99eb7c8f86172d62bc216f04a85bb5dd065162": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765f2d2721f22f9098076585b7eecdec26c992e3eb6c4a437091b90cb7e9b6724": "0x007863f906c40a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2dfc67da004bc4b30a3abf1b69c4277d4fa7206651e3deb4ef85309a2deebb5": "0x00a234c7d60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cc5416765cbc408b0be98d7691b05650cb5172b42527f49e7c1e3cb708851f8": "0x001ed109850900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719e2721f720779a5f15a274a8ce54c0ca15aafa6ac23aff37bcf07231f0b641d": "0x0050a95c091900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797379811c3f4788591e4c2618ef513a9169b12f56d0a8bffffaf39083cfe94d42d3": "0x3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974095099846775ba00766b04359feb6575c15ad0920132d643b7e38f31afe9a33": "0x001a5524560200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c5ba9d3aea5fc51cca420c0839761cb967cf7f3bfafc194d18468c9e21014e81": "0x0050248021e301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762e3dbd00351fadf8472daedc607ffbc40ea6a3041dd93603ca096c580bb145f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397100f07cac971c6d5187afbb8585ec780c7ca890e4dda3c203d2c5a22ba325e2d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397919ada1cf521c7542529cd4564dc43375d97a9b2fa1950fa8fcaf7cbd181270c": "0x0088ee10070d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef6cb490bc3aee2a892ede57b5c8f2fdbdc2aa908439d50b8d71ae0ec0652b3f": "0x0062c655919a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b77ad0c3a73c1a5dea31cd98fdf26aeee7f032dc4f6f8eb49b5c61e6ae2aafe5": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978673324141a3ce8a3d9cf2224603a477c162eb5082677f072a9f90661b0ffd95": "0x004069553e1800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43603027109282c647909f66a7f592b25c157f0bb0fda0b83310a40f34945980d": "0x008c53a2497505000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4027688a9cd8a80de20a46a52a6ca40be11af63cc642598d8fd53d979abc4eebe": "0x00eaca971ec709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f15d7748fb464fab25f1b8ee53c8208f16c06bea700e2c38b3b97e3d73f2da24": "0x007623119c4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b69892d350dde0ca3e281e9b514632a3798b648e615d4eb8baf2b5e03d8f5fae": "0x00126d3b2f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397010dacd7f29f94bf5fa40b740d218a4d4ed3beac85bc696c3f23d0ad81745085": "0x00406352bfc601000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e751211da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534abfae7334fe623a3a77843be58bba94be80a89546f81fb67ff3507775201af526288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534a9aa16ea96e59d8fc82b496362eb68947ccace82da2f1f3357142c072725de6a45f0f52623a816f811e5027d598195baad272d16a1e7864015b5fb75d2711c131888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534a688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534a588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534a4da46b0a90dae1c606c5ada0716b6eee1b8e325c34b12d747c1a1663cbdf1085958de2f4d49bcf1f53950de13d6e2afdda6a0ba2ca944fd791c5beb6ee49765654adf51a47b72795366d52285e329229c836ea7bbfe139dbe8fa0700c4f86fc569ed2733809fff8fc440d3fb8c4365ac7a6a520c46ba4a2bdf94f107bcc5cea0b6ed4e490d482667ac41cfce61cb6595a36e7b70cc16316f305fe5c590c89275688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349eeaeecc69264af49b96ee5fd971b691db67b72e2b377914ffd770771a81c0dc6088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349c586edf69a4ddfc5eb0984e194a549997f01e021ab413ccf08cf48e6f30cb2456beae5bcad1a8c156291b7ddf46b38b0c61a6aaacebd57b21c75627bfe7f9ab7188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349952ffd72c532815b3ec9d13291ad1989418129c3e89499a918e884d5bf3fbb03588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534971423335909d97596059c527ce5fff56ee5cae4e98dd5e80ccd72c974e223a31988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455349188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553490b8c725ae2dfca19e469628eea1e2523ac75b4b829bb40a27d0dc5c72eaa9f2251a7435849cb3175839693f7e078d1fabf90ef3fd38df8c50dde7fb5c8826086288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348b243411786f2b168b5024685ea3474897ef2e77b7599275431ba5229bf657890b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534851c2a5f648afea2a94286c17f6c60d16c9ef8511fa4ae88a54ce2748b6c8fa90f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348248454b0387f763dcf46291236ddfe846ef6466aba368f75aec3bb84b65b39f6688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455348088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347e7edcebca836ca101bc903f9433bc515526eefab65779fb6abbe9a55f5898373588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534730a55a4cbc52cec34989fa806a54937f6f67aa21641e90844560beee78246855a22d269578c78297105adc92592eca029dc325412e24786db30efe1219a3bcc7e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455347088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455346c", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48a0b97a488e99302222e811a82f1d945777ad9db1a458a015c10456f65fdf501": "0x000a1e02571a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736cb09a8cb840ab800a59b0b4d6a88d148380ca213a36f30cefb8b0d072e2033": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971065d5bb33ef00ebdffa67296456a150ba43b9784f3d52d584c39661b80d7860": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e08ada799dc28e5da40c3b4728c8c71a04479cb8fe7abd93621ddfcc04cc296": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397806ee69e2c38dbe547cddb7e76328f7f03439ba472f90247e451d86e99c4f775": "0x007899ef09f702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779f9e3e38d2005aa00a9444f67000a7a67dc0543196a11aedddb6c52e090c12f": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707bda05ce25bfef118b75968fd7f8242bfba43418dbbdf66d1306054858e48ab": "0x00a6367cdc8300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970711169f9fc1798767d359219442bb6efd1285b4c20555b8ffe99b1c58bc7e6d": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722274410da7060d722bf2a9294d7794fb122f19a1177c49c1f8c442da95e1319": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758feda065d1f099ef4622e60e2bfda740a16167c110d8a6e94efd0ab844c4172": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba571db7c9a4af0a74d99336a07dbf9bf8e1907a315415877a08b97ae374201a": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f424ddd545cf786456e11ee6b229a062be539d939b6723e260fa6a0602ab39e4": "0x00bc110f2f2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714d2af39211b20495c698ae85ced7c449fb7db468ae066e09c7d0dff378fa0c4": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794589687b9f6534fbb63243e7f551ca952fc9f626b1144e0de148db4f2ce6e0b": "0x005650f3083000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d206c221c1980b4dd36bf1cf41c0b668803ad26ece3bc982c9050b48c3212f6a": "0x00ba28a926e107000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fba3228b768ff604ce093644b454b545a7d6dc9b4e129f9c2c2ec63ea0e22c2": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979945b6118dadbc0b30eed957cca73cdfa1fbd6831e3e723d907dc36532fae44f": "0x00c68d756eb300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a14415d1275b4c5ddb2138cc89fc94715cf7964220b66556cd4cecd6078dc38e": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f784479d293439f5736be35087c12ac2b55286838bf6d3587c380accdea24bd2": "0x00b05a73b81900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49f8917257f6ad909e749272e83142826203f91b30436bd6a58bb36ae1143e2fa": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd5e1fee43747c760a0745ba7ae0eec0aaa6e97d159dcc6133284b8810d786c6": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397988a7b0f1a52db630da97c025a335ba15d363df9f0db9797dd84ed5ff5541436": "0x00cc3d2e9c1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788ccf9fd41ef2e9fa2eeacd83bd057f3f1a5b3597a20ff61172bad7fdd4acb22": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713911ea87468a8e966b375e2ea067dd684bb64aeeeeb25372d5e7f47c8a3728e": "0x0052f76b2f5f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765849946110dfc1a91d16b9e9fcbdb11465b3b7440835aec6997aacf3ad38e8b": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732f677be5f59da8fcc8e3c168d6a7b9ec2702a2f99fa4b72e69dadd51f37a192": "0x00e0758af30201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f88597979e8f2cc839f4a19294e3e0f888fc4f4b47f07197a568a362b079e51": "0x00ae6ec28fcd0e000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512d730b9b18f000e2d67b09eac611eda5bbdef729872387b80d989a4f10f833c56": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553163889f76e505c0a2ae452838076682e8b6be03e48edc6298f3e38c76e5dcc1611088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315d7006773c9a1bcdcbb702883eaaa9e1ea01c701123e6c14bc6c78f117a6b66e7188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455315088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455314088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313da8f2cab37bfdea437ef24b2751e4ea9e6cb872ae36c559f06e706de4a1ece44088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455313088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7ebf6734438c033a1607bab28e988adcfe1929600fe9bb9bfab07f566bfc47c": "0x0020e4319e3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2a704e4ed93ef279712b3c1f85630374e60170db386a2a6cb1f661300e9216c": "0x008ace1a761902000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab9c08abe0b768bcb696bcd1e776387980ca3e670945f092dd643dd4c90c9a1c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a06b77803ba878049f03aaa4d4cd16ed8c43a4f5d8b3e5d771e8749db4d364d": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979db10638271b3750fc1a7562de362f1f1ada24901bf6f5d566c1be0fcf5854f4": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47a681239ade33a8d8a92d9a45a8a3b79cb85fa8e845c01ef7e1f8f027ac4aa4f": "0x0080afe64af904000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6773803f29a9e23d5d378a09e8bad470e97ed3a2e5a76b7213eda427e78e02e": "0x0020f84dde7004000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f14a5927e351492e9e2138f5571a821d014610fc693693cb48eb22d501d50128": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397519954033e4722c3b35ac22aba65e8cedd41392202c15b1de93a0bc6b775f248": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9bb3f292266ddbf075e05e464dd42f5ea315db76d1872aead526e9024ee7e5b": "0x00c0e1d0612100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b51ebc6f99b2085b3d13e40c70fe5bd8f7af76651fe33c941632d4dcd91980dc": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d87592b80b22d8752ead3fc6a6d5436eceb8110f23563535a06ecb7369fa753": "0x00080442a01100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc4ce0f8ce188ed9340355a76cb1e73f0e4c68b2776d9248c38ab5d7ced4b84b": "0x005c05ba430a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397342d0cc3b0c187846a67b3168805e9f29b6f8634dca76a8daf32ced8581ebc48": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975560896b56acb8dddd785eb5dbd7c8a3d327d93051e36b2f8ff20c4b33b2d449": "0x0032cffaf00201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ebe551f965a4be5d25a05648ba42a7d773867c79db114562c578dc88089e949": "0x007eddf9a20200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ec5df53165aaa4a90b4c67ccc8d881741a1d6f324fe319177f16b444b4480e7": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b58c8f41dbc79600acd79c9d770c17f4d92aec24708c29cf144b286ee30928c": "0x00d6dc8cef0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5ac2b7e18da0bab0eaecaa0a7ed48621cf729f4524f3aaf0d401e44474908aa": "0x00fc6893d89c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5f6967ac265a67bd351352e0a6752cae7af911dd876f165f867f67603a1838a": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397271b3a42d8ba7378364767b90caba56d5930e39c62678f0fb2e58319e22980d4": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8a763021baea9650c8ddcd4d9e7d25955e8a754104493a0d54767dbaa7f2dab": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797a2b015fbabec608bec296644c8e2296f1ed2f9e1bdb92278806c3477894712": "0x00f6781c6a1801000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e365ac90dc49af193172959918e3d551a177012d77202aadfce3aab6b7ad1663": "0x00728e40997870000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c1a72b0b3bdb2b706d9e1ebab28208f70edea911e9738ed767bb552f6ccc71e": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7cd521d0c1663ccadcebde90d12deec64149f3de3b9498f4615e6a408155d02": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973913d7f33d1b119aa5d231e02942adbd83abe77c0482750e70ede850be367125": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397599866374b26c8e46d013048539a065d7ac2947b91526fee9d4a969ef86fb8a7": "0x00eef3db9dd901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4594b62f5a858d3694981901bc4d168437a28b59c4de49ccf14eaa8d881893a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c3226107acb1a71564f3d815c1d896e681bba8657c2e31f9db908e53096a45d": "0x00a61c778e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7e551597a0bc6d9d2764afb8d4b91491fd58792e1d3e29454e08be51cea8cab": "0x00ba38eea7830c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fdfab9115877848448b55e506ea757830546821464cbacd117ffbb3ef623cf7": "0x00e0ef26e71200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f201c82640c496a0e71cb97d1dc36fe38129e67b05e6d3aba5da2bc6b04c9d2": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d03fded9c4b4d8cfbe3c25ebd092720afc0242749936d836cb216ba062a954c7": "0x0032f4233ff602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974973747631dbdae12019fc4924269a698b4deea6e11b1a8b3dd2fd81ca5df846": "0x0088c596351d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4468eeff5816e1b2068c15b330df2300490e351449d0a499911c77d9ba5b29254": "0x001e22598cef03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f10fb7560e65cb4fe77f0ae77590997c9ae6595df97b80a3d39201e159b4b067": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5d840019a8209daa279e1e67b965fe3891bd5ee98f8005ebce65d99b129f844": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794ec684507ab4ce33b0ab74f18699e0c6a5f32baf60ce88b547376e9d85546fd": "0x00e099efba0c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739c97778b8fa00cc4a0fa041afd1626199f3161fd239c79a2a973f75a81f1254": "0x006859e438cf0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397960df3fafab6a2570f8551c269c84d5e5f8549daa31e54a44d216ca4bd466c38": "0x009457819ffc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f6d2411c216dab922cfb08905eaadf95a1cc1c9a0f516ef71c7c2eab0fe5df1": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b505cba07c56490c91377df24ce2c13c25586ea3bd8946fceabca5ad88b69c2": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4046c729810b97b864496fcae944e82845beb2a46cf858e68ded78e9cecf707": "0x00cab51931711e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978319211e52e1372c41ee8ba15a275210b2e4ecf1c165ee2543d02ecf3466b0f4": "0x005650f3083000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4197e8a6122d9265f8e9b7cdc9511b6543d823b5c5c84ba6d9eee181adb12f7": "0x001e39c7e9a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d6c268ab1510b38e1cb8c1c4641bd19c147379dbdf11fdb1e0dac64a6259c44b": "0x006c95538c7201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b24cda42b1b75da906739c875c9fb85b9bf3c5627ae04a14caddcd8af35badd": "0x007ef911b4c709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adf4b2192ec41c56e33acf2d2c8743849eb7e2179317de444342238e716d4d8d": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdd34b18e301664cb3ee61ab27680af3fcd3cb77db2e453eeaf325832a243670": "0x00da72776c8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976762b5fc6e2a93176f798ac32e88db1c2a39ddf3465a2c26fa762d0ebf5a2ed3": "0x00341a7e291900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b62534399647f86ce4c0ec6940d3c561ba707ebe2a324ac2941cf8404c67bdb3": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d40cf544a4653193176de2261c2e126fe609cfe25a0873911ce16fb53758c493": "0x00a854ae840c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f24396cf480380c0ccd36f802680f16acad9e4d4fe5dffbb747f0430db9cdcbd": "0x0000434fd7946a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a097e55925733286ec26e4fd1c0bcbfab0ce95e04c032b8c237c586e272a75fc": "0x006240eb873f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b970d1e1439361fb0e49c2723c45e7f4d884312e5770882bec7aace1edbfbc51": "0x00be6bbc8ea800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb450e0feb74f0d0d654c357b0a36fd591c4e1485203272ea7b8175405380936": "0x00ee1fce3e363b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397add5de3caf4eb830736c0f5b20a1f7159eda97316462341169e663b56f194af1": "0x00647b482aa300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a368752115fa493079eb0f2782b0841d189cf87bab9007a076aba7088344894": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e38a4b30e5090a78555b57fd3271476df93416bacf1adf8d693af2ab43ddd227": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d7eac1d91e12eaba3b7999df716b99061a707ddbb6d4b352d7f1e469cf24e7e": "0x00746ba880fb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db23670993ac309071413694c93063aea9d4528133af399c265f2e62490e8b8e": "0x0022217e9e1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db48b59df27b28b3cc6dfa9e5752804fd1a8ce66de2b1b6757d602c5c3b08853": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b57e268c1961393017964637f50e4ab271a06fe41e3715a66dba0331b259a38": "0x00cee28ed4df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773d332f6d1feb456746e595bde08a652669fb7190e78ed77c75992277453b169": "0x00244691bdf401000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43ecee039eccea006f786a6dd921254e9005c290ff525a280b70d088939de2954": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb22b6ae54aa19696b02c1ffe66f774a64f6def53b167062c06036ccc22b417d": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f77ef895a8a171fb06ea11aac0967968ee81949df6dfe1019486e14f08dd4612": "0x00b4217f875a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977874eef15e9fda194b375b79586381603f0c3cb248bb1e466825aa009a1726b6": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783d1f1675503fcfb6b5da7279ac08bf350e317f4095f0faa7f7abe6a1decc307": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397223540756ff071302b885ff032a815f992bc6ad46dbf9ecfc4537158ce9a177b": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764c1bd35768e2ef41d30eaccaf4adf9a7cc01d766c051bfd25568f48c50846b9": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffa203e39c90597535f5f252ada945518b5fb3023fff79cee661832080638340": "0x00b83cd3241d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976996b5a96f2afa2c86a829aa099270e24df064919c7c7c6f31b2a8e6637f2659": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977399681b4a91c1e982f4b6dc241be301e7f897c932c30b2abaf01f9b9124a814": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397214afbd4f4479299436aa7ed5e4f47fcb632934d7697875ca9303d8c62de0122": "0x009a073acd5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974393bec7048100a5baaec6770b1a3330ffef025a40caa0c66d60ddd130cf13ab": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5832c97cfbc608b594cf3103152317fa7e4a73a8472fdb1f38cd03329e1fc1c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4fd869008041b67f65a0dd852b820d7f0905b74d3aada47d2af44e6554ca17d": "0x00745a2fa8bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1e380e355b71d9a125f6f4b798600923307ad2a2a91c53922dd05588f0754d9": "0x00f0bf279d5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768944dc9f71e662b470f63a381b0f2dd1ca1b8248968564d23d5894584a50484": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397503c6cb0ff2b5993c712d9b2c14af21bad86ca6b0819747a20b64d4c275191c8": "0x00624f8f730f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722f32b9d6679700e2650b4c3af63d83ea10647213b285d859371adbac323fc41": "0x00c684979f0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a15d02b00072706f076f1c4e5085cf8262a140f3496148378217b6f856db5df8": "0x0030dc8f48a101000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4439ca4cce6eefa4689638418cc00be4221500527362b0618621295334863b687": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758652a319b0fb0e3d97c69027c912c91dad10716bd9208af83fe0d484ee1cf0f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f52e662adc56ccced9582b3d722ae81c2d5439927bbca38acaf9b8df72f0eb7": "0x00645dd8e71400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973078b6e8a2818a3d2ea62e98018ed7197e1066e0086f3f33cc8fbdf98831ddbe": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f437cd1e46ef974bfb66b634ce1603edcf2a27b6dcecccf5461a6da991bc8a72": "0x00aa63c979d100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c27c7a07c5720b3bce026193fffaf11d370a947dfd6094a87f8c006bb99501a": "0x003ab9a30d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9291c5547f4e209c7a020d87356891a5955b947f0487bb9469d07e8c044969c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740847c4ded044d6841cf2ecf0328b1fd85962517b1614185b79836866e1a7f08": "0x006aa028eee502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738f0cfbf7c2dcd039486641e9d4fff22afc8488b670e8a9efdf43b29a8dc5882": "0x00dc99bd488800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b9d516528c0de12f32770726e4b3768b8c86708555d277be7e2715937662309a": "0x0040763a6b0bde000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da49217f502be783f4122ccc6a4cef33fe91781c025fc6709ded3489a0b011ff": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d63d8e85e01fb802737e786a5747968abbe6402c2ab2710dcbe3271e80a24602": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c03a86ba91779c2a307f34dbd5759d8108d2d5628924f3b5e6e31c3052b82cae": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a2ca667627c02cc4ee4f191c4f6cb769ad09eb36ca0a9ec290c595266fbba765": "0x0080d1a30a5d0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397986d05260287f5210eae9aabd27ef4d67c0f6f91198c04ad3ebf63819e082b8c": "0x00d8b10d918100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d6dbbfb8a8c9d6d85fc956d1e824162b2377c93af9ae701f17d72013c589d43": "0x003e7409320800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6868cf2e32af1fb63b629a66df797e189095e9bf2178cec66faf09914899bf7": "0x00b67872050900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa364d8185ccc63c1f3a8d8039aa4233dc226a2c02498bb015a45bb46c6c8e8b": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e553d9c3312034e307f378d799a4b0856f5ece73e6d37b8063cd5a4a9402a49": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee15c1cb30bab59d35eeaca4a9e4fcc9f7a7c14bc88f560f462fed10d4d22413": "0x00f2d5e5975e15000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f8ce1436fd62c35907a41fc2204201c16b905792bf5719632d2ab5fc839df39": "0x0060a48df79715000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6515d59883cfa46b2671824f95f71af9b39bbca0c790f21a4540584fc688ea6": "0x00c65a1111d361000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f8cfdec2c5342a436c79df726a4a6e1183501711895d58db96985f0c9a1900d": "0x007a4b0e500e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397466199aae0792a1cfa099badc08151c33587608165d9ff6ad36454b2c82dc674": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718551c18c479727c5fe81dcda62b4faf39f0228cf0d6aec90aa19d3b3cca8ef0": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a1ee420c626ceb95955418b2b0b1790af670443bb83a568607d8773587b4a3f": "0x00f031b1450f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c5bd9592a3f356df6be95819697e838dbc100f8f8d5d2da70612f80d505f7b30": "0x000a78cce22300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5d6405a38a857442a712df0c92d896fdab8af98e8071345d1850faae99b9831": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a580ce0b00f55c64c930ae581d23cfa884a6914fd523a4d855268e5eafaba19": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dffa505d9ecd10a0231e511ca220294a7a20a6f329bb0880636fd3f0ca200981": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4fe8ec31f36f7c3c4a4372f738bb7809d3aa5f533f46b3637458a630746b304a8": "0x0080ce9d58ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973622741129cc4c83dede878e59e3d4972808a9e917900b3a0c1ac699b5d0e52a": "0x00203f885c017e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ee21173aa9a179a8d458e55f2a84a39281cecb767f015138280644205f77d43": "0x00e80abae14c10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2b8e4658b45d714e282c4ea4c51f093aa2c8bf8b977da4c9ad26d6c3bd8ce9a": "0x0018809cb72200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397209ea62d6fba011dd63453fb4f4e6a7e5bbb42a982243d67798cc4f1e393b192": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8b32173dcdf87fd92b22afd4bc6ddd861e2d8a24e6ba82889916490eae6c732": "0x001a3581565501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b93a68b62c56e791d11092a044040ae0b07eb8aab3df83573b4091057edf9335": "0x002c419ebb1000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x185e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904316ecc2b9b780084ed10ba7b401696afd2106561b8192c3d821811eddc85be12ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc16772280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b411fc1a5c88ab2bb7f63b23b15c39983cf38f3ac2dfd9c5168d5d7ebbad83544b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fb46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723f3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665d548c490ff6e728ed093a7406711d76b2c7d04c77277fb88b1c3c789fa641737d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e1797a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15b98c930b9b4a782ca392580d02ed1185fa3214be9e7669ff7dc096d17d286bd268195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e941fcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a516015ce30d8c007d0a438c92c37a660b7709fd1ff3bba79c6c4832ea4107d266e0011a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad82007ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16cf45475c15d447317b7de38972656d207e362f7fa4429d665ce10a9da2ace254c18168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da5800918168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da58009", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db4aee364416249336af93ef33595bedadaeeffb9d8e22dbe518bc733725bddb": "0x00909e76a32500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8f18d2e6b1bb7fb4c5964d95d3ba5f486ce8ce4d6064a10eb99778ec9e691e1": "0x004c44f1ae0b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b481c75a3724cb98d8c614ef1821e1b6721f9fc3bfffe3a324c69bebe07103e44c": "0x00684252765005000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bbb9fb06f1bac334d3d64e294a6b6208cbbb556ab53a0725c4d4b1b8a0478282": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720679813b8468530b4709cba5bc108699f8b733e6e82986b84cfcb3637381971": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706a62619b7d44f124056c2a55198052889303b39785c217cae0b677ddfb91e85": "0x00c4c38b94ac00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243a57e4c95a199a3c5e2184cf286fc177c97f9c7177b7c6446df6d41a1f4c3eddc": "0x001452cf57531a0000000000000000001f797fff00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9ddab96a41e46d3d9cf0532cc4778c6612b9db8e1ae12d8e33acab218181f3f": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddbd37e25fc34b016df42173321aed158b1e392658b9484ea9d173084e35fc5b": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea185ec285b7999af96888f0898c1544925244446c306da3094e2e73271e090d": "0x0034fc4eb4ae13000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a787a005c84ed93e8716b6cd7518c3d65f7f5302ded3b2152be1e2efb1a96985": "0x0040aef2235f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783fd231791900c77d5abe29d01b1304ca9cc39939d6177a0ab0a1ecda2236d1f": "0x00903d79475800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971541891b08fcc323620fe9bcde98778c1e913b55850b2590df82113cf39f3fd6": "0x00accaa52b0300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41f68c2a85de64409a9eb78fb348dc35a0887079c0be1ab8486cd81e4e6b1b0f0": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5431ab697cc29d6fd8a9b7352f870dac9d4553f0f92f499af3e21f8a0e67eb1": "0x007ece841f8c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7232f1574bebf04d7b5f9ca09525dedd46d7e195637db21698eeca8c9f31f22": "0x00bc8b6ec00100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b480f61f9e642dc02cb69bb7083cc19444a13df167c9cf9a0818c58c389e3b277a": "0x0034179fd39506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ec9f39c51a5cc286445631bbdc59298c8e706579d4ecd949f81d00259c9086e": "0x009ac9845bd301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776a6f4e35aacc375b4a64b03edfa76ff8d0f4a029df260d3da12f6bdd61378af": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f29732a0415e1f72dfab97570d2bf0ec3f517fa8a8d5a23899aba689a2155806": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a937e4c36d15070dddea0d07842683bab2b8cdf9d4aaac09dc8d366c737a2d19": "0x007ef911b4c709000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b434e9202f203e3369959ae4b3df60f5b7280990775cfd2faafe2d8c6971a69ebd": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2104006dcb8432ed45cb99c198e2b0f515bb7e8a16acf9567b6936f43fdd495": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397774c79c5655c4f62c210728d5af86fff7264813c15269663e25763ab0386795e": "0x000e64d297fe01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b399a58ec33464fb3f5e2567b01fa8facb65aa6ecb8595fc37788aa8b808138": "0x00667bcd2d6e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397825a6b1cbb12ab146466a6ac260e80632b7f85fcc3f516a2a5a32e685c1ca4e1": "0x0012a3c85efa00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f91f92a628d45365aed0a521c01a064d546ddfbbfbaa44b41051c223118b7717": "0x00204a736c3d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac2a392779a03b3c3811cc39692b19ea349494eac2bf64adbec1e2bd0e096f7a": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977879a7aa62a2671d53a7747a20da3552d559398e3cc4637703a4acef81a767ec": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976799bc3fe41c608cd2d5d3503f4ff6b73fa8c086b89e6e340d575aa864b685a3": "0x00e8d992a10400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edec17321ba9001cb7f5746068a679a078b595a4fcd01d28f3ad27abe5a6a70a": "0x00f0d7b0544100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a61a8455b1364d1b70b40db024079f3db7ba203db86a5c33a88421e29ae434ee": "0x00245b38281600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769a497e2f9613f871399f13585288153ba40c63fa32522212fb1b5e915463477": "0x0014a56b28a300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778612e594574b11816c4979aade5079c4c69b9963501047fc8a1a883f3aa5bb2": "0x0074b138558503000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740fdceb2eb4bc3293dd185456e10e2754f728e0737eb703e84efe9935e78b941": "0x00e849c81e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c244004a73d95259c9f813f57402b0633c7bf9f81e5e10631da8c33ab7343ec6": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970fe1e94ecb1e0371caa071e0a0492b353b5019d8b7af846b8e3f762b4c0bf8d4": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2faa3a519fc5c6fc903fafcba73ba3ce8fd8253fa3b17f6f4566c66ecfdea2c": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1f15b43b3d3825368a65ced1bc97c65913fb0a6b5b51aae2396660047515e13": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4be9d57852ff862585b0124ccd6b3b9fd6ed59e282895a6acd7d6dcb43f0d5633": "0x00a007c2da5100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be0f84d3c2d7d1d16343cff649935a845a8c9a78476788f32b66641ca851bcf9": "0x002cb5d95f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a27afeb062799da5261ee5f911254980e7d9edec5f1e0f1612c58f0198426e19": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9211d789c35464f1938730b3592fd485bd3b04a8d2cce3b1721172a0fca6031": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb8f01448b216b55afebc6154d634581858fa28361e9870d2ec6b9cb4e0c11c1": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776e24eb0abd0b34e6a263b994c0f38eb3613c80960eaea907f2bf72cedffd466": "0x00842449d35f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5b1a7daae99a092fc2c2630cb284a6406cc3c82c9f94088b114402569d3ec2a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726c4d1650a42c89163d0a33cbfb73685ec8b5b5dd53b3ea2404fc93dfb134f6b": "0x0082b4b8400200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971020c4345af3c6c5844d3a8f3dc036dbfb6b5a2ac49041b9f4595e654338ada4": "0x003cb11cc30000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397624d9a77d5fa68ad0969871bfaf1b44ef56f7da689e7b9df0ae976488caa0650": "0x00c803ef0e4a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dd82b58852aa874f89a152bffd3917f33dac43cbb725dd605fe795ff6eb757d": "0x009614e5531101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5096bf72ecd7a04f7c51aa01d7b3d84e1b0f77a70409784387144c61b978306": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979186ffd40a99e24d2211ec68be0e6a01f3ba84710624f746b8ec1acf28ee32ac": "0x002a952b210300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdfff9f4dbf4ff0cff6db71fc507be8425ed680b7414e6d8213648bad74ff20a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f59db5299e178d67af17ddfdc76776867ea6adf5512b89d76aadab5410a64257": "0x00c4c57af23000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796283e824133f3a49a92cd19d868f368992e89c8e505abe255bac90ba0f7c701": "0x0054a6b6228506000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c29dc09c6507bcf6f99c4efd88317a5d115afdda6495d1a59f58432f1d9305e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7e01c73075fcc3df52d982f4d16089c778d629cd6a3ad7965360c37f812245f": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ab073252ff6e9221b245bc4fe7e7727ec66e018c7c87150a1cac06a8f35ad21": "0x008674a4b32c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a2e90f0c5bae55c08a13c272d899d3331dc5034f782ed83b628379e75eec856": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744d8dc7417facf30385e62c9de8a946122ef006bb4f9e01a01cc8ff535573699": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397363454ccbde9823b6dfa5c9e59f1c1f6c5a46391bbef7a54303efdabb07c55d6": "0x00b0ad01f46005000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712b8eb850d12cc90dceb0847cf3698d0532cd7da9c86ce69cbe80228cff1f8f2": "0x0056d410e45300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972138b26ebf7fbabd355b932ae8658a6e2065f739b6acf97c47b479d2ad02bfa3": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1d7749642d9a6bf31cb457fe1899063639ae67cca726d18c9a4663c64a3b127": "0x00b420a6093000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972faf2e679e117d8cdb5ee945ea1e4affe9ba3a8e92bc0b20d55fd2b19789c8af": "0x00e23c551e1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767c62d20a60d7f8b0bf6b5527f203dbadb74d3193a4539e1468ba8cec1c7f35f": "0x00ce2f83641a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397982c19b01299adcd7e9fad4b14cf63ed61f75e76cfabae59014624f26a1a905c": "0x0090ba05820500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397048af2b5e01c09f37ed77556e87dc676760e88964f07af0128747236c9ed5562": "0x00fe73aa8ecb1a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a30b1ddb14afe398abeeec993fce182ee0b802423c83714c3e8f86284241029": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397340da2fe1456f27e868319f0392aef2980869c22c9cad18c4f38ae96a26f2f73": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397748b68c8f7382c967884a783e1fad50406dcaa6bd6cb961cda46c89eea6e05ee": "0x00e6236e34f602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb3631ff8fc9929db27b86a3edec0390f0c7c62e4552ec8970bb3d5f19ba1a2d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979109720769831089b3bc1e87305b120e1a6180e70c11d91a3783e22e95f99d85": "0x00f066368f7900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab2daaf7a0af0637da67b0bcfd31e24037bb006551dad55616bc37140abf07ed": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae98e5cbc72b6439c619d793c15ac9ab118f861699cbdf4f64689ba82d8710cf": "0x007e33be071500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b464d5d9ff57e3cf3895f2c86b9fc9d8e8f32fa41b3c7a35d4bc988bcc172925be": "0x00be5449b71900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797384f7bce41f3655eb13864a315d6cab21556b38b5a51a410a18cb840c891841b1": "0x3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733a889c73e7a1ae26a1ee7f1c85d2dc406b851440e373ed7f53eb06141a079c9": "0x0024e56bf63801000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4029806cde27f7ed49aa001497f9aa1f495971781cab4994ecc0fc71e7680fda4": "0x006ee223f3bf00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f15b80878c905960bf01faf020642acb02e0056a5874465e455fdcfcd9fe7882": "0x0084df6214a700000000000000000000", - "0xf2794c22e353e9a839f12faab03a911b7f17cdfbfa73331856cca0acddd7842e": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9d4c89cf1736723879bdde27610075836e6e491662f2dd14921b932f491e926": "0x00bc41b5d36900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46ea236460509148b477c0db0f3dc291848f30528296c4cbb9e34fa1944a8852f": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bc6e04d2782a1abbc5b79b8bc50ac5f1b99e2f3f3b979f927ec623f60650bcc": "0x0078ca2c506300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793aa09de1ab126f87a21ce23a257bfdb8858e2b0c6683064cbcb9dfe5c88cf01": "0x00f28802947000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d5e38002acf492c947534d6db7e46409900dbed309cf63474c9a21926fee2a6": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975db8b6d9987874ebe8e923e83f9b1c6a2b2e455b0260f98af06be4652f994025": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b31210bda0a7303d2f34011d7ab9d7249575d72d6413c1ba2a68fc0bc47a4c0": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd09407e2b21561ddb0869a33dfa1d701c33bebe279202e2a9e8fce77b3c53a0": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2fc59f3309f34e36d63661d3ca620791854d8286bea13cab217912bc2de520b": "0x0080afe64af904000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d522ededf818203f83f662f7789e20c43708ce98d5f55be80610ae71a2f0d7cf": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740e2d7f61f1bbb309d464046cad5b8392b6e77f35745b03d63ebd3dd78986f91": "0x006cb365fe4d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971856f7cdc86352b326db61aebc613eaef6d6e110849fdd6c3799e6f305199cfa": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397618e60f764c4dd302706f52d6b0df067c26a47308e1a2e435090bb863cef5fec": "0x00fe39811a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdd9a6577b85dc0eaa11c1bdfa48226cf55ac2059fdc3ecb3a7f1b3c41b7f022": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba77b0b352d7c368ef042b3fcf1c74f066bf689b3ac80a47bfc7632e9cf81b35": "0x00d6de0f830800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0b4cb090ff8a3a38f4fb1d11c86afa04fa4ccd49b7652f1d2692af3720333a7": "0x0068068c624c06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e5aee84eecdc400867864aa46905aa0c5830bd95051b283dcab7615001172ca": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a044fa85e5756916302aa9946ef5164495b7d919d75e393dbf1e12a121c6bf6": "0x0044cec0982500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad3b3b9b22aea083ed75e1506738c8976073a8350ce914e1afca8130db5024cf": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f4bd770cf9d0f0f14e6afc7df01400ec610f1afd65340aa95f529fea6e71240": "0x005094aea18c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a8b46e7f0cadec7a80bd9a6b257303c7131a46a43455930d4af96d65b02e3b0": "0x0036effeca8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397608130e75afef93c748d584fbc11544ff558cce74df76fc0fcf79ca4a52231df": "0x00c0e1d0612100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f426e2a998d899c30c1b6c74cd4b7ce63034d1858ca858b6eb1875d3b9542620": "0x006a71b29a0f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397baefaebbdd47b6d1a14ed7884f4513bd329136c1a4c70661cf1dee98911bcc81": "0x00c0e1d0612100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4641de20f8d6deff5ed7de6ad677c3443959c724f6761d85523a5a5ddcf7d7ce1": "0x00341735f16d20000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a42ba8fda4302a8703f934a58f72b267b08ccf330eede446457a43ec0737f795": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c93c782ec19b6f7a140e17d3aee1e76aa7a552ce8351ca4b9ad0ad196e56ae0": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b861f1e5d2dbfdf1dde91388fec85fd4d4d68f9fb8c4c0c2685212da8401200c": "0x00c4463cbc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b221f2a75bf4c42960e77cc4dc4793addc5c893b804ecf24a76d918abaec41b": "0x004efde96e0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397349190cc0ef7c7f808787005d23263ce96443925c4e79b0598325c9a67c9d08a": "0x00be4216aa73bb000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c846ad4fff07c8302a3b0725c0957e36ca092770a3cc8963971f7c497a16bd17": "0x001242a3973e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49376af8ec85b9d8597fd32d2bc85859d29cf9b901c1203ad8fa20edfb0074c15": "0x00e40b54020000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75127b0aa1735e5ba58d3236316c671fe4f00ed366ee72417c9ed02a53a8019e85b8": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455342388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345534220e2be37dbdb56afdd62d81c6ed49cc8eb5acc0739aa3c0ea6de2e83cd66c86241e3f14dca035256d45ba9501c64d1e635badd0961a0e5c0faa94930d28f4975088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341e7c134872c9fc375ef3fc3d54deb576f32738b26595476d21e5c7892f9e611e3e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553414023f1505e3e54e2925d67915d720d12db1a32bcc04218ad713d75f5b543cbc5288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455341088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455340088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ff88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533fe88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533fd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533fc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533fb80899484d584894ce49d4192c2e5a8ed9167e2c5da50a3534d022777640aed7c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f90e0a207225e52c21bfbf08c5022e9a6fb26daf70c6cee1ee92a6a5c02085cf2488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f63ec3099325a5663af5fe203517a09f655f823b941d71b79364637ccd7b1f937788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533f126e93371e3e2b7c38be52ac91e8ea621a5ad7518d5580fa7b36d250b9ed3571a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ef88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ee88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ed88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397074bbf3e2941c6ec69c11c07b95ec94978a7f803b98547e0065d28d8d14ca781": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397299865985150a0cd2405ba2fa98e3840752e11dd8b36bc4bbeb58d41afd68ce7": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397397d9339cd90de5d97ca8001535c05aa96c7c7f7c90345f6b3423b13b7aeaa55": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397241207cd82f0b1f9c6ce09463158efc650b173760e5f050543aa28d482425867": "0x00f4fb4e8b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708589b39426bd955f399bb7fdfdeba99d3bfb0da4df921db64c425168b2ef2c6": "0x00fa3db39f3300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6ed3c15f7080cb64ad72f39af7e4413f8be6d4173be693a20758fda0def0736": "0x0020c9e7070400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397427e00df8e783018c51c3cf6a83840e2ae3fb942cd6c8c8eea3bfe4339610cfe": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e168b0ce4f7bd2bad4edaf81f9cc7d5c180484f10f7166a30b42a326274ea3a": "0x00120a85da7e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397476ba1dfc8be18636b055b32452a64050b426c3f810d161ea73447f7e20db421": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970abf60c9d659d29b34929a4c503effd38c3213dbf41198917e1f10ab960ad691": "0x005c3f8afc1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ecbe24cdfc7d4197d7afc2226791fa2ecdba67e2543aded8fb7521cf8a7c1d5": "0x004efde96e0b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4342447024b1f1a9f090e3763e34529ed206953e1c8b8bb4f50ce043b526e6c18": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397404cdb81dfd36e5018f52434e447131060ead8fb16d54ece89bdad1c0797de9d": "0x0002651cbc0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785881748c6adeb75d12128bef39f815c9c2284a7458293e958687851d6579cdf": "0x0048a8b159c903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723076e74a4b56505a6f03f6e884748c9e12ceddb65fb81064cce3c4ebf98d21d": "0x008a0e5a780800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751998f81c1321ba1f536814da2b1ba042e86e46863bef693367dafc10c3d9b93": "0x00aa5106df0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c3fbcd6f3511800613c24d063b40168fc6a78842190b08c003a542746dc58c2": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397585b7f227af4aa9e7a728811555023a05b0b0ee356eb862e55c8314229bb96bf": "0x00fa4c6f798806000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579731a1ada8f6156bd850b5f01db88a074a4aa38e6d087ba7477aadfba84f3cbf899": "0x7a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824313e365c07f536bd495699d5fa01b88a87abcd9c14858ac0505b6fbfbbb014ad4": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dcd53c415a20adb1628e54d12330bd4dc26a3de1eb4ddbafdeb540fd4a45715": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c44263e162cff7923af91fb6ef68a5dc120e3bc9fd9d6a83b1dd54ea0ce2ff2b": "0x00acc822980700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397615ee2196e0ae215ee218b43d40d4b20ef1ce91967ac868b851ae7dbd60a7246": "0x00f6ad147b7600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397159eb804709578c96f8d7e5e6a84b08508efa11128e7351e9548d117ce67b840": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db815626b21a15d01d49af3ebf1e0bbccfec8418eab820c7f523ca60108f816b": "0x005880abe94f01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e0a9021692c2bfb9b13f7069c71f0dc32e2b72d7c78643275b3e33b185148280": "0x00fa16e50a7949000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397281ef1c256c95083f243b70df516a24e6eb8293a01a9d99dd80234fb3bf0958a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb8a7ae889283039a7c499b92d8eb9052511332c47311b0770b78f3f881def36": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c68d5b53dfbeeee4e6c8829f6041a88d980a0f6d448c0b26dff5f6c7d6629e32": "0x0008e8e1298b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397584d3bd2671dbfe605b94b2fb52b3545888de13476df89b7e3a27d03e44cbc52": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397386485de8a0eb1e77ffbb1643ee053bc1af52eec103292332a1edc0e07323558": "0x005c3dd1035f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973540bdf0df2592e9f974052ef58e05cb36821603affc1de3b0afc5a4ce13490f": "0x0080c045b21c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dcfdf1f4c05a893178592eb2972d3bd208a2c85f2250c0a9f0db27f637e737ef": "0x00461784db1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fef0734c1e1746c5228f4e344990bd3d189eea158b9d334e5d79d99fc4f9f744": "0x0046fc085af703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700586efa0ca946862b9af6b7e98cfb2150effe104dffb0e5e382fba161aa7229": "0x006e1f92990104000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d46628fbd89119d1469a7a583b7f342360f3dacac689c09b2fc3dea43677f9b": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d31eeb29629b2701c46aa785d354360d2768a908e10b16f51e798915e565d46": "0x00fc717fa12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ac1114ebbd8ebd44ecae115097e982ef4a74751acf43b677669a9e33995424e": "0x00962d3a03ff0e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d25c581322c811968a27c16b192a662d3fe5dd76821675861d3eff8a3c8af879": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4e4f759421349a7a1c19d52e2fa7c0989a2d7aab6a74cb78c1e4595e6427d15": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e196e011c38fbf0cc1f6c59bea94c61c8e3e8a8262b687d492248b76dc8b2ed6": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2a6596da7de449bc2e27cb3a025495c4ba3a4ac8e85b7def1ef7165d29cca92": "0x00ae5806543500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acad2ad1b1c4fc875aa093eacb4f50c33b9a2ff63688a034ba3fdca32fb0b4e5": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c4a855d36af69e1155f751db9e92bc74e63e662eb53e35eb0b798db27ecdbb2": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973318c715aa0ea4a648882a97033d2d82d2576269fb5397a087be59c01ace2914": "0x00a60beb412100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e24bb765faceb8eed15fd38fca44028711269b82c1087b8ef0454c9bb3fc3b3": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4d57709517b213f0db14705badef2660d2e0e17b6c1e2b656cfef265d25e6cb": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f96fc9d87b0d987a77895ee437deb413f1249f6c6816d0fc7585ce2ff0074c6d": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3287dea9c4a41a960ec62a368cef7b838d0e0ed2b191c1463a4be3ce5f1b228": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd834098d536dcbce83c2a1af610f1e238b62c77c6cbd9ecd3d6bf81fb3243cc": "0x005c88c2daeffb000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781bc44b66654bd13df3f8f1d7b7ea4e38dcdcf8047cbb6ee9d97922c272d52d3": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ab0ea9ad6468c22e101415cd3ae5a00857063bc5d4ecbfedd3cb1b09c47fa47": "0x0052c7a69f2606000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f844841cd9e6a884d2a66df0121abe009a559da6a964d1cbb1c5ddbcf4f0dbb": "0x00942e7a950000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775ee6d21c5413e84019cdb81416d401a1667141c5d236355dfa67afc18fe7d1c": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3eed2a4d979938979e031cec723704a97dfb5ab3f9348188572a2bf0980f651": "0x00aac729e42f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa910ba96482b7b0b73e3f17d214d51bd49f5f2718f800ef88449c9a89be66a1": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e779b75f30c4fb837099f6f6afb91e91a5d42bb6f2a47f79b5e7e137a9f4f425": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975afbaafaf4894d155d216918dbfd35225c7f1ddf9f76b0e7d0e635249dba537b": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a189cbb95f80a66564dbfb4b1501cd57073e1a45ee61c5963233e91fdb36f820": "0x0088e11e179200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba1189331c08766d3292bfaa36b0c82b621e95278cdb23865e44b1b01e9a62de": "0x001efb11781e02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744061268e708cdd23f318750de9fcbc0f8073b9c9b3f0349a251361c48e61e63": "0x00be4467800100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d01b32aa4109dafdcb4c1c89dd47d1fcf5e4997e60fc538c77a059a76fd37ced": "0x00ae3aede4ee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972183e51de03c411e4a73b186d132f4770340784461442f9e81635f63e2fcf04f": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f445d09e06e99af9e14b5bbbd33f73b2f7b87c5a5d40a1f680830fcb9f68c4c8": "0x009cdcc16b3b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ed11b7f2992696466a3cc73a347f918d4feef1b7cd39b76d3cfa6904c51c1d3": "0x00549b94a59e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a20efa8365b2d90e72062803cdf863028775fb49bd5fd32662df8b8589dd597f": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397798b158ace5a01ab332404b3756369ec8e50f56ab8d6b66c58bee95b315c7e17": "0x004203eec38a05000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x02", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c077afa6cd946b3d26c003242765fd60990da7ae5a7d9b0236628cb908ac858c": "0x00645dd8e71400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ca0f9280886668c15286f6ac59eacb3c9788b7e15c94824e1cc3627a350273f": "0x00da25696b3a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40e8c264d4b66aedf67f5672d6745dee4e8e6c6f0d0afc7a8757b165322aa16d7": "0x00347818775500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753d7a03970b1fbe498cd0ec087f2c6170f1ecf6ac3457f82c0789a3a3bae5c18": "0x00dc023837a403000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4dec0edef2447e5773acb08bb5b3ecf5dc6325e343e3c39c1472eb27004a4bca7": "0x0080e03779c311000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c711c270cda75182be5f29714d74462369ce982584ef5134dcb41fae3a734907": "0x0002d40cf16700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c869c569f80eb7aa54afc99f515a21926a8355c44b63249bd910b60a5fb7019": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397444fa899db46ee8d3d096737bf51e7b0d658e3435750e702b4600eb37209d602": "0x00b2f5886e9700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716fed2c1f991e0dfd326b0cf4c17001d99b29ca780050a32a88b6af12a4f437b": "0x0070ca7d0f5501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753485ed9ca92484d0cd971e8625a1356b49c7cb76ba97cd9ff1c2014549b7375": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397491e171a6ca341dbdeb57d5cb11df96f0b1cb3c8b6ff5637620c2eff9897a100": "0x0024858b773000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bf0fbe3cfe3724c48a5193995bb6902f2fcf3d49d966f813464d21d0619ecb0": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397954b5f47b04e6ad10cbd3c8383c8bc2e94d8d16ee6f31b9387da1b84067dd686": "0x0098c5448d1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7c79324d355237126a9a56fa9f21c17e9de9c2868e4fedc3a19e834b494a983": "0x009cb26e1c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2e44216d4e171b0108317e2e7809e17f7f06cadf9d009c45fd57217ca47da89": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f1cf33b770b57f2662dbf176ab803348e831b5aaa9b0dc89b7fa24c2d9258af": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397882f2a33bb3f548a6541cba7e350e756a15d968f6e3af4e9065488f682c1495b": "0x0032efcc580900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b3e7b1194804fc30f433d8f7e56f61fa39204d71824fa59cdcfcbea03ef4fd3": "0x00b27571ba6a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b13e5cd0fb5c449129a55f38c2ff7955e4bb2caf4b00e6c448d27005c0154d87": "0x00b218f2c65f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c476c4c7c5c89a391a14fe3ac524e4101d1980ce4083aca43732853307e4312": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972de384695741f03e5f1bd61a9c729f955fb1a7953798359cf9e8e125f6c7a09f": "0x009e359d4a0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973020c3e14dca96abda8fb78a2dc1ff932343374e17669b0eda12da6d86c101f4": "0x00a0724e180900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973bc0e4d31d3d1e21ac6c1cacb0f05457af3e4ce73344c7318a49298adf99351d4": "0x7ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a6a90ebb8cd93840d5e30510bd9836312d223c41d7081126b83be8d7179c06f": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c77d8bdb7f794aff84770c7c85d9d9e198ef0a90961a9bbc3bb28ad4b7317710": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397321ae9b7132719a50aec1babcb8903e781ad06ad7432b03717df59be33e91e3d": "0x004834a0a33f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b90774fe7a4adce204af2016b8f4adea0fa79ae52c93ed8d7c11ad958e5b216": "0x00c8a697cf0676020000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc7d4c89b67313bc3fd9283f3cdd51c4898669b90ed66f01294596c6ef878b5e": "0x008c5b88af0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2c0a074959c39a5a3fdd734866fa67607b539269527d8c4d25e18118ab85dc6": "0x00f077ddc02b0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397951606ef876a14dd53547e00a0cffce5797f0f9bab38996c36b96c5ca2c6f5cb": "0x00fa194ed82900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728d87fb520deddad7742e492634eee16427c9a62f32477cfc8290ad9c6326f77": "0x006cfe5380ca41000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fcde6609f96a72323069020ca7f3bd6f83ba546f033fedfa16f8b68f71d5567": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b97c44b64e288b3542540f07dda2d9d1f9414a50f98799c0104459bf1b2fe868": "0x00ea32381b0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780868b51512d1ce5d4214997d8d1b13bcc336f56b7e3367ce88028084e68900a": "0x00249ddec95400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f81e3c6b60ef4693959790d52cad7ffe652f6beff24bc2bf438861763d4f42b": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712863afe866baa5fbe26dd93ced6bf498dbcca16ef26f6a793ad91eea2140c58": "0x007ab0403b2c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512b54e7369fd1e5b9a7f0814e32046aded3caa4ec45a62a4e98a99160b91b34b51": "0x0101faecfd2322e369e0f4d1fc9677c6bad5b8f84b69f4a39881745e8325d64e2d0ec1a82204f76e2f3b4fcb5ec75a9c4bce9801ebe7affc1b9867cbccb75f47db0126bbbc05dc79375d55c293e921864d2a532856fa5b65afb218709599b710177088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553106fc0297afe08648c61f32cd3e302f71bf05c56f39d86e3dcb9728037c2397423f16000fafb501c8e9db5a99693441cade6cc91682da9b06c7045027f24b547ed4f28fd34f402602d61b40d3166e8786d5696f2c656bb1a8f33704dc00b00e6c6c38553e116232fc90a5c38e0e55e42e61c3dbcc43c5b240ea7c3e32b37d67c951f07d91bbde80ffdb4c50b3bd6faeea64ab44df1a2f1d6cd45d479d3c07bb5ec6726aa3997c0b3a9b23dbd0f5577be9740eda4ebb9ee558d33c9d0b41f17d9347abac510a7e28d5f65242fdfd329a707528f5a2865ded8e342968b01b014fee54a31e65d592563b7f89b578b5a31daaf6519d490f8cf20b452e4eebf823e6aabdc02e7288eea025b732f0344d8414737f0e838b36d2a85deabf429b2dec6c390f4e0309e0dba9a3bbace6ed2b196b59a7283b680b20a32248e8179d59187362760a8c0c31c6014b9ffdf60eaa5c6b569b16fa1cc7932dba4ed15e733049f6d613f60a68aa2edb8e091c3bf6f6cfbcebe67961561df2af74835a23f584e043ed189e60796c6a12cdacf70d75060b72d0b25fd53e51cfb217d298cb2b8d91e93a6db0eb10f2db6e2380b10c2e80205d839e03b596e228fd8df2bc75bfc596aeab246a1a5d08cfc927f31eb6dd85f3d6d05ea325b982a5589c4f418e178f4fefd93101861165f38113498b4e5fb2f0cc12c0a36f1d9ffe1a1e270d2345a937518fc2d6d0151583b65a5a289e03c622f404c95732953aa0099703e693268fb1b3c1b5985c7eab8fc2dc180181d30f297491cce3e74e081ac2376380cc24eaae219c0140f9719739d71de2f79afb5653be5ddf31e4ddaff6af9b52625516b4a8f5c52b705c51fe40b32185b55049705c63c8df0fd1be9f576fa8aab2ef3a5350c12f4bbc1deacfc7e5c6e5f0373560c14fbce156ff2a0ed7e208d049ccd985dec85545e42d9017ca3c0f68f4b4639b26273b2397727cfa8e7276c93760ea877d2cb0622c709012f807af8fc3f0d2abb0c51ca9a88d4ef24d1a092bf89dacf5ce63ea1d804a96590d940c4bec0560a3e6228ae4e4c6cbcafd7deddc1a7142c8440ee71072c6f6fafac6c8ca374f56096b561772e05537f112a0d9e8346d1cfc6401de2428490ea37531c4654fac2b99ccee3da19a5727aac118ec8aa635b80d0fb376f3aef0ea6117a8f8cabd6b4970221a9f5718b3dc5f9d212529bbe64638bc945f5bcc8cf7933962cb2d0c468473bdcb8bf2b705294c6ecbe54e0d6eabbbead7286c789743345abc4d0010997f5af311e7138aca868cee71c85da5ebb78fd9e780447c5ebd9f74280353f1ab2ab4d91d811ef9cc766666cd5509d582965dc2b41b3f7e095d9e2ce6bd88d8b2e0a91cd0cc584adc7bd4e27b48624a4f8a81b71e683c6c8e053bc6d1d234bd0f57b2db8bd022594456c683009d52548dcd1bfa09db457ce12bf707fba68bfcbe27e679ad81457e213c62432b705cf4d8cda243d75e7288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553105b8ec94a46bfa2a5ca9bd55355d5fd5381f4fa603bea39822e28fe6f4ec4061475c3d26776ca5b7b1b296a196eea3cb5437e7cfadb599c5ceb4b8fe9f02880a389e0b94ea09f2eb6edaf6d94752f6eb1f78b641f62472e46fc0e611238e525943445437376b7a357641514a427a4d59337238745356456552787741394a6776477a0e47bfe7c962bfa0fd68712d2f0f48a5860e1d26553201c7b69cecf081403ac0ccbdc8e0b2a70168cbaa5181e39e1e00f846f84c8d6ddf0a7d4f67058c9b646cb98ee23392da461bb3bdca3222b23bd0bb5af030f3052c02ce125c6665ab08d484e10ce08164ab7d798909082866bb1cfbcbf65d76faa1d6fd57826d36c76c8ccb42774258b3b60b97907e01f2e404399cb36be9fe50ea55dfca6026d7e1392e460f299b2e0e4491e0eb192dcce836e6ac976a22f1efc229c036587b1efa0a12c68264b410597f3a3319ebf7ac86d2abeed5e5cad4efe190c744f0ebb9ad264cee71de18291ff4c68ac6d091d6e1c36d125c5bbca201c6a9d5dea7752140173dcb0110d60de968a850623cee3158f646c49e1d5badb6a279c068974d6a6513211bacc8a1f61a214963a29cd53db26607db086c8e066f521e9a073c9a4fa585238b05978c0d74d441bc740a41fb4295180f87169e223650910c6848e901997f4fbd89ed5213da63a46da6ff5dacea62d24fb9009f1758abb0a57ef258824fb68cf75f737ea0b0461e39b7a75641dd34d1ac49313922d3d5c4e429b683d6f82232aebdc78278b61b794ac4d636b3bdf15b01e8c3eb0b76476a7315356b5cad0d283bf53bce9e545cdf2440cf6b678af58c51e1051f98abbf03a62b210ff2ea207876d325b7e951db1aed53c42e3b44ed588918d9489e2cae2ecf611a8768c640dd24c212f887efc72fc27674e93551da7b81b66c9a2f53926b7bab15c51acac4a2611b65c473a6861e0dedd38e6b148a574da50a854db53c69f1ea4941f0d628b252ae3c5da5027182c53e3e4e31d56729e046cce68dcc1e64a3fd88f27c6d3308fdccfa7883de5a4b8bf5b3b48194dbcbf83ed2e0c77dc517d44c5c5882015e60026548dc63ab854c688f0f6555421f4a59be10ae391eb74e030b9f08152b4d00d37030de1b80b7e6be7f7ac09075d4c614f67a928f379c207f187ac8c1f727", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f2cca7cd2d3af065629b0b9ef76b7a9c33acde83f7ab995099a4418cec416e8": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c625f4a9d97de218d11a9cfb8d6496d3aeb21e1e1fca052c02d19ce45cb7ec31": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397990c89fc15b1423ebf2cb3a3294717697e96a76459a8906fa3cd02e41c4da41a": "0x002484462f7d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45d11d7336e0e1f4f8bff6401869741bb705e20b6220fb9c704cddb681d33231a": "0x00a843143e4d01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282433620f81fe27dfa6ba47ad798b27edc1c659a13408a0f6bf2391bd7429020608b": "0x0014c5855a3813000000000000000000d39989ba00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709d3b8b58eec1bf7c6e0ab4d870ea1be06214b85a76b78554aea15063d0444ec": "0x009cc0f3713341000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744367b4c30ed18f8be0e2046d541d7c56e633293caca79cdf71f2b4e3c68d2c8": "0x00366603bff80c000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4381b5bd9b04a62616c14b718a534b6cbdc303df70f4a1ffe5c65cee67f955361": "0x008027461a740a010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397523f65b1cbee606055898388021d35846816e080da587c5fd235879a0f71d9cf": "0x00f031b1450f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1a7c4808b2133b099e281904575a38dd9441ddc1eed494305b9dc7307f1c719": "0x00c07c9e760300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397812864c448ba1731d8e7e460aa8c6270dacc50a362beace2d038cda02d5d7d54": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397643112b139d3d39cb262af7ed83ef6b8223cb26893082eb387e1d7e85409e9a4": "0x0052941237d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761bbc20bb8177f6f1a76d39e51baa114a3f66108e1fe3f3a58110e5bffd1be36": "0x00ee4eb50cd201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6b308b3ba0bdd2856d82ec29437c8565ccee01af5978aff17b1321d9db31232": "0x009ab138061a01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de84be9421d3d1abcaee6649dd4ab8a9bb12fe3a9f0a4501b92687bc1a1db142": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dfdcf0f48570327d8ccd9b14d47947973b5ca33ef5e628423a7f52ba4b4580d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d44d9ca94c41f14bb31f623adf59c4863595a7474be1cd9b63005b7891e37e7": "0x00e67db2845e01000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e78c385c862a9b20750ddfdb94d8785a0eede75d76941f3eff345a0fd9bc588": "0x00dec475160300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0b53aeaa486a7cbd238a29c7aec6a8d6eae52b936e7190aa94c53e7a36d2c85": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978cbbb35d810a3aa5a34a67b33fcc0a2b4293895aa322846ba98bf6b9a7759282": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397885548a7515cc0274ec1cfcee30f9ed01a195bc8a86c2e494db14eafa8763df0": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397806946a24a68482338553324ecb4641fd9e63512cbff8938ea302909d8ec70b5": "0x00da5284960300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397292ecde05fbeb8cb89bdd145878db1772383b72c29a46c29aabf0e66632b3eb1": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dbaafcdae90ac709ee5edbdc38c656b68a0d715c340f48dd294b7fca51dbb4a": "0x00bc04ffc76607000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397111ebc8f0c5f311bd1aaf939c8403a462f81200a7673baf45b978cfa7e9e0669": "0x000c254e602000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d13bc1a88544e5637a929c7640add1d9dd81da5f9927a7750cafb22f72a1658": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970491dcdf10a82d46ba7ae25e109f506da678defe667fec22f6475bb6f7b619e3": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1b83931f524fb4729bf07ff4bb5fb1d4ef0462ee3edf17b916a7be1a5f34f65": "0x00a27b4c1d6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dab5b70cf0989e928c84208145f7feddad94dd38bcd83ab5a65912dfbc444a2": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d40d1e7113f70f25f97dc0a9e98b61453296c7bd167c05b54e8f02dcaf252bec": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bf2d73785be95ce9dc573a165fd8f045ca5e15c949a8860b1f6c7dfb4553257": "0x00165b74a10500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b10be3022696f26dab4140c1259a43c2ad9a0073de7ce630bc0c6a47c2ef7b64": "0x007aa137823e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a153629bfa1e4fb751187de2d037fabecc987dd5b9bfd03bac8e70e8382df39": "0x004c44f1ae0b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512c7856cb5ae12a2894083db901119ee630c3cd37725716a98a446a3f2476ecd73": "0x0101b2dc42595cd47cf78bd4fa4f99b99cd4f20ec4ea682b0715d906b5694e4dc345da9c6a6ad458f966eb78979e4c7bf8557a89f71c221927e0efd1f5c8614e815488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531a088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455319088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531870628dae391a37ccb6ccae7e6b6495c2622d69cda00000000000000000000000088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455318088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455317188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531700016292937846b8e0f933c667229d8b6765917b86dd19e0f6c32bdb4ab1a2e3488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455316c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa7e5ff42bde28e881edd85005eeed16e54e53b3257ba5c0bd1ecf809d741779": "0x00ca752c232500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b410a5562e0be040e127774c5d7737161a4af53b6da1184f0dd5281598c443a96c": "0x00ae256710bcf2000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7e8ea38e268f7a4e61f37ea79050bb711711a4681748ac09744abdd7666c0a3": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bb01790f21e53cf7ca423a0ef2a8dc08fbd3d21684105c250b521f74105b796": "0x00d89163946902000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41c912a261be47255137fc3c4a199f82958a8a47c5ac1403f13969d48017f7d03": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6daacdb378eba7a05fbd24700bc64c7a78bf4ca27d2577af42a8250993f81e2": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6f918d5a17137b3946015bbc733e29b574563a3f1a5d0024781cd819d7a0f18": "0x00c69e08b80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7df2080ba4ba7ded52b4f3bcee531938270ce8354f8b92442f6322c32c5f661": "0x000290e3bb2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397799aa1af68e2f81d98712486a535c41e4d1c3dda148cdb934a7fb0bcfc044b6d": "0x0048efb761f301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ecdc7f253ef7e9149f4bbdb93c26a83e5246b6320e409dedad7c3055e63cd11": "0x005a2febd9e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397699c8ac6b2350ce2122f6d43a5926e44c112fde83f2e74f240ebb4bc34f45670": "0x00206885de1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f35cbeeac8c2d96e26915d2f411208e17b4c2d4f6c5a1c01a195a7cdb5bc0afe": "0x00e0ec47918f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af18244c0bae41ec2d19b781ffee661ae4218998b678095f6cfc7f33bc3edd8e": "0x00ae9f17c4be12000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701860111a28e23c596cdbeb04f7c0fb8d9b0ccc9f881afcc2205912cc60916a5": "0x00864900a51c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5252704a73d4b87f3a244219ed761c728faa8f1f1bec3aff601280f32fd1040": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727a440ddd5288b175522bafb1d50509cc63257b28a583f4b44c75d330d58784d": "0x006e7f7b980800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799718678903aed056b39863ab400c0e79f2f1ddc2adb07d02a173067a6d9a14d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7ddf1b23ee9626d29c64806c458b411f2c92c824c9de19818f18350cfbb08e6": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734c8cac6e4fa312fc576c247b8af08345bd44043dcdff0c06a8b2a5a59d4cfe6": "0x00306025659004000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3d3350b6daa0f6ce60fb8519333a1f28fa880bc568c61d177602b7b80265ee0": "0x00a0d6432c8f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0a17af675c043e1aed36282b949fef14f935a5a0a5f36b5c7551bd659b5e990": "0x0098224f9b6720000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974622dacf701ec5844237c113bf4f32be34fc3081d6ae71515c45f8d17382a20d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4e95fbaf162620c3e5d553775fe7a269bafb2bada3e36626a46ca68cdcfefcf": "0x003aec118e1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f7e0cdf733a50a49208617331bcbd6145da0a09ae0e66b3b521fe30dc1acad5": "0x005880abe94f01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48c3aaca32d45ffc91e8e0f86029393631b1de797e0f8a8d84fe32491b3603a04": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b54a850559d7f951fe8ecb767229d4e4e59da057973bbfdfeacca8ae64468af": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1d8c9358166e926c5b29f5aa7262bb8d13dce556cda3bd6d98261cef14857d7": "0x0010b8a666b600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef80ab6ded3bcdc4a2da9910cb1eae8e3f5583613aa94e5ca3de07181e0053f6": "0x00f2dbcfb47a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975be88dfe2bd4801524b55ee8f8c19036e7dcbd2134378b0a5a2d5bc0715459bf": "0x00b438b5fcb901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ef354e6e5f0365b4ab060a2f77b0bfea013193bdfbe3e989d9917d3f6c89598": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0dd0eac2c0d94f28b556a029c485e928d09e85e6034b4f7f466047eb351c253": "0x0002d703357000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970145db2891424ae429263d8c6a3962cd7fdaecbbbdd1635457602920ed7200f5": "0x00900126fb4700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d65768e349bc9b5fda8a7ed164ce063da7bce35164f12a791eca9b415329cdc5": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720f49bdf3ffc9a868ccb19a4d810fcd5ef5b42d06bd0f03f8a8edd7bf6152066": "0x0030dc8f48a101000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43e4bb9d7ed405c9da5a1b121d882aec9ad1b8e132921b96222f937afdf1301b5": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb3b89b2bf479bd9f1b5a90f2eb5b8920e54c68dde7894266674422b876221c7": "0x00600d64ce0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397657ec14fd8a614d4dc8d902409dffca4d19680aa6633024c6c956191aae43e1c": "0x007ef91cb75900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d49b59397cc3376e8939577df499ebcd9302ae19190e79ef9c97bd2366dab7bf": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f68859838c6dbdfd7295d683e5168b3184583e80119902d42bbf13d4aa7def68": "0x00849704501c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3cd350ec15fec050564d443e2256490fb2300fbdc8a347bda1cfeb10a1410f0": "0x00ba9d84ec0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978db577eedef94e4f2cefa05037686997b14b36b6755d8aa3e107d9e9796d19c4": "0x0082313f7f2d19010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e7c000378704b086ad09f1244ededf381e51326657c39b6be4ce7ef54f613bb": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3fbf2f108e817e150add4357b1489098e4337c0fc43be71240fea480f408628": "0x00806231a08101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798adfdb69aeb60a08cf50536b164e33d6ebd3230715c4aad752873ebc0426550": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799490f31f3ae6bdd8bbe42dba00739ce2f235710c8038cdcc8183c2777811619": "0x00924351a05100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397717afb4cf0ecca434bfcca278da5f87551279c65aedee91204f52a0b8ed90f6e": "0x00501213dfb68a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397227a6b116464a185c498499029f8d851499d3b883be8d403d9399ea7b17c374d": "0x009c7912141900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4cddc10595a991198075fde4703d2dc7becf3950ab6d2b0f5a3dab54f239d9442": "0x0016354fe4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d1c1a61a2408fe24fae05fdb25c00e7ae53e442bec7c96ed693f9e9534cc340": "0x00ea941a6c4203000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42aa97e54a14a7b6a84c55e47e8f4970b5c76169bf04beac8fc818ae7419b6ba0": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776f40a6b3f4538851c78651b93c8a96b3c242ca78051192c5636a6feb807469c": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978562e0da858978ac6d49943e27f21ae6866bf3f5f6fc488106db56dbdf4bbf35": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f245671593038f17ef021fc0e8909496b16ffbe361a0af2aac2453b103d0f97": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733c4797d24b7ecf0b8f12f319de1839573cff3b63a8130a010e4ba006449bf04": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397426b30e0f76372a8cdd1ad6ac2409486d7845aac0d9dffeda2afca9dbf91810d": "0x00fc245ca98c01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b448894d6372a562662f579e748137ada53cf9af152cf096f75a7bd11c66d39edf": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c3060476a9b2111747e61bed686527b0b49daf4ffdeb7cc3b26f2154f555886": "0x00f2b28b484f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397639ed7f0db118d3ac9c486c696f930f3e7b86c799f18856ce177865673ae73fd": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f4c5b0efb5814b6a4c5bde8f55d02d346b06fc9303b92237ef9eedaa1675999": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397febfdf5cf67c0ed4f842d52c6126b709759b94938b795f60a78ef72ac06a2571": "0x00d4f831fd0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5386010d56c10c800f1ecd7e9e6a7102ca29a7781fa48d57b283423faeec0cf": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e9197cc5385d2a7d208f6f072d331694bf71695f25c8c51957f5fe8ed10aaa1": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f1e128e20293d5be87a997590722d05e36c973d0f3d42d5b381a49c12e771b9": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712c938b560bcbcabe986dbc62dd9427d0ab68f02bb8405693a440d8e2627071a": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45b33b87577e59a8af9bc1874c186c434c198c99eb9b1c7825c60c03dbce44d03": "0x0052007fef2000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397866eb329c7ad9b82e32ae194f189b3f4f57150c92450b1b29cb115a351c03ff4": "0x005857a4df5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783b7e2f438a07521e4c5f2000d280826dcc28298fb7c94d7c701f92c4751a17b": "0x00aecaf4c90900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b413e365c07f536bd495699d5fa01b88a87abcd9c14858ac0505b6fbfbbb014ad4": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397108b37e4384cd14cd968ee5cd93c086a6a00fc7f357e08b449cfb2d9115e6ea5": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971176da955cb06b865595188edcf6193af40e94cb71c513941fd402e2ad72e929": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f764703dfb50926940cace2a03e83337dbb20e995e6fbed50e46f95070000206": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979648f1821d2fd979f89b593a79484800ad94123a615fff3f4bfb8ed70452745f": "0x0018ee47a4d000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4772fa0067fd20a4d50ecdbe5cc044b29cb7c4b3e2d11f164dc35004745065a2d": "0x008c49524d4e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972235911f45798580a59cba9c03e164f901aa5c378ca1a0c8b037a0362374a27c": "0x00b2a1b3670900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397421d38d5284384d89d3a99c8a4461f1126bf1ce732f66aada7f1b0b63105b807": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397500538083cb37be8862a75ed26766d4af25afc2ca787030913cf2d3d3d20a53e": "0x001428b7820700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44da07fc8dc296160ffa40d3f242f07ba2276c5bdad5e32bb53eea5331f6da71d": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db46df6dd2b1624b1ff679f7775b39359e29576237ca68619b2f6c97423e53a3": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a96cd9bfae53f87d72d7b557f6e6680e8cc832e567e76c65e0514e04984ae4ab": "0x006e1a13482600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d899901267f714a73583f0c25a330d9c29f39fc52dcdf1a0fd3b99b2f551df0f": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47f3125d79a9d786a74b6127e78cb7acb4a0fd66b852f8529effa9292702b5a44": "0x00d83b74c6278e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795c15216e17b73ed35c2c33e84f27ac4213dc8ec85f6883d1362f260a1e6228a": "0x00bcb9c7361300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711d912f1762fdd2d46128163719ad496bfa87b710ee665047512afa398095ed3": "0x0000851ec43c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cba3da1ff5d810d7a4542971b718250075c9d80a0c99da521f67a9be8ba569b7": "0x0042c4f58ce202000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8c3969a697a0c6e9c5d53f929b0f8bf7f13a3b1bd1c6cf64e6c57e57b48e587": "0x00feb8bf501000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b408e0a2f0e999ae82dcb4bdc8bdf0dbfdc18baf86cd78e39ca7ca41c7c8dbfc61": "0x0080e4f642df9f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddb3c5d359ebcf1515596d11301b799bb0fbd392ef979ab7073a15d83a540490": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970daabd8e7c312eb2cf69a03e369eb420d7cdd0b18818c01fc86179dd9860d8c4": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d9e619998b7ec591d0761ad5061a5a1d4986e9f056a06ba178b93c49fb5f2f6": "0x0020034cf68f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ea51d7e051c8e1287462a7a7d55d4448a91f1177883a9000c1522d539f8a04df": "0x00a498397d3900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45d95ae0f820b84bf2b6c4ac95685f78393d707ef54cf3fc4e3585775c0b34f12": "0x00aabbe1098600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975afd16603ad97043b66e6033920eaf4b880e726e39da35c1744f9cf7be31afef": "0x00ba51b4360400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397434a2992a0d92f68bedd7a5142667143e340639f4f690f5b670df91373a9e129": "0x00c8d6688da80d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f103888af604cfafcea9a17af4d9df64dfdf1f0a9f2f20a8139ac29af6576838": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc30cba8b295536c2554544f29312d5b858c35ec18f970487d9d258264f1b9e2": "0x004ce4f43b5701000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a19d0092c90362f0a4f62720881075eee1e81a6f761d4be0ab29a033eced628b": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f07666c81682825accb067387566e724e9fe975bb28ded8a9137f2bd413b9f7c": "0x00821289f30200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a683ab999fec58267f7bf49f12794ea3c742abd10e57f7e0ad256f644c1f162e": "0x002e50c0ad4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c1f22ba011263fda839413156b1e680c2556eb6605ea1849500902ae99a8df8": "0x00f6a94eadf207000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745e0424cdd78296f3ef48797649c48198490a488c32d27ea44099de7a07da22f": "0x00cccfe07f1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725ce4a928fc966013f7699d025b79b833633b85855ca42cc1e8e3ef52624ddcd": "0x00c4c57af23000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fa2309ced309b3af16d0246e7c5de58c5174043a260921fccbbb6c24b805ed6": "0x0044698ead0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c13d5c898acb588e078e2c1c80dba9296d3d96a327202eca92d848db1fd8d9c0": "0x00202e585d3783000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722d6a74ef49f4b4711eabefb1115e7fb951e144a359d25bd79f5f64c8e905742": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972590289eeb3c88cf1dfc8cb8a9dcfd385da536c6db392600ca8fba91f570d497": "0x0064c20ad33200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49fad2b236555bee4ec3762607ad35cdb9c76c716f1676ecf2e6b6a94dec43fc5": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b427fa9f6801533bdb37786269822a30f2f6742d63ae8608bc88c36b544f240f": "0x007e2232bb2b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979dbcd39162909d444c28848f1a5e802b980145f337a6aefd324370cdd72d34b0": "0x008c0e73b14a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43a0e8e3225158ce414cc323b4eaa3d2dde89570604099616ecd689fb6d57823b": "0x007435ce717406000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b564d4b927402864fab5315fc8ef61ea956483324d243c5680e00d3751fbabf0": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6298163e66282d0611dd6d9e48572197dfc1457c22241694bd7382adf5b86e9": "0x008a8883a42400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397508d1effcd45a0f8e62a535994c67ac943aead88e29d8215497524d0fbc5c45e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703ebfcf3c31440d6e99ef997a77c74d15eed5b952412e7d1662a7fcb09665ef4": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bebf967bc0449865d5cc79138df958269117ae73711fcf4b82a3fb617d7504f5": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d56382789ff9ce1a16b02c86a6372376c8624dc7330da9421971fa13cec20180": "0x00a652dc520a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d83afcc9dc879bf0f150ac668b109156410ca5247021d79d52d2ef41bf406676": "0x00027454dd4d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397897599f055eebbd5737fd02546d72462e33dc80246e33896773b08b251ecedc2": "0x00b0b673f88506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd8fe58bf01f2104925904d0b436653db9397e554cd7e8fc2aabb82bdf457c26": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9f0b9e55ea0a33cad4782f2626c49083a975ccb70f8d5b8be7fec6c39ce8af2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c19ba4e2bc2d5297e6ee46ba07e7a58c153f3a1a8575c608ebfba85383ab64b8": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771e313362196326d1f5334260181711be30fec01cf0aa3d774726385fafa6adb": "0x00381c3a2c0400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b455e2558fd31719c32d9b7e47433d3c082cac7d95655c9cd09867ea761b364318": "0x0066c2f4a31b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a59fbb53612de1e425524421347c598d18b99cd59721e05a98f272eebf110c5": "0x004686d9dd8f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c16a7d825aa576dfc91e29f17e52d3feeea0a4f68d8ef0336862519e9ca98a5": "0x005806d2931003000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762c5e9f2d9b4d757118c53d16b8f07712f990a142be067421a2c3a3a7a9bccb4": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719b938720a076abd5cc42e52c2422a5cedc2e46265a66b5e795bdf13b7a7ea9f": "0x002087c009c91f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971917e483033d42614e9988031bcf828b70d55c322f4a0df4dfeeff297a918977": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a6d88b78d20bc1a1e9d230f504a562d78f3be5662bc2d775966f4c5e0a37169": "0x0014ee15324c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d583514a0a450024ba0a733b20d10c8c32ce873e1711035a9855531c5bda60f": "0x00cc2ca24f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771c0e2245195863c1d6f865040f10c009d4830143d8ded5a77e5ffa6cc90b00b": "0x0066506bfb6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397961561f098d3969baf0b6222a460427d7d8c619591bd013f52c4538d7ef15583": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397872d277064d4f7062c2681f252dedbdf12af71ce460d065afb202bab5a31cda4": "0x00983e953b0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751d16b8a40d502f540b4f02308ec7f9257fbf84a1bed217f36c5e2cf834d8c27": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970de1057c6493ae6db942b46e73749ad90ea0b570a541ace3502cf66969a33e34": "0x008642033a1d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e08257fa3107900ffebed384a96fe974474950b5333af48c82918c01c380b40": "0x004c2862d02b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4a0bee3f5ade097026e9e4b06764308a11f1dced413a52ea89c0a23ae837db0": "0x00d68c1be02800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976fd854c03d2996bc858662c545040bb1ba8630ae17af4adc8d5cce0666035c72": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977cdfb7880488182ad2e37aff1b4767b4a6f1109f7dd17dca2b37c624b64eb886": "0x00021044ae9920000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b65797335118964bc0b74ff811f3c9b8f003b2ab9e551723f2c6931cbd6f693936af536": "0xfcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a51601", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a33b746521869fa2c643ae9b5f73cc1b131fcf48b807434e4717be91ec883df": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e0c358174661342532fe36d1085c818b1475f2038de0defbfeb332b3802705a": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397299fb5825beb3e6de0ec4c57b098a75e06fff854e6af8b652f38eb28b4c40423": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bcb2eae4736b364661bf5bbddc6147c6d95925da32f20a0f293fb9e4525ae05d": "0x00be80bacc1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4aa6be12e462777b2f571f0e80856c8c5df0c5262d65f7b7bb2e6d9619b3b23": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742e2f5fb65eef4f6b8ea91379266a743cfb5429eab3871b081a002a233d2e77e": "0x00e69d55840b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46f915bdae6812f5bc2f014b440927744eb5db391eaff16ab3f7d3967f0a6f84c": "0x00b4d0d53e1bd8090000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397724b4775cb0f8ca4e89c46d1c966ad25e187b58f567831757c91334e3bbb0e25": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397200d299014751cc5a0e7b5e35a60aa14ad69558ce12f1ef9759be2e9f862d2ca": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff05ab3378684482db7025a7bc9b1f4545404c2be51333a98026a5145526f621": "0x008290b149ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706405f7852d979a3e3ecea4dcaa0725aa30cf838a7f6121b16edd45149985a22": "0x008a53f75d4f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d20c54416ced819488a1208e0c78ec28084e2643819d135b7c793e9fc915816": "0x00aa3d8fc55b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ecb888886708f641c8d7fd7cf92764490417e1b2b7046d22a7934de4b41364f": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b29fbc1b44d38ab089a62692ea1bd24c347be4e60a043df8adc6f99abb2f069": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a42b452f211bdabbb7db7f86c7cea207a20d5fc516177aadbd05b5da141ae951": "0x00a2092f3f3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcdd4f7ae648d633afcc28efe00b7898f3bda3e5579cdb80b44b0b54e6cabb5d": "0x009e0aa0e51700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757e3fe3c6a1d62569addd3cfc5463b7041cddb43b3653823ac16946edf058a61": "0x005c63e2a2d02b000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ffdc0d411b62aed4d7c4bfbcb8df724711de6549a4b5fa16676ab7ff04ef8dd0": "0x00a678b08f4c2c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c245b66d703f2b1225e44fbfc618baa480d8a43eaa08023564dad0a96cf1e93": "0x00cc6bc2f1bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d0c761fbbf3c7dcda2eecb5d342c45f2b729cac82d26127116d9f3c55c2a631": "0x00d87b79642800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c770e86703a885beeb557841b02659f06eb83f1ad5655c5f69e1839e624fa01": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a012bfc2a1f7bcde36a77d1dbb42fdfef2b53665b757fb53213825a3d3d20c0": "0x008826bcfcd800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4088e3e0ff06fee410b63e0497dc2dc9b2c10202b61778b2160668f654e0255": "0x0028dc32610300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a6c32e455b47ab55ad658c6755c9a66cd5c330592f3baaf99b1cf52494dd19a": "0x004eb3011a1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c1a663b1d9d30a7dba134dbf929b3293367528f9d731270e5bd8e24d850ddf2": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6ae3b4084b6e1a7c097b3ae0afda8bd96d8b4b1109fa370803e73c5bc51a46a": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795d8d18d4ebb5acb5af32a125bc0c626c8ff0e70bd4380d5a25464fd0a380a07": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780aae7cbb783e2950f843c7ebb23c01ed1d434c54a3b5999336097df4e137ace": "0x00f64ec09aff05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3df99e4d729ed410d5ca144e11797f6cc36085b150a0098475bf4d28c72bd50": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775602a52292cd4a88cabf22fd2ebc60a13aa82b92525058bdfe4bd57b4e3d4c1": "0x0010a539b61e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40def09fdffb7bd58bb75d518d2249595980d1cc1bf2dc93d937c237869a8f1f0": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d99a5e08c57b25fa89cddae38bf2dad37a4c9baf300efc33188358fe867ecb0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397834c2b2ec3b9f76fb03505be6a21e1193c22b66d6371594db758a02d7b8b1847": "0x0062b3e8e00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af9466fbca6083d24d2ddca158e6431f98712684fe1eea149e7b478785c51241": "0x006e003d620600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3f0efb9526693fca1aa158206283aa23cd5e3a9a5a9137684ae2ca3eab2f469": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735fe1f52cada1327b5977d79129c41fafc67c0b4f03128516a94bbf7c0934bfc": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974eb0ad2510fda4d5acf95107c044a1512b3500d62f8639af7263fca42ae72343": "0x00fcc39bafee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397422157e06516af436d924df4335804ec1d27f2a4be1351cf0f283ed1d28382b2": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f56c072b9601f6474376bb2fa7d069a73839eff2b828d6ed2738019420f1f1fa": "0x00e268b13cca01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ce1e3bba4208d14b99cab63e2fb59b975ea7471bea1947379c0814cc4901edb": "0x00d8c00f4d0401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717ede621b954cd363b6efc566f39c72b92de304ca91727ddfe119c34066a6798": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc9b98baa192c06a1d3bfd5b0c79235d4fafa1d7eef4716a6744edcf627fc143": "0x009c09dd960400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a09451604ea12cd471a39f60257573f5f4ffa6f273021a7097951afe2140c93c": "0x00488c227be903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c8ea524772655e74bffc6d96e5cdeeb08294a54d7b72b3076ae021fc3c0b211": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708c4042efa14e97432ae022e1e2a62e53051c6440343fa09951fc203ccaffd9d": "0x00546f2390a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282431c79538fb87a09de261557bc1de0720c0fe3295b4dcaa78611f93b02c14188c5": "0x00d8444f0a5c0f0000000000000000006eb4119500000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b406ba815c9300a73243387d1b3fe34a06ce69f40eb9895cc9d84550d5231cc2f0": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397755df9876ceae619116dee0295a591b24b35afa9c32e96e24503cbe6423d8de3": "0x001869bd150b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b484bd7850ea1697b3e6b23313ecd627d2c118ae27b2f097c5fc0aa0c89b959b99": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3e8f05766bd3534c5eb9ffe2f58814b4d8ce934a47fb43f004a4dd5da56ca95": "0x007a4984bfa700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4916c8a2802d08646f0782eed3a2fbe48dbdcaa5034109b4508cd0aa3dd0be3bd": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f340ead02afaab48ece41b346dcef4839ee6dd93a928c9ff38d8ce25ac85d5a5": "0x0002422ba50900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e89095fe09e827b36fc5c42aabceaabbe811b82c42d4d6761a3e47e37e7e392": "0x0072a9f3d3810e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764b7d6b62be8a8e3918239da252e65bb7e58e1821493ad76edc75c974a88c00e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a78e663b9eb01f617ede8259abeda27bb1b6fea46f7057c923c86a889dc31c6a": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5961c640f107432bf844d41d01122f0c656c961f7a3c97cd46e49c61fc6dbce": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb6dbf4ff0c1c9ac0d54dfc12ea08a968c57a6c7cf1270157b42d35083abe29f": "0x005ca0805b8100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397880117e5b3144c9c12de44772bb31b4141c8f6b9098e29b366e74e73fb5c3900": "0x00de8ad4c54700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a28c82312f6d4264f8985f53f1ce7b7d3c45ba4f89aa1f518e9e6472365478e7": "0x008281e2607615000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d779907a943bebd5a9e08b9272dc087e4f0afe8ab7f1fc0ae47c24901aec97e8": "0x008057d73a4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f05569786e5fb3dc0a1e0acfe131189d62b8d5fb13d8751e2602bc93bc886ef": "0x009cebca242900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f3e532bae77899f4e63611fe4450f6023b14b58f5515689c3990a2fea36b020": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978fe5993302c982a4881a7ce36a46fcabc65a9a7f010ef739ba0eae3856f95acd": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fb631762c11a5aa79351d2f68407729dcf0edd19e25b0eb7dff0d501f4ac8ba": "0x00589ab7343401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397503b5bbbb7af869a375e0d8caadb874175500ab416e75022a2e2c1aadb82161d": "0x0016e332d60200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c63fea294c43a7464d7783e054abd2ec95d2b07f88add03b8f28d11e655583a": "0x00e0fe28a39500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed8a84e0dae2cf5cf65b76ee318156a0163215e104bf70cca256e3b8232329a8": "0x002c07fd6a5500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46da6b80be6d834dc68a6f6e602a4f0cc138d02e204be5c63324c682830aefdc7": "0x00ca0a717d1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726486acb7cec03f2fd1363046431e0ee5e67321e59c70b1da442a1c798ecb640": "0x0056cfcc711400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397183617620a8a81a3f067b3e0b40286f6b1469cb0624b5bb40cf55a91ecda5ecc": "0x009a2bd5f92900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ca384f50830d599ee1d8f4a89563efb0c6e4241c15fc0e18e3a7cef18ded22f": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746eaa5c38d861c3595630cb4d2f2112be1d47a6ead85f243042bafc1601eb2f3": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cf451347b31cf8917bdc4b1bd2907e70b7832191bcdf59945519f4262171dcb": "0x00f80bcffe5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397907eacfe7873180cdf6a592d30f060e84f4203ce1dd5bbff6d5267019df1ee1b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebba47714ef93b237f40cd412f7fb36d159385aa90500a1e226be4326d4d953e": "0x00989568830900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579732ba78e376c1e9456b7043e088a67d3d41feb1f41d62efb7da2cdb033fdee1273": "0x7a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7f40a01667845ef5505de076e96717c4991e04ec46deebea4a47ab6dbf06068": "0x00ac9de8d0ec00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a9348c60233a7389863decb1317fde3c46b7e5591ac10955619937f2f2045b4": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2b5ff1813b997349643239ba091f0df38004b5fc04f7f197c55cb57634aaa40": "0x00561064306400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397179620c8869a47e32766b21802adfd4c41f2eee6d515ad4228f317513c26ba7a": "0x004035d6579e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703872bf78d4b2bc03bbd20636b0d8314371b1e7f51f6de2d3358cda087ef5543": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c1ecf814d7ed85132287696190409b56d3be1b63d68fc4385bb02d60f9ae898": "0x00f2eaa9050f00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973183906509419142d8592867b72c5ab8f7312f8c4c1ae70bcb63f65c66d229067": "0x5e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c60bba29338895d317737d41acaa2f8dbc417d3a7736947c3c7c4ec654704371": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732393de39df24ea7a451804b2873218d094d1ef5f85b9f218e0edca81caacfa0": "0x003278ff3d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6378df905190e9f0a2fc3ee36d533ef977b47f9fffc16de4f613bb2ca994bd5": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397523827c4fa654843bd041ffff2a7a7fda9883b80ce7a9791c95044bb807f8ca6": "0x004294060f2800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a22965efee839778562380130b6b085b9988ca8213d79b9640409b6c9406ac76": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397641407de13cf4a4cb83e2164277ad1c51fcb6568a4d06b62eade8b142725dc09": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b7de906218a695ee0bc383d1a6bc2838645c8fa81b16b880973edb777d5b480": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974299565ded82c007ea54f76a9a3221d29c64cb2abae8ab06404a1bd2e5cabb31": "0x00a6c8b2dd6324000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702391e7ec5197da0499c1933d9fbb9bcc7127f511ae147e471f230fce9cb47c3": "0x00825973078100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a85f09b6c234545b83364f3d6b620edbb437f8e5f1b6791fd5880a999fa2283": "0x00c42f04c43b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971518fad4c96c3b46faabae6e3a2a2ea63bf7b679251ff6d132a826af0e66e1e5": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397207be858bdb6d309112f6e91fe519fd156b7870dfdc6be9f7bd7789892d7dded": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd8ff63a38c383b3bde3fde04c38cfbee26e9bb15ba273f53b3faa4bdfe46491": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40f26918b0854f04dabe7c1bae603239428271c27522d4e55e2aba82599d1d087": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bc024f46cbfbe2fc45e21d4daedd5837fdbd4b3545e8103c02b7356fc4e3165": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732f435da0b19b53f92fd06990f205931ee08b15eca6594bb0c13ee45bde9ac35": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8def41eb803a5a44e83edbb7d6661ab823c303cd010969e6efee90c2256365a": "0x0074d126b13700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976455a0a6cbb75398b15c8e3a0685d0077d244f6adb18aaa4f5f894b5ee5a240a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979aeb338b33ca6a954e6b434bf434d18edc46fc663c121211adc448e398260b25": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739008ebc3063ec10762cddd4aa8144ac2fdcb66da78f2d9a6ba4c29a4c92da08": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f24119ef82706287d0001a2b51706c1fa79629559c1d10dc72b9e3eaa0f562f": "0x00a2c66bc03201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c22f35cc35918359e423a1935a7206e9ab048bac95cd17c2431a7f1fc0fcf012": "0x006c2932302b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397194fa58714627bfd202ebce582a72da0efed92aa30312c786b824309b82ad1b2": "0x008c61cb87cd05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976604107400ab041ecc2ec9710a2f04df50a2930934c40ce0d01815d74cf39124": "0x00fa5354f60200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5c93417bc165c2b1748cde6fcf24180f9c9d18a8e350848926972d363bb36b2": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700543bf7ad0424db185c2389ead1b6f3e2e7cc842d712c81db865e1a581cf49e": "0x0098550f100200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977de43ea037928d0cee57886251d4931d265048cc75a892f82134a00541ac1149": "0x008a74cb221f0d000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4936e4507f99679591ec362ca897451ddbee048e9dae9a1ab2c8fb5fcc6285cdd": "0x0082377cd53497000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cf2eb6693ccaf037f9d9c85133a4021e15467c986184166df99cb73827f2a92": "0x00781154c61000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718845487bca8615945d6c3ff8600aaa51a4a7f254cabfe85ee80633408bff809": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fec2e1988911026db9b4bff937ac3ab147ec2252cf075ddd3d401839dc78b6b6": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb3ddb59d94ea25227c10471d5c8ebb9a11de052ca406c2aa2ce2bf4abb5c813": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397853489fcbcb241615aa39334144911000c5507c882dc85e33bc9248795783d7e": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978452efc07ba666f734c5c0fd6d0f2caa1564802ebd596a3a63f2f701d8f7743e": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397020f078e6ae44c9d48e84e3a0fe962aabd2a3780c1b19315c26b8d4f4bb4d804": "0x00f8fd0a8e2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d522c38a597c39d106152477ea1ee1d6f61e49b26f6b5ac776473035b5c699b": "0x00f4989f331800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bbc88dad42dc48da43182dde48c754f28f3d43ffb28230fc5b32b5f33431624": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e99b6b2cfe7b45559d7a356b6de637a79c7ae689d1f676c20d8c9e4bf191720": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3315caecbffd8825d5ca43cca46cd5a823b6cfef8849d3490003eeb6935e3c8": "0x001ab867e39b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be22bcbd70e515fb8d71608f41680b267555cc0ac48cb2973429e558d9fd60e8": "0x007a29e1bffa01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397238162387e9491275d053c6e43c7b4fd416c087bd0ba8563c90081fd6f5b1a30": "0x002291b31b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978088a1f656514debbdcbcc860e3db1d1ff1b3029433bcad792a23d6a5e53cb51": "0x00922e5a5f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f4cff9b551942bdf9ffc891e9e978c86f859419c60a248a1b8e164dabb575ba": "0x00c0433b719000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bbcdc0369cd3ed007fb2f2a543cdb7a60635a6ec6c9082f9b5d4965a96670069": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397050954c1d6fd46df31dc32f13aae0d8e32d2d6dc640325f4b5dede931c7ae6dc": "0x003e35893c2b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ce9986457f116bd675695a320d2c697991427b1fe6a8975b2d470bd11678cee": "0x006ce3e337a800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783834b50534ea5fcccd6a4d07ce83631f3ce342761ca5a2a5910bb3a977f8189": "0x004ec3481e5000000000000000000000", - "0x0b76934f4cc08dee01012d059e1b83ee5e0621c4869aa60c02be9adcc98a0d1d": "0x18ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fd684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e17968195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e9411a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad820018168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da58009", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c087648deab60ca80650e1fcb01f84dfe803b60e86c2083e80bffb21f53e838a": "0x0040ee7affbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6f2895b7f25df1559d6268c1bcac8368214ecb637ed1621c09bd5cd52d57581": "0x0094f4d8444500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f465a8fe3d06b4379a240b0dba2d39c2fa5c8745775fdfccb82b830369bfe9cb": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a825f0ba604c216f510fe4763a31f2b324e05a49b5e2c96f9761a165879fe254": "0x00dcefed772300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397306dc6345b8d278e22890cea0dee12f771bc75667d7dd9c34a86f56c78e802d2": "0x001afff3266700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976462e952e2d143574e5f1295e579029015532d2da97ccf2b756b37cd81573280": "0x005a3db8ca1c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b442aa0c4b6f204962b1a2de4c816d3a674b7d2204c0e642445200c4bc8adf1c21": "0x00fad415c00000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d36bd7792fac4d7d3557538ef0b8d7db0156e45ebfdc08d9e11caea11b11eef": "0x008ee409331900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e80a5123480226790991d2902a2b533b19b27a3900adaab2668536dd99ef8e1d": "0x00acd53cf37000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b2162a42ad4c45ce6ef7981dc2dfa42fd0471bfe6a632f079fb5f2e56adf536": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b66fd6bea730162f0a2207c0815596233a25f320dec3b73fe50e287e884236cc": "0x00caf46a592700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282434f44dc8b1864565e9ad190a802b1f277b6993122c64acec1261edfabc62c52ff": "0x0044de250d9e8e00000000000000000021b1256805000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397030e6ece42707f476c14c58db85198d607f6796690bd375c5e7f0d2b8e32a5e9": "0x00ee4d20ee4100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971db77c51cb622144dc09cfec8ef44b85aa76d0de9ed6c5e2e36e379012c3535c": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722950ec982428fcc3679ff788d3c5b80c11c73e6a6b74019230d6c3f5ab5c317": "0x00741c17ecac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da902f5c830919f8a01c6273af301e28b7f901bcf0b5961711b8dad47cfc1c04": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab4bbd20fa180a536bd5a7a67b6db9d8854cc2a7cc5b9eadcd2285d6c9038b21": "0x0044135e7e6c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b45404ad9ddc3750950a52cdf070b7267133c63d61bdcd1b961376dfe6edcd9261": "0x00c012390ac006000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a868058bdf02b477f9ea4b522bf0af37b81192211dfe597c84b4ea83b1ef8db9": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ea273a228b6632ce20e15109dbe441d6c6683684f49908ca3131ed9e44a5c53": "0x009868ab21f695000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c3274b1ccf41f4ec3624cffa3ea982040eee1d92da8a340924ee24e4bc61b28c": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8ae463789a5a2fb47507650fec113650d61d16aa8ed5364437cc169f0ccc131": "0x0074bccaa21b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4a27b267b4d6ad387c5e68d2724c75f30291e5ef041faa78c9b0b08fa287fd1": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784128dd15e08106dd2eadfa148d25ed3be073348c93f2dd8ccdf2b3118032a8d": "0x00accd72818903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edc14f2f8272e8d61c7516e26dcc7b728a47a013b9bdcdbb79b20d7eb79d4a6b": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397424266ff6b9ae0792521383dee453d6babaed959fe2d611c97f9801a5b4029ab": "0x00882070a41500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6dd2f98a94a2fad0b5c775e08872578182b834896fa294c11fcf6aa6ec99714": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976321b76477cad18e7207280a406b4b2f50ebd401a603a025e6378708ec423b0c": "0x0032b7ae9b4900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775ada81be6104985afccaf6c02fb8b541dab0066c5ada670689af351c94e80f7": "0x007e58bfea1901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c918f001c509f275fc20f06f992d93e14731e88512bd4151721725db7228293": "0x0094487fe37900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768f42e6ae54d00204cb5060847f005094069fe74be9e244189a5bedbe7a9c0fc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f8caf86aea4d423284fe83db587e3685bfa905bcd3f9f28694ffc07d1cc4eb5": "0x00e6a893f59d03000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b404dbe1bffd8027f5a610d588fb690bba39908b44ee46a442c327ef31f564ffd5": "0x001ab8ccb0b900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adae7a36653a5c87cf76066d97f8e865690756d3494a804adaad0d01c506ebef": "0x00742daa350100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797089b1c5287f7eea7c44382f7fc99da2fc327d6bf633806da3c65d442dd343e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f763f6d0a3438661e691088370b128800f1552f359920861204d6a86b4c7b8e8": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d61b3433df816e1cecfe5daf8de881cbdcddf1237abcbb8969cd80876dfa7b32": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763d2c2c95dd5b492bd07940539453ee4a3e3bd822aec5a64c9ef061c2f534268": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705dd4f34750067d249b93466e286182b6b366e560e6a7c8f5c865e0045d8d978": "0x006897a4ade900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40f3680842fb9c71c70445d3feefe83aeb1a4afbeb306b044c567f3530d675696": "0x00567189f71f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789b48deea271d529de53bf46dea8bc837450f5632d67dd39bba8d50afdd74ce5": "0x00222837aa7d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775700dd48659b98fdd589977f8d9acc50799f04ffed9113736456f20139037f3": "0x0060a23c5e6c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4761b1664223fd9279f8e80e68d7145f61f8a9c122e8d9e94938d5d8a2a5e779f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da6324513d4e3e6e59163e667d296259e38e9d27044ff98804827acb58072cbd": "0x00bc7a47413600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716516f1030a95f0867576a566de5217ff20ba068127d60f1b641b3933ff53409": "0x001e10ef470400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcbe565165b1d67d3270b0bf7765fbc774c81017a68a8a1a2e18dc760a0c921f": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973531b1c7cefea791cbfb79e7fc4b763e5fdee9bf173bf395bc4cf92956d419f7": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d5f1dd88d38b3361a16e406f6ed53c27c59389b02b7e53884e6a6a8338a2b92": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd256be2c93c38d729316d969e7dc57b7c900d2e53deb8382ca4a4631652d7ab": "0x00e681c6a52b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bd19497b354d5f9dae50977a5a6550c4e3d84e7cfe62c16b2d2a66302c3adad": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397272603ea7c7363ded58ffac06729dc831275b48bfb8fbbf74da6cb54e92de15d": "0x0050ecc22b1a0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397424ddb4862ed9b83f503921962cbbba7a0799b97a463327aaf7d5bd35a71f737": "0x0060b7986c8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397793b551c18be49a121097647d5fc45fd7f8418c1d276ec2e48ba2ed9b4b6b6e6": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c8b814605210501b949f726001d5dde1cc6265d3a683bda265f88bbd139e65a": "0x005cbc0f3a6100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b462d09e2075f7b6a537241d823c07167506f092644d9c024de1827924a071737a": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1105a281e4ceb5fd3e95da93a1047afaf2e0d5658f59e7b5be6e9c80e6cebd1": "0x00f077f8402700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a293379316d6213f5618787a77078510e4d520937f492b4995895934d27ea081": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397222cd0cd6c19c586541d9943f147dbb0e831bdb59682890667cd40abc634cbba": "0x00ceaeb81a1e05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397130ff39f4077954896b4fe7fd5141b0c3c3a0d9778d3d88dfa70a317c655e5fb": "0x0058909b1a3e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738708bbbb09a60647db7902cdac994ed953e6e7f3a28776ed4634f97ec403013": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f9c6b579a8e7a00b115cd28c040f89047a527163bc79d2122b1336d99d6c6f0": "0x0032468a9ae612000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729f728e846a0def519b51b82354f559246eadb8a932c308b88b3348b0f674f79": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f987623db85c4adf7fe5314db1258e6040270fbb69fe234b9d636312c3b941fa": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720f77a0c108d502bad945f180e997f8b04ed46e38edf12aaadfb3ddff5ca8405": "0x00c07ed6adf901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d957bb94e51666fbf9f3f6c1240ceafd4e914b68660818afef6d57507af80ebf": "0x006aedf4123200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d5d472fbb9f5e37f1479727ed7691992ba96e9a0b78d73a97872232e092b203d": "0x00b218f2c65f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e879e48aa44c2450501a5c6f1a541b05d1424fbc68c67cb928d9bf4767cd244d": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973aa5ac1800e48f7996aff4f226ad6d36c9042947d4b7f336cfadb6056b9b14be": "0x0048513e650e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4979c33208a02b086e463ef599fc696f1886a9ff283d5f0926dc2a49010125958": "0x00d266874e4001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3459aca41c27baa72e6f4fca0a9152240a0435b51482c24836357abf72a7932": "0x00be5b46221900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4470a7b7187188c331da21004a160921a2593f98478f4b34fb47940b2d478dde0": "0x00ae518f24d701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397177e8565eda5dfe7dca69128e120aa3125e7c97424f78b3bfd301d13f6531c72": "0x001ad45b8f9900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e39a8d9c7f2bd8c63866f621773a475cadf3d1975619f60570482e1a5589cc15": "0x00e6e02b77bc01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9d9f3bb08c927fc1f054ce859808237e9eae9807eb964f2d7e84b642a7643bb": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397274759a016bc590028d816ad6eb8cd73d888ec25b7513216d8e08e8a84db0059": "0x008c2a02902a00000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x18ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc16770100000000000000b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723f0100000000000000d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179010000000000000068195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94101000000000000001a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad8200010000000000000018168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da580090100000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972bc90c4181962b9899e66aea90dd4af4126803d7431c1929b47b6bdabf49cf3b": "0x003899e7d43401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978642b1a8e1a11ec5747638fc17e1c8b2522e6b05625de840ce4b9a6dbe36408f": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759c75899426e8a334e7ee59029f42e9ec14468208f8b3ffe8fa5ee6df47b43ca": "0x0066fa41c93400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748646d93f9367d96dbe5d389f48ebd635198762b2e4992976632999aab950012": "0x001cd6fe584200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f23fb260ab0c44cd98b98d2feb52ada9ebe6b842284df32957a1c443633c6dbb": "0x000ece41f8f002000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d75b16a890b50cc7e5d23e7b53b49684a99464dc85fb4ee851920f479cb3e2c2": "0x007c9718adde01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf0a94e0b5e0d6e404956fa4c1e4aa44cd6b508e4d42fd98579d6ad2b45bf99d": "0x004e246ee50b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ba38266cb9fbdb057fd063ba149d9ab8782bf61bfc4e8c583dbab628fb5ca78": "0x002cbcbad66f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a65f866af4b3dc68e1caf63d06672751ef4a9b1d10e684e1c7e09c40e51fb882": "0x00c0fd5f400100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d47eb02de7c9fa86d77dda417e4e34bdd123d50204af41cead50446a7c806e4": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75122f016b7a5db930dabdea03aa68d2734d2fa47a0557e20d130cc1e044f8dc5796": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325a98791e0671f15c5ba005bff6c74d43e098ddf3b3833e3f7a84ae65f4e506b62d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455325088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324774a93bb520ede4583d8644a52f95a6ba72334bf12ee6efcbfa7e124cec184c1088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455324088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455323088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455322c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d98c7d7d9154bc0968d0e126589f90045bb7603264edeb8f7b619834e35669": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7c26298fab2ecae47f88d6a0b27747a3cd0b3f1e616be552b77bb5e422f7974": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798283ad8ae55733346b1e3071ebf3efa8205ea3f9d720bfddb698f312d25a971": "0x002a9799bdbd01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f34970041ccea330f4f970218d59782a51916e43e13c4bf184985cc852f8da5": "0x00a4289f320700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763d03b61a16e37aacbbc2a3f5fd9d736b33866b9e31e96276ed3f8decf42965c": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770c6a5d83f7dbfc7128ad6d702b942c2bfb270ada0aafd35d81664cb3f473945": "0x00c0fd5f400100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397674102c6b57c5ccaa07fc87a0a5b7694c48c026c14bceb1471e04c111a782983": "0x00a6ffa0e4e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dde7e16f305e914fe96bb793ac35ee3c59112757ea85bf2974961bc30427429": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5062884328f6fd8ef076ac53195db573fc643eb9af737fe34fe346a1942c6bd": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb0ae5f876298c6738a6f56a94e5af1a15186a56d03d2f3a97ac0cc38065a561": "0x00bab4638e2600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4079d0714c2f684a7840438773346ba658b81b123ac84ac71a31a8d1cae36dfd9": "0x005a4a3ef00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9e85d006d43afb35adc52d3ce8e1f00d4131ab6dbfb93f54a565e7c12c2312c": "0x0014c1cb9e2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ac905a07f9f5dfcbe8e9976cf945837f5e4e0492e8926b73a3fedd35ac7a39a": "0x00060f4d674901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce47fffd13e737a75abc1e9e95546a23d0e8e378273b299225f093132f4ee820": "0x00263134770200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef80dfd45b17d275e85f8f9cdb39bf5efdc79efd0e26dcaad7bab1590842dc81": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971adcbe8bcfc151ac541e8e237ae64648cd8ccc9e6918c87814999d37fef5b2c8": "0x00e849c81e1900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44884f49cd86ab21cf91b76963c7ddc7fd6235eff0f18b1dfa73fea15e0d8b0a1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c3d2aa1a555570080f7af0a2a319fb7ed4846e660a680a4d1d27408a55222f8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773c821539e94383be780cbf3dbe7ae23e87911ee105469b3d02a92cb371e55c5": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973faa3b34758e4a863464a0bfe8fb35faedb5192e5691ef6736cd6f8d5d63d9eb": "0x00c8bab0cf2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f81e3802ce8f30af05071a3b7ea06d9608a66cfe5b94139a12de15e9d30daa3f": "0x0062ebffa05700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0e678279dfaccb1bc44994a1e1a32fd065270f3b4d94b36c7eecc7fd44854c6": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ffbb1981c310825bc2daab524d54d7b45786dfd31b623548cef66d2a8a84eae": "0x007e58b8edae01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b38123220a96960ad44210b5c66df4aeb8ec917f3243a72672dd69b36b6541f3": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c11bc60b3b0ff13f3a2e5e436fa27aefdaff03cef466f07440c440c754e60c35": "0x0084365685e34e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397898e1d0117a9af0b84c7732e6931a9b2c488c0afe1e84dbb4008cf9bde9f92c8": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978cf0c39463fe37f7de485d4a18e4a167a4187ef58173b05ef51f090cf6e64891": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed1b3c0b0f973b1c77434cc947272be5d932965007690b205c93f826cdec3f0a": "0x005c57d4f6aff3000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e43535e0de5aea3055fa93c81cefa7e5196031f5d0132bd4bf2e6661169a44b4": "0x00e45615d51b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c79eaaacf0483bad48cca0994af6d45f942ac6dfc7e02228d88db0f7d5a10bb": "0x0030ba393ebc13000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfe57d263c5a897f2f145de77ced556587e39cf8e8c89d9fe8d8d11e53e4be87": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bbb919aa5ce5341293d001300337675c424423cdf34beb9ffa6e3a1ef05e44ac": "0x0080e702852509000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c5e4ac9c671fc6120dcc1712dfcd02e9624613b822a3d230c00c77742870457": "0x00e61c8dbda200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774a5adda14446f53f4725690a75339c475694b4f0db927a6b852a3858394c3ba": "0x0080fbbf800200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b430567146acc0d02b2edc61b2d9675df42c036bfcd4f19f37b8574fac38cb8613": "0x003c560def4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397418f8937c5e4b8c5a1041ec93d66a2d19f600a457c93d6b23406ecf5f7075bdb": "0x00f8b460847c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c5d05e0b245f1a74945a11c15f23730451bd4e2e94311dfae6af95c37c4d501b": "0x0082377cd53497000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973e57671f96561c20bed728a12ca7983054af7d67af145c3a3eef20696cba19873": "0x2280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef35f3996d4146a416a53107c6a7b895a29f3738362b1fd9840a36f515cb0efb": "0x000cf037d88207000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b97012e17b68bdfa5b4be393d0a06961012c7eb037832d2fa2ffe0e7d760b1d8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c1c21ada81acb03fdefc85643f8d52d98c99cecef5957e729a478d9b5474969": "0x00406cde340405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0013536ac1a6d304c749f9e08cec9e7035b9dd7d8393e69d182ff5d6939d534": "0x00a2ed9f605600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd264d278acf51adee8b20f0042b80ceb50e82bbbbababe403053eaf2e55573e": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a655be16fed87b606a5a814334acb070480a22d5430de98c31e0f09d7b4d972": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b05aff73d29021779c431b4597d9374bd45037432a560e2aefe15a37dde784bc": "0x00e898be808500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0c02b506efc363a9bbf865b96fb063bc41082d5487d7eaa6a722ef437bbab6d": "0x0096af54984000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af6ff73cd7ed24f783df04b5933b08e230f8d5fef6d3f28df85f928c7c209d1a": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735619ca4c15e0755eb7614f9eef5db573188b89633d59b2d42ab47634dc21400": "0x007804cea01e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d8b05286b98be9f1617ad3833c662c44141fb7805a466e517a125315b12e213": "0x007a0bb5dc0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1c3e5c70f4c63ff793f72e929fc65ac72b5f72137843ceaf55e3f05e3b59a97": "0x00a234c7d60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397040e335b566475573cd4e214c0130fadfdbb4c094299ada11467ee0009059ea8": "0x0096e772550000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40b945802f68263ab63b0fb6ff25406242fd4a55a43034a3e1e52128e5a4aaad7": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c41807be13e98af7c7864de498804c90761bbced99e7d7d2e8aa3d21c8b09d69": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acfa13785c80ca097ef8231b66197db78014a5c66dd83bda0557dc173af96b51": "0x00667b03933200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b8563c4a9bd69a30a05fea770f36403ab7f8fbb1ba25be3949a6d48ee85a0ad": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715f55c1d1c905d044774f48c84250b6baef9494b64a61026dd546247053e0208": "0x00e229e1701000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778be5cf6e3b6f7b8b6c3c6c48303f014e0b2b5ef69cc26f9c98c0d6db2581ab4": "0x00a25665ab7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978fa7814cbb4f9085a0e10e64f25c6bdf3da124526fd5fc2141740491c4b29d99": "0x003ac8acc61100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768560d67bcfb7195f2191908c588fcb83cc5efb6bfe2aeb4856a966cc5ce9407": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970df5b74ee94f0c77a5cb4a94fbde0a062ea0551f19e26488dbc61be11bf7a8fe": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f8d8e7afbac8178668193dfc2d66828ab65c7d230a8c2737b4cee38fcdf43fc": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e6281caea0e6354fc8b07db2664305fc6ac91673861f3aeaac870cdb7d10b28": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a16268719097d1fd6560a9fe5048a2442fd4b9019471bac2f637fcabc7e84bc1": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fe4abccc722d42e89300d0cab428bcaad44b57821329e6798f1b8f6d3fca098": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970fb3fe32a414cbd055ea6305c1e0f0718a77ed9da1fd71913680d0428ac3721c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734cf23e98b9416f82261556b691c288aa237ed2b0cd0551ffc17e38dd42ae1e0": "0x0016ba87ad5b7b000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579734d84520c5f6e462647f3d5388a102b1de3f941fca61293e4cd003600d28cbce1": "0x5e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de1b7af6fe7a96de4a9a6b0865221b512b7552674e5107809199f1aeb7f7248f": "0x0092013f348a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b2b07830c108fb2b3e454309303fdc8ef29b38c7e68b648bdf74e7752a4be5e": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753dbddd605d462c0717b81de57bf3fdce72f1111a2c5c432b3e933ad23c27a9b": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aed587de83312aa79cce387fddd99614491591ce9dd4a787a8272587ff9c30e8": "0x006ee223f3bf00000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397652ec0b736aafe307517e82799c99b2186c161b58fc20c4b7dcef58823dd9e89": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5b58cd7fe936ed45964fe80cd9c08e15b8780f8b03fe94fb321b7ae7f4f0fed": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397349c08d4c7fadfe6048844db576fe249bc018221dff26e01c4e225f0a45c2d53": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977808a738252c05729dafbeceebfaf2dae83b59c39d97f64a34d94b7c820a6137": "0x005c01a6223d01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47851e0af960f4ebfbaf56fb9610ddfbebd4a7ab8f17849cb14eb9c1bfd9e1c99": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a5174bd5e2b080ed43ddd953ef3e3bca1426a4ae21ce446af6fe51b2ce64ddf": "0x00b808f1f31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397453d5ddc0e5dcd4b327c5cceefa4ada1c63ec7f1ac3261605dfde2d07d10269d": "0x008a39bcaa1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea9811684484f47266741cf2790ff7c6ea8c13ce652d01933d406e583411d52b": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a17149903eda930c9da714562735f4a4db52698d3b7481bf6ecab06e3183a56b": "0x007cac4553a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f001673538fd05d912880cdd45375e68462944cdaae863b48ad6a3ba491e45bd": "0x0030dc8f48a101000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46fe7d4bd079b8d02640b8c1b8342f336fa2ab2c5c0f2cf422538a36e54539b79": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976977435bbf2fc45cf545382a7a57275da74eff4289110d856f4664f29ed72d83": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740a6e4aa183d2e1d8bd8fa217a224def3f0c768fab5e4c945e0d73290a3eef7e": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f15f46c1dfbeeb8af5ec6cb975d4dab6a5115a1d88f323c11766a7d3c50ce90": "0x00bc082a630800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b8d8aac0e9e29bd665123c20d8534806e8fee0dcbc3605a2759bed79a7671ced": "0x00a225b720ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e329cdb64032cb6dc2ab70b90983faf6b97e92081ed355aab47556af46bfb83b": "0x00b0f6194b2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b81a0ca87fb2bb1f64c5e731ec6b9b60f6694a0c343c9e5551fce399f3302dd2": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397175ca22cc5da19cd4215bad6f6db3e0ddf586b7624cac2d6d0eaa91854cc9467": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719b0a0eac2dce2c4a7a3912dd5896c575fa3ef9b3a048237fb024ffb0ac2747a": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978991a0c896ecdceb517ebe69c883a427e1a5c888a27ca8bb0fbb40d932e3daf2": "0x00e08b22cad305000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397819b66781296d974f2dcc0c9933cf7cec1e37fd909d2e882d9183b8f2b672991": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb83c2bd7b294c3edefb2279eb9851106450613a57398a3078decb8150ef4822": "0x0036270f8e7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ef31ee8597f399d5a36ecb4b574cb6073a58866367caaeec7d3ba1883068680": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5af82d89e99368f42af2be2556d6be9770398fa6071a9dc3bbec4946fbdd43d": "0x0066497f817f07000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b436e16459dd6eedce16ace5639e4ab6c4d950258e15da15abc7c502327a6df140": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397050e88676062a80ad5b4c942fee2b574cdb8bba9592dc8bb95a674dd62f51a41": "0x0006ae27a08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8bf689b609bfad48c8f209c2b1f63e0e58401be01a23ac1077f123f9481c8b4": "0x0066f52cbf4e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e984abe0c4e739ea2a0874cf1c2bb901125c7e52074f04d9fe99b35a2e672d81": "0x00f0ab75a40d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcf41024de3e725e9d161c26ab3e76e066180d19bd005533ad2b2cbe66b5a856": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b586e2ae814bc567c7319d7978b848c1f86a57d3ed9757fc45ce08e1f446965": "0x0022afc58d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4be358cae5ba6ae477079c3bc56fc328444ec11b40c6ba8dcbdf1da830647ac": "0x00cc3bab081700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecfb69f2716116ffde0e65df373b4b09b9523f70d32c5a687a2ac82f3be99165": "0x0028c0a3822300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ae0c02c5b43fd3abdce03101c17d0f8ee8ada6c267932bb707c4c8806e584a6": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739667819c1e07be2b943d4099c979d6fc4fa03e4afa2e731bb750d537f21b182": "0x0014e8e34aa101000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44a4e9939a0e0bc87130bf4b9359152ef2ca87f124c9d55d14557b82c7d174ad8": "0x00e4b0a9fb6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724c1aa5e7f15e86bf805298d7d72a2a3259d48f4c5a88a61faf9a7082a918853": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bfdb86218d23d688058aad9b949c2a6e5a4a19202c34375b1ce300ffebd91fc": "0x00487ddee25f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708788bb94ab56198ccc705fdbb0919ced65f60ce39be72e56bad07b7a4065a6d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b89b100cd020b0223397b50b763ab55e0b034b0d2bfa1690b8a8ea4b7fdba454": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffe70841acc191a543beab570c9535a256c41fb8ac02ebdb8eece36fa976df6a": "0x0066172ede4c06000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f25c55d03fad7d5d2daa2bfc7079089cb6587d8edcd1b6d8679919e9d8e67ef5": "0x0076022bd77500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f70be6113be881cd1139c47bbb3e408d78e197350666884853f2d36b6997f7a9": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397017aeb0e9f9bf86230e0e6884f3ccf3b61ec947229ea0c7d4dcba8c09be783db": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d94e253bc788d6645ce218bb3d79145351104af600958a2e485b84d76bf53e63": "0x00ec759f88c604000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579734a4663ff9c8628e451d504f5b57149cae11d0d022c15a156067b42c34c3f31ac": "0x3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b32e8170aed1a558ee0c1d65acc2a9dfab677a2c54ab9f353be892e5798f0d05": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a968c70c6ae0548c4ceb6ec7e8e99c5faab3058034d84ef219dc8bc78b8a61a5": "0x0076585b061100000000000000000000", - "0xf2794c22e353e9a839f12faab03a911bbdcb0c5143a8617ed38ae3810dd45bc6": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0d016c2747a279dc4d62913f84f0dc045d9d5d7740029cfe44117e7e1584ae0": "0x00760a48167e07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c5c6102674305ba4954a214540b10245b686eca7d7d2c9748beb692bf5cd212": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d18afebdba073d8ca5e9dc0f58028a8ccd4e7b17bbaf2ee1e6b7bbfc2b23ae49": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd865faae90a888380d8baea440af24f73ce301aa7c0438f91569bbf2a9900a6": "0x00185504205500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976fd7c1706b7f3616a6ef5eaac7f50f53497cf57c0648abae9a57419223edba41": "0x002c467663c700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40bf67bd259d9d6ae1681b1effc23a4dde4edf79f64a19bc56afe84e8dde40e42": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397565b2879c09fa6ad5726d8ba5eb5a15b5850ec9948491932b109829c790ba367": "0x00c029f73d5405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b452dc5c6a1c0c06702535234b91fe56c604a9d79e45024d43d36dbb113ae8a3": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7a223743998937cc44ac49f01d78539cdb21a1de42eb9d814437366551c2250": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1a89ce7ed4881b368478a7f676b26f7c6920098dbbcfa0cc9286eb80ec53ae0": "0x0040f09bbce108000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282431037d2efe6f18fd28c1070b8e65b2b7b5487a505662e5406964dfaee106d186e": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e041aea19972a6d0ce2c4882f3ec628fe3a40e9b42e49b88f20f5b137f4f162e": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c1860d0e9033411dc776dc82aec9d55ca6f3f4a804104fc0d9e5743c6a5eb9f": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f426f6dc2d695663688bee04c774de3f5592966cbd771d4c9c741928a73fb1d": "0x00c296aafdc10a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e15b9e9488bc7a11510fd2f90ebda64ae0a072d0404f7f1c77ee3172f5fc33e6": "0x00cccb758b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798d70864d2acb67ad8be3096cf4ce1e1232e1043c98e5d573e277d70f4381d53": "0x000458e5341b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd53b251800a17766ad88bc81eb32734ac36437441aedb67147fa1e799b3c112": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4eacd000ec4b740ed72a8c36547d1aa85d00a924eda02a003b990d2734937cdf0": "0x00f8bf551c9d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974defe5a19687116652f6e81b16bdc16af64e1e980639f27344e3b7ebb5820125": "0x0012a3c85efa00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579730c86e1f2912ebd6264f8b0d320bab1db66968cfcf9b007a65ead378cfbf40de6": "0x3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d665", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44e1e87ad0c92c0f66ba05485324e75c02023df995ae49d21d823675667cb803f": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1f4a90b4b6698a3cb1ca3ff2577355162cc3daeed96b143df3927dcf1e32057": "0x009a685f941701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970970059d13d7aac9ea9522dfa0ccaef33309021ba3c0319cc059cc5ed27c5d01": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa0e30b1c7f9651e78c1375ce458a85197dfa3ad7140760f8486e3f5b1ea3946": "0x00446b11410300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c0af787b6cdcad53aa6edf7a34986597fa5976cc42141b40109ead1ac4d6559": "0x0012a7a61a0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab8d209283fdde9d4b354ce1aec79943ed03c52d2d63abcb63aa9e530e4260a0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e94c0aab910577d40bc987d2700a27aa05c7e3cbe925a00b71e044d62bde6bf": "0x006c9bea403b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397428baf33028ed463182d79ec75809c9bee2fb08bba4e6018457db9d4590ac72b": "0x00a44ae6333300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed4c8b7a815d71734d4b134158154e5a5d571c1997ebabeb32888f579044a3e5": "0x00341a7e291900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769ee391c13a7ef3980997b054264c3a8f63d8bf14f6de780a7233c7e0ef5c21c": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8b4fe68ee27d76d751231e36f790ceb3de4774cee5bd53f32c58a127841a945": "0x005a64433e8800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b420abab7d268eac2f6c8bb2b87beca65e44bb35ee6bb8c50f61d9292b141d5546": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00b0800e91aca32f0000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3c064aa3d5e9c107f1d5f05fee025e47c210267baf2ac43bd59724532117c03": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976dd6e00e6cc1d7295aaca9e9f61c515a407354d641da310ed19813cff51b5480": "0x00ca73a98f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f83918e6874812aca58371f2acd34f4161e09da85d075ccfa3d0b164206d54e5": "0x002a0967c50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb2ed43b9feea240109e5ffe1e6e0e803b408fca5c07f9f42eeabb4a4405dc36": "0x000cbd89fe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b699c2af68f827524ce304c475b5def26b8e4d07b514fab864d5eab1e4bf4fbd": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795cea311b9197a24251629484b0712b2fd31a9d7f5984a619c77f48fd3f5059f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe792f6002060d6c984c8cbdd8d5cb1f3c22a59f5f116a543d29f8bec0808bca": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df28017d607812f50872ed7bb7476eb63d7deab5574c51557674223cc3811924": "0x00c408874aa601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ad8bf9ff085dda3086aa83094630afec5f03bb501325b0e994ea4fc5a74bf93": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2eaf6617e46b0bb0c44a3172f58d9a4c734ecf20e651caf122e3a6078d77e6c": "0x00482276b8c703000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b440425f615c631595a4016547e6a17da6c85dcc934220ada56789a6015546d2c5": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fba653a44d566862ed933b58347b5b678647fe23fbc63f53f7b82c77c83ae9f": "0x0020bc2b7d4d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b74c81f7ecc836e4b7f3b91300d53982a6b0b7ce21e3c7068e152d1f1c747c62": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776d4d694f4d5b6e1db9acfb2dcbb6e38114c1910976d1bc29b6dc1c82234d4e9": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf65dcf4adc0b56eb1b025c57cc5f7c9217570f21f956a4034b156e42a78214c": "0x007a116602e800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a1b2554103ee01631213d81776bbbbede650480aa71441cfe35ca36625531a9": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c0d6d53346f5296e6d23e4e29e200ebd3ad677453cefd56bdf6ebf26acc7278": "0x002656d56b8e22000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0f8fccffceb5423c5a15f69f08280124097b6548931a0541494b3d8a0b219cd": "0x001ea1cd27b603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977acb02cdbd4d622c9421d4d58ebaf801ec9f69204a18e8f4bc5c86bb068dc2d6": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d04cf2b539c1400c75bd382d1832af5f7664147f8381eeaefa5743e40665bf8f": "0x00540ec8632600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b413003cbdcdd82cee7fbafb34d5361b8ed123ecc649c80967baf9aa4bb77ab0b7": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397135e0a4baeb85feb2ec1a7ad4c0d146e18e5d7dc680c061d2f8079e890a6fe4d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008676c38dc8071a8e13fc50b1bc3c74c9414f39d8d164b6e8eba0ff1f5a96b7": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ac11ffd7bec30cf57ab5a97e742d036bc8f33cc2c9a6cd7b799f541a6d7b8ce": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397079796f256ede4531dc4146bcfc9dbc544f707b4f4c17b137e608760fc3241a2": "0x00223675df1600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282431259f61aaeee32ae5dd4ccce582589d6ab6004108ec8922e0519a389fda4ada4": "0x00bc15368e363d00000000000000000020bd175202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797af1879293bb9441e89bc5e31fed7ac3e1b1c14920a0ee768b1ebc4311f29e2": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c204a2d6c981fb3b28d10945bbe059a9f3181c474268e3a264682c1948653d9": "0x0084fde0500b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb71b8372dc7b730a90dd0e69222ab083001a6d2bee229e9835afb82e0f4c343": "0x00c48d2dcd1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a37c2141b6d26d6234a7a82679fc6957e9f976b168d75607b3a73c485298831c": "0x00985db8783319000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397898d79cc1e5584f2ccb1b9b3d4dde806d221d90a18872a6077ce64ea11f24d99": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397955fb58122fdb1793572853e7cd48bedb1d80209c15deae1de9a364e4c1e608d": "0x00d4238d32a200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974191fccd7bee918390449e59419ac02d4596a9f73bbc36493523552820a98290": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0488e01f1f2ed73eef89bc1f5b3ff762f4ef9e37f30b832fc82565f0d14bc86": "0x003ab9a30d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793939493f6471628d8583972f3b801a1bc01230a528cb43dc681a78a89dd2542": "0x00ca3777b19c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703cc4f59641d782eaa2335f428382c4a2cfb37daa228a1fc6509761523775fdb": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4efe19beb29c17a940087605a7a33efb867595a08c422cf9b7cfba0b2388842": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0260a282518d553819f0e8b1d6323b2f35d609c5bcf4141d459accdb8d0e6b7": "0x00920d70945f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b14529fa5115ecdef33d7f36db66935c9346218e6eb0553e7c5b5b758a36749": "0x006e358c46ac00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b441779d26f06cbdad4a031cb42fd4d649f41d38499c134aa0655e3adcf0eb7332": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5c04e1a137d21d66d537c0e62b3ac344057099ae647d185f9bdad42f9ff75fb": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3563285d40af04d6e52dc6a955a06fa01548078245acfab102d7b5c41d45eab": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a544afb1cb2aad25fb9bd6ea3ddd35e2fcfd655ee8e357ac58415f701c8dd3c": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fafafc5db4913f5d12c8e2a78c6662422e58b725ee9f251d5b0e8d5a3e6a2b60": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397805960fa078e64906bb8caf21b21fed39b78870f1ddff65800560963df7cb657": "0x00dce0e4be3500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41da906a21baef219d4eb7f8a144cdf15a088da1c1ecfb0c39fed8818f59e42f9": "0x00da868e32f600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ae4a6d8543b0ac036f100f06f89dfa4d49c5fa4543aa9cb2883c26fe34b9ec3": "0x00ae41ce5b4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4c2a5f0f6956ad7374b404754f929868e70341ea83e5ace378186d9a02c5d92": "0x002291b31b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789e36feecb230ae60b21d827935ceb9b6d425cd2c01260d9ac63943286de5834": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397992861bcabdf0bcf2d0c86184711c83d1a2c5ad69eb191da68c41e816b9757fc": "0x00b4766a6e4200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397589611640c8331b9c28d902ae1b3f7814fb1e895b24b03e2c3e0ab6e1bc6d096": "0x00822671511200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b3a6c376a040bbdf1cdbf26e7d08918e59706a24cbdffb08c8472aba27a9dea0": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf4941f7a322ec9514ad9322a1d4fd8eb8e70503b9ddf68bc8ba688f4cdd6fa0": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975acb5868500bf781f374c0f7890357fa8f06c1f1b9702ff6c5832cc75c4a9ea4": "0x00b0631b220301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd770655207a9ec146d492c5b39ffc5c1cc89328d692a0f896fd4e080af2fb8d": "0x00a8c4dc04b600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ae243bc0db34bb6ebd415ecc5b5a94c71c10e4259d72ca112c9f487517094ae": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bffdbfeaa84467968d30fc9d7f02569efba5ea3c046fe79ccd28f5fcdf5f6083": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e454d8d7c4fbec13962bbb68825f4a76b538a9f1d24d0df9e0c44d695d4b562f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702545431a898150c42e5e2515228217ab00487597e8a8c6078678bbc7460a736": "0x000420885c3341000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579732aca8b91876d3671ab52d6778988c8a1d4bedb0425edfd52b59bed23956a81a4": "0xfcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a51601", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddebac5d269e7669562c791ae646ce0e9071a31e7dc8480f6afe64ae9fb1b739": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6d45d20813ada0e5858b4e51f6501be70038f76b119921795ce9fd3b98ec3b0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978dc13b43a3b7c0be5e84ef46f8ff7f4507246d91b3e13cf6e41203e7d36c5fbb": "0x006a5d2393db00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8f9883c3e1172329c5fdff42bbadfc843ef3b9126bb5b422d168b15c8fe137c": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a483a9a3034ea15f940a10d12f3c14baa4a357b09d7aaf67f4617754fb4e77a": "0x0062231e5e1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c28bf6aed7a023dc5968166e233130990e5bc010da5eaee1c4ba19ed6b513229": "0x00124ccdab0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397126115d674cad7bed8b46554a31f483d08368b4cc00bbb6fb261d8b1018e6435": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339782779080567f3cd33406770cd132a2ae7c670f8a06517f37011ccc552f29ab6b": "0x005cdd841f9b1d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfdb739b628cfc335e92453ec540a394467dfe498bf1f4b41b73f01b68f4522e": "0x0022b2219f2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759e997c9e8c10f792b37e53b5d39ae89e5eb93715fef1f2af9d773ee739db1e3": "0x0040e022590e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753e92a4cddec1437e712dec5056ddbe110ce0076af90de29a391b5a52dfff96d": "0x00c4de2a7b8d06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3899112540e154068163fc0278e50f224166f0705454f4505f49d36b3921ecd": "0x0048b4edbc3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717466275c3924112f2efbd27e6ae2a1d8a44b0183adef58e10187cf5e6038e0c": "0x00a42fcb056000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397059b0d30e340868696488935de7ff4e9041dea0f0f42a422a9fd45fa6cb7da35": "0x008a8b0e1ea400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397060fc955e3e2467a2927b86c89114c7c1ce65317a74328446be76e9d3987310a": "0x001cc7f59f5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a12d38db0be74e67dfa22e3610f895bfa4497237de8a91a970ddf37695047f52": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c5825db6a3813a2b6aedf272daed10e1b86c8a41da155185df067e8c32c8cfe": "0x0068eda86b6f08000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397029c9baaad74b6e97741da5111124436c1a026125b54c1303d7dd713ab8fb3ed": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750090b716ef32085a72de1b22516806a4ccbea61514bf1bd0e23ea7a8f4acd5c": "0x005251bb825901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397695e44915dac2578d3a18d0fa5a046bbd8f311c75319181b75037357c4224542": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733fefcb48a6f4e25e71ca58443a37529601ff2154c1ff1ab4e5e576d8858f55d": "0x0042b38c311000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b4345f90a1b867258c06939e4c9ee0504690e057c0a892d303a2f1f4a565e17": "0x0010a125955101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f97e4d101b62a5441e554eb46a29878d28900d9c44da067a986fbc833d2dbccc": "0x008415f7400001000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243931bda21d0851a0545b159f336cd393b51e455830af4b3d6c4b764263eb5ea9d": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dabfe3fda5913af784c957cbebc43a93d4bb6f1e66f0134b14358f9f24acd3fd": "0x00ea85053c1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a125543db336ee1226f7e8533dea80a01b73ed25e10f60f1034eed5cedb3dce1": "0x00ac0b28f31102000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b664d0163575919ec4c6a2b837471e934d44bec7846b87af98f2375a5acf357": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e055600892532c46051878e21c8f9c5100b2de9728868e168e449a90e3b0456f": "0x000af98dac2100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4931bda21d0851a0545b159f336cd393b51e455830af4b3d6c4b764263eb5ea9d": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acff0f13a3db70e9cce7a500d34e64df508c91b40aec75ecf8be17ffdc3e4383": "0x0060970a641c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0230991f841b5914dc842f826f202125423605f1f0b20a61ab503347a2391cc": "0x009ea646782400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4cf0b3296a7c2f8377c7b912339e1060e8f41434a08c794bf2850c77f57e05917": "0x00005fcd95f209000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718322578b492744bf3801935a3c994d634c4ae5ff4a36d42ec8f0988b85f7ed3": "0x00a667d3930800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47060560136cfa8d67aae1d4d7230d5556528d5dbb6ad74c5afa4157a8f9867cd": "0x00bc15a98b8f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784fbaafc76e6ee803463a40f610870c0c759301d86b7ec3661753b19c0dc31b7": "0x00e8868f1b3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397316947786b07a694a39efb74c165a41a6a6cb274ee68e16c67e4a0bef0f54752": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b495fdbe7044c414c5da4e01138ff2c4b2e69bb603745b73676d7888108ea85112": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b868e265492331c94ea218ab0892aef4a4a650a334070a02e83c46ded9377ee7": "0x000033381b3300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397249cbeccbfd663d78f4ea97a16951610a925634cf7c69ffee9a86955106c18ec": "0x00b039c67ebd5e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397031dbd6ebdbc746dbe31ae67b032fe5a4c4318f0806ec59247c85964fbc2b304": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397add9c33825e5821f37ef38d3fd8c6494c94ca2f08cba100748a937fa6970aced": "0x008ee3351d2bd4270000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c08e83090bf1e4f526b59c3b7e079f7cf5e9a39192d01eb23b17ab94ddbd9952": "0x00c8f4b6ed0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b3574e8341e8af764ffb71cd8aef18a94df2494396963ec3ae691929bf689cd": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972844ec16e4932a4ffd399eb9ebd0f05d16bcbffc5465919f496d852e8bfc37fb": "0x00022d34640b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397281f7764bf03e364f9439543f1ae952f3f4e916ff6ef4cb892bf04c6040cd397": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb23e63c4db87396ee2db9d04c0974c469a203d93df6c869327f71f2ba86ea2e": "0x005634ac23476d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edbdb1b69558595108da17ab4ee34f3dd009cb627548427fbb82528e80628913": "0x00123ce8e27b15000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397461412a9517b615e6a1a24e5c6467517ba6cb1ade51cca1addbf93f21f138fc5": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397876ef24d01d907199b7191ebabd9fbaa04c5fe361edf7dbbb3bbe96869a678de": "0x00a6e190f59b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4a8161d5820d3cce96d810eb9417290fd93de15317526b5935fa8ae4c0c7ce9": "0x007c6a12795600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f35b5c18a45577daaf2b7bfb720fc83f5f52e769b1cfaa63880f7e1d2fa6903": "0x006a097df4a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e9b0174f8556fadb636c6ddc0ed4e56ccf833944475c3a5eabb10e824ed4445b": "0x00ec851e755400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397daf8f700e5fa98bcc1ba9df448e3b4356edbcc2cbfd245189e6a5073fe6f7da3": "0x000cf723526800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722929a78cd0e39555709cedadad85360170729e9bbd1964fae2024871398fab8": "0x000a945bc10300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e16c522c1e5c531e29db2c977414ff4d27c44af7e2a123adc35ab0d1296f8b8": "0x00c2511f187800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978dec9d43b4d58561e70c838faf4736775b642fbd4aab24bf517184aefa59750b": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738f36880d7fd172caabdb2b27a8d2ebe43d976144214dab403fbbc5537685069": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b87a3f8dde24ddd26dfc612fa65e456e37465fd53e120f50ebd74efa218d91d9": "0x001a1d06994200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c96f69650289fa3e737ecb2f659dc1cf462b59cb6188b483b6d4884d9968c99a": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec1fd62a8e82f9b4b6f37ad42299279a162d029a40a9a02e69478d9dbc31f502": "0x0056550116ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab2791070508ab95ca32da475994760f8750ab09e90f2508d60a6d67d1458a91": "0x00c0042bb13015000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978838b6184388464b04c03b5c52e0266ca9872bc8929a623178e40b027a3705d7": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f5b2937d6e608aeb6614af48fb91063e51fe613bbd59bb412e876f8fbaebd1c1": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5984cabc5fd69b6eeb9273fc95183d64ea41f1ad5fe8f1077536b7b75a1c686": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970362ff7eda73208542c42bb914ff74f0756b094f58bc006b830c42741472ecf0": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979947ba5c22d3850c382ce917a61143223d42dff7eba1c1e085791ab2bdcd15f1": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d3e97355b6e29f4b6386c92729977c6df3c85839d852a0bc129177895edb515": "0x00f85e3055e100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397051af92bbb199b1ef0c4931a0b35cf4886a5ccc5a7606efefa6eb0c879dfa37e": "0x00923d997d0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7b0461a71aa227c9273b4f80d8baaa225c01f9d81d72bf7c72ced1e7e3e367a": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdd1e867c9734ab6643b325393f747de775a74ac32d8c50f1cd1cf4413390e7e": "0x0004b90afcd600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397344f3fb940ee124ccfd0bbe0d3656412cdc569a37dbb9e686f185433763769be": "0x00bac1e9b31800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43b8838062cce51020c9cfb335a55c68aed60c70786a6f70882a229de391fd4dc": "0x00b869b1edb600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44bd2bb3775d2e5ecb40ff4a8f12c0efe8bb40a06930e8294bd371baa2879b0f3": "0x00ca26e4674802000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42e40d43d28190616ac8926324b0bb99a4c52bd70ad9f7b10f6bb82765c2e1f70": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b5c1a91100d3a2a46046841a6cb57406cebf13890c1ce09ee4de45f5273435c": "0x00a02b27a25b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd0b8198676c0740dfc8997b751ac4fe071d24ab75a3c1e16328e9c31a795ccb": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709f25f3c04afd368eab6b4d0f969ce3f9854ff5787286aa82ad4eefcf1375bde": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb85cb4e5294cdffdf86783862742eb97a89ea8a45d520fd42eca7efbbe543fc": "0x0066c90483c802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755878d6d1daca93e421b89b3fa0af899af4d0f3759c182e52d970da19cd4b113": "0x0020f84dde7004000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f7b3209d5965cb89b9116b0ea9c125487eea9af3e3bbb5138d0b8bd523567d74": "0x001cd01a8f7b43000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397082da023e83ab3c5c31a9e4089d9ed1e902845a83d2be4fb1d3d6b284f3afda9": "0x00ce429ebb4103000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d60cb34d738ec904d68c9d331ed1774ee45f300c6c7c4c54a916ece207774814": "0x00ecc28c1b9603000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b444cee1a21bb64deeac54fca37209db71de482be103cdf6d13aac76576c314efc": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b49a8cda72a4c56000c7d31955f48652a06731952bf4b47d336cb59ed3c456a": "0x0096e772550000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2a5b3903a2186e3fb6be99d1f795c8950574193074479c117083f0a8e2b1e28": "0x004af6b3941c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bde7760427b8236b5681704df9f616349f801752a955ee2024ba6da0d68fc03": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9623768468d2a71ddf93c44364790c269801fa64438c13dc20ecf40b3eb103d": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b404e96df460ff8eea2db9fbca87620880bd9cdb6e2b2ed4b421bdfc53d26a04a3": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ce65e8230b040846fe102352a565d8d882d4312ad050789a912ede9ac992a0b": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775c76a987f6694dae116ca8ea619221f1faf1c5958f838656018f0354b155b95": "0x00f65e1e190a00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a3b946cb497f690511d1e866566486634ecce782196e17bf8e803dd1b6ba437a": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9f6894291989d70a8916eb373708afa86f2ba0ae45734d6e76d84827d1e11ff": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a10a4abbe9f611d190a442fad27d038877fb3aa97e6703645d8e96c465bf06ec": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d92398dce0cae27fb448b25aee5c557b070a12588539259e1cb49a8205e699ca": "0x008eb862b85c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712c63144a40ead8b11efe7df93fc3034913274bf5b4ea224bf58bc56f0e0bda1": "0x00ca752c232500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad8f58bc5d22839368e6356263c88516c83e183ebf8db75b2366cf5e526e32aa": "0x00eeb51b29bf0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785f9892944ef88b2cd55b0c74405af94b2973228ef5c4f7f6ce6bca662891e7f": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef2b5acdd31c69f4c4cbe54ecb608c334af91b16c9ef457574973aeea137dd01": "0x00f6e4be872900000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x04000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397584a7f657e99708240b43aa06c4b4fa1a23914c5059398d23294ff3cf56212cf": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f74d9fe9eaee4051f874c98881a54c1cfc6f4f847e461637f13547ce3991fc3": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5541c57a8dc15b0c1a347841abb579b7b5c73155ba1c300c4853885fabfe876": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397649cae02d7a466aa620512c5fd6b05cbff27242eb8b4503a2b5ad7fa380de643": "0x007e58b8edae01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfdf864346e8ed0d7e3ae67c3b3803e5021a43e8c68aa9c2ffcd208ff923e85f": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c532a414bc0c6818940ea915cd88dee97b9c03b1f04125eb784622ccffff741a": "0x00b634136b0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6e468387739726966a50db481c5c318eb2494d98d6a7a60065dfb61d53d5d52": "0x0050a95c091900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4860ab491b2325b4a593447f0661edb8d3314d26c8908318006df7e88dcccacb1": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397726960cd382acc57b5e91483c1213f8e63a032c98ae52098d86b61c13adb9f6a": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa2ef455ac0427e01fb957df607f6f5e9bc5c48414ff1b4dbf9129203776ce4e": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785992469fdad981c8f69a54269113faef9c36f9bbbe7841e5d6e4818c90a3262": "0x000481ec3e1701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e435bf6dd94a1c5f178be542346a1a2956882dff12a5ffc5671178e2815b6fb": "0x0084602bdb0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397267fc127a9e7fc19850420df5455d14e05448ba01461202ca5a9228d46509932": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f15acbea317cc4c1d4416107857b11880e6f52390dae96512d711419c6a737c9": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b9a8cbce3a3931974dfe18d3f377624ca440a1ae781e508987c0562f5e49fa8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f3b34e7d55d3eab370fbbd03f0832e357b6fb59c3853189ab31cf5b535aacd6": "0x005a4602645300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795982064ea5325fe950a52328bfebbaf6ff3efd6524ccac3073af6ad258ad267": "0x00c2d8ce698600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc789724d3a839d5424ef74e95c373cbedf77dcfe28000f7ef33743d9609f9df": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aeeb5f745954939416fb52f14227ea00fdd1d144a4bda42341f0421f39666327": "0x00583b15017400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974eb49cb41dbdee5d7880f9c762b84d849b58fd138ea4218e5d08c767b482b950": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6e51ef87bc1765887ddb70ab205769424b77b0d07ef16de17ddf58907406578": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b45d46e99a9022402854eaedb3aa9abfc0b8d5fd2009961fe82098e992579ba": "0x00181b6acc0400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4975ca7de6a5d9883d0b512f78069ef22978b7a8b00485da487700674547b9223": "0x005aab55bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5c5c4685488eb95d7178a6f19d043a37dca2e8847d9b9de4618e362df27e257": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b23e999d120fae0870b8dce80a0afbf7474bf0d3662e11a4e96e04ac53ad005b": "0x0078cdf9a5e903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ebb1aefab2d3b12c156dabdcffa36a90eeb41eb9795e42c188db3c116567140": "0x0048513e650e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243439ca4cce6eefa4689638418cc00be4221500527362b0618621295334863b687": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7f6862e74ff8acc3b183bfc11b80179ecaada61e7b031cc5574619e6b6a5b6a": "0x0064eda26a0000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47a9f67d3ec44e939b2bc22650f338877469c35ab827dab132724c6be10f4c23b": "0x00d0d6a3921201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397effe740d8eebb04018e4f5f3d0b466484879d8d8807874956ccd59afd457d585": "0x0030494149a100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735cdf4e261989ebba654a9a70709deac93384cc996a4aff890345226a145e4d6": "0x004cb4d510fb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784da736705970f7d8f591731d4d8d6004682afa16624266f3f5d8d69e50a9b52": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b807cc184d815bdd19dc71a1924d584bb8cba4594de5c2ad6d725a245dfe462a": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970aa6104bc1605aaf8c3f2f6cf2949c0267c3dd70db274df714a1ce7056869c7a": "0x00605b1ce52900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700737814f5f3785419e2ccb01c9af9778f52918e9e33c8de70e55789c3809282": "0x00962d3a03ff0e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d77a8edeb69b4a48560419df1017576e2c7f26d5be79db62f64660645506320c": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b59499c8e72a3cf9994590d644fe8309c7329647bc70e51696246d3575f3e66": "0x00a8b75ddc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5332b3b543a14c956cf2198b8e491a2daf5beb7b4e64f0c3d3b72bd42431ca3": "0x00fc717fa12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6e325564fd7cc613874f7cebb52f20abef5578f2dfc88408549e39d2b872409": "0x00b03c97ab0200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f74f0e5470050752369ab25b7ecfe9f21be37ea49e3ff8ec3387fdd6d790f367": "0x00406352bfc601000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40a14813831b26c08f93ce7ea95418cfc15e2e77e8815fba868afeaf7fb424446": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8aeb183f1047117a8e038cf86098487517460dd216a931f0560bbf300a1a3ad": "0x00ee69afcc2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f92e2b7881b502edd50fce767e74bddb0682009bba9998995c6c55fc0bf3de5": "0x008ac580060600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42af699357c8556830b312cb42271bb0eaa3ed4c0e38f189171a4723913ffe015": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c36bb05faf0fd4fb351f93dcaeda323e7c1e0bfd5881263f112c2f16f91ef0a1": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2975395c4c18ed35a374a3badf87cf88adf79eee3be0be9ebc9c777f83fe23f": "0x00621698382500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397992de3750df7da5b3914b63a42625850128b2039f3b901f402fed766728229a9": "0x00241c35eedb06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af563e2fc2d392c1a3066aac0c8c3e4d46c7c98a20fc071a9547e2bc53ebc36e": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397922022499335814e61c422c996deeae8176cb4c1bb57b743ed26bbf4388166ed": "0x0072dd4e553400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397baa1c38978b24eabafd2daff5b7ae15546b74d3bb1910a0d095dd75e518f6612": "0x0068eb4646f709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c4778106d6b796e0f2caf74bfb9c07f9ad69cf91507377e1cb1af5297d767aa": "0x00087e93371c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e94b5816ec168cc909fee02166c60e77b31fba09acd80d08b35a49a8cb791b62": "0x002039f3969603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3d78e8157bd145397112e350cd17126b20b3d6970b447b31ce995f6221ca75b": "0x0008db62010400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f8b4662fd481a54a41d3ce7e6e6eaa30e5bd200408643fbfd1b5131319c62e7": "0x00461501481500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e615b1a49b2de0f716a9b717d9dfbeb153f1cec2d4978abc637ba1a4ed1ca886": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716e1d85a970485963b5151b65810fd858adf587f04f1779aeb8763abc01fda26": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe929879363c108994831280f4659b43bb171e2d8f41b22c2dc55ce55e114b0a": "0x00500a82d0d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786a817d2a2548c7e7597b107461f9f1b9f24bf09c6a276355c879d7fc5e906af": "0x002a5a3c089605000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2dd181d01de6bcc83b2d43041b72153c35ab7536c9b964f4b5063585e03c7be": "0x001854c6d40c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dbdc10df537f786b394035a331196a6c0f7a12a860bb4d2e9f89a70bd18ce429": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512e368a18dde7eb682dafa880806aba8df888a8653fa0b0bf4f0f90cb69f49f1d9": "0x01012020b1b5f8296308a15f3c0c42c22f1ad155017194bb736c40eb02c305110d1288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553126046e280a9e3325432d777b63e1f8e30528de666497a098b816cef014019fe47888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455312188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553120f0b9195878c2c04b5ad253034bf43c6ef5490add07cd17baab96833a2fda847288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455311088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310feaa73a033b31c0b3cdeba1f9c7f113c54e13e57161dd957367167cf8eae30a2f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310e005fae564f08de5bb5908dfff6bff0f9507b744b21d7017d478aa7ef5c87f97c005a433c8e151c81ae948544f4cb07622b18a8430480de6fc6e1a38bc46f9c27b032b7dd32aac17c528ea660d9c9215ee2526c7f37f7e18e9339efbe4d4a89028857b3cbb79f75ee7762d8a4318439927fd2b516439c597134c3d09fe0e3f10332355be1fcb11e84737c1056ae1fcf33172bc652b4103b00dd091f6c7c84cd0426e5514c23d43fe8fec280e4529ce535f1b5b56da5423c17cd384a4d89c9dc73868cd54faea1a0e45836635b2bf658733436ec69c5567d651be592392cbb69dc200e05c7f86ade5a5d7d1a26ed2abe5be72e8c591a65c4938698e4f20994ee2b34ea169f0bbf6ab861377b3e9cc34e52ffa3f1674f887b71b14b32404221b13588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310df6049154d238bb85d976c29ddc372b58e4fedf057e41687d0cfa39f14771ab530ea2376acee36454341f0a626cde932000a591da9b5cb385b5fdafaf077b2425cb7cc7b2f624c92c6fad8ee77458a35c7acaade2b03e5f0634509cef1db7ce09e4a6bc20742c72fafd45ff5ef53f7073d174aa51bc63126183ba20fedc25186788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310c3543797963596a3431767a387269796e723258546f6171484d694634767073436467fd4e7038b925c2422357380d8cc0c5f17d272f639af8fcfd1f1156de70405ae4225f8b80de2406a965fe7c262d2ad77dd793af8a4cdc82f194f0bfb25a3576fda1c6f0ce06ef296b697bb217f98e4592f25f1471e46192947337923093ad084e478080bfc1bc7af2492ac94e6983006dace0e9660a4135f84f85023da732475541636b6177614a4e505671477a684d36486d37795a4d45586977687a6b69b2830101a23e2c9082b3b149c1a73aae2e1e9482416486cbe0e9a370c183195d3054b90a068592010f1a2e3e4525df3a5bd8f1c71b44a4ec5ced1bbfea225b4f1ea03129bac8665e20576fe238d270cab2441d839818d533d5ea903f8960725e3c9e7bbc52a16127598682b3f1f67e7601b6d372592029beb00f6e09f2132847c22b622f0adfbf8793c38faa55abd487d782bc484a4e900b20523b54ca5e243580e30c47a3fc276c022612170e25be798153bdc6fbfc229c398f580646242978b41259da19620b59b86d5e3b761f0d047df29575a38d1175334b1be1dd1f713aa6ff5707dde3642c6f95ecb24f9bc9f285bb91d34e08ff9a3296783120e0440056fdb6ef85bb41e02e3c0586c0a3ffaeed1dfc7b7fddc7d31c1bb79fec14f327ac8e020e9583a6ddadf3894afcdc880c4bacfd70804b56036a5c785463050241888d8a52c49e7e6827147d1f92d35749b0c64cae053cddf54522f11a7f6be8025845206d529e2e58da0e486ac94f6887555d8d70d2fd312e7da2c9a280932925", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976040a6b164902432f868056b7d7d24b3f8366d226b7f849d232f1dca4ebf57af": "0x00a2a8027b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b8381e1d66453dccb25a6dcc16e715d6d6f94b3bdc32440625edd0a898841db": "0x007c177bbd1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8fc6c3bfda9f5a95ef50e98b0d89644ba96e915977baad8ffa1b13569f78a8c": "0x008826bcfcd800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebac054d9fd5bfc623e6c7e7be0bd6c38a0f10a36ff9519283754da36c44a5cb": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b442415a6c1aa5925dde42f8d8728733da42462e04d7350f3320f86220fa7af4d9": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2243baf2157b36575025e0c5f49fb207c5b417e1d12b185f9a8dc00c30185b5": "0x000290e3bb2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792e6d4205367f7c529ae01b2cef8353f7be505181a6e55a128afe22d6b4a19df": "0x00542cdad50100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731fc545b515db5f0a96f2d92302b4da1b018b94c35c88b48780002d5b721593a": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779a5513efe556a399f80dd11a2ed31e29a8950161115163e037d8d4571a3f0a2": "0x002ca8141f0241000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7d00572b6d0401e5ed3b33560ac3429918a4cc6d6af9ea64e6902d47a043c11": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f7e2ffabb33460646d09e2b6e0533517cf60885acdc71c87d21e54d99d477ed": "0x005afceaa60800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fa30e1cbc3e2055db03c1a89b9378b9e83e442dbbfa3abecb785203b365af07": "0x00a0724e180900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a8c79b2b50e29324db627823c928bdceb5d77e2870c596d1346a0cdda14d4dea": "0x00be4216aa73bb000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb929bd849ba06ada31fad8ee2f4331f98befdfe35b0b2f8fba903cd4bb56c24": "0x000467eeed0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788c56a0e6912942063b3315c4392ce9a007f05af04b6590d180b845069c66e57": "0x00e005f7a53b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752a22cd3b3742fc77e4b9ffa2a44152552c1ac694975d20d3ac7ff384ff99698": "0x006e38ef543d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b321bda1b7034484acda0e4180901da82d315ba0deee6e8c5f198a960c41fc57": "0x00a4b18db87601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a547e6151b37078425dbd21b8bd216922b94f19abfe4d167dec04fdd6ddaf2be": "0x003cf35d972100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75128c039ff7caa17ccebfcadc44bd9fce6a4b6699c4d03de2e3349aa1dc11193cd7": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533eb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533eab06e66dff95cbb0f8ed61ff4a4e400fff92c8a7a3c5b971e017592393e364b173ce72b62d59cbad8484e9d9cb06edab1f465e7f30f3eab441ae94df1c701336388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e3e49bcf3e8d759623e150e8952e645a358872a84dc95f8dc27bf766be8d66052688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533e0da61c824abfb1e5df1140697374346be4443e41fd1e6ec99c22f2cf3381eb82e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533de88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533dd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533dc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533db88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533da88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d98687495febea21de449ff27381f9308da6f15ce5d9d3146261275dec18cd566f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d68bdf3fad45fb5b0faccd6bc9dd9418a503db87e8955edd58fc0479e8b407b41088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d2f4b90c9beba179a66ce2a4111436cfb7e21f93939a02c34554e86d085404f53988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533d088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533cf88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ce88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533cd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533cc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533cb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533cae8f3490064b9164ab0f2abfb065588ad0d3f1484d67796854ab262c02d241e59ca5bc1915da74aba3aadd7ce7b809045d5eb5b73559259755fdcd85a40a5dc6e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c4187b2d05705cb7237ad816758ccf686425bf998ccfa327ae4c2004f2d79fd302b221f3d33adbabe1695b6def8f9fb3b30a33c9eee2e7b024341152d5fdbbe23388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533c0faf41a99388f45bc9d18e3b93383221b6f815298acf8b3debf235aa33509de3b342ab9d4bfb3f7bd553caa97e31b9706b1ae24ad7ca17189921f2da8d0c62c4688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533bdaed7efec80092410d5bbf134d29e673e1592e2b95bb7fc24f84d5121344c2c2988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533bb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ba88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b76a02a48539983fb04d39d15b8683e55f0c8be25ae66bbcd8019c6a0bf4fa041888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533b088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533af88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533aeaa861aaeda4c2db6361e9f8cc5682aaa4952b6af4d6533c1d7dfce4674f89df088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6c98728705e3aeac725bfb06b23caa3bf3d3a835338163337b76fbf366a7c1c": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d8f467e3a352964e0eb60ff3981d19fd592fc8c015effba1bbb4367c36acad4": "0x00268dca6f7902000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b64ea43395c03d859c5939621fab9919ebf7f2d7a6f5b27f72083aae635b3ba2": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b311c849366a2f3a8900eac4781ab8a00271e02aca2c5154f46952cf5de259": "0x000cf723526800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397747ffbfcefa9bf3797a590419054de86b53d20f35db4502ce5a4a69c33cae4a9": "0x0090bc88150100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397517c5e62791c5a55208ca5efc82625bd38f9240c30186500f43b65660d78fa30": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf8b5ebf7ac3551372f03fcf936efb1194033eeaefebb7d8ae57a287b3aecb76": "0x00be18543bbc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d627bd79c4b17cc88816e7ffdc6d350d9d2ee96e975e28aae23ecc1df1d58173": "0x00d0c4165d1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9583dbd8499c1085aed97f2d3dff37622d50db530985edf36a042f60009c471": "0x008c8b2757e600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797614edb259b933ed28652a94810e58387be390d59bf91f7485a7302a4a67118": "0x0016ccb8010900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008f8a1f0c263c90d49e846a3a7b5b255972c71e58cc5992e932fe6b6f32ea5f": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb31b79d3b8d0b5f073ba6fe81e075baa52d6214ebaad638fe4ad08e40e6ee15": "0x00b65c7e590b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243dec0edef2447e5773acb08bb5b3ecf5dc6325e343e3c39c1472eb27004a4bca7": "0x00dc10ad45b20e0000000000000000001f0da28e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0c4e36273f0ec93ada8175ffd94b547753584943bf6f46fc9f39a89b6d2b8a5": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975beb6a2db82ecb639c530ec548cd66e7699dce2fcc56c94ec7e1ede98ff7be50": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ab1e1d96e4af44dab6e4df25973b9adfee5e9db432a971353b018090756baa5": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c07c62507b795e2591230f39a491fba0278764ee10330a3c217135d8435c349": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397025ba096dae863af320f1a88a61617a803bdd908d874528f38f6054990443a30": "0x004ef86f970700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792edbc30618b42ccc923018e7c26e35c8ff3767020448ab59dc9dc3e32ff3849": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e846aff8fa91b739fc7a1e83e31a4a8788d546f3a6344712f5648a81fe9e1461": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec8ea660f0131eab8949bc74cf4467d9b226a4a3bd39e2e119cf4ef0d8f65b8b": "0x00f213b10f0b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd4e4acbdd0c86838b25ccca2ddfa6ffe1a98428175cff93a17bc058e957a722": "0x00e80f27ce5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792f95336f706cb5e81351229549200c275dee3c377c670690822152780939077": "0x0000bbf64f3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe36f9cefab92c51422b62c6a6d6ed42ba4c7f75b1f092cf8c601300938e2b18": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973853c34aed9ca17a241cff9c63288942675ac09079895edd08298ef2a81bc538": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c48d2f1c475e9a2eb1902d38e613b7f80bf0792dc7a46f8df9cf216626de6369": "0x001267b2741900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978514c8115011bac6a5115ad06c2fb65528caabe39e780f58d18746efe328ddfc": "0x00eccc45eb0100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4153b719054e1e6897a808fa04d3da23ad213807764d613e4de20fb9410e30678": "0x000cef52127e5d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740a3296530e6e1b3474bd451260625a4d3d81136aeefb937d30d4fd8030ef994": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da138c7a8c8385453921a52b755293cc8207506fc57d04ed65fadf49f64218a0": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bdbb6353b97cfa9ecf1b182a7da398f7cfc950a535d1ee18de604052487de59": "0x0034fc4eb4ae13000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48da1407145d4a5c21f8148c5dd2babaa65056ddf4f4134647c1dfd39a99a3071": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bacdd249b0caa3e526a7956ae3b3f45725b14d064438e1bfaf17fd2f8bc48bfd": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ba0e8cdb2b7e882ee0b5904c8d8df9b36315186a5c2bfc253f68d85c183db579": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705e3c0c24c7cf83c79322e57a336577cf2dbe0a507b97ccbbfa4393e08c64c8c": "0x0018ecb616ff01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f9efb81d16bdf993ef94ae853a8fe78f0b7c7a71aeef1bef69441511459e8e1": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979662945e332d42a77001c70d757f6202453daebb027bac45eb0b761970635217": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766933ae2c5730f9c0547313b96758a6785ab140d707c96c70148a3f8570d8933": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721647a7b6951e035fc4e5e017253bbaa3a59ace314d261165880cdd9f39d59aa": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397524891f29420874d202572af24d34d7b634fbfdd52fa358d0da161669e84a728": "0x00a8c65f98b100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397416a22250ff1d767292d1f99c5f62eba25f3d114f7b00dd646525d51624814c7": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b907c0350206b560c50d8b6eb7e2ef53031763421177ab40c475f58acd5bc2e6": "0x000628f9e97e10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ca2315da0b3a825313e638b61774917ce137a57abe8e00b32a52c4f253bce6e": "0x001c44e7a71f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2b4bb3f2097a299cc6dc829fb57f3963f90a7143bd8134ff47254f649883fd1": "0x004e6d18efb400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0c24db25f99c1bacdf37b84cca839dece5db1c9c121561dcab626f2b733f925": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970daec67e6a8ba64c55a539a8e14bd50a93f5188777f0d34bc7c69f77504ad823": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f436b222c7c1c8c5d474202601059240597155b8c7c89b4a2eed346d4854ac3b": "0x00ba1ae7383a03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974077ba8dfd7e56cee811f63dbc0f73794431d3160298f6a348fbaffa129a5b5d": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397907eaa81f70cfb2f53240d5f889ee7f1a9023987583d58835947fc2cf60dda73": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397664540f814fa8a1495a58d1f2e87cdf24acfc3bf5133942f1928156284e5d0dd": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c832452e825c87cb426b62f40e4a8db6163d3e5b8941a382de5be741dd5d2bde": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978581d9ad54003da068dfd09e964fa804e25b44c7cb151c467add3746a3fcc4a3": "0x007c16070d0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d276d2523d17ec5d341153c489d36c321d1cc3496e159bd328587df5dad6f5d6": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971aca4b81408b03f26b02d34eae9567f222f3b51af67eaae4b990d495bbf6faaa": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397048a8cd42bd5fda1f54fd37c594d35c02cf7373d08fdf6b0e0dbed373f9c7877": "0x00c87a6ad0cf02000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282434520e3e74c0b8ee4bebb68dcdd5682bbb448f5f23eca33e44d815c7184fd0a5c": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4b2fb3a7b1e8716f04b08657fb29425ecdaa2ad4486abf7f335033d02751a6b": "0x0062b3e8e00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bdc750fa896049ed2df4fdcf56401aca06195a5b0948f54df7d98039db0d01f": "0x007ea3f3842900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d354e7168bcf0c4894c0041730396431e36ade0237f06f5a561765762a48374b": "0x00fcd42ef94200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe5e345f6f414768e8a12041f482a2d53ad7b73f5c36ae13b102b879fa9630fb": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796b8426e66c4e0c290f28f54f63bbbf52342b0ec8e7a4efb97608534f2ff0c6f": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976108e2921a19df85dfa2a43080ee93b3d8f7d13f72527ed36b7cbfaa38ad40ff": "0x00fe189e4c8505000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4004def926cde2699f236c59fa11909a2aee554f0fe56fb88b9a9604669a200a9": "0x00d4e9d4ccdf24000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397759a0903bf45eed110e0ff7930257ebcadd822c932d08db4175295be240f0677": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973367ec217f15d0f6e934d0a3de0e0e266093e995d205bb9657bab3ec3048f699": "0x00126d3b2f0c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ed1587bfba57ad746c9890285de308f631d8c070e70c3a41fd31b51a9b53dd31": "0x0080c792f3f801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d775a86c5f972cd650a296713e28cbc5d79488320a235f7644e343a5cd4e7a66": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b3b026aad553a142a02cf3ee9b29e707b8fa2b81051318c6199e870458ee3a": "0x00c0e1d0612100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75129dff876a4b942d0a9711d18221898f11ca39751589ebf4d49d749f6b3e493292": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ab88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532aa88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532a088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455329088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455328088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327fa202c0ee08d7900739bb4cc645a29750489c32af0f87fe329069caafee6dc4c388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455327088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455326c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397406bd698679f5a312f914d1a14b9a5d56fc5d163c29f2433799e2a515eac1d83": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe52478176cc4349a7078fe906c756affc966222109ccc7576dd0f968deec05b": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397430a5614cd27981334a2a72f76440b9c989fb011555671054959db6a09b30160": "0x009e4397200200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764fe232bc393b854446d7c204297296bec625add6386786ac72a322e0b46fe32": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786245845c5b3762661c25f78bda822ef78d2296e13526c149a5bdccf46a80616": "0x0024113bdce301000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e7512ed71dccd7b507f90bd44e9e1e96d39481278657ba4011aca903f883e6242b0c5": "0xe8780c9d8ff3121bf764b263a23d7913b4822df102bff190f70ea63effb2672d70354543556a39684d61626f434556715461544569576f4a325868633838646944b2056476c0f47cc879c39651c67c196762d3f46070497602d558260610740d5c386846e8d19cb468fa25093247fc9a0cabdfbebdb53e20e9ac7aa757a2cd4d5cda750c658d067a0c39319246d5705acd32034d8f331fc9059967f0e52572f27a346a8fbe1f38539a525040113a71c771278a4038a1536bc3994ffa7423e6f0295ed63adb9a29910d6d4477fe9c759d15bbdea9ff976c7fe98e34fbf11a54fd8c22fff76bb4a0a5d66cff0392dbc083abbac3b3046f6fcc328abf0ddd16ca083718206093fc9956e58ffcaa9c5f6f7f98924e9d0649686e14190999b8eb2ad0783ce4862fed138c9dc8bf746d9939a0533d663ebddfc6c80ccf9778d27646c232aabaa6f058f51bfa31f31a65ec3cd01db33ad68ff3de1b6593d805682d34414cfe034493ea206c79c1182e385a177e2164e3bd932d6ad9a3d19c400f1341a97fe84a7a3920a6e66fa467eaa4f4586a36f994a48e8c374bc0404125d3912b07103a10e0d35ea09f9c79ab828802f8d18d30361fc1674942929b70c53cc7b1cb66da464a490dd62b4378f123bbb3c778f624f84182467f526f5bf10b9c44cbf429aa2ddafafa932de268656a0ff43654062cf28241bcbebb67ec74499e066049483e65e73bb4a7e6d8938785ced52b26560b30d8369e945d423cae0bb03dc6a545b03a6d05c231601dda6cd76ad44944d2ed8ea11650d76f2f3d6d43f72792017fe6b11c10b6756891e84f7ea004a60c1c8906189197e8eb8b44371df6580aeb61bebf2dfb5f7916304859c6628beabef149d9646f7874aab9413604f220eef973fecbcb02adfe9704150ef03ebb30192d148a7607a5d60f3373efeed43c1a447134072ec68a47e221e734a1b505745e803b6e658f4f1747c79cf62e179e94f67cde0d50daf96d49ba29b4df5319c6e3d6457322cacbbfecc09bbc6a0d066bc75f0439f99ba631ae0288bcaf5411b22d18be33b8ab507f11c10ab7399e76ed664e5036705f0580617ed42d5a59fec71e373a243eddae36f10a2d336c3ec6eef628e233d8c9ddac1bb7105ca9c7b8f56c3954e78bb214478095ee1ccde3c340966998f389a1b8b75a3b3cce888eed57a178d738097ce06ffe7d2862e763a5b0ab63ccb08ffe7b9f5038f912499d40a5dcde603fbcac1ad410c24dfd1403303cab0ac61e6c58b2a786d8d26c66b5c52e2c744caa4da0410d8a34436469db510c246eccfad7ea2406bcbf7b44f9a744c474b6c56252aa8eee245583037817a1305713de88495b943241da1411b314560edcb51bc99062dbdc4dcf906bac0c4852f434ee0874d09c3b5d554cc991a98bb9e1f7287671660fd542d7796ace33dc7c7502a417cc0112bac87e60e00ee2fec744cc81614d6c4fac07b454d8719b5994dc1abcb50da086e4cf6e64b62dcd473409cf5f69c8d35eccbc31cc981aa96ed4221bfe7fce341ff73e1db537daa4cc8c539997a8b0654b06cb81c47e4f067f55a65a3ad5ee721eeaa1a3b7f1904df7b1a6a035995911973abafab3ec2d67b592b239306e9a8365b56e5017a5e9222511558c093ecf62fc283e5ea980792f3f3e8e02daf465f50f90970cf16497c9dc072a42febe1b73845720dac11e9ff7eee0ff3558117c3145fa744ef5f82d8db853e5b48916c47cb777b3955f9d33ff279eb947acea2c774c89b88b538b617639a4d25499b4eff9fc54835e763a3b98acefa535da8564ba0f7e717dd8d61025823ef756b474d6a3f3e8099da01ce16b53d85154962168ae9e867c25c4d9557b4dd65a3a335e42fb173cae9129a8aa4f1a40bb3400bc86e1f6ac9f20d17b7eba14b98cf0dd9094e4c99cb63f4ef335efb4cbf0053645d33b8d6eaa28f463c02714cfb4cbc3b275fb55962ce0653539ff6931902b7036fc2cc5a44e28d92392be9d9ef3420fe2755cd50ee4f6d6cfc2eaa5888e408e342ffa941377ebe35df81da70ea4c7f433c8ea75d1fe05c3887062f7c38625ca18620ccd876c76da8eafcae4bbe7d7d17d263ca07fdaa829c5b32c7ba5f134f82cfc999ddae0daeba4919afcd498f96397696ba434dbf92169b2994472455f483f908fb4a2ca9089c019be542f289c0cf8313aa43660754b6530f44042e51f1cb6177d778b641db89d6a3ca4783c67fc5e901eaae5ef8b448d08bd76ac08304ed69bf7876e274ad82412bc7504c44aa5009057a878f3d8ae1dd2e4bf7b5c74de081827ebbe24725b95eceee637451809230fe8b7b04315a0486ab800a9b9c9454a6b6e6348646d76565a616b4e4d6e6962475947705143434157703879566588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345530ff88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345530fe88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345530fdfc10d1556a65f36e2a97bd7d34f06d8b34040d2afbecf9ff379f043aeefe79508a1b703bc8ab1ca1b84cf1328cf9ecc1486eb88e52d316b005217f1d7a292e06", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778c07f14740a4310b0a8908075ce144ab9e3aac3ea221742de2f84df0018ad35": "0x00525742bab805000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976dc693708f3359e154d11c6bce79e0ab18ea15ea2fc21bd24e51b73248f3a713": "0x00a0205a752900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b403683b3dbf85c7747341db3c1ec7e44a29cefdb893a7d3ce4e6cbfcaffd4d995": "0x0026b84199c300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972116ee7a3416d8c2fccee935f038e751482691c2ae8c945c093c9dda5a34ac94": "0x009ac019541900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979455bbb05c65b9190fba78ff250d5eb9891f153e8775d48a2696f2f75ee2ad5e": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e659b7f7f345ddcaa5409664775a4a468b034284a5887b917912129c25890bc5": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c85b9f1ab205a15aca2715d96b02d7a73d209132c070c69cfd520bf78cd53c50": "0x00c024e4b60101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972766c97b1351d499b8a075b02e207cec32b8f1b3ae948ec06c2ad406d5d4b6f2": "0x00d22374f95f00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973651a29855029b51c9e65625930efb14a85295198900fa6b491187545ab2eb80f": "0x2280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397373f4622642eca620e9f018ee2b021c5ec06aef0d990461e358054308a1708ed": "0x0010b6c8f94b08000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397907a9407dfeec937b96854faca7cd893a209020841e86831221b877d1a27984b": "0x00c61bc45a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795c07596d5022239a60e5a9379d1514021676ff6d268000afe63a4fdb241bd0c": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf6411c04ae97dd11100c003a24ca950b88c8b70d5e180cc068dabaac50812da": "0x0076eb7a9db700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a894f96f07fc032c8ec58c9fdc5137de7990db38faa5119802b8ef2d58ea25f5": "0x006859ef3b6102000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977fa223fbdf85099a2f5481390c5af289ae0f42daa551d12b15a6112c92386ea5": "0x003036d4980900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e118ac7996c4fe3f5df9d8eccebc43da0096b42fb946d3e7f9e82bb7edd18f37": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746fed281b0e60c97f8352898d695d29dac4c74e6deba4aa3bc482246722d95da": "0x00cc8e03df9905000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d2b47d7ca26aca8e52e069c5ed807cb95716819b26b6997c332149a0a02af5b": "0x00d6fa032f0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972780d72940d762f9f891b176b200ead3a3be9a3c5fc678138477506240b118df": "0x0072e669861100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978281e9fc03f8ab0459aeeeeca601867805b9e14bddffe4aaf32f659f147cf200": "0x001a5524560200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a67a352c89a46a6bdbaf702eeddc4754805e8943eaa6d53a49cd90fdec9e01f5": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704b74a8845c733760075600099f12b48b415973f94fc42d5100a89c5e32498de": "0x00aea986460800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd5baf15894c9981073992a0a92a06956036e15dda3cd44c3e6e94dab331743a": "0x0052e1f8cc3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c546a2c310f026f075b74f203288cf1af0e4903d980a3f60b8d519febf1110fe": "0x002a6809f9ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f05ba683de51950423f2316d5b48866c397b895d2cda0bc893205e7a8db147d": "0x005cd94131a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397407c6c5bf0987974cfce765f8fbd2fffb2db41c4417c4efe30ee6066f33c7eab": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f697baff0e7d250ff05e64dcffae912a5cb9143b6d1e1a27f638035c319e5bed": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397107226de239a42feba3c2c60842e4db27f20a866d89fb0caa810e6e709daecb8": "0x00446b11410300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8361651aa2d8d51e690500377c4a8c37492a9e9e4d15191bfcc284add1fbe08": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e73dc9eb43ebb94b9a750e139775330c6680ed417c1e193363adad9a25b1208": "0x0004e8afb70600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bc20c7ec6a5c75d5fa56bec16d7b1e17fd1e023326a2c9e909164f07e970125": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e9fa407bf499377d7228c02e6a0f680b17d9e68fa0e0a9a75b5f1097ffbf4c7": "0x004465738fcf01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75128c35d22f459d77ca4c0b0b5035869766d60d182b9716ab3e8879e066478899a8": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533687c31384c062b7d0e7769b816bb95317e69b29b8bb8fe5e8e05113430b86f194788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553363ba9789e37ed91b3bea19b0aadb6dd966ecc12d337794f23dee8694b82bf6163a68d958e8c1f36ccb18e17e1151bbfa4319cb4fb578b14f0b74b8b28cb2d5f01f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335bf2e0312fee897977ebbeee65d654913d4b0faa1a16d235cd3eee31888aa5e45b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455335088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334e30599dba50b5f3ba0b36f856a761eb3c0aee61e830d4beb448ef94b6ad92be3988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455334088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553337f6463e4720c2d3108ec180d18df7c6f5ff2cd54ee4c906adb5b2d78ec054d04688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455333088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455332c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5fcc02be22b413442f1dd9118d85f10be80555c815e8372d2c0d63c3196871b": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799b010e47909783f78781b3a087690e5032a1b7352414ddd6d671848010dae92": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d39daf4c38b465893f17d4aedfed9b3b5a73b1ee2dd53d8d03623e274254331e": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6d4205898bc0226c3c4380d2a0f04a0fe54cceae2136695e8546b5fa9f60a55": "0x003ab9a30d2400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4599fec310528573a6765733e04faebc80e994713605c9ec819b64216c51b01f9": "0x005827a658e00f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769c4fc80ed1b3a1727a544ddfef5625048a3a21b799bdcecc650bd36c0de9f3a": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e926895f3e0d77bd2d53fa29e7da9d7d22969e12689065b3632c680c7322716": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acb6c146ac3fde79dca9f73cff1e0f7a024c14f978a0d98a262196d0523285d3": "0x00e6ea478ab597000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3c73969237805b18227552d6f761e1a4da00a82179242cdd19a4a1889b7ec74": "0x00d46ab4a84f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a3fd563a7e63411fe82df18d21b17c2c9675ed882e0e328d80224b4744460a0": "0x0096f674118300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397339d8acee851037b5f56524ac3b2efb4c29538685e5504a79d84c0a9ac3db0a4": "0x006e0dbc8a8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c2c4318b82d5e172af42b14c1de07fde3b2d9eb1e85c66634fb86f6729c7728": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a4460ad0480a1a8fb463a897a36feadc830c8ca7f64b05b92f6b139e09bdbb7": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c03860cf3819711525144f78abde244460d917c72446e5781e69690060f09dd": "0x00786de3c11c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397162ed5f13577445b6d58c11adced2b808e8baa89c463df4f90c2d100ef899c7e": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784a81175216e36dc5a4afb2729055c4d563bf969573e9a9768e29fe02102594d": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e41e09e5944d19c80afd6f942fa571a3f9082e79d829e72b44abe16e8651001": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fec4cdda15b154c26aeb180b44e20bd712754dc35f37b9693b810c1739320f79": "0x0038b8458c2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fc43e4760c81c9c6c69bd1cfe246bb8a01da4ecdef746f9c8b9f6e93e700d28": "0x0044db3fc1ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b6bdce03c496cacb46f8be262e94c3d27882831c8121ae7c00adfebabcdb4ce": "0x00ce0530150000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd549442b7f0d2ffe3120a6f43666af8fa1f11382cc07921d7280353900bcd27": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702d771037f9579489c1337fef5789d5f1ae42c92dedbf53cdc9e887f2628af62": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edb5d8be7043b7cc67fc911e90946c6c0108a0e713dfbd7f646bf5d808653afb": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5b90ac68dc8932c63b473c8e931d72ac1d39a2dfd0ac186d1884a6ee3db841e": "0x004c2df6184802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397707dab37d36a86b3cbc675dd1723df8ee73871b8c1996e8517cdd4e55247e53e": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397acec7a3ff8937f39169d47cff080d2068ed8d3979a3b84a226ba731070b9c5aa": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ae01eb5b17e8485443766e24f4f5b02e564ea0c796e3face30e227403717718": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df090c093eda1aba9cee2eeb6a26d5726313f0899e350541a7d51dc780255fe1": "0x0072e669861100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397192de8c8560588592baf7190077a3fea956fbc53ce54ec5c34c145f8552b818b": "0x00f0ac68935002000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f7e93c107c2c8c0d7e35a9f1c5396f7f46d195222e610e7b2347346098ca023": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0e4d7e06ff81bdc8d83e76df093a5d0197789dffbde9344d8428e039a93727b": "0x00e00ad64a5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f027498f71aa382d2d982ece1318c455f2d80905eba6a282650228641df0e88f": "0x00f80a5b4e5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ba685476f5fae9faff2d3ca796ed2c0197d708e7575d1cf2c76d3c158b5ba74": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4127e01ec910952ceaf880274f705acfb9c8637c6f021de84a0769da6f9c51f2e": "0x009cb679bdef03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721fa8dcfd60bbf559841df39f2c444d4171cb14aa3db8912fd7cf93230f34e4f": "0x00f8fb80fdbe00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a22895ce1636570d3fab9d2d87f7a2a1ffc2cac5b45850f33a6b1f5312f2c28a": "0x00725cb5f62401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397063fc894d8b03d48a236dd2a3641ab0595b29e41b4eb0e013028ad82363f5d6f": "0x0044135e7e6c00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x185e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b9042280483e7614020101d7e03e0019d5d0c082ba9e23fc43a2a36b261bcfa5cc3b3a2b5aa8ffd4e3c5ccb11d342867d964414dd36e138de466f5fa6d865f19d6657a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15fcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a516017ce21330f614e9f11065cf3e7e96207fec4086b7cb83584daccf6bac6d35d16c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fe23a1a1a3ebab58a836aff7b805f830db0e2f85d846927f82b7e4f781e06b8": "0x00703874580800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243ba1ba137f951df73983d306bb783236caeb9420de73544761d9cc5908df98dec": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763d88be2e393b3b1d48b9f04e60e71f5accacd36e471953073961da1837fbadb": "0x007a55aa1ceb0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794e6e54f8f884d0b7135259aecab5ab9c3aef520a400fb5dd21b7abdf3e0ea53": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397149d6ef9c197e6cf9511716aaed77c5be028a30873f94a0cff7594d800407d33": "0x00d27183e3cb01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711333f85628915dc70bb49a027fae512a93ef22887d6d725f8da6287e4eb9f21": "0x007465c1f55500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789704764f58c6d623f0c3fb51903a4e846728c9d054d33a3fcd8dc12eacdf5ff": "0x00bace6fd90a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705cf70bac7fa781f71a033e94d1636122049f98825481d22340a32ef640af116": "0x008e713b42af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a173a3f8ec0d34834f2d4578cbd65ca3aa7161932c62ba4c3ab5fad841ac638": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979391fa49fb5b47dcff88b624e59aba57ce6c2f389bc4d88c82eed0740927f042": "0x002c490fd71c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c60a8584236620b3fd4919e33f3712127ffe563f726cb90eab23938ba9be709": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ed1055939b52506e3ff757ff4f119c4dd7beac26c5f46073e881ef1b2d9a45b": "0x008c114007d103000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c3e67fc5fddc0e08757713ab0f9516b25778bd2f1307b2a5c5a5aa454e792554": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5d075a496ee9b3d45f0ab7693dd7efee37835e227563fbdd9fce6b076dc6ea3": "0x00fc31262e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa0163acb28e9d09950aabf844f4c701f5bfadc0f1e393c7b449890aacca50b5": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f877ee273c23c46dc9857296921668b3d3419c8c5e8a8cce7cb389e6dc1e0544": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7c6b5c9a7001bae120ad5f0408e37ce51fc05f5a88c1a30c5db7c8263ed9bd9": "0x00ae9f92970000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d400ee29fb1a4b4e3a9175026814457ed3a8cbddc0c710396ed4463ec3749d9e": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f28d4cd781977ef7c7fc7e1bac68c42e00d7e1a4e89929f182c61523e75b637c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb6e6681f202fdb456ed1a21f828f869426f59e1a91a2e4a53f2bdf00cf96730": "0x00ea9551ba1f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa0a89ccf5811ee759da4236214826a1acb15c5713a8597a33f09845c4a4849f": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397730cfca6e2ea772ba25e2d0ac6705c9cba8fbba5f3c574d89e751dde96ca2615": "0x00a8b5d34bc800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c3ef24c93c48ad51c8416c0b531c28e9e007c86323841514ad38e0075a46ea5": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979703bd44e8195606e27c561615499ef3813ed6073c571d0dc639d9a9c5f18666": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397caa85ca18fa889bcbb3e996e6d33f7cead22557b6cf97bdff4d29748c879285f": "0x0060a90a611200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970790fdad1c905ca73a0a04e9cc99a41ea3c03a061036cecb1d5c9cf312f54d76": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972dd7ad71737b58891dc39da1a0b2bc35f7de4f2cdcba7d5026aebc03e0d38bfa": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b19b7f77634d1d15f737ef4be8ac1664b976cb0123944f539b6f828897f1543": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773574e373d7597939e85461816911019bc640d5757bd13eae06c30441359d8a5": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740d5e6689926da69fa835ef4d4dfdf3feecd70e7b00aac20b300f8464db4cb76": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a70d1577e80c112e1793b63d80ecee7d1be2d0b113dcc1cba7faf64e0c2b492": "0x00008a2cd1b701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762e827a0b82c6f9b6a5defae4591f214cffdbc6b2459a421b2e22e8e1a8cdfa6": "0x005ac97c261100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243f24396cf480380c0ccd36f802680f16acad9e4d4fe5dffbb747f0430db9cdcbd": "0x00f45658a0d7480000000000000000002029f5c202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cafb1ed23733e64148bfc7f3acbcbe368b65718b4ff1bb6bfbe04c66e818c0af": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702471d3a560d1fc3a87e1802f15fb8331d2bb69f0d7a732a168b7da4ed4db22c": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb0b9926e06c293cb28096a173622a81831ac84478b7630a2242564d59bf16a5": "0x00d8a5ccb34200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4829a684286d7ecd53a281e19808cdd2c2a88bf7095f527b018b65f1a9b3521f8": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba28ab8ec49f11c360eaf95d35c2dab5eee64e3b56ae3524b85131d5abd08b15": "0x00b28ec5f5a701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fffdf161103f30920d31d06d427df6db048e1f85c3afe47c6274fc25605f8594": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971eb8cd24f2600599a9fac974bac5a8a12f90f9377cf51d00fc906651f18c271f": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397379cc7259683096f65d64e4bd18366d4d492871033a72ffc738baeec3b6efdce": "0x00b602b4cd0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1f9ac2b540830b7ee31a8863fa4f01a2f993b02785dd799776d6c05cb3891a0": "0x0048513e650e00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48db008436ea7561a88e53edd54721bcfb499207ae37f901d78e410bbd07dbe77": "0x00a81c90c74c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4adeff2f6f22d23f6d20ca5276c0a9d68fcdb548ac7185a2294c70aa7c8d936e7": "0x00ec5e19a2571f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752b92ae6cfaeb270de7ee09e65ad409f8c9514ab773e3217f3d59c4f4aab2e24": "0x00a816e30c6014000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b439570972e646c4c3ab1c6a209c7dea9a527f385fd420a2be54b03e39de869129": "0x00d44d82b10900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c9dfebc7822a831ce0ad7634862afceec173c807d93388a0a79a8ea2274bdfdf": "0x009e3f8afc9f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4408ff7da2184c403f9592d8935e97abef2e008e4c0581ddef8de5c8b610a364b": "0x00c6a6060c2001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b7723ee03b9d4e2cc661ad8bb7769a645cee222f8059c847123f4bcf36b76d8": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aab39ae4bb7d5b590149d078b0ee5ad7c7240cc9353fd41bbfd75921334b6efe": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a990a8f02334cc6e7a9ccd9da7507f34b392389e5dfd697b3890b4e4b6760b14": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed18f72bb0581569d91b07e7cac127f869246bc466d0da4d96a11a7de89b1625": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea4aaa3b978063c89bda6d91f69a8552f1243ced5c31a6af22a24ca6b19484f2": "0x006cc682d80800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005723600c71a4102badc748960f23cd577548b57c4124542921988cc02530b2": "0x0008db62010400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f98f1110d7f9e1e5ed12e373be37dd603de7fbc697a76a7a105ea4d94e7d70e5": "0x00c48d929a3500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b74958d099d6862194dd20f0ed771dd57b77a6ff72c59308fda3af383a484311": "0x00d422a5abbe12000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccd5f671f0a9e97e43d8eae5a5d9ab954984604dd90c56d68ee2366ae67e7546": "0x00dacf383c9f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4410b9d33a74f4434b0758cd00cf6324ee3ad96b4160f93aad4401395be66c078": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bceb93c115fa6596397e8371c3e8c40c5dfdd6d828c8cd140471bb4a3b37fb2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746445b9f2c1bfcbacc5f4e03c2a9dec0491c2029cde7a53077c333093dc48152": "0x00fad0089c9e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d150c66ebbe320efac2127711e293ebfbfc336211f576aecdb63e6532790a4fc": "0x00e09358064402000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397823c4f4f17f78af27d2457969272afacba49b701840511a4c38795461d272e77": "0x0018ee47a4d000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282435e216d3f400db7137984cc7a81d4553c7de1868e8ef21a66fbd34b8b836b78f7": "0x00dc10ad45b20e0000000000000000001f0da28e00000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b42282f35e2b9e7d998af4e3e89c62d6d8492824bb417f5bb4a724b86cdb217227": "0x0060aea3230606000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978da9596af672e37845015abdff7bed2f28bf2a9f636aa8440fa5f77344e0017d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dff67d663b33dce669b4241919b344bd05a954957727673129e68d74a87800a7": "0x00e070e8b01000000000000000000000", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x18ca239392960473fe1bc65f94ee27d890a49c1b200c006ff5dcc525330ecc1677b46f01874ce7abbb5220e8fd89bede0adad14c73039d91e28e881823433e723fd684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e17968195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e9411a0575ef4ae24bdfd31f4cb5bd61239ae67c12d4e64ae51ac756044aa6ad820018168f2aad0081a25728961ee00627cfe35e39833c805016632bf7c14da58009", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ec03ff4cc48a427553b392d43eb3ca552ab2ab233c8d85f061d17919a9a833b5": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397639b149cbc9e9a7f15ab18e8b0bd0d805711d8758e86ca3112bb14d0c998dd33": "0x006426b3d1ba4e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978509a4ef91065a3ffc11bfcbc82f5b9d5c8f4be1a06c4339f2e754da8cc677f4": "0x00e49d354e5e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a533768d069abdcdbea679b895ca603836298201324b3d2c2c0b13d37fab6735": "0x0060800fce5802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976294761214c1838f367b5fd9d3cd26ac05a720a83ac638e36f50e33ff8e9e92c": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719ba9c2a5b2e8232e3134d796a61c792fbb0162a46dd70a6487a881507fa8133": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b367bb6b46e5469271c2be524f8e228f3bd0a378470dabcd8f8f4e4e8b8a273": "0x00e0fa29790900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc133059c076530f80eec8cb304f1b887060af1080e6ce20c1c9685f5ac26da0": "0x00fc6276e83200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5f14faa087cf4b7214600cc4422ca96233174d5699c23b9065d8af687185df8": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d03a1e3cd9102aaf335774b02759da1cd19fb0403242fa1d0c68a0be6f95808": "0x00b4a3ea662900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8d43ab62778c2fb2e8fc605750435be7cc1687a9dffdf7df11bd24450169dda": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe7d09121406ec3c5862e94d570bf7ee5c21a91455d2148864e42628c86b3c8e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e51e3047f2b1e8e8901960f37afeefb64d3f2ff6ecd9e9c004945ac732c7ac6c": "0x00ae9f17c4be12000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e15139dad170e12179a1bf9dbd2494722f7ee4d0005a31224e701a033628827a": "0x00ea2314e21e0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab70c9e4c9ba4b23180ceb4bd9209c45b760961879d9d1c4627c429689db2143": "0x0056c78abe6100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40602191be8ff628474bd399d9b1e0a01848b5f93c50b4ee99b812d190cd8f71e": "0x0078e6bb2e4300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4baf8021ce9973e4b759348823608d188da29b10989abd4bcc402a60b42e69d30": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7623b6c38b24df739810d19271abdeae427273cd3fe7870cc5fb21c23788dfc": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785d223265c8cf486c429ab02da08cc5602f3e61e67c4eac877ec8cd4f7302586": "0x00f85e3055e100000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b405d7fbb287d2ba8218397b7f742afefa9903fb99d44315e610dc6c9a7de121c8": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971db67dc4dbe993e3fd0b951760d3278a178c4e67e12153e50a30e4cf311bc6c2": "0x00baad66232700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977813bd920b81c89381e187c4b5fd0822d1806250e90157facc7cf7e4b31ecb8d": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793b25be909ab94807896723e29025e5295c8808e935be384c4f015a3443414ec": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa4c27d8600189b293b464044e5583af003c0840aba0aa719434a0901b1821e7": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f1a838aa360cc94e6cab9f2367e420bbc9470d04f96a2156669b53026b9d10f": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b02f97adaabb2a9c234f1380dfdd3a9dd98d85c831274e84137c0e552a584032": "0x00bea716d82300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ec9b089f0eea22927d8c60e07ced495a9781978308fd304b1568a35c1c7f5a6": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d2f7d54c84b12ed968ecbc23847224e5f2200896a36990b0faebf79dfb2fa64": "0x00fa999bf11a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d87e708b8a7c8ab3be6b074891546a0e5030c6b3a893bd3e3ffad7b89e594485": "0x001a489e301000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5cd562c2f8851d60bd15acdd00841bc26a18e42571f043562f177bf874f3de9": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d14cbf1dd448bc3344d49e7bcaf81745001d767050e3e4e5bed5daec593950c5": "0x0006bb3ece4d34000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971935ac71ecf35044b9d1dc780aa7d6388c363a4f0393e97a3bf910f708f1870d": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734b6af34d230164c9b7d515ef1f933d42475fc0021e03c433d0c1a22601150cd": "0x00380fb4061200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979524e8202f1606ea65aed333cc5b32c78f78ebd7d6e82f1e66e3b59cf8b3fdeb": "0x006297f4340500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973628ece1e5fad966ba7826ead21066f5a6d6416cb4bb7761035ca933d39a7735": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4809e434a88f4a74b9ce918615646d07c3df4203dddd60ed66f0321a30730b0": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711dee95e030e5afd538ae15af086e7035af5faf94b97e8c5765ffbe2f1f423bc": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397830f34f5c7fb7c45773c4fc345495ebd435e9db68d82a8418f2fcc63f704e7d0": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741aa105012aa6c67f3bd2f1666a21f179ee71adf575343531707ce4dbe2e1ac6": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2860d0c4713681548644720dcc090847062e1dd69e19885984f6e4b93cb0392": "0x009e095b9d6400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f36e37dd4fd19278dd288815bac80f5ffe9333860d4f14565d8510ba08084083": "0x0026028fbbd200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bebd85269693880cb0a937f9496d8eca273edb62f800cd73e27d501e82e66b5": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970bb6f304fda497f81c52d9abf69db966c8bafd0dc9ec79103692911676f55882": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d597748564650dcc76bbf5c526a1bbb8af07f8e4eedd39c5fc8015949d3a643e": "0x0098ba69660e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aef25ffe188b099d5d1bf6244fbfe4ca362649870489570c4bc430379c290918": "0x0020034cf68f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43498070a82874264c14dc1d723bd7e89926a1abe299fcd56b37e8a7c26d71689": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733f298a5b8ea82b1c5bb83470def78391b7b212ccb0d477f0781a4018c897d86": "0x005cd89e184100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397844150df076993c12d1cedfbb4c89dcd28453246c405d051723b4613c7286345": "0x00d479824c3c38000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1adfdbce4c5db862533bca407eb514f38e075e68270b66cd09d28691eb5c302": "0x0022914e4e0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2a16e9780f553bd47ea38f73c72cba92ea4b4ee35a9913952d419ed00fc0060": "0x00883676c80200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41259f61aaeee32ae5dd4ccce582589d6ab6004108ec8922e0519a389fda4ada4": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c6e261fe0884afb7ca9c13d2b107999a4d8a376ae0d2fe4eb93ba8da4f5d976": "0x00ba4f31a30800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bb394cc489dcb06059cf11db48e710d9b3023fac0f118eb979ac44713220b097": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c9d46c22f8e1c3d7f46f719aab6ac5955610750f1c8a25067ddead329ea5d6f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dced4b184beea89cdd546586e818e38e404dadc76b5c72a7dc751fc5ebdc36f": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974410608324086d5d6476ab0b310d3df05a7fced0244bc9fadad2f0651f45ae6a": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758fbdef219638f9f693fd641bcba4a3a58c689ad26b20cc40f4f2c033f23daec": "0x00a031a95fe300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49f8069a46abc41ecf5e3b0e40bb551bbd0d79ddd7658d19228f44f86582156f0": "0x00d6ddca3a5500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af5904dcd95ab46d3428c148fbd795a1aa193132b50ad44b0dca82129b222490": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727051b881edcc13f77007f6342470ec5e0716fd94f4bf596743baf7614b5c643": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6421ec42520a5f53f0ceb5c03d562d4dca5a1d57f3db76722c61c916dcf237b": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976237291019746ab5300a69009846dd67c427df51275736641a54e33574dc9a9d": "0x000a31a56c7600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a366ee70b3e11f8e046d04b33155132c002b0f5db9d000d861a0cc17c565a0af": "0x00d815f9b05805000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397498d0f6cdd0013756e9f6dab29eda820eb7eb21c8d1d8b7dc38926c7aed09399": "0x0078ae926ef109000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c824b1fd9c7fa47926d8615230a2952622732f79b2c4062f3cc2ad70167895cb": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736344dc8bf108240f35eaa9bff7d7ac66ea83d46eb13e695ae119e6cbb49561c": "0x006e7072df1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3582149b0f510fd087607e1087394e91831c24a899f322cd4629513c603b386": "0x00e83abf652b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d2634022e475e676e77b8733e5a8cccbb874c9b7db0712e5eeb6be2365abbc0c": "0x00321bb20e7329000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb76fb5f19bca17dd83c5d43c12b0be4bd35d85d18d21e67299ae32ad0b08d18": "0x00148b66da2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef4db7edb956b052546169036d75ca63d9c4dc45818fefb2eb11f2217828cd86": "0x0022afc58d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a71f1b2311ae8a086ab3e4c910d3d13cb960afecce074e8863db2c5789ae26c": "0x00087387252706000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397163df7203b6cb1b6a87fe579f8a0e3f34672576fe9240e5fff0d52ce55ca83e5": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970999fd1b975746c5fc9fec6e700a0dd80e5a6a82e6ec5bd0ef08e21a1a5dae12": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb9ffa3ba293a8f5cf1ac0d5c72023633a88c052e2776daefab128fd98b37950": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397361bf1273b50f25ba514dc2e28c71acef700f2e1520787e6c00f5a17bd0598fc": "0x002eb47ee85100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397753a0fc3d4337ee84d8b363dd6fd01de563d9fd85999a8e34d0760d566ad4bec": "0x00b4697f7b3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e84e687832e1b6b37b128156d3f725716c9c070744886d6d36c7e3eabc9fb93": "0x00865401b47f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dac6c54c1404d38dc5ff021d5b50e71f5832ac53998e31fc989364d67d0dea2": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e27576a474c823dcdb1abc02d118018e1b520ee2bd7ecbc1b28eb60f5bf90812": "0x009e4e93b58d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710b650f637884f31e2e0245566f18db3af1b9fc3e1b2e3856efb4d35051e46c9": "0x00742024100f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b1f1f7fe850b36f72845a6a757dd51de74b904023b47bc1d18a8bef2b050b507": "0x00eceba11f6803000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dcd83959e0cb6731bb29b14619f03da39e1e8d0dcef0068d0e3d3f4afe517e49": "0x0024d4d8ace401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768f7261a19a7942170e7a0a0107a2b48133422736eec083d690849c1647a176e": "0x0080dc9e2b3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760956a76de7bdffdb6d35afe3d4dc8b97771edda830f511a48d524fe15b3f759": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f4ba6526817b6d0a5a0c0182ed76eca0fa489fa4e5dbe830da76cc360c5dc3e": "0x00749f62461100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771139284b40c73a146bffa75aba340644e80ba2f39013efa79870196fe8803fb": "0x002695f2b11300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9da0820d34dcca764eaf033b588a81985cf8b9e8cea8a147fa1fc71697ccb7c": "0x0060f86c8d0700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d4c251397eb79fb614bdc01c1cabffabb11a43b11c71e43e22227b112f9cff46": "0x0040900e0bfa11000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fa3fb44c8c9246dcab8f3f21077df10080d7188a45051514dd8438e446bbafd": "0x007c97c8d60100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b18d7b5724ad95d5d3b20959bda8b31c3f9b6891fea48f01ac305073f3de66b": "0x008aa5136c1d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f547c5b56e1b83ed49b511b7643942b86785092693da543788f499bc51ef738": "0x000c6098159ac3000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736dac60aabdd58cab5400cb79ec1bde9b58fd141537f6f7fa79f65b5cab815cb": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397621b569d0d60b988a51d9e9048ba67b95ec6373cb04574fa4641d08221a59645": "0x00aecaf4c90900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b49530d3026aead41bcbd7a210f4774ca8ae9c9eb0b32e961dc0ed35a5d0969d1b": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f44f3875bc7e885cd983373c33f8e7517633e3d0aa2d9a31db362c1f0c740c2": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff826bdba22a56f109b19112937b0b21da5892b463c0db1a18cac4267f07d2b0": "0x00fa7c62fd6900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397219572a66339a14ba9cd1618a2e86931fa368bc6d4f963f862cc043b41e8af16": "0x005a1220334f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975774340f172694dad5e61349fea2460d032edba181a931b8c561281d254d3d4c": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721a62207ec1cde8bbd35db05424dda6164568f7f7bc01bf81609473a6bbd4f0f": "0x00ec4622388506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783258ca32bb04f476298158d13ce38913515b80903a399c89b97152cf2644f96": "0x00500a82d0d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de002d583dece901bf213ea94822270646222498bed02f4a81e4523a901eabd6": "0x00e23c551e1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f907659c187e5e1bfe10102d26161f0e794632da72eddd96b3a8407b36b3ca1a": "0x00ba589caac201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae495d501f955ee9c608627ad28a8f96377419f11380460b8baef83e5b3c0757": "0x00282e48726601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e4d35ca9c91e104c71c304e239b7ef5d74c1f46cdeefc13d76ff33f642ca061": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397676566f43e1788c2aff54361510ae726c5f51d82f39b02350a748144cf764fdc": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397807dc8f5efc77d453cf6a43440f72401225eea5a26c879b531b873bddb84fa91": "0x0050bd21761103000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4833639d883659b173ef4a85be5457ebc3a1311bcee6ffe5601173156fccb20": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee46bc6fdd5c7bf3df032bcd6820581c63e00baaba4e6abe0787be0aade84374": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b47454b5c51f9bab7cdc0c0276c5cef873810556f299b3efd37399a4b8c1a3770a": "0x006e36bb883b13000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b6b3ee90df3b0d13ee3226b27aab53a83fe327663110958e4f70ca46bf25ac25": "0x003e7d663fec02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972cba2d2645924c4a33f8ed2d64f998612a7420cb271dacda0dac5493e9ef8517": "0x00a05a8c338051000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730f3c09df99bd678931847dafdc94062bb7b934ccb7763ef2815ac1af52f589c": "0x0010d733860900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4677da0cd006d1f41898d8564573deac8b952e15f8134457f9cb7b0bc945f8ec3": "0x00bc915c481200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4e3e9028d03e6acdad7fd80db3ec391b991bc4bf031eecc7c9f01a1faf42757": "0x000ea4d437be00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397081331bead78c35b3c317514e2c4f1990a1a7d729f904ca2edf0709bcd782253": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397785bc43999ca51a18353109d8402449a83dd89f2bd1b60f47370bf2f847d786f": "0x00fed5f1475600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40ce7aef4ab9db244456aad87ca1cfbc8daec198b1346177822af60dd13a175a7": "0x00f4a811ff4d27000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f624471835b0453961e6906a80afe0b1eb2e1f90b84a9aeb8632bed50ee8f33": "0x00460467015601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774ffbacb37577f595a4547b6c97e281a65f3e1093f62684c38f7b31898bcdc21": "0x00f87ce4f60900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972feaac7cfd80b406d7a9e47e0ec204a6f8ce3359222dda7e7d19dd190d10a2f1": "0x00520c259a7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ada48c95bb2ac5db3a9e3e3604fac06f55380c476bddd1dccd7a6b408dca1cda": "0x00c4463cbc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f003d48501b251518c2cceb35104d8d8b7c5211917af44410259fb46f8fef363": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd75efa2c0bcf5fad279a5a603f5a7ee02bf39f0483d7d572ae1dc5ab9e5f77e": "0x00da6352bff302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b979305a9fa67cf368d271e3caca9bcbf855000cfaa23e4a787172b6fb20c4e7": "0x000cc18f250f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701a1926aa4c3d61a127c727f24c2fbfe765d8e3cf747273253337a9f6a2b09cc": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759ff8071472702b5ad55aaf82a61a94dc1c15c7d54cba2c123f04bd8deae529d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9e7c9488a5606622d83a12f4a11a8b6132fe47d66504b25828d3f94068bc6dd": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c387b03a097de9cb4d8c81450478cc9fdba0966156451f0e841d0f8e77e70d0d": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714a3a33ca3547a9bbb03cc71897f9031c3be7e81a6bf010dcc47870711acfde8": "0x0092e5b6521500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd66a6e33f989ec822808ce98446a081ea4180498625ef501b0b7a7b172faf06": "0x0062844325d300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a9dcfa727706f710ac69bcf9ceb5486de66b28587ae56843f38de2b475adf1b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6b95ebccb3dfd5d59a53ecb15da6adc5f39d0e56b84f92f83d4fd125f82828d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec042500f780740e4730e2d04b9acf7e187143de6a9364fab4a0be626ab857dd": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713f2c4463411468ed024534a97e8a34fab4e677c70870448b0931a9f20403eb8": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776af85bc5777465f28d9a8fb2daed5d0bbb678f3c68942acef1e3c994e46c520": "0x003a970f2d5f06000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41c79538fb87a09de261557bc1de0720c0fe3295b4dcaa78611f93b02c14188c5": "0x0020e464717e15000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e053cfaf45fb940c904731172d674f119383f84b45d44c76f53f386680f4b8a": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d918c1641aa49afd519182e7f7155bd29662d41060bbb03cf36c659d857113a0": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397270752166b2caa3ebb3c8f1e897a7ed217786e54fbaf9d6c692b77257ccc2e5d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978aad5dd4961f735a346e678f9643b9dfa69e5422298d6d4bdd4b81835faf0b4f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e05928c130c84373d1ef77e84f484fc17d16f4d6468180d4c919cf71988a760": "0x0016365ec7bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975350322a31225612183f5c45776bbce3a8fd7b5a7c2aaba2f96521307e03bf21": "0x00289650330900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c1d78306f04f9aecf0b5adfcb94ba183eddc3701c3752e42e4e57d7ff2bd818c": "0x00261a1f702600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6a3fa4196d38c83f3380f91d32172eb444ea365886d2e045245de7f0d864e84": "0x00e0abb9523e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b218ba9bc1cb48a6fbbf4b994dbad3f67ea61bf5323289ea90ebbada959bb024": "0x00a65f83e67f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397798b87a2c7417c2a5f602c3d8df0cd0d95678a486c34e1309839cc8802bfef46": "0x004cc1a554a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796ca715ca45867f5489275b2b72ae222e6d0f7a01dd38bca00162b48d676cd94": "0x00b61557e35d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2578a0cd5a1e0d92dabfbb01b4534d0f2a9c09fef68f40071d751934ac83e0e": "0x0094f9a9ef9001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746f530f59b9075feec4e1f5345584f12cf262759d79e9bd087949e42dbc71a76": "0x00e070e8b01000000000000000000000", - "0x8985776095addd4789fccbce8ca77b23ba7fb8745735dc3be2a2c61a72c39e78": "0x0c8478f51feef5a376deda20303e61c855e0b96451f692ead53d838130bce9cd086c98dfc795cd34290966dfa3a4f690a2c703dfaa31792854885295a61cfdd6708a0e42d190d3ecaebf11d3834f4b992e0fab469e6bf17056d402cb172b827a22", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b46d5fbf6eff824b075795c381ad7b5c1b8cec6a59ef046ec7bcf8418d9c87fcb8": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc6f979e36d2f845dd0edb8d356d4d9fe73036d6a41fbaf16dcb49160e9d8e25": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6bb8ebf257f800c1ba6919fc9b0affda34473bb16f07cded64d7350e5b29dfd": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae472ef56c1f2a980a334a6f20716cc8ad8253ed872fab37b3a6bea077429379": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1e782b9429d2aaa39b60135755af6d02e0c00ac6a98e79f09402b1d60a5b500": "0x00d4dae9256400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a2bca2bd3e9975a2c338bd68ec164dc0de8d63700e4796d1731ab2d7e74dffc7": "0x0042e07d6e5703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778c3feb21ede74d8c7e50607a2de9c0b6626be768568c280370655e9419dc008": "0x00fe42f31e3301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971886119eea70552a4fb887bad9a56740efdfd05638c9b96fa99ff08a6ece7bc3": "0x00309112d51f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f601fad2ec0d84b3435f8e99b88b609175e136d5fdc91b76cfa73c4299adbe3": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e751226a08e4d0c5190f01871e0569b6290b86760085d99f17eb4e7e6b58feb8d6249": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533ab4c8a71bb3ebc2c052fc592f1ed816a76a38c3fac9bec6e78a20859b84e39c55b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a5f52c03336ce008911b7a7ee42d09226495b6615a0669c638598d7a60981e745488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533a088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339c02572939d97f5b7b7e9131fc6471e52e7167a4fa60f603b05d7191b2f4aaab4488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455339088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338a88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455338378afea5d2708b19a7b52836a12a9be3b29d333f76a22405952c22d1c6913f72b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533810c4c8ab4da7d824e44992488316b5e19086758cf0d11778eb46947037de4444c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337c88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337b3e171f99509173fdcf801b04b99c5f9b7223972c97acfb610a599af2353eef6a2ce76811e623e00a9a924b1c97e5e914d920f63a02078aacac0914f5353e460088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533763224fc332242a93d466150af8460afd740f79e14150640fb2a216ca1844d0d5486c0d8e2d856eaa6efed981f15d07f89d1598e870b62cc7c61fb464f943b961a4d58a9fc7c2894b0f065cc6403246fb7970c2448ecd0e385e0e172c6f3d3eb4488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345533721aaad9133956b5100150de82a91d8a576dcfb63fc7dd0d533608398395c6d05388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455337088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336f88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455336c", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243aa5cd4b3ced035011fec1d41b3e4ef15eeb7445794e20feb20f017e6f15347e3": "0x00bc15368e363d00000000000000000020bd175202000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da2426805be69e09fd800a81efda6d3730438ec2620f658220f2eb3037eb23ab": "0x009ea646782400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e720bb6ac505c8b8d4edebb9e518b9bd6fa6a09483c1f3e287710c94e80278b2": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd68e50eea0bf231276a5b52df8490f79b9a1116a5355a5a1b813680769aa725": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d78deec53c1720d9bb326543d2b639212bfd3d2f7e182179edc81ce55212de95": "0x0074efedc60d02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ad053fbf26b10d7c06fbac2c2006fb90170f40afbea356cdb93c50372357275": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795f35e5c641f844d17f559c9c01414fafb32da0f02518ec4ac17bd61c26a4aec": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975476fd95b5cf876f18951bef1267cca68c8778f1f99cb34826bf628f86367b47": "0x009c1a62e68200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710e4b7e7092de9077afc9a9292021fed8aa18a3556e1327bf7aec7479e979357": "0x0006e8c8f04800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e1eca5294c3fbd3295f4cd5d45c0e29b41ca929bb4105e2061dd639ee398c04": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4e21a2e49eceafba47f6f8cf2cfcb6f6c723b102377ad3ba1079d858bbe655b": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecac0c22fbc522be84fc7319d64cb747ccd02cdcb61714d0378b1471bbd4a87e": "0x007cfd09a50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea0e33fd75d64ccccd1e4f527f0ba63639b04e76147b8dd9b6e031702f34267d": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397464cb60f9442263bfa06c723f06ac45cf0c74ab417f6631cdd8bd3be36809016": "0x00f4e9112c1501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efdc5371750682c75e0e3dea9dac40e4996418e5104f434a7da9a3fda7ad1965": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397584b4030ec470fae470e152dd3d0218437102b5602e6cca6db5b5f82ddb65ed7": "0x002a80fe7a4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1794bbd290bae43f89507d831f33ee70aa5b68dac2d3c28463743d4bf651ea5": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5c90460885316f7929ed14e47c2b75753c15d6aa38ae6a2f657145eee2aa1b8": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40a9fb27b563d9c4f2b354a487237dd99fd89ffeeda6a74a0fa307f5d33b040ba": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722ac00a7ea1f3fc4bc6c3da93b2969508888c3da7c97de4e78f67d67537b808e": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5aa43abe176fee551d7c9479c681fe776d870f1274c663690c667d2d5825737": "0x00da88e95a0300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c878385dcc29699e1a40d96c79573c7959d2275b1230141ed7401d15ea944753": "0x004ad900dc0c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc57389fd633240ace8b75f242e977c49aa0f6b1c3423b9a86dcf16a11d8fc68": "0x00a4289f320700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714cd367044990b5375955ef1080739a8c7bc28dd00dc62b2e0b23cf2570be4ec": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397976b67ff8cfa373caa75b75a296aab7b32a6d4e2573f185af993a253145c0b23": "0x00a6e052aa5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974703f3c335b2c2e08eab521bd40f6d975fa5e0d7c871797bc8e8a03d41432bf2": "0x00566411cc0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786d77f3d89980d1c765aca9c86fb8a81c97c019bcedf0ba52acb52c8cafba78f": "0x0044698ead0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c065ecf440749bfe59c8681cdb8b9a3e2da8dc493f0043bdfe6eb52ba166312e": "0x00449673730c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397766b80f068405ed28118c4e9dee490825b8178d6f39b9077a9b5298a8781733f": "0x0044de13149e03000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b41037d2efe6f18fd28c1070b8e65b2b7b5487a505662e5406964dfaee106d186e": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac94aaea1efa51372c8ccfd3912422ef45ccfb48dbeee017fe67d832f42f85ef": "0x00042c3eba5e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc725755363870af28d97ff8bd6399b22c9ee4e93b6fb912b62331c4f2601c37": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972096a89785062d2ec8c3b4f1e965a2eb52305b0ddc5cec89cee3f8f67cb22967": "0x00d6e5f7f6c601000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ab129cbc6b6d789b3150f5baa31706806ff89c0a4ca8d416d88f491eb1989615": "0x00da49aa61b26d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d07cc0b4bf83e9454c737da06c1f827b8e1e7051466fee363e50c783875050e7": "0x00d8d7433fd006000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43fda6b10ddd6be1decb4461c1eac82a19b3d7375fc020f02a0f21d9f69226804": "0x00d6d9e581e101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780154059751738c853acb8fda64d5c72409e5c8654c338120c3de715cebaec9c": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771a103789fd66f124f76989d69f5a40bef0aedf2b3a93a1f331cc33c39668e5d": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1b9c3852bd8300f3d408a97cfe37b90e7a60ae97a7b3294af7d2961da8c554b": "0x0084e236679803000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40c07a452863140d440fbefe7743193d869dbba52c25ba41681b7a72d2d9f6ac9": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e10df2cf79a503029fd20b19e5f1364b7bce571277ccfbf353f90e173e420068": "0x00dcd1db054800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b661cf96535c01832be62b34414c83a9c6972839d25a9803ef8ec1813b404190": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397459663470ed5fb78a0f9dcfd07b2bd9e9d34a32568b508e51db24a95db69e237": "0x00a26a5406f200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a544b8c367dab7a2fa10092b1903eaa7f55ab881fce1b9f820bbb75d616d255": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978747917e671e787e4231e5151860d0ec2c38b8f1ae808bb75b18d918b267e247": "0x00203f885c017e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db931e6785815436c350c8b7391b693b2edc788fcbaa6e1d659402823fe4b229": "0x00e03b8bd29400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397473a6cc04b8672a0000a9b9b7ccbfa2b102bcae7ec4a5611b85d11fa54375f01": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721a3a7263410e5607ac06f920bda32e5c40b9b358c11af751c320a438b04457d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b9e73e91f841e6329f85d2cded1d3936efe923d15a010a3099a03132ef53cd3": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e17cd1635c9a8578179a3ca619750564e9cb2588c2ed25ff01f3621c2641dd03": "0x00fcec52e30d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397732b6b9d7248f13a054a6cf6f1c2d0a850f690fed62abc72ffd69a201495084f": "0x00d8b10d918100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d65e66af0220f2944656fe7d8ba2f069d7f9dc58f424db0a675d1c77af69b54": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721480fcc1252110c2a9e5617a298d7127e9b9bf0182103ef62557bcd7f062c96": "0x00ec4622388506000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e75125b8f29db76cf4e676e4fc9b17040312debedafcd5637fb3c7badd2cddce6a445": "0x010188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ebd05764432a4ebcbe97e8b434b0e2a25c53aaf9ce32b1218b9d472ecdcd0d534388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532e088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532df88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532de88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532dd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532dc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532db88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532da88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532d088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532cf88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ce88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532cd88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532cc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532cb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ca88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532c088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532bf88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532beb2c8872393487fb35de85c2d12fff24c4aa0068fa4cf3da82e9bf9b34a85e56288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532bc88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532bb88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ba88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b988c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b888c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b788c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b688c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b588c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b488c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b288c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b188c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532b088c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532af88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ae88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ad88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345532ac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397058cf2fdea803157331a2be94c9995b4c9367164fb1a0cda9fd8f03142c2be6a": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc7418e0bc214673483d076bb8500d6caea527fefa0f8439d41544bd7037dfc3": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a912777b30ac3e9e7b3d6ef2b687df472e0d7b21c350d5893bc30d4c50194c8f": "0x0064b3011a4500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397767ba719b97ee6a516bd7fd6a1f2fa9255b5e750bb33731acbf2a47c27f550a5": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397418ad7d848ff916b35d107014959e2686ca080fd1241f14e6f99296bc83c5c83": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784000a4276a7223914cefc955b5be770d893d8e56d54ce03895fa65ee389d714": "0x00d403f12f6001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971932b7b9fa3b144c0d5a2e6a1da193b9ede053490c7a7856332c17600aab9ec0": "0x004e6904cee701000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b6579733bf5ad9c63be8730ee493d32b1df909e52cf64db4118b568a638f06bbc14cb45": "0xd548c490ff6e728ed093a7406711d76b2c7d04c77277fb88b1c3c789fa641737d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179d684d9176d6eb69887540c9a89fa6097adea82fc4b0ff26d1062b488f352e179", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2eecd8123ad533b0bf63af08562fb254ae9440300a9c31c607c0cf7ab52cef6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d8b9a9c99bd2f7b0cc10b5bdcdbb62c64cbb51a87b69e8e47e8f7381cf87fc0": "0x00665faa191700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970646ca3f158db4fe362dfa76b2ca08cfae463d0d9a4031d981151d81e39fc402": "0x0050a95c091900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4780aca6dd97a6b1b048b59d313e18e253cf4b5e10ab09c70e0df715b349be18f": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733c26f0977b13d080265dcf7b158c46bcf20dfb644782869b72ffe550311d158": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ff057d683efadf2819b3b25df63f28434912233fd2f59bcd0d56c995fcc9726": "0x0096837eb52a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce0d73b8e6f72ed8a0b16505ce75bea4479c76a1aa1bc0ce55bfc4e32ab4baee": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397badef469685e5fbde2ca11abe686386c4a90780fe0590589d87894ee51d3a4d7": "0x005c0337b00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b681f961f459042004e89c6cf00e16dc4497ea95076973df19ef1a9166cd91ee": "0x00ca91bb010500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4371dbbb3cd6d6bf7e46f49d612173a6d3bbb27c1a9c3c6f49eac5bfbdee06d95": "0x007270a4519f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c38b11121434e404bc6ed42f345e5b214f7f54e0229f16a38f1f9c55c7ea8a96": "0x00ced1754fea00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf9334b579b4ce69e9b0b5909669a553233cca1c8af691005c223cdd9d4ccb72": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743c9bc7c3edc22e95908830afa887ee54c9e27d31d911b010aaf827851a28894": "0x00d89708430800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a7148deb95f6f96007f44b4bbd2e107fea58c45d74077dd9da52724520a4c4e": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728e79e20b0c027eb21b0fc43fcecaad4ac30cf778e8f6b93ef4e57b5189da08b": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc2701bf6ec8b7a25697e3fbdcc2f7d2c494f7c5364b04015fef6ef7f377f66f": "0x002ac6cbb1f901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aedc6048d352c7f20dccbfea887d0a0fc419f6569d4f0d40081f7eb7e68d2295": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5e8a2f01ea09f27fb96bcd15576878af34993f1af9777b99b2dcebebbb8ad98": "0x00a65c64378900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4ca7a0b4449faf00d2947e88b55ce5c6d085ad8dacf5c881e695f5ce49d4680": "0x0042c538520207000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720f57b44de1cfbd045ee96ffc295ffa995ef566a1fcfb9b2f1dac2ff6cd51215": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fa4cd54b91837d4fb20b2084888e46f7ec5a77071c3a8f5b54fd4a9b4e96ac9": "0x00a69227cc3b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397666679fbe8a3137dc6c62d50f1b9aca1926f5bf6a9e79e22425855819222c085": "0x00bc7c65071400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aed95955872288d41735cfe1f017910bbab6949a08be8442a0afa33e8be3eaf8": "0x006005ecb58e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fb0d7c4ef31a3413041d1190fd0a2577c40e975c9ec26c35cf69f348d3cae17": "0x007649524d2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c6734e2bd9c8345421f28d138b42d3a08b99d804b9663227dfc61bfec22e0fb": "0x0018f5b0d95800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7b78c8c5368539d57aa462217586a5f248159f6e711dc61e2ee50e30d5c9fbe": "0x009c3f425b0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb0f9eb339698c36a46878437415e2448fb985783012aa5b760cbb7ba430bf35": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef2f95823ef6ff15b905fa2ae2b782404e125c01602f60b6fc697a9f5287bd3d": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa435b0256bc9a9c2be374a7ca92d3a90e6e906b6fdfc8e0ab274d33566e7fa2": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e403f02a349210bffbd8187fc59e660105330c766267b864ea15099e2b51912f": "0x000aa1d3ec1f01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b439a49f8392c2a40af93e6f74ae8e79bef6a0861bec9ac66a25fe22a95ef2c5b1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397168268478d3ccc5890b37e576008a32bcb06657aa5f9adde78db2e034f7bd43e": "0x009859449f5200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d53443240e4f19c00ab053356daffc9d1d7f4d0ca6329c431783990cdaa97f8c": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972507e9f948754376908946994aef4ffcb732bca50740b171d0b62f6a2844cf53": "0x001662710c0500000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4cce213e374a6936506375ccdb9831ff12392265e1a8208dae4b9690ffe5f9747": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b58750111e2bc9bf5b2c53af90d38a278ffe43fbd0fc660e24a191117044ea79": "0x00aede25018b02000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4f38e6f7e119f073e779d0332617609da1e6280bc277cc857bf53341c7e2930d1": "0x0000470ea1b0f8000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ccb3f8c195a88489438996f9eb16bc71088f68cbdd83ea35a2c87d5c99fa3340": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754d3845849d913f698a2615879b2f8c220c41d47177ef0ef44cef3110c5811e7": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cc47230b5746f631343ba8713f164a22c9ce09ff7d954381447efa6ee3705a2": "0x000edd373d3100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5ec2075c80a2c0c8ee131c0008851532e63bbd99acfadc5083728f2126c02b3": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e7ee6514501c96e61d1d0dbad930262e333e9048bbc235127ca80fbb79cda255": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf1687fafe70a719e3375c7d28f4a0a1d5e01705f0bb8a32146ff50f91453386": "0x00ce0530150000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc68649f550e9ed5827812e963c3f30712bb5f512e0bcb41a4c8a21a286b4cb0": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756ef297a4c2b0bd9e8eff22f1cf885f29002bcc801a3283010f861756db95c48": "0x00f0cc775d8600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ebe29b48a301e5b5828b539de78d61990f8f1fd77e57a39d4a8b3ede63650075": "0x00eca5b6716f08000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c42fa95448d90825affbc1bbfeab5b59eecfb188c502ff72d3b13e4709924ab4": "0x004203eec38a05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753727b871e4e34ce90fe7b5f58c1e3ae77221e43ed97614aa423b0d9ef24a98e": "0x00da5001030800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397558576e91f7665a5a53b73f1822ef20e9e002cb6c8c054e344cbc2fa48ac08d7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397291bddde18b94c2db8b3e32d7d925dfb1801020a46faeb8c053858a54592617a": "0x00189c2b960200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397573625c9c21a028d6545523c943344ae943ede76514a9d2db351eaf04177e5c8": "0x008c8b2757e600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764dfea868f40dd8a0e52956fa8749882b7f91d7c3cf2f4f0baa405e72925b4d7": "0x00142ea50a1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a6ed74137f578ea6a851531dd3928b3cbe5cdf417c00759b7315d5492953d73": "0x00b4ddf0840200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a27e948a088b8947d60f03748ccc6739e9aad20cc08e331326120fbb0b1c8037": "0x00eef3db9dd901000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b43b75fd183768ca115ff086c8a2159eca66511a669504387f4a025b49a95bb6ba": "0x0040ee7affbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9cb2b659c80b6a377f3316a54d1712c58b3129e76af29bd4b3728296f44c9f2": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977be71a8d49fdeffcdf038016e50e30c99139d77154bb307365ec29a324ef2a58": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf83801498e32f215e19c83acd33496091a56753c372b8e5f2b576fc26b2f698": "0x0080525d633f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975991da5a2a22ef3bdeaa241b375f167f6f1053a7f0199374f2d6a19cdb6c4b14": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ab65fa26538d85e030d04dceb5740ed5133b649e2932c9dde58b477a5bb6bf3": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f4b05b91c0eb420e4118657dd7a9fc68fc3018b1ccf24ef528d3296ba49d0d7": "0x00343cfb8f0900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4378b771691eba4a8e5f3cb63507985375c1c6d9073a43da5afb09837b6d88ab8": "0x00c462cb9a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397027c6cf021ce7a87189b36fd48e64b050a1dc89dde676ca374257a1be0d8a5d5": "0x0098e2471c0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974325316bad2d1823d806401cdc6a494b685ae87f26143d89dccbeb6c0579539c": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976658e72be9cddc69c4b5e040c9ff538706b442ab351052e82d5a74381dc9626d": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd52740727336dae111ddcaeb071012253f7c460024f42053d9b21ec52ece64e": "0x00b808f1f31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f61e8c6bcd71e6eac84eebc4ab6f8755846a7c63821eef73dcd2d6db525d592d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c6f8f4968743b24a9aafd5825e0207f92e94b35b6e50f10c626ec8fdb8fff97": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a8d72823d2f9f78490c3e123582bb0d0a0b5e68faec256c10611450ba8cdb67": "0x006c6c3e88a001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704a95143a5bfa8999a390788efde9bf4b08eac4dbe94234b1aaa35c5f061c8f5": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed9b35f1bb26d05ee6b064120a8f9d3690df8a0d508802803623c25f10dec394": "0x00b27651350000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e86afb879efbf9be8b35046b7495871751a7f79b96eaf3db84e8bd7fe7d6356": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf6cf9d66d142dfeec15468379ad7f9efe715c25af1287e4b117dd204dfedb09": "0x00cc1d9299d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d39cb8f41ada0ed9ff41230f20c68e4e7378c4a02f9c29b755acfcd740aa32d0": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397746d7e9d29780c59fb0d3049a58b3cc8d602079be899afa1435cf0489c2cc43a": "0x004eff6c020700000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b44587d96ad84ceba8c27ce2d5b14f169166f3ae07ff7ba01069e2eb33ed290c6f": "0x006e82e59c0794000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730806de91059fcf10337452a6a8bb14aa384f1d987646fc9603715e167130b29": "0x003461d4072000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397366ebea28766e9c7feeab4b45d4a9ae50f54fb8ed4137ff8313e8be5639216ff": "0x002841654c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bfdeb94a5021b0ed217c7dba71c7bf77fa17cd09e1cd01147df3fff7ef75b34": "0x00fafe32aa5600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4fae76e79d18f4cc6b0ab9ebde23e8eccb10ab75656dc28dca9d20e27595504e0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397637970cbec446f9dcfb5737107dd372e711e899757f39341e2ea6422a2a1336b": "0x0044941f486a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b19830590f2d2eaeacf198f8f26ac36f7b3a3716bf84a94d6b1b6cbae934eb5": "0x00f259fa575138000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b8b225e6e1f2c77c6eb2adac94b407f295ce6fccf674f5bde7d2c712e791f0ab": "0x0008997865f81e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978737924b2f4c6d32ee0d6c01fa8797b26016839aa87161e1944909987aa3157a": "0x00da2e68a86b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c981e73b9f170fe75c5dc068b22c555f4d043a82d45e54555b42c8b56b51a982": "0x00823c627ebe01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b830af024bed067aea950068d1ce541a7a7e6752a1cfd6f302db9256f9bfa47": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0f280a073235b9f6de2436ff60a26c2a26a0edb3556c8a632c9c0dcab0def00": "0x0088c596351d00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824325d96534c5cd2686ba5ee1d4dba5ddff937a69a0509cc493188171f74728db8a": "0x00989999d6cd44000000000000000000f3eac39b02000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e75570027967edfaca204a7c9b98e75c35a56deff507052a306a6a24ce66fb61": "0x002acfc5745300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b426be58719c0d4a4c5e0de508b1ec0c5455d2bc448ccf92949a7a794d8a004c23": "0x0030d15643ec2b010000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a7a98b80c5023e699b0226c950ad4657819bea2848dadb3afb23df4a5bd530d3": "0x0044db3fc1ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f0fb940b9c7f3593120574d6e7ec381fad053244fa7d516af8806d758da256f": "0x004c2ee675141a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a504314eba2643872d5154879865e9c745a04e9789f4c96f416eec610f807061": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccc42c4d8c7b505739630d3e8146b135cfc0be4f0a6f492280382ca7bdf51c7c": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8810b43a6f4eb3f45831f33fe348de5aa59ebb78b485f08a5239114b4ed12af": "0x00900126fb4700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973523c3b8522004b4e1871ddf6823cc412cef845c5a5dc0fc32695f56db04616d": "0x002a535b914203000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2917ac6a308d645671864cda07d358e751225078660c533195e7da18235df53a19f3451bd2fdc9e4504ea2a067d6e06de38": "0x010135455a5737346d69753261754d555669724e594c6e41503950704a487a396361fe0fa06dcc3d959687440e296a620f940245ded4a1a543a469a282b1ed65666a641c42015cbac274c6494f87d9ef1d6241b5d65fd1e1ab9cff55d3c5a675a11448657333507a48436d4b655537767956574c667255325a594d37647051417964ec63a3b6985e7a08351357f83f1893543accc9c4ef8817811e788674f6fb2a40e011c283ab85512cc6daab814652bb4a3721e87fb0355a7ac5e8d814c173900716b565071a49756783626110028c390a6128c035fc026f826a5ef3c6202b6e369ce2cb313ff5112712a060b5310892db55483c4e3f2cebc577dd390992743b7f3441da0f4c003eb0d38d8c3e56fc3decfdf7a9555325ef18b88c4dc001052139e43aa2946b5c5f23ad3deb028e8cc0aa3a97b3711ae8afe66fd8bb8df32d822358ea15c54d6d4115808fefdc36a34690e5ce5012843f8ef44c857423257f174458606c950e0962b1d0005618123e174265e57d8b7b89ed77d93a7e1e3fe26c07326ff2db8d266fa682b3f271228c59e568fe51fccbd6656f99ae5b36e4b5cc4d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553104b07896e2555b95f29a2f533b3b7ccb7d1708daf144fd2b1ce5c6d2f6dc59bc62662b79268689d3cbd52ae1b98afae110510a8ca6a4a3fbc3891246222f7be567aeeaf77b9d9f7a8735062666983a9ae06d505235f72f4fc184d61c68f3748e3014e55debcb1a970db1b51f535601080d128df5dff2593fee1e3369139d51c072aaf3b830a58e11226dc40a722e80d1885ce70b03f3283d6fa33b78161500035966652bb5004351a31c7d4528d0cb506339fe6153ab65cce1c87fc0c70946bd30da6df04cf8afac153b0360129b862216663d7f2537d157cbec2dc860b340583506d533d37959ef8856c817b76cc9d77097d5b8b169ff910b484724e68ed46e415ea23ce8d6d91d2db94005efc7cc641480ebae3d76eb2f27da042aae370a8f6e783eb106ba819ff2125db858ac9bc9a5f0cc3f825f6a8050d586db169555ee16420a5bb3e842f45eeb373912201ee8d458c63758f98f94933f42fbc64d13bd1dfa7eec1636ca9441be76a23ce833204a0b13dc51f0627d7a8bb1187704a61c149efbf480d958cdfcb501e7c573026da710fbc824f4fa05501fa36cfad8dfcd5092fab26f40b895a4f244105543872f16558ee0c2f572a5db308338e6f1cd7623f6b21d624832094b03aa672e016462a020e217cc67b1434785b99114a2b4fa5a759f81b50a391fd885c5e3cfd86a31f212467d65582c95010a48bb30d27ed1e73217c16cee41c3175cb82558cc2370e308dffc62bc79b2b782a6cd16ab79286840ae1bc79ffc30a6b7859da8c2159a4dab813072fa29bc05cbe2324d00cdd577d6ac28ef62f212e4a5888fa5e72b1515a32233dfb118a9ea5de97558b1a53d6512d86b9c435aa889f34178daeda9b781f36cd3b6789e4b51e90d64f043475551688c0fd813982bc4316c5855d5c7dbffda5fdbce46667ca8a72d7ca224a25a1d845e84bac2e12154ebcdb473953fbb50f37277cca16ad7047f6e12c425814657784abf3cdc5417f9db86fb77b89d0677cfb0523742ea616bdaad590386bde64e9ad164134516e276a943254016fdca1d481bf92e493b60a3a2e436dd2a1a672e7437fd3f9f8f6f8a18f6fd20c644d02d36aa27ea3e780cf1e9f452576479f95314955b6306f92c4bb143c1f0bc28d6b1c04bf5fb9c7a38969d279b9fe78cf53a7028170b7d09cf7687f409c4999e6ff129e5aa4deca5a1b5044138babcdb790c082cb53d6299dc033e467de007bfd5c4c0d24135aa85d2f1d983008ff78fbb66f628bc11ec994800136a6fb4567f4fafa26362416a5d42dcf23eb2b4dfc06510d810694ada5bfa1dcb55d4ed2ad1c19d37275ee93148bcf0c7e51cca78d64b4f327497753b33243d0ce0f0e0d4a4c6e102b628d0ca2f49d606cff851203ee36a34f01d81d6b5c405e5aca44c4a729d7b106f15b7ed051af372e9824adc471474c42345fe470e86e5e21151a10f2b204b2709ba40e9feef168384151d895aa827b6bf9d0bd6e71ade796bc515b5632c47bb9d8f9ae5515f342d371786ff6e5a1e8c6de2daa327135f09c25b914b37e5f116fb7cc3af3892e6b1b1617a9bb1b02d88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d3455310388c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553102e6bf945e20e8a12944e5d8044c77bb0f2b5d9205d03c7942888d1cd02c32ce5b88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d345531013e63ecfa7794545a774b45b8ed7ab977e59f6b9d1f6be0e2533db2476cd3331e7ec294a2ad5329e92488dc1de82e4da5d0ef70ce85242c0f5d16aedb2460007d6cf513881f519aa8ffa7b6631e934e954afba13b14629e9683c20d697fbf5d5a486f2737d933bc6db4fecba55377d789dec3f48a963b70114655c790e256e06e88c47944e4aaf9d53a9627400f9a948bb5f355bda38702dbdeda0c5d34553100767b6804d3a3d7a6d67af7e6f2155cb739c2c22dcfe2fad2efdb2f8bb6c96b0332aaecb8959f89c7f2254a456e4dca1ed4c4e578af78a8163d553decac06702a58cbc031d94e3c4ac28a8da357e62e0408db5c8150e44188de92cb29e92bec160ca7999ecee02ff74b24312522ad6531c2cc81ebad5219b52439f791a6402d603808c1fa577b76321cb0efe7a16eae5864c0e120fa1ab45baa0bee49c69a0f378c43e6504928c56f0151eac7575949a8951c4deb28c9cd1acb26743de41df80d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397309884f24092bb9d4d35743b83bbf223154f853b5087a917136619feee2e1ae6": "0x0028cd22abaa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc442c99d8e1f4da6a9802f6720c9c97b92d7b37971b529b6b90f6292effcefd": "0x00f89a5b360300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d299dd1ed7e1690dfddd108ffa34aa22a1f1f333171e31c97a2050b0708a51d": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774664245e38d6433ac195fb1dcedca090623a95d70ad1092777283076cd8c5f5": "0x00e67bd81d1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a384a4efe221424a9c624a556e25ba7b3b5d4bffc28c3687bbf513b16b03a11": "0x005c92571d2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a73a3b5fe10710ccf3c56cbbbb3cdf05673fa67a1c57926906bca74936e88ce6": "0x00ea7479ef2800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc24557c647ec7ed669fb437d284b3738f26e3b92ed20b7fe55f38c5fe4e6afc": "0x005a3db8ca1c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4660985483d2fab5b4fe64150df0d18910fb97ca780ee44afa0ffd3da834888fe": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970397424423c07459b5954e3bc2e9b15e0a80aab4dd3b254ff881b2219b164883": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a888deb47624f3d872a186c854c63479c397e55ec000df50e23c4c8577c2366": "0x009c3a04d74c10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec52420946f566dfa1d6673066b81fc83b8fae18e22235abbbd54757e8f86692": "0x0010fc266f3802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977dd434cedc05fc08b9d091f9899861c9f9da8a9c4e478d6ae483b609ac7d90ae": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a86e2bad2cdc462c83314486e05b421e6748163f2b26edfe3a8d9508024cb997": "0x005a2eaf112f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b8caa28c86d611643d6362541a7924aca8a8c20bd517177edaa6ae4ac4778e4": "0x00a0724e180900000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cb83e02649b343e92b5ce040d699a7449d997010feddb4b773eef9541115e0c": "0x00a86126b02801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c29eea0a546ad5fedc48e2af65f0ac9c530cabd7d1202ad881f4a5d4b484d607": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c5e10fdd568c6b2c26cb4a2becea665a7e3cf4598289acfe5d6aba2b2bec4f8a": "0x0074791a98c503000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397681498467bf3455ea6e2752e553b58cc99de729530f61e1f9dad1ca4161f419e": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a3aaa9a493d8b2ce6068cc5a180b60dca6bcc7b7e89992e0b79807e03f09fbf": "0x0090c5a0b46715000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8f2af9ad9eb5739ec9e57b82c05ef2786b2cb83c974ba5a4f15922748a18c3f": "0x00c8c736f51b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4823d2b6a8a69e73a659f8f4560f2ed1d10685286d050fe9af27b3af6f8146a76": "0x00a854ae840c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b432fa5461a25a8c94187dd2126f012fa136eada44b0a7cf85c722b688395226d6": "0x003e4d65c1340a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb3c2a9e816717bf87bb9202680cb66380d8b51d99d0b924ba85c10567162713": "0x00aec6b140e300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d87282433ecee039eccea006f786a6dd921254e9005c290ff525a280b70d088939de2954": "0x00dc8363489707000000000000000000d32dac4900000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e3d694842ca3b3b1c9ca722f726948d7f262e8f42f7c8bfa832595719aaf7244": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2b8a9e5b6f01be1333bd7b2be366065273471d2d2b69926a404455d2f3dd668": "0x0056e5d2950100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397272ccbd17b14ecca50aa31de34973cf69a2ce1744a0115f1247a3b0051247226": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397443c25a9e76d1ff33eb1251dd7d665e04f99c78bbf9c55ed865374e24a1bff54": "0x0094ba30f71e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f40ed50c3a2a8938ba9c95ecc37e5313114a1b8a5c05e82637f43fb9a9b52b1": "0x00eca5b6716f08000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fe6329cc0b39e09343a73657373696f6e3a6b65797333d741b7d98ef2b37fecb9daf1bb48a3081c14eb42e78513f57b41f3e293687b": "0xb98c930b9b4a782ca392580d02ed1185fa3214be9e7669ff7dc096d17d286bd268195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e94168195a71bdde49117a616424bdc60a1733e96acb1da5aeab5d268cf2a572e941", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979571cd1bca182e89edf81cf02e2a6b602bd0201d7d44f946ea593fa95963f5fa": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397702ba4f6278778fd8088f49d721bbb451ade888018ae1b9ecb768af29d08c482": "0x00c014c51dba01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975be88fb21ec95b6b94b6316d826e68db8506b330be34aeacd7a574944a880294": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744b7901008fef7342ccc61e22aa5d6148635696251868f35732d721904aa3f2c": "0x000ed4b73e3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a2893ad601fe443433b61e9a7437a8544b86c9e4a4720bc37f15b2b360bd676": "0x00c2b658000100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397032c38e2c9a6ac85d7fc8105b4ca349689f15e0487aa4fedc0fd8d36ab3416ee": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da46e352fcb76db7f93b8350544b2913ec60e6e95ecf197490516369924f4b36": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9e116bba52d768bc9638337f79eaaaaa4904afd60c8bea9a4fd4eec8d36f209": "0x005eafa94a1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c702dd842991a6be75eb0c7631e176a333371d59d8cc630dac20869c3774721c": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d777d6e0617487fe93b9af58863605aecb14dcf076a1d31fa9781f7bb29ee5f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e3f53e0e8f1e3a7475c1a2c6d5527540f5cd8b63f83cb9ae673a203d8198b86": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e46dd1e48d68d3c7ff81076c4a87113b66ee57d3ea38aa3f5c15f5feb51b32a3": "0x0086df824a5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973368643ab8575421212615e7f42ab7b16f66f2a6beedca7f2dc7418571d9c0e0": "0x00d27175e9f502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d4d83373a52744818eba340eb3523a1e56a94e7c54c033d89d6ab466578cd18": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de306a7514cc9b8c42874c9eb38670c53e65ec378d90c9ff3ae89c515c02717b": "0x00f20ea3029000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b5e6f5e7ab6a49ea85952a5b8cc0da3003a1e84fd929abb385ccb82335a8950": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d629b68ee442ae4794f935a8f4ddbd118ae2e3252d6cc9ccfaf47c179faf97b": "0x0080e9b886a100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970929f1fd8ffc5c2fd009b7e0fcafdb1d87675e7638c22d1fd2dae7348ad30282": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793e73f161413e969209719cfd780a66726228cd58e5b79eee11b3c30b4a5954f": "0x00a0d885573416000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df8b4ffa7d0021e581709a8b3591fd224b97db1e4a730fc791aaaeb23162e877": "0x000e688dc7bd21000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977993f7716cbdc2e62778fbb00c4000e7c43a3ff01fca99ad7da47c5a024b6dd3": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0f0c0edfc53bd76f7c9271d50d0321c3c8e2d075370048ffefefb0d0127acd9": "0x001c1f0e300900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ed292e651221e69c8a9227e1c6b6f1a377df7e8a7719d54160c8af1199d5539c": "0x00947d79410637000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a1174423961cfd112ad94a1ec2aa96a9008cf0ffa566a34971da6cc3a450373": "0x0068b3338cc900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9e05aac03e1cca7124587b2e62ab39fdbff088eec3c890c8dc4f7d3d0a6e792": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2da1ea36658f01c686927febecaeac21c33b3d89465e9241b5d68f5c27cc191": "0x00dcfef6301100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a79ee2d745c7a89be55d4742ebc9165ad9f4a0ee2446c4036d3abc71518ec0d": "0x00ba42ab7d1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397430da8f4e2218f8dff7f8276998cd1231db37fd853f1e3a87f6b06b70f5000d6": "0x00c66729ba400d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736488da248932273d6364b5ecd8bd7038cf2aa994df6d7ebc7ede8ee0dfa2776": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979602a99e5c039cd5f0129c880c36fa916e7d843376689a258a4db7464a3f85d7": "0x008e0d1eb5401d010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765594abd63a8dbfbbd8eeabf0eedafca6b0d02ab5a7f117e1b86a8088ba8b461": "0x002efc190f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974af7809d4bf47e10488e837a01b431d9e8783a2b398983ab3f4048667b0bec37": "0x00e094fb1eaa02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720340ba2445c5cc2526246413ae001e137b6ea70651fb3f606d6bfe4d8b76a44": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397606ff5fd69007403405f2e47f269fbe3c861d0d98fa4e6243d4a0f33b04316d5": "0x002e33bd1e5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f658fe3468fd36d127a379ed0ce716b88c5ce6a3b214c19192b6e2c58946b6d": "0x00381c3a2c0400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b419d43658c2993ea4efb54e3620dd963a88b60ff9bfe53edf03dc42d3b82e2134": "0x0080e03779c311000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4f7ede018ac9ddce0f7fa13892d0fcaad1a9a8f9b526a9438d216031d01fc96": "0x0034795dbf0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd7cd718bbb56b25f3b14e2ce2c082146b0e3ef7698aba374736272ec857807c": "0x006e89135fbe18000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1621fb16e9ed302f6ef2bb16d65bfd22d954911d3c7495f015b40490bb126c5": "0x00daf338368b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397145b44defb39898ebbd421326cca067c3fa2f8cb188db1f5f4054f23b164a003": "0x00de0629a33410000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f3f1efe9270922fe55fad4c8e2eebb47944d9a12b93af0fb5763f35d5e54d3a": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f9a2a1501dbb897cdb75388ef854a7ff926a9cecb9044935a5743d7b949d03c": "0x0044db3fc1ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c42abf7fafece6dc85f78f4c77d8037c07da3248deb1801a80b09f5ba04dd5f": "0x00c662e4d35000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3a751b1233a870b55bebb478176c934e76a66f53c7998f4cff938012629eb4d": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774036fa05818b4f92f377a052195056d4fff2cfdc37893dfc91daf8acc47cd4a": "0x00baff5ac60600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764b4a7870edc43d506e64eb4052ee115ea3bae4c041b9d6d06c96d3490d539f2": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c64120b8e47f35d673f41b075372c40f3a1f0b8708a7df222aef0ec4d1b4096": "0x00de0f257d5781000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974426aed04348309cda0f4d88dd6f1c20fad3cc64b22d5b5d4a58b3841cefcc85": "0x00b218f2c65f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cbd48f3ee7bd811a97e7ee93c31a8b1fc4f7cd24131624b5bcb520077c5cd30d": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397778dbfcb48d73aab381684b5d425dc450993f72132a4d83cd7746fa2698664ba": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397495b18e900f2f80e7a63345ec0541f662abf766230ea41e7775876c545017715": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a1b2a23597b69113694dce394a23d509483370234f75bb3b83b3b086eb53531": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b40098201e377b938cb64ac1e466610a10b45df25af37888060633951c0a6b6e1f": "0x003c541e91bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a30660485d5e9d108a8b0e014e14d492b90d673f2bccb4749ea766f361cf317e": "0x005a915366bf09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732b90c022814e9a8693d40027e8bb39a91a081281f9dbc6630688044ad8daf17": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973942486075cacff26c2571f8658931eaf4dac6cb8c34928ea5f87bd606d8bc3c": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ce6ab5fbaece3f9ac2fbf2b7d007e9665b039dbdd240fb5d8bb53f8d94ce3790": "0x00e074b175d800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ee85761c4413e6461e9486936ff8dfa4ba670db51ebfdabb91b2d4dab03699ec": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f636c2837aea9f626f0e65987268c638af92cb20c296b88b12cd5e873d0bde6": "0x008ac4fe5b2301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974149145c6b4507bd6f4ffe9eed44109c55d985e1987616b374f6974eee372ff0": "0x0084449cfc2f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b482d215941cd58d22f742b5e6bb573f9cbf59590265cfe90bdfee424bf7c4ecc2": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba4faa80ed46dc7dbe3037e8d36088a09c0c1fa7df0c7d9766a1769f845e9867": "0x007e15ac953900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bca57bbf5e735f508054cdd81c1bd1d93482446911cbc9e027311944736cade4": "0x00a07115479803000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f9f92d8e963e71f1b0feaf0e6113abad353a1fee68262ddd45ba9bbe41ab074": "0x00e6562e0e5e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e945ea72ee1497ee7c0a6d1b46e26f62b1bb5cb67ac621b0315ae3e0c90f30a": "0x002e50c0ad4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ba0b2d426918ec26f64b00e5e74ccb92f574e6db4f170471ecf1b5f537651fe": "0x00cec8c6e89500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fed7f0638d7c2ee871016eedcc74830d02c62995565a5fc2ad93009aa3640c7": "0x00c68d756eb300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ad16f18ae44149bd5aad66fe6ca7f07641224dc9bb0b9b230f8381fed2608cb": "0x00fcfa64a79106000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794281d96887f90b369d16406f9d2fce13359abba0b766a46e3c6008959a7d051": "0x00c601b80f2a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977897adbef3c118c51e20bc055a5924ed16400d1bb7519159a34ee6b51c393f38": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742befb51b5fb59db64bc604e201cf97450da7a6d279995390dc7c628e00cf7fc": "0x007c9f9ebf2b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9ad84881565cecab143da7c298980660e4f924195940e6ef9ea739f43f168c2": "0x0040ff72163200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397672f2f95f8dce48918590d2031ff8266e23a98cb9ffd767b94da11da65d35f91": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fd7fd551fcedb57d4ae40ff3872fd58347d5bc3adab0cca0721066c51024a52": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710e31af6f36a087f3576b741335058487a3c9f6ddca183cb8176b4d43e9c8f4e": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397392dea221cd2683cb1ebd4b1081c38cb5883b66b95850ab9737e0e0e4f5736e4": "0x00ee69afcc2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f296c9a2be581a579919c5468ba2feff385d405922d756197e8982a3d29c822a": "0x0080fbbf800200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4239692ff87564a11984df789a9835523fd2976dc10a0c441084f41f9523d5aed": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2e19ae38d3de83dda1348f7b6ad29eedb0063511a5ff18a0b8dfe376d2024b0": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c754ab6f373daaa829c7ebf079cc67b064a5ca67adcdd6ae5c3864396a07c54d": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb3f7ddb5fa927971efedf5deab939d09bdd45115ef85c7703ddb43f8a991d3b": "0x00b4d5fea72c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dd6377f20158cb9fed9bbd5f6bd0f83c02a06f476a7273eef753c6d8cf0017d": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec245aed3a47b71731dd15ef18fb5c777892a97bf87d958f83770a7a9a862579": "0x0036fe07847b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca9e6d67de59357683d1c9419c7e308b352f6b72171dc8476c6cbcc5a13c368e": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecab62971caf49e74c0787af6f65bab108a72b76ffecbabb84451fcead08cf1c": "0x0080c045b21c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778d6796e083246a0493eb66ba197f04b16b7f31e5c485f13f2db31e43142fa43": "0x006c1a29773d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ea3934386acfa687b2ce534d07e3179e836a7705a8e91632236ee2a9e4ed5ff": "0x00a26a5406f200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ef8db642ce529ca3ebca144a157c9d2ed498579050d5b5bbc94dffe5ef7a680": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977373ac82c55af7de4de86d9a5fc2995208ad2f53012101400a4b6bbb002d2728": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2487de7005a74344f8f5a1b460a5414a4342121bfc06ad774f89a810d9c3a77": "0x00ecae33792600000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579731640e7e1c82f7a9051b8646145ef79f464b3ea9ac5236e0795e417eac2143028": "0x5e3ed914a3f9da416f69613d98c0848a6435ca4bda8d00af53a8a5bf5898b904", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746541fd2b7cb8b936ef0989f9cd3a6ffde0f0934cc15fd9ca2ede441d5e3c8b7": "0x003aac1de83100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cd5f60a5e66edfea61ea400dd589229614d455937a2f99edd4daa2eb8694273": "0x00e070e8b01000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ac675a9615c6a628e31c22d88ff29b19fb2f5f1883a94ef67e2251d25545b96b": "0x007ece841f8c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973979ded76f28f98c8bcce5400aaae3665323e7669b03e889e0e8834a02bec20b": "0x00b65c7e590b00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b487676635fded02c8ffce341aebc7bc9413db2757450711a2d45e3f24b0b1247d": "0x008062175ed158000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b48ebe608b0279a5ced1c839113039d4c5b3d483acc44a91c4bfce12ef091a4ee5": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa68d7220e0b8190d96c0873068a330db4b73ed4ea935a0107d5268c1f2f00cd": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0eb59ebba8f1310f03e98ec68a0c566c501943c9d4051476a3b1e0f439d8dbb": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b8b286c860d61710d56c0680d86fd20d4a1b106822ccffef418f77506c01225": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773832f07e7f2017b3e73d06ab0a2a9f01ffe27d0536b887b7bf4ac19e28ae839": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729119cad31c0934b7d671605dbc016e837c675604b9fc4ce822c7f5aaff992e6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0a5dd6da9fad71f314a7b412aeeb0c3dd274902e3cd66c320dad2eec822681e": "0x00645dd8e71400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8f9e8ffa85ba6d594c10b02307d3bd61732b83a1496fce8e7a385da90280117": "0x00d64e0f9b5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971263a3084cc7e541aeac53e0317bb7168c5733113f95b1ce92d8428aa1cd0768": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f2f73f3e0f7afd40750205e493f176c2e9dd280e2a8e726b46d074f22bcd6f1": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397170800c41ce2067607906958abc962d22e1766349daebabf6e35ceae1ae395bd": "0x0012a552ef6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b7ec9d78daa9154ea54eecb5dec81640d59e4478365d8d910e874170b6ae0d0": "0x00beedf8051e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977524a89d1060401a6f5960f6d5e41499ec6f812f39af3178022f10bcf8818f88": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397821667f39e371e6335320bdf0a2d7e9de2fc2d752245b0eeddbc53e0c6bbece2": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736a6a715c289dd524ff47eb44726a513cba3a090a191e0af6cecb0c631c4e1f2": "0x00feb635c0a900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e842fdfd9b4c80f09bce42dae79f9cf7affe15a75f55d8c659ce6c010fffb1bf": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397626d623e17a88edfc52da4a3cdfa628dcfc761f04345d5ae11e7da0ae5c5407e": "0x00e61c8dbda200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733031e857620a971978cf27c9da6958571bc3625043d0d9d6c17e2874c3070ba": "0x00bec3a5b60300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4d8ea2cea6cc00e38755a669de0bf9cf3080d1abf35d4d5967b56233d043dd678": "0x00eca1ad533400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa64ca256ead063ee4d5070c2c0351ea862341e53c3aaf7e991573611d4e28de": "0x006a097df4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795ed790eda05ce73635c028e68cd089369e6f196ecb9193b8ebb36ad7448c799": "0x008ad235945100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c30d3ced7e845a5f2644ed3ae586e113ff51f318c90d2f6403786eab042844ee": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397811b67df8251ee237ef39add9a2615f1991c71c6720aff45928b2c705e4a8c0e": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767f63b33adda16318b7b89247f443fe8b0199b98eaa60f879fc63f0743f883fd": "0x00a65f83e67f01000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b6579734c089da3a86c4b3aac53d628b2ae52d1a47f2c612ff3f08ce84508f44597f1b4": "0xfcdeb580add093f3b5f06603032c2fe89d329ba372147c100aa0391a44a51601", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979767ff8f70ce3310f7fd6f8b3118853eaa2ac4471588d8459bf43805af99c9a4": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4061799e80600fca63dd351a846f2e884441a75f6dbae29dc3418377930d7ca": "0x00a0ed86271400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759a5344483abbafed218687e61a4c04a727072f5efd08d5aa010b679ffe9a101": "0x0016a70ef24b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b1b0eb06cb75b2ff008f82788a9e64c29ed7f96ea62f28cb4e70ff183d1c44e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be07a94c8351c98805b315cb9b129cd07cb020b0577f1363d1f10b34323a16af": "0x004ed7a1c0bf03000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509fe6329cc0b39e09343a73657373696f6e3a6b657973aa7b5b59916d801fc25f69c7ace024b061a4a9a0fb1848097a2dda4817a63c00": "0x7a977e950acc55770b4452fc418bd59fc4ccdc25ce3c2d4cce58dd0d6f9a2d15", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771502d4a683bb5028cb62f4fdf449a2b6be63c4da66c2d55d80f7a6883a03fb4": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397313bc4d46160e67f9ace8dc53576800c2e9238f23698e14d68c9d97975781a41": "0x004ed7a1c0bf03000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a409a76fc42140b21b188cab86b6a693f7b97f95ac72e94cae053ce62a393fd0": "0x00c88f18385c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3fe8f3ecea4f4fd7bf2c798cca1b1cff6d5863d8cabb03ee44193aa7a3829ad": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b64d31a8720add0621cd3ed96e7b553cba8bbbeb6a8b77fb9e83b93bd8fd476": "0x007a2bf7de5731000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ff34904bc62615e0518a279e43b763c72792223f75d14204243c2b1858678d7": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d33f36b49c2b1f0080713af5dbe78024e89faa6229c56dcab495e910514002a6": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ed09656c6b5619d93b77e173c53bffe1097c40e336b16e984e7143842bf2398": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d4726a58ca7df85c1a38096e8fca201a200488f4dbbcd7afd69690827d2b6b9": "0x00ea352f5f1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cf13e7d433f9299aa57c71fee4ec03bd6be4bad6374609ba45b915fbbb8ff59": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796ac9e7ae5d22f47b86a3fbc4bc83f01097ba9298175dc4d086de43a79e22c21": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b80c3c547e1f93155c10ac58d1d971b89190db0002b708d0070d1c69b5640a9f": "0x00bcd2c49e0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ea2f546efd6807ee8d8087dc93a72670156b51508f9a1221744feae42b3c286": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ea88bb0458b8e7f83d132e504e8df12a39428619fc73771e100e0e2fb4f326e": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974eabc84cba425d28e9e80b53b4738eef5541db50508828c133f35697d66c1cef": "0x008c23ea09fd2c000000000000000000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x022a075d439622b2f100ac4174bd1af71e64e0913c7a7230924ae4f71b2c2a42", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd2d41ade956c3828b69616ecd92fe040f7ff161d4ef3f95d57ee3baa43c6804": "0x007e22cded0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc0eb877e5367f45b7a6c9e61b49dc014410d60fbf32adf108a1322127f7285f": "0x00646a57109c00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4bef865eb9f98fe4d6ddcdad70a4387f9052bfd76c68f0468de54f9c5ebbb9a05": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799d39309804207f2ebef47c30b4f48244cdfc4ff202283a8b79b50f192ce8a24": "0x0066fa41c93400000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a54926db7eb987dbe006c44e8b4a179fd24ef9acab9b64334037ad3542280b81": "0x00d22374f95f00000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243e4b19ce4928ef434b3fbf8c3f0975f87031f15147828e45f65a8d7f4569a888a": "0x00d45be1e85b7700000000000000000020d96a8604000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a0551b1368fa5523275f8dd01c220c8e9969a4e7215ebccc0499c8a587e6d90": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978815b5f2e8183aa3b709dcd0bc43a6139c46df08804d8d75a199f2c59a67bb6e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397f43d6436dec51f09c3b71287a8fc9d48": "0x000a373683bc335b0000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397268ef3780ca81bd62a2e5e4a2dcea56a3e96ef7e5906daebb919ca17d9d45af1": "0x00d86d7f8e2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a4af07f4c9070ce390080105e592372cedabad743c802408a7382ca07a97ffa": "0x00ca3777b19c01000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4e6c61097245ce835a28fb2f8661c11c27b917f04489d505760ffbeb5456eb12f": "0x00dae7b3f9b101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cd4677b78b7d82ce58a28da625e5d654ce2436bc6428f323d3c69800384d439": "0x003e06689ed624000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f41349718d44d787d9cfecb5d5489d6abceb4365139e0da04e0c1a1308e26d3f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b092bfe8ddbf5bf034ad0b225cd802c94ceb1036e72d939d0826840dc9f29904": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5bd0c4dbf6e08b15c36d9cdc1be23fa23261ee5964e9a238f51a1a2ce59bad4": "0x00f03fab1b0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ab899c39c441a3683fe20dcf157558dd7c79e37a7780660ce75f14bccabf5cc": "0x00b8dd585c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397254d4c35ac4c66141b00d09b758feda72704a9512977b5ae33796201209c5a27": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397374a1a00351f10254402e5f819c79a3d160803dbc0a2c7828c9488a45ed6b678": "0x00242316652f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768c1fe59858081dd3cd88daf0b32b7ebe63c846a82e6c205da554a0baa129c5b": "0x002a911003cb01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976df25d78adcc3ce8ca79cd41d2e65dca1e7f17bf2adabc0b03dc0acccbbc8fa9": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9fd23ba8d60b340ecccea828632a24f9495a3cf5da225566ab547a66ea49e6d": "0x00f898d8a20700000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b65c4252beb95cdb5aa15ae1330bf1718b8f9e1407cb50988d97a072c72cd735": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f91538e4acaf048917baf43866b3af4f4fe325d9678e5a69b3b8e3050a30efd8": "0x00a61c778e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792db1c01a90f21eaf421f3576fac329061f6f980c13746aa79b2697526854488": "0x00fac8d95c9903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6e8ace431309a7931c690cbd5d4274df52125653c112967d0d788caf122ef94": "0x007472471b4800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9655f4b17043fe4aa2db0949957c18b8ff04cbca18f60e28af1e32ee8c8634d": "0x0040f79c2d0800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b430dcadbc8aa51e8c14a7dad9e68100b720b825069ab63874b39f5f7bfdbb8924": "0x00b2f58f6b0200000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c91859b6e201eb6cbd9377f40f9d3d9d454da1e03018d3c7090dc0a29480c944": "0x00cc2e5cbc990c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c00a1d449d3ea16ab226f62fcf6671c60f373915b8200e42d0fd61c3ac1b867": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781e8a138885cef3159df2fbd07894a29d682591d91c51a690ff7dec80e731359": "0x003eac4f5ab600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e579e593fa31ad474220ecc4283355f56db677ffc67ac05c6716460f7b65165": "0x00c611f5847e16000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4c11eefe96cc67f58360742e8a1c7a9553e8e5c7937b965513a7ea3be316bbee0": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f40e2e3222b534cc4f1c6fc6d6f28354a0ee1cb6b50ff0a6faabdc53fa13499": "0x00ccbae241ae00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710c956b489e5bfd83650a6fbd668ff13ea9097e064ef4d8fbb1df35479d93ece": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765a229441c201aec56db46dd67f932d5cc712d9310b985b48712e79661a94c29": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9ecdffe2759904e8d7c9c30484831ed31c30f3d76a75c3498bfd2168997a873": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ca8e2543fba60ae84639b52c3916a5867914c45bcee136494c9a5f6f8a965d7": "0x00dc704a740300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d8728243baf8021ce9973e4b759348823608d188da29b10989abd4bcc402a60b42e69d30": "0x00008d49fd1a070000000000000000004cdff54400000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4ddedba74c3683cc578b23678e5e713e4e1fca1a058dce5504cbcf7aa4542352b": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb2218936157983a83cb22ed4050c4718048b96f8436bb6ed03ca08c1d9fa735": "0x002a07e4311300000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b448689c0701bae61450f0f617e7dd46949fd3f0d3eb2686231ed0b16f3bfef775": "0x00fcc39bafee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976efbaa57d5bfea4244d0ef8ba42f997ce307d8d63809e39cff51b41d5942d2b3": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9afba4f36a455c6736adadc443fdbc3898f6f9748b8ba320f213618a2cff0b0": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711b5e1d2a5e2e8205107b38e973f14feb62afee91b0473773695a1e2ba48ca47": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ab4ff6f3547c1130bcabf90f5df14e9bb10834759e7ec7083b427c189cc63dd": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c553ff348f59de543f69247ca767d0fe9a9d1d19cb42e60f027e51c039d2931a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea8a08a4a1694448caf124733edd497c1638066d14b280301be4cedd4c6e2162": "0x00202e585d3783000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f5f27b51b5ec208ee9cb25b55d872824370490cb6ec60dc6b19173b661b8cd3092307f849ae2648554c2874b55ad11374": "0x00c06e31d91001000000000000000000b114580a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f5b3d80dc71b786ce4c40c06e4870adc3e149cc86ab6fcaa6df5d11d17b74f0": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772011652b06df87ff345ea26eecde2f440933eaafea167a2d460d77a13aef2b0": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c5da28c999767600d2fe868e6dc020010df627cbee00dee469c5e867ac6525a": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bd9ca73bb5aa8135cf43b4a4eeb9249a276cf0a52b5d6230dd03d15ba522d52": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e4ec5901f7c0a57fe6bb079ee176007f3ee8e0c7c43b0aa1f1483c1423cb832": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5f391cf308a53e9d74c2059ef8c4d4b014b5ff5a7166d404edc60aab7fe59d3": "0x0056b961800900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4a57e4c95a199a3c5e2184cf286fc177c97f9c7177b7c6446df6d41a1f4c3eddc": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f67e7d734b2897d18134c4ec00be2d60ecb57af9cdb2103bd50c31b235d2e92": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b43145ec1b84bc01ac440b2f5a1a1394fb16b6f36365a44a59957128ded5ddb6": "0x00da332b59e104000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2aaeec5b7a4d35daf770e97702705deb7bffb5cadbabf0021ddc3ca7f40e374": "0x0014ee4b971000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b420dac970eb3948295b5873362b7fd3d9c41fe5d56536bdff875488a2f35850cb": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397641da552515a05d37cbb6602563f6a689c91252162749bb8e2af84365e0d4a72": "0x006aef77a62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0b72fa51671297c01b37308555d530a79e0cfae883b1066fb9d9cdbe6916eec": "0x007ada938a4600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c294e5f14ae81750c7b76c7411bb14f908be0e9e2c4ba7de9ed537513553bf2c": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b13e44df4fa62d7125ab2172fab67aa5f95d3b2fcee247006b2e324259b9f38": "0x0040f79c2d0800000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b5337ab70ef136f087f254b0bd523d4491993b2ce620d06be2b3d8ddd7a0ff41": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769c0157c8f3d2900da34ab1e9805b54cc97d31aea3734246ef14d5409ab248bf": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397743de50838191438dbf5db02abfcbcd606816954de07e2cf62e5059ea257c622": "0x00b0631b220301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a951aded8235570276f5736f2f8c894e5cff029d457d5b844e64068f13cbe170": "0x009a073acd5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3a749e89a37889bf403224fce1d8eabcb16f011ff99d5e2fec6491a939ec09c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a18cd96b09d10afd8c6fb67103cae0175fa9f3fd760959987c674d0da766f52": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978dbe34bd1950189ad587d2f7f07c22958ec884d0a23b77cd5e9b1b9396be2014": "0x000e1c29776e03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a2ec757e1d2ee47c8fed38ca5430f57f077df7d4dd47e224d9ea1beab48c322": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a525e5cc1bac8cb3eda1935adea48272da1a0f8c936e90693ad69147abee6128": "0x001e39c7e9a600000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f6482b9ade7bc6657aaca787ba1add3b4b6092915677c2a2896def22d7c21611708bc2ff3efadcf152697a5bff2316983": "0x0090f5e41d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f04e6d9a73ce68b78e53c9fc11412db4121e5325c80e09685fa8a3ce841c515": "0x00ca09fdcc0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a95fc10899f9939fe9f376f90b678d436e6cbd6cfbad752e1d16e1bd207970fd": "0x00aa8af681571e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be0013089e49d5187af79a902767da35cf39652bf8ee558f7780d185a484dd3c": "0x007202ee615f09000000000000000000" - }, - {} - ] - } -} diff --git a/node/service/res/polkadot.json b/node/service/res/polkadot.json deleted file mode 100644 index 60056de9bcc0..000000000000 --- a/node/service/res/polkadot.json +++ /dev/null @@ -1,11685 +0,0 @@ -{ - "name": "Polkadot", - "id": "polkadot", - "chainType": "Live", - "bootNodes": [ - "/dns/p2p.0.polkadot.network/tcp/30333/p2p/12D3KooWHsvEicXjWWraktbZ4MQBizuyADQtuEGr3NbDvtm5rFA5", - "/dns/p2p.1.polkadot.network/tcp/30333/p2p/12D3KooWQz2q2UWVCiy9cFX1hHYEmhSKQB2hjEZCccScHLGUPjcc", - "/dns/p2p.2.polkadot.network/tcp/30333/p2p/12D3KooWNHxjYbDLLbDNZ2tq1kXgif5MSiLTUWJKcDdedKu4KaG8", - "/dns/p2p.3.polkadot.network/tcp/30333/p2p/12D3KooWGJQysxrQcSvUWWNw88RkqYvJhH3ZcDpWJ8zrXKhLP5Vr", - "/dns/p2p.4.polkadot.network/tcp/30333/p2p/12D3KooWKer8bYqpYjwurVABu13mkELpX2X7mSpEicpjShLeg7D6", - "/dns/p2p.5.polkadot.network/tcp/30333/p2p/12D3KooWSRjL9LcEQd5u2fQTbyLxTEHq1tUFgQ6amXSp8Eu7TfKP", - "/dns/cc1-0.parity.tech/tcp/30333/p2p/12D3KooWSz8r2WyCdsfWHgPyvD8GKQdJ1UAiRmrcrs8sQB3fe2KU", - "/dns/cc1-1.parity.tech/tcp/30333/p2p/12D3KooWFN2mhgpkJsDBuNuE5427AcDrsib8EoqGMZmkxWwx3Md4" - ], - "telemetryEndpoints": [ - [ - "wss://telemetry.polkadot.io/submit/", - 0 - ] - ], - "protocolId": "dot", - "properties": { - "ss58Format": 0, - "tokenDecimals": 10, - "tokenSymbol": "DOT" - }, - "forkBlocks": null, - "badBlocks": null, - "consensusEngine": null, - "genesis": { - "raw": { - "top": { - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905217a5ea7391027b88f54b550bca825d6108af7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289204ebe348564569032991905d5d1d4ccd35df422": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7081542596adb05d6140c170ac479edf7cfd5aa35357590acfe5d11a804d944e": "0x0d1456fdda7b8ec7f9e5c794cd83194f0593e4ea", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a04068a84913bf3db84f450a82588801197e028": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a2dce72ec5f24ed58baf131ea24762f3947ac46": "0x00b869b1edb600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e3bcb85f93385dd35ea005d6cb8ee5e093657f39": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ebb3b5365f80f437d4be00fffaedec844b24ce14": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087e6f26b4df85ddd9b9b60910c593fe401025e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003bb46bab150b189a72adf721963e275453ddcc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f8a55193512202fe419de12ff41207968ffdce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928916af41d7d554e5814b2a906b2ac27bac06c9a61a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899bbd5f8d33f607a03690fa73f177f5a30c864542": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979955dc870b36c6ff8c41567f6937f8277b00769c": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4624dca7c8be0b12e1f883cd5a64da42ee200e7": "0x000010a5d4e800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5d7b6314cafa1938306aa393f09f6012ab7288f": "0x004c98974d4000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51371bf1d2d980d73aaeaee5f7505502c8ad010000": "0x8431d50beb39f9d5af9a9047edd2ab987d35877815de7cd2ebc271db1dd9005c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51194c65d3e5558c3a49c5f803c862a76536050000": "0xc0c0f3b4bddf5f9fd3faf21c65b3cb1d917863107dc954c7f6ec55ae9a31867400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154c5948820c02c2dded0a22b49fadae80f080000": "0x0e5da0878b3aa76231dcc38ba1c8ef7308df8bf3d50496e5d52e8ee76b9b965500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b919a32ea4ba16c20e24ee83cbdf98b89c94a31": "0x00269b554e4636000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c6b8bda3f7adaf20a55a970706d195a3ef9a1cc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513805cceffce797ecb69a49be25b83459ea040000": "0xaa92a247b4699210595e1cbcfab051163e245ac8747e9bdf9e48c73532e6dd0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec12141e117791b66693d6ab5ca3e270f531f76c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891749564105214d51d63a7a2c1178203a4c0c4671": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad03ba0db46620f77489393a7e62e598cd7ea988": "0x00f6781c6a1801000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ac8a6d59db3938ddbee19f4ec3ea8a0a771bf6e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d723190b070d3f73eda09fc58829629109630936fa4f60203034e17957ef64360": "0xfd164dfeaeafabe0d241e2313b57ea7fd97747d9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003b872492daab5764157df79e40d853ebbac4cd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cb139d5b7f41d8b74b5a5027ca35e9ac8a7cda": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519350ee000e2003dda1ca40379edc6612e3000000": "0xda3e9e776eb3b7e775e51e6e91ce0bbc70c15bb47a87c639a3a37b64db46a04600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c16ee72ac33a6a9e5e887792c26526f9cc080000": "0x664dbd21a50bec286ed2ae25da8f41634778154b3ae6dbd93290bcae58f1dd6000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d861e5108e876877f742bdeb0d90022549b70ecd31dec379b90d0489b33fb584e": "0x005e14b50c77daf1b3fc6f12f3b4cf820a313adc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970099fedd81ce071a859bc98a84b7bfdfc52f4242": "0x0020aeccd93000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970035fc5208ef989c28d47e552e92b0c507d2b318": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928936569c3f76b66f8d3acaa386be180b76c39a2f19": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c86ed18de22932de93cf92512202d3ca2000000": "0xf032c776601ba298d9b688400db9bcd08ccd6a42cbea068369de450076cdbd5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ab493bfe56173fd911c6f476d0490cc85c83db9e07f087f0e08ed259664dd0f": "0x2e05cd4a04815510ab2d10464db9c1356cec8bd1", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfaf41a99388f45bc9d18e3b93383221b6f815298acf8b3debf235aa33509de3b": "0xdd41dde058e870f4274deb8cb2417eef04940f61", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c7314260d5f3567f89e0425b6de0189c3f040000": "0x0c53bca5a649c275c951cd479dfbe21e6c4bb9fb9c94dc3fcb6a71410825f63200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e2b0e0122e7c8598b5e600b94d16d88da6f9b90a520ad2fa21bd3004bf2901a": "0x009d470cc85e114eb2b35c64b39f8a0e3dfd6759", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905b30ed53364a95a0ac56b214077a85bd5992772": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944696286e8ba88c8c0f782b33fa7527cf3a66e39": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d264a106d7206b10c8a97168cd25b2e0b7fdae7d827b50299366bf9ffb5939d79": "0xa4e325e0ff51a61d129d2848b0e6a5324bb42471", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890001e57b2199d16ae1aa1e5f4d24a83349ff6939": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a15620906193ee1e02c754d33d5a2f78aa9568bd87e7c241dd73a6329758f53": "0x00185a694e3eb29e58f03442d75a8f59479ac8c4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0830fe5930e891dd5912ead314dab09f8c47b462b478ba5f09f363ac626a3f48": "0x151310c5ed21bc68b85c5c754cfcc5a7b1869cac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b065022613dc0585e7b5536173fbe028eb6c00": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e293a1ded3dc1b5f86121f41d9043cbd18914a2f": "0x00cccb758b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4c3412318ed1dabfcdb03d1e7776a9888e9482e7c7154edd44603c439b65fd3d": "0x22128818393800d4123cbb9b81740db04f380977", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5113b862ce0e10adfa857eaca42c57d035f6080000": "0x467023bb6cdf712422c34498a5143b0c7f9d3e92e336d5e8c7bfd1da7f11947300000000000000000000000000000000", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x186a103df5c5131813fa77ba4f8be88b2d2b4a47323d2011c9d987615f067e9e783ccde029459535c8bda2aa6fc2d97af3880409010bbc05a15f8d42bce8f0176d5e5ab03e0bc62a8fd3fded0b09ac04c6192796873b38abceffdbd1548f35f61a6c694dbad86b8de9c1c9947e536b3391b77caaca86a23195a2b111b24b0d51643cfc25dae5d649a0d4f2775656419f2c9a4318584694bb60c66e8d0c8b96f502b09bbdce34c5bff2f9f212118c05296db12854ecd09ed0eb0dc7714c9337ce29", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339787b1cfa38fc11bc6ba0794e44b8fd5cdf98c7640": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b7482d5d6204ac5d40c673125ff1fd07d183183": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780fd49b3453f8df565032a0aee096834600235a0": "0x002afac2d93e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d40bbe499b94672c1618d355759184eece4fddb4a142d3ee0b79d4de66b92e321": "0x7eb9c6574928e51488595ce200904de622a212ec", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890026ec71cb407474b48df42a58a80618c4e44e99": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5d33619ffdf46315cd16bd053a03d2873bc37": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b7866698f9b8920bef90aa5e16a0bbb238343d0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde7fc29e54e79d51f4a8c5d54f67523265c2a538a79edd0a601ee16cdc1bea3a": "0xc9f6de8445d99ef74450c9ea88efbece5f5e4d06", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008f6eb1f8852e3ec09a2a33ff19e4c7369ea37b": "0x0034fc4eb4ae13000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289449b5b91b10523f024b6d9101afad2f3cfe7c8ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949e961c06237fdc4bb51c48813a8480e75701478": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a930215be931d1729ed9b5b3919097182b6923ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4a991fd5f82d736df9ceee054511249b89f9a4d": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb382ca4823aec6bef2e240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a": "0x8e59368700ea89e2bf8922cc9e4b86d6651d1c689a0d57813f9768dbaadecf716c52d02d95c30aa567fda284acf25025ca7470f0b0c516ddf94475a1807c4d25b09bbdce34c5bff2f9f212118c05296db12854ecd09ed0eb0dc7714c9337ce29cec7e2d5e28925ae9f906e5ebf1c81adcc7e524751273a73a278f472d863f5324c0831fc73ca4ae4d46cf82e74ad01549973d132795c579d40eed490cbb01524", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ea8720587253f86842774d431c1f5bdfc3a044fcd46e435888ba44486c1fa0d": "0xa2096e3dc4c8173bb1064f33b005844a22513d03", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d38e956e11e3185142e2b50fcf2f02afe9e12ba": "0x00264979cf5001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6a2b356718faf8cce70e78f06712f1ce5917d04": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba22a63969aa637e9a0d4ae31beeefe97ed270b2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51527fba669a83f267a3317183587940047e060000": "0x06a27940e88886fb198b8d92bd517084e259c3811495ceabdfc4ac5dc99c955b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ccda9de9a7a369174a04ebfc2d18faec1120225a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397549afb2f9cdb90fdef7861b65c2bcf80aabbf765": "0x0030345aead918000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ad5f21adf36e7fb8eb51391c3a68cf44de0ba3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d504bca16b59dfc6f9dce786197e6fcbb082a8cbb8b9c7fa9b541720ccf6adc0b": "0x2a89681d73055acfac5c4ce4ed108c3ea7a84a59", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d78dec21cc26ca8e9a6c12f5f11b0a59f21829e0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700961f206d72118bcbb9685c1f642682c11902bd": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001895edb9215904d416dc35822c8576444e674a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890013e7914c4e0368bb75176c58d7b85064ba76af": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112ce71f16b9248870b96651f7f6efcc536080000": "0x99e562b4b9c2a56791089d0b56824b913c9e4509d15da48126e586395b976da400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900998aaa8fe8444322729f9dc9f32b41cd006bbb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b0e85ebdb55e25262849ba46b0a3e31c928944d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905fc2dc53c14f07faa71da549035569e14c7c793": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928959674388ca17d95cf03ca527665f789ac10bf4f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975af08f5a0e43a3587ce7c8bfa21e77082e559f37": "0x007e4df9ba5200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa4be1af84fe8101f91891adc2d52a37b93dfd11": "0x00123ce8e27b15000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d36d886739e9ae36cd8642c33d2d991f613b3036c95950421f8e7e2b5ddb5cb32": "0xb4fcdf9e6c5fc7ab486cb70177e3676f1df239f4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db60bf1d765ac0c534a544084850f794258e4c9f4e55965abfe9fecf52ea0c245": "0xce76a4eb328d7c14d3a425ac145f887d7277e6ff", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ebd92abd194f0cd6ffd845b0f7c81bc9b11ab1d": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00e2711e44108938250ef0890c80128c0aac93fe6e146ca54e6905a1895ff061": "0xcaff66193c177e60ef230f8c45a5867ca46f578d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e64078aaf2bb01b7dca49d0257a43652f03813f7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e955f59b4abc283f9d5813aed5666666f7476f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af44c1183aea35445f24b3b82073cc0afd007cf6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899346f8545c9f873b09d9265c2ba196b21fe3f838": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971206272257240aa1336db145d922a5509ef79e2d": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df6bf5945bd3abe20c1cded2b4250a87c47a13726ea2dee57f8a56920ef53d613": "0x00718f7d6f56e3aef4ae4d4dca50bedaa4bc4f3a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397741db5b3024790ff32fea3591714c38987948dd8": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2a9c275221468f59ac010f639c06615bcdc8076": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5184742ad30e76e2320820ea709bd78b76c0040000": "0xda91670ea8e3b7b52e7b221279ce9dfe7f97d1c836ba42202f59d245d1589c2d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243731396ed98bbc215c9078bbc583034ac85a4995d": "0x00a007c2da51000000000000000000006c74840000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f19ab8f5c20d77119dba61bc195214fdc045e680": "0x00a014e3322600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ab9b7cd7311c80902b85d9536531efacf92085": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243449b5b91b10523f024b6d9101afad2f3cfe7c8ea": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0c352dbc3f03762421093ac7225224cca2f54f9": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289238593df591076886834b28306cbbf83b333d924": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970032b7a3470928f2e782c4e4c636bb007631234b": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998725bea9caf118e3e31a0fe480b887f81f45bd7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa0fd755c0d0528c9b7633462a4570b75bcabdb9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397668dbd6154064e193ab693a4f79bbbd06e107741": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5c914d49eef7110f4b178ade972bafcdf83f994": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8ac080a57b99bdc0f1a66d24064113b8bc5f728": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f21a0e51dbf4a93d9ff5bdd23d6c01775f1d708c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce856779cf6c02521d578ea679e1f013b277dc334498cd252aa76f9b6bb59649": "0x4a5b1ecb17b9ced712df12474c5588c8433ccb44", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e419f33cb1673690d0ba113af46c36e2392198e9df48ac1210e36258943c71e": "0x51aa47c803a20a6334e4589ca76642a68d3cfb32", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007c0b89085282ce1cdba3bbf12e1228547275d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087814a753208557c3fad394d80348307326fac": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e585af0cb7cfcfe9314679e120318a5daa8644": "0x004069553e1800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c02ecd74ed0b9ecbd5c2504af596a292c040000": "0xd69e158003222f6d68e25d9f39e881c74c2a833a6f048b854f79a03eec996e4000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289219a0751553ba999f730fc1af78bb5a3f255670b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa44cf61123c6bf9110c8cc4454cc241f0dbfa92af8719ae1c33334f90dc2970": "0x00aa83bc9abf0e8c4937a8ebde74a7961f050747", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289656dc09b4dc821695c9de996b762b3362e00a205": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e5dc9bba6c0396f878c3258d641a53c41b0d9274a55eb4dcf59107924e38300": "0x6a6a46f3bceaa2b9799712e1d4413ce08cb8a801", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513697b525213c80b5bed52221897c735aac000000": "0x94134606e7f52b31b53c7b6c131e500b392182c05d76a729ae70c333052edf5400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2477936b39af9f05f27a86561c99f1bcba421ccb39a08cb1f58402796ef8235e": "0x00f30aa1a2b965b6273414c69bcdbbcea76a52ff", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700036d90bb4e462221fbe06403a023192c0e6c4f": "0x00a47a85db1001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007b2f1e74f2d7a146dc352b987b44bb49d0d6ab": "0x0034179fd39506000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900613989b259f1d4c333ae80a3e78e67446646b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af1ad6a98e5f53c3bb27509177ac3564b55703ff": "0x007472471b4800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edbf4187931cb3d852b762e5ff28fd6af6b761c4": "0x00c68d756eb300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b01dc922ee206c3906accf74e175a5fd38ef5c": "0x001ea1cd27b603000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289beb910ae193dc54411747ac236e67d221ff3f1d7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df0373ca28b4732c0955e5a21fe88ec6d1050000": "0xa03f5afd74de173c5d2033951f8225e29d58d813bb078d82569a07eb7cf6062900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da203f552cab792a1e664d742c53e060f014328d8d2fa8eefe5edca90c3fa8a41": "0xd5cceedf3c21bb629353405e2e438cfab7c94c56", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51483fca30f93f5c61c502e482eb7d09f802050000": "0x4a2a23436d36970bec3b5da3286eba930a3bcd38197cd3b791397cd53cd4dd6000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a21638d6758619800f032eb67fd7943490c20b5ab1f8453d11382769447d34d": "0xa59c51409b63f4900cc5c90374036d3a98f7673b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c6f3bf84417dd2c0b9c2d148b3cd0639c5b9387": "0x00b0692089b518000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397538d278e05a35c96bcdca1039e92c65b994256a0": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cbe4cd526f64beb3f283fe5afdce5192cdc261db": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b5ad7945e0a91088537dc2f950f87883b0050000": "0x8c43e6504928c56f0151eac7575949a8951c4deb28c9cd1acb26743de41df80d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005807b3364cb222841a96051227671f15d1f502": "0x008e55b3603a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c2e1891250427bebe1e66c1d86d1ef010e4396": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52c5195ab72c06d0793bc325a879ed2e1b3f06ba330ded7bda82855336bcf46c": "0x2ee824bf2fad9d0e360bdccd74c2b5d3f634b9c2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709ee4979e687c267db3ea238a9ec64fb74140438": "0x001e0f9c057b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c12f8fec9a75f790a19e955ff87908b0a89ddc8": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5125374402a1bf77fba351444469d8a248d0050000": "0x00b9d35957bc6db556c4d0cb694c9b728b67b9694153087c7b67095bca47021a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737213da6063363ebdae7ba5a3b0dee7e139483f1": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004b592365dccc0bcdc29fb82223f2774b93bfea": "0x0046240a010300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b72829217952e8237e00c5a1019521f30b070000": "0xee540d3a73580cf5e0ae2d80ac9d98dc27847f5518d62b652a6561d46c16b55300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928929c0e5b31ccbcc929e001a4828a62e09bd307688": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289205ef96ca87f9546f2d241ce8dc949c49765e4df": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7067ad6ed9252ea6d37ab1b78a62132bfc6340f": "0x0062231e5e1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928941f2f7387969ac7c06fa49a29fc479c22a9ec8e6": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7ce6873ee9cd4a462a3e13fc8dd93d9a40ae5ba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289db3a83ce2d027400f34819317f357e9e967007c4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397592f17165cfaa5397984f7306155d330fcbad444": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397460cad37045859b3f67579bb363d3e8f48c4df50": "0x007899ef09f702000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ea81627c72919ac393603aa79d4c7e00cd9438": "0x004c44f1ae0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e163cf2b25ebddf54bc1ffa47a56b96e820871c": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eaea4efc5962bb7a0597bd7e442749a665040000": "0xbe84f63b9e30f438711f49b4a2f3e251c541f9a6e43b0e9df4f64e8394ba517e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daaaf1b0d98b3fe0673c0cfca35d10d99e198d97e8e757b3bfcbb6b7d0fc0b676": "0x00aec6e482d2ec9cedf8f03072ff8bd27850e95c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c6b8bda3f7adaf20a55a970706d195a3ef9a1cc": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001dfd1c89c8c18aacdfde2e1e30b11ec2d2dffe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a728387999628bc1f493e98cf1beb9c604315e27": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514b780244285408d14414cef6644d005b2d090000": "0x4263bb05caff304086fb08790ff345aac33cbef0eeb795be86fe796e9e5dd91700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a44f67e79908d52a5d81bf30cd063a481eb528f": "0x00060f4d674901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ba9171e89937ac44dfe9a19a1307e54814ce78": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ef732c7ba71e0ac5b110cd10879df9089c20bd": "0x0094ba30f71e01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d5d68cc4abd796fad100f3bf0402eebe9f050000": "0x9289bcdc9cae01e2d396a8b70b27bfe77caf341e969c1175cf908a7ea1906e3a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc3a572c4d49eeabd53154a59779f7eb6da912a9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514c51446001c4e7c7ae292fded4d0912204040000": "0x723190b070d3f73eda09fc58829629109630936fa4f60203034e17957ef6436000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bc8bc547457f1a52e7547baeecfde77966657c0": "0x00f8fd0a8e2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775203bc03125befff8aed3b9fd687d8818a8b2e1": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d34285c047d5d8757551baa45e471e62e72f468": "0x00bacad1767508000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54ff47b0c118a4a37b57849e03c7a1b1e223991e427789b7d0b1a6c152c41d21": "0x532276374258365ec2058848caa8975da2e9dba8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db84eb79af3f341a2e12f5e215104df773cf4f7746226afbf0f955dfecdbb9d4b": "0x1749564105214d51d63a7a2c1178203a4c0c4671", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700908f63171b29bd00a69a2c0864318843bf169d": "0x00a86126b02801000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc1162ef65ff4c434e986880d325a2705cc64b37": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397034e104e2767228cc99fb3aa5af22db30c428b12": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d42cb52bfcf607025393c55d84cf361775c5a3914b69d6f78c93972b8eff56507": "0x6812d2dbd83e65750a7db91ab8806972ce170be9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ad04210ddb16c4b66644eda430918fd5826ca17": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005e5c04f113b7ca7c62a331be999bff4f0ec44d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef30979a1e72cc99c93805d076c1c44eb90ed895": "0x00483fcba02401000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515354818e4346284db7df94b81af803f3fd030000": "0x622140277a3ac51d0b235438d6c40c282038db51285130194d9f61bc3894e67c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d1b96a31ea448d0213a11aa8c2cda340d1335280": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510a92f8fa62d4bd17278e0dfe0e834e7734000000": "0xbccb08c3fa76ca4db33b9a8b1e52b40e8b3d9b1ec93e47c774f631019907951100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eef2e4a5f6a01d5fb89f38211fb4e6a8702d33b6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc504c4be97bb6552ef8e0dd3646ae7273605c8282ec2ff1f086e4d7af536c23": "0xaa70dbd775c74c3182ccf34636c63637b49a8f56", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d565dc10edbba93e52936f84801076ff37f32f90b28491a8dff3204ec08486c0d": "0xb8369231f4ee7d48791e4b23b789a6de4ac1beb6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51689ced527103cc7f2463a48e5651d1e265070000": "0xc2736969960ab728695cfd8b866b2d1d1219ae9799fafbf20c2901779ca1c27500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720766f01d859f1ee11e14428d9fb96bb1ebad946": "0x00900260406909000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e92133cf03d81c3a6dbc919f19ddc3c3ae95f354": "0x0082377cd53497000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890002f625594208e49a2a858a109794d50276bf82": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3182c6b3fabe222b3bc13c912232d037bd765d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700843587f711b5b15b4b234450e0a3ac1750e4b3": "0x00b0a6277a7802000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928926496ea4743de7d6927f107151fc67616fc0a4a2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e9511e878e0deed76cb465595c6f558d9cf512f8632e43feca07a26d0602152": "0x1206272257240aa1336db145d922a5509ef79e2d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e09656727d41176c0b8987f684450af02eda1466": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51970331d6a2da0031310f1ce2ddc8b4bb77060000": "0x20e5782fa85cb47b81c3eeb5186e5d5a8288c92e1cc9001c16bdc6a2c194cd4c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397196fd44f1f3f36458e9c36324640a8e7ff5fabfe": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8c2a3dd76bbaff6c13be1d583b3c95aef9e773d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c01c997b6df6a1ae8a1475e6cbcd1f1c8d9b60d2b4aad28868de3e61d837a68": "0x3fb4981d33258835ed1de86668344ee3f08c626d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f65fe2f2d8215e4dfdaf150b031259ece9998f8a": "0x00188d22dd1400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ae6e3ef5f2137b77cc7b528d687771d93050000": "0xe828c1a8caca7d6b13de01babf4dcff99beb7f0b6dc743a355e77cc24614855d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d522ed1a44f5b6302feb8ae1d71e42c6727e88c94f896f68d5aa214a52ec89e34": "0xa728387999628bc1f493e98cf1beb9c604315e27", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397805d90d33dcedad0f8efc6510dbb067fe4b36674": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a74d379117fae37e0f17f3ad6634baa201af20ee": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0944541a69214a840390dc794232b9baed56f93fd4acf46cabdeef8e5fa8962": "0x9d6b708f01044bc2d23ac51ed5dbc7563c46a6fd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48231493044b6f421fc9e9ca2d9f1f0fc18ebeea1d51035a5843b82a70c88101": "0x862453aa222291ad19396dc22a94d2688ffc08a3", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b4f9c11f2a5c9f6e2b41275cdd915da7a8070000": "0x1ed7e0cc71b2e17e00fccbb69c8fa70a32da1a96a83e2ee44e30f05678b1da0600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003116c624463619d017b4919effc6deabaaf09a": "0x005ca0805b8100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705a5830f9d6fc22700b9439ba20d15531be0c789": "0x00385308034c27000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781d94d58834fdbb584d72b40429d43cf42f70aef": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edc6c4c1ae525da2942fcf03c7b98c12391edaed": "0x00e40b54020000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51162ce5aa9730b05c13aa40e1abab7a2ac4030000": "0x80fa64d542fe68bc290ee68b8b71c568b1338488430d5fcc67a4b5bae97b370e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900973738d8b9ff38e9af49f5c7b511f41199c106": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e825b93af6a21bc084f8f21d59398daeaf2ecd1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893518a8c749b8c46685b5bfbb5ac32932edafc9f9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eac5175e1ac76bd5b048ab363707a326a4060000": "0x4e2629f039089150d0cdc2988f05232b306534567f3c2a2bf93075a82a0fa11300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002da979ad2e50484456020e661e39a076c2dd33": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba10276d69a11c6ca944dcfecd669325b67614eb": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890072ffb8069bdd4f791fbf9352a7226c7f46ecd9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7a9b1c894620751312656b66c7dc2e333cfe677": "0x009457819ffc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009151601c379b0c211e12bb1342e183857126af": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289442bb3cc2095dfa3447c774c3ecaa91805c4a94f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7917ca8ca77855eb657fb414a3736204e4e3cca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c155940fe345651798e48f29c54a2cd860304734": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14a05377eae1b20f0895fd7b7eb55ff1d89bb396c311850605cde11befa7f923": "0x02fa77f03cddf7f1ab675723e15e88505da9a025", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970047b7702418e3f3ac962feee269d4057214997a": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f511e2cef19f48355bf52d70dc291f2e9ad16e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756f780c276f972ecf6363412132bd9801204949e": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d221cfba0cf7d028ceea3c4e5f8cfbc76f2a46d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397586e945c70b8411172261d48c2d549e52aacf643": "0x00249ddec95400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc01b6709d6c07ce5a82ce7b917ef8b19fc65646709877afd79ee810c24a08d0e": "0x006cb4d719cad2ba7ac9cae5520378b76fcbaf1a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510c71f795849e77ea70d6cb27e1b72f5483040000": "0xdc0293434648638559e1a4cf30e829f17d2695980d5a3374af8d663bd521490500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f50d1357a060256a94e9633fed0398f047050000": "0x5ea8720587253f86842774d431c1f5bdfc3a044fcd46e435888ba44486c1fa0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c65722a0772976ce0ecc020f2eaf0c4468b919a": "0x0024858b773000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979da50c01643c31e889bb2ff6c0ed168c8c22f98a": "0x0020034cf68f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ffeb0f01d4f388904688a9b4d21c3c9331080000": "0x20b9c82a5cc380317eca92f17436eecbc8fe948913a035db183c30dff468798d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd9d6e7489a7b450937fa7ecbabd71be819bee3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c771ceb58b220cb663c2a77b37558cde21c471ee": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f6be6461b1a0badb3d4458da2f77da2268b83a9": "0x00a673ea82c503000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20d2e91f70891ab5b5ca943b300d5b056c47a2bcc5b13efc7c907bd73c384c50": "0x126e1dd8189d7a9d7d1b3e927339fc58526dae45", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cbbedda51e4c9cfe80f429f6436a53c9738b59db": "0x0042c538520207000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f963fef4235744c3cd26d5a3b155534f72ec6d23": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979019ec6a366f30602f324bf32d91fdc926ee23e2": "0x0090abfcc81700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000ee102d3ca744851a94c25c3eea1cfea5bc5a8": "0x005094aea18c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d981ad92f7900ec801b1935618f031c7d69f089dc84e2fd2b4c09045c8b7bd658": "0x177a47426d4c1a6a65276505167c36b663db2575", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de4d5886da98c3a1140260aaf536a2f1262e2948": "0x00a07115479803000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d17ab53317cb7505b62c9306fb5a569889070000": "0x80e30c47a3fc276c022612170e25be798153bdc6fbfc229c398f58064624297800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbec6a380acb8489f21891545cfb9b4964bf0f3170c5deddea166cd8f87bf2078": "0x2a6625ad8643ea9c894da55c4a5393bbcb59446f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928935d4fbfef171c1f89be9fa8b14a6b4bcf8ff89df": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900171d810de904efc8b649c8224652ef9b75e53c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893cefad973ebe1f54b6e790c823f90f81e95f4aa8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa2db1b22b343a78c282caf8cf333bafc9e08446a7f1b4c78b36dc36522fdd09": "0x28020c484d59bc36b2741d5aa1e1d48e6e3ab0e8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f09af5717a441341ce58f1b2bc5d9df7c1ad4fe": "0x000822b9df0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d040fddcb4b5b6707697e2431f7330ee99372e2a55b955bf7b93f8a853d07f10f": "0xcecd25a7e218c0cdc8fd36c50d1369a691f56d90", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90c86ffd4c51b7cb742cc247b992c880bd23d00972912da343d1dee59f118e27": "0xe3bcb85f93385dd35ea005d6cb8ee5e093657f39", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c4ba011e13f2f735dee87c7801001ef5e7348d0": "0x008c5b88af0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a305168cbb7ce64213517ce4b9fc6c2d8dd8913": "0x0008bdebc10a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893955e672f3306fd39545edb3d7040cf8de2f9180": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894514bcb1596297d8a9110c03306b47429203aaaa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951e9ebaa1d6b6029c88a42bdffe81ab4956cc062": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51207837764dee8239af5f22fcb387433b33090000": "0xd2610d42a7cc342bdfac6abb2efc488ca51c5685a3cef97ffbf3614a98ecd03b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51976eebe6cad96dab1d369010f7eca8f9b1070000": "0x3640b7b7fbbecf967f99ec9516a74f9e255efa5c8529751a383afccfe936175e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289782dd81060bc85bddb0ce7b2a53eaddd9f1f6aa0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f00a83c85b0a5fd088b7ef7cd5b4910ade729d03": "0x0080ca39612400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68410aa34e30d94c8f4b266e5d9db3d14f44242327d9266877454ec70ae0cc47": "0xc383c50f156431e8f7187e0c04f14b85ad4aff27", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec6ff8b811135779cab408d1449e9ee75703e8c7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd43d053efbce28083bf144fd919b8b5338e67f71b349ab9a4dbaa71845a9ca42": "0x4765d5715c351557d5242e3e6af8e1365ed5d08d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900597dbb469f69d8ec4de77af1da483c6775a794": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5025d1377cbba45a79dc41256dcb4e5dfa71c53ee3ae46352f2a20ac0f542327": "0xebe4fd701cce5d001c481f5662d1e941371c49f2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ada9f2058fada409eab656d7d017f54086499bba": "0x00ae670f0d2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900388e518f2aac5b12485f3e2dafa9aa8262945e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742d0a88bd5baa87a3cf4b6e32c7b6cb3850a3aac": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5140904aed64ad8e41cde44da1521b74e8fc030000": "0x605fd1308af1ce85bab5ba3fb19b330ab7dac29e01ad501420560f44df7e0e1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d966f0ad73ec431cc6816f7436b8486f1b25a": "0x00444b753ec100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fe4c20335a78abf60128c5f0a375a09d5b64e7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518becf6d107eebae775b19f003f0649f2d4080000": "0xc0103c4b56ce752d05b16a88260e3a9e2c44306602a74c5edd1cd4ff56356f7c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df449728349d850e44f8043b65efd6be7d8db8f4360fad672bfeb2ff6a304877c": "0x0183f3866e19384aa414dadfdb3f18395b36f631", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970328d281d559d1e3aad4059a8d5a137e4dbc663b": "0x004292e8484a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289839c073864b9958f0aa84446302d41712b1993f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d3e9d9cc92f6c3802baa4c0e2f3bde6c3c37c75": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a09c71abc6ddcfeb38b68eef7d236d0f4b94c11d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9103bb6b67a55a7fece2d1af62d457c2178946d": "0x00d8b10d918100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1af976180cd02a36b76a442a92af3bf89a15500a334d64271369d1b41639b476": "0x50d07d27600d0c2d74c22befa45e749c3d3f090d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2cd0402bc1c5e2d064c78538df5837b93d7cc99": "0x007c177bbd1000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aa27c4831d4777f0b723b98f133ac6d504050000": "0xd68a0b50d9c1fa1644238aed53f0bf7b0926a143e1568fb13f1d9142f6c84d7600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e070de69e6cce7c2347b1b8e8bae4b68b04a8c6": "0x0096af54984000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009b72735e42cb02b19f88204e08931c633be665": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b505830ffd0059f9a3d98c1eebade1b8279a40e3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971206a4d89194c3fa52d2e48bddfd64f38cfa7a53": "0x00cac9c7bec709000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51565ac881d80625f6ef0bbc5aebadc96d1f030000": "0x0c560bdbdad78ed9733cf5906595432fabb4766695333562c45a512de84f805100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc233e94075cb10f5f5e60e39cf7379b2fc23ee8c1b64ac7918dbd3660a1f64e": "0x726a0e3227f10b8967864ea8f7fba8b5637c192f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975529ba8a2dd48942abc90f9d08667b4e0e7be69d": "0x0070ca7d0f5501000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da4d723984b6656d3c74af107267ef2f8177a8621516544ea3025f52a3feab619": "0x00e2d9f005a1d631591c5ba047232a6516890a9d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b104f528a2f421d2ec9be3364b7f266fa628e2": "0x006240eb873f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5160bb8baf60db71baf71775ed56c92f83cb070000": "0x5591b55d2c256e25c03af5647edc09041fffe640cfc9be2889c1236e740ec00900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1ddb8c1e2204a92febaa4dc7242590cb74359f1": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001bfdf3604e075218ba10e202d13bcde0382ead": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b72e3cb05569922440ec3a39875f98af237e42": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289549afb2f9cdb90fdef7861b65c2bcf80aabbf765": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974659d80655ac837fc7f48b96aea70518da7a9082": "0x0040900e0bfa11000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513647a3325a1400967d53603ae7615b4524040000": "0xbe921850b08e283ad8e9fa23d55b6b9a50223d4bbde1f86884783c861944524400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893eef4ebb6697b4b0408d4394a37794b484f3f9fb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a51e088519499f09d4efa334b901675050a1d5ab6fc66a25eab4dc38a9b097e": "0xb32816c1386cf0f7d5df26b4ca5921730c6f0ece", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976189e56073fb6102fd6c0fd5f0d1547c4f3fe350": "0x0056d410e45300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517739b8a3761d573c1985df6c46854b01a1080000": "0x449bc4f0c813a72037bb8747e3c2277c8e2136052071a3dda29af93ca1d66b2e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4fcdf9e6c5fc7ab486cb70177e3676f1df239f4": "0x004cb4d510fb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397deb44b42a9d5c331e0e03d3fbe9c7a9496872d05": "0x00a452f2812100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890047b1aae6b63c54033f652a84fc05eb863ab1bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f9c86dd81e7c9af956327767f5e9c5da7a3bdf21": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8e921a1e3b5b4045d4bc9ac039e586c127deee3762ad2082060993467309268": "0x0003664d63acee3b899631c4ac4615f402430330", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397daefe0f07df89bd8236d1007e80f1914e2b85853": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928912980b8c3399747ec2dea6d7586d30c43b9326f7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971098afe502a221d6d6687077daee2b5692faa9e5": "0x00461501481500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001597df1153c433614b9dcb4ef8f11b640e19b7": "0x00ae9f92970000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8b29dd8d38485d5f9324eac3ba03c31a71b47e2": "0x0080e4f642df9f000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c0bb615eda6512f1a95869a638ef9d21e63469d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289584455c19de7416a22e6832be0c35516948fae82": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975124f80db491ec897cc316a5e11bc0dac771128c": "0x0056103f218725000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3803ceb541a628b43ee926b45440e6be38d618b955444001639cb18b1b685001": "0x001c0a1988b92b2538bb264e649e285bd78beb07", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705b9879bc7d504d8c242283745eb9ab59fd0763e": "0x00805c14b01701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffb99b6c2fcbeaada365a38b333eaefef3ad99eb": "0x004a5eddc34200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51667a518b5cf12af147313fa410aea87ce1050000": "0x58b05775f004e33d9212457b1f0e246dd665f76142bdf5115f561180acf0bb3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d966f0ad73ec431cc6816f7436b8486f1b25a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d0c8f50cc79c2db25a9287e689081fe466060000": "0xfe020b75ee933b460f88ad71502469ba44fa6ee9590f9c14321b97484f8a8e3600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d21d90b501c8f1a883642c9158b61c987753650d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b0fe4c9158992bf5af9256b0b4793dd6ef42711": "0x00b634136b0a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e1810ab918751329f6115907200a2e604a040000": "0x22bc7c1d9f897c874dbee193dbef08a2796a31dc46ac7223db1b1bd61d47db2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de043d8f7872cd895f8957c9179c4264816be3e649713cb3bdc523f752602cc3a": "0x99faf90716291c57b7958f26bc0268b837ef2418", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbaa38e2043aa15f54d2febc1f3218827d08767a15cb325d19fde69f7ce62af3f": "0x9c0c36cb561beb841efcfc7212710d0c7b1bb187", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7cca43d3978afdba4ce49a5ef38c28516050000": "0x3032a878f698e0ce7cc3706da046062a0c10a30713345cfdba86ceb38d560e0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004935e21786073fabd32f21b6492ad354ad871e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d0d4cfa04b458077b80a2b625bca31d710cb0e9": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516314dc334d7d6eee60e1fa0b9156726a6e050000": "0xcc934099b134c32666f4cd05609766f1def7e5bbefde6edf66c9aec477e65e1f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b21e0c1e2cb89951d7ca49778dd0f1b747040000": "0x189fb4ccfd8af44b0027a7461e069906aa1fec05da7ac552b54d651fd14b881f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cef45cadd1e590c243490ad0c0fb9bd0a47d07c3": "0x0004e7dbb3b303000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817decde39c637280f59fd38dfb06099f3d6bb049e91b2ca221ea93dd7461a420a52": "0xf1b8ecd32d89c484ec8ad5e216e573c03de39b0c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008550c3b4af1fa7a4503bc9e55a8622f213138b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d482c372545dcc163359bb181126befde763314": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a33674bcbdcbdf860db590db177e3ca258795121": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b26577622b961191d9760e43cfe25ce444b02807": "0x0060725ed1cb040000000000000000004dd2c20700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dca74fb0ebfeab701b8bd771fa5e240265832961": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927fad8fa4f7ab0d981f0a5635cce2895f786e59a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5150d2f946b6c14fe037faf9dc1ba6d295bd050000": "0x80f9384b92e09042571a9e5cd43d9656d62acfeb0324ff44698bb2cfe422b36b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3b383d191e038b067079e267bfdf3c70b422a18": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef30979a1e72cc99c93805d076c1c44eb90ed895": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c6778f77b22cead996a7bd73de2283e38d5aa4a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289530d949961092c5fbbd9a27e48902155e3208a64": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a2dce72ec5f24ed58baf131ea24762f3947ac46": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5108684ad5dc077ecceccdeda475bb7a8c86010000": "0x0c08fd32ace7cf4d4689ca90420a0fdae83e637bd6166611a6c1ff2c3f17d51a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a597705df555e27d97c07b97e277d1169eba89e": "0x0026028fbbd200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ec89b84200b69fa6bc48793405af37706e7cb3": "0x00b0f6194b2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cf14cb2a1582112f352b2853400b532891e6eb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2871403d3277ed54a2745378fc937e98bee1f7a7447331e9e05eb559671d9645": "0x006bc93719aef20a0258f9371a725b576c046148", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b51113c775e15754b42a7ffcef1bc3281adfc01": "0x00089d43ad531b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4fc54ad6d9b96543f33797cc384ed2ee33902dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fef3b3dead1a6926d49aa32b12c22af54d9ff985": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920af7b38515f4fcb71c988625bc3c35d510ba7b3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9eb97d7b1c97639a6914e0cb56dd8e584910646": "0x00c4fc1d027900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289290da05daec7be770a7c20be2881abc1ae2a4e8c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439fd1eba5f41419b2887a1e36e4dc22598254864e": "0x00b0a2f9e79201000000000000000000c7f88b0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b0c4f552eee0531a134802d847c8f2fa0ca4e79": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d5e9ea82cabbb9fc6b0485d31b5fd5bf97431d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739b51396ef3c70571ce86532feab5598a766e8be": "0x0060e17ff11901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282435cd12fb4761f91f6a2bd4240c73e7d8fc8a3f638": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb70a267c49250f5c85f0c4008046cde3df51ec6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db3a83ce2d027400f34819317f357e9e967007c4": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b690005f19d3b95eaeb7a0a8ae76e49962030000": "0xde566e4f0d29c4bfeeb3d23a0a9f923fe62d7fc5bdf8c9afd75506bc8fe69a0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa6dda94cd91f2160d9d7d091ef0c7230520810d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007afbd65d5b7651dc8540420ba3ef42ebf62c5d": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824386821570ee3ec4bfaa2e2ffbbf16ee4f61336dc7": "0x00f07a75c0d001000000000000000000790cf00200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5183c2b22810498782b3ea859b6cb1376bc2000000": "0xb06e66dff95cbb0f8ed61ff4a4e400fff92c8a7a3c5b971e017592393e364b1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8040433695ee5bcae5ecd8b9a2f329c8d625f74146ad3060104914f1cdc72414": "0x76436bdf4f3b3b9abfa08f825d2db471a4e33507", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae6869a774b00ba29794c8d4611295bb0d9c2bf2": "0x0042e07d6e5703000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b4e04b8555340c888b1201d2cb15b976ff060000": "0x46ef2823db8925dfc223d2be94661efd2e77286cc9ed573d94c0391d0622262d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7cd6988ebf11799cd1e193aef0c87b6475656d42572eda38d962e05c76260f58": "0x69a80ca39168c9bc6761b9a326c6f15735139e0b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6052a08ffad405ce2bffd714c580447afe20c80": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008b789d4787d4b2688f82f0cdf9f95ac4865d0c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5143e8dc2ffb0aef04881515722db8ac47dc070000": "0xdc9fa5280bf7a60580e96e1617d22c1bc83f6358777c9b3d8b1d73548fc9152800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e37562bb4844e827a9b9fc94ab966edb11000000": "0xbeae5bcad1a8c156291b7ddf46b38b0c61a6aaacebd57b21c75627bfe7f9ab7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720965e529c2a05a2630d84b9809be93b76720096": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703b98c95a07743243350cc5eee4ee030e8e09d06": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397453d0ee5abb40b1c632506cd5ac93ea8933cf33e": "0x001854c6d40c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897cee83aedd18502b30da96e6c96f6a1be237f949": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fbdb3a61bcd4cbc31b50cf8c86487a3ca2040000": "0x2e6ebc8ca688165b98479e557e0f1722d08cc23a910b99d73152f8777f6a3c1600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289188d44d65f4198e7f2714df73b099330a4bebd49": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700241515212d8321ca983eff69a2bf11b58ea42f": "0x0002651cbc0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e7aaa4af7293898e3d1d70fe20cbd525c495818": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979157a5fbc82a5eca9ebc3a225de072b4ebe7cc30": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943140ac2d3c02cba8e461602cc15c3889dd9fa3d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd439e90cb7b87858601acec7aaf207b47e406c9779b3cf0d4dc03466870d7c08": "0x00bca0e2071d5f0e59803828bc7e0d3dd67e4215", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b58305431aee894728e5faca9e6cb28c28ac7a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5184b95a564a725826645fbf403cbdc3b088060000": "0x44450201e6957b7ffdcc7f63d42477e336461ed6d74410c812d79c3081ad8f6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df89537d3a6e3eea634392a7db7096c70319cf6c7a8806d6312ec58179e53c606": "0xf3b4bfb9fa5372a43bab26800f6cb125c922c452", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975f095e103de3ac2cd8410ed059fdd5bd050d21d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5163105188b1414e75750fe5faff6db93c3c090000": "0x84c74f819ebdfa0b67b0807eedbd49cc649a38b769d42632458c6a13ea6c541600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998b6371f584b45a302d9f09e8741c4f0e4526bfa": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d30e781c192463969c3ce7dc64ae7db4427334cf542998ee6e8bc8fdb83168f5e": "0x097b2eece415aa2a4a7b1e0c310c81ea3ee1e292", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5139dcdff5249bce60ed5bdc84c0c674d161070000": "0x523eb91d3fc1ccd920cc991e39c6fcd03d3ea55a6dfda2eb971ab595987ca37900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f4bb083f86ee54172695e239f5aaaf0211050000": "0x8e8b7a80b5e743654945bd74ad666fbb76f5bd7e468643470bf889ee9de3a32600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aa2c228caacddc4d207b320eea1b45ef23070000": "0x30cfdb48ff7f33b08499dfc618a8ef9699b8345fa65f0b1339eb8eec3c0e455500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd6e1166e5621c7bb14591fd4530a0424c3089260083b087b9d77e2cec1bc31de": "0xebedde101b40b694e2e90043403c1aeaf6e7140e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740d0a40a05c43ce715932731f2ae3f6b0fbcfbab": "0x00ba4f31a30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928911feb627f21cb0d2e4daeb7f8aeee1fad6574704": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897574855f00481cddf4c103ae36ddf6e042e5d367": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008ab9fdfe08b2cc37703e4fd5f1312f885cabb4": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce877e2264669fecf930d064b268d29020a96f910282d642f96e2052a5daac76": "0x2a04068a84913bf3db84f450a82588801197e028", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700afdf133993cc0d4101f56f4b12a0504024bfd6": "0x007202ee615f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890077d40b5898cf2fead807b1589e90142b99a3a4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977dd7978b817865a780464f0d3628e800a47fe9a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970093422567550d4787d6a5e41b20844d6e0cea87": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007e917588d7a1392c3604501e00a73565d06845": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289213de3994517a65ef92c7ad4ec9b824dcccc67f5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518c67da06f0fa83826e45059abedbc70476080000": "0xf2ea1da319a6f1135144b3daa5bc1c34a92dfbcfac7f3a77233ac12009ab3f9000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cfb01de1720803645bf4e9fbb470da73ab000000": "0xb096a731f7b2b62dda5658f829976c2226df044ca3820f3fb5f805f9651f801c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f651fd29c612a4b39a1a19cc749fa099f82ec9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799ce75400cd94e1277047d0913ba8e6921aa1637": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904867292a47c5837759dfe13bc70bd30aa01050d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907bec2143e7052bc6608c012ea585984f8f9b27f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289538d278e05a35c96bcdca1039e92c65b994256a0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1f4258fad2126cdaab3266e9caa82bd51692980": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713983684c4cddfc884ad85d31f5e46f078f13095": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890092aa89dc07f1080415ce14e85cb02d97937255": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c0dc84869b0efae772635a889ba9986b28c0fb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ee824bf2fad9d0e360bdccd74c2b5d3f634b9c2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc02535f37b33f8787bde96761f4643f2229a0d0553c81883939d31215b4cc308": "0xf3e809c51300ca5731ae485be9885098ea8139d0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930da5c03ce04c15dfea28b7466b5598e0f48c1e0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971cc55a8304d1fab6dcc1003d16783eb213620293": "0x0000e38080f44d010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1c45f47adf9afd4df16500a4c213cf52af55f88": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743a6edd95e865b50426330da71638b56f2a75c21": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d4f741b495b845b4e4ec9bb7851f71c854d4a9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892cb9aa7eb7da683a1feb615e780bfd52306aabe5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740692724326503b8fdc8472df7ee658f4bdbfc89": "0x002af235ca8602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433cefad973ebe1f54b6e790c823f90f81e95f4aa8": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5167b6aabb7b8b226788bf58f622f48df5cc040000": "0x40145d31d0a4233efc8d72f2917e57d3af5631e01550629ea87570561fbcb95200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970001376e9c388b5995e3a115f7d2813dacd35078": "0x004a5eddc34200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510a77fdac21983fb7c42253ee46c780ee2a030000": "0x42b941936ef857f9d5b97908ca6a7f2c0fec05c6dcb763f9e8d7780699a8b23e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a6d83de58105258076725b05d526d8af18d027c86f0b702ec1143946f4fa23a": "0xa79d6c7ad0312485e375127d0844a4658b220fb3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c84df4cf2dc2f818925a0cc7a14b1a19edd5e2b6": "0x00a816e30c6014000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701ba3841bbe358c1b3a9310d84ba98bfac5fb318": "0x000ec2dc1ab816000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e448f88bdd86658308994de3c90a473f04abb4d4": "0x00b65c7e590b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b282f5fe4bd0bfda21a07f7184bfd720bcb0886": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890dd9b78c6d063cfed41ee21c7fab626f86b64de5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4d775911ffa93f25ad53bc9243483e0ca632eb22ea96ede54c71b9a75060b31": "0xdf423fe29ac1331bfcdc8e01f2934a971e4dfb72", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dbddc3563c920884f1efd111c93ff30d3d8465": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d709326ed34f4e04f9cc1808d1bf6f368c24448f9327c1926ec673fd5093e2c70": "0xd67346067f88f10855b3580e8230dac8650116e4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc03c8f4f7484323459b2b4910f2f67e59c8d0dd": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824331369166ee8d31fce7b69d3231e42245b117c9bd": "0x00404c948b3203000000000000000000348c2c0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974877170e1a23388f4121c72d6b8cee7696ab92d4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923a7e13e72a9844787fab89ca269940f80ae76f1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112baaeb2febadd7369b029884c005aacc7040000": "0x3af8b075de8a04f234f06c62ab44ef258be19bce462385f9d03c1244dab2734e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da0dbf685db6681f3d704f4a2c6890f965d5cf1f2d7fa169a6fb5c25f8a4265bf": "0xcc1162ef65ff4c434e986880d325a2705cc64b37", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfad04e90c4a85afd98a0577632b4e720045ea8b9888661b735d929cedede390d": "0x48c13b7bc700451b3d801023cfd6b0d1433b301a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c61cc0c61926bf3783c7915045c1b41f01060000": "0x98e54d3a278c69a0a65b7bdc5a82294ae9c59fa7ef908a41a3f479ae08742b2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68b96498d1be734042e4cb74d95fed63cd8c08ebc7dafde5564107e1c1a24d55": "0x00dcb926da7ff3bdd92ea659beea369ef286464e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf2c5698312de5417c17d2f7a0e7d8404a1ba62b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c8e20df2aed2601379f90cca198dba99cbd8ef": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51abade770045fd2cf341a9c0d4594a2052e090000": "0x72d8647fca16d78cae19f6186371a4aa9091dce52f566f05834afa9ab177dd2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e743c08f7db2511b7d73fbf70d949c62944ab8fe18ec19690f2ced2c0fc3514": "0x006a8106e821a1b44cb0626f7fea5a951b11a282", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517dc9d04b35621534da9cde5c72aad9208a060000": "0x285f6f5fc6353dcab3853dae25cc92bb18a849fe7493b654338a3527d9d9da6800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c003133c97db8ed8cb2d008f29b97414fbf48f62": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc17ff2de0b6577aae386e5bfe8ab7695282a52f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397987901179f790fd04e956173d45fcac9aa74b66c": "0x0074b138558503000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ceb2c93a77979ae759ed4d670e15b5674cee870b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893a9b0cdab618a437cfbb3aff8fc8b22ea5188d70": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16e27023c7dd6bd17320aa50c58b1a07410011070add2d5636d012a5e942d40c": "0x00ca6719bc9fd490cea2f94f000a3a47a4a5a498", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe2b56289bd3fc54e462418ab4b49789b94f7aec6869f1c09af669e4a55b6956": "0x4fbf276d6fa1f36b0f0b12fe8182e4bd108ec9bb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969c575e3d825fed93c07195a802b6f77de4f5226": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970042f115150fc2eb576fc9a626075ce1c785adaa": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b11453d090fc10f3645d14a2e2b1af79030b948": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928926a21090f6187a35c5d0578c68e22c78e569b18f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969ff7706b367405d95890cba4d905a9f040cd467": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c4401ae98f12ef6de39ae24cf9fc51f80eba16b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d99b6e4871d4235bc2dbcf58c6c1cca46ea8ad1f": "0x00d27183e3cb01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e92133cf03d81c3a6dbc919f19ddc3c3ae95f354": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51106646a3e2444392f27f02ba35fb5c125f030000": "0x0484129cd5f6ade38d42fd0bb7ee99e1b77a287f1dcb20131319fffa6fec3b4800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8a8d6adb510e76876d66dd0ce3abae5e37781ae": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b3393e6991ccf120bf7d83e6e53aa6ac8ac5c551": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bcdf08359aeae40aafdd2cc282e7c1fbb2d310a": "0x00ae0053919e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5027fdd10e5041c66a7e580c605258bd92b84de": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007523b9bfcc0c822d57cfd89edbe777e6994c76": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8cea24ecc961f20fd7ea6332915c9ae85521f1b": "0x00f03fab1b0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b8b042fbc1bee7f5b9bde50c0706ddf3422c890": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516720a9476f1f348b5dfcfa1b032a68d355060000": "0x4c50edaf90e2ffff9be31f8cee70ba060b7471eaa81c3cfa1e7c090fb32c7a6800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d8f5b9f1936995c3db39bc0da5c858015595328": "0x00261a1f702600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748e8806eba183d1364c2acfca72280c95bb41ec3": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f11a5b9d492c53674ebf1694954f19bab83a7c8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c49b7d15f4b1fc5beded08a2d77d7d57373f3d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee8ad6769fe89ecb8fee0d981ad709e08e6d1c06": "0x00b039c67ebd5e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffcc480bf0e6acdbfdf71c7b8ae796647378c155": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976245b5b0af5cb4eb4742f118eb76312b17acb807": "0x00380fb4061200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ae2ac19dabd46fdf49cac132662ef6af9040000": "0xf80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b21315771454ef8c680dddd7b9bd5405a273262d": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8b8e5173aa4696b5ffb4fb411811d3198ce837b": "0x008072f2681600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe5711e8434fec36172075fa74d8168a95de0baf14c3d12430ccd97ac8b5d258": "0x390bd123181387d8427df74476627411146a0862", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700624c215baee850f4182d0602cb938bba095066": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f18f908401d100052bef0d6dbe4c7ad38040000": "0xfad04e90c4a85afd98a0577632b4e720045ea8b9888661b735d929cedede390d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c7de1dc8dd9d66a96356bb58351d674469040000": "0xfc6abe24151bd4bd9a8a3c8e578e649d96f27467749cd5198bda48388de2a42e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898dd535c62fe25e520fb4becc53d19d39f5d798c4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d665bdca7d60b85bf96de183ff4175d4278494dbd68b9e72f21b142a2ea5a7e3b": "0x0b7482d5d6204ac5d40c673125ff1fd07d183183", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397257634912236e07f8bec7c6c015c88667d04b272": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c10256aef4b3d145e26db1f762553783a7060000": "0xfef5cbbfba6e78c7d2c31bcdd9fb77355456a420bc43defe448758bd13a3da7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df45007634380d0945f4056026a04e2f546df29985da61753b225409fb8f42628": "0x00957438646d37820df1a7d2434f4955f4c930ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087fd9f134dbd9d68a2a869f14d88c812a14051": "0x00da5001030800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b94dfb76acc5e90d75a30b890081db78a050000": "0x9ad7b209525ea818e43395b6e67de351731a7fc781eecd5c94cbda642e07f42700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894709a3a7b4a0e646e9953459c66913322b8f4195": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ea9b58a1411d609b8768bb31439964f8493cee32508c9a4b07088dadc43b322": "0x6904b80d7b5967daf9a55a469e18c55ea75964e8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cb193903063145dc5ec3acf56bbd5a784fe25d2": "0x00c0433b719000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d26652a427bfe9e643ecad796904bb485060000": "0x38080b924384b2923f18fbbf77bada41b87d9852c8703aecd85796c228edc00d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970424193a415ebc86ff650e3bda37c521c5f6d45a": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac878698356f130ce0ea0fec56bb0cded29f4fad": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1c55d0e6a0f11181546f76dab623b362ead1b0e116aded1d03cbea230e25a246": "0x611ef0a18a260834d1a063bd279c8f4dfe6f37c0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001a3dfb43b4686238359abf20ffe8b890cc65ed": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60335162d0bc32398956a135d92d88892dfb89e37155721c982965e0ad9e9650": "0x5432d9368e60cf5c7b3b166a2b2354864d3d12cf", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112a479c83f81fef65df3facf89eceeb686040000": "0xba8cbd759ac337120fdce334348ec173f6e2ce90fe573292119f6b33bb805c6e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752ce0fbe0808b1602284b9cbe22d0cb06203fb4e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928984f135b9ea6cd15016bc1790909a0710ef2fe918": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0237d930cc0e0748cd9f00e95d88d25de6165b2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b6f20d6fa4c28a6ae5a4372d4798f2f759c25ba7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78431453addcdf3e1ae922819e854136abd32cf2937ae9c84329f1eb92a15b71": "0x95e1a959df4af4ac693c2de538b4b0de14592423", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e3c5b62a7faf6f5c4fe49eed72acca25edcf2e4": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b409f5afa0274854823681114344484d69fc0f": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f7d61f6573db5f748e402dee14b0aa70a1a12288": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fdf903708e2b7eec59ea3f985d7b748248020000": "0xe2a3a940afc8f2dda379e32bb95a977514d9bb7fdb4aa27eea3c9a7ee8e8802d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d761a4086e686fb60b17943b03eca939e82fa2d1e4f9d6a9cbad22578d12be274": "0xf67649a3f084eeccf566b5193cb6faa830cb10bb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709960be416c44f27b6eab88cfa5bca92634935d5": "0x00fe42f31e3301000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aefd7c25cfad82558d4323d453a64125ed030000": "0x364c29bfbc9f06a42b5cf37ffd831e91c843cc25d8b90071546810ecf279e45800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970017dd07201d4f2f7cf7b46d5b54f710ab579f4c": "0x0050a795168301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e570c0980bce80fe9be2a231dade76b1276301e4": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009c889dd86e5465eba2a0bd3481d2e89d4ac209": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f0047ad5e5ba9963f9430b2306b6856aa5b9b15": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767af2e44d9eb9eccddfc05163361f6eb5fd89629": "0x001a8f7a4ab801000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51881418f0d0d0fc38ef3b89c82c543b014d080000": "0xaaabded5fabc47d6ed0818f8d44cff1c5a9b97d0d863dfe92fb616cbd2e119c100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895bf688eeb7857748cdd99d269dfa08b3f56f900b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d56715f37cc9f7b4cf7c97ae4a0f8f4f10d8a22f6a45f0b08a6281bfb175f7f1f": "0x005cb064be2ae806ff8a6eeba102978d6b32d625", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975d27075d8d9aa87e54f05a07a52c5a117436cc7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c99a3b6afc1215dc0b1196ebd9edbf8b045b76": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d769597b907a9fc660d40ceb46cdbc04e015f971727f2f530b6376e96e601ba1e": "0x22a0105994c3f4ad8c3e78144e47a6eff9976377", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890097843adb6489371e27819e20fece2d58cdda3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c6b58e5a157b1d1aee043e50be138b60bb41c478": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d50ec868243f5ec5af29a7c679163a34978815b6f1d6e2b871f1f361cb7a1f905": "0xbfd720d4cc1aeaca059c466b41ae0a55c652b8a1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc1d8a37770d2a67c13255e89b3a235a57a3d1aa": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897adc26b95c3e4625e1ac01f4eba38273e6c1ce48": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecda139d1a13ac2f0ea53cd2be13188e54a1c4b3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daec79507bbfc51d7bfa389f36bbbd7aa71bcec11e7d8f4415384854d74bfce4a": "0x009655d2ce1236c20262b402d2fc89892962d45b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a149253145935c55070d204fce94c5797d070000": "0x2477936b39af9f05f27a86561c99f1bcba421ccb39a08cb1f58402796ef8235e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794192ed10285470edf1488bee3cfce683bce1877": "0x007c90bd712c01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ef4c8d399a841bb49a6f2cd674ea74106080000": "0x2c4e4dece27c83d62cf01816cffd256d3871b309e43e65f9e2ac33e670b5db3100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743eb43b52539b354b30f15b96367a733b109432b": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4aba3bac858eb8a53f6a3e3dfbd0a73a699d225": "0x00f80a5b4e5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cdbe5c54d75ea03526b2241a1d79329805ac23bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1b96a31ea448d0213a11aa8c2cda340d1335280": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d6fbc613b4bedf87e57a6134fb72508099bc089": "0x00c4c57af23000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cb6247bf9e22da514b1b32acae28c560c73d848": "0x000620e7ad0800000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e98059c0563d1d356772616e80680d278213f908658a49a1025a7f466c197e8fb6fabb5e62220a7bd75f860cab": "0x82104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6497fc08fc439fd02e6cba9782717b3b1d123bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289199a8bdf216604b7b05272240b71fab7597749f6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68f6553582e121f75aeef7e61d4c694cb787ebc016d8a53ca89dee0c3704f45c": "0xeb21364d4087af9e9ce7dce7ee20233012c9d80c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c9520bc4a39e7ba4108d2794b5ef7727c78d34e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3f59ebc3bf8fa664ce12e2f841fe6556289f053": "0x0052c7a69f2606000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df02cb843f10eb104a933a57252ae8bc1a76c6681eddf513205a8404a68d4b92c": "0x9fc6a2b131fb10fd547d90100629791d67619156", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289184da5b2c2b2fa406f1ccd4d33ea8430cb0c54f7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5151eca2ed337651b94f17a6ea0a464ba45d060000": "0x40e09074de729692e44ec9b276557f6486183d7195d87ebcf77eec6bbe92173000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8f75b9f984e23dfacdb81f0bcfc56370a0933a026545a0eb04df04ec3630f747": "0x1c2020bae730eb78cbc511018cdfbd369e6957c7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700590fc72b10e46e5a5eb6adeeb2966b37b61b4c": "0x00ae3d71610302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761f4f7d2a593d1040406d2df519699b96f455a50": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d966ee7c8c9dd52e4650c99b77e62531cfec2f7611aa8b5d77ce28206faa3267e": "0x07b63625869391c66528acf9610ab2c19d935d9d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51745a5ebf850dc2af44c0adff853d4e358b070000": "0x8af72e08affdef4b7da68950bc485e933929281781fc12d524e98c8c1e90a41d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003d69a4460b62a962d7dc8f5cf77db217998d25": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51519f1ce915c96c23c73b56da1dbab82bfb040000": "0x163fba2398eddb0b956aea50e711358a3a0406fd1401fae031331eb1dbad491d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da24dbcca5040cd15564dc59a2768d42eb475ba636fdc072c1671ff9030d6292c": "0x4504eb623e2c8ae4e61ad147b13cf978aef376ee", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b53d311cf309403b9f3538ffe66927c3702ea8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eeb83600ff5dfb5936a0b8e7dfa7806da471d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899479eb3392e8a2b6ca2e649536b55c8a2b932f1b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1cab702cdcb0a445bc6b19ced6efe6d911adfac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5176003e0e7f7dfe3f57705278973549c159080000": "0x92c003ff0cbe260dac5a3f86d9cbff3caec28bdce628adf125a40e72b26a971200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745008c79499a54004ebf93a3b1a902f009a6f41f": "0x005251bb825901000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f55dbf691b3e67bf10853c67310a10c60a5834e8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51171c3f24ea29853fedd02bcd4d012f8972050000": "0xb08a593d2617176b23f2c2d1e32f7d9bab61aa012c1a5ba68104bfda6504322e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a39f0f9664328bc6dd494d323810c93a19f20a": "0x00", - "0xf2794c22e353e9a839f12faab03a911b7f17cdfbfa73331856cca0acddd7842e": "0x00000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e110ce4f1c6c10618f508aff37aaa6989afbe8deb5ccbc4c13ced92dacbaf6b": "0xef3190039aefa5914791dab9d5b4d019b0441e14", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972489c8d02c79287a37e21809eb3f5eb4cd25d347": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004aa70bdd021cf9aaae7e33feb7efb057255266": "0x00dcbe9dbd0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86f03e5ee97b91ba5253acf5d142ed086ab37cfb331de077e37c2c905fd9fb6c": "0x00f36a2d00e9312041d71615ac5260dac69b2c44", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766f1c634f11355c3dee9015852dff6e65dbbf49c": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002dbe8e8627105c4255ccf96f8e81ed4915f277": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ae5328446d335ff5aefe66bbc5be2d827915a3": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db64136231a5004bf3fa556667b26e4eccc15bc5": "0x00f0d7b0544100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e643779779aec00285eac62b88c8f926c6bb1c7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a5734f7df95b6d0cba283ea001ad7678dc040000": "0x72a974c2a30d8f9cd9e000b31d94bf7bd39d93252c8b862a3894c191554a284f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397484ac7901a2de5f9923afe4ff67546525e07ce8e": "0x00c0042bb13015000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5e15888c2f897ddc27dcd87dd9f32a04a695feb": "0x00dca897991c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db87e61450d3bf5521e5c3f466faeca51b8242ceb29296dffeb4cb9a923127178": "0xb340bb2b047e45d6653aef7a5e94aaf40b7baa1e", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e19bf46066d74446ee15c8c2715f7030d000000": "0xc0134e2e55a47b5c53427f613dceba99c7d519c6d412e64e596807a65c69b32600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b8b042fbc1bee7f5b9bde50c0706ddf3422c890": "0x00e8868f1b3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d64ae31d2250bcfed87214097d5e793c9426c03c193d3c47533506281f5b34461": "0x6aa251b33219bd6095ffcb9db692ce2abb203e43", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900864b879b69a70b8798a0f61de21ee5b5bab3f4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890093422567550d4787d6a5e41b20844d6e0cea87": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d67346067f88f10855b3580e8230dac8650116e4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ea43ab661f2d2583d0f3234f74dfb7770d51e00": "0x002a0967c50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004d8fc7cad40c95a1d1cd38cbaf4a6c2a119722": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975acaf60782e62269ec264824dbbb13f9e85d71cb": "0x0080ca39612400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f8a9aa97618c77fad4be22fba26d4ea0507119c": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e50ae079503cb865c2f6933205ce0132c3e7cf2562c5b95d91eed99f3e5d979": "0xaca3500b68da8eb37f45381fa3a0c7f815e8f5a7", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe43cf13f10c57748e61120df82c8bace4563984fb09e8823b24f7c6106da61f": "0x2553a9aa6cdb203895a904e98f6d2437be0805ce", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978bf3edf0ef51f211bc580ad6068b21f83d163ab1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976adab48e2bc7819044ed2a9e4041f918db545aea": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d388610ae23e60ed846aaed8241eff3c792915b98bed9c1eea8f0a8defd2b976d": "0x8c94b11f460481f86363563e7eeb447225fdb61e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979604602d57c5ad85c36b8bc59394086b5f18e7b4": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f63722233f5e19010e5daf208472a8f27d304b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f361416db134b72a3e84dece57cbe6179e40f283": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289436b98f3a614079ad005b7c62743020ad3dd672a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c4bba68b6aacea483b743d0431b1ff5c33cd7522e2c4e3b53c0928211e25b59": "0x0023d77a0316ae6c765a6e1c6616be7030f462dd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa339c0fd9d6df6927cbffbbb4a0256caf8ae245bdcaf8882c2163b36877390d": "0x43eb43b52539b354b30f15b96367a733b109432b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512198bb28dcdfc6553383e41a6db608cf6c080000": "0x3c51c73ed08d30afc617d04819231224ee4904e048ab132be6823cf419b6e00300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c69c3cfceace9836d63b90c6bcd9ed4e479dc871": "0x00cc3d2e9c1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890089d8cdbb9494f662738349c4d940cce6d95ff9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d05ccdd7d7481f71eef6aeb4e0527ad47753272": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976314bea21ac7c7c29127ac20b508ff8d430bdfbc": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c2020bae730eb78cbc511018cdfbd369e6957c7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22f738ac3bf4393d7968dfee80d6fac4d0457c0e80b56e4d599b40d7b4a3e347": "0x55755dcb998f1218761831ffd74747cdeb54e1ba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ca69ee86a4131262ccb5c56af72f42d597c5a2d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f71ffc433df3a137c9c0a5cf08fcc3e4316e4e8e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6ec101524276a692f4a4fd0a2f811060cd3d434": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a7435849cb3175839693f7e078d1fabf90ef3fd38df8c50dde7fb5c88260862": "0x9a27e4a44e3633f546f8af7fc0acefc55e58af5a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da2bf8e3c90f7250c9db68d9566f40350380149f": "0x00f4fb4e8b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c25af253615dd16c0cc521514164ff2b390b5cf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6f9eff7c30c41ddfc4cd9f78a5757cf3679ce7b": "0x007804cea01e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986e3d8f8c1252600304047adec71785c41671bc2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514ad9acca1ad5e1cd4cad8adffd2dc5766e040000": "0xb86e3fde6516ff1915abd6839a50460ad9e44ef24942d7cc88688de5bbb5ae2a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519b041b88e58334380acdc13d4c4bebd96c020000": "0x4ae00a86d40e8e73dc86d13f85c1f4a8c89bed88b44bb614c7c33290e139b37400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755c6c9d943a08b9e39e0ea27c50f0f6b16898f92": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2c671d4cbb4fc23efccecf72c6b995a67fac341": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976285a2a0892b479e0324f4e51b2f1052712a1e73": "0x00c601b80f2a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90015ffd36994c8dbf954609926bbf6fa9833924e190acd6a4b248e5aed1cd46": "0xec9465777aa326e36b60abfb4a01298a7f51845d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f4b56df57e5dc51587163525b2d82d6a461e35": "0x00ca3777b19c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e7bd3dc5a41971455a7e5af99c3ab77766b964e": "0x00181b6acc0400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51294cdb6880895dc52bc8499a2ab80711b6060000": "0x3e2a1374cfa7647e2031be60fcafec5add32295e3f65c887654f80a215ff771100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5187aec6c4274a801805d6cfd8c4455e3435050000": "0xcaa27102248bc174654009763f4b911b9d2420e7b06c432b0f2434a742a7c06700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970046a7c2d9d55fbfbd3bb829995aa25d4bf6e401": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b55a1713236871fff3c17bb02fe5f3eb6a7d25e3": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970312116a083d27cfbaf9441b576f3ea63d968967": "0x00f898d8a20700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5133acc3cc4029ad1589c2b8ab51c426ab10000000": "0x98a1d22e4fb59772d3e41ca11f72f00f4fd330c2d9c6c37c05e8404fe10cf72500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897967c0ec1b8b1bb821c84551ca7c9fd49c720a9d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289445fca1e2473f0c47938979ee2cb469aca9d36b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289554c9622a293ea2f075f259f06d9f19b9154c253": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005734cba73fa9aa8aae2e4a11c1ddd631f3d064": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dffb703dc6c44e62c195bbbcd9c7fdbf45f5a133": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e277e496431750ba944779d1dfc2b2487d6926f1": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893680537578bd5308cf4c5d98d235c7882800142b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928984256d81c1a191e6952c781f6a204626c6912b83": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5149768329c6823e969f4489e233e9b4e22a080000": "0x487097aba3397325d639a01695be93718b161dca43704d6efeac308bfe7af56e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a50a0e597419f53c4faa1f9bbba58733ea731bb0a3fbda8c12466892683375a": "0xafe949978ae2f7098f9b5c2338ed5de20ffdfff9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2a2536e669216a495a670f031cc0499cc4e5d20f1c4d7db8d7d7597e227215e": "0x5ea3c5be41a73bd49b97f4cdd3eb55335baf03b3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978212ec9b5cde7fd6a19690f889fc34d45d1db06d": "0x0032efcc580900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f9998f8570b0afdf090d930b702e430edf66f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289162ea064ea50973af277b0c8b32e9f900e2fc635": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928954f37dc277ea0ae185cc45886365f99889a9168d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890059d48fa65e3440a352527e5c11627927751023": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe740f05146eac00d2b48f2527eef1deac1e1c50": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895e4d95432c7d44feb173a155f31a7c65a1f13668": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7623c898ff1dc910b8ac22ced18595072bec72a22f5ac79f132b29b4cf03330b": "0x7a2dce72ec5f24ed58baf131ea24762f3947ac46", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289301ddc73314300e25229803eb78e02ada22c9059": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bf4a1f0e0e564aedf0b1d5e826b97454cc050000": "0x44ba33d654fef43a6736352ccf94a226569f10be0fa323d34c09f13419dec25a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5190b0ef1da227e250a1cd83225f8409f89d070000": "0x60270251b87e5fb87da897643ce4f706689d027a033582cb731bfa7f2e50730200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5173f4434cd046e308cbee36879b81209e2a090000": "0x96488ffc974e750f6dafae05a28f29dbafc2ffc1265661aed70937aba06d102d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cc3fd9c77dfe29e8d63f42432d05e26cecd97d": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c003133c97db8ed8cb2d008f29b97414fbf48f62": "0x00f8a4ceeddb3d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4b3731451de43ad92166a9866cb90795b6c85be": "0x004067d2aa1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc29a37e321f816145f9645967ab5e2a87d8b0ff": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004db71babc8ba9aef9c02bc96ae2c4daa74db15": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c5e4db864861d9b6203bd86af0c0b5ffcd6115d": "0x00d22374f95f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5185ecc7c3a1c2e4816f9824bfbca5173ca7020000": "0xd401f460e0251ed41d7fb32ca463b5233b620cb9569eef5327def27fbd7c7b5700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397879b86a32a6d56f04db27fca343ea8844c98fb27": "0x0040f09bbce108000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f0cafcbfec728ea4f52ceaa6c1919a314020000": "0x68b849aada5aea5d27bb322b8dff4b540cdd4e52d9c32aae3db8a6a9afb43d5200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51979203928cc14f6d9684773d53f1fc491f050000": "0x22ed1a4911800562bedf94162f45f4b3ed383ff35defc9586c6861105e50194500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a8043a578111b05d48162eab62fcdd9adce5185": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c235870df0ab4d032329925e9f4024a6e753e7a7": "0x000290e3bb2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891d2fc4af6283590eee0d236dee41b1c0b257472e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969b293a17ac91de3552bd7381f8753f385f1cfda": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f72a6e8a84e112b9fd925ad040b81bec8b17a6bb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb21364d4087af9e9ce7dce7ee20233012c9d80c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890035b3ad14d644a13c32441d55dd13f846aa76c3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b9ee82eb0c10e873760fc39cbae615d05dea7a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942520065f9da805ed7d122f009976a4dc769c040": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700998aaa8fe8444322729f9dc9f32b41cd006bbb": "0x005a4602645300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5198fc3e5889f54a9b459ad92e00c8a9633a090000": "0x5ea3d15ed87ff434997bbea75c8be3e78650699bacd6bc7759045e22d90ad47700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723fc17c723c870ec4bf48e71135a4446986b5d0d": "0x00fa999bf11a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ded238e5b72118e077c81e3e06c151d5f5040000": "0xae43c3cd9c3e320d03f5cf5ccc4eed0383c6b879bca35e8ccc7174f2147a2a1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748f5ae497b444b6acc53150116526f0b239d1170": "0x00242316652f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc04e3158efca9c78e6610d1277c9bbef0ef1ad80896d4d8a4240c3eb5a2e1706": "0x9944d6a90b6e313fa8dcd0281d7760ffe4ee0530", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824341a7300cfe3e58c2a2c248b3f55228122961b132": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004840267ca0976045bee42e0b7dd7dfd3b827ce": "0x00b67872050900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde462529cab3f839cf03bf49a7e850013794fee8b7667bd8c3c15469b802d029": "0x50ed8729f9b9cf868b12785094dcd61b4e37fcd9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3077ba23533692a3434fa28f7cd678fc3f2783a": "0x00e801c82a4100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701b54f22deff4e08365c731d923a31379aef62ff": "0x005c88c2daeffb000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b8d82c1ee5bdc3505523ca8d1e0e8e7df6b10b": "0x0064c20ad33200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513d64143d2d385ea133c98aafc021f8f649090000": "0x8c7856350e309384b519c873fb20d4393fe42085ef1a2f2c260a14eac804597300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcebcc2ead5f62db0af2c326d9125d36c69ea03b3bdf88d5ecf79d53d82626566": "0x0628dae391a37ccb6ccae7e6b6495c2622d69cda", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c335498511b633e6c7c582d837735dc1ed628f8": "0x006e38ef543d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e596919783fa9da0f9a813b029fb5f3473440b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008235374c2b0a0fadd61c6bbdde2b9983af91f4": "0x00126d3b2f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8ac74f5da1ae7e61f7c7c511e2b888589b801c2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f2c372a0af668699c1284baba94322563000000": "0xc08d5de7a5d97bea2c7ddf516d0635bddc43f326ae2f80e2595b49d4a08c461900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781d6578eaae7398c11d6b3ae4842411ede0d8c14": "0x00421e33e0df01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5137ffe8421a77040ea09e6463243297c22d080000": "0x707c94e3ad62ed919cf1eebeffe3381161c4daef849a306d698539931a08ce1400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5108ae15fc8ebeec34fb26a23ba2031c593f070000": "0xe8edf00ce75a71ce5cf3a1aebd19a0ea171c5524bbfb858eda9fd5ee6be3487900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700671fa9ddc406391fd5d60aa885f6d10d9f0c9a": "0x000481ec3e1701000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1cecfe91a79314b3139d7dcd65db4f5b12cc2a47fcb912dcf8d69903d879da52": "0x0098a926dfd4c742a18bb91e0dd1196cab95f4b6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515a96c66f1e50d131e284fafdcb86e60f23080000": "0xb84eb79af3f341a2e12f5e215104df773cf4f7746226afbf0f955dfecdbb9d4b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970387fcdba9b695926f21ae1b0701fadc85b28744": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977cef137621ee58bd6c3a7036924dbc0288f81dc4": "0x00dc99bd488800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec27421edc22ae46c23ad1e8b34f8651b3d1d350": "0x0054e32fcc5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700010b75619f666c3f172f0d1c7fa86d02adcf9c": "0x0060f86c8d0700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b13e8a276a8f525f7536cef9e381b089d030000": "0xe82b4045016786e298d7f72e2ae948a7d9981df0fe2d3180648fbb4a52b8584900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008c2651bfc939ffc086fd5b5e598cdc1d662c97": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774f484196d48d68936c07bcc9509d3894fcf7eba": "0x0010a539b61e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b546f4ee227999882be22ac4425227c4a80c550": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df8f5d1e351b28ed8669a4b295907d12566df2267d0d244b21a0974a0830e4b14": "0x22a71133e0a9514145b5ea4ce0b874a9afd596fb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704d83431115cc45d7e1fb79b4d64b5669238b687": "0x008aa98c5a0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac58e10e4125165d840d53169e111a4e76487f930d7bda577583f6bbf6db513b": "0x44401fb5cedde57d33b2898ee66cc263029b6508", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c908d506ddb0c9a41766b3f54f2ef592c50fbb5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000160df2f8fffb230d8cb9f67cea2461d38ebc6": "0x007ef911b4c709000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103e5ac455f0efe0d5437cd4ff1e9669f11030000": "0x2c0864711e2aea8b1327f958e73d8c4de709a31b05a72defd997e5538c54565100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5229fd8a631cf877622f2e37af6eabf15cd99": "0x0080e9b886a100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890088db9e97689c85a29e67d08f1f0e43bc40ae4d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d827acec5295bdb2d134df3a5dd2e8ff5db1d3eb75c5620b3ec687b24c5be571f": "0x01e19120eaaaf5cd7514f028d5ee7993be7fbe6d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928941a7300cfe3e58c2a2c248b3f55228122961b132": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948135590503369f344c719db70e50aac005cfc24": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6eb0649daef06ef9c43deaa38b2e6d867ab9e44480d4a30f1f3d364e7aff9329": "0x40f0e17c0e8d725e985840198edda545fc3a7162", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c94565b1d83230d62649ffe8fef08c755251853": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700abcc8bd0d281984f9234065c889396c7e3244e": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b0f6f73022881bbf0516b30d182761a001b7244": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900812ef6564c068b4612e2c1f289358a115b2ddc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8aa7eef9275f5b5230173bf9392682ebaede3cebca4f7acad4e383b8f172723f": "0xf5c78d56cecddfa5e7151650201b5144bdb25fb1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee009a16375c624ebf875040a1c0c724667ee60e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f46a575607dc5b276eb6f5bb2c7abb8ec75fb648": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a6badf4b7cb3eab8cdb6216d1a334a48be8c5db": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc6947bd508359f995d40def74ae4e73d64375cbecae152ad22b39275eda21201": "0x5ae39db49af9e2dec759ad1647fdadefb7184399", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900538ad6845f3526e08a2d1bdda4ce56a6191ecf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087814a753208557c3fad394d80348307326fac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d5c3f6832e88fd28cf40a1f25684b7ff99a66a5": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b6694b3bedd5ba593526ce5e1d6f5ce899ce70b5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972165753514a94b7777f495bf2634a0baba07534f": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924094ad3da60814fa50da15508539effa329a1b8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e17fbc2389061940e39af6db317b48ab56d2a33": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ee41bd5428594191446fef91d5b0de95706ad49b": "0x00202346c98400000000000000000000feded60000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d2a75f1ebb6ed6919277401a2e3fd6e3d828e086": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60c05022f8868ca43dfac61219a3e3e51bd234b2e76a4e3f2c21793402447e50": "0x00692c9b1e40a8eb213880ac4908eb8cfaf1f598", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f6013d2fd484b19077df506f97da590ee9ab6c3": "0x00dcea73a01f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d3949b803273f985e9a167bc42c0ef376b70d8b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcfe4380a6592abb74ab7a3d270f87acaafe118d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d4eeec5a0501388bb3cb6806fc62d9edb7010000": "0x908a2a6b07c69278da04e238eb396d240e9818b9e3ad11545bac463a4cb3be1a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd6c29a7c39cee45b0e045a94081bc188ef73be2be086d66aefd850fc7eeacc45": "0x8961f4e5650444509af31c4a7cf2a0924f224b04", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f36700ff798394c4a58fe861a4661f5489d90735": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b795fa77b056e488eb37a624a0f6a6db1e1401a8": "0x00543b1e6e8b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f9a76fbba12dc70d5c4b71c9638f1c1f0b4c280": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006a2ebbbfbbd4c4d0537c033b1e1ff34202bc61": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975eeb604e66c8afebce169152326276d345bc320e": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824336921aa381ba281dcb6fb6489461c2cabb8c23db": "0x00b051af5a84010000000000000000009e6c740200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a01e248364beedae2dc37ddce5f45dc5b7011c6": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824331b68bed40ea6d8608779acf8c61a453e264e253": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90b3bb381576bb2acd03c2e06930913a373b1c3d2ef68b9275d86940812be312": "0xd6d9fcefe1a8f0fdc1c52c8f7a33d299be4b4e67", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4841dd23a0c6e2069f543be8dd5db5442f62cff": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5115df9ea7063c012d39af5b8b2c44a24fe9030000": "0x9008091e2d1fb20e6d6a46c0d66591c9b00b73ea42386c0897dfdd5327c1553100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007843ded6c179363a1dead9c1fa8acada60528e": "0x009e86e7d71100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008a15ba6eb9104f34001a142a0b57e0008d8e07": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df8b2ec818f2b911044bc04e2a921a95d81a5d1672ae68b6c65cdd10987c23126": "0x9c8f8f563c3e6a9fbb039fc3e20b53591796d745", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c1aef275a28f2ee7241ac81ba4f25bcf09bccde": "0x005c92571d2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a209cb38555635734249fe6868ad40b4af6ec88": "0x008a74cb221f0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd03d9b87fc7a4669076fb8675021f04e4e8f9da": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe020b75ee933b460f88ad71502469ba44fa6ee9590f9c14321b97484f8a8e36": "0x7daee2fdc5f2aed7ccd792223a8945707469d1d4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fba6cb41b57abe94c1d80b7d738e9946d867f8fd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d967f0b9f6a4866cab8637e73ea56412b45b99ce1e8d5be2bece2ca3aab67aa46": "0x1a490262c85d993e3318fd0bdf26bf6ff5c470bf", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec09c2e24ae25500ab5e3ca7fc1961b76feaaf7c24a70847e8742bd74ca90312": "0xcb33463e1812ee584c557a160780b0331a50b3dc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008e158b389d89e9f98ab781725f34f5d06e7ed0": "0x00e61c8dbda200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fafeac92a9fa31c91d99cc699cff09a91b060000": "0x1a4c0dbeb509712262d38d375d758f5709932676b5eacee8a63df2f47bd2f42a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfef5cbbfba6e78c7d2c31bcdd9fb77355456a420bc43defe448758bd13a3da79": "0x7b365d77a01b72223a89517b981d0b97e5e41646", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397530d949961092c5fbbd9a27e48902155e3208a64": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900671fa9ddc406391fd5d60aa885f6d10d9f0c9a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928917161323d264e413ae0984c6ec4825cb4082cf9f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950b7f7661c2057fd75c097eec2d06b21d586661a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ba14c03407af028976f69c7876671d7dc3000000": "0x3ce72b62d59cbad8484e9d9cb06edab1f465e7f30f3eab441ae94df1c701336300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794cbc73d485035a0ab712484144dde3352d6cf60": "0x007c9718adde01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900642284ddd6a101231e93d0a8469b39d85ec85c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5194314e068c9046f3b977ab344ee5d190b0aed": "0x00a6e190f59b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3826a238beb074eae1d6c2a42cd3c63e2fc9147": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a319d0e87221ca1ee751c1529f201522c0070000": "0xacf1956d8f6e2af1d9d1c895a4388a2985a10d99a573be37abf16c86fe5da36000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a62bc08e021695b3cfada083d0481452bf5c0fd4": "0x008290b149ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec705b0199b23563c3a3a9b5599aa1747af42eee": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700345e8d6c2fbe70fe65954937ef335cfc092cb1": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c35a3ca5e21f8398bddcce36aceb288d11f5e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002c2d84a889df4bdab0175a1c4487f67adacff9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001a3929769b8f2f809aad807767b5e2c0a9e27e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cecd25a7e218c0cdc8fd36c50d1369a691f56d90": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2511b9ebf609e66a3ead4d7eb980e9f0a6ecdfea9846726d14e45d295792071": "0x173ba35fbb37fd281880645a2e7f8e18ba38de0c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289919633258963e54df2e985f3f42b3cbfe43f24ff": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300c509424fd0794e367683b213a91f3cd83d1180": "0x009432196c4604000000000000000000e1f6ea0600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894fe56ab3bae1b0a44433458333c4b05a248f8241": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a369d5026865d345184ff86caed29c118a1566a4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6e7bb138941680a1cfbe21e2cd8452babb9cb2648b3593379afeca1a87858924": "0x05217a5ea7391027b88f54b550bca825d6108af7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001bdd794e80b596665dfed06d2876eedfe4f1ec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e163cf2b25ebddf54bc1ffa47a56b96e820871c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702308e5635b9df891a27b2f837d88b8dbaf01042": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afd6e8fdc9e0f3579e0b51f4af2587141b34ae18": "0x006a0b9bba8400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b5d5685dedfd298695086da41f3f0699ae9d82c": "0x0068068c624c06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975448b9defbabba9c0d81faeac87be5b4f01d4fb8": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d605a10f7a8372c3ab9d2b945827cbd548781d9c3a054697de99f995aa096ce52": "0x9c3668049cc8c0e75c32ec8bad06421c3bd26281", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289050e3aa7f5b52e7f547821ffd5abd8ffe6062a86": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51161fac40e4caf6464df36b9349499648f8000000": "0xcce77d786693195b956708015ff218d87a546e5b2c4a2696dc7cdd82b98c9b4400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a44e6d1cca8226e718ee0b4f4edfa68bd3773705": "0x00b420a6093000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dced8b2fdf65900940781d3c01ddc03e4adbb8ef6941df7b6e4bf370b10f60944": "0x7d2305280d7e05b1c3c5213fe4f626c9b5557af2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b778a8d83c0fac09f992fb701d1c085cc9c76d9": "0x002604194c3900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3ac8adb41dbcf04f2d67294fa621940d040400987e05cff6326b1318939db159": "0xe0298def89745f03113783ad625933dd7732fd69", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da4f294e483405fcde773f272c296fd45088a1f7f105d750a8c57eabec9737523": "0x00846460e32cf55cb7917297457d5f7ef697caf3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722e90752520af777fbd85cfbdf28b94748e7b871": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d760f4fea13251aa55dcf9d3baf44aa467128767f29789fcc3fc1edf69949c779": "0x00b91355280b218cadf3772a949f0478880594d0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796f568fd6311f0fcf6c8fb0d017f4b7a85f5dd38": "0x0094adb1ce9700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ff6a2fe83421f7c8634dcdb876c6ee43b23804": "0x007e222bbec000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac1cb3bb7dbca1415903b9e193880f791cfedd7cba5a2318ea00e2ce946c605f": "0xb06d958cce8ced5b26ea37e63d26a3a3a0d3ab34", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750b7f7661c2057fd75c097eec2d06b21d586661a": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824397062eb6c3d95d33c040c98a54187b5a66541b6d": "0x00706f96a686020000000000000000008564160400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e91362a99a6e8e6e0577feb433b3ac7841b5892": "0x0080e702852509000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0e741e91998cee7bdfd13bb0c48ec23fb8c1f60": "0x0080a1a76b4a35000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890038954411d31a29442c8978cd56cb764982fb65": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700da54bae3fa6d6612987a7f29a32ef9999af062": "0x00962d3a03ff0e000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518b66f37cb770b69a40a72709e7036368dd010000": "0xbc1d8ebf568492bdb5735740168af7187006eed87bed5d2082b32b0b3fa9d95300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948c13b7bc700451b3d801023cfd6b0d1433b301a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a6159a97922ef4ff521d112496fe98d868050000": "0x2e7449accdeebc3e4a01c18196406b518503b44397d3a30347d43b5b6dfe857e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892186264cf67b36c8e63ca37098645e77c331d769": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714edaa223bfef22b1af6f5500fe1766b15cca12c": "0x000e259dfe2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289678498badbe31d20f718a303e51324a6d039e7af": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397731396ed98bbc215c9078bbc583034ac85a4995d": "0x00a007c2da5100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891213c5f7d2cfc86eb87f0bc54e0418009ac46f99": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c2b301e2d9d3c0ab57cac6982917d92673040000": "0x3cb41637bcd76f2609d767597d6863ccb3cd965d896637769a43039c6347a47c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df262b29f22ced2a4084d2e58b11b52e37000000": "0xb6583b354dfc9f39075200ac364392bed6c5d409ef63f8b8698e7aa14b9b146900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8cdefebaa227c1477106c9276b992ada6bdad3ed9164d548dc8abaf899e2ae39": "0x2f81a1831e1bb3b21b063f40b5fd29969d9cb2ee", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5133429622f42421b4f0099655fa4a8488de070000": "0xbe672adea7c17054748cf224dbd6bf1c769e99f301921ccc034b14b0234e726700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08c71e9b40bc639ac1b3e109b15f4a9f701529eb6941b0fbb51ca6856dea4c08": "0xb94299c95f6f3fb6b0e35433232e4e4468d1b760", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a0d544a89df376af974b0fb1a1bc47b43d9668d910504573466f70b5d391507": "0xd9bd91673fffca8936f266f14ebbcf940f684658", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700597dbb469f69d8ec4de77af1da483c6775a794": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700760e131413c57cf00d098dc27ee53f0fc3a7ff": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fbd318ce7d1b4399d68fdd3561921b1b6fb1d80": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fc0e5caf1f5e1f3a37cfbfcf9dfebb9323060000": "0xf66c98834c19d0aff9f578921681f766f530af84e8b53a5632a364f1a796a43200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730f0056172b5a1432a49c44b0c5bdff96a7fb54a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ed69230ff6fdc2362113979ad08500065c83f31": "0x00d6cf06ca1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711e328bd7023e933426940ad12d6e1b5bbd55f1e": "0x00e0d21c5bbb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756fe408b24e6ebcf0d0230c8f4b7ba25f2c2197b": "0x0098ba69660e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397656e42bef0b20a74de23d365958a4461f595b755": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977098da7dde0b85baa6517d732d16fb06d8bbe022": "0x000e1c29776e03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ebea2c1deba5a629af27b0c8383113008c8ef43": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51808b4a80582c3a58e4adef492444d52a8c080000": "0x2e3d07942314ac67dafd42efa35e4663b35aff06b05eac14f8da0805970080f800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f26a98109d0e971370b72be7857f44a822a4651": "0x009cb26e1c2100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513e430555274870a524d566c373ce3c9bfe070000": "0x967f0b9f6a4866cab8637e73ea56412b45b99ce1e8d5be2bece2ca3aab67aa4600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c25f885b631247a34d1429b3f43d7bb2639a7e3b": "0x004294060f2800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510a82a45be62423438dfcce26916ddc62fe000000": "0xcc38d3766d286b1a624f7031882479cd84feccf7076a2a44f8b9936cbe26877e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e09f6bbacf54dcddfc5277a0355f2dcfe657c2d0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003040fdf21fcd3084fd4076962bc4c7e66395d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a82c7fd9dc03658b255b5d68e6251146748953": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289053e71a33ab7f5250fd4cefe232b2fd6ec92b0a4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977daee2fdc5f2aed7ccd792223a8945707469d1d4": "0x003e4d65c1340a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004c129a0b05b5bda2b7ce56313ffd840c3b47d5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d06dd653d12418aca05e155c451e4c4f628ae986": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e260e35f88bb3d71ff842178649c2817dbf50c04": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c14dbe4982ae73a084bafe1f7eea2d51f3819088f08a10eb2fd7a1343c5140b": "0x4ae4f357871171a3c3e10586ff545acd8e165618", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b94299c95f6f3fb6b0e35433232e4e4468d1b760": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ad833ce33ae2c4b47792c316325b01cae080000": "0x6c28acd0770917ad6b838e8b3dca4cfeba208839b5459d90b7b375193da1674b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a935ab0c20e6349bc6eb43ae9f30ac2f42080000": "0x7b8441d5110c178c29be709793a41d73ae8b3119a971b18fbd20945ea5d622f000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52b419784a06ff99509b1b18b627672506fe92c6843bc19643a1cace1f4cba54": "0x7ecb2df664796fad819f35cdfa6870975e26bc0c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970092aa89dc07f1080415ce14e85cb02d97937255": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c4a8da8157683e753d28767849df4e6d216c079": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397596c4221758f875f51403416940e0ea1bc1755c8": "0x0042b0c4556100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900020887bd8bfafa35f1d5de3c18c6f81b0f8f29": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927ff5ebc0d4ad36f0190d6fbf8d774ca7d4acc34": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e899a68189ac4b743750da4bd8445f7f148932e3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d8e2e6b9118484134a1925813e545b37cb89102": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b300a2c7b89455cd5f3b4d3a998afd356165607": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e326e81577ca673de641881b5d997528ee246f20": "0x008aff50bf1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928935895e864b6a7b88db055924e01de9e030c42020": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f18fa0631873e56df496a05d96116fc39da12b0a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009276734775cde94eba0c4fdb98078db07d5fef": "0x00bec3a5b60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd9c3c2f403af26731d5349f2e8824f85cba0086": "0x00b808f1f31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a3f746d8fdb67aa729cd740d720c4a64ffaad89": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824306d6ee9ea1c648071973cde4669d95955d496422": "0x0080e03779c3110000000000000000001e99be1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ed2471e25c381b3c24895fceb399dbb4f319d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773a4bf5507f57385118846444b38bc10eedb7fa7": "0x0062b3e8e00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ea9d00813f1ba972a361ff2d3761d2a396fb2c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700541ab0a813fda7012babe7b3378441432f48e1": "0x0078cdf9a5e903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6694b3bedd5ba593526ce5e1d6f5ce899ce70b5": "0x003e7d663fec02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1677d96bb82668bb188ec71498db5c0c0c4830e": "0x008ad235945100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0298def89745f03113783ad625933dd7732fd69": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddcf77dc7b6033d7330a9d9c3bf666cdfb86362038400f4776da8dfdb03ad8c49": "0x008af2eb1b57b4a591e08cd0dcb93b0b0978053f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c23d4e5d6b3b797fe085fb0a3bafb7f758da9": "0x00f6ad147b7600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009957a264dfab5c3c7c572c1a4ceb8d1e1ad779": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b1655ab727bc613b0cfbbfd2a8222a17955ed0cb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cfe809074cb2f767285e8f0bc8e2604116c7bdc9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd125f7c40e252a090871b865aca471f5cb8ee01": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c59488b8c7a70a2d91b288b43f0799a001b1d26bad39fb4e7ec5eb73fa0482f": "0xc885efcdc3b5c736b0407b0e402b5b842c81367f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51305acd413305de3e529a2174cb68ec1cb5060000": "0xdee9d01ef9ae9a28b5d1ad92908701b2eef4b6ab8dd733a2bc50fd3f73fb4b6300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8af72e08affdef4b7da68950bc485e933929281781fc12d524e98c8c1e90a41d": "0xf61e40add6b7b887ffe8792aadcb6433d5209a4e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397032f6b944721fd338858bcc0e323d9afe77e0a40": "0x00cc2e5cbc990c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908c58b2dcf43c4505526af8e5e067bc08d3d0175": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928954f5873787daa1ddc97272e9f7fce534015f4d19": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928973213bdb86a2636440bba625ce5b570461ea79b2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513953f8ab8a916a327cc230d831fa516235020000": "0x2c1679ed3eb12e0f00ff6e9e42f893aa377539640a1519abe3cd2e02023c125c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e7eaacd78e6ed0bad7e6cbb80b10d34b4a070000": "0x2ee50c5aaf279bbec8871d5468131c9463d590e48a5a5e12a6ebdec60cf41c2000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd0cbe2eefa616252e493b03b5c2dbb9060784ff": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0ba2bcb31e7789cf711bdb657cc69526bb9a2f7": "0x00a85d62653804000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a8ead39ce1b44f37d16e98496441be79018e910d5f58c0fa1518d8fd7749550": "0x0092dd784a50e356b9e1705dc780fcdcd55d78e7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000df35b3d62b94414a010b9f2fe6a1489b32944": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec705b0199b23563c3a3a9b5599aa1747af42eee": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900290671c99ac34bc7c8254033de25a938d4fafb": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a88f54595f9543cedbfe0697532882ae3d70ea50": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ae7dfb217953af11182fb68fc210c9ad11adb39": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970096746df961fdae3247ffa893802d1cdbe60e86": "0x00aa03ee74a003000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c673e696e12296fd3f52e0f6e354039467b518": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b5d5685dedfd298695086da41f3f0699ae9d82c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ecb2df664796fad819f35cdfa6870975e26bc0c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289edbf4187931cb3d852b762e5ff28fd6af6b761c4": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c5d3a4a84a2d404dc9828428180fd927dcdbc896": "0x00003426f56b1c000000000000000000cac1fd2d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970097788b27b144f03715621ac2de4aab5b94c158": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bf19d44b1f516ef06f569b5d775ff8ee57080000": "0xce78603c8966932919873970f15729482bf020697acc7b2fafc031cfc9d9fc1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895af08f5a0e43a3587ce7c8bfa21e77082e559f37": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a8d70c0692ce44b04c5ce0a7e77bcc6a0490766": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512972e327a2b9e8db1255cc4c47aa90591e070000": "0xae0ba2b9eb48ed60ce02ebd80d1632e1efee027c15b0823e4133d32173d4e11100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d48af0a9782bce4b43ce6864a1c9e32e5f47c6c": "0x0090e5961c6800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749e961c06237fdc4bb51c48813a8480e75701478": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289143365830ba0c2a2aeb0549cce5107d484143877": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ab94b48bb0eb0f1f9d4f3a66302af5c1406c195d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa42d5acb3d55990ce403d714e77cc15320796c9": "0x002082eff9af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289029e46d21436a8e435cec948d8a0a5bca6f19b7e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d0eb611e8056e7061e0acdbc497eca0db4292af": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dab307d07dba5375eb40ac1f1b285c2d8307b03": "0x007ab0403b2c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7d61f6573db5f748e402dee14b0aa70a1a12288": "0x008ace1a761902000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436314bea21ac7c7c29127ac20b508ff8d430bdfbc": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976115c56329f345ba42307b2769817361a92029a2": "0x00343cfb8f0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893dbbbce710fc71eab5fd35c40743851ac5f08407": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289afefeb0eb9875074ca2a2d508eab621fdec459e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d646982089831a323228bf105965a23817d28308": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e1a9cacf28b0e0fd619a5037c231047c3e5aedf": "0x00ace901606903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397635954403448b9f55655fd5dbcc9675e8a4b8109": "0x0000851ec43c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7ef6733ceb972d95d74368fe24b511512ae857f": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890023772fedf1a43256e6ae4c227b6dc05989f814": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002475878828a236151128f5af451fc3c1ad194c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900da52ce7a1d54e078399894b20f3b4c6c99ebfe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289286409bf413131c1bdb5c2ff95c5f8d7379c5162": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004272a32a2ca68c679f25fcd14ef02cd7933a5a": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928970a5643374c28a958b5dcfbb68a36d3fc31e2fb6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975daf6d0f17ad397b6a50308bab72dba0a7a74249": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007ca5c1afdce9618c0bb7d86c2e1699fe935581": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de26f1171b9708d791cfb6f144d994a52d30fa3ffeccda0dedebe6b17b054c071": "0x6d4b9143dddb89e914b180b3cd9e55bcd74f7c9a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727d8519774c77bab85031463f236c702c7ee8bd7": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700228be11366ac5fe81770d49480c2a190a9da08": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979028b660bd9fb93c44efafa5472407f82108e5bd": "0x00743ba40b0000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b734daf7517c7a876261626580ccb6bef60defc30724545d57440394ed1c71ea7ee6d880ed0e79871a05b5e406": "0x5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799ddd5e2568b6f88f4ebc3d8025ba4538c8cc8ac": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ef59d6d8b11b8b7c23f9d6ab5043237a9ee8f3f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a4932280b37de5fcec32232fb378cbb24275e8f8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752a7310eb44ee058ca1a430356defa045e4153b5": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009e02b21abefc7ecc1f2b11700b49106d7d552b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eacd0f6481a7df06b3af2c13b2a185316803eb": "0x00725cb5f62401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ceb2c93a77979ae759ed4d670e15b5674cee870b": "0x004e4748e70125000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897735e8af95538d6b436e3f63db0233b46f23aa08": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ebf156bbed4f20662ecd3634c447e7f44873c8f660622490b044f93af2e544b": "0x3078f22015436d621062f7cc8334774eb5685e97", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890086eb4edda94678c1d7894533072af28e6b0faa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f721bc7693c0742843d9d5180715178b81f90f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9f92d067202d78d58b86cdd2ff7efcddc4a4839": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f40c3463efb7815a2369d56492cd4a8202033720": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfd720d4cc1aeaca059c466b41ae0a55c652b8a1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de805f9ae6f23f4e1bd98a26b1c055d0729755e1fe4c913a713c7094ebb1e362b": "0xe89e08763debfe1abb6bae24d4bc21c91150dc79", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824323803954be1a85583e00ed01ffc8d232edc87e1c": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900543f7424da419242560b6036cd8a21dfa01c52": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6f372dfaecc1431186598c304e91b79ce115766": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51935b2e4ba800da23c655c66f212c9f5a2b000000": "0x1a8ff393032bfe3802d48f5ae53e9cad36830d2257e79b9acbefaf8f188e665a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970569baf12b57be4808c0539b9eb6b34b0fca7466": "0x00728e40997870000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3182c6b3fabe222b3bc13c912232d037bd765d0": "0x00e057eb481b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60dab79d7d7d4e55174c0e747736025fb57423e997131daffb65509d9814ef11": "0xef30979a1e72cc99c93805d076c1c44eb90ed895", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cbbf87e662f48e24c47db88fbe9af500e10d05": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915010e04d91ca1a9374a0cda2902039d362fbedd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1d5ca8c8cf354b8d5ee91f6ed61f20059ba4beb": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d56216e1ef2e122893b8f8057ba5af16febc4e7f977ae6d7148bebb5de8eb3168": "0x4cb26d4abc32e99e107f1cfed2b07bbadd425b79", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710fa75506994a9d1a03fb01abb31135d662a7086": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0571e067930c59f974d3394987bf4392513748e": "0x00e4f2bb672800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5193cedfa7e13a8c977a9e790f5f36629d62070000": "0x744bc15cd7e338227277c4d4c382389582cbc495365bb80398f94558b84f3a7000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763118c5e7a405fbc2fabd7d2b03588488fa2c602": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3d8392d560d174203e7c080f13421c5aacf1314": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517dbe52649ee31c1e12283e9b7a0f35df1c060000": "0x84a8b7fd4d56a3a955e9b72ae0b793335b479fa4e77a9f95c87d51f789de5f7f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d089c56451184d40b7911f91ab7f12d07ef6e2b1b4dc50a050adbfa4f8b58cb55": "0x64465f1b98dbd0158f23e0dc0b1aeb967e1565a5", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514e4f8a045839d496197d319f5f58f1eff9070000": "0xb0d20e5bdab9012279de331fd4061f6920e24d5c768754518be3b26b193d496e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51315a39711fedd259cdbbc7a6f172371b37060000": "0xeee9d5d071a418b51c02b456d5f5cefd6231041ad59b0e8379c59c11ba4a243900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004bc0521cf3e6289217adc9ab50722a3d2f6849": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ad80a2b3a1b573b0a7a15668e37f08c848000000": "0x1eacff2415e856692ddc43aa3dc4e8f965353af039e2efe4a70d6accb6e7662500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a94771e7e73f9d8d6e880cfb12cab4e9573c45e": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282438ebea2c1deba5a629af27b0c8383113008c8ef43": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978961f4e5650444509af31c4a7cf2a0924f224b04": "0x00e415ad7e2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf66f78612884363c0f231c11a33ebbd6d26ef82": "0x0080f420e6b500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890033f21fa9aaff0f79eaf1759611f0d8c60f7b03": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904e38005b0c3a9e183c22ddaac3e074c689757de": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007523b9bfcc0c822d57cfd89edbe777e6994c76": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da255df385c871dae02401415b3a097695741863d9f4fa6c086889b9d14a3ee69": "0x00998aaa8fe8444322729f9dc9f32b41cd006bbb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890055ddcd8b7423b0acec3d0de6c0666b06c14e7c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d228ef1e58117a07783f0c17ba1faa7aca9516f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928912f9122d6ca5294f6817ae79a9c4634a07931a85": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a47861cd4c65225b1e00284090503ce41023acf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970093897717316daa87a594feb918503d7adb5fb1": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bcc2b45c57fa511a18cf50b5d54cbba9aa6cfa9": "0x00827e537c0200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d8bfb1af1cd3b81cfe14c9fe2bf6a51a55070000": "0x3c7927e2b4364f8ea6745336ee77f9a77bda0e4dbe2354d3c4b9328817505a7a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd82afa0d1687d166c1c47e1cf8768ce194d452a636bffbb2545d06e5c2c51143": "0x0054a7cf7c027ea72ac2b1994d1f6221539593a5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0f428bff6a974aefaafb3d14930fe63699a4bb0": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e5faccf1d24fc1db3347fe4315bb7d00bbc45b7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d844d7741df7f47531af93e28a1bd1912a471977cc3cf5666030936380715054c": "0xf4487a0a91f3c75bb9631fe6160690d9149ed853", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b1ec653cb5acf9b5e95dc259928fc766d0ac22e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d957478b19d8fffb6c622003e411a99f96c42301": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b60facbf94a85c68b5455253564a2e60954f70c8": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fcdd5112170e4d994c41b72915dc50f9e4000000": "0xb221f3d33adbabe1695b6def8f9fb3b30a33c9eee2e7b024341152d5fdbbe23300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243175a83f4a1abbb88f6facc969d669cae9f48d7c1": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977c2a982679c5d64e845eeb58f59af38459578b6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a2a23436d36970bec3b5da3286eba930a3bcd38197cd3b791397cd53cd4dd60": "0xb6052a08ffad405ce2bffd714c580447afe20c80", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51847db6cf04045e4ed33970148934be49c5070000": "0xb023d129d9a0cb9490d097dbd3ca947d4830d3a6d7e0fa9975ff2789d9d9735200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896adaf97e46d6d7aaaee6698cd764ed2b960ad5fb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e04a97005acf858ce1f991e18fd742c98422d5b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d0e8e4ab292f43b95ab94c1014d22abc9adffd": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c65b45c6c2b417a7bfe7a1f164ef12b53749fb5b": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aa6eba795fe093d0bf965c9115187ca96d080000": "0x74958c765a261f7746221a02d4616939d27a21837dbf876c79446f13711e7b0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5fd1573c5cc41093c6d0944a40325e971771b9132ef47655b4c23bcf988cce00": "0x4a6a90222087648297e923b01d86cd754a7e7f7f", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22012413e01a5b1cf021dd3a5b14aaf65ff97116880363686fa7493efbe9f938": "0x00c5229fd8a631cf877622f2e37af6eabf15cd99", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001264aae739aad7299ae9e4154d598c0419f226": "0x00962d3a03ff0e000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a608801bed3a876995532ad14fed513fe1040000": "0x98e9fcc2871bfd309e2b7804dd699f1a9ec889d70b71788d6f19407df9dffd0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60afeb2a1bd8750a849bc9a851a3bac0d708a882bd4f2c5916ae0b714b4b5f00": "0x7f59fbfe6c2cba95173d69b4b0b00e09c76501fc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289116812f3295d2754012b63805ca7f89226115950": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dda6898e71868f7f38396c71107b01396ad4c36a": "0x00703af7eb0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970005ffdac0973574e3fe91ff31b254fe2fd08acb": "0x0026dfe67d4703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771a3d6c54338788dc4da94e34cd9ad2f1d89d7e0": "0x000458e5341b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956feea6b7563f20c2d2dbba65afe424fa39e68b5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14bb873b383aa7bfc47eca28391ee5482af6bacc5be7ef49f6edfcd7b8be727f": "0x00c6ea84064e0db68bf36b61506bcd3f4a48de7b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289594a1a912ebf1023bf9bf1b0e77d6d40b8232323": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ae16f3f5c84047aa300e066774a1c3001b50c35": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8af773cc899e6beafdf0f125cda8cc0b24b253fb2d856db1297c8bd01d762112": "0xb9b7ef4b7a727dae1735e3ce35827316135f3210", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e69986ee1df06458380aeb694d42e5d4b4098": "0x000467eeed0800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fcfae0c7c49301fdbd9e1f31a5e09c9b80080000": "0x5a9ae1e0730536617c67ca727de00d4d197eb6afa03ac0b4ecaa097eb87813d600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d063ae62f76c019f22db0492b9e2ece04dc8a6c37532cee44cf1e8a43da760530": "0x002cbd649b7c80d1c0b018deeb64f6836e8552ac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c65ef40b6a9a126951a17eb84fef0ff99d54de2": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee41bd5428594191446fef91d5b0de95706ad49b": "0x00202346c98400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a951a1bcbbd1bee2cc35cfd96dcf9d101e630c40": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786821570ee3ec4bfaa2e2ffbbf16ee4f61336dc7": "0x00f07a75c0d001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738f438c88c8c43562c4ceb3c0d7b24e11c03b708": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b3513da99c0572a510334c4256b99ac3a8eb72e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732f8dd495c7da7c59780a4fc381e45b90a2f891a": "0x004ac18c1b6500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cef45cadd1e590c243490ad0c0fb9bd0a47d07c3": "0x0020db87b1b3030000000000000000002788fd0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0a78ca841d922a4254e8957d62198a4425ef314": "0x00ea941a6c4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e3bcb85f93385dd35ea005d6cb8ee5e093657f39": "0x0050990588790500000000000000000081ebdb0800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51946e2fcc9aa3167a3e545f4862e4762d28080000": "0xa65b765fa2b4a31d06732e463b6c0ddcbfc615ec83d94ec4570512254b6d0b4300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2b429c8428f37654b553ea0aaad267f8c67cf82": "0x00f6d259bd1500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d38e00c10beaa10ed77f6e574adcdc31f1647e56": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0c02861db2e67ac0e487fc765d3ef8d30e65824f780d8406b00300c078d9f6f": "0x559bd4befa5d868ca380a9928ca2228e3ed26ff1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5a48a8500f9b4e22f0eb16c6f4649687674267d": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f1b8ecd32d89c484ec8ad5e216e573c03de39b0c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289465fcb930bde0872602382aef73fc393a31d8122": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970020540fa863f29743c6ec48150a3bce97706f18": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970014f112fdf769779b38ead59b66f955dad1b147": "0x00c01cbc746703000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddce9c106990ee809fbfa94214d6a5824b2a4c9a8eccde773c7de16dacc66d021": "0x9a2d3f2f6d4a3fc6b4e5be57fa3d896b3d7e04cd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007af51d441a632cbf0b4ec175e61332f28583eb": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b54344f31910051ac875f62234bb7acece040000": "0xde462529cab3f839cf03bf49a7e850013794fee8b7667bd8c3c15469b802d02900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51287595e668d85daeaa1fddd3a6a331c904060000": "0xfa9066b188cbf62e3b2a063e5ffe4b4f92f8e287b7bf5368fdff1a992bd5285700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514113434c70ef8ec2ba9fae8e43328d81bd080000": "0xda25ab05eac156cf1a05e04c4e6474da8d31e104f00b2e006dc482e622165f5300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d24652a0007675be75ca678be9843f30a5080000": "0x06350b5634bf72fbb66298b193fce9a5acbfb564712cc3594a39dc051a03985000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890088f742d8a320915da103114ff128fe472c7cff": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d90cc6b617586ac08515c07e6297fa4a2010000": "0x3e5ae76a3a9b417bf426cc6197998bc4bda848e6f01bef81749a51af89cf403100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731d04a32f22022ec66afe6c2351db768ed32b873": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891de627e3faf8e64287bd2152ca027e4eff582790": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e0c4d785244c2df4fb88b81b2ca0aa7411a6ec2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949818d5fe1387b70b4b7bf57a64f7c86bbd15ae2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d163fba2398eddb0b956aea50e711358a3a0406fd1401fae031331eb1dbad491d": "0xba747ec663ca7239cfefc4be89639c3cff6da31d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9f6de8445d99ef74450c9ea88efbece5f5e4d06": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897009eb50d01c3aa66f09ed1b9d675c6edbe392b8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890082edd0064f00c679183e5c014d3b4a77a4cc67": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289487bfea2ffcde43dc7cb20b5cf1f84c7c836e917": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf7c0865a0dcaaf8bf3c5641e82eb37c690d5024": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6750cc4f1e3b72f3b7495883daba0c156f9f5abc93650f2153f2b99ede82f08": "0xc8f490959275fc91f0bace6fb722639c4924317e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f61b2a45875ef1019da9bd2353572f00935d163b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e4b5aefb88bd749426b9a4bbcc09a3e9760493c6": "0x00000e8308e4090000000000000000007744011000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e643779779aec00285eac62b88c8f926c6bb1c7": "0x00706f96a68602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8f490959275fc91f0bace6fb722639c4924317e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928937356375fca1781c398d3a68924bc6e95bf30ee0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a0bf75b9ffc770e921521c963d369ac457000000": "0xa814b8d83478b845fb4997be044588f4970be5507f41cdfd2c57328cbb83224b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd315db0cbeace9fdfa9b1fca41d0c0918f4827b": "0x00fc717fa12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1c778ab3f6068c5583ee0df394fc7251cb00fe3": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901772953ed3b69349088ae7824c649d6dcd0cb1e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f352be93aa9f68a7c666a3bb280ab2e6a69c5d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f00a83c85b0a5fd088b7ef7cd5b4910ade729d03": "0x0080ca3961240000000000000000000069de3a0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a07166eb5793a0f9d60a9adf056b7e4fdd2eda73": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b14c0abd57488f6c66fa299c0b26cddc60da9367": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970092faf23a9a9c66a7d8ffd3163d81d9f2bdfe56": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894dce6b147ce7c96b3722bcf6ea4f86c98f0c3419": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433fd29fbaf2b2245931f154595c2b909bea226418": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243839c073864b9958f0aa84446302d41712b1993f8": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700353dc8b8425298b8b6bdf587c4f5631601715c": "0x009cb26e1c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397247927ac71bdd4d795b6478286a7800064dae9d5": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970089e3121271cf650d27633bd9693190bd2f69f0": "0x004072e62d2d07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a172d2ca38c6011f6a48bc781b2196b294e3f2aa": "0x00303fb7e18e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397949b82dfc04558bc4d3ca033a1b194915a3a3bee": "0x0076022bd77500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fdc926b0c8bd82c78aa1ce6624e6a3e55c000000": "0xcee069cef47b4e49b0d253fc46ac96f191cba7ca32e138122d6771e986c5ae1e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746a1ee4cb00bd3f064e1a02fd5c187e34bf4c97c": "0x00c4de2a7b8d06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397801aa940bf8ac12429d35c2cbf0a13b61758bd4e": "0x00549b94a59e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d4920fa9841558c97da4dbad60bfea2664f6cb9": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970549c3f578615e95f58e521a726269b6c1985dd5": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9f6de8445d99ef74450c9ea88efbece5f5e4d06": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ca2f86b5a4cc1d1f4c1c043cebda2d4ecb3f3d9057d9948cf2509dc67663159": "0x5f8edb714fbe38dad3e6a03dc61fb36fc4c37114", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966d3157036246be0bdb9bb8427313949b21a70c6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d5b0da867de47e3400367d80d606d08f064e5e8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397035e77f52292994008eeac5689f59457998f4f05": "0x00546f2390a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcae048bf18031f7f4781b51b36bdbdf12b0259c07316c67ca4e0859d4ecec353": "0x00f4b56df57e5dc51587163525b2d82d6a461e35", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928971fd1c6b80977e2763c24ce6b4dc6b863b2a5c97": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa961aeab33a6e82ee5a8f3a0c42c4f87f7068": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890efabe80d1646ec4d11f46d8fed63b070c11d5f3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daeaea210589babb9eb1cb9a7787994ee4b65e98906cc9d9288386fa39184a750": "0x9e643779779aec00285eac62b88c8f926c6bb1c7", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243df524873fc92acd043016194ea11dfa3276f7e70": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b69412672ab0f9a1e43b9d57f996f7231320e2cb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4c50edaf90e2ffff9be31f8cee70ba060b7471eaa81c3cfa1e7c090fb32c7a68": "0x00a53e3fea0109124613c5ba34c1bb2a9dbec3d7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9e65f133b90e4fcf565abb95408708f9845b90c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970019bd61d8a9591e1922a11b46063a887cdd935c": "0x0098caaee7b005000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098491a72d51c3e29f41eae6ef5042b4cbc6c9f": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96488ffc974e750f6dafae05a28f29dbafc2ffc1265661aed70937aba06d102d": "0xb60facbf94a85c68b5455253564a2e60954f70c8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d5d65287605d949dfc3ce2691b6774766a0d3c0": "0x00da6352bff302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9ffec62661647c99718d1e2783261291a545747": "0x00baff5ac60600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d7b88b6d9199cb9cfd50020218517f1b6cd0ec50": "0x0000a40731af050000000000000000005cc0320900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d605fd1308af1ce85bab5ba3fb19b330ab7dac29e01ad501420560f44df7e0e1c": "0xbf2c5698312de5417c17d2f7a0e7d8404a1ba62b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700383b93d6bb219fde72527528fad143dbaa7a48": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977732eeae979408d24c88500bb4e9166aa1616aff": "0x00d44d82b10900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702783580dc6b94e83db00d2ed655a809966d66cb": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909790fda0cc6a748b715bb2ecd8fcc012d38811a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5161ffb64a13fa69211688bcbd16b3d73d37080000": "0xc5778652ed1b557c3e495d505b76ba1c87934d040a014005468f199c28bfccc900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891eb3162901545cb116b780f3456186b5d1396142": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799cf1375f2c178bfc895cd207ebb142621e8b8ef": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae6916a981c3df939efe41a37045ba2c0b1daafa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ef5b46a23ae74f4c079306fb11198d526b28b3": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009f33693d1d3fc5b3eedc3d9d457f77059a498a": "0x00021044ae9920000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ee21068ba0c94e7833940cc4c8058e2dd41096e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890055823c75b1ea66d16f08559adbc70e19227322": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289231e4177e2d79bcffb4dd1d0e9b6cfa31f1acd98": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518085031f4a34f1dfcf29ca256dffc67aa0050000": "0x52c5195ab72c06d0793bc325a879ed2e1b3f06ba330ded7bda82855336bcf46c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e367a73ab3fb5ecfbcb4b118bf57538d1d4a77": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb21364d4087af9e9ce7dce7ee20233012c9d80c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755e9a88d4c79252e7340f1e7816098b755c942d0": "0x00e08a5e43ea03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001bfdf3604e075218ba10e202d13bcde0382ead": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f8edb714fbe38dad3e6a03dc61fb36fc4c37114": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397537b2feb029a7073da038c2b9bd34c1c6109a0a0": "0x00c03c208f5107000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b37489e03c48cf54cff37898b07f64402edaf101": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c71916faeb4697a163328b984e41cc4035440ee0": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b365d77a01b72223a89517b981d0b97e5e41646": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e0efc13ef5ef79db8c5973c8d1956a63e3310b43014dc64187bd50693c97631": "0x226c85b4f7e53cee040b6d2f45f4fddef5d97bee", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397225f3e472c48e708915cb4b24a3091f22fda52eb": "0x006e89135fbe18000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754036dcfa7deae92f0d948088690cfdfea648143": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d38e00c10beaa10ed77f6e574adcdc31f1647e56": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900410f38e2ab3f96a8303558ec4b470ad81dd10f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ac370278e27bd62fc22ca4b0a1f850fbd7b20e6fe5f4c55bccb72fffec80566": "0xc330c1abd1fa488ffce0ddc6527afc4106f122bf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b0fe4c9158992bf5af9256b0b4793dd6ef42711": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa04b68da0a4e5933340abda5c7d7007c51bbb2bc48067e8dec0ffaacdb11820": "0x9b53723ef104396f1f44a378a84a15067e11e166", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008d4360424c57ea4e11f07b95ee83d591570557": "0x00fe73aa8ecb1a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f40139d03ee67228f37fba06e187cb0944fc9e": "0x009e4397200200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397884748c1ba66a37845abd3cc3bee1621cff23241": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bea41f180d6d5a48ebfb12f9c497ed3ffe1453": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe222cd463ad1e79b057bfaf53d7865205050000": "0xcc95af78380ab7e33bb69e1239247559677f86f74418b395d790a236c751ec4600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db20bd9a3646907b754afe17589e1d08ba7604099110ec787dad89638e3436e19": "0x48e8806eba183d1364c2acfca72280c95bb41ec3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009c889dd86e5465eba2a0bd3481d2e89d4ac209": "0x000620e7ad0800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac3ac23542f9c6f42194b7e485335dc5f7040000": "0x3ce2e3348670207db72f1be4076a5725bf3f59c41fb13c5f6e585ebe4ce6497f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ea678d1d866f5ebe84e3830ddaa3df3c1dd58e11be510aba931d36ce40f8b71": "0xfc29a37e321f816145f9645967ab5e2a87d8b0ff", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a261c62ed56b0176947b6e54f7017e2843090000": "0x9232d67619fc452fad6b32e2bf06d6e1265a28c09cb6e10bc48b971092ec733c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e05e059f95a160e511a4a2c00c70031f65a84dcda52ed3532f4e8d6959d395d": "0xd7438a2461c64335a5c736b31be6a2506be76d10", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab255abe36663fccdba892c4ca3bd160bf845f35": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970006c9e7bec9d239b8b08a48c3c4a0ac7dfca848": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4ea4230999370bef2b2f92144bc03c9511338a7": "0x0060a0b2cd0501000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289746aa9ec270bba58b97a30b5b402efeaab86bd28": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a56a6f0449004c2e91b73b9e3c11db59df060000": "0xa4910e5bf0a07ad0b3dd37d04aec0eafdbcc5ce4c96e7bbfb4c332a3d135db7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243bebb6f638336fe10517a0b38bd73105f2086690f": "0x007045af21f501000000000000000000e2ea2a0300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5175370025a291caba8301ae2b92e4319b16010000": "0x0a6d7337f0454acdaf58ff349faf36febd6f9dadddbebd1198919523b91f6b1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2ad5daf9b7852104cadd134f786faa798f0387f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397027ed05be029f65a37ae646f349adafcc9758755": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712ecdad9268108d4cdb6c21da81e447ab12ad84d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1ae1c475ef49e628bfa5e4e09e52fae00d6b66b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5106b29252d7251aaef654b255941bee5d3b070000": "0x5e4e1bb00487836ed9891e040019c477ec5fd483ac46cda73b62e151f31f610300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c02897a2a0d8caf336a1a5997db294e39df614": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df586c86efdcf8add8219c7c987a16d25e39b6ec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f65aba8ace3c2b4a36c14de6c24a05f664274791": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e86113466d232dd99103281ee6da6888245253e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ee153ce83372a6a2624bddc0f6f9b6235e85f576219380cd0d2a03eac704d53": "0x008d4e47715eb112c1ffba14275bfad41150a735", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5104cc4092dc50590cf5a303ef948cead3a0020000": "0xd249dac11030f2f8f76370724c3362701b312f643c313ac3badbce5d5634b61b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f67b3776ac1df6d0562b404d4ec62deb0cbe930c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003116c624463619d017b4919effc6deabaaf09a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397129631915a3ca10b9a159a7dc95bde0ba71682d3": "0x00488c227be903000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513436db8bf2d563cb5d2999a82809eded0b000000": "0x9ed2733809fff8fc440d3fb8c4365ac7a6a520c46ba4a2bdf94f107bcc5cea0b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f2072543d39c452e533542863875651ea030000": "0x000dbbcd4f4f6dbf3f62581d050c4b9e0f23ab599a59502df2e0cd0c8367774600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc95af78380ab7e33bb69e1239247559677f86f74418b395d790a236c751ec46": "0x00116621921d8a7b01706539d19d65ec48dc7dcf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003e3ea8f5c20dfa974948da91960c0812c09ab9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b3b6d0e8643d53b6b22807385fa63146058f56": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948d28e8123451e65d0b54aaccbf5f13fe4d3a162": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4c974f7fbeb3bd79a34b7e8bc789af96b8daf86": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513aeabdfcd033cbeafbe009f13b672fa0de040000": "0x47e503b630c37057023c04ea57149dc70ae19f186db24f59881c55cb61da522f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bff2ceb822e1217ac9e0b02e78e31a7a8924f5b": "0x003a22a6ba7400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282435d8e2e6b9118484134a1925813e545b37cb89102": "0x00a0724e1809000000000000000000009ab70e0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890041910d9e4c61fdd7759a2d317ab892cfd80ec4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fa4c6f0e3652cf77c03002677a72a46205e8f07": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781ed4c64b1809a7e859cc746ba10f8e777358941": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004272a32a2ca68c679f25fcd14ef02cd7933a5a": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824344401fb5cedde57d33b2898ee66cc263029b6508": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289029ecc9d77295d1126c333cb1e1bdf3ceea8d515": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938b89b94dc5dec100a23fae5b5140ffcf81c8b24": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897e5684f9a6f43932992d720d52b378fadb376732": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd7c282b347e54ed214e842158c7c36c99cac70e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ecb3d65993040d26944b347119eefa31f7bf3b4": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004deef731d0998523980400c6be915b827d4a17": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751aa47c803a20a6334e4589ca76642a68d3cfb32": "0x0074e3f0486900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f4400714bf70c32740d1b103553e4147c0ae254": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f42003e7c19b429ca0f6b9f0f75ae6c08cec5463": "0x0072dd4e553400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c80d2977137d56f3a0ab93f78e5c7966bc2a94fed331d9457d8cc4b96a43a2a": "0xeed251dbde2ca8d330a978ccbfe4758294a096c7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004d8fc7cad40c95a1d1cd38cbaf4a6c2a119722": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977db1094c1006eb7c057cde290791334ee99e4754": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f1f605aa47e882d4c33a928fb1620881682ebd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003d1907558997ed87601acc550e672ac01fd7aa": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24462de23cf247bc7779c3ad0d1aa31f3e45d434f5fd362e3a1485c533748205": "0xfcf3808986a5bdfbf72211debc42cdd72af74aa1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397151310c5ed21bc68b85c5c754cfcc5a7b1869cac": "0x00045a68c81600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7f164ab2ee6bc8581a0d06bfae3fb98e258b265": "0x00203d88792d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5192e04f4896568ee3610e6086de6532cb50050000": "0x08246355efbe8d86aae3451c75562cf542ea7ad6069576181ec97acfaf7a144500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003278cdde8afa055f7a54a0e928965df0d681a2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970035d19bc0178da96f2ad24504182733d90a0ed5": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ac9bc183534b782d3f6042cc77b81cb4656bcf8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c20dd03a784a16714c24794834e04903f9395a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773344288a3782ca4badf486ce54de2f6398d1271": "0x00f6a94eadf207000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b689184990829b35eabcf62d5dda2f2c5c050000": "0xa4a61e58337c41c96a70b2c906fd4ad346f180800caf880af2662e658fc6144100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002696d567f76c4b7a60cb00b1d95b0993fdcf95": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397123843545fb525c8e134c9a5f15ada6865cc3848": "0x00e0c03b49b506000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14a53177750a94e9bc22574f2f971d71b8be81b55d607c45eeb52d7a4ce9b859": "0x15b8f1a95061a20392e601bb5bb008415ba20ca6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970072726b3815bdcdd6c5fe51f96bee5bfd7ca289": "0x003e35893c2b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51252dbbe52aac4459ff0aa177f218894863070000": "0xfcbce9929e3c47198198c5f16c5786fdcd613bb1d973ab16eea54bc850f0aa4400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dd4dfe0df462b5c44aa84b1edd24dfb1d0070000": "0x46b90d1f06bebf05dd594186ed002b546f85a4e612d060ce43fd0581197fa14300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5193e6efe3b7697aacb37b3274065d7317fd080000": "0x42cb52bfcf607025393c55d84cf361775c5a3914b69d6f78c93972b8eff5650700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc23e44c4eae7d243cd5795c4e25170a40cd82a5ce426bd807014d7c0e4793872": "0xd67c0d69691f9d012cf1fd44c5ac23c79cd441fc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f1de81781e8bf83b57548a1ad3bad66a16c4e01": "0x00e45615d51b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ab7d6f01cebfd4f9fa58e85fca6ba6a50e4a2a6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a9807e6a10518c24038521c00541af1e0e32a052": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289173ba35fbb37fd281880645a2e7f8e18ba38de0c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893fa2c79b96c7e30d5fa1f24a81a84e10aa336ae0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e9f9b1decdbf877d13094d5b1944f5a982040000": "0x528797c0df02524a8804adb5101bd30ca763253ad70423368b4cac159975766c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b0d433e9da913b17b4d0dcb6050b1f24f0050000": "0x16e7952efb44b46257327d0d81cf6298ef98eb5caaacc783c082a3cd47d0d22d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b60facbf94a85c68b5455253564a2e60954f70c8": "0x00901ec4bc1600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f85778883f087ec5224e53df0599d03ec080000": "0x0ca516bb62f4ab81eb6d854c7f11abc68f0a0dae8719a1dec67ab3648c8a170a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5070438c5a597c4f1f46a4fdb4a1b5a88f46b37f1985b15d8a6daee52670fc36": "0xce8a0915d27d4d3295e8b67c593d3423f371ce7d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5175afdccac4036b107412a3a48c318d5f64070000": "0xdaa6241ff8215d829ca2e362f944ec72067791d57746cac1baeeb1ef499c690100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08246355efbe8d86aae3451c75562cf542ea7ad6069576181ec97acfaf7a1445": "0xed089a796d2a81919e46643e7c2351aead6f1437", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef3190039aefa5914791dab9d5b4d019b0441e14": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a670d24c5fe23dc467cd47ff9b8b5fb07369dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943c8ec1ace6c4b36e88ea5b6388c20ff3f13b19c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3edd53fe4fbdb56bb537f274e8c902fc65832f4e053d0920659caa7459f9b95c": "0x00063eccd46e37c80e52b55e9ff2912afd8d99bb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df05f3ef3586fa4012fc8249571cf84792d3dd1adedfa603f719edba2a142170e": "0x00b1a22d149fbe630c3f18a01bd593618e1e2fdd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a22fbd442e50f1cd5ce576ca9a6d917e1481c7": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824320766f01d859f1ee11e14428d9fb96bb1ebad946": "0x00900260406909000000000000000000d5953a0f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950d30f8fc7564e1fd231e160169f19e864c3a641": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008550c3b4af1fa7a4503bc9e55a8622f213138b": "0x00ca73a98f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ee795dfb870d57cf366f358e3eb41c40544313": "0x002e33bd1e5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b655867ee164b797df4a199f98f745757630bb0": "0x000a31a56c7600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a56f814d9f170a1c285817223b072626b517d099": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac9e50fa5a78b072c26e33e6ac2c8e00fb2a22": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908afb83c6ec32222be7277238e78b8b768f47ad7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51220cee30d447cadc277f082608b896ec71070000": "0x48c36a6ca9bc4cee5de809eb648c06c25900abb5bf37fa09b1e24435d4b9602900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896115c56329f345ba42307b2769817361a92029a2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de6890223c279fe3fc640de86171ae7e6f9edb04203d5a8670168bb725576af62": "0xc094df9784e3a409a27f39875a85d47fb9d6d520", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970025c20580d7ce0b8996c9bc91f5935dc031f3ad": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898b655867ee164b797df4a199f98f745757630bb0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6d9fcefe1a8f0fdc1c52c8f7a33d299be4b4e67": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890e696320539189bf06f28dc0c7b7ece1880e14e4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51502a23c90e630d225a635766c2cbfa96bb070000": "0xc2d785f6ae83eba091d04a43b9dbb91ecd9862ac20b70c46ebed79f7068e6e6200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c72c867cc89ccb922cda5821ffe7f060d8603d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397810cff23a588aadac06cd93b443a12fa3a78affc": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae1595f870cc27a34374a6b819a554e242997efeb760433c6fdb4372c2f28204": "0x3bace2a685d8d73c3e60b84bbc34ab782f54100c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942b1d63ebbc6ca0cc4a679fb341c78d1089702ea": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f157199ac37e16ec1ddc5abacdf03e91d000000": "0x1a7435849cb3175839693f7e078d1fabf90ef3fd38df8c50dde7fb5c8826086200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d29fb1d3724764405fdea290aaba4637eb2a6d72": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c6f2351c0d351af08be5f54ca624f1a12417531": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a496c36bc39f1dc6d989db28d51c55c102555007": "0x0080dd4bf4ed6d010000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514fab27570bdaac17568825d7ce6f106977000000": "0x6cabd36a1a0833f843b41221a584ee3396ac4df33712dd8b96f6a5f0babe415800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517d64c08958d03208cd2682ca0b47d45777070000": "0x0ac370278e27bd62fc22ca4b0a1f850fbd7b20e6fe5f4c55bccb72fffec8056600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756fa0858580a1f355ef357c2b909915f72c4b626": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7f440d4c45c1ce7a295c788d9cbea9ff627cf8a": "0x0024a0d50d5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900684acee25e34f5ea3b944a58c5e23f922c14b0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978dd535c62fe25e520fb4becc53d19d39f5d798c4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900185a694e3eb29e58f03442d75a8f59479ac8c4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891394c491173702c7bf42b7320853fe4ba3630d9b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c96ff8e5bccba1f29e17561d2aaf59cb6e38a9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a952f5ea1b437ae5ea5b6b877340e776124812cf6c399d2fa07ed893fddf84f": "0x57981d9691cc20a7ce7c628f6d7b1ab82fac8607", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda54c31637509fec9b39b34a070c98437c8e78beedd7eacdb46aa99f41ecdb00": "0x7db1094c1006eb7c057cde290791334ee99e4754", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51451b5d84a143e596c60184b13b45e5362f070000": "0x0a1f26b375e08d87252b12ede342a0f5062802fb2f5aa45f1fd87e50ce68645500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890bae10406f82399bab8c8713aa8f5e0c05c98d84": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5153818d1ccbc0ed4c506a2875694a4a508b040000": "0xa082ef6765a3eef5cce291b2507c5ac3d6ffe5e10ecec2525d1554b8d2db144000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c527becdb446083e54bfcea69cddf296fe030000": "0x665bdca7d60b85bf96de183ff4175d4278494dbd68b9e72f21b142a2ea5a7e3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979311235dbedff7b53b7ab20dc27a76aa9708bb0f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981a1929517b52ccb71a63d31774bef3efa6d080e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002bbfd34859c09b36b907c0bf0f3bd0046709c1": "0x00a25665ab7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062340e032f69aa1370bbe8901d6f4e40f66b60": "0x004a5eddc34200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e840d7b43436037967390c763c9b440c88020000": "0xd86a0dc8d062ca62c6df695d1a7afa138453cbccbe7eb0a05eafd587cb68905e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ffa848fac4488e115b3c44b86a0309a386030000": "0xb2098bb66a2346135b378a64c3de1d2bde6c4199cb7d805a970b4f6fe9deb37500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de828c1a8caca7d6b13de01babf4dcff99beb7f0b6dc743a355e77cc24614855d": "0x52e0f7339c1bed710dbd4d84e78f791ebe2df6b9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f38865dac042397b42a80a2cdd54eaf32d439754": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970052ff8b09907fd5cbd63791a01672362a6cb075": "0x00f41140b8e601000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fc976b60a67ac88d018a0e5dc940548364060000": "0x3878ca973b0f31e3c7a63bcb0bf7229452ff5850e734d3fcf3aa59ef2a6f556700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbee56ca36a0a5393bf9bfbe5d2079e31d4359d35388df257e23793c7b195b855": "0x54f37dc277ea0ae185cc45886365f99889a9168d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970011f97b8a9f4902288c235478d2a5f3aa060073": "0x000c6098159ac3000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d40e09074de729692e44ec9b276557f6486183d7195d87ebcf77eec6bbe921730": "0x7c89a2437b7cc02b0bdac206ac317a8a1e7826db", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51afa3e2b56ef09ea815536fc1f119ec1d18010000": "0xc63b6d81d7d307b9f4464304330a840f5159c78a804dd344c5fcbfb3da9aad1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e1c09312f5397c46089a6f95fd0424523eab7": "0x0084449cfc2f00000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddaa6241ff8215d829ca2e362f944ec72067791d57746cac1baeeb1ef499c6901": "0x2ae125582205e28cc4786f5e729d9a09608d7b27", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dff7bffb7fc240abf06141976d2fe0bf610edee": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fd474f8abdb347ec54b15cbca40b56dd2f2aefc": "0x00e4b0a9fb6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976503fe6dc225865a54dccca75e9410f53a35b137": "0x00fcd42ef94200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1d09b38beaef617e933f8c735fee190db1d0263": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf1e7d7b8b56e594e0294c5aef7a81b957350e34": "0x00d266874e4001000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bca0e2071d5f0e59803828bc7e0d3dd67e4215": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289110b0b10908876406b974a5ee670dfb9d86ca0f7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289719819815ba8d64ed7712c3005c8df49b2085368": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700729f3355fdf72962e9734ffa26ccff9e64c0ac": "0x007eed5f265e7d000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f97abe3fe52ecda47e997fb559216fd85e000000": "0x10b5f5141a6e5bb941902a1c358472374c98b36fe1352c5cdcc0083acacbef0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b4de57c216b2bb92151828a9335856f54bab03f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c44438ca119cb3f91dee8f514f435f2d88c338f": "0x001cc7f59f5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785bad1dedbccdfafd231fe1c96b3a9bdd4e2e083": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0b0d02d246dadb22f40133c2fb0fcf738b3337c": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7573ef29328441aba06fcbecae95383cc85a5db": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7ccfc66f0b7e76f786bdcaadccc5171ec82d013ab65e33440fc6c1d92c07d521": "0x4c638efea44e5b7898f33a7ac1773f4b7deb3631", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad03ba0db46620f77489393a7e62e598cd7ea988": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6816dca78be4303480a42b848fef6ffc01e4189a5ec4aee433543b0381c3a51e": "0xff3592363b611cd701ccfa565dff6d1de23dfb2e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970049a562169b9aa96c9327681444d541c8382cd4": "0x00dc5f23f53700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970010aacbcfaa53a4b19bd7bad12ea033d1377220": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700613989b259f1d4c333ae80a3e78e67446646b1": "0x005857a4df5300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513695b9fdeefbd4d264da562493b640fba3050000": "0xfe5711e8434fec36172075fa74d8168a95de0baf14c3d12430ccd97ac8b5d25800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a172d2ca38c6011f6a48bc781b2196b294e3f2aa": "0x00303fb7e18e040000000000000000005e37600700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de695de55d5fb0be7525b45245933bef3b57b71fc7eb68c38d0611015c3c6f22e": "0x09d7bc4d2ce5b5369c16b76f6c6297b1c711b832", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e565ecb628a3fe2b055f178840bdd340ba5d7e3": "0x00d6cf06ca1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437da1f36b13c74e5f988f806da14650b790a54b4c": "0x00208dc1a0b9040000000000000000001963a50700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2cc16da9d1f7271475075aa8eb5c6667714426b8c41dbecf92bdedfa462b7163": "0x009e51b0d7a06b3a8a22ddc326e1981d417a8b4a", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd07fcba81f01c46a75c6f430ee4938322ddd3340a460aec133b410962daa3045": "0x1dc13ea429ed10d2ad98c5eb66d528e4875bf2c1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf7c0865a0dcaaf8bf3c5641e82eb37c690d5024": "0x0080ca39612400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895acaf60782e62269ec264824dbbb13f9e85d71cb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c0a288a91525460275a7b8762d2138207210ee9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74cbd10ee9e9e9f772b6c60db076022f568dd36388147e08a99ee3b5f3472749": "0x00e594def1a782c9f0bd4f6e5ad16cee01e380f3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de86782f19fa9e5881223077680101b2b99019": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397818c69a3f3bd436087ec101f0ff8aa2d3cd35e62": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969b8875ca9c33f7293ad4aec9a36577c257041bb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5125386ffede0dea6b09c2452277d3a86613050000": "0x9841d92c40dfe289a0ad0ba13bc970838226f9d9baf089655588eac023e3b17900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd245df4fa44f453b3aa554bfebae8f4310fbf8c4a5abf9da6c1e40c1f05a1b7b": "0xcb70a267c49250f5c85f0c4008046cde3df51ec6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a482566e63d032af218a8d65caeeda5dec73e4b4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e9182dc2b0264895724fdc38238d5a20a2904885d35ee292e2b810fa5313a18": "0x895607ffa297db864ec7da7351353618ddaebdef", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397190e7c0403a5dd4bd21d426d88b76b1d513d39b1": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ddef1f2b6433c7dd4d7012090f5049bbe4c0dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ea7272f84cfca9811d2103170ffe0dc551ed3ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002cdf90e124b3a929d16682b6683f198d65d9b4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4c28c57507b59cf24b2649003b9f8b9e7980ae5": "0x00667bcd2d6e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054fb3c10d0b0228569744734c66321e14c01a1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513d510768dc24e1383a0541343bcd6842f8070000": "0x522ed1a44f5b6302feb8ae1d71e42c6727e88c94f896f68d5aa214a52ec89e3400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397436b98f3a614079ad005b7c62743020ad3dd672a": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e899a68189ac4b743750da4bd8445f7f148932e3": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d7b42e27e2382e2d28e06bde9d82413906c6c03": "0x0024113bdce301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a42264114e13a067ac2baca439e9ec5df20c8819": "0x00c029f73d5405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b8cbbeeaf1eacd6fac6d3bc0450b3736482f14": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ada3c6fa6d06703711d5ecd225ce1839bc44ae0e6b9c3ef1ea241db8f668170": "0x5937c41f80fc6111e6703873f89270c60fe559a0", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e257044599566a53268cf75a6c20a1a2e050000": "0xfe1d28518ed43e08ee85b800b936b9111893813279dc718f4ed8c09bc407a80b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d261f0bbb3c232961255def15a8939e3e0a5f6ec619496d704519ba3e111a6012": "0x07bf572c47678e5141ace6b29c38e0a9995d7134", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ca8b01a535b2f6d01d9f361f86dc495bdb21d": "0x00c0a31bf09801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397782dd81060bc85bddb0ce7b2a53eaddd9f1f6aa0": "0x004c343ee04c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8fabd8cd6b1a1eb325d682e8532fa3c55ee40d8": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac7def1123c306bd08a5dc4651f054c92854a6f6181a7e5cef8a1cf45790b42a": "0x0042fc4e1015fd757f149ca0ad34f44c33b51893", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0ee80934b74c7f0f25c7a137a8a16e58e713283": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f619e5784802a7c966c46b12cbd2510ceb084de": "0x00e2ab7bb83800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515341a6446944f17638dcda441dc5c67dfa010000": "0xfab2071283358794145d6ded609332c49c186df882ee3033ff446d462ae9cd1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289822fd50f043f331fe44df12af8559527b4be8006": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6c4d3830cec539bb01d5209b79ae4fcc5053bc2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d9eb97d7b1c97639a6914e0cb56dd8e584910646": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4690257c528a11bd5b91364eb0ded445aebbc97ff9f994167142a74d486ba054": "0x203d2e2bf08a58c132f650f44e6db94b78097032", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c9b6f1962d279e00a886247793a794d16a060000": "0x92e5e6c84e9781e37eb1afb166eefd22687054c8bbed4426282077b19aa0e70800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511cb4d7c73fdd4375f75ed0e8df32337c89040000": "0x76a6b80847d39f2242188ab8488af63177db6cc02d15808fddf18668e2d6bc2500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397328752def488a9c3aa9e89edfb56cd7b4b56f7c0": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002b44b7211507e761721b71b7d9dd77b29c67f1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ce1296828e55f7bdd965edeb7ebf72bcc3050000": "0x622470e00c50400929243e6e9ed4c62edc88c1a4f7f70e62bca37c277ef3ae7400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5176ee277fab778cbcad297988f333339fdb060000": "0x7aaf0d5e96dbe960bf0a63df1183a14398d655a1bdbeda95758696f73fe5773800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e4d4b606ea5d17de20136f8e12d3521ffd48fe8acaf5325c7961f002b582d0b": "0x2f4400714bf70c32740d1b103553e4147c0ae254", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c78bf3b5da90e93c22b8b41666f8b30472358c1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289968bbcc804a1003e95b3150c50fcc25873e0d8ba": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511387b9468d38a338a532c826eb6d4925ce080000": "0xba274ee6e60ffddeb999cfb69b277133b404a7a81e7f2b2482cb6e390dc2f13c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896052ed2407cd5e04f17216d9687c289e325e14bb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a2fb944dd8930532d3fb08109bd7a46cf07a75d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977758d89177a41267dd2390262707faa602f4f2d9": "0x0066c90483c802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824354970d8d6d8f8dbe9c87ab9cab9057fa5039e4ab": "0x0040cedefc7d010000000000000000004b1f6a0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754368965237a390978643cced184c6ec51d0ffed": "0x004efde96e0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891bc24e64bd4446b8873a956a4fc1d1af2b798a2d": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d64d09556b4e737f932b39dbbe48fa4f67d862b": "0x00d07afd1c3204000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cb2f6197ace28dcb66d7c726caecb534a79925": "0x00da88e95a0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddeeb4b4fbcbc7e7e1dd19a2371c71951f820801be5e87e8e18e2e2291e4b132d": "0x008f6eb1f8852e3ec09a2a33ff19e4c7369ea37b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397671dd13509d95926af853a161e78b4ed5c8a37a6": "0x008c114007d103000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51198a56a86e1ad99e38491c17d47b54f8a2060000": "0xe03136d76b36804ad53f74d2bc7a0f9f50ebd9619a5746c20da5780fb739c33c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e173806d025484091145ca79d5d830f3d38b4f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a7cb534202768d7daa624051d64ed942ed546bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a1329847393a87ad4c25bb21ff093e1d4d050b3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a899ca042ea5de91cd2174dfe9e13233e9deafd6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514367d9f6b31e21e7d4f9e0191a1e790a21040000": "0xbe2b56289bd3fc54e462418ab4b49789b94f7aec6869f1c09af669e4a55b695600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005e14b50c77daf1b3fc6f12f3b4cf820a313adc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cee564d87985e3ef80e8d0cea1d8f49278fee135": "0x00e8addc7b5fc5000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899cac5a27e397ca42444c2d39af23bff9eb681125": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2f4451bf599ec52cece0a8cf96d61f350d4ab20": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ddcb32a75577e9a33c2af218bb8209e96f92627f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed4629967a1994b2f28b66ca0ad7d5f7bb583ee4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518a394355761ed0713ab00891fe8e85df8a080000": "0xe9c6d2f52e842646238aa9a4b144820f450c5c55b0503cdc92dcd302cde08e9c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d785378390bb8bcde9f1b6a663a8cc3258a92ed222602e3be7ed626051d6a8c5f": "0xd7200c399634a9dbbf59db9f48685ec22ea4acb7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d5ce5a6db3349b614aaa7f3b793bd57e8f050000": "0x40602cf99698212b9115e545fdb1d449d37ed001a3b8c4cc9fb6b890ba92c45b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d01d14e379d23d6a9b47e8886761d8e9d7e56f": "0x00ce84d3182000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397805cbf1fae3e810ed0cece7016848a677cce945b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fbf27816ed8612ba4477bed6e0a554a1a35fb015": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc6b49f7539a0bdb98f78b3089baeb861b9e71c1": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dde991987acdfc23c0e4e72c70d715794a052c4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900320c624958997f6d8ec1d130a436e87a1f0b0e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739634580a5670327b6f4f925dd85f2bcc2c44c6d": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f18ccca441625179b40e774436ba038505fcef83": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e3a98d5a1091e1c5589741feb3799e8a57050000": "0x3e5dc9bba6c0396f878c3258d641a53c41b0d9274a55eb4dcf59107924e3830000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397414f19cf5dbf026f6e069532c8c220b82239c652": "0x002a80fe7a4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0afe917e54529d9151a5ec682107da993d89065": "0x00947b88965300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c9e58caac08b868c221d0347c32a43e1ca416ee023125bd2f43b590f2c58e39": "0x000e8ad6492f516c942bef6561251b531fd7b10c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b792f95c5d535942270423c12a735beace8e36f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928914f7f1344ee6dfe20dd9d292c543e9e443babbec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecad80fa0ba008c28f47b446a99f7c401a24df80": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff4030b388b3dc8280c53544646159759e3032dd": "0x0086e2798e5c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f00098c1c1c81604a82b903cc34f91436e6a72ff": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e35152239ee9fe923f20df2f38280b32bc98d22": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890db44731b34934498c4853216a0e08c8d05fcb3e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289198a1bad80c2eac0fb986553955cfb5e30f464c7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce22e1a0a40b684163a37c72112c304dd51bee92": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b27b940bf01de20eca4abfd7c9bdb2304142ad5c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e087bc674e53b1b48ca0d8bd6691eaaea2ff78dc": "0x00a630de2a5002000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721fa2fd0d1126a88a7fcfae18f8fe849999a17ed": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a32c58cec6a3db131c52c9dd88d7e006bd18bb5": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51245c3c4360c9bf6c7fdd94c0a99f161e71060000": "0x929257d29d18a4c4a2ee7f6b395d0c1eb9cb7685ceac9624437674db49404f0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908ec4aa26d04dba7ecbbf121d50373ba1037e763": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b650393b228dfb785b07f149fb213d691e49b33": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006dd904124038280e01c52b465f2d802b3c1783": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978ab8402b3e615c292fe9a69a9b4ac17983bc875": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb514a98e40a66e5d4f634b9afae1ec41d58c659": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716c09044a80d3a419403362413241ea81d5fa78b": "0x003c541e91bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515dd8be1410d389d3f699d403819b0fe1f1040000": "0x4cd38181e02e880a53114ccaf987a6f51a10bc1d172d509bab6f7e9d6eb2e00b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e3a573adcce5735ff7dda7eba84b27809c040000": "0x26b5fe12119935324adf8e3434cfd8c42cc9ea717fde9262fdf37717b40f6a3400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900385543ba35bb319a9067f9c03b1a8cf917a6dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893dd62544630d94aed21653ed9ec15810cc759a55": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749aa20d0109520abd79ca28bdb453ba1ba348b3b": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397790a8706d0ae9782042de2a022125b746511047d": "0x00ba51b4360400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977967c0ec1b8b1bb821c84551ca7c9fd49c720a9d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db841bffab3688ea94e37983ff28b3288746249b87d1114828dc7b030c669a1cf": "0x668dbd6154064e193ab693a4f79bbbd06e107741", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970014c1efea175cd39fb686024383fc07374d6db8": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900939f839c289a1512d9859cfa8fb0ca0485a8ac": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daecf138ea1b459133e80dc71b736b388df75561d405dd1af13c872433b346856": "0x4185524e7b4ec8f909a435f4ac705f9348105b32", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724dc293f38625991044c976a3c99c358563f82d1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a96e78d4900cb5f8c412c1437b15aaf81f6733": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88fa1f44c372d28f74829f4304bfbd868e94069ee27bf338f6d6567ccf2e645f": "0x009b32198b47c8b8006c0c3483ba90a7fa18f8f2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972af8296d1272deffe909926d1db18ee418542a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a807188cf956530898c1cb2b0017428f95a3560": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbac8d55b78ea5cf2f5a7e57a51eee3f0074cb71c80bc23dcd2d0bd16620a6f05": "0x143365830ba0c2a2aeb0549cce5107d484143877", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e204f47c00bf581d3673b194ac2b1d29950d6ad3": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700710a76cb9637a974616f5f9295470eb4abcce9": "0x00461784db1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e3aeda1fec9c6242efa7ffc383b897f0e06d85": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700385543ba35bb319a9067f9c03b1a8cf917a6dd": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890129b205bd7da590c22b986f2fcfcb3079ee3d69": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928925dc5d102c1d282b89ee19709bab596db52e3d57": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a56106482594175c13790cc8fd6d99575fbe5154": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5165f2a832ee83c01c54f0fa8c767bd01db8060000": "0xc6a52590a53bad9273441f2e6a594885b7c567b8dbbdcebe3b40cf561eb1671400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e22bdca82b186c02ba11cccaeb2515d10b0a81": "0x00381c3a2c0400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515ff0e99a0c2cd2ddb21680cf13ba822774080000": "0x0c5aad719ec7f446020947e59a75f4ebcdeada5f14a43fd3e4e2cc7ae7ba005300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002cbd649b7c80d1c0b018deeb64f6836e8552ac": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289484ac7901a2de5f9923afe4ff67546525e07ce8e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ff44d535cee05fc476c35232eeecbdd5d5ec9b9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d4b6a8249f1ae3f967892d0187e7d783a49d926": "0x0082357a0a0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ac0f59c2846ff34619a9d0392efebc4ab030000": "0x7017fbaea2e43910a041dd8513d200c3cba7b6dda9f84f565e7800fad57ae55d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890047b7702418e3f3ac962feee269d4057214997a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d7541983658ca17367c10e4ad6553103b3a719": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ecacc2f1bf37e9b8278709b785922e52abd83b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5121dbda6c124645fa1d5e092c16553d99e3080000": "0x2a21638d6758619800f032eb67fd7943490c20b5ab1f8453d11382769447d34d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756be9656add1b07ddf587a25ca2ee79b5dded4e2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b71d05cf5cdf7a9b15b20b9aab5e91332c271c96": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d502937e1a131cb6646bcb72d521c894d4d3fb35f1da1c44058b7658d8d299d36": "0x0549c3f578615e95f58e521a726269b6c1985dd5", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5162232d4cb336d5f629559f759e2002ac1a010000": "0x028942b7e78c61e78086e9076430bd3c69cf08736f3e463d0419f0f12751f63500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732b2c49c595f816c6ff3852f983d77249dc9463d": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900da3fb304e2f3598a15b96abce88a619669935b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960f2a161f72ca11980c5b6ebb86a537e63fc2de8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fa4c4ea0ceeb34bf67c13be01e477cf0bc8db84": "0x007e15ac953900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f71f22775221b1945fe6cfa3c6550c7c09000000": "0x5c5062779d44ea2ab0469e155b8cf3e004fce71b3b3d38263cd9fa9478f12f2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a80a6b62d1147e7520adfcb464d6006483c2506e258d1bb4e8bcb057e637b3b": "0x4659d80655ac837fc7f48b96aea70518da7a9082", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd84d3591efaa337adb83215be213e18204dd71fe9cf356f72281a687c825356a": "0xfef3b3dead1a6926d49aa32b12c22af54d9ff985", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737977eaf6917d93704a3283bfe16d87aa5eb0717": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ace8953c1bd780e51bca97a0d5946b613d918571490c7a11e0181907e21a60a": "0x77c56ecfc21bf4bc66adae4898224b07a81b4efa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df1e9b2eae31aafa11fcc281d6d0efb49c7e12b2": "0x00da332b59e104000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be638e483b91290575009bb63815c3ffe36de43d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002deff295e375a68734582a3ed0f7786b7e92af": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894877170e1a23388f4121c72d6b8cee7696ab92d4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519d06cd94550a4be6a4bf1506c2247760b0040000": "0x4690257c528a11bd5b91364eb0ded445aebbc97ff9f994167142a74d486ba05400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f65a7c12c29867648798aa6a777b44cc3a9ebc72": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a5c6dbf8963947d36e94126df831a50df8eb6e": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f7932b29b98c93c7844cc0833deff8b0109f958": "0x0062ad4a2fcf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971cd62e399651ed8835de4be49eef4b5a3b190489": "0x00842449d35f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c95f72c8e52f3df1ebfe156e7ce75c2121c8d1": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5160150cab18958a39702a59e6e0608759ff070000": "0xee9be31704415170409d65ccee6fdc7149ce835a99396e1e471db458d249d47200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890424193a415ebc86ff650e3bda37c521c5f6d45a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c3078593afdb525caed7ec794de3cd88b917b0": "0x00446b11410300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f4b56df57e5dc51587163525b2d82d6a461e35": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee1301ee318ac92f4ae4254263da4325640a97a2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289652346bcbe5e8683ade954a0b4491a58809fb539": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5664b93ad268393d1f695c4180993e60c59fc3e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec3c0312d2a35ed0677a7f8eb29116ecc4ebb6d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002802750d12a39450f2f4a0e19375b8de24074d": "0x00d403f12f6001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339782d313f325b3c9b63502bffe9c01361037086e99": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516a0b5134ba0afe57242f27ce42e90bc7cc070000": "0xe25e8c141e674ba58ca7fd0043366f6903488f3c585ff1180c9993eb896a337300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a39b2e373446d6df599953c0b0601c66d266732324077924b8aa89e0e543710": "0x0db44731b34934498c4853216a0e08c8d05fcb3e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54e69813db314fb5f49b1532d7944d4195c5415402551ba3c16d1183cd89d127": "0x8bf1c1e68d1bee9a5d188c2b49939acfd804fc4d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970047753c8946ba8f3ba101ba2afa2832c4a5b6fd": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ba8649eceb83037c22cf1727ff5d47b9f666a5b": "0x00126d3b2f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0d20e5bdab9012279de331fd4061f6920e24d5c768754518be3b26b193d496e": "0xe659b900949f70623fda99c695dbd27e9cd9e7fb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c1be5037ac4806f3087c19c2ea3375700b9682f": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397919633258963e54df2e985f3f42b3cbfe43f24ff": "0x0074f6c33acf0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725b28e2fbab8ce0b5d54ac6968369d6a9f1e2197": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243fba281c66fe1034a2f1cfcde7fc6f6d939df9cd6": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c5142225c7e26732a7ea83d3b25c826d8637556": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d769cd0854afec0c1a6d6c71d68417a13e653809dc8ef73842b0fe19f90b1b24d": "0x1c4ba011e13f2f735dee87c7801001ef5e7348d0", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5105669d7290d420bb80c44e0d153ca1e81f040000": "0xb60bf1d765ac0c534a544084850f794258e4c9f4e55965abfe9fecf52ea0c24500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5115dcfc01de543f9c61f863f49f22a8e060020000": "0x00933f6ead73f4396ac3ea16dd9988dd6b9b8b9309e2c8ffad113ee7f6b9f42100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c495e48cc5612e90dbfff05b12532a69303bf72": "0x00000e8308e409000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890063d8aa6c33d88963ee4176bdcbd65ece06cc13": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d567082d66dc9c1cd236a3044a92c5b595fbeb6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f6550e2abcd33b14be0768e4fa62c66fcbf665f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6bddeffe26cd501deca6569ef33870f15aeb637": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b92a8aa0fc53b924467aceda1ac915abbd537be3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d0e6d8a610c30652d3ac9c2db8df936c62040000": "0xf0de782e8bad3c663be60812f0a2ac63464f5da3ec448c73334c07d71ef27f2c00000000000000000000000000000000", - "0xf2794c22e353e9a839f12faab03a911bbdcb0c5143a8617ed38ae3810dd45bc6": "0x00000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ee03095cfa46cab6e89cdf19dc2cdc64fc76d2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef0d89b032790648bdccbd29b8fbe87868070000": "0x6699d3b4f697ad91f6e279bb380d8487560793f0f247ca0634c3d9242476577e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0134e2e55a47b5c53427f613dceba99c7d519c6d412e64e596807a65c69b326": "0x3bcae7a7bee3a07c59a217cddc891d947965ec00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289461df0f49a1b5b38318c1cd425840986e15176f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890011f97b8a9f4902288c235478d2a5f3aa060073": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282435acaf60782e62269ec264824dbbb13f9e85d71cb": "0x0080ca3961240000000000000000000069de3a0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289012d78b8ae3effb27d1a177cb14b2776562aa192": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c6ea84064e0db68bf36b61506bcd3f4a48de7b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752e0f7339c1bed710dbd4d84e78f791ebe2df6b9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f6bee6899ccd70cf776107ca787cd88dcca0b37": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c0235079df3f9a6b9a431e0c3bf0e20d673ccb362376937b9e5e423a307fa79": "0xd1200ce6d0ba222db35d6135e051267d901f44b1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900adedcb13c0420643327f35b6ad5da4a0d8c259": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be581d9e93e611f86b7fd67cc33ea7125187ea07": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824356666fc53f50972d6fe7d75d1149ca3ecfef486e": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed089a796d2a81919e46643e7c2351aead6f1437": "0x00825826b37f12000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51952b2227cd4a00a7d3bd5e3a0810dfb209090000": "0x422f2aadd599b4974e4cb9a5410f03159e5459fa81e8348f8746a8ad845b830600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bafa18521bc5dfc93e4d298749f666dce7070000": "0x34bc6fb5ba6e2150087c96fd4852ec188aba74a5a383a22ef66b12c588cea00d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009d470cc85e114eb2b35c64b39f8a0e3dfd6759": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f67649a3f084eeccf566b5193cb6faa830cb10bb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ce8a5f25554d7c733169f3b682eb3458b67472f": "0x00a6ffa0e4e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b6052a08ffad405ce2bffd714c580447afe20c80": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700936a6c0bd3a0110725442f1e0887d5ad459160": "0x001cd6fe584200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9094f605ab3790ed1bcae8111c987c786dd294a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cee564d87985e3ef80e8d0cea1d8f49278fee135": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c061223361f4e8b4a71fb7837fd8eac1bcab9c": "0x002e7164960600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965d6275a941e393d588ed1b1d0adc94285e00757": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289560cd6b5772c69efe8c36ec3e1f8af3b95c66b44": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896e3c0a9a3d9bf8854865b75f6d4b01935b4eba1e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289756034a116ad26a3a26d264e1cf490a12231b1f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289344640acab3fe1ec3b3f7af2e9b7ea4296aa7085": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc3a8b98f63e0c86737c439a3fb82a5769fc333b42e8abb683f7bc52dc313742": "0xd3b33791c1ea8922dba88bd800b509e884c33bab", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d315959e879d36d314c19ccf6654dce6b7255fb4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ee32592386daab2d2ac0ca657e8e165e0889f8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5191fb799863e9805cda4875fc529daf1201090000": "0x5abed40690213905ecddaf187a5a16cba5705720196bd942354f1debb47c447000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df66ad061b8b6ff29e2cf485f542b90e733f2164dd9567d2713eaa54362c4d521": "0x9704593a5983b6b3e498b644802337974a2d0c3c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d3949b803273f985e9a167bc42c0ef376b70d8b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c376d7a071d508102173761ddf2b8c27f3cda11": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009978d735f1a23bb6922b620c490ac4aba66cfd": "0x00be4216aa73bb000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c316f08646011244eb99228d384661e77ca480": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915955df69f2c7dfb120839d6b4c78230b664a362": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78957d2a1ba4d3d9890e2ef1bb3562eb0774075455b7be56d0ba88eb3bd40943": "0xc43ec0fb4c71b599ab3b5e9e6fbd89553eb615d2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c82c18505a345f5208a1724f6d2334dcb3000000": "0x0e0a207225e52c21bfbf08c5022e9a6fb26daf70c6cee1ee92a6a5c02085cf2400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d26b5fe12119935324adf8e3434cfd8c42cc9ea717fde9262fdf37717b40f6a34": "0x09a89f6468aecaffae52142487eac08e126bc071", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b248acf3f128a50f811761121ec10fc60c5bac44": "0x008015c5ce7b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893078f22015436d621062f7cc8334774eb5685e97": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154972270baee765cd03ca32bf832dd8fa3060000": "0x2ca94b3c294fed7e144817ec4682fd72039057462bb94de1076d6990039c862700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ace3d849dcc2c1b7758b05cea344a7a108fce03": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd6b9c9d40ae9d4db6dcefa18167658c8c5afa1b": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb86edbc8bbb1f9131022be649565ebdb09e32a1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397997dfab7fe0925ba6e6c1c9abcd20a840540095d": "0x002ca8141f0241000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978fa87ec68adec6d13477e797f062562cbcdfb4b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431b282f5fe4bd0bfda21a07f7184bfd720bcb0886": "0x0040f09bbce1080000000000000000008f4c5f0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00b9d35957bc6db556c4d0cb694c9b728b67b9694153087c7b67095bca47021a": "0x4a7a5c1f34c57b9d1e0993e83060b6736f6a42bd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fcaf0a13a98b04a3080d7e246ffa7d072777e7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aea57f34d0f7c04bf6f29e4b91baf66955901035": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900746df19d71232f9e5acc79bffda2745b69b97c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700361b7e4eb1e3af12bd13b2403fdad70b822268": "0x0094e7521f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c068858140829f7fddd7907bca518e6b97c7274": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103d55b133773dbe948d6e3f71365f9bd5b020000": "0x4cfea3e89b8563274d1cdb191bd0d5de97de790821a6d41990f7671db2ae910800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9088903c35f715b176cc6dc581484cc306a7d643b0220f1386a31ca925c9a60d": "0x0ace3d849dcc2c1b7758b05cea344a7a108fce03", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a53e3fea0109124613c5ba34c1bb2a9dbec3d7": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f72a6e8a84e112b9fd925ad040b81bec8b17a6bb": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514323a3c01c36d94d37e6ca002f7d1ab1f8040000": "0xa03927f2c5ec70e2a6c64be18c91cc75a7a41e176579bc7d632d78e488265b0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cb139d5b7f41d8b74b5a5027ca35e9ac8a7cda": "0x00b218f2c65f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5464af38cf465bee0a30d7ddccd900cc20ab9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1abaeefafe1ae6d3eb202f130440b7b2d3365279ce56def44f2610e56986ca0b": "0xf19ab8f5c20d77119dba61bc195214fdc045e680", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7addfa612b215eb31656bda9898be79259e308ab918ec8d61364fc1e872b47af": "0xfe265551142de05f83c1ae9bc54ee9bd1248f80b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516adeb3a1d9a6caf3c272e13546c5c74638070000": "0x26171b3ad75723bf624a27485e51e4c2fe38f4b2d24ee52b86a979fb772c513b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf382c70d3bfe51f50fbb462568ed1ceafe02999": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecb3531beae3a8d1c0827a8ce461025835feb8fb": "0x008a53f75d4f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a75898108ab84228adde0a8ede1434a593040000": "0xe043d8f7872cd895f8957c9179c4264816be3e649713cb3bdc523f752602cc3a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f265277da5c970ee569bbe6a2fb378ff40000000": "0x58049496de2baead8a7fef06cfcff07764d07d7d466c9d64a4982cb3ca32b85c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785591bfabb18be044fa98d72f7093469c588483c": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1cac24ee6eb326f1640c5c97b8a2e260b4452aa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f28a4aeefb6f2d8b39298422ffd4a329fac161": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f409aba35fd318d2f06b820f80cdda3819f7a545": "0x002291b31b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90a6b364317b9f367adeccb9432c3e8f8e1badf60cab29b241da813d1e64f413": "0x00ad5f21adf36e7fb8eb51391c3a68cf44de0ba3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b919a32ea4ba16c20e24ee83cbdf98b89c94a31": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44681d99e5d8c26050428ee732f3e8c01ca7251be24c12ae7b99aa44126bb606": "0x27c6574264011276bb58654e48973380d5c20717", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760f7905da2eef27ee2992082769b0c1c236c7395": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ffe3083861f58aa0101453a61fd3a1b747d2b75": "0x002e3f6ac61b00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507270f0d884b506b5617564698074b919094e1fca66ed767766aa0a91025b6a8b955bb970912900ad4e413ea936": "0x88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d565518b05d731fc47de585ee3b3270c188bec481385e8abde5384c0d12dac97a": "0x00ddaad281bd203effd53340aab51fbcef400e9c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743eca45f63a712ae079385f35e1d0622a2c4132f": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d59dac3bcb670d0ed0c737ab8f2560ce0e564e": "0x00f031b1450f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974185524e7b4ec8f909a435f4ac705f9348105b32": "0x0052f76b2f5f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a1e09cd44050639a816fb6374da3baa1228ea4d": "0x00924866aa3700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c0c36cb561beb841efcfc7212710d0c7b1bb187": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289190e7c0403a5dd4bd21d426d88b76b1d513d39b1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289726a0e3227f10b8967864ea8f7fba8b5637c192f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6a2e7a2d10fb2093f63f2f7923622b3f357f8a1": "0x00e0ec5e0b6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f2293358c8721bb10cf8fef9fc9704189581ccb": "0x00c296aafdc10a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b1c20535f3fc208f2b320157b65ea09e960496": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cecd25a7e218c0cdc8fd36c50d1369a691f56d90": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d603cbc4d841ffa9811ca096535fb43ec8e240f6c058fc98f2619c72a9fa9e31b": "0xb7ef6733ceb972d95d74368fe24b511512ae857f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b3d18c655353ca14fb9d4ba8d047d08d1140974": "0x0032468a9ae612000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5bd0f12144dde4c70b3a80bd8b0817cc1ae6593": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905df79a1f08a459cd77ebbf6b3333da75dcb6141": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289589c431cb0e9255b1fe912079034ca6711c76eec": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5efad5aef39eadd6d70721079c222dcfd7a12faddd95169f5df916c45b4e7b3b": "0x46db544038c59b826dda8d3cc8b72de90c86e683", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5186a7064a1f4245274d2ae8b256160c22cf070000": "0x3e35d39ed1562e36efd2facd3fc6312c25241e8c665fbe0fef836b92224bb72e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339787e9e73dd37a9e2163a893462c2664121c9c5e31": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890352804a070c4d94d441ceb8490ec619899f9e4d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce5b1c0387a6aee95bc73e296421663cebd676af55c12566479cc81dc83a5309": "0x00472a26baddb79f1149a9589a132e5e0f762253", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c616dcddb10148ef5351b5b0c272486d15b3f629": "0x00d0cfdc8cd700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d520bb8772cb80655102c3c0395b92b8bbe820dcb8d8ef656bdc2f15cf2701c49": "0x00ece6fd032e4d674561246baffa8f92728955b6", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282434b58917b2b71399c841b985727a3ff7fb59547f1": "0x00605f3580ce0200000000000000000094a88a0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db67d17f0067c5650930c4d4259ef7b5f7ee951af57f06cf6360b75b7a56e824e": "0xed825d6533c5220639bea97f98aeba7e02b0845f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa6dda94cd91f2160d9d7d091ef0c7230520810d": "0x00a42fcb056000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514472409cd7ef153b993db5226b2be2e33d060000": "0x14287358494932512dc188bb7700c1ae44f9b31e251d918a4f9301a11eb6d62f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5197a4f0d08d230dd6c944d8591bbbbf88d1060000": "0x7ab28f300e32aa503233448cb8b7ae963933abae546105ea1925172f28efab0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ccea8905de715b2b260070927dfff763ee6d0ffbeb7afda26ddfb2f614fd200": "0x86716e7f1b8a4ab2d72262ec5e034ff995b684bc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970088f742d8a320915da103114ff128fe472c7cff": "0x001c6ed5291c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bd74d345c128f0a80bc711740d16cf3cce70de1": "0x008281e2607615000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dccbfb039ee654031cc916533ef1ce64e6b1422f": "0x00b05a73b81900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f7a28702a142caee8178da955f3bf87fdf449bf2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74d422ddfaf5c928d04f719fe7f218e9de21d83f5fd0e7cf66fa20a3c2a72d2b": "0x09fbc09d7da0c050d4fd80db0649b30378cc4839", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433a7dd8fc58ff94de5cede695988e78e5f3fb3df2": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48c36a6ca9bc4cee5de809eb648c06c25900abb5bf37fa09b1e24435d4b96029": "0x94c90e0a573db26467e0e812090a9220c20edcd3", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d860ed6468ffbb2ccc21b5fabba90031f5f828c1fb44ec5d167f183a1afdd2f4c": "0xfe2d3714dc0abc2fed9f148be5ed1f224793f01d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978efb665b2cfd82983e06562b355878da59878368": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d559c543464fdea0ec1795669c96182180b559": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0a28cd71e1b713dafa7168963102e068ee03c9921cc6ecaa91a6f3cfa5b0770": "0xfcfe4380a6592abb74ab7a3d270f87acaafe118d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d92d2877d5408cb4596cbaaac36d35efd65a619b99487ba980f158f83904f0001": "0x00e955f59b4abc283f9d5813aed5666666f7476f", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243173ba35fbb37fd281880645a2e7f8e18ba38de0c": "0x0060b7986c880000000000000000000009c2dc0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b9ee82eb0c10e873760fc39cbae615d05dea7a": "0x00221e875a1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d2b35b43c6ecd57e7f154ef5d5dffd0c73f8d4c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c53e4175affb6add29bedc688783c6dd9afc452": "0x00d422207f0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c75e0c290be78b48b440123a7b9c9950cb4dc": "0x00449673730c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931c1fdc59cea10ca6dec6975e83f3c2f5bc629cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4513bc7f383d9f27e8c9d2b16216328927f1669": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713d62d5a1963046a3caccc3097a4576d1f9b42e1": "0x0074bccaa21b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b4294fc374566d487008f154cfb6701ae636196": "0x00ae3aede4ee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005a2a05c903bb1491b9988dbcc67cd15c7f491d": "0x000c254e602000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748640126abdef6682ad0637024f814e3e40196b1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8f150feb4983f36ab7bf83f0829c94a00471c1e": "0x0010a3fee5b4a8000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d63e4031c07cf74da563595cf55df4b52063a7ac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751e9ebaa1d6b6029c88a42bdffe81ab4956cc062": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893bace2a685d8d73c3e60b84bbc34ab782f54100c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ba96865eb101d5e044f7f86d61b2defdd070000": "0xc05210b4c8af29367ca9ecbde4992250204318d053a6cee2a99850ca05cfdb5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f928e604b981ca97463d9bbd06d84ebb5c87ef4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904d83431115cc45d7e1fb79b4d64b5669238b687": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742b1d63ebbc6ca0cc4a679fb341c78d1089702ea": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930caa2e774035687e738e60ed754c1787b206a81": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979dd8ff7445db83b54311b53593c8cf23dae7ee9f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899887c59b42a14ad759d1abfdeb258dfd505a01db": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000abf987d6d132cd1477b2c9f1fca2ffc0a4375": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76dec076c9a31c9b8493516198ad24f0e8f47969953cee5821e30c340f276519": "0x7a1e82a8554ccc29275f5cd010de3668578bbc9f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890084000ca2cf4517f4af097574805a518efcdbd0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928918ec44fb47a4014261d7617347773bf27b8e2e8d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d67c0d69691f9d012cf1fd44c5ac23c79cd441fc": "0x009868ab21f695000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000fb1553ecce5ad47b7a31dacde54f02d10896a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515299f9fabdbf760aa03c72ac7f505fe5f0060000": "0x804886d79ea6b1e21493730ae735f66b0789c48a6cbf3d0c3a6aa5eb7f47fc0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da0226b58094e54045005fe23c8a403e110a4eacfc8ccdcf6cb009c81c4f94447": "0x00cf14cb2a1582112f352b2853400b532891e6eb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749818d5fe1387b70b4b7bf57a64f7c86bbd15ae2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777c6f7a1f67e4810c454d57f5972da4761f8079f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6475d23c468c6da8d92298d6edc33b5cbd3feadc6d637d207ff6ba64acd4b317": "0xd34e9fe863c26cfcecf82bf4cc18701b3ad4767f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397042a8622ec46cf242361e045250ba7687278f929": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7ed2d43538974c607917ddb8454f00f3cfe250b": "0x004e6d18efb400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d50ef6fb05f46fc0e58cca849698d21a330418e612d0e206ab19c6899245b8e6f": "0x1a0094af5e7a2d052f67814b9bbc799ad6ece294", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e8c721f9eea540a54837dcfd3fc7289307060000": "0x5025d1377cbba45a79dc41256dcb4e5dfa71c53ee3ae46352f2a20ac0f54232700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c75b578ae2bfc003b5fca59f1e26630652005a07144bba9a75ed44a00fed751": "0xc77c440c06384717ad302a6c5290c9e8716f67c1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397392e05b27079b3502ef2937e0af15aac14e8d8e6": "0x00c43733034100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd86986ba67b4a1a8e7be4833dde2c09243333d7": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739274cc91485b4501445ba4c1a67b16e6a5fd78b": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a670e45ff53ae0febb60638c16459dbf87060000": "0x74f57b8c30f491524688bda45df9f49aeaf6b96b4c1a4aed06d777aaee60533800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a249e3666698c434db898a9ae29b64875638019": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928935edf1cce3d9c1775ff5e214dbfee26abec3fb3b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de6ba7360b9e07983d3503bd24e0ebd36b6bdf50a613785f994cb4964708c791e": "0xa0cf34d8a3dd4d379800bb440c1a3523cad4d9ea", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ea9d00813f1ba972a361ff2d3761d2a396fb2c": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aceda49b20dbd77197925490fd185c1660030000": "0xbe43cf13f10c57748e61120df82c8bace4563984fb09e8823b24f7c6106da61f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d1f0e0febf66f337e5033bc9a8988c605b070000": "0x542ac2735e893007bb75a64c95a1658025f9d3c2f58c5af1c1060d87a43aaa5b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee8ad6769fe89ecb8fee0d981ad709e08e6d1c06": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970003664d63acee3b899631c4ac4615f402430330": "0x00de0af1581922000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ad5f21adf36e7fb8eb51391c3a68cf44de0ba3": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c8050f5ff8d448a5f3ac9e092f45f5ebb9df9de": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c6ae8a52978150c27cad4136308d4acf3bdee0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948299f5998fbdc5898ac71e8221014a7124e0788": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bffcff3d2093925b8a99458b5d9e81dc8c0034": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f8978b550c0291627d5604a84e76fc044c23fb5": "0x01", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824350d919314f2981bda224370b7165fde7bd733040": "0x0060b7986c880000000000000000000009c2dc0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708c58b2dcf43c4505526af8e5e067bc08d3d0175": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974999ba3e07e8446389fc80467cf6cba34ab2363b": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a07166eb5793a0f9d60a9adf056b7e4fdd2eda73": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb4576a033caf3ea0eb8a9545b26fef07ee78115": "0x003cb11cc30000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfe4c9aa892384176066b2776c0507c17cbf5099": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289216ad8bd24f5f277b78774e605910e04016b6e78": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f01fb7123fd21b1428098e7684093babeb59b764": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928988b5c0f4c52ac62c66c1c4d009e6ae0f72f4d042": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896bfa1d111e63e47a3ee2daf430ff319aa7079fa5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890be9a01de08f7c18e973f073844aed6d8414a5e6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51adbbb9398ce25370fb0eb5af3db1b09c53080000": "0xa2f43a8179d71374a49f4151bae8d01dd1ca9cc85eaf135a23e8134ae32d4fe700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f18036a91dcfc6f8b39de68f170a683efbe0527": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aba13ff6c070ac900ca4e3861ef66045be42b37b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898da0a15786008f543a760701e2021f992e1c1cc5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5db04802c56a6de7532a9aac9cf39c7a3bc7b71": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ab416fe30d58afe5d9454c7fce7f830bcc750356": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0a08e27f26e1d8b3f3c61643df806c8b631a1fc8b34cbfeccd406a29e423c54": "0x027ed05be029f65a37ae646f349adafcc9758755", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397035c88dccea98eb443d506347b9f96044da9bcfc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb431327705a1ee54417f8cf3146669ea52f3e41": "0x0068f8c974a501000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a9409db5aafca9b68f43dcf38bf46d460079cc3e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab3237736c07beddde7dfdc0f9357e00a9727646": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b98bc9f8919ee39e563d1ce3c1aea8ff31ab0585": "0x0080a925ff8151010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac139d4ae0e405462f35f4a5f9238f39844cb982": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b41ad734f67cad3c933793be448dfad709060000": "0x1ea949d53645e094cc44db822ad4c0d779f9c9a3252c5bb85816696b75e04c0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005325ce1235df371bf5e8671ba58f7bc2d549c1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397610449b5f52ba2fd6a5cba5c29d650d12248017b": "0x00542e2007ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a1f84545ff677fdb54d955f707055dc70f05452": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f91769506a288aa7edf21f0100444eec2c6f1033": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b98df46a871a544265c71648cb708525fd913ed8": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f32bbee91fa86b4a3c11aa7774b86b4d8060000": "0xda04a11b64e7fc03f1d79937689c4d5cb4be50e9e459edd9217adcab52c3533200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000fb7f3c777a047c7730c8a4d5055d62355ebba": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397953bbf3ce4f4e15d76793c6d672f227993c4f3ec": "0x00d6fa032f0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009e98ad910f26769d6a0e2037aa4285820fc9b8": "0x007e22cded0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a56106482594175c13790cc8fd6d99575fbe5154": "0x00924351a05100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe740f05146eac00d2b48f2527eef1deac1e1c50": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a7a5c1f34c57b9d1e0993e83060b6736f6a42bd": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0cf34d8a3dd4d379800bb440c1a3523cad4d9ea": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0103c4b56ce752d05b16a88260e3a9e2c44306602a74c5edd1cd4ff56356f7c": "0xf6a2e7a2d10fb2093f63f2f7923622b3f357f8a1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b92a8aa0fc53b924467aceda1ac915abbd537be3": "0x0020c9e7070400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000fb1553ecce5ad47b7a31dacde54f02d10896a": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5da2d78dbc9d7a047ac8700a09f4fb50a23d8c3": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aeb41235f3375e4a0c3006882b6ae446a4818753": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973dbbbce710fc71eab5fd35c40743851ac5f08407": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96fa67ee8a1c434d8efd13671fbb12ae29421c4c0e350e2fe93744caea8ad20b": "0xc46fbc59c8742b17c3f67fb39338046c1b3be969", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791f2376856197b8bb33ee86f56d4a17da7298859": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd2d4d9f76f3919510de38109dd63172b05e86a6": "0x00cec8c6e89500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df4dff459b93832e9bd6e0c32e5866126ecc434a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac64a0c791cd0b6edb560c121fabfe6a23be2c43": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d067ad823d661ceda5e04f4f814589bc39a90bfb09660677296cdbff49049e83a": "0x003edcc4d34cd4a22b85b496aa33defee0ae5717", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a0638fc950ad83956179d5584f8115b9f9e0cb4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e26ce35987459077ef8ab733663a231bc5040000": "0xd8bd9c7e5df52ce11d6370096388ebc0ce1d165fb610382be7f322f78eaef40100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004f42b803fbc2580a9cd18fc130caebea8651ee": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720af7b38515f4fcb71c988625bc3c35d510ba7b3": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289998c1f93bcdb6ff23c10d0dc924728b73be2ff9f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891d78010ae098d2ddfc01c7306f16776d1409a576": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a8c0cdeb30b068e0e3aafe157189e0a93caaf6ff05961dd98d58db11e1e2731": "0xfa5b8e7942818890da1ab0b8ea9f79c6e912a758", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da082ef6765a3eef5cce291b2507c5ac3d6ffe5e10ecec2525d1554b8d2db1440": "0xcdffcefb552c1638915cefa56d551c4221e5d6d0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895e0e7a5ca7fd2b638cb8e544d9188dfc38385db3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fe383db1da47144fb59082c47d97ffb1848d13": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51029389976abe4c8cc9e2ba88bb7a3b6398050000": "0xdecf71909282816105360e12c52694c8e39f30f82532be18b3e32e3e435dbf0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d847ca879aa4ee4e774297222315e844f84e6b15f035b54a658be03a7166e9802": "0x38f438c88c8c43562c4ceb3c0d7b24e11c03b708", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054ee21332017c772a9dcb68cc6e120b305c9ea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a5b68dd85f2aff5bc60ece004f36879399c242": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d569ed842ea4694ae65819ed0ec5ccdc9ffc46e8e1986e8f41489926196a5c15b": "0x2fcef6913ba9d9ce25e509979180d5fd0e047b07", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970060ed7298f6492489442f555e38acd8c672edfd": "0x002ccfe5aa0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c330c1abd1fa488ffce0ddc6527afc4106f122bf": "0x007e15ac953900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514da93edcaf84b14ce2eb804174a3a71ce5040000": "0xf4164fa5fd5aa70d2d524d72d9e17d16a56946c3b9fa97d03d2aa2a05e25cf4e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971add1af6a3949b9613922f9dd9cc3c98d003d5fa": "0x004834a0a33f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706eb856aeb8687f1803c095615b3e7143bf130c5": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df04861121b61c5f1251e345b3bdd173cd18a89e4641984c7f051d796e295e01d": "0x487bfea2ffcde43dc7cb20b5cf1f84c7c836e917", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b22a64ea64c2f4cf1d6ae25c855db5fe1ca0e20": "0x001e5c373fda02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970012f59b4690aaaac5d4631d56f30e00383eb29c": "0x00fafc0f343c38000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f170d28a026ca70f9c4a011409cff2d195d0359b": "0x00202e585d3783000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51218d19ff794c68b9ffc65f2a631525f415000000": "0x20c9f5448d22044f25fdb213b6a5fa752b29b2cfb57380deede293c7dc3f326900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a50382a9b22b0720698d39131fcbe289841a54bd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397075c5fec47d39bd6482df2cfe32a6d1f83b722b8": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2f7d96ae83b7967015b3c483a070239f74baa6b": "0x009a2bd5f92900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928973344288a3782ca4badf486ce54de2f6398d1271": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c8d6ee56d63c0ccc987b1bbce567834e4e3f312": "0x00901ec4bc1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de02202417084cd61934725dceeeb213f4a3317e0380658dcd137cb3dcb4d972d": "0x87b1cfa38fc11bc6ba0794e44b8fd5cdf98c7640", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289749ba28f1a561b462e7617728bf8f62ce0afbbbc": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e6c6c739e406cf3ccb1c666d24cfd200585faafe": "0x00a031a95fe3000000000000000000000eee6f0100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5164d8e242e4fdf69f1127693d8d3433991a040000": "0xac9699995e6091a616897cc7344af69d9ee2ab61aa33ffcd2d11cdb895a6f94400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a2f8347074e14f1e2eb5737f8b71dd2628060000": "0xc8fcab73fd1b77bf96980783858afad61a357214ab29114ced424a9a2d24834c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511738b9a4c28998ec6eab75ae354c079f08070000": "0xa87141729cc078f61473a1ad23b5b625b23d88c4329a1d4a7b4e9d22b0e2bb4000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df49313e8188843be3e2b454b00064aff16256196b535d4d511ab57207812714f": "0x4f1de81781e8bf83b57548a1ad3bad66a16c4e01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006b0c951ffdbd1e139bb4734001e5bb38590533": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764cea862ccb0395f7b0f2ad5bc63b0f299a56637": "0x00341a7e291900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f0650200d57ff9098164898d2231b2de220c99": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898b1f512edfd229d910efed5af91445aaebc8c7a1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289968ced1eadf5bbe3ec2f6c6e1911b8f4e43452a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f19ab8f5c20d77119dba61bc195214fdc045e680": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce2dcc3b6911ac513d32f326bb72bc44c1ca1b84": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5105cdf75484c2aa1eebce8744866c087913090000": "0xa2961c9a8ef0879e6f08c41d9a1957b7e5d7be02d2462557b1490609fdb5d02a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900328824a4fc0484c8ff3353c8d2f65ba9e05638": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511d9ab946129490be72947c90e4f9551d4f050000": "0xeaa58dc24089f8bf9d09ce5be1ae57d6f47213a94475761fd34f73e92a3db15a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d57d447ac2a9cde3401bba7abb6f888eb63ed7": "0x00a209940c5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9f778ebffa282838000bdab016dfa08f75dd445": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a2e5004a31e7b931bef05499dc4f3dca1b616b": "0x0048b4edbc3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b986ff7069c7e6c8a4bb67419d839a8cd9d07d": "0x006e1f92990104000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db2098bb66a2346135b378a64c3de1d2bde6c4199cb7d805a970b4f6fe9deb375": "0x6a37135f77421be9d9e5c15284188e9658207dba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971eb3162901545cb116b780f3456186b5d1396142": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a21429126894675cf6e76bdee44a18c6122c0ca": "0x00261a1f702600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b0d0571d39cf62dabc905c3892c32fa578defc2": "0x00d6b1f4573f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004935e21786073fabd32f21b6492ad354ad871e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcf8700996507fefbcbe7258ff7f5af0abd5821d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44a1336854e44cdbfa929ad12e913e4a1870c590a6dc5e3983a6fd416b927f53": "0x8e6fa447855eb59c62f23e3df8a556b07a0ee4d9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c0bb615eda6512f1a95869a638ef9d21e63469d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fb5b702b7d3c5efb00630e8014e79bfbbf5ef81": "0x0090f5e41d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004a9d5ffc97eb0a4f20df642bedc5f7a848e2be": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a70be61eaf9073505bae64126b3048b3046edabc": "0x003e3ea46d0800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51198441c55321af69c172ea861733b5c674070000": "0x068f8efb41894171c5344bc16f74eb1dd05fad93647955140e0f7d7711d1d82c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ccf27ab564b31e8835ea23f48894d22b986382bae5889720c66225960dbd80a": "0x032f6b944721fd338858bcc0e323d9afe77e0a40", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b1bd494502e19e60d13e635c6931fce893f7824": "0x007623119c4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c7975fa3b0e1ecc47baad4596626aa2c1089524": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a045d6728561c3b5f1978c235e83331e4f9d54": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775f095e103de3ac2cd8410ed059fdd5bd050d21d": "0x00621698382500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ba629a682cfc064d0f7e35710819889fa357b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007a74c0c90eb301c7355654b4c91fbcf267a1c6": "0x00c024e4b60101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b054ab94e535ea6808941b416fdc14255dec9d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b3e7a175f6183e2c8a32e94881d9cc24b96f4a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003f12ba2e37d864732ce8b000270b05fdb2a893": "0x0094f4d8444500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fbf27816ed8612ba4477bed6e0a554a1a35fb015": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5107d6ed276f6ca99d688cfffad58322e9a4000000": "0x163826c8ce7c0ae26db248337eab2cc31d575dd344859e51d13e8703666a124600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fbf276d6fa1f36b0f0b12fe8182e4bd108ec9bb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6eb77631f65ea04b3ef1407b04dd59a50ef6af249eba5d82cd61604076ab067a": "0xd7d53f3b0307de42d7dc018f672f7e6af34a8194", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a224725ea45e342d5f769ad16c4f7f19df7b1c39": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000e1841bd5780f77ebee2dd24a19cc47e1e47b2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895daf6d0f17ad397b6a50308bab72dba0a7a74249": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892969dcc4bbf824145328bca8860135f4cd9ce9a9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289805d90d33dcedad0f8efc6510dbb067fe4b36674": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df54a4ca9017b31244856bb7e2307055b0060000": "0xd22abcdf4219140319a7f2155c838897e8df31bdcf7a5f59567ca06093e7825200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397532276374258365ec2058848caa8975da2e9dba8": "0x00540ec8632600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5176a23fe68fe8a3ffb03f1cf79dc1542ab8070000": "0xea93f58088e27ecf986ed4d70c4f4d40d726b390bcb87f448fcc35fc917e0d3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f7269f2171f05759a8946831c2300720391320c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890044603a9c1b3e99918dc373a07dcdfedf38bdca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d2b403199705e292860c2978457aec9075b897": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e6ec101524276a692f4a4fd0a2f811060cd3d434": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890009e426649bbf47ae1816b30bce4d4bb3977259": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b409f5afa0274854823681114344484d69fc0f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c4d09effbea40dcbc56bbced8bd75c4bca2dc6": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e0af9d7eb14d3efb109b8e53df1cc9719060000": "0xece2eb75309f0b344a924dd7a35febfe235f71bbb3ec4cf986a440342256ce4f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397652346bcbe5e8683ade954a0b4491a58809fb539": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ea0f4b12d694e26a89872bcb86213a8f6ae25c5": "0x003278ff3d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a64f00b89146c02ee1c879b22dcc661609a6fe3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397459e0021404e96b2cccf7ad0611c5ae87449704c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721b967d11709c5f62eccd737625effc14de873ea": "0x0020750b040b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf2209a10d9ffda04bf453bcb3e367f3eb6756": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765e7c827ef5af55a5080f2589dbbd334e06dae9a": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1655ab727bc613b0cfbbfd2a8222a17955ed0cb": "0x0086319f582201000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d94134606e7f52b31b53c7b6c131e500b392182c05d76a729ae70c333052edf54": "0x0094e5350b60f62464c4006345eb31c2e731f6c9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5db04802c56a6de7532a9aac9cf39c7a3bc7b71": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04b32df44ba1c02abfda2d4d9dd55b3fc4f0bee5b136b7eee836787771e02119": "0x001e0d294383d5b4136476648acc8d04a6461ae3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d409b74db75be650cc36e53192fdf7aaec35002": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000b79d6fea0f31e919301506d8c62c645949af0": "0x00", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af302aa751058797c6ab5249cb83547a6357763a": "0x0040ee7affbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890092dd784a50e356b9e1705dc780fcdcd55d78e7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397759e87db3f90e6dadd412213aa32140a8cf26ba1": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e238e274e49faaa50d80cefc0bd04d793f190d119a4ca4d05d6e5a9f951207a": "0x12f9122d6ca5294f6817ae79a9c4634a07931a85", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe2daf84705de34c1930370f53566524b08145b4d192d6cdd5a35cc71930e240": "0x5b11453d090fc10f3645d14a2e2b1af79030b948", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970089d8cdbb9494f662738349c4d940cce6d95ff9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778f5234552ba1bac0a945d5e5bdfb56d84d4931a": "0x0020e464717e15000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890084125bebeaa11df85ac05d8da15c2ad150e814": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ae4f357871171a3c3e10586ff545acd8e165618": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afe949978ae2f7098f9b5c2338ed5de20ffdfff9": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928968a85a879380543b48c40d0620e0681300a88553": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dccdab8025bb63660540679cce9993fbbfa4a0d0c7ad4704d7d0a04e4be9c6b26": "0xdd9c6de73ea0b65c5aba8bbd3a3a9a212be3b93c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928970f055cd7b671c7d5f167c93b506f30ee46c9938": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c17e962f910139d0710b3037a7fd7929e6da7912de43fcf8c5dde90c94bbf6c": "0xb3868d1aeb675f1fe97eae0da557f9fceff37afa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b8cc90051abd0b9b33bd17121b899bb7a9d796e": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289765fdcbaa945c2f73dae083770dd0aedfa386d5a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc12728eae828a7eb29d712c04ae95e3dfeaf32e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891dc59612f191c66e69dc23f3ab00b945593836e9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002bd178dc5ec5ae344d367d4a97281f63736d7b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e6c6c739e406cf3ccb1c666d24cfd200585faafe": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950186cf6cff105370f696d6f6e806c694dbad86b8de9c1c9947e536b3391b77caaca86a23195a2b111b24b0d5164": "0x88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c01e3c81c99db5918e079c5198282c29b773020": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ddce5e113d3d358257a4130d8f2eef6008dceec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970067be6b1747f53e8c03246205773f4622b858db": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e9b7c3ff2bcf46973579131465d2bb4dc46871": "0x0086df824a5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f7e7b1b52725e1f32729d3a2c521a5f76c98df": "0x00600d64ce0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd9ebcb7c6bcf472a69a1c7a84735942859d3ace": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397febbc884e93912a472969e7da085eba33f526ffe": "0x00881b5b9a2f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51469895bc1302c720fb0bd6cca953955d60000000": "0xe49eb00a5f8632db3e45b24a7824605c7c7cdf4abcd9b17fe39ab29da4b7733900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a02c4b206630fe17cf7657ea80f1b6fab809da": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aba3761ab14f87094b3ec4bec2b49477e65f9bc0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5185aa0247372be67beef006c1f89f76a80f010000": "0x16293cb2df2f2416193f757871510572f7afddc8d958832689ef456c1096b12f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb4a41fcb2d83f3cef61737e96467e5045729670": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928914ba180622dcd7ff90ca091fae20ffc0dc847100": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c70d550d680ec50b87d53cd1b0ed8e71d9040000": "0x5057dbc6c810eddf1e13d94305854ab72621bbe9566b117f69e705bdbaa9143d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74d34e1eaa0a764af6084ef3728d63362298575d5efa077a8586333452960222": "0x003febedc03910f869564187f04c2ef1ab840fa6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a59c51409b63f4900cc5c90374036d3a98f7673b": "0x00d0c2bb340301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ab2aaa53121d617f02e48c6e8ac908c4467a5dd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000fa4aa94334c36300b16254889a721a01d6cbb": "0x00a234c7d60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b28bdfb808ed2c7df779664ebbf541b0abde08": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c51c73ed08d30afc617d04819231224ee4904e048ab132be6823cf419b6e003": "0x9a1329847393a87ad4c25bb21ff093e1d4d050b3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767c5eb8059d9dbb1319f71dbe45952871e59d845": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289453d0ee5abb40b1c632506cd5ac93ea8933cf33e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac4ded60d7ec4175bcc13f8290f946c612090000": "0x62ba968eea9ac1fb02e752328be8c273e0374396051cd47dc602a6ff0145304b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ae34487911e04d149472ff9819d3c0fcf84249": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397839c073864b9958f0aa84446302d41712b1993f8": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a09493ecfecb6c710157bba28443bf28bed792af": "0x005ac97c261100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcd8d9d843b3a5558a914eb74b0ee05e7da49f59": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700004c5c68de80a76948dfcf7a77045af476d346": "0x00d479824c3c38000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890016cd03db08cffafe5afd43d9cc903856a042f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890072d5c92b77a0ca227964a4dfb304acadc78a05": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518c35ec3cfd9571b28ab2f416df6193dd23040000": "0xbe6c22b41a47d782268a2d1eecf5e623ae6b984591db92f77de07a27a447f87c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fe2716ed876e1a4243333758d547131a98490a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d67346067f88f10855b3580e8230dac8650116e4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003813a962efb1a03191600aa682d38b08d953cf": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978036c27fab2691804b28b9f47239e64c15e249bf": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909a89f6468aecaffae52142487eac08e126bc071": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a85f847dd5d86132513b8e5db91d5a05d15d615c121ebcda24f09e496a73901": "0x008211ed672526f479a537039766a8d8daf809f7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004aa70bdd021cf9aaae7e33feb7efb057255266": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781a1929517b52ccb71a63d31774bef3efa6d080e": "0x00f2ce1a272f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c45559a7a79bd667e9dcbd6dfdbf09ae8ba497f": "0x00e0ef26e71200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d109a7113c1d9b145d8af5be42af278d4eb46caaed127c698070b1302fcc4c80c": "0x1ad661fe9878af3b77754710f50981c82549bda8", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516701f038295e7c6414ec2f343ea330a3b6000000": "0x78fd3865bb8c8a833369aea5b5014df0d9e860a390391250f367fbe5771a2b4900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972576f5ef8309dbb23c39be29d62273b4c917d783": "0x0088110e954c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289173216d1fd08e76fd4f25710d2849091ce2fb026": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c8e15c38714d27525ea5dcc9bb1e622f04fd04": "0x00589ab7343401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397feeb1670e956f2d17025c2e80ba377eac074625f": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d66d0e8a978133b248e0d8f228c1040af8f7152f366a2b6543349b2555f21141f": "0xe35219d98bf6f9c693bf04197070d79d9ba73bfc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289196fd44f1f3f36458e9c36324640a8e7ff5fabfe": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5146b9e0027f6fee3677e154a454060dfb68010000": "0x4a009890abc59e1a2fe19b17d72028fc7049052704ad807f463ad1a7a95cba0b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51314c8210c5da410ec73c5d4a07e06fcae9050000": "0x8e2899d61a0734001d791a641f8965228ab1e60b4021750beeeca6194d10c36d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa41228830918cc1cf16e50df86ba154a483d77ebe3182bacfb876af4fe9ff6b": "0x542055cba6dc03f704e613894cc1d5bfdd74dbe0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893b7a90105bf9acbcdc3b5219c1b55bc38397cec5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab94b48bb0eb0f1f9d4f3a66302af5c1406c195d": "0x000038e5be87aa000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976813622de314f3d0f3fa46717374e12a7bf6ffac": "0x00d0841bbabb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98a8cd51a12a19dd5440fde5e43cb50f9d48d95ea5c5ee3618eb0b2945f02f21": "0x9e538fc87abe6b95622e5af0d60906350fbe2280", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005d79be124e0852482eea03f11c3ce1eab68805": "0x00f0caaee75c06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ab6a08ca44645fca5b8a50ddfb04a8f9477923": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970540049071c933a260a422784626b2b894823952": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdffcefb552c1638915cefa56d551c4221e5d6d0": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5170a3b8cf88cd085e117fbdd78220e23d49050000": "0x12e4fa92d67dc73b2ae4a7eab1451467be74b56b03d7892cd31f10ba3991474a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000fa4aa94334c36300b16254889a721a01d6cbb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e367a73ab3fb5ecfbcb4b118bf57538d1d4a77": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927c6574264011276bb58654e48973380d5c20717": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7e97b5534c07fe5d20ae838dfa7a830d5080000": "0x56216e1ef2e122893b8f8057ba5af16febc4e7f977ae6d7148bebb5de8eb316800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927f3ee1c40ec45fda74a1f7c1bf36a66864a2376": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ca3e84bdb1a6d3e68fd572699737d203ffc66ea": "0x00d0d6a3921201000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a8ff8f05a8d95a40db07204752c60359d031ad01e2618e2a5a33b63823d2b1f": "0x9e420616cf7f23f48fd442e11cbb1f36e37546f1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777c56ecfc21bf4bc66adae4898224b07a81b4efa": "0x00909e76a32500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896fbb52a0c06818f7022fcabb7b815f86cfc1eeda": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731b68bed40ea6d8608779acf8c61a453e264e253": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d122783b8ec70bada6ca07f33b05109f4d70c1310ec34d168ae5a93c76fa81d2d": "0x219a0751553ba999f730fc1af78bb5a3f255670b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518b85718a9326ea3664423d84fba5e501f1080000": "0x94b6b94508e6afc5a85d01a5cf4a5bc7db6953981d36ca03d82c851d7964837200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b1c20535f3fc208f2b320157b65ea09e960496": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971739e6e25e3da9107b7f60145dd2c8cbb76fc139": "0x00341a7e291900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb4a41fcb2d83f3cef61737e96467e5045729670": "0x003ab9a30d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890076df9bcdb37939908f00f66c2d3d83b98345a0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff3592363b611cd701ccfa565dff6d1de23dfb2e": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750d919314f2981bda224370b7165fde7bd733040": "0x0060b7986c8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243354b2ae0cce6f0ed8f332f123d4367bb800ac687": "0x00c0afd69136000000000000000000009d4d580000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d107210db50634b820ed2323b16a861a2980dc828cd432458a37efcf0efc33904": "0x62431669ffdeeafb1d3b071ceebe443011b8d6ab", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d34285c047d5d8757551baa45e471e62e72f468": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432a61258bf9cb93b77da65701e212c4f1653abf9c": "0x0020400cf641010000000000000000001ffd080200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433ba7149b3bc64c6f805d02017a0d71e89362de64": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009957a264dfab5c3c7c572c1a4ceb8d1e1ad779": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745271d8057632813229ef2eeb585a3024d6ce876": "0x00c82b5afd4a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754f37dc277ea0ae185cc45886365f99889a9168d": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f9b5d3eb2fc3b978cb71beb0fc309bf7f5070000": "0xd65ce74d64b974f226eb2437a7ef2d13b5c240d1de9d3432186358f4f6f8216300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cbbedda51e4c9cfe80f429f6436a53c9738b59db": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51917de97e51f2c37f26736325a5b7185984070000": "0x8eddba03a0f2ddba21aab778f772c14bc6f1999fc1f5e25fcb2a7ea0da24055d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d8e2e6b9118484134a1925813e545b37cb89102": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88b4bf092b2dcc6e904f78261e8e40a9bd99f108b4b607ae2b9940cb6bef2e0e": "0x75485be7dc5d7e1218052accd222e75d4484df1c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e3b44cad5fb1b7f0e23aecb9564e183a51fc0": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5d005e57310e4c5f148be7ba4dd666db6884c36": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f09452094039cebf83165008759d201e7176d2d3": "0x0012fd6a7f1500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824343a125a9461625e72cf17558f1c8b3b653347686": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ca94b3c294fed7e144817ec4682fd72039057462bb94de1076d6990039c8627": "0x7009eb50d01c3aa66f09ed1b9d675c6edbe392b8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700600ea2eca09b387d5be17a4a7df47d956e1ec4": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d3e9d9cc92f6c3802baa4c0e2f3bde6c3c37c75": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892dbdb05d09c9e0f10446881b9be2e107f91f7e41": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7cc77c4360b1e179bcea17c296e799401504ff28dc6db9840adcafa1b0cb0a4b": "0x7f2981e8a482c36f074440101c3a1007de7048cc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289861bdc02d79dd2598d829fcba91e11f1d26b0aa0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51752ee5209532e0aa6b5f137472e0d6d7b7050000": "0xce46eb5500a059797f47cf38f119ecb0eeb360b856f67fcb7a74e98f52b8415700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971732d95532f10ae18b2317ee75d4ab0981369f37": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed8bda7a810d594f145079dfb46849d8ae35c716": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ebd8cdafc1e22b03b2b6975ae4c4b5c174000000": "0xd650c3670b5cd26153d23688b773c926ac3188fde5961ee0a6b3d4ebc7cd900f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177bc9cbaca6083a380cd81fb7971c80f96080000": "0x860ed6468ffbb2ccc21b5fabba90031f5f828c1fb44ec5d167f183a1afdd2f4c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518cf252f9f343d0a2482eb5e18e19e4d09d050000": "0x4c5ba8bcd28ecb0062f3c8ccfc909982c23ac3d0233756fcc5ba5e88e752aa4a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa884c81b7b5f4b675e2e041826394e8f0b16bbe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad5c6ec30473c916e39a4098f252d8f2561eb975": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971394c491173702c7bf42b7320853fe4ba3630d9b": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a930215be931d1729ed9b5b3919097182b6923ff": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c0b6a53433a49d2d9aa4817570b9ccfef4764cec": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5197ec3677d90a77d8db76e117602844568c060000": "0x9e03aeab23bd20a06fab8fc6b81589d02a4086b57262233b345b61859909167c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5199fd11234e74fb8de5fa27845c1b180844060000": "0x7cb80242c9f91aa58a2a5b8565bd270aca1fe2d83339e83f90b5de02cc2c8b1600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db62858778eee786f221c566984853d9ecd56c03238b3618aa982546de7abda2e": "0x00bbdb18494bba1635fc00d53735c06eeb171908", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e955f59b4abc283f9d5813aed5666666f7476f": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a490262c85d993e3318fd0bdf26bf6ff5c470bf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397729184154b516f6caafdc8ef2826809669a6e082": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a79d6c7ad0312485e375127d0844a4658b220fb3": "0x00f40062128d04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c43b0c4013131b17eccdcef96e6c873a21c3d087": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900692c9b1e40a8eb213880ac4908eb8cfaf1f598": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955b3230118d3952b35b7965b09752dd299a95706": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f94a56eb52dc8ed546f5e737db99958f35090000": "0x0453de8b68a795494ce1ce969819ede9bf795d7e1b389de4f5b01b6fe111840400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243824432f160f254ca59fafad843a74ecb32d3a4fd": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51438e83a610a73fa9a7f3794357cf3cbea9050000": "0xb036f284468b4fb6b3d48f86280cb806fc36713edd255d195504d1f32607af2600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f91769506a288aa7edf21f0100444eec2c6f1033": "0x00f28802947000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130d106f1fbacdd3cb14a7b0fd682e79eef050000": "0x04901365ee56151d864164012b6e08c412f3bff9ba22fcef3dada1e49efc2a0c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4b2611b6a9433aa098aa0a026a1d99037710f66": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e666339d61a192d437f96ad1e40f197d547187c8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6a3ad2ff813cdb72fbf4a76d6a9a7bd276f732e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758445ba5cb35d9d4513df77f8ef3ccc8d608045d": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003d4fcad4255d3f37dd02df6b961b352298a023": "0x00301a45ba2900000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bbb49b1ffed08d3f79a352f1a0f149d88722fd2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2062f4049a118f70b5f523c45f2d637d73a43f73a80949c0c35fc9856043932": "0x4d9354ef22423d1d544a01a2fd8b2ac03af0aa0e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960256530d074465406df460b6f38424ab5df6bed": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d7b42e27e2382e2d28e06bde9d82413906c6c03": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007b2f1e74f2d7a146dc352b987b44bb49d0d6ab": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970021381df55f5e10059831b97653c52d42a1e137": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397341ad4e79cb95c9c556e0bf96863d78a182d08f1": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ced37101dd628249ce535dbb34c9958fc0080000": "0x5e21f84db1d346670f5ae35b49fb1ed8ce2d6019ec1591f1a0a593c7e1e42f0300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b99dbc819bfe468a0418320f3f57eac4d050000": "0xa621946a1439a0a376cca02fe2883fad7aee68a4b93938ba4089a75bb9d60e5b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756feea6b7563f20c2d2dbba65afe424fa39e68b5": "0x00f65e1e190a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a65b40f6e9bd80597482769f6bf1e09d49a5634": "0x009e65b9ad8307000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517b53d01891a919f8cecc8bcbcdfa92c1e5050000": "0xd46f947c425657f5c458d5718cf796b1b6b5c4606da1eab11a2e3b14a50baf2a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51acddaa9e78f4aeeca811f6eb309765c086050000": "0x94c9b57fce4ae83da1b01355bba84a76f5cd8bb7b79cb177085798ea538cd91a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cfcfb4fa0e64528b2c5c8c42e7d46118ae142d92": "0x003c728ed34d01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5109abfdc40187ad848f25a8ba60ab89da36060000": "0xa2341ada39b90cbfffeabc35096269f14b5de2e50446e16ac26d8b02a026394900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf79ded61f78515c23a76e625039bedd77c50aaa": "0x00aac947aa0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890225bf3928801e04bffc49fa57329c999a3bbc41": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950723761bed6eebd4ad8cd418b0b262a66fc0b97": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a71f095a32e886f926f17c350b1dba021d00d50b": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195034dd778889665a6562616265806c52d02d95c30aa567fda284acf25025ca7470f0b0c516ddf94475a1807c4d25": "0xe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436a8d70c0692ce44b04c5ce0a7e77bcc6a0490766": "0x00a031a95fe3000000000000000000000eee6f0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001bdd794e80b596665dfed06d2876eedfe4f1ec": "0x006cfad2dc649c010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896245b5b0af5cb4eb4742f118eb76312b17acb807": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b69412672ab0f9a1e43b9d57f996f7231320e2cb": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955c6c9d943a08b9e39e0ea27c50f0f6b16898f92": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b1bd494502e19e60d13e635c6931fce893f7824": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c301610a4ec130d407fdf49bc4cc94f89b316d17": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5104b536ae130ba7a050ae5a4c6c5f7cb059040000": "0xcb97a0426ba454b11a314f7c9d9479cb519eb93f8c79032abbede30932d67da500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970078c6117d6a926565915465f81e685c29e31f5f": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c00e0743d704094b1d198076a33a33487e2d38c": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d3aa3b4ebd357d5ebde65ce8ac9b4d99ac2b125": "0x001442866bbc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ba739859643cd795fdf204bdcc4236fa6ce04ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b3868d1aeb675f1fe97eae0da557f9fceff37afa": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de1f3d7406b40b58c679920c66e79a6eae050000": "0x9a7d372d156a9cf5315d828bdb0ee0b983253242f676e5760b1eb32b6fbc567c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922a5afcec732df9e65eb56c0ca7fab1c3c26e7d3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009d14e5ef0bdaae60db17775e772dcd9e6130c6": "0x00f031b1450f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970067fe87b5fbabca1cbf1971d25f26162cb2d060": "0x002cb5d95f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8577dadcf48e02e17c649edf5185844dd2df05c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f4ecba233c28d3b5334c7c1c1d1d0e2b1ffc71": "0x00646ce1a00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce28f4350076be8555df352a48c0e9451f6cde0d": "0x00ea2314e21e0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289deda0b6b9c98ac5ea010fe9f2086e93bc1514ec7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e594def1a782c9f0bd4f6e5ad16cee01e380f3": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c17b6f24cf566e25bb33302da671b658577c1373": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04f8e9018e5d7471067ed148c3c91f980b6f713f6d921104bd17b33917a63366": "0xf4f8d0377b14301ea3778fc39552b421b586f7e4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e6f13f5f9c2a098a1b0e02774f73b16f93ed892f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bffcff3d2093925b8a99458b5d9e81dc8c0034": "0x0014e8e34aa101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d4b9143dddb89e914b180b3cd9e55bcd74f7c9a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432ed99752dabb3138a911c2b71c9a80c7fc917614": "0x00a02488070f010000000000000000008c92b60100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970003ec6a173a7f45631ca5d96bb5b0a3ecccb5da": "0x008234c2fa5801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970041910d9e4c61fdd7759a2d317ab892cfd80ec4": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c016f534d20ebfbe4acdec6977762f79317e137e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891d65fe9687372da1184e62ab01638d3949124565": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b13a2ca9b77ef417c02164de32e7a1b34e523d5a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ea6ff3e232c357928eebb2a6548c2efcdb4c6e14d3bff63f4641ff5d874764a": "0x8134fae7112d109c4dd3a1f09aac75f2372cdf0b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e160a7580ca586ea01814a9fcb95f99470a814bee39a7adb651cccfef60b423": "0x5a41d48673da40f5343bc1e871eb360ad8b9bdff", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970074bac45b84b3067a8a8d7044396275532d72a5": "0x00f213b10f0b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005056c4cc0929d2eafdfa995455e68427137dec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ba325bdfa51320407c91f0323c303ac8a01cd7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce28f4350076be8555df352a48c0e9451f6cde0d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289042a8622ec46cf242361e045250ba7687278f929": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970044208bb3e0d5b0dd69cff4eb36acdeb986c189": "0x0024858b773000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ce53c77f34472605558eff3805538aa77b08f10": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b67a2bfea6579b273cfa427637adf9fab925f68a": "0x0010dcdcc56600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700120c2c12a1b40077200b7122aac76068b49490": "0x00ae41ce5b4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddec5caa60a55f5abd1f1aca49f2670591b5709d2d9e94fcebc1e5aaad92a405f": "0xa99e74d6616ae317cbeef70401baef1383d287a3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715b8f1a95061a20392e601bb5bb008415ba20ca6": "0x00ced1754fea00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970069b8480fc4275a0bc10a317a8687deb83ba972": "0x0078ca2c506300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000d31e57b61e464c0241eeb74d9e6ef8f9ebe09": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62b0506e832a39e504dd59605b37bc2aa7c243fd8f4e15687c85ca5b5737fb6b": "0xf786d0aca37d4965c2929cacee16ad42d7cf9bab", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d908f80aba091f8eb3135e7876d51b5b1a7bb188": "0x002691e58db100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511936b87ea893d4e38cfd6c4d9bec038780050000": "0x0c0235079df3f9a6b9a431e0c3bf0e20d673ccb362376937b9e5e423a307fa7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f54663c66d90010e39c7c5f3124b2965e5f0d069": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51940964f22ff1e3b72438f62acf874e4c3d080000": "0x18bf39c2dac34143e07106240352c660e6cf571c4629a77a7751cdc20371e16100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffd011cc6737e113dc8ba4b2cc294e656e9d8f00": "0x00aa63d0763c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5164d2a59074309cb96661d6ef4762abbf7c060000": "0xa232ea049b0cffb350f95dfb094959d721a7c331f0fc8c976539fe521fc8044000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c2cfd55456e03138079a1e3c9d10d8e12070000": "0x80bab9bae5457b9bd180ac52e9d067e4c3a365d114948187d991825c6914c30700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007924aa5e2abb7a230caa625cc0f073f0ca61f4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ddef1f2b6433c7dd4d7012090f5049bbe4c0dc": "0x00ba9d84ec0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5fa99dbaae82b30e809eeccbfe8bcbe0e83f241": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfe344098825e1ac854d356926e44f303b7d08f2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289afd6e8fdc9e0f3579e0b51f4af2587141b34ae18": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f170d28a026ca70f9c4a011409cff2d195d0359b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397121231fa85c0453947732b1e902dfafa04c71563": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60b99a3e1fee8d744f08290a2ade61b26e044862efb7ca60dc0c944ef9d9aa7a": "0x810cff23a588aadac06cd93b443a12fa3a78affc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970387d965a607009b865652830e675a2ad5c734a5": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70001bb5611ed06bc17a2d36520bc84621baca6e76448ef632aec450edb0c971": "0xc923b032f3c9641cfcbc6a909fb66b29faa5449e", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f01fb7123fd21b1428098e7684093babeb59b764": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ad5c481bec025207fa766ae91c8c80dbc2040000": "0x7cf315eb88caf2dcbfdd1161ce790d7293fae62990145fce1213fa4555f4bb5500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895641519cc28def80d631baa28b949f17a6a22ad1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e552266e3743f056350f50ea341a60ecc8080000": "0xc8855e85e66cf69a1652147e4f0f29ff9c32eb0bb2bf5ca462f4f7d022938c6900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824318ad26cf42a6d886352e9337ba7d2e1fa7302c8f": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a5e5e5f1350b92dd9bedcb9b840032fc728dac": "0x005cd94131a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702d0f868a0467b7eedf6b252c6a7e53ea90b13b6": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc4bf2d98b12ab9b121713eafd468e3d1dd1338d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944e45fb5b5bd8e1bf9d1310b761571e73fb02924": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940f0e17c0e8d725e985840198edda545fc3a7162": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436dcbf212a83175dff095fea2d226aca22a93d643": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dacf1956d8f6e2af1d9d1c895a4388a2985a10d99a573be37abf16c86fe5da360": "0xa6497fc08fc439fd02e6cba9782717b3b1d123bd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db86e3fde6516ff1915abd6839a50460ad9e44ef24942d7cc88688de5bbb5ae2a": "0x8e10e1d033589ab6ff05a410ec742434858d3f4e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e6b597b7c166901e03ec2d436ab4de5185b7ad1a59795b90cc403612e17b273": "0x001ed2471e25c381b3c24895fceb399dbb4f319d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928919200c712302c7c8421ca893d95bd985c8586007": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002408a2f9bbf1fee7a53eb361f8eb2ce47aa6af": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976174a3a6ae9bafb6aea1b87fcdaba0bcbeda4ecf": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06fbacf43d7ff4e047983220c1b73b914ad77f93a4d73789c73930b2ba6de643": "0xcfd2bd2a86152bf48b1cb9ab2e52c19d5717fa86", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001adb13591f0a8ac80d152b8902b0a9e66aa599": "0x00448fb25b5910000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7073fdfd03fb9aa8f6153812c21f0a9eb2a14862c76bc8f17fe026c64e3f7369": "0x719819815ba8d64ed7712c3005c8df49b2085368", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d42a0955465512b8f6e3afa33bad2036803c4786825097a6a7b81f289bd1c5201": "0xb03d651170ceee35729aff792d522fd952cf94c0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004af69a0c1ef595d06cdd6fa458165efeb0fa8c": "0x00acc822980700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004c19d0274828f463ee886328a9c797ea9185da": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003087fb385b37b81d76ace33b535fbe1568d19a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dac2f0e3d8c2bec6c5f11f6f5e99adb3e9f3b6ae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978049419a99016123ed264ca39436a91c35c7fe2a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c05dec4d0797b45e7f6e036155261cb1cbb5cb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928971375e5bf468a9461b1b49e25dfc97440b0f277e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce7ed9f16f6ae3a25599f03d4f65f8d3bd7664ba": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fea35be9327aca7beffc93d2b0cfea5d291f7d13": "0x00f00f84b5fb01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397803abe2c97e98816ef63a7b039bb59aa8a380909": "0x00c4c57af23000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950ef20ae1ec6ca0229f4a3195401f1256985bfea": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3cfef97dad26bf0e3f7152edb74b84a278c123b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928941df190f54ac5d369149a92583cfc240154fa8f6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511724f8608fbac57d80eba25efa7287e5f9030000": "0x5cc332716801e8f3a44b124dafbea4f22f4d3b9316d81e16815bf60c1fad095a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5132bf5188ca660aa47a1f9e87c25062b22d040000": "0xda1032f908449065d9512274e07fa2bc8311658a89e10ebb2b93d4d442c3ce2900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f8d8980d3863730a67fd6d320a5f131fff040000": "0x067ad823d661ceda5e04f4f814589bc39a90bfb09660677296cdbff49049e83a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f6b2de83758ce1339fff86482f305172d2020000": "0xf67048f1edb9b4c247c24e8b69219024581aa0d3aa509fbf8567199e2acf247a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515233b5763e4195a8c9de72dbb40dee5523010000": "0xd639c3f23f8d6d929550409f25e95d7b02e50a236ddb0e2c61c0022c04cd2c2500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d822fcb603c9ef8a930dc0cfceb1247f746637c9429bf78c5d97af940c580b42c": "0x008e158b389d89e9f98ab781725f34f5d06e7ed0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a55e8d42c5212d555acc4c1756744ab91530dbad": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80fa64d542fe68bc290ee68b8b71c568b1338488430d5fcc67a4b5bae97b370e": "0xa95e38a8dc50337aed200378a46bfd23d33232f5", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa74a5a45fd63ee5693a96ac0e371fe7559fd8e9895321bc7761e1cbcd73a322": "0x7ad41e9d6e1fa47f1f6bcc63bd0327009590a47b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512e1ff1bb6ac6300c5d2503ca02c1837fa3080000": "0xb48db47e2db5323dbfc4ad1fd358f731424b27a1d3a323eeb57702bf51589c1e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700472a26baddb79f1149a9589a132e5e0f762253": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a99757c8c2bdacdb8c1470ed761d375f962184bf": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6c0c85366f11498dd656da6e5b05bb8eabf1c82": "0x006c95538c7201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d31748110020cb554ef2d73be9dd33892ce435": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008ad6dca0f98838668c5a336ebc4f72e2872e30": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003e922b9535ab92618c64fcb7e08320a8e5c3f0": "0x0028bb1bb14901000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d26171b3ad75723bf624a27485e51e4c2fe38f4b2d24ee52b86a979fb772c513b": "0x0044208bb3e0d5b0dd69cff4eb36acdeb986c189", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f2fdfdb7945f770436d1f41c01b47fb76313a39": "0x004ec3481e5000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900da40c72ba0f9b64145964396c15ccc71cf7766": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec9465777aa326e36b60abfb4a01298a7f51845d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c98707ab918996655722ae43be493b42b1060000": "0x1489a65848401b2fca29f84ca8041af9ec1e8bc08d79469d95554d9c59cbc65900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5a77d735f01aab53e4ff89ccc60d503db7c3b": "0x00e80f27ce5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f29c684feb0dd39f45960bbc4becc9f776be4ef2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbadd8927d3b3276bf4691aaea34e7b5cc8c1afea864578263fd57abc6ded4d45": "0xe3110f4e11c5b4efd2ea579663b23907c98e13f9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750ef20ae1ec6ca0229f4a3195401f1256985bfea": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa93a39e60a804ed41e1bdfd38badd4197e6a977": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928971b183dc5834b02237e996efed6933c104bc9292": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de04ccd02a8675ac3bd0af1ed88f893c33cdd541cf71562b00a8bec1db6d17d44": "0x669b996dfbf62da2ddf0c9ceeac503b920671639", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f77fd2297cb28b7a104f3f4d47b19a50a1ddd451": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcee069cef47b4e49b0d253fc46ac96f191cba7ca32e138122d6771e986c5ae1e": "0x173216d1fd08e76fd4f25710d2849091ce2fb026", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003febedc03910f869564187f04c2ef1ab840fa6": "0x009cc0f3713341000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f15c8b4ab29548dc9c1461c6b88a4d4cc9040000": "0x1894d7a0d8c769f8ce8973709a4215e91f895430fa64a5bbd42c73eb429f3f1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d05ccdd7d7481f71eef6aeb4e0527ad47753272": "0x00e229e1701000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b68bbc3e20ee753a024a480dea125bb69262abb4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971213c5f7d2cfc86eb87f0bc54e0418009ac46f99": "0x006aedf4123200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d87952c78388aa1a73610cb0cc3b694dd040000": "0x1baa453966c043ca367ccfa19f450244447b9d32f4b7af2d9749e55a57ac09cc00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766e369a3a9c3678e3e4d05ef6a9886181c9a2c5b": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cbbf87e662f48e24c47db88fbe9af500e10d05": "0x00aef96617b907000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8a7cd13c25d7237e4e957074e70bc3985920f21": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511fda9d19459a4aae336c650befd78ccf46050000": "0xfa6bec1c59118bb967eacc2d3f52b46779d20a6301fbed69d536e505caf7591900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e659b900949f70623fda99c695dbd27e9cd9e7fb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900004c5c68de80a76948dfcf7a77045af476d346": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc3d336002054a3215fd3cd1f00f08bcc494fbcb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700928ab46f9251610992b3f5fd257cc031f354ba": "0x00427f58a79b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f57e50a2ea8f652c4166eff8ce217baa204e7f17": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002bb2aee0241ac3b7a6fb01a6fdb8c5c7cd61c8": "0x000af98dac2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890035fc5208ef989c28d47e552e92b0c507d2b318": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ffb2420d9a86a67109af4888e729180f69050000": "0x3050a297efff865cd424b60c6b56e4eadd261280c2e156f2b04fc6f1f9e2327900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa4be1af84fe8101f91891adc2d52a37b93dfd11": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1894d7a0d8c769f8ce8973709a4215e91f895430fa64a5bbd42c73eb429f3f1d": "0x9dd8ff7445db83b54311b53593c8cf23dae7ee9f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397442bb3cc2095dfa3447c774c3ecaa91805c4a94f": "0x0048efb761f301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d9acfd7f6917019a8e1f1f25cb8f48faf17f8": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c5180bb2f2975ce4750af769d7a32dcbd69d39ea": "0x0030f20137170100000000000000000064d1c30100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d94c9b57fce4ae83da1b01355bba84a76f5cd8bb7b79cb177085798ea538cd91a": "0xf09452094039cebf83165008759d201e7176d2d3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892215457b391a2660337b75568ec05adaec457502": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea72ad53b162c6759b80a0b33e523f391a9c41a1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d3fdace77e1ceca5128ff2f9269bb27afe9dbe": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513cfac1c10336ba96994c8abd6c5ef4490f070000": "0xbc0d52af72f95b948522eee7d3b09b8d77dd465baebc301f332aa52b1a93b24000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c861c2296e9911ce4a1cd4bbd197a360f8cfdfb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282434c490375c379dbf184757b100561207f8ab1938e": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786ec1830e985a7f8b3c7cebfa6c86774f9b347b9": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900042b93368df4bd63e3764f6508992829dfaf97": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243005b8da2c805e382fdce0dcdb2bfed16611861b9": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432fc342c182bd05c93bc824952d36fb4316392684": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f11b80c9e67dad7ec1a78347f009d5c49040000": "0x22a371deb8c40c0e598bcf145b98cf2603707a87415f0afcda8d4fb8b19f575700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894999ba3e07e8446389fc80467cf6cba34ab2363b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78e6c1972ad777f576760bf364b908b07556bc0db927413c1aa6ceebb79fe562": "0x8963d38fea40b7cb37c9bb2c4d3252415f0b6d65", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824339634580a5670327b6f4f925dd85f2bcc2c44c6d": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743e0c52f9a3920e2f8c01479fdba32a8115ad332": "0x0040ff72163200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd76301e7c4b342f1d805b7205db98f6c1611ad7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df264f0bf05eb6609b213f83c4546f0f196f62e0917699e517903e6ae7be5735e": "0xf947f05d2b295c924a3e6058771180cbb75cd60a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700042b93368df4bd63e3764f6508992829dfaf97": "0x001c1f0e300900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e03aeab23bd20a06fab8fc6b81589d02a4086b57262233b345b61859909167c": "0x00385543ba35bb319a9067f9c03b1a8cf917a6dd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe29d91eef0aac3d083dce8b7033d16b98fe94fc303d21e6e268ad311313844a": "0xadffeef501353d90db6612ed584b1438daf02c4d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974051efad9288cc12636868e4302397a4ba38478d": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ecc3d4267ee15a905e60b267efe7058a8033d41840b86a90afd6fd2544c4242": "0x4b51113c775e15754b42a7ffcef1bc3281adfc01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977363ce9c3118275a73211c2746432167ea95ebb4": "0x0072e669861100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903fee733b242749112fee4ff2bbf7f612dd607ed": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b3bc9934e8b33722ca127accd270cced149b5f": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9e65f133b90e4fcf565abb95408708f9845b90c": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909f8eb817bed2df18ed680c9c310b9ea75c2a488": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895dfa9a92eb14a3455b46eed5f6e17253f304abce": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717161323d264e413ae0984c6ec4825cb4082cf9f": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bbb1ea6d7b0b887163d6e32cbdf53e87187cb3": "0x00301a45ba2900000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x0020706f6c6b61646f74", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd65612e123691bec4f749b69367b6c04653ba5ba43e83e7d2d9237cd4fb2a20c": "0x81a1929517b52ccb71a63d31774bef3efa6d080e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de86782f19fa9e5881223077680101b2b99019": "0x0000434fd7946a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709a89f6468aecaffae52142487eac08e126bc071": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bd8808429c6f5c520232fafa9dfe1ea760c5bf8": "0x00927581d50000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514ad951d71a7b963fe36672537e16406fd4050000": "0x2ace8953c1bd780e51bca97a0d5946b613d918571490c7a11e0181907e21a60a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891cd65f74d01ecbe6a63f131c3bb140a0e0a90955": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d565169aafd38d441981d7560cd298045d69aa86113a0ef023ca4de562441827d": "0x0099fedd81ce071a859bc98a84b7bfdfc52f4242", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f129becea934154fdb5a9a95d1e3825a33070000": "0x9c59488b8c7a70a2d91b288b43f0799a001b1d26bad39fb4e7ec5eb73fa0482f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397200b6591326cca7daf74d4b6a5789824040d5660": "0x00fc5e9c971e16000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce629fe0c1c653419be992df3bfa1c6405a65ab8df60bcdeff1ef5341546fb42": "0x000ce94f81d1f81401712a57f615bfd9b139a657", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c11894e867b2706791252e9f7bb14cff19040000": "0xa8e87388e083b3f1a9dfeef27977d883cf10e7c94acdf0c60f57f0a9621d453900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ec3c0312d2a35ed0677a7f8eb29116ecc4ebb6d4": "0x0040b10baf682c000000000000000000cc7edc4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1cf5cc62622f472e9e347070cc4cfbe265f0e1bfe56e07462cfe8a7b628e3f55": "0x000bc706ebecb19e4c334a8e8e9becef6e58a2f0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c31fd4e2f78849537318712136cbf7317f21828": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5168344daaa8ed71fe4822c715c5b7c13b6c040000": "0xf6f1e50e3c4b01acaa9db382c361d878f07d6e100cff337017a88102ac7cfe6800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5c5062779d44ea2ab0469e155b8cf3e004fce71b3b3d38263cd9fa9478f12f28": "0xd957478b19d8fffb6c622003e411a99f96c42301", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8fcab73fd1b77bf96980783858afad61a357214ab29114ced424a9a2d24834c": "0x99c72a739535fef15968b080611b4752a564a3f8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975feac080c5d43df16479488252694eff5bcf7a2c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d264319ed6a0895c04112917fc9bdc0771f4a4773aae014a99d25bbe06fa1057a": "0x00091bfd5d263eaf2c04134a4ddd0eea8c70468a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff7f274399c5040331a59e941b4971f31e15e47d": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009525c96a2340c3cd1e0d4d11199f781fee5e10": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a69c42be4828dcffcba1bc8dd9bd10f5c3caf3": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243393774d01e81a2fa93affad6e3f75a86a569f11e": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397824432f160f254ca59fafad843a74ecb32d3a4fd": "0x0080c6a47e8d03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5153bd7e1ecb6aaa9fd0f88f3586c50f6e4f040000": "0xc20a5c102573d715a962f123d0991e9c5bf60ca03aea31a1305c72d9d510167100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002c8f6cf6fffece4a83cc3d75760f268bb0c90b": "0x0050be534a1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea72ad53b162c6759b80a0b33e523f391a9c41a1": "0x00de0f257d5781000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289946ef62e1a97865e99dd8366a87506858d83f279": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3cba3cb96173c2dfff3f2bb0cf5e3c70784cffadbf02b1b2be4fcdd1f78e4374": "0x9c6f2351c0d351af08be5f54ca624f1a12417531", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d47559701f69ecb16d40d5fdbdb5f604fdbb9d1c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e5af6b59d2da9b4dbe2ce617dcae625a004b0607": "0x00c06e31d910010000000000000000001184b90100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397188d44d65f4198e7f2714df73b099330a4bebd49": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b28bdfb808ed2c7df779664ebbf541b0abde08": "0x00ce2f83641a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16e7952efb44b46257327d0d81cf6298ef98eb5caaacc783c082a3cd47d0d22d": "0x6407c0c25a5ac315d64b8eea2f315983f4096f7b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24fe4c500ca6a4eb82c597d12ea9e5925549433fde896d7aa5d7f929cf87e17c": "0xb67a2bfea6579b273cfa427637adf9fab925f68a", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da814b8d83478b845fb4997be044588f4970be5507f41cdfd2c57328cbb83224b": "0x46ac13adfb85fb7261d69153e73b006e585509e3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397088cca87b0d829b35efeb6934ff807cd3befc48b": "0x00823c627ebe01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fa8bf3d389f425cd6bdca59d08b92645e236b2f": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008ab9fdfe08b2cc37703e4fd5f1312f885cabb4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965ad859676e14ccafd371f0e5b5841d1ed014cf5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b26577622b961191d9760e43cfe25ce444b02807": "0x0060725ed1cb04000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514c98e04b0c8a8ec399f1efab973b6cd6e6050000": "0xe406ff2bb0c4bddb3b8fa92cba3c11042f2f83580a9ebfc2e5fe0e4102cfd70b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397261c307a058f4a6970c2fd1c3d696fdb968b83a2": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eee540f78117a6ee55e4dfbf89ed4d1153e644": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893fd29fbaf2b2245931f154595c2b909bea226418": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890045ebe3bc90887088d9c91446a2973e79b0f78c": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x183887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450edc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e72015809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa916682104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6ce240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892e40fb968520f859414e62bdb05e5b1f2f6201fb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700567685d0b24e7a550e84ec66adc6fa91c35208": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970de05b51aac16e7df22a871673adc10eb572fe93": "0x0018a2191e1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973716046b0394219102f5c2cdfd234312c0cb59a2": "0x0048a8b159c903000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dbf54f643d3827ab6cd931a05d4643c524060000": "0x845731661473decb5f5f8a168516450f53efb325ce899c6d356aa13b7135666200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397527a1247054d4dee8fe4720990dd8b9154225487": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d247bf0e53c7df2d529571a0f30b45813cd97fcd008f8d20fb42b44a0cd5f1c77": "0x4678b10000b032197ae5a403058cd72096198650", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b33841ab8e4fc931a294256066286270a77632cb": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736569c3f76b66f8d3acaa386be180b76c39a2f19": "0x00646a57109c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742eeeee8340f7018c662faf487351acdf434f301": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005032c359b798eb433f50af95dcd79ab333dc2a": "0x007274b1750100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bd98f74f818c4fbfb760afc077c3c8059b11276": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000e0eff1c1ea2d6c76862b36009e1e1017acb88": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e63bdf498cc6781799cc23953e32dce295a95a0f": "0x00600eebf2bf020000000000000000006a1c730400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8ca8ddd21b83ee3a70faadf02745a57659bd0063b8844312300127a8988c103": "0x1ac7a5d501554f521168dca348bce0e034a3f9a2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5133fd3d50298fc87901c2f33ab4c38bcaab070000": "0xb6750cc4f1e3b72f3b7495883daba0c156f9f5abc93650f2153f2b99ede82f0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d41ec9ddc83bdbead278781f9b8c57fd2028dbf": "0x00b02d87f5a900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893310cb1ad03f5b8a93d5c673e11782f159a017ad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5a48a8500f9b4e22f0eb16c6f4649687674267d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895124f80db491ec897cc316a5e11bc0dac771128c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895937c41f80fc6111e6703873f89270c60fe559a0": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a028bba113c792317061726180a25cc78808d9ffb966aaa53c3c399cff7ea0b409dc8b42908b9f2da6d34c3525": "0x5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c70ad716691ecf66e0665397fa4a7ed8f5979b77": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eeb83600ff5dfb5936a0b8e7dfa7806da471d9": "0x0018809cb72200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975976fd31391dd442d59af9ed43d37a5394379956": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005dd929c6d703a12daee88fc368b849b0505c27": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004f42b803fbc2580a9cd18fc130caebea8651ee": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51635d382a6d09f3b1e1f7f78a6075bdb791060000": "0xa24280ca3cec95cfa124e17a8f01f1dd287bf14df1937d9ed97c91e39ed5a25200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc639594cd4090c83e3bee137a917bbd0a5f3c9bab4f974ba8203f7fd08d1ef37": "0xd95df826fc3ea014f404a1368a254e23d29d99c8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a926f76a86362c456e877e0b3f00c1a43b05c4ce": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817deac2b6fb8a0391cdc0b02ebf3cb87a81e4bea950d63b3ccc5b13cbbbac392261": "0x3c15412599907bcda854ca9f243f32baaf3844a2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087fd9f134dbd9d68a2a869f14d88c812a14051": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289772ea6e9bb2ecfb884c881cd186dede1ae2b63ca": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5141cc37f90fb192d585cda93dd5defb616d070000": "0x4ec0fb95dfc28a7d6a15d3b0307a004048b0acce0b23b340d8c8e646290e803c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c396028b751adc267744c732e5838ef86a0e83bbc957103d31206df3e24f131": "0x746aa9ec270bba58b97a30b5b402efeaab86bd28", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dcb926da7ff3bdd92ea659beea369ef286464e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c7b56263af73e000370631e069866b8256040000": "0x205c26c75bc97c8a32afd10e3a4b7b1af83739b7be3dab18ec7a435cc9b4ff2f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d103092c0a2aa3bbbbd71945f255bd5cfb7a97acd4a7f08efdf2ff5cd9c6cc348": "0x004e0fc93058997aaba684c4b3e9b5549a736fcb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ba5e63b8242e3720ce62015edbbc4037bc44c60": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e10e1d033589ab6ff05a410ec742434858d3f4e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900353dc8b8425298b8b6bdf587c4f5631601715c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004840267ca0976045bee42e0b7dd7dfd3b827ce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008792aa9191cb0bf670babdaab314c232435152": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d5f69c67dae06ce606246a8bd88b552d1dde140": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a77e549ab954b951a118c7106bb46e606e9c445": "0x0080f420e6b500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439ca696ecc735a7a734fbce108cea75f8e982cfa2": "0x00508df5952701000000000000000000134fde0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765ad859676e14ccafd371f0e5b5841d1ed014cf5": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892165753514a94b7777f495bf2634a0baba07534f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ed2d6c16707836c6609b53b802692fe176db28": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893fb4981d33258835ed1de86668344ee3f08c626d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd836ff75f3d718375497728671cb90ab593372cb4a29f953604a77444818e71c": "0x790a8706d0ae9782042de2a022125b746511047d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289460cad37045859b3f67579bb363d3e8f48c4df50": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b78c8f3b56f2e4264792922e064afb51b37c4e58": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1677d96bb82668bb188ec71498db5c0c0c4830e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517fe5709e54e656ab48c8374433dc766292060000": "0x74e4867b46b4d8ca428315963427c002b2e78d0faf10f6f7ce28a3d963cbc65d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1245821dcf1ae288a0dcda3b81a608893cca26a21cc01affb83e9dc64a2a5f4d": "0xb4e721d3968b0c88be2dca14041f75701064b3b6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001b93e99a0ea0e8b12f3df09af6564b460aa7e6": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d087e2eabc4ccaf442c1cb9fcccc3e09560cc0be2fa17f26b3d5a08b658f7db02": "0x8e17fbc2389061940e39af6db317b48ab56d2a33", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f8e35697891efb39506e932c9084a855ee53ef7": "0x00a29f816d3111000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397517d18c6a1f053420d79772cd05b676d3468d21e": "0x0040ee7affbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e4cc4afb6dc15d5be10f9ff1cdb373e6cf1ee3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f53159c395cb16ef27a758ff164280ca28090000": "0xae77fe3329cb18cbb61840793fa16d02319cca0da4ffc3fec7f1a50fbfc1e91f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e578c7d15ce8a11f4e713e63f5465ff324a3a856f7ca64574dbd704597e72d9": "0x1d2fc4af6283590eee0d236dee41b1c0b257472e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68ccb9cfb2b212cb33a483824baaa23e4a088ce87b23d790e3eaf77290eec925": "0x2cf6d5701b164808a3f3886ee6258bf3208c3743", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895db9fef353f8a6c00294a980d2897083499ec00f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fc2d658b3346975cc5bd586efd5e7c26db8c98d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892da0721ba1e1f36de7c61bbf20ed24cb66ce9c1b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5189bf24440ca72c436687043fede30be535060000": "0x2ab6a0d5885b1debcb5f089ce73d3abe16792cd01d63d788609f8d859fc1fe0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c71916faeb4697a163328b984e41cc4035440ee0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aba74c2bbedd2cc9fbf53faea49cf1080aeca487": "0x008a5f28be2406000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723a7e13e72a9844787fab89ca269940f80ae76f1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e5cdd4b7b3a78a4277749957553371cb6b2310": "0x00d01ea1f47316000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d6ddc7a1b324b86019d2a4cc333ddf36a70b0f6c": "0x00c03618962805000000000000000000d8ef580800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008af2eb1b57b4a591e08cd0dcb93b0b0978053f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a2096e3dc4c8173bb1064f33b005844a22513d03": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700951b683e7eedce3efc6199759ea1ab521fa5b3": "0x00f0bf279d5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd408cbacbae6abf32dbca24ba4400709bcca948": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979405ffe8c225312b403cb49a313e7a0da78c1387": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e94ec60bb2c3c196338c7512dd5dc87839aa2d18": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51484d257daa10da0e6fd9b5529818625c06000000": "0x0061d29cf9d6d397701166c8c1e07d742e1852fd8ece9731f8d1fb9243bf131d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5193b1135eb7bad1b83a36265ecad11170d1040000": "0x08a42f9d42527558253666ca03c7ba05ed79b0ee71469cdeb27d99482da0932000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df0de782e8bad3c663be60812f0a2ac63464f5da3ec448c73334c07d71ef27f2c": "0x00ee03095cfa46cab6e89cdf19dc2cdc64fc76d2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd6077b2cf2af58f058dce80e52283bb700ac5d2cf8a979fb6b8e6f4f90a04544": "0x000e229e2cccd3c40cc7d3182ac72fde71122213", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945008c79499a54004ebf93a3b1a902f009a6f41f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f19d683242168f46e014eb8db43d21b7e8040000": "0x040fddcb4b5b6707697e2431f7330ee99372e2a55b955bf7b93f8a853d07f10f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f527277ddc787974e57fc195a0ed5c86cf5ddeec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928939274cc91485b4501445ba4c1a67b16e6a5fd78b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe8b6c175c9b2c8e856d8d8f48b48b2e6ff221dad80764466c4f4ff46132b427": "0x0ae46dc2234842d01e72c6d688bc2e1c4b18a004", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397542055cba6dc03f704e613894cc1d5bfdd74dbe0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718e653d8262814fb82b703cf058c97e7b2020c38": "0x002a9799bdbd01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908c204dc28bcd0c991b903bfed4eb5309d1053ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890074bac45b84b3067a8a8d7044396275532d72a5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22cf9dc37215691aeb166d34895f9651b6b9f0eac9e67795b1d48e8eea19a371": "0x98c97b38d63ba67d0770cdcf8115a5c8a470e937", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e3597e85a29412f80e5597cacb09fc7aa4ea9d3a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f6be6461b1a0badb3d4458da2f77da2268b83a9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b58917b2b71399c841b985727a3ff7fb59547f1": "0x00605f3580ce02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfab20f6aac6679222f627da75051b3866b8a547686f676a73a906ef985c48c38": "0xf9c86dd81e7c9af956327767f5e9c5da7a3bdf21", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897daee2fdc5f2aed7ccd792223a8945707469d1d4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913983684c4cddfc884ad85d31f5e46f078f13095": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744401fb5cedde57d33b2898ee66cc263029b6508": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cbe4cd526f64beb3f283fe5afdce5192cdc261db": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef788a96d4857ba2e5a46a461985577fde080000": "0x9aad9414088708b92ec181c612190b68da9d63cdc7a62f1d0c6ed9f56847122400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397657944ab5a639ec79ba234dabfd0eb792ee9412a": "0x00a0205a752900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e6fa0b582cd2af8429ce2629445a21097020000": "0x4ac3e0cbc1bf2889a7d39e3a2d4f3f1a2ea203367207c98c62a0d7fddaa2251000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711efc885eda7ddde9c1c77f2946737796ef06e3f": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289620348621ce092ee666b698246491e95c8e61499": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ec4e012df5a2a6ad90def9941c754c27d7eb0d": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de6d97bf878b1012927ae6afb7e092c541a5abc3904656981beaefb9ebb781d1c": "0xeb2ef83188323b61e2cad0ad628bfa33e45cd0c8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5857a2b92920aeb74ab5f9ee71485235eb11e81979f0efcd45c4e6099f4e8212": "0x5f0549f359ac15f6afa11cf6b0d78c22242802a2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512d06c5e1794ad888faa7628ccf02e5d191050000": "0x761a334025503fc32b8d7029bd4f1f90fa08b78f6144e0680b430931c36de76a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa5640a653470ee0da616be3b471374a4af3bf29545d540b5fa7c63b59c9d060": "0xc326c5ab988880f8fe6c1e17b97cfbea724a39cc", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84769386be549c14827cecb1b29051855410397dc53ac9a6c38917878db70577": "0xe0ba2bcb31e7789cf711bdb657cc69526bb9a2f7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf51d287fc91f694da8c8ed0005b1251397eba": "0x00746ba880fb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397554c9622a293ea2f075f259f06d9f19b9154c253": "0x004ad900dc0c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdacb2381dea4e23621e4e3f5c8f0ae020cfc688": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e18eb8520947679c4780bae0abb06e6a219b8df7": "0x002a535b914203000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51508f79d042ff0b1efd0be28dfdd48ecf25090000": "0x8a05b03e8c6bb87fac85e9d3a627f076be05c5e38fbb911f88510ee1e274b70000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06ab119355c4230391d5a2983adcf81d91fa5c160c77993512437b35bfa67d41": "0x41f2f7387969ac7c06fa49a29fc479c22a9ec8e6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5135cc8473ab8efb62994f898e34bd1d33e3040000": "0x86bacff9e50488125f449229ffa6767a36ab06a48b04e41c70cc7e6d82359d7d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c2a6baa6ddb14dca58593ca97531705f61781e9e6d7eb181bf8d0bc5ccc162e": "0xdbda5deda828ffa3c15dc99cad296c5671181fd3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798e43e922b829f33f3a8c9a81943df15706e7441": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928934cc2861eeb213da8bf366becdfb319f16aff12c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b00ae1e677b27eee9955d632ff07a8590210b366": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe265551142de05f83c1ae9bc54ee9bd1248f80b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004c8ab207f6e5e33d260559aff9cff4d803f4da": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df93b554f8a7c976f8fdb35afe4880a13b463dda": "0x004810e3f90a10000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7017fbaea2e43910a041dd8513d200c3cba7b6dda9f84f565e7800fad57ae55d": "0x3fe5d6a2d1caba760006007687adca8661a252f4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899157a5fbc82a5eca9ebc3a225de072b4ebe7cc30": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b614ba568f71a18428d29dc741ef829140b46e5": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5172523eb9e57bba09fb1c7651f641cb74ae040000": "0xde55dc13c5df43146dd3a4e8b44da6a27d052dd19443121adc90bbd690b4c33400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51102aa58f350146961bca1b6ec7bb933b9b030000": "0xd44028df7e4094fe55acc1d3decd7b43349c968bece089408f40391002d6680700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2cd0447bbdce4d89867458397fe69cc242c9e1cfda74ce65eef5fd6af8858d1a": "0xecdfb30ff7141766182ca031e20777c0bca09306", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3223bf5cc2f5be39a507a92ace7e924cc07bfb43bcb61aeb55e09fb63affd53f": "0x08548af3414d04416f96f60cb1c39dc8ea927b4c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008b0c207b6efeccb38af8b6849ffa6b9be0eb61": "0x00e45615d51b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe8f3d02414c57745f1e87be25ee3496a1a573ff": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0ed4774f5cb36752a3661f8248958418d4bd1": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe3f8396e3f7de378fe665cd2cd3521af932a8a376d8d81dda40bb4e4438504f": "0x14ba180622dcd7ff90ca091fae20ffc0dc847100", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa7f691c51ed0ef0f26c8f780911c95d5ed62ad8": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4e822f53c6197f69e968d91b2e0d7ef65d1c4a870cecad43f82195e7841e51a": "0x51a5356d5546a139adadf0a7752c4ba266dae69a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700411a29c7d830c7e7461e7ef541b1a7a00453ff": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824335edf1cce3d9c1775ff5e214dbfee26abec3fb3b": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d56137106658725f976ea2409e4a015d980c2cfafec7b57d1e4b7fe268cc35b2f": "0xbd546ebfde341c6b20726d206d084de51c316358", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900036d90bb4e462221fbe06403a023192c0e6c4f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5141e9f73f8f95e65a2f769eb843d5f04054000000": "0x64ae31d2250bcfed87214097d5e793c9426c03c193d3c47533506281f5b3446100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e0956573baada8dd69fae1cff092d73739050000": "0x447942da8bdc750d846b7ba4f88b0d8b3ee8f00f83949e07339656a5b5c04a7700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965dd37ee6e2df4710af8229d4aa913ea6264ddb7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8094382e17e1d0c9393bf84d2fa671d57a71a05": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0efda181dd90a361cc220d5b9a6a12b38a551": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5185eac9818c58dfeee4f5bde4ba8c2e9f34090000": "0xe01265d6a89565dde0b89e1b68e74b661d389dcb7619efb71e5c9d8ba46ec72200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb41214ae65c8ea58500c913d29305ac2092f0d0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515bb0ad1d2ccafb0c76bd51186991e886ab040000": "0x4a39b2e373446d6df599953c0b0601c66d266732324077924b8aa89e0e54371000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516f81d200bf815640442722e6fdf3ca7919080000": "0xe804b725c80575d237aff27c784f805903dc0a98a108c46f70486c9b49a34e2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824301beef9b0f0a48597e1454d75eb062d70775b13a": "0x00a031a95fe3000000000000000000000eee6f0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20dbb8000a9a464d581d28cfa5fc2f4d49e4a1159e9cdf039111559fdd2c6502": "0xb26577622b961191d9760e43cfe25ce444b02807", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979944d6a90b6e313fa8dcd0281d7760ffe4ee0530": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b129e8f6a6e723e77313bf99718cdd640721d5": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bebb6f638336fe10517a0b38bd73105f2086690f": "0x007045af21f501000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c989efe9779ddef5ba408bc1d3bdfbbe3c070000": "0x00c68940bd54119e1b84fbf90e9dd10034a2b937f2c2016a155100a598db892b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760540e1682be7484af2d79b6cfda708ee285dc8e": "0x007aa137823e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bfe953b6bb77bf8c7851141ca684c5dcfd6cb925": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5109dc7278361f28885afe053ebff3ab23e3050000": "0x4a7b08615c6206550ca43f314f3814deb5842b7dee2ad0af0d292847cedc661d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed8f71ffd7c2e8d8b37564a4e3b5d6fefa7f66c1": "0x00c6a6060c2001000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8820d7c939883f302beb71f2d459632bb46ce2ed64456f90e6b31a6980704a23": "0x00554019bc1d942aef1cbf7ee6becdab99ca91d7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890e8e3a75280f066163eddafe3c5fa91ea6196047": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b53d311cf309403b9f3538ffe66927c3702ea8": "0x00145319b51000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289151712ac05d7df898940e3be3ccabf6d77cd4150": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ff9783bc7ee8de42612f752d6145fa729402a59": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943eb43b52539b354b30f15b96367a733b109432b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894daae42c5e89d09da39cb90f81bcb2acbfddf67c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894dff7bffb7fc240abf06141976d2fe0bf610edee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d849681da9673b51535230397b2aad3e68f7d49": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900577ac183e66678ad5f27a8e5cde19eda76cf6d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e2899d61a0734001d791a641f8965228ab1e60b4021750beeeca6194d10c36d": "0x005dd1c702c3fcbca5f63b3ab931b15e03b3c9ed", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519daaceaae8c28139c4732f43e449c51af5050000": "0xa6ff9f3390c3e28e47d5eb35081d2bff9ed3a3db244c46b29ed0bd09adc32f2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c2fdc1f6d5ade6a3d39ab48d545a6a59d971265": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c6480536395191bbc760632ae89722cba67f49042cd1a5a5e729c3186a41767": "0xa6c0c85366f11498dd656da6e5b05bb8eabf1c82", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397097b2eece415aa2a4a7b1e0c310c81ea3ee1e292": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d963cce358c1b7f7a0dad86343e1ef27995a3559168a1f5d8f3b33c24a023b754": "0x72381e109c9f9f9318307e249fdbd0304cc6559e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054cf3827073c8663e5211e7af6c63ed4b0ceac": "0x00ea56e6bb8302000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895246fd9b509ae75c0f4b2c176c3ee71de674f292": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ca260bfbe4c116f9f13d007d83c27f8e7bbc675": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a8d40e52242e2bcb59b5163e4f7aa05ec1c7474": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898622cef8a526857f4a3223af10b302fc29f79226": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f00098c1c1c81604a82b903cc34f91436e6a72ff": "0x00c0e1d0612100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eb010991bbcdec44b94ba7814cffe2540e080000": "0xdc3ebef58d5bbd698bd02d914225a4736cf023bc21ebce7cd1a41c03a432457500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c2e1891250427bebe1e66c1d86d1ef010e4396": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e82b6cab96e3a03c7f974089a585b10893a5a9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a50382a9b22b0720698d39131fcbe289841a54bd": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714f7f1344ee6dfe20dd9d292c543e9e443babbec": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec77c48e880d46812d3e9c6fc5e4f8858f51d94c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bea41f180d6d5a48ebfb12f9c497ed3ffe1453": "0x00ceb632b62800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f043f875302e01d60d90831ca17593557969b10": "0x0080cbc1f98e0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397319112568bec6af88d43c258f36d94319bf1ac23": "0x00c61bc45a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2989b71404e366138b454d9e27295671f96ebd3": "0x00be5b46221900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778a451390d870ab409d22dd5afabbbb623166e3f": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d09c9097d59b173ed38c0bc7b709f432b080000": "0xace38628d126313f685422e818d27331e9afae30fec205b60f5741faeb831c3100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b86a8cbd383f9a45c70ed742eb6edfa2e1aa8e9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8ba75ea553f7049eb54e20e3ef220054bbbe583": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778ab8402b3e615c292fe9a69a9b4ac17983bc875": "0x00caf46a592700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890089698ab4f16050d36225631917d4db489dc251": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df5aa870ca48f1dd80eeb75b80b7d2d797d74ca8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289642a4f994bcbf6fea70c54ec416ed9de02f8e00c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977c6f7a1f67e4810c454d57f5972da4761f8079f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff7f274399c5040331a59e941b4971f31e15e47d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80f9384b92e09042571a9e5cd43d9656d62acfeb0324ff44698bb2cfe422b36b": "0xe4b424e1ccc6f08768c921455f83181bacbfe3f0", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51950f765ed1dd62bf1261877a398b1b9a64050000": "0xae7976297df7e47f83d7166c1dc7c5170c45574aa384519a0bbd549479bb913900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976064d1a20e529ea15b06551e1690c8f50342edf2": "0x00dc6ca21dbf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976abe176c495486e953392e1203c4f675aa7bcce0": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778d4635ec2588de43585ca514e0ea0201c52f689": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e4c6d9d21ed31544cc123f5153d39fe65e9a9e1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970017a7dbf1051e0ea2a57513ff9423919bc8a5e3": "0x001a489e301000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e0834be7dd8eb02ee1ae17ba5af36b576df80a3b9be07f8837c3739ea698662": "0x6a4bab3ab426b32a90c353ae450a1d9712d67d64", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6a8d75bc5e3c79b23e45d6ff505015db1b0b753": "0x00ca73a98f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ef47d6455ac924fd91990a3c5aa921f15e9ffd88df32cf6d59adee70108ce26": "0x009978d735f1a23bb6922b620c490ac4aba66cfd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b01d06372d7bfdf7ddacb9b11037e024377810": "0x005a2febd9e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397209e077793d4f2390c410705351407ddd7a31d99": "0x00dcd1db054800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ddaad281bd203effd53340aab51fbcef400e9c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df6f1e50e3c4b01acaa9db382c361d878f07d6e100cff337017a88102ac7cfe68": "0xa83f2bcefba0bc8bc10f88eebabb7806bce2f156", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fcbce22223d8e6051bd25cd6026ba660f81b04": "0x0000434fd7946a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512b3c75d714728e67c417cfabafeec8e21b050000": "0xd4d775911ffa93f25ad53bc9243483e0ca632eb22ea96ede54c71b9a75060b3100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a70464ab2804d852f76709174e8f4c30b46e7c58dd5ad8d189865185873521a": "0x3842775e7e6cba076c5f3d44f0fc444b93a1502b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890088f9993ebf41b1009dc7b17a4a01ae47bbfbc5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac15089b8aec4ee664da691ca3e7e29bbdf1b7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d18f26f499a9c3e89abe57a17973da7fac070000": "0x78e6c1972ad777f576760bf364b908b07556bc0db927413c1aa6ceebb79fe56200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c12f8fec9a75f790a19e955ff87908b0a89ddc8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764be1c1a0198370f53b2081e15478be3135d6bef": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de25e8c141e674ba58ca7fd0043366f6903488f3c585ff1180c9993eb896a3373": "0x482b1c8fcbb12b90573071652cc5d46fc24fa426", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513178133b82824ff0c8ee279bfde224ea7c070000": "0x96c27443a5b800cd9324210798250c05f931bee9db9d99c0e1968b820da5b56700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f8978b550c0291627d5604a84e76fc044c23fb5": "0x00b4d0d53e1bd8090000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d098fec4ecf9ac948b17a179c638f1dbbcef72d": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437886c5f36d2d74ddae70a9125b9f375fbf614cd7": "0x0000869eae29d50000000000000000006d2def5801000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397970a3182ec4dbe8115a001c5abf6f5383cfd6c6c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4f934bf2530bc28447f594ff4f05818afec1e8d": "0x00e6a893f59d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289291cb06901bae540721973fb6a98a2f6170b21a0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519d604dede2a84bceee5bc19236b33555e1010000": "0x0a2eab03e8d24c980a0b7a03c30f0c5537caf9c27907477fe481898217d25c7000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955755dcb998f1218761831ffd74747cdeb54e1ba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d0d4cfa04b458077b80a2b625bca31d710cb0e9": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b7f164ab2ee6bc8581a0d06bfae3fb98e258b265": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736518f6425b4e3d1045cac34d91cacdb49bbb9ad": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec3af4ace34c5c019a1bc08de4dd22df31f0895f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5172fa18d14b7be8c1c85c7603400dd37a35030000": "0x9efbf480d958cdfcb501e7c573026da710fbc824f4fa05501fa36cfad8dfcd5000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76b3fa5836fb5eb23288d20ac261989160ce1c76eded0e23e6e25ab982341529": "0xdfad4e398bcfee3910f788ba02ac6de09156ff44", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9bc7845bcdf580a95687ae90c37e0b7f995135f": "0x000ed4b73e3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db32770b6f97f03b60991eb4d710ad6d28a09ff4671e8b50c6f6347edcf059d3d": "0x7c33a725229490756ac021941021ea509853ff7d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005e14b50c77daf1b3fc6f12f3b4cf820a313adc": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900365211e85575a3a4ade9c33c7207fcfe886bb7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c838d644d5b60a023afed7497c311fa78175a6d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518e7900765e74c99e96bb05cc73cc41c69f040000": "0xaa6130c09a0f5db6245a628b67546a22b2a9c691b076073711a0fe0a9803a14b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dcf5ac110bfb16933b6f50b5e5f8e38c98d39481": "0x00347818775500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972d6b2f916ffed3858da78c4b91c40954bea13fc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a4e325e0ff51a61d129d2848b0e6a5324bb42471": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a89681d73055acfac5c4ce4ed108c3ea7a84a59": "0x00a0e05ed2d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6f5646d9e7fbee7cc907eb8e12dafa5378431e6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecb3531beae3a8d1c0827a8ce461025835feb8fb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890887159799951fa038ecd71dd8335d2c19d14d29": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722a35cbb6356055d8216a36af746c58bcfb99566": "0x006426b3d1ba4e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897e3c5b62a7faf6f5c4fe49eed72acca25edcf2e4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cbbc5d06be48b9b1d90a8e787b4d42bc4a3b74a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009b6f347d957e1374610319d75d49348c54251c": "0x00c0fd58439600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397928318b2e90c8b1a5255d03ee5eb3a1533e3dbea": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900406bb075308305d80cfa3e5121ba4354d200f6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289279e235500d1b882c58d2b679ed5253b6e3df0d3": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a50ee9a3d2480093dd4d94442dd6e9ef2044ed39": "0x0000b605da79630000000000000000004426f8a000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bc894689f9202d7e7b18734c97453335548694": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb499f916df9a47952ca10324161b4ff89000000": "0x1e05e059f95a160e511a4a2c00c70031f65a84dcda52ed3532f4e8d6959d395d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969f32538b86469d94666f6d7f570185dda0a6781": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d42059f4bba9e1ec1aff76fc2c0afffbb0abe68c": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ea81d109d526eebecfc18c680281235a4bf23fade14e838d120a2943a48efab": "0x0c12f8fec9a75f790a19e955ff87908b0a89ddc8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d34d46a7b5d29b3012f3d797ddbdf0e2a5a211d5a2f071a48828897a2f35ca30e": "0x00c39eb735f8dbdf396c2749f298cba2bfd74cde", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a976f1fe1d9b93e4931a5fc14d9312f64677e32033366f01d9f855edc92ed12": "0x006307f7e5034af0a325f5eb706ec2a8dda67c09", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432658a833b04556526cbd6b2caab0a9fada7d8977": "0x0070c7f9924000000000000000000000fa7d680000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970041a3cf4d4230d2ac84ad786f5675c9c06779a6": "0x001a5524560200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c3e4e713e333bbc44b36f89912b5d8dfecb725f": "0x00fa194ed82900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d04c895bdb4bde0c4f6d3cdd1d2d6483e5a8a946": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975432d9368e60cf5c7b3b166a2b2354864d3d12cf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002128dc2b569d5765ff40f2656d6d7b91422c58": "0x0022afc58d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098a926dfd4c742a18bb91e0dd1196cab95f4b6": "0x00f6e55aa32401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f581c3646c7eba0b95e6ad486ee48c2be833b660": "0x00465a9730f100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431c495e48cc5612e90dbfff05b12532a69303bf72": "0x00000e8308e4090000000000000000007744011000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aea57f34d0f7c04bf6f29e4b91baf66955901035": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec27421edc22ae46c23ad1e8b34f8651b3d1d350": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738103bda64188813b4d890ecd742d389589525bf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970033f21fa9aaff0f79eaf1759611f0d8c60f7b03": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005789f1339729bd51c51cc221efaaeb571b6dfb": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700185a694e3eb29e58f03442d75a8f59479ac8c4": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735edf1cce3d9c1775ff5e214dbfee26abec3fb3b": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b89265b5f43d642a6bbbea3d06be0f781d090000": "0xca56407a6476d9375e9dd68a55e38feeb2cff715286f9c8597e2272453e8af6000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928914ff1233fa526a1c2a67640f637ffb1bce5df502": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5a77d735f01aab53e4ff89ccc60d503db7c3b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894051efad9288cc12636868e4302397a4ba38478d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b22aa7e75b82d9ac77525ec0d7648872d8050000": "0x2ea620515ca448e7d546849540f0ffe2bc8dc3b665b7b1350f21f70a35fac05500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e039e727602a1124e3a879731e5f68ecd040000": "0x00fedab32153c74b69435ee6c8df8c097d47a12e6e513a05079f7cee24c3511300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1650c532ed1a8641e8922aa24ade0ff411d03edd9ed1c6b7fe42f1a801cee37c": "0x44e5715f7db1a59de2af178cdad023b16e39da31", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700512a3d8d53dcea7e5eb52946e0d41988b6ca55": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d65fe9687372da1184e62ab01638d3949124565": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0298def89745f03113783ad625933dd7732fd69": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764606650c04bde33fab32ad33833dde37b47360b": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51399b84b7524151ab86bf4415ccf69f1830060000": "0xac7def1123c306bd08a5dc4651f054c92854a6f6181a7e5cef8a1cf45790b42a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431c6b8bda3f7adaf20a55a970706d195a3ef9a1cc": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890074b0b90a98675309b9db4c27badd1b8ea42b0b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c03372f10f16d819de4d9b22f59caa35b91c0d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa3b62303f219bd6622c9039ce7df26e89cbe72b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966b9dfaea3ddef53b98da82a224f70842c817703": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51323946c2ba683a95c7db955bad38a928c2070000": "0xcee1aac0dd848c7cdd6be9ade44d705c02f821cdd2bb857a3add5388b324003600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890004ed6ee7f9141133026274973ed0ee4ce84f65": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6ddc7a1b324b86019d2a4cc333ddf36a70b0f6c": "0x00c03618962805000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002a7fd49620dac7ed03ba8cdd224ec2ddd16a1c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f2c73d48441ebbd6f8b6c7307732c77ca5060000": "0x04bbc70b5c1467975bc6ab17d413ed85adc3ad473e3ea52b0f87abc2eab0557100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d608143776c6a638a7732e342ded84da6ed30c006087c12f022df56b74571e456": "0xd5162bef9ca95cab0b5469e0399878923131d36c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb8192767e4a432cf722450cdd0985d904e6b748": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890048e604f2473ee6eca508c80397d2d8cee49bae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731a7a3da4c0952b89144a7f47e04c47dabe9d914": "0x00a6add62f8601000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515cb3ba30ccd2c8e8ee4232bd7e7859e8d3060000": "0x18857b6eb8e9baf2c7b1914ffb45ae7c73d017d0d0bfd0ed7155a7c8f6c0511b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ac6d62145c0db63bac474a8bf1ac31ade59b9": "0x00d87b79642800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44e78b7a854326aa0e22da37b9041acfbdfd06eb176a44e76c105928938d3d6b": "0x005d79be124e0852482eea03f11c3ce1eab68805", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ae39db49af9e2dec759ad1647fdadefb7184399": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ca509880fffc0b2dd5c6a4ffff2074483f0e982": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952a7310eb44ee058ca1a430356defa045e4153b5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8f13d654e51f66ed93335d573ab2da1cdaf832d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771375e5bf468a9461b1b49e25dfc97440b0f277e": "0x0044db3fc1ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de071f2e75eedf15710e782320a18a5f76510b8d991c9f5f6054b99bf2610e73c": "0x00fff7e689a4ed9668c9207f55c8d68bab1cb507", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896abcac223e44ced17304fe30be5d35661ed1d142": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f2986549e4a6d8486b64bee434a3978c3e5a1bc": "0x00e0ec47918f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a20f355ae68be4805fab64fe798f19e6db744a": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976236f26b6bf5e69bae11e794e9ef25d3895b3b1d": "0x00465d66090b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769ff7706b367405d95890cba4d905a9f040cd467": "0x00408ab5c74301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971221d505ceba3ea8f70b3324e11ee7eae3740b93": "0x00885fd4d4ae5b000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72117b487f33e88cbfb017e9925874f664a0d0cabebafecf2a2677eff0cb847a": "0x97d9c5ee5dd7eeb360eaa1cf37252154ca145e2b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e5faccf1d24fc1db3347fe4315bb7d00bbc45b7": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397301ddc73314300e25229803eb78e02ada22c9059": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289206dcd656eb235659735538e8c7e708ba0c3779d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a6badf4b7cb3eab8cdb6216d1a334a48be8c5db": "0x0084df6214a700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5114cc1e3fec7fa8d8d75cd2668442929015020000": "0x70fb86ded71ec9629d9edd8f664d277ca1695b56c069cc710c823f6eb7ce091700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700406bb075308305d80cfa3e5121ba4354d200f6": "0x002a3246641c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008e7bdaa3171666718763a8b46b28415c256a8d": "0x00284c32795300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952ce0fbe0808b1602284b9cbe22d0cb06203fb4e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51caac2474c0b5c1b163b8ae01dc00964f83050000": "0x8e5df47c25340b48d443389c64abf88909ded6b6dd62c01548840970cc4f14a500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c15031d35a947d4f64c09b7153cf9a0b2b18a431": "0x00667b03933200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1cc0cacf39176b5947925ed5084e7badd44b625": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003278cdde8afa055f7a54a0e928965df0d681a2": "0x00", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x0e6de68b13b82479fbe988ab9ecb16bad446b67b993cdd9198cd41c7c6259c49", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e527eaf454a93e9aaf096b404c8450e66cbb9ed": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51be1f3931028cc05c2e18a319e8f64f9e08000000": "0x3c82ab06b794c99f14a161973be7aa6012568b1c491d45ec969ed7420bcfaa5900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df524873fc92acd043016194ea11dfa3276f7e70": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d663525fbf0252118f120be94f11c5d24beb308b9414cb670ac1bcb05edd9de43": "0xd396f87af37acca0980aeb814375eb46880d37bc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b41a84ae7ae518633f1eea1d4f4d13c4cf8dd6a7": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899dd8ff7445db83b54311b53593c8cf23dae7ee9f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b5a5a1382d1d88caaec3262a614216da798e5f": "0x0044c061f50800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397462891ac9ea16c799f864e308c7e73829faafc02": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad5c6ec30473c916e39a4098f252d8f2561eb975": "0x00ae9ee8812f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397343f61f6d7393b93a6693b0114b8be1fec7fe9b5": "0x00d6de0f830800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716af41d7d554e5814b2a906b2ac27bac06c9a61a": "0x003ec7d7905d48000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6fbb8b9ba0bb75bd0f6109df41a2d22a6f48566": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890040c3cb223f156e97861b8afb63fc8f62e577b2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890150dea99371e59d756012651a55cfe5e7a1299e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000b07ee73f21b4946786178085fcf66f760b69c": "0x009e4397200200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c2acbebe3deafc493391631727c11da323aaa8e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f9623e0605ed7294195c72779b378b442834633": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ae20bb9616cc25af5dfe06997d4e5b8437a7421": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51faac345842aa79367bfd9ff8853732cb4c010000": "0xd8c7102e0d36e57f8df5a97e7ddf1d194903a45378036d95d25e7dfe9259847a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d000dbbcd4f4f6dbf3f62581d050c4b9e0f23ab599a59502df2e0cd0c83677746": "0xc8f5bda31f9c72d742e8763200717a78b8081be8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c911f087ecbd131871ac6262c81521e5f32f5e626d30ffb35456a42c0d95c35": "0x00406bb075308305d80cfa3e5121ba4354d200f6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a974c739d6a0f8bbf598f8da986f6667b347eb78": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004f7dda0a8e0054890ca92e930239cdb6a6f74f": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971749564105214d51d63a7a2c1178203a4c0c4671": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513471c945df32d458153154909e5aa95313070000": "0xee94ebffc484d8d283783d8eaf3080c5af24811ad9c23a9cc52d8ec7f928fc2e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d9bd91673fffca8936f266f14ebbcf940f684658": "0x0030c374696c080000000000000000007e72a10d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ab980e9f3b036a21ad11568aa020f6ffb407067": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062633756e91d8fca9dde56511e65f7a1d73298": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517edda4d9ca05bb3d38fbcd4f065bb525ff050000": "0xba61cf8a989911a9a3f51ddeffdfb15e959fdf99b1dc76a3ad576243dc2f4d7e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51085330ee641d8c10839bf3f58469705a72070000": "0xc0b8e03e1b852120a5cba39dffcfd8dafd1a882472200210c3a8e6a51bb1c02000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511c2611385af81e1c51937a544823048ddb070000": "0x22fff76bb4a0a5d66cff0392dbc083abbac3b3046f6fcc328abf0ddd16ca083700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510a3100e4191acfb6632e8219c803535687080000": "0x8f75b9f984e23dfacdb81f0bcfc56370a0933a026545a0eb04df04ec3630f74700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1cab702cdcb0a445bc6b19ced6efe6d911adfac": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923c93d5b4d09093d82ec6b4e62505071c3ef00f9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c3281efb7dcaa9970370a2a5d842c3616f815ca": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895dedb58e1daed431391fe2f71a4296ab37e01462": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51302048fee6c45a3394d281a0b1fb09e7ae070000": "0xb87e61450d3bf5521e5c3f466faeca51b8242ceb29296dffeb4cb9a92312717800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243eeba76f589cb390ceaee0f15302f5cd567a05b44": "0x00e8212ac29708000000000000000000e296e70d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003e07c10cd803f10f33b0a1c470a8e3f7e326f4": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b22169c960de13bcee687ffc210c714aa77235": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971de627e3faf8e64287bd2152ca027e4eff582790": "0x004e6904cee701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b78bdc1a48d2186c3a5c3c8c0892ef47155f85d": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903b98c95a07743243350cc5eee4ee030e8e09d06": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24e1cd7f14516acf2a8ddeedac439da4b58536cf7ff061690f7bc921e1741a1d": "0xa3182c6b3fabe222b3bc13c912232d037bd765d0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef039c706c593b89dc9a9113f96430cdb47a592d": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397678498badbe31d20f718a303e51324a6d039e7af": "0x00fee1cd577700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907b8ae7d128d58f51815d99b751c0dd9b6cf2d44": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12810d0b133504b5b0f6174b2ef048eb0cfe1b5e45fc7b4e422eed4b2bc18463": "0x97883f6fb7483a6cb748a647f23b601fcd69b393", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004d1fe43ac70412e62d8186e8e0cb261d6c602b": "0x00d6de0f830800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee41bd5428594191446fef91d5b0de95706ad49b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a8b4d130af9ac6de034f80f4899960283b090000": "0x60b99a3e1fee8d744f08290a2ade61b26e044862efb7ca60dc0c944ef9d9aa7a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899af1322b1526ea42be721916e6ba232b4f001fd6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778524544864e0a83425ad4c8408f81dd55bf7ed5": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898300b3ecdbea1e3dd2d028f566ecd7d04627a3ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898803cd717982cbf4036d0ecd1925f13c09a11a51": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c43b0c4013131b17eccdcef96e6c873a21c3d087": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a42264114e13a067ac2baca439e9ec5df20c8819": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289818c69a3f3bd436087ec101f0ff8aa2d3cd35e62": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bc1da291d36c0e06b01a1e60fb623af909070000": "0xf05f3ef3586fa4012fc8249571cf84792d3dd1adedfa603f719edba2a142170e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d4d72f93e42b6c1df699a0249e217bd83060000": "0x3a1c2b4df870c87d3f205b720185a9e54176207b9c52a6803c82de6b34332e0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d385721fc43fb4262c56a1d6a6e8c07c64c7d7fee8b27c023b24470902bcf462f": "0x9c5faed48240954efe9b5f666d1b6df1de3fa2ae", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ae16f3f5c84047aa300e066774a1c3001b50c35": "0x005a3db8ca1c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d999ddb2a0ee361400233eb513e9a0f9f060000": "0x7e2928aa326bc909add3e91fc8389d76e6c5fa1d9605edb04d657aab22e5a25800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4465431b88b42ed2cda2b4d4c50b38ca1ac8f83": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890028dbe0396e7c888373dc2bf00ec85c292afd84": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d523eb91d3fc1ccd920cc991e39c6fcd03d3ea55a6dfda2eb971ab595987ca379": "0x004e1ef7504fcd7d982885efd88d190d3179fcc3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f882d59de84b2bbe5a37dea30d6156abc2624301": "0x0058823c772100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519b35a064c057e6048948a8b01ff822274f090000": "0x84882d133a24d5f846dbb25597744a99f71327ecc0dd6a9e6ed54fdfd3fd173e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397250498d076866e2178a28cf09444f2ab34d57aea": "0x002888565d0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d24d8e5836c187481f76ab9c0a7ab01a912c31": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909bb2615c8f45144a7d4bc6d06c1ea346b8d3063": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928906d2ab1ed0c25b0629d277afd6fd928d232d41b2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da0048e4648a919387cd0843a35a68bd6ea9a1418927eac08a6f7bc11e3f38a46": "0xf0b7319293c3508cb16215561b7f2ff539bdebd3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cdffcefb552c1638915cefa56d551c4221e5d6d0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd249dac11030f2f8f76370724c3362701b312f643c313ac3badbce5d5634b61b": "0x4051efad9288cc12636868e4302397a4ba38478d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cb55ab5cdb7797b8a44a76c4d923701985df4d": "0x00f80bcffe5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e59ec81fbd604f8de6eefc90cd6c155e0cc50e93": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243050e3aa7f5b52e7f547821ffd5abd8ffe6062a86": "0x0080e03779c3110000000000000000001e99be1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771fe8590d29d971bbbbb17342ea62a3c52c6ed0b": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60710d0e326430a244694534e75250dff666d2a8643daa19aefddc39aa5ade05": "0x00600ea2eca09b387d5be17a4a7df47d956e1ec4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fbaf540fab13261780b0eac3e1beafb4a923bd5": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007843ded6c179363a1dead9c1fa8acada60528e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d508a1452fc1ae7b10b6e858d75e669536fea16": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b06d958cce8ced5b26ea37e63d26a3a3a0d3ab34": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515cb117dd9aef8d203bd41de446a01d7831030000": "0x28206efde24bcb2b8e30e1f36b1fa31bbe821bd61f5bfab0b8c8e7c2a0df735600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f45d57c49adf2be37f4cda720141fc9cb6236bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994c70b28e483cbfe9d7554e211f5f38ef9435bb9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970068c220ede25b44a185ba20fa5f540928adf5e4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a48d6223b001e03cce2b775a968e5199a626434": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7687b89809c7a3c7450a60f94b3f5e23b2e989312f14c3e521506479e4883c1d": "0x081c8e52338007010ab569afb8f1e098e645d3ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397142f4db6d6e603f4c5990723c9376300edc964a5": "0x000070ca7d0f55010000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513c29d375bbafa9e6a3ad4cc709b72207b4050000": "0x74cbd10ee9e9e9f772b6c60db076022f568dd36388147e08a99ee3b5f347274900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1600e09e1d8a1324934f83d55d5f6f503e2d91bf4270eeaefd462f24e4487e29": "0x4c2d79f8483b8fa0b0026d39db21dd51d90021d9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8c167731c26d3dabde6783daee8735ba0408190": "0x0092013f348a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5664b93ad268393d1f695c4180993e60c59fc3e": "0x00d0c4165d1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970092dd784a50e356b9e1705dc780fcdcd55d78e7": "0x00bcb9c7361300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289741db5b3024790ff32fea3591714c38987948dd8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008fd24707883affbd4c830eee85a8a4149306ce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5bd25b8ca7659835bc91ed7562812eff9352dcc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac4d821503dff89c3cee4e7797926ae8b7db2554": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008d3af90dba667b290dc64a97f2711ed3a7039f": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de2dcfc052f7656cb9e107a9c2d0adc19d2c206bc51e3225ffffca10b83b8c216": "0x298679f84e404ac8a9c73158ee6fa4973eca9abd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397377e7e59dc2f5c9e08d0292ece47611b515dfac9": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb86edbc8bbb1f9131022be649565ebdb09e32a1": "0x00b22a00be2b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003cefd9d6241b8d10bd2e4d9047f6174a4ddca6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e1738f0a09511622e06dfede9ec64201bd394e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517844551f1b04b8de61f668dd3be7f1fca9080000": "0xa653655826c606e95ea798282f0e700f22d9669ed58fe5279acc79f03f2fb34100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ed4ef795465ef79cd0fcba0f6ca3f35a1ac1816": "0x003aac1de83100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b383d191e038b067079e267bfdf3c70b422a18": "0x00c2511f187800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f55dbf691b3e67bf10853c67310a10c60a5834e8": "0x00b2cc7a673000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cc404b72cf3db9dc45c5abe72c585bce0f060000": "0x36a5433f5116598c58ce3400f6a2a23f6104fc92b5c30e4610d86110a1ded03900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289553581f31faeec2ffb2119e7ae41a257f5ae0c44": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bea1d038be0b029dffb599a396eabbff2584b2a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979833f0f9247ee62faea47d6fcc838e262742b95f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ccf6ed5fb4b037e92aa2b61cb1239fc6572d0c6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289705fb243cd2cdda5ffd62c702fbe2d48353e3bdf": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510a7d0a8702dc71aceb8b8ae21924f37c43050000": "0x608143776c6a638a7732e342ded84da6ed30c006087c12f022df56b74571e45600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fd164dfeaeafabe0d241e2313b57ea7fd97747d9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38080b924384b2923f18fbbf77bada41b87d9852c8703aecd85796c228edc00d": "0x2b3d18c655353ca14fb9d4ba8d047d08d1140974", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dbe2e4f5b4322a6cf5cdca229febf825a21462ca": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516e5504e4a14344a1ed47b04fa0dab65e71050000": "0x624f523610e459d18d7dca623df5000f61e7ff083aabf4358595230f89c5e33200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243572613e81421b11b7cf99fb41c3bdcb915a50d31": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d23f57165f60c0d8d4baacb420426ed4f060000": "0x1f206f7c890fea0cec8c819d1a9e302849fdc7b1d54e8385895155e1aa4490ea00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c6413b27ddb2809bdd86034bbff83b1e0c070000": "0xd2cd0bac7ae51daeb1c11493b6dc337fa471e9a1656f8e86b066c6fb22af282200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d308ffc25bb1c9025b53d9ac651ce189b9f4588a1981eabf55f0949231740044e": "0xb422b17a216192f8a25ee6d08342dfeb3e05e6dc", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e21f84db1d346670f5ae35b49fb1ed8ce2d6019ec1591f1a0a593c7e1e42f03": "0x2fc342c182bd05c93bc824952d36fb4316392684", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f9eb393cdc15571b243d3e211d986db3c0050000": "0x88fc08d7997cf899274ea31d6e9f6c883483b95ed1d489575fb1523d4291251700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c490c98679eb8687f2b3528d9c35a67e99080000": "0xe8b4be3ef901eccef4c3abe01bf1af20d6685d42d644d1c0a6f739207dd9c06800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756666fc53f50972d6fe7d75d1149ca3ecfef486e": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5119ef188735232ba892b9d69c9f259a20dd050000": "0x1c7a132e41c02fa4c8dcb647700633c59d6fc8235b867d9422d1fccf24f77b4500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519210ef6aec6a31a339c091910c3dd97ad3070000": "0xccca577630b892c34f36d9681dde7ba25bed23356d467e1415913b7e2515755d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ed9633f73160a3c6b6162c5c91ed95aefc29525": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951aa47c803a20a6334e4589ca76642a68d3cfb32": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700acc0bd13770679812fae76ceaada758781a5ee": "0x0006bb3ece4d34000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d033fef6d4c75ce2f4878314057c2f959fab4679": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975223d8d88e106df03f953b6ea1fbc11db396f2f7": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511711f4961200de487c44eb8d835d2121db010000": "0x14d13395a032cb5e4aba7116449d03472be74a0a8ba9a6a97723ea6bede6727b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c35a8e70b0530d2bff51daedbcf752d8dafde91b": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c57173ef5705bfed109af15e677a8d8f5e520": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d5d7db3ddf7db52ed81bdeb09e2517f710040000": "0x9032a7c54bbe6a7c1c9ab89364242a3d39a725aa880a38110fd92bfceac13b0900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956666fc53f50972d6fe7d75d1149ca3ecfef486e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289354b2ae0cce6f0ed8f332f123d4367bb800ac687": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bdc058e69ad60873787e67fe22ef40e6a82032e6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aac3bccfaddf32b9066fed9a76f0694a471e8b71": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbed497470a04ca4c13caccd69c7827e3ddc64473fd2d7c5d496c71061f452b05": "0x441dae5199e8c642556707176913c2942b455251", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bfe488a26ec2e61bfd6a2f59e445980752d634": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cce96dfe085a2673456d6bfb80406b8b2a0483": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772bd01b74ab575b2bea1ac2f8112a0a15cf09deb": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289895607ffa297db864ec7da7351353618ddaebdef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897dbb16b85b247430888763302413d6d2abc1ff8c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985bad1dedbccdfafd231fe1c96b3a9bdd4e2e083": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f670ee7d6bd866b161756469808acc4f2aa64faa0c97ea1f8702fbdf1843694734eee4d7c65c5605c2f8127148": "0xdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae6916a981c3df939efe41a37045ba2c0b1daafa": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ae2a64d4c258fb4278cef0dbe4fd9e6d1e639d1": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795e1a959df4af4ac693c2de538b4b0de14592423": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1b96a31ea448d0213a11aa8c2cda340d1335280": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ea81627c72919ac393603aa79d4c7e00cd9438": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437d64d09556b4e737f932b39dbbe48fa4f67d862b": "0x00d07afd1c3204000000000000000000d319ca0600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0435f6d91a7c7316277378edb9cf826f46af1caa25b187ff9e16386640c600e": "0x1fa6cdbeec8b0ae15c81a65c5da6d152a0a6c25e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894209c9ea64fb4fa437eb950b3839a43c99d96c06": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf6aef56499745cfc8abee1fec089e86dc2e0b33": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa83bc9abf0e8c4937a8ebde74a7961f050747": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c5e4db864861d9b6203bd86af0c0b5ffcd6115d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397164d92a6126ebf0f354fa098e173f1a50277fdd2": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c6f3bf84417dd2c0b9c2d148b3cd0639c5b9387": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432a89681d73055acfac5c4ce4ed108c3ea7a84a59": "0x00a0e05ed2d400000000000000000000e461580100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e8b688cb562a028e5d9cb55ac1ee43c22c96995": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908047a8561852b8d75e9ce66751a9e0ef4eb2ad3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b58917b2b71399c841b985727a3ff7fb59547f1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515ff8de633dfda576bf4023c34c5e459821000000": "0x243411786f2b168b5024685ea3474897ef2e77b7599275431ba5229bf657890b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976db74596a7f6ca2798670cc82ac150a41610fdc7": "0x008e713b42af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da494377af81b9e491c444929c24ae96e88099a23c0e207aa130d2d1ae5897650": "0x9bf140794f7009345dc3de37523f63ecca1b155f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f80791d5ce62ea36ded1fba5e1bf53c15938c9f2": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de67bd0c0f260a6fb9b90870109b8a97cf0f1442b4694d7c17a6f0ba103db850d": "0xc5180bb2f2975ce4750af769d7a32dcbd69d39ea", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705e248f31370ff8f16c3bb5db186ff80eefafe62": "0x000ca376b6c800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5cec348d901c9a9d931610a858474d3c5092d1297df3fa7dc986faed11c4d05b": "0xcd2d4d9f76f3919510de38109dd63172b05e86a6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397546d80fbdadde160e5d4a3482bbdbf310163192c": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708d2502ef55264180f07970bd2fe83bc206f0715": "0x00341a7e291900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006c0cc442ab4dc5ed006af112fd7e064511eca8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007ceccc832e7d85b6e02859a60ef100bfb4a2b0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b06eb11eaa3455375b66c1c72c109a134580f7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761aa4b596264f9e1eabf688567e8e80080732169": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289470f765ac9ca7fd2d19b7b68b39f3a3da9f648c6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d17756d5e1ec2bf3d045828d7dfe00edb4c24acd899a5f1e251a86d39c156a204": "0xa38edc99fbc7935f47a5047a757bd870a7f02640", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e96f9207310a9dcbfb0f8acf5e44573b56eadf7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bcee6270883c347592db909aabcdfd5670050000": "0x9e6083c954f38683706efe10783ddf7522c2d817adb5495c7ec73614c1c8387300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d885e9172fadfb8cbdb532c65d07078a2c9c150bc3ded165da437268b1cf3afe1": "0xdeda0b6b9c98ac5ea010fe9f2086e93bc1514ec7", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824304c6f1d15b8b0d5058db45fc13d6193fa78848be": "0x00706f96a686020000000000000000008564160400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895feea0d35bc1d74650856fdba465a9fd7582b08f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a184d0a2f7d54d4552bbdcfc10d287a4c5bea5aa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b187f9d6ce0329e2e8d12c6ddfe989023abf839d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4bcf84bbba74f7ed07abf9e39df86bca995fca9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928989af1ab14542363a2c631dac9d2eaafd0bfaf008": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972658a833b04556526cbd6b2caab0a9fada7d8977": "0x0070c7f9924000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51754faa9acf0378f8c3543d9f132d85bc02000000": "0x264a106d7206b10c8a97168cd25b2e0b7fdae7d827b50299366bf9ffb5939d7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bd681cda54942050d622af1e35e6e3054eca95e": "0x0094a032a61000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895cb05a5971756ce32ceab168695de963f70b051b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ee315451190394da7fcdceb57d157d6a3453201": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde91f855c77aeb4b742c66cbf0f4f852809d98804518f4b3e00ed60437f0f618": "0x9da6c5ebb2a225a395ee772d77ec5178fd5a6307", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b16547a72b4d9f37fe34fd67259d07f65953d141": "0x00cab51931711e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e908988fa7712617b50643886e51ed6ff5333d6a": "0x00124ccdab0a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51903cba3be22fc94f5c99d88766869eec48050000": "0x90637eb688d85ae50e97ed270439a093f7e3e56a42af1693ea1921a6589a770100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d177586539eb325c70e15b369e1f8510bbd3cf44": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289679ca8cd4ae11f7813074b9337395cafc78ad4a4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cf4ab05bd4e774afe13334b2bd7ef803a2080000": "0x62e11b08e75dca26b32d2cddbbb7c9acccd504aa7dd2ecb41a7e30ff08baca0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007afbd65d5b7651dc8540420ba3ef42ebf62c5d": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3f59ebc3bf8fa664ce12e2f841fe6556289f053": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397772ea6e9bb2ecfb884c881cd186dede1ae2b63ca": "0x00647b482aa300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dec7861534b86faa8f8ae36a561fae5277da4709": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df68f12537fd063f3949875a1efc2ced4485685e4899a8674c64ac042dbb67d43": "0x318aa87413115388a04d0083e792849e09fe496e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890023d77a0316ae6c765a6e1c6616be7030f462dd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e40fb968520f859414e62bdb05e5b1f2f6201fb": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf5ae4b593a56432357a7ff8d8098b9c10469c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df8999d6c00d5014ef989664191dd131f18fee4d5b3341637baae3a9925a3ce25": "0x00dbddada20c7b2b653812577388aea9ac896ac9", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b0cbf6c353bf88fae5f78bdb61d9c7f5be080000": "0x8a8c0cdeb30b068e0e3aafe157189e0a93caaf6ff05961dd98d58db11e1e273100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f85c6f6c7e5d78513fd9317d90409f71a58099": "0x0054a6b6228506000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fc7e4a74ee62977ee61f7f301176c539dc060000": "0xbc1deacfc7e5c6e5f0373560c14fbce156ff2a0ed7e208d049ccd985dec8554500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a1b46319be9163b8ae30dbe506235608a563dc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5181d8b8684bd24113d792d4dc3d9c2a7d4d060000": "0x7ccfc66f0b7e76f786bdcaadccc5171ec82d013ab65e33440fc6c1d92c07d52100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00933f6ead73f4396ac3ea16dd9988dd6b9b8b9309e2c8ffad113ee7f6b9f421": "0x460cad37045859b3f67579bb363d3e8f48c4df50", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c65cc13119222af7653d69ca15a6def918788550819c98d5232841f7ba2db6a": "0xf55dbf691b3e67bf10853c67310a10c60a5834e8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c50ea337609096cd614dc0752ed130e0de08757": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af7c56140a7017ea7fa9fccae6341dcf50ba0556": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970052b34370f45aa1a3d93b5837975bd9e088d6c6": "0x00e47f23dc8200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397caff66193c177e60ef230f8c45a5867ca46f578d": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785f0c61774dc981a07fd9fd76f45c336fc87b44a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e7bd3dc5a41971455a7e5af99c3ab77766b964e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fce155ddf214a56eb2e88939f2a48afb4b751c6": "0x00f0f70ff55300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b999004b49c6b907d4278067da5c85195dcd7fc7": "0x0060aea3230606000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397589c431cb0e9255b1fe912079034ca6711c76eec": "0x006c9bea403b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad5077d22fd0309130fc1a1ce0e655ce4de9513a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005b2da8bb885172492b3f57a510e3a90526c637": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d232ce096d839fc8519890b596ef9e99e9040000": "0x28996c52694155d7ec9082650fbf108f69da60c44a4b2565fce4e03f9bbb017800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84e6b806bcba1f9f0255ec9eacff9f4322805b842b6e02e00f469cd5494eca5f": "0x00928ab46f9251610992b3f5fd257cc031f354ba", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890028b16bf35427a11760cc5f4db866dd8127be14": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dfba60f29b3caff9e6942494862994c277f05d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b3513da99c0572a510334c4256b99ac3a8eb72e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eb8e47a06707a3dfb17728f8961009adb88eb8": "0x00ca09fdcc0700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ebbdf1db3c35a492db9c7d6e9c644d4a8d070000": "0xa6331c5c97cbbd671ee9023d3a163d81e965dad7d509f28b970dc86c6f3e985500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa7d705eaf0a79ef8f0eb9b8c4b80b885205ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6d4b980ebb41243978f92316777792ec14fff50": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974118b3011a348538694a2655100db72e5010a0c4": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d0279071dfd8cf4d5b40c71fd0aaf8c87030000": "0x82aef72a8fb431d49db51e0a208fcd679ab78a8b8c88dfca61b28e67a8f56a7500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5113517fe5c7f842f1b673db986921ab2a25060000": "0x2a6821bd42b8a9447c08b522c8b303f1c208dbd014484d3ff30fe3ababe7f73200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890e5b7813fe019f6aaf820546035fcbb40b58125f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706d6ee9ea1c648071973cde4669d95955d496422": "0x0090add11a511b000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517fe61a749ecb0ca5b2226fce9130638681040000": "0x6eb77631f65ea04b3ef1407b04dd59a50ef6af249eba5d82cd61604076ab067a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511e5197734c803bf26eb05eab6c0620fc9b070000": "0x484cdc76e0b6b2cb4e30850327cf37e717d91e343a62bbfaded38aa8133cfe3400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006a1212d2d3e63753368cbb4116ed4bf3719e64": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5173a87ec39149f52cfb4a42511fb5461343080000": "0xe61956f7fe271404c5b0cd4b155ed105f9364f4ea7608cb6a9c127794b8e3a6a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d34f4f4236b04e3bf83610b55d3527b50da22aac3ca85ea0d520196835964b67a": "0x0087c431927e0a49ac8908026cfb13d3cf96b950", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0efda181dd90a361cc220d5b9a6a12b38a551": "0x00b875ca5f0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289482b1c8fcbb12b90573071652cc5d46fc24fa426": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe585adf04d3b20b6fa246c2183a20fa20070000": "0x6e747c701718b04a86a4f693a987662fff73f1cfba6fd907d86662725c82470700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6a52f2a63faa6a7f88f1f77631e712948d098d67087168955bc4d2c4adcb01e": "0xb27b940bf01de20eca4abfd7c9bdb2304142ad5c", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51000772c5f44ff1ae5233c073e4b0b85d7f070000": "0x66b1ebbaeb6b2beee0ef60ab899c6a6ccfc7e3cbf820e5be26f561b44a56832f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e2f7d96ae83b7967015b3c483a070239f74baa6b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009f33693d1d3fc5b3eedc3d9d457f77059a498a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b059b066f976d528172c8d6cc5257a4787266012": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef9d64a965dbebd8671375325a0aad9358218934": "0x003c560def4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891cc55a8304d1fab6dcc1003d16783eb213620293": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517a7077e127e555a197899b3226a2f5d361040000": "0x8284b7cc1e21c463fbe2e309c8cda79827620863b9a26a7445c9daceae91a77800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944e5715f7db1a59de2af178cdad023b16e39da31": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb0d43ba23028b7db38d8d6e2e2fdb56db9c0302": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d981e0c8001f0d80ef450c0c0561f9e4b22337af479023b9d79851381ffbe0348": "0x54970d8d6d8f8dbe9c87ab9cab9057fa5039e4ab", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900afdf133993cc0d4101f56f4b12a0504024bfd6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d42b941936ef857f9d5b97908ca6a7f2c0fec05c6dcb763f9e8d7780699a8b23e": "0xa50382a9b22b0720698d39131fcbe289841a54bd", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515ee1816cd74736cb5de980afa2c2245516030000": "0x126647690e4dc7b7b7a0705802d62342f6f759578ffd888ff6a60cd1708b3a4a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51408329977613d6e5213ff39c064b948afe040000": "0xda1858f63aeaf2dc56970d9071cec207978ece8813a381174c0e36dcdf0eb06300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289efabdb22a54dbdc370b31156a16b7a362199affb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d581b789243689bc3367ae7d487ef44b695892c6693e3c9ef8c4ff95fff99df17": "0xf2f3d21866a3167be7b0af44dacb2e496c5b827e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000b6274e5e9464df801fcfd8a9fed607086fbb8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcb97a0426ba454b11a314f7c9d9479cb519eb93f8c79032abbede30932d67da5": "0xc0b6a53433a49d2d9aa4817570b9ccfef4764cec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac139d4ae0e405462f35f4a5f9238f39844cb982": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d3fdace77e1ceca5128ff2f9269bb27afe9dbe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eaa3371c03ec84b98706abf06bfca8b85956bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c094df9784e3a409a27f39875a85d47fb9d6d520": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928921fa2fd0d1126a88a7fcfae18f8fe849999a17ed": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515138b420434e5e73b61d3fb55e1ead102e060000": "0x48231493044b6f421fc9e9ca2d9f1f0fc18ebeea1d51035a5843b82a70c8810100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514943cb510c09eca48fa3c9692fb19fb0fd050000": "0x5828b1463a98785b431f8bfc4806215f1d062aa098eeb76b09a80fd9e63c9d0a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62894f873f68ec0788abb573bf388efcc5267b7164b770abad90cd17b65f161e": "0xd89384c4107f7d0feadb833e769e7e1396eaa5e4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700edd7f8f834eee9eff0a602e6cd8c11ab501e4d": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003d4fcad4255d3f37dd02df6b961b352298a023": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009cbd06cd1a0812b83234ff4b16d4561901dadf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970082edd0064f00c679183e5c014d3b4a77a4cc67": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bfe488a26ec2e61bfd6a2f59e445980752d634": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d260f09bf8836b84b88d389cf793389a6387090d930c1dc555789d94b304d0934": "0x4f65d1913b854830681e7d0ee71c9756e0fe9f32", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517ca7f7515e8f8ac92acf8a63e99aafac75070000": "0xd0b18c9b2c9b480b43aa8f03d542c1ee68692cd42aaef3c46b57ea19cc9e6c6a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1f4258fad2126cdaab3266e9caa82bd51692980": "0x00fcc39bafee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952e0bb68c4b18ad158ac8e9489378e5e855224f8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d423185717826a19d375e259a844fad640a1bda720f14e0fa7c74bf936a42007f": "0x1fb5b702b7d3c5efb00630e8014e79bfbbf5ef81", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974765d5715c351557d5242e3e6af8e1365ed5d08d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d7b4f68efe1aee99bc58f9a511f43738fe5b0d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5184184784b77281c6119fc4c7509a5d2d48090000": "0x9097fb3f7e7de0007abed486c2b5860e7de0ccf395acd0b1a0cccc124b2b710b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8c2c0007f4f50045241bf96aa1934b0dda2528d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3bbc9586ef4c2baa9cc995fc50dfa7118d35dad": "0x003a3ce86a1d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f7a288ca1191026f22718d61b6acc3922a070000": "0x3c803d0e3f20e39f3060761bcffc56363024d98234dc248583149be800647c7e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b187f9d6ce0329e2e8d12c6ddfe989023abf839d": "0x004043148d3703000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af7c56140a7017ea7fa9fccae6341dcf50ba0556": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c74a66dbe1c89a65c6f6bd4fe20d0f989e080000": "0x62168680c9ed6e456fa59bd01525a53dd6fa991757e920482016e7db6caebd4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970008cd3b0bffddf4b7f4528c58db5416eb998ac0": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928914edaa223bfef22b1af6f5500fe1766b15cca12c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970065939d87e6f958a20873ba9ebe06bf120a2d33": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903fcec3a20f276aac1f7967a461301d75180371a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d79cf77ed776c7b4520fc4f95a21cdd75a7b9b07": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ebe852bb554f4b834dd8c6fafea4e3a43060000": "0x5e17c90f875b62d277af6d0fd9ed6e2258c8627ac561c55ba7e193e6fc18d83f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900294eb6c545e738597385f7cc36298ba90db70b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005c3e8ef86d7ec80976e586dc76f8267fc8368b": "0x00245b38281600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ca696ecc735a7a734fbce108cea75f8e982cfa2": "0x00349949982701000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0a37554976f25303adf7a715fb050f7d1d73d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0450c35fb5d3306a120893b253cfcc588bd9f5d0a30e1250b2e15a39a4610a0e": "0x2ac9bc183534b782d3f6042cc77b81cb4656bcf8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2341ada39b90cbfffeabc35096269f14b5de2e50446e16ac26d8b02a0263949": "0x57ba0396c511c6dde22e4c524c07b85411d6d05d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397edf039c36c3fc977c8830d68d75d989d42ed1827": "0x001ed109850900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513e97e7be528dec396a0fb0ab5ac4b3eb46080000": "0xb32770b6f97f03b60991eb4d710ad6d28a09ff4671e8b50c6f6347edcf059d3d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ba325bdfa51320407c91f0323c303ac8a01cd7": "0x0084e236679803000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5189d6ee3f9fe80885b62b09dfdb913bbf1f080000": "0xb6a52f2a63faa6a7f88f1f77631e712948d098d67087168955bc4d2c4adcb01e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f369bc4c5edeb597431e050a728e981dea050000": "0x3890fe49cc68cb8567fd01fcea08055b25b3cb1d8fd1c37f2896d3819ebffa1b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b91355280b218cadf3772a949f0478880594d0": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738b89b94dc5dec100a23fae5b5140ffcf81c8b24": "0x0080a1a76b4a35000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b877e76f8fc58370a3a94259c232ade145070000": "0xd02c1edcd16c17e8e1a9b6d3bf8c20df4c1427225868599d0e11da1442eb297b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f81756700dca9b2fe8d4269a761206ff26ca95": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2434fb99a4b3f7768f861ffef0a7dbed086174caa733acd2cdec25bbbcdfcc5e": "0x50e36dd2f9f0b112a8eedf160bdd4aeee06dbed3", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a140372769316543c7a6bb5bd4d980ea00050000": "0x1ee80fb1539fcc03433b535fe90ca636d1c77de813a6858edbf802da6bb1920600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0eea2a1f67da637fd1fa8c1895d15ec763c789567cb02463c6edb494d3af07b": "0x0d567082d66dc9c1cd236a3044a92c5b595fbeb6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750b2c3a213d353c66a2138e3f21a1f909b0a87b8": "0x00321bb20e7329000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514671f3b0f75141e3511b3597f3223e920e000000": "0x543d64b162e96ac48944161ce5c2abe57553d0720979cd90030ffcdd97ddb25b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397594a1a912ebf1023bf9bf1b0e77d6d40b8232323": "0x00cc3bab081700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5124948c0be687f0cdb4a252c20fff128cf4080000": "0xa47e84d64df494ecf1a2cd5c1b2170c23dd39d9b7c416a34f74ee809e929660d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975fe82ccf847c7f2a0281fac8fd9bcfc7ef245f9a": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a48bda48cdcbdd257fa55b7b7985a1ba61d9e1f3": "0x008a39bcaa1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005cb064be2ae806ff8a6eeba102978d6b32d625": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890078c6117d6a926565915465f81e685c29e31f5f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900908f63171b29bd00a69a2c0864318843bf169d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e768862e1b8abaf3c1c776b032036c7b774de85": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951a1bac19e5fde2dcacf1024a16aa62f8302617f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e96f9207310a9dcbfb0f8acf5e44573b56eadf7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967303886cd4d268eaa3a6cd8de51413da1a72dcf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928970c853a88dcfdf9996e60d3d33f3002ceddf46ca": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ffb27ede09161a4c13d4176afffc9bcb13c97d0": "0x00005fcd95f209000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891206a4d89194c3fa52d2e48bddfd64f38cfa7a53": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519211dd747b759929404027144b4f609024090000": "0xa0c2802ba380d41dcc343cbf730e65bb198929288d6577799e9056014079bc7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a6629c7691f18cc987a61b0774a524287b5d0c": "0x0004f52ee08d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517ac0ad9efc83bedda21868ca5c18af5fe4040000": "0x8889bb12ffc22c93e6190aeac259184d7181bed3f0cc9938d27315f8e61c8c4a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974709a3a7b4a0e646e9953459c66913322b8f4195": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d5a35d09bd00dd0d73928aa1d67c266bfd6273a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e2021221b0bb5e2d1ceda9f024ed9804b055708": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe7c8c647c3574eb9931d1d3f36019b6a6d06e2f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002d43afbc32a0d67168a2de3833ec368ffe8983": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b78bdc1a48d2186c3a5c3c8c0892ef47155f85d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ce971552082e64ecea872da2bb4ecf8549d2760947c952722e8d8684dcd605e": "0x4e9763a3ac1928e281c7776b41aaa83b558204e0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896cc5d8a4f16d0dd7122bc1d2759703ee9013c237": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289987901179f790fd04e956173d45fcac9aa74b66c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976afe9576ad00a571d9c04402006414ae45a8a490": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c00bb75cbd8e55346d2fe041c632d5b6cb6f6c4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5105c6059e87d5a826532adec50ef822253c050000": "0x86f68361d0a346a62be267558e72dfb9e3b5a04adcc2c9e46fb7b9482f7c876f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893fce4a3b54b4ae9acae0c1b7911d4511e01090b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1200ce6d0ba222db35d6135e051267d901f44b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6b58e5a157b1d1aee043e50be138b60bb41c478": "0x00fc8d0e800000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac2a0ac293d17fc58e2ddbb25e08b94313080000": "0x827acec5295bdb2d134df3a5dd2e8ff5db1d3eb75c5620b3ec687b24c5be571f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745602bfba960277bf917c1b2007d1f03d7bd29e4": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6aaac987bd9fce6505fb58c50175ec3577e4b1cfe4b8632ff68ff66000a75847": "0x0efabe80d1646ec4d11f46d8fed63b070c11d5f3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977894774b62144bf5cbbee837c96e833e16e3edce": "0x000cf037d88207000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c52fc440544c4bc65fbeb7233bcf6874d2040000": "0x7a848efd719f7a216be0e7ab86944c5c23bd0bcc66216ae6a0aaffcb2bbf3b7a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f527277ddc787974e57fc195a0ed5c86cf5ddeec": "0x00f85e3055e100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289afab97a2147313fa873dbcfaf175aa1f24c8cbbb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b1b561896f65cd50341459052a69cefb25673451": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcefdc27aacad24de17bc8753a3c743debf7925f382a6d1c08601395aa679995e": "0x319112568bec6af88d43c258f36d94319bf1ac23", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907ff3463620606e7483f074c44fc25c32383bc79": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3181f5237629b697ee63a8a25636281c84e0a9b": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ba9dc4b69ca46fa26772616e8048b623941c2a4d41cf25ef495408690fc853f777192498c0922eab1e9df4f061": "0xdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007ce39c82c2cf3d1d4e5890abdd3bb51567e469": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397687f956a18fd757f21ff2c1f0334c589a6bd4d1b": "0x00cc1013714900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d106711bd6fe7f02667ea334ff74f06788939959": "0x006ee0d6c48800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900642d51e2ef92650e2c7308b4078864ab0d8603": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de9c6d2f52e842646238aa9a4b144820f450c5c55b0503cdc92dcd302cde08e9c": "0x081dadcdd7cc5d6f406061007a6b4af00444e75e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397679ca8cd4ae11f7813074b9337395cafc78ad4a4": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7d53f3b0307de42d7dc018f672f7e6af34a8194": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715010e04d91ca1a9374a0cda2902039d362fbedd": "0x00b4d5fea72c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a4b46decc58f38eddd3fd8f8b7a0a92b18ad34305d8d6f85efcae77dafb255d": "0xa640c639421c815ad2e40be3ed98ff0eb0e446b4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734e8812c8f789cb9dbd6993cecb92155a6af62ab": "0x002291b31b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087c431927e0a49ac8908026cfb13d3cf96b950": "0x001869bd150b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760984850ffe55a4c330723b7b439f70e6184bcc3": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1baa453966c043ca367ccfa19f450244447b9d32f4b7af2d9749e55a57ac09cc": "0xcd1cf598b1a50d24d53c7241fedf2de60f489597", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ad8e92592570e989ca076e2d5e4c1638cd3c5": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510cfdcedd520e320205f5e1acdf6ca3552e070000": "0xe4cf3489002e8064b9ec479414290e3bc4a87095b4b1a65cdc3ef1e06593d25600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ae7dfb217953af11182fb68fc210c9ad11adb39": "0x0068b3338cc900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896deb669e7db5d02735d5a4f14d622a09f6d27682": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972da865b913ce50451351a315d8b37cb87a4f4109": "0x0000ef73b31600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f7539e4e2d9a2274863eaa78b0a3ee574060000": "0x2a4252f6d64dad6c3c4b8154a21c2103f6271822a5120cfa4725fbb7f7372c7000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eb4363d35b0824c7ac8b54c2d05c6bf54b9946": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a6a90222087648297e923b01d86cd754a7e7f7f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5170c73a4dc65174edfa79804f522c362f9e060000": "0x2c01c997b6df6a1ae8a1475e6cbcd1f1c8d9b60d2b4aad28868de3e61d837a6800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d788bee7fa9fd8731e80ceec5614e5568781b75f54b34d72fd1b07f0e185cb728": "0x001720fe2bf6df9dab32f313343766cd4a0ac2e6", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0061d29cf9d6d397701166c8c1e07d742e1852fd8ece9731f8d1fb9243bf131d": "0x520ad81a6359835797a4a7b0b0cfd0406a18f64c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5de4fee9a3aa7722f7d285c6cffcabbc760ea": "0x0020bc2b7d4d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f8e35697891efb39506e932c9084a855ee53ef7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4d4993cf7be0b894bb458dff9c2653434d407fe": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ec48f00c3ee6fcdf2ccb4344de1769843e040000": "0x087e2eabc4ccaf442c1cb9fcccc3e09560cc0be2fa17f26b3d5a08b658f7db0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dedb58e1daed431391fe2f71a4296ab37e01462": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba90e5b6d3376d792ca3927524c27a185fbfb159": "0x006aef77a62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f65fe2f2d8215e4dfdaf150b031259ece9998f8a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945271d8057632813229ef2eeb585a3024d6ce876": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900624c215baee850f4182d0602cb938bba095066": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009b72735e42cb02b19f88204e08931c633be665": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb2ef83188323b61e2cad0ad628bfa33e45cd0c8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928916c09044a80d3a419403362413241ea81d5fa78b": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5167469bcbd2d9fe430c985c02435c612f91040000": "0xdce017740d3a4d978b15057144384c96e46691410218ac91cec8be4f7d67977a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c70a7e8301b6362a779301debeef49740040000": "0x0e25c438529a9db85e8d1d45020e02862ad22f1bee84a0713895f20ac765624b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008dc499df64ff95fd5b048b15d430ca0baabbe1": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928968476977382d9cb85d11775b79252ee7d2859738": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f09452094039cebf83165008759d201e7176d2d3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289516ca63270b7d253cd9af64cb9d92d62de81656c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a9184c124058289cde2f114180733a9e5b29724": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c4cfb90d630bdaab104b05386b6f7aa3574263": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d168878d025e08bf4d1d68a950034db16057191cff93cc2aef5603816dc524640": "0x49a1c510c50555b7be6e68e064067038e5499748", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72a974c2a30d8f9cd9e000b31d94bf7bd39d93252c8b862a3894c191554a284f": "0x1c20dbe4d8839b6953c7528824e42dd91ff1c564", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e45ee0163ddfc1fe2780064ffbb0d0dc2999f873": "0x00fc31262e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4e325e0ff51a61d129d2848b0e6a5324bb42471": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098cda511c8a1a04705b0e22e81ffb60008a21d": "0x00a652dc520a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008240239c06fca835d97696c23a9cb68ff4d5e1": "0x00923d997d0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890037af14a08100231979898635d6fe870b1c846f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a7dd8fc58ff94de5cede695988e78e5f3fb3df2": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daeb543882dc06d0cde4ef60f889fec6349ac00299bfcc2b2e843aea1c7811a38": "0x00b3b6d0e8643d53b6b22807385fa63146058f56", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900116621921d8a7b01706539d19d65ec48dc7dcf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005b6d541644ffd62b7c61884bf8651b1e10e146": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c400a9c0e85fec5dc0607362a1783e0ec224ef7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899f043f875302e01d60d90831ca17593557969b10": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700556f5ccd2cd28ee1f82cb391636d9961cfb1bf": "0x00fcfa64a79106000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bc7d1910bc4424aed7eddf5e5a008931625c28": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de84e22cbed34955f4428ec758aeeecd33185648ab8c187f579cdccb935cacf44": "0x00477bcf4c48a8c4814ace55160c0ab89ddc9795", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc5666fb8f709373953716884e8e3e46537957d9": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f8536ca7a25cbf70df754fa310079ada4c6114c2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943a125a9461625e72cf17558f1c8b3b653347686": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945602bfba960277bf917c1b2007d1f03d7bd29e4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d95d6253809ef7c7649c839667cc1996e24d8f36": "0x0034795dbf0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397100dbb75eab5d98ad65ef16483aaa68e68aafbc5": "0x005a2eaf112f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519643018f0c21be678ba7ec1529eb155fb2000000": "0xb6ecb6d155ca342849b05dd7b4f289ca0499cced8dc84cd812b9d9aa4332630500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e613d5ff2f7ed0d7ff4c00155b749984ec0ab732": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51551997315f94f6ae899ebcc459eb117dbc060000": "0x4ef47d6455ac924fd91990a3c5aa921f15e9ffd88df32cf6d59adee70108ce2600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3235f7d984058bb410c163fc1d7a90e5475c0917aad77deb241093a50b4f683f": "0x6df205592f28ab7e1db1ff8e24d66c53e5f22c3f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397354b2ae0cce6f0ed8f332f123d4367bb800ac687": "0x00c0afd6913600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c3281efb7dcaa9970370a2a5d842c3616f815ca": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397286409bf413131c1bdb5c2ff95c5f8d7379c5162": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928964be1c1a0198370f53b2081e15478be3135d6bef": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c14b2331974ac8706ad674e22f707f34a17ebf": "0x0096e772550000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977956952b9ea6540641fd0dfe110f071d45c835d0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891d55410119f0d9f4d3eda0a346a43ff04e15b36f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701a7d9fa7d0eb1185c67e54da83c2e75db69e39f": "0x00728e40997870000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df81dc558baecf13373d4324fa3a8050cb7b63e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900228be11366ac5fe81770d49480c2a190a9da08": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979cac5a27e397ca42444c2d39af23bff9eb681125": "0x00befbbc765800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14287358494932512dc188bb7700c1ae44f9b31e251d918a4f9301a11eb6d62f": "0x65e01fd6abad727e8726046f5b55b25ff6bddf92", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928961aa4b596264f9e1eabf688567e8e80080732169": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788884e35d7006ae84efef09ee6bc6a43dd8e2bb8": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be2fde5ea1a064e4b3708f35c269ac5e06c3eb7b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d99e562b4b9c2a56791089d0b56824b913c9e4509d15da48126e586395b976da4": "0xc70ad716691ecf66e0665397fa4a7ed8f5979b77", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289029cd6683f849069fd70d6e9e7ac4b3a71cfe9a9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922a35cbb6356055d8216a36af746c58bcfb99566": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ae1a0bd06aa351227ec269277a43831f0d34da5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517db553039e15ef1f5a08b4555b97145c4d070000": "0x2ac3cd2c26629ff98575e00f181f83a9fe5e801988868fc22ab8d911c7a56d5600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cda6357a43a63683e5387f4a91fc959339090000": "0xb6e326b0768501c103f52fa0e2011501053da8b7a8ed204abfab34383bdae84c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c90efde43639f566ed43d95d9f909697245acaa": "0x006c1a29773d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5104965c98a35dee1b2e99e32873955006d0060000": "0xce371857e768db4c8e5e3cb7c5b1aefaea189aa3e9f0e708577666535113517c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970000a940f973ccf435ae9c040c253e1c043c5fb2": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397828912ebbc7be3ceb23de58fcf221f171b31c88d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794ce92ac9c9839221b976caabc83820dc33a337e": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726496ea4743de7d6927f107151fc67616fc0a4a2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dc056cd15bc9857757eabee309f0412cc9c79e5": "0x0094e5cf8b5700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ee315451190394da7fcdceb57d157d6a3453201": "0x0060a90a611200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea53530092af66d4706fb53e7891d2b1ef730b31": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d62544cac590661359cfd64c73c4f33f806d24": "0x00cc2ca24f2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397745e0ddf824ef48ae3506f915facde8382d4501d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780dc500e1464a32ab0faec15feaec216a734162b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68489fc73900b3e283faa5b0c7b7fe49815a54499653ed3ffead8d683f52002c": "0xf61b2a45875ef1019da9bd2353572f00935d163b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a9c3868f96e8a3e5386470d78f78046e09cf77a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5126706cc6825d2101fd524bcf022b6034f4070000": "0x08d3cd80270b7fcb3d94ca800834890bd03f39d867a9fae9b7335de90e9a576a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002309df96687e44280bb72c3818358faeeb699c": "0x0008385ea1ce14000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e3d5720a6ff59071c395d3205ff5796c7c040000": "0x2e79aa58c609548a02ddfe3e79ee12a11da33e242ecbd879e1dbe389f6ee5a7500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ec9465777aa326e36b60abfb4a01298a7f51845d": "0x00f0ab75a40d000000000000000000006713160000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744696286e8ba88c8c0f782b33fa7527cf3a66e39": "0x007ada938a4600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d30cfdb48ff7f33b08499dfc618a8ef9699b8345fa65f0b1339eb8eec3c0e4555": "0x00c6c0f1c8825c7ea730b6fc23bceee8ee5a8389", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900718f7d6f56e3aef4ae4d4dca50bedaa4bc4f3a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928921ef1af339cb2c91e55acbb82863552803e1fc55": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f6d321376850f36041db18c5189104c6c97bcae": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000ce94f81d1f81401712a57f615bfd9b139a657": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970069bf728cdbeb783ee8adb4801db3721f94f1ca": "0x005ecf6db84c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5188b5cb4ce332207efd29ebe94a91e9a95e070000": "0x02a4706d7ba244bdf80f9d5b2a9615802aeb33d71235a2be2798e6a48d76354100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e72549c3b5e6abc7e856db369535795fc4040000": "0x382e8702ca97efbe99754ae545488c526e3f56d6e1f6643a6b2981407aff264c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b10d4d83491e7be1f9451065c9dc5909b717a28c": "0x00bea716d82300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890010cb37589862d13ee82641c31b3d3efe93e06e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e73ecfd355db154dd6f0f9a26a610d791d95ed": "0x00fc6893d89c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008ddde69a07c04100b334040505dc6b4125bdfc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978a451390d870ab409d22dd5afabbbb623166e3f": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437ff48b76335074baa82f4236dc673b6c56a8a703": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5164ab18ef7ce917d30b6789bc3644de2f2f080000": "0x9fa413d7d329f4217ff3b4713843b6ef8f64c2ad1d769db015187dda34a7ca0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea0f7286121217c6369ad3c99f1ba910f5137aa283da71cce47111244fe2cb40": "0xc2e763a5924cb23fc77515a19ec3cc7e7a122250", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009dd16c2560bd2907136d9569c32920e5f0ae05": "0x0032d33d7a2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748135590503369f344c719db70e50aac005cfc24": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24392caae002c7705b8a8ae61f55a5bae270ddf4b2a61147e43596f62e6dc15c": "0xaf770e8cbcce62a1a458739a4ae0811c72d33f55", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767494fb2a324220f917b9f9d6f6cfe72093d4cae": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397750383c5e0fcaab8fa81b168ebb0da0f280ff80e": "0x00328a93708000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b51113c775e15754b42a7ffcef1bc3281adfc01": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a19ba54235400e8ac4e77957eded1345dbb54277": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700813451b4ee8df7c523fb49b9f817963d0c355b": "0x00c88263aa1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c81f502e87e7a0236ca1616016d216b81b91fc61": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9792a2ef4c3e368f3e570caa0f090fe31d6a3cd2f9d0b2ec270067e123db105e": "0x391a6bb5f2fca9a19d16f09aa298e9e23288a5f8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac42f377da5d9a624f94d0e9904e76c144736d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009181f75cd5f86b015f28e0b1919f5fbb3a3eb6": "0x00b4d5fea72c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755ed1eae79078844675b794dee5902ab7304db79": "0x000edd373d3100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905e248f31370ff8f16c3bb5db186ff80eefafe62": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5108ae7b03ca7d2360d493c324566449d1c8000000": "0xaec79507bbfc51d7bfa389f36bbbd7aa71bcec11e7d8f4415384854d74bfce4a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d808776b923a9800a6a340da7dadecba63033a28c5f30879db9b6f8975caa9a28": "0xea9d6a9ff692b9616f90f983f2e2aae2ca3c9186", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fb2d2432975267c79d283a617c62324a5b0897": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289012b4170e46b07ad9cc49d4ae4f7b406467cbacb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5194314e068c9046f3b977ab344ee5d190b0aed": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04f884dfd110962de6f4cd9068ef5bccd48a62ea21506d69aacf8e97ff644a5c": "0x00467243b6d8312a68f35ca037c0428d52ed8aaf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970088db9e97689c85a29e67d08f1f0e43bc40ae4d": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f30aa1a2b965b6273414c69bcdbbcea76a52ff": "0x006897a4ade900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d5a9b2328bfce7b23d8ecd6dc396125418dc03a4": "0x00d098d4af710000000000000000000007f7b70000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da047e6133dc6937a00131b4c460161d9a7a54ae0bc93c61fb95b057828dd715d": "0x0087fd9f134dbd9d68a2a869f14d88c812a14051", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b243dee66433ea21911a964a9fa3bc04e63f4a": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da47e84d64df494ecf1a2cd5c1b2170c23dd39d9b7c416a34f74ee809e929660d": "0xb3aeabe65664ab160d8ddef2d0a74f24faf321c7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977038e2b36b1117c7c9ac36c511c1965bc14b2062": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754970d8d6d8f8dbe9c87ab9cab9057fa5039e4ab": "0x0040cedefc7d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b44c291ee2df2fe32fe4cdca5937e9c8cb4d5f3d": "0x0088e11e179200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900512a3d8d53dcea7e5eb52946e0d41988b6ca55": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da7b00af38ee8a3de3bf7ddb6c08cb924ba97d72": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893b271c43635a5ff2be9b8ce704bdc3ec1cd199a1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dbefd695363d03dfec48e770ad6859dfb30cac4a": "0x0064befdaed000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f60895fbebbb5017fcbff3cdda397292bf25ba6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517bb8b281d4989439519aaeade7b739f8bc050000": "0x28ca3d92a66a8c35c479af3375d6181a95ae794d798e02e6997b73c3d930754300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d747f1a48023fec5d71e82ddc8daa3c0b1d1f4e6f7e1e753323eafd83c3b6865b": "0xdaec98c63f553f059c024da69f7becc810f8ca0c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfad4e398bcfee3910f788ba02ac6de09156ff44": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751a5356d5546a139adadf0a7752c4ba266dae69a": "0x00a61c778e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fdbdeaede3cef361db915f912bcb676475074f21": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289efaa2f28aed1cf6923c64137ddcedc4a94181fa5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a228f05157969366882c78be7c434dc3d66b5b19": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e9a22abbd383ef785c21809548b56a3abc020000": "0x90a6b364317b9f367adeccb9432c3e8f8e1badf60cab29b241da813d1e64f41300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c6778f77b22cead996a7bd73de2283e38d5aa4a": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d36bc6b7da07101e5302f94d5e39f1eca8aef0dd": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970016930644a71069819f2642d0ad4a07a5add934": "0x0098857b495f09000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000160df2f8fffb230d8cb9f67cea2461d38ebc6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907b10fb900a97ec4a265c6ef64d47db52b9702d0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891206272257240aa1336db145d922a5509ef79e2d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970044b3d793d4cbf50f0973e2c8d62ca3bdcbb38d": "0x0072d1c9185b01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51660394a5d29a74a8e6dfa9f6055008f03e090000": "0xf2457c0d57b6b806170c32383b6dfafa843768f7b96d34bffe9ac42bc23c747000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519c1c28c10259eaa642881cd98ec899933b010000": "0x5a7aab883d2cb1309e3c942074c7a2fc1455152d9adcc2d590b5457eea146e5f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ee32592386daab2d2ac0ca657e8e165e0889f8": "0x00009791882600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9d69f27ca990815a5d6479b824c3f2fa7070000": "0x265013803cbe5f9f3ef7b38ad278b6d097d3be3ed79248030f460ba93d164a6000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901401ede19c4beeb2ea70043493695646023d0dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f1de81781e8bf83b57548a1ad3bad66a16c4e01": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397750410db2d74027243fa5b6abcab763635fa7fa9": "0x00421fbc872d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397255de88ca59b050e361ac05df197578bd70a732b": "0x00b218f2c65f03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516f5e34a84d46474a4fe30177d15d9a98da050000": "0xd82afa0d1687d166c1c47e1cf8768ce194d452a636bffbb2545d06e5c2c5114300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f1f605aa47e882d4c33a928fb1620881682ebd": "0x00962d3a03ff0e000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ccca334581577efc4bb151df227389f879050000": "0x00d79a5a68a82dfaf55ec01108f9850e47ca61887ff2f7272f5dd9216cf4643200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890008cd3b0bffddf4b7f4528c58db5416eb998ac0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51978ad0d4182728dbc76b6ddf8d070c35f6070000": "0xa221d23c94dcb9839d8211590e39f17c2b62f2eec91a66b3102c409856c8456b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289283adfa795ede051c814731721c14b6c1dc3e2cf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289141de041d47905ce043140c61970a5a28ca39879": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824398194b95e37bd6de019d5ac8fc416daed2091408": "0x008027461a740a010000000000000000c8f82aaf01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38258ff5251b93f46034c7e4ad5eccef902a733ac24cd1db66549041273ec238": "0x5ca69ee86a4131262ccb5c56af72f42d597c5a2d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003b382fd41c33964be3e159799e8539c0b78159": "0x003c7ab90c2c07000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a79d6c7ad0312485e375127d0844a4658b220fb3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970084000ca2cf4517f4af097574805a518efcdbd0": "0x005264d85c1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c963b8f2ca98eab214ba907e8b1fefc8f291fb09": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5119b0d6e25ace1feaae175bc6fc467b681d040000": "0xb0c02861db2e67ac0e487fc765d3ef8d30e65824f780d8406b00300c078d9f6f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970063dc69f9baacd4f90f8e385a2b93e8233dd8a5": "0x009ecc2ed32900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397144da3f7abbb9a22238f2258d13d238a9149dbb4": "0x001e076f490900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6616a37a8564b972baafeda7489ef8b78050000": "0xb0455a49cd7799893e8a3e3928baa35c2a921c63352b4126ecb7942d7122861b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ab234c65bd20f8ecd6ad7aeb23e025b168b7a91847fa048927e2434e3cfa25c": "0x38db95df5bffa0bd5e39c27866f7d53e04c2f87c", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51216eb0d9253928f51de54502e31e7e1bf6030000": "0x52b419784a06ff99509b1b18b627672506fe92c6843bc19643a1cace1f4cba5400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397320a67f5d718c4b541a5ef8194ad4f4638162f6c": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c44151439965c709f7d79ceebaeda5bc5fba9ca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d4340fef5d32f2754a67bf42a44f4cec14540606": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f3654937b2fb15344117b9b16fe5065d8f0d386": "0x00ca8f386e0900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51864b574748b22ea4b5a67048f45239cc39060000": "0x385721fc43fb4262c56a1d6a6e8c07c64c7d7fee8b27c023b24470902bcf462f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397904a974b3f43903b63d2b6c7fd379550baf4742c": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e28c5e4c6891afb0df739910c733766305cde69a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397206dcd656eb235659735538e8c7e708ba0c3779d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007598555819639ca06fb8b20e3ecffe1159cb99": "0x004e3715665c16000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397709e8bdba7a7ca0bf99a138cb2a1d3e84b91c753": "0x00b61557e35d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb5634d0c12b29996b2086639b804b441878b167": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dacf2842c60fe2d7ddac8ef14f56bbf25fb2994330da54be6432568717945f330": "0x00bc7d1910bc4424aed7eddf5e5a008931625c28", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289239133b0a6973e8b1c2b7657dfe9abf78501a894": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a5fe200655224ca4109e8bc0b29ccbbc1e1269b0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd25b2aa840158dd94bb9a19e85a798324e2a0e4748eac08ded47a5fe2814ba28": "0xa1924e3e6693420a5461039f1225c5cc765de4f0", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d382e8702ca97efbe99754ae545488c526e3f56d6e1f6643a6b2981407aff264c": "0x66d3157036246be0bdb9bb8427313949b21a70c6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755755dcb998f1218761831ffd74747cdeb54e1ba": "0x006a71b29a0f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970194b15e139b48efe1c11fd9143f24be3597d162": "0x0014a56b28a300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e7f956676282819af849760db488febfcf3c2": "0x0090abc6635300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a50ee9a3d2480093dd4d94442dd6e9ef2044ed39": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001971fb3e5be59084ff323d05976eadde3a8852": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fcef6913ba9d9ce25e509979180d5fd0e047b07": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397359043a2edeac162a5bcb5594a24724176dd68bf": "0x0060800fce5802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979479eb3392e8a2b6ca2e649536b55c8a2b932f1b": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d3a544384b63158fe841d6c84b27d998ee27a": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977eba0c6ce3bc5bba68807e2f390ed997a5f78763": "0x007ece841f8c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b7a90105bf9acbcdc3b5219c1b55bc38397cec5": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c186dbc2c878448f2fb2969967abcd307d98c247": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890194b15e139b48efe1c11fd9143f24be3597d162": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e2955db86f098d3e695d30944a61ef610d060000": "0x82f33de37b35de7cc4f5ad4b4af122aeb25e084bd1e87a6bc28b60ad35d2861500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24cb880e0d4f3181a2f4faf3df0dae7e138c3f2ef4a4d2c65e5030b41410733c": "0xd3b766e58e0d0aecf1375297e84c798b15936d1b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397136cda791826a28b55f4af98698a51f3c5ce4e9b": "0x00805002f7d266010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d4e4a2ac2754434e6b32d114c03b18f3c30c0f": "0x00f2b28b484f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004af69a0c1ef595d06cdd6fa458165efeb0fa8c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d979604f1633bd31944245b5f6d183adebcf10a": "0x00404c948b3203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf1c98cd754206368af6e2c36e0661454adb11": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928997062eb6c3d95d33c040c98a54187b5a66541b6d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970038dbd81462e435a757f14dafacc119b98bc2cf": "0x00d4f831fd0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2457c0d57b6b806170c32383b6dfafa843768f7b96d34bffe9ac42bc23c7470": "0x9d979604f1633bd31944245b5f6d183adebcf10a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154a17df9ed51a26d82d68a71edd0716f02040000": "0x6e30851f4b86598f344b29224ebc8a52503adf8cdc32af154ab6ed837fa9091d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac38d6c7d86e398726a7817ded1002f5da000000": "0xc4f955aa807f2c144801b3ff189da53ae841c7f5d6bd15cb3fd3b5001e94f85500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289798036906b3adc3d933e8cf1a88bf25955b2ee06": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b2bedc981445a47fd58cb9814b8c11699093df": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa7f691c51ed0ef0f26c8f780911c95d5ed62ad8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0f3afd02178ae1d3e34a7f787b9b8a07b937295": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6afef10e3de1ac622a67217de17ac4ee000d179fd54edba27e77470d961e8d45": "0x35edf1cce3d9c1775ff5e214dbfee26abec3fb3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002cbd649b7c80d1c0b018deeb64f6836e8552ac": "0x003a46774c0700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f57eb791dc9ee61bb41f077d2819ef125e050000": "0x6475d23c468c6da8d92298d6edc33b5cbd3feadc6d637d207ff6ba64acd4b31700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970010e77665415c63e47bbe3dac8a0859f10cb525": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700033b2323f771073dc59b1b9a869d1b6a945330": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289209e077793d4f2390c410705351407ddd7a31d99": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8369231f4ee7d48791e4b23b789a6de4ac1beb6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900092cb42b631dfbdf26f405f931c409fe5a3913": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4852d47110a2efd4d38499db303859f407dc430027b7b7c582adc7d5b187547": "0xe4465431b88b42ed2cda2b4d4c50b38ca1ac8f83", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51160b9764756b300c1fa4a9f8b30edd7c66040000": "0xb8ec978a98432565745c836f384440f84ddddd40922aac33d98a1e46f896901b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d228ef1e58117a07783f0c17ba1faa7aca9516f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397184da5b2c2b2fa406f1ccd4d33ea8430cb0c54f7": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a528e61d81a47cc9ab160555143da7220f9471d2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e277e496431750ba944779d1dfc2b2487d6926f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970091e7dfb2cfa0adac37bb5cab874838973c7f0e": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243004cf480789b4cbad22bdfe4c1ae7ccf4a4675c7": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e7321d013167e5d2a3b591bac90baf4c75839e5": "0x00409263457f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51575a2106b1dcd7b033057eab09adabff5b080000": "0xce7afec36eceb2f4f7ce11d6165425203098d1b0d935e9dbe7b7ce8ee8faf74e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d17b7295b2d66adadef5746c793b746bd2443e1da913636625ba95c7ff853bf22": "0x456209ca9fcf4dc8d276a659f6c37003555fd0ac", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b3c251acc2a56b1a49d7629aa2787a17fd070000": "0x7a73cf30748f8e2654e678381901e539062e86ed9c56cd51a057e27dec03532900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d82aef72a8fb431d49db51e0a208fcd679ab78a8b8c88dfca61b28e67a8f56a75": "0xd9103bb6b67a55a7fece2d1af62d457c2178946d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ca516bb62f4ab81eb6d854c7f11abc68f0a0dae8719a1dec67ab3648c8a170a": "0xeb514a98e40a66e5d4f634b9afae1ec41d58c659", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ab6a0d5885b1debcb5f089ce73d3abe16792cd01d63d788609f8d859fc1fe01": "0x00e18a7c74b913a4f28da74fe2c194ed4655d63e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892085aa6de1e83261fa966ed09b518c3eb3ec30bc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfec441cf991e77767c7acf554e9d61efb63454b4d57153c4ebe95e15d7c3a329": "0x1b919a32ea4ba16c20e24ee83cbdf98b89c94a31", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e293a1ded3dc1b5f86121f41d9043cbd18914a2f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f4a877389deac7c25ef61210125c528c81050000": "0x34f4f4236b04e3bf83610b55d3527b50da22aac3ca85ea0d520196835964b67a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893cc9063e7ac5fa8345e1f59bc32a470ccd30ca6d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b21315771454ef8c680dddd7b9bd5405a273262d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397974f15f02a0b9715495ef4b620abe5f8debbf0c9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977cee83aedd18502b30da96e6c96f6a1be237f949": "0x00001e52c4519c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725dc5d102c1d282b89ee19709bab596db52e3d57": "0x00b44bcbd90901000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900860b441b1ae0c0641409e5863e1a5f3a28a651": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397298679f84e404ac8a9c73158ee6fa4973eca9abd": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893637f645f8bdb74e1cd1b28b5afc64c4a29c1f1b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897804275d8e53aed92f09f99f55e135c75bf297d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905a5830f9d6fc22700b9439ba20d15531be0c789": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b7482d5d6204ac5d40c673125ff1fd07d183183": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5157e6dfd9e074f967a74b9f06ffa0923847080000": "0x9ba5e7fef2305ec746210a83430a31cabd44cb964ae70bf16ea9bde11ca2509b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009276734775cde94eba0c4fdb98078db07d5fef": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51548f0c21bc627571bcd2669407a85bd7a9070000": "0x9446b359ee88fd32037b052b4d815ca777566ecb8cd6860db053a7d4454eb14f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755479b40703db085c9abeee0d45fef0c61b0098d": "0x0080dd62b22102000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e60cd5cfd2a79cb84942b411750fae1f800b5dde": "0x01", - "0x8985776095addd4789fccbce8ca77b23ba7fb8745735dc3be2a2c61a72c39e78": "0x0ce0855069a59fa0ddf72205213ba6d7bc3bcfc44316af9684bb215f815fc0113fdc559c88e35aa258566bd616d0e31fac0efda3d881b52055a31b35892086bb1c908626870725d87736e1476482cc7df7bf32f03f83ed8cb6db40a830067d973d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700939f839c289a1512d9859cfa8fb0ca0485a8ac": "0x000033381b3300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431e7aaa4af7293898e3d1d70fe20cbd525c495818": "0x0040b10baf682c000000000000000000cc7edc4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae6e1f76f1a161f6a6e884753f86ba364bd84c59d7ee14a32554bd1710be622e": "0x13d45bada78daa5cd52162254d158a217dd1faa4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d662d6d64e01bcc5f3a54341ef0bb1cbc022105de37a80558723f50a59ff68952": "0x008dd1b21dad14a42715a406f36abc940ebf0287", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000d6dbcc9191c9bdaf3904cbc0bd1135f5ccfcb": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a3db207ac468ff88714a85028b6fd96cc90363": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d50684b3f7255302490563ba108a92765a0c4f0ede17c923bb105ace91b75f30c": "0x89af1ab14542363a2c631dac9d2eaafd0bfaf008", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397559bd4befa5d868ca380a9928ca2228e3ed26ff1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d5bd2aba04a07bfa0cc976c73ed45b23cc6d6a2": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3181f5237629b697ee63a8a25636281c84e0a9b": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df009857059a88625167a5663db8a08417060000": "0xd8e8d4bc65f8628e10a4f90c10798486663d608d1500fd99c38e026414d35b6f00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcaad811cd65a470ddc5f1d628ff0550982b4def25cfda6ef3a00000000": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ad41e9d6e1fa47f1f6bcc63bd0327009590a47b": "0x008c61cb87cd05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f431cd35684e41f2f37677f28b4a760d8fb364b9": "0x003899e7d43401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289144aaca2fc5b80cf9407d115281ec805e620c211": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000f7e4679bd941ca16000210130b66329e28845": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fa4c4ea0ceeb34bf67c13be01e477cf0bc8db84": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dcf5ac110bfb16933b6f50b5e5f8e38c98d39481": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397516760a6e0a4f8e3683260c1b5275ac0b28992f4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956fa0858580a1f355ef357c2b909915f72c4b626": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda91fe41a638929d565d92843dee98c6fc02f8bb7227939aab4accca69aa7b08": "0x92ee94af3a409600eefbcd59bb63623a6280a13b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51039b4d658d5baf71687cee969af7bc895f060000": "0x96eae07e988c50ffc04e445a287e64b4c0ecd35859d8255ac438438f7af6802100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002b8afafdbf14bd18a1ee36bfd45a35adc783d7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbc0d52af72f95b948522eee7d3b09b8d77dd465baebc301f332aa52b1a93b240": "0x0013aa2fb5ec916660b38f1d53d4fc9bf8ef8a84", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890628dae391a37ccb6ccae7e6b6495c2622d69cda": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bebd4c731ec56e072e94cb0617bb47783ef3741d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e4f4e78097c5d1eee4c95718d8d3931226080000": "0xea53c14c3481ba7416851fddf1c192362ac5b8123e4866ff2ead77cd6c2d772a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5119b39ec1939d7be0d03a787c306ed82907040000": "0x7c2241b8ad2176aa340dea400bd84fc389091a7511086bbc78fa98a7356e630a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397106d77aa34d1fedbcdf0cfc17d140745aa5c2626": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9097fb3f7e7de0007abed486c2b5860e7de0ccf395acd0b1a0cccc124b2b710b": "0xcb4e4ab1d79759d29b58116ef6c0158298a0d12d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac64a0c791cd0b6edb560c121fabfe6a23be2c43": "0x00f456eebdaf62000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8369231f4ee7d48791e4b23b789a6de4ac1beb6": "0x0000c8e1424000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005423adf241a0a11478d32b7d49930fa4267709": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa71944087a4242e157bb28a8a1b110274228ea5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928958445ba5cb35d9d4513df77f8ef3ccc8d608045d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397775d8bb769448c20a545c582088db5bff3751e84": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b054ab94e535ea6808941b416fdc14255dec9d": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ee1301ee318ac92f4ae4254263da4325640a97a2": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e69c4321926a7604508fcf837e03ea65d941ef8b": "0x002a0967c50e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51854dd729024f01fe506ec629d68450236c050000": "0x646dbbbc90e5dd14a432f77bfabcb173d4d9d9918473847fa8e63ceba441cf3300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893024413123731ac0ce07c13e9511c0bb76a228d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eefc4631700701e9d546fb7451705dc83b0731": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928936518f6425b4e3d1045cac34d91cacdb49bbb9ad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289853fa0c1b613b0756d7798756eb87de67a6787a8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a640c639421c815ad2e40be3ed98ff0eb0e446b4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dacc0fd259ce0de2829b38a0765970e7ab65346c": "0x004c808dd48d02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289226c85b4f7e53cee040b6d2f45f4fddef5d97bee": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518bda250ca9d0e594d7d2bb2aa2a5d5c715060000": "0x2e419f33cb1673690d0ba113af46c36e2392198e9df48ac1210e36258943c71e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da05acd278b0b5c1c6ee96916b67d5e4468799fd875829dc626140f5aab5d300d": "0x006c0cc442ab4dc5ed006af112fd7e064511eca8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b94ac84a9f1d304a6aa6ee6dbcbfdb3ac81f82": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007eb3537067c48639bce08b04e4fb52caf64e9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972705657a219aaa87e5b7223cc79cd15e33e18af": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3b8cbbeeaf1eacd6fac6d3bc0450b3736482f14": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970059314f3708129bba2e5370209f0e54da9bd354": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cd5df6d891ec36ac93b730a2919c56d3e211a5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b8f1babf9c1a911eefd093089acb1a47b7c4fb2": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ac7a5d501554f521168dca348bce0e034a3f9a2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddaf5e24f1300e8f83b716baf3b1fedd62eab829ecba9592d373871dc1e9b8f6a": "0xaa5eb42c2fa202b4df66a36994d41e04bb3af2b5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973799d6c8dfad3c6cac7d4ea9430458503bd9d4e9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dbe2e4f5b4322a6cf5cdca229febf825a21462ca": "0x00ae5806543500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1b28877a75798bed7c923d042a8bee3753aa796": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60270251b87e5fb87da897643ce4f706689d027a033582cb731bfa7f2e507302": "0x8d221cfba0cf7d028ceea3c4e5f8cfbc76f2a46d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ea9fa1c4639443f9cbf06f83e53f11d817b751cc333915cd9d15eb6dd917b11": "0xa224725ea45e342d5f769ad16c4f7f19df7b1c39", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900936a6c0bd3a0110725442f1e0887d5ad459160": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f21808c5f1198f548a6be2410fb55fc0c4ac15f3": "0x0026da6a887d25000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f5358b6c215df659c467e36c26a4dfccad070000": "0xb20bd9a3646907b754afe17589e1d08ba7604099110ec787dad89638e3436e1900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6de115e43fc234b448bab78e647bf65c608d4e5": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b37489e03c48cf54cff37898b07f64402edaf101": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cad1acfa9151d7eae13f06ea4d90a0024cf37301": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515b0902f22984ef946ed343b34f916417e6000000": "0xbe8b6c175c9b2c8e856d8d8f48b48b2e6ff221dad80764466c4f4ff46132b42700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f40c3463efb7815a2369d56492cd4a8202033720": "0x00d0f74e784300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7bfb979281653e88fb409461d39f319ae988197": "0x00d22374f95f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b74ffd31e827212ab3fea8322769fa581070000": "0xf6cee83fe99a1a53a1296c5a478df2a8e62a00db5f412735d925c080dc58851500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e35c529b6d6f7768f868036f065138fe68b57": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff551a18250d3764de26d99e1ff0e854771056a3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f7661408c9dab98f34022b610f386cbb65080000": "0x6a9dd1d60d062e40c25417c5aae94b0efaa1d3096a35e9640215a3a0d6e9977600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763c62d874ed1c6fb31ecf56529892875ac6b467b": "0x00985db8783319000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dca74fb0ebfeab701b8bd771fa5e240265832961": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009e7f3b1be6c5e05c4b3c39804293b582ca64b7": "0x00904accfec908000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1200ce6d0ba222db35d6135e051267d901f44b1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d4a8282ffebc08c9decb113a822135434f9b4a2": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ebd4b8ed2ce27e41820169a6f89111436e1507": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890069c7b8173234a0b275d948db0a415a7b48091c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5170530cc3752b4214305a46ca32da19c679070000": "0xd6f274e764d8329ffc4d8c1178cb04f473819ce3c0e420e03aa77d679a43d03c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc44cba2747fcc1dfdc75f1ad38fbb13fc2ea072cc3855f7db2a52f9e5dd5080e": "0x0056962a7b6b0ec4c917488d06892ce34075218e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ee9f9804eff1886d23e8a04e5bd9ae506b64740": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9653bcf18e30531092fdc1c52afe06cf61f56fb1fa5d719078cd6914d395ed0f": "0x415ad707749eec89443896f6e55843a208e671e9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d205c26c75bc97c8a32afd10e3a4b7b1af83739b7be3dab18ec7a435cc9b4ff2f": "0x5ca260bfbe4c116f9f13d007d83c27f8e7bbc675", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824339b51396ef3c70571ce86532feab5598a766e8be": "0x0060e17ff11901000000000000000000ab3bc80100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890011e93c401330194e47c9ba85368c0205eee60c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949739691fb5f3992b3f2536f309d955558e75933": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f786d0aca37d4965c2929cacee16ad42d7cf9bab": "0x00263025941300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5120dcaa75f719b651fc723862651bf0144b070000": "0x14a53177750a94e9bc22574f2f971d71b8be81b55d607c45eeb52d7a4ce9b85900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5a0d7d8d403f371985fcb5c4dd9527bf82ee4ab": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eaab1f865f5fef8b614c6b2468333205122cd5f7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da03f5afd74de173c5d2033951f8225e29d58d813bb078d82569a07eb7cf60629": "0x0088db9e97689c85a29e67d08f1f0e43bc40ae4d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b646f262e971cbbcd4bd0d591d1fb7378e030000": "0xd2cf95a89356bb2253306df3fa6b44e3281c4bab6c06fb3bf7a8268a311c455700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da83b893579065ff9265b9cc79966041e55cf8f06d1d45fbd9e957daee08bc260": "0xda7b00af38ee8a3de3bf7ddb6c08cb924ba97d72", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ca6719bc9fd490cea2f94f000a3a47a4a5a498": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a39d58de9e6f425d04d99b7693ee5f37658db558114b7aec1501018158d257b": "0x00c72c867cc89ccb922cda5821ffe7f060d8603d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1924e3e6693420a5461039f1225c5cc765de4f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b98bc9f8919ee39e563d1ce3c1aea8ff31ab0585": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894523dbf40b244fec4c04fb37682ba584aba0711f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7e8ac122deb2f7dac7456f73cb4aadd9d479862": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732fc9e119218462c2171fa5bbd554979fb7a3e74": "0x000cef52127e5d000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3445faa3597b667b65809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d": "0xf72daf2e560e4f0f22fb5cbb04ad1d7fee850aab238fd014c178769e7e3a9b84ccb6bef60defc30724545d57440394ed1c71ea7ee6d880ed0e79871a05b5e4065e5ab03e0bc62a8fd3fded0b09ac04c6192796873b38abceffdbd1548f35f61aa25cc78808d9ffb966aaa53c3c399cff7ea0b409dc8b42908b9f2da6d34c352514f13a09505d4014b468c1d3e394002832d9edc35dbbae1a7a6dc96025d47d5b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9852b8e54eb76495b55ac3056bfeef457070000": "0xe0d92174136d7990f5ddc8577ff5ff898c9da30350cb244548c21f2b377ad41200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d1b7bff428ae90b82147cfe52e2e251b1fcafd": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ed2d6c16707836c6609b53b802692fe176db28": "0x0098983cd6fa02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bff9908ed6553a0c3b071b1232bb6b544abdbf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893686e9daaed20aca53640fc3c51059f6c5afb54d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c490375c379dbf184757b100561207f8ab1938e": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce34da5a6b581256cfda4af16a50bdcc4264dfcd315dbe8b609fe83f408c2568": "0x3fd29fbaf2b2245931f154595c2b909bea226418", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcd52c547ebcb0b817752c5b62d132b96b797250": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51311439b80608d78c1cd9e33d735df1b2a8000000": "0x16fcf8dd3680ec588538e1b3f27a827da4f3b725ba71e74ef68a636b6f5cc37200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397198054b85123c69a58423e20437a9190b56ae823": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002deff295e375a68734582a3ed0f7786b7e92af": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bf688eeb7857748cdd99d269dfa08b3f56f900b": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062340e032f69aa1370bbe8901d6f4e40f66b60": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ea03129bac8665e20576fe238d270cab2441d839818d533d5ea903f8960725e": "0xd9459cc85e78e0336adb349eabf257dbaf9d5a2b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c564910f11a0b70616a373d3b183e1c9e6040000": "0xb4f3b0258a6c76ddaf414bedb1cbfa64eaad958a0cff4f3c57085c5df38c630400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f721bc7693c0742843d9d5180715178b81f90f": "0x00fe39811a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397110b0b10908876406b974a5ee670dfb9d86ca0f7": "0x00f05585cee507000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b2f2bb8265e997bac1df35b75ad84fba30010000": "0x88fa1f44c372d28f74829f4304bfbd868e94069ee27bf338f6d6567ccf2e645f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7a28702a142caee8178da955f3bf87fdf449bf2": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890005ed1b33b541a3029004ccbba7cef3748ae1c7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1cc0cacf39176b5947925ed5084e7badd44b625": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5114b138498abe173338169138ec10e62a88040000": "0x5e888a7a333cfc1433a594a9b198b64bb2493f574e57cbf3f4cb195a79fe4a4000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700864b879b69a70b8798a0f61de21ee5b5bab3f4": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001895edb9215904d416dc35822c8576444e674a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005848ab7e3f13a54848c46469327bf62fe0e5a3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb178156445326540aff00dc2b5d1290f2050000": "0xaa339c0fd9d6df6927cbffbbb4a0256caf8ae245bdcaf8882c2163b36877390d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5125b2602561f053d40962b47f222d3aa40e060000": "0x8c71c824b4bf5d9111f4513c46ef76f4b003631e3e5fed3f644c2737fc56265600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704e38005b0c3a9e183c22ddaac3e074c689757de": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3ce72b62d59cbad8484e9d9cb06edab1f465e7f30f3eab441ae94df1c7013363": "0x530d949961092c5fbbd9a27e48902155e3208a64", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972107691d8a935f6f5ff47171ed954e332c4248aa": "0x00e8912de00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d1906f171b3ae82d0c500555143c28d239ca74": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f3cfe478ac06d285b4d02c57b47e06874a060000": "0x127a30e486492921e58f2564b36ab1ca21ff630672f0e76920edd601f8f2b89a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896dcbf212a83175dff095fea2d226aca22a93d643": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897e22e58855cad471e60b297f1a48c34f44091132": "0x00", - "0xf2794c22e353e9a839f12faab03a911be2f6cb0456905c189bcb0458f9440f13": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004b8716a1f5c2f8a423a5f170dd5fbe4f436171": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744eb5b6c2d5cbe2d38f9fc21e5166f5964bc47a7": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e22bdca82b186c02ba11cccaeb2515d10b0a81": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750dbae8912187371548f53f74fbd269f86fa44ec": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b11453d090fc10f3645d14a2e2b1af79030b948": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3388e1ed707443442afa9bb133d9dffacd9b467": "0x002087c009c91f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c83c9437f59ab9d5c0f5e16a12bdb905158912": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a6821bd42b8a9447c08b522c8b303f1c208dbd014484d3ff30fe3ababe7f732": "0x003c0f01ebe0f29488c629e253dcd4cb9f1cc586", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c078e415b18fe4d186735580c1cc894800060000": "0xd4c1562a1e4d60a14486fa3b12d843501862d77075d222ea7ae7e61ac8cf6a1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c9f5c47814f33659ef2d1996a0961e80b8597bf": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51884b50ecba0e12c819209a9bfcba43336b060000": "0x5a4407a49eb2bc29d1d9f1583a0037b94bfaa348b76a0589147a7cc3d35a800c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d724e0032275bac5598878e5dee08149d11c44700c9c4626d1f339ff1be715f30": "0x5daf6d0f17ad397b6a50308bab72dba0a7a74249", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900845040dab8b551a3b246664a6f9d2c2431c0f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ab7edcd19d92170528cd5d8a7d25dc6ffb75c39": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba8cbd759ac337120fdce334348ec173f6e2ce90fe573292119f6b33bb805c6e": "0xb5eba1c7420ab3513ca76e1358b1a7c9038d1fe1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519eb5dacb71a17558383a71ba174d53c73e050000": "0x3e08fe860b1689624b46560ca277927a7f18006f176db498b3f7af236748755700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db096a731f7b2b62dda5658f829976c2226df044ca3820f3fb5f805f9651f801c": "0x000077e89a2702e5438d2be4f7e8744a5ee2b60a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002a9013053f71ba888e54a8f4896a5cea18f904": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900368ab2cb58eba931c52dfed54379ef3b56f79c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938c1a42ec8564eb3a62966a831a5fa45e42b5455": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ccd8ff59612d4108d9bbe5f16add545efc6fdbe": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516eade0c5e7146b3507f5faa97ef036a5ed040000": "0xc4e4ff6adcb360ec9eb50d5e04ad47aec66a30055222dc13c6215b5f2db5976700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd9c6de73ea0b65c5aba8bbd3a3a9a212be3b93c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d560363fbc8b0990637a3014805fade6ead14f20c453cb780eb32e9ebb5839d44": "0x254c62b0e0862a383dbba455dcf692e71fadcebf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890005ffdac0973574e3fe91ff31b254fe2fd08acb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002bd178dc5ec5ae344d367d4a97281f63736d7b": "0x00d6e5f7f6c601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748e17a5cea6d3fb095b75fd94f36f6a902dd6702": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f21a0e51dbf4a93d9ff5bdd23d6c01775f1d708c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58049496de2baead8a7fef06cfcff07764d07d7d466c9d64a4982cb3ca32b85c": "0x0014c1efea175cd39fb686024383fc07374d6db8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cfd2bd2a86152bf48b1cb9ab2e52c19d5717fa86": "0x003c728ed34d01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d40821bd2486ba9e15b3f8dc6ce1bf67e050000": "0x54a341917b5bc8c35dc4182e611a4b4d7550e1847669fd6203c3c2fcc9ebe46500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de002b79aade8d38abb85617f6dff10f60917b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300b0fb7ee5554869bfb57d69836b005e00a942d7": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725d56aca979398aca283611258eaf84de39c0d9d": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243184da5b2c2b2fa406f1ccd4d33ea8430cb0c54f7": "0x0040b10baf682c000000000000000000cc7edc4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431a0433933f6ea1084a7bf83ccb474b4cd263e7d8": "0x00502269587001000000000000000000e40b540200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ac7a5d501554f521168dca348bce0e034a3f9a2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9c635d29a8bd145547759a0e823aa306c607a4e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a83f2bcefba0bc8bc10f88eebabb7806bce2f156": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb2815ace3d144b7381e2364e799abed8c0d6ec1": "0x00f066368f7900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a419133257993a9af281933febc870657c764d3": "0x0000b605da7963000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f220d58015031403687716a43c54f64dc99713b6": "0x00645dd8e71400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d02a4706d7ba244bdf80f9d5b2a9615802aeb33d71235a2be2798e6a48d763541": "0x48135590503369f344c719db70e50aac005cfc24", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928918be7c263f1de5d3c4e78105638ccc5cef8e7c9d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890051ef63e8b9714d239156854c615606cd9effdd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289656e42bef0b20a74de23d365958a4461f595b755": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba10276d69a11c6ca944dcfecd669325b67614eb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c26f719cdfe1303d3ef566ca2ada12cc56407c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760aebc1d9f35ac28f40444bbc318abd850c9376c": "0x00eeb51b29bf0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824399dfbf9a028384c05ea011e6279a4c1d18c782be": "0x00a031a95fe3000000000000000000000eee6f0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895baef8c667a773f2fce5568f70ea4b8cf94dde65": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f82fb4366eb81322a5e8ba8b6281d04c32b3d631": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f09f297c045899f5cc00131329ee10e522de08": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d098fec4ecf9ac948b17a179c638f1dbbcef72d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cfcf3ff87b3c34cfe4285a85f2115f96cf0fe5c1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee2f123f672d5bce14e7f9dbad8cfc34146319bc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900729f3355fdf72962e9734ffa26ccff9e64c0ac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a5489a5578fa895e4d39b3f3adca0ee1bf080000": "0xce34da5a6b581256cfda4af16a50bdcc4264dfcd315dbe8b609fe83f408c256800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397831cead0805ac7cf4a744e9e8d088317eab8d0c0": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289035c88dccea98eb443d506347b9f96044da9bcfc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3640b7b7fbbecf967f99ec9516a74f9e255efa5c8529751a383afccfe936175e": "0x5a752166d908f57d724163a24c4ca1fa4ad17d7e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb2e14a1805cee42c55d5ffe6bb07a2a8d09ea19": "0x00d26818dc1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd04defd841f7efce21f5c63f123baacc61b796c": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b3bc9934e8b33722ca127accd270cced149b5f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c1c6383e5fdee5909518f8fb94e23d9757334e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513afb6537a80eeb60212b36c6ffbf627635070000": "0x9a58c667ab381990c1070fae2940bff21a5af23ebf4313e745aec8217277331500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960540e1682be7484af2d79b6cfda708ee285dc8e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c69fa1a7e9572b1d8e1abf43739fee285e3b018e": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3afa3ce88a657a1c8bfb69da7910fbf48b36af6246ab91c868d410338b998a36": "0xb2e52e1a42c3ab5305f1b071ce7d197565e9bbb7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511ce8498608e9ba50120ce172f85ec87666030000": "0xd43d6feb9c8b0455a11950079b65ad498771bd454e01b56907a2ac6362d7274b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a05f5603a17f60c7c651710b3c5b3ee254040000": "0x72ac4cde67de555c2f0b1ebf55bc45f0b61458d134719bf9f56d28867cdef85800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd8e8d4bc65f8628e10a4f90c10798486663d608d1500fd99c38e026414d35b6f": "0x2b4d63aa980b39130ed7e3ae50ec40c4d8b33935", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce1cb60d9a8ca55e467f0cd5ac465505d39b1f58": "0x00accaa52b0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769f32538b86469d94666f6d7f570185dda0a6781": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289462891ac9ea16c799f864e308c7e73829faafc02": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289db5d3aa321ed9182afd69a3e1ac855073fd914e4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a6629c7691f18cc987a61b0774a524287b5d0c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5197067eaa87b5054252fe7efe5b60299f6c060000": "0xa2658d4ade7565e18570e0289c8c4ecf3b923b424ea7699232cc678241d1e84700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51090f86beefef0152549b2f69c700c21322070000": "0x20d2e91f70891ab5b5ca943b300d5b056c47a2bcc5b13efc7c907bd73c384c5000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c83f97b509306d26b9a7dc44993e2d82f73a049c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817deaeac37aa13c38ed2518b7b4be3e4e7899c5b971091d93a4d33ae18231b1fc1e": "0xdc26b2ce9c7de60d60c165f8c70ba7f8b08286aa", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511fe1b20d1fcdcc86a42e19f9a4d4e14eeb070000": "0x003ba0c4031ffae41ee2dd2d8505f8e9f6792fbe955b675072c42d302dad7c6400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff110236b3b40155057b45ae77b99d1b38851b15": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985e2f2767bcc9cb4814bd555413e2e17e1cf8459": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397749ba28f1a561b462e7617728bf8f62ce0afbbbc": "0x004072e62d2d07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397946ef62e1a97865e99dd8366a87506858d83f279": "0x002e808ebd7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fae6fdcff481d6966bb864e8ba258c43df1d2da": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289268b05ee0e0e033bf074554452e701a250ed3375": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e538fc87abe6b95622e5af0d60906350fbe2280": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970096b6577d9a53f506476c8cc6212f947562ca4a": "0x00244691bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900383b93d6bb219fde72527528fad143dbaa7a48": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289542055cba6dc03f704e613894cc1d5bfdd74dbe0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928962431669ffdeeafb1d3b071ceebe443011b8d6ab": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514fbb32b4154a776dd72db7550312a0796b040000": "0x4a46f196fd6ae9d508b04218c4210a55b6ddce13348b82a5c5f2e8960601aa7400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707b63625869391c66528acf9610ab2c19d935d9d": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512fa990badb5e345358cc30df9e1ed0ea0d090000": "0xe695de55d5fb0be7525b45245933bef3b57b71fc7eb68c38d0611015c3c6f22e00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x32000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e73ecfd355db154dd6f0f9a26a610d791d95ed": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4add2e79c9cb1b479a22a663f7f25e53f63ee7d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a926f76a86362c456e877e0b3f00c1a43b05c4ce": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c923b032f3c9641cfcbc6a909fb66b29faa5449e": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e8628d1190bcede69725c4e920d9ce42c23ee29e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5148c3c883d518a90c169a1ba1b8a145ba17080000": "0x88f66ef5a1b50f36b1ebc997c91cb47affe0d1de4d5d9be9bfe009c0783e912d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f947f05d2b295c924a3e6058771180cbb75cd60a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0c0f7fd4a8a750920dc953229b45f708754a2a0": "0x0064eda26a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f00a83c85b0a5fd088b7ef7cd5b4910ade729d03": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ac7850fba178228acbd4c8b601bda2342392e21": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970532ce0c1d948b2e8317af8279e07561ee3a3979": "0x000ece41f8f002000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48a9fe7dddf4711de4871c4a9f5c52135b49bdb7fe99d393b60868428e063703": "0xee13480f5e260b749022ff1e533a22e14e48c083", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703377073f2421fc3d9eafe9e235a820c4038ec8b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008389dd2775442702e13781f464c01558823b23": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2cf95a89356bb2253306df3fa6b44e3281c4bab6c06fb3bf7a8268a311c4557": "0x009276734775cde94eba0c4fdb98078db07d5fef", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5133123b7e8fd7a60b67272b515fca10bd9b060000": "0x9e110ce4f1c6c10618f508aff37aaa6989afbe8deb5ccbc4c13ced92dacbaf6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730caa2e774035687e738e60ed754c1787b206a81": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4bcf84bbba74f7ed07abf9e39df86bca995fca9": "0x0072e669861100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b8a4884a5afc6cbf0dacd720fd6468b41b6d437": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942eeeee8340f7018c662faf487351acdf434f301": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519467f371592a7ff9c8e6c6b0c3b202db59050000": "0x54ff47b0c118a4a37b57849e03c7a1b1e223991e427789b7d0b1a6c152c41d2100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054d65ed11bf1e5ca7f22799d64d88e7e5c38ee": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513b5d4260af31ac1c134bb8a740da2b016d000000": "0xe67bd0c0f260a6fb9b90870109b8a97cf0f1442b4694d7c17a6f0ba103db850d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519bb518594fa705bca1166a663aa755a4b5040000": "0x74e407185cbb9a15657307dd6f0f589b1a275cbdc4f31578ce7abae1c8470e3700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c6c2b5e7393405e85ce36af97abf70fb59060000": "0x6ae9bce20ec8b89105efadbd7bc50d34843e9a12dba7eb10694105c61731015500000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c46c18ba2bc2ccab6772616e80f72daf2e560e4f0f22fb5cbb04ad1d7fee850aab238fd014c178769e7e3a9b84": "0x5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dbefd695363d03dfec48e770ad6859dfb30cac4a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe1d28518ed43e08ee85b800b936b9111893813279dc718f4ed8c09bc407a80b": "0x66b9dfaea3ddef53b98da82a224f70842c817703", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007e98442eba3fff13fdb90fefc77b2afb347e5e": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b4f896bf50e0e40f03240f07c80a3be82e1fae": "0x00f67d9d3e8700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ecbd51638c57c1bc38e405ed703d82a977bb76": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e7e3f4863f3f5ac3d8f05e35979b020c62000000": "0x603153efe4c60f146d61b66d5c9f4a9b469291aa260899bd99083d755a28923d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c062628943a930b805849b494719c7d23c77bd5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b27b940bf01de20eca4abfd7c9bdb2304142ad5c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938103bda64188813b4d890ecd742d389589525bf": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c963e429b2d92133d801e9cfbede0efe65050000": "0xcc0b999bcedaeacee67b1e36d207f68bd55f1e128cdc90b1a970b1656efc653100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffda559dc06f88b229af02fdc41a5a6a48127aa1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f96700e4dcf528139667aca495b572f7e8070000": "0x6ed6a67496a5bd0146cf3595ad50be243ef788d6ef3bde1d66e9783499f8052400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2806d2821e7ee92952bd25fde83ed76930fd5d1c7139fb9f3742991ea3c3e352": "0xeaab1f865f5fef8b614c6b2468333205122cd5f7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786a62b26065489467abafd4e02c86fa4ba37e8fd": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300fcaf0a13a98b04a3080d7e246ffa7d072777e7": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895529ba8a2dd48942abc90f9d08667b4e0e7be69d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb2bef1fbc9cc3220680981588cc4e27f4040000": "0xfe5b9cf85b687c9f15be1e46995655e81764937973191978549c4362eed9722700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006a8106e821a1b44cb0626f7fea5a951b11a282": "0x00f43bde630600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5111d2df4e979aa105cf552e9544ebd2b500000000": "0xf1fe9f7ba0feab9e47684d4006ed25ad6c441a1553cef62748545ea575392af500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749739691fb5f3992b3f2536f309d955558e75933": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397572613e81421b11b7cf99fb41c3bdcb915a50d31": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e63bdf498cc6781799cc23953e32dce295a95a0f": "0x00600eebf2bf02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893f2986549e4a6d8486b64bee434a3978c3e5a1bc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f18ccca441625179b40e774436ba038505fcef83": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824312f9122d6ca5294f6817ae79a9c4634a07931a85": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f24d94bbc5db0a1b2e34b4569abd5f5ea8050000": "0xaa86d43d6d5265003d203cf22d753c9b3a4fb8f651c6424d68768a86c12d384700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c885efcdc3b5c736b0407b0e402b5b842c81367f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890273a1c21222e27a3d41dfb835e07af4b4494c08": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900165863e6f9608161d8533e213c009390fec3e7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c4a157e6363fb44cf9a3edaabeec6657914f8a1": "0x0012a7a61a0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973274e22d86cc21778df15836833e147b1894d3e4": "0x00c07ed6adf901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba22a63969aa637e9a0d4ae31beeefe97ed270b2": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cd28ff9bf4f1a4a1715dd4c364254b7b74050000": "0xea0f7286121217c6369ad3c99f1ba910f5137aa283da71cce47111244fe2cb4000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c693771e3caa38974d719d5ba8b65654e916c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943eca45f63a712ae079385f35e1d0622a2c4132f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b67da45314e56d9603cba1d09804e710759b57c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e1ef7504fcd7d982885efd88d190d3179fcc3": "0x001c44e7a71f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be0c68748745eafc6cb8e7ffc3666f68115954dd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6e747c701718b04a86a4f693a987662fff73f1cfba6fd907d86662725c824707": "0x009bd3c56ae851e91ac23e8a736a7698de525f1d", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cc3a572c4d49eeabd53154a59779f7eb6da912a9": "0x00508df5952701000000000000000000134fde0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dda6898e71868f7f38396c71107b01396ad4c36a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970038954411d31a29442c8978cd56cb764982fb65": "0x00fcc39bafee00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b07cf336066916f70b0b5c90468feb73790e1e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f6292826b8af10c8b70a178fce20411da8b37b4": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f613cbfe3c3552aa32bd23cc820b811b666007e3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ab255abe36663fccdba892c4ca3bd160bf845f35": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a82c7fd9dc03658b255b5d68e6251146748953": "0x00fc245ca98c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289136cda791826a28b55f4af98698a51f3c5ce4e9b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f1f8c68df1c887eac95349aec6d3b407e000000": "0x462b54f04a4e212e9f2f1735957fb753295b120e212052c7386b6f674dc5af4d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d92e5e6c84e9781e37eb1afb166eefd22687054c8bbed4426282077b19aa0e708": "0x00d01d14e379d23d6a9b47e8886761d8e9d7e56f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890026db7abf8a3fe7b3543a035d11e22b90615ee5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a20f355ae68be4805fab64fe798f19e6db744a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289438ccbd79f20c1e68b828211ec2ba30c0ec9c05a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c0c5b7692501593568f6ffec95a25de72b090000": "0xf68f12537fd063f3949875a1efc2ced4485685e4899a8674c64ac042dbb67d4300000000000000000000000000000000", - "0x0b76934f4cc08dee01012d059e1b83ee5e0621c4869aa60c02be9adcc98a0d1d": "0x1856f0bb1f6307e043be568014eb4062a9bca4a255f39ed0be9205ee97c93b4b6e3c7d33a7ca6e152bcceb20a75bf67dca553cfe1fa0546decfdab25177765ae07a25cc78808d9ffb966aaa53c3c399cff7ea0b409dc8b42908b9f2da6d34c352550e91d8b60377c58f1e8dfb6236dece92917f1b4ee67d2787ab090c5f8d2200f9ab54fd64223ac5dd0c547efbf0015944d1bcf8f4ca721716d8922fc940c9a61cec7e2d5e28925ae9f906e5ebf1c81adcc7e524751273a73a278f472d863f532", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433e784d624d4e60da998bdd79169edb8beff89d27": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dace38628d126313f685422e818d27331e9afae30fec205b60f5741faeb831c31": "0x5bb506f259835349974c5fbf0bfd5cbd37157dfb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2d785f6ae83eba091d04a43b9dbb91ecd9862ac20b70c46ebed79f7068e6e62": "0x2dbdb05d09c9e0f10446881b9be2e107f91f7e41", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cfcf3ff87b3c34cfe4285a85f2115f96cf0fe5c1": "0x005a3db8ca1c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e5513acdf30de3194ccc93acbba065113e070000": "0xc02535f37b33f8787bde96761f4643f2229a0d0553c81883939d31215b4cc30800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffcc480bf0e6acdbfdf71c7b8ae796647378c155": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c116f3128654372fa53ea006f91d4a6cc8ab13b": "0x00c8bab0cf2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972406879e1a8d273aeb64b000677b597ae8db8517": "0x0000a4f0727b71010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c90de3a4c3005a259e20cb50402d7c41948c657": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289577acb95cb312b867f08b214f421a52497597688": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971476d4c5204269665dac82770a8cfa80cb4ee953": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817decbcba92701cdf5ef12ba295931dcc4867f816621fe32a9871ec2a72247e3569": "0x3e527eaf454a93e9aaf096b404c8450e66cbb9ed", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a172d2ca38c6011f6a48bc781b2196b294e3f2aa": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54a341917b5bc8c35dc4182e611a4b4d7550e1847669fd6203c3c2fcc9ebe465": "0x40692724326503b8fdc8472df7ee658f4bdbfc89", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe265551142de05f83c1ae9bc54ee9bd1248f80b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84f70fa89ae1707982e11b6ea49d1ea0f4242f82b963281c7292683d780ad50d": "0x3310cb1ad03f5b8a93d5c673e11782f159a017ad", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0c59e84c73e9f41ac8dbc44eada4bd908a07f05": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7051b75d2765d40638e37a5d0dba578dc82bd9b6ad5a29c03cf7200402125618": "0x2392f61669f6e3b81a46d30210761c77b0ed35cd", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512e48556ce783f4218616effb3da5069e8f070000": "0x5e58b984496c06c4668dc371110f5c0052d826627fea35dbf7dd9254d719665b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716eb8921f75fd6761fe5cc90674bd9c69d05d1ea": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d82fda6e5d6dedf42042f3ddfa2b78b152b6402": "0x00427f58a79b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890091e7dfb2cfa0adac37bb5cab874838973c7f0e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975485be7dc5d7e1218052accd222e75d4484df1c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794c70b28e483cbfe9d7554e211f5f38ef9435bb9": "0x0000d098d4af71000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899782b9c2c85c2e9db211cb6200065e312853e68c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d34e9fe863c26cfcecf82bf4cc18701b3ad4767f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928954036dcfa7deae92f0d948088690cfdfea648143": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891933a3602d1ad20840dc198946803e0ab2b49d06": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba439a857d9063fe02433e129da8ed247e75351f480b1b2fc023fa1023795625": "0x38c1a42ec8564eb3a62966a831a5fa45e42b5455", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d8bd56a9cb0b6a854305830f3f8269a9e5e705": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515de7deeb2639f871ebc4a32e27ad189bab080000": "0x460711f6cd4dc36bb338b1548884b1ce28f5d919f9ce479116294dd34784524e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a42e82c8cb31068b240772ec69685ffc59b7fd11": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5e500d5c726fe768ca583c996e244d0d809a1c9": "0x00e0e6a5d93411000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c75519e31519e8ab8a48f5ed081d4de06770298fa42f2a469619448f4896804": "0x0054e99a8a384386279936d42dcbabb4a710ee74", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5cc332716801e8f3a44b124dafbea4f22f4d3b9316d81e16815bf60c1fad095a": "0x50dbae8912187371548f53f74fbd269f86fa44ec", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc94540e69a5c2d5a2e8432e99d9a99d66265343": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c9f5c47814f33659ef2d1996a0961e80b8597bf": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004cf480789b4cbad22bdfe4c1ae7ccf4a4675c7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008d4e47715eb112c1ffba14275bfad41150a735": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74e4867b46b4d8ca428315963427c002b2e78d0faf10f6f7ce28a3d963cbc65d": "0x574f85614c44755bfd42ee17a3bdebbd67a531bf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744e5715f7db1a59de2af178cdad023b16e39da31": "0x00fa3a40d55343050000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901e086773e4f00f25c04e6f0b8607274ba27bd94": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f7a2d983c0ae1613f4b3c50dd85965a81fa43a49": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289422af240dff9d253cd31c30d5af9647fc60bdc64": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928974d452179482b55e13d4382a7cb9fc74392b5e4b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890751f20e8b8b2686d8844d5c452ec8ecff3fc36a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986821570ee3ec4bfaa2e2ffbbf16ee4f61336dc7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd03d9b87fc7a4669076fb8675021f04e4e8f9da": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e283542b59d9573051c34e6b319b3c7169060000": "0x34ec6782d6aa76c498734281a7118615544a986f39bcdb18fd3542fe567d044d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289800819914cb399e8eba6cc9f026066fae96e4ff1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891daedf70a4ec0745ec4968d3e29ccbb4d6001109": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f39b53937f425d7e764d6b1902bd775ba3d514e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890010e77665415c63e47bbe3dac8a0859f10cb525": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b9f9d6b531546e4c80058bee5749d72ffc76b54f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51734d819cda9ff0c746f74526af697af732070000": "0x937ef7f30b8533c60dddd948dfca54140055f7c001bc8b7b7f4e3cc483609b4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eb4363d35b0824c7ac8b54c2d05c6bf54b9946": "0x000258fb633200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c24318e1ea1b011a6a84d2f83436c77bd753e840": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd0cbe2eefa616252e493b03b5c2dbb9060784ff": "0x00de83d2453e1a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b8d82c1ee5bdc3505523ca8d1e0e8e7df6b10b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f26ee7b9a0580e24fb699329f34fb62f6020000": "0x28e3d3c413860766007043602a6d6921c324a873c736d96691a40c9d8ceb8d4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac8eecbef704590852f8e75d87ae2da59bc5fc61": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22ace5447bc2071e2b0712f2a8dd927634840fff178eec30ef93bf15055a462c": "0x8ab7edcd19d92170528cd5d8a7d25dc6ffb75c39", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002176cb83b3b5670fd6231bd92169346fd49227": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e724fce558be730b5ebf7f1d4da69b8d72daf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890014c1efea175cd39fb686024383fc07374d6db8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e146bab9d18b787b7b863353ed89536b3b060000": "0x8cefa6b7f204e06e8fda587af0917d02df5a35ceb8bed4583c3a5e91352f834c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970074a0ca635c314c5cd73ef58b1b8d64c5d7d20b": "0x008e713b42af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b0b1000a023e99555058d8dbce1debbd149a6f6": "0x0062ebffa05700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511ef757a1cf6564b9a6c8199d5d0f738a60050000": "0xa69c4536ec42bf8f3b60198d7b78be15ad9a147ed73f25164474fc61af261a5300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727efade55131916b2f0a34e313d858bd6a30cf4b": "0x00dae7b3f9b101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289414c8f14496260104e238a324b6b02a7e8d2f4ef": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5127379300762fd73ce284b5725ddca35628050000": "0x5cba75ed8675adb79470d814cf37fa72d13b8df12ea9651a7e65f6bd526bfd4800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d5ce12a848bb0d982d8a07ae5c462f5e9a7199": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc7d085592f433e4523a2bc030842427b63ce31c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ee708bbdb68556d834835ba8214cdb27197d54f6d0fb26107006cd5754b4951": "0x8a34b5de30bbf7a351c897e26b088397487bad42", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da46b7c2ff66b1247e437df5b9eee7da98a4df42092e82dd14f74b8ddf00cae1d": "0x4341633902051568199e6436ef96483c49e72dd7", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da6331c5c97cbbd671ee9023d3a163d81e965dad7d509f28b970dc86c6f3e9855": "0x0030122b94e0e0c56a5b04feb3ec224244a5b18c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcf8700996507fefbcbe7258ff7f5af0abd5821d": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b67b5d99f7bd244fae58ebf86d35e38f72cc7d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1c778ab3f6068c5583ee0df394fc7251cb00fe3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a88f54595f9543cedbfe0697532882ae3d70ea50": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793c419191cbbef6717b1992a1f854ab2d90aa7ba": "0x00fcc4c468c320000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae41481227f53a5b760aaf3fc5f0039ed8010000": "0xe40ce409805d07fb7286ab3c59923f87776aa2f51d1d1b517ec07bea804a871a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001b2ca922cd635a78fc6e87d33b8e8726e057d8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5135f1709e2cabd26728fe6f96889bd4cc88080000": "0xedf6aa7debec01f84d3d24b349540814e033ff7cdd6f0c4200657758f1d39e6500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c5c5385fb7bebfc1fbe02db4b9c4df76e39941e": "0x00a44ae6333300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f77687df949341a0fd8f69a3b557a26e13efc8f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5121f6f22acffda5f4dc09e3a938e6007b0a050000": "0xac33d356f459227a73109e31a9745e0a5b7d366ab0d489fc0b2bdd520c4cd92f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ae00a86d40e8e73dc86d13f85c1f4a8c89bed88b44bb614c7c33290e139b374": "0x0001343f03e9ad77fa47f674c4ff59d5fa11fcb3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005b8da2c805e382fdce0dcdb2bfed16611861b9": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ab3237736c07beddde7dfdc0f9357e00a9727646": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e53166f4d724236b4235a9bacef0e425d9f13956": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ea6d745b4dad0ef65899ca31e2989b3dc49124f": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003d69a4460b62a962d7dc8f5cf77db217998d25": "0x0014805c4bc800000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505f8a461f1ef963666175646980e0a3e2de329a70e2763438a1a757bf6dab945dcaededc7455a7fcfae83def07b": "0x3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3bcb85f93385dd35ea005d6cb8ee5e093657f39": "0x00509905887905000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb9458f5c5facbba1a3d21099f8bbec44d7e3d00": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b86ef72b38f189bbf18a94bc46c044b73ea807a": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289391a6bb5f2fca9a19d16f09aa298e9e23288a5f8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea67cbf97f4e26cbd9406118041b54ad460248c3dae2f3d12c2ec84588697803": "0x599ad3f92f76e859f7b7a87dbe3aacb81e54c6e6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901c0a58e08274297cf31f4660c89723f655de3c4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa5eb42c2fa202b4df66a36994d41e04bb3af2b5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e4df8be3f7e423f508badb894620fb54e0080000": "0x22f00f2ef7569b9f5e8fed76777eaae266c7c355b03000329d1e6856791ff22900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a34b5de30bbf7a351c897e26b088397487bad42": "0x005cbc0f3a6100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894aa9324f187b1005e43892e3fe65bc9c78bb8d8a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fa022c7a8d5712e902569e7dbefc471919a1ad": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e577a9eeb79d887f0d6bf7f504c5f273f533c04": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8a185b4c3f9684a0c7db5a9f49a54d9227ebe5e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289175a83f4a1abbb88f6facc969d669cae9f48d7c1": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da25fceeab53dd6644261c4723907ee3bf1b8229": "0x00f45c7452f600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf2209a10d9ffda04bf453bcb3e367f3eb6756": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a6e3ec695183eb5c9808f550fff6a29d2f40de6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d189fb4ccfd8af44b0027a7461e069906aa1fec05da7ac552b54d651fd14b881f": "0x3dbc5ff979d0f30d65c33f684eb4b32cb4cfd3cb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928990947676a04a00d14056a9d1d428e24999f60f2c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d265508bb6b8c2e04c18c3c0d7491fc36935f55adb4ee5ad20d5d13b90e1c4978": "0x537b2feb029a7073da038c2b9bd34c1c6109a0a0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c29f18ff6f0c0ba071e0c6435efc1cad05c25a9c": "0x0068eda86b6f08000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ac8a6d59db3938ddbee19f4ec3ea8a0a771bf6e": "0x0080ce9d58ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c019777dfda36dd460e7322fe6e1f5c94972517": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005b2192a3fc9f380351b5931adffd50a3614731": "0x00a4d3b34b1f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7b17b9d5739e3612f390e12023966ebe8020000": "0xf4e69b23f84fdc3e0482543eea31a871c709f845d9a5575ee148679266db787300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397abd9a0c14b25a69a5bd2f2c67e7192d88e64d152": "0x0046fc085af703000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824338b89b94dc5dec100a23fae5b5140ffcf81c8b24": "0x0080a1a76b4a350000000000000000005bcb3b5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008ad80219aac538f2374ae749d1ac797da21bf7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903377073f2421fc3d9eafe9e235a820c4038ec8b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289230647d9f4ec617a62a6685058aff69d729a5dcf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0d73de5df565717a3994af5cb75455d8674b46c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d761c14101d6d4d268b7d8fe9df7b1411fff2e3c1248cf72b1fae155214b8d35d": "0x9bb987d0bfab369b9eca904b842723670584a5fe", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2021456d5c848daa658b302a50a0a682e78f24599a6fc4b224621cfb9f00a953": "0x00e3ea41cc49b5791b4410ecc3d2dc4a303e09f4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f0047ad5e5ba9963f9430b2306b6856aa5b9b15": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901beef9b0f0a48597e1454d75eb062d70775b13a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928957981d9691cc20a7ce7c628f6d7b1ab82fac8607": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a99db07618548fa203c1816e4fc95741d00d8d0ce0f38eec8633f0ea5a6c519": "0x383f42b5de515c564641f65f5da3bd8b4a35b4b4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008350bdba3dcc3c01474bde4a9a6bfc4144baa4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f18055387961a61eeff5a3fcf9d510b56a94c6da": "0x00f0f1bc9f2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a6bddeffe26cd501deca6569ef33870f15aeb637": "0x00408ab5c74301000000000000000000a4ee0b0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700116621921d8a7b01706539d19d65ec48dc7dcf": "0x0066fa41c93400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd69dde7cc6a614142150f8edc4c87b2f48a13f3a250b2a9698e7c7e473ec2615": "0xbb9f0597834168a78ec443f09f75e3d62ee98dd4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2861549f4eded2d6aa490a7a313e0108aeac7c17bb63ad2b99f815d725311e33": "0x20ac64b955ebc54f7287fe3ce29671086722b60b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732878ea4b480bcc29e7404128a116c75278b80c8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e78da27c3d7a1ae6ef59a79946d8c77a708319": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d604ed1079ac6edec50ff937aed6ede2929c20d1d8b15854af06cfc7a5adea822": "0x07bec2143e7052bc6608c012ea585984f8f9b27f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f156f0e79a516f69163743f87e592677fe3e74f7": "0x009ac9845bd301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289531aa49f00416d099c75ab4ffad972cc61f83de1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f9ca97f3aa305699b44f0d8cb0cb72e7d2060000": "0x8820d7c939883f302beb71f2d459632bb46ce2ed64456f90e6b31a6980704a2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cb08b8792e23b72a3af06933a30997d51ad1565": "0x00743ba40b0000000000000000000000", - "0x2371e21684d2fae99bcb4d579242f74ad47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e5b7813fe019f6aaf820546035fcbb40b58125f": "0x00823eec0e2501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d5bd8a5efaa38c2c9f3ffcc73006b8ff19192e3": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06a27940e88886fb198b8d92bd517084e259c3811495ceabdfc4ac5dc99c955b": "0x34cc2861eeb213da8bf366becdfb319f16aff12c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339733f00d8b2e67b6239aaf2e152efc9d85ef113583": "0x0044de13149e03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897525af9498280da3fc2f5498c495e89561b8ee79": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b60facbf94a85c68b5455253564a2e60954f70c8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397081754b0a1468f7ee643f1ff9896174ddc6fb4b1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766d3157036246be0bdb9bb8427313949b21a70c6": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b31b43f36acb6f7029f2637c054fab97c080000": "0xcc5d8f3af2e32f1c627f09e1c1d2769249d00c17c12da2fa06ed040beb38b1bd00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397862453aa222291ad19396dc22a94d2688ffc08a3": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8f9101b21f47ceaf22f52b0f4373a0d95ae7af9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0fb96e2ba70b2c330c297339cb535629f887bf0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938f438c88c8c43562c4ceb3c0d7b24e11c03b708": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c35a8e70b0530d2bff51daedbcf752d8dafde91b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df886d671ef48d3ea7427ac5a9a9a3210b090000": "0x2e0b481719c0a64b20d1e541cb40c80c2384fa61c77e56bf4787ab94447cf54b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51228c67364b323839d09a5aea89866e1bba060000": "0xb4f1d6715086ecf1c0f4f46320455faec20ca76cd7dac4151427b212c502196400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900878eea2b606244d21b41565ebdc18bc324d38e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970607df4570ebc920deb346220ffb52a0bf1fdcde": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928918e653d8262814fb82b703cf058c97e7b2020c38": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fcec00a57e3900cd43cc6f187ad3deaaa27ff56": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289035e77f52292994008eeac5689f59457998f4f05": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da0e34cfc36d47a3e0c08d8fdb0ede1408c7aa3d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700360b1b494ea0f8e156f9f003732727e94e6986": "0x00a83f001d8002000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5101b0c2bf5b42b400be5bab5e1544ed2f20080000": "0xc4b2c91d9d4fc939948ca13e03fc91b01b6c9c286ebdeb4c6f9843156166aa1900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513a233dd5caa7af24cb99415b9fd8ebb920040000": "0xb64c29324eb942fab6b41cc041f0e099f35d5c7fec824bae17717c5fa68cb83e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778fa87ec68adec6d13477e797f062562cbcdfb4b": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51862984261aecabc9ca4e1b3b3f94afe62e010000": "0x767c06d934298a9bf8f317aeaf2fd3a6481fb052acad0b9ca6d8dd5dcc103d0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000ea5d2483ef8ee35807c829bdb6addc0f8b76c": "0x00bc8b6ec00100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c0864711e2aea8b1327f958e73d8c4de709a31b05a72defd997e5538c545651": "0x2f41a6aa9773d67c3d31aab2ce54b27f6945b049", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a63a3a0fa11052369722629a9ac94a23a8960d": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3041ce2ef4e9ddad0ee763522a641b03863d5a5": "0x0080f420e6b500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767303886cd4d268eaa3a6cd8de51413da1a72dcf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289511912af85b5b6fa435339879dd81d5140e516c9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b61959b37aadff714af150580559858483459b8e": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d729324ff6798093939a73546e0f3d53a9cd7d4e938d238145c9422ce9f0beb07": "0x861bdc02d79dd2598d829fcba91e11f1d26b0aa0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397853fa0c1b613b0756d7798756eb87de67a6787a8": "0x00fc6276e83200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e18a7c74b913a4f28da74fe2c194ed4655d63e": "0x0084365685e34e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f1e189ada672a8b8ddf69ce356e287ca318f99": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002954009901528acdcd08e4bc173f271ae4c291": "0x00b638bc35ff0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900db158028c2d7db707c525956aa3fde0409eca0": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289210f50483da86a563e049ccc0e261835a63b98ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955a3df57b7aaec16a162fd5316f35bec082821cf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b752d54f3436601d8ccb4fa02bf2289192e4ab59": "0x0006dbddfd3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750723761bed6eebd4ad8cd418b0b262a66fc0b97": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730b943dd80ec2729942b65aed370835bff04bfec": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5185238813c76906ee6d25ac80d69a22dd94060000": "0x141d0c26801c2dd28a7024e5def054866acaa52b6f3ae9a75bc97cb94635875600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928962a98395a16d0050d55a4c575daf1048bc9cb023": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfe4c9aa892384176066b2776c0507c17cbf5099": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e302eb54d1c41647ee0eecea4d5b7dd90dac8ddd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eef5a1f6ced7e72d0c52f342fa1cb6e8cc5fd9a9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511453df8160276d2b9f81ec3ccd4d5352d2050000": "0xe2e6771397bb71c2008483d31e053f551649d98fd835a540afdf9edf781a322e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515e5f4934fbba1161c414c9e69b62d3dd81020000": "0x9867e6bf67fecdb4e31c565bfd7854ac3604f1718e52cdbc8464a112681ad76500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8a3477a6ca9f9545ded0272a812d70c23b1267c8a7d0a077aef540b1d06087a": "0x128b1dec802ddf81681e3d6f113bd83dd852311e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895623284ba17d06a852e3c74b6b3ef1509a13b65d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca9a6590fa55d82d686597287bef830a7f0e7eae2650c54f94f2d24995253308": "0x52a7310eb44ee058ca1a430356defa045e4153b5", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de021bf4bd6fd2aef6f2ad1e01e89cbd1e86ae489393d90528d634c06a2b4e209": "0xcd9b1a9d7e2c239ccd8fd3f739bf2d3bdb3d6a1d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4c5ba8bcd28ecb0062f3c8ccfc909982c23ac3d0233756fcc5ba5e88e752aa4a": "0x28cd36b7b86b3d6a8d53f0332fc3563489aee858", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c4d701c1bf50a4629243e55b5bfe7d668080000": "0x80d8a3f4317249a895e4b49badcfa7293cfbd215d6e552d1c07024d36acfbd5d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d63e4031c07cf74da563595cf55df4b52063a7ac": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ad57628c1ba701bd2cb2d792b0ceefd88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e3bbc9586ef4c2baa9cc995fc50dfa7118d35dad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff110236b3b40155057b45ae77b99d1b38851b15": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000bee5537a6910f6dcee78c1ea1b7967d4efc2e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22bc7c1d9f897c874dbee193dbef08a2796a31dc46ac7223db1b1bd61d47db28": "0x83d8e1a3d7f05fdc4f4a1a99d5a89bcc62324a04", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76817c2ac6b91279539b83574f5d22009a2bb2f37fad4f0ffc8355e69bc59a6c": "0x3f2986549e4a6d8486b64bee434a3978c3e5a1bc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890024f96565d874463a46684d2f276318793049e5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c589611f018087385cbd3d91b8fedc67f2c9c795": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bfb8779a31e7ad4c1e4f852383bb1c6ad7dcd0": "0x00a29994f40300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005a2a05c903bb1491b9988dbcc67cd15c7f491d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce1cb60d9a8ca55e467f0cd5ac465505d39b1f58": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243151310c5ed21bc68b85c5c754cfcc5a7b1869cac": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515fd0e7751e8a7bdd90dd19a1eb7a47c961080000": "0xd573535a40bb01903e616a383deed22b5e3ff30e552017d2395e3e75a8e7861300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fa8bf8c0bb1b6a89bb9f45a5228aea9d296653": "0x00e0609aaf6f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd164dfeaeafabe0d241e2313b57ea7fd97747d9": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514cbf26731c23d9508699dc374ac4ecac97060000": "0x8621027cf6c97d46500c2978193be29b4fdc1838cf768057440793a5910dbe2000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1b609382d115d355e65a0ea206290fbd6ccde06": "0x0050248021e301000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2436d28eba2d9eb5a342e5fc9a2de9b2070f4a20ecca3dfdcbc83fdb0d199236": "0x00964d7fd8a498f37164ba1c1b5dbb99a3c90125", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e514cf3312db766b10f6ddc624518b8e02618": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28dd13379371ab7ddb0b1efae7ffab1bcaef3b3cce2ad502992952c1b70b9a18": "0x8ba5e63b8242e3720ce62015edbbc4037bc44c60", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ea1f1e791d12fb79e53eddfb13fd9df66627c49d8fdd6773d19ff40ea360f37": "0x9505ea825ca9bc29d21446a6584c6771b21f193c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da87141729cc078f61473a1ad23b5b625b23d88c4329a1d4a7b4e9d22b0e2bb40": "0xb3393e6991ccf120bf7d83e6e53aa6ac8ac5c551", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6bfc7493f9fea17283d9060a6316b02c3e92bc1": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8a300b59d4f4b3bc88e66d4ddc8edb8f0703edf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d97436259f34e11ee1a0be1e59a98a6c4ccdbc": "0x001242a3973e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c344e1c2841eec8b00e18d6d777a01aac0060000": "0xe65a278c02c568b67d0bac04b701deeca427066d27f8ac2237972bb86dfc484000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894fa4a8ce59764fbc5166bfe260c1aa4eaee8023a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c610dd72844e40880581a02fa3d3d881744c37f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b584cf38bfe7d50809bbc2a622c7bd118a82577": "0x00d634d4e71a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724586e1a8a6fbb94ca745b6ceeb98017fc8de873": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515e9f5fedb96c990343988c64134d5ff818060000": "0x4c3412318ed1dabfcdb03d1e7776a9888e9482e7c7154edd44603c439b65fd3d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa407293a2fdaf63407100b29d4c02196810ac847cfbf3d9b472e29abff58728": "0x43140ac2d3c02cba8e461602cc15c3889dd9fa3d", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431df8d1ba25da8a9d6804aed11a7650f89fe91996": "0x00007eb58eb401000000000000000000e86cc20200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c522a2fe6dd800459133be7817b955fae0beb57": "0x00a61c778e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289596c4221758f875f51403416940e0ea1bc1755c8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001d4db20608af2ddf38dae3c22255f5a6509cd9": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e06881f37343120d9e61be3ec5772250d7060000": "0xae43aa58d1bea3f6cfe4741001f77174a074659668bd6a8ad6fffb9c34915a1400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a05b03e8c6bb87fac85e9d3a627f076be05c5e38fbb911f88510ee1e274b700": "0xbebb6f638336fe10517a0b38bd73105f2086690f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009bd3c56ae851e91ac23e8a736a7698de525f1d": "0x00fa901bf31f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972cf6d5701b164808a3f3886ee6258bf3208c3743": "0x0010df60427b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003febedc03910f869564187f04c2ef1ab840fa6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289320a67f5d718c4b541a5ef8194ad4f4638162f6c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a490262c85d993e3318fd0bdf26bf6ff5c470bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890037b4f93292da122cee7227bbe94ebd9f2fe930": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975140e3aa403d274eaa6f6b4af30e2c050c1ec8d4": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518a7719c533e62badeafd17f70115487d25050000": "0x5069765b772020113456bb1fb00f7b2f262b30fb5ac03ba3a803f2250f09725100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c62ad9fe1773e8163ddb765169ac188aea5b8403": "0x00366603bff80c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a3db207ac468ff88714a85028b6fd96cc90363": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c62019e4aab737f1f9cdcdc73c3c55b2a303d5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c83c9437f59ab9d5c0f5e16a12bdb905158912": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c495e48cc5612e90dbfff05b12532a69303bf72": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef039c706c593b89dc9a9113f96430cdb47a592d": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3da1d74e69289876782104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c": "0x680d278213f908658a49a1025a7f466c197e8fb6fabb5e62220a7bd75f860cab6236877b05370265640c133fec07e64d7ca823db1dc56f2d3584b3d7c0f161583cfc25dae5d649a0d4f2775656419f2c9a4318584694bb60c66e8d0c8b96f5029ab54fd64223ac5dd0c547efbf0015944d1bcf8f4ca721716d8922fc940c9a610a7d2ed5da6a62c32ef4477bef2a1ba05c5feea57ebd44516a8257dcf9a3b67b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dc120c0536de04a202721962e9be40432ba642": "0x0094e7521f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282438f656b95dd71863355bd5aefb313a06590eb921a": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d068f8efb41894171c5344bc16f74eb1dd05fad93647955140e0f7d7711d1d82c": "0xbb5d0f2f6b345f9c6afc5bcb3dab5ac11385e512", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a728387999628bc1f493e98cf1beb9c604315e27": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e1ce5cbd307c6242a9d224693a4dde031d519": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51acb0af5ad710382febb3fff232e2b2bb72020000": "0xb6caa98b3af02040bc59ac2086370f722bb98f22031f65f56fa9a5d2fbf8d84900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397699fcd9fc201726b30d6f6dd8b3307334f1b89be": "0x00a0d6432c8f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d97e73afd7e39b59832ce426537ce534bb5a34a9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753359144f93b2a061fce84895acefab5b537a055": "0x008642033a1d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da69382e0d2fc2b3044c30b46be39ce071c773b9333d56631783a535be929494d": "0x100dbb75eab5d98ad65ef16483aaa68e68aafbc5", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195095e8fff66ed5030b696d6f6e806a103df5c5131813fa77ba4f8be88b2d2b4a47323d2011c9d987615f067e9e78": "0x3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3aa9d6f420f82d9f11560aae9fd19c539b967c35179f40613786f1046228d968": "0xe59d5f000bd5e17b3d5f9a87bcf85d1940f2aa8e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c693771e3caa38974d719d5ba8b65654e916c": "0x004cc1a554a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007b6e06cb7b7a104d3ea36f466bc14ed99eb513": "0x00645dd8e71400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51308b666c4f525d7724bb508d74c3ef854f080000": "0x9792a2ef4c3e368f3e570caa0f090fe31d6a3cd2f9d0b2ec270067e123db105e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eb3893593421571007c99eecf18314b37d2319": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e5df47c25340b48d443389c64abf88909ded6b6dd62c01548840970cc4f14a5": "0xfcae7970392f510a985a7eaccd3820b7759d65d9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa4c31db8fcf894fcc3499b2ebcf3e4eeb8842": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397177a47426d4c1a6a65276505167c36b663db2575": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751e6d5501ea26f012b2d37fbc4933bcebcc28244": "0x00e681c6a52b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6aea039650e63303c3c78f7b1bdd0be8cc2ac20511c074822ff5dc02bedbc02e": "0x7a47861cd4c65225b1e00284090503ce41023acf", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d324ec702cbef49677b575d5f1d84768fa445f2e273530172952030521917985f": "0xf21a0e51dbf4a93d9ff5bdd23d6c01775f1d708c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8edf00ce75a71ce5cf3a1aebd19a0ea171c5524bbfb858eda9fd5ee6be34879": "0x0090087b636ef3f95b14a4dd93d28fb2b1747fea", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b5f703d39c4328cb7e87a6d73818c9dc2e4dc6f": "0x00c014c51dba01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8f150feb4983f36ab7bf83f0829c94a00471c1e": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d2305280d7e05b1c3c5213fe4f626c9b5557af2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e6365a5dad54ec79a5411b6a8100d6b25f155b8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51842dff5eebb05d057ab147d3c4b2045268060000": "0xca00f0f34006135ea399fd9f872a904fa4d1f2d76c9c4b681337fc5e2fc1ce2a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981ed4c64b1809a7e859cc746ba10f8e777358941": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289123685f3b3c7550254f187ca3746db61e6a248fd": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893d5b125732ab8687d607772cae3a63dc5784ce87": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896abe176c495486e953392e1203c4f675aa7bcce0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f48b621ec245ae6a2f1743302e9a0d2a5b3e1228": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae0942112b3e1d36089fc756b8a71cd765ed18eb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da686df428ce6fef4c9888ec3b9934c66ab1a0c1b475c22d5ef0fda78a1f9cd4c": "0x3637f645f8bdb74e1cd1b28b5afc64c4a29c1f1b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d470122b2f8c87b9303d36a4d1a0c089234fa31": "0x0032efcc580900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300b07cf336066916f70b0b5c90468feb73790e1e": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c70ad716691ecf66e0665397fa4a7ed8f5979b77": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062b58537fc07796be0571257f39a591efe3cb1": "0x00d89163946902000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14d13395a032cb5e4aba7116449d03472be74a0a8ba9a6a97723ea6bede6727b": "0x007af51d441a632cbf0b4ec175e61332f28583eb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a9ae1e0730536617c67ca727de00d4d197eb6afa03ac0b4ecaa097eb87813d6": "0xc4895ea497de505d9c6e2adcc2e036d1d567d088", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e570c0980bce80fe9be2a231dade76b1276301e4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513549c882de0e23715cbf7b0793715ca2fc040000": "0x04f884dfd110962de6f4cd9068ef5bccd48a62ea21506d69aacf8e97ff644a5c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975998492a4881a733e4beefb71b2022b3eab9bb6e": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5155adb5c621a2e867a0a62eef3b32f3d027090000": "0xec082e185832750e0fd4ed4c5011b37db13eafbae70ce18f0bb093efe8ca712500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc934099b134c32666f4cd05609766f1def7e5bbefde6edf66c9aec477e65e1f": "0xe1cab702cdcb0a445bc6b19ced6efe6d911adfac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700000a9c44f24e314127af63ae55b864a28d7aee": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9051936ee4376c9062485bf5d47e3755d24f3baf00d120b4162abe72296f584a": "0x1c6f3bf84417dd2c0b9c2d148b3cd0639c5b9387", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d52edbffac1aea8f0bdcd78ca849abfc51a03d28": "0x006c6c3e88a001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f61b2a45875ef1019da9bd2353572f00935d163b": "0x00e6ea478ab597000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5d33619ffdf46315cd16bd053a03d2873bc37": "0x00bc7c65071400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dbc95b59e3e29bb391db5de0b7de37a31a080000": "0x6c6cae8ad5e77ec2b3c9df3df6c139a3e824193b1c9f0ba69cc6e4c01e867a6100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5463e2740bf82a52ebc0b310c575854d592940c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890065939d87e6f958a20873ba9ebe06bf120a2d33": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d982aa00fdf3835f109ab98a569a0476af2e87c92bbf3cb6c399254fd9b31c900": "0x6f11a5b9d492c53674ebf1694954f19bab83a7c8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d4502a61e5f5e02b811cae81ba9768c136fa101": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a752166d908f57d724163a24c4ca1fa4ad17d7e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890041a3cf4d4230d2ac84ad786f5675c9c06779a6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b5eba1c7420ab3513ca76e1358b1a7c9038d1fe1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771fd1c6b80977e2763c24ce6b4dc6b863b2a5c97": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928988884e35d7006ae84efef09ee6bc6a43dd8e2bb8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc86f44b16c4ecce7679486cf4006ae586bca879": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c94b11f460481f86363563e7eeb447225fdb61e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d6ca1b1688484531b74a6b61ed3f1c7b57060000": "0x1a8ff8f05a8d95a40db07204752c60359d031ad01e2618e2a5a33b63823d2b1f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515fa337157cc1302d53ba2b5cfe1ed41d79060000": "0xac1cb3bb7dbca1415903b9e193880f791cfedd7cba5a2318ea00e2ce946c605f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e7b9a7b203678bd95a2c7c44630e7d56efa2d4": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928973648bc5effaacbb36d73486e7a3cf424fe0d928": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e0e7a5ca7fd2b638cb8e544d9188dfc38385db3": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fc9f2eeac9e40c581c898481ba696b0e6300bd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d36a5433f5116598c58ce3400f6a2a23f6104fc92b5c30e4610d86110a1ded039": "0x3a9b0cdab618a437cfbb3aff8fc8b22ea5188d70", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ec93f2b709623605acf6120849e088dbe0fc37a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae070273b639a73c42e1878849ed52f6d9e0cc6d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd657f17319e754644e239fae0cdf743468637219cfd0e3847bb0ab9679805234": "0x43bf5419c4eb65b6f8cd55489338ded388c71b62", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cd52a72f9655ced5ed66134b11deefa841a28d": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397017a5d5fcc1bf0ff50080df6b62f484e96c5831d": "0x00540ec8632600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d89f1ee9d2235ca7a55e837d340d083ee2020000": "0x22ace5447bc2071e2b0712f2a8dd927634840fff178eec30ef93bf15055a462c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51553e73323f6d3baf32973ed04017931c08060000": "0x8ea9b58a1411d609b8768bb31439964f8493cee32508c9a4b07088dadc43b32200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700368e2ec353e7dc90153075954cd3dca551f35f": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c61840fbe306c4e984a41128a5a5a492f5491ddc": "0x00cee28ed4df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c963b8f2ca98eab214ba907e8b1fefc8f291fb09": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e787eb81b0267dafdb6083fc33f318ad0bc945a4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bec2507ef7762118315313ca50bc41b3ef070000": "0x5efbdf49bf5a39cd986dc91cc98bf5639e55c2031c9e00229d366e5b7efadd0600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f52eea67eac5e43ae5562e4daaedc440d51378": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04901365ee56151d864164012b6e08c412f3bff9ba22fcef3dada1e49efc2a0c": "0xa145addb0a24f0c4697189a02eadb006be244d49", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51edac9a28c16dbd052b4bd8e241171eabe2080000": "0x90015ffd36994c8dbf954609926bbf6fa9833924e190acd6a4b248e5aed1cd4600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f1a0adc19a2cb4f04bef8a27e35039d0d90746": "0x00c040b571e803000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ca260bfbe4c116f9f13d007d83c27f8e7bbc675": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005dd929c6d703a12daee88fc368b849b0505c27": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900edf9881b2295cd5f87e43d57ac2707bef7f2c0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f569ab0d06bd42de35282c5cbd70552bdd080000": "0x7073fdfd03fb9aa8f6153812c21f0a9eb2a14862c76bc8f17fe026c64e3f736900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ea4d2572a2015e589d4412f4894da6fb4bea3": "0x00769f7b7f5300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ceecb4499df8705ddda042379018d63e70060000": "0xd6c29a7c39cee45b0e045a94081bc188ef73be2be086d66aefd850fc7eeacc4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243058457cb480231445486c786db63ead914b9e1d3": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087e6f26b4df85ddd9b9b60910c593fe401025e": "0x00ca80c3ea9200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5129401d703252a0ce211448cc7a391f51fe080000": "0x7e88787d9eb21f9643369b4357b4a5e61865cc7caa976ae37b2192fc6721863400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cd67b58f233cbc39fbb07ba036e219512c070000": "0x46a4232f9aa69c5313bb2909632365ffef0d59eaa0031dbeb68f903b164b071400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002475878828a236151128f5af451fc3c1ad194c": "0x00aa5106df0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a91beae0866ae95a1e006e7d6d2366a0a839f4": "0x008ae174b20300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dea07a98574e30bd9c10dcef40d228a0526d6e": "0x0098e2471c0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773213bdb86a2636440bba625ce5b570461ea79b2": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243fa5b8e7942818890da1ab0b8ea9f79c6e912a758": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977abd31d835a1a6ae9d8912936e8b68f7fc89ee0a": "0x00e415ad7e2500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c301610a4ec130d407fdf49bc4cc94f89b316d17": "0x00a0a4c029bf02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900600ea2eca09b387d5be17a4a7df47d956e1ec4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003087fb385b37b81d76ace33b535fbe1568d19a": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7eac235c1800f3301e452f50a8df7a6f82f6192": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700606ba24a1649ee35a5c37671941444ab6d2b8a": "0x006cfecffd2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4639a86127f62435576d4ea0665cc07584551dc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fdab58a430124be19791e0daa62257ae33060000": "0xdc233e94075cb10f5f5e60e39cf7379b2fc23ee8c1b64ac7918dbd3660a1f64e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f20bd8e796b2f22770413390eb1a845ccd060000": "0xba1fc21a2eeccf7b3437dcb9d4333c6da2283d46d5d76766e1b232a77023056600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003e07c10cd803f10f33b0a1c470a8e3f7e326f4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2459105748cd16d4f93c3166c7e4118d762ebccd0cb41c924236a94a3bfbf042": "0x0138bd5b9fe5ee16cc0e0b0d63adc94a6ad7b21a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e04a97005acf858ce1f991e18fd742c98422d5b1": "0x00a2ed9f605600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950633256a5f5a0a59ebb7c37a29efb44f0c21e8c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f0549f359ac15f6afa11cf6b0d78c22242802a2": "0x00f022a88c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e59d5f000bd5e17b3d5f9a87bcf85d1940f2aa8e": "0x0050bd21761103000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ec4678578f549f7cd3091645877cce5f52070000": "0xea4ca720a5284bec0611c7d63e78cf1d5fa8a64d0c3bfa17354fb2a4cfe4514400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979505ea825ca9bc29d21446a6584c6771b21f193c": "0x00b0631b220301000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e34157f21cad220e1816172cae97c65b9c060000": "0xe467841a086f53e1b6dd67a93cc116d062ba000f884f2e49546a7e8f5552412e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003040fdf21fcd3084fd4076962bc4c7e66395d9": "0x005c3f8afc1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc9de83f11941407e4c81debc7a2023a27e118bc": "0x00223675df1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d041fc41dbb6b131df000bac16c94ee5601d9620957db7c59068dba04e3ac0625": "0xa9807e6a10518c24038521c00541af1e0e32a052", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d69358163f5146f04918a092ec4f527cf6f252": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfe344098825e1ac854d356926e44f303b7d08f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d4b3731451de43ad92166a9866cb90795b6c85be": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007b6e06cb7b7a104d3ea36f466bc14ed99eb513": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd9c6de73ea0b65c5aba8bbd3a3a9a212be3b93c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289456ec4d3265a0e2c8566728f819737a8c4a9872e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729bff29d8193e551e089b3aad1e3937882fd9d3d": "0x00ea352f5f1000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fb5fc1c7b6b158856f174b40cbeb2d7844080000": "0x17756d5e1ec2bf3d045828d7dfe00edb4c24acd899a5f1e251a86d39c156a20400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928020c484d59bc36b2741d5aa1e1d48e6e3ab0e8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b11f86a69ed65e8e2266d936c55dc66f43da055": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000fa37652ab02d5da570506aa4f0625102f91e8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d29fb1d3724764405fdea290aaba4637eb2a6d72": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eeba76f589cb390ceaee0f15302f5cd567a05b44": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a56dc6e96af40fefe5799aed949f2c53c7fe497f8d830320656dd6709fbde5b": "0x39634580a5670327b6f4f925dd85f2bcc2c44c6d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c08a9da0ab9bb63faca19694e66c95fce5dfcabc": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac3947b090a8daa38eec83cd7bbc5dd49c0e5071": "0x002e01f9b32d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae87a7e9532cc4d0a680c86a5fe43fd815040000": "0x9c14dbe4982ae73a084bafe1f7eea2d51f3819088f08a10eb2fd7a1343c5140b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51281ace2045d9969075a57078fd8a72f55d080000": "0xe8af9d2a328449e3a5ca67a98189d488ad8311b2bbd0fc2b9d02d2ca9dbffd4100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007e1b953932516a6560c9161409b4fa15595bd3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397855f896fe935353955324fb1609165ec9372d473": "0x009e095b9d6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ee9f66b501f25d1a28c7de9aa2e2717dfdddd281cb0971f5e42a8657c05aa53": "0x94b05d7a1cfc33b148caedb2b979d603a6532bcd", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9d07a44db8209b9a6988a41ef4b352d5f010000": "0x0c5ca519856ed9f4245a8613db481fab23c68914960802465e2f2c6f67f40f7900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b65e84c0f199c20f12318567a72d255148080000": "0xbac8d55b78ea5cf2f5a7e57a51eee3f0074cb71c80bc23dcd2d0bd16620a6f0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e7551eed3542006fb6ce1487e3330f44f6db0f": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d09cdcfe42bb7443b5f0d32c6e770f32b18b7ff9838f7015eb6083b5fdeb5cfdb": "0xdaefe0f07df89bd8236d1007e80f1914e2b85853", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707b10fb900a97ec4a265c6ef64d47db52b9702d0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80d8a3f4317249a895e4b49badcfa7293cfbd215d6e552d1c07024d36acfbd5d": "0x6f5133638ea25da451abbc648fb87b28d0318aef", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913d8779df2c88e622175dc24f8bd2b53c562e631": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960984850ffe55a4c330723b7b439f70e6184bcc3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4cb2595186d9876177cfd60bfddb0dbf4dc11bd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bcae7a7bee3a07c59a217cddc891d947965ec00": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a46f196fd6ae9d508b04218c4210a55b6ddce13348b82a5c5f2e8960601aa74": "0xe7848bedb58a722316a55a845fea16b34cea5e5b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712d86da4cf1d9846b7118006e6948b51c75c6cb3": "0x0090c5a0b46715000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c68bb853570f4d75a02e7f7c1a7bc179e62e830d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d957478b19d8fffb6c622003e411a99f96c42301": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b5f9fcb87be67582f5f7a24b96b74a411080000": "0xae3fa55a10ce27c1f669636f4c9c9a6e3e665806743ae2ea04129f24e6f7a85000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516640badb32e582b2257ef8a033974065e0010000": "0x46ae3dd83d4737906858d8cdaebea882b9bc8581f6716140e1e9cc1516ea016100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20b9c82a5cc380317eca92f17436eecbc8fe948913a035db183c30dff468798d": "0x40f8fc59e380b53808df1bd1c4e0e2674186dfab", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46b90d1f06bebf05dd594186ed002b546f85a4e612d060ce43fd0581197fa143": "0x8bf3edf0ef51f211bc580ad6068b21f83d163ab1", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4e8b242422577c9f7a6ed78ebb9408e38e03d7c9096a338ef4081241c29d8907": "0xc301610a4ec130d407fdf49bc4cc94f89b316d17", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784256d81c1a191e6952c781f6a204626c6912b83": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007050147f1b0875723fcb4ffce39451ed3fbb4d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931b68bed40ea6d8608779acf8c61a453e264e253": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289693e1450bee60182d0f34256ac03c94de1cf781b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397390bd123181387d8427df74476627411146a0862": "0x00b28ec5f5a701000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515df0e9ef7242e4a438571887649293eeb2050000": "0x90bb7e90c2ad7c2a11f03c5237c6bdc77720cd5ebc3257f138e94b004fcd1d4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751a8e0efe83ffa0ecb7f175fc41e38563886939e": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e724fce558be730b5ebf7f1d4da69b8d72daf": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2096e3dc4c8173bb1064f33b005844a22513d03": "0x009cdcc16b3b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103fd91a59acd909636547dabc976284136090000": "0xd68b9347a3c6c5a16919f86d7d7e822f0b7d797361fcfc03338f5c18b6c7cf2300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51776a46c6dee791b1bc9f7539733ff667b3010000": "0xd8ee28573fc3a94c320b07a44cb8360d2f3497a82df0904fbe8209abe49a780900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a4390841918eb8b1ca88e377ada4da46f8f83e8": "0x000014bbf08ac6020000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b3aeabe65664ab160d8ddef2d0a74f24faf321c7": "0x0080dd62b221020000000000000000002208730300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972969dcc4bbf824145328bca8860135f4cd9ce9a9": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7687a5a3e7b49522705833bf7d5baf18aabdd2d": "0x00b05b4c364400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c7e8ac122deb2f7dac7456f73cb4aadd9d479862": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48d307a492109a221d7237b1b3ab2026ab23810b16f8cab2c750aa9181984a78": "0x731396ed98bbc215c9078bbc583034ac85a4995d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d067ee646a21d8904fe24a5d1047cce91b34bdc9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890065ecf82bd0cf4b0645fbdd271c790298a364ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bd5f99e04c74736c9af2996d0b15c3f8165207": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799dfbf9a028384c05ea011e6279a4c1d18c782be": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd47637eb6578f4f2017e7dafba599a2829b73980e13e3e5f17b3a2081b9abf07": "0x35c9070e864636da7462d5a6a59f81f7645e72e2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5195ed745dbbf834d4f5a74930d543dcefb7080000": "0x84f70fa89ae1707982e11b6ea49d1ea0f4242f82b963281c7292683d780ad50d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fecd5df71e03db79046adc4e474d3d0e4871e2f3": "0x0072e25c62af00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a32ad2c6d4d5ce0b978e4e0e955e02abbb70ca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc1d8a37770d2a67c13255e89b3a235a57a3d1aa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002dbe8e8627105c4255ccf96f8e81ed4915f277": "0x00c684979f0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008481aa634a6d406c0ab9ba67ab019f68ec7d45": "0x0010ea0504bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896e565ecb628a3fe2b055f178840bdd340ba5d7e3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee213d531429838906fcd09e48b7a488bcc501f4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928990a990f3e8856f6264326b2053a0ecadbfa34720": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c69f44ccd469078bb71e7a704c162029e45c0c9d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f2675d66af40e1475921afe999fbfd0dbe000000": "0xd439e90cb7b87858601acec7aaf207b47e406c9779b3cf0d4dc03466870d7c0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a4c0dbeb509712262d38d375d758f5709932676b5eacee8a63df2f47bd2f42a": "0xdcf5ac110bfb16933b6f50b5e5f8e38c98d39481", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008dd1b21dad14a42715a406f36abc940ebf0287": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900850453ab4667fbce4688912e43f1ded185f847": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51071cfb79ca83b8b4a07d2ead3ba71079be050000": "0xe04ccd02a8675ac3bd0af1ed88f893c33cdd541cf71562b00a8bec1db6d17d4400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720a77f06ce8ad15268b50577aec5dd0af28c5c84": "0x007649524d2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98a1d22e4fb59772d3e41ca11f72f00f4fd330c2d9c6c37c05e8404fe10cf725": "0x2a61258bf9cb93b77da65701e212c4f1653abf9c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890052a07979799d203c54b44b3544a2e1bd30cc9a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51689e5bf77dbf3598eced4d4e33f3e8dc40080000": "0x5fd1573c5cc41093c6d0944a40325e971771b9132ef47655b4c23bcf988cce0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d18bf39c2dac34143e07106240352c660e6cf571c4629a77a7751cdc20371e161": "0xc65b45c6c2b417a7bfe7a1f164ef12b53749fb5b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a009890abc59e1a2fe19b17d72028fc7049052704ad807f463ad1a7a95cba0b": "0xb6f20d6fa4c28a6ae5a4372d4798f2f759c25ba7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899edc6ba142d75e9662cdbdd2224773be20db4260": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972cb9aa7eb7da683a1feb615e780bfd52306aabe5": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52559f2c7324385aade778eca4d7837c7492d92ee79b66d6b416373066869d2e": "0x0077f609a73630a90fdd05e6edb7ab0c99bf71f8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96eae07e988c50ffc04e445a287e64b4c0ecd35859d8255ac438438f7af68021": "0x819669704eab9a1a1086840eab684846647b969b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4f934bf2530bc28447f594ff4f05818afec1e8d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f64f98b115b42ccd8f6dcbace3c5d6bcf8030000": "0x566e7d7d28c4566bf9c64bfc61e0bd122dcea4315c30a4db862e96634092446d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fc6a2b131fb10fd547d90100629791d67619156": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ab791e5fc047dbb25dac95d3a01f162738ffdd2": "0x00a61c778e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1803002442406c0d57f20520b633b631ad3193b654564ef92577569747f9f109": "0xd98fa099942b9179688793b146505935d64def65", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005032c359b798eb433f50af95dcd79ab333dc2a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289824432f160f254ca59fafad843a74ecb32d3a4fd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d823ab8fb16d1f8dee7f90459777ec16efa1a35a6626e965a80f4135c4a6ef335": "0x442bb3cc2095dfa3447c774c3ecaa91805c4a94f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746e4cf75e7a515935482c3f1b557efe92893d483": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972702f707de88382ba6cf64a6341d089514341a5b": "0x00b65f759d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a752faa9889de57975049d585fa87377c7bf0894": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a440bdbe81c1cb6e7ee0432788c3bbd5a769542": "0x00e099efba0c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002611243b23dc29e9ed64f28df2c344055cf3dd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729feaa65869e737ad53bfc2325bd8ffed8d27a07": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289701ce59b203d5368c7ac68f6f57a5f23552d6458": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b943e534ccb68a976bfa9007ad6705c76da81ec6": "0x002acfc5745300000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da97220630bb99fbae69a2ff81890fe2b4382104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784668bac6daf894a1e4203bd93863a7c7dbf87e0": "0x00f2dbcfb47a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de073fab94e8c03caeb0da108520998cfe419f269d4b7ae006faf2a55991dd818": "0x00ab6a08ca44645fca5b8a50ddfb04a8f9477923", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea153d7dcbb78aa15a80f015aa4b433228836d77": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893fe5d6a2d1caba760006007687adca8661a252f4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04bbc70b5c1467975bc6ab17d413ed85adc3ad473e3ea52b0f87abc2eab05571": "0x007fd348bf472eaaf68e58f652c082b86813bdca", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d2c6e327a6f3088c31e64ee915f6821f7d080000": "0xa0dbf685db6681f3d704f4a2c6890f965d5cf1f2d7fa169a6fb5c25f8a4265bf00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a34456aec68d1fc7036ef0616ffcd7514d63cd1d9433c0f55b372dd469c8811": "0x70c853a88dcfdf9996e60d3d33f3002ceddf46ca", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001971fb3e5be59084ff323d05976eadde3a8852": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a4c2cb3ef01a02eeb516c1adb1325e3bfde619": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52b0605b1fe9bf82a21c3231b611f23945734683851d49e29cbb51f4acdf041e": "0x009181f75cd5f86b015f28e0b1919f5fbb3a3eb6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780a8bca8a6bfe60479f523c10c459ff6384760c2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978610e7e131ecc29b1edc1eef2f7fd6df2b6400f9": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b61eb7bad145d2c220180375b327c7cbe0ae9a21": "0x007cfd09a50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bd16c10081589deaeb5cdce5963fabbbd350616": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289341e46b97431121edb45c7397534704946e1090f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397465fcb930bde0872602382aef73fc393a31d8122": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720a372f22493279f89526a1f5d525d6c6b4abeea": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a08ec412ead6bbc45a465aff936e772ad133569": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8405d696b6b0800c3732f87b3e817969896dcaeaeb0af813c27dc797501c245a": "0x8ee43bc46973fb91459bbeea3c7f637c6efef128", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f2c671d4cbb4fc23efccecf72c6b995a67fac341": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fb5f94631aa89da40556a8d8d7308c7a74030000": "0x24b52b51914d952bf86bdfa37e11c66a382cf39cd0380901deb6b445b957cd7d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003813a962efb1a03191600aa682d38b08d953cf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970011e93c401330194e47c9ba85368c0205eee60c": "0x00da25696b3a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514dac39a2ccc1be3055071718779819d48c040000": "0xb2751ab0acae482c9785925ea091b999ecb9cf62c8cd2b1a8ad582a90a52b31700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f99801215cd0fefec3a861574c8a8f3b1080000": "0x48610dd34137fc88e4826aa1a964b4a8f532453005ecfd4ec2fe9fa14e88211700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5174977e570b357efab244d89e62bcf63906040000": "0x7a4cd6e585400fb82dcf09388a3b6eeb62d4803f027e7fff775038ec0898795300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0605f038b446e037786a3bbbbb0e1c78c2472c4910ae6f97902985f3b72e114f": "0x8e6d7485cbe990acc1ad0ee9e8ccf39c0c93440e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900541ab0a813fda7012babe7b3378441432f48e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900638fb5bd1fa89cd2c29c98e6196620d749810c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ae46dc2234842d01e72c6d688bc2e1c4b18a004": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892489c8d02c79287a37e21809eb3f5eb4cd25d347": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949a1c510c50555b7be6e68e064067038e5499748": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899edf2a093bd2c6d0a7d44368480ce8fc34bcdd80": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c019777dfda36dd460e7322fe6e1f5c94972517": "0x00e69d55840b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824348e17a5cea6d3fb095b75fd94f36f6a902dd6702": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24b52b51914d952bf86bdfa37e11c66a382cf39cd0380901deb6b445b957cd7d": "0x00a4c2cb3ef01a02eeb516c1adb1325e3bfde619", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e007cb54f4faae216bee9bbe78fc93ebc83017932c2fbfa14e73de785d9ae7e": "0x2ecb3d65993040d26944b347119eefa31f7bf3b4", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ec88e08447dcecc239ceda23bd35e22f6b070000": "0x941030b8cae55fe5459f75470417cce9030d285e1683f98324a7dd81ae1b6c0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac15089b8aec4ee664da691ca3e7e29bbdf1b7": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ba2b48d35573cd15a89057fc6aa79f58945c36": "0x00b428577eaf07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976556deebc10e49b32cad8ed7f3604827f9672e0d": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4468c8fd916e17f85b6e76e320e631712eb8312": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970019eb2b083a143b40e6bcd7a0d4508467100f22": "0x00786de3c11c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b999004b49c6b907d4278067da5c85195dcd7fc7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e064b904dfb30bdd37886efb20bb328a6b5b4a6c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773361bd483cc76d6d0681065e6ddb25e84ca96df": "0x009017ab5d6b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eec5230343cb5336cd6e3a8cb29e5e267d6d5b21": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae449c74fbd4b173c01dcf0de0add765a844dc463ae5f0d2b03b2762a3ed2165": "0x945df54583eb102061f57d3b4f3e499d7acc49b7", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28996c52694155d7ec9082650fbf108f69da60c44a4b2565fce4e03f9bbb0178": "0xfcd52c547ebcb0b817752c5b62d132b96b797250", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4bf46544793204b9ab9b0d276c7416b86378115": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b0e85ebdb55e25262849ba46b0a3e31c928944d": "0x00dee251231a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fa6ab66fa1e479c1873ce0c8ea5c1261d778e6": "0x00", - "0x3fba98689ebed1138735e0e7a5a790ab0b76934f4cc08dee01012d059e1b83ee": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc73c898b502cfba8144fd3a1a33757ab84440ac": "0x00742024100f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008d4e47715eb112c1ffba14275bfad41150a735": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f149bc61ff4343e1c1c87f8d4d00b46725080000": "0x041fc41dbb6b131df000bac16c94ee5601d9620957db7c59068dba04e3ac062500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9f94b0f5bed56d03c2a3741eef545edb7c27ddc": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ce8a5f25554d7c733169f3b682eb3458b67472f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e8b7a80b5e743654945bd74ad666fbb76f5bd7e468643470bf889ee9de3a326": "0xf8f3088978f60f5a6c1992b1b3ada0f228cf47ac", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ffcf1f0f84cfc6fd881348ac8e74ec5856beefe": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efddc6a78911e0d1964ed041a8d81de69cdc8ca4": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca51a1ec0e15c10c0bf0e44a957964485d66ddb7009419186136d1cdd60f9a33": "0x0569baf12b57be4808c0539b9eb6b34b0fca7466", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fbcd1a1318617d6df1d267e92dc329c6dda05d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4c4dc1fb222bae0e04fd8cd23f78b37bb39c17d": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a9924ef83a357ec4c978a66ddddfe9cd325b0bd": "0x005880abe94f01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514f6e25f08171ae8269a0e4f1e46c767950040000": "0x76729e17ad31469debcb60f3ce3622f79143e442e77b58d6e2195d9ea998680d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009dbf13548b5351c0646b52b1f81d913d0fd4ae": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a53e3fea0109124613c5ba34c1bb2a9dbec3d7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c794e65e0fc0135082244e2105900e3177cfc5": "0x00fa5354f60200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48454b0387f763dcf46291236ddfe846ef6466aba368f75aec3bb84b65b39f66": "0xb8630c7dbf3b9ec8021876f9f1fab265df12368e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397415ad707749eec89443896f6e55843a208e671e9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978963d38fea40b7cb37c9bb2c4d3252415f0b6d65": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289557e9b0f30b4e4d1738c4288d7a69ed8e79a7036": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899bbb49b1ffed08d3f79a352f1a0f149d88722fd2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd26931ae163fd44192217c67bbf944eccf68df012a0e6b24b042d9604c70956c": "0x6fbb52a0c06818f7022fcabb7b815f86cfc1eeda", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700735384d4b8bc62916ff05a16679d41c9850fb1": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2c52e1aeb3340a166c483297a70f1ec3d0cd160": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e95141639b4ac81e74704c7fb969ed396d50f67d": "0x00900126fb4700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516ce22064540cd8398db142e2e734880707080000": "0xb854d52707f6ed71c182597e415b55532a3a49bc0a20075f1a8f693b25e6976100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950dbae8912187371548f53f74fbd269f86fa44ec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700171d810de904efc8b649c8224652ef9b75e53c": "0x008e46e00c1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e187973a417e345f5c4f5dfb690b3d01001e43": "0x0078ca2c506300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289abf9eedde255d9fb1047d2f63970faf7637ce68d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b41a84ae7ae518633f1eea1d4f4d13c4cf8dd6a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d908f80aba091f8eb3135e7876d51b5b1a7bb188": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e902b00370977bf81f4f2eef795133a1711ce38c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b74cdac11f1d6845bf60e28d787eb4413f804f31": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cfe809074cb2f767285e8f0bc8e2604116c7bdc9": "0x000c439bb19703000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928989379ecb3d84d69e1b18075d89e864bea36c9b10": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516ba58d3c6a91fd481b9416ee20f46e44f0070000": "0xde91f855c77aeb4b742c66cbf0f4f852809d98804518f4b3e00ed60437f0f61800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d396f87af37acca0980aeb814375eb46880d37bc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51866c528ba8d7392188fe37866e3b24bba8080000": "0x4479a684448e202bae5f8fcc4f2a898757ab8ea3b891baa6132b37ca3cfee13900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758245d4b05fab653dbe189c35a98c9e4d84d67b1": "0x009e0aa0e51700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d480e00bf0602f92b26802a794b8d837677d77a4abcfeacd6d5b9f97c4f26df5e": "0x006704be2884970368def1738cc901f92025c04a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfcf0b6ccf1cfb1e77c2b259c08b1510dd978fea": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5180f379430e270e60f4842296bf5d78343a080000": "0x24cb880e0d4f3181a2f4faf3df0dae7e138c3f2ef4a4d2c65e5030b41410733c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979661231272cfd204a6bc7aca349e597d0c034701": "0x00e849c81e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecdfb30ff7141766182ca031e20777c0bca09306": "0x005847f80d0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0dc528b979898218393f18a4568c69476640918": "0x00da79080d0401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890096746df961fdae3247ffa893802d1cdbe60e86": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898961f4e5650444509af31c4a7cf2a0924f224b04": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a951a1bcbbd1bee2cc35cfd96dcf9d101e630c40": "0x00cc7a7a8f884e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824393011e03417d775496e3e81c5ba87cd973538dab": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758ccfa1c26b8a49b83ffc4bd2804fdc5191bc28a": "0x009859449f5200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc674a3c614e1c49a0389b3797ca27f30a5dc78d": "0x004ef86f970700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d4f741b495b845b4e4ec9bb7851f71c854d4a9": "0x00461784db1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924dc293f38625991044c976a3c99c358563f82d1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899028b660bd9fb93c44efafa5472407f82108e5bd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bccda47579963d17ba3becdad1512e02aa9fb80d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970063a1ad9b3ad315d4a0bb590435d34d4593845e": "0x009294f9fd1201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708c204dc28bcd0c991b903bfed4eb5309d1053ee": "0x00205a4ea6ea00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243537b2feb029a7073da038c2b9bd34c1c6109a0a0": "0x00c03c208f510700000000000000000010bed70b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d028942b7e78c61e78086e9076430bd3c69cf08736f3e463d0419f0f12751f635": "0xfea35be9327aca7beffc93d2b0cfea5d291f7d13", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac8938e1faed5af69a6516f48b450c82dafa61": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c638efea44e5b7898f33a7ac1773f4b7deb3631": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a8043a578111b05d48162eab62fcdd9adce5185": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c89b9819ae522824ade6efe464d30f8e431cf904": "0x0080e03779c311000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a36947e2a739ac119a83602d101a0ea24df365aacfd1a91c166d8734f96491e": "0x9b8a4884a5afc6cbf0dacd720fd6468b41b6d437", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970028a86e047f2fe0834d472d87728dfb50774251": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731b81404b826658f107997f2a9cf96e6fae6915d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a6f5ad410b4659a89bb23a5bdc841fc55f56567": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5bd25b8ca7659835bc91ed7562812eff9352dcc": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe9618d4aa657facfcb1c1cc989bd42afb1b4cee7733e308bfb340b78cb1c144": "0x00b67b5d99f7bd244fae58ebf86d35e38f72cc7d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007edbaf17817a91eb48f6166a592d16cc47846e": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054fb3c10d0b0228569744734c66321e14c01a1": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d6f4309ebadb22fa01cb9d47614d74d100040000": "0x6aaac987bd9fce6505fb58c50175ec3577e4b1cfe4b8632ff68ff66000a7584700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8ff6762eda9af66117a353dbce0cf9098d8c1d9": "0x000484564a1300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144c050502cf882bd3216d7cc640d543c20050000": "0xd8ba33ba9e1d1c1250cea9a8aa6aeb93df2df2bab98d7c330a2834cbf707ac7e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512599d11a48e716f0c7be33b69a4423d663020000": "0xf4e80b965077bdd3110511713a4d625df31159877337d894999d66713cd5535500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38f3bcebf40af031ddc003ef309221ec57a19da01d1c3a2771478af5a2607960": "0x009789e46d6734cab174c01e5811d744f664504f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c5d2111b3445cbf18bfa5709ddca8d4757c8155": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951e6d5501ea26f012b2d37fbc4933bcebcc28244": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397126e1dd8189d7a9d7d1b3e927339fc58526dae45": "0x008c8b2757e600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea35e7ea94ba3312211f2313f6ae0f7120ff84e77a7595b49f5243a921bfdc32": "0x19d1e23c329025f05bc9249d021fc59abb483254", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6258a2d221b191f83061b09c4f6f778d9097362192cd35231c149e46ad369835": "0x5dfa9a92eb14a3455b46eed5f6e17253f304abce", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a377641a0f741ba35458b3fb478f0a6d013dbea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339790a990f3e8856f6264326b2053a0ecadbfa34720": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba4795e1db269aa9156234e30888d75ff3aaddfd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd41dde058e870f4274deb8cb2417eef04940f61": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289048109448c4730ac047abe0097034754cc9f0dc8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d2eb8b578ae98447fcb32a4f6b68c45058635ab": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789af1ab14542363a2c631dac9d2eaafd0bfaf008": "0x0052e1f8cc3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397114ee4ee7e6c4bf88c112a1cd1590c82e71ab298": "0x00226399efab18000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cc8681b437b11ec69945cb7b60c4ba242e040000": "0xded7e8da518feec2fcfa346bc021ea2d31a042cbb4e69838cd6edd865108325200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002d27082129124544148246a221366cd71844f2": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eb0d1842deec54de9fee30c06369c21e33b99a": "0x00fed5f1475600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942d0a88bd5baa87a3cf4b6e32c7b6cb3850a3aac": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df02898c0c4db9a86d5b6c4192c26147cc0d4845d3c93f723a4082701a68c116b": "0xd6c4d3830cec539bb01d5209b79ae4fcc5053bc2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51862210bc2e1035c82fcb1a1e5de668fb1a070000": "0xa05acd278b0b5c1c6ee96916b67d5e4468799fd875829dc626140f5aab5d300d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970065ecf82bd0cf4b0645fbdd271c790298a364ee": "0x00f8199a6c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928926c96b604abf5871c32e63ae7be295008967a47f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289390bd123181387d8427df74476627411146a0862": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d0ee80934b74c7f0f25c7a137a8a16e58e713283": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0966d51374a7fea1bed099f4d92c3fbf0192321": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900508808bce4e1d3d170cc4cedf616e759522144": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928990a66cd2def2d13f4c8d09222a11cc2bd508153e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c47108828a0c47dabe79cb9fc8f87fa9b4dd3447": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc49098d1f282e8d10fc8ec1f27e119fa45f8498": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efcaae9ff64d2cd95b5249dcffe7faa0a0c0e44d": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009d470cc85e114eb2b35c64b39f8a0e3dfd6759": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f67b3776ac1df6d0562b404d4ec62deb0cbe930c": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890037428972d6c3f5f40200902235c03843a3ed94": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe2ebe8b791bff2fe45927e9fcde8a5f9760e249": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894118b3011a348538694a2655100db72e5010a0c4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ca1cee8b12e77cf34758c36773e9f1fcc3070000": "0xc8229bde539592a0e953424f61f362d2e275eec51c6f88facd1b8cbc925f045a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c154d6a5f53e66085ce1d7c26f23aeb6d6b18ac": "0x006c564955cd08000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900360b1b494ea0f8e156f9f003732727e94e6986": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289600011fee56096e5858518ba9d12c43474866e37": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005a9309489cc3231adee672e986e79d7dd1acd9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e51a3b279fd48464ef2b37e25fe2ef7dff030000": "0x68f6553582e121f75aeef7e61d4c694cb787ebc016d8a53ca89dee0c3704f45c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb2e14a1805cee42c55d5ffe6bb07a2a8d09ea19": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777dd7978b817865a780464f0d3628e800a47fe9a": "0x00941032be6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008a15ba6eb9104f34001a142a0b57e0008d8e07": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a4bab3ab426b32a90c353ae450a1d9712d67d64": "0x004e246ee50b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d5ce50ecdb86b2e04589daed8e6cfcfc238d3d7": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289202a7913fc42692223e0f04d3be7a8c11c76dc5c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2ad5daf9b7852104cadd134f786faa798f0387f": "0x0042224efe1700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51459b5997b354318e3894297cc13f6b85f7050000": "0xfe9618d4aa657facfcb1c1cc989bd42afb1b4cee7733e308bfb340b78cb1c14400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea53530092af66d4706fb53e7891d2b1ef730b31": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa16ea96e59d8fc82b496362eb68947ccace82da2f1f3357142c072725de6a45": "0xf548b1c7499a85e9574fa5845d0308efc39d19bd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289abd9a0c14b25a69a5bd2f2c67e7192d88e64d152": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6c0c85366f11498dd656da6e5b05bb8eabf1c82": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f385662f28eb02ccd3da6d3a370777cf73e68306": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c6ea84064e0db68bf36b61506bcd3f4a48de7b": "0x00c0e1d0612100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bef0fd94c275016b202a44338b91cf9d07090000": "0x14468f3eec001c098b4584022004007011be560c11664b6025cb7c4aa39e640a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970083c66b575c021b8ab547e522a4354b78032602": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009655d2ce1236c20262b402d2fc89892962d45b": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931d6b3576ab86a04f10bf8e000161a3defb38ab8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ed47a3c5d9fc5612ae7b8f02585298aef42161140370c1c6169061963792f0c": "0x31a7a3da4c0952b89144a7f47e04c47dabe9d914", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511498c11588d5418e02a4a54c5441d3ab8b060000": "0x3edd53fe4fbdb56bb537f274e8c902fc65832f4e053d0920659caa7459f9b95c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f225892b73821e043e121121f994e274ad040000": "0xd0edd5db182fdc10042073db3a03c757819bcfaf39613e34bcec04b971e9140800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928993677d3d013f091f772e54e6e50f26204de7db79": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397143365830ba0c2a2aeb0549cce5107d484143877": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7687a5a3e7b49522705833bf7d5baf18aabdd2d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928968307d03aad558716061762b9b62f0f5d17c5c4a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519b76b44494802f7c1f94e6df6e3b001b24050000": "0x68db02183e85ea761242a57f6d610fe20c59ea47e97794dcfdc7dea470670a5500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243bf66f78612884363c0f231c11a33ebbd6d26ef82": "0x0080f420e6b5000000000000000000000b58260100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890036725f3317d37d0b948a2593892bd5c186b98e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005848ab7e3f13a54848c46469327bf62fe0e5a3": "0x006a097df4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6699d3b4f697ad91f6e279bb380d8487560793f0f247ca0634c3d9242476577e": "0x60aebc1d9f35ac28f40444bbc318abd850c9376c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d136726fcaf415dc235995fafe215258aed5c421": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5116260af363e44a8cb904fcaa73511cb29e010000": "0xd0fb8a9ff2c401782c57be9d81d51d4083fb4d77deca12888b29dc737274e83200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c22a65da50ff23a3b8e236d586fe7e3e01ddba5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514218987fcf5deb81f0f5f58910fcd2a9ee070000": "0xb428e7a5a1127119f7af84d611066db63cc1c4d1e4baf1ed201247629cbd2d7d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519e4637f480e16968ce751eb9b4b85ab4f2030000": "0x48b2cc621a25ed86391676c3686bc2cf76f06edc66a4c3c21e2452618ee1bf4e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d78010ae098d2ddfc01c7306f16776d1409a576": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977025fe5275828b45b97d3b950d65666dcdb9fc95": "0x004ed2873c0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ddac589d703e854e22f71b8f2fb6efce134e5c0": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b043ebcca29d4a6c8ba1dfdb75fedad3dac2a5f6": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88d74924b788c1f7ec64a54c63eccaddca748f588f67c26e5595870acecd9259": "0x0e8e3a75280f066163eddafe3c5fa91ea6196047", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e7449accdeebc3e4a01c18196406b518503b44397d3a30347d43b5b6dfe857e": "0x81594a7163a447cb1ac16ddb7f831dc1c43f9307", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd9364642d32a48eb2cb1b0b65d18656f4a66180": "0x0008997865f81e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dc86f44b16c4ecce7679486cf4006ae586bca879": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d9c68f89ba7aa4546ae88f1c90ce2fb2a1070000": "0x1e1fa2e8cd46e066c37ba6ab79822b0217bc35122349367473f7fd0851d3b22400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931369166ee8d31fce7b69d3231e42245b117c9bd": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f030b77f9340e522b9c9b63be743bf693080000": "0x245558c69f4ef719bafc87b4f554cb0b73499b32582f54846a05f7effda32c2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6b2fc358a77318dacd1eabcc8a5b27b7ec14861": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a305168cbb7ce64213517ce4b9fc6c2d8dd8913": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3476a6305429ae9215028af5afdfa49abd1104cadf55e65e20af5173acb2de60": "0xae070273b639a73c42e1878849ed52f6d9e0cc6d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512442c57f887927ac1c4912630c3a5bf8d1080000": "0xee00d15dad4842dd984531c1375fe57ccd9e5bc47c10fd505885e1fbe107aa5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1d09b38beaef617e933f8c735fee190db1d0263": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000a8a991cb59ddd83b76f334288e57997d25853": "0x005eafa94a1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970082f93778fdd8d0264b2718574c75566651201e": "0x0022217e9e1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000fb7f3c777a047c7730c8a4d5055d62355ebba": "0x009c3a04d74c10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976deb669e7db5d02735d5a4f14d622a09f6d27682": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397932b0f9fcf70fbf60f6ac1b4db3f74593d1969be": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999ddd5e2568b6f88f4ebc3d8025ba4538c8cc8ac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004f8b0da646a07903c9d2fdbd90579b142fe435": "0x00e0d10d78cc00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ada5f104845314b5a01b3836b9e26daf62050000": "0x560363fbc8b0990637a3014805fade6ead14f20c453cb780eb32e9ebb5839d4400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ba835a2252a188d72be311ab7dcea6a29eba4ad": "0x007270a4519f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970073e43211dcde9c888a7f57d65e3dc23e967896": "0x00be80bacc1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799faf90716291c57b7958f26bc0268b837ef2418": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5105326b69a3fafe5df7d15adfae79e95b5b060000": "0x908aab5055588f2742840a5c03d5df671c1a20427efa284748daa3990e21ab0f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a4146e5d4eb7d13aa83c9a86ddb78f4b68b6a4f4c4410fbbfae65c2ae7f8f76": "0x00ecbd51638c57c1bc38e405ed703d82a977bb76", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8431d50beb39f9d5af9a9047edd2ab987d35877815de7cd2ebc271db1dd9005c": "0x0019eb2b083a143b40e6bcd7a0d4508467100f22", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bff2ceb822e1217ac9e0b02e78e31a7a8924f5b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51748bc9ed38566e9b2b60940952f52eff04070000": "0xc06510f1df698ee3779298c8999a544fef1c15b5a805068e0ebc056d2496520100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ee13480f5e260b749022ff1e533a22e14e48c083": "0x004c4cc09aca000000000000000000005ed9470100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ad9c901ce8b8576ad5060465f7e2a7e7a060000": "0xce629fe0c1c653419be992df3bfa1c6405a65ab8df60bcdeff1ef5341546fb4200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aae16afa3ad6efa92bf4b20caa745b4f00030000": "0xb2dc42595cd47cf78bd4fa4f99b99cd4f20ec4ea682b0715d906b5694e4dc34500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289269f2df75c2f22db96592cad6ad5ce58bb85472b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b96841cabbc7dbd69ef0cf8f81dff3c8a5e21570": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ef2e01a9f54a4567f054356635348f69bb29e7e70592436f60b3dd4a3bd0b1a": "0xbd9ebcb7c6bcf472a69a1c7a84735942859d3ace", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430549c3f578615e95f58e521a726269b6c1985dd5": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d38e956e11e3185142e2b50fcf2f02afe9e12ba": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dd5aa7a9b90b8ca0e608cfa2022281854490dcb": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdb3924fc91e02130cde47545865b618eeb5e1d4": "0x0044941f486a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ce53c77f34472605558eff3805538aa77b08f10": "0x00d03bdd7a9b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd5d715b04e11ef04b8a406c4faefff7eba3fe7f": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777fa549b3eaa7e18718235b376be4eb130fa54ec": "0x00244691bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b66e4cd327c761fcbcac782909bde1518bcf55cd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c316f08646011244eb99228d384661e77ca480": "0x00f6e4be872900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e5f290acd69dfe4ef0ed31024db52c380ea2b18be398c37cd53d1ffe807d777": "0x3ba7149b3bc64c6f805d02017a0d71e89362de64", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bdc59bc934360468b13b8a94bad99871df53ae": "0x00b888d2428100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062b58537fc07796be0571257f39a591efe3cb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243003e922b9535ab92618c64fcb7e08320a8e5c3f0": "0x0028bb1bb14901000000000000000000957f150200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d66ea46144093bd290acc67ed188e375cb13daf3f329ec5898cd6bf22922a3635": "0x81d94d58834fdbb584d72b40429d43cf42f70aef", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100e8eb3b791df6f84435ab593c4dbe7e49060000": "0x5097017378c065cfad77e7360fba48624873f44c16669a73913e735237a82a2900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2deac69d3ec9489812479a2994bc068d133706a": "0x0040f09bbce108000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51501292c3eb7ee57add413aebda547b45df040000": "0x09cdd094e9a51d26bbc6cbb71d3f7c5b8edde629402e3e5370e7f6904512fc4a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f138dce5a45b867d19580d9e807fbd730020000": "0x9c65cc13119222af7653d69ca15a6def918788550819c98d5232841f7ba2db6a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ece6fd032e4d674561246baffa8f92728955b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289151310c5ed21bc68b85c5c754cfcc5a7b1869cac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d1456fdda7b8ec7f9e5c794cd83194f0593e4ea": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896174a3a6ae9bafb6aea1b87fcdaba0bcbeda4ecf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977eced1aea8a70ed73f12f0550ff58671ec34953a": "0x00809828176506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300f1a0adc19a2cb4f04bef8a27e35039d0d90746": "0x00c040b571e8030000000000000000003fe4520600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890099d229b3b989f3d7ad9778549a540058160fec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea982050e0777f55c745aecaa048b8874ca2a81b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397f43d6436dec51f09c3b71287a8fc9d48": "0x0000e8890423c78a0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504bc6fe3aa98fb3e0706172618056f0bb1f6307e043be568014eb4062a9bca4a255f39ed0be9205ee97c93b4b6e": "0x3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51794e0984810f5885f81d58e5af9b56635e060000": "0x847ccc12910274a556bd06371c25a54bb922c447c8dae6c8818d86579e494a7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d18403959947079acc738119e8cff8a944ac6e3a4956a1a378f1a268b01baf476": "0x0011e93c401330194e47c9ba85368c0205eee60c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900964d7fd8a498f37164ba1c1b5dbb99a3c90125": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d79cf77ed776c7b4520fc4f95a21cdd75a7b9b07": "0x0066fa41c93400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ed4f76a3278f04b0dec15d6f088bb774b020000": "0x1e7981c2d131ff111fe1449faef19ae71ab9bffefc3c43f1a1938b287f47b06000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bcef9a935704dabff1755b7673ac29924b050000": "0xba58db6c7bfc75aa2b8ec1c9b2624172c81f6d2391180047091dcd0cea5ec45c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ed99752dabb3138a911c2b71c9a80c7fc917614": "0x00a02488070f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8441ea3b1d64620b1b83a902a7b711c2066447c": "0x00684252765005000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928980fd49b3453f8df565032a0aee096834600235a0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130cb27c3446d11e330560e8fb48bc2ceaa040000": "0x7c76e3fdfc70d2082cd519b4ce83fe49e545561a5d108d7420af8b15eb118a7d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cf7076697e8531b8140da00df1446677c8070000": "0xea2d46da940941153d236e8693624e1f4c75111f1d0dadf824786425c53cc04500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c0acef99357fd179a671b7724ce635b53b25611ad3742af3878ccc6a0f0046e": "0x002611243b23dc29e9ed64f28df2c344055cf3dd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e87f59ab519b9ba01190ef68bd814728ef58fd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976adaf97e46d6d7aaaee6698cd764ed2b960ad5fb": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ec89b84200b69fa6bc48793405af37706e7cb3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727a56b2c1723942b8722a456af024ebdca0580b5": "0x004035d6579e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a2ff980384cc7996c6ae89384ed5f47531ba3ac7f9b2a3f89863a99266a3b10": "0x2fbd318ce7d1b4399d68fdd3561921b1b6fb1d80", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978134fae7112d109c4dd3a1f09aac75f2372cdf0b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970045ebe3bc90887088d9c91446a2973e79b0f78c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc7778c338e869497f09f0894618334afc21d266": "0x00f85e3055e100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d97d053f7c5743eb80c78ae4111ea464ba30a2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928906eb856aeb8687f1803c095615b3e7143bf130c5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a97ce748186008e51831f6753e40e6ee9e34acf7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b9c635d29a8bd145547759a0e823aa306c607a4e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700778318977af805d19aecd1aec84802cc0672b2": "0x0008db62010400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b9f5c58ff70657d2c607eda6c44c1b70e69665": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289255de88ca59b050e361ac05df197578bd70a732b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aa296ff9b6aa0de261e2392c0270a41c60040000": "0xbed497470a04ca4c13caccd69c7827e3ddc64473fd2d7c5d496c71061f452b0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a9b5d50da09d57e940215c15f075139f7788cd38": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51af2ae4227df2d4216647986b9c99530d5f050000": "0xaa72f6b0d74e9843b68cbba5e8d622d055f7a4e6dd196b421a67f23baf05a84100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e514cf3312db766b10f6ddc624518b8e02618": "0x007870ddfc680b000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa68c92bfdbd08a08d4cf5995379e28d3ac042b814a7bb2a1e2095d5e27cec7b": "0x5b0f6f73022881bbf0516b30d182761a001b7244", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ee80fb1539fcc03433b535fe90ca636d1c77de813a6858edbf802da6bb19206": "0x5852b57c0d039fda16a6c948d2689b402526497d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098ffc92b4fbe3870fe9e8c688c988d380af738": "0x00a8c4dc04b600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c99d84dfd0058e1407c5142d1a798c295b050000": "0x5640a67cb9a12ac09b8a79ce6c9bb3d8fdcde7d4ffb20797b27341fd6690806e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971933a3602d1ad20840dc198946803e0ab2b49d06": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8630c7dbf3b9ec8021876f9f1fab265df12368e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b8194e6e38c7d425dd2e4227995ee947d9050000": "0x225fabcc55fae4c1afebe501a378409a53191f0ae212b917cc3581c9adcd102d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db80268054c501c008024aee44a8d5462f59464ade23dde004291254683496a66": "0x557e9b0f30b4e4d1738c4288d7a69ed8e79a7036", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397410a7076af80d5c66f3eb350f4d455c959e99968": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002da979ad2e50484456020e661e39a076c2dd33": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890011dadd05ec7515e18f0bb50ad1918198ea2b5b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003e922b9535ab92618c64fcb7e08320a8e5c3f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890183f3866e19384aa414dadfdb3f18395b36f631": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005c87548ba2fa697f7d3ee6d63722cb4f25c7c6": "0x002c419ebb1000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef0ed5eea27e5b9f3014876805800300e9070000": "0x60335162d0bc32398956a135d92d88892dfb89e37155721c982965e0ad9e965000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824363c4681b602b2f61bbb65ddfdb7a3a339e527109": "0x004072e62d2d07000000000000000000a7df9c0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928911bc2c7ea454e083cea1186239abc83733200e78": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289884748c1ba66a37845abd3cc3bee1621cff23241": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5142f095ea0acb0f9b3da20ff9cd46526cdc080000": "0x4cf1511151f1ff35e0241aa5ffbf2bb4f13f57e68a2e9ced4274ec08b6af410a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ccabcd8ff377bae0838b7bd827a83676bce01aec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d9c60615239ae70c618e265f3fc12f7a3b12a": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2137339627c6cb8de09eeceea4b8160c116a30f": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3110f4e11c5b4efd2ea579663b23907c98e13f9": "0x00c012390ac006000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd3bd59974417b224b5951648e5209ddadc42381": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f6013d2fd484b19077df506f97da590ee9ab6c3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a59f85d8badb315d33d47327f37f632d0c060000": "0x7ed18ee2a4570d6d5da249195b8169757c0104f9398db1be982e656844dbe33d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b3d18c655353ca14fb9d4ba8d047d08d1140974": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a7986da7d631e90cc61bd9b5272b6524a03702": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004c19d0274828f463ee886328a9c797ea9185da": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397648764f0789afe09b446db06388edb09d9588cb0": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054a7cf7c027ea72ac2b1994d1f6221539593a5": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b4f630ce350efe5e1171e7310bfb519b33cbdb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae0942112b3e1d36089fc756b8a71cd765ed18eb": "0x00c48801495d06000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f2d612f969a30082cabc94e031ec106ea060000": "0xc6419b1a4cfb8b590a3eb48bcd5bdc8cdfd8f595ac6e1bac1899e82a1c54820000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898b0885a1a520a11daab59febcba271e67ceda6bd": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5158492c5a4f473d515a0fa401e6d0cf3023000000": "0xeae7f0525b059f6a986863ce528fff8a3eac44e5a9a213475f3fc7886628a26100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f29392e76070b3ce988de2e4c0b8360a4080000": "0x5e6bfb60d6b71fe80ee70912e01de904de80da6da39d1128f210e53db3c7185300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d08aaa9d9c3977f4d0e15e7164d1c04c9f020000": "0x82dd64c4a66dbd2dc7ba864df36c11af0d44120713270c85ef0b5dd38f5b9b2100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797883f6fb7483a6cb748a647f23b601fcd69b393": "0x007ae6d4678500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896314bea21ac7c7c29127ac20b508ff8d430bdfbc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cf10be9868455941c4cc1f1d29b741ae0629cae": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dbddada20c7b2b653812577388aea9ac896ac9": "0x00542cdad50100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979782b9c2c85c2e9db211cb6200065e312853e68c": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e5c313c4964fbbf1876c174b86f7d030ae001f67249ef7122bafc679cd07e1c": "0x1e35152239ee9fe923f20df2f38280b32bc98d22", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7eb937e55cb2550e258629834c5bc2449e30083b2c8e67d82a62eb4f3b6f2e0a": "0x004ad027efd31c17dc857f5e3bcddc672da6bd7c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90ebf0971459d3c56b434d4a20257625893fd27ad1bd423739d918976adaf866": "0x05a5830f9d6fc22700b9439ba20d15531be0c789", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ff7f274399c5040331a59e941b4971f31e15e47d": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfcf0b6ccf1cfb1e77c2b259c08b1510dd978fea": "0x00406241594406000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfe138e5ef68eaffac3ed112fdac6c1f614f59f6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008bd7c09ec961aac1fffb733e6f7615ba6990b7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513e5dd524dbb83e3c22ee2ddad30e1bd7f7060000": "0x44e78b7a854326aa0e22da37b9041acfbdfd06eb176a44e76c105928938d3d6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da46bfe557b5ccc967536df92b1f24bc6031bbfe646f2658f5b3ebac73cbd036f": "0x14edaa223bfef22b1af6f5500fe1766b15cca12c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971df8d1ba25da8a9d6804aed11a7650f89fe91996": "0x00007eb58eb401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397199a8bdf216604b7b05272240b71fab7597749f6": "0x008eb9a57d7c04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f897a81a6ab5aa5cc24e18c9976b3882cd0f4ccf": "0x00d4d44477c502000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901e19120eaaaf5cd7514f028d5ee7993be7fbe6d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b9f92d067202d78d58b86cdd2ff7efcddc4a4839": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913d62d5a1963046a3caccc3097a4576d1f9b42e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b248acf3f128a50f811761121ec10fc60c5bac44": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c77c440c06384717ad302a6c5290c9e8716f67c1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d3a712492fe925ef435ff891817a58a94080000": "0xe244a01a44bff3d79ed4d3d94bad2b172099b654cd11350563eaea8aa827256c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000c6e132057a388a9ef1bf73a0e6b686dad276a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e47494379c1d48ee73454c251a6395fdd4f9eb43": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ed801c678ebc0e0c2c688aad5bd4c11d32060000": "0x0a963493ad9461db8813dc1a72f886a7c84bba8f5aa6480dce7cf77c1849765e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004a9d5ffc97eb0a4f20df642bedc5f7a848e2be": "0x00eca5b6716f08000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c11fa9f82689aa0d4d41f2ed3e3a80932707b46": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c84bb367c7efdfa0490412a91a1e4ac7a613510d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa6130c09a0f5db6245a628b67546a22b2a9c691b076073711a0fe0a9803a14b": "0xba22a63969aa637e9a0d4ae31beeefe97ed270b2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100eba617f988d89b30cae1905f1d85bc46070000": "0x963cce358c1b7f7a0dad86343e1ef27995a3559168a1f5d8f3b33c24a023b75400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902fa77f03cddf7f1ab675723e15e88505da9a025": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748973b94b0273ce3d54774144b4941996bc62556": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d487097aba3397325d639a01695be93718b161dca43704d6efeac308bfe7af56e": "0x1c2fdc1f6d5ade6a3d39ab48d545a6a59d971265", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9234f3b6117260ff6de428e15b943b387a6d4a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6de115e43fc234b448bab78e647bf65c608d4e5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f1982dd848a72657e026e5f9df604017b2060000": "0xf25e936da97c044ba8806998462c4e7a67ef74d34cc9c7913c1110712915791c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087e1ad6809711d463c993d6d4396ef57423883": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5d925ba5a234ee898fb4ec7e86b1427eca421788dc9caad1e7293611cdea300c": "0x144aaca2fc5b80cf9407d115281ec805e620c211", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51090138a1f816acba67633390889140cf37040000": "0xf8b2ec818f2b911044bc04e2a921a95d81a5d1672ae68b6c65cdd10987c2312600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e0ee8a2c14d8c467a9b31129caeae40b021659f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898067113652df86032aa683acd46c0b2abd8c4a36": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728c42de479e57cc0c90b8a3eceb406dc173ad7cc": "0x00f2bf116e4100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d421f3f945c49886c4993af976b9d06e97b4a59f99b151c9af27fd612446bcd6d": "0x3716046b0394219102f5c2cdfd234312c0cb59a2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ecb236707b6e0e75bbe9fb034528668ad21a3": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ff6a2fe83421f7c8634dcdb876c6ee43b23804": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f41a6aa9773d67c3d31aab2ce54b27f6945b049": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009bae8840cb3906de25e5f8b9e89ee6cf7eaa43": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b282f5fe4bd0bfda21a07f7184bfd720bcb0886": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1a27dc484f0411fa9787e137d350b249a0cd8c6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708c6c136fb974c8ffec3b38e8d053791a048a0b9": "0x002a799c422300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397de5eea1691af15296ab6474d161ea8a4ab5f86f6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e2c77ae05286333b7a6f8a71f41b83e8a9d4e956639f22095f9e61d6bf76441": "0xec50c43867523234d23f0238a29f3e0df59e7b4f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700470a170ba243e44eda167e15063b4a96f25aaf": "0x007ef911b4c709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770c853a88dcfdf9996e60d3d33f3002ceddf46ca": "0x00eceba11f6803000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2f675d0370f2f3fa3e011cd0c381e2c12d17fe56a01ca3045ee38357e158020": "0xe899a68189ac4b743750da4bd8445f7f148932e3", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439a2d3f2f6d4a3fc6b4e5be57fa3d896b3d7e04cd": "0x0080f420e6b5000000000000000000000b58260100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702351fba2d7d4e88f690bad6feb6f93d0dff6906": "0x00e005f7a53b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b74a9972cc5dbed5eb8714672680d8a1bdecbc3d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cef11607ebc0a7535f23e0b7bc4eba5dd65a75b2": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510960e66f01b4f7dfdeb64da0a638a9b21b080000": "0x40a053bc7cc36ada17db15a16100e48122fe97f3993e9bda1e7b351167ebe31400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920ac64b955ebc54f7287fe3ce29671086722b60b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432cf6d5701b164808a3f3886ee6258bf3208c3743": "0x0010df60427b0100000000000000000003b5650200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5a9b2328bfce7b23d8ecd6dc396125418dc03a4": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928983730c5d67dc5740a2ced307a2612e4a337dc46e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c3f7af57008a7cd9b19ceec9c196178c7a080000": "0x48ff48391b63229dc9407669fb7973389cf9a9b6fb3afc5d3b39e3ac8da7f9e900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51117128150bf4d4b6950fcbb631221ab6bb000000": "0x2cd0447bbdce4d89867458397fe69cc242c9e1cfda74ce65eef5fd6af8858d1a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d36c27983d26ff572358bdfd21942a2b4cbb3391": "0x00bc41b5d36900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e78da27c3d7a1ae6ef59a79946d8c77a708319": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397968bbcc804a1003e95b3150c50fcc25873e0d8ba": "0x006001ca9aeb02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b577fc5fdc344b41df64449866e73d33848ea51d": "0x00f031b1450f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51840ccee27ac68f78561495dda30ccf9e46040000": "0x169679c4a927396e65263ed42c5bcf3a824cf1dfd03ef3dca2bdc0f3538e487b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c08fd32ace7cf4d4689ca90420a0fdae83e637bd6166611a6c1ff2c3f17d51a": "0xed8bda7a810d594f145079dfb46849d8ae35c716", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970085a7ee9578243c26fa140b97bf771178297a3b": "0x00f826855f1500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397024afac105064abd224256087859ce5fe0dd2f89": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bd4e8aafa7d3e1d9fc46c5ca788d6dcd1ba873": "0x00a60beb412100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a37135f77421be9d9e5c15284188e9658207dba": "0x00541ff2d93508000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4b424e1ccc6f08768c921455f83181bacbfe3f0": "0x00c0b6403b6f0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900120c2c12a1b40077200b7122aac76068b49490": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bd74d345c128f0a80bc711740d16cf3cce70de1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a08ec412ead6bbc45a465aff936e772ad133569": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce21f3256f9b285def6328b996d6ba21ee6cf192cf6b10364e6540ac9245bb6b": "0xbb2be121b15ca94f6156f20b8b45410676546ee9", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51911fc710a062b787fa4ac23e141a0e5112040000": "0x982a7fc06922cb361516d5fd621f1801e31943c3e1d957ed63e925dbd5672a3500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b4d63aa980b39130ed7e3ae50ec40c4d8b33935": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cd5df6d891ec36ac93b730a2919c56d3e211a5": "0x0028dc32610300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e204f47c00bf581d3673b194ac2b1d29950d6ad3": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b32816c1386cf0f7d5df26b4ca5921730c6f0ece": "0x00c0206bc81602000000000000000000035f610300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db4f3b0258a6c76ddaf414bedb1cbfa64eaad958a0cff4f3c57085c5df38c6304": "0x3ab2aaa53121d617f02e48c6e8ac908c4467a5dd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700336f4647818e2acaf710ad55c714dfffaf1ecb": "0x00ec759f88c604000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700edf9881b2295cd5f87e43d57ac2707bef7f2c0": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397210f50483da86a563e049ccc0e261835a63b98ee": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd24a754c817f83acfd14e75dc751f3fa9babf35": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397387902d21b6f76d28cac09065719c4f48f4cacdf": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6e1586b3fb4ce04143f3b84729234ab9c1e28eb": "0x0082db3cb70201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978036d0aa7ffdc5c19ffa7d73a50265849b7a54e1": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e45e521d5179090a446dd312330530177f585091": "0x0012fad10bc000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899fc6a2b131fb10fd547d90100629791d67619156": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900063eccd46e37c80e52b55e9ff2912afd8d99bb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765d6275a941e393d588ed1b1d0adc94285e00757": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397522325d3c47c84ff0a86fae37bd4f62a703d5b42": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d95df826fc3ea014f404a1368a254e23d29d99c8": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397279e235500d1b882c58d2b679ed5253b6e3df0d3": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ca509880fffc0b2dd5c6a4ffff2074483f0e982": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cfd2bd2a86152bf48b1cb9ab2e52c19d5717fa86": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f51382de43471e6056864cb39123ac877c1902b": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ea02626ac9c77dad4f5b7601d99c54e112157": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5148b35d8cd90dbf19e60e3d64f22824955c010000": "0xea3243ff8c88cc961edec6c1cb24ff779dab9e1159a83d6a42ea07e125262a4b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c063dddb0309717f742363085e29ca9b097db6": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a752166d908f57d724163a24c4ca1fa4ad17d7e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928961436deba951a9f929c5d7f5d9488204c2037aa2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978524544864e0a83425ad4c8408f81dd55bf7ed5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f1bd3c825c1e3ff102a43397b877102ab060000": "0xb40b9e0fbd4e819b9a56f1e7e7768e7d68f35220f086a80165e38037f391894d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433a6d927022815090c856377c74b4128f1fb114cb": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea153d7dcbb78aa15a80f015aa4b433228836d77": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecda139d1a13ac2f0ea53cd2be13188e54a1c4b3": "0x0080dc9e2b3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289266215c7cafe4d42985587d614ecc2a94075cce5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971af41a96bbaf348c3ca582b65193ab4d9108a22b": "0x00ec5e19a2571f000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994ce92ac9c9839221b976caabc83820dc33a337e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289351a7dffbe4b4eba06a0b583c970c4f83e89835c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c68b2706d13f729df4eb2ab8edf4f2d59e037803": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940692724326503b8fdc8472df7ee658f4bdbfc89": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a7a5c1f34c57b9d1e0993e83060b6736f6a42bd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80f8873883fb8b60de13d8fb78416c118c1b7baca67a058896cd976073e37721": "0x3bca1e6cc37f9b72191cd98b6fbdce4e092f0d3d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a377641a0f741ba35458b3fb478f0a6d013dbea": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956b8729ffcc28c4bb5718c94261543477a4eb4e5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922e90752520af777fbd85cfbdf28b94748e7b871": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf8ef866b3d8139c982961f6850fadc17f1d48": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16735bbcfb152276f7322d3360d6f4a6ff55b364a953484161e0de19f5599b13": "0x6f4920d9045a58646dada2c7a8b48f513387c86c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719200c712302c7c8421ca893d95bd985c8586007": "0x0084449cfc2f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eb22a433b90920be16b2aac81fc61b0a90070000": "0x769597b907a9fc660d40ceb46cdbc04e015f971727f2f530b6376e96e601ba1e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c34cd6c012ec6faa1cb8f6659a4e07b7f0834f87": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b340bb2b047e45d6653aef7a5e94aaf40b7baa1e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2f3d21866a3167be7b0af44dacb2e496c5b827e": "0x009a073acd5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282434cb26d4abc32e99e107f1cfed2b07bbadd425b79": "0x00d0ef2636a90200000000000000000068514e0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e7321d013167e5d2a3b591bac90baf4c75839e5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4727db059e79445c819878fb43324451122df130dbc91b177e62df8ddb8017b": "0x2b4294fc374566d487008f154cfb6701ae636196", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978afe5cd482d702980f9b141ab34150996db32341": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928970d394f0974b088f02599badc4b1df6e7fe52d09": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1b609382d115d355e65a0ea206290fbd6ccde06": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f21808c5f1198f548a6be2410fb55fc0c4ac15f3": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505a97a23b762327d26772616e80dea6f4a727d3b2399275d6ee8817881f10597471dc1d27f144295ad6fb933c7a": "0x3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700410f38e2ab3f96a8303558ec4b470ad81dd10f": "0x00021044ae9920000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519e24c44fe5f18c4ca168e6211f87133c92010000": "0xbefddfbfcbd24527d9318e17879559ff9ccfd74181722e017ff693ec92aa104200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9abddb3e03b3abda683c57883445f02d6f6902efd36bae7007e1a71f37368f0d": "0x00d9f222b9f83e22e15702b798ff9b4d9d30b117", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a7986da7d631e90cc61bd9b5272b6524a03702": "0x00ce0530150000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b2e32fc97a28e0ebc5482e328a8f8de993650a6": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001802a47a849fb5d290323e4255e690fba12898": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b752d54f3436601d8ccb4fa02bf2289192e4ab59": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513992c2fd10595cddb629fe30bc84aead0b060000": "0x4653f0d351f8bca69b7be83c41b90fcee17c7ac2b285bb01a95b3755a6101a3c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817decb5f00888229dd98de2aae6a2bfb8f31b52104987f4b52df713b32e4a48df8f": "0x4dde991987acdfc23c0e4e72c70d715794a052c4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976dcbf212a83175dff095fea2d226aca22a93d643": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289328752def488a9c3aa9e89edfb56cd7b4b56f7c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a2d3f2f6d4a3fc6b4e5be57fa3d896b3d7e04cd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1ba30cfd46c08cf699b00c705de01764689c272": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38e9e71e1ed6e521e2fc802a333996a60fa2581b1496e9eee3665ce0994a8213": "0xd7ff0231086abe3e95ce3773d60a39bf27321ee2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f454f6cd7fdc154be5bdc8ae57c9ef6d83c71b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5182527102535b40f63760edd3379c4bc929040000": "0xd006d0f2c483b3ad7df4a76432af79ff2d6d2adb608c1066c7aa1758cc6b0c0800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519c1c52c6761b493557c8745c88811fa499020000": "0x08ca477537ecd3556ea4e694f0d3c9959afdef57149bd303bb85c84a3124a30200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bc894689f9202d7e7b18734c97453335548694": "0x00747465e12500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a1504b9d2fa2a344ae27cf32d1ddef24ef6d46": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974daae42c5e89d09da39cb90f81bcb2acbfddf67c": "0x00341735f16d20000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f548b1c7499a85e9574fa5845d0308efc39d19bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905c312d2134e5c632296c124a975e7cb9f79f519": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ef12fe1136a22b1ba0906561ed22a934e44e244": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514502ed4ab93771bdb7e0923a6eeff6020f050000": "0xae86355012408b1130842a93db57f27d3edab57e7187589b16d4186dc8eb5d2f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c71c824b4bf5d9111f4513c46ef76f4b003631e3e5fed3f644c2737fc562656": "0x002475878828a236151128f5af451fc3c1ad194c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720135f71a2c2d92ad87aab4431862fd7c38c79c4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767936306c1490db7c491b0fe56bcf067ede1fd28": "0x00aa8af681571e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca1c423a0a9af92343998ac10b6668ecff9e09b6": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890038dbd81462e435a757f14dafacc119b98bc2cf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aba4b515e5c9b0e4dcdd8fdd9c870a3761d943": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006061c454fdec0a781c00ca44508a04361ccd93": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de88a80739ece6a8dfbc8a37158c0c1bc0dd0368c672a4ecf3516f0cbd6cf4350": "0xba90e5b6d3376d792ca3927524c27a185fbfb159", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd9ebcb7c6bcf472a69a1c7a84735942859d3ace": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f2478f49dc3dc086605e6b5a8dc1d8a8d415c876": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ce59a64a8f8d700c31ec0879dd62602fa6070000": "0x137e2c529088676c797702ce425fa0e4ca92a4e27dac6a2e6351bd151cf9441700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1acb59938083cf7d003b8cdb348e28855feadca45ed08b49256bf8e13471d461": "0xe688284626ca2d00b578865c0e7d189c6ca978b0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397960cbcac0d20353c14c5a4392af3b80b3f962eef": "0x001e1d3f083200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007abc56f6083d36db03065f7afd36c55bad6afb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004ad027efd31c17dc857f5e3bcddc672da6bd7c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397139369f83fcbb405f405796c3f2589bf9a9a882d": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d396f87af37acca0980aeb814375eb46880d37bc": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f1b0cf40e48bf2dd646e0fe719476ebc06010000": "0x74d34e1eaa0a764af6084ef3728d63362298575d5efa077a858633345296022200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a39f0f9664328bc6dd494d323810c93a19f20a": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cd0699b4667af672f71ea4e589d9d2c29ca992": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339787ccdf773a25a7036e7b95de5ec8fe74bf7121f6": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7b4350283ad1256f14ecf068f941dbd21050000": "0xaecf138ea1b459133e80dc71b736b388df75561d405dd1af13c872433b34685600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970075cfddebf8f19740296cad7870516db11db25a": "0x00942d64b5a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950b2c3a213d353c66a2138e3f21a1f909b0a87b8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ead7676d5a7c09c64ebc80de0099cae972e45": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5d005e57310e4c5f148be7ba4dd666db6884c36": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439d979604f1633bd31944245b5f6d183adebcf10a": "0x00404c948b3203000000000000000000348c2c0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0f3ca995aadd1438b56bd795335a723114ae98e": "0x007863f906c40a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970adf0238f7edcb1733269f852ff86bd4a9f37b99": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002d43afbc32a0d67168a2de3833ec368ffe8983": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d2f58c155d8bdfb4cca005e775f4fc53d6080000": "0x6a51e7f4c64e59e468d49709561ab3d04062aebd5c0f297a491a8002f2a7225000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b0c38ee5e16a61029d6cea44a11f26ca39070000": "0xe2782c6448329ca3bfa30c87ff5ee66a059329a9a27ccf8e33806f0698c38a1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cabc87c953dad294fc0ed22c563bac10fa8e3ab5": "0x00c4afe38f1008000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e6907ba032a02644f7289d5a2e5b6f3e41a49": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3041ce2ef4e9ddad0ee763522a641b03863d5a5": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289582dc3c082204020f1639c2079fcbf2d197eebf4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c80ef41c175b8728d6e337e89a8a6f4a1d010000": "0x9a50a0e597419f53c4faa1f9bbba58733ea731bb0a3fbda8c12466892683375a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b691159dd19b5793991002db8bcd61fe3b080000": "0x3a426ce80e46773962e068093597661b7733494a3dc2ecd9873ccb7958a7a15300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ff1551da72279435c79cb877af44a76a7d552": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba747ec663ca7239cfefc4be89639c3cff6da31d": "0x00e268b13cca01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511736660595ec1d2a12acaad646a5ba0ded080000": "0x82e4431bca23b39a02f6131a04c65d0aac0ff3ed9e7d1ca880cee1d65ab8296200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8a300b59d4f4b3bc88e66d4ddc8edb8f0703edf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4cf3489002e8064b9ec479414290e3bc4a87095b4b1a65cdc3ef1e06593d256": "0x31369166ee8d31fce7b69d3231e42245b117c9bd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a654566edd646283c920e3225873fca5370f489": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439fc6a2b131fb10fd547d90100629791d67619156": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973078f22015436d621062f7cc8334774eb5685e97": "0x00ee1fce3e363b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa0346f3edefd952f673a0e24ae4658c22a64743": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897928c0238f5850957d9826f712b688d00041cdcb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51078842af4496dd697c1627a4ecf780288f080000": "0xaa84e0c7acc3e5566e5b833d2f8619b98abd0d2a2c159398fbe616c3f16f8bd000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d47559701f69ecb16d40d5fdbdb5f604fdbb9d1c": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f2f1db23b31f2a3dbbf9aadb4fdc790a13040000": "0x982aa00fdf3835f109ab98a569a0476af2e87c92bbf3cb6c399254fd9b31c90000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970051ef63e8b9714d239156854c615606cd9effdd": "0x00542cdad50100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d31748110020cb554ef2d73be9dd33892ce435": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397914c952f5746b19f007124c995ee5b08061139dd": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9409db5aafca9b68f43dcf38bf46d460079cc3e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f3841e5e0672e7bcd9a2a3a25e24ea7eb0d6c74": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b7680dba45cb6fd6ae148cc8b30963667d386d": "0x0084fde0500b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51014939148f5420828f88b76dfc41f913a0060000": "0xb62858778eee786f221c566984853d9ecd56c03238b3618aa982546de7abda2e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ca69ee86a4131262ccb5c56af72f42d597c5a2d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f489b21d5a4c8283a1bd0d39e47b654ba2f65a62": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffb3bd8b5365758350008118961254c5ecd1f80a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bbd5f8d33f607a03690fa73f177f5a30c864542": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c8f8f563c3e6a9fbb039fc3e20b53591796d745": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289141af52b68e8e1cfe3318d7b91c698b6c0e2d9f5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf6aef56499745cfc8abee1fec089e86dc2e0b33": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772ff95ddf81bfd2db7a088aaafe39e7f3ad3682d": "0x00a0724e180900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b60a48f2075a52ee5e796dc164ccfdc73050000": "0x6a276c8c59606dbc8515f3bbde2bbf30956ae793689cf5c003d7e595d1ecee6400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700248d1380769d8ad43a4663da2712bd1186dc76": "0x00cccfe07f1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900648e430be595e8293d447699e00f383da18abe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890089e3121271cf650d27633bd9693190bd2f69f0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700da52ce7a1d54e078399894b20f3b4c6c99ebfe": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5162f1503ebb79b1c53d356b4bb663781ef4060000": "0xcec75028adfd5db7751930c7d9c79a0e660fa55a9cfe45030c0fbb8339021d1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd65ce74d64b974f226eb2437a7ef2d13b5c240d1de9d3432186358f4f6f82163": "0x3bbfb20c83b79f8cfe3c3f7296f0390900760745", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c1be5037ac4806f3087c19c2ea3375700b9682f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514ebc4682968784cccdcd5f8f2d359ed303030000": "0x46975f837e5abf94b061174335507d461e5b4774944e42bb1f41003eb590cf5a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1a27dc484f0411fa9787e137d350b249a0cd8c6": "0x008062175ed158000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cba036df49f3553123e3a1096df8167a04090000": "0x6a8ab02983c79bae0385d2650e022adc6d121bef8827d81ef82104e43b21ee4400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397458e55f31a66a01be0801221777d1127de93f6d4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928911e328bd7023e933426940ad12d6e1b5bbd55f1e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514974e6f244d55c25352b9537942fd40703060000": "0xbcbad26ad9af28cfd50dd70c8fa6c7dd3964941a4e124f19851c003ee8be013700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708ec4aa26d04dba7ecbbf121d50373ba1037e763": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e86113466d232dd99103281ee6da6888245253e": "0x00822671511200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e8e3a75280f066163eddafe3c5fa91ea6196047": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4d2cbec06234804a90868dfa7f89619dcc178d8d361aa9e9eb082309ad6c920": "0xae6869a774b00ba29794c8d4611295bb0d9c2bf2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890035d19bc0178da96f2ad24504182733d90a0ed5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58783e1e9b02c77a63dbb17861f1fc21cca35045ff11132bcee7afe4ed5db238": "0x37c5bf8acb3140f17819ecb4dccbf2e66dff9ec6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e1a6e1d0d940de7accfddc03ae542af6d690c64": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d97436259f34e11ee1a0be1e59a98a6c4ccdbc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4ae0f55fc7387bbf3ae242e71c5146254575a1a14d98bae30ffe28acf508c0e": "0xaddb5210dce9127918db041caee93be7b50ce633", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d9354ef22423d1d544a01a2fd8b2ac03af0aa0e": "0x000a5aba704800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fc43f8e2e61130eeee24b8f1d5fa9e80dcdd4f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896064d1a20e529ea15b06551e1690c8f50342edf2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514b5023c9b8e367fc4f684bae788c0d09aa050000": "0x8cb954a659869c053877b65d7ebc7c30e97a7ba696432a649f5f02965187295b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138722c30e3526046d4f0d63b1747615b51090000": "0x48e781045357bb7da0d214452aa40813fbbba5a960196c5104617760e517307c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519368ef96f1c00a00a83af1f1803543cd31040000": "0xec09c2e24ae25500ab5e3ca7fc1961b76feaaf7c24a70847e8742bd74ca9031200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891dac430b96f24ff9f0e1cbdb725407372e09f09c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289671dd13509d95926af853a161e78b4ed5c8a37a6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7bfb979281653e88fb409461d39f319ae988197": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7438a2461c64335a5c736b31be6a2506be76d10": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289032f6b944721fd338858bcc0e323d9afe77e0a40": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970fdf6c80ed447a4b0692af53a1acbb7df7bf983d": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000177e159f6b155a0e81f6859e9ca4c6610156d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971399824aa53d03fba9d3d13585341c819882184b": "0x00b2c931cab702000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900feb32379a84bc54fafefc9e3faa03e626892f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b372cf3e7c70309bd436314663ebd45f3ca4b15c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708548af3414d04416f96f60cb1c39dc8ea927b4c": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d182bfd28e1df3520bbae3602ca44f076a7b928b": "0x00cc087b5eff0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bf278ff22a98e2ec520472ee271da5586d4ac12": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8fabd8cd6b1a1eb325d682e8532fa3c55ee40d8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c235870df0ab4d032329925e9f4024a6e753e7a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0c04181f1437010d0db38d7623be82af40ecd6e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928963c4681b602b2f61bbb65ddfdb7a3a339e527109": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700638fb5bd1fa89cd2c29c98e6196620d749810c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dc9c428b9828211415ee1e79fc3aabadc9db23": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f67649a3f084eeccf566b5193cb6faa830cb10bb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d36bc6b7da07101e5302f94d5e39f1eca8aef0dd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72ac4cde67de555c2f0b1ebf55bc45f0b61458d134719bf9f56d28867cdef858": "0x30b943dd80ec2729942b65aed370835bff04bfec", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1347203b8093b7ad0f21f821e7d53f841b25892": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f7269f2171f05759a8946831c2300720391320c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397599ad3f92f76e859f7b7a87dbe3aacb81e54c6e6": "0x002a535b914203000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103a0e638cfbcea4020df32100ba5657a2c080000": "0x70fc94e4372b91e68eae0dbbff7d37a76308ad2c1260b27ca02a1dd4a17f704200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aba13ff6c070ac900ca4e3861ef66045be42b37b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a4c2cb3ef01a02eeb516c1adb1325e3bfde619": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289968e43f6be8d8ec1e8ef7c8d5c60f34eed8af3fa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fd1eba5f41419b2887a1e36e4dc22598254864e": "0x00b0a2f9e79201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f61e40add6b7b887ffe8792aadcb6433d5209a4e": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51133f6a6876eeffd5a8efd6360cf88f1e1c070000": "0x90a14c0e9d0fc3ae3a3398cd3a5735deb453da1b09c3c651c7dafd2a624f1a1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b243dee66433ea21911a964a9fa3bc04e63f4a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c23324b0cb29e4fd1a68cb08febe58b50e39d8afdb5f752d6c26c8ba52fc002": "0xc231dc7e55ec4b6e33ea3ea6d77d88917d879781", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970022d7796a2d5977267948e5ffba8b9fe04c3da5": "0x0066a39de98c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d5f062ae922c42aba01b342b17fee7c9ff2d071": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea982050e0777f55c745aecaa048b8874ca2a81b": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c391666d5b864610559e59c046357585192a25": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d4a8282ffebc08c9decb113a822135434f9b4a2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001dfd1c89c8c18aacdfde2e1e30b11ec2d2dffe": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d3396c5b7ada618bb851ef905bddd1bbbf4379": "0x0016365ec7bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062633756e91d8fca9dde56511e65f7a1d73298": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d82c12285b5d4551f88e8f6e7eb52b8101000000": "0x984e16482c99cfad1436111e321a86d87d0fac203bf64538f888e45d793b541300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791e943fd3640f82f0b3577e796a9cb31724b7bc0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897df289cbd544ba6bd153b783ee9024e46a1a7527": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d3b766e58e0d0aecf1375297e84c798b15936d1b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f88370269b6718332b8005b44de1c1abb1c194b5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512a7b0d5f65f1c471620492ede3de62da09080000": "0x80ea70620d770611eaa9f1a784b08d3be34f0c48166c640fd478059b954ff43200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243320a67f5d718c4b541a5ef8194ad4f4638162f6c": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970037af14a08100231979898635d6fe870b1c846f": "0x006e36bb883b13000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769a80ca39168c9bc6761b9a326c6f15735139e0b": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c417ec8432a7cc95fff6a7efee0d97555b07caab": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7067ad6ed9252ea6d37ab1b78a62132bfc6340f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289afe949978ae2f7098f9b5c2338ed5de20ffdfff9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d802bf4620f7a14c125343ee7bb185208670bae709c63228c12acf6ac4d023f22": "0xa172d2ca38c6011f6a48bc781b2196b294e3f2aa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970055ddcd8b7423b0acec3d0de6c0666b06c14e7c": "0x008c23ea09fd2c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006ff6c79e263c3d58e9718ca0f08540d46d0db2": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289026581d80b9cf65c119f32a750947c45cdbb0847": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899661231272cfd204a6bc7aca349e597d0c034701": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998f94748373c637c8599aec7c09e7d40ede3b78e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895168b667344102495f2d51ac4e8de93e537403e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899ca696ecc735a7a734fbce108cea75f8e982cfa2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea63a7e85bbf2cb582c90d97d8f78170ba7743a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b46c2526e227482e2ebb8f4c69e4674d262e75": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3050a297efff865cd424b60c6b56e4eadd261280c2e156f2b04fc6f1f9e23279": "0xf72a6e8a84e112b9fd925ad040b81bec8b17a6bb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0c1c48b97e9bf16e10f7449a111e40dda58ede742fbe3aa9a6dd5662a6bce34": "0x164d92a6126ebf0f354fa098e173f1a50277fdd2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b7866698f9b8920bef90aa5e16a0bbb238343d0": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976846d14e5177c97220466fa343cb3ef0d1e29f07": "0x0024e56bf63801000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907dc1a136ca9cfa640962ec0a9a8332f99b0bbff": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972bca1236e83b1189db3941cf479b7c7cb1112720": "0x000aa1d3ec1f01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d3c1c718031e8255bc5f2064d8eb34534a050000": "0x3aa9d6f420f82d9f11560aae9fd19c539b967c35179f40613786f1046228d96800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977804275d8e53aed92f09f99f55e135c75bf297d7": "0x00e4c619674304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397422af240dff9d253cd31c30d5af9647fc60bdc64": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e7f956676282819af849760db488febfcf3c2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fcaf0a13a98b04a3080d7e246ffa7d072777e7": "0x0008661df4e003000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a6f5ad410b4659a89bb23a5bdc841fc55f56567": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ca455068327d42db7e66c6c80532452f39ad256": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a03b55a75d4baae8acab8224a1ed1bd6636b477234b3c540fb3282f17ab7716": "0x4036ce05f4b3f7254541e9f50f56247cccafc14e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745ddca7c0426fb78561229a9958873ae9cae4e79": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713d8779df2c88e622175dc24f8bd2b53c562e631": "0x00f2b28b484f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897894774b62144bf5cbbee837c96e833e16e3edce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e13540ecee11b212e8b775dc8e71f374aae9b3f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986716e7f1b8a4ab2d72262ec5e034ff995b684bc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e87f59ab519b9ba01190ef68bd814728ef58fd": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e173806d025484091145ca79d5d830f3d38b4f": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f9aa698b3781ea29878036773a0df87f5325d98": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700799a6372295097cd51c0769caa6c8866bcf7bf": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062e7f8465aaec10bc526bf5bf01443b0e450e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893257722a739a71c5bd42d8818a17faa4179385e5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898036d0aa7ffdc5c19ffa7d73a50265849b7a54e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999bc4449c9a1e3435912f2c19e75afb1defcbd94": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713d5d590be45f86e1c1297073951ad7abfb746e4": "0x000449dc7b2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fba281c66fe1034a2f1cfcde7fc6f6d939df9cd6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700feecad71fbf3f5acb1569b036cf1bd14056316": "0x004203eec38a05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b059b066f976d528172c8d6cc5257a4787266012": "0x006e7072df1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928912d86da4cf1d9846b7118006e6948b51c75c6cb3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a1e82a8554ccc29275f5cd010de3668578bbc9f": "0x00e6add2ed0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439c0c36cb561beb841efcfc7212710d0c7b1bb187": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517605566fce1354201c477a305526a8f118050000": "0x603cbc4d841ffa9811ca096535fb43ec8e240f6c058fc98f2619c72a9fa9e31b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c326c5ab988880f8fe6c1e17b97cfbea724a39cc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51301b0066d52e9ee37ab667a6b44c882e08080000": "0x747f1a48023fec5d71e82ddc8daa3c0b1d1f4e6f7e1e753323eafd83c3b6865b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977dbb16b85b247430888763302413d6d2abc1ff8c": "0x00e849c81e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f40139d03ee67228f37fba06e187cb0944fc9e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513bc9d65d31aab11613d936afd952710bd3040000": "0xca9a6590fa55d82d686597287bef830a7f0e7eae2650c54f94f2d2499525330800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d265013803cbe5f9f3ef7b38ad278b6d097d3be3ed79248030f460ba93d164a60": "0xa3b20eee7cd3801a6408ff4c6f73a75556da2a1d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977cb45acd0b8a871f396b319e5549bcd36a047533": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e17abe40cddfc8a2d2ed13eea958eb0030c0db": "0x0056e5d2950100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54ba59a8d253a79ff9481e5f86153c55e5b01f20eea7a2fb32f1a4f38d6b7532": "0x00c391666d5b864610559e59c046357585192a25", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51986c4eb31b62281df5c166a050eab611a0040000": "0x0450c35fb5d3306a120893b253cfcc588bd9f5d0a30e1250b2e15a39a4610a0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d559c543464fdea0ec1795669c96182180b559": "0x005c05ba430a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824343a6edd95e865b50426330da71638b56f2a75c21": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920a372f22493279f89526a1f5d525d6c6b4abeea": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e409357222d95275da1b5bedabf0c27f95080000": "0x14a05377eae1b20f0895fd7b7eb55ff1d89bb396c311850605cde11befa7f92300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515ac2ecae4a6885effbeffadf04a151e66a070000": "0x5070438c5a597c4f1f46a4fdb4a1b5a88f46b37f1985b15d8a6daee52670fc3600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d427c59fff4938a7299e8ce877b2be10f040000": "0x8e2c77ae05286333b7a6f8a71f41b83e8a9d4e956639f22095f9e61d6bf7644100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289febbc884e93912a472969e7da085eba33f526ffe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f55e8a9bc462bbb788e83ec8d022f1deebb3e4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972085aa6de1e83261fa966ed09b518c3eb3ec30bc": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90bb7e90c2ad7c2a11f03c5237c6bdc77720cd5ebc3257f138e94b004fcd1d47": "0x924c251902924c7dbd4cbf166d42757fb2d146cb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893799d6c8dfad3c6cac7d4ea9430458503bd9d4e9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928961f4f7d2a593d1040406d2df519699b96f455a50": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b48eaf22121c5090df38caa3150be0872b9de6ce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928954368965237a390978643cced184c6ec51d0ffed": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289517d18c6a1f053420d79772cd05b676d3468d21e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d9797fa252d49e91e3d3c6be5e698ac9ba040000": "0xae50b8775cc2cdddd86bc443fe42bfea4e801a316ee579264cc7b4d54bad330700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a528e61d81a47cc9ab160555143da7220f9471d2": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d666d51a8d222c2065f611e6aa7d4c8ff4a4bbd": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510edaa8f8c2f52fbc5c1942f87feb68f16c070000": "0x0605f038b446e037786a3bbbbb0e1c78c2472c4910ae6f97902985f3b72e114f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397422d9bba52a289ca568b6be38a5bda2ed79fb328": "0x0032d33d7a2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751a1bac19e5fde2dcacf1024a16aa62f8302617f": "0x000892b8f75a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901b54f22deff4e08365c731d923a31379aef62ff": "0x01", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243802b450c936ab1849243267995dc9aa45f234a48": "0x00e094fb1eaa020000000000000000002bca4f0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4aadcb14243c81ea0785494a25185106c5dc1ee5a56078ae95603f2f2aaaa153": "0x39b51396ef3c70571ce86532feab5598a766e8be", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289819669704eab9a1a1086840eab684846647b969b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b75e5a1bd0b8ee7ae4bbcf5551eec80ae52a4bd7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009f9a431fe97b71e157c50043f770cd5db2558f": "0x002ac6cbb1f901000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7628a5be63c4d3c8dbb96c2904b1a9682e02831a1af836c7efc808020b92fa63": "0x11efc885eda7ddde9c1c77f2946737796ef06e3f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700368ab2cb58eba931c52dfed54379ef3b56f79c": "0x008a5433260405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824337356375fca1781c398d3a68924bc6e95bf30ee0": "0x0000470ea1b0f8000000000000000000aa5f6c9201000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761fe11633c0fd8d3c9392b777c0996254e5368cd": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee1fae10668204a6a11d73f1dfba264e212d3286": "0x007465c1f55500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5147f0b2271b7f2e7126cb8e761239abbe41070000": "0x788bee7fa9fd8731e80ceec5614e5568781b75f54b34d72fd1b07f0e185cb72800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f18036a91dcfc6f8b39de68f170a683efbe0527": "0x00ecae33792600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731d6b3576ab86a04f10bf8e000161a3defb38ab8": "0x000a357c2b1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000c10b4afef8d4c640ae287e75dd71c427cb0e0": "0x004e914751fa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b422b17a216192f8a25ee6d08342dfeb3e05e6dc": "0x005c344a08f900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e3d07942314ac67dafd42efa35e4663b35aff06b05eac14f8da0805970080f8": "0x8d5bd8a5efaa38c2c9f3ffcc73006b8ff19192e3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f4ecba233c28d3b5334c7c1c1d1d0e2b1ffc71": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c22a65da50ff23a3b8e236d586fe7e3e01ddba5": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892406879e1a8d273aeb64b000677b597ae8db8517": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289422d9bba52a289ca568b6be38a5bda2ed79fb328": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000d31e57b61e464c0241eeb74d9e6ef8f9ebe09": "0x004efde96e0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005dcc47544933b9b69fd851d150394c011baa6d": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0fa0937a830c3b80de826638649742fcc0f747c": "0x0010d454955324000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515431f26eb168d8c1d3d3d6f73b1a8885e5070000": "0xba19adf8ab8528c9f53058b494b6154dde0fadfe2bdeb3a9b9c87761cdcbb44100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b3aeabe65664ab160d8ddef2d0a74f24faf321c7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44450201e6957b7ffdcc7f63d42477e336461ed6d74410c812d79c3081ad8f6b": "0xcee564d87985e3ef80e8d0cea1d8f49278fee135", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004d1fe43ac70412e62d8186e8e0cb261d6c602b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be7f0d32ca1cfa5d95b4c10c960a088f2080a508": "0x00dacf383c9f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9133e7d31845d5f2b66a2618792e869311acf66": "0x006cfe5380ca41000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700edd6cbe72d13a402da3478c6fbc8a0eb461fb8": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51675453c711cf782be41abffd34f965a92b060000": "0x06fbacf43d7ff4e047983220c1b73b914ad77f93a4d73789c73930b2ba6de64300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700598748134c87ab7e0e4de09dcb4c060fd73591": "0x005ac97c261100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890052b34370f45aa1a3d93b5837975bd9e088d6c6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ecddc1c11402f03446a1bd87ca5232df46bd5db7f9a80537464b299d1bd8a0f": "0x516ca63270b7d253cd9af64cb9d92d62de81656c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928932c6220c6116e3666c220ffbcddd2e7ae8d78c2d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cee1f42da366ae653c516cd4897792785a070000": "0x46847f68e28bd9107279ca1a70ef05f942036e3216d4a47a88361e563b2a592000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970013aa2fb5ec916660b38f1d53d4fc9bf8ef8a84": "0x002c467663c700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970048de500664dd14290254bc70fa818079308610": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c2ba9a003f6616bbb133e3dbbe827e5f5c45371": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c8b461ad395fe2411869281301c2ee7b5fbe5d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f993f7ba557bde7f6f8c49c7d53d2b0d6dc87361": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06ba2bdf21a8e40bc4f333eea2868aba048a42f00bee1ea5c1cd8913eeb32a56": "0x0012f59b4690aaaac5d4631d56f30e00383eb29c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956fe408b24e6ebcf0d0230c8f4b7ba25f2c2197b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c26abf3b390e47e4ce118221f72ecc565000000": "0x5647a240f4d349175675f16c74a964e387b5d8af5053d29a9c4b20cbc457086d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893eea99becd232fdc16b87fd8ee370a4d0ff68165": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d509603fcf64e4c4e9332d7732430ca2dc400a758418bcc1ed6b68829b34a017d": "0x00f1a0adc19a2cb4f04bef8a27e35039d0d90746", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddac5dd2abf4db76ff860108062bb8bfe188f80d69546d19c1993f23926ae3638": "0x00c26f719cdfe1303d3ef566ca2ada12cc56407c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d204afa2bbb11abce235187463313f068329f58a7a8fe132cf04400fb3cdc092b": "0x1c861c2296e9911ce4a1cd4bbd197a360f8cfdfb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008389dd2775442702e13781f464c01558823b23": "0x0074e2759bf100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397144aaca2fc5b80cf9407d115281ec805e620c211": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c4d09effbea40dcbc56bbced8bd75c4bca2dc6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928926dc3a2b04c409af7f03783b000b2cc05020ed7c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431feed555363e3ec72086c6f347b1b8f67d869333": "0x00e4c88703fe05000000000000000000a94cb20900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee94ebffc484d8d283783d8eaf3080c5af24811ad9c23a9cc52d8ec7f928fc2e": "0x00ac42f377da5d9a624f94d0e9904e76c144736d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fd5d715b04e11ef04b8a406c4faefff7eba3fe7f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e228a4c62c1abced2b55ca9af8b08b1cf0ae4988": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789c37fb9e6396ed6ef843c62fb32c43250e2f451": "0x009e1b25359600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0fb7ee5554869bfb57d69836b005e00a942d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003edcc4d34cd4a22b85b496aa33defee0ae5717": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765dd37ee6e2df4710af8229d4aa913ea6264ddb7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b94299c95f6f3fb6b0e35433232e4e4468d1b760": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893f9265fd0b4f92eee642703e72d749c077cffbbb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511c9441926f98de666c6b79647da7947ce2060000": "0xbccd3abe59dc17a36fae237852338d0fcc0f616a257aa8ee05a964b8b521ea7400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5113eab907ed8797e02d09c89c16c2cd1e06090000": "0x68ccb9cfb2b212cb33a483824baaa23e4a088ce87b23d790e3eaf77290eec92500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c2746e9042bc252215d3153d0592bc44f28b2f0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892bca1236e83b1189db3941cf479b7c7cb1112720": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84a8b7fd4d56a3a955e9b72ae0b793335b479fa4e77a9f95c87d51f789de5f7f": "0x00d24d8e5836c187481f76ab9c0a7ab01a912c31", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51039b863a309ff53a282b747533be17af37090000": "0xc81a4baa6265095f1081b86633e628677325b8f7ce821d1a44492e05b017577f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970db4dc6e5a9039b2b8fca026963655b04596e903": "0x007e313b741900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51618063be048166b5f21fc0da45ea548767040000": "0xda775cb27a9b7eca3f00c453b23e18c69fd9e4920363f31c201e7d1fddfaa04000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d937ef7f30b8533c60dddd948dfca54140055f7c001bc8b7b7f4e3cc483609b47": "0x1f8978b550c0291627d5604a84e76fc044c23fb5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff45a27708c55e909009e59f1d53aad9b940e273": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ad1bdd11ebe8658f0084ba66824e9fe616000000": "0xdec5caa60a55f5abd1f1aca49f2670591b5709d2d9e94fcebc1e5aaad92a405f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d2b403199705e292860c2978457aec9075b897": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795009f768050dfb14ef9ada842323c6349386972": "0x00488c227be903000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900443dd96337e1a0de0d5b909ca680f00af85f45": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de61956f7fe271404c5b0cd4b155ed105f9364f4ea7608cb6a9c127794b8e3a6a": "0x2a6f5ad410b4659a89bb23a5bdc841fc55f56567", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e8ca36ea8d56e723c642cafab49c34f261abd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895414dda50fb2b732ce8ef2f3f796fdf342daa5fc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d69358163f5146f04918a092ec4f527cf6f252": "0x00ba42ab7d1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001597df1153c433614b9dcb4ef8f11b640e19b7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ef12fe1136a22b1ba0906561ed22a934e44e244": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a2da86405f0032f5ae8337cfdf47f067fcafc67": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9004d2df7c89ba8d7d65f01056ce579d41a7216db3c8e6c28826aec6d6c21b26": "0x9cb6247bf9e22da514b1b32acae28c560c73d848", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009e98ad910f26769d6a0e2037aa4285820fc9b8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb5d0f2f6b345f9c6afc5bcb3dab5ac11385e512": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004217146a0642a86afb5e6293021dd02d1f4729": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f05bdfd076980a8884e37d1cf90bda6801cba37": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397654ae9a08e15cea8d7d8bbce09f06ccc1cd8024a": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c6b2e23616f4c246e2e0dfaa0485ac98be69725d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928984b3ea9389fd14b2d023a0650890e7ae7c2fbfcb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d6d291937e1e0158624cc3644af95a6140f2c11": "0x0074d126b13700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d6da545fedfb3bd3fe0ec7f30a10f1c87050000": "0x769cd0854afec0c1a6d6c71d68417a13e653809dc8ef73842b0fe19f90b1b24d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de2e6771397bb71c2008483d31e053f551649d98fd835a540afdf9edf781a322e": "0x00a32ad2c6d4d5ce0b978e4e0e955e02abbb70ca", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a63a3a0fa11052369722629a9ac94a23a8960d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce855e2b5a5260a655291157b6517146f10888ca83cb17609b906a401681a145": "0x190e7c0403a5dd4bd21d426d88b76b1d513d39b1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b593edd7cba746ca27bca29de492b3cdaae2b3fa": "0x0000c52ebca2b1000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519e56b3781e29da7a9b90a43c240ed08e3e060000": "0x54dc905cdef051a3b6bbce57b6e6c5edda54bcde2f34d763dad9e179ce042a3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975414dda50fb2b732ce8ef2f3f796fdf342daa5fc": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae723b4cb2d54c6806751d253f1e457daeac267c88eae738864e5c8f1ab30801": "0x05df79a1f08a459cd77ebbf6b3333da75dcb6141", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b67da45314e56d9603cba1d09804e710759b57c": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd546ebfde341c6b20726d206d084de51c316358": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d524106d11c5b394e41ca464f7bbeccb2c44e1c9d69ee5c74b87074fcd9a4984a": "0xcf0489ae7bbf3b7321841f3ce9db682a6b0cf612", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a35905c72be4e346fbac94bf343665b680060000": "0x28b60a62d04c7d92c4fcba02072a384e2f60ecffd56264aaff66325509ee227700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f67383180d9cb41b115c017a3e1e9134a6571e7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e737ea62ef4a2b771e3e82be3b8e0898181a8b62": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001f7eef6a5b727738156deae8f0604d92df119c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cfc099da855617d28bf1513d6af852bbe836da2": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a7c2054d39cb60856cf2180be68ce2265eaffe7": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ff86d93a528d81402eb6b76cd270be3ec36c25a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fad872c4ab30f08252d2981056c5c5b2ed060000": "0x1efb42259f19cb4fd06aa4ceada857028a371af88868bd3bd88808ffc5a0747c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979303b03dc3aa29a78c0495513920fa310f9e561d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd46f947c425657f5c458d5718cf796b1b6b5c4606da1eab11a2e3b14a50baf2a": "0x00d97436259f34e11ee1a0be1e59a98a6c4ccdbc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac878698356f130ce0ea0fec56bb0cded29f4fad": "0x00f0ac68935002000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e9f6f76760ac65628e32e5a1db5d030f0623ab5108cf68ac23fa6732b47b032": "0xeaeccfcf272dee48fa3e4e783c6dea0fa1fc38cf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928916621a778e3533c0219fa9db54f2d65c1ffd978f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd573535a40bb01903e616a383deed22b5e3ff30e552017d2395e3e75a8e78613": "0xc589611f018087385cbd3d91b8fedc67f2c9c795", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ee274ce5c8a1dca1db4d84ac8e9d7164148b088247f6647596573a526843958": "0x967e82bac222eb299da4d0b3c47a4d2c69602fab", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a75b7cd418b3b3ee94b151aeab4947e7fc890fc5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4c28c57507b59cf24b2649003b9f8b9e7980ae5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e73a25b58bf440d8ad53eb773f412a4e89e22719": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e9ceb0d90f70a8911ee0c3b11f80a500767f21e": "0x00a452f2812100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a4aba3bac858eb8a53f6a3e3dfbd0a73a699d225": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a8ff393032bfe3802d48f5ae53e9cad36830d2257e79b9acbefaf8f188e665a": "0x8b2e32fc97a28e0ebc5482e328a8f8de993650a6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f9e910a0736b49e13dc9c5d575af7dc0943c0e2": "0x004cb4d510fb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973257722a739a71c5bd42d8818a17faa4179385e5": "0x00d89708430800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c3a5ab4587b414dc754ec4c26105385a8cbff43": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894504eb623e2c8ae4e61ad147b13cf978aef376ee": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c8c3a92d8feb9d27f32f3ec67bcc6792f8496f7ed86d1b249c54205a39ee30c": "0x41df190f54ac5d369149a92583cfc240154fa8f6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516a0e16540cb923b4f189c46fef445c5710070000": "0xd0f33dbea6c78781e080606ecbee91c08daf0c684a8a11496d364f369e511b0f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8f13d654e51f66ed93335d573ab2da1cdaf832d": "0x001ab8ccb0b900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c0ab889aa9583f67dd90116710079d7d2d94f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c62ad9fe1773e8163ddb765169ac188aea5b8403": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900361b7e4eb1e3af12bd13b2403fdad70b822268": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d4c5ecefdd2a070bd0caffceda6b50ca10d7fd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dcb926da7ff3bdd92ea659beea369ef286464e": "0x00741c17ecac00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519a55139d7061135a07579f2ef45a1a6500070000": "0xd662430013e36f7be38e1e1b58fa50bcd5b2ff6985db177978e2089d694fe11800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f963fef4235744c3cd26d5a3b155534f72ec6d23": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e56fb2b9754f5fc2e781634def3b45d8e0030000": "0xc01b6709d6c07ce5a82ce7b917ef8b19fc65646709877afd79ee810c24a08d0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999947c78186a7ebe1e620924ef0bc50721da4e28": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a92d58547d1c7a1f0f340e540267f278011ce0f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68db02183e85ea761242a57f6d610fe20c59ea47e97794dcfdc7dea470670a55": "0xff45a27708c55e909009e59f1d53aad9b940e273", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289790a8706d0ae9782042de2a022125b746511047d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5124abbc0f6af3c645afa1a3f92e6969ee80010000": "0x169fef7931a98fdb221a745be8614283794ebf9123d4486a59e7673b86423f5b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735c9070e864636da7462d5a6a59f81f7645e72e2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955ed1eae79078844675b794dee5902ab7304db79": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397669b996dfbf62da2ddf0c9ceeac503b920671639": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af5b50ce2aa522d8d9d6f06247ec7d877d0ea3aa": "0x00ba28a926e107000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22e6e4560ba8144ea5c993aeabb32d8c9b69cbf13c26ad41e450d8d1a6426632": "0x4f7765e7ebfafb17ebd8da8a9422d5d1a9a4760f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774b9ee01ea740c5d61e3868dbfd5abe504269ae6": "0x00805ce547be00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f2c1a093b75363938402045ebd1dfc007050000": "0xda91fe41a638929d565d92843dee98c6fc02f8bb7227939aab4accca69aa7b0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289128bef3c7b002090dd018677f551a865595a19d1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899da50c01643c31e889bb2ff6c0ed168c8c22f98a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac3947b090a8daa38eec83cd7bbc5dd49c0e5071": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966e369a3a9c3678e3e4d05ef6a9886181c9a2c5b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098b67b82c0be8d4cbdcaf68c96a1bce7bf61fa": "0x00b8ee71e14001000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289daefe0f07df89bd8236d1007e80f1914e2b85853": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289415ad707749eec89443896f6e55843a208e671e9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4397c030e61ce77f663d79186e3e1c86eaae6616e1695e0ee2ca87ef7e18d19a": "0xead61e3f92e933b8ce06bc76061f92455029fb34", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51545ffbd2434e362e8362f036ae5958c41a090000": "0x504bca16b59dfc6f9dce786197e6fcbb082a8cbb8b9c7fa9b541720ccf6adc0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928992ee94af3a409600eefbcd59bb63623a6280a13b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c17d9bb1ec5b9baa20b7d0b4d90aa5643ca1175c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7cf0679071a357a43da60fe7685f9d0314b704a6465af69c4ec86a310d2cad49": "0x6e4b9fc84af5b73f2d99d036273766f211d9d6b6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890532ce0c1d948b2e8317af8279e07561ee3a3979": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2961c9a8ef0879e6f08c41d9a1957b7e5d7be02d2462557b1490609fdb5d02a": "0x2ed99752dabb3138a911c2b71c9a80c7fc917614", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5af6b59d2da9b4dbe2ce617dcae625a004b0607": "0x00c06e31d91001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f7f7e96799de9750a394f3d6310eedd09c31fb": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d1ba30cfd46c08cf699b00c705de01764689c272": "0x00d098d4af710000000000000000000007f7b70000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f360b24a530d29c96a26c2e34c0dabcab12639f4": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c03372f10f16d819de4d9b22f59caa35b91c0d": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893842775e7e6cba076c5f3d44f0fc444b93a1502b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a57844f09543679d27a8f5ce1b6bf81bc14f021": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ebd4b8ed2ce27e41820169a6f89111436e1507": "0x0096e772550000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c0a13ce72fc4a2b98d5618babc7d74948040000": "0x1ed877f9fb8eed0ada11b8f3562e73b807cf65754a073388fd7bae9104b59d0c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a2086278ce66471ae2b31bccc818095eda142f95bb13339ce5e8fe7c4599618": "0x9193eaa11ee8101beb2f7c3c88a5df61a5114f98", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5175bb26335c9f83fbf1c45a84d16b869eb6040000": "0xc04e3158efca9c78e6610d1277c9bbef0ef1ad80896d4d8a4240c3eb5a2e170600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515591084a62d696fb628ec4aa3ec728d9b3020000": "0x0e60dc2e716e841366dd85abf1464d4d8a7e27a1a1bd4b7719f5c26877c52e3900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f92ba9453db2397461fd37fd06209e6d8f030000": "0xae3df6f5826c3b9d92ea03524f83fb4c7db52708b6c23e61843433506ce08e2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899588686984edb566be1e1b5c367aabd49aaa5522": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928983d8e1a3d7f05fdc4f4a1a99d5a89bcc62324a04": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a2342e466f377fdf800a11c7affefc3e1b6e575": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005a1f98863767d7a9cb58dd848119874ebf099f": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fb82d696619496ad28d708285770225159e2236f": "0x001a5524560200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5168eaa000434ff0fd7c473c1dcb50c3d358070000": "0x5857a2b92920aeb74ab5f9ee71485235eb11e81979f0efcd45c4e6099f4e821200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890069b8480fc4275a0bc10a317a8687deb83ba972": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd8c7102e0d36e57f8df5a97e7ddf1d194903a45378036d95d25e7dfe9259847a": "0xe260e35f88bb3d71ff842178649c2817dbf50c04", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890006c9e7bec9d239b8b08a48c3c4a0ac7dfca848": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4c51165f7f13ce32256492d88388901cf7e615f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975168b667344102495f2d51ac4e8de93e537403e1": "0x001ec02c1dfb4a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed2d649d7c8a8c8c62368e42c5717df2af5e1a33": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e69c4321926a7604508fcf837e03ea65d941ef8b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6e1b1e9deea63d87810cc9d86bb759d26666a54086a9b650d91d95c59e3a8de": "0x6052ed2407cd5e04f17216d9687c289e325e14bb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f00eb46d1af27a6022117722fb36628a4fd16cc": "0x00561064306400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fba61ddba9f9e0b2a3e4d5b0f402284c00090000": "0x989af479f0457113b84f73d9c0bf4abcb2f273b8fcb944ae64141328db140e6800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f05f9a27002a01c8b005dca6531a4845c070000": "0x2a38cf1b92fd5b83c387d7d0f6a05ea2fe915cf9f0e2557b3c7fbcad6cdcb83e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd44028df7e4094fe55acc1d3decd7b43349c968bece089408f40391002d66807": "0xe56be81797e2616b7d4c57c892dbecda35045fa1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890032b7a3470928f2e782c4e4c636bb007631234b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d2305280d7e05b1c3c5213fe4f626c9b5557af2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898212ec9b5cde7fd6a19690f889fc34d45d1db06d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f229ac4cc64385aa20b2cf7f75a9eba129b6711": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6cf513881f519aa8ffa7b6631e934e954afba13b14629e9683c20d697fbf5d5a": "0x9a597705df555e27d97c07b97e277d1169eba89e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc5d04e7ff3965c8285a2c23aa573117deeed886bbe5e3be0974f1cf0a2ff216": "0x7abd31d835a1a6ae9d8912936e8b68f7fc89ee0a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f7f54dc0421d8b06c07e3d872730fa111e1aa67": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a901cba20c6616581ae8df057838198b5b41f3": "0x00ceaeb81a1e05000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510627ec2ae9dedc86627a0f87fce5d9fc7a070000": "0x5ebf156bbed4f20662ecd3634c447e7f44873c8f660622490b044f93af2e544b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f735d737ce77eb036d353ef6dbd3a37fde010000": "0xc4852d47110a2efd4d38499db303859f407dc430027b7b7c582adc7d5b18754700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897e103f3df1e411be2cb88bd11e9c2e15c4e69394": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890017dd07201d4f2f7cf7b46d5b54f710ab579f4c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e3fa6cb97ab683b535d7937264e633b093000000": "0x4e58becd5f1b09ee3876eb448f6a9b7fd75740b0b1498a73d53ddcc094b6bd7900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514cb6904c53261f2264ed1b057a7d1fbc6c010000": "0x565518b05d731fc47de585ee3b3270c188bec481385e8abde5384c0d12dac97a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e925445ec68d6a9ce15567e1f769fd481ce9bae1": "0x002a07e4311300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ab1c9cc91d08f652158e554de079b1162f050000": "0x861e5108e876877f742bdeb0d90022549b70ecd31dec379b90d0489b33fb584e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ac9bc183534b782d3f6042cc77b81cb4656bcf8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ff3bf82aaa27d245946571141b113cc4e6080000": "0x5cfa14f1be34d343b9e57e73ed8f76e09cda02868bb39e6f62f4eea00c031f4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de648126c1f38e729968541f3a55390e13ebf3b076c8ea1509e378eec2594286d": "0x00fe4c20335a78abf60128c5f0a375a09d5b64e7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e8a222bba2d0b96de1cc1ab1fb282c55bf060000": "0xe8a3132b1815c4668f541f5fc8271ffb50d0ddadb2ecd1f3e7a34d7ca37a3f7e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743140ac2d3c02cba8e461602cc15c3889dd9fa3d": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002f331dd9949283c6f9f9b1833dfcdcba874740": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bcc2b45c57fa511a18cf50b5d54cbba9aa6cfa9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006bc93719aef20a0258f9371a725b576c046148": "0x00da07bcc67c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977cca361415fbf12722397c47e063a4952ad65bc0": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519089ae5fd9369f62d984fe4a1afe545fe1060000": "0x16f74c762a21dcc935462cb83092a8dca9762672aa22dd479db60408d747142000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289828912ebbc7be3ceb23de58fcf221f171b31c88d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a5b47f605e7f1a0cfa91371ea887111a13a90bef3ed321c1c821661ebd82679": "0x1fd593bd99ed831bb189c73ad7290501597199ac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4b2611b6a9433aa098aa0a026a1d99037710f66": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515cdfc00db1defef16f916a20fb87716c99040000": "0xf27ed3676d7baa6d7504e8e5714bc39eca954e71b466e5715e034f9152f5967100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517eaa62d434a114b6fbfc4e34d74a3da9e7050000": "0x1a952f5ea1b437ae5ea5b6b877340e776124812cf6c399d2fa07ed893fddf84f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9b7ef4b7a727dae1735e3ce35827316135f3210": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510e708be37da36b128810e7357eec6a6e3f080000": "0x5d925ba5a234ee898fb4ec7e86b1427eca421788dc9caad1e7293611cdea300c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899704593a5983b6b3e498b644802337974a2d0c3c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c2c2c26961e5560081003bb157549916b21744db": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde566e4f0d29c4bfeeb3d23a0a9f923fe62d7fc5bdf8c9afd75506bc8fe69a0e": "0x004f8b0da646a07903c9d2fdbd90579b142fe435", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c687a26242033da5caffa1ef62a293c930a3dc": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b59ac37bc3e2ae0f9d32b6751e516eccb38732": "0x0080ea33341900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec082e185832750e0fd4ed4c5011b37db13eafbae70ce18f0bb093efe8ca7125": "0x663e2ead665b23089266bed606d492ddfafa5ff7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920766f01d859f1ee11e14428d9fb96bb1ebad946": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e3aeda1fec9c6242efa7ffc383b897f0e06d85": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c69c3cfceace9836d63b90c6bcd9ed4e479dc871": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5fa99dbaae82b30e809eeccbfe8bcbe0e83f241": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002afcb6eb1d06a5f5f26360f72d777b2942c4f2": "0x009a073acd5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289deee4f9f7c3af2f271f030229d3af254f2bdb0c9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa339be97e8b33e2eaa4bd2ae50e48d238882841f2a1caf34da47b0218804434": "0x60984850ffe55a4c330723b7b439f70e6184bcc3", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51540e64603f8048bdb50c600925ce27abb9040000": "0x6eb0649daef06ef9c43deaa38b2e6d867ab9e44480d4a30f1f3d364e7aff932900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895448b9defbabba9c0d81faeac87be5b4f01d4fb8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ea02626ac9c77dad4f5b7601d99c54e112157": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f68ff9a1cb4aeb9018a8671087fcc6155bef517b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f67932ecb94e1429c330d71258165fc877080000": "0x98b995d8a902881fcb8891ebe35d50318453a0fd745232ff11e8cbcd5b11b70000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177d39841e41d2895c7f8d8efaa77761610090000": "0x149528821a9e955805a4e10b49ef3ab68b0adcf7388bd60202f441b121d92b3600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de5d8e1837eca3e4241011b7e6ae4c090d9f9e": "0x00b2e809461000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a55e8d42c5212d555acc4c1756744ab91530dbad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999faf90716291c57b7958f26bc0268b837ef2418": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a029dda3fe3b92411f2665465af3a3f302060000": "0x30e781c192463969c3ce7dc64ae7db4427334cf542998ee6e8bc8fdb83168f5e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c29914ed1b4ae2981825eeb257a58d4937030000": "0x6a605250d5a59894de282fde4fe4c46312b9ad3962438017b6d896a3e93e0d7200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103d13f82e9e7269c776186a1585a381a6e060000": "0xa4d723984b6656d3c74af107267ef2f8177a8621516544ea3025f52a3feab61900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5647a240f4d349175675f16c74a964e387b5d8af5053d29a9c4b20cbc457086d": "0xfb2815ace3d144b7381e2364e799abed8c0d6ec1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cce4010299a3f49e6530c55e063174aa2a060000": "0x4ce971552082e64ecea872da2bb4ecf8549d2760947c952722e8d8684dcd605e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9212c23e56838d5813efaec0b256040ba31348213b5d9001c95643164f02486f": "0x32878ea4b480bcc29e7404128a116c75278b80c8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003c6df13f3c95f12e0f3e2c82e3980d9732558b": "0x00b02bfd644301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722128818393800d4123cbb9b81740db04f380977": "0x00d46ab4a84f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5199d087f66997044ce1100e3466769f66eb040000": "0x0ca0db0283dbf8d123602a2ec334ab5c3fd9e2540577e0955eaec679cefa4f0a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430b7866698f9b8920bef90aa5e16a0bbb238343d0": "0x0040b10baf682c000000000000000000cc7edc4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38e7887c528f5b54f12d9c9ebf7731d89c84622e02a8139059f3af6e4ba64521": "0xc83f97b509306d26b9a7dc44993e2d82f73a049c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d462b54f04a4e212e9f2f1735957fb753295b120e212052c7386b6f674dc5af4d": "0xb55cb6edcc8c9cca3b659007d1abec171bf75ea4", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51329d9c9dc16c10d0faafb34ca1122f465a060000": "0x928b092428cad53613dd8b953f1b3c942c38637c01a34f6481717b2d1b2c174c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c94565b1d83230d62649ffe8fef08c755251853": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b74cdac11f1d6845bf60e28d787eb4413f804f31": "0x00005278b9bdb8000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891bbd9ddc49fd2d67462d0b1919151ec9aa45fc4b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f57c911367700dc2b5d847ffb0849293ba5af025": "0x00e8d992a10400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898761e0dd63d14cf566acf4b730f3540f164b6b56": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee58852b55610f513c694362070de7122a144b87": "0x00241c35eedb06000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f7c2327fbd51bb8040c53fc64e3aa6df197c9c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890019bd61d8a9591e1922a11b46063a887cdd935c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289610449b5f52ba2fd6a5cba5c29d650d12248017b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f760704253f15e9798783e695e6011893b38b549": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3032a878f698e0ce7cc3706da046062a0c10a30713345cfdba86ceb38d560e0d": "0x2576f5ef8309dbb23c39be29d62273b4c917d783", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979edf2a093bd2c6d0a7d44368480ce8fc34bcdd80": "0x005c0337b00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d82dd64c4a66dbd2dc7ba864df36c11af0d44120713270c85ef0b5dd38f5b9b21": "0xf9c1f8b4234b1d9b714c018fe96afaa186d841a7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6bddeffe26cd501deca6569ef33870f15aeb637": "0x00408ab5c74301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715245f6c73bdddef958c94650431c4c2330d4faa": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c19f28184295a37171703d21b242216a1b10ba3c": "0x0018f5b0d95800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928925b584e9363f10433b2b033e3a9f0d207235c89c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970710c910d3d8061019f91bb90ccdf607898e135e": "0x001ab8ccb0b900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890967e2492eb0f8a7bec3979df99088fad360d62f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004c8ab207f6e5e33d260559aff9cff4d803f4da": "0x007ef911b4c709000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928983b16a18f7fd937545ce0a72341bcc700bc72c69": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b53723ef104396f1f44a378a84a15067e11e166": "0x009a3f588a1b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c5f64f4b694d7725a40979c22105c20532050000": "0xe071f2e75eedf15710e782320a18a5f76510b8d991c9f5f6054b99bf2610e73c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fba1a1a641591737a3ba3e7eb236d2cfafdeb69": "0x00aa3d8fc55b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974af79369d49d03b92400c3b67a65b694044ead5a": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c834fd44543334caa34c024436112b2f2d6721": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e18a7c74b913a4f28da74fe2c194ed4655d63e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b129e8f6a6e723e77313bf99718cdd640721d5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948e8806eba183d1364c2acfca72280c95bb41ec3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5118d17b8de7d83791730190dc10f91fbe0a010000": "0x94a5e3cb03e089fd5d39f713036cdea09665ccac86ae2271fe1b18cb40a04f3600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519c0984338edddb16ee57c6a3c44bdec753060000": "0xd4b51c3fe940b0fd7dbeb9f6ab13292166e1deeeae43b8d5a632c6c331e3da6c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757ba0396c511c6dde22e4c524c07b85411d6d05d": "0x00accd72818903000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dbda5deda828ffa3c15dc99cad296c5671181fd3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890027be158b9f1dc432577577d225f0520c309696": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397625181f151d0300b8a8ed7a5bf2779f939ecad4d": "0x00027454dd4d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009dd16c2560bd2907136d9569c32920e5f0ae05": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de0ac044eaf1755905c1b70d749a8412385612930a28d50f97ccdf2e5489b8e28": "0x05b30ed53364a95a0ac56b214077a85bd5992772", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899da6c5ebb2a225a395ee772d77ec5178fd5a6307": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517a815f1967a4e10d65046f23b643d6437d040000": "0xfc504c4be97bb6552ef8e0dd3646ae7273605c8282ec2ff1f086e4d7af536c2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289862772a77f471da418313e3fb7680d570908b206": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d7b4f68efe1aee99bc58f9a511f43738fe5b0d": "0x0040f79c2d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948e17a5cea6d3fb095b75fd94f36f6a902dd6702": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289888a870b0e77521b1121874499e934714af32f8b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f7f7e96799de9750a394f3d6310eedd09c31fb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d420c638c444c31f43e678d1f1565f1c40c3d2319de8096fd24ecde1be227ff24": "0xb78c8f3b56f2e4264792922e064afb51b37c4e58", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5148daaa7a229e9885636f16d4f6aef8db7e080000": "0x81d2a92dd5f2b6ffe5fec1e40595cfa0dd456ea74935fffab3e5dbcb2b14135200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970001e57b2199d16ae1aa1e5f4d24a83349ff6939": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700367f2a3dc2af6089b3d5c929f997655d7a9151": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c4363a5d67bed3671cecdb593609745882e913": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397461df0f49a1b5b38318c1cd425840986e15176f2": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900539df92b2c2e52a873c02479906672608fe563": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5117cfd54f660b517cc98cd3adb98d0176a5040000": "0x501bb225e3c5794bc5c96942847648613c63625ff3593b3901e903ba83c7d95700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee009a16375c624ebf875040a1c0c724667ee60e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005703ac09115ef8422705c86a94025182b20fb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339782e2b7d189a81a251eaa51ac31871f8c4b91dff4": "0x00a2c66bc03201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397185d5cd827f66703890387d348a796cc8538d08e": "0x0040c1bda4a901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7ce447361509f0575a6a206888ea2afd88557e8": "0x008cc15e273d0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890012f59b4690aaaac5d4631d56f30e00383eb29c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890001376e9c388b5995e3a115f7d2813dacd35078": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c794e65e0fc0135082244e2105900e3177cfc5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518de6e8e8f3aea4024df0d297fe95eb32cd050000": "0x88bc66a4d38128c8dd29d60a4d333824baa33209272321aa212489ea2d19105a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b67a2bfea6579b273cfa427637adf9fab925f68a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000e8ad6492f516c942bef6561251b531fd7b10c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289960cbcac0d20353c14c5a4392af3b80b3f962eef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897cb45acd0b8a871f396b319e5549bcd36a047533": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8f9a7246af6650f96401dbbee0c30e5f913cf54": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752e0bb68c4b18ad158ac8e9489378e5e855224f8": "0x00e24758b00900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f72fce633c6ff04e9d82d01a79cf7c4e3a54eecb": "0x00e09358064402000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcdb795c73962290ed72e9e9e250f39f331fa6e0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a5e5e5f1350b92dd9bedcb9b840032fc728dac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fbce25b75b05e04b9f22e60721aaea19e87e92": "0x003c34d961c502000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289540f856a7ebd537891067c98e61d70d235257e5d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce8a0915d27d4d3295e8b67c593d3423f371ce7d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062e7f8465aaec10bc526bf5bf01443b0e450e7": "0x00b267417fa700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900556f5ccd2cd28ee1f82cb391636d9961cfb1bf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978300b3ecdbea1e3dd2d028f566ecd7d04627a3ee": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890312116a083d27cfbaf9441b576f3ea63d968967": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db640c8c456f0757ff52f051ffb503c6611e8d7c24c520d9be406c9a735878945": "0x37977eaf6917d93704a3283bfe16d87aa5eb0717", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514baf2ed54403920027e405200f591e2494050000": "0x84769386be549c14827cecb1b29051855410397dc53ac9a6c38917878db7057700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514717206d3c225ec0b0e41d3f769bd7c283080000": "0x0ad57cf7ec770f7d356b96e7b5abed7e10fed2c60c21cd43a558ccd33ceed9cd00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aeb41235f3375e4a0c3006882b6ae446a4818753": "0x007a2bf7de5731000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ff7e32cfd40f06e0d9f60f60eac6bef113f41": "0x00a843143e4d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d56d15a35cf075ed48f31269e6431d2891da8c1305cb520bfbfb60493e9ef026e": "0x005e42814cdf3db319923b257a0e0a48e3ee5350", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f1d5ca8c8cf354b8d5ee91f6ed61f20059ba4beb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d18857b6eb8e9baf2c7b1914ffb45ae7c73d017d0d0bfd0ed7155a7c8f6c0511b": "0x762a1795292a3d9355aeea85e4b174e9bd8cc3cd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001ed2471e25c381b3c24895fceb399dbb4f319d": "0x00ca752c232500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aca3500b68da8eb37f45381fa3a0c7f815e8f5a7": "0x00f4989f331800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d083cc8444e66f2751a2d725275690c48a2ecef4f5bc519738cec602aa5dfe451": "0x27fad8fa4f7ab0d981f0a5635cce2895f786e59a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd22ff2d97e949911807c2f142d609ae40522cea": "0x000a78cce22300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c885efcdc3b5c736b0407b0e402b5b842c81367f": "0x00828a13987702000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899505ea825ca9bc29d21446a6584c6771b21f193c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513feb73161582f3bf7a52fbe4c71aa0a1de050000": "0x3223bf5cc2f5be39a507a92ace7e924cc07bfb43bcb61aeb55e09fb63affd53f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430088f9993ebf41b1009dc7b17a4a01ae47bbfbc5": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002e2b254a4e3877c6ffc42106cb4f519e6ac27a": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f656b95dd71863355bd5aefb313a06590eb921a": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009bdf8ded35fd7e2b8f649a808323978569e05a": "0x0068520ec50d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd6c0fcf38a991d9c95d2e379f4f234807bcbeba": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c14ce5e6afa3158feb921d32d89d236e26b9485bcb995402108495a7574f547": "0xbeb910ae193dc54411747ac236e67d221ff3f1d7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931d04a32f22022ec66afe6c2351db768ed32b873": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d2c56fc0046932d4aa37cfecef3a47d143722518": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000bc706ebecb19e4c334a8e8e9becef6e58a2f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928939db9ac590a3fc2ef947f0deb09b400f891769c3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b26c71b5246b3d118411f74cfdaaefcfc07645f1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514eaafeffe022fac614c984da7c4a4dd931070000": "0xf1c7807add4fbf549db8d37e8279efac27bd1478a333e4c9bc10c80cdafc9e9000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df6cee83fe99a1a53a1296c5a478df2a8e62a00db5f412735d925c080dc588515": "0xcc674a3c614e1c49a0389b3797ca27f30a5dc78d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec50c43867523234d23f0238a29f3e0df59e7b4f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bd8c7d349edac2387a40066aa52cffbf41090000": "0x5a0669f20ddc7e3feea1e2df54372a8776fc42e4b1997f3f95fac2a962f3367b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c43bb13f32b49aa921797bd8a391866cfd3ac6d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d245558c69f4ef719bafc87b4f554cb0b73499b32582f54846a05f7effda32c2b": "0xea53530092af66d4706fb53e7891d2b1ef730b31", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06350b5634bf72fbb66298b193fce9a5acbfb564712cc3594a39dc051a039850": "0x8f656b95dd71863355bd5aefb313a06590eb921a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998d13c1d3fb4621065d79a06a17a0621daa314ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a21429126894675cf6e76bdee44a18c6122c0ca": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dbb8868fa368ec46f1961ddb5ad9f01cb770424b": "0x000aa1d3ec1f01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d0a1bc938a1fb74eec812b7d0c4d3e6328010000": "0xe827d83f5b7fa514c856ca4157b894148a5a2d7e05265b449422f88213d9ea4f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700af0c8544bbbe405642a32b0aa5758fe489e37b": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebb3b5365f80f437d4be00fffaedec844b24ce14": "0x0066c2f4a31b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a8666af2e42ebaae251383d5d96bfe80e41b4e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c1c3992737f0ed1cb650835f6ae4d44763cccd0": "0x0010f5d92d5c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d5c3f6832e88fd28cf40a1f25684b7ff99a66a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0e0b97949687e5cdc9ca843c0428bd0437e176d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289546d80fbdadde160e5d4a3482bbdbf310163192c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68b849aada5aea5d27bb322b8dff4b540cdd4e52d9c32aae3db8a6a9afb43d52": "0x93c419191cbbef6717b1992a1f854ab2d90aa7ba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975937c41f80fc6111e6703873f89270c60fe559a0": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967e3653e795000b68a3b2f763f628483e21c96bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e3110f4e11c5b4efd2ea579663b23907c98e13f9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb74b61eb261cd52af172df59ef39a45fe060000": "0x2cc16da9d1f7271475075aa8eb5c6667714426b8c41dbecf92bdedfa462b716300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890081ba2106e5e4a6ca54e9dab7ce93d6f95c095b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890059314f3708129bba2e5370209f0e54da9bd354": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289932b0f9fcf70fbf60f6ac1b4db3f74593d1969be": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b01461ad0d7176bfc2f367039bacee6a31050000": "0x58cbb85bc4457b36fe8a2b28cfa63f0dd44bb00745db796b84e2699c4a9a007100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c5d2111b3445cbf18bfa5709ddca8d4757c8155": "0x0092e5b6521500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928ddb52172f1e4b268415b84edc45316bea434d5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac0f75d0d139301dd8d666526b02234220b14a": "0x002484462f7d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510c5645e0f29a4278d896359c0979629fa9040000": "0x20e0a7b8b478d267fed40ccc4a53315eb9dda9e258c6cd12befa4ce2039b707f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ae92580ffe442350bfefc4c9e4fd5b137a0fc9": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e499dde041fdfd3cf0251a08b7ba8582088870": "0x007e33be071500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ff82054932bb21f78c58582390d34e16a479294": "0x003084f17c4b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea54d42ec8594576300d7c3feb8534448a040000": "0x8e5c313c4964fbbf1876c174b86f7d030ae001f67249ef7122bafc679cd07e1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dc26b2ce9c7de60d60c165f8c70ba7f8b08286aa": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970887159799951fa038ecd71dd8335d2c19d14d29": "0x003a970f2d5f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397deee4f9f7c3af2f271f030229d3af254f2bdb0c9": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289328e1f8f95476bc8e2df5911cdb36d311c57aa06": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930d6d9ce640c97def75838cde7f753bf7f161403": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e596919783fa9da0f9a813b029fb5f3473440b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12d777258efa6c17819186568ee99a5bafd6d2ab4f707ebe15d843756ef4c077": "0xb7687a5a3e7b49522705833bf7d5baf18aabdd2d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289275b51c1557dec3d252df5984bd2ce9e1f7429ad": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc12728eae828a7eb29d712c04ae95e3dfeaf32e": "0x001230d9ff0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd6f274e764d8329ffc4d8c1178cb04f473819ce3c0e420e03aa77d679a43d03c": "0x8588ebee2efaafca8642783fe8bede2d9857fd68", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c490375c379dbf184757b100561207f8ab1938e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894fe992e566f8a28248acc4cb401b7ffd7df959b0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970db44731b34934498c4853216a0e08c8d05fcb3e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d102ecd1c98119bb49b5fdcdde4160e597892cb30aa1aa3a40dafe3717e59a74a": "0xee1301ee318ac92f4ae4254263da4325640a97a2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebedde101b40b694e2e90043403c1aeaf6e7140e": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511e3ea618901e9f415c64d2128fb5a4defc060000": "0x0673ad71d66accc24a6f3635b26852ea24bbe2762d966f4335aafb505920d75e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f8d9661e088fb7fd2de78aec0393b660b7040000": "0xfa68c92bfdbd08a08d4cf5995379e28d3ac042b814a7bb2a1e2095d5e27cec7b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5185b948501521d150005d4a66568283b695050000": "0x7a4f4bd2ebfde2b52565fcf21498d1fed82347dbe23c16cc499fa3e19401655800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a44cea029eaca82db52bbafc8ad32db502080000": "0x204afa2bbb11abce235187463313f068329f58a7a8fe132cf04400fb3cdc092b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b043ebcca29d4a6c8ba1dfdb75fedad3dac2a5f6": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ebe4fd701cce5d001c481f5662d1e941371c49f2": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006860119dc98195115d8bfd4011eea31214f028": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516a3c58d1016ae874d5dc50d8a008be2a77040000": "0x3a152213a76fcf28db0993669126eb2a16f9ce070778de9d5f3784ac2cac341200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289139369f83fcbb405f405796c3f2589bf9a9a882d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289121231fa85c0453947732b1e902dfafa04c71563": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775f555adde5385aa0b852e0c551f3aa47715f593": "0x003ab9a30d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009840b0386d229b17d0c230dc03fe8a77a99b2e": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289144da3f7abbb9a22238f2258d13d238a9149dbb4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d102007852fb6304637ad44457b9bf42be382b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df27ed3676d7baa6d7504e8e5714bc39eca954e71b466e5715e034f9152f59671": "0x1ab980e9f3b036a21ad11568aa020f6ffb407067", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243eec5230343cb5336cd6e3a8cb29e5e267d6d5b21": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c50ea337609096cd614dc0752ed130e0de08757": "0x0030b795620700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005b2192a3fc9f380351b5931adffd50a3614731": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902351fba2d7d4e88f690bad6feb6f93d0dff6906": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894cb26d4abc32e99e107f1cfed2b07bbadd425b79": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895e9ceb0d90f70a8911ee0c3b11f80a500767f21e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895eeaeef816f1015b042f74c42d8d3ee153c2cfde": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fe383db1da47144fb59082c47d97ffb1848d13": "0x00883676c80200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513c8914b059f9bf86506c5aa98938e0c448010000": "0xf264f0bf05eb6609b213f83c4546f0f196f62e0917699e517903e6ae7be5735e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741f2f7387969ac7c06fa49a29fc479c22a9ec8e6": "0x004e23271ac505000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f73226e1933cfd506c16b06b172e564bece222d7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f619a00f641e82037048c9d0cd20f9b64c664fc0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddecf71909282816105360e12c52694c8e39f30f82532be18b3e32e3e435dbf08": "0x03fcec3a20f276aac1f7967a461301d75180371a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977603bf4ae686fae678f2b2591a3487dc68599b5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbefddfbfcbd24527d9318e17879559ff9ccfd74181722e017ff693ec92aa1042": "0x27d8519774c77bab85031463f236c702c7ee8bd7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763c4681b602b2f61bbb65ddfdb7a3a339e527109": "0x004072e62d2d07000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928947e90830e0665a6935ef79a72a27db6c23e00228": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513d457f87092a1efeda070d2e2daabfe4c2050000": "0x729fab2b0a01ff5d67532d4632d22c6e4889a076f88a57dea33a675381cf7b3800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717d6baf59972f76f96eded80604af2a5820fcbc9": "0x000cf723526800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b20a9355f834dc352aad5ab9bb4edef1d45a37ed": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c834fd44543334caa34c024436112b2f2d6721": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7438a2461c64335a5c736b31be6a2506be76d10": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d59dac3bcb670d0ed0c737ab8f2560ce0e564e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ce6c2909b2bbe2f6a5bb8df2f37568668d22663": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009580bb9bb318dac9a5b0b3607491c858c45aed": "0x006e358c46ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04f320fad7173da9ae78391b0d5322fef4fea16922a97a699fdcd83dc5ad9c49": "0x21ef1af339cb2c91e55acbb82863552803e1fc55", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514086dbe3c2a278309a4f5cef671519d7b8040000": "0xdad463ee00bc9a0e288a87bf7f80ba96ae2bd082d49beeb7467c40eaf153f00d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000989f1b22b2b2ce40d680a388f9033bc8fa704": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5d47ed8c07fe4d9a143fddf967ca8d66562beb3": "0x00e67bd81d1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a2484979a9f60423218a17095a44c4db2f17f2db386017faa64bd92724a1e7d": "0xaf7c56140a7017ea7fa9fccae6341dcf50ba0556", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74e407185cbb9a15657307dd6f0f589b1a275cbdc4f31578ce7abae1c8470e37": "0x49818d5fe1387b70b4b7bf57a64f7c86bbd15ae2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a3437295823c66aa4e245297ed78ef52fa6c71": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719527a176a9634ef8b83e25bc0fdd90533e0a966": "0x00c8bab0cf2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5131eb0541f34fc4e805e66da5f7e77c5616070000": "0x6e7bb138941680a1cfbe21e2cd8452babb9cb2648b3593379afeca1a8785892400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973955e672f3306fd39545edb3d7040cf8de2f9180": "0x00deb7eff01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0198e1f457b40b590e532237ed88e5ee52dc8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705b30ed53364a95a0ac56b214077a85bd5992772": "0x00001c0611c813000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437b9be8a12f0bb04e290a6727e57dd34757b776d6": "0x00a0d885573416000000000000000000663fee2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970035b3ad14d644a13c32441d55dd13f846aa76c3": "0x005c3dd1035f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3b20eee7cd3801a6408ff4c6f73a75556da2a1d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4468c8fd916e17f85b6e76e320e631712eb8312": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432b98fadb1f1143a50c58954b92c83800d2f23c1d": "0x0060adfb90c801000000000000000000a2cde20200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dc0fbb0d3eb93773ccc744fe13c0beb2820a9e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289caff66193c177e60ef230f8c45a5867ca46f578d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ab9b7cd7311c80902b85d9536531efacf92085": "0x00c48d929a3500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243328752def488a9c3aa9e89edfb56cd7b4b56f7c0": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b300a2c7b89455cd5f3b4d3a998afd356165607": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe7f59743f2e3b19178dd8d7eebdd926f541752e408ea28d769f5897239b255b": "0x7967c0ec1b8b1bb821c84551ca7c9fd49c720a9d", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824355479b40703db085c9abeee0d45fef0c61b0098d": "0x0080dd62b221020000000000000000002208730300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e0252904378f658092e394f8e8a066e29a060000": "0xe679bd5e3d1d3bf6e8a515cca2afc8e5bf5d25aeeda6851134357d1c69070b2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee0a93db77fb6741be11c337e2edfe00233b0c19": "0x0084449cfc2f00000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3dcce592e72f9de4f14f72c699145950c7f2889": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c25f885b631247a34d1429b3f43d7bb2639a7e3b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f3375b56279046eeac29f9f625ac11cb3080000": "0x109a7113c1d9b145d8af5be42af278d4eb46caaed127c698070b1302fcc4c80c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e33c5c1f3a42e74eb61862584b27454a9a44a06": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a75b7cd418b3b3ee94b151aeab4947e7fc890fc5": "0x00e077afb64b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b48eaf22121c5090df38caa3150be0872b9de6ce": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890067fe87b5fbabca1cbf1971d25f26162cb2d060": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c335498511b633e6c7c582d837735dc1ed628f8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6adaad6649b233917f6b7c5f5ab20c229b2b2520fd85ea21cbc2510eb5c40a52": "0x2b98fadb1f1143a50c58954b92c83800d2f23c1d", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824308c204dc28bcd0c991b903bfed4eb5309d1053ee": "0x00205a4ea6ea0000000000000000000023b47b0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898919f90098e7976078c2ca828b6af4fdc3ab9052": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006cb4d719cad2ba7ac9cae5520378b76fcbaf1a": "0x005037a4f80800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5131ce5ae5cb00c612c1df1a2313c6edb01d080000": "0xc692c0ca48ca508dfe638774741a1f049f03f7799fffcf84c804d7f2a264510800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3fe95f3b54dcb987f29f3de7c979a88e9a8ab6a45c47f0c32f2cf14fc1d273f0": "0xa7917ca8ca77855eb657fb414a3736204e4e3cca", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5179a4338e696809f2798d4bca0c16280455040000": "0xeac2b6fb8a0391cdc0b02ebf3cb87a81e4bea950d63b3ccc5b13cbbbac39226100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51df6f1571bb90aee106760aa25c81121afa040000": "0xb6ce2b0af9df0b5485dac8eacce7f147efd70bb39f181a67e5f049f8ae6f4f2700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289164d92a6126ebf0f354fa098e173f1a50277fdd2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009840b0386d229b17d0c230dc03fe8a77a99b2e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891eb95275df958625d6ee8a7da99eea9fff12127f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a1f26b375e08d87252b12ede342a0f5062802fb2f5aa45f1fd87e50ce686455": "0x0002ec0da4bfd7e9b5cfdcef93f8a02d4b271aba", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c59026a5b96292f0ef483d5604bf90dd067ab2e442adc25767091806dde5775": "0x0085a7ee9578243c26fa140b97bf771178297a3b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dec7861534b86faa8f8ae36a561fae5277da4709": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289206c99512d5e7bbfb0d430813e23b7b9dc1b41be": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7d341dec7a554c2f7117527a1514f34ead904b6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7ae802beabf67df0788ff71dbe81741b307e187423abc0a709d73f2997a85226": "0x10fa75506994a9d1a03fb01abb31135d662a7086", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a1a27dc484f0411fa9787e137d350b249a0cd8c6": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51239f525c108b56a9e2baf098dc7fd74915070000": "0x60dab79d7d7d4e55174c0e747736025fb57423e997131daffb65509d9814ef1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970002ec0da4bfd7e9b5cfdcef93f8a02d4b271aba": "0x002e79c7b73c01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513e6aea807d63a67fb0f6c7d0b65ce496c6070000": "0xcc09076d5cbf29fd82ed31be066e2909af4f7af62d3b34007383e60211d4c10000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c186dbc2c878448f2fb2969967abcd307d98c247": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f619a00f641e82037048c9d0cd20f9b64c664fc0": "0x0090dd1e04f100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c6f2faaa16c7641c1adff6944452976ca1504976": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700290671c99ac34bc7c8254033de25a938d4fafb": "0x00e23c551e1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d0380d16422278eaf980fcb91502a4cfd23d46": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942d75f75d1aaf59304642bd7530e5de5a42d8fba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928973a4bf5507f57385118846444b38bc10eedb7fa7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ac3cd2c26629ff98575e00f181f83a9fe5e801988868fc22ab8d911c7a56d56": "0xa22438f8c8ba4f08a9a3c857b2687cc1a890ee30", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890fdf6c80ed447a4b0692af53a1acbb7df7bf983d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928968f67e0a9c4a93ea99f820c1b4fb86dad5a27883": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397523a99d1767f000e1e77ee5a4fe0bc6cf264a1b1": "0x00b0631b220301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978cc3793d423ccb41bf53b2659d49a6c42ca3fdf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c638efea44e5b7898f33a7ac1773f4b7deb3631": "0x00c0e6de6e9c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51406ea1eecd2aaf189c28a4f5e66619288e040000": "0xd834724ac202075b2125e21c88829469c79745d3615dad5ecfbc96c2b651ad1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920275e007f9678e47a9f3c52ea85d68c24217a65": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897851079f455f5dae12a4f668b983908dbf98e56e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002fa17657a9c0e03b1b0c3d833b200a013dff47": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900adae7292b68d8d92ded17f5c4f606bb90f6f5c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c673e696e12296fd3f52e0f6e354039467b518": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d8bd56a9cb0b6a854305830f3f8269a9e5e705": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4c4dc1fb222bae0e04fd8cd23f78b37bb39c17d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007fd348bf472eaaf68e58f652c082b86813bdca": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397116812f3295d2754012b63805ca7f89226115950": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3297a3b21fe2d3c8a89bfaabaa0f2e059a3d94577a04d961a557c2d25a3e5736": "0x005b75905e8b686acbe0365d46ba0ac2a70b3160", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f813b5cf2750a59a45f3c5e50397d6ac02b64f9": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b20a9355f834dc352aad5ab9bb4edef1d45a37ed": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda3e9e776eb3b7e775e51e6e91ce0bbc70c15bb47a87c639a3a37b64db46a046": "0xa7455f18d8399830baad97632cda0a9cc2008f66", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700878eea2b606244d21b41565ebdc18bc324d38e": "0x0090f5e41d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f6550e2abcd33b14be0768e4fa62c66fcbf665f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433e386f707569dfdea7210b53bf3e03f6d24ee073": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dc59612f191c66e69dc23f3ab00b945593836e9": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728ddb52172f1e4b268415b84edc45316bea434d5": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c4a8da8157683e753d28767849df4e6d216c079": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a42264114e13a067ac2baca439e9ec5df20c8819": "0x00c029f73d540500000000000000000056949f0800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511897839ee353b541f7442b09cbcabac458060000": "0xe218d439c40293656ad41f042840106973655483a4e3481535b798cebfc46d5200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46847f68e28bd9107279ca1a70ef05f942036e3216d4a47a88361e563b2a5920": "0x007ed64ac2fe49e1bcb932151e72de0ca813ecf8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ee3a5ae8aa8909d1759cd909d15a646ba94a025": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b4bfe7e67030cd1da33c01c06256038d4713a5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750633256a5f5a0a59ebb7c37a29efb44f0c21e8c": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008792aa9191cb0bf670babdaab314c232435152": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001e0d294383d5b4136476648acc8d04a6461ae3": "0x00a4d3b34b1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397283adfa795ede051c814731721c14b6c1dc3e2cf": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc614406d9612fa12c9384213e4e4203287d777a602a84c931240fd8c2aa3753": "0xe6c6c739e406cf3ccb1c666d24cfd200585faafe", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e11401fdf86813483585117c55a6a912ab954917e64d3e70efeb25e18901c5e": "0xc68b2706d13f729df4eb2ab8edf4f2d59e037803", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007ad88b72dc1cf54adf012caf81e3db579bf04e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512a9061438c6db60e4ae98c538e3c01fe0a080000": "0x5ca2f86b5a4cc1d1f4c1c043cebda2d4ecb3f3d9057d9948cf2509dc6766315900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705c94ef9192ca1b80c427a749771cde2e0f7dc53": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715510ab37ed950371ec9ddd5635fb5d1419ba3f9": "0x00fc7e05c71200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c84bb367c7efdfa0490412a91a1e4ac7a613510d": "0x006aedf4123200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51009404c9922aa254ae3e28cda4d8d01efb050000": "0x7c3c0e9543220809e9207ece95c504006574f50c42361068e846dc51f7e44c7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b4f630ce350efe5e1171e7310bfb519b33cbdb": "0x00d815f9b05805000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e51231daa306acf16eac34a864564ca36b262a1f": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c45559a7a79bd667e9dcbd6dfdbf09ae8ba497f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c330c1abd1fa488ffce0ddc6527afc4106f122bf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748d28e8123451e65d0b54aaccbf5f13fe4d3a162": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d315959e879d36d314c19ccf6654dce6b7255fb4": "0x00987756112e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511c10b0785fa4cdcde17109e5c60fea4945090000": "0xee0874d09c3b5d554cc991a98bb9e1f7287671660fd542d7796ace33dc7c750200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d94d6b2fffc1abde3f0d4b8098ffcf92d71ef84f2439990b8eb9486c2a0077552": "0x70d394f0974b088f02599badc4b1df6e7fe52d09", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890045fa890802d3a2b2a1c7fb78859017786a9fad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1ddb8c1e2204a92febaa4dc7242590cb74359f1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928963c62d874ed1c6fb31ecf56529892875ac6b467b": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a61258bf9cb93b77da65701e212c4f1653abf9c": "0x00044c60f84101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1347203b8093b7ad0f21f821e7d53f841b25892": "0x004a61a31c5e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005cb064be2ae806ff8a6eeba102978d6b32d625": "0x00204a736c3d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e8ff247832dc7f7d5163f2623869d3dd3c36b56b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d7ff0231086abe3e95ce3773d60a39bf27321ee2": "0x0040c7c59dd20300000000000000000000922f0600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707dc1a136ca9cfa640962ec0a9a8332f99b0bbff": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741a7300cfe3e58c2a2c248b3f55228122961b132": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fc27d391ed66cd60f72ce19ccc99abb67a57ee": "0x00189c2b960200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f7a3bb54858fdc941a3be7418e1026dcfdf65d": "0x000a56a64f7b01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ae272e5e8a78fbc45f5971bbea7442bbd060000": "0x7225bf2a5f6b10dea716b22a85f6f1fe23fb44d555f435e7e8e31d13f825c53600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de204497afb88b9af744c7d7b0cb10516cf0750aba8ef1989cdd0c511b9c15c6e": "0x5cd12fb4761f91f6a2bd4240c73e7d8fc8a3f638", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970036725f3317d37d0b948a2593892bd5c186b98e": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397271b8269e278d8a2ab0113de746c1b1136b320cc": "0x00ea9551ba1f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ad04210ddb16c4b66644eda430918fd5826ca17": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778402f084d2219d4844e5446ce4e67fba23b9d1e": "0x00e6e02b77bc01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002bbfd34859c09b36b907c0bf0f3bd0046709c1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972317fedd4b4af7c3b6fd14cd044a2acc92ff15a0": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd62f37fe5de823d66a120bd90a86e7be43c372a5eb9b487d702a8459203bec10": "0xb7f164ab2ee6bc8581a0d06bfae3fb98e258b265", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4ba1c4ac566a049429432cc11f4724a4e394538": "0x0080525d633f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df032c776601ba298d9b688400db9bcd08ccd6a42cbea068369de450076cdbd56": "0x27efade55131916b2f0a34e313d858bd6a30cf4b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928958ccfa1c26b8a49b83ffc4bd2804fdc5191bc28a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893716046b0394219102f5c2cdfd234312c0cb59a2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6cecea2c48271687c926a72814cfccede993dad2b803ec0d546d2bafa586c11d": "0xbc493b051f40fb47625edb508d1a43509ef0e3a6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397185a7fc4ace368d233e620b2a45935661292bdf2": "0x008cde7f2d6906000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977eb9c6574928e51488595ce200904de622a212ec": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900002f21194993a750972574e2d82ce8c95078a6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e79aa58c609548a02ddfe3e79ee12a11da33e242ecbd879e1dbe389f6ee5a75": "0xfe7c8c647c3574eb9931d1d3f36019b6a6d06e2f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004db71babc8ba9aef9c02bc96ae2c4daa74db15": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289805cbf1fae3e810ed0cece7016848a677cce945b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762a98395a16d0050d55a4c575daf1048bc9cb023": "0x0052007fef2000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915510ab37ed950371ec9ddd5635fb5d1419ba3f9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900abcc8bd0d281984f9234065c889396c7e3244e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289643ee88f0cc3872eb8d2092d43c3220e35427653": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ea0f4b12d694e26a89872bcb86213a8f6ae25c5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee540d3a73580cf5e0ae2d80ac9d98dc27847f5518d62b652a6561d46c16b553": "0x4f9623e0605ed7294195c72779b378b442834633", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967af2e44d9eb9eccddfc05163361f6eb5fd89629": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd2d4d9f76f3919510de38109dd63172b05e86a6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f2d2b848ede60d9480631fe6a365cbc8e304c14": "0x00ec4622388506000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bda832c615d83444efecd879827c588b9b000000": "0x9ee708bbdb68556d834835ba8214cdb27197d54f6d0fb26107006cd5754b495100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f548b1c7499a85e9574fa5845d0308efc39d19bd": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e47494379c1d48ee73454c251a6395fdd4f9eb43": "0x0074efedc60d02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f9d17d432948ac1a523ae7d1a16e18903705f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897eced1aea8a70ed73f12f0550ff58671ec34953a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738db95df5bffa0bd5e39c27866f7d53e04c2f87c": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740f264c803b913ce7769ab4319b371b95a072103": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5137df3f8f85e7b8d1f5059045ed0639db413": "0x00d4e9d4ccdf24000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516dbef88b3fc63341b8a50cb1da35e8fc15080000": "0xa8b44f24437db42008b305e9047895ece47eb7cce3cdeb97bdd2ddf0b4943d5b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51071f29df455dafe18b110682fec311a8a3040000": "0xd43d053efbce28083bf144fd919b8b5338e67f71b349ab9a4dbaa71845a9ca4200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e514819b14bd168c797646db45a4c143390eac318c97c11839ccf819ce24b7f": "0x00d1906f171b3ae82d0c500555143c28d239ca74", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda04a11b64e7fc03f1d79937689c4d5cb4be50e9e459edd9217adcab52c35332": "0x22e90752520af777fbd85cfbdf28b94748e7b871", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002a66b507752653dd0468eac677ce6063b58701": "0x00120a85da7e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979887c59b42a14ad759d1abfdeb258dfd505a01db": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ab35e5fe5354151bccc15e6d219dcd23c2e868": "0x00985db8783319000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c2241b8ad2176aa340dea400bd84fc389091a7511086bbc78fa98a7356e630a": "0x029e46d21436a8e435cec948d8a0a5bca6f19b7e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de07628deaa9c6fbbf2288f879396ff3566871c0dbce85c9e23764d15b810657f": "0x7956952b9ea6540641fd0dfe110f071d45c835d0", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d8b29dd8d38485d5f9324eac3ba03c31a71b47e2": "0x0080e4f642df9f0000000000000000001262b30201000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709fbc09d7da0c050d4fd80db0649b30378cc4839": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513aa40e79fcaa275be98cc69519d63d7051040000": "0x4ab530a569015d1cb75ec21da05e00b943b903b22232d8e2d2c24245b5e3777d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a670d24c5fe23dc467cd47ff9b8b5fb07369dd": "0x00ecdbb3710d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154015586a35d3ddf5f75de868f0d0cf1d3000000": "0x60afeb2a1bd8750a849bc9a851a3bac0d708a882bd4f2c5916ae0b714b4b5f0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e2d8cd482efb93b788cff519bcbf5e25dca333be": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3393e6991ccf120bf7d83e6e53aa6ac8ac5c551": "0x008a8883a42400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890037a6b811ffeb6e072da21179d11b1406371c63": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177cecca906873a1e2deb65a6d2ac17257f040000": "0xce21f3256f9b285def6328b996d6ba21ee6cf192cf6b10364e6540ac9245bb6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ca15a530dca1d29ca3557b90d80e3a05638fdbc": "0x0082377cd53497000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005dcc47544933b9b69fd851d150394c011baa6d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900844b1cb340393be1e3cf1c0a9157c57dfeeb2e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794b05d7a1cfc33b148caedb2b979d603a6532bcd": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf0489ae7bbf3b7321841f3ce9db682a6b0cf612": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa5eb42c2fa202b4df66a36994d41e04bb3af2b5": "0x00825973078100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d026b8bffe70f2a6f11535177e90412025040000": "0xbec6a380acb8489f21891545cfb9b4964bf0f3170c5deddea166cd8f87bf207800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ecacc2f1bf37e9b8278709b785922e52abd83b": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d767c06d934298a9bf8f317aeaf2fd3a6481fb052acad0b9ca6d8dd5dcc103d07": "0x029c5bc3bb8be76487f9b75b5065a6f57ade84a8", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51344f9986e219ea58828e023e0824e23d26010000": "0xe879d14e74c8c5de8dbb00e01fa32b495c0f1fbc66b6b93bc31006f04429395500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b87487eca8ec9080b3c2650e1d3a83bbc07077ae": "0x002caf1a406500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e531bbb0dc3abe3d335edbcf5f479b84c2839c8a": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431bbd9ddc49fd2d67462d0b1919151ec9aa45fc4b": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890019eb2b083a143b40e6bcd7a0d4508467100f22": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899fd1eba5f41419b2887a1e36e4dc22598254864e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e35c529b6d6f7768f868036f065138fe68b57": "0x0092cec9b62701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700106ef113a8cb3c3a233553c4ce69ea14d88524": "0x00244691bdf401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970086163e3bd61e85334868c8b1a2d65d3f244f6f": "0x009c09dd960400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d543d64b162e96ac48944161ce5c2abe57553d0720979cd90030ffcdd97ddb25b": "0xfe740f05146eac00d2b48f2527eef1deac1e1c50", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913d5d590be45f86e1c1297073951ad7abfb746e4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9852f33e7b714fdcb0cc70fd2338923c5ee9c45": "0x0030d15643ec2b010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005703ac09115ef8422705c86a94025182b20fb1": "0x000c7a9e142600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b0885a1a520a11daab59febcba271e67ceda6bd": "0x00a06e48f11100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac0f75d0d139301dd8d666526b02234220b14a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985f0c61774dc981a07fd9fd76f45c336fc87b44a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b289087ee4dd222cb003d5cf9d14e376502c7c7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707bec2143e7052bc6608c012ea585984f8f9b27f": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972deb3f6d44a5bb8154181f32f79988bfee948d49": "0x007e58b8edae01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a64f00b89146c02ee1c879b22dcc661609a6fe3": "0x00c41afa0e9000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900acc0bd13770679812fae76ceaada758781a5ee": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511d6e10236d8e521e043df8f92f743f27f8080000": "0xa29b24398799903fe36cfe2b193e8d0a90643a3abc81105a5356afe30c7e837700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c155940fe345651798e48f29c54a2cd860304734": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f11a5b9d492c53674ebf1694954f19bab83a7c8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51585977bf17aab4537be8d49578c6a9b421070000": "0x50684b3f7255302490563ba108a92765a0c4f0ede17c923bb105ace91b75f30c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d929257d29d18a4c4a2ee7f6b395d0c1eb9cb7685ceac9624437674db49404f0d": "0x55a3df57b7aaec16a162fd5316f35bec082821cf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc17ff2de0b6577aae386e5bfe8ab7695282a52f": "0x00ba6a3f4bb60d000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf79ded61f78515c23a76e625039bedd77c50aaa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002fa17657a9c0e03b1b0c3d833b200a013dff47": "0x001ad45b8f9900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dece71fba2046bf700da154b046b97359c83d0e14f81b53e33161e30593571a7a": "0x006e6907ba032a02644f7289d5a2e5b6f3e41a49", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d023f1505e3e54e2925d67915d720d12db1a32bcc04218ad713d75f5b543cbc52": "0x67c5eb8059d9dbb1319f71dbe45952871e59d845", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce7afec36eceb2f4f7ce11d6165425203098d1b0d935e9dbe7b7ce8ee8faf74e": "0x6b80b7d073b3ed63690c0962d061dbd88cef4f64", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0673ad71d66accc24a6f3635b26852ea24bbe2762d966f4335aafb505920d75e": "0xb8577dadcf48e02e17c649edf5185844dd2df05c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397497acc237dab7e7f944a8b1acdf9f56288bddf13": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289034e104e2767228cc99fb3aa5af22db30c428b12": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994cbc73d485035a0ab712484144dde3352d6cf60": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902308e5635b9df891a27b2f837d88b8dbaf01042": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514bd3bb142bea719a94ed9ce35f626a4bb5050000": "0x247bf0e53c7df2d529571a0f30b45813cd97fcd008f8d20fb42b44a0cd5f1c7700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bc20d69d0a7b480858550141e5789a5e4d090000": "0x761c14101d6d4d268b7d8fe9df7b1411fff2e3c1248cf72b1fae155214b8d35d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfdb612d1816c094e2d7bd3d957b76444c172c761fdf19df2f31d63917926e34e": "0x577acb95cb312b867f08b214f421a52497597688", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700099a01d4d41e7df0f2f08687d2edbf7884d99c": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970aa431c58dac3b6f8cc07877c817165572ac383c": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b5f703d39c4328cb7e87a6d73818c9dc2e4dc6f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8f8068f55fb15342508809c3b2f6606aca7a650": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a605250d5a59894de282fde4fe4c46312b9ad3962438017b6d896a3e93e0d72": "0xcad1acfa9151d7eae13f06ea4d90a0024cf37301", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db3e6c17ba16170624265646fe4aa82d140d20783c65972a712de76e07a595529": "0x54f5873787daa1ddc97272e9f7fce534015f4d19", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397940650c5f5f78618c938c182d89b0687579a99c9": "0x00e0d10d78cc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001e14757da7169f07fe225c2afad22e69eb93cb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001d4db20608af2ddf38dae3c22255f5a6509cd9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701e19120eaaaf5cd7514f028d5ee7993be7fbe6d": "0x00743ba40b0000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195028e95e42348384df6772616e808e59368700ea89e2bf8922cc9e4b86d6651d1c689a0d57813f9768dbaadecf71": "0xe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967c5eb8059d9dbb1319f71dbe45952871e59d845": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970024d44f11a321a70888283808c81c454b156546": "0x00c0a31bf09801000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db023d129d9a0cb9490d097dbd3ca947d4830d3a6d7e0fa9975ff2789d9d97352": "0x5ad04210ddb16c4b66644eda430918fd5826ca17", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5110b98e3b8e802f67687ef6a6462443e744050000": "0xf65227f172a1e2e0ccf5238ba986c3ebe035b77f062ef04b43d88614cbc0750200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007ed64ac2fe49e1bcb932151e72de0ca813ecf8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289392e05b27079b3502ef2937e0af15aac14e8d8e6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000c6e132057a388a9ef1bf73a0e6b686dad276a": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339779af82bbb0552f8ad0192f4a7638dfbe8be00908": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d9f222b9f83e22e15702b798ff9b4d9d30b117": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130fe3a48485a1c74dc51b2567c0a56592a040000": "0xd25b2aa840158dd94bb9a19e85a798324e2a0e4748eac08ded47a5fe2814ba2800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519af718dc448e52bfcbb2e8d8eb7b8de9db040000": "0xecbcba92701cdf5ef12ba295931dcc4867f816621fe32a9871ec2a72247e356900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436851cab6bfadfa47246dd71528c4d519aeb85fd4": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de467841a086f53e1b6dd67a93cc116d062ba000f884f2e49546a7e8f5552412e": "0x00bfe8f085ce6b73c1e59c3eae993e73125180ae", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003be22889aedf2d4ddab4756263f82d6aa52ed2": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fb4981d33258835ed1de86668344ee3f08c626d": "0x00da49aa61b26d000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cf211b9f0fb04dfa9f7717ac2d614226bd1873": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db854d52707f6ed71c182597e415b55532a3a49bc0a20075f1a8f693b25e69761": "0xbe2fde5ea1a064e4b3708f35c269ac5e06c3eb7b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928953359144f93b2a061fce84895acefab5b537a055": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c0d87bad01936885224edbb57160500b135fa1aa87aaf55de4334b3e10e5336": "0x1c5d2111b3445cbf18bfa5709ddca8d4757c8155", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970091da397a6675117a811b82cab27508d75d078b": "0x00a234c7d60300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5128210239547ef1b1a87a0b1c87bd80bc1e000000": "0x669dd77d915c5c24e5dc787de28d5f0016e3af9013ce52be7ded1bd0a4d3845d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c1c3992737f0ed1cb650835f6ae4d44763cccd0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900adefc329ef84f5ab49315271912a1ca57cc18c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927a56b2c1723942b8722a456af024ebdca0580b5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897886c5f36d2d74ddae70a9125b9f375fbf614cd7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b40d5c17aab371a6ed5ac622ea232b590f2a31b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74958c765a261f7746221a02d4616939d27a21837dbf876c79446f13711e7b05": "0xa003fc1e731965c0e08ccc93868cddae6895d8e0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc0a73abf38de6f332b9dca8778add43e53bf4ad": "0x005acbffb90c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928993c419191cbbef6717b1992a1f854ab2d90aa7ba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4895ea497de505d9c6e2adcc2e036d1d567d088": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4a865acc76e7c89557365725832e3ba3ccaabadafdd5f1a668ff74243823c78": "0x970a3182ec4dbe8115a001c5abf6f5383cfd6c6c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f9e910a0736b49e13dc9c5d575af7dc0943c0e2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e89e08763debfe1abb6bae24d4bc21c91150dc79": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cf13b4933a43a2484b5ac0594ffa5942bb030000": "0xfe578ba506f1c6f5d82d2cc86cef3e6b7447b24c2b9e82891f7f454a55dcc21600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517580b0f9c5222074d91fd90d066ddb1214070000": "0xe84e22cbed34955f4428ec758aeeecd33185648ab8c187f579cdccb935cacf4400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b71d05cf5cdf7a9b15b20b9aab5e91332c271c96": "0x007ae857fb8000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5104de76198905f1249d6f26c7922df7793a040000": "0x06301860f2816ef4da65a86597de885e9071806a79d273815b4ceacb98247c4300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797d9c5ee5dd7eeb360eaa1cf37252154ca145e2b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000ce94f81d1f81401712a57f615bfd9b139a657": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc03c8f4f7484323459b2b4910f2f67e59c8d0dd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397905aa2247bfd6b8c4850d59b83cb6a43007b2ad8": "0x002c79ae7efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad5077d22fd0309130fc1a1ce0e655ce4de9513a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4487a0a91f3c75bb9631fe6160690d9149ed853": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8eacc9d19f41e050e02e99f34a704b7afcd65c7886bcd79d6c888440e5ba71b": "0xb71d05cf5cdf7a9b15b20b9aab5e91332c271c96", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea989e5de8381aadf03a456ee925107e6145ff1f649ae0576eb763f339314007": "0x6b84b4c46babd3748c1c73bc408f6999238d00a1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397449b5b91b10523f024b6d9101afad2f3cfe7c8ea": "0x00901ec4bc1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb70a267c49250f5c85f0c4008046cde3df51ec6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa6bec1c59118bb967eacc2d3f52b46779d20a6301fbed69d536e505caf75919": "0xb3c2a4ce7ce57a74371b7e3dae8f3393229c2aac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766b9dfaea3ddef53b98da82a224f70842c817703": "0x00a4289f320700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dd2fd84c6a67d15d0eac21e08e00c3d47c010000": "0xf4015230238cad5d18740a481674824e976409255571cdd91c0ba9a439b7544a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397557e9b0f30b4e4d1738c4288d7a69ed8e79a7036": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144760584f68b3fea3098bcd3327c669c10060000": "0x2abe942feac803c6d77291161d840e67db6fb19fcbd45364446358d25c3fd11500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f46a575607dc5b276eb6f5bb2c7abb8ec75fb648": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006c1983fccaf096caaee155ce27a6bcafe640bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890077f609a73630a90fdd05e6edb7ab0c99bf71f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289129bce7b810124fa5745667a17b69a5c3eb5ac4d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975f555adde5385aa0b852e0c551f3aa47715f593": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c8f8f563c3e6a9fbb039fc3e20b53591796d745": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ccb2545aaf81d791232b9e111f4acf0a182547f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c662747812327628780f26e0aa80149f4bf26ea3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da384f18b8a6e83d45afa4731424f1bd08317d10": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d4b9143dddb89e914b180b3cd9e55bcd74f7c9a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717ce04ca9524aad7df1a14d591576f0a7cfb8565": "0x00c4c38b94ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896189e56073fb6102fd6c0fd5f0d1547c4f3fe350": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008d3af90dba667b290dc64a97f2711ed3a7039f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000f7b173834095ef9a8050828649ac394046818": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517260f8d75cf2e3d34a68a64f397322ed3a060000": "0x0ea61ed6dafeca43601645e1cc6842daa7ec0c54795269e30df0c03f819ee26500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8cb6953945a47bf445e342ff346b73496519646383bafdf669462c5ed30f500": "0x3024413123731ac0ce07c13e9511c0bb76a228d9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890031aa2156f558895016433e6299dec2a4505d5b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0042d0cde6e173a7beb9c72315b9efb8ace76c323ce8644fceaa8c2d7a18dd3a": "0x67303886cd4d268eaa3a6cd8de51413da1a72dcf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a78aa44b5660cc42e0941782a278c510f17cfe7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891114c8fc7287c7b9eaca65be89d82d85288a891a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51daa15a76d84d95cb61adfc8bf8b8ffb80c000000": "0x6ed4e490d482667ac41cfce61cb6595a36e7b70cc16316f305fe5c590c89275600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009151601c379b0c211e12bb1342e183857126af": "0x00aea986460800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896cf10be9868455941c4cc1f1d29b741ae0629cae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003ec3f13edfbe650fc1a703298e66caeba93476": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087066f0dbebe06b184ad03aaac64f28b6299cc": "0x007c16070d0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6110e8081a10caefd8ed1b95db4621085b55807": "0x009e00db9e6900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f6157016fcc42a5c2219fd80b69679bc92050000": "0x0a34456aec68d1fc7036ef0616ffcd7514d63cd1d9433c0f55b372dd469c881100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289adffeef501353d90db6612ed584b1438daf02c4d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752d508678aa5eec68ec5faf8f17abdabf9ded9e1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289592f17165cfaa5397984f7306155d330fcbad444": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c89b9819ae522824ade6efe464d30f8e431cf904": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d804886d79ea6b1e21493730ae735f66b0789c48a6cbf3d0c3a6aa5eb7f47fc0b": "0xaf50942a6552333a69f736a00aaf7d5f57e764e1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51adbab0becbc805c94fd7dec982887d97fb060000": "0xea67cbf97f4e26cbd9406118041b54ad460248c3dae2f3d12c2ec8458869780300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dac430b96f24ff9f0e1cbdb725407372e09f09c": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799947c78186a7ebe1e620924ef0bc50721da4e28": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c14f09369aa8e6a7490ce9c54be313e5daafc0c7": "0x000e64d297fe01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e784d624d4e60da998bdd79169edb8beff89d27": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008240239c06fca835d97696c23a9cb68ff4d5e1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4639a86127f62435576d4ea0665cc07584551dc": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003e042a1c0d20f39cbb5664edb923aaf00b8e30": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa32ba6d93b464f5c8b53ef103ea2d296ba373ab17b21dc04f2ee78c7389d23a": "0x00cbbf87e662f48e24c47db88fbe9af500e10d05", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c094df9784e3a409a27f39875a85d47fb9d6d520": "0x00ccd58f146b2f010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f7b34d58d8a6134c268fb8f0174e94ce07874e0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978da0a15786008f543a760701e2021f992e1c1cc5": "0x00f64ec09aff05000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a70be61eaf9073505bae64126b3048b3046edabc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b8c2af3baa7b5b43ee4e082be3fdfa8096020000": "0x6a82d00e3a0a34d054f2f20a66371ea821cea6f3491a3b9ffcda6e151fc37e6800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde8f4427e9db9a35e0c832a3622287db2dcbb58b2190e6a9a697e867f8d53818": "0x00e4992bb3d86f6734af7fd1528a658f8484936b", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e666339d61a192d437f96ad1e40f197d547187c8": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da4a61e58337c41c96a70b2c906fd4ad346f180800caf880af2662e658fc61441": "0xad4551742f5718e0af5d88119974c86efc8b83bb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dedf6aa7debec01f84d3d24b349540814e033ff7cdd6f0c4200657758f1d39e65": "0x1c6e3ee84e63c897962f1f40975bf14f5b10c2af", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4bf46544793204b9ab9b0d276c7416b86378115": "0x002484462f7d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513ecebf473ba03055df0798ebe840ead1b5070000": "0x2ab493bfe56173fd911c6f476d0490cc85c83db9e07f087f0e08ed259664dd0f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b9f9dd488ffb5be830daaa665fe4772ec000000": "0xfaf41a99388f45bc9d18e3b93383221b6f815298acf8b3debf235aa33509de3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eb8e5c2880dab44f41e7ebd008ba6031789932": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c11fa6623df9ce654d9b7e75841cf9156ba99cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891cd62e399651ed8835de4be49eef4b5a3b190489": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899944d6a90b6e313fa8dcd0281d7760ffe4ee0530": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b11f86a69ed65e8e2266d936c55dc66f43da055": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e11df746c5ae8018c863f98ba5e0970529780eda": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d1329c5042de8e73a19012577ff26372d003d1": "0x00b602b4cd0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b2921eadb2ce19c3aa97d1563333060bfc472a": "0x002a952b210300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8bcdee6b78af63f0ce1c8b97bb7199b8172a10b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511428d0852614f3412cb298f46ddf8e7c83070000": "0xaeb543882dc06d0cde4ef60f889fec6349ac00299bfcc2b2e843aea1c7811a3800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d95e4b573c9825824a9274497e5777bc500b68": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f4d910b1ba48ef5349f3cbfb01908c1f42ed63a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e8b9dc427650bb1136f50ab903b00fdee88e946": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58e8986a603cab040fb5e976c61b23021a5f5e7a0206da27c08fbaec24fba755": "0x0076df9bcdb37939908f00f66c2d3d83b98345a0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a4ceceef89a949afa2ce10c73ed5f0d79dfb3c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d3b33791c1ea8922dba88bd800b509e884c33bab": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514ca8cfa3edc3ad4bc4b95a958ecddf7a47060000": "0x5ae32d080487ab45708d505c20edf8ff9f49213a0849b378f2e229bf603e760800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289762a1795292a3d9355aeea85e4b174e9bd8cc3cd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecfb901249099cf545de2da3c3ff6e320fc11765": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8a3132b1815c4668f541f5fc8271ffb50d0ddadb2ecd1f3e7a34d7ca37a3f7e": "0x99d1efb41a2c5ce8d000599595f598e6ae9a8356", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daee72821ca00e62304e4f0d858122a65b87c8df4f0eae224ae064b951d39f610": "0xfbf27816ed8612ba4477bed6e0a554a1a35fb015", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005dd1c702c3fcbca5f63b3ab931b15e03b3c9ed": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511284ae9bb711606c924b85ac95a6ce5d3a010000": "0x3a15620906193ee1e02c754d33d5a2f78aa9568bd87e7c241dd73a6329758f5300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc0293434648638559e1a4cf30e829f17d2695980d5a3374af8d663bd5214905": "0xfe7c59f5c785ddb869662aecdccf932b29e10771", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da232ea049b0cffb350f95dfb094959d721a7c331f0fc8c976539fe521fc80440": "0x002fa17657a9c0e03b1b0c3d833b200a013dff47", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a403e651ec2cd3b6b385dc639f1a90ea01017f7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144d2d6a6a256b7fab2898477ec5111d8a6060000": "0x4a0ec663291c413542dd5919d73f95057ea06907f2937d711fd9f17591c0d25f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704c6f1d15b8b0d5058db45fc13d6193fa78848be": "0x00706f96a68602000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008d4360424c57ea4e11f07b95ee83d591570557": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c2c1ce72623e05242ce3932ded73bdc36898f66": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea1a59c6785f5c391efee3656f5c7e84dd20e07b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397584455c19de7416a22e6832be0c35516948fae82": "0x00dc704a740300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff0447aac61f107abc8872248ceb6a04522f54a3": "0x0078b90cce0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009f7cd88fcaefeb56fc2c00be4f50ca8fd6d0da": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5101963aeae48e97dd3d2c613fb0e3d2bce3010000": "0x822fcb603c9ef8a930dc0cfceb1247f746637c9429bf78c5d97af940c580b42c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783b16a18f7fd937545ce0a72341bcc700bc72c69": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca00f0f34006135ea399fd9f872a904fa4d1f2d76c9c4b681337fc5e2fc1ce2a": "0x07ef90799d9df56a442e958d6bcbb274f2f9bd55", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d57d447ac2a9cde3401bba7abb6f888eb63ed7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062dd565ced1168f0e8f55ccbd353d41a19e144": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16f74c762a21dcc935462cb83092a8dca9762672aa22dd479db60408d7471420": "0x006d3a544384b63158fe841d6c84b27d998ee27a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006307f7e5034af0a325f5eb706ec2a8dda67c09": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004996dcf23cdf72b62191ac358142615192c7c2": "0x00b0b673f88506000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928946a1ee4cb00bd3f064e1a02fd5c187e34bf4c97c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da7b00af38ee8a3de3bf7ddb6c08cb924ba97d72": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c16e288726a587ef85a23c884cdb4232637ddf5e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc67f0f6ffaffdbc60d7994ab226f632dee4a8249c363b33359daff64200fec22": "0x355d599405c853d1be6f1ff027967879d69acafb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f409aba35fd318d2f06b820f80cdda3819f7a545": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720ac64b955ebc54f7287fe3ce29671086722b60b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397129bce7b810124fa5745667a17b69a5c3eb5ac4d": "0x00bab4638e2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397230647d9f4ec617a62a6685058aff69d729a5dcf": "0x00c0fd5f400100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ad7b209525ea818e43395b6e67de351731a7fc781eecd5c94cbda642e07f427": "0xd1cc0cacf39176b5947925ed5084e7badd44b625", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc08d5de7a5d97bea2c7ddf516d0635bddc43f326ae2f80e2595b49d4a08c4619": "0x7804275d8e53aed92f09f99f55e135c75bf297d7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d35ee346bf2df7627509006d92316ed8d0713d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397123685f3b3c7550254f187ca3746db61e6a248fd": "0x00e6236e34f602000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de0911e577096ba2d8e3f2d5ec0458b1d24830": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea93f58088e27ecf986ed4d70c4f4d40d726b390bcb87f448fcc35fc917e0d32": "0x20135f71a2c2d92ad87aab4431862fd7c38c79c4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ecbd51638c57c1bc38e405ed703d82a977bb76": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891808a1c1c2d6fbc1752b8a3bfcae4b1ccc033202": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955e9a88d4c79252e7340f1e7816098b755c942d0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2287de36aac9be3d8253ca258bbd653f66e65df2ef87d41272ad8ce0cb6c658": "0x000abf987d6d132cd1477b2c9f1fca2ffc0a4375", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905b9879bc7d504d8c242283745eb9ab59fd0763e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a1184c3202e060ccc335e1268a1b379141080000": "0xe02202417084cd61934725dceeeb213f4a3317e0380658dcd137cb3dcb4d972d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e0a207225e52c21bfbf08c5022e9a6fb26daf70c6cee1ee92a6a5c02085cf24": "0x1ff27838e63649d23e22c115e15e5a22ceb7a680", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ae921692a206089246a967450b1b88783ce8fda": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de7eada19b914f232ce540abfe9c3a0b55080000": "0xab68f3f5cbd61feb43e4204d1376d42b3c154478e1d1931ce9cd9bd98de8d7cd00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da843370edee7d8a3fd7e09330ef328b00788b7484afaba29241cb36247e4540d": "0xdf2bf630289bf17443c0eb89d5fdca0868eafa0a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5155bdee8f3d95491fa96c812852b55fa0bc040000": "0xd245df4fa44f453b3aa554bfebae8f4310fbf8c4a5abf9da6c1e40c1f05a1b7b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d688ad06202344d47304eb9eb4392842fcbcc8e06977d6cd55f02c2c9af602b04": "0x163e5addf68d6e21695adfe1f8fbb33c78d9cd4a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008ddde69a07c04100b334040505dc6b4125bdfc": "0x00989568830900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d567fd94f85be51453babbffb0162adbdf06d3887b0ca3aa44e5bf57587190f7b": "0xd4c974f7fbeb3bd79a34b7e8bc789af96b8daf86", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d71c24d7117a6fa9b1802a366e51568a79080000": "0xa95cca149f246208e7bcefeed44145b6ca332fb9b797084eccedfc9b746d1daf00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d664dbd21a50bec286ed2ae25da8f41634778154b3ae6dbd93290bcae58f1dd60": "0xc61840fbe306c4e984a41128a5a5a492f5491ddc", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817deae7f0525b059f6a986863ce528fff8a3eac44e5a9a213475f3fc7886628a261": "0x70a5643374c28a958b5dcfbb68a36d3fc31e2fb6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890091da397a6675117a811b82cab27508d75d078b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba747ec663ca7239cfefc4be89639c3cff6da31d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b22a64ea64c2f4cf1d6ae25c855db5fe1ca0e20": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d38e00c10beaa10ed77f6e574adcdc31f1647e56": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514a3f4abc7ef1f9092a0cdc9f3d60822d04080000": "0x7ae802beabf67df0788ff71dbe81741b307e187423abc0a709d73f2997a8522600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728e66a9abb74aa9fbc4dddb71775f0cdbb7ae031": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d95df826fc3ea014f404a1368a254e23d29d99c8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fd4e15b4dd20136a9621576743893a17d4dfff2d": "0x008025114d8904000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5113305efc31075fd0b5957254fb3aa19774020000": "0x229822081bb748111238c67574884b63ca85638c9b139102fb97796dfc2d660e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973cd0266a7d638588e79fa9b471fb4c2d6072e4d9": "0x00b4217f875a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df370202f48a6858de8eab90afaa3ebe1c6bc63b": "0x0080366ffc9c58010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397050e3aa7f5b52e7f547821ffd5abd8ffe6062a86": "0x0080e03779c311000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a78dd3ac7f1f8e53a445d54e8927b7a063040000": "0x98106d7b4993f855c6b5f7b9a62102a587a3da69a9616d0d110b5250a65fca6b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5175eb6a4abdcea48a2bc1afa216f99fbbf1050000": "0x0ea2376acee36454341f0a626cde932000a591da9b5cb385b5fdafaf077b242500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b41b39479a525ab69e38c701a713d98e3074252c": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d9c60615239ae70c618e265f3fc12f7a3b12a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289803abe2c97e98816ef63a7b039bb59aa8a380909": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b41b39479a525ab69e38c701a713d98e3074252c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f993f7ba557bde7f6f8c49c7d53d2b0d6dc87361": "0x0080c6a47e8d03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516f167645f69ea7fa45a97a1ec5da4b36b6050000": "0x0c0d87bad01936885224edbb57160500b135fa1aa87aaf55de4334b3e10e533600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b1a23f44831545ced859b3e80e580b2aeb050000": "0x604ed1079ac6edec50ff937aed6ede2929c20d1d8b15854af06cfc7a5adea82200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890e4aa4412dc3eed8c5c6a39288866940730dd257": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea9c4b014031963e4e1961db0b632181056d80692b9f9f8302b0916394e14027": "0x85f0c61774dc981a07fd9fd76f45c336fc87b44a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970013742c72bc005ef342eb367374d089ac6dd481": "0x0076cf5ffa7b0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002aa61c8653d63ed86aa91053285c5db6be2ef1": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a8dc8b6ce13666fe5c2c56d23f9831a7b61a13a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a857b41cc4c4638381003add9e721affe1080000": "0xf02cb843f10eb104a933a57252ae8bc1a76c6681eddf513205a8404a68d4b92c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a10042730f48659fb0c3fd7f3cdeeaae03317f18": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e08fe860b1689624b46560ca277927a7f18006f176db498b3f7af2367487557": "0x6e8b688cb562a028e5d9cb55ac1ee43c22c96995", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432aabaf50bdb0b288e642f0753758ec38ee556567": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007edbaf17817a91eb48f6166a592d16cc47846e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cbd1b6c83908c27f324e5cfbb6f62d27ef9e27c4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac33d356f459227a73109e31a9745e0a5b7d366ab0d489fc0b2bdd520c4cd92f": "0x72705657a219aaa87e5b7223cc79cd15e33e18af", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707b8ae7d128d58f51815d99b751c0dd9b6cf2d44": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952d508678aa5eec68ec5faf8f17abdabf9ded9e1": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d507b544916be600bd033d37e659e090467d1cdd29bf9dcfab11e1a8eb7b4c67b": "0x13376a50540351f4d0242e20256e857a80bc86b0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397350b85f8b7d4924c88b90cdac534ff4931512ab3": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001720fe2bf6df9dab32f313343766cd4a0ac2e6": "0x00e00ad64a5d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0807cf08105020d06cbdec06fb549adcccf14e0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a7aba74ee1dedb88846e9b9fb572b8be27d19be26bb49c3d0c431bb648c2d17": "0x0024d44f11a321a70888283808c81c454b156546", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e1738f0a09511622e06dfede9ec64201bd394e": "0x0036270f8e7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fba281c66fe1034a2f1cfcde7fc6f6d939df9cd6": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d5f0ae658e4d4d48cce0355ab6c1eb155b7a82": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009789e46d6734cab174c01e5811d744f664504f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098491a72d51c3e29f41eae6ef5042b4cbc6c9f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c063dddb0309717f742363085e29ca9b097db6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51562294a9f228eb65b7a116fe6e143a96f3040000": "0x509603fcf64e4c4e9332d7732430ca2dc400a758418bcc1ed6b68829b34a017d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724941335e79baae9751f508e7e95c1dd475b4e31": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243dacc0fd259ce0de2829b38a0765970e7ab65346c": "0x00e0a11c777e02000000000000000000ad25090400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397746aa9ec270bba58b97a30b5b402efeaab86bd28": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897098da7dde0b85baa6517d732d16fb06d8bbe022": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb2da6e051604740d95273c51180219056d3e70c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7ed2d43538974c607917ddb8454f00f3cfe250b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e45ee0163ddfc1fe2780064ffbb0d0dc2999f873": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e9133e7d31845d5f2b66a2618792e869311acf66": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e3bf929b3f1c271e62cc6d1f2882eda0e741f8": "0x002468be4d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8094382e17e1d0c9393bf84d2fa671d57a71a05": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098ffc92b4fbe3870fe9e8c688c988d380af738": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890046a7c2d9d55fbfbd3bb829995aa25d4bf6e401": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289524db42cfa6386c5bd43229805ba087cc5d25438": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51791a6ba4cba65a9f08118ff328fbf5d6b2010000": "0x7e9f6f76760ac65628e32e5a1db5d030f0623ab5108cf68ac23fa6732b47b03200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f4b3e6adabbbd946c2c4859607a134e4c609f53": "0x00ee5692f26601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b02427864d348004ecb1044d508c68c79d955d": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52eeb0775a35b135b1cc12b0c4234db95f5a684bc6553bd94ce177914830941e": "0x003c6df13f3c95f12e0f3e2c82e3980d9732558b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ae921692a206089246a967450b1b88783ce8fda": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5170d86badf5a96d4bc18d39750242530b8c070000": "0x80f8873883fb8b60de13d8fb78416c118c1b7baca67a058896cd976073e3772100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1ba30cfd46c08cf699b00c705de01764689c272": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397219a0751553ba999f730fc1af78bb5a3f255670b": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ded0fefac80ac08719087232565beddf95620d75": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971749ad951fb612b42dc105944da86c362a783487": "0x00741a684c6926000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949aa20d0109520abd79ca28bdb453ba1ba348b3b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289925cc6e8424900f85c93957095893f806afab0a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397020e6a798d9f7d8eef4696d0f9c555359900ea19": "0x00f27812638201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ff86d93a528d81402eb6b76cd270be3ec36c25a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742d75f75d1aaf59304642bd7530e5de5a42d8fba": "0x0006b016fe1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890607df4570ebc920deb346220ffb52a0bf1fdcde": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2febc980f27d3470e1ccad9a8106c009c08b08cbd1cdebb70786669f76c8340": "0xefcaae9ff64d2cd95b5249dcffe7faa0a0c0e44d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2a75f1ebb6ed6919277401a2e3fd6e3d828e086": "0x00f6428f3a2a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c90de3a4c3005a259e20cb50402d7c41948c657": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc674a3c614e1c49a0389b3797ca27f30a5dc78d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397053e71a33ab7f5250fd4cefe232b2fd6ec92b0a4": "0x00e00d68c14700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397847c5586665b81798aec196a3065cdc577a013dd": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007fe28a2303b0943a759b036d56a73b48bd3164": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6113f1e61796e5bc0493f464c9de6000dd35b498a40225f97a5f1bf2491d262": "0x6d82fda6e5d6dedf42042f3ddfa2b78b152b6402", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccfe74df2e586d29d3fef37a234148f3a1b99262": "0x0036fe07847b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ae92580ffe442350bfefc4c9e4fd5b137a0fc9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5438aa39d5800ee70449975bb26d31c60792dc9": "0x00c48d2dcd1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890adf0238f7edcb1733269f852ff86bd4a9f37b99": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5a89555aceb6e7cd871907a573e3fa207323c61": "0x0080fbbf800200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5198aacf368e86cdc068c2d91c64faf33b72040000": "0xb63b6311906644f4385479c41b9c08d1392886c83104810043145f480b78f23200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397deda0b6b9c98ac5ea010fe9f2086e93bc1514ec7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c636b16cee0a7cb4e5dc4662b7d321b772a8c1ec": "0x009e5cf258aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc9fa5280bf7a60580e96e1617d22c1bc83f6358777c9b3d8b1d73548fc91528": "0x1ca509880fffc0b2dd5c6a4ffff2074483f0e982", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008fd24707883affbd4c830eee85a8a4149306ce": "0x0014a9784c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e594def1a782c9f0bd4f6e5ad16cee01e380f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981d94d58834fdbb584d72b40429d43cf42f70aef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002c8f6cf6fffece4a83cc3d75760f268bb0c90b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7ff0231086abe3e95ce3773d60a39bf27321ee2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f564f606584bc7f06fe77b4f094161532080000": "0x09e3d208f737d92bd55e3cc348094b24e60d223f7bbe266a49d7f87e727118dc00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d182bfd28e1df3520bbae3602ca44f076a7b928b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e902b00370977bf81f4f2eef795133a1711ce38c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec92519007b823765664beac13efaf630c263316": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b5a89555aceb6e7cd871907a573e3fa207323c61": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3ca35e377d360676537c40eb6d60f5b5b2de856": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e5cdd4b7b3a78a4277749957553371cb6b2310": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397608cb60905efc0b59ebad8a9c650a410fead95a0": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890063dc69f9baacd4f90f8e385a2b93e8233dd8a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd9364642d32a48eb2cb1b0b65d18656f4a66180": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735f7b776fee00f961f7cd1168d48e9be61cc17ca": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736a2688e8e60c13b4a124766e598b6169b0e9642": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a6d927022815090c856377c74b4128f1fb114cb": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0d73de5df565717a3994af5cb75455d8674b46c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973686e9daaed20aca53640fc3c51059f6c5afb54d": "0x0070bad83a6c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130ba39a552492b1d9fdf07b6f705bf1d6b050000": "0xc0944541a69214a840390dc794232b9baed56f93fd4acf46cabdeef8e5fa896200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ebb73c3f457b46f0e1b2c20406d790bebbc0a6b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975db9fef353f8a6c00294a980d2897083499ec00f": "0x00beeb09a89900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a974c739d6a0f8bbf598f8da986f6667b347eb78": "0x0070eab4447900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928935c9070e864636da7462d5a6a59f81f7645e72e2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899019ec6a366f30602f324bf32d91fdc926ee23e2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e35219d98bf6f9c693bf04197070d79d9ba73bfc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970063d8aa6c33d88963ee4176bdcbd65ece06cc13": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d4c974f7fbeb3bd79a34b7e8bc789af96b8daf86": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51986310f86335c12aaa56e7d9051947590b080000": "0x581e058f65025437bf5ab67e0df34ad454e077f5470d947969713eb76a036d3300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b6fb28ce75cfe369247c591afa0f21f30fe3ede": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289862453aa222291ad19396dc22a94d2688ffc08a3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e17de34ca530df364f3b818e29a8ec82a3da8e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e4c826e8a26d72cd784052b0a45f93a451a5e2": "0x0022afc58d0800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5152a5034022958664b5ce512f94c422dcac010000": "0x86f03e5ee97b91ba5253acf5d142ed086ab37cfb331de077e37c2c905fd9fb6c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fa6cdbeec8b0ae15c81a65c5da6d152a0a6c25e": "0x00a65f83e67f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8e06dc2e6bb6bd269319ace4cf8f663338f8f285a0564d6a139063c985d2310": "0xd9eb97d7b1c97639a6914e0cb56dd8e584910646", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517be7dffc0a6b1d38e04d3bdf249d2fb087070000": "0xd00f2a04707472db297d54c9ac7ceaa6c6bdd05d1c12876d7ab3464ebaa2055800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006061c454fdec0a781c00ca44508a04361ccd93": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc38d3766d286b1a624f7031882479cd84feccf7076a2a44f8b9936cbe26877e": "0xfa4be1af84fe8101f91891adc2d52a37b93dfd11", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eed251dbde2ca8d330a978ccbfe4758294a096c7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ef5b46a23ae74f4c079306fb11198d526b28b3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ff1551da72279435c79cb877af44a76a7d552": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2abe942feac803c6d77291161d840e67db6fb19fcbd45364446358d25c3fd115": "0x00f91786aecd3995bf5fd3a6183973193b51d6b5", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8d0e24aa19d8b502a4b778f6172d6ecdc11bd3b9d320c70cec262e291d4a540": "0x1c495e48cc5612e90dbfff05b12532a69303bf72", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700360778f53e71ee3aa3ba78e9b6728ca5917b3b": "0x00c2d8ce698600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b53aba6899696c8f9638267c5c32fe003b86c871": "0x008644b5357200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef710bfee1c6e6ded8ecbbfb8449e782a809376b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a597705df555e27d97c07b97e277d1169eba89e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397414c8f14496260104e238a324b6b02a7e8d2f4ef": "0x009ea646782400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c0798c0df1e87069417e76b8ca4fa089d051f1": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cfc49da98153ce90639fa4e327f1516f98cc6e": "0x00aec6b140e300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973de899827e1b9413d6889727a4662074ffab3a73": "0x00567189f71f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972fc342c182bd05c93bc824952d36fb4316392684": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2aafd93579d64984844551475573904219cfdc9bd7a7ccbb732c0d7184bdce5c": "0x3c44438ca119cb3f91dee8f514f435f2d88c338f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928932f8dd495c7da7c59780a4fc381e45b90a2f891a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397903e339fcd2bff1d25c91e1bc0d2b46fe71dc1d2": "0x008267fa158c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aba4b515e5c9b0e4dcdd8fdd9c870a3761d943": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c2020bae730eb78cbc511018cdfbd369e6957c7": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784b3ea9389fd14b2d023a0650890e7ae7c2fbfcb": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397792b11a085ce9034cf2f6f7e31c53d85e4da2240": "0x003033a7ef3c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6e0bb21fa812549e3f75b92d433225455e299a0d106a5d0a1a5867ef5d3a37b": "0xd136726fcaf415dc235995fafe215258aed5c421", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be0c68748745eafc6cb8e7ffc3666f68115954dd": "0x004010ff621b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de5d8e1837eca3e4241011b7e6ae4c090d9f9e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ba5e7fef2305ec746210a83430a31cabd44cb964ae70bf16ea9bde11ca2509b": "0xe613d5ff2f7ed0d7ff4c00155b749984ec0ab732", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397524db42cfa6386c5bd43229805ba087cc5d25438": "0x00c8f4b6ed0200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5194fbf39019b729dd28efde6eb59dc643c3010000": "0x86b8c669e6eb75936e2bdeeaec46be25388fe9104540395aecd2d03a4335e95900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890049a562169b9aa96c9327681444d541c8382cd4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893b6fb28ce75cfe369247c591afa0f21f30fe3ede": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397290da05daec7be770a7c20be2881abc1ae2a4e8c": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a7033fe4bf19e90a0ea35e264bf7d2b28f040000": "0x089c56451184d40b7911f91ab7f12d07ef6e2b1b4dc50a050adbfa4f8b58cb5500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b943e534ccb68a976bfa9007ad6705c76da81ec6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bef780ac34cf7b53b5624b863d1a84918e6defbc": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5194ff66da795be4922d578003224d8516d1070000": "0x0a7f29211d50461588ec3c6857c9ca25474c650c7d2048ef2283a2245ceaa83100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51809792f4b850a4efa7d248d510f525df63050000": "0x122783b8ec70bada6ca07f33b05109f4d70c1310ec34d168ae5a93c76fa81d2d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f2981e8a482c36f074440101c3a1007de7048cc": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756d8d3046128996b3356e248e2448c7de420d98b": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5de4fee9a3aa7722f7d285c6cffcabbc760ea": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c560bdbdad78ed9733cf5906595432fabb4766695333562c45a512de84f8051": "0x00606ba24a1649ee35a5c37671941444ab6d2b8a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f0549f359ac15f6afa11cf6b0d78c22242802a2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000b79d6fea0f31e919301506d8c62c645949af0": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002c33c9811e4b478b1d4a2e4c6f60250e792919": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bca0e2071d5f0e59803828bc7e0d3dd67e4215": "0x005ca0805b8100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cdd4f0d8d858b122c56d54a8a719d7c76e4db0": "0x0088ee10070d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b78c8f3b56f2e4264792922e064afb51b37c4e58": "0x00809403057e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da6ff9f3390c3e28e47d5eb35081d2bff9ed3a3db244c46b29ed0bd09adc32f2b": "0x5c1c3992737f0ed1cb650835f6ae4d44763cccd0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725e710cb23477bcc48cb54d6a329d35cb6a79d67": "0x009ea4c3e42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ea4d2572a2015e589d4412f4894da6fb4bea3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895852b57c0d039fda16a6c948d2689b402526497d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511bc1edd2a136522a0cccf62068956f7c21060000": "0x22012413e01a5b1cf021dd3a5b14aaf65ff97116880363686fa7493efbe9f93800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de0d92174136d7990f5ddc8577ff5ff898c9da30350cb244548c21f2b377ad412": "0xbe581d9e93e611f86b7fd67cc33ea7125187ea07", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970047b1aae6b63c54033f652a84fc05eb863ab1bf": "0x00fa46ced01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700684c55baee983062a207cca3d8581c7a2c32ef": "0x00b27571ba6a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b104f528a2f421d2ec9be3364b7f266fa628e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3ca35e377d360676537c40eb6d60f5b5b2de856": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931a7a3da4c0952b89144a7f47e04c47dabe9d914": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730aeeadd2dad9c66d74ca5c6b52d9d8d3d1b8ed3": "0x000cf723526800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994192ed10285470edf1488bee3cfce683bce1877": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d9acfd7f6917019a8e1f1f25cb8f48faf17f8": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899936b02740624946720db39a34ab4f5ce0c11ab9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718b453f5fa588d41497ecf34e19fd30ed008e34e": "0x007465c1f55500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893274e22d86cc21778df15836833e147b1894d3e4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96469fe84419254dd3e2e10075b0c69a11bd362768481b7c527279043b7d041a": "0xf760704253f15e9798783e695e6011893b38b549", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974755d3d389180081398ce855382d5f03e6547acc": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c7f440d4c45c1ce7a295c788d9cbea9ff627cf8a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f60895fbebbb5017fcbff3cdda397292bf25ba6": "0x00da2e68a86b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944eb5b6c2d5cbe2d38f9fc21e5166f5964bc47a7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397185476974fb1f9346c90d0831778f958456bcd53": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898506d946cc63d1f1f3a303d68b0da64597cd64f3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a97ce748186008e51831f6753e40e6ee9e34acf7": "0x002a5a3c089605000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ada9f2058fada409eab656d7d017f54086499bba": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243075c5fec47d39bd6482df2cfe32a6d1f83b722b8": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513a7dae00bbe4c9875ca2ffdd04ffbd984c040000": "0x2852dd1c93302c44657e8bab87b8c86a550e18c4a0dead775708bd6ff909b91500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a5b1ecb17b9ced712df12474c5588c8433ccb44": "0x00c0fd2831272f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975450bf5155e553cc022385842799d6a464a835b1": "0x00b832ae8a2804000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e8b9dc427650bb1136f50ab903b00fdee88e946": "0x0016354fe4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b75e5a1bd0b8ee7ae4bbcf5551eec80ae52a4bd7": "0x003aac1de83100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a61258bf9cb93b77da65701e212c4f1653abf9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951a5356d5546a139adadf0a7752c4ba266dae69a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f2d2b848ede60d9480631fe6a365cbc8e304c14": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515605b774d9865fe7955ef635a73469fa84080000": "0x8a76c7a194f0828ddfd4fe8f20120af0c7740b94f010f84df375eda189db399c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765e9bd9c64b29a79b286f4b2f8a3cb449c13a91d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897956952b9ea6540641fd0dfe110f071d45c835d0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf1a4bb27ae3ced0991a0c60d49adffaa014779d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f1b8ecd32d89c484ec8ad5e216e573c03de39b0c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff3592363b611cd701ccfa565dff6d1de23dfb2e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770f055cd7b671c7d5f167c93b506f30ee46c9938": "0x0030494149a100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0082cb409439012ffaed48a46ea0b190fb972f35c32263763558c2c4e94226d": "0xa4932280b37de5fcec32232fb378cbb24275e8f8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000e1841bd5780f77ebee2dd24a19cc47e1e47b2": "0x00bc110f2f2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fe4c20335a78abf60128c5f0a375a09d5b64e7": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928946db544038c59b826dda8d3cc8b72de90c86e683": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a8d40e52242e2bcb59b5163e4f7aa05ec1c7474": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c11fa9f82689aa0d4d41f2ed3e3a80932707b46": "0x00be5449b71900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51af35371c6b18cd0931a9cbd3f731bd1556000000": "0x3803ceb541a628b43ee926b45440e6be38d618b955444001639cb18b1b68500100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243719819815ba8d64ed7712c3005c8df49b2085368": "0x00d0bba2d557030000000000000000005fe3680500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51866a8e782d17d1c257ae1a499503206a79040000": "0xfa2db1b22b343a78c282caf8cf333bafc9e08446a7f1b4c78b36dc36522fdd0900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700da3fb304e2f3598a15b96abce88a619669935b": "0x00460467015601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f65a7c12c29867648798aa6a777b44cc3a9ebc72": "0x009c1a62e68200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b87487eca8ec9080b3c2650e1d3a83bbc07077ae": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006bcfd60159e0019278ce871a0a34bf54d9c585": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ba3b6302e0fd7fe3d21fe1d2ec3ccec915b505f": "0x005cdd841f9b1d000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d5d65287605d949dfc3ce2691b6774766a0d3c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890569baf12b57be4808c0539b9eb6b34b0fca7466": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51097c9830b9dd5bae5f687c94273fa724fa030000": "0x5e348817abb98cb962fc0780a47ebd471d9c318395fa80b4529a64cfabb2e32c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896db74596a7f6ca2798670cc82ac150a41610fdc7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f1ad9cf75089d42b8b56407fa8cd4914cf1453": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c616dcddb10148ef5351b5b0c272486d15b3f629": "0x00d0cfdc8cd7000000000000000000002ccc5c0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007cceedecc880f30ab9f9b968e0d6860d51c6d0": "0x00fad0089c9e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737356375fca1781c398d3a68924bc6e95bf30ee0": "0x0000470ea1b0f8000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433310cb1ad03f5b8a93d5c673e11782f159a017ad": "0x00a0724e1809000000000000000000009ab70e0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f67a905cd6e24183abe1bd4718aaba22c520d02": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f26719804c82085d861d13a0338d07967af11cfd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e4cc4afb6dc15d5be10f9ff1cdb373e6cf1ee3": "0x00e23c551e1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703fee733b242749112fee4ff2bbf7f612dd607ed": "0x00901ec4bc1600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d71200fbf01872b2e196ab9bece2a78ed0080000": "0x163b6b73f9e9a77c336cb7ac90510eca3bb7a3bb567fc62415b52ce3282b9c2300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6110e8081a10caefd8ed1b95db4621085b55807": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ef59d6d8b11b8b7c23f9d6ab5043237a9ee8f3f": "0x0046e6548f7a01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cf5802c077d573e5b61be1380678ac83ec030000": "0x2eef2aee654d4975535f2701af86ba6d169c2c9a1599b16635a2a5e4640db94d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001835bf16df6bece037ee219ddc4870adbbc528": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009f7cd88fcaefeb56fc2c00be4f50ca8fd6d0da": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ff48b76335074baa82f4236dc673b6c56a8a703": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514a0e86d5ab8776588af8c399d1c11176f5030000": "0x520aefaa9aa8f2c237f96957bc1858cce594c62126484c3cef56600e11580a7700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973518a8c749b8c46685b5bfbb5ac32932edafc9f9": "0x002e03c87cac28000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397756034a116ad26a3a26d264e1cf490a12231b1f0": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894341633902051568199e6436ef96483c49e72dd7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928946ac13adfb85fb7261d69153e73b006e585509e3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976052ed2407cd5e04f17216d9687c289e325e14bb": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a33674bcbdcbdf860db590db177e3ca258795121": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6497fc08fc439fd02e6cba9782717b3b1d123bd": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d590735c51726c9e24a446143734dd5ed632031": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5116c21a18e226b1381b232975434593f22b040000": "0xd682e2bffca19e9276a79ab0bf0d76fbb5ac62cc7938b4c3ec7463543539c87000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511bcdc19a60021a88d377b56075f86a0f4a080000": "0xb3e6c17ba16170624265646fe4aa82d140d20783c65972a712de76e07a59552900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6f10a1b8aeb82bf4d1a220805387ac11a060000": "0xc23e44c4eae7d243cd5795c4e25170a40cd82a5ce426bd807014d7c0e479387200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5121204028707cbfd73241eb45044f3e17a1060000": "0x0ee153ce83372a6a2624bddc0f6f9b6235e85f576219380cd0d2a03eac704d5300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0edd5db182fdc10042073db3a03c757819bcfaf39613e34bcec04b971e91408": "0xee009a16375c624ebf875040a1c0c724667ee60e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755c1214cb709381cc47eb4edbd28d19c67939a7a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba3fb82687f28ce414dcb4803d05eacacb697db4": "0x00882070a41500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0f33dbea6c78781e080606ecbee91c08daf0c684a8a11496d364f369e511b0f": "0x00ed2d6c16707836c6609b53b802692fe176db28", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5efbdf49bf5a39cd986dc91cc98bf5639e55c2031c9e00229d366e5b7efadd06": "0x24586e1a8a6fbb94ca745b6ceeb98017fc8de873", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac8eecbef704590852f8e75d87ae2da59bc5fc61": "0x00f20ea3029000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c60d96a54d67eabb888e162ded238773b44ca3b1": "0x008415f7400001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c2c1ce72623e05242ce3932ded73bdc36898f66": "0x00dee86e138400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ff4500730a6a2a32b6add8c27abf2803b3bf0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902e3d57578cc2ee4dcd3bfc43bbf0d550accf6dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d2136d6cc5cae6b60520050f1cc902abb8460ed": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa92a247b4699210595e1cbcfab051163e245ac8747e9bdf9e48c73532e6dd02": "0xf73226e1933cfd506c16b06b172e564bece222d7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397db5d3aa321ed9182afd69a3e1ac855073fd914e4": "0x003c7ab90c2c07000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a76c7a194f0828ddfd4fe8f20120af0c7740b94f010f84df375eda189db399c": "0xc520b8c3e99de440a600168725914ebacc16b548", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d5f69c67dae06ce606246a8bd88b552d1dde140": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cf211b9f0fb04dfa9f7717ac2d614226bd1873": "0x0002d703357000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e087bc674e53b1b48ca0d8bd6691eaaea2ff78dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aec6e482d2ec9cedf8f03072ff8bd27850e95c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824354036dcfa7deae92f0d948088690cfdfea648143": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507203aff0c53f3646696d6f6e803cfc25dae5d649a0d4f2775656419f2c9a4318584694bb60c66e8d0c8b96f502": "0x82104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dd083f4f90637b34f98f77c9c6027a0c78c6f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb0366a7cfbd3445a70db7fe5ae34885754fd468": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc96e66c4ab58a38b86c7013ed317c808c0e8684a8e921db83280190aabff655": "0x00368ab2cb58eba931c52dfed54379ef3b56f79c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c65722a0772976ce0ecc020f2eaf0c4468b919a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b55a1713236871fff3c17bb02fe5f3eb6a7d25e3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee213d531429838906fcd09e48b7a488bcc501f4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b4ca18fcfe2bb2da18efed209373f50ad5060000": "0x88b4bf092b2dcc6e904f78261e8e40a9bd99f108b4b607ae2b9940cb6bef2e0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008dc499df64ff95fd5b048b15d430ca0baabbe1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eaa40f6b29ce35d8f53f6bf9b2a7397e3d8475af": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7ee68da95f66a1211c7b843f161409ea7a8f9107fd8b8e29e1d8d6f2afdd9507": "0x5d8e2e6b9118484134a1925813e545b37cb89102", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972de237a350c65bf399bf853a3cc6bffd23b21917": "0x00a225b720ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700599a3e41a80ed4b6dc948a52fb52bba05ef887": "0x00922e5a5f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975203bc03125befff8aed3b9fd687d8818a8b2e1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002ac73d3488df5bad2e9e70dc37db667371df44": "0x000a945bc10300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f454f6cd7fdc154be5bdc8ae57c9ef6d83c71b": "0x0004e8afb70600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7a2179c90de5faaa539ef2f2d8a1d0f2ea547db": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d022562f644e3f88a3ce6bfce0afc0539d421e5": "0x0020ff663d1c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c4fa0b90e34cd788d2be0354965cfb4bc5207dca0e825b468e7c73a2c223c30": "0xcef11607ebc0a7535f23e0b7bc4eba5dd65a75b2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5125fb6078eaa05729b355a8e40b77040ec1070000": "0xd460ce63649068b38c00c88f2b5b451e105f6e217cbe19c6a274819887379e6300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ad2ddf4425a05406b95be23d2d66c1b11844c28": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d930f5838e8f0a2e2db62535d767bdbb5da7ce4": "0x007a0bb5dc0600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100b87f257781891244b39010790ace2432090000": "0x7a56dc6e96af40fefe5799aed949f2c53c7fe497f8d830320656dd6709fbde5b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9282e60b61060488019bb1b41cd76859c070000": "0x8a64dca67c64d9361901a1415bfb3469b000d0bf7f1d439824cec71f8702215900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b43d777a3640c4b0d674668f57ed75b7fc84ea82": "0x0080c045b21c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b3900179e0d9e20712ed41f8bb9ff8cb1e3fc88": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513d24318c6ec74d150e49a792eb796be147090000": "0xd0435f6d91a7c7316277378edb9cf826f46af1caa25b187ff9e16386640c600e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c65b45c6c2b417a7bfe7a1f164ef12b53749fb5b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f129a8a4ef740ad545508a30068725c058375c4a": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x183887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450edea6f4a727d3b2399275d6ee8817881f10597471dc1d27f144295ad6fb933c7afa3437b10f6e7af8f31362df3a179b991a8c56313d1bcd6307a4d0c734c1ae316a103df5c5131813fa77ba4f8be88b2d2b4a47323d2011c9d987615f067e9e7856f0bb1f6307e043be568014eb4062a9bca4a255f39ed0be9205ee97c93b4b6ee0a3e2de329a70e2763438a1a757bf6dab945dcaededc7455a7fcfae83def07bdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e720148b623941c2a4d41cf25ef495408690fc853f777192498c0922eab1e9df4f061d2419bc8835493ac89eb09d5985281f5dff4bc6c7a7ea988fd23af05f301580a3ccde029459535c8bda2aa6fc2d97af3880409010bbc05a15f8d42bce8f0176d3c7d33a7ca6e152bcceb20a75bf67dca553cfe1fa0546decfdab25177765ae078acc4f2aa64faa0c97ea1f8702fbdf1843694734eee4d7c65c5605c2f81271485809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15df72daf2e560e4f0f22fb5cbb04ad1d7fee850aab238fd014c178769e7e3a9b84ccb6bef60defc30724545d57440394ed1c71ea7ee6d880ed0e79871a05b5e4065e5ab03e0bc62a8fd3fded0b09ac04c6192796873b38abceffdbd1548f35f61aa25cc78808d9ffb966aaa53c3c399cff7ea0b409dc8b42908b9f2da6d34c352514f13a09505d4014b468c1d3e394002832d9edc35dbbae1a7a6dc96025d47d5b88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa91661c151c11cb72334d26d70769e3af7bbff3801a4e2dca2b09b7cce0af8dd813075e67b64cf07d4d258a47df63835121423551712844f5b67de68e36bb9a21e1276c694dbad86b8de9c1c9947e536b3391b77caaca86a23195a2b111b24b0d516450e91d8b60377c58f1e8dfb6236dece92917f1b4ee67d2787ab090c5f8d2200f74b919094e1fca66ed767766aa0a91025b6a8b955bb970912900ad4e413ea93682104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c680d278213f908658a49a1025a7f466c197e8fb6fabb5e62220a7bd75f860cab6236877b05370265640c133fec07e64d7ca823db1dc56f2d3584b3d7c0f161583cfc25dae5d649a0d4f2775656419f2c9a4318584694bb60c66e8d0c8b96f5029ab54fd64223ac5dd0c547efbf0015944d1bcf8f4ca721716d8922fc940c9a610a7d2ed5da6a62c32ef4477bef2a1ba05c5feea57ebd44516a8257dcf9a3b67be240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a8e59368700ea89e2bf8922cc9e4b86d6651d1c689a0d57813f9768dbaadecf716c52d02d95c30aa567fda284acf25025ca7470f0b0c516ddf94475a1807c4d25b09bbdce34c5bff2f9f212118c05296db12854ecd09ed0eb0dc7714c9337ce29cec7e2d5e28925ae9f906e5ebf1c81adcc7e524751273a73a278f472d863f5324c0831fc73ca4ae4d46cf82e74ad01549973d132795c579d40eed490cbb01524", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51358b305399f3902077de1fd8c2d204ea6a050000": "0x5e160a7580ca586ea01814a9fcb95f99470a814bee39a7adb651cccfef60b42300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c60cdf39e74013724f9cb7893a61e45897080000": "0xbad47546eeef76ee44b91a0084628b6b841692ef6b087c62d043991c019e631000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970007186e9b4a6d02ba04e7b7504173a64814387d": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5151c0c31650d67b9f659ad02c1f6ea4423b040000": "0x06e11fd0d4df6c4765eb346aac47682cb7871da9ecfd235255f6eadb8392b20d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de804b725c80575d237aff27c784f805903dc0a98a108c46f70486c9b49a34e28": "0x07dc1a136ca9cfa640962ec0a9a8332f99b0bbff", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928939634580a5670327b6f4f925dd85f2bcc2c44c6d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbc309fd2bdd98d456fabda1bf024664ad14d59f052dcee610e47d8db622bf701": "0x00a3b9f63335f09ab460319dc5b38b9f7029803b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767db7a2aa35266295c4e478f2f6f1a1f6663e0c0": "0x00bc915c481200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8b4be3ef901eccef4c3abe01bf1af20d6685d42d644d1c0a6f739207dd9c068": "0x7162bf64f3d1e899cdea224458af61a33511ff42", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0b7319293c3508cb16215561b7f2ff539bdebd3": "0x00a0724e180900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c114eb5f530b857ba46defa23cd1afc669080000": "0x24e1cd7f14516acf2a8ddeedac439da4b58536cf7ff061690f7bc921e1741a1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c43bb13f32b49aa921797bd8a391866cfd3ac6d": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a73cf30748f8e2654e678381901e539062e86ed9c56cd51a057e27dec035329": "0xa0c59e84c73e9f41ac8dbc44eada4bd908a07f05", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749fa2629dd5ba6ece667bf6eadf174d2c8195cf4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8e26d12f564d9430977d9d4528b6d81a7e965354fcdee3dbedbdb3366c65046": "0x2f45d57c49adf2be37f4cda720141fc9cb6236bd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761436deba951a9f929c5d7f5d9488204c2037aa2": "0x0084602bdb0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890003664d63acee3b899631c4ac4615f402430330": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8b5bb41b4a1a97ce7cab8ce22183024c57125fe": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f9d17d432948ac1a523ae7d1a16e18903705f0": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004d9f28eab5867df8ce500efa3bb8a2354b46b0": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824373361bd483cc76d6d0681065e6ddb25e84ca96df": "0x009017ab5d6b02000000000000000000b63dea0300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da621946a1439a0a376cca02fe2883fad7aee68a4b93938ba4089a75bb9d60e5b": "0xd6110e8081a10caefd8ed1b95db4621085b55807", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ff27838e63649d23e22c115e15e5a22ceb7a680": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4b424e1ccc6f08768c921455f83181bacbfe3f0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970048d77cd53479c2e9594d55f058a224041c11ce": "0x00ae6ec28fcd0e000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f5b17a59e074a0d3a699b9530170e7b19090000": "0x6adaad6649b233917f6b7c5f5ab20c229b2b2520fd85ea21cbc2510eb5c40a5200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f1b93bc223f3052b57da913e6cbcd9e9b050000": "0x3c0189ef9aacac36959a78f72da2d5a49535d5b9a31845b820c0da2ff4e2660200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002844ae6b76746980ce8bc65f409abe021582a9": "0x004080ba809e1f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cabc87c953dad294fc0ed22c563bac10fa8e3ab5": "0x00e0a38f8d1008000000000000000000b5cd0c0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bbdb18494bba1635fc00d53735c06eeb171908": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a45d72e4ba11ccc796d37b6b1d9518183fa451e": "0x0032cffaf00201000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514468a4676c45bb3171f4245812be4b0e16060000": "0x78957d2a1ba4d3d9890e2ef1bb3562eb0774075455b7be56d0ba88eb3bd4094300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d647a9b6cc579aafd3b0b1a04ae88f2dc5724b89a8fc45042679e87665e177200": "0x00eb3893593421571007c99eecf18314b37d2319", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddcd52d8332620b371c24b68a5f8f303792981975e817ac1e0e0d5a1034e1ae1f": "0x36921aa381ba281dcb6fb6489461c2cabb8c23db", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d4a3cd00563cea748bf39ad093ecc73ad080000": "0x1acb59938083cf7d003b8cdb348e28855feadca45ed08b49256bf8e13471d46100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978bf1c1e68d1bee9a5d188c2b49939acfd804fc4d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000b6274e5e9464df801fcfd8a9fed607086fbb8": "0x005a915366bf09000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004337ca7ef0391b38f913689626697307aece2b": "0x0018ecb616ff01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eddd2fca63445c9c60a720cb40ea47d0218b828a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971daedf70a4ec0745ec4968d3e29ccbb4d6001109": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d40c1e3c54b1a2443b533b14505b267c1329a25d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4624dca7c8be0b12e1f883cd5a64da42ee200e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928963a673778cb652db8fe7b320da78842e364c40eb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969a80ca39168c9bc6761b9a326c6f15735139e0b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12c5c9b9dfc7ddbc627c60771de9a84b552bf1bd48e9332ff8abcb7cce87bb16": "0x279e235500d1b882c58d2b679ed5253b6e3df0d3", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6e326b0768501c103f52fa0e2011501053da8b7a8ed204abfab34383bdae84c": "0x55479b40703db085c9abeee0d45fef0c61b0098d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5828b1463a98785b431f8bfc4806215f1d062aa098eeb76b09a80fd9e63c9d0a": "0xb43d777a3640c4b0d674668f57ed75b7fc84ea82", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c49b7d15f4b1fc5beded08a2d77d7d57373f3d": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eef5a1f6ced7e72d0c52f342fa1cb6e8cc5fd9a9": "0x009657704f8a22000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f7a2d983c0ae1613f4b3c50dd85965a81fa43a49": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713376a50540351f4d0242e20256e857a80bc86b0": "0x00be45120a830c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282435529ba8a2dd48942abc90f9d08667b4e0e7be69d": "0x0070ca7d0f550100000000000000000015e5270200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a7c2054d39cb60856cf2180be68ce2265eaffe7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4826569e68b7eee1b5b93406e4951fcd7ab6b40be519a7db5c6732f66da1149": "0x83b16a18f7fd937545ce0a72341bcc700bc72c69", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740095bd940a96c8b42abc9602a265071d0ef82c6": "0x00bace6fd90a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5e500d5c726fe768ca583c996e244d0d809a1c9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513064ac819e95dee52e4303882721922dc1050000": "0x4639d2b10d88d41a4fdf2ce50a922e9a99477aa5500316347f2036dda7cc805b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f1001e89a406a29206d368a0e7176e14d040000": "0x28dd13379371ab7ddb0b1efae7ffab1bcaef3b3cce2ad502992952c1b70b9a1800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d13fc3ce8ea30f518e4ff96b5a74318d31d7239": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d21a300eeab8a54eb2ef797195f60b2517e0c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002a6b8504b4aa93bf79f1c8bff1fed68c591380": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300cc7693fe047247443cb52fda4173543adb8843": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000b07ee73f21b4946786178085fcf66f760b69c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb055d7ecdfdd1a7ea22db2b5c64c5dc9c080000": "0xd485ebc07a3913f5734c389f7b74a7d81f62ada7262e22d485b1ac2c640ca64600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774d452179482b55e13d4382a7cb9fc74392b5e4b": "0x003aec118e1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c061223361f4e8b4a71fb7837fd8eac1bcab9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952e0f7339c1bed710dbd4d84e78f791ebe2df6b9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900edf872c332daee73e6d6885fed66b03f1885de": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f37eefbd5d24af0a94d743f3395e74612f060000": "0x04b32df44ba1c02abfda2d4d9dd55b3fc4f0bee5b136b7eee836787771e0211900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824343bf5419c4eb65b6f8cd55489338ded388c71b62": "0x00006c34d0f4030000000000000000002fe8660600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006a1212d2d3e63753368cbb4116ed4bf3719e64": "0x0002d40cf16700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ca6719bc9fd490cea2f94f000a3a47a4a5a498": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6c28acd0770917ad6b838e8b3dca4cfeba208839b5459d90b7b375193da1674b": "0xa3cfef97dad26bf0e3f7152edb74b84a278c123b", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e516cebd7b5014f69a56b310c480ce103887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397205ef96ca87f9546f2d241ce8dc949c49765e4df": "0x00c462cb9a0e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757f0c073f9954b81dd7de5d4b33cbcea46500d8d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba1fc21a2eeccf7b3437dcb9d4333c6da2283d46d5d76766e1b232a770230566": "0x00d5ce12a848bb0d982d8a07ae5c462f5e9a7199", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900928c48cd1e36087af5c06ed90b4a6cc161abde": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b59ac37bc3e2ae0f9d32b6751e516eccb38732": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c861c2296e9911ce4a1cd4bbd197a360f8cfdfb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a2061e6b87d97d99221be7f5b47ad6c465020000": "0xe073fab94e8c03caeb0da108520998cfe419f269d4b7ae006faf2a55991dd81800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009bb861090ee8778e674f54857d9fa5e2f32358": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f7932b29b98c93c7844cc0833deff8b0109f958": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b2921eadb2ce19c3aa97d1563333060bfc472a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d590735c51726c9e24a446143734dd5ed632031": "0x00c06e31d91001000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890001343f03e9ad77fa47f674c4ff59d5fa11fcb3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890047522120faa210d0e6722c57a5b1d83c417950": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e629f5ed94561a2e8a2572b46eef3bfb4419162a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144ee40197f5db720025dfc8039294a9a9a040000": "0xb8e2b3878594576b6226e0050abcfbd96ec61db33f60b5541e3adddb3eff284c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243226c85b4f7e53cee040b6d2f45f4fddef5d97bee": "0x00d0cfdc8cd7000000000000000000002ccc5c0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5813a73dadc69a6b1bf781c33e3a7c814a4454981710271f167757f60c9f3567": "0xcc85b0daca47936a407193940ba2ab7414970818", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c82ab06b794c99f14a161973be7aa6012568b1c491d45ec969ed7420bcfaa59": "0xe6ec101524276a692f4a4fd0a2f811060cd3d434", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de78cd0ddc98246466f7fffd6cd96ececf7430": "0x00ecf4b0d90200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977da1f36b13c74e5f988f806da14650b790a54b4c": "0x00208dc1a0b904000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890038aa4c51581fb226d7a515c038de9796f41fff": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fc8f49ee403b661f718e8b561813d055e7d8b76": "0x00ba080a2d5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900470a170ba243e44eda167e15063b4a96f25aaf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f2981e8a482c36f074440101c3a1007de7048cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cc3fd9c77dfe29e8d63f42432d05e26cecd97d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928987b1cfa38fc11bc6ba0794e44b8fd5cdf98c7640": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b650393b228dfb785b07f149fb213d691e49b33": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a419133257993a9af281933febc870657c764d3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e9763a3ac1928e281c7776b41aaa83b558204e0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339747b340a7cd29bfa96a17c1685f61a67f0c7de422": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b01dc922ee206c3906accf74e175a5fd38ef5c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949a4754c8d01ba67609c0ebd6569e18679d43abc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc06510f1df698ee3779298c8999a544fef1c15b5a805068e0ebc056d24965201": "0x00f0f772504eca495a1e9bc3b8a1cec2b639c9df", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d6fd4653efa8efde0a7bd582adb2d0c8101c930": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc5778652ed1b557c3e495d505b76ba1c87934d040a014005468f199c28bfccc9": "0x1c1b9adf120f8247211132d86a8b3c9d04dbec26", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718ec44fb47a4014261d7617347773bf27b8e2e8d": "0x004a61a31c5e04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793011e03417d775496e3e81c5ba87cd973538dab": "0x00901ec4bc1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8b3219495b480547011e7eb4c773b6b1778077195169a4e5fb16ce6b553b9b0c": "0xdf5aa870ca48f1dd80eeb75b80b7d2d797d74ca8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d517ccc6eaa9380931987daf0ea1c53ce4ac4ca8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514df20c2ea6de2e21af1c291af85e3833b0070000": "0xd2f0789cefd1e9c0432e8bfd47c4f1ef06b0a50e1e1884ccd7e1bf263c53af3300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289287bb445456ee7a2ea62c0a8c0de60d6eb41bf3a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890003ec6a173a7f45631ca5d96bb5b0a3ecccb5da": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ffda559dc06f88b229af02fdc41a5a6a48127aa1": "0x00c0a539b6760100000000000000000036595e0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700484a2fe88db28bad5aeacf9aad06c476542d92": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948640126abdef6682ad0637024f814e3e40196b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009715b79dcb53d3fff43ed82c11b2cef7088730": "0x00c2c5c6860c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397151712ac05d7df898940e3be3ccabf6d77cd4150": "0x00de0629a33410000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cbb01e33cb0ee6a000f9f334858d8acb54030000": "0x3413070fd675fa96164a98442f0cdaf50d6e70c25de43a5268f987f7cbf6742600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eddd2fca63445c9c60a720cb40ea47d0218b828a": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824378f5234552ba1bac0a945d5e5bdfb56d84d4931a": "0x0020e464717e150000000000000000005be7c72200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927786aebb2cd05b2fecede13382aabc3a838c69d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397238593df591076886834b28306cbbf83b333d924": "0x007403bcb30400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b0f6f73022881bbf0516b30d182761a001b7244": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339747e90830e0665a6935ef79a72a27db6c23e00228": "0x00be4467800100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd682e2bffca19e9276a79ab0bf0d76fbb5ac62cc7938b4c3ec7463543539c870": "0xa4841dd23a0c6e2069f543be8dd5db5442f62cff", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397462cc75caee4d0be283eeddbc2cd5698b9880b91": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef8921f885101db8aacb6111e65545e244090000": "0xdc06551a8b6f10345ba4675109499b12443eeeeb47e0f8ebba2772815ebfd80f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ccdecb6fb16e73a9311e57c75beef3487b3a0b08": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc6e2bd34595f49ccd77ef257810d6aa9c4941f4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a3b9f63335f09ab460319dc5b38b9f7029803b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a8c37be0bf0e98ef58010178b70edffa1b070000": "0x0a5b47f605e7f1a0cfa91371ea887111a13a90bef3ed321c1c821661ebd8267900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc06551a8b6f10345ba4675109499b12443eeeeb47e0f8ebba2772815ebfd80f": "0x847c5586665b81798aec196a3065cdc577a013dd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0d9967935116cdbc4ca46dc114bd175c7eaefb8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c520b8c3e99de440a600168725914ebacc16b548": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d229edddcf6d16c5d5438aa50b68c67ce9a422dfcbfe5500650d897c1bd50e042": "0xcb431327705a1ee54417f8cf3146669ea52f3e41", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd408cbacbae6abf32dbca24ba4400709bcca948": "0x005ce2476b4302000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437162bf64f3d1e899cdea224458af61a33511ff42": "0x00c029f73d540500000000000000000056949f0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2b8dfe759e221edee35ecb51b15ec454425d1e772d224e2efcecda23f7a3c5e": "0x70bc832c319132b534d1e32eb24a5a58a29f2624", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004c7f45a2cee4336a07480fc8fa78c101c10409": "0x00306025659004000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700692c9b1e40a8eb213880ac4908eb8cfaf1f598": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e73a25b58bf440d8ad53eb773f412a4e89e22719": "0x00881529b38401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000d9e4a0c84a34414c20b308ade8f9c048218ce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900732c6677028393e3bd88433aa4c221e1d4bda2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6a3ad2ff813cdb72fbf4a76d6a9a7bd276f732e": "0x00ae839eeb0200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51266d6efcdfd5c4b8e277c4ac5a0a868300080000": "0x7e9182dc2b0264895724fdc38238d5a20a2904885d35ee292e2b810fa5313a1800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a3585a53e68650e03cebff3c42ced82c21ba6b6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5131c7375a0cc0700b904d9ef2908d318deb000000": "0xec0f3c02a519e687645f6d29219695eb2461e01ad6813ab7a9144aa85e4ddb5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c84616c13fc8266181a4589ca35f2f2463b0e4b3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5163f1697207865578f05e0c894514a30de4070000": "0xaa41228830918cc1cf16e50df86ba154a483d77ebe3182bacfb876af4fe9ff6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bbd9ddc49fd2d67462d0b1919151ec9aa45fc4b": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a016496ded64b9724a571f0703892fcd5a0ad47": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2c2c26961e5560081003bb157549916b21744db": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b03d651170ceee35729aff792d522fd952cf94c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be7d69b9aec64673f2ccdb97c24bdacafeaaf2a7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c20dd03a784a16714c24794834e04903f9395a": "0x00026c488f5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970052a07979799d203c54b44b3544a2e1bd30cc9a": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799d1efb41a2c5ce8d000599595f598e6ae9a8356": "0x00e08b22cad305000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900240495286c0f4420b6cf3b7d98f50682f82544": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999ce75400cd94e1277047d0913ba8e6921aa1637": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc85b0daca47936a407193940ba2ab7414970818": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa98586310c2340a471a30255b03bb4736205056373576e53c5062c1a80f6426": "0xe0dc528b979898218393f18a4568c69476640918", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512fe32d480dce124d59c57ad5b36663b699050000": "0x7c14ce5e6afa3158feb921d32d89d236e26b9485bcb995402108495a7574f54700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c90480cd768c13eb1be84bbc0414883bcbac27": "0x00b4ddf0840200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0be27337ccc1182df91cd4075af2f6dc7a67c5e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f54663c66d90010e39c7c5f3124b2965e5f0d069": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4adf51a47b72795366d52285e329229c836ea7bbfe139dbe8fa0700c4f86fc56": "0xe7321957993cae05c6d5e4282e83d1b09b57caa9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df058d4c46a6efa9894fa49e07fa14d756b3934a65ce6592cf3ff441dd527db2e": "0x081754b0a1468f7ee643f1ff9896174ddc6fb4b1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006307f7e5034af0a325f5eb706ec2a8dda67c09": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923803954be1a85583e00ed01ffc8d232edc87e1c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed825d6533c5220639bea97f98aeba7e02b0845f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892fc342c182bd05c93bc824952d36fb4316392684": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519daf9dd0973aed61edbb294b0afc7cdbe0060000": "0xdce9c106990ee809fbfa94214d6a5824b2a4c9a8eccde773c7de16dacc66d02100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58cbb85bc4457b36fe8a2b28cfa63f0dd44bb00745db796b84e2699c4a9a0071": "0x0052b34370f45aa1a3d93b5837975bd9e088d6c6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513c8fb2780a43d1076cf7a9a90872a81c84040000": "0x24f8b3dbcb13ea214b670cb611fe7939e20a23db19647485e01206502e64ef7b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dded7e8da518feec2fcfa346bc021ea2d31a042cbb4e69838cd6edd8651083252": "0xad5077d22fd0309130fc1a1ce0e655ce4de9513a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899fcf5f950cd5ff61ca37042f293113dcfec1ea5f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750d30f8fc7564e1fd231e160169f19e864c3a641": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dd82457a6fb1ea688d0fa4a2a2151368619403": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8628d1190bcede69725c4e920d9ce42c23ee29e": "0x00c4463cbc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f963fef4235744c3cd26d5a3b155534f72ec6d23": "0x0040e59c301200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b19175a4b74f9227ff9f1f0ae60e4a2cc7060000": "0x04f320fad7173da9ae78391b0d5322fef4fea16922a97a699fdcd83dc5ad9c4900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5139c2830342e60b62b4d9b48f9f1a4e8f95040000": "0x4ea6ff3e232c357928eebb2a6548c2efcdb4c6e14d3bff63f4641ff5d874764a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397012d78b8ae3effb27d1a177cb14b2776562aa192": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce7ed9f16f6ae3a25599f03d4f65f8d3bd7664ba": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289651547546b24fa036b9c1b1c2dc8b2ae9c07aed9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe2ebe8b791bff2fe45927e9fcde8a5f9760e249": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80bab9bae5457b9bd180ac52e9d067e4c3a365d114948187d991825c6914c307": "0xe04fba4d693e414f7252ff3381616d711e13b992", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c61ed74017d66eceb5eee1f20a012e4774cd79f0": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe6c22b41a47d782268a2d1eecf5e623ae6b984591db92f77de07a27a447f87c": "0x0c31fd4e2f78849537318712136cbf7317f21828", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcfe4380a6592abb74ab7a3d270f87acaafe118d": "0x00020edda97c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518441af73a144f72032efe025fb3c9ec9de030000": "0x2aafd93579d64984844551475573904219cfdc9bd7a7ccbb732c0d7184bdce5c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e908988fa7712617b50643886e51ed6ff5333d6a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d5b0da867de47e3400367d80d606d08f064e5e8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dacc0fd259ce0de2829b38a0765970e7ab65346c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510cd2568286005ae16fda31c2742063c3f1030000": "0x4877511245f8954e48858da743b9eb3544681c27ffd8802c8ea1669e961a2b6100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177caaac9e8db15f78c132fabf1ffee33c8060000": "0x9c2a6baa6ddb14dca58593ca97531705f61781e9e6d7eb181bf8d0bc5ccc162e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f514161e2daa4571c9933c440fb3af6d08020000": "0xcebcc2ead5f62db0af2c326d9125d36c69ea03b3bdf88d5ecf79d53d8262656600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922a0105994c3f4ad8c3e78144e47a6eff9976377": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928963118c5e7a405fbc2fabd7d2b03588488fa2c602": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c016f534d20ebfbe4acdec6977762f79317e137e": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731c1fdc59cea10ca6dec6975e83f3c2f5bc629cc": "0x005a4a3ef00e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289088e9ad1f2411247868395d0b0a6279d92bf12f3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d581e058f65025437bf5ab67e0df34ad454e077f5470d947969713eb76a036d33": "0x3c0bb615eda6512f1a95869a638ef9d21e63469d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d30ef809e87bb997989679572d1416d0d311276": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0484129cd5f6ade38d42fd0bb7ee99e1b77a287f1dcb20131319fffa6fec3b48": "0x1739e6e25e3da9107b7f60145dd2c8cbb76fc139", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d268eda4ec34cc03c815a14dd8465c0e2b7a404f56b6ed9399c363ac244fd6122": "0x0710c910d3d8061019f91bb90ccdf607898e135e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755b3230118d3952b35b7965b09752dd299a95706": "0x005c57d4f6aff3000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289deb44b42a9d5c331e0e03d3fbe9c7a9496872d05": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e1404e9af1c94c9eaf8fa92e2c2e1a936ed8701": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003d1907558997ed87601acc550e672ac01fd7aa": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e19cd2053003ffead8c5b88c77062a6f7b080000": "0x2945102218ec28141fd0be4fa57b11ffbb0bf25a6732f2aa68fb70653321b66b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da31629b2f67c63e23078928578d264ea5070000": "0x3fe95f3b54dcb987f29f3de7c979a88e9a8ab6a45c47f0c32f2cf14fc1d273f000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700882015100d9a8165e33467f695de68d115a172": "0x0084df6214a700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f36700ff798394c4a58fe861a4661f5489d90735": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289654ae9a08e15cea8d7d8bbce09f06ccc1cd8024a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fb2815ace3d144b7381e2364e799abed8c0d6ec1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fb2d2432975267c79d283a617c62324a5b0897": "0x00daf6518b2f68000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de626934768e68509f3b657372165e6f98fdefe615cc8e669d5bbe033a6478556": "0x9ca696ecc735a7a734fbce108cea75f8e982cfa2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51891fc62100b73f034f04d597209789f2ca040000": "0xde7fc29e54e79d51f4a8c5d54f67523265c2a538a79edd0a601ee16cdc1bea3a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970081ba2106e5e4a6ca54e9dab7ce93d6f95c095b": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970029dc8d8ef8c287ad395732dbe5d5bf951da820": "0x004686d9dd8f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e94ec60bb2c3c196338c7512dd5dc87839aa2d18": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898285a8f9373803328ce82b909ed406e7b88e8206": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fc9f2eeac9e40c581c898481ba696b0e6300bd": "0x00d22374f95f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6251493a6a0a97029c8bc5ca39ae29778040000": "0x8ea678d1d866f5ebe84e3830ddaa3df3c1dd58e11be510aba931d36ce40f8b7100000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x04000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c2e763a5924cb23fc77515a19ec3cc7e7a122250": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86fda27b3c3ff7a15263d00c70005336bd9c68bed4de5c3a0a3aa647e837ff48": "0x801aa940bf8ac12429d35c2cbf0a13b61758bd4e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fff7e689a4ed9668c9207f55c8d68bab1cb507": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee13480f5e260b749022ff1e533a22e14e48c083": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703197abad8079143a69da8d037b6d69bca469bcb": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51db22ab22b9c2c668f1502fbd016965ead3050000": "0x524106d11c5b394e41ca464f7bbeccb2c44e1c9d69ee5c74b87074fcd9a4984a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d3bff828bb4c616bf9d526a3551987b8f7000000": "0xe4cd169b3bf263d47e5604fde85081d4eea4fb30ffbca3d34d45160cfa9f7e6c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339721ef1af339cb2c91e55acbb82863552803e1fc55": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928996cced3c89d0565c7075aad1b2b19c49f449af1c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5b5f898ef9dfd2971c5fc2f145a4c05d762f2": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339732c6220c6116e3666c220ffbcddd2e7ae8d78c2d": "0x003219bbda0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a01b1820b48fa4f1866f485e6351659beed55d2a": "0x00beedf8051e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397029cd6683f849069fd70d6e9e7ac4b3a71cfe9a9": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714ff1233fa526a1c2a67640f637ffb1bce5df502": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000f6cdbe9dfc875008e23822266cef6ff78124d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008d723ecd3298ecf004ea846fc880002822cf59": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339784f135b9ea6cd15016bc1790909a0710ef2fe918": "0x009ab138061a01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397173216d1fd08e76fd4f25710d2849091ce2fb026": "0x0004f52ee08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896e33fe6344ffd1fb1aa35d7823021a99e10aa1fb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2ccc768dbf601ace5bfb82591e59297993dc9ef": "0x00a4289f320700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a4cd6e585400fb82dcf09388a3b6eeb62d4803f027e7fff775038ec08987953": "0x03224123bd06444350b7d75e2b080ba68598ddc9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f18fa0631873e56df496a05d96116fc39da12b0a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700adefc329ef84f5ab49315271912a1ca57cc18c": "0x00de8ad4c54700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0b18c9b2c9b480b43aa8f03d542c1ee68692cd42aaef3c46b57ea19cc9e6c6a": "0x3be58c29b09669c1b1edd3153b0872e3cbcd8492", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de397b4f819087f0d36a12f89b4c0eebad2dbe": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da23d1c6d9fe22131eb5e905f240e077a7040000": "0xa46b7c2ff66b1247e437df5b9eee7da98a4df42092e82dd14f74b8ddf00cae1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734cc2861eeb213da8bf366becdfb319f16aff12c": "0x001ad45b8f9900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890007265d4ce76f580ccf575ef78d9f63181eaec4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397029c5bc3bb8be76487f9b75b5065a6f57ade84a8": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397344640acab3fe1ec3b3f7af2e9b7ea4296aa7085": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b72b4ef3d1bc5158136b21f91e44bafdcb8faa60": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971cd65f74d01ecbe6a63f131c3bb140a0e0a90955": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be1c575e4d30176199bad4b2fcf7217a6df20f16": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928982e2b7d189a81a251eaa51ac31871f8c4b91dff4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a9749cfb7256e7e48edca7a6911018861ec6e26d9eb2c81bbf037628fefcf04": "0x6cc5d8a4f16d0dd7122bc1d2759703ee9013c237", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002537ce06f4d8d67fa5c81c75dda886efb646b2": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001f7eef6a5b727738156deae8f0604d92df119c": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a2da86405f0032f5ae8337cfdf47f067fcafc67": "0x009259f2f62000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44dc7e01917e80374fd8bab942b77bbb6dc857b578b681ce199cc524fd8caf19": "0x9588686984edb566be1e1b5c367aabd49aaa5522", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5189c7ba2998d0e7af5d5a234ffedd5465ca070000": "0x1e578c7d15ce8a11f4e713e63f5465ff324a3a856f7ca64574dbd704597e72d900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ed6a67496a5bd0146cf3595ad50be243ef788d6ef3bde1d66e9783499f80524": "0xae6916a981c3df939efe41a37045ba2c0b1daafa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970037a6b811ffeb6e072da21179d11b1406371c63": "0x00581193490000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b792f95c5d535942270423c12a735beace8e36f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b12c9b8714c27aad069301ad0bc4c0cc416f1e7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d36e5192ceacb95e0919a64940e90ca47852b8aa1271e2d4c69383411e72b2702": "0xa2fb944dd8930532d3fb08109bd7a46cf07a75d0", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2252a1d50d94240bd4e5b32ef5c118d59e864a8add6e2d30fcff53b939f08a10": "0x040e5e95969b231eb8dbccf2bbe7b339588fde54", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005b75905e8b686acbe0365d46ba0ac2a70b3160": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895223d8d88e106df03f953b6ea1fbc11db396f2f7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896bd681cda54942050d622af1e35e6e3054eca95e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fd593bd99ed831bb189c73ad7290501597199ac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5115c3d9f49d05aca1b29d09c04bf4a88ffc050000": "0x5cbf38076b2d9b9faef9f96907d266d5effda6e8458ca6f4287615089f05502a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289edc6c4c1ae525da2942fcf03c7b98c12391edaed": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec3af4ace34c5c019a1bc08de4dd22df31f0895f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970076df9bcdb37939908f00f66c2d3d83b98345a0": "0x0076eb7a9db700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be581d9e93e611f86b7fd67cc33ea7125187ea07": "0x0072ef4755bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df3a6a9b086181a0005de487ea5fd72fe7066d056d7c7b9d6572e0f609925f3dd": "0x48973b94b0273ce3d54774144b4941996bc62556", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51edeee793d8164da822d6e40d569c2bc8ea070000": "0x567fd94f85be51453babbffb0162adbdf06d3887b0ca3aa44e5bf57587190f7b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890011aba70dc64ecc7f869f9c415c3dd23642eb2e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896e8b688cb562a028e5d9cb55ac1ee43c22c96995": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e6fa447855eb59c62f23e3df8a556b07a0ee4d9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de406ff2bb0c4bddb3b8fa92cba3c11042f2f83580a9ebfc2e5fe0e4102cfd70b": "0x00bdc59bc934360468b13b8a94bad99871df53ae", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90a14c0e9d0fc3ae3a3398cd3a5735deb453da1b09c3c651c7dafd2a624f1a1d": "0x001a3929769b8f2f809aad807767b5e2c0a9e27e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52b2685e43a4ff9ae6ff3476f2bdb84356ff427ab671bbcca1de6e486881e154": "0xa184d0a2f7d54d4552bbdcfc10d287a4c5bea5aa", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5161f76ec2710f6f2b43ffdb795a2bd2956f030000": "0xc4727db059e79445c819878fb43324451122df130dbc91b177e62df8ddb8017b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c1d264fb654bd7d676047dbd0fc92a21e050000": "0x16e27023c7dd6bd17320aa50c58b1a07410011070add2d5636d012a5e942d40c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724a7eaad0d7f13d1999206d8c22f926980a12ca6": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e1ce5cbd307c6242a9d224693a4dde031d519": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002e2b254a4e3877c6ffc42106cb4f519e6ac27a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aba3761ab14f87094b3ec4bec2b49477e65f9bc0": "0x00564aa0b30100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b1190e1c02cc7db63072609b9da9dae5557f478a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744f4c9eb38dbc24b17fadecb8033c24c70e7d836": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785e96a824790b12fe512397506d97038500b861d": "0x004ce66c318e28000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978889ff5b6323e71c28c26d2c34b8bb52654f00a6": "0x008e0d1eb5401d010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c81f502e87e7a0236ca1616016d216b81b91fc61": "0x00c4463cbc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac47d44618795ab6924305321ad07000cf52b350": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8cb954a659869c053877b65d7ebc7c30e97a7ba696432a649f5f02965187295b": "0xe5664b93ad268393d1f695c4180993e60c59fc3e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890067be6b1747f53e8c03246205773f4622b858db": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289198054b85123c69a58423e20437a9190b56ae823": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898533a89796fe8070604197679c3e250ea2a88a4a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e6ddfa467463a61a727a6f163f470ed467080000": "0xf04861121b61c5f1251e345b3bdd173cd18a89e4641984c7f051d796e295e01d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ca2f2067fa1c81a353a98e49b7085292f3526969d67362080bece38eba9c93d": "0x00368e2ec353e7dc90153075954cd3dca551f35f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006e97e28caa58d3357d070c9535d6cd06bd875e": "0x0080afe64af904000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b2272bea66948af04edeecbeb0171521cfb24f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c60d96a54d67eabb888e162ded238773b44ca3b1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad4551742f5718e0af5d88119974c86efc8b83bb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d4e4a2ac2754434e6b32d114c03b18f3c30c0f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004b8716a1f5c2f8a423a5f170dd5fbe4f436171": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f4bbd56287c3b642dde6ed8f03d2f85ab803c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b42b3d9cbbc9daac90d469cb60ab5bf116bd9adc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006ef813cd8eab68641cd6fb8d5f3b8126abb5ba": "0x002a535b914203000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f419efe3106cd177605843315645cbf4a090000": "0xea62962b601de31248d06aa13a52bfbdcb1ad4e534ef4f271bd5b39fe075963700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890540049071c933a260a422784626b2b894823952": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5175300f82161f4d33bea459719b458be498070000": "0xba439a857d9063fe02433e129da8ed247e75351f480b1b2fc023fa102379562500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8b5bb41b4a1a97ce7cab8ce22183024c57125fe": "0x00e4b0a9fb6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4ad39c91010433747d3e6817e73678e317969eb4c33786cdf091affcebe4505": "0x31c1fdc59cea10ca6dec6975e83f3c2f5bc629cc", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51066df031a7bca6942fdf201169ef08d73d090000": "0x168878d025e08bf4d1d68a950034db16057191cff93cc2aef5603816dc52464000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928933f00d8b2e67b6239aaf2e152efc9d85ef113583": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896641a9a247811657a0c435567260eea47c3fc81a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51843e6a606c97d2b71b0924b3fbf75d12f8050000": "0x229edddcf6d16c5d5438aa50b68c67ce9a422dfcbfe5500650d897c1bd50e04200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824399fb6c13d95f1b74e77778fc86b98ffb30cfb929": "0x0060b7986c880000000000000000000009c2dc0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ebd2c29909eb603331b960308a070b839ee78e80fe12ef05e4639a176ab743e": "0xbd6e08fb25db746221175b2d50e9fdf7b227643a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736921aa381ba281dcb6fb6489461c2cabb8c23db": "0x00b051af5a8401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a369d5026865d345184ff86caed29c118a1566a4": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0479284ed416d070f4f6867eeef4c2413ecd4d57db3c9fabb82feeba8326e2e": "0xcc3d336002054a3215fd3cd1f00f08bcc494fbcb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a41d48673da40f5343bc1e871eb360ad8b9bdff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289638a66644872aef9572ad260b0b353d4a860b45d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f84b835800125e729921cb11f3e4becd258d7741": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c8b8633670b06b418295c37ad8e9390c6f6ad72": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743bf5419c4eb65b6f8cd55489338ded388c71b62": "0x00006c34d0f403000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e4e3d34f7a72015774f9e614b0d20fe48d050000": "0x2894a4e556566eaf46b3e383c7d1b63b16d0bf1400bb2c763dbce51947b14f5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4b5aefb88bd749426b9a4bbcc09a3e9760493c6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289029c5bc3bb8be76487f9b75b5065a6f57ade84a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768a85a879380543b48c40d0620e0681300a88553": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514b48fc9d64cab5a9ffea245e1eb20ec016020000": "0x2871403d3277ed54a2745378fc937e98bee1f7a7447331e9e05eb559671d964500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d863ef80ba5eaa59e9daf2528dfeb5e78e8f83b": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b06d958cce8ced5b26ea37e63d26a3a3a0d3ab34": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22f00f2ef7569b9f5e8fed76777eaae266c7c355b03000329d1e6856791ff229": "0x8ebea2c1deba5a629af27b0c8383113008c8ef43", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dc3020ef4790527aeb51d62567bb48642acac8": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339744e45fb5b5bd8e1bf9d1310b761571e73fb02924": "0x0048513e650e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea82af5d798473d0632d903e65c3360f56080000": "0x4397c030e61ce77f663d79186e3e1c86eaae6616e1695e0ee2ca87ef7e18d19a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8829babf92550447e53be69e21369ef808fcb572a5629ce18dce2af6194e951a": "0x4af79369d49d03b92400c3b67a65b694044ead5a", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfcc3adcc46a1d2dde1ccb5a05db9534b7c7fc30404ffc7a5c2e3de947909e94f": "0x0069bf728cdbeb783ee8adb4801db3721f94f1ca", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ead61e3f92e933b8ce06bc76061f92455029fb34": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef3190039aefa5914791dab9d5b4d019b0441e14": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7097260be77cd8ca74c7069087c05a601030000": "0xda9c6a6ad458f966eb78979e4c7bf8557a89f71c221927e0efd1f5c8614e815400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700844b1cb340393be1e3cf1c0a9157c57dfeeb2e": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742520065f9da805ed7d122f009976a4dc769c040": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289511e81b9d6c360fb6ecbd923f66aad7c34cdffb9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890083c66b575c021b8ab547e522a4354b78032602": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397082d3e0f04664b65127876e9a05e2183451c792a": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a774182aaae3cb75b28f24b4b77f7c96b2b820b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002ac73d3488df5bad2e9e70dc37db667371df44": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439e643779779aec00285eac62b88c8f926c6bb1c7": "0x00706f96a686020000000000000000008564160400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd63e66ba8c5af8b64993b764f71aa50a4b0f112d87f49015031b8378f8ce2d6a": "0xb4c4dc1fb222bae0e04fd8cd23f78b37bb39c17d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e82b6cab96e3a03c7f974089a585b10893a5a9": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890092faf23a9a9c66a7d8ffd3163d81d9f2bdfe56": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008ce1ef049738e34a1f1e03764ec209b329a558": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c1679ed3eb12e0f00ff6e9e42f893aa377539640a1519abe3cd2e02023c125c": "0x00d1b7bff428ae90b82147cfe52e2e251b1fcafd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d9f222b9f83e22e15702b798ff9b4d9d30b117": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098029c2d615fe6f6cd9a6b6d35618878dc4cdc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000df35b3d62b94414a010b9f2fe6a1489b32944": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289024afac105064abd224256087859ce5fe0dd2f89": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895fa8bf3d389f425cd6bdca59d08b92645e236b2f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d580251e8a4e82ce48d1b4f09b836170753650f7095235ce0d0ad4249cacd1a7e": "0x805cbf1fae3e810ed0cece7016848a677cce945b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6f372dfaecc1431186598c304e91b79ce115766": "0x0010d733860900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4cbd028b49652bb2a34aca9063cf88a06495ef9d5d33392598e0e57de5046811": "0x00e173806d025484091145ca79d5d830f3d38b4f", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96c27443a5b800cd9324210798250c05f931bee9db9d99c0e1968b820da5b567": "0xac64a0c791cd0b6edb560c121fabfe6a23be2c43", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890052ff8b09907fd5cbd63791a01672362a6cb075": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b3b1314062c51b5df40b45278143d24558080000": "0xb2d89b7dbf920e6cd64997f1b3ee49c4de09327342dbbba971a362062817a24e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928954970d8d6d8f8dbe9c87ab9cab9057fa5039e4ab": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970089698ab4f16050d36225631917d4db489dc251": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0aed46706bbb3fd28d13bc698b81ef6aaa0cf78942879954835e3f8475f4044": "0x6deb669e7db5d02735d5a4f14d622a09f6d27682", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397819669704eab9a1a1086840eab684846647b969b": "0x001880cb1f7c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f39b53937f425d7e764d6b1902bd775ba3d514e1": "0x0024d4d8ace401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f48b621ec245ae6a2f1743302e9a0d2a5b3e1228": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890060ed7298f6492489442f555e38acd8c672edfd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a22fbd442e50f1cd5ce576ca9a6d917e1481c7": "0x0032b7ae9b4900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b546f4ee227999882be22ac4425227c4a80c550": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903197abad8079143a69da8d037b6d69bca469bcb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976be555d4469720a6a980245a1a2139a5e678e415": "0x00a678b08f4c2c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970efabe80d1646ec4d11f46d8fed63b070c11d5f3": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5145111ecb0584e6ffa836220c43885e399e070000": "0x9e6e426ce0daef13a18330489126c709e3c54dd535be6e3840513ee1441ddb6300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f6d321376850f36041db18c5189104c6c97bcae": "0x00005fcd95f209000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d622140277a3ac51d0b235438d6c40c282038db51285130194d9f61bc3894e67c": "0xdd766dc1c0441f9b06691d3b19ff1d150b839e7d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eaa40f6b29ce35d8f53f6bf9b2a7397e3d8475af": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae070273b639a73c42e1878849ed52f6d9e0cc6d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902d0f868a0467b7eedf6b252c6a7e53ea90b13b6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2736969960ab728695cfd8b866b2d1d1219ae9799fafbf20c2901779ca1c275": "0x00a22fbd442e50f1cd5ce576ca9a6d917e1481c7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b44d2cd7ed00d8bea6151d614bb0d058af060000": "0x0c0abd27328b055be235a79d6b8a9ec1ab7d38d4c6f2b6ff20d9637f9aee4e7800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da0396c581d426dd0c333d8991c1e979e02f3223": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d941030b8cae55fe5459f75470417cce9030d285e1683f98324a7dd81ae1b6c07": "0x0041910d9e4c61fdd7759a2d317ab892cfd80ec4", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243006261f93219f1cf1b3468d807503dce5a5b11f5": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e4aa4412dc3eed8c5c6a39288866940730dd257": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b1a22d149fbe630c3f18a01bd593618e1e2fdd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac0ef3f6d0ad997a16438cf7cc685c2aaf032f": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d409b74db75be650cc36e53192fdf7aaec35002": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289343f61f6d7393b93a6693b0114b8be1fec7fe9b5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289355d599405c853d1be6f1ff027967879d69acafb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d6fd4653efa8efde0a7bd582adb2d0c8101c930": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c116f3128654372fa53ea006f91d4a6cc8ab13b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985f8d96b05b4b33b934f358bcffc916ea60ca1e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289849c50c6f7bbd0663381241fe5a7c65b3d74227b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a99e74d6616ae317cbeef70401baef1383d287a3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ee27c4a756dea20d48104529055cdb539080000": "0xa83b893579065ff9265b9cc79966041e55cf8f06d1d45fbd9e957daee08bc26000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51835c7bfe9cb1c66001424ac36319745eb2030000": "0x5e007cb54f4faae216bee9bbe78fc93ebc83017932c2fbfa14e73de785d9ae7e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae2770b60928d239ac9f3f2cdf1f1532df020000": "0xdc73a045120bad713a3c84fb3ea30d2b28b680eae6737465ab10706b088b011000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900272a64bc6afa24c034902ae6d9253314a0f655": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af9e08f3020e624c945cc446e8759602049cb176": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51555748e65f4978304e4e4feb42f05d8709040000": "0x7cc77c4360b1e179bcea17c296e799401504ff28dc6db9840adcafa1b0cb0a4b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339754f5873787daa1ddc97272e9f7fce534015f4d19": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d404e40fa7bc7015956de0fc04bc542baad0442e04440387a464f85f77d25a25a": "0x000e5a0a7326596d024936e96ec7b662e5de59e7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897194210fbd35b97b861afb593c7832c201e1d149": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e0ed608adb4488caaa5b7ae3e39f3d7ff7487b": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c08a9da0ab9bb63faca19694e66c95fce5dfcabc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d243411786f2b168b5024685ea3474897ef2e77b7599275431ba5229bf657890b": "0xf38865dac042397b42a80a2cdd54eaf32d439754", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f465f7ce5a1e26c402177194653c12e7222f127": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c43e6504928c56f0151eac7575949a8951c4deb28c9cd1acb26743de41df80d": "0x16af41d7d554e5814b2a906b2ac27bac06c9a61a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b31458838ae39fb3d4e961d063fe89ff6f8d9f37": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e95a0b7851db5423d0aadc91bf963eab02c6d440": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d6352629387b12b8c5a32871336775d10b105b3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff4030b388b3dc8280c53544646159759e3032dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e69986ee1df06458380aeb694d42e5d4b4098": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0e0b97949687e5cdc9ca843c0428bd0437e176d": "0x0010df60427b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397287bb445456ee7a2ea62c0a8c0de60d6eb41bf3a": "0x00348d451d1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a91987a0fcba374782d45d0a7237be1627836b8": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430ae2f976301c5afec7ec28494b91471c1c2f1093": "0x00c05773a57c020000000000000000002834060400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0455a49cd7799893e8a3e3928baa35c2a921c63352b4126ecb7942d7122861b": "0x28046b3cdb72ce8eac1e8953d17727f87dd6ff2f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970046cadc70ad1cdac10862e9ca7ddf6f5d1dd47f": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824347a22454aab7e24467ac9fd5453db69b3dfe8cdd": "0x004072e62d2d07000000000000000000a7df9c0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977dfc554e9b71dc76d1836307af3f81c15eb9d0bf": "0x00e849c81e1900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945bca14081244a055409294312fb1731ab3750ac": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ae9bce20ec8b89105efadbd7bc50d34843e9a12dba7eb10694105c617310155": "0x0024f96565d874463a46684d2f276318793049e5", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177f5bdd537a4aceeaec8f5cf802a30242b050000": "0x6c29577335bfd3cbe0df3daf35919a30761a13580aa72d1d3fe8003e2fc1a44300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e30bd1dd4977a85589a8000480e8356630050000": "0x308ffc25bb1c9025b53d9ac651ce189b9f4588a1981eabf55f0949231740044e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008c2651bfc939ffc086fd5b5e598cdc1d662c97": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7cb80242c9f91aa58a2a5b8565bd270aca1fe2d83339e83f90b5de02cc2c8b16": "0x02d0f868a0467b7eedf6b252c6a7e53ea90b13b6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec92519007b823765664beac13efaf630c263316": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798725bea9caf118e3e31a0fe480b887f81f45bd7": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700328824a4fc0484c8ff3353c8d2f65ba9e05638": "0x00c803ef0e4a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799fb6c13d95f1b74e77778fc86b98ffb30cfb929": "0x0060b7986c8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd22abcdf4219140319a7f2155c838897e8df31bdcf7a5f59567ca06093e78252": "0x0045ebe3bc90887088d9c91446a2973e79b0f78c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3878ca973b0f31e3c7a63bcb0bf7229452ff5850e734d3fcf3aa59ef2a6f5567": "0xb33841ab8e4fc931a294256066286270a77632cb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891615d921575a6948c48758e6ab9c560f1e862328": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a553b4aa347a13d5957b84d6f54aaa2e08040000": "0x7c8c3a92d8feb9d27f32f3ec67bcc6792f8496f7ed86d1b249c54205a39ee30c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289203d2e2bf08a58c132f650f44e6db94b78097032": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda8564ba0f7e717dd8d61025823ef756b474d6a3f3e8099da01ce16b53d85154": "0x8e7bd3dc5a41971455a7e5af99c3ab77766b964e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d67096571f54542c5950d22122a030c308e7ecb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f4b3e6adabbbd946c2c4859607a134e4c609f53": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4d620dd343cd3fe7c350707ad56680b4baae9a3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b3e7a175f6183e2c8a32e94881d9cc24b96f4a": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ae2a64d4c258fb4278cef0dbe4fd9e6d1e639d1": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc313b667a08d4a8293ed90733697961647be1182449338e3ba7215cb786311d": "0x4a3585a53e68650e03cebff3c42ced82c21ba6b6", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22a371deb8c40c0e598bcf145b98cf2603707a87415f0afcda8d4fb8b19f5757": "0x9311235dbedff7b53b7ab20dc27a76aa9708bb0f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f72fce633c6ff04e9d82d01a79cf7c4e3a54eecb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff34674c9401c39cf82d06d04f2037411d835db8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de18007c0afadc771c45bf719bc7fe5103000000": "0xaa16ea96e59d8fc82b496362eb68947ccace82da2f1f3357142c072725de6a4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d5bd2aba04a07bfa0cc976c73ed45b23cc6d6a2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda25ab05eac156cf1a05e04c4e6474da8d31e104f00b2e006dc482e622165f53": "0x058457cb480231445486c786db63ead914b9e1d3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c3f69ca5a5806321b36b68e6a25aaee0b58b259": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c723d6c9f5710dd0cc7219a4658f09c3f5d9928": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb41214ae65c8ea58500c913d29305ac2092f0d0": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bda644140f26702df53ea796f34c6c48a7080000": "0xbaa38e2043aa15f54d2febc1f3218827d08767a15cb325d19fde69f7ce62af3f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5af6b59d2da9b4dbe2ce617dcae625a004b0607": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700705b1272d1301af42e4a730161bcc1da26b534": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda1858f63aeaf2dc56970d9071cec207978ece8813a381174c0e36dcdf0eb063": "0x0035fc5208ef989c28d47e552e92b0c507d2b318", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d7fa21691eba7c0030910989903f677705060000": "0x1afd8047b4dd08d1d8bc15ffe901a00390a71d7dc601650097828c3fbc6a220200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee9be31704415170409d65ccee6fdc7149ce835a99396e1e471db458d249d472": "0x78cc3793d423ccb41bf53b2659d49a6c42ca3fdf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007486e5e3a85ada7f1ce1fa177e02da6321ab3a": "0x00742daa350100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4fc54ad6d9b96543f33797cc384ed2ee33902dd": "0x0034fc4eb4ae13000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519fbc06809f8798db97f6cf453571a59a82000000": "0x581b789243689bc3367ae7d487ef44b695892c6693e3c9ef8c4ff95fff99df1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a64dca67c64d9361901a1415bfb3469b000d0bf7f1d439824cec71f87022159": "0x07b10fb900a97ec4a265c6ef64d47db52b9702d0", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d229822081bb748111238c67574884b63ca85638c9b139102fb97796dfc2d660e": "0xe1ddb8c1e2204a92febaa4dc7242590cb74359f1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b14e2f2c808cfcbed4b27fc8f692c928589ded14": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890044b3d793d4cbf50f0973e2c8d62ca3bdcbb38d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d3a544384b63158fe841d6c84b27d998ee27a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ead8db7ec6c9dc388f70011caa225f016e070000": "0x36d886739e9ae36cd8642c33d2d991f613b3036c95950421f8e7e2b5ddb5cb3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970040c3cb223f156e97861b8afb63fc8f62e577b2": "0x0014c1cb9e2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a7eac235c1800f3301e452f50a8df7a6f82f6192": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900994d4bbb81f3d3cf352edc8af739c878b78768": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88ec6a8cc750ec1221580f795c40b2e270a9724dead719ed76076760851f5878": "0x00b8d82c1ee5bdc3505523ca8d1e0e8e7df6b10b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c8b8633670b06b418295c37ad8e9390c6f6ad72": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbaedf2e50d3732045c8b24d42ad3167b994e318707f4ae4cabb7ef212f5e3860": "0x1732d95532f10ae18b2317ee75d4ab0981369f37", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51040bb853cd2e1e5ea274bcfdb6aa218734060000": "0x92d2877d5408cb4596cbaaac36d35efd65a619b99487ba980f158f83904f000100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516e3f368a59aab0ee2f18e822eb48ea1853050000": "0xb8cb6953945a47bf445e342ff346b73496519646383bafdf669462c5ed30f50000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9094f605ab3790ed1bcae8111c987c786dd294a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896eeef85c9161e7486156e8fa517ab0964fc1b969": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397726a0e3227f10b8967864ea8f7fba8b5637c192f": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002cbe540f860818a183be6052ffbb1de22dfbec": "0x00ec045dab5600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899f10fbb6634415227e89d542844618591a7a8ddf": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c70168f36a1c2fb21fc8610f326db568a070000": "0x5e4dd79678be50fbf6aebb41dd0a4b6eb2412d28c481d09c0fd2dbb14beed61900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798f94748373c637c8599aec7c09e7d40ede3b78e": "0x008aa5136c1d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007abc56f6083d36db03065f7afd36c55bad6afb": "0x0000434fd7946a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb635cf62e87d26bb5fbbdcc5f2cc16bfb030000": "0x5eb1ff55a31e109bf2246f0c8a430037b4ee4b676d4d8a5ef02ecf3d4e292e6500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978919f90098e7976078c2ca828b6af4fdc3ab9052": "0x0070f7e810fb02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e005e96b230631a08c53a58cbde5e1e13943647": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c319e148aca75808a0ae5b613c33a7b8f060000": "0xe00c839391d9bd0ebb8f571176bd305e67677d96a44ee1a73962deb31a34162a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ed65f1402181b155f890aa7715576d32eb020000": "0x480e00bf0602f92b26802a794b8d837677d77a4abcfeacd6d5b9f97c4f26df5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002176cb83b3b5670fd6231bd92169346fd49227": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967a01ab58cc873bfbd93c89f2b0897e85007b772": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e688284626ca2d00b578865c0e7d189c6ca978b0": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289afd4d2d92a53cd312df6856ea9faf6b8d9f8c3c5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f81a1831e1bb3b21b063f40b5fd29969d9cb2ee": "0x00769ce20bfe00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960aebc1d9f35ac28f40444bbc318abd850c9376c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397582dc3c082204020f1639c2079fcbf2d197eebf4": "0x00d6087cfef24e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e79ea613690def3083ecc0d55b223e7711369c72": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51510253c3b4839c9187eadb4111b301f905080000": "0x0042d0cde6e173a7beb9c72315b9efb8ace76c323ce8644fceaa8c2d7a18dd3a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a0433933f6ea1084a7bf83ccb474b4cd263e7d8": "0x00502269587001000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aef69db824a8cec8208fb4264ba6831ef717ae8f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51111fb9077a9e8b21222433ed4ddc1a83a5030000": "0x52559f2c7324385aade778eca4d7837c7492d92ee79b66d6b416373066869d2e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de2d126c3dffe301385f3d6da21756147d8f58040a9021e4196a89fffa2800a48": "0x56666fc53f50972d6fe7d75d1149ca3ecfef486e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003b382fd41c33964be3e159799e8539c0b78159": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a9dd1d60d062e40c25417c5aae94b0efaa1d3096a35e9640215a3a0d6e99776": "0xc4468c8fd916e17f85b6e76e320e631712eb8312", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908d2502ef55264180f07970bd2fe83bc206f0715": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c76c643a4c56e4d7f45d3e8a9166340c5e787d3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bd33bc721e6470c15d18489c3d56a0253b030000": "0xa44cef17a2676c816212c314fd6b6c46fc1c3d88c888188a0bcd272e25059d3d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700092cb42b631dfbdf26f405f931c409fe5a3913": "0x00c0ddf9a28300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a6ed25e84058c2810261558ebc593216aa8d1bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c95d852b78d3be6f3df2c1448f023ff3ee4f51": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e11df746c5ae8018c863f98ba5e0970529780eda": "0x0010b4426f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e787eb81b0267dafdb6083fc33f318ad0bc945a4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700020887bd8bfafa35f1d5de3c18c6f81b0f8f29": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d647cdeac80acda72c27a54c2aaf6e125cba3eee": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928947a22454aab7e24467ac9fd5453db69b3dfe8cdd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5a9b2328bfce7b23d8ecd6dc396125418dc03a4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dd083f4f90637b34f98f77c9c6027a0c78c6f2": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4e2629f039089150d0cdc2988f05232b306534567f3c2a2bf93075a82a0fa113": "0xdbb8868fa368ec46f1961ddb5ad9f01cb770424b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978622cef8a526857f4a3223af10b302fc29f79226": "0x002c0980fe5000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68d958e8c1f36ccb18e17e1151bbfa4319cb4fb578b14f0b74b8b28cb2d5f01f": "0x5d045e79ff7d87b7fc35c70bec29501fbbc28203", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dfa25c63cf36b2049181a0038762839ba364a8": "0x0040aef2235f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d484cdc76e0b6b2cb4e30850327cf37e717d91e343a62bbfaded38aa8133cfe34": "0x537902c724861132c14848de8f504f196eef562c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007af51d441a632cbf0b4ec175e61332f28583eb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80e30c47a3fc276c022612170e25be798153bdc6fbfc229c398f580646242978": "0xef9d64a965dbebd8671375325a0aad9358218934", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f41b89ea9a14abeb84183d25896b79071a81f5a9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fba1a1a641591737a3ba3e7eb236d2cfafdeb69": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78ac7bd0fd72ba1836610283e8035a8f5f62e4305c890358a7e182dc1686b734": "0xeec5230343cb5336cd6e3a8cb29e5e267d6d5b21", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d97d053f7c5743eb80c78ae4111ea464ba30a2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a7b08615c6206550ca43f314f3814deb5842b7dee2ad0af0d292847cedc661d": "0x0aa3a0ddc82af4c06c0bc4c8acc6a9a9a6280672", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397341e46b97431121edb45c7397534704946e1090f": "0x00ac81fb215a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51247099be3e71ac2d5e4f8aacf0aa5e8631090000": "0xee5101da99530e61539f3ffdad3185b717c3177095b2007af99b7dd05823a94300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d225fabcc55fae4c1afebe501a378409a53191f0ae212b917cc3581c9adcd102d": "0xe4ba1c4ac566a049429432cc11f4724a4e394538", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d01fe71aa1b2188725a4a1d197f8032c27f75f": "0x00ccf483926900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fb7bfae13cf461dfbdd9ca3820b42ca2ce060000": "0xd0947083ab9417ea4c8a5e1cf759f3619622753fb60579c45dc65c6cdda10c5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002d27082129124544148246a221366cd71844f2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4e69b23f84fdc3e0482543eea31a871c709f845d9a5575ee148679266db7873": "0x0083c66b575c021b8ab547e522a4354b78032602", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d1b7bff428ae90b82147cfe52e2e251b1fcafd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddefd71969bd8c3999920e2e07a671cf76f502b08341a0bef1a4669d3affe205a": "0x392e05b27079b3502ef2937e0af15aac14e8d8e6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3b4bfb9fa5372a43bab26800f6cb125c922c452": "0x00e04d4e6d5b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c76e3fdfc70d2082cd519b4ce83fe49e545561a5d108d7420af8b15eb118a7d": "0x50d30f8fc7564e1fd231e160169f19e864c3a641", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4e80b965077bdd3110511713a4d625df31159877337d894999d66713cd55355": "0xd7ed2d43538974c607917ddb8454f00f3cfe250b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b67b5d99f7bd244fae58ebf86d35e38f72cc7d": "0x005a1220334f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e577a9eeb79d887f0d6bf7f504c5f273f533c04": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971808a1c1c2d6fbc1752b8a3bfcae4b1ccc033202": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd125f7c40e252a090871b865aca471f5cb8ee01": "0x002c490fd71c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890046cadc70ad1cdac10862e9ca7ddf6f5d1dd47f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900518bc639b1ace490d22790ae1ac8dc933160fb": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dd0f2a2fbb75a38488ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166": "0x1c151c11cb72334d26d70769e3af7bbff3801a4e2dca2b09b7cce0af8dd813075e67b64cf07d4d258a47df63835121423551712844f5b67de68e36bb9a21e1276c694dbad86b8de9c1c9947e536b3391b77caaca86a23195a2b111b24b0d516450e91d8b60377c58f1e8dfb6236dece92917f1b4ee67d2787ab090c5f8d2200f74b919094e1fca66ed767766aa0a91025b6a8b955bb970912900ad4e413ea936", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ee43bc46973fb91459bbeea3c7f637c6efef128": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730d381605485745197162f89fd80937d890b5358": "0x009a685f941701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c840d94dcf091b87fd63db7eb0885d9ca4b5f79": "0x00bae4d8dbb77b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c29f18ff6f0c0ba071e0c6435efc1cad05c25a9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928918b453f5fa588d41497ecf34e19fd30ed008e34e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d163826c8ce7c0ae26db248337eab2cc31d575dd344859e51d13e8703666a1246": "0x00b4f630ce350efe5e1171e7310bfb519b33cbdb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e7551eed3542006fb6ce1487e3330f44f6db0f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977851079f455f5dae12a4f668b983908dbf98e56e": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289250498d076866e2178a28cf09444f2ab34d57aea": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112d8f4c24cc861ca7cdcd2ce96c8226c4f030000": "0xd69dde7cc6a614142150f8edc4c87b2f48a13f3a250b2a9698e7c7e473ec261500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fae39043b8698caa4f1417659b00737fa19b8ecc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd86986ba67b4a1a8e7be4833dde2c09243333d7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397562cf2b3763971e591c547a116f0d08035dc6155": "0x00087387252706000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a82d00e3a0a34d054f2f20a66371ea821cea6f3491a3b9ffcda6e151fc37e68": "0x0074b0b90a98675309b9db4c27badd1b8ea42b0b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899193eaa11ee8101beb2f7c3c88a5df61a5114f98": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e8d6becb121ced21059c3a7e05f80af633050000": "0x103978c14955ceaae31e258d640048cba43ea36a3636d4f6884b7ddf5e30d11300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a8ab02983c79bae0385d2650e022adc6d121bef8827d81ef82104e43b21ee44": "0x73361bd483cc76d6d0681065e6ddb25e84ca96df", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db63b6311906644f4385479c41b9c08d1392886c83104810043145f480b78f232": "0x9b300a2c7b89455cd5f3b4d3a998afd356165607", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1a73e362728d8de8f7e7961a7a92486d9897c1c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004f8b0da646a07903c9d2fdbd90579b142fe435": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc5d8f3af2e32f1c627f09e1c1d2769249d00c17c12da2fa06ed040beb38b1bd": "0xc69fa1a7e9572b1d8e1abf43739fee285e3b018e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f511e2cef19f48355bf52d70dc291f2e9ad16e": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518aebdb5a385cec744f6f8ce06a152c6c8b020000": "0xea9138be7bd2bf49ac9e7eb09cc9e7727ae44b1b66deb95562f353c71b2ce16800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea9d6a9ff692b9616f90f983f2e2aae2ca3c9186": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e386f707569dfdea7210b53bf3e03f6d24ee073": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db06e66dff95cbb0f8ed61ff4a4e400fff92c8a7a3c5b971e017592393e364b17": "0x24a9f3b7757a2f30e5171009f067bb906f9a8e67", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d06dd653d12418aca05e155c451e4c4f628ae986": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a963493ad9461db8813dc1a72f886a7c84bba8f5aa6480dce7cf77c1849765e": "0x73213bdb86a2636440bba625ce5b570461ea79b2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4cb2595186d9876177cfd60bfddb0dbf4dc11bd": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900130a5ac1ae656f19e54e2c28c7d9b4e96462c1": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae3df6f5826c3b9d92ea03524f83fb4c7db52708b6c23e61843433506ce08e23": "0xcfcfb4fa0e64528b2c5c8c42e7d46118ae142d92", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397254c62b0e0862a383dbba455dcf692e71fadcebf": "0x00aecaf4c90900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b42b3d9cbbc9daac90d469cb60ab5bf116bd9adc": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397328e1f8f95476bc8e2df5911cdb36d311c57aa06": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de00c839391d9bd0ebb8f571176bd305e67677d96a44ee1a73962deb31a34162a": "0x2d409b74db75be650cc36e53192fdf7aaec35002", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b004efb56cdd4fb9bc79132f2fd60902c28142": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4653f0d351f8bca69b7be83c41b90fcee17c7ac2b285bb01a95b3755a6101a3c": "0x42d0a88bd5baa87a3cf4b6e32c7b6cb3850a3aac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054ee21332017c772a9dcb68cc6e120b305c9ea": "0x007623119c4203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9c31d32260bde35e51bff1fcf2237219d99ef91": "0x00bac1e9b31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bee33ac5520a2245cbf8288e768a5cc26927cddf": "0x008ace1a761902000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f67383180d9cb41b115c017a3e1e9134a6571e7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51680e8f01be116107068ba8b0c1920406fc080000": "0x885a263f335b180210364cc9de22b23cfcd1c90792971a82fca0980952a8721900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de50cb5ea3d16534aae8b2cacfc7582a5f020000": "0xfa04b68da0a4e5933340abda5c7d7007c51bbb2bc48067e8dec0ffaacdb1182000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da0396c581d426dd0c333d8991c1e979e02f3223": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087066f0dbebe06b184ad03aaac64f28b6299cc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743dc2d9be62bee47b83825a901aebe29a1277454": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d847c474dfcb41662f246b6e223fab3c9d17832da63304dcce5202f7aa686574d": "0x422af240dff9d253cd31c30d5af9647fc60bdc64", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daec55c9f5ae328c609a1fb6a914ea6079f25f33d5ea261fe272460b0f0973d7a": "0x005e5c04f113b7ca7c62a331be999bff4f0ec44d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748c13b7bc700451b3d801023cfd6b0d1433b301a": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fd663b3697e5e2251919cfa274345afc70040000": "0x2888de98d79687ad6a7f8c38c9408829b86680eab8e30d62ec36b989f8088c7e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339764465f1b98dbd0158f23e0dc0b1aeb967e1565a5": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006704be2884970368def1738cc901f92025c04a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970aa3a0ddc82af4c06c0bc4c8acc6a9a9a6280672": "0x006e003d620600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928917d6baf59972f76f96eded80604af2a5820fcbc9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf8ef866b3d8139c982961f6850fadc17f1d48": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289657944ab5a639ec79ba234dabfd0eb792ee9412a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897e1a9cacf28b0e0fd619a5037c231047c3e5aedf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e531bbb0dc3abe3d335edbcf5f479b84c2839c8a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dda8293a5da4a6021f6b228845713ab246a8607": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e77bca46a70638e60c9f81bc09d2daad7ebfb379": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900928ab46f9251610992b3f5fd257cc031f354ba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ee3a5ae8aa8909d1759cd909d15a646ba94a025": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84583d9d96ad734c94c2a8e35e9545434a0aaf87ef3b14a3aafeeb6f863ccbd4": "0x7e22e58855cad471e60b297f1a48c34f44091132", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80ea70620d770611eaa9f1a784b08d3be34f0c48166c640fd478059b954ff432": "0x26dc3a2b04c409af7f03783b000b2cc05020ed7c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739db9ac590a3fc2ef947f0deb09b400f891769c3": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973cefad973ebe1f54b6e790c823f90f81e95f4aa8": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002afcb6eb1d06a5f5f26360f72d777b2942c4f2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51870204cd13f30721c29a31401fe406dd7c000000": "0xbaedf2e50d3732045c8b24d42ad3167b994e318707f4ae4cabb7ef212f5e386000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b279c406a13a1772c7c382d1096b04a7e65e753": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8eddba03a0f2ddba21aab778f772c14bc6f1999fc1f5e25fcb2a7ea0da24055d": "0x003040fdf21fcd3084fd4076962bc4c7e66395d9", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5147e7c8dbaa1cd4740245506168fdf3980c050000": "0x76dec076c9a31c9b8493516198ad24f0e8f47969953cee5821e30c340f27651900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700169f2979d901be42b7ae68ee6f25bb38ad1d10": "0x009a3f588a1b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740f8fc59e380b53808df1bd1c4e0e2674186dfab": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793d79977ef117007a0028218d99dd2caebd70b55": "0x00148b66da2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087df4a94ed0637178dff912b20e01ace2dc9d3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897bc8bc547457f1a52e7547baeecfde77966657c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd9b1a9d7e2c239ccd8fd3f739bf2d3bdb3d6a1d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f78e47fb57e98c185185608bec057d495f2abffa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c00e0743d704094b1d198076a33a33487e2d38c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c23af0d609849eecfc412d90ac2da7acfa050000": "0x783eb106ba819ff2125db858ac9bc9a5f0cc3f825f6a8050d586db169555ee1600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5167b497952718b90a35b48f164db8c11247070000": "0x0e9511e878e0deed76cb465595c6f558d9cf512f8632e43feca07a26d060215200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9462cdda81c70aa96a411b2b570e53e581fb7f7c49bc26dd5c1dd1e304e1a46a": "0x4c9520bc4a39e7ba4108d2794b5ef7727c78d34e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a10042730f48659fb0c3fd7f3cdeeaae03317f18": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d920bbd35a0a98f20c6eac5857ffd316b80963": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892bba2ac16832d15f8f415f1cb351fe20977ca399": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60145312077b3fbd05398e5fd1f349e29b41e6e38029fbc9bae2f1f8a9ae8a2d": "0x765fdcbaa945c2f73dae083770dd0aedfa386d5a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e87a44ddfc5762e9cf415c9c00fcab24f3ada6d3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af770e8cbcce62a1a458739a4ae0811c72d33f55": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511a5a3e05772e49a78847210ae01d942757040000": "0xae6e1f76f1a161f6a6e884753f86ba364bd84c59d7ee14a32554bd1710be622e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd17aab6f8299d35bc11428093bf1c4ae3b981f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899ad897f48e2166a71b83e541cdeab9c36232d905": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971cda53cdae34c5c3b2c62e35bdd1db577e56d3a5": "0x006cc682d80800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c5f66fc6dd672a91114e67edcde69ac17b2ebc8": "0x00ccf483926900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad1ad5f214271d037176bec3f90fb4448ee56399": "0x00e0fe28a39500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7ee8a9df96c3eb8146b2532d3b25421a451a770": "0x0080a5663566c3000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928995009f768050dfb14ef9ada842323c6349386972": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daaabded5fabc47d6ed0818f8d44cff1c5a9b97d0d863dfe92fb616cbd2e119c1": "0x6ae921692a206089246a967450b1b88783ce8fda", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b55cb6edcc8c9cca3b659007d1abec171bf75ea4": "0x00cc6fa527a006000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d2c56fc0046932d4aa37cfecef3a47d143722518": "0x007e58b8edae01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890055a15e869bb215e605335181284aee8be30a50": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973eef4ebb6697b4b0408d4394a37794b484f3f9fb": "0x000620e7ad0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978beb69c07a54a0feff772c42eed03d8036bcd446": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979588686984edb566be1e1b5c367aabd49aaa5522": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a27e4a44e3633f546f8af7fc0acefc55e58af5a": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c43afbf4fae6c9545c16a6de3c8abedc2c589271": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db65d26557de4647d0b74c1c74f33ee210cb1bab3d38754bb09a664f6d1db760a": "0x03fee733b242749112fee4ff2bbf7f612dd607ed", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891476d4c5204269665dac82770a8cfa80cb4ee953": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397895607ffa297db864ec7da7351353618ddaebdef": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b2898e4595621bda49420c368efe9a2b10050000": "0x500774a5e6eb480dcabecc949e4c2508d7329ea62a1e68aebf76b819da6b864e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc0a73abf38de6f332b9dca8778add43e53bf4ad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcf3808986a5bdfbf72211debc42cdd72af74aa1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972186264cf67b36c8e63ca37098645e77c331d769": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512373859cee064c4848ff2807e3a472647d050000": "0xd65612e123691bec4f749b69367b6c04653ba5ba43e83e7d2d9237cd4fb2a20c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289945df54583eb102061f57d3b4f3e499d7acc49b7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b26c71b5246b3d118411f74cfdaaefcfc07645f1": "0x0080c3b8f9b75f010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901ba3841bbe358c1b3a9310d84ba98bfac5fb318": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003850a6770db5d0bde4dcf7985838a12a1f4045": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5199d341468e6a933c152b170acac5262b56060000": "0xb0082cb409439012ffaed48a46ea0b190fb972f35c32263763558c2c4e94226d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e84c6f6811e60fe8d08e6bb2dcc81d4b16080000": "0x9e3a57ce212b3db9c683245532d085de60e18bf3d249275c9e7a827939568d1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f4920d9045a58646dada2c7a8b48f513387c86c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700240495286c0f4420b6cf3b7d98f50682f82544": "0x003e7409320800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fba6cb41b57abe94c1d80b7d738e9946d867f8fd": "0x0056b961800900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512e56477ba6fe39168a8e5d6c5afbde72f2080000": "0x6afef10e3de1ac622a67217de17ac4ee000d179fd54edba27e77470d961e8d4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22fff76bb4a0a5d66cff0392dbc083abbac3b3046f6fcc328abf0ddd16ca0837": "0x141af52b68e8e1cfe3318d7b91c698b6c0e2d9f5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397781088752c0d882ad057dcb31dd0d023efb8d872": "0x00c66729ba400d000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51375e2162dc0dfe5cf0247a0d6e91053c5f040000": "0x38e7887c528f5b54f12d9c9ebf7731d89c84622e02a8139059f3af6e4ba6452100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb9520248a32078fca7bcdc6459dda51afa86fe3": "0x006e1a13482600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e09656727d41176c0b8987f684450af02eda1466": "0x002cbcbad66f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e3ea41cc49b5791b4410ecc3d2dc4a303e09f4": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289781088752c0d882ad057dcb31dd0d023efb8d872": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289efe2bad68fa91496e13adadf87568b1fc3b454a4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928993f4c3085d088c79aa83a9e60ebaa245e8c3425b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5110f86a524410fb3a434444ef52d786cef3070000": "0xa800e44b2b342ef986a4e96fa2f2b49f57ba47851db3a54e915295d148c8180b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890023d732d511a5d2cb335d824655f29daa85be26": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d863ef80ba5eaa59e9daf2528dfeb5e78e8f83b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f7b34d58d8a6134c268fb8f0174e94ce07874e0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397600011fee56096e5858518ba9d12c43474866e37": "0x002ecc1f8ebf06000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d33aae1defd629dba3d3d9c225b1274788127318": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975246fd9b509ae75c0f4b2c176c3ee71de674f292": "0x00de9804010b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0a37554976f25303adf7a715fb050f7d1d73d": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289081c8e52338007010ab569afb8f1e098e645d3ec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891020df9da65f804831fa334e16befbac20599a33": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4cd38181e02e880a53114ccaf987a6f51a10bc1d172d509bab6f7e9d6eb2e00b": "0x4dff7bffb7fc240abf06141976d2fe0bf610edee", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890002945f1fc37863f255e0803b75ff1f5276e23a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896813622de314f3d0f3fa46717374e12a7bf6ffac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977735e8af95538d6b436e3f63db0233b46f23aa08": "0x0000b0d140d30f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978588ebee2efaafca8642783fe8bede2d9857fd68": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f76516ce11965b9970b53f7cbcf53cd4d984ebd3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975baef8c667a773f2fce5568f70ea4b8cf94dde65": "0x00c27e3a434100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff0447aac61f107abc8872248ceb6a04522f54a3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913376a50540351f4d0242e20256e857a80bc86b0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6a54b8c2aa14f2a9ab5c4d99c10f8bde48de08e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5127c20e30caeb2934b6fef459e226a3fa72060000": "0x3297a3b21fe2d3c8a89bfaabaa0f2e059a3d94577a04d961a557c2d25a3e573600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001802a47a849fb5d290323e4255e690fba12898": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ee051c50b5c51b147d939e25ce61aa7e05af10ced2ed62ce7051509009ddf54": "0x8370da48be315b1f73fdbf206a9a8678234a16a4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dc7dcc21d1c488fcf7775d7b081a882502ef47": "0x0094f9a9ef9001000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f307788d880e273d474fd37b4260469291070000": "0xe6890223c279fe3fc640de86171ae7e6f9edb04203d5a8670168bb725576af6200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979346f8545c9f873b09d9265c2ba196b21fe3f838": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea3243ff8c88cc961edec6c1cb24ff779dab9e1159a83d6a42ea07e125262a4b": "0x008ddde69a07c04100b334040505dc6b4125bdfc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768307d03aad558716061762b9b62f0f5d17c5c4a": "0x0028dda6111000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bc41f12063661d86d9df79c28c9a360782b478": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eeba76f589cb390ceaee0f15302f5cd567a05b44": "0x00e8212ac29708000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289523a99d1767f000e1e77ee5a4fe0bc6cf264a1b1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc13a9ed082cc1556a92d05a143fcd2346ebe62c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c20dbe4d8839b6953c7528824e42dd91ff1c564": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009cbd06cd1a0812b83234ff4b16d4561901dadf": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6bfc7493f9fea17283d9060a6316b02c3e92bc1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510db92076d98f4f58593ac283d5cc09656e080000": "0xc07f51d638daea7871de9c9b3685c306b70e1144e2c4886c808ad3a40f0c5a5f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928982d31226f14b0b79aaa950cfdd01ad248765ad20": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976df24f6685a62f791ba337bf3ff67e91f3d4bc3a": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397762a1795292a3d9355aeea85e4b174e9bd8cc3cd": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ec0fb95dfc28a7d6a15d3b0307a004048b0acce0b23b340d8c8e646290e803c": "0x9f043f875302e01d60d90831ca17593557969b10", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289898f81f8f9e937dc0629c0b6915921de04d13b6f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928931b81404b826658f107997f2a9cf96e6fae6915d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892deb3f6d44a5bb8154181f32f79988bfee948d49": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bfe8f085ce6b73c1e59c3eae993e73125180ae": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c69fa1a7e9572b1d8e1abf43739fee285e3b018e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bfbe75d8f450aa54d8291b0a03b83f063a070000": "0xb0479284ed416d070f4f6867eeef4c2413ecd4d57db3c9fabb82feeba8326e2e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f1f57a1b4a81a5dc119f226fee4ebfad4060000": "0x1cf5cc62622f472e9e347070cc4cfbe265f0e1bfe56e07462cfe8a7b628e3f5500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a3041ce2ef4e9ddad0ee763522a641b03863d5a5": "0x0080f420e6b5000000000000000000000b58260100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d7541983658ca17367c10e4ad6553103b3a719": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890026c2822209f9a0f8427fcf5d8f75dc0e471058": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eaeccfcf272dee48fa3e4e783c6dea0fa1fc38cf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df93b554f8a7c976f8fdb35afe4880a13b463dda": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c2a09108fc4add5e5259f8858d684162641430": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8bf671a6d683d47aadddebc4586550750407f68178f77a6aedda63fd0cec131": "0xdc86f44b16c4ecce7679486cf4006ae586bca879", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928982d313f325b3c9b63502bffe9c01361037086e99": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750ed8729f9b9cf868b12785094dcd61b4e37fcd9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb2be121b15ca94f6156f20b8b45410676546ee9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e95141639b4ac81e74704c7fb969ed396d50f67d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c1c9d83d1736537a50ca150879f2af7329080000": "0x0830fe5930e891dd5912ead314dab09f8c47b462b478ba5f09f363ac626a3f4800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5172fcd951206a2acec9bb0530ddc987d3dc030000": "0x44681d99e5d8c26050428ee732f3e8c01ca7251be24c12ae7b99aa44126bb60600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b2272bea66948af04edeecbeb0171521cfb24f": "0x0040763a6b0bde000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c2a09108fc4add5e5259f8858d684162641430": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c8b461ad395fe2411869281301c2ee7b5fbe5d": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397222954391116326ccc7e022861d3d3f22116ffce": "0x00d4dae9256400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518eeed960ed82a024bc79003b3140e02a96060000": "0x1803002442406c0d57f20520b633b631ad3193b654564ef92577569747f9f10900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975705d16cc35d891bf6951c24c374afec5f7e38dc": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e25fbe47354d8ed5377773251b41e1caa13f1363": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51effed96a97099720940328980fe1f610d5050000": "0xea989e5de8381aadf03a456ee925107e6145ff1f649ae0576eb763f33931400700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de642efdde17e295727ee9ee006201c9a06da916a936452babfaf190da3ed1f58": "0x04c6f1d15b8b0d5058db45fc13d6193fa78848be", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5198add5f7b76230ebf9eb0849dbbefba374040000": "0xf6be65cc16c65708bb6a0e4b9958ffe23d1c56ee5683670a69dbbbb70c10d50700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701e086773e4f00f25c04e6f0b8607274ba27bd94": "0x00caadafad0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397765fdcbaa945c2f73dae083770dd0aedfa386d5a": "0x00520122088700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785e2f2767bcc9cb4814bd555413e2e17e1cf8459": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289100dbb75eab5d98ad65ef16483aaa68e68aafbc5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f63722233f5e19010e5daf208472a8f27d304b": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289996709841049286c8d63df10988e70a790a68daf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00d79a5a68a82dfaf55ec01108f9850e47ca61887ff2f7272f5dd9216cf46432": "0xd315959e879d36d314c19ccf6654dce6b7255fb4", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51016f9a6dcc7601d0a632fd00375289ce29070000": "0x08e7cdbe4ea147b107456a5a1c4885f3306890522fd89b7394a1ce9ebda1357f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928969294b14b71f036b1f394e45b46a370bfa860300": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c383c50f156431e8f7187e0c04f14b85ad4aff27": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a43d494953912c2d75d8148f3e773100cf050000": "0x60bd4d5a4a4b80c613ec911ea4b1a3066f040369ac2655c3dc63e6f9ea97822c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000e8ad6492f516c942bef6561251b531fd7b10c": "0x000290e3bb2d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895998492a4881a733e4beefb71b2022b3eab9bb6e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c6a209a8a9a17b3acac1b3316de1522c90050000": "0x167d9286a956bc717c29ebd938fc46bc05eeda8f507575a77d01985e35211e2000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098cda511c8a1a04705b0e22e81ffb60008a21d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fa8bf8c0bb1b6a89bb9f45a5228aea9d296653": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a34ef7ba5b23bf5f55f3e4fc094486d4e9000000": "0xca5bc1915da74aba3aadd7ce7b809045d5eb5b73559259755fdcd85a40a5dc6e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718ad26cf42a6d886352e9337ba7d2e1fa7302c8f": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bdac7423ca974deb9f4d5db731cbc3f5c64e3f4b": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998194b95e37bd6de019d5ac8fc416daed2091408": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397984af7d5fc49ec8bfe113d542f3eb2f8e2551dfb": "0x005073b3e57e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8382680e672b8403c57f2bd1073c34219fbd40160e8907ff4cbc548976d263f": "0x8d3e9d9cc92f6c3802baa4c0e2f3bde6c3c37c75", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac8938e1faed5af69a6516f48b450c82dafa61": "0x0066f52cbf4e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d163b6b73f9e9a77c336cb7ac90510eca3bb7a3bb567fc62415b52ce3282b9c23": "0xc616dcddb10148ef5351b5b0c272486d15b3f629", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef710bfee1c6e6ded8ecbbfb8449e782a809376b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da26d7f204384eec001d21fec7638b13c5fedaabf38d64fb8cb70fd9bc4146e46": "0x44eb5b6c2d5cbe2d38f9fc21e5166f5964bc47a7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f29c684feb0dd39f45960bbc4becc9f776be4ef2": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796f0aa4251eb879290d36ae975c57a59f2a5472f": "0x00a4823fc99198000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824367cdd37fa7b4c8dec31e218467ff93f2d1d44efe": "0x008062175ed15800000000000000000098fdb88f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339725b584e9363f10433b2b033e3a9f0d207235c89c": "0x00ca8f386e0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893b8f1babf9c1a911eefd093089acb1a47b7c4fb2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928934e8812c8f789cb9dbd6993cecb92155a6af62ab": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb645bb339add4632150de669a3973657a040000": "0xbe3f8396e3f7de378fe665cd2cd3521af932a8a376d8d81dda40bb4e4438504f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005417c5ae560be9c83ad34e3f1cfbfde481ba61": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b02427864d348004ecb1044d508c68c79d955d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728a6ba2203b78b7e0de3dfcaf687c400bdf1548d": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900241515212d8321ca983eff69a2bf11b58ea42f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fa0496aac933cc02710bb23a815445cdcc060000": "0x8a03b55a75d4baae8acab8224a1ed1bd6636b477234b3c540fb3282f17ab771600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f52eea67eac5e43ae5562e4daaedc440d51378": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c636b16cee0a7cb4e5dc4662b7d321b772a8c1ec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd6c0fcf38a991d9c95d2e379f4f234807bcbeba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3b4bfb9fa5372a43bab26800f6cb125c922c452": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ade17a1a405f0cc75fc17e49b2e018b1e4080000": "0x688ad06202344d47304eb9eb4392842fcbcc8e06977d6cd55f02c2c9af602b0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd24a754c817f83acfd14e75dc751f3fa9babf35": "0x000e103af39f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397577acb95cb312b867f08b214f421a52497597688": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d82f33de37b35de7cc4f5ad4b4af122aeb25e084bd1e87a6bc28b60ad35d28615": "0x0019012e00e460970f1d39925494ec20a2dbd50b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c610dd72844e40880581a02fa3d3d881744c37f1": "0x0038e451d40800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009181f75cd5f86b015f28e0b1919f5fbb3a3eb6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001a3dfb43b4686238359abf20ffe8b890cc65ed": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5192c838ca1c5c908c1a1ac6b7099d91969a000000": "0xc6947bd508359f995d40def74ae4e73d64375cbecae152ad22b39275eda2120100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf2d514689fad1121753850b85496743cb6ba7df": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397373ddacb2c816717998cf44bf784e75471d2545c": "0x00b218f2c65f03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e3d9fe074569618c2b58486d13f2af969516dc0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907b63625869391c66528acf9610ab2c19d935d9d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5180bb2f2975ce4750af769d7a32dcbd69d39ea": "0x0014fe55391701000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dbddada20c7b2b653812577388aea9ac896ac9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955479b40703db085c9abeee0d45fef0c61b0098d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289648764f0789afe09b446db06388edb09d9588cb0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e89e08763debfe1abb6bae24d4bc21c91150dc79": "0x0016ba87ad5b7b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffda559dc06f88b229af02fdc41a5a6a48127aa1": "0x00c0a539b67601000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899d6b708f01044bc2d23ac51ed5dbc7563c46a6fd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0237d930cc0e0748cd9f00e95d88d25de6165b2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af1063dc4a5261ecda991dc24ee256e4700be7bb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054cf3827073c8663e5211e7af6c63ed4b0ceac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700518bc639b1ace490d22790ae1ac8dc933160fb": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976904b80d7b5967daf9a55a469e18c55ea75964e8": "0x0040e022590e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006cb4d719cad2ba7ac9cae5520378b76fcbaf1a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774f63340b5ca9fca58b50dcbf6cedd1c97972200": "0x000cc18f250f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907940d682e51fe3f01b2236d18aae7fae021a7e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289532276374258365ec2058848caa8975da2e9dba8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af1063dc4a5261ecda991dc24ee256e4700be7bb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12b1988e003ba72cf070e76e70db32569a8a90e4676deb1013b4f5872dbaa239": "0x8afe5cd482d702980f9b141ab34150996db32341", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1b561896f65cd50341459052a69cefb25673451": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dfa9a92eb14a3455b46eed5f6e17253f304abce": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ff9783bc7ee8de42612f752d6145fa729402a59": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfaedd625e171137c08fa81173e73ed48f4835e396a9b8d0581170de58cecf639": "0xa34c6bcae6f46ac6470443ccea67d937f6060c7e", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de36f998e9945b2df9ebcfe94ff64513f5060000": "0xce877e2264669fecf930d064b268d29020a96f910282d642f96e2052a5daac7600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec18887a19369a1c99fafec6d8e52b3f6d0a1af6abdab0d0ca49daa56bfdbb26": "0x42a49b7c7a88907053060c8011f11c5d26f2db8f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c31bb5d37dfad0b2e0f0aa896d95360152060000": "0x8040433695ee5bcae5ecd8b9a2f329c8d625f74146ad3060104914f1cdc7241400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e6224fd18cbbc2e20a5cbd2103d6e8cea741f8": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709bb2615c8f45144a7d4bc6d06c1ea346b8d3063": "0x00181b6acc0400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6780e13fc68b9e998c2dd70c0ccfe1e9b020000": "0x10ded14d9cffc8776745dbc613da8aa7ab6a22fa02b9d1e929ddb169e8a5445b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae0ba2b9eb48ed60ce02ebd80d1632e1efee027c15b0823e4133d32173d4e111": "0x3686e9daaed20aca53640fc3c51059f6c5afb54d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c4401ae98f12ef6de39ae24cf9fc51f80eba16b": "0x006a097df4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5eb1ff55a31e109bf2246f0c8a430037b4ee4b676d4d8a5ef02ecf3d4e292e65": "0x26496ea4743de7d6927f107151fc67616fc0a4a2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d542ac2735e893007bb75a64c95a1658025f9d3c2f58c5af1c1060d87a43aaa5b": "0x4bd120e887cc82285aff8408dc208ed32b132bb3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001835bf16df6bece037ee219ddc4870adbbc528": "0x0098407d9c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9f169d904363571adbf247965ae962e69cadc7e": "0x00a667d3930800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d2623e4d647b291d41850c287d0f45ab856cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289831cead0805ac7cf4a744e9e8d088317eab8d0c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e04fba4d693e414f7252ff3381616d711e13b992": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ec51c4a049e6621ca891bc03533a9572b93165aeb4b9f00ee1625cc4ad7472a": "0xe2d8cd482efb93b788cff519bcbf5e25dca333be", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700642284ddd6a101231e93d0a8469b39d85ec85c": "0x0078ae926ef109000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d6d291937e1e0158624cc3644af95a6140f2c11": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437eced1aea8a70ed73f12f0550ff58671ec34953a": "0x008098281765060000000000000000006718590a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289940650c5f5f78618c938c182d89b0687579a99c9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977574855f00481cddf4c103ae36ddf6e042e5d367": "0x0024a8be34cf3e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4c17652254bc6e13310168a21c5749982cb6d64": "0x0020f6cccd0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b0d0571d39cf62dabc905c3892c32fa578defc2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c61ed74017d66eceb5eee1f20a012e4774cd79f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe7c59f5c785ddb869662aecdccf932b29e10771": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c5faed48240954efe9b5f666d1b6df1de3fa2ae": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df66c98834c19d0aff9f578921681f766f530af84e8b53a5632a364f1a796a432": "0x52c7f3fb2a8bdc8f2d9cdc9404b5779108d4ea0c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890cb193903063145dc5ec3acf56bbd5a784fe25d2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc99f7d3bcc5a32a627866ab9762e1993b1bc0623cdeeaf16f48d38cfa9e1e28": "0xdca74fb0ebfeab701b8bd771fa5e240265832961", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c77c440c06384717ad302a6c5290c9e8716f67c1": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d92c003ff0cbe260dac5a3f86d9cbff3caec28bdce628adf125a40e72b26a9712": "0x0b86ef72b38f189bbf18a94bc46c044b73ea807a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765076dd6f1438dea38b5901315208ee437482051": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fd4fac2aa9f0e0d34751d2d1d6fd792fb6080000": "0x7ee68da95f66a1211c7b843f161409ea7a8f9107fd8b8e29e1d8d6f2afdd950700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5136a9e62f14037083b4cdc841a0bdb5bfb4040000": "0x8c80d2977137d56f3a0ab93f78e5c7966bc2a94fed331d9457d8cc4b96a43a2a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5d3a4a84a2d404dc9828428180fd927dcdbc896": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5cceedf3c21bb629353405e2e438cfab7c94c56": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd9c3c2f403af26731d5349f2e8824f85cba0086": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5141130e47fcf21dc5f82d2b0274caf7ec41040000": "0x1245821dcf1ae288a0dcda3b81a608893cca26a21cc01affb83e9dc64a2a5f4d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd24f805ca7bafb11cfdb0ace585a9d0e6edf83878dc7b42946c33c2378211464": "0x9157a5fbc82a5eca9ebc3a225de072b4ebe7cc30", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397223124942a06b92fd5267174d18dee47bebd942d": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e3d9fe074569618c2b58486d13f2af969516dc0": "0x00ec4622388506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3b33791c1ea8922dba88bd800b509e884c33bab": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfc044a6c92db8aa2a0507a157039970a86c582a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f18055387961a61eeff5a3fcf9d510b56a94c6da": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e91362a99a6e8e6e0577feb433b3ac7841b5892": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824394c70b28e483cbfe9d7554e211f5f38ef9435bb9": "0x0000d098d4af710000000000000000002907f7b700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd06d0c9aac9a1db183583979bd2eb6633fa7af90c276f41a2d5a5297695c752f": "0x18e653d8262814fb82b703cf058c97e7b2020c38", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397719e57b6d5969fdbc9b35bf76153dee9d09e2536": "0x00eaca971ec709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970048e604f2473ee6eca508c80397d2d8cee49bae": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4877511245f8954e48858da743b9eb3544681c27ffd8802c8ea1669e961a2b61": "0x6256921fd93382ce2d468570f6bfb385e5bccf0f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780c503db92ae417099a025c49103b80e370ddae1": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900590fc72b10e46e5a5eb6adeeb2966b37b61b4c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430035d19bc0178da96f2ad24504182733d90a0ed5": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890045e6f8ae50c7b511c257acc200e3fbbf947d44": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da03927f2c5ec70e2a6c64be18c91cc75a7a41e176579bc7d632d78e488265b08": "0x004840267ca0976045bee42e0b7dd7dfd3b827ce", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5116a16be6261a35c574c7ab4f4600ec7bac050000": "0xb24b419150b1a22c259fd8321a3058ea83a8118d29eb0bc46e0056e6f988942700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde880ff77037dce39d035916f70a67006ee696b9cf9b4de4c613601943630378": "0x128bef3c7b002090dd018677f551a865595a19d1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004d70b92f0b70b284fc33d396e293ab6d72c04b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df69a73bcfc9996e432faaeca61f336deaab5ce773dc236161ce08bc852df7e0c": "0xc771ceb58b220cb663c2a77b37558cde21c471ee", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a77e549ab954b951a118c7106bb46e606e9c445": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510e99e5e903d2a37920fea64fb1eab9c2f4030000": "0x50ef6fb05f46fc0e58cca849698d21a330418e612d0e206ab19c6899245b8e6f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e25c438529a9db85e8d1d45020e02862ad22f1bee84a0713895f20ac765624b": "0x4e96f9207310a9dcbfb0f8acf5e44573b56eadf7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519472ad231556f1aa034391d360a1ffc154080000": "0xecb5f00888229dd98de2aae6a2bfb8f31b52104987f4b52df713b32e4a48df8f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e888a7a333cfc1433a594a9b198b64bb2493f574e57cbf3f4cb195a79fe4a40": "0x04f0594c389d0071131f288014a05e91449146bd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976fbb52a0c06818f7022fcabb7b815f86cfc1eeda": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e723454d7ca777999065bd370faaf671b469149e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701beef9b0f0a48597e1454d75eb062d70775b13a": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890016930644a71069819f2642d0ad4a07a5add934": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dc9de83f11941407e4c81debc7a2023a27e118bc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7ce447361509f0575a6a206888ea2afd88557e8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890094e5350b60f62464c4006345eb31c2e731f6c9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d1456fdda7b8ec7f9e5c794cd83194f0593e4ea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d531b67faf691723fda5e741359efa9bdb52bde5": "0x0036270f8e7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965b761631b6f2fcc2c085a544b6602d1317dd94c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bfe953b6bb77bf8c7851141ca684c5dcfd6cb925": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58771ce0f83cf6651fba0037541ec21a0afab196938a7ef3722769f24a38de59": "0x04d83431115cc45d7e1fb79b4d64b5669238b687", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2595b4dd370884f00e06b9b1e6f8e26e80797cec0660c246a616649f09a490a": "0x3ffe3083861f58aa0101453a61fd3a1b747d2b75", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62ba968eea9ac1fb02e752328be8c273e0374396051cd47dc602a6ff0145304b": "0x55e9a88d4c79252e7340f1e7816098b755c942d0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971615d921575a6948c48758e6ab9c560f1e862328": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512b23240a15acf4e8b341265833fe501699030000": "0xa4f294e483405fcde773f272c296fd45088a1f7f105d750a8c57eabec973752300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977886c5f36d2d74ddae70a9125b9f375fbf614cd7": "0x0000869eae29d5000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c6ae8a52978150c27cad4136308d4acf3bdee0": "0x00ec8a7c58ac02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba4795e1db269aa9156234e30888d75ff3aaddfd": "0x00d6ddca3a5500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c35a3ca5e21f8398bddcce36aceb288d11f5e": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e08fc7cb11366c6e0091fb0fd64e0e5f8190bca": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397693e1450bee60182d0f34256ac03c94de1cf781b": "0x0000f954b10ece000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0c94ae3d19f2c585b920842211d2d8430da691f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c1efc49285eb5deda2ac887d613242475ed15048": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c5d005e57310e4c5f148be7ba4dd666db6884c36": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c3078593afdb525caed7ec794de3cd88b917b0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5e15888c2f897ddc27dcd87dd9f32a04a695feb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289185a7fc4ace368d233e620b2a45935661292bdf2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51364fea1ed5a9a5eccc6d508ead9849b556070000": "0xf0dace05e939a7d03eb7edb13409ea19b7cb1f0d20469267322acc92c9cdc62b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008ad6dca0f98838668c5a336ebc4f72e2872e30": "0x00a6e052aa5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722e00a49eb33d077e389a17928e7f7bbed4fb938": "0x009e05e9abe400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891ad661fe9878af3b77754710f50981c82549bda8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896bf95319e992a3ea48071692bb0553b173fd7d34": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289081dadcdd7cc5d6f406061007a6b4af00444e75e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8f490959275fc91f0bace6fb722639c4924317e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e6fa447855eb59c62f23e3df8a556b07a0ee4d9": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513e38f7c68614edf74ed1585bc9dc64331b090000": "0x380ffa0d99a6519e0ab4d8a08c2d60ff5a8c7762c79e148ae6ee89917001004400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397280b9eb4839eb05e05e48973e1c969226fcc4392": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c583fd0876ecf8c8497bbcb3f8e888f2ee1c214": "0x005c01a6223d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da221d23c94dcb9839d8211590e39f17c2b62f2eec91a66b3102c409856c8456b": "0xdf4dff459b93832e9bd6e0c32e5866126ecc434a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b13a2ca9b77ef417c02164de32e7a1b34e523d5a": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be638e483b91290575009bb63815c3ffe36de43d": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928971fe8590d29d971bbbbb17342ea62a3c52c6ed0b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e3f51f35abe48323c6734d1f83342c684225ae": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b795fa77b056e488eb37a624a0f6a6db1e1401a8": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd6b9c9d40ae9d4db6dcefa18167658c8c5afa1b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a7ffad9c186a581b06ffae5f5c1fbfbf190c794": "0x004cc5b2780900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5136cd423d881871f84a41c448ecd49905f0030000": "0x44a1336854e44cdbfa929ad12e913e4a1870c590a6dc5e3983a6fd416b927f5300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d928b092428cad53613dd8b953f1b3c942c38637c01a34f6481717b2d1b2c174c": "0x82e2b7d189a81a251eaa51ac31871f8c4b91dff4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f454fa5c8c9dc56209f6f5d4c7df32c735c4946": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979da6c5ebb2a225a395ee772d77ec5178fd5a6307": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890cade02299ddef16f672b3525001d473485289db": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975eeaeef816f1015b042f74c42d8d3ee153c2cfde": "0x00aac729e42f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c78724c7d87165b1e7ddece03dcc717b9557c1ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006f3b97c4f8cb8ddf2838d296108a63425e63ec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce76a4eb328d7c14d3a425ac145f887d7277e6ff": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dab68f3f5cbd61feb43e4204d1376d42b3c154478e1d1931ce9cd9bd98de8d7cd": "0x63a673778cb652db8fe7b320da78842e364c40eb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897732eeae979408d24c88500bb4e9166aa1616aff": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5123cee1a41eac7051c179e56ac23862149f070000": "0x8485fea2004315662000d9fbbb7d5c9e79ac617c40cd6a2046ce079d67195c5c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4ff781e1de100c601a55c007e2cd85581841dca": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928989c37fb9e6396ed6ef843c62fb32c43250e2f451": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ddf2bd305b334ee4aa8e27481db525338c87da5f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c8bb43bfcda8845d576effa7ee5c555e126b0e": "0x00b03c97ab0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2837598797295d619785777a5b9771ba532dbe841b224caad6ab58110d67a61": "0x1df8d1ba25da8a9d6804aed11a7650f89fe91996", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3907773de2b12033f7196b9517045a63315b4cd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa884c81b7b5f4b675e2e041826394e8f0b16bbe": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928984668bac6daf894a1e4203bd93863a7c7dbf87e0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515fa01b4a8f2aaacc0ec9447f1c859a5229050000": "0xf49313e8188843be3e2b454b00064aff16256196b535d4d511ab57207812714f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ed2733809fff8fc440d3fb8c4365ac7a6a520c46ba4a2bdf94f107bcc5cea0b": "0x50723761bed6eebd4ad8cd418b0b262a66fc0b97", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722f6a08b13d46bfac92f45a624dafd3ab4ca5761": "0x007ceafac42900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748299f5998fbdc5898ac71e8221014a7124e0788": "0x003cf35d972100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928976436bdf4f3b3b9abfa08f825d2db471a4e33507": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511f19f91c022f2741c5cadb34b5ef30c38b030000": "0xa255df385c871dae02401415b3a097695741863d9f4fa6c086889b9d14a3ee6900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f9c1f8b4234b1d9b714c018fe96afaa186d841a7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d9a5fcc7c0b2b6415b5ec65f196724dd6f070000": "0x7eb937e55cb2550e258629834c5bc2449e30083b2c8e67d82a62eb4f3b6f2e0a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928918ad26cf42a6d886352e9337ba7d2e1fa7302c8f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d9af4d724f3a570367973d1f167b9026ac060000": "0x268eda4ec34cc03c815a14dd8465c0e2b7a404f56b6ed9399c363ac244fd612200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aef69db824a8cec8208fb4264ba6831ef717ae8f": "0x00749f62461100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c4e4dece27c83d62cf01816cffd256d3871b309e43e65f9e2ac33e670b5db31": "0xa56f814d9f170a1c285817223b072626b517d099", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007e1b953932516a6560c9161409b4fa15595bd3": "0x004eb3011a1a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c84df4cf2dc2f818925a0cc7a14b1a19edd5e2b6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a6625ad8643ea9c894da55c4a5393bbcb59446f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ab6a08ca44645fca5b8a50ddfb04a8f9477923": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b32816c1386cf0f7d5df26b4ca5921730c6f0ece": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6ce2b0af9df0b5485dac8eacce7f147efd70bb39f181a67e5f049f8ae6f4f27": "0x7a377641a0f741ba35458b3fb478f0a6d013dbea", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b46c2526e227482e2ebb8f4c69e4674d262e75": "0x00baa2b4bbc33b0b0000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6a2b356718faf8cce70e78f06712f1ce5917d04": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d34bc6fb5ba6e2150087c96fd4852ec188aba74a5a383a22ef66b12c588cea00d": "0xbdacb2381dea4e23621e4e3f5c8f0ae020cfc688", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977928c0238f5850957d9826f712b688d00041cdcb": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48b2cc621a25ed86391676c3686bc2cf76f06edc66a4c3c21e2452618ee1bf4e": "0x4a08ec412ead6bbc45a465aff936e772ad133569", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c163730557af3cc84dffd66affb23d2347154257": "0x0066172ede4c06000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d784419cb586fb38c30625aa6783d4000bd4c39337d510826414d825689324e75": "0xe25fbe47354d8ed5377773251b41e1caa13f1363", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f55e8a9bc462bbb788e83ec8d022f1deebb3e4": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895432d9368e60cf5c7b3b166a2b2354864d3d12cf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfc044a6c92db8aa2a0507a157039970a86c582a": "0x007e15ac953900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5134345e770c0a24d56505c2fc09d4370b0e040000": "0x8ce7ed6c49e1abc8477271f684f669c2ce87f48f94f847c1a9a7193ec8ed7f7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d106711bd6fe7f02667ea334ff74f06788939959": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900367f2a3dc2af6089b3d5c929f997655d7a9151": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5146ff8b95a2e967e35ec0fd9e0260b0155d000000": "0x2a8c3c2f2e55ac470078c1021e3f8b77d106f62f7282799e765f75f1723f810b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bdf51e4fd4d1101b1ac20e916a6f7cb2f0040000": "0x784419cb586fb38c30625aa6783d4000bd4c39337d510826414d825689324e7500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd8ee28573fc3a94c320b07a44cb8360d2f3497a82df0904fbe8209abe49a7809": "0x60c5157e1255dae7acf046b38fece4a69ad6289e", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824309d7bc4d2ce5b5369c16b76f6c6297b1c711b832": "0x0000204aa9d1010000000000000000003c85f10200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970016625480945278b5ff3606667b0571f183efb7": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88bc66a4d38128c8dd29d60a4d333824baa33209272321aa212489ea2d19105a": "0x9782b9c2c85c2e9db211cb6200065e312853e68c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a249e3666698c434db898a9ae29b64875638019": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006704be2884970368def1738cc901f92025c04a": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397898f81f8f9e937dc0629c0b6915921de04d13b6f": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70d68c29241a3ef5841c11afdbb956a75e971fef57ce8b82248f027644bf2966": "0xc43afbf4fae6c9545c16a6de3c8abedc2c589271", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430387d965a607009b865652830e675a2ad5c734a5": "0x0080c6a47e8d0300000000000000000039b8bf0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970094e5350b60f62464c4006345eb31c2e731f6c9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdc5f944f190ab822712994782a65d7723582eff": "0x005c63e2a2d02b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7b88b6d9199cb9cfd50020218517f1b6cd0ec50": "0x0000a40731af05000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0023f35fad621e22d2da59dad0233f8d93e302cb55acbea4b2467e6a59ec5b3e": "0xfe8f3d02414c57745f1e87be25ee3496a1a573ff", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da8e87388e083b3f1a9dfeef27977d883cf10e7c94acdf0c60f57f0a9621d4539": "0xb98df46a871a544265c71648cb708525fd913ed8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d0036b211691a8f28a2f159a8db9d84fd3eee0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ffb27ede09161a4c13d4176afffc9bcb13c97d0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289222954391116326ccc7e022861d3d3f22116ffce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b3a82b6e21abf58b057077ff00130f292973a041": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de25518f95848feb16fd5dabaadafb39cbd03c0d440b47eee1042a5ab37301d4e": "0x00d0036b211691a8f28a2f159a8db9d84fd3eee0", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9882362f41860e1dbc58a143942f5681e040000": "0xb0ff4787cad35fd28bc266d4e799e2395e31a9e4b5c1970b8acfcdcfa0d8560700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffb3bd8b5365758350008118961254c5ecd1f80a": "0x00d22374f95f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5151af18accb1d8a91917ec084a455e0d97b040000": "0xbc913f31cbfd866b69c0b295577462dae9dc4532defcb67d2ddf6f0b09ee447b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928917ce04ca9524aad7df1a14d591576f0a7cfb8565": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b340bb2b047e45d6653aef7a5e94aaf40b7baa1e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a99dc7c944cb8c2cf094502e581afd9a15b0867783234427828e7e557903e49": "0xfa93a39e60a804ed41e1bdfd38badd4197e6a977", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894af9fe0d55c749c5fa4eac73c660afe9614c926f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c0a1988b92b2538bb264e649e285bd78beb07": "0x002efc190f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c57173ef5705bfed109af15e677a8d8f5e520": "0x00282e48726601000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ec07e54b38187e0a140bc2f987a1fee0fa080000": "0xe642efdde17e295727ee9ee006201c9a06da916a936452babfaf190da3ed1f5800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f45d57c49adf2be37f4cda720141fc9cb6236bd": "0x00e8578c8f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a3585a53e68650e03cebff3c42ced82c21ba6b6": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5115f16375741147b2312eee8a82f9ba9251080000": "0x53ff1caf92232a43e8935260dd13dcf03bb4e6473df67213af77085e2948c08a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c662747812327628780f26e0aa80149f4bf26ea3": "0x00903973206100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970016cd03db08cffafe5afd43d9cc903856a042f3": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977d2136d6cc5cae6b60520050f1cc902abb8460ed": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945ddca7c0426fb78561229a9958873ae9cae4e79": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5129a2cb1eeb3321b045d6e5e2841eced3aa080000": "0xb09131af9d0a9204475313dc71104ba4ab278d9101977e1e9f523a8220e0074f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300de86782f19fa9e5881223077680101b2b99019": "0x0000434fd7946a000000000000000000b79677ac00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5196a64e4143c948edcbbcf68c979f13e3b0020000": "0xee095ff182d11b07804c7ae6184e03ea05cdb5e35c0a7d2cbed0e6fdd5ac050a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289377e7e59dc2f5c9e08d0292ece47611b515dfac9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba274ee6e60ffddeb999cfb69b277133b404a7a81e7f2b2482cb6e390dc2f13c": "0xd0d62f0e012fd9cde4c2b255305228fd4a3160de", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001c79f24805bab6c77ae73d7e484769a7034875": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700edf872c332daee73e6d6885fed66b03f1885de": "0x0056c78abe6100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727c6574264011276bb58654e48973380d5c20717": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c78b72770635153e1562b11b3042355d8d040000": "0x7051b75d2765d40638e37a5d0dba578dc82bd9b6ad5a29c03cf720040212561800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700994d4bbb81f3d3cf352edc8af739c878b78768": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a6a90222087648297e923b01d86cd754a7e7f7f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896df205592f28ab7e1db1ff8e24d66c53e5f22c3f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ca1c423a0a9af92343998ac10b6668ecff9e09b6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700daeed67ad54dab091b23a46ee6cc9f7e27d510": "0x0056550116ab00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c63cf2a62f9fec0367c3f77d665e2406ca7940cdce57f736cc6ae356b71b612": "0xaf302aa751058797c6ab5249cb83547a6357763a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728046b3cdb72ce8eac1e8953d17727f87dd6ff2f": "0x0012a3c85efa00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fea42bdbd815aa1b370fd953d033c80262080000": "0xc601b3e5d664c8cfd77f6713be93b8b4364e6a1e93217d04888b3c7cc21ee23500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4cd169b3bf263d47e5604fde85081d4eea4fb30ffbca3d34d45160cfa9f7e6c": "0x01c0a58e08274297cf31f4660c89723f655de3c4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d0d5ff120f3d5a0daec7ea328dbe9e682d0efd3": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce22e1a0a40b684163a37c72112c304dd51bee92": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06301860f2816ef4da65a86597de885e9071806a79d273815b4ceacb98247c43": "0xefaa2f28aed1cf6923c64137ddcedc4a94181fa5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdc058e69ad60873787e67fe22ef40e6a82032e6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b31458838ae39fb3d4e961d063fe89ff6f8d9f37": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6f5646d9e7fbee7cc907eb8e12dafa5378431e6": "0x00f8199a6c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243663e2ead665b23089266bed606d492ddfafa5ff7": "0x00c07ed6adf901000000000000000000af46320300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745d094b1790602ec766d3a81701f02ad99f3e954": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009e2144ec83c3caf492d6ad92cf33cb2cf3aa7c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7cf315eb88caf2dcbfdd1161ce790d7293fae62990145fce1213fa4555f4bb55": "0x9028b660bd9fb93c44efafa5472407f82108e5bd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2658d4ade7565e18570e0289c8c4ecf3b923b424ea7699232cc678241d1e847": "0x000f6cdbe9dfc875008e23822266cef6ff78124d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895feac080c5d43df16479488252694eff5bcf7a2c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d447942da8bdc750d846b7ba4f88b0d8b3ee8f00f83949e07339656a5b5c04a77": "0xf3826a238beb074eae1d6c2a42cd3c63e2fc9147", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba35225c3fc78975a20ea5119f4b9e9e458e44c981e67e38f2082b144faecd59": "0x006f3b97c4f8cb8ddf2838d296108a63425e63ec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f78e47fb57e98c185185608bec057d495f2abffa": "0x0060f86c8d0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4b51c3fe940b0fd7dbeb9f6ab13292166e1deeeae43b8d5a632c6c331e3da6c": "0x05e248f31370ff8f16c3bb5db186ff80eefafe62", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c376d7a071d508102173761ddf2b8c27f3cda11": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986a62b26065489467abafd4e02c86fa4ba37e8fd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dd82457a6fb1ea688d0fa4a2a2151368619403": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339773648bc5effaacbb36d73486e7a3cf424fe0d928": "0x002828fa960f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cb2f6197ace28dcb66d7c726caecb534a79925": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913597c1e37b3dbfb347255a2939b6d58f557e1ca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa204a1b8d4d8da5577c1eacac9b7e5f3e896c70": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6fbb8b9ba0bb75bd0f6109df41a2d22a6f48566": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fcbe7c027c8cc33f9ff58358629a833279c814": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b53d322d505c0b8f76e745023c7d69845d663b4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db0ff4787cad35fd28bc266d4e799e2395e31a9e4b5c1970b8acfcdcfa0d85607": "0xe787eb81b0267dafdb6083fc33f318ad0bc945a4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cf14cb2a1582112f352b2853400b532891e6eb": "0x00cc1d9299d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f5133638ea25da451abbc648fb87b28d0318aef": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970009e426649bbf47ae1816b30bce4d4bb3977259": "0x0072f3efab0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c766b7772d2ed956c850107bf56ca79299ce6d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a80374ebca14d88815007753844b2785bb010000": "0x0ac2094b05a915b14b9b27ba6a7d92da35d0000279947e64b42e9da82752f97e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970084e0ea2823277102b3701b0b29d974c29e5e3f": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d13fc3ce8ea30f518e4ff96b5a74318d31d7239": "0x0080bff92f9cd1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb9458f5c5facbba1a3d21099f8bbec44d7e3d00": "0x006cb365fe4d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86bacff9e50488125f449229ffa6767a36ab06a48b04e41c70cc7e6d82359d7d": "0xf57e50a2ea8f652c4166eff8ce217baa204e7f17", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a83f2bcefba0bc8bc10f88eebabb7806bce2f156": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a91987a0fcba374782d45d0a7237be1627836b8": "0x00849704501c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c62019e4aab737f1f9cdcdc73c3c55b2a303d5": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9807e6a10518c24038521c00541af1e0e32a052": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa93a39e60a804ed41e1bdfd38badd4197e6a977": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f843d23f9c75d5e2602c6de0574ad94e57e8132": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c509424fd0794e367683b213a91f3cd83d1180": "0x009432196c4604000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6ecb6d155ca342849b05dd7b4f289ca0499cced8dc84cd812b9d9aa43326305": "0x88b5c0f4c52ac62c66c1c4d009e6ae0f72f4d042", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec908d5b90a9d0a6e7255ac455cfd353abea89d31ecd28166efd9c033e6b6f14": "0xc9094f605ab3790ed1bcae8111c987c786dd294a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c14b2331974ac8706ad674e22f707f34a17ebf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c5efe835b5f538e43d755f3b1847af1a33ecb796c24445fec6abad99fb2d04c": "0x05c94ef9192ca1b80c427a749771cde2e0f7dc53", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5106f2f424100ea2a1c562409386044652e8050000": "0x6258a2d221b191f83061b09c4f6f778d9097362192cd35231c149e46ad36983500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7657cea869409d039e938e7e3c418ee4a0377eed697591775c3210e2f7186253": "0x742aa56043ed0dcf2673279f39b7dfe2abaf3610", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e6083c954f38683706efe10783ddf7522c2d817adb5495c7ec73614c1c83873": "0xbd125f7c40e252a090871b865aca471f5cb8ee01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003c0f01ebe0f29488c629e253dcd4cb9f1cc586": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339797062eb6c3d95d33c040c98a54187b5a66541b6d": "0x00706f96a68602000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ecb2df664796fad819f35cdfa6870975e26bc0c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511ce409a778c3505f7768acbf972e74fd10080000": "0x8c2100c8a8ae062f38b1eaed5b6e754179080d9e37d53b11f4ae7bf94102f45100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b577fc5fdc344b41df64449866e73d33848ea51d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8f9101b21f47ceaf22f52b0f4373a0d95ae7af9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d26f7f8e2427eed26b1844a1a5fe5cfcd9a9fd7038a0e9049552c71f2a244b22c": "0xb6694b3bedd5ba593526ce5e1d6f5ce899ce70b5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700802eaceef7911f5ef5884174357a13de4b63ac": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fae6fdcff481d6966bb864e8ba258c43df1d2da": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51097b855b965e4d06c719367f78f7fda1df050000": "0x7a72895374cf1814aa3d5e82a21dcf181782df422e033027fa4ad6562938587200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002cc28b6e9a1c0757029c8e42378e7ce97021e8": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897bd77a44bafa948bc94d8fb6dc2d0b9e9583f215": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970945c91d5ddc3cdfdf7fdd45ded0746d0f31296e": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7a48187bc1b9f6d29f075dbbb53e4a0e8060000": "0x1cecfe91a79314b3139d7dcd65db4f5b12cc2a47fcb912dcf8d69903d879da5200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b4f896bf50e0e40f03240f07c80a3be82e1fae": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0c0f3b4bddf5f9fd3faf21c65b3cb1d917863107dc954c7f6ec55ae9a318674": "0x946ef62e1a97865e99dd8366a87506858d83f279", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792ee94af3a409600eefbcd59bb63623a6280a13b": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898610e7e131ecc29b1edc1eef2f7fd6df2b6400f9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339741df190f54ac5d369149a92583cfc240154fa8f6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec9465777aa326e36b60abfb4a01298a7f51845d": "0x00f0ab75a40d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002e54f5a746d8af042121ad2129c4240bf460a2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ccacd4afcf104e4ad26bf9f8878f09ff96050a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902783580dc6b94e83db00d2ed655a809966d66cb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970022bcca7fea62918f9412994bde69b9a396e446": "0x00540ec8632600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511c8a02f456942930c9730654ca687a3a04000000": "0xb01694db6ea17d4ecf62bf8919c2ed7bf166b237b9dce969168be4c6c600047d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d744bc15cd7e338227277c4d4c382389582cbc495365bb80398f94558b84f3a70": "0x00dc120c0536de04a202721962e9be40432ba642", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5195e63aa748b7e59e83867e9fe309acd437010000": "0x6040e208bf4e558f83104424ed4f442e822cd3a867aeee45ac09d05e295f916600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48e781045357bb7da0d214452aa40813fbbba5a960196c5104617760e517307c": "0xe4b5aefb88bd749426b9a4bbcc09a3e9760493c6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ba5e63b8242e3720ce62015edbbc4037bc44c60": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dc25b44e836f8c898328d42e96e0b7b99e050000": "0xc639594cd4090c83e3bee137a917bbd0a5f3c9bab4f974ba8203f7fd08d1ef3700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dfa25c63cf36b2049181a0038762839ba364a8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970751f20e8b8b2686d8844d5c452ec8ecff3fc36a": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5075a1c853e34a1d380591c710d35608dead70ea561e4d6a8bb35639514bc305": "0x31b68bed40ea6d8608779acf8c61a453e264e253", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fce4a3b54b4ae9acae0c1b7911d4511e01090b6": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbccb08c3fa76ca4db33b9a8b1e52b40e8b3d9b1ec93e47c774f6310199079511": "0xc43b0c4013131b17eccdcef96e6c873a21c3d087", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701401ede19c4beeb2ea70043493695646023d0dc": "0x006aedf4123200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5126f8af16743dade2732eaad0009386e219010000": "0x6ecc3d4267ee15a905e60b267efe7058a8033d41840b86a90afd6fd2544c424200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397900a94e7b5ef122f71d1cede47deb4cf429cd10a": "0x00f8d272f65700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890072726b3815bdcdd6c5fe51f96bee5bfd7ca289": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ac20c60ff77408b1fdf3ac6e2739a14742a2779a": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c0b6a53433a49d2d9aa4817570b9ccfef4764cec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b12c9b8714c27aad069301ad0bc4c0cc416f1e7": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b44c291ee2df2fe32fe4cdca5937e9c8cb4d5f3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d6ddc7a1b324b86019d2a4cc333ddf36a70b0f6c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d3a005968eaf0f9a32e2f1b1077dcc2843030000": "0x8e8e3ab65dbcb1a1835299935bad1d984a80fd4d1e3f10f7402dab53aa44b12800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d18d97c8a8030d9450e706a8affb50f35b961b348606433e47c35173f4691d144": "0x0087e6f26b4df85ddd9b9b60910c593fe401025e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4af1cfecc881925c64cbb34a528ee9b77805b0b357c8301996bb5d3b21da57e": "0x0b4de57c216b2bb92151828a9335856f54bab03f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895bb96900d055aa4b3de73bd195c49400237fe7f2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc07f51d638daea7871de9c9b3685c306b70e1144e2c4886c808ad3a40f0c5a5f": "0x792b11a085ce9034cf2f6f7e31c53d85e4da2240", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701c0a58e08274297cf31f4660c89723f655de3c4": "0x00ba589caac201000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970011aba70dc64ecc7f869f9c415c3dd23642eb2e": "0x00ba51b4360400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fcfee4691f55d3ee2276a75fa57b784d98ffd1": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e97e28caa58d3357d070c9535d6cd06bd875e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae126ea28199ca921aff97c3deb18f0d8e050000": "0xd06d0c9aac9a1db183583979bd2eb6633fa7af90c276f41a2d5a5297695c752f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dbb8868fa368ec46f1961ddb5ad9f01cb770424b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ed2c3880ccde98d3366d536feb1d71b7f04b74": "0x006aedf4123200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51914902fac4051bd12544804fa2cf5abb03070000": "0x10d1cfebf94c6eedbf01ab8895c59f50e660d46717bb226b23ea14124f2edb5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891399824aa53d03fba9d3d13585341c819882184b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5109418e489a3298ad5889a1a3094db6d8d6040000": "0xd26931ae163fd44192217c67bbf944eccf68df012a0e6b24b042d9604c70956c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa42d5acb3d55990ce403d714e77cc15320796c9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f431cd35684e41f2f37677f28b4a760d8fb364b9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397752975f5990c33da38c4cd50f0a41b70b3a6796c": "0x00d8dfea53d67d000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738422523da6181fbda6662269bd301a95686a001": "0x002eb47ee85100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c02897a2a0d8caf336a1a5997db294e39df614": "0x002c419ebb1000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517aea0e9d909b15bdb801879e996179ba17040000": "0xa06c4e59af8d86d8b552887762255c830d79b847a6648210ca6b24d0dbba0e2d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289150afa640c00b0f2b7add198bb670ddeacd2ba1f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009b6f347d957e1374610319d75d49348c54251c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d045e79ff7d87b7fc35c70bec29501fbbc28203": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de40ce409805d07fb7286ab3c59923f87776aa2f51d1d1b517ec07bea804a871a": "0x00e82fe500c39f4644d479f85e4b3e407a9d6a1e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e9b7c3ff2bcf46973579131465d2bb4dc46871": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e5027fdd10e5041c66a7e580c605258bd92b84de": "0x009693c5b96000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6eb49bf513747f0547e07635cfb06fcde75dd66f96ccde6fa072b9fc12603c3c": "0xd6ddc7a1b324b86019d2a4cc333ddf36a70b0f6c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5591b55d2c256e25c03af5647edc09041fffe640cfc9be2889c1236e740ec009": "0x4d5f062ae922c42aba01b342b17fee7c9ff2d071", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ed6f2cb4f74ed164582fef026304ef2b1d1b637": "0x002841654c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006d2623e4d647b291d41850c287d0f45ab856cc": "0x0088fe199a3012000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bbfb61f18a0949a5ba261b5a7054c53d5b3c93": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c6e3ee84e63c897962f1f40975bf14f5b10c2af": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51befcfdf540c366bb80abc7b3e605b40e03050000": "0x1ea03129bac8665e20576fe238d270cab2441d839818d533d5ea903f8960725e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514e9fda3c338973d3ac3dfb7284d0558838090000": "0x78ac7bd0fd72ba1836610283e8035a8f5f62e4305c890358a7e182dc1686b73400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7200c399634a9dbbf59db9f48685ec22ea4acb7": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a5d4145d389cca2ae8740dc2af3a06acf135e3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa86d43d6d5265003d203cf22d753c9b3a4fb8f651c6424d68768a86c12d3847": "0xdd3bd59974417b224b5951648e5209ddadc42381", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf5ae4b593a56432357a7ff8d8098b9c10469c": "0x0094bcba878500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe2413cc3a97ecc16300bf11a1f31a4462010000": "0xd836ff75f3d718375497728671cb90ab593372cb4a29f953604a77444818e71c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098e8aaf2dc065865e68baad8c60fb2d9787179": "0x002c419ebb1000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f17cb2d4f469ad4776a976ef606c4a871c0677de": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727786aebb2cd05b2fecede13382aabc3a838c69d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ce7ed6c49e1abc8477271f684f669c2ce87f48f94f847c1a9a7193ec8ed7f79": "0xc9234f3b6117260ff6de428e15b943b387a6d4a7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bebb6f638336fe10517a0b38bd73105f2086690f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f8354f99ccf159bdb134f103e3b3ca240060000": "0x3a24d20be9357d2ea5d385ae82bb06015260533d800c23145dbac4b1cfee7f7700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8485fea2004315662000d9fbbb7d5c9e79ac617c40cd6a2046ce079d67195c5c": "0x65076dd6f1438dea38b5901315208ee437482051", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977fa549b3eaa7e18718235b376be4eb130fa54ec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289126e1dd8189d7a9d7d1b3e927339fc58526dae45": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa5fbfcddc1a8cc93b95498880951526ee7314a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927efade55131916b2f0a34e313d858bd6a30cf4b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a31b46b526485e4699b91b3ce13d42037c050000": "0xb6113f1e61796e5bc0493f464c9de6000dd35b498a40225f97a5f1bf2491d26200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1251da9bb3f5185428cdc2eb2178278babcc3ffa9bc8bc4b19209d60f5832c69": "0x042a8622ec46cf242361e045250ba7687278f929", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ee9bf7584ef015af3a9eeded671e1e424f0e62": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eee540f78117a6ee55e4dfbf89ed4d1153e644": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289925807e0ad65347794cffac5a8622d573c3cd80a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d067ee646a21d8904fe24a5d1047cce91b34bdc9": "0x00ba0f07985a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966c6c69ee2c1b963f63710a599e7fb3508aa3e61": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f7cece00401dc5c5a713aed4f7b8c6b953090000": "0xe8d0e24aa19d8b502a4b778f6172d6ecdc11bd3b9d320c70cec262e291d4a54000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa569e5eeb25e923ea96578d77a73a53bd643e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397607f233defb94a83543cd250f2113eb5b5d68f7e": "0x00942e7a950000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d43d052fcc727cb262971ea068d3f94f774935": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ee795dfb870d57cf366f358e3eb41c40544313": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794ec83fc57394504eb57001350f2b5d4e6f7c5b6": "0x0002d580a17400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51715f691265d78ec53eef789cc81ca5259c050000": "0x682736f965078d3b99638dcdaa574b2f9cdbd60f5a0e0a4c6082496687260d5000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970003903739a38fdc8226d75fe036caa51f37ba9f": "0x004c2df6184802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760256530d074465406df460b6f38424ab5df6bed": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eec5230343cb5336cd6e3a8cb29e5e267d6d5b21": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005b8da2c805e382fdce0dcdb2bfed16611861b9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbad47546eeef76ee44b91a0084628b6b841692ef6b087c62d043991c019e6310": "0x11feb627f21cb0d2e4daeb7f8aeee1fad6574704", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900edd7f8f834eee9eff0a602e6cd8c11ab501e4d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972586319850defd14dbfa93fe588780fdea0d4336": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928987e9e73dd37a9e2163a893462c2664121c9c5e31": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516ac5249778024279bec8f0d0c3fbdfaf8e080000": "0x65d5df37328bd4ee8ac0c5e487b0f3675e8ae8272c82d3cbcd699af3d68f61c800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f41a6aa9773d67c3d31aab2ce54b27f6945b049": "0x0014752a517800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1d483bb4ab67995d0689ddb9104df604cc04178": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928995fb1fbd1f13ca58ef95a91fc8171d6f0c53439e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892d3aa3b4ebd357d5ebde65ce8ac9b4d99ac2b125": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d003ba0c4031ffae41ee2dd2d8505f8e9f6792fbe955b675072c42d302dad7c64": "0xe902b00370977bf81f4f2eef795133a1711ce38c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900735384d4b8bc62916ff05a16679d41c9850fb1": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1492d85a4c248f9eb0c1d5786ba25459f136216d637cf45f69e7ac035a94873c": "0x15955df69f2c7dfb120839d6b4c78230b664a362", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5188e1b20bc05513b73fa4c2214d898baed0040000": "0x569ed842ea4694ae65819ed0ec5ccdc9ffc46e8e1986e8f41489926196a5c15b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890085ebc8d2dda15b907c3b43e5f6cdb17849b98b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a4bab3ab426b32a90c353ae450a1d9712d67d64": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d67c0d69691f9d012cf1fd44c5ac23c79cd441fc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009bb861090ee8778e674f54857d9fa5e2f32358": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fac201d9eb3ac69d0f333067bb0df400ebcbea7c": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c16e288726a587ef85a23c884cdb4232637ddf5e": "0x00feb635c0a900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bb96900d055aa4b3de73bd195c49400237fe7f2": "0x00ae256710bcf2000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f6cd77548b31a8d04ce8d3faa358b76861e4a3f": "0x00bc4a066a0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d445a834ed21583bcae5888eb433323c745fa4a472dd8ef0af700df918158d201": "0xbe1c575e4d30176199bad4b2fcf7217a6df20f16", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722a5afcec732df9e65eb56c0ca7fab1c3c26e7d3": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900250aa807dbedae13eff449a8303ac62fa0dee6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002dc409f3938a24541ad2dbff32b8635f5af5e9": "0x00165b74a10500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fa9ed378e8bc649df332605415e5a9f3cea779": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002848284eb655a5a99250ffbb09605b8e624261": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c44151439965c709f7d79ceebaeda5bc5fba9ca": "0x009273630f2300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005c3e8ef86d7ec80976e586dc76f8267fc8368b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892fbd318ce7d1b4399d68fdd3561921b1b6fb1d80": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437804275d8e53aed92f09f99f55e135c75bf297d7": "0x0000bbc56443040000000000000000004510e60600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5192d70b647ba4be7e4b39f1dfe3bfafe151070000": "0x7c75519e31519e8ab8a48f5ed081d4de06770298fa42f2a469619448f489680400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397029e46d21436a8e435cec948d8a0a5bca6f19b7e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ebedde101b40b694e2e90043403c1aeaf6e7140e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e050d97bd5830b7df04e2693074424f7d7070000": "0x54e69813db314fb5f49b1532d7944d4195c5415402551ba3c16d1183cd89d12700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb4e4ab1d79759d29b58116ef6c0158298a0d12d": "0x0026a278d70500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f41b89ea9a14abeb84183d25896b79071a81f5a9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c9fff9f2fd3bf895fdedae1c18c3951fa135331": "0x003461d4072000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890387d965a607009b865652830e675a2ad5c734a5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51af09a327f7392c00368b5a4b285acfbc55050000": "0x4a7aba74ee1dedb88846e9b9fb572b8be27d19be26bb49c3d0c431bb648c2d1700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ad682addf837939690da95071b9492b064797b9": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a79e6221d11f5f98254fb956a38a55076f83d0e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bc2c9667bbaa1b51c94f8a6d157a099abbddda": "0x00ccbae241ae00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a7cb534202768d7daa624051d64ed942ed546bf": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f6cd77548b31a8d04ce8d3faa358b76861e4a3f": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824371fd1c6b80977e2763c24ce6b4dc6b863b2a5c97": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973be58c29b09669c1b1edd3153b0872e3cbcd8492": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b6a48781fe2ed596deaff18ff09363ad627245": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ed2c3880ccde98d3366d536feb1d71b7f04b74": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289040e5e95969b231eb8dbccf2bbe7b339588fde54": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928934672e7c7d9d2df99683cb8162b1190aea453239": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51758c524de4497bc170946fe74c3f5a3ecd080000": "0x2c2b9441c516f28c9aa9cbc04f5aa257a18b77083c8ef8092b7e6332eb5ccd5100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca09f130c47fda19a2512d38b5e7ba1b84e849eca85a93677122fbae4ceb4f1b": "0xc61ed74017d66eceb5eee1f20a012e4774cd79f0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734672e7c7d9d2df99683cb8162b1190aea453239": "0x006e0dbc8a8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd018840d66c4f9365a2da31759f36a354306e12944d9c207a3668207dfb7e165": "0x005789f1339729bd51c51cc221efaaeb571b6dfb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397992094bb15f3c52186de0e92dc4912318446be04": "0x0042b38c311000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cfe2d550e5f331a0626b08e9dea48b37c7d33231": "0x00188d22dd1400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514dcf28a0db1114c96fc8bae88f11c95b83020000": "0x9c159c7347f55c54a3e600e3e9781b9982f05ca871bdeace6b6775dca9eebd1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bfa1d111e63e47a3ee2daf430ff319aa7079fa5": "0x0020e4319e3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900169f2979d901be42b7ae68ee6f25bb38ad1d10": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f57f2f7af6b196ff8cda28f9ea27010464d009": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006f3b97c4f8cb8ddf2838d296108a63425e63ec": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928932878ea4b480bcc29e7404128a116c75278b80c8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000d9e4a0c84a34414c20b308ade8f9c048218ce": "0x00c69e08b80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944401fb5cedde57d33b2898ee66cc263029b6508": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5174ba310d93c322e3039e014730e148bdeb010000": "0x22e6e4560ba8144ea5c993aeabb32d8c9b69cbf13c26ad41e450d8d1a642663200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519bad06a7711daf95c833e9d677d5a244ef060000": "0x62b0506e832a39e504dd59605b37bc2aa7c243fd8f4e15687c85ca5b5737fb6b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0c04181f1437010d0db38d7623be82af40ecd6e": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289562cf2b3763971e591c547a116f0d08035dc6155": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e2d9f005a1d631591c5ba047232a6516890a9d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aeb9aaee118a585de364026e8b449f37ff9ffe54": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ae34487911e04d149472ff9819d3c0fcf84249": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e3c0a9a3d9bf8854865b75f6d4b01935b4eba1e": "0x008a0e5a780800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000a0f7d5a3ba578fd3438cbccae3d3c722702c9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c05dec4d0797b45e7f6e036155261cb1cbb5cb": "0x00f660a1ac0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7f164ab2ee6bc8581a0d06bfae3fb98e258b265": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af804c858e8bca9e04340cc5c9984f5f2acfb409": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b948cf71421adabaefa250d9a812c6a982060000": "0xfaedd625e171137c08fa81173e73ed48f4835e396a9b8d0581170de58cecf63900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f9acba5ae9041d0a2d78df1bb105632ad8070000": "0x94d6b2fffc1abde3f0d4b8098ffcf92d71ef84f2439990b8eb9486c2a007755200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a152213a76fcf28db0993669126eb2a16f9ce070778de9d5f3784ac2cac3412": "0x52d508678aa5eec68ec5faf8f17abdabf9ded9e1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758a0056880f6490bf35430b081f49d2edf2b1915": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c8958274e69c4799e16269b962753af4c9070000": "0x5ae1ab6d1fffe69e07bae35aa873beb9f1a4352134629535ddcb0a9bc531397400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ded0fefac80ac08719087232565beddf95620d75": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd766dc1c0441f9b06691d3b19ff1d150b839e7d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bbdb18494bba1635fc00d53735c06eeb171908": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397963260139fd90579c3a8a16292433d4170fc23ca": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970273a1c21222e27a3d41dfb835e07af4b4494c08": "0x00d422a5abbe12000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970037b4f93292da122cee7227bbe94ebd9f2fe930": "0x00ba7a93d51100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900813451b4ee8df7c523fb49b9f817963d0c355b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f8fce84ceddb0e33e9b310adcc5625d8f7b8b77d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51356e3245b2a1af1ba91da9bd6cee82ab18040000": "0xa2a2536e669216a495a670f031cc0499cc4e5d20f1c4d7db8d7d7597e227215e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a6d7337f0454acdaf58ff349faf36febd6f9dadddbebd1198919523b91f6b11": "0x0091da397a6675117a811b82cab27508d75d078b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ce603c14ee8349fadd8888ff87d53d93fd43c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511a452ec1a37ded42cc595b394b6e85b9ab050000": "0xe4a6bc20742c72fafd45ff5ef53f7073d174aa51bc63126183ba20fedc25186700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062dd565ced1168f0e8f55ccbd353d41a19e144": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709d7bc4d2ce5b5369c16b76f6c6297b1c711b832": "0x0000204aa9d101000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5069765b772020113456bb1fb00f7b2f262b30fb5ac03ba3a803f2250f097251": "0x5f9a76fbba12dc70d5c4b71c9638f1c1f0b4c280", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892063700c6e019a814d24f514ec6512711c399826": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998c97b38d63ba67d0770cdcf8115a5c8a470e937": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700577ac183e66678ad5f27a8e5cde19eda76cf6d": "0x00263134770200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5110fce6fae703c71d69a570d347e2650985010000": "0x54ba59a8d253a79ff9481e5f86153c55e5b01f20eea7a2fb32f1a4f38d6b753200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86f68361d0a346a62be267558e72dfb9e3b5a04adcc2c9e46fb7b9482f7c876f": "0x599266e9b5c0983b9f68f13f1834fdac9c2f0ff6", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a4407a49eb2bc29d1d9f1583a0037b94bfaa348b76a0589147a7cc3d35a800c": "0x7d098fec4ecf9ac948b17a179c638f1dbbcef72d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002c5f1d2459a12bd296be7ebc652e9c7d1bf2c0": "0x004ed7a1c0bf03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fae84a97831f764e66c588636acd728a28070000": "0x7c80d34e75a864a4b6cf0278fe6fc102e87857659ac76af39864360eeba96a2900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729955c36088322a44d55f597eb63a7f60af639d3": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289211f8d4e57db34f5a7476771ab52ef4e407666e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d5ce50ecdb86b2e04589daed8e6cfcfc238d3d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928936a2688e8e60c13b4a124766e598b6169b0e9642": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ebd92abd194f0cd6ffd845b0f7c81bc9b11ab1d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896cfc099da855617d28bf1513d6af852bbe836da2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977162bf64f3d1e899cdea224458af61a33511ff42": "0x00c029f73d5405000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51365d4504b9044f57de30f207a684358e05070000": "0xf73baa66d4746e8447877fe051d6dffa85811dcd14c6dceeb29e011b1514f23e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5118177950db2387b53f8eb7150c30776eec070000": "0xf46963643d40844f90c6d1b927d82f67955371cfb3523ab6c272e22a66a9233400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6040e208bf4e558f83104424ed4f442e822cd3a867aeee45ac09d05e295f9166": "0xedf039c36c3fc977c8830d68d75d989d42ed1827", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd662430013e36f7be38e1e1b58fa50bcd5b2ff6985db177978e2089d694fe118": "0x50b2c3a213d353c66a2138e3f21a1f909b0a87b8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890022d7796a2d5977267948e5ffba8b9fe04c3da5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fcbce22223d8e6051bd25cd6026ba660f81b04": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae0686ea4fda9aeff2ed8ae87b70eab0453af7bd4f938128ae447cfb54f61555": "0x4bcdf08359aeae40aafdd2cc282e7c1fbb2d310a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757d6f80480c6c1c0c7269c7b5ff282d0e37154b2": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516526bf6d54e7048f2f97f3e1f06e968ad8040000": "0xa4cd4dd151f0106d8157bdf02bfac75f9abe8e635ecc6498b8a8f6acc1f5e67400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e982f5dea466c5f328cbaa9aa1a4e743d4040000": "0xfc99f7d3bcc5a32a627866ab9762e1993b1bc0623cdeeaf16f48d38cfa9e1e2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700463c8b0c4f1596ada872e327fa84481fed673d": "0x00b4a102061000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b06eb11eaa3455375b66c1c72c109a134580f7": "0x008a8b0e1ea400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397511e81b9d6c360fb6ecbd923f66aad7c34cdffb9": "0x00f4fb4e8b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397996709841049286c8d63df10988e70a790a68daf": "0x001cd6fe584200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8f5bda31f9c72d742e8763200717a78b8081be8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc04cd98da89a9172372aef4b62bedecd01a7f5a": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a3f746d8fdb67aa729cd740d720c4a64ffaad89": "0x00760a48167e07000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004c7f45a2cee4336a07480fc8fa78c101c10409": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b22169c960de13bcee687ffc210c714aa77235": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138b54aceddbcd24ff52fdf22db7c0f4560070000": "0x6ec145d10ce8dd253112cf021c3e9b217a791a422a8ccf1312d463b52f749d0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289668ba98f1cf879d29ff9767dd89dd06c188bdcca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4e721d3968b0c88be2dca14041f75701064b3b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d647cdeac80acda72c27a54c2aaf6e125cba3eee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0b7319293c3508cb16215561b7f2ff539bdebd3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ef6623036edb96606b9dff2b5b26e697fbbb9e": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fc8f49ee403b661f718e8b561813d055e7d8b76": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004d9f28eab5867df8ce500efa3bb8a2354b46b0": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890042fc4e1015fd757f149ca0ad34f44c33b51893": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0fa0937a830c3b80de826638649742fcc0f747c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da422bb294c984d6edf3736feb318ff9e316d1a8488e2bde3c9cfdc50a802ee2b": "0x009580bb9bb318dac9a5b0b3607491c858c45aed", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda6b7380d10c98da303b571403864215b403dcb77b1d9183649278f9c02c761f": "0xd04c895bdb4bde0c4f6d3cdd1d2d6483e5a8a946", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dc4c9ca153c261742b5d71d8dbb799d4af040000": "0x580251e8a4e82ce48d1b4f09b836170753650f7095235ce0d0ad4249cacd1a7e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c2acbebe3deafc493391631727c11da323aaa8e": "0x0084449cfc2f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e85ba93ec73ad26d5dd8336468fcff301080000": "0x7469d0b58b2bbc82cab494984169f7f189108866270e92a449a07aa3ca96747600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397620348621ce092ee666b698246491e95c8e61499": "0x001c44aa45f000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f768edc5f35937e181d6e27626004ffdd060000": "0x0ea1f1e791d12fb79e53eddfb13fd9df66627c49d8fdd6773d19ff40ea360f3700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970007265d4ce76f580ccf575ef78d9f63181eaec4": "0x00801a0941bb00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da459850c4accf690b03ee38b0d0b4e312ec1005f58f2f761b01d77c00514ec00": "0xefe2bad68fa91496e13adadf87568b1fc3b454a4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979f10fbb6634415227e89d542844618591a7a8ddf": "0x0080ca6348a991000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06489613133c162307321143c102143da96dd6309bcc1ba2ff7f1b53f4298433": "0x22f6a08b13d46bfac92f45a624dafd3ab4ca5761", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289974f15f02a0b9715495ef4b620abe5f8debbf0c9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894659d80655ac837fc7f48b96aea70518da7a9082": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd6e08fb25db746221175b2d50e9fdf7b227643a": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300fcbce22223d8e6051bd25cd6026ba660f81b04": "0x0000434fd7946a000000000000000000b79677ac00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339778cc3793d423ccb41bf53b2659d49a6c42ca3fdf": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900033b2323f771073dc59b1b9a869d1b6a945330": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895e5766ead1ece2e47e415f74fcd2d2aebf46e87a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510446fbf71013b0b1f9e6984fc8132f4095030000": "0xa047e6133dc6937a00131b4c460161d9a7a54ae0bc93c61fb95b057828dd715d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716621a778e3533c0219fa9db54f2d65c1ffd978f": "0x0074aa57de3101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8ff6762eda9af66117a353dbce0cf9098d8c1d9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702e3d57578cc2ee4dcd3bfc43bbf0d550accf6dd": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d00fc3e7faefe136c6dc0e7bcd5f13c2cd070000": "0x9462cdda81c70aa96a411b2b570e53e581fb7f7c49bc26dd5c1dd1e304e1a46a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e3fcfa6ce2e239eb735071d9f86e38dd5f8d8f0": "0x00de0f257d5781000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d5a35d09bd00dd0d73928aa1d67c266bfd6273a": "0x006aedf4123200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511d46047850b56835bf692ee7f42bc30dbf050000": "0xf4ae0f55fc7387bbf3ae242e71c5146254575a1a14d98bae30ffe28acf508c0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970088f9993ebf41b1009dc7b17a4a01ae47bbfbc5": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cd1cf598b1a50d24d53c7241fedf2de60f489597": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51681f327e254184ec0aa0f48c6081f1e764080000": "0x5813a73dadc69a6b1bf781c33e3a7c814a4454981710271f167757f60c9f356700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90637eb688d85ae50e97ed270439a093f7e3e56a42af1693ea1921a6589a7701": "0x9e8b9dc427650bb1136f50ab903b00fdee88e946", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c6e3ee84e63c897962f1f40975bf14f5b10c2af": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979324439bdee04087564a0c4d01fd94fc5240f88f": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006dcb8ce8e81b15ea955599cbd14b0532da2d0f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2deac69d3ec9489812479a2994bc068d133706a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397822b1f91970e2a6a2b4a72b75c3aa890d9b1fad8": "0x00eef3db9dd901000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289feeb1670e956f2d17025c2e80ba377eac074625f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511e5eb8c26c053755ac27078f69b74bc986080000": "0xb841bffab3688ea94e37983ff28b3288746249b87d1114828dc7b030c669a1cf00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a49b7c571e40e73be0122d9256016ebc704a38c4": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b80b7d073b3ed63690c0962d061dbd88cef4f64": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b84b4c46babd3748c1c73bc408f6999238d00a1": "0x0044698ead0700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51acd502c7828b8ad9e553759d1185bfdf89030000": "0x108a708f579783ecb399a6e3f7a67b997440e4925737e9bcecbc49558d505d5b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890090087b636ef3f95b14a4dd93d28fb2b1747fea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4ba1c4ac566a049429432cc11f4724a4e394538": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928bf51f47e903925c00a03264c7e7a0576785600": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea43f91226ba2c18b9d8f754c642549ae5060000": "0x56d15a35cf075ed48f31269e6431d2891da8c1305cb520bfbfb60493e9ef026e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a6625ad8643ea9c894da55c4a5393bbcb59446f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c83f97b509306d26b9a7dc44993e2d82f73a049c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723803954be1a85583e00ed01ffc8d232edc87e1c": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1c19bf607d2d9ed9f309ab155d73a215e2e8501a6dfaf0ff34a8baa944c68d0b": "0xb13a2ca9b77ef417c02164de32e7a1b34e523d5a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518db880a8691833061fcababb4206713cd6070000": "0x5688ea1a52557de119e6cfc97be9ed2bf1882fea1c7c2c3c28b32f19ca81f60e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b55be9f54c6606717a0ae67942f3fb297df4e396": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898bf3edf0ef51f211bc580ad6068b21f83d163ab1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5103b234595e835b2615c159a9f04dac87af000000": "0xe626934768e68509f3b657372165e6f98fdefe615cc8e669d5bbe033a647855600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51403f4b7cf3e3bcfe4b9e074a870fa331ca080000": "0x28f1facbab196ec6986b7b5160b9345188d2ac9ba60a5375415a7c80be2b8d1200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b256843e306a3a7d9262a6ca7903f93c37020000": "0xd4b82f0101e2c306b1cf78e966da56058ad177d1c649111f3dd2ebe90afe3c7500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a14f3b22fd8bb376d4639aaa8011bd8aa0bc34a5fa83d91e11a07bf83a1613e": "0x00c49b7d15f4b1fc5beded08a2d77d7d57373f3d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007d79331ea38e90d35ce0540f37067f2662585c": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fc43f8e2e61130eeee24b8f1d5fa9e80dcdd4f": "0x007a29e1bffa01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976ddce5e113d3d358257a4130d8f2eef6008dceec": "0x00563d1a8e0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397998c1f93bcdb6ff23c10d0dc924728b73be2ff9f": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f7765e7ebfafb17ebd8da8a9422d5d1a9a4760f": "0x00e0b69c4f2f2a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a88f54595f9543cedbfe0697532882ae3d70ea50": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900169602c4e4f14ba7adabe3c3829b6115e244e4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fb1c60db3703abaf29a2d3a01f46c109275e0d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbc913f31cbfd866b69c0b295577462dae9dc4532defcb67d2ddf6f0b09ee447b": "0xdfe138e5ef68eaffac3ed112fdac6c1f614f59f6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d43d052fcc727cb262971ea068d3f94f774935": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b1b561896f65cd50341459052a69cefb25673451": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72c725acce32a689fa5eb670601a139a3dae75fa9e0e77224428896082c5642d": "0xeaa40f6b29ce35d8f53f6bf9b2a7397e3d8475af", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a7942832aefac80ff43a6842bedcb6f194094474d663ed88c14a940dffc426c": "0xcb41214ae65c8ea58500c913d29305ac2092f0d0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ca8b01a535b2f6d01d9f361f86dc495bdb21d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511523c4974e05c5b917b6037dec663b5d0a000000": "0x4adf51a47b72795366d52285e329229c836ea7bbfe139dbe8fa0700c4f86fc5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c15412599907bcda854ca9f243f32baaf3844a2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928942a49b7c7a88907053060c8011f11c5d26f2db8f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894dfdcd7e1ac714e61cffb899d09235f4b548f960": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51821df780609bc44763c6d3cd576e7c934c090000": "0xe0ac044eaf1755905c1b70d749a8412385612930a28d50f97ccdf2e5489b8e2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895450bf5155e553cc022385842799d6a464a835b1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6a2e7a2d10fb2093f63f2f7923622b3f357f8a1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897025fe5275828b45b97d3b950d65666dcdb9fc95": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f9f169d904363571adbf247965ae962e69cadc7e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087043671cef82fae55c6e6648e0d763e65e2fa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700349f41813fd23d0e1c6fe6160d5d44f9931624": "0x0098d65615a101000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503ba8d4e31714fcf961756469800a7d2ed5da6a62c32ef4477bef2a1ba05c5feea57ebd44516a8257dcf9a3b67b": "0x82104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824349a1c510c50555b7be6e68e064067038e5499748": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a2e5004a31e7b931bef05499dc4f3dca1b616b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289742aa56043ed0dcf2673279f39b7dfe2abaf3610": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5205f3382194a16e9f1e95e9dada0ca5b5f44e5f35cb257c054a5b072ab25151": "0x1933a3602d1ad20840dc198946803e0ab2b49d06", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f73226e1933cfd506c16b06b172e564bece222d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ed4ef795465ef79cd0fcba0f6ca3f35a1ac1816": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f1e189ada672a8b8ddf69ce356e287ca318f99": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503cd8a23e268464b062616265805e67b64cf07d4d258a47df63835121423551712844f5b67de68e36bb9a21e127": "0x88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d26a9d684d5dcf7d34c82d0e88b811cf5f9faa13c95ee1eef1aabaa1f2f3b956c": "0xf54663c66d90010e39c7c5f3124b2965e5f0d069", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f813b5cf2750a59a45f3c5e50397d6ac02b64f9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928992fb25e8d9fa70512c5709c401274d1e6a441f6d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e4b9fc84af5b73f2d99d036273766f211d9d6b6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a807188cf956530898c1cb2b0017428f95a3560": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899bf140794f7009345dc3de37523f63ecca1b155f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ea3d15ed87ff434997bbea75c8be3e78650699bacd6bc7759045e22d90ad477": "0x50d919314f2981bda224370b7165fde7bd733040", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928939dc8b68208f3cf7de41f8129623dea433dade6d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e2d9f005a1d631591c5ba047232a6516890a9d": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ed9633f73160a3c6b6162c5c91ed95aefc29525": "0x0022bdbf630700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51332be08ceaf32dd002f4c8356033c0c976050000": "0xea35e7ea94ba3312211f2313f6ae0f7120ff84e77a7595b49f5243a921bfdc3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397386c6c6a0df3ebf66b64cb34c6f8834b9711a2e1": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb2ef83188323b61e2cad0ad628bfa33e45cd0c8": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51254f2bd413726f0294d3373c2373ca582f090000": "0x20dbb8000a9a464d581d28cfa5fc2f4d49e4a1159e9cdf039111559fdd2c650200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d904187b85d65703dbba21e51c74e2d89b492c9b0d44f3ec3b1974824d3eec95c": "0x1b289087ee4dd222cb003d5cf9d14e376502c7c7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397318aa87413115388a04d0083e792849e09fe496e": "0x0030bd6c704306000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b925e4006856dc4ecbcf9144c3e93d9d5c060000": "0xacf2842c60fe2d7ddac8ef14f56bbf25fb2994330da54be6432568717945f33000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d80c506c8a97b330e37357f791c6d498369d086fbbe9e78d67d7e07720d51ea6f": "0x2085aa6de1e83261fa966ed09b518c3eb3ec30bc", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce46eb5500a059797f47cf38f119ecb0eeb360b856f67fcb7a74e98f52b84157": "0x386c6c6a0df3ebf66b64cb34c6f8834b9711a2e1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b50e79852b9973d30f5b775509cd3d8dd8bd78ba": "0x00e42b2c22294b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972381e109c9f9f9318307e249fdbd0304cc6559e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915b8f1a95061a20392e601bb5bb008415ba20ca6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772381e109c9f9f9318307e249fdbd0304cc6559e": "0x0058692a7db81f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0198e1f457b40b590e532237ed88e5ee52dc8": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746ac13adfb85fb7261d69153e73b006e585509e3": "0x002421e0b0cc02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a79d6c7ad0312485e375127d0844a4658b220fb3": "0x0010f50d108d04000000000000000000d9455d0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddcf71d4ff2e0e30717fbc3f2b8cb0074d7e950971e9b77ede358e6006a6cbc42": "0x4ff82054932bb21f78c58582390d34e16a479294", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c6c0f1c8825c7ea730b6fc23bceee8ee5a8389": "0x00920d70945f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2fb944dd8930532d3fb08109bd7a46cf07a75d0": "0x008eb862b85c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397335c0552eb130f3dfbe6efcb4d2895aed1e9938b": "0x00fe42f31e3301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009789e46d6734cab174c01e5811d744f664504f": "0x00d68c1be02800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a3c5437ebea4546ac6e6cfc1d8a76f30a6539f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510f860a14ed025f1699ac5f9aa2bf6ff87f050000": "0x8cdefebaa227c1477106c9276b992ada6bdad3ed9164d548dc8abaf899e2ae3900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ddac589d703e854e22f71b8f2fb6efce134e5c0": "0x005892837b5700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae7f5cba238e1116167e0efa51b76d22d9060000": "0x58342df06e837a7ff38096d1169b1f87938fd88bd84c81edcf5900fc525e791b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894214a1879b2678aa9ca0abcdc8effd02e40f4419": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ff44d535cee05fc476c35232eeecbdd5d5ec9b9": "0x00be6bbc8ea800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f38ec7db08dbc9613964110529710ed1bd070000": "0xe07628deaa9c6fbbf2288f879396ff3566871c0dbce85c9e23764d15b810657f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46a1fee5a1810662ef7c82a2e91a37a39ab9611105b3a45717ec131bdc4cfe40": "0x93011e03417d775496e3e81c5ba87cd973538dab", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727ff5ebc0d4ad36f0190d6fbf8d774ca7d4acc34": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc6a52590a53bad9273441f2e6a594885b7c567b8dbbdcebe3b40cf561eb16714": "0x00c03372f10f16d819de4d9b22f59caa35b91c0d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397268b05ee0e0e033bf074554452e701a250ed3375": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b3967aac9abb324d90ba784b0a4ed41d2a7c257": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce2dcc3b6911ac513d32f326bb72bc44c1ca1b84": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b74a9972cc5dbed5eb8714672680d8a1bdecbc3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fba333b57f360e4aacb9d0809928fe8077d19a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51094dfefd310bf7fbd323569c1cc890fb06060000": "0x265508bb6b8c2e04c18c3c0d7491fc36935f55adb4ee5ad20d5d13b90e1c497800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51526f1a827f52287b95f461f312b4a97975050000": "0x96b238d8b52668f90c36ad34ec02572133c9f234ca8983e33fbacab88345243c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d108a708f579783ecb399a6e3f7a67b997440e4925737e9bcecbc49558d505d5b": "0x96cced3c89d0565c7075aad1b2b19c49f449af1c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d4340fef5d32f2754a67bf42a44f4cec14540606": "0x0052dba5770a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003df8ef68083daaaae470187267dd53bcdb133a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896236f26b6bf5e69bae11e794e9ef25d3895b3b1d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001720fe2bf6df9dab32f313343766cd4a0ac2e6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972bba2ac16832d15f8f415f1cb351fe20977ca399": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943dc2d9be62bee47b83825a901aebe29a1277454": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289befc4249d323465b36830ee666c6df935904da3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900368e2ec353e7dc90153075954cd3dca551f35f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087e1ad6809711d463c993d6d4396ef57423883": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a45d72e4ba11ccc796d37b6b1d9518183fa451e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899311235dbedff7b53b7ab20dc27a76aa9708bb0f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dc26b2ce9c7de60d60c165f8c70ba7f8b08286aa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890db4dc6e5a9039b2b8fca026963655b04596e903": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea9568c9876a62f3951a61b1acd1dcbf7a050000": "0x7e1e7b99b256c9faf8acc6fa17a1ad3e6e30cb99ca64df0daaef71735f21b07e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512734545045b25902f691486208e04428f7030000": "0x54730499c6c53dd16d1e3f8007b64be019cc9229db22d36a12e44eff1670cf5f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518859a58b8cd305d900ca2ba96ed262b429010000": "0x6aea039650e63303c3c78f7b1bdd0be8cc2ac20511c074822ff5dc02bedbc02e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de01265d6a89565dde0b89e1b68e74b661d389dcb7619efb71e5c9d8ba46ec722": "0x3e0c4d785244c2df4fb88b81b2ca0aa7411a6ec2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bfe8f085ce6b73c1e59c3eae993e73125180ae": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec3c0312d2a35ed0677a7f8eb29116ecc4ebb6d4": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894287603500f11aa83802c4c02e2b5a9130ebe23a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289622f1c8146096564ed842e48b498c08fb298b4b8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de2782c6448329ca3bfa30c87ff5ee66a059329a9a27ccf8e33806f0698c38a17": "0x6e33fe6344ffd1fb1aa35d7823021a99e10aa1fb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ec079be8fccf89a39f8a2ffe35bc08f3047876d": "0x009e359d4a0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce6e5f32bd27b3f64a693b593378b389c5103a83": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6cffc26fb979a2a3d44cb74b6295d31974e4ede": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ea7272f84cfca9811d2103170ffe0dc551ed3ea": "0x009c778883b200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8536ca7a25cbf70df754fa310079ada4c6114c2": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f4c327d9fb68a5b249d96d7680c8203ef4fe56c": "0x00e66123a67e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890085a7ee9578243c26fa140b97bf771178297a3b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700adedcb13c0420643327f35b6ad5da4a0d8c259": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769b293a17ac91de3552bd7381f8753f385f1cfda": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe5b9cf85b687c9f15be1e46995655e81764937973191978549c4362eed97227": "0xf897a81a6ab5aa5cc24e18c9976b3882cd0f4ccf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8ba75ea553f7049eb54e20e3ef220054bbbe583": "0x006c9bea403b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701c08575d845acf2bdd1df6b449afebe9e8910cf": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972967ed7db96f71cfff4626dafc29258e337a26f3": "0x0080afe64af904000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769b8875ca9c33f7293ad4aec9a36577c257041bb": "0x00500a82d0d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c20dbe4d8839b6953c7528824e42dd91ff1c564": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898b584cf38bfe7d50809bbc2a622c7bd118a82577": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750e36dd2f9f0b112a8eedf160bdd4aeee06dbed3": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9867e6bf67fecdb4e31c565bfd7854ac3604f1718e52cdbc8464a112681ad765": "0x1de627e3faf8e64287bd2152ca027e4eff582790", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972e05cd4a04815510ab2d10464db9c1356cec8bd1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3aef55642426e0153ede83ed786d7d8bc66ced9f461bf5a77348032dddcd8533": "0x0005ffdac0973574e3fe91ff31b254fe2fd08acb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbc1deacfc7e5c6e5f0373560c14fbce156ff2a0ed7e208d049ccd985dec85545": "0x6c11fa9f82689aa0d4d41f2ed3e3a80932707b46", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d729fab2b0a01ff5d67532d4632d22c6e4889a076f88a57dea33a675381cf7b38": "0x009dcd9ee2679e1a794297acdcdb9b325ed9f2d5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ee9bf7584ef015af3a9eeded671e1e424f0e62": "0x007ea3f3842900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b7b02c9a7f9b6444ef6e54384a5b5feb6b36be5": "0x008c2a02902a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e3597e85a29412f80e5597cacb09fc7aa4ea9d3a": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f76516ce11965b9970b53f7cbcf53cd4d984ebd3": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3004ccce7f54f6043f13a030b1f07231d81826e99ffd3508fddfdbd0e5a95854": "0x0be9a01de08f7c18e973f073844aed6d8414a5e6", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51abf62515c4338d19703781899f01c26df6060000": "0x9a5fa029a852ac699897b9bac268e3baaa9c920fc37fae630f62a726b1f2584000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0ac4a702918dab29f9c5c317d250141b0afd8f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b986ff7069c7e6c8a4bb67419d839a8cd9d07d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c87fba5f5fb3d590b8552d06d1b700acf5000000": "0x62894f873f68ec0788abb573bf388efcc5267b7164b770abad90cd17b65f161e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a6ed25e84058c2810261558ebc593216aa8d1bd": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70a7e3caa9a1670cb78998b9a9e3a81b834c24d5cd86efedccfd854b45ac7d67": "0xcd24a754c817f83acfd14e75dc751f3fa9babf35", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894678b10000b032197ae5a403058cd72096198650": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fa4a8ce59764fbc5166bfe260c1aa4eaee8023a": "0x0074ace86b0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890044f4a7d8f9da9528d852b1d02ed6e867d32215": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d9905f0c546708f12b180ed038e87fa702e0cad": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac0d35c69dc7dd99f83eda4764a231c497040000": "0xe8382680e672b8403c57f2bd1073c34219fbd40160e8907ff4cbc548976d263f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970082f8170db9a32e8cfed10aaaca5cba2c20eee2": "0x00a60beb412100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d680f6ff2de0a6401afa65d55ba9bf6f2cb6043914916950ad51e3eade0f0d677": "0x61aa4b596264f9e1eabf688567e8e80080732169", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf2e734042a355d05ffb2e3915b16811f45a695e": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ac00bcb875fae707ed8d800e17985d174ad3027": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ecb3d65993040d26944b347119eefa31f7bf3b4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956f780c276f972ecf6363412132bd9801204949e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0e4f5e8f715c5e6acbb2f15742f021693ecd39501613dfdc93a85c1cd77582e": "0x00eb8e47a06707a3dfb17728f8961009adb88eb8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897d64d09556b4e737f932b39dbbe48fa4f67d862b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c34cd6c012ec6faa1cb8f6659a4e07b7f0834f87": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0be27337ccc1182df91cd4075af2f6dc7a67c5e": "0x000e31dedb6500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900957438646d37820df1a7d2434f4955f4c930ec": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894fbf276d6fa1f36b0f0b12fe8182e4bd108ec9bb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970138bd5b9fe5ee16cc0e0b0d63adc94a6ad7b21a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900411a29c7d830c7e7461e7ef541b1a7a00453ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed089a796d2a81919e46643e7c2351aead6f1437": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c14584ac76ee1a0c3d35d336f2448c65f1dbad7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c399c11d782416ac5a2034d728fe62826000000": "0x404e40fa7bc7015956de0fc04bc542baad0442e04440387a464f85f77d25a25a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ead7676d5a7c09c64ebc80de0099cae972e45": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513829c2935561828b0a5d36ba382ba9bcf3030000": "0x50ec868243f5ec5af29a7c679163a34978815b6f1d6e2b871f1f361cb7a1f90500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c3a5ab4587b414dc754ec4c26105385a8cbff43": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3af8b075de8a04f234f06c62ab44ef258be19bce462385f9d03c1244dab2734e": "0xc186dbc2c878448f2fb2969967abcd307d98c247", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289387902d21b6f76d28cac09065719c4f48f4cacdf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000fa37652ab02d5da570506aa4f0625102f91e8": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397862772a77f471da418313e3fb7680d570908b206": "0x0080292c6bc102000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4164fa5fd5aa70d2d524d72d9e17d16a56946c3b9fa97d03d2aa2a05e25cf4e": "0x9405ffe8c225312b403cb49a313e7a0da78c1387", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c39eb735f8dbdf396c2749f298cba2bfd74cde": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397968e43f6be8d8ec1e8ef7c8d5c60f34eed8af3fa": "0x008c4400e13801000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243bc09b4284743f45d2c07926caaeaffa1bb4b6d46": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bffbc05987709ade08d71b36d7e36fcb7a613b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f7e72a6bbb90f036bf5f585a47f16b896050000": "0x52528ac5266c38e3558705368e9627a53290f0620a464fd74378bf6fce3f4c5a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb357cc6b9eb80d1a3f0d06435f22fab24080000": "0xe021bf4bd6fd2aef6f2ad1e01e89cbd1e86ae489393d90528d634c06a2b4e20900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ead61e3f92e933b8ce06bc76061f92455029fb34": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700165863e6f9608161d8533e213c009390fec3e7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890037b4388420542e29d72d06ccbe5cc751e17867": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009e7f3b1be6c5e05c4b3c39804293b582ca64b7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd639c3f23f8d6d929550409f25e95d7b02e50a236ddb0e2c61c0022c04cd2c25": "0x0096746df961fdae3247ffa893802d1cdbe60e86", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289441dae5199e8c642556707176913c2942b455251": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289574f85614c44755bfd42ee17a3bdebbd67a531bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928958245d4b05fab653dbe189c35a98c9e4d84d67b1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3f80af332d2b92874c1e0f76af6f23586847357": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc09b4284743f45d2c07926caaeaffa1bb4b6d46": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824350ef20ae1ec6ca0229f4a3195401f1256985bfea": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772d6b2f916ffed3858da78c4b91c40954bea13fc": "0x0000b9d8895200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004f7dda0a8e0054890ca92e930239cdb6a6f74f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf382c70d3bfe51f50fbb462568ed1ceafe02999": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20c9f5448d22044f25fdb213b6a5fa752b29b2cfb57380deede293c7dc3f3269": "0xa3f59ebc3bf8fa664ce12e2f841fe6556289f053", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f74fbbc6e81855b30b336ac2507235142000000": "0x3e78c61b1083bde0307908fcb6231736fc9d51e930469146b4ebb45c68167f4b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8f5bda31f9c72d742e8763200717a78b8081be8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289963260139fd90579c3a8a16292433d4170fc23ca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900feecad71fbf3f5acb1569b036cf1bd14056316": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893bbfb20c83b79f8cfe3c3f7296f0390900760745": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978a654566edd646283c920e3225873fca5370f489": "0x0014ee15324c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775d27075d8d9aa87e54f05a07a52c5a117436cc7": "0x00fa557518f225000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b778a8d83c0fac09f992fb701d1c085cc9c76d9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c3a73dea8ac2768c308aee8af41a7c5c11090000": "0x368d7df47ff9f015a247ddea7b37abb1d56387b632adf8393bb73f606540fd1f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4465431b88b42ed2cda2b4d4c50b38ca1ac8f83": "0x007435ce717406000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909fbc09d7da0c050d4fd80db0649b30378cc4839": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339790a66cd2def2d13f4c8d09222a11cc2bd508153e": "0x0034bf3fed0200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112f53254a863ff9d51cc7efb1866459ddb050000": "0x4ca2f2067fa1c81a353a98e49b7085292f3526969d67362080bece38eba9c93d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5141dddfb722d3ff71c60ae7f5e314d25189050000": "0x7c0e9733213d62d53db42c6ab23ba4f20748c41c83f28f7f2ed935a43a32292c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000077e89a2702e5438d2be4f7e8744a5ee2b60a": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5688ea1a52557de119e6cfc97be9ed2bf1882fea1c7c2c3c28b32f19ca81f60e": "0x344640acab3fe1ec3b3f7af2e9b7ea4296aa7085", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007486e5e3a85ada7f1ce1fa177e02da6321ab3a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928957ba0396c511c6dde22e4c524c07b85411d6d05d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af5b50ce2aa522d8d9d6f06247ec7d877d0ea3aa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8b29dd8d38485d5f9324eac3ba03c31a71b47e2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e6d069b07b1212c829691f3b421b1b44ef080000": "0x5075a1c853e34a1d380591c710d35608dead70ea561e4d6a8bb35639514bc30500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa569e5eeb25e923ea96578d77a73a53bd643e": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7ff0231086abe3e95ce3773d60a39bf27321ee2": "0x0040c7c59dd203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea3b864640285099bf8b3535affd24c83050b306": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896be555d4469720a6a980245a1a2139a5e678e415": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0867efd74f0e185120843b417f4b62e3a937df54007f8b68eef468bf97e2e342": "0x5223d8d88e106df03f953b6ea1fbc11db396f2f7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a59c51409b63f4900cc5c90374036d3a98f7673b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c09c648b43dacc11c63f053c95beed79c3e7fb31": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ee50c5aaf279bbec8871d5468131c9463d590e48a5a5e12a6ebdec60cf41c20": "0x0001376e9c388b5995e3a115f7d2813dacd35078", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d2989b71404e366138b454d9e27295671f96ebd3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dfe138e5ef68eaffac3ed112fdac6c1f614f59f6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339753972a2e0db345848a8fa288b902d1be01393ecb": "0x00f6d4ce563b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0c6e7d0d2756e3c703cb749a78699880892744c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ef732c7ba71e0ac5b110cd10879df9089c20bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c15031d35a947d4f64c09b7153cf9a0b2b18a431": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ea43ab661f2d2583d0f3234f74dfb7770d51e00": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5133874cb2f7d95da28414231134b739b740090000": "0x2e238e274e49faaa50d80cefc0bd04d793f190d119a4ca4d05d6e5a9f951207a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519935a7c1ec3cf65a725c4bdad7cc7ceac6040000": "0xe63503ec5788a8aa4911a43ee47190ae94f2ab44ad62096bffc56a422b38b26e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e0b481719c0a64b20d1e541cb40c80c2384fa61c77e56bf4787ab94447cf54b": "0x7eced1aea8a70ed73f12f0550ff58671ec34953a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722b2d90d35c20a47c6f579fb6603778e7010940b": "0x0074d5f6726a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515d65607379c3136ff7f977ae0c8b3edb9b040000": "0x0023f35fad621e22d2da59dad0233f8d93e302cb55acbea4b2467e6a59ec5b3e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339794c90e0a573db26467e0e812090a9220c20edcd3": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3a82b6e21abf58b057077ff00130f292973a041": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d35300fe32b48fc3eb97d1033cbefe8aac2d2d9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a9c3868f96e8a3e5386470d78f78046e09cf77a": "0x00c68d5f688f13000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765b761631b6f2fcc2c085a544b6602d1317dd94c": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d888f666828e8328a33647a47bc97574a6a5671819270cc01e66c7139a1a6911a": "0x42b1d63ebbc6ca0cc4a679fb341c78d1089702ea", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db067a8a7015b58d16ccdd5dd7ee3e2d6e07f725bec022f6b6604adcb058ec70e": "0xab416fe30d58afe5d9454c7fce7f830bcc750356", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006261f93219f1cf1b3468d807503dce5a5b11f5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289599ad3f92f76e859f7b7a87dbe3aacb81e54c6e6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d721f7b0f0217f3fe8b192b5a2a7feb22b296e": "0x0022914e4e0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb9f0597834168a78ec443f09f75e3d62ee98dd4": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a2342e466f377fdf800a11c7affefc3e1b6e575": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7f5082cece0be9b14e8be6c1747d0fca39ec8d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fb82d696619496ad28d708285770225159e2236f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397697eeab43d4558bd0d82e805d319d59578fd12ef": "0x003e3ea46d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896cb08b8792e23b72a3af06933a30997d51ad1565": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8c7ad65c15fa3ba64424a61b177382a0c5468135aecca9ca454f5e7ce4d305b": "0xde4d5886da98c3a1140260aaf536a2f1262e2948", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397048109448c4730ac047abe0097034754cc9f0dc8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970023d77a0316ae6c765a6e1c6616be7030f462dd": "0x001e2ac52d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a5c6dbf8963947d36e94126df831a50df8eb6e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b33841ab8e4fc931a294256066286270a77632cb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514b73b7b8217bc22c2b83aebeacdd2473ad060000": "0x981ad92f7900ec801b1935618f031c7d69f089dc84e2fd2b4c09045c8b7bd65800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cce96dfe085a2673456d6bfb80406b8b2a0483": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928976211ee383d28be255a7a44de4a5e641a7d88e93": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516cfd39a414aa59c64aed47a6ce0ba6b60b050000": "0xae449c74fbd4b173c01dcf0de0add765a844dc463ae5f0d2b03b2762a3ed216500000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195018456cbd802f9216696d6f6e80b09bbdce34c5bff2f9f212118c05296db12854ecd09ed0eb0dc7714c9337ce29": "0xe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824376211ee383d28be255a7a44de4a5e641a7d88e93": "0x00e094fb1eaa020000000000000000002bca4f0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9ed22cfc6877c1961ac2cdbe5536684b0761074b8ea475d0c2f173f5989be904": "0x3ff9783bc7ee8de42612f752d6145fa729402a59", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975b279c406a13a1772c7c382d1096b04a7e65e753": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62168680c9ed6e456fa59bd01525a53dd6fa991757e920482016e7db6caebd45": "0xec3c0312d2a35ed0677a7f8eb29116ecc4ebb6d4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956da5ac544ffd544d8c78afba72665b79dd1b87b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b0b1000a023e99555058d8dbce1debbd149a6f6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c852cc3889541878bb0980da71548fef1060000": "0xc8e921a1e3b5b4045d4bc9ac039e586c127deee3762ad208206099346730926800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b82ec69d0521ebd32f7d445188e5b6593ee49046": "0x0062844325d300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5153a5605ca5bf08ee5105ffd1cb49f87611070000": "0x8ae2ec50efc3eab6dac128888c6171c2c1a01a03fd01109ec467daa2c3af3b7500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970036c76ec47dfc17a96b1a68893bf269e1c2875b": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d84372f8b7fefa198c90e3ec77d5b062e0467b32": "0x00e83abf652b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d489ce3deac0c0573439241af1f5b6aefaa31bf07c4cc1fe3191f6de83b44952f": "0x004d9f28eab5867df8ce500efa3bb8a2354b46b0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c11fa6623df9ce654d9b7e75841cf9156ba99cc": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890620a4b3b1a36178015ae2c7204498ffb160853b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea1b65102cd4e98ef88d31c7d627ab4d4f26a92d4c68bc516ab7ee84cf326e6c": "0xa1cac24ee6eb326f1640c5c97b8a2e260b4452aa", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892fcef6913ba9d9ce25e509979180d5fd0e047b07": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893d8f5b9f1936995c3db39bc0da5c858015595328": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289459e0021404e96b2cccf7ad0611c5ae87449704c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772705657a219aaa87e5b7223cc79cd15e33e18af": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f85c6f6c7e5d78513fd9317d90409f71a58099": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ea3b864640285099bf8b3535affd24c83050b306": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f961ef1f20028e8340d5618d3bcb077718e58825": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dd9b78c6d063cfed41ee21c7fab626f86b64de5": "0x00ea7479ef2800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289997dfab7fe0925ba6e6c1c9abcd20a840540095d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dbe27dcd12d17d906c2bc1cf9bbb5b61fb070000": "0x96469fe84419254dd3e2e10075b0c69a11bd362768481b7c527279043b7d041a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d8132ca9938d9fb4a3d18e1418621ac18070000": "0xf2287de36aac9be3d8253ca258bbd653f66e65df2ef87d41272ad8ce0cb6c65800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51392ca2e3cb9a01a874a0234126fed20bb5080000": "0x663525fbf0252118f120be94f11c5d24beb308b9414cb670ac1bcb05edd9de4300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1a80b1f8a44594e343b3d36806898616c3c123a": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c0798c0df1e87069417e76b8ca4fa089d051f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a6e3ec695183eb5c9808f550fff6a29d2f40de6": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51abf05b912549956fe941f87105ca64ab75060000": "0x38f3bcebf40af031ddc003ef309221ec57a19da01d1c3a2771478af5a260796000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e6224fd18cbbc2e20a5cbd2103d6e8cea741f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d41ec9ddc83bdbead278781f9b8c57fd2028dbf": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51557ffc62f29c0e4bf80df9c03a128c3123050000": "0x88ec6a8cc750ec1221580f795c40b2e270a9724dead719ed76076760851f587800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5159ec21b559e34ef529013c057dfb1e3527080000": "0xd01fdc12481b7c5de7004e8dd54ff70d4bc561d3ee07de32dbee35b7348b813e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700964d7fd8a498f37164ba1c1b5dbb99a3c90125": "0x0036270f8e7701000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289de4d5886da98c3a1140260aaf536a2f1262e2948": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8630c7dbf3b9ec8021876f9f1fab265df12368e": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d989af479f0457113b84f73d9c0bf4abcb2f273b8fcb944ae64141328db140e68": "0x20766f01d859f1ee11e14428d9fb96bb1ebad946", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100c8ba1afc1f02850984abfd05e26ed334050000": "0x527ed0e44c244b57e8c2013fe51f2a692650ad1eb58340921ad245bb3299351600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0c0f7fd4a8a750920dc953229b45f708754a2a0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b79356aad9bf2116efe1a66ed55bf1a0d124393b": "0x004e3ef96e2603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976aa251b33219bd6095ffcb9db692ce2abb203e43": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005906f955d7a8c58b036a9c36c96398cc40e32d": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fecd5df71e03db79046adc4e474d3d0e4871e2f3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c26f719cdfe1303d3ef566ca2ada12cc56407c": "0x003ac8acc61100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890de05b51aac16e7df22a871673adc10eb572fe93": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397175a83f4a1abbb88f6facc969d669cae9f48d7c1": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e20357f4f128753e6fc6de0e6ac51e897d2ba9": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300c5137df3f8f85e7b8d1f5059045ed0639db413": "0x00d4e9d4ccdf24000000000000000000693aab3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee00d15dad4842dd984531c1375fe57ccd9e5bc47c10fd505885e1fbe107aa56": "0xee41bd5428594191446fef91d5b0de95706ad49b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928929feaa65869e737ad53bfc2325bd8ffed8d27a07": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978234c57f49a272ab89ed69f445cf9ce68406a1e1": "0x008ecd52fcef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824351afd27a799424910c5bfbe69646a6f87cc8b73d": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930d381605485745197162f89fd80937d890b5358": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972d8a23c70ec138734d5cde0fd9e3edad5102320": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700130a5ac1ae656f19e54e2c28c7d9b4e96462c1": "0x00943d4de92900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513fe60cff75b04f82f57edf148c92a5715d070000": "0xa69382e0d2fc2b3044c30b46be39ce071c773b9333d56631783a535be929494d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007ceccc832e7d85b6e02859a60ef100bfb4a2b0": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f374deac1b5daf9d8f703189f1eec12bd80295a0": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f6a2e7a2d10fb2093f63f2f7923622b3f357f8a1": "0x00e0ec5e0b6400000000000000000000a0e3a10000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0966d51374a7fea1bed099f4d92c3fbf0192321": "0x00a0325a721f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008211ed672526f479a537039766a8d8daf809f7": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d609aed1ba0cddb3e20270d959f1bea0923325b221f31d85579f61823beb16a35": "0x3e1404e9af1c94c9eaf8fa92e2c2e1a936ed8701", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243007abc56f6083d36db03065f7afd36c55bad6afb": "0x0000434fd7946a000000000000000000b79677ac00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db221f3d33adbabe1695b6def8f9fb3b30a33c9eee2e7b024341152d5fdbbe233": "0x9e8014d80afe8da0e24e90539b864794c6981a0a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003bb46bab150b189a72adf721963e275453ddcc": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd827433e2e48f71fb28bdfdfeeb6ebef2cc8f1bfcd4062487372fa4a0064ee6e": "0x004337ca7ef0391b38f913689626697307aece2b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d901873793cdc00c038c78a1144c8c548482bb2daef46d5cc56e76ba142ecf632": "0x23f9313f69cc340859fdd8afd5d69f9298fd295d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000e229e2cccd3c40cc7d3182ac72fde71122213": "0x0012a3c85efa00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518e6517259d9415c471f32484b8d1099d34080000": "0x9641374a4f6f48768d9a6bd815c31807e4765251a974ce0b0c75f2382086fd3500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008bd6775fb6055f78ac30fc24f3e55669499f5e": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397163e5addf68d6e21695adfe1f8fbb33c78d9cd4a": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfce03157d8e323968680f92bb8e16e468e35613b5e9645d56b736c1fcbcad72d": "0x968bbcc804a1003e95b3150c50fcc25873e0d8ba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397351a7dffbe4b4eba06a0b583c970c4f83e89835c": "0x000a78cce22300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d3b766e58e0d0aecf1375297e84c798b15936d1b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e53166f4d724236b4235a9bacef0e425d9f13956": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890030122b94e0e0c56a5b04feb3ec224244a5b18c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007cceedecc880f30ab9f9b968e0d6860d51c6d0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289879b86a32a6d56f04db27fca343ea8844c98fb27": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a738917e17968c22c3ae246a69df2f64fea012ac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a802d746c8079759da87cd76c3cf7d0145080000": "0x8ed1e4ffbfc0f87a0ca99d9058e2900c23959e1f410fe31f2648ec3af27006c200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc940c013d2869a42dfbdef9882e33b67ae45dd42494db04d49feef8dc2a6804": "0x6a8147b63c67b2d13f3d19f6607ae3086f088490", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba3fb82687f28ce414dcb4803d05eacacb697db4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c43ec0fb4c71b599ab3b5e9e6fbd89553eb615d2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ef38ee9ba641cba4c3b92a1c594dd6e6708cd3e": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824344e5715f7db1a59de2af178cdad023b16e39da31": "0x00a0fcb52d2a23000000000000000000b214e73800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c88fa499e7561e464292a8a3c76f4f0351101bea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c1b9adf120f8247211132d86a8b3c9d04dbec26": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006c0cc442ab4dc5ed006af112fd7e064511eca8": "0x00be5290be5900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971b1a105919ffc05d685f342385d5aa4ff4260383": "0x007c6a12795600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767cdd37fa7b4c8dec31e218467ff93f2d1d44efe": "0x008062175ed158000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5104a6f42c7570266e3c52bf00f08540fc69070000": "0x1c19bf607d2d9ed9f309ab155d73a215e2e8501a6dfaf0ff34a8baa944c68d0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d169fef7931a98fdb221a745be8614283794ebf9123d4486a59e7673b86423f5b": "0x00d4f741b495b845b4e4ec9bb7851f71c854d4a9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006dbb368da30eeda3c789408a6162512e75a788": "0x00e0758af30201000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b69e155d8752222d3efe8543b27ed9e6a4070000": "0xa843370edee7d8a3fd7e09330ef328b00788b7484afaba29241cb36247e4540d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51acde9147d1535292a684ac831c939aabd8080000": "0x24fe4c500ca6a4eb82c597d12ea9e5925549433fde896d7aa5d7f929cf87e17c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d4502a61e5f5e02b811cae81ba9768c136fa101": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786e3d8f8c1252600304047adec71785c41671bc2": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcee1aac0dd848c7cdd6be9ade44d705c02f821cdd2bb857a3add5388b3240036": "0x4e163cf2b25ebddf54bc1ffa47a56b96e820871c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970037b4388420542e29d72d06ccbe5cc751e17867": "0x002e50c0ad4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb0366a7cfbd3445a70db7fe5ae34885754fd468": "0x00eceb5f0dfc3b000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98b995d8a902881fcb8891ebe35d50318453a0fd745232ff11e8cbcd5b11b700": "0x1d55410119f0d9f4d3eda0a346a43ff04e15b36f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fbce25b75b05e04b9f22e60721aaea19e87e92": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f16527cebc6e365a934250f691dcff373080000": "0xb0a08e27f26e1d8b3f3c61643df806c8b631a1fc8b34cbfeccd406a29e423c5400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c0abd27328b055be235a79d6b8a9ec1ab7d38d4c6f2b6ff20d9637f9aee4e78": "0x211f8d4e57db34f5a7476771ab52ef4e407666e7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dae64afb310a3426ad84f0739fde5cef61000000": "0x9e771b378ddd0f68c41961af73e4e93c78dfed5778d5377673ba9ee8573e3d0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a774182aaae3cb75b28f24b4b77f7c96b2b820b": "0x0076cf5ffa7b0c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ee9f9804eff1886d23e8a04e5bd9ae506b64740": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa5fbfcddc1a8cc93b95498880951526ee7314a5": "0x0010a7bc491a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c79f24805bab6c77ae73d7e484769a7034875": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8f9a7246af6650f96401dbbee0c30e5f913cf54": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcaa27102248bc174654009763f4b911b9d2420e7b06c432b0f2434a742a7c067": "0x350b85f8b7d4924c88b90cdac534ff4931512ab3", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef3444aa6d3090efb1d8970ab8be5dc6bc070000": "0x8405d696b6b0800c3732f87b3e817969896dcaeaeb0af813c27dc797501c245a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a91beae0866ae95a1e006e7d6d2366a0a839f4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f4f4deef01b26bc699d6a7a9d66b3a4f2010000": "0xc67f0f6ffaffdbc60d7994ab226f632dee4a8249c363b33359daff64200fec2200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700892b067f072e1f337b367c9a8d9ea968d4419d": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecfb901249099cf545de2da3c3ff6e320fc11765": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a286c553f1c240de8df6b45d223c3eaa7bba7c29379cc6c634975a48c17503c": "0x00ae92580ffe442350bfefc4c9e4fd5b137a0fc9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397822fd50f043f331fe44df12af8559527b4be8006": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed8f71ffd7c2e8d8b37564a4e3b5d6fefa7f66c1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5112a2cf84d3a4eecdaa065acc236bb2f0bf040000": "0xdc313b667a08d4a8293ed90733697961647be1182449338e3ba7215cb786311d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a8147b63c67b2d13f3d19f6607ae3086f088490": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c80d34e75a864a4b6cf0278fe6fc102e87857659ac76af39864360eeba96a29": "0x7da1f36b13c74e5f988f806da14650b790a54b4c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c231dc7e55ec4b6e33ea3ea6d77d88917d879781": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee5101da99530e61539f3ffdad3185b717c3177095b2007af99b7dd05823a943": "0x97062eb6c3d95d33c040c98a54187b5a66541b6d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ccacd4afcf104e4ad26bf9f8878f09ff96050a": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a65b40f6e9bd80597482769f6bf1e09d49a5634": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d527ed0e44c244b57e8c2013fe51f2a692650ad1eb58340921ad245bb32993516": "0xe1b609382d115d355e65a0ea206290fbd6ccde06", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a56f814d9f170a1c285817223b072626b517d099": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e4d35cb41da50f320fb28123684440d99e450d24": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d8a80008fdcb5757be67395cca67178d60080000": "0x824a7af00f98513fc725908955b32f8c745bde6131ee4b71fdae8ea15310121800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4abcfe30c4b4f7ac36c37366241c6091d766a03d28f070deb646707bbbd0562": "0xa44e6d1cca8226e718ee0b4f4edfa68bd3773705", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ca15a530dca1d29ca3557b90d80e3a05638fdbc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eecc42c84d948535d8fb64070044147509050000": "0x1650c532ed1a8641e8922aa24ade0ff411d03edd9ed1c6b7fe42f1a801cee37c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b67a2bfea6579b273cfa427637adf9fab925f68a": "0x0010dcdcc56600000000000000000000e84da60000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da5131ad6c8ee8e53a73081a3a56a7706274b851700c5caf5b8202c9d2bdcbf56": "0x25b28e2fbab8ce0b5d54ac6968369d6a9f1e2197", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e386f707569dfdea7210b53bf3e03f6d24ee073": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f09af5717a441341ce58f1b2bc5d9df7c1ad4fe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928980dc500e1464a32ab0faec15feaec216a734162b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054e99a8a384386279936d42dcbabb4a710ee74": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397331ca0d8ac0d809e8e6031769d5318589a469e0d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289373ddacb2c816717998cf44bf784e75471d2545c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f2dbb3e34ed1d44c56caa450a65199ce15165e3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928968616b50e3e0eaed3c1b12fc53162e335e0853c1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb514a98e40a66e5d4f634b9afae1ec41d58c659": "0x0000dc20749701000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514a70278b6f7049e315ae5cc3e8bb464e32040000": "0xec0b26473a8566bcb2220ef71791a54381860591c9293f4d51d49f4015025c5800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ae83c799eeb9d91044cbb2ffd28e79e577e1a9": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705c312d2134e5c632296c124a975e7cb9f79f519": "0x00f022a88c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a228f05157969366882c78be7c434dc3d66b5b19": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d30599dba50b5f3ba0b36f856a761eb3c0aee61e830d4beb448ef94b6ad92be39": "0xa6d4b980ebb41243978f92316777792ec14fff50", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a848efd719f7a216be0e7ab86944c5c23bd0bcc66216ae6a0aaffcb2bbf3b7a": "0x90a990f3e8856f6264326b2053a0ecadbfa34720", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac47d44618795ab6924305321ad07000cf52b350": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d622470e00c50400929243e6e9ed4c62edc88c1a4f7f70e62bca37c277ef3ae74": "0x8d590735c51726c9e24a446143734dd5ed632031", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970044f4a7d8f9da9528d852b1d02ed6e867d32215": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a02c4b206630fe17cf7657ea80f1b6fab809da": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397352fc97f4dfc29a453be0898d59984431a6e0714": "0x0070644a3b1e00000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x02", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909ee4979e687c267db3ea238a9ec64fb74140438": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f88b00db27a500fbfa7ebc9c3caa2dea6f59d5b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513c21f407a369d5ec74c9891620a3a1fb50070000": "0x0ed47a3c5d9fc5612ae7b8f02585298aef42161140370c1c6169061963792f0c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda775cb27a9b7eca3f00c453b23e18c69fd9e4920363f31c201e7d1fddfaa040": "0x78fa87ec68adec6d13477e797f062562cbcdfb4b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af9e08f3020e624c945cc446e8759602049cb176": "0x00d64e0f9b5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec12141e117791b66693d6ab5ca3e270f531f76c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900daeed67ad54dab091b23a46ee6cc9f7e27d510": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f229ac4cc64385aa20b2cf7f75a9eba129b6711": "0x00903d79475800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9c1f8b4234b1d9b714c018fe96afaa186d841a7": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511ea9f6348baf80f9b278a786db5275feba050000": "0xa24dbcca5040cd15564dc59a2768d42eb475ba636fdc072c1671ff9030d6292c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397531aa49f00416d099c75ab4ffad972cc61f83de1": "0x000ea4d437be00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f9a76fbba12dc70d5c4b71c9638f1c1f0b4c280": "0x00605b1ce52900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054a7cf7c027ea72ac2b1994d1f6221539593a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928919527a176a9634ef8b83e25bc0fdd90533e0a966": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928946e4cf75e7a515935482c3f1b557efe92893d483": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c84616c13fc8266181a4589ca35f2f2463b0e4b3": "0x0004b90afcd600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e56be81797e2616b7d4c57c892dbecda35045fa1": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcd52c547ebcb0b817752c5b62d132b96b797250": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d669dd77d915c5c24e5dc787de28d5f0016e3af9013ce52be7ded1bd0a4d3845d": "0x2da865b913ce50451351a315d8b37cb87a4f4109", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a49c0914f127ebf3bf1364ab5a351479d32700fd8b73bc2d6a94cc38176b539": "0x01e086773e4f00f25c04e6f0b8607274ba27bd94", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68659f683ec88be378fb7729f1e6ab48731265b4c1f915a17cf25624c1109a29": "0xf76516ce11965b9970b53f7cbcf53cd4d984ebd3", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d460711f6cd4dc36bb338b1548884b1ce28f5d919f9ce479116294dd34784524e": "0xe666339d61a192d437f96ad1e40f197d547187c8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972d849681da9673b51535230397b2aad3e68f7d49": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5140a31c6ea26bd87acb236fcf30e2158e4e060000": "0x7623c898ff1dc910b8ac22ced18595072bec72a22f5ac79f132b29b4cf03330b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b72e3cb05569922440ec3a39875f98af237e42": "0x0090ba05820500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a538f4357c760881d250e0a1bbd9e35999060000": "0x6ed0606d9db7d50d37072ffc93b580a94c9e11424c96fbd7d9c06dd8f331493800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa83bc9abf0e8c4937a8ebde74a7961f050747": "0x007ceafac42900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514e8cb2868d61177ec837649e170e52cb7e070000": "0x7a39d58de9e6f425d04d99b7693ee5f37658db558114b7aec1501018158d257b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b58305431aee894728e5faca9e6cb28c28ac7a": "0x001ab867e39b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f7765e7ebfafb17ebd8da8a9422d5d1a9a4760f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c78bf3b5da90e93c22b8b41666f8b30472358c1": "0x002e8b3a7c2600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e16ac66b63f96b1d8e9e3b203c613f9f246385e3571bd7730f793f01c668153": "0x4af9fe0d55c749c5fa4eac73c660afe9614c926f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c7ab705f87c13869b0a150742aeb36f34a010000": "0x68d958e8c1f36ccb18e17e1151bbfa4319cb4fb578b14f0b74b8b28cb2d5f01f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ae83c799eeb9d91044cbb2ffd28e79e577e1a9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ef70a1d0d8e97d88585fce557a65af431dbf158d2682b5088134e1cbb089b78": "0x6dcbf212a83175dff095fea2d226aca22a93d643", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2251fc8e7977546c82b7bd4bfc3383601436d5ef3cf7a3060859bebc05a9a046": "0x00e28833ecc493aa66477f04c932a4d689598910", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511962edc5cba9d487cbd05e9d8476f561cb010000": "0x565dc10edbba93e52936f84801076ff37f32f90b28491a8dff3204ec08486c0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007c2833e9857bdcfd571270b500c0c397f0ea80": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007e98442eba3fff13fdb90fefc77b2afb347e5e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d60babb8bab89537c2b2c8d0dfce9ecf940e40": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4b5aefb88bd749426b9a4bbcc09a3e9760493c6": "0x00000e8308e409000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b7d3dfb87fc35055dcb7d292d3bdc430496380": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a440bdbe81c1cb6e7ee0432788c3bbd5a769542": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a522a059291f53b8ffee8b90b72a1223b6dac46": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cc7693fe047247443cb52fda4173543adb8843": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986bc373e025f772a169e0c3a1f973f8725979169": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950e36dd2f9f0b112a8eedf160bdd4aeee06dbed3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981d6578eaae7398c11d6b3ae4842411ede0d8c14": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d646dbbbc90e5dd14a432f77bfabcb173d4d9d9918473847fa8e63ceba441cf33": "0x009b6f347d957e1374610319d75d49348c54251c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817deee9d5d071a418b51c02b456d5f5cefd6231041ad59b0e8379c59c11ba4a2439": "0x007598555819639ca06fb8b20e3ecffe1159cb99", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc6b49f7539a0bdb98f78b3089baeb861b9e71c1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bfb8779a31e7ad4c1e4f852383bb1c6ad7dcd0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a04a8b46187fc60ec1754b78c6489f8918941321": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890096b6577d9a53f506476c8cc6212f947562ca4a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009dcd9ee2679e1a794297acdcdb9b325ed9f2d5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5146733e3e0f5a76228547fb9ac54c780078010000": "0x5247024eb375e8741cd51473702b6f574bf45b8585fce64768177d2659da5f3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978d4635ec2588de43585ca514e0ea0201c52f689": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d95d6253809ef7c7649c839667cc1996e24d8f36": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e17c90f875b62d277af6d0fd9ed6e2258c8627ac561c55ba7e193e6fc18d83f": "0x0d9905f0c546708f12b180ed038e87fa702e0cad", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003ef653b996a653d41d4ed315b3209f44bcce9d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397836856d5d672d99ad3b450542cdacb91c394605d": "0x00583b15017400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b98fadb1f1143a50c58954b92c83800d2f23c1d": "0x0060adfb90c801000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6208d7c4e716bc9605f4eeeb26a73f884f9cc17f2bbfec39364ac917c716f149": "0x8a8043a578111b05d48162eab62fcdd9adce5185", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dfde2d5b4ecbe01f64d4441f0e996171bf070000": "0xc4826569e68b7eee1b5b93406e4951fcd7ab6b40be519a7db5c6732f66da114900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b9f9d6b531546e4c80058bee5749d72ffc76b54f": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2894a4e556566eaf46b3e383c7d1b63b16d0bf1400bb2c763dbce51947b14f5e": "0x00497c0ea743f6a572459c14dff09468021c84de", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a951a1bcbbd1bee2cc35cfd96dcf9d101e630c40": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900df109c62f7e61eb2531f8751a9202beb4f5436": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009907458a775081e900351ba720465e4f64f812": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d0e96f05d6d91d1b10ada40e532f72ecaa060000": "0xaa65fa461471c7ad4b09bc9b74844df0faf71d0198782b0f26f704b185ac363400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef398a72ca7e9c352d14aa297c5c59f604c43bdc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900799a6372295097cd51c0769caa6c8866bcf7bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994b05d7a1cfc33b148caedb2b979d603a6532bcd": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2eef2aee654d4975535f2701af86ba6d169c2c9a1599b16635a2a5e4640db94d": "0x9bbb49b1ffed08d3f79a352f1a0f149d88722fd2", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da91ab2f4124a8fd2c5a3af5d64fd1120ebe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781df87a117417b554a2ade4f7a425fcc4b2d919a": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6cffc26fb979a2a3d44cb74b6295d31974e4ede": "0x00d4cb74a2ed00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515c17327d78928d9d302a6614be5b5aa236040000": "0xf8750a008794352b2a7533510bfd2fdc2f2ebb55e343d2dfc4c1bebdd0b8987800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d35300fe32b48fc3eb97d1033cbefe8aac2d2d9": "0x0020f84dde7004000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ff636bfe534a97fa8adc9366aee821059b032d2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ccfe74df2e586d29d3fef37a234148f3a1b99262": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51965ddca4df450ce493b696822aa710d6aa070000": "0x12b1988e003ba72cf070e76e70db32569a8a90e4676deb1013b4f5872dbaa23900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b8a4884a5afc6cbf0dacd720fd6468b41b6d437": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de03136d76b36804ad53f74d2bc7a0f9f50ebd9619a5746c20da5780fb739c33c": "0x4b8b042fbc1bee7f5b9bde50c0706ddf3422c890", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f786d0aca37d4965c2929cacee16ad42d7cf9bab": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518de8bd83a7ce80bb5ac408edd85d2f96e4050000": "0x4a80a6b62d1147e7520adfcb464d6006483c2506e258d1bb4e8bcb057e637b3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735d4fbfef171c1f89be9fa8b14a6b4bcf8ff89df": "0x008c49524d4e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397656dc09b4dc821695c9de996b762b3362e00a205": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513ab56ba0302e15df90677d55d3a832b0c1060000": "0xce5b1c0387a6aee95bc73e296421663cebd676af55c12566479cc81dc83a530900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df81dc558baecf13373d4324fa3a8050cb7b63e7": "0x007ebb5c423f0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcdb795c73962290ed72e9e9e250f39f331fa6e0": "0x00440062123503000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ac6d62145c0db63bac474a8bf1ac31ade59b9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009525c96a2340c3cd1e0d4d11199f781fee5e10": "0x00b83cd3241d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cc7693fe047247443cb52fda4173543adb8843": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d137e2c529088676c797702ce425fa0e4ca92a4e27dac6a2e6351bd151cf94417": "0x6cb08b8792e23b72a3af06933a30997d51ad1565", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b9b7ef4b7a727dae1735e3ce35827316135f3210": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501c78c2a8f3328fc86261626580d2419bc8835493ac89eb09d5985281f5dff4bc6c7a7ea988fd23af05f301580a": "0xdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289731396ed98bbc215c9078bbc583034ac85a4995d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b91d0e4a1e311d6f95820a1d7c237f0648060000": "0xcae048bf18031f7f4781b51b36bdbdf12b0259c07316c67ca4e0859d4ecec35300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd9b1a9d7e2c239ccd8fd3f739bf2d3bdb3d6a1d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b91c155fd65aa757542460218f00df1e9a1d822": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a99757c8c2bdacdb8c1470ed761d375f962184bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289257634912236e07f8bec7c6c015c88667d04b272": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da4cd4dd151f0106d8157bdf02bfac75f9abe8e635ecc6498b8a8f6acc1f5e674": "0x08ec4aa26d04dba7ecbbf121d50373ba1037e763", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397540f856a7ebd537891067c98e61d70d235257e5d": "0x00963016623e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e35219d98bf6f9c693bf04197070d79d9ba73bfc": "0x006859e438cf0b000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897038e2b36b1117c7c9ac36c511c1965bc14b2062": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900887eb8f21035046af3c7f298fce3bf38785d7e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700efcd61a32da40d230aac22bc0ebd026d8a9fcd": "0x0074f9f66c5600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a145addb0a24f0c4697189a02eadb006be244d49": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5229fd8a631cf877622f2e37af6eabf15cd99": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb5d0f2f6b345f9c6afc5bcb3dab5ac11385e512": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f09f297c045899f5cc00131329ee10e522de08": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900958aa22920b759f069b570b275e2f9034ad0b9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516fa11d0011a329b296349a5fe0f1b35636020000": "0x24bdf1036d7330a4523dd74314816746d3969569fa9604a4d3f8a3de9ce24f2800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970023d732d511a5d2cb335d824655f29daa85be26": "0x006a5d2393db00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e1404e9af1c94c9eaf8fa92e2c2e1a936ed8701": "0x001a3995772200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892107691d8a935f6f5ff47171ed954e332c4248aa": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba61cf8a989911a9a3f51ddeffdfb15e959fdf99b1dc76a3ad576243dc2f4d7e": "0x008b0c207b6efeccb38af8b6849ffa6b9be0eb61", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51666cdb2320d200e9324ad39c268245363e080000": "0xa5131ad6c8ee8e53a73081a3a56a7706274b851700c5caf5b8202c9d2bdcbf5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d01d14e379d23d6a9b47e8886761d8e9d7e56f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d845731661473decb5f5f8a168516450f53efb325ce899c6d356aa13b71356662": "0x00afdf133993cc0d4101f56f4b12a0504024bfd6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a74d379117fae37e0f17f3ad6634baa201af20ee": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289799217756e33b324e3af7439e0645c0d65b614a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad1626660dc56812b6798a4960b02662e2e7b70b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f352be93aa9f68a7c666a3bb280ab2e6a69c5d4": "0x00009108c73695000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973eea99becd232fdc16b87fd8ee370a4d0ff68165": "0x0022b2219f2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a7d372d156a9cf5315d828bdb0ee0b983253242f676e5760b1eb32b6fbc567c": "0x1af41a96bbaf348c3ca582b65193ab4d9108a22b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daced6ba10b1cdbb0cb10cf662c37e312414c26f632fb5e89e1ac410238a44068": "0x268b05ee0e0e033bf074554452e701a250ed3375", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890dc2547858e1caf83aaf4d61db51d3696b2a593a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a38edc99fbc7935f47a5047a757bd870a7f02640": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904c6f1d15b8b0d5058db45fc13d6193fa78848be": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a5b1ecb17b9ced712df12474c5588c8433ccb44": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008b789d4787d4b2688f82f0cdf9f95ac4865d0c": "0x006859ef3b6102000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516f13b88ee31ab680cf81eff28518f9c61f060000": "0xfec441cf991e77767c7acf554e9d61efb63454b4d57153c4ebe95e15d7c3a32900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46975f837e5abf94b061174335507d461e5b4774944e42bb1f41003eb590cf5a": "0x002cbe540f860818a183be6052ffbb1de22dfbec", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f4bbd56287c3b642dde6ed8f03d2f85ab803c0": "0x00da868e32f600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d528797c0df02524a8804adb5101bd30ca763253ad70423368b4cac159975766c": "0xffcc480bf0e6acdbfdf71c7b8ae796647378c155", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8a1ec46479fec3c43eea382d637de8f295ccb2c0b6f6fdd4c5d34a687737a601": "0xe77bca46a70638e60c9f81bc09d2daad7ebfb379", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6d9fcefe1a8f0fdc1c52c8f7a33d299be4b4e67": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000ea5d2483ef8ee35807c829bdb6addc0f8b76c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900606ba24a1649ee35a5c37671941444ab6d2b8a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51898b161dd038cbb146f4aa1cfa97dab35f070000": "0xc07a393135ceff70346ef1d14953f5f348acbacfaee49076c903c17883f75d7e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d6d9fcefe1a8f0fdc1c52c8f7a33d299be4b4e67": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b4c4dc1fb222bae0e04fd8cd23f78b37bb39c17d": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915245f6c73bdddef958c94650431c4c2330d4faa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d4b6a8249f1ae3f967892d0187e7d783a49d926": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ec93f2b709623605acf6120849e088dbe0fc37a": "0x007eddf9a20200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b98fadb1f1143a50c58954b92c83800d2f23c1d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928987b72db3c9257c0647034b53686116d2ffa0f384": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c49830add09b7b13758537fa4e8db73fa5fd4bb4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519781ddb16f6436b80dd5e509b4ae8da5a8060000": "0xae0686ea4fda9aeff2ed8ae87b70eab0453af7bd4f938128ae447cfb54f6155500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aca3500b68da8eb37f45381fa3a0c7f815e8f5a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d42059f4bba9e1ec1aff76fc2c0afffbb0abe68c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a1329847393a87ad4c25bb21ff093e1d4d050b3": "0x00d098d4af7100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951a8e0efe83ffa0ecb7f175fc41e38563886939e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f288a5688016f2b198cb8b105ddbe6e17070000": "0xe25518f95848feb16fd5dabaadafb39cbd03c0d440b47eee1042a5ab37301d4e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d525c90c5a8fac52e9992258bc4bf9b8de7f812b172afef45147ddc56ef23731f": "0x828912ebbc7be3ceb23de58fcf221f171b31c88d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d30ef809e87bb997989679572d1416d0d311276": "0x00206885de1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289addb5210dce9127918db041caee93be7b50ce633": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e4599a9f87ed76820e4a662b0208d137af070000": "0x9653bcf18e30531092fdc1c52afe06cf61f56fb1fa5d719078cd6914d395ed0f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fc5ab3cd8bb41cd6c4b6319d75c8b84d40050000": "0x68489fc73900b3e283faa5b0c7b7fe49815a54499653ed3ffead8d683f52002c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecc05d761209a12fbab5791b193ef3855ac7abd0": "0x00e09b147e5500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928935f7b776fee00f961f7cd1168d48e9be61cc17ca": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d10d1cfebf94c6eedbf01ab8895c59f50e660d46717bb226b23ea14124f2edb56": "0xab255abe36663fccdba892c4ca3bd160bf845f35", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a901cba20c6616581ae8df057838198b5b41f3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339714ba180622dcd7ff90ca091fae20ffc0dc847100": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824317e7adf544b8c6ab81cfd449f4154d14a61b2b29": "0x00706f96a686020000000000000000008564160400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243163e5addf68d6e21695adfe1f8fbb33c78d9cd4a": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db428e7a5a1127119f7af84d611066db63cc1c4d1e4baf1ed201247629cbd2d7d": "0x974f15f02a0b9715495ef4b620abe5f8debbf0c9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008350bdba3dcc3c01474bde4a9a6bfc4144baa4": "0x00e4c3b8db4500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928a6ba2203b78b7e0de3dfcaf687c400bdf1548d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898bf1c1e68d1bee9a5d188c2b49939acfd804fc4d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffb99b6c2fcbeaada365a38b333eaefef3ad99eb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513432f87443e661a6e7fd4950184b9f6a91080000": "0x785378390bb8bcde9f1b6a663a8cc3258a92ed222602e3be7ed626051d6a8c5f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909960be416c44f27b6eab88cfa5bca92634935d5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009907458a775081e900351ba720465e4f64f812": "0x008c2a02902a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970036ec309c318597ab5e273d535c6cf2b4ecb98e": "0x00f077f8402700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002c39a54adc4033eb6cd69c7f67459c0bf90ad9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978f5234552ba1bac0a945d5e5bdfb56d84d4931a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54730499c6c53dd16d1e3f8007b64be019cc9229db22d36a12e44eff1670cf5f": "0x7d5b0da867de47e3400367d80d606d08f064e5e8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d14468f3eec001c098b4584022004007011be560c11664b6025cb7c4aa39e640a": "0x18ad26cf42a6d886352e9337ba7d2e1fa7302c8f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009e2144ec83c3caf492d6ad92cf33cb2cf3aa7c": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ad661fe9878af3b77754710f50981c82549bda8": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976abcac223e44ced17304fe30be5d35661ed1d142": "0x0096f674118300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e0ee8a2c14d8c467a9b31129caeae40b021659f": "0x006c2932302b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890006bdc62b8bc4ffb50a0e99803b147843117239": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ba8de048096f281123e14069af9ee6c29020000": "0x064beb03134e27c7ea7635c6dbaa993b3b54819217b3b50838fd21cecfedf72500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907ef90799d9df56a442e958d6bcbb274f2f9bd55": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ec079be8fccf89a39f8a2ffe35bc08f3047876d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c4ea7d30d01e1d8438dbbea89d44d235a46aca": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397081dadcdd7cc5d6f406061007a6b4af00444e75e": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fd6e3905128b79f64f6bd3cb727134c81f070000": "0x52bab50114e81b832ea60de94e7bfb05dc831a309ddb04cbb1be5eaed217151a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d0d62f0e012fd9cde4c2b255305228fd4a3160de": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4c17652254bc6e13310168a21c5749982cb6d64": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d208bf08c0dfef7a942588f65ce004eba9932fae7c25fb33720debf8d1e273502": "0x0d666d51a8d222c2065f611e6aa7d4c8ff4a4bbd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891df8d1ba25da8a9d6804aed11a7650f89fe91996": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b0b889e2c356ae90da4692519b9d6e1f4020000": "0x3ac0cc6ebb5ab258f626ddd6ad1c1833140996e9703c6c4a5688f45b421ad71000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a0957c6c74540218f392c01174ac3e6c911b57": "0x00a277755ec600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd62a2b80ebcda1b2f14d2a903088759ce56482401fb4130cde32775d6d210a6a": "0x11e328bd7023e933426940ad12d6e1b5bbd55f1e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f9d96b3520fc91f21d75d65ed8531cfda0628a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51386a2a88bfa6cd974a663307c1044aad39040000": "0xfe7f59743f2e3b19178dd8d7eebdd926f541752e408ea28d769f5897239b255b00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcaac0a2cbf8e355f5ea6cb2de8727bfb0c": "0x54000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922b2d90d35c20a47c6f579fb6603778e7010940b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928925e710cb23477bcc48cb54d6a329d35cb6a79d67": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d34e9fe863c26cfcecf82bf4cc18701b3ad4767f": "0x0008e8e1298b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003be22889aedf2d4ddab4756263f82d6aa52ed2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896ea6d745b4dad0ef65899ca31e2989b3dc49124f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e79ea613690def3083ecc0d55b223e7711369c72": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d3077ba23533692a3434fa28f7cd678fc3f2783a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a8853db1bf892ef57532516bf9d3b2b422060000": "0x9ccea8905de715b2b260070927dfff763ee6d0ffbeb7afda26ddfb2f614fd20000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e1d33f9cddab664a732b7eebe2a80d04ae413": "0x00f43e5be3af01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ae5328446d335ff5aefe66bbc5be2d827915a3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c268681587b32ae57f9d9d774853d02c43070000": "0xfa32ba6d93b464f5c8b53ef103ea2d296ba373ab17b21dc04f2ee78c7389d23a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe7c8c647c3574eb9931d1d3f36019b6a6d06e2f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f94e18a08e26f52c30f0bbabe599c449ae060000": "0xea1b65102cd4e98ef88d31c7d627ab4d4f26a92d4c68bc516ab7ee84cf326e6c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51946722619b0d780ebe8a673deb82a76127050000": "0xec908d5b90a9d0a6e7255ac455cfd353abea89d31ecd28166efd9c033e6b6f1400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a81108e5483a351280f7ff2d3fa429adee050000": "0x8c17e962f910139d0710b3037a7fd7929e6da7912de43fcf8c5dde90c94bbf6c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008ad80219aac538f2374ae749d1ac797da21bf7": "0x008826bcfcd800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783d8e1a3d7f05fdc4f4a1a99d5a89bcc62324a04": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000bc706ebecb19e4c334a8e8e9becef6e58a2f0": "0x002a0967c50e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ad1d079078b3775e1779bf8bdf34a72d89455cd0cfc224a73c7844ad80e190c": "0x8067113652df86032aa683acd46c0b2abd8c4a36", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f9623e0605ed7294195c72779b378b442834633": "0x00a0724e180900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c8871bfc5d87a0cc0ecdeac961efbce730090000": "0xd62a2b80ebcda1b2f14d2a903088759ce56482401fb4130cde32775d6d210a6a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970045fa890802d3a2b2a1c7fb78859017786a9fad": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec0f3c02a519e687645f6d29219695eb2461e01ad6813ab7a9144aa85e4ddb56": "0x3955e672f3306fd39545edb3d7040cf8de2f9180", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d63e4031c07cf74da563595cf55df4b52063a7ac": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dce6b147ce7c96b3722bcf6ea4f86c98f0c3419": "0x00ae658c792700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890068c220ede25b44a185ba20fa5f540928adf5e4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890082f93778fdd8d0264b2718574c75566651201e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe149294b9421c2b54501d84b1cbd4c2a1050000": "0x9ee9f66b501f25d1a28c7de9aa2e2717dfdddd281cb0971f5e42a8657c05aa5300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ea61ed6dafeca43601645e1cc6842daa7ec0c54795269e30df0c03f819ee265": "0x6c9f5c47814f33659ef2d1996a0961e80b8597bf", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28f1facbab196ec6986b7b5160b9345188d2ac9ba60a5375415a7c80be2b8d12": "0xcf7c0865a0dcaaf8bf3c5641e82eb37c690d5024", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004d70b92f0b70b284fc33d396e293ab6d72c04b": "0x0016ccb8010900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700887eb8f21035046af3c7f298fce3bf38785d7e": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ab7d6f01cebfd4f9fa58e85fca6ba6a50e4a2a6": "0x001afff3266700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa3b62303f219bd6622c9039ce7df26e89cbe72b": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890020540fa863f29743c6ec48150a3bce97706f18": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928910fa75506994a9d1a03fb01abb31135d662a7086": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970025641d2b744f643432cfef4c08b76430fda5e0": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddf8f475ee3b847117ed3df673e85c8b4593bbf3": "0x00a65f83e67f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9459cc85e78e0336adb349eabf257dbaf9d5a2b": "0x000467eeed0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397228679ce88ce13bb8483bbefc4d107a1aed02d2b": "0x00dedce2d93f02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a378bab57ff303be5842361b3c0b5ff44e222a76": "0x00dc0b7d560300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c1aef275a28f2ee7241ac81ba4f25bcf09bccde": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f3b4bfb9fa5372a43bab26800f6cb125c922c452": "0x00e04d4e6d5b010000000000000000006832320200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e688284626ca2d00b578865c0e7d189c6ca978b0": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a36821b843a170995a145f3503400866bd69fe4": "0x00001c0611c813000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f385662f28eb02ccd3da6d3a370777cf73e68306": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397888a870b0e77521b1121874499e934714af32f8b": "0x00a0ed86271400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397adffeef501353d90db6612ed584b1438daf02c4d": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289522aef9c286463840def1e9d7b43f15de76b1b4b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c89a2437b7cc02b0bdac206ac317a8a1e7826db": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4263bb05caff304086fb08790ff345aac33cbef0eeb795be86fe796e9e5dd917": "0x1c6b8bda3f7adaf20a55a970706d195a3ef9a1cc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928980a8bca8a6bfe60479f523c10c459ff6384760c2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f220d58015031403687716a43c54f64dc99713b6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d149528821a9e955805a4e10b49ef3ab68b0adcf7388bd60202f441b121d92b36": "0x9fd1eba5f41419b2887a1e36e4dc22598254864e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d94a5e3cb03e089fd5d39f713036cdea09665ccac86ae2271fe1b18cb40a04f36": "0xf4c17652254bc6e13310168a21c5749982cb6d64", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f360b24a530d29c96a26c2e34c0dabcab12639f4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f361416db134b72a3e84dece57cbe6179e40f283": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890063a5947b2cb42b51fe5e6fa0b75e6105b3a0f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa0554b5802d43ab255cd089a6a7fee211a41a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12c60124aaaccb363fa69e6cc5cbc5a14a023292bda1b4bd5627ecd63a571601": "0xb9c635d29a8bd145547759a0e823aa306c607a4e", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5139bdaa25c2f88d09205eb4d0daaa910725010000": "0x24462de23cf247bc7779c3ad0d1aa31f3e45d434f5fd362e3a1485c53374820500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1afc89af3de835961ef0c698e6dfb77ab5de39e040d90944febdc47941600f48": "0x2de237a350c65bf399bf853a3cc6bffd23b21917", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512e99e08f6e5fb9d43e5fa9fd8c9d38680d080000": "0x1050436acc3c741a67ef38f329a01baaf317c24ef837ab6245e3c1531719692f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c64f09d3a447e74cd8e8e769983c25c95d697714": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de49eb00a5f8632db3e45b24a7824605c7c7cdf4abcd9b17fe39ab29da4b77339": "0xbdb3924fc91e02130cde47545865b618eeb5e1d4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000e5a0a7326596d024936e96ec7b662e5de59e7": "0x00f4e9112c1501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b9be8a12f0bb04e290a6727e57dd34757b776d6": "0x00a0d885573416000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893be088b61fe7972ccefd39298656ef9b147e06b9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970001343f03e9ad77fa47f674c4ff59d5fa11fcb3": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006dd904124038280e01c52b465f2d802b3c1783": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972684445d42e93876de6d41ed685081b9ae9bdd31": "0x000e0675acf100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397162ea064ea50973af277b0c8b32e9f900e2fc635": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dcca132d5786a46bd92175cfb22cfaf39e020000": "0x2259051e6c53d3a07e28073904ccbebb981a4afa2df4ecc48f2b2a6a8965077800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702fa77f03cddf7f1ab675723e15e88505da9a025": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007589e0ef0ead23d975d47e48eda004c90b14a6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895976fd31391dd442d59af9ed43d37a5394379956": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d531b67faf691723fda5e741359efa9bdb52bde5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df423fe29ac1331bfcdc8e01f2934a971e4dfb72": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51af0e96fa5aa6c46d035a4b2e3bbc036027010000": "0xf4f3e8a5bf3a21759f79fdf15f03b1bb099b3ea8284a845d5eac8b476e61880400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e713a22e920a812dc7179926fd698289ad66bbba84c982851ddcaaeb26e0758": "0x0003ec6a173a7f45631ca5d96bb5b0a3ecccb5da", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f2f1561451395ed8091ac2e016f0953087040000": "0x3004ccce7f54f6043f13a030b1f07231d81826e99ffd3508fddfdbd0e5a9585400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dc0fbb0d3eb93773ccc744fe13c0beb2820a9e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749a1c510c50555b7be6e68e064067038e5499748": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af804c858e8bca9e04340cc5c9984f5f2acfb409": "0x00645dd8e71400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51faa2e76d984fad5ad56eb78def8615bb0d070000": "0x981e0c8001f0d80ef450c0c0561f9e4b22337af479023b9d79851381ffbe034800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb2b6f2f316f419c8bbaf441ea94e47a2193f7e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c3f69ca5a5806321b36b68e6a25aaee0b58b259": "0x0040f79c2d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e5766ead1ece2e47e415f74fcd2d2aebf46e87a": "0x0094487fe37900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704867292a47c5837759dfe13bc70bd30aa01050d": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5153708fb45e4217f45616285f424cc2b10a070000": "0x264319ed6a0895c04112917fc9bdc0771f4a4773aae014a99d25bbe06fa1057a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb2be121b15ca94f6156f20b8b45410676546ee9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0bf059f5658c248e0ac04ee4f1dc07bfd739ef0": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900349f41813fd23d0e1c6fe6160d5d44f9931624": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943a6edd95e865b50426330da71638b56f2a75c21": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51509574d1f64b78922db4f776b391fc15b1050000": "0x3a32583d65fb0c890d13834bd3f1477b91ad86446828a80c3ba30f6241725a1000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c870ce8eef81fe072556ca579fbf77b06f060000": "0x3882ccb174b01d544a410c104c75d018db85d9a749e9cc59249cfcf3d4f4d53000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519a05ff2cd8358b7f546aec3be1a0952dc1020000": "0xdac5dd2abf4db76ff860108062bb8bfe188f80d69546d19c1993f23926ae363800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397198a1bad80c2eac0fb986553955cfb5e30f464c7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960f7905da2eef27ee2992082769b0c1c236c7395": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397239133b0a6973e8b1c2b7657dfe9abf78501a894": "0x00b2f5886e9700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e070de69e6cce7c2347b1b8e8bae4b68b04a8c6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fffa82724ad200edcdc04731ad4320549b080000": "0x48a9fe7dddf4711de4871c4a9f5c52135b49bdb7fe99d393b60868428e06370300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005056c4cc0929d2eafdfa995455e68427137dec": "0x00da5001030800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898588ebee2efaafca8642783fe8bede2d9857fd68": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a2a6f1eaaeced797b514b9da30309ccdf857d70": "0x0062c655919a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7d53f3b0307de42d7dc018f672f7e6af34a8194": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd04defd841f7efce21f5c63f123baacc61b796c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df586c86efdcf8add8219c7c987a16d25e39b6ec": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e8ca36ea8d56e723c642cafab49c34f261abd": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706118f0b0b10db4ea349c972900c67fc44d54516": "0x006e6c5ebe4d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88f66ef5a1b50f36b1ebc997c91cb47affe0d1de4d5d9be9bfe009c0783e912d": "0xbcf0c42b60a210ce7d16928b5cfc4421d23ada25", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004ad027efd31c17dc857f5e3bcddc672da6bd7c": "0x00c453c2e12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397553581f31faeec2ffb2119e7ae41a257f5ae0c44": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899dedc7bf7fbcfc0d48964cd9977337b944e177e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f04a8b3701556ebe9ff89b64058f0875ba4366e3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dece2eb75309f0b344a924dd7a35febfe235f71bbb3ec4cf986a440342256ce4f": "0x77fa549b3eaa7e18718235b376be4eb130fa54ec", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9a26d09671340f879132d0db15c3be7da030000": "0x847ca879aa4ee4e774297222315e844f84e6b15f035b54a658be03a7166e980200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cd9efe87867960ad16f32ed71491d76efa060000": "0xcc3a8b98f63e0c86737c439a3fb82a5769fc333b42e8abb683f7bc52dc31374200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a003fc1e731965c0e08ccc93868cddae6895d8e0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb2404dfb98a34ba65def56b35315fe65a050000": "0x60710d0e326430a244694534e75250dff666d2a8643daa19aefddc39aa5ade0500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48610dd34137fc88e4826aa1a964b4a8f532453005ecfd4ec2fe9fa14e882117": "0x1c5142225c7e26732a7ea83d3b25c826d8637556", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009655d2ce1236c20262b402d2fc89892962d45b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e8014d80afe8da0e24e90539b864794c6981a0a": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d508a1452fc1ae7b10b6e858d75e669536fea16": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6e30851f4b86598f344b29224ebc8a52503adf8cdc32af154ab6ed837fa9091d": "0x076f1329e5a326f9b1a7a83b99281e1fa0895585", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc13a9ed082cc1556a92d05a143fcd2346ebe62c": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0016292937846b8e0f933c667229d8b6765917b86dd19e0f6c32bdb4ab1a2e34": "0xe737ea62ef4a2b771e3e82be3b8e0898181a8b62", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4932280b37de5fcec32232fb378cbb24275e8f8": "0x003036d4980900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51406336dd7e68e1d0b1bdd15c1fea9b67f1000000": "0xc8e26d12f564d9430977d9d4528b6d81a7e965354fcdee3dbedbdb3366c6504600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8a185b4c3f9684a0c7db5a9f49a54d9227ebe5e": "0x005afceaa60800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a51e7f4c64e59e468d49709561ab3d04062aebd5c0f297a491a8002f2a72250": "0xb043ebcca29d4a6c8ba1dfdb75fedad3dac2a5f6", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db227d24a97cba787bde41e45897f6cf34822e210d475862df1a62710a661e13e": "0x269f2df75c2f22db96592cad6ad5ce58bb85472b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed4629967a1994b2f28b66ca0ad7d5f7bb583ee4": "0x0032cf29595c01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d126eb6590ffee5e04197ebf508cfb295060000": "0x5820b363e423d6569657bec1820a35823af2aa019c17507f2204ed9f5c10714700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b10714a62fa5f24666e50af93d70ffd033040000": "0xecde39c637280f59fd38dfb06099f3d6bb049e91b2ca221ea93dd7461a420a5200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900710a76cb9637a974616f5f9295470eb4abcce9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289051ae28151a68cceea5e234694b82c913a802fb9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928939b51396ef3c70571ce86532feab5598a766e8be": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e95a0b7851db5423d0aadc91bf963eab02c6d440": "0x0092ba17bedc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b16547a72b4d9f37fe34fd67259d07f65953d141": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e7aaa4af7293898e3d1d70fe20cbd525c495818": "0x0040b10baf682c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289414f19cf5dbf026f6e069532c8c220b82239c652": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3c2a4ce7ce57a74371b7e3dae8f3393229c2aac": "0x000e688dc7bd21000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bf140794f7009345dc3de37523f63ecca1b155f": "0x00feb8bf501000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430129b205bd7da590c22b986f2fcfcb3079ee3d69": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b065022613dc0585e7b5536173fbe028eb6c00": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cbd1b6c83908c27f324e5cfbb6f62d27ef9e27c4": "0x00e081d2cdac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824339dc8b68208f3cf7de41f8129623dea433dade6d": "0x00001a93fa350e000000000000000000e5e0fe1600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289de5eea1691af15296ab6474d161ea8a4ab5f86f6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bce70d037bdb23d24b729510a4d9afa46d060000": "0xa46bfe557b5ccc967536df92b1f24bc6031bbfe646f2658f5b3ebac73cbd036f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d221cfba0cf7d028ceea3c4e5f8cfbc76f2a46d": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513956c52153dd4012be7607ab20634b52a0080000": "0xec3b9a4f7823e1300b670dc007d3408763760cb7c320453d33619773b01c412a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d126647690e4dc7b7b7a0705802d62342f6f759578ffd888ff6a60cd1708b3a4a": "0x007edbaf17817a91eb48f6166a592d16cc47846e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a38cf1b92fd5b83c387d7d0f6a05ea2fe915cf9f0e2557b3c7fbcad6cdcb83e": "0x461df0f49a1b5b38318c1cd425840986e15176f2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d908aab5055588f2742840a5c03d5df671c1a20427efa284748daa3990e21ab0f": "0x3c3e4e713e333bbc44b36f89912b5d8dfecb725f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4895ea497de505d9c6e2adcc2e036d1d567d088": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e9faddbdf9c03466a607fc06415ac3f129aa2dc4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d368d7df47ff9f015a247ddea7b37abb1d56387b632adf8393bb73f606540fd1f": "0xf619a00f641e82037048c9d0cd20f9b64c664fc0", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f61b041f3e62a7770f67009cd5b7af4676040000": "0x9c396028b751adc267744c732e5838ef86a0e83bbc957103d31206df3e24f13100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700294eb6c545e738597385f7cc36298ba90db70b": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f897a81a6ab5aa5cc24e18c9976b3882cd0f4ccf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d783eb106ba819ff2125db858ac9bc9a5f0cc3f825f6a8050d586db169555ee16": "0x003d69a4460b62a962d7dc8f5cf77db217998d25", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb9520248a32078fca7bcdc6459dda51afa86fe3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa5b8e7942818890da1ab0b8ea9f79c6e912a758": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98106d7b4993f855c6b5f7b9a62102a587a3da69a9616d0d110b5250a65fca6b": "0x23c93d5b4d09093d82ec6b4e62505071c3ef00f9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d95e4b573c9825824a9274497e5777bc500b68": "0x00a498397d3900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fdab49634888d5432dd9f4718887fdc69d27f39a": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa961aeab33a6e82ee5a8f3a0c42c4f87f7068": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397391a6bb5f2fca9a19d16f09aa298e9e23288a5f8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397849c50c6f7bbd0663381241fe5a7c65b3d74227b": "0x003278ff3d1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892586319850defd14dbfa93fe588780fdea0d4336": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0cc283d935edb5c0df5e29b111534c101fa0280": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51147ff462cb2c243e40baea79116a06dc28040000": "0xced8b2fdf65900940781d3c01ddc03e4adbb8ef6941df7b6e4bf370b10f6094400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e48fa43331d29570366a4244398aeb56756467cb": "0x007a6af93f1400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51404ccfb641e5b17f9598d4801019c6c4cb050000": "0x70a7e3caa9a1670cb78998b9a9e3a81b834c24d5cd86efedccfd854b45ac7d6700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ed0606d9db7d50d37072ffc93b580a94c9e11424c96fbd7d9c06dd8f3314938": "0x1a1f84545ff677fdb54d955f707055dc70f05452", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c4cfb90d630bdaab104b05386b6f7aa3574263": "0x00b2a1b3670900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7321957993cae05c6d5e4282e83d1b09b57caa9": "0x00e40b54020000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5139edabef548fc1fcdd5761fffe4573ee06070000": "0xae723b4cb2d54c6806751d253f1e457daeac267c88eae738864e5c8f1ab3080100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd8ba33ba9e1d1c1250cea9a8aa6aeb93df2df2bab98d7c330a2834cbf707ac7e": "0x9af1322b1526ea42be721916e6ba232b4f001fd6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900049f62287af249ec7e0afef09cd6d6d708bf6f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e96c1b891441afa759d3b9f5576f58ddff074f49f65059f410a4b4b9bad8837": "0x00c99a3b6afc1215dc0b1196ebd9edbf8b045b76", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720c1bf2cb99a7026fea57c28dcc9e85c4ac89c94": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a2f001ed283dc87324378e0fb2c820997b8ad16632be93cc19869440f5f5d47": "0x00864b879b69a70b8798a0f61de21ee5b5bab3f4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894cf7037aeb2962a18b2e08aa140f07cb53e1a957": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289992094bb15f3c52186de0e92dc4912318446be04": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b494019d773226920acbb62e0d9a1dee4b080000": "0xa033ebb41c70f7fe3525f62f6678ea6b8b986e2808c4e221b51c3cf42beb3df800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ec4e012df5a2a6ad90def9941c754c27d7eb0d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289599266e9b5c0983b9f68f13f1834fdac9c2f0ff6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dc2547858e1caf83aaf4d61db51d3696b2a593a": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aeb9aaee118a585de364026e8b449f37ff9ffe54": "0x00900126fb4700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7aaf0d5e96dbe960bf0a63df1183a14398d655a1bdbeda95758696f73fe57738": "0x00b7d3dfb87fc35055dcb7d292d3bdc430496380", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003ec3f13edfbe650fc1a703298e66caeba93476": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4e2c830f308677db112a4a79bc17a39c91352b6d3ea0e476ed59dff980a01677": "0x08c204dc28bcd0c991b903bfed4eb5309d1053ee", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f00eb46d1af27a6022117722fb36628a4fd16cc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b07cf336066916f70b0b5c90468feb73790e1e": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f06b9faa0d5b71935682f53b6ec711158a8e9b": "0x00042c3eba5e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517df2d61306f1c493f624b44b2367244c4f070000": "0xf2febc980f27d3470e1ccad9a8106c009c08b08cbd1cdebb70786669f76c834000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b5a5a1382d1d88caaec3262a614216da798e5f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ac2094b05a915b14b9b27ba6a7d92da35d0000279947e64b42e9da82752f97e": "0x001ff7e32cfd40f06e0d9f60f60eac6bef113f41", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc63b6d81d7d307b9f4464304330a840f5159c78a804dd344c5fcbfb3da9aad11": "0x008ce1ef049738e34a1f1e03764ec209b329a558", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc686d330dff564af88ccd1d23e92b22b69e3b8ca825fd429bc3b8ce96758394c": "0xb4b2611b6a9433aa098aa0a026a1d99037710f66", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7469d0b58b2bbc82cab494984169f7f189108866270e92a449a07aa3ca967476": "0x4b58917b2b71399c841b985727a3ff7fb59547f1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51867507d529d48d32f894c43c59f3ae7bbe060000": "0x72322cff7ccfe90301cecc6957a68c3024c93c6b498f2b3cafa29cb75b85d00c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000d21538f4fbbe5aee7b158591e7cfc2456b0c2": "0x00080442a01100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e06a8d603b1151b6e88a82a4ce53e6e8b985b5": "0x009ac019541900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765e01fd6abad727e8726046f5b55b25ff6bddf92": "0x00c0f2ee60ee04000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf51d287fc91f694da8c8ed0005b1251397eba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c431b755d5b1ccd238d5b8470b35afa2591474e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8b8e5173aa4696b5ffb4fb411811d3198ce837b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712980b8c3399747ec2dea6d7586d30c43b9326f7": "0x0024d4d8ace401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973680537578bd5308cf4c5d98d235c7882800142b": "0x00e6d7efd75b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eef2e4a5f6a01d5fb89f38211fb4e6a8702d33b6": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfcbce9929e3c47198198c5f16c5786fdcd613bb1d973ab16eea54bc850f0aa44": "0x0087066f0dbebe06b184ad03aaac64f28b6299cc", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b21315771454ef8c680dddd7b9bd5405a273262d": "0x00d098d4af710000000000000000000007f7b70000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac4d821503dff89c3cee4e7797926ae8b7db2554": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f65aba8ace3c2b4a36c14de6c24a05f664274791": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d40c1e3c54b1a2443b533b14505b267c1329a25d": "0x006a097df4a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eef33d80b1de326c70cfe70ce0ba3c983c060000": "0xaa79627160ce8dad4d4619e0c5dc2890254d56b03dd41adbe171d38094b3345e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5199a457a2cf6fb2aa5e1a505165289de559070000": "0x5e50ae079503cb865c2f6933205ce0132c3e7cf2562c5b95d91eed99f3e5d97900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f28a4aeefb6f2d8b39298422ffd4a329fac161": "0x00ee69afcc2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16293cb2df2f2416193f757871510572f7afddc8d958832689ef456c1096b12f": "0x000177e159f6b155a0e81f6859e9ca4c6610156d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c94b11f460481f86363563e7eeb447225fdb61e": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d517ccc6eaa9380931987daf0ea1c53ce4ac4ca8": "0x00b808f1f31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892fa4c6f0e3652cf77c03002677a72a46205e8f07": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930f92bacb185193876bf6f37a6bb10f01aaeb36e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972271afc06ff1ccad666da20d7e4c5817ce1af599": "0x00a8c65f98b100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b79356aad9bf2116efe1a66ed55bf1a0d124393b": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51013f52bd9c2f46055087bf84aa58e77ba5050000": "0xe81caeb02e5b76e68d008ebbf4e3b036b570f2d4c44064daa5d1b5efa0e5e05200000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d9681c2705eea4a62616265806236877b05370265640c133fec07e64d7ca823db1dc56f2d3584b3d7c0f16158": "0x82104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514a8d43b27fb31e087ea37e8b143955fb30040000": "0xe6d97bf878b1012927ae6afb7e092c541a5abc3904656981beaefb9ebb781d1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002611243b23dc29e9ed64f28df2c344055cf3dd": "0x00580efad5aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ae2f976301c5afec7ec28494b91471c1c2f1093": "0x00c05773a57c02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f489b21d5a4c8283a1bd0d39e47b654ba2f65a62": "0x0042224efe1700000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195035227179e48c40b8617564698014f13a09505d4014b468c1d3e394002832d9edc35dbbae1a7a6dc96025d47d5b": "0x5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d40a053bc7cc36ada17db15a16100e48122fe97f3993e9bda1e7b351167ebe314": "0xf95ca3e58c701eff23bcacbfc3c889ec6dc4a8ed", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243749ba28f1a561b462e7617728bf8f62ce0afbbbc": "0x004072e62d2d07000000000000000000a7df9c0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df49b492b314717533bade41861cb8699c765a0bab8ad7b83635662705c0a11d5": "0x516760a6e0a4f8e3683260c1b5275ac0b28992f4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009dbf13548b5351c0646b52b1f81d913d0fd4ae": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd86a0dc8d062ca62c6df695d1a7afa138453cbccbe7eb0a05eafd587cb68905e": "0x00fbcd1a1318617d6df1d267e92dc329c6dda05d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b3fc16a327712c1b1cfe4ea6c22a21d136000000": "0x609aed1ba0cddb3e20270d959f1bea0923325b221f31d85579f61823beb16a3500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514ce6e23988ed01097fe19e29010cd76b72080000": "0xdcf71d4ff2e0e30717fbc3f2b8cb0074d7e950971e9b77ede358e6006a6cbc4200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890000a940f973ccf435ae9c040c253e1c043c5fb2": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c69f44ccd469078bb71e7a704c162029e45c0c9d": "0x008032b03281ca000000000000000000c104b04701000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3222d82d891be17090c06fa35c1409148eb2f4240aec973b8b06e3320256e03c": "0xb8a300b59d4f4b3bc88e66d4ddc8edb8f0703edf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cad1acfa9151d7eae13f06ea4d90a0024cf37301": "0x008eb095483490000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de8af9d2a328449e3a5ca67a98189d488ad8311b2bbd0fc2b9d02d2ca9dbffd41": "0x9bbd5f8d33f607a03690fa73f177f5a30c864542", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f1a0adc19a2cb4f04bef8a27e35039d0d90746": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970093073268cc5bbc3c4a616d9fa90cb49a34d339": "0x00d26a9b6f0d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfab2071283358794145d6ded609332c49c186df882ee3033ff446d462ae9cd17": "0x00d5f0ae658e4d4d48cce0355ab6c1eb155b7a82", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bec595767bf447fb61edddc723765f241de1dc4": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98e9fcc2871bfd309e2b7804dd699f1a9ec889d70b71788d6f19407df9dffd00": "0xd177586539eb325c70e15b369e1f8510bbd3cf44", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0ac4a702918dab29f9c5c317d250141b0afd8f3": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289836856d5d672d99ad3b450542cdacb91c394605d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767a01ab58cc873bfbd93c89f2b0897e85007b772": "0x004c2ee675141a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0afe917e54529d9151a5ec682107da993d89065": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a209cb38555635734249fe6868ad40b4af6ec88": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397051ae28151a68cceea5e234694b82c913a802fb9": "0x00ea26c1d80400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ec145d10ce8dd253112cf021c3e9b217a791a422a8ccf1312d463b52f749d04": "0x1bc24e64bd4446b8873a956a4fc1d1af2b798a2d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ffcf1f0f84cfc6fd881348ac8e74ec5856beefe": "0x004c9749858e05000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de397b4f819087f0d36a12f89b4c0eebad2dbe": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51393d0670ebd6e639c31a5d82e77ab67ac8040000": "0xc686d330dff564af88ccd1d23e92b22b69e3b8ca825fd429bc3b8ce96758394c00000000000000000000000000000000", - "0x492a52699edf49c972c21db794cfcf57ba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006bcfd60159e0019278ce871a0a34bf54d9c585": "0x00a26a5406f200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243006a2ebbbfbbd4c4d0537c033b1e1ff34202bc61": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970b3967aac9abb324d90ba784b0a4ed41d2a7c257": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775993bdf8a6c4c657f007fe09ec4fb4fcdeb3ba7": "0x00b4d919c66400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e59ec81fbd604f8de6eefc90cd6c155e0cc50e93": "0x0070b9648a5f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339720275e007f9678e47a9f3c52ea85d68c24217a65": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c33a725229490756ac021941021ea509853ff7d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008bd6775fb6055f78ac30fc24f3e55669499f5e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000a8a991cb59ddd83b76f334288e57997d25853": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c020f030a93bf6e1836931274ecaa1cc958683": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dc9c428b9828211415ee1e79fc3aabadc9db23": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009e51b0d7a06b3a8a22ddc326e1981d417a8b4a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dea07a98574e30bd9c10dcef40d228a0526d6e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289750383c5e0fcaab8fa81b168ebb0da0f280ff80e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890074a0ca635c314c5cd73ef58b1b8d64c5d7d20b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a8beea0a04b6f97bb39cff19803de453ef4cc02": "0x000e6e45853c04000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985e96a824790b12fe512397506d97038500b861d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ec7d96cdc380efe7b62a3af1e0dd8c575080000": "0x4ad1d079078b3775e1779bf8bdf34a72d89455cd0cfc224a73c7844ad80e190c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972da0721ba1e1f36de7c61bbf20ed24cb66ce9c1b": "0x005857a4df5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0fb96e2ba70b2c330c297339cb535629f887bf0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d59a70f01833d99da1ccf34de5792b10a3070000": "0x888f666828e8328a33647a47bc97574a6a5671819270cc01e66c7139a1a6911a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51200bc3e1973e504b2ced57eb4ada39e443040000": "0x12c60124aaaccb363fa69e6cc5cbc5a14a023292bda1b4bd5627ecd63a57160100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087043671cef82fae55c6e6648e0d763e65e2fa": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977194210fbd35b97b861afb593c7832c201e1d149": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac445b201cf29935e8ba9b60a2b6d5e7da040000": "0x3222d82d891be17090c06fa35c1409148eb2f4240aec973b8b06e3320256e03c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a44db7ef03c1c87530fe2aaba58a0b6b01d3c3e1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b4d63aa980b39130ed7e3ae50ec40c4d8b33935": "0x006e82e59c0794000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e28833ecc493aa66477f04c932a4d689598910": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ac20c60ff77408b1fdf3ac6e2739a14742a2779a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e925445ec68d6a9ce15567e1f769fd481ce9bae1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c05217770e1cae59d85c04f333cabfde7c7dbefb": "0x0044db3fc1ac00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51501fede49378d628c14dd0af5734f80575030000": "0xcefdc27aacad24de17bc8753a3c743debf7925f382a6d1c08601395aa679995e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da0dd8643134d45dc348125039356a3d2f9d785235a057a20476de704a088396b": "0x30caa2e774035687e738e60ed754c1787b206a81", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fba333b57f360e4aacb9d0809928fe8077d19a": "0x005cd89e184100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970033d8e0c69970ce4aa5402658135a4977e0948e": "0x0000bbf64f3000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c25af253615dd16c0cc521514164ff2b390b5cf": "0x00566411cc0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d141d0c26801c2dd28a7024e5def054866acaa52b6f3ae9a75bc97cb946358756": "0x1ccd8ff59612d4108d9bbe5f16add545efc6fdbe", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397516ca63270b7d253cd9af64cb9d92d62de81656c": "0x00f85e3055e100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339755a3df57b7aaec16a162fd5316f35bec082821cf": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fb5dfca2e526f23b90d21488082228750c17a3": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df25e936da97c044ba8806998462c4e7a67ef74d34cc9c7913c1110712915791c": "0x3e7321d013167e5d2a3b591bac90baf4c75839e5", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007a74c0c90eb301c7355654b4c91fbcf267a1c6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b14e2f2c808cfcbed4b27fc8f692c928589ded14": "0x00806a95f10875010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c80503caa4caae2640f0bf835bd5e3418d4ee1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c31fd4e2f78849537318712136cbf7317f21828": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892cf6d5701b164808a3f3886ee6258bf3208c3743": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ebb73c3f457b46f0e1b2c20406d790bebbc0a6b": "0x0016a70ef24b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a34b5de30bbf7a351c897e26b088397487bad42": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144210727819e664cf937354b3bd693d976070000": "0x86fda27b3c3ff7a15263d00c70005336bd9c68bed4de5c3a0a3aa647e837ff4800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5cfa14f1be34d343b9e57e73ed8f76e09cda02868bb39e6f62f4eea00c031f45": "0x17e7adf544b8c6ab81cfd449f4154d14a61b2b29", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967db7a2aa35266295c4e478f2f6f1a1f6663e0c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3bbb30d00284df9abc29e5601e34965df641199": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b5f693f7f2c0816e8fd985ff70cbefec71040000": "0xd24f805ca7bafb11cfdb0ace585a9d0e6edf83878dc7b42946c33c237821146400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5101b9073aad15c4f4b97d04017a373a417b070000": "0x1a4b46decc58f38eddd3fd8f8b7a0a92b18ad34305d8d6f85efcae77dafb255d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51721245d3c35c025faab60ebf14cb9192f2070000": "0x1c55d0e6a0f11181546f76dab623b362ead1b0e116aded1d03cbea230e25a24600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de244a01a44bff3d79ed4d3d94bad2b172099b654cd11350563eaea8aa827256c": "0x8e4c6d9d21ed31544cc123f5153d39fe65e9a9e1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001b93e99a0ea0e8b12f3df09af6564b460aa7e6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890050e26f4860d18a81ec8685bee8e73b18f2614a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b03d651170ceee35729aff792d522fd952cf94c0": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437c89a2437b7cc02b0bdac206ac317a8a1e7826db": "0x00602225aa3f000000000000000000003705670000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2ea1da319a6f1135144b3daa5bc1c34a92dfbcfac7f3a77233ac12009ab3f90": "0x50b7f7661c2057fd75c097eec2d06b21d586661a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397798036906b3adc3d933e8cf1a88bf25955b2ee06": "0x00dcefed772300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c589611f018087385cbd3d91b8fedc67f2c9c795": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e88b871f4d3c16b385ddff8370f6730b9b74c38b": "0x0028c0a3822300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7afff4a998fecc10c07df0f46ace2a365517324289dd106c75005d1c5cccfd21": "0xfc03c8f4f7484323459b2b4910f2f67e59c8d0dd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cabc87c953dad294fc0ed22c563bac10fa8e3ab5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973842775e7e6cba076c5f3d44f0fc444b93a1502b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b50e79852b9973d30f5b775509cd3d8dd8bd78ba": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2eba9a39dbfdd5f3cba964355d45e27319f0271023c0353d97dc6df2401b0e3d": "0xedc6c4c1ae525da2942fcf03c7b98c12391edaed", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397202a7913fc42692223e0f04d3be7a8c11c76dc5c": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d6352629387b12b8c5a32871336775d10b105b3": "0x002a378ad65b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948973b94b0273ce3d54774144b4941996bc62556": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891af41a96bbaf348c3ca582b65193ab4d9108a22b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5ce26469794d196f16f4b83422bdae40f610dd8": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b98df46a871a544265c71648cb708525fd913ed8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890036c76ec47dfc17a96b1a68893bf269e1c2875b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891330b7402f677e3adc774d13164ebbd9066ce181": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6ed4e490d482667ac41cfce61cb6595a36e7b70cc16316f305fe5c590c892756": "0x527a1247054d4dee8fe4720990dd8b9154225487", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f656b95dd71863355bd5aefb313a06590eb921a": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5178e2e5a74d8645914d05428266134dd453070000": "0x565169aafd38d441981d7560cd298045d69aa86113a0ef023ca4de562441827d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928e66a9abb74aa9fbc4dddb71775f0cdbb7ae031": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898efb665b2cfd82983e06562b355878da59878368": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928974f63340b5ca9fca58b50dcbf6cedd1c97972200": "0x00", - "0x3a636f6465": "0x0061736d0100000001fe023560037f7f7f017f60027f7f017f60027f7f0060017f0060047f7f7f7f0060057f7f7f7f7f0060037f7f7f0060017f017e60037f7e7e0060017e017f60027e7e0060017e0060017e017e6000017f60000060027f7e017e60047f7e7e7e017f60037f7e7f017f6000017e60027f7e017f60027f7f017e60037f7f7e017e60037e7e7f017e60017f017f60027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60077f7f7f7f7f7f7f017f60047f7f7f7e0060067f7f7f7f7f7f0060057f7e7e7f7f0060027f7e0060057f7f7f7e7e0060057f7f7e7e7f0060047e7e7e7e017f60047f7f7e7e0060087f7f7f7f7f7f7f7f0060067f7f7e7f7f7f0060037e7f7f017f60067f7f7e7f7e7e0060077f7e7e7e7e7e7e0060087e7e7e7e7e7e7e7e017f60067f7f7f7e7e7f0060077f7f7e7e7e7e7f0060077f7f7f7f7f7e7e0060057f7f7f7f7f017e60067f7f7f7f7e7e0060057f7e7e7e7e017f60047f7e7f7f0060057f7e7e7e7e0060027e7e017e60067f7e7e7e7e7f0060047f7e7e7f0002cf0c2803656e76066d656d6f727902001403656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000803656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000903656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000903656e76196578745f73746f726167655f7365745f76657273696f6e5f31000a03656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000b03656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31000903656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000b03656e76196578745f73746f726167655f6765745f76657273696f6e5f31000c03656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000b03656e76226578745f6f6666636861696e5f72616e646f6d5f736565645f76657273696f6e5f31000d03656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000b03656e76276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f31000e03656e76286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f31000d03656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31000d03656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31000f03656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001003656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000903656e76206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31000903656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31001103656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31000c03656e761c6578745f73746f726167655f617070656e645f76657273696f6e5f31000a03656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31000c03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000b03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f32001103656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000803656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001203656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000c03656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31000903656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31001303656e762c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f31001403656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31001403656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31001303656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31001503656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001203656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000c03656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001603656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001703656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000303c707c5071717030300001717140e0e0e06060206000e0e050001010201020202020201180307191a06060005010101171b0101010601010100040101000101000001000301010102060617020202020602060200010106010203010203060601051c050301010206030606060606060606060606060606060606060606060206060206060606060606060606020702171712020202010602060303030e020603020206021d02060203030606060206010203060606020202020202020206070606020202030e030202020602020202020203020203020602020602061e080802020202020304021d1f01020206172002020203020205020502040606060206060202060203020621060201022223240304060401060203010302020202020206250d0226270602020206020203030228030a020d0602290105032200030202060202020202020206061902020206020202021402140202030202040e030302011414031402021402061402030202140214061402060601011402050202020114140314020614140614021402140214021402020206010114020106140202141414060614020214021402020202030204030302030202010202030104022a03030202230606062a040303020306060601020e0206020202020202020202020202020202020602060602060606031d1a04020303061d02020106020602020206060606020303030202020206022b06020206030206021f02020706020d020602020202020617060502020602020202060e0202170206020606022402020703030203030202020206032c010303030303030202020102060005020201041d0203030303030303030303030303030303030303030303030302020202020202020202020402060206040202020202060202060202020602060606020402020202061c2d060403060402020602020606020402060206020202062e020606020206042f02030202020202020e020202020202020202020201060206060b020203020202010106060302020206060206020103000103050101030303030303030203030202020202030201031d1d05041d0605050402040d060203030001010303020505060303020303060303030203030303020203061a06033006020202040303030206020505050202060303020204020303030303020204040600030202040002021c2d020602030302020603020206020303020303030202020202020203030201020206170203020303020303030202020203020202020202030302030202020203020303060617010102010105010206023131310e0c323232323232083131333100000000343434340407017001fc01fc010619037f01418080c0000b7f0041e0a7cc000b7f0041e0a7cc000b07800821195f5f696e6469726563745f66756e6374696f6e5f7461626c65010009686173685f74657374002f0c436f72655f76657273696f6e00f50212436f72655f657865637574655f626c6f636b00f70215436f72655f696e697469616c697a655f626c6f636b008303114d657461646174615f6d657461646174610084031c426c6f636b4275696c6465725f6170706c795f65787472696e7369630086031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00890320426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373008c031c426c6f636b4275696c6465725f636865636b5f696e686572656e747300910318426c6f636b4275696c6465725f72616e646f6d5f736565640093032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e009503214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572009b031850617261636861696e486f73745f76616c696461746f727300a2031950617261636861696e486f73745f647574795f726f7374657200a3031f50617261636861696e486f73745f6163746976655f70617261636861696e7300a5032850617261636861696e486f73745f676c6f62616c5f76616c69646174696f6e5f7363686564756c6500a8032350617261636861696e486f73745f6c6f63616c5f76616c69646174696f6e5f6461746100a9031c50617261636861696e486f73745f70617261636861696e5f636f646500ab031750617261636861696e486f73745f6765745f686561647300ad031d50617261636861696e486f73745f7369676e696e675f636f6e7465787400af031e4772616e6470614170695f6772616e6470615f617574686f72697469657300b1032f4772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f65787472696e73696300b303274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600ba0315426162654170695f636f6e66696775726174696f6e00be031b426162654170695f63757272656e745f65706f63685f737461727400c10321417574686f72697479446973636f766572794170695f617574686f72697469657300c2032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300c3031f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797300c6031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500c903205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00cb030a5f5f646174615f656e6403010b5f5f686561705f62617365030209dd03010041010bfb013f45584fce0750515964820167b8018c0283068701b602ba028203f7056899039a03a1039606b803b903a207840697065a87063b3c3d69485b5d5e5f60617677787a7b7f7d7ef3019407f201a205eb01b007f101f001ef01ee01ec01ea01f601f501cd07ed06d503d803d70355ed039907a904cb07e704e604e504f606ec04ed04d007f304af07ae078105b407c307d406be06c806c7068205d403d603f104f004f204ef04ee048305ec03eb038405ee039404d006d106e104e004ea04e901e7018505f401bb02df028605930792078705aa07cb06ca06cc06d806ec06eb068805fc069e069d068905ba068a058b058c058d058e05f206f1068f058807f306bc07bb079005be07c507a0079f0791059607950792059707ab07a106a0069106cf06ce06bf06e404e3049305b404f506f4069405df06a704a6049505a80495049b069a0696059c06b906e203e10397058f04990698069805aa069f059e059d059c059b059a059905a00556f2039f06a406a306a206bb06bc06bd06c406ff068007f806fb06c106f906fa06fd06fe06cd06f706d306d206e906e806ea06ee068d078e078f07900789078a078b078c079e079d079c079b079a079807b307b207b107ba07b907b807b707b607b507bd07c207c107c007bf070aa5945fc5070600200010280b0600200010250b06002000102a0b0600200010260b0a00200020012002102c0b2801017f0240200210252203450d002003200020022001200120024b1b10e4071a200010260b20030b06002000102e0b1c01017f0240200010252201450d0020014100200010e6071a0b20010bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010d507200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010d507200241086a290300210420022903002103200241206a2400200420037c42c300850b05001031000b2400410041b093cc00ad4280808080f0008441b793cc00ad4280808080a00484100000000b110041a4a1cc004111419080c0001033000b4701017f230041206b22032400200341146a410036020020034180a6cc00360210200342013702042003200136021c200320003602182003200341186a360200200320021040000bdd0101047f0240024002400240200041046a2802002203200041086a28020022046b200220016b2202490d00200028020021050c010b200420026a22052004490d01200341017422062005200620054b1b22064100480d010240024002402003450d00200028020022050d010b024020060d00410121050c020b2006102722050d010c040b024020032006460d00200520032006102b21050b2005450d03200041086a28020021040b20002005360200200041046a20063602000b200520046a2001200210e4071a200041086a200420026a3602000f0b1032000b1030000b8b0301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d004100410041b880c0001036000b024002402006410f4b0d00200341046a280200450d010b200620066a220720064f0d010b4100210741012105200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041002107410121050c010b200710272205450d020b20024100360210200220053602082002200736020c2002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41c880c000200241186a10370d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b1038000b1039000b41e080c0004133200241186a419481c00041a481c000103a000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341a885c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20021040000bba06010a7f230041306b22032400200341246a2001360200200341033a002820034280808080800437030820032000360220410021042003410036021820034100360210024002400240024020022802082205450d0020022802002106200228020422072002410c6a2802002208200820074b1b2209450d01200241146a280200210a2002280210210b41012108200020062802002006280204200128020c1100000d03200541106a2102200641086a2100410121040240024003402003200241746a28020036020c20032002410c6a2d00003a00282003200241786a280200360208200241086a28020021084100210541002101024002400240200241046a2802000e03010002010b2008200a4f0d032008410374210c41002101200b200c6a220c2802044102470d01200c28020028020021080b410121010b2003200836021420032001360210200228020021080240024002402002417c6a2802000e03010002010b2008200a4f0d0420084103742101200b20016a22012802044102470d01200128020028020021080b410121050b2003200836021c200320053602180240200241706a2802002208200a4f0d00200b20084103746a2208280200200341086a20082802041101000d06200420094f0d05200041046a210120002802002105200241206a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d010c070b0b2008200a41808ac0001036000b2008200a41f089c0001036000b2008200a41f089c0001036000b2002280200210620022802042207200241146a2802002208200820074b1b220a450d002002280210210241012108200020062802002006280204200128020c1100000d02200641086a21004101210403402002280200200341086a200241046a2802001101000d022004200a4f0d01200041046a210120002802002105200241086a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d000c030b0b0240200720044d0d00410121082003280220200620044103746a22022802002002280204200328022428020c1100000d020b410021080c010b410121080b200341306a240020080b05001032000b05001030000b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c20054194f2c400360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041040000b120020002802002001200120026a103441000bc30301047f230041106b22022400200028020021000240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c050b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c040b0240024020002802082203200041046a280200460d00200028020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024002402003450d00200028020022040d010b024020050d00410121040c020b2005102722040d010c050b024020032005460d00200420032005102b21040b2004450d04200028020821030b20002004360200200041046a20053602000b200420036a20013a00002000200028020841016a3602080c040b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c020b1032000b1030000b20002002410c6a2002410c6a20016a10340b200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41c880c000200241086a10372101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c2002419082c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a882c0001040000b0b002000350200200110460b3401017f230041106b220224002002200136020c20022000360208200241b885c00036020420024180a6cc0036020020021047000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241f882c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a419083c0001040000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241cc83c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41e483c0001040000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c2002418884c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a084c0001040000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241ec84c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a418485c0001040000b0d0020002802001a037f0c000b0bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a200020004290ce0080220442f0b17f7e7ca7220641ffff037141e4006e220741017441fa85c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441fa85c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441fa85c0006a2f00003b00000b024002402005410a480d00200241096a2003417e6a22036a200541017441fa85c0006a2f00003b00000c010b200241096a2003417f6a22036a200541306a3a00000b20014180a6cc004100200241096a20036a412720036b10492103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141a893cc003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a1035410141b093cc0041072001280210200128021810cf0700000b0d0042a98089cda5ebd0e9ae7f0be80501067f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001466a2108200a41016a210a2009417f6a22090d000b0b200720026a20086b21070b412b418080c40020061b21080240024020002802084101460d004101210a2000200820012002104a0d012000280218200320042000411c6a28020028020c110000210a0c010b02402000410c6a280200220920074b0d004101210a2000200820012002104a0d012000280218200320042000411c6a28020028020c1100000f0b0240024020054108710d004100210a200920076b22092105024002400240410120002d0020220720074103461b0e0402010001020b2009410176210a200941016a41017621050c010b410021052009210a0b200a41016a210a0340200a417f6a220a450d0220002802182000280204200028021c280210110100450d000b41010f0b200028020421052000413036020420002d002021064101210a200041013a00202000200820012002104a0d014100210a200920076b22092102024002400240410120002d0020220820084103461b0e0402010001020b2009410176210a200941016a41017621020c010b410021022009210a0b200a41016a210a02400340200a417f6a220a450d0120002802182000280204200028021c280210110100450d000b41010f0b200028020421094101210a200028021820032004200028021c28020c1100000d01200241016a2108200028021c210220002802182101024003402008417f6a2208450d014101210a2001200920022802101101000d030c000b0b200020063a00202000200536020441000f0b200028020421094101210a2000200820012002104a0d00200028021820032004200028021c28020c1100000d00200541016a2108200028021c210220002802182100034002402008417f6a22080d0041000f0b4101210a200020092002280210110100450d000b0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341c487c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021040000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341fc87c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021040000b9307010c7f200041106a28020021030240024002400240200041086a28020022044101460d0020034101460d012000280218200120022000411c6a28020028020c11000021030c030b20034101470d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a2209210a024002400240410020002d0020220320034103461b0e0402010001020b20094101762107200941016a410176210a0c010b4100210a200921070b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bc80801067f230041f0006b220524002005200336020c20052002360208410121062001210702402001418102490d00410020016b2108418002210903400240200920014f0d00200020096a2c000041bf7f4c0d0041002106200921070c020b2009417f6a21074100210620094101460d01200820096a210a20072109200a4101470d000b0b200520073602142005200036021020054100410520061b36021c20054180a6cc0041c088c00020061b3602180240024002400240200220014b22090d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200520023602202002450d0220022001460d02200141016a210a03400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210920024101460d04200a2002462107200921022007450d000c040b0b20052002200320091b360228200541306a41146a4103360200200541c8006a41146a4104360200200541d4006a410436020020054203370234200541c888c0003602302005410136024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a20041040000b200541e4006a4104360200200541c8006a41146a4104360200200541d4006a4101360200200541306a41146a410436020020054204370234200541e088c0003602302005410136024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a20041040000b200221090b024020092001460d00410121070240024002400240200020096a220a2c00002202417f4a0d0041002106200020016a220721010240200a41016a2007460d00200a41026a2101200a2d0001413f7121060b2002411f71210a200241ff017141df014b0d012006200a4106747221010c020b2005200241ff0171360224200541286a21020c020b4100210020072108024020012007460d00200141016a210820012d0000413f7121000b200020064106747221010240200241ff017141f0014f0d002001200a410c747221010c010b41002102024020082007460d0020082d0000413f7121020b2001410674200a411274418080f00071722002722201418080c400460d020b2005200136022441012107200541286a21022001418001490d00410221072001418010490d0041034104200141808004491b21070b200520093602282005200720096a36022c200541306a41146a4105360200200541ec006a4104360200200541e4006a4104360200200541c8006a41146a4106360200200541d4006a4107360200200542053702342005418089c000360230200520023602582005410136024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541246a3602502005200541206a360248200541306a20041040000b41a79dc800412b20041033000b1000200120002802002000280204104d0b800101037f230041206b22022400024002402000280200200110540d002001411c6a2802002103200128021821042002411c6a410036020020024180a6cc003602182002420137020c200241e889c00036020820042003200241086a1037450d010b200241206a240041010f0b2000280204200110542101200241206a240020010bdd0502047f017e410121020240200128021841272001411c6a2802002802101101000d0041022103024002400240024002402000280200220041776a2204411e4d0d00200041dc00470d010c020b41f40021050240024020040e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021050c040b41ee0021050c030b024002400240200010520d00024002400240200041808004490d00200041808008490d0120004190fc476a4190fc0b490d02200041b5d9736a41b5db2b490d02200041e28b746a41e20b490d022000419fa8746a419f18490d02200041dee2746a410e490d02200041feffff0071419ef00a460d02200041a2b2756a4122490d02200041cb91756a410a4b0d050c020b200041d08ac000412941a28bc00041a20241c48dc00041b5021053450d010c040b200041f98fc000412641c590c00041af0141f491c00041a30310530d030b200041017267410276410773ad4280808080d0008421060c010b200041017267410276410773ad4280808080d0008421060b410321030c020b410121030c010b0b200021050b03402003210441dc002100410121024101210302400240024002400240024020040e0402010500020b02400240024002402006422088a741ff01710e06050302010006050b200642ffffffff8f608342808080803084210641f50021000c060b200642ffffffff8f608342808080802084210641fb0021000c050b20052006a72204410274411c7176410f712203413072200341d7006a2003410a491b210002402004450d002006427f7c42ffffffff0f832006428080808070838421060c050b200642ffffffff8f60834280808080108421060c040b200642ffffffff8f6083210641fd0021000c030b41002103200521000c030b20012802184127200128021c2802101101000f0b200642ffffffff8f60834280808080c0008421060b410321030b20012802182000200128021c280210110100450d000b0b20020b9d0301057f0240024002404100410f200041a49a04491b2201200141086a2201200141027441d895c0006a280200410b742000410b7422014b1b2202200241046a2202200241027441d895c0006a280200410b7420014b1b2202200241026a2202200241027441d895c0006a280200410b7420014b1b2202200241016a2202200241027441d895c0006a280200410b7420014b1b220241027441d895c0006a280200410b74220320014620032001496a20026a2201411e4b0d002001410274210241b105210302402001411e460d00200241dc95c0006a2204450d00200428020041157621030b4100210402402001417f6a220520014b0d002005411f4f0d03200541027441d895c0006a28020041ffffff007121040b02402003200241d895c0006a280200411576220141016a460d00200020046b21022003417f6a2103410021000340200141b0054b0d032000200141e496c0006a2d00006a220020024b0d012003200141016a2201470d000b0b20014101710f0b2001411f41989cc0001036000b200141b10541a89cc0001036000b2005411f41d496c0001036000bea0201067f200120024101746a210720004180fe0371410876210841002109200041ff0171210a0240024002400340200141026a210b200920012d000122026a210c024020012d000022012008460d00200120084b0d03200c2109200b2101200b2007470d010c030b0240200c2009490d00200c20044b0d02200320096a2101024003402002450d012002417f6a210220012d00002109200141016a21012009200a470d000b410021020c050b200c2109200b2101200b2007470d010c030b0b2009200c419895c000104c000b200c2004419895c000104b000b200041ffff03712109200520066a210c4101210202400340200541016a210a0240024020052d00002201411874411875220b4100480d00200a21050c010b200a200c460d02200b41ff007141087420052d0001722101200541026a21050b200920016b22094100480d02200241017321022005200c470d000c020b0b41a79dc800412b41a895c0001033000b20024101710ba50201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad2001104621000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141b88ac0004102200220036a4180016a410020036b104921000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141b88ac0004102200220036a4180016a410020036b104921000b20024180016a240020000f0b200041800141a88ac000104c000b200041800141a88ac000104c000b1c00200128021841a99dc000410b2001411c6a28020028020c1100000b1c00200128021841b49dc000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a410136020020034201370214200341a893cc003602102003410436022c2003200341286a3602202003200341086a360228200341106a20021040000b140020002802002001200028020428020c1101000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10372101200241206a240020010b15002001200028020022002802002000280204104d0bb10401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041fd9dc0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a20012002105c024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610e707450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b105c2003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b2006410441849ec000104b000b200120024100200441949ec000104e000b200120022004200241b088c000104e000b410121040b200341306a240020040bf80201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b2004200341c09ec000104c000b20002005360204200020033602000b8b0201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b200020032001105b2101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a418c9fc000200241086a10372101200241206a240020010b0d00200028020020012002105b0b0b0020002802002001105d0b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a418c9fc000200241086a10372101200241206a240020010bd30202047f027e230041c0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841eb9ec00041a49fc00020051b4102410120051b2006411c6a28020028020c1100000d0120012000280200200228020c11010021040c010b024020050d0041012104200628021841a59fc00041022006411c6a28020028020c1100000d01200028020021060b41012104200341013a0017200341346a41f09ec000360200200320062902183703082003200341176a3602102006290208210720062902102108200320062d00203a00382003200837032820032007370320200320062902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041889fc0004102200328023428020c11000021040b200020043a00082000200028020441016a360204200341c0006a240020000bd40202037f027e230041c0006b2203240041012104024020002d00040d0020002d000521040240200028020022052d00004104710d000240200441ff0171450d0041012104200528021841eb9ec00041022005411c6a28020028020c1100000d02200028020021050b20012005200228020c11010021040c010b0240200441ff01710d0041012104200528021841a89fc00041012005411c6a28020028020c1100000d01200028020021050b41012104200341013a0017200341346a41f09ec000360200200320052902183703082003200341176a3602102005290208210620052902102107200320052d00203a00382003200737032820032006370320200320052902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041889fc0004102200328023428020c11000021040b200041013a0005200020043a0004200341c0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10372100200241206a240020000bd70a020c7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a21064100210520002107410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210c0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210c0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220c418080c400470d020c040b200b41ff0171210c0b200a21070b4102210a024002400240024002400240200c41776a220b411e4d0d00200c41dc00470d010c020b41f400210e02400240200b0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b0240200c10520d0002400240200c41808004490d00200c41808008490d01200c4190fc476a4190fc0b490d02200c41b5d9736a41b5db2b490d02200c41e28b746a41e20b490d02200c419fa8746a419f18490d02200c41dee2746a410e490d02200c41feffff0071419ef00a460d02200c41a2b2756a4122490d02200c41cb91756a410a4d0d020c060b200c41d08ac000412941a28bc00041a20241c48dc00041b5021053450d010c050b200c41f98fc000412641c590c00041af0141f491c00041a30310530d040b200c41017267410276410773ad4280808080d00084210f4103210a0c010b0b200c210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110000450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a1066000b0340200a210b4101210441dc0021054101210a024002400240024002400240200b0e0402010500020b0240024002400240200f422088a741ff01710e06050302010006050b200f42ffffffff8f608342808080803084210f4103210a41f50021050c070b200f42ffffffff8f608342808080802084210f4103210a41fb0021050c060b200e200fa7220b410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200b450d00200f427f7c42ffffffff0f83200f4280808080708384210f0c050b200f42ffffffff8f608342808080801084210f0c040b200f42ffffffff8f6083210f4103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200c418001490d004102210a200c418010490d0041034104200c41808004491b210a0b200a20086a21050c040b200f42ffffffff8f60834280808080c00084210f0b4103210a0b20022802182005200228021c280210110100450d000c050b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341206a240020040f0b200020012005200141b088c000104e000b2b01017f2000280200220128020020012802042000280204280200200028020828020041ac9fc000104e000b870101027f23004180016b2202240020002d00002103410021000340200220006a41ff006a20034101714130723a00002000417f6a2100200341017641ff007122030d000b024020004180016a2203418101490d00200341800141a88ac000104c000b200141bc9fc0004102200220006a4180016a410020006b1049210020024180016a240020000b900101037f23004180016b2202240020002802002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a2100200341047622030d000b024020004180016a2203418101490d00200341800141a88ac000104c000b200141b88ac0004102200220006a4180016a410020006b1049210020024180016a240020000b1c00200128021841bcb0c00041052001411c6a28020028020c1100000bc80401067e20002001290320220242338842137e2001290300220342ffffffffffffff03837c220442137c4233882001290308220542ffffffffffffff038320034233887c22037c4233882001290310220642ffffffffffffff038320054233887c22057c4233882001290318220742ffffffffffffff038320064233887c22067c423388200242ffffffffffffff038320074233887c22077c42338842137e20047c22023c0000200020024228883c0005200020024220883c0004200020024218883c0003200020024210883c0002200020024208883c00012000200242338820037c22044225883c000b20002004421d883c000a200020044215883c000920002004420d883c0008200020044205883c00072000200442338820057c2203422a883c0012200020034222883c001120002003421a883c0010200020034212883c000f20002003420a883c000e200020034202883c000d2000200442ffffffffffffff038322044203862002423088420783843c00062000200342338820067c22024227883c001820002002421f883c0017200020024217883c001620002002420f883c0015200020024207883c00142000200342ffffffffffffff038322054206862004422d88843c000c2000200242338820077c22034224883c001e20002003421c883c001d200020034214883c001c20002003420c883c001b200020034204883c001a2000200242ffffffffffffff038322024201862005423288843c00132000200342ffffffffffffff03832203422c883c001f200020034204862002422f88843c00190bd00702017f147e230041f0016b2203240020012903202104200129031821052001290310210620012903082107200129030021080340200341f0006a200842002007420010d507200341306a20064200200442137e2209420010d507200341e0016a200542137e220a42002005420010d507200341c0006a200a42002006420010d50720034180016a200742002009420010d507200341206a200842002006420010d507200341d0016a200a42002004420010d507200341106a200742002006420010d507200341a0016a200842002005420010d507200341c0016a200942002004420010d507200341d0006a200742002005420010d50720034190016a200842002004420010d507200341b0016a200842002008420010d507200341e0006a200742002007420010d5072003200642002006420010d507200329039001220b20032903507c2206420186220c20032903007c220720032903a001220d20032903107c2208420186220e20032903c0017c22042003290320220f20032903d0017c2205420186221020032903607c22092003290370221120032903307c220a420186221220032903e0017c2213200329038001221420032903407c2215420186221620032903b0017c221742338820034180016a41086a290300200341c0006a41086a2903007c2015201454ad7c4201862015423f8884200341b0016a41086a2903007c2017201654ad7c420d86847c2215423388200341f0006a41086a290300200341306a41086a2903007c200a201154ad7c420186200a423f8884200341e0016a41086a2903007c2013201254ad7c2015201354ad7c420d86847c220a423388200341206a41086a290300200341d0016a41086a2903007c2005200f54ad7c4201862005423f8884200341e0006a41086a2903007c2009201054ad7c200a200954ad7c420d86847c2205423388200341a0016a41086a290300200341106a41086a2903007c2008200d54ad7c4201862008423f8884200341c0016a41086a2903007c2004200e54ad7c2005200454ad7c420d86847c220442338820034190016a41086a290300200341d0006a41086a2903007c2006200b54ad7c4201862006423f8884200341086a2903007c2007200c54ad7c2004200754ad7c420d868442137e201742ffffffffffffff03837c220642ffffffffffffff038321082006423388201542ffffffffffffff03837c2107200442ffffffffffffff03832104200542ffffffffffffff03832105200a42ffffffffffffff038321062002417f6a22020d000b2000200437032020002005370318200020063703102000200737030820002008370300200341f0016a24000b85d20103017f2c7e037f230041d0c1006b22032400200341a8c1006a20024101106b200341b0386a20032903a8412204420020022903082205420010d507200341c0396a20032903c841220642002002290310220742137e2208420010d507200341803a6a20032903c041220942002002290318220a42137e220b420010d507200341c03a6a20032903b841220c42002002290320220d42137e220e420010d507200341f0386a20032903b041220f420020022903002210420010d507200341a0386a201042002004420010d507200341b0396a20064200200542137e2211420010d507200341f0396a200942002008420010d507200341b03a6a200c4200200b420010d507200341f03a6a200f4200200e420010d507200341c0386a200442002007420010d507200341d0396a20064200200b420010d507200341903a6a20094200200e420010d50720034180396a200c42002010420010d507200341803b6a200f42002005420010d507200341d0386a20044200200a420010d507200341e0396a20064200200e420010d50720034190396a200942002010420010d507200341d03a6a200c42002005420010d507200341903b6a200f42002007420010d507200341e0386a20044200200d420010d507200341a0396a200642002010420010d507200341a03a6a200942002005420010d507200341e03a6a200c42002007420010d507200341a03b6a200f4200200a420010d507200320032903d039221220032903c0387c220420032903903a7c22062003290380397c220920032903803b7c220c20032903c039221320032903b0387c220f20032903803a7c221420032903c03a7c221520032903f0387c221620032903b039221720032903a0387c221820032903f0397c221920032903b03a7c221a20032903f03a7c221b423388200341b0396a41086a290300200341a0386a41086a2903007c2018201754ad7c200341f0396a41086a2903007c2019201854ad7c200341b03a6a41086a2903007c201a201954ad7c200341f03a6a41086a2903007c201b201a54ad7c420d86847c2218423388200341c0396a41086a290300200341b0386a41086a2903007c200f201354ad7c200341803a6a41086a2903007c2014200f54ad7c200341c03a6a41086a2903007c2015201454ad7c200341f0386a41086a2903007c2016201554ad7c2018201654ad7c420d86847c220f42ffffffffffffff0383221c3703c03b200320032903e039221a20032903d0387c22142003290390397c221520032903d03a7c221620032903903b7c2219200f423388200341d0396a41086a290300200341c0386a41086a2903007c2004201254ad7c200341903a6a41086a2903007c2006200454ad7c20034180396a41086a2903007c2009200654ad7c200341803b6a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c220442ffffffffffffff0383221d3703c83b200320032903a039221220032903e0387c220620032903a03a7c220920032903e03a7c220c20032903a03b7c220f2004423388200341e0396a41086a290300200341d0386a41086a2903007c2014201a54ad7c20034190396a41086a2903007c2015201454ad7c200341d03a6a41086a2903007c2016201554ad7c200341903b6a41086a2903007c2019201654ad7c2004201954ad7c420d86847c220442ffffffffffffff0383221e3703d03b20032004423388200341a0396a41086a290300200341e0386a41086a2903007c2006201254ad7c200341a03a6a41086a2903007c2009200654ad7c200341e03a6a41086a2903007c200c200954ad7c200341a03b6a41086a2903007c200f200c54ad7c2004200f54ad7c420d868442137e201b42ffffffffffffff03837c220442ffffffffffffff038322123703b03b20032004423388201842ffffffffffffff03837c22133703b83b200341a8c1006a200341b03b6a4101106b200341a0356a20032903a841220442002005420010d507200341f0356a20032903c841220642002008420010d507200341c0366a20032903c04122094200200b420010d50720034190376a20032903b841220c4200200e420010d507200341e0376a20032903b041220f42002010420010d50720034190356a200442002010420010d507200341e0356a200642002011420010d507200341b0366a200942002008420010d50720034180376a200c4200200b420010d507200341d0376a200f4200200e420010d507200341b0356a200442002007420010d50720034180366a20064200200b420010d507200341d0366a20094200200e420010d507200341a0376a200c42002010420010d507200341f0376a200f42002005420010d507200341c0356a20044200200a420010d50720034190366a20064200200e420010d507200341e0366a200942002010420010d507200341b0376a200c42002005420010d50720034180386a200f42002007420010d507200341d0356a20044200200d420010d507200341a0366a200642002010420010d507200341f0366a200942002005420010d507200341c0376a200c42002007420010d50720034190386a200f4200200a420010d507200341e0306a200329038036221a20032903b0357c220b20032903d0367c220420032903a0377c220620032903f0377c220920032903f035221920032903a0357c220e20032903c0367c220c2003290390377c220f20032903e0377c220820032903e035221b2003290390357c221420032903b0367c22152003290380377c221620032903d0377c2218423388200341e0356a41086a29030020034190356a41086a2903007c2014201b54ad7c200341b0366a41086a2903007c2015201454ad7c20034180376a41086a2903007c2016201554ad7c200341d0376a41086a2903007c2018201654ad7c420d86847c2215423388200341f0356a41086a290300200341a0356a41086a2903007c200e201954ad7c200341c0366a41086a2903007c200c200e54ad7c20034190376a41086a2903007c200f200c54ad7c200341e0376a41086a2903007c2008200f54ad7c2015200854ad7c420d86847c220c42ffffffffffffff0383220842137e221742002001290320220e420010d50720034190316a200329039036221f20032903c0357c220f20032903e0367c221420032903b0377c22162003290380387c2219200c42338820034180366a41086a290300200341b0356a41086a2903007c200b201a54ad7c200341d0366a41086a2903007c2004200b54ad7c200341a0376a41086a2903007c2006200454ad7c200341f0376a41086a2903007c2009200654ad7c200c200954ad7c420d86847c220442ffffffffffffff0383221a42137e221b42002001290318220b420010d507200341d0316a20032903a036222020032903d0357c220620032903f0367c220920032903c0377c220c2003290390387c2211200442338820034190366a41086a290300200341c0356a41086a2903007c200f201f54ad7c200341e0366a41086a2903007c2014200f54ad7c200341b0376a41086a2903007c2016201454ad7c20034180386a41086a2903007c2019201654ad7c2004201954ad7c420d86847c220f42ffffffffffffff0383221642137e2214420020012903102204420010d507200341f02f6a200f423388200341a0366a41086a290300200341d0356a41086a2903007c2006202054ad7c200341f0366a41086a2903007c2009200654ad7c200341c0376a41086a2903007c200c200954ad7c20034190386a41086a2903007c2011200c54ad7c200f201154ad7c420d868442137e201842ffffffffffffff03837c220942ffffffffffffff0383220c420020012903082206420010d507200341c0306a2009423388201542ffffffffffffff03837c220f420020012903002209420010d507200341f0306a20174200200b420010d507200341a0316a201b42002004420010d507200341e0316a201442002006420010d50720034180306a200c42002009420010d507200341d0306a200f42137e4200200e420010d507200341c0346a200842002009420010d50720034180316a201b4200200e420010d507200341c0316a20144200200b420010d507200341e02f6a200c42002004420010d507200341b0306a200f42002006420010d50720034180326a200842002006420010d507200341b0346a201a42002009420010d507200341b0316a20144200200e420010d507200341d02f6a200c4200200b420010d507200341a0306a200f42002004420010d507200341d0326a200842002004420010d507200341f0316a201a42002006420010d507200341a0346a201642002009420010d507200341c02f6a200c4200200e420010d50720034190306a200f4200200b420010d5072003200329038031221f20032903c0347c220f20032903c0317c220820032903e02f7c221420032903b0307c2215200329039031222020032903e0307c220c20032903d0317c221620032903f02f7c221820032903c0307c221920032903a031222120032903f0307c221a20032903e0317c221b2003290380307c221120032903d0307c2217423388200341a0316a41086a290300200341f0306a41086a2903007c201a202154ad7c200341e0316a41086a2903007c201b201a54ad7c20034180306a41086a2903007c2011201b54ad7c200341d0306a41086a2903007c2017201154ad7c420d86847c221a42338820034190316a41086a290300200341e0306a41086a2903007c200c202054ad7c200341d0316a41086a2903007c2016200c54ad7c200341f02f6a41086a2903007c2018201654ad7c200341c0306a41086a2903007c2019201854ad7c201a201954ad7c420d86847c221642ffffffffffffff0383220c3703e83b200320032903b03422202003290380327c221820032903b0317c221920032903d02f7c221b20032903a0307c2211201642338820034180316a41086a290300200341c0346a41086a2903007c200f201f54ad7c200341c0316a41086a2903007c2008200f54ad7c200341e02f6a41086a2903007c2014200854ad7c200341b0306a41086a2903007c2015201454ad7c2016201554ad7c420d86847c220842ffffffffffffff0383220f3703f03b200320032903f031222120032903d0327c221420032903a0347c221520032903c02f7c22162003290390307c221f2008423388200341b0346a41086a29030020034180326a41086a2903007c2018202054ad7c200341b0316a41086a2903007c2019201854ad7c200341d02f6a41086a2903007c201b201954ad7c200341a0306a41086a2903007c2011201b54ad7c2008201154ad7c420d86847c221842ffffffffffffff038322083703f83b20032018423388200341f0316a41086a290300200341d0326a41086a2903007c2014202154ad7c200341a0346a41086a2903007c2015201454ad7c200341c02f6a41086a2903007c2016201554ad7c20034190306a41086a2903007c201f201654ad7c2018201f54ad7c420d868442137e201742ffffffffffffff03837c221542ffffffffffffff038322143703d83b20032015423388201a42ffffffffffffff03837c22153703e03b200341803c6a200341d83b6a4101106b200341a8c1006a200341803c6a4101106b200341a83c6a200341a8c1006a4101106b200341f02c6a2014420020032903b03c2216420010d507200341802d6a2008420020032903b83c221942137e2217420010d507200341e02d6a200f420020032903c03c221b42137e2211420010d507200341c02e6a200c420020032903c83c221f42137e221a420010d507200341a02f6a2015420020032903a83c2218420010d507200341b02f6a201842002014420010d507200341b02c6a20084200201642137e420010d507200341902d6a200f42002017420010d507200341f02d6a200c42002011420010d507200341d02e6a20154200201a420010d507200341c02d6a201442002019420010d507200341d02d6a200842002011420010d507200341b02e6a200f4200201a420010d507200341902f6a200c42002018420010d507200341e02c6a201542002016420010d507200341902e6a20144200201b420010d507200341a02e6a20084200201a420010d507200341802f6a200f42002018420010d507200341d02c6a200c42002016420010d507200341b02d6a201542002019420010d507200341e02e6a20144200201f420010d507200341f02e6a200842002018420010d507200341c02c6a200f42002016420010d507200341a02d6a200c42002019420010d507200341802e6a20154200201b420010d507200341c02a6a20032903d02d222220032903c02d7c221620032903b02e7c221820032903902f7c221a20032903e02c7c221b20032903802d222320032903f02c7c221920032903e02d7c221120032903c02e7c221720032903a02f7c221f20032903b02c222420032903b02f7c222020032903902d7c222120032903f02d7c222520032903d02e7c2226423388200341b02c6a41086a290300200341b02f6a41086a2903007c2020202454ad7c200341902d6a41086a2903007c2021202054ad7c200341f02d6a41086a2903007c2025202154ad7c200341d02e6a41086a2903007c2026202554ad7c420d86847c2221423388200341802d6a41086a290300200341f02c6a41086a2903007c2019202354ad7c200341e02d6a41086a2903007c2011201954ad7c200341c02e6a41086a2903007c2017201154ad7c200341a02f6a41086a2903007c201f201754ad7c2021201f54ad7c420d86847c221742ffffffffffffff0383221942137e2227420020032903a03c2211420010d507200341f02a6a20032903a02e222820032903902e7c221f20032903802f7c222020032903d02c7c222520032903b02d7c22232017423388200341d02d6a41086a290300200341c02d6a41086a2903007c2016202254ad7c200341b02e6a41086a2903007c2018201654ad7c200341902f6a41086a2903007c201a201854ad7c200341e02c6a41086a2903007c201b201a54ad7c2017201b54ad7c420d86847c221642ffffffffffffff0383221a42137e2222420020032903983c2217420010d507200341b02b6a20032903f02e222920032903e02e7c221820032903c02c7c222420032903a02d7c222a20032903802e7c222b2016423388200341a02e6a41086a290300200341902e6a41086a2903007c201f202854ad7c200341802f6a41086a2903007c2020201f54ad7c200341d02c6a41086a2903007c2025202054ad7c200341b02d6a41086a2903007c2023202554ad7c2016202354ad7c420d86847c221642ffffffffffffff0383221b42137e2225420020032903903c221f420010d507200341d0296a2016423388200341f02e6a41086a290300200341e02e6a41086a2903007c2018202954ad7c200341c02c6a41086a2903007c2024201854ad7c200341a02d6a41086a2903007c202a202454ad7c200341802e6a41086a2903007c202b202a54ad7c2016202b54ad7c420d868442137e202642ffffffffffffff03837c221842ffffffffffffff03832216420020032903883c2220420010d507200341a02a6a2018423388202142ffffffffffffff03837c2218420020032903803c2221420010d507200341d02a6a202742002017420010d507200341802b6a20224200201f420010d507200341c02b6a202542002020420010d507200341e0296a201642002021420010d507200341b02a6a201842137e42002011420010d507200341d02b6a201942002021420010d507200341e02a6a202242002011420010d507200341a02b6a202542002017420010d507200341c0296a20164200201f420010d507200341902a6a201842002020420010d507200341e02b6a201942002020420010d507200341802c6a201a42002021420010d507200341902b6a202542002011420010d507200341b0296a201642002017420010d507200341802a6a20184200201f420010d507200341f02b6a20194200201f420010d507200341902c6a201a42002020420010d507200341a02c6a201b42002021420010d507200341a0296a201642002011420010d507200341f0296a201842002017420010d507200320032903e02a222720032903d02b7c221120032903a02b7c221720032903c0297c221f20032903902a7c222020032903f02a222820032903c02a7c222120032903b02b7c222520032903d0297c222620032903a02a7c222320032903802b222920032903d02a7c222220032903c02b7c222420032903e0297c222a20032903b02a7c222b423388200341802b6a41086a290300200341d02a6a41086a2903007c2022202954ad7c200341c02b6a41086a2903007c2024202254ad7c200341e0296a41086a2903007c202a202454ad7c200341b02a6a41086a2903007c202b202a54ad7c420d86847c2222423388200341f02a6a41086a290300200341c02a6a41086a2903007c2021202854ad7c200341b02b6a41086a2903007c2025202154ad7c200341d0296a41086a2903007c2026202554ad7c200341a02a6a41086a2903007c2023202654ad7c2022202354ad7c420d86847c222142ffffffffffffff03833703e03c200320032903802c222a20032903e02b7c222520032903902b7c222620032903b0297c222320032903802a7c22242021423388200341e02a6a41086a290300200341d02b6a41086a2903007c2011202754ad7c200341a02b6a41086a2903007c2017201154ad7c200341c0296a41086a2903007c201f201754ad7c200341902a6a41086a2903007c2020201f54ad7c2021202054ad7c420d86847c221142ffffffffffffff03833703e83c200320032903902c222720032903f02b7c221720032903a02c7c221f20032903a0297c222020032903f0297c22212011423388200341802c6a41086a290300200341e02b6a41086a2903007c2025202a54ad7c200341902b6a41086a2903007c2026202554ad7c200341b0296a41086a2903007c2023202654ad7c200341802a6a41086a2903007c2024202354ad7c2011202454ad7c420d86847c221142ffffffffffffff03833703f03c20032011423388200341902c6a41086a290300200341f02b6a41086a2903007c2017202754ad7c200341a02c6a41086a2903007c201f201754ad7c200341a0296a41086a2903007c2020201f54ad7c200341f0296a41086a2903007c2021202054ad7c2011202154ad7c420d868442137e202b42ffffffffffffff03837c221142ffffffffffffff03833703d03c20032011423388202242ffffffffffffff03837c3703d83c200341f83c6a200341d03c6a4101106b200341e0266a201b420020032903883d221f42137e2226420010d507200341c0276a20032903903d222142137e22254200201a420010d507200341a0286a20032903983d222342137e222042002019420010d507200341d0266a2016420020032903803d2211420010d50720034180296a2018420020032903f83c2217420010d50720034190266a201b4200201142137e420010d507200341f0266a20264200201a420010d507200341d0276a202542002019420010d50720034190296a201642002017420010d507200341b0286a201842002020420010d507200341b0276a20254200201b420010d50720034190286a20204200201a420010d507200341f0286a201742002019420010d507200341a0276a20164200201f420010d507200341c0266a201842002011420010d507200341b0266a201142002019420010d50720034180286a20204200201b420010d507200341e0286a20174200201a420010d507200341f0276a201642002021420010d50720034190276a20184200201f420010d507200341a0266a20114200201a420010d50720034180276a201f42002019420010d507200341d0286a20174200201b420010d507200341c0286a201642002023420010d507200341e0276a201842002021420010d5072003200329039028222220032903b0277c221620032903f0287c221820032903a0277c221a20032903c0267c221b20032903c027222320032903e0267c221920032903a0287c221120032903d0267c22172003290380297c221f20032903f02622242003290390267c222020032903d0277c22212003290390297c222520032903b0287c2226423388200341f0266a41086a29030020034190266a41086a2903007c2020202454ad7c200341d0276a41086a2903007c2021202054ad7c20034190296a41086a2903007c2025202154ad7c200341b0286a41086a2903007c2026202554ad7c420d86847c2221423388200341c0276a41086a290300200341e0266a41086a2903007c2019202354ad7c200341a0286a41086a2903007c2011201954ad7c200341d0266a41086a2903007c2017201154ad7c20034180296a41086a2903007c201f201754ad7c2021201f54ad7c420d86847c221142ffffffffffffff038322193703b03d2003200329038028222420032903b0267c221720032903e0287c221f20032903f0277c22252003290390277c2223201142338820034190286a41086a290300200341b0276a41086a2903007c2016202254ad7c200341f0286a41086a2903007c2018201654ad7c200341a0276a41086a2903007c201a201854ad7c200341c0266a41086a2903007c201b201a54ad7c2011201b54ad7c420d86847c221642ffffffffffffff038322203703b83d2003200329038027222220032903a0267c221820032903d0287c221a20032903c0287c221b20032903e0277c2211201642338820034180286a41086a290300200341b0266a41086a2903007c2017202454ad7c200341e0286a41086a2903007c201f201754ad7c200341f0276a41086a2903007c2025201f54ad7c20034190276a41086a2903007c2023202554ad7c2016202354ad7c420d86847c221642ffffffffffffff038322253703c03d2003201642338820034180276a41086a290300200341a0266a41086a2903007c2018202254ad7c200341d0286a41086a2903007c201a201854ad7c200341c0286a41086a2903007c201b201a54ad7c200341e0276a41086a2903007c2011201b54ad7c2016201154ad7c420d868442137e202642ffffffffffffff03837c221842ffffffffffffff038322163703a03d20032018423388202142ffffffffffffff03837c22183703a83d200341c83d6a200341a03d6a4105106b200341b0246a201942137e2223420020032903e83d221a420010d507200341f0246a202042137e2226420020032903e03d221b420010d507200341b0256a202542137e2221420020032903d83d2211420010d507200341b0236a2016420020032903d03d2217420010d50720034180246a2018420020032903c83d221f420010d50720034180256a20234200201b420010d507200341c0256a202642002011420010d50720034180266a202142002017420010d507200341c0236a20164200201f420010d507200341c0246a201842137e4200201a420010d507200341f0236a20194200201f420010d507200341a0246a20264200201a420010d507200341e0246a20214200201b420010d507200341a0236a201642002011420010d507200341f0256a201842002017420010d507200341e0256a201942002017420010d507200341e0236a20204200201f420010d50720034190246a20214200201a420010d50720034190236a20164200201b420010d507200341a0256a201842002011420010d50720034190256a201942002011420010d507200341d0256a202042002017420010d507200341d0236a20254200201f420010d50720034180236a20164200201a420010d507200341d0246a20184200201b420010d507200320032903a024222320032903f0237c221620032903e0247c221820032903a0237c221a20032903f0257c221b20032903f024222220032903b0247c221920032903b0257c221120032903b0237c22172003290380247c221f20032903c02522242003290380257c22202003290380267c222120032903c0237c222520032903c0247c2226423388200341c0256a41086a29030020034180256a41086a2903007c2020202454ad7c20034180266a41086a2903007c2021202054ad7c200341c0236a41086a2903007c2025202154ad7c200341c0246a41086a2903007c2026202554ad7c420d86847c2220423388200341f0246a41086a290300200341b0246a41086a2903007c2019202254ad7c200341b0256a41086a2903007c2011201954ad7c200341b0236a41086a2903007c2017201154ad7c20034180246a41086a2903007c201f201754ad7c2020201f54ad7c420d86847c221142ffffffffffffff038322193703803e200320032903e023222220032903e0257c22172003290390247c221f2003290390237c222120032903a0257c22252011423388200341a0246a41086a290300200341f0236a41086a2903007c2016202354ad7c200341e0246a41086a2903007c2018201654ad7c200341a0236a41086a2903007c201a201854ad7c200341f0256a41086a2903007c201b201a54ad7c2011201b54ad7c420d86847c221642ffffffffffffff0383221b3703883e200320032903d025222a2003290390257c221820032903d0237c221a2003290380237c221120032903d0247c22232016423388200341e0236a41086a290300200341e0256a41086a2903007c2017202254ad7c20034190246a41086a2903007c201f201754ad7c20034190236a41086a2903007c2021201f54ad7c200341a0256a41086a2903007c2025202154ad7c2016202554ad7c420d86847c221642ffffffffffffff038322243703903e20032016423388200341d0256a41086a29030020034190256a41086a2903007c2018202a54ad7c200341d0236a41086a2903007c201a201854ad7c20034180236a41086a2903007c2011201a54ad7c200341d0246a41086a2903007c2023201154ad7c2016202354ad7c420d868442137e202642ffffffffffffff03837c221842ffffffffffffff038322163703f03d20032018423388202042ffffffffffffff03837c22183703f83d200341983e6a200341f03d6a410a106b200341f0206a201942137e222a420020032903b83e2217420010d507200341c0216a201b42137e2211420020032903b03e221f420010d50720034190226a202442137e221a420020032903a83e2220420010d507200341e0226a2016420020032903a03e2221420010d507200341a0206a2018420020032903983e2225420010d507200341d0216a202a4200201f420010d507200341a0226a201142002020420010d507200341f0226a201a42002021420010d507200341b0206a201642002025420010d50720034180216a201842137e222c42002017420010d50720034190206a201942002025420010d507200341e0206a201142002017420010d507200341b0216a201a4200201f420010d50720034180226a201642002020420010d507200341d0226a201842002021420010d507200341c0226a201942002021420010d50720034180206a201b42002025420010d507200341d0206a201a42002017420010d507200341a0216a20164200201f420010d507200341f0216a201842002020420010d507200341e0216a201942002020420010d507200341b0226a201b42002021420010d507200341f01f6a202442002025420010d507200341c0206a201642002017420010d50720034190216a20184200201f420010d507200320032903e020222d2003290390207c221720032903b0217c221f2003290380227c222120032903d0227c222520032903c021222e20032903f0207c22202003290390227c222620032903e0227c222320032903a0207c222220032903a022222f20032903d0217c222b20032903f0227c222720032903b0207c22282003290380217c2229423388200341a0226a41086a290300200341d0216a41086a2903007c202b202f54ad7c200341f0226a41086a2903007c2027202b54ad7c200341b0206a41086a2903007c2028202754ad7c20034180216a41086a2903007c2029202854ad7c420d86847c2227423388200341c0216a41086a290300200341f0206a41086a2903007c2020202e54ad7c20034190226a41086a2903007c2026202054ad7c200341e0226a41086a2903007c2023202654ad7c200341a0206a41086a2903007c2022202354ad7c2027202254ad7c420d86847c222642ffffffffffffff038322203703d03e2003200329038020222f20032903c0227c222320032903d0207c222220032903a0217c222820032903f0217c222e2026423388200341e0206a41086a29030020034190206a41086a2903007c2017202d54ad7c200341b0216a41086a2903007c201f201754ad7c20034180226a41086a2903007c2021201f54ad7c200341d0226a41086a2903007c2025202154ad7c2026202554ad7c420d86847c221742ffffffffffffff0383222b3703d83e200320032903b022222d20032903e0217c221f20032903f01f7c222120032903c0207c22252003290390217c2226201742338820034180206a41086a290300200341c0226a41086a2903007c2023202f54ad7c200341d0206a41086a2903007c2022202354ad7c200341a0216a41086a2903007c2028202254ad7c200341f0216a41086a2903007c202e202854ad7c2017202e54ad7c420d86847c221742ffffffffffffff038322283703e03e20032017423388200341b0226a41086a290300200341e0216a41086a2903007c201f202d54ad7c200341f01f6a41086a2903007c2021201f54ad7c200341c0206a41086a2903007c2025202154ad7c20034190216a41086a2903007c2026202554ad7c2017202654ad7c420d868442137e202942ffffffffffffff03837c221f42ffffffffffffff038322173703c03e2003201f423388202742ffffffffffffff03837c221f3703c83e200341e83e6a200341c03e6a4114106b200341e01d6a202042137e222e420020032903883f2221420010d507200341b01e6a202b42137e2229420020032903803f2225420010d507200341801f6a202842137e2227420020032903f83e2226420010d507200341d01f6a2017420020032903f03e2223420010d507200341901d6a201f420020032903e83e2222420010d507200341c01e6a202e42002025420010d507200341901f6a202942002026420010d507200341e01f6a202742002023420010d507200341a01d6a201742002022420010d507200341f01d6a201f42137e42002021420010d507200341801d6a202042002022420010d507200341d01d6a202942002021420010d507200341a01e6a202742002025420010d507200341f01e6a201742002026420010d507200341c01f6a201f42002023420010d507200341b01f6a202042002023420010d507200341f01c6a202b42002022420010d507200341c01d6a202742002021420010d507200341901e6a201742002025420010d507200341e01e6a201f42002026420010d507200341d01e6a202042002026420010d507200341a01f6a202b42002023420010d507200341e01c6a202842002022420010d507200341b01d6a201742002021420010d507200341801e6a201f42002025420010d507200320032903d01d222e20032903801d7c221720032903a01e7c221f20032903f01e7c222020032903c01f7c222120032903b01e222d20032903e01d7c222520032903801f7c222620032903d01f7c222320032903901d7c222220032903901f222f20032903c01e7c222b20032903e01f7c222720032903a01d7c222820032903f01d7c2229423388200341901f6a41086a290300200341c01e6a41086a2903007c202b202f54ad7c200341e01f6a41086a2903007c2027202b54ad7c200341a01d6a41086a2903007c2028202754ad7c200341f01d6a41086a2903007c2029202854ad7c420d86847c222b423388200341b01e6a41086a290300200341e01d6a41086a2903007c2025202d54ad7c200341801f6a41086a2903007c2026202554ad7c200341d01f6a41086a2903007c2023202654ad7c200341901d6a41086a2903007c2022202354ad7c202b202254ad7c420d86847c222542ffffffffffffff03833703a03f200320032903f01c222820032903b01f7c222620032903c01d7c222320032903901e7c222220032903e01e7c22272025423388200341d01d6a41086a290300200341801d6a41086a2903007c2017202e54ad7c200341a01e6a41086a2903007c201f201754ad7c200341f01e6a41086a2903007c2020201f54ad7c200341c01f6a41086a2903007c2021202054ad7c2025202154ad7c420d86847c221742ffffffffffffff03833703a83f200320032903a01f222e20032903d01e7c221f20032903e01c7c222020032903b01d7c222120032903801e7c22252017423388200341f01c6a41086a290300200341b01f6a41086a2903007c2026202854ad7c200341c01d6a41086a2903007c2023202654ad7c200341901e6a41086a2903007c2022202354ad7c200341e01e6a41086a2903007c2027202254ad7c2017202754ad7c420d86847c221742ffffffffffffff03833703b03f20032017423388200341a01f6a41086a290300200341d01e6a41086a2903007c201f202e54ad7c200341e01c6a41086a2903007c2020201f54ad7c200341b01d6a41086a2903007c2021202054ad7c200341801e6a41086a2903007c2025202154ad7c2017202554ad7c420d868442137e202942ffffffffffffff03837c221742ffffffffffffff03833703903f20032017423388202b42ffffffffffffff03837c3703983f200341b83f6a200341903f6a410a106b200341801a6a20032903b83f221742002018420010d507200341d01a6a20032903d83f221f4200202a420010d507200341a01b6a20032903d03f222042002011420010d507200341f01b6a20032903c83f22214200201a420010d507200341c01c6a20032903c03f222542002016420010d507200341901a6a201742002016420010d507200341e01a6a201f4200202c420010d507200341b01b6a20204200202a420010d507200341801c6a202142002011420010d507200341d01c6a20254200201a420010d507200341f0196a201742002019420010d507200341c01a6a201f42002011420010d507200341901b6a20204200201a420010d507200341e01b6a202142002016420010d507200341b01c6a202542002018420010d507200341e0196a20174200201b420010d507200341b01a6a201f4200201a420010d507200341801b6a202042002016420010d507200341d01b6a202142002018420010d507200341a01c6a202542002019420010d507200341d0196a201742002024420010d507200341a01a6a201f42002016420010d507200341f01a6a202042002018420010d507200341c01b6a202142002019420010d507200341901c6a20254200201b420010d507200320032903c01a222320032903f0197c221620032903901b7c221820032903e01b7c221a20032903b01c7c221b20032903d01a222220032903801a7c221920032903a01b7c221120032903f01b7c221720032903c01c7c221f20032903e01a222420032903901a7c222020032903b01b7c222120032903801c7c222520032903d01c7c2226423388200341e01a6a41086a290300200341901a6a41086a2903007c2020202454ad7c200341b01b6a41086a2903007c2021202054ad7c200341801c6a41086a2903007c2025202154ad7c200341d01c6a41086a2903007c2026202554ad7c420d86847c2220423388200341d01a6a41086a290300200341801a6a41086a2903007c2019202254ad7c200341a01b6a41086a2903007c2011201954ad7c200341f01b6a41086a2903007c2017201154ad7c200341c01c6a41086a2903007c201f201754ad7c2020201f54ad7c420d86847c221142ffffffffffffff038322193703f03f200320032903b01a222220032903e0197c221720032903801b7c221f20032903d01b7c222120032903a01c7c22252011423388200341c01a6a41086a290300200341f0196a41086a2903007c2016202354ad7c200341901b6a41086a2903007c2018201654ad7c200341e01b6a41086a2903007c201a201854ad7c200341b01c6a41086a2903007c201b201a54ad7c2011201b54ad7c420d86847c221642ffffffffffffff0383221b3703f83f200320032903a01a222a20032903d0197c221820032903f01a7c221a20032903c01b7c221120032903901c7c22232016423388200341b01a6a41086a290300200341e0196a41086a2903007c2017202254ad7c200341801b6a41086a2903007c201f201754ad7c200341d01b6a41086a2903007c2021201f54ad7c200341a01c6a41086a2903007c2025202154ad7c2016202554ad7c420d86847c221642ffffffffffffff038322243703804020032016423388200341a01a6a41086a290300200341d0196a41086a2903007c2018202a54ad7c200341f01a6a41086a2903007c201a201854ad7c200341c01b6a41086a2903007c2011201a54ad7c200341901c6a41086a2903007c2023201154ad7c2016202354ad7c420d868442137e202642ffffffffffffff03837c221842ffffffffffffff038322163703e03f20032018423388202042ffffffffffffff03837c22183703e83f20034188c0006a200341e03f6a4132106b200341c0176a201942137e222a420020032903a8402217420010d50720034190186a201b42137e2211420020032903a040221f420010d507200341e0186a202442137e221a42002003290398402220420010d507200341b0196a201642002003290390402221420010d507200341f0166a201842002003290388402225420010d507200341a0186a202a4200201f420010d507200341f0186a201142002020420010d507200341c0196a201a42002021420010d50720034180176a201642002025420010d507200341d0176a201842137e222c42002017420010d507200341e0166a201942002025420010d507200341b0176a201142002017420010d50720034180186a201a4200201f420010d507200341d0186a201642002020420010d507200341a0196a201842002021420010d50720034190196a202142002019420010d507200341d0166a201b42002025420010d507200341a0176a201a42002017420010d507200341f0176a20164200201f420010d507200341c0186a201842002020420010d507200341b0186a201942002020420010d50720034180196a201b42002021420010d507200341c0166a202442002025420010d50720034190176a201642002017420010d507200341e0176a20184200201f420010d507200320032903b017222d20032903e0167c22172003290380187c221f20032903d0187c222120032903a0197c2225200329039018222e20032903c0177c222020032903e0187c222620032903b0197c222320032903f0167c222220032903f018222f20032903a0187c222b20032903c0197c22272003290380177c222820032903d0177c2229423388200341f0186a41086a290300200341a0186a41086a2903007c202b202f54ad7c200341c0196a41086a2903007c2027202b54ad7c20034180176a41086a2903007c2028202754ad7c200341d0176a41086a2903007c2029202854ad7c420d86847c222742338820034190186a41086a290300200341c0176a41086a2903007c2020202e54ad7c200341e0186a41086a2903007c2026202054ad7c200341b0196a41086a2903007c2023202654ad7c200341f0166a41086a2903007c2022202354ad7c2027202254ad7c420d86847c222642ffffffffffffff038322203703c040200320032903d016222f2003290390197c222320032903a0177c222220032903f0177c222820032903c0187c222e2026423388200341b0176a41086a290300200341e0166a41086a2903007c2017202d54ad7c20034180186a41086a2903007c201f201754ad7c200341d0186a41086a2903007c2021201f54ad7c200341a0196a41086a2903007c2025202154ad7c2026202554ad7c420d86847c221742ffffffffffffff0383222b3703c8402003200329038019222d20032903b0187c221f20032903c0167c22212003290390177c222520032903e0177c22262017423388200341d0166a41086a29030020034190196a41086a2903007c2023202f54ad7c200341a0176a41086a2903007c2022202354ad7c200341f0176a41086a2903007c2028202254ad7c200341c0186a41086a2903007c202e202854ad7c2017202e54ad7c420d86847c221742ffffffffffffff038322283703d0402003201742338820034180196a41086a290300200341b0186a41086a2903007c201f202d54ad7c200341c0166a41086a2903007c2021201f54ad7c20034190176a41086a2903007c2025202154ad7c200341e0176a41086a2903007c2026202554ad7c2017202654ad7c420d868442137e202942ffffffffffffff03837c221f42ffffffffffffff038322173703b0402003201f423388202742ffffffffffffff03837c221f3703b840200341d8c0006a200341b0c0006a41e400106b200341b0146a202042137e222e420020032903f8402221420010d50720034180156a202b42137e2229420020032903f0402225420010d507200341d0156a202842137e2227420020032903e8402226420010d507200341a0166a2017420020032903e0402223420010d507200341e0136a201f420020032903d8402222420010d50720034190156a202e42002025420010d507200341e0156a202942002026420010d507200341b0166a202742002023420010d507200341f0136a201742002022420010d507200341c0146a201f42137e42002021420010d507200341d0136a202042002022420010d507200341a0146a202942002021420010d507200341f0146a202742002025420010d507200341c0156a201742002026420010d50720034190166a201f42002023420010d50720034180166a202042002023420010d507200341c0136a202b42002022420010d50720034190146a202742002021420010d507200341e0146a201742002025420010d507200341b0156a201f42002026420010d507200341a0156a202042002026420010d507200341f0156a202b42002023420010d507200341b0136a202842002022420010d50720034180146a201742002021420010d507200341d0146a201f42002025420010d507200320032903a014222e20032903d0137c221720032903f0147c221f20032903c0157c22202003290390167c2221200329038015222d20032903b0147c222520032903d0157c222620032903a0167c222320032903e0137c222220032903e015222f2003290390157c222b20032903b0167c222720032903f0137c222820032903c0147c2229423388200341e0156a41086a29030020034190156a41086a2903007c202b202f54ad7c200341b0166a41086a2903007c2027202b54ad7c200341f0136a41086a2903007c2028202754ad7c200341c0146a41086a2903007c2029202854ad7c420d86847c222b42338820034180156a41086a290300200341b0146a41086a2903007c2025202d54ad7c200341d0156a41086a2903007c2026202554ad7c200341a0166a41086a2903007c2023202654ad7c200341e0136a41086a2903007c2022202354ad7c202b202254ad7c420d86847c222542ffffffffffffff038337039041200320032903c01322282003290380167c22262003290390147c222320032903e0147c222220032903b0157c22272025423388200341a0146a41086a290300200341d0136a41086a2903007c2017202e54ad7c200341f0146a41086a2903007c201f201754ad7c200341c0156a41086a2903007c2020201f54ad7c20034190166a41086a2903007c2021202054ad7c2025202154ad7c420d86847c221742ffffffffffffff038337039841200320032903f015222e20032903a0157c221f20032903b0137c22202003290380147c222120032903d0147c22252017423388200341c0136a41086a29030020034180166a41086a2903007c2026202854ad7c20034190146a41086a2903007c2023202654ad7c200341e0146a41086a2903007c2022202354ad7c200341b0156a41086a2903007c2027202254ad7c2017202754ad7c420d86847c221742ffffffffffffff03833703a04120032017423388200341f0156a41086a290300200341a0156a41086a2903007c201f202e54ad7c200341b0136a41086a2903007c2020201f54ad7c20034180146a41086a2903007c2021202054ad7c200341d0146a41086a2903007c2025202154ad7c2017202554ad7c420d868442137e202942ffffffffffffff03837c221742ffffffffffffff03833703804120032017423388202b42ffffffffffffff03837c37038841200341a8c1006a20034180c1006a4132106b200341b0106a20032903a841221742002018420010d50720034180116a20032903c841221f4200202a420010d507200341d0116a20032903c041222042002011420010d507200341a0126a20032903b84122214200201a420010d507200341f0126a20032903b041222542002016420010d507200341a0106a201742002016420010d507200341f0106a201f4200202c420010d507200341c0116a20204200202a420010d50720034190126a202142002011420010d507200341e0126a20254200201a420010d507200341c0106a201742002019420010d50720034190116a201f42002011420010d507200341e0116a20204200201a420010d507200341b0126a202142002016420010d50720034180136a202542002018420010d507200341d0106a20174200201b420010d507200341a0116a201f4200201a420010d507200341f0116a202042002016420010d507200341c0126a202142002018420010d50720034190136a202542002019420010d507200341e0106a201742002024420010d507200341b0116a201f42002016420010d50720034180126a202042002018420010d507200341d0126a202142002019420010d507200341a0136a20254200201b420010d50720034180346a200e4200201c42137e2219420010d507200341c0336a200b4200201d42137e2218420010d50720034180336a20044200201e42137e2216420010d507200341f00c6a200642002012420010d50720034180356a201342002009420010d507200341d0336a200b42002019420010d50720034190336a200442002018420010d507200341800d6a201242002009420010d507200341c0326a200642002016420010d50720034190346a201342137e4200200e420010d507200341f0346a20094200201c420010d507200341f0336a200e42002018420010d507200341b0336a200b42002016420010d507200341e00c6a201242002004420010d507200341b0326a201342002006420010d507200341e0346a20094200201d420010d507200341e0336a20164200200e420010d507200341800c6a20124200200b420010d507200341a0326a20064200201c420010d507200341f0326a201342002004420010d507200341d0346a201e42002009420010d507200341e0326a20044200201c420010d507200341a00b6a20124200200e420010d50720034190326a20064200201d420010d507200341a0336a20134200200b420010d5072003200329039011222120032903c0107c221620032903e0117c221820032903b0127c22192003290380137c221a200329038011222520032903b0107c221b20032903d0117c221220032903a0127c221320032903f0127c221120032903f010222620032903a0107c221720032903c0117c221f2003290390127c221c20032903e0127c2220423388200341f0106a41086a290300200341a0106a41086a2903007c2017202654ad7c200341c0116a41086a2903007c201f201754ad7c20034190126a41086a2903007c201c201f54ad7c200341e0126a41086a2903007c2020201c54ad7c420d86847c221742338820034180116a41086a290300200341b0106a41086a2903007c201b202554ad7c200341d0116a41086a2903007c2012201b54ad7c200341a0126a41086a2903007c2013201254ad7c200341f0126a41086a2903007c2011201354ad7c2017201154ad7c420d86847c221b42ffffffffffffff038337039041200320032903a011221c20032903d0107c221220032903f0117c221320032903c0127c22112003290390137c221f201b42338820034190116a41086a290300200341c0106a41086a2903007c2016202154ad7c200341e0116a41086a2903007c2018201654ad7c200341b0126a41086a2903007c2019201854ad7c20034180136a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c221642ffffffffffffff038337039841200320032903b011222120032903e0107c22182003290380127c221920032903d0127c221a20032903a0137c221b2016423388200341a0116a41086a290300200341d0106a41086a2903007c2012201c54ad7c200341f0116a41086a2903007c2013201254ad7c200341c0126a41086a2903007c2011201354ad7c20034190136a41086a2903007c201f201154ad7c2016201f54ad7c420d86847c221642ffffffffffffff03833703a04120032016423388200341b0116a41086a290300200341e0106a41086a2903007c2018202154ad7c20034180126a41086a2903007c2019201854ad7c200341d0126a41086a2903007c201a201954ad7c200341a0136a41086a2903007c201b201a54ad7c2016201b54ad7c420d868442137e202042ffffffffffffff03837c221642ffffffffffffff03833703804120032016423388201742ffffffffffffff03837c37038841200341a8c1006a20034180c1006a4102106b200341900e6a200c420020032903c841221342137e2219420010d507200341e00e6a200f420020032903c041221b42137e2212420010d507200341b00f6a2008420020032903b841221a42137e2211420010d50720034180106a2014420020032903b0412216420010d507200341a00d6a2015420020032903a8412218420010d507200341f00e6a200c42002012420010d507200341c00f6a200f42002011420010d50720034190106a20084200201642137e420010d507200341900d6a201442002018420010d507200341a00e6a201542002019420010d507200341b00d6a200c42002018420010d507200341800e6a200f42002019420010d507200341d00e6a200842002012420010d507200341a00f6a20144200201a420010d507200341f00f6a201542002016420010d507200341e00f6a200c42002016420010d507200341c00d6a200f42002018420010d507200341f00d6a200842002019420010d507200341c00e6a20144200201b420010d507200341900f6a20154200201a420010d507200341800f6a200c4200201a420010d507200341d00f6a200f42002016420010d507200341d00d6a200842002018420010d507200341e00d6a201442002013420010d507200341b00e6a20154200201b420010d507200341800b6a20032903e032222a20032903d0347c221520032903a00b7c22162003290390327c221820032903a0337c221b20032903e033222320032903e0347c220c20032903800c7c220f20032903a0327c220820032903f0327c221420032903f033222220032903f0347c221920032903b0337c221a20032903e00c7c221220032903b0327c221320032903c033221d2003290380347c22112003290380337c221720032903f00c7c221f2003290380357c221c200329039033222420032903d0337c222020032903800d7c222120032903c0327c22252003290390347c222642338820034190336a41086a290300200341d0336a41086a2903007c2020202454ad7c200341800d6a41086a2903007c2021202054ad7c200341c0326a41086a2903007c2025202154ad7c20034190346a41086a2903007c2026202554ad7c420d86847c2220423388200341c0336a41086a29030020034180346a41086a2903007c2011201d54ad7c20034180336a41086a2903007c2017201154ad7c200341f00c6a41086a2903007c201f201754ad7c20034180356a41086a2903007c201c201f54ad7c2020201c54ad7c420d86847c2211423388200341f0336a41086a290300200341f0346a41086a2903007c2019202254ad7c200341b0336a41086a2903007c201a201954ad7c200341e00c6a41086a2903007c2012201a54ad7c200341b0326a41086a2903007c2013201254ad7c2011201354ad7c420d86847c221a423388200341e0336a41086a290300200341e0346a41086a2903007c200c202354ad7c200341800c6a41086a2903007c200f200c54ad7c200341a0326a41086a2903007c2008200f54ad7c200341f0326a41086a2903007c2014200854ad7c201a201454ad7c420d86847c221242ffffffffffffff0383220c420020032903800e221d20032903b00d7c220820032903d00e7c221420032903a00f7c221320032903f00f7c221720032903e00e222420032903900e7c220f20032903b00f7c22192003290380107c221f20032903a00d7c221c20032903c00f222b20032903f00e7c22212003290390107c222520032903900d7c222320032903a00e7c2222423388200341c00f6a41086a290300200341f00e6a41086a2903007c2021202b54ad7c20034190106a41086a2903007c2025202154ad7c200341900d6a41086a2903007c2023202554ad7c200341a00e6a41086a2903007c2022202354ad7c420d86847c2221423388200341e00e6a41086a290300200341900e6a41086a2903007c200f202454ad7c200341b00f6a41086a2903007c2019200f54ad7c20034180106a41086a2903007c201f201954ad7c200341a00d6a41086a2903007c201c201f54ad7c2021201c54ad7c420d86847c221f42ffffffffffffff0383221942137e222b420010d507200341e00b6a201a42ffffffffffffff0383220f420020032903c00d222720032903e00f7c221a20032903f00d7c221c20032903c00e7c222520032903900f7c2223201f423388200341800e6a41086a290300200341b00d6a41086a2903007c2008201d54ad7c200341d00e6a41086a2903007c2014200854ad7c200341a00f6a41086a2903007c2013201454ad7c200341f00f6a41086a2903007c2017201354ad7c201f201754ad7c420d86847c221442ffffffffffffff0383221342137e2217420010d507200341c00c6a201142ffffffffffffff03832208420020032903d00f221e20032903800f7c221120032903d00d7c221f20032903e00d7c221d20032903b00e7c22242014423388200341c00d6a41086a290300200341e00f6a41086a2903007c201a202754ad7c200341f00d6a41086a2903007c201c201a54ad7c200341c00e6a41086a2903007c2025201c54ad7c200341900f6a41086a2903007c2023202554ad7c2014202354ad7c420d86847c221442ffffffffffffff0383221c42137e221a420010d507200341b00a6a2014423388200341d00f6a41086a290300200341800f6a41086a2903007c2011201e54ad7c200341d00d6a41086a2903007c201f201154ad7c200341e00d6a41086a2903007c201d201f54ad7c200341b00e6a41086a2903007c2024201d54ad7c2014202454ad7c420d868442137e202242ffffffffffffff03837c221142ffffffffffffff0383221442002012423388200341e0326a41086a290300200341d0346a41086a2903007c2015202a54ad7c200341a00b6a41086a2903007c2016201554ad7c20034190326a41086a2903007c2018201654ad7c200341a0336a41086a2903007c201b201854ad7c2012201b54ad7c420d868442137e202642ffffffffffffff03837c2218423388202042ffffffffffffff03837c2215420010d507200341e0096a2011423388202142ffffffffffffff03837c22164200201842ffffffffffffff03832218420010d507200341f00b6a200f4200202b420010d507200341d00c6a200842002017420010d507200341c00a6a201a42002015420010d507200341f0096a201442002018420010d507200341900b6a200c4200201642137e420010d507200341d0096a201942002018420010d507200341f00a6a200c42002017420010d507200341d00b6a200f4200201a420010d507200341b00c6a200842002014420010d507200341a00a6a201642002015420010d507200341900a6a201942002015420010d507200341c0096a201342002018420010d507200341e00a6a200c4200201a420010d507200341c00b6a200f42002014420010d507200341a00c6a200842002016420010d507200341900c6a200842002019420010d507200341800a6a201342002015420010d507200341b0096a201c42002018420010d507200341d00a6a200c42002014420010d507200341b00b6a200f42002016420010d507200320032903f00a221120032903d0097c220c20032903d00b7c220f20032903b00c7c221420032903a00a7c221520032903e00b221720032903800b7c220820032903c00c7c221620032903b00a7c221820032903e0097c221920032903d00c221f20032903f00b7c221a20032903c00a7c221b20032903f0097c221220032903900b7c2213423388200341d00c6a41086a290300200341f00b6a41086a2903007c201a201f54ad7c200341c00a6a41086a2903007c201b201a54ad7c200341f0096a41086a2903007c2012201b54ad7c200341900b6a41086a2903007c2013201254ad7c420d86847c221a423388200341e00b6a41086a290300200341800b6a41086a2903007c2008201754ad7c200341c00c6a41086a2903007c2016200854ad7c200341b00a6a41086a2903007c2018201654ad7c200341e0096a41086a2903007c2019201854ad7c201a201954ad7c420d86847c221642ffffffffffffff038322083703e840200320032903c009221f20032903900a7c221820032903e00a7c221920032903c00b7c221b20032903a00c7c22122016423388200341f00a6a41086a290300200341d0096a41086a2903007c200c201154ad7c200341d00b6a41086a2903007c200f200c54ad7c200341b00c6a41086a2903007c2014200f54ad7c200341a00a6a41086a2903007c2015201454ad7c2016201554ad7c420d86847c220c42ffffffffffffff038322143703f040200320032903800a221c20032903900c7c220f20032903b0097c221620032903d00a7c221120032903b00b7c2217200c423388200341c0096a41086a290300200341900a6a41086a2903007c2018201f54ad7c200341e00a6a41086a2903007c2019201854ad7c200341c00b6a41086a2903007c201b201954ad7c200341a00c6a41086a2903007c2012201b54ad7c200c201254ad7c420d86847c220c42ffffffffffffff038322153703f8402003200c423388200341800a6a41086a290300200341900c6a41086a2903007c200f201c54ad7c200341b0096a41086a2903007c2016200f54ad7c200341d00a6a41086a2903007c2011201654ad7c200341b00b6a41086a2903007c2017201154ad7c200c201754ad7c420d868442137e201342ffffffffffffff03837c220f42ffffffffffffff0383220c3703d8402003200f423388201a42ffffffffffffff03837c220f3703e040200341a8c1006a200341d8c0006a4101106b20034190096a20032903b041221642002010420010d507200341c0086a20032903b841221942137e22134200200d420010d507200341f0076a20032903c041221b42137e22124200200a420010d507200341a0076a20032903c841221142137e221a42002007420010d507200341b0066a20032903a841221842002005420010d507200341a0096a201642137e4200200d420010d507200341d0086a20134200200a420010d50720034180086a201242002007420010d507200341a0066a201842002010420010d507200341b0076a201a42002005420010d50720034180096a201642002005420010d507200341b0086a201942002010420010d507200341e0076a20124200200d420010d50720034190076a201a4200200a420010d507200341c0066a201842002007420010d507200341f0086a201642002007420010d507200341a0086a201942002005420010d507200341d0076a201b42002010420010d50720034180076a201a4200200d420010d507200341d0066a20184200200a420010d507200341e0086a20164200200a420010d50720034190086a201942002007420010d507200341c0076a201b42002005420010d507200341f0066a201142002010420010d507200341e0066a20184200200d420010d507200320032903b00822112003290380097c221020032903e0077c22052003290390077c220720032903c0067c221620032903c00822172003290390097c220a20032903f0077c221820032903a0077c221920032903b0067c220d20032903d008221f20032903a0097c221a2003290380087c221b20032903a0067c221220032903b0077c2213423388200341d0086a41086a290300200341a0096a41086a2903007c201a201f54ad7c20034180086a41086a2903007c201b201a54ad7c200341a0066a41086a2903007c2012201b54ad7c200341b0076a41086a2903007c2013201254ad7c420d86847c221a423388200341c0086a41086a29030020034190096a41086a2903007c200a201754ad7c200341f0076a41086a2903007c2018200a54ad7c200341a0076a41086a2903007c2019201854ad7c200341b0066a41086a2903007c200d201954ad7c201a200d54ad7c420d86847c220a42ffffffffffffff038337039041200320032903a008221220032903f0087c221820032903d0077c22192003290380077c220d20032903d0067c221b200a423388200341b0086a41086a29030020034180096a41086a2903007c2010201154ad7c200341e0076a41086a2903007c2005201054ad7c20034190076a41086a2903007c2007200554ad7c200341c0066a41086a2903007c2016200754ad7c200a201654ad7c420d86847c221042ffffffffffffff0383370398412003200329039008221120032903e0087c220520032903c0077c220720032903f0067c221620032903e0067c220a2010423388200341a0086a41086a290300200341f0086a41086a2903007c2018201254ad7c200341d0076a41086a2903007c2019201854ad7c20034180076a41086a2903007c200d201954ad7c200341d0066a41086a2903007c201b200d54ad7c2010201b54ad7c420d86847c221042ffffffffffffff03833703a0412003201042338820034190086a41086a290300200341e0086a41086a2903007c2005201154ad7c200341c0076a41086a2903007c2007200554ad7c200341f0066a41086a2903007c2016200754ad7c200341e0066a41086a2903007c200a201654ad7c2010200a54ad7c420d868442137e201342ffffffffffffff03837c221042ffffffffffffff03833703804120032010423388201a42ffffffffffffff03837c37038841200341b0c0006a20034180c1006a106a20034188c0006a2001106a4100210141012102034020034188c0006a20016a2d0000200341b0c0006a20016a2d0000732230410020306b72417f7341800171410776106d2002712102200141016a22014120470d000b2002106d2131200342f0ffffffffffff3f200b7d220542338842f0ffffffffffff3f200e7d220b42ffffffffffffff03837c22103703c841200342f0ffffffffffff3f20047d2207423388200542ffffffffffffff03837c22053703c041200342f0ffffffffffff3f20067d220e423388200742ffffffffffffff03837c22073703b8412003200e42ffffffffffffff038342d0fdffffffffff3f20097d22044233887c220e3703b0412003200b42338842137e200442ffffffffffffff03837c220b3703a841200341b0c0006a20034180c1006a106a20034188c0006a200341a8c1006a106a4100210141012102034020034188c0006a20016a2d0000200341b0c0006a20016a2d0000732230410020306b72417f7341800171410776106d2002712102200141016a22014120470d000b200341b0056a2010420042a0d69f90da80b1cb00420010d50720034180066a200b4200429db1bce4dfb435420010d507200341e0046a2005420042badf96dcb5c3bac700420010d507200341c0036a200e420042b0c1bad0f4e48603420010d50720034190046a2007420042a7ecfac2b5f7ea19420010d507200341c0056a2010420042a7a7fbf49beaf607420010d50720034190066a200b420042b0c1bad0f4e48603420010d507200341f0046a2005420042a0d69f90da80b1cb00420010d507200341d0036a200e420042a7ecfac2b5f7ea19420010d507200341a0046a2007420042badf96dcb5c3bac700420010d507200341a0056a2010420042badf96dcb5c3bac700420010d507200341f0056a200b420042e098f4e5e9ebfb03420010d507200341d0046a2005420042a7ecfac2b5f7ea19420010d507200341b0036a200e4200429db1bce4dfb435420010d50720034180046a2007420042b0c1bad0f4e48603420010d50720034190056a2010420042a7ecfac2b5f7ea19420010d507200341e0056a200b4200429e9981b4dab2e103420010d507200341c0046a2005420042b0c1bad0f4e48603420010d507200341a0036a200e420042e098f4e5e9ebfb03420010d507200341f0036a20074200429db1bce4dfb435420010d50720034180056a2010420042b0c1bad0f4e48603420010d507200341d0056a200b4200429df893c0a486ae01420010d507200341b0046a20054200429db1bce4dfb435420010d50720034190036a200e4200429e9981b4dab2e103420010d507200341e0036a2007420042e098f4e5e9ebfb03420010d507200341b0056a41086a290300211220034180066a41086a290300211320032903b00521092003290380062110200341e0046a41086a290300211120032903e0042116200341c0036a41086a290300211720032903c003210a20034190046a41086a290300211f2003290390042118200341c0056a41086a290300211c20034190066a41086a290300212020032903c00521192003290390062105200341f0046a41086a290300212120032903f004210d200341d0036a41086a290300212520032903d003211a200341a0046a41086a290300212620032903a004211b20032903a005210e20032903f005210720032903d004210b20032903b003210420032903800421062002106d2132200320062004200b2007200e7c220e7c220b7c22047c22062018200a2016201020097c22097c22167c220a7c2218201b201a200d200520197c22197c220d7c221a7c221b4233882026202520212020201c7c2019200554ad7c7c200d201954ad7c7c201a200d54ad7c7c201b201a54ad7c420d86847c2205423388201f20172011201320127c2009201054ad7c7c2016200954ad7c7c200a201654ad7c7c2018200a54ad7c2005201854ad7c420d86847c221042ffffffffffffff03833703b841200320032903e00522192003290390057c220920032903c0047c221620032903a0037c220a20032903f0037c22182010423388200341f0056a41086a290300200341a0056a41086a2903007c200e200754ad7c200341d0046a41086a2903007c200b200e54ad7c200341b0036a41086a2903007c2004200b54ad7c20034180046a41086a2903007c2006200454ad7c2010200654ad7c420d86847c221042ffffffffffffff03833703c041200320032903d00522062003290380057c220720032903b0047c220e2003290390037c220b20032903e0037c22042010423388200341e0056a41086a29030020034190056a41086a2903007c2009201954ad7c200341c0046a41086a2903007c2016200954ad7c200341a0036a41086a2903007c200a201654ad7c200341f0036a41086a2903007c2018200a54ad7c2010201854ad7c420d86847c221042ffffffffffffff03833703c84120032010423388200341d0056a41086a29030020034180056a41086a2903007c2007200654ad7c200341b0046a41086a2903007c200e200754ad7c20034190036a41086a2903007c200b200e54ad7c200341e0036a41086a2903007c2004200b54ad7c2010200454ad7c420d868442137e201b42ffffffffffffff03837c221042ffffffffffffff03833703a84120032010423388200542ffffffffffffff03837c3703b041200341b0c0006a20034180c1006a106a20034188c0006a200341a8c1006a106a4100210141012102034020034188c0006a20016a2d0000200341b0c0006a20016a2d0000732230410020306b72417f7341800171410776106d2002712102200141016a22014120470d000b200341a0026a200842137e22074200429df893c0a486ae01420010d507200341d0016a201442137e22054200429e9981b4dab2e103420010d50720034180016a201542137e2210420042e098f4e5e9ebfb03420010d507200341306a200c4200429db1bce4dfb435420010d507200341f0026a200f420042b0c1bad0f4e48603420010d507200341b0026a20074200429e9981b4dab2e103420010d507200341e0016a2005420042e098f4e5e9ebfb03420010d50720034190016a20104200429db1bce4dfb435420010d507200341c0006a200c420042b0c1bad0f4e48603420010d50720034180036a200f42137e4200429df893c0a486ae01420010d50720034190026a2008420042b0c1bad0f4e48603420010d507200341c0016a20054200429df893c0a486ae01420010d507200341f0006a20104200429e9981b4dab2e103420010d507200341206a200c420042e098f4e5e9ebfb03420010d507200341e0026a200f4200429db1bce4dfb435420010d50720034180026a20084200429db1bce4dfb435420010d507200341b0016a2014420042b0c1bad0f4e48603420010d507200341e0006a20104200429df893c0a486ae01420010d507200341106a200c4200429e9981b4dab2e103420010d507200341d0026a200f420042e098f4e5e9ebfb03420010d507200341f0016a2008420042e098f4e5e9ebfb03420010d507200341a0016a20144200429db1bce4dfb435420010d507200341d0006a2015420042b0c1bad0f4e48603420010d5072003200c4200429df893c0a486ae01420010d507200341c0026a200f4200429e9981b4dab2e103420010d507200320032903a001221c20032903f0017c221020032903507c220520032903007c220720032903c0027c220e20032903b00122202003290380027c220b20032903607c220420032903107c220620032903d0027c220920032903c00122212003290390027c221620032903707c220a20032903207c221820032903e0027c221920032903d001222520032903a0027c220d2003290380017c221a20032903307c221b20032903f0027c221220032903e001222620032903b0027c22132003290390017c221120032903407c22172003290380037c221f423388200341e0016a41086a290300200341b0026a41086a2903007c2013202654ad7c20034190016a41086a2903007c2011201354ad7c200341c0006a41086a2903007c2017201154ad7c20034180036a41086a2903007c201f201754ad7c420d86847c2213423388200341d0016a41086a290300200341a0026a41086a2903007c200d202554ad7c20034180016a41086a2903007c201a200d54ad7c200341306a41086a2903007c201b201a54ad7c200341f0026a41086a2903007c2012201b54ad7c2013201254ad7c420d86847c220d423388200341c0016a41086a29030020034190026a41086a2903007c2016202154ad7c200341f0006a41086a2903007c200a201654ad7c200341206a41086a2903007c2018200a54ad7c200341e0026a41086a2903007c2019201854ad7c200d201954ad7c420d86847c2216423388200341b0016a41086a29030020034180026a41086a2903007c200b202054ad7c200341e0006a41086a2903007c2004200b54ad7c200341106a41086a2903007c2006200454ad7c200341d0026a41086a2903007c2009200654ad7c2016200954ad7c420d86847c220b423388200341a0016a41086a290300200341f0016a41086a2903007c2010201c54ad7c200341d0006a41086a2903007c2005201054ad7c200341086a2903007c2007200554ad7c200341c0026a41086a2903007c200e200754ad7c200b200e54ad7c420d868442137e201f42ffffffffffffff03837c220742ffffffffffffff0383200c8542002002106d203272106dad42ff01837d221083200c8522053703d84020032007423388201342ffffffffffffff03837c200f85201083200f8522073703e0402003200b42ffffffffffffff0383201585201083201585220e3703f8402003201642ffffffffffffff0383201485201083201485220b3703f0402003200d42ffffffffffffff038320088520108320088522043703e84020034188c0006a200341d8c0006a106a200342f0ffffffffffff3f200e7d220642ffffffffffffff038342f0ffffffffffff3f200b7d22094233887c200e85420020032d008840410171106dad42ff01837d221083200e853703f8402003200942ffffffffffffff038342f0ffffffffffff3f20047d220e4233887c200b85201083200b853703f0402003200e42ffffffffffffff038342f0ffffffffffff3f20077d220e4233887c2004852010832004853703e8402003200e42ffffffffffffff038342d0fdffffffffff3f20057d220e4233887c2007852010832007853703e0402003200642338842137e200e42ffffffffffffff03837c2005852010832005853703d84020002032203172106d3a0000200020032903d840370308200041106a20032903e040370300200041186a20032903e840370300200041206a20032903f040370300200041286a20032903f840370300200341d0c1006a24000b1501017f230041106b220120003a000f20012d000f0bdf960104017f227e057f057e230041a02a6b22022400200241c8296a20014101106b200241b0286a20022903d0292203420042b0c1bad0f4e48603420010d507200241e0276a20022903d829220442137e22054200429df893c0a486ae01420010d50720024190276a20022903e029220642137e22074200429e9981b4dab2e103420010d507200241c0266a20022903e829220842137e2209420042e098f4e5e9ebfb03420010d507200241d0256a20022903c829220a4200429db1bce4dfb435420010d507200241c0256a200a420042b0c1bad0f4e48603420010d507200241c0286a200342137e4200429df893c0a486ae01420010d507200241f0276a20054200429e9981b4dab2e103420010d507200241a0276a2007420042e098f4e5e9ebfb03420010d507200241d0266a20094200429db1bce4dfb435420010d507200241d0276a2004420042b0c1bad0f4e48603420010d50720024180276a20074200429df893c0a486ae01420010d507200241b0266a20094200429e9981b4dab2e103420010d507200241e0256a200a420042e098f4e5e9ebfb03420010d507200241a0286a20034200429db1bce4dfb435420010d507200241f0266a2006420042b0c1bad0f4e48603420010d507200241a0266a20094200429df893c0a486ae01420010d507200241f0256a200a4200429e9981b4dab2e103420010d50720024190286a2003420042e098f4e5e9ebfb03420010d507200241c0276a20044200429db1bce4dfb435420010d50720024190266a2008420042b0c1bad0f4e48603420010d50720024180266a200a4200429df893c0a486ae01420010d50720024180286a20034200429e9981b4dab2e103420010d507200241b0276a2004420042e098f4e5e9ebfb03420010d507200241e0266a20064200429db1bce4dfb435420010d507200241e0216a200229038027220b20022903d0277c220320022903b0267c220420022903e0257c220920022903a0287c220620022903e027220c20022903b0287c220a2002290390277c220720022903c0267c220520022903d0257c220820022903c028220d20022903c0257c220e20022903f0277c220f20022903a0277c221020022903d0267c2211423388200241c0286a41086a290300200241c0256a41086a2903007c200e200d54ad7c200241f0276a41086a2903007c200f200e54ad7c200241a0276a41086a2903007c2010200f54ad7c200241d0266a41086a2903007c2011201054ad7c420d86847c220e423388200241e0276a41086a290300200241b0286a41086a2903007c200a200c54ad7c20024190276a41086a2903007c2007200a54ad7c200241c0266a41086a2903007c2005200754ad7c200241d0256a41086a2903007c2008200554ad7c200e200854ad7c420d86847c220742ffffffffffffff0383220a42137e2208420042ffed8af7ec86c802420010d50720024180216a20022903802622122002290390267c22052002290380287c220f20022903b0277c221020022903e0267c220c20022903a026221320022903f0267c220d20022903f0257c22142002290390287c221520022903c0277c2216200742338820024180276a41086a290300200241d0276a41086a2903007c2003200b54ad7c200241b0266a41086a2903007c2004200354ad7c200241e0256a41086a2903007c2009200454ad7c200241a0286a41086a2903007c2006200954ad7c2007200654ad7c420d86847c2204423388200241a0266a41086a290300200241f0266a41086a2903007c200d201354ad7c200241f0256a41086a2903007c2014200d54ad7c20024190286a41086a2903007c2015201454ad7c200241c0276a41086a2903007c2016201554ad7c2004201654ad7c420d86847c220942338820024180266a41086a29030020024190266a41086a2903007c2005201254ad7c20024180286a41086a2903007c200f200554ad7c200241b0276a41086a2903007c2010200f54ad7c200241e0266a41086a2903007c200c201054ad7c2009200c54ad7c420d868442137e201142ffffffffffffff03837c2206423388200e42ffffffffffffff03837c2203420042a3f1e59aa1b9d301420010d50720024190226a200442ffffffffffffff0383220442137e220f420042bbf9809de6b8ce03420010d507200241d0226a200942ffffffffffffff0383220942137e2207420042a9808780a6f4f902420010d507200241d01f6a200642ffffffffffffff03832206420042bdddd5d88385ea00420010d507200241e01f6a2006420042a3f1e59aa1b9d301420010d507200241c0206a200342137e2217420042ffed8af7ec86c802420010d507200241f0216a2008420042bbf9809de6b8ce03420010d507200241a0226a200f420042a9808780a6f4f902420010d507200241e0226a2007420042bdddd5d88385ea00420010d507200241c0236a200a420042a3f1e59aa1b9d301420010d50720024180226a200f420042ffed8af7ec86c802420010d507200241c0226a2007420042bbf9809de6b8ce03420010d507200241c01f6a2006420042a9808780a6f4f902420010d507200241f0206a2003420042bdddd5d88385ea00420010d507200241c0246a2004420042a3f1e59aa1b9d301420010d507200241b0226a2007420042ffed8af7ec86c802420010d507200241b01f6a2006420042bbf9809de6b8ce03420010d507200241e0206a2003420042a9808780a6f4f902420010d507200241d0236a200a420042bdddd5d88385ea00420010d507200241b0256a2009420042a3f1e59aa1b9d301420010d507200241e01e6a2006420042ffed8af7ec86c802420010d507200241d0206a2003420042bbf9809de6b8ce03420010d507200241e0236a200a420042a9808780a6f4f902420010d507200241d0246a2004420042bdddd5d88385ea00420010d507200241f0246a2009420042ccf7d9e9fbcee010420010d507200241a0206a200642017c2205420042cff887b5bcb5c603420010d50720024180246a20044200428df582a3b0868004420010d50720024180236a200a4200429aebd0c282f1c201420010d507200241c0216a2003420042f682ffa299b88202420010d507200241e0246a2009420042ddf396f0fbf7b9c300420010d507200241b0206a2005420042f682ffa299b88202420010d507200241f0236a2004420042ccf7d9e9fbcee010420010d507200241f0226a200a4200428df582a3b0868004420010d507200241d0216a20034200429aebd0c282f1c201420010d50720024180256a20094200428df582a3b0868004420010d50720024190206a2005420042848dc885f9eff000420010d50720024190246a20044200429aebd0c282f1c201420010d50720024190236a200a420042f682ffa299b88202420010d507200241b0216a2003420042cff887b5bcb5c603420010d50720024190256a20094200429aebd0c282f1c201420010d50720024180206a2005420042dfddd7d2ccf91a420010d507200241a0246a2004420042f682ffa299b88202420010d507200241a0236a200a420042cff887b5bcb5c603420010d507200241a0216a2003420042848dc885f9eff000420010d507200241a0256a2009420042f682ffa299b88202420010d507200241f01f6a2005420042bed6acd4f2a00a420010d507200241b0246a2004420042cff887b5bcb5c603420010d507200241b0236a200a420042848dc885f9eff000420010d50720024190216a2003420042dfddd7d2ccf91a420010d507200241801d6a42efffffffffffffc30020022903e01e221820022903b0257c220e20022903d0207c221020022903e0237c221120022903d0247c220c20022903b022221920022903c0247c220520022903b01f7c220d20022903e0207c221420022903d0237c2215200229038022221a20022903c0237c221620022903c0227c220b20022903c01f7c221220022903f0207c221320022903e021221b2002290380217c221c2002290390227c221d20022903d0227c221e20022903d01f7c221f20022903c020222020022903e01f7c222120022903f0217c222220022903a0227c222320022903e0227c2224423388200241c0206a41086a290300200241e01f6a41086a2903007c2021202054ad7c200241f0216a41086a2903007c2022202154ad7c200241a0226a41086a2903007c2023202254ad7c200241e0226a41086a2903007c2024202354ad7c420d86847c2221423388200241e0216a41086a29030020024180216a41086a2903007c201c201b54ad7c20024190226a41086a2903007c201d201c54ad7c200241d0226a41086a2903007c201e201d54ad7c200241d01f6a41086a2903007c201f201e54ad7c2021201f54ad7c420d86847c221c42338820024180226a41086a290300200241c0236a41086a2903007c2016201a54ad7c200241c0226a41086a2903007c200b201654ad7c200241c01f6a41086a2903007c2012200b54ad7c200241f0206a41086a2903007c2013201254ad7c201c201354ad7c420d86847c2216423388200241b0226a41086a290300200241c0246a41086a2903007c2005201954ad7c200241b01f6a41086a2903007c200d200554ad7c200241e0206a41086a2903007c2014200d54ad7c200241d0236a41086a2903007c2015201454ad7c2016201554ad7c420d86847c220d42ffffffffffffff03837d221442ffffffffffffff038342efffffffffffffc300201642ffffffffffffff03837d22154233887c220542002008428b868581d2a18c387c2216420010d507200241d01d6a201442338842137e42bcfdffffffffffc300200d423388200241e01e6a41086a290300200241b0256a41086a2903007c200e201854ad7c200241d0206a41086a2903007c2010200e54ad7c200241e0236a41086a2903007c2011201054ad7c200241d0246a41086a2903007c200c201154ad7c200d200c54ad7c420d868442137e202442ffffffffffffff03837c221042ffffffffffffff03837d221442ffffffffffffff03837c22084200200342bdddd5d88385ea007c2211420010d507200241901f6a201542ffffffffffffff038342efffffffffffffc300201c42ffffffffffffff03837d220c4233887c220e4200200f42e18392a796b7d2c4007c220d420010d507200241c01e6a200c42ffffffffffffff038342efffffffffffffc3002010423388202142ffffffffffffff03837c7d22104233887c220f4200200742eda9ced69582d9307c220c420010d507200241c01c6a201042ffffffffffffff038320144233887c22074200200642a3f1e59aa1b9d3017c2210420010d507200241901d6a2005420020174287f0dc94c6dfde0f7c420010d507200241d01c6a201042002008420010d507200241a01f6a200e42002016420010d507200241d01e6a200f4200200d420010d507200241901e6a20074200200c420010d507200241f01c6a20054200200d420010d507200241c01d6a20084200200a42a9808780a6f4f9027c220d420010d507200241801f6a200e4200200c420010d507200241b01c6a200f42002010420010d507200241801e6a200742002011420010d507200241e01c6a20054200200c420010d507200241b01d6a20084200200442bbf9809de6b8ce037c220c420010d507200241a01c6a200e42002010420010d507200241b01e6a200f42002011420010d507200241f01d6a20074200200d420010d507200241901c6a200542002010420010d507200241a01d6a20084200200942ffed8af7ec86c8027c420010d507200241f01e6a200e42002011420010d507200241a01e6a200f4200200d420010d507200241e01d6a20074200200c420010d5072002200229038025220b2002290390207c22072002290390247c22052002290390237c220820022903b0217c220e20022903f024221220022903a0207c220f2002290380247c22102002290380237c221120022903c0217c220c20022903e024221320022903b0207c220d20022903f0237c221420022903f0227c221520022903d0217c2216423388200241e0246a41086a290300200241b0206a41086a2903007c200d201354ad7c200241f0236a41086a2903007c2014200d54ad7c200241f0226a41086a2903007c2015201454ad7c200241d0216a41086a2903007c2016201554ad7c420d86847c220d423388200241f0246a41086a290300200241a0206a41086a2903007c200f201254ad7c20024180246a41086a2903007c2010200f54ad7c20024180236a41086a2903007c2011201054ad7c200241c0216a41086a2903007c200c201154ad7c200d200c54ad7c420d86847c220f42ffffffffffffff03833703e028200220022903902522152002290380207c221020022903a0247c221120022903a0237c220c20022903a0217c2214200f42338820024180256a41086a29030020024190206a41086a2903007c2007200b54ad7c20024190246a41086a2903007c2005200754ad7c20024190236a41086a2903007c2008200554ad7c200241b0216a41086a2903007c200e200854ad7c200f200e54ad7c420d86847c220742ffffffffffffff03833703e828200220022903a025220b20022903f01f7c220520022903b0247c220820022903b0237c220e2002290390217c220f200742338820024190256a41086a29030020024180206a41086a2903007c2010201554ad7c200241a0246a41086a2903007c2011201054ad7c200241a0236a41086a2903007c200c201154ad7c200241a0216a41086a2903007c2014200c54ad7c2007201454ad7c420d86847c220742ffffffffffffff03833703f02820022007423388200241a0256a41086a290300200241f01f6a41086a2903007c2005200b54ad7c200241b0246a41086a2903007c2008200554ad7c200241b0236a41086a2903007c200e200854ad7c20024190216a41086a2903007c200f200e54ad7c2007200f54ad7c420d868442137e201642ffffffffffffff03837c220742ffffffffffffff03833703d02820022007423388200d42ffffffffffffff03837c3703d828200220022903f01c220b20022903c01d7c220720022903801f7c220520022903b01c7c220820022903801e7c220e20022903801d221220022903d01d7c220f20022903901f7c221020022903c01e7c221120022903c01c7c220c20022903901d221320022903d01c7c220d20022903a01f7c221420022903d01e7c221520022903901e7c2216423388200241901d6a41086a290300200241d01c6a41086a2903007c200d201354ad7c200241a01f6a41086a2903007c2014200d54ad7c200241d01e6a41086a2903007c2015201454ad7c200241901e6a41086a2903007c2016201554ad7c420d86847c220d423388200241801d6a41086a290300200241d01d6a41086a2903007c200f201254ad7c200241901f6a41086a2903007c2010200f54ad7c200241c01e6a41086a2903007c2011201054ad7c200241c01c6a41086a2903007c200c201154ad7c200d200c54ad7c420d86847c220f42ffffffffffffff038337038829200220022903e01c221520022903b01d7c221020022903a01c7c221120022903b01e7c220c20022903f01d7c2214200f423388200241f01c6a41086a290300200241c01d6a41086a2903007c2007200b54ad7c200241801f6a41086a2903007c2005200754ad7c200241b01c6a41086a2903007c2008200554ad7c200241801e6a41086a2903007c200e200854ad7c200f200e54ad7c420d86847c220742ffffffffffffff038337039029200220022903901c220b20022903a01d7c220520022903f01e7c220820022903a01e7c220e20022903e01d7c220f2007423388200241e01c6a41086a290300200241b01d6a41086a2903007c2010201554ad7c200241a01c6a41086a2903007c2011201054ad7c200241b01e6a41086a2903007c200c201154ad7c200241f01d6a41086a2903007c2014200c54ad7c2007201454ad7c420d86847c220742ffffffffffffff03833703982920022007423388200241901c6a41086a290300200241a01d6a41086a2903007c2005200b54ad7c200241f01e6a41086a2903007c2008200554ad7c200241a01e6a41086a2903007c200e200854ad7c200241e01d6a41086a2903007c200f200e54ad7c2007200f54ad7c420d868442137e201642ffffffffffffff03837c220742ffffffffffffff03833703f82820022007423388200d42ffffffffffffff03837c37038029200241c8296a200241d0286a200241f8286a106c20022d00c8292125200241a0296a41206a2226200241f0296a2903002207370300200241a0296a41186a2227200241c8296a41206a2903002205370300200241a0296a41106a2228200241c8296a41186a2903002208370300200241a0296a41086a2229200241c8296a41106a290300220e370300200220022903d029220f3703a029200241f01b6a200f420020012903082210420010d507200241a01b6a200742002001290310220c42137e2216420010d507200241d01a6a200542002001290318221442137e2215420010d507200241801a6a200842002001290320220b42137e220d420010d50720024190196a200e420020012903002211420010d50720024180196a20114200200f420010d507200241801c6a20074200201042137e420010d507200241b01b6a200542002016420010d507200241e01a6a200842002015420010d507200241901a6a200e4200200d420010d507200241901b6a200f4200200c420010d507200241c01a6a200742002015420010d507200241f0196a20054200200d420010d507200241a0196a200842002011420010d507200241e01b6a200e42002010420010d507200241b01a6a200f42002014420010d507200241e0196a20074200200d420010d507200241b0196a200542002011420010d507200241d01b6a200842002010420010d507200241801b6a200e4200200c420010d507200241d0196a200f4200200b420010d507200241c0196a200742002011420010d507200241c01b6a200542002010420010d507200241f01a6a20084200200c420010d507200241a01a6a200e42002014420010d507200220022903c019222220022903d0197c220720022903c01b7c220520022903f01a7c220820022903a01a7c220e20022903e019222320022903b01a7c220f20022903b0197c221020022903d01b7c221120022903801b7c220c20022903c01a222420022903901b7c220d20022903f0197c221420022903a0197c221520022903e01b7c221620022903a01b221720022903f01b7c220b20022903d01a7c221220022903801a7c22132002290390197c221c20022903801c22182002290380197c221d20022903b01b7c221e20022903e01a7c221f20022903901a7c2221423388200241801c6a41086a29030020024180196a41086a2903007c201d201854ad7c200241b01b6a41086a2903007c201e201d54ad7c200241e01a6a41086a2903007c201f201e54ad7c200241901a6a41086a2903007c2021201f54ad7c420d86847c221d423388200241a01b6a41086a290300200241f01b6a41086a2903007c200b201754ad7c200241d01a6a41086a2903007c2012200b54ad7c200241801a6a41086a2903007c2013201254ad7c20024190196a41086a2903007c201c201354ad7c201d201c54ad7c420d86847c220b423388200241c01a6a41086a290300200241901b6a41086a2903007c200d202454ad7c200241f0196a41086a2903007c2014200d54ad7c200241a0196a41086a2903007c2015201454ad7c200241e01b6a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220d423388200241e0196a41086a290300200241b01a6a41086a2903007c200f202354ad7c200241b0196a41086a2903007c2010200f54ad7c200241d01b6a41086a2903007c2011201054ad7c200241801b6a41086a2903007c200c201154ad7c200d200c54ad7c420d86847c220f423388200241c0196a41086a290300200241d0196a41086a2903007c2007202254ad7c200241c01b6a41086a2903007c2005200754ad7c200241f01a6a41086a2903007c2008200554ad7c200241a01a6a41086a2903007c200e200854ad7c200f200e54ad7c420d868442137e202142ffffffffffffff03837c220742ffffffffffffff038322053703f8292002200f42ffffffffffffff038322083703982a20022007423388201d42ffffffffffffff03837c220e3703802a2002200d42ffffffffffffff0383220f3703902a2002200b42ffffffffffffff038322103703882a200241c8296a200241f8296a106a200242f0ffffffffffff3f20087d221142338842137e42d0fdffffffffff3f20057d220c42ffffffffffffff03837c200585420020022d00c829410171106d417f73410171106dad42ff01837d22078320058522053703f829200242f0ffffffffffff3f200e7d220d42ffffffffffffff0383200c4233887c200e85200783200e85220e3703802a2002201142ffffffffffffff038342f0ffffffffffff3f200f7d22114233887c20088520078320088522083703982a200242f0ffffffffffff3f20107d220c42ffffffffffffff0383200d4233887c20108520078320108522103703882a2002201142ffffffffffffff0383200c4233887c200f85200783200f85220f3703902a2025417f734101712201106d2125202920292903002211200e8542002025ad42ff01837d22078320118537030020282028290300220e201085200783200e8537030020272027290300220e200f85200783200e8537030020262026290300220e200885200783200e85370300200220022903a02922082005852007832008853703a029200241c00d6a200642ecffffffffffff038542002001106dad42ff01837d22078342ecffffffffffff038522054200200342f0ffffffffffff3f7c220e42ffffffffffffff0383200642cffdffffffffff3f7c220c4233887c2206420010d507200241b00e6a200942ffffffffffffff038520078342ffffffffffffff038522084200200a42f0ffffffffffff3f7c221042ffffffffffffff0383200e4233887c220f42137e220d420010d507200241d00e6a200442ffffffffffffff038520078342ffffffffffffff0385220e4200200442f0ffffffffffff3f7c220442ffffffffffffff038320104233887c221042137e2211420010d507200241800f6a200a42ffffffffffffff038520078342ffffffffffffff0385220a4200200942f0ffffffffffff3f7c221442ffffffffffffff038320044233887c221542137e2209420010d507200241f00c6a200342ffffffffffffff038520078342ffffffffffffff038522034200201442338842137e200c42ffffffffffffff03837c2204420010d507200241800d6a200442002005420010d507200241d00d6a20084200200642137e420010d507200241e00e6a200e4200200d420010d507200241900f6a200a42002011420010d507200241c00f6a200342002009420010d507200241800e6a20054200200f420010d507200241a00e6a200842002011420010d507200241c00e6a200e42002009420010d507200241e00c6a200a42002004420010d507200241b00d6a200342002006420010d507200241f00d6a200542002010420010d507200241900e6a200842002009420010d507200241800c6a200e42002004420010d507200241a00d6a200a42002006420010d507200241b00f6a20034200200f420010d507200241e00d6a200542002015420010d507200241a00b6a200842002004420010d507200241900d6a200e42002006420010d507200241f00e6a200a4200200f420010d507200241a00f6a200342002010420010d507200241800b6a20022903a00b221c20022903e00d7c220a20022903900d7c220420022903f00e7c220920022903a00f7c220620022903900e221d20022903f00d7c220320022903800c7c220720022903a00d7c220520022903b00f7c220820022903a00e221e20022903800e7c220e20022903c00e7c220f20022903e00c7c221020022903b00d7c221120022903b00e221f20022903c00d7c220c20022903d00e7c220d20022903800f7c221420022903f00c7c221520022903d00d222120022903800d7c221620022903e00e7c220b20022903900f7c221220022903c00f7c2213423388200241d00d6a41086a290300200241800d6a41086a2903007c2016202154ad7c200241e00e6a41086a2903007c200b201654ad7c200241900f6a41086a2903007c2012200b54ad7c200241c00f6a41086a2903007c2013201254ad7c420d86847c2216423388200241b00e6a41086a290300200241c00d6a41086a2903007c200c201f54ad7c200241d00e6a41086a2903007c200d200c54ad7c200241800f6a41086a2903007c2014200d54ad7c200241f00c6a41086a2903007c2015201454ad7c2016201554ad7c420d86847c220c423388200241a00e6a41086a290300200241800e6a41086a2903007c200e201e54ad7c200241c00e6a41086a2903007c200f200e54ad7c200241e00c6a41086a2903007c2010200f54ad7c200241b00d6a41086a2903007c2011201054ad7c200c201154ad7c420d86847c220e423388200241900e6a41086a290300200241f00d6a41086a2903007c2003201d54ad7c200241800c6a41086a2903007c2007200354ad7c200241a00d6a41086a2903007c2005200754ad7c200241b00f6a41086a2903007c2008200554ad7c200e200854ad7c420d86847c220742ffffffffffffff03832203420042f8fb9b94e0ed8617420010d507200241e0096a2007423388200241a00b6a41086a290300200241e00d6a41086a2903007c200a201c54ad7c200241900d6a41086a2903007c2004200a54ad7c200241f00e6a41086a2903007c2009200454ad7c200241a00f6a41086a2903007c2006200954ad7c2007200654ad7c420d868442137e201342ffffffffffffff03837c220642ffffffffffffff0383220a420042b5cccc99bcc0e502420010d507200241e00b6a200e42ffffffffffffff038322044200428b83d98ea38bdb0a420010d507200241c00c6a200c42ffffffffffffff03832209420042e6c09290d28a8b35420010d507200241b00a6a2006423388201642ffffffffffffff03837c2206420042a09ab5a7a4d5d602420010d507200241900b6a2003420042efabafe6f7c88835420010d507200241f0096a200a420042a09ab5a7a4d5d602420010d507200241f00b6a2004420042f8fb9b94e0ed8617420010d507200241d00c6a20094200428b83d98ea38bdb0a420010d507200241c00a6a2006420042e6c09290d28a8b35420010d507200241f00a6a20034200428b83d98ea38bdb0a420010d507200241d0096a200a420042a8f2a9fabaa79b01420010d507200241d00b6a2004420042e6c09290d28a8b35420010d507200241b00c6a2009420042a09ab5a7a4d5d602420010d507200241a00a6a2006420042b5cccc99bcc0e502420010d507200241e00a6a2003420042e6c09290d28a8b35420010d507200241c0096a200a420042a9afa6f3e694c800420010d507200241c00b6a2004420042a09ab5a7a4d5d602420010d507200241a00c6a2009420042b5cccc99bcc0e502420010d507200241900a6a2006420042a8f2a9fabaa79b01420010d507200241d00a6a2003420042a09ab5a7a4d5d602420010d507200241b0096a200a420042c2cdbdbdb3d1e502420010d507200241b00b6a2004420042b5cccc99bcc0e502420010d507200241900c6a2009420042a8f2a9fabaa79b01420010d507200241800a6a2006420042a9afa6f3e694c800420010d50720022903f8282103200229039829210f20022903902921092002290388292104200229038029210a200241c8296a200241a0296a4101106b200241e0186a20022903a02942018622064200200a420010d507200241e0166a202629030042018622074200200442137e220c420010d507200241a0176a202729030042018622054200200942137e2211420010d507200241a0166a202829030042018622084200200f42137e2210420010d507200241b0186a2029290300420186220e42002003420010d507200241f0186a200342002006420010d507200241f0166a20074200200a42137e420010d507200241b0176a20054200200c420010d507200241f0176a200842002011420010d507200241b0166a200e42002010420010d507200241d0186a200642002004420010d507200241d0166a200742002011420010d50720024190166a200542002010420010d507200241e0176a200842002003420010d507200241a0186a200e4200200a420010d507200241c0186a200642002009420010d507200241e0146a200742002010420010d50720024190176a200542002003420010d507200241d0176a20084200200a420010d50720024190186a200e42002004420010d507200241b0136a20064200200f420010d507200241c0166a200742002003420010d50720024180176a20054200200a420010d507200241c0176a200842002004420010d50720024180186a200e42002009420010d507200241a0076a20022903d00a222220022903b0097c220620022903b00b7c220720022903900c7c220520022903800a7c220820022903e00a222320022903c0097c220e20022903c00b7c221020022903a00c7c221120022903900a7c220c20022903f00a222420022903d0097c220d20022903d00b7c221420022903b00c7c221520022903a00a7c221620022903800b221720022903e0097c220b20022903e00b7c221220022903c00c7c221320022903b00a7c221c20022903900b221820022903f0097c221d20022903f00b7c221e20022903d00c7c221f20022903c00a7c2221423388200241900b6a41086a290300200241f0096a41086a2903007c201d201854ad7c200241f00b6a41086a2903007c201e201d54ad7c200241d00c6a41086a2903007c201f201e54ad7c200241c00a6a41086a2903007c2021201f54ad7c420d86847c221d423388200241800b6a41086a290300200241e0096a41086a2903007c200b201754ad7c200241e00b6a41086a2903007c2012200b54ad7c200241c00c6a41086a2903007c2013201254ad7c200241b00a6a41086a2903007c201c201354ad7c201d201c54ad7c420d86847c220b423388200241f00a6a41086a290300200241d0096a41086a2903007c200d202454ad7c200241d00b6a41086a2903007c2014200d54ad7c200241b00c6a41086a2903007c2015201454ad7c200241a00a6a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220d423388200241e00a6a41086a290300200241c0096a41086a2903007c200e202354ad7c200241c00b6a41086a2903007c2010200e54ad7c200241a00c6a41086a2903007c2011201054ad7c200241900a6a41086a2903007c200c201154ad7c200d200c54ad7c420d86847c220e42ffffffffffffff0383200f7d42f0ffffffffffff3f7c220f42ffffffffffffff0383200d42ffffffffffffff038320097d42f0ffffffffffff3f7c22104233887c2209420042a88c8b81f5cabeca00420010d507200241d0066a200f42338842137e200e423388200241d00a6a41086a290300200241b0096a41086a2903007c2006202254ad7c200241b00b6a41086a2903007c2007200654ad7c200241900c6a41086a2903007c2005200754ad7c200241800a6a41086a2903007c2008200554ad7c200e200854ad7c420d868442137e202142ffffffffffffff03837c220642ffffffffffffff038320037d42d0fdffffffffff3f7c220742ffffffffffffff03837c2203420042d2dfded4f0ede000420010d50720024190096a201042ffffffffffffff0383200b42ffffffffffffff038320047d42f0ffffffffffff3f7c22054233887c2204420042c8ee859b8cd29829420010d507200241c0086a200542ffffffffffffff03832006423388201d42ffffffffffffff03837c200a7d42f0ffffffffffff3f7c22064233887c220a420042dcd78e98b19df320420010d507200241f0076a200642ffffffffffffff038320074233887c22064200429bdceccb84d4fd03420010d507200241b0076a2009420042969988cadca7b00e420010d507200241e0066a20034200429bdceccb84d4fd03420010d507200241a0096a2004420042a88c8b81f5cabeca00420010d507200241d0086a200a420042c8ee859b8cd29829420010d50720024180086a2006420042dcd78e98b19df320420010d50720024190076a2009420042c8ee859b8cd29829420010d507200241c0066a2003420042b8ecf9b5ffe8f503420010d50720024180096a2004420042dcd78e98b19df320420010d507200241b0086a200a4200429bdceccb84d4fd03420010d507200241e0076a2006420042d2dfded4f0ede000420010d50720024180076a2009420042dcd78e98b19df320420010d50720024190056a200342004298c9f9f3f9c09502420010d507200241f0086a20044200429bdceccb84d4fd03420010d507200241a0086a200a420042d2dfded4f0ede000420010d507200241d0076a2006420042b8ecf9b5ffe8f503420010d507200241f0066a20094200429bdceccb84d4fd03420010d507200241e0036a2003420042b4f0cadfb1d2dd01420010d507200241e0086a2004420042d2dfded4f0ede000420010d50720024190086a200a420042b8ecf9b5ffe8f503420010d507200241c0076a200642004298c9f9f3f9c09502420010d507200241c0126a20022903c016221c20022903b0137c22042002290380177c220920022903c0177c22062002290380187c220720022903e014221d20022903c0187c22032002290390177c220a20022903d0177c22052002290390187c220820022903d016221e20022903d0187c220e2002290390167c220f20022903e0177c221020022903a0187c221120022903e016221f20022903e0187c220c20022903a0177c220d20022903a0167c221420022903b0187c221520022903f016222120022903f0187c221620022903b0177c220b20022903f0177c221220022903b0167c2213423388200241f0166a41086a290300200241f0186a41086a2903007c2016202154ad7c200241b0176a41086a2903007c200b201654ad7c200241f0176a41086a2903007c2012200b54ad7c200241b0166a41086a2903007c2013201254ad7c420d86847c2212423388200241e0166a41086a290300200241e0186a41086a2903007c200c201f54ad7c200241a0176a41086a2903007c200d200c54ad7c200241a0166a41086a2903007c2014200d54ad7c200241b0186a41086a2903007c2015201454ad7c2012201554ad7c420d86847c220c423388200241d0166a41086a290300200241d0186a41086a2903007c200e201e54ad7c20024190166a41086a2903007c200f200e54ad7c200241e0176a41086a2903007c2010200f54ad7c200241a0186a41086a2903007c2011201054ad7c200c201154ad7c420d86847c220e423388200241e0146a41086a290300200241c0186a41086a2903007c2003201d54ad7c20024190176a41086a2903007c200a200354ad7c200241d0176a41086a2903007c2005200a54ad7c20024190186a41086a2903007c2008200554ad7c200e200854ad7c420d86847c220542ffffffffffffff03832203420042f0ffffffffffff3f20022903d82922107d220842ffffffffffffff038342f0ffffffffffff3f20022903d029220a7d22114233887c220f42137e2215420010d50720024180106a2005423388200241c0166a41086a290300200241b0136a41086a2903007c2004201c54ad7c20024180176a41086a2903007c2009200454ad7c200241c0176a41086a2903007c2006200954ad7c20024180186a41086a2903007c2007200654ad7c2005200754ad7c420d868442137e201342ffffffffffffff03837c220542ffffffffffffff038322044200201142ffffffffffffff038342d1fdffffffffff3f20022903c82922137d221c4233887c2209420010d507200241f0136a200e42ffffffffffffff03832206420042f0ffffffffffff3f20022903e02922147d220d42ffffffffffffff038320084233887c221142137e220e420010d507200241a0156a200c42ffffffffffffff03832207420042f0ffffffffffff3f20022903e82922167d220842ffffffffffffff0383200d4233887c220d42137e220b420010d507200241a0116a2005423388201242ffffffffffffff03837c22054200200842338842137e201c42ffffffffffffff03837c2208420010d507200241d0126a20034200200942137e420010d50720024190106a200842002004420010d50720024180146a200642002015420010d507200241b0156a20074200200e420010d507200241b0116a20054200200b420010d507200241b0126a20034200200e420010d507200241f00f6a20044200200f420010d507200241e0136a20064200200b420010d50720024190156a200742002008420010d50720024190116a200542002009420010d50720024190136a20034200201042137e2212420010d507200241d0106a20044200200a420010d507200241c0146a20064200201442137e2215420010d507200241f0156a20074200201642137e220c420010d507200241f0116a20054200201342017c220e420010d507200241a0136a20034200200a42137e2220420010d507200241e0106a200e42002004420010d507200241d0146a200642002012420010d50720024180166a200742002015420010d50720024180126a20054200200c420010d50720024180136a200342002015420010d507200241c0106a200442002010420010d507200241b0146a20064200200c420010d507200241e0156a20074200200e420010d507200241e0116a20054200200a420010d507200241a0126a20034200200b420010d507200241e00f6a200442002011420010d507200241d0136a200642002008420010d50720024180156a200742002009420010d50720024180116a20054200200f420010d507200241f0126a20034200200c420010d507200241b0106a200442002014420010d507200241a0146a20064200200e420010d507200241d0156a20074200200a420010d507200241d0116a200542002010420010d50720024190126a200342002008420010d507200241d00f6a20044200200d420010d507200241c0136a200642002009420010d507200241f0146a20074200200f420010d507200241f0106a200542002011420010d507200241e0126a20034200200e420010d507200241a0106a200442002016420010d50720024190146a20064200200a420010d507200241c0156a200742002010420010d507200241c0116a200542002014420010d507200241a0036a20022903f006222a20022903e0037c220320022903e0087c22042002290390087c220620022903c0077c2207200229038007222b2002290390057c220520022903f0087c220b20022903a0087c221320022903d0077c221c200229039007222c20022903c0067c221d2002290380097c221e20022903b0087c221f20022903e0077c222120022903a007222d20022903d0067c22222002290390097c222320022903c0087c222420022903f0077c221720022903b007222e20022903e0067c221820022903a0097c221920022903d0087c221a2002290380087c221b423388200241b0076a41086a290300200241e0066a41086a2903007c2018202e54ad7c200241a0096a41086a2903007c2019201854ad7c200241d0086a41086a2903007c201a201954ad7c20024180086a41086a2903007c201b201a54ad7c420d86847c2218423388200241a0076a41086a290300200241d0066a41086a2903007c2022202d54ad7c20024190096a41086a2903007c2023202254ad7c200241c0086a41086a2903007c2024202354ad7c200241f0076a41086a2903007c2017202454ad7c2018201754ad7c420d86847c222242338820024190076a41086a290300200241c0066a41086a2903007c201d202c54ad7c20024180096a41086a2903007c201e201d54ad7c200241b0086a41086a2903007c201f201e54ad7c200241e0076a41086a2903007c2021201f54ad7c2022202154ad7c420d86847c221d42338820024180076a41086a29030020024190056a41086a2903007c2005202b54ad7c200241f0086a41086a2903007c200b200554ad7c200241a0086a41086a2903007c2013200b54ad7c200241d0076a41086a2903007c201c201354ad7c201d201c54ad7c420d86847c220b42ffffffffffffff0383220542002012420010d507200241f0006a200b423388200241f0066a41086a290300200241e0036a41086a2903007c2003202a54ad7c200241e0086a41086a2903007c2004200354ad7c20024190086a41086a2903007c2006200454ad7c200241c0076a41086a2903007c2007200654ad7c200b200754ad7c420d868442137e201b42ffffffffffffff03837c220442ffffffffffffff038322034200200a420010d507200241d0046a201d42ffffffffffffff0383220742002015420010d50720024180066a202242ffffffffffffff038322064200200c420010d50720024190026a2004423388201842ffffffffffffff03837c22044200200e420010d50720024190036a200542002020420010d50720024180016a200e42002003420010d507200241c0046a200742002012420010d507200241f0056a200642002015420010d507200241a0026a20044200200c420010d507200241b0036a200542002015420010d507200241e0006a200342002010420010d507200241e0046a20074200200c420010d50720024190066a20064200200e420010d50720024180026a20044200200a420010d507200241a0056a200d4200200642137e2212420010d507200241e0026a200842002004420010d50720024180046a20114200200742137e220b420010d507200241206a200f4200200542137e2215420010d507200241c0016a200942002003420010d507200241d0016a200342002008420010d507200241f0026a200d4200200442137e420010d507200241b0056a201142002012420010d50720024190046a200f4200200b420010d507200241306a200942002015420010d507200241c0056a200842002006420010d507200241f0036a200d4200200b420010d507200241106a201142002015420010d507200241b0016a200f42002003420010d507200241d0026a200942002004420010d507200241c0036a20054200200c420010d507200241d0006a200342002014420010d507200241f0046a20074200200e420010d507200241a0066a20064200200a420010d507200241f0016a200442002010420010d507200241a0046a200842002007420010d5072002200d42002015420010d507200241a0016a201142002003420010d507200241c0026a200f42002004420010d507200241d0056a200942002006420010d507200241d0036a20054200200e420010d507200241c0006a200342002016420010d50720024180056a20074200200a420010d507200241b0066a200642002010420010d507200241e0016a200442002014420010d50720024180036a200842002005420010d50720024190016a200d42002003420010d507200241b0026a201142002004420010d507200241e0056a200f42002006420010d507200241b0046a200942002007420010d50720004188016a20022903b012221320022903f00f7c220320022903e0137c220a2002290390157c22042002290390117c220920022903c012220c2002290380107c220620022903f0137c220720022903a0157c220520022903a0117c220820022903d012220d2002290390107c220e2002290380147c220f20022903b0157c221020022903b0117c2211423388200241d0126a41086a29030020024190106a41086a2903007c200e200d54ad7c20024180146a41086a2903007c200f200e54ad7c200241b0156a41086a2903007c2010200f54ad7c200241b0116a41086a2903007c2011201054ad7c420d86847c220e423388200241c0126a41086a29030020024180106a41086a2903007c2006200c54ad7c200241f0136a41086a2903007c2007200654ad7c200241a0156a41086a2903007c2005200754ad7c200241a0116a41086a2903007c2008200554ad7c200e200854ad7c420d86847c220642ffffffffffffff03833703002000200229038013221c20022903c0107c220720022903b0147c220520022903e0157c220820022903e0117c220f200229039013221d20022903d0107c221020022903c0147c220c20022903f0157c220d20022903f0117c221420022903a013221e20022903e0107c221520022903d0147c22162002290380167c220b2002290380127c2212423388200241a0136a41086a290300200241e0106a41086a2903007c2015201e54ad7c200241d0146a41086a2903007c2016201554ad7c20024180166a41086a2903007c200b201654ad7c20024180126a41086a2903007c2012200b54ad7c420d86847c221542338820024190136a41086a290300200241d0106a41086a2903007c2010201d54ad7c200241c0146a41086a2903007c200c201054ad7c200241f0156a41086a2903007c200d200c54ad7c200241f0116a41086a2903007c2014200d54ad7c2015201454ad7c420d86847c221042ffffffffffffff038337031020004190016a20022903a012220b20022903e00f7c220c20022903d0137c220d2002290380157c22142002290380117c22162006423388200241b0126a41086a290300200241f00f6a41086a2903007c2003201354ad7c200241e0136a41086a2903007c200a200354ad7c20024190156a41086a2903007c2004200a54ad7c20024190116a41086a2903007c2009200454ad7c2006200954ad7c420d86847c220342ffffffffffffff0383370300200020022903f012221320022903b0107c220a20022903a0147c220420022903d0157c220920022903d0117c2206201042338820024180136a41086a290300200241c0106a41086a2903007c2007201c54ad7c200241b0146a41086a2903007c2005200754ad7c200241e0156a41086a2903007c2008200554ad7c200241e0116a41086a2903007c200f200854ad7c2010200f54ad7c420d86847c220742ffffffffffffff038337031820004198016a200229039012221c20022903d00f7c220520022903c0137c220820022903f0147c220f20022903f0107c22102003423388200241a0126a41086a290300200241e00f6a41086a2903007c200c200b54ad7c200241d0136a41086a2903007c200d200c54ad7c20024180156a41086a2903007c2014200d54ad7c20024180116a41086a2903007c2016201454ad7c2003201654ad7c420d86847c220342ffffffffffffff0383370300200020022903e012220b20022903a0107c220c2002290390147c220d20022903c0157c221420022903c0117c22162007423388200241f0126a41086a290300200241b0106a41086a2903007c200a201354ad7c200241a0146a41086a2903007c2004200a54ad7c200241d0156a41086a2903007c2009200454ad7c200241d0116a41086a2903007c2006200954ad7c2007200654ad7c420d86847c220a42ffffffffffffff03833703202000200342338820024190126a41086a290300200241d00f6a41086a2903007c2005201c54ad7c200241c0136a41086a2903007c2008200554ad7c200241f0146a41086a2903007c200f200854ad7c200241f0106a41086a2903007c2010200f54ad7c2003201054ad7c420d868442137e201142ffffffffffffff03837c220342ffffffffffffff03833703782000200a423388200241e0126a41086a290300200241a0106a41086a2903007c200c200b54ad7c20024190146a41086a2903007c200d200c54ad7c200241c0156a41086a2903007c2014200d54ad7c200241c0116a41086a2903007c2016201454ad7c200a201654ad7c420d868442137e201242ffffffffffffff03837c220a42ffffffffffffff038337030020004180016a2003423388200e42ffffffffffffff03837c3703002000200a423388201542ffffffffffffff03837c370308200041e0006a20022903b003221320022903607c220320022903e0047c220a2002290390067c22042002290380027c220920022903a003220c20022903707c220620022903d0047c22072002290380067c22052002290390027c2208200229039003220d2002290380017c220e20022903c0047c220f20022903f0057c221020022903a0027c221142338820024190036a41086a29030020024180016a41086a2903007c200e200d54ad7c200241c0046a41086a2903007c200f200e54ad7c200241f0056a41086a2903007c2010200f54ad7c200241a0026a41086a2903007c2011201054ad7c420d86847c220e423388200241a0036a41086a290300200241f0006a41086a2903007c2006200c54ad7c200241d0046a41086a2903007c2007200654ad7c20024180066a41086a2903007c2005200754ad7c20024190026a41086a2903007c2008200554ad7c200e200854ad7c420d86847c220642ffffffffffffff0383370300200041386a20022903f003221c20022903c0057c220720022903107c220520022903b0017c220820022903d0027c220f20022903a005221d20022903e0027c22102002290380047c220c20022903207c220d20022903c0017c221420022903f002221e20022903d0017c221520022903b0057c22162002290390047c220b20022903307c2212423388200241f0026a41086a290300200241d0016a41086a2903007c2015201e54ad7c200241b0056a41086a2903007c2016201554ad7c20024190046a41086a2903007c200b201654ad7c200241306a41086a2903007c2012200b54ad7c420d86847c2215423388200241a0056a41086a290300200241e0026a41086a2903007c2010201d54ad7c20024180046a41086a2903007c200c201054ad7c200241206a41086a2903007c200d200c54ad7c200241c0016a41086a2903007c2014200d54ad7c2015201454ad7c420d86847c221042ffffffffffffff0383370300200041e8006a20022903c003220b20022903507c220c20022903f0047c220d20022903a0067c221420022903f0017c22162006423388200241b0036a41086a290300200241e0006a41086a2903007c2003201354ad7c200241e0046a41086a2903007c200a200354ad7c20024190066a41086a2903007c2004200a54ad7c20024180026a41086a2903007c2009200454ad7c2006200954ad7c420d86847c220342ffffffffffffff0383370300200041c0006a2002290300221320022903a0047c220a20022903a0017c220420022903c0027c220920022903d0057c22062010423388200241f0036a41086a290300200241c0056a41086a2903007c2007201c54ad7c200241106a41086a2903007c2005200754ad7c200241b0016a41086a2903007c2008200554ad7c200241d0026a41086a2903007c200f200854ad7c2010200f54ad7c420d86847c220742ffffffffffffff0383370300200041f0006a20022903d003221c20022903407c22052002290380057c220820022903b0067c220f20022903e0017c22102003423388200241c0036a41086a290300200241d0006a41086a2903007c200c200b54ad7c200241f0046a41086a2903007c200d200c54ad7c200241a0066a41086a2903007c2014200d54ad7c200241f0016a41086a2903007c2016201454ad7c2003201654ad7c420d86847c220342ffffffffffffff0383370300200041c8006a200229039001220b2002290380037c220c20022903b0027c220d20022903e0057c221420022903b0047c22162007423388200241086a290300200241a0046a41086a2903007c200a201354ad7c200241a0016a41086a2903007c2004200a54ad7c200241c0026a41086a2903007c2009200454ad7c200241d0056a41086a2903007c2006200954ad7c2007200654ad7c420d86847c220a42ffffffffffffff038337030020002003423388200241d0036a41086a290300200241c0006a41086a2903007c2005201c54ad7c20024180056a41086a2903007c2008200554ad7c200241b0066a41086a2903007c200f200854ad7c200241e0016a41086a2903007c2010200f54ad7c2003201054ad7c420d868442137e201142ffffffffffffff03837c220342ffffffffffffff0383370350200041d8006a2003423388200e42ffffffffffffff03837c3703002000200a42338820024190016a41086a29030020024180036a41086a2903007c200c200b54ad7c200241b0026a41086a2903007c200d200c54ad7c200241e0056a41086a2903007c2014200d54ad7c200241b0046a41086a2903007c2016201454ad7c200a201654ad7c420d868442137e201242ffffffffffffff03837c220342ffffffffffffff0383370328200041306a2003423388201542ffffffffffffff03837c370300200241a02a6a24000b911d05027f137e017f0f7e017f230041c0056b2202240002400240024020012c001f22034100480d0020022001290000220437038005200241f0046a200231008605423086200231008505422886200231008405422086200231008305421886200231008205421086200231008105420886200442ff0183848484848484220542ffffffffffffff07832204420042edcd87b9d697d207420010d507200241e0046a20022903f0042206429bfcd192b1b4c7027e42ffffffffffffff07832207420042eda7d7e7a5e39801420010d507200241b0046a2004420042dac89fe3dad6ee01420010d50720024180056a41086a200141086a2900002208370300200241f0036a200231008c05422086200231008b05421886200231008a05421086200231008905420886200842ff0183848484842208420c864280e0ffffffffff0783200231008705423886200584423488842205420042edcd87b9d697d207420010d507200241d0046a200742004281cbb5cef7c5fa06420010d507200241e0036a20022903f003220920022903b0047c220a20022903d0047c220b200620022903e004220c7c2206423488200241e0046a41086a290300200241f0046a41086a2903007c2006200c54ad7c220d420c86847c220c429bfcd192b1b4c7027e42ffffffffffffff07832206420042eda7d7e7a5e39801420010d507200241a0046a20044200429bcad7d9feffff07420010d507200241b0036a2005420042dac89fe3dad6ee01420010d50720024180056a41106a200141106a290000220e370300200241f0026a200231009305421886200231009205421086200231009105420886200e42ff0183848484220f42188642808080f8ffffff0783200231008f05423886200231008e05423086200231008d054228862008848484422888842208420042edcd87b9d697d207420010d507200241c0046a2007420042f9bdd300420010d507200241d0036a200642004281cbb5cef7c5fa06420010d507200241e0026a20022903b003221020022903a0047c220e20022903f0027c221120022903c0047c221220022903d0037c221320022903e0032214200c7c2215423488200241e0036a41086a290300200241f0036a41086a290300200241b0046a41086a2903007c200a200954ad7c200241d0046a41086a2903007c200b200a54ad7c200d4234887c200c200b54ad7c7c2015201454ad7c2216420c86847c220c429bfcd192b1b4c7027e42ffffffffffffff0783220a420042eda7d7e7a5e39801420010d50720024190046a2004420042ffffffffffffff07420010d507200241a0036a20054200429bcad7d9feffff07420010d507200241b0026a2008420042dac89fe3dad6ee01420010d50720024180056a41176a2217200141176a290000370000200241f0016a2002310099054208862002310098058422184224862017310000423886200231009605423086200231009505422886200231009405422086200f84848484421c8884220b420042edcd87b9d697d207420010d507200241c0036a2006420042f9bdd300420010d507200241d0026a200a42004281cbb5cef7c5fa06420010d507200241e0016a20022903a00322192002290390047c220920022903b0027c220d20022903f0017c220f20022903c0037c221420022903d0027c221520022903e002221a200c7c221b423488200241e0026a41086a290300200241b0036a41086a290300200241a0046a41086a2903007c200e201054ad7c200241f0026a41086a2903007c2011200e54ad7c200241c0046a41086a2903007c2012201154ad7c200241d0036a41086a2903007c2013201254ad7c20164234887c200c201354ad7c7c201b201a54ad7c221b420c86847c220e429bfcd192b1b4c7027e42ffffffffffffff0783220c420042eda7d7e7a5e39801420010d50720024180046a2004420042ffffffffffff03420010d50720024190036a2005420042ffffffffffffff07420010d507200241a0026a20084200429bcad7d9feffff07420010d507200241b0016a200b420042dac89fe3dad6ee01420010d507200241f0006a2003ad42ff0083423886200231009e05423086200231009d05422886200231009c05422086200231009b05421886200231009a0542108620188484848484844210882204420042edcd87b9d697d207420010d507200241c0026a200a420042f9bdd300420010d507200241d0016a200c42004281cbb5cef7c5fa06420010d507200241e0006a200229039003221c2002290380047c221120022903a0027c221220022903b0017c221320022903707c22102007422c867c221620022903c0027c221820022903d0017c221a20022903e001221d200e7c221e423488200241e0016a41086a290300200241a0036a41086a29030020024190046a41086a2903007c2009201954ad7c200241b0026a41086a2903007c200d200954ad7c200241f0016a41086a2903007c200f200d54ad7c200241c0036a41086a2903007c2014200f54ad7c200241d0026a41086a2903007c2015201454ad7c201b4234887c200e201554ad7c7c201e201d54ad7c221f420c86847c2209429bfcd192b1b4c7027e42ffffffffffffff0783220e420042eda7d7e7a5e39801420010d50720024180036a2005420042ffffffffffff03420010d50720024190026a2008420042ffffffffffffff07420010d507200241a0016a200b4200429bcad7d9feffff07420010d507200241306a2004420042dac89fe3dad6ee01420010d507200241c0016a200c420042f9bdd300420010d507200241d0006a200e42004281cbb5cef7c5fa06420010d50720024180026a2008420042ffffffffffff03420010d50720024190016a200b420042ffffffffffffff07420010d507200241206a20044200429bcad7d9feffff07420010d507200241c0006a200e420042f9bdd300420010d507200241106a2004420042ffffffffffffff07420010d50720024180016a200b420042ffffffffffff03420010d50720022004420042ffffffffffff03420010d5072002200341ff00713a009f052002200e422c86222020022903007c2204200229031022212002290380017c2205200c422c867c220820022903900122222002290380027c220b20022903207c220d200a422c867c220f20022903407c221420022903900222232002290380037c221520022903a0017c221920022903307c221b2006422c867c221d20022903c0017c221e20022903507c22242002290360222520097c2226423488200241e0006a41086a29030020024190036a41086a29030020024180046a41086a2903007c2011201c54ad7c200241a0026a41086a2903007c2012201154ad7c200241b0016a41086a2903007c2013201254ad7c200241f0006a41086a2903007c2010201354ad7c20074214887c2016201054ad7c200241c0026a41086a2903007c2018201654ad7c200241d0016a41086a2903007c201a201854ad7c201f4234887c2009201a54ad7c7c2026202554ad7c2211420c86847c220742348820024190026a41086a29030020024180036a41086a2903007c2015202354ad7c200241a0016a41086a2903007c2019201554ad7c200241306a41086a2903007c201b201954ad7c20064214887c201d201b54ad7c200241c0016a41086a2903007c201e201d54ad7c200241d0006a41086a2903007c2024201e54ad7c20114234887c2007202454ad7c2211420c86847c220642348820024190016a41086a29030020024180026a41086a2903007c200b202254ad7c200241206a41086a2903007c200d200b54ad7c200a4214887c200f200d54ad7c200241c0006a41086a2903007c2014200f54ad7c20114234887c2006201454ad7c220b420c86847c220a423488200241106a41086a29030020024180016a41086a2903007c2005202154ad7c200c4214887c2008200554ad7c200b4234887c200a200854ad7c2208420c86847c2205423488200e421488200241086a2903007c2004202054ad7c20084234887c2005200454ad7c420c8684200542ffffffffffffff0783200a42ffffffffffffff0783200642ffffffffffffff0783200742ffffffffffffff07834293d8a898da9ce77e7c2204423f877c42ffb4cab188ba85797c2207423f877c4287c2ac7f7c2205423f877c2208423f877c428080808080807c7c220a423f87220642eda7d7e7a5e3980183200442ffffffffffffff07837c22043c00a005200220044228883c00a505200220044220883c00a405200220044218883c00a305200220044210883c00a205200220044208883c00a105200220064281cbb5cef7c5fa0683200742ffffffffffffff07837c20044234887c2207422c883c00ac05200220074224883c00ab0520022007421c883c00aa05200220074214883c00a90520022007420c883c00a805200220074204883c00a705200220074204862004423088420f83843c00a6052002200642f9bdd30083200542ffffffffffffff07837c20074234887c22073c00ad05200220074228883c00b205200220074220883c00b105200220074218883c00b005200220074210883c00af05200220074208883c00ae0520022007423488200842ffffffffffffff07837c2205422c883c00b905200220054224883c00b80520022005421c883c00b705200220054214883c00b60520022005420c883c00b505200220054204883c00b405200220054204862007423088420f83843c00b30520022006428080808080800483200a7c20054234887c22073c00ba05200220074228883c00bf05200220074220883c00be05200220074218883c00bd05200220074210883c00bc05200220074208883c00bb052004a72117200241a0056a410172212741002101410121030340201720024180056a20016a2d0000732217410020176b72417f7341800171410776106d20037121032001411f460d02202720016a2d00002117200141016a21010c000b0b200041003a00000c010b4100210102402003106d41ff01714101470d002000200229038005370001200041196a20024198056a290300370000200041116a20024190056a290300370000200041096a20024188056a290300370000410121010b200020013a00000b200241c0056a24000bff0101037f200028020421020240024020002802004101470d002000410c6a2802002200200110712000450d01200041186c2103200241146a21000340200041706a2802002102200041746a28020022042001107120012002200410722000417c6a280200210220002802002204200110712001200220041072200041186a2100200341686a22030d000c020b0b200041086a2802002200200110712000450d00200041186c2103200241146a21000340200041706a2802002102200041746a28020022042001107120012002200410722000417c6a280200210220002802002204200110712001200220041072200041186a2100200341686a22030d000b0b0bab0101017f230041106b220224000240024002400240200041c000490d00200041808001490d012000418080808004490d02200241033a00032001200241036a41011072200220003602042001200241046a410410720c030b200220004102743a00032001200241036a410110720c020b200220004102744101723b010a20012002410a6a410210720c010b2002200041027441027236020c20012002410c6a410410720b200241106a24000bcd0101047f0240024002400240200041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422062005200620054b1b22064100480d010240024020030d00024020060d00410121050c020b2006102722050d010c040b2000280200210520032006460d00200520032006102b2205450d03200041086a28020021040b20002005360200200041046a20063602000b200520046a2001200210e4071a200041086a200420026a3602000f0b1032000b1030000bb30101037f200028020421020240024020002802004101470d002000410c6a28020022002001107120004103742200450d01200220006a2103034020022802002100200241046a2802002204200110712001200020041072200241086a22022003470d000c020b0b200041086a28020022002001107120004103742200450d00200220006a2103034020022802002100200241046a2802002204200110712001200020041072200241086a22022003470d000b0b0ba90701057f230041206b2203240020012002107102402001450d00200141d8006c2104410021050340200020056a220141046a2802002106200141086a28020022072002107120022006200710722003200141d4006a2d00003a000d20022003410d6a4101107202402001410c6a2d0000220641024b0d0002400240024020060e03000102000b200341003a000e20022003410e6a41011072200141146a2802002106200141186a28020022072002107120022006200710720c020b200341013a000e20022003410e6a4101107202402001410d6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110720b200141146a2802002106200141186a2802002207200210712002200620071072200141206a2802002106200141246a280200220720021071200220062007107220032001410e6a2d00003a000e20022003410e6a410110720c010b200341023a000e20022003410e6a4101107202402001410d6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110720b200141146a2802002106200141186a2802002207200210712002200620071072200141206a2802002106200141246a28020022072002107120022006200710722001412c6a2802002106200141306a28020022072002107120022006200710722001410e6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110720b02400240200141346a2802004101470d00200141386a2802002106200141c0006a28020022072002107120022006200710720c010b200341106a200141386a2802002001413c6a28020028020c11020020032802102106200328021822072002107120022006200710722003280214450d00200610290b200141c4006a200210732004200541d8006a2205470d000b0b200341206a24000b8605010e7f2001410c6a2802002102200128020821032001280204210402400240024002400240024002400240200128020022050d0020030d010c060b200420056b2101024020030d00200121060c020b2001200220036b6a220620014f0d010240024020042005460d00200541016a21070c010b20022003460d064100210720032105200341016a21030b4100210841002106410121090340200420076b210a2008410174210b20022003220c6b210d410021010340200720016a210e20052d000021030240200820016a22052006470d002005417f417f2004200e6b2206200d6a220f200f2006491b200d200e1b220641016a220f200f2006491b6a22062005490d06200b2006200b20064b1b22064100480d06024020050d00024020060d00410121090c020b2006102722090d010c080b20052006460d00200920052006102b2209450d070b200920086a20016a20033a00000240200e450d00200a2001460d00200b41026a210b200141016a2101200e21050c010b0b200c2002460d03200541016a2108200c41016a210341002107200c21050c000b0b200220036b21060b0240024020060d00410121090c010b20064100480d02200610272209450d030b4100210b0240024020050d00200921010c010b024020042005470d00200921010c010b200921012005210e03402001200e2d00003a0000200141016a21012004200e41016a220e470d000b200420056b210b0b2003450d0420022003460d042003210e03402001200e2d00003a0000200141016a21012002200e41016a220e470d000b2002200b20036b6a210b0c040b200541016a210b0c030b1032000b1030000b410121094100210b410021060b2000200b36020820002006360204200020093602000bd40101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102722050d010c040b2000280200210520032004460d00200520032004102b2205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2001200210e4071a200041086a200420026a36020041000f0b1032000b1030000bbf0301047f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021050c010b200420016a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102722050d010c040b2000280200210520032004460d00200520032004102b2205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2002410c6a200110e4071a200041086a200420016a360200200241106a240041000f0b1032000b1030000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41e0a0c000200241086a10372101200241206a240020010bcd0101037f0240024002400240200041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102722050d010c040b2000280200210520032004460d00200520032004102b2205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2001200210e4071a200041086a200420026a3602000f0b1032000b1030000b040041010bb60101017f230041c0006b2202240020024100360210200242013703082002410836021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241a893cc003602282002200241186a360238200241246a41e0a0c000200241286a10371a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410000240200228020c450d00200228020810290b200241c0006a24000ba90803197e017f147e20002903c0012101200029039801210220002903702103200029034821042000290320210520002903b8012106200029039001210720002903682108200029034021092000290318210a20002903b001210b200029038801210c2000290360210d2000290338210e2000290310210f20002903a8012110200029038001211120002903582112200029033021132000290308211420002903a00121152000290378211620002903502117200029032821182000290300211941c07e211a0340200e200f85200d85200c85200b85221b4201892018201985201785201685201585221c85221d201385211e20012009200a85200885200785200685221f201c42018985221c85212020042005852003852002852001852221420189201b85221b2009854237892222201f4201892013201485201285201185201085220985221f200f85423e892223427f8583201d201085420289222485210120222021200942018985220f20168542298922212003201c854227892225427f8583852110201b2006854238892226201f200c85420f892227427f8583201d201285420a89222885210c2028200f2018854224892229427f8583201c200585421b89222a852116200f2015854212892215201f200e85420689222b201d201485420189222c427f85838521032002201c85420889222d201b200885421989222e427f8583202b8521122004201c85421489221c201b200a85421c89220a427f8583201f200b85423d89220e852104200a200e427f8583201d201185422d89221d852109200f2017854203892214200e201d427f858385210e201d2014427f8583201c852113200a2014201c427f8583852118201b200785421589221d200f201985221c2020420e89221b427f858385210a201b201d427f8583201f200d85422b89221f85210f201d201f427f8583201e422c89221d852114201a4180a4c0006a290300201c201f201d427f85838585211920262029202a427f858385221f2102201d201c427f8583201b85221d2105202120232024427f858385221c2106202a2026427f8583202785221b2107202c2015427f8583202d852226210820242021427f85832025852224210b202e2015202d427f8583852221210d202920272028427f8583852227211120252022427f858320238522222115202e202b427f8583202c8522232117201a41086a221a0d000b200020223703a00120002016370378200020233703502000201837032820002019370300200020103703a8012000202737038001200020123703582000201337033020002014370308200020243703b0012000200c37038801200020213703602000200e3703382000200f3703102000201c3703b8012000201b3703900120002026370368200020093703402000200a370318200020013703c0012000201f3703980120002003370370200020043703482000201d3703200b040041000b02000b02000bae1a01027f230041a0056b2203240020034198036a41126a410041b60110e6071a200341a6036a41002800bea440360100200341002f00b4a4403b019c03200341002800b0a44036029803200341002900b6a44037019e0320034198036a107c200341d0016a20034198036a41c80110e4071a20034198036a200341d0016a41c80110e4071a200341003a00e204200341003b01e00420034198036a41124100108101024020032d00e004220441c7014b0d0020034198036a20046a220420042d000041cd00733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c8014f0d010b20034198036a20046a220420042d000041e500733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d000041f200733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d000041ec00733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d000041e900733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d000041ee00733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d00004120733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d000041f600733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d00004131733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d0000412e733a0000200320032d00e00441016a22043a00e00402400240200441ff0171220441a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c41002104200341003b01e0040c010b200441c7014b0d010b20034198036a20046a220420042d00004130733a0000200320032d00e00441016a22043a00e0040240200441ff017141a601470d00200320032d00be0420032d00e104733a00be04200320032d00bf04418401733a00bf0420034198036a107c200341003b01e0040b200320034198036a41d00110e407220341124100108101024020032d00c801220441c8014f0d00200320046a220420042d000041e400733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c8014f0d010b200320046a220420042d000041ef00733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d000041ed00733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d0000412d733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d000041f300733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d000041e500733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d000041f000733a0000200320032d00c80141016a22043a00c8010240200441ff017141a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010b200341123a00ef0402400240024020032d00ca014112470d00200441ff0171220441c801490d010c020b200341d0016a41146a4109360200200341d0016a410c6a410a3602002003200341ca016a2204360288052003200341ef046a36028c0520034198036a41146a410236020020034198036a410c6a410236020020034190056a410c6a410b3602002003410a3602d401200341dca5c0003602a0032003410236029c03200341cca5c000360298032003410b360294052003200436029005200320034198036a3602e00120032003418c056a3602d801200320034188056a3602d001200320034190056a3602a8032003200341ef046a36029805200341f0046a41146a4103360200200342033702f404200341aca5cc003602f0042003200341d0016a36028005200341f0046a419ca6c0001040000b200320046a220420042d00002002733a0000200320032d00c80141016a22043a00c80102400240200441ff017141a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441ff0171220441c8014f0d010b200320046a220420042d00002002410876733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d00002002411076733a0000200320032d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010c010b200441c7014b0d010b200320046a220420042d00002002411876733a0000200320032d00c80141016a22043a00c8010240200441ff017141a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c200341003b01c8010b20034102410010810120032d00c801210402400340200441ff0171220441c7014b0d01200320046a220420042d000020012d0000733a0000200320032d00c80141016a22043a00c8010240200441ff017141a601470d00200320032d00a60120032d00c901733a00a601200320032d00a701418401733a00a7012003107c41002104200341003b01c8010b200141016a21012002417f6a22020d000b2000200341d00110e4071a200341a0056a24000f0b200441c80141c4a4c0001036000b200441c80141c4a4c0001036000b200441c80141c4a4c0001036000b200441c80141c4a4c0001036000b9a0701027f230041f0006b22032400200320013a000b024002400240024002400240024020020d002003200141087122023a000c20020d03200020013a00ca0120002d00c9012104200020002d00c801220241016a3a00c901200241c7014b0d02200020026a220220022d00002004733a0000200020002d00c80141016a22023a00c801200241ff0171220241a601470d01200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002102200041003b01c8010c050b20002d00ca01200141ff0171470d030c050b200241c801490d030b200241c80141c4a4c0001036000b200341386a41146a4109360200200341c4006a410a360200200341206a41146a410336020020032003410c6a360254200341b4e0c800360210200341d8006a41146a410036020020034203370224200341aca5cc003602202003410a36023c20034180a6cc003602682003420137025c200341aca6c0003602582003200341386a3602302003200341d8006a3602482003200341106a3602402003200341d4006a360238200341206a41b4a6c0001040000b200341386a41146a4109360200200341386a410c6a410a3602002003200041ca016a220036020c20032003410b6a360254200341d8006a41146a4102360200200341d8006a410c6a4102360200200341106a410c6a410b3602002003410a36023c200341dca5c0003602602003410236025c200341cca5c0003602582003410b360214200320003602102003200341d8006a3602482003200341d4006a36024020032003410c6a3602382003200341106a36026820032003410b6a360218200341206a41146a410336020020034203370224200341aca5cc003602202003200341386a360230200341206a419ca6c0001040000b200020026a220220022d00002001733a0000200020002d00c80141016a22023a00c8010240200241ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041003b01c8010c010b2004450d002001412471450d0002400240200241ff0171220141c7014b0d00200020016a220120012d000020002d00c901733a000020002d00c80141016a41ff0171220141c8014f0d01200020016a220120012d00004104733a0000200020002d00a701418001733a00a7012000107c200041003b01c8010c020b200141c80141c4a6c0001036000b200141c80141d4a6c0001036000b200341f0006a24000bc40201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff01832001104621000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000b20024180016a240020000f0b200441800141a88ac000104c000b200441800141a88ac000104c000bec0801027f230041f0006b22052400200041124100108101024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000f20002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d00002004733a0000200020002d00c80141016a22063a00c8010240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c030b200641c801490d020c030b200641c80141c4a4c0001036000b200541286a41146a4109360200200541286a410c6a410a3602002005200041ca016a220036024020052005410f6a360244200541c8006a41146a4102360200200541c8006a410c6a4102360200200541e0006a410c6a410b3602002005410a36022c200541dca5c0003602502005410236024c200541cca5c0003602482005410b360264200520003602602005200541c8006a3602382005200541c4006a3602302005200541c0006a3602282005200541e0006a36025820052005410f6a360268200541106a41146a410336020020054203370214200541aca5cc003602102005200541286a360220200541106a419ca6c0001040000b200020066a220620062d00002004410876733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c010b200641c7014b0d010b200020066a220620062d00002004411076733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c010b200641c7014b0d010b200020066a220620062d00002004411876733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041003b01c8010b200041024100108101024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020032d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541f0006a24000f0b200641c80141c4a4c0001036000b200641c80141c4a4c0001036000be50e010a7f230041f0006b220424002000411241001081012003422888a721052003422088a721062003421888a721072003421088a721082003420888a721092003423888a7210a2003423088a7210b2003a7210c20002d00c801210d024002400240024002400340200d41ff0171220d41c7014b0d012000200d6a220d200d2d000020012d0000733a0000200020002d00c80141016a220d3a00c8010240200d41ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010b200141016a21012002417f6a22020d000b200441123a000f20002d00ca014112470d01200d41ff0171220141c7014b0d04200020016a220d200d2d00004108733a000041012101200020002d00c80141016a220d3a00c80102400240024002400240200d41ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c0c010b200d41ff0171220141c8014f0d082000200d41016a220d3a00c801200d41ff017141a601470d01200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c410021010b200020013b01c8012000200141016a220d3a00c8010c010b200d41ff0171220141c8014f0d062000200d41016a220d3a00c8010240200d41ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041013b01c8010c020b200d41ff0171220141c7014b0d060b2000200d41016a220d3a00c801200d41ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041003b01c8010b20004102410010810120002d00c801220d41c801490d020c030b200d41c80141c4a4c0001036000b200441286a41146a4109360200200441286a410c6a410a3602002004200041ca016a220036024020042004410f6a360244200441c8006a41146a4102360200200441c8006a410c6a4102360200200441e0006a410c6a410b3602002004410a36022c200441dca5c0003602502004410236024c200441cca5c0003602482004410b360264200420003602602004200441c8006a3602382004200441c4006a3602302004200441c0006a3602282004200441e0006a36025820042004410f6a360268200441106a41146a410336020020044203370214200441aca5cc003602102004200441286a360220200441106a419ca6c0001040000b2000200d6a220d200d2d0000200c733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c8014f0d010b2000200d6a220d200d2d00002009733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d00002008733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d00002007733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d00002006733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d00002005733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d0000200b733a0000200020002d00c80141016a220d3a00c80102400240200d41ff0171220d41a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c4100210d200041003b01c8010c010b200d41c7014b0d010b2000200d6a220d200d2d0000200a733a0000200020002d00c80141016a220d3a00c8010240200d41ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041003b01c8010b200441f0006a24000f0b200d41c80141c4a4c0001036000b200141c80141c4a4c0001036000b8a0901027f230041f0006b2205240020004112410010810102400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000f20002d00ca014112470d0120002d00c801220641c7014b0d02200020066a220620062d00002004733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c010b200641c8014f0d030b200020066a220620062d00002004410876733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c010b200641c7014b0d030b200020066a220620062d00002004411076733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220641a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010c010b200641c7014b0d030b200020066a220620062d00002004411876733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c200041003b01c8010b2000410741001081010240024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d022003200020066a2d00003a000020002d00c801220641c7014b0d03200020066a41003a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000107c41002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541f0006a24000f0b200641c80141aca5c0001036000b200641c80141bca5c0001036000b200641c80141c4a4c0001036000b200541286a41146a4109360200200541286a410c6a410a3602002005200041ca016a220036024020052005410f6a360244200541c8006a41146a4102360200200541c8006a410c6a4102360200200541e0006a410c6a410b3602002005410a36022c200541dca5c0003602502005410236024c200541cca5c0003602482005410b360264200520003602602005200541c8006a3602382005200541c4006a3602302005200541c0006a3602282005200541e0006a36025820052005410f6a360268200541106a41146a410336020020054203370214200541aca5cc003602102005200541286a360220200541106a419ca6c0001040000b200641c80141c4a4c0001036000bc20b00200041003a0000200041003a0001200041003a0002200041003a0003200041003a0004200041003a0005200041003a0006200041003a0007200041003a0008200041003a0009200041003a000a200041003a000b200041003a000c200041003a000d200041003a000e200041003a000f200041003a0010200041003a0011200041003a0012200041003a0013200041003a0014200041003a0015200041003a0016200041003a0017200041003a0018200041003a0019200041003a001a200041003a001b200041003a001c200041003a001d200041003a001e200041003a001f200041003a0020200041003a0021200041003a0022200041003a0023200041003a0024200041003a0025200041003a0026200041003a0027200041003a0028200041003a0029200041003a002a200041003a002b200041003a002c200041003a002d200041003a002e200041003a002f200041003a0030200041003a0031200041003a0032200041003a0033200041003a0034200041003a0035200041003a0036200041003a0037200041003a0038200041003a0039200041003a003a200041003a003b200041003a003c200041003a003d200041003a003e200041003a003f200041003a0040200041003a0041200041003a0042200041003a0043200041003a0044200041003a0045200041003a0046200041003a0047200041003a0048200041003a0049200041003a004a200041003a004b200041003a004c200041003a004d200041003a004e200041003a004f200041003a0050200041003a0051200041003a0052200041003a0053200041003a0054200041003a0055200041003a0056200041003a0057200041003a0058200041003a0059200041003a005a200041003a005b200041003a005c200041003a005d200041003a005e200041003a005f200041003a0060200041003a0061200041003a0062200041003a0063200041003a0064200041003a0065200041003a0066200041003a0067200041003a0068200041003a0069200041003a006a200041003a006b200041003a006c200041003a006d200041003a006e200041003a006f200041003a0070200041003a0071200041003a0072200041003a0073200041003a0074200041003a0075200041003a0076200041003a0077200041003a0078200041003a0079200041003a007a200041003a007b200041003a007c200041003a007d200041003a007e200041003a007f200041003a008001200041003a008101200041003a008201200041003a008301200041003a008401200041003a008501200041003a008601200041003a008701200041003a008801200041003a008901200041003a008a01200041003a008b01200041003a008c01200041003a008d01200041003a008e01200041003a008f01200041003a009001200041003a009101200041003a009201200041003a009301200041003a009401200041003a009501200041003a009601200041003a009701200041003a009801200041003a009901200041003a009a01200041003a009b01200041003a009c01200041003a009d01200041003a009e01200041003a009f01200041003a00a001200041003a00a101200041003a00a201200041003a00a301200041003a00a401200041003a00a501200041003a00a601200041003a00a701200041003a00a801200041003a00a901200041003a00aa01200041003a00ab01200041003a00ac01200041003a00ad01200041003a00ae01200041003a00af01200041003a00b001200041003a00b101200041003a00b201200041003a00b301200041003a00b401200041003a00b501200041003a00b601200041003a00b701200041003a00b801200041003a00b901200041003a00ba01200041003a00bb01200041003a00bc01200041003a00bd01200041003a00be01200041003a00bf01200041003a00c001200041003a00c101200041003a00c201200041003a00c301200041003a00c401200041003a00c501200041003a00c601200041003a00c7010b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000ba00201067f410021020240200141016a2203200028020422044d0d000240200041146a22052802002201200041106a280200470d000240024002400240200141016a22022001490d00200141017422062002200620024b1b220241ffffffff03712002470d00200241027422024100480d00024020010d0020020d02410421060c040b200028020c2106200141027422072002460d03024020070d0020020d02410421060c040b200620072002102b2206450d020c030b1032000b2002102722060d010b1030000b2000200636020c200041106a20024102763602000b200028020c220241046a2002200141027410e5071a2002200320046b36020020002003360204410121022005200141016a3602002000200028020041016a3602000b20020b8c0201067f02400240024020012802002202450d00200128020421030340200241086a210420022f010622054103742101410021060240024003402001450d0141f3aec0002004410810e7072207450d02200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b2003450d022003417f6a2103200220054102746a41e4016a28020021020c010b0b200241e0006a2006410c6c6a22012802084108490d01200041086a2001280200290000370300200041003602000f0b200041003602042000410c6a4128360200200041086a41fbaec0003602000c010b200041003602042000410c6a4129360200200041086a41a3afc0003602000b200041013602000bac0401057f024002400240200241046a2203417f4c0d0002400240024002400240024002400240024002402003450d00200310272204450d0b200241c000490d04200241808001490d052002418080808004490d0620030d010b41012103410110272204450d07200441033a0000410521050c010b200441033a000002402003417f6a41034d0d00200321050c020b200341017422064105200641054b1b22054100480d0720032005460d010b200420032005102b2204450d050b20042002360001410521060c030b024020030d0041012103410110272204450d040b200420024102743a000041012106200321050c020b02400240200341014d0d00200321050c010b200341017422064102200641024b1b2105024020030d002005102722040d010c040b20032005460d00200420032005102b2204450d030b41022106200420024102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d03024020030d002005102722040d010c030b20032005460d00200420032005102b2204450d020b20042002410274410272360000410421060b0240200520066b2002490d00200521030c050b200620026a22032006490d01200541017422072003200720034b1b22034100480d0120052003460d04200420052003102b22040d040b1030000b1032000b1038000b1039000b200420066a2001200210e4071a2000200620026a36020820002003360204200020043602000b890101037f0240024002400240200041046a2802002201450d000240200141037422024100480d0020002802002103200141027422012002460d04024020010d0020020d0341042103410021020c050b200320012002102b2203450d030c040b1032000b411021020b2002102722030d010b1030000b20002003360200200041046a20024102763602000bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42d8007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341d8006c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141d8006e3602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff01712001470d00200141037422014100480d00024020030d0020010d02410421020c040b20002802002102200341037422032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014103763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c0017e2204422088a70d002004a722014100480d00024020030d0020010d02410121020c040b20002802002102200341c0016c22032001460d03024020030d0020010d02410121020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141c0016e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42187e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341186c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141186e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42307e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341306c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141306e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff1f712001470d00200141067422014100480d00024020030d0020010d02410421020c040b20002802002102200341067422032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014106763602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff00712001470d00200141047422014100480d00024020030d0020010d02410821020c040b20002802002102200341047422032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014104763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad422c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003412c6c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a2001412c6e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad421c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003411c6c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a2001411c6e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff3f712001470d00200141057422014100480d00024020030d0020010d02410421020c040b20002802002102200341057422032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014105763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42247e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341246c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141246e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42f0007e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341f0006c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141f0006e3602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff03712001470d00200141027422014100480d00024020030d0020010d02410421020c040b20002802002102200341027422032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014102763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42187e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341186c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141186e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42a8027e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341a8026c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141a8026e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad423c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003413c6c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a2001413c6e3602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff00712001470d00200141047422014100480d00024020030d0020010d02410421020c040b20002802002102200341047422032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014104763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad420c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003410c6c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a2001410c6e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff3f712001470d00200141057422014100480d00024020030d0020010d02410121020c040b20002802002102200341057422032001460d03024020030d0020010d02410121020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014105763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c4007e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341c4006c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141c4006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42147e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341146c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141146e3602000b0bba0101027f0240200041046a2802002001470d000240024002400240200141016a22022001490d00200141017422032002200320024b1b220241ffffff3f712002470d00200241057422024100480d00024020010d0020020d02410821030c040b20002802002103200141057422012002460d03024020010d0020020d02410821030c040b200320012002102b2203450d020c030b1032000b2002102722030d010b1030000b20002003360200200041046a20024105763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c1007e2204422088a70d002004a722014100480d00024020030d0020010d02410121020c040b20002802002102200341c1006c22032001460d03024020030d0020010d02410121020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141c1006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42287e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341286c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141286e3602000b0bbc0102027f017e0240200041046a2802002001470d000240024002400240200141016a22022001490d00200141017422032002200320024b1bad42c0037e2204422088a70d002004a722024100480d00024020010d0020020d02410821030c040b20002802002103200141c0036c22012002460d03024020010d0020020d02410821030c040b200320012002102b2203450d020c030b1032000b2002102722030d010b1030000b20002003360200200041046a200241c0036e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad4290027e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b2000280200210220034190026c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a20014190026e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42227e2204422088a70d002004a722014100480d00024020030d0020010d02410221020c040b20002802002102200341226c22032001460d03024020030d0020010d02410221020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141226e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42e0007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341e0006c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141e0006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42387e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341386c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141386e3602000b0bb40101027f0240200041046a280200220320016b20024f0d000240024002400240200120026a22042001490d00200341017422022004200220044b1b220420046a22012004490d0020014100480d00024020030d0020010d02410221030c040b2000280200210320022001460d03024020020d0020010d02410221030c040b200320022001102b2203450d020c030b1032000b2001102722030d010b1030000b20002003360200200041046a20014101763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42387e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341386c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141386e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42307e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341306c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141306e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42d0007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341d0006c22032001460d03024020030d0020010d02410821020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141d0006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42287e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341286c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141286e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42347e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341346c22032001460d03024020030d0020010d02410421020c040b200220032001102b2202450d020c030b1032000b2001102722020d010b1030000b20002002360200200041046a200141346e3602000b0bfc0403027f017e057f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f7c4c000ad4280808080800284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bc1760b047f017e017f017e087f017e027f017e077f027e027f230041801a6b22012400200120003602d805200141b0176a41186a22024200370300200141b0176a41106a22034200370300200141b0176a41086a22044200370300200142003703b01741eebec500ad4280808080f000842205100122062900002107200141e80f6a41086a2208200641086a290000370300200120073703e80f2006102920042008290300370300200120012903e80f3703b01741eab8c000ad4280808080900284100122092900002107200141b0126a41086a2206200941086a290000370300200120073703b01220091029200320012903b0122207370300200141386a41086a220a2004290300370300200141386a41106a220b2007370300200141386a41186a220c2006290300370300200120012903b017370338200141206a200141386a10b101420021070240024002400240024002402001280220417d710d0042002107200242003703002003420037030020044200370300200142003703b01720051001220929000021052008200941086a290000370300200120053703e80f2009102920042008290300370300200120012903e80f3703b01741b480c200ad4280808080d002841001220929000021052006200941086a290000370300200120053703b01220091029200320012903b012370000200341086a2006290300370000200a2004290300370300200b2003290300370300200c2002290300370300200120012903b01737033802400240200141386a10b201220941ff01714102460d0020094101710d010b200141b0176a41186a220d4200370300200141b0176a41106a220e4200370300200141b0176a41086a22094200370300200142003703b01741eebec500ad4280808080f00084100122082900002105200141e80f6a41086a220f200841086a290000370300200120053703e80f200810292009200f290300370300200120012903e80f3703b0174180fac100ad4280808080800184100122082900002105200141b0126a41086a220f200841086a290000370300200120053703b01220081029200320012903b012370000200341086a200f290300370000200141386a41086a2009290300370300200141386a41106a200e290300370300200141386a41186a200d290300370300200120012903b0173703384100200141386a10b3012209200941ff01714104461b41ff01710e0401000100010b20012802d805210d10b401210742002105200141b0126a41186a4200370300200141b0126a41106a220e4200370300200141b0126a41086a22094200370300200142003703b01241c8bec500ad4280808080c000841001220829000021102009200841086a290000370300200120103703b012200810294194f1c200ad4280808080b00184100122082900002110200141286a41086a220f200841086a2900003703002001201037032820081029200e20012903282210370300200141e80f6a41086a2009290300370300200141e80f6a41106a2010370300200141e80f6a41186a200f290300370300200120012903b0123703e80f200141106a200141e80f6a10b50102400240427f200742e0127c221020102007541b22072001290318420020012802101b7d22102007560d00417f200d2010a7417f2010428080808010541b6a22092009200d491b2209200d6b220820094b0d012008417f6a4195014b0d0141eebec500ad4280808080f00084100122092900002107200141e80f6a41086a2208200941086a290000370300200120073703e80f2009102941b8dcc900ad4280808080a00184100122092900002107200141b0126a41086a220d200941086a290000370300200120073703b01220091029412010272209450d03200920012903e80f370000200920012903b012370010200941086a2008290300370000200941186a220e200d290300370000412010272208450d0320082009290000370000200841186a200e290000370000200841106a200941106a290000370000200841086a200941086a290000370000200141a0086a41026a220d200141b0176a41026a2d00003a0000200120012f00b0173b01a008200141b00d6a41106a42a08080808004370300200141003a00c80d200120093602bc0d200142a080808080043702b40d200120083602b00d200141cb0d6a200d2d00003a0000200120012f01a0083b00c90d200141b0176a200141b00d6a10b6010240024020012802b0174101470d00200141b0126a41186a2209200141cc176a290200370300200141b0126a41106a200141c4176a290200370300200141b0126a41086a200141bc176a290200370300200120012902b4173703b01241201027220f450d05200f20012903b012370000200f41186a2009290300370000200f41106a200141b0126a41106a2211290300370000200f41086a200141b0126a41086a221229030037000020014281808080103702ec0a2001200f3602e80a200141386a41186a200141b00d6a41186a280200360200200141386a41106a200141b00d6a41106a290300370300200141386a41086a200141b00d6a41086a290300370300200120012903b00d370338200141b0176a200141386a10b6014101210d024020012802b0174101470d00200141b0176a41047221094102210d4120210e410121080340200141e80f6a41186a200941186a2902002207370300200141e80f6a41106a200941106a2902002205370300200141e80f6a41086a200941086a29020022103703002001200929020022133703e80f200141b0126a41186a221420073703002011200537030020122010370300200120133703b0120240200d417f6a2008470d00200141e80a6a20084101109e0120012802e80a210f0b200f200e6a220820012903b012370000200841186a2014290300370000200841106a2011290300370000200841086a20122903003700002001200d3602f00a200141b0176a200141386a10b60120012802b0174101470d01200e41206a210e200d41016a210d20012802ec0a21080c000b0b0240200128023c450d00200128023810290b0240200141c8006a280200450d00200128024410290b20012802ec0a21150c010b024020012802b40d450d0020012802b00d10290b4101210f4100210d024020012802c00d450d0020012802bc0d10290b410021150b41eebec500ad4280808080f00084100122092900002107200141e80f6a41086a2208200941086a290000370300200120073703e80f2009102941f5b7c000ad4280808080a00184100122092900002107200141b0126a41086a220e200941086a290000370300200120073703b01220091029412010272209450d03200920012903e80f370000200920012903b012370010200941086a2008290300370000200941186a2211200e290300370000412010272208450d0320082009290000370000200841186a2011290000370000200841106a200941106a290000370000200841086a200941086a290000370000200141f8146a41026a220e200141b0176a41026a2d00003a0000200120012f00b0173b01f814200141b00d6a41106a42a08080808004370300200141003a00c80d200120093602bc0d200142a080808080043702b40d200120083602b00d200141cb0d6a200e2d00003a0000200120012f01f8143b00c90d200141b0176a200141b00d6a10b7010240024020012d00e0174102460d00200141b0126a41186a200141b0176a41186a290300370300200141b0126a41106a200141b0176a41106a290300370300200141b0126a41086a200141b0176a41086a290300370300200120012903b0173703b012024020012802d41741ffffff3f71450d0020012802d01710290b412010272216450d05201620012903b012370000201641186a200141b0126a41186a2211290300370000201641106a200141b0126a41106a2212290300370000201641086a200141b0126a41086a221429030037000020014281808080103702ec0a200120163602e80a200141386a41186a200141b00d6a41186a280200360200200141386a41106a200141b00d6a41106a290300370300200141386a41086a200141b00d6a41086a290300370300200120012903b00d370338200141b0176a200141386a10b701024020012d00e0174102460d004120210e410121080340200141e80f6a41186a2209200141b0176a41186a290300370300200141e80f6a41106a2217200141b0176a41106a290300370300200141e80f6a41086a2218200141b0176a41086a290300370300200120012903b0173703e80f024020012802d41741ffffff3f71450d0020012802d01710290b201120092903003703002012201729030037030020142018290300370300200120012903e80f3703b0120240200820012802ec0a470d00200141e80a6a20084101109e0120012802e80a21160b2016200e6a220920012903b012370000200941186a2011290300370000200941106a2012290300370000200941086a20142903003700002001200841016a22083602f00a200e41206a210e200141b0176a200141386a10b70120012d00e0174102470d000b0b0240200128023c450d00200128023810290b0240200141c8006a280200450d00200128024410290b200141a0086a41086a200141e80a6a41086a2802002211360200200120012903e80a3703a0080c010b200141003602a808200142013703a008024020012802b40d450d0020012802b00d10290b4100211120012802c00d450d0020012802bc0d10290b2001200d3602e80a200120113602b00d2011200d6aad42c0f0f50b7e21050240200d41808004490d00024041002802d8a74c4102490d00200141386a411c6a4101360200200141cc006a4101360200200141c4006a41013602002001418cc5c00036025020014188c5c0003602402001410136023c2001200141b00d6a3602482001200141e80a6a36023841002802888040210941002802848040210841002802dca74c210d200141f0176a41c411360200200141e8176a42db80808010370300200141e4176a41eec5c000360200200141dc176a420e370200200141d8176a41e0c5c000360200200141d0176a4204370300200141c0176a4205370300200141b8176a4107360200200141b0176a411c6a200141386a36020020014190c5c0003602bc17200141bcc1c2003602b417200141023602b01720084180a4c000200d410246220d1b200141b0176a20094198a4c000200d1b2802101102000b024020012802a40841ffffff3f71450d0020012802a00810290b0240201541ffffff3f71450d00200f10290b41002802d8a74c4102490d022001410c36023c2001200141d8056a36023841002802888040210941002802848040210841002802dca74c210d200141f0176a419a0a360200200141e8176a42db80808010370300200141e4176a41eec5c000360200200141dc176a420e370200200141d8176a41e0c5c000360200200141d0176a4201370300200141c0176a4202370300200141b8176a4107360200200141cc176a200141386a360200200141c8c5c0003602bc17200141bcc1c2003602b417200141023602b01720084180a4c000200d410246220d1b200141b0176a20094198a4c000200d1b2802101102000c020b200d4105742209417f4c0d0402400240200d0d00200141003602b817200142013703b017200141b0176a41004100109e0120012802b817210920012802b01721120c010b200910272209450d04200141003602b8172001200d3602b417200120093602b017200141b0176a4100200d109e01200d410574210e20012802b017221220012802b81722144105746a2109200f2108034020092008290000370000200941186a200841186a290000370000200941106a200841106a290000370000200941086a200841086a290000370000200941206a2109200841206a2108200e41606a220e0d000b2001200d41057441606a41057620146a41016a22093602b8170b20012802b4172108200141a0086a201120094105742209410575220e109e0120012802a008221720012802a80822114105746a2012200910e4071a20012011200e6a22183602a8080240200841ffffff3f71450d00201210290b200141b0176a41186a22084200370300200141b0176a41106a220e4200370300200141b0176a41086a22094200370300200142003703b01741eebec500ad4280808080f000842207100122122900002110200141e80f6a41086a2211201241086a290000370300200120103703e80f2012102920092011290300370300200120012903e80f3703b01741c6b8c000ad4280808080a00284100122142900002110200141b0126a41086a2212201441086a290000370300200120103703b01220141029200320012903b012370000200341086a22142012290300370000200141386a41086a22162009290300370300200141386a41106a2219200e290300370300200141386a41186a221a2008290300370300200120012903b017370338200141203602b4172001200141386a3602b017200f200d200141b0176a10b9010240201541ffffff3f71450d00200f10290b20012802a408210f20084200370300200e420037030020094200370300200142003703b01720071001220d29000021072011200d41086a290000370300200120073703e80f200d102920092011290300370300200120012903e80f3703b01741d8b8c000ad4280808080a002841001220d29000021072012200d41086a290000370300200120073703b012200d1029200320012903b01237000020142012290300370000201620092903003703002019200e290300370300201a2008290300370300200120012903b017370338200141203602b4172001200141386a3602b01720172018200141b0176a10b9010240200f41ffffff3f71450d00201710290b20012802d805210d200141b0176a41186a220e4200370300200141b0176a41106a220f4200370300200141b0176a41086a22094200370300200142003703b01741eebec500ad4280808080f00084100122082900002107200141e80f6a41086a2211200841086a290000370300200120073703e80f2008102920092011290300370300200120012903e80f3703b01741eab8c000ad4280808080900284100122082900002107200141b0126a41086a2211200841086a290000370300200120073703b01220081029200320012903b012370000200341086a2011290300370000200141386a41086a2009290300370300200141386a41106a200f290300370300200141386a41186a200e290300370300200120012903b017370338410110272209450d07200941013a0000200941014105102b2209450d072009200d360001200141386aad42808080808004842009ad4280808080d0008410032009102920054280c6868f017c210541002802d8a74c4103490d012001410c36023c2001200141d8056a36023841002802888040210941002802848040210841002802dca74c210d200141f0176a41980a360200200141e8176a42db80808010370300200141e4176a41eec5c000360200200141dc176a420e370200200141d8176a41e0c5c000360200200141d0176a4201370300200141c0176a4202370300200141b8176a4107360200200141cc176a200141386a360200200141b8c5c0003602bc17200141bcc1c2003602b417200141033602b01720084180a4c000200d410246220d1b200141b0176a20094198a4c000200d1b2802101102000c010b41002802d8a74c4102490d0041002802888040210941002802848040210841002802dca74c210d200141f0176a419f0a360200200141e8176a42db80808010370300200141e4176a41eec5c000360200200141dc176a420e370200200141d8176a41e0c5c00036020042002105200141d0176a4200370300200141cc176a4180a6cc00360200200141c0176a4201370300200141b8176a4107360200200141d8c5c0003602bc17200141bcc1c2003602b417200141023602b01720084180a4c000200d410246220d1b200141b0176a20094198a4c000200d1b2802101102000b200542c0d1e1237c21070b200242003703002003420037030020044200370300200142003703b01741e4bec500ad4280808080a001841001220929000021052004200941086a290000370300200120053703b01720091029418cb2c400ad4280808080e000841001220929000021052006200941086a290000370300200120053703b01220091029200320012903b0122205370300200a2004290300370300200b2005370300200c2006290300370300200120012903b017370338200141b0176a200141386a10ba0120012802b0172204410420041b210a0240024002400240024002400240024020012902b417420020041b2205422088a7220641c4006c22040d00410021020c010b200a20046a210341002102200a210402400340024020042d00004101460d00200441046a28020020004f0d020b200241016a21022003200441c4006a2204470d000b0b200220064b0d010b20074280c2d72f7c211b200620026b210b200542ffffffff0f832107200a200241c4006c22036a2108200a210602400340024020030d00200821040c020b200341bc7f6a210320062d00002109200641c4006a2204210620094102470d000b0b0240034020082004460d0120042d00002103200441c4006a210420034102470d000b0b0240200b450d0002402002450d00200a200a200241c4006c6a200b41c4006c10e5071a0b200bad42208620078421070b200141b0176a41186a4200370300200141b0176a41106a22044200370300200141b0176a41086a22064200370300200142003703b01741e4bec500ad4280808080a00184100122092900002105200141b0126a41086a2203200941086a290000370300200120053703b0122009102920062003290300370300200120012903b0123703b017418cb2c400ad4280808080e000841001220929000021052003200941086a290000370300200120053703b01220091029200420012903b0122205370300200141386a41086a2006290300370300200141386a41106a2005370300200141386a41186a2003290300370300200120012903b017370338200141b0176a200a2007422088a710bb01200141386aad4280808080800484220520013502b81742208620012802b0172206ad8410032007a72103024020012802b417450d00200610290b02402003450d00200341c4006c450d00200a10290b200141b0176a41186a22064200370300200141b0176a41106a22094200370300200141b0176a41086a22034200370300200142003703b01741e4bec500ad4280808080a00184100122082900002107200141b0126a41086a2202200841086a290000370300200120073703b0122008102920032002290300370300200120012903b0123703b0174198b7c400ad4280808080c001841001220829000021072002200841086a290000370300200120073703b01220081029200420012903b012370000200441086a2002290300370000200141386a41086a22022003290300370300200141386a41106a22082009290300370300200141386a41186a220a2006290300370300200120012903b017370338200141003a00b0172005200141b0176aad221c428080808010841003200141386a10bc012006200a2903003703002009200829030037030020032002290300370300200120012903383703b017412410272204450d0a200420012903b01737000020044114360220200441186a2006290300370000200441106a2009290300370000200441086a200329030037000020014281808080103702b412200120043602b012200141b0126a10bd012006200a2903003703002009200829030037030020032002290300370300200120012903383703b017200141b0176a10be0110bf01200141386a200010c001200141b0176a200128023822042001280240220310c1010240024020012802b017220e0d004108210e420021070c010b2003ad4220862004ad84100420012902b41721070b0240200128023c450d00200410290b200e2007422088a7220341c8026c22096a21062007a72114200e21042003450d04200941b87d6a2108200141b0176a41046a210f200141386a41046a210b200141e80f6a41046a210c4100210920014180036a41086a2102200e21040240034020014190036a200441b40210e4071a200441b4026a28020021032002200441c0026a2903003703002001200441b8026a29030037038003024020034103470d00200441c8026a21040c070b200c20014190036a41b40210e407210d200141386a200141e80f6a41b80210e4071a200141f8146a200b41b40210e4071a200141e8146a41086a220a200229030037030020012001290380033703e8140240024020034102470d004101210a0c010b200f200141f8146a41b40210e4071a200141b00d6a200141b0176a41b80210e4071a200141a00d6a41086a200a290300370300200120012903e8143703a00d4100210a200921110b200141e80a6a200141b00d6a41b80210e4071a200141d80a6a41086a200141a00d6a41086a290300370300200120012903a00d3703d80a200a450d01200941016a2109200841b87d6a2108200441c8026a22042006470d000b200621040c050b200141d8056a200141e80a6a41b80210e4071a200141c8056a41086a2202200141d80a6a41086a290300370300200120012903d80a3703c805200141b0126a200141d8056a41b80210e4071a200141a0126a41086a220a2002290300370300200120012903c8053703a012200441c8026a210420034102460d04200141a0086a200141b0126a41b80210e4071a20014190086a41086a2202200a290300370300200120012903a01237039008200141b0176a200141a0086a41b80210e4071a200141386a41086a2002290300370300200120012903900837033841d00210272212450d0620122011360200201241046a200141b0176a41b80210e4071a201220033602bc02201220012903383703c002201241c8026a200141386a41086a290300370300200621032008450d02200941016a2102200141b0126a41046a210a200141a00d6a41086a210302400340200141d8056a200441b40210e4071a200441b4026a28020021092003200441c0026a2903003703002001200441b8026a2903003703a00d024020094103470d00200441c8026a21030c050b200a200141d8056a41b40210e4071a200141386a200141b0126a41b80210e4071a200141f8146a200b41b40210e4071a200141e8146a41086a22082003290300370300200120012903a00d3703e8140240024020094102470d00410121080c010b200f200141f8146a41b40210e4071a200141e80f6a200141b0176a41b80210e4071a20014190036a41086a2008290300370300200120012903e81437039003410021082002210c0b200141b00d6a200141e80f6a41b80210e4071a200141a0126a41086a20014190036a41086a29030037030020012001290390033703a0122008450d01200241016a2102200441c8026a22042006470d000b200621030c030b200141e80a6a200141b00d6a41b80210e4071a200141d80a6a41086a220a200141a0126a41086a2217290300370300200120012903a0123703d80a200441c8026a210341012119024020094102470d00410121160c040b200241016a2104200141a0086a200141e80a6a41b80210e4071a20014190086a41086a2218200a290300370300200120012903d80a3703900841012119410121160340200141b0176a200141a0086a41b80210e4071a200141386a41086a220820182903003703002001200129039008370338024020162019470d00201941016a22022019490d0a201941017422152002201520024b1bad42d0027e2207422088a70d0a2007a722024100480d0a02400240024020190d0020020d01410821120c020b201941d0026c22152002460d01024020150d0020020d01410821120c020b201220152002102b2212450d0e0c010b200210272212450d0d0b200241d0026e21190b2012201641d0026c6a2202200c360200200241046a200141b0176a41b80210e4071a200241bc026a2009360200200241c0026a2001290338370300200241c8026a2008290300370300201641016a2116024020032006470d00200621030c050b0240034020014190036a200341b40210e4071a200341b4026a280200210920014180036a41086a2202200341c0026a2903003703002001200341b8026a29030037038003024020094103470d00200341c8026a21030c070b200d20014190036a41b40210e4071a200141386a200141e80f6a41b80210e4071a200141f8146a200b41b40210e4071a200141e8146a41086a2208200229030037030020012001290380033703e8140240024020094102470d00410121020c010b200f200141f8146a41b40210e4071a200141b00d6a200141b0176a41b80210e4071a200141286a41086a20082903002207370300200141a00d6a41086a2007370300200120012903e8142207370328200120073703a00d41002102200421110b200141e80a6a200141b00d6a41b80210e4071a200a200141a00d6a41086a290300370300200120012903a00d3703d80a2002450d01200441016a2104200341c8026a22032006470d000b200621030c050b200141d8056a200141e80a6a41b80210e4071a200141c8056a41086a2202200a290300370300200120012903d80a3703c805200141b0126a200141d8056a41b80210e4071a20172002290300370300200120012903c8053703a01220094102460d02200341c8026a2103200441016a2104200141a0086a200141b0126a41b80210e4071a20182017290300370300200120012903a012370390082011210c0c000b0b200220061044000b200341c8026a21030c010b41012119410121160b024020062003460d000340200341c8026a21040240200341b4026a2802004102460d000240200341a8026a2802002209450d00200341ac026a280200450d00200910290b200310c2010b2004210320062004470d000b0b02402014450d00201441c8026c450d00200e10290b024020164115490d002016410176ad42d0027e2207422088a70d042007a7221d417f4c0d04201d10272215450d03410021042001410036024020014204370338201241b07d6a211a201241d87a6a211e410421034100210f2016211103402011210a41002111410121080240200a417f6a2214450d000240024002400240024002402012201441d0026c6a41c8026a2d0000200a41d0026c220c20126a41a87d6a2d00002209490d00200a417e6a210b201e200c6a2102410021114100210603400240200b2006470d00200a21080c080b200641016a2106200941ff0171210820022d00002109200241b07d6a2102200820094f0d000b200641016a21082006417f73200a6a21060c010b201e200c6a21022014210602400340024020064101470d00410021060c020b2006417f6a2106200941ff0171210820022d00002109200241b07d6a210220082009490d000b0b200a2006490d02200a20164b0d01200a20066b2208410176220b450d002012200641d0026c6a2109201a200c6a21020340200141b0176a200941d00210e4071a2009200241d00210e50741d0026a21092002200141b0176a41d00210e40741b07d6a2102200b417f6a220b0d000b0b024020060d00200621110c050b0240200841094d0d00200621110c050b200a20164b0d022012200641d0026c6a210c0340200a2006417f6a2211490d040240200a20116b22084102490d002012200641d0026c6a220241c8026a2d00002012201141d0026c6a220941c8026a2d0000220e4f0d00200141b0176a200941c80210e4071a2001200941cc026a2800003600b3122001200941c9026a2800003602b0122009200241d00210e407210d024020084103490d002014210b200c2109200d41e8076a2d0000200e4f0d0003402009200941d0026a220241d00210e407210d2006200b417f6a220b460d0120022109200d41e8076a2d0000200e490d000b0b2002200141b0176a41c80210e407220641c8026a200e3a0000200641c9026a20012802b012360000200641cc026a20012800b3123600000b2011450d05200c41b07d6a210c201121062008410a4f0d050c000b0b200a20164180cac700104b000b2006200a4180cac700104c000b200a2006417f6a2211490d00200a20164190cac700104b000b2011200a4190cac700104c000b0240200f200128023c470d00200141386a200f4101108d012001280238210320012802402204210f0b2003200f4103746a22062008360204200620113602002001200441016a22043602402004210f024020044102490d000240024003400240024002400240024020032004417f6a4103746a2206280200450d00200441037420036a220841746a2802002202200628020422094b0d010b20044103490d022006280204210920032004417d6a220d4103746a28020421060c010b4102210f200441024d0d0620032004417d6a220d4103746a2802042206200920026a4d0d004103210f200441034d0d06200841646a280200200620026a4b0d050b20062009490d010b2004417e6a210d0b02400240024002400240024002402004200d41016a220e4d0d002004200d4d0d012003200d41037422146a2204280204221720042802006a22042003200e41037422186a2203280200220f490d02200420164b0d032012200f41d0026c6a220b2003280204220c41d0026c22036a2109200441d0026c21082004200f6b2202200c6b2204200c4f0d0420152009200441d0026c220310e407220220036a2106200c4101480d0520044101480d05201a20086a21082009210303402008200341b07d6a2209200641b07d6a220a200641786a2d0000200341786a2d00004922041b41d00210e40721082006200a20041b21060240200b2009200320041b2203490d00200221040c080b200841b07d6a21082002210420022006490d000c070b0b200e200441a0cac7001036000b200d200441b0cac7001036000b200f200441c0cac700104c000b2004201641c0cac700104b000b2015200b200310e407220420036a21060240200c4101480d002002200c4c0d00201220086a210a20042104200b2103034020092004200941c8026a2d0000200441c8026a2d00004922021b21082004200441d0026a20021b21042003200841d00210e40741d0026a2103200941d0026a200920021b2209200a4f0d03200620044b0d000c030b0b200b2103200421040c010b20092103200221040b20032004200620046b2206200641d002706b10e4071a024020012802402204200d4d0d002001280238220320146a22062017200c6a3602042006200f3602002004200e4d0d02200320186a2206200641086a2004200e417f736a41037410e5071a20012004417f6a2204360240200441014b0d010c030b0b200d200441d0cac7001036000b200e20041042000b2004210f0b20110d000b0240200128023c41ffffffff0171450d00200310290b201d41d002702104201d41d002490d02201d2004460d02201510290c020b20164102490d012016417f6a21032012201641d0026c6a2109410021020340024002400240201620032204417f6a2203490d00201620036b22084102490d022012200441d0026c6a220441c8026a2d00002012200341d0026c6a220641c8026a2d0000220a4f0d02200141b0176a200641c80210e4071a2001200641cc026a2800003600b3122001200641c9026a2800003602b0122006200441d00210e407210b20084103490d012002210620092108200b41e8076a2d0000200a4f0d0103402008220441b07d6a200441d00210e4071a2006417f6a2206450d02200441d0026a210820044198056a2d0000200a4f0d020c000b0b2003201641f0c9c700104c000b2004200141b0176a41c80210e407220441c8026a200a3a0000200441c9026a20012802b012360000200441cc026a20012800b3123600000b200241016a2102200941b07d6a210920030d000c020b0b024020062004460d000340200441c8026a21030240200441b4026a2802004102460d000240200441a8026a2802002209450d00200441ac026a280200450d00200910290b200410c2010b2003210420062003470d000b0b410821124100211602402014450d00201441c8026c450d00200e1029410821120b410021190b2012201641d0026c6a210f02400240024020160d0042002113201221030c010b200141e0026a2115200141b0176a41b8026a2106200141386a41b8026a2108200041016a211a200141cd176a210e200141386a41046a211442c0a187f000210742002113200141d8056a41086a210a200141810b6a221741076a21184100210220122104024003402004280200210d200141b0126a200441046a41b80210e4071a200441bc026a2802002103200a200441c8026a2903003703002001200441c0026a2903003703d80520034102460d01200141386a200141b0126a41b80210e4071a200141b0176a201441b40210e4071a200620012903d805370300200641086a2209200a290300370300200120033602e419200141e80f6a200141b0176a10c30120012903e80f210520012802e419210320012802d819210b200141b00d6a200141b0176a41b40210e4071a200141a0086a41086a220c2009290300370300200120062903003703a008024020034102460d00427f427f427f200720057c220520052007541b220742c0b2cd3b7c220520052007541b427f200742c0f0f50b7c220520052007541b200b1b220742c0b2cd3b7c220520052007541b200720034101461b2107200141386a200141b00d6a41b40210e4071a200841086a220b200c290300370300200820012903a008370300200120033602ec0202400240024020012d00f80241c000490d002002450d0020074280c0a8ca9a3a560d010b200141b0176a200141386a10c40141002109200141003b01e80f200141e80a6a200141b0176a200141e80f6a10c501024020012802e0022211450d0020012802e8022203417f4c0d090240024020030d004100210b410121090c010b200310272209450d092003210b0b02400240200b2003490d00200b210c0c010b200b410174220c2003200c20034b1b220c4100480d0b0240200b0d00200c10272209450d0e0c010b200b200c460d002009200b200c102b2209450d0d0b20092011200310e4071a2003ad422086200cad8421100b0240024020012802ec024101460d004101210b20012802e002450d01200141b0176a201510c60120013502b81742208620012802b0172203ad84100420012802b417450d01200310290c010b20012802f00221030240024020012802f402220b41014b0d00200141003602ec020c010b200141013602ec022001200b417f6a3602f4020b200320006a2103024020012802e002450d00200141b0176a200310c00120012802b817211120012802b017210b4100210c200141f8146a41046a41003a0000200141003602f814200141086a200b2011200141f8146a4105410010c70102402001280208450d002001200128020c220c4105200c4105491b3602ec0f2001200141f8146a3602e80f2001200141e80f6a10c80120012802042111200128020045210c0b024020012802b417450d00200b10290b200141b0176a201510c60120012802b017210b200120012802b8173602ec0f2001200b3602e80f200320114100200c1b200141e80f6a10c90120012802b417450d00200b10290b200141b0176a200141386a41c80210e4071a2003200141b0176a10ca014100210b0b200120172900003703b017200120182800003600b7170240024020012903e80a4201510d00410421030c010b20012d00800b210c20012903f00a2105200120012800b7173600ef0f200120012903b0173703e80f4104210320054202510d00200120012800ef0f3600b717200120012903e80f3703b017200c21030b200120012903b0173703f814200120012800b7173600ff14200e20012903f814370000200e41076a20012800ff14360000200120033a00cc17200120103702c417200120093602c0172001200d3602bc17200120003602b817200141023602b417200141013a00b017200141b0176a10cb010240200b0d00200721130c020b024020012802e0022203450d0020012802e402450d00200310290b200141386a10cc01200721130c010b200141e80f6a200141386a41b40210e4071a200141e80a6a41086a220c200b290300370300200120082903003703e80a20034103460d00200141b0176a200141e80f6a41b40210e4071a200620012903e80a3703002009200c290300370300200120033602e419201a200141b0176a10ca010b2002417f6a2102200441d0026a2204200f470d010c040b0b200441d0026a21030c010b200441d0026a21030b200f2003460d002012201641d0026c6a210903402003220441d0026a21030240200441b0026a2802002206450d00200441b4026a280200450d00200610290b200441086a10c20120092003470d000b0b02402019450d00201941d0026c450d00201210290b200141b0126a41186a22094200370300200141b0126a41106a22044200370300200141b0126a41086a22034200370300200142003703b01241b3e6ca00ad4280808080e000841001220629000021072003200641086a290000370300200120073703b0122006102941cfe6ca00ad4280808080a00184100122062900002107200141b0176a41086a2202200641086a290000370300200120073703b01720061029200420012903b0172207370300200141e80f6a41086a2003290300370300200141e80f6a41106a2007370300200141e80f6a41186a2002290300370300200120012903b0123703e80f200141b0176a200141e80f6a412010cd0120012d00b01721062009200141c9176a2900003703002004200141c1176a2900003703002003200141b9176a290000370300200120012900b1173703b0120240024020064101460d00200141386a41186a4200370300200141386a41106a4200370300200141386a41086a4200370300200142003703380c010b200141386a41186a2009290300370300200141386a41106a2004290300370300200141386a41086a2003290300370300200120012903b0123703380b200141b0126a41186a22024200370300200141b0126a41106a22084200370300200141b0126a41086a22034200370300200142003703b0124188a2c800ad42808080808003841001220629000021072003200641086a290000370300200120073703b0122006102941a0a2c800ad4280808080e00184100122062900002107200141b0176a41086a2209200641086a290000370300200120073703b01720061029200420012903b017370000200441086a2009290300370000200141e80f6a41086a2003290300370300200141e80f6a41106a2008290300370300200141e80f6a41186a2002290300370300200120012903b0123703e80f200141b00d6a200141e80f6a412010ce01024002400240024020012802b00d22030d0041002104200141003602f00f200142013703e80f200141b0176a41186a200141386a41186a290300370300200141b0176a41106a200141386a41106a2903003703002009200141386a41086a290300370300200120012903383703b017200141b0176a21060c010b200120012902b40d22073702ec0f200120033602e80f2007a7210202402007422088a7220441d100490d00200141b0126a41186a2209200141386a41186a290300370300200141b0126a41106a2208200141386a41106a290300370300200141b0126a41086a220a200141386a41086a290300370300200120012903383703b0122000417f6a41d10070220620044f0d07200320064105746a220620012903b012370000200641186a2009290300370000200641106a2008290300370000200641086a200a2903003700000c030b200141b0176a41186a200141386a41186a290300370300200141b0176a41106a200141386a41106a290300370300200141b0176a41086a200141386a41086a290300370300200120012903383703b017200141b0176a210620042002470d010b200141e80f6a20044101109e0120012802ec0f210220012802e80f210320012802f00f21040b200320044105746a22092006290000370000200941186a200641186a290000370000200941106a200641106a290000370000200941086a200641086a2900003700002001200441016a22043602f00f0b200141b0126a41186a4200370300200141b0126a41106a22084200370300200141b0126a41086a22064200370300200142003703b0124188a2c800ad4280808080800384100122092900002107200141d8056a41086a220a200941086a290000370300200120073703d805200910292006200a290300370300200120012903d8053703b01241a0a2c800ad4280808080e00184100122092900002107200141a0086a41086a220a200941086a290000370300200120073703a00820091029200820012903a0082207370300200141b0176a41086a2006290300370300200141b0176a41106a2007370300200141b0176a41186a200a290300370300200120012903b0123703b0170240024020030d00201c428080808080048410040c010b200141203602b4122001200141b0176a3602b01220032004200141b0126a10cf01200241ffffff3f71450d00200310290b200141801a6a2400427f201b427f201342c096b1027c220720072013541b7c22072007201b541b0f0b1039000b1038000b1032000b2006200441d0a7c8001036000b1030000bb40201067f230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841007108b0202400240200228020822030d00410221010c010b200228020c210402400240200241106a2802002205450d0020032d0000220641014b0d0041002101024020060e020200020b2005417f6a4104490d0020032800012107410121010c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b410221010b2004450d00200310290b2000200736020420002001360200200241d0006a24000b950201047f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841007108b0202400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410d36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141f4eaca003602382001200141286a360248200141346a41a8a3c800200141386a10371a200135022042208620013502188410080240200128021c450d00200128021810290b410221000b2003450d00200210290b200141d0006a240020000b810201037f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841007108b0202400240200128020822020d00410421000c010b200128020c210302400240200141106a280200450d0020022d000022004104490d010b20014100360220200142013703182001410d36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141f4eaca003602382001200141286a360248200141346a41a8a3c800200141386a10371a200135022042208620013502188410080240200128021c450d00200128021810290b410421000b2003450d00200210290b200141d0006a240020000b940405047f017e017f017e057f230041f0006b22002400200041c0006a41186a22014200370300200041c0006a41106a22024200370300200041c0006a41086a220342003703002000420037034041c8bec500ad4280808080c000842204100122052900002106200041e0006a41086a2207200541086a2900003703002000200637036020051029200320072903003703002000200029036037034041a4f0c200ad4280808080a001841001220529000021062007200541086a2900003703002000200637036020051029200220002903602206370300200041206a41086a22082003290300370300200041206a41106a22092006370300200041206a41186a220a200729030037030020002000290340370320200041106a200041206a10b5012000280210210b200029031821062001420037030020024200370300200342003703002000420037034020041001220529000021042007200541086a2900003703002000200437036020051029200320072903003703002000200029036037034041f8f0c200ad4280808080b001841001220529000021042007200541086a29000037030020002004370360200510292002200029036022043703002008200329030037030020092004370300200a2007290300370300200020002903403703202000200041206a10b5012000280200210720002903082104200041f0006a24002004420020071b200642e0127e4200200b1b7c0b990204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841007108b0202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b420021030b2004450d00200110290b2000200537030820002003370300200241d0006a24000b8a0604057f017e047f037e230041f0006b22022400200241286a200141146a350200422086200135020c841015108b020240024020022802282203450d00200141086a2104200141106a210503400240024020042802002206200229022c2207422088a722084b0d00200128020022092003460d0120092003200610e707450d010b2007a7450d02200310290c020b02402005280200450d00200128020c10290b2001200336020c20052007370200200220032008109e02024002402002280200450d002002280204210a024020012d0018450d002001350214422086200135020c8410040b2001280214220820042802002203490d0102400240200820036b22084108490d00200841786a2106200128020c20036a41086a21090c010b41002106024041002802d8a74c0d004180a6cc0021090c010b4100210641002802888040210341002802848040210841002802dca74c210b200241e600360268200242dc80808010370360200241db9fc00036025c20024213370254200241c89fc000360250200242003703484180a6cc00210920024180a6cc0036024420024201370338200241c09fc00036023420024113360230200241c89fc00036022c2002410136022820084180a4c000200b410246220b1b200241286a20034198a4c000200b1b2802101102000b41002103200241003a00480240034020062003460d01200241286a20036a200920036a2d00003a00002002200341016a22083a00482008210320084120470d000b200241086a41186a200241286a41186a2903002207370300200241086a41106a200241286a41106a290300220c370300200241086a41086a200241286a41086a290300220d37030020022002290328220e3703082000411c6a2007370000200041146a200c3700002000410c6a200d3700002000200e370004200041246a200a360200200041013602000c050b200341ff0171450d00200241003a00480b200241286a2001350214422086200135020c841015108b02200228022822030d010c020b0b2003200841bcf7c900104c000b200041003602000b200241f0006a24000ba90603067f017e047f230041f0006b22022400200241286a200141146a350200422086200135020c841015108b020240024020022802282203450d00200241086a2104200141106a2105034002400240200141086a22062802002207200229022c2208422088a722094b0d002001280200220a2003460d01200a2003200710e707450d010b2008a7450d02200310290c020b02402005280200450d00200128020c10290b2001200336020c2005200837020020022003200910b7020240024020022d00104102460d00200241186a41086a200441086a280200360200200220042902003703182002280204210b2002280200210c024020012d0018450d002001350214422086200135020c8410040b2001280214220920062802002203490d0102400240200920036b22094108490d00200941786a2107200128020c20036a41086a210a0c010b41002107024041002802d8a74c0d004180a6cc00210a0c010b4100210741002802888040210341002802848040210941002802dca74c2106200241e600360268200242dc80808010370360200241db9fc00036025c20024213370254200241c89fc000360250200242003703484180a6cc00210a20024180a6cc0036024420024201370338200241c09fc00036023420024113360230200241c89fc00036022c2002410136022820094180a4c000200641024622061b200241286a20034198a4c00020061b2802101102000b41002103200241003a00480240034020072003460d01200241286a20036a200a20036a2d00003a00002002200341016a22093a00482009210320094120470d000b20002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a2903003700002000200b3602242000200c36022020002002290318370228200041306a200241186a41086a2802003602000c050b0240200341ff0171450d00200241003a00480b200b41ffffff3f71450d00200c10290b200241286a2001350214422086200135020c841015108b02200228022822030d010c020b0b2003200941bcf7c900104c000b200041023a00300b200241f0006a24000bb30201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001104621000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000b20024180016a240020000f0b200441800141a88ac000104c000b200441800141a88ac000104c000ba30301067f230041106b22032400024020014105744104722204417f4c0d000240200410272205450d002003410036020820032004360204200320053602002001200310710240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020002101024002402006200522046b4120490d00200441206a21050c010b024002400240200441206a22052004490d00200641017422002005200020054b1b22004100480d000240024020060d00024020000d00410121070c020b2000102721070c040b20062000470d020b200021060c030b1032000b200720062000102b21070b2000210620070d001030000b200141206a2100200720046a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100302402006450d00200710290b200341106a24000f0b1039000b1038000b901304057f017e107f027e230041e0026b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10c8010240024020022802000d00200228020422052002280224220641c4006e2201200120054b1bad42c4007e2207422088a70d032007a72201417f4c0d030240024020010d00410421080c010b200110272208450d050b20024100360230200220083602282002200141c4006e36022c0240024002402005450d00200241b8026a41077221094100210a4100210b03402006450d0220022006417f6a220c36022420022002280220220d41016a360220200d2d0000220141014b0d0202400240024020010e020001000b200c4104490d04200241f4016a41026a200241f8016a41026a2d00003a0000200241d8016a41086a20024198026a41086a290200370300200241d8016a41106a20024198026a41106a290200370300200241d8016a41186a20024198026a41186a2d00003a0000200241b8016a41086a200241b8026a41086a290100370300200241b8016a41106a200241b8026a41106a290100370300200241b8016a41186a200241b8026a41186a290100370300200220022f00f8013b01f40120022002290298023703d801200220022901b8023703b80120022006417b6a220e3602242002200d41056a360220200d280001210f200220022f0194023b01b601410021100c010b41002111200241003a00d8022006417e6a2110024002400240024002400340200c20112201460d01200241b8026a20016a200d20016a221141016a2d00003a00002002201141026a3602202002200141016a22113a00d802200220103602242010417f6a211020114120470d000b20024194026a41026a221220022d00ba023a0000200241f8016a41086a2213200941086a290000370300200241f8016a41106a2214200941106a290000370300200241f8016a41186a2215200941186a2d00003a0000200220022f01b8023b019402200220092900003703f8014100210e200c2011460d0220022800bb022116200220103602242002200d20116a220c41026a360220200c41016a2d0000221141014d0d012010210e410221100c050b0240200141ff0171450d00200241003a00d8020b4100210e410221100c040b024020110e020200020b41002111200241003a00d802200620016b417c6a21010240034020102011460d01200241b8026a20116a200c20116a220d41026a2d00003a00002002200d41036a3602202002201141016a220d3a00d802200220013602242001417f6a2101200d2111200d4120470d000b20024198026a41186a200241b8026a41186a29030037030020024198026a41106a200241b8026a41106a29030037030020024198026a41086a200241b8026a41086a290300370300200220022903b802370398022010200d6b210e410121170c030b0240201141ff0171450d00200241003a00d8020b4100210e0b410221100c020b410021172010210e0b200241b8016a41186a20024198026a41186a290300370300200241b8016a41106a20024198026a41106a290300370300200241b8016a41086a20024198026a41086a290300370300200241f4016a41026a20122d00003a0000200241d8016a41086a2013290300370300200241d8016a41106a2014290300370300200241d8016a41186a20152d00003a000020022002290398023703b801200220022f0194023b01f401200220022903f8013703d801410121102016210f0b200241b2016a41026a2201200241f4016a41026a2d00003a000020024198016a41086a2211200241d8016a41086a29030037030020024198016a41106a220d200241d8016a41106a29030037030020024198016a41186a220c200241d8016a41186a2d00003a0000200241f8006a41086a2206200241b8016a41086a290300370300200241f8006a41106a2212200241b8016a41106a290300370300200241f8006a41186a2213200241b8016a41186a290300370300200220022f01f4013b01b201200220022903d80137039801200220022903b801370378200220022f01b6013b017620104102460d03200b41016a210b200241f2006a41026a221420012d00003a0000200241d8006a41086a22152011290300370300200241d8006a41106a2211200d290300370300200241d8006a41186a220d200c2d00003a0000200241386a41086a220c2006290300370300200241386a41106a22062012290300370300200241386a41186a22122013290300370300200220022f01b2013b0172200220022903980137035820022002290378370338200220022f01763b01360240200a200228022c470d00200241286a200a4101109f01200228022821082002280230210a0b2008200a41c4006c6a220120103a00002001200f360004200141036a20142d00003a0000200120022f01723b0001200d2d00002110201129030021072015290300211820022903582119200120173a002120012019370008200141106a2018370000200141186a2007370000200141206a20103a000020012002290338370022200c29030021072006290300211820122903002119200120022f01363b00422001413a6a2019370000200141326a20183700002001412a6a20073700002002200a41016a220a360230200e2106200b2005470d000b0b2008450d022000200229022c370204200020083602000c030b200241b2016a41026a200241f4016a41026a2d00003a000020024198016a41086a200241d8016a41086a29030037030020024198016a41106a200241d8016a41106a29030037030020024198016a41186a200241d8016a41186a2d00003a0000200241f8006a41086a200241b8016a41086a290300370300200241f8006a41106a200241b8016a41106a290300370300200241f8006a41186a200241b8016a41186a290300370300200220022f01f4013b01b201200220022903d80137039801200220022903b801370378200220022f01b6013b01760b200228022c2201450d00200141c4006c450d00200810290b200241003602a00220024201370398022002410d3602bc012002200241086a3602b801200220024198026a360278200241cc026a4101360200200242013702bc02200241f4eaca003602b8022002200241b8016a3602c802200241f8006a41a8a3c800200241b8026a10371a20023502a0024220862002350298028410080240200228029c02450d0020022802980210290b200041003602000b2004450d00200310290b200241e0026a24000f0b1038000b1039000bff0201037f230041206b2203240002400240200241c4006c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420022003107102402002450d00200241c4006c210203400240024020012d00004101460d00200341003a00102003200341106a410110722003200141046a2802003602102003200341106a410410720c010b200341013a00102003200341106a41011072412010272204450d042003422037021420032004360210200341106a200141016a41201072200328021421042003200328021022052003280218107202402004450d00200510290b0240200141216a2d00004101460d00200341003a00102003200341106a410110720c010b200341013a00102003200341106a410110722003200141226a412010720b200141c4006a2101200241bc7f6a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1038000b1039000b910f05017f017e047f017e067f230041f0016b2201240042002102200141d8006a41186a22034200370300200141d8006a41106a22044200370300200141d8006a41086a220542003703002001420037035841e4bec500ad4280808080a00184100122062900002107200141c8006a41086a2208200641086a29000037030020012007370348200610292005200829030037030020012001290348370358418e9fc400ad4280808080e000841001220629000021072008200641086a2900003703002001200737034820061029200420012903482207370300200141286a41086a22062005290300370300200141286a41106a2007370300200141286a41186a200829030037030020012001290358370328200141f8006a200141286a412010cd0120012d00782108200320014191016a290000370300200420014189016a290000370300200520014181016a290000370300200120012900793703580240024020084101470d0020002001290358370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700000c010b200141f8006a41186a4200370300200141f8006a41106a22094200370300200141f8006a41086a220842003703002001420037037841b3e6ca00ad4280808080e000841001220a29000021072008200a41086a29000037030020012007370378200a102941e7e6ca00ad4280808080e000841001220a29000021072006200a41086a29000037030020012007370328200a102920092001290328220737030020052008290300370300200420073703002003200629030037030020012001290378370358200141f8006a200141d8006a10cf03024002402001280278220a0d004104210a410021050c010b200129027c2202422088a721050b02400240200541246c2205450d002005415c6a2108200a210503400240024020052d00004101460d002008450d030c010b200541016a2800002103200541086a28020021062001200541106a28020036025c200120063602580240200341c28289aa04460d0020080d010c030b200141f8006a200141d8006a10e00220012903784203510d02200141f8006a41106a22052802002106200141f8006a41186a420037030020054200370300200141f8006a41086a220842003703002001420037037841b1dcc900ad4280808080f000841001220329000021072008200341086a290000370300200120073703782003102941b8dcc900ad4280808080a00184100122032900002107200141286a41086a2209200341086a2900003703002001200737032820031029200520012903282207370300200141d8006a41086a2008290300370300200141d8006a41106a2007370300200141d8006a41186a200929030037030020012001290378370358200141f8006a200141d8006a108d0220012802782205410120051b21034100210802402006200129027c420020051b2207422088a74f0d00200320064105746a2205450d00200141086a41186a200541186a290000370300200141086a41106a200541106a290000370300200141086a41086a200541086a29000037030020012005290000370308410121080b0240200742ffffff3f83500d00200310290b2008450d02200141f8006a41186a2208200141086a41186a290300370300200141f8006a41106a2203200141086a41106a290300370300200141f8006a41086a2206200141086a41086a29030037030020012001290308370378200141d8006a41186a220b4200370300200141d8006a41106a220c4200370300200141d8006a41086a220942003703002001420037035841e4bec500ad4280808080a001841001220d2900002107200141c8006a41086a2205200d41086a29000037030020012007370348200d10292009200529030037030020012001290348370358418e9fc400ad4280808080e000841001220d29000021072005200d41086a29000037030020012007370348200d102920042001290348370000200441086a2005290300370000200141286a41086a2009290300370300200141286a41106a200c290300370300200141286a41186a200b290300370300200120012903583703280240412010272205450d0020052001290378370000200541186a2008290300370000200541106a2003290300370000200541086a2006290300370000200141286aad42808080808004842005ad4280808080800484100320051029200041186a2008290300370000200041106a2003290300370000200041086a2006290300370000200020012903783700000c040b1039000b200541246a21052008415c6a21080c000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402002422088a72205450d00200541246c2108200a210503400240024020052d0000220341044b0d0002400240024020030e050400010204040b2005410c6a280200450d03200541086a28020010290c030b2005410c6a280200450d02200541086a28020010290c020b2005410c6a280200450d01200541086a28020010290c010b200541086a280200450d00200541046a28020010290b200541246a21052008415c6a22080d000b0b2002a72205450d00200541246c450d00200a10290b200141f0016a24000b800b04047f017e127f037e230041d0036b22012400200141f0006a41186a4200370300200141f0006a41106a22024200370300200141f0006a41086a220342003703002001420037037041eebec500ad4280808080f000841001220429000021052003200441086a290000370300200120053703702004102941f0f5c100ad4280808080900184100122042900002105200141206a41086a2206200441086a2900003703002001200537032020041029200220012903202205370300200141c0006a41086a22042003290300370300200141c0006a41106a2005370300200141c0006a41186a200629030037030020012001290370370340200141f0006a200141c0006a10d00102400240024020012903704202510d002000280208210320002802042107200028020021082001200228020010af01200141f0006a200128020022092001280208220a10d1012004200141f0006a410c6a290200370300200120012902743703400240024020012802704101460d00200141106a410c6a4100360200200142003703100c010b200141106a41086a200141c0006a41086a290300370300200120012903403703100b02402003450d002008200341246c6a210b20014184016a210c2001411c6a210d200141106a410472210e200141e8006a210f200141c0006a41206a211020082111034020112802202112200141206a41186a2213201141186a290000370300200141206a41106a2214201141106a290000370300200141206a41086a2215201141086a290000370300200120112900003703200240024020012802142206450d00200128021821160c010b200141f0006a410041e00210e6071a200f410036020020104200370300200141c0006a41186a22004200370300200141c0006a41106a22034200370300200141c0006a41086a220442003703002001420037034041940310272206450d0541002116200641003b010620064100360200200641086a200141f0006a41e00210e4071a20064190036a200f28020036020020064188036a201029030037020020064180036a2000290300370200200641f8026a2003290300370200200641f0026a2004290300370200200620012903403702e80220014100360218200120063602140b201141246a2111024002400340200641086a210320062f01062217410574210041002104024003402000450d01200141206a2003412010e7072202450d03200041606a2100200441016a2104200341206a21032002417f4a0d000b2004417f6a21170b02402016450d002016417f6a2116200620174102746a4194036a28020021060c010b0b200141c0006a41186a20132903002205370300200141c0006a41106a20142903002218370300200141c0006a41086a2015290300221937030020012001290320221a370340200c201a370200200c41086a2019370200200c41106a2018370200200c41186a20053702002001200d360280012001201736027c2001200e3602782001200636027420014100360270200141f0006a410010d20121000c010b200620044102746a41e8026a21000b2000200028020020126a3602002001200128021020126a3602102011200b470d000b0b02402007450d00200741246c450d00200810290b200141fc006a200141106a41086a290300370200200120012903102205370274200141013602702001410036024820014201370340410410272200450d0220002005a73600002001200036024020014284808080c000370244200141f0006a41086a2200200141c0006a10d30120012802442103200aad4220862009ad84200135024842208620012802402204ad84100302402003450d00200410290b200010d4012001280204450d01200910290c010b200041046a2802002203450d00200341246c450d00200028020010290b200141d0036a24000f0b1030000b850a03057f017e047f230041a0016b22012400200141e8006a41186a22024200370300200141e8006a41106a22034200370300200141e8006a41086a220442003703002001420037036841b1dcc900ad4280808080f000841001220529000021062004200541086a2900003703002001200637036820051029418886ca00ad4280808080c0018410012205290000210620014188016a41086a2207200541086a29000037030020012006370388012005102920032001290388012206370300200141c8006a41086a2004290300370300200141c8006a41106a2006370300200141c8006a41186a200729030037030020012001290368370348200141106a200141c8006a412010fc0120012802142105200128021021082002200041186a2900003703002003200041106a2900003703002004200041086a2900003703002001200029000037036841c6b7c700ad4280808080800184100122002900002106200141186a41086a200041086a290000370300200120063703182000102941e0c9c700ad4280808080e001841001220029000021062007200041086a29000037030020012006370388012000102920012005410020081b3602382001200141386aad4280808080c00084100222002900003703980120001029200141d4006a22052001413c6a360200200120014198016a41086a220736024c2001200141386a360250200120014198016a360248200141286a200141c8006a10750240024002400240412010272200450d0020002001290368370000200041186a2002290300370000200041106a2003290300370000200041086a200429030037000020012000ad42808080808004841002220429000037039801200410292005200041206a360200200120003602502001200736024c200120014198016a360248200141386a200141c8006a1075200010292001280230220741206a2202200128024022086a2204417f4c0d01200128023821092001280228210a0240024020040d0041002105410121000c010b200410272200450d01200421050b024002402005410f4d0d00200521030c010b200541017422034110200341104b1b22034100480d03024020050d002003102722000d010c050b20052003460d00200020052003102b2200450d040b20002001290318370000200041086a200141186a41086a2903003700000240024020034170714110460d00200321050c010b200341017422054120200541204b1b22054100480d0320032005460d00200020032005102b2200450d040b2000200129038801370010200041186a20014188016a41086a29030037000002400240200541606a2007490d00200521030c010b2007415f4b0d03200541017422032002200320024b1b22034100480d0320052003460d00200020052003102b2200450d040b200041206a200a200710e4071a02400240200320026b2008490d00200321050c010b20042002490d03200341017422052004200520044b1b22054100480d03024020030d00024020050d00410121000c020b200510272200450d050c010b20032005460d00200020032005102b2200450d040b200020026a2009200810e4071a0240200128023c450d00200910290b0240200128022c450d00200a10290b200141086a2000200410fc012001200128020c41016a410120012802081b3602682004ad4220862000ad84200141e8006aad4280808080c00084100302402005450d00200010290b200141a0016a24000f0b1039000b1038000b1032000b1030000be52907047f017e057f047e037f037e017f230041800f6b22002400200041a0026a41186a4200370300200041a0026a41106a22014200370300200041a0026a41086a22024200370300200042003703a00241c8bec500ad4280808080c00084100122032900002104200041c0026a41086a2205200341086a290000370300200020043703c0022003102920022005290300370300200020002903c0023703a00241a8c1c800ad4280808080b001841001220329000021042005200341086a290000370300200020043703c00220031029200120002903c002220437030020004180026a41086a200229030037030020004180026a41106a200437030020004180026a41186a2005290300370300200020002903a00237038002200041a80a6a20004180026a10ce030240024020002d00a80a4102470d00200041e8086a41186a4200370300200041e8086a41106a22034200370300200041e8086a41086a22054200370300200042003703e80841b3e6ca00ad4280808080e000841001220229000021042005200241086a290000370300200020043703e8082002102941e7e6ca00ad4280808080e00084100122022900002104200041a8046a41086a2206200241086a290000370300200020043703a80420021029200320002903a8042204370300200041a80a6a41086a2005290300370300200041a80a6a41106a2004370300200041a80a6a41186a2006290300370300200020002903e8083703a80a200041b00d6a200041a80a6a10cf030240024020002802b00d22070d0041002108200041003602b004200042043703a8044203210441042107200041a8046a21090c010b200020002902b40d22043702ac04200020073602a8042004a72108200041a8046a210902402004422088a72205450d00200541246c21022007210502400340024020052d00004101470d00200541016a2800002103200541086a28020021062000200541106a2802003602b40d200020063602b00d200341c28289aa04470d00200041a80a6a200041b00d6a10e00220002903a80a22044203520d020b200541246a21052002415c6a2202450d020c000b0b20002903b00a210a200041306a200041b80a6a41e80010e4071a0c010b420321040b200910d30202402008450d00200841246c450d00200710290b20004198016a200041306a41e80010e4071a41002106024020044203510d00200041d0026a20004198016a41e80010e4071a20004180026a41186a2206420037030020004180026a41106a2202420037030020004180026a41086a22034200370300200042003703800241c8bec500ad4280808080c00084220b10012207290000210c200041c0026a41086a2205200741086a2900003703002000200c3703c0022007102920032005290300370300200020002903c0023703800241f8f0c200ad4280808080b00184220d10012207290000210c2005200741086a2900003703002000200c3703c00220071029200220002903c002220c370300200041a8046a41086a22072003290300370300200041a8046a41106a2208200c370300200041a8046a41186a2209200529030037030020002000290380023703a804200041206a200041a8046a10b501024002402000280220450d002000290328500d00200041a8046aad4280808080800484210c0c010b2006420037030020024200370300200342003703002000420037038002200b1001220e290000210c2005200e41086a2900003703002000200c3703c002200e102920032005290300370300200020002903c00237038002200d1001220e290000210c2005200e41086a2900003703002000200c3703c002200e1029200220002903c002370000200241086a220f200529030037000020072003290300370300200820022903003703002009200629030037030020002000290380023703a8042000200a3703a80a200041a8046aad4280808080800484220c200041a80a6aad428080808080018410032006420037030020024200370300200342003703002000420037038002200b1001220e290000210d2005200e41086a2900003703002000200d3703c002200e102920032005290300370300200020002903c0023703800241d983cc00ad4280808080b001841001220e290000210d2005200e41086a2900003703002000200d3703c002200e1029200220002903c002370000200f200529030037000020072003290300370300200820022903003703002009200629030037030020002000290380023703a804200041a80a6a200041a8046a10bf0320002902ac0a210d20002802a80a210e2006420037030020024200370300200342003703002000420037038002200b10012210290000210b2005201041086a2900003703002000200b3703c0022010102920032005290300370300200020002903c0023703800241b8f1c200ad4280808080a0018410012210290000210b2005201041086a2900003703002000200b3703c00220101029200220002903c002370000200f200529030037000020072003290300370300200820022903003703002009200629030037030020002000290380023703a804200041a80a6a200041a8046a10c00320002d00a80a21052009200041c10a6a2900003703002008200041b90a6a2900003703002007200041b10a6a290000370300200020002900a90a3703a804200e4108200e1b21030240024020054101460d00200041c80d6a4200370300200041c00d6a4200370300200041b80d6a4200370300200042003703b00d0c010b200041b00d6a41186a200041a8046a41186a290300370300200041b00d6a41106a200041a8046a41106a290300370300200041b00d6a41086a200041a8046a41086a290300370300200020002903a8043703b00d0b200041e8086a41086a200041b00d6a41086a290300220b370300200041e8086a41106a200041b00d6a41106a2903002211370300200041e8086a41186a200041b00d6a41186a2903002212370300200020002903b00d22133703e808200041a80a6a41086a200d4200200e1b370300200041a80a6a41106a2013370300200041a80a6a41186a200b370300200041c80a6a2011370300200041d00a6a2012370300200020033602ac0a200041003602a80a200041a80a6a10d0030b20004180026a41186a2207420037030020004180026a41106a2208420037030020004180026a41086a22034200370300200042003703800241c8bec500ad4280808080c00084220b10012206290000210d200041c0026a41086a2205200641086a2900003703002000200d3703c0022006102920032005290300370300200020002903c002370380024194f1c200ad4280808080b00184220d1001220629000021112005200641086a290000370300200020113703c00220061029200220002903c002370000200241086a22092005290300370000200041a8046a41086a220e2003290300370300200041a8046a41106a220f2008290300370300200041a8046a41186a2210200729030037030020002000290380023703a804200041106a200041a8046a10b50120002802102114200029031821112007420037030020084200370300200342003703002000420037038002200b1001220629000021122005200641086a290000370300200020123703c0022006102920032005290300370300200020002903c0023703800241d1e8c200ad42808080808001841001220629000021122005200641086a290000370300200020123703c00220061029200220002903c00237000020092005290300370000200e2003290300370300200f20082903003703002010200729030037030020002000290380023703a80420004200200a201142017c420120141b7d22112011200a561b3e02a80a200c200041a80a6aad22114280808080c0008410032007420037030020084200370300200342003703002000420037038002200b1001220629000021122005200641086a290000370300200020123703c0022006102920032005290300370300200020002903c00237038002200d10012206290000210d2005200641086a2900003703002000200d3703c00220061029200220002903c00237000020092005290300370000200e2003290300370300200f20082903003703002010200729030037030020002000290380023703a8042000200a3703a80a200c2011428080808080018410034100210620044200520d002000200a3703b803200041b8036a41086a200041d0026a41e80010e4071a2007420037030020084200370300200342003703002000420037038002200b1001220629000021042005200641086a290000370300200020043703c0022006102920032005290300370300200020002903c0023703800241d983cc00ad4280808080b001841001220629000021042005200641086a290000370300200020043703c00220061029200220002903c00237000020092005290300370000200e2003290300370300200f20082903003703002010200729030037030020002000290380023703a804200041a80a6a200041a8046a10bf0320002802a80a2205410820051b21030240024020002802c003220620002902ac0a420020051b2204422088a74f0d002003200641286c6a2205290000210b200541086a290000210c200541106a290000210d200041e8086a41186a200541186a290000370300200041e8086a41106a200d370300200041e8086a41086a200c3703002000200b3703e808200041a80a6a200041e8086a10d10320002802a80a2105200041a8046a200041a80a6a41047241c40110e4071a20054101460d00200041a8076a200041b00d6a41046a200041a8046a41046a41c00110e40741c00110e4071a200041e8086a200041a8076a41c00110e4071a20004180026a41186a2208420037030020004180026a41106a2209420037030020004180026a41086a22064200370300200042003703800241c8bec500ad4280808080c0008410012207290000210b200041c0026a41086a2205200741086a2900003703002000200b3703c0022007102920062005290300370300200020002903c0023703800241b8f1c200ad4280808080a0018410012207290000210b2005200741086a2900003703002000200b3703c00220071029200220002903c002370000200241086a2005290300370000200041a8046a41086a22052006290300370300200041a8046a41106a22062009290300370300200041a8046a41186a2207200829030037030020002000290380023703a804200041a80a6a200041a8046a10c00320002d00a80a21082007200041c10a6a2900003703002006200041b90a6a2900003703002005200041b10a6a290000370300200020002900a90a3703a8040240024020084101460d00200041b8026a4200370300200041b0026a4200370300200041a8026a4200370300200042003703a0020c010b200041a0026a41186a200041a8046a41186a290300370300200041a0026a41106a200041a8046a41106a290300370300200041a0026a41086a200041a8046a41086a290300370300200020002903a8043703a0020b20004180026a41186a2207420037030020004180026a41106a2208420037030020004180026a41086a22054200370300200042003703800241c8bec500ad4280808080c0008410012209290000210b200041c0026a41086a2206200941086a2900003703002000200b3703c0022009102920052006290300370300200020002903c0023703800241a4f0c200ad4280808080a0018410012209290000210b2006200941086a2900003703002000200b3703c00220091029200220002903c002370000200241086a2006290300370000200041a8046a41086a2005290300370300200041a8046a41106a2008290300370300200041a8046a41186a200729030037030020002000290380023703a8042000200041a8046a10b5012000290308210b20002802002102200041a80a6a41af90cc004104108001200041a80a6a41b390cc00410b200a108401200041a80a6a41be90cc00410d200b420020021b108401200041a80a6a41cb90cc004110200041a0026a4120108301200041b00d6a200041a80a6a41d00110e4071a200041a8046a200041b00d6a41d00110e4071a200041a80a6a200041c4036a200041e8086a200041a8046a10d2034101210620002802a80a4101460d00200041a8046a200041a80a6a41086a41800310e4071a200041a80a6a200041a8046a41800310e4071a200041b00d6a41999fc8004109108001200041b00d6a4180a6cc004100419c90cc004113108301200041b00d6a41a29fc8004106200041c80b6a4120108301200041b00d6a41a89fc8004107200041880d6a4120108301200041e8086a41186a22024200370300200041e8086a41106a22094200370300200041e8086a41086a220e4200370300200042003703e808200041b00d6a4180a6cc004100200041e8086a412010850120072002290300370300200820092903003703002005200e290300370300200020002903e80837038002200041b00d6a108601200e2005290300370300200920082903003703002002200729030037030020002000290380023703e8080c010b410021060b2004a72205450d00200541286c450d00200310290b200041a80a6a41186a200041e8086a41186a290300370300200041a80a6a41106a200041e8086a41106a290300370300200041a80a6a41086a200041e8086a41086a290300370300200020002903e8083703a80a200041a0026a41186a22074200370300200041a0026a41106a22084200370300200041a0026a41086a22024200370300200042003703a00241c8bec500ad4280808080c00084100122032900002104200041c0026a41086a2205200341086a290000370300200020043703c0022003102920022005290300370300200020002903c0023703a00241a8c1c800ad4280808080b001841001220329000021042005200341086a290000370300200020043703c00220031029200120002903c002370000200141086a200529030037000020004180026a41086a200229030037030020004180026a41106a200829030037030020004180026a41186a2007290300370300200020002903a002370380024121410120061b10272205450d010240024020060d00200541003a000042808080801021040c010b200541013a0000200520002903a80a370001200541096a200041b00a6a290300370000200541116a200041b80a6a290300370000200541196a200041c00a6a2903003700004280808080900421040b20004180026aad428080808080048420042005ad841003200510290b200041800f6a24000f0b1039000bfc0403027f017e057f230041d0006b2202240041e0a7c800ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941efa7c800ad4280808080e00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bab0e05047f017e047f017e0f7f230041a00c6b220324002003200236021420032001360210200341186a2002ad4220862001ad841007108b020240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10c80102400240024020032802080d00200328020c2202200328022c220141c8026e2206200620024b1bad42c8027e2207422088a70d052007a72206417f4c0d050240024020060d00410821080c010b200610272208450d050b200641c8026ead210702402002450d002002417f6a21060340024002402001450d00200328022822092d0000210a20032001417f6a220b36022c2003200941016a360228200a41014b0d00410221020240200a0e020200020b024002400240200b0d00410221020c010b20092d0001210a20032001417e6a220b36022c410221022003200941026a36022802400240200a41014b0d0041002101024002400240200a0e020100010b2003200341286a10c80120032802000d02200328022c2003280204220a490d02200a417f4c0d0f02400240200a0d0041002109410121010c010b200a102d2201450d0f200328022c200a490d0220012003280228200a10e4071a200328022c2209200a490d0420032009200a6b36022c20032003280228200a6a360228200a21090b2001450d02200aad4220862009ad84210c200328022c210b0b200ca7210a02400240024002400240200b450d002003280228220d2d000021092003200b417f6a36022c2003200d41016a360228200341f8096a200341286a10e40320032802f809411c460d03200341d0076a200341f8096a41a80210e4071a200328022c220b450d042003280228220e2d0000210d2003200b417f6a220f36022c2003200e41016a360228200d41014b0d0441002102200d0e020201020b2001450d07200a450d070c040b200f4104490d02200e280001210d2003200e41056a3602282003200b417b6a220236022c20024104490d02200e28000521102003200b41776a36022c2003200e41096a36022841012102200d21110b200c422088a72112200341f8096a200341d0076a41a80210e4071a200320032800c9073602c0072003200341c9076a41036a2800003600c3070c060b2001450d04200a450d040c010b200341d0076a10cc012001450d01200a450d010b200110290b201321092014210a20152101410221020c020b200a200941ccafc000104c000b201321092014210a201521010b20034198056a200341f8096a41a80210e4071a200320032800c30736009305200320032802c00736029005024020024102460d00200341f8096a20034198056a41a80210e4071a20032003280093053600d30720032003280290053602d00720012116200a211720122118200921192010211a2011211b20092113200a2114200121150c020b20092113200a2114200121150b410321020b200341e8026a200341f8096a41a80210e4071a200320032800d3073600e302200320032802d0073602e00202400240024020024103460d00200341386a200341e8026a41a80210e4071a200320032800e302360033200320032802e0023602302007422088220ca722012007a7470d02024002400240200141016a220a2001490d00200ca74101742209200a200a2009491bad42c8027e220c422088a70d00200ca7220a4100480d00024020010d00200a0d02410821080c050b200141c8026c2201200a460d04024020010d00200a0d02410821080c050b20082001200a102b2208450d020c040b1032000b200a102722080d020b1030000b02402007422088a72201450d00200141c8026c21022008210103400240200141b4026a2802004102460d000240200141a8026a2802002206450d00200141ac026a280200450d00200610290b200110c2010b200141c8026a2101200241b87d6a22020d000b0b2007a72201450d04200141c8026c450d04200810290c040b2007422088220ca72101200a41c8026ead21070b2008200141c8026c6a200341386a41a80210e407220141c0026a20193a0000200141bc026a201a3602002001201b3602b802200120023602b402200120183602b002200120173602ac02200120163602a802200141c1026a2003280230360000200141c4026a2003280033360000200c422086200742ffffffff0f83844280808080107c21072006450d012006417f6a2106200328022c21010c000b0b20080d010b200341003602d807200342013703d0072003410d36029c052003200341106a360298052003200341d0076a3602e8022003418c0a6a4101360200200342013702fc09200341f4eaca003602f809200320034198056a3602880a200341e8026a41a8a3c800200341f8096a10371a20033502d80742208620033502d007841008024020032802d407450d0020032802d00710290b200041003602000c010b20002007370204200020083602000b2005450d00200410290b200341a00c6a24000f0b1039000b1038000bea1501047f0240024020002802002201411a4b0d0002400240024002400240024002400240024002400240024002400240024002400240024020010e1b00011313131302031304130506130708090a0b0c0d130e0f101311000b200041086a280200417e6a220141074b0d1202400240024002400240024020010e080018010218030405000b200041106a280200450d172000410c6a28020010290f0b200041106a280200450d162000410c6a28020010290f0b200041106a280200450d152000410c6a28020010290f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010290b0240200141106a280200450d002001410c6a28020010290b200141186a2101200241686a22020d000b0b200041106a2802002201450d14200141186c450d14200028020c10290f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d132001410c6c450d13200028020c10290f0b200041106a280200450d122000410c6a28020010290f0b024020002d0004220141034b0d000240024020010e0414001401140b200041186a220128020010c201200128020010290f0b02402000410c6a280200450d00200041086a28020010290b200041246a220128020010c201200128020010290f0b2000410c6a280200450d11200041086a28020010290f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a21010340200110d3020240200141046a2802002203450d00200341246c450d00200128020010290b200141f0006a2101200241907f6a22020d000b0b200041086a2802002201450d10200141f0006c450d10200028020410290f0b0240200041086a2d0000220141174b0d000240024002400240024020010e18151515151515001515151515150115150203151515151504150b200041106a28020041ffffff3f71450d142000410c6a28020010290f0b200041106a28020041ffffff3f71450d132000410c6a28020010290f0b200041146a28020041ffffffff0371450d12200041106a28020010290f0b200041146a2802002201450d11200141246c450d11200041106a28020010290f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010290b200041186a1087020f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010290b200041186a1087020f0b20002802042201450d0e200041086a280200450d0e200110290f0b024020004194026a2802002202450d002000418c026a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b20004190026a2802002201450d0d2001410c6c450d0d200028028c0210290f0b02402000410c6a280200450d00200041086a28020010290b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041186a2802002201450d0c2001410c6c450d0c200028021410290f0b200041086a2d0000416d6a220141034b0d0b024002400240024020010e0400010203000b200041106a280200450d0e2000410c6a28020010290f0b200041106a280200450d0d2000410c6a28020010290f0b200041106a280200450d0c2000410c6a28020010290f0b200041106a280200450d0b2000410c6a28020010290f0b200041086a2d0000417f6a220141024b0d0a02400240024020010e03000102000b200041306a28020041ffffff3f71450d0c2000412c6a28020010290f0b2000410c6a220128020010c201200128020010290f0b200041106a220128020010c201200128020010290f0b200041086a2d0000417f6a220141024b0d0902400240024020010e03000102000b200041306a28020041ffffff3f71450d0b2000412c6a28020010290f0b2000410c6a220128020010c201200128020010290f0b200041106a220128020010c201200128020010290f0b200041086a2d00004101470d08200041106a28020041ffffff3f71450d082000410c6a28020010290f0b20002d00044104470d072000410c6a28020041ffffff3f71450d07200041086a28020010290f0b200041086a2d0000417c6a220141024b0d060240024020010e03000801000b200041306a280200450d072000412c6a28020010290f0b200041306a280200450d062000412c6a28020010290f0b02402000280204220141014b0d00024020010e020700070b0240200041106a2802002201450d00200041086a280200220320014190026c6a210403400240200341d0006a280200450d00200328024c10290b0240200341186a2802002202450d00200328021021012002410474210203400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b0240200341146a28020041ffffffff0071450d00200328021010290b0240200328021c2201450d00200341206a280200450d00200110290b0240200341fc016a2802002201450d00200141c1006c450d0020032802f80110290b20034190026a210120034188026a41003602002003280284022102200341013602840202402003418c026a280200450d00200210290b2001210320012004470d000b0b2000410c6a2802002201450d0620014190026c450d06200028020810290f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d052001410c6c450d05200028020c10290f0b200041086a2d000022014105490d04024020014105470d002000413c6a280200450d05200041386a28020010290f0b200041146a280200450d04200041106a28020010290f0b20002d0004417f6a220141034b0d030240024020010e0400050501000b0240200041106a280200450d002000410c6a28020010290b2000411c6a280200450d04200041186a28020010290f0b02402000410c6a280200450d00200041086a28020010290b200041186a280200450d03200041146a28020010290f0b0240200041086a2d0000220141034b0d00024020010e0404040400040b200041f0006a280200450d03200041ec006a28020010290f0b200041106a280200450d022000410c6a28020010290f0b024020002d0004220141044b0d00024002400240024020010e050600010203060b0240200041106a2802002202450d00200041086a2802002101200241a8026c21020340200110c201200141a8026a2101200241d87d6a22020d000b0b2000410c6a2802002201450d05200141a8026c450d05200028020810290f0b200041086a220128020010c201200128020010290f0b02402000410c6a28020041ffffff3f71450d00200041086a28020010290b200041206a220128020010c201200128020010290f0b2000412c6a28020041ffffff3f71450d02200041286a28020010290c020b2000412c6a28020041ffffff3f71450d01200041286a28020010290f0b0240200041086a2d0000220141034b0d000240024020010e0403000103030b2000410c6a220128020010c201200128020010290f0b2000410c6a220128020010c201200128020010290f0b2000412c6a220128020010c201200128020010290f0b0b833206017f017e017f017e107f017e230041206b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c01020c03040506070c08090a0b0c0d0e0f1011121314151617181900010b4200210341002104024002400240024002400240200141086a2d00000e050001020503000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b200241086a2001410c6a280200220110c30120022903082103200241086a200110c30120034290ce007c2103200241086a21010c020b200141106a2903002103200241086a2001410c6a28020010c301200241086a21010c010b200241086a2001412c6a280200220110c30120022903082103200241086a200110c30120034290ce007c2103200241086a21010b20012d000821040b200041003a0009200020043a0008200020033703000c190b42e0dc2a2103410021040240024002400240024002400240024002400240200141086a2802000e0b0001090203030405060708000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b2001410c6a35020042d00f7e2103410121040c070b4101210442e088b33021030c060b410121044280c0a8ca9a3a21030c050b410121044280b191e40021030c040b200141146a35020042c091fc2f7e2103410121040c030b200141146a3502004280f7ef2f7e2103410121040c020b200141186a35020042d0b28b307e42d0b28b307c2103410121040c010b410121044280ade20421030b200041003a0009200020043a0008200020033703000c180b42c0b2cd3b210342c0f0f50b210502400240024002400240024020012d00040e050005010203000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b42c0f4a4eb0021030c020b4280e59af700210342c09dd81021050c020b4280e59af70021030b4280c2d72f21050b200041003b01082000200320057c3703000c170b200041023b010820004280c7abcb003703000c160b200041003b0108200042003703000c150b42c0b2cd3b21054280bbb021210302400240024002400240200141086a2d00000e050004010203000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b42c09dd81021030c020b4280e59af70021050c010b4280e1eb1721030b200041003b01082000200520037c3703000c140b200041023b0108200042003703000c130b4280cab5ee0121030240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2d00000e19000102030405060708090a0a0a0b0c0d0e15150f1011121314000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b4280e8a49a0221030c130b42c0bda3a90121030c120b4280a7f2a60121030c110b2001410c6a3502002203428089fa007e20034280c2d72f7e7c42004280c2d72f2003501b7c428097e38b037c21030c100b42c0b1a8ff0021030c0f0b200141146a35020042c0fc157e42c0b8cf8d017c21030c0e0b4280adebfe0021030c0d0b4280e4ecc00021030c0c0b428088debe0121030c0b0b4280cbd13021030c0a0b200141146a35020042f02e7e4280cbd1307c21030c090b2001412c6a3502002203428089fa007e20034280c2d72f7e7c42004280c2d72f2003501b7c42c0fede96037c21030c080b4280cbd13021030c070b200141186a35020042c09dd8107e42c0e1d1aa167c21030c060b42c0cbb2f8f40021030c050b4280c7ca940121030c040b200141106a35020042c0b2cd3b7e4280a3c3c7007c21030c030b2001412c6a3502002203428089fa007e20034280c2d72f7e7c42004280c2d72f2003501b7c4280e6daa1037c21030c020b427f427f427f200141dc016a35020042c0fc157e200141e0016a33010042f0b9267e7c417f417f417f417f417f417f417f417f417f417f417f417f417f417f417f200141206a28020022042001412c6a28020022066a220720072004491b2207200141386a28020022086a220920092007491b2209200141c4006a28020022076a220a200a2009491b2209200141d0006a280200220a6a220b200b2009491b2209200141dc006a280200220b6a220c200c2009491b2209200141e8006a280200220c6a220d200d2009491b220d200141f4006a28020022096a220e200e200d491b220d20014180016a280200220e6a220f200f200d491b220d2001418c016a280200220f6a22102010200d491b220d20014198016a28020022106a22112011200d491b220d200141a4016a28020022116a22122012200d491b220d200141b0016a28020022126a22132013200d491b220d200141bc016a28020022136a22142014200d491b220d200141c8016a28020022146a22152015200d491b220d200141d4016a2802006a22152015200d491b220dad22034280b0e32d7e7c200141146a2802002201ad4280a4e8037e7c200342c0f0f50b7e7c428084afdf007c2203417f417f417f417f417f417f417f417f417f417f417f417f417f417f2004417f200620066a221520152006491b6a220620062004491b2204417f2008ad42037e2205a72005422088a71b6a220620062004491b2204417f2007410274200741ffffffff03712007471b6a220620062004491b2204417f200aad42057e2205a72005422088a71b6a220620062004491b2204417f200bad42067e2205a72005422088a71b6a220620062004491b2204417f200cad42077e2205a72005422088a71b6a220620062004491b2204417f2009410374200941ffffffff01712009471b6a220620062004491b2204417f200ead42097e2205a72005422088a71b6a220620062004491b2204417f200fad420a7e2205a72005422088a71b6a220620062004491b2204417f2010ad420b7e2205a72005422088a71b6a220620062004491b2204417f2011ad420c7e2205a72005422088a71b6a220620062004491b2204417f2012ad420d7e2205a72005422088a71b6a220620062004491b2204417f2013ad420e7e2205a72005422088a71b6a220620062004491b2204417f2014ad420f7e2205a72005422088a71b6a220620062004491bad42c0f0f50b7e7c220520052003541b2203200d20016aad4280e1eb177e7c220520052003541b220342c0f4a4eb007c220520052003541b21030c010b427f427f427f200141dc016a35020042c0fc157e200141e0016a33010042f0b9267e7c417f417f417f417f417f417f417f417f417f417f417f417f417f417f417f200141206a28020022042001412c6a28020022066a220720072004491b2207200141386a28020022086a220920092007491b2209200141c4006a28020022076a220a200a2009491b2209200141d0006a280200220a6a220b200b2009491b2209200141dc006a280200220b6a220c200c2009491b2209200141e8006a280200220c6a220d200d2009491b220d200141f4006a28020022096a220e200e200d491b220d20014180016a280200220e6a220f200f200d491b220d2001418c016a280200220f6a22102010200d491b220d20014198016a28020022106a22112011200d491b220d200141a4016a28020022116a22122012200d491b220d200141b0016a28020022126a22132013200d491b220d200141bc016a28020022136a22142014200d491b220d200141c8016a28020022146a22152015200d491b220d200141d4016a2802006a22152015200d491b220dad22034280b0e32d7e7c200141146a2802002201ad4280a4e8037e7c200342c0f0f50b7e7c428084afdf007c2203417f417f417f417f417f417f417f417f417f417f417f417f417f417f2004417f200620066a221520152006491b6a220620062004491b2204417f2008ad42037e2205a72005422088a71b6a220620062004491b2204417f2007410274200741ffffffff03712007471b6a220620062004491b2204417f200aad42057e2205a72005422088a71b6a220620062004491b2204417f200bad42067e2205a72005422088a71b6a220620062004491b2204417f200cad42077e2205a72005422088a71b6a220620062004491b2204417f2009410374200941ffffffff01712009471b6a220620062004491b2204417f200ead42097e2205a72005422088a71b6a220620062004491b2204417f200fad420a7e2205a72005422088a71b6a220620062004491b2204417f2010ad420b7e2205a72005422088a71b6a220620062004491b2204417f2011ad420c7e2205a72005422088a71b6a220620062004491b2204417f2012ad420d7e2205a72005422088a71b6a220620062004491b2204417f2013ad420e7e2205a72005422088a71b6a220620062004491b2204417f2014ad420f7e2205a72005422088a71b6a220620062004491bad42c0f0f50b7e7c220520052003541b2203200d20016aad4280e1eb177e7c220520052003541b220342c0f4a4eb007c220520052003541b21030b200041003b0108200020033703000c120b200041003b0108200042c0a3f5d00342808995ef0220012802041b3703000c110b200041023b0108200042003703000c100b200041003b0108200042003703000c0f0b200041003b01082000200141286a35020042b0e32d7e2001411c6a35020042809fc9007e7c4280f797f3017c3703000c0e0b10eb05000b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2d00000e20000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b200041003b01082000428088debe013703000c2a0b200041003b01082000200141106a35020042f0840e7e42809ac9c6007c3703000c290b200041003b01082000428096acdb013703000c280b200041003b0108200042c08dc9f5013703000c270b200041013b0108200042c082f387013703000c260b200041003b01082000428098f6d3003703000c250b200041003b0108200042e0dc94313703000c240b200041003b0108200042e0dc94313703000c230b200041003b010820004280ae99b5013703000c220b200041003b010820004280bd8c8e013703000c210b200041013b010820004280a5963a3703000c200b200041013b01082000428097d197013703000c1f0b200041003b0108200042c0d6b53f3703000c1e0b200041003b0108200042c0fa9dc3003703000c1d0b200041003b0108200042c0d6b53f3703000c1c0b200041003b0108200042c0b7fe9c333703000c1b0b200041003b0108200042c0c3f0cc323703000c1a0b200041003b0108200042a08df0303703000c190b200041003b01082000200141146a35020042a01f7e42c0dddccd007c3703000c180b200041013b01082000200141146a35020042a01f7e42c0dddccd007c3703000c170b200041003b01082000200141146a35020042b8177e42c0b0fac8007c3703000c160b200041013b01082000200141146a35020042b8177e42c0b0fac8007c3703000c150b200041003b010820002001412c6a35020042b8177e4280e299ce007c3703000c140b200041003b0108200042c0ed86d7013703000c130b200041003b0108200042c0a8aefe003703000c120b200041003b0108200042c0e5b192013703000c110b200041003b010820004280e1f491013703000c100b200041003b010820004280bb96e1333703000c0f0b200041003b0108200042c0d391dc323703000c0e0b200041003b010820004280bebac4013703000c0d0b200041003b010820004280c0a8ca9a3a3703000c0c0b2000200141086a10ec050c0b0b2000200141086a10ec050c0a0b4280a7f2a60121030240024002400240024002400240200141086a2d00000e0700060102030405000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b428092fdfb0021030c040b2001410c6a35020042c0d587097e200141106a350200428089fa007e7c4280e9c9d6017c21030c030b2001410c6a35020042d8f1167e42c0a187f0007c21030c020b42c081c5d1002103024002402001410c6a2802000e03010300010b200141106a35020042f8ab0e7e42c08398c4007c21030c020b4280b4928d0121030c010b42c0b6fc9a014280c0a8ca9a3a20012d00291b21030b200041003b0108200020033703000c090b200041003b010820004280e1eb173703000c080b42c090c1a401210341002104024002400240024002400240024002400240200141086a2d00000e09000801020308040506000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b410121044280ae99b50121030c060b410121044280bcded70021030c050b200141346a35020042a01f7e42c0cbf1c5017c21030c030b200141346a35020042a01f7e4280c2d1ae017c21030c020b4280caacf40021030c010b42a0dcc4a20221030b410021040b200041003a0009200020043a0008200020033703000c070b02400240024020012802040e03000102000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b200041023b01082000428094ebdc033703000c070b200041003b0108200042003703000c060b200041023b0108200042003703000c050b410121044280c2d72f210302400240024002400240200141086a2d00000e0700040202010203000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b41002104428094ebdc0321030c020b410021044280cab5ee0121030c010b410021044280e497d01221030b200041003a0009200020043a0008200020033703000c040b410121044280e497d0122103024002400240024020012d00040e080003010202020202000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b4280ade20421030c010b41002104420021030b200041003a0009200020043a0008200020033703000c030b42c0f7c9fc042103410021040240024002400240200141086a2d00000e050003010302000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b42c0e3de9f0142c0a187f000200141306a2903004201511b42004280c2d72f20012d001d4102461b7c2103410021040c010b410121044280d6c28c0421030b200020043a0009200041003a0008200020033703000c020b4280e59af70021034280e1eb1721050240024002400240200141086a2d00000e0400030102000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b42c097e8b20121030c010b42c097e8b20121034280c2d72f21050b200041003b01082000200320057c3703000c010b0240024002400240024002400240024020012d00040e06000102030405000b2002411c6a41013602002002420137020c20024198e3ca0036020820024104360204200241cce3ca0036020020022002360218200241086a4180a6cc001040000b200141086a280200210442c0c3930721030240200141106a280200220741a8026c2206450d00200421010340200241086a200110c301427f427f200320022903087c220520052003541b220342c0843d7c220520052003541b2103200141a8026a2101200641d87d6a22060d000b0b200741a8026c21014101210603402001450d06200141d87d6a2101200241086a200410c301200441a8026a210420022d00104101460d000c050b0b200241086a200141086a280200220110c30120022903082103200241086a200110c301427f200342c08db7017c220520052003541b210320022d001021060c040b200141106a3502002105200241086a200141206a280200220110c30120022903082103200241086a200110c301427f427f427f200342c0caba157c221620162003541b220320054290a10f7e7c220520052003541b220342c0b2cd3b7c220520052003541b210320022d001021060c030b200141306a35020042c0a9077e4280fd87d1007c21030c010b200141306a35020042a08d067e42c0e6d6ce007c21030b410021060b200041003a0009200020063a0008200020033703000b200241206a24000b862703047f067e047f230041e0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c01020c03040506070c08090a0b0c0d0e0f1011121314151617181900010b200241b0016a200141086a10f8032000411b360200200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c190b200241b0016a200141086a10f90320004100360200200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c180b200241b0016a200141046a10fa0320004101360200200041246a200241d0016a2802003602002000411c6a200241c8016a290300370200200041146a200241c0016a2903003702002000410c6a200241b8016a290300370200200020022903b0013702040c170b20004103360200200041086a200141086a2903003703000c160b02400240024002400240024020012d0004417f6a220341034b0d00200141046a210420030e0401020304010b419cf7ca00412841b8a1cc001033000b200141086a2802002103410121050c030b41022105200241086a41026a200441036a2d00003a0000200241b0016a41086a200141146a290200370300200241c0016a2001411c6a290200370300200241c8016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703b001200141086a2802002103200141286a28020021010c020b200141086a2802002103410321050c010b2002410a6a200441036a2d00003a0000200241b0016a41086a200141146a290200370300200241c0016a2001411c6a290200370300200241c8016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703b001200141086a2802002103200141286a2802002101410421050b200020053a0004200020022f01083b000520004104360200200041086a20033602002000410c6a20022903b001370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a200241b0016a41086a2903003702002000411c6a200241c0016a290300370200200041246a200241c8016a2802003602000c150b02400240024002400240024002400240200141086a22032d0000417f6a220541034b0d0020050e0401020304010b419cf7ca00412841b8a1cc001033000b200241b8016a200341096a290000370300200241c0016a200341116a290000370300200241c8016a200341196a290000370300200220032900013703b001200141386a2903002106200141306a2903002107410121010c030b200241b8016a200341096a290000370300200241c0016a200341116a290000370300200241c8016a200341196a290000370300200220032900013703b001200141c8006a2903002108200141c0006a2903002109200141386a2903002106200141306a2903002107410221010c030b200241b8016a200341096a290000370300200241c0016a200341116a290000370300200241c8016a200341196a290000370300200220032900013703b0012002200341216a2800003602082002200341246a28000036000b200141c8006a3100002108200141c0006a2902002109200141386a2902002106200141306a2902002107200141d8006a290300210a200141d0006a290300210b410321010c030b200241b8016a200341096a290000370300200241c0016a200341116a290000370300200241c8016a200341196a290000370300200220032900013703b001200141386a2903002106200141306a2903002107410421010b0b0b200020022903b0013700092000200228020836002920004105360200200041d8006a200a370300200041d0006a200b370300200041c8006a2008370300200041c0006a2009370300200041386a2006370300200041306a2007370300200041086a20013a00002000412c6a200228000b360000200041116a200241b0016a41086a290300370000200041196a200241c0016a290300370000200041216a200241c8016a2903003700000c140b200241b0016a200141046a10fb03200041063602002000410c6a200241b8016a280200360200200020022903b0013702040c130b200241b0016a200141086a10a302200041086a200241b0016a41900210e4071a200041073602000c120b024002402001280204220c0d00410021030c010b200241b0016a41186a200141286a290000370300200241b0016a41106a200141206a290000370300200241b8016a200141186a290000370300200241b0016a41286a200141386a290000370300200241b0016a41306a200141c0006a290000370300200241b0016a41386a200141c8006a290000370300200241b0016a41c8006a200141d8006a290000370300200241b0016a41d0006a200141e0006a290000370300200241b0016a41d8006a200141e8006a2900003703002002200141106a2900003703b0012002200141306a2900003703d0012002200141d0006a2900003703f001200241b0016a41f8006a20014188016a290000370300200241b0016a41f0006a20014180016a290000370300200241b0016a41e8006a200141f8006a290000370300200241b0016a4198016a200141a8016a290000370300200241b0016a4190016a200141a0016a290000370300200241b0016a4188016a20014198016a2900003703002002200141f0006a29000037039002200220014190016a2900003703b0022001410c6a2802002201417f4c0d130240024020010d0041002105410121030c010b200110272203450d16200121050b0240024020052001490d00200521040c010b200541017422042001200420014b1b22044100480d15024020050d002004102722030d010c180b20052004460d00200320052004102b2203450d170b2003200c200110e4071a200241086a200241b0016a41a00110e4071a0b200020033602042000410c6a2001360200200041086a2004360200200041106a200241086a41a00110e4071a200041093602000c110b2000410a360200200020012802043602040c100b200241b0016a200141086a10fc03200041086a200241b0016a41980210e4071a2000410b3602000c0f0b200241b0016a200141046a10fd03200041046a200241b0016a41e80010e4071a2000410c3602000c0e0b10f403000b200241b0016a200141086a10fe032000410e360200200041386a200241b0016a41306a290300370300200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c0c0b200241b0016a200141086a10ff032000410f360200200041386a200241b0016a41306a290300370300200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c0b0b200241b0016a200141086a10ff0320004110360200200041386a200241b0016a41306a290300370300200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c0a0b200241b0016a200141086a10800420004111360200200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c090b0240024002400240024002400240024020012d0004417f6a220441064b0d00200141046a21034107210520040e0701020304050607010b419cf7ca00412841b8a1cc001033000b200241c8016a200341196a290000370300200241c0016a200341116a290000370300200241b8016a200341096a290000370300200220032900013703b001410121050c050b200241c8016a200341196a290000370300200241c0016a200341116a290000370300200241b8016a200341096a290000370300200220032900013703b001410221050c040b200241b0016a41186a200341196a290000370300200241b0016a41106a200341116a290000370300200241b0016a41086a200341096a290000370300200241086a41086a200341296a290000370300200241086a41106a200341316a290000370300200241086a41186a200341396a290000370300200220032900013703b0012002200341216a290000370308410321050c030b200141106a280200220d41ffffff3f71200d470d0c200d4105742203417f4c0d0c200141086a28020021040240024020030d00410121050c010b200310272205450d0f0b4100210120024100360210200220053602082002200341057636020c200241086a4100200d109e012002280210210e0240200d450d00200d410574210c2002280208200e4105746a210f0340200f20016a2203200420016a2205290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a290000370000200c200141206a2201470d000b200d41057441606a410576200e6a41016a210e0b200241bb016a200e360000200220022903083700b301410421050c020b200241c8016a200341196a290000370300200241c0016a200341116a290000370300200241b8016a200341096a290000370300200220032900013703b001410521050c010b200241c8016a200341196a290000370300200241c0016a200341116a290000370300200241b8016a200341096a290000370300200220032900013703b001410621050b200020053a0004200020022903b00137000520002002290308370025200020022f00ad013b00452000410d6a200241b0016a41086a290300370000200041156a200241b0016a41106a2903003700002000411d6a200241b0016a41186a2903003700002000412d6a200241086a41086a290300370000200041356a200241086a41106a2903003700002000413d6a200241086a41186a290300370000200041c7006a200241af016a2d00003a0000200041123602000c080b200241b0016a200141086a10820420004113360200200041c0006a200241b0016a41386a290300370300200041386a200241b0016a41306a290300370300200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c070b200241b0016a200141046a108304200041046a200241b0016a41a00210e4071a200041143602000c060b200041153602000c050b200241b0016a200141086a10840420004116360200200041c0006a200241b0016a41386a290300370300200041386a200241b0016a41306a290300370300200041306a200241b0016a41286a290300370300200041286a200241b0016a41206a290300370300200041206a200241b0016a41186a290300370300200041186a200241b0016a41106a290300370300200041106a200241b0016a41086a290300370300200041086a20022903b0013703000c040b200241b0016a200141046a108504200041046a200241b0016a41c80010e4071a200041173602000c030b200241b0016a200141086a108604200041086a200241b0016a41f00010e4071a200041183602000c020b4102210c0240024002400240200141086a22032d0000417f6a220f41024b0d0041012105200f0e03030201030b419cf7ca00412841b8a1cc001033000b200141c8006a2903002107200141c0006a2903002106200141386a2903002109200141306a2903002108200141d0006a28020021044103210c0b200241c8016a200341196a290000370300200241c0016a200341116a290000370300200241b8016a200341096a290000370300200220032900013703b001200c21050b200020022903b0013700092000200228000836002920004119360200200041c8006a2007370300200041c0006a2006370300200041386a2009370300200041306a2008370300200041086a20053a0000200041d0006a2004360200200041116a200241b0016a41086a290300370000200041196a200241c0016a290300370000200041216a200241c8016a2903003700002000412c6a2002410b6a2800003600000c010b200241b0016a200141046a10f5032000411a3602002000413c6a200241e8016a280200360200200041346a200241e0016a2903003702002000412c6a200241d8016a290300370200200041246a200241d0016a2903003702002000411c6a200241c8016a290300370200200041146a200241c0016a2903003702002000410c6a200241b8016a290300370200200020022903b0013702040b200241e0036a24000f0b1038000b1032000b1039000b1030000beffa0409047f017e047f027e047f017e087f267e147f230022032104200341e0106b4160712203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c020301040506070801090a0b0c010d0e0f1011121314151617181900020b200341a00e6a41206a200141286a290300370300200341a00e6a41186a200141206a290300370300200341a00e6a41106a200141186a290300370300200341a00e6a41086a200141106a2903003703002003200141086a2903003703a00e200341c0036a41206a200241206a290200370300200341c0036a41186a200241186a290200370300200341c0036a41106a200241106a290200370300200341c0036a41086a200241086a290200370300200320022902003703c0032000200341a00e6a200341c0036a10af05200424000f0b000b410221052001410c6a2802002106200141106a2903002207a721082007422088a7210920022d0001210a20022d0000210b024002400240024002400240024002400240024002400240200141086a280200417f6a0e0a00010203040506070809000b4200210720004200370308200a200b41ff01714100477241ff0171450d0a200041186a410236020020004201370300200424000f0b0240200b41ff01710d00200a41ff01714101470d002008450d09200610290c090b02402008450d00200610290b20004200370308200041186a410236020020004201370300200424000f0b0240200a200b41ff01714100477241ff01710d00410810272203450d632003200737000041e8f2cb00ad4280808080a001842003ad42808080808001841003200310290c080b20004200370308200041186a410236020020004201370300200424000f0b0240200a200b41ff01714100477241ff0171450d000c83010b200341a00e6a2007428080808070832006ad220c841013108b0220032802a00e2202450d810120032802a40e21012003200341a80e6a2802003602dc0b200320023602d80b200341186a200341d80b6a10c80120032802180d800120032802dc0b2209200328021c220b490d8001200b417f4c0d6202400240200b0d00410021094101210a0c010b200b102d220a450d62200a20032802d80b2205200b10e4071a20032009200b6b3602dc0b20032005200b6a3602d80b200b21090b200a450d8001200341106a200341d80b6a10c801200bad4220862009ad84220da7210920032802100d7e20032802dc0b220b20032802142205490d7e2005417f4c0d620240024020050d00410021054101210e0c010b2005102d220e450d62200e20032802d80b220f200510e4071a2003200b20056b220b3602dc0b2003200f20056a3602d80b0b200e450d7e02400240024002400240200b4104490d00200320032802d80b220f41046a3602d80b2003200b417c6a22103602dc0b20104104490d012003200f41086a3602d80b200f28000421112003200b41786a22103602dc0b20104104490d032003200b41746a3602dc0b2003200f410c6a3602d80b200341086a200341d80b6a10c8012003280208450d020c82010b02402005450d00200e10290b20090d83010c84010b02402005450d00200e10290b20090d82010c83010b200328020c220f20032802dc0b410c6e220b200b200f4b1bad420c7e2212422088a70d642012a72210417f4c0d640240024020100d00410421130c010b201010272213450d640b4100210b200341003602c803200320133602c00320032010410c6e3602c40302400240200f450d000340200341b00a6a200341d80b6a10ab0420032d00b00a4101460d0220032802dc0b22104104490d0220032900b10a211220032802d80b2214280000211520032010417c6a3602dc0b2003201441046a3602d80b0240200b20032802c403470d00200341c0036a200b4101109d0120032802c003211320032802c803210b0b2013200b410c6c6a22102015360208201020123702002003200b41016a220b3602c803200f417f6a220f0d000b0b2013450d800120032902c403a7210f20032802dc0b41044f0d020240200f450d00200f410c6c450d00201310290b02402005450d00200e10290b2009450d83010c82010b20032802c4032203450d7f2003410c6c450d7f201310290c7f0b02402005450d00200e10290b20090d80010c81010b200d422088a7211002402001450d00200210290b410f21014197e5ca0021024100210b20104108470d7c0240200a41aca0c500460d00200a29000042f0deb1db968cd9b7f400520d7d0b024020110d00411a210141fde4ca0021024101210b0c7d0b02402009450d00200a10290b02402005450d00200e10290b0240200f450d00200f410c6c450d00201310290b41f2f2cb00ad4280808080d00084200742808080807083200c841003200341c8036a41023a0000200341003a00c003200341c0036a10cb012008450d06200610290c060b0240200a200b41ff01714100477241ff01710d0041f2f2cb00ad4280808080d000842007428080808070832006ad841003200341c8036a41023a0000200341003a00c003200341c0036a10cb012008450d06200610290c060b02402008450d00200610290b20004200370308200041186a410236020020004201370300200424000f0b200a200b41ff01714100477241ff01710d1d0240024020064101460d0041f7f2cb00ad4280808080d0018410040c010b410410272202450d6e20022008360000200241044108102b2202450d6e2002200936000441f7f2cb00ad4280808080d001842002ad42808080808001841003200210290b200341cc036a2009360200200341c8036a2008360200200320063602c403200341043a00c003200341c0036a10d3030c040b0240200a200b41ff01714100477241ff01710d000240200941186c2203450d00200620036a2102200621030340200341086a350200422086200335020084200341146a3502004220862003410c6a350200841003200341186a22032002470d000b0b02402009450d00200941186c21022006210303400240200341046a280200450d00200328020010290b0240200341106a280200450d002003410c6a28020010290b200341186a2103200241686a22020d000b0b2008450d04200841186c450d04200610290c040b02402009450d00200941186c21022006210303400240200341046a280200450d00200328020010290b0240200341106a280200450d002003410c6a28020010290b200341186a2103200241686a22020d000b0b02402008450d00200841186c450d00200610290b20004200370308200041186a410236020020004201370300200424000f0b0240200a200b41ff01714100477241ff01710d0002402009410c6c2203450d00200620036a2102200621030340200341086a35020042208620033502008410042003410c6a22032002470d000b0b02402009450d002009410c6c21022006210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b2008450d032008410c6c450d03200610290c030b02402009450d002009410c6c21022006210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b02402008450d002008410c6c450d00200610290b20004200370308200041186a410236020020004201370300200424000f0b0240200a200b41ff01714100477241ff01710d002007428080808070832006ad8410062008450d02200610290c020b02402008450d00200610290b20004200370308200041186a410236020020004201370300200424000f0b2002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f010021060240200b41ff0171450d00200320073702b403200320013a00b303200320083a00b203200320063b01b0030c750b200241156a2d0000210b200241146a2d00002109200241126a2f01002105200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021142002410c6a2d000021152002410a6a2f01002113200241096a2d00002111200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a200320073703b00341012102200a41ff01714101470d74200320073703b80e200320013a00b70e200320083a00b60e200320063b01b40e2003200b3a00b30e200320093a00b20e200320053b01b00e2003200e3a00af0e2003200f3a00ae0e200320103b01ac0e200320143a00ab0e200320153a00aa0e200320133b01a80e200320113a00a70e200320163a00a60e200320173b01a40e200320183a00a30e200320193a00a20e2003201a3b01a00e200341b00a6a200341a00e6a10a802200341c0036a20032802b00a220120032802b80a10a902420021074200210c4200210d420021124200211b4200211c4200211d4200211e024020032903c0034201520d0020032d008c04452102200341d0036a290300211e200341e0036a290300210c200341d8036a2903002107200341f0036a2903002112200341e8036a290300210d20034180046a290300211c200341f8036a290300211b20032903c803211d0b024020032802b40a450d00200110290b024020020d00410f210b41bee4ca002101418080102103410321020c760b0240200d200784201b84201d842012200c84201c84201e8484500d004113210b41cde4ca0021014180800c2103410321020c760b200341c0036a41186a200341a00e6a41186a290300370300200341c0036a41106a200341a00e6a41106a290300370300200341c0036a41086a200341a00e6a41086a290300370300200320032903a00e3703c003200341b00a6a200341c0036a10ca0320033502b80a42208620032802b00a2202ad84100420032802b40a450d00200210290b42002107200042003703080b20002007370300200424000f0b200141186a2802002106200141146a280200210e200141106a28020021092001410c6a280200210a200141086a280200210820022d0001210b20022d0000210220012d000521050240024002400240024020012d00040e050001020304000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b41002101200b200241ff01714100477241ff01710d1a200341a00e6a200641a80210e4071a0240200a4101470d002009410047200e41014b712101200e417f6a21020b200341c0036a200341a00e6a41a80210e4071a20034180066a20053a0000200341fc056a2002360200200320093602f805200320013602f40541002102200341003602e8052008200341c0036a10ca01200341c0036a200810c00120032802c803210b20032802c0032101200341dc0b6a41003a0000200341003602d80b200341286a2001200b200341d80b6a4105410010c7010240024020032802280d000c010b2003200328022c2202410520024105491b3602b40a2003200341d80b6a3602b00a200341206a200341b00a6a10c8012003280224417f6a210b20032802204521020b024020032802c403450d00200110290b200341c8036a2008360200200341003602c403200341cc036a200b410020021b360200200341013a00c003200341c0036a10cb0120061029420021070c730b418284042101200b200241ff01714100477241ff01710d1a200341b00a6a200810c001200341c0036a20032802b00a220920032802b80a220510c10120032802c0032202410820021b2106024002400240200a20032902c403420020021b221b422088a7220b4f0d002006200a41c8026c6a22010d010b200341023602b40e20032903b80e210d20032903a80e210c20032903a00e211220032903b00e21070c010b200341023602d403200141186a290300211f2006200a41c8026c6a22022903a002211220012903102120200129030821212001290300212220032903d803211c20032903c803210d20032903d003210c200220032903c0033703a002200241b0026a220129030021072001200c370300200241a8026a2201290300210c2001200d370300200241b8026a2201290300210d2001201c370300200320123703a00e2003200d3703b80e200320073703b00e2003200c3703a80e200229038002211d20022903e001212320022903c001212420022903a0012125200229038001212620022903602127200229034021282002290320212920024198026a290300212a20024190026a290300212b20024188026a290300211e200241f8016a290300212c200241f0016a290300212d200241e8016a290300212e200241d8016a290300212f200241d0016a2903002130200241c8016a2903002131200241b8016a2903002132200241b0016a2903002133200241a8016a290300213420024198016a290300213520024190016a290300213620024188016a2903002137200241f8006a2903002138200241f0006a2903002139200241e8006a290300213a200241d8006a290300213b200241d0006a290300213c200241c8006a290300213d200241386a290300213e200241306a290300213f200241286a2903002140200241c0026a290300211c0b0240024020060d002005ad4220862009ad8410040c010b200341c0036a2006200b10e2022005ad4220862009ad8420033502c80342208620032802c0032202ad841003024020032802c403450d00200210290b0240200b450d00200b41c8026c21012006210203400240200241b4026a2802004102460d000240200241a8026a280200220b450d00200241ac026a280200450d00200b10290b200210c2010b200241c8026a2102200141b87d6a22010d000b0b201ba72202450d00200241c8026c450d00200610290b024020032802b40a450d00200910290b4183840421012007422088a74102460d1a200341e8056a200c370300200341e0056a2012370300200341c8056a201e370300200341c0056a201d370300200341a8056a202e370300200341a0056a202337030020034188056a203137030020034180056a2024370300200341e8046a2034370300200341e0046a2025370300200341c8046a2037370300200341c0046a2026370300200341a8046a203a370300200341a0046a202737030020034188046a203d37030020034180046a2028370300200341e8036a2040370300200341e0036a2029370300200341f0056a22022007370300200341d0056a202b370300200341b0056a202d37030020034190056a2030370300200341f0046a2033370300200341d0046a2036370300200341b0046a203937030020034190046a203c370300200341f0036a203f370300200341f8056a200d370300200341d8056a202a370300200341b8056a202c37030020034198056a202f370300200341f8046a2032370300200341d8046a2035370300200341b8046a203837030020034198046a203b370300200341f8036a203e370300200341d8036a201f370300200320223703c0032003201c37038006200320213703c803200320203703d0030240200ca7450d00200341a80e6a2002280200360200200320032903e8053703a00e200341b00a6a200341a00e6a10b00520033502b80a42208620032802b00a2202ad84100420032802b40a450d00200210290b200341ac0e6a200a360200200341a80e6a2008360200200341013602a40e200341013a00a00e200341a00e6a10cb01200341c0036a10cc01420021070c720b200141246a280200210f41002110024002400240200b200241ff01714100477241ff01710d002001411c6a2902002107200320093602b80a2003200a3602b40a200320083602b00a200341c0036a200f41a80210e4071a200341a00e6a200341b00a6a200e20062007a72007422088a72005200341c0036a10dc0420032802a00e4101460d01200f1029420021070c740b200f10cc01200f1029410221030240200a0d000c020b200810290c010b200341a80e6a290300210c20032802a40e2103200f102942002107200341ff01714104460d72200341807e7121100b2000411c6a200c370200200041186a2010200341ff0171723602000c700b02400240200b200241ff01714100477241ff01710d00200320093602c8032003200a3602c403200320083602c003200341a00e6a200341c0036a10b1054200210720032d00a00e22024104460d7220032f00a10e20032d00a30e41107472210120032902a40e21070c010b410221020240200a450d00200810290b0b2000411c6a2007370200200041186a20014108742002723602000c6f0b0240024020022d00000d0020022d000141ff01714102470d00200141086a2903002107200341800e6a41186a220a4200370300200341800e6a41106a22024200370300200341800e6a41086a22014200370300200342003703800e41ccbec500ad4280808080900184220c1001220b290000210d200b2900082112200b1029200120123703002003200d3703800e41ac84cc00ad428080808090018410012208290000210d20034190066a41086a220b200841086a2900003703002003200d37039006200810292002200329039006220d370300200341b0066a41086a22062001290300370300200341b0066a41106a2209200d370300200341b0066a41186a2205200b290300370300200320032903800e3703b006200341c0006a200341b0066a41204180a6cc004100410010c70120032802404101460d1a200a42003703002002420037030020014200370300200342003703800e200c10012208290000210c2008290008210d200810292001200d3703002003200c3703800e41aafac400ad42808080803084220c10012208290000210d200b200841086a2900003703002003200d37039006200810292002200329039006370000200241086a200b29030037000020062001290300370300200920022903003703002005200a290300370300200320032903800e3703b006200341306a200341b0066a10b5012003290338220d42b8177c2007580d01200d500d012003280230450d0141cd9bc50041ce0041b8a1cc001033000b20004200370308200041186a410236020020004201370300200424000f0b200341800e6a41186a220b4200370300200341800e6a41106a220a4200370300200341800e6a41086a22014200370300200342003703800e41ccbec500ad4280808080900184220d1001220829000021122008290008211b200810292001201b370300200320123703800e200c10012206290000210c20034190066a41086a2208200641086a2900003703002003200c37039006200610292002200329039006370000200241086a22092008290300370000200341b0066a41086a22052001290300370300200341b0066a41106a220e200a290300370300200341b0066a41186a220f200b290300370300200320032903800e3703b006200320073703c003200341b0066aad42808080808004842207200341c0036aad42808080808001841003200b4200370300200a420037030020014200370300200342003703800e200d10012206290000210c2006290008210d200610292001200d3703002003200c3703800e41ac84cc00ad428080808090018410012206290000210c2008200641086a2900003703002003200c370390062006102920022003290390063700002009200829030037000020052001290300370300200e200a290300370300200f200b290300370300200320032903800e3703b006200341013a00b0032007200341b0036aad4280808080108410032000420037030820004200370300200424000f0b200141156a29000021072001410d6a290000210c2002411a6a290100211b200241196a2d00002108200241186a2d00002106200241166a2f01002109200241156a2d00002105200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021142002410e6a2f010021152002410d6a2d000021132002410c6a2d000021112002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d00002141200241026a2f01002142200141286a28020021432001411d6a290000210d200141056a2900002212421888a7210a20022d0001210b20022d000021020240024002400240024020012d00040e050001020304000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b200241ff01710d1b200b41ff01714101470d1b2003201b3703f00b200320083a00ef0b200320063a00ee0b200320093b01ec0b200320053a00eb0b2003200e3a00ea0b2003200f3b01e80b200320103a00e70b200320143a00e60b200320153b01e40b200320133a00e30b200320113a00e20b200320163b01e00b200320173a00df0b200320183a00de0b200320193b01dc0b2003201a3a00db0b200320413a00da0b200320423b01d80b200341f0076a200a108005200341c0036a20032802f007220e20032802f807220f10b205200341a00e6a41086a2202200341c0036a41106a290300370300200341a00e6a41106a2201200341c0036a41186a290300370300200341a00e6a41186a220b200341e0036a290300370300200320032903c8033703a00e024020032903c0034201510d00200341b00a6a41086a200341d80b6a41086a290300370300200341b00a6a41106a200341d80b6a41106a290300370300200341b00a6a41186a200341d80b6a41186a290300370300200320032903d80b3703b00a200342003703980920034280d0dbc3f402370390092003200341d80b6a3602e8022003200341d80b6a3602d0062003200341d0066a3602c8032003200341e8026a3602c403200320034190096a3602c003200341a00e6a200341d80b6a200341c0036a108e04024020032802a00e4101470d00200341ac0e6a2802002101200341a80e6a280200210b20032d00a70e210820032d00a60e210620032d00a50e210920032d00a40e21100c6e0b410421100240200341a00e6a41086a2903004201510d000c6e0b200341a00e6a41106a290300210720032802d0062102200341f8036a200341a00e6a41186a290300370300200341f0036a2007370300200341c0036a41086a41003a0000200341c9036a2002290000370000200341d1036a200241086a290000370000200341d9036a200241106a290000370000200341e1036a200241186a290000370000200341033a00c003200341c0036a10cb010c6d0b200341b00a6a41186a200b290300370300200341b00a6a41106a2001290300370300200341b00a6a41086a2002290300370300200320032903a00e3703b00a4105210941fbf7c400210b410221064103210241002105410521010c6d0b200341b00a6a41106a2007370300200320123703b00a2003200d3703c80a2003200c3703b80a0240200241ff01710d00200b41ff01714101470d002003201b3703b80e200320083a00b70e200320063a00b60e200320093b01b40e200320053a00b30e2003200e3a00b20e2003200f3b01b00e200320103a00af0e200320143a00ae0e200320153b01ac0e200320133a00ab0e200320113a00aa0e200320163b01a80e200320173a00a70e200320183a00a60e200320193b01a40e2003201a3a00a30e200320413a00a20e200320423b01a00e0240200341a00e6a200341b00a6a412010e7070d0041002101410321024105210b410b210a41f0f7c4002108410321060c6c0b20034190096a2043108005200341c0036a2003280290092209200328029809220510b205410321024105210b41002101024020032903c0034201510d004188f8c4002108410b210a410021060c6b0b200341f0036a290300210c200341e8036a290300210d200341d0036a220a2903002112200341c0036a41206a290300210720032903c803211b200a200341d8036a290300370300200320073703d8032003201b3703c003200320123703c803200341c0036a200341a00e6a412010e7070d1c200341d80b6a200341a00e6a200341b00a6a200d200c410110e903200341d80b6a41086a29030021120240024020032802d80b4101460d004200200c200341d80b6a41106a2903007d200d201254ad7d2207200d20127d2212200d562007200c562007200c511b22021b210c4200201220021b210d200341b00a6a41106a290300211b20032903b80a211c20032903b00a211d20032903c80a2107420121124100210b41002106410021010c010b20032802dc0b22024118762101200241107621062002410876210b2012422088a7210a2012a72108200241ff01714104470d6b420021120b200341f0036a200c370300200341e8036a200d370300200341e0036a2007370300200320123703c003200341d8036a201b3703002003201d3703c8032003201c3703d0030240024020124201510d002005ad4220862009ad8410040c010b200320053602dc0b200320093602d80b200341c8036a200341d80b6a10b3050b410421020c6a0b4100210b4102210241002106410021010c6a0b0240200241ff01710d00200b41ff01714101470d002003201b3703f00b200320083a00ef0b200320063a00ee0b200320093b01ec0b200320053a00eb0b2003200e3a00ea0b2003200f3b01e80b200320103a00e70b200320143a00e60b200320153b01e40b200320133a00e30b200320113a00e20b200320163b01e00b200320173a00df0b200320183a00de0b200320193b01dc0b2003201a3a00db0b200320413a00da0b200320423b01d80b200341f0076a200a108005200341c0036a20032802f007220620032802f807220b10b2054103210241002101024020032903c0034201510d004188f8c400210b410b21080c680b200341f0036a2903002112200341e8036a290300211b200341c0036a41106a2903002107200341c0036a41206a290300210c20032903c803210d200341b00a6a41106a200341d8036a2903003703002003200c3703c80a2003200d3703b00a200320073703b80a200341b00a6a200341d80b6a412010e7070d1c2003201b3703900920032012370398090240201b201284500d002003200341d80b6a3602d006200341a00e6a200341d80b6a20034190096a200341d0066a10ea0320032903a00e4201520d0020032903a80e2107200341f8036a200341a00e6a41106a290300370300200341f0036a2007370300200341c0036a41086a41003a0000200341c9036a20032903d80b370000200341d1036a200341d80b6a41086a290300370000200341d9036a200341d80b6a41106a290300370000200341e1036a200341f00b6a290300370000200341033a00c003200341c0036a10cb010b200bad4220862006ad841004410421020c670b41002101410221020c670b200b200241ff01714100477241ff01710d1b20034190096a2043108005200341c0036a2003280290092202200328029809220610b205200341f0036a2101200341e8036a210b200341d8036a210a200341e0036a2108024020032903c0034201520d002001290300211b200b290300211c200341c0036a41106a290300211d2008290300211e20032903c803212b200341b00a6a41106a200a2903003703002003201e3703c80a2003202b3703b00a2003201d3703b80a2003201c3703d80b2003201b3703e00b201c201b84500d002003200341b00a6a3602f007200341a00e6a200341b00a6a200341d80b6a200341f0076a10ea0320032903a00e4201520d0020032903a80e211b200341f8036a200341a00e6a41106a290300370300200341f0036a201b370300200341c0036a41086a41003a0000200341c9036a20032903b00a370000200341d1036a200341b00a6a41086a290300370000200341d9036a200341b00a6a41106a290300370000200341e1036a200341c80a6a290300370000200341033a00c003200341c0036a10cb010b20014200370300200b42003703002008200d370300200a2007370300200320123703c803200342013703c0032003200c3703d003200320063602a40e200320023602a00e200341c8036a200341a00e6a10b3050240200328029409450d00200210290b200341cd036a200c370000200341e8036a2043360200200341dd036a200d370000200341d5036a2007370000200320123700c503200341003a00c403200341023a00c003200341c0036a10cb012000420037030820004200370300200424000f0b200141216a2900002107200141206a2d000021082001411d6a2f000021062001411c6a2d00002109200141196a2f00002105200141186a2d0000210e200141156a2f0000210f200141146a2d00002110200141116a2f00002114200141106a2d000021152001410d6a2f000021132001410c6a2d00002111200141096a2f00002116200141086a2d0000210b20012d001f211720012d001b211820012d0017211920012d0013211a20012d000f214120012d000b214220032001412c6a2800003600cb0d200320012800293602c80d200141c8006a290300211b200141c0006a2903002112200141386a290300210c200141306a290300210d2002411a6a290100211c200241196a2d00002143200241186a2d00002144200241166a2f01002145200241156a2d00002146200241146a2d00002147200241126a2f01002148200241116a2d00002149200241106a2d0000214a2002410e6a2f0100214b2002410d6a2d0000214c2002410c6a2d0000214d2002410a6a2f0100214e200241096a2d0000214f200241086a2d00002150200241066a2f01002151200241056a2d00002152200241046a2d00002153200241026a2f0100215420022d0001210a20022d0000210202400240024002400240200b0e050001020304000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b200320073703a00d200320083a009f0d200320173a009e0d200320063b019c0d200320093a009b0d200320183a009a0d200320053b01980d2003200e3a00970d200320193a00960d2003200f3b01940d200320103a00930d2003201a3a00920d200320143b01900d200320153a008f0d200320413a008e0d200320133b018c0d200320113a008b0d200320423a008a0d200320163b01880d024002400240200241ff01710d00200a41ff01714101470d002003201c3703b80e200320433a00b70e200320443a00b60e200320453b01b40e200320463a00b30e200320473a00b20e200320483b01b00e200320493a00af0e2003204a3a00ae0e2003204b3b01ac0e2003204c3a00ab0e2003204d3a00aa0e2003204e3b01a80e2003204f3a00a70e200320503a00a60e200320513b01a40e200320523a00a30e200320533a00a20e200320543b01a00e200341c0036a41186a200341880d6a41186a290300370300200341c0036a41106a200341880d6a41106a290300370300200341c0036a41086a200341880d6a41086a290300370300200320032903880d3703c003200341b00a6a200341a00e6a200341c0036a200d200c410110e00320032d00b00a22024104460d0220032f00b10a20032d00b30a41107472210120032902b40a21070c010b410221020b200042003703082000411c6a2007370200200041186a200141087420027236020020004201370300200424000f0b2000420037030820004200370300200424000f0b200320073703f00d200320083a00ef0d200320173a00ee0d200320063b01ec0d200320093a00eb0d200320183a00ea0d200320053b01e80d2003200e3a00e70d200320193a00e60d2003200f3b01e40d200320103a00e30d2003201a3a00e20d200320143b01e00d200320153a00df0d200320413a00de0d200320133b01dc0d200320113a00db0d200320423a00da0d200320163b01d80d200a200241ff01714100477241ff01710d1e200341d0066a41186a200341d80d6a41186a290300370300200341d0066a41106a200341d80d6a41106a290300370300200341d0066a41086a200341d80d6a41086a290300370300200320032903d80d3703d0064200211d20034200201b2012200d7c22074280c8afa025544100201b200c7c2007201254ad7c501b22021b221b3703f00220034200201220021b22123703e8022003200341d0066a3602f80c200341880d6a200341d0066a10a802200341d80b6a20032802880d220b20032802900d220a10a90220032903d80b212b200342003703d80b4200200c20021b21074200200d20021b210c200341a00c6a280200210820032d00a40c210602400240202b4201510d00200341f0076a41306a4200370300200341f0076a41286a4200370300200341f0076a41206a4200370300200341f0076a41186a4200370300200341f0076a41106a4200370300200341f0076a41086a4200370300200342003703f0074200211e4200211c4200210d420021240c010b200341900c6a290300212a200341d80b6a41306a2903002123200341d80b6a41206a290300211e200341d80b6a41186a290300211d200341980c6a290300212420032903e80b210d20032903e00b211c200341f0076a41206a200341d80b6a41286a290300370300200341f0076a41286a2023370300200341f0076a41306a202a370300200341f0076a41106a201d3703002003201e370388082003201c3703f0072003200d3703f8070b200c201c562007200d562007200d5122021b0d1d200c201c542007200d5420021b450d64200341800e6a41186a220e4200370300200341800e6a41106a22014200370300200341800e6a41086a22024200370300200342003703800e41dcbec500ad4280808080800184221210012209290000211b2009290008212a200910292002202a3703002003201b3703800e419fe3c200ad4280808080d00184221b10012205290000212a20034190066a41086a2209200541086a2900003703002003202a37039006200510292001200329039006222a370300200341b0066a41086a220f2002290300370300200341b0066a41106a2210202a370300200341b0066a41186a22142009290300370300200320032903800e3703b00620034190016a200341b0066a412010e30120034190016a41106a290300212a20032903980121232003280290012105200e42003703002001420037030020024200370300200342003703800e20121001220e2900002112200e290008212e200e10292002202e370300200320123703800e201b1001220e29000021122009200e41086a2900003703002003201237039006200e102920012003290390062212370300200f20022903003703002010201237030020142009290300370300200320032903800e3703b00620034200202a420020051b2212201c200c54ad2007200d7d7c7c2023420020051b221b201c200c7d222354ad7d222a201b20237d2223201b56202a201256202a2012511b22021b3703c80320034200202320021b3703c003200341c0036a2102200341b0066a21010c630b200141d8006a290300211c200141d0006a290300211d200341af066a201b3c00002003419f066a200c370000200320123700a7062003200d37009706200320032800cb0d36009306200320032802c80d36029006024002400240200a200241ff01714100477241ff01710d00200320073703b80e200320083a00b70e200320173a00b60e200320063b01b40e200320093a00b30e200320183a00b20e200320053b01b00e2003200e3a00af0e200320193a00ae0e2003200f3b01ac0e200320103a00ab0e2003201a3a00aa0e200320143b01a80e200320153a00a70e200320413a00a60e200320133b01a40e200320113a00a30e200320423a00a20e200320163b01a00e200341c0036a41186a20034190066a41186a290300370300200341c0036a41106a20034190066a41106a290300370300200341c0036a41086a20034190066a41086a29030037030020032003290390063703c003200341b00a6a200341a00e6a200341c0036a201d201c410110e00320032d00b00a22024104460d0220032f00b10a20032d00b30a41107472210120032902b40a21070c010b410221020b200042003703082000411c6a2007370200200041186a200141087420027236020020004201370300200424000f0b2000420037030820004200370300200424000f0b200320073703c806200320083a00c706200320173a00c606200320063b01c406200320093a00c306200320183a00c206200320053b01c0062003200e3a00bf06200320193a00be062003200f3b01bc06200320103a00bb062003201a3a00ba06200320143b01b806200320153a00b706200320413a00b606200320133b01b406200320113a00b306200320423a00b206200320163b01b006024002400240200241ff01710d00200a41ff01714101470d002003201c3703b80e200320433a00b70e200320443a00b60e200320453b01b40e200320463a00b30e200320473a00b20e200320483b01b00e200320493a00af0e2003204a3a00ae0e2003204b3b01ac0e2003204c3a00ab0e2003204d3a00aa0e2003204e3b01a80e2003204f3a00a70e200320503a00a60e200320513b01a40e200320523a00a30e200320533a00a20e200320543b01a00e200341c0036a41186a200341b0066a41186a290300370300200341c0036a41106a200341b0066a41106a290300370300200341c0036a41086a200341b0066a41086a290300370300200320032903b0063703c003200341b00a6a200341a00e6a200341c0036a200d200c410010e00320032d00b00a22024104460d0220032f00b10a20032d00b30a41107472210120032902b40a21070c010b410221020b200042003703082000411c6a2007370200200041186a200141087420027236020020004201370300200424000f0b2000420037030820004200370300200424000f0b2001410c6a2802002106200141086a28020021052001280204210f4102210b02400240024020022d00000d0020022d000141ff01714102470d002006410a4b0d01200341b0066a41186a220a4200370300200341b0066a41106a22084200370300200341b0066a41086a22024200370300200342003703b00641e4bec500ad4280808080a00184220710012201290000210c2001290008210d200110292002200d3703002003200c3703b0064198b7c400ad4280808080c00184221210012201290008210c2001290000210d2001102920034190066a41106a220e200d37030020034190066a41186a2210200c37030020034190066a41086a22012002290300370300200320032903b0063703900620034190066a10b201220941ff01714102460d024103210b2009410171450d020b410121144110210e41d59fc40021152006450d5f0c5e0b410221144103210b410d210e41c89fc40021150c5d0b200a42003703002008420037030020024200370300200342003703b00620071001220b290000210c200b290008210d200b10292002200d3703002003200c3703b00620121001220b290008210c200b290000210d200b1029200e200d3703002010200c37030020012002290300370300200320032903b00637039006200341013a00b00320034190066aad4280808080800484221c200341b0036aad428080808010841003200341800e6a41186a220e4200370300200341800e6a41106a22184200370300200341800e6a41086a220b4200370300200342003703800e41b3e6ca00ad4280808080e0008410012209290000210c200b200941086a2900003703002003200c3703800e2009102941c9e6ca00ad4280808080e0008410012209290000210c2001200941086a2900003703002003200c37039006200910292018200329039006220c3703002002200b2903003703002008200c370300200a2001290300370300200320032903800e3703b006200341b0016a200341b0066a412010fc0120032802b401211020032802b0012114200e420037030020184200370300200b4200370300200342003703800e2007100122092900002107200b200941086a290000370300200320073703800e20091029418cb2c400ad4280808080e000841001220929000021072001200941086a290000370300200320073703900620091029201820032903900622073703002002200b29030037030020082007370300200a2001290300370300200320032903800e3703b006200341c0036a200341b0066a10ba010240024020032802c00322110d00200341003602980920034204370390094104211141002101410021020c010b200320032902c40322073702940920032011360290092007422088a721012007a721020b2010410020141b210b024020012002470d0020034190096a20014101109f01200328029009211120032802980921010b2011200141c4006c6a220241003a000020024101360230200241013602142002200b360204200220032f01d0063b0001200241036a200341d0066a41026a2d00003a00002003200141016a221336029809200f200641f0006c22026a2144024020060d00200f210a0c5b0b200f41f4006a2108200241907f6a2109200341c0036a41106a2146200341c0036a41086a214541b3e6ca00ad4280808080e00084211b200f210a0340200a2802042116200a280200210b200341c0036a200a41086a41e80010e4071a200a41f0006a210a2016450d5b200341a00e6a200341c0036a41e80010e4071a200320163602c4032003200b3602c0032045200341a00e6a41e80010e4071a200341800e6a41186a22194200370300200341800e6a41106a221a4200370300200341800e6a41086a22174200370300200342003703800e201b1001220229000021072017200241086a290000370300200320073703800e2002102941c9e6ca00ad4280808080e0008410012202290000210720034190066a41086a2201200241086a2900003703002003200737039006200210292018200329039006370000201841086a2001290300370000200341b0066a41086a22412017290300370300200341b0066a41106a2242201a290300370300200341b0066a41186a22432019290300370300200320032903800e3703b006200341a8016a200341b0066a412010fc0120032802a801210220032802ac012101200341d80b6a200341c0036a10e204410c210e0240200b0d0041bc9fc4002115410321140c5b0b0240200b2001410020021b22024d0d0041b09fc4002115410421140c5b0b200341b00a6a200b417f6a10b4050240200341b00a6a2046412010e707450d004112210e41e59fc4002115410021140c5b0b0240200b20024f0d004108210e41949fc4002115410621140c5b0b0240024020112011201341c4006c22016a460d00201141016a2102034002402002417f6a2d00004101470d0041012110200341d80b6a2002460d032002200341d80b6a412010e707450d030b200241c4006a2102200141bc7f6a22010d000b0b410021100b200341b00a6a200b10b405200341b00a6a200341d80b6a412010e70721024114210e419c9fc40021154105211420100d5a2002450d5a200341c80d6a41026a220120032d00d2063a0000200341f80c6a41026a220b20032d00f2073a0000200320032f01d0063b01c80d200320032f01f0073b01f80c200341d80b6a200341c0036a10e204200341880d6a41186a220e4200370300200341880d6a41106a22104200370300200341880d6a41086a22144200370300200342003703880d204342003703002042420037030020414200370300200342003703b00641c80010272202450d63200341800e6a10bc01200241186a2019290300370200200241106a201a290300370200200241086a2017290300370200200220032903800e3702002002410236022020024101360244200220032903b0063702242002412c6a2041290300370200200241346a20422903003702002002413c6a2043290300370200200320023602b00a20034282808080203702b40a200341b00a6a10bd01200341b00a6a41186a200e290300370300200341b00a6a41106a2010290300370300200341b00a6a41086a2014290300370300200320032903880d3703b00a200341b00a6a10be01200341d80d6a41086a220e200341d80b6a41086a290300370300200341d80d6a41106a2210200341d80b6a41106a290300370300200341d80d6a41186a2214200341d80b6a41186a290300370300200341b00a6a41026a221520012d00003a0000200341f0076a41026a2201200b2d00003a0000200320032903d80b3703d80d200320032f01c80d3b01b00a200320032f01f80c3b01f00702402013200328029409470d0020034190096a20134101109f0120032802980921130b2003280290092211201341c4006c6a220241013a0000201429030021072010290300210c200e290300210d20032903d80d2112200241003a0021200220032f01b00a3b0030200241326a20152d00003a0000200220032f01f0073b003f200241c1006a20012d00003a000020022012370001200241096a200d370000200241116a200c370000200241196a20073700002003201341016a221336029809024020032802cc032202450d00200241246c21012016210203400240024020022d0000220b41044b0d00024002400240200b0e050400010204040b2002410c6a280200450d03200241086a28020010290c030b2002410c6a280200450d02200241086a28020010290c020b2002410c6a280200450d01200241086a28020010290c010b200241086a280200450d00200241046a28020010290b200241246a21022001415c6a22010d000b0b024020032802c8032202450d00200241246c450d00201610290b200941907f6a2109200841f0006a2108200a2044470d000c5c0b0b200341c0036a200141086a41900210e4071a200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10a502200424000f0b200141086a280200214720012802042146200341c0036a2001410c6a41a40110e4071a2002411a6a2901002107200241196a2d0000210b200241186a2d0000210a200241166a2f01002108200241156a2d00002106200241146a2d00002109200241126a2f01002105200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021142002410c6a2d000021152002410a6a2f01002113200241096a2d00002111200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20022d0001210120022d0000210202402046450d00200341d0066a200341c0036a41046a41a00110e4071a024002400240200241ff01710d00200141ff01714101460d010b02402047450d00204610290b41002103410221020c010b200320073703a00d2003200b3a009f0d2003200a3a009e0d200320083b019c0d200320063a009b0d200320093a009a0d200320053b01980d2003200e3a00970d2003200f3a00960d200320103b01940d200320143a00930d200320153a00920d200320133b01900d200320113a008f0d200320163a008e0d200320173b018c0d200320183a008b0d200320193a008a0d2003201a3b01880d200341f0076a200341d0066a41a00110e4071a200341b00a6a41186a20032903a00d370300200341c00a6a20032903980d370300200341b00a6a41086a20032903900d370300200320032903880d3703b00a200341a00e6a200341b00a6a1089020240024020032d00a00e4101470d00200341da0d6a20032d00a40e22023a0000200341d80b6a41086a200341b90e6a2900002207370300200320032f01a20e22013b01d80d2003200341b10e6a290000220c3703d80b200320032d00a10e3a00e802200320013b00e902200320023a00eb02200320032900a50e3702ec022003200341ad0e6a2800003602f402200341e8026a41186a20073703002003200c3703f80220034190096a200341f0076a41a00110e4071a200341d80d6a200341e8026a10b505200341a00e6a20032802d80d220120032802e00d10b60520032d00a00e2102200341d80b6a200341a00e6a41017241a00110e4071a0240024020024101460d00200341003a00b00a0c010b200341013a00b00a200341b00a6a410172200341d80b6a41a00110e4071a0b024020032802dc0d450d00200110290b20034190096a41206a2148200341d0096a2149200341f0096a214a200341900a6a214b200341d10a6a214c200341f10a6a214d200341910b6a214e200341b10b6a214f200341b00a6a4101722150416c210a0340410021014180a6cc00210b0240024002400240200a41e8a1c5006a280000220241e0ea91cb064a22090d00200241f0c2c98b06460d01200241e2c289ab06470d03412021012048210b0c030b200241e1ea91cb06460d010240200241e9dabdf306460d00200241e7e485f306470d034120210120034190096a210b0c030b412021012049210b0c020b41202101204a210b0c010b41202101204b210b0b200320013602a80e2003200b3602a40e200320023602a00e200341d80b6a200341a00e6a10b705200341a00e6a20032802d80b220620032802e00b10cd0120032802dc0b21080240024020032d00a00e4101470d0020032900b90e210720032d00b80e210520032d00b70e210e20032f00b50e210f20032d00b40e211020032d00b30e211420032f00b10e211520032d00b00e211320032d00af0e211120032f00ad0e211620032d00ac0e211720032d00ab0e211820032f00a90e211920032d00a80e211a20032d00a70e214120032f00a50e214220032d00a40e214320032d00a30e214420032f00a10e214502402008450d00200610290b200320073703b80e200320053a00b70e2003200e3a00b60e2003200f3b01b40e200320103a00b30e200320143a00b20e200320153b01b00e200320133a00af0e200320113a00ae0e200320163b01ac0e200320173a00ab0e200320183a00aa0e200320193b01a80e2003201a3a00a70e200320413a00a60e200320423b01a40e200320433a00a30e200320443a00a20e200320453b01a00e200341a00e6a200341e8026a412010e707450d0141808008210341efdbc9002101410d210b0c040b2008450d00200610290b0240024020032d00b00a4101470d00410021084180a6cc002106024002400240024020090d00200241f0c2c98b06460d01200241e2c289ab06470d0341202108204c21060c030b200241e1ea91cb06460d010240200241e9dabdf306460d00200241e7e485f306470d0341202108205021060c030b41202108204d21060c020b41202108204e21060c010b41202108204f21060b024020012008470d00200b2006460d02200b2006200110e707450d020b200320083602a80e200320063602a40e200320023602a00e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2208ad84100420032802dc0b450d00200810290b200320013602a80e2003200b3602a40e200320023602a00e200341d80b6a200341a00e6a10b70520032802d80b210120033502e00b2107412010272202450d58200220032903e802370000200241186a200341e8026a41186a290300370000200241106a200341e8026a41106a290300370000200241086a200341e8026a41086a29030037000020074220862001ad842002ad428080808080048410032002102920032802dc0b450d00200110290b200a41046a220a0d000b200341a00e6a200341e8026a10b50520033502a80e210720032802a00e2101412010272202450d642002200329039009370000200241186a20034190096a41186a290300370000200241106a20034190096a41106a290300370000200241086a20034190096a41086a2903003700002002412041c000102b2202450d64200220032903b009370020200241386a20034190096a41386a290300370000200241306a20034190096a41306a290300370000200241286a20034190096a41286a290300370000200241c000418001102b2202450d64200220032903d009370040200241d8006a20034190096a41d8006a290300370000200241d0006a20034190096a41d0006a290300370000200241c8006a20034190096a41c8006a290300370000200220032903f009370060200241e8006a20034190096a41e8006a290300370000200241f0006a20034190096a41f0006a290300370000200241f8006a20034190096a41f8006a2903003700002002418001418002102b2202450d64200220032903900a3700800120024198016a20034190096a4198016a29030037000020024190016a20034190096a4190016a29030037000020024188016a20034190096a4188016a29030037000020074220862001ad842002ad4280808080801484100320021029024020032802a40e450d00200110290b024020032d00b00a0d00200341880d6a10a7020b02402047450d00204610290b2000420037030820004200370300200424000f0b41808004210341fcdbc90021014117210b0b02402047450d00204610290b410321020b20004200370308200041206a200b3602002000411c6a2001360200200041186a20034180800c712002724180187236020020004201370300200424000f0b02400240200241ff01710d00200141ff01714101470d00200320113a00d706200320163a00d606200320173b01d406200320183a00d306200320193a00d2062003201a3b01d0062003200e3a00df062003200f3a00de06200320103b01dc06200320143a00db06200320153a00da06200320133b01d8062003200b3a00e7062003200a3a00e606200320083b01e406200320063a00e306200320093a00e206200320053b01e006200320073703e806200341b00a6a41186a2007370300200341c00a6a20032903e006370300200341b00a6a41086a20032903d806370300200320032903d0063703b00a200341a00e6a200341b00a6a108902024020032d00a00e4101470d00200341d80d6a41026a20032d00a40e22023a0000200341d80b6a41086a200341b90e6a2900002207370300200320032f01a20e22013b01d80d2003200341b10e6a290000220c3703d80b200320032d00a10e3a00f007200320013b00f107200320023a00f307200320032900a50e3702f4072003200341ad0e6a2800003602fc07200341f0076a41186a20073703002003200c37038008200341e8026a200341f0076a10b505200341a00e6a20032802e802220220032802f002220b10b605024020032d00a00e2201450d00200bad4220862002ad8410040b20032d00a10e210b200341d80b6a200341a00e6a410272419f0110e4071a200341a00e6a200341d80b6a419f0110e4071a024020014101470d0020034190096a200341a00e6a419f0110e4071a024020032802ec02450d00200210290b2003200b3a00b00a200341b00a6a41017220034190096a419f0110e4071a200341a80e6a4120360200200341e7e485f3063602a00e2003200341b00a6a3602a40e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2202ad841004024020032802dc0b450d00200210290b200341e2c289ab063602a00e200341203602a80e2003200341b00a6a41206a3602a40e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2202ad841004024020032802dc0b450d00200210290b200341203602a80e2003200341f00a6a3602a40e200341e9dabdf3063602a00e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2202ad841004024020032802dc0b450d00200210290b200341203602a80e2003200341900b6a3602a40e200341f0c2c98b063602a00e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2202ad841004024020032802dc0b450d00200210290b200341203602a80e2003200341b00b6a3602a40e200341e1ea91cb063602a00e200341d80b6a200341a00e6a10b70520033502e00b42208620032802d80b2202ad841004024020032802dc0b450d00200210290b200341d0066a10b2022000420037030820004200370300200424000f0b024020032802ec02450d00200210290b4106210341e9dbc90021024180800c21014103210b0c020b4117210341fcdbc90021024180800421014103210b0c010b410021014102210b0b20004200370308200041206a20033602002000411c6a2002360200200041186a20014180800c71200b724180187236020020004201370300200424000f0b4100210b4102210a024002400240024020022d0000450d000c010b20022d000141ff01714102470d002001280204210a200341b0066a41186a22084200370300200341b0066a41106a22064200370300200341b0066a41086a22024200370300200342003703b00641eea1c800ad4280808080f001841001220129000021072001290008210c200110292002200c370300200320073703b00641fda3c800ad4280808080e000841001220129000821072001290000210c2001102920034190066a41106a200c37030020034190066a41186a200737030020034190066a41086a22012002290300370300200320032903b006370390064100210b200341c0016a20034190066a41204180a6cc004100410010c7010240024020032802c0014101470d00410e21064195d1c80021080c010b200341800e6a41186a4200370300200341800e6a41106a22054200370300200341800e6a41086a220b4200370300200342003703800e41b3e6ca00ad4280808080e00084100122092900002107200b200941086a290000370300200320073703800e2009102941c9e6ca00ad4280808080e000841001220929000021072001200941086a290000370300200320073703900620091029200520032903900622073703002002200b2903003703002006200737030020082001290300370300200320032903800e3703b006200341b8016a200341b0066a412010fc0120032802bc01410020032802b8011b200a4f0d024107210641a3d1c800210841808004210b0b4103210a0b200041206a20063602002000411c6a2008360200200041186a200b4180800471200a7241801a72360200420121070c010b42002107200341b0066a41186a4200370300200341b0066a41106a4200370300200341b0066a41086a22024200370300200342003703b00641eea1c800ad4280808080f0018410012201290000210c2001290008210d200110292002200d3703002003200c3703b00641fda3c800ad4280808080e0008410012201290008210c2001290000210d2001102920034190066a41106a200d37030020034190066a41186a200c37030020034190066a41086a2002290300370300200320032903b006370390062003200a3602c00320034190066aad4280808080800484200341c0036aad4280808080c0008410030b2000200737030020004200370308200424000f0b2002411a6a290100210c200241196a2d00002105200241186a2d0000210f200241166a2f01002110200241156a2d00002114200241146a2d00002115200241126a2f01002113200241116a2d00002111200241106a2d000021172002410e6a2f010021182002410d6a2d000021192002410c6a2d0000211a2002410a6a2f01002141200241096a2d00002142200241086a2d00002143200241066a2f01002144200241056a2d00002145200241046a2d00002146200241026a2f0100214720014198026a280200211620014194026a280200210a20014190026a280200210b2001418c026a280200210820014188026a2802002106200141186a290300210d200141086a290300210720022d0001210920022d00002102200341c0036a200141206a41e80110e4071a0240024020020d00200941ff01714101470d0020034190096a410c6a20034190056a290300370200200341a4096a20034198056a290300370200200341ac096a200341a0056a290300370200200341e7e485f30636029009200320032903880537029409200341d0066a410c6a200a360200200341d8066a200b360200200320163602e006200320083602d406200320063602d006200341d80b6a20034190096a200341d0066a10b604024020032802980c450d00200341a00e6a41066a200341d80b6a41d00010e4071a200341b00a6a200341a00e6a41d60010e4071a200341f0076a200341b00a6a41066a41d00010e4071a41201027220e0d020c610b4180801021034118210241fdd4c80021014103210b0c560b0240200a450d00200a410c6c21022008210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b0240200b450d00200b410c6c450d00200810290b410021034102210b0c550b200e200c370018200e20053a0017200e200f3a0016200e20103b0014200e20143a0013200e20153a0012200e20133b0010200e20113a000f200e20173a000e200e20183b000c200e20193a000b200e201a3a000a200e20413b0008200e20423a0007200e20433a0006200e20443b0004200e20453a0003200e20463a0002200e20473b00002003200d3703b80a200320073703b00a200341b00a6a41106a200341f0076a41d00010e4072102200320163602940b200320063602900b41d00010272201450d5e200341b0066a41086a220b200241086a290300370300200341b0066a41106a220a200241106a290300370300200341b0066a41186a2208200241186a290300370300200320022903003703b006200341e00a6a290300210c200341b00a6a41386a2903002112200341f00a6a290300211b200341b00a6a41c8006a290300211c200341a00e6a200341800b6a10ee02200141386a201c3703002001201b370330200141286a20123703002001200c370320200141186a2008290300370300200141106a200a290300370300200141086a200b290300370300200120032903b006370300200120032903a00e370340200141c8006a200341a00e6a41086a280200360200410810272202450d5e20022007370000200241084110102b2202450d5e2002200d3700082003429080808080023702dc0d200320023602d80d200341a00e6a41c5cdc20010e902200341d80b6a20032802a00e220b20032802a80e108b0320032902dc0b420020032802d80b22021b210c2002410120021b2105024020032802a40e450d00200b10290b2003200c4220883e02b406200320053602b006200341d0016a200341b0066a10c8014100210620032802d0010d4f20032802d401220f20032802b406220a41306e22022002200f4b1bad42307e2212422088a70d512012a72202417f4c0d510240024020020d00410821060c010b200210272206450d510b41002109200341003602900d200320063602880d2003200241306e220236028c0d200f450d4f4100210941002114024003400240200a221041084f0d00201021020c500b200320032802b006220a41086a3602b006201041786a22024108490d4f201441016a2114200a29000021122003200a41106a3602b006200a290008211b41002102200341003a00c00e201041706a21080340200341003a00b00320082002460d02200341a00e6a20026a200a20026a220b41106a2d00003a00002003200b41116a3602b0062003200241016a220b3a00c00e200b2102200b4120470d000b20034190096a41086a200341a00e6a41086a290300221c37030020034190096a41106a200341a00e6a41106a290300221d37030020034190096a41186a200341a00e6a41186a290300221e370300200341e8026a41186a2215201e370300200341e8026a41106a2213201d370300200341e8026a41086a2211201c370300200320032903a00e221c3703d80b2003201c370390092003201c3703e80202402009200328028c0d470d00200341880d6a2009410110900120032802880d210620032802900d21090b2008200b6b210a2006200941306c6a2202201b37030820022012370300200220032903e802370310200241186a2011290300370300200241206a2013290300370300200241286a20152903003703002003200941016a22093602900d2014200f470d000b20032010200b6b41706a3602b406200328028c0d21020c500b200341003602b406200241ff0171450d4e200341003a00c00e0c4e0b2001411c6a280200210e200141186a280200210f200141146a28020021102001410c6a2802002114200141086a28020021134100210b4102210a02400240024020022d0000450d000c010b20022d000141ff01714102470d00200141246a2802002115200141106a280200210a200341800e6a41186a22084200370300200341800e6a41106a22024200370300200341800e6a41086a22014200370300200342003703800e41b1dcc900ad4280808080f000841001220b29000021072001200b41086a290000370300200320073703800e200b1029418886ca00ad4280808080c0018410012206290000210720034190066a41086a220b200641086a29000037030020032007370390062006102920022003290390062207370300200341b0066a41086a22092001290300370300200341b0066a41106a22052007370300200341b0066a41186a2211200b290300370300200320032903800e3703b006200341e0016a200341b0066a412010fc01200341c0036a20032802e401410020032802e0011b2217201510b805200341d8016a20032802c003220620032802c8034180a6cc004100410010c70120032802d8012116024020032802c403450d00200610290b200842003703002002420037030020014200370300200342003703800e41c6b7c700ad42808080808001841001220629000021072001200641086a290000370300200320073703800e2006102941dcb7c700ad4280808080c00084100122062900002107200b200641086a2900003703002003200737039006200610292002200329039006370000200241086a200b290300370000200920012903003703002005200229030037030020112008290300370300200320032903800e3703b006200341c0036a200341b0066a109e0320032802c0032202410120021b211120032902c403420020021b21070240201641014622010d00201120154105746a410020152007422088a7491b22020d020b41a0b7c70041b3b7c70020011b21084113410a20011b21062001411074210b4103210a200742ffffff3f83500d00201110290b02402014450d00201310290b0240200e450d00200e410c6c21022010210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b0240200f450d00200f410c6c450d00201010290b20004200370308200041206a20063602002000411c6a2008360200200041186a200b200a7241801e7236020020004201370300200424000f0b200241086a290000210c200241106a290000210d20022900002112200341b0066a41186a200241186a290000221b370300200341b0066a41106a200d370300200341b0066a41086a200c370300200320123703b006200341cd036a200c370000200341d5036a200d370000200341dd036a201b370000200341003a00c403200341083a00c003200320123700c503200341c0036a10cb01200341003602c803200342013703c003200a200341c0036a10710240024020032802c403220b20032802c80322026b200a490d0020032802c00321010c010b2002200a6a22012002490d53200b41017422082001200820014b1b22084100480d5302400240200b0d00024020080d00410121010c020b200810272201450d600c010b20032802c0032101200b2008460d002001200b2008102b2201450d5f0b200320083602c403200320013602c0030b200120026a2013200a10e4071a20032002200a6a3602c803200e200341c0036a1071200e450d172010200e410c6c6a210520102101034020012802002109200141086a2802002202200341c0036a10710240024020032802c403220a20032802c803220b6b2002490d0020032802c0032108200a21060c010b200b20026a2208200b490d54200a41017422062008200620084b1b22064100480d5402400240200a0d00024020060d00410121080c020b200610272208450d610c010b20032802c0032108200a2006460d002008200a2006102b2208450d600b200320063602c403200320083602c0030b2008200b6a2009200210e4071a2003200b20026a22023602c8032001410c6a22012005470d000c4c0b0b200341c0036a41306a200141386a290300370300200341c0036a41286a200141306a290300370300200341c0036a41206a200141286a290300370300200341c0036a41186a200141206a290300370300200341c0036a41106a200141186a290300370300200341c0036a41086a200141106a2903003703002003200141086a2903003703c003200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10b905200424000f0b200341c0036a41306a200141386a290300370300200341c0036a41286a200141306a290300370300200341c0036a41206a200141286a290300370300200341c0036a41186a200141206a290300370300200341c0036a41106a200141186a290300370300200341c0036a41086a200141106a2903003703002003200141086a2903003703c003200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10ba05200424000f0b200141146a2802002106200141106a280200210b2001410c6a28020021082002411a6a290100210c200241196a2d00002109200241186a2d00002105200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002114200241116a2d00002115200241106a2d000021132002410e6a2f010021112002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f01002141200241056a2d00002142200241046a2d0000214341022150200241026a2f01002144200141386a290300210d200141306a28020021512001412c6a280200214f200141206a2d000021462001411e6a2f010021472001411c6a2d000021482001411a6a2f01002149200141186a2d0000214a2001410a6a2f0100214b200141226a290100210720022d0001210a20022d0000210220012d0021214c20012d001d214d20012d0019214e20012d00092145024002400240024002400240200141086a2d00000e06000102030405000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b200141346a28020021012003200da722093602f0070240200a200241ff01714100477241ff01710d000240200141e500490d0041002802d8a74c450d00200341ac0e6a4101360200200341013602a40e200341b0e3c8003602a00e2003200136029009200320034190096a3602a80e41002802888040210241002802848040210a41002802dca74c210920034180046a418003360200200341f8036a42de80808010370300200341f4036a41dde3c800360200200341ec036a4211370200200341e8036a41cce3c800360200200341e0036a4202370300200341d0036a4203370300200341c8036a4111360200200341dc036a200341a00e6a360200200341b4e3c8003602cc03200341cce3c8003602c403200341013602c003200a4180a4c000200941024622091b200341c0036a20024198a4c00020091b28021011020020032802f00721090b200341800e6a41186a4200370300200341800e6a41106a22054200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220a290000210c2002200a41086a2900003703002003200c3703800e200a102941f0edca00ad4280808080f000841001220a290000210c20034190066a41086a220e200a41086a2900003703002003200c37039006200a10292005200329039006220c370300200341b0066a41086a2002290300370300200341b0066a41106a200c370300200341b0066a41186a200e290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032802c0032202410120021b210a0240200920032902c403420020021b220c422088220da722024f0d0041002802d8a74c4102490d00200341ac0e6a4101360200200341013602a40e2003200236029009200320034190096a3602a80e2003200341f0076a3602a00e41002802888040210941002802848040210541002802dca74c210e20034180046a418903360200200341f8036a42de80808010370300200341f4036a41dde3c800360200200341ec036a4211370200200341e8036a41cce3c800360200200341e0036a4202370300200341d0036a4203370300200341c8036a4111360200200341dc036a200341a00e6a36020020034190d5c9003602cc03200341cce3c8003602c403200341023602c00320054180a4c000200e410246220e1b200341c0036a20094198a4c000200e1b2802101102000b204f200110bb05204f2001200a200210bc0502400240204541ff01710d00200341b0066a41186a4200370300200341b0066a41106a4200370300200341b0066a41086a22024200370300200342003703b00641a6d4c800ad4280808080b002841001220b2900002107200b2900082112200b102920022012370300200320073703b00641f8d7ca00ad4280808080d000841001220b2900082107200b2900002112200b1029200341d80d6a41106a2012370300200341d80d6a41186a2007370300200341d80d6a41086a2002290300370300200320032903b0063703d80d200341d80d6aad428080808080048410040c010b200320073703d8032003204c3a00d703200320463a00d603200320473b01d4032003204d3a00d303200320483a00d203200320493b01d0032003204e3a00cf032003204a3a00ce03200320064110763b01cc03200320064108763a00cb03200320063a00ca032003200b4110763b01c8032003200b4108763a00c7032003200b3a00c603200320084110763b01c403200320084108763a00c303200320083a00c2032003204b3b01c00320034190066a41186a420037030020034190066a41106a2206420037030020034190066a41086a220b4200370300200342003703900641a6d4c800ad4280808080b0028410012208290000210720034190096a41086a2202200841086a290000370300200320073703900920081029200b200229030037030020032003290390093703900641f8d7ca00ad4280808080d000841001220829000021072002200841086a29000037030020032007370390092008102920062003290390092207370300200341880d6a41086a200b290300370300200341880d6a41106a2007370300200341880d6a41186a200229030037030020032003290390063703880d412010272202450d52200220032903c003370000200241186a200341c0036a41186a290300370000200241106a200341c0036a41106a290300370000200241086a200341c0036a41086a290300370000200341880d6aad42808080808004842002ad42808080808004841003200210290b200d42c0de810a7e2001ad42b0db067e7c21070240205141ffffff3f71450d00204f10290b200742809591c7397c21070240200c42ffffff3f83500d00200a10290b200041106a20073703002000420137030820004200370300200424000f0b0240205141ffffff3f71450d00204f10290b200320032900b00a3703d80b2003200341b70a6a2900003700df0b200041186a41023a000020004200370308200020032903d80b370019200041206a20032900df0b37000020004201370300200424000f0b2003200c3703f00d200320093a00ef0d200320053a00ee0d2003200e3b01ec0d2003200f3a00eb0d200320103a00ea0d200320143b01e80d200320153a00e70d200320133a00e60d200320113b01e40d200320163a00e30d200320173a00e20d200320183b01e00d200320193a00df0d2003201a3a00de0d200320413b01dc0d200320423a00db0d200320433a00da0d200320443b01d80d0240024002400240200a41ff01714101470d00200241ff01710d0020034190096a41186a200341d80d6a41186a29030037030020034190096a41106a200341d80d6a41106a29030037030020034190096a41086a200341d80d6a41086a290300370300200320032903d80d37039009200341800e6a41186a4200370300200341800e6a41106a220a4200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a2206200141086a290000370300200320073703900620011029200a2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a2006290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032902c403420020032802c00322021b2207422088220ca741057421012002410120021b22062102024002400340024020010d004100210341eeebca002102410921010c020b024020034190096a2002460d00200141606a2101200220034190096a412010e707210a200241206a2102200a0d010b0b200341003602c803200342013703c0032008200341c0036a10bf0220032802c8032101024020032802c403450d0020032802c00310290b2001200b4d0d014109210341e7d5c8002102411321010b4103210b200742ffffff3f83500d02200610290c020b200341003602c803200342013703c0032008200341c0036a10bf0220032802c403210b200341d80b6a41186a220a20033502c80342208620032802c003220ead841010220241186a290000370300200341d80b6a41106a2209200241106a290000370300200341d80b6a41086a2205200241086a290000370300200320022900003703d80b200210290240200b450d00200e10290b200341c0036a200841a80210e4071a200341a00e6a410d6a20034190096a41086a290300370000200341a00e6a41156a20034190096a41106a290300370000200341a00e6a411d6a20034190096a41186a290300370000200341013a00a40e20032003290390093700a50e200341023a00a00e200341b00a6a200341c0036a200341a00e6a10c50120034190066a41086a2202200529030037030020034190066a41106a220b200929030037030020034190066a41186a2209200a290300370300200320032903d80b37039006200341b00a6a41186a2d0000210a200341cb0a6a2d0000210520032903b00a211220032903b80a210d20032902cc0a211b20032f00c90a210e200341053a00c4032003410b3a00c003200341c0036a410d6a2002290300370000200341c0036a41156a200b290300370000200341c0036a411d6a2009290300370000200341eb036a20053a0000200341e9036a200e3b0000200341ec036a201b370200200341e8036a41044104200a200d4202511b20124201521b3a000020032003290390063700c503200341e5036a20032f01d0063b0000200341e7036a200341d0066a41026a2d00003a0000200341f4036a20032902a00e370200200341fc036a200341a00e6a41086a29020037020020034184046a200341a00e6a41106a2902003702002003418c046a200341a00e6a41186a280200360200200341c0036a10cb01200da70d024200210c0c030b4102210b0b200810cc0120081029200041206a20013602002000411c6a2002360200200020033a001a200041133a0019200041186a200b3a00002000420037030820004201370300200424000f0b427f2001ad42a01f7e200c42c0a9077e7c4280d8f1167c220c200341c00a6a2903007c220d200d200c541b210d4201210c0b0240200742ffffff3f83500d00200610290b20081029200041106a200d3703002000200c37030820004200370300200424000f0b2003200b3602f007410221010240200241ff0171450d000c4a0b200a41ff01714101470d492003200c3703a809200320093a00a709200320053a00a6092003200e3b01a4092003200f3a00a309200320103a00a209200320143b01a009200320153a009f09200320133a009e09200320113b019c09200320163a009b09200320173a009a09200320183b019809200320193a0097092003201a3a009609200320413b019409200320423a009309200320433a009209200320443b019009200341800e6a41186a4200370300200341800e6a41106a22094200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a29000037030020032007370390062001102920092003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032902c403420020032802c00322021b2207422088220ca741057421012002410120021b220521020340024020010d004109214641eeebca002145410021020c490b024020034190096a2002460d00200141606a2101200220034190096a412010e707210a200241206a2102200a0d010b0b200341003602c803200342013703c003200b200341c0036a10bf0220032802c8032101024020032802c403450d0020032802c00310290b0240200120064d0d004113214641e7d5c8002145410921020c480b200341003602c803200342013703c003200b200341c0036a10bf0220032802c403210a200341d80b6a41186a220620033502c80342208620032802c0032210ad841010220241186a290000370300200341d80b6a41106a220e200241106a290000370300200341d80b6a41086a220f200241086a290000370300200320022900003703d80b200210290240200a450d00201010290b200341c0036a41186a2006290300370300200341c0036a41106a200e290300370300200341c0036a41086a200f290300370300200320032903d80b3703c003200341a00e6a200341c0036a10bd0520034180026a20032802a00e220220032802a80e4180a6cc004100410010c701200328028002210a024020032802a40e450d00200210290b41012102200a4101460d17024002400240024020084102490d00200341800e6a41186a22064200370300200341800e6a41106a220e4200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220a290000210d2002200a41086a2900003703002003200d3703800e200a1029419fdec900ad42808080809001841001220a290000210d20034190066a41086a220f200a41086a2900003703002003200d37039006200a10292009200329039006370000200941086a200f290300370000200341b0066a41086a2002290300370300200341b0066a41106a200e290300370300200341b0066a41186a2006290300370300200320032903800e3703b006200341c0036a200341b0066a412010ce010240024020032802c003220a0d0041002102200341003602a80e200342013703a00e4101210a410021060c010b200320032902c403220d3702a40e2003200a3602a00e200d422088a72102200da721060b20034190066a41186a220e200341d80b6a41186a29030037030020034190066a41106a220f200341d80b6a41106a29030037030020034190066a41086a2210200341d80b6a41086a290300370300200320032903d80b37039006024020022006470d00200341a00e6a20024101109e0120032802a00e210a20032802a80e21020b200a20024105746a2206200329039006370000200641186a200e290300370000200641106a200f290300370000200641086a20102903003700002003200241016a22063602a80e20032802a40e2102200641e4004b0d0320034190066a41186a420037030020034190066a41106a420037030020034190066a41086a220e4200370300200342003703900641a6d4c800ad4280808080b002841001220f290000210d200f2900082112200f1029200e20123703002003200d37039006419fdec900ad42808080809001841001220f290008210d200f2900002112200f1029200341b0066a41106a2012370300200341b0066a41186a200d370300200341b0066a41086a200e29030037030020032003290390063703b00602400240200a0d00200341b0066aad428080808080048410040c010b200341203602c4032003200341b0066a3602c003200a2006200341c0036a10cf01200241ffffff3f71450d00200a10290b200341b0066a41186a220a4200370300200341b0066a41106a220e4200370300200341b0066a41086a22024200370300200342003703b00641a6d4c800ad4280808080b00284220d1001220f2900002112200f290008211b200f10292002201b370300200320123703b00641a0b9ca00ad4280808080d0018422121001220f290008211b200f290000211c200f102920034190066a41106a220f201c37030020034190066a41186a2210201b37030020034190066a41086a22142002290300370300200320032903b00637039006200341f8016a20034190066a412010fc0120032802fc01211320032802f8012111200a4200370300200e420037030020024200370300200342003703b006200d10012215290000211b2015290008211c201510292002201c3703002003201b3703b006201210012215290008211b2015290000211c20151029200f201c3703002010201b37030020142002290300370300200320032903b00637039006200341f0016a20034190066a412010fc0120032802f001211520032802f4012116200a4200370300200e420037030020024200370300200342003703b006200d1001220a290000210d200a290008211b200a10292002201b3703002003200d3703b00620121001220a290008210d200a2900002112200a1029200f20123703002010200d37030020142002290300370300200320032903b006370390062003201641016a410120151b3602c00320034190066aad4280808080800484200341c0036aad4280808080c000841003200341c0036a200b41a80210e4071a200341a00e6a41186a200341d80b6a41186a290300370300200341a00e6a41106a200341d80b6a41106a290300370300200341a00e6a41086a200341d80b6a41086a290300370300200320032903d80b3703a00e200341b00a6a200341a00e6a10bd0520032802b00a210220033502b80a210d200342013703a00e200341003602a80e200341c0036a200341a00e6a10bf0220032802a40e210b200d4220862002ad8420033502a80e42208620032802a00e220aad8410030240200b450d00200a10290b024020032802b40a450d00200210290b200341c0036a10cc01200341800e6a41186a220a4200370300200341800e6a41106a220e4200370300200341800e6a41086a22024200370300200342003703800e41b3e6ca00ad4280808080e000841001220b290000210d2002200b41086a2900003703002003200d3703800e200b102941c9e6ca00ad4280808080e000841001220b290000210d20034190066a41086a220f200b41086a2900003703002003200d37039006200b10292009200329039006370000200941086a200f290300370000200341b0066a41086a2002290300370300200341b0066a41106a200e290300370300200341b0066a41186a200a290300370300200320032903800e3703b006200341e8016a200341b0066a412010fc0120032802ec01210b20032802e801210a412010272202450d602002200329039009370000200241186a20034190096a41186a290300370000200241106a20034190096a41106a290300370000200241086a20034190096a41086a290300370000200341dc036a4100360200200341cc036a4281808080103702002003200b41c093066a41c09306200a1b3602e0034201210d200342013702d403200320023602c803200320083602c40320032013410020111b220a3602c003200341a00e6a41186a200341d80b6a41186a290300370300200341a00e6a41106a200341d80b6a41106a290300370300200341a00e6a41086a200341d80b6a41086a290300370300200320032903d80b3703a00e200341b00a6a200341a00e6a10be0520032802b00a210b200320032802b80a3602a40e2003200b3602a00e200341c0036a200341a00e6a10bf05024020032802b40a450d00200b10290b20021029200341cd036a20034190096a41086a290300370000200341d5036a20034190096a41106a290300370000200341dd036a20034190096a41186a290300370000200341e5036a20032903d80b370000200341ed036a200341d80b6a41086a290300370000200341f5036a200341d80b6a41106a290300370000200341fd036a200341d80b6a41186a2903003700002003418c046a200836020020034188046a200a360200200341003a00c4032003410b3a00c00320032003290390093700c5032001ad42f02e7e200c42b0db067e7c2006ad42b0901f7e7c4280aba186027c210c200341c0036a10cb01200742ffffff3f8350450d010c020b200341800e6a41186a22084200370300200341800e6a41106a22064200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220a290000210d2002200a41086a2900003703002003200d3703800e200a102941f0edca00ad4280808080f000841001220a290000210d20034190066a41086a220e200a41086a2900003703002003200d37039006200a10292009200329039006370000200941086a200e290300370000200341b0066a41086a2002290300370300200341b0066a41106a2006290300370300200341b0066a41186a2008290300370300200320032903800e3703b006200341c0036a200341b0066a108d020240024020032802c003220a0d00410021020c010b20032902c403220d422088a72102200d42ffffff3f83500d00200a10290b200341c0036a200b41a80210e4071a200341ac0e6a2002360200200341a00e6a41086a22024101360200200341003a00a40e200341023a00a00e200341b00a6a200341c0036a200341a00e6a10c501200341880d6a41086a220b200341d80b6a41086a290300370300200341880d6a41106a220a200341d80b6a41106a290300370300200341880d6a41186a2208200341d80b6a41186a290300370300200320032903d80b3703880d200341b00a6a41186a2d00002106200341cb0a6a2d0000210920032903b00a211b20032903b80a211220032902cc0a210d20032f00c90a210e2003410b3a00c003200341043a00c403200341cd036a200b290300370000200341d5036a200a290300370000200341dd036a2008290300370000200341eb036a20093a0000200341e9036a200e3b0000200341ec036a200d3702004201210d200341e8036a41044104200620124202511b201b4201521b3a0000200320032903880d3700c503200341e5036a20032f01d0063b0000200341e7036a200341d0066a41026a2d00003a0000200341f4036a20032902a00e370200200341fc036a200229020037020020034184046a200341a00e6a41106a2902003702002003418c046a200341a00e6a41186a280200360200200341c0036a10cb01024002402012a70d004200210d0c010b427f2001ad42b8177e200c42e0b60d7e7c42c0e3d5257c220c200341b00a6a41106a2903007c22122012200c541b210c0b200742ffffff3f83500d010b200510290b20032802f0071029200041106a200c3703002000200d37030820004200370300200424000f0b0240200241ffffff3f71450d00200a10290b41102146418dd6c80021454107210241032101200742ffffff3f83500d490c480b200320073e00f10b200341f70b6a20074230883c0000200341f50b6a20074220883d00002003204c3a00f00b200320463a00ef0b200320473b00ed0b2003204d3a00ec0b200320483a00eb0b200320493b00e90b2003204e3a00e80b2003204a3a00e70b200320063600e30b2003200b3600df0b200320083600db0b2003204b3b00d90b200320453a00d80b2003200c3703f00d200320093a00ef0d200320053a00ee0d2003200e3b01ec0d2003200f3a00eb0d200320103a00ea0d200320143b01e80d200320153a00e70d200320133a00e60d200320113b01e40d200320163a00e30d200320173a00e20d200320183b01e00d200320193a00df0d2003201a3a00de0d200320413b01dc0d200320423a00db0d200320433a00da0d200320443b01d80d0240200a41ff01714101470d00200241ff01710d002007423888a7210e200341b00a6a41186a200341d80d6a41186a290300370300200341b00a6a41106a200341d80d6a41106a290300370300200341b00a6a41086a200341d80d6a41086a290300370300200320032903d80d3703b00a200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e41a6d4c800ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032902c403420020032802c00322021b2207422088220da741057421012002410120021b220621020340024020010d004109210341eeebca002102410021010c470b0240200341b00a6a2002460d00200141606a21012002200341b00a6a412010e707210b200241206a2102200b0d010b0b20034190096a200341d80b6a10c005200341c0036a200328029009220120032802980910c10520032802940921020240024020032802c8032209450d00200341e0036a280200210b200341dc036a280200210f200341d8036a2802002115200341d4036a2802002114200341d0036a280200210520032802cc03211020032903c003210c02402002450d00200110290b200341bc0e6a200f360200200341b80e6a2015360200200341b00e6a2005360200200341ac0e6a20103602002003200b3602c00e200320143602b40e200320093602a80e2003200c3703a00e204f200ca7460d01410a210341c4d6c8002102410321010c460b02402002450d00200110290b410f210341ced6c8002102410221010c460b410021014100210b4100211302402005450d002005410574210a4100210b2009210202400340200341b00a6a2002460d01200b2002200341b00a6a412010e70722084100476a210b2008450d01200241206a2102200a41606a220a0d000b410021130c010b410121130b410021020240200f450d00200f410574210a410021012014210202400340200341b00a6a2002460d0120012002200341b00a6a412010e70722084100476a21012008450d01200241206a2102200a41606a220a0d000b410021020c010b410121020b02400240200e0d002002450d010c450b20130d4420034190066a41186a220a200341b00a6a41186a29030037030020034190066a41106a2208200341b00a6a41106a29030037030020034190066a41086a220f200341b00a6a41086a290300370300200320032903b00a37039006024020052010470d00200341a80e6a20104101109e0120032802b00e210520032802a80e21090b200920054105746a220b200329039006370000200b41186a200a290300370000200b41106a2008290300370000200b41086a200f2903003700002003200541016a22083602b00e20032802bc0e210a2002450d43200a20014d0d1920032802b40e220b200a417f6a220a4105746a2202290000210c200229000821122002290010211b200241186a290000211c2003200a3602bc0e200b20014105746a220241186a201c3700002002201b370010200220123700082002200c3700000c430b200341b0066a41186a2201200341b00a6a41186a290300370300200341b0066a41106a220a200341b00a6a41106a290300370300200341b0066a41086a2208200341b00a6a41086a290300370300200320032903b00a3703b0060240200f2015470d00200341b40e6a20154101109e0120032802bc0e210f20032802b40e21140b2014200f4105746a220220032903b006370000200241186a2001290300370000200241106a200a290300370000200241086a2008290300370000200320032802bc0e41016a220a3602bc0e20032802b00e21082013450d422008200b4d0d1920032802a80e22012008417f6a22084105746a2202290000210c200229000821122002290010211b200241186a290000211c200320083602b00e2001200b4105746a220241186a201c3700002002201b370010200220123700082002200c3700000c420b4102210b0c450b200320073e00a909200341af096a20074230883c0000200341ad096a20074220883d00002003204c3a00a809200320463a00a709200320473b00a5092003204d3a00a409200320483a00a309200320493b00a1092003204e3a00a0092003204a3a009f092003200636009b092003200b3600970920032008360093092003204b3b009109200320453a0090090240200241ff0171450d000c3f0b200a41ff01714101470d3e200341a00e6a20034190096a10c005200341c0036a20032802a00e220120032802a80e10c10520032802a40e21020240024020032802c803220a450d00200341e0036a2802002110200341dc036a2802002108200341d8036a2802002109200341d4036a280200210e200341d0036a280200210b20032802cc03210520032903c003210702402002450d00200110290b4113210241032150204f2007a7460d01410a210141c4d6c80021064103210b0c3f0b02402002450d00200110290b410f210141ced6c80021064102210b41132102410321500c3f0b2007422088a72114200341800e6a41186a4200370300200341800e6a41106a220f4200370300200341800e6a41086a22014200370300200342003703800e41a6d4c800ad4280808080b0028410012206290000210c2001200641086a2900003703002003200c3703800e2006102941f0edca00ad4280808080f0008410012206290000210c20034190066a41086a2215200641086a2900003703002003200c3703900620061029200f200329039006220c370300200341b0066a41086a2001290300370300200341b0066a41106a200c370300200341b0066a41186a2015290300370300200320032903800e3703b006200341c0036a200341b0066a108d020240024020032802c00322010d00410021060c010b20032902c403220c422088a72106200c42ffffff3f83500d00200110290b024002400240200b20144f22150d004100200620086b2201200120064b1b2014490d00200341800e6a41186a22114200370300200341800e6a41106a2216420037030041082101200341800e6a41086a22154200370300200342003703800e41b3e6ca00ad4280808080e0008410012213290000210c2015201341086a2900003703002003200c3703800e2013102941c9e6ca00ad4280808080e0008410012213290000210c20034190066a41086a2217201341086a2900003703002003200c3703900620131029200f200329039006370000200f41086a2017290300370000200341b0066a41086a2015290300370300200341b0066a41106a220f2016290300370300200341b0066a41186a22152011290300370300200320032903800e3703b00620034188026a200341b0066a412010fc01200328028c0241002003280288021b20104f0d01419dd6c80021064106210b0c400b200341c0036a20034190096a2051200d10c20520032802c0034101470d01200341cc036a28020021010c3e0b20154200370300200f4200370300200341b0066a41086a22024200370300200342003703b00641a6d4c800ad4280808080b0028410012201290000210c2001290008211220011029200220123703002003200c3703b00641f8d7ca00ad4280808080d0008410012201290008210c200129000021122001102920034190066a41106a201237030020034190066a41186a200c37030020034190066a41086a2002290300370300200320032903b00637039006200341c0036a20034190066a412010cd0120032d00c00321012015200341d9036a290000370300200f200341d1036a2900003703002002200341c9036a290000370300200320032900c1033703b006024020014101460d0020062008200b6a6b21020c3c0b200341d80d6a41186a200341b0066a41186a290300220c370300200341d80d6a41106a200341b0066a41106a2903002212370300200341d80d6a41086a2002290300221b370300200320032903b006221c3703d80d200341c0036a41186a200c370300200341c0036a41106a2012370300200341c0036a41086a201b3703002003201c3703c003200b4105742101200a210202400340024020010d00410021150c020b41012115200341c0036a2002460d01200141606a21012002200341c0036a412010e707210f200241206a2102200f0d000b0b20062008200b6a6b21022015450d3b2002200b6a2102200821010c3c0b200341f0056a350200210c200341a00e6a200341c0036a41086a41a80210e4071a200341cc0a6a2008360200200341b00a6a41186a2009360200200341b00a6a41106a200b360200200341bc0a6a2005360200200320103602d00a2003200e3602c40a2003200a3602b80a200320073703b00a200341d80b6a41186a20034190096a41186a290300370300200341d80b6a41106a20034190096a41106a290300370300200341d80b6a41086a20034190096a41086a29030037030020032003290390093703d80b200341c0036a200341a00e6a41a80210e4071a200c42c03e7e2006ad4290a10f7e7c42c0fa9dc3007c210720152006200341b00a6a200341d80b6a200341c0036a10c305210c0c3f0b200341c0036a41286a200141306a290300370300200341c0036a41206a200141286a290300370300200341c0036a41186a200141206a290300370300200341c0036a41106a200141186a290300370300200341c0036a41086a200141106a2903003703002003200141086a2903003703c003200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10c405200424000f0b200341ca0d6a220e200141076a2d00003a0000200341a00e6a41086a220f2001411c6a290200370300200341a00e6a41106a2210200141246a290200370300200341a00e6a41186a2001412c6a290200370300200341c00e6a200141346a290200370300200341c80e6a2001413c6a290200370300200341d00e6a200141c4006a2d00003a0000200320012f00053b01c80d2003200141146a2902003703a00e200141086a280200210b2001410c6a2802002106200141106a280200210820022f0001200241036a2d00004110747221142002410c6a2802002109200241086a2802002105200241046a280200211520022d0000210a0240024002400240024002400240024020012d00040e080001020304050607000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b200341c70a6a200f290300370000200341cf0a6a20102d00003a0000200320032f01c80d3b01b00a200320083600bb0a200320063600b70a2003200b3600b30a200320032903a00e3700bf0a2003200e2d00003a00b20a0240024002400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b2014200a4100477241ff01710d010b200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e419ad6ca00ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d02024020032802c00322080d0041002109200341003602e00b200342013703d80b410121080c3f0b200320032902c40322073702dc0b200320083602d80b2007a7210941002102024002402007422088a7220641014b0d0020060e024001400b2006210103402001410176220b20026a220a20022008200a4105746a200341b00a6a412010e7074101481b21022001200b6b220141014b0d000b0b0240200820024105746a200341b00a6a412010e7072201450d00200341c0036a41186a200341b00a6a41186a290300370300200341c0036a41106a200341b00a6a41106a290300370300200341c0036a41086a200341b00a6a41086a290300370300200320032903b00a3703c0032001411f7620026a220b20064b0d1f200341c0036a21010c400b0240200941ffffff3f71450d00200810290b41832a21030c010b41822a21030b20004200370308200041206a410d3602002000411c6a4180e8c900360200200041186a200336020020004201370300200424000f0b200341e7066a200f290300370000200341ef066a20102d00003a0000200320032f01c80d3b01d006200320083600db06200320063600d7062003200b3600d306200320032903a00e3700df062003200e2d00003a00d20602400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b2014200a4100477241ff01710d1e0b200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e419ad6ca00ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032802c0032201410120011b21084100210202400240024020032902c403420020011b2207422088a7220641014b0d0020060e020201020b2006210103402001410176220b20026a220a20022008200a4105746a200341d0066a412010e7074101481b21022001200b6b220141014b0d000b0b200820024105746a200341d0066a412010e7070d00200220064f0d1d200820024105746a2201200141206a2002417f7320066a41057410e5071a200341c0036a41186a22094200370300200341c0036a41106a220b4200370300200341c0036a41086a22014200370300200342003703c003419ad6ca00ad4280808080b00284220c1001220a290000210d20034190096a41086a2202200a41086a2900003703002003200d37039009200a10292001200229030037030020032003290390093703c00341f0edca00ad4280808080f000841001220a290000210d2002200a41086a2900003703002003200d37039009200a1029200b200329039009220d370300200341d80b6a41086a2001290300370300200341d80b6a41106a200d370300200341d80b6a41186a2002290300370300200320032903c0033703d80b200341203602c4032003200341d80b6a3602c00320082006417f6a2202200341c0036a10b9012009200341d0066a41186a290300370300200b200341d0066a41106a2903003703002001200341d0066a41086a290300370300200320032903d0063703c003200341c0036a41012008200210c50520034190066a41186a220a420037030020034190066a41106a2209420037030020034190066a41086a220142003703002003420037039006200c1001220b290000210c200b290008210d200b10292001200d3703002003200c3703900641f8d7ca00ad4280808080d000841001220b290008210c200b290000210d200b1029200341d80d6a41106a200d370300200341d80d6a41186a200c370300200341d80d6a41086a200129030037030020032003290390063703d80d200341c0036a200341d80d6a412010cd0120032d00c003210b200a200341d9036a2900003703002009200341d1036a2900003703002001200341c9036a290000370300200320032900c103370390060240200b4101470d00200341880d6a41186a200a290300220c370300200341880d6a41106a2009290300220d370300200341880d6a41086a200129030022123703002003200329039006221b3703880d200341b00a6a41186a200c370300200341b00a6a41106a200d370300200341b00a6a41086a20123703002003201b3703b00a4100210102400240024002402006417f6a220b41014b0d00200b0e020201020b03402002410176220b20016a220a20012008200a4105746a200341b00a6a412010e7074101481b21012002200b6b220241014b0d000b0b200820014105746a200341b00a6a412010e707450d010b20034190096a41186a420037030020034190096a41106a220a420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220b290000210c200341d80d6a41086a2202200b41086a2900003703002003200c3703d80d200b102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220b290000210c2002200b41086a2900003703002003200c3703d80d200b1029200a20032903d80d220c370300200341f0076a41086a2001290300370300200341f0076a41106a200c370300200341f0076a41186a200229030037030020032003290390093703f007200341f0076aad428080808080048410040c010b200341d9036a200341c80a6a290300370000200341d1036a200341c00a6a290300370000200341c9036a200341b80a6a290300370000200320032903b00a3700c103200341013a00c003200341c0036a10c6050b2003418d023b01c003200341c0036a10cb010240200742ffffff3f83500d00200810290b2000420037030820004200370300200424000f0b0240200742ffffff3f83500d00200810290b4183aa0421030c3a0b200341ff026a200f29030037000020034187036a20102d00003a0000200320032f01c80d3b01e802200320083600f302200320063600ef022003200b3600eb02200320032903a00e3700f7022003200e2d00003a00ea02200341d0066a41186a200341c90e6a290000370300200341d0066a41106a200341c10e6a290000370300200341d0066a41086a200341b90e6a290000370300200320032900b10e3703d006024002400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b410021092014200a4100477241ff01710d010b200341e8026a200341d0066a412010e707450d37200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e419ad6ca00ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032802c0032201410120011b21084109210541eeebca00210e418080042109410021020240024020032902c403420020011b2207422088a7220641014b0d0020060e023701370b2006210103402001410176220b20026a220a20022008200a4105746a200341e8026a412010e7074101481b21022001200b6b220141014b0d000b0b200820024105746a220f200341e8026a412010e7070d35410021010240200641014b0d0020060e023735370b2006210b0340200b410176220a20016a22092001200820094105746a200341d0066a412010e7074101481b2101200b200a6b220b41014b0d000c350b0b410221030c370b024002400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b2014200a4100477241ff01710d010b200b200810bb05200341800e6a41186a4200370300200341800e6a41106a22094200370300200341800e6a41086a22014200370300200342003703800e419ad6ca00ad4280808080b00284220710012202290000210c2001200241086a2900003703002003200c3703800e2002102941f0edca00ad4280808080f000841001220a290000210c20034190066a41086a2202200a41086a2900003703002003200c37039006200a10292009200329039006220c370300200341b0066a41086a2001290300370300200341b0066a41106a200c370300200341b0066a41186a2002290300370300200320032903800e3703b006200341c0036a200341b0066a108d02200b200820032802c0032201410120011b220520032902c403420020011b220c422088a710bc0520034190066a41186a220a420037030020034190066a41106a2209420037030020024200370300200342003703900620071001220129000021072001290008210d200110292002200d370300200320073703900641f8d7ca00ad4280808080d000841001220129000821072001290000210d20011029200341d80d6a41106a200d370300200341d80d6a41186a2007370300200341d80d6a41086a200229030037030020032003290390063703d80d200341c0036a200341d80d6a412010cd0120032d00c0032101200a200341d9036a2900003703002009200341d1036a2900003703002002200341c9036a290000370300200320032900c10337039006024020014101470d00200341880d6a41186a200a2903002207370300200341880d6a41106a2009290300220d370300200341880d6a41086a200229030022123703002003200329039006221b3703880d200341b00a6a41186a2007370300200341b00a6a41106a200d370300200341b00a6a41086a20123703002003201b3703b00a410021020240024002400240200841014b0d0020080e020201020b2008210103402001410176220a20026a22092002200b20094105746a200341b00a6a412010e7074101481b21022001200a6b220141014b0d000b0b200b20024105746a200341b00a6a412010e707450d010b20034190096a41186a420037030020034190096a41106a2209420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220a2900002107200341d80d6a41086a2202200a41086a290000370300200320073703d80d200a102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220a29000021072002200a41086a290000370300200320073703d80d200a1029200920032903d80d2207370300200341f0076a41086a2001290300370300200341f0076a41106a2007370300200341f0076a41186a200229030037030020032003290390093703f007200341f0076aad428080808080048410040c010b200341d9036a200341c80a6a290300370000200341d1036a200341c00a6a290300370000200341c9036a200341b80a6a290300370000200320032903b00a3700c103200341013a00c003200341c0036a10c6050b0240200c42ffffff3f83500d00200510290b20034190096a41186a420037030020034190096a41106a2209420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220a2900002107200341d80d6a41086a2202200a41086a290000370300200320073703d80d200a102920012002290300370300200320032903d80d3703900941f0edca00ad4280808080f000841001220a29000021072002200a41086a290000370300200320073703d80d200a1029200920032903d80d2207370300200341f0076a41086a2001290300370300200341f0076a41106a2007370300200341f0076a41186a200229030037030020032003290390093703f007200341203602c4032003200341f0076a3602c003200b2008200341c0036a10b9010240200641ffffff3f71450d00200b10290b2003418d063b01c003200341c0036a10cb012000420037030820004200370300200424000f0b0240200641ffffff3f71450d00200b10290b20004200370308200041186a410236020020004201370300200424000f0b200241106a2902002107200241186a2f010021012002411a6a290100210c200341e7066a200f290300370000200341ef066a20102d00003a00002003200e2d00003a00d206200320032f01c80d3b01d006200320083600db06200320063600d7062003200b3600d306200320032903a00e3700df062003200c3703f00d200320013b01ee0d200320073701e60d200320144108763b01d80d200320093a00e20d200320094110763b01e40d200320094108763a00e30d200320053a00de0d200320054110763b01e00d200320054108763a00df0d200320153a00da0d200320154110763b01dc0d200320154108763a00db0d0240201441ff01714101470d00200a0d00200341d80b6a41186a200341d80d6a41186a290300370300200341d80b6a41106a200341d80d6a41106a290300370300200341d80b6a41086a200341d80d6a41086a290300370300200320032903d80d3703d80b200341d80b6a200341d0066a412010e707450d2f200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e419ad6ca00ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032802c0032201410120011b21084109210641eeebca002109418080042105410021020240024020032902c403420020011b2207422088a7220e41014b0d00200e0e022f012f0b200e210103402001410176220b20026a220a20022008200a4105746a200341d80b6a412010e7074101481b21022001200b6b220141014b0d000b0b200820024105746a220f200341d80b6a412010e7070d2d410021010240200e41014b0d00200e0e022f2d2f0b200e210b0340200b410176220a20016a22062001200820064105746a200341d0066a412010e7074101481b2101200b200a6b220b41014b0d000c2d0b0b41002105410221030c2f0b200341c70a6a200f290300370000200341cf0a6a20102d00003a0000200320032f01c80d3b01b00a200320083600bb0a200320063600b70a2003200b3600b30a200320032903a00e3700bf0a2003200e2d00003a00b20a02400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b2014200a4100477241ff01710d1b0b200341800e6a41186a4200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e419ad6ca00ad4280808080b002841001220129000021072002200141086a290000370300200320073703800e2001102941f0edca00ad4280808080f0008410012201290000210720034190066a41086a220a200141086a290000370300200320073703900620011029200b2003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a200a290300370300200320032903800e3703b006200341c0036a200341b0066a108d0220032802c0032201410120011b21084100210202400240024020032902c403420020011b2207422088a7220141014b0d0020010e020201020b03402001410176220b20026a220a20022008200a4105746a200341b00a6a412010e7074101481b21022001200b6b220141014b0d000b0b200820024105746a200341b00a6a412010e7070d000240200742ffffff3f83500d00200810290b20034190096a41186a420037030020034190096a41106a220a420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220b2900002107200341d80d6a41086a2202200b41086a290000370300200320073703d80d200b102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220b29000021072002200b41086a290000370300200320073703d80d200b1029200a20032903d80d2207370300200341f0076a41086a2001290300370300200341f0076a41106a2007370300200341f0076a41186a200229030037030020032003290390093703f007412010272202450d4c200220032903b00a370000200241186a200341b00a6a41186a2201290300370000200241106a200341b00a6a41106a220b290300370000200241086a200341b00a6a41086a220a290300370000200341f0076aad42808080808004842002ad4280808080800484100320021029200341d9036a2001290300370000200341d1036a200b290300370000200341c9036a200a290300370000200320032903b00a3700c103200341013a00c003200341c0036a10c6052000420037030820004200370300200424000f0b0240200742ffffff3f83500d00200810290b4183aa0421030c290b02400240200a417f6a220241034b0d00024020020e0400010102000b200541017420094d0d00201541ff0171450d010b2014200a4100477241ff0171450d0020004200370308200041186a410236020020004201370300200424000f0b20034190096a41186a420037030020034190096a41106a220a420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220b2900002107200341d80d6a41086a2202200b41086a290000370300200320073703d80d200b102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220b29000021072002200b41086a290000370300200320073703d80d200b1029200a20032903d80d2207370300200341f0076a41086a2001290300370300200341f0076a41106a2007370300200341f0076a41186a200229030037030020032003290390093703f007200341f0076aad42808080808004841004200341003a00c003200341c0036a10c6052000420037030820004200370300200424000f0b200341c0036a41386a200141c0006a290300370300200341c0036a41306a200141386a290300370300200341c0036a41286a200141306a290300370300200341c0036a41206a200141286a290300370300200341c0036a41186a200141206a290300370300200341c0036a41106a200141186a290300370300200341c0036a41086a200141106a2903003703002003200141086a2903003703c003200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10c705200424000f0b200141146a2802002105200141106a280200210a2001410c6a2802002108200141086a280200210b20012802042106200341e8026a200141186a41c80010e4071a20022d0001210920022d0000210102400240024020060e03000102000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b2003200a3602c803200320083602c4032003200b3602c003200341a00e6a20012009200341c0036a10c8050240024020032d00a00e4104460d0020032802a00e21022000411c6a20032902a40e370200200041186a2002360200420121070c010b420021070b2000420037030820002007370300200424000f0b2002411a6a2901002107200241196a2d00002106200241186a2d0000210e200241166a2f0100210f200241156a2d00002110200241146a2d00002114200241126a2f01002115200241116a2d00002113200241106a2d000021112002410e6a2f010021162002410d6a2d000021172002410c6a2d000021182002410a6a2f01002119200241096a2d0000211a200241086a2d00002141200241066a2f01002142200241056a2d00002143200241046a2d00002144200241026a2f01002145200341d0066a200341e8026a41c80010e4071a024002400240200141ff01710d00200941ff01714101470d00200341d80d6a41186a4200370300200341d80d6a41106a22094200370300200341d80d6a41086a22024200370300200342003703d80d41b1dcc900ad4280808080f0008410012201290000210c2002200141086a2900003703002003200c3703d80d2001102941b8dcc900ad4280808080a0018410012201290000210c20034190066a41086a2246200141086a2900003703002003200c37039006200110292009200329039006220c370300200341880d6a41086a2002290300370300200341880d6a41106a200c370300200341880d6a41186a2046290300370300200320032903d80d3703880d200341c0036a200341880d6a108d0220032802c003210220032902c403210c200341a00e6a410c6a20034180076a290200370200200341b40e6a20034188076a290200370200200341bc0e6a20034190076a290200370200200341f0c2c98b063602a00e200320032902f8063702a40e200341b00a6a410c6a2005360200200341b00a6a41086a200a360200200320083602b40a2003200b3602b00a200320032802d0063602c00a200c420020021b210c2002410120021b2146200341c0036a200341a00e6a200341b00a6a10b6042003280280040d01200ca7220b0d024125210341b4bbc7002102410021010c280b02402005450d002005410c6c21022008210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b41022101200a450d26200a410c6c450d26200810290c270b20032802c0032102200341f0076a200341c0036a41047241cc0010e4071a20034190096a200341f0076a41cc0010e4071a412010272201450d5720012007370018200120063a00172001200e3a00162001200f3b0014200120103a0013200120143a0012200120153b0010200120133a000f200120113a000e200120163b000c200120173a000b200120183a000a200120193b00082001201a3a0007200120413a0006200120423b0004200120433a0003200120443a0002200120453b0000200320023602a00e200341a00e6a41047220034190096a41cc0010e4071a2003200c422088a73602f40e2003200b3602f00e41d00010272202450d57200341800e6a41086a220a200341a00e6a41086a290300370300200341800e6a41106a2208200341a00e6a41106a290300370300200341800e6a41186a2206200341a00e6a41186a290300370300200320032903a00e3703800e200341a00e6a41286a2903002107200341d00e6a290300210d200341a00e6a41386a290300211220032903c00e211b200341c0036a200341e00e6a10ee02200241386a20123703002002200d370330200241286a20073703002002201b370320200241186a2006290300370300200241106a2008290300370300200241086a200a290300370300200220032903800e370300200220032903c003370340200241c8006a200341c0036a41086a28020036020041041027220a450d49200a200b36000020034284808080c0003702dc0b2003200a3602d80b200341c0036a41e5cdc20010e902200341b00a6a20032802c003220820032802c803108b0320032902b40a420020032802b00a220a1b2107200a4101200a1b2106024020032802c403450d00200810290b200320074220883e02b40a200320063602b00a200341c0036a200341b00a6a10c905200341c0036a41086a280200210820032802c403210920032802c003210a200341c0036a41e5cdc200200341d80b6a10ea02200341b00a6a20032802c003221020032802c80310ce0120084100200a1b210f20094100200a1b210e20032902b40a420020032802b00a22081b210d200a4104200a1b21052008410120081b2108024020032802c403450d00201010290b200341d80d6a41206a200f360200200341f40d6a200e360200200341d80d6a41106a200d370300200341d80d6a41086a200341d80b6a41086a280200360200200320032903d80b3703d80d200320053602f00d200320083602e40d02402007a7450d00200610290b200341d80b6a41086a220a200241086a290300370300200341d80b6a41106a200241106a290300370300200341d80b6a41186a200241186a290300370300200341d80b6a41206a200241206a290300370300200341d80b6a41286a2206200241286a290300370300200341d80b6a41306a2209200241306a290300370300200341d80b6a41386a220f200241386a290300370300200341b0036a41086a2210200241cc006a280200360200200320022903003703d80b200320022902443703b00320022802402214450d1e200341880d6a41386a2215200f290300370300200341880d6a41306a22132009290300370300200341880d6a41286a22112006290300370300200341880d6a41206a2216200341d80b6a41206a2217290300370300200341880d6a41186a2218200341d80b6a41186a2219290300370300200341880d6a41106a221a200341d80b6a41106a2241290300370300200341880d6a41086a2242200a290300370300200341f80c6a41086a22432010280200360200200320032903d80b3703880d200320032903b0033703f80c200f2015290300370300200920132903003703002006201129030037030020172016290300370300201920182903003703002041201a290300370300200a2042290300370300200320032903880d3703d80b200320143602980c2003419c0c6a220a20032903f80c370200200a41086a204328020036020041041027220a450d49200a200b360000200341c0036a410c6a220641002900e5cd42370000200641086a41002900edcd4237000020034284808080c0003702c4032003200a3602c0032003200341d80b6a3602dc03200341800e6a200341c0036a10ca05200a1029200341c0036a200341800e6a10d50220034190026a20032802c003220620032802c8034180a6cc004100410010c701200328029002210a024020032802c403450d00200610290b0240200a4101460d00200341b00a6a200341d80b6a41d00010e4071a41201027220a450d4a200342013702b4062003200a3602b006200341b0066a41004101109e0120034190066a41086a220820032802b806220a41016a36020020032802b006200a4105746a220a2001290000370000200a41086a200141086a290000370000200a41106a200141106a290000370000200a41186a200141186a290000370000200320032903b00637039006200341c0036a200341b00a6a41d00010e4071a20034190046a220a41086a2008280200360200200a200329039006370200200341b00a6a200341800e6a10d50220032802b00a210a200320032802b80a3602b4062003200a3602b006200341c0036a200341b0066a10e402024020032802b40a450d00200a10290b0240200328028404220a450d00200a41306c450d0020032802800410290b024020032802940441ffffff3f71450d0020032802900410290b20034190066a41186a200341800e6a41186a29030037030020034190066a41106a200341800e6a41106a29030037030020034190066a41086a200341800e6a41086a290300370300200320032903800e370390064100210a024020032802f80d220f41014b0d000240200f0e020022000b200341b0066a41186a20034190066a41186a290300370300200341b0066a41106a20034190066a41106a290300370300200341b0066a41086a20034190066a41086a29030037030020032003290390063703b0064100210a0c220b200f21080340200a20084101762206200a6a22092005200941246c6a280200200b4b1b210a200820066b220841014b0d000c210b0b200328029c0c220b450d1e200b41306c450d1e20032802980c10290c1e0b410021014125210341b4bbc7002102200b41ffffff3f710d230c250b418230210102400240024020022d00000d0020022d000141ff01714102470d0042002107200341800e6a41186a22084200370300200341800e6a41106a220b4200370300200341800e6a41086a22024200370300200342003703800e41f182cc00ad4280808080c00184221210012201290000210c2001290008210d200110292002200d3703002003200c3703800e41ac84cc00ad4280808080900184220d10012201290000210c20034190066a41086a220a200141086a2900003703002003200c3703900620011029200b200329039006220c370300200341b0066a41086a22062002290300370300200341b0066a41106a2209200c370300200341b0066a41186a2205200a290300370300200320032903800e3703b00620034198026a200341b0066a41204180a6cc004100410010c70141833021012003280298024101470d010b200041206a41133602002000411c6a41eaa3c800360200200041186a2001360200420121070c010b20084200370300200b420037030020024200370300200342003703800e201210012201290000210c2001290008211220011029200220123703002003200c3703800e200d10012201290000210c200a200141086a2900003703002003200c3703900620011029200b200329039006370000200b41086a200a290300370000200620022903003703002009200b29030037030020052008290300370300200320032903800e3703b006200341013a00b003200341b0066aad4280808080800484200341b0036aad4280808080108410030b2000200737030020004200370308200424000f0b200341d80b6a41086a2245200141206a290300370300200341d80b6a41106a2246200141286a2903003703002003200141186a2903003703d80b200141146a2802002108200141106a280200210a2001410c6a280200210b2002411a6a2901002107200241196a2d00002109200241186a2d00002105200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002114200241116a2d00002115200241106a2d000021132002410e6a2f010021112002410d6a2d000021162002410c6a2d000021172002410a6a2f01002118200241096a2d00002119200241086a2d0000211a200241066a2f01002141200241056a2d00002142200241046a2d0000214341022149200241026a2f01002144200141096a2f0000214720022d0001210620022d0000210220012d000b21480240024002400240024002400240200141086a2d00000e0700010203040506000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b410021010240024002402006200241ff01714100477241ff0171450d00410221030c010b41d482cc00ad4280808080d000841001220229000021072002290008210c2002102941fab1c400ad4280808080b0018410012202290000210d2002290008211220021029200320123702c8062003200d3702c0062003200c3702b806200320073702b00641002101200341b8026a200341b0066a41204180a6cc004100410010c70141ab9dc4002102024020032802b8024101460d00200341800e6a41186a22094200370300200341800e6a41106a22014200370300200341800e6a41086a22024200370300200342003703800e41b3e6ca00ad4280808080e00084220c1001220829000021072002200841086a290000370300200320073703800e2008102941c9e6ca00ad4280808080e00084220d10012206290000210720034190066a41086a2208200641086a29000037030020032007370390062006102920012003290390062207370300200341b0066a41086a22062002290300370300200341b0066a41106a22052007370300200341b0066a41186a220e2008290300370300200320032903800e3703b006200341b0026a200341b0066a412010fc0120032802b40241a08d066e410020032802b0021b200a4d0d0241bc9dc40021024180800421010b410321030b20004200370308200041206a41113602002000411c6a2002360200200041186a200141808004712003724180327236020020004201370300200424000f0b41d482cc00ad4280808080d0008422071001220f2900002112200f290008211b200f102941d982cc00ad4280808080e00184221c1001220f290000211d200f290008211e200f10292003201e3702c8062003201d3702c0062003201b3702b806200320123702b006200341a8026a200341b0066a412010fc0120032802a802211020032802ac02211420071001220f2900002112200f290008211b200f1029201c1001220f290000211c200f290008211d200f10292003201d3702c8062003201c3702c0062003201b3702b806200320123702b0062003201441016a410120101b22103602c003200341b0066aad4280808080800484200341c0036aad4280808080c000841003200942003703002001420037030020024200370300200342003703800e200c1001220f290000210c2002200f41086a2900003703002003200c3703800e200f1029200d1001220f290000210c2008200f41086a2900003703002003200c37039006200f10292001200329039006370000200141086a20082903003700002006200229030037030020052001290300370300200e2009290300370300200320032903800e3703b006200341a0026a200341b0066a412010fc0120032802a402210120032802a002210820071001220229000021072002290008210c2002102941fab1c400ad4280808080b0018410012202290000210d2002290008211220021029200320123702c8062003200d3702c0062003200c3702b806200320073702b006200341203602c4032003200341b0066a3602c003200a2001410020081b200b6a2202200341c0036a10c901200341d4036a2002360200200341c0036a41106a200a360200200341cc036a2010360200200341c0036a41086a41013a00002003410f3a00c003200341c0036a10cb012000420037030820004200370300200424000f0b024002400240200241ff01710d00200641ff01714101470d002046290300210c20032903e00b210d20032802d80b2102200320193a00b7062003201a3a00b606200320413b01b406200320423a00b306200320433a00b206200320443b01b006200320153a00bf06200320133a00be06200320113b01bc06200320163a00bb06200320173a00ba06200320183b01b806200320093a00c706200320053a00c6062003200e3b01c4062003200f3a00c306200320103a00c206200320143b01c006200320073702c806200341c8036a20032902b006370300200341c0036a41106a20032902b806370300200341d8036a20032902c006370300200341e0036a20073703002003200b3602c403200341003602c003200341a00e6a200341c0036a200a20082002200d200c10eb0420032d00a00e22024104460d0220032f00a10e20032d00a30e41107472210120032902a40e21070c010b410221020b200042003703082000411c6a2007370200200041186a200141087420027236020020004201370300200424000f0b2000420037030820004200370300200424000f0b02400240200241ff01710d00200641ff01714101470d002045290300210c20032903d80b210d200320073703b80e200320093a00b70e200320053a00b60e2003200e3b01b40e2003200f3a00b30e200320103a00b20e200320143b01b00e200320153a00af0e200320133a00ae0e200320113b01ac0e200320163a00ab0e200320173a00aa0e200320183b01a80e200320193a00a70e2003201a3a00a60e200320413b01a40e200320423a00a30e200320433a00a20e200320443b01a00e2003200341a00e6a3602b00a200341c0036a200341b00a6a10aa0420032802c0034101460d014100210b4102210a4119210241032101410d210341cd9dc40021080c1f0b41002102410221014100210a4100210b0c1e0b200320032802c4033602c403200341013602c003200341b00a6a200341c0036a200b200a2008200d200c10eb0420032d00b00a22014104470d1c2000420037030820004200370300200424000f0b02400240200241ff01710d00200641ff01714101470d0020032900e10b210c20032d00e00b210220032d00df0b210120032f00dd0b210620032d00dc0b214520032d00db0b214620032f00d90b214920032d00d80b214a200320073703b80e200320093a00b70e200320053a00b60e2003200e3b01b40e2003200f3a00b30e200320103a00b20e200320143b01b00e200320153a00af0e200320133a00ae0e200320113b01ac0e200320163a00ab0e200320173a00aa0e200320183b01a80e200320193a00a70e2003201a3a00a60e200320413b01a40e200320423a00a30e200320433a00a20e200320443b01a00e2003200c3702c806200320023a00c706200320013a00c606200320063b01c406200320453a00c306200320463a00c206200320493b01c0062003204a3a00bf06200320084118763a00be06200320084108763b01bc06200320083a00bb062003200a4118763a00ba062003200a4108763b01b8062003200a3a00b7062003200b4118763a00b6062003200b4108763b01b4062003200b3a00b306200320483a00b206200320473b01b0062003200341a00e6a3602b00a200341c0036a200341b00a6a10aa04024020032802c0034101470d0020032802c4032102200341c0036a41186a220b200341b0066a41186a290200370300200341c0036a41106a220a200341b0066a41106a290200370300200341c0036a41086a2208200341b0066a41086a290200370300200320032902b0063703c003200341b00a6a200210c20420033502b80a210720032802b00a2101412010272202450d4b200220032903c003370000200241186a200b290300370000200241106a200a290300370000200241086a200829030037000020074220862001ad842002ad4280808080800484100320021029024020032802b40a450d00200110290b2000420037030820004200370300200424000f0b4183b20821030c010b4182b20821030b20004200370308200041206a410d3602002000411c6a41cd9dc400360200200041186a200336020020004201370300200424000f0b200141c0006a280200214e2001413c6a280200214a200141386a280200214b200141346a280200214f200141306a280200214c20032802ec0b214d200341a7066a2045290300370000200341af066a20462d00003a00002003200836009b062003200a360097062003200b36009306200320483a009206200320473b019006200320032903d80b37009f06410021010240200241ff0171450d000c1a0b200641ff01714101470d19200320073703c80a200320093a00c70a200320053a00c60a2003200e3b01c40a2003200f3a00c30a200320103a00c20a200320143b01c00a200320153a00bf0a200320133a00be0a200320113b01bc0a200320163a00bb0a200320173a00ba0a200320183b01b80a200320193a00b70a2003201a3a00b60a200320413b01b40a200320423a00b30a200320433a00b20a200320443b01b00a200341a00e6a204c10c304200341c0036a20032802a00e220120032802a80e10c804200341d0066a41026a220b20032d00c7033a0000200341f80c6a41086a220a200341e4036a280200360200200320032f00c5033b01d0062003200341dc036a2902003703f80c02400240024002400240024020032d00c40322024103460d00200341f4036a2802002110200341f0036a2802002106200341ec036a280200210e200341e8036a2802002114200341d8036a2802002109200341d4036a280200210f200341d0036a2802002115200341cc036a2802002105200341c0036a41086a280200210820032802c0032113200341e8026a41026a200b2d00003a000020034190096a41086a200a280200360200200320032f01d0063b01e802200320032903f80c37039009024020032802a40e450d00200110290b200341880d6a41026a200341e8026a41026a2d000022013a0000200341f0076a41086a220b20034190096a41086a280200360200200320032f01e802220a3b01880d20032003290390093703f007200341b40e6a2009360200200341b00e6a200f360200200341ac0e6a2015360200200341a00e6a41086a22152005360200200341d00e6a2010360200200341cc0e6a2006360200200341c80e6a200e360200200341c40e6a2014360200200320023a00a00e2003200a3b00a10e200320013a00a30e200320083602a40e200341b80e6a20032903f007370300200341c00e6a200b280200360200200241014b0d0320020e020102010b024020032802a40e450d00200110290b4180800c2101410321494111210b41da9dc40021020c1e0b418080102101410d210b41eb9dc40021022015200341b00a6a412010e7070d022008204d470d02204e4180a0014d0d034180803021014110210b41edd3c8002102410321490c1d0b4180801421014111210b41f89dc40021022006450d01200e1029410321490c1c0b02402005450d00200810290b4180801421014111210b41f89dc40021022009450d00200f10290b410321490c1a0b0240204f41808080054d0d004180802c2101410c210b41e1d3c8002102410321490c1a0b200341f4036a204e360200200341f0036a204a360200200341ec036a204b360200200341e8036a204f360200200341cd036a20034198066a290300370000200341d5036a200341a0066a290300370000200341dd036a200341a8066a290300370000200341013a00c403200320133602c00320032003290390063700c503200341f0076a204c10c30420033502f807210720032802f0072102410410272201450d4720034204370294092003200136029009200341c0036a20034190096a10c404200328029409210120074220862002ad84200335029809422086200328029009220bad84100302402001450d00200b10290b024020032802f407450d00200210290b0240204a450d00204b10290b2000420037030820004200370300200424000f0b20032802d80b2105200341a00e6a200b10c304200341c0036a20032802a00e220220032802a80e10c804200341d0066a41026a20032d00c7033a0000200341f80c6a41086a200341e4036a280200360200200320032f00c5033b01d0062003200341dc036a2902003703f80c024002400240024020032d00c40322094103460d00200341c0036a41346a2802002119200341c0036a41306a2802002113200341ec036a2802002117200341c0036a41286a2802002111200341c0036a41186a280200210f200341c0036a41146a2802002114200341c0036a41106a2802002116200341c0036a410c6a2802002110200341c0036a41086a280200211520032802c0032118200341e8026a41026a2201200341d0066a41026a22062d00003a000020034190096a41086a220e200341f80c6a41086a280200360200200320032f01d0063b01e802200320032903f80c37039009024020032802a40e450d00200210290b200341880d6a41026a20012d000022023a0000200341f0076a41086a200e2802002201360200200320032f01e802220e3b01880d200320032903900922073703f007200620023a0000200341b0036a41086a20013602002003200e3b01d006200320073703b00341949ec4002102410f21014183b21c2106200941014b0d0220090e020301030b024020032802a40e450d00200210290b41da9dc4002102411121014183b20c21060c020b200341bf0e6a200341b0036a41086a2d00003a0000200320032f01d0063b01a00e2003200f3600b30e200320143600af0e200320163600ab0e200320103600a70e200320153600a30e200320032903b0033700b70e2003200341d2066a2d00003a00a20e0240024020052011470d002005ad422086200aad84101022022900002107200241086a290000210c200241106a290000210d200341c0036a41186a200241186a290000370300200341c0036a41106a200d370300200341c0036a41086a200c370300200320073703c00320021029200341c0036a200341a00e6a412010e707450d010b02402013450d00201710290b41899ec4002102410b21014183b21821060c020b200341800e6a41186a4200370300200341800e6a41106a22064200370300200341800e6a41086a22024200370300200342003703800e41b3e6ca00ad4280808080e000841001220129000021072002200141086a290000370300200320073703800e2001102941c9e6ca00ad4280808080e0008410012201290000210720034190066a41086a2209200141086a29000037030020032007370390062001102920062003290390062207370300200341b0066a41086a2002290300370300200341b0066a41106a2007370300200341b0066a41186a2009290300370300200320032903800e3703b006200341c0026a200341b0066a412010fc010240201820032802c40241a08d066e410020032802c0021b4b0d00200341c0036a200b10c30420033502c80342208620032802c0032202ad841004024020032802c403450d00200210290b200320053602b80a200320083602b40a2003200a3602b00a200320193602c803200320133602c403200320173602c00320034190096a200b4100200341b00a6a200341c0036a10c9040c1a0b200341dc036a2019360200200341d8036a2013360200200341d4036a2017360200200341d0036a2005360200200341cc036a2008360200200341c0036a41086a200a360200200341023a00c403200320183602c00320034190096a200b10c30420033502980921072003280290092102410410272201450d48200342043702b40a200320013602b00a200341c0036a200341b00a6a10c40420032802b40a210120074220862002ad8420033502b80a42208620032802b00a220bad84100302402001450d00200b10290b0240200328029409450d00200210290b02402008450d00200a10290b2013450d19201710290c190b02402010450d00201510290b200f450d00201410290b02402008450d00200a10290b20004200370308200041206a20013602002000411c6a2002360200200041186a200636020020004201370300200424000f0b200341c0036a200141046a41c80010e4071a200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a10cb05200424000f0b200341c80d6a41026a22092001410b6a2d00003a0000200320012f00093b01c80d2003200141186a2802003602d80d20032001411c6a2d00003a00dc0d200320012f011e3b01f80c200141286a2903002107200141206a290300211d200141c0006a290300210d200141386a2903002112200141d0006a290300211b200141c8006a290300211c200141086a2d0000210b2001410c6a2802002105200141106a2802002106200141146a280200210e200141306a290300210c200141d8006a280200210f200141dc006a280200211020012d001d2115200341e8026a41086a2214200141e8006a2802003602002003200141e0006a2903003703e80220022d0001210820022d0000210a02400240024002400240200b0e050001020304000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b2003418c0d6a20032d00dc0d3a0000200341800e6a41026a20092d00003a0000200320032f01c80d3b01800e200320032802d80d3602880d200320032f01f80c3b01b006200341e7036a201b370000200341d7036a200d370000200320074238883c00c603200320074228883d01c403200320074208883e02c0032003201c3700df03200320123700cf03200320103600f3032003200f3600ef032003200c3700c703200341ff036a20142f01003b0000200320032903e8023700f703024002400240200a41ff01710d00200841ff01714102470d00412010272202450d4a2002201d370017200220032f01800e3b00002002200e36000b2002200636000720022005360003200220032802880d36000f200220153a0014200220032f01b0063b00152002411f6a20073c0000200241026a200341800e6a41026a2d00003a0000200241136a2003418c0d6a2d00003a0000200341d0066a200241201096042002102941002102200341a00e6a200341c0036a20032802d006220920032802d8064180a6cc004100109704024002400240024020032d00a00e4101470d00200341b00a6a410f6a2202200341b10e6a280000360000200341b00a6a41086a2201200341aa0e6a290100370300200341f0076a410f6a220b2002280000360000200341f0076a41086a22022001290300370300200341e10b6a2002290300370000200341e80b6a200b280000360000200320032d00a10e3a00d80b200320032901a20e3700d90b200341a00e6a200341d80b6a10ac0420032802a00e220120032802a80e109a0441ff01712102024020032802a40e450d00200110290b20024102470d01200341b00a6a41106a200341d80b6a41106a280200360200200341b00a6a41086a200341d80b6a41086a290300370300200320032903d80b3703b00a200341b30e6a200341880d6a41046a2d00003a0000200341bf0e6a20073c00002003200341800e6a41026a2d00003a00a20e200320032f01800e3b01a00e2003200e3600ab0e200320063600a70e200320053600a30e200320032802880d3600af0e200320153a00b40e2003201d3700b70e200320032f01b0063b00b50e20034190096a200341b00a6a200341a00e6a10ad0420032d00900922014104470d03024020032802d406450d00200910290b2000420037030820004200370300200424000f0b411b210b410321014118210a41c9eac300210820032802d4060d010c040b41052102411b210b410321014110210a419febc300210820032802d406450d030b200910290c020b20032f00910920032d00930941107472220b41ffffff077122024110762106200241087621022003290294092207422088a7210a2007a7210820032802d406450d02200910290c020b410221010b0b20004200370308200041206a200a3602002000411c6a2008360200200041186a2006411074200241ff017141087472200b41ff01717241087420017236020020004201370300200424000f0b200341f0076a41046a220120032d00dc0d3a0000200320032f01c80d3b01d006200320032802d80d3602f007200320092d00003a00d2062008200a41ff01714100477241ff01710d16200341800e6a41186a220a4200370300200341800e6a41106a22084200370300200341800e6a41086a22024200370300200342003703800e41c087cc00ad4280808080e00084221e1001220b290000212b2002200b41086a2900003703002003202b3703800e200b102941c497c400ad4280808080d00084222b1001220b290008212a200b2900002123200b1029200341b0066a41106a22092023370300200341b0066a41186a2210202a370300200341b0066a41086a22142002290300370300200320032903800e3703b006200341c8026a200341b0066a412010e301200341c8026a41106a290300212a20032903d002212320032802c802210b200a42003703002008420037030020024200370300200342003703800e201e1001220a290000212e2002200a41086a2900003703002003202e3703800e200a1029202b1001220a290008212b200a290000212e200a10292009202e3703002010202b37030020142002290300370300200320032903800e3703b006200320234200200b1b222b201d7c22233703c0032003202a4200200b1b20077c2023202b54ad7c3703c803200341b0066aad4280808080800484200341c0036aad222b42808080808002841003200341a00e6a41026a220b20032d00d2063a0000200341c0036a41046a20012d00003a0000200320032f01d0063b01a00e200320032802f0073602c003201e10012202290000212a20034190066a41086a200241086a2900003703002003202a3703900620021029201e10012202290008211e20022d0007210a20022d0006210820022f0004210920022d0003211020022d0002211420022f0000211320021029411410272202450d46200220032f01a00e3b00002002200e36000b2002200636000720022005360003200220032802c00336000f200241026a200b2d00003a0000200241136a200341c4036a2d00003a0000411410272201450d4620012002290000370000200141106a220b200241106a280000360000200141086a2211200241086a29000037000020021029413410272202450d462002201e3700182002200a3a0017200220083a0016200220093b0014200220103a0013200220143a0012200220133b00102002200329039006370000200241086a20034190066a41086a29030037000020022001290000370020200241286a2011290000370000200241306a200b28000036000020011029200320073703c8032003201d3703c0032002ad4280808080c00684202b42808080808002841003200210290240200c4201520d00200341a00e6a41026a220120032d00d2063a0000200341c0036a41046a220b200341f0076a41046a2d00003a0000200320032f01d0063b01a00e200320032802f0073602c00341c087cc00ad4280808080e0008410012202290000210720034190066a41086a200241086a29000037030020032007370390062002102941dfb3c700ad4280808080f0008410012202290008210720022d0007210a20022d0006210820022f0004210920022d0003211020022d0002211420022f0000211320021029411410272202450d47200220032f01a00e3b00002002200e36000b2002200636000720022005360003200220032802c00336000f200241026a20012d00003a0000200241136a200b2d00003a0000411410272201450d4720012002290000370000200141106a220b200241106a280000360000200141086a2211200241086a29000037000020021029413410272202450d47200220073700182002200a3a0017200220083a0016200220093b0014200220103a0013200220143a0012200220133b00102002200329039006370000200241086a20034190066a41086a29030037000020022001290000370020200241286a2011290000370000200241306a200b28000036000020011029412410272201450d472001201c370010200120123700002001200f360020200141186a201b3700002001200d3700082002ad4280808080c006842001ad4280808080c00484100320011029200210290b0240201541ff01714102460d00200341d3036a200341f4076a2d00003a0000200320032d00d2063a00c203200320032f01d0063b01c0032003200e3600cb03200320063600c703200320053600c303200320032802f0073600cf03200341a00e6a200341c0036a10990420032802a00e210120033502a80e2107200320154101713a00b003410110272202450d55200220032d00b0033a000020074220862001ad842002ad4280808080108410032002102920032802a40e450d00200110290b2000420037030820004200370300200424000f0b200141f4006a2802002113200141f0006a280200210b200141ec006a28020021012003418c0d6a20032d00dc0d3a0000200341800e6a41026a20092d00003a0000200320032f01c80d3b01800e200320032802d80d3602880d200320032f01f80c3b01b006200341e7036a201b370000200341d7036a200d370000200320074238883c00c603200320074228883d01c403200320074208883e02c0032003201c3700df03200320123700cf03200320103600f3032003200f3600ef032003200c3700c703200341ff036a20142f01003b0000200320032903e8023700f703024002400240024002400240200a41ff01710d00200841ff01714102470d00412010272202450d4b2002201d370017200220032f01800e3b00002002200e36000b2002200636000720022005360003200220032802880d36000f200220153a0014200220032f01b0063b00152002411f6a20073c0000200241026a200341800e6a41026a2d00003a0000200241136a2003418c0d6a2d00003a0000200341d0066a2002412010960420021029200341a00e6a200341c0036a20032802d006220820032802d8062001201310970420032d00a00e4101470d01200341b00a6a410f6a2202200341b10e6a280000360000200341b00a6a41086a220a200341aa0e6a290100370300200341f0076a410f6a22092002280000360000200341f0076a41086a2202200a29030037030020034190096a41086a220a200229030037030020034190096a410f6a22022009280000360000200320032901a20e37039009200320032d00a10e22093a00a00e200341a90e6a200a290300370000200341b00e6a200228000036000020032003290390093700a10e200341b00a6a200341a00e6a10990420032802b00a220a20032802b80a109a0441ff01712102024020032802b40a450d00200a10290b20024102460d04024041c40141c701200241017122021b2013470d0041b584cc0041f985cc0020021b22022001460d0520022001201310e707450d050b024020032802d406450d00200810290b41052103411b210a4103210241102108419febc3002106200b0d020c030b0240200b450d00200110290b410221020c040b024020032802d406450d00200810290b41002103411b210a410321024118210841c9eac3002106200b450d010b200110290b0c010b200341b90a6a20034190096a41086a290300370000200341b00a6a41106a2003419f096a280000360000200320093a00b00a20032003290390093700b10a2003200341800e6a41026a2d00003a00a20e200320032f01800e3b01a00e2003200e3600ab0e200320063600a70e200320053600a30e200341b30e6a200341880d6a41046a2d00003a0000200341bf0e6a20073c0000200320153a00b40e200320032802880d3600af0e2003201d3700b70e200320032f01b0063b00b50e200341d80b6a200341b00a6a200341a00e6a10ad04024020032d00d80b22024104470d00024020032802d406450d00200810290b0240200b450d00200110290b2000420037030820004200370300200424000f0b20032f00d90b20032d00db0b41107472220a41ffffff0771210620032902dc0b2207422088210c024020032802d406450d00200810290b2006411076210920064108762103200ca721082007a72106200b450d00200110290b20004200370308200041206a20083602002000411c6a2006360200200041186a2009411074200341ff017141087472200a41ff01717241087420027236020020004201370300200424000f0b200241026a29010021072002410a6a290100210c200241126a290100210d20032002411a6a2901003703980e2003200d3703900e2003200c3703880e200320073703800e02400240200841ff01714101470d00200a41ff01710d00200341a00e6a41186a200341800e6a41186a290300370300200341a00e6a41106a200341800e6a41106a290300370300200341a00e6a41086a200341800e6a41086a290300370300200320032903800e3703a00e200341d0066a200341a00e6a109c04200341c0036a20032802d006220220032802d806109d04200341b00a6a41086a2201200341ca036a290100370300200341b00a6a410f6a220b200341d1036a280000360000200320032901c2033703b00a0240024020032d00c0034101470d0020032d00c103210f200341f0076a410f6a200b280000360000200341f0076a41086a2001290300370300200320032903b00a3703f007024020032802d406450d00200210290b20034190096a410f6a2202200341f0076a410f6a28000036000020034190096a41086a2201200341f0076a41086a290300370300200341d80b6a41086a220b2001290300370300200341d80b6a410f6a22012002280000360000200320032903f00722073703d80b200341c9036a200b290300370000200341d0036a20012800003600002003200f3a00c003200320073700c103200341b00a6a200341c0036a10990420032802b00a220220032802b80a109a0441ff01712110024020032802b40a450d00200210290b024020104102460d004100210b4105210a411b21024103210141102108419febc300210941c40141c701201041017122101b200e470d0441b584cc0041f985cc0020101b22102005460d0020102005200e10e7070d040b200341b90a6a200341d80b6a41086a290300370000200341b00a6a41106a200341e70b6a2800003600002003200f3a00b00a200320032903d80b3700b10a200341c0036a41186a200341a00e6a41186a290300370300200341c0036a41106a200341a00e6a41106a290300370300200341c0036a41086a200341a00e6a41086a290300370300200320032903a00e3703c00320034190096a200341b00a6a200341c0036a10ad0420032d00900922014104470d01200341c0036a200341a00e6a109c0420033502c80342208620032802c0032202ad841004024020032802c403450d00200210290b02402006450d00200510290b2000420037030820004200370300200424000f0b024020032802d406450d00200210290b4100210b4102210a411b2102410321014110210841f1eac30021090c020b20032f00910920032d0093094110747241ffffff07712202411076210b2002410876210a2003290294092207422088a721082007a721090c010b41002102410221014100210a4100210b0b02402006450d00200510290b20004200370308200041206a20083602002000411c6a2009360200200041186a200b411074200a4108744180fe037172200241ff01717241087420017236020020004201370300200424000f0b2002411a6a2901002107200241196a2d0000210a200241186a2d00002108200241166a2f01002106200241156a2d00002109200241146a2d00002105200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021142002410d6a2d000021152002410c6a2d000021132002410a6a2f01002111200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f01002141200141216a290000210c200141206a2d000021422001411d6a2f000021432001411c6a2d00002144200141196a2f00002145200141186a2d00002146200141156a2f00002147200141146a2d00002148200141116a2f00002149200141106a2d0000214a2001410d6a2f0000214b2001410c6a2d0000214c200141096a2f0000214d20022d0001210b20022d0000210220012d001f214e20012d001b214f20012d0017215020012d0013215120012d000f215220012d000b21530240024002400240200141086a2d00000e0400010203000b200341c0036a41146a4101360200200342013702c40320034198e3ca003602c003200341043602b40a200341cce3ca003602b00a2003200341b00a6a3602d003200341c0036a4180a6cc001040000b02400240024002400240200241ff01710d00200b41ff01714101460d010b200341023a00a00e0c010b200320073703d8032003200a3a00d703200320083a00d603200320063b01d403200320093a00d303200320053a00d2032003200e3b01d0032003200f3a00cf03200320103a00ce03200320143b01cc03200320153a00cb03200320133a00ca03200320113b01c803200320163a00c703200320173a00c603200320183b01c403200320193a00c3032003201a3a00c203200320413b01c003200341a00e6a200341c0036a10cc0520032d00a00e4104460d010b20032802a00e21022000411c6a20032902a40e370200200041186a2002360200420121070c010b420021070b2000420037030820002007370300200424000f0b02400240024002400240200241ff01710d00200b41ff01714101460d010b200341023a00a00e0c010b2003200c3703d803200320423a00d7032003204e3a00d603200320433b01d403200320443a00d3032003204f3a00d203200320453b01d003200320463a00cf03200320503a00ce03200320473b01cc03200320483a00cb03200320513a00ca03200320493b01c8032003204a3a00c703200320523a00c6032003204b3b01c4032003204c3a00c303200320533a00c2032003204d3b01c003200341a00e6a200341c0036a10cc0520032d00a00e4104460d010b20032802a00e21022000411c6a20032902a40e370200200041186a2002360200420121070c010b420021070b2000420037030820002007370300200424000f0b0240024002400240200241ff01710d00200b41ff01714101470d00200141c8006a290300211b200141c0006a290300211c200141386a290300210d200141306a2903002112200141d0006a280200210b200320073703b80e2003200a3a00b70e200320083a00b60e200320063b01b40e200320093a00b30e200320053a00b20e2003200e3b01b00e2003200f3a00af0e200320103a00ae0e200320143b01ac0e200320153a00ab0e200320133a00aa0e200320113b01a80e200320163a00a70e200320173a00a60e200320183b01a40e200320193a00a30e2003201a3a00a20e200320413b01a00e41002102024020124280a094a58d1d544100200d501b450d0041022101411c210b4103210a410921034198b3c70021080c030b2003200c3703d803200320423a00d7032003204e3a00d603200320433b01d403200320443a00d3032003204f3a00d203200320453b01d003200320463a00cf03200320503a00ce03200320473b01cc03200320483a00cb03200320513a00ca03200320493b01c8032003204a3a00c703200320523a00c6032003204b3b01c4032003204c3a00c303200320533a00c2032003204d3b01c003200341b00a6a200341c0036a10cd0541002102200341e0026a20032802b00a220120032802b80a4180a6cc004100410010c70120032802e002210a024020032802b40a450d00200110290b410121010240200a4101470d00411c210b4103210a4117210341a1b3c70021080c030b200341b00a6a200341a00e6a200341c0036a2012200d410110e00320032d00b00a220a4104470d01200341d80b6a200341c0036a2012200d201c201b200b10af0420032d00d80b4104460d03200341b00a6a41086a200341d80b6a41086a280200360200200320032903d80b3703b00a41a095c8004137200341b00a6a41d895c80041e895c800103a000b4100210b4102210a41002101410021020c010b20032f00b10a20032d00b30a4110747241ffffff0771220b4110762102200b410876210120032902b40a2207422088a721032007a721080b20004200370308200041206a20033602002000411c6a2008360200200041186a200241107420014108744180fe037172200b41ff017172410874200a7236020020004201370300200424000f0b2000420037030820004200370300200424000f0b200341f8036a2001413c6a280200360200200341f0036a200141346a290200370300200341e8036a2001412c6a290200370300200341c0036a41206a200141246a290200370300200341c0036a41186a2001411c6a290200370300200341c0036a41106a200141146a290200370300200341c0036a41086a2001410c6a290200370300200320012902043703c003200341a00e6a41206a200241206a290200370300200341a00e6a41186a200241186a290200370300200341a00e6a41106a200241106a290200370300200341a00e6a41086a200241086a290200370300200320022902003703a00e2000200341c0036a200341a00e6a108904200424000f0b20004200370308200041186a410236020020004201370300200424000f0b200610cc0120061029200041186a41023602000c570b200041206a410e3602002000411c6a41e1b4c800360200200041186a20013602000c560b419d9bc500413041b8a1cc001033000b410221020c520b410121064180f8c40021084108210a0c4d0b4180800421014180f8c400210b410821080c4a0b20004200370308200041186a410236020020004201370300200424000f0b200341800e6a41186a220e4200370300200341800e6a41106a22014200370300200341800e6a41086a22024200370300200342003703800e41dcbec500ad4280808080800184221210012209290000211b2009290008212a200910292002202a3703002003201b3703800e419fe3c200ad4280808080d00184221b10012205290000212a20034190066a41086a2209200541086a2900003703002003202a37039006200510292001200329039006222a370300200341b0066a41086a220f2002290300370300200341b0066a41106a2210202a370300200341b0066a41186a22142009290300370300200320032903800e3703b006200341f8006a200341b0066a412010e301200341f8006a41106a290300212a200329038001212320032802782105200e42003703002001420037030020024200370300200342003703800e20121001220e2900002112200e290008212e200e10292002202e370300200320123703800e201b1001220e29000021122009200e41086a2900003703002003201237039006200e102920012003290390062212370300200f20022903003703002010201237030020142009290300370300200320032903800e3703b0062003427f202a420020051b22122007200d7d200c201c54ad7d7c2023420020051b221b200c201c7d7c222a201b542202ad7c221b2002201b201254201b2012511b22021b3703c8032003427f202a20021b3703c003200341c0036a2102200341b0066a21010c450b20004200370308200041186a410236020020004201370300200424000f0b20032802c803210220032802c403210620032802c00321080c330b4111214641ddd6c80021450c2f0b2001200a103e000b200b2008103e000b200b20061041000b200220061042000b4182aa0421030c1c0b4182aa0421030c0e0b200041186a41023602002000420037030820004201370300200424000f0b2000420037030820004200370300200424000f0b0240204a450d00204b10290b20004200370308200041206a200b3602002000411c6a2002360200200041186a20014180803c712049724180327236020020004201370300200424000f0b20032f00b10a20032d00b30a4110747241ffffff07712202411076210b2002410876210a20032902b40a2207422088a721032007a721080b20004200370308200041206a20033602002000411c6a2008360200200041186a200b411074200a4108744180fe037172200241ff01717241087420017236020020004201370300200424000f0b20021029200341003602c80d024020032802dc0d450d0020032802d80d10290b0240200d42ffffff3f83500d00200810290b0240200e450d00200e41246c450d00200510290b200110290c020b02402005200a41246c6a2802002208200b460d00200a2008200b496a210a0b200341b0066a41186a20034190066a41186a290300370300200341b0066a41106a20034190066a41106a290300370300200341b0066a41086a20034190066a41086a29030037030020032003290390063703b006200f200a4f0d00200a200f1041000b0240200f200e470d00200341d80d6a41186a200e410110960120032802f00d21050b2005200a41246c6a220841246a2008200f200a6b41246c10e5071a2008200b360200200820032903b0063702042008410c6a200341b0066a41086a2206290300370200200841146a200341b0066a41106a22092903003702002008411c6a200341b0066a41186a22052903003702002003200f41016a3602f80d200520034190066a41186a290300370300200920034190066a41106a290300370300200620034190066a41086a29030037030020032003290390063703b006024020032802ec0d220a20032802e80d470d00200341d80d6a410c6a200a4101109e0120032802ec0d210a0b20032802e40d220e200a4105746a220820032903b006370000200841186a2005290300370000200841106a2009290300370000200841086a20062903003700002003200a41016a220a3602ec0d20021029200341c80d6a200e200e200a4105746a10ce05200341c0036a41206a200341d80d6a41206a2802002202360200200341c0036a41186a200341d80d6a41186a2903002207370300200341c0036a41106a200341d80d6a41106a290300370300200341c0036a41086a200341d80d6a41086a290300370300200320032903d80d3703c003200341d80b6a2007a72208200210cf05200341b00a6a41e5cdc20010e90220032802b00a2102200320032802b80a36028c0d200320023602880d20032802d80b220a20032802e00b200341880d6a10a104024020032802b40a450d00200210290b024020032802dc0b450d00200a10290b200341b00a6a41e5cdc200200341c0036a10ea0220032802b00a2102200320032802b80a3602dc0b200320023602d80b20032802cc03220a200341d4036a280200200341d80b6a10cf01024020032802b40a450d00200210290b024020032802c403450d0020032802c00310290b0240200341d0036a28020041ffffff3f71450d00200a10290b0240200341dc036a2802002202450d00200241246c450d00200810290b20032802c80d21082001102920080d010b0240200341e40e6a2802002202450d00200241306c450d0020032802e00e10290b200ca7220b0d014118210341d9bbc7002102410021010c040b200341d00d6a280200210a20032802cc0d2109200341003602c803200342043703c003200341c0036a4100200a10980120032802c003210620032802c803210502400240200a0d0020032802c4032101200841002006200520032802f00e10ec0221050c010b200620054102746a2102200a210103402002418094ebdc03360200200241046a21022001417f6a22010d000b20032802c40321012008200a20062005200a6a20032802f00e10ec0221050b410410272202450d262002200b360000200341c8036a4284808080c000370300200341d0036a41002900e5cd42370300200341d8036a41002900edcd42370300200341e0036a20053a0000200320023602c403200341053a00c003200341c0036a10cb010240200141ffffffff0371450d00200610290b0240200a450d00200a41e0006c2101200841d4006a210203400240200241706a280200220b450d00200b41306c450d002002416c6a28020010290b0240200228020041ffffff3f71450d002002417c6a28020010290b200241e0006a2102200141a07f6a22010d000b0b02402009450d00200941e0006c450d00200810290b0240200341e40e6a2802002202450d00200241306c450d0020032802e00e10290b0240200ca72203450d00200341ffffff3f71450d00204610290b2000420037030820004200370300200424000f0b410021014118210341d9bbc7002102200b41ffffff3f71450d020b204610290c010b0b20004200370308200041206a20033602002000411c6a2002360200200041186a200136020020004201370300200424000f0b20004200370308200041206a41093602002000411c6a41eeebca00360200200041186a200336020020004201370300200424000f0b200820014105746a200341d0066a412010e7070d01410d21064180e8c9002109410021050b0240200742ffffff3f83500d00200810290b410321030c020b20034190066a41186a2201200341d0066a41186a29030037030020034190066a41106a220b200341d0066a41106a29030037030020034190066a41086a220a200341d0066a41086a290300370300200320032903d006370390062002200e4f0d02200f200329039006370000200f41186a2001290300370000200f41106a200b290300370000200f41086a200a2903003700002008200e10bb0520034190096a41186a220a420037030020034190096a41106a220b420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b00284220c10012206290000210d200341d80d6a41086a2202200641086a2900003703002003200d3703d80d2006102920012002290300370300200320032903d80d3703900941f0edca00ad4280808080f0008410012206290000210d2002200641086a2900003703002003200d3703d80d20061029200b20032903d80d220d370300200341f0076a41086a22052001290300370300200341f0076a41106a220f200d370300200341f0076a41186a2210200229030037030020032003290390093703f007200341203602c4032003200341f0076a3602c0032008200e200341c0036a10b901200341c0036a41186a200341d80b6a41186a290300370300200341c0036a41106a200341d80b6a41106a290300370300200341c0036a41086a200341d80b6a41086a290300370300200320032903d80b3703c00341012109200341c0036a41012008200e10c505200a4200370300200b4200370300200142003703002003420037039009200c10012206290000210c2002200641086a2900003703002003200c3703d80d2006102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d0008410012206290000210c2002200641086a2900003703002003200c3703d80d20061029200b20032903d80d220c37030020052001290300370300200f200c3703002010200229030037030020032003290390093703f007200341c0036a200341f0076a412010cd0120032d00c0032102200a200341c0036a41196a290000370300200b200341c0036a41116a2900003703002001200341c0036a41096a290000370300200320032900c103370390090240024020024101460d0041002109200341003a00b00a0c010b200341b00a6a41096a20034198096a290300370000200341b00a6a41116a200341a0096a290300370000200341b00a6a41196a200341a8096a290300370000200341013a00b00a20032003290390093700b10a0b200341d9036a200341f00b6a290300370000200341d1036a200341e80b6a290300370000200341c9036a200341e00b6a290300370000200320032903d80b3700c103200341013a00c00302402009450d00200341b00a6a410172200341c0036a410172412010e7070d0020034190096a41186a2206420037030020034190096a41106a2209420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220a290000210c200341d80d6a41086a2202200a41086a2900003703002003200c3703d80d200a102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220a290000210c2002200a41086a2900003703002003200c3703d80d200a1029200b20032903d80d370000200b41086a2002290300370000200341f0076a41086a2001290300370300200341f0076a41106a2009290300370300200341f0076a41186a200629030037030020032003290390093703f007412010272202450d1f200220032903d006370000200241186a200341d0066a41186a2201290300370000200241106a200341d0066a41106a220b290300370000200241086a200341d0066a41086a220a290300370000200341f0076aad42808080808004842002ad4280808080800484100320021029200341d9036a2001290300370000200341d1036a200b290300370000200341c9036a200a290300370000200320032903d0063700c103200341013a00c003200341c0036a10c6050b200742ffffff3f83500d00200810290b2003418d083b01c003200341c0036a10cb012000420037030820004200370300200424000f0b20004200370308200041206a20063602002000411c6a2009360200200041186a2005418080047120037241802a7236020020004201370300200424000f0b2002200e41b0e1ca001036000b200820014105746a200341d0066a412010e7070d01410d21054180e8c900210e410021090b0240200742ffffff3f83500d00200810290b410321030c020b200341b0066a41186a2201200341d0066a41186a290300370300200341b0066a41106a220b200341d0066a41106a290300370300200341b0066a41086a220a200341d0066a41086a290300370300200320032903d0063703b006200220064f0d02200f20032903b006370000200f41186a2001290300370000200f41106a200b290300370000200f41086a200a2903003700002008200610bb0520034190066a41186a420037030020034190066a41106a420037030020034190066a41086a220142003703002003420037039006419ad6ca00ad4280808080b00284220c10012202290000210d2002290008211220021029200120123703002003200d3703900641f0edca00ad4280808080f0008410012202290008210d2002290000211220021029200341d80d6a41106a2012370300200341d80d6a41186a200d370300200341d80d6a41086a2202200129030037030020032003290390063703d80d200341203602c4032003200341d80d6a3602c00320082006200341c0036a10b901200341c0036a41186a200341e8026a41186a290300370300200341c0036a41106a200341e8026a41106a290300370300200341c0036a41086a200341e8026a41086a290300370300200320032903e8023703c003200341c0036a41012008200610c50520034190096a41186a2209420037030020034190096a41106a220b420037030020034190096a41086a220142003703002003420037039009200c1001220a290000210c2002200a41086a2900003703002003200c3703d80d200a102920012002290300370300200320032903d80d3703900941f8d7ca00ad4280808080d000841001220a290000210c2002200a41086a2900003703002003200c3703d80d200a1029200b20032903d80d220c370300200341f0076a41086a2001290300370300200341f0076a41106a200c370300200341f0076a41186a200229030037030020032003290390093703f007200341c0036a200341f0076a412010cd0120032d00c00321022009200341d9036a290000370300200b200341d1036a2900003703002001200341c9036a290000370300200320032900c10337039009024020024101470d00200341d80b6a41186a20034190096a41186a290300220c370300200341d80b6a41106a20034190096a41106a290300220d370300200341d80b6a41086a20034190096a41086a29030022123703002003200329039009221b3703d80b200341b00a6a41186a200c370300200341b00a6a41106a200d370300200341b00a6a41086a20123703002003201b3703b00a41002102024020064101460d004100210203402006410176220120026a220b20022008200b4105746a200341b00a6a412010e7074101481b2102200620016b220641014b0d000b0b0240200820024105746a200341b00a6a412010e707450d00200341880d6a41186a4200370300200341880d6a41106a220a4200370300200341880d6a41086a22014200370300200342003703880d419ad6ca00ad4280808080b002841001220b290000210c20034190096a41086a2202200b41086a2900003703002003200c37039009200b10292001200229030037030020032003290390093703880d41f8d7ca00ad4280808080d000841001220b290000210c2002200b41086a2900003703002003200c37039009200b1029200a200329039009220c370300200341c0036a41086a2001290300370300200341c0036a41106a200c370300200341c0036a41186a2002290300370300200320032903880d3703c003200341c0036aad428080808080048410040c010b200341d9036a200341c80a6a290300370000200341d1036a200341c00a6a290300370000200341c9036a200341b80a6a290300370000200320032903b00a3700c103200341013a00c003200341c0036a10c6050b2003418d043b01c003200341c0036a10cb01200742ffffff3f83500d00200810290b2000420037030820004200370300200424000f0b20004200370308200041206a20053602002000411c6a200e360200200041186a2009418080047120037241802a7236020020004201370300200424000f0b2002200641a0e1ca001036000b20004200370308200041206a41093602002000411c6a41eeebca00360200200041186a200336020020004201370300200424000f0b200341c0036a41186a200341b00a6a41186a290300370300200341c0036a41106a200341b00a6a41106a290300370300200341c0036a41086a200341b00a6a41086a290300370300200320032903b00a3703c00341002106200341c0036a21014100210b0b024020062009470d00200341d80b6a20064101109e0120032802dc0b210920032802d80b21080b2008200b4105746a220241206a20022006200b6b41057410e5071a20022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002003200641016a3602e00b20034190096a41186a420037030020034190096a41106a220a420037030020034190096a41086a220142003703002003420037039009419ad6ca00ad4280808080b002841001220b2900002107200341d80d6a41086a2202200b41086a290000370300200320073703d80d200b102920012002290300370300200320032903d80d3703900941f0edca00ad4280808080f000841001220b29000021072002200b41086a290000370300200320073703d80d200b1029200a20032903d80d2207370300200341f0076a41086a2001290300370300200341f0076a41106a2007370300200341f0076a41186a200229030037030020032003290390093703f007200341203602c4032003200341f0076a3602c00320032802d80b20032802e00b200341c0036a10b901200341c0036a41186a200341b00a6a41186a290300370300200341c0036a41106a200341b00a6a41106a290300370300200341c0036a41086a200341b00a6a41086a290300370300200320032903b00a3703c0034180a6cc00410020032802d80b220220032802e00b10c5052003410d3b01c003200341c0036a10cb010240200941ffffff3f71450d00200210290b2000420037030820004200370300200424000f0b200220086a2101200b21020b200341c0036a20034190096a2051200d10c205024020032802c0034101460d00200341f0056a350200210c200341a00e6a200341c0036a41086a41a80210e4071a200341cd036a20034190096a41086a220f290300370000200341d5036a20034190096a41106a2215290300370000200341dd036a20034190096a41186a2213290300370000200341ec036a2001360200200341e8036a2002360200200341063a00c4032003410b3a00c00320032003290390093700c503200341c0036a10cb01200341cc0a6a2008360200200341b00a6a41186a2009360200200341b00a6a41106a200b360200200341bc0a6a2005360200200320103602d00a2003200e3602c40a2003200a3602b80a200320073703b00a200341d80b6a41186a2013290300370300200341d80b6a41106a2015290300370300200341d80b6a41086a200f29030037030020032003290390093703d80b200341c0036a200341a00e6a41a80210e4071a200c42c03e7e2006ad4290a10f7e7c4280eb93cf007c2107200220144f2006200341b00a6a200341d80b6a200341c0036a10c305210c0c040b200341cc036a28020021010b20032802c803210620032d00c703210820032d00c603210b20032d00c503210220032d00c40321500b0240200541ffffff3f71450d00200a10290b200941ffffff3f71450d00200e10290b200020083a001b2000200b3a001a200020023a001920004200370308200041206a20013602002000411c6a2006360200200041186a20503a000020004201370300200424000f0b20004201370308200041106a427f2007200c7c220c200c2007541b37030020004200370300200424000f0b200341e5036a20032903d80b370000200341cd036a200341b00a6a41086a290300370000200341d5036a200341b00a6a41106a290300370000200341dd036a200341b00a6a41186a290300370000200341ed036a200341d80b6a41086a290300370000200341f5036a200341d80b6a41106a290300370000200341fd036a200341d80b6a41186a290300370000200341013a00c4032003410b3a00c003200320032903b00a3700c5032003418c046a200a36020020034188046a200836020020034185046a200e3a0000200341c0036a10cb01200341c0036a41206a200341a00e6a41206a280200360200200341c0036a41186a200341a00e6a41186a290300370300200341c0036a41106a200341a00e6a41106a290300370300200341c0036a41086a200341a00e6a41086a290300370300200320032903a00e3703c00320034190096a200341d80b6a10c005200328029009210220032003280298093602f407200320023602f007200341c0036a200341f0076a10bf050240200328029409450d00200210290b0240200341cc036a28020041ffffff3f71450d0020032802c80310290b0240200341d8036a28020041ffffff3f71450d0020032802d40310290b200d42a0c21e7e4280aaead5007c210c0240200742ffffff3f83500d00200610290b200041106a200c3703002000420137030820004200370300200424000f0b410d210341b7d6c8002102410421010b0240201041ffffff3f71450d00200910290b201541ffffff3f71450d00201410290b4103210b200742ffffff3f83500d00200610290b200041206a20033602002000411c6a2002360200200020013a001a200041133a0019200041186a200b3a00002000420037030820004201370300200424000f0b41032101200742ffffff3f83500d010b200510290b200b10cc01200b1029200041206a20463602002000411c6a2045360200200041003a001b200020023a001a200041133a0019200041186a20013a00002000420037030820004201370300200424000f0b200341c0036a2017201510b80520032802c0032101200320032802c8033602a40e200320013602a00e20082002200341a00e6a10a104024020032802c403450d00200110290b02402006450d00200810290b0240200742ffffff3f83500d00201110290b02402014450d00201310290b0240200e450d00200e410c6c21022010210303400240200341046a280200450d00200328020010290b2003410c6a2103200241746a22020d000b0b0240200f450d00200f410c6c450d00201010290b2000420037030820004200370300200424000f0b200320023602b4060b0240200328028c0d2202450d00200241306c450d00200610290b410021060b200341a00e6a41c5cdc200200341d80d6a10ea02200341d80b6a20032802a00e220820032802a80e10ce012009410020061b210a2002410020061b210f20032902dc0b420020032802d80b22021b21122006410820061b21092002410120021b210b024020032802a40e450d00200810290b200341d0066a41206a200a360200200341ec066a200f360200200341d0066a41106a2012370300200341d0066a41086a200341d80d6a41086a280200360200200320032903d80d3703d006200320093602e8062003200b3602dc060240200ca7450d00200510290b200341d80b6a41086a2202200141086a290300370300200341d80b6a41106a200141106a290300370300200341d80b6a41186a200141186a290300370300200341d80b6a41206a200141206a290300370300200341d80b6a41286a220a200141286a290300370300200341d80b6a41306a2208200141306a290300370300200341d80b6a41386a2206200141386a290300370300200341b0036a41086a2205200141cc006a280200360200200320012903003703d80b200320012902443703b0030240024002400240024020012802402210450d00200341880d6a41386a22142006290300370300200341880d6a41306a22062008290300370300200341880d6a41286a2208200a290300370300200341880d6a41206a220a200341d80b6a41206a290300370300200341880d6a41186a2215200341d80b6a41186a290300370300200341880d6a41106a2213200341d80b6a41106a290300370300200341880d6a41086a22112002290300370300200341f80c6a41086a22022005280200360200200320032903d80b3703880d200320032903b0033703f80c20034190096a41386a201429030037030020034190096a41306a200629030037030020034190096a41286a200829030037030020034190096a41206a200a29030037030020034190096a41186a201529030037030020034190096a41106a201329030037030020034190096a41086a2011290300370300200320032903880d37039009200320103602d009200341d4096a220a20032903f80c370200200a41086a2002280200360200410810272202450d1320022007370000200241084110102b2202450d132002200d370008200341ac0e6a220a41002900c5cd42370000200a41086a41002900cdcd423700002003429080808080023702a40e200320023602a00e200320034190096a3602bc0e200341e8026a200341a00e6a10ca0520021029200341a00e6a200341e8026a10d502200341c8016a20032802a00e220a20032802a80e4180a6cc004100410010c70120032802c8012102024020032802a40e450d00200a10290b024020024101460d00200341d80b6a20034190096a41d00010e4071a412010272202450d06200342013702dc0d200320023602d80d200341d80d6a41004101109e01200341800e6a41086a220b20032802e00d220241016a36020020032802d80d20024105746a2202200e290000370000200241086a200e41086a290000370000200241106a200e41106a290000370000200241186a200e41186a290000370000200320032903d80d3703800e200341a00e6a200341d80b6a41d00010e4071a200341f00e6a220241086a200b280200360200200220032903800e370200200341d80b6a200341e8026a10d50220032802d80b2102200320032802e00b3602dc0d200320023602d80d200341a00e6a200341d80d6a10e402024020032802dc0b450d00200210290b024020032802e40e2202450d00200241306c450d0020032802e00e10290b024020032802f40e41ffffff3f71450d0020032802f00e10290b200341d80d6a41186a200341e8026a41186a290300370300200341d80d6a41106a200341e8026a41106a290300370300200341d80d6a41086a200341e8026a41086a290300370300200320032903e8023703d80d41002102024020032802f006221041014b0d00024020100e020004000b20034190066a41186a200341d80d6a41186a29030037030020034190066a41106a200341d80d6a41106a29030037030020034190066a41086a200341d80d6a41086a290300370300200320032903d80d37039006410021020c040b2010210b03400240417f2009200b410176220820026a220641306c6a2205290300220c200752200c2007541b220a0d00417f2005290308220c200d52200c200d541b210a0b20022006200a4101461b2102200b20086b220b41014d0d030c000b0b20032802d4092202450d00200241306c450d0020032802d00910290b20011029200341003602c80d024020032802d406450d0020032802d00610290b0240201242ffffff3f83500d00200b10290b0240200f450d00200f41306c450d00200910290b200e10290c020b024002400240417f2009200241306c6a220a290300220c200752200c2007541b220b0d0041ff01210b200a290308220c200d540d01200c200d52210b0b200b450d010b2002200b41ff017141ff01466a21020b20034190066a41186a200341d80d6a41186a29030037030020034190066a41106a200341d80d6a41106a29030037030020034190066a41086a200341d80d6a41086a290300370300200320032903d80d37039006201020024f0d00200220101041000b02402010200f470d00200341d0066a41186a200f410110900120032802e80621090b2009200241306c6a220b41306a200b201020026b41306c10e5071a200b200d370308200b2007370300200b200329039006370310200b41186a20034190066a41086a290300370300200b41206a20034190066a41106a290300370300200b41286a20034190066a41186a2903003703002003201041016a3602f006200341b0066a41186a2208200341d80d6a41186a290300370300200341b0066a41106a2206200341d80d6a41106a290300370300200341b0066a41086a2209200341d80d6a41086a290300370300200320032903d80d3703b006024020032802e406220220032802e006470d00200341dc066a20024101109e0120032802e40621020b20032802dc06220a20024105746a220b20032903b006370000200b41186a2008290300370000200b41106a2006290300370000200b41086a20092903003700002003200241016a22023602e40620011029200341c80d6a200a200a20024105746a10ce05200341a00e6a41206a200341d0066a41206a2802002202360200200341a00e6a41106a200341d0066a41106a290300370300200341a00e6a41086a200341d0066a41086a290300370300200341a00e6a41186a200341d0066a41186a290300220c370300200320032903d0063703a00e200241306c4104722201417f4c0d0320011027220b450d02200341003602e00b200320013602dc0b2003200b3602d80b2002200341d80b6a10710240024020020d0020032802e00b210120032802dc0b210a20032802d80b210f0c010b200ca72213200241306c6a2111410020032802e00b22056b210820032802dc0b210a410021020340200520026a2106201320026a2201290300210c02400240200a20086a4108490d0020032802d80b210b200a21090c010b200641086a220b2006490d08200a4101742209200b2009200b4b1b22094100480d0802400240200a0d00024020090d004101210b0c020b20091027220b450d150c010b20032802d80b210b200a2009460d00200b200a2009102b220b450d140b200320093602dc0b2003200b3602d80b0b200b20056a20026a200c3700002003200641086a220a3602e00b200141086a290300210c0240200920086a41786a41074b0d00200a41086a220f200a490d082009410174220a200f200a200f4b1b220a4100480d080240024020090d000240200a0d004101210b0c020b200a1027220b450d150c010b2009200a460d00200b2009200a102b220b450d140b2003200a3602dc0b2003200b3602d80b0b200b20056a20026a41086a200c3700002003200641106a220a3602e00b41201027220b450d04200b200141106a290000370000200b41186a2210200141286a290000370000200b41106a2214200141206a290000370000200b41086a2215200141186a29000037000002400240200820032802dc0b22096a41706a4120490d0020032802d80b210f2009210a0c010b200a41206a220f200a490d082009410174220a200f200a200f4b1b220a4100480d080240024020090d000240200a0d004101210f0c020b200a1027220f450d150c010b20032802d80b210f2009200a460d00200f2009200a102b220f450d140b2003200a3602dc0b2003200f3602d80b0b200f20056a20026a220941106a200b290000370000200941286a2010290000370000200941206a2014290000370000200941186a20152900003700002003200641306a3602e00b200b1029200841506a2108200241306a2102200141306a2011470d000b200520026a21010b200341d80b6a41c5cdc20010e90220032802d80b2102200320032802e00b360294092003200236029009200f200120034190096a10a104024020032802dc0b450d00200210290b0240200a450d00200f10290b200341d80b6a41c5cdc200200341a00e6a10ea0220032802d80b2102200320032802e00b36029409200320023602900920032802ac0e2201200341b40e6a28020020034190096a10cf01024020032802dc0b450d00200210290b024020032802a40e450d0020032802a00e10290b0240200341b00e6a28020041ffffff3f71450d00200110290b0240200341bc0e6a2802002202450d00200241306c450d0020032802b80e10290b20032802c80d2108200e102920080d010b0240200341840b6a2802002202450d00200241306c450d0020032802800b10290b4180801421034116210241e7d4c80021014103210b0c050b20164101201641014b1b2202418094ebdc036e220120022001418094ebdc036c476a22014101200141014b1b220120024b0d02200341d00d6a280200210a20032802cc0d2109200341003602a80e200342043703a00e200341a00e6a4100200a1098012002200a41036c220b2002200b491b20016ead428094ebdc037e200220016ead8042ffffffff0f83220c200c7e220c42808090bbbad6adf00d200c42808090bbbad6adf00d541b428094ebdc0380210c20032802a00e210620032802a80e210502400240200a0d0020032802a40e2101200841002006200520032802900b10ec02210b0c010b200ca7210b200620054102746a2102200a210103402002200b360200200241046a21022001417f6a22010d000b20032802a40e21012008200a20062005200a6a20032802900b10ec02210b0b410810272202450d0e20022007370000200241084110102b2202450d0e2002200d370008200341a80e6a42908080808002370300200341a00e6a41106a41002900c5cd42370300200341b80e6a41002900cdcd42370300200341c00e6a200b3a0000200320023602a40e200341053a00a00e200341a00e6a10cb010240200141ffffffff0371450d00200610290b0240200a450d00200a41e0006c2101200841d4006a210203400240200241706a280200220b450d00200b41306c450d002002416c6a28020010290b0240200228020041ffffff3f71450d002002417c6a28020010290b200241e0006a2102200141a07f6a22010d000b0b02402009450d00200941e0006c450d00200810290b0240200341840b6a2802002202450d00200241306c450d0020032802800b10290b2000420037030820004200370300200424000f0b1039000b1038000b41f0a6c700411941dcaac7001033000b1032000b20004200370308200041206a20023602002000411c6a2001360200200041186a20034180801c71200b7241801c7236020020004201370300200424000f0b024020032802cc032202450d00200241246c21012016210203400240024020022d0000220b41044b0d00024002400240200b0e050400010204040b2002410c6a280200450d03200241086a28020010290c030b2002410c6a280200450d02200241086a28020010290c020b2002410c6a280200450d01200241086a28020010290c010b200241086a280200450d00200241046a28020010290b200241246a21022001415c6a22010d000b0b024020032802c8032202450d00200241246c450d00201610290b02402044200a460d000340200810d3020240200841046a2802002202450d00200241246c450d00200828020010290b200841f0006a2108200941907f6a22090d000b0b02402005450d00200541f0006c450d00200f10290b02402003280294092203450d00200341c4006c450d00201110290b4103210b0c040b2044200a460d00200f200641f0006c6a210b0340200a220241046a220110d302200241f0006a210a0240200241086a2802002202450d00200241246c450d00200128020010290b200b200a470d000b0b02402005450d00200541f0006c450d00200f10290b200341b0066a41186a4200370300200341b0066a41106a4200370300200341b0066a41086a22024200370300200342003703b00641e4bec500ad4280808080a001841001220129000021072001290008210c200110292002200c370300200320073703b006418cb2c400ad4280808080e000841001220129000821072001290000210c2001102920034190066a41106a200c37030020034190066a41186a200737030020034190066a41086a2002290300370300200320032903b00637039006200341c0036a2011201310bb01201c20033502c80342208620032802c0032202ad841003024020032802c403450d00200210290b02402003280294092203450d00200341c4006c450d00201110290b420021070c030b200641f0006c2102200f41046a21030340200310d3020240200341046a2802002201450d00200141246c450d00200328020010290b200341f0006a2103200241907f6a22020d000b0b2005450d00200541f0006c450d00200f10290b200041206a200e3602002000411c6a2015360200200041186a2014411074200b7241801072360200420121070b2000200737030020004200370308200424000f0b2001ad42808080808004842002ad4280808080800284100320032903f002211b20032903e80221120b200341f0076a41106a21020240024002402012201d56201b201e56201b201e5122011b0d002012201d54201b201e5420011b450d02200341800e6a41186a220f4200370300200341800e6a41106a22094200370300200341800e6a41086a22014200370300200342003703800e41dcbec500ad4280808080800184222a1001220529000021232005290008212e200510292001202e370300200320233703800e419fe3c200ad4280808080d0018422231001220e290000212e20034190066a41086a2205200e41086a2900003703002003202e37039006200e10292009200329039006222e370300200341b0066a41086a22102001290300370300200341b0066a41106a2214202e370300200341b0066a41186a22152005290300370300200320032903800e3703b006200341e0006a200341b0066a412010e301200341e0006a41106a290300212e2003290368212d2003280260210e200f42003703002009420037030020014200370300200342003703800e202a1001220f290000212a200f290008212c200f10292001202c3703002003202a3703800e20231001220f290000212a2005200f41086a2900003703002003202a37039006200f10292009200329039006222a370300201020012903003703002014202a37030020152005290300370300200320032903800e3703b00620034200202e4200200e1b222a201d201254ad201b201e7d7c7c202d4200200e1b2223201d20127d222d54ad7d222e2023202d7d222d202356202e202a56202e202a511b22011b3703c80320034200202d20011b3703c003200341c0036a2101200341b0066a21090c010b200341800e6a41186a220f4200370300200341800e6a41106a22094200370300200341800e6a41086a22014200370300200342003703800e41dcbec500ad4280808080800184222a1001220529000021232005290008212e200510292001202e370300200320233703800e419fe3c200ad4280808080d0018422231001220e290000212e20034190066a41086a2205200e41086a2900003703002003202e37039006200e10292009200329039006222e370300200341b0066a41086a22102001290300370300200341b0066a41106a2214202e370300200341b0066a41186a22152005290300370300200320032903800e3703b006200341c8006a200341b0066a412010e301200341c8006a41106a290300212e2003290350212d2003280248210e200f42003703002009420037030020014200370300200342003703800e202a1001220f290000212a200f290008212c200f10292001202c3703002003202a3703800e20231001220f290000212a2005200f41086a2900003703002003202a37039006200f10292009200329039006222a370300201020012903003703002014202a37030020152005290300370300200320032903800e3703b0062003427f202e4200200e1b222a201b201e7d2012201d54ad7d7c202d4200200e1b22232012201d7d7c222e2023542201ad7c222320012023202a542023202a511b22011b3703c8032003427f202e20011b3703c003200341c0036a2101200341b0066a21090b2009ad42808080808004842001ad428080808080028410030b2003200c3703f0072003201b370388082003201237038008200320073703f80720032802f80c210120034190096a41186a200241086a290300222a37030020034190096a41206a2209200241106a290300370300200341b8096a2205200241186a290300370300200341c0096a220e200241206a29030037030020032007370398092003200c370390092003200229030022233703a00902400240427f200c20237c22232023200c5422022007202a7c2002ad7c222a200754202a2007511b22021b22234280c8afa025544100427f202a20021b222e501b0d0020034190096a41106a2903002131200e2903002130200529030021232009290300212e200329039809212d200329039009212c4201212a20032903a809212f0c010b4200212a02402023202e84500d002023202e10d402200341f8036a202e370300200341f0036a2023370300200341c0036a41086a41013a0000200341c9036a2001290000370000200341d1036a200141086a290000370000200341d9036a200141106a290000370000200341e1036a200141186a290000370000200341033a00c003200341c0036a10cb010b0b200341800c6a202e370300200341880c6a2023370300200341e80b6a202d370300200341900c6a2030370300200341f00b6a20313703002003202f3703f80b200320243703980c2003202c3703e00b200320064100202b42015122021b22063a00a40c20032008410020021b22083602a00c2003202a4201512202ad3703d80b0240024020020d00200aad422086200bad8410040c010b410410272202450d0120022008360000200320063a00b003200241044108102b2202450d01200220032d00b0033a0004200241084115102b2202450d012002202c3700052002410d6a202d370000200341f80b6a290300212d200341f00b6a290300212c20024115412a102b2202450d012002202c3700152002411d6a202d3700002002412a41d400102b2202450d012002202e3700252002412d6a20233700002002413d6a200341980c6a2903003700002002200341900c6a290300370035200aad422086200bad842002ad4280808080d008841003200210290b201c201d7c221d201c542202200d201e7c2002ad7c221c200d54201c200d511b21020240200328028c0d450d00200b10290b427f201c20021b210d427f201d20021b211c202a4201522102024002400240202b4201510d0020020d004103210b200341a00e6a21020c010b202b4201522002410173720d014104210b200341b00a6a21020b200241086a200b3a0000200241096a20032903d006370000200241003a0000200241116a200341d0066a41086a290300370000200241196a200341e0066a290300370000200241216a200341e8066a290300370000200210cb010b0240201c200d844200520d00200341f8036a2007370300200341f0036a200c370300200341c0036a41086a41003a0000200341c9036a2001290000370000200341d1036a200141086a290000370000200341d9036a200141106a290000370000200341e1036a200141186a290000370000200341033a00c003200341c0036a10cb010b20034188046a201b37030020034180046a2012370300200341f8036a2007370300200341f0036a200c370300200341c0036a41086a41033a0000200341c9036a20032903d006370000200341d1036a200341d0066a41086a290300370000200341d9036a200341e0066a290300370000200341e1036a200341e8066a290300370000200341033a00c003200341c0036a10cb012000420037030820004200370300200424000f0b1030000b024020032802f407450d00200610290b20024104470d00200341c8036a200a360200200341013a00c403200341023a00c003200341c0036a10cb012000420037030820004200370300200424000f0b20004200370308200041206a20083602002000411c6a200b360200200041186a2001418080047120027241800a7236020020004201370300200424000f0b0240200328029409450d00200910290b200241ff01714104470d00200341e8036a2043360200200341cd036a200341b80a6a290300370000200341d5036a200341c00a6a290300370000200341dd036a200341c80a6a290300370000200341003a00c403200341023a00c003200320032903b00a3700c503200341c0036a10cb012000420037030820004200370300200424000f0b20004200370308200041206a200a3602002000411c6a2008360200200041186a20014118742006411074418080fc077172200b4108744180fe037172200241ff01717236020020004201370300200424000f0b41042102410021050240201041ff01714104460d00201021020c010b200341f0036a4200370300200341e8036a4280d0dbc3f402370300200341c0036a41106a200341b00a6a41086a290300370300200341c0036a41186a200341b00a6a41106a290300370300200341e0036a200341b00a6a41186a290300370300200342013703c003200320032903b00a3703c8032003200f3602a40e2003200e3602a00e200341c0036a41086a200341a00e6a10b305410121050b024020032802f407450d00200e10290b02402005450d00200341e8036a200a360200200341cd036a200341e00b6a290300370000200341d5036a200341e80b6a290300370000200341dd036a200341f00b6a290300370000200341003a00c403200341023a00c003200320032903d80b3700c503200341c0036a10cb010c020b200241ff01714104460d010b20004200370308200041206a20013602002000411c6a200b360200200041186a2008411874200641ff017141107472200941ff017141087472200241ff01717236020020004201370300200424000f0b2000420037030820004200370300200424000f0b420121070b2000200737030020004200370308200424000f0b41002103410221020b20004200370308200041206a200b3602002000411c6a2001360200200041186a20034180801c7120027236020020004201370300200424000f0b02402009450d00200a10290b02402005450d00200e10290b41032105200f450d05200f410c6c450d05201310290c050b2005450d00200e10290b2009450d010b200a10290b2001450d00200210290b410321054102210b411d210141e0e4ca0021020b200b41ff0171411074210302402008450d00200610290b20004200370308200041206a20013602002000411c6a2002360200200041186a200320057236020020004201370300200424000ba50403027f017e057f230041306b2202240041e0a7c800ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102941e9a7c800ad4280808080e00084100122032900002104200241106a41086a200341086a2900003703002002200437031020031029200241206a2001280200200128020810eb0202400240024002402002280228220541206a2206417f4c0d00200228022021070240024020060d0041002103410121010c010b200610272201450d02200621030b024002402003410f4d0d00200321080c010b200341017422084110200841104b1b22084100480d03024020030d002008102722010d010c050b20032008460d00200120032008102b2201450d040b20012002290300370000200141086a200241086a2903003700000240024020084170714110460d00200821030c010b200841017422034120200341204b1b22034100480d0320082003460d00200120082003102b2201450d040b20012002290310370010200141186a200241106a41086a29030037000002400240200341606a2005490d00200321080c010b200541206a22082005490d03200341017422092008200920084b1b22084100480d0320032008460d00200120032008102b2201450d040b200141206a2007200510e4071a20002006360208200020083602042000200136020002402002280224450d00200710290b200241306a24000f0b1038000b1039000b1032000b1030000b9d0102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510242207422088a72204450d002007a722052d0000220341014b0d00410021010240024020030e020100010b2004417f6a4104490d0120052800012102410121010b200510292000200236020420002001360200200641106a24000f0b41e891cc00412e200641086a419893cc00419892cc00103a000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000b3601017f02404108102722030d001039000b200320013600042003200036000020022902002003ad42808080808001841003200310290b850204017f017e027f017e230041206b220224002002200010c001200235020821032002280200210420012802b40221050240410110272200450d0020024201370214200220003602100240024020054102470d00200041003a00002002410136021842808080801021060c010b200041013a0000200241013602182001200241106a10e302200235021842208621060b2002280214210020034220862004ad84200620022802102205ad84101402402000450d00200510290b02402002280204450d00200410290b024020012802b4024102460d00024020012802a8022200450d00200141ac026a280200450d00200010290b200110cc010b200241206a24000f0b1039000bc81106047f017e037f017e097f027e23004190026b22012400200141c8016a41186a4200370300200141c8016a41106a22024200370300200141c8016a41086a22034200370300200142003703c80141b3e6ca00ad4280808080e00084100122042900002105200141e8016a41086a2206200441086a290000370300200120053703e8012004102920032006290300370300200120012903e8013703c80141c9e6ca00ad4280808080e000841001220429000021052006200441086a290000370300200120053703e80120041029200220012903e8012205370300200141a8016a41086a2003290300370300200141a8016a41106a2005370300200141a8016a41186a2006290300370300200120012903c8013703a801200141086a200141a8016a412010fc0102400240024002402001280208450d00200128020c450d00200141c8016a41186a22044200370300200141c8016a41106a22074200370300200141c8016a41086a22034200370300200142003703c80141b3e6ca00ad4280808080e000842205100122082900002109200141e8016a41086a2206200841086a290000370300200120093703e8012008102920032006290300370300200120012903e8013703c80141c0a4cb00ad4280808080e001841001220829000021092006200841086a290000370300200120093703e80120081029200220012903e801370000200241086a220a2006290300370000200141a8016a41086a22082003290300370300200141a8016a41106a220b2007290300370300200141a8016a41186a220c2004290300370300200120012903c8013703a801200141203602fc012001200141a8016a3602f801200141e8016a200141a8016aad428080808080048422091007108b020240024020012802e801220d0d004103210e0c010b20012802ec01210f02400240024020062802002210450d00200d2d0000221141024b0d004101210e0240024020110e03000401000b2010417f6a4104490d01200d28000121124100210e0c030b4102210e0c010b200141003602d001200142013703c8012001410d360284022001200141f8016a360280022001200141c8016a36028c02200141246a410136020020014201370214200141f4eaca00360210200120014180026a3602202001418c026a41a8a3c800200141106a10371a20013502d00142208620013502c801841008024020012802cc01450d0020012802c80110290b4103210e0b0b200f450d00200d10290b200141003602d001200142013703c801200141c8016a41004100109e01200820012802d00136020020014194016a2012360200200120012903c8013703a80120014102200e200e4103461b220e36029001200141106a200041800110e4071a200141a0016a2008280200360200200120012903a80137039801200442003703002007420037030020034200370300200142003703c80120051001220029000021052006200041086a290000370300200120053703e8012000102920032006290300370300200120012903e8013703c80141e0a2cb00ad4280808080a0018422131001220029000021052006200041086a290000370300200120053703e80120001029200220012903e801370000200a200629030037000020082003290300370300200b2007290300370300200c2004290300370300200120012903c8013703a8012001200141a8016a412010fc0102402001280204410020012802001b220641016a22072006490d00200141c8016a41186a22044200370300200141c8016a41106a22004200370300200141c8016a41086a22034200370300200142003703c80141b3e6ca00ad4280808080e000842205100122082900002114200141e8016a41086a2206200841086a290000370300200120143703e8012008102920032006290300370300200120012903e8013703c80120131001220829000021132006200841086a290000370300200120133703e80120081029200220012903e801370000200241086a22082006290300370000200141a8016a41086a220a2003290300370300200141a8016a41106a220b2000290300370300200141a8016a41186a220c2004290300370300200120012903c8013703a801200120073602c8012009200141c8016aad4280808080c000841003200442003703002000420037030020034200370300200142003703c80120051001220729000021052006200741086a290000370300200120053703e8012007102920032006290300370300200120012903e8013703c80141eaf9ca00ad4280808080e000841001220729000021052006200741086a290000370300200120053703e80120071029200220012903e80137000020082006290300370000200a2003290300370300200b2000290300370300200c2004290300370300200120012903c8013703a801200141003602d001200142013703c8010240200e41024b0d00024002400240200e0e03000102000b410110272206450d05200141013602cc01200120063602c801200641003a0000200141013602d0010240024020012802cc012203417f6a4104490d004101210620012802c80121020c010b41012106200341017422024105200241054b1b22044100480d0720012802c8012102024020032004460d00200220032004102b2202450d0720012802d00121060b200120043602cc01200120023602c8010b200220066a20123600002001200641046a3602d0010c020b410110272206450d04200141013602cc01200120063602c801200641013a0000200141013602d0010c010b410110272206450d03200141013602cc01200120063602c801200641023a0000200141013602d0010b200141106a200141c8016a10e905200128029801200141a0016a280200200141c8016a10850620012802cc012106200920013502d00142208620012802c8012202ad84101402402006450d00200210290b200141106a10ad072001419c016a28020041ffffff3f71450d0420012802980110290c040b200141106a10ad072001419c016a28020041ffffff3f71450d0320012802980110290c030b200010ad070c020b1030000b1032000b20014190026a24000bea1501047f0240024020002802002201411a4b0d0002400240024002400240024002400240024002400240024002400240024002400240024020010e1b00011313131302031304130506130708090a0b0c0d130e0f101311000b200041086a280200417e6a220141074b0d1202400240024002400240024020010e080018010218030405000b200041106a280200450d172000410c6a28020010290f0b200041106a280200450d162000410c6a28020010290f0b200041106a280200450d152000410c6a28020010290f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010290b0240200141106a280200450d002001410c6a28020010290b200141186a2101200241686a22020d000b0b200041106a2802002201450d14200141186c450d14200028020c10290f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d132001410c6c450d13200028020c10290f0b200041106a280200450d122000410c6a28020010290f0b024020002d0004220141034b0d000240024020010e0414001401140b200041186a220128020010cc01200128020010290f0b02402000410c6a280200450d00200041086a28020010290b200041246a220128020010cc01200128020010290f0b2000410c6a280200450d11200041086a28020010290f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a21010340200110d3020240200141046a2802002203450d00200341246c450d00200128020010290b200141f0006a2101200241907f6a22020d000b0b200041086a2802002201450d10200141f0006c450d10200028020410290f0b0240200041086a2d0000220141174b0d000240024002400240024020010e18151515151515001515151515150115150203151515151504150b200041106a28020041ffffff3f71450d142000410c6a28020010290f0b200041106a28020041ffffff3f71450d132000410c6a28020010290f0b200041146a28020041ffffffff0371450d12200041106a28020010290f0b200041146a2802002201450d11200141246c450d11200041106a28020010290f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010290b200041186a1087020f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010290b200041186a1087020f0b20002802042201450d0e200041086a280200450d0e200110290f0b024020004194026a2802002202450d002000418c026a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b20004190026a2802002201450d0d2001410c6c450d0d200028028c0210290f0b02402000410c6a280200450d00200041086a28020010290b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041186a2802002201450d0c2001410c6c450d0c200028021410290f0b200041086a2d0000416d6a220141034b0d0b024002400240024020010e0400010203000b200041106a280200450d0e2000410c6a28020010290f0b200041106a280200450d0d2000410c6a28020010290f0b200041106a280200450d0c2000410c6a28020010290f0b200041106a280200450d0b2000410c6a28020010290f0b200041086a2d0000417f6a220141024b0d0a02400240024020010e03000102000b200041306a28020041ffffff3f71450d0c2000412c6a28020010290f0b2000410c6a220128020010cc01200128020010290f0b200041106a220128020010cc01200128020010290f0b200041086a2d0000417f6a220141024b0d0902400240024020010e03000102000b200041306a28020041ffffff3f71450d0b2000412c6a28020010290f0b2000410c6a220128020010cc01200128020010290f0b200041106a220128020010cc01200128020010290f0b200041086a2d00004101470d08200041106a28020041ffffff3f71450d082000410c6a28020010290f0b20002d00044104470d072000410c6a28020041ffffff3f71450d07200041086a28020010290f0b200041086a2d0000417c6a220141024b0d060240024020010e03000801000b200041306a280200450d072000412c6a28020010290f0b200041306a280200450d062000412c6a28020010290f0b02402000280204220141014b0d00024020010e020700070b0240200041106a2802002201450d00200041086a280200220320014190026c6a210403400240200341d0006a280200450d00200328024c10290b0240200341186a2802002202450d00200328021021012002410474210203400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b0240200341146a28020041ffffffff0071450d00200328021010290b0240200328021c2201450d00200341206a280200450d00200110290b0240200341fc016a2802002201450d00200141c1006c450d0020032802f80110290b20034190026a210120034188026a41003602002003280284022102200341013602840202402003418c026a280200450d00200210290b2001210320012004470d000b0b2000410c6a2802002201450d0620014190026c450d06200028020810290f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010290b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d052001410c6c450d05200028020c10290f0b200041086a2d000022014105490d04024020014105470d002000413c6a280200450d05200041386a28020010290f0b200041146a280200450d04200041106a28020010290f0b20002d0004417f6a220141034b0d030240024020010e0400050501000b0240200041106a280200450d002000410c6a28020010290b2000411c6a280200450d04200041186a28020010290f0b02402000410c6a280200450d00200041086a28020010290b200041186a280200450d03200041146a28020010290f0b0240200041086a2d0000220141034b0d00024020010e0404040400040b200041f0006a280200450d03200041ec006a28020010290f0b200041106a280200450d022000410c6a28020010290f0b024020002d0004220141044b0d00024002400240024020010e050600010203060b0240200041106a2802002202450d00200041086a2802002101200241a8026c21020340200110c201200141a8026a2101200241d87d6a22020d000b0b2000410c6a2802002201450d05200141a8026c450d05200028020810290f0b200041086a220128020010cc01200128020010290f0b02402000410c6a28020041ffffff3f71450d00200041086a28020010290b200041206a220128020010cc01200128020010290f0b2000412c6a28020041ffffff3f71450d02200041286a28020010290c020b2000412c6a28020041ffffff3f71450d01200041286a28020010290f0b0240200041086a2d0000220141034b0d000240024020010e0403000103030b2000410c6a220128020010cc01200128020010290f0b2000410c6a220128020010cc01200128020010290f0b2000412c6a220128020010cc01200128020010290f0b0bd50302047f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200041003a00000c010b200341186a28020021052003280214210641002101200341003a006802400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200341003a00680b4100210120034100360228200342013703202003410d3602442003200341086a3602402003200341206a36026c200341dc006a41013602002003420137024c200341f4eaca003602482003200341c0006a360258200341ec006a41a8a3c800200341c8006a10371a200335022842208620033502208410082003280224450d00200328022010290b200020013a00002006450d00200410290b200341f0006a24000bbe0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a1096020240024020032802480d0020034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110290b200341e0006a24000be503010a7f230041106b22032400024020014105744104722204417f4c0d000240200410272205450d002003410036020820032004360204200320053602002001200310710240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020052104412010272201450d0220012000290000370000200141186a2209200041186a290000370000200141106a220a200041106a290000370000200141086a220b200041086a29000037000002400240200620046b4120490d00200441206a21050c010b024002400240200441206a22052004490d002006410174220c2005200c20054b1b220c4100480d000240024020060d000240200c0d00410121070c020b200c102721070c040b2006200c470d020b200c21060c030b1032000b20072006200c102b21070b200c210620070d001030000b200041206a2100200720046a22042001290000370000200441186a2009290000370000200441106a200a290000370000200441086a200b29000037000020011029200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100302402006450d00200710290b200341106a24000f0b1039000b1038000bd60202057f027e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841007108b0202400240200228020822010d00200042023703000c010b200228020c210302400240200241106a28020022044104490d0020044104460d0020012d0004220541014b0d0020012800002106420021070240024020050e020100010b2004417b6a4108490d0120012900052108420121070b20002008370308200041106a20063602000c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b420221070b200020073703002003450d00200110290b200241d0006a24000bcd0b030e7f047e087f230041a0046b220324002003200236021420032001360210200341186a2002ad4220862001ad841007108b0202400240200328021822040d00200041003602000c010b200328021c21052003200341206a280200220136022c2003200436022802400240024020014104490d0020032001417c6a36022c2003200441046a36022820042800002106200341086a200341286a10c80120032802080d00200328020c21072003410036024820034100360240200341c0006a41086a210802400240024002402007450d00200341d4016a2109200328022c210a200341b8016a210b4100210c034041002101200341003a00e001200c41016a210c024002400340200a2001460d01200341c0016a20016a2003280228220d2d00003a00002003200d41016a3602282003200141016a22023a00e0012002210120024120470d000b20034190016a41086a220e200341c0016a41086a29030037030020034190016a41106a220f200341c0016a41106a29030037030020034190016a41186a2210200341c0016a41186a290300370300200320032903c001370390012003200a20026b220136022c200141044f0d010c050b2003410036022c200141ff0171450d04200341003a00e001410021010c050b200341d0006a41086a200e2903002211370300200341d0006a41106a200f2903002212370300200341d0006a41186a20102903002213370300200320032903900122143703502003200d41056a36022820032001417c6a220a36022c200d2800012115200341f0006a41186a22162013370300200341f0006a41106a22172012370300200341f0006a41086a22182011370300200320143703700240024020032802402219450d002003280244211a0c010b200341c0016a410041e00210e6071a200b410036020020034190016a41206a2201420037030020104200370300200f4200370300200e4200370300200342003703900141940310272219450d034100211a201941003b010620194100360200201941086a200341c0016a41e00210e4071a20194190036a200b28020036020020194188036a200129030037020020194180036a2010290300370200201941f8026a200f290300370200201941f0026a200e29030037020020192003290390013702e80220034100360244200320193602400b024002400340201941086a210220192f0106221b41057421014100210d024003402001450d01200341f0006a2002412010e707221c450d03200141606a2101200d41016a210d200241206a2102201c417f4a0d000b200d417f6a211b0b0240201a450d00201a417f6a211a2019201b4102746a4194036a28020021190c010b0b201020162903002211370300200f20172903002212370300200e201829030022133703002003200329037022143703900120092014370200200941086a2013370200200941106a2012370200200941186a2011370200200320083602d0012003201b3602cc01200320193602c401200341003602c0012003200341c0006a3602c801200341c0016a201510d2011a0c010b2019200d4102746a41e8026a20153602000b200c2007470d000b0b410121010c020b1030000b410021010b200341306a41086a20082802002202360200200320032903402211370330200341c0016a41086a2002360200200320113703c00120010d01200341c0016a10d4010b41002101200341003602980120034201370390012003410d3602742003200341106a360270200320034190016a360250200341d4016a4101360200200342013702c401200341f4eaca003602c0012003200341f0006a3602d001200341d0006a41a8a3c800200341c0016a10371a200335029801422086200335029001841008200328029401450d0120032802900110290c010b20034190016a41086a200341c0016a41086a2802002201360200200320032903c00122113703900120002006360204200041086a2011370200200041106a2001360200410121010b200020013602002005450d00200410290b200341a0046a24000bed0701087f23004190046b2202240020002802102203200328020041016a360200200241086a2203200041086a29020037030020022000290200370300200241306a41186a2000412c6a290000370300200241306a41106a200041246a290000370300200241306a41086a2000411c6a29000037030020022000290014370330200241d0006a2002200241306a200110fe0402400240024020022d00504101470d002003200241d9006a290000370300200241106a200241e1006a290000370300200241186a200241e9006a29000037030020022002290051370300200241d0006a412c6a280200210120024188016a280200210420024184016a280200210320024180016a2802002105200228028c012106200241f8006a28020022002802002207450d0120002f01042108200241f4006a2802002109200241d0006a410172210003402002200841ffff037136022c20022001360228200220073602242002200941016a360220200241306a41186a200241186a2201290300370300200241306a41106a200241106a2207290300370300200241306a41086a200241086a220829030037030020022002290300370330200241d0006a200241206a200241306a20052003200410ff0420022d00504101470d032008200041086a2900003703002007200041106a2900003703002001200041186a29000037030020022000290000370300200228027c2101200228028801210420022802840121032002280280012105200228027822082802002207450d0220082f01042108200228027421090c000b0b200241d0006a41086a280200200241d0006a41106a2802004102746a41e8026a21060c010b200241d0006a410272410041be0310e6071a02400240024041c40310272200450d0020004100360200200041046a200241d0006a41c00310e4071a200020012802002207360294032001200036020020012001280204220841016a360204200741003b010420072000360200200241d0006a41186a200241186a290300370300200241d0006a41106a200241106a290300370300200241d0006a41086a200241086a2903003703002002200229030037035020082004470d0120002f01062201410a4b0d02200020014105746a220441206a200241d0006a41186a290300370000200441186a200241d0006a41106a290300370000200441106a200241d0006a41086a290300370000200441086a2002290350370000200020014102746a41e8026a20053602002000200141016a22014102746a4194036a2003360200200020013b0106200320013b0104200320003602000c030b1030000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000b20024190046a240020060bef0403057f027e027f230041c0006b22022400200041086a28020022032001107102400240024020002802002204450d00024020002802042205450d002005210020042106034020062802940321062000417f6a22000d000b200421000340200020002f01064102746a4194036a28020021002005417f6a22050d000b200241186a2105200621040c020b200241186a2105200421000c010b410021042002410036021c200241186a21050c010b2002200036021c200241246a20002f010636020020024100360220200241003602180b200241086a41086a200541086a2902002207370300200220052902002208370308200241306a2007370300200242003703202002200436021c20024100360218200220083703282002200336023802402003450d00034020022003417f6a360238200241186a410020041b2206280200210020062802082109024002400240200628020c2205200628020422032f01064f0d00200321040c010b0240034020032802002204450d01200041016a210020032f0104210520042103200520042f0106490d020c000b0b2009ad2107410021040c010b2005ad4220862009ad8421070b2007422088a7220941016a21052007a7210a0240024020000d00200421030c010b200420054102746a4194036a2802002103410021052000417f6a2200450d00034020032802940321032000417f6a22000d000b0b2006200536020c2006200a36020820062003360204200641003602002001200420094105746a41086a412010722002200420094102746a41e8026a28020036023c20012002413c6a4104107220022802382203450d01200228021c21040c000b0b200241c0006a24000bb50201047f024020002802002201450d0020002802082102024020002802042200450d00034020012802940321012000417f6a22000d000b0b02402002450d004100210303400240024002402001450d002002417f6a2102200320012f0106490d0141002104034002400240200128020022000d0041002103410021000c010b200441016a210420012f010421030b2001102920002101200320002f01064f0d000b200341016a2103024020040d00200021010c030b200020034102746a4194036a2802002101410021032004417f6a2200450d02034020012802940321012000417f6a22000d000c030b0b41a79dc800412b41e0f6c4001033000b200341016a21030b20020d000b0b2001450d0020012802002100200110292000450d00034020002802002101200010292001210020010d000b0b0ba20703027f017e067f230041e0006b2203240041eebec500ad4280808080f00084100122042900002105200341086a41086a200441086a2900003703002003200537030820041029419db8c000ad4280808080b00284100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a22012003413c6a3602002003200341c8006a41086a22063602542003200341386a3602582003200341c8006a360250200341286a200341d0006a10750240024002400240412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad428080808080048410022202290000370348200210292001200441206a36020020032004360258200320063602542003200341c8006a360250200341386a200341d0006a1075200410292003280230220741206a2206200328024022086a2202417f4c0d01200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d012002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21010c010b2007415f4b0d03200b41017422012006200120064b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200710e4071a02400240200120066b2008490d002001210b0c010b20022006490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420066a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000ba20703027f017e067f230041e0006b2203240041eebec500ad4280808080f00084100122042900002105200341086a41086a200441086a2900003703002003200537030820041029418ab8c000ad4280808080b00284100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a22012003413c6a3602002003200341c8006a41086a22063602542003200341386a3602582003200341c8006a360250200341286a200341d0006a10750240024002400240412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad428080808080048410022202290000370348200210292001200441206a36020020032004360258200320063602542003200341c8006a360250200341386a200341d0006a1075200410292003280230220741206a2206200328024022086a2202417f4c0d01200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d012002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21010c010b2007415f4b0d03200b41017422012006200120064b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200710e4071a02400240200120066b2008490d002001210b0c010b20022006490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420066a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000ba20703027f017e067f230041e0006b2203240041eebec500ad4280808080f00084100122042900002105200341086a41086a200441086a290000370300200320053703082004102941ffb7c000ad4280808080b00184100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a22012003413c6a3602002003200341c8006a41086a22063602542003200341386a3602582003200341c8006a360250200341286a200341d0006a10750240024002400240412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad428080808080048410022202290000370348200210292001200441206a36020020032004360258200320063602542003200341c8006a360250200341386a200341d0006a1075200410292003280230220741206a2206200328024022086a2202417f4c0d01200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d012002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21010c010b2007415f4b0d03200b41017422012006200120064b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200710e4071a02400240200120066b2008490d002001210b0c010b20022006490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420066a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000bb10503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e9b7c000ad4280808080e00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bb10503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f5b7c000ad4280808080a00184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b8f6c100ad4280808080d00284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bc20503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102941efb7c000ad4280808080e00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100522012900002104200241306a41086a200141086a2900003703002002200437033020011029200241cc006a200341206a360200200220033602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a1075200310292002280228220541206a2201417f4c0d01200228022021060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a20002001360208200020083602042000200336020002402002280224450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bb10503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b0b8c000ad4280808080d00184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bda0503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941bdb8c000ad4280808080900184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240410410272203450d00200341044120102b2203450d0320032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a290000370000200128022021052003412041c000102b2201450d032001200536002020022001ad4280808080c004841002220329000037033820031029200241cc006a200141246a360200200220013602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200110292002280230220641206a2203417f4c0d01200228022821070240024020030d0041002105410121010c010b200310272201450d01200321050b024002402005410f4d0d00200521080c010b200541017422084110200841104b1b22084100480d03024020050d002008102722010d010c050b20052008460d00200120052008102b2201450d040b20012002290308370000200141086a200241086a41086a2903003700000240024020084170714110460d00200821050c010b200841017422054120200541204b1b22054100480d0320082005460d00200120082005102b2201450d040b20012002290318370010200141186a200241186a41086a29030037000002400240200541606a2006490d00200521080c010b2006415f4b0d03200541017422082003200820034b1b22084100480d0320052008460d00200120052008102b2201450d040b200141206a2007200610e4071a2000200336020820002008360204200020013602000240200228022c450d00200710290b200241d0006a24000f0b1039000b1038000b1032000b1030000bb10503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b8dcc900ad4280808080a00184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000b890603027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241186a41086a200341086a290000370300200220043703182003102941b0b8c000ad4280808080d00184100122032900002104200241286a41086a200341086a2900003703002002200437032820031029200128020021010240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad428080808080048410022201290000370348200110292002410c6a200341206a360200200220033602082002200241c8006a41086a3602042002200241c8006a360200200241386a20021075200310292002280240220541206a2201417f4c0d01200228023821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290318370000200341086a200241186a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290328370010200341186a200241286a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a0240200228023c450d00200610290b20022003200110e001200241286a41086a2207200241086a280200360200200220022903003703280240200228020c2201450d002000200229032837020020002002290310370210200041086a20072802003602000b2000200136020c02402008450d00200310290b200241d0006a24000f0b1039000b1038000b1032000b1030000ba20503067f017e027f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d002000410036020c0c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021062003200141086a3602202003200241786a220536022420054104490d00200128000421052003200241746a36022420032001410c6a360220200128000821072003200341206a10c80120032802000d002003280224220820032802044102742202490d0002400240024002402002417f4c0d000240024020020d00420021094101210a0c010b2002102d220a450d02200a2003280220220b200210e4071a2003200820026b3602242003200b20026a3602202002ad21090b200a450d04024020092002ad422086842209422088a722020d002009a721020c030b0240200a2002724103710d002009a722024103710d0020024102762208450d032009422288a7210b0c040b2009a7450d04200a10290c040b1038000b1039000b4100210b02402002450d00200a10290b410021084104210a0b41000d00200a450d00200020083602102000200a36020c200020073602082000200536020420002006360200200041146a200b3602000c010b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b2000410036020c0b2004450d00200110290b200341e0006a24000bda0b04047f017e027f027e23004190026b2201240020014180026a200010d801200141d8006a200128028002220020012802880210cd01200141e0016a41086a2202200141e1006a290000370300200141e0016a41106a2203200141e9006a290000370300200141e0016a41186a2204200141f1006a290000370300200120012900593703e0010240024002400240024002400240024020012d00584101470d00200141386a41186a2004290300370300200141386a41106a2003290300370300200141386a41086a2002290300370300200120012903e0013703380240200128028402450d00200010290b200141d8006a41186a2202200141386a41186a290300370300200141d8006a41106a2203200141386a41106a290300370300200141d8006a41086a2204200141386a41086a2903003703002001200129033837035841eebec500ad4280808080f00084100122002900002105200141b0016a41086a200041086a290000370300200120053703b0012000102941efb7c000ad4280808080e00084100122002900002105200141c0016a41086a200041086a290000370300200120053703c00120001029412010272200450d0420002001290358370000200041186a2002290300370000200041106a2003290300370000200041086a20042903003700002000ad428080808080048410052202290000210520014180026a41086a200241086a290000370300200120053703800220021029200141ec016a200041206a360200200120003602e801200120014180026a41106a3602e401200120014180026a3602e001200141d0016a200141e0016a10752000102920012802d801220641206a2202417f4c0d0520012802d00121070240024020020d0041002103410121000c010b200210272200450d05200221030b024002402003410f4d0d00200321040c010b200341017422044110200441104b1b22044100480d07024020030d002004102722000d010c090b20032004460d00200020032004102b2200450d080b200020012903b001370000200041086a200141b0016a41086a2903003700000240024020044170714110460d00200421030c010b200441017422034120200341204b1b22034100480d0720042003460d00200020042003102b2200450d080b200020012903c001370010200041186a200141c0016a41086a29030037000002400240200341606a2006490d00200321040c010b2006415f4b0d07200341017422042002200420024b1b22044100480d0720032004460d00200020032004102b2200450d080b200041206a2007200610e4071a024020012802d401450d00200710290b200141d8006a2000200210e20120012802782203450d01200141f0006a290300210820014188016a280200210620014184016a280200210720012903682109200128027c210202402004450d00200010290b02402002450d00200241186c450d00200310290b200641ffffffff0371450d03200710290c030b200128028402450d01200010290c010b2004450d00200010290b42002109420021080b200141d8006a41186a4200370300200141d8006a41106a22034200370300200141d8006a41086a220042003703002001420037035841dcbec500ad42808080808001841001220229000021052000200241086a2900003703002001200537035820021029419fe3c200ad4280808080d00184100122022900002105200141386a41086a2204200241086a2900003703002001200537033820021029200320012903382205370300200141e0016a41086a2000290300370300200141e0016a41106a2005370300200141e0016a41186a2004290300370300200120012903583703e001200141206a200141e0016a412010e301200141106a2001290328200141206a41106a290300427f420010e00720012009200820012903104200200128022022001b220542012005420156200141106a41086a290300420020001b22054200522005501b22001b2005420020001b10e0072001290300210520014190026a240020050f0b1039000b1038000b1032000b1030000b970b06047f057e027f017e027f027e230041f0016b220324002003200236026420032001360260200341e8006a2002ad4220862001ad841007108b02024002400240200328026822040d00200041003602200c010b200328026c21052003200341f0006a280200220636029c01200320043602980141002101200341003a00e8010240024002400240034020062001460d01200341c8016a20016a200420016a22022d00003a00002003200241016a360298012003200141016a22023a00e8012002210120024120470d000b200341a8016a41086a200341c8016a41086a290300370300200341a8016a41106a200341c8016a41106a290300370300200341a8016a41186a200341c8016a41186a290300370300200320032903c8013703a8012003200620026b36029c01200341c8006a20034198016a1084022003290348a70d02200341c8006a41106a290300210720032903502108200341306a20034198016a1084022003290330a70d02200341306a41106a29030021092003290338210a200341286a20034198016a10c80120032802280d02200328022c2206200328029c0141186e2201200120064b1bad42187e220b422088a7450d010c050b2003410036029c01200141ff0171450d01200341003a00e8010c010b200ba72202417f4c0d03024002400240024002400240024020020d004108210c0c010b20021027220c450d010b41002101200341003602d0012003200c3602c8012003200241186e22023602cc0102400240024002402006450d0041002101200341206a210d0340200341106a20034198016a1084022003290310a70d02200d290300210b2003290318210e200341086a20034198016a10c80120032802080d02200328020c210f0240200120032802cc01470d00200341c8016a20014101108f0120032802c801210c20032802d00121010b200c200141186c6a2202200f3602102002200b3703082002200e3703002003200141016a22013602d0012006417f6a22060d000b20032802cc0121020b200c450d08200320034198016a10c80120032802000d06200328029c01220d20032802044102742206490d062006417f4c0d0b20060d014200210b4101210f0c020b20032802cc012201450d07200141186c0d060c070b2006102d220f450d01200f2003280298012210200610e4071a2003200d20066b36029c012003201020066a360298012006ad210b0b200f450d030240200b2006ad42208684220b422088a722060d00200ba721060c020b0240200f2006724103710d00200ba722064103710d002006410276220d450d02200b422288a721100c030b200ba7450d03200f10290c030b1039000b4100211002402006450d00200f10290b4100210d4104210f0b41000d00200f450d00200341f8006a41186a200341a8016a41186a290300220b370300200341f8006a41106a200341a8016a41106a290300220e370300200341f8006a41086a200341a8016a41086a2903002211370300200320032903a8012212370378200041186a20093703002000200a3703102000200737030820002008370300200041346a2010360200200041306a200d3602002000412c6a200f360200200041286a2001360200200020023602242000200c360220200041386a2012370300200041c0006a2011370300200041c8006a200e370300200041d0006a200b3703000c030b2002450d01200241186c450d010b200c10290b200341003602b001200342013703a8012003410d36027c2003200341e0006a3602782003200341a8016a3602a401200341dc016a4101360200200342013702cc01200341f4eaca003602c8012003200341f8006a3602d801200341a4016a41a8a3c800200341c8016a10371a20033502b00142208620033502a801841008024020032802ac01450d0020032802a80110290b200041003602200b2005450d00200410290b200341f0016a24000f0b1038000ba80202017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410d36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341f4eaca003602382003200341286a360248200341346a41a8a3c800200341386a10371a200335022042208620033502188410080240200328021c450d00200328021810290b420021040b2002450d00200110290b2000200637030820002004370300200041106a2005370300200341d0006a24000bd80301067f230041106b2202240020024100360208200242013703000240412010272203450d0020032000290038370000200341086a200041c0006a290000370000200341106a200041c8006a290000370000200341186a200041d0006a29000037000020022003360200200242a080808080043702042002200036020c2002410c6a200210e5012002200041106a36020c2002410c6a200210e50120002802202103200041286a28020022042002107102402004450d002003200441186c6a210403402002200336020c2002410c6a200210e501200341106a200210e6012004200341186a2203470d000b0b200028022c2105200041346a28020022032002107102400240024020022802042206200228020822046b20034102742200490d0020022802002103200621070c010b200420006a22032004490d01200641017422072003200720034b1b22074100480d010240024020060d00024020070d00410121030c020b2007102722030d010c040b2002280200210320062007460d00200320062007102b2203450d030b20022007360204200220033602000b200320046a2005200010e4071a2001290200200420006aad4220862003ad84100302402007450d00200310290b200241106a24000f0b1032000b1030000ba50403017f027e027f230041e0006b220224000240024020002802002200290300220342c000544100200041086a29030022045022051b0d0002400240024020034280800154410020051b0d00200342808080800454410020051b0d01411020047920037942c0007c20044200521ba741037622056b4104490d022002413320054102746b3a00482001200241c8006a41011072200029030021032002200041086a290300220437030820022003370300200541706a21000340200220033c00482001200241c8006a410110722003420888200442388684210320044208882104200041016a22052000492106200521002006450d000b20022003370300200220043703082003200484500d04200241286a41146a4109360200200241346a410e360200200241106a41146a410336020020022002360240200241d0f8ca00360244200241c8006a41146a410036020020024203370214200241aca5cc003602102002410e36022c20024180a6cc003602582002420137024c20024188f8ca003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4180a6cc001040000b20022003a74102744101723b01482001200241c8006a410210720c030b20022003a74102744102723602482001200241c8006a410410720c020b41c4f7ca00413641b8a1cc001033000b20022003a74102743a00482001200241c8006a410110720b200241e0006a24000bb30101027f230041106b2202240002400240024002402000280200220341c000490d00200341808001490d012003418080808004490d02200241033a00032001200241036a41011072200220002802003602042001200241046a410410720c030b200220034102743a00032001200241036a410110720c020b200220034102744101723b010a20012002410a6a410210720c010b2002200341027441027236020c20012002410c6a410410720b200241106a24000b130020004118360204200041a0c9c0003602000bab0407047f017e017f017e017f017e037f230041d0006b22002400200041206a41186a22014200370300200041206a41106a22024200370300200041206a41086a220342003703002000420037032041eebec500ad4280808080f000842204100122052900002106200041c0006a41086a2207200541086a290000370300200020063703402005102920032007290300370300200020002903403703204180fac100ad428080808080018422081001220529000021062007200541086a2900003703002000200637034020051029200220002903402206370300200041086a22092003290300370300200041106a220a2006370300200041186a220b2007290300370300200020002903203703000240024002404100200010b3012205200541ff01714104461b41ff0171417f6a220541024b0d0020050e03010001010b2001420037030020024200370300200342003703002000420037032020041001220529000021062007200541086a2900003703002000200637034020051029200320072903003703002000200029034037032020081001220529000021062007200541086a290000370300200020063703402005102920022000290340370000200241086a200729030037000020092003290300370300200a2002290300370300200b200129030037030020002000290320370300410110272207450d01200741013a00002000ad42808080808004842007ad428080808010841003200710290b200041d0006a24000f0b1030000b3400200041eebec50036020420004100360200200041146a4124360200200041106a41e8d9c100360200200041086a42073702000b2b01017f02404101102722020d001030000b200042818080801037020420002002360200200241023a00000b2b01017f02404101102722020d001030000b200042818080801037020420002002360200200241003a00000b5301017f0240411010272202450d002002420037000820024200370000200241104120102b2202450d0020024200370010200042a0808080800437020420002002360200200241186a42003700000f0b1030000b940302047f017e230041206b2203240002400240200241d8006c4104722204417f4c0d00200410272205450d0120034100360208200320043602042003200536020020022003107102402002450d002001200241d8006c6a210603402003200141386a41201072200129030021072003200141086a290300370318200320073703102003200341106a4110107220012802202102200128022822042003107102402004450d002002200441306c6a210403402003200241201072200241206a29030021072003200241286a290300370318200320073703102003200341106a411010722004200241306a2202470d000b0b200141d8006a2105200128022c2102200141346a28020022042003107102402004450d002004410574210403402003200241201072200241206a2102200441606a22040d000b0b200129031021072003200141186a290300370318200320073703102003200341106a411010722005210120052006470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1038000b1039000b3301017f02404110102722020d001039000b2002420037000820024200370000200042908080808002370204200020023602000b860101027f230041206b220224002002410c6a410036020020024200370300200241003602182002420137031002404104102722030d001030000b200341003600002002200336021020024284808080c00037021420024104722203200241106a10d301200041086a200228021836020020002002290310370200200310d401200241206a24000be90101047f230041106b220224002002410036020c02400240410110272203450d000240024002400240200228020c220441c000490d00200441808001490d012004418080808004490d02200341033a0000200228020c210441052105200341014105102b2203450d05200320043600010c030b200320044102743a0000410121050c020b41022105200341014102102b2203450d03200320044102744101723b00000c010b41042105200341014104102b2203450d02200320044102744102723600000b200020053602082000200536020420002003360200200241106a24000f0b1039000b1030000bf60301087f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10e5012002200336023c2002413c6a200241306a10e5012002280220210320042802002204200241306a10710240024002402004450d00200441306c210503400240024020022802342206200228023822046b4120490d00200441206a2107200228023021080c010b200441206a22072004490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102722080d010c060b2002280230210820062009460d00200820062009102b2208450d050b20022009360234200220083602300b200820046a2204200341106a290000370000200441186a200341286a290000370000200441106a200341206a290000370000200441086a200341186a290000370000200220073602382002200336023c2002413c6a200241306a10e501200341306a2103200541506a22050d000b0b20002002290330370200200041086a200241306a41086a280200360200024020022802242203450d00200341306c450d00200228022010290b200241c0006a24000f0b1032000b1030000b2c01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241043600000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241d4003600000b130020004102360204200041d0a2c2003602000b2c01017f02404104102722020d001039000b20004284808080c000370204200020023602002002411c3600000b2c01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241063600000bb53310047f017e017f017e017f017e057f017e0b7f017e017f017e0a7f017e017f077e230041a0036b22012400200141a0026a41186a22024200370300200141a0026a41106a22034200370300200141a0026a41086a22044200370300200142003703a00241eebec500ad4280808080f000842205100122062900002107200141c8006a41086a2208200641086a290000370300200120073703482006102920042008290300370300200120012903483703a00241f0f5c100ad428080808090018422071001220629000021092008200641086a2900003703002001200937034820061029200320012903482209370300200141a0016a41086a220a2004290300370300200141a0016a41106a220b2009370300200141a0016a41186a220c2008290300370300200120012903a0023703a001200141a0026a200141a0016a10d0012003280200210d20012903a0022109200242003703002003420037030020044200370300200142003703a00220051001220629000021052008200641086a290000370300200120053703482006102920042008290300370300200120012903483703a00220071001220629000021052008200641086a2900003703002001200537034820061029200320012903482205370300200a2004290300370300200b2005370300200c2008290300370300200120012903a0023703a00102400240410410272208450d0020084100200d41016a20094202511b220e360000200841044108102b2208450d0041002102200841003a0004200141a0016aad220f42808080808004842008ad4280808080d00084100320081029200141a0026a41186a220a4200370300200141a0026a41106a220b4200370300200141a0026a41086a22044200370300200142003703a00241eebec500ad4280808080f00084100122062900002105200141c8006a41086a2208200641086a290000370300200120053703482006102920042008290300370300200120012903483703a00241f0fbc100ad4280808080a001841001220629000021052008200641086a290000370300200120053703482006102920032001290348370000200341086a2008290300370000200141a0016a41086a2004290300370300200141a0016a41106a200b290300370300200141a0016a41186a200a290300370300200120012903a0023703a00120014180016a200141a0016a10f80102400240024020012802800122100d002001410036028002200142043703f8010c010b2001290284012105200120103602f801200120053702fc012005422088a722082005a72202470d010b200141f8016a20024101108d0120012802f801211020012802800221080b201020084103746a220420003602042004200e3602002001200841016a2211360280020240024002400240200e411d4f0d00201121120c010b024020110d004100211220014100360280020c010b200e41646a2104200841ffffffff017141016a2106410021132010210802400340200828020020044f0d01200841086a21082006201341016a2213470d000b0b0240024020112013490d004100211220014100360280022013450d012013410374211420014198026aad4280808080c0008421052001419c026a211520014188026a41086a21162010210c0340200c280200210d41eebec500ad4280808080f00084220710012208290000210920014180016a41086a2200200841086a290000370300200120093703800120081029418ab8c000ad4280808080b00284100122082900002109200141c8006a41086a220a200841086a29000037030020012009370348200810292001200d3602980220012005100222082900003703880220081029200120153602ac02200120163602a402200120014198026a3602a802200120014188026a3602a002200141a0016a200141a0026a107520012802a801220b41206a2204417f4c0d0720012802a00121170240024020040d0041002106410121080c010b200410272208450d06200421060b024002402006410f4d0d00200621020c010b200641017422024110200241104b1b22024100480d05024020060d002002102722080d010c080b20062002460d00200820062002102b2208450d070b2008200129038001370000200841086a20002903003700000240024020024170714110460d00200221060c010b200241017422064120200641204b1b22064100480d0520022006460d00200820022006102b2208450d070b20082001290348370010200841186a200a29030037000002400240200641606a200b490d00200621020c010b2004200b490d05200641017422022004200220044b1b22024100480d0520062002460d00200820062002102b2208450d070b200841206a2017200b10e4071a024020012802a401450d00201710290b2004ad4220862008ad84100602402002450d00200810290b20071001220829000021072000200841086a290000370300200120073703800120081029419db8c000ad4280808080b00284100122082900002107200a200841086a29000037030020012007370348200810292001200d3602980220012005100222082900003703880220081029200120153602ac02200120163602a402200120014198026a3602a802200120014188026a3602a002200141a0016a200141a0026a107520012802a801220b41206a2204417f4c0d0720012802a001210d0240024020040d0041002106410121080c010b200410272208450d06200421060b024002402006410f4d0d00200621020c010b200641017422024110200241104b1b22024100480d05024020060d00200210272208450d080c010b20062002460d00200820062002102b2208450d070b2008200129038001370000200841086a20002903003700000240024020024170714110460d00200221060c010b200241017422064120200641204b1b22064100480d0520022006460d00200820022006102b2208450d070b20082001290348370010200841186a200a29030037000002400240200641606a200b490d00200621020c010b200b415f4b0d05200641017422022004200220044b1b22024100480d0520062002460d00200820062002102b2208450d070b200841206a200d200b10e4071a024020012802a401450d00200d10290b2004ad4220862008ad84100602402002450d00200810290b200c41086a210c201441786a22140d000c020b0b201320111044000b201120136b2202450d0002402013450d002010201020134103746a200241037410e5071a0b20012002360280022010280204210a200141a0026a41186a4200370300200141a0026a41106a22004200370300200141a0026a41086a22084200370300200142003703a00241b1dcc900ad4280808080f0008410012204290000210520014180016a41086a2206200441086a2900003703002001200537038001200410292008200629030037030020012001290380013703a00241a7adc000ad4280808080b00184100122042900002105200141c8006a41086a2206200441086a2900003703002001200537034820041029200020012903482205370300200141a0016a41086a2008290300370300200141a0016a41106a2005370300200141a0016a41186a2006290300370300200120012903a0023703a001200141a0026a200141a0016a412010f9014101210420012902a40221050240024020012802a00222084101460d00200841014621040c010b2005422088a7220b200a200a200b4b1b22062005a72208490d000240200620084d0d000340200141a0026a200810fa0120013502a80242208620012802a0022204ad841004200841016a2108024020012802a402450d00200410290b20062008470d000b0b200a200b4921042005428080808070832006ad8421050b2001200537028c0220012004360288020240024020040d00200141a0026a41186a22064200370300200141a0026a41106a220a4200370300200141a0026a41086a22084200370300200142003703a00241b1dcc900ad4280808080f0008410012204290000210520014180016a41086a220b200441086a2900003703002001200537038001200410292008200b29030037030020012001290380013703a00241a7adc000ad4280808080b00184100122042900002105200141c8006a41086a220b200441086a290000370300200120053703482004102920002001290348370000200041086a200b290300370000200141a0016a41086a2008290300370300200141a0016a41106a200a290300370300200141a0016a41186a2006290300370300200120012903a0023703a001200f428080808080048410040c010b200141a0026a41186a22064200370300200141a0026a41106a220a4200370300200141a0026a41086a22084200370300200142003703a00241b1dcc900ad4280808080f0008410012204290000210520014180016a41086a220b200441086a2900003703002001200537038001200410292008200b29030037030020012001290380013703a00241a7adc000ad4280808080b00184100122042900002105200141c8006a41086a220b200441086a290000370300200120053703482004102920002001290348370000200041086a200b290300370000200141a0016a41086a2008290300370300200141a0016a41106a200a290300370300200141a0016a41186a2006290300370300200120012903a0023703a001200141203602a4022001200141a0016a3602a00220014188026a410472200141a0026a10fb010b200221120b20012802fc012115200141a0026a41186a22024200370300200141a0026a41106a22004200370300200141a0026a41086a22044200370300200142003703a00241eebec500ad4280808080f00084100122062900002105200141c8006a41086a2208200641086a290000370300200120053703482006102920042008290300370300200120012903483703a00241f0fbc100ad4280808080a001841001220629000021052008200641086a290000370300200120053703482006102920032001290348370000200341086a2008290300370000200141a0016a41086a2004290300370300200141a0016a41106a2000290300370300200141a0016a41186a2002290300370300200120012903a0023703a0010240024020100d00200f428080808080048410040c010b20124103744104722208417f4c0d04200810272204450d02200141003602a802200120083602a402200120043602a0022012200141a0026a10710240024020120d0020012802a802210820012802a00221020c010b201020124103746a2114410020012802a802220b6b210020012802a4022104410021080340200b20086a210a201020086a220c280200210d02400240200420006a4104490d0020012802a0022102200421060c010b200a41046a2206200a490d04200441017422022006200220064b1b22064100480d040240024020040d00024020060d00410121020c020b200610272202450d080c010b20012802a002210220042006460d00200220042006102b2202450d070b200120063602a402200120023602a0020b2002200b6a20086a200d3600002001200a41046a22043602a802200c41046a280200210d02400240200620006a417c6a41034d0d00200621040c010b200441046a22172004490d04200641017422042017200420174b1b22044100480d040240024020060d00024020040d00410121020c020b200410272202450d080c010b20062004460d00200220062004102b2202450d070b200120043602a402200120023602a0020b2002200b6a20086a41046a200d3600002001200a41086a3602a802200041786a2100200841086a2108200c41086a2014470d000b200b20086a21080b20012802a4022104200f42808080808004842008ad4220862002ad84100302402004450d00200210290b201541ffffffff0171450d00201010290b200141a0026a41186a22184200370300200141a0026a41106a22194200370300200141a0026a41086a221a4200370300200142003703a00241eebec500ad4280808080f00084221b100122082900002105200141c8006a41086a221c200841086a2900003703002001200537034820081029201a201c290300370300200120012903483703a00241b0fec100ad4280808080e00284221d100122082900002105201c200841086a290000370300200120053703482008102920032001290348370000200341086a221e201c290300370000200141a0016a41086a221f201a290300370300200141a0016a41106a22202019290300370300200141a0016a41186a22212018290300370300200120012903a0023703a001200141c0006a200141a0016a412010fc01200128024421220240200128024022234101470d00024020224100200e41646a22082008200e4b1b22244f0d00200141d8016a2125200141a0016a41246a2100200141a0026a41286a2117202221260340200141a0016a202610fd01200141a0026a20012802a001220820012802a801220410fe010240024020012802a00222270d0042002128410821270c010b2004ad4220862008ad84100420012902a40221280b024020012802a401450d00200810290b20272028422088a7220841d8006c6a210b2027210202402008450d000340200141a0016a41186a2208200241186a290300370300200141a0016a41106a2204200241106a290300370300200141a0016a41086a2206200241086a2903003703002002280220210a20022903002105200141a0026a41206a220d200241c4006a2902003703002017200241cc006a290200370300200141a0026a41306a2210200241d4006a280200360200200141a0026a41086a22142002412c6a290200370300200141a0026a41106a2215200241346a290200370300200141a0026a41186a220c2002413c6a290200370300200120053703a0012001200241246a2902003703a002200241d8006a2102200a450d0120014180016a41186a2216200829030037030020014180016a41106a2213200429030037030020014180016a41086a220e2006290300370300200141c8006a41086a22122014290300370300200141c8006a41106a22142015290300370300200141c8006a41186a2215200c290300370300200141c8006a41206a2211200d290300370300200141c8006a41286a220d2017290300370300200141c8006a41306a22292010280200360200200120012903a00137038001200120012903a00237034820082016290300370300200420132903003703002006200e29030037030020002001290348370200200041086a2012290300370200200041106a2014290300370200200041186a2015290300370200200041206a2011290300370200200041286a200d290300370200200041306a202928020036020020012001290380013703a0012001200a3602c0012001420037038002200142003703f80120012008290300370390022001200429030037038802202520012903a001200629030020014188026a200141f8016a10ff01024020012802c8012208450d00200841306c2104200a210803402008200841206a290300200841286a29030020014188026a200141f8016a10ff01200841306a2108200441506a22040d000b0b200141f8016a41086a290300212a20012903f801212b20012802cc01210d02400240200129038802220720014188026a41086a290300220584500d0020012802d4012208450d00200141306a202b2007202b200754202a200554202a2005511b22041b222c202a200520041b222d2008ad420010e00720084105742104200141306a41086a29030021092001290330212e202c2105202d2107200d210803402008202e20052005202e56200720095620072009511b22061b222f2009200720061b2230108002200720307d2005202f54ad7d21072005202f7d2105200841206a2108200441606a22040d000b200141186a427f202b202c7d220920057c220520052009542208202a202d7d202b202c54ad7d220520077c2008ad7c220720055420072005511b22081b427f200720081b1081022001290318a7450d01200141186a41106a290300210520012903202107200142f0f2bda1a7ee9cb9f90037039802200141a0026a20014198026a108202200141a0026a20072005108002200c2005370300200120073703b002200141063a00a8022001410e3a00a002200141a0026a10cb010c010b2001202b202a1081022001290300a7450d00200141106a290300210520012903082107200142f0f2bda1a7ee9cb9f90037039802200141a0026a20014198026a108202200141a0026a20072005108002200c2005370300200120073703b002200141063a00a8022001410e3a00a002200141a0026a10cb010b024020012802c4012208450d00200841306c450d00200a10290b024020012802d00141ffffff3f71450d00200d10290b2002200b470d000b200b21020b2028a721040240200b2002460d0003400240200241246a2802002208450d00200841306c450d00200241206a28020010290b200241d8006a21080240200241306a28020041ffffff3f71450d002002412c6a28020010290b20082102200b2008470d000b0b202641016a212602402004450d00200441d8006c450d00202710290b20262024470d000b0b20222024202220244b1b21220b2018420037030020194200370300201a4200370300200142003703a002201b100122082900002105201c200841086a2900003703002001200537034820081029201a201c290300370300200120012903483703a002201d100122082900002105201c200841086a290000370300200120053703482008102920032001290348370000201e201c290300370000201f201a2903003703002020201929030037030020212018290300370300200120012903a0023703a0010240024020230d00200f428080808080048410040c010b200120223602a002200f4280808080800484200141a0026aad4280808080c0008410030b200141a0036a24000f0b1032000b1039000b1030000b1038000bed0401097f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10c8010240024020022802000d0020022802042205200228022422064103762201200120054b1b22014103742207417f4c0d030240024020010d00410421080c010b200710272208450d050b200241003602502002200136024c200220083602480240024002402005450d004100210103402002410036022820064104490d0320022002280220220741046a36022020072800002109200241003602282006417c6a4104490d022002200741086a3602202007280004210702402001200228024c470d00200241c8006a20014101108d0120022802482108200228025021010b200641786a2106200820014103746a220a2007360204200a20093602002002200141016a22013602502005417f6a22050d000b200220063602240b2008450d022000200229024c370204200020083602000c030b2006417c6a21060b20022006360224200228024c41ffffffff0171450d00200810290b20024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000b2004450d00200310290b200241e0006a24000f0b1038000b1039000bbb0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00200041003602000c010b200341106a2802002102200328020c2104200341003602380240024020024104490d0020012800002105200341003602382002417c714104460d00200041086a200128000436020020002005360204410121020c010b20034100360220200342013703182003410d36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341f4eaca003602382003200341286a360248200341346a41a8a3c800200341386a10371a200335022042208620033502188410080240200328021c450d00200328021810290b410021020b200020023602002004450d00200110290b200341d0006a24000bfc0403027f017e057f230041d0006b2202240041b1dcc900ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f5a7c800ad4280808080a00284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b3c01017f02404108102722020d001039000b200220002802003600002002200028020436000420012902002002ad42808080808001841003200210290b8f0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410d36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341f4eaca003602382003200341286a360248200341346a41a8a3c800200341386a10371a200335022042208620033502188410080240200328021c450d00200328021810290b0b2005450d00200410290b2000200236020420002001360200200341d0006a24000bfc0403027f017e057f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a29000037030020022004370308200310294198fbc100ad4280808080800284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b800b06057f017e077f017e037f037e230041e0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b020240024002400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10c80102400240024020032802000d00200328020422062003280224220741d8006e2201200120064b1bad42d8007e2208422088a70d042008a72201417f4c0d040240024020010d00410821090c010b200110272209450d060b4100210a20034100360230200320093602282003200141d8006e36022c02402006450d004100210b034041002101200341003a00d801200b41016a210b02400240024002400240034020072001460d01200341b8016a20016a2003280220220c2d00003a00002003200c41016a3602202003200141016a22023a00d8012002210120024120470d000b20034198016a41086a220d200341b8016a41086a29030037030020034198016a41106a220e200341b8016a41106a29030037030020034198016a41186a220f200341b8016a41186a290300370300200320032903b801370398012003200720026b220136022420014110490d032003200c41116a3602202003200141706a360224200c41096a2900002108200c2900012110200341b8016a200341206a10f40520032802b801220c450d0320032802c001211120032802bc012102200341b8016a200341206a10960220032802b80122070d012002450d03200241306c0d020c030b20034100360224200141ff0171450d02200341003a00d8010c020b20032802bc01211220032802242201410f4b0d020240201241ffffff3f71450d00200710290b2002450d01200241306c450d010b200c10290b200341d8006a41086a200341f8006a41086a2903003703000240200a450d00200a41d8006c2102200941306a210103400240200141746a280200220c450d00200c41306c450d00200141706a28020010290b0240200128020041ffffff3f71450d002001417c6a28020010290b200141d8006a2101200241a87f6a22020d000b0b200328022c2201450d03200141d8006c450d03200910290c030b20032802c0012113200341d8006a41086a200d2903002214370300200341d8006a41106a200e2903002215370300200341d8006a41186a200f2903002216370300200341386a41186a220d2016370300200341386a41106a220e2015370300200341386a41086a220f20143703002003200141706a36022420032003280220220141106a3602202003200329039801221437035820032014370338200141086a2900002114200129000021150240200a200328022c470d00200341286a200a4101108c01200328022821092003280230210a0b2009200a41d8006c6a2201201537031020012008370308200120103703002001200c360220200141186a2014370300200141346a2013360200200141306a20123602002001412c6a2007360200200141286a2011360200200141246a2002360200200141386a2003290338370200200141c0006a200f290300370200200141c8006a200e290300370200200141d0006a200d2903003702002003200a41016a220a360230200b2006460d01200328022421070c000b0b20090d010b200341003602a00120034201370398012003410d36027c2003200341086a360278200320034198016a360258200341cc016a4101360200200342013702bc01200341f4eaca003602b8012003200341f8006a3602c801200341d8006a41a8a3c800200341b8016a10371a20033502a0014220862003350298018410080240200328029c01450d0020032802980110290b200041003602000c010b2000200329022c370204200020093602000b2005450d00200410290b200341e0016a24000f0b1038000b1039000bd01e020f7f147e230041d0056b22052400200541286a200010d801200541d0046a20052802282206200528023010cd01200541d0036a41086a2207200541d9046a290000370300200541d0036a41106a2208200541e1046a290000370300200541d0036a41186a2209200541e9046a290000370300200520052900d1043703d0034100210a024020052d00d0044101470d00200541d0026a41186a2009290300370300200541d0026a41106a2008290300370300200541d0026a41086a2007290300370300200520052903d0033703d0024101210a0b0240200528022c450d00200610290b024002400240200a450d00200541086a41186a200541d0026a41186a2206290300370300200541086a41106a200541d0026a41106a2207290300370300200541086a41086a200541d0026a41086a2208290300370300200520052903d002370308200541e0016a200541086a10db01200541d0046a20052802e001220920052802e80110e20120054190016a41086a220b200541d0046a41086a29030037030020054190016a41106a220c200541d0046a41106a29030037030020054190016a41186a220d200541d0046a41186a290300370300200541d0036a41086a220e200541fc046a290200370300200541d0036a41106a220f20054184056a290200370300200541d0036a41186a22102005418c056a290200370300200541d0036a41206a221120054194056a290200370300200541d0036a41286a22122005419c056a290200370300200541d0036a41306a2213200541a4056a280200360200200520052903d00437039001200520052902f4043703d003024020052802f004220a450d0020054198026a41186a200d29030037030020054198026a41106a200c29030037030020054198026a41086a200b2903003703002008200e2903003703002007200f29030037030020062010290300370300200541d0026a41206a2011290300370300200541d0026a41286a2012290300370300200541d0026a41306a2013280200360200200520052903900137039802200520052903d0033703d0020b024020052802e401450d00200910290b200a450d00200541cc006a20052903d002370200200541286a41186a220620054198026a41186a290300370300200541286a41106a220720054198026a41106a290300370300200541286a41086a220820054198026a41086a290300370300200541d4006a200541d0026a41086a290300370200200541dc006a200541d0026a41106a290300370200200541e4006a200541d0026a41186a290300370200200541ec006a200541f0026a290300370200200541f4006a200541d0026a41286a290300370200200541fc006a20054180036a28020036020020052005290398023703282005200a36024820082903002114200529032821150240024020072903002216200120162001542006290300221720025420172002511b22071b22182017200220071b22198450450d002015211a2014211b0c010b2006201720197d2016201854ad7d221c3703002005201620187d221a37033802400240201a4280c8afa02556201c420052201c501b450d0020182116201921170c010b200541c0006a420037030020054200370338201c20027c201a20017c2201201a54ad7c21020b20054200201420177d2015201654ad7d2218201520167d221c201556201820145620182014511b22061b221b37033020054200201c20061b221a370328200220177d2001201654ad7d2102200120167d21010b02400240200541286a41286a28020022060d004100210a410021060c010b200641186c21084100210603400240200a2903002216200120012016562002200a41086a220929030022175620022017511b22071b22182017200220071b221984500d00200a201620187d221a370300200a201720197d2016201854ad7d221c37030802400240201a4280c8afa02556201c420052201c501b450d002001211c20182116201921170c010b200a4200370308200a42003703002002201c7c2001201a7c221c200154ad7c21020b200541286a41086a220742002007290300220120177d20052903282218201654ad7d2219201820167d221a201856201920015620192001511b22071b221b37030020054200201a20071b221a370328200220177d201c201654ad7d2102201c20167d210120092903002117200a29030021160b024020162017844200520d00200a41186a210a200641016a2106200841686a22080d010b0b2005280250220a2006490d020b200541003602500240200a20066b220a450d0002402006450d00200528024822072007200641186c6a200a41186c10e5071a0b2005200a3602500b024042002015201a7d221620162015562014201b7d2015201a54ad7d221620145620162014511b220a1b220242002016200a1b220184500d0020054180016a200010a80220054190016a2005280280012206200528028801220710a902200529039001211b2005420037039001200541d8016a280200210820052d00dc01210902400240201b4201510d004200211c200541e0016a41306a4200370300200541e0016a41286a4200370300200541e0016a41206a4200370300200541e0016a41186a4200370300200541f0016a4200370300200541e8016a4200370300200542003703e0014200211942002117420021164200211d0c010b200541c8016a290300211820054190016a41306a290300211a20054190016a41206a290300211920054190016a41186a290300211c200541d0016a290300211d20052903a00121162005290398012117200541e0016a41206a20054190016a41286a290300370300200541e0016a41286a201a370300200541e0016a41306a2018370300200541f0016a201c370300200520193703f801200520173703e001200520163703e8010b20052017200220172017200256201620015620162001511b220a1b221a7d22143703e0012005201620012016200a1b221e7d2017201a54ad7d22183703e801200541e0016a41106a210a024002402002201a7d221f2001201e7d2002201a54ad7d22208450450d004200211a4200212020022121200121220c010b200541f8016a201920202019201c201f56201920205620192020511b220b1b22237d201c201f201c200b1b221554ad7d3703002005201c20157d3703f001202020237d201f201554ad7d21202023201e7c2015201a7c2221201554ad7c2122201f20157d211a0b20054198026a41186a200a41086a290300221537030020054198026a41206a220b200a41106a290300370300200541c0026a220c200a41186a290300370300200541c8026a220d200a41206a2903003703002005200a290300221f3703a8022005201437039802200520183703a00202400240427f2014201f7c221f201f201454220a201820157c200aad7c221520185420152018511b220a1b221f4280c8afa025544100427f2015200a1b221e501b0d00200541a8026a2903002124200d2903002125200c290300211f200b290300211e20052903a002212320052903980221264201211520052903b00221270c010b420021150240201f201e84500d00201f201e10d40220054188056a201e37030020054180056a201f370300200541d0046a41086a41013a0000200541d9046a2000290000370000200541e1046a200041086a290000370000200541e9046a200041106a290000370000200541f1046a200041186a290000370000200541033a00d004200541d0046a10cb010b0b200541b8016a201e370300200541c0016a201f370300200541a0016a2023370300200541c8016a2025370300200541a8016a2024370300200520273703b0012005201d3703d0012005202637039801200520094100201b420151220a1b22093a00dc01200520084100200a1b22083602d80120052015420151220aad3703900102400240200a0d002007ad4220862006ad8410040c010b41041027220a450d04200a2008360000200a41044108102b220a450d04200a20093a0004200a41084115102b220a450d04200a2026370005200a410d6a2023370000200541b0016a2903002123200541a8016a2903002126200a4115412a102b220a450d04200a2026370015200a411d6a2023370000200a412a41d400102b220a450d04200a201e370025200a412d6a201f370000200a413d6a200541d0016a290300370000200a200541c8016a2903003700352007ad4220862006ad84200aad4280808080d008841003200a10290b2017201c7c221c201754220a201620197c200aad7c221720165420172016511b210a0240200528028401450d00200610290b427f2017200a1b2116427f201c200a1b21172015420152210a024002400240201b4201510d00200a0d0041032106200541d0036a210a0c010b201b420152200a410173720d0141042106200541d0026a210a0b200a41086a20063a0000200a41003a0000200a41096a2000290000370000200a41116a200041086a290000370000200a41196a200041106a290000370000200a41216a200041186a290000370000200a10cb010b024020172016844200520d0020054188056a201837030020054180056a2014370300200541d0046a41086a41003a0000200541d9046a2000290000370000200541e1046a200041086a290000370000200541e9046a200041106a290000370000200541f1046a200041186a290000370000200541033a00d004200541d0046a10cb010b2004427f2004290300221620217c22172017201654220a200441086a2206290300221620227c200aad7c221720165420172016511b220a1b3703002006427f2017200a1b3703000240201a202084500d002003420020032903002216201a7d22172017201656200341086a220a290300221720207d2016201a54ad7d221620175620162017511b22061b370300200a4200201620061b3703000b200542f3e885db96cddbb3203703d002200541d0026a200541286a41386a2005290328200541286a41086a290300411f10aa02200541d0046a200541086a10db0120052802d004210a200520052802d8043602d4032005200a3602d003200541286a200541d0036a10e401024020052802d404450d00200a10290b200541d0046a41386a200137030020054180056a2002370300200541d0046a41086a41023a0000200541d9046a2000290000370000200541e1046a200041086a290000370000200541e9046a200041106a290000370000200541f1046a200041186a290000370000200541043a00d004200541d0046a10cb010b0240200528024c220a450d00200a41186c450d00200528024810290b200541d8006a28020041ffffffff0371450d00200528025410290b200541d0056a24000f0b2006200a1044000b1030000bb80908017f037e037f017e017f017e047f037e230041e0016b22032400200320023703582003200137035002400240200120028450450d0042002104420021050c010b2003200036021c200341206a2000200341d0006a2003411c6a10de03024020032903204201520d00200341306a2903002105200329032821040c010b200341c8006a2903002105200341c0006a290300210420032903284201520d00200341206a41106a290300210620034198016a200341206a41186a29030037030020034190016a2006370300200341e0006a41086a41003a0000200341e9006a2000290000370000200341f1006a200041086a290000370000200341f9006a200041106a29000037000020034181016a200041186a290000370000200341033a0060200341e0006a10cb010b200341e0006a41186a22074200370300200341e0006a41106a22084200370300200341e0006a41086a220942003703002003420037036041dcbec500ad4280808080800184220a1001220b2900002106200341d0006a41086a2200200b41086a29000037030020032006370350200b10292009200029030037030020032003290350370360419fe3c200ad4280808080d00184220c1001220b29000021062000200b41086a29000037030020032006370350200b1029200820032903502206370300200341206a41086a220d2009290300370300200341206a41106a220e2006370300200341206a41186a220f2000290300370300200320032903603703202003200341206a412010e301200220057d2001200454ad7d200520027d2004200154ad7d200420015820052002582005200251220b1b22101b2111200120047d200420017d20101b2112200341106a2903004200200328020022101b21062003290308420020101b21130240024020042001562005200256200b1b0d0020074200370300200842003703002009420037030020034200370360200a1001220b29000021012000200b41086a29000037030020032001370350200b10292009200029030037030020032003290350370360200c1001220b29000021012000200b41086a29000037030020032001370350200b102920082003290350370000200841086a2000290300370000200d2009290300370300200e2008290300370300200f20072903003703002003200329036037032020034200200620117d2013201254ad7d2201201320127d2202201356200120065620012006511b22001b37036820034200200220001b370360200341e0006a21000c010b20074200370300200842003703002009420037030020034200370360200a1001220b29000021012000200b41086a29000037030020032001370350200b10292009200029030037030020032003290350370360200c1001220b29000021012000200b41086a29000037030020032001370350200b102920082003290350370000200841086a2000290300370000200d2009290300370300200e2008290300370300200f2007290300370300200320032903603703202003427f200620117c201320127c22022013542200ad7c22012000200120065420012006511b22001b3703682003427f200220001b370360200341e0006a21000b200341206aad42808080808004842000ad42808080808002841003200341e0016a24000bd70408027f017e037f017e017f027e037f017e230041f0006b2203240020012002844200522204ad2105024020040d00200341c0006a41186a22064200370300200341c0006a41106a22074200370300200341c0006a41086a220842003703002003420037034041dcbec500ad428080808080018422091001220a290000210b200341e0006a41086a2204200a41086a2900003703002003200b370360200a10292008200429030037030020032003290360370340419fe3c200ad4280808080d00184220b1001220a290000210c2004200a41086a2900003703002003200c370360200a102920072003290360220c370300200341206a41086a220d2008290300370300200341206a41106a220e200c370300200341206a41186a220f200429030037030020032003290340370320200341086a200341206a412010e301200341086a41106a290300210c200329031021102003280208210a2006420037030020074200370300200842003703002003420037034020091001220629000021092004200641086a29000037030020032009370360200610292008200429030037030020032003290360370340200b1001220629000021092004200641086a2900003703002003200937036020061029200720032903602209370300200d2008290300370300200e2009370300200f2004290300370300200320032903403703202003200c4200200a1b370348200320104200200a1b370340200341206aad4280808080800484200341c0006aad428080808080028410030b2000200137030820002005370300200041106a2002370300200341f0006a24000b970201057f230041306b22022400024002400240410410272203450d00200341edde91e306360000410c210420034104410c102b2205450d0120052001290000370004200241003a002820052106410021030340200241003a002f2002412f6a20062004410047220110e4071a024020040d00200241003a002f0b20042001490d03200241086a20036a20022d002f3a00002002200341016a22033a0028200420016b2104200620016a210620034120470d000b20002002290308370000200041186a200241086a41186a290300370000200041106a200241086a41106a290300370000200041086a200241086a41086a29030037000020051029200241306a24000f0b1039000b1030000b2001200441a896cc00104c000b990707017f047e027f017e057f047e017f23004190026b22022400200241c0006a200110840202400240024002400240024002402002290340a70d00200241c0006a41106a290300210320022903482104200241286a20011084022002290328a70d03200241286a41106a290300210520022903302106200241206a200110c80120022802200d0220022802242207200128020441306e2208200820074b1bad42307e2209422088a7450d010c060b200041003602200c040b2009a72208417f4c0d040240024020080d004108210a0c010b20081027220a450d030b4100210b200241003602602002200a3602582002200841306e36025c0240024002402007450d004100210c03404100210d200241003a008802200c41016a210c2001280204417f6a210803402008417f460d03200241e8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a0088022008417f6a2108200e210d200e4120470d000b200241c8016a41186a2208200241e8016a41186a290300370300200241c8016a41106a220d200241e8016a41106a290300370300200241c8016a41086a220e200241e8016a41086a290300370300200220022903e8013703c801200241086a20011084022002290308a70d03200241086a41106a29030021092002290310210f20024188016a41086a200e290300221037030020024188016a41106a200d290300221137030020024188016a41186a20082903002212370300200241e8006a41086a220d2010370300200241e8006a41106a220e2011370300200241e8006a41186a22132012370300200220022903c801221037038801200220103703680240200b200228025c470d00200241d8006a200b41011090012002280258210a2002280260210b0b200a200b41306c6a220820093703082008200f37030020082002290368370310200841186a200d290300370300200841206a200e290300370300200841286a20132903003703002002200b41016a220b360260200c2007470d000b0b200a450d02200229025c210920002004370300200020093702242000200a3602202000200637031020002003370308200041186a20053703000c050b200d41ff0171450d00200241003a0088020b20024188016a41086a200241a8016a41086a290300370300200228025c2201450d00200141306c450d00200a10290b200041003602200c020b200041003602200c010b1039000b20024190026a24000f0b1038000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110ea0720012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110eb072008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000bd53901037f230041106b2202240020002802002103200028020822042001107102402004450d00200320044103746a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a41021072200341086a22032004470d000b0b200028020c2103200041146a28020022042001107102402004450d0020032004410c6c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a410210722003410c6a22032004470d000b0b20002802182103200041206a28020022042001107102402004450d00200320044104746a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a41021072200341106a22032004470d000b0b200028022421032000412c6a28020022042001107102402004450d002003200441146c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a41021072200341146a22032004470d000b0b20002802302103200041386a28020022042001107102402004450d002003200441186c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a41021072200341186a22032004470d000b0b200028023c2103200041c4006a28020022042001107102402004450d0020032004411c6c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a410210722003411c6a22032004470d000b0b20002802482103200041d0006a28020022042001107102402004450d00200320044105746a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a41021072200341206a22032004470d000b0b20002802542103200041dc006a28020022042001107102402004450d002003200441246c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a41021072200341246a22032004470d000b0b20002802602103200041e8006a28020022042001107102402004450d002003200441286c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a41021072200341286a22032004470d000b0b200028026c2103200041f4006a28020022042001107102402004450d0020032004412c6c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a410210722003412c6a22032004470d000b0b2000280278210320004180016a28020022042001107102402004450d002003200441306c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a41021072200341306a22032004470d000b0b20002802840121032000418c016a28020022042001107102402004450d002003200441346c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a4102107220022003412e6a2f01003b010c20012002410c6a410210722002200341306a2f01003b010c20012002410c6a41021072200341346a22032004470d000b0b200028029001210320004198016a28020022042001107102402004450d002003200441386c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a4102107220022003412e6a2f01003b010c20012002410c6a410210722002200341306a2f01003b010c20012002410c6a410210722002200341326a2f01003b010c20012002410c6a410210722002200341346a2f01003b010c20012002410c6a41021072200341386a22032004470d000b0b200028029c012103200041a4016a28020022042001107102402004450d0020032004413c6c6a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a4102107220022003412e6a2f01003b010c20012002410c6a410210722002200341306a2f01003b010c20012002410c6a410210722002200341326a2f01003b010c20012002410c6a410210722002200341346a2f01003b010c20012002410c6a410210722002200341366a2f01003b010c20012002410c6a410210722002200341386a2f01003b010c20012002410c6a410210722003413c6a22032004470d000b0b20002802a8012103200041b0016a28020022042001107102402004450d00200320044106746a210403402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a4102107220022003412e6a2f01003b010c20012002410c6a410210722002200341306a2f01003b010c20012002410c6a410210722002200341326a2f01003b010c20012002410c6a410210722002200341346a2f01003b010c20012002410c6a410210722002200341366a2f01003b010c20012002410c6a410210722002200341386a2f01003b010c20012002410c6a4102107220022003413a6a2f01003b010c20012002410c6a4102107220022003413c6a2f01003b010c20012002410c6a41021072200341c0006a22032004470d000b0b20002802b4012103200041bc016a28020022002001107102402000450d002003200041c4006c6a210003402002200328020036020c20012002410c6a410410722002200341046a2f01003b010c20012002410c6a410210722002200341066a2f01003b010c20012002410c6a410210722002200341086a2f01003b010c20012002410c6a4102107220022003410a6a2f01003b010c20012002410c6a4102107220022003410c6a2f01003b010c20012002410c6a4102107220022003410e6a2f01003b010c20012002410c6a410210722002200341106a2f01003b010c20012002410c6a410210722002200341126a2f01003b010c20012002410c6a410210722002200341146a2f01003b010c20012002410c6a410210722002200341166a2f01003b010c20012002410c6a410210722002200341186a2f01003b010c20012002410c6a4102107220022003411a6a2f01003b010c20012002410c6a4102107220022003411c6a2f01003b010c20012002410c6a4102107220022003411e6a2f01003b010c20012002410c6a410210722002200341206a2f01003b010c20012002410c6a410210722002200341226a2f01003b010c20012002410c6a410210722002200341246a2f01003b010c20012002410c6a410210722002200341266a2f01003b010c20012002410c6a410210722002200341286a2f01003b010c20012002410c6a4102107220022003412a6a2f01003b010c20012002410c6a4102107220022003412c6a2f01003b010c20012002410c6a4102107220022003412e6a2f01003b010c20012002410c6a410210722002200341306a2f01003b010c20012002410c6a410210722002200341326a2f01003b010c20012002410c6a410210722002200341346a2f01003b010c20012002410c6a410210722002200341366a2f01003b010c20012002410c6a410210722002200341386a2f01003b010c20012002410c6a4102107220022003413a6a2f01003b010c20012002410c6a4102107220022003413c6a2f01003b010c20012002410c6a4102107220022003413e6a2f01003b010c20012002410c6a410210722002200341c0006a2f01003b010c20012002410c6a41021072200341c4006a22032000470d000b0b200241106a24000bec990106097f017e067f037e3f7f027e230041d0036b22022400200241f8006a200110c8010240024002400240024002400240024002400240024002400240024002400240024002400240024020022802780d00200228027c220320012802044103762204200420034b1b22054103742204417f4c0d020240024020050d00410421060c010b200410272206450d040b41002104200241003602980320022005360294032002200636029003024002402003450d00410021040340200128020422054104490d0220012802002207280000210820012005417c6a22093602042001200741046a220736020020094102490d0220072f0000210920012005417a6a3602042001200741026a36020002402004200228029403470d0020024190036a20044101108d01200228029003210620022802980321040b200620044103746a220520093b0104200520083602002002200441016a2204360298032003417f6a22030d000b20022802940321050b2006450d01200241f0006a200110c8012002280270450d020c130b20022802940341ffffffff0171450d00200610290b200041003602000c120b2002280274220a2001280204410c6e22072007200a4b1bad420c7e220b422088a70d00200ba72203417f4c0d000240024020030d004104210c0c010b20031027220c450d020b4100210720024100360298032002200c3602900320022003410c6e220d36029403024002400240200a450d00410021070340200128020422034104490d0220012802002209280000210e20012003417c6a220d3602042001200941046a2208360200200d4102490d0220082f0000210f20012003417a6a220d3602042001200841026a360200200d4102490d0220092f0006210d2001200341786a22083602042001200941086a220936020020084102490d0220092f000021082001200341766a3602042001200941026a36020002402007200228029403470d0020024190036a20074101109d01200228029003210c20022802980321070b200c2007410c6c6a220320083b01082003200f3b01042003200e360200200341066a200d3b01002002200741016a220736029803200a417f6a220a0d000b200228029403210d0b200c450d12200241e8006a200110c8012002280268450d010c110b2002280294032201450d112001410c6c450d11200c10290c110b4104210f200228026c220e200128020441047622032003200e4b1b22034104742209417f4c0d0002402003450d0020091027220f450d020b41002108200241003602980320022003360294032002200f36029003024002400240200e450d00410021080340200128020422034104490d0220012802002209280000211020012003417c6a22113602042001200941046a220a36020020114102490d02200a330000210b20012003417a6a22113602042001200a41026a36020020114102490d02200933000621122001200341786a22113602042001200941086a220a36020020114102490d02200a33000021132001200341766a22113602042001200a41026a36020020114102490d02200933000a21142001200341746a220a36020420012009410c6a2209360200200a4102490d0220092f0000210a2001200341726a3602042001200941026a3602002014423086201342208684201242108684200b84210b02402008200228029403470d0020024190036a20084101109c01200228029003210f20022802980321080b200f20084104746a2203200a3b010c2003200b370204200320103602002002200841016a220836029803200e417f6a220e0d000b20022802940321030b200f450d11200241e0006a200110c8012002280260450d010c100b20022802940341ffffffff0071450d10200f10290c100b20022802642210200128020441146e2209200920104b1bad42147e220b422088a70d00200ba72209417f4c0d000240024020090d00410421150c010b200910272215450d020b4100210e200241003602980320022015360290032002200941146e2211360294030240024002402010450d004100210e0340200128020422094104490d022001280200220a280000211620012009417c6a22173602042001200a41046a221136020020174102490d0220112f0000211820012009417a6a22173602042001201141026a36020020174102490d02200a2f000621192001200941786a22173602042001200a41086a221136020020174102490d0220112f0000211a2001200941766a22173602042001201141026a36020020174102490d02200a2f000a211b2001200941746a22173602042001200a410c6a221136020020174102490d0220112f0000211c2001200941726a22173602042001201141026a36020020174102490d02200a2f000e21172001200941706a22113602042001200a41106a220a36020020114102490d02200a2f0000211120012009416e6a3602042001200a41026a3602000240200e200228029403470d0020024190036a200e410110a0012002280290032115200228029803210e0b2015200e41146c6a220920113b0110200920183b0104200920163602002009410e6a20173b01002009410c6a201c3b01002009410a6a201b3b0100200941086a201a3b0100200941066a20193b01002002200e41016a220e360298032010417f6a22100d000b20022802940321110b2015450d10200241d8006a200110c8012002280258450d010c0f0b2002280294032201450d0f200141146c450d0f201510290c0f0b200228025c2217200128020441186e2209200920174b1bad42187e220b422088a70d00200ba72209417f4c0d000240024020090d00410421180c010b200910272218450d020b41002110200241003602980320022018360290032002200941186e2216360294030240024002402017450d00410021100340200128020422094104490d022001280200220a280000211a20012009417c6a22193602042001200a41046a221636020020194102490d0220162f0000211b20012009417a6a22193602042001201641026a36020020194102490d02200a2f0006211c2001200941786a22193602042001200a41086a221636020020194102490d0220162f0000211d2001200941766a22193602042001201641026a36020020194102490d02200a2f000a211e2001200941746a22193602042001200a410c6a221636020020194102490d0220162f0000211f2001200941726a22193602042001201641026a36020020194102490d02200a2f000e21202001200941706a22193602042001200a41106a221636020020194102490d0220162f0000212120012009416e6a22193602042001201641026a36020020194102490d02200a2f0012211920012009416c6a22163602042001200a41146a220a36020020164102490d02200a2f0000211620012009416a6a3602042001200a41026a36020002402010200228029403470d0020024190036a20104101109901200228029003211820022802980321100b2018201041186c6a220920163b01142009201b3b01042009201a360200200941126a20193b0100200941106a20213b01002009410e6a20203b01002009410c6a201f3b01002009410a6a201e3b0100200941086a201d3b0100200941066a201c3b01002002201041016a2210360298032017417f6a22170d000b20022802940321160b2018450d0f200241d0006a200110c8012002280250450d010c0e0b2002280294032201450d0e200141186c450d0e201810290c0e0b200228025422192001280204411c6e2209200920194b1bad421c7e220b422088a70d00200ba72209417f4c0d000240024020090d004104211b0c010b20091027221b450d020b4100211720024100360298032002201b3602900320022009411c6e221a360294030240024002402019450d00410021170340200128020422094104490d022001280200220a280000211d20012009417c6a221c3602042001200a41046a221a360200201c4102490d02201a2f0000211e20012009417a6a221c3602042001201a41026a360200201c4102490d02200a2f0006211f2001200941786a221c3602042001200a41086a221a360200201c4102490d02201a2f000021202001200941766a221c3602042001201a41026a360200201c4102490d02200a2f000a21212001200941746a221c3602042001200a410c6a221a360200201c4102490d02201a2f000021222001200941726a221c3602042001201a41026a360200201c4102490d02200a2f000e21232001200941706a221c3602042001200a41106a221a360200201c4102490d02201a2f0000212420012009416e6a221c3602042001201a41026a360200201c4102490d02200a2f0012212520012009416c6a221c3602042001200a41146a221a360200201c4102490d02201a2f0000212620012009416a6a221c3602042001201a41026a360200201c4102490d02200a2f0016211c2001200941686a221a3602042001200a41186a220a360200201a4102490d02200a2f0000211a2001200941666a3602042001200a41026a36020002402017200228029403470d0020024190036a20174101109401200228029003211b20022802980321170b201b2017411c6c6a2209201a3b01182009201e3b01042009201d360200200941166a201c3b0100200941146a20263b0100200941126a20253b0100200941106a20243b01002009410e6a20233b01002009410c6a20223b01002009410a6a20213b0100200941086a20203b0100200941066a201f3b01002002201741016a2217360298032019417f6a22190d000b200228029403211a0b201b450d0e200241c8006a200110c8012002280248450d010c0d0b2002280294032201450d0d2001411c6c450d0d201b10290c0d0b200228024c221c200128020441057622092009201c4b1b2209410574220a417f4c0d000240024020090d004104211e0c010b200a1027221e450d020b41002119200241003602980320022009360294032002201e36029003024002400240201c450d00410021190340200128020422094104490d022001280200220a280000212020012009417c6a221f3602042001200a41046a221d360200201f4102490d02201d2f0000212120012009417a6a221f3602042001201d41026a360200201f4102490d02200a2f000621222001200941786a221f3602042001200a41086a221d360200201f4102490d02201d2f000021232001200941766a221f3602042001201d41026a360200201f4102490d02200a2f000a21242001200941746a221f3602042001200a410c6a221d360200201f4102490d02201d2f000021252001200941726a221f3602042001201d41026a360200201f4102490d02200a2f000e21262001200941706a221f3602042001200a41106a221d360200201f4102490d02201d2f0000212720012009416e6a221f3602042001201d41026a360200201f4102490d02200a2f0012212820012009416c6a221f3602042001200a41146a221d360200201f4102490d02201d2f0000212920012009416a6a221f3602042001201d41026a360200201f4102490d02200a2f0016212a2001200941686a221f3602042001200a41186a221d360200201f4102490d02201d2f0000212b2001200941666a221f3602042001201d41026a360200201f4102490d02200a2f001a211f2001200941646a221d3602042001200a411c6a220a360200201d4102490d02200a2f0000211d2001200941626a3602042001200a41026a36020002402019200228029403470d0020024190036a20194101109501200228029003211e20022802980321190b201e20194105746a2209201d3b011c200920213b0104200920203602002009411a6a201f3b0100200941186a202b3b0100200941166a202a3b0100200941146a20293b0100200941126a20283b0100200941106a20273b01002009410e6a20263b01002009410c6a20253b01002009410a6a20243b0100200941086a20233b0100200941066a20223b01002002201941016a221936029803201c417f6a221c0d000b20022802940321090b201e450d0d200241c0006a200110c8012002280240450d010c0c0b20022802940341ffffff3f71450d0c201e10290c0c0b2002280244221f200128020441246e220a200a201f4b1bad42247e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421210c010b200a10272221450d020b4100211d200241003602980320022021360290032002200a41246e222036029403024002400240201f450d004100211d03402001280204220a4104490d022001280200221c28000021232001200a417c6a22223602042001201c41046a222036020020224102490d0220202f000021242001200a417a6a22223602042001202041026a36020020224102490d02201c2f000621252001200a41786a22223602042001201c41086a222036020020224102490d0220202f000021262001200a41766a22223602042001202041026a36020020224102490d02201c2f000a21272001200a41746a22223602042001201c410c6a222036020020224102490d0220202f000021282001200a41726a22223602042001202041026a36020020224102490d02201c2f000e21292001200a41706a22223602042001201c41106a222036020020224102490d0220202f0000212a2001200a416e6a22223602042001202041026a36020020224102490d02201c2f0012212b2001200a416c6a22223602042001201c41146a222036020020224102490d0220202f0000212c2001200a416a6a22223602042001202041026a36020020224102490d02201c2f0016212d2001200a41686a22223602042001201c41186a222036020020224102490d0220202f0000212e2001200a41666a22223602042001202041026a36020020224102490d02201c2f001a212f2001200a41646a22223602042001201c411c6a222036020020224102490d0220202f000021302001200a41626a22223602042001202041026a36020020224102490d02201c2f001e21222001200a41606a22203602042001201c41206a221c36020020204102490d02201c2f000021202001200a415e6a3602042001201c41026a3602000240201d200228029403470d0020024190036a201d41011096012002280290032121200228029803211d0b2021201d41246c6a220a20203b0120200a20243b0104200a2023360200200a411e6a20223b0100200a411c6a20303b0100200a411a6a202f3b0100200a41186a202e3b0100200a41166a202d3b0100200a41146a202c3b0100200a41126a202b3b0100200a41106a202a3b0100200a410e6a20293b0100200a410c6a20283b0100200a410a6a20273b0100200a41086a20263b0100200a41066a20253b01002002201d41016a221d36029803201f417f6a221f0d000b20022802940321200b2021450d0c200241386a200110c8012002280238450d010c0b0b2002280294032201450d0b200141246c450d0b202110290c0b0b200228023c2222200128020441286e220a200a20224b1bad42287e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421230c010b200a10272223450d020b4100211f200241003602980320022023360290032002200a41286e2224360294030240024002402022450d004100211f03402001280204220a4104490d022001280200221c28000021262001200a417c6a22253602042001201c41046a222436020020254102490d0220242f000021272001200a417a6a22253602042001202441026a36020020254102490d02201c2f000621282001200a41786a22253602042001201c41086a222436020020254102490d0220242f000021292001200a41766a22253602042001202441026a36020020254102490d02201c2f000a212a2001200a41746a22253602042001201c410c6a222436020020254102490d0220242f0000212b2001200a41726a22253602042001202441026a36020020254102490d02201c2f000e212c2001200a41706a22253602042001201c41106a222436020020254102490d0220242f0000212d2001200a416e6a22253602042001202441026a36020020254102490d02201c2f0012212e2001200a416c6a22253602042001201c41146a222436020020254102490d0220242f0000212f2001200a416a6a22253602042001202441026a36020020254102490d02201c2f001621302001200a41686a22253602042001201c41186a222436020020254102490d0220242f000021312001200a41666a22253602042001202441026a36020020254102490d02201c2f001a21322001200a41646a22253602042001201c411c6a222436020020254102490d0220242f000021332001200a41626a22253602042001202441026a36020020254102490d02201c2f001e21342001200a41606a22253602042001201c41206a222436020020254102490d0220242f000021352001200a415e6a22253602042001202441026a36020020254102490d02201c2f002221252001200a415c6a22243602042001201c41246a221c36020020244102490d02201c2f000021242001200a415a6a3602042001201c41026a3602000240201f200228029403470d0020024190036a201f410110ad012002280290032123200228029803211f0b2023201f41286c6a220a20243b0124200a20273b0104200a2026360200200a41226a20253b0100200a41206a20353b0100200a411e6a20343b0100200a411c6a20333b0100200a411a6a20323b0100200a41186a20313b0100200a41166a20303b0100200a41146a202f3b0100200a41126a202e3b0100200a41106a202d3b0100200a410e6a202c3b0100200a410c6a202b3b0100200a410a6a202a3b0100200a41086a20293b0100200a41066a20283b01002002201f41016a221f360298032022417f6a22220d000b20022802940321240b2023450d0b200241306a200110c8012002280230450d010c0a0b2002280294032201450d0a200141286c450d0a202310290c0a0b200228023422252001280204412c6e220a200a20254b1bad422c7e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421260c010b200a10272226450d020b41002122200241003602980320022026360290032002200a412c6e2227360294030240024002402025450d004100212203402001280204220a4104490d022001280200221c28000021292001200a417c6a22283602042001201c41046a222736020020284102490d0220272f0000212a2001200a417a6a22283602042001202741026a36020020284102490d02201c2f0006212b2001200a41786a22283602042001201c41086a222736020020284102490d0220272f0000212c2001200a41766a22283602042001202741026a36020020284102490d02201c2f000a212d2001200a41746a22283602042001201c410c6a222736020020284102490d0220272f0000212e2001200a41726a22283602042001202741026a36020020284102490d02201c2f000e212f2001200a41706a22283602042001201c41106a222736020020284102490d0220272f000021302001200a416e6a22283602042001202741026a36020020284102490d02201c2f001221312001200a416c6a22283602042001201c41146a222736020020284102490d0220272f000021322001200a416a6a22283602042001202741026a36020020284102490d02201c2f001621332001200a41686a22283602042001201c41186a222736020020284102490d0220272f000021342001200a41666a22283602042001202741026a36020020284102490d02201c2f001a21352001200a41646a22283602042001201c411c6a222736020020284102490d0220272f000021362001200a41626a22283602042001202741026a36020020284102490d02201c2f001e21372001200a41606a22283602042001201c41206a222736020020284102490d0220272f000021382001200a415e6a22283602042001202741026a36020020284102490d02201c2f002221392001200a415c6a22283602042001201c41246a222736020020284102490d0220272f0000213a2001200a415a6a22283602042001202741026a36020020284102490d02201c2f002621282001200a41586a22273602042001201c41286a221c36020020274102490d02201c2f000021272001200a41566a3602042001201c41026a36020002402022200228029403470d0020024190036a20224101109301200228029003212620022802980321220b20262022412c6c6a220a20273b0128200a202a3b0104200a2029360200200a41266a20283b0100200a41246a203a3b0100200a41226a20393b0100200a41206a20383b0100200a411e6a20373b0100200a411c6a20363b0100200a411a6a20353b0100200a41186a20343b0100200a41166a20333b0100200a41146a20323b0100200a41126a20313b0100200a41106a20303b0100200a410e6a202f3b0100200a410c6a202e3b0100200a410a6a202d3b0100200a41086a202c3b0100200a41066a202b3b01002002202241016a2222360298032025417f6a22250d000b20022802940321270b2026450d0a200241286a200110c8012002280228450d010c090b2002280294032201450d092001412c6c450d09202610290c090b200228022c2228200128020441306e220a200a20284b1bad42307e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421290c010b200a10272229450d020b41002125200241003602980320022029360290032002200a41306e222a360294030240024002402028450d004100212503402001280204220a4104490d022001280200221c280000212c2001200a417c6a222b3602042001201c41046a222a360200202b4102490d02202a2f0000212d2001200a417a6a222b3602042001202a41026a360200202b4102490d02201c2f0006212e2001200a41786a222b3602042001201c41086a222a360200202b4102490d02202a2f0000212f2001200a41766a222b3602042001202a41026a360200202b4102490d02201c2f000a21302001200a41746a222b3602042001201c410c6a222a360200202b4102490d02202a2f000021312001200a41726a222b3602042001202a41026a360200202b4102490d02201c2f000e21322001200a41706a222b3602042001201c41106a222a360200202b4102490d02202a2f000021332001200a416e6a222b3602042001202a41026a360200202b4102490d02201c2f001221342001200a416c6a222b3602042001201c41146a222a360200202b4102490d02202a2f000021352001200a416a6a222b3602042001202a41026a360200202b4102490d02201c2f001621362001200a41686a222b3602042001201c41186a222a360200202b4102490d02202a2f000021372001200a41666a222b3602042001202a41026a360200202b4102490d02201c2f001a21382001200a41646a222b3602042001201c411c6a222a360200202b4102490d02202a2f000021392001200a41626a222b3602042001202a41026a360200202b4102490d02201c2f001e213a2001200a41606a222b3602042001201c41206a222a360200202b4102490d02202a2f0000213b2001200a415e6a222b3602042001202a41026a360200202b4102490d02201c2f0022213c2001200a415c6a222b3602042001201c41246a222a360200202b4102490d02202a2f0000213d2001200a415a6a222b3602042001202a41026a360200202b4102490d02201c2f0026213e2001200a41586a222b3602042001201c41286a222a360200202b4102490d02202a2f0000213f2001200a41566a222b3602042001202a41026a360200202b4102490d02201c2f002a212b2001200a41546a222a3602042001201c412c6a221c360200202a4102490d02201c2f0000212a2001200a41526a3602042001201c41026a36020002402025200228029403470d0020024190036a2025410110ab01200228029003212920022802980321250b2029202541306c6a220a202a3b012c200a202d3b0104200a202c360200200a412a6a202b3b0100200a41286a203f3b0100200a41266a203e3b0100200a41246a203d3b0100200a41226a203c3b0100200a41206a203b3b0100200a411e6a203a3b0100200a411c6a20393b0100200a411a6a20383b0100200a41186a20373b0100200a41166a20363b0100200a41146a20353b0100200a41126a20343b0100200a41106a20333b0100200a410e6a20323b0100200a410c6a20313b0100200a410a6a20303b0100200a41086a202f3b0100200a41066a202e3b01002002202541016a2225360298032028417f6a22280d000b200228029403212a0b2029450d09200241206a200110c8012002280220450d010c080b2002280294032201450d08200141306c450d08202910290c080b2002280224222b200128020441346e220a200a202b4b1bad42347e220b422088a70d00200ba7220a417f4c0d0002400240200a0d004104212c0c010b200a1027222c450d020b4100212820024100360298032002202c360290032002200a41346e222d36029403024002400240202b450d004100212803402001280204220a4104490d022001280200221c280000212f2001200a417c6a222e3602042001201c41046a222d360200202e4102490d02202d2f000021302001200a417a6a222e3602042001202d41026a360200202e4102490d02201c2f000621312001200a41786a222e3602042001201c41086a222d360200202e4102490d02202d2f000021322001200a41766a222e3602042001202d41026a360200202e4102490d02201c2f000a21332001200a41746a222e3602042001201c410c6a222d360200202e4102490d02202d2f000021342001200a41726a222e3602042001202d41026a360200202e4102490d02201c2f000e21352001200a41706a222e3602042001201c41106a222d360200202e4102490d02202d2f000021362001200a416e6a222e3602042001202d41026a360200202e4102490d02201c2f001221372001200a416c6a222e3602042001201c41146a222d360200202e4102490d02202d2f000021382001200a416a6a222e3602042001202d41026a360200202e4102490d02201c2f001621392001200a41686a222e3602042001201c41186a222d360200202e4102490d02202d2f0000213a2001200a41666a222e3602042001202d41026a360200202e4102490d02201c2f001a213b2001200a41646a222e3602042001201c411c6a222d360200202e4102490d02202d2f0000213c2001200a41626a222e3602042001202d41026a360200202e4102490d02201c2f001e213d2001200a41606a222e3602042001201c41206a222d360200202e4102490d02202d2f0000213e2001200a415e6a222e3602042001202d41026a360200202e4102490d02201c2f0022213f2001200a415c6a222e3602042001201c41246a222d360200202e4102490d02202d2f000021402001200a415a6a222e3602042001202d41026a360200202e4102490d02201c2f002621412001200a41586a222e3602042001201c41286a222d360200202e4102490d02202d2f000021422001200a41566a222e3602042001202d41026a360200202e4102490d02201c2f002a21432001200a41546a222e3602042001201c412c6a222d360200202e4102490d02202d2f000021442001200a41526a222e3602042001202d41026a360200202e4102490d02201c2f002e212e2001200a41506a222d3602042001201c41306a221c360200202d4102490d02201c2f0000212d2001200a414e6a3602042001201c41026a36020002402028200228029403470d0020024190036a2028410110ae01200228029003212c20022802980321280b202c202841346c6a220a202d3b0130200a20303b0104200a202f360200200a412e6a202e3b0100200a412c6a20443b0100200a412a6a20433b0100200a41286a20423b0100200a41266a20413b0100200a41246a20403b0100200a41226a203f3b0100200a41206a203e3b0100200a411e6a203d3b0100200a411c6a203c3b0100200a411a6a203b3b0100200a41186a203a3b0100200a41166a20393b0100200a41146a20383b0100200a41126a20373b0100200a41106a20363b0100200a410e6a20353b0100200a410c6a20343b0100200a410a6a20333b0100200a41086a20323b0100200a41066a20313b01002002202841016a222836029803202b417f6a222b0d000b200228029403212d0b202c450d08200241186a200110c8012002280218450d010c070b2002280294032201450d07200141346c450d07202c10290c070b200228021c222e200128020441386e220a200a202e4b1bad42387e220b422088a70d00200ba7220a417f4c0d0002400240200a0d004104212f0c010b200a1027222f450d020b4100212b20024100360298032002202f360290032002200a41386e223036029403024002400240202e450d004100212b03402001280204220a4104490d022001280200221c28000021322001200a417c6a22313602042001201c41046a223036020020314102490d0220302f000021332001200a417a6a22313602042001203041026a36020020314102490d02201c2f000621342001200a41786a22313602042001201c41086a223036020020314102490d0220302f000021352001200a41766a22313602042001203041026a36020020314102490d02201c2f000a21362001200a41746a22313602042001201c410c6a223036020020314102490d0220302f000021372001200a41726a22313602042001203041026a36020020314102490d02201c2f000e21382001200a41706a22313602042001201c41106a223036020020314102490d0220302f000021392001200a416e6a22313602042001203041026a36020020314102490d02201c2f0012213a2001200a416c6a22313602042001201c41146a223036020020314102490d0220302f0000213b2001200a416a6a22313602042001203041026a36020020314102490d02201c2f0016213c2001200a41686a22313602042001201c41186a223036020020314102490d0220302f0000213d2001200a41666a22313602042001203041026a36020020314102490d02201c2f001a213e2001200a41646a22313602042001201c411c6a223036020020314102490d0220302f0000213f2001200a41626a22313602042001203041026a36020020314102490d02201c2f001e21402001200a41606a22313602042001201c41206a223036020020314102490d0220302f000021412001200a415e6a22313602042001203041026a36020020314102490d02201c2f002221422001200a415c6a22313602042001201c41246a223036020020314102490d0220302f000021432001200a415a6a22313602042001203041026a36020020314102490d02201c2f002621442001200a41586a22313602042001201c41286a223036020020314102490d0220302f000021452001200a41566a22313602042001203041026a36020020314102490d02201c2f002a21462001200a41546a22313602042001201c412c6a223036020020314102490d0220302f000021472001200a41526a22313602042001203041026a36020020314102490d02201c2f002e21482001200a41506a22313602042001201c41306a223036020020314102490d0220302f000021492001200a414e6a22313602042001203041026a36020020314102490d02201c2f003221312001200a414c6a22303602042001201c41346a221c36020020304102490d02201c2f000021302001200a414a6a3602042001201c41026a3602000240202b200228029403470d0020024190036a202b410110aa01200228029003212f200228029803212b0b202f202b41386c6a220a20303b0134200a20333b0104200a2032360200200a41326a20313b0100200a41306a20493b0100200a412e6a20483b0100200a412c6a20473b0100200a412a6a20463b0100200a41286a20453b0100200a41266a20443b0100200a41246a20433b0100200a41226a20423b0100200a41206a20413b0100200a411e6a20403b0100200a411c6a203f3b0100200a411a6a203e3b0100200a41186a203d3b0100200a41166a203c3b0100200a41146a203b3b0100200a41126a203a3b0100200a41106a20393b0100200a410e6a20383b0100200a410c6a20373b0100200a410a6a20363b0100200a41086a20353b0100200a41066a20343b01002002202b41016a222b36029803202e417f6a222e0d000b20022802940321300b202f450d07200241106a200110c8012002280210450d010c060b2002280294032201450d06200141386c450d06202f10290c060b2002280214222e2001280204413c6e220a200a202e4b1bad423c7e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421320c010b200a10272232450d020b41002131200241003602980320022032360290032002200a413c6e223336029403024002400240202e450d004100213103402001280204220a4104490d022001280200221c28000021352001200a417c6a22343602042001201c41046a223336020020344102490d0220332f000021362001200a417a6a22343602042001203341026a36020020344102490d02201c2f000621372001200a41786a22343602042001201c41086a223336020020344102490d0220332f000021382001200a41766a22343602042001203341026a36020020344102490d02201c2f000a21392001200a41746a22343602042001201c410c6a223336020020344102490d0220332f0000213a2001200a41726a22343602042001203341026a36020020344102490d02201c2f000e213b2001200a41706a22343602042001201c41106a223336020020344102490d0220332f0000213c2001200a416e6a22343602042001203341026a36020020344102490d02201c2f0012213d2001200a416c6a22343602042001201c41146a223336020020344102490d0220332f0000213e2001200a416a6a22343602042001203341026a36020020344102490d02201c2f0016213f2001200a41686a22343602042001201c41186a223336020020344102490d0220332f000021402001200a41666a22343602042001203341026a36020020344102490d02201c2f001a21412001200a41646a22343602042001201c411c6a223336020020344102490d0220332f000021422001200a41626a22343602042001203341026a36020020344102490d02201c2f001e21432001200a41606a22343602042001201c41206a223336020020344102490d0220332f000021442001200a415e6a22343602042001203341026a36020020344102490d02201c2f002221452001200a415c6a22343602042001201c41246a223336020020344102490d0220332f000021462001200a415a6a22343602042001203341026a36020020344102490d02201c2f002621472001200a41586a22343602042001201c41286a223336020020344102490d0220332f000021482001200a41566a22343602042001203341026a36020020344102490d02201c2f002a21492001200a41546a22343602042001201c412c6a223336020020344102490d0220332f0000214a2001200a41526a22343602042001203341026a36020020344102490d02201c2f002e214b2001200a41506a22343602042001201c41306a223336020020344102490d0220332f0000214c2001200a414e6a22343602042001203341026a36020020344102490d02201c2f0032214d2001200a414c6a22343602042001201c41346a223336020020344102490d0220332f0000214e2001200a414a6a22343602042001203341026a36020020344102490d02201c2f003621342001200a41486a22333602042001201c41386a221c36020020334102490d02201c2f000021332001200a41466a3602042001201c41026a36020002402031200228029403470d0020024190036a20314101109b01200228029003213220022802980321310b20322031413c6c6a220a20333b0138200a20363b0104200a2035360200200a41366a20343b0100200a41346a204e3b0100200a41326a204d3b0100200a41306a204c3b0100200a412e6a204b3b0100200a412c6a204a3b0100200a412a6a20493b0100200a41286a20483b0100200a41266a20473b0100200a41246a20463b0100200a41226a20453b0100200a41206a20443b0100200a411e6a20433b0100200a411c6a20423b0100200a411a6a20413b0100200a41186a20403b0100200a41166a203f3b0100200a41146a203e3b0100200a41126a203d3b0100200a41106a203c3b0100200a410e6a203b3b0100200a410c6a203a3b0100200a410a6a20393b0100200a41086a20383b0100200a41066a20373b01002002203141016a223136029803202e417f6a222e0d000b20022802940321330b2032450d06200241086a200110c8012002280208450d010c050b2002280294032201450d052001413c6c450d05203210290c050b200228020c222e2001280204410676220a200a202e4b1b221c410674220a417f4c0d0002400240201c0d00410421350c010b200a10272235450d020b4100213420024100360298032002201c360294032002203536029003024002400240202e450d004100213403402001280204220a4104490d022001280200221c28000021382001200a417c6a22373602042001201c41046a2236360200200241003b01d00220374102490d0220362f000021392001200a417a6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f0006213a2001200a41786a22373602042001201c41086a2236360200200241003b01d00220374102490d0220362f0000213b2001200a41766a22373602042001203641026a360200200241003b01d002203741014d0d02201c2f000a213c2001200a41746a22373602042001201c410c6a2236360200200241003b01d00220374102490d0220362f0000213d2001200a41726a22373602042001203641026a360200200241003b01d00220374102490d02201c2f000e213e2001200a41706a22373602042001201c41106a2236360200200241003b01d00220374102490d0220362f0000213f2001200a416e6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f001221402001200a416c6a22373602042001201c41146a2236360200200241003b01d00220374102490d0220362f000021412001200a416a6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f001621422001200a41686a22373602042001201c41186a2236360200200241003b01d00220374102490d0220362f000021432001200a41666a22373602042001203641026a360200200241003b01d00220374102490d02201c2f001a21442001200a41646a22373602042001201c411c6a2236360200200241003b01d00220374102490d0220362f000021452001200a41626a22373602042001203641026a360200200241003b01d00220374102490d02201c2f001e21462001200a41606a22373602042001201c41206a2236360200200241003b01d00220374102490d0220362f000021472001200a415e6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f002221482001200a415c6a22373602042001201c41246a2236360200200241003b01d00220374102490d0220362f000021492001200a415a6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f0026214a2001200a41586a22373602042001201c41286a2236360200200241003b01d00220374102490d0220362f0000214b2001200a41566a22373602042001203641026a360200200241003b01d00220374102490d02201c2f002a214c2001200a41546a22373602042001201c412c6a2236360200200241003b01d00220374102490d0220362f0000214d2001200a41526a22373602042001203641026a360200200241003b01d00220374102490d02201c2f002e214e2001200a41506a22373602042001201c41306a2236360200200241003b01d00220374102490d0220362f0000214f2001200a414e6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f003221502001200a414c6a22373602042001201c41346a2236360200200241003b01d00220374102490d0220362f000021512001200a414a6a22373602042001203641026a360200200241003b01d00220374102490d02201c2f003621522001200a41486a22373602042001201c41386a2236360200200241003b01d00220374102490d0220362f000021532001200a41466a22373602042001203641026a360200200241003b01d00220374102490d02201c2f003a21372001200a41446a22363602042001201c413c6a221c36020020364102490d02201c2f000021362001200a41426a3602042001201c41026a36020002402034200228029403470d0020024190036a20344101109101200228029003213520022802980321340b203520344106746a220a20363b013c200a20393b0104200a2038360200200a413a6a20373b0100200a41386a20533b0100200a41366a20523b0100200a41346a20513b0100200a41326a20503b0100200a41306a204f3b0100200a412e6a204e3b0100200a412c6a204d3b0100200a412a6a204c3b0100200a41286a204b3b0100200a41266a204a3b0100200a41246a20493b0100200a41226a20483b0100200a41206a20473b0100200a411e6a20463b0100200a411c6a20453b0100200a411a6a20443b0100200a41186a20433b0100200a41166a20423b0100200a41146a20413b0100200a41126a20403b0100200a41106a203f3b0100200a410e6a203e3b0100200a410c6a203d3b0100200a410a6a203c3b0100200a41086a203b3b0100200a41066a203a3b01002002203441016a223436029803202e417f6a222e0d000b200228029403211c0b2035450d052002200110c8012002280200450d010c040b20022802940341ffffff1f71450d04203510290c040b2002280204223e200128020441c4006e220a200a203e4b1bad42c4007e220b422088a70d00200ba7220a417f4c0d0002400240200a0d004104213d0c010b200a1027223d450d020b20024100360288012002203d360280012002200a41c4006e36028401024002400240203e450d00410021404100213f03402001280204223b4104490d03203f41016a213f417c212e2001280200223c28000021412001203b417c6a3602042001203c41046a3602004100210a200241003a00cc03410021380340200241003b01ce03203b202e6a22364102490d03203c200a6a223741046a2f0000213920012036417e6a22363602042001203741066a2237360200200241003b01ce0320364102490d0320024190036a200a6a223a20393b0100203a41026a20372f00003b010020012036417e6a3602042001203741026a3602002002203841016a22383a00cc03202e417c6a212e200a41046a220a413c470d000b200241d0026a41386a223620024190036a41386a280200360200200241d0026a41306a223720024190036a41306a290300370300200241d0026a41286a223820024190036a41286a290300370300200241d0026a41206a223920024190036a41206a290300370300200241d0026a41186a223a20024190036a41186a290300370300200241d0026a41106a224220024190036a41106a290300370300200241d0026a41086a224320024190036a41086a29030037030020022002290390033703d002203b202e6a41014d0d03203c200a6a222e41046a2f0000213c2001203b200a6b417a6a3602042001202e41066a36020020024190026a41086a220a204329030037030020024190026a41106a222e204229030037030020024190026a41186a223b203a29030037030020024190026a41206a223a203929030037030020024190026a41286a2239203829030037030020024190026a41306a2238203729030037030020024190026a41386a22372036280200360200200220022903d00237039002200241d0016a41086a200a290300220b370300200241d0016a41106a202e2903002212370300200241d0016a41186a203b2903002213370300200241d0016a41206a203a2903002214370300200241d0016a41286a20392903002254370300200241d0016a41306a20382903002255370300200241d0016a41386a2037280200220a36020020024190016a41086a222e200b37030020024190016a41106a2236201237030020024190016a41186a2237201337030020024190016a41206a2238201437030020024190016a41286a2239205437030020024190016a41306a223a205537030020024190016a41386a223b200a3602002002200229039002220b3703d0012002200b3703900102402040200228028401470d0020024180016a20404101109f01200228028001213d20022802880121400b203d204041c4006c6a220a2041360200200a200229039001370204203b280200213b203a290300210b20392903002112203829030021132037290300211420362903002154202e2903002155200a203c3b0140200a410c6a2055370200200a41146a2054370200200a411c6a2014370200200a41246a2013370200200a412c6a2012370200200a41346a200b370200200a413c6a203b3602002002204041016a224036028801203f203e470d000b0b203d450d04200229028401210b2000200536020420002006360200200041b8016a200b370200200041b4016a203d360200200041b0016a2034360200200041ac016a201c360200200041a8016a2035360200200041a4016a2031360200200041a0016a20333602002000419c016a203236020020004198016a202b36020020004194016a203036020020004190016a202f3602002000418c016a202836020020004188016a202d36020020004184016a202c36020020004180016a2025360200200041fc006a202a360200200041f8006a2029360200200041f4006a2022360200200041f0006a2027360200200041ec006a2026360200200041e8006a201f360200200041e4006a2024360200200041e0006a2023360200200041dc006a201d360200200041d8006a2020360200200041d4006a2021360200200041d0006a2019360200200041cc006a2009360200200041c8006a201e360200200041c4006a2017360200200041c0006a201a3602002000413c6a201b360200200041386a2010360200200041346a2016360200200041306a20183602002000412c6a200e360200200041286a2011360200200041246a2015360200200041206a20083602002000411c6a2003360200200041186a200f360200200041146a2007360200200041106a200d3602002000410c6a200c360200200041086a20043602000c130b203841ff0171450d00200241003a00cc030b200241d0016a41386a20024190026a41386a280200360200200241d0016a41306a20024190026a41306a290300370300200241d0016a41286a20024190026a41286a290300370300200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d02200141c4006c450d02203d10290c020b1038000b1039000b200041003602000240201c41ffffff1f71450d00203510290b02402033450d002033413c6c450d00203210290b02402030450d00203041386c450d00202f10290b0240202d450d00202d41346c450d00202c10290b0240202a450d00202a41306c450d00202910290b02402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d0e200610290c0e0b2000410036020002402033450d002033413c6c450d00203210290b02402030450d00203041386c450d00202f10290b0240202d450d00202d41346c450d00202c10290b0240202a450d00202a41306c450d00202910290b02402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d0d200610290c0d0b2000410036020002402030450d00203041386c450d00202f10290b0240202d450d00202d41346c450d00202c10290b0240202a450d00202a41306c450d00202910290b02402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d0c200610290c0c0b200041003602000240202d450d00202d41346c450d00202c10290b0240202a450d00202a41306c450d00202910290b02402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d0b200610290c0b0b200041003602000240202a450d00202a41306c450d00202910290b02402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d0a200610290c0a0b2000410036020002402027450d002027412c6c450d00202610290b02402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d09200610290c090b2000410036020002402024450d00202441286c450d00202310290b02402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d08200610290c080b2000410036020002402020450d00202041246c450d00202110290b0240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d07200610290c070b200041003602000240200941ffffff3f71450d00201e10290b0240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d06200610290c060b200041003602000240201a450d00201a411c6c450d00201b10290b02402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d05200610290c050b2000410036020002402016450d00201641186c450d00201810290b02402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d04200610290c040b2000410036020002402011450d00201141146c450d00201510290b0240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d03200610290c030b200041003602000240200341ffffffff0071450d00200f10290b0240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d02200610290c020b200041003602000240200d450d00200d410c6c450d00200c10290b200541ffffffff0171450d01200610290c010b20004100360200200541ffffffff0171450d00200610290b200241d0036a24000bf70301017f0240200041046a28020041ffffffff0171450d00200028020010290b0240200041106a2802002201450d002001410c6c450d00200028020c10290b02402000411c6a28020041ffffffff0071450d00200028021810290b0240200041286a2802002201450d00200141146c450d00200028022410290b0240200041346a2802002201450d00200141186c450d00200028023010290b0240200041c0006a2802002201450d002001411c6c450d00200028023c10290b0240200041cc006a28020041ffffff3f71450d00200028024810290b0240200041d8006a2802002201450d00200141246c450d00200028025410290b0240200041e4006a2802002201450d00200141286c450d00200028026010290b0240200041f0006a2802002201450d002001412c6c450d00200028026c10290b0240200041fc006a2802002201450d00200141306c450d00200028027810290b024020004188016a2802002201450d00200141346c450d0020002802840110290b024020004194016a2802002201450d00200141386c450d0020002802900110290b0240200041a0016a2802002201450d002001413c6c450d00200028029c0110290b0240200041ac016a28020041ffffff1f71450d0020002802a80110290b0240200041b8016a2802002201450d00200141c4006c450d0020002802b40110290b0be49301032a7f047e247f23004180026b22042400200441b8016a4200370300200441b0016a22054280808080c000370300200441a0016a420037030020044198016a22064280808080c00037030020044188016a420037030020044180016a22074280808080c000370300200441f0006a4200370300200441e8006a22084280808080c000370300200441d8006a4200370300200441d0006a22094280808080c000370300200441c0006a4200370300200441386a220a4280808080c000370300200441286a4200370300200441206a220b4280808080c000370300200441106a4200370300200442043703a8012004420437039001200442043703782004420437036020044204370348200442043703302004420437031820044280808080c000370308200442043703002001280200220c2001280208220d412c6c220e6a210f20012802042110200c2101024002400240200d450d00200441bc016a2111200441b4016a2112200441a8016a2113200441a4016a21142004419c016a211520044190016a21162004418c016a211720044184016a2118200441f8006a2119200441f4006a211a200441ec006a211b200441e0006a211c200441dc006a211d200441d4006a211e200441c8006a211f200441c4006a21202004413c6a2121200441306a21222004412c6a2123200441246a2124200441186a2125200441146a21262004410c6a2127200441086a2128200e41546a210d200441e0016a41086a2129200441e0016a41106a212a200441e0016a41186a212b200c210e0340200e280208212c200e280204212d2029200e41146a290200370300202a200e411c6a290200370300202b200e41246a2902003703002004200e29020c3703e001200e412c6a2101200e280200220e450d01200441c0016a41186a202b290300222e370300200441c0016a41106a202a290300222f370300200441c0016a41086a20292903002230370300200420042903e00122313703c001202b202e370300202a202f37030020292030370300200420313703e001024002400240202c41104d0d00410121320c010b024002400240024002400240024002400240024002400240024002400240024002400240202c0e11000102030405060708090a0b0c0d0e0f10000b0240202d450d00202d41226c450d00200e10290b2001200f460d150c120b4102213220022802082233450d102002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c120b0b20032802082234450d102003280200212c203441057421354100213402400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c120b0b2034418080044f0d1002402004280208222c2004280204470d002004202c4101108d012004280208212c0b2004280200202c4103746a222c20343b0104202c20333602002028212c0c0f0b4102213220022802082233450d0f2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c110b0b2003280208222c450d0f41002135202c4105742237213620032802002234212c02400340200e202c460d012035202c200e412010e70722384100476a21352038450d01202c41206a212c203641606a22360d000c110b0b203541ffff034b0d0f200e41226a2136200e2f012021394100212c0240034020362034460d01202c20342036412010e70722384100476a212c2038450d01203441206a2134203741606a22370d000c110b0b202c41ffff034b0d0f0240200428021422322004280210470d00202720324101109d01200428021421320b200428020c2032410c6c6a2232202c3b0108203220353b010420322033360200203241066a20393b01002026212c0c0e0b4102213220022802082233450d0e2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c100b0b2003280208222c450d0e41002134202c410574223a213520032802002238212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c100b0b203441ffff034b0d0e200e41226a2136200e2f0120213b41002135203a21372038212c024003402036202c460d012035202c2036412010e70722394100476a21352039450d01202c41206a212c203741606a22370d000c100b0b203541ffff034b0d0e200e41c4006a2136200e41c2006a2f010021394100212c0240034020362038460d01202c20382036412010e70722374100476a212c2037450d01203841206a2138203a41606a223a0d000c100b0b202c41ffff034b0d0e024020042802202232200428021c470d00202520324101109c01200428022021320b200428021820324104746a2232202c3b010c203220343b0104203220333602002032410a6a20393b0100203241086a20353b0100203241066a203b3b0100200b212c0c0d0b4102213220022802082233450d0d2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0f0b0b2003280208222c450d0d41002134202c410574223b213520032802002237212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0f0b0b203441ffff034b0d0d200e41226a2136200e2f0120213c41002135203b21382037212c024003402036202c460d012035202c2036412010e70722394100476a21352039450d01202c41206a212c203841606a22380d000c0f0b0b203541ffff034b0d0d200e41c4006a2138200e41c2006a2f0100213d41002136203b21392037212c024003402038202c460d012036202c2038412010e707223a4100476a2136203a450d01202c41206a212c203941606a22390d000c0f0b0b203641ffff034b0d0d200e41e6006a2138200e41e4006a2f0100213a4100212c0240034020382037460d01202c20372038412010e70722394100476a212c2039450d01203741206a2137203b41606a223b0d000c0f0b0b202c41ffff034b0d0d0240200428022c22322004280228470d0020242032410110a001200428022c21320b2004280224203241146c6a2232202c3b0110203220343b0104203220333602002032410e6a203a3b01002032410c6a20363b01002032410a6a203d3b0100203241086a20353b0100203241066a203c3b01002023212c0c0c0b4102213220022802082233450d0c2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0e0b0b2003280208222c450d0c41002134202c410574223b213520032802002239212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0e0b0b203441ffff034b0d0c200e41226a2136200e2f0120213d41002135203b21382039212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c0e0b0b203541ffff034b0d0c200e41c4006a2138200e41c2006a2f0100213e41002136203b21372039212c024003402038202c460d012036202c2038412010e707223a4100476a2136203a450d01202c41206a212c203741606a22370d000c0e0b0b203641ffff034b0d0c200e41e6006a2137200e41e4006a2f0100213f41002138203b213a2039212c024003402037202c460d012038202c2037412010e707223c4100476a2138203c450d01202c41206a212c203a41606a223a0d000c0e0b0b203841ffff034b0d0c200e4188016a2137200e4186016a2f0100213c4100212c0240034020372039460d01202c20392037412010e707223a4100476a212c203a450d01203941206a2139203b41606a223b0d000c0e0b0b202c41ffff034b0d0c0240200428023822322004280234470d00202220324101109901200428023821320b2004280230203241186c6a2232202c3b0114203220343b010420322033360200203241126a203c3b0100203241106a20383b01002032410e6a203f3b01002032410c6a20363b01002032410a6a203e3b0100203241086a20353b0100203241066a203d3b0100200a212c0c0b0b4102213220022802082233450d0b2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0d0b0b2003280208222c450d0b41002134202c410574223c21352003280200223a212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0d0b0b203441ffff034b0d0b200e41226a2136200e2f0120213e41002135203c2138203a212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c0d0b0b203541ffff034b0d0b200e41c4006a2138200e41c2006a2f0100213f41002136203c2137203a212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c0d0b0b203641ffff034b0d0b200e41e6006a2137200e41e4006a2f0100214041002138203c2139203a212c024003402037202c460d012038202c2037412010e707223b4100476a2138203b450d01202c41206a212c203941606a22390d000c0d0b0b203841ffff034b0d0b200e4188016a2139200e4186016a2f0100214141002137203c213b203a212c024003402039202c460d012037202c2039412010e707223d4100476a2137203d450d01202c41206a212c203b41606a223b0d000c0d0b0b203741ffff034b0d0b200e41aa016a2139200e41a8016a2f0100213d4100212c024003402039203a460d01202c203a2039412010e707223b4100476a212c203b450d01203a41206a213a203c41606a223c0d000c0d0b0b202c41ffff034b0d0b0240200428024422322004280240470d00202120324101109401200428024421320b200428023c2032411c6c6a2232202c3b0118203220343b010420322033360200203241166a203d3b0100203241146a20373b0100203241126a20413b0100203241106a20383b01002032410e6a20403b01002032410c6a20363b01002032410a6a203f3b0100203241086a20353b0100203241066a203e3b01002020212c0c0a0b4102213220022802082233450d0a2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0c0b0b2003280208222c450d0a41002134202c410574223c21352003280200223a212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0c0b0b203441ffff034b0d0a200e41226a2136200e2f0120213f41002135203c2138203a212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c0c0b0b203541ffff034b0d0a200e41c4006a2138200e41c2006a2f0100214041002136203c2137203a212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c0c0b0b203641ffff034b0d0a200e41e6006a2137200e41e4006a2f0100214141002138203c2139203a212c024003402037202c460d012038202c2037412010e707223b4100476a2138203b450d01202c41206a212c203941606a22390d000c0c0b0b203841ffff034b0d0a200e4188016a2139200e4186016a2f0100214241002137203c213b203a212c024003402039202c460d012037202c2039412010e707223d4100476a2137203d450d01202c41206a212c203b41606a223b0d000c0c0b0b203741ffff034b0d0a200e41aa016a213b200e41a8016a2f0100214341002139203c213d203a212c02400340203b202c460d012039202c203b412010e707223e4100476a2139203e450d01202c41206a212c203d41606a223d0d000c0c0b0b203941ffff034b0d0a200e41cc016a213b200e41ca016a2f0100213e4100212c02400340203b203a460d01202c203a203b412010e707223d4100476a212c203d450d01203a41206a213a203c41606a223c0d000c0c0b0b202c41ffff034b0d0a024020042802502232200428024c470d00201f20324101109501200428025021320b200428024820324105746a2232202c3b011c203220343b0104203220333602002032411a6a203e3b0100203241186a20393b0100203241166a20433b0100203241146a20373b0100203241126a20423b0100203241106a20383b01002032410e6a20413b01002032410c6a20363b01002032410a6a20403b0100203241086a20353b0100203241066a203f3b01002009212c0c090b4102213220022802082233450d092002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0b0b0b2003280208222c450d0941002134202c410574223d21352003280200223b212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0b0b0b203441ffff034b0d09200e41226a2136200e2f0120214041002135203d2138203b212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c0b0b0b203541ffff034b0d09200e41c4006a2138200e41c2006a2f0100214141002136203d2137203b212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c0b0b0b203641ffff034b0d09200e41e6006a2137200e41e4006a2f0100214241002138203d2139203b212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a22390d000c0b0b0b203841ffff034b0d09200e4188016a2139200e4186016a2f0100214341002137203d213a203b212c024003402039202c460d012037202c2039412010e707223c4100476a2137203c450d01202c41206a212c203a41606a223a0d000c0b0b0b203741ffff034b0d09200e41aa016a213a200e41a8016a2f0100214441002139203d213c203b212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203c41606a223c0d000c0b0b0b203941ffff034b0d09200e41cc016a213c200e41ca016a2f010021454100213a203d213e203b212c02400340203c202c460d01203a202c203c412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c0b0b0b203a41ffff034b0d09200e41ee016a213c200e41ec016a2f0100213f4100212c02400340203c203b460d01202c203b203c412010e707223e4100476a212c203e450d01203b41206a213b203d41606a223d0d000c0b0b0b202c41ffff034b0d090240200428025c22322004280258470d00201e20324101109601200428025c21320b2004280254203241246c6a2232202c3b0120203220343b0104203220333602002032411e6a203f3b01002032411c6a203a3b01002032411a6a20453b0100203241186a20393b0100203241166a20443b0100203241146a20373b0100203241126a20433b0100203241106a20383b01002032410e6a20423b01002032410c6a20363b01002032410a6a20413b0100203241086a20353b0100203241066a20403b0100201d212c0c080b4102213220022802082233450d082002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c0a0b0b2003280208222c450d0841002134202c410574223d21352003280200223b212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c0a0b0b203441ffff034b0d08200e41226a2136200e2f0120214141002135203d2138203b212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c0a0b0b203541ffff034b0d08200e41c4006a2138200e41c2006a2f0100214241002136203d2137203b212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c0a0b0b203641ffff034b0d08200e41e6006a2137200e41e4006a2f0100214341002138203d2139203b212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a22390d000c0a0b0b203841ffff034b0d08200e4188016a2139200e4186016a2f0100214441002137203d213a203b212c024003402039202c460d012037202c2039412010e707223c4100476a2137203c450d01202c41206a212c203a41606a223a0d000c0a0b0b203741ffff034b0d08200e41aa016a213a200e41a8016a2f0100214541002139203d213c203b212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203c41606a223c0d000c0a0b0b203941ffff034b0d08200e41cc016a213c200e41ca016a2f010021464100213a203d213e203b212c02400340203c202c460d01203a202c203c412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c0a0b0b203a41ffff034b0d08200e41ee016a213e200e41ec016a2f010021474100213c203d213f203b212c02400340203e202c460d01203c202c203e412010e70722404100476a213c2040450d01202c41206a212c203f41606a223f0d000c0a0b0b203c41ffff034b0d08200e4190026a213e200e418e026a2f010021404100212c02400340203e203b460d01202c203b203e412010e707223f4100476a212c203f450d01203b41206a213b203d41606a223d0d000c0a0b0b202c41ffff034b0d080240200428026822322004280264470d00201c2032410110ad01200428026821320b2004280260203241286c6a2232202c3b0124203220343b010420322033360200203241226a20403b0100203241206a203c3b01002032411e6a20473b01002032411c6a203a3b01002032411a6a20463b0100203241186a20393b0100203241166a20453b0100203241146a20373b0100203241126a20443b0100203241106a20383b01002032410e6a20433b01002032410c6a20363b01002032410a6a20423b0100203241086a20353b0100203241066a20413b01002008212c0c070b4102213220022802082233450d072002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c090b0b2003280208222c450d0741002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c090b0b203441ffff034b0d07200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c090b0b203541ffff034b0d07200e41c4006a2138200e41c2006a2f0100214341002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c090b0b203641ffff034b0d07200e41e6006a2137200e41e4006a2f0100214441002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a22390d000c090b0b203841ffff034b0d07200e4188016a2139200e4186016a2f0100214541002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a0d000c090b0b203741ffff034b0d07200e41aa016a213a200e41a8016a2f0100214641002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b0d000c090b0b203941ffff034b0d07200e41cc016a213b200e41ca016a2f010021474100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c090b0b203a41ffff034b0d07200e41ee016a213e200e41ec016a2f010021484100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f0d000c090b0b203b41ffff034b0d07200e4190026a213f200e418e026a2f010021494100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a22400d000c090b0b203e41ffff034b0d07200e41b2026a213f200e41b0026a2f010021414100212c02400340203f203c460d01202c203c203f412010e70722404100476a212c2040450d01203c41206a213c203d41606a223d0d000c090b0b202c41ffff034b0d070240200428027422322004280270470d00201b20324101109301200428027421320b200428026c2032412c6c6a2232202c3b0128203220343b010420322033360200203241266a20413b0100203241246a203e3b0100203241226a20493b0100203241206a203b3b01002032411e6a20483b01002032411c6a203a3b01002032411a6a20473b0100203241186a20393b0100203241166a20463b0100203241146a20373b0100203241126a20453b0100203241106a20383b01002032410e6a20443b01002032410c6a20363b01002032410a6a20433b0100203241086a20353b0100203241066a20423b0100201a212c0c060b4102213220022802082233450d062002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a22340d000c080b0b2003280208222c450d0641002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a22350d000c080b0b203441ffff034b0d06200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a22380d000c080b0b203541ffff034b0d06200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a22370d000c080b0b203641ffff034b0d06200e41e6006a2137200e41e4006a2f0100214541002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a22390d000c080b0b203841ffff034b0d06200e4188016a2139200e4186016a2f0100214641002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a0d000c080b0b203741ffff034b0d06200e41aa016a213a200e41a8016a2f0100214741002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b0d000c080b0b203941ffff034b0d06200e41cc016a213b200e41ca016a2f010021484100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c080b0b203a41ffff034b0d06200e41ee016a213e200e41ec016a2f010021494100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f0d000c080b0b203b41ffff034b0d06200e4190026a213f200e418e026a2f0100214a4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a22400d000c080b0b203e41ffff034b0d06200e41b2026a2140200e41b0026a2f0100214b4100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d080c000b0b203f41ffff034b0d06200e41d4026a2140200e41d2026a2f010021434100212c024003402040203c460d01202c203c2040412010e70722414100476a212c2041450d01203c41206a213c203d41606a223d450d080c000b0b202c41ffff034b0d0602402004280280012232200428027c470d0020192032410110ab0120042802800121320b2004280278203241306c6a2232202c3b012c203220343b0104203220333602002032412a6a20433b0100203241286a203f3b0100203241266a204b3b0100203241246a203e3b0100203241226a204a3b0100203241206a203b3b01002032411e6a20493b01002032411c6a203a3b01002032411a6a20483b0100203241186a20393b0100203241166a20473b0100203241146a20373b0100203241126a20463b0100203241106a20383b01002032410e6a20453b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002007212c0c050b4102213220022802082233450d052002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a2234450d070c000b0b2003280208222c450d0541002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a2235450d070c000b0b203441ffff034b0d05200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a2238450d070c000b0b203541ffff034b0d05200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a2237450d070c000b0b203641ffff034b0d05200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a2239450d070c000b0b203841ffff034b0d05200e4188016a2139200e4186016a2f0100214741002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a450d070c000b0b203741ffff034b0d05200e41aa016a213a200e41a8016a2f0100214841002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b450d070c000b0b203941ffff034b0d05200e41cc016a213b200e41ca016a2f010021494100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e450d070c000b0b203a41ffff034b0d05200e41ee016a213e200e41ec016a2f0100214a4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f450d070c000b0b203b41ffff034b0d05200e4190026a213f200e418e026a2f0100214b4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a2240450d070c000b0b203e41ffff034b0d05200e41b2026a2140200e41b0026a2f0100214c4100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d070c000b0b203f41ffff034b0d05200e41d4026a2141200e41d2026a2f0100214d41002140203d2143203c212c024003402041202c460d012040202c2041412010e70722454100476a21402045450d01202c41206a212c204341606a2243450d070c000b0b204041ffff034b0d05200e41f6026a2141200e41f4026a2f010021454100212c024003402041203c460d01202c203c2041412010e70722434100476a212c2043450d01203c41206a213c203d41606a223d450d070c000b0b202c41ffff034b0d050240200428028c012232200428028801470d0020182032410110ae01200428028c0121320b200428028401203241346c6a2232202c3b0130203220343b0104203220333602002032412e6a20453b01002032412c6a20403b01002032412a6a204d3b0100203241286a203f3b0100203241266a204c3b0100203241246a203e3b0100203241226a204b3b0100203241206a203b3b01002032411e6a204a3b01002032411c6a203a3b01002032411a6a20493b0100203241186a20393b0100203241166a20483b0100203241146a20373b0100203241126a20473b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002017212c0c040b4102213220022802082233450d042002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a2234450d060c000b0b2003280208222c450d0441002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a2235450d060c000b0b203441ffff034b0d04200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a2238450d060c000b0b203541ffff034b0d04200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a2237450d060c000b0b203641ffff034b0d04200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a2239450d060c000b0b203841ffff034b0d04200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a450d060c000b0b203741ffff034b0d04200e41aa016a213a200e41a8016a2f0100214941002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b450d060c000b0b203941ffff034b0d04200e41cc016a213b200e41ca016a2f0100214a4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e450d060c000b0b203a41ffff034b0d04200e41ee016a213e200e41ec016a2f0100214b4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f450d060c000b0b203b41ffff034b0d04200e4190026a213f200e418e026a2f0100214c4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a2240450d060c000b0b203e41ffff034b0d04200e41b2026a2140200e41b0026a2f0100214d4100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d060c000b0b203f41ffff034b0d04200e41d4026a2141200e41d2026a2f0100214e41002140203d2143203c212c024003402041202c460d012040202c2041412010e70722454100476a21402045450d01202c41206a212c204341606a2243450d060c000b0b204041ffff034b0d04200e41f6026a2143200e41f4026a2f0100214f41002141203d2145203c212c024003402043202c460d012041202c2043412010e70722474100476a21412047450d01202c41206a212c204541606a2245450d060c000b0b204141ffff034b0d04200e4198036a2143200e4196036a2f010021474100212c024003402043203c460d01202c203c2043412010e70722454100476a212c2045450d01203c41206a213c203d41606a223d450d060c000b0b202c41ffff034b0d0402402004280298012232200428029401470d0020162032410110aa0120042802980121320b200428029001203241386c6a2232202c3b0134203220343b010420322033360200203241326a20473b0100203241306a20413b01002032412e6a204f3b01002032412c6a20403b01002032412a6a204e3b0100203241286a203f3b0100203241266a204d3b0100203241246a203e3b0100203241226a204c3b0100203241206a203b3b01002032411e6a204b3b01002032411c6a203a3b01002032411a6a204a3b0100203241186a20393b0100203241166a20493b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002006212c0c030b4102213220022802082233450d032002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a2234450d050c000b0b2003280208222c450d0341002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a2235450d050c000b0b203441ffff034b0d03200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a2238450d050c000b0b203541ffff034b0d03200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a2237450d050c000b0b203641ffff034b0d03200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a2239450d050c000b0b203841ffff034b0d03200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a450d050c000b0b203741ffff034b0d03200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b450d050c000b0b203941ffff034b0d03200e41cc016a213b200e41ca016a2f0100214b4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e450d050c000b0b203a41ffff034b0d03200e41ee016a213e200e41ec016a2f0100214c4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f450d050c000b0b203b41ffff034b0d03200e4190026a213f200e418e026a2f0100214d4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a2240450d050c000b0b203e41ffff034b0d03200e41b2026a2140200e41b0026a2f0100214e4100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d050c000b0b203f41ffff034b0d03200e41d4026a2141200e41d2026a2f0100214f41002140203d2143203c212c024003402041202c460d012040202c2041412010e70722454100476a21402045450d01202c41206a212c204341606a2243450d050c000b0b204041ffff034b0d03200e41f6026a2143200e41f4026a2f0100215041002141203d2145203c212c024003402043202c460d012041202c2043412010e70722474100476a21412047450d01202c41206a212c204541606a2245450d050c000b0b204141ffff034b0d03200e4198036a2145200e4196036a2f0100215141002143203d2147203c212c024003402045202c460d012043202c2045412010e70722494100476a21432049450d01202c41206a212c204741606a2247450d050c000b0b204341ffff034b0d03200e41ba036a2145200e41b8036a2f010021494100212c024003402045203c460d01202c203c2045412010e70722474100476a212c2047450d01203c41206a213c203d41606a223d450d050c000b0b202c41ffff034b0d03024020042802a401223220042802a001470d00201520324101109b0120042802a40121320b200428029c012032413c6c6a2232202c3b0138203220343b010420322033360200203241366a20493b0100203241346a20433b0100203241326a20513b0100203241306a20413b01002032412e6a20503b01002032412c6a20403b01002032412a6a204f3b0100203241286a203f3b0100203241266a204e3b0100203241246a203e3b0100203241226a204d3b0100203241206a203b3b01002032411e6a204c3b01002032411c6a203a3b01002032411a6a204b3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002014212c0c020b4102213220022802082233450d022002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a2234450d040c000b0b2003280208222c450d0241002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a2235450d040c000b0b203441ffff034b0d02200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a2238450d040c000b0b203541ffff034b0d02200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a2237450d040c000b0b203641ffff034b0d02200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a2239450d040c000b0b203841ffff034b0d02200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a450d040c000b0b203741ffff034b0d02200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b450d040c000b0b203941ffff034b0d02200e41cc016a213b200e41ca016a2f0100214c4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e450d040c000b0b203a41ffff034b0d02200e41ee016a213e200e41ec016a2f0100214d4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f450d040c000b0b203b41ffff034b0d02200e4190026a213f200e418e026a2f0100214e4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a2240450d040c000b0b203e41ffff034b0d02200e41b2026a2140200e41b0026a2f0100214f4100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d040c000b0b203f41ffff034b0d02200e41d4026a2141200e41d2026a2f0100215041002140203d2143203c212c024003402041202c460d012040202c2041412010e70722454100476a21402045450d01202c41206a212c204341606a2243450d040c000b0b204041ffff034b0d02200e41f6026a2143200e41f4026a2f0100215141002141203d2145203c212c024003402043202c460d012041202c2043412010e70722474100476a21412047450d01202c41206a212c204541606a2245450d040c000b0b204141ffff034b0d02200e4198036a2145200e4196036a2f0100215241002143203d2147203c212c024003402045202c460d012043202c2045412010e70722494100476a21432049450d01202c41206a212c204741606a2247450d040c000b0b204341ffff034b0d02200e41ba036a2147200e41b8036a2f0100215341002145203d2149203c212c024003402047202c460d012045202c2047412010e707224b4100476a2145204b450d01202c41206a212c204941606a2249450d040c000b0b204541ffff034b0d02200e41dc036a2147200e41da036a2f0100214b4100212c024003402047203c460d01202c203c2047412010e70722494100476a212c2049450d01203c41206a213c203d41606a223d450d040c000b0b202c41ffff034b0d02024020042802b001223220042802ac01470d0020132032410110910120042802b00121320b20042802a80120324106746a2232202c3b013c203220343b0104203220333602002032413a6a204b3b0100203241386a20453b0100203241366a20533b0100203241346a20433b0100203241326a20523b0100203241306a20413b01002032412e6a20513b01002032412c6a20403b01002032412a6a20503b0100203241286a203f3b0100203241266a204f3b0100203241246a203e3b0100203241226a204e3b0100203241206a203b3b01002032411e6a204d3b01002032411c6a203a3b01002032411a6a204c3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002005212c0c010b4102213220022802082233450d012002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010e70722354100476a21332035450d01202c41206a212c203441606a2234450d030c000b0b2003280208222c450d0141002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010e70722364100476a21342036450d01202c41206a212c203541606a2235450d030c000b0b203441ffff034b0d01200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010e70722374100476a21352037450d01202c41206a212c203841606a2238450d030c000b0b203541ffff034b0d01200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010e70722394100476a21362039450d01202c41206a212c203741606a2237450d030c000b0b203641ffff034b0d01200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010e707223a4100476a2138203a450d01202c41206a212c203941606a2239450d030c000b0b203841ffff034b0d01200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010e707223b4100476a2137203b450d01202c41206a212c203a41606a223a450d030c000b0b203741ffff034b0d01200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010e707223e4100476a2139203e450d01202c41206a212c203b41606a223b450d030c000b0b203941ffff034b0d01200e41cc016a213b200e41ca016a2f0100214c4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010e707223f4100476a213a203f450d01202c41206a212c203e41606a223e450d030c000b0b203a41ffff034b0d01200e41ee016a213e200e41ec016a2f0100214e4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010e70722404100476a213b2040450d01202c41206a212c203f41606a223f450d030c000b0b203b41ffff034b0d01200e4190026a213f200e418e026a2f0100214f4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010e70722414100476a213e2041450d01202c41206a212c204041606a2240450d030c000b0b203e41ffff034b0d01200e41b2026a2140200e41b0026a2f010021504100213f203d2141203c212c024003402040202c460d01203f202c2040412010e70722434100476a213f2043450d01202c41206a212c204141606a2241450d030c000b0b203f41ffff034b0d01200e41d4026a2141200e41d2026a2f0100215141002140203d2143203c212c024003402041202c460d012040202c2041412010e70722454100476a21402045450d01202c41206a212c204341606a2243450d030c000b0b204041ffff034b0d01200e41f6026a2143200e41f4026a2f0100215241002141203d2145203c212c024003402043202c460d012041202c2043412010e70722474100476a21412047450d01202c41206a212c204541606a2245450d030c000b0b204141ffff034b0d01200e4198036a2145200e4196036a2f0100215341002143203d2147203c212c024003402045202c460d012043202c2045412010e70722494100476a21432049450d01202c41206a212c204741606a2247450d030c000b0b204341ffff034b0d01200e41ba036a2147200e41b8036a2f0100215441002145203d2149203c212c024003402047202c460d012045202c2047412010e707224b4100476a2145204b450d01202c41206a212c204941606a2249450d030c000b0b204541ffff034b0d01200e41dc036a2149200e41da036a2f0100215541002147203d214b203c212c024003402049202c460d012047202c2049412010e707224d4100476a2147204d450d01202c41206a212c204b41606a224b450d030c000b0b204741ffff034b0d01200e41fe036a2149200e41fc036a2f0100214d4100212c024003402049203c460d01202c203c2049412010e707224b4100476a212c204b450d01203c41206a213c203d41606a223d450d030c000b0b202c41ffff034b0d01024020042802bc01223220042802b801470d00201220324101109f0120042802bc0121320b20042802b401203241c4006c6a2232202c3b0140203220343b0104203220333602002032413e6a204d3b01002032413c6a20473b01002032413a6a20553b0100203241386a20453b0100203241366a20543b0100203241346a20433b0100203241326a20533b0100203241306a20413b01002032412e6a20523b01002032412c6a20403b01002032412a6a20513b0100203241286a203f3b0100203241266a20503b0100203241246a203e3b0100203241226a204f3b0100203241206a203b3b01002032411e6a204e3b01002032411c6a203a3b01002032411a6a204c3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002011212c0b202c202c28020041016a3602000240202d450d00202d41226c450d00200e10290b2001200f460d040c010b200041013a0000200020323a00010240202d450d00202d41226c450d00200e10290b0240200f2001460d0003400240200141046a280200220e450d00200e41226c450d00200128020010290b2001412c6a2101200d41546a220d0d000b0b02402010450d002010412c6c450d00200c10290b20041087020c040b200d41546a210d2001210e0c000b0b200f2001460d0003402001220d412c6a21010240200d41046a280200220e450d00200e41226c450d00200d28020010290b200f2001470d000b0b02402010450d002010412c6c450d00200c10290b200041046a200441c00110e4071a200041003a00000b20044180026a24000bdb0401097f230041c0016b2202240020024188016a200110db01200241306a200228028801220320022802900110e20120024198016a41086a2204200241ec006a29020037030020024198016a41106a2205200241f4006a29020037030020024198016a41186a2206200241fc006a29020037030020024198016a41206a220720024184016a2802003602002002200241e4006a290200370398010240024020022802502208450d00200241e0006a2802002109200241dc006a280200210a20022802542101200241086a41206a2007280200360200200241086a41186a2006290300370300200241086a41106a2005290300370300200241086a41086a200429030037030020022002290398013703080240200228028c01450d00200310290b200241306a41106a200241086a41106a290300370300200241306a41086a200241086a41086a290300370300200241306a41186a200241086a41186a290300370300200241306a41206a200241086a41206a28020036020020024198016a41086a2002413c6a29020037030020024198016a41106a200241c4006a29020037030020024198016a41186a200241cc006a29020037030020022002290308370330200220022902343703980102402001450d00200141186c450d00200810290b0240200941ffffffff0371450d00200a10290b2000200229039801370001200041196a200241b0016a290300370000200041116a200241a8016a290300370000200041096a200241a0016a290300370000410121010c010b0240200228028c01450d00200310290b410021010b200020013a0000200241c0016a24000b8b4917047f017e017f017e047f017e027f017e067f017e017f017e027f017e037f027e027f037e017f017e047f017e017f23004180046b22062400200641f8026a41186a22074200370300200641f8026a41106a22084200370300200641f8026a41086a22094200370300200642003703f80241eebec500ad4280808080f00084220a1001220b290000210c200641a8026a41086a220d200b41086a2900003703002006200c3703a802200b10292009200d290300370300200620062903a8023703f80241eab8c000ad42808080809002841001220b290000210c200641b8026a41086a220e200b41086a2900003703002006200c3703b802200b1029200820062903b802220c370300200641b8036a41086a220b2009290300370300200641b8036a41106a220f200c370300200641b8036a41186a2210200e290300370300200620062903f8023703b803200641e0016a200641b8036a10b1010240024020062802e001417d71450d00420121110c010b200742003703002008420037030020094200370300200642003703f802200a10012212290000210c200d201241086a2900003703002006200c3703a802201210292009200d290300370300200620062903a8023703f80241a8fac100ad4280808080b002841001220d290000210c200e200d41086a2900003703002006200c3703b802200d1029200820062903b802370000200841086a200e290300370000200b2009290300370300200f200829030037030020102007290300370300200620062903f8023703b803200641203602bc022006200641b8036a3602b802200641e8016a200641b8036aad4280808080800484220a1007108b020240024020062802e80122090d00410021130c010b20062802ec01210b02400240200641f0016a2802004104490d00410121132009280000220f418194ebdc03490d010b41002113200641003602900220064201370388022006410d3602e4032006200641b8026a3602e003200620064188026a3602a8022006418c036a4101360200200642013702fc02200641f4eaca003602f8022006200641e0036a36028803200641a8026a41a8a3c800200641f8026a10371a200635029002422086200635028802841008200628028c02450d0020062802880210290b200b450d00200910290b42002111200641f8026a41186a220e4200370300200641f8026a41106a220d4200370300200641f8026a41086a22094200370300200642003703f80241eebec500ad4280808080f000841001220b290000210c200641a8026a41086a2207200b41086a2900003703002006200c3703a802200b102920092007290300370300200620062903a8023703f80241f0f5c100ad42808080809001841001220b290000210c200641b8026a41086a2207200b41086a2900003703002006200c3703b802200b1029200820062903b802370000200841086a2007290300370000200641b8036a41086a2009290300370300200641b8036a41106a200d290300370300200641b8036a41186a200e290300370300200620062903f8023703b803200641f8026a200641b8036a10d00142c0f0f50b211420062903f8024202510d00200641f8026a200d280200221510da01200641d8016a20062802f802220b20062802800310fc0120062802dc01210d20062802d8012109024020062802fc02450d00200b10290b024002400240024020090d0041e5a4c200ad4280808080e0068410084100201541646a2209200920154b1b2116428084afdf002114201521170c010b4100201541646a2209200920154b1b2116428084afdf0021140240200d20054b0d00201521170c010b200641f8026a41186a220d4200370300200641f8026a41106a220e4200370300200641f8026a41086a22094200370300200642003703f80241eebec500ad4280808080f000841001220b290000210c200641a8026a41086a2207200b41086a2900003703002006200c3703a802200b102920092007290300370300200620062903a8023703f80241f0fbc100ad4280808080a001841001220b290000210c200641b8026a41086a2207200b41086a2900003703002006200c3703b802200b1029200820062903b802370000200841086a2007290300370000200641b8036a41086a2009290300370300200641b8036a41106a200e290300370300200641b8036a41186a200d290300370300200620062903f8023703b803200641f8026a200641b8036a10f80120062802f8022209410420091b220e20062902fc02420020091b220c422088a741037422096a210b03402009450d02200941786a2109200b417c6a210d200b41786a210b200d28020020054b0d000b200e20096a280200211742c0f4a4eb002114200c42ffffffff0183500d00200e10290b42002111200641f8026a41186a22184200370300200641f8026a41106a22194200370300200641f8026a41086a221a4200370300200642003703f80241eebec500ad4280808080f00084221b10012209290000210c200641a8026a41086a221c200941086a2900003703002006200c3703a80220091029201a201c290300370300200620062903a8023703f80241b0fec100ad4280808080e00284220c10012209290000211d200641b8026a41086a221e200941086a2900003703002006201d3703b80220091029200820062903b802370000200841086a2209201e290300370000200641b8036a41086a2210201a290300370300200641b8036a41106a22122019290300370300200641b8036a41186a221f2018290300370300200620062903f8023703b803200641d0016a200641b8036a412010fc0120062802d401210d20062802d001210e2018420037030020194200370300201a4200370300200642003703f802201b1001220b290000211d201c200b41086a2900003703002006201d3703a802200b1029201a201c290300370300200620062903a8023703f802200c1001220b290000210c201e200b41086a2900003703002006200c3703b802200b1029200820062903b8023700002009201e2903003700002010201a29030037030020122019290300370300201f2018290300370300200620062903f8023703b8032006200d2015200e4101461b3602f802200a200641f8026aad221d4280808080c0008410032018420037030020194200370300201a4200370300200642003703f802201b1001220b290000210c201c200b41086a2900003703002006200c3703a802200b1029201a201c290300370300200620062903a8023703f80241f4f3c100ad4280808080d001841001220b290000210c201e200b41086a2900003703002006200c3703b802200b1029200820062903b8023700002009201e2903003700002010201a29030037030020122019290300370300201f2018290300370300200620062903f8023703b803200641f8026a200641b8036a108d0220062902fc02420020062802f80222081b21202008410120081b212120042002200220044b1b2222450d01200f410020131b2123200641a8036aad4280808080c000842124201d428080808080028421252020422088a74105742126200641a8036a41046a2127200641e0036a41086a21044100211303402001201341e0006c6a210d03402013220e41016a21132001200e41e0006c6a21072026210920212108024003402009450d010240200d2008460d0020082007412010e707210b200941606a2109200841206a2108200b0d010b0b200d41e0006a210d20132022490d010c040b0b2003200e4102746a2802002108200642003703b002200642003703a802200641c0016a2007290320220c200741286a290300428094ebdc03420010e007200641a0016a2007290330220a200741386a290300428094ebdc03420010e007200641b0016a20062903c001221d200641c0016a41086a29030022284280ec94a37c427f10d507200641f0006a201d20282008ad2229420010d50720064190016a20062903a001221d200641a0016a41086a29030022284280ec94a37c427f10d50720064180016a201d20282029420010d507200642003703c002200642003703b8022029200a2006290390017c7e221d428094ebdc0380212802400240024002400240200629037042002029200c20062903b0017c7e220c428094ebdc0380220aa7417f200c428080808080c0b2cd3b541b200c200a4280ec94a37c7e7c4280cab5ee01566a2209ad7d85200641f0006a41086a29030042002009410047ad7d8584500d00200629038001210a20064180016a41086a290300212a200641e8016a2017200710d60120062802e8012109200620062802f001220b3602f403200620093602f00320064188026a200bad4220862009ad841007108b0202400240200628028802220b0d004200210c0c010b200628028c02210e0240024020062802900222054104490d00200b280000220d418094ebdc034b0d004201210c2005417c6a410f4b0d010b200641003602c003200642013703b8032006410d3602e4032006200641f0036a3602e0032006200641b8036a3602a8032006410136028c03200642013702fc02200641f4eaca003602f8022006200641e0036a36028803200641a8036a41a8a3c800200641f8026a10371a20063502c00342208620063502b803841008024020062802bc03450d0020062802b80310290b4200210c202b210d0b0240200e450d00200b10290b200d212b0b024020062802ec01450d00200910290b2008202b4100200c4200521b220f4d0d02200641f8026a2017200710d601200635028003212c20062802f802210b4110102722090d010c040b200642003703f001200642003703e80120064200370390022006420037038802200641f0036a200710dc01200641b8036a20062802f003220920062802f80310e00120042010280200360200200620062903b8033703e003024020062802c4032208450d00200641a8036a41086a2004280200360200200620062903e0033703a80320062903c803210c0b024020062802f403450d00200910290b0240024020080d00200642003703c80320064280808080c0003703c003200620163602bc03200641003602b803200641f0036a200710dc0120062802f0032108200620062802f8033602e403200620083602e003200641b8036a200641e0036a108e02024020062802f403450d00200810290b20042010280200360200200620062903b8033703e00320062903c803210c410421080c010b2004200641a8036a41086a280200360200200620062903a8033703e0030b201a20062903e003370200201a41086a2004280200360200200641003a00a403200620073602fc02200620163602f802200620233602a0032006200c370390032006200836028c03200620064188026a36029c032006200641e8016a36029803200641b8036a200641f8026a2017108f02024020062802c0034102460d0020062802b803200628028003470d00201a201510880121082006410120062d00a40320081b22083a00a403200641b8036a200710de0120063502c00342208620062802b8032209ad841004024020062802bc03450d00200910290b200641b8036a200710d90120063502c00342208620062802b8032209ad841004024020062802bc03450d00200910290b0240200710900241ff017122094102460d002009410171450d0010e8010b200841ff0171450d00200628029403220f41027421084101210d200628028c032109200628028003210220062802f80221052006280284032207210b02400340024020080d00200620072005200720054b1b360284030c020b200d417f6a210d2008417c6a2108200b20054b210e200b20092802006b210b200941046a2109200e0d000b200f21080240200f200e200d6b2209490d002006200936029403200921080b200620072005200720054b1b3602840341000d002002200f6b2209200220086b4f0d00200f20086b210b20062802fc0221080340201f200841186a2900003703002012200841106a2900003703002010200841086a290000370300200620082900003703b803200620093602d803200641f0036a200641b8036a10dd0120063502f80342208620062802f003220dad841004024020062802f403450d00200d10290b200941016a2109200b417f6a220b0d000b0b200641b8036a20062802fc0210dc0120062802b8032108200620062802c0033602f403200620083602f003201a200641f0036a108e0220062802bc03450d00200810290b20062802900341ffffffff0371450d01200628028c0310290c010b200920083600000240200941104120102b2208450d002008200a2028a7417f201d428080808080c0b2cd3b541b201d20284280ec94a37c7e7c4280cab5ee01566aad7c220c3700042008410c6a202a200c200a54ad7c221d370000202c422086200bad842008ad4280808080c00284100320081029024020062802fc02450d00200b10290b20064188026a200710dc01200641b8036a200628028802220920062802900210e00120042010280200360200200620062903b8033703e003024020062802c4032208450d00200641e8016a41086a2004280200360200200620062903e0033703e80120062903c803210a0b0240200628028c02450d00200910290b0240024020080d00200642003703c80320064280808080c0003703c003200620163602bc03200641003602b80320064188026a200710dc01200628028802210820062006280290023602f403200620083602f003200641b8036a200641f0036a108e020240200628028c02450d00200810290b200641f0036a41086a2010280200360200200620062903b8033703f00320062903c803210a410421080c010b200641f0036a41086a200641e8016a41086a280200360200200620062903e8013703f0030b201a20062903f003370200201a41086a222d200641f0036a41086a280200360200200641003a00a403200620073602fc02200620163602f802200620233602a0032006200a370390032006200836028c032006200641b8026a36029c032006200641a8026a36029803200641e8006a200641f8026a2017200c201d10910202400240024020062802684101470d00200628026c200628028003460d010b20062d00a40321080c010b201a201510880121082006410120062d00a40320081b22083a00a403200641b8036a200710de0120063502c00342208620062802b8032209ad841004024020062802bc03450d00200910290b200641b8036a200710d90120063502c00342208620062802b8032209ad841004024020062802bc03450d00200910290b200710900241ff017122094102460d002009410171450d0010e8010b0240200841ff0171450d00200628029403222e41027421084101210d200628028c032109200628028003212f20062802f80221052006280284032202210b02400340024020080d00200620022005200220054b1b360284030c020b200d417f6a210d2008417c6a2108200b20054b210e200b20092802006b210b200941046a2109200e0d000b202e21080240202e200e200d6b2209490d002006200936029403200921080b200620022005200220054b1b3602840341000d00202f202e6b2209202f20086b4f0d00202e20086b210b20062802fc0221080340201f200841186a2900003703002012200841106a2900003703002010200841086a290000370300200620082900003703b803200620093602d80320064188026a200641b8036a10dd01200635029002422086200628028802220dad8410040240200628028c02450d00200d10290b200941016a2109200b417f6a220b0d000b0b200641b8036a20062802fc0210dc0120062802b8032108200620062802c00336028c022006200836028802201a20064188026a108e0220062802bc03450d00200810290b024020062802900341ffffffff0371450d00200628028c0310290b200641003602d002200642083703c802200642003703f001200642003703e801200641c8026a4100200741c8006a220828020010900102400240200828020022080d004200210a20062802d002210e20062802c802210d4200211d0c010b20072802402202200841306c6a2130200fad212a034020064200370390022006420037038802200641c0006a2002290300221d200241086a290300428094ebdc03420010e007200641306a2006290340220c200641c0006a41086a290300220a4280ec94a37c427f10d507200641206a200c200a202a420010d507200641106a200c200a2029420010d507200641f8026a2017200241106a220f10d501200641d0006a20062802f802220920062802800310e3014200200641106a41086a2903002006290310220a2029201d20062903307c221d7e220c428094ebdc03802228a7417f200c428080808080c0b2cd3b541b200c20284280ec94a37c7e7c4280cab5ee01566aad7c220c200a54ad7c220a200641206a41086a29030020062903202228202a201d7e221d428094ebdc0380222ca7417f201d428080808080c0b2cd3b541b201d202c4280ec94a37c7e7c4280cab5ee01566aad7c221d202854ad7c7d200c201d54ad7d2228200c201d7d221d200c562028200a562028200a511b22081b210a4200201d20081b210c200641d0006a41106a290300211d2006290358212820062802502108024020062802fc02450d00200910290b200641b8036a2017200f10d50120062802b803210920063502c003212c20062028420020081b2228200c7c220c3703f8022006201d420020081b200a7c200c202854ad7c220a37038003202c4220862009ad8420251003024020062802bc03450d00200910290b200641f0036a200f10dc01200641b8036a20062802f003220920062802f80310e00120042010280200360200200620062903b8033703e003024020062802c4032208450d00200641a8036a41086a2004280200360200200620062903e0033703a80320062903c80321310b024020062802f403450d00200910290b0240024020080d00200642003703c80320064280808080c0003703c003200620163602bc03200641003602b803200641f0036a200f10dc0120062802f0032108200620062802f8033602e403200620083602e003200641b8036a200641e0036a108e02024020062802f403450d00200810290b20042010280200360200200620062903b8033703e00320062903c803211d410421080c010b2004200641a8036a41086a280200360200200620062903a8033703e0032031211d0b201a20062903e003370200202d2004280200360200200641003a00a4032006200f3602fc02200620163602f802200620233602a0032006201d370390032006200836028c03200620064188026a36029c032006200641e8016a36029803200641086a200641f8026a2017200c200a1091020240024020062802084101470d00200628020c200628028003470d00201a201510880121082006410120062d00a40320081b22083a00a4030c010b20062d00a40321080b0240200841ff0171450d00200628029403222f41027421084101210d200628028c032109200628028003213220062802f8022105200628028403222e210b02400340024020080d002006202e2005202e20054b1b360284030c020b200d417f6a210d2008417c6a2108200b20054b210e200b20092802006b210b200941046a2109200e0d000b202f21080240202f200e200d6b2209490d002006200936029403200921080b2006202e2005202e20054b1b3602840341000d002032202f6b2209203220086b4f0d00202f20086b210b20062802fc0221080340201f200841186a2900003703002012200841106a2900003703002010200841086a290000370300200620082900003703b803200620093602d803200641f0036a200641b8036a10dd0120063502f80342208620062802f003220dad841004024020062802f403450d00200d10290b200941016a2109200b417f6a220b0d000b0b200641b8036a20062802fc0210dc0120062802b8032108200620062802c0033602f403200620083602f003201a200641f0036a108e0220062802bc03450d00200810290b024020062802900341ffffffff0371450d00200628028c0310290b200241306a2102200f41086a290000210c200f290000210a2018200f41186a2900003703002019200f41106a290000370300201a200c3703002006200a3703f80220064188026a41086a290300210c200629038802210a024020062802d002220920062802cc02470d00200641c8026a2009410110900120062802d00221090b20062802c802220d200941306c6a2208200a370320200820062903f802370300200841286a200c370300200841086a201a290300370300200841106a2019290300370300200841186a20182903003703002006200941016a220e3602d00220022030470d000b200641e8016a41086a290300211d20062903e801210a0b201c290300212820062903a802210c200641e8016a41086a2208200741086a290300370300200641e8016a41106a2209200741106a290300370300200641e8016a41186a220b200741186a290300370300200620072903003703e801200d450d01201e290300212920062903b802212a20062802cc02212f20064188026a41186a2202200b29030037030020064188026a41106a222e200929030037030020064188026a41086a22322008290300370300200620062903e80137038802024002402007280258220541ffffff3f712005470d002005410574220b417f4c0d002007280250210802400240200b0d00410121090c010b200b10272209450d060b2006410036028003200620093602f8022006200b4105763602fc02200641f8026a41002005109e01200628028003210f0240024020050d0020062802f80221300c010b20062802f8022230200f4105746a2109034020092008290000370000200941186a200841186a290000370000200941106a200841106a290000370000200941086a200841086a290000370000200941206a2109200841206a2108200b41606a220b0d000b200541057441606a410576200f6a41016a210f0b20062802fc02212d201f20022903003703002012202e2903003703002010203229030037030020062006290388023703b803201b10012208290000212c201c200841086a2900003703002006202c3703a802200810294198fbc100ad428080808080028410012208290000212c201e200841086a2900003703002006202c3703b80220081029200620153602a80320062024100222082900003703e003200810292006202736028403200620043602fc022006200641a8036a360280032006200641e0036a3602f802200641f0036a200641f8026a107520062802f803220741206a2209417f4c0d0020062802f00321020240024020090d0041002108410121050c010b200910272205450d06200921080b024002402008410f4d0d002008210b0c010b2008410174220b4110200b41104b1b220b4100480d02024020080d00200b102722050d010c040b2008200b460d0020052008200b102b2205450d030b200520062903a802370000200541086a201c29030037000002400240200b4170714110460d00200b21080c010b200b41017422084120200841204b1b22084100480d02200b2008460d002005200b2008102b2205450d030b200520062903b802370010200541186a201e29030037000002400240200841606a2007490d002008212e0c010b2007415f4b0d022008410174220b2009200b20094b1b222e4100480d022008202e460d0020052008202e102b2205450d030b200c200a7c220a200c542108200541206a2002200710e4071a024020062802f403450d00200210290b200ead210c2028201d7c211d2008ad2128200641f8026a2005200910fe010240024020062802f80222070d0041002102200641003602c002200642083703b802410821074100210b0c010b200620062902fc02222c3702bc02200620073602b802202c422088a7210b202ca721020b200c42c097e8b2017e210c201d20287c211d2018201f29030037030020192012290300370300201a2010290300370300200620062903b8033703f8020240200b2002470d00200641b8026a200b4101108c0120062802bc02210220062802b802210720062802c002210b0b200c20147c210c2007200b41d8006c22326a2208200a370310200820293703082008202a3703002008203036022c2008200d360220200841186a201d370300200841346a200f360200200841306a202d360200200841286a200e360200200841246a202f360200200820062903f802370338200841c0006a201a290300370300200841c8006a2019290300370300200841d0006a20182903003703002006200b41016a22083602c0020240024020070d002009ad4220862005ad8410040c010b200641f8026a2007200810ed012009ad4220862005ad8420063502800342208620062802f8022209ad841003024020062802fc02450d00200910290b02402008450d00200741306a2108203241d8006a210903400240200841746a280200220b450d00200b41306c450d00200841706a28020010290b0240200828020041ffffff3f71450d002008417c6a28020010290b200841d8006a2108200941a87f6a22090d000b0b2002450d00200241d8006c450d00200710290b200c42c097e8b2017c210c0240202e450d00200510290b200c42c0b2cd3b7c21140c040b1038000b1032000b1030000b201442808c8d9e027c21140b20132022490d010c030b0b1039000b4200211142c0d1e1232114200c42ffffffff0183500d01200e10290c010b202042ffffff3f83500d00202110290b200020143703082000201137030020064180046a24000bb10201067f230041206b22022400024002402001422088a722030d00410121040c010b2001a721040b200220033602142002200436021002402003450d0020042d0000210520022003417f6a3602142002200441016a360210200541014b0d0041002106024002400240024020050e020100010b200241086a200241106a10c80120022802080d0320022802142205200228020c2203490d032003417f4c0d010240024020030d0042002101410121060c010b2003102d2206450d03200620022802102207200310e4071a2002200520036b3602142002200720036a3602102003ad21010b2006450d0320012003ad4220868421010b200020013702042000200636020020041029200241206a24000f0b1038000b1039000b41e891cc00412e200241186a419893cc00419892cc00103a000bbd0101047f230041106b22022400200028020421032000280200210041012104200128021841acb9c40041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41c0a3c80010631a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d0020022802002200280218419cc9c00041012000411c6a28020028020c11000021040b200241106a240020040bbf0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a1096020240024020022802480d0020024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110290b200241e0006a24000b8f0301067f230041106b220224002002410036020820024201370300200028020021030240410410272204450d002004200336000020024284808080c0003702042002200436020020002802042103200441044108102b2204450d00200420033600042002428880808080013702042002200436020020002802082103200441084110102b2204450d002004200336000820024290808080c00137020420022004360200200028020c2105200041146a28020022002002107102400240024020022802042206200228020822046b20004102742203490d0020022802002100200621070c010b200420036a22002004490d01200641017422072000200720004b1b22074100480d010240024020060d00024020070d00410121000c020b2007102722000d010c040b2002280200210020062007460d00200020062007102b2200450d030b20022007360204200220003602000b200020046a2005200310e4071a2001290200200420036aad4220862000ad84100302402007450d00200010290b200241106a24000f0b1032000b1030000bbd0101057f2001280208210302402001410c6a280200220420024b0d002000410036020820002004ad4220862003ad843702000f0b024002402001411c6a2802002205450d00200141146a2802002101200541027421062003417f6a2103034002402004200128020022076b220520024b0d00200420024b0d030b200141046a21012003417f6a2103200521042006417c6a22060d000b0b200041023602080f0b2000200736020c2000410136020820002005ad4220862003ad843702000b8d0e07047f017e047f017e047f017e017f23004190016b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a220342003703002001420037036041b1dcc900ad4280808080f000841001220429000021052003200441086a290000370300200120053703602004102941b8dcc900ad4280808080a00184100122042900002105200141d0006a41086a2206200441086a2900003703002001200537035020041029200220012903502205370300200141306a41086a2003290300370300200141306a41106a2005370300200141306a41186a200629030037030020012001290360370330200141e0006a200141306a108d0220012802602203410120031b210741022108024002402001290264420020031b2205422088a72203450d002003410574210241002104200721030240034020002003460d01200420032000412010e70722064100476a21042006450d01200341206a2103200241606a22020d000c020b0b200141e0006a41186a4200370300200141e0006a41106a22094200370300200141e0006a41086a220042003703002001420037036041b1dcc900ad4280808080f0008410012202290000210a200141d0006a41086a2203200241086a2900003703002001200a370350200210292000200329030037030020012001290350370360419887ca00ad4280808080a0028410012202290000210a2003200241086a2900003703002001200a3703502002102920092001290350220a370300200141306a41086a2000290300370300200141306a41106a200a370300200141306a41186a200329030037030020012001290360370330200141206a200141306a108f030240024002402001280220220b0d004100210c20014100360218200142043703104104210b4100210d410021030c010b2001290224210a2001200b3602102001200a370214200aa7210d4100210302400240200a422088a7220c41014b0d00200c0e020201020b200c2100034020032000410176220220036a22062004200b20064102746a280200491b2103200020026b220041014b0d000b0b4100210802402004200b20034102746a2802002200470d00410021060c020b2003200420004b6a21030b200141e0006a41186a22084200370300200141e0006a41106a220e4200370300200141e0006a41086a220242003703002001420037036041b1dcc900ad4280808080f0008410012206290000210a200141d0006a41086a2200200641086a2900003703002001200a37035020061029200220002903003703002001200129035037036041b8dcc900ad4280808080a0018410012206290000210a2000200641086a2900003703002001200a3703502006102920092001290350370000200941086a2000290300370000200141306a41086a2002290300370300200141306a41106a200e290300370300200141306a41186a20082903003703002001200129036037033041002100200141d4006a41003a000020014100360250200141086a200141306a4120200141d0006a4105410010c70102402001280208450d002001200128020c2200410520004105491b3602642001200141d0006a3602602001200141e0006a10c8014100200128020420012802001b21000b20002000418094ebdc036e22024180ec94a37c6c6aad4280fd87d1007e220f428094ebdc0380210a200c2003490d0220024180fd87d1006c200f200a4280ec94a37c7e7c4280cab5ee015672200aa76a21020240200c200d470d00200141106a200d41011098012001280214210d2001280210210b0b200b20034102746a220041046a2000200c20036b41027410e5071a20002004360200410121062001200c41016a220c360218200c20024b21080b200141e0006a41186a220e4200370300200141e0006a41106a22104200370300200141e0006a41086a220042003703002001420037036041b1dcc900ad4280808080f0008410012202290000210a200141d0006a41086a2203200241086a2900003703002001200a370350200210292000200329030037030020012001290350370360419887ca00ad4280808080a0028410012202290000210a2003200241086a2900003703002001200a3703502002102920092001290350370000200941086a2003290300370000200141306a41086a2000290300370300200141306a41106a2010290300370300200141306a41186a200e2903003703002001200129036037033002400240200b0d00200141306aad428080808080048410040c010b200141203602642001200141306a360260200b200c200141e0006a10a304200d41ffffffff0371450d00200b10290b2006450d00200141e8006a2004ad37030020014102360260200141e0006a10e1062001410136026020012004360264200141e0006a10d0030b0240200542ffffff3f83500d00200710290b20014190016a240020080f0b2003200c1041000b9a0d04047f017e027f067e230041d0026b22052400200541c8016a20012002108f0202400240024002400240024020052802d0014102460d0020052802c8012106200541c8016a41086a2001280204220741086a290000370300200541c8016a41106a200741106a290000370300200541c8016a41186a200741186a290000370300200520063602e801200520072900003703c801200541f0016a200541c8016a10dd0120052802f0012108200520052802f801220736028402200520083602800220054188026a2007ad4220862008ad841007108b020240024020052802880222070d00420021090c010b200528028c02210a02400240024020054188026a41086a280200220b4110490d00200b4170714110470d010b200541003602a00220054201370398022005410d3602ac02200520054180026a3602a802200520054198026a3602b402200541cc026a4101360200200542013702bc02200541f4eaca003602b8022005200541a8026a3602c802200541b4026a41a8a3c800200541b8026a10371a20053502a0024220862005350298028410080240200528029c02450d0020052802980210290b420021090c010b200741186a290000210c200741086a290000210d2007290010210e2007290000210f420121090b200a450d00200710290b200d4200200942005222071b210d200f420020071b210f024020052802f401450d00200810290b200c420020071b210c200e420020071b210e200f200354200d200454200d2004511b0d01200f200385200d2004858450450d03200541b8016a20032004428094ebdc03420010e007200541a8016a20052903b801220d200541b8016a41086a290300220f4280ec94a37c427f10d50720054198016a200d200f20013502282209420010d50720054188016a4200200529039801220f200920052903a80120037c7e220d428094ebdc03802209a7417f200d428080808080c0b2cd3b541b200d20094280ec94a37c7e7c4280cab5ee01566aad7c220d200e7d22092009200d5620054198016a41086a290300200d200f54ad7c220f200c7d200d200e54ad7d220d200f56200d200f511b22021b220f4200200d20021b428094ebdc03420010e007200541f8006a200529038801220d20054188016a41086a29030022094280ec94a37c427f10d507200541e8006a200d20094280cab5ee01420010d507200541e8006a41086a29030020052903682209200f20052903787c220d420188220fa7417f200d4280cab5ee017e220d428080808080c0b2cd3b541b200d200f4280ec94a37c7e7c4280cab5ee01566aad7c220d200954ad7c210f410021020c020b410021010c040b200541c8006a20032004428094ebdc03420010e007200541d8006a20032004428094ebdc03420010d607200541386a2005290348200541c8006a41086a29030020013502282209420010d507200541286a420020052903382210200920052903587e2209428094ebdc03802211a7417f2009428080808080c0b2cd3b541b200920114280ec94a37c7e7c4280cab5ee01566aad7c2209200e7d22112011200956200541386a41086a2903002009201054ad7c2210200c7d2009200e54ad7d220920105620092010511b22071b22104200200920071b428094ebdc03420010e007200541186a20052903282209200541286a41086a29030022114280ec94a37c427f10d507200541086a200920114280cab5ee01420010d507200128022422072003200f7d220920072903007c2211370300200741086a22072004200d7d2003200f54ad7d20072903007c2011200954ad7c370300200141106a2207200728020022072002200720024b1b360200200541086a41086a2903002005290308220f201020052903187c220d4201882209a7417f200d4280cab5ee017e220d428080808080c0b2cd3b541b200d20094280ec94a37c7e7c4280cab5ee01566aad7c220d200f54ad7c210f410121020b02400240200d200f84500d002001280220220220022903002209200d7c2210370300200241086a22022002290300200f7c2010200954ad7c370300200c200f7c200e200d7c220d200e54ad7c210c200d210e0c010b2002450d010b200141013a002c200541b8026a200541c8016a10dd0120053502c002210d20052802b8022102411010272201450d012001200337000020012004370008200141104120102b2201450d012001200e370010200141186a200c370000200d4220862002ad842001ad428080808080048410032001102920052802bc02450d00200210290b410121010c010b1030000b2000200636020420002001360200200541d0026a24000bfc0403027f017e057f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e0f9c100ad4280808080e00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f4f8c100ad4280808080b00284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000ba65a0f047f017e017f017e027f017e057f027e017f017e037f017e087f047e047f230041d0046b22022400200241e0006a41186a22034200370300200241e0006a41106a22044200370300200241e0006a41086a220542003703002002420037036041eebec500ad4280808080f000842206100122072900002108200241e0026a41086a2209200741086a290000370300200220083703e0022007102920052009290300370300200220022903e00237036041c4f5c100ad4280808080a0018422081001220a290000210b200241a0036a41086a2207200a41086a2900003703002002200b3703a003200a1029200420022903a003220b37030020024180046a41086a220c200529030037030020024180046a41106a220d200b37030020024180046a41186a220e20072903003703002002200229036037038004200241306a20024180046a412010fc012002280230210f200228023421102003420037030020044200370300200542003703002002420037036020061001220a290000210b2009200a41086a2900003703002002200b3703e002200a102920052009290300370300200220022903e00237036020081001220a29000021082007200a41086a290000370300200220083703a003200a1029200420022903a0032208370300200c2005290300370300200d2008370300200e2007290300370300200220022903603703800441012105410021032002201041016a4100200f1b220a36026020024180046aad42808080808004842211200241e0006aad22124280808080c00084100320061001220d29000021062009200d41086a290000370300200220063703e002200d102941b8f6c100ad4280808080d002841001220929000021062007200941086a290000370300200220063703a003200910292002200a3602e0032002200241e0036aad4280808080c00084100222092900003703800420091029200241ec006a200241e4036a3602002002200c3602642002200241e0036a360268200220024180046a360260200241a0026a200241e0006a107502400240024002400240024002400240024002400240024002400240024020022802a802220d41206a220c417f4c0d0020022802a002210e0240200c450d00200c10272205450d07200c21030b024002402003410f4d0d00200321070c010b200341017422094110200941104b1b22074100480d0b024020030d002007102722050d010c100b20032007460d00200520032007102b2205450d0f0b200520022903e002370000200541086a200241e0026a41086a2903003700000240024020074170714110460d00200721090c010b200741017422094120200941204b1b22094100480d0b20072009460d00200520072009102b2205450d0f0b200520022903a003370010200541186a200241a0036a41086a29030037000002400240200941606a200d490d00200921070c010b200d41206a2207200d490d0b200941017422032007200320074b1b22074100480d0b20092007460d00200520092007102b2205450d0f0b200541206a200e200d10e4071a024020022802a402450d00200e10290b20022001360260200cad4220862005ad8420124280808080c00084100302402007450d00200510290b200241e0006a41186a22034200370300200241e0006a41106a22134200370300200241e0006a41086a220542003703002002420037036041eebec500ad4280808080f000842206100122072900002108200241e0026a41086a2209200741086a290000370300200220083703e0022007102920052009290300370300200220022903e00237036041c8f2c100ad4280808080c001841001220c2900002108200241a0036a41086a2207200c41086a290000370300200220083703a003200c1029200420022903a003370000200441086a200729030037000020024180046a41086a200529030037030020024180046a41106a201329030037030020024180046a41186a20032903003703002002200229036037038004200241286a20024180046a412010fc010240200a200228022c41016a41d50020022802281b6b220c200a4b0d00200c1095020b2002200a36023c2003420037030020134200370300200542003703002002420037036020061001220a29000021062009200a41086a290000370300200220063703e002200a102920052009290300370300200220022903e0023703604180ffc100ad4280808080d001841001220929000021062007200941086a290000370300200220063703a00320091029201320022903a0032206370300200241c0006a41086a2005290300370300200241c0006a41106a2006370300200241c0006a41186a200729030037030020022002290360370340200241203602e4012002200241c0006a3602e001200241e8016a200241c0006aad428080808080048422141007108b0220022802e8012215450d0520022802ec0121162002200241e8016a41086a2802003602fc01200220153602f801200241e0006a200241f8016a10960220022802602217450d03200241e0006a41086a350200211820022802642119200241206a200241f8016a10c80120022802200d012002280224221a20022802fc01220741d0006e22052005201a4b1bad42d0007e2206422088a70d002006a72205417f4c0d000240024020050d004108211b0c010b20051027221b450d070b4100210a20024100360288022002201b360280022002200541d0006e221c360284020240201a450d00200241a4046a211d200241e0006a41206a211e4100210a4100210302400340200241003a00c003200341016a210341002105024002400240034020072005460d01200241a0036a20056a20022802f80122092d00003a00002002200941016a3602f8012002200541016a22093a00c0032009210520094120470d000b200241e0036a41086a2205200241a0036a41086a220c290300370300200241e0036a41106a220d200241a0036a41106a220e290300370300200241e0036a41186a2201200241a0036a41186a220f290300370300200220022903a0033703e0032002200720096b3602fc0120024180046a200241f8016a10830220022802a00422090d01410021090c020b200241003602fc010240200541ff0171450d00200241003a00c0030b410021090c010b201e200229038004370300200241e0006a41186a22072001290300370300200241e0006a41106a2201200d290300370300200241e0006a41086a220d2005290300370300201e41086a20024180046a41086a290300370300201e41106a20024180046a41106a290300370300201e41186a20024180046a41186a290300370300200241b0046a41086a201d41086a280200360200200220022903e0033703602002201d2902003703b004200241a0036a41386a200241e0006a41386a290300370300200241a0036a41306a200241e0006a41306a290300370300200241a0036a41286a200241e0006a41286a290300370300200241a0036a41206a201e290300370300200f2007290300370300200e2001290300370300200c200d290300370300200220022903603703a0030b200241e0026a41386a2205200241a0036a41386a290300370300200241e0026a41306a2207200241a0036a41306a290300370300200241e0026a41286a220c200241a0036a41286a290300370300200241e0026a41206a220d200241a0036a41206a290300370300200241e0026a41186a220e200241a0036a41186a290300370300200241e0026a41106a2201200241a0036a41106a290300370300200241e0026a41086a220f200241a0036a41086a290300370300200241c0046a41086a2210200241b0046a41086a280200360200200220022903a0033703e002200220022903b0043703c00402402009450d00200241a0026a41386a221f2005290300370300200241a0026a41306a22202007290300370300200241a0026a41286a2207200c290300370300200241a0026a41206a220c200d290300370300200241a0026a41186a220d200e290300370300200241a0026a41106a220e2001290300370300200241a0026a41086a2201200f29030037030020024190026a41086a220f2010280200360200200220022903e0023703a002200220022903c004370390020240200a200228028402470d0020024180026a200a410110ac01200228028002211b200228028802210a0b201b200a41d0006c6a220520022903a002370300200e2903002106200d2903002108200c290300210b2007290300212120202903002122201f29030021232001290300212420052009360240200541086a20243703002005200229039002370244200541cc006a200f280200360200200541386a2023370300200541306a2022370300200541286a2021370300200541206a200b370300200541186a2008370300200541106a20063703002002200a41016a220a360288022003201a460d0220022802fc0121070c010b0b0240200a450d00200a41d0006c2109201b41c4006a21050340024020052802002207450d00200741306c450d002005417c6a28020010290b200541d0006a2105200941b07f6a22090d000b0b2002280284022205450d03200541d0006c450d03201b10290c030b200228028402211c0b201b450d010240024020022802fc012205450d0020022005417f6a3602fc01200220022802f801220541016a3602f80120052d000022094103490d010b0240200a450d00200a41d0006c2109201b41c4006a21050340024020052802002207450d00200741306c450d002005417c6a28020010290b200541d0006a2105200941b07f6a22090d000b0b0240201c450d00201c41d0006c450d00201b10290b201941ffffff3f71450d040c030b20184220862019ad8421230c040b1038000b201941ffffff3f71450d010b201710290b200241003602a803200242013703a0032002410d3602e4022002200241e0016a3602e0022002200241a0036a3602a002200241f4006a410136020020024201370264200241f4eaca003602602002200241e0026a360270200241a0026a41a8a3c800200241e0006a10371a20023502a80342208620023502a003841008024020022802a403450d0020022802a00310290b410321090b02402016450d00201510290b20094103460d00201410040c040b200241003602c804200242083703c004200241003602b804200242013703b00441eebec500ad4280808080f00084100122052900002106200241e0026a41086a2209200541086a290000370300200220063703e0022005102941b8dcc900ad4280808080a00184100122052900002106200241a0036a41086a2207200541086a290000370300200220063703a00320051029412010272205450d00200520022903e002370000200520022903a003370010200541086a2009290300370000200541186a220a2007290300370000412010272209450d0020092005290000370000200941186a200a290000370000200941106a200541106a290000370000200941086a200541086a290000370000200241c0006a41026a220a200241e0006a41026a2d00003a0000200220022f00603b0140200241e0036a41106a42a0808080800437030041002107200241003a00f803200220053602ec03200242a080808080043702e403200220093602e003200241fb036a200a2d00003a0000200220022f01403b00f903200241e0006a200241e0036a10b601024020022802604101470d00200241e0006a410472210a410121154108211a410021030340200241a0036a41206a200a41206a280200360200200241a0036a41186a2205200a41186a2902002206370300200241a0036a41106a2209200a41106a2902002208370300200241a0036a41086a221f200a41086a290200220b3703002002200a29020022213703a003200241a0026a41186a22012006370300200241a0026a41106a220f2008370300200241a0026a41086a2210200b370300200220213703a002200241e0006a41186a220c2005290300370300200241e0006a41106a220d2009290300370300200241e0006a41086a220e201f290300370300200220022903a003370360200241a0026a10e1012106412010272209450d0a200920022903a002370000200941186a2001290300370000200941106a200f290300370000200941086a2010290300370000200241e0026a41086a200e2903002208370300200241e0026a41106a200d290300220b370300200241e0026a41186a200c29030022213703002002200229036022223703e00220024180046a41186a221f202137030020024180046a41106a2220200b37030020024180046a41086a221e200837030020022022370380040240200320022802c404470d00200241c0046a2003410110a80120022802c004211a20022802c80421030b201a200341386c6a22052006370300201e290300210620202903002108201f290300210b20022903800421212005412c6a4281808080103702002005200936022820052021370308200541206a200b370300200541186a2008370300200541106a20063703002002200341016a22033602c804200c2001290300370300200d200f290300370300200e2010290300370300200220022903a0023703600240200720022802b404470d00200241b0046a20074101109e0120022802b004211520022802b80421070b201520074105746a22052002290360370000200541186a200c290300370000200541106a200d290300370000200541086a200e2903003700002002200741016a22073602b804200241e0006a200241e0036a10b60120022802604101460d000b0b024020022802e403450d0020022802e00310290b024020022802f003450d0020022802ec0310290b41eebec500ad4280808080f00084100122052900002106200241e0026a41086a2209200541086a290000370300200220063703e0022005102941f5b7c000ad4280808080a00184100122052900002106200241a0036a41086a2207200541086a290000370300200220063703a00320051029412010272205450d00200520022903e002370000200520022903a003370010200541086a2009290300370000200541186a220a2007290300370000412010272209450d0020092005290000370000200941186a200a290000370000200941106a200541106a290000370000200941086a200541086a290000370000200241a0026a41026a220a200241e0006a41026a2d00003a0000200220022f00603b01a002200241e0006a41106a220742a080808080043703002002200536026c200242a0808080800437026420022009360260200241003a0078200241fb006a200a2d00003a0000200220022f01a0023b0079200241c0046a200241e0006a109702200241e0006a41186a220a420037030020074200370300200241e0006a41086a220542003703002002420037036041eebec500ad4280808080f000842206100122092900002108200241e0026a41086a2203200941086a290000370300200220083703e0022009102920052003290300370300200220022903e002370360419cf3c100ad4280808080e001841001220c2900002108200241a0036a41086a2209200c41086a290000370300200220083703a003200c1029201320022903a003370000201341086a220d2009290300370000200241c0006a41086a220e2005290300370300200241c0006a41106a22012007290300370300200241c0006a41186a220f200a29030037030020022002290360370340200241186a200241c0006a412010fc01200228021c21102002280218211f200a420037030020074200370300200542003703002002420037036020061001220c29000021062003200c41086a290000370300200220063703e002200c102920052003290300370300200220022903e00237036041c4f3c100ad4280808080d002841001220329000021062009200341086a290000370300200220063703a00320031029201320022903a003370000200d2009290300370000200e200529030037030020012007290300370300200f200a29030037030020022002290360370340200241106a200241c0006a412010fc01200228021421072002280210210a2009200241b0046a41086a280200360200200220022903b0043703a0032005200241c0046a41086a280200360200200220022903c00437036020024180046a20104100201f1b20074104200a1b22054101200541014b1b200241a0036a200241e0006a109802024020022802800422250d00410321090c040b20024194046a280200210a20024180046a41106a28020021262002418c046a280200212720024180046a41086a280200210520022802840421282002410036026820024201370360200241e0006a4100200541306c220741306e109e012002280268210c0240024020070d00200228026021170c010b20022802602217200c4105746a210520252109034020052009290000370000200541186a200941186a290000370000200541106a200941106a290000370000200541086a200941086a290000370000200c41016a210c200541206a2105200941306a2109200741506a22070d000b0b200235026421242002410036029802200242043703900220024190026a4100200a412c6c2205412c6d109301202720056a2101200228029802210e20022802900221190240200a0d00202721050c020b200241e0006a410c6a210a2019200e412c6c6a2109200241a0036a410c6a210d200241e0006a4104722103200241e0026a41206a210f200241e0026a41186a2110200241e0026a41106a211f200241e0026a41086a212020272105034020052802002107200f200541246a29020037030020102005411c6a290200370300201f200541146a29020037030020202005410c6a2902003703002002200541046a2902003703e002024020070d002005412c6a21050c030b200320022903e002370200200341086a2020290300370200200341106a201f290300370200200341186a2010290300370200200341206a200f29030037020020022007360260200a10e1012106200241e0036a41086a221e200a41086a290200370300200241e0036a41106a2215200a41106a290200370300200241e0036a41186a221a200a41186a2902003703002002200a2902003703e003200228026421162002280268211d200242003703b804200220063703b004200242003703482002420037034020022007201d41246c6a3602ac02200220073602a802200220163602a402200220073602a0022002200241c0006a3602b4022002200241b0046a3602b002200241c0046a200241a0026a1099020240024020022903b0042206200229034022087d222320065620022903b804220b200229034822217d2006200854ad7d2222200b562022200b511b4101470d00200820067d22222008562021200b7d2008200654ad7d220620215620062021511b0d0120022802c8042207450d01200741306c20022802c0046a41706a220742002007290300220820227d220b200b200856200741086a2207290300220b20067d2008202254ad7d2206200b562006200b511b22161b37030020074200200620161b3703000c010b20022802c8042207450d00200741306c20022802c0046a41706a2207427f2007290300220620237c220820082006542216200741086a2207290300220620227c2016ad7c220820065420082006511b22161b3703002007427f200820161b3703000b200d20022903e003370200200241a0036a41086a2207200241c0046a41086a280200360200200d41186a201a290300370200200d41106a2015290300370200200d41086a201e290300370200200220022903c00422063703a003200941286a200241a0036a41286a280200360200200941206a200241a0036a41206a290300370200200941186a200241a0036a41186a290300370200200941106a200241a0036a41106a290300370200200941086a200729030037020020092006370200200e41016a210e2009412c6a21092005412c6a22052001470d000b2002200e360298020c020b1039000b2002200e3602980220052001460d00034020052209412c6a21050240200941046a2802002207450d00200741246c450d00200928020010290b20012005470d000b0b02402026450d002026412c6c450d00202710290b2002280294022103200241e0006a2017200c2019200e109a02024002402002280260220a0d00410021054100210a4100210d0c010b2002280268210d02400240200228026422090d00200a21050c010b20092105200a2107034020072802c80521072005417f6a22050d000b200a21050340200520052f01064102746a41c8056a28020021052009417f6a22090d000b2007210a0b20052f010621090b200241fc006a2009360200200241f8006a4100360200200241f4006a20053602002002200d3602800120024100360270200242003703682002200a36026420024100360260200cad2106200220024180026a36028401200241a0036a200241e0006a109b0220022802a003211b20022802a403211c20022802a803210a0240200e450d00200e412c6c21092019210503400240200541046a2802002207450d00200741306c450d00200528020010290b2005412c6a2105200941546a22090d000b0b2006422086210602402003450d002003412c6c450d00201910290b20062024842123410021092028450d00202841306c450d00202510290b200241e0006a41186a22074200370300200241e0006a41106a22034200370300200241e0006a41086a220542003703002002420037036041eebec500ad4280808080f0008422081001220c2900002106200241e0026a41086a220d200c41086a290000370300200220063703e002200c10292005200d290300370300200220022903e00237036041d0ffc100ad4280808080b001841001220c2900002106200241a0036a41086a220e200c41086a290000370300200220063703a003200c1029201320022903a003370000201341086a200e290300370000200241c0006a41086a2005290300370300200241c0006a41106a2003290300370300200241c0006a41186a200729030037030020022002290360370340201410044100210c20094103460d03200220093a00e801200742003703002003420037030020054200370300200242003703602008100122092900002106200d200941086a290000370300200220063703e002200910292005200d290300370300200220022903e00237036041eab8c000ad4280808080900284100122092900002106200e200941086a290000370300200220063703a00320091029200420022903a003370000200441086a200e29030037000020024180046a41086a200529030037030020024180046a41106a200329030037030020024180046a41186a20072903003703002002200229036037038004410110272205450d04200541003a000020112005ad4280808080108410032005102942002108200241e0006a41186a22274200370300200241e0006a41106a22264200370300200241e0006a41086a221942003703002002420037036041eebec500ad4280808080f00084220610012205290000210b200241e0026a41086a2228200541086a2900003703002002200b3703e0022005102920192028290300370300200220022903e00237036041c6b8c000ad4280808080a0028410012205290000210b200241a0036a41086a2201200541086a2900003703002002200b3703a00320051029200420022903a003370000200441086a2209200129030037000020024180046a41086a2220201929030037030020024180046a41106a221e202629030037030020024180046a41186a221520272903003703002002200229036037038004201110042027420037030020264200370300201942003703002002420037036020061001220529000021062028200541086a290000370300200220063703e0022005102920192028290300370300200220022903e00237036041d8b8c000ad4280808080a002841001220529000021062001200541086a290000370300200220063703a00320051029200420022903a0033700002009200129030037000020202019290300370300201e202629030037030020152027290300370300200220022903603703800420111004201b200a41d0006c6a211f0240200a0d00201b210d420021060c020b200241e0026a41106a211a200241a0026a41106a210f200241c4026a2104200241e0006a41206a210e4200210842002106201b210d0340200241a0036a41386a220a200d220541386a290300370300200241a0036a41306a2203200541306a290300370300200241a0036a41286a220c200541286a290300370300200241a0036a41206a2210200541206a290300370300200241a0036a41186a2209200541186a290300370300200241a0036a41106a2207200541106a2903003703002001200541086a2903003703002005290300210b200241c0046a41086a2216200541cc006a2802003602002002200b3703a0032002200541c4006a2902003703c004200541d0006a210d200541c0006a2802002205450d02200241e0006a41386a200a290300370300200241e0006a41306a2003290300370300200241e0006a41286a200c290300370300200e2010290300370300202720092903003703002026200729030037030020192001290300370300200220022903a003370360200241e0036a41186a2009290300370300200241e0036a41106a2007290300370300200241e0036a41086a2001290300370300200220022903a0033703e003200241a0026a41186a221d200e41186a290300370300200f200e41106a290300370300200241a0026a41086a2213200e41086a290300220b370300200220053602c0022002200e29030022213703a002200420022903c004370200200441086a201628020036020020024180046a200228023c200241e0036a10d70120023502880421222002280280042110200241003602e802200242013703e0022002200241a0026a360240200241c0006a200241e0026a10e5012002200f360240200241c0006a200241e0026a10e50120022802c002210520022802c8022209200241e0026a107102402009450d00200941306c210303400240024020022802e402220a20022802e80222096b4120490d0020022802e00221070c010b200941206a22072009490d04200a410174220c2007200c20074b1b220c4100480d0402400240200a0d000240200c0d00410121070c020b200c10272207450d0a0c010b20022802e0022107200a200c460d002007200a200c102b2207450d090b2002200c3602e402200220073602e0020b200720096a2207200541106a290000370000200741186a200541286a290000370000200741106a200541206a290000370000200741086a200541186a2900003700002002200941206a3602e80220022005360240200241c0006a200241e0026a10e501200541306a2105200341506a22030d000b0b20022802e402210520224220862010ad8420023502e80242208620022802e0022209ad84100302402005450d00200910290b0240200228028404450d00201010290b2015201d290300370300201e200f29030037030020202013290300370300200220022903a0023703800420022802cc02210720022802c402210a20022802c0022109024020022802c802220541c100490d0020092005410041202005676b109c0241c00021050b200241e0026a41186a2015290300370300201a201e2903003703002028202029030037030020022002290380043703e0022002200736028c0320022005360288032002200a360284032002200936028003200241b0046a200228023c200241e0036a109d0220023502b804212220022802b004211020024100360248200242013703402002200241e0026a3602900220024190026a200241c0006a10e5012002201a3602900220024190026a200241c0006a10e50120022802800321052002280288032209200241c0006a107102402009450d00200941306c21030340024002402002280244220a200228024822096b4120490d00200228024021070c010b200941206a22072009490d04200a410174220c2007200c20074b1b220c4100480d0402400240200a0d000240200c0d00410121070c020b200c10272207450d0a0c010b20022802402107200a200c460d002007200a200c102b2207450d090b2002200c360244200220073602400b200720096a2207200541106a290000370000200741186a200541286a290000370000200741106a200541206a290000370000200741086a200541186a2900003700002002200941206a360248200220053602900220024190026a200241c0006a10e501200541306a2105200341506a22030d000b0b2006200b7c200820217c220b2008542205ad7c21082002280244210920224220862010ad84200235024842208620022802402207ad84100302402009450d00200710290b2008200651210920082006542107024020022802b404450d00201010290b2005200720091b210502402002280284032209450d00200941306c450d0020022802800310290b427f200820051b2106427f200b20051b2108200d201f470d000c030b0b1032000b201f200d460d000340200d220541d0006a210d0240200541c4006a2802002209450d00200941306c450d00200541c0006a28020010290b201f200d470d000b0b0240201c450d00201c41d0006c450d00201b10290b200241a0036a200228023c10920220022802a003210520023502a803210b2002200637036820022008370360200b4220862005ad84201242808080808002841003024020022802a403450d00200510290b02402023422088a72203410574220a450d00200241a0036aad210b201721050340200241e0006a200510de01200241086a200228026022072002280268109e02200228020c410020022802081b210902402002280264450d00200710290b200241e0006a200228023c2005109f022002350268210620022802602107200241003a00a5030240024002400240200941c000490d00200941808001490d012009418080808004490d02200241053a00a503200241033a00a003200220093600a1034280808080d00021080c030b200241013a00a503200220094102743a00a00342808080801021080c020b200241023a00a503200220094102744101723b01a00342808080802021080c010b200241043a00a503200220094102744102723602a0034280808080c00021080b20064220862007ad842008200b841003024020022d00a503450d00200241003a00a5030b02402002280264450d00200710290b200541206a2105200a41606a220a0d000b0b200241e9006a20022d00e8013a0000200241e8006a220541043a0000200241043a0060200241e0006a10cb01024041002802d8a74c4103490d00200241b4036a410c360200200241ac036a410f3602002002410c3602a403200220033602e00220022002413c6a3602b0032002200241e8016a3602a8032002200241e0026a3602a00341002802888040210941002802848040210741002802dca74c210a200241a0016a41991736020020024198016a42db8080801037030020024194016a41eec5c0003602002002418c016a420e37020020024188016a41e0c5c00036020020024180016a4203370300200241f0006a420337030020054107360200200241fc006a200241a0036a3602002002419ca5c20036026c200241bcc1c2003602642002410336026020074180a4c000200a41024622051b200241e0006a20094198a4c00020051b2802101102000b2017210c0b200020233702042000200c360200200241d0046a24000f0b1030000bd71704027f017e077f017e230041d0006b2201240041eebec500ad4280808080f00084100122022900002103200141086a41086a200241086a290000370300200120033703082002102941ffb7c000ad4280808080b00184100122022900002103200141186a41086a200241086a2900003703002001200337031820021029200120003602342001200141346aad22034280808080c000841002220229000037033820021029200141cc006a200141386a3602002001200141386a41086a22043602442001200141346a3602482001200141386a360240200141286a200141c0006a107502400240024002402001280230220541206a2206417f4c0d00200128022821070240024020060d0041002108410121020c010b200610272202450d02200621080b024002402008410f4d0d00200821090c010b200841017422094110200941104b1b22094100480d03024020080d002009102722020d010c050b20082009460d00200220082009102b2202450d040b20022001290308370000200241086a200141086a41086a2903003700000240024020094170714110460d00200921080c010b200941017422084120200841204b1b22084100480d0320092008460d00200220092008102b2202450d040b20022001290318370010200241186a200141186a41086a29030037000002400240200841606a2005490d00200821090c010b200541206a22092005490d032008410174220a2009200a20094b1b22094100480d0320082009460d00200220082009102b2202450d040b200241206a2007200510e4071a0240200128022c450d00200710290b2006ad4220862002ad84100602402009450d00200210290b41eebec500ad4280808080f0008410012202290000210b200141086a41086a200241086a2900003703002001200b3703082002102941acf7c100ad4280808080a0028410012202290000210b200141186a41086a200241086a2900003703002001200b3703182002102920012000360234200120034280808080c000841002220229000037033820021029200141cc006a200141386a360200200120043602442001200141346a3602482001200141386a360240200141286a200141c0006a10752001280230220541206a2208417f4c0d00200128022821070240024020080d0041002109410121020c010b200810272202450d02200821090b024002402009410f4d0d00200921060c010b200941017422064110200641104b1b22064100480d03024020090d00200610272202450d050c010b20092006460d00200220092006102b2202450d040b20022001290308370000200241086a200141086a41086a2903003700000240024020064170714110460d00200621090c010b200641017422094120200941204b1b22094100480d0320062009460d00200220062009102b2202450d040b20022001290318370010200241186a200141186a41086a29030037000002400240200941606a2005490d00200921060c010b2005415f4b0d03200941017422062008200620084b1b22064100480d0320092006460d00200220092006102b2202450d040b200241206a2007200510e4071a0240200128022c450d00200710290b2008ad4220862002ad84100602402006450d00200210290b41eebec500ad4280808080f0008410012202290000210b200141086a41086a200241086a2900003703002001200b3703082002102941a8f8c100ad4280808080a0028410012202290000210b200141186a41086a200241086a2900003703002001200b3703182002102920012000360234200120034280808080c000841002220229000037033820021029200141cc006a200141386a360200200120043602442001200141346a3602482001200141386a360240200141286a200141c0006a10752001280230220541206a2208417f4c0d00200128022821070240024020080d0041002109410121020c010b200810272202450d02200821090b024002402009410f4d0d00200921060c010b200941017422064110200641104b1b22064100480d03024020090d00200610272202450d050c010b20092006460d00200220092006102b2202450d040b20022001290308370000200241086a200141086a41086a2903003700000240024020064170714110460d00200621090c010b200641017422094120200941204b1b22094100480d0320062009460d00200220062009102b2202450d040b20022001290318370010200241186a200141186a41086a29030037000002400240200941606a2005490d00200921060c010b2005415f4b0d03200941017422062008200620084b1b22064100480d0320092006460d00200220092006102b2202450d040b200241206a2007200510e4071a0240200128022c450d00200710290b2008ad4220862002ad84100602402006450d00200210290b41eebec500ad4280808080f0008410012202290000210b200141086a41086a200241086a2900003703002001200b3703082002102941f4f8c100ad4280808080b0028410012202290000210b200141186a41086a200241086a2900003703002001200b3703182002102920012000360234200120034280808080c000841002220229000037033820021029200141cc006a200141386a360200200120043602442001200141346a3602482001200141386a360240200141286a200141c0006a10752001280230220541206a2208417f4c0d00200128022821070240024020080d0041002109410121020c010b200810272202450d02200821090b024002402009410f4d0d00200921060c010b200941017422064110200641104b1b22064100480d03024020090d00200610272202450d050c010b20092006460d00200220092006102b2202450d040b20022001290308370000200241086a200141086a41086a2903003700000240024020064170714110460d00200621090c010b200641017422094120200941204b1b22094100480d0320062009460d00200220062009102b2202450d040b20022001290318370010200241186a200141186a41086a29030037000002400240200941606a2005490d00200921060c010b2005415f4b0d03200941017422062008200620084b1b22064100480d0320092006460d00200220092006102b2202450d040b200241206a2007200510e4071a0240200128022c450d00200710290b2008ad4220862002ad84100402402006450d00200210290b200141c0006a200010af01200135024842208620012802402202ad84100402402001280244450d00200210290b41eebec500ad4280808080f0008410012202290000210b200141086a41086a200241086a2900003703002001200b3703082002102941e0f9c100ad4280808080e0018410012202290000210b200141186a41086a200241086a2900003703002001200b3703182002102920012000360234200120034280808080c000841002220229000037033820021029200141cc006a200141386a360200200120043602442001200141346a3602482001200141386a360240200141286a200141c0006a10752001280230220641206a2208417f4c0d00200128022821050240024020080d0041002104410121020c010b200810272202450d02200821040b024002402004410f4d0d00200421090c010b200441017422094110200941104b1b22094100480d03024020040d00200910272202450d050c010b20042009460d00200220042009102b2202450d040b20022001290308370000200241086a200141086a41086a2903003700000240024020094170714110460d00200921040c010b200941017422044120200441204b1b22044100480d0320092004460d00200220092004102b2202450d040b20022001290318370010200241186a200141186a41086a29030037000002400240200441606a2006490d00200421090c010b2006415f4b0d03200441017422092008200920084b1b22094100480d0320042009460d00200220042009102b2202450d040b200241206a2005200610e4071a0240200128022c450d00200510290b2008ad4220862002ad84100402402009450d00200210290b200141c0006a200010da01200135024842208620012802402202ad84100402402001280244450d00200210290b200141d0006a24000f0b1038000b1039000b1032000b1030000ba20401097f230041e0006b220224002002200110c80102400240024002402002280200450d00200041003602000c010b2002280204220320012802044105762204200420034b1b22044105742205417f4c0d010240024020040d00410121060c010b200510272206450d030b41002107200241003602102002200436020c20022006360208024002402003450d0041002108034041002105200241003a0058200841016a21082001280204417f6a210403402004417f460d03200241386a20056a200128020022092d00003a0000200120043602042001200941016a3602002002200541016a22093a00582004417f6a21042009210520094120470d000b200241186a41186a2205200241386a41186a290300370300200241186a41106a2209200241386a41106a290300370300200241186a41086a220a200241386a41086a2903003703002002200229033837031802402007200228020c470d00200241086a20074101109e0120022802082106200228021021070b200620074105746a22042002290318370000200441186a2005290300370000200441106a2009290300370000200441086a200a2903003700002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b0240200541ff0171450d00200241003a00580b20004100360200200228020c41ffffff3f71450d00200610290b200241e0006a24000f0b1038000b1039000be80808097f017e0c7f017e017f017e017f037e230041f0016b22022400200241086a41186a200141186a280200360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241e8006a200241086a10b701024020022d0098014102460d00200041046a21030340200241a0016a41286a200241e8006a41286a280200360200200241a0016a41206a200241e8006a41206a2201290300370300200241a0016a41186a2204200241e8006a41186a2205290300370300200241a0016a41106a2206200241e8006a41106a2207290300370300200241a0016a41086a2208200241e8006a41086a2209290300370300200220022903683703a0012001280200210a0240200229028c01220b422088a7220c450d00200228029401210d4100210e200a21014100210f024002400340200220013602cc01200241d0016a200241cc016a10df01024002400240024020022802dc012210450d0020022802d8012111024020022802e00141ffffffff0371450d00201010290b2011200d4b0d010b200e0d014100210e0c020b200e41016a210e0c010b200f200e6b2210200c4f0d02200241d0016a41186a22112001200e4105746b221041186a2212290000370300200241d0016a41106a2213201041106a2214290000370300200241d0016a41086a2215201041086a2216290000370300200220102900003703d001200141086a22172900002118200141106a2219290000211a200141186a221b290000211c201020012900003700002012201c3700002014201a37000020162018370000201b20112903003700002019201329030037000020172015290300370000200120022903d0013700000b200141206a2101200c200f41016a220f460d020c000b0b2010200c4180bdc7001036000b200e417f6a200c4f0d00200b42ffffffff0f83200c200e6bad42208684210b0b200241c8006a41186a22012004290300370300200241c8006a41106a220e2006290300370300200241c8006a41086a220f2008290300370300200220022903a001370348200a450d01200520012903003703002007200e2903003703002009200f29030037030020022002290348370368200241e8006a10e1012118200241286a41186a2001290300221a370300200241286a41106a200e290300221c370300200241286a41086a200f290300221d37030020022002290348221e3703282005201a3703002007201c3703002009201d3703002002201e3703680240200041086a220f280200220e2003280200470d002000200e410110a8010b2000280200200e41386c6a22012002290368370308200120183703002001200a360228200141106a2009290300370300200141186a2007290300370300200141206a20052903003703002001412c6a200b370200200f200e41016a360200200241e8006a200241086a10b70120022d0098014102470d000b0b0240200228020c450d00200228020810290b0240200241186a280200450d00200228021410290b200241f0016a24000bab2104027f017e107f077e23004190026b2205240020054100360238200541003602300240024002400240200441086a280200200341086a28020022066aad42e0007e2207422088a70d002007a72208417f4c0d0041082109024002402008450d00200810272209450d010b20054100360248200520093602402005200841e0006e3602442003280204210a2003280200210b2005410036029801200542083703900120054190016a410020064105742209410575108c01200528029801210c02402006450d00200941606a410576210d200528029001200c41d8006c6a210e200541f0016a2108200541e8016a210f41002106200b21030340200541a0016a41186a2210200341186a2211290000370300200541a0016a41106a2212200341106a2213290000370300200541a0016a41086a2214200341086a2215290000370300200520032900003703a001200541e0006a41186a2011290000370300200541e0006a41106a2013290000370300200541e0006a41086a201529000037030020052003290000370360200541306a200541e0006a200610d702200541c0016a41086a4200370300200541c0016a41106a4200370300200541c0016a41186a4200370300200541c0016a41206a4200370300200f4200370300200841186a2010290300370000200841106a2012290300370000200841086a2014290300370000200820052903a001370000200542003703c001200e200541c0016a41d00010e407220e41d0006a41003a0000200e41d8006a210e200341206a2103200641016a2106200941606a22090d000b200c200d6a41016a210c0b2005200c360298010240200a41ffffff3f71450d00200b10290b200541d0006a41086a20054190016a41086a2802002203360200200520052903900137035020032002490d032004280204210620042802002103200541c0006a2005280248200441086a28020041386c220941386d10a7012005280240210e20052802482108200541d4016a200541d0006a3602002005200320096a3602cc01200520033602c801200520063602c401200520033602c0012005200541306a3602d001200541e0006a41086a20083602002005200541c8006a3602642005200e200841e0006c6a360260200541c0016a200541e0006a10d8022001ad42307e2207422088a70d012007a72208417f4c0d01200528025821030240024020080d00410821040c010b200810272204450d010b20054100360218200520043602102005200841306e3602142001412c6c2208417f4c0d010240024020080d00410421160c010b200810272216450d010b4100210b2005410036022820052001360224200520163602202003200120032001491b2217450d024100210b200541c0016a41186a210a200541c0016a41106a210f200541c0016a41086a210d4100210203402005280250210602402003450d00200341d8006c21082006210303400240200341d0006a2d00000d0002400240200341206a2903002218200341286a29030022198450450d0042002107427f2118427f21190c010b427f21072005427f427f2018201910e007200541086a2903002119200529030021180b2003201837030020032019370308200341106a2007370300200341186a20073703000b200341d8006a2103200841a87f6a22080d000b0b0240024020052802482203450d0020052802402209200341e0006c6a21120340024020092802382203450d00200341c8006c2106200928023041206a210303402005280258220e200328020022084d0d0402402005280250200841d8006c6a22082d00500d0020082903202207200841286a290300221884500d00200541c0016a2009290310200941186a2903002009290300200941086a2903002007201810d202200820082903002207427f2007427f20052903c80120052802c001410146220e1b22197c221820182007542210200841086a22112903002207427f200f290300200e1b221a7c2010ad7c221820075420182007511b220e1b2019201a845022101b37030020112007427f2018200e1b20101b3703000b200341c8006a2103200641b87f6a22060d000b0b200941e0006a22092012470d000b200528025021060b200241016a2102200528025841d8006c2103200641a87f6a210803402003450d05200341a87f6a2103200841d8006a2108200641d0006a2109200641d8006a220e210620092d00000d000b02402003450d00200841186a2903002107200841106a2903002118200841086a29030021192008290300211a4100210603400240200e20066a220941d0006a2d00000d00200941086a290300221b2019201a2019201820072009290300221c201b200941106a290300221d200941186a290300221e10d90241ff017141014622101b2119201c201a20101b211a201e200720101b2107201d201820101b21182009200820101b21080b2003200641d8006a2206470d000b2008450d050b200841013a0050024020052802482203450d0020052802402206200341e0006c6a21012008410c6a2114200841306a21150340200641e0006a210c024020062802382209450d0020062802302103200941c8006c210903400240024020142003460d00200341246a2015412010e7070d010b200641186a220e290300211a200841086a2210290300210720062903102119200829030021182008290310211b200341186a200841186a2211290300370300200341106a201b3703002003200742002007201a7d2018201954ad7d221b201820197d221c201856201b200756201b2007511b22121b2019201a845022131b370308200320184200201c20121b20131b37030020102903002107201129030021182008290300211920062008290310370320200641286a201837030020062019370310200e20073703000b200341c8006a2103200941b87f6a22090d000b0b200c2106200c2001470d000b0b200a200841c8006a290000370300200f200841c0006a290000370300200d200841386a290000370300200520082900303703c001200841286a2903002107200829032021180240200b2005280214470d00200541106a200b4101109001200528021021042005280218210b0b2004200b41306c6a220320052903c001370300200d2903002119200f290300211a200a290300211b20032018370320200341286a2007370300200341186a201b370300200341106a201a370300200341086a20193703002005200b41016a220b360218200220174f0d04200528025821030c010b0b2008200e418cf0c9001036000b1039000b1038000b024020052802482203450d0020052802402214200341e0006c6a2102200b41306c210c200541ec006a220b41186a210a200b41106a210d200b41086a2117410021010340200b201429003c370000200a201441d4006a290000370000200d201441cc006a2900003700002017201441c4006a2900003700002005410036026820054204370360024020142802382203450d0020142802302212200341c8006c6a2115201441106a210f410021114104211303402012221041246a2106201041c8006a211241002109200c210820042103024003402008450d01024020062003460d0020032006412010e707210e200941016a2109200841506a2108200341306a2103200e0d010b0b418094ebdc0321080240200f201010da020d004100210302402010290310201429032085201041186a290300201441286a29030085844200520d00200541c0016a428094ebdc0342002010290300201041086a290300200f290300200f41086a29030010d202427f20052903c80120052802c00141014622031b221842ffffffff0f56427f200541c0016a41106a29030020031b22074200522007501b0d012018a7220341ff93ebdc034b0d010b200321080b200541c0016a41186a22062010413c6a290000370300200541c0016a41106a2209201041346a290000370300200541c0016a41086a220e2010412c6a290000370300200520102900243703c001024020112005280264470d00200541e0006a2011410110960120052802602113200528026821110b2013201141246c6a220320052903c001370200200e2903002107200929030021182006290300211920032008360220200341186a2019370200200341106a2018370200200341086a20073702002005201141016a22113602680b20122015470d000b024002402011450d0002400240201141246c22060d00410021030c010b201341206a2108410021030340417f200320082802006a220920092003491b2103200841246a21082006415c6a22060d000b0b02404100418094ebdc0320036b22032003418094ebdc034b1b221020116e2203418094ebdc032003418094ebdc03491b220e450d00201341206a210341002108034020112008460d032005417f20032802002206200e6a220920092006491b22063602c0012005418094ebdc033602c4012003200541c0016a2006418094ebdc034b4102746a280200360200200341246a21032011200841016a2208470d000b0b02402010200e20116c6b220e450d004100210303402005417f2013200320117041246c6a2208280220220641016a220920092006491b22063602c0012005418094ebdc033602c4012008200541c0016a2006418094ebdc034b4102746a280200360220200341016a2203200e490d000b0b200541c0016a41286a2208200541e0006a41286a280200360200200541c0016a41206a2206200541e0006a41206a290300370300200541c0016a41186a2209200541e0006a41186a290300370300200541c0016a41106a220e200541e0006a41106a290300370300200541c0016a41086a2210200541e0006a41086a290300370300200520052903603703c001024020012005280224470d00200541206a2001410110930120052802202116200528022821010b20162001412c6c6a220320052903c001370200200341286a2008280200360200200341206a2006290300370200200341186a2009290300370200200341106a200e290300370200200341086a20102903003702002005200141016a22013602280c020b20052802642203450d01200341246c450d01201310290c010b20082011419cf0c9001036000b201441e0006a22142002470d000b0b200541c0016a41086a2203200541106a41086a280200360200200541d4016a200541206a41086a28020036020020002005290310370200200520052903203702cc01200041086a2003290300370200200041106a200541c0016a41106a290300370200024020052802542203450d00200341d8006c450d00200528025010290b024020052802482203450d00200341e0006c2108200528024041346a21030340024020032802002206450d00200641c8006c450d002003417c6a28020010290b200341e0006a2103200841a07f6a22080d000b0b024020052802442203450d00200341e0006c450d00200528024010290b200541306a10d4010c010b20004100360200024020052802542203450d00200341d8006c450d00200528025010290b024020052802482203450d00200341e0006c2108200528024041346a21030340024020032802002206450d00200641c8006c450d002003417c6a28020010290b200341e0006a2103200841a07f6a22080d000b0b024020052802442203450d00200341e0006c450d00200528024010290b200541306a10d401200428020021060240200441086a2802002203450d00200341386c21082006412c6a210303400240200328020041ffffff3f71450d002003417c6a28020010290b200341386a2103200841486a22080d000b0b200441046a2802002203450d00200341386c450d00200610290b20054190026a24000b990b04077f047e087f017e230041f0016b22022400024002400240200141086a220328020022042001410c6a2802002205460d0003402003200441246a2206360200200441206a2802002107200241d0016a41186a200441186a290000370300200241d0016a41106a200441106a290000370300200241d0016a41086a200441086a290000370300200220042900003703d00120070d022006210420052006470d000b0b200041003602082000420837020020012802042204450d01200441246c450d01200128020010290c010b200241d0006a200128021022082903002209200841086a290300428094ebdc03420010e007200241c0006a2002290350220a200241d0006a41086a290300220b4280ec94a37c427f10d507200241306a200a200b2007ad220c420010d507200141146a280200220d427f200d290300220a2002290330220b200c200920022903407c7e2209428094ebdc0380220ca7417f2009428080808080c0b2cd3b541b2009200c4280ec94a37c7e7c4280cab5ee01566aad7c22097c220c200c200a542206200d41086a2207290300220a200241306a41086a2903002009200b54ad7c220c7c2006ad7c220b200a54200b200a511b22061b3703002007427f200b20061b37030020024190016a41086a2206200241d0016a41086a29030037030020024190016a41106a2207200241d0016a41106a29030037030020024190016a41186a2203200241d0016a41186a290300370300200220022903d00137039001200241f0006a41186a220e2003290300370300200241f0006a41106a22032007290300370300200241f0006a41086a2207200629030037030020022002290390013703700240024041301027220f450d00200f2009370320200f2002290370370300200f41286a200c370300200f41186a200e290300370300200f41106a2003290300370300200f41086a200729030037030020024281808080103702642002200f36026020012802042110200128020021112005415c6a2004460d01200541b87f6a2112200241d0016a41186a2107200241d0016a41106a2105200241d0016a41086a2103410121010340200441c4006a280200210620072004413c6a2900003703002005200441346a29000037030020032004412c6a2900003703002002200441246a220e2900003703d0010240024020060d0020122004460d040c010b200241206a20082903002209200841086a290300428094ebdc03420010e007200241106a2002290320220a200241206a41086a290300220b4280ec94a37c427f10d5072002200a200b2006ad220c420010d507200d427f200d290300220a2002290300220b200c200920022903107c7e2209428094ebdc0380220ca7417f2009428080808080c0b2cd3b541b2009200c4280ec94a37c7e7c4280cab5ee01566aad7c22097c220c200c200a542206200d41086a2213290300220a200241086a2903002009200b54ad7c220c7c2006ad7c220b200a54200b200a511b22061b3703002013427f200b20061b37030020024190016a41086a2206200329030037030020024190016a41106a2213200529030037030020024190016a41186a22142007290300370300200220022903d0013703900120072014290300370300200520132903003703002003200629030037030020022002290390013703d001024020012002280264470d00200241e0006a200141011090012002280260210f0b200f200141306c6a220620022903d0013703002003290300210a2005290300210b2007290300211520062009370320200641286a200c370300200641186a2015370300200641106a200b370300200641086a200a3703002002200141016a220136026820122004460d030b200e21040c000b0b1039000b02402010450d00201041246c450d00201110290b20002002290360370200200041086a200241e0006a41086a2802003602000b200241f0016a24000ba028030f7f047e1b7f230022052106200541e00b6b41607122072400200741003602182007410036021002400240024002402002450d00200120024105746a2108200741e0056a41027221094100210a034020074200370348200742003703402007410036025820074208370350200741a8026a41186a220b200141186a290000370300200741a8026a41106a220c200141106a290000370300200741a8026a41086a220d200141086a290000370300200720012900003703a80202400240200a450d002007280214210e0c010b200741e0056a410041e00210e6071a200741f8026a410041e00210e6071a41c8051027220a450d054100210e200a41003b0106200a4100360200200a41086a200741e0056a41e00210e4071a200a41e8026a200741f8026a41e00210e4071a200741003602142007200a3602100b200141206a21010240024002400240024002400340200a41066a210f200a2f01062210410574210241002111200a41086a22122105024003402002450d01200741a8026a2005412010e7072213450d03200241606a2102201141016a2111200541206a21052013417f4a0d000b2011417f6a21100b0240200e450d00200e417f6a210e200a20104102746a41c8056a280200210a0c010b0b200741f0006a41186a2202200b290300370300200741f0006a41106a200c2903002214370300200741f0006a41086a200d2903002215370300200720072903a80222163703702007200728021841016a360218200c2014370300200d2015370300200b2002290300370300200720163703a80220072903582114200729035021152007290348211620072903402117200f2f01002205410b490d01200741e0056a410041e00210e6071a200741f8026a410041e00210e6071a41c80510272218450d0a201841003b010620184100360200201841086a200741e0056a41e00210e4072105201841e8026a200741f8026a41e00210e4072111200741e0056a41086a2219200a41b0046a290300370300200741e0056a41106a221a200a41b8046a290300370300200741e0056a41186a221b200a41c0046a2903003703002007200a41db016a2900003703e0022007200a41e0016a2900003700e5022007200a41a8046a2903003703e0052007200a41c8016a2f00003b01f4022007200a41ca016a2d00003a00f602200a41cb016a280000211c200a41cf016a280000211d200a41d3016a280000211e200a41d7016a280000211f2005200a41e8016a200a2f010641796a2202410574221310e40721052011200a41c8046a201310e4072111200a41063b0106201820023b0106200720072f01f4023b01dc02200720072d00f6023a00de02200720072903e0023703c802200720072900e5023700cd02200741f8026a41186a2220201b290300370300200741f8026a41106a2221201a290300370300200741f8026a41086a22222019290300370300200720072903e0053703f8020240024020104107490d002005201041057441c07e6a220e6a2005201041796a221341057422106a2205200241ffff037120136b41057410e5071a200541186a200b290300370000200541106a200c290300370000200541086a200d290300370000200520072903a8023700002011200e6a201120106a2202201841066a220f2f010020136b41057410e5071a200241186a20143703002002201537031020022016370308200220173703000c010b20122010410574220541206a22116a201220056a2202200f2f010020106b41057410e5071a200241186a200b290300370000200241106a200c290300370000200241086a200d290300370000200220072903a802370000200a41e8026a220220116a200220056a2202200f2f010020106b41057410e5071a200241186a20143703002002201537031020022016370308200220173703000b200f200f2f010041016a3b010020074190026a41026a220220072d00de023a0000200741d8016a41086a22232022290300370300200741d8016a41106a22242021290300370300200741d8016a41186a22252020290300370300200720072f01dc023b019002200720072903c8023703c801200720072900cd023700cd01200720072903f8023703d801200741a4016a41026a222620022d00003a0000200720072f0190023b01a401200720072900cd0137009501200720072903c80137039001200741a8016a41186a22272025290300370300200741a8016a41106a22282024290300370300200741a8016a41086a22292023290300370300200720072903d8013703a8010240200a280200220e0d004100212a200741106a21020c040b200a2f0104210f4100212a0340200741a4026a41026a222b20262d00003a0000200720072f01a4013b01a402200720072903900137039002200720072900950137009502200b2027290300370300200c2028290300370300200d2029290300370300200720072903a8013703a80241000d03200f41ffff0371210a024002400240200e2f01062202410b490d002009410041f20510e6071a41f80510272213450d0e20134100360200201341046a200741e0056a41f40510e4071a2007200e2f00c8013b01f4022007200e41ca016a2d00003a00f6022007200e41db016a2900003703e0022007200e41e0016a2900003700e502200e41cb016a280000212c200e41cf016a280000212d200e41d3016a280000212e200e41d7016a280000212f201b200e41c0046a290300370300201a200e41b8046a2903003703002019200e41b0046a2903003703002007200e2903a8043703e005201341086a200e41e8016a200e2f0106220241796a2205410574221110e4072130201341e8026a200e41c8046a201110e4072131201341c8056a200e41e4056a2002417a6a221041027410e4072112200e41063b0106201320053b010602402010450d00410021022012210503402005280200221120023b010420112013360200200541046a21052010200241016a2202470d000b0b2020201b2903003703002021201a29030037030020222019290300370300200720072903e0053703f802200720072f01f4023b01dc02200720072d00f6023a00de02200720072903e0023703c802200720072900e5023700cd02200741dc056a41026a221020072d00de023a0000200720072f01dc023b01dc05200720072903c8023703c801200720072900cd023700cd01201b2020290300370300201a202129030037030020192022290300370300200720072903f8023703e005200f41ffff037122054107490d012030200a417a6a2211410574220f6a2030200a41796a220241057422326a220520132f010620026b41057410e5071a200541186a2007290095023700002005201f36000f2005201e36000b2005201d3600072005201c360003200541026a202b2d00003a0000200520072f01a4023b000020052007290390023700132031200f6a203120326a220520132f0106220f20026b41057410e5071a200541186a200b290300370300200541106a200c290300370300200541086a200d290300370300200520072903a8023703002013200f41016a22053b0106200a410274221c20126a416c6a201220114102746a220f200541ffff0371220a20116b41027410e5071a200f2018360200200a2011490d022013201c6a41b0056a2105034020052802002211200241016a22023b010420112013360200200541046a21052002200a490d000c030b0b200e41086a2205200a41016a221141057422136a2005200a41057422106a22052002200a6b410574220f10e5071a2005201f36000f2005201e36000b2005201d3600072005201c360003200541026a202b2d00003a0000200520072f01a4023b00002005200729039002370013200541186a200729009502370000200e41e8026a220520136a200520106a2205200f10e5071a200541186a200b290300370300200541106a200c290300370300200541086a200d290300370300200520072903a802370300200e200241016a22023b0106200a410274200e41c8056a22056a41086a200520114102746a2205200241ffff037120116b41027410e5071a20052018360200200a200e2f010622024f0d07201820113b01042018200e360200201120024f0d072002417f6a2113200e2011417f6a22024102746a41d0056a2105034020052802002211200241026a3b01042011200e360200200541046a21052013200241016a2202470d000c080b0b200e41086a2202200a41016a2211410574220f6a2002200a41057422126a2202200e2f01062230200a6b410574223110e5071a2002201f36000f2002201e36000b2002201d3600072002201c360003200241026a202b2d00003a0000200220072f01a4023b00002002200729039002370013200241186a200729009502370000200e41e8026a2202200f6a200220126a2202203110e5071a200241186a200b290300370300200241106a200c290300370300200241086a200d290300370300200220072903a802370300200e203041016a22023b0106200a4102742212200e41c8056a220f6a41086a200f20114102746a220f200241ffff037120116b41027410e5071a200f20183602002005200e2f010622114f0d00200e20126a41cc056a2102034020022802002205200a41016a220a3b01042005200e360200200241046a21022011200a470d000b0b202a41016a212a2007418c026a41026a220220102d00003a0000202320192903003703002024201a2903003703002025201b290300370300200720072f01dc053b018c02200720072903c8013703f801200720072900cd013700fd01200720072903e0053703d801202620022d00003a0000200720072f018c023b01a401200720072900fd0137009501200720072903f80137039001202720252903003703002028202429030037030020292023290300370300200720072903d8013703a8010240200e28020022020d00200741106a2102202c211c202f211f202e211e202d211d201321180c050b200e2f0104210f202c211c202f211f202e211e202d211d2002210e201321180c000b0b200a20114105746a22024180036a2205290300211520052007290358370300200241f8026a2205290300211420052007290350370300200241f0026a2205290300211620052007290348370300200241e8026a2202290300211720022007290340370300200720153703f805200720143703f005200720163703e805200720173703e0052014a72202450d0420072802f4052205450d04200541306c450d04200210290c040b20122010410574221141206a22136a201220116a2202200520106b41057410e5071a200241186a200b290300370000200241106a200c290300370000200241086a200d290300370000200220072903a802370000200a41e8026a220220136a200220116a2202200a2f010620106b41057410e5071a200241186a2014370300200220153703102002201637030820022017370300200a200a2f010641016a3b0106200741003602f0050c030b41cc9ec800413541b8a1cc001033000b2009410041f20510e6071a41f80510272205450d0620054100360200200541046a200741e0056a41f40510e4071a2005200228020022113602c8052002200536020020022002280204221341016a360204201141003b010420112005360200200741a8026a41026a220a20262d00003a0000200720072f01a4013b01a80220072007290390013703f80220072007290095013700fd02201b2027290300370300201a202829030037030020192029290300370300200720072903a8013703e0052013202a470d0520052f01062211410a4b0d04200520114105746a2202410a6a200a2d00003a0000200241086a20072f01a8023b0000200241176a201f360000200241136a201e3600002002410f6a201d3600002002410b6a201c3600002002411b6a20072903f802370000200241206a20072900fd02370000200241e8026a20072903e005370300200241f0026a2019290300370300200241f8026a201a29030037030020024180036a201b2903003703002005201141016a22024102746a41c8056a2018360200200520023b0106201820023b0104201820053602000b200741003602f0050b20012008460d012007280210210a0c000b0b0240024020040d004100210b0c010b20032004412c6c6a210d4100210b034020032202412c6a21030240200228020841306c2205450d002002280200220a20056a210c2002410c6a21120340200a41306a210f0240024002402007280210220e450d00200728021421010340200e41086a2105200e2f01062210410574210241002111024003402002450d01200a2005412010e7072213450d04200241606a2102201141016a2111200541206a21052013417f4a0d000b2011417f6a21100b2001450d012001417f6a2101200e20104102746a41c8056a280200210e0c000b0b417f200b41016a22022002200b491b210b0c010b200e20114105746a220241e8026a2205427f20052903002214200a2903207c221520152014542205200241f0026a22112903002214200a41286a22132903007c2005ad7c221520145420152014511b22051b3703002011427f201520051b37030020122900002114200741e0056a41086a220e201241086a290000370300200741e0056a41106a2201201241106a290000370300200741e0056a41186a2210201241186a290000370300200720143703e00520132903002114200a2903202115200241f8026a2113024020024180036a22052802002211200241fc026a280200470d00201320114101109001200528020021110b2013280200201141306c6a220220072903e00537030020022015370320200241186a2010290300370300200241106a2001290300370300200241086a200e290300370300200241286a20143703002005200528020041016a3602000b200f210a200f200c470d000b0b2003200d470d000b0b200020072903103702002000200b36020c200041086a200741106a41086a280200360200200624000f0b418f9cc800412741b8a1cc001033000b41b69cc800413041b8a1cc001033000b1030000be91105077f017e047f017e097f230041a0026b2202240002400240024002400240024002400240024020012802202203450d0020012003417f6a220436022020012802042203450d02200128020821052001280200210602402001410c6a280200220720032f0106490d00034002400240200328020022080d002005ad2109410021080c010b200641016a210620033301044220862005ad8421090b200310292009a72105200821032009422088a7220720082f01064f0d000b200821030b20024190016a41186a220a200320074105746a220841206a29000037030020024190016a41106a220b200841186a29000037030020024190016a41086a220c200841106a2900003703002002200841086a29000037039001200241f0016a41086a220d20084184036a2802003602002002200841fc026a2902003703f001200741016a2107200841f0026a2903002109200841e8026a290300210e200841f8026a280200210f02402006450d00200320074102746a41c8056a2802002103410021072006417f6a2208450d00034020032802c80521032008417f6a22080d000b0b200241186a41186a200a290300370300200241186a41106a200b290300370300200241186a41086a200c29030037030020024190026a41086a200d2802003602002002200229039001370318200220022903f001370390022001200736020c200120053602082001200336020420014100360200200f0d010b20024180016a41003602000c060b200241b8016a2009370300200241c0016a200f360200200241c4016a20022903900237020020024190016a41186a200241186a41186a29030037030020024190016a41106a200241186a41106a29030037030020024190016a41086a200241186a41086a290300370300200241cc016a20024190026a41086a2802003602002002200e3703b0012002200229031837039001200241c0006a200141246a20024190016a10a20220024180016a280200450d0520024190016a200241c0006a41d00010e4071a417f200441016a220320032004491bad42d0007e2209422088a70d012009a72203417f4c0d01200310272210450d02201020024190016a41d00010e4072108200241013602102002200341d0006e36020c20022008360208200241186a41206a200141206a2902002209370300200241186a41186a200141186a290200370300200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318024002402009a72203450d0020022003417f6a220f360238200228021c2203450d0520022802202105200228021821070240200241246a280200220620032f0106490d00034002400240200328020022080d002005ad2109410021080c010b200741016a210720033301044220862005ad8421090b200310292009a72105200821032009422088a7220620082f01064f0d000b200821030b20024190016a41186a2201200320064105746a220841206a29000037030020024190016a41106a220b200841186a29000037030020024190016a41086a220c200841106a2900003703002002200841086a2900003703900120024190026a41086a220d20084184036a2802003602002002200841fc026a29020037039002200641016a2106200841f0026a2903002109200841e8026a290300210e200841f8026a280200210a02402007450d00200320064102746a41c8056a2802002103410021062007417f6a2208450d00034020032802c80521032008417f6a22080d000b0b200241f0016a41186a2001290300370300200241f0016a41106a200b290300370300200241f0016a41086a200c290300370300200241e0016a41086a200d28020036020020022002290390013703f00120022002290390023703e00120022006360224200220053602202002200336021c20024100360218200a450d002002413c6a2111200241c4016a2104200241b8016a2112410121010340200420022903e0013702002012200937030020024190016a41186a220b200241f0016a41186a221329030037030020024190016a41106a220c200241f0016a41106a221429030037030020024190016a41086a220d200241f0016a41086a2215290300370300200441086a200241e0016a41086a22162802003602002002200e3703b001200220022903f001370390012002200a3602c001200241c0006a201120024190016a10a202200228028001450d0220024190016a200241c0006a41d00010e4071a02402001200228020c470d00200241086a2001417f200f41016a22082008200f491b10ac01200228020821100b2010200141d0006c6a20024190016a41d00010e4071a2002200141016a2201360210200f450d012002200f417f6a220f3602382003450d07410021070240200620032f0106490d00034002400240200328020022080d002005ad2109410021080c010b200741016a210720033301044220862005ad8421090b200310292009a72105200821032009422088a7220620082f01064f0d000b200821030b200b200320064105746a220841206a290000370300200c200841186a290000370300200d200841106a2900003703002002200841086a29000037039001200841f8026a280200210a20024190026a41086a221720084184036a2802003602002002200841fc026a29020037039002200641016a2106200841f0026a2903002109200841e8026a290300210e02402007450d00200320064102746a41c8056a2802002103410021062007417f6a2208450d00034020032802c80521032008417f6a22080d000b0b2013200b2903003703002014200c2903003703002015200d2903003703002016201728020036020020022002290390013703f00120022002290390023703e00120022006360224200220053602202002200336021c20024100360218200a0d000b0b20024100360280010b200241186a10b902200041086a200241086a41086a280200360200200020022903083702000c060b41a79dc800412b41e0f6c4001033000b1038000b1039000b41a79dc800412b41e0f6c4001033000b41a79dc800412b41e0f6c4001033000b2000410036020820004208370200200110b9020b200241a0026a24000bd62c080a7f017e017f047e147f017e017f017e230041d0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d002000200110f4042003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00410241012000200a41306c6a220d290300220e200d41506a220f290300221056200d41086a2903002211200f41086a29030022125620112012511b220f1b200f200d41306a29030022132010200e200f1b221056200d41386a290300220e20122011200f1b221156200e2011511b22141b2013201020141b2000200a200a417f6a2215200f1b221641306c6a220d29030056200e201120141b2211200d41086a29030022125620112012511b22176a2000200c41306c6a220d290300220e200d41506a2218290300221056200d41086a2903002211201841086a29030022125620112012511b22186a2000200c410172221941306c6a220d29030022132010200e20181b221056200d41086a290300220e2012201120181b221156200e2011511b221a6a20132010201a1b2000200c200c417f6a221b20181b221c41306c6a220d29030056200e2011201a1b2211200d41086a29030022125620112012511b221d6a2000200b41306c6a220d290300220e200d41506a221e290300221056200d41086a2903002211201e41086a29030022125620112012511b221e6a200d41306a29030022132010200e201e1b221056200d41386a290300220e20122011201e1b221156200e2011511b221f6a20132010201f1b2000200b200b417f6a2220201e1b222141306c6a220d29030056200e2011201f1b2211200d41086a29030022125620112012511b22066a210d2021200b41016a2020200b201e1b201f1b20061b210b201c2019201b200c20181b201a1b201d1b210c2016200a41016a2015200a200f1b20141b20171b210a0b200d2000200c41306c6a220f290300220e2000200a41306c6a2218290300221056200f41086a2903002211201841086a29030022125620112012511b220f6a2000200b41306c6a220d29030022132010200e200f1b221056200d41086a290300220e20122011200f1b221156200e2011511b220d6a211820132010200d1b2000200c200a200f1b222141306c6a221e29030058200e2011200d1b2211201e41086a29030022125820112012511b450d01200b200a200c200f1b200d1b21210c020b2000200110f5040c0f0b201841016a2218410c490d0002402001410176220b450d002000200141306c6a41506a210a2000210c0340200441a0026a41286a220f200c41286a220d290300370300200441a0026a41206a2218200c41206a221e290300370300200441a0026a41186a2214200c41186a221a290300370300200441a0026a41106a221f200c41106a2215290300370300200441a0026a41086a2216200c41086a22172903003703002004200c2903003703a002200a41086a22192903002111200a41106a221b2903002112200a41186a221c290300210e200a41206a221d2903002110200a41286a22202903002113200c200a290300370300200d2013370300201e2010370300201a200e37030020152012370300201720113703002020200f290300370300201d2018290300370300201c2014290300370300201b201f29030037030020192016290300370300200a20042903a002370300200c41306a210c200a41506a210a200b417f6a220b0d000b0b20012021417f736a21214101210a0c010b201845210a0b0240200a452009724101710d002000200110f6040d0d0b2002450d02202120014f0d01024020022903002000202141306c6a220a29030056200241086a2903002211200a41086a220c29030022125620112012511b450d0020002108200121070c040b200441a0026a41286a221a200041286a2218290300370300200441a0026a41206a221f200041206a221e290300370300200441a0026a41186a2215200041186a2214290300370300200441a0026a41106a2216200041106a220b290300370300200441a0026a41086a2217200041086a220f290300370300200420002903003703a002200c2903002111200a41106a220d2903002112200a41186a2219290300210e200a41206a221b2903002110200a41286a221c29030021132000200a29030037030020182013370300201e20103703002014200e370300200b2012370300200f2011370300201c201a290300370300201b201f29030037030020192015290300370300200d2016290300370300200c2017290300370300200a20042903a002370300200f29030021112000290300210e200441186a221c2018290300370300200441106a221d201e290300370300200441086a222020142903003703002004200b290300370300200041506a2119200041306a211b4100210c2001210b03400240200c200b417f6a220f4f0d00201b200c41306c6a210a0340200e200a290300582011200a41086a29030022125820112012511b450d01200a41306a210a200f200c41016a220c470d000b200f210c0b2019200b41306c6a210a02400340200c200b417f6a220b4f0d01200a2903002112200a41086a210f200a41506a220d210a200e2012562011200f29030022125620112012511b0d000b201a201b200c41306c6a220a41286a220f290300370300201f200a41206a22212903003703002015200a41186a22062903003703002016200a41106a22222903003703002017200a41086a22232903003703002004200a2903003703a002200d41386a22242903002112200d41c0006a22252903002110200d41c8006a22262903002113200d41d0006a22272903002128200d41d8006a2229290300212a200a200d41306a220d290300370300200f202a370300202120283703002006201337030020222010370300202320123703002029201a2903003703002027201f290300370300202620152903003703002025201629030037030020242017290300370300200d20042903a002370300200c41016a210c0c010b0b2000200e370300200020113703082000200429030037031020142020290300370300201e201d2903003703002018201c29030037030002402001200c41016a220a490d002000200a41306c6a21002001200a6b220141154f0d010c0c0b0b200a200141c499c500104c000b2021200141fc99c5001036000b2007450d010b202120074f0d01200441a0026a41286a221f200841286a2222290300370300200441a0026a41206a2215200841206a2223290300370300200441a0026a41186a2216200841186a2224290300370300200441a0026a41106a2217200841106a2225290300370300200441a0026a41086a2219200841086a2226290300370300200420082903003703a0022008202141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e37030020252012370300202620113703002000201f290300370300200d2015290300370300200f2016290300370300200b2017290300370300200c2019290300370300200a20042903a0023703002026290300211120082903002112200441186a22272022290300370300200441106a22292023290300370300200441086a2205202429030037030020042025290300370300200841306a21184100211c2007417f6a220f450d022018210a0340200a290300201256200a41086a290300220e201156200e2011511b450d03200a41306a210a200f201c41016a221c470d000b200f211c0c020b410041004180bdc7001036000b202120074190bdc7001036000b2008200741306c6a210a200f210b02400340200a2101200b220c201c4d22060d01200c417f6a210b200141506a220a290300201258200a41086a290300220e201158200e2011511b0d000b0b0240200c201c490d00200f200c490d024180012114410021004100210f4100210d4100210b418001211a2018201c41306c6a220921180340200120186b220a41306e210c0240200a41afe0004b221b0d00200c41807f6a200c200f200049200b200d49221e72221d1b210a0240201d450d00201a200a201e1b211a200a2014201e1b21140c010b200a200a410176221a6b21140b0240200b200d470d000240201a0d00200441206a220d210b0c010b4100210c200441206a220b210d2018210a0340200d200c3a0000200d410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b41027441e499c5006a2802006a210d200a41306a210a201a200c41016a220c470d000b0b0240200f2000470d00024020140d00200441a0016a2200210f0c010b200141506a210a4100210c200441a0016a220f210003402000200c3a00002000410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b41027441f099c5006a2802006a2100200a41506a210a2014200c41016a220c470d000b0b02402000200f6b220a200d200b6b220c200c200a4b1b221e450d00201f2018200b2d000041306c6a220a41286a2903003703002015200a41206a2903003703002016200a41186a2903003703002017200a41106a2903003703002019200a41086a2903003703002004200a2903003703a0022018200b2d000041306c6a220a2001200f2d0000417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703000240201e4101460d00201e417f6a211e03402001200f2d0000417f7341306c6a220a2018200b2d000141306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703002018200b2d000141306c6a220a2001200f2d0001417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a290300370300200f41016a210f200b41016a210b201e417f6a221e0d000b0b2001200f2d0000417f7341306c6a220a20042903a002370300200a41286a201f290300370300200a41206a2015290300370300200a41186a2016290300370300200a41106a2017290300370300200a41086a2019290300370300200f41016a210f200b41016a210b0b2018201a41306c6a2018200b200d461b21182001410020146b41306c6a2001200f2000461b2101201b0d000b02400240200b200d4f0d002001210a0340201f2018200d417f6a220d2d000041306c6a220c41286a220f2903003703002015200c41206a22002903003703002016200c41186a22012903003703002017200c41106a221e2903003703002019200c41086a22142903003703002004200c2903003703a002200a41506a220a41086a221a290300210e200a41106a221b2903002110200a41186a221d2903002113200a41206a22202903002128200a41286a2221290300212a200c200a290300370300200f202a3703002000202837030020012013370300201e20103703002014200e3703002021201f29030037030020202015290300370300201d2016290300370300201b2017290300370300201a2019290300370300200a20042903a002370300200b200d490d000c020b0b2018210a200f20004f0d0003402000417f6a22002d0000210c201f200a41286a220b2903003703002015200a41206a220d2903003703002016200a41186a22182903003703002017200a41106a221e2903003703002019200a41086a22142903003703002004200a2903003703a0022001200c417f7341306c6a220c41086a221a290300210e200c41106a221b2903002110200c41186a221d2903002113200c41206a22202903002128200c41286a2221290300212a200a200c290300370300200b202a370300200d202837030020182013370300201e20103703002014200e3703002021201f29030037030020202015290300370300201d2016290300370300201b2017290300370300201a2019290300370300200c20042903a002370300200a41306a210a200f2000490d000b0b2008201137030820082012370300200820042903003703102024200529030037030020232029290300370300202220272903003703002007200a20096b41306e201c6a22014d0d03201f202229030037030020152023290300370300201620242903003703002017202529030037030020192026290300370300200420082903003703a0022008200141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e37030020252012370300202620113703002000201f290300370300200d2015290300370300200f2016290300370300200b2017290300370300200c2019290300370300200a20042903a002370300200720016b220c450d04200c20012001200c4b1b210b2007410376210f200a41306a2100024002402001200c417f6a220c490d002000200c200a2003109c02200821000c010b2008200120022003109c02200a2102200c21010b200b200f4f2105200141154f0d010c050b0b201c200c41d499c500104c000b200c200f41d499c500104b000b200120074190bdc7001036000b4189a7c700411c41b8a1cc001033000b20014102490d00200041a07f6a210d410021184101210c0340200c41016a210f02402000200c41306c6a220b290300220e200b41506a220a29030058200b41086a221e2903002211200a41086a221429030022125820112012511b0d00200441186a221a200b41286a221f290300370300200441106a2215200b41206a2216290300370300200441086a2217200b41186a22192903003703002004200b290310370300200b200a290300370300201e2014290300370300200b41106a200a41106a2903003703002019200a41186a2903003703002016200a41206a290300370300201f200a41286a2903003703002000200c417f6a221e41306c6a211402400240201e0d004100211e0c010b2018210c200d210a200e200b41a07f6a220b290300582011200b41086a29030022125820112012511b0d00024002400340200a4188016a200a41d8006a290300370300200a4180016a200a41d0006a290300370300200a41f8006a200a41c8006a290300370300200a41f0006a200a41c0006a290300370300200a41e8006a200a41386a290300370300200a41e0006a200a41306a290300370300200c4101460d01200a2903002112200a41086a210b200c417f6a210c200a41506a210a200e2012562011200b29030022125620112012511b0d000c020b0b4100210c0b2000200c41306c6a2114200c211e0b2014200e370300201420113703082000201e41306c6a220a41286a201a290300370300200a41206a2015290300370300200a41186a2017290300370300200a20042903003703100b201841016a2118200d41306a210d200f210c200f2001470d000b0b200441d0026a24000ba20703027f017e067f230041e0006b2203240041eebec500ad4280808080f00084100122042900002105200341086a41086a200441086a290000370300200320053703082004102941acf7c100ad4280808080a00284100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a22012003413c6a3602002003200341c8006a41086a22063602542003200341386a3602582003200341c8006a360250200341286a200341d0006a10750240024002400240412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad428080808080048410022202290000370348200210292001200441206a36020020032004360258200320063602542003200341c8006a360250200341386a200341d0006a1075200410292003280230220741206a2206200328024022086a2202417f4c0d01200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d012002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21010c010b2007415f4b0d03200b41017422012006200120064b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200710e4071a02400240200120066b2008490d002001210b0c010b20022006490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420066a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000bac0201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00410021020c010b200328021421042003200341186a280200360224200320013602202003200341206a10c8010240024020032802000d0020032802042105410121020c010b4100210220034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b0b2004450d00200110290b2000200536020420002002360200200341e0006a24000ba20703027f017e067f230041e0006b2203240041eebec500ad4280808080f00084100122042900002105200341086a41086a200441086a290000370300200320053703082004102941a8f8c100ad4280808080a00284100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a22012003413c6a3602002003200341c8006a41086a22063602542003200341386a3602582003200341c8006a360250200341286a200341d0006a10750240024002400240412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad428080808080048410022202290000370348200210292001200441206a36020020032004360258200320063602542003200341c8006a360250200341386a200341d0006a1075200410292003280230220741206a2206200328024022086a2202417f4c0d01200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d012002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21010c010b2007415f4b0d03200b41017422012006200120064b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200710e4071a02400240200120066b2008490d002001210b0c010b20022006490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420066a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000be70403057f017e037f23004180016b22022400200241206a41186a22034200370300200241206a41106a22044200370300200241206a41086a220542003703002002420037032041eebec500ad4280808080f000841001220629000021072005200641086a290000370300200220073703202006102941f0f5c100ad4280808080900184100122062900002107200241086a2208200641086a2900003703002002200737030020061029200420022903002207370300200241e0006a41086a22062005290300370300200241e0006a41106a22092007370300200241e0006a41186a220a200829030037030020022002290320370360200241206a200241e0006a10d0010240024020022903204202520d00200041003602200c010b200241d0006a2004280200200110d701200241206a20022802502208200228025810a102200a2003290300370300200920042903003703002006200529030037030020022002290320370360200241cc006a280200210402400240200228024022050d0042002107200241186a4200370300200241106a420037030041082105200241086a4200370300200242003703000c010b200241086a200241e0006a41086a290300370300200241106a200241e0006a41106a290300370300200241186a200241e0006a41186a29030037030020022002290360370300200229024421070b02402002280254450d00200810290b2000200229030037030020002007370224200020053602202000412c6a2004360200200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a2903003703000b20024180016a24000b860301017f230041f0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00200041003602200c010b200328020c21022003200341086a41086a28020036024c20032001360248200341186a200341c8006a1083020240024020032802380d0020034100360258200342013703502003410d360264200320033602602003200341d0006a36026c2003412c6a41013602002003420137021c200341f4eaca003602182003200341e0006a360228200341ec006a41a8a3c800200341186a10371a2003350258422086200335025084100802402003280254450d00200328025010290b200041003602200c010b20002003290318370300200041286a200341186a41286a290300370300200041206a200341186a41206a290300370300200041186a200341186a41186a290300370300200041106a200341186a41106a290300370300200041086a200341186a41086a2903003703000b2002450d00200110290b200341f0006a24000b880a0a047f017e027f037e017f027e067f017e037f017e230041e0016b22032400200241346a2802002104200241306a2802002105200241386a2802002106200341c0006a41186a200241186a290000370300200341c0006a41106a200241106a290000370300200341c0006a41086a200241086a29000037030020032002290000370340024002402006ad42307e2207422088a70d002007a72202417f4c0d000240024020020d00410821080c010b200210272208450d020b4100210920034100360268200320083602602003200241306e3602640240024020060d004200210a4200210b4200210c420021070c010b200641306c210d200341b0016a41106a21064200210a4200210b4200210c42002107200521020340200241286a290300210e200241206a290300210f200341f0006a41186a2210200241186a290300370300200341f0006a41106a2211200241106a290300370300200341f0006a41086a2212200241086a29030037030020032002290300370370200341b0016a41186a2213420037030020064200370300200341b0016a41086a22144200370300200342003703b00141dcbec500ad42808080808001841001221529000021162014201541086a290000370300200320163703b00120151029419fe3c200ad4280808080d00184100122152900002116200341d0016a41086a2217201541086a290000370300200320163703d00120151029200620032903d001370000200641086a201729030037000020034190016a41086a2215201429030037030020034190016a41106a2217200629030037030020034190016a41186a22182013290300370300200320032903b00137039001200341286a20034190016a412010e301200341186a2003290330200341286a41106a290300427f420010e007200341086a20032903184200200328022822191b221642012016420156200341186a41086a290300420020191b22164200522016501b22191b2016420020191b200f200e10d5072018201029030037030020172011290300370300201520122903003703002003200329037037039001200341086a41086a29030021162003290308210e0240024020034190016a200341c0006a412010e707450d0020132018290300370300200620172903003703002014201529030037030020032003290390013703b001024020092003280264470d00200341e0006a2009410110900120032802602108200328026821090b2008200941306c6a221520163703082015200e370300201520032903b001370310201541186a2014290300370300201541206a2006290300370300201541286a20132903003703002003200941016a22093602680c010b427f200b20167c200a200e7c221a200a542214ad7c220f2014200f200b54200f200b511b22141b210b427f201a20141b210a0b200241306a2102427f200720167c200c200e7c2216200c542214ad7c220c2014200c200754200c2007511b22141b2107427f201620141b210c200d41506a220d0d000b0b02402004450d00200441306c450d00200510290b2000200c37032020002003290340370000200041386a200b370300200041306a200a370300200041286a2007370300200041c0006a2003290360370200200041186a200341c0006a41186a290300370000200041106a200341c0006a41106a290300370000200041086a200341c0006a41086a290300370000200041c8006a200341e0006a41086a280200360200200341e0016a24000f0b1038000b1039000bc41502087f047e230041d0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a220341174b0d0020030e180102030405060708090a0b0c0d0e0f101112131415161718010b419cf7ca00412841b8a1cc001033000b200041013a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000c170b200041023a0000200041106a200141106a290300370300200041086a200141086a2903003703000c160b200041033a0000200041106a200141106a290300370300200041086a200141086a2903003703000c150b200041043a0000200041046a200141046a2802003602000c140b200041053a0000200041046a200141046a2802003602000c130b2001410c6a280200220441ffffff3f712004470d1320044105742203417f4c0d13200141046a28020021050240024020030d00410121060c010b200310272206450d150b41002101200241003602182002200636021020022003410576360214200241106a41002004109e012002280218210702402004450d0020044105742108200228021020074105746a21090340200920016a2203200520016a2206290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002008200141206a2201470d000b200441057441606a41057620076a41016a21070b200241086a200736020020022002290310220a3703002000410c6a2007360200200041046a200a370200200041063a00000c120b200041073a00000c110b200041083a0000200020012d00013a00010c100b200041093a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c0f0b2000410a3a0000200041046a200141046a2802003602000c0e0b2000410b3a00000c0d0b2000410c3a00000c0c0b2001410c6a280200220441ffffff3f712004470d0c20044105742203417f4c0d0c200141046a28020021050240024020030d00410121060c010b200310272206450d0e0b41002101200241003602182002200636021020022003410576360214200241106a41002004109e012002280218210702402004450d0020044105742108200228021020074105746a21090340200920016a2203200520016a2206290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002008200141206a2201470d000b200441057441606a41057620076a41016a21070b200241086a200736020020022002290310220a3703002000410c6a2007360200200041046a200a3702002000410d3a00000c0b0b2000410e3a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c0a0b2000410f3a00000c090b200141106a280200220341ffffffff03712003470d0920034102742206417f4c0d09200141046a2802002105200141086a28020021084104210102402006450d00200610272201450d0b0b200241003602182002200136021020022006410276360214200241106a410020031098012002280210200228021822014102746a2008200341027410e4071a200241086a200120036a220136020020022002290310220a370300200041046a2005360200200041086a200a370200200041106a2001360200200041103a00000c080b200141106a2802002203ad42247e220a422088a70d08200aa72206417f4c0d08200141046a2802002108200141086a28020021010240024020060d00410421050c010b200610272205450d0a0b20024100360218200220053602102002200641246e360214200241106a410020031096012002280218210602402003450d00200341246c21052002280210200641246c6a21030340200141086a290200210a200141106a290200210b200141186a290200210c2001290200210d200341206a200141206a280200360200200341186a200c370200200341106a200b370200200341086a200a3702002003200d370200200341246a2103200641016a2106200141246a21012005415c6a22050d000b0b200241086a200636020020022002290310220a370300200041046a2008360200200041086a200a370200200041106a2006360200200041113a00000c070b200041123a0000200041046a200141046a2802003602000c060b200041133a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c050b200041143a0000200041106a200141106a290300370300200041086a200141086a2903003703000c040b200041153a0000200041046a200141046a2902003702000c030b200041163a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c020b2001410c6a280200220320036a22062003490d022006417f4c0d02200141046a28020021050240024020060d00410221080c010b200610272208450d040b200241003602182002200836021020022006410176360214200241106a4100200310a9012002280210200228021822064101746a2005200341017410e4071a200241086a2205200620036a36020020022002290310370300200241106a200141106a10a402200041046a20022903003702002000410c6a2005280200360200200141d8016a2f0100210320012902d001210a200041106a200241106a41c00110e4071a200041d8016a20033b0100200041d0016a200a370300200041173a000020004188026a200141e0016a220141286a29030037030020004180026a200141206a290300370300200041f8016a200141186a290300370300200041f0016a200141106a290300370300200041e8016a200141086a290300370300200041e0016a20012903003703000c010b2001410c6a280200220320036a22062003490d012006417f4c0d01200141046a28020021050240024020060d00410221080c010b200610272208450d030b200241003602182002200836021020022006410176360214200241106a4100200310a9012002280210200228021822064101746a2005200341017410e4071a200241086a2205200620036a36020020022002290310370300200241106a200141106a10a402200041046a20022903003702002000410c6a2005280200360200200141d8016a2f0100210320012902d001210a200041106a200241106a41c00110e4071a200041d8016a20033b0100200041d0016a200a370300200041183a000020004188026a200141e0016a220141286a29030037030020004180026a200141206a290300370300200041f8016a200141186a290300370300200041f0016a200141106a290300370300200041e8016a200141086a290300370300200041e0016a20012903003703000b200241d0016a24000f0b1038000b1039000bc11702057f017e23004180026b22022400024002402001280208220341ffffffff01712003470d0020034103742204417f4c0d00200128020021050240024020040d00410421060c010b200410272206450d020b200241003602f801200220063602f001200220044103763602f401200241f0016a41002003108d0120022802f00120022802f80122044103746a2005200341037410e4071a200041086a200420036a360200200020022903f001370200200141146a2802002204ad420c7e2207422088a70d002007a72203417f4c0d00200128020c21064104210502402003450d00200310272205450d020b200241003602f801200220053602f00120022003410c6e3602f401200241f0016a41002004109d0120022802f00120022802f8012205410c6c6a2006200310e4071a200241086a200520046a360200200220022903f001370300200141206a280200220341ffffffff00712003470d0020034104742204417f4c0d00200128021821064104210502402004450d00200410272205450d020b200241003602f801200220053602f001200220044104763602f401200241f0016a41002003109c0120022802f00120022802f80122044104746a2006200341047410e4071a200241186a200420036a360200200220022903f0013703102001412c6a2802002204ad42147e2207422088a70d002007a72203417f4c0d00200128022421050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341146e3602f401200241f0016a4100200410a00120022802f00120022802f801220641146c6a2005200310e4071a200241286a200620046a360200200220022903f001370320200141386a2802002204ad42187e2207422088a70d002007a72203417f4c0d00200128023021050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341186e3602f401200241f0016a4100200410990120022802f00120022802f801220641186c6a2005200310e4071a200241386a200620046a360200200220022903f001370330200141c4006a2802002204ad421c7e2207422088a70d002007a72203417f4c0d00200128023c21050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f00120022003411c6e3602f401200241f0016a4100200410940120022802f00120022802f8012206411c6c6a2005200310e4071a200241c8006a200620046a360200200220022903f001370340200141d0006a280200220341ffffff3f712003470d0020034105742204417f4c0d00200128024821050240024020040d00410421060c010b200410272206450d020b200241003602f801200220063602f001200220044105763602f401200241f0016a4100200310950120022802f00120022802f80122044105746a2005200341057410e4071a200241d8006a200420036a360200200220022903f001370350200141dc006a2802002204ad42247e2207422088a70d002007a72203417f4c0d00200128025421050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341246e3602f401200241f0016a4100200410960120022802f00120022802f801220641246c6a2005200310e4071a200241e8006a200620046a360200200220022903f001370360200141e8006a2802002204ad42287e2207422088a70d002007a72203417f4c0d00200128026021050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341286e3602f401200241f0016a4100200410ad0120022802f00120022802f801220641286c6a2005200310e4071a200241f8006a200620046a360200200220022903f001370370200141f4006a2802002204ad422c7e2207422088a70d002007a72203417f4c0d00200128026c21050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f00120022003412c6e3602f401200241f0016a4100200410930120022802f00120022802f8012206412c6c6a2005200310e4071a20024188016a200620046a360200200220022903f0013703800120014180016a2802002204ad42307e2207422088a70d002007a72203417f4c0d00200128027821050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341306e3602f401200241f0016a4100200410ab0120022802f00120022802f801220641306c6a2005200310e4071a20024198016a200620046a360200200220022903f001370390012001418c016a2802002204ad42347e2207422088a70d002007a72203417f4c0d0020012802840121050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341346e3602f401200241f0016a4100200410ae0120022802f00120022802f801220641346c6a2005200310e4071a200241a8016a200620046a360200200220022903f0013703a00120014198016a2802002204ad42387e2207422088a70d002007a72203417f4c0d0020012802900121050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f0012002200341386e3602f401200241f0016a4100200410aa0120022802f00120022802f801220641386c6a2005200310e4071a200241b8016a200620046a360200200220022903f0013703b001200141a4016a2802002204ad423c7e2207422088a70d002007a72203417f4c0d00200128029c0121050240024020030d00410421060c010b200310272206450d020b200241003602f801200220063602f00120022003413c6e3602f401200241f0016a41002004109b0120022802f00120022802f8012206413c6c6a2005200310e4071a200241c8016a200620046a360200200220022903f0013703c001200141b0016a280200220341ffffff1f712003470d0020034106742204417f4c0d0020012802a80121050240024020040d00410421060c010b200410272206450d020b200241003602f801200220063602f001200220044106763602f401200241f0016a4100200310910120022802f00120022802f80122044106746a2005200341067410e4071a200241d8016a200420036a360200200220022903f0013703d001200141bc016a2802002204ad42c4007e2207422088a70d002007a72203417f4c0d0020012802b40121010240024020030d00410421050c010b200310272205450d020b200241003602f801200220053602f0012002200341c4006e3602f401200241f0016a41002004109f0120022802f00120022802f801220541c4006c6a2001200310e4071a200241e0016a41086a2201200520046a360200200220022903f0013703e001200041146a200241086a2802003602002000200229030037020c20002002290310370218200041206a200241106a41086a280200360200200020022903203702242000412c6a200241206a41086a28020036020020002002290330370230200041386a200241306a41086a280200360200200041c4006a200241c0006a41086a2802003602002000200229034037023c200041d0006a200241d0006a41086a28020036020020002002290350370248200041dc006a200241e0006a41086a28020036020020002002290360370254200041e8006a200241f0006a41086a28020036020020002002290370370260200041f4006a20024180016a41086a280200360200200020022903800137026c20004180016a20024190016a41086a28020036020020002002290390013702782000418c016a200241a0016a41086a280200360200200020022903a0013702840120004198016a200241b0016a41086a280200360200200020022903b00137029001200041a4016a200241c0016a41086a280200360200200020022903c00137029c01200041b0016a200241d0016a41086a280200360200200020022903d0013702a801200041bc016a2001280200360200200020022903e0013702b40120024180026a24000f0b1038000b1039000b9ddc0206017f037e147f017e127f087e230041800c6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e19000102030405060708090a0b0c0d0e0f101112131415161718000b200341d40a6a4101360200200342013702c40a20034198e3ca003602c00a200341043602bc07200341cce3ca003602b8072003200341b8076a3602d00a200341c00a6a4180a6cc001040000b200141306a2903002104200141286a2903002105200141196a2900002106200141186a2d00002107200141176a2d00002108200141156a2f00002109200141146a2d0000210a200141136a2d0000210b200141116a2f0000210c200141106a2d0000210d2001410f6a2d0000210e2001410d6a2f0000210f2001410c6a2d000021102001410b6a2d00002111200141096a2f00002112200141086a2d00002113200141076a2d00002114200141056a2f00002115200141046a2d00002116200141036a2d00002117200141026a2d00002118200141216a2d0000211920012d0001211a2002411a6a290100211b200241196a2d0000211c200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002122200241106a2d000021232002410e6a2f010021242002410d6a2d000021252002410c6a2d000021262002410a6a2f01002127200241096a2d00002128200241086a2d00002129200241066a2f0100212a200241056a2d0000212b200241046a2d0000212c200241026a2f0100212d41012101024020022d00000d0020022d000141014721010b2003201b3701c0092003201c3a00bf092003201d3a00be092003201e3b01bc092003201f3a00bb09200320203a00ba09200320213b01b809200320223a00b709200320233a00b609200320243b01b409200320253a00b309200320263a00b209200320273b01b009200320283a00af09200320293a00ae092003202a3b01ac092003202b3a00ab092003202c3a00aa092003202d3b01a8090240024020010d00200341900a6a41186a200341a8096a41186a290100370300200341900a6a41106a200341a8096a41106a290100370300200341900a6a41086a200341a8096a41086a290100370300200320032901a8093703900a200341c00a6a200341900a6a10d801200341206a20032802c00a220120032802c80a4180a6cc004100410010c70120032802202102024020032802c40a450d00200110290b024020024101470d0041cab4c0002102410d210141808008211c4103211d0c020b200320063703d007200320073a00cf07200320083a00ce07200320093b01cc072003200a3a00cb072003200b3a00ca072003200c3b01c8072003200d3a00c7072003200e3a00c6072003200f3b01c407200320103a00c307200320113a00c207200320123b01c007200320133a00bf07200320143a00be07200320153b01bc07200320163a00bb07200320173a00ba07200320183a00b9072003201a3a00b807200341c00a6a200341b8076a10db01200341186a20032802c00a220120032802c80a4180a6cc004100410010c70120032802182102024020032802c40a450d00200110290b024020024101470d00410d210141bdb4c00021024180800c211c4103211d0c020b024020054280c8afa0255441002004501b450d00411121014181b4c00021024180801c211c4103211d0c020b200341c00a6a200341900a6a10d80120033502c80a211b20032802c00a2101412010272202450d19200220032903b807370000200241186a200341b8076a41186a290300370000200241106a200341b8076a41106a290300370000200241086a200341b8076a41086a290300370000201b4220862001ad842002ad4280808080800484100320021029024020032802c40a450d00200110290b200341c00a6a200341900a6a10a60220033502c80a211b20032802c00a210102400240201941037122024103470d0041012102420021064101211c0c010b024002400240024020020e03000102000b4100211c0c020b4101211c0c010b4102211c0b2003201c3a009007410110272202450d4f2002201c3a00004100211c42808080801021060b201b4220862001ad8420062002ad8410030240201c0d00200210290b024020032802c40a450d00200110290b200341900a6a10a70241eebec500ad4280808080f00084221b10012202280000210120022900042106200228000c211c2002102941c4f5c100ad4280808080a0018410012202290000212e2002290008212f200210292003202f370190092003202e370188092003201c36018409200320063701fc08200320013601f808200341106a200341f8086a412010fc01200328021421012003280210211c201b10012202280000211d2002290004211b200228000c211e2002102941c8f2c100ad4280808080c001841001220229000021062002290008212e200210292003202e3701900920032006370188092003201e360184092003201b3701fc082003201d3601f808200341086a200341f8086a412010fc01200328020c21022003280208211d200341f8086a200341900a6a10a802200341c00a6a20032802f808221e20032802800910a902410020014100201c1b221c200241d400201d1b6b22022002201c4b1b2102200341c00a6a41106a290300420020032903c00a42015122011b211b20032903c80a420020011b2106024020032802fc08450d00201e10290b200341c00a6a41086a41063a0000200341c90a6a20032903900a370000200341d10a6a200341900a6a41086a2201290300370000200341d90a6a200341900a6a41106a221d290300370000200341e10a6a200341900a6a41186a221e290300370000200341f80a6a221f201b20042006200554201b200454201b2004511b22201b221b370300200341f00a6a2006200520201b2204370300200341043a00c00a200341c00a6a10cb0120012f01002120201d2f01002121201e290300210520032f01900a212220032d00920a212320032d00930a212420032f01940a212520032d00960a212620032d00970a212720032d009a0a212820032d009b0a212920032f019c0a212a20032d009e0a212b20032d009f0a212c20032d00a20a212d20032d00a30a210720032f01a40a210820032d00a60a210920032d00a70a210a2003410036028009200342043703f808200341f8086a41004100201c20026b221e201e201c4b1b109801200328028009211d0240201c20024d0d0020032802f808201d4102746a2101034020012002360200200141046a2101201c200241016a2202470d000b201e201d6a211d0b20034190076a41086a2202201d360200200341900b6a20053703002003418f0b6a200a3a00002003418e0b6a20093a00002003418c0b6a20083b01002003418b0b6a20073a00002003418a0b6a202d3a0000200341880b6a20213b0100200341870b6a202c3a0000200341860b6a202b3a0000200341840b6a202a3b0100200341830b6a20293a0000200341820b6a20283a0000200341800b6a20203b0100200341ff0a6a20273a0000200341fe0a6a20263a0000200341fc0a6a20253b0100200341fb0a6a20243a0000200341fa0a6a20233a0000200320032903f80837039007200320223b01f80a200341c00a6a41186a201b370300200341e80a6a4100360200200341f40a6a2002280200360200200320043703d00a2003201b3703c80a200320043703c00a200342083703e00a20032003290390073702ec0a200342f3e885db96cddbb3203703c809200341c8096a201f2004201b411f10aa02200341f8086a200341b8076a10db0120032802f80821022003200328028009360294072003200236029007200341c00a6a20034190076a10e401024020032802fc08450d00200210290b024020032802e40a2202450d00200241186c450d0020032802e00a10290b0240200341f00a6a28020041ffffffff0371450d0020032802ec0a10290b20004200370308200042003703000c510b4102211d4100211c0b20004200370308200041206a20013602002000411c6a2002360200200041186a201c4180801c71201d7241801272360200200042013703000c4f0b200141106a290300212e200141086a290300212f2002411a6a2901002106200241196a2d00002120200241186a2d00002121200241166a2f01002122200241156a2d00002123200241146a2d00002124200241126a2f01002125200241116a2d00002126200241106a2d00002127410e21012002410e6a2f010021282002410d6a2d000021292002410c6a2d0000212a2002410a6a2f0100212b200241096a2d0000212c200241086a2d0000212d200241066a2f01002107200241056a2d00002108200241046a2d00002109200241026a2f0100210a20022d0001211f20022d0000211e41eebec500ad4280808080f0008410012202280000211c2002290004211b200228000c211d2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc082003201c3601f808200341286a200341f8086a10b10141032102024002402003280228417d71450d0041ecb0c000211c418080f000211d0c010b0240201e41ff01710d00201f41ff01714101470d00200320063703880a200320203a00870a200320213a00860a200320223b01840a200320233a00830a200320243a00820a200320253b01800a200320263a00ff09200320273a00fe09200320283b01fc09200320293a00fb092003202a3a00fa092003202b3b01f8092003202c3a00f7092003202d3a00f609200320073b01f409200320083a00f309200320093a00f2092003200a3b01f009200341b8076a200341f0096a10d801200341c00a6a20032802b807221d20032802c00710cd01200341d90a6a290000211b200341d80a6a2d0000211e200341d70a6a2d0000211f200341d50a6a2f00002120200341d40a6a2d00002121200341d30a6a2d00002122200341d10a6a2f00002123200341d00a6a2d00002124200341cf0a6a2d00002125200341cd0a6a2f00002126200341cc0a6a2d00002127200341cb0a6a2d00002128200341c90a6a2f0000212941082101200341c00a6a41086a2d0000212a20032d00c70a212b20032f00c50a212c20032d00c40a212d20032d00c30a210720032d00c20a210820032d00c10a210920032d00c00a211c024020032802bc07450d00201d10290b0240201c41ff01714101460d0041d7b4c000211c41808004211d0c020b2003201b3703a80a2003201e3a00a70a2003201f3a00a60a200320203b01a40a200320213a00a30a200320223a00a20a200320233b01a00a200320243a009f0a200320253a009e0a200320263b019c0a200320273a009b0a200320283a009a0a200320293b01980a2003202a3a00970a2003202b3a00960a2003202c3b01940a2003202d3a00930a200320073a00920a200320083a00910a200320093a00900a200341a8096a200341900a6a10db01200341c00a6a20032802a809220120032802b00910e201200341f8086a41086a221c200341fc0a6a290200370300200341f8086a41106a221d200341840b6a290200370300200341f8086a41186a221e2003418c0b6a290200370300200341f8086a41206a221f200341940b6a2802003602002003200341f40a6a2902003703f8080240024020032802e00a2220450d00200341c00a6a41186a2903002105200341c00a6a41086a2903002104200341f00a6a2802002102200341ec0a6a2802002121200341e80a6a280200212220032903d00a210620032903c00a211b20032802e40a212320034190076a41206a201f28020036020020034190076a41186a201e29030037030020034190076a41106a201d29030037030020034190076a41086a201c290300370300200320032903f80837039007024020032802ac09450d00200110290b200341c8096a41086a220120034190076a41086a290300370300200341c8096a41106a221c20034190076a41106a290300370300200341c8096a41186a221d20034190076a41186a290300370300200341c8096a41206a221e20034190076a41206a280200360200200341b8076a41186a2005370300200341e8076a2002360200200341e0076a2022360200200341dc076a202336020020032003290390073703c809200320063703c8072003201b3703b807200320213602e407200320203602d807200320043703c0072003418c086a201e28020036020020034184086a201d290300370200200341fc076a201c290300370200200341f4076a2001290300370200200341ec076a20032903c809370200200341f8086a200341f0096a10a802200341c00a6a20032802f808220120032802800910a902200341c00a6a41106a290300420020032903c00a42015122021b210520032903c80a420020021b2106024020032802fc08450d0020011029200341b8076a41086a290300210420032903b807211b0b2006201b7d2230200656200520047d2006201b54ad7d220620055620062005511b0d01200341b8076a41186a22022903002131200320032903c8072232202f20302030202f562006202e562006202e511b22011b22057c222f3703c80720022031202e200620011b22067c202f203254ad7c37030020032005201b7c221b3703b8072003200620047c201b200554ad7c22043703c007200341c00a6a41386a2006370300200341f00a6a2005370300200341c00a6a41086a41063a0000200341c90a6a20032903f009370000200341d10a6a200341f0096a41086a290300370000200341d90a6a200341800a6a290300370000200341e10a6a200341f0096a41186a290300370000200341043a00c00a200341c00a6a10cb01200342f3e885db96cddbb3203703900720034190076a200341b8076a41386a201b2004411f10aa02200341c00a6a200341900a6a10db0120032802c00a2102200320032802c80a3602fc08200320023602f808200341b8076a200341f8086a10e401024020032802c40a450d00200210290b024020032802dc072202450d00200241186c450d0020032802d80710290b20032802e80741ffffffff0371450d5120032802e40710290c510b024020032802ac09450d00200110290b41dfb4c000211c410d21014100211d0c020b024020032802dc072202450d00200241186c450d0020032802d80710290b20032802e80741ffffffff0371450d4f20032802e40710290c4f0b410221024100211d0b20004200370308200041206a20013602002000411c6a201c360200200041186a201d418080fc007120027241801272360200200042013703000c4e0b200141106a290300212e200141086a290300212f2002411a6a2901002106200241196a2d00002120200241186a2d00002121200241166a2f01002122200241156a2d00002123200241146a2d00002124200241126a2f01002125200241116a2d00002126200241106a2d00002127410e21012002410e6a2f010021282002410d6a2d000021292002410c6a2d0000212a2002410a6a2f0100212b200241096a2d0000212c200241086a2d0000212d200241066a2f01002107200241056a2d00002108200241046a2d00002109200241026a2f0100210a20022d0001211f20022d0000211e41eebec500ad4280808080f0008410012202280000211c2002290004211b200228000c211d2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc082003201c3601f808200341386a200341f8086a10b10141032102024002402003280238417d71450d0041ecb0c000211c418080f000211d0c010b0240201e41ff01710d00201f41ff01714101470d00200320063703a80a200320203a00a70a200320213a00a60a200320223b01a40a200320233a00a30a200320243a00a20a200320253b01a00a200320263a009f0a200320273a009e0a200320283b019c0a200320293a009b0a2003202a3a009a0a2003202b3b01980a2003202c3a00970a2003202d3a00960a200320073b01940a200320083a00930a200320093a00920a2003200a3b01900a200341f0096a200341900a6a10db01200341c00a6a20032802f009221f20032802f80910e201200341f8086a41086a2220200341fc0a6a290200370300200341f8086a41106a2221200341840b6a290200370300200341f8086a41186a22222003418c0b6a290200370300200341f8086a41206a2223200341940b6a2802003602002003200341f40a6a2902003703f8080240024020032802e00a221d450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002105200341f00a6a280200211e200341ec0a6a2802002124200341e80a6a280200210120032903d00a210420032903c00a210620032802e40a211c20034190076a41206a202328020036020020034190076a41186a202229030037030020034190076a41106a202129030037030020034190076a41086a2020290300370300200320032903f80837039007024020032802f409450d00201f10290b200341c8096a41086a221f20034190076a41086a290300370300200341c8096a41106a222020034190076a41106a290300370300200341c8096a41186a222120034190076a41186a290300370300200341c8096a41206a222220034190076a41206a280200360200200341b8076a41186a201b370300200341e8076a201e360200200341e0076a2001360200200341dc076a201c36020020032003290390073703c809200320043703c807200320063703b807200320243602e4072003201d3602d807200320053703c0072003418c086a202228020036020020034184086a2021290300370200200341fc076a2020290300370200200341f4076a201f290300370200200341ec076a20032903c8093702002001411f4d0d010240201c450d00201c41186c450d00201d102920032802e807211e0b41f5b3c000211c410c210141808020211d201e41ffffffff0371450d0320032802e40710290c030b024020032802f409450d00201f10290b41dfb4c000211c410d21014100211d0c020b200341b8076a41206a210202402004202f2004202f54201b202e54201b202e511b221e1b2205201b202e201e1b2206844200510d00200341b8076a41186a4200201b20067d2004200554ad7d222e200420057d222f4280c8afa025544100202e501b221e1b37030020034200202f201e1b3703c80741eebec500ad4280808080f000841001221f2800002120201f290004212e201f28000c2121201f102941c4f5c100ad4280808080a001841001221f290000212f201f2900082130201f102920032030370190092003202f3701880920032021360184092003202e3701fc08200320203601f808200341306a200341f8086a412010fc01201b2006201e1b211b20042005201e1b21042003280234411c6a411c20032802301b211e02402001201c470d002002201c4101108f0120032802e007210120032802d807211d0b201d200141186c6a2201201b370308200120043703002001201e360210200320032802e00741016a3602e007200342f3e885db96cddbb3203703900720034190076a200341b8076a41386a20032903b807200341b8076a41086a290300411f10aa02200341c00a6a200341900a6a10db0120032802c00a2101200320032802c80a3602fc08200320013602f808200341b8076a200341f8086a10e401024020032802c40a450d00200110290b200341c00a6a41386a201b370300200341f00a6a2004370300200341c00a6a41086a41073a0000200341c90a6a20032903f007370000200341d10a6a200341f8076a290300370000200341d90a6a20034180086a290300370000200341e10a6a20034188086a290300370000200341043a00c00a200341c00a6a10cb010b0240200241046a2802002201450d00200141186c450d00200228020010290b024020032802e80741ffffffff0371450d0020032802e40710290b20004200370308200042003703000c4f0b410221024100211d0b20004200370308200041206a20013602002000411c6a201c360200200041186a201d418080fc007120027241801272360200200042013703000c4d0b2002411a6a2901002106200241196a2d00002121200241186a2d00002122200241166a2f01002123200241156a2d00002124200241146a2d00002125200241126a2f01002126200241116a2d00002127200241106a2d00002128410e211c2002410e6a2f010021292002410d6a2d0000212a2002410c6a2d0000212b2002410a6a2f0100212c200241096a2d0000212d200241086a2d00002107200241066a2f01002108200241056a2d00002109200241046a2d0000210a200241026a2f0100211e200141046a280200210b20022d0001212020022d0000211f41eebec500ad4280808080f000841001220228000021012002290004211b200228000c211d2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc08200320013601f808200341c8006a200341f8086a10b101024002402003280248417d71450d0041ecb0c000211d4189382102410321010c010b0240201f41ff01710d00202041ff01714101470d00200320063703880a200320213a00870a200320223a00860a200320233b01840a200320243a00830a200320253a00820a200320263b01800a200320273a00ff09200320283a00fe09200320293b01fc092003202a3a00fb092003202b3a00fa092003202c3b01f8092003202d3a00f709200320073a00f609200320083b01f409200320093a00f3092003200a3a00f2092003201e3a00f0092003201e4108763a00f109200341900a6a200341f0096a10db01200341c00a6a20032802900a220220032802980a10e201200341f8086a41086a2201200341fc0a6a290200370300200341f8086a41106a221c200341840b6a290200370300200341f8086a41186a221d2003418c0b6a290200370300200341f8086a41206a221e200341940b6a2802003602002003200341f40a6a2902003703f80802400240024020032802e00a221f450d00200341c00a6a41186a290300211b200341c00a6a41086a290300212e200341f00a6a2802002120200341ec0a6a2802002121200341e80a6a280200212220032903d00a210420032903c00a212f20032802e40a212320034190076a41206a201e28020036020020034190076a41186a201d29030037030020034190076a41106a201c29030037030020034190076a41086a2001290300370300200320032903f80837039007024020032802940a450d00200210290b200341c8096a41086a220220034190076a41086a290300370300200341c8096a41106a220120034190076a41106a290300370300200341c8096a41186a221c20034190076a41186a290300370300200341c8096a41206a221d20034190076a41206a280200360200200341b8076a41186a221e201b370300200341e8076a2020360200200341e0076a2022360200200341dc076a202336020020032003290390073703c809200320043703c8072003202f3703b807200320213602e4072003201f3602d8072003202e3703c0072003418c086a201d28020036020020034184086a2220201c290300370200200341fc076a22212001290300370200200341f4076a22222002290300370200200341ec076a20032903c809370200200341900a6a41186a20034188086a2223290300370300200341900a6a41106a20034180086a2224290300370300200341900a6a41086a200341f8076a2225290300370300200320032903f0073703900a41eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c2002102941c4f5c100ad4280808080a001841001220229000021042002290008210520021029200320053701900920032004370188092003201c360184092003201b3701fc08200320013601f808200341c0006a200341f8086a412010fc0120032802404101460d01201e290300213020032903c807213120032802e007211c0c020b024020032802940a450d00200210290b410d211c41dfb4c000211d41092102410321010c030b2003280244211d200341f8086a41086a200341e4076a221f41086a2802003602002003201f2902003703f80820032802d8072126201e2903002130200341f2076a2d00002127200341f3076a2d0000212820222f01002129200341f6076a2d0000212a200341f7076a2d0000212b20252f01002125200341fa076a2d0000212c200341fb076a2d0000212d20212f01002107200341fe076a2d00002108200341ff076a2d0000210920242f0100212420034182086a2d0000210a20034183086a2d0000210c20202f0100210d20034186086a2d0000210e20034187086a2d0000210f2023290300213220032903c807213120032f01f007212320032802dc072121202f211b202e210402400240024020032802e0072222450d002026202241186c6a211e202241186c41686a2101202f211b202e2104202621020340200241086a290300210620022903002105201d200241106a280200221c490d024200200420067d201b200554ad7d2206201b20057d2205201b56200620045620062004511b221c1b210442002005201c1b211b200141686a2101200241186a2202201e470d000b0b410821204100210202402021450d00202141186c450d00202610290b4100211c0c010b411810272220450d18202020053703002020201c3602102020200637030820034281808080103702c40a200320203602c00a0240024020010d004101211c0c010b200241186a2110202241186c20266a41686a21114101211c03402010210202400340200241086a290300210620022903002105201d200241106a2802002201490d014200200420067d201b200554ad7d2206201b20057d2205201b56200620045620062004511b22011b21044200200520011b211b200241186a2202201e470d000c030b0b0240201c20032802c40a470d00200341c00a6a201c4101108f0120032802c00a21200b200241186a21102020201c41186c6a2222200136021020222006370308202220053703002003201c41016a221c3602c80a20112002470d000b0b02402021450d00202141186c450d00202610290b20032802c40a21020b201f20032903f808370200200341d0076a2030370300201f41086a200341f8086a41086a280200360200200320313703c8072003201b3703b8072003201c3602e007200320023602dc07200320203602d80720032032370388082003200f3a0087082003200e3a0086082003200d3b0184082003200c3a0083082003200a3a008208200320243b018008200320093a00ff07200320083a00fe07200320073b01fc072003202d3a00fb072003202c3a00fa07200320253b01f8072003202b3a00f7072003202a3a00f607200320293b01f407200320283a00f307200320273a00f207200320233b01f007200320043703c0070b02400240201c0d002031203084500d010b200342f3e885db96cddbb3203703900720034190076a200341f0076a20032903b807200341c0076a290300411f10aa02200341c00a6a200341f0096a10db0120032802c00a2102200320032802c80a3602fc08200320023602f808200341b8076a200341f8086a10e401024020032802c40a450d00200210290b420121040c4d0b200341c00a6a200341900a6a200b10ab02024020032d00c00a22014104470d00200342f3e885db96cddbb3203703a809200341a8096a200341900a6a10ac02420021040c4d0b20032d00c30a411074210220032f00c10a211e200341c80a6a280200211c20032802c40a211d024020032802dc07221f450d00201f41186c450d0020032802d80710290b201e200272210220032802e80741ffffffff0371450d0120032802e40710290c010b410221010b200020023b00192000201d36021c200042003703082000411b6a20024110763a0000200041206a201c360200200041186a20013a0000200042013703000c4c0b2002411a6a2901002106200241196a2d00002121200241186a2d00002122200241166a2f01002123200241156a2d00002124200241146a2d00002125200241126a2f01002126200241116a2d00002127200241106a2d00002128410e211c2002410e6a2f010021292002410d6a2d0000212a2002410c6a2d0000212b2002410a6a2f0100212c200241096a2d0000212d200241086a2d00002107200241066a2f01002108200241056a2d00002109200241046a2d0000210a200241026a2f0100210b200141046a280200211f20022d0001212020022d0000211e41eebec500ad4280808080f000841001220228000021012002290004211b200228000c211d2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc08200320013601f808200341d0006a200341f8086a10b10141032102024002402003280250417d71450d0041ecb0c0002101418092f000211d0c010b0240201e41ff01710d00202041ff01714101470d00200320063703a80a200320213a00a70a200320223a00a60a200320233b01a40a200320243a00a30a200320253a00a20a200320263b01a00a200320273a009f0a200320283a009e0a200320293b019c0a2003202a3a009b0a2003202b3a009a0a2003202c3b01980a2003202d3a00970a200320073a00960a200320083b01940a200320093a00930a2003200a3a00920a2003200b3b01900a200341f0096a200341900a6a10db01200341c00a6a20032802f009221e20032802f80910e201200341f8086a41086a2220200341fc0a6a290200370300200341f8086a41106a2221200341840b6a290200370300200341f8086a41186a22222003418c0b6a290200370300200341f8086a41206a2223200341940b6a2802003602002003200341f40a6a2902003703f808024020032802e00a2201450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a280200211c200341ec0a6a280200211d200341e80a6a280200212420032903d00a210520032903c00a210620032802e40a210220034190076a41206a202328020036020020034190076a41186a202229030037030020034190076a41106a202129030037030020034190076a41086a2020290300370300200320032903f80837039007024020032802f409450d00201e10290b200341c8096a41086a221e20034190076a41086a290300370300200341c8096a41106a222020034190076a41106a290300370300200341c8096a41186a222120034190076a41186a290300370300200341c8096a41206a222220034190076a41206a280200360200200341b8076a41186a201b370300200341e8076a201c360200200341e0076a2024360200200341dc076a200236020020032003290390073703c809200320053703c807200320063703b8072003201d3602e407200320013602d807200320043703c0072003418c086a202228020036020020034184086a2021290300370200200341fc076a2020290300370200200341f4076a201e290300370200200341ec076a20032903c809370200200341c00a6a200341f0076a221e10d90120033502c80a42208620032802c00a2220ad841004024020032802c40a450d00202010290b200341c00a6a201e10de0120033502c80a211b20032802c00a211e200341003a00fd080240024002400240201f41c000490d00201f41808001490d01201f418080808004490d02200341053a00fd08200341033a00f8082003201f3600f9084280808080d00021040c030b200341013a00fd082003201f4102743a00f80842808080801021040c020b200341023a00fd082003201f4102744101723b01f80842808080802021040c010b200341043a00fd082003201f4102744102723602f8084280808080c00021040b201b422086201ead842004200341f8086aad841003024020032d00fd08450d00200341003a00fd080b024020032802c40a450d00201e10290b02402002450d00200241186c450d00200110290b0240201c41ffffffff0371450d00201d10290b20004200370308200042003703000c4e0b024020032802f409450d00201e10290b41dfb4c0002101410d211c418012211d0c010b41022102418012211d0b20004200370308200041206a201c3602002000411c6a2001360200200041186a201d200272360200200042013703000c4b0b2001410c6a2802002122200141086a280200211e200141046a280200211d2002411a6a2901002106200241196a2d00002123200241186a2d00002124200241166a2f01002125200241156a2d00002126200241146a2d00002127200241126a2f01002128200241116a2d00002129200241106a2d0000212a410e21012002410e6a2f0100212b2002410d6a2d0000212c2002410c6a2d0000212d2002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241066a2f0100210a200241056a2d0000210b200241046a2d0000210c200241026a2f0100210d20022d0001212120022d0000212041eebec500ad4280808080f0008410012202280000211c2002290004211b200228000c211f2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201f360184092003201b3701fc082003201c3601f808200341e0006a200341f8086a10b10141032102024002402003280260417d71450d0041ecb0c000211c411c211f0c010b0240202041ff01710d00202141ff01714101470d00200320063703880a200320233a00870a200320243a00860a200320253b01840a200320263a00830a200320273a00820a200320283b01800a200320293a00ff092003202a3a00fe092003202b3b01fc092003202c3a00fb092003202d3a00fa09200320073b01f809200320083a00f709200320093a00f6092003200a3b01f4092003200b3a00f3092003200c3a00f2092003200d3b01f009200341900a6a200341f0096a10db01200341c00a6a20032802900a220120032802980a10e201200341f8086a41086a221c200341fc0a6a290200370300200341f8086a41106a221f200341840b6a290200370300200341f8086a41186a22202003418c0b6a290200370300200341f8086a41206a2221200341940b6a2802003602002003200341f40a6a2902003703f8080240024020032802e00a2228450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a2802002129200341ec0a6a280200212a200341e80a6a280200212320032903d00a210520032903c00a210620032802e40a212720034190076a41206a202128020036020020034190076a41186a202029030037030020034190076a41106a201f29030037030020034190076a41086a201c290300370300200320032903f80837039007024020032802940a450d00200110290b200341c8096a41086a220120034190076a41086a290300370300200341c8096a41106a221c20034190076a41106a290300370300200341c8096a41186a221f20034190076a41186a290300370300200341c8096a41206a222020034190076a41206a280200360200200341b8076a41186a201b370300200341e8076a2029360200200341e0076a2023360200200341dc076a202736020020032003290390073703c809200320053703c807200320063703b8072003202a3602e407200320283602d807200320043703c0072003418c086a202028020036020020034184086a201f290300370200200341fc076a201c290300370200200341f4076a2001290300370200200341ec076a20032903c80937020020220d0102402027450d00202741186c450d00202810290b0240202941ffffffff0371450d00202a10290b41b1b4c000211c410c21014104211f0c030b024020032802940a450d00200110290b41dfb4c000211c410d21014100211f0c020b024020224105742202450d00200341c00a6a41186a2201201d41186a290000370300200341c00a6a41106a221c201d41106a290000370300200341c00a6a41086a221f201d41086a2900003703002003201d2900003703c00a412010272225450d15202520032903c00a370000202541186a2001290300370000202541106a201c290300370000202541086a201f29030037000020034281808080103702fc08200320253602f8080240201d20026a201d41206a2202470d00410121020c460b200341900a6a41186a221f200241186a290000370300200341900a6a41106a2220200241106a290000370300200341900a6a41086a2221200241086a290000370300200320022900003703900a202241057421264102210241c00021014101211c0340200341c00a6a41186a2222201f290300370300200341c00a6a41106a22232020290300370300200341c00a6a41086a22242021290300370300200320032903900a3703c00a02402002417f6a201c470d00200341f8086a201c4101109e0120032802f80821250b202520016a41606a221c20032903c00a370000201c41186a2022290300370000201c41106a2023290300370000201c41086a2024290300370000200320023602800920262001460d4620024110460d46201f201d20016a221c41186a2900003703002020201c41106a2900003703002021201c41086a2900003703002003201c2900003703900a200141206a2101200241016a210220032802fc08211c0c000b0b41002102201e41ffffff3f710d1e0c430b410221020b201e41ffffff3f71450d46201d10290c460b2002411a6a2901002106200241196a2d00002120200241186a2d00002121200241166a2f01002122200241156a2d00002123200241146a2d00002124200241126a2f01002125200241116a2d00002126200241106a2d00002127410e21012002410e6a2f010021282002410d6a2d000021292002410c6a2d0000212a2002410a6a2f0100212b200241096a2d0000212c200241086a2d0000212d200241066a2f01002107200241056a2d00002108200241046a2d00002109200241026a2f0100210a20022d0001211f20022d0000211e41eebec500ad4280808080f0008410012202280000211c2002290004211b200228000c211d2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc082003201c3601f808200341e8006a200341f8086a10b10141032102024002402003280268417d71450d0041ecb0c000211c418092f000211d0c010b0240201e41ff01710d00201f41ff01714101470d00200320063703a80a200320203a00a70a200320213a00a60a200320223b01a40a200320233a00a30a200320243a00a20a200320253b01a00a200320263a009f0a200320273a009e0a200320283b019c0a200320293a009b0a2003202a3a009a0a2003202b3b01980a2003202c3a00970a2003202d3a00960a200320073b01940a200320083a00930a200320093a00920a2003200a3b01900a200341f0096a200341900a6a10db01200341c00a6a20032802f009221e20032802f80910e201200341f8086a41086a221f200341fc0a6a290200370300200341f8086a41106a2220200341840b6a290200370300200341f8086a41186a22212003418c0b6a290200370300200341f8086a41206a2222200341940b6a2802003602002003200341f40a6a2902003703f808024020032802e00a2201450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a280200211c200341ec0a6a280200211d200341e80a6a280200212320032903d00a210520032903c00a210620032802e40a210220034190076a41206a202228020036020020034190076a41186a202129030037030020034190076a41106a202029030037030020034190076a41086a201f290300370300200320032903f80837039007024020032802f409450d00201e10290b200341c8096a41086a221e20034190076a41086a290300370300200341c8096a41106a221f20034190076a41106a290300370300200341c8096a41186a222020034190076a41186a290300370300200341c8096a41206a222120034190076a41206a280200360200200341b8076a41186a201b370300200341e8076a201c360200200341e0076a2023360200200341dc076a200236020020032003290390073703c809200320053703c807200320063703b8072003201d3602e407200320013602d807200320043703c0072003418c086a202128020036020020034184086a2020290300370200200341fc076a201f290300370200200341f4076a201e290300370200200341ec076a20032903c809370200200341c00a6a200341f0076a221e10de0120033502c80a42208620032802c00a221fad841004024020032802c40a450d00201f10290b200341c00a6a201e10d90120033502c80a42208620032802c00a221ead841004024020032802c40a450d00201e10290b02402002450d00200241186c450d00200110290b0240201c41ffffffff0371450d00201d10290b20004200370308200042003703000c4c0b024020032802f409450d00201e10290b41dfb4c000211c410d2101418012211d0c010b41022102418012211d0b20004200370308200041206a20013602002000411c6a201c360200200041186a201d200272360200200042013703000c490b0240024020022d00000d0020022d00014101470d0020012d0001212d200241196a2d0000211c200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002122200241106a2d000021232002410e6a2f010021242002410d6a2d000021252002410c6a2d000021262002410a6a2f01002127200241096a2d00002128200241086a2d00002129200241066a2f0100212a200241056a2d0000212b200241046a2d0000212c200241026a2f0100210120032002411a6a2901003703a80a2003201c3a00a70a2003201d3a00a60a2003201e3b01a40a2003201f3a00a30a200320203a00a20a200320213b01a00a200320223a009f0a200320233a009e0a200320243b019c0a200320253a009b0a200320263a009a0a200320273b01980a200320283a00970a200320293a00960a2003202a3b01940a2003202b3a00930a2003202c3a00920a200320013a00900a200320014108763a00910a200341f0096a200341900a6a10db01200341c00a6a20032802f009220120032802f80910e201200341f8086a41086a221f200341fc0a6a290200370300200341f8086a41106a2220200341840b6a290200370300200341f8086a41186a22212003418c0b6a290200370300200341f8086a41206a2222200341940b6a2802003602002003200341f40a6a2902003703f808024020032802e00a221c450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a280200211d200341ec0a6a280200211e200341e80a6a280200212320032903d00a210520032903c00a210620032802e40a210220034190076a41206a202228020036020020034190076a41186a202129030037030020034190076a41106a202029030037030020034190076a41086a201f290300370300200320032903f80837039007024020032802f409450d00200110290b200341c8096a41086a220120034190076a41086a290300370300200341c8096a41106a221f20034190076a41106a290300370300200341c8096a41186a222020034190076a41186a290300370300200341c8096a41206a222120034190076a41206a280200360200200341b8076a41186a201b370300200341e8076a201d360200200341e0076a2023360200200341dc076a200236020020032003290390073703c809200320053703c807200320063703b8072003201e3602e4072003201c3602d807200320043703c0072003418c086a202128020036020020034184086a2020290300370200200341fc076a201f290300370200200341f4076a2001290300370200200341ec076a20032903c809370200200341c00a6a200341f0076a10a60220033502c80a211b20032802c00a211f02400240202d41037122014103470d004101210142002104410121200c010b024002400240024020010e03000102000b410021200c020b410121200c010b410221200b200320203a009007410110272201450d49200120203a00004100212042808080801021040b201b422086201fad8420042001ad841003024020200d00200110290b024020032802c40a450d00201f10290b02402002450d00200241186c450d00201c10290b0240201d41ffffffff0371450d00201e10290b20004200370308200042003703000c4b0b024020032802f409450d00200110290b41831221020c010b41821221020b20004200370308200041206a410d3602002000411c6a41dfb4c000360200200041186a2002360200200042013703000c480b200141196a2900002104200141186a2d00002107200141176a2d00002108200141156a2f00002109200141146a2d0000210a200141136a2d0000210b200141116a2f0000210c200141106a2d0000210d2001410f6a2d0000210e2001410d6a2f0000210f2001410c6a2d000021102001410b6a2d00002111200141096a2f00002112200141086a2d00002113200141076a2d00002114200141056a2f00002115200141046a2d00002116200141036a2d00002117200141026a2d0000211820012d0001211a2002411a6a290100211b200241196a2d0000211c200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002122200241106a2d000021232002410e6a2f010021242002410d6a2d000021252002410c6a2d000021262002410a6a2f01002127200241096a2d00002128200241086a2d00002129200241066a2f0100212a200241056a2d0000212b200241046a2d0000212c200241026a2f0100212d41012101024020022d00000d0020022d000141014721010b2003201b370190092003201c3a008f092003201d3a008e092003201e3b018c092003201f3a008b09200320203a008a09200320213b018809200320223a008709200320233a008609200320243b018409200320253a008309200320263a008209200320273b018009200320283a00ff08200320293a00fe082003202a3b01fc082003202b3a00fb082003202c3a00fa082003202d3b01f8080240024020010d00200341f0096a41186a200341f8086a41186a290100370300200341f0096a41106a200341f8086a41106a290100370300200341f0096a41086a200341f8086a41086a290100370300200320032901f8083703f009200341b8076a200341f0096a10d801200341c00a6a20032802b807220120032802c00710cd0120032802bc0721020240024020032d00c00a4101470d00200341d90a6a290000211b200341c00a6a41186a2d0000211c200341d70a6a2d0000211d200341d50a6a2f0000211e200341d40a6a2d0000211f200341d30a6a2d00002120200341d10a6a2f00002121200341c00a6a41106a2d00002122200341cf0a6a2d00002123200341cd0a6a2f00002124200341cc0a6a2d00002125200341cb0a6a2d00002126200341c90a6a2f00002127200341c00a6a41086a2d0000212820032d00c70a212920032f00c50a212a20032d00c40a212b20032d00c30a212c20032d00c20a212d20032d00c10a211902402002450d00200110290b2003201b3703e0092003201c3a00df092003201d3a00de092003201e3b01dc092003201f3a00db09200320203a00da09200320213b01d809200320223a00d709200320233a00d609200320243b01d409200320253a00d309200320263a00d209200320273b01d009200320283a00cf09200320293a00ce092003202a3b01cc092003202b3a00cb092003202c3a00ca092003202d3a00c909200320193a00c809200320043703a807200320073a00a707200320083a00a607200320093b01a4072003200a3a00a3072003200b3a00a2072003200c3b01a0072003200d3a009f072003200e3a009e072003200f3b019c07200320103a009b07200320113a009a07200320123b019807200320133a009707200320143a009607200320153b019407200320163a009307200320173a009207200320183a0091072003201a3a009007200341c00a6a20034190076a10db01200341f0006a20032802c00a220120032802c80a4180a6cc004100410010c70120032802702102024020032802c40a450d00200110290b20024101470d0141bdb4c0002102410d21014180800c211c4103211d0c030b02402002450d00200110290b41d7b4c00021024108210141808004211c4103211d0c020b20034190076a200341c8096a412010e707450d3f200341c00a6a200341f0096a10d80120033502c80a211b20032802c00a2101412010272202450d112002200329039007370000200241186a20034190076a41186a290300370000200241106a20034190076a41106a290300370000200241086a20034190076a41086a290300370000201b4220862001ad842002ad4280808080800484100320021029024020032802c40a450d00200110290b200341a8096a200341c8096a10db01200341c00a6a20032802a809220120032802b009221c10e201024020032802e00a2202450d00201cad4220862001ad8410040b200341b8076a41086a221c200341fc0a6a290200370300200341b8076a41106a221d200341840b6a290200370300200341b8076a41186a221e2003418c0b6a290200370300200341b8076a41206a221f200341940b6a2802003602002003200341f40a6a2902003703b807200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a2802002120200341ec0a6a2802002121200341e80a6a280200212220032903d00a210520032903c00a210620032802e40a2123200341f8086a41206a2224201f280200360200200341f8086a41186a221f201e290300370300200341f8086a41106a221e201d290300370300200341f8086a41086a221d201c290300370300200320032903b8073703f80802402002450d00200341900a6a41206a2024280200360200200341900a6a41186a201f290300370300200341900a6a41106a201e290300370300200341900a6a41086a201d290300370300200320032903f8083703900a024020032802ac09450d00200110290b200341c00a6a41186a201b370300200341f00a6a2020360200200341e80a6a2022360200200341e40a6a2023360200200341f40a6a20032903900a370200200341fc0a6a200341900a6a41086a290300370200200341840b6a200341900a6a41106a2903003702002003418c0b6a200341900a6a41186a290300370200200341940b6a200341900a6a41206a280200360200200320053703d00a200320043703c80a200320063703c00a200320213602ec0a200320023602e00a200341f8086a20034190076a10db01200335028009211b20032802f808211f200341003602c007200342013703b807412010272202450d47200220032903f80a370000200241086a200341800b6a290300370000200241106a200341880b6a290300370000200241186a200341900b6a290300370000200320023602b807200342a080808080043702bc072003200341c00a6a3602a809200341a8096a200341b8076a10e5012003200341c00a6a41106a3602a809200341a8096a200341b8076a10e50120032802e00a210220032802e80a2201200341b8076a107102402001450d002002200141186c6a21010340200320023602a809200341a8096a200341b8076a10e501200241106a200341b8076a10e6012001200241186a2202470d000b0b20032802ec0a212020032802f40a2202200341b8076a10710240024020032802bc07221e20032802c00722016b2002410274221c490d0020032802b8072102201e211d0c010b2001201c6a22022001490d45201e410174221d2002201d20024b1b221d4100480d4502400240201e0d000240201d0d00410121020c020b201d10272202450d4a0c010b20032802b8072102201e201d460d002002201e201d102b2202450d490b2003201d3602bc07200320023602b8070b200220016a2020201c10e4071a201b422086201fad842001201c6aad4220862002ad8410030240201d450d00200210290b024020032802fc08450d00201f10290b024020032802e40a2202450d00200241186c450d0020032802e00a10290b20032802f00a41ffffffff0371450d4020032802ec0a10290c400b20032802ac09450d3f200110290c3f0b4102211d4100211c0b20004200370308200041206a20013602002000411c6a2002360200200041186a201c4180800c71201d7241801272360200200042013703000c470b0240024020022d000120022d000041004772450d00200041186a41023602004201211b0c010b200141046a280200210141eebec500ad4280808080f0008410012202280000211c2002290004211b200228000c211d20021029419cf3c100ad4280808080e001841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc082003201c3601f808200320013602c00a200341f8086aad4280808080800484200341c00a6aad4280808080c0008410034200211b0b2000201b370300200042003703080c460b024020022d000120022d0000410047720d0041eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c200210294180fac100ad42808080808001841001220229000021042002290008210520021029200320053701900920032004370188092003201c360184092003201b3701fc08200320013601f808200341023a009007410110272202450d43200220032d0090073a0000200341f8086aad42808080808004842002ad4280808080108410032002102920004200370308200042003703000c460b20004200370308200041186a4102360200200042013703000c450b024020022d000120022d0000410047720d0041eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c200210294180fac100ad42808080808001841001220229000021042002290008210520021029200320053701900920032004370188092003201c360184092003201b3701fc08200320013601f808200341013a009007410110272202450d42200220032d0090073a0000200341f8086aad42808080808004842002ad4280808080108410032002102920004200370308200042003703000c450b20004200370308200041186a4102360200200042013703000c440b200141086a280200211c200141046a280200211d024020022d000120022d0000410047720d002001410c6a280200210141eebec500ad4280808080f0008410012202280000211e2002290004211b200228000c211f2002102941f4f3c100ad4280808080d001841001220229000021042002290008210520021029200320053701900920032004370188092003201f360184092003201b3701fc082003201e3601f808200341203602c40a2003200341f8086a3602c00a201d2001200341c00a6a10b9010240201c41ffffff3f71450d00201d10290b20004200370308200042003703000c440b0240201c41ffffff3f71450d00201d10290b20004200370308200041186a4102360200200042013703000c430b200141246a280200211c200341d80a6a200141196a290000370300200341c00a6a41106a200141116a290000370300200341c00a6a41086a200141096a290000370300200320012900013703c00a02400240024020022d000120022d0000410047720d00200341b8076a200341c00a6a201c10ab0220032d00b80722024104460d0220032f00b90720032d00bb07411074722101200341b8076a41086a35020042208620033502bc0784211b0c010b410221020b200042003703082000411c6a201b370200200041186a2001410874200272360200200042013703000c430b200342f3e885db96cddbb3203703900a200341900a6a200341c00a6a10ac0220004200370308200042003703000c420b024020022d000120022d0000410047720d0041eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c200210294180fac100ad42808080808001841001220229000021042002290008210520021029200320053701900920032004370188092003201c360184092003201b3701fc08200320013601f808200341033a009007410110272202450d3f200220032d0090073a0000200341f8086aad42808080808004842002ad4280808080108410032002102920004200370308200042003703000c420b20004200370308200041186a4102360200200042013703000c410b200241036a2d0000211c20022f0001211d200141106a280200211e2001410c6a2802002127200141086a2802002126200141046a28020021280240024020022d0000221f417f6a220141034b0d00024020010e0400010102000b200241046a2d00000d00200241086a2802004102742002410c6a28020041036c4f0d010b201d201c41107472201f4100477241ff0171450d004102212041801221020c360b410321200240201e0d0041b1b4c000211c410c21014180921021020c360b201e41016a210120262102024003402001417f6a22014102490d01200241046a211c2002280200211d200241046a2102201d201c280200490d000b419eb3c000211c411221014180923421020c360b200341c00a6a202810fd01200341b8076a20032802c00a220120032802c80a10fe0120032902bc07420020032802b80722021b211b024020032802c40a450d00200110290b2002410820021b21250240201e410274221f20266a417c6a280200201b422088a722024f0d0041002101417f211c2026211d03402001201d28020022206a2202201b422088a722214f0d0b2025200241d8006c6a220228022c212320022802202124200241306a2802002122200241246a280200211e2002200241d8006a201c20216a20206b41d8006c10e5071a0240201e450d00201e41306c450d00202410290b0240202241ffffff3f71450d00202310290b201d41046a211d201b4280808080707c211b201c41016a211c2001417f6a2101201f417c6a221f0d000b0240202741ffffffff0371450d00202610290b200341b8076a202810fd0120032802b807210220033502c0072104200341c00a6a2025201b422088a7220110ed0120044220862002ad8420033502c80a42208620032802c00a221cad841003024020032802c40a450d00201c10290b024020032802bc07450d00200210290b02402001450d00202541306a2102201b422088a741d8006c210103400240200241746a280200221c450d00201c41306c450d00200241706a28020010290b0240200228020041ffffff3f71450d002002417c6a28020010290b200241d8006a2102200141a87f6a22010d000b0b0240201ba72202450d00200241d8006c450d00202510290b20004200370308200042003703000c410b02402002450d00200241d8006c2101202541306a210203400240200241746a280200221c450d00201c41306c450d00200241706a28020010290b0240200228020041ffffff3f71450d002002417c6a28020010290b200241d8006a2102200141a87f6a22010d000b0b4192b4c000211c41112101418092182102201ba7221d450d35201d41d8006c450d35202510290c350b2001410c6a280200211c200141086a280200211f4102211d024020022d00000d0020022d00014101470d00200141106a2802002120200141046a280200211d2002411a6a290100211b200241196a2d0000211e200241186a2d00002121200241166a2f01002122200241156a2d00002123200241146a2d00002124200241126a2f01002125200241116a2d00002126200241106a2d000021272002410e6a2f010021282002410d6a2d000021292002410c6a2d0000212a2002410a6a2f0100212b200241086a2d0000212c200241066a2f0100212d200241056a2d00002107200241046a2d00002108200241026a2f010021012003200241096a2d00003a00af092003202c3a00ae092003202d3b01ac09200320073a00ab09200320083a00aa09200320013a00a809200320014108763a00a909200320263a00b709200320273a00b609200320283b01b409200320293a00b3092003202a3a00b2092003202b3b01b0092003201e3a00bf09200320213a00be09200320223b01bc09200320233a00bb09200320243a00ba09200320253b01b8092003201b3701c009200341e0096a201b370300200341c8096a41106a20032901b809370300200341c8096a41086a20032901b009370300200320032901a8093703c8090240202041104d0d0041b0b3c0002102411a211e410c21010c330b41eebec500ad4280808080f000841001220228000021012002290004211b200228000c211e20021029419c81c200ad4280808080a001841001220229000021042002290008210520021029200320053701900920032004370188092003201e360184092003201b3701fc08200320013601f808200341a8026a200341f8086a412010fc0141cab3c00021024112211e410b210120032802a802450d32201d20032802ac024f0d3241eebec500ad4280808080f000841001222128000021222021290004211b202128000c21232021102941c4f5c100ad4280808080a0018410012221290000210420212900082105202110292003200537019009200320043701880920032023360184092003201b3701fc08200320223601f808200341a0026a200341f8086a412010fc0120032802a002450d32201d20032802a40222224b0d3241eebec500ad4280808080f000841001222128000021232021290004211b202128000c21242021102941c8f2c100ad4280808080c0018410012221290000210420212900082105202110292003200537019009200320043701880920032024360184092003201b3701fc08200320233601f80820034198026a200341f8086a412010fc01201d41002022200328029c0241d4002003280298021b6b2221202120224b1b2221490d32200341c00a6a201d10930220034180026a20032802c00a222320032802c80a10e30120034190026a290300210620032903880221052003280280022122024020032802c40a450d00202310290b2022450d32200341900a6a200341c8096a10db01200341c00a6a20032802900a220220032802980a10e201200341f8086a41086a2201200341fc0a6a290200370300200341f8086a41106a221e200341840b6a290200370300200341f8086a41186a22222003418c0b6a290200370300200341f8086a41206a2223200341940b6a2802003602002003200341f40a6a2902003703f8080240024020032802e00a2224450d00200341c00a6a41186a290300211b200341c00a6a41086a2903002104200341f00a6a2802002125200341ec0a6a2802002126200341e80a6a280200212720032903d00a212e20032903c00a212f20032802e40a212820034190076a41206a202328020036020020034190076a41186a202229030037030020034190076a41106a201e29030037030020034190076a41086a2001290300370300200320032903f80837039007024020032802940a450d00200210290b200341b8076a41186a201b370300200341e8076a2025360200200341e0076a2027360200200341dc076a2028360200200341ec076a200329039007370200200341f4076a20034198076a290300370200200341fc076a200341a0076a29030037020020034184086a20034190076a41186a2903003702002003418c086a200341b0076a2802003602002003202e3703c8072003202f3703b807200320263602e407200320243602d807200320043703c00741eebec500ad4280808080f000841001220228000021012002290004211b200228000c211e2002102941eab8c000ad42808080809002841001220229000021042002290008212e200210292003202e3701900920032004370188092003201e360184092003201b3701fc08200320013601f808200341f8016a200341f8086a10b10120032802f801417d71450d01200341c00a6a200341f0076a10a60220032802c00a220220032802c80a10ad0241ff0171211e024020032802c40a450d00200210290b201e41034b0d0141ecb0c0002102411c2101201e0e042e01012e2e0b024020032802940a450d00200210290b41dfb4c0002102410d211e410021010c330b20032802e4072102024020032802ec0722220d00410021014100211e0c2f0b410021014100211e03400240024002402021200228020022234b0d0020010d01410021010c020b200141016a21010c010b201e20016b222420224f0d0c200220014102746b2224280200212520242023360200200220253602000b200241046a21022022201e41016a221e470d000b024002402001450d0020032802ec072223202220016b2202490d01200320023602ec07200221230c010b20032802ec0721230b20032802e4072102410021010240202341014b0d004100211e20230e022f2c2f0b2023211e03402001201e410176222120016a2222201d200220224102746a280200491b2101201e20216b221e41014b0d000c2c0b0b201c450d29201c41246c450d29201f10290c320b4102211c024020022d00000d0020022d00014101470d00200141046a280200211c2002411a6a290100211b200241196a2d0000211d200241186a2d0000211e200241166a2f0100211f200241156a2d00002120200241146a2d00002121200241126a2f01002122200241116a2d00002123200241106a2d000021242002410e6a2f010021252002410d6a2d000021262002410c6a2d000021272002410a6a2f01002128200241086a2d00002129200241066a2f0100212a200241056a2d0000212b200241046a2d0000212c200241026a2f010021012003200241096a2d00003a00af09200320293a00ae092003202a3b01ac092003202b3a00ab092003202c3a00aa09200320013a00a809200320014108763a00a909200320233a00b709200320243a00b609200320253b01b409200320263a00b309200320273a00b209200320283b01b0092003201d3a00bf092003201e3a00be092003201f3b01bc09200320203a00bb09200320213a00ba09200320223b01b8092003201b3701c009200341e0096a201b370300200341d8096a20032901b809370300200341c8096a41086a20032901b009370300200320032901a8093703c80941eebec500ad4280808080f000841001220228000021012002290004211b200228000c211d20021029419c81c200ad4280808080a001841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc08200320013601f808200341e0036a200341f8086a412010fc0141cab3c00021024112211d4180802c210120032802e003450d2020032802e403201c4d0d2041eebec500ad4280808080f000841001221e280000211f201e290004211b201e28000c2120201e102941c4f5c100ad4280808080a001841001221e2900002104201e2900082105201e10292003200537019009200320043701880920032020360184092003201b3701fc082003201f3601f808200341d8036a200341f8086a412010fc0120032802d803450d2020032802dc03221f201c490d2041eebec500ad4280808080f000841001221e2800002120201e290004211b201e28000c2121201e102941c8f2c100ad4280808080c001841001221e2900002104201e2900082105201e10292003200537019009200320043701880920032021360184092003201b3701fc08200320203601f808200341d0036a200341f8086a412010fc014100201f20032802d40341d40020032802d0031b6b221e201e201f4b1b221e201c4b0d20200341c00a6a201c109302200341b8036a20032802c00a222020032802c80a10e301200341c8036a290300210420032903c003211b20032802b803211f024020032802c40a450d00202010290b201f450d20200341900a6a200341c8096a10db01200341c00a6a20032802900a220220032802980a10e201200341f8086a41086a2201200341fc0a6a290200370300200341f8086a41106a221d200341840b6a290200370300200341f8086a41186a221f2003418c0b6a290200370300200341f8086a41206a2220200341940b6a2802003602002003200341f40a6a2902003703f8080240024020032802e00a2221450d00200341c00a6a41186a2903002105200341c00a6a41086a2903002106200341f00a6a2802002122200341ec0a6a2802002123200341e80a6a280200212420032903d00a212e20032903c00a212f20032802e40a212520034190076a41206a202028020036020020034190076a41186a201f29030037030020034190076a41106a201d29030037030020034190076a41086a2001290300370300200320032903f80837039007024020032802940a450d00200210290b200341b8076a41186a2005370300200341e8076a2022360200200341e0076a2024360200200341dc076a2025360200200341ec076a200329039007370200200341f4076a20034198076a290300370200200341fc076a200341a0076a29030037020020034184086a20034190076a41186a2903003702002003418c086a200341b0076a2802003602002003202e3703c8072003202f3703b807200320233602e407200320213602d807200320063703c00741eebec500ad4280808080f0008410012202280000210120022900042105200228000c211d2002102941eab8c000ad42808080809002841001220229000021062002290008212e200210292003202e3701900920032006370188092003201d36018409200320053701fc08200320013601f808200341b0036a200341f8086a10b10120032802b003417d71450d01200341c00a6a200341f0076a10a60220032802c00a220220032802c80a10ad0241ff0171211d024020032802c40a450d00200210290b201d41034b0d0141ecb0c0002102418080f0002101201d0e0421010121210b024020032802940a450d00200210290b41dfb4c0002102410d211d410021014103211c0c240b20032802e4072102024020032802ec07221f0d00410021014100211d0c230b410021014100211d0340024002400240201e200228020022204b0d0020010d01410021010c020b200141016a21010c010b201d20016b2221201f4f0d0c200220014102746b2221280200212220212020360200200220223602000b200241046a2102201f201d41016a221d470d000b024002402001450d0020032802ec072220201f20016b2202490d01200320023602ec07200221200c010b20032802ec0721200b20032802e4072102410021010240202041014b0d004100211d20200e02231f230b2020211d03402001201d410176221e20016a221f201c2002201f4102746a280200491b2101201d201e6b221d41014b0d000c1f0b0b410021010c220b200141246a280200211e20022d0001211f20022d0000211d20034188076a200141196a29000037030020034180076a200141116a290000370300200341f8066a200141096a290000370300200320012900013703f00641eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c2002102941eab8c000ad42808080809002841001220229000021042002290008210520021029200320053701c009200320043701b8092003201c3601b4092003201b3701ac09200320013601a809200341d0066a200341a8096a10b10120032802d006417d710d09024002400240201d41ff01710d00201f41ff01714101470d00200341f0096a41186a200341f0066a41186a290300370300200341f0096a41106a200341f0066a41106a290300370300200341f0096a41086a200341f0066a41086a290300370300200320032903f0063703f00941eebec500ad4280808080f000841001220228000021012002290004211b200228000c211c2002102941c4f5c100ad4280808080a001841001220229000021042002290008210520021029200320053701c009200320043701b8092003201c3601b4092003201b3701ac09200320013601a809200341c8066a200341a8096a412010fc0141cab3c0002102411221014180802c211c20032802c806450d0220032802cc06221f201e490d0241eebec500ad4280808080f0008422061001221d2800002120201d290004211b201d28000c2121201d102941c8f2c100ad4280808080c001841001221d2900002104201d2900082105201d1029200320053701c009200320043701b809200320213601b4092003201b3701ac09200320203601a809200341c0066a200341a8096a412010fc01201e4100201f20032802c40641d40020032802c0061b6b221d201d201f4b1b221f490d0220061001221d2800002120201d290004211b201d28000c2121201d1029419c81c200ad4280808080a001841001221d2900002104201d2900082105201d1029200320053701c009200320043701b809200320213601b4092003201b3701ac09200320203601a809200341b8066a200341a8096a412010fc01024020032802b8064101470d0020032802bc06201e4b0d030b200341c00a6a201e109302200341a0066a20032802c00a222020032802c80a10e301200341b0066a290300210420032903a806211b20032802a006211d024020032802c40a450d00202010290b201d450d02200341b8076a200341f0096a10d801200341c00a6a20032802b807220120032802c00710cd01200341d90a6a2900002105200341d80a6a2d0000211c200341d70a6a2d0000211d200341d50a6a2f00002120200341d40a6a2d00002121200341d30a6a2d00002122200341d10a6a2f00002123200341d00a6a2d00002124200341cf0a6a2d00002125200341cd0a6a2f00002126200341cc0a6a2d00002127200341cb0a6a2d00002128200341c90a6a2f00002129200341c80a6a2d0000212a20032d00c70a212b20032f00c50a212c20032d00c40a212d20032d00c30a210720032d00c20a210820032d00c10a210920032d00c00a2102024020032802bc07450d00200110290b200241ff01714101470d01200320053703e0092003201c3a00df092003201d3a00de09200320203b01dc09200320213a00db09200320223a00da09200320233b01d809200320243a00d709200320253a00d609200320263b01d409200320273a00d309200320283a00d209200320293b01d0092003202a3a00cf092003202b3a00ce092003202c3b01cc092003202d3a00cb09200320073a00ca09200320083a00c909200320093a00c809200341900a6a200341c8096a10db01200341c00a6a20032802900a220120032802980a10e201200341f8086a41086a221c200341fc0a6a290200370300200341f8086a41106a221d200341840b6a290200370300200341f8086a41186a22202003418c0b6a290200370300200341f8086a41206a2221200341940b6a2802003602002003200341f40a6a2902003703f80802400240024020032802e00a2222450d00200341c00a6a41186a2903002105200341c00a6a41086a2903002106200341f00a6a2802002123200341ec0a6a2802002102200341e80a6a280200212420032903d00a212e20032903c00a212f20032802e40a212520034190076a41206a202128020036020020034190076a41186a202029030037030020034190076a41106a201d29030037030020034190076a41086a201c290300370300200320032903f80837039007024020032802940a450d00200110290b200341b8076a41186a2005370300200341e8076a2023360200200341e0076a2024360200200341dc076a2025360200200341ec076a2201200329039007370200200341f4076a20034198076a290300370200200341fc076a200341a0076a29030037020020034184086a20034190076a41186a2903003702002003418c086a200341b0076a2802003602002003202e3703c8072003202f3703b807200320023602e407200320223602d807200320063703c00702402001280200221d0d00410021014100211c0c030b410021014100211c0340024002400240201f200228020022204b0d0020010d01410021010c020b200141016a21010c010b201c20016b2221201d4f0d12200220014102746b2221280200212220212020360200200220223602000b200241046a2102201d201c41016a221c470d000b024002402001450d0020032802ec072220201d20016b2202490d01200320023602ec07200221200c010b20032802ec0721200b20032802e40721024100210102400240202041014b0d004100211c20200e020401040b2020211c03402001201c410176221d20016a221f201e2002201f4102746a280200491b2101201c201d6b221c41014b0d000b0b4103211d201e200220014102746a280200221c470d010c1e0b024020032802940a450d00200110290b41dfb4c0002102410d21014103211d4100211c0c1e0b20202001201e201c4b6a2201490d0f2020211c0b0240201c20032802e807470d00200341e4076a201c410110980120032802e40721020b200220014102746a220241046a2002201c20016b41027410e5071a2002201e3602002003201c41016a3602ec07200341900a6a201e200341f0076a2220109d02200341c00a6a20032802900a220220032802980a10a1020240024020032802e00a222a0d0042002105410021294108212a41002124420021064200212f420021300c010b200341c80a6a2903002130200341d80a6a2903002106200341e80a6a280200212420032903c00a212f20032903d00a210520032802e40a21290b024020032802940a450d00200210290b200341c00a6a200341c8096a10db0120032802c00a2102200320032802c80a3602940a200320023602900a200341b8076a200341900a6a10e401024020032802c40a450d00200210290b20034190076a201e10ae024104211d20034190076a410472212b024002402003280294072221450d00200328029007212520034190076a41086a28020021220340202141086a210120212f0106222341057421024100211c0240024003402002450d0120202001412010e707221f450d02200241606a2102201c41016a211c200141206a2101201f417f4a0d000b201c417f6a21230b2022450d022022417f6a2122202120234102746a4194036a28020021210c010b0b2021201c4102746a41e8026a2802002201450d0020254101202541014b1b2202418094ebdc036e221c2002201c418094ebdc036c476a221c4101201c41014b1b221c20024b0d1120034188066a201b2004428094ebdc03420010e007200341f8056a200329038806220420034188066a41086a290300222e4280ec94a37c427f10d507200341e8056a2004202e2002200120022001491b201c6ead428094ebdc037e2002201c6ead8042ffffffff0f832231420010d507200341c00a6a201e200341f0096a109f0220034198066a20032802c00a220120032802c80a109e02200341e8056a41086a29030020032903e80522042031201b20032903f8057c7e221b428094ebdc0380222ea7417f201b428080808080c0b2cd3b541b201b202e4280ec94a37c7e7c4280cab5ee01566aad7c221b200454ad7c212e200328029c0641002003280298061b2102024020032802c40a450d00200110290b200341c0056a201b202e428094ebdc03420010e007200341b0056a20032903c0052204200341c0056a41086a29030022314280ec94a37c427f10d507200341a0056a200420312002ad2232420010d50720034190056a201b20032903a00522312032201b20032903b0057c7e2204428094ebdc03802232a7417f2004428080808080c0b2cd3b541b200420324280ec94a37c7e7c4280cab5ee01566aad7c22047d2233202e200341a0056a41086a2903002004203154ad7c22347d201b200454ad7d428094ebdc03420010e00720034180056a200329039005223120034190056a41086a29030022324280ec94a37c427f10d507200341f0046a2031203220052006202f203010af02ad2205420010d507200341d0056a202020032903f004220620047c221b20332003290380057c223320057e2204428094ebdc03802205a7417f2004428080808080c0b2cd3b541b200420054280ec94a37c7e7c4280cab5ee01566aad7c2204200341f0046a41086a29030020347c201b200654ad7c2004201b54ad7c10b002200341d0056a41106a290300211b20032903d805210420032903d0052205a74101470d01200341f8076a290300210520034180086a290300210620034188086a290300212e20032903f0072134200341f80a6a201b370300200341f00a6a2004370300200341e10a6a202e370000200341d90a6a2006370000200341d10a6a2005370000200341c90a6a2034370000200341c00a6a41086a220141013a0000200341043a00c00a200341c00a6a10cb01200341c00a6a41186a221e4200370300200341c00a6a41106a221c420037030020014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a200341c0046a200341900a6a412010e301200341c0046a41106a290300212e20032903c804213420032802c004211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c20344200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010c1b0b202b10d4012029450d1c202941306c450d1c202a10290c1c0b20054201520d1a200341c00a6a41186a221e4200370300200341c00a6a41106a221c4200370300200341c00a6a41086a22014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a200341d8046a200341900a6a412010e301200341d8046a41106a290300212e20032903e004213420032802d804211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c20344200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010c190b4102211d4100211c0c1d0b41d7b4c00021024108210141808004211c0b4103211d0c1b0b200141106a290300211b200141086a290300212e2002411a6a290100212f200241196a2d00002120200241186a2d00002121200241166a2f01002122200241156a2d00002123200241146a2d00002124200241126a2f01002125200241116a2d00002126200241106a2d00002127410e21012002410e6a2f010021282002410d6a2d000021292002410c6a2d0000212a2002410a6a2f0100212b200241096a2d0000212c200241086a2d0000212d200241066a2f01002107200241056a2d00002108200241046a2d00002109200241026a2f0100210a20022d0001211f20022d0000211e41eebec500ad4280808080f0008410012202280000211c20022900042104200228000c211d2002102941eab8c000ad42808080809002841001220229000021052002290008210620021029200320063701900920032005370188092003201d36018409200320043701fc082003201c3601f808200341d8066a200341f8086a10b10141ecb0c00021024103211c024020032802d806417d71450d00411c211d0c150b201e41ff01710d10201f41ff01714101470d102003202f3703880a200320203a00870a200320213a00860a200320223b01840a200320233a00830a200320243a00820a200320253b01800a200320263a00ff09200320273a00fe09200320283b01fc09200320293a00fb092003202a3a00fa092003202b3b01f8092003202c3a00f7092003202d3a00f609200320073b01f409200320083a00f309200320093a00f2092003200a3b01f009200341b8076a200341f0096a10db01200341c00a6a20032802b807220220032802c00710e201200341f8086a41086a221e200341fc0a6a290200370300200341f8086a41106a221f200341840b6a290200370300200341f8086a41186a22202003418c0b6a290200370300200341f8086a41206a2221200341940b6a2802003602002003200341f40a6a2902003703f80820032802e00a221d450d12200341c00a6a41186a290300212f200341c00a6a41086a2903002134200341f00a6a2802002123200341ec0a6a2802002124200341e80a6a280200210120032903d00a213020032903c00a213520032802e40a212220034190076a41206a202128020036020020034190076a41186a202029030037030020034190076a41106a201f29030037030020034190076a41086a201e290300370300200320032903f80837039007024020032802bc07450d00200210290b200341c8096a41106a20034190076a41106a2903002204370300200341900a6a41086a220220034190076a41086a290300370300200341900a6a41106a221e2004370300200341900a6a41186a221f20034190076a41186a290300370300200341900a6a41206a222020034190076a41206a28020036020020032003290390073703900a2001450d11200341b8076a41206a2020280200360200200341b8076a41186a201f290300370300200341b8076a41106a201e290300370300200341b8076a41086a2002290300370300200320032903900a3703b807200141186c201d6a41686a2102420021314200213202400340024020010d00410021010c020b02402002290300220420317c2205202e58200241086a290300223320327c2005200454ad7c2206201b582006201b51221c1b0d0020022004202e20317d22057d37030020022033201b20327d202e203154ad7d221b7d2004200554ad7d370308201b202f7c200520307c2230200554ad7c212f0c020b2001417f6a21012033202f7c200420307c2230200454ad7c212f200241686a210220052131200621322005202e542006201b54201c1b0d000b0b200341c00a6a41186a202f370300200341f00a6a2023360200200341e80a6a2001360200200341e40a6a2022360200200341f40a6a20032903b807370200200341fc0a6a200341c0076a290300370200200341840b6a200341c8076a2903003702002003418c0b6a200341b8076a41186a290300370200200341940b6a200341d8076a280200360200200320303703d00a200320353703c00a200320243602ec0a2003201d3602e00a200320343703c80a200342f3e885db96cddbb3203703900720034190076a200341f80a6a20352034411f10aa02200341b8076a200341f0096a10db0120032802b8072102200320032802c0073602fc08200320023602f808200341c00a6a200341f8086a10e401024020032802bc07450d00200210290b20033502e80a42d086037e211b024020032802e40a2202450d00200241186c450d0020032802e00a10290b201b4280f3e893017c211b024020032802f00a41ffffffff0371450d0020032802ec0a10290b200041106a201b37030020004201370308200042003703000c3c0b20022d000120022d0000410047720d0b200141046a280200211c41eebec500ad4280808080f0008422061001220228000021012002290004211b200228000c211d2002102941c4f5c100ad4280808080a001841001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc08200320013601f808200341e8066a200341f8086a412010fc01024020032802e8064101470d0020032802ec062101200610012202280000211d2002290004211b200228000c211e2002102941c8f2c100ad4280808080c0018422041001220229000021052002290008210620021029200320063701900920032005370188092003201e360184092003201b3701fc082003201d3601f808200341e0066a200341f8086a412010fc0102404100200120032802e40641d40020032802e0061b6b2202200220014b1b220241002001201c6b221d201d20014b1b22014f0d00034020021095022001200241016a2202470d000b0b41eebec500ad4280808080f000841001220228000021012002290004211b200228000c211d2002102920041001220229000021042002290008210520021029200320053701900920032004370188092003201d360184092003201b3701fc08200320013601f8082003201c3602c00a200341f8086aad4280808080800484200341c00a6aad4280808080c0008410030b20004200370308200042003703000c3b0b200141246a280200211c200341b8076a41186a200141196a290000370300200341b8076a41106a200141116a290000370300200341c0076a200141096a290000370300200320012900013703b807200341900a6a200341b8076a10a802200341c00a6a20032802900a220120032802980a10a902200341c00a6a41106a290300420020032903c00a42015122021b211b20032903c80a420020021b2104200341e00a6a290300420020021b2105200341c00a6a41186a290300420020021b2106024020032802940a450d00200110290b427f200420067c220620062004542202201b20057c2002ad7c2204201b542004201b511b22021b427f200420021b844200520d0b200341c00a6a200341b8076a201c10ab02024020032d00c00a22024104470d00200342f3e885db96cddbb3203703f808200341f8086a200341b8076a10ac0220004200370308200042003703000c3b0b200341c00a6a41086a280200210120032802c40a211c20032f00c10a20032d00c30a41107472410874221f4180fe0371211d201f418080fc0771211e201f418080807871211f0c0d0b200141d8016a2f0100211e200141d4016a280200211f200141d0016a28020021202001410c6a2802002121200141086a280200211c200141046a280200211d200341b8076a200141106a41c00110e4071a200341a0096a20014188026a29030037030020034198096a20014180026a290300370300200341f8086a41186a200141f8016a290300370300200341f8086a41106a200141f0016a290300370300200341f8086a41086a200141e8016a2903003703002003200141e0016a2903003703f8080240024002400240024020022d00000d0020022d00014101460d010b20034190076a41186a41023a00004200211b20034200370398072003420137039007200341b8076a1087020240201c41808080807872418080808078460d00201d10290b0c010b200320213602d0092003201c3602cc092003201d3602c809200341c00a6a200341b8076a41c00110e4071a200341900a6a41286a200341f8086a41286a290300370300200341900a6a41206a200341f8086a41206a290300370300200341900a6a41186a200341f8086a41186a290300370300200341900a6a41106a200341f8086a41106a290300370300200341900a6a41086a200341f8086a41086a290300370300200320032903f8083703900a20034190076a200341c8096a200341c00a6a4101200341900a6a2020201f201e10b102200329039807211b20034190076a41106a29030021042003290390074201520d010b200341c80a6a20034190076a41206a2903002205370300200320034190076a41186a29030022063703c00a200041206a2005370300200041186a2006370300420121050c010b420021050b2000201b37030820002005370300200041106a20043703000c390b200141d8016a2f0100211e200141d4016a280200211f200141d0016a28020021202001410c6a2802002121200141086a280200211c200141046a280200211d200341b8076a200141106a41c00110e4071a200341a0096a20014188026a29030037030020034198096a20014180026a290300370300200341f8086a41186a200141f8016a290300370300200341f8086a41106a200141f0016a290300370300200341f8086a41086a200141e8016a2903003703002003200141e0016a2903003703f8080240024002400240024020022d00000d0020022d000141ff01714102460d010b20034190076a41186a41023a00004200211b20034200370398072003420137039007200341b8076a1087020240201c41808080807872418080808078460d00201d10290b0c010b200320213602d0092003201c3602cc092003201d3602c809200341c00a6a200341b8076a41c00110e4071a200341900a6a41286a200341f8086a41286a290300370300200341900a6a41206a200341f8086a41206a290300370300200341900a6a41186a200341f8086a41186a290300370300200341900a6a41106a200341f8086a41106a290300370300200341900a6a41086a200341f8086a41086a290300370300200320032903f8083703900a20034190076a200341c8096a200341c00a6a4102200341900a6a2020201f201e10b102200329039807211b20034190076a41106a29030021042003290390074201520d010b200341c80a6a20034190076a41206a2903002205370300200320034190076a41186a29030022063703c00a200041206a2005370300200041186a2006370300420121050c010b420021050b2000201b37030820002005370300200041106a20043703000c380b1039000b200220211042000b202420224180bdc7001036000b2021201f4180bdc7001036000b41ecb0c0002102410e21014103211d418080f000211c0c110b2021201d4180bdc7001036000b200120201041000b41f0a6c700411941dcaac7001033000b20004200370308200041186a4102360200200042013703000c2f0b4100211f41808028211e41032102410c210141dcb3c000211c418012211d0c010b201d10290c240b20004200370308200041206a20013602002000411c6a201c360200200041186a201d200272201e72201f72360200200042013703000c2c0b4102211c0c030b02402022450d00202241186c450d00201d10290b41e8b3c00021024109211d202341ffffffff0371450d0120241029410d21010c020b024020032802bc07450d00200210290b41dfb4c00021024100211d0b410d21010b2000201d3a001a200041093a001920004200370308200041206a20013602002000411c6a2002360200200041186a201c3a0000200042013703000c270b2001ad42808080808004842002ad428080808080028410030b0240202441306c2202450d00202a20026a2123202a41286a2102200341900a6aad42808080808004842135200341c90a6a211f200341c00a6a41106a2101200341f80a6a2128034020034198046a20312032200241586a221c290300201c41086a290300202f203010af02ad221b420010d507200341a8046a200241686a221e2003290398042204201b20337e221b428094ebdc03802205a7417f201b428080808080c0b2cd3b541b201b20054280ec94a37c7e7c4280cab5ee01566aad7c221b20034198046a41086a290300201b200454ad7c10b002200341a8046a41106a290300211b20032903b004210402400240024020032903a8042205a74101470d00200241786a2900002105201e29000021062002290000212e2003200241706a290000223437018009200320063701f80820032005370188092003202e37019009201f2006370000201f41086a2034370000201f41106a2005370000201f41186a202e370000200320043703f00a2028201b370300200341013a00c80a200341043a00c00a200341c00a6a10cb01200341c00a6a41186a2220420037030020014200370300200341c00a6a41086a221d4200370300200342003703c00a41dcbec500ad42808080808001842205100122212900002106200341f8086a41086a221c202141086a290000370300200320063703f80820211029201d201c290300370300200320032903f8083703c00a419fe3c200ad4280808080d00184220610012221290000212e201c202141086a2900003703002003202e3703f80820211029200120032903f808370000200141086a2224201c290300370000200341900a6a41086a2225201d290300370300200341900a6a41106a22262001290300370300200341900a6a41186a22272020290300370300200320032903c00a3703900a200341e8036a200341900a6a412010e301200341e8036a41106a290300212e20032903f003213420032802e80321212020420037030020014200370300201d4200370300200342003703c00a2005100122222900002105201c202241086a290000370300200320053703f80820221029201d201c290300370300200320032903f8083703c00a2006100122222900002105201c202241086a290000370300200320053703f80820221029200120032903f8083700002024201c2903003700002025201d2903003703002026200129030037030020272020290300370300200320032903c00a3703900a2003427f202e420020211b2205201b7c2034420020211b221b20047c2204201b54221cad7c221b201c201b200554201b2005511b221c1b3703c80a2003427f2004201c1b3703c00a200341c00a6a211c0c010b20054201520d01200341c00a6a41186a2220420037030020014200370300200341c00a6a41086a221d4200370300200342003703c00a41dcbec500ad42808080808001842205100122212900002106200341f8086a41086a221c202141086a290000370300200320063703f80820211029201d201c290300370300200320032903f8083703c00a419fe3c200ad4280808080d00184220610012221290000212e201c202141086a2900003703002003202e3703f80820211029200120032903f808370000200141086a2224201c290300370000200341900a6a41086a2225201d290300370300200341900a6a41106a22262001290300370300200341900a6a41186a22272020290300370300200320032903c00a3703900a20034180046a200341900a6a412010e30120034180046a41106a290300212e200329038804213420032802800421212020420037030020014200370300201d4200370300200342003703c00a2005100122222900002105201c202241086a290000370300200320053703f80820221029201d201c290300370300200320032903f8083703c00a2006100122222900002105201c202241086a290000370300200320053703f80820221029200120032903f8083700002024201c2903003700002025201d2903003703002026200129030037030020272020290300370300200320032903c00a3703900a2003427f202e420020211b2205201b7c2034420020211b221b20047c2204201b54221cad7c221b201c201b200554201b2005511b221c1b3703c80a2003427f2004201c1b3703c00a200341c00a6a211c0b2035201cad428080808080028410030b200241306a2102201e41206a2023470d000b0b202b10d40102402029450d00202941306c450d00202a10290b024020032802dc072202450d00200241186c450d0020032802d80710290b20032802e80741ffffffff0371450d0220032802e40710290c020b024020032802dc072202450d00200241186c450d0020032802d80710290b4190b3c0002102410e210141808038211c20032802e80741ffffffff0371450d0020032802e40710290b201d4104470d010b20004200370308200042003703000c220b20004200370308200041206a20013602002000411c6a2002360200200041186a201c418080fc0071201d7241801272360200200042013703000c210b201c200220014102746a280200221d470d024190b3c00021024180803821010b024020032802dc07221c450d00201c41186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b410e211d0b4103211c0c020b20202001201c201d4b6a2201490d022020211d0b0240201d20032802e807470d00200341e4076a201d410110980120032802e40721020b200220014102746a220241046a2002201d20016b41027410e5071a2002201c3602002003201d41016a3602ec07200341c00a6a200341c8096a10db0120032802c00a2102200320032802c80a3602940a200320023602900a200341b8076a200341900a6a10e401024020032802c40a450d00200210290b20034190076a201c10ae02200341c00a6a201c200341f0076a221e109f02200341a8036a20032802c00a220220032802c80a109e0220032802a803212320032802ac032124024020032802c40a450d00200210290b200341900a6a201c201e109d02200341c00a6a20032802900a220220032802980a10a1020240024020032802e00a22260d00420021054108212641002122420021064200212e4200212f0c010b200341c80a6a2903002106200341d80a6a290300212f20032903c00a210520032903d00a212e20032802e40a21220b024020032802940a450d00200210290b202e202f2005200610af02212502400240200328029407221f0d00410021010c010b20034190076a41086a28020021200340201f41086a2101201f2f0106222141057421024100211c0240024003402002450d01201e2001412010e707221d450d02200241606a2102201c41016a211c200141206a2101201d417f4a0d000b201c417f6a21210b024020200d00410021010c030b2020417f6a2120201f20214102746a4194036a280200211f0c010b0b201f201c4102746a41e8026a28020021010b20032802900722024101200241014b1b2202418094ebdc036e221c2002201c418094ebdc036c476a221c4101201c41014b1b221c20024b0d0220034180036a201b2004428094ebdc03420010e007200341f0026a200329038003220420034180036a41086a29030022054280ec94a37c427f10d5072003418094ebdc033602c40a20032025ad4100418094ebdc032024410020231b221d6b221f201f418094ebdc034b1bad7e428094ebdc0380a7221f3602c00a200341c00a6a201f418094ebdc034b4102746a280200211f2003418094ebdc033602c40a2003417f201d201f6a221f201f201d491b221d3602c00a200341c00a6a201d418094ebdc034b4102746a35020021062003418094ebdc033602c40a200320062002200120022001491b201c6ead428094ebdc037e2002201c6ead8042ffffffff0f837e428094ebdc0380a722023602c00a200341e0026a20042005200341c00a6a2002418094ebdc034b4102746a3502002206420010d50720034190036a201e20032903e00222042006201b20032903f0027c7e221b428094ebdc03802205a7417f201b428080808080c0b2cd3b541b201b20054280ec94a37c7e7c4280cab5ee01566aad7c221b200341e0026a41086a290300201b200454ad7c10b00220034190036a41106a290300211b200329039803210402402003290390032205a74101470d0020032903c809210520032903d009210620032903d809212e20032903e009212f200341f80a6a201b370300200341f00a6a2004370300200341e10a6a202f370000200341d90a6a202e370000200341d10a6a2006370000200341c90a6a2005370000200341c00a6a41086a220141013a0000200341043a00c00a200341c00a6a10cb01200341c00a6a41186a221e4200370300200341c00a6a41106a221c420037030020014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a200341b0026a200341900a6a412010e301200341b0026a41106a290300212e20032903b802212f20032802b002211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c202f4200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010c040b20054201520d04200341c00a6a41186a221e4200370300200341c00a6a41106a221c4200370300200341c00a6a41086a22014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a200341c8026a200341900a6a412010e301200341c8026a41106a290300212e20032903d002212f20032802c802211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c202f4200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010c030b200041206a201d3602002000411c6a2002360200200041186a2001418080fc0071201c72418012723602004201211b0c040b200120201041000b41f0a6c700411941dcaac7001033000b2001ad42808080808004842002ad428080808080028410030b20034190076a410472210202402022450d00202241306c450d00202610290b200210d401024020032802dc072202450d00200241186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b4200211b0b2000201b370300200042003703080c160b0c080b201d200220014102746a280200221e470d014190b3c0002102410e21010b024020032802dc07221d450d00201d41186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b410e211e0c050b20232001201d201e4b6a2201490d012023211e0b0240201e20032802e807470d00200341e4076a201e410110980120032802e40721020b200220014102746a220241046a2002201e20016b41027410e5071a2002201d3602002003201e41016a3602ec07200341c00a6a200341c8096a10db0120032802c00a2102200320032802c80a3602940a200320023602900a200341b8076a200341900a6a10e401024020032802c40a450d00200210290b20034190076a201d10ae020240202041246c22020d00410021290c030b201f20026a2227415c6a212c200341f0076a2124201f2101410021290340200121020340200241206a2802002101200341900a6a41186a200241186a290000370300200341900a6a41106a200241106a290000370300200341900a6a41086a200241086a290000370300200320022900003703900a200341c00a6a201d200341900a6a109f02200341f0016a20032802c00a221e20032802c80a109e0220032802f001212520032802f4012126024020032802c40a450d00201e10290b200341f8086a201d200341900a6a109d02200341c00a6a20032802f808222220032802800910a1020240024020032802e00a22200d004200211b41002121410821204100211e420021040c010b200341c00a6a41086a290300210420032903c00a211b20032802e40a212120032802e80a211e0b024020032802fc08450d00202210290b02400240201e20014d0d002020200141306c6a2201450d0002402024200141106a221e460d00201e2024412010e7070d020b2001290300200141086a290300201b200410af02212d0240024020032802940722280d004100211e0c010b200328029807212a0340202841086a211e20282f0106222b4105742101410021220240024003402001450d01200341900a6a201e412010e7072223450d02200141606a2101202241016a2122201e41206a211e2023417f4a0d000b2022417f6a212b0b0240202a0d004100211e0c030b202a417f6a212a2028202b4102746a4194036a28020021280c010b0b202820224102746a41e8026a280200211e0b20032802900722014101200141014b1b2201418094ebdc036e222220012022418094ebdc036c476a22224101202241014b1b222220014b0d052003418094ebdc033602c40a20032001201e2001201e491b20226ead428094ebdc037e200120226ead8042ffffffff0f834100418094ebdc032026410020251b6b22012001418094ebdc034b1bad7e428094ebdc0380a722013602c00a200341c00a6a2001418094ebdc034b4102746a350200211b2003418094ebdc033602c40a2003201b202dad7e428094ebdc0380a722013602c00a200341c00a6a2001418094ebdc034b4102746a28020021012003418094ebdc033602c40a2003417f202920016a220120012029491b22013602c00a200341c00a6a2001418094ebdc034b4102746a28020021290b02402021450d00202141306c450d00202010290b200241246a2101202c2002460d050c020b200241246a210202402021450d00202141306c450d00202010290b20272002460d040c000b0b0b200120231041000b41f0a6c700411941dcaac7001033000b0240201c450d00201c41246c450d00201f10290b200341c8016a20052006428094ebdc03420010e007200341b8016a20032903c801221b200341c8016a41086a29030022044280ec94a37c427f10d507200341a8016a201b20042029ad2206420010d507200341d8016a200341b8076a41386a20032903a80122042006200520032903b8017c7e221b428094ebdc03802205a7417f201b428080808080c0b2cd3b541b201b20054280ec94a37c7e7c4280cab5ee01566aad7c221b200341a8016a41086a290300201b200454ad7c10b002200341d8016a41106a290300211b20032903e001210402400240024020032903d8012205a74101470d0020032903c809210520032903d009210620032903d809212e20032903e009212f200341c00a6a41386a201b370300200341f00a6a2004370300200341e10a6a202f370000200341d90a6a202e370000200341d10a6a2006370000200341c90a6a2005370000200341c00a6a41086a220141013a0000200341043a00c00a200341c00a6a10cb01200341c00a6a41186a221e4200370300200341c00a6a41106a221c420037030020014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a200341f8006a200341900a6a412010e301200341f8006a41106a290300212e200329038001212f2003280278211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c202f4200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010c010b20054201520d01200341c00a6a41186a221e4200370300200341c00a6a41106a221c4200370300200341c00a6a41086a22014200370300200342003703c00a41dcbec500ad428080808080018422051001221d2900002106200341f8086a41086a2202201d41086a290000370300200320063703f808201d102920012002290300370300200320032903f8083703c00a419fe3c200ad4280808080d0018422061001221d290000212e2002201d41086a2900003703002003202e3703f808201d1029201c20032903f808222e370300200341900a6a41086a221f2001290300370300200341900a6a41106a2220202e370300200341900a6a41186a22212002290300370300200320032903c00a3703900a20034190016a200341900a6a412010e30120034190016a41106a290300212e200329039801212f200328029001211d201e4200370300201c420037030020014200370300200342003703c00a20051001221e29000021052002201e41086a290000370300200320053703f808201e102920012002290300370300200320032903f8083703c00a20061001221e29000021052002201e41086a290000370300200320053703f808201e1029201c20032903f8082205370300201f20012903003703002020200537030020212002290300370300200320032903c00a3703900a2003427f202e4200201d1b2205201b7c202f4200201d1b221b20047c2204201b542202ad7c221b2002201b200554201b2005511b22021b3703c80a2003427f200420021b3703c00a200341c00a6a2102200341900a6a21010b2001ad42808080808004842002ad428080808080028410030b20034190076a41047210d401024020032802dc072202450d00200241186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b4200211b0c020b0240201c450d00201c41246c450d00201f10290b4103211d0b200041206a201e3602002000411c6a2002360200200041186a200141ff0171411074201d72418012723602004201211b0b2000201b370300200042003703080c0b0b0240202741ffffffff0371450d00202610290b20004200370308200041206a20013602002000411c6a201c360200200041186a2002202072360200200042013703000c0a0b20004200370308200042003703000c090b41012125410021230c010b0240201e41ffffff3f71450d00201d10290b2025450d0220032802fc0841ffffff3f7121230b41eebec500ad4280808080f0008410012201280000211c2001290004211b200128000c211d2001102941c4f5c100ad4280808080a001841001220129000021042001290008210520011029200320053701900920032004370188092003201d360184092003201b3701fc082003201c3601f808200341d8006a200341f8086a412010fc01200328025c212420032802582126200341c00a6a200341f0076a220110de0120033502c80a42208620032802c00a221cad841004024020032802c40a450d00201c10290b200341900a6a200110d90120033502980a211b20032802900a2122200341003602c80a200342013703c00a2002200341c00a6a10710240024020020d0020032802c40a211d20032802c80a21010c010b2002410574211f410020032802c80a22016b211e20032802c00a212120032802c40a211d202521200340202021020240201d201e6a411f4b0d00200141206a221c2001490d03201d4101742220201c2020201c4b1b221c4100480d030240024002400240201d0d000240201c0d00410121210c020b201c102721210c030b201d201c470d010b201c211d0c020b2021201d201c102b21210b201c211d2021450d060b200241206a2120202120016a221c2002290000370000201c41186a200241186a290000370000201c41106a200241106a290000370000201c41086a200241086a290000370000201e41606a211e200141206a2101201f41606a221f0d000b2003201d3602c40a200320013602c80a200320213602c00a0b02400240201d20016b4104490d0020032802c00a211c201d21020c010b200141046a22022001490d01201d410174221c2002201c20024b1b22024100480d0102400240201d0d00024020020d004101211c0c020b20021027221c450d060c010b20032802c00a211c201d2002460d00201c201d2002102b221c450d050b200320023602c40a2003201c3602c00a0b201c20016a2024410020261b3600002003200141046a22013602c80a4100211d200341003a0090070240024020022001460d00200121020c010b200241016a22012002490d012002410174221d2001201d20014b1b22014100480d010240024020020d0041002102024020010d004101211c0c020b20011027221c450d060c010b20022001460d00201c20022001102b221c450d050b200320013602c40a2003201c3602c00a20032d009007211d0b201c20026a201d3a000020032802c40a2101201b4220862022ad84200241016aad42208620032802c00a2202ad84100302402001450d00200210290b024020032802940a450d00202210290b02402023450d00202510290b024020032802dc072202450d00200241186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b20004200370308200042003703000c060b1032000b02402027450d00202741186c450d00202810290b0240202941ffffffff0371450d00202a10290b410121020b20004200370308200041206a20013602002000411c6a201c360200200041186a201f41ff017141107420027241801272360200200042013703000c030b1030000b0240202f20032903b807220558202e200341b8076a41086a290300221b58202e201b511b0d00200341f00a6a202f20057d370300200341c00a6a41086a41083a0000200341c90a6a20032903900a370000200341d10a6a200341900a6a41086a290300370000200341d90a6a200341a00a6a290300370000200341e10a6a200341a80a6a290300370000200341f80a6a202e201b7d202f200554ad7d370300200341043a00c00a200341c00a6a10cb010b024020032802dc072202450d00200241186c450d0020032802d80710290b024020032802e80741ffffffff0371450d0020032802e40710290b200041106a4280a7f2a60137030020002004370308200042003703000c010b20004200370308200042003703000b200341800c6a24000bb10503027f017e047f230041d0006b2202240041eebec500ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e8f4c100ad4280808080d00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bb00305037f017e017f077e017f230041e0006b220124002001200010a802200141106a200128020022022001280208220310a9020240024020012903104201510d004200210441002105420021064200210742002108420021094200210a4200210b4200210c4100210d0c010b200141206a290300210c200141306a290300210a200141286a2903002109200141c0006a2903002108200141386a2903002107200141d0006a2903002106200141c8006a2903002104200141d8006a28020021052001290318210b20012d005c210d0b0240410410272200450d0020002005360000200041044108102b2200450d002000417f200d411874220541808080086a220d200d2005491b4118763a0004200041084115102b2200450d002000200b3700052000410d6a200c37000020004115412a102b2200450d00200020093700152000411d6a200a3700002000412a41d400102b2200450d0020002004370035200020073700252000413d6a20063700002000412d6a20083700002003ad4220862002ad842000ad4280808080d0088410032000102902402001280204450d00200210290b200141e0006a24000f0b1030000bc20503027f017e047f230041d0006b2202240041b3e6ca00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941b9e6ca00ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100522012900002104200241306a41086a200141086a2900003703002002200437033020011029200241cc006a200341206a360200200220033602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a1075200310292002280228220541206a2201417f4c0d01200228022021060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a20002001360208200020083602042000200336020002402002280224450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000ba10404037f047e027f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044104490d0020044104460d002004417b6a4110490d002004416b6a4110490d002004415b6a4110490d002004414b6a410f4b0d010b20034100360220200342013703182003410d36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341f4eaca003602382003200341286a360248200341346a41a8a3c800200341386a10371a200335022042208620033502188410080240200328021c450d00200328021810290b200042003703000c010b2001280000210420012d000421052001410d6a2900002106200129000521072001411d6a290000210820012900152109200341186a41026a200341386a41026a2d0000220a3a0000200320032f0038220b3b01182001412d6a290000210c2001290025210d2001290035210e200041c0006a2001413d6a290000370300200041386a200e370300200041306a200c370300200041286a200d370300200041206a2008370300200041186a2009370300200041106a200637030020002007370308200020053a004c200041c8006a2004360200200042013703002000200b3b004d200041cf006a200a3a00000b2002450d00200110290b200341d0006a24000b9c0f03037f017e0d7f230022052106200541e0016b41607122052400024002402002200384500d00200441ff01712207450d002000290000210841002109024020074101460d004102410120044101711b21090b20052002370300200520093a00182005200837031020052003370308200541c0016a200110df03200541a0016a20052802c001220720052802c80110e60320052902a401420020052802a00122041b2102024020052802c401450d00200710290b2004410820041b210a2002a7210b0240024002402002422088a7220c450d00200a200c4105746a210d200541a0016a411072210e200541a0016a411972210f410021070340200541e8006a41106a2210200a20076a220441106a290300370300200541e8006a41086a2211200441086a290300370300200520042903003703682005200441196a28000036023820052004411c6a28000036003b200441186a2d000022124103460d01200f2005280238360000200f41036a200528003b360000200520102903003703b001200520112903003703a801200520052903683703a001200520123a00b80102400240200e2000460d00200e2900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b2002a7221041ff01714103470d02200741206a2107200441206a200d470d000b0b200541003602a801200542083703a001200b41ffffff3f71450d01200a10290c010b200541d0006a41106a220f200529039001370300200541d0006a41086a22112005290388013703002005200528009c0136004320052005280099013602402005200529038001370350200520052802403602482005200528004336004b41201027220e450d02200e2005290350370300200e20103a0018200e2005280248360019200e411c6a200528004b360000200e41106a200f290300370300200e41086a2011290300370300200542818080801037022c2005200e3602280240200c41057441606a2007460d00200441206a2110200c410574200a6a41606a211320054180016a4119722114200541a0016a4110722112200541a0016a411972210f4101210c0340201021040340200541e8006a41106a2210200441106a290300370300200541e8006a41086a2211200441086a29030037030020052004290300370368200441186a2d000021072005200441196a28000036023820052004411c6a28000036003b20074103460d02200f2005280238360000200f41036a200528003b360000200520102903003703b001200520112903003703a801200520052903683703a001200520073a00b8010240024020122000460d0020122900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b02402002a7220741ff01714103470d00200441206a2204200d470d010c030b0b200541d0006a41106a2210200529039001370300200541d0006a41086a2211200529038801370300200520142800003602402005201441036a2800003600432005200529038001370350200520052802403602482005200528004336004b200541c0016a41086a22152011290300370300200541c0016a41106a22112010290300370300200520052903503703c001200520052802483602a0012005200528004b3600a3010240200c200528022c470d00200541286a200c10a1012005280228210e0b200441206a2110201529030021022011290300210320052903c0012108200e200c4105746a221120073a001820112008370300201120052802a0013600192011411c6a20052800a301360000201141106a2003370300201141086a20023703002005200c41016a220c36023020132004470d000b0b0240200b41ffffff3f71450d00200a10290b200541a0016a41086a200541286a41086a280200360200200520052903283703a0010b02400240200941ff01714103470d0020052802a801210420052802a0012107200541a0016a21050c010b200541c0016a41186a220f2005290318370300200541c0016a41106a22102005290310370300200541c0016a41086a22112005290308370300200520052903003703c001024020052802a801220420052802a401470d00200541a0016a200410a10120052802a80121040b20052802a001220720044105746a220020052903c001370300200041086a2011290300370300200041106a2010290300370300200041186a200f2903003703002005200441016a22043602a801200541a0016a21050b20012007200410e703200541046a28020041ffffff3f71450d00200528020010290b200624000f0b1039000bd80803067f017e027f230041a0016b22032400200341e8006a200110d801200341f8006a20032802682204200328027010cd01200341086a41086a220520034182016a290100370300200341086a41106a22062003418a016a290100370300200341086a41176a220720034191016a2900003700002003200329017a37030802400240024020032d00784101470d0020032d00792108200341c8006a41176a2007290000370000200341c8006a41106a2006290300370300200341c8006a41086a2005290300370300200320032903083703480240200328026c450d00200410290b200341286a41176a2204200341c8006a41176a290000370000200341286a41106a2205200341c8006a41106a290300370300200341116a200341d0006a290300370000200341196a2005290300370000200341206a2004290000370000200320083a000820032003290348370009200341c8006a200110dc01200341f8006a20032802482204200328025010e0012003290388012109200328028401210a200328027821080240200328024c450d00200410290b0240200a450d00200a2009422088a741027422046a210b0240024020040d00410121040c010b200b200a6b417c6a41027641026a21040b200420024b0d02200341f8006a200110dc0120033502800142208620032802782204ad8410040240200328027c450d00200410290b4100210420082107200a2106024003402004417e712105410221040240024020054102460d00200821050c010b2006450d02200b2006460d02200641046a2106410321042007417f6a220721050b200341f8006a41186a200141186a290000370300200341f8006a41106a200141106a290000370300200341f8006a41086a200141086a290000370300200320053602980120032001290000370378200341c8006a200341f8006a10dd01200335025042208620032802482205ad841004200328024c450d00200510290c000b0b200942ffffffff0383500d00200a10290b200341f8006a200110d80120033502800142208620032802782204ad8410040240200328027c450d00200410290b200341f8006a200341086a10db0120033502800142208620032802782204ad8410040240200328027c450d00200410290b200341f8006a200110a60220033502800142208620032802782204ad8410040240200328027c450d00200410290b200341f8006a200110de0120033502800142208620032802782204ad8410040240200328027c450d00200410290b200341f8006a200110d90120033502800142208620032802782204ad8410040240200328027c450d00200410290b200110b202200041043a00000c020b0240200328026c450d00200410290b200041086a4108360200200041046a41d7b4c000360200200041026a41013a000020004183123b01000c010b0240200942ffffffff0383500d00200a10290b20004183123b0100200041086a4116360000200041046a41c1b0c000360000200041026a411e3a00000b200341a0016a24000bea0306037f017e0d7f027e017f017e230041306b22022400200241106a200110df03200220022802102203200228021810e60320022902044200200228020022041b210502402002280214450d00200310290b2004410820041b2106024002402005422088a722070d00410021070c010b200041706a210841002103200621044100210902400240034002400240024020082004460d00200441106a220a2900002000290000510d0020030d01410021030c020b200341016a21030c010b200920036b220b20074f0d02200241106a41186a220c200420034105746b220b41186a220d290300370300200241106a41106a220e200b41106a220f290300370300200241106a41086a2210200b41086a22112903003703002002200b290300370310200441086a22122903002113200a2903002114200441186a22152903002116200b2004290300370300200d2016370300200f2014370300201120133703002015200c290300370300200a200e29030037030020122010290300370300200420022903103703000b200441206a21042007200941016a2209460d020c000b0b200b20074180bdc7001036000b2003417f6a20074f0d00200542ffffffff0f832105200720036b21070b20012006200710e7030240200542ffffff3f83500d00200610290b200241306a24000b800201027f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad841007108b0202400240200228020822010d00410321000c010b200228020c210302400240200241106a280200450d0020012d000022004103490d010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b410321000b2003450d00200110290b200241d0006a240020000be10503027f017e057f230041e0006b2202240041eebec500ad4280808080f00084100122032900002104200241206a41086a200341086a290000370300200220043703202003102941f7c4c000ad4280808080800284100122032900002104200241c0006a41086a200341086a2900003703002002200437034020031029200220013602542002200241d4006aad4280808080c000841002220329000037035820031029200241146a200241d8006a3602002002200241d8006a41086a36020c2002200241d4006a3602102002200241d8006a360208200241306a200241086a107502400240024002402002280238220541206a2206417f4c0d00200228023021070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290320370000200341086a200241206a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290340370010200341186a200241c0006a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a02402002280234450d00200710290b200241086a2003200610d101200241c0006a41086a2201200241086a410c6a2902003703002002200229020c3703400240024020022802084101460d00200042003702002000410c6a41003602000c010b20002002290340370200200041086a20012903003702000b02402008450d00200310290b200241e0006a24000f0b1038000b1039000b1032000b1030000bbb0302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b2203428094ebdc03420010e007200441286a20042903382206200441386a41086a2903002207428094ebdc03420010d507200441186a20022003200620022004290328852003200441286a41086a2903008584420052ad7c22084201200842015620072008200654ad7c22064200522006501b22051b22082006420020051b220710e00702400240024020042903182206428080808010544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2008200710e00720042903082203428080808010544100200441086a41086a290300501b450d012006a7450d02200441d0006a2400200342ffffffff0f83428094ebdc037e200642ffffffff0f8380a70f0b2004411136024c200441ecaac70036024841f1a8c70041de00200441c8006a41a8a7c70041d0a9c700103a000b2004411136024c200441ecaac70036024841f1a8c70041de00200441c8006a41a8a7c70041ccaac700103a000b41f0a6c700411941dcaac7001033000be119020c7f087e23004190046b2204240020044190036a200110a6024100200428029003220520042802980310ad0241ff0171220620064103461b21060240200428029403450d00200510290b0240024002400240024020060e03000201000b200441a0016a200110d80120044190036a20042802a001220620042802a80110cd0120044180026a41086a220520044199036a29000037030020044180026a41106a2207200441a1036a29000037030020044180026a41186a2208200441a9036a29000037030020042004290091033703800202400240024020042d0090034101470d0020044180016a41186a200829030037030020044180016a41106a200729030037030020044180016a41086a2005290300370300200420042903800237038001024020042802a401450d00200610290b200441e0016a41186a20044180016a41186a290300370300200441e0016a41106a20044180016a41106a290300370300200441e0016a41086a20044180016a41086a29030037030020042004290380013703e001200441c0006a200441e0016a10db0120044190036a20042802402209200428024810e201200441a0016a41086a220520044190036a41086a290300370300200441a0016a41106a220720044190036a41106a290300370300200441a0016a41186a220820044190036a41186a29030037030020044180026a41086a220a200441bc036a29020037030020044180026a41106a220b200441c4036a29020037030020044180026a41186a220c200441cc036a29020037030020044180026a41206a220d200441d4036a29020037030020044180026a41286a220e200441dc036a29020037030020044180026a41306a220f200441e4036a28020036020020042004290390033703a001200420042902b4033703800220042802b0032206450d01200441e0026a41186a2008290300370300200441e0026a41106a2007290300370300200441e0026a41086a2005290300370300200441086a41086a200a290300370300200441086a41106a200b290300370300200441086a41186a200c290300370300200441086a41206a200d290300370300200441086a41286a200e290300370300200441086a41306a200f280200360200200420042903a0013703e002200420042903800237030802402004280244450d00200910290b20044180026a41186a200441e0016a41186a290300221037030020044180026a41106a200441e0016a41106a290300221137030020044180026a41086a200441e0016a41086a2903002212370300200420042903e00122133703800220044190036a41186a201037030020044190036a41106a201137030020044190036a41086a201237030020044190036a41286a200441e0026a41086a290300221437030020044190036a41306a200441e0026a41106a290300221537030020044190036a41386a200441e0026a41186a29030022163703002004201337039003200420042903e00222173703b003200441c0006a41386a2016370300200441c0006a41306a2015370300200441c0006a41286a2014370300200441e0006a2017370300200441c0006a41186a2010370300200441c0006a41106a2011370300200441c0006a41086a2012370300200420133703400c020b20042802a401450d04200610290c040b02402004280244450d00200910290b20044180026a41186a200441e0016a41186a29030037030020044180026a41106a200441e0016a41106a29030037030020044180026a41086a200441e0016a41086a290300370300200420042903e001370380020b2006450d02200441a0016a41386a2207200441c0006a41386a290300370300200441a0016a41306a2208200441c0006a41306a290300370300200441a0016a41286a220a200441c0006a41286a290300370300200441a0016a41206a220b200441c0006a41206a290300370300200441a0016a41186a200441c0006a41186a2205290300370300200441a0016a41106a200441c0006a41106a220c290300370300200441a0016a41086a200441c0006a41086a220d290300370300200420042903403703a001200441e0016a41186a2005290300370300200441e0016a41106a200c290300370300200441e0016a41086a200d290300370300200420042903403703e00120044180026a41186a2205200729030037030020044180026a41106a2207200829030037030020044180026a41086a2208200a290300370300200420063602a0022004200b29030037038002200441a4026a2004290308370200200441ac026a200441086a41086a290300370200200441b4026a200441086a41106a290300370200200441bc026a200441086a41186a290300370200200441c4026a200441086a41206a290300370200200441cc026a200441086a41286a290300370200200441d4026a200441086a41306a2802003602002005290300211020072007290300221120027c22123703002005201020037c2012201154ad7c3703002008200829030020037c200429038002221020027c2211201054ad7c221237030020042011370380022004200337038801200420023703800102400240200220038450450d004200210342002110420021020c010b200420013602dc02200441e0026a200120044180016a200441dc026a10b302024020042802e0024101470d004200211020042903e8022103420121020c010b20044188036a290300211020044180036a29030021034200210220042903e8024201520d00200441e0026a41106a2903002113200441c8036a200441e0026a41186a290300370300200441c0036a201337030020044190036a41086a41003a000020044199036a2001290000370000200441a1036a200141086a290000370000200441a9036a200141106a290000370000200441b1036a200141186a290000370000200441033a00900320044190036a10cb010b200442f3e885db96cddbb3203703800120044180016a20044180026a41386a20112012411f10aa0220044190036a200441e0016a10db01200428029003210120042004280298033602e402200420013602e00220044180026a200441e0026a10e4010240200428029403450d00200110290b024020042802a4022201450d00200141186c450d0020042802a00210290b0240200441b0026a28020041ffffffff0371450d0020042802ac0210290b200242018521020c030b200441a0016a200110d80120044190036a20042802a001220120042802a80110cd0120044180026a41086a220620044199036a29000037030020044180026a41106a2205200441a1036a29000037030020044180026a41186a2207200441a9036a290000370300200420042900910337038002024020042d0090034101470d00200441c0006a41186a2007290300370300200441c0006a41106a2005290300370300200441c0006a41086a20062903003703002004200429038002370340024020042802a401450d00200110290b200441a0016a41186a200441c0006a41186a290300370300200441a0016a41106a200441c0006a41106a290300370300200441a0016a41086a200441c0006a41086a290300370300200420042903403703a001200420023703082004200337031002400240200220038450450d004200210242002103420021100c010b2004200441a0016a3602e00220044180026a200441a0016a200441086a200441e0026a10b30202402004280280024101470d00420021102004290388022103420121020c010b200441a8026a2903002110200441a0026a2903002103420021022004290388024201520d0020044180026a41106a2903002111200441c8036a20044180026a41186a290300370300200441c0036a201137030020044190036a41086a41003a000020044199036a20042903a001370000200441a1036a200441a0016a41086a290300370000200441a9036a200441a0016a41106a290300370000200441b1036a200441a0016a41186a290300370000200441033a00900320044190036a10cb010b200242018521020c030b20042802a401450d0120011029420021020c020b200420023703a001200420033703a80102400240200220038450450d004200210342002110420021020c010b2004200136024020044180026a2001200441a0016a200441c0006a10b30202402004280280024101470d00420021102004290388022103420121020c010b200441a8026a2903002110200441a0026a2903002103420021022004290388024201520d0020044180026a41106a2903002111200441c8036a20044180026a41186a290300370300200441c0036a201137030020044190036a41086a41003a000020044199036a2001290000370000200441a1036a200141086a290000370000200441a9036a200141106a290000370000200441b1036a200141186a290000370000200441033a00900320044190036a10cb010b200242018521020c010b420021020b2000200337030820002002370300200041106a201037030020044190046a24000b845d08137f017e017f027e117f017e067f077e230041c0036b22082400200820033a005f20084180016a41286a200441286a29030037030020084180016a41206a200441206a29030037030020084180016a41186a200441186a29030037030020084180016a41106a200441106a29030037030020084180016a41086a200441086a2903003703002008200429030037038001200841c0026a20084180016a200510b40220084180036a41086a2205200841c0026a41106a29030037030020084180036a41106a2203200841c0026a41186a29030037030020084180036a41186a2209200841c0026a41206a290300370300200820082903c80237038003024002400240024002400240024002400240024002400240024002400240024002400240024020082903c0024201510d00200141086a280200210a200241bc016a280200210b200241b0016a280200210c200241a4016a280200210d20024198016a280200210e2002418c016a280200210f20024180016a2802002110200241f4006a2802002111200241e8006a2802002112200241dc006a2802002113200241d0006a2802002114200241c4006a2802002115200241386a28020021162002412c6a2802002117200241206a2802002118200241146a2802002119200241086a280200211a200841a0036a41086a22034200370300200842003703a00341eebec500ad4280808080f0008410012209290000211b200841b0036a41086a221c200941086a2900003703002008201b3703b003200910292003201c290300370300200820082903b0033703a00341c6b8c000ad4280808080a0028410012209290000211b2009290008211d20091029200520032903003703002008201d370398032008201b37039003200820082903a00337038003200841c4026a41003a0000200841003602c002200841d0006a20084180036a4120200841c0026a4105410010c7012008280250450d01200820082802542205410520054105491b360284012008200841c0026a36028001200841c8006a20084180016a10c80120082802480d01200828024c2203200741ffff0371470d02200841a0036a41086a22054200370300200842003703a00341eebec500ad4280808080f00084221e10012209290000211b200841b0036a41086a221c200941086a2900003703002008201b3703b003200910292005201c290300370300200820082903b0033703a003419cf3c100ad4280808080e0018410012209290000211b2009290008211d2009102920084180036a41086a221f20052903003703002008201d370398032008201b37039003200820082903a00337038003200841c0006a20084180036a412010fc01200a20032008280244410020082802401b2209200920034b1b470d0320054200370300200842003703a003201e10012203290000211b201c200341086a2900003703002008201b3703b003200310292005201c290300370300200820082903b0033703a00341d8b8c000ad4280808080a0028410012203290000211b2003290008211d20031029201f20052903003703002008201d370398032008201b37039003200820082903a00337038003200841c4026a41003a0000200841003602c002200841386a20084180036a4120200841c0026a4105410010c7012008280238450d042008200828023c2205410520054105491b360284012008200841c0026a36028001200841306a20084180016a10c80120082802300d0420082802342006470d05200841a0036a41086a22054200370300200842003703a00341eebec500ad4280808080f0008410012203290000211b200841b0036a41086a2209200341086a2900003703002008201b3703b0032003102920052009290300370300200820082903b0033703a00341c6b8c000ad4280808080a0028410012203290000211b2003290008211d2003102920084180036a41086a20052903003703002008201d370398032008201b37039003200820082903a0033703800320084180016a20084180036a108d0202402008280280012205450d002008200829028401221b3702642008200536026020012802002120200128020421210240200a0d00412021220c0a0b41142122201b422088a720202f010022014d0d0920084188016a2203200520014105746a220141096a29000037030020084190016a2205200141116a29000037030020084197016a2209200141186a290000370000200820012900013703800120012d000021014120212241201027221c450d0b201c20013a0000201c200829038001370001201c41096a2003290300370000201c41116a2005290300370000201c41186a20092900003700002008428180808010370284032008201c3602800341012109200a4101460d0841142122200828026820202f010222014d0d08200841c0026a41086a2223200828026020014105746a220141096a290000370300200841c0026a41106a2224200141116a290000370300200841c0026a41176a2225200141186a290000370000200820012900013703c002202041046a211f200a410174417c6a210520012d00002126412121034102210941012101034020084180016a41176a2227202529000037000020084180016a41106a2228202429030037030020084180016a41086a22292023290300370300200820082903c0023703800102402009417f6a2001470d0020084180036a20014101109e01200828028003211c0b201c20036a2201417f6a20263a00002001200829038001370000200141086a2029290300370000200141106a2028290300370000200141176a20272900003700002008200936028803024020050d00412021220c0a0b2008280268201f2f010022014d0d092023200828026020014105746a220141096a2900003703002024200141116a2900003703002025200141186a290000370000200820012900013703c0022005417e6a2105201f41026a211f200341206a2103200941016a210920012d0000212620082802840321010c000b0b200041113a001a2000420037030820004201370300200041206a41133602002000411c6a41d0b2c000360200200041186a4183123b01000c060b200020082903800337030820004201370300200041206a2009290300370300200041186a2003290300370300200041106a20052903003703000c050b200041206a41133602002000411c6a41d0b2c000360200200041113a001a200041186a4183123b010020004200370308200042013703000c040b2000411b3a001a2000420037030820004201370300200041206a41193602002000411c6a41fab0c000360200200041186a4183123b01000c030b200041123a001a2000420037030820004201370300200041206a41183602002000411c6a41b8b2c000360200200041186a4183123b01000c020b200041206a41133602002000411c6a41d0b2c000360200200041113a001a200041186a4183123b010020004200370308200042013703000c010b2000411b3a001a2000420037030820004201370300200041206a41193602002000411c6a41fab0c000360200200041186a4183123b01000b2002108702200141046a28020041808080807872418080808078460d0b200128020010290c0b0b0240202141808080807872418080808078460d00202010290b20082802840341ffffff3f7121230c010b410021234101211c0240202141808080807872418080808078460d00202010290b410021090b024020224120460d0002402023450d00201c10290b41c1b0c000210441162105411e21010240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020220e20000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f000b20084194016a4101360200200842013702840120084198e3ca0036028001200841043602c402200841bcd4c8003602c0022008200841c0026a3602900120084180016a4180a6cc001040000b41dfb4c0002104410d2105410021010c1d0b41d7b4c000210441082105410121010c1c0b41cab4c0002104410d2105410221010c1b0b41bdb4c0002104410d2105410321010c1a0b41b1b4c0002104410c2105410421010c190b41a3b4c0002104410e2105410521010c180b4192b4c000210441112105410621010c170b4181b4c000210441112105410721010c160b41f5b3c0002104410c2105410821010c150b41e8b3c0002104410d2105410921010c140b41dcb3c0002104410c2105410a21010c130b41cab3c000210441122105410b21010c120b41b0b3c0002104411a2105410c21010c110b419eb3c000210441122105410d21010c100b4190b3c0002104410e2101410e21050c0f0b41f9b2c000210441172105410f21010c0e0b41e3b2c0002104411021010c0d0b41d0b2c000210441132105411121010c0c0b41b8b2c000210441182105411221010c0b0b41a5b2c000210441132101411321050c0a0b4191b2c000210441142101411421050c090b41fbb1c0002104411521010c080b41e4b1c000210441172105411621010c070b41cbb1c000210441192105411721010c060b41b6b1c000210441152105411821010c050b41a5b1c000210441112105411921010c040b4193b1c000210441122105411a21010c030b41fab0c000210441192105411b21010c020b41ecb0c0002104410e2105411c21010c010b41d7b0c000210441152105411d21010b200020013a001a2000420037030820004201370300200041206a20053602002000411c6a2004360200200041186a4183123b0100200828026441ffffff3f71450d08200828026010290c080b200841a0036a41086a22014200370300200842003703a00341eebec500ad4280808080f0008410012205290000211b200841b0036a41086a2203200541086a2900003703002008201b3703b0032005102920012003290300370300200820082903b0033703a00341d8b8c000ad4280808080a0028410012205290000211b2005290008211d2005102920084180036a41086a20012903003703002008201d370398032008201b37039003200820082903a0033703800320084180016a20084180036a108d02024020082802800122250d00200041113a001a2000420037030820004201370300200041206a41133602002000411c6a41d0b2c000360200200041186a4183123b010002402023450d00201c10290b200828026441ffffff3f71450d082008280260102920021087020c090b2008200829028401221b3702742008202536027020084180016a200241c00110e4071a200841c0026a20084180016a200841f0006a200841e0006a10b502201ba72128024020082d00c0024101470d00200820082d00c1023a00b003024041002802d8a74c4102490d0020084110360284032008200841b0036a3602800341002802888040210241002802848040210441002802dca74c2101200841c0016a418c15360200200841b8016a42db80808010370300200841b4016a41eec5c000360200200841ac016a420e370200200841a8016a41e0c5c000360200200841a0016a420137030020084190016a420137030020084188016a41073602002008419c016a20084180036a360200200841f4a5c20036028c01200841bcc1c20036028401200841023602800120044180a4c000200141024622011b20084180016a20024198a4c00020011b2802101102000b200041206a41143602002000411c6a4191b2c000360200200041143a001a200041186a4183123b010020004200370308200042013703000c070b20082802c402222a200841c0026a410c6a280200222b412c6c222c6a212d200841c0026a41086a222e280200212f0240202c450d0020084180036a41086a212941eebec500ad4280808080f00084211b41b8dcc900ad4280808080a001842130202a21220340201b10012202290000211d200841b0036a41086a2224200241086a2900003703002008201d3703b00320021029203010012202290008211d200228000421212002280000213120021029412010272202450d0220022022410c6a2201290000370000200241186a200141186a2232290000370000200241106a200141106a2233290000370000200241086a200141086a223429000037000020082002ad42808080808004841002220529000037038003200510292008200241206a36028c0120082002360288012008202936028401200820084180036a36028001200841c0026a20084180016a10752002102920082802c802222641206a2205417f4c0d0720082802c00221270240024020050d0041002103410121020c010b200510272202450d03200521030b024002402003410f4d0d002003211f0c010b2003410174221f4110201f41104b1b221f4100480d04024020030d00201f102722020d010c080b2003201f460d0020022003201f102b2202450d070b200220082903b003370000200241086a202429030037000002400240201f4170714110460d00201f21030c010b201f41017422034120200341204b1b22034100480d04201f2003460d002002201f2003102b2202450d070b2002201d370018200220213600142002203136001002400240200341606a2026490d002003211f0c010b2026415f4b0d042003410174221f2005201f20054b1b221f4100480d042003201f460d0020022003201f102b2202450d070b200241206a2027202610e4071a024020082802c402450d00202710290b200841286a200220054180a6cc004100410010c701200828022821210240201f450d00200210290b201b10012202290000211d2024200241086a2900003703002008201d3703b0032002102941f5b7c000ad4280808080a0018410012202290008211d200228000421312002280000213520021029412010272202450d0220022001290000370000200241186a2032290000370000200241106a2033290000370000200241086a203429000037000020082002ad42808080808004841002220529000037038003200510292008200241206a36028c0120082002360288012008202936028401200820084180036a36028001200841c0026a20084180016a10752002102920082802c802222641206a2205417f4c0d0720082802c00221270240024020050d0041002103410121020c010b200510272202450d03200521030b024002402003410f4d0d002003211f0c010b2003410174221f4110201f41104b1b221f4100480d04024020030d00201f10272202450d080c010b2003201f460d0020022003201f102b2202450d070b200220082903b003370000200241086a202429030037000002400240201f4170714110460d00201f21030c010b201f41017422034120200341204b1b22034100480d04201f2003460d002002201f2003102b2202450d070b2002201d370018200220313600142002203536001002400240200341606a2026490d002003211f0c010b2026415f4b0d042003410174221f2005201f20054b1b221f4100480d042003201f460d0020022003201f102b2202450d070b200241206a2027202610e4071a024020082802c402450d00202710290b20084180016a2002200510b702024020082d009001220541024622240d0020082802800121202008280284012136200829038801211e0b0240201f450d00200210290b024002400240024002402021410146220220054102472203460d002002450d010240202241086a2802004101470d000240202228020022022001460d0020022001412010e7070d010b20022f012041ffff03460d030b200041183a001a2000420037030820004201370300200041206a41153602002000411c6a41b6b1c000360200200041186a4183123b010020054102460d0a203641ffffff3f710d090c0a0b024041002802d8a74c450d0041002802888040210241002802848040210441002802dca74c2101200841c0016a419b15360200200841b8016a42db80808010370300200841b4016a41eec5c000360200200841ac016a420e370200200841a8016a41e0c5c000360200200841a0016a42003703002008419c016a4180a6cc0036020020084190016a420137030020084188016a4107360200200841fca5c20036028c01200841bcc1c20036028401200841013602800120044180a4c000200141024622011b20084180016a20024198a4c00020011b2802101102000b200041153a001a2000420037030820004201370300200041206a41163602002000411c6a41fbb1c000360200200041186a4183123b010020054102460d09203641ffffff3f71450d090c080b02402003450d00024020222802082202450d002022280200221f200241226c6a2126201e422088a72127201ea7410574212403402008201f22053602c002200541226a211f2024210120202102024002400340024020010d004117210241e4b1c0002104411621010c020b024020052002460d0020022005412010e7072103200141606a2101200241206a210220030d010b0b20084180016a200841c0026a10df01200828028c012202450d012008280288012101024020082802900141ffffffff0371450d00200210290b200120274d0d014119210241cbb1c0002104411721010b200020013a001a2000420037030820004201370300200041206a20023602002000411c6a2004360200200041186a4183123b0100203641ffffff3f710d0b0c0c0b201f2026470d000b0b203641ffffff3f71450d030c020b4184a6c20041fd004184a7c2001057000b20240d01203641ffffff3f71450d010b202010290b2022412c6a2222202d470d000b0b2008410036028803200842043703800320084180036a4100202c412c6d109301200828028003210120082802880321022008202d36028c012008202a360288012008202f360284012008202a360280012008200841b0036a36029001202e2002360200200820084180036a41086a3602c402200820012002412c6c6a3602c00220084180016a200841c0026a10b802200828028403212020084180016a201c200920082802800322312008280288032221109a022008280288012129200828028401212220082802800121270240024002400240024002400240200828028c010d002027450d022022450d012022210220272101034020012802c80521012002417f6a22020d000b20272102202221050340200220022f01064102746a41c8056a28020021022005417f6a22050d000b20084180016a21050c030b200041193a001a2000420037030820004201370300200041206a41113602002000411c6a41a5b1c000360200200041186a4183123b01000c040b20084180016a210520272101202721020c010b41002101200841003602840120084180016a21050c010b20082002360284012008418c016a20022f0106360200200841003602880120084100360280010b20084180036a41086a200541086a290200221b37030020082005290200221d3703800320084180016a41186a201b370300420021372008420037038801200820013602840120084100360280012008201d37039001200820293602a0010240024020290d00427f21384200211e4200213942002130427f213a0c010b20082029417f6a3602a00120084180016a410020011b221f2802002105201f28020821240240024002400240201f28020c2203201f28020422022f01064f0d00200221010c010b034020022802002201450d02200541016a210520022f0104210320012102200320012f01064f0d000b0b2003ad4220862024ad84211b0c010b2024ad211b410021010b201b422088a7222441016a2103201ba721260240024020050d00200121020c010b200120034102746a41c8056a2802002102410021032005417f6a2205450d00034020022802c80521022005417f6a22050d000b0b201f200336020c201f2026360208201f2002360204201f4100360200200120244105746a41e8026a2102427f2138427f213a4200213942002130420021374200211e0340200841086a200241086a290300221b42002002290300221d420010d507200841186a201d4200201d420010d507427f201e427f200841186a41086a290300223b2008290308223c203c7c7c223c201b2008290310223d84203d84420052203c203b547222021b7c2037427f200829031820021b7c223b2037542202ad7c223720022037201e542037201e511b22021b211e427f203b20021b2137201b203a201d203854201b203a54201b203a511b22021b213a201d203820021b2138427f2030201b7c2039201d7c221d2039542202ad7c221b2002201b203054201b2030511b22021b2130427f201d20021b213920082802a0012202450d0120082002417f6a3602a00120084180016a41002008280284011b221f2802002105201f2802082124024002400240201f28020c2203201f28020422022f01064f0d00200221010c010b0240034020022802002201450d01200541016a210520022f0104210320012102200320012f0106490d020c000b0b2024ad211b410021010c010b2003ad4220862024ad84211b0b201b422088a7222441016a2103201ba721260240024020050d00200121020c010b200120034102746a41c8056a2802002102410021032005417f6a2205450d00034020022802c80521022005417f6a22050d000b0b201f200336020c201f2026360208201f2002360204201f4100360200200120244105746a41e8026a21020c000b0b200841e8026a201e370300200841c0026a41186a2030370300200820373703e002200820393703d002200820383703c0022008203a3703c802200841c0026a2004460d01200841c0026a2004413010e707450d012000411a3a001a2000420037030820004201370300200041206a41123602002000411c6a4193b1c000360200200041186a4183123b01000b0240024020270d004100212920084194016a410036020020084100360284010c010b0240024020220d00202721020c010b2022210220272104034020042802c80521042002417f6a22020d000b202721020340200220022f01064102746a41c8056a28020021022022417f6a22220d000b200421270b2008419c016a20022f010636020020084198016a410036020020084194016a200236020020084100360290012008420037038801200820273602840120084100360280010b200820293602a00120084180016a10b90202402021450d002021412c6c21042031210203400240200241046a2802002200450d00200041306c450d00200228020010290b2002412c6a2102200441546a22040d000b0b2020450d072020412c6c450d07203110290c070b0240024020270d004100212741002102410021290c010b0240024020220d00202721020c010b2022210220272104034020042802c80521042002417f6a22020d000b202721020340200220022f01064102746a41c8056a28020021022022417f6a22220d000b200421270b20022f010621040b2008419c016a2201200436020020084198016a410036020020084194016a2002360200200820293602a00120084100360290012008420037038801200820273602840120084100360280012008200841b0036a3602a401200841f0026a20084180016a109b02024041002802d8a74c4103490d002008418c036a41113602002008410f360284032008200841c0026a360288032008200841df006a3602800341002802888040210241002802848040210441002802dca74c2105200841c0016a41db15360200200841b8016a42db80808010370300200841b4016a41eec5c000360200200841ac016a420e370200200841a8016a41e0c5c000360200200841a0016a420237030020084190016a420337030020084188016a4107360200200120084180036a36020020084194a7c20036028c01200841bcc1c20036028401200841033602800120044180a4c000200541024622011b20084180016a20024198a4c00020011b2802101102000b20082802f802212420082802f402212920082802f002212620082d005f2127200841a0036a41086a22024200370300200842003703a00341eebec500ad4280808080f0008410012204290000211b200841b0036a41086a2201200441086a2900003703002008201b3703b0032004102920022001290300370300200820082903b0033703a0034180ffc100ad4280808080d0018410012204290000211b2004290008211d2004102920084180036a41086a20022903003703002008201d370398032008201b37039003200820082903a0033703800320084100360288012008420137038001200920084180016a107102402009450d002009410574211f410020082802880122046b21052008280284012103201c2102034002400240200320056a4120490d0020082802800121010c010b200441206a22012004490d04200341017422092001200920014b1b22094100480d040240024020030d00024020090d00410121010c020b200910272201450d090c010b200828028001210120032009460d00200120032009102b2201450d080b20082009360284012008200136028001200921030b200120046a22012002290000370000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700002008200441206a220436028801200541606a2105200241206a2102201f41606a221f0d000b0b202420084180016a107102402024450d002026202441d0006c6a21222026211f034002400240200828028401220120082802880122026b4120490d0020082802800121040c010b200241206a22042002490d04200141017422052004200520044b1b22054100480d040240024020010d00024020050d00410121040c020b200510272204450d090c010b200828028001210420012005460d00200420012005102b2204450d080b200820053602840120082004360280010b200420026a2204201f290000370000200441186a201f41186a290000370000200441106a201f41106a290000370000200441086a201f41086a2900003700002008200241206a360288012008201f41206a3602b003200841b0036a20084180016a10e5012008201f41306a3602b003200841b0036a20084180016a10e501201f2802402102201f280248220420084180016a107102402004450d00200441306c2103034002400240200828028401220520082802880122046b4120490d0020082802800121010c010b200441206a22012004490d06200541017422092001200920014b1b22094100480d060240024020050d00024020090d00410121010c020b200910272201450d0b0c010b200828028001210120052009460d00200120052009102b2201450d0a0b200820093602840120082001360280010b200120046a2201200241106a290000370000200141186a200241286a290000370000200141106a200241206a290000370000200141086a200241186a2900003700002008200441206a36028801200820023602b003200841b0036a20084180016a10e501200241306a2102200341506a22030d000b0b2022201f41d0006a221f470d000b0b024002400240024002400240202741024b0d0020270e03010203010b2008280288012102200828028401210120082802800121040c040b410021050c020b410121050c010b410221050b200820053a00b0030240024020082802840122012008280288012202460d0020082802800121040c010b200241016a22042002490d03200241017422012004200120044b1b22014100480d030240024020020d0041002102024020010d00410121040c020b200110272204450d080c010b200828028001210420022001460d00200420022001102b2204450d070b200820013602840120082004360280010b200420026a20053a00002008200241016a2202360288010b20084180036aad4280808080800484221b2002ad4220862004ad84100302402001450d00200410290b02402023450d00201c10290b02402024450d00202441d0006c2104202641c4006a21020340024020022802002201450d00200141306c450d002002417c6a28020010290b200241d0006a2102200441b07f6a22040d000b0b02402029450d00202941d0006c450d00202610290b20084180016a41286a2205200841c0026a41286a29030037030020084180016a41206a2203200841c0026a41206a29030037030020084180016a41186a2209200841c0026a41186a29030037030020084180016a41106a221c200841c0026a41106a29030037030020084180016a41086a2204200841c0026a41086a290300370300200820082903c00237038001200841a0036a41086a22024200370300200842003703a00341eebec500ad4280808080f0008410012201290000211d200841b0036a41086a221f200141086a2900003703002008201d3703b003200110292002201f290300370300200820082903b0033703a00341d0ffc100ad4280808080b0018410012201290000211d2001290008211e2001102920084180036a41086a20022903003703002008201e370398032008201d37039003200820082903a00337038003413010272202450d002002200829038001370000200241286a2005290300370000200241206a2003290300370000200241186a2009290300370000200241106a201c290300370000200241086a2004290300370000201b2002ad428080808080068410032002102920084189016a20082d005f3a0000200441053a0000200841043a00800120084180016a10cb01200041106a427f4200427f427f427f2006ad42c0fc157e2007ad42ffff038342f0b9267e7c417f417f417f417f417f417f417f417f417f417f417f417f417f417f417f201a20196a22022002201a491b220220186a220420042002491b220220176a220420042002491b220220166a220420042002491b220220156a220420042002491b220220146a220420042002491b220220136a220420042002491b220220126a220420042002491b220220116a220420042002491b220220106a220420042002491b2202200f6a220420042002491b2202200e6a220420042002491b2202200d6a220420042002491b2202200c6a220420042002491b2202200b6a220420042002491b2202ad221b4280b0e32d7e7c200aad221d4280a4e8037e7c201b42c0f0f50b7e7c428084afdf007c221b417f417f417f417f417f417f417f417f417f417f417f417f417f417f201a417f201920196a220420042019491b6a22042004201a491b2204417f2018ad42037e221ea7201e422088a71b6a220120012004491b2204417f2017410274201741ffffffff03712017471b6a220120012004491b2204417f2016ad42057e221ea7201e422088a71b6a220120012004491b2204417f2015ad42067e221ea7201e422088a71b6a220120012004491b2204417f2014ad42077e221ea7201e422088a71b6a220120012004491b2204417f2013410374201341ffffffff01712013471b6a220120012004491b2204417f2012ad42097e221ea7201e422088a71b6a220120012004491b2204417f2011ad420a7e221ea7201e422088a71b6a220120012004491b2204417f2010ad420b7e221ea7201e422088a71b6a220120012004491b2204417f200fad420c7e221ea7201e422088a71b6a220120012004491b2204417f200ead420d7e221ea7201e422088a71b6a220120012004491b2204417f200dad420e7e221ea7201e422088a71b6a220120012004491b2204417f200cad420f7e221ea7201e422088a71b6a220120012004491bad42c0f0f50b7e221e7c22302030201b541b221b2002200a6aad4280e1eb177e7c22302030201b541b221b42c0f4a4eb007c22302030201b541b221b201e7d221e201e201b561b221b201d42c0f0f50b7e7c221d201d201b541b370300200042013703082000420037030002402021450d002021412c6c21042031210203400240200241046a2802002200450d00200041306c450d00200228020010290b2002412c6a2102200441546a22040d000b0b02402020450d002020412c6c450d00203110290b0240202841ffffff3f71450d00202510290b200828026441ffffff3f71450d08200828026010290c080b1039000b1032000b202010290b0240202b450d00202b412c6c2104202a210203400240200241046a2802002200450d00200041226c450d00200228020010290b2002412c6a2102200441546a22040d000b0b202f450d02202f412c6c450d02202a10290c020b1030000b1038000b0240202841ffffff3f71450d00202510290b02402023450d00201c10290b200828026441ffffff3f71450d01200828026010290c010b20021087020b200841c0036a24000bb00305037f017e017f077e017f230041e0006b220124002001200010a802200141106a200128020022022001280208220310a9020240024020012903104201510d004200210441002105420021064200210742002108420021094200210a4200210b4200210c4100210d0c010b200141206a290300210c200141306a290300210a200141286a2903002109200141c0006a2903002108200141386a2903002107200141d0006a2903002106200141c8006a2903002104200141d8006a28020021052001290318210b20012d005c210d0b0240410410272200450d0020002005360000200041044108102b2200450d0020004100200d411874220541808080786a220d200d20054b1b4118763a0004200041084115102b2200450d002000200b3700052000410d6a200c37000020004115412a102b2200450d00200020093700152000411d6a200a3700002000412a41d400102b2200450d0020002004370035200020073700252000413d6a20063700002000412d6a20083700002003ad4220862002ad842000ad4280808080d0088410032000102902402001280204450d00200210290b200141e0006a24000f0b1030000bd60c06047f027e027f067e037f067e23004180036b22042400200328020021052004200110a80220044180016a200428020022062004280208220710a9022004290380012108420021092004420037038001200441c8016a280200210a20042d00cc01210b02400240200842015122030d00200441106a41306a4200370300200441106a41286a4200370300200441106a41206a4200370300200441106a41186a4200370300200441206a4200370300200441186a4200370300200442003703104200210c4200210d4200210e4200210f0c010b200441b8016a290300211020044180016a41306a290300211120044180016a41206a290300210c20044180016a41186a2903002109200441c0016a290300210f200429039001210e200429038801210d200441106a41206a20044180016a41286a290300370300200441106a41286a2011370300200441106a41306a2010370300200441206a20093703002004200c3703282004200d3703102004200e3703180b02400240024002400240427f200d20097c22092009200d542212200e200c7c2012ad7c2209200e542009200e511b22121b427f200920121b8450450d0041a5e2c200ad4280808080b00184210e41838c1c21120c010b200d200229030022107c2209200d542212200e200241086a29030022117c2012ad7c220d200e54200d200e511b4101470d0141839dc500ad4280808080800184210e41838c0821120b200e4280807c832108200e42088842ff0183210c200ea72103410121020c010b200420093703102004200d370318200441c8006a41186a200441206a220241086a290300220e370300200441c8006a41206a2212200241106a290300370300200441f0006a2213200241186a290300370300200441f8006a2214200241206a2903003703002004200d3703502004200937034820042002290300220c37035802400240427f2009200c7c220c200c2009542202200d200e7c2002ad7c220e200d54200e200d511b22021b220c4280c8afa025544100427f200e20021b220e501b0d00200441c8006a41106a2903002115201429030021162013290300210e2012290300210c2004290350211720042903482118420121192004290360211a0c010b420021190240200c200e84500d00200c200e10d402200441b8026a200e370300200441b0026a200c37030020044180026a41086a41013a000020044189026a200529000037000020044191026a200541086a29000037000020044199026a200541106a290000370000200441a1026a200541186a290000370000200441033a00800220044180026a10cb010b0b200441a8016a200c370300200441b0016a200e37030020044190016a2017370300200441b8016a201637030020044198016a20153703002004201a3703a0012004200f3703c0012004201837038801410021022004200b4100200842015122121b22053a00cc012004200a410020121b220a3602c801200420194201512212ad37038001024020120d002007ad4220862006ad8410044200210c420021080c010b410410272212450d012012200a360000201241044108102b2212450d01201220053a0004201241084115102b2212450d01201220183700052012410d6a2017370000200441a0016a290300210820044198016a290300210f20124115412a102b2212450d012012200f3700152012411d6a20083700002012412a41d400102b2212450d012012200c3700252012412d6a200e3700002012413d6a200441c0016a2903003700002012200441b8016a2903003700352007ad4220862006ad842012ad4280808080d00884100320121029420021084201210c0b02402004280204450d00200610290b024002402002450d0020002012360204200041086a200c4208862003ad42ff018384200884370200410121010c010b024002400240200341ff017122030d00200c4200510d004103210220044180026a21030c010b2003450d01200c4200520d014104210220044180016a21030b200341086a20023a0000200341003a0000200341096a2001290000370000200341116a200141086a290000370000200341196a200141106a290000370000200341216a200141186a290000370000200310cb010b200041286a2011370300200041206a2010370300200041186a200d370300200041106a2009370300200041086a4200370300410021010b2000200136020020044180036a24000f0b1030000bc90c06047f017e017f017e047f0a7e23004190016b22032400200341386a41186a22044200370300200341386a41106a22054200370300200341386a41086a220642003703002003420037033841eebec500ad4280808080f000842207100122082900002109200341d8006a41086a220a200841086a29000037030020032009370358200810292006200a2903003703002003200329035837033841eab8c000ad4280808080900284100122082900002109200a200841086a2900003703002003200937035820081029200520032903582209370300200341186a41086a220b2006290300370300200341186a41106a220c2009370300200341186a41186a220d200a29030037030020032003290338370318200341106a200341186a10b1010240024002402003280210417d71450d00200442003703002005420037030020064200370300200342003703382007100122082900002109200a200841086a29000037030020032009370358200810292006200a2903003703002003200329035837033841c4f5c100ad4280808080a00184100122082900002109200a200841086a290000370300200320093703582008102920052003290358370000200541086a200a290300370000200b2006290300370300200c2005290300370300200d200429030037030020032003290338370318200341086a200341186a412010fc0120032802084101470d01200328020c2002460d012000410f3a001a2000420137030820004201370300200041206a41173602002000411c6a41f9b2c000360200200041186a4183123b0100200041106a4280e1eb173703000c020b2000410f3a001a2000420137030820004201370300200041206a41173602002000411c6a41f9b2c000360200200041186a4183123b0100200041106a42c0f0f50b3703000c010b42002109200341386a41186a22044200370300200341386a41106a220b4200370300200341386a41086a220642003703002003420037033841eebec500ad4280808080f00084100122082900002107200341d8006a41086a220a200841086a29000037030020032007370358200810292006200a2903003703002003200329035837033841d0ffc100ad4280808080b00184100122082900002107200a200841086a290000370300200320073703582008102920052003290358370000200541086a200a290300370000200341186a41086a2006290300370300200341186a41106a200b290300370300200341186a41186a2004290300370300200320032903383703182003412036026c2003200341186a360268200341f0006a200341186aad42808080808004841007108b02024002402003280270220a0d000c010b20032802742105024002400240200341f0006a41086a28020022064110490d00200641707122064110460d0020064120470d010b20034100360260200342013703582003410d360284012003200341e8006a360280012003200341d8006a36028c01200341cc006a41013602002003420137023c200341f4eaca00360238200320034180016a3602482003418c016a41a8a3c800200341386a10371a200335026042208620033502588410080240200328025c450d00200328025810290b420021090c010b200a41086a290000210e200a290000210f200a41286a2900002107200a41186a2900002110200a2900202111200a2900102112420121090b2005450d00200a10290b0240024002402009500d00200141286a2903002109200141186a2903002113200141086a290300211420012903202115200129031021162001290300211741031027220a450d01200a417f20152011852009200785844200522015201154200920075420092007511b22081b3a0002200a417f20162012852013201085844200522016201254201320105420132010511b1b22063a0001200a417f2017200f852014200e85844200522017200f542014200e542014200e511b1b22053a000002400240200541014b0d000240024020050e020001000b200641014b0d0120060e020200020b200a10290c020b200a10290c030b200a10292008450d020b20004200370300200041086a42003703000c020b1030000b200041103a001a2000420137030820004201370300200041206a41163602002000411c6a41e3b2c000360200200041186a4183123b0100200041106a42c0d1e1233703000b20034190016a24000bf6c8010e077f017e057f017e0b7f017e037f017e017f017e017f017e017f017e230041d0016b220424002004200336020c20044100360218200442043703102001280204210520012802002106024002400240024002400240024002400240024020012802082203450d0020034103742107200441b0016a41106a2108200441b0016a41176a21092006210a03402002280208200a290200220ba722034d0d07200441b0016a41086a220c200228020020034105746a220341096a2900003703002008200341116a2900003703002009200341186a290000370000200420032900013703b00120032d0000210d412210272203450d02200428020c220e280208200b422088a741ffff0371220f4d0d06200441c0006a41106a2210200e280200200f4105746a220e41116a290000370300200441c0006a41176a220f200e41186a290000370000200441c0006a41086a200e41096a2900002211370300200e290001210b2003200e2d00003a00002003200b370001200341096a2011370000200341ffff033b0120200341116a2010290300370000200341186a200f2900003700002004200b37034020044190016a41176a220f200929000037000020044190016a41106a2210200829030037030020044190016a41086a2212200c290300370300200420042903b0013703900102402004280218220e2004280214470d00200441106a200e41011093012004280218210e0b200a41086a210a2004280210200e412c6c6a220e200d3a000c200e428180808010370204200e2003360200200e410d6a200429039001370000200e41156a2012290300370000200e411d6a2010290300370000200e41246a200f2900003700002004200428021841016a360218200741786a22070d000b0b0240200541ffffffff0171450d00200610290b200128020c2113200141106a2802002114200141146a2802002203450d0320132003410c6c6a211520044190016a41106a210720044190016a41176a210c2013210a034002400240200a41066a2f0100220841ffff03460d002002280208200a28020022034b0d0120004181043b01000c050b200041013b01000c040b200a41086a2f01002109200a41046a2f0100210e20044190016a41086a2210200228020020034105746a220341096a2900003703002007200341116a290000370300200c200341186a290000370000200420032900013703900120032d0000211241c40010272203450d01200428020c220d280208220f200e4d0d02200441b0016a41086a2206200d280200220d200e4105746a220e41096a290000370300200441b0016a41106a2205200e41116a290000370300200441b0016a41176a2216200e41186a2900003700002004200e2900013703b0010240200f20094d0d00200e2d0000210f200441c0006a41086a2217200d20094105746a220e41096a290000370300200441c0006a41106a2209200e41116a290000370300200441c0006a41176a220d200e41186a290000370000200e290001210b200e2d0000210e2003200f3a0000200320042903b001370001200341096a2006290300370000200341116a2005290300370000200341186a20162900003700002003200e3a0022200320083b01202004200b370340200320042903403700232003412b6a2017290300370000200341336a20092903003700002003413a6a200d29000037000020032008417f733b0142200441206a41176a2208200c290000370000200441206a41106a22092007290300370300200441206a41086a220d2010290300370300200420042903900137032002402004280218220e2004280214470d00200441106a200e41011093012004280218210e0b2004280210200e412c6c6a220e20123a000c200e428280808020370204200e2003360200200e410d6a2004290320370000200e41156a200d290300370000200e411d6a2009290300370000200e41246a20082900003700002004200428021841016a360218200a410c6a220a2015470d010c050b0b20004181043b0100200310290c020b1030000b20004181043b0100200310290b4100210641012102200441106a210802402014450d002014410c6c450d00201310290b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f4101211041012112410121140c040b02402014450d002014410c6c450d00201310290b200128021821172001411c6a28020021150240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141206a2802002203450d00201720034104746a2116200441c0006a41086a210e200441c0006a41106a210a200441c0006a41176a2108201721090240024003402009410c6a2f0100210c2009280200210d2004200941046a290200220b3703800102400240200428020c2203280208200ba741ffff037122074d0d00200e200328020020074105746a220341096a290000370300200a200341116a2900003703002008200341186a2900003700002004200329000137034020032d00002107412210272203450d06200320073a0000200320042903403700012003200b421088a722123b0120200341096a200e290300370000200341116a200a290300370000200341186a20082900003700002004428180808010370294012004200336029001200428020c220f28020820042f01840122104b0d0141000d004122450d00200310290b20004181043b01000c3a0b20042f0186012107200441b0016a41176a2206200f28020020104105746a220341186a290000370000200441b0016a41106a2210200341116a290000370300200441b0016a41086a220f200341096a290000220b3703002004200329000122113703b00120032d0000210520082006290000370000200a2010290300370300200e200b3703002004201137034020044190016a4101410110a601200428029001220320053a0022200341236a20042903403700002003412b6a200e290300370000200341336a200a2903003700002003413a6a2008290000370000200341c2006a20073b01002004410236022820042004280294012210360224200420033602200240417f2012411074221220074110746a220720072012491b411076220741ffff03470d00200041013b01000c030b200428020c2212280208200c4d0d012007417f732106200e2012280200200c4105746a220741096a290000370300200a200741116a2900003703002008200741186a290000370000200420072900013703404102210c20072d00002107024020104102470d00200441206a4102410110a601200428022021032004280228210c0b2003200c41226c6a220320073a000020032004290340370001200320063b0120200341096a200e290300370000200341116a200a290300370000200341186a20082900003700002004200428022841016a36022802402002280208200d4d0d0020022802002103200f200441206a41086a280200360200200e2003200d4105746a220341096a290000370300200a200341116a2900003703002008200341186a290000370000200420042903203703b0012004200329000137034020032d000021070240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b001370200200320073a000c200341086a200f2802003602002003410d6a2004290340370000200341156a200e2903003700002003411d6a200a290300370000200341246a20082900003700002004200428021841016a360218200941106a22092016470d010c040b0b20004181043b0100200428022421100c010b20004181043b01000b2010450d36201041226c450d36200428022010290c360b0240201541ffffffff0071450d00201710290b20012802242118200141286a280200211902402001412c6a2802002203450d002018200341146c6a211a2004418a016a211b20044180016a41086a211c200441c0006a41106a2107200441c0006a41176a210c20182115024002400240034020152f01102114201528020021132015290104210b201c2015410c6a2801003602002004200b3703800102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f018201210e200441c0006a41086a220d2003280200200a4105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d0000210341221027220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200d290300370000200f41116a2007290300370000200f41186a200c2900003700002004428180808010370294012004200f360290010240200428020c220328020820042f018401220a4b0d00410221034101210a0c390b201541146a2115417f200e411074220e20042f01860122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201b21080340200c201629000037000020072005290300370300200d2012290300370300200420042903b0013703400240200e417f6a2003470d0020044190016a2003410110a601200428029001210f0b200f200a6a220941606a20173a0000200941616a22032004290340370000200c290000210b20072903002111200d290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e360298010240200a41e400470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d0000211720042802940121030c000b0b410221030c380b200428029401210a20034103470d362004200e3602282004200a3602242004200f3602200240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200d200328020020144105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d000021090240200a200e470d00200441206a200e410110a6012004280220210f2004280228210e0b200f200e41226c6a220320093a000020032004290340370001200c290000210b20072903002111200d290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b3700002004200428022841016a360228200228020820134d0d03200228020021032012200441206a41086a280200360200200d200320134105746a220341096a2900003703002007200341116a290000370300200c200341186a290000370000200420042903203703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200d2903003700002003411d6a2007290300370000200341246a200c2900003700002004200428021841016a3602182015201a470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b01002004280224210a0b200a450d34200a41226c450d34200428022010290c340b02402019450d00201941146c450d00201810290b20012802302118200141346a28020021190240200141386a2802002203450d002018200341186c6a211a2004419a016a211b20044190016a41086a211c200441c0006a41106a2107200441c0006a41176a210c20182115024002400240034020152f01142114201528020021132015290104210b201c2015410c6a2901003703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220d2003280200200a4105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d0000210341221027220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200d290300370000200f41116a2007290300370000200f41186a200c29000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c350b201541186a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201b21080340200c201629000037000020072005290300370300200d2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a22032004290340370000200c290000210b20072903002111200d290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a418601470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c340b2004280224210a20034103470d322004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200d200328020020144105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a000020032004290340370001200c290000210b20072903002111200d290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200d200320134105746a220341096a2900003703002007200341116a290000370300200c200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200d2903003700002003411d6a2007290300370000200341246a200c2900003700002004200428021841016a3602182015201a470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d30200a41226c450d3020042802800110290c300b02402019450d00201941186c450d00201810290b200128023c2119200141c0006a280200211e0240200141c4006a2802002203450d0020192003411c6c6a21182004419a016a211a20044190016a41106a211c20044190016a41086a211b200441c0006a41176a210720192115024002400240034020152f01182114201528020021132015410c6a29010021112015290104210b201c201541146a280100360200201b20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221027220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c310b2015411c6a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201a2108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41a801470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c300b2004280224210a20034103470d2e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152018470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d2c200a41226c450d2c20042802800110290c2c0b0240201e450d00201e411c6c450d00201910290b20012802482119200141cc006a280200211e0240200141d0006a2802002203450d00201920034105746a21182004419a016a211a20044190016a41106a211c20044190016a41086a211b200441c0006a41176a210720192115024002400240034020152f011c2114201528020021132015410c6a29010021112015290104210b201c201541146a290100370300201b20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221027220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c2d0b201541206a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201a2108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41ca01470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c2c0b2004280224210a20034103470d2a2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152018470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d28200a41226c450d2820042802800110290c280b0240201e41ffffff3f71450d00201910290b2001280254211f200141d8006a280200211e0240200141dc006a2802002203450d00201f200341246c6a21192004419a016a211820044190016a41186a211c20044190016a41106a211b20044190016a41086a211a200441c0006a41176a2107201f2115024002400240034020152f01202114201528020021132015410c6a2901002111201541146a290100211d2015290104210b201c2015411c6a280100360200201b201d370300201a20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221027220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c290b201541246a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e20182108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41ec01470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c280b2004280224210a20034103470d262004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152019470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d24200a41226c450d2420042802800110290c240b0240201e450d00201e41246c450d00201f10290b2001280260211f200141e4006a280200211e0240200141e8006a2802002203450d00201f200341286c6a2119200441ca006a2118200441c0006a41186a211c200441c0006a41106a211b200441c0006a41086a211a200441b0016a41176a2107201f2115024002400240034020152f01242114201528020021132015410c6a2901002111201541146a290100211d2015290104210b201c2015411c6a290100370300201b201d370300201a20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c250b201541286a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20182108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a418e02470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c240b2004280224210a20034103470d222004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152019470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d20200a41226c450d2020042802800110290c200b0240201e450d00201e41286c450d00201f10290b200128026c211f200141f0006a28020021200240200141f4006a2802002203450d00201f2003412c6c6a211e200441ca006a2119200441e0006a211c200441c0006a41186a211b200441c0006a41106a211a200441c0006a41086a2118200441b0016a41176a2107201f2115024002400240034020152f01282114201528020021132015410c6a2901002111201541146a290100211d2015411c6a29010021212015290104210b201c201541246a280100360200201b2021370300201a201d370300201820113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c210b2015412c6a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20192108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41b002470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c200b2004280224210a20034103470d1e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201e470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d1c200a41226c450d1c20042802800110290c1c0b02402020450d002020412c6c450d00201f10290b20012802782120200141fc006a280200211f024020014180016a2802002203450d002020200341306c6a211e200441ca006a2119200441e0006a211c200441c0006a41186a211b200441c0006a41106a211a200441c0006a41086a2118200441b0016a41176a210720202115024002400240034020152f012c2114201528020021132015410c6a2901002111201541146a290100211d2015411c6a29010021212015290104210b201c201541246a290100370300201b2021370300201a201d370300201820113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c1d0b201541306a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20192108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41d202470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c1c0b2004280224210a20034103470d1a2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201e470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d18200a41226c450d1820042802800110290c180b0240201f450d00201f41306c450d00202010290b200128028401212020014188016a280200212202402001418c016a2802002203450d002020200341346c6a211f200441ca006a211e200441e8006a211c200441e0006a211b200441c0006a41186a211a200441c0006a41106a2118200441c0006a41086a2119200441b0016a41176a210720202115024002400240034020152f01302114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015290104210b201c2015412c6a280100360200201b2023370300201a20213703002018201d370300201920113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c190b201541346a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201e2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41f402470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c180b2004280224210a20034103470d162004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201f470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d14200a41226c450d1420042802800110290c140b02402022450d00202241346c450d00202010290b200128029001212020014194016a2802002122024020014198016a2802002203450d002020200341386c6a211f200441ca006a211e200441e8006a211c200441e0006a211b200441c0006a41186a211a200441c0006a41106a2118200441c0006a41086a2119200441b0016a41176a210720202115024002400240034020152f01342114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015290104210b201c2015412c6a290100370300201b2023370300201a20213703002018201d370300201920113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c150b201541386a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201e2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a419603470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c140b2004280224210a20034103470d122004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201f470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d10200a41226c450d1020042802800110290c100b02402022450d00202241386c450d00202010290b200128029c012124200141a0016a28020021220240200141a4016a2802002203450d0020242003413c6c6a2120200441ca006a211f200441f0006a211c200441e8006a211b200441e0006a211a200441c0006a41186a2118200441c0006a41106a2119200441c0006a41086a211e200441b0016a41176a210720242115024002400240034020152f01382114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015412c6a29010021252015290104210b201c201541346a280100360200201b2025370300201a2023370300201820213703002019201d370300201e20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c110b2015413c6a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201f2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41b803470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c100b2004280224210a20034103470d0e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152020470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d0c200a41226c450d0c20042802800110290c0c0b02402022450d002022413c6c450d00202410290b20012802a8012122200141ac016a28020021240240200141b0016a2802002203450d00202220034106746a2120200441ca006a211f200441f0006a211c200441e8006a211b200441e0006a211a200441c0006a41186a2118200441c0006a41106a2119200441c0006a41086a211e200441b0016a41176a210720222115024002400240034020152f013c2114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015412c6a29010021252015290104210b201c201541346a290100370300201b2025370300201a2023370300201820213703002019201d370300201e20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c0e0b201541c0006a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201f2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41da03470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c0d0b2004280224210a20034103470d0b2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152020470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d09200a41226c450d0920042802800110290c090b0240202441ffffff1f71450d00202210290b20012802b4012126200141b8016a2802002124200141bc016a2802002203450d022026200341c4006c6a2122200441ca006a2120200441f8006a211c200441f0006a211b200441e8006a211a200441e0006a2118200441c0006a41186a2119200441c0006a41106a211e200441c0006a41086a211f200441b0016a41176a21072026211502400240034020152f01402114201528020021132015410c6a290100210b201541146a29010021112015411c6a290100211d201541246a29010021212015412c6a2901002123201541346a290100212520152901042127201c2015413c6a280100360200201b2025370300201a2023370300201820213703002019201d370300201e2011370300201f200b3703002004202737034002400240200428020c220328020820042f0140220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221027220f450d05200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c090b201541c4006a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20202108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110a6012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41fc03470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c080b2004280224210a20034103470d062004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110a601200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a20034101109301200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152022470d010c060b0b200041013b01000c030b20004181043b01000c020b20004181043b0100200428028401210a0c010b1039000b200a450d03200a41226c450d0320042802800110290c030b02402024450d00202441c4006c450d00202610290b200041003a0000200041046a20042903103702002000410c6a200441186a2802003602000c370b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b41002102200441106a210802402024450d00202441c4006c450d00202610290b41002109410021050c060b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210941012102200441106a21080240202441ffffff1f710d00410021050c040b20221029410021050c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210541012102200441106a210802402022450d002022413c6c450d00202410290b410121090b410021160c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100211641012102200441106a210802402022450d00202241386c450d00202010290b41012109410121050b410021170c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100211741012102200441106a210802402022450d00202241346c450d00202010290b4101210941012105410121160b410021150c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100211541012102200441106a21080240201f450d00201f41306c450d00202010290b410121094101210541012116410121170b410021070c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210741012102200441106a210802402020450d002020412c6c450d00201f10290b41012109410121054101211641012117410121150b4100210c0c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210c41012102200441106a21080240201e450d00201e41286c450d00201f10290b4101210941012105410121164101211741012115410121070b410021000c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210041012102200441106a21080240201e450d00201e41246c450d00201f10290b4101210941012105410121164101211741012115410121074101210c0b4100210d0c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210d41012102200441106a21080240201e41ffffff3f71450d00201910290b4101210941012105410121164101211741012115410121074101210c410121000b4100210f0c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100210f41012102200441106a21080240201e450d00201e411c6c450d00201910290b4101210941012105410121164101211741012115410121074101210c410121004101210d0b410021100c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100211041012102200441106a210802402019450d00201941186c450d00201810290b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f0b410021120c030b200a450d00200a41226c450d00200f10290b200041013a0000200020033a00010b4100211241012102200441106a210802402019450d00201941146c450d00201810290b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f410121100b41002114410021060c040b4100211441012102200441106a21080240201541ffffffff0071450d00201710290b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f4101211041012112410021060c030b20004181043b0100200310290c010b20004181043b01000b41012102200441106a21080240200541ffffffff0171450d00200610290b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f410121104101211241012114410121060b02402004280218220e450d0020042802102103200e412c6c210e03400240200341046a280200220a450d00200a41226c450d00200328020010290b2003412c6a2103200e41546a220e0d000b0b0240200841046a2802002203450d002003412c6c450d00200828020010290b02402006450d00200141106a2802002203450d002003410c6c450d00200128020c10290b02402014450d002001411c6a28020041ffffffff0071450d00200128021810290b02402012450d00200141286a2802002203450d00200341146c450d00200128022410290b02402010450d00200141346a2802002203450d00200341186c450d00200128023010290b0240200f450d00200141c0006a2802002203450d002003411c6c450d00200128023c10290b0240200d450d00200141cc006a28020041ffffff3f71450d00200128024810290b02402000450d00200141d8006a2802002203450d00200341246c450d00200128025410290b0240200c450d00200141e4006a2802002203450d00200341286c450d00200128026010290b02402007450d00200141f0006a2802002203450d002003412c6c450d00200128026c10290b02402015450d00200141fc006a2802002203450d00200341306c450d00200128027810290b02402017450d0020014188016a2802002203450d00200341346c450d0020012802840110290b02402016450d0020014194016a2802002203450d00200341386c450d0020012802900110290b02402005450d00200141a0016a2802002203450d002003413c6c450d00200128029c0110290b02402009450d00200141ac016a28020041ffffff1f71450d0020012802a80110290b2002450d00200141b8016a2802002203450d00200341c4006c450d0020012802b40110290b200441d0016a24000bd30101017f230041106b22022400024002400240024020002d00000e03010200010b2002200128021841d993cc0041132001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c020b2002200128021841ec93cc0041142001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040c010b20022001280218418094cc0041152001411c6a28020028020c11000022003a000820022001360200200241003a0009200241003602040b200241106a240020000bb00401087f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041023a00100c010b200328021421042003200341106a41086a28020036022420032001360220200341c8006a200341206a109602024002400240024020032802482205450d00200328024c2106024002400240200328022422024104490d00200341c8006a41086a280200210720032002417c6a220836022420032003280220220941046a220a3602202008450d012009280000210920032002417b6a3602242003200a41016a360220200a2d0000220a41014b0d0141002102200a0e020504050b200641ffffff3f710d010c020b200641ffffff3f71450d010b200510290b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b410221020c020b410121020b200341386a41026a200341286a41026a2d0000220a3a0000200341c8006a41026a200a3a0000200320032f002822083b01382000200936020c200020073602082000200636020420002005360200200320083b0148200041136a200a3a0000200020083b00110b200020023a00102004450d00200110290b200341e0006a24000bc70f080f7f017e087f017e027f037e047f057e230041d0026b22022400200141086a2802002103200128020421042000280204210520002802002106024020002802082207200028020c2208460d0020012802002109200241f0006a410c6a210a200241f0006a410472210b200241c8006a41086a210c200241c8006a41106a210d200241c8006a41186a210e200241c8006a41206a210f0340200c20072200410c6a290200370300200d200041146a290200370300200e2000411c6a290200370300200f200041246a290200370300200220002902043703482000412c6a210720002802002210450d01200b2002290348370200200b41086a200c290300370200200b41106a200d290300370200200b41186a200e290300370200200b41206a200f29030037020020022010360270200a10e1012111200241a0016a41086a2212200a41086a290200370300200241a0016a41106a2213200a41106a290200370300200241a0016a41186a2214200a41186a2902003703002002200a2902003703a00120022802742115024002400240200228027841226c2201450d00201021000340200041206a2f01002116200241b0026a41186a2217200041186a290000370300200241b0026a41106a2218200041106a290000370300200241b0026a41086a2219200041086a290000370300200220002900003703b00220160d02200041226a21002001415e6a22010d000b0b4200211a4108211b4100211c02402015450d00201541226c450d00201010294200211a0b4200211d410021000c010b200241386a2011420042ffff03420010e007200241286a2002290338221e200241386a41086a290300221f4281807c427f10d507200241186a201e201f2016ad420010d507200241d0016a41086a22202019290300370300200241d0016a41106a22212018290300370300200241d0016a41186a22222017290300370300200220022903b002221d3703f0012002201d3703d0012016200229032820117ca722236c221641ffff036e211c2002290318211d200241186a41086a29030021240240024041301027221b450d00201b201d201c417f20164180807c491b2016201c4181807c6c6a41ffff014b6aad42ffff03837c221a370320201b20022903d001370300201b41286a2024201a201d54ad7c221d370300201b41186a2022290300370300201b41106a2021290300370300201b41086a202029030037030020024281808080103702c4012002201b3602c001024020014122470d004101211c0c020b200141bc7f6a21214101211c410021160340200020166a220141c2006a2f0100212020172001413a6a2900003703002018200141326a29000037030020192001412a6a2900003703002002200141226a2900003703b0020240024020200d0020212016460d040c010b200241086a201e201f2020ad420010d507200241f0016a41086a20192903002224370300200241f0016a41106a20182903002225370300200241f0016a41186a20172903002226370300200220022903b00222273703f001201720263703002018202537030020192024370300200220273703b002201a20022903082225202020236c220141ffff036e2220417f20014180807c491b200120204181807c6c6a41ffff014b6aad42ffff03837c22247c2226201a542201201d200241086a41086a2903002024202554ad7c22257c2001ad7c221a201d54201a201d511b21010240201c20022802c401470d00200241c0016a201c410110900120022802c001211b0b427f201a20011b211d427f202620011b211a201b201c41306c6a220120022903b00237030020192903002126201829030021272017290300212820012024370320200141286a2025370300200141186a2028370300200141106a2027370300200141086a20263703002002201c41016a221c3602c80120212016460d030b201641226a21160c000b0b1039000b02402015450d00201541226c450d00201010290b20022802c40121000b024002402011201a7d22252011564200201d2011201a54ad7c7d22244200522024501b4101470d00201a20117d2224201a56201d201a201154ad7d2225201d56201a20115a1b0d01201c450d01201c41306c201b6a41706a220142002001290300221d20247d221a201a201d56200141086a2201290300221a20257d201d202454ad7d221d201a56201d201a511b22171b37030020014200201d20171b3703000c010b201c450d00201c41306c201b6a41706a2201427f2001290300221d20257c221a201a201d542217200141086a2201290300221d20247c2017ad7c221a201d54201a201d511b22171b3703002001427f201a20171b3703000b200241b0026a41186a22012014290300370300200241b0026a41106a22172013290300370300200241b0026a41086a22182012290300370300200220022903a0013703b002200920003602042009201c3602082009201b360200200920022903b00237020c200941146a20182903003702002009411c6a2017290300370200200941246a2001290300370200200341016a21032009412c6a210920072008470d000b200821070b20042003360200200820076b2200412c6d210102402000450d002001412c6c210003400240200741046a2802002201450d00200141226c450d00200728020010290b2007412c6a2107200041546a22000d000b0b02402005450d002005412c6c450d00200610290b200241d0026a24000b880303057f017e027f02400240024020002802202201450d00034020002001417f6a36022020002802042201450d0320002802082102200028020021030240200028020c220420012f0106490d00034002400240200128020022050d002002ad2106410021050c010b200341016a210320013301044220862002ad8421060b200110292006a72102200521012006422088a7220420052f01064f0d000b200521010b200441016a2107200120044105746a220541fc026a2802002104200541f8026a280200210802402003450d00200120074102746a41c8056a2802002101410021072003417f6a2205450d00034020012802c80521012005417f6a22050d000b0b2000200736020c2000200236020820002001360204200041003602002008450d0202402004450d00200441306c450d00200810290b200028022022010d000b0b200028020421010b02402001450d0020012802002105200110292005450d00034020052802002101200510292001210520010d000b0b0f0b41a79dc800412b41e0f6c4001033000bc00101037f230041106b2202240041012103200128021841acb9c40041012001411c6a28020028020c1100002104200241003a0005200220043a0004200220013602002002200036020c20022002410c6a41d0a3c800106321012002200041106a36020c20012002410c6a41d0a3c800106321012002200041206a36020c20012002410c6a41d0a3c80010631a024020022d00040d0020022802002200280218419cc9c00041012000411c6a28020028020c11000021030b200241106a240020030b13002000411f360204200041eca8c2003602000bff1001067f230041106b22022400024002400240024002400240024002400240024020012d00000e06010402030500010b2002410036020820024201370300410110272203450d082002410136020420022003360200200341003a000020024101360208200141046a28020021042001410c6a2802002201200210710240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d08200541017422072006200720064b1b22074100480d080240024020050d00024020070d00410121060c020b2007102722060d010c0b0b2002280200210620052007460d00200620052007102b2206450d0a0b20022007360204200220063602000b200620036a2004200110e4071a2002200320016a3602080c050b2002410036020820024201370300410110272203450d072002410136020420022003360200200341023a000020024101360208412010272203450d0520032001290001370000200341186a200141196a290000370000200341106a200141116a290000370000200341086a200141096a2900003700000240024020022802042206417f6a4120490d00200228020021010c010b200641017422014121200141214b1b22054100480d0720022802002101024020062005460d00200120062005102b2201450d090b20022005360204200220013602000b20012003290000370001200141196a200341186a290000370000200141116a200341106a290000370000200141096a200341086a29000037000020024121360208200310290c040b2002410036020820024201370300410110272203450d062002410136020420022003360200200341043a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0620022802002103024020062005460d00200320062005102b2203450d080b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210710240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d06200541017422072006200720064b1b22074100480d060240024020050d00024020070d00410121060c020b200710272206450d090c010b2002280200210620052007460d00200620052007102b2206450d080b20022007360204200220063602000b200620036a2004200110e4071a2002200320016a3602080c030b2002410036020820024201370300410110272203450d052002410136020420022003360200200341053a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0520022802002103024020062005460d00200320062005102b2203450d070b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210710240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d05200541017422072006200720064b1b22074100480d050240024020050d00024020070d00410121060c020b200710272206450d080c010b2002280200210620052007460d00200620052007102b2206450d070b20022007360204200220063602000b200620036a2004200110e4071a2002200320016a3602080c020b2002410036020820024201370300410110272203450d042002410136020420022003360200200341063a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0420022802002103024020062005460d00200320062005102b2203450d060b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210710240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d04200541017422072006200720064b1b22074100480d040240024020050d00024020070d00410121060c020b200710272206450d070c010b2002280200210620052007460d00200620052007102b2206450d060b20022007360204200220063602000b200620036a2004200110e4071a2002200320016a3602080c010b2002410036020820024201370300410110272203450d032002410136020420022003360200200341073a00002002410136020820022802002103024020022802044101470d00200341014102102b2203450d0420024102360204200220033602000b200341003a0001200241023602082002280200210320022802042106024020012802044101460d00024020064102470d00200341024104102b2203450d0520024104360204200220033602000b200341003a0002200241033602080c010b024020064102470d00200341024104102b2203450d0420024104360204200220033602000b200341013a000220024103360208200141086a28020021050240024020022802042206417d6a4104490d00200228020021030c010b200641017422034107200341074b1b22044100480d0320022802002103024020062004460d00200320062004102b2203450d050b20022004360204200220033602000b20032005360003200241073602082001410c6a2802002106024002402002280204220341796a4104490d00200228020021010c010b20034101742201410b2001410b4b1b22054100480d0320022802002101024020032005460d00200120032005102b2201450d050b20022005360204200220013602000b200120063600072002410b3602080b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b1039000b1032000b1030000ba30f010c7f230041c0006b22022400024002400240024041c20310272203450d00200241c20336020420022003360200200341003b00002002410236020802400240200128020022032903684202520d00024020022802044102470d00200228020041024104102b2201450d0620024104360204200220013602000b200228020041043a00022002200228020841016a3602080c010b024020022802044102470d00200228020041024104102b2201450d0520024104360204200220013602000b20022802004184013a000220022002280208220141016a2204360208024002402002280204220520046b4120490d00200141216a210120022802002106200521070c010b200441206a22012004490d04200541017422062001200620014b1b22074100480d040240024020050d00024020070d00410121060c020b2007102722060d010c070b2002280200210620052007460d00200620052007102b2206450d060b20022007360204200220063602000b200620046a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a29000037000020022001360208024020032d0020220441024b0d000240024002400240024020040e03000102000b410021050c020b410121050c010b41022105200241023a001041c10021040c010b200220053a001041c00021040b024020072001470d00200141016a22072001490d05200141017422082007200820074b1b22074100480d050240024020010d0041002101024020070d00410121060c020b200710272206450d080c010b20012007460d00200620012007102b2206450d070b20022007360204200220063602000b200620016a20053a00002002200141016a2201360208024002402002280204220720016b2004490d00200228020021060c010b200120046a22062001490d05200741017422052006200520064b1b22054100480d050240024020070d00024020050d00410121060c020b200510272206450d080c010b2002280200210620072005460d00200620072005102b2206450d070b20022005360204200220063602000b200620016a200341216a200410e4071a2002200120046a3602080b200341e8006a200210be020b20034198016a200210bf0220022802082103410410272201450d0020024204370214200220013602102003417e6a200241106a10712002280208220341014d0d012002280218210120022802142108200220022802102205360224200241286a200520016a2206360200200241023602102002411c6a2002280200220441026a2207360200410021012002410036020820022003417e6a22033602142002200736021820022002360220200241246a21090240024002402003450d0020052103034020032006460d032002200341016a360224200420016a20032d00003a00002002200228020841016a36020820014101460d02200141016a210120022802242103200228022821060c000b0b2002200910c0020c010b024020022802282207200228022422036b2201450d00024002402002280220220441046a280200220a2002280214220b2002280210220c6a22066b2001490d00200428020021060c010b200620016a220d2006490d05200a4101742206200d2006200d4b1b220d4100480d0502400240200a0d000240200d0d00410121060c020b200d10272206450d080c010b20042802002106200a200d460d002006200a200d102b2206450d070b20042006360200200441046a200d3602000b2006200c20016a22016a2006200c6a200b10e5071a20022001360210200120042802082206460d00200620036a417f732007200c6a6a2101200428020020066a2106034020032007460d022002200341016a360224200620032d00003a00002004200428020841016a3602082001450d01200641016a21062001417f6a210120022802242103200228022821070c000b0b2002410036023820024201370330200241306a200910c002200228023421092002280230210c024020022802382203450d00024002402002280220220441046a28020022072002280214220a200228021022066a22016b2003490d00200428020021010c010b200120036a220b2001490d0520074101742201200b2001200b4b1b220b4100480d050240024020070d000240200b0d00410121010c020b200b10272201450d080c010b200428020021012007200b460d0020012007200b102b2201450d070b20042001360200200441046a200b3602000b2001200620036a22076a200120066a200a10e5071a20022007360210200720042802082201460d00200120066b2107200428020020016a2101200c210603402003450d01200120062d00003a00002004200428020841016a360208200641016a2106200141016a210120072003417f6a2203470d000b0b2009450d00200c10290b02402002280218200228021c2203460d00200220033602180b024020022802142203450d000240200228021022042002280220220741086a22062802002201460d002007280200220720016a200720046a200310e5071a0b2006200320016a3602000b02402008450d00200510290b20002002290300370200200041086a200241086a280200360200200241c0006a24000f0b1039000b410220031044000b1032000b1030000bb50103027f027e017f230041106b2202240020014180a6cc0041001072200041186a21030240024020002903004201520d002002200041106a29030020002903082204420c882205420120054201561b80a741047420047aa7417f6a22064101200641014b1b2206410f2006410f491b723b010c20012002410c6a410210720c010b200241003a000f20012002410f6a410110720b20002802282001107120022003360208200241086a200110e501200241106a24000bca6303057f017e017f230041206b220224000240024020002802002203411b4b0d00024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e1c000102030405060708090a0b0c0d0e0f101112131415161718191a1b000b200241003a00102001200241106a41011072200041086a280200417f6a220341094b0d1b024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a00042001200241046a4101107220022000410c6a2802003602102001200241106a410410720c240b200241013a00042001200241046a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c230b200241023a00042001200241046a410110722002200041106a2903003703102001200241106a410810720c220b200241033a00042001200241046a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c210b200241043a00042001200241046a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c200b200241053a00042001200241046a4101107202402000410c6a2802004101460d00200241003a00042001200241046a410110720c200b200241013a00042001200241046a410110722002200041106a2802003602102001200241106a410410722002200041146a2802003602102001200241106a410410720c1f0b200241063a00042001200241046a410110722000410c6a2802002103200041146a2802002200200110712000450d1e2003200041186c6a2104034020032802002100200341086a28020022052001107120012000200510722003410c6a2802002100200341146a2802002205200110712001200020051072200341186a22032004470d000c1f0b0b200241073a00042001200241046a410110722000410c6a2802002103200041146a2802002200200110712000450d1d20032000410c6c6a2104034020032802002100200341086a28020022052001107120012000200510722003410c6a22032004470d000c1e0b0b200241083a00042001200241046a410110722000410c6a2802002103200041146a28020022052001107120012003200510722002200041186a2802003602102001200241106a410410720c1c0b200241093a00042001200241046a410110720c1b0b200241013a00102001200241106a4101107220002d0004417f6a220341034b0d1a024002400240024020030e0400010203000b200241003a00042001200241046a410110722002200041086a2802003602102001200241106a41041072024002402000410c6a2802004101460d00200241003a00042001200241046a410110720c010b200241013a00042001200241046a410110722002200041106a2802003602102001200241106a410410722002200041146a2802003602102001200241106a410410720b200220002d00053a00042001200241046a410110722000280218200110bf020c1d0b200241013a00042001200241046a410110722002200041086a2802003602102001200241106a4104107220022000410c6a2802003602102001200241106a410410720c1c0b200241023a00042001200241046a41011072200041086a2802002103200041106a28020022052001107120012003200510722002200041146a2802003602102001200241106a4104107202400240200041186a2802004101460d00200241003a00042001200241046a410110720c010b200241013a00042001200241046a4101107220022000411c6a2802003602102001200241106a410410722002200041206a2802003602102001200241106a410410720b200220002d00053a00042001200241046a410110722000280224200110bf020c1b0b200241033a00042001200241046a41011072200041086a2802002103200041106a28020022002001107120012003200010720c1a0b200241023a00102001200241106a41011072200110e4050c190b200241033a00102001200241106a41011072200241003a00102001200241106a41011072200041086a200110e5050c180b200241043a00102001200241106a4101107220002d0004417f6a220341034b0d17200041046a21050240024002400240024020030e0400010203000b200241003a00042001200241046a410110722002200041086a280200360210200241106a21000c030b200241013a00042001200241046a410110722001200541016a412010722002200041286a280200360210200241106a21000c020b200241023a00042001200241046a410110722002200041086a280200360210200241106a21000c010b200241033a00042001200241046a410110722001200541016a412010722002200041286a280200360210200241106a21000b20012000410410720c170b200241053a00102001200241106a41011072200041086a22032d0000417f6a220541034b0d160240024002400240024020050e0400010203000b200241003a00042001200241046a410110722001200341016a41201072200041306a2103200221000c030b200241013a00042001200241046a410110722001200341016a412010722002200041306a360204200241046a200110e501200041c0006a2103200241086a21000c020b200241023a00042001200241046a410110722001200341016a412010722001200341216a41201072200041d0006a21032002410c6a21000c010b200241033a00042001200241046a410110722001200341016a41201072200041306a2103200241106a21000b200020033602002000200110e5010c160b200241063a00102001200241106a41011072200241003a00102001200241106a41011072200028020421032000410c6a2802002200200110712000450d152003200041f0006c6a21060340412010272200450d1720002003290010370000200041186a200341286a290000370000200041106a200341206a290000370000200041086a200341186a2900003700002001200041201072200010292003200110e601412010272200450d1720002003290030370000200041186a200341c8006a290000370000200041106a200341c0006a290000370000200041086a200341386a290000370000200120004120107220001029412010272200450d17200341f0006a210420002003290050370000200041186a200341e8006a290000370000200041106a200341e0006a290000370000200041086a200341d8006a29000037000020012000412010722000102920032802042100200328020c22032001107102402003450d00200341246c21030340200241106a200010bc022001200228021022052002280218107202402002280214450d00200510290b200041246a21002003415c6a22030d000b0b2004210320042006470d000c160b0b200241073a00102001200241106a41011072200041086a22052d0000417f6a220341174b0d1402400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e18000102030405060708090a0b0c0d0e0f1011121314151617000b200241003a00102001200241106a410110722001200541016a412010722002200041306a360210200241106a200110e50120002d0029220041024b0d2b02400240024020000e03000102000b200241003a00102001200241106a410110720c2d0b200241013a00102001200241106a410110720c2c0b200241023a00102001200241106a410110720c2b0b200241013a00102001200241106a410110722002200041106a360210200241106a200110e5010c2a0b200241023a00102001200241106a410110722002200041106a360210200241106a200110e5010c290b200241033a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c280b200241043a00102001200241106a410110720240024002402000410c6a280200220341c000490d00200341808001490d012003418080808004490d02200241033a00042001200241046a410110722002200028020c3602102001200241106a410410720c2a0b200220034102743a00042001200241046a410110720c290b200220034102744101723b01102001200241106a410210720c280b200220034102744102723602102001200241106a410410720c270b200241053a00102001200241106a410110722000410c6a2802002103200041146a2802002200200110712000450d262000410574210003402001200341201072200341206a2103200041606a22000d000c270b0b200241063a00102001200241106a410110720c250b200241073a00102001200241106a4101107220052d0001220041024b0d2402400240024020000e03000102000b200241003a00102001200241106a410110720c260b200241013a00102001200241106a410110720c250b200241023a00102001200241106a410110720c240b200241083a00102001200241106a410110722001200541016a412010720c230b200241093a00102001200241106a410110722000410c6a200110e6010c220b2002410a3a00102001200241106a410110720c210b2002410b3a00102001200241106a410110720c200b2002410c3a00102001200241106a410110722000410c6a2802002103200041146a2802002200200110712000450d1f2000410574210003402001200341201072200341206a2103200041606a22000d000c200b0b2002410d3a00102001200241106a410110722001200541016a4120107220022000412c6a2802003602102001200241106a410410720c1e0b2002410e3a00102001200241106a410110720c1d0b2002410f3a00102001200241106a4101107220022000410c6a2802003602102001200241106a41041072200041106a2802002103200041186a28020022002001107120012003200041027410720c1c0b200241103a00102001200241106a4101107220022000410c6a2802003602102001200241106a41041072200041106a2802002103200041186a2802002200200110712000450d1b2003200041246c6a2100034020012003412010722002200341206a2802003602102001200241106a410410722000200341246a2203470d000c1c0b0b200241113a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c1a0b200241123a00102001200241106a410110722001200541016a4120107220022000412c6a2802003602102001200241106a410410720c190b200241133a00102001200241106a410110722002200041106a360210200241106a200110e5010c180b200241143a00102001200241106a410110722000410c6a200110e601200041106a200110e6010c170b200241153a00102001200241106a410110722001200541016a4120107220022000412c6a2802003602102001200241106a410410720c160b200241163a00102001200241106a410110722000410c6a2802002103200041146a2802002205200110712001200320054101741072200041186a20011085022001200041e8016a413010722002200041d8016a2802003602102001200241106a41041072200041dc016a210302400240200041e0016a2f0100220041c000490d00200041808001490d01200220004102744102723602102001200241106a410410722003200110e6010c170b200220004102743a00102001200241106a410110722003200110e6010c160b200220004102744101723b01102001200241106a410210722003200110e6010c150b200241173a00102001200241106a410110722000410c6a2802002103200041146a2802002205200110712001200320054101741072200041186a20011085022001200041e8016a413010722002200041d8016a2802003602102001200241106a41041072200041dc016a210302400240200041e0016a2f0100220041c000490d00200041808001490d01200220004102744102723602102001200241106a410410722003200110e6010c160b200220004102743a00102001200241106a410110722003200110e6010c150b200220004102744101723b01102001200241106a410210722003200110e6010c140b200241083a00102001200241106a41011072200110e4050c130b200241093a00102001200241106a4101107202402000280204450d00200241003a00042001200241046a410110722001200041106a412010722001200041306a412010722001200041d0006a412010722001200041f0006a41201072200120004190016a41201072200028020421032000410c6a28020022002001107120012003200010720c130b200241013a00042001200241046a410110720c120b2002410a3a00102001200241106a41011072200241003a00102001200241106a41011072200041046a200110e6010c110b2002410b3a00102001200241106a41011072200241003a00102001200241106a410110722002200041086a2903003703102001200241106a4108107202400240200041106a2903004201510d00200241003a00042001200241046a41011072200220002903183703102001200241106a410810722001200041e8016a41201072200041206a200110e60520004184016a200110e6050c010b200241013a00042001200241046a41011072200220002903183703102001200241106a410810722001200041e8016a41201072200041206a200110e60520004184016a200110e6050b200220004188026a2802003602102001200241106a410410722000418c026a280200210320004194026a28020022052001107102402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107120012005200410722003410c6a22032006470d000b0b200220004198026a2802003602102001200241106a410410720c100b2002410c3a00102001200241106a41011072200241003a00102001200241106a41011072200220002802043602102001200241106a41041072200041086a2802002103200041106a2802002205200110712001200320051072200041146a28020021032000411c6a28020022052001107102402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107120012005200410722003410c6a22032006470d000b0b2002200041206a2802003602102001200241106a410410722002200041246a2802003602102001200241106a410410722002200041286a2802003602102001200241106a4104107220012000412c6a41c00010720c0f0b2002410d3a00102001200241106a41011072200110e4050c0e0b2002410e3a00102001200241106a41011072200041086a22032d0000417f6a2205411e4b0d0d024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e1f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000b200241003a00102001200241106a41011072412010272205450d2c20052003290001370000200541186a200341196a290000370000200541106a200341116a290000370000200541086a200341096a2900003700002001200541201072200510292002200041306a360210200241106a200110e5010c2b0b200241013a00102001200241106a410110722000410c6a200110e601200041106a200110e6010c2a0b200241023a00102001200241106a410110722000410c6a200110e601200041106a200110e7050c290b200241033a00102001200241106a410110722000410c6a200110e601200041106a200110e7050c280b200241043a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c270b200241053a00102001200241106a41011072412010272200450d2720002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c260b200241063a00102001200241106a41011072412010272200450d2620002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c250b200241073a00102001200241106a41011072412010272200450d2520002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c240b200241083a00102001200241106a41011072412010272205450d2420052003290001370000200541186a200341196a290000370000200541106a200341116a290000370000200541086a200341096a29000037000020012005412010722005102920022000412c6a2802003602102001200241106a410410722002200041306a2802003602102001200241106a410410720c230b200241093a00102001200241106a41011072412010272200450d2320002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c220b2002410a3a00102001200241106a410110722000410c6a200110e6010c210b2002410b3a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c200b2002410c3a00102001200241106a410110722001200341016a412010720c1f0b2002410d3a00102001200241106a410110720c1e0b2002410e3a00102001200241106a410110722001200341016a412010720c1d0b2002410f3a00102001200241106a410110722001200341016a41201072024020002d0029220341064b0d000240024002400240024002400240024020030e0700010203040506000b200241003a00040c060b200241013a00040c050b200241023a00040c040b200241033a00040c030b200241043a00040c020b200241053a00040c010b200241063a00040b2001200241046a410110720b200029033021072002200041386a290300370318200220073703102001200241106a411010720c1c0b200241103a00102001200241106a410110720c1b0b200241113a00102001200241106a410110720c1a0b200241123a00102001200241106a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c190b200241133a00102001200241106a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c180b200241143a00102001200241106a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c170b200241153a00102001200241106a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c160b200241163a00102001200241106a41011072412010272205450d1620052003290001370000200541186a200341196a290000370000200541106a200341116a290000370000200541086a200341096a2900003700002001200541201072200510292000412c6a200110e6010c150b200241173a00102001200241106a410110722001200341016a412010720c140b200241183a00102001200241106a410110722001200341016a412010720c130b200241193a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c120b2002411a3a00102001200241106a410110722001200341016a4120107220022000412c6a2802003602102001200241106a410410720c110b2002411b3a00102001200241106a410110722001200341016a41201072024020002d0029220341064b0d000240024002400240024002400240024020030e0700010203040506000b200241003a00040c060b200241013a00040c050b200241023a00040c040b200241033a00040c030b200241043a00040c020b200241053a00040c010b200241063a00040b2001200241046a410110720b200029033021072002200041386a290300370318200220073703102001200241106a411010720c100b2002411c3a00102001200241106a410110720c0f0b2002411d3a00102001200241106a4101107220022000410c6a2802003602102001200241106a410410720c0e0b2002411e3a00102001200241106a41011072412010272205450d0e20052003290001370000200541186a200341196a290000370000200541106a200341116a290000370000200541086a200341096a29000037000020012005412010722005102920022000412c6a2802003602102001200241106a410410720c0d0b2002410f3a00102001200241106a41011072200041086a200110e8050c0c0b200241103a00102001200241106a41011072200041086a200110e8050c0b0b200241113a00102001200241106a41011072200041086a22052d0000417f6a220341054b0d0a02400240024002400240024020030e06000102030405000b200241003a00042001200241046a410110722000410c6a2802002103200041146a280200220520011071200041186a210402402005450d002005410574210003402001200341201072200341206a2103200041606a22000d000b0b20022004360210200241106a200110e5010c0f0b200241013a00042001200241046a410110720c0e0b200241023a00042001200241046a410110722001200041146a412010722000410c6a200110e601200041106a200110e6010c0d0b200241033a00042001200241046a410110722000410c6a200110e6010c0c0b200241043a00042001200241046a410110722000410c6a280200220341024b0d0b02400240024020030e03000102000b200241003a00042001200241046a410110720c0d0b200241013a00042001200241046a410110720c0c0b200241023a00042001200241046a41011072200041106a200110e6010c0b0b200241053a00042001200241046a410110722001200541016a412010722002200541216a2d00003a00042001200241046a410110720c0a0b200241123a00102001200241106a4101107220002d0004417f6a220341064b0d09200041046a2105024002400240024002400240024020030e0700010203040506000b200241003a00042001200241046a410110722001200541016a412010720c0f0b200241013a00042001200241046a410110722001200541016a412010720c0e0b200241023a00042001200241046a410110722001200541016a412010722001200541216a412010720c0d0b200241033a00042001200241046a41011072200041086a2802002103200041106a2802002200200110712000450d0c2000410574210003402001200341201072200341206a2103200041606a22000d000c0d0b0b200241043a00042001200241046a410110722001200541016a412010720c0b0b200241053a00042001200241046a410110722001200541016a412010720c0a0b200241063a00042001200241046a410110720c090b200241133a00102001200241106a41011072200041086a22032d0000417f6a220541074b0d080240024002400240024002400240024020050e080001020304050607000b200241003a00042001200241046a410110722002200041306a360210200241106a200110e5012001200341016a412010720c0f0b200241013a00042001200241046a410110722000410c6a200110e6010c0e0b200241023a00042001200241046a410110722000410c6a200110e6010c0d0b200241033a00042001200241046a410110722000412c6a2802002105200041346a28020022002001107120012005200010722001200341016a412010720c0c0b200241043a00042001200241046a41011072412010272200450d0c20002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c0b0b200241053a00042001200241046a410110722000412c6a2802002105200041346a28020022042001107120012005200410722001200341016a41201072200041386a29030021072002200041c0006a290300370318200220073703102001200241106a411010720c0a0b200241063a00042001200241046a41011072412010272205450d0a20052003290001370000200541186a200341196a290000370000200541106a200341116a290000370000200541086a200341096a290000370000200120054120107220051029200041306a29030021072002200041386a290300370318200220073703102001200241106a411010720c090b200241073a00042001200241046a41011072412010272200450d0920002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700002001200041201072200010290c080b200241143a00102001200241106a410110722000280204417f6a220341014b0d070240024020030e020001000b200241003a00102001200241106a41011072200041086a2802002103200041106a2802002200200110712000450d08200320004190026c6a2108034020032205200110a50420052802f801210020052802800222032001107102402003450d002000200341c1006c6a2103034020024102410120002d00004101461b3a00042001200241046a410110722001200041016a41c0001072200041c1006a22002003470d000b0b20054190026a2103200528028402210420054188026a28020022064103762200200110710240024020000d00410021050c010b410121052000410820064107716b22064d0d0041024101200020066b22004107711b20004103766a21050b200120042005107220032008470d000c090b0b200241013a00102001200241106a410110722001200041c0006a41201072200041e0006a200110a004200041c1016a200110a0042002200041086a2802003602102001200241106a410410722000410c6a2802002103200041146a28020022052001107102402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107120012005200410722003410c6a22032006470d000b0b2002200041186a2802003602102001200241106a4104107220022000411c6a2802003602102001200241106a41041072412010272203450d08200341186a200041386a290000370000200341106a200041306a290000370000200341086a200041286a2900003700002003200041206a2900003700002001200341201072200310290c070b200241153a00102001200241106a41011072200241003a00102001200241106a410110720c060b200241163a00102001200241106a41011072200041086a22052d0000417f6a220341054b0d0502400240024002400240024020030e06000102030405000b200241003a00042001200241046a410110722000410c6a200110e601200041106a200110e6010c0a0b200241013a00042001200241046a410110722000410c6a200110e601200041106a200110e601200041146a200110e601200041186a200110e6012002200041206a360210200241106a200110e5010c090b200241023a00042001200241046a410110722000410c6a200110e601200041106a200110e601200041146a200110e6012002200041186a360210200241106a200110e5010c080b200241033a00042001200241046a410110722001200541016a412010720c070b200241043a00042001200241046a410110722000412c6a200110e601200041306a200110e601412010272203450d0720032005290001370000200341186a200541196a290000370000200341106a200541116a290000370000200341086a200541096a2900003700002001200341201072200310292002200041346a2802003602102001200241106a41041072200041386a2802002103200041c0006a28020022002001107120012003200010720c060b200241053a00042001200241046a410110722000410c6a200110e601200041106a2802002103200041186a28020022002001107120012003200010720c050b200241173a00102001200241106a4101107220002d0004417f6a220341064b0d04024002400240024002400240024020030e0700010203040506000b200241003a00042001200241046a41011072200041086a200110e601200220002d00054101463a00042001200241046a410110722000410c6a2802002103200041146a2802002205200110712001200320051072200041186a2802002103200041206a28020022002001107120012003200010720c0a0b200241013a00042001200241046a41011072200041086a200110e6010c090b200241023a00042001200241046a410110722002200041086a2802003602102001200241106a410410720c080b200241033a00042001200241046a41011072200041086a2802002103200041106a2802002205200110712001200320051072200041146a28020021032000411c6a28020022002001107120012003200010720c070b200241043a00042001200241046a41011072200041c8006a200110e6012001200041046a220341016a41201072412010272200450d07200041186a200341396a290000370000200041106a200341316a290000370000200041086a200341296a2900003700002000200341216a2900003700002001200041201072200010290c060b200241053a00042001200241046a410110720c050b200241063a00042001200241046a41011072200041086a200110e6010c040b200241183a00102001200241106a41011072200041086a22032d0000417f6a220541034b0d03024002400240024020050e0400010203000b200241003a00042001200241046a410110722001200341016a412010722001200341216a41c10010720c060b200241013a00042001200241046a410110722001200341016a41141072200041206a29030021072002200041286a290300370318200220073703102001200241106a4110107202400240200041306a2903004201510d00200241003a00042001200241046a410110720c010b200241013a00042001200241046a41011072200041386a29030021072002200041c0006a290300370318200220073703102001200241106a41101072200041c8006a29030021072002200041d0006a290300370318200220073703102001200241106a411010722002200041d8006a2802003602102001200241106a410410720b024020032d001522004102470d00200241003a00042001200241046a410110720c060b200241013a00042001200241046a41011072024020004101460d00200241003a00042001200241046a410110720c060b200241013a00042001200241046a410110720c050b200241023a00042001200241046a410110722001200341016a412010722001200341216a41c1001072200041ec006a2802002103200041f4006a28020022002001107120012003200010720c040b200241033a00042001200241046a410110722000410c6a2802002103200041146a28020022002001107120012003200010720c030b200241193a00102001200241106a41011072200041086a22052d0000417f6a220341024b0d0202400240024020030e03000102000b200241003a00042001200241046a410110720c040b200241013a00042001200241046a410110722001200541016a412010720c030b200241023a00042001200241046a410110722001200541016a41201072200041306a29030021072002200041386a290300370318200220073703102001200241106a41101072200041c0006a29030021072002200041c8006a290300370318200220073703102001200241106a411010722002200041d0006a2802003602102001200241106a410410720c020b2002411a3a00102001200241106a4101107220002d0004417f6a220341044b0d01200041046a21040240024002400240024020030e050001020304000b200241003a00042001200241046a41011072200041086a2802002103200041106a2802002200200110712000450d05200041a8026c210003402003200110bf02200341a8026a2103200041d87d6a22000d000c060b0b200241013a00042001200241046a41011072200220002f01063b01102001200241106a41021072200041086a280200200110bf020c040b200241023a00042001200241046a41011072200220002f01063b01102001200241106a41021072200041086a2802002103200041106a28020022052001107102402005450d002005410574210503402001200341201072200341206a2103200541606a22050d000b0b0240024020002802144101460d00200241003a00042001200241046a410110720c010b200241013a00042001200241046a410110722002200041186a2802003602102001200241106a4104107220022000411c6a2802003602102001200241106a410410720b2000280220200110bf020c030b200241033a00042001200241046a41011072200220002f01263b01102001200241106a41021072200041286a2802002103200041306a28020022052001107102402005450d002005410574210503402001200341201072200341206a2103200541606a22050d000b0b200441016a21030240024020002802344101460d00200241003a00042001200241046a410110720c010b200241013a00042001200241046a410110722002200041386a2802003602102001200241106a4104107220022000413c6a2802003602102001200241106a410410720b20012003412010720c020b200241043a00042001200241046a41011072200220002f01263b01102001200241106a41021072200041286a2802002103200041306a280200220520011071200441016a210402402005450d002005410574210503402001200341201072200341206a2103200541606a22050d000b0b200220002802343602102001200241106a410410722002200041386a2802003602102001200241106a4104107220012004412010720c010b2002411b3a00102001200241106a41011072200041086a22052d0000417f6a220341034b0d00024002400240024020030e0400010203000b200241003a00042001200241046a410110722000410c6a280200200110bf020c030b200241013a00042001200241046a410110722000410c6a280200200110bf022002200041106a2903003703102001200241106a410810720c020b200241023a00042001200241046a410110722001200541016a412010720c010b200241033a00042001200241046a410110722001200541016a412010722000412c6a280200200110bf020b200241206a24000f0b1039000bbc0201057f024002400240200041046a2802002202200041086a28020022036b20012802042204200128020022056b22064f0d00200320066a22052003490d01200241017422042005200420054b1b22054100480d010240024020020d00024020050d00410121040c020b2005102722040d010c040b2000280200210420022005460d00200420022005102b2204450d03200041086a28020021030b20002004360200200041046a200536020020012802002105200128020421040b024020052004460d00200028020021042001200541016a360200200420036a20052d00003a0000200341016a2103200128020022052001280204460d0003402001200541016a360200200420036a20052d00003a0000200341016a2103200128020022052001280204470d000b0b200041086a20033602000f0b1032000b1030000b9e06020a7f017e230041d0016b2202240041002103200241003a00c0012001280204417f6a2104024002400240024003402004417f460d01200241a0016a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c0012004417f6a21042005210320054120470d000b20024180016a41186a2204200241a0016a41186a220329030037030020024180016a41106a2205200241a0016a41106a220629030037030020024180016a41086a2207200241a0016a41086a2208290300370300200220022903a00137038001200241a0016a200110830220022802c0012209450d01200241c0006a41186a220a2004290300370300200241c0006a41106a220b2005290300370300200241c0006a41086a22052007290300370300200241c0006a41286a22072008290300370300200241c0006a41306a22082006290300370300200241c0006a41386a220620032903003703002002200229038001370340200220022903a001370360200241c4016a2802002104200241a0016a41286a290300210c200241086a2005290300370300200241106a200b290300370300200241186a200a290300370300200241206a22032002290360370300200241286a22052007290300370300200241306a22072008290300370300200241386a2208200629030037030020022002290340370300200241c0006a20011096022002280240450d02200241a0016a41086a2201200241c0006a41086a280200360200200220022903403703a001200041386a2008290300370300200041306a2007290300370300200041286a2005290300370300200041206a2003290300370300200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a29030037030020002002290300370300200041c8006a200c3703002000200436024420002009360240200041d0006a20022903a001370300200041d8006a20012802003602000c030b200341ff0171450d00200241003a00c0010b200041003602400c010b200041003602402004450d00200441306c450d00200910290b200241d0016a24000bef07010a7f200220016b210341242104024002402000280200220541244b0d00200521060c010b2000410c6a2802002106200521040b024002400240024002400240024002400240024002400240200420066b2003490d00200521060c010b200620036a22042006490d0341002103024020044102490d00417f2004417f6a677621030b200341016a22062003490d034124210302400240200541244b0d00200041056a2107200521040c010b2000410c6a2802002104200041086a2802002107200521030b200420064b0d07024020064125490d0020032006470d03200521060c010b20054125490d01200041003a0004200041056a2007200410e4071a2000200436020020071029200028020021060b200641254f0d03200621050b200041056a210341242106200021070c040b02400240200541244b0d00200610272203450d0720032007200410e4071a0c010b200720032006102b2203450d060b200041013a0004200020063602002000410c6a22072004360200200041086a20033602000c020b41a4a1cc00411141b8a1cc001033000b2000410c6a22072802002104200041086a28020021030b200421050b0240200520064f0d00034020022001460d04200320056a20012d00003a0000200141016a21012006200541016a2205470d000b200621050b2007200536020020012002460d03200141016a2105200041056a21082000410c6a210920012d000021030340024002402000280200220641244b22070d0041242104200621010c010b20092802002101200621040b02400240024020012004470d000240024020070d004124210a200621040c010b200928020021042006210a0b200a2004470d0002400240200441016a220b2004490d004100210a0240200b4102490d00417f200b417f6a6776210a0b200a41016a2204200a490d000240024020070d004124210c2008210b2006210a0c010b200028020c210a2000280208210b2006210c0b200a20044b0d010240024020044125490d00200c2004470d010c040b20064125490d04200041003a00042008200b200a10e4071a2000200a360200200b1029200028020021060c030b0240024020070d00200410272206450d092006200b200a10e4071a0c010b200b200c2004102b2206450d080b2000200a36020c20002006360208200041013a000420002004360200200921040c040b41a4a1cc00411141b8a1cc001033000b41e6a1cc00412041b8a1cc001033000b20064125490d0020002802082106200921040c010b20002104200821060b2004200141016a360200200620016a20033a000020022005460d0420052d00002103200541016a21050c000b0b41e6a1cc00412041b8a1cc001033000b1030000b200720053602000b0b80520c017f017e017f027e017f017e037f017e027f017e017f037e230041d0076b2206240002400240024002400240024002400240024002400240200129032022074202520d0041808e082108024020012802500e1c05050505050605050505050505050606060606060206060605000505050b200141d8006a2d00004103460d050c040b200641b0036a41186a200141186a290000370300200641b0036a41106a200141106a290000370300200641b0036a41086a200141086a290000370300200620012900003703b003200141c0006a2903002109200141386a290300210a200141c8006a280200210b2001290328210c41808e0821080240024020012802500e1c03030303030403030303030303030404040404040104040403000303030b200141d8006a2d00004103460d030c020b200141d4006a2802004101460d010c020b200141d4006a2802004101460d020c030b10c402220841ff01714102470d0010c4021a10c402220841ff01714102470d00200641e8066a41186a220d4200370300200641e8066a41106a220e4200370300200641e8066a41086a22084200370300200642003703e80641b3e6ca00ad4280808080e000841001220f29000021102008200f41086a290000370300200620103703e806200f102941c9e6ca00ad4280808080e000841001220f2900002110200641a8066a41086a2211200f41086a290000370300200620103703a806200f1029200e20062903a8062210370300200641d0036a41086a2008290300370300200641d0036a41106a220f2010370300200641d0036a41186a22122011290300370300200620062903e8063703d003200641c8026a200641d0036a412010fc0102400240024020074201520d00200c4200510d010b200641d0026a200641b0036a10a802200641d0036a20062802d002221120062802d80210a9022008200f290300370300200e2012290300370300200d200641d0036a41206a290300370300200641e8066a41206a200641d0036a41286a290300370300200641e8066a41286a2208200641d0036a41306a290300370300200641e8066a41306a220e200641d0036a41386a290300370300200641e8066a41386a220f20064190046a290300370300200620062903d8033703e8060240024020062903d0034201510d00200641a8066a41386a4200370300200641a8066a41306a4200370300200641a8066a41286a4200370300200641c8066a4200370300200641c0066a4200370300200641b8066a4200370300200641b0066a4200370300200642003703a806410021084100210e0c010b200641a8066a41086a200641e8066a41086a290300370300200641a8066a41106a200641e8066a41106a290300370300200641a8066a41186a200641e8066a41186a290300370300200641a8066a41206a200641e8066a41206a290300370300200641a8066a41286a2008290300370300200641a8066a41306a200e290300370300200641a8066a41386a200f290300370300200620062903e8063703a80620064198046a2802002108200628029c04210e0b024020062802d402450d00201110290b2008200b470d01200641d0036a41386a200641a8066a41386a290300370300200641d0036a41306a200641a8066a41306a290300370300200641d0036a41286a200641a8066a41286a290300370300200641d0036a41206a200641a8066a41206a290300370300200641d0036a41186a200641a8066a41186a290300370300200641d0036a41106a200641a8066a41106a290300370300200641d0036a41086a200641a8066a41086a290300370300200620062903a8063703d0032006200e360294042006200b41016a36029004200641b0036a200641d0036a10c5024180122108200341ff01714102460d0220022003200510c602220841ff01714102470d02200641b8026a200520022004200a200910c70202400240024002400240024002400240024002400240024002400240024020062903b8022207200641b8026a41086a290300220c8450450d00420021100c010b200641003a00af072006200c3703d802200620073703d00241012108200641014111200a200984501b3a00ae072006200641b0036a3602a8072006200641b0036a36029806200620064198066a3602e0032006200641ae076a3602dc032006200641a8076a3602d8032006200641af076a3602d4032006200641d0026a3602d003200641e8066a200641b0036a200641d0036a10c8020240024020062802e8064101470d004200210c20062903f00621070c010b20064190076a290300210c20064188076a2903002107024020062903f0064201510d00410021080c010b200641e8066a41106a2903002110200628029806210520064188046a200641e8066a41186a29030037030020064180046a201037030041002108200641d0036a41086a41003a0000200641d9036a2005290000370000200641e1036a200541086a290000370000200641e9036a200541106a290000370000200641f1036a200541186a290000370000200641033a00d003200641d0036a10cb010b4201211020080d010b200641a8066a41186a200641b0036a41186a290300370300200641a8066a41106a200641b0036a41106a290300370300200641a8066a41086a200641b0036a41086a290300370300200620062903b0033703a806200641d0036a200141d0006a220410c90220062d00d0034101460d01200641fc036a280200210f200641f8036a280200210b200641f4036a280200210d200641ec036a280200210e200641d0036a41186a28020021110240200641f0036a2802002208450d002008410c6c21052011210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200e450d00200e410c6c450d00201110290b0240200f450d00200f410c6c2105200d210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b200b450d02200b410c6c450d02200d10290c020b41800221080c0e0b20062d00d10322054102470d010b200641d0036a200410ca0220062d00d0034101460d01200641fc036a280200210f200641f8036a280200210b200641f4036a280200210d200641ec036a280200210e200641e8036a28020021110240200641f0036a2802002208450d002008410c6c21052011210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200e450d00200e410c6c450d00201110290b0240200f450d00200f410c6c2105200d210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b200b450d02200b410c6c450d02200d10290c020b20062f01d203410874210b02402010500d00200641d0036a41186a220f4200370300200641d0036a41106a22044200370300200641d0036a41086a22034200370300200642003703d00341dcbec500ad428080808080018422021001220e290000210920064198066a41086a2208200e41086a2900003703002006200937039806200e10292003200829030037030020062006290398063703d003419fe3c200ad4280808080d0018422091001220e290000210a2008200e41086a2900003703002006200a37039806200e10292004200629039806220a370300200641e8066a41086a220d2003290300370300200641e8066a41106a2211200a370300200641e8066a41186a22122008290300370300200620062903d0033703e806200641a0026a200641e8066a412010e301200641a0026a41106a290300210a20062903a802211020062802a002210e200f42003703002004420037030020034200370300200642003703d00320021001220f29000021022008200f41086a2900003703002006200237039806200f10292003200829030037030020062006290398063703d00320091001220f29000021022008200f41086a2900003703002006200237039806200f102920042006290398062202370300200d20032903003703002011200237030020122008290300370300200620062903d0033703e80620064200200a4200200e1b2202200c7d20104200200e1b220c200754ad7d2209200c20077d2207200c56200920025620092002511b22081b3703d80320064200200720081b3703d003200641e8066aad4280808080800484200641d0036aad428080808080028410030b200b20057221080c0b0b20062d00d10322054102470d010b200641d0036a200410cb0220062d00d0034101460d01200641fc036a280200210f200641f8036a280200210b200641f4036a280200210d200641ec036a280200210e200641e8036a28020021110240200641f0036a2802002208450d002008410c6c21052011210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200e450d00200e410c6c450d00201110290b0240200f450d00200f410c6c2105200d210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b200b450d02200b410c6c450d02200d10290c020b20062f01d203410874210b02402010500d00200641d0036a41186a220f4200370300200641d0036a41106a22044200370300200641d0036a41086a22034200370300200642003703d00341dcbec500ad428080808080018422021001220e290000210920064198066a41086a2208200e41086a2900003703002006200937039806200e10292003200829030037030020062006290398063703d003419fe3c200ad4280808080d0018422091001220e290000210a2008200e41086a2900003703002006200a37039806200e10292004200629039806220a370300200641e8066a41086a220d2003290300370300200641e8066a41106a2211200a370300200641e8066a41186a22122008290300370300200620062903d0033703e80620064188026a200641e8066a412010e30120064188026a41106a290300210a2006290390022110200628028802210e200f42003703002004420037030020034200370300200642003703d00320021001220f29000021022008200f41086a2900003703002006200237039806200f10292003200829030037030020062006290398063703d00320091001220f29000021022008200f41086a2900003703002006200237039806200f102920042006290398062202370300200d20032903003703002011200237030020122008290300370300200620062903d0033703e80620064200200a4200200e1b2202200c7d20104200200e1b220c200754ad7d2209200c20077d2207200c56200920025620092002511b22081b3703d80320064200200720081b3703d003200641e8066aad4280808080800484200641d0036aad428080808080028410030b200b20057221080c080b20062d00d10322054102470d010b200641d0036a200641b0036a200410cc0220062d00d0034101460d01200641fc036a280200210e200641f8036a2802002104200641f4036a280200210f200641ec036a280200210b200641e8036a280200210d0240200641f0036a2802002208450d002008410c6c2105200d210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200b450d00200b410c6c450d00200d10290b0240200e450d00200e410c6c2105200f210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b2004450d022004410c6c450d02200f10290c020b20062f01d203410874210b02402010500d00200641d0036a41186a220f4200370300200641d0036a41106a22044200370300200641d0036a41086a22034200370300200642003703d00341dcbec500ad428080808080018422021001220e290000210920064198066a41086a2208200e41086a2900003703002006200937039806200e10292003200829030037030020062006290398063703d003419fe3c200ad4280808080d0018422091001220e290000210a2008200e41086a2900003703002006200a37039806200e10292004200629039806220a370300200641e8066a41086a220d2003290300370300200641e8066a41106a2211200a370300200641e8066a41186a22122008290300370300200620062903d0033703e806200641f0016a200641e8066a412010e301200641f0016a41106a290300210a20062903f801211020062802f001210e200f42003703002004420037030020034200370300200642003703d00320021001220f29000021022008200f41086a2900003703002006200237039806200f10292003200829030037030020062006290398063703d00320091001220f29000021022008200f41086a2900003703002006200237039806200f102920042006290398062202370300200d20032903003703002011200237030020122008290300370300200620062903d0033703e80620064200200a4200200e1b2202200c7d20104200200e1b220c200754ad7d2209200c20077d2207200c56200920025620092002511b22081b3703d80320064200200720081b3703d003200641e8066aad4280808080800484200641d0036aad428080808080028410030b200b20057221080c050b20062d00d10322054102470d010b200641f8056a41086a200641a8066a41086a2903002213370300200641f0026a41186a200641a8066a41186a290300370300200641f0026a41106a200641a8066a41106a290300370300200641f0026a41086a2013370300200620062903a80622133703f805200620133703f00220064190036a41186a200641b0036a41186a29030037030020064190036a41106a200641b0036a41106a29030037030020064190036a41086a200641b0036a41086a290300370300200620062903b003370390034101210d0c090b20062f01d203410874210b02402010500d00200641d0036a41186a220f4200370300200641d0036a41106a22044200370300200641d0036a41086a22034200370300200642003703d00341dcbec500ad428080808080018422021001220e290000210920064198066a41086a2208200e41086a2900003703002006200937039806200e10292003200829030037030020062006290398063703d003419fe3c200ad4280808080d0018422091001220e290000210a2008200e41086a2900003703002006200a37039806200e10292004200629039806220a370300200641e8066a41086a220d2003290300370300200641e8066a41106a2211200a370300200641e8066a41186a22122008290300370300200620062903d0033703e806200641d8016a200641e8066a412010e301200641d8016a41106a290300210a20062903e001211020062802d801210e200f42003703002004420037030020034200370300200642003703d00320021001220f29000021022008200f41086a2900003703002006200237039806200f10292003200829030037030020062006290398063703d00320091001220f29000021022008200f41086a2900003703002006200237039806200f102920042006290398062202370300200d20032903003703002011200237030020122008290300370300200620062903d0033703e80620064200200a4200200e1b2202200c7d20104200200e1b220c200754ad7d2209200c20077d2207200c56200920025620092002511b22081b3703d80320064200200720081b3703d003200641e8066aad4280808080800484200641d0036aad428080808080028410030b200b20057221080c020b41a094cc00411941bc94cc001033000b4180064180042008200b4b1b21080b200020083b0001200041013a0000200041036a20084110763a00000c040b10c402220841ff01714102470d0010c402220841ff01714102470d0010c4021a10c402220841ff01714102470d0010c402220841ff01714102470d0020022003200510c602220841ff01714102470d004200210a200641d0036a41106a4200370300200641a8066a41086a22044200370300200641a8066a41106a220b4200370300200641a8066a41186a220e4200370300200642003703a806200128025041746a2208410c4b0d020240024020080e0d00040404040404040404040401000b200641d0036a200141d4006a10cd02024020062d00d0034101460d00200641fc036a2802002111200641f8036a280200210f200641f4036a2802002112200641ec036a280200210d200641e8036a28020021140240200641f0036a2802002208450d002008410c6c21052014210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200d450d00200d410c6c450d00201410290b02402011450d002011410c6c21052012210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b200f450d04200f410c6c450d04201210290c040b20062d00d10322084102460d030c020b200641d0036a200141d8006a10ce02024020062d00d0034101460d00200641fc036a2802002111200641f8036a280200210f200641f4036a2802002112200641ec036a280200210d200641e8036a28020021140240200641f0036a2802002208450d002008410c6c21052014210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b0240200d450d00200d410c6c450d00201410290b02402011450d002011410c6c21052012210803400240200841046a280200450d00200828020010290b2008410c6a2108200541746a22050d000b0b200f450d03200f410c6c450d03201210290c030b20062d00d10322084102460d020c010b200020083b0001200041013a0000200041036a20084110763a00000c020b20062f01d2032103200041013a0000200041036a20034108763a0000200020034108742008723b00010c010b200641f0026a41186a200e290300370300200641f0026a41106a200b290300370300200641f0026a41086a2004290300370300200620062903a8063703f0024100210d42002109420021100c010b200141d0006a10cc010c010b200641d0026a41186a220820064190036a41186a290300370300200641d0026a41106a220520064190036a41106a290300370300200641d0026a41086a220420064190036a41086a29030037030020062006290390033703d002200641b0036a41186a220b200641f0026a41186a290300370300200641b0036a41106a220e200641f0026a41106a290300370300200641b0036a41086a220f200641f0026a41086a290300370300200620062903f0023703b003200641d0036a200141d0006a41a80210e4071a200641b0076a41186a22112008290300370300200641b0076a41106a22082005290300370300200641b0076a41086a22052004290300370300200620062903d0023703b007410221010240200d450d00200641f8056a41186a2011290300370300200641f8056a41106a2008290300370300200641f8056a41086a2005290300370300200620062903b0073703f805410121010b200641f2066a200641f8056a41086a2208290300370100200641fa066a200641f8056a41106a220529030037010020064182076a200641f8056a41186a2204290300370100200620013a00e906200620062903f8053701ea06200641003a00e806200641a8066a200641d0036a200641e8066a10c501200641a8066a41106a290300211520062903b00621132004200b2903003703002005200e2903003703002008200f290300370300200620062903b0033703f8050240024002400240200341ff01714102470d0020062903a8064201520d0020134202510d00200641a8066a41186a2d000041ff01714104470d010b024020134201520d004200200220157d221620162002561b2216500d00200641b0016a10cf02200620062903b0013703e806200620062903b8013703b007200641b0076a200641e8066a200341ff01714101461b220142002001290300221720167d221620162017561b370300200641e0036a20062903b007370300200620062903e8063703d803200642013703d003200641d8036a10d0020b200641b0076a41186a200641f8056a41186a290300370300200641b0076a41106a200641f8056a41106a290300370300200641b0076a41086a200641f8056a41086a290300370300200620062903f8053703b00702402010500d00420021160240024020134201520d004280c0a8ca9a3a21104200200220157d221320132002561b221642ffbfa8ca9a3a560d010b201621100b200641d0036a41186a4200370300200641d0036a41106a22034200370300200641d0036a41086a22014200370300200642003703d00341cdcac800ad4280808080a002841001220829000021022001200841086a290000370300200620023703d0032008102941b8cbc800ad428080808090028410012208290000210220064190036a41086a2205200841086a29000037030020062002370390032008102920032006290390032202370300200641e8066a41086a2001290300370300200641e8066a41106a2002370300200641e8066a41186a2005290300370300200620062903d0033703e8062010428094ebdc038022024280e892267e2215201020024280ec94a37c7e7c4280e892267e2202428094ebdc03802210a7417f2002428080808080c0b2cd3b541b200220104280ec94a37c7e7c4280cab5ee01566aad7c2213201554ad211520064198016a200641e8066a10d10241002101024002402006280298010d004200211642002102420021100c010b20062903a0012102024020064198016a41106a2903002216427f570d00201621100c010b428080808080808080807f420020162002420052ad7c7d20022016428080808080808080807f85845022011b21104200420020027d20011b2102410121010b200641d0036a200220102013201542808090bbbad6adf00d420010d2020240024020062802d0034101460d00200641e0036a2903002102200641d8036a29030021102001450d012010200284500d010b2016423f87427f85221021020b2006427f201020137c221320132010542201200220157c2001ad7c221020025420102002511b22011b2202370390032006427f201020011b22103703980302402002201084500d002006200641b0076a3602f002200641e8066a200641b0076a20064190036a200641f0026a10b30220062802e8064101460d0020064190076a290300210220064188076a29030021100240200641e8066a41086a2903004201520d00200641e8066a41106a290300211320064188046a200641e8066a41186a29030037030020064180046a2013370300200641d0036a41086a41003a0000200641d9036a20062903b007370000200641e1036a200641b0076a41086a290300370000200641e9036a200641b0076a41106a290300370000200641f1036a200641b0076a41186a290300370000200641033a00d003200641d0036a10cb010b20072010542201200c200254200c2002511b0d03200c20027d2001ad7d210c200720107d21070b200641e8006a427f200720072007200a20072007200a56200c200956200c2009511b22011b22027d542208200c2009200c20011b22097d2007200254ad7d220220097c2008ad7c220c200254200c2002511b22011b427f200c20011b1081022006290368a7450d00200641e8006a41106a2903002107200641306a2006290370220242004204420010d507200641206a420042002002420010d507200641c0006a2006290330200641306a41086a290300220c200742028620062903207c7c22094205420010e007200641d0006a42b3e6cc99b3e6cc993320062903402007200742ffffffffffffffff3f83522006290328420052722009200c547222011b220c20022002200c56200742b3e6cc99b3e6cc9933200641c0006a41086a29030020011b220c562007200c511b22011b2209200c200720011b220c1081022007200c7d2002200954ad7d2107200220097d210202402006290350a7450d00200641d0006a41106a290300210c20062903582109200642f0f2bda1a7ee9cb9f9003703e806200641d0036a200641e8066a108202200641d0036a2009200c108002200641e8036a200c370300200641e0036a2009370300200641d0036a41086a41063a00002006410e3a00d003200641d0036a10cb010b200641086a200220071081022006290308a7450d00200641086a41106a290300210720062903102102200641e8066a10bc01200641d0036a10bc01200641d0036a2002200710800220064188046a200737030020064180046a2002370300200641d0036a41086a41043a0000200641d9036a20062903e806370000200641e1036a200641e8066a41086a290300370000200641e9036a200641e8066a41106a290300370000200641f1036a20064180076a290300370000200641033a00d003200641d0036a10cb010b200041086a20062903a806370300200041003a0000200041286a200641a8066a41206a290300370300200041206a200641a8066a41186a290300370300200041186a200641a8066a41106a290300370300200041106a200641a8066a41086a290300370300200641d0076a24000f0b41801021052010500d01200641d0036a41186a220b4200370300200641d0036a41106a22034200370300200641d0036a41086a22084200370300200642003703d00341dcbec500ad42808080808001842202100122042900002109200641b0076a41086a2201200441086a290000370300200620093703b0072004102920082001290300370300200620062903b0073703d003419fe3c200ad4280808080d00184220910012204290000210a2001200441086a2900003703002006200a3703b00720041029200320062903b007220a370300200641e8066a41086a220e2008290300370300200641e8066a41106a220f200a370300200641e8066a41186a220d2001290300370300200620062903d0033703e806200641c0016a200641e8066a412010e301200641c0016a41106a290300210a20062903c801211020062802c0012104200b42003703002003420037030020084200370300200642003703d00320021001220b29000021022001200b41086a290000370300200620023703b007200b102920082001290300370300200620062903b0073703d00320091001220b29000021022001200b41086a290000370300200620023703b007200b1029200320062903b0072202370300200e2008290300370300200f2002370300200d2001290300370300200620062903d0033703e80620064200200a420020041b2202200c7d2010420020041b220c200754ad7d2209200c20077d2207200c56200920025620092002511b22011b3703d80320064200200720011b3703d003200641e8066aad4280808080800484200641d0036aad428080808080028410030c010b200641e8066a41186a22044200370300200641e8066a41106a22034200370300200641e8066a41086a22084200370300200642003703e80641dcbec500ad4280808080800184220910012205290000210a20064198066a41086a2201200541086a2900003703002006200a37039806200510292008200129030037030020062006290398063703e806419fe3c200ad4280808080d00184220a1001220529000021132001200541086a29000037030020062013370398062005102920032006290398062213370300200641d0036a41086a220b2008290300370300200641d0036a41106a220e2013370300200641d0036a41186a220f2001290300370300200620062903e8063703d00320064180016a200641d0036a412010e30120064180016a41106a290300211320062903880121152006280280012105200442003703002003420037030020084200370300200642003703e80620091001220429000021092001200441086a2900003703002006200937039806200410292008200129030037030020062006290398063703e806200a1001220429000021092001200441086a29000037030020062009370398062004102920032006290398062209370300200b2008290300370300200e2009370300200f2001290300370300200620062903e8063703d0032006427f2013420020051b22092002200c7d2010200754ad7d7c2015420020051b2202201020077d7c220c2002542201ad7c22072001200720095420072009511b22011b3703f0062006427f200c20011b3703e806200641d0036aad4280808080800484200641e8066aad4280808080800284100341800221050b200020053b0001200041013a0000200041036a41003a00000b200641d0076a24000b040041020bb90204027f017e017f027e230041106b220224002002200010a8022001280240210320023502082104200228020021050240410410272200450d002000200336000020012d00442103200041044108102b2200450d00200020033a0004200141086a290300210620012903002107200041084115102b2200450d00200020073700052000410d6a2006370000200141186a29030021062001290310210720004115412a102b2200450d00200020073700152000411d6a2006370000200141286a2903002106200129032021072000412a41d400102b2200450d00200020073700252000412d6a2006370000200020012903303700352000413d6a200141386a29030037000020044220862005ad842000ad4280808080d0088410032000102902402002280204450d00200510290b200241106a24000f0b1030000be50603017f047e067f230041e0006b22032400200341306a20012002109803024002400240024020032903302204a7220241ff01714101460d00200310cf022003290308210520032903002106024002400240200141ff01710e03010004010b4100210141800c2102200042c0b2cd3b7c22072000540d05200520077c22072005540d05427f200620077c220020002006541b4281c0a8ca9a3a5a0d0120062100200721050c040b4100210141800c2102200042c0b2cd3b7c22072000540d04200620077c22002006540d0420004280b0def7d32b560d042007428090a7f0ea25560d040c030b20062100200721052007428090cad2c60e560d030c020b200241087641ff017121012004421088a741087421020c020b427f2006427f200042c0b2cd3b7c220720072000541b7c220020002006541b21000b200341306a41186a22084200370300200341306a41106a22094200370300200341306a41086a220242003703002003420037033041b3e6ca00ad4280808080e0008422061001220a2900002107200341d0006a41086a2201200a41086a29000037030020032007370350200a1029200220012903003703002003200329035037033041e8a0cb00ad42808080808002841001220a29000021072001200a41086a29000037030020032007370350200a1029200920032903502207370300200341106a41086a220b2002290300370300200341106a41106a220c2007370300200341106a41186a220d20012903003703002003200329033037031020032004422088a7360230200341106aad42808080808004842204200341306aad4280808080c0008410032008420037030020094200370300200242003703002003420037033020061001220a29000021062001200a41086a29000037030020032006370350200a1029200220012903003703002003200329035037033041b4a0cb00ad4280808080b001841001220a29000021062001200a41086a29000037030020032006370350200a1029200920032903502206370300200b2002290300370300200c2006370300200d2001290300370300200320032903303703100240410810272201450d0020012000370000200141084110102b2201450d002001200537000820042001ad428080808080028410032001102941022101410021020c010b1030000b200341e0006a240020022001720bad0604027f017e017f037e23004180016b220624000240200341ff01710d00200641086a2001ad420042c0843d420010d507200641d0006a41186a4200370300200641d0006a41106a22074200370300200641d0006a41086a220342003703002006420037035041cdcac800ad4280808080a002841001220129000021082003200141086a290000370300200620083703502001102941b8cbc800ad4280808080900284100122012900002108200641f0006a41086a2209200141086a2900003703002006200837037020011029200720062903702208370300200641306a41086a2003290300370300200641306a41106a2008370300200641306a41186a200929030037030020062006290350370330200641086a41086a29030020024280c0a8ca9a3a20024280c0a8ca9a3a541b2202428094ebdc038022084280e892267e220a200220084280ec94a37c7e7c4280e892267e2202428094ebdc03802208a7417f2002428080808080c0b2cd3b541b200220084280ec94a37c7e7c4280cab5ee01566aad7c2202200a54ad7c2006290308220820027c220a200854ad7c210b200641186a200641306a10d102410021030240024020062802180d004200210c42002102420021080c010b200629032021020240200641186a41106a290300220c427f570d00200c21080c010b428080808080808080807f4200200c2002420052ad7c7d2002200c428080808080808080807f85845022031b21084200420020027d20031b2102410121030b200641d0006a20022008200a200b42808090bbbad6adf00d420010d2020240024020062802504101460d00200641e0006a2903002102200641d8006a29030021082003450d012008200284500d010b200c423f87427f85220821020b427f427f427f2002200b7c2008200a7c220a2008542203ad7c22082003200820025420082002511b22031b220b427f200a20031b22024280ade2047c22082002542203ad7c220a2003200a200b54200820025a1b22031b220220057c427f200820031b220520047c22082005542203ad7c22042003200420025420042002511b22031b2105427f200820031b21040b200020043703002000200537030820064180016a24000be30f06077f027e037f0a7e017f037e23004180036b2203240020022802102104200228020c21052002280208210620022802042107200228020021022003200110a80220034180016a200328020022082003280208220910a902200329038001210a4200210b2003420037038001200341c8016a280200210c20032d00cc01210d02400240200a420151220e0d00200341106a41306a4200370300200341106a41286a4200370300200341106a41206a4200370300200341106a41186a4200370300200341206a4200370300200341186a4200370300200342003703104200210f4200211042002111420021120c010b200341b8016a290300211320034180016a41306a290300211420034180016a41206a290300210f20034180016a41186a290300210b200341c0016a290300211220032903900121112003290388012110200341106a41206a20034180016a41286a290300370300200341106a41286a2014370300200341106a41306a2013370300200341206a200b3703002003200f37032820032010370310200320113703180b024002400240024002402010200229030022157d22142010562011200241086a29030022167d2010201554ad7d221320115620132011511b450d0041cbe2c200ad4280808080b00284211141838c0c21040c010b02402010200b7c22174280c8afa0255441002011200f7c22182017200b54ad7c501b0d002014200b7c220b42ffc7afa025562013200f7c200b201454ad7c220b420052200b501b0d0020072d00004101460d0041b0e2c200ad4280808080900184211141838c1421040c010b2015201684500d0120052d00002105200341c8006a200628020010a80220034180026a20032802482206200328025010a9022003290380024201512107200341b0026a290300210f200341a8026a2903002116200341c0026a290300210b200341b8026a29030021150240200328024c450d00200610290b200b420020071b210b2015420020071b21150240200541ff01714101460d00200f420020071b210f2016420020071b2116024020054101710d0020162115200f210b0c010b200f200b2016201556200f200b56200f200b511b22071b210b2016201520071b21150b2015201458200b201358200b2013511b0d0141dee2c200ad4280808080d00284211141838c0421040b20114280807c83210b201142088842ff018321102011a7210e410121020c010b2003201437031020032013370318200241086a290300210f2002290300211520042802002104200341c8006a41186a200341206a220241086a290300220b370300200341c8006a41206a2205200241106a290300370300200341f0006a2206200241186a290300370300200341f8006a2219200241206a2903003703002003201337035020032014370348200320022903002216370358427f20172017201054220220182002ad7c221020115420102011511b22021b427f201020021b8450210202400240427f201420167c2211201120145422072013200b7c2007ad7c221120135420112013511b22071b22104280c8afa025544100427f201120071b2211501b0d00200341c8006a41106a29030021182019290300211a200629030021102005290300210b20032903502117200329034821164201211b2003290360211c0c010b4200211b02402010201184500d002010201110d402200341b8026a2011370300200341b0026a201037030020034180026a41086a41013a000020034189026a200429000037000020034191026a200441086a29000037000020034199026a200441106a290000370000200341a1026a200441186a290000370000200341033a00800220034180026a10cb010b0b2002ad2111200341a8016a200b370300200341b0016a201037030020034190016a2017370300200341b8016a201a37030020034198016a20183703002003201c3703a001200320123703c0012003201637038801410021022003200d4100200a42015122041b220d3a00cc012003200c410020041b220c3602c8012003201b4201512204ad37038001024020040d002009ad4220862008ad841004420021104200210b0c010b410410272204450d012004200c360000200441044108102b2204450d012004200d3a0004200441084115102b2204450d01200420163700052004410d6a2017370000200341a0016a290300210a20034198016a290300211720044115412a102b2204450d01200420173700152004411d6a200a3700002004412a41d400102b2204450d012004200b3700252004412d6a20103700002004413d6a200341c0016a2903003700002004200341b8016a2903003700352009ad4220862008ad842004ad4280808080d008841003200410294200210b420121100b02402003280204450d00200810290b024002402002450d0020002004360204200041086a2010420886200ead42ff018384200b84370200410121020c010b024002400240200e41ff017122020d0020104200510d004103210e20034180026a21020c010b2002450d0120104200520d014104210e20034180016a21020b200241086a200e3a0000200241003a0000200241096a2001290000370000200241116a200141086a290000370000200241196a200141106a290000370000200241216a200141186a290000370000200210cb010b200041286a200f370300200041206a2015370300200041186a2013370300200041106a2014370300200041086a2011370300410021020b2000200236020020034180036a24000f0b1030000bc71705067f017e0a7f027e017f23004190016b220224004104210302400240024002400240024002400240024002400240024020012802004117460d00410021040c010b41002104200141046a22052d00004105470d00200241e0006a200141c8006a28020010dc0620022802602203200228026810900641ff0171210402402002280264450d00200310290b0240024002400240024002400240024020044102460d002004410171450d00200241e0006a41186a4200370300200241e0006a41106a22064200370300200241e0006a41086a220342003703002002420037036041d787cc00ad428080808090018410012207290000210820024180016a41086a2204200741086a29000037030020022008370380012007102920032004290300370300200220022903800137036041eb87cc00ad4280808080f001841001220729000021082004200741086a29000037030020022008370380012007102920062002290380012208370300200241c0006a41086a2003290300370300200241c0006a41106a2008370300200241c0006a41186a200429030037030020022002290360370340200241206a200241c0006a10fd050240200228022022090d0020024100360218200242043703100c030b2002290224210820022009360210200220083702142008422088a7220a450d01200a417f6a210b0c040b200041800e3b0001200041013a0000200041036a41013a00000c110b2008a7450d0041002104200a210b0c010b200241106a41004101109d01200228021021092002280218220b21040b20092004410c6c6a22044100360208200442043702002002200b41016a220a360218200a200b490d010b200241e0006a41186a220c4200370300200241e0006a41106a220d4200370300200241e0006a41086a220342003703002002420037036041d787cc00ad428080808090018410012207290000210820024180016a41086a2204200741086a29000037030020022008370380012007102920032004290300370300200220022903800137036041e087cc00ad4280808080b001841001220729000021082004200741086a2900003703002002200837038001200710292006200229038001370000200641086a2004290300370000200241c0006a41086a2003290300370300200241c0006a41106a200d290300370300200241c0006a41186a200c29030037030020022002290360370340200241086a200241c0006a412010fc01024002402009200b410c6c6a220e41086a220f2802002204200228020c410020022802081b4f0d00200e28020021100240200441014b0d00024020040e020300030b2001280248210d410021030c040b2001280248210d41002103034020032004410176220720036a220c200d2010200c41246c6a280200491b2103200420076b220441014b0d000c040b0b200041800c3b0001200041013a0000200041036a41003a00000c0d0b2001280248210d410021030c020b200b410041ece2c8001036000b200d2010200341246c6a2802002204460d032003200d20044b6a21030b200241e0006a200d10ce0420022802602211450d0320022802642112200241e0006a41086a22073502004220862011ad84101022042900002108200441086a2900002113200441106a2900002114200241206a41186a200441186a290000370300200241206a41106a2014370300200241206a41086a201337030020022008370320200410290240200241206a200541216a2215460d00200241206a2015412010e7070d020b200241e0006a41186a200541196a290000370300200241e0006a41106a200541116a2900003703002007200541096a29000037030020022005290001370360200f28020022042003490d0420012802482107024020042009200b410c6c6a41046a280200470d00200e200441011096012002280218210a200228021021090b200e280200200341246c6a220141246a2001200420036b41246c10e5071a20012007360200200120022903603702042001410c6a200241e0006a41086a2203290300370200200141146a200241e0006a41106a22072903003702002001411c6a200241e0006a41186a220c2903003702004101210d200f200441016a3602002002280214210e200c420037030020074200370300200342003703002002420037036041d787cc00ad428080808090018410012204290000210820024180016a41086a2201200441086a29000037030020022008370380012004102920032001290300370300200220022903800137036041eb87cc00ad4280808080f001841001220429000021082001200441086a2900003703002002200837038001200410292006200229038001370000200641086a2001290300370000200241c0006a41086a2003290300370300200241c0006a41106a2007290300370300200241c0006a41186a200c29030037030020022002290360370340200a410c6c41046a2201417f4c0d054100210402402001450d0020011027220d450d08200121040b200241003602682002200d36026020022004360264200a200241e0006a10710240200a450d002009200a410c6c6a210b2009210603402006280200210120062802082204200241e0006a107102402004450d002001200441246c6a21054100200228026822046b210d20022802642103034020012802002110024002402003200d6a4104490d002002280260210c200321070c010b200441046a22072004490d0b2003410174220c2007200c20074b1b22074100480d0b0240024020030d00024020070d004101210c0c020b20071027220c0d010c0f0b2002280260210c20032007460d00200c20032007102b220c450d0e0b200220073602642002200c3602600b200c20046a20103600002002200441046a2203360268024002402007200d6a417c6a411f4d0d00200721030c010b200341206a22102003490d0b200741017422032010200320104b1b22034100480d0b0240024020070d00024020030d004101210c0c020b20031027220c450d0f0c010b20072003460d00200c20072003102b220c450d0e0b200220033602642002200c3602600b200c20046a220741046a200141046a2900003700002007411c6a2001411c6a290000370000200741146a200141146a2900003700002007410c6a2001410c6a2900003700002002200441246a2204360268200d415c6a210d200141246a22012005470d000b0b2006410c6a2206200b470d000b0b20022802642101200241c0006aad4280808080800484200235026842208620022802602204ad84100302402001450d00200410290b0240200a450d00200a410c6c21042009210103400240200141046a2802002203450d00200341246c450d00200128020010290b2001410c6a2101200441746a22040d000b0b0240200e450d00200e410c6c450d00200910290b410c10272203450d08412010272201450d0720012015290000370000200141186a2207201541186a290000370000200141106a220c201541106a290000370000200141086a220d201541086a290000370000412010272204450d0820042001290000370000200441186a2007290000370000200441106a200c290000370000200441086a200d29000037000020011029200342a080808080043702042003200436020002402012450d00201110290b410121040b200041003a0000200041306a41013a00002000412c6a2004360200200041286a2004360200200041246a2003360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a4200370300200041316a2002280060360000200041346a200241e3006a2800003600000c090b20004180063b0001200041013a0000200041036a41003a00002012450d07201110290c070b200041800e3b0001200041013a0000200041036a41003a00000c060b200041800e3b0001200041013a0000200041036a41013a00000c050b200320041041000b1038000b1032000b1039000b1030000b0240200a450d00200a410c6c21042009210103400240200141046a2802002203450d00200341246c450d00200128020010290b2001410c6a2101200441746a22040d000b0b20022802142201450d002001410c6c450d00200910290b20024190016a24000bcd1304057f017e077f017e230041f0026b22022400024002400240024002400240024020012802004114470d0020012802044102470d00200241e8006a41186a22034200370300200241e8006a41106a22044200370300200241e8006a41086a220542003703002002420037036841b1dcc900ad4280808080f000841001220629000021072005200641086a290000370300200220073703682006102941b8dcc900ad4280808080a00184100122062900002107200241d0016a41086a2208200641086a290000370300200220073703d00120061029200420022903d0012207370300200241086a22092005290300370300200241106a220a2007370300200241186a220b200829030037030020022002290368370300200241e8006a2002108d02200229026c4200200228026822061b21072006410120061b210c02400240200141086a220d2802002001411c6a220e280200470d002003420037030020044200370300200542003703002002420037036841cd87cc00ad4280808080a0018410012206290000210f2005200641086a2900003703002002200f3703682006102941d983cc00ad4280808080b0018410012206290000210f2008200641086a2900003703002002200f3703d00120061029200420022903d001220f37030020092005290300370300200a200f370300200b200829030037030020022002290368370300200241e8006a2002109e0320022802682205410120051b210a41800e2109200229026c420020051b220f422088a72205450d06200141c0006a21042005410574210841002106200a2105034020042005460d02200620052004412010e70722034100476a21062003450d02200541206a2105200841606a22080d000c070b0b20004180083b0001200041013a0000200041036a41003a00000c060b20062007422088a722054f0d01200241186a200c20064105746a220541186a290000370300200241106a200541106a290000370300200241086a200541086a29000037030020022005290000370300200241e8006a200210a0020240024002402002280288012205450d000240200228028c012206450d00200641306c450d00200510290b0240024002400240200141e0006a2d00000e03010200010b20024180016a200d41f1006a290000370300200241f8006a200d41e9006a290000370300200241f0006a200d41e1006a2900003703002002200d41d9006a29000037036841022106200241e8006a21050c020b20024180016a200d41f1006a290000370300200241f8006a200d41e9006a290000370300200241f0006a200d41e1006a2900003703002002200d41d9006a29000037036841002106200241e8006a21050c010b20024180016a200d41f1006a290000370300200241f8006a200d41e9006a290000370300200241f0006a200d41e1006a2900003703002002200d41d9006a29000037036841012106200241e8006a21050b200241196a200541186a290000370000200241116a200541106a290000370000200241096a200541086a290000370000200220063a000020022005290000370001200241296a200d4181016a290000370000200241316a200d4189016a290000370000200241396a200d4191016a290000370000200241c1006a200d4199016a290000370000200241c9006a200d41a1016a290000370000200241d1006a200d41a9016a290000370000200241d9006a200d41b1016a2900003700002002200d41f9006a2900003700210240024002400240200d2d00b9010e03010200010b200241d0016a41186a200d41d2016a290000370300200241d0016a41106a200d41ca016a290000370300200241d0016a41086a200d41c2016a2900003703002002200d41ba016a2900003703d00141022106200241d0016a21050c020b200241d0016a41186a200d41d2016a290000370300200241d0016a41106a200d41ca016a290000370300200241d0016a41086a200d41c2016a2900003703002002200d41ba016a2900003703d00141002106200241d0016a21050c010b200241d0016a41186a200d41d2016a290000370300200241d0016a41106a200d41ca016a290000370300200241d0016a41086a200d41c2016a2900003703002002200d41ba016a2900003703d001200241d0016a2105410121060b20024181016a200541186a290000370000200241f9006a200541106a290000370000200241f1006a200541086a290000370000200220063a00682002200529000037006920024191016a200d41e2016a29000037000020024199016a200d41ea016a290000370000200241a1016a200d41f2016a290000370000200241a9016a200d41fa016a290000370000200241b1016a200d4182026a290000370000200241b9016a200d418a026a290000370000200241c1016a200d4192026a2900003700002002200d41da016a29000037008901200241a0026a410c6a200441086a290200370200200241b4026a200441106a290200370200200241bc026a200441186a290200370200200241f0c2c98b063602a002200220042902003702a40220012802082105200241e0026a2001410c6a10b504200241c8026a410c6a200241e0026a41086a280200360200200220053602c802200220022903e0023702cc022002200141186a2802003602d802200241d0016a200241a0026a200241c8026a10b6042002280290022205450d0502402002280294022201450d00200141306c450d00200510290b41042105200d280200200e280200470d062002200e200410920641ff017122054106470d06200241e8006a200e200410920641ff017122054106470d064103210520022d0000220141024b0d0620024101722104200241e8006a41017221060240024002400240024002400240024020010e03000102000b20022d0068417f6a220141014b0d0d20010e020802080b20022d0068220141024b0d0c20010e03020c04020b20022d0068220141014b0d0b20010e020204020b20042006412010e7070d0a0c060b20062004412010e7070d090c050b20062004412010e7070d080c040b20042006412010e7070d070c030b20042006412010e707450d020c060b41808e0421090c060b20042006412010e7070d040b0240200f42ffffff3f83500d00200a10290b200742ffffff3f83500d00200c10290b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a4200370300200041316a2002280068360000200041346a200241eb006a2800003600000c050b2006200541d0c9c7001036000b410521050b200541107441800e7221090b200020093b0001200041013a0000200041036a20094110763a0000200f42ffffff3f83500d00200a10290b200742ffffff3f83500d00200c10290b200241f0026a24000bfb1703057f037e037f23004190056b22022400024002402001280200410b460d00200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200241a8026a410c6a200141f0016a290200370200200241bc026a200141f8016a290200370200200241c4026a20014180026a290200370200200241e7e485f3063602a8022002200141e8016a22032902003702ac0220014188026a2802002104200241386a2001418c026a10b504200241a0016a410c6a200241c0006a280200360200200220043602a001200220022903383702a401200220014198026a2802003602b00120024190036a200241a8026a200241a0016a10b604024020022802d00322050d00200041800e3b0001200041013a0000200041036a41023a00000c010b024020022802d4032206450d00200641306c450d00200510290b20012903082107200141186a2903002108200141106a290300210920024188026a41186a200341186a29000037030020024188026a41106a200341106a29000037030020024188026a41086a200341086a29000037030020022003290000370388020240024020094201520d00200241a8026a410c6a2001412c6a290200370200200241a8026a41146a200141346a290200370200200241a8026a411c6a2001413c6a290200370200200241a8026a412c6a200141cc006a290200370200200241a8026a41346a200141d4006a290200370200200241a8026a413c6a200141dc006a290200370200200241a8026a41c4006a200141e4006a290200370200200241a8026a41cc006a200141ec006a290200370200200241a8026a41d4006a200141f4006a290200370200200241a8026a41dc006a200141fc006a2902003702002002200141246a2902003702ac022002200141206a2802003602a8022002200141c4006a2902003702cc0220024190036a410c6a20014190016a29020037020020024190036a41146a20014198016a29020037020020024190036a411c6a200141a0016a290200370200200220014188016a29020037029403200220014184016a280200360290034101210520024190036a2103200241a8026a21060c010b200241a8026a410c6a2001412c6a290200370200200241a8026a41146a200141346a290200370200200241a8026a411c6a2001413c6a290200370200200241a8026a412c6a200141cc006a290200370200200241a8026a41346a200141d4006a290200370200200241a8026a413c6a200141dc006a290200370200200241a8026a41c4006a200141e4006a290200370200200241a8026a41cc006a200141ec006a290200370200200241a8026a41d4006a200141f4006a290200370200200241a8026a41dc006a200141fc006a2902003702002002200141246a2902003702ac022002200141206a2802003602a8022002200141c4006a2902003702cc0220024190036a410c6a20014190016a29020037020020024190036a41146a20014198016a29020037020020024190036a411c6a200141a0016a290200370200200220014188016a29020037029403200220014184016a280200360290034100210520024190036a2103200241a8026a21060b200341dc006a200141e0016a290200370200200341d4006a200141d8016a290200370200200341cc006a200141d0016a290200370200200341c4006a200141c8016a2902003702002003413c6a200141c0016a290200370200200341346a200141b8016a2902003702002003412c6a200141b0016a2902003702002003200141a8016a290200370224200241186a41086a220a20024188026a41086a290300370300200241186a41106a220b20024188026a41106a290300370300200241186a41186a220c20024188026a41186a2903003703002002200229038802370318200241a0016a200641e40010e4071a200241386a200341e40010e4071a0240024002402005450d00200220083703900320024190036a41086a200241a0016a41e40010e4072101200241fc036a200241386a41e40010e4072103200241f8046a200c29030037030020024190036a41e0016a200b29030037030020024190036a41d8016a200a290300370300200220022903183703e004024020024190036a410c6a20024180046a412010e7070d0020022802980320022802fc03460d020b200241cc026a200141206a280200360200200241c4026a200141186a290200370200200241bc026a200141106a290200370200200241a8026a410c6a200141086a290200370200200241013602a802200220012902003702ac0220024100360288052002420137038005200220073703980220022008370388022002200241a8026a3602900220024188026a20024180056a10b704200241bc036a2002350288054220862002280280052205ad84200241e0046a2206101221010240200228028405450d00200510290b20014101470d01200241cc026a200341206a280200360200200241c4026a200341186a290200370200200241bc026a200341106a290200370200200241b4026a200341086a290200370200200241013602a802200220032902003702ac02200229039003210820024100360288052002420137038005200220073703980220022008370388022002200241a8026a3602900220024188026a20024180056a10b704200241a0046a2002350288054220862002280280052203ad842006101221010240200228028405450d00200310290b20014101470d010c020b200220083703900320024190036a41086a200241a0016a41e40010e4072101200241fc036a200241386a41e40010e4072103200241f8046a200c29030037030020024190036a41e0016a200b29030037030020024190036a41d8016a200a290300370300200220022903183703e004024020024190036a410c6a20024180046a412010e7070d0020022802980320022802fc03460d010b200241cc026a200141206a280200360200200241c4026a200141186a290200370200200241bc026a200141106a290200370200200241a8026a410c6a200141086a290200370200200241003602a802200220012902003702ac0220024100360288052002420137038005200220073703980220022008370388022002200241a8026a3602900220024188026a20024180056a10b704200241bc036a2002350288054220862002280280052205ad84200241e0046a2206101221010240200228028405450d00200510290b20014101470d00200241cc026a200341206a280200360200200241c4026a200341186a290200370200200241bc026a200341106a290200370200200241b4026a200341086a290200370200200241003602a802200220032902003702ac02200229039003210820024100360288052002420137038005200220073703980220022008370388022002200241a8026a3602900220024188026a20024180056a10b704200241a0046a2002350288054220862002280280052203ad842006101221010240200228028405450d00200310290b20014101460d010b200041800e3b0001200041013a0000200041036a41013a00000c010b0240024020074200520d0020024190036a420010b8042002200228029003220520022802980310fc0141002103200228020421062002280200210102402002280294030d000c020b200510290c010b20024190036a2007427f7c10b804200241106a200228029003220320022802980310fc0120022802142105200228021021010240200228029403450d00200310290b41012103024020014101460d00200041800e3b0001200041013a0000200041036a41033a00000c020b20024190036a200710b804200241086a200228029003220a20022802980310fc01200228020c210620022802082101200228029403450d00200a10290b024020014101460d00200041800e3b0001200041013a0000200041036a41033a00000c010b0240200420064b0d000240200420054d410220031b22014102460d0020014101710d010b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200041800e3b0001200041013a0000200041036a41043a00000b20024190056a24000bd30402057f027e230041f0006b220324000240024020022802004118470d00200241086a2d00004104470d00200341c8006a2001109c04200341306a200328024822042003280250109d04200341d8006a41086a2003413b6a290000370300200341d8006a41106a2205200341c3006a2f00003b0100200320032900333703584101210120032d0032210620032d003121070240024020032d00304101460d00410021010c010b200341186a41106a20052f01003b0100200341186a41086a200341d8006a41086a290300370300200320032903583703180b0240200328024c450d00200410290b02402001450d00200341106a200341186a41106a2f010022013b0100200341086a200341186a41086a29030022083703002003200329031822093703002003413a6a2008370100200341c2006a20013b0100200320063a0031200320073a003020032009370132200341d8006a200341306a109904200328025822042003280260109a0441ff017121010240200328025c450d00200410290b20014102460d010240200241146a280200220441c40141c701200141017122011b470d00200228020c220241b584cc0041f985cc0020011b2201460d0220022001200410e707450d020b200041800e3b0001200041013a0000200041036a41033a00000c020b200041800e3b0001200041013a0000200041036a41013a00000c010b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000b200341f0006a24000b8f1804057f017e077f017e230041f0006b2202240020012802202103200241086a41186a4200370300200241086a41106a22044200370300200241086a41086a220542003703002002420037030841b1dcc900ad4280808080f000841001220629000021072005200641086a290000370300200220073703082006102941b8dcc900ad4280808080a00184100122062900002107200241e0006a41086a2208200641086a2900003703002002200737036020061029200420022903602207370300200241c0006a41086a2005290300370300200241c0006a41106a2007370300200241c0006a41186a200829030037030020022002290308370340200241086a200241c0006a108d0220022802082205410120051b2106024002400240024002400240024002402003200229020c420020051b2207422088a7490d00200742ffffff3f83500d01200610290c010b2003200620034105746a10930621030240200742ffffff3f83500d00200610290b20030d010b200241086a41186a22054200370300200241086a41106a22064200370300200241086a41086a220342003703002002420037030841b1dcc900ad4280808080f000841001220829000021072003200841086a2900003703002002200737030820081029418886ca00ad4280808080c00184100122082900002107200241e0006a41086a2209200841086a290000370300200220073703602008102920042002290360370000200441086a22082009290300370000200241c0006a41086a220a2003290300370300200241c0006a41106a220b2006290300370300200241c0006a41186a220c2005290300370300200220022903083703402002200241c0006a412010fc01200128021c2002280204410020022802001b220d470d012005420037030020064200370300200342003703002002420037030841c6b7c700ad42808080808001841001220e29000021072003200e41086a29000037030020022007370308200e102941dcb7c700ad4280808080c000841001220e29000021072009200e41086a29000037030020022007370360200e10292004200229036037000020082009290300370000200a2003290300370300200b2006290300370300200c200529030037030020022002290308370340200241086a200241c0006a109e0320022802082204410120041b210c2001280224200229020c420020041b2207422088a72205470d0202402001280220220620054f0d00200c20064105746a220e0d040b20004180083b0001200041013a0000200041036a41003a00000c040b20004180063b0001200041013a0000200041036a41003a00000c040b20004180063b0001200041013a0000200041036a41003a00000c030b200041800e3b0001200041013a0000200041036a410a3a00000c010b2002410036021020024201370308200128020021030240410410272204450d002002410436020c2002200436020820042003360000200241043602102001280204210a2001410c6a2802002204200241086a1071024002400240200228020c2209200228021022036b2004490d00200228020821080c010b200320046a22082003490d012009410174220b2008200b20084b1b220b4100480d010240024020090d000240200b0d00410121080c020b200b102722080d010c040b200228020821082009200b460d0020082009200b102b2208450d030b2002200b36020c200220083602080b200820036a200a200410e4071a2002200320046a360210200141106a2802002103200141186a2802002204200241086a10710240024020040d00200228020c210920022802102104200d210b0c010b20032004410c6c6a210b03402003280200210a200341086a2802002204200241086a107102400240200228020c2206200228021022056b2004490d0020022802082108200621090c010b200520046a22082005490d03200641017422092008200920084b1b22094100480d030240024020060d00024020090d00410121080c020b200910272208450d060c010b2002280208210820062009460d00200820062009102b2208450d050b2002200936020c200220083602080b200820056a200a200410e4071a2002200520046a22043602102003410c6a2203200b470d000b2001280224210520012802202106200128021c210b0b02400240200920046b4104490d00200441046a2103200228020821082009210a0c010b200441046a22032004490d01200941017422082003200820034b1b220a4100480d010240024020090d000240200a0d00410121080c020b200a10272208450d040c010b200228020821082009200a460d0020082009200a102b2208450d030b2002200a36020c200220083602080b200820046a200b360000200220033602100240200a20036b41034b0d00200341046a22042003490d01200a41017422092004200920044b1b22044100480d0102400240200a0d00024020040d00410121080c020b200410272208450d040c010b200a2004460d002008200a2004102b2208450d030b2002200436020c200220083602080b200820036a20063600002002200341046a220636021002400240200228020c220920066b4104490d0020022802082104200921080c010b200641046a22042006490d01200941017422082004200820044b1b22084100480d010240024020090d00024020080d00410121040c020b200810272204450d040c010b2002280208210420092008460d00200420092008102b2204450d030b2002200836020c200220043602080b200420066a2005360000200141286a200341086aad4220862004ad84200e1017210302402008450d00200410290b0240024020034101470d00200241086a41086a427f3703002002413c6a4108360200200241286a4200370300200241206a4280808080c0003703002002427f370308200241c6b7c700360238200241013a003020024204370318411010272204450d0120024210370244200220043602404108200241c0006a10710240024020022802442208200228024822066b4108490d00200641086a210420022802402103200821050c010b200641086a22042006490d03200841017422032004200320044b1b22054100480d030240024020080d00024020050d00410121030c020b200510272203450d060c010b2002280240210320082005460d00200320082005102b2203450d050b20022005360244200220033602400b200320066a42c9dabdf2c6ad9ab7e500370000200220043602480240200520046b41034b0d00200441046a22062004490d03200541017422082006200820064b1b22064100480d030240024020050d00024020060d00410121030c020b200610272203450d060c010b20052006460d00200320052006102b2203450d050b20022006360244200220033602400b200320046a200d3600002002200441046a2203360248024002402002280244220920036b4120490d00200441246a210820022802402105200921060c010b200341206a22082003490d03200941017422042008200420084b1b22064100480d030240024020090d00024020060d00410121050c020b200610272205450d060c010b2002280240210520092006460d00200520092006102b2205450d050b20022006360244200220053602400b200241316a2109200520036a2204200e290000370000200441186a200e41186a290000370000200441106a200e41106a290000370000200441086a200e41086a2900003700000240200228022c22042002280228470d00200241246a20044101109d01200228022c21040b20022802242004410c6c6a220420083602082004200636020420042005360200200241c0006a41086a2204200241086a41186a2903003703002002200228022c41016a36022c200241c0006a41106a2203200241086a41206a29030037030020022002290318370340200220092900003703602002200941076a2900003700672002290308210f200041106a42b009370300200041086a200f370300200041306a41013a0000200041186a2002290340370300200041206a2004290300370300200041286a2003290300370300200041003a0000200041316a2002280260360000200041346a2002280063360000200742ffffff3f83500d05200c10290c050b20004180083b0001200041013a0000200041036a41003a00000c030b1039000b1032000b1030000b200742ffffff3f83500d00200c10290b200241f0006a24000ba50d02077f027e23004180016b2202240002400240024002400240024002400240024020012d0000417f6a220341024b0d0002400240024020030e03000301000b412010272203450d0520032001290001370000200341186a200141196a290000370000200341106a200141116a290000370000200341086a200141096a290000370000200241d8006a200341201096042003102941002104200241286a200141216a2002280258220320022802604180a6cc004100109704200241c0006a41086a200241336a290000370300200241c0006a41106a2002413b6a2f00003b01002002200229002b37034020022d002a210520022d0029210620022d002821010240200228025c450d00200310290b0c010b412010272203450d0420032001290001370000200341186a200141196a290000370000200341106a200141116a290000370000200341086a200141096a290000370000200241d8006a2003412010960420031029200241286a200141216a200228025822072002280260200141e4006a2203280200200141ec006a2201280200109704200241c0006a41086a200241336a290000370300200241c0006a41106a2002413b6a2f00003b01002002200229002b370340200128020021082003280200210420022d002a210520022d0029210620022d00282101200228025c450d00200710290b200241106a41106a200241c0006a41106a2f010022033b0100200241106a41086a200241c0006a41086a290300220937030020022002290340220a370310200241286a41106a220720033b0100200241286a41086a220320093703002002200a370328200141ff01714101470d04200241ca006a2003290300370100200241d2006a20072f01003b0100200220053a0041200220063a004020022002290328370142200241286a200241c0006a109804200241086a2002280228220320022802304180a6cc004100410010c701200228020821010240200228022c450d00200310290b20014101470d05200241286a41106a200241c0006a41106a280200360200200241286a41086a200241c0006a41086a29030037030020022002290340370328200241d8006a200241286a109904200228025822032002280260109a0441ff017121010240200228025c450d00200310290b20014102460d0102402004450d0041c40141c701200141017122011b2008470d0041b584cc0041f985cc0020011b22012004460d0320012004200810e707450d030b200041800e3b0001200041013a0000200041036a41033a00000c080b200041003b0001200041013a0000200041036a41003a00000c070b2004450d00200041800e3b0001200041013a0000200041036a41033a00000c060b410c10272206450d04200241286a41106a200241c0006a41106a280200360200200241286a41086a200241c0006a41086a29030037030020022002290340370328410a10272201450d002002420a37025c200220013602584106200241d8006a107102400240200228025c2204200228026022076b4106490d00200741066a210120022802582103200421050c010b200741066a22012007490d04200441017422032001200320014b1b22054100480d040240024020040d00024020050d00410121030c020b2005102722030d010c070b2002280258210320042005460d00200320042005102b2203450d060b2002200536025c200220033602580b200320076a220741002800dcf043360000200741046a41002f00e0f0433b00002002200136026002400240200520016b4114490d00200141146a21070c010b200141146a22072001490d04200541017422042007200420074b1b22044100480d040240024020050d00024020040d00410121030c020b200410272203450d070c010b20052004460d00200320052004102b2203450d060b2002200436025c200220033602580b200320016a22012002290328370000200141106a200241286a41106a280200360000200141086a200241286a41086a290300370000200241f0006a41086a2007360200200220022903582209370370200641086a200736020020062009370200200041306a41013a0000200041286a428180808010370200200041246a2006360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a42e400370300200041003a0000200041316a2002280058360000200041346a200241db006a2800003600000c050b1039000b200041800e3b0001200041013a0000200041036a41003a00000c030b200041800e3b0001200041013a0000200041036a41013a00000c020b1032000b1030000b20024180016a24000ba50404047f017e017f027e23004180016b22012400200141286a41186a4200370300200141286a41106a22024200370300200141286a41086a220342003703002001420037032841b3e6ca00ad4280808080e000841001220429000021052003200441086a290000370300200120053703282004102941b4a0cb00ad4280808080b00184100122042900002105200141c8006a41086a2206200441086a2900003703002001200537034820041029200220012903482205370300200141086a41086a2003290300370300200141086a41106a2005370300200141086a41186a2006290300370300200120012903283703082001412036025c2001200141086a360258200141e0006a200141086aad42808080808004841007108b0202400240200128026022030d00420021070c010b2001280264210402400240200141e0006a41086a28020022024108490d002003290000210520024178714108460d0020032900082108420121070c010b20014100360250200142013703482001410d3602742001200141d8006a3602702001200141c8006a36027c2001413c6a41013602002001420137022c200141f4eaca003602282001200141f0006a360238200141fc006a41a8a3c800200141286a10371a200135025042208620013502488410080240200128024c450d00200128024810290b420021070b2004450d00200310290b200020084200200742005222031b37030820002005420020031b37030020014180016a24000bc20203047f017e017f230041d0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a220342003703002001420037032041b3e6ca00ad4280808080e000841001220429000021052003200441086a290000370300200120053703202004102941b4a0cb00ad4280808080b00184100122042900002105200141c0006a41086a2206200441086a2900003703002001200537034020041029200220012903402205370300200141086a2003290300370300200141106a2005370300200141186a200629030037030020012001290320370300200029030021050240410810272203450d002003200537000020002903082105200341084110102b2200450d00200020053700082001ad42808080808004842000ad4280808080800284100320001029200141d0006a24000f0b1030000bad0204017f017e017f027e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841007108b0202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004110490d00200141086a290000210520012900002106420121030c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b420021030b2004450d00200110290b2000200637030820002003370300200041106a2005370300200241d0006a24000bef3007017f017e017f027e017f027e1c7f23004180036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610e00720074188016a200729039801220d20074198016a41086a290300220e2005200610d5072002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610e007200741e8006a20072903782201200741f8006a41086a29030022032005200610d5074200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010d507200741c8006a20024200200a420010d507200741d8006a200a42002004420010d5070240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d00411010272209450d0d2007420437029c02200720093602980220074198026a41004104109801200741f0026a41086a220920072802a002220c41046a360200200728029802200c4102746a220c200a3e020c200c200a4220883e0208200c200b3e0204200c200b4220883e020020072007290398023703f002200741f0026a10c607200741a8016a41086a2009280200360200200720072903f0023703a80141101027220c450d0d2007420437029c022007200c3602980220074198026a41004104109801200920072802a002220c41046a360200200728029802200c4102746a220c20043e020c200c20044220883e0208200c20023e0204200c20024220883e020020072007290398023703f002200741f0026a10c607200741b8016a41086a2009280200360200200720072903f0023703b801411010272209450d0d2007420437029c02200720093602980220074198026a41004104109801200741f0026a41086a220c20072802a002220941046a36020020072802980220094102746a22092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020072007290398023703f002200741f0026a10c607200c280200211020072802f402211120072802f0022112200c200741b8016a41086a280200360200200720072903b8013703f00220074198026a41086a200741a8016a41086a280200360200200720072903a80137039802200741c8016a20074198026a200741f0026a10c807024020072802f40241ffffffff0371450d0020072802f00210290b200741c8016a10c60720104101460d0120072802cc01211320072802c80121142010450d0a2012280200450d0a024020072802d0012215450d002014280200450d0b201520104d0d0b200720103602d401201520106b221641016a22174101201741014b1b221841ffffffff03712018470d0320184102742219417f4c0d032019102d221a450d0e201041ffffffff03712010470d032010410274221b417f4c0d03201b102d221c450d0e4101210f410221092012280200220c67221d211e0240200c41ffffffff034b0d0041022109201d210c4101210f034020094101200c4101711b200f6c210f200c41034b211f200920096c2109200c410176221e210c201f0d000b0b200720153602f802200720133602f402200720143602f0024104211f41041027220c450d0f200c20094101201e4101461b200f6c220f360200200742818080801037029c022007200c36029802200741d8016a200741f0026a20074198026a10c807200c10290240201b450d00201b1027221f450d0f0b200741003602a0022007201b410276222036029c022007201f3602980220074198026a4100201010980120072802980220072802a00222094102746a2012201041027410e4071a200741f8026a200920106a36020020072007290398023703f002410410272209450d0f2009200f360200200742818080801037029c022007200936029802200741e8016a200741f0026a20074198026a10c80720091029024020072802d40120176a220920072802e001220c4d0d00200741003602a002200742043703980220074198026a41002009200c6b220c10980120072802a00221090240200c450d0020072802980220094102746a4100200c41027410e6071a2009200c6a21090b200741f0026a41086a220c200936020020072007290398023703f00220072802d801211f200741f0026a200920072802e001220f10980120072802f002200c28020022094102746a201f200f41027410e4071a200c2009200f6a220936020020074198026a41086a220c2009360200200720072903f00237039802024020072802dc0141ffffffff0371450d0020072802d80110290b200741d8016a41086a200c28020036020020072007290398023703d8010b20194102762121200741e8016a10c607024002400240024002400240024002400240024003402007201622223602f401024020072802e001220920072802d401220c20226a220f417f736a221f2009490d00201f200941cc8bcc001036000b0240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802f00122092009200c6b220c4d0d0120072802e801200c4102746a35020022024200510d02202220224100476b211620072802d8012209201f4102746a35020021012009200f4102746a3502002104200741003602f80120072004200142208684200280220137038002200741003602880220072004200120027e7d42ffffffff0f83370390022007200741f4016a3602ac022007200741d8016a3602a8022007200741d4016a3602a4022007200741e8016a3602a002200720074188026a36029c022007200741f8016a3602980220074198026a10c9071a034020072802880241016a41004c0d04024020072903900242ffffffff0f560d0020074198026a10c9070d010b0b200729038002210220072802f401210920072802d401210c200741003a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741b0026a200741f0026a10cc0720072802f001220941ffffffff03712009470d1c2009410274220c417f4c0d1c20072802e801210f02400240200c0d004104211f0c010b200c1027221f450d280b200741003602f8022007201f3602f0022007200c4102763602f402200741f0026a4100200910980120072802f00220072802f802221f4102746a200f200c10e4071a200741e0026a41086a2223201f20096a360200200720072903f0023703e002410810272209450d2820092002a72224360204200920024220883e020020074282808080203702f402200720093602f002200741c0026a200741e0026a200741f0026a10c8072009102920072802b802221920072802c8022225201920254b1b22144101201441014b1b220c41ffffffff0371200c470d1c200c4102742226417f4c0d1c20072802b402212720072802b00221280240024020260d00410421290c010b2026102d2229450d280b2014450d062025417f6a221b20254b211520072802c002212a2019417f6a221720194b0d04200c417f6a2109202920266a417c6a211e4100210f4200210203404100211f024020192017200f6b22134d0d004100211f201320174b0d00202820134102746a280200211f0b201fad21044100211f024020150d002025201b200f6b22134d0d002013201b4b0d00202a20134102746a280200211f0b024002402004201fad22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d09201e20043e0200201e417c6a211e2009417f6a2109200f41016a220f2014490d000c060b0b200f200941cc8bcc001036000b200c200941cc8bcc001036000b41b08bcc00411941b08acc001033000b41cc8ccc004118200741f0026a41e48ccc0041f48ccc00103a000b200c417f6a2109202920266a417c6a211f4100211e4200210203404100210f024020150d004100210f2025201b201e6b22134d0d004100210f2013201b4b0d00202a20134102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201f20043e0200201f417c6a211f2009417f6a2109201e41016a221e2014490d000b0b41012113200250450d010b410021130b0240202741ffffffff0371450d00202810290b20072802d401221f20072802f401220f6a2215201f490d05200f20154f0d01200f417f7321090340200c200c200f6a20096a221e4d0d03200920072802e00122146a220f20094f0d0420072802d801200f4102746a2029201e4102746a2802003602002009417f6a210920072802f401210f201f417f6a221f0d000c050b0b2009200c41dc8bcc001036000b201f450d020c030b20252019202520194b1b22074101200741014b1b200f6a20096a200c41cc8bcc001036000b200f201441dc8bcc001036000b200c200c2015417f7322096a200f6a220f4d0d0220072802e001220c20096a2209200c4f0d0320072802d80120094102746a2029200f4102746a28020036020020072802f401210f0b2018200f417f736a220920184f0d03201a20094102746a202436020002402013450d00201820072802f401417f736a220920184f0d05201a20094102746a22092009280200417f6a36020020072802f401210920072802d401210c200741003a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741d0026a200741f0026a10cc0720072802f001220941ffffffff03712009470d0f2009410274220c417f4c0d0f20072802e801210f02400240200c0d004104211f0c010b200c1027221f450d1b0b200741003602f8022007201f3602f0022007200c4102763602f402200741f0026a4100200910980120072802f00220072802f802221f4102746a200f200c10e4071a2023201f20096a360200200720072903f0023703e002200741f0026a200741e0026a200741d0026a10c707024020072802d401220920072802f40122146a220c2009490d00024002402014200c4f0d00200c417f73210920072802f002211320072802f802210f2014211f0340200f200f201f6a20096a221f4d0d0a200920072802e00122156a221e20094f0d0b20072802d801201e4102746a2013201f4102746a280200360200200941016a210920072802f401211f2014200c417f6a220c490d000c020b0b20090d0120072802f802210f2014211f0b201f2014417f7322096a220c200f6a221f200c4f0d0920072802e001220c20096a2209200c4f0d0a20072802d80120094102746a20072802f002201f4102746a2802003602000b024020072802f40241ffffffff0371450d0020072802f00210290b20072802d40241ffffffff0371450d0020072802d00210290b02402026450d00202910290b024020072802c40241ffffffff0371450d0020072802c00210290b20220d000b0240201d0d0020072802e001211020072802dc01212020072802d801210f201c1029410021090c130b4101210920072802d401220c4101460d114100200c6b2114201d411f7121134100201d6b411f7121152010410274201c6a417c6a210c417f210903400240200920072802e001221f6a220f2009490d00200f201f41cc8bcc001036000b201f200f417f6a221e4d0d09201020096a221f20104f0d0a200c20072802d801221f201e4102746a280200201574201f200f4102746a28020020137672360200200c417c6a210c20142009417f6a2209460d110c000b0b200f200c41cc8bcc001036000b2009200c41dc8bcc001036000b2009201841dc8bcc001036000b2009201841cc8bcc001036000b201f200f41cc8bcc001036000b201e201541dc8bcc001036000b201f200f41cc8bcc001036000b2009200c41dc8bcc001036000b200f417f6a201f41cc8bcc001036000b201f201041dc8bcc001036000b4100410041bc8ccc001036000b200741286a200729035820032008200610e00720004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c0f0b20074198026a41086a200741c8016a41086a280200221f360200200720072903c80137039802201f4101201f41014b1b221e41ffffffff0371201e470d00201e410274221b417f4c0d0002400240201b0d00410421170c010b201b102d2217450d0c0b201f450d022017201e410274201f4102746b6a210c201f417f6a2114201e201f6b2113200f4101200f41014b1bad21024200210441002109200728029802210f0340201e201320096a22154d0d02200c2004422086200f35020084220420028022013e020020142009460d03200c41046a210c200f41046a210f2004200120027e7d2104201f200941016a22094b0d000b2009201f41cc8bcc001036000b1038000b2015201e41dc8bcc001036000b2007201e3602f8022007201b4102763602f402200720173602f002200728029c0241ffffffff0371450d0720072802980210290c070b20072802d40121090b20072802e001220c200c20096b220f4d0d012010201020096b22094d0d02201c20094102746a20072802d801200f4102746a280200201d411f717636020041012109201c210f0b024020072802ec0141ffffffff0371450d0020072802e80110290b2009450d0320072802dc0141ffffffff0371450d0320072802d80110290c030b200f200c41cc8bcc001036000b2009201041dc8bcc001036000b4100211a0240201341ffffffff0371450d00201410290b0b410410272209450d022009410036020041041027220c450d02200c41003602004101211e02400240201a0d002009211a4101212141012118200c210f41012120410121100c010b20091029200c10290b2007201836028002200720213602fc012007201a3602f801200720103602a0022007202036029c022007200f3602980220074198026a10c607420021020240024020072802a00222094105744180014d0d00421d21040c010b4100211e024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211f0240200c200f470d00201fad21040c010b200c41786a210f201fad2104200741206a211f4120210c420021020340200741186a200f20096a3502004200200c41e0007110ea07201f29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c0241ffffffff0371450d0020072802980210290b201e0d030240200420084201882006423f8684562002200642018822045620022004511b450d0020074188026a41086a200741f8016a41086a280200360200200720072903f80137038802411010272209450d022007420437029c02200720093602980220074198026a41004104109801200741f0026a41086a220920072802a002220c41046a360200200728029802200c4102746a220c428080808010370208200c420037020020072007290398023703f002200741f0026a10c60720074198026a41086a2009280200360200200720072903f00237039802200741f8016a20074188026a20074198026a10c707200728029c0241ffffffff0371450d0020072802980210290b200741f0026a41086a200741f8016a41086a280200360200200720072903f8013703f0020b200741f0026a10c60720074198026a41086a2209200741f0026a41086a280200360200200720072903f0023703980220074198026a10c6074200210202400240200928020022094105744180014d0d00421d21044101211e0c010b4100211e024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211f0240200c200f470d00201fad21040c010b200c41786a210f201fad2104200741106a211f4120210c420021020340200741086a200f20096a3502004200200c41e0007110ea07201f29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c0241ffffffff0371450d0020072802980210290b02400240201e450d00200041c88ecc00360204200041086a4119360200410121090c010b200041106a2002370300200041086a2004370300410021090b20002009360200201141ffffffff0371450d03201210290c030b1039000b1030000b200720043e029c022007419c8ccc003602980241f88dcc00412f20074198026a41a88ecc0041b88ecc00103a000b20074180036a24000bb10101027f024020002802082201450d0020002802002100200141246c210103400240024020002d0000220241044b0d0002400240024020020e050400010204040b2000410c6a280200450d03200041086a28020010290c030b2000410c6a280200450d02200041086a28020010290c020b2000410c6a280200450d01200041086a28020010290c010b200041086a280200450d00200041046a28020010290b200041246a21002001415c6a22010d000b0b0b800508017f017e047f017e017f017e037f017e23004180016b22022400200241186a2000200110810202402002290318a7450d00200241186a41106a290300210320022903202100200241d0006a41186a22044200370300200241d0006a41106a22054200370300200241d0006a41086a220642003703002002420037035041dcbec500ad42808080808001842201100122072900002108200241f0006a41086a2209200741086a29000037030020022008370370200710292006200929030037030020022002290370370350419fe3c200ad4280808080d00184220810012207290000210a2009200741086a2900003703002002200a3703702007102920052002290370220a370300200241306a41086a220b2006290300370300200241306a41106a220c200a370300200241306a41186a220d2009290300370300200220022903503703302002200241306a412010e301200241106a290300210a2002290308210e200228020021072004420037030020054200370300200642003703002002420037035020011001220429000021012009200441086a2900003703002002200137037020041029200620092903003703002002200229037037035020081001220429000021012009200441086a2900003703002002200137037020041029200520022903702201370300200b2006290300370300200c2001370300200d20092903003703002002200229035037033020024200200a420020071b220120037d200e420020071b2203200054ad7d2208200320007d2200200356200820015620082001511b22091b37035820024200200020091b370350200241306aad4280808080800484200241d0006aad428080808080028410030b20024180016a24000bb10503027f017e047f230041d0006b2202240041f5bec500ad4280808080800184100122032900002104200241086a41086a200341086a2900003703002002200437030820031029418cc1c200ad4280808080f00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bbd920110027f017e087f017e017f027e037f017e0a7f037e087f027e017f027e037f017e23004180116b22002400200041003602b810200042083703b010200041003602c810200042013703c01041eebec500ad4280808080f00084100122012900002102200041b8016a41086a2203200141086a290000370300200020023703b8012001102941b8dcc900ad4280808080a00184100122012900002102200041f00a6a41086a2204200141086a290000370300200020023703f00a20011029024002400240024002400240412010272201450d00200120002903b801370000200120002903f00a370010200141086a2003290300370000200141186a22052004290300370000412010272203450d0020032001290000370000200341186a2005290000370000200341106a200141106a290000370000200341086a200141086a290000370000200041e0076a41026a2204200041f00c6a41026a2d00003a0000200020002f00f00c3b01e007200041a8096a41106a42a0808080800437030041002106200041003a00c009200020013602b409200042a080808080043702ac09200020033602a809200041c3096a20042d00003a0000200020002f01e0073b00c109200041f00c6a200041a8096a10b6010240024002400240024020002802f00c4101470d00200041f00c6a410472210741012108410821094100210a0340200041b8036a41206a200741206a280200360200200041b8036a41186a2201200741186a2902002202370300200041b8036a41106a2205200741106a290200220b370300200041b8036a41086a220c200741086a290200220d37030020002007290200220e3703b803200041b8016a41186a220f2002370300200041b8016a41106a2210200b370300200041b8016a41086a2211200d3703002000200e3703b801200041f00c6a41186a22032001290300370300200041f00c6a41106a22042005290300370300200041f00c6a41086a2205200c290300370300200020002903b8033703f00c200041b8016a10e101210241201027220c450d02200c20002903b801370000200c41186a200f290300370000200c41106a2010290300370000200c41086a2011290300370000200041f00a6a41086a2005290300220b370300200041f00a6a41106a2004290300220d370300200041f00a6a41186a2003290300220e370300200020002903f00c22123703f00a2003200e3703002004200d3703002005200b370300200020123703f00c0240200a20002802b410470d00200041b0106a200a410110a80120002802b010210920002802b810210a0b2009200a41386c6a22012002370300200529030021022004290300210b2003290300210d20002903f00c210e2001412c6a4281808080103702002001200c3602282001200e370308200141206a200d370300200141186a200b370300200141106a20023703002000200a41016a220a3602b8102003200f2903003703002004201029030037030020052011290300370300200020002903b8013703f00c0240200620002802c410470d00200041c0106a20064101109e0120002802c010210820002802c81021060b200820064105746a220120002903f00c370000200141186a2003290300370000200141106a2004290300370000200141086a20052903003700002000200641016a22063602c810200041f00c6a200041a8096a10b60120002802f00c4101460d000b0b024020002802ac09450d0020002802a80910290b024020002802b809450d0020002802b40910290b41eebec500ad4280808080f00084100122012900002102200041b8016a41086a2203200141086a290000370300200020023703b8012001102941f5b7c000ad4280808080a00184100122012900002102200041f00a6a41086a2204200141086a290000370300200020023703f00a20011029412010272201450d04200120002903b801370000200120002903f00a370010200141086a2003290300370000200141186a22052004290300370000412010272203450d0420032001290000370000200341186a2005290000370000200341106a200141106a290000370000200341086a200141086a290000370000200041e0056a41026a2205200041f00c6a41026a2d00003a0000200020002f00f00c3b01e005200041f00c6a41106a220442a08080808004370300200041003a00880d200020013602fc0c200042a080808080043702f40c200020033602f00c2000418b0d6a20052d00003a0000200020002f01e0053b00890d200041b0106a200041f00c6a109702200041f00c6a41186a2206420037030020044200370300200041f00c6a41086a22014200370300200042003703f00c41eebec500ad4280808080f00084220210012205290000210b200041b8016a41086a2203200541086a2900003703002000200b3703b8012005102920012003290300370300200020002903b8013703f00c419cf3c100ad4280808080e001841001220c290000210b200041f00a6a41086a2205200c41086a2900003703002000200b3703f00a200c1029200420002903f00a220b370300200041b8036a41086a22072001290300370300200041b8036a41106a220a200b370300200041b8036a41186a220f2005290300370300200020002903f00c3703b803200041b0016a200041b8036a412010fc0120002802b401211320002802b0012114200642003703002004420037030020014200370300200042003703f00c20021001220c29000021022003200c41086a290000370300200020023703b801200c102920012003290300370300200020002903b8013703f00c41c4f3c100ad4280808080d002841001220329000021022005200341086a290000370300200020023703f00a20031029200420002903f00a220237030020072001290300370300200a2002370300200f2005290300370300200020002903f00c3703b803200041a8016a200041b8036a412010fc0120002802ac01210520002802a801210c20002802c010211520002802c410211620002802b010211720002802b410211820002802c810210120002802b8102119200041003602e807200041003602e007201920016aad42e0007e2202422088a70d052002a72203417f4c0d054108210402402003450d00200310272204450d050b20054104200c1b221a41014b211b200041003602b009200020043602a8092000200341e0006e3602ac09200041003602f80a200042083703f00a200041f00a6a410020014105742205410575108c0120002802f80a210902402001450d00200541606a410576211c20002802f00a200941d8006c6a210c200041a00d6a2103200041980d6a210841002104201521010340200041d0106a41186a2206200141186a2207290000370300200041d0106a41106a220a200141106a220f290000370300200041d0106a41086a2210200141086a2211290000370300200020012900003703d010200041b8036a41186a2007290000370300200041b8036a41106a200f290000370300200041b8036a41086a2011290000370300200020012900003703b803200041e0076a200041b8036a200410d702200041f00c6a41086a4200370300200041f00c6a41106a4200370300200041f00c6a41186a4200370300200041f00c6a41206a420037030020084200370300200341186a2006290300370300200341106a200a290300370300200341086a2010290300370300200320002903d010370300200042003703f00c200c200041f00c6a41d00010e407220c41d0006a41003a0000200c41d8006a210c200141206a2101200441016a2104200541606a22050d000b2009201c6a41016a21090b201a4101201b1b2101200020093602f80a0240201641ffffff3f71450d00201510290b200041b8016a41086a200041f00a6a41086a2802002203360200200020002903f00a3703b8010240024020032001490d00200041a8096a20002802b009201941386c220341386d10a70120002802a809210420002802b0092101200041840d6a200041b8016a3602002000201720036a3602fc0c200020173602f80c200020183602f40c200020173602f00c2000200041e0076a3602800d200041b8036a41086a20013602002000200041b0096a3602bc0320002004200141e0006c6a3602b803200041f00c6a200041b8036a10d8022013410020141b2218ad42307e2202422088a70d072002a72203417f4c0d0720002802c00121010240024020030d00410821080c010b200310272208450d070b200041003602f810200020083602f0102000200341306e3602f4102018412c6c2203417f4c0d070240024020030d00410421130c010b200310272213450d070b41002117200041003602a806200020183602a406200020133602a006410021142001201820012018491b221c0d010c040b024020002802bc012201450d00200141d8006c450d0020002802b80110290b024020002802b0092201450d00200141e0006c210320002802a80941346a21010340024020012802002204450d00200441c8006c450d002001417c6a28020010290b200141e0006a2101200341a07f6a22030d000b0b024020002802ac092201450d00200141e0006c450d0020002802a80910290b200041e0076a10d40102402019450d00201941386c21032017412c6a210103400240200128020041ffffff3f71450d002001417c6a28020010290b200141386a2101200341486a22030d000b0b410021082018450d02201841386c450d02201710290c040b200041f0056a41186a2116200041f0056a41106a211a200041f0056a41086a211b41002115034020002802b801210402402001450d00200141d8006c21032004210103400240200141d0006a2d00000d0002400240200141206a290300220b200141286a290300220d8450450d0042002102427f210b427f210d0c010b427f210220004198016a427f427f200b200d10e00720004198016a41086a290300210d200029039801210b0b2001200b3703002001200d370308200141106a2002370300200141186a20023703000b200141d8006a2101200341a87f6a22030d000b0b0240024020002802b0092201450d0020002802a8092205200141e0006c6a210a0340024020052802382201450d00200141c8006c2104200528023041206a2101034020002802c001220c200128020022034d0d04024020002802b801200341d8006c6a22032d00500d0020032903202202200341286a290300220b84500d00200041f00c6a2005290310200541186a2903002005290300200541086a2903002002200b10d202200320032903002202427f2002427f20002903f80c20002802f00c410146220c1b220d7c220b200b2002542206200341086a22072903002202427f200041f00c6a41106a290300200c1b220e7c2006ad7c220b200254200b2002511b220c1b200d200e845022061b37030020072002427f200b200c1b20061b3703000b200141c8006a2101200441b87f6a22040d000b0b200541e0006a2205200a470d000b20002802b80121040b201541016a211520002802c00141d8006c2101200441a87f6a210303402001450d05200141a87f6a2101200341d8006a2103200441d0006a2105200441d8006a220c210420052d00000d000b02402001450d00200341186a2903002102200341106a290300210b200341086a290300210d2003290300210e4100210403400240200c20046a220541d0006a2d00000d00200541086a2903002212200d200e200d200b20022005290300221d2012200541106a290300221e200541186a290300221f10d90241ff017141014622061b210d201d200e20061b210e201f200220061b2102201e200b20061b210b2005200320061b21030b2001200441d8006a2204470d000b2003450d050b200341013a0050024020002802b0092201450d0020002802a8092204200141e0006c6a21192003410c6a2110200341306a21110340200441e0006a2109024020042802382205450d0020042802302101200541c8006c210503400240024020102001460d00200141246a2011412010e7070d010b200441186a220c290300210e200341086a220629030021022004290310210d2003290300210b20032903102112200141186a200341186a2207290300370300200141106a20123703002001200242002002200e7d200b200d54ad7d2212200b200d7d221d200b56201220025620122002511b220a1b200d200e8450220f1b3703082001200b4200201d200a1b200f1b370300200629030021022007290300210b2003290300210d20042003290310370320200441286a200b3703002004200d370310200c20023703000b200141c8006a2101200541b87f6a22050d000b0b2009210420092019470d000b0b2016200341c8006a290000370300201a200341c0006a290000370300201b200341386a290000370300200020032900303703f005200341286a29030021022003290320210b0240201420002802f410470d00200041f0106a2014410110900120002802f010210820002802f81021140b2008201441306c6a220120002903f005370300201b290300210d201a290300210e201629030021122001200b370320200141286a2002370300200141186a2012370300200141106a200e370300200141086a200d3703002000201441016a22143602f8102015201c4f0d0420002802c00121010c010b0b2003200c418cf0c9001036000b1030000b0c010b024020002802b0092201450d0020002802a8092210200141e0006c6a2115201441306c2119200041c4036a221841186a2116201841106a211a201841086a211b4100211703402018201029003c3700002016201041d4006a290000370000201a201041cc006a290000370000201b201041c4006a290000370000200041003602c003200042023703b803024020102802382201450d002010280230220a200141c8006c6a2111201041106a2109410021074102210f0340200a220641246a2104200641c8006a210a410021052019210320082101024003402003450d01024020042001460d0020012004412010e707210c200541016a2105200341506a2103200141306a2101200c0d010b0b41ffff03210302402009200610da020d00410021032006290310201029032085200641186a290300201041286a29030085844200520d00200041f00c6a42ffff0342002006290300200641086a2903002009290300200941086a29030010d202427f20002903f80c20002802f00c41014622011b2202a7417f200242808004544100427f200041f00c6a41106a29030020011b501b1b21030b200041f00a6a41186a22042006413c6a290000370300200041f00a6a41106a2205200641346a290000370300200041f00a6a41086a220c2006412c6a290000370300200020062900243703f00a0240200720002802bc03470d00200041b8036a2007410110a60120002802b803210f20002802c00321070b200f200741226c6a220120002903f00a370100200c29030021022005290300210b2004290300210d200120033b0120200141186a200d370100200141106a200b370100200141086a20023701002000200741016a22073602c0030b200a2011470d000b0240024002402007450d002007417f200741808004491b210602400240200741226c22040d00410021030c010b200f41206a2101410021030340417f2003411074220320012f01004110746a220520052003491b4110762103200141226a21012004415e6a22040d000b0b200641ffff03712201450d012003417f73220a41ffff0371220320016e210c0240200120034b0d00200f41206a210141002103034020072003460d042001417f20012f01004110742204200c4110746a220520052004491b4110763b0100200141226a21012007200341016a2203470d000b0b0240200a200c20066c6b41ffff03712205450d00410021010340200f200120077041226c6a2203417f20032f01204110742203418080046a220420042003491b4110763b0120200141016a22012005490d000b0b200041f00c6a41286a2203200041b8036a41286a280200360200200041f00c6a41206a2204200041b8036a41206a290300370300200041f00c6a41186a2205200041b8036a41186a290300370300200041f00c6a41106a220c200041b8036a41106a290300370300200041f00c6a41086a2206200041b8036a41086a290300370300200020002903b8033703f00c0240201720002802a406470d00200041a0066a2017410110930120002802a006211320002802a80621170b20132017412c6c6a220120002903f00c370200200141286a2003280200360200200141206a2004290300370200200141186a2005290300370200200141106a200c290300370200200141086a20062903003702002000201741016a22173602a8060c030b20002802bc032201450d02200141226c450d02200f10290c020b41d0dbc900411941a0f1c9001033000b20032007419cf0c9001036000b201041e0006a22102015470d000b20002802a40621180b20002802f4102105024020002802bc012201450d00200141d8006c450d0020002802b80110290b024020002802b0092201450d00200141e0006c210320002802a80941346a21010340024020012802002204450d00200441c8006c450d002001417c6a28020010290b200141e0006a2101200341a07f6a22030d000b0b024020002802ac092201450d00200141e0006c450d0020002802a80910290b200041e0076a10d4010b024020080d00410321050c060b200041e0076a41186a220c4200370300200041e0076a41106a22204200370300200041e0076a41086a22014200370300200042003703e00741eebec500ad4280808080f00084220b1001220329000021022001200341086a290000370300200020023703e0072003102941c6b8c000ad4280808080a00284100122042900002102200041f0056a41086a2203200441086a290000370300200020023703f00520041029202020002903f0052202370300200041a0066a41086a22072001290300370300200041a0066a41106a220a2002370300200041a0066a41186a220f2003290300370300200020002903e0073703a006200041f00a6a200041a0066a108d0202400240024020002802f00a2206450d00200020002902f40a220d3702c405200020063602c005200c42003703002020420037030020014200370300200042003703e007200b1001220429000021022001200441086a290000370300200020023703e0072004102941d8b8c000ad4280808080a002841001220429000021022003200441086a290000370300200020023703f00520041029202020002903f005370000202041086a200329030037000020072001290300370300200a2020290300370300200f200c290300370300200020002903e0073703a006200041f00a6a200041a0066a108d02024020002802f00a2201450d00200020002902f40a3702d405200020013602d005200041003602f80a200042013703f00a200041f00a6a4100201441306c220441306d109e0120002802f80a212102402014450d0020002802f00a20214105746a2101200821030340200341086a2900002102200341106a290000210b2003290000210d200141186a200341186a290000370000200141106a200b370000200141086a20023700002001200d370000202141016a2121200141206a2101200341306a2103200441506a22040d000b0b200020213602f80a02402005450d00200541306c450d00200810290b20002802f40a212220002802f00a2123200041003602e807200042043703e007200041e0076a41002017412c6c2203412c6d10930120002802e007210420002802e80721012000201320036a3602fc0a200020133602f80a200020183602f40a200020133602f00a2000200041a0066a3602800b200041a8096a41086a20013602002000200041e0076a41086a3602ac09200020042001412c6c6a3602a809200041f00a6a200041a8096a10b802200041e0056a41086a20002802e8072201360200200020002903e00722023703e005200041f00a6a202320212002a722242001109a02200041b0106a41086a200041f00a6a41086a220a280200360200200020002903f00a3703b01010092203280000210420031029200441067022250d02410021260c030b200d42ffffff3f83500d00200610290b02402005450d00200541306c450d00200810290b02402017450d002017412c6c21032013210103400240200141046a2802002204450d00200441226c450d00200128020010290b2001412c6a2101200341546a22030d000b0b410521052018450d072018412c6c450d07201310290c070b41002126024003402001450d0120242001412c6c6a212742002128420021290240034002400240202441086a222a28020041306c22030d004200210b420021020c010b202428020041206a21014200210b420021020340427f2002200141086a2903007c200b20012903007c220d200b542204ad7c220b2004200b200254200b2002511b22041b2102427f200d20041b210b200141306a2101200341506a22030d000b0b2000200041b0106a3602e0074200212b4200212c02400240202a28020022014102490d002024280200210802400240200141306c22050d004200210e4200210d0c010b200841206a21014200210e200521034200210d0340427f200d200141086a2903007c200e20012903007c2212200e542204ad7c220e2004200e200d54200e200d511b22041b210d427f201220041b210e200141306a2101200341506a22030d000b0b2024410c6a2106200820056a21112008210f0240024002400240024002400240024003400240200f220c2011470d004100212d4108212e0c020b200c41306a210f200c41206a290300200c41286a29030084500d0020002802b0102207450d0020002802b41021100340200741086a210320072f010622094105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21090b2010450d022010417f6a2110200720094102746a41c8056a28020021070c010b0b0b200720044105746a220141f0026a2903002112200141e8026a290300211d41101027222e450d0f202e201d370300202e201237030820004281808080103702f40a2000202e3602f00a4101211902400340200f220c2011460d01200c41306a210f200c41206a290300200c41286a29030084500d0020002802e00722012802002207450d00200128020421100340200741086a210320072f010622094105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21090b2010450d022010417f6a2110200720094102746a41c8056a28020021070c010b0b200720044105746a220141f0026a2903002112200141e8026a290300211d0240201920002802f40a470d00200041f00a6a2019410110920120002802f00a212e0b202e20194104746a220120123703082001201d3703002000201941016a22193602f80a0c000b0b20002802f40a212d20190d010b200b212b2002212c0c010b20194104742203450d01202e2109024020194101460d00202e41106a2101200341706a2103202e21090340200920012009290300200129030056200941086a2903002212200141086a290300221d562012201d511b1b2109200141106a2101200341706a22030d000b2009450d020b20002802e007211803402008220c2011460d03200c41306a210820182802002219450d002019210720182802042217210f0340200741086a210320072f010622104105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21100b200f450d02200f417f6a210f200720104102746a41c8056a28020021070c010b0b0b200720044105746a220141f0026a2903002112200141e8026a290300211d024020082011460d0003402008220c41306a2108201921072017210f02400340200741086a210320072f010622104105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21100b200f450d02200f417f6a210f200720104102746a41c8056a28020021070c010b0b200720044105746a220141f0026a290300221e2012201d200141e8026a290300221f562012201e562012201e511b22011b2112201f201d20011b211d0b20082011470d000b0b427f4200200941086a290300221e20127d20092903002212201d54ad7d221f2012201d7d221d201256201f201e56201f201e511b22011b221242002002200d7d200b200e54ad7d220d200b200e7d220e200b56200d200256200d2002511b22031b7c4200201d20011b220d4200200e20031b7c220e200d542201ad7c220d2001200d201254200d2012511b22011b212c427f200e20011b212b0b202428020021010240202a280200220341306c2204450d00200120046a211c03402001210c024020002802e00722012802002207450d002001280204210f0340200741086a210320072f010622104105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21100b200f450d02200f417f6a210f200720104102746a41c8056a28020021070c010b0b200720044105746a220141e8026a220342002003290300220d200c29032022127d220e200e200d56200141f0026a2203290300220e200c41286a2903007d200d201254ad7d220d200e56200d200e511b22041b37030020034200200d20041b37030020014180036a222f2802002207450d00200141f8026a28020021014100210341002104034002400240024020062001460d0020012006412010e707450d0020030d01410021030c020b200341016a21030c010b200420036b220520074f0d07200041f00a6a41286a220f2001200341506c6a220541286a2210290300370300200041f00a6a41206a2211200541206a2208290300370300200041f00a6a41186a2209200541186a2219290300370300200041f00a6a41106a2217200541106a2218290300370300200a200541086a2215290300370300200020052903003703f00a200141086a2216290300210d200141106a221a290300210e200141186a221b2903002112200141206a2213290300211d200141286a2214290300211e200520012903003703002010201e3703002008201d370300201920123703002018200e3703002015200d3703002014200f29030037030020132011290300370300201b2009290300370300201a20172903003703002016200a290300370300200120002903f00a3703000b200141306a21012007200441016a2204470d000b2003450d00202f280200200720036b2201490d00202f20013602000b200c4200370320200c41286a4200370300200c41306a2201201c470d000b202a2802002103202428020021010b2000200041e0076a3602a8092000200041a8096a3602f00a20012003200041f00a6a410041202003676b10db02202a2802002215417f6a21182024280200220c201541306c22016a2109024020010d004200210d4200210e0c050b20002802e007221728020021194200210d410021084200210e200c2107034002402019450d00201728020421102019210f0340200f41086a2103200f2f010622114105742101410021040240024003402001450d0120072003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21110b2010450d022010417f6a2110200f20114102746a41c8056a280200210f0c010b0b200041e8006a200f20044105746a220141f0026a290300223042002008ad2212420010d50720004188016a200141e8026a290300221e42002012420010d507200041f8006a42004200201e420010d5074200427f20002903880120002903702000290380018442005220004188016a41086a2903002212200029036820002903787c7c221d2012547222011b2212200d7d221f201f201256427f201d20011b221d200e7d2012200d54ad7d2212201d562012201d511b22011b200b564200201220011b221220025620122002511b0d05427f200e20307c200d201e7c2212200d542201ad7c220d2001200d200e54200d200e511b22011b210e427f201220011b210d0b200841016a2108200741306a22072009470d000c050b0b41f8f1c900413041a8f2c9001057000b41b8f2c900413241ecf2c9001057000b200520074180bdc7001036000b41002008417f6a2201200120084b1b21180b201520184d0d01200041386a200c201841306c6a220141286a290300221e4200201841016a2211ad2212420010d507200041d8006a2001290320221d42002012420010d507200041c8006a42004200201d420010d5074200427f2002200e7c200b200d7c220d200b542201ad7c220b2001200b200254200b2002511b22011b2202427f200041d8006a41086a290300220b200029033820002903487c7c220e2000290340200029035084420052200e200b547222031b7d427f200d20011b220b427f200029035820031b220e54ad7d220d200b200e7d220e200b56200d200256200d2002511b22011b211f4200200e20011b213002400340200c2009460d012011417f6a2111024020002802e00722012802002207450d002001280204210f0340200741086a210320072f010622104105742101410021040240024003402001450d01200c2003412010e7072205450d02200141606a2101200441016a2104200341206a21032005417f4a0d000b2004417f6a21100b200f450d02200f417f6a210f200720104102746a41c8056a28020021070c010b0b200041286a2030201f2012420010e007200c41286a220f4200427f200041286a41086a2903002202201e7c2000290328220b201d7c220d200b542201ad7c220b2001200b200254200b2002511b22051b2202200720044105746a220141f0026a22032903007d427f200d20051b220b200141e8026a2204290300220e54ad7d220d200b200e7d220e200b56200d200256200d2002511b22051b220b370300200c4200200e20051b22023703202004427f2004290300220d20027c22022002200d54220520032903002202200b7c2005ad7c220b200254200b2002511b22051b3703002003427f200b20051b370300200041d0106a41186a2207200641186a290000370300200041d0106a41106a2210200641106a290000370300200041d0106a41086a2208200641086a290000370300200020062900003703d010200141f8026a2105200f2903002102200c290320210b024020014180036a22032802002204200141fc026a280200470d00200520044101109001200328020021040b2005280200200441306c6a220120002903d0103703002001200b370320200141186a2007290300370300200141106a2010290300370300200141086a2008290300370300200141286a20023703002003200328020041016a3602000b200c41306a210c20110d000b0b202d41ffffffff0071450d00202e10290b202c2029202b202856202c202956202c2029511b22011b2129202b202820011b21282024412c6a22242027460d020c010b0b2018201541fcf2c9001036000b0240202641016a222620254f0d002028202984500d0020002802e005212420002802e80521010c010b0b20002802e805210120002802e00521240c010b202641016a2126410021010b200020263602ec05200041e0056a10dc0220002802e405212a200041003602c810200042043703c010200041c0106a41002001412c6c2203412c6d109301202420036a211a20002802c810211502400240024020010d002024210f0c010b20002802c0102015412c6c6a2111200041a0066a41186a211b200041a0066a41106a2113200041a0066a41086a21142024210f0340200f2802082104200f2802042116200f2802002118201b200f41246a2902003703002013200f411c6a2902003703002014200f41146a2902003703002000200f29020c3703a006200f412c6a210f2018450d01200041f0056a41186a221c201b290300370300200041f0056a41106a222f2013290300370300200041f0056a41086a222e2014290300370300200020002903a0063703f0052018200441306c22036a21050240024020030d00420021024200210b0c010b201841206a2101420021024200210b0340200141086a290300200b7c2001290300220b20027c2202200b54ad7c210b200141306a2101200341506a22030d000b0b02400240024020052018460d00200441306c2103201821010340200141286a290300210d200141206a290300210e200041d0106a41186a220c200141186a290300370300200041d0106a41106a2206200141106a290300370300200041d0106a41086a2207200141086a290300370300200020012903003703d010200e200d2002200b10dd02220441ffff03710d02200141306a2101200341506a22030d000b0b4200210d410021014102211002402016450d00201641306c450d00201810294200210d0b4200211d410021050c010b200041e0076a41086a22052007290300370300200041e0076a41106a220a2006290300370300200041e0076a41186a2208200c290300370300200020002903d010220d3703a8092000200d3703e007412210272210450d04201020002903e007370100201020043b0120201041186a2008290300370100201041106a200a290300370100201041086a200529030037010020004281808080103702f410200020103602f0102004ad210d0240024020034130470d00200d42ffff0383210d4200211d410121050c010b200341a07f6a2117200d42ffff0383210e4200211d41012105410021040340200120046a220341d8006a290300210d200341d0006a2903002112200c200341c8006a2903003703002006200341c0006a2903003703002007200341386a2903003703002000200341306a2903003703d010024002402012200d2002200b10dd02220a41ffff03710d00200e210d20172004460d030c010b200041a8096a41086a2007290300220d370300200041a8096a41106a20062903002212370300200041a8096a41186a200c290300221e370300200020002903d010221f3703a809200041f00a6a41186a2208201e370300200041f00a6a41106a22092012370300200041f00a6a41086a2219200d3703002000201f3703f00a200e200aad42ffff03837c220d200e54ad210e0240200520002802f410470d00200041f0106a2005410110a60120002802f01021100b201d200e7c211d2010200541226c6a220320002903f00a3701002019290300210e200929030021122008290300211e2003200a3b0120200341186a201e370100200341106a2012370100200341086a200e3701002000200541016a22053602f81020172004460d020b200441306a2104200d210e0c000b0b02402016450d00201641306c450d00201810290b20002802f41021010b0240024042ffff03200d7d220b42ffff03564200201d200d42ffff0356ad7c7d220242005220025022031b4101470d00200d4281807c7c2202200d56201d200d42ffff0354ad7d220b201d56200d42feff03561b0d012005450d01200541226c20106a417e6a2203410020032f010041107422032002a7417f200242808004544100200b501b1b4110746b2204200420034b1b4110763b01000c010b2005450d00200541226c20106a417e6a2204417f20042f01004110742204200ba7417f200b4280800454410020031b1b4110746a220320032004491b4110763b01000b200041f00a6a41186a2203201c290300370300200041f00a6a41106a2204202f290300370300200041f00a6a41086a220c202e290300370300200020002903f0053703f00a201120013602042011200536020820112010360200201120002903f00a37020c201141146a200c2903003702002011411c6a2004290300370200201141246a2003290300370200201541016a21152011412c6a2111200f201a470d000b200020153602c8100c010b200020153602c810200f201a460d000340200f2201412c6a210f0240200141046a2802002203450d00200341306c450d00200128020010290b201a200f470d000b0b0240202a450d00202a412c6c450d00202410290b2015ad422c7e2202422088a70d012002a72201417f4c0d0120002802c410211720002802c01021090240024020010d00410421030c010b200110272203450d010b200041003602e807200020033602e00720002001412c6e3602e407200041e0076a4100201510930120002802e80721010240024020150d0020002802e00721080c010b20092015412c6c6a211120002802e00722082001412c6c6a210620012015410274417c6a4102766a2119200041fc0a6a2107200041d0106a41186a210a200041d0106a41106a210f200041d0106a41086a21102009210c0340200a200c41246a290200370300200f200c411c6a2902003703002010200c41146a2902003703002000200c29020c3703d010200c2802082203ad42227e2202422088a70d032002a72204417f4c0d03200c28020021010240024020040d00410221050c010b200410272205450d030b200c412c6a210c200041003602b009200020053602a8092000200441226e3602ac09200041a8096a4100200310a60120002802b009210402402003450d00200341226c210520002802a809200441226c6a21030340200141086a2901002102200141106a290100210b200141186a290100210d2001290100210e200341206a200141206a2f01003b0100200341186a200d370100200341106a200b370100200341086a20023701002003200e370100200341226a2103200441016a2104200141226a21012005415e6a22050d000b0b200041f00a6a41086a22012004360200200020002903a80922023703f00a200741186a200a290300370200200741106a200f290300370200200741086a2010290300370200200720002903d010370200200641286a200041f00a6a41286a280200360200200641206a200041f00a6a41206a290300370200200641186a200041f00a6a41186a290300370200200641106a200041f00a6a41106a290300370200200641086a2001290300370200200620023702002006412c6a2106200c2011470d000b201941016a21010b20002802e407210441002103200041003602e807200042043703e007200041e0076a41002001412c6c2205412c6d10930120002802e007210c20002802e80721012000200820056a3602fc0a200020083602f80a200020043602f40a200020083602f00a2000200041a0066a3602800b200041a8096a41086a20013602002000200041e0076a41086a3602ac092000200c2001412c6c6a3602a809200041f00a6a200041a8096a10b80220002802e4072111200041f00a6a2023202120002802e007221920002802e8072208109a0220002802f80a211020002802f40a210a02400240024020002802f00a220f450d000240200a450d00200a2101200f2103034020032802c80521032001417f6a22010d000b200f2101200a21040340200120012f01064102746a41c8056a28020021012004417f6a22040d000b200041f00a6a21040c020b200041f00a6a2104200f2103200f21010c010b200041003602f40a200041f00a6a21040c010b200020013602f40a200041fc0a6a20012f0106360200200041003602f80a200041003602f00a0b200041a8096a41086a200441086a290200220237030020002004290200220b3703a809200041f00a6a41186a20023703004200211d200042003703f80a200020033602f40a200041003602f00a2000200b3703800b200020103602900b0240024020100d00427f211e4200210d4200211f4200210e427f21120c010b20002010417f6a3602900b200041f00a6a410020031b220c2802002104200c28020821060240024002400240200c28020c2205200c28020422012f01064f0d00200121030c010b034020012802002203450d02200441016a210420012f0104210520032101200520032f01064f0d000b0b2005ad4220862006ad8421020c010b2006ad2102410021030b2002422088a7220641016a21052002a721070240024020040d00200321010c010b200320054102746a41c8056a2802002101410021052004417f6a2204450d00034020012802c80521012004417f6a22040d000b0b200c200536020c200c2007360208200c2001360204200c4100360200200320064105746a41e8026a2101427f211e427f21124200211f4200210e4200211d4200210d0340200041086a200141086a290300220242002001290300220b420010d507200041186a200b4200200b420010d507427f200d427f200041186a41086a29030022302000290308222c202c7c7c222c20022000290310222984202984420052202c2030547222011b7c201d427f200029031820011b7c2230201d542201ad7c221d2001201d200d54201d200d511b22011b210d427f203020011b211d20022012200b201e54200220125420022012511b22011b2112200b201e20011b211e427f200e20027c201f200b7c220b201f542201ad7c220220012002200e542002200e511b22011b210e427f200b20011b211f20002802900b2201450d0120002001417f6a3602900b200041f00a6a410020002802f40a1b220c2802002104200c2802082106024002400240200c28020c2205200c28020422012f01064f0d00200121030c010b0240034020012802002203450d01200441016a210420012f0104210520032101200520032f0106490d020c000b0b2006ad2102410021030c010b2005ad4220862006ad8421020b2002422088a7220641016a21052002a721070240024020040d00200321010c010b200320054102746a41c8056a2802002101410021052004417f6a2204450d00034020012802c80521012004417f6a22040d000b0b200c200536020c200c2007360208200c2001360204200c4100360200200320064105746a41e8026a21010c000b0b20004198066a200d370300200041f0056a41186a200e3703002000201d370390062000201f370380062000201e3703f005200020123703f80502400240200f0d0041002110200041840b6a4100360200200041003602f40a0c010b02400240200a0d00200f21010c010b200a2101200f2103034020032802c80521032001417f6a22010d000b200f21010340200120012f01064102746a41c8056a2802002101200a417f6a220a0d000b2003210f0b2000418c0b6a20012f0106360200200041880b6a4100360200200041840b6a2001360200200041003602800b200042003703f80a2000200f3602f40a200041003602f00a0b200020103602900b200041f00a6a10b90202402008450d002008412c6c21032019210103400240200141046a2802002204450d00200441306c450d00200128020010290b2001412c6a2101200341546a22030d000b0b02402011450d002011412c6c450d00201910290b200020153602d810200020173602d410200020093602d010200041f00a6a200041d0106a200041d0056a200041c0056a10880220002d00f00a4101460d02200041a8096a41026a200041f00a6a41047241c00110e4071a200041e0076a200041a8096a41c20110e4071a200041a0066a200041e0076a41026a41c00110e4071a202120216a22012021490d012001417f4c0d010240024020010d00410221070c010b200110272207450d010b200041003602e807200020073602e007200020014101763602e40702402021450d00202320214105746a211120002802c805220a410574210f20002802c0052110410021062023210c0340200c41086a2900002102200c41106a290000210b200c290000210d200041f00a6a41186a200c41186a290000370300200041f00a6a41106a200b370300200041f00a6a41086a20023703002000200d3703f00a200a450d05200c41206a210c41002103200f21042010210102400340200041f00a6a2001460d0120032001200041f00a6a412010e70722054100476a21032005450d01200141206a2101200441606a22040d000c070b0b200341ffff034b0d050240200620002802e407470d00200041e0076a2006410110a90120002802e007210720002802e80721060b200720064101746a20033b01002000200641016a22063602e807200c2011470d000b0b0240202241ffffff3f71450d00202310290b20002802d805210620002802c8052107024041002802d8a74c4103490d00200041b4096a4111360200200041013602ac092000200041f0056a3602b0092000200041ec056a3602a80941002802888040210141002802848040210341002802dca74c2104200041b00b6a41fc01360200200041a80b6a42e980808010370300200041a40b6a41e4c1c2003602002000419c0b6a4221370200200041980b6a41c3c1c200360200200041900b6a4202370300200041800b6a4202370300200041f80a6a41073602002000418c0b6a200041a8096a360200200041acc1c2003602fc0a200041bcc1c2003602f40a200041033602f00a20034180a4c000200441024622041b200041f00a6a20014198a4c00020041b2802101102000b200041f00a6a41286a200041f0056a41286a290300370300200041f00a6a41206a200041f0056a41206a290300370300200041f00a6a41186a200041f0056a41186a290300370300200041f00a6a41106a200041f0056a41106a290300370300200041f00a6a41086a200041f0056a41086a290300370300200041a80b6a200041e0076a41086a280200360200200020002903f0053703f00a200020002903e0073703a00b200041ac0b6a200041a0066a41c00110e4071a200041f60c6a200041f00a6a41fc0110e4071a0240024020002802b01022050d004100210c200041840b6a4100360200200041003602f40a0c010b20002802b810210c0240024020002802b41022030d00200521010c010b2003210120052104034020042802c80521042001417f6a22010d000b200521010340200120012f01064102746a41c8056a28020021012003417f6a22030d000b200421050b2000418c0b6a20012f0106360200200041880b6a4100360200200041840b6a2001360200200041003602800b200042003703f80a200020053602f40a200041003602f00a0b2000200c3602900b200041f00a6a10b902024020002802d40541ffffff3f71450d0020002802d00510290b024020002802c40541ffffff3f71450d0020002802c00510290b200041b8036a200041f00c6a41820210e4071a200041b8016a200041be036a41fc0110e4071a200041d0106a41086a2205200041f0016a280200360200200020002903e8013703d010200041f00a6a200041f4016a41c00110e4071a200041a8096a41286a220c200041b8036a412e6a2201290100370300200041a8096a41206a220a200041b8036a41266a290100370300200041a8096a41186a220f200041b8036a411e6a290100370300200041a8096a41106a2210200041b8036a41166a290100370300200041a8096a41086a2211200041b8036a410e6a290100370300200020002901be033703a809200041e0076a41186a22084200370300200041e0076a41106a22094200370300200041e0076a41086a22034200370300200042003703e00741eebec500ad4280808080f000841001220429000021022003200441086a290000370300200020023703e0072004102941c4f5c100ad4280808080a00184100122042900002102200041f0056a41086a2219200441086a290000370300200020023703f00520041029202020002903f005370000202041086a2019290300370000200041a0066a41086a2003290300370300200041a0066a41106a2009290300370300200041a0066a41186a2008290300370300200020002903e0073703a0062000200041a0066a412010fc012000280204210320002802002104200041c3016a2005280200360000200041f00c6a410e6a2011290300370100200041f00c6a41166a2010290300370100200041f00c6a411e6a200f290300370100200041f00c6a41266a200a290300370100200041f00c6a412e6a2205200c290300370100200020002903d0103700bb01200020002903a8093701f60c2000200041b8016a41076a2900003700e707200020002900b8013703e00720012005290100370100200041b8036a41286a2205200041f00c6a41286a290100370300200041b8036a41206a220c200041f00c6a41206a290100370300200041b8036a41186a220a200041f00c6a41186a290100370300200041b8036a41106a220f200041f00c6a41106a290100370300200041b8036a41086a2210200041f00c6a41086a290100370300200020002901f00c3703b803200041900e6a41183a0000200041073602880e200042023703d80d200041980e6a20002900e707370000200020002903e0073700910e200041a00e6a200041f00a6a41c00110e4071a200041e80f6a20073b0100200041e40f6a2006360200200041e00f6a2003410020041b360200200041f20f6a2010290300370100200041fa0f6a200f29030037010020004182106a200a2903003701002000418a106a200c29030037010020004192106a200529030037010020004198106a2001290100370100200020002903b8033701ea0f2000200041f00c6a3602a006200041b8016a200041a0066a10bd0220002802b80120002802bc0120002802c00110de022101200041880e6a10cc014104410820011b21050c050b1039000b1038000b20002d00f10a21050240024020002802b010220c0d0041002106200041840b6a4100360200200041003602f40a0c010b20002802b81021060240024020002802b41022030d00200c21010c010b20032101200c2104034020042802c80521042001417f6a22010d000b200c21010340200120012f01064102746a41c8056a28020021012003417f6a22030d000b2004210c0b2000418c0b6a20012f0106360200200041880b6a4100360200200041840b6a2001360200200041003602800b200042003703f80a2000200c3602f40a200041003602f00a0b200020063602900b200041f00a6a10b902202241ffffff3f71450d01202310290c010b0240202241ffffff3f71450d00202310290b024020002802e40741808080807872418080808078460d00200710290b200041a0066a1087020240024020002802b01022050d004100210c200041840b6a4100360200200041003602f40a0c010b20002802b810210c0240024020002802b41022030d00200521010c010b2003210120052104034020042802c80521042001417f6a22010d000b200521010340200120012f01064102746a41c8056a28020021012003417f6a22030d000b200421050b2000418c0b6a20012f0106360200200041880b6a4100360200200041840b6a2001360200200041003602800b200042003703f80a200020053602f40a200041003602f00a0b2000200c3602900b200041f00a6a10b902410721050b024020002802d40541ffffff3f71450d0020002802d00510290b20002802c40541ffffff3f71450d0020002802c00510290b20004180116a240020050bf70c01087f230041c0046b22032400200341206a41186a200141186a290000370300200341206a41106a200141106a290000370300200341206a41086a200141086a290000370300200320012900003703200240024002400240024020002802002204450d00200028020421050c010b4100210520034180016a410041e00210e6071a200341f8006a22014100360200200341f0006a22064200370300200341d0006a41186a4200370300200341d0006a41106a4200370300200341d0006a41086a42003703002003420037035041940310272204450d01200441003b010620044100360200200441086a20034180016a41e00210e4071a20044190036a200128020036020020044188036a200629030037020020044180036a200341e8006a290300370200200441f8026a200341e0006a290300370200200441f0026a200341d0006a41086a290300370200200420032903503702e80220004100360204200020043602000b2003200036025820032004360254200320053602500240034020042f01062207410574210841002101410021060240024002400240034020082001460d010240200341206a200420016a41086a412010e70722090d0041002101200521090c030b200141206a2101200641016a21062009417f4a0d000b2006417f6a21070b20050d014101210141002109200721060b20034180016a41106a20063602002003418c016a200036020020034180016a41086a20043602002003200036025820032004360254200320053602502003200936028401200320013602800102402001450d00200341186a2201200341206a41186a2207290300370300200341106a2208200341206a41106a290300370300200341086a2205200341206a41086a290300370300200320032903203703002000200028020841016a3602082003200636024c200320003602482003200436024420032009360240200341d0006a41186a2001290300370300200341d0006a41106a2008290300370300200341d0006a41086a20052903003703002003200329030037035020034180016a200341c0006a200341d0006a200210fe0420032d0080014101470d04200341206a41086a220520034189016a290000370300200341206a41106a220020034191016a290000370300200720034199016a2900003703002003200329008101370320200341ac016a2802002106200341b8016a2802002108200341b4016a2802002109200341b0016a2802002104200341a8016a28020022012802002207450d0220012f01042102200341a4016a280200210a20034180016a410172210103402003200241ffff037136024c20032006360248200320073602442003200a41016a360240200341d0006a41186a200341206a41186a2206290300370300200341d0006a41106a2000290300370300200341d0006a41086a20052903003703002003200329032037035020034180016a200341c0006a200341d0006a20042009200810ff0420032d0080014101470d052005200141086a2900003703002000200141106a2900003703002006200141186a2900003703002003200129000037032020032802ac01210620032802b801210820032802b401210920032802b001210420032802a80122022802002207450d0320022f0104210220032802a401210a0c000b0b200420064102746a41e8026a20023602000c030b2005417f6a2105200420074102746a4194036a28020021040c010b0b20034180016a410272410041be0310e6071a41c40310272201450d0120014100360200200141046a20034180016a41c00310e4071a200120062802002205360294032006200136020020062006280204220041016a360204200541003b01042005200136020020034180016a41186a200341206a41186a29030037030020034180016a41106a200341206a41106a29030037030020034180016a41086a200341206a41086a290300370300200320032903203703800120002008470d0220012f01062206410a4b0d03200120064105746a220841206a20034180016a41186a290300370000200841186a20034180016a41106a290300370000200841106a20034180016a41086a290300370000200841086a200329038001370000200120064102746a41e8026a20043602002001200641016a22064102746a4194036a2009360200200120063b0106200920063b0104200920013602000b200341c0046a24000f0b1030000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000bac0b060f7f017e037f017e0b7f037e23004180016b22022400200141086a2802002103200128020421042000280204210520002802002106024020002802082207200028020c2208460d00200041146a28020021092001280200210a2000280210210b200241086a210c0340200c200741106a290300370300200241106a2201200741186a290300370300200241186a220d200741206a29030037030020022007290308370300200741386a210e02402007280228220f0d00200e21070c020b200741306a28020021002007412c6a280200211020072903002111200241206a41186a2212200d290300370300200241206a41106a22132001290300370300200241206a41086a2214200c29030037030020022002290300370320024002402000ad42c8007e2215422088a70d002015a72207417f4c0d0002400240024020070d00410821160c010b200710272216450d010b200741c8006e2117024020000d00410021180c030b200f20004105746a211941002118200f211a0340200241c0006a41186a221b201a41186a290000370300200241c0006a41106a221c201a41106a290000370300200241c0006a41086a221d201a41086a2900003703002002201a2900003703400240200b280200221e450d00200b280204211f0340201e41086a2100201e2f010622204105742107410021010240024003402007450d01200241c0006a2000412010e707220d450d02200741606a2107200141016a2101200041206a2100200d417f4a0d000b2001417f6a21200b201f450d02201f417f6a211f201e20204102746a4194036a280200211e0c010b0b0240024002402009280208220d201e20014102746a41e8026a220028020022074d0d002009280200200741d8006c6a2207427f2007290320221520117c222120212015542201200741286a220729030022222001ad7c2223202254202120155a1b22011b3703202007427f202320011b370300200241e0006a41186a2201201b290300370300200241e0006a41106a220d201c290300370300200241e0006a41086a221e201d2903003703002002200229034037036020002802002100024020182017460d002017211f201821170c030b024002400240201741016a22072017490d002017410174221f2007201f20074b1bad42c8007e2215422088a70d002015a722074100480d00024020170d0020070d02410821160c050b201741c8006c221f2007460d040240201f0d0020070d02410821160c050b2016201f2007102b2216450d020c040b1032000b2007102722160d020b1030000b2007200d4190f1c9001036000b200741c8006e211f0b2016201741c8006c6a2207420037030020072000360220200741186a4200370300200741106a4200370300200741086a4200370300200720022903603702242007412c6a201e290300370200200741346a200d2903003702002007413c6a2001290300370200201841016a2118201f21170b201a41206a221a2019460d030c000b0b1039000b1038000b0240201041ffffff3f71450d00200f10290b200241e0006a41186a22072012290300370300200241e0006a41106a22002013290300370300200241e0006a41086a20142903002215370300200220022903202221370360200a4200370310200a41186a4200370300200a4200370308200a2011370300200a41286a4200370300200a4201370320200a2018360238200a2017360234200a2016360230200a202137023c200a41c4006a2015370200200a41cc006a2000290300370200200a41d4006a2007290300370200200341016a2103200a41e0006a210a200e2107200e2008470d000b200821070b20042003360200200820076b220041386d210102402000450d00200141386c21002007412c6a210703400240200728020041ffffff3f71450d002007417c6a28020010290b200741386a2107200041486a22000d000b0b02402005450d00200541386c450d00200610290b20024180016a24000b870701047f230041d0006b2208240002400240024002402002200685200320078584500d00200220038450450d01410121090c020b417f20002004852001200585844200522000200454200120055420012005511b1b21090c010b0240200620078450450d0041ff0121090c010b411010272209450d012008420437024420082009360240200841c0006a41004104109801200841306a41086a22092008280248220a41046a3602002008280240200a4102746a220a20003e020c200a20004220883e0208200a20013e0204200a20014220883e020020082008290340370330200841306a10c607200841106a41086a220b20092802003602002008200829033037031041101027220a450d01200842043702442008200a360240200841c0006a4100410410980120092008280248220a41046a3602002008280240200a4102746a220a20063e020c200a20064220883e0208200a20073e0204200a20074220883e020020082008290340370330200841306a10c607200841206a41086a200928020036020020082008290330370320200841c0006a41086a200b280200360200200820082903103703402008200841c0006a200841206a10c8070240200828022441ffffffff0371450d00200828022010290b411010272209450d012008420437024420082009360240200841c0006a41004104109801200841306a41086a22092008280248220a41046a3602002008280240200a4102746a220a20043e020c200a20044220883e0208200a20053e0204200a20054220883e020020082008290340370330200841306a10c607200841106a41086a220b20092802003602002008200829033037031041101027220a450d01200842043702442008200a360240200841c0006a4100410410980120092008280248220a41046a3602002008280240200a4102746a220a20023e020c200a20024220883e0208200a20033e0204200a20034220883e020020082008290340370330200841306a10c607200841206a41086a200928020036020020082008290330370320200841c0006a41086a200b28020036020020082008290310370340200841306a200841c0006a200841206a10c8070240200828022441ffffffff0371450d00200828022010290b2008200841306a10ca0721090240200828023441ffffffff0371450d00200828023010290b200828020441ffffffff0371450d00200828020010290b200841d0006a240020090f0b1039000bbb0703017f067e017f230041d0006b22022400024002400240200029031022032001290310220485200041186a2903002205200141186a29030022068584500d00200041086a290300210720002903002108411010272200450d022002420437024420022000360240200241c0006a41004104109801200241306a41086a22092002280248220041046a360200200228024020004102746a220020083e020c200020084220883e0208200020073e0204200020074220883e020020022002290340370330200241306a10c607200241106a41086a200928020036020020022002290330370310411010272200450d022002420437024420022000360240200241c0006a41004104109801200241306a41086a22092002280248220041046a360200200228024020004102746a220020043e020c200020044220883e0208200020063e0204200020064220883e020020022002290340370330200241306a10c607200241206a41086a200928020036020020022002290330370320200241c0006a41086a200241106a41086a280200360200200220022903103703402002200241c0006a200241206a10c8070240200228022441ffffffff0371450d00200228022010290b200141086a290300210420012903002106411010272200450d022002420437024420022000360240200241c0006a41004104109801200241306a41086a22002002280248220141046a360200200228024020014102746a220120063e020c200120064220883e0208200120043e0204200120044220883e020020022002290340370330200241306a10c607200241106a41086a2209200028020036020020022002290330370310411010272201450d022002420437024420022001360240200241c0006a4100410410980120002002280248220141046a360200200228024020014102746a220120033e020c200120034220883e0208200120053e0204200120054220883e020020022002290340370330200241306a10c607200241206a41086a200028020036020020022002290330370320200241c0006a41086a200928020036020020022002290310370340200241306a200241c0006a200241206a10c8070240200228022441ffffffff0371450d00200228022010290b2002200241306a10ca0721000240200228023441ffffffff0371450d00200228023010290b200041ff017121000240200228020441ffffffff0371450d00200228020010290b20004521000c010b2000290300200129030085200041086a290300200141086a29030085845021000b200241d0006a240020000f0b1039000be86a05157f047e047f017e0d7f230041e0026b220524000240024020014115490d004101210641012107024002400240034020012108200021092006200771410173210a02400240024002400240024003400240024002402004450d00024020064101710d002000200110f7042004417f6a21040b2001410276220b41036c210c200b410174210d200141314b0d012002280200280200280200220e280200210f410021100c020b20002001200210f8040c0e0b02400240024002402002280200280200280200220e280200220f0d0041002111200c417f6a21120c010b200b41016a2113200b417f6a21102000200b41306c6a2114200e2802042115200f211102400340201141086a211620112f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211a4200211b0c030b2015417f6a2115201120174102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211a0b0240200f0d0041002111200c417f6a21120c010b2000201041306c6a2114200e2802042115200f211102400340201141086a211620112f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211c4200211d0c030b2015417f6a2115201120174102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211d201241e8026a290300211c0b2010200b201a201c54201b201d54201b201d511b22111b211e0240200f0d00201e210b200c417f6a21120c010b200b201020111b211f2000201341306c6a2114200e2802042115200f210b02400340200b41086a2116200b2f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211a4200211b0c030b2015417f6a2115200b20174102746a41c8056a280200210b0c010b0b200b20184105746a221241f0026a290300211b201241e8026a290300211a0b0240200f0d00201e210b200c417f6a21120c010b2000201e41306c6a2114200e2802042115200f210b02400340200b41086a2116200b2f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211c4200211d0c030b2015417f6a2115200b20174102746a41c8056a280200210b0c010b0b200b20184105746a221241f0026a290300211d201241e8026a290300211c0b4102410120111b2011201a201c54201b201d54201b201d511b22121b21112013201e20121b210b0240200f450d002000200b41306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211a4200211b0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d002000201f41306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211c4200211d0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211d201241e8026a290300211c0b201f200b201a201c54201b201d54201b201d511b22121b210b201120126a2111200f450d00200d410172211e200d417f6a21132000200d41306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211a4200211b0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d002000201341306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211c4200211d0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211d201241e8026a290300211c0b2013200d201a201c54201b201d54201b201d511b22121b2110201120126a21110240200f450d00200d201320121b21132000201e41306c6a2114200e2802042115200f210d02400340200d41086a2116200d2f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211a4200211b0c030b2015417f6a2115200d20174102746a41c8056a280200210d0c010b0b200d20184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d002000201041306c6a2114200e2802042115200f210d02400340200d41086a2116200d2f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211c4200211d0c030b2015417f6a2115200d20174102746a41c8056a280200210d0c010b0b200d20184105746a221241f0026a290300211d201241e8026a290300211c0b201e2010201a201c54201b201d54201b201d511b22121b210d201120126a2111200f450d012000200d41306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211a4200211b0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d012000201341306c6a2114200e2802042117200f211502400340201541086a211620152f010622104105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21100b024020170d004200211c4200211d0c030b2017417f6a2117201520104102746a41c8056a28020021150c010b0b201520184105746a221241f0026a290300211d201241e8026a290300211c0b2013200d201a201c54201b201d54201b201d511b22121b210d201120126a2111200c417f6a2112200f450d02200c41016a211e2000200c41306c6a2115200e2802042110200f211702400340201741086a211820172f010622134105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a21130b024020100d004200211a4200211b0c030b2010417f6a2110201720134102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211b201641e8026a290300211a0b200f450d022000201241306c6a2115200e2802042110200f211702400340201741086a211820172f010622134105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a21130b024020100d004200211c4200211d0c030b2010417f6a2110201720134102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211d201641e8026a290300211c0b2012200c201a201c54201b201d54201b201d511b22161b2113200c201220161b2112201120166a21110240200f450d002000201e41306c6a2115200e2802042110200f211702400340201741086a211820172f0106220c4105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a210c0b024020100d004200211a4200211b0c030b2010417f6a21102017200c4102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211b201641e8026a290300211a0b200f450d002000201341306c6a2115200e2802042110200f211702400340201741086a211820172f0106220c4105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a210c0b024020100d004200211c4200211d0c030b2010417f6a21102017200c4102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211d201641e8026a290300211c0b201e2013201a201c54201b201d54201b201d511b22161b210c201120166a2111200f450d032000200c41306c6a2115200e2802042110200f211702400340201741086a211820172f010622134105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a21130b024020100d004200211a4200211b0c030b2010417f6a2110201720134102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211b201641e8026a290300211a0b200f450d042000201241306c6a2115200e2802042110200f21170340201741086a211820172f010622134105742116410021190240024003402016450d0120152018412010e7072214450d02201641606a2116201941016a2119201841206a21182014417f4a0d000b2019417f6a21130b2010450d062010417f6a2110201720134102746a41c8056a28020021170c010b0b201720194105746a221641f0026a290300211d201641e8026a290300211c0c050b4200211a4200211b2013210c0c030b2010210d0b200c417f6a21120b4200211a4200211b0b4200211c4200211d0b2012200c201a201c54201b201d54201b201d511b22161b210c201120166a21100b02400240200f450d002000200d41306c6a2114200e2802042115200f211102400340201141086a211620112f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211a4200211b0c030b2015417f6a2115201120174102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d002000200b41306c6a2114200e2802042115200f211102400340201141086a211620112f010622174105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21170b024020150d004200211c4200211d0c030b2015417f6a2115201120174102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211d201241e8026a290300211c0b200b200d201a201c54201b201d54201b201d511b22121b2115201020126a21100240200f450d00200d200b20121b21202000200c41306c6a2114200e280204210d200f211102400340201141086a211620112f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b0240200d0d004200211a4200211b0c030b200d417f6a210d2011200b4102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211a0b200f450d002000201541306c6a2114200e280204210d200f211102400340201141086a211620112f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b0240200d0d004200211c4200211d0c030b200d417f6a210d2011200b4102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211d201241e8026a290300211c0b200c2015201a201c54201b201d54201b201d511b22121b210d201020126a2110200f450d012000200d41306c6a2114200e280204210b200f211102400340201141086a211620112f010622154105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21150b0240200b0d004200211d4200211b0c030b200b417f6a210b201120154102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211d0b200f450d012000202041306c6a2114200e28020421110340200f41086a2116200f2f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b2011450d032011417f6a2111200f200b4102746a41c8056a280200210f0c010b0b201d200f20184105746a221241e8026a2903005a201b201241f0026a290300221d5a201b201d511b0d010240201041016a2210410c4f0d002020210d20104521120c030b024020014101762218450d002000200141306c6a41506a2112200021160340200541b0026a41286a2219201641286a2214290300370300200541b0026a41206a220f201641206a2211290300370300200541b0026a41186a220d201641186a220b290300370300200541b0026a41106a2215201641106a2217290300370300200541b0026a41086a220e201641086a2210290300370300200520162903003703b002201241086a220c290300211b201241106a2213290300211d201241186a221e290300211a201241206a221f290300211c201241286a2221290300212220162012290300370300201420223703002011201c370300200b201a3703002017201d3703002010201b37030020212019290300370300201f200f290300370300201e200d29030037030020132015290300370300200c200e290300370300201220052903b002370300201241506a2112201641306a21162018417f6a22180d000b0b20012020417f736a210d410121120c020b2015210d0b20104521120b0240201245200a724101710d0020002001200210f9040d0d0b02402003450d00200d20014f0d03024020022802002802002802002215280200220f450d0020152802042111200f211402400340201441086a211620142f0106220b4105742112410021180240024003402012450d0120032016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b024020110d004200211d4200211b0c030b2011417f6a21112014200b4102746a41c8056a28020021140c010b0b201420184105746a221241f0026a290300211b201241e8026a290300211d0b200f450d002000200d41306c6a2114201528020421110340200f41086a2116200f2f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b2011450d022011417f6a2111200f200b4102746a41c8056a280200210f0c010b0b201d200f20184105746a221241e8026a29030054201b201241f0026a290300221d54201b201d511b450d0020002109200121080c030b200541b0026a41286a2213200041286a2223290300370300200541b0026a41206a221e200041206a2224290300370300200541b0026a41186a221f200041186a2225290300370300200541b0026a41106a2221200041106a2207290300370300200541b0026a41086a2220200041086a2226290300370300200520002903003703b0022000200d41306c6a221241086a2216290300211b201241106a2218290300211d201241186a2219290300211a201241206a2214290300211c201241286a220f290300212220002012290300370300202320223703002024201c3703002025201a3703002007201d3703002026201b370300200f20132903003703002014201e2903003703002019201f2903003703002018202129030037030020162020290300370300201220052903b002370300200541b0016a41286a22272023290300370300200541b0016a41206a22282024290300370300200541b0016a41186a22292025290300370300200541b0016a41106a222a2007290300370300200541b0016a41086a222b2026290300370300200520002903003703b001200041306a210c4100210d200121150340200228020021100240200d2015417f6a22174f0d002010280200280200220e280200210b03400240200b450d00200e280204210f200b211402400340201441086a211620142f010622114105742112410021180240024003402012450d01200541b0016a2016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21110b0240200f0d004200211d4200211b0c030b200f417f6a210f201420114102746a41c8056a28020021140c010b0b201420184105746a221241f0026a290300211b201241e8026a290300211d0b200b450d00200c200d41306c6a2114200e2802042111200b210f0340200f41086a2116200f2f010622154105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21150b2011450d022011417f6a2111200f20154102746a41c8056a280200210f0c010b0b201d200f20184105746a221241e8026a2903005a201b201241f0026a290300221d5a201b201d511b450d020b200d41016a220d2017470d000b2017210d0b02400340200d201722154f0d0102402010280200280200220e280200220f450d002015417f6a2117200e2802042111200f211402400340201441086a211620142f0106220b4105742112410021180240024003402012450d01200541b0016a2016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b024020110d004200211d4200211b0c030b2011417f6a21112014200b4102746a41c8056a28020021140c010b0b201420184105746a221241f0026a290300211b201241e8026a290300211d0b200f450d002000201541306c6a2114200e28020421110340200f41086a2116200f2f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b2011450d022011417f6a2111200f200b4102746a41c8056a280200210f0c010b0b201d200f20184105746a221241e8026a29030054201b201241f0026a290300221d54201b201d511b0d010b0b2013200c200d41306c6a221241286a2218290300370300201e201241206a2219290300370300201f201241186a22142903003703002021201241106a220f2903003703002020201241086a2211290300370300200520122903003703b0022000201541306c6a221641086a220b290300211b201641106a2217290300211d201641186a220e290300211a201641206a2210290300211c201641286a222c290300212220122016290300370300201820223703002019201c3703002014201a370300200f201d3703002011201b370300202c20132903003703002010201e290300370300200e201f29030037030020172021290300370300200b2020290300370300201620052903b002370300200d41016a210d0c010b0b200020052903b0013703002023202729030037030020242028290300370300202520292903003703002007202a2903003703002026202b2903003703002001200d41016a2212490d042000201241306c6a2100200120126b220141154f0d010c0c0b0b2008450d030b200d20084f0d03200541b0026a41286a2221200941286a2226290300370300200541b0026a41206a2220200941206a2227290300370300200541b0026a41186a222c200941186a2228290300370300200541b0026a41106a2223200941106a2229290300370300200541b0026a41086a2224200941086a222a290300370300200520092903003703b0022009200d41306c6a221241086a2216290300211b201241106a2218290300211d201241186a2219290300211a201241206a2214290300211c201241286a220f290300212220092012290300370300202620223703002027201c3703002028201a3703002029201d370300202a201b370300200f2021290300370300201420202903003703002019202c2903003703002018202329030037030020162024290300370300201220052903b002370300200541286a222b2026290300370300200541206a22062027290300370300200541186a220a2028290300370300200541106a222d2029290300370300200541086a222e202a29030037030020052009290300370300200941306a21002002280200210e02402008417f6a22100d00410021250c050b200e2802002802002215280200210b410021250340200b450d052000202541306c6a211420152802042111200b210f02400340200f41086a2116200f2f0106220d4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210d0b024020110d004200211d4200211b0c030b2011417f6a2111200f200d4102746a41c8056a280200210f0c010b0b200f20184105746a221241f0026a290300211b201241e8026a290300211d0b200b450d052015280204210f200b21140340201441086a211620142f010622114105742112410021180240024003402012450d0120052016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21110b200f450d07200f417f6a210f201420114102746a41c8056a28020021140c010b0b201d201420184105746a221241e8026a29030054201b201241f0026a290300221d54201b201d511b450d05202541016a22252010470d000b201021250c040b200d200141fc99c5001036000b2012200141c499c500104c000b410041004180bdc7001036000b200d20084190bdc7001036000b20102112024003402012221520254d22070d01024002400240200e280200280200221728020022110d004200211c4200211d0c010b2009201541306c6a21142017280204210d2011210f02400340200f41086a2116200f2f0106220b4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b0240200d0d004200211c4200211d0c030b200d417f6a210d200f200b4102746a41c8056a280200210f0c010b0b200f20184105746a221241f0026a290300211d201241e8026a290300211c0b2011450d00201728020421140340201141086a211620112f0106220f4105742112410021180240024003402012450d0120052016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210f0b2014450d022014417f6a21142011200f4102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211a0c010b4200211a4200211b0b2015417f6a2112201c201a5a201d201b5a201d201b511b0d000b0b20152025490d0320102015490d022000201541306c6a210c418001211e4100210e4100210d4100211741002111418001211f2000202541306c6a222f21100340200c20106b221241306e21160240201241afe0004b22010d00201641807f6a2016200d200e49201120174922187222191b211202402019450d00201f201220181b211f2012201e20181b211e0c010b20122012410176221f6b211e0b024020112017470d000240201f0d00200541306a221721110c010b41002115200541306a2117201021140340201720153a0000201541016a21150240024002402002280200280200280200221328020022110d004200211a4200211b0c010b2013280204210b2011210f02400340200f41086a2116200f2f010622004105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21000b0240200b0d004200211a4200211b0c030b200b417f6a210b200f20004102746a41c8056a280200210f0c010b0b200f20184105746a221241f0026a290300211b201241e8026a290300211a0b2011450d002013280204210f0340201141086a211620112f0106220b4105742112410021180240024003402012450d0120052016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b200f450d02200f417f6a210f2011200b4102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211d201241e8026a290300211c0c010b4200211c4200211d0b2017201a201c5a201b201d5a201b201d511b6a2117201441306a21142015201f470d000b200541306a21110b0240200d200e470d000240201e0d00200541b0016a220e210d0c010b41002115200541b0016a210e200c21140340200e20153a0000201441506a2114201541016a211502400240024020022802002802002802002213280200220d0d004200211a4200211b0c010b2013280204210b200d210f02400340200f41086a2116200f2f010622004105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21000b0240200b0d004200211a4200211b0c030b200b417f6a210b200f20004102746a41c8056a280200210f0c010b0b200f20184105746a221241f0026a290300211b201241e8026a290300211a0b200d450d002013280204210f0340200d41086a2116200d2f0106220b4105742112410021180240024003402012450d0120052016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b200f450d02200f417f6a210f200d200b4102746a41c8056a280200210d0c010b0b200d20184105746a221241f0026a290300211d201241e8026a290300211c0c010b4200211c4200211d0b200e201a201c54201b201d54201b201d511b6a210e2015201e470d000b200541b0016a210d0b0240200e200d6b2212201720116b2216201620124b1b2218450d002021201020112d000041306c6a221241286a2903003703002020201241206a290300370300202c201241186a2903003703002023201241106a2903003703002024201241086a290300370300200520122903003703b002201020112d000041306c6a2212200c200d2d0000417f7341306c6a2216290300370300201241286a201641286a290300370300201241206a201641206a290300370300201241186a201641186a290300370300201241106a201641106a290300370300201241086a201641086a290300370300024020184101460d002018417f6a21180340200c200d2d0000417f7341306c6a2212201020112d000141306c6a2216290300370300201241286a201641286a290300370300201241206a201641206a290300370300201241186a201641186a290300370300201241106a201641106a290300370300201241086a201641086a290300370300201020112d000141306c6a2212200c200d2d0001417f7341306c6a2216290300370300201241286a201641286a290300370300201241206a201641206a290300370300201241186a201641186a290300370300201241106a201641106a290300370300201241086a201641086a290300370300200d41016a210d201141016a21112018417f6a22180d000b0b200c200d2d0000417f7341306c6a221220052903b002370300201241286a2021290300370300201241206a2020290300370300201241186a202c290300370300201241106a2023290300370300201241086a2024290300370300200d41016a210d201141016a21110b2010201f41306c6a201020112017461b2110200c4100201e6b41306c6a200c200d200e461b210c20010d000b02400240201120174f0d00200c21120340202120102017417f6a22172d000041306c6a221641286a22182903003703002020201641206a2219290300370300202c201641186a22142903003703002023201641106a220f2903003703002024201641086a220d290300370300200520162903003703b002201241506a221241086a220b290300211b201241106a2215290300211d201241186a220e290300211a201241206a2200290300211c201241286a220c290300212220162012290300370300201820223703002019201c3703002014201a370300200f201d370300200d201b370300200c202129030037030020002020290300370300200e202c29030037030020152023290300370300200b2024290300370300201220052903b00237030020112017490d000c020b0b20102112200d200e4f0d000340200e417f6a220e2d000021162021201241286a22182903003703002020201241206a2219290300370300202c201241186a22142903003703002023201241106a220f2903003703002024201241086a2211290300370300200520122903003703b002200c2016417f7341306c6a221641086a220b290300211b201641106a2215290300211d201641186a2217290300211a201641206a2200290300211c201641286a2210290300212220122016290300370300201820223703002019201c3703002014201a370300200f201d3703002011201b37030020102021290300370300200020202903003703002017202c29030037030020152023290300370300200b2024290300370300201620052903b002370300201241306a2112200d200e490d000b0b200920052903003703002026202b290300370300202720062903003703002028200a2903003703002029202d290300370300202a202e290300370300024020082012202f6b41306e20256a22014d0d002021202629030037030020202027290300370300202c2028290300370300202320292903003703002024202a290300370300200520092903003703b0022009200141306c6a221241086a2216290300211b201241106a2218290300211d201241186a2219290300211a201241206a2214290300211c201241286a220f290300212220092012290300370300202620223703002027201c3703002028201a3703002029201d370300202a201b370300200f2021290300370300201420202903003703002019202c2903003703002018202329030037030020162024290300370300201220052903b002370300200820016b2216450d0220162001200120164b1b211820084103762119201241306a21000240024020012016417f6a2216490d002000201620022012200410db02200921000c010b2009200120022003200410db0220122103201621010b201820194f2106200141154f0d010c050b0b200120084190bdc7001036000b4189a7c700411c41b8a1cc001033000b2015201041d499c500104b000b2025201541d499c500104c000b20014102490d004101211703402017220e41016a2117024020022802002802002802002210280200220d450d00200e417f6a210c2000200e41306c6a221441506a210f2010280204210b200d211102400340201141086a211620112f010622154105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a21150b0240200b0d004200211d4200211b0c030b200b417f6a210b201120154102746a41c8056a28020021110c010b0b201120184105746a221241f0026a290300211b201241e8026a290300211d0b200d450d00201028020421110340200d41086a2116200d2f0106220b4105742112410021180240024003402012450d01200f2016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210b0b2011450d022011417f6a2111200d200b4102746a41c8056a280200210d0c010b0b201d200d20184105746a221241e8026a2903005a201b201241f0026a290300221d5a201b201d511b0d00200541b0016a41286a2215201441286a2212290300370300200541b0016a41206a2210201441206a2216290300370300200541b0016a41186a2213201441186a2218290300370300200541b0016a41106a2203201441106a2219290300370300200541b0016a41086a221e201441086a2211290300370300200520142903003703b0012014200f2903003703002011200f41086a2903003703002019200f41106a2903003703002018200f41186a2903003703002016200f41206a2903003703002012200f41286a29030037030002400240200c0d004100210c0c010b2002280200280200280200221f280200220f450d00200e417e6a210b201f2802042111200f211402400340201441086a211620142f0106220d4105742112410021180240024003402012450d01200541b0016a2016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210d0b024020110d004200211d4200211b0c030b2011417f6a21112014200d4102746a41c8056a28020021140c010b0b201420184105746a221241f0026a290300211b201241e8026a290300211d0b200f450d002000200b41306c6a2114201f28020421110340200f41086a2116200f2f0106220d4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210d0b2011450d022011417f6a2111200f200d4102746a41c8056a280200210f0c010b0b200c2112201d200f20184105746a221641e8026a2903005a201b201641f0026a290300221d5a201b201d511b0d00024003402000201241306c6a22122000200b220c41306c6a2216290300370300201241286a201641286a290300370300201241206a201641206a290300370300201241186a201641186a290300370300201241106a201641106a290300370300201241086a201641086a290300370300200c450d012002280200280200280200220e280200220f450d02200c417f6a210b200e2802042111200f211402400340201441086a211620142f0106220d4105742112410021180240024003402012450d01200541b0016a2016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210d0b024020110d004200211d4200211b0c030b2011417f6a21112014200d4102746a41c8056a28020021140c010b0b201420184105746a221241f0026a290300211b201241e8026a290300211d0b200f450d022000200b41306c6a2114200e28020421110340200f41086a2116200f2f0106220d4105742112410021180240024003402012450d0120142016412010e7072219450d02201241606a2112201841016a2118201641206a21162019417f4a0d000b2018417f6a210d0b2011450d042011417f6a2111200f200d4102746a41c8056a280200210f0c010b0b200c2112201d200f20184105746a221641e8026a29030054201b201641f0026a290300221d54201b201d511b0d000c020b0b4100210c0b2000200c41306c6a221220052903b001370300201241286a2015290300370300201241206a2010290300370300201241186a2013290300370300201241106a2003290300370300201241086a201e2903003703000b20172001470d000b0b200541e0026a24000bece20102517f0d7e230041d0106b22012400200141003602102001410036020802400240200041086a22022802002203450d00200141f8076a4102722104200141fd026a2105200141d0026a41206a2106200141386a41206a2107200141f8076a41206a2108200141186a41186a2109200141186a41106a210a4100210b034002400240024002402002280200220c200b4d0d0020092000280200200b412c6c220d6a220e41246a290000370300200a200e411c6a290000370300200141186a41086a220f200e41146a2900003703002001200e29000c370318200e280200210c200e280208210e2001410036028008200142013703f807200141f8076a4100200e109e01200128028008211002400240200e41306c22110d0020012802f80721120c010b20012802f807221220104105746a210e0340200e200c290000370000200e41186a200c41186a290000370000200e41106a200c41106a290000370000200e41086a200c41086a290000370000201041016a2110200e41206a210e200c41306a210c201141506a22110d000b0b20012802fc07211320104102490d0302402010417f6a221420106c410176220c41ffffff1f71200c470d00200c410674220c417f4c0d00024002400240200c0d00410121150c010b200c10272215450d010b201241206a2116200c4106762117410021184100210c03400240200c41016a221920104f0d002012200c4105746a21112014211a2016210e0340200141f8076a41086a221b201141086a290000370300200141f8076a41106a221c201141106a290000370300200141f8076a41186a221d201141186a290000370300200120112900003703f8072008200e290000370000200841086a200e41086a290000370000200841106a200e41106a290000370000200841186a200e41186a290000370000024020182017470d00201741016a220c2017490d072017410174221e200c201e200c4b1b220c41ffffff1f71200c470d07200c410674220c4100480d0702400240024020170d00200c0d01410121150c020b20174106742217200c460d01024020170d00200c0d01410121150c020b20152017200c102b2215450d0e0c010b200c10272215450d0d0b200c41067621170b201520184106746a220c20012903f807370000200c41386a200141f8076a41386a290300370000200c41306a200141f8076a41306a290300370000200c41286a200141f8076a41286a290300370000200c41206a2008290300370000200c41186a201d290300370000200c41106a201c290300370000200c41086a201b290300370000200e41206a210e201841016a2118201a417f6a221a0d000b0b2014417f6a2114201641206a21162019210c20192010470d000b2018450d04201520184106746a211f2015211e02400340200141386a41386a201e41386a290000370300200141386a41306a201e41306a290000370300200141386a41286a201e41286a2900003703002007201e41206a290000370300200141386a41186a201e41186a220c290000370300200141386a41106a201e41106a220e290000370300200141386a41086a201e41086a22112900003703002001201e290000370338200141f8006a41186a2218200c290000370300200141f8006a41106a220c200e290000370300200141f8006a41086a220e20112900003703002001201e29000037037820014198016a41186a200741186a221129000037030020014198016a41106a200741106a221a29000037030020014198016a41086a200741086a221b2900003703002001200729000037039801200141d0026a41186a22202018290300370300200141d0026a41106a2221200c290300370300200141d0026a41086a2222200e29030037030020062007290000370000200641086a201b290000370000200641106a201a290000370000200641186a2011290000370000200120012903783703d002024002402001280208221b450d00200128020c211c0c010b200141f8076a410041c00510e6071a200141e8046a410041e00210e6071a41a8081027221b450d0b4100211c201b41003b0106201b4100360200201b41086a200141f8076a41c00510e4071a201b41c8056a200141e8046a41e00210e4071a2001410036020c2001201b3602080b201e41c0006a211e02400240024002400240024002400240024002400240024002400240024003400240201b2f0106221a410674220e450d00201b41286a210c41002111034002400240200141d0026a200c41606a412010e7072218450d00201841004e0d012011211a0c030b2006200c412010e7072218450d04201841004e0d002011211a0c020b201141016a2111200c41c0006a210c200e41406a220e0d000b0b201c450d02201c417f6a211c201b201a4102746a41a8086a280200211b0c000b0b20022802002219200b4d0d0320002802002210200d6a220c28020841306c221a450d0c201b201141057422146a41c8056a211d200c280200210c4100211803404101210e0240200141f8006a200c460d00200c200141f8006a412010e707450d00024020014198016a200c470d004101210e0c010b200c20014198016a412010e70745210e0b200c41306a210c200e20186a2118201a41506a221a0d000b20184102470d0c2019412c6c210e03402010210c200e450d0d0240200c410c6a2218201d460d00200e41546a210e200c412c6a21102018201d412010e7070d010b0b0240200c41086a280200220e450d00200e41306c2110200141f8006a200c28020022186b211a20014198016a20186b21194100210c0340201a200c460d032018200c6a220e200141f8006a412010e707450d032019200c460d03200e20014198016a412010e707450d032010200c41306a220c470d000b0b4108211a410021160c090b200141b8016a41386a220c200141d0026a41386a290300370300200141b8016a41306a220e200141d0026a41306a290300370300200141b8016a41286a2211200141d0026a41286a290300370300200141b8016a41206a22182006290300370300200141b8016a41186a221c2020290300370300200141b8016a41106a221d2021290300370300200141b8016a41086a22102022290300370300200120012903d0023703b8012001200128021041016a360210200141a0036a41386a2223200c290300370300200141a0036a41306a2224200e290300370300200141a0036a41286a22252011290300370300200141a0036a41206a22262018290300370300200141a0036a41186a2227201c290300370300200141a0036a41106a2228201d290300370300200141a0036a41086a22292010290300370300200120012903b8013703a003200141d0076a41186a222a2009290300370300200141d0076a41106a222b200a290300370300200141d0076a41086a222c200f290300370300200120012903183703d0070240201b2f0106220e410b490d00200141f8076a410041c00510e6071a200141e8046a410041e00210e6071a41a8081027220c450d18200c41003b0106200c4100360200200c41086a200141f8076a41c00510e407210e200c41c8056a200141e8046a41e00210e4072118200141f8076a41086a2210201b41a3036a290000370300200141f8076a41106a2219201b41ab036a290000370300200141f8076a41186a2214201b41b3036a2900003703002008201b41bb036a290000370300200141f8076a41256a2216201b41c0036a2900003700002001201b4188036a2f00003b0188042001201b418a036a2d00003a008a042001201b419b036a2900003703f807201b418b036a280000212d201b418f036a280000212e201b4193036a280000212f201b4197036a2800002130200141c8046a41186a2231201b41a0076a290000370300200141c8046a41106a2232201b4198076a290000370300200141c8046a41086a2233201b4190076a2900003703002001201b290088073703c804200e201b41c8036a201b2f010641796a221141067410e407210e2018201b41a8076a201141057410e4072118201b41063b0106200c20113b0106200141e0036a41026a221c20012d008a043a0000200141e8046a41086a22342010290300370300200141e8046a41106a22352019290300370300200141e8046a41186a22362014290300370300200141e8046a41206a22372008290300370300200141e8046a41256a22382016290000370000200120012f0188043b01e003200120012903f8073703e804200141a8046a41186a22392031290300370300200141a8046a41106a223a2032290300370300200141a8046a41086a223b2033290300370300200120012903c8043703a80402400240201a4107490d00200e201a417a6a221d4106746a200e201a41796a221a4106746a220e201141ffff0371201a6b41067410e5071a200e41386a2023290300370000200e41306a2024290300370000200e41286a2025290300370000200e41206a2026290300370000200e41186a2027290300370000200e41106a2028290300370000200e41086a2029290300370000200e20012903a0033700002018201d4105746a2018201a4105746a220e200c2f0106201a6b41057410e5071a200e41186a202a290300370000200e41106a202b290300370000200e41086a202c290300370000200e20012903d007370000200c200c2f010641016a3b01060c010b201b41086a220e201a41016a22114106746a200e201a4106746a220e201b2f0106201a6b41067410e5071a200e41386a2023290300370000200e41306a2024290300370000200e41286a2025290300370000200e41206a2026290300370000200e41186a2027290300370000200e41106a2028290300370000200e41086a2029290300370000200e20012903a003370000201b41c8056a220e20114105746a200e201a4105746a220e201b2f0106201a6b41057410e5071a200e41186a202a290300370000200e41106a202b290300370000200e41086a202c290300370000200e20012903d007370000201b201b2f010641016a3b01060b200520012903a804370000200141f4076a41026a220e201c2d00003a000020222034290300370300202120352903003703002020203629030037030020062037290300370300200141d0026a41256a22252038290000370000200541086a2211203b290300370000200541106a2218203a290300370000200541186a221a2039290300370000200120012f01e0033b01f407200120012903e8043703d002200141ac026a41026a223c200e2d00003a0000200141f8016a41086a223d2022290300370300200141f8016a41106a223e2021290300370300200141f8016a41186a223f2020290300370300200141f8016a41206a22402006290300370300200141f8016a41256a22412025290000370000200120012f01f4073b01ac02200120012903d0023703f801200141b0026a41186a2242201a290000370300200141b0026a41106a22432018290000370300200141b0026a41086a22442011290000370300200120052900003703b0020240201b28020022180d004100211c200141086a210e200c21110c0c0b201b2f0104212341002145200c2146034020014184046a41026a2247203c2d00003a00002022203d2903003703002021203e2903003703002020203f2903003703002006204029030037030020252041290000370000200120012f01ac023b018404200120012903f8013703d00220014188046a41186a2248204229030037030020014188046a41106a2249204329030037030020014188046a41086a224a2044290300370300200120012903b0023703880441000d03202341ffff0371211c02400240024020182f0106220c410b490d002004410041d20810e6071a41d8081027221a450d1c201a4100360200201a41046a200141f8076a41d40810e4071a200141d0076a41026a224b2018418a036a2d00003a00002010201841a3036a2900003703002019201841ab036a2900003703002014201841b3036a2900003703002008201841bb036a2900003703002016201841c0036a290000370000200120184188036a2f00003b01d00720012018419b036a2900003703f8072018418b036a280000214c2018418f036a280000214d20184193036a280000214e20184197036a280000214f2031201841a0076a290000370300203220184198076a290000370300203320184190076a29000037030020012018290088073703c804201a41086a201841c8036a20182f0106220e41796a220c41067410e4072150201a41c8056a201841a8076a200c41057410e4072151201a41a8086a201841c4086a200e417a6a221d41027410e4072124201841063b0106201a200c3b01060240201d450d004100210c2024210e0340200e2802002211200c3b01042011201a360200200e41046a210e201d200c41016a220c470d000b0b2034201029030037030020352019290300370300203620142903003703002037200829030037030020382016290000370000203b2033290300370300203a203229030037030020392031290300370300200120012f01d0073b01f407200120012903f8073703e804200120012903c8043703a8042001204b2d00003a00f607200141cc076a41026a221d20012d00f6073a00002010203429030037030020192035290300370300201420362903003703002008203729030037030020162038290000370000200120012f01f4073b01cc07200120012903e8043703f807202a2039290300370300202b203a290300370300202c203b290300370300200120012903a8043703d007202341ffff037122234107490d012050201c417a6a22114106746a2050201c41796a220c4106746a220e201a2f0106200c6b41067410e5071a200e203036000f200e202f36000b200e202e360007200e202d360003200e41026a20472d00003a0000200e20012f0184043b0000200e20012903d002370013200e411b6a2022290300370000200e41236a2021290300370000200e412b6a2020290300370000200e41336a2006290300370000200e41386a2025290000370000205120114105746a2051200c4105746a220e201a2f01062223200c6b41057410e5071a200e41186a2048290300370000200e41106a2049290300370000200e41086a204a290300370000200e200129038804370000201a202341016a220e3b0106201c410274222d20246a416c6a202420114102746a2223200e41ffff0371221c20116b41027410e5071a20232046360200201c2011490d02201a202d6a4190086a210e0340200e2802002211200c41016a220c3b01042011201a360200200e41046a210e200c201c490d000c030b0b201841086a220e201c41016a22114106746a200e201c4106746a220e200c201c6b41067410e5071a200e203036000f200e202f36000b200e202e360007200e202d360003200e41026a20472d00003a0000200e20012f0184043b0000200e20012903d002370013200e411b6a2022290300370000200e41236a2021290300370000200e412b6a2020290300370000200e41336a2006290300370000200e41386a2025290000370000201841c8056a220c20114105746a200c201c4105746a220c20182f0106220e201c6b41057410e5071a200c41186a2048290300370000200c41106a2049290300370000200c41086a204a290300370000200c2001290388043700002018200e41016a220c3b0106201c410274201841a8086a220e6a41086a200e20114102746a220e200c41ffff0371221a20116b41027410e5071a200e20463602000240201c201a4f0d0020182011417f6a220c4102746a41ac086a210e0340200e2802002211200c41016a220c3b010420112018360200200e41046a210e200c201a490d000b0b41001a200141086a1a201b1a0c0f0b201841086a220c201c41016a220e4106746a200c201c4106746a220c20182f0106201c6b41067410e5071a200c203036000f200c202f36000b200c202e360007200c202d360003200c41026a20472d00003a0000200c20012f0184043b0000200c20012903d002370013200c411b6a2022290300370000200c41236a2021290300370000200c412b6a2020290300370000200c41336a2006290300370000200c41386a2025290000370000201841c8056a220c200e4105746a200c201c4105746a220c20182f01062211201c6b41057410e5071a200c41186a2048290300370000200c41106a2049290300370000200c41086a204a290300370000200c2001290388043700002018201141016a220c3b0106201c410274222d201841a8086a22116a41086a2011200e4102746a2224200c41ffff03712211200e6b41027410e5071a20242046360200202320114f0d002018202d6a41ac086a210c0340200c280200220e201c41016a221c3b0104200e2018360200200c41046a210c2011201c470d000b0b204541016a210c20014180046a41026a220e201d2d00003a000020292010290300370300202820192903003703002027201429030037030020262008290300370300200141a0036a41256a22112016290000370000200141e0036a41086a221c202c290300370300200141e0036a41106a221d202b290300370300200141e0036a41186a2223202a290300370300200120012f01cc073b018004200120012903f8073703a003200120012903d0073703e003203c200e2d00003a0000203d2029290300370300203e2028290300370300203f20272903003703002040202629030037030020412011290000370000200120012f0180043b01ac02200120012903a0033703f801204220232903003703002043201d2903003703002044201c290300370300200120012903e0033703b00202402018280200220e0d00204d212e204e212f204f213020181a200141086a220e1a204c212d200c211c201a21110c0d0b20182f01042123200141086a1a204d212e204e212f204f213020181a204c212d200e2118201a2146200c21450c000b0b201b41086a220c201a41016a22114106746a200c201a4106746a220c200e201a6b41067410e5071a200c41386a2023290300370000200c41306a2024290300370000200c41286a2025290300370000200c41206a2026290300370000200c41186a2027290300370000200c41106a2028290300370000200c41086a2029290300370000200c20012903a003370000201b41c8056a220c20114105746a200c201a4105746a220c201b2f0106201a6b41057410e5071a200c41186a202a290300370000200c41106a202b290300370000200c41086a202c290300370000200c20012903d007370000201b201b2f010641016a3b01060c0b0b200141f8076a41086a22232018200c6a220e41086a290300370300200141f8076a41106a2224200e41106a290300370300200141f8076a41186a2226200e41186a2903003703002001200e2903003703f807200e41286a2903002152200e41206a290300215341301027221a450d0e201a2053370320201a20012903f807370300201a41286a2052370300201a41186a2026290300370300201a41106a2024290300370300201a41086a202329030037030020014281808080103702ec042001201a3602e8040240201041506a200c470d0020012802ec0421160c080b200e41306a2119201820106a220e41506a21224101211003402019210c024002400340200141f8006a200c460d01200c200141f8006a412010e707450d0120014198016a200c460d01200c20014198016a412010e707450d01200e200c41306a220c470d000c020b0b200c41286a2903002152200c41206a2903002153200141d0076a41186a2216200c41186a290300370300200141d0076a41106a2220200c41106a290300370300200141d0076a41086a2221200c41086a2903003703002001200c2903003703d0070240201020012802ec04470d00200141e8046a2010410110900120012802e804211a0b200c41306a2119201a201041306c6a221820012903d00737030020212903002154202029030021552016290300215620182053370320201841286a2052370300201841186a2056370300201841106a2055370300201841086a20543703002001201041016a22103602f0042022200c470d010b0b20012802ec04211620104102490d0720104102470d0441e00010272219450d0e200142023702d402200120193602d00202402002280200220c200b4d0d000240024002402000280200200d6a220c28020841306c22100d004102210c0c010b200c280200210c41002118034002400240200141f8006a200c460d00200c200141f8006a412010e707210e20014198016a200c460d00200e450d00200c20014198016a412010e7070d010b200141e8046a41186a2220200c41186a290300370300200141e8046a41106a2221200c41106a290300370300200141e8046a41086a2222200c41086a2903003703002001200c2903003703e804200c41286a2903002152200c41206a29030021530240201820012802d402470d00200141d0026a2018410110900120012802d002211920012802d80221180b2019201841306c6a220e20012903e804370300202229030021542021290300215520202903002156200e2053370320200e41286a2052370300200e41186a2056370300200e41106a2055370300200e41086a20543703002001201841016a22183602d8020b200c41306a210c201041506a22100d000b20184102460d0120012802d402210c0b200c450d0a200c41306c450d0a201910290c0a0b02402019201a460d00201a2019412010e707450d00200141f8076a41286a220c201a41286a220e2903003703002008201a41206a22182903003703002026201a41186a22102903003703002024201a41106a22202903003703002023201a41086a22212903003703002001201a2903003703f807200e201a41d8006a22222903003703002018201a41d0006a220e2903003703002010201a41c8006a22182903003703002020201a41c0006a22102903003703002021201a41386a2220290300370300201a201a2903303703002022200c290300370300200e2008290300370300201820262903003703002010202429030037030020202023290300370300201a20012903f8073703300b2001427f3703f0042001427f3703e80441002110200141003602a0032001410036028008200142083703f807200141f8076a4100410410900120012802f8072236200128028008222141306c6a210c02402019450d00200141e8046a41086a290300215420012903e8042157410021204100211003400240201920206a220e41206a2903002253205756200e41286a290300225220545620522054511b0d00200120533703e804200120103602a003200120523703f00420532157205221540b200c20206a2218200e290300370300200e41086a2903002155200e41106a2903002156200e41186a2903002158201841286a2052370300201841206a2053370300201841186a2058370300201841106a2056370300201841086a2055370300201041016a2110202041306a222041e000470d000b202120106a2121200c20206a210c0b0240201a450d00201a41e0006a2219201a460d00200141e8046a41086a290300215420012903e8042157201a210e0340200e41306a21180240200e41206a2903002253205756200e41286a290300225220545620522054511b0d00200120533703e804200120103602a003200120523703f00420532157205221540b200c200e290300370300200e41086a2903002155200e41106a2903002156200e41186a2903002158200c41286a2052370300200c41206a2053370300200c41186a2058370300200c41106a2056370300200c41086a2055370300200c41306a210c201041016a2110202141016a21212018210e20192018470d000b0b20012802fc07212520012802a003210e41041027220c450d17200c200e3602000240024020012802a003220e4102490d00410410272218450d192018200e410171410373220e360200200c41044108102b2235450d192035200e417e6a36020420012802a003210c201841044108102b2229450d19200c417e6a210c0c010b410410272218450d1820184101200e6b360200200c41044108102b2235450d1820354103200e6b36020420012802a003210c201841044108102b2229450d18200c41026a210c0b2029200c360204410410272234450d0f02400240202928020022224102490d002026201d41186a2900003703002024201d41106a2900003703002023201d41086a2900003703002001201d2900003703f8070c010b202620092903003703002024200a2903003703002023200f290300370300200120012903183703f8070b02402002280200220c450d0020002802002220200c412c6c6a21272036202241306c6a2110034002400240200141f8076a2020410c6a220c460d00200c200141f8076a412010e7070d010b2020280208210c0240202120224d0d00200c41306c210e4100211820202802002228210c02400340200e450d032010200c460d01200c2010412010e7072119201841016a2118200e41506a210e200c41306a210c20190d000b20194541016a41017120186a417f6a21180b2028201841306c6a220c427f200c290320225220012903e8047c22532053205254220e200c41286a220c2903002252200141e8046a41086a2903007c200ead7c225320525420532052511b220e1b370320200c427f2053200e1b3703000c010b200c0d0a0b2020412c6a22202027470d000b0b02400240202928020422224102490d002026201d41186a2900003703002024201d41106a2900003703002023201d41086a2900003703002001201d2900003703f8070c010b202620092903003703002024200a2903003703002023200f290300370300200120012903183703f8070b02402002280200220c450d0020002802002220200c412c6c6a21272036202241306c6a2110034002400240200141f8076a2020410c6a220c460d00200c200141f8076a412010e7070d010b2020280208210c0240202120224b0d00200c0d0b0c010b200c41306c210e4100211820202802002228210c02400340200e450d022010200c460d01200c2010412010e7072119201841016a2118200e41506a210e200c41306a210c20190d000b20194541016a41017120186a417f6a21180b2028201841306c6a220c427f200c290320225220012903e8047c22532053205254220e200c41286a220c2903002252200141e8046a41086a2903007c200ead7c225320525420532052511b220e1b370320200c427f2053200e1b3703000b2020412c6a22202027470d000b0b20291029203528020022224102490d032026201d41186a2900003703002024201d41106a2900003703002023201d41086a2900003703002001201d2900003703f8070c040b200b200c41f485c3001036000b41cc9ec800413541b8a1cc001033000b200b201941e485c3001036000b202620092903003703002024200a2903003703002023200f290300370300200120012903183703f8070b024002402002280200220c0d0041012129410021280c010b20002802002220200c412c6c6a212a2036202241306c6a21104101212941002128034002400240200141f8076a2020410c6a220c460d00200c200141f8076a412010e7070d010b202041086a222c280200212702400240202120224d0d00202741306c210e410021182020280200222b210c02400340200e450d042010200c460d01200c2010412010e7072119201841016a2118200e41506a210e200c41306a210c20190d000b20194541016a41017120186a417f6a21180b4200202b201841306c6a220c290320225220012903e80422547d22532053205256200c41286a2903002253200141e8046a41086a2903007d2052205454ad7d225220535620522053511b220e1b225342002052200e1b225284500d01200c41206a220c2053370300200c20523703080c020b2027450d010c050b200c200c41306a20272018417f736a41306c10e5071a202c2027417f6a360200024020292028470d00202941016a220c2029490d112029410174220e200c200e200c4b1b220c41ffffffff0371200c470d11200c410274220c4100480d110240024002400240024020290d00200c0d010c030b2029410274220e200c460d03200e0d01200c450d020b200c10272234450d190c020b2034200e200c102b2234450d180c010b410421344100210c0b200c41027621290b203420284102746a2022360200202841016a21280b2020412c6a2220202a470d000b0b02400240203528020422224102490d002026201d41186a2900003703002024201d41106a2900003703002023201d41086a2900003703002001201d2900003703f8070c010b202620092903003703002024200a2903003703002023200f290300370300200120012903183703f8070b02402002280200220c450d0020002802002220200c412c6c6a212a2036202241306c6a2110034002400240200141f8076a2020410c6a220c460d00200c200141f8076a412010e7070d010b202041086a222c28020021270240202120224b0d0020270d050c010b202741306c210e410021182020280200222b210c02400340200e450d022010200c460d01200c2010412010e7072119201841016a2118200e41506a210e200c41306a210c20190d000b20194541016a41017120186a417f6a21180b02404200202b201841306c6a220c290320225220012903e80422547d22532053205256200c41286a2903002253200141e8046a41086a2903007d2052205454ad7d225220535620522053511b220e1b225342002052200e1b225284500d00200c41206a220c2053370300200c20523703080c010b200c200c41306a20272018417f736a41306c10e5071a202c2027417f6a360200024020292028470d00202941016a220c2029490d112029410174220e200c200e200c4b1b220c41ffffffff0371200c470d11200c410274220c4100480d1102400240024002402029450d002029410274220e200c460d030240200e450d002034200e200c102b2234450d1b0c040b200c0d010c020b200c450d010b200c10272234450d180c010b410421344100210c0b200c41027621290b203420284102746a2022360200202841016a21280b2020412c6a2220202a470d000b0b203510292034417c6a21182028410274220e210c024003400240200c0d00410021180c020b200c417c6a210c201841046a221828020041014b0d000b0b2034210c024003400240200e0d004100210c0c020b200e417c6a210e200c2802002110200c41046a210c20104102490d000b4101210c0b0240202941ffffffff0371450d00203410290b024002400240024020180d00200c450d01201d2001290318370000201d41186a2009290300370000201d41106a200a290300370000201d41086a200f2903003700000c030b200c450d0220012001280210417f6a360210201b41086a210c02400240201c450d00201c417f6a210e200c20114106746a2118201b20114102746a41a8086a280200210c02400340200c2f01062111200e450d01200e417f6a210e200c20114102746a41a8086a280200210c0c000b0b200c410020111b221b41086a220e2011417f6a410020111b22114106746a220c2900002152200c2900082153200c2900102154200c41186a2900002155200c2900202156200c41286a2900002158200c41306a2900002157200c41386a290000215941012137200c200e201141016a221c4106746a2011417f73220e201b2f01066a41067410e5071a201b41c8056a221020114105746a220c290000215a200c290008215b200c290010215c200c41186a290000215d200c2010201c4105746a200e201b2f01066a41057410e5071a201b201b2f0106417f6a3b0106201841386a2059370000201841306a2057370000201841286a205837000020182056370020201841186a2055370000201820543700102018205337000820182052370000201d41186a205d370000201d205c370010201d205b370008201d205a370000201b2f0106210c0c010b200c20114106746a200c201141016a220e4106746a2011417f73220c201b2f01066a41067410e5071a201b41c8056a221820146a2018200e4105746a200c201b2f01066a41057410e5071a201b201b2f0106417f6a220c3b0106410021370b200c41ffff037141044b0d0141002128200141086a210e201b210c410021220240024002400240024002400240024002400240024002400240024002400340200c280200221c450d1102400240200c33010422524200520d0041002127201c4100201c2f0106220c1b211c42002052422086200c1b200ead8421520c010b2052422086200ead844280808080707c2152410121270b02400240201c41a8086a220e2052422088a7221841016a220c410274222a6a221d28020022142f01062219200e2018410274222b6a222928020022102f010622206a2233410b490d0020270d052019450d01201441c0006a2900002158201441386a2900002157201441306a2900002159201441286a290000215a201441206a2900002153201441186a2900002154201441106a290000215520142900082156201441086a201441c8006a201941067441406a10e5071a201441e0056a290000215e201441d8056a290000215b201441d0056a290000215c20142900c805215d201441c8056a201441e8056a201941057441606a10e5071a20220d03410021100c040b202241016a2122201c2f01062121200141f8076a41386a222c201c41086a223420184106746a220e41386a290000370300200141f8076a41306a2235200e41306a290000370300200141f8076a41286a2231200e41286a2900003703002008200e41206a2900003703002026200e41186a2900003703002024200e41106a2900003703002023200e41086a2900003703002001200e2900003703f807200e2034200c4106746a20212018417f7322346a41067410e5071a201041086a223220204106746a220e41386a202c290300370000200e41306a2035290300370000200e41286a2031290300370000200e41206a2008290300370000200e41186a2026290300370000200e41106a2024290300370000200e41086a2023290300370000200e20012903f8073700002032202041016a22214106746a201441086a201941067410e4071a201c2f0106212c200141d0076a41186a2235201c41c8056a223120184105746a220e41186a290000370300200141d0076a41106a2218200e41106a290000370300200141d0076a41086a2232200e41086a2900003703002001200e2900003703d007200e2031200c4105746a2034202c6a41057410e5071a201041c8056a222c20204105746a220e41186a2035290300370000200e41106a2018290300370000200e41086a2032290300370000200e20012903d007370000202c20214105746a201441c8056a201941057410e4071a201d202941086a412c202a6b10e5071a0240200c201c2f0106221d4f0d00201c202b6a41ac086a210e0340200e2802002218200c3b01042018201c360200200e41046a210e201d200c41016a220c470d000b201c2f0106211d0b201c201d417f6a3b01062010201920102f01066a41016a3b0106024020224102490d00201020214102746a41a8086a201441a8086a201941027441046a10e4071a2021203341026a4f0d00201941016a2118201020204102746a41ac086a210c2021210e0340200c280200221d200e3b0104201d2010360200200c41046a210c200e41016a210e2018417f6a22180d000b0b20141029024020282027417f73724101710d0020224101470d102021410020271b20116a2111201c202b6a41a8086a280200211b0b2052a7210e201c220c2f01062218450d064101212820184105490d010c120b0b41879dc800412041b8a1cc001033000b20142802a8082110201441a8086a220c201441ac086a201941027410e5071a4100210e201041003602000340200c280200221d200e3b0104201d2014360200200c41046a210c2019200e41016a220e470d000b2022417f6a211d20142f010621190b20142019417f6a3b0106201c20184106746a220c41206a220e2900002152200e2053370000200c41186a220e2900002153200e2054370000200c41106a220e2900002154200e2055370000200c41086a220e2900002155200e2056370000200c41c0006a220e2900002156200e2058370000200c41386a220e2900002158200e2057370000200c41306a220e2900002157200e2059370000200c41286a220c2900002159200c205a370000201c20184105746a220c41d8056a220e290000215a200e205b370000200c41d0056a220e290000215b200e205c370000200c41c8056a220e290000215c200e205d370000200c41e0056a220c290000215d200c205e3700002029280200210c02402022450d002010450d052022417f6a201d470d06200c2f01062218410a4b0d07200c20184106746a220e41c0006a2056370000200e41386a2058370000200e41306a2057370000200e41286a2059370000200e41206a2052370000200e41186a2053370000200e41106a2054370000200e41086a2055370000200c20184105746a220e41e0056a205d370000200e41d8056a205a370000200e41d0056a205b370000200e41c8056a205c370000200c201841016a220e4102746a41a8086a22182010360200200c200c2f010641016a3b010620182802002218200e3b01042018200c3602000c020b200c2f01062218410b4f0d07200c20184106746a220e41c0006a2056370000200e41386a2058370000200e41306a2057370000200e41286a2059370000200e41206a2052370000200e41186a2053370000200e41106a2054370000200e41086a2055370000200c20184105746a220e41d8056a205a370000200e41d0056a205b370000200e41c8056a205c370000200e41e0056a205d370000200c200c2f010641016a3b01060c010b0240024002402020450d0020102020417f6a220e4105746a220c41e0056a290000215e200c41d8056a290000215b200c41d0056a290000215c200c41c8056a290000215d2010200e4106746a220c41c0006a2900002158200c41386a2900002157200c41306a2900002159200c41286a290000215a200c41206a2900002153200c41186a2900002154200c41106a2900002155200c41086a290000215620220d014100210e0c020b41879dc800412041b8a1cc001033000b201020204102746a41a8086a280200220e41003602002022417f6a211920102f010621200b20102020417f6a3b0106201c20184106746a220c41206a2210290000215220102053370000200c41186a2210290000215320102054370000200c41106a2210290000215420102055370000200c41086a2210290000215520102056370000200c41c0006a2210290000215620102058370000200c41386a2210290000215820102057370000200c41306a2210290000215720102059370000200c41286a220c2900002159200c205a370000201c20184105746a220c41d8056a2218290000215a2018205b370000200c41d0056a2218290000215b2018205c370000200c41c8056a2218290000215c2018205d370000200c41e0056a220c290000215d200c205e370000201d280200211802402022450d00200e450d082022417f6a2019470d09024020182f0106220c410a4b0d00201841c8006a201841086a200c41067410e5071a201841386a2058370000201841306a2057370000201841286a2059370000201841186a2053370000201841106a205437000020182055370008201841c0006a2056370000201841206a2052370000201841e8056a201841c8056a200c41057410e5071a201841e0056a205d370000201841d8056a205a370000201841d0056a205b3700002018205c3700c805201841ac086a201841a8086a220c20182f010641027441046a10e5071a2018200e3602a808201820182f010641016a220e3b0106200e41ffff037141016a211d4100210e0340200c280200221c200e3b0104201c2018360200200c41046a210c201d200e41016a220e470d000c030b0b418f9cc800412741b8a1cc001033000b20182f0106220c410b4f0d09201841c8006a201841086a200c41067410e5071a201841386a2058370000201841306a2057370000201841286a2059370000201841186a2053370000201841106a205437000020182055370008201841c0006a2056370000201841206a2052370000201841e8056a201841c8056a200c41057410e5071a201841e0056a205d370000201841d8056a205a370000201841d0056a205b3700002018205c3700c805201820182f010641016a3b01060b2028417f732027710d010c0c0b0240200e2802042218450d00200e280200221c2802a808210c200e2018417f6a360204200e200c360200200c4100360200201c10290c0c0b41e69cc800412141b8a1cc001033000b2011201b2f0106490d084100210e024003400240201b280200220c0d00410021114100210c0c020b200e41016a210e201b2f01042111200c211b2011200c2f01064f0d000b0b201141016a21110240200e0d00200c211b0c0b0b200c20114102746a41a8086a280200211b41002111200e417f6a220c450d0a0340201b2802a808211b200c417f6a220c0d000c0b0b0b41a79dc800412b41bc9ec8001033000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000b418f9cc800412741b8a1cc001033000b41a79dc800412b41d49dc8001033000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000b419cf7ca00412841b8a1cc001033000b201141016a21110c010b41a486c300412941b8a1cc001033000b2037450d002011201b2f0106490d000340201b280200220c450d01201b2f0104210e200c211b200e200c2f01064f0d000b0b02402025450d00202541306c450d00203610290b20012802d402220c450d00200c41306c450d0020012802d00210290b2016450d05201641306c450d05201a10290c050b20222021419486c3001036000b20222021418486c3001036000b201d2001290318370000201d41186a2009290300370000201d41106a200a290300370000201d41086a200f2903003700000b2016450d01201641306c450d01201a10290c010b2004410041d20810e6071a41d8081027220c450d0c200c4100360200200c41046a200141f8076a41d40810e4071a200c200e28020022183602a808200e200c360200200e200e280204221a41016a360204201841003b01042018200c360200200141d0026a41026a221d203c2d00003a00002010203d2903003703002019203e2903003703002014203f2903003703002008204029030037030020162041290000370000200120012f01ac023b01d002200120012903f8013703f807203620422903003703002035204329030037030020342044290300370300200120012903b0023703e804201a201c470d01200c2f01062218410a4b0d03200c20184106746a220e410a6a201d2d00003a0000200e41086a20012f01d0023b0000200e41176a2030360000200e41136a202f360000200e410f6a202e360000200e410b6a202d360000200e41c0006a2016290000370000200e413b6a2008290300370000200e41236a2010290300370000200e411b6a20012903f807370000200e41336a2014290300370000200e412b6a2019290300370000200c20184105746a220e41e0056a2036290300370000200e41d8056a2035290300370000200e41d0056a2034290300370000200e41c8056a20012903e804370000200c201841016a220e4102746a41a8086a2011360200200c200e3b01062011200c3602002011200e3b010441001a201b1a0b201e201f470d010c070b0b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000b1039000b1038000b200b200c41d485c3001036000b1032000b201741ffffff1f71450d00201510290b200b41016a210b0240201341ffffff3f71450d00201210290b200b2003470d000b2001280208220c450d00200128021021180240200128020c220e450d000340200c2802a808210c200e417f6a220e0d000b0b02402018450d00410021110340024002400240200c450d002018417f6a21182011200c2f0106490d0141002108034002400240200c280200220e0d00410021114100210e0c010b200841016a2108200c2f010421110b200c1029200e210c2011200e2f01064f0d000b201141016a2111024020080d00200e210c0c030b200e20114102746a41a8086a280200210c410021112008417f6a220e450d020340200c2802a808210c200e417f6a220e0d000c030b0b41a79dc800412b41e0f6c4001033000b201141016a21110b20180d000b0b200c450d00200c280200210e200c1029200e450d000340200e280200210c200e1029200c210e200c0d000b0b200141003602d004200141003602c804024020022802002251450d00200141c8046a41086a213e2000280200210c200141e8046a41186a2137200141d0076a41106a2143200141d0076a41086a2144200141d0026a41016a223b41286a2147203b41206a2148200141f5026a21492051210e41002126024002400340200e20264d0d01200141d0076a41186a2246200c2026412c6c223d6a221141246a29000037030020432011411c6a2900003703002044201141146a2900003703002001201129000c3703d00702402011280208450d00410021320340200c203d6a280200210c200141386a41186a22152046290300370300200141386a41106a22062043290300370300200141386a41086a221e2044290300370300200120012903d007370338200141003a0058200141b8016a41186a2210200c203241306c6a220c41186a290000370300200141b8016a41106a2207200c41106a290000370300200141b8016a41086a2219200c41086a29000037030041012114200141013a00d8012001200c2900003703b8010240024020012802c80422170d0041002117410021160c010b2017211a20012802cc04221b211c02400340201a41286a210c201a2f0106221d41216c210e41002108024002400340200821110240200e0d00201d21110c020b02400240200141386a200c41606a412010e7072208450d0041012118200841004e0d010c030b200c2d00002208450d03417f410120081b21180b201141016a2108200e415f6a210e200c41216a210c2018417f470d000b0b0240201c0d00410121140c030b201c417f6a211c201a20114102746a41a0036a280200211a0c010b0b410021140b2017211a0340201a41286a210c201a2f0106221c41216c210e41002108024002400340200821110240200e0d00201c21110c020b02400240200141b8016a200c41606a412010e7072208450d0041012118200841004e0d010c030b200c2d000022084101460d03417f4101200841014b1b21180b201141016a2108200e415f6a210e200c41216a210c2018417f470d000b0b0240201b0d00410021160c030b201b417f6a211b201a20114102746a41a0036a280200211a0c010b0b201a20114102746a41f4026a21160b200141a0036a41186a22382015290300370300200141a0036a41106a22392006290300370300200141a0036a41086a223a201e290300370300200120012903383703a003200141003a00c003024002402017450d0020012802cc04211a0c010b200141f8076a410041eb0210e6071a2047410036000020484200370000203b41186a4200370000203b41106a4200370000203b41086a4200370000203b420037000041a00310272217450d074100211a201741003b010620174100360200201741086a200141f8076a41eb0210e4071a20174198036a204929000037000020174193036a200141d0026a41206a2900003700002017418b036a200141d0026a41186a29000037000020174183036a200141d0026a41106a290000370000201741fb026a200141d0026a41086a290000370000201720012900d0023700f302200141003602cc04200120173602c8040b024002400340201741286a210c20172f0106221b41216c210e4100210802400340200821110240200e0d00201b21110c020b02400240200141a0036a200c41606a412010e7072208450d0041012118200841004e0d010c030b200c2d00002208450d04417f410120081b21180b201141016a2108200e415f6a210e200c41216a210c2018417f470d000b0b0240201a450d00201a417f6a211a201720114102746a41a0036a28020021170c010b0b203720012903a003370000203741086a203a290300370000203741106a2039290300370000203741186a2038290300370000203741206a200141a0036a41206a2d00003a00002001203e3602fc04200120113602f804200120173602f0044100210c200141003602ec042001200141c8046a3602f4040c010b2001203e3602fc04200120113602f804200120173602f0042001201a3602ec042001200141c8046a3602f4044101210c0b2001200c3602e804200141f8076a41086a222c201e290300370300200141f8076a41106a22342006290300370300200141f8076a41186a22352015290300370300200141f8076a41206a221d200141386a41206a2d00003a0000200120012903383703f80741341027220c450d06200c4200370208200c428180808010370200200c20012903f807370210200c20012f00d0023b0031200c41186a202c290300370200200c41206a2034290300370200200c41286a2035290300370200200c41306a201d2d00003a0000200c41336a200141d0026a41026a22152d00003a0000024002400240024002400240024002400240024002400240200141e8046a200c10d903280200221c28020041016a220c41014d0d00201c200c3602002001201c360288042038201029030037030020392007290300370300203a2019290300370300200120012903b8013703a003200141013a00c0030240024020012802c8042217450d0020012802cc04211a0c010b200141f8076a410041eb0210e6071a2047410036000020484200370000203b41186a4200370000203b41106a4200370000203b41086a4200370000203b420037000041a00310272217450d134100211a201741003b010620174100360200201741086a200141f8076a41eb0210e4071a20174198036a204929000037000020174193036a200141d0026a41206a2900003700002017418b036a200141d0026a41186a29000037000020174183036a200141d0026a41106a290000370000201741fb026a200141d0026a41086a290000370000201720012900d0023700f302200141003602cc04200120173602c8040b024002400340201741286a210c20172f0106221b41216c210e4100210802400340200821110240200e0d00201b21110c020b02400240200141a0036a200c41606a412010e7072208450d0041012118200841004e0d010c030b200c2d000022084101460d04417f4101200841014b1b21180b201141016a2108200e415f6a210e200c41216a210c2018417f470d000b0b0240201a450d00201a417f6a211a201720114102746a41a0036a28020021170c010b0b203720012903a003370000203741086a203a290300370000203741106a2039290300370000203741186a2038290300370000203741206a200141a0036a41206a2d00003a00002001203e3602fc04200120113602f804200120173602f0044100210c200141003602ec042001200141c8046a3602f4040c010b2001203e3602fc04200120113602f804200120173602f0042001201a3602ec042001200141c8046a3602f4044101210c0b2001200c3602e804202c20192903003703002034200729030037030020352010290300370300201d200141b8016a41206a2d00003a0000200120012903b8013703f80741341027220c450d12200c4200370208200c428180808010370200200c20012903f807370210200c20012f00d0023b0031200c41186a202c290300370200200c41206a2034290300370200200c41286a2035290300370200200c41306a201d2d00003a0000200c41336a20152d00003a0000200141e8046a200c10d903280200220c28020041016a220e41014d0d00200c200e3602002001200c3602a80402400240024002400240024002400240024002400240024002402014450d0020160d01200141a8046a201c10da030c170b2016450d01200141f8076a201c10db032001280284082140200128028008214c20012802fc07212e20012802f807212d200141f8076a200c10db032001280284082141200128028008214d20012802fc0721420240202d20012802f807223c460d00202d28020841016a220c41004c0d08202d200c360208203c280208220c41016a220e41004c0d07203c200e360208202d41106a203c41106a412010e7070d09202d2d0030203c2d0030470d09203c200c360208202d202d280208417f6a3602080b20400d02410021180c030b20014188046a200c10da030c150b200141a8046a201c10da030c140b202e417c6a211b20404102742108204141027421112042417c6a211c4100211803402011450d0102400240201b20086a280200220c201c20116a280200220e460d00200c28020841016a221741004c0d05200c2017360208200e280208221741016a221a41004c0d04200e201a360208200c41106a200e41106a412010e7070d01200c2d0030200e2d0030470d01200e2017360208200c200c280208417f6a3602080b2011417c6a2111201841016a21182008417c6a22080d010c020b0b200e2017360208200c200c280208417f6a3602080b2001410036028008200142043703f807204020186b2117202e2040410274222a6a2111204120186b225041016a210e20414102742129024020420d004100210c202e450d072017450d0720172011202e6b410276220c200c20174b1b210c0c070b204220296a211b202e450d054100210c410021080240200e450d00200e201b20426b41027622082008200e4b1b21080b02402017450d0020172011202e6b410276220c200c20174b1b210c0b2008200c6a220c20084f0d06410421214100211841002115204221080340024002402008450d000240200e0d004100210e0c010b200e417f6a210e201b2008460d002008280200220c28020041016a221a41014d0d0b200c201a360200200c450d00200841046a21080c010b2017450d092011202e6b410276220c4100200c20176b22082008200c4b1b220c4d0d092011200c4102746b417c6a2211280200220c28020041016a220841014d0d0a200c2008360200200c450d092017417f6a2117410021080b0240201520012802fc07470d0002400240024020080d0020170d014100211a0c020b4100211c4100211a0240200e450d00200e201b20086b410276221a201a200e4b1b211a0b02402017450d0020172011202e6b410276221c201c20174b1b211c0b417f201a201c6a221c201c201a491b211a0c010b20172011202e6b410276221a201a20174b1b211a0b200141f8076a2015417f201a41016a221c201c201a491b10980120012802f80721210b202120186a200c3602002001201541016a221536028008201841046a21180c000b0b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b203c200c360208202d202d280208417f6a360208024020412040204020414b220c1b220e450d00204dad4220862042ad842252204cad422086202ead842253200c1b2254a7221a200e410274220e6a211720532052200c1b2252a7211b20402041200c1b211c41012111200e2118201a210c201a210802400340024002402011450d002017200c6b41027620114d0d03200c20114102746a210c0c010b2017200c460d020b200c200828020010da03200c41046a210c41002111200841046a21082018417c6a22180d000b0b0240201c0d0041004100419087c3001036000b201a201b28020010da03201c4102742111201b210c0340200c28020022082008280200417f6a3602000240200c28020022082802000d000240200828020c2218450d0020182018280200417f6a360200200828020c22182802000d00201841086a10dc03200828020c22182018280204417f6a360204200828020c22082802040d00200810290b200c28020022082008280204417f6a360204200c28020022082802040d00200810290b200c41046a210c2011417c6a22110d000b024020524280808080f0ffffff3f83500d00201b10290b201a210c0340200c28020022112011280200417f6a3602000240200c28020022112802000d000240201128020c2208450d0020082008280200417f6a360200201128020c22082802000d00200841086a10dc03201128020c22082008280204417f6a360204201128020c22112802040d00201110290b200c28020022112011280204417f6a360204200c28020022112802040d00201110290b200c41046a210c200e417c6a220e0d000b024020544280808080f0ffffff3f83500d00201a10290b203c203c280200417f6a220c360200203241016a2132200c0d0d0240203c28020c220c450d00200c200c280200417f6a360200203c28020c220c2802000d00200c41086a10dc03203c28020c220c200c280204417f6a360204203c28020c220c2802040d00200c10290b203c203c280204417f6a220c360204200c0d0d203c10290c0d0b41004100418087c3001036000b0240200e0d004100210c0c010b200e201b20426b410276220c200c200e4b1b210c0b200141f8076a4100200c10980120012802f807222120012802800822154102746a210c02402042450d00200e450d00204220414102746a211b2041417f7320186a21082042210e0340201b200e460d01200e280200221828020041016a221a41014d0d032018201a360200200c2018360200201541016a2115200c41046a210c200e41046a210e200841016a221820084f211a20182108201a0d000b0b0240202e450d002017450d0002402011202e6b410276220e20174d0d00200e2017417f736a2208200e4f0d01201120084102746b417c6a21110b2011202e460d0003402011417c6a2211280200220e28020041016a220841014d0d03200e2008360200200c200e360200201541016a2115200c41046a210c202e2011470d000b0b20012015360280080b20012802fc07214f200141f8016a41186a224a4200370300200141f8016a41106a22454200370300200141f8016a41086a224b4200370300200142003703f8012038420037030020394200370300203a4200370300200142003703a003410021070240024020150d00427f2152427f2155410021204100212b4100213341002122410021270c010b2015417f6a2119427f215241002120427f21554100212b427f2153427f21544100211a0240024002400240024003402021201a4102746a280200220c28020841016a220e41004c0d01201a41016a211b0240200c2d00300d00200c200e360208200141d0026a41186a221c200c41286a290000370300200141d0026a41106a221d200c41206a290000370300200141d0026a41086a2206200c41186a290000370300200c200c280208417f6a3602082001200c2900103703d0022015201b41002019201a4b1b220c4d0d032021200c4102746a280200220c28020841016a220e41004c0d04200c200e3602082037200c41286a290000370300200141e8046a41106a221e200c41206a290000370300200141e8046a41086a2210200c41186a290000370300200c200c280208417f6a3602082001200c2900103703e8042015201a2015201a1b417f6a220c4d0d052021200c4102746a280200220c28020841016a220e41004c0d06200c200e3602082035200c41286a2900003703002034200c41206a290000370300202c200c41186a290000370300200c200c280208417f6a3602082001200c2900103703f807200041086a280200412c6c220e2111200028020022082118024003402018210c2011450d010240200141d0026a200c410c6a2217460d00201141546a2111200c412c6a21182017200141d0026a412010e7070d010b0b200c41086a28020041306c2111200c280200211803402018210c2011450d010240200141e8046a200c460d00201141506a2111200c41306a2118200c200141e8046a412010e7070d010b0b2052200c41206a2903002258582054200c41286a29030022565820542056511b0d00204a20372903003703002045201e290300370300204b2010290300370300203a20062903003703002039201d2903003703002038201c290300370300200120012903e8043703f801200120012903d0023703a0034101212b2058215220562155201a212020562153205621540b03402008210c200e450d010240200141d0026a200c410c6a2211460d00200e41546a210e200c412c6a21082011200141d0026a412010e7070d010b0b200c41086a28020041306c210e200c280200211103402011210c200e450d010240200141f8076a200c460d00200e41506a210e200c41306a2111200c200141f8076a412010e7070d010b0b205321542052200c41206a2903002258582053200c41286a29030022565820532056511b0d00204a203529030037030020452034290300370300204b202c290300370300203a20062903003703002039201d2903003703002038201c290300370300200120012903f8073703f801200120012903d0023703a0034100212b2058215220562155201a212020562153205621540b201b211a201b2015470d000b20152133202b2122202021270c050b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b200c201541a087c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b200c201541b087c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b200141003602d802200142043703d002202720226a214e0240024020330d00410121164100210c0c010b2015417f6a213f41012116204e4101712124410021072033210c4100211d02400240024002400240034002400240024002400240024002400240200c201d4d0d002021201d4102746a2228280200221428020841016a220c41004c0d01201d41016a21232014200c36020820142d00300d072015201d2015201d1b417f6a220c4d0d022021200c4102746a2231280200223628020841016a220c41004c0d032036200c3602080240200041086a222f280200220c0d002023210c201d211c0c070b20002802002217200c412c6c6a2106203641106a210e201441106a211a202b45201d20204671212520240d044100211b201d211c034002400240201a2017410c6a220c460d00200c201a412010e7070d010b201741086a2219280200221041306c2111410021082017280200221e210c024003402011450d02200e200c460d01200c200e412010e7072118200841016a2108201141506a2111200c41306a210c20180d000b20184541016a41017120086a417f6a21080b0240427f201e200841306c6a220c290320225420527c225320532054542211200c41286a290300225320557c2011ad7c225620535420562053511b22111b4200205420527d22582058205456205320557d2054205254ad7d225420535620542053511b22181b201c410171221e1b2253427f205620111b4200205420181b201e1b225484500d00200c41206a220c2053370300200c20543703080c010b200c200c41306a20102008417f736a41306c10e5071a20192010417f6a36020041002122410020162026201b461b211602402025450d00202021272020211c0c010b2015201d4d0d0b2028280200220c28020041016a221141014d0d11200c20113602002031280200221128020041016a220841014d0d11201120083602000240200720012802d402470d00200141d0026a20074101108d0120012802d80221070b20012802d00220074103746a220820113602042008200c3602002001200741016a22073602d802202b212220202127201d211c0b201b41016a211b2017412c6a22172006470d000c060b0b201d200c41c087c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b200c201541d087c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b4100211b201d211c034002400240201a2017410c6a220c460d00200c201a412010e7070d010b201741086a2219280200221041306c2111410021082017280200221e210c024003402011450d02200e200c460d01200c200e412010e7072118200841016a2108201141506a2111200c41306a210c20180d000b20184541016a41017120086a417f6a21080b02404200201e200841306c6a220c290320225420527d22532053205456200c41286a290300225320557d2054205254ad7d225620535620562053511b22111b427f205420527c225820582054542218205320557c2018ad7c225420535420542053511b22181b201c410171221e1b22534200205620111b427f205420181b201e1b225484500d00200c41206a220c2053370300200c20543703080c010b200c200c41306a20102008417f736a41306c10e5071a20192010417f6a36020041002122410020162026201b461b211602402025450d00202021272020211c0c010b2015201d4d0d062028280200220c28020041016a22114102490d0c200c20113602002031280200221128020041016a22084102490d0c201120083602000240200720012802d402470d00200141d0026a20074101108d0120012802d80221070b20012802d00220074103746a220820113602042008200c3602002001200741016a22073602d802202b212220202127201d211c0b201b41016a211b2017412c6a22172006470d000b0b201c41016a210c0b2015200c4100203f201c4b1b220c4d0d032021200c4102746a280200222528020841016a220c41004c0d042025200c3602080240202f280200220e450d0020002802002217200e412c6c6a2106202b410146201d202046712131202541106a2108201441106a211b4100211a202120234100203f201d4b1b222f4102746a2130034002400240201b2017410c6a220c460d00200c201b412010e7070d010b201741086a2219280200221041306c210e410021112017280200221e210c02400340200e450d022008200c460d01200c2008412010e7072118201141016a2111200e41506a210e200c41306a210c20180d000b20184541016a41017120116a417f6a21110b201e201141306c6a220c2903202154200c41286a2903002153024002400240201c410171450d0020240d014200205320557d2054205254ad7d2256205420527d2258205456205620535620562053511b220e1b215342002058200e1b21540c020b024020240d00427f205320557c205420527c2256205454220ead7c2254200e205420535420542053511b220e1b2153427f2056200e1b21540c020b4200205320557d2054205254ad7d2256205420527d2258205456205620535620562053511b220e1b215342002058200e1b21540c010b427f205320557c205420527c2256205454220ead7c2254200e205420535420542053511b220e1b2153427f2056200e1b21540b02402054205384500d00200c41206a220c2054370300200c20533703080c010b200c200c41306a20102011417f736a41306c10e5071a20192010417f6a360200410020162026201a461b21164101212202402031450d00202021272020211c0c010b2015201d4d0d082028280200220c28020041016a220e41014d0d0b200c200e3602002015202f4d0d092030280200220e28020041016a221141014d0d0b200e20113602000240200720012802d402470d00200141d0026a20074101108d0120012802d80221070b20012802d00220074103746a2211200e3602042011200c3602002001200741016a22073602d802202b212220202127201d211c0b201a41016a211a2017412c6a22172006470d000b2025280208210c0b2025200c417f6a36020820362036280208417f6a3602082014280208210c0b2014200c417f6a3602082015210c2023211d20232033470d000b2015210c0c050b201d201541e087c3001036000b200c201541f087c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b201d2015418088c3001036000b202f2015419088c3001036000b024020224101470d002027200c417f6a460d090b41c0001027220e450d12200e20012903a003370000200e20012903f801370020200e41186a2038290300370000200e41106a2039290300370000200e41086a203a290300370000200e41286a204b290300370000200e41306a2045290300370000200e41386a204a2903003700000240204e20504b0d002041417f6a221b450d0702402041450d004100210c41012111024002400340201121082042200c4102746a2217280200220c280200221141016a221841014d0d05200c20183602000240200c28020841016a41004c0d00200c20113602002037200c41286a290000370300200141e8046a41106a200c41206a290000370300200141e8046a41086a200c41186a2900003703002001200c2900103703e80420082041460d02204220084102746a221a280200220c280200221141016a221841014d0d06200c2018360200200c28020841016a41004c0d03200c20113602002035200c41286a2900003703002034200c41206a290000370300202c200c41186a2900003703002001200c2900103703f8074100210c02400340200c41c000460d01200e200c6a2111200c41206a210c2011200141e8046a412010e7070d000b4100210c0340200c41c000460d01200e200c6a2111200c41206a210c2011200141f8076a412010e7070d000c0e0b0b201a201728020010da032008201b460d0c200841016a21112008210c0c010b0b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b2008204141d088c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b4100410041c088c3001036000b2040417f6a221b450d052040450d014100210c41012111034020112108202e200c4102746a2217280200220c280200221141016a221841014d0d01200c2018360200200c28020841016a41004c0d03200c20113602002037200c41286a290000370300200141e8046a41106a200c41206a290000370300200141e8046a41086a200c41186a2900003703002001200c2900103703e80420082040460d04202e20084102746a221a280200220c280200221141016a221841014d0d01200c2018360200200c28020841016a41004c0d05200c20113602002035200c41286a2900003703002034200c41206a290000370300202c200c41186a2900003703002001200c2900103703f8074100210c02400340200c41c000460d01200e200c6a2111200c41206a210c2011200141e8046a412010e7070d000b4100210c0340200c41c000460d01200e200c6a2111200c41206a210c2011200141f8076a412010e7070d000c080b0b201a201728020010da032008201b460d06200841016a21112008210c0c000b0b00000b4100410041a088c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b2008204041b088c3001036000b41cc8ccc004118200141e0036a41f086c30041f48ccc00103a000b20014188046a20012802a80410da030c010b200141a8046a20012802880410da030b200e10290b20012802d002221b20074103746a210820012802d402211c201b210e02400240024002402007450d00201b2111024003402011280200220c450d01024002400240200c201141046a280200220e10dd030d00200e200c10dd03450d02200e2802080d08200e41086a2117200e417f360208200e410c6a2118200e28020c221a450d01201a201a280200417f6a3602002018280200221a2802000d01201a41086a10dc032018280200221a201a280204417f6a3602042018280200221a2802040d01201a10290c010b200c2802080d06200c41086a2117200c417f360208200c410c6a2118200c28020c221a450d00201a201a280200417f6a3602002018280200221a2802000d00201a41086a10dc032018280200221a201a280204417f6a3602042018280200221a2802040d00201a10290b201841003602002017201728020041016a3602000b200e200e280200417f6a2218360200024020180d000240200e28020c2218450d0020182018280200417f6a360200200e28020c22182802000d00201841086a10dc03200e28020c22182018280204417f6a360204200e28020c22182802040d00201810290b200e200e280204417f6a221836020420180d00200e10290b200c200c280200417f6a220e3602000240200e0d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d00200e41086a10dc03200c28020c220e200e280204417f6a360204200c28020c220e2802040d00200e10290b200c200c280204417f6a220e360204200e0d00200c10290b201141086a22112008470d000c030b0b201141086a210e0b2008200e460d000340200e220c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2211450d0020112011280200417f6a360200200e28020c22112802000d00201141086a10dc03200e28020c22112011280204417f6a360204200e28020c220e2802040d00200e10290b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10290b200c41086a210e200c41046a220c28020022112011280200417f6a3602000240200c28020022112802000d000240201128020c2218450d0020182018280200417f6a360200201128020c22182802000d00201841086a10dc03201128020c22182018280204417f6a360204201128020c22112802040d00201110290b200c28020022112011280204417f6a360204200c280200220c2802040d00200c10290b2008200e470d000b0b0240201c41ffffffff0171450d00201b10290b02402015450d002015410274210e2021210c0340200c28020022112011280200417f6a3602000240200c28020022112802000d000240201128020c2208450d0020082008280200417f6a360200201128020c22082802000d00200841086a10dc03201128020c22082008280204417f6a360204201128020c22112802040d00201110290b200c28020022112011280204417f6a360204200c28020022112802040d00201110290b200c41046a210c200e417c6a220e0d000b0b0240204f41ffffffff0371450d00202110290b02402041450d002042210c0340200c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2211450d0020112011280200417f6a360200200e28020c22112802000d00201141086a10dc03200e28020c22112011280204417f6a360204200e28020c220e2802040d00200e10290b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10290b200c41046a210c2029417c6a22290d000b0b0240204d41ffffffff0371450d00204210290b203c203c280200417f6a220c3602000240200c0d000240203c28020c220c450d00200c200c280200417f6a360200203c28020c220c2802000d00200c41086a10dc03203c28020c220c200c280204417f6a360204203c28020c220c2802040d00200c10290b203c203c280204417f6a220c360204200c0d00203c10290b201641ff0171210802402040450d00202e210c0340200c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2211450d0020112011280200417f6a360200200e28020c22112802000d00201141086a10dc03200e28020c22112011280204417f6a360204200e28020c220e2802040d00200e10290b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10290b200c41046a210c202a417c6a222a0d000b0b203220086a2132204c41ffffffff0371450d02202e10290c020b41c78dcc004110200141e0036a41c8a7c70041e88dcc00103a000b41c78dcc004110200141e0036a41c8a7c70041e88dcc00103a000b202d202d280200417f6a220c3602000240200c0d000240202d28020c220c450d00200c200c280200417f6a360200202d28020c220c2802000d00200c41086a10dc03202d28020c220c200c280204417f6a360204202d28020c220c2802040d00200c10290b202d202d280204417f6a220c360204200c0d00202d10290b20012802a804220c200c280200417f6a220e3602000240200e0d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d00200e41086a10dc03200c28020c220e200e280204417f6a360204200c28020c220e2802040d00200e10290b200c200c280204417f6a220e360204200e0d00200c10290b200128028804220c200c280200417f6a220e360200200e0d010240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d00200e41086a10dc03200c28020c220e200e280204417f6a360204200c28020c220e2802040d00200e10290b200c200c280204417f6a220e360204200e0d01200c10290c010b200c200c280200417f6a220e3602000240200e0d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d00200e41086a10dc03200c28020c220e200e280204417f6a360204200c28020c220e2802040d00200e10290b200c200c280204417f6a220e360204200e0d00200c10290b203241016a2132201c201c280200417f6a220c360200200c0d000240201c28020c220c450d00200c200c280200417f6a360200201c28020c220c2802000d00200c41086a10dc03201c28020c220c200c280204417f6a360204201c28020c220c2802040d00200c10290b201c201c280204417f6a220c360204200c0d00201c10290b0240200041086a280200220e20264d0d002000280200220c203d6a28020820324d0d020c010b0b2026200e41e086c3001036000b202641016a22262051470d000b20012802c804220c450d0220012802d0042117024020012802cc04220e450d000340200c2802a003210c200e417f6a220e0d000b0b2017450d014100211102400340200c450d014100210802402011200c2f0106490d00034002400240200c280200220e0d00410021114100210e0c010b200841016a2108200c2f010421110b200c1029200e210c2011200e2f01064f0d000b200e210c0b201141016a210e200c20114102746a41f4026a2802002118200c201141216c6a41286a2d0000211a0240024020080d00200e21110c010b200c200e4102746a41a0036a280200210c410021112008417f6a220e450d000340200c2802a003210c200e417f6a220e0d000b0b201a41ff01714102460d032017417f6a211720182018280200417f6a220e3602000240200e0d000240201828020c220e450d00200e200e280200417f6a360200201828020c220e2802000d00200e41086a10dc03201828020c220e200e280204417f6a360204201828020c220e2802040d00200e10290b20182018280204417f6a220e360204200e0d00201810290b20170d000c030b0b41a79dc800412b41e0f6c4001033000b2026200e41d086c3001036000b200c450d00200c280200210e200c1029200e450d000340200e280200210c200e1029200c210e200c0d000b0b200141d0106a24000f0b1030000bad0302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b220342ffff03420010e007200441286a20042903382206200441386a41086a290300220742ffff03420010d507200441186a20022003200620022004290328852003200441286a41086a2903008584420052ad7c22084201200842015620072008200654ad7c22064200522006501b22051b22082006420020051b220610e0070240024002402004290318220742808004544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2008200610e0072004290308220342808004544100200441086a41086a290300501b450d012007a741ffff037122050d0241f0a6c700411941dcaac7001033000b2004411136024c200441ecaac70036024841f1a8c70041de00200441c8006a41a8a7c70041d0a9c700103a000b2004411136024c200441ecaac70036024841f1a8c70041de00200441c8006a41a8a7c70041ccaac700103a000b200441d0006a24002003a741ffff037141ffff036c20056e0b810103017f017e027f230041106b220324000240024002402002ad4220862000ad8410232204428080808010540d00410121022004a722052d0000220641014b0d0020060e020102010b41e891cc00412e200341086a419893cc00419892cc00103a000b410021020b2005102902402001450d00200010290b200341106a240020020b3400200041f5bec50036020420004100360200200041146a4104360200200041106a4180c4c200360200200041086a42083702000bcd0e05067f017e017f017e057f230041f0026b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541024b0d0420050e03010203010b200042033703000c040b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020041002105200241003a0028200341726a21030240034020092005460d01200241086a20056a200420056a2206410d6a2d00003a00002001200336020420012006410e6a3602002002200541016a22063a00282003417f6a21032006210520064120470d000b20024190026a41086a200241086a41086a290300220a370300200241f0016a41186a2204200241086a41186a290300370300200241f0016a41106a2205200241086a41106a290300370300200241f0016a41086a2203200a37030020022002290308220a370390022002200a3703f001200241086a200110e10220022d00084101460d01200241a8016a2201200241c1006a290000370300200241a0016a2206200241396a29000037030020024198016a2209200241316a29000037030020024190016a220b200241296a290000370300200241f0006a41186a220c200241216a290000370300200241f0006a41106a220d200241196a290000370300200241f0006a41086a220e200241116a290000370300200241d0016a41086a220f2003290300370300200241d0016a41106a22032005290300370300200241d0016a41186a2205200429030037030020022002290009370370200220022903f0013703d001200241b0016a41186a22042005290300370300200241b0016a41106a22052003290300370300200241b0016a41086a2203200f290300370300200220022903d0013703b001200041106a20073602002000200837030820004200370300200020022903b0013702142000411c6a2003290300370200200041246a20052903003702002000412c6a2004290300370200200020022903703702342000413c6a200e290300370200200041c4006a200d290300370200200041cc006a200c290300370200200041d4006a200b290300370200200041dc006a2009290300370200200041e4006a2006290300370200200041ec006a20012903003702000c050b200541ff0171450d00200241003a00280b200042033703000c030b024020064104490d002004280001210620012003417b6a22053602042001200441056a36020020054108490d0020004201370300200429000521082001200341736a36020420012004410d6a360200200041106a200636020020002008370308200041146a200241086a41e40010e4071a0c030b200042033703000c020b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020041002105200241003a0028200341726a21030240034020092005460d01200241086a20056a200420056a2206410d6a2d00003a00002001200336020420012006410e6a3602002002200541016a22063a00282003417f6a21032006210520064120470d000b20024190026a41086a200241086a41086a290300220a370300200241f0016a41186a2204200241086a41186a290300370300200241f0016a41106a2205200241086a41106a290300370300200241f0016a41086a2203200a37030020022002290308220a370390022002200a3703f001200241086a200110e10220022d00084101460d01200241a8016a2201200241c1006a290000370300200241a0016a2206200241396a29000037030020024198016a2209200241316a29000037030020024190016a220b200241296a290000370300200241f0006a41186a220c200241216a290000370300200241f0006a41106a220d200241196a290000370300200241f0006a41086a220e200241116a290000370300200241d0016a41086a220f2003290300370300200241d0016a41106a22032005290300370300200241d0016a41186a2205200429030037030020022002290009370370200220022903f0013703d001200241b0016a41186a22042005290300370300200241b0016a41106a22052003290300370300200241b0016a41086a2203200f290300370300200220022903d0013703b001200041106a20073602002000200837030820004202370300200020022903b0013702142000411c6a2003290300370200200041246a20052903003702002000412c6a2004290300370200200020022903703702342000413c6a200e290300370200200041c4006a200d290300370200200041cc006a200c290300370200200041d4006a200b290300370200200041dc006a2009290300370200200041e4006a2006290300370200200041ec006a20012903003702000c030b200541ff0171450d00200241003a00280b200042033703000c010b200042033703000b200241f0026a24000ba311010c7f23004190036b2202240041002103200241003a0088032001280204417f6a2104024002400240024003402004417f460d01200241c8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a0088032004417f6a210420052103200541c000470d000b200241386a2204200241c8026a41386a290300370300200241306a2201200241c8026a41306a290300370300200241286a2203200241c8026a41286a290300370300200241206a2205200241c8026a41206a2206290300370300200241186a2207200241c8026a41186a290300370300200241106a2208200241c8026a41106a290300370300200241086a2209200241c8026a41086a290300370300200220022903c80237030020024190016a41186a200429030037030020024190016a41106a200129030037030020024190016a41086a20032903003703002002200529030037039001200241a8026a41186a2007290300370300200241a8026a41106a2008290300370300200241a8026a41086a22042009290300370300200220022903003703a802200241c8026a200241a8026a106f4101210120022d00c8024101460d0120024188026a410f6a200241a8026a410f6a29000037000020024188026a41086a2004290000370300200220022900a80237038802410221030c020b0240200341ff0171450d00200241003a0088030b200041013a00000c020b200241a6026a20022d00cb023a000020024188026a41086a200241d5026a29000037030020024197026a200241dc026a29000037000020024184026a20062d00003a0000200220022f00c9023b01a402200220022900cd02370388022002200241e4026a280200360280024100210120022d00cc0221030b200241fc016a41026a2205200241a4026a41026a2d00003a0000200241e0016a41086a220720024188026a41086a290300370300200241e0016a410f6a220820024188026a410f6a290000370000200241d8016a41046a220920024180026a41046a2d00003a0000200220022f01a4023b01fc0120022002290388023703e00120022002280280023602d801200241e0016a210402400240024020010d00200241d4016a41026a20052d00003a0000200241b8016a41086a2007290300370300200241b8016a410f6a2008290000370000200241b0016a41046a20092d00003a0000200220022f01fc013b01d401200220022903e0013703b801200220022802d8013602b001200241a8026a41186a20024190016a41186a290300370300200241a8026a41106a20024190016a41106a290300370300200241a8026a41086a20024190016a41086a29030037030020022002290390013703a802200241c8026a200241a8026a106f410121050240024020022d00c8024101460d0020024188026a410f6a200241a8026a410f6a29000037000020024188026a41086a200241a8026a41086a290000370300200220022900a80237038802410221010c010b200241a6026a20022d00cb023a000020024190026a200241d5026a29000037030020024197026a200241dc026a29000037000020024184026a200241e8026a2d00003a0000200220022f00c9023b01a402200220022900cd02370388022002200241e4026a280200360280024100210520022d00cc0221010b200241fc016a41026a2207200241a4026a41026a22082d00003a0000200241e0016a41086a220920024188026a41086a2206290300370300200241e0016a410f6a220a20024188026a410f6a220b290000370000200241d8016a41046a220c20024180026a41046a220d2d00003a0000200220022f01a4023b01fc0120022002290388023703e00120022002280280023602d8012005450d01200121030b200241c8026a410f6a2004410f6a290000370000200241c8026a41086a200441086a290000370300200220042900003703c802410121040c010b2002418c016a41026a20072d00003a000020062009290300370300200b200a290000370000200d200c2d00003a00002008200241d4016a41026a2d00003a0000200220022f01fc013b018c01200220022903e00137038802200220022802d80136028002200220022f01d4013b01a402200241c8026a410f6a2204200241b8016a410f6a290000370000200241c8026a41086a2205200241b8016a41086a290300370300200220022903b8013703c802200241e0016a41046a200241b0016a41046a2d00003a0000200220022802b0013602e001200241a8026a410f6a2004290000370000200241a8026a41086a2005290300370300200220022903c8023703a802410021040b20024188016a41026a2205200241a4026a41026a2d00003a0000200241f0006a41086a2207200241a8026a41086a290300370300200241f0006a410f6a2208200241a8026a410f6a290000370000200241e8006a41046a2209200241e0016a41046a2d00003a0000200241e4006a41026a22062002418c016a41026a2d00003a0000200220022f01a4023b018801200220022903a802370370200220022802e001360268200220022f018c013b0164200241c8006a410f6a220a20024188026a410f6a290000370000200241c8006a41086a220b20024188026a41086a290300370300200241c0006a41046a220c20024180026a41046a2d00003a000020022002290388023703482002200228028002360240024020040d00200020022f0188013b0001200041046a20033a0000200041056a20022903703700002000411c6a2002280268360000200041216a20022f01643b0000200041036a20052d00003a00002000410d6a2007290300370000200041146a2008290000370000200041206a20092d00003a0000200041236a20062d00003a0000200041246a20013a0000200041003a0000200041256a20022903483700002000412d6a200b290300370000200041346a200a2900003700002000413c6a2002280240360000200041c0006a200c2d00003a00000c010b200041013a00000b20024190036a24000bd50101037f230041106b2203240002400240200241c8026c4104722204417f4c0d00200410272205450d0120034100360208200320043602042003200536020020022003107102402002450d00200241c8026c2102034002400240200141b4026a2802004102470d00200341003a000f20032003410f6a410110720c010b200341013a000f20032003410f6a410110722001200310e3020b200141c8026a2101200241b87d6a22020d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1038000b1039000bec0101037f230041106b220224000240024020002802a80222030d00200241003a00072001200241076a41011072200241076a21030c010b200241013a00072001200241076a41011072200041b0026a2802002204200110712001200320041072200241076a21030b200220002d00c0023a000720012003410110722000200110bf020240024020002802b4024101460d00200241003a000720012003410110720c010b200241013a000720012003410110722002200041b8026a2802003602082001200241086a410410722002200041bc026a28020036020c20012002410c6a410410720b200241106a24000bbc0601087f230041106b2202240020024100360208200242013703000240412010272203450d00200241203602042002200336020020032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a290000370000200241203602082002200041206a36020c2002410c6a200210e5012002200041306a36020c2002410c6a200210e501200041c0006a2802002103200041c8006a280200220420021071024002402004450d00200441306c210503400240024020022802042206200228020822046b4120490d00200441206a2107200228020021080c010b200441206a22072004490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102722080d010c060b2002280200210820062009460d00200820062009102b2208450d050b20022009360204200220083602000b200820046a2204200341106a290000370000200441186a200341286a290000370000200441106a200341206a290000370000200441086a200341186a290000370000200220073602082002200336020c2002410c6a200210e501200341306a2103200541506a22050d000b0b20002802502103200041d8006a2802002204200210710240024020040d002002280208210420022802042109200228020021050c010b200441057421004100200228020822046b210620022802042108034002400240200820066a4120490d0020022802002105200821090c010b200441206a22072004490d03200841017422052007200520074b1b22094100480d030240024020080d00024020090d00410121050c020b200910272205450d060c010b2002280200210520082009460d00200520082009102b2205450d050b2002200936020420022005360200200921080b200520046a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a2900003700002002200441206a2204360208200641606a2106200341206a2103200041606a22000d000b0b20012902002004ad4220862005ad84100302402009450d00200510290b200241106a24000f0b1032000b1030000b804802077f027e230041106b220224000240024002400240024002400240024002400240024002400240024041b00410272203450d000240024020002802004102470d00200341003a0000410121040c010b200341013a00000240024020002802004101460d00200341003a00012003200041086a2900003700022003410a6a200041106a290000370000200341126a200041186a2900003700002003411a6a200041206a29000037000020022000280204220436020c412221050c010b200341013a000120022000280204220436020c410221050b200320056a2004360000200320054104726a2204200041306a29030037000820042000290328370000200541147221040b0240024020002802384102460d0041b00421050240200441b004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d0420042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802384101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22076b4120490d00200541216a2104200621080c010b41000d0620064101742205200741206a2204200520044b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320076a2205200041c0006a2206290000370000200541186a200641186a290000370000200541106a200641106a290000370000200541086a200641086a29000037000020022000413c6a280200220736020c2002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028023c220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041e8006a29030021092000290360210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b41b00421050240200441b004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d0320042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802704102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802704101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041f8006a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041f4006a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a000020022000280274220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041a0016a2903002109200029039801210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802a8014102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802a8014101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041b0016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041ac016a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802ac01220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041d8016a290300210920002903d001210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802e0014102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802e0014101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041e8016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041e4016a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802e401220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a200736000020004190026a2903002109200029038802210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024002402000280298024102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a2104024002402000280298024101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041a0026a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020022000419c026a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028029c02220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041c8026a290300210920002903c002210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802d0024102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802d0024101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041d8026a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041d4026a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802d402220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a200736000020004180036a290300210920002903f802210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d04200641017422072005200720054b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024002402000280288034102460d00024020052004470d00200441016a22052004490d04200441017422062005200620054b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a2104024002402000280288034101460d000240024020052004460d0020052106200421050c010b200541016a22042005490d06200541017422062004200620044b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d06200641017422072008200720084b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a220420004190036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020022000418c036a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b200541016a22042005490d05200541017422062004200620044b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028028c03220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d04200841017422072006200720064b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041b8036a290300210920002903b003210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d04200641017422072005200720054b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d00200441016a22052004490d03200441017422062005200620054b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024020002802c0034102460d00024020052004470d00200441016a22052004490d03200441017422062005200620054b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41013a0000200441016a2104024020002802c0034101460d00024020052004460d0020052106200421050c070b200541016a22042005490d09200541017422062004200620044b1b22064100480d09024020050d00410021052006102722030d070c0d0b20052006460d06200320052006102b22030d060c0c0b024020052004460d0020052108200421050c050b200541016a22042005490d08200541017422062004200620044b1b22084100480d08024020050d0041002105200810272203450d0c0c050b20052008460d04200320052008102b2203450d0b0c040b20052004470d02200441016a22052004490d07200441017422062005200620054b1b22054100480d07024020040d0041002104024020050d00410121030c040b200510272203450d0b0c030b20042005460d02200320042005102b2203450d0a0c020b1039000b1032000b200320046a41003a0000200441016a21040c030b200320056a41013a0000200220002802c403220736020c200541016a21042002410c6a21050c010b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d03200641017422072008200720084b1b22084100480d03024020060d00024020080d00410121030c020b200810272203450d070c010b20062008460d00200320062008102b2203450d060b200320046a2204200041c8036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041c4036a280200220736020c200541216a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d02200841017422072006200720064b1b22064100480d020240024020080d00024020060d00410121030c020b200610272203450d070c010b20082006460d00200320082006102b2203450d060b200528020021070b200320046a2007360000200041f0036a290300210920002903e803210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d02200641017422072005200720054b1b22054100480d02024020060d00024020050d00410121030c020b200510272203450d060c010b20062005460d00200320062005102b2203450d050b200320086a220620093700082006200a370000200441146a21040b024002400240024020002802f8034102460d00024020052004470d00200441016a22052004490d05200441017422062005200620054b1b22054100480d05024020040d0041002104024020050d00410121030c020b200510272203450d090c010b20042005460d00200320042005102b2203450d080b200320046a41013a0000200441016a2104024020002802f8034101460d00024020052004460d0020052106200421050c040b200541016a22042005490d05200541017422062004200620044b1b22064100480d05024020050d0041002105200610272203450d090c040b20052006460d03200320052006102b2203450d080c030b024020052004460d0020052108200421050c020b200541016a22042005490d04200541017422062004200620044b1b22084100480d04024020050d0041002105200810272203450d080c020b20052008460d01200320052008102b2203450d070c010b024020052004470d00200441016a22052004490d04200441017422002005200020054b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d080c010b20042005460d00200320042005102b2203450d070b200320046a41003a0000200441016a21000c050b200320056a41013a0000200220002802fc03220736020c200541016a21042002410c6a21050c010b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d02200641017422072008200720084b1b22084100480d02024020060d00024020080d00410121030c020b200810272203450d060c010b20062008460d00200320062008102b2203450d050b200320046a220420004180046a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041fc036a280200220736020c200541216a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d01200841017422072006200720064b1b22064100480d010240024020080d00024020060d00410121030c020b200610272203450d060c010b20082006460d00200320082006102b2203450d050b200528020021070b200320046a2007360000200041a8046a290300210920002903a004210a02402006200441046a22006b410f4d0d00200621050c020b200041106a22052000490d00200641017422082005200820054b1b22054100480d00024020060d00024020050d00410121030c030b200510272203450d040c020b20062005460d01200320062005102b2203450d030c010b1032000b200320006a220020093700082000200a370000200441146a21000b20012902002000ad4220862003ad84100320050d010c020b1030000b200310290b200241106a24000f0b1030000ba50301067f230041106b22022400024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0141002104410121050c020b1038000b2004102722050d001039000b200241003602082002200536020020022004360204024002400240024020030d00024020040d00410110272205450d0420024101360204200220053602000b200541003a0000410121040c010b024020040d00410110272205450d0320024101360204200220053602000b200541013a000020024101360208200141086a2802002204200210710240024020022802042206200228020822056b2004490d00200228020021010c010b200520046a22012005490d02200641017422072001200720014b1b22074100480d020240024020060d00024020070d00410121010c020b2007102722010d010c050b2002280200210120062007460d00200120062007102b2201450d040b20022007360204200220013602000b200120056a2003200410e4071a200520046a21040b20002002290300370200200041086a2004360200200241106a24000f0b1032000b1030000bf74902097f027e230041106b22022400024002400240024002400240024002400240410141b104200128020022034103461b220410272205450d00024020034103470d00200541003a0000410121010c070b200541013a0000410221060240024020034102470d00200541003a00010c010b200541013a00010240024020012802004101460d00200541003a0002024002402004417d6a411f4d0d00200421070c010b20052004200441017422064123200641234b1b2207102b2205450d0c0b2005200141086a22042900003700032005411b6a200441186a290000370000200541136a200441106a2900003700002005410b6a200441086a29000037000020022001280204220836020c2002410c6a2109412321060c010b200541013a000220022001280204220836020c2002410c6a210941032106200421070b2006410472210a02400240200720066b41034d0d00200721030c010b20074101742204200a2004200a4b1b22034100480d0320072003460d00200520072003102b2205450d0a200928020021080b200520066a200836000020064114722106200141306a290300210b2001290328210c024002402003200a6b410f4d0d00200321040c010b200341017422042006200420064b1b22044100480d0320032004460d00200520032004102b2205450d0a0b2005200a6a2203200b3700082003200c3700000b0240024020012802384102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d0420062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a21060240024020012802384101460d000240024020042006460d0020042103200621040c010b41000d0620044101742206200441016a2203200620034b1b22034100480d06024020040d00410021042003102722050d010c0e0b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b41000d062003410174220a200641206a2207200a20074b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141c0006a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a29000037000020022001413c6a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b41000d0520044101742206200441016a2203200620034b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a00002002200128023c220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b41000d04200a4101742203200641046a2207200320074b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a2007360000200141e8006a290300210b2001290360210c024002402003200641046a220a6b410f4d0d00200321040c010b41000d0420034101742204200a41106a2207200420074b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d0320062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b0240024020012802704102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d0c0c010b20062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a21060240024020012802704101460d000240024020042006460d0020042103200621040c010b41000d0620044101742206200441016a2203200620034b1b22034100480d06024020040d0041002104200310272205450d0e0c010b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b41000d062003410174220a200641206a2207200a20074b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141f8006a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141f4006a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b41000d0520044101742206200441016a2203200620034b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a000020022001280274220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b41000d04200a4101742203200641046a2207200320074b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a2007360000200141a0016a290300210b200129039801210c024002402003200641046a220a6b410f4d0d00200321040c010b41000d0420034101742204200a41106a2207200420074b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b0240024020012802a8014102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d0c0c010b20062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a21060240024020012802a8014101460d000240024020042006460d0020042103200621040c010b41000d0620044101742206200441016a2203200620034b1b22034100480d06024020040d0041002104200310272205450d0e0c010b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b41000d062003410174220a200641206a2207200a20074b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141b0016a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141ac016a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b41000d0520044101742206200441016a2203200620034b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a0000200220012802ac01220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b41000d04200a4101742203200641046a2207200320074b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a2007360000200141d8016a290300210b20012903d001210c024002402003200641046a220a6b410f4d0d00200321040c010b41000d0420034101742204200a41106a2207200420074b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b0240024020012802e0014102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d0c0c010b20062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a21060240024020012802e0014101460d000240024020042006460d0020042103200621040c010b41000d0620044101742206200441016a2203200620034b1b22034100480d06024020040d0041002104200310272205450d0e0c010b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b41000d062003410174220a200641206a2207200a20074b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141e8016a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141e4016a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b41000d0520044101742206200441016a2203200620034b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a0000200220012802e401220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b41000d04200a4101742203200641046a2207200320074b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a200736000020014190026a290300210b200129038802210c024002402003200641046a220a6b410f4d0d00200321040c010b41000d0420034101742204200a41106a2207200420074b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b024002402001280298024102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d0c0c010b20062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a2106024002402001280298024101460d000240024020042006460d0020042103200621040c010b41000d0620044101742206200441016a2203200620034b1b22034100480d06024020040d0041002104200310272205450d0e0c010b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b41000d062003410174220a200641206a2207200a20074b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141a0026a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a29000037000020022001419c026a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b41000d0520044101742206200441016a2203200620034b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a00002002200128029c02220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b41000d04200a4101742203200641046a2207200320074b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a2007360000200141c8026a290300210b20012903c002210c024002402003200641046a220a6b410f4d0d00200321040c010b41000d0420034101742204200a41106a2207200420074b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b0240024020012802d0024102460d00024020042006470d0041000d0420064101742204200641016a2203200420034b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d0c0c010b20062004460d00200520062004102b2205450d0b0b200520066a41013a0000200641016a21060240024020012802d0024101460d000240024020042006460d0020042103200621040c010b200441016a22062004490d06200441017422032006200320064b1b22034100480d06024020040d0041002104200310272205450d0e0c010b20042003460d00200520042003102b2205450d0d0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b200641206a220a2006490d0620034101742207200a2007200a4b1b220a4100480d06024020030d000240200a0d00410121050c020b200a10272205450d0e0c010b2003200a460d0020052003200a102b2205450d0d0b200520066a2206200141d8026a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141d4026a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b200441016a22062004490d05200441017422032006200320064b1b220a4100480d05024020040d0041002104200a10272205450d0d0c010b2004200a460d0020052004200a102b2205450d0c0b200520046a41013a0000200220012802d402220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b200641046a22032006490d04200a41017422072003200720034b1b22034100480d0402400240200a0d00024020030d00410121050c020b200310272205450d0d0c010b200a2003460d002005200a2003102b2205450d0c0b200428020021070b200520066a200736000020014180036a290300210b20012903f802210c024002402003200641046a220a6b410f4d0d00200321040c010b200a41106a2204200a490d04200341017422072004200720044b1b22044100480d04024020030d00024020040d00410121050c020b200410272205450d0c0c010b20032004460d00200520032004102b2205450d0b0b2005200a6a2203200b3700082003200c370000200641146a21060c010b024020042006470d0041000d0320064101742204200641016a2203200420034b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41003a0000200641016a21060b02402001280288034102460d00024020042006470d00200641016a22042006490d03200641017422032004200320044b1b22044100480d03024020060d0041002106024020040d00410121050c020b200410272205450d0b0c010b20062004460d00200520062004102b2205450d0a0b200520066a41013a0000200641016a2106024002402001280288034101460d000240024020042006460d0020042103200621040c010b200441016a22062004490d05200441017422032006200320064b1b22034100480d05024020040d0041002104200310272205450d0d0c010b20042003460d00200520042003102b2205450d0c0b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b200641206a220a2006490d0520034101742207200a2007200a4b1b220a4100480d05024020030d000240200a0d00410121050c020b200a10272205450d0d0c010b2003200a460d0020052003200a102b2205450d0c0b200520066a220620014190036a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a29000037000020022001418c036a280200220736020c200441216a21062002410c6a21040c010b0240024020042006460d002004210a200621040c010b200441016a22062004490d04200441017422032006200320064b1b220a4100480d04024020040d0041002104200a10272205450d0c0c010b2004200a460d0020052004200a102b2205450d0b0b200520046a41013a00002002200128028c03220736020c200441016a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b200641046a22032006490d03200a41017422072003200720034b1b22034100480d0302400240200a0d00024020030d00410121050c020b200310272205450d0c0c010b200a2003460d002005200a2003102b2205450d0b0b200428020021070b200520066a2007360000200141b8036a290300210b20012903b003210c024002402003200641046a220a6b410f4d0d00200321040c010b200a41106a2204200a490d03200341017422072004200720044b1b22044100480d03024020030d00024020040d00410121050c020b200410272205450d0b0c010b20032004460d00200520032004102b2205450d0a0b2005200a6a2203200b3700082003200c370000200641146a21060c040b20042006470d02200641016a22042006490d04200641017422032004200320044b1b22044100480d04024020060d0041002106024020040d00410121050c040b200410272205450d090c030b20062004460d02200520062004102b22050d020c070b1039000b1032000b200520066a41003a0000200641016a21060b0240024002400240024020012802c0034102460d00024020042006470d00200641016a22042006490d06200641017422032004200320044b1b22044100480d06024020060d0041002106024020040d00410121050c020b200410272205450d0a0c010b20062004460d00200520062004102b2205450d090b200520066a41013a0000200641016a2106024020012802c0034101460d00024020042006460d0020042103200621040c040b200441016a22062004490d06200441017422032006200320064b1b22034100480d06024020040d0041002104200310272205450d0a0c040b20042003460d03200520042003102b2205450d090c030b024020042006460d002004210a200621040c020b200441016a22062004490d05200441017422032006200320064b1b220a4100480d05024020040d0041002104200a10272205450d090c020b2004200a460d0120052004200a102b2205450d080c010b024020042006470d00200641016a22042006490d05200641017422032004200320044b1b22044100480d05024020060d0041002106024020040d00410121050c020b200410272205450d090c010b20062004460d00200520062004102b2205450d080b200520066a41003a0000200641016a21060c030b200520046a41013a0000200220012802c403220736020c200441016a21062002410c6a21040c010b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b200641206a220a2006490d0320034101742207200a2007200a4b1b220a4100480d03024020030d000240200a0d00410121050c020b200a10272205450d070c010b2003200a460d0020052003200a102b2205450d060b200520066a2206200141c8036a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141c4036a280200220736020c200441216a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b200641046a22032006490d02200a41017422072003200720034b1b22034100480d0202400240200a0d00024020030d00410121050c020b200310272205450d070c010b200a2003460d002005200a2003102b2205450d060b200428020021070b200520066a2007360000200141f0036a290300210b20012903e803210c024002402003200641046a220a6b410f4d0d00200321040c010b200a41106a2204200a490d02200341017422072004200720044b1b22044100480d02024020030d00024020040d00410121050c020b200410272205450d060c010b20032004460d00200520032004102b2205450d050b2005200a6a2203200b3700082003200c370000200641146a21060b024002400240024020012802f8034102460d00024020042006470d00200641016a22042006490d05200641017422032004200320044b1b22044100480d05024020060d0041002106024020040d00410121050c020b200410272205450d090c010b20062004460d00200520062004102b2205450d080b200520066a41013a0000200641016a2106024020012802f8034101460d00024020042006460d0020042103200621040c040b200441016a22062004490d05200441017422032006200320064b1b22034100480d05024020040d0041002104200310272205450d090c040b20042003460d03200520042003102b2205450d080c030b024020042006460d002004210a200621040c020b200441016a22062004490d04200441017422032006200320064b1b220a4100480d04024020040d0041002104200a10272205450d080c020b2004200a460d0120052004200a102b2205450d070c010b024020042006470d00200641016a22042006490d04200641017422012004200120044b1b22044100480d04024020060d0041002106024020040d00410121050c020b200410272205450d080c010b20062004460d00200520062004102b2205450d070b200520066a41003a0000200641016a21010c050b200520046a41013a0000200220012802fc03220736020c200441016a21062002410c6a21040c010b200520046a41003a0000024002402003200441016a22066b411f4d0d002003210a0c010b200641206a220a2006490d0220034101742207200a2007200a4b1b220a4100480d02024020030d000240200a0d00410121050c020b200a10272205450d060c010b2003200a460d0020052003200a102b2205450d050b200520066a220620014180046a2203290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200141fc036a280200220736020c200441216a21062002410c6a21040b02400240200a20066b41034d0d00200a21030c010b200641046a22032006490d01200a41017422072003200720034b1b22034100480d0102400240200a0d00024020030d00410121050c020b200310272205450d060c010b200a2003460d002005200a2003102b2205450d050b200428020021070b200520066a2007360000200141a8046a290300210b20012903a004210c02402003200641046a22016b410f4d0d00200321040c020b200141106a22042001490d002003410174220a2004200a20044b1b22044100480d00024020030d00024020040d00410121050c030b200410272205450d040c020b20032004460d01200520032004102b2205450d030c010b1032000b200520016a2201200b3700082001200c370000200641146a21010b200020013602082000200436020420002005360200200241106a24000f0b1030000b1030000b6401037f024041094101200128020022024101461b220310272204450d000240024020020d00200441003a0000410121010c010b200441013a000020042001290204370001410921010b2000200136020820002003360204200020043602000f0b1039000b960503027f017e057f230041d0006b2202240041f5bec500ad4280808080800184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941ccc8c200ad4280808080a00284100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240411010272203450d0020032001290000370000200341086a200141086a29000037000020022003ad42808080808002841002220129000037033820011029200241cc006a200341106a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2206417f4c0d01200228022821070240024020060d0041002101410121030c010b200610272203450d01200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1039000b1038000b1032000b1030000bbc0603027f017e077f230041d0006b2203240041f5bec500ad4280808080800184100122042900002105200341086a41086a200441086a290000370300200320053703082004102941f8c7c200ad4280808080e00284100122042900002105200341186a41086a200441086a29000037030020032005370318200410290240024002400240411010272204450d0020042001290000370000200441086a200141086a29000037000020032004ad42808080808002841002220129000037033820011029200341cc006a200441106a360200200320043602482003200341386a41086a3602442003200341386a360240200341286a200341c0006a107520041029200341c0006a2002280200200228020810eb022003280230220641206a2207200328024822086a2201417f4c0d01200328024021092003280228210a0240024020010d004100210b410121040c010b200110272204450d012001210b0b02400240200b410f4d0d00200b21020c010b200b41017422024110200241104b1b22024100480d030240200b0d002002102722040d010c050b200b2002460d002004200b2002102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020024170714110460d002002210b0c010b2002410174220b4120200b41204b1b220b4100480d032002200b460d0020042002200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2006490d00200b21020c010b200641206a22022006490d03200b410174220c2002200c20024b1b22024100480d03200b2002460d002004200b2002102b2204450d040b200441206a200a200610e4071a02400240200220076b2008490d002002210b0c010b20012007490d032002410174220b2001200b20014b1b220b4100480d03024020020d000240200b0d00410121040c020b200b10272204450d050c010b2002200b460d0020042002200b102b2204450d040b200420076a2009200810e4071a200020013602082000200b3602042000200436020002402003280244450d00200910290b0240200328022c450d00200a10290b200341d0006a24000f0b1039000b1038000b1032000b1030000bf00201057f230041206b220324000240024002400240200241046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b2003410036021820032005360210200320043602142002200341106a10710240024020032802142206200328021822056b2002490d0020032802102104200621070c010b200520026a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d00024020070d00410121040c020b2007102722040d010c060b2003280210210420062007460d00200420062007102b2204450d050b20032007360214200320043602100b200420056a2001200210e4071a2003200520026a2202ad4220862004ad8410022205290000370308200510292003411c6a200420026a360200200320043602182003200341106a3602142003200341086a3602102000200341106a107502402007450d00200410290b200341206a24000f0b1038000b1039000b1032000b1030000b860c04047f017e077f077e23004190016b22052400200520002001200220032004108a02024002400240024020052802000d00410121060c010b200541f0006a41186a4200370300200541f0006a41106a22074200370300200541f0006a41086a220642003703002005420037037041f5bec500ad42808080808001841001220829000021092006200841086a2900003703002005200937037020081029419bc1c200ad4280808080800284100122082900002109200541d0006a41086a220a200841086a2900003703002005200937035020081029200720052903502209370300200541306a41086a2006290300370300200541306a41106a2009370300200541306a41186a200a29030037030020052005290370370330200541f0006a200541306a10ed02024002402005280270220b0d004100210c20054100360218200542043703104104210b4100210d0c010b2005200529027422093702142005200b3602102009422088a7210d2009a7210c0b2001ad42e0007e2209422088a70d012009a72206417f4c0d010240024020060d00410821080c010b200610272208450d030b20054100360228200520083602202005200641e0006e360224200541206a4100200110a7012005280228210e02402001450d002000200141e0006c6a210f2005280220200e41e0006c6a2106200141057441606a4105762110200541346a21010340200541f0006a41086a2208200041086a290300370300200541f0006a41106a2207200041106a290300370300200541f0006a41186a220a200041186a29030037030020052000290300370370200041206a2903002109200041286a2903002111200041306a2903002112200041386a2903002113200541e0006a200041c0006a10ee02200541d0006a200041d0006a10ef02200141086a200541d0006a41086a28020036020020012005290350370200200a2903002114200729030021152008290300211620052903702117200641386a2013370300200641306a2012370300200641286a2011370300200641206a2009370300200641086a201637030020062017370300200641106a2015370300200641c0006a2005290360370300200641c8006a200541e0006a41086a280200360200200641186a2014370300200641cc006a2005290230370200200641d4006a200541306a41086a290200370200200641e0006a2106200041e0006a2200200f470d000b200e20106a41016a210e0b200541f8006a200e36020020052005290320370370200341ffffffff03712003470d0120034102742206417f4c0d010240024020060d00410421000c010b200610272200450d030b200541003602382005200036023020052006410276360234200541306a410020031098012005280230200528023822064102746a2002200341027410e4071a200541d0006a41086a2201200620036a220636020020054184016a20063602002005200529033037027c0240200d200c470d00200541106a200d41011094012005280214210c2005280210210b2005280218210d0b200b200d411c6c6a22062005290370370200200541f0006a41086a22002903002109200541f0006a41106a2208290300211120062004360218200641106a2011370200200641086a20093702002005200d41016a2207360218200541f0006a41186a420037030020084200370300200042003703002005420037037041f5bec500ad42808080808001841001220629000021092000200641086a2900003703002005200937037020061029419bc1c200ad42808080808002841001220629000021092001200641086a2900003703002005200937035020061029200820052903502209370300200541306a41086a2000290300370300200541306a41106a2009370300200541306a41186a20012903003703002005200529037037033002400240200b0d00200541306aad428080808080048410040c010b200541f0006a200b200710f002200541306aad4280808080800484200535027842208620052802702206ad84100302402005280274450d00200610290b200b200710f102200c450d00200c411c6c450d00200b10290b410021060b20054190016a240020060f0b1038000b1039000bef1104047f017e137f047e23004180036b220224002002412036022420022001360220200241286a2001ad42808080808004841007108b020240024002400240200228022822030d00200041003602000c010b200228022c21042002200241306a28020036023c20022003360238200241186a200241386a10c8010240024020022802180d00200228021c2205200228023c411c6e2201200120054b1bad421c7e2206422088a70d032006a72201417f4c0d030240024020010d00410421070c010b200110272207450d050b200241003602482002200736024020022001411c6e36024402400240024002400240024002402005450d00200241a0026a41c4006a2108410021094100210a0340200241106a200241386a10c80120022802100d072002280214220b200228023c41e0006e22012001200b4b1bad42e0007e2206422088a70d0b2006a72201417f4c0d0b0240024020010d004108210c0c010b20011027220c450d0d0b200241003602582002200c3602502002200141e0006e3602540240024002400240200b450d004100210d0340200241a0026a200241386a10c102200241e0016a41386a2201200241a0026a41386a290300370300200241e0016a41306a220e200241a0026a41306a290300370300200241e0016a41286a220f200241a0026a41286a290300370300200241e0016a41206a2210200241a0026a41206a290300370300200241e0016a41186a2211200241a0026a41186a290300370300200241e0016a41106a2212200241a0026a41106a290300370300200241e0016a41086a2213200241a0026a41086a290300370300200241c0016a41086a2214200841086a290200370300200241c0016a41106a2215200841106a290200370300200241c0016a41186a2216200841186a280200360200200220022903a0023703e001200220082902003703c00120022802e0022217450d0220024180016a41386a2218200129030037030020024180016a41306a2219200e29030037030020024180016a41286a220e200f29030037030020024180016a41206a220f201029030037030020024180016a41186a2210201129030037030020024180016a41106a2211201229030037030020024180016a41086a22122013290300370300200241e0006a41086a22132014290300370300200241e0006a41106a22142015290300370300200241e0006a41186a22152016280200360200200220022903e00137038001200220022903c0013703600240200d2002280254470d00200241d0006a200d410110a7012002280250210c2002280258210d0b200c200d41e0006c6a2201200229038001370300200141106a2011290300370300200141086a2012290300370300201929030021062018290300211a200e290300211b200f290300211c2010290300211d200141c0006a2017360200200141186a201d370300200141206a201c370300200141286a201b370300200141c4006a2002290360370200200141386a201a370300200141306a2006370300200141cc006a2013290300370200200141d4006a2014290300370200200141dc006a20152802003602002002200d41016a220d360258200b417f6a220b0d000b0b200c450d0a20022902542106200241086a200241386a10c80120022802080d07200228020c220b200228023c220d41027622012001200b4b1b2201410274220e417f4c0d0e20010d014104210f0c020b0240200d450d00200d41e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010290b0240200128020041ffffff3f71450d002001417c6a28020010290b200141e0006a2101200d41a07f6a220d0d000b0b20022802542201450d09200141e0006c0d080c090b200e1027220f450d0d0b200241003602a802200220013602a4022002200f3602a0020240200b450d00410021010340200d4104490d0520022002280238220e41046a360238200e280000220e418094ebdc034b0d040240200120022802a402470d00200241a0026a2001410110980120022802a002210f20022802a80221010b200d417c6a210d200f20014102746a200e3602002002200141016a22013602a802200b417f6a220b0d000b2002200d36023c0b200f450d0420022902a402211a200d4104490d05200a41016a210a2002200d417c6a36023c20022002280238220141046a3602382001280000210d024020092002280244470d00200241c0006a2009410110940120022802402107200228024821090b20072009411c6c6a2201200d360218200120063702042001200c360200200141106a201a3702002001410c6a200f3602002002200941016a2209360248200a2005470d000b0b2007450d0620002002290244370204200020073602000c070b200d417c6a210d0b2002200d36023c20022802a40241ffffffff0371450d00200f10290b02402006422088a72201450d00200141e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010290b0240200128020041ffffff3f71450d002001417c6a28020010290b200141e0006a2101200d41a07f6a220d0d000b0b2006a72201450d02200141e0006c0d010c020b0240201a42ffffffff0383500d00200f10290b02402006422088a72201450d00200141e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010290b0240200128020041ffffff3f71450d002001417c6a28020010290b200141e0006a2101200d41a07f6a220d0d000b0b2006a72201450d01200141e0006c450d010b200c10290b2007200910f10220022802442201450d002001411c6c450d00200710290b200241003602e801200242013703e0012002410d360284012002200241206a360280012002200241e0016a3602c001200241b4026a4101360200200242013702a402200241f4eaca003602a002200220024180016a3602b002200241c0016a41a8a3c800200241a0026a10371a20023502e80142208620023502e001841008024020022802e401450d0020022802e00110290b200041003602000b2004450d00200310290b20024180036a24000f0b1038000b1039000bb10203027f017e027f230041106b220224000240024020012802082203ad42307e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510272206450d020b20024100360208200220063602002002200541306e3602042002410020031090012002280208210502402003450d002001200341306c6a21062002280200200541306c6a21030340200320012903003703002003200141086a290300370308200341106a200141106a290300370300200341186a200141186a290300370300200341206a200141206a290300370300200341286a200141286a290300370300200341306a2103200541016a2105200141306a22012006470d000b0b20002002290300370200200041086a2005360200200241106a24000f0b1038000b1039000ba10201087f230041106b22022400024002402001280208220341ffffff3f712003470d0020034105742204417f4c0d00200128020021050240024020040d00410121060c010b200410272206450d020b41002101200241003602082002200636020020022004410576360204200241002003109e012002280208210702402003450d0020034105742108200228020020074105746a21090340200920016a2204200520016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002008200141206a2201470d000b200341057441606a41057620076a41016a21070b20002002290300370200200041086a2007360200200241106a24000f0b1038000b1039000bfe0301067f230041106b22032400024002402002411c6c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420022003107102402002450d0020012002411c6c6a2106034020012802002105200128020822022003107102402002450d002005200241e0006c6a2107034020032005412010722003200541206a36020c2003410c6a200310e5012003200541306a36020c2003410c6a200310e50120052802402102200528024822042003107102402004450d00200441306c210403402003200241106a412010722003200236020c200241306a21022003410c6a200310e501200441506a22040d000b0b200541e0006a210820052802502102200528025822042003107102402004450d002004410574210403402003200241201072200241206a2102200441606a22040d000b0b2008210520082007470d000b0b2001411c6a2105200128020c2102200128021422042003107102402004450d002004410274210403402003200228020036020c20032003410c6a41041072200241046a21022004417c6a22040d000b0b2003200128021836020c20032003410c6a410410722005210120052006470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1038000b1039000bd90101037f02402001450d0020002001411c6c6a21020340024020002802082201450d00200141e0006c2103200028020041d4006a210103400240200141706a2802002204450d00200441306c450d002001416c6a28020010290b0240200128020041ffffff3f71450d002001417c6a28020010290b200141e0006a2101200341a07f6a22030d000b0b0240200041046a2802002201450d00200141e0006c450d00200028020010290b2000411c6a21010240200041106a28020041ffffffff0371450d00200028020c10290b2001210020012002470d000b0b0b804802077f027e230041106b220224000240024002400240024002400240024002400240024002400240024041b00410272203450d000240024020002802004102470d00200341003a0000410121040c010b200341013a00000240024020002802004101460d00200341003a00012003200041086a2900003700022003410a6a200041106a290000370000200341126a200041186a2900003700002003411a6a200041206a29000037000020022000280204220436020c412221050c010b200341013a000120022000280204220436020c410221050b200320056a2004360000200320054104726a2204200041306a29030037000820042000290328370000200541147221040b0240024020002802384102460d0041b00421050240200441b004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d0420042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802384101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22076b4120490d00200541216a2104200621080c010b41000d0620064101742205200741206a2204200520044b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320076a2205200041c0006a2206290000370000200541186a200641186a290000370000200541106a200641106a290000370000200541086a200641086a29000037000020022000413c6a280200220736020c2002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028023c220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041e8006a29030021092000290360210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b41b00421050240200441b004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d0320042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802704102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802704101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041f8006a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041f4006a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a000020022000280274220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041a0016a2903002109200029039801210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802a8014102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802a8014101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041b0016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041ac016a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802ac01220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041d8016a290300210920002903d001210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802e0014102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802e0014101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041e8016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041e4016a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802e401220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a200736000020004190026a2903002109200029038802210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024002402000280298024102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a2104024002402000280298024101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041a0026a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020022000419c026a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028029c02220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041c8026a290300210920002903c002210a024002402006200441046a22086b410f4d0d00200621050c010b41000d0420064101742205200841106a2207200520074b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b0240024020002802d0024102460d00024020052004470d0041000d0420044101742205200441016a2206200520064b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a21040240024020002802d0024101460d000240024020052004460d0020052106200421050c010b41000d0620054101742204200541016a2206200420064b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b41000d0620064101742208200441206a2207200820074b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a2204200041d8026a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041d4026a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b41000d0520054101742204200541016a2206200420064b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a0000200220002802d402220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b41000d0420084101742206200441046a2207200620074b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a200736000020004180036a290300210920002903f802210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d04200641017422072005200720054b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d0041000d0320044101742205200441016a2206200520064b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024002402000280288034102460d00024020052004470d00200441016a22052004490d04200441017422062005200620054b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d110c010b20042005460d00200320042005102b2203450d100b200320046a41013a0000200441016a2104024002402000280288034101460d000240024020052004460d0020052106200421050c010b200541016a22042005490d06200541017422062004200620044b1b22064100480d06024020050d0041002105200610272203450d130c010b20052006460d00200320052006102b2203450d120b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d06200641017422072008200720084b1b22084100480d06024020060d00024020080d00410121030c020b200810272203450d130c010b20062008460d00200320062008102b2203450d120b200320046a220420004190036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a29000037000020022000418c036a280200220736020c200541216a21042002410c6a21050c010b0240024020052004460d0020052108200421050c010b200541016a22042005490d05200541017422062004200620044b1b22084100480d05024020050d0041002105200810272203450d120c010b20052008460d00200320052008102b2203450d110b200320056a41013a00002002200028028c03220736020c200541016a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d04200841017422072006200720064b1b22064100480d040240024020080d00024020060d00410121030c020b200610272203450d120c010b20082006460d00200320082006102b2203450d110b200528020021070b200320046a2007360000200041b8036a290300210920002903b003210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d04200641017422072005200720054b1b22054100480d04024020060d00024020050d00410121030c020b200510272203450d110c010b20062005460d00200320062005102b2203450d100b200320086a220620093700082006200a370000200441146a21040c010b024020052004470d00200441016a22052004490d03200441017422062005200620054b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41003a0000200441016a21040b024020002802c0034102460d00024020052004470d00200441016a22052004490d03200441017422062005200620054b1b22054100480d03024020040d0041002104024020050d00410121030c020b200510272203450d100c010b20042005460d00200320042005102b2203450d0f0b200320046a41013a0000200441016a2104024020002802c0034101460d00024020052004460d0020052106200421050c070b200541016a22042005490d09200541017422062004200620044b1b22064100480d09024020050d00410021052006102722030d070c0d0b20052006460d06200320052006102b22030d060c0c0b024020052004460d0020052108200421050c050b200541016a22042005490d08200541017422062004200620044b1b22084100480d08024020050d0041002105200810272203450d0c0c050b20052008460d04200320052008102b2203450d0b0c040b20052004470d02200441016a22052004490d07200441017422062005200620054b1b22054100480d07024020040d0041002104024020050d00410121030c040b200510272203450d0b0c030b20042005460d02200320042005102b2203450d0a0c020b1039000b1032000b200320046a41003a0000200441016a21040c030b200320056a41013a0000200220002802c403220736020c200541016a21042002410c6a21050c010b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d03200641017422072008200720084b1b22084100480d03024020060d00024020080d00410121030c020b200810272203450d070c010b20062008460d00200320062008102b2203450d060b200320046a2204200041c8036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041c4036a280200220736020c200541216a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d02200841017422072006200720064b1b22064100480d020240024020080d00024020060d00410121030c020b200610272203450d070c010b20082006460d00200320082006102b2203450d060b200528020021070b200320046a2007360000200041f0036a290300210920002903e803210a024002402006200441046a22086b410f4d0d00200621050c010b200841106a22052008490d02200641017422072005200720054b1b22054100480d02024020060d00024020050d00410121030c020b200510272203450d060c010b20062005460d00200320062005102b2203450d050b200320086a220620093700082006200a370000200441146a21040b024002400240024020002802f8034102460d00024020052004470d00200441016a22052004490d05200441017422062005200620054b1b22054100480d05024020040d0041002104024020050d00410121030c020b200510272203450d090c010b20042005460d00200320042005102b2203450d080b200320046a41013a0000200441016a2104024020002802f8034101460d00024020052004460d0020052106200421050c040b200541016a22042005490d05200541017422062004200620044b1b22064100480d05024020050d0041002105200610272203450d090c040b20052006460d03200320052006102b2203450d080c030b024020052004460d0020052108200421050c020b200541016a22042005490d04200541017422062004200620044b1b22084100480d04024020050d0041002105200810272203450d080c020b20052008460d01200320052008102b2203450d070c010b024020052004470d00200441016a22052004490d04200441017422002005200020054b1b22054100480d04024020040d0041002104024020050d00410121030c020b200510272203450d080c010b20042005460d00200320042005102b2203450d070b200320046a41003a0000200441016a21000c050b200320056a41013a0000200220002802fc03220736020c200541016a21042002410c6a21050c010b200320056a41003a0000024002402006200541016a22046b411f4d0d00200621080c010b200441206a22082004490d02200641017422072008200720084b1b22084100480d02024020060d00024020080d00410121030c020b200810272203450d060c010b20062008460d00200320062008102b2203450d050b200320046a220420004180046a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002002200041fc036a280200220736020c200541216a21042002410c6a21050b02400240200820046b41034d0d00200821060c010b200441046a22062004490d01200841017422072006200720064b1b22064100480d010240024020080d00024020060d00410121030c020b200610272203450d060c010b20082006460d00200320082006102b2203450d050b200528020021070b200320046a2007360000200041a8046a290300210920002903a004210a02402006200441046a22006b410f4d0d00200621050c020b200041106a22052000490d00200641017422082005200820054b1b22054100480d00024020060d00024020050d00410121030c030b200510272203450d040c020b20062005460d01200320062005102b2203450d030c010b1032000b200320006a220020093700082000200a370000200441146a21000b20012902002000ad4220862003ad84100320050d010c020b1030000b200310290b200241106a24000f0b1030000b990101027f230041106b2202240002400240200028022022034102470d00200241003a000b20012002410b6a410110720c010b200241013a000b20012002410b6a410110722001200041201072024020034101460d00200241003a000b20012002410b6a410110720c010b200241013a000b20012002410b6a410110722002200028022436020c20012002410c6a410410720b200241106a24000bbd0401047f230041106b22022400024002400240024020002d00000e03010200010b200041046a280200220341ffff03200341ffff03491b220041c0006a41ff0020002003413e2000413e491b2204461b2103200020046b2100410121040340024002400240200441ff01714102470d00200321050c010b410021052004410171450d00410021040c010b2000450d04024002402000418002490d00200041817e6a210041ff0121030c010b2000417f6a2103410021000b410221040b200220033a000f20012002410f6a41011072200521030c000b0b200241003a000f20012002410f6a410110720c010b200041046a280200220341ffff03200341ffff03491b22042003413e2004413e491b22056b2103024020002d00010d00200441807f7341bf7f20042005461b2100410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d0302402003418002490d00200341817e6a210341ff012100410221040c010b2003417f6a210041022104410021030b200220003a000f20012002410f6a41011072200521000c000b0b200441406a417f20042005461b2100410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d02024002402003418002490d00200341817e6a210341ff0121000c010b2003417f6a2100410021030b410221040b200220003a000f20012002410f6a41011072200521000c000b0b200241106a24000be90d02097f027e230041e0006b22022400200241386a41002902a4a045370300200241306a410029029ca045370300200241286a4100290294a045370300200241206a410029028ca045370300200241186a4100290284a045370300200241106a41002902fc9f45370300200241086a41002902f49f45370300200241002902ec9f453703002002410036024820024201370340200241d0006a200210f60220022802502103024002400240024020022802442204200228024822056b20022802582206490d00200228024021070c010b200520066a22072005490d01200441017422082007200820074b1b22084100480d010240024020040d00024020080d00410121070c020b2008102722070d010c040b2002280240210720042008460d00200720042008102b2207450d030b20022008360244200220073602400b200720056a2003200610e4071a2002200520066a36024802402002280254450d00200310290b200241d0006a200241106a10f602200228025021080240024020022802442204200228024822056b20022802582203490d0020022802402106200421070c010b200520036a22062005490d01200441017422072006200720064b1b22074100480d010240024020040d00024020070d00410121060c020b200710272206450d040c010b2002280240210620042007460d00200620042007102b2206450d030b20022007360244200220063602400b200620056a2008200310e4071a2002200520036a220336024802402002280254450d00200810290b02400240200720036b4104490d00200341046a21050c010b200341046a22052003490d01200741017422042005200420054b1b22044100480d010240024020070d00024020040d00410121060c020b200410272206450d040c010b20072004460d00200620072004102b2206450d030b20022004360244200220063602400b200620036a41003600002002200536024820022802242103024002402002280244220720056b4104490d00200228024021060c010b200541046a22062005490d01200741017422042006200420064b1b22044100480d010240024020070d00024020040d00410121060c020b200410272206450d040c010b2002280240210620072004460d00200620072004102b2206450d030b20022004360244200220063602400b200620056a20033600002002200541046a220636024820022802282104024002402002280244220320066b4104490d00200228024021070c010b200641046a22072006490d01200341017422082007200820074b1b22084100480d010240024020030d00024020080d00410121070c020b200810272207450d040c010b2002280240210720032008460d00200720032008102b2207450d030b20022008360244200220073602400b200720066a20043600002002200541086a360248200241306a2802002108200241386a200241346a200228022c4101461b2802002205200241c0006a10710240024020050d00200228024821040c010b20082005410c6c6a21092002280244210620022802482104034002400240200620046b4108490d00200441086a210520022802402103200621070c010b200441086a22052004490d03200641017422072005200720054b1b22074100480d030240024020060d00024020070d00410121030c020b200710272203450d060c010b2002280240210320062007460d00200320062007102b2203450d050b20022007360244200220033602400b200320046a200829000037000020022005360248200841086a280200210402400240200720056b41034d0d00200721060c010b200541046a22062005490d032007410174220a2006200a20064b1b22064100480d030240024020070d00024020060d00410121030c020b200610272203450d060c010b20072006460d00200320072006102b2203450d050b20022006360244200220033602400b200320056a20043600002002200541046a220436024820092008410c6a2208470d000b0b200228023c2107024002402002280244220620046b4104490d00200228024021050c010b200441046a22052004490d01200641017422032005200320054b1b22034100480d010240024020060d00024020030d00410121050c020b200310272205450d040c010b2002280240210520062003460d00200520062003102b2205450d030b20022003360244200220053602400b200520046a2007360000200441046aad210b2002350240210c02402002280200450d00200241086a280200450d00200228020410290b200b422086210b02402002280210450d00200241186a280200450d00200241146a28020010290b200b200c84210b0240200228022c450d0020022802342205450d002005410c6c450d00200228023010290b200241e0006a2400200b0f0b1032000b1030000bd80401067f20012802042102024002400240024020012802004101470d002001410c6a280200220141046a2203417f4c0d0102400240024002400240024002400240024002402003450d00200310272204450d0c200141c000490d04200141808001490d052001418080808004490d0620030d010b41012103410110272204450d07200441033a0000410521050c010b200441033a000002402003417f6a41034d0d00200321050c020b200341017422064105200641054b1b22054100480d0720032005460d010b200420032005102b2204450d050b20042001360001410521060c030b024020030d0041012103410110272204450d040b200420014102743a000041012106200321050c020b02400240200341014d0d00200321050c010b200341017422064102200641024b1b2105024020030d002005102722040d010c040b20032005460d00200420032005102b2204450d030b41022106200420014102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d03024020030d002005102722040d010c030b20032005460d00200420032005102b2204450d020b20042001410274410272360000410421060b0240200520066b2001490d00200521030c060b200620016a22032006490d01200541017422072003200720034b1b22034100480d0120052003460d05200420052003102b22040d050b1030000b1032000b20002002200141086a280200108a010f0b1038000b1039000b200420066a2002200110e4071a2000200620016a36020820002003360204200020043602000bec1c03057f017e037f230041d00d6b22022400024002402001450d00200220003602080c010b20024180a6cc003602080b2002200136020c200241f8096a200241086a10f8020240024020022802fc092203450d00200241f8096a410c6a280200210120022802800a210420022802f8092100200241a8066a200241f8096a41106a41e00010e4071a200241f8096a200241086a10f90220022802f8090d0102402001450d00200141246c21002003210103400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b2004450d00200441246c450d00200310290b2002418c0a6a4102360200200241b4066a4104360200200242023702fc09200241a0d1c2003602f809200241043602ac0620024198d1c2003602a806200241003602f40220024180a6cc003602f0022002200241a8066a3602880a2002200241f0026a3602b006200241f8096a41b0d1c2001040000b200241f0026a41086a2205200241f8096a41086a280200360200200220022903f8093703f002200241f8096a200241a8066a41e00010e4071a200241206a200241f8096a41e00010e4071a200241106a41086a22062005280200360200200220022903f00237031020024180016a410c6a200136020020024180016a41086a20043602002002200336028401200220003602800120024180016a41106a200241206a41e00010e4072101200241f8016a2006280200360200200220022903103703f00120024180016a10fa020240024002402002280280012200450d0020024180026a2000417f6a10fb02200241f8096a200228028002220020022802880210cd01200241a8066a41086a200241810a6a290000370300200241a8066a41106a2205200241890a6a290000370300200241a8066a41186a2204200241910a6a290000370300200220022900f9093703a8060240024020022d00f8094101460d00200241f0026a41186a4200370300200241f0026a41106a4200370300200241f8026a4200370300200242003703f0020c010b200241f0026a41186a2004290300370300200241f0026a41106a2005290300370300200241f0026a41086a200241a8066a41086a290300370300200220022903a8063703f0020b0240200228028402450d00200010290b200241f0026a2001412010e7070d00200241f8016a280200210120022802f0012100200241003602b006200242043703a806200241a8066a41002001109d0120022802b006210402402001450d00200141c0036c21052001410674210320022802a8062004410c6c6a21010340200220003602f002200241f8096a200241f0026a10bd02200141086a200241f8096a41086a280200360200200120022903f8093702002001410c6a2101200041c0036a2100200541c07c6a22050d000b200341406a41067620046a41016a21040b200241f0026a41086a2004360200200220022903a80622073703f002200241a8066a41086a2004360200200220073703a806200241f8096a200241a8066a10fc020240200241d0016a2201200241f8096a412010e707450d0041b495cc00ad4280808080e0018410082001ad4280808080800484100a200241f8096aad4280808080800484100a0b02402001200241f8096a412010e7070d00100b200241f4016a280200210620022802f001210320022802f801210520024180026a20024180016a41f00010e4071a2003200541c0036c6a21002002280280022108200321010240024002402005450d00200241a8066a41f0006a21042003210102400340200241c0056a200141e80010e4071a200141e8006a2903002107200241f0026a200141f0006a41d00210e4071a20074203510d01200241a8066a200241c0056a41e80010e4071a20022007370390072004200241f0026a41d00210e4071a2002200241a8066a3602e809200241f8096a200241e8096a10bd0220022802800a2105024020022802fc09450d0020022802f80910290b200241f8096a200241a8066a41c00310e4071a200241003602b80d200241e8096a200241f8096a2005200241b80d6a10fd0220022d00e8094101460d04200141c0036a22012000470d000c030b0b200141c0036a21010b20002001460d00034020014198016a10c2012000200141c0036a2201470d000b0b02402006450d00200641c0036c450d00200310290b10fe02200810ff020240100c4101470d00200241f8096a108003200220024180026a410c6a28020022043602c80d20022802840221032002200241f8096a410c6a28020022013602cc0d20042001470d052004450d0420022802fc0921064100210541dfcfc200ad4280808080c0028421070340024002400240024002400240024002400240200320056a22012d00002208200620056a22002d0000470d0002400240024002400240024020080e06000102030405000b20032006460d0d200141016a200041016a412010e7070d050c060b024020032006460d00200141016a280000200041016a280000470d050b200141106a2802002208200041106a280200470d04200141086a2802002209200041086a280200220a460d0a2009200a200810e7070d040c0a0b024020032006460d00200141016a280000200041016a280000470d040b200141106a2802002208200041106a280200470d03200141086a2802002209200041086a280200220a460d082009200a200810e7070d030c080b024020032006460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002209200041086a280200220a460d062009200a200810e7070d020c060b200141046a2802002208200041046a280200470d012008450d04200141086a280200200041086a280200470d012001410c6a2802002000410c6a280200470d010c040b2001410c6a28020022082000410c6a280200470d00200141046a2802002209200041046a280200220a460d022009200a200810e707450d020b20071008200241a8066a200110bc0220023502b00642208620022802a8062208ad84100a024020022802ac06450d00200810290b200241a8066a200010bc0220023502b00642208620022802a8062208ad84100a024020022802ac06450d00200810290b20012d000020002d00002208470d06024020080e06000605040302000b20032006460d070b200141016a200041016a412010e7070d050c060b2001410c6a28020022082000410c6a280200470d04200141046a2802002201200041046a2802002200460d0520012000200810e7070d040c050b200141046a2802002208200041046a280200470d032008450d04200141086a280200200041086a280200470d032001410c6a2802002000410c6a280200460d040c030b024020032006460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200810e7070d020c030b024020032006460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200810e7070d010c020b024020032006460d00200141016a280000200041016a280000470d010b200141106a2802002208200041106a280200470d00200141086a2802002201200041086a2802002200460d0120012000200810e707450d010b41c8abc700412741b8a1cc001033000b200541246a21052004417f6a22040d000c050b0b4197acc700411e41b8a1cc001033000b200220022f00e90920022d00eb09411074721081032002280200200228020441b8a1cc001033000b4199abc700412441b8a1cc001033000b41fdaac700411c41b8a1cc001033000b024020024180026a41306a2201200241f8096a41306a2200412010e707450d0041b495cc00ad4280808080e0018410082001ad4280808080800484100a2000ad4280808080800484100a0b024020012000412010e707450d0041efabc700412841b8a1cc001033000b024020022802840a2200450d0020022802fc092101200041246c210003400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b0240200241800a6a2802002201450d00200141246c450d0020022802fc0910290b0240200228028c022200450d002002280284022101200041246c210003400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b024020024188026a2802002201450d00200141246c450d0020022802840210290b200241d00d6a240042010f0b200241f0026a41146a4109360200200241f0026a410c6a4112360200200241c0056a41146a41033602002002200241c80d6a3602b80d2002200241cc0d6a3602e809200241a8066a41146a4100360200200242033702c405200241aca5cc003602c005200241123602f40220024180a6cc003602b806200242013702ac06200241c0abc7003602a8062002200241f0026a3602d0052002200241a8066a360280032002200241e8096a3602f8022002200241b80d6a3602f002200241c0056a4180a6cc001040000ba00a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024002400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a8023703682002200110c80120022802000d022002280204210641002104200241003a00c80220012802042107417f2103034020072004460d02200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a21030340200c2004460d04200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a200110ba0420022802a8022201450d04200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c050b0240200341ff0171450d00200241003a00c8020b200041003602040c040b0240200441ff0171450d00200241003a00c8020b200041003602040c030b200041003602040c020b0240200441ff0171450d00200241003a00c8020b200041003602040c010b200041003602040b200241d0026a24000bff0303037f017e037f230041d00a6b22022400200241086a200110c80102400240024002402002280208450d00200041003602000c010b200228020c2203200128020441c0036e2204200420034b1bad42c0037e2205422088a70d012005a72206417f4c0d010240024020060d00410821070c010b200610272207450d030b4100210420024100360218200220073602102002200641c0036e360214024002402003450d0020024190076a41f0006a2108034020024190076a2001108703200241a8066a20024190076a41e80010e4071a20022903f8072105200241d8036a200841d00210e4071a20054203510d02200241f0026a200241a8066a41e80010e4071a200241206a200241d8036a41d00210e4071a024020042002280214470d00200241106a200410a40120022802102107200228021821040b2007200441c0036c6a200241f0026a41e80010e40722062005370368200641f0006a200241206a41d00210e4071a2002200441016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b2000410036020002402004450d00200441c0036c210320074198016a21040340200410c201200441c0036a2104200341c07c6a22030d000b0b20022802142204450d00200441c0036c450d00200710290b200241d00a6a24000f0b1038000b1039000bb8550b057f017e017f017e037f017e037f017e0f7f077e097f230022012102200141a0026b41607122032400200341286a2000109c03200341e0006a41186a4200370300200341e0006a41106a22044200370300200341e0006a41086a220142003703002003420037036041b3e6ca00ad4280808080e000841001220529000021062001200541086a29000037030020032006370360200510294180a4cb00ad4280808080a00284100122052900002106200341386a41086a2207200541086a290000370300200320063703382005102920042003290338220637030020034180026a41086a200129030037030020034180026a41106a200637030020034180026a41186a20072903003703002003200329036037038002200341203602dc01200320034180026a3602d801200341c0016a20034180026aad428080808080048422081007108b020240024002400240024002400240024020032802c00122050d00410221010c010b20032802c40121092003200341c0016a41086a28020036025420032005360250200341206a200341d0006a10c8010240024020032802200d00200341186a200341d0006a10c80120032802180d002003280254220a200328021c2201490d002001417f4c0d040240024020010d004100210a410121070c010b2001102d2207450d0420072003280250220b200110e4071a2003200a20016b3602542003200b20016a3602502001210a0b2007450d002001ad422086200aad842106410121010c010b200341003602f001200342013703e8012003410d36023c2003200341d8016a3602382003200341e8016a36024c200341f4006a410136020020034201370264200341f4eaca003602602003200341386a360270200341cc006a41a8a3c800200341e0006a10371a20033502f00142208620033502e801841008024020032802ec01450d0020032802e80110290b410221010b2009450d00200510290b0240024020014102460d004100210502402006422088a72006a7220920014101461b4108470d0041012105200741aca0c500460d00200729000042f0deb1db968cd9b7f4005121050b02402009450d00200710290b20050d010b200341f4016a41002902f49f45370200200341003602e801200341002902ec9f453702ec01200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041b3e6ca00ad4280808080e000841001220529000021062001200541086a29000037030020032006370360200510294180a4cb00ad4280808080a00284100122052900002106200341386a41086a220a200541086a290000370300200320063703382005102920042003290338370000200441086a200a29030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a20072903003703002003200329036037038002200341003602c801200342013703c0014100200341c0016a1071200341e0006a200341e8016a41047210f6022003280260210b024002400240024002400240024020032802c401220a20032802c80122056b20032802682207490d0020032802c0012101200a21090c010b200520076a22012005490d01200a41017422092001200920014b1b22094100480d0102400240200a0d00024020090d00410121010c020b2009102722010d010c0e0b20032802c0012101200a2009460d002001200a2009102b2201450d0d0b200320093602c401200320013602c0010b200120056a200b200710e4071a2003200520076a22053602c80102402003280264450d00200b10290b20082005ad4220862001ad84100302402009450d00200110290b200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041c99fc500ad4280808080900184100122052900002106200341d0006a41086a220a200541086a29000037030020032006370350200510292001200a29030037030020032003290350370360419094c700ad4280808080e00184100122052900002106200341386a41086a220a200541086a290000370300200320063703382005102920042003290338370000200441086a200a29030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a2007290300370300200320032903603703800220034120360254200320034180026a360250200341c0016a20081007108b02024020032802c0012201450d0020032802c401210702400240200341c0016a41086a280200450d0020012d00000d00410121050c010b41002105200341003602f001200342013703e8012003410d36023c2003200341d0006a3602382003200341e8016a3602d801200341f4006a410136020020034201370264200341f4eaca003602602003200341386a360270200341d8016a41a8a3c800200341e0006a10371a20033502f00142208620033502e80184100820032802ec01450d0020032802e80110290b02402007450d00200110290b42c0f0f50b210620050d050b200341e0006a41186a220a4200370300200341e0006a41106a220b4200370300200341e0006a41086a220142003703002003420037036041c99fc500ad4280808080900184220610012205290000210c200341d0006a41086a2207200541086a2900003703002003200c370350200510292001200729030037030020032003290350370360419094c700ad4280808080e0018410012205290000210c200341386a41086a2209200541086a2900003703002003200c3703382005102920042003290338370000200441086a200929030037000020034180026a41086a200129030037030020034180026a41106a200b29030037030020034180026a41186a200a2903003703002003200329036037038002410110272201450d0b200141003a000020082001ad4280808080108410032001102920061001220129000021062007200141086a290000370300200320063703502001102941d29fc500ad42808080809001841001220129000021062009200141086a2900003703002003200637033820011029412010272207450d062007200329035037000020072003290338370010200741086a2205200341d0006a41086a290300370000200741186a2209200341386a41086a290300370000412010272201450d0620012007290000370000200141186a2009290000370000200141106a200741106a290000370000200141086a2005290000370000200341e0006a2001ad42808080808004841015108b0220032802602205450d0242a08080808004210620034188026a210d200341f8006a210e03402006210c20012109200521010240024020032902642206422088a722054120490d0020072001460d0120072001412010e707450d010b02402006a7450d00200110290b20092101200c21060c030b0240200ca7450d00200910290b20034180026a2001200510fb0502402003280290022209450d00200329029402220ca7210a02400240024020054178714120470d0041002802d8a74c450d0141002802888040210541002802848040210b41002802dca74c210f200341e6003602a001200342dc8080801037039801200341db9fc000360294012003421337028c01200341c89fc00036028801200342003703800120034180a6cc0036027c20034201370370200341c09fc00036026c20034113360268200341c89fc00036026420034101360260200b4180a4c000200f410246220f1b200341e0006a20054198a4c000200f1b2802101102000c010b2005417c714128460d002003290380022110200e200d290300370300200320103703702003200c37026420032009360260200320053602ec01200320013602e801200341e0006a200341e8016a10d005200a41ffffff3f71450d020c010b200a41ffffff3f71450d010b200910290b200341e0006a2006428080808070832001ad841015108b02200328026022050d000c020b0b1032000b2006a7450d010b200110290b200710294280c0a8ca9a3a21060b200610fc050b20002802002211200041106a200041d0006a200341286a4101109d03200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a2200200541086a2900003703002003200637035020051029200120002903003703002003200329035037036041eb87cc00ad4280808080f00184100122052900002106200341386a41086a2200200541086a290000370300200320063703382005102920042003290338370000200441086a200029030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a20072903003703002003200329036037038002200341e8016a20034180026a10fd0502400240024020032802e80122090d0041002107200341003602c801200342043703c001410421094100210141002105410021124100210d410421130c010b20032902ec012106200320093602c001200320063702c4012006a7210702402006422088a7220141024f0d004104211341002112200121054100210d0c010b200928020821122009280204210d2009280200211320092009410c6a2001417f6a2201410c6c10e5071a200320013602c80141012105200141014b0d010b0340024020052007470d00200341c0016a20074101109d0120032802c001210920032802c801220121050b20092005410c6c6a22054100360208200542043702002003200141016a22013602c801200141014b0d0120032802c4012107200121050c000b0b200341e8016a41086a2207200341c0016a41086a280200360200200320032903c00122063703e801024002402006a722090d00200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a2200200541086a2900003703002003200637035020051029200120002903003703002003200329035037036041eb87cc00ad4280808080f00184100122052900002106200341386a41086a2200200541086a290000370300200320063703382005102920042003290338370000200441086a200029030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a20072903003703002003200329036037038002200810040c010b200341e0006a41186a22004200370300200341e0006a41106a220a4200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a220b200541086a29000037030020032006370350200510292001200b2903003703002003200329035037036041eb87cc00ad4280808080f00184100122052900002106200341386a41086a220b200541086a290000370300200320063703382005102920042003290338370000200441086a200b29030037000020034180026a41086a200129030037030020034180026a41106a200a29030037030020034180026a41186a2000290300370300200320032903603703800220034120360264200320034180026a360260200341e8016a200341e0006a10ee05024020072802002201450d002001410c6c21052009210103400240200141046a2802002207450d00200741246c450d00200128020010290b2001410c6a2101200541746a22050d000b0b20032802ec012201450d002001410c6c450d00200910290b200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a2200200541086a29000037030020032006370350200510292001200029030037030020032003290350370360419a88cc00ad4280808080a00184100122052900002106200341386a41086a2200200541086a290000370300200320063703382005102920042003290338370000200441086a200029030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a20072903003703002003200329036037038002200341e0006a20034180026a10fd0520032902644200200328026022051b2206422088a7220e410c6c21012005410420051b220f41746a2105410121090240034020092107024020010d004100210a0c020b200141746a2101200741016a2109200541146a21002005410c6a220a210520002802002200450d000b200341e0006a41086a200a2802002201410c6a290200370300200341f0006a200141146a290200370300200320012902043703602001411c6a2802002114200141206a28020021152001280200210b2001200141246a2000417f6a220541246c10e5071a200a41086a20053602004101210a0b200341e8016a41106a200341e0006a41106a2205290300370300200341e8016a41086a200341e0006a41086a2201290300370300200320032903603703e8012003200f3602d801200320063702dc01200341e0006a41186a2200420037030020054200370300200142003703002003420037036041d787cc00ad428080808090018410012209290000210c200341d0006a41086a2216200941086a2900003703002003200c370350200910292001201629030037030020032003290350370360419a88cc00ad4280808080a0018410012209290000210c200341386a41086a2216200941086a2900003703002003200c3703382009102920042003290338370000200441086a201629030037000020034180026a41086a200129030037030020034180026a41106a200529030037030020034180026a41186a2000290300370300200320032903603703800220034120360264200320034180026a360260200341d8016a200341e0006a10ee052006a721000240200e450d00200e410c6c2105200f210103400240200141046a2802002209450d00200941246c450d00200128020010290b2001410c6a2101200541746a22050d000b0b02402000450d002000410c6c450d00200f10290b200341c0016a41086a220f200341e8016a41086a220e290300370300200341c0016a41106a2216200341e8016a41106a2217290300370300200320032903e8013703c001410021000240200a450d00201241246c2101201321050340024020010d00410121000c020b2001415c6a210120052802002109200541246a21052009200b470d000b410021000b200341e0006a41186a22094200370300200341e0006a41106a220a4200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a2218200541086a2900003703002003200637035020051029200120182903003703002003200329035037036041cd87cc00ad4280808080a00184100122052900002106200341386a41086a2218200541086a290000370300200320063703382005102920042003290338370000200441086a201829030037000020034180026a41086a200129030037030020034180026a41106a200a29030037030020034180026a41186a20092903003703002003200329036037038002200341e0006a20034180026a412010c0042003280260210120032902642106200341003602582003420437035020172016290300370300200e200f290300370300200320032903c0013703e8012001410420011b22162006420020011b2206422088a741027422016a21182006a721192013201241246c22056a211a02400240024020014102752201200541246d6a22052001490d00200520006a220120054f0d010b2007417f6a211b2003200b360284022003200036028002200320032903e801370388022003200341f0016a290300370290022003200341f8016a29030037039802200d45200d41246c4572211c410021054104211d410421174100211e201321092016211f4101210a03400240024002400240200a4101470d00201821012016210a2019210e0240201f450d0020162018470d02201b21012015210a2014210e201941ffffffff0371450d00201f1029201b21012015210a2014210e0b0240201a2009460d00200941146a29020021062009410c6a290200210c200941206a280200210b2009411c6a280200210f200929020421084101210d4100211f20092112200941246a210920012118200a2116200e21190c030b4100210a201c0d00201310290b20004102460d052003410036026020032903980221062003200329037837039802200329039002210c2003200329037037039002200329038802210820032003290368370388022003290380022110200320032903602220370380022010a74101470d052010422088a7210e2020a721004101210d2014210f2015210b200721120c020b4102210d20162112201641046a21160b2012280200210e4101210a410021120b0240201e2003280254470d0002400240200a4101460d004100210120004102460d01200041014621010c010b024020004102460d000240201f0d00417f201a20096b41246d220120004101466a221720172001491b21010c020b417f417f201820166b4102752201201a20096b41246d6a221720172001491b220120004101466a221720172001491b21010c010b0240201f450d00417f201820166b4102752201201a20096b41246d6a221720172001491b21010c010b201a20096b41246d21010b200341d0006a201e417f200141016a221720172001491b1093012003280250221d21170b201720056a2201200e360200200141286a2012360200200141246a200d360200200141206a200b3602002001411c6a200f360200200141146a20063702002001410c6a200c370200200141046a20083702002003201e41016a221e3602582005412c6a21050c000b0b200341d0006a410020011093012003280250211d2003280258211e2003200b360284022003200036028002200320032903e801370388022003200341f0016a290300370290022003200341f8016a29030037039802201d201e412c6c6a2101024020182016460d00201e201820166b417c6a4102766a210020162105034020052802002109200141246a4102360200200120093602002001412c6a21012018200541046a2205470d000b200041016a211e0b0240201941ffffffff0371450d00201610290b02402013450d000240201a2013460d00200341f8006a2109200341f0006a2100200341e8006a210a2013210503402005280200210b20092005411c6a2902003703002000200541146a290200370300200a2005410c6a2902003703002003200541046a2902003703602001200b360200200141046a20032903603702002001410c6a200a290300370200200141146a20002903003702002001411c6a2009290300370200200141246a42013702002001412c6a2101201e41016a211e200541246a2205201a470d000b0b200d450d00200d41246c450d00201310290b200329038802210c2003290390022108200329039802211020032903800221062003410036026002402006a74101470d002015ad4220862014ad8421212006422088a7210520032903782120200329037021222003290368212320032903602106034020202124202221252023212620012005360200200141046a200c370200200141286a2007360200200141246a41013602002001411c6a20213702002001410c6a2008370200200141146a2010370200200341003602602001412c6a2101201e41016a211e2006a721092006422088a72105200329037821202003290370212220032903682123200329036021062026210c202521082024211020094101460d000b0b2003201e3602580b20032802542127201e4115490d03201e410176ad422c7e2206422088a70d012006a72228417f4c0d01202810272229450d004100210120034100360288022003420437038002201d41546a212a201d412c6a212b201d41fc7e6a212c410421074100212d201e211803402018210f410021184101210b0240200f417f6a2200450d00024002400240024002400240201d2000412c6c6a280200200f412c6c220e201d6a41a87f6a2802002205490d00200f417e6a210d202c200e6a2100410021184100210903400240200d2009470d00200f210b0c080b200941016a210920052000280200220a4f210b200041546a2100200a2105200b0d000b200941016a210b2009417f73200f6a21000c010b202c200e6a210902400340024020004101470d00410021000c020b2000417f6a210020052009280200220a49210b200941546a2109200a2105200b0d000b0b200f2000490d01200f201e4b0d02200f20006b220b410176220a450d00201d2000412c6c6a2105202a200e6a21090340200341e0006a41286a220d200541286a220e280200360200200341e0006a41206a2212200541206a2216290200370300200341e0006a41186a2217200541186a2218290200370300200341e0006a41106a221f200541106a2219290200370300200341e0006a41086a2214200541086a221529020037030020032005290200370360200941086a221a2902002106200941106a2213290200210c200941186a221b2902002108200941206a221c2902002110200941286a222e280200212f20052009290200370200200e202f36020020162010370200201820083702002019200c37020020152006370200202e200d280200360200201c2012290300370200201b20172903003702002013201f290300370200201a2014290300370200200920032903603702002005412c6a2105200941546a2109200a417f6a220a0d000b0b024020000d00200021180c050b0240200b41094d0d00200021180c050b200f201e4b0d02200f20006b210a202b2000412c6c6a210d0340200f2000417f6a2218490d040240200f20186b220b4102490d00201d2000412c6c6a2205280200201d2018412c6c6a220028020022164f0d00200341e0006a41206a2217200041246a290200370300200341e0006a41186a221f2000411c6a290200370300200341e0006a41106a2219200041146a290200370300200341e0006a41086a22142000410c6a29020037030020002902042106200041286a200541286a28020036020020032006370360200041206a200541206a290200370200200041186a200541186a290200370200200041106a200541106a290200370200200041086a200541086a29020037020020002005290200370200410121090240200b4103490d00200028025820164f0d004102210e200d211203402012220541546a22092005290200370200200941286a200541286a280200360200200941206a200541206a290200370200200941186a200541186a290200370200200941106a200541106a290200370200200941086a200541086a290200370200200a200e2209460d01200941016a210e2005412c6a22122802002016490d000b0b2005201636020020002009412c6c6a22052003290360370204200541246a20172903003702002005411c6a201f290300370200200541146a20192903003702002005410c6a20142903003702000b2018450d05200d41546a210d200a41016a210a20182100200b410a4f0d050c000b0b2000200f4180cac700104c000b200f201e4180cac700104b000b200f2000417f6a2218490d00200f201e4190cac700104b000b2018200f4190cac700104c000b0240202d200328028402470d0020034180026a202d4101108d0120032802800221072003280288022201212d0b2007202d4103746a2205200b360204200520183602002003200141016a2201360288022001212d024020014102490d000240024003400240024002400240024020072001417f6a4103746a2205280200450d00200141037420076a220a41746a2802002200200528020422094b0d010b20014103490d022005280204210920072001417d6a22124103746a28020421050c010b4102212d200141024d0d0620072001417d6a22124103746a2802042205200920006a4d0d004103212d200141034d0d06200a41646a280200200520006a4b0d050b20052009490d010b2001417e6a21120b02400240024002400240024002402001201241016a22164d0d00200120124d0d0120072012410374221f6a2201280204221920012802006a22012007201641037422146a22052802002217490d022001201e4b0d03201d2017412c6c6a220d2005280204220e412c6c22056a21092001412c6c2107200120176b220a200e6b2201200e4f0d04202920092001412c6c220510e407220f20056a2100200e4101480d0520014101480d05202a20076a21052009210103402005200141546a2209200041546a220a200a280200200928020049220b1b2207290200370200200541286a200741286a280200360200200541206a200741206a290200370200200541186a200741186a290200370200200541106a200741106a290200370200200541086a200741086a2902003702002000200a200b1b21000240200d20092001200b1b2201490d00200f21070c080b200541546a2105200f2107200f2000490d000c070b0b2016200141a0cac7001036000b2012200141b0cac7001036000b2017200141c0cac700104c000b2001201e41c0cac700104b000b2029200d200510e407220f20056a21000240200e4101480d00200a200e4c0d00201d20076a210b200f2107200d210103402001200920072009280200200728020049220a1b2205290200370200200141286a200541286a280200360200200141206a200541206a290200370200200141186a200541186a290200370200200141106a200541106a290200370200200141086a200541086a29020037020020072007412c6a200a1b21072001412c6a21012009412c6a2009200a1b2209200b4f0d03200020074b0d000c030b0b200d2101200f21070c010b20092101200f21070b20012007200020076b22052005412c706b10e4071a0240200328028802220120124d0d002003280280022207201f6a22052019200e6a36020420052017360200200120164d0d02200720146a2205200541086a20012016417f736a41037410e5071a20032001417f6a220136028802200141014b0d010c030b0b2012200141d0cac7001036000b201620011042000b2001212d0b2018450d030c000b0b1039000b1038000b024020032802840241ffffffff0171450d00200710290b2028412c7021012028412c490d0120282001460d01202910290c010b201e4102490d00201e417f6a2107201d201e412c6c6a210a4101210003400240024002400240201e20072201417f6a2207490d00201e20076b22054102490d03201d2001412c6c6a2201280200201d2007412c6c6a2209280200220d4f0d03200341e0006a41206a220e200941246a290200370300200341e0006a41186a22122009411c6a290200370300200341e0006a41106a2216200941146a290200370300200341e0006a41086a22172009410c6a29020037030020092902042106200941286a200141286a28020036020020032006370360200941206a200141206a290200370200200941186a200141186a290200370200200941106a200141106a290200370200200941086a200141086a290200370200200920012902003702004101210b20054103490d022009280258200d4f0d024100210b200a210503402005220141546a22052001290200370200200541286a200141286a280200360200200541206a200141206a290200370200200541186a200141186a290200370200200541106a200141106a290200370200200541086a200141086a2902003702002000200b220f460d02200f417f6a210b2001412c6a2205280200200d4f0d020c000b0b2007201e41f0c9c700104c000b4102200f6b210b0b2001200d3602002009200b412c6c6a22012003290360370204200141246a200e2903003702002001411c6a2012290300370200200141146a20162903003702002001410c6a20172903003702000b200a41546a210a2000417f6a210020070d000b0b200341e0006a41186a22074200370300200341e0006a41106a22094200370300200341e0006a41086a220142003703002003420037036041d787cc00ad4280808080900184100122052900002106200341d0006a41086a2200200541086a2900003703002003200637035020051029200120002903003703002003200329035037036041fa87cc00ad4280808080e00084100122052900002106200341386a41086a2200200541086a290000370300200320063703382005102920042003290338370000200441086a200029030037000020034180026a41086a200129030037030020034180026a41106a200929030037030020034180026a41186a2007290300370300200320032903603703800220034120360264200320034180026a360260201d201e200341e0006a10f00302402027450d002027412c6c450d00201d10290b427f201110bb0422064280e497d0127c220c200c2006541b10fc054100410010fe0520032802282109024020032802302201450d00200141246c21052009210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012005415c6a22050d000b0b0240200328022c2201450d00200141246c450d00200910290b200224000f0b1030000bfc0403027f017e057f230041d0006b2202240041b3e6ca00ad4280808080e00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941c0e6ca00ad4280808080900184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bf104020b7f037e230041206b22022400024002400240024020012802082203410c6c41046a2204417f4c0d00200128020021050240024020040d0041012106410021040c010b200410272206450d020b2002410036020820022006360200200220043602042003200210710240024020030d002002280208210420022802042107200228020021080c010b20052003410c6c6a21092005210603402006280200210a200641086a280200220420021071024002402002280204220b2002280208220c6b2004490d0020022802002108200b21070c010b200c20046a2208200c490d05200b41017422072008200720084b1b22074100480d0502400240200b0d00024020070d00410121080c020b2007102722080d010c080b20022802002108200b2007460d002008200b2007102b2208450d070b20022007360204200220083602000b2008200c6a200a200410e4071a2002200c20046a22043602082006410c6a22062009470d000b0b2004ad4220862008ad84101b2204290000210d200441086a290000210e200441106a290000210f200241186a2206200441186a290000370300200241106a220c200f370300200241086a220b200e3703002002200d37030020041029200041186a2006290300370000200041106a200c290300370000200041086a200b2903003700002000200229030037000002402007450d00200810290b02402003450d002003410c6c21062005210403400240200441046a280200450d00200428020010290b2004410c6a2104200641746a22060d000b0b0240200141046a2802002204450d002004410c6c450d00200510290b200241206a24000f0b1038000b1039000b1032000b1030000bd70902057f057e230041b00a6b2204240020044188066a200141c00310e4071a20044188036a20044188066a109603410121050240024002400240024020042d0088034101460d00200441106a20044188036a41086a41f80210e4071a024020032802002201450d00200341086a280200210620032802042107200441086a41a6e5ca00411010fc014100210520044188066a200428020c410020042802081b108a032004280288062108200420042802900636028c0320042008360288032001200620044188036a10a1040240200428028c06450d00200810290b2007450d00200110290b200441c8096a200441e0006a10c30120044188066a200441106a41f80210e4071a20044188036a20044188066a20042903c809220920042d00d00920042d00d109200210c302200441800a6a41086a20044188036a410c6a290200370300200441800a6a41106a20044188036a41146a290200370300200441800a6a41186a20044188036a411c6a290200370300200441800a6a41206a20044188036a41246a290200370300200441a80a6a200441b4036a2802003602002004200429028c033703800a024020042d0088034101460d00200441d8096a41206a200441800a6a41246a290200370300200441d8096a41186a200441800a6a411c6a290200370300200441d8096a41106a200441800a6a41146a290200220a370300200441d8096a41086a200441800a6a410c6a290200220b370300200420042902840a220c3703d809200420042903d0093703800a20092009200a200b501b220d200d2009561b210941072102410021080240200c4201520d00200441f0096a220210ff0541e0a3c800ad4280808080a001841008419aa1c000ad4280808080e00184100802400240200b4201510d004190a1c000ad4280808080a0018410080c010b200a10160b20044193036a200241086a2800003600002004200229000037008b0341012108410f21020b20044188036a20026a22022009370000200220042903800a37000820044188066a41086a20083a000020044191066a20042900880337000020044199066a20044188036a41086a290000370000200441a1066a20044188036a41106a29000037000020044188066a41206a2004419f036a290000370000200441003a00880620044188066a10cb01200441a6e5ca00411010fc012004200428020441016a410120042802001b22023602880641a6e5ca00ad428080808080028420044188066aad4280808080c0008410034100200210fe05200420042900f109370388062004200441d8096a41206a28000036008f0602400240200c4201510d00410421020c010b200441f0096a2d000021022004200428008f0636008f0320042004290388063703880320042004290388033703800a2004200428008f033600870a0b200041003a0000200041046a20023a0000200041056a20042903800a3700002000410c6a20042800870a3600002001450d0520050d030c050b200020042f00890320042d008b034110747222023b0001200041013a0000200041036a20024110763a000020054521000c010b200020042f0089033b0001200041013a0000200041036a20042d008b033a000020032802002101410021000b20000d0220010d010c020b200341046a280200450d01200110290c010b200341046a280200450d00200110290b200441b00a6a24000bdc0203067f017e017f230041e0006b22002400200041086a41a6e5ca00411010fc01200028020c21010240200028020822024101470d0041a6e5ca00ad428080808080028410040b200041306a41186a4200370300200041306a41106a22034200370300200041306a41086a220442003703002000420037033041b3e6ca00ad4280808080e000841001220529000021062004200541086a2900003703002000200637033020051029419ca0cb00ad4280808080e00184100122052900002106200041d0006a41086a2207200541086a2900003703002000200637035020051029200320002903502206370300200041106a41086a2004290300370300200041106a41106a2006370300200041106a41186a20072903003703002000200029033037031020002001410020021b360230200041106aad4280808080800484200041306aad4280808080c0008410034101200010fe05200041e0006a24000b961f0d057f017e057f017e077f017e057f017e027f017e027f037e077f230041900e6b22012400200141b0056a41186a22024200370300200141b0056a41106a22034200370300200141b0056a41086a22044200370300200142003703b00541cd87cc00ad4280808080a001841001220529000021062004200541086a290000370300200120063703b0052005102941ac84cc00ad428080808090018410012205290000210620014180016a41086a2207200541086a29000037030020012006370380012005102920032001290380012206370300200141e0096a41086a22082004290300370300200141e0096a41106a22092006370300200141e0096a41186a220a2007290300370300200120012903b0053703e009200141b0056a200141e0096a412010c004024020012802b005220b450d000240024020012902b405220c422088a7220d0d004100210e200b210f0c010b200b41046a210f200b28020021104101210e0b200141b0056a41186a22114200370300200141b0056a41106a22124200370300200141b0056a41086a22134200370300200142003703b00541d787cc00ad42808080809001842214100122052900002106200141d0006a41086a2215200541086a290000370300200120063703502005102920132015290300370300200120012903503703b00541fa87cc00ad4280808080e000841001220529000021062015200541086a2900003703002001200637035020051029201220012903502206370300200141e0096a41086a22162013290300370300200141e0096a41106a22172006370300200141e0096a41186a22182015290300370300200120012903b0053703e009200141b0056a200141e0096a10a60320012802b0052205410420051b2119024020012902b405420020051b221a422088a72205450d00200b200d4102746a211b20192005412c6c6a211c200141e0096aad4280808080800484211d2019210503402005280200211e20112005411c6a2902003703002012200541146a29020037030020132005410c6a290200370300200120052902043703b005200541246a280200220d4103460d01200541286a280200211f200141106a41186a20112903002206370300200141106a41106a20122903002220370300200141106a41086a20132903002221370300200120012903b0052222370310200141306a41186a22232006370300200141306a41106a22242020370300200141306a41086a2225202137030020012022370330024002400240024002400240200e4101470d002010201e460d010b200d4101470d0320014180016a41186a220d202329030037030020014180016a41106a2226202429030037030020014180016a41086a222420252903003703002001200129033037038001201f41024b0d03201142003703002012420037030020134200370300200142003703b00520141001222329000021062015202341086a290000370300200120063703502023102920132015290300370300200120012903503703b005419a88cc00ad4280808080a0018422201001222329000021062015202341086a290000370300200120063703502023102920122001290350370000201241086a22272015290300370000201620132903003703002017201229030037030020182011290300370300200120012903b0053703e009200141b0056a200141e0096a10fd0520012802b00522280d01410021232001410036026820014204370360410421280c020b0240200f201b470d004100210e201b210f0c030b200f28020021104101210e200f41046a210f0c020b20012902b405210620012028360260200120063702642006422088a721230b2018200d290300370300201720262903003703002016202429030037030020012001290380013703e0090240024020234103490d00410321242001410336026820234103460d01202841246a210d2023410c6c415c6a212303400240200d41046a2802002225450d00202541246c450d00200d28020010290b200d410c6a210d202341746a22230d000c020b0b200141e0006a2023410320236b2229109d012001280260222820012802682224410c6c6a210d0240024020294102490d002023417e6a21230340200141003602b805200142043703b005200141b0056a41004100109601201520012802b8052225360200200120012903b0052206370350200d41086a2025360200200d2006370200202441016a2124200d410c6a210d202341016a222520234f21262025212320260d000b2029450d010b200d4204370200200d4100360208202441016a21240b200120243602680b2024201f4d0d01201120182903003703002012201729030037030020132016290300370300200120012903e0093703b0052028201f410c6c6a220d41086a21230240200d2802082224200d41046a280200470d00200d20244101109601202328020021240b200d280200202441246c6a220d20012903b005370204200d201e360200200d410c6a2013290300370200200d41146a2012290300370200200d411c6a20112903003702002023202328020041016a360200200141f0006a41086a200141e0006a41086a280200360200200120012903602206370370201142003703002012420037030020134200370300200142003703b00520141001220d29000021212015200d41086a29000037030020012021370350200d102920132015290300370300200120012903503703b00520201001220d29000021202015200d41086a29000037030020012020370350200d10292012200129035037000020272015290300370000201620132903003703002017201229030037030020182011290300370300200120012903b0053703e00902402006a722250d00201d10040c010b200141203602b4052001200141e0096a3602b005200141f0006a200141b0056a10ee0502402001280278220d450d00200d410c6c21232025210d03400240200d41046a2802002224450d00202441246c450d00200d28020010290b200d410c6a210d202341746a22230d000b0b2001280274220d450d00200d410c6c450d00202510290b2005412c6a2205201c470d010c020b0b201f202441a0e3c8001036000b0240201aa72205450d002005412c6c450d00201910290b200c42ffffffff0383500d00200b10290b200242003703002003420037030020044200370300200142003703b00541d482cc00ad4280808080d000841001220529000021062004200541086a290000370300200120063703b0052005102941fab1c400ad4280808080b001841001220529000021062007200541086a290000370300200120063703800120051029200320012903800122063703002008200429030037030020092006370300200a2007290300370300200120012903b0053703e009200141306a200141e0096a412010f90102400240024002400240024020012802304101470d002000200141386a2802006b220d41e7074b0d00200d20004b0d0041d482cc00ad4280808080d0008410012205290000210620014180016a41086a200541086a2900003703002001200637038001200510294185b2c400ad4280808080f00084100122052900002106200141e0096a41086a200541086a290000370300200120063703e009200510292001200d3602502001200141d0006aad4280808080c000841002220529000037031020051029200141bc056a200141d4006a3602002001200141106a41086a3602b4052001200141d0006a3602b8052001200141106a3602b005200141306a200141b0056a10752001280238221141206a2223417f4c0d01200128023021240240024020230d0041002112410121050c010b202310272205450d03202321120b024002402012410f4d0d00201221130c010b201241017422134110201341104b1b22134100480d04024020120d002013102722050d010c070b20122013460d00200520122013102b2205450d060b2005200129038001370000200541086a20014180016a41086a2903003700000240024020134170714110460d00201321120c010b201341017422124120201241204b1b22124100480d0420132012460d00200520132012102b2205450d060b200520012903e009370010200541186a200141e0096a41086a29030037000002400240201241606a2011490d00201221130c010b201141206a22132011490d04201241017422152013201520134b1b22134100480d0420122013460d00200520122013102b2205450d060b200541206a2024201110e4071a02402001280234450d00202410290b200141086a200520234180a6cc004100410010c7012001280208211202402013450d00200510290b20124101460d0002400240200d417f6a2205200d4b0d00200141306a200510b904200141b0056a20012802302212200128023810bc0420012802b0052105200141e0096a200141b0056a41047241ac0410e4071a024020054103460d0020014180016a200141e0096a41ac0410e4071a02402001280234450d00201210290b200120053602b005200141b0056a41047220014180016a41ac0410e4071a0c020b2001280234450d00201210290b200141023602a809200141023602f008200141023602b8082001410236028008200141023602c8072001410236029007200141023602d806200141023602a006200141023602e805200141023602b0050b200141e0096a200d10b90420012802e0092105200120012802e809360284012001200536028001200141b0056a20014180016a10e50220012802e409450d00200510290b200141b0056a41186a22234200370300200141b0056a41106a220d4200370300200141b0056a41086a22054200370300200142003703b00541f182cc00ad4280808080c001841001221229000021062005201241086a290000370300200120063703b0052012102941ac84cc00ad4280808080900184220610012213290000212020014180016a41086a2212201341086a290000370300200120203703800120131029200d2001290380012220370300200141e0096a41086a22112005290300370300200141e0096a41106a22242020370300200141e0096a41186a22152012290300370300200120012903b0053703e009200141e0096aad4280808080800484100420234200370300200d420037030020054200370300200142003703b00541cd87cc00ad4280808080a001841001221329000021202005201341086a290000370300200120203703b0052013102920061001221329000021062012201341086a290000370300200120063703800120131029200d2001290380012206370300201120052903003703002024200637030020152012290300370300200120012903b0053703e0092001200141e0096a41204180a6cc004100410010c70120012802004101470d03200010e006200141900e6a24000f0b1038000b1039000b1032000b41efb6c700413141b8a1cc001033000b1030000be51b08047f017e017f017e047f017e047f017e230041f0016b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a80141b3e6ca00ad4280808080e000842205100122062900002107200141c8016a41086a2208200641086a290000370300200120073703c8012006102920042008290300370300200120012903c8013703a80141c0a4cb00ad4280808080e001841001220629000021072008200641086a290000370300200120073703c80120061029200320012903c801220737030020014188016a41086a2206200429030037030020014188016a41106a2209200737030020014188016a41186a220a2008290300370300200120012903a8013703880120014188016aad428080808080048422071004200242003703002003420037030020044200370300200142003703a80120051001220b290000210c2008200b41086a2900003703002001200c3703c801200b102920042008290300370300200120012903c8013703a801419ca0cb00ad4280808080e001841001220b290000210c2008200b41086a2900003703002001200c3703c801200b1029200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a8013703880120071004200242003703002003420037030020044200370300200142003703a80120051001220b290000210c2008200b41086a2900003703002001200c3703c801200b102920042008290300370300200120012903c8013703a80141e8a0cb00ad42808080808002841001220b290000210c2008200b41086a2900003703002001200c3703c801200b1029200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a8013703880120071004200242003703002003420037030020044200370300200142003703a80120051001220b290000210c2008200b41086a2900003703002001200c3703c801200b102920042008290300370300200120012903c8013703a80141c9e6ca00ad4280808080e000841001220b290000210c2008200b41086a2900003703002001200c3703c801200b1029200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a80137038801200120014188016a412010fc012001280204210d02402001280200220e4101470d00200710040b200242003703002003420037030020044200370300200142003703a80120051001220b29000021052008200b41086a290000370300200120053703c801200b102920042008290300370300200120012903c8013703a80141cfe6ca00ad4280808080a001841001220b29000021052008200b41086a290000370300200120053703c801200b1029200320012903c801370000200341086a20082903003700002006200429030037030020092003290300370300200a2002290300370300200120012903a80137038801200141c8016a20014188016a412010cd01024002400240024020012d00c80122080d00200141c0016a200141e1016a290000370300200141b8016a200141d9016a290000370300200141b0016a200141d1016a290000370300200120012900c9013703a8010c010b20071004200141a8016a41186a2204200141e1016a290000370300200141a8016a41106a2202200141d9016a290000370300200141a8016a41086a2206200141d1016a290000370300200120012900c9013703a80120084101460d010b200141206a4200370300200141186a4200370300200141106a4200370300200142003703080c010b200141086a41186a2004290300370300200141086a41106a2002290300370300200141086a41086a2006290300370300200120012903a8013703080b200141a8016a41186a22064200370300200141a8016a41106a22094200370300200141a8016a41086a22044200370300200142003703a80141b3e6ca00ad4280808080e00084100122022900002105200141c8016a41086a2208200241086a290000370300200120053703c8012002102920042008290300370300200120012903c8013703a80141e7e6ca00ad4280808080e000841001220229000021052008200241086a290000370300200120053703c80120021029200320012903c801370000200341086a200829030037000020014188016a41086a200429030037030020014188016a41106a200929030037030020014188016a41186a2006290300370300200120012903a80137038801200141c8016a20014188016a10cf030240024020012802c801220f0d004100210a20014100360230200142043703284104210f410021100c010b200710042001200f360228200120012902cc01220537022c2005422088a7210a2005a721100b200d4100200e1b2106200141a8016a41186a22024200370300200141a8016a41106a22094200370300200141a8016a41086a22084200370300200142003703a80141b3e6ca00ad4280808080e000841001220b2900002105200141c8016a41086a2204200b41086a290000370300200120053703c801200b102920082004290300370300200120012903c8013703a80141d9e6ca00ad4280808080e001841001220b29000021052004200b41086a290000370300200120053703c801200b1029200320012903c801370000200341086a200429030037000020014188016a41086a200829030037030020014188016a41106a200929030037030020014188016a41186a2002290300370300200120012903a80137038801200141c8016a20014188016a412010cd01024002400240024020012d00c80122030d002002200141e1016a2900003703002009200141d9016a2900003703002008200141d1016a290000370300200120012900c9013703a8010c010b200710042002200141e1016a2900003703002009200141d9016a2900003703002008200141d1016a290000370300200120012900c9013703a80120034101460d010b200141d0006a4200370300200141c8006a4200370300200141c0006a4200370300200142003703380c010b200141386a41186a200141a8016a41186a290300370300200141386a41106a200141a8016a41106a290300370300200141386a41086a200141a8016a41086a290300370300200120012903a8013703380b0240200641e112490d002006419f6d6a2208450d00200141c8016a200810fb0220013502d00142208620012802c8012208ad84100420012802cc01450d00200810290b41012109024010192207422088a72202450d002007a721090b41002108200141003a00e801200921030240024002400240034020022008460d01200141c8016a20086a20032d00003a00002001200841016a22043a00e801200341016a21032004210820044120470d000b200141d8006a41086a200141c8016a41086a290300370300200141d8006a41106a200141c8016a41106a290300370300200141d8006a41186a200141c8016a41186a290300370300200120012903c80137035802402002450d00200910290b412010272208450d0220082001290308370000200841186a2204200141086a41186a290300370000200841106a2202200141086a41106a290300370000200841086a2209200141086a41086a290300370000412010272203450d0320032008290000370000200341186a2004290000370000200341106a2002290000370000200341086a200929000037000020081029200141f8006a2003ad4280808080800484101a108b0220031029024020012802782204450d0020014180016a2802002102200128027c210b41002108200141003a00e801034020022008460d03200141c8016a20086a200420086a2d00003a00002001200841016a22033a00e8012003210820034120470d000b20014188016a41086a200141c8016a41086a2203290300220737030020014188016a41106a200141c8016a41106a2202290300220537030020014188016a41186a200141c8016a41186a2209290300220c370300200120012903c80122113703880120032007370300200220053703002009200c370300200120113703c801200141a8016a41026a220d20014185016a41026a2d00003a0000200120012f0085013b01a8010240200a2010470d00200141286a201041011096012001280228210f2001280230210a0b200f200a41246c6a220841003a0000200820012903c80137000120092903002107200229030021052003290300210c200820012f01a8013b0021200841236a200d2d00003a0000200841096a200c370000200841116a2005370000200841196a20073700002001200a41016a360230200b450d00200410290b200020012903083700102000200636020020002001290358370030200041286a200141086a41186a290300370000200041206a200141086a41106a290300370000200041186a200141086a41086a290300370000200041386a200141d8006a41086a290300370000200041c0006a200141d8006a41106a290300370000200041c8006a200141d8006a41186a290300370000200041e8006a200141386a41186a290300370000200041e0006a200141386a41106a290300370000200041d8006a200141386a41086a290300370000200020012903383700502000410c6a200141286a41086a28020036020020002001290328370204200141f0016a24000f0b0240200841ff0171450d00200141003a00e8010b41ebb6cb00412c200141c8016a418cf7ca004198b7cb00103a000b0240200841ff0171450d00200141003a00e8010b41ebb6cb00412c200141c8016a418cf7ca0041a8b7cb00103a000b1039000b1030000b8f0201027f20014180feff07714108762102024002402001410171450d00411f210341919bcc00210102400240200241ff01710e03000103000b41c100210341d09acc0021010c020b41c1002103418f9acc0021010c010b411f210341f099cc002101024002400240024002400240024002400240200241ff01710e0a00060102030405090708000b4120210341d099cc0021010c080b4127210341f098cc0021010c070b4117210341d998cc0021010c060b41ba98cc0021010c050b41262103419498cc0021010c040b412b210341e997cc0021010c030b41392103419799cc0021010c020b413b210341ae97cc0021010c010b41d100210341dd96cc0021010b20002003360204200020013602000bba0201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001104621000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000b20024180016a240020000f0b200441800141a88ac000104c000b200441800141a88ac000104c000bb10301037f23004180026b22022400024002402001450d00200220003602000c010b20024180a6cc003602000b20022001360204200241f8006a200210f8020240200228027c450d00200241086a200241f8006a41f00010e4071a200241086a10fa02200228020c21030240200241086a410c6a2802002201450d00200141246c21002003210103400240024020012d0000220441044b0d0002400240024020040e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b0240200241106a2802002201450d00200141246c450d00200310290b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c200241a0d1c200360208200241043602ec01200241e8d1c2003602e801200241003602fc0120024180a6cc003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a41b0d1c2001040000bd40402087f017e230041106b22022400200210850302400240024002402002280208220341046a2204417f4c0d0020022802002105024002400240024002400240024002402004450d00200410272206450d09200341c000490d04200341808001490d052003418080808004490d0620040d010b41012104410110272206450d0a200641033a0000410521070c010b200641033a000002402004417f6a4104490d00200421070c020b200441017422084105200841054b1b22074100480d0820042007460d010b200620042007102b2206450d080b20062003360001410521080c030b024020040d0041012104410110272206450d070b200620034102743a000041012108200421070c020b02400240200441014d0d00200421070c010b200441017422084102200841024b1b2107024020040d002007102722060d010c070b20042007460d00200620042007102b2206450d060b41022108200620034102744101723b00000c010b02400240200441034d0d00200421070c010b200441017422084104200841044b1b22074100480d04024020040d00200710272206450d060c010b20042007460d00200620042007102b2206450d050b20062003410274410272360000410421080b0240200720086b20034f0d00200820036a22042008490d03200741017422092004200920044b1b22044100480d0320072004460d00200620072004102b2206450d040b200620086a2005200310e4071a200820036aad4220862006ad84210a02402002280204450d00200228020010290b200241106a2400200a0f0b1038000b1039000b1032000b1030000b9c38010f7f230041d0006b2201240020014100360238200142043703300240410810272202450d0020024115360204200241e7acc700360200200141306a41004101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d00200241103602042002418ae4ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d002002410e360204200241a4e4ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d002002410c360204200241b2e4ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d0020024108360204200241f7e3ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d002002410a3602042002419ae4ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d002002410b360204200241ffe3ca00360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d0020024118360204200241af9fc800360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d0020024116360204200241fdd3c800360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d0020024119360204200241bfb0c700360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d002002411a360204200241f49ec400360200200141306a20012802384101108d01200128023020012802384103746a20022902003702002001200128023841016a36023820021029410810272202450d0020024112360204200241afebc300360200200141306a20012802384101108d01200128023020012802384103746a200229020037020020012001280238220341016a22043602382002102920012802342105200128023021062001410036023820014204370330200141306a410020044103742202410375109d0120012802382107024020042003490d00200620026a210820012802302007410c6c6a210220062104034020042802002203450d01200241086a200441046a280200360200200241046a2003360200200241003602002002410c6a2102200741016a2107200441086a22042008470d000b0b200120073602380240200541ffffffff0171450d00200610290b200128023421092001280230210a2001410036022820014201370320410410272202450d002001410436022420012002360220200241edcad18b063600002001410436022820012802202102024020012802244104470d00200241044108102b2202450d0120014108360224200120023602200b2002410b3a000420014105360228411f200141206a107141b4a4c500210b02400340200b2802042105200b2802082203200141206a10710240024020012802242206200128022822086b2003490d0020012802202104200621020c010b200820036a22022008490d02200641017422042002200420024b1b22024100480d020240024020060d00024020020d00410121040c020b2002102722040d010c050b2001280220210420062002460d00200420062002102b2204450d040b20012002360224200120043602200b200420086a2005200310e4071a2001200820036a220336022802400240200b28020c4102470d000240024020022003460d00200321020c010b200241016a22032002490d04200241017422082003200820034b1b22034100480d040240024020020d0041002102024020030d00410121040c020b200310272204450d070c010b20022003460d00200420022003102b2204450d060b20012003360224200120043602200b200420026a41003a00002001200241016a22023602280c010b0240024020022003460d00200321020c010b200241016a22032002490d03200241017422082003200820034b1b22034100480d030240024020020d0041002102024020030d00410121040c020b200310272204450d060c010b20022003460d00200420022003102b2204450d050b20012003360224200120043602200b200420026a41013a00002001200241016a36022802400240200b28020c4101470d00200b2802142106200b2802182202200141206a10710240024020012802242208200128022822046b2002490d00200128022021030c010b200420026a22032004490d05200841017422052003200520034b1b22054100480d050240024020080d00024020050d00410121030c020b200510272203450d080c010b2001280220210320082005460d00200320082005102b2203450d070b20012005360224200120033602200b200320046a2006200210e4071a2001200420026a360228200b28022021020240200b28021c4101470d002002200b280228200141206a10740c020b2002200b41246a280200200141206a10740c010b200141306a200b2802101103002001280234210620012802382202200141206a10710240024020012802242208200128022822046b2002490d00200128022021030c010b200420026a22032004490d04200841017422052003200520034b1b22054100480d040240024020080d00024020050d00410121030c020b200510272203450d070c010b2001280220210320082005460d00200320082005102b2203450d060b20012005360224200120033602200b200320046a2006200210e4071a2001200420026a360228200128024021030240200128023c4101460d0020032001280244200141206a10740c010b200320012802482202200141206a107402402002450d00200241d8006c21084100210403400240200320046a220241346a280200450d002002413c6a280200450d00200241386a28020010290b0240200241c4006a280200450d00200241cc006a28020041ffffffff0171450d00200241c8006a28020010290b2008200441d8006a2204470d000b0b20012802442202450d00200241d8006c450d00200310290b200128022821020b2001280224210402400240200b28022c4102470d000240024020042002460d00200128022021040c010b200241016a22042002490d04200241017422032004200320044b1b22034100480d040240024020020d0041002102024020030d00410121040c020b200310272204450d070c010b2001280220210420022003460d00200420022003102b2204450d060b20012003360224200120043602200b200420026a41003a00002001200241016a22023602280c010b0240024020042002460d00200128022021040c010b200241016a22042002490d03200241017422032004200320044b1b22034100480d030240024020020d0041002102024020030d00410121040c020b200310272204450d060c010b2001280220210420022003460d00200420022003102b2204450d050b20012003360224200120043602200b200420026a41013a00002001200241016a36022802400240200b28022c4101470d00200b2802302104200b2802382202200141206a10712002450d012002412c6c21052004411c6a21020340200241686a280200210c2002416c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d062006410174220d2008200d20084b1b220d4100480d060240024020060d000240200d0d00410121080c020b200d10272208450d090c010b200128022021082006200d460d0020082006200d102b2208450d080b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a360228200241706a200141206a10702002200141206a10732002412c6a2102200541546a22050d000c020b0b200141186a200b28023011030020012802182104200128021c2202200141206a10712002450d002002412c6c21052004411c6a21020340200241686a280200210c2002416c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d052006410174220d2008200d20084b1b220d4100480d050240024020060d000240200d0d00410121080c020b200d10272208450d080c010b200128022021082006200d460d0020082006200d102b2208450d070b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a360228200241706a200141206a10702002200141206a10732002412c6a2102200541546a22050d000b0b200128022821020b2001280224210402400240200b28023c4102470d000240024020042002460d00200128022021040c010b200241016a22042002490d04200241017422032004200320044b1b22034100480d040240024020020d0041002102024020030d00410121040c020b200310272204450d070c010b2001280220210420022003460d00200420022003102b2204450d060b20012003360224200120043602200b200420026a41003a00002001200241016a3602280c010b0240024020042002460d00200128022021040c010b200241016a22042002490d03200241017422032004200320044b1b22034100480d030240024020020d0041002102024020030d00410121040c020b200310272204450d060c010b2001280220210420022003460d00200420022003102b2204450d050b20012003360224200120043602200b200420026a41013a00002001200241016a3602280240200b28023c4101470d00200b2802402104200b2802482202200141206a10712002450d012002412c6c21052004411c6a21020340200241686a280200210c2002416c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d052006410174220d2008200d20084b1b220d4100480d050240024020060d000240200d0d00410121080c020b200d10272208450d080c010b200128022021082006200d460d0020082006200d102b2208450d070b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a360228200241706a200141206a10732002200141206a10732002412c6a2102200541546a22050d000c020b0b200141106a200b2802401103002001280210210420012802142202200141206a10712002450d002002412c6c21052004411c6a21020340200241686a280200210c2002416c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d042006410174220d2008200d20084b1b220d4100480d040240024020060d000240200d0d00410121080c020b200d10272208450d070c010b200128022021082006200d460d0020082006200d102b2208450d060b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a360228200241706a200141206a10732002200141206a10732002412c6a2102200541546a22050d000b0b02400240200b28024c4101470d00200b280250210e200b2802582202200141206a10712002450d01200241386c210f410021080340200e20086a220241046a280200210c200241086a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d052005410174220d2006200d20064b1b220d4100480d050240024020050d000240200d0d00410121060c020b200d10272206450d080c010b200128022021062005200d460d0020062005200d102b2206450d070b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a360228200241106a280200210c200241146a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d052005410174220d2006200d20064b1b220d4100480d050240024020050d000240200d0d00410121060c020b200d10272206450d080c010b200128022021062005200d460d0020062005200d102b2206450d070b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a36022802400240200241186a2802004101470d002002411c6a280200210c200241246a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d072005410174220d2006200d20064b1b220d4100480d070240024020050d000240200d0d00410121060c020b200d10272206450d0a0c010b200128022021062005200d460d0020062005200d102b2206450d090b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a3602280c010b200141306a2002411c6a280200200241206a28020028020c1102002001280230210520012802382204200141206a1071024002402001280224220c200128022822036b2004490d00200128022021060c010b200320046a22062003490d06200c410174220d2006200d20064b1b220d4100480d0602400240200c0d000240200d0d00410121060c020b200d10272206450d090c010b20012802202106200c200d460d002006200c200d102b2206450d080b2001200d360224200120063602200b200620036a2005200410e4071a2001200320046a3602282001280234450d00200510290b200241286a200141206a1073200f200841386a2208470d000c020b0b200141086a200b2802501103002001280208210e200128020c2202200141206a10712002450d00200241386c210f410021080340200e20086a220241046a280200210c200241086a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d042005410174220d2006200d20064b1b220d4100480d040240024020050d000240200d0d00410121060c020b200d10272206450d070c010b200128022021062005200d460d0020062005200d102b2206450d060b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a360228200241106a280200210c200241146a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d042005410174220d2006200d20064b1b220d4100480d040240024020050d000240200d0d00410121060c020b200d10272206450d070c010b200128022021062005200d460d0020062005200d102b2206450d060b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a36022802400240200241186a2802004101470d002002411c6a280200210c200241246a2802002204200141206a10710240024020012802242205200128022822036b2004490d00200128022021060c010b200320046a22062003490d062005410174220d2006200d20064b1b220d4100480d060240024020050d000240200d0d00410121060c020b200d10272206450d090c010b200128022021062005200d460d0020062005200d102b2206450d080b2001200d360224200120063602200b200620036a200c200410e4071a2001200320046a3602280c010b200141306a2002411c6a280200200241206a28020028020c1102002001280230210520012802382204200141206a1071024002402001280224220c200128022822036b2004490d00200128022021060c010b200320046a22062003490d05200c410174220d2006200d20064b1b220d4100480d0502400240200c0d000240200d0d00410121060c020b200d10272206450d080c010b20012802202106200c200d460d002006200c200d102b2206450d070b2001200d360224200120063602200b200620036a2005200410e4071a2001200320046a3602282001280234450d00200510290b200241286a200141206a1073200f200841386a2208470d000b0b02400240200b28025c4101470d00200b2802602104200b2802682202200141206a10712002450d012002411c6c21052004410c6a21020340200241786a280200210c2002417c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d052006410174220d2008200d20084b1b220d4100480d050240024020060d000240200d0d00410121080c020b200d10272208450d080c010b200128022021082006200d460d0020082006200d102b2208450d070b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a3602282002200141206a10732002411c6a2102200541646a22050d000c020b0b2001200b2802601103002001280200210420012802042202200141206a10712002450d002002411c6c21052004410c6a21020340200241786a280200210c2002417c6a2802002204200141206a10710240024020012802242206200128022822036b2004490d00200128022021080c010b200320046a22082003490d042006410174220d2008200d20084b1b220d4100480d040240024020060d000240200d0d00410121080c020b200d10272208450d070c010b200128022021082006200d460d0020082006200d102b2208450d060b2001200d360224200120083602200b200820036a200c200410e4071a2001200320046a3602282002200141206a10732002411c6a2102200541646a22050d000b0b200b41ec006a220b41c8bec500470d000b02400240200128022420012802282202460d00200128022021040c010b200241016a22042002490d01200241017422032004200320044b1b22034100480d010240024020020d0041002102024020030d00410121040c020b200310272204450d040c010b2001280220210420022003460d00200420022003102b2204450d030b20012003360224200120043602200b200420026a41043a00002001200241016a3602282007200141206a107102402007450d002007410c6c2105200a41086a210403402004417c6a280200210c20042802002202200141206a10710240024020012802242206200128022822036b2002490d00200128022021080c010b200320026a22082003490d032006410174220d2008200d20084b1b220d4100480d030240024020060d000240200d0d00410121080c020b200d10272208450d060c010b200128022021082006200d460d0020082006200d102b2208450d050b2001200d360224200120083602200b200820036a200c200210e4071a2001200320026a3602282004410c6a2104200541746a22050d000b0b20002001290320370200200041086a200141206a41086a28020036020002402009450d002009410c6c450d00200a10290b200141d0006a24000f0b1032000b1030000bbe0601057f230041800b6b22022400024002402001450d00200220003602080c010b20024180a6cc003602080b2002200136020c200241b0076a200241086a10870302400240024002402002290398084203510d00200241206a200241b0076a41c00310e4071a200241e0036a200241206a41c00310e4071a2002200241e0036a3602b007200241a0076a200241b0076a10bd0220022802a8072101200241b0076a200241e0036a41c00310e4071a200241f80a6a20022802a807360200200220022903a0073703f00a200241106a200241b0076a2001200241f00a6a10fd024101410220022d001022034101461b220010272201450d01200241003602b807200220003602b407200220013602b0070240024020034101470d00200141013a0000200241013602b807200241106a410172200241b0076a10880320022802b807210020022802b00721010c010b200141003a0000200241013602b8070240024020022d001422044104460d00200141013a000141022103200241023602b80702400240024002400240024020040e0400010203000b410021040c030b410121040c020b200241023a00e003410221040c020b200241033a00e00341042100200141024104102b2201450d07200141033a0002200220013602b00720024284808080303702b407200220022d001522033a00e003024041010d0041062100200141034106102b2201450d08200241063602b407200220013602b0070b200120033a000341042103200241043602b80720022d001621040b200220043a00e0030b024020002003470d0041000d070240200020004101742205200041016a2206200520064b1b2205460d00200120002005102b2201450d070b200220053602b407200220013602b0070b200120036a20043a0000200341017221000c010b200141003a0001410221000b200220003602b8070b200241800b6a24002000ad4220862001ad840f0b2002412c6a4104360200200241f4036a4102360200200242023702e403200241a0d1c2003602e0032002410436022420024180d2c2003602202002410036021420024180a6cc003602102002200241206a3602f0032002200241106a360228200241e0036a41b0d1c2001040000b1039000b1030000b1032000b8b1304057f017e047f047e23004180086b22022400200241206a200110c801024002400240024002400240024020022802200d0020012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a360200200541ff00714104470d024100210620054118744118754100480d03420221070c040b200042033703680c050b200042033703680c040b200042033703680c030b200241003a00c8042003417f6a2108200321050240024002400240024002400240024002400240034020082006460d01200241a8046a20066a200420066a220941016a2d00003a000020012005417e6a3602042001200941026a3602002002200641016a22093a00c8042005417f6a21052009210620094120470d000b200241d8066a41186a200241a8046a41186a290300370300200241d8066a41106a200241a8046a41106a290300370300200241d8066a41086a200241a8046a41086a290300370300200220022903a8043703d8062003417f6a2009460d08200420096a220441016a2d0000210620012005417e6a3602042001200441026a360200200641024b0d0820060e03010203010b200641ff0171450d07200241003a00c8040c070b41002106200241003a00e8042003417e6a210a200920036b41026a210b200320096b417d6a210902400340200b20066a450d01200241a8046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00e8042009417f6a2109200a417f6a210a20082106200841c000470d000b200241c0076a41386a200241a8046a41386a2903002207370300200241c0076a41306a200241a8046a41306a290300220c370300200241c0076a41286a200241a8046a41286a290300220d370300200241c0076a41206a200241a8046a41206a290300220e370300200241c0076a41186a200241a8046a41186a290300220f37030020024180026a41086a200241a8046a41086a29030037030020024180026a41106a200241a8046a41106a29030037030020024180026a41186a200f37030020024180026a41206a200e37030020024180026a41286a200d37030020024180026a41306a200c37030020024180026a41386a2007370300200220022903a80437038002200520086b417e6a2105200420086a41026a2109410021060c030b200641ff0171450d06200241003a00e804420221070c070b41002106200241003a00e8042003417e6a210a200920036b41026a210b200320096b417d6a210902400340200b20066a450d01200241a8046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00e8042009417f6a2109200a417f6a210a20082106200841c000470d000b200241c0076a41386a200241a8046a41386a2903002207370300200241c0076a41306a200241a8046a41306a290300220c370300200241c0076a41286a200241a8046a41286a290300220d370300200241c0076a41206a200241a8046a41206a290300220e370300200241c0076a41186a200241a8046a41186a290300220f37030020024180026a41086a200241a8046a41086a29030037030020024180026a41106a200241a8046a41106a29030037030020024180026a41186a200f37030020024180026a41206a200e37030020024180026a41286a200d37030020024180026a41306a200c37030020024180026a41386a2007370300200220022903a80437038002200520086b417e6a2105200420086a41026a2109410121060c020b200641ff0171450d05200241003a00e804420221070c060b41002106200241003a00e9042003417e6a210a200920036b41026a210b200320096b417d6a21090340200b20066a450d02200241a8046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00e9042009417f6a2109200a417f6a210a20082106200841c100470d000b20024180026a200241a8046a41c10010e4071a200520086b417e6a210541022106200420086a41026a21090b200241ff066a20024180026a41c10010e4071a2005450d032009310000210d20012005417f6a22043602042001200941016a360200200d50450d01420021070c020b200641ff0171450d02200241003a00e904420221070c030b2004450d012009310001210e20012005417e6a3602042001200941026a3602004202200d420f8386220c4204540d0142012107200e420886200d84420488200c420c88220d4201200d4201561b7e220d200c5a0d010b200241186a200110c80120022802180d00200228021c2105200220011084022002290300a70d00200241106a290300210f2002290308210e200241c0076a41186a200241d8066a41186a290300370300200241c0076a41106a200241d8066a41106a290300370300200241c0076a41086a200241d8066a41086a290300370300200220022903d8063703c007200241a8046a200241ff066a41c10010e4071a200241f8016a41046a200241d2066a41046a2f01003b0100200220022801d2063602f8010c010b420221070b200241d8016a41186a2209200241c0076a41186a290300370300200241d8016a41106a2204200241c0076a41106a290300370300200241d8016a41086a2208200241c0076a41086a290300370300200220022903c0073703d80120024197016a200241a8046a41c10010e4071a20024190016a41046a2203200241f8016a41046a2f01003b0100200220022802f8013602900120074202510d01200241f0006a41186a2009290300370300200241f0006a41106a2004290300370300200241f0006a41086a2008290300370300200220022903d8013703702002412f6a20024197016a41c10010e4071a200241286a41046a20032f01003b010020022002280290013602280b200241a8046a200110e40320022802a804210120024180026a200241a8046a41047241a40210e4071a02402001411c460d0020002002290370370300200020063a0020200041186a200241f0006a41186a290300370300200041106a200241f0006a41106a290300370300200041086a200241f0006a41086a290300370300200041216a2002412f6a41c10010e4071a200041e6006a200241286a41046a2f01003b01002000200228022836016220004188016a200f37030020004180016a200e37030020004198016a200136020020004190016a2005360200200041f8006a200d3703002000200c370370200020073703682000419c016a20024180026a41a40210e4071a0c020b200042033703680c010b200042033703680b20024180086a24000bb30301027f230041106b220224000240024020002d00004101460d00200241003a000e20012002410e6a4101107220002d0001220341094b0d010240024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a000f2002410f6a21000c090b200241013a000f2002410f6a21000c080b200241023a000f2002410f6a21000c070b200241033a000f2002410f6a21000c060b200241043a000f2002410f6a21000c050b200241053a000f2002410f6a21000c040b200241063a000f2002410f6a21000c030b200241073a000f20012002410f6a410110722002200041026a2d00003a000f2002410f6a21000c020b200241083a000f2002410f6a21000c010b200241093a000f2002410f6a21000b20012000410110720c010b200241013a000e20012002410e6a4101107220002d0001220341024b0d0002400240024020030e03000102000b200241003a000e20012002410e6a410110720c020b200241013a000e20012002410e6a410110720c010b200241023a000e20012002410e6a410110722002200041026a2d00003a000e20012002410e6a410110720b200241106a24000bcb1305047f017e017f017e0b7f23004180026b2202240010fe02200241106a41186a22034200370300200241106a41106a22044200370300200241106a41086a220542003703002002420037031041b3e6ca00ad4280808080e0008422061001220729000021082005200741086a290000370300200220083703102007102941c9e6ca00ad4280808080e00084100122072900002108200241b0016a41086a2209200741086a290000370300200220083703b00120071029200420022903b0012208370300200241d0016a41086a220a2005290300370300200241d0016a41106a220b2008370300200241d0016a41186a220c2009290300370300200220022903103703d001200241086a200241d0016a412010fc0141002107200228020c410020022802081b10ff022003420037030020044200370300200542003703002002420037031020061001220d2900002108200241f0016a41086a220e200d41086a290000370300200220083703f001200d10292005200e290300370300200220022903f001370310419ca0cb00ad4280808080e001841001220d2900002108200e200d41086a290000370300200220083703f001200d1029200420022903f0012208370300200a2005290300370300200b2008370300200c200e290300370300200220022903103703d0012002200241d0016a412010fc012002280204210d2002280200210f200241003602b801200242043703b001200241b0016a4100200d4100200f1b2210109d0120022802b801211102402010450d0020022802b0012011410c6c6a210d0340200241d0016a2007108a03200241106a20022802d001221220022802d8012213108b0302402002280210220f450d002013ad4220862012ad8410040b200741016a210720022902144200200f1b2108200f4101200f1b210f024020022802d401450d00201210290b200d200f360200200d41046a2008370200200d410c6a210d20102007470d000b201120106a21110b20024180016a41086a2011360200200220022903b001220837038001200520113602002002200837031020024190016a200241106a10fc02200241b0016a41186a20024190016a41186a290300370300200241b0016a41106a20024190016a41106a290300370300200920024190016a41086a29030037030020022002290390013703b001200342003703002004420037030020054200370300200242003703102006100122072900002108200e200741086a290000370300200220083703f001200710292005200e290300370300200220022903f00137031041d9e6ca00ad4280808080e00184100122072900002108200e200741086a290000370300200220083703f00120071029200420022903f001370000200441086a200e290300370000200a2005290300370300200b2004290300370300200c2003290300370300200220022903103703d001024002400240412010272207450d00200720022903b001370000200741186a200241b0016a41186a290300370000200741106a200241b0016a41106a290300370000200741086a200241b0016a41086a290300370000200241d0016aad42808080808004842007ad4280808080800484100320071029200241106a108003200241003602b801200242013703b001412010272207450d0020072002290320370000200741186a200241386a290300370000200741106a200241106a41206a290300370000200741086a200241106a41186a29030037000041201027220d450d02200241203602b4012002200d3602b001200d2007290000370000200d41086a200741086a290000370000200d41106a200741106a290000370000200d41186a200741186a290000370000200241203602b80120071029200241106a200241b0016a10e601412010272207450d0020072002290340370000200741186a200241d8006a290300370000200741106a200241d0006a290300370000200741086a200241c8006a2903003700000240024020022802b401221020022802b80122136b4120490d00201341206a210d20022802b001210f201021120c010b201341206a220d2013490d022010410174220f200d200f200d4b1b22124100480d020240024020100d00024020120d004101210f0c020b20121027220f0d010c050b20022802b001210f20102012460d00200f20102012102b220f450d040b200220123602b4012002200f3602b0010b200f20136a22132007290000370000201341186a200741186a290000370000201341106a200741106a290000370000201341086a200741086a2900003700002002200d3602b80120071029412010272207450d0020072002290360370000200741186a200241f8006a290300370000200741106a200241f0006a290300370000200741086a200241e8006a29030037000002402012200d6b411f4b0d00200d41206a2213200d490d02201241017422102013201020134b1b22134100480d020240024020120d00024020130d004101210f0c020b20131027220f450d050c010b20122013460d00200f20122013102b220f450d040b200220133602b4012002200f3602b0010b200f200d6a220f2007290000370000200f41186a200741186a290000370000200f41106a200741106a290000370000200f41086a200741086a2900003700002002200d41206a3602b80120071029200228021421032002411c6a2802002211200241b0016a10710240024020110d0020022802b801210d20022802b00121050c010b201141246c210e20022802b401210f20022802b8012107200321130340200241d0016a201310bc0220022802d001210402400240200f20076b20022802d8012210490d00200720106a210d20022802b0012105200f21120c010b200720106a220d2007490d04200f4101742212200d2012200d4b1b22124100480d0402400240200f0d00024020120d00410121050c020b201210272205450d070c010b20022802b0012105200f2012460d002005200f2012102b2205450d060b200220123602b401200220053602b0010b200520076a2004201010e4071a2002200d3602b801024020022802d401450d00200410290b201341246a21132012210f200d2107200e415c6a220e0d000b0b200dad42208621082005ad210602402011450d00201141246c210d2003210703400240024020072d0000220f41044b0d00024002400240200f0e050400010204040b2007410c6a280200450d03200741086a28020010290c030b2007410c6a280200450d02200741086a28020010290c020b2007410c6a280200450d01200741086a28020010290c010b200741086a280200450d00200741046a28020010290b200741246a2107200d415c6a220d0d000b0b200820068421080240200241186a2802002207450d00200741246c450d00200310290b20024180026a240020080f0b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041b3e6ca00ad4280808080e00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b0a1cb00ad4280808080d00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000ba30303037f017e027f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b020240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10c80102400240024020032802000d002003280224220420032802042205490d002005417f4c0d040240024020050d0042002106410121070c010b2005102d2207450d06200720032802202208200510e4071a2003200420056b3602242003200820056a3602202005ad21060b20070d010b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602000c010b200020062005ad42208684370204200020073602000b2002450d00200110290b200341e0006a24000f0b1038000b1039000bc51405017f017e027f017e097f23004190066b22022400024002402001450d00200220003602200c010b20024180a6cc003602200b20022001360224200241186a200241206a10c8010240024020022802180d00200228021c21012002200241206a36028005200241003a0048200241003602f802200241003602f0022002200136025c200241003602582002200241c8006a360264200220024180056a360260200241d8006a200241f0026a108d03200241a8056a41086a20022802f8022201360200200220022903f00222033703a80520022d00482100200241d8006a41086a22042001360200200220033703582000450d01200241d8006a108e030b200241fc026a4104360200200241ec006a41023602002002420237025c200241a0d1c200360258200241043602f40220024198d2c2003602f002200241003602ac0520024180a6cc003602a8052002200241f0026a3602682002200241a8056a3602f802200241d8006a41b0d1c2001040000b200241286a41086a20042802002201360200200220022903582203370328200241386a41086a2001360200200220033703382002410036025020024208370348200241d8006a200241386a1089010240024002400240024020022802584101460d00200241d8006a41086a22012903002103200241d8006a41186a4200370300200241d8006a41106a22054200370300200142003703002002420037035841ccbec500ad42808080809001841001220029000021062001200041086a290000370300200220063703582000102941aafac400ad42808080803084100122002900002106200241a8056a41086a2204200041086a290000370300200220063703a80520001029200520022903a8052206370300200241f0026a41086a2001290300370300200241f0026a41106a2006370300200241f0026a41186a2004290300370300200220022903583703f002200241086a200241f0026a10b5012002280208210020022903102106200241c8006a410010a401200228024822072002280250220441c0036c6a220141033602980120014202370368200141a0016a2003200642b8177c42b81720001b220620032006561b3703002002200441016a22083602500240024020022802382209450d00200228023c210a2009210b02400340200b41086a2100200b2f0106220c4103742101410021040240024003402001450d014193c1c2002000410810e707220d450d02200141786a2101200441016a2104200041086a2100200d417f4a0d000b2004417f6a210c0b200a450d02200a417f6a210a200b200c4102746a41e4016a280200210b0c010b0b200b41e0006a2004410c6c6a22012802084104490d002001280200280000210d200241d8006a41186a22044200370300200241d8006a41106a220b4200370300200241d8006a41086a220142003703002002420037035841eea1c800ad4280808080f001841001220029000021032001200041086a290000370300200220033703582000102941fda1c800ad4280808080b00184100122002900002103200241a8056a41086a220a200041086a290000370300200220033703a80520001029200520022903a805370000200541086a200a290300370000200241f0026a41086a2001290300370300200241f0026a41106a200b290300370300200241f0026a41186a2004290300370300200220022903583703f002200241d8006a200241f0026a108f0320022802582201410420011b2104410021000240200229025c420020011b2203422088a72201450d00200141027420046a417c6a2201450d002001280200200d4721000b0240200342ffffffff0383500d00200410290b2000450d0002402008200228024c470d00200241c8006a200810a40120022802482107200228025021080b2007200841c0036c6a200241f0026a41e80010e407220142023703682001419c016a200d3602002001410a36029801200120022903a805370370200141f8006a200241b0056a29030037030020014180016a200241b8056a29030037030020014188016a200241c0056a29030037030020014190016a200241c8056a290300370300200141a8016a200241d8006a41940210e4071a2002200841016a22083602500b2009450d00200228023c210b0340200941086a210020092f0106220a4103742101410021040240024003402001450d0141feacc7002000410810e707220d450d02200141786a2101200441016a2104200041086a2100200d417f4a0d000b2004417f6a210a0b200b450d02200b417f6a210b2009200a4102746a41e4016a28020021090c010b0b200220092004410c6c6a220141e8006a2802003602ac052002200141e0006a2802003602a805200241d8006a200241a8056a109003200228025822000d012002412936025c200241d78fcc003602584186adc7004125200241d8006a419cbbc70041acadc700103a000b41bcadc700412a41acadc7001057000b200241d8006a41086a2802002104200228025c210d200241d8006a200241f0026a41900210e4071a02402008200228024c470d00200241c8006a200810a40120022802482107200228025021080b2007200841c0036c22096a200241a8056a41e80010e407220142023703682001200229038005370370200141f8006a20024180056a41086a29030037030020014180016a20024190056a29030037030020014188016a20024198056a29030037030020014190016a200241a0056a290300370300200141a8016a2004360200200141a4016a200d360200200141a0016a2000360200200142948080801037039801200141ac016a200241d8006a41900210e4071a200228024c210e200241386a108e03200941c4036a2201417f4c0d01200110272200450d02200241003602f802200220013602f402200220003602f002200841016a220f200241f0026a107102400240200f0d0020022802f802210020022802f002210a0c010b200841c0036c41c0036a210520022802f402210420022802f8022101200721090340200220093602a805200241d8006a200241a8056a10bd022002280258210c02400240200420016b2002280260220b490d002001200b6a210020022802f002210a2004210d0c010b2001200b6a22002001490d062004410174220d2000200d20004b1b220d4100480d060240024020040d000240200d0d004101210a0c020b200d1027220a0d010c090b20022802f002210a2004200d460d00200a2004200d102b220a450d080b2002200d3602f4022002200a3602f0020b200a20016a200c200b10e4071a200220003602f8020240200228025c450d00200c10290b200941c0036a2109200d210420002101200541c07c6a22050d000b0b2000ad4220862103200aad21060240200f450d0020074198016a2101200841c0036c41c0036a21000340200110c201200141c0036a2101200041c07c6a22000d000b0b200320068421030240200e450d00200e41c0036c450d00200710290b20024190066a240020030f0b200241f8026a200241e4006a2902003703002002200229025c3703f00241c0fac4004128200241f0026a41b0fac40041e8fac400103a000b1038000b1039000b1032000b1030000bd40505067f017e047f017e027f23004180026b22022400024002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a2000280208280200220710ab0420022d00184101460d0120022900192108200241086a200710c80120022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d0041002107410121090c010b2003102d2209450d0820072802042003490d0120092007280200200310e4071a2007280204220a2003490d062007200a20036b3602042007200728020020036a360200200321070b20022008370310024002402001280200220b450d002001280204210c0c010b2006410041da0010e6071a200241186a410041840110e6071a41e4011027220b450d074100210c200b4100360200200b41046a200241a0016a41dc0010e4071a200b41e0006a200241186a41840110e4071a200141003602042001200b3602000b2003ad4220862007ad84210d024002400340200b41086a2107200b2f0106220e41037421034100210a024003402003450d01200241106a2007410810e707220f450d03200341786a2103200a41016a210a200741086a2107200f417f4a0d000b200a417f6a210e0b0240200c450d00200c417f6a210c200b200e4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200e360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a1092030c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d00200310290b200028020022032000280204490d010c030b0b200910290b200441013a00000b20024180026a24000f0b1038000b2003200a41ccafc000104c000b1030000b1039000be60203047f017e017f024020002802002201450d0020002802082102024020002802042200450d00034020012802e40121012000417f6a22000d000b0b02402002450d0041002103024003402001450d01410021040240200320012f0106490d00034002400240200128020022000d0041002103410021000c010b200441016a210420012f010421030b2001102920002101200320002f01064f0d000b200021010b200341016a210020012003410c6c6a220341e4006a2902002105200341e0006a28020021060240024020040d00200021030c010b200120004102746a41e4016a2802002101410021032004417f6a2200450d00034020012802e40121012000417f6a22000d000b0b2006450d022002417f6a210202402005a7450d00200610290b20020d000c020b0b41a79dc800412b41e0f6c4001033000b2001450d0020012802002100200110292000450d00034020002802002101200010292001210020010d000b0b0ba20403047f017e027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022010d00200041003602000c010b200228021421032002200241186a280200360224200220013602202002200241206a10c8010240024020022802000d002002280224220420022802044102742205490d0002400240024002402005417f4c0d000240024020050d0042002106410121070c010b2005102d2207450d02200720022802202208200510e4071a2002200420056b3602242002200820056a3602202005ad21060b2007450d04024020062005ad422086842206422088a722050d002006a721050c030b024020072005724103710d002006a722054103710d0020054102762204450d032006422288a721080c040b2006a7450d04200710290c040b1038000b1039000b4100210802402005450d00200710290b41002104410421070b41000d002007450d002000200436020420002007360200200041086a20083602000c010b20024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000b2003450d00200110290b200241e0006a24000bfb390c037f017e227f027e047f017e157f047e017f027e0f7f027e23004180086b22022400200241206a200110c80102400240024002402002280220450d00200041003602000c010b2002280224220320012802044190026e2204200420034b1bad4290027e2205422088a70d022005a72204417f4c0d020240024020040d00410821060c010b200410272206450d020b2002410036023020022006360228200220044190026e36022c024002402003450d004100210741002108034002400240200128020422094104490d002001280200220a280000210b20012009417c6a220c3602042001200a41046a36020041002104200241003a00d8072009417b6a210902400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400340200c2004460d01200241b8076a20046a200a20046a220d41046a2d00003a0000200120093602042001200d41056a3602002002200441016a220d3a00d8072009417f6a2109200d2104200d4120470d000b200241f8046a41086a220e200241b8076a41086a220f290300370300200241f8046a41106a2210200241b8076a41106a2211290300370300200241f8046a41186a2212200241b8076a41186a2213290300370300200220022903b8073703f804200241186a200110c80120022802180d1c2001280204200228021c2209490d1c2009417f4c0d2320090d014100210d410121140c020b200441ff0171450d1b200241003a00d8070c1b0b2009102d2214450d2020012802042009490d0120142001280200200910e4071a200128020422042009490d0c2001200420096b3602042001200128020020096a3602002009210d0b2014450d1941002104200241003a00d8072009ad422086200dad842205422088a721152005a721162001280204210c417f210902400340200c2004460d01200241b8076a20046a2001280200220a2d00003a00002001200c20096a3602042001200a41016a3602002002200441016a220d3a00d8072009417f6a2109200d2104200d4120470d000b20024198056a41186a2217201329030037030020024198056a41106a2218201129030037030020024198056a41086a2219200f290300370300200220022903b8073703980541002104200241003a00f807200d200c6b211a200c200d6b21090340201a20046a450d03200241b8076a20046a200a20046a220d41016a2d00003a000020012009417f6a22093602042001200d41026a3602002002200441016a220d3a00f807200d2104200d41c000470d000b200241f8066a41386a221b200241b8076a41386a221c290300370300200241f8066a41306a221d200241b8076a41306a221e290300370300200241f8066a41286a221f200241b8076a41286a2220290300370300200241f8066a41206a2221200241b8076a41206a2222290300370300200241f8066a41186a221a2013290300370300200241f8066a41106a22232011290300370300200241f8066a41086a2224200f290300370300200220022903b8073703f80641002104200241003a00d807200a200d6a210a03402009450d04200241b8076a20046a200a20046a220d41016a2d00003a000020012009417f6a22093602042001200d41026a3602002002200441016a220d3a00d807200d2104200d4120470d000b200241b8056a41086a2225200f290300370300200241b8056a41106a22262011290300370300200241b8056a41186a22272013290300370300200220022903b8073703b80520094110490d0a200a200d6a220441096a2900002128200441016a29000021292001200941706a3602042001200441116a360200200241b8076a200110f60520022802b8072209450d0a20022902bc0721054100210d200241003a00d8072001280204417f6a210403402004417f460d05200241b8076a200d6a2001280200220c2d00003a0000200120043602042001200c41016a3602002002200d41016a220a3a00d8072004417f6a2104200a210d200a4120470d000b200241f8056a41086a222a200f290300370300200241f8056a41106a222b2011290300370300200241f8056a41186a222c2013290300370300200220022903b8073703f8052004417f460d08200c2d0001210d200120043602042001200c41026a360200200d41014b0d084100212d200d0e020605060b0240200441ff0171450d00200241003a00d8070b2016450d190b201410290c180b0240200441ff0171450d00200241003a00f8070b2016450d17201410290c170b0240200441ff0171450d00200241003a00d8070b2016450d16201410290c160b0240200d41ff0171450d00200241003a00d8070b02402005422088a72204450d002004410474210d2009210403400240200441046a280200450d00200428020010290b200441106a2104200d41706a220d0d000b0b200542ffffffff008350450d040c050b200241106a200110c80120022802100d02200128020420022802142204490d022004417f4c0d1b0240024020040d004100210d4101212d0c010b2004102d222d450d1b20012802042004490d02202d2001280200200410e4071a2001280204220d2004490d082001200d20046b3602042001200128020020046a3602002004210d0b202d450d022004ad422086200dad84212e0b200241d8046a41186a222f202c290300370300200241d8046a41106a2230202b290300370300200241d8046a41086a2231202a290300370300200241b8046a41086a2232200e290300370300200241b8046a41106a22332010290300370300200241b8046a41186a22342012290300370300200220022903f8053703d804200220022903f8043703b80420024198046a41186a2235201729030037030020024198046a41106a2236201829030037030020024198046a41086a22372019290300370300200220022903980537039804200241d8036a41386a2238201b290300370300200241d8036a41306a2239201d290300370300200241d8036a41286a223a201f290300370300200241d8036a41206a223b2021290300370300200241d8036a41186a223c201a290300370300200241d8036a41106a223d2023290300370300200241d8036a41086a223e2024290300370300200220022903f8063703d803200241b8036a41186a223f2027290300370300200241b8036a41106a22402026290300370300200241b8036a41086a22412025290300370300200220022903b8053703b803200241086a200110c8012005422088a721102005a72112202ea721172002280208450d040c110b202d10290b02402005422088a72204450d002004410474210d2009210403400240200441046a280200450d00200428020010290b200441106a2104200d41706a220d0d000b0b200542ffffffff0083500d010b200910290b2016450d0f201410290c0f0b200228020c2242200128020441c1006e2204200420424b1bad42c1007e2205422088a70d152005a72204417f4c0d150240024020040d00410121190c010b200410272219450d150b41002118200241003602a00520022019360298052002200441c1006e220436029c05024002400240024002400240024002402042450d00410021184100214303402001280204220d450d042001280200220c2d000021042001200d417f6a220e3602042001200c41016a3602002004417f6a220441014b0d0402400240024020040e020001000b41002104200241003a00f807200d417e6a210d02400340200e2004460d01200241b8076a20046a200c20046a220a41016a2d00003a00002001200d3602042001200a41026a3602002002200441016a220a3a00f807200d417f6a210d200a2104200a41c000470d000b201b201c2903002205370300201d201e2903002244370300201f20202903002245370300202120222903002246370300201a20132903002247370300200241b8066a41086a200f290300370300200241b8066a41106a2011290300370300200241b8066a41186a2047370300200241b8066a41206a2046370300200241b8066a41286a2045370300200241b8066a41306a2044370300200241b8066a41386a2005370300200220022903b8073703b806410021480c020b200441ff01710d050c060b41002104200241003a00f807200d417e6a210d0340200e2004460d04200241b8076a20046a200c20046a220a41016a2d00003a00002001200d3602042001200a41026a3602002002200441016a220a3a00f807200d417f6a210d200a2104200a41c000470d000b201b201c2903002205370300201d201e2903002244370300201f20202903002245370300202120222903002246370300201a20132903002247370300200241b8066a41086a200f290300370300200241b8066a41106a2011290300370300200241b8066a41186a2047370300200241b8066a41206a2046370300200241b8066a41286a2045370300200241b8066a41306a2044370300200241b8066a41386a2005370300200220022903b8073703b806410121480b204341016a2143200241f8056a41386a200241b8066a41386a2903002205370300200241f8056a41306a200241b8066a41306a2903002244370300200241f8056a41286a200241b8066a41286a2903002245370300200241f8056a41206a200241b8066a41206a2903002246370300202c200241b8066a41186a2903002247370300202b200241b8066a41106a2903002249370300202a200241b8066a41086a290300224a3703002025204a3703002026204937030020272047370300200241b8056a41206a220d2046370300200241b8056a41286a220a2045370300200241b8056a41306a220c2044370300200241b8056a41386a220e2005370300200220022903b80622053703f805200220053703b80502402018200228029c05470d0020024198056a2018410110a201200228029805211920022802a00521180b2019201841c1006c6a220420483a0000200420022903b805370001200441096a2025290300370000200441116a2026290300370000200441196a2027290300370000200441216a200d290300370000200441296a200a290300370000200441316a200c290300370000200441396a200e2903003700002002201841016a22183602a00520432042470d000b200228029c0521040b2019450d132002200110c80120022802000d062002280204220a41076a220c410376220d0d034100211b410121214180a6cc00211d4101211f0c040b200441ff0171450d010b200241003a00f8070b200228029c052204450d10200441c1006c450d10201910290c100b200d102d221d450d172001280204200d490d01201d2001280200200d10e40721212001280204220e200d490d0d2001200e200d6b36020420012001280200200d6a360200200d1027221f450d17200d211b202121210b02400240201b200d490d00201b210e0c010b201b410174220e200d200e200d4b1b220e4100480d050240201b0d00200e1027221f0d010c0f0b201b200e460d00201f201b200e102b221f450d0e0b201f201d200d10e407211d2002200d3602f804200c4188808080024f0d052002200c417871224236029805200c41ffffffff014b0d0602400240200d0d004100211f0c010b4101211f200d4101460d00204241786a41037641016a211f0b2002201f3602b8052002201d201f6a220d3602f805200d201d490d07200c41f8ffffff0171220d200a490d0b2002200a3602f805200a41ffffffff014b0d09200e41ffffffff0171200e470d082002200e410374220c3602b806200c200a490d0a201d4101200d1b210d0240201b450d00202110290b200d450d01202e422088a7214b200a410374214c201a202f2903003703002023203029030037030020242031290300370300200241b8066a41086a2032290300370300200241b8066a41106a2033290300370300200241b8066a41186a2034290300370300202a2037290300370300202b2036290300370300202c2035290300370300200220022903d8043703f806200220022903b8043703b80620022002290398043703f805201c2038290300370300201e20392903003703002020203a2903003703002022203b2903003703002013203c2903003703002011203d290300370300200f203e2903003703002027203f2903003703002026204029030037030020252041290300370300200220022903d8033703b807200220022903b8033703b805200d214d200e214e2018214f2004215020192151201521522016215320142154200b215520172156202d215720102158201221592029215a2028215b0c110b201d10290b02402004450d00200441c1006c450d00201910290b02402016450d00201410290b02402010450d002010410474210d2009210403400240200441046a280200450d00200428020010290b200441106a2104200d41706a220d0d000b0b0240201241ffffffff0071450d00200910290b202d450d0e2017450d0e0c0d0b2009200441ccafc000104c000b2004200d41ccafc000104c000b1032000b20024184076a4101360200200241cc076a4102360200200242023702bc0720024188b9c8003602b80720024184b9c80036028007200241013602fc062002200241f8066a3602c8072002200241f8046a3602f806200241b8076a4180a6cc001040000b20024184076a4101360200200241cc076a4102360200200242023702bc07200241f8cdc2003602b807200241c0b9c80036028007200241013602fc062002200241f8066a3602c807200220024198056a3602f806200241b8076a4180a6cc001040000b200241b8076a41146a4113360200200241b8076a410c6a4114360200200241f8066a41146a4103360200200241f8066a410c6a4103360200200241a0cec20036028007200241033602fc0620024188cec2003602f806200241133602bc072002201d3602b8062002200241b8076a360288072002200241f8056a3602c8072002200241b8056a3602c0072002200241b8066a3602b807200241f8066a4180a6cc001040000b4198b9c800411841b0b9c8001057000b20024184076a4101360200200241cc076a4102360200200242023702bc07200241c4b9c8003602b807200241c0b9c80036028007200241013602fc062002200241f8066a3602c8072002200241f8056a3602f806200241b8076a4180a6cc001040000b20024184076a4101360200200241cc076a4102360200200242023702bc07200241d4b9c8003602b807200241013602fc062002200241f8066a3602c8072002200241b8066a360280072002200241f8056a3602f806200241b8076a4180a6cc001040000b41e4b9c800412641b8a1cc001033000b200d200e41ccafc000104c000b1030000b02402016450d00201410290b02402010450d002010410474210d2009210403400240200441046a280200450d00200428020010290b200441106a2104200d41706a220d0d000b0b0240201241ffffffff0071450d00200910290b202d450d012017450d010b202d10290b410021090b20024198036a41186a2204200241f8066a41186a29030037030020024198036a41106a220d200241f8066a41106a29030037030020024198036a41086a220a200241f8066a41086a290300370300200241f8026a41086a220c200241b8066a41086a290300370300200241f8026a41106a220b200241b8066a41106a290300370300200241f8026a41186a220f200241b8066a41186a290300370300200241d8026a41086a2211200241f8056a41086a290300370300200241d8026a41106a2213200241f8056a41106a290300370300200241d8026a41186a220e200241f8056a41186a290300370300200220022903f80637039803200220022903b8063703f802200220022903f8053703d80220024198026a41386a2210200241b8076a41386a29030037030020024198026a41306a2212200241b8076a41306a29030037030020024198026a41286a221a200241b8076a41286a29030037030020024198026a41206a2214200241b8076a41206a29030037030020024198026a41186a2216200241b8076a41186a29030037030020024198026a41106a2215200241b8076a41106a29030037030020024198026a41086a2217200241b8076a41086a290300370300200241f8016a41086a2218200241b8056a41086a290300370300200241f8016a41106a2219200241b8056a41106a290300370300200241f8016a41186a221b200241b8056a41186a290300370300200220022903b80737039802200220022903b8053703f8012009450d02200841016a2108200241d8016a41186a221d2004290300370300200241d8016a41106a221f200d290300370300200241d8016a41086a220d200a290300370300200241b8016a41086a220a200c290300370300200241b8016a41106a220c200b290300370300200241b8016a41186a220b200f29030037030020024198016a41086a220f201129030037030020024198016a41106a2211201329030037030020024198016a41186a2213200e29030037030020022002290398033703d801200220022903f8023703b801200220022903d80237039801200241d8006a41386a220e2010290300370300200241d8006a41306a22102012290300370300200241d8006a41286a2212201a290300370300200241d8006a41206a221a2014290300370300200241d8006a41186a22142016290300370300200241d8006a41106a22162015290300370300200241d8006a41086a22152017290300370300200241386a41086a22172018290300370300200241386a41106a22182019290300370300200241386a41186a2219201b2903003703002002200229039802370358200220022903f80137033802402007200228022c470d00200241286a2007410110a50120022802282106200228023021070b200620074190026c6a2204205b3703082004205a37030020042009360210200441246a204b360200200441206a20563602002004411c6a2057360200200441186a2058360200200441146a2059360200200d2903002105201f2903002128201d290300212920022903d801212e200441d4006a2052360200200441d0006a2053360200200441cc006a2054360200200441c8006a2055360200200441c0006a2029370200200441386a2028370200200441306a2005370200200441286a202e370200200441f0006a200b290300370200200441e8006a200c290300370200200441e0006a200a290300370200200441d8006a20022903b80137020020044190016a201329030037020020044188016a201129030037020020044180016a200f290300370200200441f8006a200229039801370200200441b0016a2014290300370200200441a8016a2016290300370200200441a0016a201529030037020020044198016a2002290358370200200441c8016a2010290300370200200441c0016a2012290300370200200441b8016a201a290300370200200441d0016a200e290300370200200441f0016a2019290300370200200441e8016a2018290300370200200441e0016a2017290300370200200441d8016a20022903383702002004418c026a204e36020020044188026a204c36020020044184026a204d36020020044180026a204f360200200441fc016a2050360200200441f8016a20513602002002200741016a220736023020082003470d000b0b20002002290328370200200041086a200241286a41086a2802003602000c010b2000410036020002402007450d00200620074190026c6a21012006210d03400240200d41d0006a280200450d00200d28024c10290b0240200d41186a2802002209450d00200d28021021042009410474210903400240200441046a280200450d00200428020010290b200441106a2104200941706a22090d000b0b0240200d41146a28020041ffffffff0071450d00200d28021010290b0240200d28021c2204450d00200d41206a280200450d00200410290b0240200d41fc016a2802002204450d00200441c1006c450d00200d2802f80110290b200d4190026a2104200d4188026a4100360200200d280284022109200d4101360284020240200d418c026a280200450d00200910290b2004210d20042001470d000b0b200228022c2204450d0020044190026c450d00200610290b20024180086a24000f0b1039000b1038000bd92109087f017e0c7f017e017f027e017f037e017f230041e0026b22022400024002402001450d00200220003602180c010b20024180a6cc003602180b2002200136021c200241f8006a200241186a10f80202400240200228027c2203450d0020024184016a28020021042002280280012105200241f8006a200241186a10f902200228027822060d0102402004450d00200441246c21002003210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b2005450d00200541246c450d00200310290b2002418c026a41043602002002418c016a41023602002002420237027c200241a0d1c2003602782002410436028402200241b4d2c200360280022002410036026420024180a6cc00360260200220024180026a360288012002200241e0006a36028802200241f8006a41b0d1c2001040000b200241f8006a41086a22012802002108200228027c2109200241106a200241186a10c8010240024020022802100d00200228021421002002200241186a360250200241003a0020200241003602880220024100360280022002200036027c200241003602782002200241206a360284012002200241d0006a36028001200241f8006a20024180026a108d03200241e0006a41086a20022802880222003602002002200229038002220a37036020022d00202107200120003602002002200a3703782007450d01200241f8006a108e030b2002418c026a41043602002002418c016a41023602002002420237027c200241a0d1c2003602782002410436028402200241b4d2c200360280022002410036026420024180a6cc00360260200220024180026a360288012002200241e0006a36028802200241f8006a41b0d1c2001040000b200241306a41086a200241f8006a41086a220b280200220136020020022002290378220a370330200241c0006a41086a20013602002002200a370340200241013b015c2002410036025820024100360250200241d0006a41086a210c02400240024002400240024002402008450d002006200841c0036c6a210d200241e0006a410472210e20024180026a410272210f200241f8006a41106a2110200621110340201141e8006a2903004202520d01024020112802980141034722120d00024002400240024020022802402213450d0020112903a001210a200228024421140340201341086a210020132f010622154103742101410021070240024003402001450d0141cf8fcc002000410810e7072216450d02200141786a2101200741016a2107200041086a21002016417f4a0d000b2007417f6a21150b2014450d022014417f6a2114201320154102746a41e4016a28020021130c010b0b0240201341e0006a2007410c6c6a220128020841074b0d00201742808080807083422984210a41d78fcc0021140c020b200a42f02e8020012802002900002217510d034131211841a0e8c20021140c020b201742808080807083421c84210a418090cc0021140b200aa721180b0240024020022d005d450d0041b8d0c2002101413121000c010b200241d0006a108e032002410036025820024100360250200242e2c289abb68edbb7f40037036020024180026a410272410041da0010e6071a200241f8006a410041840110e6071a41e40110272216450d0a20164100360200201641046a20024180026a41dc0010e4071a201641e0006a200241f8006a41840110e4071a200241003602542002201636025020162f010622114103742113417f210041002101024002400340024020132001470d00201121000c020b200241e0006a201620016a41086a410810e7072207450d02200141086a2101200041016a2100200741004e0d000b0b200242e2c289abb68edbb7f40037028c012002200c3602880120022000360284012002201636027c200241003602782002200241d0006a3602800120024180026a20142018108a01200241f8006a20024180026a10920320024180023b015c200241206a41086a200241d0006a41086a290300370300200220022903503703200c070b41e9d0c2002101412d21000b2002200036027c2002200136027841f3cfc2004122200241f8006a4198d0c20041a8d0c200103a000b20120d0020112903a001210a200241f8006a200241c0006a10890102400240024020022802784101460d002002290380012119200241f8006a41186a2200420037030020104200370300200b42003703002002420037037841ccbec500ad428080808090018410012201290000211a200b200141086a2900003703002002201a3703782001102941aafac400ad4280808080308410012201290000211a200241e0006a41086a2207200141086a2900003703002002201a3703602001102920102002290360370000201041086a200729030037000020024180026a41086a200b29030037030020024180026a41106a201029030037030020024180026a41186a20002903003703002002200229037837038002200220024180026a10b501200a201942b0ea017c560d01200a200229030842b8177c42b81720022802001b22195a0d032019422088211a4200210a0c020b2002290380012219422088211a200228027c221bad422086420184210a201c4280808080708320023502880184221c211d0c010b201d428080808070832018ad84211d41f89ac500ad21194225211a4100211b4201210a0b2002201d3703702002201a422086201942ffffffff0f8384221e3703682002201bad422086200a42ffffffff0f838437036002400240024020022d005d450d0041b8d0c2002101413121000c010b024002400240200aa722154101470d00200241d0006a108e032002410036025820024100360250200242f4d2b59bc7ae98b8303703200c010b20022802502113200242f4d2b59bc7ae98b8303703202013450d00200228025421140c010b200f410041da0010e6071a200241f8006a410041840110e6071a41e40110272213450d0b4100211420134100360200201341046a20024180026a41dc0010e4071a201341e0006a200241f8006a41840110e4071a20024100360254200220133602500b2019a7211f201aa7211202400340201341086a210020132f01062218410374210141002107024003402001450d01200241206a2000410810e7072216450d03200141786a2101200741016a2107200041086a21002016417f4a0d000b2007417f6a21180b02402014450d002014417f6a2114201320184102746a41e4016a28020021130c010b0b200242f4d2b59bc7ae98b83037028c012002200c3602880120022018360284012002201336027c200241003602782002200241d0006a360280014101102721010240201541014622160d002001450d0c200141003a0000200141014109102b2201450d0c2001201e37000141092107410921000c030b2001450d0b200141013a000020024180026a200e10f60220022802800221140240024020022802880222130d0041012107201341016a21000c010b201341016a22002013490d0920004102200041024b1b22074100480d09200141012007102b2201450d0c0b200141016a2014201310e4071a200228028402450d02201410290c020b41e9d0c2002101412d21000b2002200036027c2002200136027841f3cfc2004122200241f8006a4198d0c20041a8d0c200103a000b200220003602880220022007360284022002200136028002200241f8006a20024180026a1092032002200a3c005d200241003a005c20160d032015450d00201b450d002012450d00201f10290b201141c0036a2211200d470d000b0b200241206a41086a200c290300370300200220022903503703200c010b200241206a41086a200241d0006a41086a29030037030020022002290350370320201b450d002012450d00201f10290b200241c0006a108e0302402004450d00200441246c21002003210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b02402005450d00200541246c450d00200310290b02402008450d00200841c0036c210020064198016a21010340200110c201200141c0036a2101200041c07c6a22000d000b0b02402009450d00200941c0036c450d00200610290b200241003602682002420137036020022d002c2100410110272201450d032002410136026420022001360260200120003a00002002410136026820022d002d2100200141014102102b2201450d032002410236026420022001360260200120003a00012002410236026820022802282200200241e0006a107102400240024020022802202201450d00024020022802242216450d002016210720012113034020132802e40121132007417f6a22070d000b200121070340200720072f01064102746a41e4016a28020021072016417f6a22160d000b200241f8006a2116201321010c020b200241f8006a2116200121070c010b410021012002410036027c200241f8006a21160c010b2002200736027c20024184016a20072f01063602002002410036028001200241003602780b20024180026a41086a201641086a290200220a3703002002201629020022173703800220024190016a200a37030020024200370380012002200136027c20024100360278200220173703880120022000360298012000450d01034020022000417f6a36029801200241f8006a410020011b2213280200210720132802082114024002400240201328020c2216201328020422002f01064f0d00200021010c010b0240034020002802002201450d01200741016a210720002f0104211620012100201620012f0106490d020c000b0b2014ad210a410021010c010b2016ad4220862014ad84210a0b200a422088a7221441016a2116200aa721180240024020070d00200121000c010b200120164102746a41e4016a2802002100410021162007417f6a2207450d00034020002802e40121002007417f6a22070d000b0b2013201636020c2013201836020820132000360204201341003602000240024020022802642216200228026822006b4108490d00200228026021070c010b200041086a22072000490d02201641017422132007201320074b1b22134100480d020240024020160d00024020130d00410121070c020b2013102722070d010c070b2002280260210720162013460d00200720162013102b2207450d060b20022013360264200220073602600b200720006a200120144103746a41086a2900003700002002200041086a360268200141e0006a2014410c6c6a2201280200211320012802082201200241e0006a10710240024020022802642216200228026822006b2001490d00200228026021070c010b200020016a22072000490d02201641017422142007201420074b1b22144100480d020240024020160d00024020140d00410121070c020b201410272207450d070c010b2002280260210720162014460d00200720162014102b2207450d060b20022014360264200220073602600b200720006a2013200110e4071a2002200020016a22013602682002280298012200450d03200228027c21010c000b0b1032000b20022802682101200228026021070b200241206a108e03200241e0026a24002001ad4220862007ad840f0b1030000bc91305027f017e067f037e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2105200028020821062000280200210320002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024002400240024020002f01062201410b490d00200241d0026a410272410041da0010e6071a200241386a410041840110e6071a41e40110272208450d0420084100360200200841046a200241d0026a41dc0010e4071a200841e0006a200241386a41840110e4072107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413f6a2d0000210a200041386a350000210b2000413c6a330000210c2000413e6a310000210d200841086a200041c0006a20002f010641796a220141037410e407210e2007200041b4016a2001410c6c10e4072107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200b200c200d4210868442208684210b0240024020054107490d002005410374200e6a41506a200e200541796a22094103746a220e200141ffff037120096b41037410e5071a200e20043700002005410c6c20076a220541b87f6a200541ac7f6a2205200841066a22012f010020096b410c6c10e5071a200541086a200241f0016a41086a280200360200200520022903f0013702000c010b200041086a20054103746a220741086a2007200041066a22012f010020056b41037410e5071a20072004370000200041e0006a2005410c6c6a2207410c6a200720012f010020056b410c6c10e5071a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002205360200200241086a221120053602002002200a3a0017200220022903d00222043703282002200b3e02102002200b4230883c00162002200b4220883d01142002200437030020022903102104200028020022090d01410021120c020b200020054103746a220341106a200341086a2203200120056b41037410e5071a2003200437000020002005410c6c6a220341ec006a200341e0006a220120002f010620056b410c6c10e5071a200341e8006a2007280200360200200120022903f001370200200020002f010641016a3b01060c020b20002f01042113200241d0026a41027221144100210002400340200220093602242002200341016a2212360220200f20112802003602002002200229030037032820032000470d01201341ffff0371210702400240024020092f01062203410b490d002014410041da0010e6071a200241f0016a200241d0026a41dc0010e4071a200241386a410041b40110e6071a41940210272201450d0720014100360200200141046a200241f0016a41dc0010e4071a200141e0006a200241386a41b40110e40721002009290038210b200241386a41086a220e200941b0016a280200360200200220092902a801370338200141086a200941c0006a20092f0106220541796a220341037410e40721152000200941b4016a2003410c6c10e4072116200141e4016a20094180026a2005417a6a220a41027410e4072117200941063b0106200120033b01060240200a450d00410021032017210003402000280200220520033b010420052001360200200041046a2100200a200341016a2203470d000b0b2010200e280200220336020020022002290338220c3703d002200e20033602002002200c370338201341ffff037122004107490d0120152007417a6a22004103746a2015200741796a22034103746a220520012f010620036b41037410e5071a200520043700002007410c6c20166a220541b87f6a200541ac7f6a220520012f0106220a20036b410c6c10e5071a200541086a200f280200360200200520022903283702002001200a41016a22053b01062007410274221320176a416c6a201720004102746a220a200541ffff0371220720006b41027410e5071a200a200836020020072000490d02200120136a41cc016a2100034020002802002205200341016a22033b010420052001360200200041046a210020032007490d000c030b0b200941086a2205200741016a22004103746a200520074103746a2205200320076b220141037410e5071a2005200437000020092007410c6c6a220541ec006a200541e0006a220a2001410c6c10e5071a200541e8006a200241286a41086a280200360200200a20022903283702002009200341016a22033b01062007410274200941e4016a22056a41086a200520004102746a2205200341ffff0371220120006b41027410e5071a20052008360200201341ffff037120014f0d0520092000417f6a22034102746a41e8016a2100034020002802002205200341016a22033b010420052009360200200041046a210020032001490d000c060b0b200941086a2203200741016a220a4103746a200320074103746a220320092f0106220520076b221341037410e5071a20032004370000200941e0006a2007410c6c6a2203410c6a20032013410c6c10e5071a200341086a200f280200360200200320022903283702002009200541016a22033b010620074102742217200941e4016a22056a41086a2005200a4102746a2213200341ffff03712205200a6b41027410e5071a20132008360200200020054f0d00200920176a41e8016a2103034020032802002200200741016a22073b010420002009360200200341046a210320052007470d000b0b200241106a41086a200e280200220336020020112003360200200220022903382204370310200220043703000240200928020022030d0020012108200b21040c030b20092f0104211320032109200b21042001210820122100201221030c000b0b41cc9ec800413541b8a1cc001033000b200241d0026a410272410041da0010e6071a200241f0016a200241d0026a41dc0010e4071a200241386a410041b40110e6071a41940210272203450d0120034100360200200341046a200241f0016a41dc0010e4071a200341e0006a200241386a41b40110e40721052003200628020022003602e4012006200336020020062006280204220141016a360204200041003b010420002003360200200241386a41086a200241086a2802003602002002200229030037033820012012470d0220032f01062200410a4b0d0320052000410c6c6a22052002290338370200200320004103746a41086a2004370000200541086a200241386a41086a2802003602002003200041016a22004102746a41e4016a2008360200200320003b0106200820003b0104200820033602000b200241b0036a24000f0b1030000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000bbf0101067f230041206b2202240020024180a6cc00410010940302400240412010272203450d0020032002290300370000200341186a2204200241186a290300370000200341106a2205200241106a290300370000200341086a2206200241086a290300370000412010272207450d0120072003290000370000200741186a2004290000370000200741106a2005290000370000200741086a200629000037000020031029200241206a24002007ad42808080808004840f0b1039000b1030000be51b06037f017e077f017e277f027e230041a00d6b220324002003200236020c20032001360208200341206a41186a22044200370300200341206a41106a22024200370300200341206a41086a220142003703002003420037032041b3e6ca00ad4280808080e000841001220529000021062001200541086a290000370300200320063703202005102941c9e6ca00ad4280808080e00084100122072900002106200341106a41086a2205200741086a2900003703002003200637031020071029200220032903102206370300200341800d6a41086a22082001290300370300200341800d6a41106a22092006370300200341800d6a41186a220a2005290300370300200320032903203703800d2003200341800d6a412010fc012003280204210b2003280200210c200442003703002002420037030020014200370300200342003703204188a2c800ad42808080808003841001220729000021062001200741086a290000370300200320063703202007102941a0a2c800ad4280808080e001841001220729000021062005200741086a29000037030020032006370310200710292002200329031022063703002008200129030037030020092006370300200a2005290300370300200320032903203703800d200341206a200341800d6a412010ce0120032802202201410120011b210d0240024002402003290224420020011b220e422088a722020d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341206a410041e00c10e6071a200b417f6a41d100704130200c1b2101200d41206a210f200d20024105746a21104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f4100210b200d21024100213041d1002131024003402030210720022105024002402001450d00200141016a2101200521020340024020102002470d00200d21020b2002220541206a21022001417f6a22010d000b20050d010c030b024020052010460d00200541206a21020c010b200f2102200d21050b0240024002400240200328020c220141056a2204417f4c0d00200328020821320240024020040d00410021044101210c0c010b20041027220c450d020b200341003602182003200c36021020032004360214024020040d0041011027220c450d08200341013602142003200c3602100b200c20073a0000200341013602182001200341106a10710240024020032802142233200328021822306b2001490d00200328021021042033210c0c010b203020016a22042030490d032033410174220c2004200c20044b1b220c4100480d030240024020330d000240200c0d00410121040c020b200c102722040d010c0a0b200328021021042033200c460d0020042033200c102b2204450d090b2003200c360214200320043602100b200420306a2032200110e4071a2003203020016a2230360218412010272201450d0120012005290000370000200141186a2232200541186a290000370000200141106a2234200541106a290000370000200141086a2235200541086a29000037000002400240200c20306b411f4d0d00200c21330c010b203041206a22052030490d03200c41017422332005203320054b1b22334100480d0302400240200c0d00024020330d00410121040c020b203310272204450d0a0c010b200c2033460d002004200c2033102b2204450d090b20032033360214200320043602100b200420306a22052001290000370000200541186a2032290000370000200541106a2034290000370000200541086a20352900003700002003203041206a2205360218200110292005ad4220862004ad84101022012900002106200141086a2900002136200141106a2900002137200a200141186a2900003703002009203737030020082036370300200320063703800d2001102902402033450d00200410290b2031417f6a2131200741016a2130200341206a20074103704105746a220120032903800d370000200141186a200a290300370000200141106a2009290300370000200141086a20082903003700004100210503402007200741036e2204417d6c6a4102470d04200341206a20056a220141df006a2d0000220b2001411f6a2d0000220c71200b200c722001413f6a2d000071722128200141de006a2d0000220b2001411e6a2d0000220c71200b200c722001413e6a2d000071722127200141dd006a2d0000220b2001411d6a2d0000220c71200b200c722001413d6a2d000071722126200141dc006a2d0000220b2001411c6a2d0000220c71200b200c722001413c6a2d000071722125200141db006a2d0000220b2001411b6a2d0000220c71200b200c722001413b6a2d000071722124200141da006a2d0000220b2001411a6a2d0000220c71200b200c722001413a6a2d000071722123200141d9006a2d0000220b200141196a2d0000220c71200b200c72200141396a2d000071722122200141d8006a2d0000220b200141186a2d0000220c71200b200c72200141386a2d000071722121200141d7006a2d0000220b200141176a2d0000220c71200b200c72200141376a2d000071722120200141d6006a2d0000220b200141166a2d0000220c71200b200c72200141366a2d00007172211f200141d5006a2d0000220b200141156a2d0000220c71200b200c72200141356a2d00007172211e200141d4006a2d0000220b200141146a2d0000220c71200b200c72200141346a2d00007172211d200141d3006a2d0000220b200141136a2d0000220c71200b200c72200141336a2d00007172211c200141d2006a2d0000220b200141126a2d0000220c71200b200c72200141326a2d00007172211b200141d1006a2d0000220b200141116a2d0000220c71200b200c72200141316a2d00007172211a200141d0006a2d0000220b200141106a2d0000220c71200b200c72200141306a2d000071722119200141cf006a2d0000220b2001410f6a2d0000220c71200b200c722001412f6a2d000071722118200141ce006a2d0000220b2001410e6a2d0000220c71200b200c722001412e6a2d000071722117200141cd006a2d0000220b2001410d6a2d0000220c71200b200c722001412d6a2d000071722116200141cc006a2d0000220b2001410c6a2d0000220c71200b200c722001412c6a2d000071722115200141cb006a2d0000220b2001410b6a2d0000220c71200b200c722001412b6a2d000071722114200141ca006a2d0000220b2001410a6a2d0000220c71200b200c722001412a6a2d000071722113200141c9006a2d0000220b200141096a2d0000220c71200b200c72200141296a2d000071722112200141c8006a2d0000220b200141086a2d0000220c71200b200c72200141286a2d000071722111200141c7006a2d0000220b200141076a2d0000220c71200b200c72200141276a2d000071722129200141c6006a2d0000220b200141066a2d0000220c71200b200c72200141266a2d00007172212a200141c5006a2d0000220b200141056a2d0000220c71200b200c72200141256a2d00007172212b200141c4006a2d0000220b200141046a2d0000220c71200b200c72200141246a2d00007172212c200141c3006a2d0000220b200141036a2d0000220c71200b200c72200141236a2d00007172212d200141c2006a2d0000220b200141026a2d0000220c71200b200c72200141226a2d00007172212e200141c1006a2d0000220b200141016a2d0000220c71200b200c72200141216a2d00007172212f200141c0006a2d0000220b20012d0000220c71200b200c72200141206a2d00007172210b200541800c460d04200341206a20052004410574200741096e41e0006c6b6a6a220141ff006a20283a0000200141fe006a20273a0000200141fd006a20263a0000200141fc006a20253a0000200141fb006a20243a0000200141fa006a20233a0000200141f9006a20223a0000200141f8006a20213a0000200141f7006a20203a0000200141f6006a201f3a0000200141f5006a201e3a0000200141f4006a201d3a0000200141f3006a201c3a0000200141f2006a201b3a0000200141f1006a201a3a0000200141f0006a20193a0000200141ef006a20183a0000200141ee006a20173a0000200141ed006a20163a0000200141ec006a20153a0000200141eb006a20143a0000200141ea006a20133a0000200141e9006a20123a0000200141e8006a20113a0000200141e7006a20293a0000200141e6006a202a3a0000200141e5006a202b3a0000200141e4006a202c3a0000200141e3006a202d3a0000200141e2006a202e3a0000200141e1006a202f3a0000200141e0006a200b3a000020042107200541e0006a220541e00c470d000c040b0b1038000b1039000b1032000b4100210120310d000b0b200020283a001f200020273a001e200020263a001d200020253a001c200020243a001b200020233a001a200020223a0019200020213a0018200020203a00172000201f3a00162000201e3a00152000201d3a00142000201c3a00132000201b3a00122000201a3a0011200020193a0010200020183a000f200020173a000e200020163a000d200020153a000c200020143a000b200020133a000a200020123a0009200020113a0008200020293a00072000202a3a00062000202b3a00052000202c3a00042000202d3a00032000202e3a00022000202f3a00012000200b3a00000b0240200e42ffffff3f83500d00200d10290b200341a00d6a24000f0b1030000bce6e03097f087e067f23004180146b220224000240024020010d002002200136023420024180a6cc003602300c010b2002200136023420022001417f6a360234200220003602302002200041016a36023020002d0000220341034f0d00200241f00a6a200241306a1087030240024002400240024002400240024002400240024020022903d80b4203510d00200241f0006a200241f00a6a41c00310e4071a200241b0046a200241f0006a41c00310e4071a2002200241b0046a3602f007200241f00a6a200241f0076a10bd0220022802f80a2100024020022802f40a450d0020022802f00a10290b200241f00a6a200241b0046a41c00310e4071a200241f0076a200241f00a6a10960341012101024020022d00f0074101460d00200241f00a6a200241f8076a41f80210e4071a200241b00e6a200241c00b6a220410c30102400240024020022903900b4202520d00200241d00e6a41206a22014200370300200241d00e6a41186a22054280808080c000370300200241013a00f80e200242043703e00e2002427f3703d80e200242003703d00e02400240024020022802c00b0e1c02020202020b02020202020202020b0b0b0b0b0b010b0b0b02000202020b200241c80b6a2d00004103470d010c0a0b200241c40b6a2802004101470d090b200241f0076a41206a22064200370300200241f0076a41186a22074280808080c000370300200220022800c813360298132002200241cb136a28000036009b132002419c086a200228009b13360000200241013a00980820024204370380082002427f3703f807200242003703f007200220022802981336009908200241b80f6a200241d00e6a200241f0076a109703200241d00e6a41286a2208200241b80f6a41286a2903003703002001200241b80f6a41206a2903003703002005200241b80f6a41186a290300370300200241d00e6a41106a2209200241b80f6a41106a290300370300200241d00e6a41086a220a200241b80f6a41086a290300370300200220022903b80f3703d00e2006420037030020074280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241e80f6a200241d00e6a200241f0076a1097032008200241e80f6a41286a2903003703002001200241e80f6a41206a2903003703002005200241e80f6a41186a2903003703002009200241e80f6a41106a290300370300200a200241e80f6a41086a290300370300200220022903e80f3703d00e2006420037030020074280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f00720024198106a200241d00e6a200241f0076a109703200820024198106a41286a290300370300200120024198106a41206a290300370300200520024198106a41186a290300370300200920024198106a41106a290300370300200a20024198106a41086a29030037030020022002290398103703d00e2006420037030020074280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241c8106a200241d00e6a200241f0076a1097032008200241c8106a41286a2903003703002001200241c8106a41206a2903003703002005200241c8106a41186a2903003703002009200241c8106a41106a290300370300200a200241c8106a41086a290300370300200220022903c8103703d00e2006420037030020074280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241f8106a200241d00e6a200241f0076a1097032008200241f8106a41286a2903003703002001200241f8106a41206a2903003703002005200241f8106a41186a2903003703002009200241f8106a41106a290300370300200a200241f8106a41086a290300370300200220022903f8103703d00e2006420037030020074280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241a8116a200241d00e6a200241f0076a1097032008200241a8116a41286a2903003703002001200241a8116a41206a2903003703002005200241a8116a41186a2903003703002009200241a8116a41106a290300370300200a200241a8116a41086a290300370300200220022903a8113703d00e20022903b00e210b200241c8136a20022d00b80e220120001098030240024020022903c813220ca741ff01714101460d00200141ff01710d0341800c2105427f200b42c0b2cd3b7c220c200c200b541b428090a7f0ea25560d01200241c8136a21050c040b200c420888a721050b20022802e00e21030240200241e80e6a2802002200450d002000410c6c21012003210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241e40e6a2802002200450d002000410c6c450d00200310290b20022802ec0e21030240200241f40e6a2802002200450d002000410c6c21012003210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241f00e6a2802002200450d092000410c6c450d09200310290c090b200241d00e6a41206a22014200370300200241d00e6a41186a22054280808080c000370300200241013a00f80e200242043703e00e427f210b2002427f3703d80e200242003703d00e02400240024020022802c00b0e1c02020202020902020202020202020909090909090109090902000202020b200241c80b6a2d00004103470d010c080b200241c40b6a2802004101470d070b200241f0076a41206a22064200370300200241f0076a41186a22034280808080c000370300200220022800c813360298132002200241cb136a28000036009b132002419c086a200228009b13360000200241013a00980820024204370380082002427f3703f807200242003703f007200220022802981336009908200241880f6a200241d00e6a200241f0076a109703200241d00e6a41286a2207200241880f6a41286a2903003703002001200241880f6a41206a2903003703002005200241880f6a41186a290300370300200241d00e6a41106a2208200241880f6a41106a290300370300200241d00e6a41086a2209200241880f6a41086a290300370300200220022903880f3703d00e2006420037030020034280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241b80f6a200241d00e6a200241f0076a1097032007200241b80f6a41286a2903003703002001200241b80f6a41206a2903003703002005200241b80f6a41186a2903003703002008200241b80f6a41106a2903003703002009200241b80f6a41086a290300370300200220022903b80f3703d00e2006420037030020034280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241e80f6a200241d00e6a200241f0076a1097032007200241e80f6a41286a2903003703002001200241e80f6a41206a2903003703002005200241e80f6a41186a2903003703002008200241e80f6a41106a2903003703002009200241e80f6a41086a290300370300200220022903e80f3703d00e2006420037030020034280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f00720024198106a200241d00e6a200241f0076a109703200720024198106a41286a290300370300200120024198106a41206a290300370300200520024198106a41186a290300370300200820024198106a41106a290300370300200920024198106a41086a29030037030020022002290398103703d00e20034200370300200241f0076a41106a22034200370300200241f0076a41086a22014200370300200242003703f00741b3e6ca00ad4280808080e0008410012205290000210c2001200541086a2900003703002002200c3703f0072005102941c9e6ca00ad4280808080e0008410012205290000210c20024198136a41086a2206200541086a2900003703002002200c37039813200510292003200229039813220c370300200241c8136a41086a22052001290300370300200241c8136a41106a2201200c370300200241c8136a41186a2006290300370300200220022903f0073703c813200241286a200241c8136a412010fc01200228022c410020022802281bad210c024020022903900b4201520d0020022903980b220b4200510d05200c200241a00b6a290300220d200d200c541b220e200b7c200e200d7d200b827d210b0b200241f0076a41206a4200370300200241f0076a41186a4280808080c000370300200241013a0098082002420437038008200242003703f00720024200200b200c7d220c200c200b561b3703f807200241c8106a200241d00e6a200241f0076a109703200241c8136a41286a200241c8106a41286a290300370300200241c8136a41206a200241c8106a41206a290300370300200241c8136a41186a200241c8106a41186a2903003703002001200241c8106a41106a2903003703002005200241c8106a41086a290300370300200220022903c8103703c81320024198136a200241f00a6a10a802200241f0076a200228029813220120022802a01310a902200241b8086a280200410020022903f0074201511b21050240200228029c13450d00200110290b024002400240024002400240024002400240024020022802b80b22032005490d00410c10272206450d17410410272201450d15200141044120102b2201450d17200120022903f00a370000200141186a200241f00a6a41186a290300370000200141106a200241f00a6a41106a290300370000200141086a200241f00a6a41086a2903003700002001412041c000102b2201450d1720012003360020200642c0808080c004370204200620013602000240024020052003490d0041002101410421050c010b410c10272205450d18410410272201450d16200141044120102b2201450d18200120022903f00a370000200141186a200241f00a6a41186a290300370000200141106a200241f00a6a41106a290300370000200141086a200241f00a6a41086a2903003700002001412041c000102b2201450d1820012003417f6a360020200542c0808080c00437020420052001360200410121010b200241d00e6a41206a2207428180808010370300200241d00e6a41186a22032001360200200241e40e6a2001360200200241fc0e6a200241eb126a280000360000200241013a00f80e200220063602ec0e200220053602e00e2002427f3703d80e200220022903b00e220b3703d00e200220022800e8123600f90e200241f8106a200241c8136a200241d00e6a109703200241d00e6a41286a200241f8106a41286a2903003703002007200241f8106a41206a2903003703002003200241f8106a41186a290300370300200241d00e6a41106a200241f8106a41106a290300370300200241d00e6a41086a200241f8106a41086a290300370300200220022903f8103703d00e418012210120022d00b80e22054102460d04200241c8136a2005200010980320022903c813220ca741ff01714101460d0320050d0141800c2101427f200b42c0b2cd3b7c220c200c200b541b428090a7f0ea25560d04200241c8136a2101200b210c0c020b200241003a003b20024180063b0039200241013a003820022802d81321050240200241e0136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241dc136a2802002200450d002000410c6c450d00200510290b20022802e41321050240200241ec136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e8136a2802002200450d122000410c6c450d12200510290c120b427f210c200241c8136a21010b200241f0076a41206a4200370300200241f0076a41186a4280808080c00037030020022001280000360298132002200141036a28000036009b13200241f0076a412c6a200228009b13360000200241013a00980820024204370380082002427f3703f8072002200c3703f007200220022802981336009908200241a8116a200241d00e6a200241f0076a10970320024198136a41286a200241a8116a41286a29030037030020024198136a41206a200241a8116a41206a29030037030020024198136a41186a200241a8116a41186a29030037030020024198136a41106a200241a8116a41106a29030037030020024198136a41086a200241a8116a41086a290300370300200220022903a81137039813200241186a2000200b20022d00b90e20022903a80b220d200241b00b6a290300220e10c70202402002290318220b200241186a41086a290300220c84500d0041002100200241003a00ff132002200c3703f0122002200b3703e812200241014111200d200e84501b3a00fe132002200241f00a6a3602c00e2002200241f00a6a36028812200220024188126a360280082002200241fe136a3602fc072002200241c00e6a3602f8072002200241ff136a3602f4072002200241e8126a3602f007200241d00e6a200241f00a6a200241f0076a10c8020240024020022802d00e4101470d004200210e20022903d80e210d410121000c010b200241f80e6a290300210e200241f00e6a290300210d20022903d80e4201520d00200241d00e6a41106a290300210f2002280288122101200241a8086a200241d00e6a41186a290300370300200241a0086a200f37030041002100200241f0076a41086a41003a0000200241f9076a200129000037000020024181086a200141086a29000037000020024189086a200141106a29000037000020024191086a200141186a290000370000200241033a00f007200241f0076a10cb010b20000d03200241f0076a41186a22064200370300200241f0076a41106a22054200370300200241f0076a41086a22014200370300200242003703f00741dcbec500ad4280808080800184220f100122032900002110200241e8126a41086a2200200341086a290000370300200220103703e8122003102920012000290300370300200220022903e8123703f007419fe3c200ad4280808080d0018422101001220329000021112000200341086a290000370300200220113703e81220031029200520022903e8122211370300200241d00e6a41086a22072001290300370300200241d00e6a41106a22082011370300200241d00e6a41186a22092000290300370300200220022903f0073703d00e2002200241d00e6a412010e301200241106a29030021112002290308211220022802002103200642003703002005420037030020014200370300200242003703f007200f10012206290000210f2000200641086a2900003703002002200f3703e8122006102920012000290300370300200220022903e8123703f007201010012206290000210f2000200641086a2900003703002002200f3703e81220061029200520022903e812220f370300200720012903003703002008200f37030020092000290300370300200220022903f0073703d00e200242002011420020031b220f200e7d2012420020031b220e200d54ad7d2210200e200d7d220d200e562010200f562010200f511b22001b3703f80720024200200d20001b3703f007200241d00e6aad4280808080800484200241f0076aad428080808080028410030b200241c8136a41206a22004200370300200241c8136a41186a22014280808080c000370300200241c8136a412c6a200241b8126a41036a280000360000200242043703d813200220022800b8123600f1132002427f3703d0132002200b427f200c501b3703c813200241013a00f013200241d8116a20024198136a200241c8136a109703200241c8136a41286a200241d8116a41286a2903003703002000200241d8116a41206a2903003703002001200241d8116a41186a290300370300200241c8136a41106a200241d8116a41106a290300370300200241c8136a41086a200241d8116a41086a290300370300200220022903d8113703c813200241f0076a200410c90220022d00f0074101460d03200241d00e6a41286a2201200241a0086a2205290300370300200241d00e6a41206a2203200241f0076a41286a2206290300370300200241d00e6a41186a2207200241f0076a41206a2208290300370300200241d00e6a41106a2209200241f0076a41186a220a290300370300200241d00e6a41086a2213200241f0076a41106a2214290300370300200220022903f8073703d00e20024188126a200241c8136a200241d00e6a109703200241c8136a41286a221520024188126a41286a290300370300200241c8136a41206a221620024188126a41206a290300370300200241c8136a41186a220020024188126a41186a290300370300200241c8136a41106a221720024188126a41106a290300370300200241c8136a41086a221820024188126a41086a29030037030020022002290388123703c813200241f0076a200410ca0220022d00f0074101460d042001200529030037030020032006290300370300200720082903003703002009200a29030037030020132014290300370300200220022903f8073703d00e200241b8126a200241c8136a200241d00e6a1097032015200241b8126a41286a2903003703002016200241b8126a41206a2903003703002000200241b8126a41186a2903003703002017200241b8126a41106a2903003703002018200241b8126a41086a290300370300200220022903b8123703c813200241f0076a200410cb0220022d00f0074101460d05200241d00e6a41286a2200200241f0076a41306a2201290300370300200241d00e6a41206a2205200241f0076a41286a2203290300370300200241d00e6a41186a2206200241f0076a41206a2207290300370300200241d00e6a41106a2208200241f0076a41186a2209290300370300200241d00e6a41086a220a200241f0076a41106a2213290300370300200220022903f8073703d00e200241e8126a200241c8136a200241d00e6a109703200241c8136a41286a200241e8126a41286a290300370300200241c8136a41206a200241e8126a41206a290300370300200241c8136a41186a2214200241e8126a41186a290300370300200241c8136a41106a200241e8126a41106a290300370300200241c8136a41086a200241e8126a41086a290300370300200220022903e8123703c813200241f0076a200241f00a6a200410cc0220022d00f0074101460d0620002001290300370300200520032903003703002006200729030037030020082009290300370300200a2013290300370300200220022903f8073703d00e20024198136a200241c8136a200241d00e6a109703200241386a41086a200229039813370300200241386a41106a20024198136a41086a290300370300200241386a41186a20024198136a41106a290300370300200241386a41206a20024198136a41186a290300370300200241386a41286a20024198136a41206a290300370300200241386a41306a20024198136a41286a290300370300200241003a00380c100b200c420888a721010b200241013a0038200220013b0039200220014110763a003b20022802e00e2105024020032802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241e40e6a2802002200450d002000410c6c450d00200510290b20022802ec0e21050240200241f40e6a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241f00e6a2802002200450d0e2000410c6c450d0e200510290c0e0b200241003a003b20024180023b0039200241013a003820022802a81321050240200241b0136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241ac136a2802002200450d002000410c6c450d00200510290b20022802b41321050240200241bc136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241b8136a2802002200450d0d2000410c6c450d0d200510290c0d0b200220022d00f3073a003b200220022f00f1073b0039200241013a003820022802d81321050240200241e0136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241dc136a2802002200450d002000410c6c450d00200510290b20022802e41321050240200241ec136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e8136a2802002200450d0c2000410c6c450d0c200510290c0c0b200220022d00f3073a003b200220022f00f1073b0039200241013a003820022802d8132105024020002802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241dc136a2802002200450d002000410c6c450d00200510290b20022802e41321050240200241ec136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e8136a2802002200450d0b2000410c6c450d0b200510290c0b0b200220022d00f3073a003b200220022f00f1073b0039200241013a003820022802d81321050240200241e0136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241dc136a2802002200450d002000410c6c450d00200510290b20022802e41321050240200241ec136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e8136a2802002200450d0a2000410c6c450d0a200510290c0a0b200220022d00f3073a003b200220022f00f1073b0039200241013a003820022802d8132105024020142802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241dc136a2802002200450d002000410c6c450d00200510290b20022802e41321050240200241ec136a2802002200450d002000410c6c21012005210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e8136a2802002200450d092000410c6c450d09200510290c090b427f4200200141ff01714102471b210b200241c8136a21050b200241f0076a41206a22004200370300200241f0076a41186a22014280808080c00037030020022005280000360298132002200541036a28000036009b132002419c086a200228009b13360000200241013a00980820024204370380082002427f3703f8072002200b3703f007200220022802981336009908200241d8116a200241d00e6a200241f0076a109703200241d00e6a41286a2205200241d8116a41286a290300370300200241d00e6a41206a2206200241d8116a41206a290300370300200241d00e6a41186a2207200241d8116a41186a290300370300200241d00e6a41106a2208200241d8116a41106a290300370300200241d00e6a41086a2209200241d8116a41086a290300370300200220022903d8113703d00e2000420037030020014280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f00720024188126a200241d00e6a200241f0076a109703200520024188126a41286a290300370300200620024188126a41206a290300370300200720024188126a41186a290300370300200820024188126a41106a290300370300200920024188126a41086a29030037030020022002290388123703d00e2000420037030020014280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241b8126a200241d00e6a200241f0076a1097032005200241b8126a41286a2903003703002006200241b8126a41206a2903003703002007200241b8126a41186a2903003703002008200241b8126a41106a2903003703002009200241b8126a41086a290300370300200220022903b8123703d00e2000420037030020014280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241e8126a200241d00e6a200241f0076a1097032005200241e8126a41286a2903003703002006200241e8126a41206a2903003703002007200241e8126a41186a2903003703002008200241e8126a41106a2903003703002009200241e8126a41086a290300370300200220022903e8123703d00e2000420037030020014280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f00720024198136a200241d00e6a200241f0076a109703200520024198136a41286a290300370300200620024198136a41206a290300370300200720024198136a41186a290300370300200820024198136a41106a290300370300200920024198136a41086a29030037030020022002290398133703d00e2000420037030020014280808080c000370300200241013a00980820024204370380082002427f3703f807200242003703f007200241c8136a200241d00e6a200241f0076a109703200241940f6a2201200241c8136a41086a290300370200200220022903c81337028c0f200241dc136a2802002105200241c8136a41186a2802002100200241c8136a41206a2802002106200241ec136a280200210720022802d813210820022802e413210920022903f013210b200241c00e6a41086a20012902003703002002200229028c0f3703c00e0240024020022802c00b41796a220141114b0d00024002400240024020010e12000404040401040404040404040404040402000b0240200241c80b6a2d00004118460d0041002101200241003a00d30e200241003b00d10e200241013a00d00e0c050b2002200241980d6a3602d81102400240200341014b0d00200241f0076a41286a200241a80d6a220141286a290300370300200241f0076a41206a200141206a290300370300200241f0076a41186a200141186a290300370300200241f0076a41106a200141106a290300370300200241f0076a41086a200141086a290300370300200220012903003703f007200241c8136a200241f0076a20022802980d10b40220022903c8134201520d01200241e8126a41186a200241c8136a41206a290300220d370300200241e8126a41106a200241c8136a41186a290300220c370300200241e8126a41086a200241c8136a41106a290300370300200220022903d0133703e812200241b8126a41086a200d3e02002002200c3703b81220022d00ba124100200ca741ff01714103461b2101024041002802d8a74c4104490d002002411536028c122002200241b8126a3602881241002802888040210341002802848040210a41002802dca74c2113200241b0086a41bb1b360200200241a8086a42db80808010370300200241a4086a41eec5c0003602002002419c086a420e37020020024198086a41e0c5c00036020020024190086a420137030020024180086a4202370300200241f8076a41073602002002418c086a20024188126a360200200241dcbec2003602fc07200241bcc1c2003602f407200241043602f007200a4180a4c000201341024622131b200241f0076a20034198a4c00020131b2802101102000b200220013a00d30e200241800e3b00d10e200241013a00d00e0c040b024041002802d8a74c4104490d0041002802888040210141002802848040210341002802dca74c210a200241b0086a41b01b360200200241a8086a42db80808010370300200241a4086a41eec5c0003602002002419c086a420e37020020024198086a41e0c5c00036020020024190086a42003703002002418c086a4180a6cc0036020020024180086a4201370300200241f8076a4107360200200241d4bec2003602fc07200241bcc1c2003602f407200241043602f00720034180a4c000200a410246220a1b200241f0076a20014198a4c000200a1b2802101102000b200241003a00d30e200241003b00d10e200241013a00d00e0c030b024041002802d8a74c4104490d00200241163602cc132002200241d8116a3602c81341002802888040210141002802848040210341002802dca74c210a200241b0086a41c31b360200200241a8086a42db80808010370300200241a4086a41eec5c0003602002002419c086a420e37020020024198086a41e0c5c00036020020024190086a420137030020024180086a4202370300200241f8076a41073602002002418c086a200241c8136a360200200241ecbec2003602fc07200241bcc1c2003602f407200241043602f00720034180a4c000200a410246220a1b200241f0076a20014198a4c000200a1b2802101102000b200241a4086a410f36020020024190086a420037030020024188086a4280808080c000370300200241fcbec2003602a008200241013a00980820024204370380082002427f3703f8072002427f20022903a80d427f200241b00d6a290300501b220c42ffffffffffffffffff007c220d200d200c541b3703f00720022802d8112115411710272201450d0e200242173702cc13200220013602c813410f200241c8136a10710240024020022802cc13221420022802d01322136b410f490d002013410f6a210120022802c81321032014210a0c010b2013410f6a22012013490d10201441017422032001200320014b1b220a4100480d100240024020140d000240200a0d00410121030c020b200a102722030d010c130b20022802c81321032014200a460d0020032014200a102b2203450d120b2002200a3602cc13200220033602c8130b200320136a221341002900fcbe42370000201341076a4100290083bf42370000200220013602d013201528020021130240200a20016b41034b0d00200141046a22142001490d10200a41017422152014201520144b1b22144100480d1002400240200a0d00024020140d00410121030c020b201410272203450d130c010b200a2014460d002003200a2014102b2203450d120b200220143602cc13200220033602c8130b20024199086a210a200320016a2013360000200141046a210320022802c813211320022802cc13211402402002280294082201200228029008470d002002418c086a20014101109d0120022802940821010b200228028c082001410c6c6a220120033602082001201436020420012013360200200241d0136a2201200241f0076a41186a290300370300200220022802940841016a36029408200241c8136a41106a2203200241f0076a41206a290300370300200241d00e6a41106a42960137030020022002290380083703c8132002200a2900003703e8122002200a41076a2900003700ef12200220022903f0073703d80e200241d00e6a41186a20022903c813370300200241d00e6a41206a2001290300370300200241f80e6a2003290300370300200241800f6a41003a0000200241840f6a20022800eb12360000200241810f6a20022802e812360000200241003a00d00e0c080b200241d00e6a200241c40b6a10cd020c010b200241d00e6a200241c80b6a10ce020b20022d00d00e4101470d0520022f00d10e20022d00d30e4110747221010c010b200241003a00d30e418102210120024181023b00d10e200241013a00d00e0b200241013a0038200220013b0039200220014110763a003b02402000450d002000410c6c21012008210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b02402005450d002005410c6c450d00200810290b02402007450d002007410c6c21012009210003400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b2006450d072006410c6c450d07200910290c070b200220022d00f3073a003b200220022f00f1073b0039200241013a00380c070b200241fc006a4104360200200241c4046a4102360200200242023702b404200241a0d1c2003602b00420024104360274200241ccd2c200360270200241003602f40720024180a6cc003602f0072002200241f0006a3602c0042002200241f0076a360278200241b0046a41b0d1c2001040000b41a094cc00411941bc94cc001033000b20024198136a41286a2201200241d00e6a41306a29030037030020024198136a41206a2203200241d00e6a41286a29030037030020024198136a41186a220a200241d00e6a41206a221329030037030020024198136a41106a2214200241d00e6a41186a221529030037030020024198136a41086a2216200241d00e6a41106a290300370300200220022903d80e37039813200241d00e6a41086a200241c00e6a41086a290300370300200241f40e6a20073602002013200636020020152000360200200241e40e6a2005360200200220022903c00e3703d00e2002200b3703f80e200220093602ec0e200220083602e00e200241f0076a41286a2001290300370300200241f0076a41206a2003290300370300200241f0076a41186a200a290300370300200241f0076a41106a2014290300370300200241f0076a41086a201629030037030020022002290398133703f007200241c8136a200241d00e6a200241f0076a109703200241386a41086a20022903c813370300200241386a41106a200241c8136a41086a290300370300200241386a41186a200241c8136a41106a290300370300200241386a41206a200241c8136a41186a290300370300200241386a41286a200241c8136a41206a290300370300200241386a41306a200241c8136a41286a290300370300200241003a00380c030b200241023a003b200241800e3b0039200241013a00380c020b41808e0821050b200241013a0038200220053b0039200220054110763a003b0b200410cc0120022d003821010b410110272200450d00200242013702f40a200220003602f00a02400240200141ff01714101470d00200041013a0000200241013602f80a200241386a410172200241f00a6a10880320022802f80a21000c010b200041003a0000200241013602f80a200241c0006a290300210b024020022802f40a2201417f6a41074b0d00200141017422054109200541094b1b22054100480d03024020012005460d00200020012005102b2200450d050b200220053602f40a200220003602f00a0b2000200b370001200241093602f80a200241d0006a2802002101200241d8006a2802002200200241f00a6a107102402000450d0020012000410c6c6a2108034020012802002106200141086a2802002200200241f00a6a10710240024020022802f40a220320022802f80a22056b2000490d0020022802f00a21040c010b200520006a22042005490d05200341017422072004200720044b1b22074100480d050240024020030d00024020070d00410121040c020b200710272204450d080c010b20022802f00a210420032007460d00200420032007102b2204450d070b200220073602f40a200220043602f00a0b200420056a2006200010e4071a2002200520006a3602f80a2001410c6a22012008470d000b0b200241dc006a2802002101200241e4006a2802002200200241f00a6a10710240024020000d0020022802f40a210620022802f80a21000c010b20012000410c6c6a2108034020012802002107200141086a2802002200200241f00a6a10710240024020022802f40a220420022802f80a22056b2000490d0020022802f00a2103200421060c010b200520006a22032005490d05200441017422062003200620034b1b22064100480d050240024020040d00024020060d00410121030c020b200610272203450d080c010b20022802f00a210320042006460d00200320042006102b2203450d070b200220063602f40a200220033602f00a0b200320056a2007200010e4071a2002200520006a22003602f80a2001410c6a22012008470d000b0b200241c8006a290300210b02400240200620006b4108490d0020022802f00a21010c010b200041086a22012000490d03200641017422052001200520014b1b22054100480d030240024020060d00024020050d00410121010c020b200510272201450d060c010b20022802f00a210120062005460d00200120062005102b2201450d050b200220053602f40a200220013602f00a0b200120006a200b3700002002200041086a22003602f80a200241e8006a2d00002105024020022802f40a2000470d00200041016a22042000490d03200041017422032004200320044b1b22044100480d030240024020000d0041002100024020040d00410121010c020b200410272201450d060c010b20002004460d00200120002004102b2201450d050b200220043602f40a200220013602f00a0b200120006a20053a00002002200041016a22003602f80a0b2000ad42208620023502f00a84210b024020022d00380d000240200241d8006a2802002201450d00200241d0006a28020021002001410c6c210103400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b0240200241d4006a2802002200450d002000410c6c450d00200228025010290b0240200241e4006a2802002201450d00200241dc006a28020021002001410c6c210103400240200041046a280200450d00200028020010290b2000410c6a2100200141746a22010d000b0b200241e0006a2802002200450d002000410c6c450d00200228025c10290b20024180146a2400200b0f0b1039000b1032000b1030000b200241bc046a4104360200200241840b6a4102360200200242023702f40a200241a0d1c2003602f00a200241043602b404200241ccd2c2003602b0042002410036027420024180a6cc003602702002200241b0046a3602800b2002200241f0006a3602b804200241f00a6a41b0d1c2001040000bd00a04017f017e077f027e230041e0116b220224004202210302400240024002400240024020012903684202520d00200241b0076a20014198016a41a80210e4071a0c010b200241066a200141206a41c20010e4071a200241c8006a41186a200141186a290000370300200241c8006a41106a200141106a290000370300200241c8006a41086a200141086a29000037030020022001290000370348200241d80a6a20014198016a41a80210e4071a200241800d6a41286a2204200141e8006a220141286a290300370300200241800d6a41206a2205200141206a290300370300200241800d6a41186a2206200141186a290300370300200241800d6a41106a2207200141106a290300370300200241800d6a41086a2208200141086a290300370300200220012903003703800d200241c00e6a200241800d6a10820620022d00c00e210120022f00c10e210920022d00c30e210a200241f80d6a200241c00e6a41047241c80010e4071a20014101460d01200241b00d6a200241f80d6a41c80010e4071a200241c00e6a200241d80a6a41a80210e4071a20024190116a200429030037030020024188116a200529030037030020024180116a2006290300370300200241f8106a2007290300370300200241f0106a2008290300370300200220022903800d3703e810200241c00e6a41d8026a200241b00d6a41c80010e4071a200241b0076a41046a200241c00e6a41a00310e4071a20024188046a200241b0076a41a40310e4071a200241e8006a20024188046a41046a41a00310e4071a410810272201450d03200242083702b407200220013602b007200241e8006a200241b0076a10bf0220024190036a200241b0076a10be02200241e8006a41d8026a200241b0076a10800620022802b407210520022802b00721010240024020022802b80722044180024b0d00200241066a20012004200241c8006a10d60621040c010b2004ad4220862001ad84101022042900002103200441086a290000210b200441106a290000210c200241b0076a41186a200441186a290000370300200241b0076a41106a200c370300200241b0076a41086a200b370300200220033703b00720041029200241066a200241b0076a4120200241c8006a10d60621040b02402005450d00200110290b2004450d02200241c00e6a41086a200241c8006a41086a290300370300200241c00e6a41106a200241c8006a41106a290300370300200241c00e6a41186a200241c8006a41186a29030037030020024188046a41086a200241a0036a29030037030020024188046a41106a200241a8036a29030037030020024188046a41186a200241b0036a290300370300200241a8046a200241b8036a290300370300200220022903483703c00e200220024198036a290300370388042002290390032103200241b0076a200241e8006a41a80210e4071a0b200041086a20022903c00e370300200041286a2003370300200041306a200229038804370300200041206a200241c00e6a41186a290300370300200041186a200241c00e6a41106a290300370300200041106a200241c00e6a41086a290300370300200041386a20024188046a41086a290300370300200041c0006a20024188046a41106a290300370300200041c8006a20024188046a41186a290300370300200041d0006a20024188046a41206a290300370300200041d8006a200241b0076a41a80210e4071a200041003a00000c030b200241d80a6a10cc01200041036a2009200a4110747222014110763a0000200020013b0001200041013a00000c020b20004180083b0001200041013a0000200041036a41003a0000200241e8006a10cc010c010b1039000b200241e0116a24000bc10304017f027e067f017e230041206b22032400200229030021042001290300210520022802102106200141106a200141186a2207280200200241186a22082802002209109d0120012802102007280200220a410c6c6a20062009410c6c10e4071a200841003602002007200a20096a2209360200200341086a200936020020032001290210370300200228021c21082001411c6a200141246a2207280200200241246a220a2802002209109d01200128021c2007280200220b410c6c6a20082009410c6c10e4071a200a41003602002007200b20096a2209360200200341106a41086a20093602002003200129021c370310427f200520047c220420042005541b2105200229030822042001290308220c200c2004561b21040240024020012d0028450d004101210120022d00280d010b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a2802002201450d002001410c6c450d00200610290b0240200241206a2802002201450d002001410c6c450d00200810290b200341206a24000b920303047f017e017f230041e0006b22032400200341306a41186a4200370300200341306a41106a22044200370300200341306a41086a220542003703002003420037033041b3e6ca00ad4280808080e000841001220629000021072005200641086a290000370300200320073703302006102941e8a0cb00ad4280808080800284100122062900002107200341d0006a41086a2208200641086a2900003703002003200737035020061029200420032903502207370300200341106a41086a2005290300370300200341106a41106a2007370300200341106a41186a200829030037030020032003290330370310200341086a200341106a412010fc014100210502400240417f200328020c410020032802081b220620026a220220022006491b22064280808080f28ba80942808080c0f588fe06200141ff01711b22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76a4b0d00200041046a20063602000c010b200041800c3b0001200041036a41003a0000410121050b200020053a0000200341e0006a24000b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000b0e002000280200350200200110460bc73f09057f017e057f017e047f017e037f017e0d7f230022022103200241c0046b41607122022400024002402001450d00200220003602400c010b20024180a6cc003602400b20022001360244200241c0026a200241c0006a10f802024002400240024002400240024020022802c402450d00200241c8006a200241c0026a41f00010e4071a200241b8016a200241c8006a109c032002280248200241d8006a20024198016a200241b8016a4100109d03410041002802dca74c2201410120011b3602dca74c0240200141014b0d000240024020010e020001000b410041f8a0c000360288804041004180a6cc003602848040410041023602dca74c0c010b034041002802dca74c4101460d000b0b2002410020022802482201417f6a2200200020014b1b22043602c401100d4101470d01200241c0026a41186a22054200370300200241c0026a41106a22004200370300200241c0026a41086a22014200370300200242003703c00241c6b7c700ad42808080808001841001220629000021072001200641086a290000370300200220073703c0022006102941ceb7c700ad4280808080e00184100122082900002107200241f0016a41086a2206200841086a290000370300200220073703f00120081029200020022903f0012207370300200241e0036a41086a22092001290300370300200241e0036a41106a220a2007370300200241e0036a41186a220b2006290300370300200220022903c0023703e003200241386a200241e0036a412010fc01410021080240200228023c410020022802381b220c20044d0d00200241e0036a2100200241c8016a21010c060b200542003703002000420037030020014200370300200242003703c00241b1dcc900ad4280808080f00084220710012208290000210d2001200841086a2900003703002002200d3703c00220081029418886ca00ad4280808080c0018410012208290000210d2006200841086a2900003703002002200d3703f00120081029200020022903f001220d37030020092001290300370300200a200d370300200b2006290300370300200220022903c0023703e003200241306a200241e0036a412010fc012002280234210e2002280230210f200542003703002000420037030020014200370300200242003703c00220071001220829000021072001200841086a290000370300200220073703c0022008102941b8dcc900ad4280808080a001841001220829000021072006200841086a290000370300200220073703f00120081029200020022903f001220737030020092001290300370300200a2007370300200b2006290300370300200220022903c0023703e003200241c8016a200241e0036a108d020240024020022802c80122010d00410021100c010b20022902cc012207422088a72110200742ffffff3f83500d00200110290b200241c0026a41186a22084200370300200241c0026a41106a22054200370300200241c0026a41086a22014200370300200242003703c00241c6b7c700ad42808080808001841001220629000021072001200641086a290000370300200220073703c0022006102941dcb7c700ad4280808080c00084100122062900002107200241f0016a41086a2209200641086a290000370300200220073703f00120061029200020022903f001370000200041086a2009290300370000200241e0036a41086a2001290300370300200241e0036a41106a2005290300370300200241e0036a41186a2008290300370300200220022903c0023703e003200241c0026a200241e0036a109e0320022802c002211120022902c4022112200241c0026a41e9dabdf306109f0320022802c002210820022802c402210902400240024020022802c80222000d004100211341012114410021150c010b02400240024020004105742201410575220641ffffff3f712006470d0020014100480d0020010d01410121140c020b1032000b200110272214450d020b200820016a210a2000410574210520014105762113410021010340200820016a22002900002107200041086a290000210d200041106a2900002116201420016a220641186a200041186a290000370000200641106a2016370000200641086a200d370000200620073700002005200141206a2201470d000b200a20086b41606a41057641016a21150b0240200941ffffff3f71450d00200810290b20154115490d0402404101450d0020154104744160712217417f4c0d000240201710272218450d00200241003602e803200242043703e003201441606a2119201441a07f6a211a41042106410021014100211b2015211c0340201c210b4100211c4101210a0240200b417f6a2205450d00024002400240024002400240201420054105746a200b410574221d20146a41406a412010e7074100480d00200b417e6a2109201a201d6a21004100211c410021080340024020092008470d00200b210a0c080b200841016a2108200041206a2000412010e7072105200041606a21002005417f4a0d000b200841016a210a2008417f73200b6a21050c010b201a201d6a210002400340024020054101470d00410021050c020b2005417f6a2105200041206a2000412010e7072108200041606a210020084100480d000b0b200b2005490d01200b20154b0d02200b20056b220a4101762209450d002019201d6a2100201420054105746a21080340200241c0026a41186a221d200841186a221e290000370300200241c0026a41106a221f200841106a2220290000370300200241c0026a41086a220c200841086a221c290000370300200220082900003703c002200041086a22212900002107200041106a2222290000210d200041186a2223290000211620082000290000370000201e20163700002020200d370000201c20073700002023201d2903003700002022201f2903003700002021200c290300370000200020022903c002370000200041606a2100200841206a21082009417f6a22090d000b0b0240200a41094d0d002005211c0c050b024020050d002005211c0c050b200b20154b0d02200b20056b2109201420054105746a211d0340200b2005417f6a221c490d040240200b201c6b220a4102490d00201420054105746a22002014201c4105746a2205412010e707417f4a0d00200241c0026a41186a220c200541186a2208290000370300200241c0026a41106a2221200541106a221e290000370300200241c0026a41086a2222200541086a221f290000370300200220052900003703c00220052000290000370000201f200041086a290000370000201e200041106a2900003700002008200041186a290000370000410121200240200a4103490d00200541c0006a200241c0026a412010e707417f4a0d0041022108201d210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a221e29000037000020092008460d01200041c0006a211f20082120201e2100200841016a2108201f200241c0026a412010e707417f4a0d020c000b0b200821200b200520204105746a220020022903c002370000200041186a200c290300370000200041106a2021290300370000200041086a20222903003700000b201c450d05201d41606a211d200941016a2109201c2105200a410a4f0d050c000b0b2005200b4180cac700104c000b200b20154180cac700104b000b200b2005417f6a221c490d00200b20154190cac700104b000b201c200b4190cac700104c000b0240201b20022802e403470d00200241e0036a201b4101108d0120022802e003210620022802e8032201211b0b2006201b4103746a2200200a3602042000201c3602002002200141016a22013602e8032001211b024020014102490d000240024003400240024002400240024020062001417f6a4103746a2200280200450d00200141037420066a220941746a2802002205200028020422084b0d010b20014103490d022000280204210820062001417d6a221f4103746a28020421000c010b4102211b200141024d0d0620062001417d6a221f4103746a2802042200200820056a4d0d004103211b200141034d0d06200941646a280200200020056a4b0d050b20002008490d010b2001417e6a211f0b02400240024002400240024002402001201f41016a22204d0d002001201f4d0d012006201f41037422216a2201280204222220012802006a22012006202041037422236a2200280200220c490d02200120154b0d032014200c4105746a221d2000280204221e41057422006a2108200141057421062001200c6b2209201e6b2201201e4f0d04201820082001410574220010e407220b20006a2105201e4101480d0520014101480d05201920066a21062008210103402006200141606a2208200541606a220920092008412010e707410048220a1b2200290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a29000037000020052009200a1b21050240201d20082001200a1b2201490d00200b21000c080b200641606a2106200b2100200b2005490d000c070b0b2020200141a0cac7001036000b201f200141b0cac7001036000b200c200141c0cac700104c000b2001201541c0cac700104b000b2018201d200010e407220b20006a21050240201e4101480d002009201e4c0d00201420066a210a200b2100201d2101034020012008200020082000412010e70741004822091b2206290000370000200141186a200641186a290000370000200141106a200641106a290000370000200141086a200641086a2900003700002000200041206a20091b2100200141206a2101200841206a200820091b2208200a4f0d03200520004b0d000c030b0b201d2101200b21000c010b20082101200b21000b20012000200520006b41607110e4071a024020022802e8032201201f4d0d0020022802e003220620216a22002022201e6a3602042000200c360200200120204d0d02200620236a2200200041086a20012020417f736a41037410e5071a20022001417f6a22013602e803200141014b0d010c030b0b201f200141d0cac7001036000b202020011042000b2001211b0b201c450d060c000b0b1039000b1038000b1030000b200241ec036a4104360200200241dc006a41023602002002420237024c200241a0d1c200360248200241043602e403200241e8d2c2003602e003200241003602f40120024180a6cc003602f0012002200241e0036a3602582002200241f0016a3602e803200241c8006a41b0d1c2001040000b41002802d8a74c4105490d042002410c3602e4032002200241c4016a3602e00341002802888040210141002802848040210041002802dca74c210620024180036a418103360200200241f8026a42dd80808010370300200241f4026a4198cbc700360200200241ec026a4210370200200241e8026a4188cbc700360200200241e0026a4201370300200241d0026a4202370300200241c0026a41086a4108360200200241dc026a200241e0036a360200200241f0cac7003602cc0220024180cbc7003602c402200241053602c00220004180a4c000200641024622061b200241c0026a20014198a4c00020061b2802101102000c040b024020022802e40341ffffffff0171450d00200610290b2017450d01201810290c010b20154102490d0020142015417f6a22004105746a21054101210603400240024002400240201520002201417f6a2200490d00201520006b22094102490d03201420014105746a2201201420004105746a2208412010e707417f4a0d03200241c0026a41186a221e200841186a220a290000370300200241c0026a41106a221f200841106a220b290000370300200241c0026a41086a2220200841086a221d290000370300200220082900003703c00220082001290000370000201d200141086a290000370000200b200141106a290000370000200a200141186a2900003700004101210120094103490d02200841c0006a200241c0026a412010e707417f4a0d0241002109200521010340200141186a200141386a290000370000200141106a200141306a290000370000200141086a200141286a2900003700002001200141206a220b29000037000020062009220a460d02200a417f6a2109200141c0006a211d200b2101201d200241c0026a412010e707417f4a0d020c000b0b2000201541f0c9c700104c000b4102200a6b21010b200820014105746a220120022903c002370000200141186a201e290300370000200141106a201f290300370000200141086a20202903003700000b200541606a21052006417f6a210620000d000b0b200220103602e801200220043602e4012002200e4100200f1b22013602e001200220153602dc01200220133602d801200220143602d401200241003602d0012002201036028004200220043602fc03200220013602f803200220153602f403200220133602f003200220143602ec03200241003602e80320022011410120111b22083602e003200220083602c801200220082012420020111b2207422088a74105746a22013602e403200220013602cc012007a7210c200241e0036a2100200241c8016a21010b20024198026a41086a2206200141086a29020037030020024198026a41106a220a200141106a29020037030020024198026a41186a220b200141186a29020037030020024198026a41206a221d200141206a280200360200200241f0016a41086a221e200241c0026a41086a2205290200370300200241f0016a41106a221f200241c0026a41106a290200370300200241f0016a41186a2220200241c0026a41186a290200370300200241f0016a41206a221c200241c0026a41206a2902003703002002200129020037039802200220022902c0023703f001200241c8016a41206a2201200241e0036a41206a290200370300200241c8016a41186a2214200241e0036a41186a290200370300200241c8016a41106a2221200241e0036a41106a290200370300200241c8016a41086a2222200241e0036a41086a290200370300200220022902e0033703c8012005200c360200200220083602c402200241013602c002200241cc026a2208200229039802370200200241d4026a22052006290300370200200241dc026a2209200a290300370200200241e4026a220a200b290300370200200241ec026a201d280200360200200241003602f002200241f4026a20022903f001370200200241fc026a201e29030037020020024184036a201f2903003702002002418c036a202029030037020020024194036a201c2903003702002002410036029c03200241c0036a2001290300370300200241b8036a2014290300370300200241b0036a2021290300370300200241a8036a2022290300370300200241a0036a20022903c80137030020024190036a211d200241f8026a21012002419c036a2114200241f0026a212020024180036a211e20024188036a211f410021060340024002402006450d00200241286a202010a0030240200228022822064108460d00200228022c211c0c020b024020022802f0022206450d00024020022802f40241ffffff3f71450d00200610290b20022802880341ffffff3f71450d0020022802840310290b20012000290200370200200141086a200041086a290200370200200141106a200041106a290200370200200141186a200041186a290200370200200141206a200041206a2802003602002002200c3602f402200241003602f0020b2009290200210d200920022903f80337020020052902002116200520022903f00337020020082902002112200820022903e803370200200241d0036a41086a220b200a41086a280200360200200241003602e0032002200a2902003703d00320022902c4022107200220022903e0033702c40202402007a72206450d00201d20022903d00337020020012012370300201e2016370300201d41086a200b280200360200201f200d370300200220073703f0020c020b0240200228029c030d00410821060c010b200241206a201410a0032002280224211c200228022021060b02400240200641796a220b41014b0d000240200b0e020200020b024020022802c002450d0020022802c4022201450d00024020022802c80241ffffff3f71450d00200110290b200241dc026a28020041ffffff3f71450d00200241d8026a28020010290b024020022802f0022201450d00024020022802f40241ffffff3f71450d00200110290b20022802880341ffffff3f71450d0020022802840310290b200228029c032201450d030240200241a0036a28020041ffffff3f71450d00200110290b200241b4036a28020041ffffff3f71450d03200241b0036a28020010290c030b2002201c3602cc03200220063602c80341002802d8a74c4104490d00200241173602dc032002410c3602d4032002200241c8036a3602d8032002200241c4016a3602d00341002802888040210641002802848040210b41002802dca74c211c200241f8023602a004200242dd808080103703980420024198cbc700360294042002421037028c0420024188cbc700360288042002420237038004200242023703f003200241e0cac7003602ec03200241083602e80320024180cbc7003602e403200241043602e00320064198a4c000201c410246221c1b28021021062002200241d0036a3602fc03200b4180a4c000201c1b200241e0036a20061102000b20022802f00221060c000b0b200241c0026a41186a4200370300200241c0026a41106a22064200370300200241c0026a41086a22014200370300200242003703c00241eebec500ad4280808080f000841001220029000021072001200041086a290000370300200220073703c0022000102941eab8c000ad4280808080900284100122002900002107200241f0016a41086a2208200041086a290000370300200220073703f00120001029200620022903f0012207370300200241e0036a41086a2001290300370300200241e0036a41106a2007370300200241e0036a41186a2008290300370300200220022903c0023703e003200241186a200241e0036a10b101024020022802184101470d00200228021c2004470d00200241f0016a410041bec0c200ad4280808080800384100e108b0202400240024020022802f0012201450d00200241f8016a2802004104490d00024002402001280000220020044d0d004105210041f5c0c20021060c010b200041056a2004490d014112210041fac0c20021060b20022802f401450d01200110290c010b2002200436029802200220043602c801200241e0036a41086a200241f0016a41086a280200360200200220022903f0013703e003200241c0026a200241e0036a10e60220022802c4022101410041bec0c200ad428080808080038420023502c80242208620022802c0022206ad84200241c8016aad4280808080c00084100f210002402001450d00200610290b024020022802e0032201450d0020022802e403450d00200110290b20004101460d01411f210041d6c0c20021060b200220003602f401200220063602f00141002802d8a74c4104490d01200241043602e4032002200241f0016a3602e00341002802888040210141002802848040210041002802dca74c210620024180036a41b20a360200200241f8026a42db80808010370300200241f4026a41eec5c000360200200241ec026a420e370200200241e8026a41e0c5c000360200200241e0026a4201370300200241d0026a4202370300200241c8026a4107360200200241dc026a200241e0036a360200200241ecc7c0003602cc02200241bcc1c2003602c402200241043602c00220004180a4c000200641024622061b200241c0026a20014198a4c00020061b2802101102000c010b024010d60241ff017122014108470d0041002802d8a74c4104490d0141002802888040210141002802848040210041002802dca74c210620024180036a41b70a360200200241f8026a42db80808010370300200241f4026a41eec5c000360200200241ec026a420e370200200241e8026a41e0c5c000360200200241e0026a4200370300200241dc026a4180a6cc00360200200241d0026a4201370300200241c8026a410736020020024184c8c0003602cc02200241bcc1c2003602c402200241043602c00220004180a4c000200641024622061b200241c0026a20014198a4c00020061b2802101102000c010b200220013a00f00141002802d8a74c450d002002410f3602e4032002200241f0016a3602e00341002802888040210141002802848040210041002802dca74c210620024180036a41b50a360200200241f8026a42db80808010370300200241f4026a41eec5c000360200200241ec026a420e370200200241e8026a41e0c5c000360200200241e0026a4201370300200241d0026a4201370300200241c8026a4107360200200241dc026a200241e0036a360200200241fcc7c0003602cc02200241bcc1c2003602c402200241013602c00220004180a4c000200641024622061b200241c0026a20014198a4c00020061b2802101102000b20022802b8012108024020022802c0012201450d00200141246c21002008210103400240024020012d0000220641044b0d0002400240024020060e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b024020022802bc012201450d00200141246c450d00200810290b200228024c21080240200241c8006a410c6a2802002201450d00200141246c21002008210103400240024020012d0000220641044b0d0002400240024020060e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012000415c6a22000d000b0b0240200241d0006a2802002202450d00200241246c450d00200810290b2003240042010b8504010d7f230041306b220224002002410036020820024204370300024002400240024002402001410c6a28020041246c2203450d002001280204210141042104410021050340024020012d00004101470d00200141106a2802002206417f4c0d03200141036a2d00002107200141016a2f00002108200141086a2802002109200141046a2d0000210a0240024020060d004100210b4101210c0c010b20061027220c450d052006210b0b02400240200b2006490d00200b210d0c010b200b410174220d2006200d20064b1b220d4100480d060240200b0d00200d1027220c0d010c080b200b200d460d00200c200b200d102b220c450d070b20082007411074722107200c2009200610e407210c200241206a41086a2208200241106a41086a29020037030020022002290210370320200e41807e71200a72210e024020052002280204470d0020022005410110960120022802002104200228020821050b2004200541246c6a220b2006360210200b200d36020c200b200c360208200b200e360204200b20073b0001200b41013a0000200b41036a20074110763a0000200b2002290320370214200b411c6a20082903003702002002200541016a22053602080b200141246a21012003415c6a22030d000b0b20002002290300370200200041086a200241086a280200360200200241306a24000f0b1038000b1039000b1032000b1030000baa1407027f017e037f017e017f017e047f230041d0006b220524004102200510fe05410021062005410036022041a6e5ca00ad4280808080800284200541206aad4280808080c0008422071003200541206a41186a22084200370300200541206a41106a22094200370300200541206a41086a220a42003703002005420037032041b3e6ca00ad4280808080e00084220b1001220c290000210d200541c0006a41086a220e200c41086a2900003703002005200d370340200c1029200a200e2903003703002005200529034037032041c9e6ca00ad4280808080e000841001220c290000210d200e200c41086a2900003703002005200d370340200c102920092005290340220d370300200541086a220f200a290300370300200541106a2210200d370300200541186a2211200e29030037030020052005290320370300200520003602202005ad4280808080800484220d200710032008420037030020094200370300200a420037030020054200370320200b1001220c2900002107200e200c41086a29000037030020052007370340200c1029200a200e2903003703002005200529034037032041e7e6ca00ad4280808080e000841001220c2900002107200e200c41086a29000037030020052007370340200c1029200920052903402207370300200f200a290300370300201020073703002011200e2903003703002005200529032037030002400240024002402003280208220e41246c41046a220a417f4c0d002003280200210802400240200a0d00410121030c010b200a10272203450d03200a21060b200541003602482005200336024020052006360244200e200541c0006a107102400240200e0d002005280248210a2005280244210c2005280240210f0c010b200e41246c2111200528024421032005280248210e0340200541206a200810bc0220052802202110024002402003200e6b20052802282206490d00200e20066a210a2005280240210f2003210c0c010b200e20066a220a200e490d042003410174220c200a200c200a4b1b220c4100480d040240024020030d000240200c0d004101210f0c020b200c1027220f0d010c080b2005280240210f2003200c460d00200f2003200c102b220f450d070b2005200c3602442005200f3602400b200f200e6a2010200610e4071a2005200a36024802402005280224450d00201010290b200841246a2108200c2103200a210e2011415c6a22110d000b0b200d200aad422086200fad8410030240200c450d00200f10290b200541206a41186a220c4200370300200541206a41106a22084200370300200541206a41086a220a42003703002005420037032041b3e6ca00ad4280808080e00084100122032900002107200541c0006a41086a220e200341086a2900003703002005200737034020031029200a200e2903003703002005200529034037032041cfe6ca00ad4280808080a00184100122032900002107200e200341086a290000370300200520073703402003102920092005290340370000200941086a200e290300370000200541086a200a290300370300200541106a2008290300370300200541186a200c2903003703002005200529032037030041201027220e450d02200e2001290000370000200e41186a200141186a290000370000200e41106a200141106a290000370000200e41086a200141086a290000370000200d200ead42808080808004841003200e1029200541206a2000417f6a10fb02200535022821072005280220210a41201027220e450d02200e2001290000370000200e41186a200141186a290000370000200e41106a200141106a290000370000200e41086a200141086a2900003700002007422086200aad84200ead42808080808004841003200e102902402005280224450d00200a10290b200541206a41186a220c4200370300200541206a41106a22084200370300200541206a41086a220a42003703002005420037032041b3e6ca00ad4280808080e00084220710012203290000210b200541c0006a41086a220e200341086a2900003703002005200b37034020031029200a200e2903003703002005200529034037032041d9e6ca00ad4280808080e0018410012203290000210b200e200341086a2900003703002005200b3703402003102920092005290340370000200941086a200e290300370000200541086a200a290300370300200541106a2008290300370300200541186a200c2903003703002005200529032037030041201027220e450d02200e2002290000370000200e41186a200241186a290000370000200e41106a200241106a290000370000200e41086a200241086a290000370000200d200ead42808080808004841003200e1029200541206a41186a22034200370300200541206a41106a220c4200370300200541206a41086a220a4200370300200542003703202007100122082900002107200541c0006a41086a220e200841086a2900003703002005200737034020081029200a200e2903003703002005200529034037032041b4a0cb00ad4280808080b00184100122082900002107200e200841086a290000370300200520073703402008102920092005290340370000200941086a2208200e290300370000200541086a2206200a290300370300200541106a220f200c290300370300200541186a2210200329030037030020052005290320370300200d100402402004450d0020034200370300200c4200370300200a42003703002005420037032041b3e6ca00ad4280808080e00084220710012211290000210b200e201141086a2900003703002005200b37034020111029200a200e2903003703002005200529034037032041eaf9ca00ad4280808080e0008410012211290000210b200e201141086a2900003703002005200b37034020111029200920052903403700002008200e2903003700002006200a290300370300200f200c2903003703002010200329030037030020052005290320370300200d100420034200370300200c4200370300200a420037030020054200370320200710012211290000210b200e201141086a2900003703002005200b37034020111029200a200e2903003703002005200529034037032041e0a2cb00ad4280808080a0018410012211290000210b200e201141086a2900003703002005200b37034020111029200920052903403700002008200e2903003700002006200a290300370300200f200c2903003703002010200329030037030020052005290320370300200d100420034200370300200c4200370300200a4200370300200542003703202007100122112900002107200e201141086a2900003703002005200737034020111029200a200e2903003703002005200529034037032041f0f9ca00ad4280808080b00184100122112900002107200e201141086a2900003703002005200737034020111029200920052903403700002008200e2903003700002006200a290300370300200f200c2903003703002010200329030037030020052005290320370300200d10060b200541d0006a24000f0b1038000b1032000b1039000b1030000b8b06010d7f23004190016b220224002002412036021420022001360210200241186a2001ad42808080808004841007108b020240024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10c8010240024020022802080d00200228020c2205200228022c22064105762201200120054b1b22014105742207417f4c0d030240024020010d00410121080c010b200710272208450d050b41002109200241003602402002200136023c20022008360238024002402005450d004100210a03402006210b41002101200241003a008801200a41016a210a0340200b2001460d03200241e8006a20016a200228022822072d00003a00002002200741016a3602282002200141016a22073a0088012007210120074120470d000b200241c8006a41186a220c200241e8006a41186a290300370300200241c8006a41106a220d200241e8006a41106a290300370300200241c8006a41086a220e200241e8006a41086a2903003703002002200229036837034802402009200228023c470d00200241386a20094101109e0120022802382108200228024021090b200b20076b2106200820094105746a22012002290348370000200141186a200c290300370000200141106a200d290300370000200141086a200e2903003700002002200941016a2209360240200a2005470d000b2002200b20076b36022c0b2008450d012000200229023c370204200020083602000c020b2002410036022c0240200141ff0171450d00200241003a0088010b200228023c41ffffff3f71450d00200810290b20024100360250200242013703482002410d36023c2002200241106a3602382002200241c8006a360234200241fc006a41013602002002420137026c200241f4eaca003602682002200241386a360278200241346a41a8a3c800200241e8006a10371a200235025042208620023502488410080240200228024c450d00200228024810290b200041003602000b2004450d00200310290b20024190016a24000f0b1038000b1039000bf30505017f017e0a7f017e027f230041e0006b220224002002200136020c0240024002402002410c6a10202203422088a722010d0020004100360208200042013702000c010b2002200136021420022003a722043602102002200241106a10c80120022802000d0102400240024020022802042205200228021422064105762201200120054b1b22014105742207417f4c0d0002400240024020010d00410121080c010b200710272208450d010b2001ad21032005450d024100210903402006210a200241003a0058200941016a2109410021010240024002400340200a2001460d01200241386a20016a200228021022072d00003a00002002200741016a3602102002200141016a22073a00582007210120074120470d000b200241186a41186a220b200241386a41186a290300370300200241186a41106a220c200241386a41106a290300370300200241186a41086a220d200241386a41086a290300370300200220022903383703182003422088220ea722012003a7460d012001210f0c020b200241003602140240200141ff0171450d00200241003a00580b200342ffffff3f83500d08200810290c080b0240024002400240200141016a22062001490d00200ea7220f4101742210200620062010491b220641ffffff3f712006470d00200641057422064100480d00024020010d0020060d02410121080c040b2006200f4105742201460d03024020010d0020060d02410121080c040b200820012006102b2208450d020c030b1032000b2006102722080d010b1030000b2006410576ad21030b200a20076b21062008200f4105746a22012002290318370000200141186a200b290300370000200141106a200c290300370000200141086a200d290300370000200342ffffffff0f83200f41016aad42208684210320092005470d000b2002200a20076b3602140c030b1039000b1038000b2008450d020b2000200337020420002008360200200410290b200241e0006a24000f0b41e891cc00412e200241386a41d891cc0041dc90cc00103a000bb723030b7f047e0b7f230041c0066b2202240002400240024020012802082203200128020c2204460d002001200341206a22053602082001280210210620024180036a41186a200341186a29000037030020024180036a41106a200341106a29000037030020024180036a41086a200341086a2900003703002002200329000037038003200128021421074100210802400240024002402001411c6a280200220941014b0d0020090e020201020b2009210a0340200a410176220b20086a220c20082007200c4105746a20024180036a412010e7074101481b2108200a200b6b220a41014b0d000b0b200720084105746a20024180036a412010e7070d002006210c0c010b2001200641016a220c3602104108210820052004460d020240200941014d0d0003402001200541206a220336020820024180036a41186a200541186a29000037030020024180036a41106a200541106a29000037030020024180036a41086a200541086a2900003703002002200529000037038003410021082009210a0340200a410176220520086a220b20082007200b4105746a20024180036a412010e7074101481b2108200a20056b220a41014b0d000b200720084105746a20024180036a412010e707450d022001200c41016a220c3602102003210520032004460d030c000b0b0240024020090e020100010b03402001200541206a220836020820024180036a41186a200541186a29000037030020024180036a41106a200541106a29000037030020024180036a41086a200541086a29000037030020022005290000370380030240200720024180036a412010e7070d00410021080c030b2001200c41016a220c3602102008210520042008460d030c000b0b2001200436020820012006200420036b41406a4105766a41026a3602100c020b024002400240024002400240024002400240200920084d0d00200241086a41186a200720084105746a220841186a290000220d370300200241086a41106a200841106a290000220e370300200241086a41086a200841086a290000220f3703002002200829000022103703082001200c41016a360210200141286a2802002111200141206a2802002108200141246a280200210a200241286a41186a200d370300200241286a41106a200e370300200241286a41086a200f370300200220103703282002200a360254200220083602502002200c36024c20024180036a41186a420037030020024180036a41106a2205420037030020024180036a41086a22084200370300200242003703800341b1dcc900ad4280808080f000841001220a290000210d2008200a41086a2900003703002002200d37038003200a102941b8dcc900ad4280808080a001841001220a290000210d200241c0026a41086a220b200a41086a2900003703002002200d3703c002200a1029200520022903c002220d370300200241d8006a41086a2008290300370300200241d8006a41106a200d370300200241d8006a41186a200b290300370300200220022903800337035820024180036a200241d8006a108d022002280280032208410120081b210a02400240200c200229028403420020081b220d422088a7490d00200d42ffffff3f83500d01200a1029200228024c210c0c010b200c200a200c4105746a10930621050240200d42ffffff3f83500d00200a10290b41022108200228024c210c20050d0c0b2002280254210620022802502112411b10272208450d01200841176a41002800f3ce47360000200841106a41002900ecce47370000200841086a41002900e4ce47370000200841002900dcce4737000041041027220a450d01200a200c3600002008411b4136102b2209450d082009200a28000036001b200a1029200241c0026a41002009ad4280808080f00384220d100e108b02024002400240024020022802c0022208450d00200241c8026a280200220a4104490d00200a417c714104460d0041000d0020082800002012470d002008280004220a41036a20064b0d010b410410272208450d0b20082012360000200841044108102b2208450d0b20082006360004200241d8006a41086a200241c0026a41086a280200360200200220022903c00237035820024180036a200241d8006a10e602200228028403210a4100200d200235028803422086200228028003220bad842008ad4280808080800184100f21050240200a450d00200b10290b02402002280258220a450d00200228025c450d00200a10290b200810294104210820054101460d022006210a0c010b024020022802c402450d00200810290b410121080b20091029200a210c0c0c0b20024180036a1094062002280280032213450d0320024194036a280200211420024190036a28020021152002418c036a280200211620024188036a2802002117200228028403211820024100360288032002420137038003410410272208450d0820024104360284032002200836028003200820063600002002410436028803201720024180036a107102400240200228028403220520022802880322086b2017490d00200228028003210a0c010b200820176a220a2008490d082005410174220b200a200b200a4b1b220b4100480d080240024020050d000240200b0d004101210a0c020b200b1027220a0d010c0b0b200228028003210a2005200b460d00200a2005200b102b220a450d0a0b2002200b360284032002200a360280030b200a20086a2013201710e4071a2002200820176a36028803201420024180036a10712014450d0220162014410c6c6a21032016210a0340200a2802002104200a41086a280200220820024180036a107102400240200228028403220b20022802880322056b2008490d002002280280032107200b21010c010b200520086a22072005490d09200b41017422012007200120074b1b22014100480d0902400240200b0d00024020010d00410121070c020b200110272207450d0c0c010b2002280280032107200b2001460d002007200b2001102b2207450d0b0b200220013602840320022007360280030b200720056a2004200810e4071a2002200520086a220836028803200a410c6a220a2003470d000c050b0b2008200941cccec7001036000b1039000b200228028403210120022802880321080c010b41012108410521060c010b02400240200120086b4104490d00200228028003210a200121050c010b200841046a220a2008490d0320014101742205200a2005200a4b1b22054100480d030240024020010d00024020050d004101210a0c020b20051027220a450d060c010b200228028003210a20012005460d00200a20012005102b220a450d050b20022005360284032002200a360280030b200a20086a20123600002002200841046a220b3602880302402005200b6b41034b0d00200b41046a2207200b490d03200541017422012007200120074b1b22074100480d030240024020050d00024020070d004101210a0c020b20071027220a450d060c010b20052007460d00200a20052007102b220a450d050b20022007360284032002200a360280030b200a200b6a200c3600002002200841086a22053602880302400240200228028403220b20056b4104490d00200228028003210a200b21070c010b200541046a220a2005490d03200b4101742207200a2007200a4b1b22074100480d0302400240200b0d00024020070d004101210a0c020b20071027220a450d060c010b200228028003210a200b2007460d00200a200b2007102b220a450d050b20022007360284032002200a360280030b200a20056a201136000020024180036a41e9dabdf306200241286a200a2008410c6a109506410121080240024020022d0080034101460d00410321050c010b200241fe026a20022d0083033a0000200241c0026a41086a20024194036a290200370300200241d0026a2002419c036a290200370300200241d8026a200241a4036a290200370300200241e0026a200241ac036a290200370300200241e8026a200241b4036a290200370300200241ed026a200241b9036a290000370000200220022f0081033b01fc02200220024180036a410c6a2902003703c00220024180036a41086a280200210b4100210820022802840321050b200241bc026a41026a2201200241fc026a41026a2d00003a000020024180026a41086a2204200241c0026a41086a29030037030020024180026a41106a2203200241c0026a41106a29030037030020024180026a41186a2219200241c0026a41186a29030037030020024180026a41206a221a200241c0026a41206a29030037030020024180026a41286a221b200241c0026a41286a29030037030020024180026a41306a200241c0026a41306a290300370300200220022f01fc023b01bc02200220022903c00237038002024020080d00200241fc016a41026a20012d00003a000020024180036a41086a200429030037030020024180036a41106a200329030037030020024180036a41186a201929030037030020024180036a41206a201a29030037030020024180036a41286a201b29030037030020024180036a412d6a20024180026a412d6a290000370000200220022f01bc023b01fc0120022002290380023703800302402007450d00200a10290b200220022f01fc013b01c0022002200241fe016a2d00003a00c202410021080c020b02402007450d00200a10290b02402018450d00201310290b02402014450d002014410c6c210a2016210803400240200841046a280200450d00200828020010290b2008410c6a2108200a41746a220a0d000b0b4101210802402015450d002015410c6c450d00201610290b20052106200b21130b0b200241c0016a41086a220a20024180036a41086a290300370300200241c0016a41106a220720024180036a41106a290300370300200241c0016a41186a220120024180036a41186a290300370300200241c0016a41206a220420024180036a41206a290300370300200241c0016a41286a220320024180036a41286a290300370300200241c0016a412d6a221920024180036a412d6a290000370000200220022d00c2023a00fa01200220022f01c0023b01f80120022002290380033703c00102400240024020080d00200241d8006a41186a2014360200200241d8006a41146a2015360200200241d8006a41106a2016360200200241d8006a410c6a2017360200200241d8006a41086a201836020020024182016a20022d00fa013a000020024187016a200b36000020024183016a20053600002002418b016a20022903c00137000020024193016a200a2903003700002002419b016a2007290300370000200241a3016a2001290300370000200241ab016a2004290300370000200241b3016a2003290300370000200241b8016a20192900003700002002201136027c2002200c360278200220123602742002201336025c20022006360258200220022f01f8013b018001024041002802d8a74c4103490d00200241c0026a411c6a4118360200200241c0026a41146a410c360200200241c0026a410c6a410c3602002002410c3602c4022002200241d8006a3602d8022002200241d0006a3602d0022002200241d4006a3602c8022002200241cc006a3602c00241002802888040210841002802848040210a41002802dca74c2105200241c0036a418204360200200241b8036a42dd80808010370300200241b4036a4198cbc700360200200241ac036a4210370200200241a8036a4188cbc700360200200241a0036a420437030020024190036a420437030020024180036a41086a410836020020024180036a411c6a200241c0026a360200200241f8cec70036028c0320024180cbc700360284032002410336028003200a4180a4c000200541024622051b20024180036a20084198a4c00020051b2802101102000b2002410c36029804200242023703e8032002419c046a200241d8006a41e80010e4071a200220024180036a36028002200241c0026a20024180026a10bd0220022802c00220022802c40220022802c80210de02210a20024198046a10cc014107210841062106200a0d010c020b4107210820064107460d010b410410272208450d0220082012360000200841044108102b2208450d02200841003600044100200d2008ad4280808080800184101820081029200621080b200910292013210c0c040b1032000b1030000b410821080b0b2000200c36020420002008360200200241c0066a24000bef0401017f230041306b220224000240024002400240024002400240024020002802000e0701020304050600010b2001411c6a2802002100200128021821012002412c6a410036020020024180a6cc003602282002420137021c200241a0ccc70036021820012000200241186a103721010c060b2002200041046a36020c200241123602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420137021c200241a8ccc7003602182002200241106a36022820012000200241186a103721010c050b2002200041046a36020c200241123602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241b0ccc7003602182002200241106a36022820012000200241186a103721010c040b2002200028020436020c200241013602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241c0ccc7003602182002200241106a36022820012000200241186a103721010c030b2001411c6a2802002100200128021821012002412c6a410036020020024180a6cc003602282002420137021c200241d0ccc70036021820012000200241186a103721010c020b2001411c6a2802002100200128021821012002412c6a410036020020024180a6cc003602282002420137021c200241d8ccc70036021820012000200241186a103721010c010b2001411c6a2802002100200128021821012002412c6a410036020020024180a6cc003602282002420137021c200241e0ccc70036021820012000200241186a103721010b200241306a240020010ba90504047f017e057f017e230041d0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a220442003703002002420037032041cd87cc00ad4280808080a001841001220529000021062004200541086a290000370300200220063703202005102941d983cc00ad4280808080b00184100122052900002106200241c0006a41086a2207200541086a2900003703002002200637034020051029200320022903402206370300200241086a2004290300370300200241106a2006370300200241186a200729030037030020022002290320370300200241206a2002109e03024020022902244200200228022022051b2206422088a722044105744104722203417f4c0d000240200310272207450d002005410120051b21082002410036022820022003360224200220073602202004200241206a10710240024020040d0020022802282103200228022021090c010b2004410574210a2002280220210920022802242107200228022821032008210b0340200b2104024002402007200322056b4120490d00200541206a21030c010b024002400240200541206a22032005490d002007410174220b2003200b20034b1b220b4100480d000240024020070d000240200b0d00410121090c020b200b102721090c040b2007200b470d020b200b21070c030b1032000b20092007200b102b21090b200b210720090d001030000b200441206a210b200920056a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200a41606a220a0d000b2002200736022420022003360228200220093602200b2003ad4220862009ad84210c0240200642ffffff3f83500d00200810290b200241d0006a2400200c0f0b1039000b1038000bbe05020c7f017e230041306b22022400200210a403024002400240024002400240200228020822034103744104722204417f4c0d002002280204210520022802002106200410272207450d012002410036020820022004360204200220073602002003200210712003450d02200341037421082006210303400240024020032802004101460d0002400240200228020420022802082204460d00200228020021070c010b200441016a22072004490d07200441017422092007200920074b1b22094100480d070240024020040d0041002104024020090d00410121070c020b2009102722070d010c0b0b2002280200210720042009460d00200720042009102b2207450d0a0b20022009360204200220073602000b200720046a41003a0000200441016a21040c010b024002402002280204220720022802082204460d00200228020021090c010b200441016a22072004490d06200441017422092007200920074b1b22074100480d060240024020040d0041002104024020070d00410121090c020b200710272209450d0a0c010b2002280200210920042007460d00200920042007102b2209450d090b20022007360204200220093602000b200920046a41013a00002002200441016a220a360208200341046a280200210b02402007200a6b41034b0d00200a41046a220c200a490d062007410174220d200c200d200c4b1b220c4100480d060240024020070d000240200c0d00410121090c020b200c10272209450d0a0c010b2007200c460d0020092007200c102b2209450d090b2002200c360204200220093602000b2009200a6a200b360000200441056a21040b200341086a210320022004360208200841786a22080d000c050b0b1038000b1039000b200228020821040c010b1032000b2004ad422086200235020084210e0240200541ffffffff0171450d00200610290b200241306a2400200e0f0b1030000ba30b07057f017e047f027e047f017e077f230041e0006b22012400200141c0006a41186a22024200370300200141c0006a41106a22034200370300200141c0006a41086a220442003703002001420037034041d787cc00ad42808080809001841001220529000021062004200541086a290000370300200120063703402005102941fa87cc00ad4280808080e00084100122072900002106200141086a2205200741086a2900003703002001200637030020071029200320012903002206370300200141206a41086a22082004290300370300200141206a41106a22092006370300200141206a41186a220a200529030037030020012001290340370320200141c0006a200141206a10a60320012802402107200129024421062002420037030020034200370300200442003703002001420037034041cd87cc00ad4280808080a0018410012202290000210b2004200241086a2900003703002001200b3703402002102941d983cc00ad4280808080b0018410012202290000210b2005200241086a2900003703002001200b3703002002102920032001290300220b370300200820042903003703002009200b370300200a2005290300370300200120012903403703202006420020071b220c422088a7210d200141c0006a200141206a109e0320012902444200200128024022041b2206422088210b0240200642ffffff3f83500d002004410120041b10290b200ba721044100210e0240200d450d002004417f6a200d6e210e0b2007410420071b210f2001410036024820014204370340200141c0006a41002004108d012001280248210802400240024002400240024020040d00200128024021090c010b2001280240220920084103746a21030240200e450d00200e200d6c210a410021050340410021070240200a20054d0d002005200e6e2207200d4f0d04200f2007412c6c6a2802002102410121070b20032007360200200341046a2002360200200341086a21032004200541016a2205470d000b200820056a21080c010b20042105034020034100360200200341086a21032005417f6a22050d000b200820046a21080b20012802442110200141c0006a41dbbcc70041141094034100210341204100412020044102746b2205200541204b1b22056bad422086200141c0006a20056aad84101022052900002106200541086a290000210b200541106a2900002111200141186a2212200541186a290000370300200141106a22132011370300200141086a2214200b3703002001200637030020051029200141206a41186a22152012290300370300200141206a41106a22162013290300370300200141206a41086a221720142903003703002001200129030037032041002004417f6a2205200520044b1b2202450d032001ad4280808080800484210b034002402003411c71220541046a220741204d0d002007412041f0bcc700104b000b200120056a2800002004410120041b220a70210702402005411c470d00200141c0006a41186a220d200b1010220541186a290000370300200141c0006a41106a220e200541106a290000370300200141c0006a41086a2218200541086a29000037030020012005290000370340200510292012200d2903003703002013200e29030037030020142018290300370300200120012903403703000b200a417f6a220520084f0d02200720084f0d03200920054103746a220529020021062005200920074103746a220729020037020020072006370200200341046a21032004417f6a21042002417f6a22020d000c040b0b2007200d41bceec9001036000b200520084180bdc7001036000b200720084190bdc7001036000b2000200836020820002010360204200020093602002000200129032037000c200041146a20172903003700002000411c6a2016290300370000200041246a20152903003700000240200ca72204450d002004412c6c450d00200f10290b200141e0006a24000bc80204047f017e017f017e230041d0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a220442003703002002420037032041d787cc00ad42808080809001841001220529000021062004200541086a290000370300200220063703202005102941fa87cc00ad4280808080e00084100122052900002106200241c0006a41086a2207200541086a2900003703002002200637034020051029200320022903402206370300200241086a2004290300370300200241106a2006370300200241186a200729030037030020022002290320370300200241206a200210a603200241206a20022802202204410420041b22052002290224420020041b2206422088a710a7032002350228422086200235022084210802402006a72204450d002004412c6c450d00200510290b200241d0006a240020080bbe0904057f017e0c7f027e230041c0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10c8010240024020022802000d000240024002402002280204220520022802242206412c6e2201200120054b1bad422c7e2207422088a70d002007a72201417f4c0d000240024020010d00410421080c010b200110272208450d020b41002109200241003602302002200836022820022001412c6e36022c02402005450d004100210a034020064104490d0420022006417c6a220b36022420022002280220220c41046a2201360220200b450d04200c280000210d20022006417b6a220b3602242002200141016a36022020012d0000220141014b0d044102210e0240024020010e020100010b41002101200241003a00b8012006417b6a210f417a210b02400240024002400340200f2001460d0120024198016a20016a200c20016a220e41056a2d00003a000020022006200b6a3602242002200e41066a3602202002200141016a220e3a00b801200b417f6a210b200e2101200e4120470d000b200241f8006a41186a221020024198016a41186a290300370300200241f8006a41106a221120024198016a41106a290300370300200241f8006a41086a221220024198016a41086a2903003703002002200229039801370378200f200e460d0920022006200b6a220b3602242002200c200e6a220141066a220f360220200141056a2d0000220c41014b0d09200c0e020102010b200141ff0171450d08200241003a00b8010c080b4100210e0c010b200b4104490d0620022006200e6b41766a220b36022420022001410a6a360220200f28000021134101210e0b200241d8006a41186a2010290300370300200241d8006a41106a2011290300370300200241d8006a41086a2012290300370300200220022903783703580b200a41016a210a200241386a41186a2206200241d8006a41186a290300370300200241386a41106a220c200241d8006a41106a290300370300200241386a41086a220f200241d8006a41086a2903003703002002200229035837033802402009200228022c470d00200241286a2009410110930120022802282108200228023021090b20082009412c6c6a2201200d3602002001200229033837020420062903002107200c2903002114200f2903002115200141286a2013360200200141246a200e3602002001410c6a2015370200200141146a20143702002001411c6a20073702002002200941016a2209360230200b2106200a2005470d000b0b2008450d032000200229022c370204200020083602000c040b1038000b1039000b200228022c2201450d002001412c6c450d00200810290b2002410036028001200242013703782002410d36025c2002200241086a3602582002200241f8006a360238200241ac016a41013602002002420137029c01200241f4eaca00360298012002200241d8006a3602a801200241386a41a8a3c80020024198016a10371a20023502800142208620023502788410080240200228027c450d00200228027810290b200041003602000b2004450d00200310290b200241c0016a24000bc20101037f230041106b22032400024002402002412c6c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420022003107102402002450d0020012002412c6c6a210203402003200128020036020c20032003410c6a41041072200141046a200310f3022001412c6a22012002470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1038000b1039000bf10203047f017e017f230041e0006b22022400200241306a41186a4200370300200241306a41106a22034200370300200241306a41086a220442003703002002420037033041b3e6ca00ad4280808080e000841001220529000021062004200541086a290000370300200220063703302005102941c9e6ca00ad4280808080e00084100122052900002106200241d0006a41086a2207200541086a2900003703002002200637035020051029200320022903502206370300200241106a41086a2004290300370300200241106a41106a2006370300200241106a41186a200729030037030020022002290330370310200241086a200241106a412010fc0120022802082105200228020c21030240410410272204450d0020044180808005360000200441044108102b2204450d0020044180a001360004200441084110102b2204450d0020042003410020051b2205417f6a410020051b360008200241e0006a24002004ad4280808080c001840f0b1030000b990b04037f017e037f017e230041e0006b22022400024002400240024020014104490d0020004180a6cc0020011b2800002103200241086a41186a4200370300200241086a41106a22044200370300200241086a41086a220142003703002002420037030841b3e6ca00ad4280808080e000841001220029000021052001200041086a290000370300200220053703082000102941c9e6ca00ad4280808080e00084100122002900002105200241d0006a41086a2206200041086a2900003703002002200537035020001029200420022903502205370300200241306a41086a2001290300370300200241306a41106a2005370300200241306a41186a2006290300370300200220022903083703302002200241306a412010fc010240024002402002280200450d00200228020422010d010b41022104200241023602240c010b200241086a20032001417f6a10aa03200228022421040b410110272201450d01200242013702342002200136023002400240024020044102470d00200141003a0000410121000c010b200141013a00002002410136023820022802182107200241206a2802002200200241306a10710240024020022802342203200228023822066b2000490d00200228023021010c010b200620006a22012006490d05200341017422082001200820014b1b22084100480d050240024020030d00024020080d00410121010c020b2008102722010d010c080b2002280230210120032008460d00200120032008102b2201450d070b20022008360234200220013602300b200120066a2007200010e4071a2002200620006a2206360238200241106a290300210520022903082109024002402002280234220320066b410f4d0d00200321000c010b200641106a22002006490d05200341017422072000200720004b1b22004100480d050240024020030d00024020000d00410121010c020b200010272201450d080c010b20032000460d00200120032000102b2201450d070b20022000360234200220013602300b200120066a22032005370008200320093700002002200641106a2206360238024020044101460d000240024020002006460d00200621000c010b200041016a22042000490d06200041017422062004200620044b1b22044100480d060240024020000d0041002100024020040d00410121010c020b200410272201450d090c010b20002004460d00200120002004102b2201450d080b20022004360234200220013602300b200120006a41003a00002002200041016a2200360238200228023021010c020b0240024020002006460d00200621000c010b200041016a22042000490d05200041017422062004200620044b1b22044100480d050240024020000d0041002100024020040d00410121010c020b200410272201450d080c010b20002004460d00200120002004102b2201450d070b20022004360234200220013602300b200120006a41013a00002002200041016a220436023820022802282103024002402002280234220620046b4104490d00200228023021010c010b200441046a22012004490d05200641017422072001200720014b1b22074100480d050240024020060d00024020070d00410121010c020b200710272201450d080c010b2002280230210120062007460d00200120062007102b2201450d070b20022007360234200220013602300b200120046a2003360000200041056a21000b200220003602380b2000ad4220862001ad842105024020022802244102460d002002411c6a280200450d00200228021810290b200241e0006a240020050f0b2002413c6a41043602002002411c6a41023602002002420237020c200241a0d1c2003602082002410436023420024180d3c2003602302002410036025420024180a6cc003602502002200241306a3602182002200241d0006a360238200241086a41b0d1c2001040000b1039000b1032000b1030000bf20a04047f017e047f017e230041b0016b22032400200341386a41186a4200370300200341386a41106a22044200370300200341386a41086a220542003703002003420037033841b3e6ca00ad4280808080e000841001220629000021072005200641086a290000370300200320073703382006102941c9e6ca00ad4280808080e0008410012206290000210720034188016a41086a2208200641086a29000037030020032007370388012006102920042003290388012207370300200341186a41086a22062005290300370300200341186a41106a2007370300200341186a41186a200829030037030020032003290338370318200341106a200341186a412010fc01024002400240024002400240200241016a2003280214410020032802101b470d0041d787cc00ad42808080809001841001220529000021072008200541086a290000370300200320073703880120051029419588cc00ad4280808080d000841001220529000021072006200541086a2900003703002003200737031820051029200320013602a4012003200341a4016aad4280808080c00084100222052900003703a80120051029200341c4006a200341a8016a3602002003200341a8016a41086a36023c2003200341a4016a3602402003200341a8016a36023820034198016a200341386a107520032802a001220941206a2204417f4c0d02200328029801210a0240024020040d0041002106410121050c010b200410272205450d04200421060b024002402006410f4d0d00200621080c010b200641017422084110200841104b1b22084100480d05024020060d002008102722050d010c070b20062008460d00200520062008102b2205450d060b2005200329038801370000200541086a20034188016a41086a2903003700000240024020084170714110460d00200821060c010b200841017422064120200641204b1b22064100480d0520082006460d00200520082006102b2205450d060b20052003290318370010200541186a200341186a41086a29030037000002400240200641606a2009490d00200621080c010b200941206a22082009490d052006410174220b2008200b20084b1b22084100480d0520062008460d00200520062008102b2205450d060b200541206a200a200910e4071a0240200328029c01450d00200a10290b2005200410900641ff0171210602402008450d00200510290b41022105410021080240024020064102470d000c010b02402006410171450d000c010b200341386a2001108906200341086a20032802382209200328024010fc01200328020c2104200328020821060240200328023c450d00200910290b02402006450d00200420024b0d010b200341186a200110cb04200341386a20032802182209200328022010cc040240024020032802444102470d004104210641002108410021040c010b200328023c41ffffffff0371210420032802382106200328024021080b0240200328021c450d00200910290b024002402008450d00200628020041c093066a210802402004450d00200610290b20082002490d01410021080c020b2004450d00200610290b200241c0f0006a2106410121080b20034198016a200110ce040240200328029801450d00200320013602a801200341186a200341a8016a10cc0320034188016a200341186a10a802200341386a200328028801220120032802900110a902200341c8006a2903004200200329033842015122051b21072003290340420020051b210c0240200328028c01450d00200110290b200020073703082000200c3703002000200329039801370210200041186a200341a0016a28020036020020002006360220200821050b2000200536021c0c010b2000410236021c0b200341b0016a24000f0b1038000b1039000b1032000b1030000bf80305017f017e017f017e037f230041306b22022400024002400240024020014104490d00200220004180a6cc0020011b28000010ac03200241186a200228020022012002280208108b03200229021c21032002280218210002402002280204450d00200110290b410110272201450d0120024201370204200220013602000240024020000d0041002104200141003a000042808080801021050c010b200141013a0000200241013602082003422088a72204200210710240024020022802042206200228020822076b2004490d00200228020021010c010b200720046a22012007490d04200641017422082001200820014b1b22084100480d040240024020060d00024020080d00410121010c020b2008102722010d010c070b2002280200210120062008460d00200120062008102b2201450d060b20022008360204200220013602000b200120076a2000200410e4071a200720046aad4220862105200021040b20052001ad84210502402000450d002003a7450d00200410290b200241306a240020050f0b200241246a4104360200200241146a410236020020024202370204200241a0d1c2003602002002410436021c200241a0d3c2003602182002410036022c20024180a6cc003602282002200241186a3602102002200241286a360220200241b0d1c2001040000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e483cc00ad4280808080c00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bef1c07097f017e057f017e027f027e047f230041e0116b22022400024002402001450d00200220003602000c010b20024180a6cc003602000b20022001360204200241c0036a200210f9020240024020022802c0032203450d002003200241c0036a41086a280200220441c0036c6a210520022802c4032106024002400240024020040d00200321070c010b200241c0036a4198016a2108200241d80a6a4198016a2109200241c0036a41f0006a210a200321070340200241d8026a200741e80010e4071a2007290368210b200241086a200741f0006a41d00210e4071a200741c0036a2107200b4203510d01200241c0036a200241d8026a41e80010e4071a2002200b3703a804200a200241086a41d00210e4071a2002200241c0036a3602d80a200241c80a6a200241d80a6a10bd02200220022802d00a3602c40a200220022802c80a220c3602c00a20024180076a200241c00a6a1087030240024020022903e8074203520d00024020022802cc0a450d00200c10290b200810cc010c010b200241d80a6a20024180076a41c00310e4071a410121004100210d024020022802f00b22014114470d0020022802f40b4101470d0020022802f80b210e20022802fc0b210f0240024020022802800c22104190026c22010d004108210d420021110c010b20014190026dad42f8017e220b422088a70d06200ba722004100480d060240024020000d004108210d0c010b20001027220d450d090b200041f8016ead21110b200e20016a21124100211302400240024020100d00200e21100c010b4200210b200e2101200d21000340200141086a2903002114200141106a280200211020012903002115200241980e6a200141146a41e40110e4071a024020100d0020014190026a21100c020b2001418c026a280200211620014184026a2802002117200141fc016a2802002118200141f8016a2802002119200241fc0f6a200241980e6a41e40110e4071a02402018450d00201841c1006c450d00201910290b02402016450d00201710290b2000201537030020002014370308200041106a2010360200200041146a200241fc0f6a41e40110e4071a200041f8016a2100200b4280808080107c210b201341016a211320014190026a22012012470d000b2011200b8421140c010b20112013ad42208684211420102012460d0003400240201041d0006a280200450d00201028024c10290b0240201041186a2802002200450d00201028021021012000410474210003400240200141046a280200450d00200128020010290b200141106a2101200041706a22000d000b0b0240201041146a28020041ffffffff0071450d00201028021010290b0240201028021c2201450d00201041206a280200450d00200110290b0240201041fc016a2802002201450d00200141c1006c450d0020102802f80110290b20104190026a210120104188026a41003602002010280284022100201041013602840202402010418c026a280200450d00200010290b2001211020012012470d000b0b0240200f450d00200f4190026c450d00200e10290b4100210020022802f00b21010b0240024020014114470d00024020022802f40b4101470d002000450d02024020022802800c2201450d0020022802f80b221020014190026c6a211803400240201041d0006a280200450d00201028024c10290b0240201041186a2802002200450d00201028021021012000410474210003400240200141046a280200450d00200128020010290b200141106a2101200041706a22000d000b0b0240201041146a28020041ffffffff0071450d00201028021010290b0240201028021c2201450d00201041206a280200450d00200110290b0240201041fc016a2802002201450d00200141c1006c450d0020102802f80110290b20104190026a210120104188026a41003602002010280284022100201041013602840202402010418c026a280200450d00200010290b2001211020012018470d000b0b20022802fc0b2201450d0220014190026c450d0220022802f80b10290c020b024020022802840c2200450d0020022802fc0b21012000410c6c210003400240200141046a280200450d00200128020010290b2001410c6a2101200041746a22000d000b0b20022802800c2201450d012001410c6c450d0120022802fc0b10290c010b200910cc010b024020022802cc0a450d00200c10290b200810cc01200d0d030b20072005470d000b200521070b4100210d0b024020052007460d002003200441c0036c6a2101034020074198016a10c2012001200741c0036a2207470d000b0b02402006450d00200641c0036c450d00200310290b0240024002400240200d0d00410121010c010b2014422088a741f8016c4105722201417f4c0d010b200110272200450d01200241003602e00a200220013602dc0a200220003602d80a02400240200d0d00200041003a0000200241013602e00a0c010b200041013a0000200241013602e00a2014422088a72201200241d80a6a10712001450d00200141f8016c2105410021160340200d20166a220141c8006a28020021120240024020022802dc0a220020022802e00a22186b4104490d0020022802d80a2110200021070c010b201841046a22102018490d05200041017422072010200720104b1b22074100480d050240024020000d00024020070d00410121100c020b2007102722100d010c090b20022802d80a211020002007460d00201020002007102b2210450d080b200220073602dc0a200220103602d80a0b201020186a20123600002002201841046a22123602e00a412010272200450d03200041186a2213200141f0006a290000370000200041106a2217200141e8006a290000370000200041086a2219200141e0006a2900003700002000200141d8006a29000037000002400240200720126b4120490d00201841246a21180c010b201241206a22182012490d052007410174220c2018200c20184b1b220c4100480d050240024020070d000240200c0d00410121100c020b200c10272210450d090c010b2007200c460d0020102007200c102b2210450d080b2002200c3602dc0a200220103602d80a0b201020126a22102000290000370000201041186a2013290000370000201041106a2017290000370000201041086a2019290000370000200220183602e00a20001029200141cc006a2802002113200141d4006a2802002210200241d80a6a10710240024020022802dc0a221220022802e00a22186b2010490d0020022802d80a2100201221070c010b201820106a22002018490d05201241017422072000200720004b1b22074100480d050240024020120d00024020070d00410121000c020b200710272200450d090c010b20022802d80a210020122007460d00200020122007102b2200450d080b200220073602dc0a200220003602d80a0b200020186a2013201010e4071a2002201820106a22103602e00a02400240200720106b411f4d0d00200721180c010b201041206a22182010490d05200741017422122018201220184b1b22184100480d050240024020070d00024020180d00410121000c020b201810272200450d090c010b20072018460d00200020072018102b2200450d080b200220183602dc0a200220003602d80a0b200020106a2207200141f8006a290000370000200741186a20014190016a290000370000200741106a20014188016a290000370000200741086a20014180016a2900003700002002201041206a22133602e00a02400240201820136b41c000490d00201041e0006a2107201821120c010b201341c0006a22072013490d05201841017422102007201020074b1b22124100480d050240024020180d00024020120d00410121000c020b201210272200450d090c010b20182012460d00200020182012102b2200450d080b200220123602dc0a200220003602d80a0b200020136a221020014198016a290000370000201041386a200141d0016a290000370000201041306a200141c8016a290000370000201041286a200141c0016a290000370000201041206a200141b8016a290000370000201041186a200141b0016a290000370000201041106a200141a8016a290000370000201041086a200141a0016a290000370000200220073602e00a412010272210450d03201041186a2218200141f0016a290000370000201041106a2213200141e8016a290000370000201041086a2217200141e0016a2900003700002010200141d8016a2900003700000240201220076b411f4b0d00200741206a22192007490d052012410174220c2019200c20194b1b22194100480d050240024020120d00024020190d00410121000c020b201910272200450d090c010b20122019460d00200020122019102b2200450d080b200220193602dc0a200220003602d80a0b200020076a22002010290000370000200041186a2018290000370000200041106a2013290000370000200041086a20172900003700002002200741206a3602e00a201010292001200241d80a6a10ae032005201641f8016a2216470d000b0b20023502e00a42208620023502d80a84210b0240200d450d0002402014422088a72201450d00200d200141f8016c6a2107200d2101034002402001221041d0006a280200450d00201028024c10290b0240201041186a2802002200450d00201028021021012000410474210003400240200141046a280200450d00200128020010290b200141106a2101200041706a22000d000b0b0240201041146a28020041ffffffff0071450d00201028021010290b201041f8016a21010240201028021c2200450d00201041206a280200450d00200010290b20012007470d000b0b2014a72201450d00200141f8016c450d00200d10290b200241e0116a2400200b0f0b1038000b1039000b1032000b2002418c076a4104360200200241ec0a6a4102360200200242023702dc0a200241a0d1c2003602d80a2002410436028407200241b8d3c200360280072002410036020c20024180a6cc00360208200220024180076a3602e80a2002200241086a36028807200241d80a6a41b0d1c2001040000b1030000bee0203017f017e047f230041106b22022400200029030021032002200041086a29030037030820022003370300200120024110107220002802102104200041186a28020022052001107102402005450d0020054104742105034002402004410c6a2d000022064103714103460d004100210702400240024020060e03020001020b410121070c010b410221070b200220073a000020012002410110720b20042802002107200441086a2802002206200110712001200720061072200441106a2104200541706a22050d000b0b0240412010272204450d0020042000290028370000200441186a200041c0006a290000370000200441106a200041386a290000370000200441086a200041306a29000037000020012004412010722004102902400240200028021c22040d00200241003a000020012002410110720c010b200241013a00002001200241011072200041246a28020022052001107120012004200510720b200241106a24000f0b1039000bff0504057f017e067f017e230041a0016b22022400200241d8006a41186a22034200370300200241d8006a41106a22044200370300200241d8006a41086a220542003703002002420037035841b1dcc900ad4280808080f000841001220629000021072005200641086a2900003703002002200737035820061029418886ca00ad4280808080c00184100122082900002107200241f8006a41086a2206200841086a2900003703002002200737037820081029200420022903782207370300200241106a41086a22092005290300370300200241106a41106a220a2007370300200241106a41186a220b200629030037030020022002290358370310200241086a200241106a412010fc01200228020c210c2002280208210d2003420037030020044200370300200542003703002002420037035841b3e6ca00ad4280808080e000841001220829000021072005200841086a290000370300200220073703582008102941cfe6ca00ad4280808080a001841001220829000021072006200841086a290000370300200220073703782008102920042002290378220737030020092005290300370300200a2007370300200b200629030037030020022002290358370310200241f8006a200241106a412010cd0120022d00782106200320024191016a290000370300200420024189016a290000370300200520024181016a29000037030020022002290079370358200c4100200d1b21080240024020064101460d00200241386a41186a4200370300200241386a41106a4200370300200241386a41086a4200370300200242003703380c010b200241386a41186a2003290300370300200241386a41106a2004290300370300200241386a41086a2005290300370300200220022903583703380b2002411c6a200241c0006a290300370200200241246a200241c8006a2903003702002002412c6a200241d0006a2903003702002002200836021020022002290338370214200241f8006a200241106a10b00320023502800121072002350278210e200241a0016a2400200e2007422086840bc70101057f20012802002102024002400240410410272203450d0020032002360000412010272202450d0120022001290004370000200241186a22042001411c6a290000370000200241106a2205200141146a290000370000200241086a22062001410c6a290000370000200341044124102b22010d020b1030000b1039000b200120022900003700042001411c6a2004290000370000200141146a20052900003700002001410c6a200629000037000020021029200042a4808080c004370204200020013602000ba50a07027f017e047f017e017f047e027f230041e0006b220224002002411436020c200241d3d5c800360208200241106a41d3d5c800ad4280808080c002841007108b02024002400240024002400240200228021022030d0042002104410821050c010b200228021421062002200241186a2802002207360224200220033602200240024002402007450d0020022007417f6a3602242002200341016a36022020032d00002107200241c8006a200241206a10b20320022802482208450d00200229024c2109200741ff01714101460d012009a72207450d00200741286c450d00200810290b20024100360230200242013703282002410d36023c2002200241086a3602382002200241286a36024441012107200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b4102210a0c010b4101210a410021070b02402006450d00200310290b4108200820071b21054200200920071b210420070d00200a4101460d0020052802082203ad42287e2209422088a70d012009a72207417f4c0d01200528020021060240024020070d00410821050c010b200710272205450d030b02400240024002400240200741286e220820034f0d002008410174220a2003200a20034b1bad42287e2209422088a70d082009a7220a4100480d08200741274d0d01200841286c2207200a460d022007450d0120052007200a102b2205450d090c020b2008ad210b20030d02420021090c030b200a10272205450d070b200a41286ead210b0b200341286c210a42002109410021080340200620086a22032903002104200341086a290300210c200341106a290300210d200341186a290300210e200520086a220741206a200341206a290300370300200741186a200e370300200741106a200d370300200741086a200c3703002007200437030020094280808080107c2109200a200841286a2208470d000b0b200b20098421040b2004422088a7220341286c4104722207417f4c0d00200710272208450d01200241003602502002200736024c200220083602482003200241c8006a10712002280250210702402003450d002005200341286c6a210f200228024c210620052103034002400240200620076b4120490d00200741206a2108200228024821102006210a0c010b200741206a22082007490d052006410174220a2008200a20084b1b220a4100480d050240024020060d000240200a0d00410121100c020b200a10272210450d080c010b200228024821102006200a460d0020102006200a102b2210450d070b2002200a36024c200220103602480b201020076a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a29000037000020022008360250200341206a290300210902400240200a20086b4108490d00200841086a2107200a21060c010b200841086a22072008490d05200a41017422062007200620074b1b22064100480d0502400240200a0d00024020060d00410121100c020b200610272210450d080c010b200a2006460d002010200a2006102b2210450d070b2002200636024c200220103602480b201020086a200937000020022007360250200f200341286a2203470d000b0b2007ad422086200235024884210902402004a72203450d00200341286c450d00200510290b200241e0006a240020090f0b1038000b1039000b1032000b1030000bbb0504037f017e087f037e23004180016b220224002002200110c80102400240024002402002280200450d00200041003602000c010b20022802042203200128020441286e2204200420034b1bad42287e2205422088a70d012005a72204417f4c0d010240024020040d00410821060c010b200410272206450d030b4100210720024100360210200220063602082002200441286e36020c0240024002402003450d0041002108034041002104200241003a0078200841016a210820012802042109417f210a034020092004460d03200241d8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0078200a417f6a210a200c2104200c4120470d000b200241386a41186a2204200241d8006a41186a290300370300200241386a41106a220a200241d8006a41106a290300370300200241386a41086a220d200241d8006a41086a290300370300200220022903583703382009200c6b220c4108490d03200b29000121052001200b41096a3602002001200c41786a360204200241186a41086a220c200d290300370300200241186a41106a2209200a290300370300200241186a41186a220a20042903003703002002200229033837031802402007200228020c470d00200241086a2007410110a30120022802082106200228021021070b2006200741286c6a22042002290318370300200c290300210e2009290300210f200a290300211020042005370320200441186a2010370300200441106a200f370300200441086a200e3703002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c020b200441ff0171450d00200241003a00780b20004100360200200228020c2204450d00200441286c450d00200610290b20024180016a24000f0b1038000b1039000bac1603037f017e057f230041c0096b22022400024002402001450d00200220003602200c010b20024180a6cc003602200b20022001360224200241b8046a200241206a10b40302400240024002400240024020022903c0044202510d00200241286a200241b8046a41800210e4071a200241186a200241206a10c8010240024020022802180d0020022802242203200228021c2201490d002001417f4c0d010240024020010d0041002103410121000c010b2001102d2200450d08200020022802202204200110e4071a2002200320016b3602242002200420016a360220200121030b2000450d00200241a8026a200241286a41800210e4071a20022001ad4220862003ad8422054220883e02fc08200220003602f808200241b8046a200241f8086a10b5032005a721030240024020022802bc0422010d000c010b200241b0086a200241c8046a280200360200200220022903c0043703a80820022802b80421040b02402003450d00200010290b200241b8046a41086a2200200241a8086a41086a280200360200200220022903a8083703b8042001450d03200241a8046a41086a22032000280200360200200220022903b8043703a804200241b8046a200241a8026a41800210e4071a200241b8066a41086a20022903a804370300200241c8066a2003280200360200200220013602bc06200220043602b80641002101200241003602d006200241106a200241d0066a10b603200241a8086a200228021022002002280214220428020c2203110200024020022d00cc084103460d00410021010340200241a8086a20002003110200200141016a210120022d00cc084103470d000b0b2000200428020011030002402004280204450d00200010290b2001450d042002200241b8066a3602e4062002200241b8046a3602e0062002200241d0066a3602dc062002200241dc066a3602ec062002200241e0066a3602e806200241086a200241d0066a10b603200228020821012002200228020c22003602f406200220013602f0062002200241e8066a3602f8062002200241f8066a36028007200241e0076a2001200028020c1102000240024020022d0084084103460d00200241f1086a21000340200241f8086a200241e0076a41c80010e4071a200241a8086a20024180076a200241f8086a10b70320022d00f00822014102470d02200241e0076a20022802f00620022802f40628020c11020020022d0084084103470d000b0b20022802f00620022802f4062802001103004104210641002107024020022802f406280204450d0020022802f00610290b410021010c060b20024190076a200241a8086a41c80010e4071a200241dc076a41026a2203200041026a2d00003a0000200220002f000022003b01fc06200220003b01dc07200241a8086a20022802f00620022802f40628021011020041cc0010272206450d07200620024190076a41c80010e407220020013a0048200020022f01dc073b0049200041cb006a20032d00003a000020024180076a41086a2208200241f0066a41086a280200360200200220022903f006220537038007200220083602dc07200241e0076a2005a720022802840728020c1102000240024020022d0084084103470d0041012107410121010c010b200241f1086a210441012107410121010340200241f8086a200241e0076a41c80010e4071a200241a8086a200241dc076a200241f8086a10b703024020022d00f00822004102470d00200241e0076a20022802800720022802840728020c11020020022d0084084103470d010c020b20024190076a200241a8086a41c80010e4071a2002418c076a41026a2203200441026a2d00003a0000200220042f000022093b01fc06200220093b018c07200241a8086a20024190076a41c80010e4071a200241e0076a41026a220920032d00003a0000200220022f018c073b01e007024020012007470d00200241f8086a2002280280072002280284072802101102000240024002400240200741016a22032007490d002007410174220a2003200a20034b1bad42cc007e2205422088a70d002005a722034100480d00024020070d0020030d02410421060c040b200741cc006c22072003460d03024020070d0020030d02410421060c040b200620072003102b2206450d020c030b1032000b2003102722060d010b1030000b200341cc006e21070b2006200141cc006c6a200241a8086a41c80010e407220320003a0048200341cb006a20092d00003a0000200320022f01e0073b0049200220083602dc07200241e0076a20022802800720022802840728020c110200200141016a210120022d0084084103470d000b0b200228028007200228028407280200110300200228028407280204450d0520022802800710290c050b200241b4026a4104360200200241cc046a4102360200200242023702bc04200241a0d1c2003602b804200241043602ac02200241ccd3c2003602a802200241003602ac0820024180a6cc003602a8082002200241a8026a3602c8042002200241a8086a3602b002200241b8046a41b0d1c2001040000b1038000b200241346a4104360200200241bc026a4102360200200242023702ac02200241a0d1c2003602a8022002410436022c200241ccd3c200360228200241003602ac0820024180a6cc003602a8082002200241286a3602b8022002200241a8086a360230200241a8026a41b0d1c2001040000b410021000c020b024020022802d0062201450d0020022802d4062200450d00200041226c450d00200110290b20022802bc0621030240200241b8066a410c6a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010290b2001410c6a2101200041746a22000d000b0b4100210020022802c0062201450d012001410c6c450d01200310290c010b02402001450d00200141cc006c2100200641c9006a21010340024002402001417f6a2d00004101460d0041002802d8a74c4103490d01200241193602fc082002200141bb7f6a3602f80841002802888040210341002802848040210441002802dca74c210920024199023602e808200242e4808080103703e008200241c8b8c4003602dc082002421c3702d408200241acb8c4003602d008200242013703c808200242023703b8082002418cb8c4003602b4082002411c3602b008200241acb8c4003602ac08200241033602a80820034198a4c000200941024622091b28021021032002200241f8086a3602c40820044180a4c00020091b200241a8086a20031102000c010b200220013602e00741002802d8a74c450d002002411a36028409200241193602fc082002200141bb7f6a3602f8082002200241e0076a3602800941002802888040210341002802848040210441002802dca74c21092002419a023602e808200242e4808080103703e008200241c8b8c4003602dc082002421c3702d408200241acb8c4003602d008200242023703c808200242023703b8082002419cb8c4003602b4082002411c3602b008200241acb8c4003602ac08200241013602a80820034198a4c000200941024622091b28021021032002200241f8086a3602c40820044180a4c00020091b200241a8086a20031102000b200141cc006a2101200041b47f6a22000d000b0b02402007450d00200741cc006c450d00200610290b024020022802d0062201450d0020022802d4062200450d00200041226c450d00200110290b0240200241b8066a410c6a2802002200450d0020022802bc0621012000410c6c210003400240200141046a280200450d00200128020010290b2001410c6a2101200041746a22000d000b0b4101210020022802c0062201450d002001410c6c450d0020022802bc0610290b410110272201450d00200120003a0000200241c0096a24002001ad428080808010840f0b1039000bff2d07037f017e037f017e067f057e0d7f23004190086b220224000240024002400240024002400240200128020422034108490d002001280200220429000021052001200341786a22063602042001200441086a22073602002006450d0520072d000021062001200341776a22083602042001200741016a360200200641014b0d0502400240024002400240024002400240024020060e020001000b20084108490d092007290001210920012003416f6a220a3602042001200741096a36020041002107200241003a0028200321060240024002400240024002400340200a2007460d01200241086a20076a200420076a220841116a2d00003a000020012006416e6a3602042001200841126a3602002002200741016a22083a00282006417f6a21062008210720084120470d000b200241d0056a41086a200241086a41086a290300370300200241d0056a41106a200241086a41106a290300370300200241d0056a41186a200241086a41186a290300370300200220022903083703d00541002107200241003a0028200420086a210b2006416e6a210a200320086b416f6a210c2003210d0340200c2007460d02200241086a20076a200b20076a220e41116a2d00003a00002001200a3602042001200e41126a3602002002200741016a220e3a0028200a417f6a210a200d417f6a210d200e2107200e4120470d000b20024190076a41086a220d200241086a41086a29030037030020024190076a41106a220c200241086a41106a29030037030020024190076a41186a220f200241086a41186a29030037030020022002290308370390072006200e6b220a416f6a4104490d122008200e6a2107200b200e6a220641116a280000210b2001200a416b6a360204200241f0066a41086a200d290300370300200241f0066a41106a200c290300370300200241f0066a41186a200f2903003703002001200641156a36020020022002290390073703f00641002106200241003a00482003416b6a210e200441156a210d200a416a6a21080340200e2007460d03200241086a20066a200d20076a220a2d00003a0000200120083602042001200a41016a3602002002200641016a220a3a00482008417f6a2108200741016a2107200a2106200a41c000470d000b200241d0076a41386a200241086a41386a2903002210370300200241d0076a41306a200241086a41306a2903002211370300200241d0076a41286a200241086a41286a2903002212370300200241d0076a41206a200241086a41206a2903002213370300200241f0056a41086a200241086a41086a290300370300200241f0056a41106a200241086a41106a290300370300200241f0056a41186a200241086a41186a290300370300200241f0056a41206a2013370300200241f0056a41286a2012370300200241f0056a41306a2011370300200241f0056a41386a2010370300200220022903083703f005200241d0066a41186a2206200241f0066a41186a290300370300200241d0066a41106a2208200241f0066a41106a290300370300200241d0066a41086a220a200241f0066a41086a290300370300200220022903f0063703d006200241b0066a41186a2006290300370300200241b0066a41106a2008290300370300200241b0066a41086a200a290300370300200220022903d0063703b00641002106200241003a0028200420076a41156a2104200320076b41666a210703402007417b460d04200241086a20066a20042d00003a00002001200741046a3602042001200441016a22043602002002200641016a22083a00282007417f6a21072008210620084120470d000b20024190076a41086a2208200241086a41086a29030037030020024190076a41106a2203200241086a41106a29030037030020024190076a41186a220a200241086a41186a2903003703002002200229030837039007200741056a4104490d052004280000210e2001200741016a3602042001200441046a2206360200200241f0066a41086a2008290300370300200241f0066a41106a2003290300370300200241f0066a41186a200a29030037030020022002290390073703f00641002104200241003a004803402007417f460d05200241086a20046a20062d00003a0000200120073602042001200641016a22063602002002200441016a22083a00482007417f6a210720082104200841c000470d000b200241d0076a41386a200241086a41386a2903002210370300200241d0076a41306a200241086a41306a2903002211370300200241d0076a41286a200241086a41286a2903002212370300200241d0076a41206a200241086a41206a2903002213370300200241d0076a41186a200241086a41186a290300221437030020024190046a41086a2201200241086a41086a29030037030020024190046a41106a2207200241086a41106a29030037030020024190046a41186a2204201437030020024190046a41206a2206201337030020024190046a41286a2208201237030020024190046a41306a2203201137030020024190046a41386a220a20103703002002200229030837039004200241d0066a41186a220d200241f0066a41186a290300370300200241d0066a41106a220c200241f0066a41106a290300370300200241d0066a41086a220f200241f0066a41086a290300370300200220022903f0063703d006200241d0046a41186a2215200d290300370300200241d0046a41106a220d200c290300370300200241d0046a41086a220c200f290300370300200220022903d0063703d004200241f0036a41186a220f200241d0056a41186a290300370300200241f0036a41106a2216200241d0056a41106a290300370300200241f0036a41086a2217200241d0056a41086a290300370300200220022903d0053703f003200241b0056a41186a2218200241b0066a41186a290300370300200241b0056a41106a2219200241b0066a41106a290300370300200241b0056a41086a221a200241b0066a41086a290300370300200220022903b0063703b005200241f0046a41386a221b200241f0056a41386a290300370300200241f0046a41306a221c200241f0056a41306a290300370300200241f0046a41286a221d200241f0056a41286a290300370300200241f0046a41206a221e200241f0056a41206a290300370300200241f0046a41186a221f200241f0056a41186a290300370300200241f0046a41106a2220200241f0056a41106a290300370300200241f0046a41086a2221200241f0056a41086a290300370300200220022903f0053703f004200241f8016a41106a200b3602002002200937038002200241a4026a20182903003702002002419c026a201929030037020020024194026a201a290300370200200220022903b00537028c02200241e4026a201b290300370200200241dc026a201c290300370200200241d4026a201d290300370200200241cc026a201e290300370200200241c4026a201f290300370200200241bc026a2020290300370200200241b4026a2021290300370200200220022903f0043702ac02200241ec026a200e36020020024188036a201529030037030020024180036a200d290300370300200241f8026a200c290300370300200241f0026a20022903d004370300200241c8036a200a290300370300200241c0036a2003290300370300200241b8036a2008290300370300200241b0036a2006290300370300200241a8036a2004290300370300200241a0036a200729030037030020024198036a200129030037030020024190036a200229039004370300200241e8036a200f290300370300200241e0036a2016290300370300200241d8036a2017290300370300200241d0036a20022903f00337030042002109200242003703f801200241f8016a41086a21010c070b0240200741ff0171450d00200241003a00280b200242013703f8010c120b200741ff0171450d10200241003a00280c100b200641ff0171450d0f200241003a00480c0f0b200641ff0171450d01200241003a00280c010b200441ff0171450d00200241003a00480b200242013703f8010c0d0b20084108490d092007290001210920012003416f6a220a3602042001200741096a36020041002107200241003a0028200321060340200a2007460d02200241086a20076a200420076a220841116a2d00003a000020012006416e6a3602042001200841126a3602002002200741016a22083a00282006417f6a21062008210720084120470d000b200241d0056a41086a200241086a41086a290300370300200241d0056a41106a200241086a41106a290300370300200241d0056a41186a200241086a41186a290300370300200220022903083703d00541002107200241003a0028200420086a210b2006416e6a210a200320086b416f6a210c2003210d0340200c2007460d03200241086a20076a200b20076a220e41116a2d00003a00002001200a3602042001200e41126a3602002002200741016a220e3a0028200a417f6a210a200d417f6a210d200e2107200e4120470d000b20024190076a41086a220d200241086a41086a29030037030020024190076a41106a220c200241086a41106a29030037030020024190076a41186a220f200241086a41186a29030037030020022002290308370390072006200e6b220a416f6a4104490d0a2008200e6a2107200b200e6a220641116a280000210b2001200a416b6a360204200241f0066a41086a200d290300370300200241f0066a41106a200c290300370300200241f0066a41186a200f2903003703002001200641156a36020020022002290390073703f00641002106200241003a00482003416b6a210e200441156a210d200a416a6a21080340200e2007460d04200241086a20066a200d20076a220a2d00003a0000200120083602042001200a41016a3602002002200641016a220a3a00482008417f6a2108200741016a2107200a2106200a41c000470d000b200241d0076a41386a200241086a41386a2903002210370300200241d0076a41306a200241086a41306a2903002211370300200241d0076a41286a200241086a41286a2903002212370300200241d0076a41206a200241086a41206a2903002213370300200241f0056a41086a200241086a41086a290300370300200241f0056a41106a200241086a41106a290300370300200241f0056a41186a200241086a41186a290300370300200241f0056a41206a2013370300200241f0056a41286a2012370300200241f0056a41306a2011370300200241f0056a41386a2010370300200220022903083703f005200241d0066a41186a2206200241f0066a41186a290300370300200241d0066a41106a2208200241f0066a41106a290300370300200241d0066a41086a220a200241f0066a41086a290300370300200220022903f0063703d006200241b0066a41186a2006290300370300200241b0066a41106a2008290300370300200241b0066a41086a200a290300370300200220022903d0063703b00641002106200241003a0028200420076a41156a2104200320076b41666a210703402007417b460d05200241086a20066a20042d00003a00002001200741046a3602042001200441016a22043602002002200641016a22083a00282007417f6a21072008210620084120470d000b20024190076a41086a2208200241086a41086a29030037030020024190076a41106a2203200241086a41106a29030037030020024190076a41186a220a200241086a41186a2903003703002002200229030837039007200741056a4104490d062004280000210e2001200741016a3602042001200441046a2206360200200241f0066a41086a2008290300370300200241f0066a41106a2003290300370300200241f0066a41186a200a29030037030020022002290390073703f00641002104200241003a004803402007417f460d06200241086a20046a20062d00003a0000200120073602042001200641016a22063602002002200441016a22083a00482007417f6a210720082104200841c000470d000b200241d0076a41386a200241086a41386a2903002210370300200241d0076a41306a200241086a41306a2903002211370300200241d0076a41286a200241086a41286a2903002212370300200241d0076a41206a200241086a41206a2903002213370300200241d0076a41186a200241086a41186a290300221437030020024190046a41086a2201200241086a41086a29030037030020024190046a41106a2207200241086a41106a29030037030020024190046a41186a2204201437030020024190046a41206a2206201337030020024190046a41286a2208201237030020024190046a41306a2203201137030020024190046a41386a220a20103703002002200229030837039004200241d0066a41186a220d200241f0066a41186a290300370300200241d0066a41106a220c200241f0066a41106a290300370300200241d0066a41086a220f200241f0066a41086a290300370300200220022903f0063703d006200241d0046a41186a2215200d290300370300200241d0046a41106a220d200c290300370300200241d0046a41086a220c200f290300370300200220022903d0063703d004200241f0036a41186a220f200241d0056a41186a290300370300200241f0036a41106a2216200241d0056a41106a290300370300200241f0036a41086a2217200241d0056a41086a290300370300200220022903d0053703f003200241b0056a41186a2218200241b0066a41186a290300370300200241b0056a41106a2219200241b0066a41106a290300370300200241b0056a41086a221a200241b0066a41086a290300370300200220022903b0063703b005200241f0046a41386a221b200241f0056a41386a290300370300200241f0046a41306a221c200241f0056a41306a290300370300200241f0046a41286a221d200241f0056a41286a290300370300200241f0046a41206a221e200241f0056a41206a290300370300200241f0046a41186a221f200241f0056a41186a290300370300200241f0046a41106a2220200241f0056a41106a290300370300200241f0046a41086a2221200241f0056a41086a290300370300200220022903f0053703f004200241f8016a41106a200b3602002002200937038002200241a4026a20182903003702002002419c026a201929030037020020024194026a201a290300370200200220022903b00537028c02200241e4026a201b290300370200200241dc026a201c290300370200200241d4026a201d290300370200200241cc026a201e290300370200200241c4026a201f290300370200200241bc026a2020290300370200200241b4026a2021290300370200200220022903f0043702ac02200241ec026a200e36020020024188036a201529030037030020024180036a200d290300370300200241f8026a200c290300370300200241f0026a20022903d004370300200241c8036a200a290300370300200241c0036a2003290300370300200241b8036a2008290300370300200241b0036a2006290300370300200241a8036a2004290300370300200241a0036a200729030037030020024198036a200129030037030020024190036a200229039004370300200241e8036a200f290300370300200241e0036a2016290300370300200241d8036a2017290300370300200241d0036a20022903f003370300200242003703f801200241f8016a41086a2101420121090b200241086a200141f00110e4071a2000200937030820002005370300200041106a200241086a41f00110e4071a0c0c0b0240200741ff0171450d00200241003a00280b200242013703f8010c0a0b200741ff0171450d07200241003a00280c070b200641ff0171450d06200241003a00480c060b200641ff0171450d01200241003a00280c010b200441ff0171450d00200241003a00480b200242013703f8010c050b200042023703080c050b200242013703f8010c030b200242013703f8010c020b200242013703f8010c010b200242013703f8010b200042023703080b20024190086a24000ba90201067f230041106b22022400024002400240200128020422034104490d0020012802002204280000210520012003417c6a3602042001200441046a36020020022001109e04200228020022030d01200041003602040c020b200041003602040c010b200241086a2802002106200228020421040240200128020422074104490d002000200436020820002003360204200020053602002000410c6a200636020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c010b2000410036020402402006450d002006410c6c21002003210103400240200141046a280200450d00200128020010290b2001410c6a2101200041746a22000d000b0b2004450d002004410c6c450d00200310290b200241106a24000bb01f050a7f037e077f017e177f23004180056b2202240020024180026a41e6d2cdc306109f032002280280022103200228028402210402400240024020022802880222050d004101210641002107410021080c010b02400240024020054105742208410575220941ffffff3f712009470d0020084100480d0020080d01410121060c020b1032000b200810272206450d020b200320086a210a2005410574210b20084105762107410021080340200320086a2205290000210c200541086a290000210d200541106a290000210e200620086a220941186a200541186a290000370000200941106a200e370000200941086a200d3700002009200c370000200b200841206a2208470d000b200a20036b41606a41057641016a21080b0240200441ffffff3f71450d00200310290b200620084105746a210f0240024020012802002210450d0020024100360208200241003602000240024002402008450d00200241c8016a41026a211120024180026a4102722112200241c8016a4101722113200241f8016a211441002108200621150340201541186a290000210d201541106a290000210e2015290000210c200241106a41086a201541086a2900002216370300200241106a41106a200e370300200241106a41186a200d3703002002200c370380022002200c3703102013200c370000201341086a2016370000201341106a200e370000201341186a200d370000200241013a00c801201341206a200241106a41206a2d00003a0000024002402008450d00200228020421050c010b20024180026a410041f60210e6071a41800310272208450d0741002105200841003b010620084100360200200841086a20024180026a41f60210e4071a20024100360204200220083602000b2002200836025c200220053602582002200236026020024180026a200241d8006a200241c8016a10e90402400240024002402002280280024101470d002002280290022108200228028c02211720022802880221182002280284022119200241d8006a41206a2205200241c8016a41206a221a2f01003b0100200241d8006a41186a2204200241c8016a41186a221b290300370300200241d8006a41106a220a200241c8016a41106a221c290300370300200241d8006a41086a221d200241c8016a41086a221e290300370300200220022903c8013703582002200228020841016a360208201a20052f01003b0100201b2004290300370300201c200a290300370300201e201d290300370300200220022903583703c801024020182f01062204410b490d0020024180026a410041f60210e6071a41800310272205450d0b200541003b010620054100360200200541086a20024180026a41f60210e40721092002201841d4016a2f00003b01c4012002201841d6016a2d00003a00c6012002201841e7016a290000370380022002201841ee016a29000037008702201841d7016a280000211f201841db016a2800002120201841df016a2800002121201841e3016a28000021222009201841f6016a20182f010641796a220341226c10e4072109201841063b0106200520033b0106200241c0016a41026a222320022d00c6013a0000200220022f01c4013b01c00120022002290380023703b00120022002290087023700b7010240024020084107490d00200841226c20096a220941b47e6a200941927e6a2209200341ffff037120086b41226c41ee016a10e5071a200941206a201a2f01003b0000200941186a201b290300370000200941106a201c290300370000200941086a201e290300370000200920022903c801370000200520052f010641016a3b01060c010b201841086a200841226c6a220941226a200920182f010620086b41226c10e5071a200941206a201a2f01003b0000200941186a201b290300370000200941106a201c290300370000200941086a201e290300370000200920022903c801370000201820182f010641016a3b01060b200241ac016a41026a20232d000022083a000020024194016a41026a222420083a0000200220022900b70137009f01200220022903b00137039801200220022f01c00122083b01ac012002200229009f0137008701200220022903980137038001200220083b0194010240201828020022040d0041002108200521090c040b20182f010421254100210820052126201921270340202320242d00003a0000200220022f0194013b01c001200220022903800137039801200220022900870137009f0120272008470d03202541ffff0371210b02400240024020042f01062208410b490d002012410041f80210e6071a201141286a4200370100201141206a4200370100201141186a4200370100201141106a4200370100201141086a42003701002011420037010041b00310272209450d0f20094100360200200941046a20024180026a41fa0210e4071a200941ae036a20142f01003b0100200941a6036a200241c8016a41286a2901003701002009419e036a201a29010037010020094196036a201b2901003701002009418e036a201c29010037010020094186036a201e290100370100200920022901c8013701fe02200241b0016a41026a221d200441d6016a2d00003a00002002200441d4016a2f00003b01b0012002200441e7016a290000370380022002200441ee016a29000037008702200441d7016a2800002128200441db016a2800002129200441df016a280000212a200441e3016a280000212b200941086a200441f6016a20042f0106220841796a220541226c10e407212c20094180036a2004419c036a2008417a6a220a41027410e407212d200441063b0106200920053b01060240200a450d0041002108202d210503402005280200220320083b010420032009360200200541046a2105200a200841016a2208470d000b0b200220022f01b00122083b01c40120022002290380023703c80120022002290087023700cf012002201d2d000022053a00c601201d20053a0000200220083b01b001200220022903c80137038002200220022900cf0137008702202541ffff037122054107490d01200b41226c202c6a220841b47e6a200841927e6a220820092f0106200b6b41226c41ee016a10e5071a2008202236000f2008202136000b200820203600072008201f360003200841026a20232d00003a0000200820022f01c0013b000020082002290398013700132008411a6a200229009f01370000200920092f010641016a22053b0106200b4102742225202d6a416c6a202d200b417a6a22084102746a2203200541ffff0371220a20086b41027410e5071a20032026360200200a2008490d02200b41796a2108200920256a41e8026a2105034020052802002203200841016a22083b010420032009360200200541046a21052008200a490d000c030b0b2004200b41226c6a2205412a6a200541086a22092008200b6b41226c10e5071a200541176a2022360000200541136a20213600002005410f6a20203600002005410b6a201f3600002005410a6a20232d00003a0000200920022f01c0013b00002005411b6a200229039801370000200541226a200229009f01370000200420042f010641016a22053b0106200b41027420044180036a22096a41086a2009200b41016a22084102746a2209200541ffff0371220320086b41027410e5071a20092026360200200b20034f0d0720042008417f6a22084102746a4184036a2105034020052802002209200841016a22083b010420092004360200200541046a210520082003490d000c080b0b200441086a200b41226c6a220841226a200820042f0106200b6b41226c10e5071a2008202236000f2008202136000b200820203600072008201f360003200841026a20232d00003a0000200820022f01c0013b000020082002290398013700132008411a6a200229009f01370000200420042f010641016a22083b0106200b410274222d20044180036a22036a41086a2003200b41016a220a4102746a2225200841ffff03712203200a6b41027410e5071a20252026360200200520034f0d002004202d6a4184036a2108034020082802002205200b41016a220b3b010420052004360200200841046a21082003200b470d000b0b202741016a21082024201d2d00003a0000200220022f01b0013b0194012002200229038002370380012002200229008702370087010240200428020022050d0020292120202a2121202b21222028211f0c050b20042f0104212520292120202a2121202b21222028211f2005210420092126200821270c000b0b2018200841226c6a2205412a6a200541086a220a200420086b41226c10e5071a200541286a201a2f01003b0000200541206a201b290300370000200541186a201c290300370000200541106a201e290300370000200a20022903c801370000201820182f010641016a3b01060b2009211920032118200b21170c020b41cc9ec800413541b8a1cc001033000b2012410041f80210e6071a201141286a4200370100201141206a4200370100201141186a4200370100201141106a4200370100201141086a42003701002011420037010041b00310272205450d0720054100360200200541046a20024180026a41fa0210e4071a200541ae036a20142f01003b0100200541a6036a200241c8016a41286a2901003701002005419e036a201a29010037010020054196036a201b2901003701002005418e036a201c29010037010020054186036a201e290100370100200520022901c8013701fe02200520172802002203360280032017200536020020172017280204220b41016a360204200341003b010420032005360200201120242d00003a0000200220022903800137038002200220022900870137008702200220022f0194013b01c801200b2008470d0320052f01062203410a4b0d042005200341226c6a2208410a6a20112d00003a0000200841086a20022f01c8013b0000200841176a2022360000200841136a20213600002008410f6a20203600002008410b6a201f3600002008411b6a200229038002370000200841226a2002290087023700002005200341016a22084102746a4180036a2009360200200520083b0106200920083b0104200920053602000b201541206a2215200f460d012002280200210820192109201821032017210b0c000b0b02402007450d00200610290b200241c8016a41086a200241086a280200220836020020022002290300220c3703c80120024180026a41086a220520083602002002200c37038002200141086a2802002109411810272208450d042008410036020820082010360200200820022903800237020c20082010200941226c6a360204200841146a200528020036020041a4f5c90021050c030b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000b411410272208450d01200841003602102008200f36020c200820063602082008200736020420082006360200418cf3c90021050b200020053602042000200836020020024180056a24000f0b1030000b9d3505027f047e087f017e027f230041a01c6b2203240020012802002101200341106a200241c80010e4071a20012802002802002204280200220241106a220129030021052002290300210620022903082107200341a0106a41186a200241f8016a290000370300200341a0106a41106a200241f0016a290000370300200341a8106a200241e8016a2900003703002003200241e0016a2900003703a010420121080240024020074201520d00200341f0126a410c6a200141146a290000370200200341f0126a41146a2001411c6a290000370200200341f0126a411c6a200141246a290000370200200341f0126a412c6a200141346a290000370200200341f0126a41346a2001413c6a290000370200200341f0126a413c6a200141c4006a290000370200200341f0126a41c4006a200141cc006a290000370200200341f0126a41cc006a200141d4006a290000370200200341f0126a41d4006a200141dc006a290000370200200341f0126a41dc006a200141e4006a29000037020020032001410c6a2900003702f4122003200241186a2802003602f01220032001412c6a29000037029413200341900a6a410c6a20024188016a290000370200200341900a6a41146a20024190016a290000370200200341900a6a411c6a20024198016a290000370200200320024180016a2900003702940a2003200228027c3602900a200341900a6a2101200341f0126a21090c010b200341f0126a410c6a200141146a290000370200200341f0126a41146a2001411c6a290000370200200341f0126a411c6a200141246a290000370200200341f0126a412c6a200141346a290000370200200341f0126a41346a2001413c6a290000370200200341f0126a413c6a200141c4006a290000370200200341f0126a41c4006a200141cc006a290000370200200341f0126a41cc006a200141d4006a290000370200200341f0126a41d4006a200141dc006a290000370200200341f0126a41dc006a200141e4006a29000037020020032001410c6a2900003702f4122003200241186a2802003602f01220032001412c6a29000037029413200341900a6a410c6a20024188016a290000370200200341900a6a41146a20024190016a290000370200200341900a6a411c6a20024198016a290000370200200320024180016a2900003702940a2003200228027c3602900a42002108200341900a6a2101200341f0126a21090b200141dc006a200241d8016a290000370000200141d4006a200241d0016a290000370000200141cc006a200241c8016a290000370000200141c4006a200241c0016a2900003700002001413c6a200241b8016a290000370000200141346a200241b0016a2900003700002001412c6a200241a8016a2900003700002001200241a0016a290000370024200341e8006a41086a200341a0106a41086a290300370300200341e8006a41106a200341a0106a41106a290300370300200341e8006a41186a200341a0106a41186a290300370300200320032903a010370368200341f0016a200941e40010e4071a20034188016a200141e40010e4071a200428020422022802002109200341d8006a200241046a10b5042002280210210a200341a0106a200341106a410472220b10a802200341900a6a20032802a010220220032802a81010a902200341f0126a41086a2201200341900a6a41106a290300370300200341f0126a41106a2204200341900a6a41186a290300370300200341f0126a41186a220c200341900a6a41206a290300370300200341f0126a41206a220d200341900a6a41286a290300370300200341f0126a41286a220e200341900a6a41306a290300370300200341f0126a41306a220f200341900a6a41386a290300370300200341f0126a41386a2210200341d00a6a290300370300200320032903980a3703f0120240024020032903900a4201510d00200341d8026a41386a4200370300200341d8026a41306a4200370300200341d8026a41286a4200370300200341d8026a41206a4200370300200341d8026a41186a4200370300200341d8026a41106a4200370300200341d8026a41086a4200370300200342003703d80241002110410021040c010b200341d8026a41086a2001290300370300200341d8026a41106a2004290300370300200341d8026a41186a200c290300370300200341d8026a41206a200d290300370300200341d8026a41286a200e290300370300200341d8026a41306a200f290300370300200341d8026a41386a2010290300370300200320032903f0123703d802200341d80a6a280200210420032802dc0a21100b024020032802a410450d00200210290b200341e0086a200341f0016a41e40010e4071a200341fc076a20034188016a41e40010e4071a200341d8076a41186a200341e8006a41186a290300370300200341d8076a41106a200341e8006a41106a290300370300200341d8076a41086a200341e8006a41086a290300370300200341c8076a41086a200341d8006a41086a280200360200200320032903683703d807200320032903583703c807024002400240024020032d00340e03010200010b200341e8096a200341d5006a2d00003a0000200341c8096a41186a200341cd006a290000370300200341c8096a41106a200341c5006a290000370300200341c8096a41086a2003413d6a2900003703002003200341356a2900003703c8094102210f0c020b200341c8096a41186a200341cd006a290000370300200341c8096a41106a200341c5006a290000370300200341c8096a41086a2003413d6a2900003703002003200341356a2900003703c8094100210f0c010b200341c8096a41186a200341cd006a290000370300200341c8096a41106a200341c5006a290000370300200341c8096a41086a2003413d6a2900003703002003200341356a2900003703c8094101210f0b200341f0096a41186a2003412c6a290200370300200341f0096a41106a200341246a290200370300200341f0096a41086a2003411c6a290200370300200320032902143703f009200341900a6a41186a4200370300200341900a6a41106a220c4200370300200341900a6a41086a22024200370300200342003703900a41b3e6ca00ad4280808080e000841001220129000021072002200141086a290000370300200320073703900a2001102941c9e6ca00ad4280808080e00084100122012900002107200341a0176a41086a220d200141086a290000370300200320073703a01720011029200c20032903a0172207370300200341f0126a41086a22012002290300370300200341f0126a41106a22022007370300200341f0126a41186a220c200d290300370300200320032903900a3703f012200341086a200341f0126a412010fc01200328020c210d2003280208210e200c200537030020022008370300200120063703002003410b3602f012200341f0126a41206a200341e0086a41e40010e4071a200341f4136a200341fc076a41e40010e4071a200341f8146a200936020020034188156a200a360200200341f0146a200341d8076a41186a290300370300200341e8146a200341d8076a41106a290300370300200341e0146a200341d8076a41086a290300370300200341d8146a20032903d807370300200341fc146a20032903c80737020020034184156a200341c8076a41086a2802003602002003418c156a20032902bc0737020020034194156a200341bc076a41086a280200360200200341b81a6a41206a22014200370300200341b81a6a41106a22094200200d4100200e1bad2208427f7c220520052008561b42ff0f83370300200342003703d01a200320043602e01a20034280103703c01a42012105200342013703b81a200341b01b6a200341b81a6a10820620032d00b01b210220032f00b11b210a20032d00b31b210c200341c8196a200341b01b6a41047241c80010e4071a0240024020024101470d00200341f0126a10cc012003200a200c4110747222023b01c819200320024110763a00ca19024041002802d8a74c4102490d002003411b3602b41b2003200341c8196a3602b01b41002802888040210241002802848040210141002802dca74c2109200341b0136a41ef04360200200341a8136a42b480808010370300200341a4136a4198a5c7003602002003419c136a421037020020034198136a4188a5c70036020020034190136a4201370300200341f0126a41106a4201370300200341f8126a41103602002003418c136a200341b01b6a36020020034180a5c7003602fc1220034188a5c7003602f412200341023602f01220014180a4c000200941024622091b200341f0126a20024198a4c00020091b2802101102000b420221050c010b200341e81a6a200341c8196a41c80010e4071a200341b01b6a41206a200341b81a6a41286a290300370300200341b01b6a41186a2001290300370300200341b01b6a41106a200341b81a6a41186a290300370300200341b01b6a41086a2009290300370300200320032903c01a3703b01b200341b01b6a41286a200341e81a6a41c80010e4071a200341900a6a41046a200341f0126a41a80210e4072102200341c8196a200341b01b6a41f00010e4071a200341f0126a200241a80210e4071a200341a0176a200341f0126a41a80210e4071a200341b0166a200341c8196a41f00010e4071a0b200341f0126a200341a0176a41a80210e4071a200341b01b6a200341b0166a41f00010e4071a4202210802400240024020054202510d00200341900a6a200341f0126a41a80210e4071a200341c0156a200341b01b6a41f00010e4071a200320053703b80c200341c00c6a200341c0156a41f00010e4072101200341b0166a41206a200341c8096a41206a2d00003a0000200341b0166a41186a200341c8096a41186a290300370300200341b0166a41106a200341c8096a41106a290300370300200341b0166a41086a200341c8096a41086a290300370300200320032903c8093703b016410810272202450d02200342083702f412200320023602f012200341900a6a200341f0126a10bf02200341900a6a41a8026a200341f0126a10be02200341e80c6a200341f0126a10800620032802f412210a20032802f012210902400240024020032802f81222024180024b0d00200341f0126a41206a200341b0166a41206a2d00003a0000200341f0126a41186a220c200341b0166a41186a290300370300200341f0126a41106a220d200341b0166a41106a290300370300200341f0126a41086a220e200341b0166a41086a290300370300200320032903b0163703f012200f4101470d01200341b01b6a41186a200c2903002208370300200341b01b6a41106a200d2903002205370300200341e81a6a41106a2005370300200341e81a6a41186a2008370300200341e81a6a41086a200e2903002206370300200320032903f01222073703e81a200341c0156a41186a2008370300200341c0156a41106a2005370300200341c0156a41086a2006370300200320073703c015200341f0126a41e6d2cdc306200341c0156a2009200210950620032d00f0124101470d01200341b01b6a41386a200341a9136a2900002208370300200341b01b6a41306a200341a1136a2900002205370300200341b01b6a41286a20034199136a2900002206370300200341b01b6a41206a20034191136a2900002207370300200341b01b6a41186a20034189136a2900002211370300200341c8196a41086a2202200341f9126a290000370300200341c8196a41106a220c20034181136a290000370300200341c8196a41186a220d2011370300200341c8196a41206a220e2007370300200341c8196a41286a220f2006370300200341c8196a41306a22122005370300200341c8196a41386a22132008370300200320032900f1123703c819200341a0176a41386a2013290300370300200341a0176a41306a2012290300370300200341a0176a41286a200f290300370300200341a0176a41206a200e290300370300200341a0176a41186a200d290300370300200341a0176a41106a200c290300370300200341a0176a41086a2002290300370300200320032903c8193703a017410121020c020b2002ad4220862009ad84101022022900002108200241086a2900002105200241106a2900002106200341b81a6a41186a200241186a290000370300200341b81a6a41106a2006370300200341b81a6a41086a2005370300200320083703b81a20021029200341f0126a41206a200341b0166a41206a2d00003a0000200341f0126a41186a2202200341b0166a41186a290300370300200341f0126a41106a220c200341b0166a41106a290300370300200341f0126a41086a220d200341b0166a41086a290300370300200320032903b0163703f012200f4101470d00200341b01b6a41186a20022903002208370300200341b01b6a41106a200c2903002205370300200341e81a6a41106a2005370300200341e81a6a41186a2008370300200341e81a6a41086a200d2903002206370300200320032903f01222073703e81a200341c0156a41186a2008370300200341c0156a41106a2005370300200341c0156a41086a2006370300200320073703c015200341f0126a41e6d2cdc306200341c0156a200341b81a6a412010950620032d00f0124101470d00200341b01b6a41386a200341a9136a2900002208370300200341b01b6a41306a200341a1136a2900002205370300200341b01b6a41286a20034199136a2900002206370300200341b01b6a41206a20034191136a2900002207370300200341b01b6a41186a20034189136a2900002211370300200341c8196a41086a2202200341f9126a290000370300200341c8196a41106a220c20034181136a290000370300200341c8196a41186a220d2011370300200341c8196a41206a220e2007370300200341c8196a41286a220f2006370300200341c8196a41306a22122005370300200341c8196a41386a22132008370300200320032900f1123703c819200341a0176a41386a2013290300370300200341a0176a41306a2012290300370300200341a0176a41286a200f290300370300200341a0176a41206a200e290300370300200341a0176a41186a200d290300370300200341a0176a41106a200c290300370300200341a0176a41086a2002290300370300200320032903c8193703a017410121020c010b410321020b0240200a450d00200910290b200341f0126a200341a0176a41c10010e4071a024020024103460d00200341fb066a200341f0126a41c10010e4071a20032903b80c2108200341f0126a200341900a6a41a80210e4071a200341d0066a41206a200141206a290300370300200341d0066a41186a200141186a290300370300200341d0066a41106a200141106a290300370300200341d0066a41086a200141086a290300370300200341a0156a200341f0096a41086a290300370300200341a8156a200341f0096a41106a290300370300200341b0156a200341f0096a41186a290300370300200320012903003703d006200320032903f00937039815200341a0106a200341f0126a41c80210e4071a0c020b200341900a6a10cc01420221080b0b200341900a6a200341a0106a41c80210e4071a200341f0126a200341fb066a41c10010e4071a200341a0176a41206a2201200341d0066a41206a290300370300200341a0176a41186a2209200341d0066a41186a290300370300200341a0176a41106a220a200341d0066a41106a290300370300200341a0176a41086a220c200341d0066a41086a290300370300200320032903d0063703a01702400240024020084202510d00200341d00d6a200341900a6a41c80210e4071a200341c7036a200341f0126a41c10010e4071a20034198036a41206a220d200129030037030020034198036a41186a2201200929030037030020034198036a41106a2209200a29030037030020034198036a41086a220a200c290300370300200320032903a0173703980320034188046a200341d00d6a41c80210e4071a200341a0176a200341d00d6a41a80210e4071a200341c0156a41086a220c200341b8066a290300370300200341c0156a41106a220e200341c0066a290300370300200341c0156a41186a220f200341c8066a290300370300200320032903b0063703c015200341b01b6a200341c7036a41c10010e4071a200341c8196a41206a2212200d290300370300200341c8196a41186a220d2001290300370300200341c8196a41106a22012009290300370300200341c8196a41086a2209200a29030037030020032003290398033703c819200341b0166a41086a200c290300370300200341b0166a41106a200e290300370300200341b0166a41186a200f290300370300200320032903c0153703b01620034188046a200341b01b6a41c10010e4071a200341f0126a41206a2012290300370300200341f0126a41186a200d290300370300200341f0126a41106a2001290300370300200341f0126a41086a2009290300370300200320032903c8193703f01220034198136a200341a0176a41a80210e4071a200341a0106a200341f0126a41d00210e4071a20084203520d01410121020c020b410221020c010b200341900a6a41186a2209200341b0166a41186a290300370300200341900a6a41106a220a200341b0166a41106a290300370300200341900a6a41086a220c200341b0166a41086a290300370300200320032903b0163703900a200320023a00b00a200341b10a6a20034188046a41c10010e4071a200341f60a6a200341e4086a2f01003b0100200320032801e0083601f20a200341d00d6a200341a0106a41d00210e4071a200320083703f80a200341800b6a200341d00d6a41d00210e4071a2003200341900a6a3602a010200341f0126a200341a0106a10bd0220032802f01220032802f41220032802f81210de022101200341a80b6a10cc014101210220010d00200341900a6a41386a200341d8026a41386a290300370300200341900a6a41306a200341d8026a41306a290300370300200341900a6a41286a200341d8026a41286a290300370300200341900a6a41206a200341d8026a41206a2903003703002009200341d8026a41186a290300370300200a200341d8026a41106a290300370300200c200341d8026a41086a290300370300200320032903d8023703900a200320103602d40a2003200441016a3602d00a200b200341900a6a10c502410021020b200341900a6a200341106a41c80010e4071a41022101024020024102460d002000200341900a6a41c80010e4071a200241017121010b200020013a0048200341a01c6a24000f0b1039000b040041000b0d00200141fcacc7004102104d0bcc3508047f017e017f017e027f027e117f057e230041f0046b22022400024002400240024002400240024020014108490d0041002103200241003a00a00320004180a6cc0020011b41086a2100200141786a2104034020042003460d0720024180036a20036a200020036a2d00003a00002002200341016a22013a00a0032001210320014120470d000b200241086a41186a20024180036a41186a22052903002206370300200241086a41106a20024180036a41106a2207290300220837030041082109200241086a41086a20024180036a41086a220a290300220b3703002002200229038003220c370308200241286a41186a2006370300200241286a41106a2008370300200241286a41086a200b3703002002200c3703282005420037030020074200370300200a4200370300200242003703800341b1dcc900ad4280808080f000842206100122032900002108200a200341086a290000370300200220083703800320031029418886ca00ad4280808080c00184100122012900002108200241a0026a41086a2203200141086a290000370300200220083703a00220011029200720022903a0022208370300200241c8006a41086a2200200a290300370300200241c8006a41106a22042008370300200241c8006a41186a220d200329030037030020022002290380033703482002200241c8006a412010fc012002280204210e2002280200210f2005420037030020074200370300200a420037030020024200370380032006100122012900002106200a200141086a29000037030020022006370380032001102941b8dcc900ad4280808080a001841001220129000021062003200141086a290000370300200220063703a00220011029200720022903a00222063703002000200a29030037030020042006370300200d2003290300370300200220022903800337034820024180036a200241c8006a108d02200229028403420020022802800322031b2206a721102003410120031b211102402006422088a72203450d00200341057441406a210020024180036a41206a211220112103034020024190046a41186a2201200341186a220429000037030020024190046a41106a220d200341106a221329000037030020024190046a41086a2214200341086a22152900003703002002200329000037039004200241b0046a41186a22162004290000370300200241b0046a41106a22042013290000370300200241b0046a41086a22132015290000370300200220032900003703b004200520012903003703002007200d290300370300200a2014290300370300200220022903900437038003200241c0016a20024180036a10a002200241d0046a41186a2016290300370300200241d0046a41106a2004290300370300200241d0046a41086a2013290300370300200220022903b0043703d004024020022802e0012201450d00201220022903c001370300201241186a200241c0016a41186a290300370300201241106a200241c0016a41106a290300370300201241086a200241c0016a41086a29030037030020024180036a41186a2204200241d0046a41186a29030037030020024180036a41106a220d200241d0046a41106a29030037030020024180036a41086a2213200241d0046a41086a290300370300200220022903d00437038003200241c0016a41286a290300210620022802e4012107200241a0026a41386a220520024180036a41386a2214290300370300200241a0026a41306a220920024180036a41306a2215290300370300200241a0026a41286a221220024180036a41286a2216290300370300200241a0026a41206a221720024180036a41206a220a290300370300200241a0026a41186a22182004290300370300200241a0026a41106a2219200d290300370300200241a0026a41086a221a201329030037030020022002290380033703a002200241c8006a41386a221b2005290300370300200241c8006a41306a22052009290300370300200241c8006a41286a22092012290300370300200241c8006a41206a22122017290300370300200241c8006a41186a22172018290300370300200241c8006a41106a22182019290300370300200241c8006a41086a2219201a290300370300200220022903a0023703482014201b2903003703002015200529030037030020162009290300370300200a201229030037030020042017290300370300200d201829030037030020132019290300370300200220022903483703800341d00010272209450d062009200229038003370300200920063702482009200736024420092001360240200941386a2014290300370300200941306a2015290300370300200941286a2016290300370300200941206a200a290300370300200941186a2004290300370300200941106a200d290300370300200941086a20132903003703002002428180808010370284042002200936028004024020004160470d00410121140c050b200341206a210320024180036a41206a210441012114034020024190046a41186a220d200341186a220129000037030020024190046a41106a2213200341106a221529000037030020024190046a41086a2216200341086a220a2900003703002002200329000037039004200241b0046a41186a22072001290000370300200241b0046a41106a22052015290000370300200241b0046a41086a2215200a290000370300200220032900003703b00420024180036a41186a2201200d29030037030020024180036a41106a220d201329030037030020024180036a41086a22132016290300370300200220022903900437038003200241c0016a20024180036a10a002200241d0046a41186a22162007290300370300200241d0046a41106a220a2005290300370300200241d0046a41086a22072015290300370300200220022903b0043703d0040240024020022802e0012205450d00200420022903c001370300200441186a200241c0016a41186a290300370300200441106a200241c0016a41106a290300370300200441086a200241c0016a41086a29030037030020012016290300370300200d200a29030037030020132007290300370300200220022903d0043703800320022802e401210720022903e8012106200241a0026a41386a221220024180036a41386a2215290300370300200241a0026a41306a221720024180036a41306a2216290300370300200241a0026a41286a221820024180036a41286a220a290300370300200241a0026a41206a22192004290300370300200241a0026a41186a221a2001290300370300200241a0026a41106a221b200d290300370300200241a0026a41086a221c201329030037030020022002290380033703a002200241c8006a41386a221d2012290300370300200241c8006a41306a22122017290300370300200241c8006a41286a22172018290300370300200241c8006a41206a22182019290300370300200241c8006a41186a2219201a290300370300200241c8006a41106a221a201b290300370300200241c8006a41086a221b201c290300370300200220022903a0023703482015201d29030037030020162012290300370300200a20172903003703002004201829030037030020012019290300370300200d201a2903003703002013201b290300370300200220022903483703800302402014200228028404470d0020024180046a2014410110ac0120022802800421090b20132903002108200d290300210b2001290300210c2004290300211e200a290300211f201629030021202015290300212120022903800321222009201441d0006c6a22012006370248200120073602442001200536024020012022370300200141386a2021370300200141306a2020370300200141286a201f370300200141206a201e370300200141186a200c370300200141106a200b370300200141086a20083703002002201441016a22143602880420000d010c070b2000450d060b200341206a2103200041606a21000c000b0b200341206a2103200041606a22004140470d000b0b0240201041ffffff3f71450d00201110290b41002103410021140c020b200241d4006a410436020020024194036a41023602002002420237028403200241a0d1c200360280032002410436024c200241f8d3c200360248200241003602a40220024180a6cc003602a0022002200241c8006a360290032002200241a0026a36025020024180036a41b0d1c2001040000b0240201041ffffff3f71450d00201110290b20022802840421030b200220143602d804200220033602d404200220093602d00420024180036a200241d0046a10bb034100210302402002280280034101460d00200241b0046a41106a20024198036a280200360200200241b0046a41086a20024180036a41106a290300370300200220024180036a41086a2903003703b0042002419c036a2802002103200241a0026a200241a0036a41e00010e4071a0b200241d0046a41086a2201200241b0046a41086a290300370300200241d0046a41106a2200200241b0046a41106a280200360200200220022903b0043703d00420024180036a200241a0026a41e00010e4071a0240024002402003450d00200241c8006a41106a2000280200360200200241c8006a41086a2001290300370300200220022903d004370348200241c0016a20024180036a41e00010e4071a200241dc006a2003360200200241c8006a41186a200241c0016a41e00010e4071a200241c0016a41186a200241286a41186a290300370300200241c0016a41106a200241286a41106a290300370300200241c0016a41086a200241286a41086a290300370300200220022903283703c001024002400240200241a0016a2203200241fc006a412010e707450d0020024180036a41186a200341186a29000037030020024180036a41106a200341106a29000037030020024180036a41086a200341086a2900003703002002200329000037038003200241c8006a20024180036a10bc032201450d01200128020c4101480d010b200242003703b804200242043703b004412410272201450d05200141e7e485f3063600002002200136028003200242a4808080c00037028403412020024180036a107102400240200228028403220420022802880322006b4120490d0020022802800321012004210d0c010b200041206a22012000490d072004410174220d2001200d20014b1b220d4100480d070240024020040d000240200d0d00410121010c020b200d102722010d010c0a0b20022802800321012004200d460d0020012004200d102b2201450d090b2002200d3602840320022001360280030b200120006a220420022903c001370000200441186a200241c0016a41186a290300370000200441106a200241c0016a41106a290300370000200441086a200241c0016a41086a29030037000020024194036a200341086a2902003702002002419c036a200341106a290200370200200241a4036a200341186a29020037020020024188a8c800360284032002200329020037028c032002200241b0046a360288032002200241c8006a3602800341002104200241003602d8042002200041206a3602d404200220013602d004200241a0026a20024180036a200241d0046a10bd03024002400240024020022802a0024101470d00024020022802a40222002d0000221341034b0d00024020130e0403030003030b200041086a280200450d02200041046a28020010290c020b200041286a280200450d01200041246a28020010290c010b20022802a4022213450d0141002100410021040240200241a0026a41086a2903002206422088a74104490d0020132800002100410121040b2006a7450d02201310290c020b200010290b0b0240200d450d00200110290b02402004450d00200220003602800420024194036a200341086a2902003702002002419c036a200341106a290200370200200241a4036a200341186a29020037020020024188a8c800360284032002200329020037028c032002200241b0046a360288032002200241c8006a36028003200242043702d404200220024180046a3602d004200241a0026a20024180036a200241d0046a10bd030240024020022802a0024101470d00024020022802a40222032d0000220141034b0d00024020010e0403030003030b200341086a280200450d02200341046a28020010290c020b200341286a280200450d01200341246a2802001029200310290c020b20022802a4022200450d01200241a0026a41086a2903002106200220003602900420022006422088a722043602940441002103200241003a00c002024002400240034020042003460d01200241a0026a20036a200020036a22012d00003a00002002200141016a360290042002200341016a22013a00c0022001210320014120470d000b200241d0046a41086a2203200241a0026a41086a220d290300370300200241d0046a41106a2213200241a0026a41106a2215290300370300200241d0046a41186a2216200241a0026a41186a290300370300200220022903a0023703d0042002200420016b36029404200241a0026a20024190046a10830220022802c00222010d01410021010c020b4100210120024100360294040240200341ff0171450d00200241003a00c0020b0c010b20024180036a41186a201629030037030020024180036a41106a201329030037030020024180036a41086a2003290300370300200241a8036a200d290300370300200241b0036a2015290300370300200220022903d00437038003200220022903a0023703a003200241c4026a28020021030b02402006a7450d00200010290b2001450d0102402003450d00200341306c450d00200110290b20022802b8042103200241003602b80420022802b404211520022802b0042116200242043703b0042002410036028803200242043703800320024180036a4100200341306c220141306d109d0120022802880321000240024020030d0020022000360288030c010b201620016a2113200341306c2104201641306a21032002280280032000410c6c6a210102400340200341546a280200220d450d01200141046a200341586a2902003702002001200d3602002001410c6a2101200341306a2103200041016a2100200441506a22040d000b201321030b2002200036028803201320036b450d000340200341306a21010240200341086a280200450d00200341046a28020010290b2001210320132001470d000b0b02402015450d00201541306c450d00201610290b2002290284032106200228028003210a024020022802b8042203450d00200341306c210120022802b00441046a210303400240200341046a280200450d00200328020010290b200341306a2103200141506a22010d000b0b20022802b4042203450d03200341306c450d0320022802b00410290c030b200310290b024020022802b8042203450d00200341306c210120022802b00441046a210303400240200341046a280200450d00200328020010290b200341306a2103200141506a22010d000b0b20022802b4042203450d00200341306c450d0020022802b00410294100210a0c010b4100210a0b024020022802582200450d00200228025c220141046a2103200020016a41016a21042001280200417f7341808182847871210d200228026021010240034002400240200d450d00200d21000c010b0340200320044f0d03200141c0016a210120032802002100200341046a220d21032000418081828478712200418081828478460d000b2000418081828478732100200d21030b2000417f6a200071210d200120006841037641306c6a220041246a280200450d00200028022010290c000b0b02402002280258220341086a200341056a490d00200341016aad42307e422088a71a0b200228025c10290b0240200241f4006a280200450d00200228027010290b200a450d0020024100360288032002420137038003410410272203450d05200241043602840320022003360280032003200e4100200f1b36000020024104360288032006422088a7220720024180036a10710240024020070d00200228028403211320022802880321030c010b200a2007410c6c6a2116200a2101034020012802002115200141086a280200220320024180036a107102400240200228028403220420022802880322006b2003490d00200228028003210d200421130c010b200020036a220d2000490d0720044101742213200d2013200d4b1b22134100480d070240024020040d00024020130d004101210d0c020b20131027220d450d0a0c010b200228028003210d20042013460d00200d20042013102b220d450d090b20022013360284032002200d360280030b200d20006a2015200310e4071a2002200020036a2203360288032001410c6a22012016470d000b0b02400240201320036b4104490d0020022802800321000c010b200341046a22012003490d05201341017422002001200020014b1b22014100480d050240024020130d00024020010d00410121000c020b200110272200450d080c010b200228028003210020132001460d00200020132001102b2200450d070b200220013602840320022000360280030b2006a72104200020036a20143600002002200341046a36028803200229028403210602402007450d002007410c6c2101200a210303400240200341046a280200450d00200328020010290b2003410c6a2103200141746a22010d000b0b02402004450d002004410c6c450d00200a10290b20000d010b410021000c010b2006422088a721012006a7210d0b410110272203450d00200242013702840320022003360280030240024020000d0041002101200341003a000042808080801021060c010b200341013a00002002410136028803200120024180036a107102400240200228028403221320022802880322046b2001490d0020022802800321030c010b200420016a22032004490d03201341017422142003201420034b1b22144100480d030240024020130d00024020140d00410121030c020b201410272203450d060c010b200228028003210320132014460d00200320132014102b2203450d050b200220143602840320022003360280030b200320046a2000200110e4071a200420016aad4220862106200021010b20062003ad84210602402000450d00200d450d00200110290b200241f0046a240020060f0b1039000b1032000b1030000b0240200341ff0171450d00200241003a00a0030b20024194036a4102360200200241d4006a41043602002002420237028403200241a0d1c200360280032002410436024c200241f8d3c200360248200241003602a40220024180a6cc003602a0022002200241c8006a360290032002200241a0026a36025020024180036a41b0d1c2001040000b992205027f027e067f027e177f230041a0086b220224000240024002400240410110272203450d00200341003a000041004100350280804042adfed5e4d485fda8d8007e200241c0056aad7c421f8922043e02808040200241086a41206a4100360200200241086a41186a4204370300200241086a41146a418cc5c000360200200241003602182002418080c000ad220537030820022004370310200241c0056a41186a220641b4e0c800ad4280808080108422041010220741186a290000370300200241c0056a41106a2208200741106a290000370300200241c0056a41086a2209200741086a290000370300200220072900003703c00520071029200241086a412c6a428180808010370200200241d4006a2006290300370200200241cc006a2008290300370200200241086a413c6a200929030037020020022003360230200220022903c00537023c200241e0006a41186a22034200370300200241e0006a41106a220a4200370300200241e0006a41086a220b420037030020024200370360200620041010220741186a2900003703002008200741106a2900003703002009200741086a290000370300200220072900003703c0052007102920032006290300370300200a2008290300370300200b2009290300370300200220022903c0053703602004101022072900002104200741086a290000210c200741106a290000210d2006200741186a2900003703002008200d3703002009200c370300200220043703c00520071029412010272207450d0041004100350280804042adfed5e4d485fda8d8007e200241f8066aad7c421f8922043e0280804020024180016a412c6a420037020020024180016a41206a410036020020024180016a41186a420437030020024180016a41146a418cc5c000360200200241b4016a420037020020024180016a41c8006a419ca8c80036020020024180016a41c0006a410836020020024180016a413c6a20073602002002410036029001200241013a00d001200220053703800120022004370388012002200241e0006a3602cc012002200241086a3602c401200241043602a801200241e9016a2006290300370000200241e1016a2008290300370000200241d9016a2009290300370000200241d1016a20022903c005370000200241003602f4012001280200220e2001280208220641d0006c22086a210f20012802042110200e21072006450d0120024198026a41046a2111200241c0056a41046a2112200e4194016a2113200841b07f6a2114200241c0056a41306a2115200241c0056a41206a211620024180036a41206a211720024180036a41c0006a2118200241e0036a211920024180046a211a200241c0056a410172211b2002419c076a211c4100211d200e21070340200241a0046a41386a200741386a2208290300370300200241a0046a41306a200741306a2201290300370300200241a0046a41286a200741286a2203290300370300200241a0046a41206a200741206a220a290300370300200241a0046a41186a200741186a220b290300370300200241a0046a41106a200741106a221e290300370300200241a0046a41086a200741086a221f290300370300200220072903003703a004200741c0006a2802002106200741c4006a2802002109200741c8006a2902002104200241c0056a41386a2220200829030037030020152001290300370300200241c0056a41286a220820032903003703002016200a290300370300200241c0056a41186a2221200b290300370300200241c0056a41106a2222201e290300370300200241c0056a41086a221e201f290300370300200220072903003703c005200741d0006a21072006450d0320024180036a41386a2201202029030037030020024180036a41306a2203201529030037030020024180036a41286a220a200829030037030020024180036a41206a2208201629030037030020024180036a41186a220b202129030037030020024180036a41106a221f202229030037030020024180036a41086a2220201e290300370300200220022903c00537038003201241386a2001290300370200201241306a2003290300370200201241286a200a290300370200201241206a2008290300370200201241186a200b290300370200201241106a201f290300370200201241086a20202903003702002012200229038003370200200241f8066a200241c0056a41c40010e4071a20024198026a41086a200241f8066a41086a29020037030020024198026a41106a200241f8066a41106a29020037030020024198026a41186a200241f8066a41186a29020037030020024198026a41206a200241f8066a41206a280200360200200241f8016a41086a2208201c41086a290200370300200241f8016a41106a2201201c41106a290200370300200241f8016a41186a2203201c41186a290200370300200220022902f806370398022002201c2902003703f801200241c0026a41186a220a201141186a290000370300200241c0026a41106a220b201141106a290000370300200241c0026a41086a221f201141086a290000370300200220112900003703c002200241e0026a41186a22202003290300370300200241e0026a41106a22232001290300370300200241e0026a41086a22242008290300370300200220022903f8013703e002200241e8066a200241c0026a10b505200241c0056a20022802e806220320022802f00610b60520022d00c0052101200241f8066a201b41a00110e4071a41002108024020014101470d00200241a0046a200241f8066a41a00110e4071a410121080b024020022802ec06450d00200310290b0240024002402008450d0020024180036a200241a0046a41a00110e4071a2021200a2903003703002022200b290300370300201e201f290300370300201620022903e002370300201641086a2024290300370300201641106a2023290300370300201641186a2020290300370300200220022903c0023703c005200220043703880620022009360284062002200636028006416c2103024002400240024002400340410021064180a6cc00210b0240024002400240200341e8a1c5006a280000220841e0ea91cb064a0d00200841f0c2c98b06460d01200841e2c289ab06470d03412021062017210b0c030b200841e1ea91cb06460d010240200841e9dabdf306460d00200841e7e485f306470d034120210620024180036a210b0c030b412021062018210b0c020b412021062019210b0c010b41202106201a210b0b2006410472220110272209450d0a20092008360000200241043602a804200220013602a404200220093602a0042006200241a0046a10710240024020022802a404220a20022802a80422096b2006490d0020022802a0042108200a21010c010b200920066a22082009490d03200a41017422012008200120084b1b22014100480d0302400240200a0d00024020010d00410121080c020b200110272208450d080c010b20022802a0042108200a2001460d002008200a2001102b2208450d070b200220013602a404200220083602a0040b200820096a200b200610e4071a2002201d3602a004200241f8066a20024180016a2008200920066a200241a0046a410410ab0602402001450d00200810290b20022802fc0621060240024020022802f8064101470d00024020062d0000220841034b0d00024020080e0403030003030b200641086a280200450d02200641046a28020010290c020b200641286a280200450d01200641246a28020010290c010b02402006450d00200228028007450d00200610290b200341046a2203450d020c010b0b20061029200041086a411a360200200041c4a8c800360204200041013602000c030b2002201d36029c08200241003602a804200242013703a004412010272206450d03200241203602a404200220063602a004200620022903c005370000200641086a201e290300370000200641106a2022290300370000200641186a2021290300370000200241203602a804200220163602e806200241e8066a200241a0046a10e501200220153602e806200241e8066a200241a0046a10e50120022802800621062002280288062208200241a0046a107102402008450d00200841306c210a03400240024020022802a404220320022802a80422086b4120490d00200841206a210920022802a00421010c010b200841206a22092008490d03200341017422012009200120094b1b220b4100480d030240024020030d000240200b0d00410121010c020b200b102722010d010c080b20022802a00421012003200b460d0020012003200b102b2201450d070b2002200b3602a404200220013602a0040b200120086a2208200641106a290000370000200841186a200641286a290000370000200841106a200641206a290000370000200841086a200641186a290000370000200220093602a804200220063602e806200241e8066a200241a0046a10e501200641306a2106200a41506a220a0d000b0b20022802a4042106200241f8066a20024180016a2002419c086a410420022802a004220820022802a80410ab0602402006450d00200810290b024020022802f8064101470d00024020022802fc0622062d0000220841034b0d00024020080e0404040004040b200641086a280200450d03200641046a28020010290c030b200641286a280200450d02200641246a28020010290c020b024020022802fc062206450d00200228028007450d00200610290b02402002280284062206450d00200641306c450d0020022802800610290b2007200f460d050c060b1032000b20061029200041086a411a360200200041c4a8c800360204200041013602000b02402002280284062206450d00200641306c450d0020022802800610290b0240200f2007460d000340024020132802002206450d00200641306c450d002013417c6a28020010290b201341d0006a2113201441b07f6a22140d000b0b02402010450d00201041d0006c450d00200e10290b20024180016a10c506024020022802182209450d00200228021c220841046a2106200920086a41016a21072008280200417f734180818284787121012002280220210802400340024002402001450d00200121090c010b0340200620074f0d03200841c0016a210820062802002109200641046a220121062009418081828478712209418081828478460d000b2009418081828478732109200121060b2009417f6a2009712101200820096841037641306c6a220941246a280200450d00200928022010290c000b0b02402002280218220641086a200641056a490d00200641016aad42307e422088a71a0b200228021c10290b2002280234450d08200228023010290c080b1030000b02402009450d00200941306c450d00200610290b2007200f470d010b200f21070c030b201d41016a211d201441b07f6a2114201341d0006a21130c000b0b1039000b200241c0056a41386a200241a0046a41386a290300370300200241c0056a41306a200241a0046a41306a290300370300200241c0056a41286a200241a0046a41286a290300370300200241c0056a41206a200241a0046a41206a290300370300200241c0056a41186a200241a0046a41186a290300370300200241c0056a41106a200241a0046a41106a290300370300200241c0056a41086a200241a0046a41086a290300370300200220022903a0043703c0050b0240200f2007460d0003402007220641d0006a21070240200641c4006a2802002208450d00200841306c450d00200641c0006a28020010290b200f2007470d000b0b02402010450d00201041d0006c450d00200e10290b20024180016a10c506200241c0056a200241086a41d80010e4071a200241b0066a200241f8006a290300370300200241a8066a200241f0006a290300370300200241a0066a200241e0006a41086a2903003703002002200229036037039806200041086a200241c0056a41f80010e4071a200041003602000b200241a0086a24000bdb0303017f047e097f230041106b220224002002200041086a29030022032000290300220485220520044218898520054210868520054225897c220542a0cbbf9599b5a19f0a7c2206200129001885200129000020068542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852001290008200542efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852001290010200542bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010d507200241086a29030020022903007c200320047c85a722074119762208410874200872220841107420087221092000280210220a2007712108200041186a280200210b200041146a280200210c4100210d024003400240200c20086a280000220e2009732200417f73200041fffdfb776a71418081828478712200450d00024003402001200b20006841037620086a200a71220f41306c6a2207460d0120012007412010e707450d012000417f6a2000712200450d020c000b0b200b200f41306c6a41206a21000c020b200d41046a220d20086a200a712108200e200e4101747141808182847871450d000b410021000b200241106a240020000bc81c021f7f037e230041e0036b22032400200228020821042002280200210520022802042106200341186a2207200141246a290000370300200341106a22082001411c6a290000370300200341086a2209200141146a2900003703002003200129000c3703002006410174210a2003410772210b200341c8016a41186a210c200341c8016a410c6a210d200341c8016a41206a210e2001280204210f200128020021102006211120052112200421134100211441002115024002400240024002400240024002400240024002400240024002400340200420156a2216410176210402400240024002400240024002400240024002402016410171450d0020112004490d02200420114f0d04200341013a00d001200320123602c801200320043602cc012003201220046a2d000041f001713a00d1010c010b20112004490d02200341003a00d001200320043602cc01200320123602c8010b200341b8036a20102003200341c8016a200f28020c110400024020032802b80322170d00200341c8016a41086a2213200341086a290300370300200341c8016a41106a2206200341106a290300370300200341c8016a41186a2211200341186a290300370300200320032903003703c801413010272204450d17200420032903c80137000120042003290020370021200420144100473a0000200441096a2013290300370000200441116a2006290300370000200441196a2011290300370000200441286a200341276a29000037000020004101360200200020043602040c160b20032802c003210420032802bc03211802402001280208221128020c20144b0d002004417f4c0d0e0240024020040d0041002112410121190c010b200410272219450d12200421120b0240024020122004490d00201221160c010b201241017422162004201620044b1b22164100480d13024020120d002016102722190d010c190b20122016460d00201920122016102b2219450d180b20192017200410e4072119200c2007290300370300200341c8016a41106a221a2008290300370300200341c8016a41086a221b2009290300370300200320032903003703c801024020112802082212201141046a280200470d0020112012410110ab01201128020821120b2011280200201241306c6a2212201936020420122014360200201220032903c8013702102012410c6a2004360200201241086a2016360200201241186a201b290300370200201241206a201a290300370200201241286a200c2903003702002011201128020841016a3602080b200341c8016a2017200410870420032d00c8014101460d13201441016a2114034020032802e401211c20032802e001211d20032802dc01211e20032802d801211220032802d401211120032802d001211620032802cc012104200341206a200e41a80110e4071a2003280294032119200328029003211a024002400240024020040e051710000102170b410021040240201141017420126b221f200a20136b22192019201f4b1b2220450d000340201320046a2219410176221a20064f0d09201220046a221b410176222120114f0d0a2005201a6a2d0000221a410f71201a41f0017141047620194101711b201620216a2d00002219410f712019410476201b4101711b470d01200441016a22042020490d000b0b02402004201f460d00200042003702002018450d1a0c190b201f21040c020b2003201c3602dc012003201d3602d8012003201e3602d401200320123602d001200320113602cc01200320163602c801200c200341206a41a80110e4071a02400240200a2013460d00201341017622042006490d012004200641b4a0cc001036000b02400240201a0d00410021040c010b2019417f4c0d120240024020190d0041002113410121040c010b201910272204450d16201921130b0240024020132019490d00201321060c010b201341017422062019200620194b1b22064100480d17024020130d00200610272204450d1d0c010b20132006460d00200420132006102b2204450d1c0b2004201a201910e4071a2019ad4220862006ad8421220b20002004360204200041086a20223702000c0e0b0240200341c8016a200520046a2d00002204410f71200441047620134101711b410c6c6a2204280200221e4102470d00200041003602040c0e0b2004280204211d200441086a280200211c4101211f410121040c010b20032802a0032120200328029c03211f20032802980321042003201c3602d0012003201d3602cc012003201e3602c801200d200341206a41a80110e4071a200320043602840320032019360280032003201a3602fc02410021040240201141017420126b221c200a20136b221e201e201c4b1b221d450d000340201320046a2219410176221a20064f0d09201220046a221b410176222120114f0d0a2005201a6a2d0000221a410f71201a41f0017141047620194101711b201620216a2d00002219410f712019410476201b4101711b470d01200441016a2204201d490d000b0b024002400240024002402004201c470d00201e201c470d01201f0d02410021040c030b200041003602040c0f0b201c20136a220441017622112006490d022011200641b4a0cc001036000b2020417f4c0d110240024020200d0041002113410121040c010b202010272204450d15202021130b0240024020132020490d00201321060c010b201341017422062020200620204b1b22064100480d16024020130d00200610272204450d1c0c010b20132006460d00200420132006102b2204450d1b0b2004201f202010e4071a2020ad4220862006ad8421220b20002004360204200041086a20223702000c0c0b0240200341c8016a200520116a2d00002211410f71201141047620044101711b410c6c6a2211280200221e4102470d00200041003602040c0c0b201c41016a211f201c41016a21042011280204211d201141086a280200211c0b200420156a21152013201f6a21130240201e450d00200341c8016a201d201c10870420032d00c8014101460d150c010b0b02400240201c4120460d00200341c8016a41086a22162009290300370300200341c8016a41106a22192008290300370300200c2007290300370300200320032903003703c801201c417f4c0d0f02400240201c0d0041002104410121120c010b201c10272212450d13201c21040b024002402004201c490d00200421110c010b20044101742211201c2011201c4b1b22114100480d14024020040d00201110272212450d1a0c010b20042011460d00201220042011102b2212450d190b2012201d201c10e4072112413010272204450d18200441043a0000200420032903c801370001200420032f00aa033b00212004201c36002c2004201136002820042012360024200441096a2016290300370000200441116a2019290300370000200441196a200c290300370000200441236a200341aa036a41026a2d00003a0000410121110c010b201d41026a2d00002111201d410f6a2900002122201d41176a2900002123201d2800032104201d2f00002112201d2900072124200c201d411f6a2d00003a0000200341c8016a41106a2023370300200341c8016a41086a2022370300200341aa036a41026a20113a0000200320243703c801200320123b01aa03410021110b200341dc036a41026a2212200341aa036a41026a2d00003a0000200341b8036a41086a2216200341c8016a41086a290300370300200341b8036a41106a2219200341c8016a41106a290300370300200341b8036a41186a221a200c280200360200200320032f01aa033b01dc03200320032903c8013703b803024020110d00200b20032903b803370000200b41086a2016290300370000200b41106a2019290300370000200b41186a201a2d00003a0000200320032f01dc033b010020032004360003200320122d00003a00022018450d08201710290c080b200041013602002000200436020420180d140c150b2004201141f4a0cc00104b000b200420114184a1cc00104b000b200420114194a1cc001036000b201a200641b4a0cc001036000b2021201141b4a0cc001036000b201a200641b4a0cc001036000b2021201141b4a0cc001036000b2002280208210420022802042111200228020021120c000b0b200041003602000c020b200041003602000c010b4100211c0240201141017420126b200a20136b2201470d004100211c41002104024002402001450d00410021040340201220046a2219410176221a20114f0d06201320046a221b410176222120064f0d072016201a6a2d0000221a410f71201a41f0017141047620194101711b200520216a2d00002219410f712019410476201b4101711b470d012001200441016a2204470d000c020b0b20042001470d010b201d417f4c0d0202400240201d0d00410021044101211c0c010b201d1027221c450d06201d21040b024002402004201d490d00200421130c010b20044101742213201d2013201d4b1b22134100480d07024020040d0020131027221c450d0d0c010b20042013460d00201c20042013102b221c450d0c0b201c201e201d10e4071a201dad4220862013ad8421220b2000201c36020420004100360200200041086a20223702000b02402018450d00201710290b200341e0036a24000f0b1038000b201a201141b4a0cc001036000b2021200641b4a0cc001036000b1039000b1032000b2000420037020020180d010c020b20032d00c9012113200341b8036a41086a2206200341086a290300370300200341b8036a41106a2211200341106a290300370300200341b8036a41186a2212200341186a290300370300200320032903003703b803413010272204450d02200441033a0000200420032903b803370001200420133a0021200420032901aa03370122200441096a2006290300370000200441116a2011290300370000200441196a2012290300370000200441286a200341b0036a29010037010020004101360200200020043602042018450d010b201710290b200341e0036a24000f0b1030000b8c0f05047f017e017f017e077f23004190016b22022400200241c8006a41186a22034200370300200241c8006a41106a22044200370300200241c8006a41086a220542003703002002420037034841c8bec500ad4280808080c0008422061001220729000021082005200741086a290000370300200220083703482007102941d983cc00ad4280808080b00184100122092900002108200241286a41086a2207200941086a2900003703002002200837032820091029200420022903282208370300200241f0006a41086a220a2005290300370300200241f0006a41106a220b2008370300200241f0006a41186a220c200729030037030020022002290348370370200241c8006a200241f0006a10bf0320022802482109200229024c21082003420037030020044200370300200542003703002002420037034820061001220329000021062005200341086a290000370300200220063703482003102941b8f1c200ad4280808080a001841001220329000021062007200341086a2900003703002002200637032820031029200420022903282206370300200a2005290300370300200b2006370300200c200729030037030020022002290348370370200241c8006a200241f0006a10c00320022d00482105200c200241e1006a290000370300200b200241d9006a290000370300200a200241d1006a290000370300200220022900493703700240024020054101460d00200241286a41186a4200370300200241286a41106a420037030020074200370300200242003703280c010b200241286a41186a200c290300370300200241286a41106a200b2903003703002007200a290300370300200220022903703703280b200241086a41086a200241286a41086a290300370300200241086a41106a200241286a41106a290300370300200241086a41186a200241286a41186a2903003703002002200229032837030820024100360250200242013703480240410810272205450d002002410836024c20022005360248200542f02e37000020024108360250200541084110102b2205450d00200542e0123700082002411036024c20022005360248200241103602500240024002404100450d00411021070c010b411041017422074118200741184b1b22074100480d010240024041100d002007102722050d010c040b41102007460d00200541102007102b2205450d030b2002200736024c200220053602480b2005420137001020024118360250024020074138714118470d00200741017422044120200441204b1b22044100480d010240024020070d00200410272205450d040c010b20072004460d00200520072004102b2205450d030b2002200436024c200220053602480b2009410820091b210d20054204370018200241203602502008420020091b2208422088a72205200241c8006a10712002280250210302402005450d00200d200541286c6a210e410020036b210b200228024c2104410021050340200320056a210c024002402004200b6a4120490d002002280248210a200421090c010b200c41206a2207200c490d03200441017422092007200920074b1b22094100480d030240024020040d00024020090d004101210a0c020b20091027220a450d060c010b2002280248210a20042009460d00200a20042009102b220a450d050b2002200936024c2002200a3602480b200a20036a20056a2204200d20056a2207290000370000200441186a200741186a290000370000200441106a200741106a290000370000200441086a200741086a2900003700002002200c41206a2204360250200741206a2903002106024002402009200b6a41606a41074d0d00200921040c010b200441086a220f2004490d0320094101742204200f2004200f4b1b22044100480d030240024020090d00024020040d004101210a0c020b20041027220a450d060c010b20092004460d00200a20092004102b220a450d050b2002200436024c2002200a3602480b200a20036a20056a41206a20063700002002200c41286a360250200b41586a210b200541286a2105200e200741286a470d000b200320056a21030b02400240200228024c220420036b4120490d0020022802482107200421050c010b200341206a22052003490d01200441017422072005200720054b1b22054100480d010240024020040d00024020050d00410121070c020b200510272207450d040c010b2002280248210720042005460d00200720042005102b2207450d030b2002200536024c200220073602480b200720036a22042002290308370000200441186a200241086a41186a290300370000200441106a200241086a41106a290300370000200441086a200241086a41086a2903003700002002200341206a22043602500240024020052004460d00200421050c010b200541016a22042005490d01200541017422092004200920044b1b22044100480d010240024020050d0041002105024020040d00410121070c020b200410272207450d040c010b20052004460d00200720052004102b2207450d030b2002200436024c200220073602480b200720056a41023a0000200541016aad422086200235024884210602402008a72205450d00200541286c450d00200d10290b20024190016a240020060f0b1032000b1030000b980704057f017e087f037e230041a0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10c8010240024020022802000d00200228020422052002280224220641286e2201200120054b1bad42287e2207422088a70d032007a72201417f4c0d030240024020010d00410821080c010b200110272208450d050b4100210920024100360230200220083602282002200141286e36022c02400240024002402005450d004100210a034041002101200241003a009801200a41016a210a034020062001460d03200241f8006a20016a2002280220220b2d00003a00002002200b41016a3602202002200141016a220c3a009801200c2101200c4120470d000b200241d8006a41186a2201200241f8006a41186a290300370300200241d8006a41106a220d200241f8006a41106a290300370300200241d8006a41086a220e200241f8006a41086a290300370300200220022903783703582006200c6b220c4108490d03200241386a41086a220f200e290300370300200241386a41106a220e200d290300370300200241386a41186a220d2001290300370300200220022903583703382002200b41096a360220200b290001210702402009200228022c470d00200241286a2009410110a30120022802282108200228023021090b200c41786a21062008200941286c6a22012002290338370300200f2903002110200e2903002111200d290300211220012007370320200141186a2012370300200141106a2011370300200141086a20103703002002200941016a2209360230200a2005470d000b2002200c41786a3602240b2008450d032000200229022c370204200020083602000c040b20024100360224200141ff0171450d01200241003a0098010c010b2002200c3602240b200228022c2201450d00200141286c450d00200810290b20024100360260200242013703582002410d36023c2002200241086a3602382002200241d8006a3602282002418c016a41013602002002420137027c200241f4eaca003602782002200241386a36028801200241286a41a8a3c800200241f8006a10371a200235026042208620023502588410080240200228025c450d00200228025810290b200041003602000b2004450d00200310290b200241a0016a24000f0b1038000b1039000bd60302057f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022030d00200041003a00000c010b200241186a28020021042002280214210541002101200241003a006802400240034020042001460d01200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241206a41186a200241c8006a41186a2903002207370300200241206a41106a200241c8006a41106a2903002208370300200241206a41086a200241c8006a41086a290300220937030020022002290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200241003a00680b4100210120024100360228200242013703202002410d3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241f4eaca003602482002200241c0006a360258200241ec006a41a8a3c800200241c8006a10371a200235022842208620023502208410082002280224450d00200228022010290b200020013a00002005450d00200310290b200241f0006a24000b2b02017e017f10b401210202404108102722030d001039000b200320023700002003ad42808080808001840b9b0b04047f017e0a7f017e230041b0016b2202240020024188016a41186a420037030020024188016a41106a2203420037030020024188016a41086a220442003703002002420037038801418ebfc500ad4280808080a002841001220529000021062004200541086a29000037030020022006370388012005102941dcb7c700ad4280808080c00084100122052900002106200241e8006a41086a2207200541086a2900003703002002200637036820051029200320022903682206370300200241106a41086a2004290300370300200241106a41106a2006370300200241106a41186a20072903003703002002200229038801370310200241203602342002200241106a360230200241386a200241106aad42808080808004841007108b020240024002400240200228023822080d00410021070c010b200228023c21092002200241386a41086a28020036024c20022008360248200241086a200241c8006a10c8010240024020022802080d00200228020c220a200228024c220b41057622042004200a4b1b22044105742205417f4c0d040240024020040d00410121070c010b200510272207450d040b4100210c200241003602602002200436025c2002200736025802400240200a450d004100210d0340200b210341002104200241003a00a801200d41016a210d034020032004460d0320024188016a20046a200228024822052d00003a00002002200541016a3602482002200441016a22053a00a8012005210420054120470d000b200241e8006a41186a220e20024188016a41186a290300370300200241e8006a41106a220f20024188016a41106a290300370300200241e8006a41086a221020024188016a41086a29030037030020022002290388013703680240200c200228025c470d00200241d8006a200c4101109e01200228025821072002280260210c0b200320056b210b2007200c4105746a22042002290368370000200441186a200e290300370000200441106a200f290300370000200441086a20102903003700002002200c41016a220c360260200d200a470d000b2002200320056b36024c0b200229025c21062007450d010c020b2002410036024c0240200441ff0171450d00200241003a00a8010b0240200228025c41ffffff3f71450d00200710290b0b4100210720024100360270200242013703682002410d36025c2002200241306a3602582002200241e8006a3602542002419c016a41013602002002420137028c01200241f4eaca00360288012002200241d8006a36029801200241d4006a41a8a3c80020024188016a10371a20023502704220862002350268841008200228026c450d00200228026810290b2009450d00200810290b2006420020071b2206422088a7220441057422094104722205417f4c0d01200510272203450d002007410120071b210a20024100360290012002200536028c012002200336028801200420024188016a10710240024020040d002002280290012105200228028801210d0c010b410020022802900122056b2107200228028801210d200228028c012108200a210c0340200c21040240200820076a411f4b0d00024002400240200541206a22032005490d002008410174220c2003200c20034b1b22034100480d000240024020080d00024020030d004101210d0c020b20031027210d0c040b20082003470d020b200321080c030b1032000b200d20082003102b210d0b20032108200d0d001030000b200441206a210c200d20056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200741606a2107200541206a2105200941606a22090d000b2002200836028c0120022005360290012002200d360288010b2005ad422086200dad8421110240200642ffffff3f83500d00200a10290b200241b0016a240020110f0b1039000b1038000bb91204037f017e027f017e230041e0026b220224000240024020010d002002200136020c20024180a6cc003602080c010b20022001417f6a36020c2002200041016a36020820002d0000220141014b0d004100210002400240024002400240024020010e020100010b2002200241086a10c80120022802000d05200228020c220320022802042201490d052001417f4c0d010240024020010d0041002103410121000c010b2001102d2200450d03200020022802082204200110e4071a2002200320016b36020c2002200420016a360208200121030b2000450d052001ad4220862003ad8421050b410021030240024020000d00410021040c010b2005422088a72201417f4c0d010240024020010d0041002106410121040c010b200110272204450d03200121060b0240024020062001490d00200621070c010b200641017422072001200720014b1b22074100480d04024020060d002007102722040d010c060b20062007460d00200420062007102b2204450d050b20042000200110e4071a2005428080808070832007ad8421080b2002200837021420022004360210200241b0016a41e7e485f306200241106a10c4030240024020000d000c010b2005422088a72201417f4c0d010240024020010d0041002104410121030c010b200110272203450d03200121040b0240024020042001490d00200421060c010b200441017422062001200620014b1b22064100480d04024020040d00200610272203450d060c010b20042006460d00200320042006102b2203450d050b20032000200110e4071a2005428080808070832006ad8421080b2002200837021420022003360210200241d0016a41e2c289ab06200241106a10c503410021030240024020000d00410021040c010b2005422088a72201417f4c0d010240024020010d0041002106410121040c010b200110272204450d03200121060b0240024020062001490d00200621070c010b200641017422072001200720014b1b22074100480d04024020060d00200710272204450d060c010b20062007460d00200420062007102b2204450d050b20042000200110e4071a2005428080808070832007ad8421080b2002200837021420022004360210200241f0016a41e9dabdf306200241106a10c5030240024020000d000c010b2005422088a72201417f4c0d010240024020010d0041002104410121030c010b200110272203450d03200121040b0240024020042001490d00200421060c010b200441017422062001200620014b1b22064100480d04024020040d00200610272203450d060c010b20042006460d00200320042006102b2203450d050b20032000200110e4071a2005428080808070832006ad8421080b200220083702142002200336021020024190026a41f0c2c98b06200241106a10c5030240024020000d00410021030c010b2005422088a72201417f4c0d010240024020010d0041002104410121030c010b200110272203450d03200121040b0240024020042001490d00200421060c010b200441017422062001200620014b1b22064100480d04024020040d00200610272203450d060c010b20042006460d00200320042006102b2203450d050b20032000200110e4071a2005428080808070832006ad8421080b200220083702d402200220033602d002200241b0026a41e1ea91cb06200241d0026a10c503200241106a41086a2203200241b0016a41086a290300370300200241106a41106a2204200241b0016a41106a290300370300200241106a41186a2206200241b0016a41186a290300370300200241386a200241d0016a41086a290300370300200241c0006a200241d0016a41106a290300370300200241c8006a200241d0016a41186a290300370300200241d8006a200241f0016a41086a290300370300200241e0006a200241f0016a41106a290300370300200241e8006a200241f0016a41186a290300370300200220022903b001370310200220022903d001370330200220022903f00137035020024188016a20024190026a41186a29030037030020024180016a20024190026a41106a290300370300200241f8006a20024190026a41086a29030037030020024198016a200241b0026a41086a290300370300200241a0016a200241b0026a41106a290300370300200241a8016a200241b0026a41186a2903003703002002200229039002370370200220022903b00237039001412010272201450d0320012002290310370000200141186a2006290300370000200141106a2004290300370000200141086a20032903003700002001412041c000102b2201450d032001200241106a41206a2203290000370020200141386a200341186a290000370000200141306a200341106a290000370000200141286a200341086a290000370000200141c000418001102b2201450d032001200241106a41c0006a22032900003700402001200241f0006a2204290000370060200141d8006a200341186a290000370000200141d0006a200341106a290000370000200141c8006a200341086a290000370000200141e8006a200441086a290000370000200141f0006a200441106a290000370000200141f8006a200441186a2900003700002001418001418002102b2201450d03200120024190016a22032900003700800120014198016a200341186a29000037000020014190016a200341106a29000037000020014188016a200341086a29000037000002402000450d002005a7450d00200010290b41a40110272200450d01200242a4013702142002200036021041a001200241106a10710240024020022802142206200228021822036b41a001490d00200341a0016a2104200228021021000c010b200341a0016a22042003490d03200641017422002004200020044b1b22074100480d030240024020060d00024020070d00410121000c020b200710272200450d060c010b2002280210210020062007460d00200020062007102b2200450d050b20022007360214200220003602100b200020036a200141a00110e4071a20011029200241e0026a24002004ad4220862000ad840f0b1038000b1039000b1032000b1030000b200241bc026a4104360200200241246a410236020020024202370214200241a0d1c200360210200241043602b4022002419cd4c2003602b002200241003602940220024180a6cc00360290022002200241b0026a360220200220024190026a3602b802200241106a41b0d1c2001040000bfa0103037f037e037f230041306b220324002003200136020c200341106a200210e602200328021421042003410c6a200335021842208620032802102205ad84101c22012900002106200141086a2900002107200141106a2900002108200341106a41186a2209200141186a290000370300200341106a41106a220a2008370300200341106a41086a220b20073703002003200637031020011029200041186a2009290300370000200041106a200a290300370000200041086a200b2903003700002000200329031037000002402004450d00200510290b024020022802002200450d00200241046a280200450d00200010290b200341306a24000bfa0103037f037e037f230041306b220324002003200136020c200341106a200210e602200328021421042003410c6a200335021842208620032802102205ad84101f22012900002106200141086a2900002107200141106a2900002108200341106a41186a2209200141186a290000370300200341106a41106a220a2008370300200341106a41086a220b20073703002003200637031020011029200041186a2009290300370000200041106a200a290300370000200041086a200b2903003700002000200329031037000002402004450d00200510290b024020022802002200450d00200241046a280200450d00200010290b200341306a24000bc80d03037f017e077f23004180036b22022400024002402001450d00200220003602080c010b20024180a6cc003602080b2002200136020c2002200241086a10c801024002400240024020022802000d00200228020c220320022802042201490d0002402001417f4c0d000240024020010d0041002103410121000c010b2001102d2200450d03200020022802082204200110e4071a2002200320016b36020c2002200420016a360208200121030b2000450d0120022001ad4220862003ad8422054220883e02dc02200220003602d802200241b0016a200241d8026a10c7030240024020022d00b0014101470d00410021060c010b200241106a200241b0016a41017241a00110e4071a200241b0016a200241106a41a00110e4071a200241003602e802200242043703e002412010272201450d03200120022903b001370000200141186a200241b0016a41186a290300370000200141106a200241b0016a41106a290300370000200141086a200241b0016a41086a290300370000200241e0026a41004101109c0120022802e402210720022802e002220620022802e80222044104746a220341e7e485f30636020c200342a08080808004370204200320013602002002200441016a22013602e802200241f0026a200241b0016a41206a10c803024020012007470d00200241e0026a20074101109c0120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200341e2c289ab0636020c200341086a200241f0026a41086a2802003602002002200141016a22013602e802200241f0026a200241f0016a10c803024020012007470d00200241e0026a20074101109c0120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200241f0026a41086a22042802002108200341e9dabdf30636020c200341086a20083602002002200141016a22013602e802200241f0026a20024190026a10c803024020012007470d00200241e0026a20074101109c0120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f00237020020042802002104200341f0c2c98b0636020c200341086a20043602002002200141016a22013602e802200241f0026a200241b0026a10c803024020012007470d00200241e0026a20074101109c0120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200241f0026a41086a2802002104200341e1ea91cb0636020c200341086a2004360200200141016a21090b02402005a7450d00200010290b0240024020060d00410121010c010b20094104744105722201417f4c0d010b200110272200450d02200241003602b801200220013602b401200220003602b0010240024020060d00200041003a000041012100200241013602b8010c010b200041013a0000200241013602b8012009200241b0016a1071024020090d0020022802b80121000c010b200620094104746a210a2006210103402001280200210b200141086a2802002200200241b0016a10710240024020022802b401220c20022802b80122086b2000490d0020022802b0012103200c21040c010b200820006a22032008490d06200c41017422042003200420034b1b22044100480d0602400240200c0d00024020040d00410121030c020b2004102722030d010c090b20022802b0012103200c2004460d002003200c2004102b2203450d080b200220043602b401200220033602b0010b200320086a200b200010e4071a2002200820006a22003602b8010240200420006b41034b0d00200041046a22082000490d062004410174220c2008200c20084b1b22084100480d060240024020040d00024020080d00410121030c020b200810272203450d090c010b20042008460d00200320042008102b2203450d080b200220083602b401200220033602b0010b200320006a2001410c6a2800003600002002200041046a22003602b801200141106a2201200a470d000b0b2000ad42208620023502b00184210502402006450d0002402009450d00200941047421002006210103400240200141046a280200450d00200128020010290b200141106a2101200041706a22000d000b0b200741ffffffff0071450d00200610290b20024180036a240020050f0b1038000b2002411c6a4104360200200241c4016a4102360200200242023702b401200241a0d1c2003602b00120024104360214200241bcd4c200360210200241003602f40220024180a6cc003602f0022002200241106a3602c0012002200241f0026a360218200241b0016a41b0d1c2001040000b1039000b1032000b1030000bc40b01087f23004190036b2202240041002103200241003a002820012802042204417f6a2105417f2106024002400240024002400240034020042003460d01200241086a20036a200128020022072d00003a00002001200420066a3602042001200741016a22083602002002200341016a22093a00282005417f6a21052006417f6a21062009210320094120470d000b200241a8016a41086a200241086a41086a290300370300200241a8016a41106a200241086a41106a290300370300200241a8016a41186a200241086a41186a290300370300200220022903083703a80141002106200241003a0028200420096b210303402003450d02200241086a20066a20082d00003a000020012003417f6a22033602042001200841016a22083602002002200641016a22093a00282009210620094120470d000b200241c8016a41086a200241086a41086a290300370300200241c8016a41106a200241086a41106a290300370300200241c8016a41186a200241086a41186a290300370300200220022903083703c80141002106200241003a0028200520096b2103200720096a210503402003417f460d03200241086a20066a200820066a2d00003a0000200120033602042001200520066a41026a3602002002200641016a22093a00282003417f6a21032009210620094120470d000b200241e8016a41086a200241086a41086a290300370300200241e8016a41106a200241086a41106a290300370300200241e8016a41186a200241086a41186a290300370300200220022903083703e80141002104200241003a0028200820096a2106200520096a210803402003417f460d04200241086a20046a20062d00003a0000200120033602042001200820046a41026a3602002002200441016a22093a00282003417f6a2103200641016a21062009210420094120470d000b20024188026a41086a200241086a41086a29030037030020024188026a41106a200241086a41106a29030037030020024188026a41186a200241086a41186a290300370300200220022903083703880241002109200241003a00880303402003417f460d05200241e8026a20096a20062d00003a0000200120033602042001200641016a22063602002002200941016a22083a0088032003417f6a21032008210920084120470d000b200241a8026a41086a2201200241e8026a41086a290300370300200241a8026a41106a2203200241e8026a41106a290300370300200241a8026a41186a2206200241e8026a41186a290300370300200241086a41086a200241a8016a41086a290300370300200241086a41106a200241a8016a41106a290300370300200241086a41186a200241a8016a41186a290300370300200220022903e8023703a802200220022903a801370308200241c0006a200241c8016a41186a290300370300200241386a200241c8016a41106a290300370300200241306a200241c8016a41086a290300370300200220022903c801370328200241e0006a200241e8016a41186a290300370300200241d8006a200241e8016a41106a290300370300200241d0006a200241e8016a41086a290300370300200220022903e80137034820024180016a20024188026a41186a290300370300200241f8006a20024188026a41106a290300370300200241f0006a20024188026a41086a2903003703002002200229038802370368200241a0016a200629030037030020024198016a200329030037030020024190016a2001290300370300200220022903a80237038801200041016a200241086a41a00110e4071a200041003a00000c050b0240200341ff0171450d00200241003a00280b200041013a00000c040b0240200641ff0171450d00200241003a00280b200041013a00000c030b0240200641ff0171450d00200241003a00280b200041013a00000c020b0240200441ff0171450d00200241003a00280b200041013a00000c010b0240200941ff0171450d00200241003a0088030b200041013a00000b20024190036a24000b5f01017f02404120102722020d001039000b200042a080808080043702042000200236020020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700000bb70302037f047e23004180016b2202240041002103200241003a004020004180a6cc0020011b210402400240034020012003460d01200241206a20036a200420036a2d00003a00002002200341016a22003a00402000210320004120470d000b200241186a200241206a41186a22032903002205370300200241106a200241206a41106a22002903002206370300200241086a200241206a41086a2201290300220737030020022002290320220837030020032005370300200020063703002001200737030020022008370320200241f0006a200241206a10ca03200241206a20022802702203200228027810a90220022903202105200241e8006a280200210002402002280274450d00200310290b4104102722030d011039000b0240200341ff0171450d00200241003a00400b200241346a41023602002002410c6a410436020020024202370224200241a0d1c20036022020024104360204200241d8d4c2003602002002410036027420024180a6cc00360270200220023602302002200241f0006a360208200241206a41b0d1c2001040000b20032000410020054201511b36000020024180016a24002003ad4280808080c000840bc20503027f017e047f230041d0006b2202240041b3e6ca00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941b9e6ca00ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100522012900002104200241306a41086a200141086a2900003703002002200437033020011029200241cc006a200341206a360200200220033602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a1075200310292002280228220541206a2201417f4c0d01200228022021060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a20002001360208200020083602042000200336020002402002280224450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000ba50503027f037e027f230041b0076b22022400024002402001450d00200220003602100c010b20024180a6cc003602100b20022001360214200241e0036a200241106a10870302400240024020022903c8044203510d00200241186a200241e0036a41c00310e4071a200228021422014104490d0120022802102200280000210320022001417c6a3602142002200041046a360210200241e0036a200241186a41c00310e4071a200241a0076a200241f8046a220110c3012002200320022903a007220420022d00a9074200420010c70241082100200241086a29030021052002290300210620022d00a8072103200110cc01410810272201450d022001200437000002400240200341024d0d00410821030c010b024002400240024020030e03000102000b410021030c020b410121030c010b410221030b200220033a00e00341102100200141084110102b2201450d03200120033a0008410921030b200341107221070240200020036b410f4b0d002000200041017422082007200820074b1b2208460d00200120002008102b2201450d030b200120036a2200200537000820002006370000200241b0076a24002007ad4220862001ad840f0b200241ac076a41043602002002412c6a41023602002002420237021c200241a0d1c200360218200241043602a407200241f0d4c2003602a007200241003602dc0320024180a6cc003602d8032002200241a0076a3602282002200241d8036a3602a807200241186a41b0d1c2001040000b200241ac076a4104360200200241f4036a4102360200200242023702e403200241a0d1c2003602e003200241043602a407200241f0d4c2003602a007200241003602dc0320024180a6cc003602d8032002200241a0076a3602f0032002200241d8036a3602a807200241e0036a41b0d1c2001040000b1030000bdd0201057f230041d0006b22022400024002400240410410272203450d00200341f0c2c98b063600002001280200210441082101200341044108102b2205450d0120052004360004200241003a004820052106410021030340200241003a0008200241086a20062001410047220410e4071a024020010d00200241003a00080b20012004490d03200241286a20036a20022d00083a00002002200341016a22033a0048200120046b2101200620046a210620034120470d000b200241086a41186a2201200241286a41186a290300370300200241086a41106a2203200241286a41106a290300370300200241086a41086a2204200241286a41086a2903003703002002200229032837030820051029200041186a2001290300370000200041106a2003290300370000200041086a200429030037000020002002290308370000200241d0006a24000f0b1039000b1030000b2004200141a896cc00104c000bfc0403027f017e057f230041d0006b2202240041c8bec500ad4280808080c00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e0f3c200ad4280808080900284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bd60402067f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022030d00200041023a00000c010b2002280214210402400240200241186a2802002205450d0020032d0000220641014b0d004100210102400240024020060e020100010b41002101200241003a0068200341016a21072005417f6a2106034020062001460d02200241c8006a20016a200720016a2d00003a00002002200141016a22053a00682005210120054120470d000b200241206a41186a200241c8006a41186a290300370300200241206a41106a200241c8006a41106a290300370300200241206a41086a200241c8006a41086a29030037030020022002290348370320410121010b200241c8006a41186a200241206a41186a2903002208370300200241c8006a41106a200241206a41106a2903002209370300200241c8006a41086a200241206a41086a290300220a37030020022002290320220b370348200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c020b200141ff0171450d00200241003a00680b20024100360228200242013703202002410d3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c200241f4eaca003602482002200241c0006a360258200241ec006a41a8a3c800200241c8006a10371a2002350228422086200235022084100802402002280224450d00200228022010290b410221010b200020013a00002004450d00200310290b200241f0006a24000bb10201037f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022010d00200041003602000c010b200228021421032002200241186a28020036022420022001360220200241c8006a200241206a10ba0402400240200228024822040d0020024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000c010b2000200229024c370204200020043602000b2003450d00200110290b200241e0006a24000bde0b02087f017e230041e0006b220124002001410036024020014201370338024002402000280200220241024b0d0002400240024002400240024020020e03000102000b410110272202450d062001410136023c20012002360238200241013a000020014101360240200028020421022000410c6a2802002203200141386a10710240024020030d00200128024021040c010b2002200341286c6a210520012802402104034002400240200128023c220620046b4120490d00200441206a210320012802382107200621080c010b200441206a22032004490d05200641017422072003200720034b1b22084100480d050240024020060d00024020080d00410121070c020b2008102722070d010c0b0b2001280238210720062008460d00200720062008102b2207450d0a0b2001200836023c200120073602380b200720046a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020012003360240200241206a29030021090240200820036b41074b0d00200341086a22042003490d05200841017422062004200620044b1b22044100480d050240024020080d00024020040d00410121070c020b200410272207450d0b0c010b20082004460d00200720082004102b2207450d0a0b2001200436023c200120073602380b200720036a20093700002001200341086a22043602402005200241286a2202470d000b0b02400240200128023c220320046b4120490d00200128023821020c010b200441206a22022004490d03200341017422072002200720024b1b22074100480d030240024020030d00024020070d00410121020c020b200710272202450d090c010b2001280238210220032007460d00200220032007102b2202450d080b2001200736023c200120023602380b200220046a2202200041106a2203290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a2900003700002001200441206a3602400c050b410110272202450d052001410136023c20012002360238200241023a0000200141013602402000280204210702400240200128023c2203417f6a4104490d00200128023821020c010b200341017422024105200241054b1b22044100480d0220012802382102024020032004460d00200220032004102b2202450d070b2001200436023c200120023602380b20022007360001200141053602400c040b410110272202450d042001410136023c20012002360238200241033a000020014101360240200128023821020240200128023c4101470d00200241014102102b2202450d052001410236023c200120023602380b200241013a0001200141023602402000290308210902400240200128023c2203417e6a4108490d00200128023821020c010b20034101742202410a2002410a4b1b22074100480d0120012802382102024020032007460d00200220032007102b2202450d060b2001200736023c200120023602380b200220093700022001410a36024020002903102109200128023c220341766a41074b0d01200341017422024112200241124b1b22074100480d0020012802382102024020032007460d00200220032007102b2202450d050b2002200937000a2001200736023c2001200236023820014112360240200041186a2d000021070c020b1032000b20012802382202200937000a20014112360240200041186a2d0000210720034112470d00200241124124102b2202450d022001412436023c200120023602380b200220073a0012200141133602400b200141246a200141386a41086a2802003600002001200129033837001c200141c4006a200141206a290000370000200141cc006a2001290208370200200141d4006a200141086a41086a290200370200200141c28289aa04360039200141023a00382001200129001937003d200141386a10d303024020002802000d00200041086a2802002202450d00200241286c450d00200028020410290b200141e0006a24000f0b1030000bd46c05017f1a7e037f0a7e057f230041901f6b22022400200131001221032001310011210420013100102105200131000f2106200131000d2107200131000e2108200131001f2109200131001e210a200131001d210b200131001c210c200131001b210d200131001a210e200131000c210f200131000b2110200131000a211120013100092112200131000721132001310008211420013100192115200131001821162001310017211720013100162118200131001321192001310014211a2001310015211b200220013100014208862001310000842001310002421086842001310003421886842001310004422086842001310005422886842001310006221c4230868442ffffffffffffff03833703901c20022019201a42088684201b4210868420184218868420174220868420164228868420154230868442018842ffffffffffffff03833703a81c2002201c201342088684201442108684201242188684201142208684201042288684200f4230868442038842ffffffffffffff03833703981c20022016201542088684200e42108684200d42188684200c42208684200b42288684200a42308684200942388684420c8842ffffffffffffff03833703b01c2002200f20074208868420084210868420064218868420054220868420044228868420034230868420194238868442068842ffffffffffffff03833703a01c200241b81c6a200241901c6a106a4100211d4101211e03402001201d6a2d0000200241b81c6a201d6a2d000073221f4100201f6b72417f7341800171410776106d201e71211e201d41016a221d4120470d000b201e106d211d200241c81e6a200241901c6a106a20022d00c81e410171106d211e4200210e0240201d41ff0171450d004200210e201e41ff01714101460d00200241d81c6a200241901c6a4101106b200242f0ffffffffffff3f20022903f81c220f7d221542ffffffffffffff038342f0ffffffffffff3f20022903f01c22167d22194233887c3703a01d2002201942ffffffffffffff038342f0ffffffffffff3f20022903e81c22197d22034233887c3703981d2002200342ffffffffffffff038342f0ffffffffffff3f20022903e01c22037d22044233887c3703901d2002200442ffffffffffffff038342d1fdffffffffff3f20022903d81c22047d22054233887c3703881d2002201542338842137e200542ffffffffffffff03837c3703801d2002200f3703c81d200220163703c01d200220193703b81d200220033703b01d2002200442017c3703a81d200241d01d6a200241a81d6a4101106b20024180196a200241801d6a4101106b4200210e200241e0186a200229038819220f420042ca8e9ae5dec6ac02420010d50720024190186a200229039019221642137e22054200428092f58893f9b701420010d507200241c0176a200229039819220342137e2204420042c486ffe299c731420010d507200241f0166a20022903a019220642137e2219420042d6fff8ffd98b8601420010d50720024180166a2002290380192215420042c2a2aaa7fcfa9503420010d507200241f0156a2015420042ca8e9ae5dec6ac02420010d507200241f0186a200f42137e4200428092f58893f9b701420010d507200241a0186a2005420042c486ffe299c731420010d507200241d0176a2004420042d6fff8ffd98b8601420010d50720024180176a2019420042c2a2aaa7fcfa9503420010d50720024180186a2016420042ca8e9ae5dec6ac02420010d507200241b0176a20044200428092f58893f9b701420010d507200241e0166a2019420042c486ffe299c731420010d50720024190166a2015420042d6fff8ffd98b8601420010d507200241d0186a200f420042c2a2aaa7fcfa9503420010d507200241a0176a2003420042ca8e9ae5dec6ac02420010d507200241d0166a20194200428092f58893f9b701420010d507200241a0166a2015420042c486ffe299c731420010d507200241c0186a200f420042d6fff8ffd98b8601420010d507200241f0176a2016420042c2a2aaa7fcfa9503420010d507200241c0166a2006420042ca8e9ae5dec6ac02420010d507200241b0166a20154200428092f58893f9b701420010d507200241b0186a200f420042c486ffe299c731420010d507200241e0176a2016420042d6fff8ffd98b8601420010d50720024190176a2003420042c2a2aaa7fcfa9503420010d507200241d0156a20022903b016221720022903c0167c220f20022903b0187c221520022903e0177c22162002290390177c221920022903d016221820022903a0177c220320022903a0167c220420022903c0187c220520022903f0177c220620022903b017221a2002290380187c220720022903e0167c22082002290390167c220920022903d0187c220a200229039018221b20022903e0187c220b20022903c0177c220c20022903f0167c220d2002290380167c221020022903f018221c20022903f0157c221120022903a0187c221220022903d0177c22132002290380177c2214423388200241f0186a41086a290300200241f0156a41086a2903007c2011201c54ad7c200241a0186a41086a2903007c2012201154ad7c200241d0176a41086a2903007c2013201254ad7c20024180176a41086a2903007c2014201354ad7c420d86847c221142338820024190186a41086a290300200241e0186a41086a2903007c200b201b54ad7c200241c0176a41086a2903007c200c200b54ad7c200241f0166a41086a2903007c200d200c54ad7c20024180166a41086a2903007c2010200d54ad7c2011201054ad7c420d86847c220b423388200241b0176a41086a29030020024180186a41086a2903007c2007201a54ad7c200241e0166a41086a2903007c2008200754ad7c20024190166a41086a2903007c2009200854ad7c200241d0186a41086a2903007c200a200954ad7c200b200a54ad7c420d86847c2207423388200241d0166a41086a290300200241a0176a41086a2903007c2003201854ad7c200241a0166a41086a2903007c2004200354ad7c200241c0186a41086a2903007c2005200454ad7c200241f0176a41086a2903007c2006200554ad7c2007200654ad7c420d86847c220542ffffffffffffff038320022903f01d22067d42f0ffffffffffff3f7c220842ffffffffffffff0383200742ffffffffffffff038320022903e81d22047d42f0ffffffffffff3f7c22074233887c220c420020022903e01d220342137e2209420010d507200241e0136a200842338842137e2005423388200241b0166a41086a290300200241c0166a41086a2903007c200f201754ad7c200241b0186a41086a2903007c2015200f54ad7c200241e0176a41086a2903007c2016201554ad7c20024190176a41086a2903007c2019201654ad7c2005201954ad7c420d868442137e201442feffffffffffff03837c221542ffffffffffffff038320022903d01d22167d42d0fdffffffffff3f7c220d42ffffffffffffff03837c220f420020022903d81d2219420010d50720024180156a200742ffffffffffffff0383200b42ffffffffffffff038320037d42f0ffffffffffff3f7c22054233887c220a4200200442137e2207420010d507200241b0146a200542ffffffffffffff03832015423388201142ffffffffffffff03837c20197d42f0ffffffffffff3f7c22154233887c22084200200642137e2205420010d50720024190136a201542ffffffffffffff0383200d4233887c221542002016420010d507200241e0156a200c4200201942137e420010d507200241f0136a20164200200f420010d50720024190156a200a42002009420010d507200241c0146a200842002007420010d507200241a0136a201542002005420010d507200241c0156a200c42002007420010d507200241d0136a200f42002003420010d507200241f0146a200a42002005420010d507200241a0146a200842002016420010d50720024180136a201542002019420010d507200241b0156a200c42002005420010d507200241c0136a200f42002004420010d507200241e0146a200a42002016420010d50720024190146a200842002019420010d507200241f0126a201542002003420010d507200241a0156a200c42002016420010d507200241b0136a200f42002006420010d507200241d0146a200a42002019420010d50720024180146a200842002003420010d507200241e0126a201542002004420010d507200220022903c015221220022903d0137c221620022903f0147c221920022903a0147c22032002290380137c220420022903d015221320022903e0137c22052002290380157c220620022903b0147c22072002290390137c220920022903e015221420022903f0137c220b2002290390157c220d20022903c0147c221020022903a0137c2211423388200241e0156a41086a290300200241f0136a41086a2903007c200b201454ad7c20024190156a41086a2903007c200d200b54ad7c200241c0146a41086a2903007c2010200d54ad7c200241a0136a41086a2903007c2011201054ad7c420d86847c220b423388200241d0156a41086a290300200241e0136a41086a2903007c2005201354ad7c20024180156a41086a2903007c2006200554ad7c200241b0146a41086a2903007c2007200654ad7c20024190136a41086a2903007c2009200754ad7c200b200954ad7c420d86847c220542ffffffffffffff03833703b01e200220022903b015221020022903c0137c220620022903e0147c22072002290390147c220920022903f0127c220d2005423388200241c0156a41086a290300200241d0136a41086a2903007c2016201254ad7c200241f0146a41086a2903007c2019201654ad7c200241a0146a41086a2903007c2003201954ad7c20024180136a41086a2903007c2004200354ad7c2005200454ad7c420d86847c221642ffffffffffffff03833703b81e200220022903a015221220022903b0137c221920022903d0147c22032002290380147c220420022903e0127c22052016423388200241b0156a41086a290300200241c0136a41086a2903007c2006201054ad7c200241e0146a41086a2903007c2007200654ad7c20024190146a41086a2903007c2009200754ad7c200241f0126a41086a2903007c200d200954ad7c2016200d54ad7c420d86847c221642ffffffffffffff03833703c01e20022016423388200241a0156a41086a290300200241b0136a41086a2903007c2019201254ad7c200241d0146a41086a2903007c2003201954ad7c20024180146a41086a2903007c2004200354ad7c200241e0126a41086a2903007c2005200454ad7c2016200554ad7c420d868442137e201142ffffffffffffff03837c221642ffffffffffffff03833703a01e20022016423388200b42ffffffffffffff03837c3703a81e200241e81e6a41106a4200370300200241e81e6a41186a4200370300200241e81e6a41206a4200370300200242003703f01e200242013703e81e20024180196a200241e81e6a200241a01e6a106c20024190106a2002290388192216420020022903b01d2206420010d507200241a0106a200241a8196a2903002219420020022903b81d220942137e2211420010d50720024180116a20024180196a41206a2903002203420020022903c01d220d42137e2210420010d507200241e0116a20024180196a41186a2903002204420020022903c81d221242137e220b420010d507200241d0126a20024180196a41106a2903002205420020022903a81d2207420010d50720024190126a200742002016420010d507200241d00f6a20194200200642137e420010d507200241b0106a200342002011420010d50720024190116a200442002010420010d507200241f0116a20054200200b420010d507200241e0106a201642002009420010d507200241f0106a201942002010420010d507200241d0116a20034200200b420010d507200241c0126a200442002007420010d50720024180106a200542002006420010d507200241b0116a20164200200d420010d507200241c0116a20194200200b420010d507200241b0126a200342002007420010d507200241f00f6a200442002006420010d507200241d0106a200542002009420010d50720024180126a201642002012420010d507200241a0126a201942002007420010d507200241e00f6a200342002006420010d507200241c0106a200442002009420010d507200241a0116a20054200200d420010d507200241800f6a20022903a01222202002290380127c220620022903e00f7c220720022903c0107c220920022903a0117c220b20022903c011222120022903b0117c220d20022903b0127c221020022903f00f7c221120022903d0107c221220022903f010222220022903e0107c221320022903d0117c221420022903c0127c22172002290380107c221820022903a01022232002290390107c221a2002290380117c221b20022903e0117c221c20022903d0127c222420022903d00f22252002290390127c222620022903b0107c22272002290390117c222820022903f0117c2229423388200241d00f6a41086a29030020024190126a41086a2903007c2026202554ad7c200241b0106a41086a2903007c2027202654ad7c20024190116a41086a2903007c2028202754ad7c200241f0116a41086a2903007c2029202854ad7c420d86847c2226423388200241a0106a41086a29030020024190106a41086a2903007c201a202354ad7c20024180116a41086a2903007c201b201a54ad7c200241e0116a41086a2903007c201c201b54ad7c200241d0126a41086a2903007c2024201c54ad7c2026202454ad7c420d86847c221a423388200241f0106a41086a290300200241e0106a41086a2903007c2013202254ad7c200241d0116a41086a2903007c2014201354ad7c200241c0126a41086a2903007c2017201454ad7c20024180106a41086a2903007c2018201754ad7c201a201854ad7c420d86847c2213423388200241c0116a41086a290300200241b0116a41086a2903007c200d202154ad7c200241b0126a41086a2903007c2010200d54ad7c200241f00f6a41086a2903007c2011201054ad7c200241d0106a41086a2903007c2012201154ad7c2013201254ad7c420d86847c221042ffffffffffffff0383220d4200200842137e2212420010d507200241c00a6a2010423388200241a0126a41086a29030020024180126a41086a2903007c2006202054ad7c200241e00f6a41086a2903007c2007200654ad7c200241c0106a41086a2903007c2009200754ad7c200241a0116a41086a2903007c200b200954ad7c2010200b54ad7c420d868442137e202942ffffffffffffff03837c220742ffffffffffffff0383220642002015420010d507200241a00e6a201342ffffffffffffff0383220b4200200a42137e2211420010d507200241a00d6a201a42ffffffffffffff038322094200200c42137e2210420010d507200241e00b6a2007423388202642ffffffffffffff03837c22074200200f420010d507200241b0096a200d4200201542137e420010d507200241d00a6a200f42002006420010d507200241900e6a200b42002012420010d507200241900d6a200942002011420010d507200241f00b6a200742002010420010d507200241900f6a200d42002011420010d507200241b00a6a200642002008420010d507200241b00e6a200b42002010420010d507200241b00d6a20094200200f420010d507200241d00b6a200742002015420010d507200241a00f6a200d42002010420010d507200241a00a6a20064200200a420010d507200241c00e6a200b4200200f420010d507200241c00d6a200942002015420010d507200241c00b6a200742002008420010d507200241b00f6a200d4200200f420010d507200241900a6a20064200200c420010d507200241d00e6a200b42002015420010d507200241d00d6a200942002008420010d507200241b00b6a20074200200a420010d507200241800c6a20022903b01c420186220f4200200942137e2212420010d507200241a00b6a20022903901c420186221542002007420010d507200241b00c6a20022903a81c42018622084200200b42137e2211420010d507200241f00c6a20022903a01c420186220a4200200d42137e2210420010d507200241f0096a20022903981c420186220c42002006420010d507200241800a6a200642002015420010d507200241e00a6a200f4200200742137e420010d507200241900c6a200842002012420010d507200241c00c6a200a42002011420010d507200241800d6a200c42002010420010d507200241e00d6a201542002009420010d507200241a00c6a200f42002011420010d507200241e00c6a200842002010420010d507200241e0096a200a42002006420010d507200241900b6a200c42002007420010d507200241e00e6a20154200200b420010d507200241d00c6a200f42002010420010d507200241d0096a200842002006420010d507200241800b6a200a42002007420010d507200241f00d6a200c42002009420010d507200241c00f6a20154200200d420010d507200241c0096a200f42002006420010d507200241f00a6a200842002007420010d507200241800e6a200a42002009420010d507200241f00e6a200c4200200b420010d507200241c0076a2019420020022903900f221820022903b00a7c220f20022903b00e7c221520022903b00d7c220720022903d00b7c220820022903800f221220022903c00a7c220620022903a00e7c220920022903a00d7c220a20022903e00b7c220b20022903b009221320022903d00a7c220c20022903900e7c220d20022903900d7c221020022903f00b7c2211423388200241b0096a41086a290300200241d00a6a41086a2903007c200c201354ad7c200241900e6a41086a2903007c200d200c54ad7c200241900d6a41086a2903007c2010200d54ad7c200241f00b6a41086a2903007c2011201054ad7c420d86847c220c423388200241800f6a41086a290300200241c00a6a41086a2903007c2006201254ad7c200241a00e6a41086a2903007c2009200654ad7c200241a00d6a41086a2903007c200a200954ad7c200241e00b6a41086a2903007c200b200a54ad7c200c200b54ad7c420d86847c220942ffffffffffffff0383220642137e221a420010d507200241a0076a2016420020022903b00f221b20022903900a7c220a20022903d00e7c220b20022903d00d7c220d20022903b00b7c221020022903a00f221c20022903a00a7c221220022903c00e7c221320022903c00d7c221420022903c00b7c22172009423388200241900f6a41086a290300200241b00a6a41086a2903007c200f201854ad7c200241b00e6a41086a2903007c2015200f54ad7c200241b00d6a41086a2903007c2007201554ad7c200241d00b6a41086a2903007c2008200754ad7c2009200854ad7c420d86847c2215423388200241a00f6a41086a290300200241a00a6a41086a2903007c2012201c54ad7c200241c00e6a41086a2903007c2013201254ad7c200241c00d6a41086a2903007c2014201354ad7c200241c00b6a41086a2903007c2017201454ad7c2015201754ad7c420d86847c2207423388200241b00f6a41086a290300200241900a6a41086a2903007c200a201b54ad7c200241d00e6a41086a2903007c200b200a54ad7c200241d00d6a41086a2903007c200d200b54ad7c200241b00b6a41086a2903007c2010200d54ad7c2007201054ad7c420d868442137e201142ffffffffffffff03837c220a423388200c42ffffffffffffff03837c220f420010d507200241f0076a20034200201542ffffffffffffff0383220842137e2209420010d507200241b0086a20044200200742ffffffffffffff0383220b42137e2207420010d507200241d0066a20054200200a42ffffffffffffff03832215420010d507200241e0066a201542002016420010d507200241b0076a20194200200f42137e420010d507200241d0076a20034200201a420010d50720024180086a200442002009420010d507200241c0086a200542002007420010d507200241d0086a201642002006420010d507200241e0076a201942002009420010d507200241a0086a200342002007420010d507200241c0066a200442002015420010d50720024190076a20054200200f420010d50720024180096a201642002008420010d50720024190086a201942002007420010d507200241e0056a200342002015420010d50720024180076a20044200200f420010d507200241e0086a200542002006420010d507200241a0096a20164200200b420010d50720024180056a201942002015420010d507200241f0066a20034200200f420010d507200241f0086a200442002006420010d50720024190096a200542002008420010d50720022d008019211d200220022903c009221720022903c00f7c220f20022903f00a7c221520022903800e7c221620022903f00e7c221920022903d00c221820022903e00e7c220320022903d0097c220420022903800b7c220520022903f00d7c220620022903a00c221a20022903e00d7c220720022903e00c7c220820022903e0097c220920022903900b7c220a20022903800c221b20022903a00b7c220b20022903b00c7c220c20022903f00c7c220d20022903f0097c221020022903e00a221c20022903800a7c221120022903900c7c221220022903c00c7c221320022903800d7c2214423388200241e00a6a41086a290300200241800a6a41086a2903007c2011201c54ad7c200241900c6a41086a2903007c2012201154ad7c200241c00c6a41086a2903007c2013201254ad7c200241800d6a41086a2903007c2014201354ad7c420d86847c2211423388200241800c6a41086a290300200241a00b6a41086a2903007c200b201b54ad7c200241b00c6a41086a2903007c200c200b54ad7c200241f00c6a41086a2903007c200d200c54ad7c200241f0096a41086a2903007c2010200d54ad7c2011201054ad7c420d86847c220b423388200241a00c6a41086a290300200241e00d6a41086a2903007c2007201a54ad7c200241e00c6a41086a2903007c2008200754ad7c200241e0096a41086a2903007c2009200854ad7c200241900b6a41086a2903007c200a200954ad7c200b200a54ad7c420d86847c2209423388200241d00c6a41086a290300200241e00e6a41086a2903007c2003201854ad7c200241d0096a41086a2903007c2004200354ad7c200241800b6a41086a2903007c2005200454ad7c200241f00d6a41086a2903007c2006200554ad7c2009200654ad7c420d86847c2203423388200241c0096a41086a290300200241c00f6a41086a2903007c200f201754ad7c200241f00a6a41086a2903007c2015200f54ad7c200241800e6a41086a2903007c2016201554ad7c200241f00e6a41086a2903007c2019201654ad7c2003201954ad7c420d868442137e201442ffffffffffffff03837c220f423388201142ffffffffffffff03837c22073703801e2002200f42ffffffffffffff038322083703f81d2002200342ffffffffffffff038322063703981e2002200942ffffffffffffff038322093703901e2002200b42ffffffffffffff0383220a3703881e200241c0076a41086a2903002118200241a0076a41086a290300211a20022903c007211520022903a007210b200241f0076a41086a290300211b20022903f007210d200241b0086a41086a290300211c20022903b0082110200241d0066a41086a290300212420022903d0062111200241e0066a41086a2903002126200241b0076a41086a290300212720022903e006211220022903b0072116200241d0076a41086a290300212820022903d007211320024180086a41086a29030021292002290380082114200241c0086a41086a290300212020022903c008211720022903d008210320022903e007211920022903a008210420022903c0062105200229039007210c200241c81e6a200241f81d6a106a20022d00c81e410171106d211e200241f0056a20022903a01d220f4200200c20052004201920037c22037c22047c22057c220c20112010200d2015200b7c220b7c220d7c22107c2211201720142013201620127c22127c22137c22147c2217423388202020292028202720267c2012201654ad7c7c2013201254ad7c7c2014201354ad7c7c2017201454ad7c420d86847c22164233882024201c201b2018201a7c200b201554ad7c7c200d200b54ad7c7c2010200d54ad7c7c2011201054ad7c2016201154ad7c420d86847c220d42ffffffffffffff0383220b42137e221c420010d507200241d0046a20022903801d22154200200229038005222420022903a0097c221020022903f0067c221120022903f0087c22122002290390097c221320022903900822262002290380097c221420022903e0057c22182002290380077c221a20022903e0087c221b200d423388200241e0076a41086a290300200241d0086a41086a2903007c2003201954ad7c200241a0086a41086a2903007c2004200354ad7c200241c0066a41086a2903007c2005200454ad7c20024190076a41086a2903007c200c200554ad7c200d200c54ad7c420d86847c220342338820024190086a41086a29030020024180096a41086a2903007c2014202654ad7c200241e0056a41086a2903007c2018201454ad7c20024180076a41086a2903007c201a201854ad7c200241e0086a41086a2903007c201b201a54ad7c2003201b54ad7c420d86847c220442338820024180056a41086a290300200241a0096a41086a2903007c2010202454ad7c200241f0066a41086a2903007c2011201054ad7c200241f0086a41086a2903007c2012201154ad7c20024190096a41086a2903007c2013201254ad7c2004201354ad7c420d868442137e201742ffffffffffffff03837c2205423388201642ffffffffffffff03837c2216420010d507200241a0056a20022903981d22194200200342ffffffffffffff0383220d42137e2210420010d507200241b0036a20022903901d22034200200442ffffffffffffff0383221142137e220c420010d50720024180046a20022903881d22044200200542ffffffffffffff03832205420010d50720024190046a200542002015420010d507200241e0046a200f4200201642137e420010d50720024180066a20194200201c420010d507200241b0056a200342002010420010d507200241c0036a20044200200c420010d50720024190066a20154200200b420010d50720024190056a200f42002010420010d507200241a0036a20194200200c420010d507200241f0036a200342002005420010d507200241c0046a200442002016420010d507200241c0056a20154200200d420010d507200241c0026a200f4200200c420010d507200241e0036a201942002005420010d507200241b0046a200342002016420010d507200241a0066a20044200200b420010d507200241f0046a201542002011420010d507200241d0036a200f42002005420010d507200241a0046a201942002016420010d507200241b0066a20034200200b420010d507200241d0056a20044200200d420010d507200241d0026a42f0ffffffffffff3f20067d221342ffffffffffffff038342f0ffffffffffff3f20097d221a4233887c2006854200201ead42ff01837d220483200685220f4200200229039005221b2002290390067c221620022903a0037c221920022903f0037c220320022903c0047c220520022903f005221420022903d0047c221520022903a0057c220620022903b0037c220b2002290380047c220c20022903e00422172002290390047c220d2002290380067c221020022903b0057c221120022903c0037c2212423388200241e0046a41086a29030020024190046a41086a2903007c200d201754ad7c20024180066a41086a2903007c2010200d54ad7c200241b0056a41086a2903007c2011201054ad7c200241c0036a41086a2903007c2012201154ad7c420d86847c220d423388200241f0056a41086a290300200241d0046a41086a2903007c2015201454ad7c200241a0056a41086a2903007c2006201554ad7c200241b0036a41086a2903007c200b200654ad7c20024180046a41086a2903007c200c200b54ad7c200d200c54ad7c420d86847c220b42ffffffffffffff0383220642137e221c420010d507200241c0016a201342338842137e42d0fdffffffffff3f20087d222442ffffffffffffff03837c2008852004832008852215420020022903d003222620022903f0047c220820022903a0047c220c20022903b0067c221020022903d0057c221120022903c002222720022903c0057c221320022903e0037c221420022903b0047c221720022903a0067c2218200b42338820024190056a41086a29030020024190066a41086a2903007c2016201b54ad7c200241a0036a41086a2903007c2019201654ad7c200241f0036a41086a2903007c2003201954ad7c200241c0046a41086a2903007c2005200354ad7c200b200554ad7c420d86847c2203423388200241c0026a41086a290300200241c0056a41086a2903007c2013202754ad7c200241e0036a41086a2903007c2014201354ad7c200241b0046a41086a2903007c2017201454ad7c200241a0066a41086a2903007c2018201754ad7c2003201854ad7c420d86847c2205423388200241d0036a41086a290300200241f0046a41086a2903007c2008202654ad7c200241a0046a41086a2903007c200c200854ad7c200241b0066a41086a2903007c2010200c54ad7c200241d0056a41086a2903007c2011201054ad7c2005201154ad7c420d868442137e201242ffffffffffffff03837c220c423388200d42ffffffffffffff03837c2216420010d507200241f0016a201a42ffffffffffffff038342f0ffffffffffff3f200a7d220d4233887c20098520048320098522194200200342ffffffffffffff0383220842137e220b420010d507200241206a200d42ffffffffffffff038342f0ffffffffffff3f20077d220d4233887c200a85200483200a8522034200200542ffffffffffffff0383220a42137e2209420010d507200241f0006a200d42ffffffffffffff038320244233887c20078520048320078522044200200c42ffffffffffffff03832205420010d50720024180016a200542002015420010d507200241d0016a200f4200201642137e420010d507200241e0026a20194200201c420010d50720024180026a20034200200b420010d507200241306a200442002009420010d507200241f0026a201542002006420010d507200241e0016a200f4200200b420010d507200241106a201942002009420010d507200241e0006a200342002005420010d507200241b0016a200442002016420010d50720024190026a201542002008420010d5072002200f42002009420010d507200241d0006a201942002005420010d507200241a0016a200342002016420010d50720024180036a200442002006420010d507200241b0026a20154200200a420010d507200241c0006a200f42002005420010d50720024190016a201942002016420010d50720024190036a200342002006420010d507200241a0026a200442002008420010d5072002200f3703981e200220193703901e200220033703881e200220043703801e200220153703f81d200220063703b01e200220083703b81e2002200a3703c01e200220053703a01e200220163703a81e200220022903e001220b20022903f0027c220f20022903107c221520022903607c221620022903b0017c221920022903d002220c20022903c0017c220320022903f0017c220420022903207c220520022903707c220620022903d001220d2002290380017c220720022903e0027c22082002290380027c220920022903307c220a423388200241d0016a41086a29030020024180016a41086a2903007c2007200d54ad7c200241e0026a41086a2903007c2008200754ad7c20024180026a41086a2903007c2009200854ad7c200241306a41086a2903007c200a200954ad7c420d86847c2207423388200241d0026a41086a290300200241c0016a41086a2903007c2003200c54ad7c200241f0016a41086a2903007c2004200354ad7c200241206a41086a2903007c2005200454ad7c200241f0006a41086a2903007c2006200554ad7c2007200654ad7c420d86847c220342ffffffffffffff03833703f81e2002200229030022092002290390027c220420022903507c220520022903a0017c22062002290380037c22082003423388200241e0016a41086a290300200241f0026a41086a2903007c200f200b54ad7c200241106a41086a2903007c2015200f54ad7c200241e0006a41086a2903007c2016201554ad7c200241b0016a41086a2903007c2019201654ad7c2003201954ad7c420d86847c220f42ffffffffffffff03833703801f20022002290340220b20022903b0027c22152002290390017c22162002290390037c221920022903a0027c2203200f423388200241086a29030020024190026a41086a2903007c2004200954ad7c200241d0006a41086a2903007c2005200454ad7c200241a0016a41086a2903007c2006200554ad7c20024180036a41086a2903007c2008200654ad7c200f200854ad7c420d86847c220f42ffffffffffffff03833703881f2002200f423388200241c0006a41086a290300200241b0026a41086a2903007c2015200b54ad7c20024190016a41086a2903007c2016201554ad7c20024190036a41086a2903007c2019201654ad7c200241a0026a41086a2903007c2003201954ad7c200f200354ad7c420d868442137e200a42ffffffffffffff03837c220f42ffffffffffffff03833703e81e2002200f423388200742ffffffffffffff03837c3703f01e201d450d00200241c81e6a200241e81e6a106a20022d00c81e410171106d41ff01714101460d0020024198196a420037030020024190196a420037030020024188196a42003703002002420037038019200241c81e6a200241a01e6a106a20022d00c81e221d4100201d6b72417f7341800171410776106d410171211e4101211d0340200241c81e6a201d6a2d000020024180196a201d6a2d000073221f4100201f6b72417f7341800171410776106d201e71211e201d41016a221d4120470d000b4200210e201e106d41ff01714101460d0020024180196a41206a200241f81d6a41206a29030037030020024180196a41186a200241f81d6a41186a29030037030020024180196a41106a200241f81d6a41106a29030037030020024180196a41086a200241f81d6a41086a290300370300200241b0196a200241a01e6a41086a290300370300200241b8196a200241a01e6a41106a290300370300200241c0196a200241a01e6a41186a290300370300200241c8196a200241a01e6a41206a290300370300200220022903f81d37038019200220022903a01e3703a819200241c01b6a20024180196a41d00010e4071a200241a01b6a41086a4200370300200241a01b6a41106a4200370300200241a01b6a41186a4200370300200241f81a6a41086a200241e81e6a41086a290300370300200241f81a6a41106a200241e81e6a41106a290300370300200241f81a6a41186a200241e81e6a41186a290300370300200241f81a6a41206a200241e81e6a41206a290300370300200242003703a01b200220022903e81e3703f81a4201210e0b02400240200e4200520d00200241a01a6a410f6a20024180196a410f6a2201290000370000200241a01a6a41086a20024180196a41086a221e29000037030020022002290080193703a01a20024180196a200241a01a6a41d30010e4071a200241e81e6a41186a200241801a6a41186a290000370300200241e81e6a41106a200241801a6a41106a290000370300200241e81e6a41086a200241801a6a41086a290000370300200241c01b6a41086a200241d8196a41086a290000370300200241c01b6a41106a200241d8196a41106a290000370300200241c01b6a41186a200241d8196a41186a290000370300200241c01b6a41206a200241d8196a41206a290000370300200220022900801a3703e81e200220022900d8193703c01b4101211d200041013a000420002002290080193700052000410d6a201e290000370000200041146a20012900003700000c010b200241a01a6a410372200241c01b6a41d00010e4071a200241801a6a41186a221d200241a01b6a41186a290300370300200241801a6a41106a221e200241a01b6a41106a290300370300200241801a6a41086a221f200241a01b6a41086a290300370300200241d8196a41086a222a200241f81a6a41086a290300370300200241d8196a41106a222b200241f81a6a41106a290300370300200241d8196a41186a222c200241f81a6a41186a290300370300200241d8196a41206a222d200241f81a6a41206a290300370300200220022903a01b3703801a200220022903f81a3703d81920024180196a200241a01a6a41d30010e4071a200241e81e6a41186a222e201d290300370300200241e81e6a41106a221d201e290300370300200241e81e6a41086a221e201f290300370300200241c01b6a41086a221f202a290300370300200241c01b6a41106a222a202b290300370300200241c01b6a41186a222b202c290300370300200241c01b6a41206a222c202d290300370300200220022903801a3703e81e200220022903d8193703c01b200041086a20024180196a41036a41d00010e4071a200041d8006a4201370300200041e0006a20022903e81e370000200041e8006a201e290300370000200041f0006a201d290300370000200041f8006a202e29030037000020004180016a20022903c01b37000020004188016a201f29030037000020004190016a202a29030037000020004198016a202b290300370000200041a0016a202c290300370000200041c0016a200141186a290000370000200041b8016a200141106a290000370000200041b0016a200141086a290000370000200041a8016a20012900003700004100211d0b2000201d360200200241901f6a24000bf18f020a067f1a7e037f017e017f307e057f157e017f057e23004180cb006b22042400200441d8c6006a200341d00110e4071a200441d8c6006a41d8a7c7004109200241a0016a412010830120044188c5006a200441d8c6006a41d00110e4071a200441a8c8006a41386a22054200370300200441a8c8006a41306a22064200370300200441a8c8006a41286a22074200370300200441a8c8006a41206a22024200370300200441a8c8006a41186a22034200370300200441a8c8006a41106a22084200370300200441a8c8006a41086a22094200370300200442003703a84820044188c5006a41929fc8004107200441a8c8006a41c0001085012008310000210a2009310000210b2003310000210c20043100ba48210d20043100b948210e20043100b748210f20043100b548211020043100b648211120043100c748211220043100c648211320043100c548211420043100c448211520043100c348211620043100c248211720043100b448211820043100b348211920043100b248211a20043100b148211b20043100af48211c20043100c148211d20043100bf48211e20043100be48211f20043100bb48212020043100bc48212120043100bd482122200420043100a94842088620043100a8488420043100aa484210868420043100ab484218868420043100ac484220868420043100ad484228868420043100ae4822234230868442ffffffffffffff03833703b04a20042020202142088684202242108684201f42188684201e42208684200c42288684201d4230868442018842ffffffffffffff03833703c84a20042023201c42088684200b42108684201b42188684201a4220868420194228868420184230868442038842ffffffffffffff03833703b84a2004200c201d42088684201742108684201642188684201542208684201442288684201342308684201242388684420c8842ffffffffffffff03833703d04a20042018201042088684201142108684200f42188684200a42208684200e42288684200d4230868420204238868442068842ffffffffffffff03833703c04a200441e8c8006a200441b0ca006a106e2006310000210a2007310000210b2005310000210c20043100da48210d20043100d948210e20043100d748210f20043100d548211020043100d648211120043100e748211220043100e648211320043100e548211420043100e448211520043100e348211620043100e248211720043100d448211820043100d348211920043100d248211a20043100d148211b20043100cf48211c20043100e148211d20043100df48211e20043100de48211f20043100db48212020043100dc48212120043100dd482122200420043100c94842088620023100008420043100ca484210868420043100cb484218868420043100cc484220868420043100cd484228868420043100ce4822234230868442ffffffffffffff03833703d84a20042020202142088684202242108684201f42188684201e42208684200c42288684201d4230868442018842ffffffffffffff03833703f04a20042023201c42088684200b42108684201b42188684201a4220868420194228868420184230868442038842ffffffffffffff03833703e04a2004200c201d42088684201742108684201642188684201542208684201442288684201342308684201242388684420c8842ffffffffffffff03833703f84a20042018201042088684201142108684200f42188684200a42208684200e42288684200d4230868420204238868442068842ffffffffffffff03833703e84a200441d8c6006a200441d8ca006a106e200441a8356a20042903d047220c420042fabaabb1878ad401420010d507200441f8356a200441d8c6006a4198016a2903002218420042968c8a82a4c39824420010d507200441c8366a200441d8c6006a4190016a290300221d420042d587a4ceaceea43d420010d50720044198376a200441d8c6006a4188016a2903002220420042edd39cadab84b215420010d507200441e8376a200441d8c6006a4180016a290300220a420042d9e2cbb5c2f2a603420010d50720044198356a200c420042d9e2cbb5c2f2a603420010d507200441e8356a20184200428ee0b9a98cbfbd1f420010d507200441b8366a201d420042968c8a82a4c39824420010d50720044188376a2020420042d587a4ceaceea43d420010d507200441d8376a200a420042edd39cadab84b215420010d507200441b8356a200c420042d2808e80cce8f301420010d50720044188366a2018420042d587a4ceaceea43d420010d507200441d8366a201d420042edd39cadab84b215420010d507200441a8376a2020420042d9e2cbb5c2f2a603420010d507200441f8376a200a420042fabaabb1878ad401420010d507200441c8356a200c420042f7f281baccf19c03420010d50720044198366a2018420042edd39cadab84b215420010d507200441e8366a201d420042d9e2cbb5c2f2a603420010d507200441b8376a2020420042fabaabb1878ad401420010d50720044188386a200a420042d2808e80cce8f301420010d507200441d8356a200c420042ffdb95eed98d9001420010d507200441a8366a2018420042d9e2cbb5c2f2a603420010d507200441f8366a201d420042fabaabb1878ad401420010d507200441c8376a2020420042d2808e80cce8f301420010d50720044198386a200a420042f7f281baccf19c03420010d507200441b8386a20042903b849220c4200200441d8c6006a41d8006a22072903002218420010d507200441c8396a200441e8c8006a41f0006a290300221d4200200441d8c6006a41e0006a290300220e42137e2212420010d507200441883a6a200441e8c8006a41e8006a29030022204200200441d8c6006a41e8006a290300221042137e2211420010d507200441c83a6a200441e8c8006a41e0006a290300220a4200200441d8c6006a41f0006a290300221342137e220f420010d507200441f8386a200441e8c8006a41d8006a290300220b420020042903a847220d420010d507200441a8386a200d4200200c420010d507200441b8396a201d4200201842137e420010d507200441f8396a202042002012420010d507200441b83a6a200a42002011420010d507200441f83a6a200b4200200f420010d507200441c8386a200c4200200e420010d507200441d8396a201d42002011420010d507200441983a6a20204200200f420010d50720044188396a200a4200200d420010d507200441883b6a200b42002018420010d507200441d8386a200c42002010420010d507200441e8396a201d4200200f420010d50720044198396a20204200200d420010d507200441d83a6a200a42002018420010d507200441983b6a200b4200200e420010d507200441e8386a200c42002013420010d507200441a8396a201d4200200d420010d507200441a83a6a202042002018420010d507200441e83a6a200a4200200e420010d507200441a83b6a200b42002010420010d507200441a8336a200441e8c8006a4198016a290300220c4200200429038836221a20042903b8357c221d20042903d8367c222020042903a8377c220a20042903f8377c220b20042903f835221420042903a8357c221820042903c8367c220d2004290398377c220e20042903e8377c220f20042903e83522152004290398357c221020042903b8367c22112004290388377c221220042903d8377c2213423388200441e8356a41086a29030020044198356a41086a2903007c2010201554ad7c200441b8366a41086a2903007c2011201054ad7c20044188376a41086a2903007c2012201154ad7c200441d8376a41086a2903007c2013201254ad7c420d86847c2210423388200441f8356a41086a290300200441a8356a41086a2903007c2018201454ad7c200441c8366a41086a2903007c200d201854ad7c20044198376a41086a2903007c200e200d54ad7c200441e8376a41086a2903007c200f200e54ad7c2010200f54ad7c420d86847c220d42ffffffffffffff0383220e42137e221b420010d50720044188336a20042903e0492218420020042903a836221c20042903d8357c220f20042903f8367c221120042903c8377c22122004290398387c2214200429039836221e20042903c8357c221520042903e8367c221620042903b8377c22172004290388387c2219200d42338820044188366a41086a290300200441b8356a41086a2903007c201d201a54ad7c200441d8366a41086a2903007c2020201d54ad7c200441a8376a41086a2903007c200a202054ad7c200441f8376a41086a2903007c200b200a54ad7c200d200b54ad7c420d86847c220a42338820044198366a41086a290300200441c8356a41086a2903007c2015201e54ad7c200441e8366a41086a2903007c2016201554ad7c200441b8376a41086a2903007c2017201654ad7c20044188386a41086a2903007c2019201754ad7c200a201954ad7c420d86847c220b423388200441a8366a41086a290300200441d8356a41086a2903007c200f201c54ad7c200441f8366a41086a2903007c2011200f54ad7c200441c8376a41086a2903007c2012201154ad7c20044198386a41086a2903007c2014201254ad7c200b201454ad7c420d868442137e201342ffffffffffffff03837c220d423388201042ffffffffffffff03837c221d420010d507200441d8336a200441e8c8006a4190016a29030022204200200a42ffffffffffffff0383221042137e2211420010d50720044198346a200441e8c8006a4188016a290300220a4200200b42ffffffffffffff0383221242137e220f420010d507200441b8326a200441e8c8006a4180016a290300220b4200200d42ffffffffffffff0383220d420010d507200441c8326a200d42002018420010d50720044198336a200c4200201d42137e420010d507200441b8336a20204200201b420010d507200441e8336a200a42002011420010d507200441a8346a200b4200200f420010d507200441b8346a20184200200e420010d507200441c8336a200c42002011420010d50720044188346a20204200200f420010d507200441a8326a200a4200200d420010d507200441f8326a200b4200201d420010d507200441e8346a201842002010420010d507200441f8336a200c4200200f420010d507200441c8316a20204200200d420010d507200441e8326a200a4200201d420010d507200441c8346a200b4200200e420010d50720044188356a201842002012420010d507200441f82f6a200c4200200d420010d507200441d8326a20204200201d420010d507200441d8346a200a4200200e420010d507200441f8346a200b42002010420010d507200441c8c4006a20042903e848221220042903904922137c220c420020042903e0462214200441d8c6006a41306a222429030022157c2218420010d50720044198c0006a2004290388492216200441e8c8006a41c8006a29030022177c221d420020042903e8462219200441d8c6006a41386a2225290300221a7c220e42137e221b420010d507200441b8c1006a200429038049221c200441e8c8006a41c0006a290300221e7c2220420020042903f046221f200441d8c6006a41c0006a222629030022217c221042137e2211420010d507200441d8c2006a20042903f8482222200441e8c8006a41386a29030022237c220a420020042903f8462227200441d8c6006a41c8006a222829030022297c222a42137e220f420010d507200441f8c3006a20042903f048222b200441e8c8006a41306a290300222c7c220b420020042903d846222d200429038047222e7c220d420010d507200441d8c4006a200d4200200c420010d507200441a8c0006a201d4200201842137e420010d507200441c8c1006a20204200201b420010d507200441e8c2006a200a42002011420010d50720044188c4006a200b4200200f420010d507200441b8c4006a200c4200200e420010d50720044188c0006a201d42002011420010d507200441a8c1006a20204200200f420010d507200441c8c2006a200a4200200d420010d507200441e8c3006a200b42002018420010d507200441a8c4006a200c42002010420010d507200441f83f6a201d4200200f420010d50720044198c1006a20204200200d420010d507200441b8c2006a200a42002018420010d507200441d8c3006a200b4200200e420010d50720044198c4006a200c4200202a420010d507200441e83f6a201d4200200d420010d50720044188c1006a202042002018420010d507200441a8c2006a200a4200200e420010d507200441c8c3006a200b42002010420010d507200441f83e6a201720167d42f0ffffffffffff3f7c221d42338842137e201320127d42d0fdffffffffff3f7c220b42ffffffffffffff03837c220c4200201520147d42f0ffffffffffff3f7c222042ffffffffffffff0383202e202d7d42d0fdffffffffff3f7c220d4233887c2218420010d507200441c83f6a201d42ffffffffffffff0383201e201c7d42f0ffffffffffff3f7c220a4233887c221d4200201a20197d42f0ffffffffffff3f7c220f42ffffffffffffff038320204233887c220e42137e2212420010d507200441e8c0006a200a42ffffffffffffff0383202320227d42f0ffffffffffff3f7c220a4233887c222042002021201f7d42f0ffffffffffff3f7c221342ffffffffffffff0383200f4233887c221042137e2211420010d50720044188c2006a200a42ffffffffffffff0383202c202b7d42f0ffffffffffff3f7c22144233887c220a4200202920277d42f0ffffffffffff3f7c221542ffffffffffffff038320134233887c221342137e220f420010d507200441a8c3006a201442ffffffffffffff0383200b4233887c220b4200201542338842137e200d42ffffffffffffff03837c220d420010d507200441883f6a200d4200200c420010d507200441d83f6a201d4200201842137e420010d507200441f8c0006a202042002012420010d50720044198c2006a200a42002011420010d507200441b8c3006a200b4200200f420010d507200441e83e6a200c4200200e420010d507200441b83f6a201d42002011420010d507200441d8c0006a20204200200f420010d507200441f8c1006a200a4200200d420010d50720044198c3006a200b42002018420010d507200441d83e6a200c42002010420010d507200441a83f6a201d4200200f420010d507200441c8c0006a20204200200d420010d507200441e8c1006a200a42002018420010d50720044188c3006a200b4200200e420010d507200441a83e6a200c42002013420010d507200441983f6a201d4200200d420010d507200441b8c0006a202042002018420010d507200441d8c1006a200a4200200e420010d507200441f8c2006a200b42002010420010d507200441882d6a20042903e83f222b2004290398447c220c2004290388417c221820042903a8427c221d20042903c8437c222020042903f83f221c20042903a8447c220a2004290398417c220b20042903b8427c220d20042903d8437c220e200429038840221e20042903b8447c220f20042903a8417c221020042903c8427c221120042903e8437c2212200429039840221f20042903c8447c221320042903b8417c221420042903d8427c221520042903f8437c221620042903a840222120042903d8447c221720042903c8417c221920042903e8427c221a2004290388447c221b423388200441a8c0006a41086a290300200441d8c4006a41086a2903007c2017202154ad7c200441c8c1006a41086a2903007c2019201754ad7c200441e8c2006a41086a2903007c201a201954ad7c20044188c4006a41086a2903007c201b201a54ad7c420d86847c221742338820044198c0006a41086a290300200441c8c4006a41086a2903007c2013201f54ad7c200441b8c1006a41086a2903007c2014201354ad7c200441d8c2006a41086a2903007c2015201454ad7c200441f8c3006a41086a2903007c2016201554ad7c2017201654ad7c420d86847c221342338820044188c0006a41086a290300200441b8c4006a41086a2903007c200f201e54ad7c200441a8c1006a41086a2903007c2010200f54ad7c200441c8c2006a41086a2903007c2011201054ad7c200441e8c3006a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441f83f6a41086a290300200441a8c4006a41086a2903007c200a201c54ad7c20044198c1006a41086a2903007c200b200a54ad7c200441b8c2006a41086a2903007c200d200b54ad7c200441d8c3006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383222c20042903983f222d20042903a83e7c220b20042903b8407c220d20042903d8417c220e20042903f8427c221020042903a83f222e20042903d83e7c221120042903c8407c221220042903e8417c22142004290388437c221520042903b83f222f20042903e83e7c221620042903d8407c221920042903f8417c221a2004290398437c221c20042903c83f223020042903f83e7c221e20042903e8407c221f2004290388427c222120042903a8437c222220042903d83f223120042903883f7c222320042903f8407c22272004290398427c222920042903b8437c222a423388200441d83f6a41086a290300200441883f6a41086a2903007c2023203154ad7c200441f8c0006a41086a2903007c2027202354ad7c20044198c2006a41086a2903007c2029202754ad7c200441b8c3006a41086a2903007c202a202954ad7c420d86847c2223423388200441c83f6a41086a290300200441f83e6a41086a2903007c201e203054ad7c200441e8c0006a41086a2903007c201f201e54ad7c20044188c2006a41086a2903007c2021201f54ad7c200441a8c3006a41086a2903007c2022202154ad7c2023202254ad7c420d86847c221e423388200441b83f6a41086a290300200441e83e6a41086a2903007c2016202f54ad7c200441d8c0006a41086a2903007c2019201654ad7c200441f8c1006a41086a2903007c201a201954ad7c20044198c3006a41086a2903007c201c201a54ad7c201e201c54ad7c420d86847c2216423388200441a83f6a41086a290300200441d83e6a41086a2903007c2011202e54ad7c200441c8c0006a41086a2903007c2012201154ad7c200441e8c1006a41086a2903007c2014201254ad7c20044188c3006a41086a2903007c2015201454ad7c2016201554ad7c420d86847c221142ffffffffffffff0383222e7d42f0ffffffffffff3f7c222f42338842137e200a423388200441e83f6a41086a29030020044198c4006a41086a2903007c200c202b54ad7c20044188c1006a41086a2903007c2018200c54ad7c200441a8c2006a41086a2903007c201d201854ad7c200441c8c3006a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c223042ffffffffffffff038322312011423388200441983f6a41086a290300200441a83e6a41086a2903007c200b202d54ad7c200441b8c0006a41086a2903007c200d200b54ad7c200441d8c1006a41086a2903007c200e200d54ad7c200441f8c2006a41086a2903007c2010200e54ad7c2011201054ad7c420d868442137e202a42ffffffffffffff03837c222d42ffffffffffffff038322327d42d0fdffffffffff3f7c223342ffffffffffffff03837c220c420020042903a839222920042903e8387c221820042903a83a7c221d20042903e83a7c222020042903a83b7c220a20042903e839222a20042903d8387c220b2004290398397c220d20042903d83a7c220e20042903983b7c221020042903d839222b20042903c8387c221120042903983a7c22122004290388397c221420042903883b7c221520042903c839223420042903b8387c221920042903883a7c221a20042903c83a7c221b20042903f8387c221c20042903b839223520042903a8387c221f20042903f8397c222120042903b83a7c222220042903f83a7c2227423388200441b8396a41086a290300200441a8386a41086a2903007c201f203554ad7c200441f8396a41086a2903007c2021201f54ad7c200441b83a6a41086a2903007c2022202154ad7c200441f83a6a41086a2903007c2027202254ad7c420d86847c221f423388200441c8396a41086a290300200441b8386a41086a2903007c2019203454ad7c200441883a6a41086a2903007c201a201954ad7c200441c83a6a41086a2903007c201b201a54ad7c200441f8386a41086a2903007c201c201b54ad7c201f201c54ad7c420d86847c2219423388200441d8396a41086a290300200441c8386a41086a2903007c2011202b54ad7c200441983a6a41086a2903007c2012201154ad7c20044188396a41086a2903007c2014201254ad7c200441883b6a41086a2903007c2015201454ad7c2019201554ad7c420d86847c2211423388200441e8396a41086a290300200441d8386a41086a2903007c200b202a54ad7c20044198396a41086a2903007c200d200b54ad7c200441d83a6a41086a2903007c200e200d54ad7c200441983b6a41086a2903007c2010200e54ad7c2011201054ad7c420d86847c220b423388200441a8396a41086a290300200441e8386a41086a2903007c2018202954ad7c200441a83a6a41086a2903007c201d201854ad7c200441e83a6a41086a2903007c2020201d54ad7c200441a83b6a41086a2903007c200a202054ad7c200b200a54ad7c420d868442137e202742ffffffffffffff03837c2234423388201f42ffffffffffffff03837c420186223520042903f82f22362004290388357c221820042903d8327c221d20042903d8347c222020042903f8347c220a20042903f833223720042903e8347c220d20042903c8317c220e20042903e8327c221020042903c8347c221220042903c833223820042903b8347c22142004290388347c221520042903a8327c221a20042903f8327c221b20042903a83322392004290388337c221c20042903d8337c221f2004290398347c222120042903b8327c2222200429039833223a20042903c8327c222720042903b8337c222920042903e8337c222a20042903a8347c222b42338820044198336a41086a290300200441c8326a41086a2903007c2027203a54ad7c200441b8336a41086a2903007c2029202754ad7c200441e8336a41086a2903007c202a202954ad7c200441a8346a41086a2903007c202b202a54ad7c420d86847c2227423388200441a8336a41086a29030020044188336a41086a2903007c201c203954ad7c200441d8336a41086a2903007c201f201c54ad7c20044198346a41086a2903007c2021201f54ad7c200441b8326a41086a2903007c2022202154ad7c2027202254ad7c420d86847c221c423388200441c8336a41086a290300200441b8346a41086a2903007c2014203854ad7c20044188346a41086a2903007c2015201454ad7c200441a8326a41086a2903007c201a201554ad7c200441f8326a41086a2903007c201b201a54ad7c201c201b54ad7c420d86847c2214423388200441f8336a41086a290300200441e8346a41086a2903007c200d203754ad7c200441c8316a41086a2903007c200e200d54ad7c200441e8326a41086a2903007c2010200e54ad7c200441c8346a41086a2903007c2012201054ad7c2014201254ad7c420d86847c220d423388200441f82f6a41086a29030020044188356a41086a2903007c2018203654ad7c200441d8326a41086a2903007c201d201854ad7c200441d8346a41086a2903007c2020201d54ad7c200441f8346a41086a2903007c200a202054ad7c200d200a54ad7c420d868442137e202b42ffffffffffffff03837c2218423388202742ffffffffffffff03837c221d7d42f0ffffffffffff3f7c222042ffffffffffffff0383203442018642feffffffffffff0783221f201842ffffffffffffff038322217d42d0fdffffffffff3f7c22184233887c220a420010d507200441f82e6a202f42ffffffffffffff0383200f42ffffffffffffff0383220e201642ffffffffffffff038322107d42f0ffffffffffff3f7c22154233887c22124200201942018642feffffffffffff07832216201c42ffffffffffffff0383221b7d42f0ffffffffffff3f7c221942ffffffffffffff038320204233887c220f42137e221a420010d507200441d8306a201542ffffffffffffff0383201342ffffffffffffff03832220201e42ffffffffffffff038322227d42f0ffffffffffff3f7c22154233887c22134200201142018642feffffffffffff0783221e201442ffffffffffffff038322297d42f0ffffffffffff3f7c221c42ffffffffffffff038320194233887c221942137e2211420010d507200441e8276a201542ffffffffffffff03832030423388201742ffffffffffffff03837c2217202d423388202342ffffffffffffff03837c22237d42f0ffffffffffff3f7c22154233887c22144200200b42018642feffffffffffff0783222b200d42ffffffffffffff0383222d7d42f0ffffffffffff3f7c220b42ffffffffffffff0383201c4233887c221c42137e220d420010d507200441c8266a201542ffffffffffffff038320334233887c22154200200b42338842137e201842ffffffffffffff03837c2218420010d507200441d8266a20184200200c420010d507200441982d6a20124200200a42137e222f420010d507200441882f6a20134200201a420010d507200441e8306a201442002011420010d507200441f8276a20154200200d420010d507200441c8306a201242002011420010d507200441d82e6a200c4200200f420010d507200441d8276a20134200200d420010d507200441b8266a201442002018420010d507200441f82c6a20154200200a420010d50720044198306a200c42002019420010d507200441c8276a20124200200d420010d50720044188256a201342002018420010d507200441e82c6a20144200200a420010d507200441c82e6a20154200200f420010d507200441f8266a200c4200201c420010d507200441d8236a201242002018420010d507200441d82c6a20134200200a420010d507200441b82e6a20144200200f420010d50720044188306a201542002019420010d50720044188326a202e202c7c222a4200201b20167c220b42137e222c420010d507200441d82f6a203220317c22164200201d20357c221d420010d507200441a8316a2010200e7c222742002029201e7c220e42137e221e420010d507200441f82b6a202220207c22224200202d202b7c221042137e221b420010d507200441f82d6a202320177c221742002021201f7c2220420010d507200441882e6a202042002016420010d507200441e82f6a202a4200201d42137e420010d50720044198326a20274200202c420010d507200441b8316a20224200201e420010d507200441882c6a20174200201b420010d507200441f8316a20164200200b420010d50720044198316a202a4200201e420010d507200441e82b6a20274200201b420010d507200441e82d6a202242002020420010d507200441c82f6a20174200201d420010d50720044188316a20164200200e420010d507200441882b6a202a4200201b420010d507200441d82d6a202742002020420010d507200441b82f6a20224200201d420010d507200441e8316a20174200200b420010d507200441a82a6a201642002010420010d507200441c82d6a202a42002020420010d507200441a82f6a20274200201d420010d507200441d8316a20224200200b420010d507200441f8306a20174200200e420010d507200441c82c6a20204200200a420010d50720044198286a20104200201a420010d507200441a8306a200e42002011420010d507200441a8276a200b4200200d420010d507200441d81f6a201d42002018420010d507200441e81f6a201842002020420010d507200441a8286a20104200202f420010d507200441e82e6a200e4200201a420010d507200441b8306a200b42002011420010d507200441b8276a201d4200200d420010d50720044188286a201042002011420010d507200441b82d6a20204200200f420010d50720044198276a200e4200200d420010d507200441c81f6a200b42002018420010d507200441b82c6a201d4200200a420010d50720044188276a20104200200d420010d507200441a82d6a202042002019420010d507200441b81f6a200e42002018420010d507200441a82c6a200b4200200a420010d507200441a82e6a201d4200200f420010d507200441e8266a20204200201c420010d507200441881f6a201042002018420010d507200441982c6a200e4200200a420010d507200441982e6a200b4200200f420010d507200441982f6a201d42002019420010d507200441c8226a20042903d823222e20042903f8267c221820042903d82c7c221d20042903b82e7c220b2004290388307c220d20042903c827222c2004290398307c22202004290388257c220a20042903e82c7c220e20042903c82e7c220f20042903c830222d20042903d82e7c221020042903d8277c221120042903b8267c221920042903f82c7c221a20042903f82e222f20042903882d7c221b20042903d8307c221c20042903e8277c221e20042903c8267c221f20042903982d223020042903d8267c222120042903882f7c222320042903e8307c222920042903f8277c222b423388200441982d6a41086a290300200441d8266a41086a2903007c2021203054ad7c200441882f6a41086a2903007c2023202154ad7c200441e8306a41086a2903007c2029202354ad7c200441f8276a41086a2903007c202b202954ad7c420d86847c2221423388200441f82e6a41086a290300200441882d6a41086a2903007c201b202f54ad7c200441d8306a41086a2903007c201c201b54ad7c200441e8276a41086a2903007c201e201c54ad7c200441c8266a41086a2903007c201f201e54ad7c2021201f54ad7c420d86847c221b423388200441c8306a41086a290300200441d82e6a41086a2903007c2010202d54ad7c200441d8276a41086a2903007c2011201054ad7c200441b8266a41086a2903007c2019201154ad7c200441f82c6a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c2210423388200441c8276a41086a29030020044198306a41086a2903007c2020202c54ad7c20044188256a41086a2903007c200a202054ad7c200441e82c6a41086a2903007c200e200a54ad7c200441c82e6a41086a2903007c200f200e54ad7c2010200f54ad7c420d86847c220e42ffffffffffffff0383220a4200200429039831222f20042903f8317c220f20042903e82b7c221120042903e82d7c221920042903c82f7c221a200429038832223020042903d82f7c222020042903a8317c221c20042903f82b7c221e20042903f82d7c221f20042903e82f223120042903882e7c22232004290398327c222920042903b8317c222c20042903882c7c222d423388200441e82f6a41086a290300200441882e6a41086a2903007c2023203154ad7c20044198326a41086a2903007c2029202354ad7c200441b8316a41086a2903007c202c202954ad7c200441882c6a41086a2903007c202d202c54ad7c420d86847c222342338820044188326a41086a290300200441d82f6a41086a2903007c2020203054ad7c200441a8316a41086a2903007c201c202054ad7c200441f82b6a41086a2903007c201e201c54ad7c200441f82d6a41086a2903007c201f201e54ad7c2023201f54ad7c420d86847c221c42ffffffffffffff0383222042137e222c420010d507200441f8206a200e423388200441d8236a41086a290300200441f8266a41086a2903007c2018202e54ad7c200441d82c6a41086a2903007c201d201854ad7c200441b82e6a41086a2903007c200b201d54ad7c20044188306a41086a2903007c200d200b54ad7c200e200d54ad7c420d868442137e202b42ffffffffffffff03837c222e42ffffffffffffff0383220b420020042903c82d223020042903a82a7c221820042903a82f7c221d20042903d8317c220d20042903f8307c220e20042903882b22312004290388317c221e20042903d82d7c221f20042903b82f7c222920042903e8317c222b201c42338820044198316a41086a290300200441f8316a41086a2903007c200f202f54ad7c200441e82b6a41086a2903007c2011200f54ad7c200441e82d6a41086a2903007c2019201154ad7c200441c82f6a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c220f423388200441882b6a41086a29030020044188316a41086a2903007c201e203154ad7c200441d82d6a41086a2903007c201f201e54ad7c200441b82f6a41086a2903007c2029201f54ad7c200441e8316a41086a2903007c202b202954ad7c200f202b54ad7c420d86847c2211423388200441c82d6a41086a290300200441a82a6a41086a2903007c2018203054ad7c200441a82f6a41086a2903007c201d201854ad7c200441d8316a41086a2903007c200d201d54ad7c200441f8306a41086a2903007c200e200d54ad7c2011200e54ad7c420d868442137e202d42ffffffffffffff03837c221d423388202342ffffffffffffff03837c2218420010d507200441f8236a201042ffffffffffffff0383220d4200200f42ffffffffffffff0383220e42137e221a420010d507200441a8256a201b42ffffffffffffff0383220f4200201142ffffffffffffff0383221142137e2219420010d50720044198226a202e423388202142ffffffffffffff03837c22104200201d42ffffffffffffff0383221d420010d507200441b8226a200a4200201842137e420010d50720044188216a201d4200200b420010d507200441e8236a200d4200202c420010d50720044198256a200f4200201a420010d507200441a8226a201042002019420010d507200441d8226a200a4200201a420010d507200441e8206a200b42002020420010d50720044188246a200d42002019420010d507200441b8256a200f4200201d420010d50720044188226a201042002018420010d507200441e8226a200a42002019420010d507200441d8206a200b4200200e420010d50720044198246a200d4200201d420010d507200441c8256a200f42002018420010d507200441f8216a201042002020420010d507200441f8226a200a4200201d420010d507200441c8206a200b42002011420010d507200441a8246a200d42002018420010d507200441d8256a200f42002020420010d507200441e8216a20104200200e420010d507200441981e6a201d20042903881f223620042903e8267c221920042903982c7c221a20042903982e7c221b20042903982f7c221c200429038827223720042903a82d7c221e20042903b81f7c221f20042903a82c7c222120042903a82e7c2223200429038828223820042903b82d7c22292004290398277c222b20042903c81f7c222c20042903b82c7c222d200429039828223920042903c82c7c222e20042903a8307c222f20042903a8277c223020042903d81f7c223120042903a828223a20042903e81f7c223220042903e82e7c223320042903b8307c223420042903b8277c2235423388200441a8286a41086a290300200441e81f6a41086a2903007c2032203a54ad7c200441e82e6a41086a2903007c2033203254ad7c200441b8306a41086a2903007c2034203354ad7c200441b8276a41086a2903007c2035203454ad7c420d86847c223242338820044198286a41086a290300200441c82c6a41086a2903007c202e203954ad7c200441a8306a41086a2903007c202f202e54ad7c200441a8276a41086a2903007c2030202f54ad7c200441d81f6a41086a2903007c2031203054ad7c2032203154ad7c420d86847c222e42338820044188286a41086a290300200441b82d6a41086a2903007c2029203854ad7c20044198276a41086a2903007c202b202954ad7c200441c81f6a41086a2903007c202c202b54ad7c200441b82c6a41086a2903007c202d202c54ad7c202e202d54ad7c420d86847c222942338820044188276a41086a290300200441a82d6a41086a2903007c201e203754ad7c200441b81f6a41086a2903007c201f201e54ad7c200441a82c6a41086a2903007c2021201f54ad7c200441a82e6a41086a2903007c2023202154ad7c2029202354ad7c420d86847c221e423388200441881f6a41086a290300200441e8266a41086a2903007c2019203654ad7c200441982c6a41086a2903007c201a201954ad7c200441982e6a41086a2903007c201b201a54ad7c200441982f6a41086a2903007c201c201b54ad7c201e201c54ad7c420d868442137e203542ffffffffffffff03837c221a42ffffffffffffff038322347c22194200201a423388203242ffffffffffffff03837c223520187d42f0ffffffffffff3f7c221c42ffffffffffffff03832034201d7d42d0fdffffffffff3f7c22214233887c221a420010d507200441c81d6a2011201e42ffffffffffffff038322367c221b4200202e42ffffffffffffff0383223720207d42f0ffffffffffff3f7c221e42ffffffffffffff0383201c4233887c222342137e222d420010d507200441981f6a200e202942ffffffffffffff038322387c221c42002038200e7d42f0ffffffffffff3f7c221f42ffffffffffffff0383201e4233887c222b42137e222c420010d507200441981d6a202020377c221e4200203620117d42f0ffffffffffff3f7c222e42ffffffffffffff0383201f4233887c222f42137e2229420010d507200441c81c6a201820357c221f4200202e42338842137e202142ffffffffffffff03837c2221420010d507200441d81c6a202142002019420010d507200441d81d6a201b4200201a42137e420010d507200441e81e6a201c4200202d420010d507200441a81f6a201e4200202c420010d507200441a81d6a201f42002029420010d507200441b81d6a201b4200202c420010d507200441b81e6a201942002023420010d507200441881d6a201c42002029420010d507200441b81c6a201e42002021420010d507200441881e6a201f4200201a420010d507200441f81c6a201b42002029420010d507200441a81e6a20194200202b420010d507200441d81b6a201c42002021420010d507200441f81d6a201e4200201a420010d507200441d81e6a201f42002023420010d507200441e81c6a20194200202f420010d507200441f81a6a201b42002021420010d507200441e81d6a201c4200201a420010d507200441c81e6a201e42002023420010d507200441f81e6a201f4200202b420010d507200420042903d822222e20042903e8207c22192004290388247c221a20042903b8257c221b2004290388227c221c20042903c822222f20042903f8207c221e20042903f8237c221f20042903a8257c22212004290398227c222320042903b82222302004290388217c222920042903e8237c222b2004290398257c222c20042903a8227c222d423388200441b8226a41086a29030020044188216a41086a2903007c2029203054ad7c200441e8236a41086a2903007c202b202954ad7c20044198256a41086a2903007c202c202b54ad7c200441a8226a41086a2903007c202d202c54ad7c420d86847c2229423388200441c8226a41086a290300200441f8206a41086a2903007c201e202f54ad7c200441f8236a41086a2903007c201f201e54ad7c200441a8256a41086a2903007c2021201f54ad7c20044198226a41086a2903007c2023202154ad7c2029202354ad7c420d86847c221e42ffffffffffffff03833703984a200420042903e822222c20042903d8207c221f2004290398247c222120042903c8257c222320042903f8217c222b201e423388200441d8226a41086a290300200441e8206a41086a2903007c2019202e54ad7c20044188246a41086a2903007c201a201954ad7c200441b8256a41086a2903007c201b201a54ad7c20044188226a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c221942ffffffffffffff03833703a04a200420042903f822222e20042903c8207c221a20042903a8247c221b20042903d8257c221c20042903e8217c221e2019423388200441e8226a41086a290300200441d8206a41086a2903007c201f202c54ad7c20044198246a41086a2903007c2021201f54ad7c200441c8256a41086a2903007c2023202154ad7c200441f8216a41086a2903007c202b202354ad7c2019202b54ad7c420d86847c221942ffffffffffffff03833703a84a20042019423388200441f8226a41086a290300200441c8206a41086a2903007c201a202e54ad7c200441a8246a41086a2903007c201b201a54ad7c200441d8256a41086a2903007c201c201b54ad7c200441e8216a41086a2903007c201e201c54ad7c2019201e54ad7c420d868442137e202d42ffffffffffffff03837c221942ffffffffffffff03833703884a20042019423388202942ffffffffffffff03837c3703904a200441981e6a41086a290300213b200441c81d6a41086a290300213c20042903981e213320042903c81d2119200441981f6a41086a290300213d20042903981f2139200441981d6a41086a290300213e20042903981d213a200441c81c6a41086a290300213f20042903c81c2140200441d81c6a41086a2903002141200441d81d6a41086a290300214220042903d81c214320042903d81d211a200441e81e6a41086a290300214420042903e81e2145200441a81f6a41086a290300214620042903a81f2147200441a81d6a41086a290300214820042903a81d214920042903b81d211b20042903b81e212f20042903881d213020042903b81c213120042903881e2132200441b81d6a41086a290300214a200441b81e6a41086a290300214b200441881d6a41086a290300214c200441b81c6a41086a290300214d200441881e6a41086a290300214e20042903f81c211c20042903a81e212b20042903d81b212c20042903f81d212d20042903d81e212e200441f81c6a41086a290300214f200441a81e6a41086a2903002150200441d81b6a41086a2903002151200441f81d6a41086a2903002152200441d81e6a41086a290300215320042903e81c211f20042903f81a211e20042903e81d212120042903c81e212320042903f81e2129200441e81c6a41086a2903002154200441f81a6a41086a2903002155200441e81d6a41086a2903002156200441c81e6a41086a2903002157200441f81e6a41086a2903002158200441d8ca006a20044188ca006a4101106b200441b8196a202920232021201e201f7c221f7c22217c22237c2229202e202d202c201c202b7c222b7c222c7c222d7c222e203220312030201b202f7c222f7c22307c22317c22322040203a2039201920337c22337c22397c223a7c2240204920472045201a20437c22437c22457c22477c2249423388204820462044204220417c2043201a54ad7c7c2045204354ad7c7c2047204554ad7c7c2049204754ad7c420d86847c221a423388203f203e203d203c203b7c2033201954ad7c7c2039203354ad7c7c203a203954ad7c7c2040203a54ad7c201a204054ad7c420d86847c2233423388204e204d204c204a204b7c202f201b54ad7c7c2030202f54ad7c7c2031203054ad7c7c2032203154ad7c2033203254ad7c420d86847c222f423388205320522051204f20507c202b201c54ad7c7c202c202b54ad7c7c202d202c54ad7c7c202e202d54ad7c202f202e54ad7c420d86847c221c423388205820572056205520547c201f201e54ad7c7c2021201f54ad7c7c2023202154ad7c7c2029202354ad7c201c202954ad7c420d868442137e204942ffffffffffffff03837c222d42ffffffffffffff03832219420020042903e04a221b420010d507200441b81a6a201c42ffffffffffffff0383222b420020042903e84a221e42137e222e420010d507200441981b6a202f42ffffffffffffff03832229420020042903f04a222142137e222c420010d507200441f81b6a203342ffffffffffffff03832223420020042903f84a222f42137e221f420010d507200441881a6a202d423388201a42ffffffffffffff03837c221a420020042903d84a221c420010d507200441c8196a201c42002019420010d507200441a81a6a202b4200201b42137e420010d507200441881b6a20294200202e420010d507200441e81b6a20234200202c420010d507200441981a6a201a4200201f420010d507200441a8196a20194200201e420010d507200441c81a6a202b4200202c420010d507200441a81b6a20294200201f420010d507200441881c6a20234200201c420010d507200441f8196a201a4200201b420010d50720044198196a201942002021420010d507200441d81a6a202b4200201f420010d507200441b81b6a20294200201c420010d507200441981c6a20234200201b420010d507200441e8196a201a4200201e420010d50720044188196a20194200202f420010d507200441e81a6a202b4200201c420010d507200441c81b6a20294200201b420010d507200441a81c6a20234200201e420010d507200441d8196a201a42002021420010d507200420042903c81a223320042903a8197c221b20042903a81b7c221c20042903881c7c221e20042903f8197c221f20042903b81a223920042903b8197c222120042903981b7c222c20042903f81b7c222d20042903881a7c222e20042903a81a223a20042903c8197c222f20042903881b7c223020042903e81b7c223120042903981a7c2232423388200441a81a6a41086a290300200441c8196a41086a2903007c202f203a54ad7c200441881b6a41086a2903007c2030202f54ad7c200441e81b6a41086a2903007c2031203054ad7c200441981a6a41086a2903007c2032203154ad7c420d86847c222f423388200441b81a6a41086a290300200441b8196a41086a2903007c2021203954ad7c200441981b6a41086a2903007c202c202154ad7c200441f81b6a41086a2903007c202d202c54ad7c200441881a6a41086a2903007c202e202d54ad7c202f202e54ad7c420d86847c222142ffffffffffffff03833703c04a200420042903d81a22312004290398197c222c20042903b81b7c222d20042903981c7c222e20042903e8197c22302021423388200441c81a6a41086a290300200441a8196a41086a2903007c201b203354ad7c200441a81b6a41086a2903007c201c201b54ad7c200441881c6a41086a2903007c201e201c54ad7c200441f8196a41086a2903007c201f201e54ad7c2021201f54ad7c420d86847c221b42ffffffffffffff03833703c84a200420042903e81a22332004290388197c221c20042903c81b7c221e20042903a81c7c221f20042903d8197c2221201b423388200441d81a6a41086a29030020044198196a41086a2903007c202c203154ad7c200441b81b6a41086a2903007c202d202c54ad7c200441981c6a41086a2903007c202e202d54ad7c200441e8196a41086a2903007c2030202e54ad7c201b203054ad7c420d86847c221b42ffffffffffffff03833703d04a2004201b423388200441e81a6a41086a29030020044188196a41086a2903007c201c203354ad7c200441c81b6a41086a2903007c201e201c54ad7c200441a81c6a41086a2903007c201f201e54ad7c200441d8196a41086a2903007c2021201f54ad7c201b202154ad7c420d868442137e203242ffffffffffffff03837c221b42ffffffffffffff03833703b04a2004201b423388202f42ffffffffffffff03837c3703b84a200441e8c8006a41106a22054200370300200441e8c8006a41186a22064200370300200441e8c8006a41206a22594200370300200442003703f048200442013703e848200441d8c6006a200441e8c8006a200441b0ca006a106c200441a8116a20042903e046221b420020042903904a222c420010d507200441b8146a200441d8c6006a41286a225a290300221c420020042903984a222e42137e2232420010d507200441d8156a200441d8c6006a41206a225b290300221e420020042903a04a223042137e2231420010d507200441f8166a200441d8c6006a41186a225c290300221f420020042903a84a223342137e222f420010d50720044198186a200441d8c6006a41106a225d2903002221420020042903884a222d420010d507200441b8116a202d4200201b420010d507200441c8146a201c4200202c42137e420010d507200441e8156a201e42002032420010d50720044188176a201f42002031420010d507200441a8186a20214200202f420010d50720044198116a201b4200202e420010d507200441a8146a201c42002031420010d507200441c8156a201e4200202f420010d507200441e8166a201f4200202d420010d50720044188186a20214200202c420010d507200441b8106a201b42002030420010d50720044198146a201c4200202f420010d507200441b8156a201e4200202d420010d507200441d8166a201f4200202c420010d507200441f8176a20214200202e420010d507200441d80f6a201b42002033420010d50720044188146a201c4200202d420010d507200441a8156a201e4200202c420010d507200441c8166a201f4200202e420010d507200441e8176a202142002030420010d507200441b83c6a20124200202242137e222e420010d507200441e83b6a200c42002017420010d507200441b83e6a20134200202742137e222d420010d507200441e83c6a20144200202a42137e222c420010d507200441b83d6a201542002016420010d507200441c83c6a20124200201742137e420010d507200441f83b6a20164200200c420010d507200441c83e6a20134200202e420010d507200441883e6a20144200202d420010d507200441f83c6a20154200202c420010d507200441a83c6a20124200202d420010d507200441d83b6a200c42002022420010d507200441d83c6a20134200202c420010d507200441d83d6a201442002016420010d507200441a83d6a201542002017420010d507200441983c6a20124200202c420010d507200441c83b6a200c42002027420010d507200441c83d6a201342002016420010d507200441f83d6a201442002017420010d507200441983d6a201542002022420010d507200441883c6a201242002016420010d507200441b83b6a200c4200202a420010d507200441983e6a201342002017420010d507200441e83d6a201442002022420010d507200441883d6a201542002027420010d507200441e8136a201b4200201a420010d50720044188156a201c4200202342137e2213420010d507200441a8166a201e4200202942137e2212420010d507200441c8176a201f4200202b42137e220c420010d507200441e8186a202142002019420010d507200441f8136a20194200201b420010d50720044198156a201c4200201a42137e420010d507200441b8166a201e42002013420010d507200441d8176a201f42002012420010d507200441f8186a20214200200c420010d507200441d8136a201b42002023420010d507200441f8146a201c42002012420010d50720044198166a201e4200200c420010d507200441b8176a201f42002019420010d507200441d8186a20214200201a420010d507200441f8126a201b42002029420010d507200441e8146a201c4200200c420010d50720044188166a201e42002019420010d507200441a8176a201f4200201a420010d507200441c8186a202142002023420010d50720044198126a201b4200202b420010d507200441d8146a201c42002019420010d507200441f8156a201e4200201a420010d50720044198176a201f42002023420010d507200441b8186a202142002029420010d507200441980f6a200429038814222e20042903d80f7c220c20042903a8157c221220042903c8167c221320042903e8177c2214200429039814222c20042903b8107c221520042903b8157c221620042903d8167c221720042903f8177c221920042903a814222d2004290398117c221a20042903c8157c221b20042903e8167c221c2004290388187c221e20042903b814222f20042903a8117c221f20042903d8157c222120042903f8167c22222004290398187c222320042903c814223020042903b8117c222720042903e8157c22292004290388177c222a20042903a8187c222b423388200441c8146a41086a290300200441b8116a41086a2903007c2027203054ad7c200441e8156a41086a2903007c2029202754ad7c20044188176a41086a2903007c202a202954ad7c200441a8186a41086a2903007c202b202a54ad7c420d86847c222a423388200441b8146a41086a290300200441a8116a41086a2903007c201f202f54ad7c200441d8156a41086a2903007c2021201f54ad7c200441f8166a41086a2903007c2022202154ad7c20044198186a41086a2903007c2023202254ad7c202a202354ad7c420d86847c221f423388200441a8146a41086a29030020044198116a41086a2903007c201a202d54ad7c200441c8156a41086a2903007c201b201a54ad7c200441e8166a41086a2903007c201c201b54ad7c20044188186a41086a2903007c201e201c54ad7c201f201e54ad7c420d86847c221a42338820044198146a41086a290300200441b8106a41086a2903007c2015202c54ad7c200441b8156a41086a2903007c2016201554ad7c200441d8166a41086a2903007c2017201654ad7c200441f8176a41086a2903007c2019201754ad7c201a201954ad7c420d86847c221542ffffffffffffff03832222420020042903a83c222f20042903d83b7c221620042903d83c7c221720042903d83d7c221920042903a83d7c221c20042903b83c223020042903e83b7c221b20042903b83e7c221e20042903e83c7c222120042903b83d7c222320042903c83c223120042903f83b7c222720042903c83e7c222920042903883e7c222c20042903f83c7c222d423388200441c83c6a41086a290300200441f83b6a41086a2903007c2027203154ad7c200441c83e6a41086a2903007c2029202754ad7c200441883e6a41086a2903007c202c202954ad7c200441f83c6a41086a2903007c202d202c54ad7c420d86847c2227423388200441b83c6a41086a290300200441e83b6a41086a2903007c201b203054ad7c200441b83e6a41086a2903007c201e201b54ad7c200441e83c6a41086a2903007c2021201e54ad7c200441b83d6a41086a2903007c2023202154ad7c2027202354ad7c420d86847c221e42ffffffffffffff0383221b42137e222c420010d507200441f80c6a201542338820044188146a41086a290300200441d80f6a41086a2903007c200c202e54ad7c200441a8156a41086a2903007c2012200c54ad7c200441c8166a41086a2903007c2013201254ad7c200441e8176a41086a2903007c2014201354ad7c2015201454ad7c420d868442137e202b42ffffffffffffff03837c222e42ffffffffffffff03832223420020042903883c223020042903b83b7c220c20042903983e7c221220042903e83d7c221320042903883d7c221420042903983c223120042903c83b7c221520042903c83d7c222120042903f83d7c222920042903983d7c222b201e423388200441a83c6a41086a290300200441d83b6a41086a2903007c2016202f54ad7c200441d83c6a41086a2903007c2017201654ad7c200441d83d6a41086a2903007c2019201754ad7c200441a83d6a41086a2903007c201c201954ad7c201e201c54ad7c420d86847c2216423388200441983c6a41086a290300200441c83b6a41086a2903007c2015203154ad7c200441c83d6a41086a2903007c2021201554ad7c200441f83d6a41086a2903007c2029202154ad7c200441983d6a41086a2903007c202b202954ad7c2016202b54ad7c420d86847c2215423388200441883c6a41086a290300200441b83b6a41086a2903007c200c203054ad7c200441983e6a41086a2903007c2012200c54ad7c200441e83d6a41086a2903007c2013201254ad7c200441883d6a41086a2903007c2014201354ad7c2015201454ad7c420d868442137e202d42ffffffffffffff03837c2213423388202742ffffffffffffff03837c2212420010d507200441f80f6a201a42ffffffffffffff038322274200201642ffffffffffffff0383221e42137e2214420010d507200441d8106a201f42ffffffffffffff038322294200201542ffffffffffffff0383222142137e220c420010d507200441c80d6a202e423388202a42ffffffffffffff03837c222a4200201342ffffffffffffff03832213420010d507200441880f6a20224200201242137e420010d507200441880d6a201342002023420010d507200441e80f6a20274200202c420010d507200441c8106a202942002014420010d507200441d80d6a202a4200200c420010d507200441a80f6a202242002014420010d507200441e80c6a20234200201b420010d50720044188106a20274200200c420010d507200441e8106a202942002013420010d507200441b80d6a202a42002012420010d507200441b80f6a20224200200c420010d507200441a80c6a20234200201e420010d50720044198106a202742002013420010d507200441f8106a202942002012420010d507200441a80d6a202a4200201b420010d507200441c80f6a202242002013420010d507200441f80b6a202342002021420010d507200441a8106a202742002012420010d50720044188116a20294200201b420010d507200441980d6a202a4200201e420010d507200441d80a6a20042903d81422452004290398127c220c20042903f8157c22152004290398177c221620042903b8187c221720042903e814224020042903f8127c22142004290388167c221920042903a8177c221a20042903c8187c221c20042903f814224320042903d8137c221f2004290398167c222b20042903b8177c222c20042903d8187c222d200429038815224720042903e8137c222e20042903a8167c222f20042903c8177c223020042903e8187c2231200429039815224920042903f8137c223220042903b8167c223320042903d8177c223920042903f8187c223a42338820044198156a41086a290300200441f8136a41086a2903007c2032204954ad7c200441b8166a41086a2903007c2033203254ad7c200441d8176a41086a2903007c2039203354ad7c200441f8186a41086a2903007c203a203954ad7c420d86847c223242338820044188156a41086a290300200441e8136a41086a2903007c202e204754ad7c200441a8166a41086a2903007c202f202e54ad7c200441c8176a41086a2903007c2030202f54ad7c200441e8186a41086a2903007c2031203054ad7c2032203154ad7c420d86847c222e423388200441f8146a41086a290300200441d8136a41086a2903007c201f204354ad7c20044198166a41086a2903007c202b201f54ad7c200441b8176a41086a2903007c202c202b54ad7c200441d8186a41086a2903007c202d202c54ad7c202e202d54ad7c420d86847c221f423388200441e8146a41086a290300200441f8126a41086a2903007c2014204054ad7c20044188166a41086a2903007c2019201454ad7c200441a8176a41086a2903007c201a201954ad7c200441c8186a41086a2903007c201c201a54ad7c201f201c54ad7c420d86847c221942ffffffffffffff03832214420020042903a80f224720042903e80c7c221a2004290388107c222b20042903e8107c222c20042903b80d7c222d20042903980f224920042903f80c7c221c20042903f80f7c222f20042903d8107c223020042903c80d7c223120042903880f223b20042903880d7c223320042903e80f7c223920042903c8107c224020042903d80d7c2243423388200441880f6a41086a290300200441880d6a41086a2903007c2033203b54ad7c200441e80f6a41086a2903007c2039203354ad7c200441c8106a41086a2903007c2040203954ad7c200441d80d6a41086a2903007c2043204054ad7c420d86847c2233423388200441980f6a41086a290300200441f80c6a41086a2903007c201c204954ad7c200441f80f6a41086a2903007c202f201c54ad7c200441d8106a41086a2903007c2030202f54ad7c200441c80d6a41086a2903007c2031203054ad7c2033203154ad7c420d86847c222f42ffffffffffffff0383221c42137e2240420010d507200441b80a6a2019423388200441d8146a41086a29030020044198126a41086a2903007c200c204554ad7c200441f8156a41086a2903007c2015200c54ad7c20044198176a41086a2903007c2016201554ad7c200441b8186a41086a2903007c2017201654ad7c2019201754ad7c420d868442137e203a42ffffffffffffff03837c224542ffffffffffffff03832215420020042903c80f224920042903f80b7c220c20042903a8107c22162004290388117c221720042903980d7c221920042903b80f223b20042903a80c7c22302004290398107c223120042903f8107c223920042903a80d7c223a202f423388200441a80f6a41086a290300200441e80c6a41086a2903007c201a204754ad7c20044188106a41086a2903007c202b201a54ad7c200441e8106a41086a2903007c202c202b54ad7c200441b80d6a41086a2903007c202d202c54ad7c202f202d54ad7c420d86847c221a423388200441b80f6a41086a290300200441a80c6a41086a2903007c2030203b54ad7c20044198106a41086a2903007c2031203054ad7c200441f8106a41086a2903007c2039203154ad7c200441a80d6a41086a2903007c203a203954ad7c201a203a54ad7c420d86847c222b423388200441c80f6a41086a290300200441f80b6a41086a2903007c200c204954ad7c200441a8106a41086a2903007c2016200c54ad7c20044188116a41086a2903007c2017201654ad7c200441980d6a41086a2903007c2019201754ad7c202b201954ad7c420d868442137e204342ffffffffffffff03837c222f423388203342ffffffffffffff03837c220c420010d507200441880b6a201f42ffffffffffffff038322164200201a42ffffffffffffff0383222c42137e222d420010d507200441c80b6a202e42ffffffffffffff038322174200202b42ffffffffffffff0383222b42137e221f420010d507200441e8096a2045423388203242ffffffffffffff03837c22194200202f42ffffffffffffff0383221a420010d507200441f8096a201a42002015420010d507200441c80a6a20144200200c42137e420010d507200441e80a6a201642002040420010d507200441980b6a20174200202d420010d507200441d80b6a20194200201f420010d507200441b80c6a20154200201c420010d507200441f80a6a20144200202d420010d507200441b80b6a20164200201f420010d507200441d8096a20174200201a420010d507200441a80a6a20194200200c420010d507200441880c6a20154200202c420010d507200441a80b6a20144200201f420010d507200441f8086a20164200201a420010d507200441980a6a20174200200c420010d507200441c80c6a20194200201c420010d507200441e80b6a20154200202b420010d50720044198086a20144200201a420010d507200441880a6a20164200200c420010d507200441d80c6a20174200201c420010d507200441980c6a20194200202c420010d50720044188096a2021420020042903f80a224520042903b80c7c220c20042903b80b7c221a20042903d8097c221c20042903a80a7c221f20042903d80a223320042903b80a7c222b20042903880b7c222c20042903c80b7c222d20042903e8097c222e20042903c80a223920042903f8097c222f20042903e80a7c223020042903980b7c223120042903d80b7c2232423388200441c80a6a41086a290300200441f8096a41086a2903007c202f203954ad7c200441e80a6a41086a2903007c2030202f54ad7c200441980b6a41086a2903007c2031203054ad7c200441d80b6a41086a2903007c2032203154ad7c420d86847c222f423388200441d80a6a41086a290300200441b80a6a41086a2903007c202b203354ad7c200441880b6a41086a2903007c202c202b54ad7c200441c80b6a41086a2903007c202d202c54ad7c200441e8096a41086a2903007c202e202d54ad7c202f202e54ad7c420d86847c222c42ffffffffffffff0383222b42137e2233420010d507200441e8076a20134200200429039808224720042903e80b7c222d20042903880a7c222e20042903d80c7c223020042903980c7c223120042903a80b224920042903880c7c223920042903f8087c223a20042903980a7c224020042903c80c7c2243202c423388200441f80a6a41086a290300200441b80c6a41086a2903007c200c204554ad7c200441b80b6a41086a2903007c201a200c54ad7c200441d8096a41086a2903007c201c201a54ad7c200441a80a6a41086a2903007c201f201c54ad7c202c201f54ad7c420d86847c220c423388200441a80b6a41086a290300200441880c6a41086a2903007c2039204954ad7c200441f8086a41086a2903007c203a203954ad7c200441980a6a41086a2903007c2040203a54ad7c200441c80c6a41086a2903007c2043204054ad7c200c204354ad7c420d86847c221a42338820044198086a41086a290300200441e80b6a41086a2903007c202d204754ad7c200441880a6a41086a2903007c202e202d54ad7c200441d80c6a41086a2903007c2030202e54ad7c200441980c6a41086a2903007c2031203054ad7c201a203154ad7c420d868442137e203242ffffffffffffff03837c222e423388202f42ffffffffffffff03837c221c420010d507200441b8086a201e4200200c42ffffffffffffff0383222d42137e222c420010d507200441c8066a201b4200201a42ffffffffffffff0383223942137e221f420010d50720044198076a20124200202e42ffffffffffffff0383221a420010d507200441a8076a201a42002013420010d507200441f8076a20214200201c42137e224d420010d50720044198096a201e42002033420010d507200441c8086a201b4200202c420010d507200441d8066a20124200201f420010d507200441a8096a20134200202b420010d507200441a8086a20214200202c420010d507200441b8066a201e4200201f420010d50720044188076a201b4200201a420010d507200441d8076a20124200201c420010d507200441d8086a20134200202d420010d507200441a8066a20214200201f420010d507200441f8066a201e4200201a420010d507200441c8076a201b4200201c420010d507200441b8096a20124200202b420010d50720044188086a201342002039420010d507200441e8066a20214200201a420010d507200441b8076a201e4200201c420010d507200441c8096a201b4200202b420010d507200441e8086a20124200202d420010d507200441e8296a2011420042a0d69f90da80b1cb00420010d507200441e8286a201d4200429db1bce4dfb435420010d507200441c82a6a200e420042badf96dcb5c3bac700420010d507200441a82b6a2020420042a7ecfac2b5f7ea19420010d507200441b8296a2018420042b0c1bad0f4e48603420010d507200441d8296a2011420042a7a7fbf49beaf607420010d507200441f8286a201d420042b0c1bad0f4e48603420010d507200441b82a6a200e420042a0d69f90da80b1cb00420010d507200441982b6a2020420042badf96dcb5c3bac700420010d507200441c8296a2018420042a7ecfac2b5f7ea19420010d507200441f8296a2011420042badf96dcb5c3bac700420010d507200441d8286a201d420042e098f4e5e9ebfb03420010d507200441d82a6a200e420042a7ecfac2b5f7ea19420010d507200441b82b6a2020420042b0c1bad0f4e48603420010d507200441a8296a20184200429db1bce4dfb435420010d507200441882a6a2011420042a7ecfac2b5f7ea19420010d507200441c8286a201d4200429e9981b4dab2e103420010d507200441e82a6a200e420042b0c1bad0f4e48603420010d507200441c82b6a20204200429db1bce4dfb435420010d50720044198296a2018420042e098f4e5e9ebfb03420010d507200441982a6a2011420042b0c1bad0f4e48603420010d507200441b8286a201d4200429df893c0a486ae01420010d507200441f82a6a200e4200429db1bce4dfb435420010d507200441d82b6a2020420042e098f4e5e9ebfb03420010d50720044188296a20184200429e9981b4dab2e103420010d507200420042903a808223b20042903a8097c220c20042903b8067c222e2004290388077c222f20042903d8077c2230200429038809223c20042903e8077c223120042903b8087c223220042903c8067c223a2004290398077c224020042903f807223d20042903a8077c22432004290398097c224520042903c8087c224720042903d8067c2249423388200441f8076a41086a290300200441a8076a41086a2903007c2043203d54ad7c20044198096a41086a2903007c2045204354ad7c200441c8086a41086a2903007c2047204554ad7c200441d8066a41086a2903007c2049204754ad7c420d86847c224342338820044188096a41086a290300200441e8076a41086a2903007c2031203c54ad7c200441b8086a41086a2903007c2032203154ad7c200441c8066a41086a2903007c203a203254ad7c20044198076a41086a2903007c2040203a54ad7c2043204054ad7c420d86847c223142ffffffffffffff03833703e846200420042903a806224720042903d8087c223220042903f8067c223a20042903c8077c224020042903b8097c22452031423388200441a8086a41086a290300200441a8096a41086a2903007c200c203b54ad7c200441b8066a41086a2903007c202e200c54ad7c20044188076a41086a2903007c202f202e54ad7c200441d8076a41086a2903007c2030202f54ad7c2031203054ad7c420d86847c220c42ffffffffffffff03833703f046200420042903e806223b2004290388087c222e20042903b8077c222f20042903c8097c223020042903e8087c2231200c423388200441a8066a41086a290300200441d8086a41086a2903007c2032204754ad7c200441f8066a41086a2903007c203a203254ad7c200441c8076a41086a2903007c2040203a54ad7c200441b8096a41086a2903007c2045204054ad7c200c204554ad7c420d86847c220c42ffffffffffffff03833703f8462004200c423388200441e8066a41086a29030020044188086a41086a2903007c202e203b54ad7c200441b8076a41086a2903007c202f202e54ad7c200441c8096a41086a2903007c2030202f54ad7c200441e8086a41086a2903007c2031203054ad7c200c203154ad7c420d868442137e204942ffffffffffffff03837c220c42ffffffffffffff03833703d8462004200c423388204342ffffffffffffff03837c3703e046200441e8296a41086a290300214e200441e8286a41086a290300214f20042903e829210c20042903e8282141200441c82a6a41086a290300215020042903c82a2142200441a82b6a41086a290300215120042903a82b2144200441b8296a41086a290300215220042903b8292146200441d8296a41086a2903002153200441f8286a41086a290300215420042903d829212e20042903f8282148200441b82a6a41086a290300215520042903b82a214a200441982b6a41086a290300215620042903982b214b200441c8296a41086a290300215720042903c829214c20042903f829212f20042903d828213c20042903d82a213d20042903b82b213e20042903a829213f200441f8296a41086a2903002158200441d8286a41086a290300215e200441d82a6a41086a290300215f200441b82b6a41086a2903002160200441a8296a41086a290300216120042903882a213020042903c828214520042903e82a214720042903c82b2149200429039829213b200441882a6a41086a2903002162200441c8286a41086a2903002163200441e82a6a41086a2903002164200441c82b6a41086a290300216520044198296a41086a290300216620042903982a213120042903b828213220042903f82a213a20042903d82b21402004290388292143200441982a6a41086a2903002167200441b8286a41086a2903002168200441f82a6a41086a2903002169200441d82b6a41086a290300216a20044188296a41086a290300216b200441b0ca006a200441d8c6006a106a20044188066a200b20432040203a203120327c22327c223a7c22407c2243203b20492047203020457c22457c22477c22497c223b203f203e203d202f203c7c223c7c223d7c223e7c223f204620442042200c20417c22417c22427c22447c2246204c204b204a202e20487c22487c224a7c224b7c224c423388205720562055205320547c2048202e54ad7c7c204a204854ad7c7c204b204a54ad7c7c204c204b54ad7c420d86847c2248423388205220512050204e204f7c2041200c54ad7c7c2042204154ad7c7c2044204254ad7c7c2046204454ad7c2048204654ad7c420d86847c224142338820612060205f2058205e7c203c202f54ad7c7c203d203c54ad7c7c203e203d54ad7c7c203f203e54ad7c2041203f54ad7c420d86847c223c423388206620652064206220637c2045203054ad7c7c2047204554ad7c7c2049204754ad7c7c203b204954ad7c203c203b54ad7c420d86847c222f423388206b206a2069206720687c2032203154ad7c7c203a203254ad7c7c2040203a54ad7c7c2043204054ad7c202f204354ad7c420d868442137e204c42ffffffffffffff03837c223242ffffffffffffff038385420020042d00b04a410171106dad42ff01837d220c83200b85222e4200201c420010d507200441c8036a200a202f42ffffffffffffff038385200c83200a85222f42002033420010d50720044198046a200d203c42ffffffffffffff038385200c83200d8522304200202c420010d507200441e8046a200f204142ffffffffffffff038385200c83200f8522314200201f420010d507200441b8056a20102032423388204842ffffffffffffff03837c85200c8320108522324200201a420010d50720044198066a201a4200202e420010d507200441d8036a202f4200204d420010d507200441a8046a203042002033420010d507200441f8046a20314200202c420010d507200441c8056a20324200201f420010d507200441f8056a202e4200202b420010d507200441b8036a202f4200202c420010d50720044188046a20304200201f420010d507200441d8046a20314200201a420010d507200441a8056a20324200201c420010d507200441e8056a202e4200202d420010d507200441a8036a202f4200201f420010d507200441f8036a20304200201a420010d507200441c8046a20314200201c420010d50720044198056a20324200202b420010d507200441d8056a202e42002039420010d50720044198036a202f4200201a420010d507200441e8036a20304200201c420010d507200441b8046a20314200202b420010d50720044188056a20324200202d420010d50720044198236a200a420042a0d69f90da80b1cb00420010d507200441a8206a200b4200429db1bce4dfb435420010d507200441c8246a200d420042badf96dcb5c3bac700420010d507200441f8256a200f420042a7ecfac2b5f7ea19420010d507200441c8216a2010420042b0c1bad0f4e48603420010d50720044188236a200a420042a7a7fbf49beaf607420010d507200441b8206a200b420042b0c1bad0f4e48603420010d507200441b8246a200d420042a0d69f90da80b1cb00420010d507200441e8256a200f420042badf96dcb5c3bac700420010d507200441d8216a2010420042a7ecfac2b5f7ea19420010d507200441a8236a200a420042badf96dcb5c3bac700420010d50720044198206a200b420042e098f4e5e9ebfb03420010d507200441d8246a200d420042a7ecfac2b5f7ea19420010d50720044188266a200f420042b0c1bad0f4e48603420010d507200441b8216a20104200429db1bce4dfb435420010d507200441b8236a200a420042a7ecfac2b5f7ea19420010d50720044188206a200b4200429e9981b4dab2e103420010d507200441e8246a200d420042b0c1bad0f4e48603420010d50720044198266a200f4200429db1bce4dfb435420010d507200441a8216a2010420042e098f4e5e9ebfb03420010d507200441c8236a200a420042b0c1bad0f4e48603420010d507200441f81f6a200b4200429df893c0a486ae01420010d507200441f8246a200d4200429db1bce4dfb435420010d507200441a8266a200f420042e098f4e5e9ebfb03420010d50720044198216a20104200429e9981b4dab2e103420010d507200441f8116a201442004288f5a7f5b28623420010d507200441980e6a2015420042b9a6dff282e9ba01420010d507200441d8126a2016420042edd5d7bc83fb803c420010d507200441b8136a2017420042edc19ab7ab9cc0c700420010d507200441e80e6a2019420042ea81f582a8b53f420010d50720044188126a2014420042bbda9284b7cbdd1b420010d507200441a80e6a2015420042ea81f582a8b53f420010d507200441e8126a201642004288f5a7f5b28623420010d507200441c8136a2017420042edd5d7bc83fb803c420010d507200441f80e6a2019420042edc19ab7ab9cc0c700420010d507200441e8116a2014420042edd5d7bc83fb803c420010d507200441880e6a2015420042d8f8d29390ec01420010d507200441c8126a2016420042edc19ab7ab9cc0c700420010d507200441a8136a2017420042ea81f582a8b53f420010d507200441d80e6a2019420042b9a6dff282e9ba01420010d507200441d8116a2014420042edc19ab7ab9cc0c700420010d507200441f80d6a2015420042ff91f789b6a19403420010d507200441b8126a2016420042ea81f582a8b53f420010d50720044198136a2017420042b9a6dff282e9ba01420010d507200441c80e6a2019420042d8f8d29390ec01420010d507200441c8116a2014420042ea81f582a8b53f420010d507200441e80d6a2015420042fff5f38289d9e103420010d507200441a8126a2016420042b9a6dff282e9ba01420010d50720044188136a2017420042d8f8d29390ec01420010d507200441b80e6a2019420042ff91f789b6a19403420010d507200420042903b803222f20042903f8057c22142004290388047c221520042903d8047c221620042903a8057c221720042903c80322302004290388067c22192004290398047c221a20042903e8047c221c20042903b8057c221f20042903d80322312004290398067c222b20042903a8047c222c20042903f8047c222d20042903c8057c222e423388200441d8036a41086a29030020044198066a41086a2903007c202b203154ad7c200441a8046a41086a2903007c202c202b54ad7c200441f8046a41086a2903007c202d202c54ad7c200441c8056a41086a2903007c202e202d54ad7c420d86847c222b423388200441c8036a41086a29030020044188066a41086a2903007c2019203054ad7c20044198046a41086a2903007c201a201954ad7c200441e8046a41086a2903007c201c201a54ad7c200441b8056a41086a2903007c201f201c54ad7c202b201f54ad7c420d86847c221942ffffffffffffff03833703e846200420042903a803222d20042903e8057c221a20042903f8037c221c20042903c8047c221f2004290398057c222c2019423388200441b8036a41086a290300200441f8056a41086a2903007c2014202f54ad7c20044188046a41086a2903007c2015201454ad7c200441d8046a41086a2903007c2016201554ad7c200441a8056a41086a2903007c2017201654ad7c2019201754ad7c420d86847c221442ffffffffffffff03833703f0462004200429039803222f20042903d8057c221520042903e8037c221620042903b8047c22172004290388057c22192014423388200441a8036a41086a290300200441e8056a41086a2903007c201a202d54ad7c200441f8036a41086a2903007c201c201a54ad7c200441c8046a41086a2903007c201f201c54ad7c20044198056a41086a2903007c202c201f54ad7c2014202c54ad7c420d86847c221442ffffffffffffff03833703f8462004201442338820044198036a41086a290300200441d8056a41086a2903007c2015202f54ad7c200441e8036a41086a2903007c2016201554ad7c200441b8046a41086a2903007c2017201654ad7c20044188056a41086a2903007c2019201754ad7c2014201954ad7c420d868442137e202e42ffffffffffffff03837c221442ffffffffffffff03833703d84620042014423388202b42ffffffffffffff03837c3703e04620044198236a41086a2903002141200441a8206a41086a2903002142200429039823211520042903a820213c200441c8246a41086a290300214420042903c824213d200441f8256a41086a290300214620042903f825213e200441c8216a41086a290300214820042903c821213f20044188236a41086a290300214a200441b8206a41086a290300214b200429038823211620042903b820214c200441b8246a41086a290300214d20042903b824214e200441e8256a41086a290300214f20042903e8252150200441d8216a41086a290300215120042903d821215220042903a8232117200429039820215320042903d8242154200429038826215520042903b8212156200441a8236a41086a290300215720044198206a41086a2903002158200441d8246a41086a290300215e20044188266a41086a290300215f200441b8216a41086a290300216020042903b8232119200429038820216120042903e8242162200429039826216320042903a8212164200441b8236a41086a290300216520044188206a41086a2903002166200441e8246a41086a290300216720044198266a41086a2903002168200441a8216a41086a290300216920042903c823211a20042903f81f216a20042903f824216b20042903a826216c200429039821216d200441c8236a41086a290300216e200441f81f6a41086a290300216f200441f8246a41086a2903002170200441a8266a41086a290300217120044198216a41086a2903002172200441b0ca006a200441d8c6006a106a20042d00b04a410171106d2173200441f8026a202320042903c811227420042903e80d7c221420042903a8127c221c2004290388137c221f20042903b80e7c222b20042903d811227520042903f80d7c222c20042903b8127c222d2004290398137c222e20042903c80e7c222f20042903e811227620042903880e7c223020042903c8127c223120042903a8137c223220042903d80e7c223320042903f811227720042903980e7c223920042903d8127c223a20042903b8137c224020042903e80e7c2243200429038812227820042903a80e7c224520042903e8127c224720042903c8137c224920042903f80e7c223b42338820044188126a41086a290300200441a80e6a41086a2903007c2045207854ad7c200441e8126a41086a2903007c2047204554ad7c200441c8136a41086a2903007c2049204754ad7c200441f80e6a41086a2903007c203b204954ad7c420d86847c2245423388200441f8116a41086a290300200441980e6a41086a2903007c2039207754ad7c200441d8126a41086a2903007c203a203954ad7c200441b8136a41086a2903007c2040203a54ad7c200441e80e6a41086a2903007c2043204054ad7c2045204354ad7c420d86847c2239423388200441e8116a41086a290300200441880e6a41086a2903007c2030207654ad7c200441c8126a41086a2903007c2031203054ad7c200441a8136a41086a2903007c2032203154ad7c200441d80e6a41086a2903007c2033203254ad7c2039203354ad7c420d86847c2230423388200441d8116a41086a290300200441f80d6a41086a2903007c202c207554ad7c200441b8126a41086a2903007c202d202c54ad7c20044198136a41086a2903007c202e202d54ad7c200441c80e6a41086a2903007c202f202e54ad7c2030202f54ad7c420d86847c222c423388200441c8116a41086a290300200441e80d6a41086a2903007c2014207454ad7c200441a8126a41086a2903007c201c201454ad7c20044188136a41086a2903007c201f201c54ad7c200441b80e6a41086a2903007c202b201f54ad7c202c202b54ad7c420d868442137e203b42ffffffffffffff03837c227442ffffffffffffff038385200c8320238522144200203542f0ffffffffffff3f2018206d206c206b201a206a7c221c7c221f7c22237c222b206420632062201920617c222d7c222e7c222f7c2231205620552054201720537c22327c22337c223a7c2240203f203e203d2015203c7c22437c22477c22497c223b20522050204e2016204c7c223c7c223d7c223e7c223f4233882051204f204d204a204b7c203c201654ad7c7c203d203c54ad7c7c203e203d54ad7c7c203f203e54ad7c420d86847c2216423388204820462044204120427c2043201554ad7c7c2047204354ad7c7c2049204754ad7c7c203b204954ad7c2016203b54ad7c420d86847c22434233882060205f205e205720587c2032201754ad7c7c2033203254ad7c7c203a203354ad7c7c2040203a54ad7c2043204054ad7c420d86847c2232423388206920682067206520667c202d201954ad7c7c202e202d54ad7c7c202f202e54ad7c7c2031202f54ad7c2032203154ad7c420d86847c2217423388207220712070206e206f7c201c201a54ad7c7c201f201c54ad7c7c2023201f54ad7c7c202b202354ad7c2017202b54ad7c420d868442137e203f42ffffffffffffff03837c2215423388201642ffffffffffffff03837c85200c8320188522167d221a42ffffffffffffff038342d0fdffffffffff3f201d201542ffffffffffffff038385200c83201d8522197d221c4233887c20168542002073ad42ff01837d2215832016857d42f0ffffffffffff3f7c222342ffffffffffffff0383203442f0ffffffffffff3f2011201742ffffffffffffff038385200c83201185221f7d222b42338842137e201c42ffffffffffffff03837c2019852015832019857d42d0fdffffffffff3f7c222d4233887c2216420010d507200441386a2022202c42ffffffffffffff038385200c8320228522174200203742f0ffffffffffff3f2020204342ffffffffffffff038385200c8320208522197d222242ffffffffffffff0383201a4233887c2019852015832019857d42f0ffffffffffff3f7c222c42ffffffffffffff038320234233887c221c42137e222e420010d50720044188016a2027203042ffffffffffffff038385200c8320278522194200203842f0ffffffffffff3f200e203242ffffffffffffff038385200c83200e85221a7d222742ffffffffffffff038320224233887c201a85201583201a857d42f0ffffffffffff3f7c222f42ffffffffffffff0383202c4233887c222242137e2223420010d507200441d8016a2029203942ffffffffffffff038385200c83202985221a42002036202b42ffffffffffffff038320274233887c201f85201583201f857d42f0ffffffffffff3f7c221542ffffffffffffff0383202f4233887c222742137e221f420010d507200441a8026a202a2074423388204542ffffffffffffff03837c85200c83202a85220c4200201542338842137e202d42ffffffffffffff03837c2215420010d50720044188036a201542002014420010d507200441c8006a20174200201642137e420010d50720044198016a20194200202e420010d507200441e8016a201a42002023420010d507200441b8026a200c4200201f420010d507200441e8026a20144200201c420010d507200441286a201742002023420010d507200441f8006a20194200201f420010d507200441c8016a201a42002015420010d50720044198026a200c42002016420010d507200441d8026a201442002022420010d507200441186a20174200201f420010d507200441e8006a201942002015420010d507200441b8016a201a42002016420010d50720044188026a200c4200201c420010d507200441c8026a201442002027420010d507200441086a201742002015420010d507200441d8006a201942002016420010d507200441a8016a201a4200201c420010d507200441f8016a200c42002022420010d50720042004290308223120042903c8027c220c20042903587c221420042903a8017c221520042903f8017c22162004290318223220042903d8027c221720042903687c221920042903b8017c221a2004290388027c221c2004290328223320042903e8027c221f20042903787c222220042903c8017c22232004290398027c22272004290338223920042903f8027c22292004290388017c222a20042903d8017c222b20042903a8027c222c2004290348223a2004290388037c222d2004290398017c222e20042903e8017c222f20042903b8027c2230423388200441c8006a41086a29030020044188036a41086a2903007c202d203a54ad7c20044198016a41086a2903007c202e202d54ad7c200441e8016a41086a2903007c202f202e54ad7c200441b8026a41086a2903007c2030202f54ad7c420d86847c222d423388200441386a41086a290300200441f8026a41086a2903007c2029203954ad7c20044188016a41086a2903007c202a202954ad7c200441d8016a41086a2903007c202b202a54ad7c200441a8026a41086a2903007c202c202b54ad7c202d202c54ad7c420d86847c2229423388200441286a41086a290300200441e8026a41086a2903007c201f203354ad7c200441f8006a41086a2903007c2022201f54ad7c200441c8016a41086a2903007c2023202254ad7c20044198026a41086a2903007c2027202354ad7c2029202754ad7c420d86847c221f423388200441186a41086a290300200441d8026a41086a2903007c2017203254ad7c200441e8006a41086a2903007c2019201754ad7c200441b8016a41086a2903007c201a201954ad7c20044188026a41086a2903007c201c201a54ad7c201f201c54ad7c420d86847c2217423388200441086a41086a290300200441c8026a41086a2903007c200c203154ad7c200441d8006a41086a2903007c2014200c54ad7c200441a8016a41086a2903007c2015201454ad7c200441f8016a41086a2903007c2016201554ad7c2017201654ad7c420d868442137e203042ffffffffffffff03837c220c42ffffffffffffff038322143703d8462004200c423388202d42ffffffffffffff03837c22153703e0462004201742ffffffffffffff038322163703f8462004201f42ffffffffffffff038322173703f0462004202942ffffffffffffff038322193703e846200441b0ca006a200441d8c6006a106a200442f0ffffffffffff3f20167d221a42ffffffffffffff038342f0ffffffffffff3f20177d221c4233887c201685420020042d00b04a410171106dad42ff01837d220c832016853703f8462004201c42ffffffffffffff038342f0ffffffffffff3f20197d22164233887c201785200c832017853703f0462004201642ffffffffffffff038342f0ffffffffffff3f20157d22164233887c201985200c832019853703e8462004201642ffffffffffffff038342d0fdffffffffff3f20147d22164233887c201585200c832015853703e0462004201a42338842137e201642ffffffffffffff03837c201485200c832014853703d846200441e8c4006a200441d8c6006a106a20044188c5006a1086012006200141186a2900003703002005200141106a290000370300200441e8c8006a41086a2273200141086a290000370300200420012900003703e848200441d8c6006a200441e8c8006a10d103200441d8c6006a41086a290300210c205d2903002114205c2903002115205b2903002119205a290300211a20242903002116202529030021172026290300211c2028290300211f200441a8c7006a290300212220042802dc46212420042802d846210120044188c5006a200741f00010e4071a02400240024020014101460d00200441d8c6006a20044188c5006a41f00010e4071a20042014200c4233887c22234233882023201454ad420d8684222920157c222742ffffffffffffff03833703e84a200420274233882027202954ad420d8684222920197c222742ffffffffffffff03833703f04a200420274233882027202954ad420d86842229201a7c222742ffffffffffffff03833703f84a200420274233882027202954ad420d868442137e200c42ffffffffffffff03837c222742ffffffffffffff03833703d84a20042027423388202342ffffffffffffff03837c3703e04a20024200370300200342003703002008420037030020094200370300200442003703a84820594200370300200642003703002005420037030020734200370300200442003703e8482004201720164233887c22234233882023201754ad420d86842229201c7c22274233882027202954ad420d8684222a201f7c22294233882029202a54ad420d8684222b20227c222a42ffffffffffffff03833703a8452004202942ffffffffffffff03833703a0452004202742ffffffffffffff0383370398452004202a423388202a202b54ad420d868442137e201642ffffffffffffff03837c2227423388202342ffffffffffffff03837c370390452004202742ffffffffffffff03833703884520044188ca006a200441d8ca006a106a200441b0ca006a200441a8c8006a106a41002101410121020340200441b0ca006a20016a2d000020044188ca006a20016a2d0000732203410020036b72417f7341800171410776106d2002712102200141016a22014120470d000b2002106d210820044188ca006a200441e8c8006a106a200441b0ca006a20044188c5006a106a41002101410121020340200441b0ca006a20016a2d000020044188ca006a20016a2d0000732203410020036b72417f7341800171410776106d2002712102200141016a22014120470d000b2002106d200872106d41ff01714101460d01200041a0016a202137030020004198016a201e37030020004190016a201b37030020004188016a201237030020004180016a2013370300200041f8006a2036370300200041f0006a2038370300200041e8006a2037370300200041e0006a2035370300200041d8006a2034370300200041d0006a2011370300200041c8006a200e370300200041c0006a2020370300200041386a2018370300200041306a201d370300200041286a200a370300200041206a200d370300200041186a200f370300200041106a2010370300200041086a200b37030020004190026a202237030020004188026a201f37030020004180026a201c370300200041f8016a2017370300200041f0016a2016370300200041e8016a201a370300200041e0016a2019370300200041d8016a2015370300200041d0016a2014370300200041c8016a200c370300200041c0016a200441e8c4006a41186a290300370300200041b8016a200441e8c4006a41106a290300370300200041b0016a200441e8c4006a41086a290300370300200041a8016a20042903e84437030020004198026a200441d8c6006a41f00010e4071a200041003602000c020b2000202436020420004101360200200041186a20153e0200200041106a2014370200200041086a200c3702000c010b20004101360200200041013a00040b20044180cb006a24000b8d0403037f017e017f23004180016b22012400200141086a41206a200041206a280200360200200141086a41186a200041186a290200370300200141086a41106a200041106a290200370300200141086a41086a200041086a29020037030020012000290200370308200141d0006a41186a4200370300200141d0006a41106a22024200370300200141d0006a41086a220042003703002001420037035041b3e6ca00ad4280808080e000841001220329000021042000200341086a290000370300200120043703502003102941e7e6ca00ad4280808080e00084100122032900002104200141f0006a41086a2205200341086a2900003703002001200437037020031029200220012903702204370300200141306a41086a2000290300370300200141306a41106a2004370300200141306a41186a200529030037030020012001290350370330200141d0006a200141086a10bc0220012802542100200141306aad4280808080800484200135025842208620012802502203ad84101402402000450d00200310290b0240024020012d0008220041044b0d0002400240024020000e050400010204040b200141146a280200450d03200141106a28020010290c030b200141146a280200450d02200141106a28020010290c020b200141146a280200450d01200141106a28020010290c010b200141106a280200450d00200128020c10290b20014180016a24000b3400200041c8bec50036020420004100360200200041146a410b360200200041106a41dce8c200360200200041086a42043702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102722060d001039000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b130020004102360204200041b480c3003602000b2d01017f02404108102722020d001039000b20004288808080800137020420002002360200200242f02e3700000b2d01017f02404108102722020d001039000b20004288808080800137020420002002360200200242e0123700000bce21011d7f230041b0046b220224000240024002400240024002400240024020002802004101460d00200041146a2802002203200328020041016a360200200041106a28020021042000410c6a2802002105200041086a280200210320002802042106200241e0006a41206a2207200041386a2d00003a0000200241e0006a41186a2208200041306a290000370300200241e0006a41106a2209200041286a290000370300200241e0006a41086a220a200041206a2900003703002002200041186a29000037036020032f0106220b410b490d01200241c0016a410041eb0210e6071a200241d9006a4100360000200241306a41216a4200370000200241c9006a4200370000200241c1006a4200370000200241396a42003700002002420037003141a0031027220c450d05200c41003b0106200c4100360200200c41086a200241c0016a41eb0210e4072107200c4198036a200241d5006a290000370000200c4193036a200241306a41206a290000370000200c418b036a200241306a41186a290000370000200c4183036a200241306a41106a290000370000200c41fb026a200241306a41086a290000370000200c20022900303700f3022002200341ce016a2f00003b01182002200341d0016a2d00003a001a200341d1016a280000210d200341d5016a280000210e200341d9016a280000210f200341dd016a28000021102002200341e7016a2900003701c6012002200341e1016a2900003703c001200328028c0321112007200341ef016a20032f010641796a220041216c10e4072107200c41f4026a20034190036a200041027410e4072108200341063b0106200c20003b01062002412c6a41026a20022d001a3a0000200220022f01183b012c200220022903c001370330200220022901c6013701360240024020044107490d00200441216c20076a220741ba7e6a200741997e6a2207200041ffff0371200441796a22096b41216c10e5071a200741206a200241e0006a41206a2d00003a0000200741186a200241e0006a41186a290300370000200741106a200241e0006a41106a290300370000200741086a200241e0006a41086a29030037000020072002290360370000200441027420086a41686a2107200820094102746a2112200c41066a22002f010020096b21040c010b200341086a200441216c6a220741216a2007200341066a22002f010020046b41216c10e5071a200741206a200241e0006a41206a2d00003a0000200741186a200241e0006a41186a290300370000200741106a200241e0006a41106a290300370000200741086a200241e0006a41086a29030037000020072002290360370000200341f4026a20044102746a221241046a210720002f010020046b21040b20072012200441027410e5071a20122001360200200241146a41026a2002412c6a41026a22132d000022013a0000200020002f010041016a3b0100200241106a41026a221420013a000020022002290136370196012002200229033037039001200220022f012c22003b0114200220003b0110200220022903900137030020022002290196013701060240200328020022070d00410021000c040b20032f01042115200241c0016a4102722116200241306a41016a210a410021000340201320142d00003a0000200220022f01103b012c200220022903003703182002200229010637011e20062000470d03201541ffff0371210802400240024020072f01062200410b490d00200a41286a4100360000200a41206a4200370000200a41186a4200370000200a41106a4200370000200a41086a4200370000200a42003700002016410041ed0210e6071a200241e0006a41086a22004200370300200241e0006a41106a22034200370300200241e0006a41186a22044200370300200241e0006a41206a22094200370300200241e0006a41286a220b420037030020024190016a41256a2217200241306a41256a29000037000020024190016a41206a2218200241306a41206a29000037030020024190016a41186a2219200241306a41186a29000037030020024190016a41106a221a200241306a41106a29000037030020024190016a41086a221b200241306a41086a29000037030020024200370360200220022900303703900141d00310272201450d0920014100360200200141046a200241c0016a41ef0210e4071a20014198036a201729000037000020014193036a20182903003700002001418b036a201929030037000020014183036a201a290300370000200141fb026a201b29030037000020012002290390013700f302200120022903603702a003200141a8036a2000290300370200200141b0036a2003290300370200200141b8036a2004290300370200200141c0036a2009290300370200200141c8036a200b29030037020020024190016a41026a220b200741d0016a2d00003a00002002200741ce016a2f00003b0190012002200741e1016a2900003703c0012002200741e7016a2900003701c601200741d1016a2800002118200741d5016a2800002119200741d9016a280000211a200741dd016a280000211b200728028c03211c200141086a200741ef016a20072f0106220341796a220041216c10e407211d200141f4026a20074190036a200041027410e407211e200141a0036a200741bc036a2003417a6a220941027410e4072117200741063b0106200120003b010602402009450d00410021002017210303402003280200220420003b010420042001360200200341046a21032009200041016a2200470d000b0b200220022f01900122003b0130200220022903c001370360200220022901c6013701662002200b2d000022033a0032200b20033a0000200220003b019001200220022903603703c001200220022901663701c601201541ffff037122034107490d01200841216c201d6a220041ba7e6a200041997e6a220320012f0106200841796a22006b41216c10e5071a2003201036000f2003200f36000b2003200e3600072003200d360003200341026a20132d00003a0000200320022f012c3b000020032002290318370013200341196a200229011e370000201e2008417a6a220341027422046a201e20004102746a220920012f0106221520006b41027410e5071a200920113602002001201541016a22093b01062008410274221520176a416c6a201720046a2204200941ffff0371220820036b41027410e5071a2004200c36020020082003490d02200120156a4188036a2103034020032802002204200041016a22003b010420042001360200200341046a210320002008490d000c030b0b2007200841216c6a220341296a200341086a2201200020086b41216c10e5071a200341176a2010360000200341136a200f3600002003410f6a200e3600002003410b6a200d3600002003410a6a2002412c6a41026a2d00003a0000200120022f012c3b00002003411b6a2002290318370000200341216a200229011e370000200741f4026a2203200841016a220041027422016a2003200841027422046a220320072f0106220920086b41027410e5071a200320113602002007200941016a22033b01062004200741a0036a22086a41086a200820016a2201200341ffff0371220420006b41027410e5071a2001200c360200201541ffff037120044f0d0720072000417f6a22004102746a41a4036a2103034020032802002201200041016a22003b010420012007360200200341046a210320002004490d000c080b0b200741086a200841216c6a220041216a200020072f010620086b41216c10e5071a2000201036000f2000200f36000b2000200e3600072000200d360003200041026a20132d00003a0000200020022f012c3b000020002002290318370013200041196a200229011e370000200741f4026a2204200841016a220941027422156a2004200841027422006a220420072f0106221720086b41027410e5071a200420113602002007201741016a22043b01062000200741a0036a22176a41086a201720156a2215200441ffff0371220420096b41027410e5071a2015200c360200200320044f0d00200720006a41a4036a2100034020002802002203200841016a22083b010420032007360200200041046a210020042008470d000b0b200641016a21002014200b2d00003a0000200220022f0190013b0110200220022903c001370300200220022901c6013701060240200728020022030d002018210d201b2110201a210f2019210e2001210c201c21110c050b20072f010421152018210d201b2110201a210f2019210e20032107201c21112001210c200021060c000b0b20012001280200417f6a2203360200200041086a280200200041106a2802004102746a41f4026a211220030d030240200128020c2200450d0020002000280200417f6a360200200128020c22002802000d00200041086a10dc03200128020c22002000280204417f6a360204200128020c22002802040d00200010290b20012001280204417f6a220036020420000d03200110290c030b2003200441216c6a220041296a200041086a220c200b20046b41216c10e5071a200041286a20072d00003a0000200041206a2008290300370000200041186a2009290300370000200041106a200a290300370000200c2002290360370000200320044102746a220041f8026a200041f4026a221220032f010620046b41027410e5071a20122001360200200320032f010641016a3b01060c020b41cc9ec800413541b8a1cc001033000b200241b9016a4100360000200241b1016a4200370000200241a9016a4200370000200241a1016a420037000020024199016a42003700002002420037009101200241c0016a410272410041ed0210e6071a200241e0006a41086a22014200370300200241e0006a41106a22044200370300200241e0006a41186a22074200370300200241e0006a41206a2208420037030020024188016a22094200370300200241306a41256a220a20024190016a41256a290000370000200241306a41206a220b20024190016a41206a290000370300200241306a41186a220620024190016a41186a290000370300200241306a41106a221520024190016a41106a290000370300200241306a41086a221720024190016a41086a29000037030020024200370360200220022900900137033041d00310272203450d0120034100360200200341046a200241c0016a41ef0210e4071a20034198036a200a29000037000020034193036a200b2903003700002003418b036a200629030037000020034183036a2015290300370000200341fb026a2017290300370000200320022903303700f302200320022903603702a003200341a8036a2001290300370200200341b0036a2004290300370200200341b8036a2007290300370200200341c0036a2008290300370200200341c8036a20092903003702002003200528020022013602a0032005200336020020052005280204220441016a360204200141003b010420012003360200200241e0006a41026a200241106a41026a2d00003a0000200220022f01103b0160200220022903003703c001200220022901063701c60120042000470d0220032f01062201410a4b0d032003200141216c6a2200410a6a200241e0006a41026a2d00003a0000200041086a20022f01603b0000200041176a2010360000200041136a200f3600002000410f6a200e3600002000410b6a200d3600002000411b6a20022903c001370000200041216a20022901c6013700002003200141016a22004102746a41a0036a200c360200200320014102746a41f4026a2011360200200320003b0106200c20003b0104200c20033602000b200241b0046a240020120f0b1030000b41b69cc800413041b8a1cc001033000b418f9cc800412741b8a1cc001033000bc30101027f230041106b2202240002400240200128020041016a220341014d0d0020012003360200200028020022002802080d012000417f3602080240200028020c2203450d0020032003280200417f6a360200200028020c22032802000d00200341086a10dc03200028020c22032003280204417f6a360204200028020c22032802040d00200310290b2000200136020c2000200028020841016a360208200241106a24000f0b00000b41c78dcc004110200241086a41c8a7c70041e88dcc00103a000b9909010d7f230041306b220224002002410036021020024204370308200241003602202002420437031802400240024002400240200128020041016a220341014d0d0020012003360200200241086a4100410110980120022802082204200228021022034102746a20013602002002200341016a22053602102001280200220341016a41014d0d002001200341016a360200200241186a4100410110980120022802182206200228022022034102746a20013602002002200341016a2207360220200128020041016a220841014d0d00200120083602000340200841016a220341014d0d0120012003360200200128020841016a220341004c0d02200141086a210920012003360208200128020c2208450d0502402007450d002007410274210a200841106a210b2006210c0340200c28020022032008460d07200328020841016a220d41004c0d052003200d3602082008280208220d41016a220e41004c0d062008200e3602080240200341106a200b412010e7070d0020032d003020082d0030470d002008200d36020820032003280208417f6a3602080c080b200c41046a210c2008200d36020820032003280208417f6a360208200a417c6a220a0d000b200128020c21080b200828020041016a220341014d0d012008200336020002402005200228020c470d00200241086a2005410110980120022802082104200228021021050b200420054102746a20083602002002200541016a2205360210200128020c220328020041016a220841014d0d012003200836020020012001280200417f6a2208360200024020080d00200910dc0320012001280204417f6a220836020420080d00200110290b200328020041016a220841014d0d012003200836020002402007200228021c470d00200241186a2007410110980120022802182106200228022021070b200620074102746a200336020020012001280208417f6a36020820012001280200417f6a22083602002002200741016a2207360220024020080d00200910dc0320012001280204417f6a220836020420080d00200110290b20032802002108200321010c000b0b00000b41cc8ccc004118200241286a41b8a7c70041f48ccc00103a000b41cc8ccc004118200241286a41b8a7c70041f48ccc00103a000b41cc8ccc004118200241286a41b8a7c70041f48ccc00103a000b20012001280208417f6a36020820012001280200417f6a2203360200024020030d00200910dc0320012001280204417f6a220336020420030d00200110290b20002001360200200020022903083702042000410c6a200241086a41086a28020036020002402007450d00200741027421082006210303402003280200220c200c280200417f6a36020002402003280200220c2802000d000240200c28020c2201450d0020012001280200417f6a360200200c28020c22012802000d00200141086a10dc03200c28020c22012001280204417f6a360204200c28020c220c2802040d00200c10290b2003280200220c200c280204417f6a3602042003280200220c2802040d00200c10290b200341046a21032008417c6a22080d000b0b0240200228021c41ffffffff0371450d00200610290b200241306a24000b5401017f024020002802042201450d0020012001280200417f6a360200200028020422012802000d00200141086a10dc03200028020422012001280204417f6a360204200028020422002802040d00200010290b0ba50201047f230041106b22022400410021030240024002400240024002400240200028020841016a220441004c0d00200028020c2205450d0620002004360208024020052001470d00410121030c060b200528020841016a220341004c0d01200520033602082001280208220441016a220341004c0d0220012003360208200541106a200141106a412010e7070d034101210320052d003020012d0030470d030c040b41cc8ccc004118200241086a41b8a7c70041f48ccc00103a000b41cc8ccc004118200241086a41b8a7c70041f48ccc00103a000b41cc8ccc004118200241086a41b8a7c70041f48ccc00103a000b410021030b2001200436020820052005280208417f6a360208200028020821040b20002004417f6a3602080b200241106a240020030bbe110c047f027e027f067e017f037e037f027e027f017e017f027e230041b0036b2204240020032802002105200441206a200110a802200441a0016a200428022022062004280228220710a90220042903a001210842002109200442003703a001200441e8016a280200210a20042d00ec01210b02400240200842015122030d00200441306a41306a4200370300200441306a41286a4200370300200441306a41206a4200370300200441306a41186a4200370300200441c0006a4200370300200441386a4200370300200442003703304200210c4200210d4200210e4200210f0c010b200441d8016a2903002110200441a0016a41306a2903002111200441a0016a41206a290300210c200441a0016a41186a2903002109200441e0016a290300210f20042903b001210e20042903a801210d200441306a41206a200441a0016a41286a290300370300200441306a41286a2011370300200441306a41306a2010370300200441c0006a20093703002004200c3703482004200d3703302004200e3703380b427f200e200c7c200d20097c220c200d542212ad7c220920122009200e542009200e511b22121b2113427f200c20121b2114420021090240024002402002290300221542ffc7afa02556200241086a290300220c420052200c501b0d00201420138450450d0041002103410021124200210e410121020c010b4200200e200c7c200d20157c2210200d542202ad7c220d2002200d200e54200d200e511b22021b210e4200201020021b2111024020024101470d002011421088200e423086842109200e421088210e2011420888a721122011a72103410121020c010b200441b0026a41186a22164200370300200441b0026a41106a22174200370300200441b0026a41086a22124200370300200442003703b00241dcbec500ad42808080808001842209100122182900002119200441a0026a41086a2202201841086a290000370300200420193703a0022018102920122002290300370300200420042903a0023703b002419fe3c200ad4280808080d00184221910012218290000211a2002201841086a2900003703002004201a3703a00220181029201720042903a002221a370300200441e8006a41086a221b2012290300370300200441e8006a41106a221c201a370300200441e8006a41186a22182002290300370300200420042903b002370368200441086a200441e8006a412010e301200441086a41106a290300211a2004290310211d2004280208211e201642003703002017420037030020124200370300200442003703b00220091001221629000021092002201641086a290000370300200420093703a0022016102920122002290300370300200420042903a0023703b00220191001221629000021092002201641086a290000370300200420093703a00220161029201720042903a0022209370300201b2012290300370300201c200937030020182002290300370300200420042903b0023703682004201a4200201e1b3703b8022004201d4200201e1b3703b002200441e8006aad4280808080800484200441b0026aad428080808080028410032004200e370338200420113703302018200441c0006a220241086a2903002209370300200441e8006a41206a2212200241106a29030037030020044190016a2217200241186a29030037030020044198016a2218200241206a2903003703002004200e3703702004201137036820042002290300221937037802400240427f201120197c221920192011542202200e20097c2002ad7c2209200e542009200e511b22021b220e4280c8afa025544100427f200920021b2209501b0d00201c290300210e2018290300210920172903002111201229030021192004290370211a2004290368211d4201211f20042903800121200c010b4200211f0240200e200984500d00200e200910d402200441e8026a2009370300200441e0026a200e370300200441b0026a41086a41013a0000200441b9026a2005290000370000200441c1026a200541086a290000370000200441c9026a200541106a290000370000200441d1026a200541186a290000370000200441033a00b002200441b0026a10cb010b0b200441c8016a2019370300200441d0016a2011370300200441b0016a201a370300200441d8016a2009370300200441b8016a200e370300200420203703c0012004200f3703e0012004201d3703a801410021022004200b4100200842015122121b22053a00ec012004200a410020121b220a3602e8012004201f4201512212ad3703a001201420138450ad42308621094200210e024020120d002007ad4220862006ad841004410021120c010b410410272202450d012002200a360000200241044108102b2202450d01200220053a0004200241084115102b2202450d012002201d3700052002410d6a201a370000200441c0016a2903002108200441b8016a290300211320024115412a102b2202450d01200220133700152002411d6a20083700002002412a41d400102b2202450d01200220193700252002412d6a20113700002002413d6a200441e0016a2903003700002002200441d8016a2903003700352007ad4220862006ad842002ad4280808080d0088410032002102941012112410021020b02402004280224450d00200610290b024002402002450d00200041106a200e42108620094230888437030020002012ad42ff01834208862003ad42ff0183842009421086843703084201210e0c010b2009423088200e42108684210e024002400240200341ff017122020d00201241ff0171450d0041032103200441b0026a21020c010b2002450d01201241ff01710d0141042103200441a0016a21020b200241086a20033a0000200241003a0000200241096a2001290000370000200241116a200141086a290000370000200241196a200141106a290000370000200241216a200141186a290000370000200210cb010b2000200e370308200041286a200c370300200041206a2015370300200041186a200d370300200041106a20103703004200210e0b2000200e370300200441b0036a24000f0b1030000bc20503027f017e047f230041d0006b2202240041dcbec500ad4280808080800184100122032900002104200241086a200341086a290000370300200220043703002003102941f891c700ad4280808080d00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100522012900002104200241306a41086a200141086a2900003703002002200437033020011029200241cc006a200341206a360200200220033602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a1075200310292002280228220541206a2201417f4c0d01200228022021060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a20002001360208200020083602042000200336020002402002280224450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000ba6210b037f027e037f047e027f027e027f077e017f027e047f23004190086b22062400200620043703102006200337030820062001360204200620053a001f024002400240024002400240024020012002460d002003200484500d0020012002412010e707450d00200641206a200210a802200641306a200628022022072006280228220810a902200629033021094200210a20064200370330200641f8006a280200210b20062d007c210c024002402009420151220d0d0020064180016a41386a420037030020064180016a41306a420037030020064180016a41286a4200370300200641a0016a420037030020064180016a41186a420037030020064190016a420037030020064188016a420037030020064200370380014200210e4200210f420021100c010b200641306a41386a2903002103200641306a41306a2903002104200641306a41206a290300210e200641306a41186a290300210a200641f0006a2903002111200629034021102006290338210f200641a0016a200641306a41286a29030037030020064180016a41286a200437030020064180016a41306a200337030020064190016a200a3703002006200e37039801200620113703b8012006200f3703800120062010370388010b200641c0036a2006280204221210a802200641d0036a20062802c003221320062802c803220110a90220062903d003211442002115200642003703d00320064198046a280200211620062d009c04211702400240201442015122050d00200641a0046a41306a4200370300200641a0046a41286a4200370300200641a0046a41206a4200370300200641a0046a41186a4200370300200641a0046a41106a4200370300200641a8046a4200370300200642003703a004420021184200210442002103420021190c010b20064188046a2903002111200641d0036a41306a290300211a200641d0036a41206a2903002118200641d0036a41186a290300211520064190046a290300211920062903e003210320062903d8032104200641a0046a41206a200641d0036a41286a290300370300200641a0046a41286a201a370300200641a0046a41306a2011370300200641a0046a41106a2015370300200620183703b804200620043703a004200620033703a8040b024020042006290308221b7d221a2004562003200641086a41086a290300221c7d2004201b54ad7d221120035620112003511b450d0041cbe2c20021054280808080b002210341808c0c21010c030b2006201a3703a004200620113703a8040240200629038001221d201b7c221e201d54221f20064180016a41086a2903002220201c7c201fad7c221d202054201d2020511b450d0041839dc500210542808080808001210341808c0821010c030b2006201e3703800120064198016a29030021202006201d370388010240427f201e2006290390017c22212021201e54221f201d20207c201fad7c2220201d542020201d511b221f1b4280c8afa025544100427f2020201f1b501b450d0041b9e2c20021054280808080a002210341808c1021010c030b0240201b201c84500d00200641d8046a200628020410a80220064190076a20062802d804222220062802e00410a902200641c0076a2903004200200629039007420151221f1b211b200641b8076a2903004200201f1b211d024020062802dc04450d00202210290b201d201a56201b201156201b2011511b0d020b0240024020062d001f4101460d00201a4280c8afa0255441002011501b0d010c050b200641d8046a200628020410a80220064190076a20062802d804221f20062802e00410a90220062d00dc072122200629039007211b024020062802dc04450d00201f10290b201a42ffc7afa0255620114200522011501b0d04201b4201520d04202241ff0171450d040b41b0e2c200210542808080809001210341808c1421010c020b200041043a00000c050b41dee2c20021054280808080d002210341808c0421010b200141037221162005ad221142088842ff018321042011428080fcff0f83200384211b4101211f0c010b200641d8046a41186a200641a0046a41186a290300221b370300200641d8046a41206a2223200641a0046a41206a290300370300200641d8046a41286a2224200641a0046a41286a290300370300200641d8046a41306a2225200641a0046a41306a290300370300200620062903b004221d3703e8042006201a3703d804200620113703e004427f200420157c22152015200454221f200320187c201fad7c220420035420042003511b221f1b427f2004201f1b8450211f02400240427f201a201d7c22032003201a5422222011201b7c2022ad7c220320115420032011511b22221b22044280c8afa025544100427f200320221b2203501b0d00200641e8046a290300211c20252903002118202429030021042023290300211b20062903e004211520062903d804211d4201212020062903f004211e0c010b4200212002402004200384500d002004200310d402200641c8076a2003370300200641c0076a200437030020064190076a41086a41013a000020064199076a2012290000370000200641a1076a201241086a290000370000200641a9076a201241106a290000370000200641b1076a201241186a290000370000200641033a00900720064190076a10cb010b0b201fad2103200641f8036a201b37030020064180046a2004370300200641e0036a201537030020064188046a2018370300200641e8036a201c3703002006201e3703f00320062019370390042006201d3703d8034100211f200620174100201442015122221b22173a009c0420062016410020221b222236029804200620204201512216ad3703d003024020160d002001ad4220862013ad841004420021044200211b0c010b410410272216450d0120162022360000201641044108102b2216450d01201620173a0004201641084115102b2216450d012016201d3700052016410d6a2015370000200641f0036a2903002114200641e8036a290300211520164115412a102b2216450d01201620153700152016411d6a20143700002016412a41d400102b2216450d012016201b3700252016412d6a20043700002016413d6a20064190046a290300370000201620064188046a2903003700352001ad4220862013ad842016ad4280808080d008841003201610294200211b420121040b024020062802c403450d00201310290b20064180016a41106a210102400240201f0d00024002400240200541ff017122050d0020044200510d004103211620064190066a21050c010b2005450d0120044200520d014104211620064190056a21050b200541086a20163a0000200541003a0000200541096a2012290000370000200541116a201241086a290000370000200541196a201241106a290000370000200541216a201241186a290000370000200510cb010b410421164100210520034201520d01200641c8076a2011370300200641c0076a201a3703004100210520064190076a41086a41003a000020064199076a2012290000370000200641a1076a201241086a290000370000200641a9076a201241106a290000370000200641b1076a201241186a290000370000200641033a00900720064190076a10cb010c010b20044208862005ad42ff018384201b842103201641807e7121050b20064190056a41086a2212200141086a29030037030020064190056a41106a221f200141106a29030037030020064190056a41186a2213200141186a29030037030020064190056a41206a2217200141206a290300370300200620012903003703900520064180016a41086a2903002104200629038001211102400240201641ff017122014104460d0020034280807c83211a200342088842ff01832110200520017221012003a7210d410121050c010b20062903b801211420064190066a41186a2012290300221a37030020064190066a41206a201f290300370300200641b8066a22122013290300370300200641c0066a221620172903003703002006200629039005221b3703a00620062011370390062006200437039806427f200f200a7c22032003200f5422012010200e7c2001ad7c220320105420032010511b22011b427f200320011b8450210102400240427f2011201b7c2203200320115422052004201a7c2005ad7c220320045420032004511b22051b22104280c8afa025544100427f200320051b2203501b0d00200641a0066a290300210f2016290300211520122903002110200641b0066a290300211a200629039806211b200629039006210a4201210e20062903a806211d0c010b4200210e02402010200384500d002010200310d402200641c8076a2003370300200641c0076a201037030020064190076a41086a41013a000020064199076a2002290000370000200641a1076a200241086a290000370000200641a9076a200241106a290000370000200641b1076a200241186a290000370000200641033a00900720064190076a10cb010b0b2001ad2103200641d8006a201a370300200641e0006a2010370300200641c0006a201b370300200641e8006a2015370300200641c8006a200f3703002006201d370350200620143703702006200a370338410021052006200c4100200942015122011b22123a007c2006200b410020011b22163602782006200e4201512201ad370330024020010d002008ad4220862007ad841004420021104200211a0c010b410410272201450d0120012016360000200141044108102b2201450d01200120123a0004200141084115102b2201450d012001200a3700052001410d6a201b370000200641d0006a290300211b200641c8006a290300210920014115412a102b2201450d01200120093700152001411d6a201b3700002001412a41d400102b2201450d012001201a3700252001412d6a20103700002001413d6a200641f0006a2903003700002001200641e8006a2903003700352008ad4220862007ad842001ad4280808080d008841003200110294200211a420121100b02402006280224450d00200710290b02400240024020050d00024002400240200d41ff017122010d0020104200510d0041032105200641c0026a21010c010b2001450d0120104200520d0141042105200641c0016a21010b200141086a20053a0000200141003a0000200141096a2002290000370000200141116a200241086a290000370000200141196a200241106a290000370000200141216a200241186a290000370000200110cb010b20034201520d01200641c8076a2004370300200641c0076a201137030020064190076a41086a41003a000020064199076a2002290000370000200641a1076a200241086a290000370000200641a9076a200241106a290000370000200641b1076a200241186a290000370000200641033a00900720064190076a10cb010c010b200141ff01714104470d010b2006280204210120062903082103200641e8076a200641086a41086a290300370300200641e0076a200337030020064190076a41086a41023a000020064199076a2001290000370000200641a1076a200141086a290000370000200641a9076a200141106a290000370000200641b1076a200141186a290000370000200641b9076a2002290000370000200641c1076a200241086a290000370000200641c9076a200241106a290000370000200641d1076a200241186a290000370000200641033a00900720064190076a10cb01200041043a00000c020b2000200141087622023b0001200020013a0000200041036a20024110763a0000200041046a2010420886200dad42ff018384201a843700000c010b1030000b20064190086a24000b130020004105360204200041888bc3003602000b3400200041ddbfc50036020420004100360200200041146a4101360200200041106a41b4b7c300360200200041086a42073702000bbe1504057f017e077f037e230041c0076b22022400024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541044b0d0620050e050102030405010b200041063a00000c110b200241086a200110c801024020022802080d00200228020c2204200128020441a8026e2203200320044b1bad42a8027e2207422088a70d0a2007a72205417f4c0d0a0240024020050d00410821080c010b200510272208450d0c0b4100210320024100360248200220083602402002200541a8026e360244024002402004450d0020024198056a4104722109034020024198056a200110e4032002280298052105200241f0026a200941a40210e4071a2005411c460d02200241cc006a200241f0026a41a40210e4071a024020032002280244470d00200241c0006a20034101109a0120022802402108200228024821030b2008200341a8026c6a22062005360200200641046a200241cc006a41a40210e4071a2002200341016a22033602482004417f6a22040d000b0b2008450d0120022902442107200041013a0000200020022f003d3b0001200041086a2007370000200041046a2008360000200041106a2002290210370200200041036a2002413f6a2d00003a0000200041186a200241106a41086a290200370200200041206a200241106a41106a290200370200200041286a200241106a41186a290200370200200041306a200241106a41206a290200370200200041386a200241106a41286a2802003602000c120b02402003450d00200341a8026c2103200821010340200110c201200141a8026a2101200341d87d6a22030d000b0b20022802442201450d00200141a8026c450d00200810290b200041063a00000c100b024020064102490d0020042f0001210520012003417d6a3602042001200441036a36020020024198056a200110e4032002280298052101200241f0026a20024198056a41047241a40210e4071a2001411c460d0020024198056a200241f0026a41a40210e4071a41a80210272203450d0e20032001360200200341046a20024198056a41a40210e4071a200041046a2003360200200041026a20053b0100200041023a0000200041086a200229024c370200200041106a200241cc006a41086a290200370200200041186a200241cc006a41106a290200370200200041206a200241cc006a41186a290200370200200041286a200241cc006a41206a290200370200200041306a200241cc006a41286a290200370200200041386a200241cc006a41306a2802003602000c100b200041063a00000c0f0b024002400240024020064102490d0020042f0001210620012003417d6a3602042001200441036a36020020024198056a20011096022002280298052203450d0d200228029c05210520012802042204450d03200241a0056a280200210a200128020022092d0000210820012004417f6a220b3602042001200941016a360200200841014b0d034100210c20080e020201020b200041063a00000c110b200b4104490d012009280001210d20012004417b6a22083602042001200941056a36020020084104490d012009280005210e2001200441776a3602042001200941096a3602004101210c0b20024198056a200110e4032002280298052101200241f0026a20024198056a41047241a40210e4071a2001411c460d0b20024198056a200241f0026a41a40210e4071a41a80210272204450d0d20042001360200200441046a20024198056a41a40210e4071a2000411c6a2004360200200041186a200e360200200041146a200d360200200041106a200c3602002000410c6a200a360200200041086a2005360200200041046a2003360200200041026a20063b0100200041033a0000200041206a200229024c370200200041286a200241cc006a41086a290200370200200041306a200241cc006a41106a290200370200200041386a200241cc006a41186a2802003602000c0f0b200041063a0000200541ffffff3f71450d0e0c0d0b024002400240024020064102490d0020042f0001210920012003417d6a3602042001200441036a36020020024198056a20011096022002280298052206450d0e200228029c05210820012802042203450d03200241a0056a280200210a200128020022042d0000210520012003417f6a220b3602042001200441016a360200200541014b0d034100210c20050e020201020b200041063a00000c100b200b4104490d012004280001210d20012003417b6a22053602042001200441056a36020020054104490d012004280005210e2001200341776a220b3602042001200441096a3602004101210c0b41002105200241003a00b805200b417f6a2103024003402003417f460d0120024198056a20056a200128020022042d00003a0000200120033602042001200441016a3602002002200541016a22043a00b8052003417f6a21032004210520044120470d000b200241f0026a41186a20024198056a41186a2903002207370300200241f0026a41106a20024198056a41106a290300220f370300200241f0026a41086a20024198056a41086a2903002210370300200220022903980522113703f002200041043a000020002011370001200041096a2010370000200041116a200f370000200041196a2007370000200041386a200e360200200041346a200d360200200041306a200c3602002000412c6a200a360200200041286a2008360200200041246a2006360200200041226a20093b01000c0f0b0240200541ff0171450d00200241003a00b8050b200041063a0000200841ffffff3f71450d0e200610290c0e0b200041063a0000200841ffffff3f71450d0d200610290c0d0b20064102490d0120042f0001210a20012003417d6a3602042001200441036a36020020024198056a20011096022002280298052209450d02200228029c05210b200128020422054104490d04200241a0056a280200210d20012802002206280000210c20012005417c6a22033602042001200641046a36020020034104490d042006280004210e2001200541786a22083602042001200641086a36020041002103200241003a00b805200541776a2105034020082003460d0420024198056a20036a200620036a220441086a2d00003a0000200120053602042001200441096a3602002002200341016a22043a00b8052005417f6a21052004210320044120470d000b200241f0026a41186a20024198056a41186a2903002207370300200241f0026a41106a20024198056a41106a290300220f370300200241f0026a41086a20024198056a41086a2903002210370300200220022903980522113703f002200041053a000020002011370001200041096a2010370000200041116a200f370000200041196a2007370000200041346a200e360200200041306a200c3602002000412c6a200d360200200041286a200b360200200041246a2009360200200041226a200a3b01000c0c0b200041063a00000c0b0b200041063a00000c0a0b200041063a00000c090b0240200341ff0171450d00200241003a00b8050b200041063a0000200b41ffffff3f71450d08200910290c080b200041063a0000200b41ffffff3f71450d07200910290c070b1038000b1039000b200041063a00000c040b200041063a0000200541ffffff3f71450d030c020b200041063a00000c020b1030000b200310290b200241c0076a24000be5c20208087f027e047f077e0d7f027e037f037e23004190126b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005411b4b0d1f200141046a210720050e1c0102030405060708090a0b0c0d0e0f101112131415161718191d1e20010b2000411c3602000c660b02402006450d0020042d0001210520012003417e6a22083602042001200441026a360200200541094b0d00410a21094200210a4200210b02400240024002400240024002400240024002400240024020050e0a00010203040506070809000b20084104490d0b2004280002210620012003417a6a3602042001200441066a3602002006418194ebdc034f0d0b410121094200210b0c080b2002200110c80120022802000d0a200728020020022802042204490d0a2004417f4c0d2b0240024020040d004200210b410121060c010b2004102d2206450d2420072802002004490d0a20062001280200200410e4071a200128020422032004490d2d2001200320046b3602042001200128020020046a3602002004ad210b0b2006450d0a200b2004ad42208684220b422088210a410221090c070b20084108490d092004290002210b2001200341766a36020420012004410a6a360200200b422088210a410321090c060b200241086a200110c80120022802080d082007280200200228020c2204490d082004417f4c0d290240024020040d004200210b410121060c010b2004102d2206450d2220072802002004490d0820062001280200200410e4071a200128020422032004490d2c2001200320046b3602042001200128020020046a3602002004ad210b0b2006450d08200b2004ad42208684220b422088210a410421090c050b200241106a200110c80120022802100d07200728020020022802142204490d072004417f4c0d280240024020040d004200210b410121060c010b2004102d2206450d2120072802002004490d0720062001280200200410e4071a200128020422032004490d2c2001200320046b3602042001200128020020046a3602002004ad210b0b2006450d07200b2004ad42208684220b422088210a410521090c040b2008450d0620042d0002210520012003417d6a22073602042001200441036a360200200541014b0d06410021060240024020050e020100010b20074104490d072004350003210b2001200341796a22053602042001200441076a36020020054104490d072004350007210a2001200341756a36020420012004410b6a360200200a422086200b84210b410121060b200b422088210a410621090c030b200241286a200110c80120022802280d05200228022c2209200728020041186e2204200420094b1bad42187e220b422088a70d26200ba72204417f4c0d260240024020040d00410421060c010b200410272206450d1f0b41002105200241003602c80d200220063602c00d2002200441186e3602c40d024002400240024002402009450d000340200241206a200110c80120022802200d05200728020020022802242204490d052004417f4c0d2c0240024020040d004100210c4101210d0c010b2004102d220d450d2520072802002004490d05200d2001280200200410e4071a200128020422032004490d312001200320046b3602042001200128020020046a3602002004210c0b200241186a200110c80120022802180d032007280200200228021c2203490d032003417f4c0d2c0240024020030d004100210e410121080c010b2003102d2208450d2520072802002003490d0320082001280200200310e4071a2001280204220e2003490d322001200e20036b3602042001200128020020036a3602002003210e0b2004ad422086200cad84210b2003ad422086200ead84210a0240200520022802c40d470d00200241c00d6a2005410110990120022802c00d210620022802c80d21050b2006200541186c6a2204200836020c2004200b3702042004200d360200200441106a200a3702002002200541016a22053602c80d2009417f6a22090d000b0b2006450d0920022902c40d220a420020061b210b200a422088420020061b210a410721090c060b200810290b200c450d010b200d10290b02402005450d00200541186c21042006210103400240200141046a280200450d00200128020010290b0240200141106a280200450d002001410c6a28020010290b200141186a2101200441686a22040d000b0b20022802c40d2201450d05200141186c0d040c050b200241c00d6a2001109e0420022802c00d2206450d0441082109200241c00d6a41086a350200220a42208620023502c40d84210b0c010b200241306a200110c80120022802300d03200728020020022802342204490d032004417f4c0d240240024020040d004200210b410121060c010b2004102d2206450d1d20072802002004490d0320062001280200200410e4071a200128020422032004490d2b2001200320046b3602042001200128020020046a3602002004ad210b0b2006450d03200b2004ad42208684210b200728020022044104490d0120012802002203280000210d20012004417c6a3602042001200341046a360200200b422088210a410921090b20004100360200200041186a200d3602002000410c6a2006360200200041086a2009360200200041106a200a422086200b42ffffffff0f8384370200200041206a200241e80f6a41880210e4071a0c680b200ba7450d010b200610290b2000411c3602000c650b2006450d6220042d0001210520012003417e6a22063602042001200441026a360200200541034b0d6202400240024002400240024020050e0400010203000b20064104490d672004280002210520012003417a6a22063602042001200441066a3602002006450d6720042d0006210d2001200341796a22083602042001200441076a220c360200200d41014b0d674100210602400240200d0e020100010b20084104490d68200428000721092001200341756a220636020420012004410b6a36020020064104490d68200428000b21072001200341716a220836020420012004410f6a220c360200410121060b2008450d67200c2d0000210320012008417f6a3602042001200c41016a360200200241e80f6a200110e40320022802e80f2101200241c00d6a200241e80f6a41047241a40210e4071a2001411c460d67200241e80f6a200241c00d6a41a40210e4071a41a802102722040d030c680b200241003602e80f20064104490d662004280002210520012003417a6a22063602042001200441066a360200200241003602e80f20064104490d66200428000621062001200341766a36020420012004410a6a36020020022802d409210820022802d80921014102210c4100210e410021074100210f410021040c030b200241386a200110c80120022802380d652007280200200228023c2204490d652004417f4c0d220240024020040d004200210b410121050c010b2004102d2205450d1b20072802002004490d6520052001280200200410e4071a200128020422032004490d2a2001200320046b3602042001200128020020046a3602002004ad210b0b2005450d652004ad422086200b84220ba721060240024002400240200728020022034104490d0020012802002204280000210720012003417c6a220d3602042001200441046a2209360200200d450d0120092d0000210c20012003417b6a220e3602042001200941016a220f360200200c41014b0d014100210402400240200c0e020100010b200e4104490d022009280001210d2001200341776a22043602042001200941056a36020020044104490d02200928000521082001200341736a220e3602042001200941096a220f360200410121040b200e450d03200f2d000021032001200e417f6a3602042001200f41016a360200200241e80f6a200110e40320022802e80f210c200241c00d6a200241e80f6a41047241a40210e4071a200c411c470d020b2006450d680c670b20060d660c670b200241e80f6a200241c00d6a41a40210e4071a41a80210272201450d67200b422088a721092001200c360200200141046a200241e80f6a41a40210e4071a2007418080807871210e4103210c4100210f0c030b20060d640c650b200241c0006a200110c80120022802400d64200728020020022802442204490d642004417f4c0d210240024020040d004200210b410121050c010b2004102d2205450d1a20072802002004490d6420052001280200200410e4071a200128020422032004490d2a2001200320046b3602042001200128020020046a3602002004ad210b0b2005450d64200b2004ad42208684220b422088a7210920022800c90b210120022800c50b210820022800c10b210d200ba721064104210c4100210e410021074100210f410021040c010b20042001360200200441046a200241e80f6a41a40210e4071a2004418080807871210f2007418080807871210e4101210c0b200020033a00052000200c3a000420004101360200200041246a2001360200200041206a20083602002000411c6a200d360200200041086a2005360200200041186a200f200441ffffff077172360200200041146a200e200741ffffff0771723602002000410c6a2009ad4220862006ad84370200200041286a200241a8076a41800210e4071a0c640b02402006450d0020012003417e6a3602042001200441026a3602000b2000411c3602000c630b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c8006a200110aa052002290348a70d002002290350210b20004103360200200041086a200b370300200041106a200241e80f6a41980210e4071a0c630b2000411c3602000c620b02402006450d0020042d0001210520012003417e6a22063602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b20064104490d032004280002210d20012003417a6a3602042001200441066a36020020022802ec092204411876210120022f01ea0922034108762107200241d0096a41186a310000210a20022902e009210b20022802d809210520022802dc09210620022d00e9092108410121090c600b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241bf096a20022800d30d22064118763a0000200241bb096a20022800cf0d22054118763a0000200220022900d70d220b3c00c009200220063a00bc09200220053a00b809200220022900c70d22103703b009200220064108763b00bd09200220054108763b00b9092002200b4208883e00c1092002200b422888200241df0d6a310000220a421886843e00c509200320076b2203417e6a4104490d0320022800c30d210d20022f00c10d210c20022d00c00d210e41022109200420076a220741026a280000210420012003417a6a3602042001200741066a36020020044118762101410021070c610b200541ff0171450d02200241003a00e00d0c020b20064104490d012004280002210d20012003417a6a3602042001200441066a36020020022f01ec09200241ee096a2d0000411074722104200241e8096a310000210a20022903e009210b20022802d809210520022802dc09210620022d00e909210820022d00ea09210320022d00eb09210720022d00ef092101410321090c5e0b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b41042109200320076b2203417e6a4104490d01200241df0d6a310000210a20022900d70d210b20022800d30d210620022800cf0d210520022900c70d211020022800c30d210d20022f00c10d210c20022d00c00d210e200420076a220741026a280000210420012003417a6a3602042001200741066a36020020044118762101410021070c5f0b200541ff0171450d00200241003a00e00d0b2000411c3602000c610b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000210b20022900d70d210a20022800d30d210d20022800cf0d210820022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f200241d8006a20011084022002290358a70d04200241e8006a2903002111200229036021124101210141002106410021070c5f0b200541ff0171450d03200241003a00e00d0c030b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000210b20022900d70d210a20022800d30d210d20022800cf0d210820022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f20024188016a2001108402200229038801a70d0320024188016a41106a29030021112002290390012112200241f0006a20011084022002290370a70d03200241f0006a41106a29030021132002290378211442002115410221014100210642002116410021070c5e0b200541ff0171450d02200241003a00e00d0c020b41002105200241003a00e00d410220036b21092003417d6a2106024002400340200920056a450d01200241c00d6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241df0d6a310000210b20022900d70d210a20022800d30d210d20022800cf0d210820022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f41002105200241003a00e00d200420076a2109200720036b41026a21030340200320056a450d02200241c00d6a20056a200920056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00e00d2006417f6a21062004210520044120470d000b200241bf096a20022800d30d22044118763a0000200241bb096a20022800cf0d22034118763a0000200220022900d70d22143c00c009200220043a00bc09200220033a00b809200220022900c70d3703b009200220044108763b00bd09200220034108763b00b909200220144208883e00c10920022014422888200241df0d6a3100002213421886843e00c50920022800c30d210320022f00c10d210420022d00c00d2105200241a0016a200110840220022903a001a70d0320022903a8012115200241b0016a2903002216423888a721072016421888a72106200241b0096a41086a290300211120022903b0092112410321010c5e0b200541ff0171450d02200241003a00e00d0c020b200541ff0171450d01200241003a00e00d0c010b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000210b20022900d70d210a20022800d30d210d20022800cf0d210820022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f200241b8016a200110840220022903b801a70d01200241c8016a290300211120022903c0012112200241e8096a330100200241ea096a31000042108684211620022903e009211520022d00ef09210720022800eb092106410421010c5c0b200541ff0171450d00200241003a00e00d0b2000411c3602000c600b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d0016a200110c80120022802d0010d0020022802d4012206200728020041f0006e2204200420064b1bad42f0007e220b422088a70d1b200ba72203417f4c0d1b0240024020030d00410421090c010b200310272209450d140b41002104200241003602d809200220093602d0092002200341f0006e3602d409024002402006450d00200241c00d6a41086a210d0340200241c00d6a200110f80220022802c40d210320022802c00d2107200241a8076a200d41e80010e4071a2003450d02200241c00b6a200241a8076a41e80010e4071a0240200420022802d409470d00200241d0096a2004410110970120022802d009210920022802d80921040b2009200441f0006c6a2205200336020420052007360200200541086a200241c00b6a41e80010e4071a2002200441016a22043602d8092006417f6a22060d000b0b2009450d0120022902d409210b2000200936020420004106360200200041086a200b370200200041106a200241e80f6a41980210e4071a0c610b02402004450d00200441f0006c2104200941046a21010340200110d3020240200141046a2802002203450d00200341246c450d00200128020010290b200141f0006a2101200441907f6a22040d000b0b20022802d4092201450d00200141f0006c450d00200910290b2000411c3602000c5f0b2006450d5220042d0001210520012003417e6a22173602042001200441026a360200200541174b0d524107210f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e180001020304056e060708090a0b0c0d0e0f10111213141516000b41002105200241003a00e00d2003417e6a21092003417d6a21030240034020092005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000211320022900d70d211020022800d30d211820022800cf0d210820022900c70d211420022800c30d210920022f00c10d210e20022d00c00d210d200241d8016a200110840220022903d801a70d6920072802002204450d69200241e8016a290300210a20022903e001210b200128020022032d0000211920012004417f6a3602044101210f2001200341016a360200201941024b0d69200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a0072010422888201342188684a721062010420888a7211a2014422088a7211b2010a7211c2014a7210c0c6e0b200541ff0171450d68200241003a00e00d0c680b200241f0016a200110840220022903f001a70d6720024180026a290300210b20022903f801210a200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a007200a422088a7211b200b422088a72118200aa7210c200ba721084102210f0c6b0b20024188026a2001108402200229038802a70d6620024198026a290300210b200229039002210a200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a007200a422088a7211b200b422088a72118200aa7210c200ba721084103210f0c6a0b4104210f20174104490d652004280002210920012003417a6a3602042001200441066a360200200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0070c680b200241a0026a200110c80120022802a0020d6420022802a4022109200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0074105210f0c670b200241c00d6a200110960220022802c00d2209450d63200241c80d6a280200211b20022802c40d210c200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a0074106210f0c650b2017450d6220042d0002210d20012003417d6a3602042001200441036a360200200d41024b0d62200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0074108210f4100211a4100210641002118410021084100211b0c670b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000211020022800d30d211820022800cf0d210820022800c30d210920022f00c10d210e20022d00c00d210d20022900c70d210a20022900d70d210b200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241d0096a41046a2f00003b0100200220022800d0093602a007200b422888201042188684a72106200b420888a7211a200a422088a7211b200ba7211c200aa7210c4109210f0c630b200541ff0171450d61200241003a00e00d0c610b200241a8026a200110c80120022802a8020d6020022802ac022109200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a007410a210f0c630b410b210f0c640b410c210f0c630b200241c00d6a200110960220022802c00d2209450d5d20022902c40d210b200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a007200b422088a7211b200ba7210c410d210f0c5f0b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200320076b2203417e6a4104490d5d200241df0d6a310000211020022900d70d210b20022800d30d211820022800cf0d210820022900c70d210a20022800c30d210920022f00c10d210e20022d00c00d210d200420076a220441026a280000211d20012003417a6a3602042001200441066a360200200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a007200b422888201042188684a72106200b420888a7211a200a422088a7211b200ba7211c200aa7210c410e210f0c5e0b200541ff0171450d5c200241003a00e00d0c5c0b410f210f0c600b20174104490d5a2004280002210920012003417a6a3602042001200441066a360200200241b0026a200110c80120022802b0020d5a200728020020022802b4024102742204490d5a2004417f4c0d210240024020040d004200210b4101210c0c010b2004102d220c450d1a20072802002004490d2c200c2001280200200410e4071a200128020422032004490d2b2001200320046b3602042001200128020020046a3602002004ad210b0b200c450d5a0240200b2004ad42208684220b422088a722010d00200ba721010c580b0240200c2001724103710d00200ba722014103710d002001410276221b450d58200b422288a721080c590b200ba7450d5a200c10290c5a0b20174104490d592004280002210920012003417a6a3602042001200441066a360200200241b8026a200110c80120022802b8020d5920022802bc02220e200728020041246e22042004200e4b1bad42247e220b422088a70d20200ba72204417f4c0d200240024020040d004104210c0c010b20041027220c450d190b41002108200241003602d8092002200c3602d0092002200441246e221b3602d409024002400240200e450d00200241c00d6a411f6a2118410021084100210f0340200241003a00e00d200f41016a210f20072802002106417f210341002104034020062004460d03200241c00d6a20046a2001280200220d2d00003a00002001200620036a3602042001200d41016a3602002002200441016a22053a00e00d2003417f6a21032005210420054120470d000b200620056b22044104490d032018310000210b20022900d70d210a20022800d30d210320022800cf0d210520022900c70d211020022800c30d210620022f00c10d211b20022d00c00d2119200d280001211e2001200d41056a36020020012004417c6a3602040240200820022802d409470d00200241d0096a2008410110960120022802d009210c20022802d80921080b200c200841246c6a2204200a3700172004201e360220200420033600132004200536000f20042010370007200420063600032004201b3b0001200420193a00002004411f6a200b3c00002002200841016a22083602d809200f200e470d000b20022802d409211b0b200c450d5b200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241b0096a41046a2f01003b0100200220022801b0093602a0074111210f0c5a0b200441ff0171450d00200241003a00e00d0b20022802d4092201450d59200141246c450d59200c10290c590b20174104490d582004280002210920012003417a6a3602042001200441066a360200200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0074112210f0c5b0b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200320076b2203417e6a4104490d58200241c00d6a411f6a310000211020022900d70d210b20022800d30d210520022800cf0d210620022900c70d210a20022800c30d210920022f00c10d210e20022d00c00d210d200420076a220441026a280000211d20012003417a6a3602042001200441066a3602002002200b3700e709200241d0096a411f6a20103c0000200220053600e309200220063600df092002200e4108763a00d2092002200e410874200d41ff0171723b01d009200220093600d3092002200a3700d70920022900df092114200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241b0096a41046a2f01003b0100200220022801b0093602a007200b422888201042188684a72106200b420888a7211a200a422088a7211b2014422088a72118200ba7211c200aa7210c2014a721084113210f0c590b200541ff0171450d57200241003a00e00d0c570b200241c0026a200110840220022903c002a70d56200241d0026a290300210b20022903c802210a200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a007200a422088a7211b200b422088a72118200aa7210c200ba721084114210f0c5a0b200241e0026a200110c80120022802e0020d5520022802e4022109200241d8026a200110c80120022802d8020d5520022802dc02210c200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0074115210f4100211a410021060c5a0b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200220022900d70d220b3e00e709200220022900cf0d3700df09200220022900c70d3700d709200220022800c30d22093600d309200220022f00c10d3b00d109200220022d00c00d3a00d0092002200b4220883e00eb092002200241df0d6a2d00003a00ef09200320076b2203417e6a4104490d55200420076a220441026a280000211d20012003417a6a3602042001200441066a360200200241b0096a41186a200241d0096a410772220141186a2d00003a0000200241b0096a41106a200141106a2900002210370300200241b0096a41086a200141086a290000220b37030020022001290000220a3703b00920022f01d009210120022d00d209210420022800c509210620022800c109211a200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241ca096a41046a2f01003b0100200220022801ca093602a0072001200441107472220d410876210e2010a7211c200ba72108200a422088a7211b200b422088a72118200aa7210c4116210f0c560b200541ff0171450d54200241003a00e00d0c540b200241f8026a200110c80120022802f8020d53200728020020022802fc024101742204490d532004417f4c0d1a0240024020040d0041002103410121090c010b2004102d2209450d1320072802002004490d5020092001280200200410e4071a200128020422032004490d262001200320046b3602042001200128020020046a360200200421030b2009450d5302402004ad4220862003ad84220b422088a722040d00200ba721040c4e0b024020092004724101710d00200ba722044101710d002004410176220c450d4e200b422188a7211b0c4f0b200ba70d4f0c530b20024190036a200110c8012002280290030d5220072802002002280294034101742204490d522004417f4c0d190240024020040d0041002103410121090c010b2004102d2209450d1220072802002004490d4f20092001280200200410e4071a200128020422032004490d262001200320046b3602042001200128020020046a360200200421030b2009450d5202402004ad4220862003ad84220b422088a722040d00200ba721040c4b0b024020092004724101710d00200ba722044101710d002004410176220c450d4b200b422188a7211b0c4c0b200ba70d4e0c520b02402006450d0020012003417e6a3602042001200441026a3602000b2000411c3602000c5d0b2006450d2620042d0001210520012003417e6a3602042001200441026a360200200541014b0d26410021040240024020050e020001000b200241e80f6a200110c70320022d00e80f4101460d27200241c00d6a200241e80f6a41017241a00110e4071a20024198036a200110c8012002280298030d272007280200200228029c032203490d272003417f4c0d180240024020030d004200210b410121040c010b2003102d2204450d1120072802002003490d2720042001280200200310e4071a200128020422052003490d262001200520036b3602042001200128020020036a3602002003ad210b0b2004450d27200b2003ad42208684210b200241a8076a200241c00d6a41a00110e4071a0b200241c00b6a200241a8076a41a00110e4071a200041086a200b3702002000200436020420004109360200200041106a200241c00b6a41a00110e4071a200041b0016a200241d0096a41f80010e4071a0c5c0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241a0036a200110c80120022802a0030d0020022802a40321012000410a36020020002001360204200041086a200241e80f6a41a00210e4071a0c5c0b2000411c3602000c5b0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241c00b6a200110b40320022903c80b220b4202510d0020022903c00b210a200241d0096a200241c00b6a41106a220441f00110e4071a200241c00b6a200110b50320022802c40b450d00200241b0096a41106a22012004280200360200200241b0096a41086a2204200241c00b6a41086a290300370300200220022903c00b3703b009200241e80f6a200241d0096a41f00110e4071a200241e8116a2001280200360200200241e0116a2004290300370300200220022903b0093703d811200241c00d6a200241e80f6a41880210e4071a200241a8076a200241c00d6a41880210e4071a200041106a200b370200200041086a200a3702002000410b360200200041186a200241a8076a41880210e4071a0c5b0b2000411c3602000c5a0b02402006450d0020042d0001210520012003417e6a22063602042001200441026a36020020050d0020064104490d002004280002210520012003417a6a3602042001200441066a360200200241b8036a200110c80120022802b8030d00200728020020022802bc032204490d002004417f4c0d1502400240024002400240024002400240024020040d0041002103410121060c010b2004102d2206450d1520072802002004490d0120062001280200200410e4071a200128020422032004490d2d2001200320046b3602042001200128020020046a360200200421030b2006450d07200241b0036a200110c8012004ad4220862003ad84220aa7210e024020022802b0030d0020022802b403220d2007280200410c6e22042004200d4b1bad420c7e220b422088a70d1d200ba72204417f4c0d1d0240024020040d00410421080c010b200410272208450d160b41002103200241003602c80d200220083602c00d20022004410c6e22093602c40d024002400240200d450d00410021030340200241a8036a200110c80120022802a8030d03200728020020022802ac032204490d032004417f4c0d210240024020040d004100210c410121090c010b2004102d2209450d1a20072802002004490d0320092001280200200410e4071a2001280204220c2004490d332001200c20046b3602042001200128020020046a3602002004210c0b2004ad422086200cad84210b0240200320022802c40d470d00200241c00d6a20034101109d0120022802c00d210820022802c80d21030b20082003410c6c6a2204200b370204200420093602002002200341016a22033602c80d200d417f6a220d0d000b20022802c40d21090b2008450d022006450d0a200728020022074104490d042001280200220c280000211820012007417c6a22043602042001200c41046a36020020044104490d05200c280004211b2001200741786a22043602042001200c41086a36020020044104490d06200a422088a72119200c280008211e2001200741746a220f3602042001200c410c6a36020041002104200241003a00800e200741736a21070340200f2004460d08200241c00d6a20046a200c20046a220d410c6a2d00003a0000200120073602042001200d410d6a3602002002200441016a220d3a00800e2007417f6a2107200d2104200d41c000470d000b200d41ff017141c000490d082006450d0a200241fb0d6a2d0000210120022f00f90d2104200241db0d6a2d0000210720022f00d90d210d200241e80d6a290300210b20022903e00d210a20022802fc0d210c20022d00f80d210f20022802f40d211f20022f01f20d212020022d00f00d212120022802dc0d211c20022d00d80d211a20022903d00d211020022802cc0d211d20022802c80d211720022802c40d212220022802c00d2123200020022d00f10d3a005d200020053602042000410c360200200041e7006a200420014110747222014110763a0000200041e5006a20013b0000200041c7006a200d20074110747222014110763a0000200041c5006a20013b0000200041d4006a200b370200200041cc006a200a370200200041e8006a200c360200200041e4006a200f3a0000200041e0006a201f360200200041de006a20203b0100200041dc006a20213a0000200041c8006a201c360200200041c4006a201a3a00002000413c6a2010370200200041386a201d360200200041346a2017360200200041306a20223602002000412c6a2023360200200041286a201e360200200041246a201b360200200041206a20183602002000411c6a2003360200200041186a2009360200200041146a2008360200200041106a20193602002000410c6a200e360200200041086a2006360200200041ec006a200241e80f6a41bc0110e4071a0c640b200910290b02402003450d002003410c6c21042008210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b20022802c40d2201450d002001410c6c450d00200810290b200e450d070b200610290c060b0240200e450d00200610290b02402003450d002003410c6c21042008210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b2009450d052009410c6c0d040c050b0240200e450d00200610290b02402003450d002003410c6c21042008210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b2009450d042009410c6c0d030c040b0240200e450d00200610290b02402003450d002003410c6c21042008210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b2009450d032009410c6c0d020c030b200441ff0171450d00200241003a00800e0b0240200e450d00200610290b02402003450d002003410c6c21042008210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b2009450d012009410c6c450d010b200810290b2000411c3602000c590b02402006450d0020012003417e6a3602042001200441026a3602000b2000411c3602000c580b02402006450d0020042d0001210520012003417e6a22183602042001200441026a3602002005411e4b0d00410e210c02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e1f000102030405060708090a0b0c610d0e0f101112131415161718191a1b1c1d000b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a220420022d00c20d3a0000200241c00b6a41086a2203200b370300200241c00b6a41106a2205200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b20022800cb0d210920022800c70d210d20022800c30d2106200241c0036a200110840220022903c003a70d1e200241c0036a41106a290300210a20022903c803210b200241a0076a41026a20042d00003a0000200241d0096a41086a2003290300370300200241d0096a41106a20052d00003a0000200220022f01ca093b01a007200220022903c00b3703d0094101210c0c610b200541ff0171450d1d200241003a00e00d0c1d0b200241e0036a200110c80120022802e0030d1c20022802e4032106200241d8036a200110c80120022802d8030d1c20022802dc03210d4102210c200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290200370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022902c00d3703d0090c5f0b200241e8036a200110c80120022802e8030d1b20022802ec032106200241c00d6a200110ab0520022d00c00d4102460d1b200241d0096a41086a200241c00d6a41106a290300370300200241d0096a41106a200241d80d6a2d00003a0000200241a0076a41026a200241a8076a41026a2d00003a00002002200241c00d6a41086a2903003703d009200220022f00a8073b01a007200241d90d6a2d00002108200241da0d6a2f0100210f200241dc0d6a280200210e200241e00d6a290300210b20022802c40d210920022802c00d210d4200210a4103210c0c5e0b200241f0036a200110c80120022802f0030d1a20022802f4032106200241c00d6a200110ab0520022d00c00d4102460d1a200241d0096a41086a200241c00d6a41106a290300370300200241d0096a41106a200241d80d6a2d00003a0000200241a0076a41026a200241a8076a41026a2d00003a00002002200241c00d6a41086a2903003703d009200220022f00a8073b01a007200241d90d6a2d00002108200241da0d6a2f0100210f200241dc0d6a280200210e200241e00d6a290300210b20022802c40d210920022802c00d210d4200210a4104210c0c5d0b20184104490d192004280002210620012003417a6a3602042001200441066a360200200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290200370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022902c00d3703d0094105210c0c5c0b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d21064106210c0c5c0b200541ff0171450d18200241003a00e00d0c180b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d21064107210c0c5b0b200541ff0171450d17200241003a00e00d0c170b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b4108210c200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d21060c5a0b200541ff0171450d16200241003a00e00d0c160b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a20022d00c20d3a0000200241c00b6a41086a200b370300200241d00b6a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b200320076b2203417e6a4104490d1620022800cb0d210920022800c70d210d20022800c30d2106200420076a220441026a280000210e20012003417a6a22053602042001200441066a220736020020054104490d16200241a0076a41026a200241ca096a41026a2d00003a00002007350000210b2001200341766a36020420012004410a6a360200200241d0096a41086a200241c00b6a41086a290300370300200241d0096a41106a200241c00b6a41106a2d00003a0000200220022f01ca093b01a007200220022903c00b3703d0094200210a4109210c0c590b200541ff0171450d15200241003a00e00d0c150b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d2106410a210c0c580b200541ff0171450d14200241003a00e00d0c140b200241f8036a200110c80120022802f8030d1320022802fc032106200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290200370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022902c00d3703d009410b210c0c560b20184104490d122004280002210620012003417a6a3602042001200441066a360200200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290200370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022902c00d3703d009410c210c0c550b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d2106410d210c0c550b200541ff0171450d11200241003a00e00d0c110b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d2106410f210c0c540b200541ff0171450d10200241003a00e00d0c100b41002105200241003a00e00d2003417e6a2109417d21070240034020092005460d01200241c00d6a20056a200420056a220641026a2d00003a00002001200320076a3602042001200641036a3602002002200541016a220e3a00e00d2007417f6a2107200e2105200e4120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a20022d00c20d3a0000200241c00b6a41086a200b370300200241d00b6a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b2003417e6a200e460d1020022800cb0d210920022800c70d210d20022800c30d21062004200e6a220441026a2d000021082001200320076a22053602042001200441036a360200200841074f0d104110210c20054110490d10200241a0076a41026a200241ca096a41026a2d00003a00002004410b6a290000210a200441036a290000210b20012003200e6b416d6a3602042001200441136a360200200241d0096a41086a200241c00b6a41086a290300370300200241d0096a41106a200241c00b6a41106a2d00003a0000200220022f01ca093b01a007200220022903c00b3703d0090c530b200541ff0171450d0f200241003a00e00d0c0f0b4111210c0c510b4112210c0c500b20024180046a200110c8012002280280040d0c20072802002002280284042204490d0c2004417f4c0d1f02400240024020040d004200210b410121060c010b2004102d2206450d1920072802002004490d0120062001280200200410e4071a200128020422032004490d332001200320046b3602042001200128020020046a3602002004ad210b0b2006450d0d200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009200b2004ad42208684220b422088a72109200ba7210d4113210c0c500b200610290c0c0b20024188046a200110c8012002280288040d0b2007280200200228028c042204490d0b2004417f4c0d1e02400240024020040d004200210b410121060c010b2004102d2206450d1820072802002004490d0120062001280200200410e4071a200128020422032004490d332001200320046b3602042001200128020020046a3602002004ad210b0b2006450d0c200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009200b2004ad42208684220b422088a72109200ba7210d4114210c0c4f0b200610290c0b0b20024190046a200110c8012002280290040d0a20072802002002280294042204490d0a2004417f4c0d1d02400240024020040d004200210b410121060c010b2004102d2206450d1720072802002004490d0120062001280200200410e4071a200128020422032004490d332001200320046b3602042001200128020020046a3602002004ad210b0b2006450d0b200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009200b2004ad42208684220b422088a72109200ba7210d4115210c0c4e0b200610290c0a0b20024198046a200110c8012002280298040d092007280200200228029c042204490d092004417f4c0d1c02400240024020040d004200210b410121060c010b2004102d2206450d1620072802002004490d0120062001280200200410e4071a200128020422032004490d332001200320046b3602042001200128020020046a3602002004ad210b0b2006450d0a200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009200b2004ad42208684220b422088a72109200ba7210d4116210c0c4d0b200610290c090b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b4117210c200241a8076a41086a200241c00d6a41176a290000220b370300200241ca096a41026a220420022d00c20d3a0000200241c00b6a41086a2203200b370300200241c00b6a41106a2205200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b20022800cb0d210920022800c70d210d20022800c30d2106200241a0046a200110c80120022802a0040d0920022802a404210e200241a0076a41026a20042d00003a0000200241d0096a41086a2003290300370300200241d0096a41106a20052d00003a0000200220022f01ca093b01a007200220022903c00b3703d0090c4c0b200541ff0171450d08200241003a00e00d0c080b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d21064118210c0c4b0b200541ff0171450d07200241003a00e00d0c070b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241a8076a41086a200241d70d6a290000220b370300200241a2076a20022d00c20d3a0000200241d0096a41086a200b370300200241e0096a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01a0072002200b3703d00920022800cb0d210920022800c70d210d20022800c30d21064119210c0c4a0b200541ff0171450d06200241003a00e00d0c060b20184104490d052004280002210620012003417a6a3602042001200441066a360200200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009411a210c0c480b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a220520022d00c20d3a0000200241c00b6a41086a2208200b370300200241c00b6a41106a220c200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b200320076b2203417e6a4104490d0520022800cb0d210920022800c70d210d20022800c30d2106200420076a220441026a280000210e20012003417a6a3602042001200441066a360200200241a0076a41026a20052d00003a0000200241d0096a41086a2008290300370300200241d0096a41106a200c2d00003a0000200220022f01ca093b01a007200220022903c00b3703d009411b210c0c480b200541ff0171450d04200241003a00e00d0c040b41002105200241003a00e00d2003417e6a2109417d21070240034020092005460d01200241c00d6a20056a200420056a220641026a2d00003a00002001200320076a3602042001200641036a3602002002200541016a220c3a00e00d2007417f6a2107200c2105200c4120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a20022d00c20d3a0000200241c00b6a41086a200b370300200241d00b6a200241df0d6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b2003417e6a200c460d0420022800cb0d210920022800c70d210d20022800c30d21062004200c6a220441026a2d000021082001200320076a22053602042001200441036a360200200841074f0d0420054110490d04200241a0076a41026a200241ca096a41026a2d00003a00002004410b6a290000210a200441036a290000210b20012003200c6b416d6a3602042001200441136a360200200241d0096a41086a200241c00b6a41086a290300370300200241d0096a41106a200241c00b6a41106a2d00003a0000200220022f01ca093b01a007200220022903c00b3703d009411c210c0c470b200541ff0171450d03200241003a00e00d0c030b411d210c0c450b20184104490d012004280002210620012003417a6a3602042001200441066a360200200241a0076a41026a200241a8076a41026a2d00003a0000200241d0096a41086a200241c00d6a41086a290300370300200241d0096a41106a200241c00d6a41106a2d00003a0000200220022f00a8073b01a007200220022903c00d3703d009411e210c0c440b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241a8076a41086a200241d70d6a290000220b370300200241ca096a41026a220520022d00c20d3a0000200241c00b6a41086a2208200b370300411f210c200241c00b6a41106a220f200241c00d6a411f6a2d00003a0000200220022900cf0d220b3703a807200220022f01c00d3b01ca092002200b3703c00b200320076b2203417e6a4104490d0120022800cb0d210920022800c70d210d20022800c30d2106200420076a220441026a280000210e20012003417a6a3602042001200441066a360200200241a0076a41026a20052d00003a0000200241d0096a41086a2008290300370300200241d0096a41106a200f2d00003a0000200220022f01ca093b01a007200220022903c00b3703d0090c440b200541ff0171450d00200241003a00e00d0b2000411c3602000c570b200241a8076a200110ac05024020022d00a8074106460d00200241c00b6a41306a200241a8076a41306a290300220b370300200241c00b6a41286a200241a8076a41286a290300220a370300200241c00b6a41206a200241a8076a41206a2903002210370300200241c00b6a41186a200241a8076a41186a2903002214370300200241c00d6a410c6a200241a8076a41086a290300370200200241c00d6a41146a200241a8076a41106a290300370200200241c00d6a411c6a2014370200200241c00d6a41246a2010370200200241c00d6a412c6a200a370200200241c00d6a41346a200b370200200220022903a8073702c40d2000410f360200200020022902c00d3702042000410c6a200241c00d6a41086a290200370200200041146a200241c00d6a41106a2902003702002000411c6a200241c00d6a41186a290200370200200041246a200241c00d6a41206a2902003702002000412c6a200241c00d6a41286a290200370200200041346a200241c00d6a41306a2902003702002000413c6a200241f80d6a280200360200200041c0006a200241e80f6a41e80110e4071a0c570b2000411c3602000c560b200241a8076a200110ac05024020022d00a8074106460d00200241c00b6a41306a200241a8076a41306a290300220b370300200241c00b6a41286a200241a8076a41286a290300220a370300200241c00b6a41206a200241a8076a41206a2903002210370300200241c00b6a41186a200241a8076a41186a2903002214370300200241c00d6a410c6a200241a8076a41086a290300370200200241c00d6a41146a200241a8076a41106a290300370200200241c00d6a411c6a2014370200200241c00d6a41246a2010370200200241c00d6a412c6a200a370200200241c00d6a41346a200b370200200220022903a8073702c40d20004110360200200020022902c00d3702042000410c6a200241c00d6a41086a290200370200200041146a200241c00d6a41106a2902003702002000411c6a200241c00d6a41186a290200370200200041246a200241c00d6a41206a2902003702002000412c6a200241c00d6a41286a290200370200200041346a200241c00d6a41306a2902003702002000413c6a200241f80d6a280200360200200041c0006a200241e80f6a41e80110e4071a0c560b2000411c3602000c550b2006450d3e20042d0001210520012003417e6a2220360204410221062001200441026a360200200541054b0d3e410021084100210d02400240024002400240024020050e06000501020304000b200241c00d6a200110960220022802c00d2209450d43200241c80d6a280200210d20022802c40d2107200241a8046a2001108402024020022903a804a70d0020022903b0042214421888200241b8046a290300221042288684210b200d41187621082010421888210a2010422088a721192014a7211e41012106420021100c050b200741ffffff3f71450d43200910290c430b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241df0d6a310000211020022900c70d210b20022800c30d210820022f00c10d210520022d00c00d210620022800cf0d210320022800d30d210420022900d70d210a200241c8046a200110c80120022802c8040d4320022802cc042109200241c0046a200110c80120022802c0040d43200a4228882010421886842110200a420888a7211f20022802c40421072002200341087622013b00b909200241bb096a20014110763a0000200220033a00b8092002200aa73a00c0092002200441087622184110763a00bf092008410876211e200220043a00bc092004411076210f2005410874200672210d20023100b809210a20022f00bf09211b20022800b9092119410321060c040b200541ff0171450d42200241003a00e00d0c420b200241d0046a200110c80120022802d0040d4120022802d40421094200210b41042106410021084100210d410021194200210a410021070c020b2020450d4020042d0002210520012003417d6a3602042001200441036a360200200541024b0d404200210b41052106410021084100210d410021194200210a410021090240024020050e03030001030b4200210b410121094100210d410021194200210a0c020b200241d8046a200110c80120022802d8040d4020022802dc0421074200210b410221094100210d410021194200210a0c010b41002105200241003a00e00d2003417e6a21092003417d6a2106024002400240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b2003417e6a2007460d4220022900d70d210b200241df0d6a2d0000211820022800d30d210520022800cf0d210d20022900c70d211020022800c30d210920022f00c10d210c20022d00c00d210e200420076a220341026a2d00002104200120063602042001200341036a360200200441014b0d42200b422088a72101200ba721034100210f20040e020201020b200541ff0171450d41200241003a00e00d0c410b4101210f0b200220013600eb09200220033600e709200220053600e3092002200d3600df0920022900df09221342188820022900e709221442288684210b2014421888210a2010423888a721082010422088a7210d2014422088a721192010a721072013a7211e410621060b2000201b3b012a2000200f3a00292000200c3b000a2000200e3a000920004111360200200041306a20103701002000412c6a201f360100200041286a20183a0000200041106a20073602002000410c6a2009360200200041086a20063a0000200041146a2008411874200d41ffffff077172360200200041186a200b421886201ead42ffffff078384370200200041206a2019ad422086200a42ff0183421886200b4228888484370200200041386a200241e80f6a41f00110e4071a0c540b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541064b0d004107210d02400240024002400240024020050e0700010203040543000b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220a422888200241df0d6a31000042188684a7210620022800d30d220f410876210e20022800cf0d220c4108762108200a420888a7211820022900c70d210b20022800c30d210920022f00c10d211a20022d00c00d211d200aa7211c4101210d0c430b200541ff0171450d05200241003a00e00d0c050b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220a422888200241df0d6a31000042188684a7210620022800d30d220f410876210e20022800cf0d220c4108762108200a420888a7211820022900c70d210b20022800c30d210920022f00c10d211a20022d00c00d211d200aa7211c4102210d0c420b200541ff0171450d04200241003a00e00d0c040b41002105200241003a00e00d410220036b21092003417d6a2106024002400340200920056a450d01200241c00d6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241d0096a411f6a200241c00d6a411f6a3100003c0000200220022900d70d3700e709200220022900cf0d3700df09200220022900c70d3700d709200220022800c30d22093600d309200220022f00c10d3b00d109200220022d00c00d3a00d00941002105200241003a00e00d200420076a210d200720036b41026a2103200241d0096a41077221070340200320056a450d02200241c00d6a20056a200d20056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00e00d2006417f6a21062004210520044120470d000b200241df0d6a2d0000212120022900d70d210a20022800d30d212020022800cf0d211f20022800c30d211b20022900c70d211020022d00c00d210120022f00c10d2104200241b0096a41086a2203200741086a290000370300200241b0096a41106a2205200741106a290000370300200241b0096a41186a200741186a2d00003a0000200220072900003703b0092001200441087472210720022f01d00920022d00d20941107472221d410876211a20022f00bd09200241bf096a2d000041107472210e20022f00b909200241bb096a2d00004110747221082010422088a7211e20052d0000211c20032d0000210c20022800c509210620022800c109211820022d00bc09210f20022903b009210b2010a721194103210d0c420b200541ff0171450d04200241003a00e00d0c040b200541ff0171450d03200241003a00e00d0c030b200241c00d6a200110960220022802c00d2209450d0220022902c40d210b4104210d410021084100210e41002106410021180c3f0b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220a422888200241df0d6a31000042188684a7210620022800d30d220f410876210e20022800cf0d220c4108762108200a420888a7211820022900c70d210b20022800c30d210920022f00c10d211a20022d00c00d211d200aa7211c4105210d0c3f0b200541ff0171450d01200241003a00e00d0c010b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220a422888200241df0d6a31000042188684a7210620022800d30d220f410876210e20022800cf0d220c4108762108200a420888a7211820022900c70d210b20022800c30d210920022f00c10d211a20022d00c00d211d200aa7211c4106210d0c3e0b200541ff0171450d00200241003a00e00d0b2000411c3602000c530b2006450d3720042d0001210520012003417e6a3602042001200441026a360200200541074b0d370240024002400240024002400240024020050e080001020304050607000b200241e0046a200110840220022903e004a70d3e200241f0046a290300211020022903e804210b41002103200241003a00e00d2007280200417f6a2104024003402004417f460d01200241c00d6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00e00d2004417f6a21042005210320054120470d000b200b42808080807083210a2010a7220341107621012003410876210720022900d70d2214422088a721092010422088a7210d200241df0d6a2d0000210820022800d30d210520022800cf0d210620022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f2014a721184101211b0c420b200341ff0171450d3e200241003a00e00d0c3e0b200241f8046a200110c80120022802f8040d3d20022802fc04210c4102211b0c3e0b20024180056a200110c8012002280280050d3c200228028405210c4103211b0c3d0b20024188056a200110c8012002280288050d3b2007280200200228028c052203490d3b2003417f4c0d110240024020030d004200210b410121040c010b2003102d2204450d0a20072802002003490d3b20042001280200200310e4071a200128020422052003490d282001200520036b3602042001200128020020036a3602002003ad210b0b2004450d3b41002105200241003a00e00d200b2003ad42208684220b42808080807083210a2007280200417f6a2103200ba72107024003402003417f460d01200241c00d6a20056a200128020022062d00003a0000200120033602042001200641016a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d2214422088a72109200241df0d6a2d0000210820022800d30d210520022800cf0d210620022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f2014a721184104211b4100210341002107410021010c3f0b0240200541ff0171450d00200241003a00e00d0b2007450d3b0c3a0b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220b422088a72109200241df0d6a2d0000210820022800d30d210520022800cf0d210620022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f200ba721184105211b0c390b200541ff0171450d3a200241003a00e00d0c3a0b20024190056a200110c8012002280290050d3920072802002002280294052205490d392005417f4c0d0f0240024020050d004200210b410121040c010b2005102d2204450d0820072802002005490d3920042001280200200510e4071a200128020422032005490d272001200320056b3602042001200128020020056a3602002005ad210b0b2004450d3941002103200241003a00e00d200b2005ad42208684220b42808080807083210a200ba7210d20072802002109417f210502400240034020092003460d01200241c00d6a20036a200128020022082d00003a00002001200920056a3602042001200841016a3602002002200341016a22073a00e00d2005417f6a21052007210320074120470d000b200241bf096a20022800d30d22054118763a0000200241bb096a20022800cf0d22064118763a0000200220022900d70d22143c00c009200220053a00bc09200220063a00b809200220022900c70d22103703b009200220054108763b00bd09200220064108763b00b909200220144208883e00c10920022014422888200241df0d6a3100002213421886843e00c509200920076b22074110490d0120022800c30d210c20022f00c10d210e20022d00c00d210f2008280005210d2008280009211e200828000d2119200828000121032001200841116a3602002001200741706a36020420034110762101200341087621072014422088a721092014a721182013a721084106211b0c3e0b200341ff0171450d00200241003a00e00d0b200d0d380c390b41002105200241003a00e00d2003417e6a2109417d21060240034020092005460d01200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200320076b2209417e6a4110490d39200241df0d6a310000210a20022900d70d211420022800d30d210520022800cf0d210620022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f200420076a2204410e6a280000210d200441026a290000210b2004410a6a280000210320012009416e6a3602042001200441126a360200200aa741ff017121082003411076210120034108762107200b42808080807083210a2014422088a721092014a721184107211b0c3c0b200541ff0171450d38200241003a00e00d0c380b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220b422088a72109200241df0d6a2d0000210820022800d30d210520022800cf0d210620022900c70d211020022800c30d210c20022f00c10d210e20022d00c00d210f200ba721184108211b0c360b200541ff0171450d37200241003a00e00d0c370b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541014b0d0002400240024002400240024020050e020001000b200241c00d6a200110900320022802c00d2207450d05200241c80d6a280200211720022802c40d211d200241a8076a200241e80f6a41e10010e4071a200220022f01d0093b018807410121010c010b41002105200241003a0088102003417e6a21092003417d6a2103034020092005460d02200241e80f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a0088102003417f6a21032006210520064120470d000b20024187106a310000211020022900ff0f210a20022800fb0f210c20022800f70f210820022900ef0f210b20022800eb0f210d20022f00e90f210920022d00e80f2106200241e80f6a2001109f0420022d00e80f220e4103460d04200241a1106a290000212420024199106a290000211520024191106a290000211620024189106a2900002112200241f90f6a2900002113200241f10f6a2900002114200241c1106a2900002125200241bd106a280000211a200241b9106a280000211c200241b5106a2800002121200241b1106a2800002120200241ad106a280000211f200241a9106a280000211e20024181106a290000211120022f00ef0f211920022d00ee0f211b20022d00ed0f211820022800e90f210f200241e80f6a2001109f0420022d00e80f4103460d04200241c00d6a200241e80f6a41e10010e4071a200241e80f6a200110b50320022802ec0f221d450d04200241f40f6a280200212220022802f00f2117200728020022034104490d03200241f80f6a280200212620022802e80f210720012802002227280000212320012003417c6a22283602042001202741046a36020041002104200241003a0088102003417b6a2103034020282004460d03200241e80f6a20046a202720046a220541046a2d00003a0000200120033602042001200541056a3602002002200441016a22053a0088102003417f6a21032005210420054120470d000b20024187106a310000212920022900ff0f212a20022800fb0f212820022800f70f212720022900ef0f212b20022800eb0f210520022f00e90f210320022d00e80f2104200241a8076a200241c00d6a41e10010e4071a200220022f01b0093b018807410221010b200241c00b6a200241a8076a41e10010e4071a200220022f0188073b01ca0920004199016a2024370000200020153700910120004189016a20163700002000201237008101200041f1006a201337000020002014370069200041df006a20103c0000200041d7006a200a3700002000413f6a20293c0000200041376a202a370000200020253700b9012000201a3600b5012000201c3600b101200020213600ad01200020203600a9012000201f3600a5012000201e3600a10120002011370079200020193b00672000201b3a0066200020183a00652000200f360061200041e0006a200e3a0000200041d3006a200c360000200041cf006a2008360000200041c7006a200b370000200041c3006a200d360000200041c1006a20093b0000200041c0006a20063a0000200041336a20283600002000412f6a2027360000200041276a202b370000200041236a2005360000200041216a20033b0000200041206a20043a00002000411c6a2023360200200041186a2026360200200041146a2022360200200041106a20173602002000410c6a201d360200200041086a20073602002000200136020420004114360200200041c1016a200241c00b6a41e10010e4071a200020022f01ca093b00a2020c550b200541ff0171450d02200241003a0088100c020b200441ff0171450d00200241003a0088100b02402022450d002022410c6c2104201d210103400240200141046a280200450d00200128020010290b2001410c6a2101200441746a22040d000b0b2017450d002017410c6c450d00201d10290b2000411c3602000c510b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d0020004115360200200041046a200241e80f6a41a40210e4071a0c510b2000411c3602000c500b2006450d3120042d0001210520012003417e6a3602042001200441026a360200200541054b0d310240024002400240024002400240024002400240024020050e06000102030405000b200241a0056a200110c80120022802a0050d3b20022802a405210420024198056a200110c8012002280298050d3b200228029c05210341012101410021070c050b200241d8056a200110c80120022802d8050d3a20022802dc052104200241d0056a200110c80120022802d0050d3a20022802d4052103200241c8056a200110c80120022802c8050d3a20022802cc052105200241c0056a200110c80120022802c0050d3a20022802c4052106200241a8056a200110840220022903a805a70d3a20022903b005210b200241bc076a200241b8056a290300370200200220053602a8072002200b3702b407200220063602ac0720022802d809210e41022101410021070c060b20024188066a200110c8012002280288060d39200228028c06210420024180066a200110c8012002280280060d392002280284062103200241f8056a200110c80120022802f8050d3920022802fc052105200241e0056a200110840220022903e005a70d39200241f0056a290300210b20022903e805210a200241be076a41003a0000200241b4076a200b370200200241003b01bc07200241003600bf07200220022d00b0093a00c3072002200a3702ac07200220053602a80720022800b109210d20022800b509210820022800b909210920022800bd09210c20022800c109210720022800c509210e410321010c060b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b200241d0096a411f6a200241c00d6a411f6a3100003c0000200220022900d70d3700e709200220022900cf0d3700df09200241b0076a20022900e309370300200241b5076a200241e8096a290000370000200220022900c70d220b3700d709200220022900db093703a80720022800c30d210420022f00c10d210520022d00c00d2106200ba7210341042101410021074100210c0c040b200541ff0171450d38200241003a00e00d0c380b200241a0066a200110c80120022802a0060d3720022802a406210c20024198066a200110c8012002280298060d37200228029c06210d41002104200241003a00e00d20072802002106417f2103024002400240034020062004460d01200241c00d6a20046a200128020022092d00003a00002001200620036a3602042001200941016a3602002002200441016a22053a00e00d2003417f6a21032005210420054120470d000b200620056b22034104490d3a200241df0d6a310000210a20022900d70d211020022800d30d210e20022800cf0d210f20022900c70d210b20022800c30d210420022f00c10d210520022d00c00d2106200928000121082001200941056a36020020012003417c6a36020420024190066a200110c8012002280290060d3a20072802002002280294062203490d3a2003417f4c0d1320030d0142002114410121090c020b200441ff0171450d39200241003a00e00d0c390b2003102d2209450d0920072802002003490d0620092001280200200310e4071a200128020422072003490d292001200720036b3602042001200128020020036a3602002003ad21140b2009450d37200241bc076a200a3c0000200220103702b4072002200c3602c0072002200e3602b0072002200f3602ac072002200b4220883e02a80720142003ad42208684220a422088a72107200aa7210c200ba72103410521010c040b200241b0066a200110c80120022802b0060d3620022802b4062104200241a8066a200110c80120022802a8060d36200728020020022802ac062205490d362005417f4c0d0f0240024020050d004200210b410121030c010b2005102d2203450d0820072802002005490d2a20032001280200200510e4071a200128020422062005490d292001200620056b3602042001200128020020056a3602002005ad210b0b2003450d362002200b2005ad422086843703a80741062101410021074100210c0b0b0b0b200241c00b6a41186a200241a8076a41186a280200220f360200200241c00b6a41106a200241a8076a41106a290300220b370300200241c00b6a41086a200241a8076a41086a290300220a370300200220022903a80722103703c00b200041106a20033602002000410c6a2004360200200020053b000a200020063a0009200041086a20013a000020004116360200200041146a20103702002000411c6a200a370200200041246a200b3702002000412c6a200f360200200041c4006a200e3602002000413c6a2007ad422086200cad84370200200041386a2009360200200041346a2008360200200041306a200d360200200041c8006a200241e80f6a41e00110e4071a0c500b200910290c310b2006450d2f20042d0001210520012003417e6a22223602042001200441026a36020041062109200541064b0d2f4200211002400240024002400240024002400240024020050e0700010203040805000b200241c8066a200110c80120022802c8060d3720072802002203450d3720022802cc06210d200128020022052d0000210420012003417f6a3602042001200541016a360200200441014b0d37410021080240024020040e020100010b410121080b200241c0066a200110c80120022802c0060d37200728020020022802c4062204490d372004417f4c0d1102400240024020040d004200210b4101210e0c010b2004102d220e450d0b20072802002004490d01200e2001280200200410e4071a200128020422032004490d2e2001200320046b3602042001200128020020046a3602002004ad210b0b200e450d38200241b8066a200110c801200b2004ad42208684220ba7211e024020022802b8060d00200728020020022802bc062204490d002004417f4c0d1302400240024020040d004200210a410121180c010b2004102d2218450d0d20072802002004490d0120182001280200200410e4071a200128020422032004490d312001200320046b3602042001200128020020046a3602002004ad210a0b2018450d01200b422088a7210f200a2004ad42208684220b428080808070832110200ba7211b410121094100210c0c0a0b201810290b201e450d380b200e10290c370b200241d0066a200110c80120022802d0060d3620022802d406210d410221090c040b20224104490d352004280002210d20012003417a6a3602042001200441066a360200410321090c030b200241e0066a200110c80120022802e0060d34200728020020022802e4062204490d342004417f4c0d0e02400240024020040d004200210b4101210d0c010b2004102d220d450d0820072802002004490d01200d2001280200200410e4071a200128020422032004490d2d2001200320046b3602042001200128020020046a3602002004ad210b0b200d450d35200241d8066a200110c801200b2004ad42208684220ba7210e024020022802d8060d00200728020020022802dc06221b490d00201b417f4c0d10024002400240201b0d00410021184101210f0c010b201b102d220f450d0a2007280200201b490d01200f2001280200201b10e4071a20012802042204201b490d3020012004201b6b36020420012001280200201b6a360200201b21180b200f450d01200b422088a7211e4200210b410421094100211d410021174200210a420021100c060b200f10290b200e450d350b200d10290c340b200241e8066a200110c80120022802e8060d3320022802ec06210c41002104200241003a00e00d20072802002107417f210302400240034020072004460d01200241c00d6a20046a200128020022062d00003a00002001200720036a3602042001200641016a3602002002200441016a22053a00e00d2003417f6a21032005210420054120470d000b200241df0d6a310000210b20022900d70d211420022800d30d211820022800cf0d210f20022900c70d211320022800c30d210d20022f00c10d211920022d00c00d210841002104200241003a00e00d200720056b2109200720036a2103034020092004460d02200241c00d6a20046a200620046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00e00d2003417f6a21032005210420054120470d000b200241d0096a41186a200241c00d6a41186a2903002211370300200241d0096a41106a200241c00d6a41106a290300370300200241d0096a41086a200241c00d6a41086a290300370300200220022903c00d22123703d0092014428080808070832110200ba741ff0171211a2013422088a7211e200241df096a290000210a20022800d309211c20022900d709210b20022d00e709212120022f00e909211d20022800eb09212020022d00ef09211f2012a721062014a7211b2013a7210e2011a72117410521090c050b200441ff0171450d34200241003a00e00d0c340b200441ff0171450d33200241003a00e00d0c330b200241f0066a200110c80120022802f0060d3220022802f406210d410721090b0b0b200041003b0045200020063b00252000201d3b003e200020173a003d200020193b0106200020083a0005200020093a000420004117360200200041c7006a41003a0000200041276a20064110763a0000200041346a200a3700002000412c6a200b370000200041c8006a200c360200200041c4006a201f3a0000200041c0006a20203600002000413c6a20213a0000200041286a201c360000200041246a201a3a0000200041186a2018360200200041146a200f360200200041106a201e3602002000410c6a200e360200200041086a200d3602002000411c6a2010201bad84370200200041cc006a200241e80f6a41dc0110e4071a0c4e0b2006450d2d20042d0001210520012003417e6a22063602042001200441026a360200200541034b0d2d024002400240024020050e0400010203000b41002105200241003a00e00d410220036b21092003417d6a2106024002400340200920056a450d01200241c00d6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200241d0096a411f6a200241c00d6a411f6a3100003c0000200220022900d70d3700e709200220022900cf0d3700df09200220022900c70d3700d709200220022800c30d22083600d309200220022f00c10d3b00d109200220022d00c00d3a00d00941002105200241003a00810e200420076a2109200720036b41026a2103200241d0096a41077221070340200320056a450d02200241c00d6a20056a200920056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00810e2006417f6a210620042105200441c100470d000b200241e70d6a2900002111200241d70d6a290000211420022900df0d211220022900cf0d211320022f00ff0d210420022800fb0d210320022800f70d210620022800f30d210920022800ef0d210520022900c70d211020023502c00d210b20023301c40d210a20023100c60d2116200241b0096a41086a220d200741086a290000370300200241b0096a41106a220c200741106a290000370300200241b0096a41186a2201200741186a2d00003a0000200220072900003703b00920022f01d00920022d00d20941107472220f4108762118200b200a20164210868442208684420886200131000084211620022f00b909200241bb096a2d0000411074722101200c290300210b200d2d0000210e20022f01be09211b20022d00bd09210720022d00bc09210c20022903b009210a410121190c300b200541ff0171450d31200241003a00e00d0c310b200541ff0171450d30200241003a00810e0c300b200241003a00d40d2006450d2f20042d0002210520012003417d6a22063602042001200441036a360200200241013a00d40d200220053a00c00d20060d090c2e0b41002105200241003a00e00d410220036b210d2003417d6a210602400240024002400340200d20056a450d01200241c00d6a20056a200420056a220941026a2d00003a0000200120063602042001200941036a3602002002200541016a22093a00e00d2006417f6a21062009210520094120470d000b200241df0d6a310000211620022900d70d210b20022800d30d210c20022800cf0d210e20022900c70d210a20022800c30d210820022f00c10d211820022d00c00d210f41002105200241003a00810e200420096a210d200920036b41026a21030340200320056a450d02200241c00d6a20056a200d20056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00810e2006417f6a210620042105200441c100470d000b200241e70d6a2900002111200241d70d6a290000211420022900df0d211220022900cf0d211320022f00ff0d210420022800fb0d210320022800f70d210620022800f30d210920022800ef0d210520022900c70d211020023502c00d212420023301c40d212520023100c60d212b200241f8066a200110c80120022802f8060d32200728020020022802fc06221b490d32201b417f4c0d0d201b0d02420021154101210d0c030b200541ff0171450d31200241003a00e00d0c310b200541ff0171450d30200241003a00810e0c300b201b102d220d450d022007280200201b490d04200d2001280200201b10e4071a20012802042207201b490d2920012007201b6b36020420012001280200201b6a360200201bad21150b200d450d2e2015201bad42208684211520242025202b4210868442208684420886201642ff0183842116200e4108762101200c411076211b200c4108762107410321190c2c0b20024180076a200110c8012002280280070d2d20072802002002280284072204490d2d2004417f4c0d080240024020040d004200210b410121080c010b2004102d2208450d0120072802002004490d0220082001280200200410e4071a200128020422032004490d292001200320046b3602042001200128020020046a3602002004ad210b0b2008450d2d200b2004ad42208684210a41042119410021010c2b0b1039000b200810290c2b0b200d10290c2a0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0041012107024002400240024020050e03020001020b41002105200241003a00e00d2003417e6a21072003417d6a21030240034020072005460d01200241c00d6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00e00d2003417f6a21032006210520064120470d000b20022900d70d220a422088a7210f200241df0d6a2d0000210e20022800d30d210920022800cf0d210d20022900c70d210b20022800c30d210820022f00c10d210620022d00c00d210c200aa72118410221070c020b200541ff0171450d03200241003a00e00d0c030b41002105200241003a00e00d2003417e6a2109417d2106034020092005460d02200241c00d6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00e00d2006417f6a21062007210520074120470d000b200320076b2203417e6a4110490d02200241df0d6a310000211220022900d70d211120022800d30d210920022800cf0d210d20022900c70d210b20022800c30d210820022f00c10d210620022d00c00d210c200420076a2204410a6a2900002110200441026a290000210a20012003416e6a22053602042001200441126a220736020020054110490d022004411a6a29000021132007290000211420012003415e6a22053602042001200441226a220736020020054104490d022007280000211b20012003415a6a3602042001200441266a3602002011422088a7210f201242ff0183a7210e2011a72118410321070b200020063b000a2000200c3a000920004119360200200041c8006a2013370200200041c0006a2014370200200041386a2010370200200041306a200a370200200041286a200ead3c0000200041d0006a201b3602002000411c6a2009360000200041186a200d360000200041106a200b3700002000410c6a2008360000200041086a20073a0000200041206a200fad4220862018ad84370000200041d8006a200241e80f6a41d00110e4071a0c4b0b200541ff0171450d00200241003a00e00d0b2000411c3602000c490b200241c00d6a200110e303024020022d00c00d4106460d00200241a8076a41386a2201200241c00d6a41386a280200360200200241a8076a41306a200241c00d6a41306a290300220b370300200241a8076a41286a200241c00d6a41286a290300220a370300200241a8076a41206a200241c00d6a41206a2903002210370300200241a8076a41186a200241c00d6a41186a2903002214370300200241a8076a41106a200241c00d6a41106a2903002213370300200241a8076a41086a200241c00d6a41086a2903002211370300200220022903c00d22123703a8072000411a360200200020123702042000410c6a2011370200200041146a20133702002000411c6a2014370200200041246a20103702002000412c6a200a370200200041346a200b3702002000413c6a2001280200360200200041c0006a200241e80f6a41e80110e4071a0c490b2000411c3602000c480b2000411c3602000c470b200241a8076a200110ad0520022d00a8074105470d222000411c3602000c460b20042d0003210520012003417c6a22063602042001200441046a360200200241023a00d40d200220053a00c10d2006450d2420042d0004210520012003417b6a22063602042001200441056a360200200241033a00d40d200220053a00c20d2006450d2420042d0005210520012003417a6a22063602042001200441066a360200200241043a00d40d200220053a00c30d2006450d2420042d000621052001200341796a22063602042001200441076a360200200241053a00d40d200220053a00c40d2006450d2420042d000721052001200341786a22063602042001200441086a360200200241063a00d40d200220053a00c50d2006450d2420042d000821052001200341776a22063602042001200441096a360200200241073a00d40d200220053a00c60d2006450d2420042d000921052001200341766a220636020420012004410a6a360200200241083a00d40d200220053a00c70d2006450d2420042d000a21052001200341756a220636020420012004410b6a360200200241093a00d40d200220053a00c80d2006450d2420042d000b21052001200341746a220636020420012004410c6a3602002002410a3a00d40d200220053a00c90d2006450d2420042d000c21052001200341736a220636020420012004410d6a3602002002410b3a00d40d200220053a00ca0d2006450d2420042d000d21052001200341726a220636020420012004410e6a3602002002410c3a00d40d200220053a00cb0d2006450d2420042d000e21052001200341716a220636020420012004410f6a3602002002410d3a00d40d200220053a00cc0d2006450d2420042d000f21052001200341706a22063602042001200441106a3602002002410e3a00d40d200220053a00cd0d2006450d2420042d0010210520012003416f6a22063602042001200441116a3602002002410f3a00d40d200220053a00ce0d2006450d2420042d0011210520012003416e6a22063602042001200441126a360200200241103a00d40d200220053a00cf0d2006450d2420042d0012210520012003416d6a22063602042001200441136a360200200241113a00d40d200220053a00d00d2006450d2420042d0013210520012003416c6a22063602042001200441146a360200200241123a00d40d200220053a00d10d2006450d2420042d0014210520012003416b6a22063602042001200441156a360200200241133a00d40d200220053a00d20d2006450d2420042d0015210520012003416a6a22063602042001200441166a360200200241143a00d40d200220053a00d30d200220022900c70d3703c00b2002200241cc0d6a2900003700c50b200641104f0d220c250b1038000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2003200e41ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b200c10290c2e0b2004200341ccafc000104c000b2004200341ccafc000104c000b2003200541ccafc000104c000b200410290b2000411c3602000c350b2004200341ccafc000104c000b2004200c41ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b2003200541ccafc000104c000b2005200341ccafc000104c000b2003200741ccafc000104c000b2005200641ccafc000104c000b200310290c0c0b2004200341ccafc000104c000b2004200341ccafc000104c000b2004200341ccafc000104c000b201b200441ccafc000104c000b201b200741ccafc000104c000b2004200341ccafc000104c000b200241c00b6a41206a200241a8076a41206a290300220b370300200241c00b6a41186a200241a8076a41186a290300220a370300200241c00d6a410c6a200241a8076a41086a290300370200200241c00d6a41146a200241a8076a41106a290300370200200241c00d6a411c6a200a370200200241c00d6a41246a200b370200200220022903a8073702c40d2000411b360200200020022902c00d3702042000410c6a200241c00d6a41086a290200370200200041146a200241c00d6a41106a2902003702002000411c6a200241c00d6a41186a290200370200200041246a200241c00d6a41206a2902003702002000412c6a200241e80d6a280200360200200041306a200241e80f6a41f80110e4071a0c230b20022d00c20d210d20022f01c00d210f20022800c30d210820022903c00b210a20022802c80b210e20022d00cc0b210c2004411e6a29000021162004290016210b20012003415a6a22053602042001200441266a3602002005450d0220042d002621062001200341596a22093602042001200441276a2218360200200641014b0d02420021100240024020060e020100010b20094110490d032004412f6a2900002114200429002721132001200341496a22053602042001200441376a36020020054110490d032004413f6a2900002111200429003721122001200341b97f6a22053602042001200441c7006a36020020054104490d03200428004721052001200341b57f6a22093602042001200441cb006a2218360200420121100b20104202510d022009450d0220182d0000210420012009417f6a22033602042001201841016a360200200441014b0d02410221070240024020040e020100010b2003450d0320182d0001210420012009417e6a3602042001201841026a360200200441014b0d0341002107024020040e020100010b410121070b200f200d41107472220f4108762118200e410876210120022902d4092115410221190b2000201b3b011e200020073a001d200020183b000a2000200f3a000920004118360200200041d0006a2011370200200041c8006a2012370200200041c0006a2014370200200041386a2013370200200041286a2016370200200041206a200b370200200041f0006a2015370200200041ec006a200d360200200041e8006a2004360200200041e4006a2003360200200041e0006a2006360200200041dc006a2009360200200041d8006a2005360200200041306a20103702002000411c6a200c3a0000200041106a200a3702002000410c6a2008360200200041086a20193a0000200041186a2001410874200e41ff017172360200200041f8006a200241e80f6a41b00110e4071a0c210b200241003a00d40d0b2000411c3602000c1f0b2000411c3602000c1e0b2000411c3602000c1d0b4200210b410021030c030b200410290b2000411c3602000c1a0b4200210b4100210841002109410021030b41002107410021014200210a0b2000200e3b000a2000200f3a000920004113360200200041286a2008ad3c0000200041c4006a2019360200200041c0006a201e3602002000413c6a200d3602002000412c6a20043602002000411c6a2005360200200041186a2006360200200041106a20103702002000410c6a200c360200200041086a201b3a0000200041306a200a200b42ffffffff0f8384370200200041206a2009ad4220862018ad84370200200041386a200141107420074108744180fe037172200341ff017172360200200041c8006a200241e80f6a41e00110e4071a0c170b200020073b0025200041003b0046200041003a00452000201a3b00062000201d3a00052000200d3a000420004112360200200041276a20074110763a0000200041c4006a20213a00002000413c6a200a370000200041386a2020360000200041346a201f360000200041306a201e3600002000412c6a2019360000200041286a201b3600002000410c6a200b370000200041086a2009360000200041246a2006411876ad3c0000200041186a200e410874200f41ff017172360000200041146a2008410874200c41ff0171723600002000411c6a2006ad4228862018ad42088684201cad42ff018384370000200041c8006a200241e80f6a41e00110e4071a0c160b2000411c3602000c150b20024198076a41026a200241a0076a41026a2d000022013a0000200241b0096a41086a2204200241d0096a41086a290300370300200241b0096a41106a2203200241d0096a41106a2d00003a0000200220022f01a00722053b019807200220022903d0093703b009200041086a200c3a00002000410e360200200020053b00092000410b6a20013a0000200041146a2009360200200041106a200d3602002000410c6a2006360200200041386a200a370200200041306a200b3702002000412c6a200e3602002000200f3b012a200020083a0029200041186a20022903b009370200200041206a2004290300370200200041286a20032d00003a0000200041c0006a200241e80f6a41e80110e4071a0c140b4100210c02402004450d00200910290b410221094100211b0b41000d062009450d06200241e80f6a2001108602024002400240024020022802e80f450d00200241c00d6a200241e80f6a41c00110e4071a200728020022034110490d012001280200220441086a2900002114200429000021102001200441106a3602002001200341706a220536020420054110490d01200441186a2900002111200429001021132001200341606a22053602042001200441206a36020020054110490d01200441286a2900002116200429002021122001200341506a22053602042001200441306a36020020054104490d022004280030211e20012003414c6a3602042001200441346a36020020024188036a200110ae0520022f0188030d0320022f018a03211f20024180036a200110c8012002280280030d032002280284032120200241e00d6a290300210a200241d40d6a280200211d200241d00d6a310000212420022903d80d210b20022f01d20d212120022d00d10d211920022802c40d211820022802c00d210820022903c80d2115200241a8076a200241e80d6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a0072015422888202442188684a721062015420888a7211a2015a7211c4118210f0c0f0b200c0d050c090b200241c00d6a108702200c41808080807872418080808078470d040c080b200241c00d6a108702200c0d030c070b200241c00d6a108702200c41808080807872418080808078460d060c020b4100210c02402004450d00200910290b410221094100211b0b41000d042009450d04200241e80f6a2001108602024002400240024020022802e80f450d00200241c00d6a200241e80f6a41c00110e4071a200728020022034110490d012001280200220441086a2900002114200429000021102001200441106a3602002001200341706a220536020420054110490d01200441186a2900002111200429001021132001200341606a22053602042001200441206a36020020054110490d01200441286a2900002116200429002021122001200341506a22053602042001200441306a36020020054104490d022004280030211e20012003414c6a3602042001200441346a360200200241f0026a200110ae0520022f01f0020d0320022f01f202211f200241e8026a200110c80120022802e8020d0320022802ec022120200241e00d6a290300210a200241d40d6a280200211d200241d00d6a310000212420022903d80d210b20022f01d20d212120022d00d10d211920022802c40d211820022802c00d210820022903c80d2115200241a8076a200241e80d6a41980110e4071a200241a0076a41046a200241d0096a41046a2f01003b0100200220022801d0093602a0072015422888202442188684a721062015420888a7211a2015a7211c4117210f0c0d0b200c0d030c070b200241c00d6a108702200c41808080807872418080808078470d020c060b200241c00d6a108702200c0d010c050b200241c00d6a108702200c41808080807872418080808078460d040b200910290c030b4100211b02402001450d00200c10290b4104210c410021080b41000d01200c450d01200241a8076a200241e80f6a41980110e4071a200241a0076a41046a200241c00d6a41046a2f01003b0100200220022801c00d3602a0074110210f0b4100211a410021060c050b2000411c3602000c0b0b0c030b4100211a410021060c020b4100211a4100210641002118410021084100211b0c010b4100211a410021060b200241c00b6a200241a8076a41980110e4071a20024198076a41046a2201200241a0076a41046a2f01003b0100200220022802a00736029807200041386a200a370200200041306a200b370200200041286a2006411876ad3c0000200041206a2006ad422886201aad42088684201cad42ff018384370200200041186a2018ad4220862008ad84370200200041106a201bad422086200cad843702002000412c6a201d360200200020213b012a200020193a00292000410c6a20093602002000200e3b010a2000200d3a0009200041086a200f3a000020004107360200200041c0006a200241c00b6a41980110e4071a20004190026a201637020020004188026a201237020020004180026a2011370200200041f8016a2013370200200041f0016a2014370200200041e8016a2010370200200041e0016a201f3b0100200041dc016a2020360200200041d8016a201e36020020002002280298073601e201200041e6016a20012f01003b010020004198026a200229038807370300200041a0026a20024188076a41086a2903003703000c060b200020043b002a200020053a00292000200e3b000a2000200f3a000920004105360200200041d0006a2015370200200041c8006a2013370200200041c0006a2014370200200041386a2011370200200041306a2012370200200041286a200b3c0000200041206a200a3700002000412c6a20033600002000411c6a200d360000200041186a2008360000200041106a20103700002000410c6a200c360000200041086a20013a0000200041d8006a2007ad4238862006ad42188684201642ffffff078384370200200041e0006a200241e80f6a41c80110e4071a0c050b0b200020083a00252000200c3b00062000200e3a0005200020093a000420004104360200200041246a200a3c00002000411c6a200b370200200041186a2006360200200041146a20053602002000410c6a2010370200200041086a200d360200200041286a2001411874200441ffffff07717236020020002007410874200341ff0171723b00262000412c6a200241e80f6a41fc0110e4071a0c030b200510290b2000411c3602000c010b1030000b20024190126a24000bf90c07027f017e027f027e097f047e017f230022042105200441a0016b4160712204240002402002200384500d002000290000210620044180016a200110df03200441e0006a200428028001220720042802880110e60320042902644200200428026022081b21090240200428028401450d00200710290b4201210a2008410820081b210b2009a7210c0240024002402009422088a72208450d00200b2008410574220d6a210e200441e0006a41106a210f200441e0006a41196a21104100210702400340200441c0006a41106a2211200b20076a220841106a290300370300200441c0006a41086a2212200841086a290300370300200420082903003703402004200841196a28000036022820042008411c6a28000036002b200841186a2d000022134103460d02200f2011290300370300200441e0006a41086a201229030037030020102004280228360000201041036a200428002b36000020042004290340370360200420133a00780240024002400240200f2000460d00200f2900002000290000510d00200420102800003602582004201041036a28000036005b200441e8006a290300211420042903602115200429037021160c010b200aa72111200441033a009801200429039001210620042903800121092004290388012117200429039801210a201141ff01714103460d01200441e8006a2903002214200320042903602215200256201420035620142003511b220f1b211420152002200f1b2115201341022013201141ff0171461b21132004290370211620092102201721030b2004200428005b36003320042004280258360230200420042802303602382004200428003336003b0240412010272218450d0020182015370300201820133a00182018201637031020182004280238360019201820143703082018411c6a200428003b360000200442818080801037021c20042018360218200d41606a2007460d02200841206a2108200d20076b41406a2110200441e0006a41106a2111200441e0006a41196a2112410121130340200441c0006a41106a220f200841106a290300370300200441c0006a41086a220e200841086a29030037030020042008290300370340200841186a2d000021072004200841196a28000036022820042008411c6a28000036002b20074103460d032011200f290300370300200441e0006a41086a220f200e29030037030020122004280228360000201241036a220e200428002b36000020042004290340370360200420073a007802400240024020112000460d0020112900002000290000510d00200420122800003602582004200e28000036005b200f2903002114200429036021152004290370211620022109200321170c010b200aa7210e200441033a009801200429039001210620042903800121092004290388012117200429039801210a0240200e41ff0171220e4103460d00200f2903002214200320042903602215200256201420035620142003511b220f1b211420152002200f1b2115200741022007200e461b2107200429037021160c010b2010450d070c010b2004200428005b36003320042004280258360230200420042802303602382004200428003336003b2004200428003b36008301200420042802383602800102402013200428021c470d00200441186a201310a101200428021821180b201820134105746a220f20073a0018200f2016370310200f200428028001360019200f411c6a200428008301360000200f2014370308200f20153703002004201341016a22133602202010450d060b200841206a2108201041606a211020092102201721030c000b0b1039000b200741206a21072009210220172103200841206a200e470d010c040b0b20022109200321170b0240200c41ffffff3f71450d00200b10290b20044180016a41086a200441186a41086a28020036020020042004290318370380010c020b20022109200321170b20044100360288012004420837038001200c41ffffff3f71450d00200b10290b02400240200a42ff01834203854200520d002004280288012108200428028001210720044180016a21040c010b02402004280288012208200428028401470d0020044180016a200810a10120042802880121080b200428028001220720084105746a220020063703102000201737030820002009370300200041186a200a3703002004200841016a22083602880120044180016a21040b20012007200810e703200441046a28020041ffffff3f71450d00200428020010290b200524000b990604067f017e027f057e230041f0006b220324002003200236021420032001360210200341186a2002ad4220862001ad841007108b020240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10c8010240024020032802080d00200328020c2206200328022c4105762201200120064b1b22014105742202417f4c0d040240024020010d00410821070c010b200210272207450d040b41002102200341003602502003200136024c20032007360248024002402006450d000340200341306a200341286a10ab040240024020032d00304101460d0041032108200328022c22014110490d01200329003121092003200141706a220a36022c20032003280228220b41106a360228200a450d01200b41086a290000210c200b290000210d20032001416f6a36022c2003200b41116a36022841032108200b2d0010220141034f0d01200320032800303602402003200341306a41036a2800003600432009210e200d210f200c2110200121080c010b410321080b200320032802403602682003200328004336006b20084103460d022003200328006b3600632003200328026836026002402002200328024c470d00200341c8006a200210a10120032802482107200328025021020b200720024105746a220120083a00182001200e370310200120032802603600192001411c6a2003280063360000200120103703082001200f3703002003200241016a22023602502006417f6a22060d000b0b2007450d012000200329024c370204200020073602000c020b200328024c41ffffff3f71450d00200710290b20034100360238200342013703302003410d3602442003200341106a3602402003200341306a360268200341dc006a41013602002003420137024c200341f4eaca003602482003200341c0006a360258200341e8006a41a8a3c800200341c8006a10371a2003350238422086200335023084100802402003280234450d00200328023010290b200041003602000b2005450d00200410290b200341f0006a24000f0b1039000b1038000bf40f08037f027e027f067e047f037e037f037e230041e0046b22032400200341086a200010a802200341186a200328020822042003280210220510a902200329031821064200210720034200370318200341e0006a280200210820032d006421090240024020064201510d00200341e8006a41386a4200370300200341e8006a41306a4200370300200341e8006a41286a4200370300200341e8006a41206a4200370300200341e8006a41186a4200370300200341f8006a4200370300200341f0006a4200370300200342003703684200210a4200210b4200210c0c010b200341186a41386a290300210d200341186a41306a290300210e200341186a41206a290300210a200341186a41186a2903002107200341d8006a290300210f2003290328210c2003290320210b200341e8006a41206a200341186a41286a290300370300200341e8006a41286a200e370300200341e8006a41306a200d370300200341f8006a20073703002003200a370380012003200f3703a0012003200b3703682003200c3703700b4200210f200341a0016a22104200370300200341e8006a41306a4200370300200341e8006a41286a221142003703002003420037038801200341e8006a41106a211202402002450d00200241057421134200210f420021144200211542002116200121170340024002400240201741186a22182d00002219417f6a41ff017141014b0d0020112016201741086a290300220d20152017290300220e562016200d562016200d511b22191b221637030020032015200e20191b22153703880120182d000022194102460d010b201941ff01710d01201741086a290300210d2017290300210e0b2010200f200d2014200e56200f200d56200f200d511b22191b220f37030020032014200e20191b2214370398010b201741206a2117201341606a22130d000b0b200341a8016a41186a201241086a290300220d370300200341a8016a41206a2219201241106a290300370300200341a8016a41286a201241186a290300370300200341a8016a41306a201241206a29030037030020032012290300220e3703b8012003200b3703a8012003200c3703b00102400240427f200b200e7c220e200e200b542217200c200d7c2017ad7c220d200c54200d200c511b22171b220e4280c8afa025544100427f200d20171b2216501b0d00200341b8016a290300211a200341d8016a290300211b200341d0016a290300210e2019290300211620032903b001211420032903a80121154201210d20032903c001211c0c010b4200210d0240200e201684500d00200e201610d40220034198046a201637030020034190046a200e370300200341e0036a41086a41013a0000200341e9036a2000290000370000200341f1036a200041086a290000370000200341f9036a200041106a29000037000020034181046a200041186a290000370000200341033a00e003200341e0036a10cb010b0b200341c0006a2016370300200341c8006a200e370300200341286a2014370300200341d0006a201b370300200341306a201a3703002003201c3703382003200f37035820032015370320200320094100200642015122171b22193a006420032008410020171b22133602602003200d4201512217ad37031802400240024020170d002005ad4220862004ad8410040c010b410410272217450d0120172013360000201741044108102b2217450d01201720193a0004201741084115102b2217450d01201720153700052017410d6a2014370000200341386a290300210f200341306a290300211420174115412a102b2217450d01201720143700152017411d6a200f3700002017412a41d400102b2217450d01201720163700252017412d6a200e3700002017413d6a200341d8006a2903003700002017200341d0006a2903003700352005ad4220862004ad842017ad4280808080d008841003201710290b200b20077c220f200b542217200c200a7c2017ad7c220e200c54200e200c511b21170240200328020c450d00200410290b427f200e20171b210e427f200f20171b210f200d420152211702400240024020064201510d0020170d0041032119200341e0026a21170c010b20064201522017410173720d0141042119200341e0016a21170b201741086a20193a0000201741003a0000201741096a2000290000370000201741116a200041086a290000370000201741196a200041106a290000370000201741216a200041186a290000370000201710cb010b0240200f200e844200520d0020034198046a200c37030020034190046a200b370300200341e0036a41086a41003a0000200341e9036a2000290000370000200341f1036a200041086a290000370000200341f9036a200041106a29000037000020034181046a200041186a290000370000200341033a00e003200341e0036a10cb010b200341e0036a200010df03200320032802e003221920032802e8034180a6cc004100410010c70120032802002117024020032802e403450d00201910290b024002402002450d00200341e0026a200010df0320032802e002211920033502e802210d200341e0036a2001200210e803200d4220862019ad8420033502e80342208620032802e0032213ad841003024020032802e403450d00201310290b024020032802e402450d00201910290b20174101460d01200010a7020c010b200341e0036a200010df0320033502e80342208620032802e0032219ad841004024020032802e403450d00201910290b20174101470d00200010b2020b200341e0046a24000f0b1030000bdb0102037f017e230041206b220324000240024020024105744104722204417f4c0d00200410272205450d0120034100360208200320043602042003200536020020022003107102402002450d002002410574210203402003200141106a41081072200129030021062003200141086a290300370318200320063703102003200341106a411010722003200141186a2d00003a00102003200341106a41011072200141206a2101200241606a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1038000b1039000ba2200e037f017e037f057e037f017e027f017e017f037e017f017e037f047e23004190096b220624002006200437031020062003370308200620053a001f0240024002400240024002400240024002400240024002402003200484500d0020012002460d0320012002412010e707450d03200641a0016a200210a802200641b0016a20062802a001220720062802a801220810a90220062903b001210942002104200642003703b001200641f8016a280200210a20062d00fc01210b2009420151220c0d0120064180026a41386a420037030020064180026a41306a420037030020064180026a41286a4200370300200641a0026a420037030020064180026a41186a420037030020064190026a420037030020064188026a42003703002006420037038002420021034200210d4200210e0c020b20004100360200200041106a4200370300200041086a42003703000c0a0b200641b0016a41386a290300210f200641b0016a41306a2903002110200641b0016a41206a290300210e200641b0016a41186a290300210d200641f0016a290300211120062903c001210320062903b8012104200641a0026a200641b0016a41286a29030037030020064180026a41286a201037030020064180026a41306a200f37030020064190026a200d3703002006200e37039802200620113703b802200620043703800220062003370388020b4200211020064180026a41106a21050240427f2004200d7c220d200d20045422122003200e7c2012ad7c220420035420042003511b22121b427f200420121b844200520d0020064190066a41206a200541206a29030037030020064190066a41186a200541186a29030037030020064190066a41106a200541106a29030037030020064190066a41086a200541086a290300370300200620052903003703900641a5e2c200ad4280808080b00184210341838c1c21050c040b200641c0046a200110a802200641d0046a20062802c004221320062802c804221410a90220062903d0042115200642003703d00420064198056a280200211620062d009c05211702400240201542015122120d004200210d200641a0056a41306a4200370300200641a0056a41286a4200370300200641a0056a41206a4200370300200641a0056a41186a4200370300200641b0056a4200370300200641a8056a4200370300200642003703a005420021034200210e42002104420021180c010b20064188056a290300210f200641d0046a41306a2903002110200641d0046a41206a2903002103200641d0046a41186a290300210d20064190056a290300211820062903e004210420062903d804210e200641a0056a41206a200641d0046a41286a290300370300200641a0056a41286a2010370300200641a0056a41306a200f370300200641b0056a200d370300200620033703b8052006200e3703a005200620043703a8050b200641086a41086a29030022102003200d2006290308221156200320105620032010511b22191b211a2011200d20191b210f0240024020062d001f4101470d0020052119200629039002221b200f7c221c201b54221d20064198026a290300221e201a7c201dad7c221b201e54201b201e511b0d010c030b20064180026a2119200629038002221b200f7c221c201b54221d20064180026a41086a290300221e201a7c201dad7c221b201e54201b201e511b4101470d020b41839dc500211241839dc500ad42808080808001842203428080fcff8f0183210f200342088842ff0183210d410121190c020b02402005450d0020064190076a200110a80220064190086a200628029007220220062802980710a902200641b0086a290300420020062903900842015122011b210e200641a8086a290300420020011b210d0240200628029407450d00200210290b20004100360200200041106a42002004200e7d2003200d54ad7d220e2003200d7d220d200356200e200456200e2004511b22011b370300200041086a4200200d20011b3703000c080b20062003370390062006200437039806200620013602c00320064190076a200120064190066a200641c0036a10ea03200641b0076a290300210320062903a807210402402006290390074201520d00200629039807210d200641c8086a20064190076a41106a290300370300200641c0086a200d37030020064190086a41086a41003a000020064199086a2001290000370000200641a1086a200141086a290000370000200641a9086a200141106a290000370000200641b1086a200141186a290000370000200641033a00900820064190086a10cb010b200041106a2003370300200041086a2004370300200041003602000c070b2019201c3703002019201b370308200641a0056a41186a2003201a7d200d200f54ad7d3703002006200d200f7d3703b005200641d8056a41186a200641b0056a221941086a290300221b370300200641d8056a41206a221f201941106a29030037030020064180066a2220201941186a29030037030020064188066a2221201941206a29030037030020062019290300221c3703e8052006200e3703d805200620043703e0052010201a7d21102011200f54ad211e427f200e200d7c220d200d200e542219200420037c2019ad7c220320045420032004511b22191b427f200320191b8450211902400240427f200e201c7c22032003200e54221d2004201b7c201dad7c220320045420032004511b221d1b220d4280c8afa025544100427f2003201d1b2203501b0d00200641d8056a41106a2903002122202129030021232020290300210d201f290300211a20062903e005211b20062903d805211c4201212420062903f00521250c010b420021240240200d200384500d00200d200310d402200641c8086a2003370300200641c0086a200d37030020064190086a41086a41013a000020064199086a2001290000370000200641a1086a200141086a290000370000200641a9086a200141106a290000370000200641b1086a200141186a290000370000200641033a00900820064190086a10cb010b0b2010201e7d21102011200f7d21032019ad2111200641f8046a201a37030020064180056a200d370300200641e0046a201b37030020064188056a2023370300200641e8046a2022370300200620253703f00420062018370390052006201c3703d804410021192006201741002015420151221d1b22173a009c05200620164100201d1b221d36029805200620244201512216ad3703d004024020160d002014ad4220862013ad8410044200210d4200210f0c010b410410272216450d042016201d360000201641044108102b2216450d04201620173a0004201641084115102b2216450d042016201c3700052016410d6a201b370000200641f0046a290300210f200641e8046a290300211520164115412a102b2216450d04201620153700152016411d6a200f3700002016412a41d400102b2216450d042016201a3700252016412d6a200d3700002016413d6a20064190056a290300370000201620064188056a2903003700352014ad4220862013ad842016ad4280808080d008841003201610294200210f4201210d0b024020062802c404450d00201310290b0240024020190d00024002400240201241ff017122120d00200d4200510d004103211920064190076a21120c010b2012450d01200d4200520d014104211920064190066a21120b201241086a20193a0000201241003a0000201241096a2001290000370000201241116a200141086a290000370000201241196a200141106a290000370000201241216a200141186a290000370000201210cb010b4100211220114201520d01200641c8086a2004370300200641c0086a200e3703004100211220064190086a41086a41003a000020064199086a2001290000370000200641a1086a200141086a290000370000200641a9086a200141106a290000370000200641b1086a200141186a290000370000200641033a00900820064190086a10cb010c010b200d4208862012ad42ff018384200f84210342002110410121120b20064180026a41086a2903002104200629038002210d20062903b802210e20064190066a41206a2201200541206a29030037030020064190066a41186a2219200541186a29030037030020064190066a41106a2213200541106a29030037030020064190066a41086a2216200541086a290300370300200620052903003703900641838c0821052012450d010b20034280807c83210d200342088842ff018321042003a7210c410121010c010b20064190076a41186a2016290300220f37030020064190076a41206a2013290300370300200641b8076a22052019290300370300200641c0076a22122001290300370300200620062903900622113703a0072006200d37039007200620043703980702400240427f200d20117c22112011200d5422012004200f7c2001ad7c220d200454200d2004511b22011b22044280c8afa025544100427f200d20011b220d501b0d00200641a0076a290300211a2012290300211520052903002104200641b0076a290300210d200629039807210f20062903900721114201211b20062903a80721180c010b4200211b02402004200d84500d002004200d10d402200641c8086a200d370300200641c0086a200437030020064190086a41086a41013a000020064199086a2002290000370000200641a1086a200241086a290000370000200641a9086a200241106a290000370000200641b1086a200241186a290000370000200641033a00900820064190086a10cb010b0b200641d8016a200d370300200641e0016a2004370300200641c0016a200f370300200641e8016a2015370300200641c8016a201a370300200620183703d0012006200e3703f001200620113703b801410021012006200b4100200942015122051b22123a00fc012006200a410020051b22193602f8012006201b4201512205ad3703b001024020050d002008ad4220862007ad8410044200210441838c0821054200210d0c010b410410272205450d0120052019360000200541044108102b2205450d01200520123a0004200541084115102b2205450d01200520113700052005410d6a200f370000200641d0016a290300210e200641c8016a290300210f20054115412a102b2205450d012005200f3700152005411d6a200e3700002005412a41d400102b2205450d012005200d3700252005412d6a20043700002005413d6a200641f0016a2903003700002005200641e8016a2903003700352008ad4220862007ad842005ad4280808080d008841003200510294200210d4201210441838c0821050b024020062802a401450d00200710290b20010d01024002400240200c41ff017122010d0020044200510d0041032105200641c0036a21010c010b2001450d0120044200520d0141042105200641c0026a21010b200141086a20053a0000200141003a0000200141096a2002290000370000200141116a200241086a290000370000200141196a200241106a290000370000200141216a200241186a290000370000200110cb010b200041106a2010370300200041086a2003370300200041003602000c020b1030000b20002005360204200041086a2004420886200cad42ff018384200d84370200200041013602000b20064190096a24000b8f0c06037f027e027f0c7e037f067e23004180036b22042400200328020021052004200110a80220044180016a200428020022032004280208220610a9022004290380012107420021082004420037038001200441c8016a280200210920042d00cc01210a0240024020074201510d00200441106a41306a4200370300200441106a41286a4200370300200441106a41206a4200370300200441106a41186a4200370300200441206a4200370300200441186a4200370300200442003703104200210b4200210c4200210d4200210e0c010b200441b8016a290300210f20044180016a41306a290300211020044180016a41206a290300210b20044180016a41186a2903002108200441c0016a290300210e200429039001210d200429038801210c200441106a41206a20044180016a41286a290300370300200441106a41286a2010370300200441106a41306a200f370300200441206a20083703002004200b3703282004200c3703102004200d3703180b200441106a41186a200b200241086a2903002211200b20082002290300221256200b201156200b2011511b22021b22137d20082012200820021b221054ad7d22143703002004200820107d22153703202004427f200d20137c200c20107c2216200c542202ad7c220f2002200f200d54200f200d511b22021b220f3703182004427f201620021b2216370310200441c8006a41186a2014370300200441c8006a41206a2217200441106a41206a290300370300200441c8006a41286a2218200441106a41286a290300370300200441c8006a41306a2219200441106a41306a2903003703002004200f370350200420163703482004201537035802400240427f201620157c221520152016542202200f20147c2002ad7c2214200f542014200f511b22021b22154280c8afa025544100427f201420021b221a501b0d00200441d8006a290300211b2019290300211c201829030021152017290300211a2004290350211d2004290348211e420121142004290360211f0c010b4200211402402015201a84500d002015201a10d402200441b8026a201a370300200441b0026a201537030020044180026a41086a41013a000020044189026a200529000037000020044191026a200541086a29000037000020044199026a200541106a290000370000200441a1026a200541186a290000370000200441033a00800220044180026a10cb010b0b200441a8016a201a370300200441b0016a201537030020044190016a201d370300200441b8016a201c37030020044198016a201b3703002004201f3703a0012004200e3703c0012004201e370388012004200a4100200742015122021b22053a00cc0120042009410020021b22093602c801200420144201512202ad3703800102400240024020020d002006ad4220862003ad8410040c010b410410272202450d0120022009360000200241044108102b2202450d01200220053a0004200241084115102b2202450d012002201e3700052002410d6a201d370000200441a0016a290300211d20044198016a290300211e20024115412a102b2202450d012002201e3700152002411d6a201d3700002002412a41d400102b2202450d012002201a3700252002412d6a20153700002002413d6a200441c0016a2903003700002002200441b8016a2903003700352006ad4220862003ad842002ad4280808080d008841003200210290b201120137d21112012201054ad2113427f200c20087c22082008200c542202200d200b7c2002ad7c2208200d542008200d511b22021b427f200820021b8450210202402004280204450d00200310290b201120137d210d2002ad2108201220107d210b2014420152210202400240024020074201510d0020020d004103210320044180026a21020c010b20074201522002410173720d014104210320044180016a21020b200241086a20033a0000200241003a0000200241096a2001290000370000200241116a200141086a290000370000200241196a200141106a290000370000200241216a200141186a290000370000200210cb010b2000200b3703182000201637030820002008370300200041206a200d370300200041106a200f37030020044180036a24000f0b1030000b1300200041043602042000418cb9c3003602000b3400200041dcbec50036020420004100360200200041146a4104360200200041106a41f0d2c300360200200041086a42083702000b830101017f0240411010272202450d002002420037000820024200370000200241104120102b2202450d0020024200370010200241186a42003700002002412041c000102b2202450d002002420037003020024200370020200042c0808080800837020420002002360200200241386a4200370000200241286a42003700000f0b1030000b130020004101360204200041e8dac3003602000b900301077f230041106b220324000240024002400240200141027441046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b2003410036020820032005360200200320043602042001200310710240024020010d002003280208210120032802042106200328020021070c010b200141027421084100200328020822016b21052003280204210403402000280200210902400240200420056a4104490d0020032802002107200421060c010b200141046a22072001490d05200441017422062007200620074b1b22064100480d050240024020040d00024020060d00410121070c020b2006102722070d010c080b2003280200210720042006460d00200720042006102b2207450d070b2003200636020420032007360200200621040b200041046a2100200720016a20093600002003200141046a22013602082005417c6a21052008417c6a22080d000b0b20022902002001ad4220862007ad84100302402006450d00200710290b200341106a24000f0b1038000b1039000b1032000b1030000bf40201067f230041106b2203240002400240024002402001412c6c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420012003107102402001450d0020002001412c6c6a21060340200028020021070240024020032802042205200328020822016b4104490d00200328020021040c010b200141046a22042001490d05200541017422082004200820044b1b22084100480d050240024020050d00024020080d00410121040c020b2008102722040d010c080b2003280200210420052008460d00200420052008102b2204450d070b20032008360204200320043602000b200420016a20073600002003200141046a360208200041046a200310f3022000412c6a22002006470d000b0b200328020421002002290200200335020842208620032802002201ad84100302402000450d00200110290b200341106a24000f0b1038000b1039000b1032000b1030000bb904010b7f230041106b22032400024002400240024020014103744104722204417f4c0d00200410272205450d012003410036020820032004360204200320053602002001200310710240024020010d0020032802082101200328020021060c010b200020014103746a21074100200328020822086b210920032802042104410021010340200820016a210a200020016a220b280200210c02400240200420096a4104490d0020032802002106200421050c010b200a41046a2205200a490d05200441017422062005200620054b1b22054100480d050240024020040d00024020050d00410121060c020b2005102722060d010c080b2003280200210620042005460d00200620042005102b2206450d070b20032005360204200320063602000b200620086a20016a200c3600002003200a41046a2204360208200b41046a280200210c02400240200520096a417c6a41034d0d00200521040c010b200441046a220d2004490d0520054101742204200d2004200d4b1b22044100480d050240024020050d00024020040d00410121060c020b200410272206450d080c010b20052004460d00200620052004102b2206450d070b20032004360204200320063602000b200620086a20016a41046a200c3600002003200a41086a360208200941786a2109200141086a2101200b41086a2007470d000b200820016a21010b2003280204210420022902002001ad4220862006ad84100302402004450d00200610290b200341106a24000f0b1038000b1039000b1032000b1030000b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000b960503037f027e057f230041106b220224002002410036020820024201370300200028021021030240410410272204450d0020024104360204200220043602002004200336000020024104360208200041146a2802002103200441044108102b2204450d0020024108360204200420033600042002200436020020024108360208200041086a290300210520002903002106200441084118102b2204450d0020042006370008200441106a200537000020022004360200200242988080808003370204024041000d00200441184138102b2204450d010b20042000290024370018200441206a2000412c6a290000370000200441286a200041346a290000370000200441306a2000413c6a29000037000020024138360204200220043602002002413836020820002802182104200041206a28020022002002107102400240024020000d002002280208210020022802042107200228020021080c010b200041057421094100200228020822006b210a2002280204210b034002400240200b200a6a4120490d0020022802002108200b21070c010b200041206a22032000490d03200b41017422082003200820034b1b22074100480d0302400240200b0d00024020070d00410121080c020b2007102722080d010c060b20022802002108200b2007460d002008200b2007102b2208450d050b20022007360204200220083602002007210b0b200820006a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002002200041206a2200360208200a41606a210a200441206a2104200941606a22090d000b0b20012902002000ad4220862008ad84100302402007450d00200810290b200241106a24000f0b1032000b1030000b1100419cf7ca00412841b8a1cc001033000bbd0c03037f017e077f230041306b22022400024002400240024002400240024002400240024020012d0000417f6a220341044b0d0020030e050102030405010b419cf7ca00412841b8a1cc001033000b2001410c6a2802002204ad42a8027e2205422088a70d052005a72203417f4c0d05200141046a28020021064108210102402003450d00200310272201450d070b20024100360218200220013602102002200341a8026e360214200241106a41002004109a0120022802102103200241206a41086a200228021822013602002002200241106a41086a36022420022003200141a8026c6a36022020062006200441a8026c6a200241206a10f603200241086a200228021822033602002002200229031022053703002000410c6a2003360200200041046a2005370200200041013a00000c040b200141026a2f0100210441a80210272203450d062003200141046a28020010f703200041046a2003360200200041026a20043b0100200041023a00000c030b2001410c6a280200220741ffffff3f712007470d0320074105742204417f4c0d03200141026a2f01002108200141046a28020021090240024020040d00410121060c010b200410272206450d050b41002103200241003602282002200636022020022004410576360224200241206a41002007109e012002280228210a02402007450d002007410574210b2002280220200a4105746a210c0340200c20036a2204200920036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200b200341206a2203470d000b200741057441606a410576200a6a41016a210a0b200241186a2204200a36020020022002290320370310200141186a2802002106200141146a28020021092001280210210b41a80210272203450d0520032001411c6a28020010f703200041026a20083b01002000411c6a2003360200200041186a2006360200200041146a2009360200200041106a200b360200200041033a0000200041046a20022903103702002000410c6a20042802003602000c020b2001412c6a280200220741ffffff3f712007470d0220074105742204417f4c0d02200141226a2f01002108200141246a28020021090240024020040d00410121060c010b200410272206450d040b41002103200241003602282002200636022020022004410576360224200241206a41002007109e012002280228210a02402007450d002007410574210b2002280220200a4105746a210c0340200c20036a2204200920036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200b200341206a2203470d000b200741057441606a410576200a6a41016a210a0b200241186a200a360200200220022903202205370310200041226a20083b0100200041246a20053702002000412c6a200a360200200041043a0000200041386a200141386a280200360200200041306a200129023037020020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c010b2001412c6a280200220741ffffff3f712007470d0120074105742204417f4c0d01200141226a2f01002108200141246a28020021090240024020040d00410121060c010b200410272206450d030b41002103200241003602282002200636022020022004410576360224200241206a41002007109e012002280228210a02402007450d002007410574210b2002280220200a4105746a210c0340200c20036a2204200920036a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200b200341206a2203470d000b200741057441606a410576200a6a41016a210a0b200241186a200a360200200220022903202205370310200041226a20083b0100200041246a20053702002000412c6a200a360200200041053a0000200041306a20012902303702002000200141016a290000370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000b200241306a24000f0b1038000b1039000b1030000bec3c130d7f017e077f027e017f037e027f017e017f037e057f047e047f047e047f037e017f027e027f230041f0046b22032400200241086a2802002104200228020421050240024002400240024020002001460d0020022802002102200341f1026a2106200341a8036a2107200341ed026a210820034180036a2109200341e0026a210a200341ac036a210b200341dc026a210c03404115210d4100210e02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1c01020c03040506070c08090a0b0c0d0e0f101112131a141516171800010b200341d0026a200041086a10f803200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120032802d802210f20032903d002211020032802f002211120032802f4022112411b210d0c190b200341d0026a200041086a10f903200341d0016a41086a200c41086a2802003602002003200c2902003703d00120032802d802210f20032903d00221104100210e4100210d0c180b200341d0026a200041046a10fa03200341d0016a41086a200a41086a290200370300200341d0016a41106a200a41106a2d00003a0000200341cc016a41026a200641026a2d00003a00002003200a2902003703d001200320062f00003b01cc0120032802d002220e410876211320032802dc02210f20032902d40221104101210d0c160b200041086a29030021104103210d0c160b02400240024002400240024020002d0004417f6a220f41034b0d00200f0e0401020304010b419cf7ca00412841b8a1cc001033000b200041086a280200210f4101210e201421110c030b200041106a2800002115200041086a2900002110200041076a2d0000210f20002f00052113200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2900003703002003200041146a2900003703d0022013200f411074722116200041286a28020021112010a7210f2010422088a721174102210e0c020b200041086a280200210f4103210e201421110c010b200041106a2800002115200041086a2900002110200041076a2d0000210f20002f00052113200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2900003703002003200041146a2900003703d0022013200f411074722116200041286a28020021112010a7210f2010422088a721174104210e0b200341d0016a41106a200341d0026a41106a2d00003a0000200341d0016a41086a200341d0026a41086a290300370300200341cc016a41026a200341026a2d00003a0000200320032903d0023703d001200320032f00003b01cc012017ad422086200fad8421104104210d201121142015210f201621130c150b02400240024002400240024002400240200041086a22132d0000417f6a220f41034b0d00200f0e0401020304010b419cf7ca00412841b8a1cc001033000b200041106a280000210f2000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a2013411f6a2d00003a00002003200041146a2900003703d00220032013411d6a2f00003b0100201a41807e71200041286a2d000072211a20192010201842108684422086842110200041386a290300211b200041306a29030021194201211c0c030b200041106a280000210f2000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a2013411f6a2d00003a00002003200041146a2900003703d00220032013411d6a2f00003b0100201a41807e71200041286a2d000072211a20192010201842108684422086842110200041386a290300211b200041306a2903002119200041c0006a2903002118200041c8006a290300221da7211e201d422088a7211f4202211c0c030b200041106a280000210f2000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a2013411f6a2d00003a00002003200041146a2900003703d00220032013411d6a2f00003b0100201e41807e71200041c8006a2d000072211e20192010201842108684422086842110200041386a290000211b200041306a2900002119200041d8006a2903002120200041d0006a290300211d200041c0006a29000021182000412c6a2800002112200041286a280000211a4203211c2021211f0c030b200041106a280000210f2000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a2013411f6a2d00003a00002003200041146a2900003703d00220032013411d6a2f00003b0100201a41807e71200041286a2d000072211a20192010201842108684422086842110200041386a290300211b200041306a29030021194204211c0b202221182021211f0b2023211d20242120202521120b200341d0016a41106a200341d0026a41106a2d00003a0000200341d0016a41086a200341d0026a41086a290300370300200341cc016a41026a200341026a2d00003a0000200320032903d0023703d001200320032f01003b01cc012010420886201c8421102018422888a721264105210d20182122201f2121201d21232020212420122125201a2111201e21270c140b200341d0026a200041046a10fb0320032802d002220e410876211320032902d40221104106210d0c120b200341d0026a200041086a10a302200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b200341a0036a29030021202003418c036a31000021182003418f036a2d0000211320032903f8022119200329039803211d20032802d802210f20032903d002211020032802f002211120032802f40221122003280290032127200328029403211f200335028803211c20032f008d03210d2003200741b80110e4071a200d2013411074722126201c20184220868421184107210d0c120b0240024020002802040d004100210e0c010b200341086a2000411c6a290000370300200041106a280200210f200341106a200041246a2d00003a0000200341d2016a200041276a2d00003a00002003200041146a290000370300200320002f00253b01d0012000412c6a2802002128200041286a2802002129200041386a290200212a200041306a290200212b200041d8006a290200212c200041d0006a290200212d200041c8006a2802002127200041cc006a280200212e200041c0006a3502002110200041c4006a3100002118200041c5006a2f0000212f200041c7006a2d00002130200341d0026a41086a200041e8006a290000370300200a200041f0006a290000370000200a41086a200041f8006a290000370000200a41106a20004180016a290000370000200a41186a20004188016a2900003700002003200041e0006a2900003703d002200941186a200041a8016a290000370000200941106a200041a0016a290000370000200941086a20004198016a290000370000200920004190016a2900003700002000410c6a2802002213417f4c0d15200028020421110240024020130d004100210d4101210e0c010b20131027220e450d182013210d0b02400240200d2013490d00200d21260c010b200d41017422262013202620134b1b22264100480d170240200d0d0020261027220e0d010c1a0b200d2026460d00200e200d2026102b220e450d190b202f203041107472213120102018422086842132200e2011201310e4071a200341b8026a41106a200341106a2d00003a0000200341b8026a41086a200341086a290300370300200341b4026a41026a200341d0016a41026a2d00003a0000200320032903003703b802200320032f01d0013b01b402200341e4016a200341d0026a41d00010e4071a2013ad4220862026ad8421100b200341d0016a41106a200341b8026a41106a2d00003a0000200341d0016a41086a200341b8026a41086a290300370300200341cc016a41026a200341b4026a41026a2d00003a0000200320032903b8023703d001200320032f01b4023b01cc012003200341e4016a41d00010e4071a200e41087621134109210d202b2119202a211b203221182028211220312126202d211d202c2120202e211f202921110c110b2000280204220e4108762113410a210d0c100b200341d0026a200041086a10fc03200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b200341a0036a29030021202003418c036a31000021182003418f036a2d0000211320032903f8022119200329039803211d20032802d802210f20032903d002211020032802f002211120032802f40221122003280290032127200328029403211f200335028803211c20032f008d03210d2003200741c00110e4071a200d2013411074722126201c2018422086842118410b210d0c0f0b200341d0026a200041046a10fd03200341d0016a41086a200a41086a290200370300200341d0016a41106a200a41106a2d00003a0000200341cc016a41026a200641026a2d00003a00002003200a2902003703d001200320062f00003b01cc0120034184036a290200211b200341a4036a290200212020034190036a310000211820034193036a2d0000210d20032902fc022119200329029c03211d20032802dc02210f20032902d402211020032802f402211120032802f80221122003280294032127200328029803211f200335028c03211c20032f009103212620032802d002210e200341086a200b41086a2802003602002003200b290200370300200e41087621132026200d411074722126201c2018422086842118410c210d0c0e0b10f403000b200341d0026a200041086a10fe03200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b20032903f802211920032802d802210f20032903d002211020032802f002211120032802f4022112410e210d0c0c0b200341d0026a200041086a10ff03200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b20032903f802211920032802d802210f20032903d002211020032802f002211120032802f4022112410f210d0c0b0b200341d0026a200041086a10ff03200341d0016a41086a200c41086a2902003703004110210d200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b20032903f802211920032802d802210f20032903d002211020032802f002211120032802f40221120c0a0b200341d0026a200041086a108004200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120032802d802210f20032903d002211020032802f002211120032802f402211220032903f80221194111210d0c090b0240024002400240024002400240024020002d0004417f6a220d41064b0d004107210e200d0e0701020304050607010b419cf7ca00412841b8a1cc001033000b200041106a280200210f200041086a2902002110200041076a2d0000211320002f0005210d200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2902003703002003200041146a2902003703d002200d20134110747221134101210e0c050b200041106a280200210f200041086a2902002110200041076a2d0000211320002f0005210d200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2902003703002003200041146a2902003703d002200d20134110747221134102210e0c040b200041106a280200210f200041086a2902002110200041076a2d0000211320002f0005210d200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a290200370300200341026a200041046a222741236a2d00003a00002003200041146a2902003703d0022003202741216a2f00003b0100200041c0006a350000200041c4006a310000422086842133200d2013411074722113200041386a2900002134200041306a29000021352000412c6a2800002136200041286a28000021374103210e0c030b200041106a280200223041ffffff3f712030470d0e2030410574220f417f4c0d0e200041086a280200210e02400240200f0d004101210d0c010b200f1027220d450d110b41002113200341003602d8022003200d3602d0022003200f4105763602d402200341d0026a41002030109e0120032802d802210f02402030450d002030410574212620032802d002200f4105746a212f0340202f20136a220d200e20136a2227290000370000200d41186a202741186a290000370000200d41106a202741106a290000370000200d41086a202741086a2900003700002026201341206a2213470d000b203041057441606a410576200f6a41016a210f0b20032903d00221104104210e0c020b200041106a280200210f200041086a2902002110200041076a2d0000211320002f0005210d200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2902003703002003200041146a2902003703d002200d20134110747221134105210e0c010b200041106a280200210f200041086a2902002110200041076a2d0000211320002f0005210d200341d0026a41106a200041246a2d00003a0000200341d0026a41086a2000411c6a2902003703002003200041146a2902003703d002200d20134110747221134106210e0b200341d0016a41106a200341d0026a41106a2d00003a0000200341d0016a41086a200341d0026a41086a290300370300200341cc016a41026a200341026a2d00003a0000200320032903d0023703d001200320032f01003b01cc014112210d203521192034211b2033211820362112203721110c070b200341d0026a200041086a108204200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120032f008d032003418f036a2d00004110747221262003350288032003418c036a31000042208684211820034180036a290300211b20032903f802211920032802d802210f20032903d002211020032802f002211120032802f40221124113210d0c070b200341d0026a200041046a108304200341d0016a41086a200a41086a290200370300200341d0016a41106a200a41106a2d00003a0000200341cc016a41026a200641026a2d00003a00002003200a2902003703d001200320062f00003b01cc0120034184036a290200211b200341a4036a290200212020034190036a310000211820034193036a2d0000210d20032902fc022119200329029c03211d20032802dc02210f20032902d402211020032802f402211120032802f80221122003280294032127200328029803211f200335028c03211c20032f009103212620032802d002210e2003200b41c40110e4071a200e41087621132026200d411074722126201c20184220868421184114210d0c060b200341d0026a200041086a108404200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120032f008d032003418f036a2d00004110747221262003350288032003418c036a31000042208684211820034180036a290300211b20032903f802211920032802d802210f20032903d002211020032802f002211120032802f40221124116210d0c050b200341d0026a200041046a108504200341d0016a41086a200a41086a290200370300200341d0016a41106a200a41106a2d00003a0000200341cc016a41026a200641026a2d00003a00002003200a2902003703d001200320062f00003b01cc0120032802d002220e410876211320032f00910320034193036a2d0000411074722126200335028c0320034190036a31000042208684211820034184036a290200211b20032902fc02211920032802dc02210f20032902d402211020032802f402211120032802f802211220032802940321274117210d0c040b200341d0026a200041086a108604200341d0016a41086a200c41086a290200370300200341d0016a41106a200c41106a2d00003a0000200341cc016a41026a200841026a2d00003a00002003200c2902003703d001200320082f00003b01cc0120034180036a290300211b200341a0036a29030021202003418c036a31000021182003418f036a2d0000211320032903f8022119200329039803211d20032802d802210f20032903d002211020032802f002211120032802f40221122003280290032127200328029403211f200335028803211c20032f008d03210d200341106a200741106a290200370300200341086a200741086a29020037030020032007290200370300200d2013411074722126201c20184220868421184118210d0c030b0240024002400240200041086a220f2d0000417f6a221341024b0d004201211020130e03030102030b419cf7ca00412841b8a1cc001033000b200041106a28000021382000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a200f411f6a2d00003a00002003200041146a2900003703d0022003200f411d6a2f00003b0100203941807e71200041286a2d00007221392019201020184210868442208684213a420221100c010b200041106a28000021382000410d6a33000021102000410f6a310000211820003500092119200341d0026a41106a200041246a2d00003a0000200341d8026a2000411c6a290000370300200341026a200f411f6a2d00003a00002003200041146a2900003703d0022003200f411d6a2f00003b0100203b42808080807083200041d0006a35020084213b203941807e71200041286a2d00007221392019201020184210868442208684213a200041c0006a290300223c422888200041c8006a290300221042188684a7213d200041386a290300213e200041306a290300213f2010a721402010422088a72141420321100b200341d0016a41106a200341d0026a41106a2d00003a0000200341d0016a41086a200341d0026a41086a290300370300200341cc016a41026a200341026a2d00003a0000200320032903d0023703d001200320032f01003b01cc01203a42088620108421104119210d203f2119203e211b203c2118203d2126203b211d2041211f203921112038210f204021270c020b200341d0026a200041046a10f503200341d0016a41086a200a41086a290200370300200341d0016a41106a200a41106a2d00003a0000200341cc016a41026a200641026a2d00003a00002003200a2902003703d001200320062f00003b01cc0120032802d002220e410876211320034184036a290200211b20032902fc02211920032802dc02210f20032902d402211020032802f402211120032802f8022112411a210d0b0b200341d0026a41106a222f200341d0016a41106a2d00003a0000200341d0026a41086a2230200341d0016a41086a290300370300200320032903d0013703d00220022013410874200e41ff017172360204200220103703082002200f360210200220032f01cc013b00252002200d360200200241276a200341ce016a2d00003a0000200220032903d0023702142002411c6a2030290300370200200241246a202f2d00003a0000200241c7006a20264110763a0000200220263b0045200241c4006a20184220883c0000200220183e0040200241d8006a20203702002002201d370250200241386a201b370000200220193700302002201f36024c200220273602482002201236002c20022011360028200241e0006a200341c80110e4071a200441016a2104200241a8026a2102200041a8026a22002001470d000b0b20052004360200200341f0046a24000f0b1038000b1032000b1039000b1030000bf01f03047f067e027f230041c0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c01020c03040506070c08090a0b0c0d0e0f1011121314151617181900010b200241a0016a200141086a10f8032000411b360200200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c190b200241a0016a200141086a10f90320004100360200200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c180b200241a0016a200141046a10fa0320004101360200200041246a200241c0016a2802003602002000411c6a200241b8016a290300370200200041146a200241b0016a2903003702002000410c6a200241a8016a290300370200200020022903a0013702040c170b20004103360200200041086a200141086a2903003703000c160b02400240024002400240024020012d0004417f6a220341034b0d00200141046a210420030e0401020304010b419cf7ca00412841b8a1cc001033000b200141086a2802002103410121050c030b41022105200241026a200441036a2d00003a0000200241a0016a41086a200141146a290200370300200241b0016a2001411c6a290200370300200241b8016a200141246a2d00003a0000200220042f00013b010020022001410c6a2902003703a001200141086a2802002103200141286a28020021010c020b200141086a2802002103410321050c010b200241026a200441036a2d00003a0000200241a0016a41086a200141146a290200370300200241b0016a2001411c6a290200370300200241b8016a200141246a2d00003a0000200220042f00013b010020022001410c6a2902003703a001200141086a2802002103200141286a2802002101410421050b200020053a0004200020022f01003b000520004104360200200041086a20033602002000410c6a20022903a001370200200041286a2001360200200041076a200241026a2d00003a0000200041146a200241a0016a41086a2903003702002000411c6a200241b0016a290300370200200041246a200241b8016a2802003602000c150b02400240024002400240024002400240200141086a22032d0000417f6a220541034b0d0020050e0401020304010b419cf7ca00412841b8a1cc001033000b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141386a2903002106200141306a2903002107410121010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141c8006a2903002108200141c0006a2903002109200141386a2903002106200141306a2903002107410221010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a0012002200341216a2800003602002002200341246a280000360003200141c8006a3100002108200141c0006a2902002109200141386a2902002106200141306a2902002107200141d8006a290300210a200141d0006a290300210b410321010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141386a2903002106200141306a2903002107410421010b0b0b200020022903a0013700092000200228020036002920004105360200200041d8006a200a370300200041d0006a200b370300200041c8006a2008370300200041c0006a2009370300200041386a2006370300200041306a2007370300200041086a20013a00002000412c6a2002280003360000200041116a200241a0016a41086a290300370000200041196a200241b0016a290300370000200041216a200241b8016a2903003700000c140b200241a0016a200141046a10fb03200041063602002000410c6a200241a8016a280200360200200020022903a0013702040c130b200241a0016a200141086a10a302200041086a200241a0016a41900210e4071a200041073602000c120b024002402001280204220c0d00410021030c010b200241a0016a41186a200141286a290000370300200241a0016a41106a200141206a290000370300200241a8016a200141186a290000370300200241a0016a41286a200141386a290000370300200241a0016a41306a200141c0006a290000370300200241a0016a41386a200141c8006a290000370300200241a0016a41c8006a200141d8006a290000370300200241a0016a41d0006a200141e0006a290000370300200241a0016a41d8006a200141e8006a2900003703002002200141106a2900003703a0012002200141306a2900003703c0012002200141d0006a2900003703e001200241a0016a41f8006a20014188016a290000370300200241a0016a41f0006a20014180016a290000370300200241a0016a41e8006a200141f8006a290000370300200241a0016a4198016a200141a8016a290000370300200241a0016a4190016a200141a0016a290000370300200241a0016a4188016a20014198016a2900003703002002200141f0006a29000037038002200220014190016a2900003703a0022001410c6a2802002201417f4c0d130240024020010d0041002105410121030c010b200110272203450d15200121050b0240024020052001490d00200521040c010b200541017422042001200420014b1b22044100480d16024020050d002004102722030d010c180b20052004460d00200320052004102b2203450d170b2003200c200110e4071a2002200241a0016a41a00110e4071a0b200020033602042000410c6a2001360200200041086a2004360200200041106a200241a00110e4071a200041093602000c110b2000410a360200200020012802043602040c100b200241a0016a200141086a10fc03200041086a200241a0016a41980210e4071a2000410b3602000c0f0b200241a0016a200141046a10fd03200041046a200241a0016a41e80010e4071a2000410c3602000c0e0b10f403000b200241a0016a200141086a10fe032000410e360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0c0b200241a0016a200141086a10ff032000410f360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0b0b200241a0016a200141086a10ff0320004110360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0a0b200241a0016a200141086a10800420004111360200200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c090b200241a0016a200141046a108104200041046a200241a0016a41c40010e4071a200041123602000c080b200241a0016a200141086a10820420004113360200200041c0006a200241a0016a41386a290300370300200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c070b200241a0016a200141046a108304200041046a200241a0016a41a00210e4071a200041143602000c060b200041153602000c050b200241a0016a200141086a10840420004116360200200041c0006a200241a0016a41386a290300370300200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c040b200241a0016a200141046a108504200041046a200241a0016a41c80010e4071a200041173602000c030b200241a0016a200141086a108604200041086a200241a0016a41f00010e4071a200041183602000c020b4102210c0240024002400240200141086a22032d0000417f6a220d41024b0d0041012105200d0e03030201030b419cf7ca00412841b8a1cc001033000b200141c8006a2903002107200141c0006a2903002106200141386a2903002109200141306a2903002108200141d0006a28020021044103210c0b200241b8016a200341196a290000370300200241b0016a200341116a290000370300200241a8016a200341096a290000370300200220032900013703a001200c21050b200020022903a0013700092000200228000036002920004119360200200041c8006a2007370300200041c0006a2006370300200041386a2009370300200041306a2008370300200041086a20053a0000200041d0006a2004360200200041116a200241a0016a41086a290300370000200041196a200241b0016a290300370000200041216a200241b8016a2903003700002000412c6a200241036a2800003600000c010b200241a0016a200141046a10f5032000411a3602002000413c6a200241d8016a280200360200200041346a200241d0016a2903003702002000412c6a200241c8016a290300370200200041246a200241c0016a2903003702002000411c6a200241b8016a290300370200200041146a200241b0016a2903003702002000410c6a200241a8016a290300370200200020022903a0013702040b200241c0036a24000f0b1038000b1039000b1032000b1030000b940301057f230041206b22022400024002400240024002400240024020012d0000417f6a220341034b0d0020030e0401020304010b419cf7ca00412841b8a1cc001033000b41a80210272203450d042003200141046a28020010a806200041013a0000200041046a20033602000c030b41a80210272203450d032003200141046a28020010a806200041046a2003360200200041023a0000200041086a200141086a2903003703000c020b200041033a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c010b200241186a2204200141196a290000370300200241106a2205200141116a290000370300200241086a2206200141096a2900003703002002200129000137030041a80210272203450d012003200141246a28020010a806200041246a2003360200200041043a0000200041196a2004290300370000200041116a2005290300370000200041096a2006290300370000200020022903003700010b200241206a24000f0b1030000ba00a03057f017e017f230041306b2202240002400240024002400240024002400240024002400240024002400240024002402001280200417f6a220341094b0d0020030e0a0102030405060708090a010b419cf7ca00412841b8a1cc001033000b20004101360200200020012802043602040c090b2001410c6a2802002203417f4c0d09200128020421040240024020030d0041002101410121050c010b200310272205450d0b200321010b0240024020012003490d00200121060c010b200141017422062003200620034b1b22064100480d0c024020010d002006102722050d010c0e0b20012006460d00200520012006102b2205450d0d0b20052004200310e40721012000410c6a2003360200200041086a200636020020002001360204200041023602000c080b20004103360200200041086a200141086a2903003703000c070b2001410c6a2802002203417f4c0d07200128020421040240024020030d0041002101410121050c010b200310272205450d09200321010b0240024020012003490d00200121060c010b200141017422062003200620034b1b22064100480d0a024020010d00200610272205450d0c0c010b20012006460d00200520012006102b2205450d0b0b20052004200310e40721012000410c6a2003360200200041086a200636020020002001360204200041043602000c060b2001410c6a2802002203417f4c0d06200128020421040240024020030d0041002101410121050c010b200310272205450d08200321010b0240024020012003490d00200121060c010b200141017422062003200620034b1b22064100480d09024020010d00200610272205450d0b0c010b20012006460d00200520012006102b2205450d0a0b20052004200310e40721012000410c6a2003360200200041086a200636020020002001360204200041053602000c050b20004106360200200020012902043702042000410c6a2001410c6a2802003602000c040b2001410c6a2802002205ad42187e2207422088a70d042007a72206417f4c0d04200128020421030240024020060d00410421010c010b200610272201450d060b20024100360210200220013602082002200641186e36020c200241086a410020051099012002280210210402402005450d002003200541186c6a21062002280208200441186c6a2101200541037441786a4103762108200241186a410c6a21050340200241186a200310f10520052003410c6a10f105200141106a200241186a41106a290300370200200141086a200241186a41086a29030037020020012002290318370200200141186a2101200341186a22032006470d000b200420086a41016a21040b200241206a20043602002002200229030822073703182000410c6a200436020020002007370204200041073602000c030b200241186a200141046a10b504200041083602002000410c6a200241186a41086a280200360200200020022903183702040c020b2001410c6a2802002203417f4c0d02200128020421080240024020030d0041002106410121040c010b200310272204450d04200321060b0240024020062003490d00200621050c010b200641017422052003200520034b1b22054100480d05024020060d00200510272204450d070c010b20062005460d00200420062005102b2204450d060b20042008200310e40721062000410c6a2003360200200041086a20053602002000200636020420004109360200200041106a20012802103602000c010b2000410a3602000b200241306a24000f0b1038000b1039000b1032000b1030000bdd0501097f02400240024002400240024002400240024020012d0000417f6a220241034b0d0020020e0401020304010b419cf7ca00412841b8a1cc001033000b200141106a28020021032001410c6a2802002104200141086a2802002105200141046a280200210620012d0001210741a80210272202450d062002200141146a28020010c401200041106a20033602002000410c6a2004360200200041086a2005360200200041046a2006360200200041146a2002360200200020073a0001200041013a00000f0b200041023a0000200041046a200141046a2902003702000f0b2001410c6a2802002202417f4c0d01200141046a28020021060240024020020d0041002103410121050c010b200210272205450d03200221030b0240024020032002490d00200321040c010b200341017422042002200420024b1b22044100480d04024020030d002004102722050d010c060b20032004460d00200520032004102b2205450d050b20052006200210e40721052001411c6a2802002106200141186a280200210720012d00012108200128021421092001280210210a41a80210272203450d042003200141206a28020010c4012000411c6a2006360200200041186a2007360200200041146a2009360200200041106a200a3602002000410c6a2002360200200041086a2004360200200041046a2005360200200041206a2003360200200020083a0001200041033a00000f0b2001410c6a2802002202417f4c0d00200141046a28020021050240024020020d0041002101410121040c010b200210272204450d02200221010b0240024020012002490d00200121030c010b200141017422032002200320024b1b22034100480d03024020010d00200310272204450d050c010b20012003460d00200420012003102b2204450d040b20042005200210e40721012000410c6a2002360200200041086a2003360200200041046a2001360200200041043a00000f0b1038000b1039000b1032000b1030000ba10e03027f017e177f230041a0016b22022400024002400240024020012802082203ad42f0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410421010c010b200510272201450d020b20024100360208200220013602002002200541f0006e3602042002410020031097012002280208210502402003450d002006200341f0006c6a21072002280200200541f0006c6a21082005200341047441706a4104766a21090340200241d0006a41086a220a200641186a290000370300200241d0006a41106a220b200641206a290000370300200241d0006a41186a220c200641286a290000370300200241306a41086a220d200641386a29000037030020062900102104200241306a41106a220e200641c0006a290000370300200241306a41186a220f200641c8006a290000370300200241106a41186a2210200641e8006a290000370300200241106a41106a2211200641e0006a290000370300200241106a41086a2212200641d8006a290000370300200220043703502002200629003037033020022006290050370310200628020c2205ad42247e2204422088a70d022004a72203417f4c0d0220062802002113200628020421140240024020030d00410421010c010b200310272201450d040b20024100360278200220013602702002200341246e360274200241f0006a410020051096012002280278211502402005450d00200541246c21162002280270201541246c6a211741002101034002400240024002400240024002400240201420016a22032d00000e06010203040500010b2003410c6a2802002218417f4c0d0b200341046a28020021190240024020180d0041002103410121050c010b201810272205450d0d201821030b0240024020032018490d002003211a0c010b2003410174221a2018201a20184b1b221a4100480d0e024020030d00201a102722050d010c100b2003201a460d0020052003201a102b2205450d0f0b200220052019201810e40736009301410521190c050b2002200341046a28000036009b012002200341016a280000360298012002200341146a290000370380012002200341196a290000370085012002200228029801360290012002200228009b0136009301200341086a280000211a2003410c6a2800002118200341106a2800002105410021190c050b200341106a2802002205417f4c0d09200341086a2802002119200341016a280000211b0240024020050d00410021034101211a0c010b20051027221a450d0b200521030b0240024020032005490d00200321180c010b200341017422182005201820054b1b22184100480d0c024020030d0020181027221a450d0e0c010b20032018460d00201a20032018102b221a450d0d0b201a2019200510e4071a2002201b36029001410121190c040b200341106a2802002205417f4c0d08200341086a2802002119200341016a280000211b0240024020050d00410021034101211a0c010b20051027221a450d0a200521030b0240024020032005490d00200321180c010b200341017422182005201820054b1b22184100480d0b024020030d0020181027221a450d0d0c010b20032018460d00201a20032018102b221a450d0c0b201a2019200510e4071a2002201b36029001410221190c030b200341106a2802002205417f4c0d07200341086a2802002119200341016a280000211b0240024020050d00410021034101211a0c010b20051027221a450d09200521030b0240024020032005490d00200321180c010b200341017422182005201820054b1b22184100480d0a024020030d0020181027221a450d0c0c010b20032018460d00201a20032018102b221a450d0b0b201a2019200510e4071a2002201b36029001410321190c020b410421192002200341046a280200360093012003410c6a2802002118200341086a280200211a0b0b201720016a220320193a0000200341016a200228029001360000200341046a200228009301360000200341106a20053602002003410c6a2018360200200341086a201a360200200341146a2002290380013702002003411c6a20024180016a41086a290300370200201541016a21152016200141246a2201470d000b0b20024180016a41086a2015360200200220022903702204370380012008410c6a20153602002008200437020420082002290350370210200841186a200a29030037020020082013360200200841206a200b290300370200200841286a200c29030037020020082002290330370230200841386a200d290300370200200841c0006a200e290300370200200841c8006a200f290300370200200841e8006a2010290300370200200841e0006a2011290300370200200841d8006a201229030037020020082002290310370250200841f0006a2108200641f0006a22062007470d000b200941016a21050b20002002290300370200200041086a2005360200200241a0016a24000f0b1038000b1039000b1032000b1030000b9e0a03027f047e047f230041e0036b22022400200141106a220329030021042001290300210520012903082106200241f0016a41186a200141f8016a290000370300200241f0016a41106a200141f0016a290000370300200241f8016a200141e8016a2900003703002002200141e0016a2900003703f001420121070240024020064201520d0020024190026a410c6a200341146a29020037020020024190026a41146a2003411c6a29020037020020024190026a411c6a200341246a29020037020020024190026a412c6a200341346a29020037020020024190026a41346a2003413c6a29020037020020024190026a413c6a200341c4006a29020037020020024190026a41c4006a200341cc006a29020037020020024190026a41cc006a200341d4006a29020037020020024190026a41d4006a200341dc006a29020037020020024190026a41dc006a200341e4006a29020037020020022003410c6a290200370294022002200141186a2802003602900220022003412c6a2902003702b402200241f8026a410c6a20014188016a290200370200200241f8026a41146a20014190016a290200370200200241f8026a411c6a20014198016a290200370200200220014180016a2902003702fc022002200128027c3602f802200241f8026a210320024190026a21080c010b20024190026a410c6a200341146a29020037020020024190026a41146a2003411c6a29020037020020024190026a411c6a200341246a29020037020020024190026a412c6a200341346a29020037020020024190026a41346a2003413c6a29020037020020024190026a413c6a200341c4006a29020037020020024190026a41c4006a200341cc006a29020037020020024190026a41cc006a200341d4006a29020037020020024190026a41d4006a200341dc006a29020037020020024190026a41dc006a200341e4006a29020037020020022003410c6a290200370294022002200141186a2802003602900220022003412c6a2902003702b402200241f8026a410c6a20014188016a290200370200200241f8026a41146a20014190016a290200370200200241f8026a411c6a20014198016a290200370200200220014180016a2902003702fc022002200128027c3602f80242002107200241f8026a210320024190026a21080b200341dc006a200141d8016a290200370200200341d4006a200141d0016a290200370200200341cc006a200141c8016a290200370200200341c4006a200141c0016a2902003702002003413c6a200141b8016a290200370200200341346a200141b0016a2902003702002003412c6a200141a8016a2902003702002003200141a0016a290200370224200241086a2209200241f0016a41086a290300370300200241106a220a200241f0016a41106a290300370300200241186a220b200241f0016a41186a290300370300200220022903f00137030020024188016a200841e40010e4071a200241206a200341e40010e4071a2001280280022103200241f8026a20014184026a10b504200041106a2004370300200020073703082000200537030020014190026a2802002101200041186a20024188016a41e40010e4071a200041fc006a200241206a41e40010e4071a200020033602800220004190026a2001360200200041f8016a200b290300370300200041f0016a200a290300370300200041e8016a2009290300370300200041e0016a200229030037030020004184026a20022903f8023702002000418c026a200241f8026a41086a280200360200200241e0036a24000ba50301077f230041106b2202240002400240024002402001410c6a2802002203417f4c0d0020012802042104200128020021050240024020030d0041002106410121070c010b200310272207450d02200321060b0240024020062003490d00200621080c010b200641017422082003200820034b1b22084100480d03024020060d002008102722070d010c050b20062008460d00200720062008102b2207450d040b20072004200310e40721062002200141106a10f3052000410c6a2003360200200041086a20083602002000200636020420002005360200200041106a2002290300370200200041186a200241086a280200360200200020012802243602242000200129021c37021c20002001290228370228200041306a200141306a290200370200200041386a200141386a290200370200200041c0006a200141c0006a290200370200200041c8006a200141c8006a290200370200200041d0006a200141d0006a290200370200200041d8006a200141d8006a290200370200200041e0006a200141e0006a290200370200200241106a24000f0b1038000b1039000b1032000b1030000bce1503037f027e027f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a2203411e4b0d0020030e1f0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f010b419cf7ca00412841b8a1cc001033000b200041013a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c1e0b200041023a0000200041046a200141046a2902003702000c1d0b200141046a28020021044101210302400240200141086a2d00004101470d00200141286a2903002105200141206a29030021060c010b200141096a2d000041017121072001410a6a2d00002108410021030b200041033a0000200041286a2005370300200041206a2006370300200041106a20012903103703002000410a6a20083a0000200041096a20073a0000200041086a20033a0000200041046a20043602002000410b6a2002280006360000200041186a200141186a2903003703002000410f6a200241066a41046a2d00003a00000c1c0b200141046a28020021044101210302400240200141086a2d00004101470d00200141286a2903002105200141206a29030021060c010b200141096a2d000041017121072001410a6a2d00002108410021030b200041043a0000200041286a2005370300200041206a2006370300200041106a20012903103703002000410a6a20083a0000200041096a20073a0000200041086a20033a0000200041046a20043602002000410b6a200228000b360000200041186a200141186a2903003703002000410f6a2002410b6a41046a2d00003a00000c1b0b200041053a0000200041046a200141046a2802003602000c1a0b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c190b200041073a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c180b200041083a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c170b200041093a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2902003702000c160b2000410a3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c150b2000410b3a0000200041046a200141046a2802003602000c140b2000410c3a0000200041046a200141046a2802003602000c130b2000410d3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c120b2000410e3a00000c110b2000410f3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c100b200041103a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000c0f0b200041113a00000c0e0b200041123a00000c0d0b2001410c6a2802002203417f4c0d0d200141046a28020021070240024020030d0041002101410121080c010b200310272208450d0f200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d10024020010d002004102722080d010c120b20012004460d00200820012004102b2208450d110b20082007200310e40721012000410c6a2003360200200041086a2004360200200041046a2001360200200041133a00000c0c0b2001410c6a2802002203417f4c0d0c200141046a28020021070240024020030d0041002101410121080c010b200310272208450d0e200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d0f024020010d00200410272208450d110c010b20012004460d00200820012004102b2208450d100b20082007200310e40721012000410c6a2003360200200041086a2004360200200041046a2001360200200041143a00000c0b0b2001410c6a2802002203417f4c0d0b200141046a28020021070240024020030d0041002101410121080c010b200310272208450d0d200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d0e024020010d00200410272208450d100c010b20012004460d00200820012004102b2208450d0f0b20082007200310e40721012000410c6a2003360200200041086a2004360200200041046a2001360200200041153a00000c0a0b2001410c6a2802002203417f4c0d0a200141046a28020021070240024020030d0041002101410121080c010b200310272208450d0c200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d0d024020010d00200410272208450d0f0c010b20012004460d00200820012004102b2208450d0e0b20082007200310e40721012000410c6a2003360200200041086a2004360200200041046a2001360200200041163a00000c090b200041173a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c080b200041183a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c070b200041193a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c060b2000411a3a0000200041046a200141046a2802003602000c050b2000411b3a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c040b2000411c3a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000c030b2000411d3a00000c020b2000411e3a0000200041046a200141046a2802003602000c010b2000411f3a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000b200241106a24000f0b1038000b1039000b1032000b1030000b8a0701097f230041306b22022400024002400240024002400240024002400240024020012d0000417f6a220341044b0d0020030e050102030405010b419cf7ca00412841b8a1cc001033000b2001412c6a280200220441ffffff3f712004470d0520044105742205417f4c0d05200141246a28020021060240024020050d00410121070c010b200510272207450d070b41002103200241003602182002200736021020022005410576360214200241106a41002004109e012002280218210802402004450d0020044105742109200228021020084105746a210a0340200a20036a2205200620036a2207290000370000200541186a200741186a290000370000200541106a200741106a290000370000200541086a200741086a2900003700002009200341206a2203470d000b200441057441606a41057620086a41016a21080b200241086a220520083602002002200229031037030041002103024020012d00014101470d00200241286a2001411a6a290000370300200241206a200141126a290000370300200241106a41086a2001410a6a2900003703002002200141026a290000370310410121030b200020033a0001200041013a0000200041246a2002290300370200200041026a2002290310370000200041306a20012802303602002000412c6a20052802003602002000410a6a200241106a41086a290300370000200041126a200241206a2903003700002000411a6a200241286a2903003700000c040b41a80210272203450d062003200141046a28020010f703200041046a2003360200200041023a0000200041086a200141086a2802003602000c030b200141046a280200210541a80210272203450d052003200141086a28020010f703200041086a2003360200200041046a2005360200200041033a00002000410c6a2001410c6a2802003602000c020b200041043a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a280200360200200041216a200141216a2d00004100473a00000c010b200041053a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041306a200141306a290300370300200041246a200141246a2902003702000b200241306a24000f0b1038000b1039000b1030000b910502097f017e230041206b22022400024002400240024002400240024002400240024020012d0000417f6a220341054b0d0020030e06010203040506010b419cf7ca00412841b8a1cc001033000b2001410c6a280200220441ffffff3f712004470d0620044105742205417f4c0d06200141046a28020021060240024020050d00410121070c010b200510272207450d080b41002103200241003602182002200736021020022005410576360214200241106a41002004109e012002280218210802402004450d0020044105742109200228021020084105746a210a0340200a20036a2205200620036a2207290000370000200541186a200741186a290000370000200541106a200741106a290000370000200541086a200741086a2900003700002009200341206a2203470d000b200441057441606a41057620086a41016a21080b200241086a200836020020022002290310220b370300200041046a200b3702002000410c6a2008360200200041013a0000200041186a200141186a290300370300200041106a20012903103703000c050b200041023a00000c040b200041033a0000200041046a200141046a2902003702002000410c6a2001410c6a290200370200200041146a200141146a2902003702002000411c6a2001411c6a290200370200200041246a200141246a2902003702000c030b200041043a0000200041046a200141046a2802003602000c020b200041053a0000200041046a200141046a2902003702000c010b200041063a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00004100473a00000b200241206a24000f0b1038000b1039000ba60602087f017e230041206b220224000240024002400240024002400240024002400240024020012d0000417f6a220341064b0d0020030e0701020304050607010b419cf7ca00412841b8a1cc001033000b200041013a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c060b200041023a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c050b200041033a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000c040b2001410c6a280200220441ffffff3f712004470d0420044105742203417f4c0d04200141046a28020021050240024020030d00410121060c010b200310272206450d060b41002101200241003602182002200636021020022003410576360214200241106a41002004109e012002280218210702402004450d0020044105742108200228021020074105746a21090340200920016a2203200520016a2206290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002008200141206a2201470d000b200441057441606a41057620076a41016a21070b200241086a200736020020022002290310220a3703002000410c6a2007360200200041046a200a370200200041043a00000c030b200041053a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c020b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c010b200041073a00000b200241206a24000f0b1038000b1039000bde0701057f024002400240024002400240024002400240024002400240024020012d0000417f6a220241074b0d0020020e080102030405060708010b419cf7ca00412841b8a1cc001033000b200041013a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041023a0000200041046a200141046a2802003602000f0b200041033a0000200041046a200141046a2802003602000f0b2001412c6a2802002202417f4c0d04200141246a28020021030240024020020d0041002104410121050c010b200210272205450d06200221040b0240024020042002490d00200421060c010b200441017422062002200620024b1b22064100480d07024020040d002006102722050d010c090b20042006460d00200520042006102b2205450d080b20052003200210e40721042000412c6a2002360200200041286a2006360200200041246a2004360200200041043a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041053a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b2001412c6a2802002202417f4c0d02200141246a28020021030240024020020d0041002104410121050c010b200210272205450d04200221040b0240024020042002490d00200421060c010b200441017422062002200620024b1b22064100480d05024020040d00200610272205450d070c010b20042006460d00200520042006102b2205450d060b20052003200210e40721042000412c6a2002360200200041286a2006360200200041246a2004360200200041063a0000200041386a200141386a290300370300200041306a200129033037030020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041073a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041083a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b1038000b1039000b1032000b1030000bd22408027f017e187f017e067f017e0e7f017e230041a0036b22022400024002400240024002400240024002402001280200417f6a220341014b0d0020030e020102010b419cf7ca00412841b8a1cc001033000b2001410c6a2802002203ad4290027e2204422088a70d022004a72205417f4c0d02200128020421060240024020050d00410821010c010b200510272201450d040b2002410036024820022001360240200220054190026e360244200241c0006a4100200310a5012002280248210702402003450d00200620034190026c6a2108200228024020074190026c6a2109200241a0026a41186a210a200241a0026a41106a210b200241a0026a41086a210c200241e0026a41286a210d200241e0026a41206a210e03402006280248210f200a200641f0006a290000370300200b200641e8006a290000370300200c200641e0006a290000370300200220062900583703a002200641d4006a2802002210417f4c0d04200628024c21050240024020100d0041002103410121010c010b201010272201450d06201021030b0240024020032010490d00200321110c010b200341017422122010201220104b1b22114100480d07024020030d002011102722010d010c090b20032011460d00200120032011102b2201450d080b20012005201010e4072113200241c0026a41186a221420064190016a290000370300200241c0026a41106a221520064188016a290000370300200241c0026a41086a221620064180016a290000370300200220062900783703c002200241e0026a41386a2212200641d0016a290000370300200241e0026a41306a2217200641c8016a290000370300200d200641c0016a290000370300200e200641b8016a290000370300200241e0026a41186a2218200641b0016a290000370300200241e0026a41106a2219200641a8016a290000370300200241e0026a41086a2205200641a0016a29000037030020022006290098013703e002200241186a221a200641f0016a290000370300200241106a221b200641e8016a290000370300200241086a221c200641e0016a290000370300200220062900d801370300200641086a29030021042006290300211d200241b0016a200641106a10f005200241f0006a41186a221e200641c0006a290000370300200241f0006a41106a221f200641386a290000370300200241f0006a41086a2220200641306a2900003703002002200629002837037002400240200628021c22210d00410021220c010b200641246a2802002203417f4c0d050240024020030d0041002101410121220c010b200310272222450d07200321010b0240024020012003490d00200121230c010b200141017422232003202320034b1b22234100480d08024020010d00202310272222450d0a0c010b20012023460d00202220012023102b2222450d090b20222021200310e4071a2003ad4220862023ad8421240b20024190026a41086a2221200241b0016a41086a2223280200360200200241f0016a41086a22252020290300370300200241f0016a41106a2226201f290300370300200241f0016a41186a2227201e290300370300200241d0016a41086a2228200c290300370300200241d0016a41106a2229200b290300370300200241d0016a41186a222a200a290300370300200220022903b00137039002200220022903703703f001200220022903a0023703d001200241b0016a41186a222b2014290300370300200241b0016a41106a222c201529030037030020232016290300370300200220022903c0023703b001200241f0006a41386a222d2012290300370300200241f0006a41306a222e2017290300370300200241f0006a41286a222f200d290300370300200241f0006a41206a2230200e290300370300201e2018290300370300201f201929030037030020202005290300370300200220022903e002370370200241d0006a41186a2231201a290300370300200241d0006a41106a2232201b290300370300200241d0006a41086a221b201c290300370300200220022903003703502006280280022216ad42c1007e2233422088a70d042033a72201417f4c0d0420062802f80121030240024020010d00410121140c010b200110272214450d060b20024100360208200220143602002002200141c1006e36020420024100201610a2012002280208211a02402016450d002003201641c1006c6a21152002280200201a41c1006c6a2101034020032d000021142012200341396a2900003703002017200341316a290000370300200d200341296a290000370300200e200341216a2900003703002018200341196a2900003703002019200341116a2900003703002005200341096a2900003703002002200341016a2900003703e002200120143a0000200141016a20022903e002370000200141096a2005290300370000200141116a2019290300370000200141196a2018290300370000200141216a200e290300370000200141296a200d290300370000200141316a2017290300370000200141396a2012290300370000200141c1006a2101200341c1006a22032015470d000b201a20166a211a0b2005201a360200200220022903003703e00220062802840221180240024020064188026a280200220141037622120d004101211741002103410021120c010b4101210302402012410820014107716b22174d0d0041024101201220176b22034107711b20034103766a21030b200310272217450d0602404101450d00200321120c010b200341017422122003201220034b1b22124100480d07024020030d00201210272217450d090c010b20032012460d00201720032012102b2217450d080b20172018200310e407210320092002290390023703102009202236021c200941186a2021280200360200200920043703082009201d3703002009202437022020092010360254200920113602502009201336024c2009200f360248200920022903f001370328200941306a2025290300370300200941386a2026290300370300200941c0006a2027290300370300200941f0006a202a290300370300200941e8006a2029290300370300200941e0006a2028290300370300200920022903d001370358200920022903b00137037820094180016a202329030037030020094188016a202c29030037030020094190016a202b290300370300200941d0016a202d290300370300200941c8016a202e290300370300200941c0016a202f290300370300200941b8016a2030290300370300200941b0016a201e290300370300200941a8016a201f290300370300200941a0016a20202903003703002009200229037037039801200941f0016a2031290300370300200941e8016a2032290300370300200941e0016a201b290300370300200920022903503703d80120094180026a2005280200360200200920022903e0023703f8012009201236028c0220092001360288022009200336028402200741016a210720094190026a210920064190026a22062008470d000b0b200241e8026a20073602002002200229034022043703e0022000410c6a200736020020002004370204200041013602000c010b200241a0026a41186a200141d4006a290000370300200241a0026a41106a200141cc006a290000370300200241a0026a41086a200141c4006a29000037030020022001413c6a2900003703a002200141046a21030240024002400240200141dc006a2d00000e03010200010b200241e0026a41186a200341f1006a290000370300200241e0026a41106a200341e9006a290000370300200241e0026a41086a200341e1006a2900003703002002200341d9006a2900003703e0024102210d200241e0026a21050c020b200241e0026a41186a200341f1006a290000370300200241e0026a41106a200341e9006a290000370300200241e0026a41086a200341e1006a2900003703002002200341d9006a2900003703e0024100210d200241e0026a21050c010b200241e0026a41186a200341f1006a290000370300200241e0026a41106a200341e9006a290000370300200241e0026a41086a200341e1006a2900003703002002200341d9006a2900003703e0024101210d200241e0026a21050b200241c0026a41186a200541186a290000370300200241c0026a41106a200541106a290000370300200241c0026a41086a200541086a290000370300200220052900003703c002200241e0026a41086a20034181016a290000370300200241e0026a41106a20034189016a290000370300200241e0026a41186a20034191016a29000037030020024180036a20034199016a29000037030020024188036a200341a1016a29000037030020024190036a200341a9016a29000037030020024198036a200341b1016a2900003703002002200341f9006a2900003703e002024002400240024020032d00b9010e03010200010b200241f0006a41186a200341d2016a290000370300200241f0006a41106a200341ca016a290000370300200241f0006a41086a200341c2016a2900003703002002200341ba016a2900003703704102210e200241f0006a21050c020b200241f0006a41186a200341d2016a290000370300200241f0006a41106a200341ca016a290000370300200241f0006a41086a200341c2016a2900003703002002200341ba016a2900003703704100210e200241f0006a21050c010b200241f0006a41186a200341d2016a290000370300200241f0006a41106a200341ca016a290000370300200241f0006a41086a200341c2016a2900003703002002200341ba016a2900003703704101210e200241f0006a21050b200241b0016a41186a2212200541186a290000370300200241b0016a41106a2217200541106a290000370300200241b0016a41086a2218200541086a290000370300200220052900003703b001200241086a2205200341e2016a290000370300200241106a2219200341ea016a290000370300200241186a2209200341f2016a290000370300200241206a2214200341fa016a290000370300200241286a220620034182026a290000370300200241306a22152003418a026a290000370300200241386a221020034192026a2900003703002002200341da016a29000037030020012802042103200241d0006a200141086a10b504200241f0016a41086a2216200241a0026a41086a290300370300200241f0016a41106a221e200241a0026a41106a290300370300200241f0016a41186a221f200241a0026a41186a290300370300200241d0016a41086a2220200241c0026a41086a290300370300200241d0016a41106a221a200241c0026a41106a290300370300200241d0016a41186a2223200241c0026a41186a290300370300200241f0006a41386a2222200241e0026a41386a290300370300200241f0006a41306a2211200241e0026a41306a290300370300200241f0006a41286a2207200241e0026a41286a290300370300200241f0006a41206a220a200241e0026a41206a290300370300200241f0006a41186a220b200241e0026a41186a290300370300200241f0006a41106a220c200241e0026a41106a290300370300200241f0006a41086a220f200241e0026a41086a290300370300200220022903a0023703f001200220022903c0023703d001200220022903e002370370200141146a290200210420002003360204200041086a2002290350370200200041106a200241d0006a41086a280200360200200041146a20043702002000413c6a20022903f001370200200041c4006a2016290300370200200041cc006a201e290300370200200041d4006a201f2903003702002000411c6a2001411c6a290200370200200041246a200141246a2902003702002000412c6a2001412c6a290200370200200041346a200141346a290200370200200041dc006a200d3a0000200041f5006a2023290300370000200041ed006a201a290300370000200041e5006a2020290300370000200020022903d00137005d200041b5016a2022290300370000200041ad016a2011290300370000200041a5016a20072903003700002000419d016a200a29030037000020004195016a200b2903003700002000418d016a200c29030037000020004185016a200f2903003700002000200229037037007d2000200e3a00bd01200041d6016a2012290300370000200041ce016a2017290300370000200041c6016a2018290300370000200020022903b0013700be0120004196026a20102903003700002000418e026a201529030037000020004186026a2006290300370000200041fe016a2014290300370000200041f6016a2009290300370000200041ee016a2019290300370000200041e6016a2005290300370000200020022903003700de01200041023602000b200241a0036a24000f0b1038000b1039000b1032000b1030000b930701087f230041206b2202240002400240024002400240024002400240024002400240024020012d0000417f6a220341054b0d0020030e06010203040506010b419cf7ca00412841b8a1cc001033000b200041013a0000200041046a200141046a2902003702000c050b200041023a0000200041206a200141206a290300370300200041186a200141186a2903003703002000410c6a2001410c6a290200370200200041046a200141046a2902003702000c040b200041033a0000200041186a200141186a290300370300200041106a200141106a2903003703002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c030b200041043a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c020b200141286a2802002104200141246a2802002105200241186a200141196a290000370300200241106a200141116a290000370300200241086a200141096a29000037030020022001290001370300200141386a2802002203417f4c0d02200141306a28020021062001412c6a28020021070240024020030d0041002101410121080c010b200310272208450d04200321010b0240024020012003490d00200121090c010b200141017422092003200920034b1b22094100480d05024020010d002009102722080d010c070b20012009460d00200820012009102b2208450d060b20082006200310e4072101200041286a2004360200200041246a2005360200200041386a2003360200200041346a2009360200200041306a20013602002000412c6a2007360200200041053a000020002002290300370001200041096a200241086a290300370000200041116a200241106a290300370000200041196a200241186a2903003700000c010b200141106a2802002203417f4c0d01200141086a2802002104200141046a28020021050240024020030d0041002101410121080c010b200310272208450d03200321010b0240024020012003490d00200121090c010b200141017422092003200920034b1b22094100480d04024020010d00200910272208450d060c010b20012009460d00200820012009102b2208450d050b20082004200310e4072101200041106a20033602002000410c6a2009360200200041086a2001360200200041046a2005360200200041063a00000b200241206a24000f0b1038000b1039000b1032000b1030000bbc0801097f02400240024002400240024002400240024002400240024020012d0000417f6a220241064b0d0020020e0701020304050607010b419cf7ca00412841b8a1cc001033000b200141106a2802002202417f4c0d06200141086a2802002103200141046a280200210420012d000121050240024020020d0041002106410121070c010b200210272207450d08200221060b0240024020062002490d00200621080c010b200641017422082002200820024b1b22084100480d09024020060d002008102722070d010c0b0b20062008460d00200720062008102b2207450d0a0b20072003200210e40721092001411c6a2802002206417f4c0d062001280214210a0240024020060d0041002101410121030c010b200610272203450d08200621010b0240024020012006490d00200121070c010b200141017422072006200720064b1b22074100480d09024020010d00200710272203450d0b0c010b20012007460d00200320012007102b2203450d0a0b2003200a200610e40721012000411c6a2006360200200041186a2007360200200041146a2001360200200041106a20023602002000410c6a2008360200200041086a2009360200200041046a2004360200200041013a00002000200541ff01714101463a00010f0b200041023a0000200041046a200141046a2802003602000f0b200041033a0000200041046a200141046a2802003602000f0b2001410c6a2802002202417f4c0d03200141046a28020021030240024020020d0041002106410121070c010b200210272207450d05200221060b0240024020062002490d00200621080c010b200641017422082002200820024b1b22084100480d06024020060d00200810272207450d080c010b20062008460d00200720062008102b2207450d070b20072003200210e4072104200141186a2802002206417f4c0d03200128021021050240024020060d0041002101410121030c010b200610272203450d05200621010b0240024020012006490d00200121070c010b200141017422072006200720064b1b22074100480d06024020010d00200710272203450d080c010b20012007460d00200320012007102b2203450d070b20032005200610e4072101200041186a2006360200200041146a2007360200200041106a20013602002000410c6a2002360200200041086a2008360200200041046a2004360200200041043a00000f0b20002001290001370001200041c4006a200141c4006a280200360200200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a290000370000200041053a00000f0b200041063a00000f0b200041073a0000200041046a200141046a2802003602000f0b1038000b1039000b1032000b1030000bcd0803037f037e027f230041f0006b22022400024002400240024002400240024002400240024020012d0000417f6a220341034b0d0020030e0401020304010b419cf7ca00412841b8a1cc001033000b20002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a41c10010e4071a200041013a00000c030b200241086a41106a2203200141116a280000360200200241086a41086a2204200141096a29000037030020022001290001370308200141206a2903002105200141186a2903002106420021070240200141286a2903004201520d00200241286a41206a200141d0006a290300370300200241286a41186a200141c8006a290300370300200241286a41106a200141c0006a290300370300200241286a41086a200141386a2903003703002002200141306a290300370328420121070b20002002290308370001200041206a2005370300200041186a2006370300200041286a2007370300200041306a2002290328370300200041096a2004290300370000200041116a2003280200360000200041386a200241286a41086a290300370300200041c0006a200241286a41106a290300370300200041c8006a200241286a41186a290300370300200041d0006a200241286a41206a29030037030020012d00152101200041023a0000200041156a4102200141004720014102461b3a00000c020b200241206a200141196a290000370300200241186a200141116a290000370300200241106a200141096a29000037030020022001290001370308200241286a200141216a41c10010e4071a200141ec006a2802002203417f4c0d02200141e4006a28020021080240024020030d0041002101410121090c010b200310272209450d04200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d05024020010d002004102722090d010c070b20012004460d00200920012004102b2209450d060b20092008200310e4072101200041196a200241206a290300370000200041116a200241186a290300370000200041096a200241106a29030037000020002002290308370001200041216a200241286a41c10010e4071a200041ec006a2003360200200041e8006a2004360200200041e4006a2001360200200041033a00000c010b2001410c6a2802002203417f4c0d01200141046a28020021080240024020030d0041002101410121090c010b200310272209450d03200321010b0240024020012003490d00200121040c010b200141017422042003200420034b1b22044100480d04024020010d00200410272209450d060c010b20012004460d00200920012004102b2209450d050b20092008200310e40721012000410c6a2003360200200041086a2004360200200041046a2001360200200041043a00000b200241f0006a24000f0b1038000b1039000b1032000b1030000bbd1103077f017e0e7f230041e0076b2203240041002104200341003602a803200320023602a403200320013602a0034101210541012106024002400240024002400240024002400240024002400240024002400240024002400240024002402002450d0041012107200341013602a803024020012d000022080d000c020b0240024002400240024002400240024002400240024002400240200841c00171220741c001460d0002402007418001460d0041012106200741c000470d0e410121072008413f712204413f470d0541022107414121044101210603402007417f6a20024f0d0f200320073602a803200120076a417f6a2d0000220841ff01470d05200441817e6a2104200741016a2207418302470d000b2007417f6a210741ffff032104410121090c0c0b4200210a410121072008413f712204413f470d0641022107414121044101210603402007417f6a20024f0d0e200320073602a803200120076a417f6a2d0000220841ff01470d06200441817e6a2104200741016a2207418302470d000b2007417f6a21074200210a0c010b428002210a410121072008413f712204413f470d0541022107414121044101210603402007417f6a20024f0d0d200320073602a803200120076a417f6a2d0000220841ff01470d02200441817e6a2104200741016a2207418302470d000b2007417f6a2107428002210a0b200a50210841ffff032104410121090c050b200820046b21040c030b200820046b21040b200441017122090d060c070b200820046b21040b200a50210820044101712209450d010b200720024f0d0141002106200120076a2d000041104f0d050b410121062007200441016a4101766a220b20024b0d042003200b3602a803200b41026a220420024b0d04200320043602a803200b417e4f0d012001200b6a2f0000210c410021044100210d024020080d00200341106a200341a0036a10880420032802100d0520032802a803220e20032802146a220f20032802a4034b0d052003200f3602a8034101210d0b200341023602f402200341023602e802200341023602dc02200341023602d002200341023602c402200341023602b802200341023602ac02200341023602a00220034102360294022003410236028802200341023602fc01200341023602f001200341023602e401200341023602d801200341023602cc01200341023602c001200341c0016a210603400240200c41012004410f71747141ffff0371450d00200341086a200341a0036a1088040240024020032802080d0020032802a8032210200328020c22116a220820032802a4034d0d010b410121060c070b200320083602a803200641086a2008360200200641046a2010360200200620114120473602000b2006410c6a2106200441016a22044110470d000b200341a0066a200341c0016a41c00110e4071a410421040c050b200720024190dcc30010360c060b200b200441f0dbc300104c000b200720024f0d0341002106200120076a2d000041104f0d010b410121062007200441016a4101766a220b20024b0d002003200b3602a8032003200341a0036a10880420032802000d0020032802a803220d20032802046a220e20032802a4034b0d002003200e3602a803200341a0066a200341c0016a41c00110e4071a410121040c010b200341a0036a200341a0066a41c00110e4071a200020063a00010c0e0b200341a0036a200341a0066a41c00110e4071a200341c0016a41186a200f360200200341c0016a41146a200e360200200341c0016a41106a200d360200200341c0016a410c6a2009360200200341c0016a41086a200b360200200320073602c401200320043602c001200341c0016a411c6a200341a0036a41c00110e4072112410021054100211320040e050c020101030c0b200720024180dcc3001036000b000b200b2007490d01200b20024b0d02200e200d490d03200e20024b0d04200b20076b2114200120076a21152001200d6a2116200e200d6b2117410121130c090b200341023602d407200341023602c807200341023602bc07200341023602b007200341023602a40720034102360298072003410236028c072003410236028007200341023602f406200341023602e806200341023602dc06200341023602d006200341023602c406200341023602b806200341023602ac06200341023602a006410021060340410221080240201220066a2204280200410246220c0d0041002004200c1b220841086a2802002104200841046a28020021100240024020082802004101470d0020042010490d0841012108200420024d0d012004200241b8a2cc00104b000b20042010490d0841002108200420024b0d090b200420106b2111200120106a21100b200341a0066a20066a22042008360200200441086a2011360200200441046a20103602002006410c6a220641c001460d080c000b0b2007200b41b0a3cc00104c000b200b200241b0a3cc00104b000b200d200e41c0a3cc00104c000b200e200241c0a3cc00104b000b2010200441b8a2cc00104c000b2010200441c8a2cc00104c000b2004200241c8a2cc00104b000b02400240200d4101460d00410021080c010b200f200e490d03200f20024b0d04200f200e6b21062001200e6a21080b200b2007490d04200b20024b0d05200341a8066a280200211820032802a406211720032802a0062116200341186a200341ac066a41a80110e4071a200b20076b2114200120076a2115200341dc076a2802002110200341d8076a280200211120032802d407210c410421130b2000411c6a2018360200200041186a2017360200200041146a2016360200200041106a20093602002000410c6a2014360200200041086a2015360200200041046a2013360200200041206a200341186a41a80110e4071a200041d8016a2006360200200041d4016a2008360200200041d0016a2010360200200041cc016a2011360200200041c8016a200c3602000b200020053a0000200341e0076a24000f0b200e200f41d0a3cc00104c000b200f200241d0a3cc00104b000b2007200b41b0a3cc00104c000b200b200241b0a3cc00104b000b890301077f41012102024002402001280208220341016a2204200128020422054d0d000c010b0240024002400240200320054f0d002001280200220620036a2d00002107200120043602080240200741037122084103460d0002400240024020080e03000102000b20074102762108410021020c070b0240200341026a220320054d0d000c070b200120033602082004417f460d03200620046a2d0000410874200772220141ffff0371418002490d06200141fcff03714102762108410021020c060b200341046a220320054b0d05200120033602082004417d4f0d03200620046a22012f0000200141026a2d000041107472410874200772220141808004492102200141027621080c050b0240200741034d0d000c050b200341056a220320054b0d04200120033602082004417c4f0d03200620046a28000022084180808080044921020c040b2003200541d09ccc001036000b417f200341dc9bcc00104c000b2004200341dc9bcc00104c000b2004200341dc9bcc00104c000b20002008360204200020023602000bc5a60107117f017e057f027e157f027e047f230041f00f6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341940d6a4101360200200342013702840d20034198e3ca003602800d2003410436029c05200341cce3ca0036029805200320034198056a3602900d200341800d6a4180a6cc001040000b200341e00c6a41086a200241186a290200370300200341ed0c6a2002411d6a2900003700002003200241106a2902003703e00c200241046a28020021042001410c6a2802002105200141086a2802002106200141046a28020021072002410c6a2802002108200241086a28020021094102210a200241026a2f0100210b20022d0001210c410121010240024002400240024020022d0000220d0e0400010204000b024002400240200c0e03000102000b4100210a410021010c050b200341c80f6a41106a200341e00c6a41106a2f01003b0100200341c80f6a41086a200341e00c6a41086a290300370300200320032903e00c3703c80f4101210a0b410021010c030b41012101200441ff01714101470d01200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f0020c010b41012101200441ff01714101470d00200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f0020b0b2004410876210e2007200541a8026c6a21022001200a7241ff01710d2820072101024002402005450d00200341e8096a41106a210f200341800d6a410472211020034198056a4104722111200441ff017121124100210a2007210103402001280200210520034198056a200141046a221341a40210e4071a200341800d6a201341a40210e4071a02402005411c470d00200141a8026a21010c2d0b200341e8096a200341800d6a41a40210e4071a200341c0076a200341e8096a41a40210e4071a200341f0026a200341c0076a41a40210e4071a200341c8006a200341f0026a41a40210e4071a20032005360298052011200341c8006a41a40210e4071a200320053602800d2010200341c8006a41a40210e4071a02400240024002400240200d0e0400010203000b41022105024002400240200c0e03000102000b410021050c010b200341c80f6a41106a200341e00c6a41106a2f01003b0100200341c80f6a41086a200341e00c6a41086a290300370300200320032903e00c3703c80f410121050b200f20032903c80f370000200f41086a200341c80f6a41086a290300370000200f41106a200341c80f6a41106a2f01003b0000200320083602f409200320093602f009200320043602ec092003200b3b01ea09200320053a00e909200341003a00e8090c030b4102210502400240024020120e03000102000b410021050c010b200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f002410121050b200f20032903f002370200200f41086a200341f0026a41086a290300370200200f41106a200341f0026a41106a290300370200200320083602f409200320093602f009200320053a00ec09200341013a00e8092003200e3b00ed092003200e4110763a00ef090c020b4102210502400240024020120e03000102000b410021050c010b200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f002410121050b200f20032903f002370200200f41086a200341f0026a41086a290300370200200f41106a200341f0026a41106a290300370200200320083602f409200320093602f009200320053a00ec09200341023a00e8092003200e3b00ed092003200e4110763a00ef090c010b200341033a00e809200320043602ec090b200341c0076a200341800d6a200341e8096a10c50120032903c0074201510d02200a41016a210a200141a8026a22012002470d000b200221010b200341800d6a20034198056a41a40210e4071a0c2a0b200141a8026a21010c2b0b410a210f4102210a200141046a280200210520022d00000d2420022d00014101470d242002411a6a2901002114200241196a2d00002113200241186a2d00002104200241166a2f01002107200241156a2d0000210e200241146a2d0000210d200241126a2f01002108200241116a2d00002109200241106a2d000021062002410e6a2f010021102002410d6a2d000021112002410c6a2d0000210c2002410a6a2f0100210b200241096a2d00002112200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f01002102200141026a2f010021194103210a02400240024020052802000e1c02020202022702020202020202022727272727270127272702000202020b4103210a200541086a2d00004103470d010c260b20052802044101470d250b411210272201450d03200141086a41002900a8dc43370000200141002900a0dc43370000200141124130102b2201450d1520012014370028200120133a0027200120043a0026200120073b00242001200e3a00232001200d3a0022200120083b0020200120093a001f200120063a001e200120103b001c200120113a001b2001200c3a001a2001200b3b0018200120123a0017200120153a0016200120163b0014200120173a0013200120183a0012200120023b00102001413041e000102b2202450d15200220193b00302002ad4280808080a00684101022012900002114200141086a290000211a200141106a290000211b200341e00c6a41186a220a200141186a290000370300200341e00c6a41106a220f201b370300200341e00c6a41086a2213201a370300200320143703e00c2001102920021029200341093a00a00d2003410a3a00a00d2003410b3a00a00d200320032f01e00c3b01800d200320032801e20c3601820d200320032f01e60c3b01860d200320132f01003b01880d200320032d00ea0c3a008a0d2003410c3a00a00d200320032d00eb0c3a008b0d2003410d3a00a00d200320032d00ec0c3a008c0d2003410e3a00a00d200320032d00ed0c3a008d0d2003410f3a00a00d200320032d00ee0c3a008e0d200341103a00a00d200320032d00ef0c3a008f0d200341113a00a00d2003200f2d00003a00900d200320032d00f10c3a00910d200341123a00a00d200341133a00a00d200320032d00f20c3a00920d200341143a00a00d200320032d00f30c3a00930d200341153a00a00d200320032d00f40c3a00940d200341163a00a00d200320032d00f50c3a00950d200341173a00a00d200320032d00f60c3a00960d200341183a00a00d200320032d00f70c3a00970d200341193a00a00d2003200a2d00003a00980d200320032d00f90c3a00990d2003411a3a00a00d2003411b3a00a00d200320032d00fa0c3a009a0d2003411c3a00a00d200320032d00fb0c3a009b0d2003411d3a00a00d200320032d00fc0c3a009c0d2003411e3a00a00d200320032d00fd0c3a009d0d2003411f3a00a00d200320032d00fe0c3a009e0d200341203a00a00d200320032d00ff0c3a009f0d20034198056a41186a220120032903980d37030020034198056a41106a220220032903900d37030020034198056a41086a220a20032903880d370300200320032903800d37039805200341c0076a41186a220f2001290300370300200341c0076a41106a22012002290300370300200341c0076a41086a2202200a29030037030020032003290398053703c007200341800d6a200541a80210e4071a20034198056a410a6a200229030037010020034198056a41126a200129030037010020034198056a411a6a200f29030037010020034180023b019805200320032903c00737019a05200341e8096a200341800d6a20034198056a10c50120032903e8094201520d2220032903f0094202510d22200341e8096a41206a280200210f200341e8096a411c6a2802002104200341e8096a41186a280200220a4180808078712101200a4180807c712102200a41807e7121130c230b200141086a280200210f200141046a28020021072001411c6a28020021054102210a024020022d00000d0020022d00014101470d002001410c6a2802002119200141186a280200211c200141146a280200211d200141106a280200211e200141026a2f0100211f200241196a2d00002101200241186a2d0000210a200241166a2f01002113200241156a2d00002104200241146a2d0000210e200241126a2f0100210d200241116a2d00002108200241106a2d000021092002410e6a2f010021062002410d6a2d000021102002410c6a2d000021112002410a6a2f0100210c200241096a2d0000210b200241086a2d00002112200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a2901003703a80c200320013a00a70c2003200a3a00a60c200320133b01a40c200320043a00a30c2003200e3a00a20c2003200d3b01a00c200320083a009f0c200320093a009e0c200320063b019c0c200320103a009b0c200320113a009a0c2003200c3b01980c2003200b3a00970c200320123a00960c200320153b01940c200320163a00930c200320173a00920c200320183b01900c02400240024020052802000e1c16161616160216161616161616160202020202020002020216011616160b20052802044101470d010c150b200541086a2d00004103470d140b410a21014182d5c2002102410c21134103210a0c140b0c130b200141286a280200210a200141246a28020021044102210520022d00000d0d20022d00014101470d0d200141196a2900002114200141186a2d0000211f200141176a2d0000211e200141156a2f0000211d200141146a2d0000211c200141136a2d00002120200141116a2f00002121200141106a2d000021222001410f6a2d000021232001410d6a2f000021242001410c6a2d000021252001410b6a2d00002126200141096a2f00002127200141086a2d00002128200141076a2d00002129200141056a2f0000212a200141046a2d0000212b200141036a2d0000212c2001412c6a280200210f200141386a280200212d200141346a280200212e200141306a280200212f200141226a2f0100210720012f00012130200241196a2d00002101200241186a2d00002105200241166a2f01002113200241156a2d0000210e200241146a2d0000210d200241126a2f01002108200241116a2d00002109200241106a2d000021062002410e6a2f010021102002410d6a2d000021112002410c6a2d0000210c2002410a6a2f0100210b200241096a2d00002112200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a290100370360200320013a005f200320053a005e200320133b015c2003200e3a005b2003200d3a005a200320083b0158200320093a0057200320063a0056200320103b0154200320113a00532003200c3a00522003200b3b0150200320123a004f200320153a004e200320163b014c200320173a004b200320183a004a200320193b0148024020070d0041abd6c200210f410d210241032105410021010c0f0b410321050240200f0d0041fad5c200210f41112102410321010c0f0b0240200f41e3004d0d0041e8d5c200210f41122102410421010c0f0b2003200f3602f0092003200a3602ec09200320043602e809200341800d6a41186a200341c8006a41186a290300370300200341800d6a41106a2202200341c8006a41106a290300370300200341800d6a41086a2201200341c8006a41086a290300370300200320032903483703800d20034198056a200341e8096a200341800d6a108a0402402003280298054101460d0020034198056a41086a2205280200210e200328029c052104200120034198056a410c6a280200360200200320073b018c0d200320043602840d200341a0dcc3003602800d200341e00c6a200341800d6a108b04200341083a00a00d2003410b3a00a00d2003410c3a00a00d200320032f01e00c3b01800d200320032801e20c3601820d200320032d00e60c3a00860d200320032800e70c3600870d200320032d00eb0c3a008b0d2003410d3a00a00d200320032d00ec0c3a008c0d2003410e3a00a00d200320032d00ed0c3a008d0d2003410f3a00a00d200320032d00ee0c3a008e0d200320032d00ef0c3a008f0d200341103a00a00d200341113a00a00d200320032d00f00c3a00900d200341123a00a00d200320032d00f10c3a00910d200341133a00a00d200320032d00f20c3a00920d200341143a00a00d200320032d00f30c3a00930d200341153a00a00d200320032d00f40c3a00940d200341163a00a00d200320032d00f50c3a00950d200341173a00a00d200320032d00f60c3a00960d200320032d00f70c3a00970d200341183a00a00d200341193a00a00d200320032d00f80c3a00980d2003411a3a00a00d200320032d00f90c3a00990d2003411b3a00a00d200320032d00fa0c3a009a0d2003411c3a00a00d200320032d00fb0c3a009b0d2003411d3a00a00d200320032d00fc0c3a009c0d2003411e3a00a00d200320032d00fd0c3a009d0d2003411f3a00a00d200320032d00fe0c3a009e0d200320032d00ff0c3a009f0d200341203a00a00d20034198056a41186a220a20032903980d37030020034198056a41106a220f20032903900d370300200520032903880d370300200320032903800d37039805200341f0026a41186a200a290300370300200341f0026a41106a200f290300370300200341f0026a41086a200529030037030020032003290398053703f002200320143703f80c2003201f3a00f70c2003201e3a00f60c2003201d3b01f40c2003201c3a00f30c200320203a00f20c200320213b01f00c200320223a00ef0c200320233a00ee0c200320243b01ec0c200320253a00eb0c200320263a00ea0c200320273b01e80c200320283a00e70c200320293a00e60c2003202a3b01e40c2003202b3a00e30c2003202c3a00e20c200320303b01e00c20034198056a200341f0026a200341e00c6a108c04200341800d6a200328029805220f20032802a005108d04200341e00c6a41086a2001290300370300200341e00c6a41106a2002290300370300200341c0076a41086a200341a80d6a290300370300200341c0076a41106a200341b00d6a290300370300200341c0076a41186a200341b80d6a290300370300200341c0076a41206a2201200341c00d6a290300370300200320032903800d3703e00c2003200341800d6a41206a2903003703c007200328029c0d210a024020032802980d2205450d00200341b00c6a41106a200341e00c6a41106a290300370300200341b00c6a41086a200341e00c6a41086a290300370300200341e8096a41086a200341c0076a41086a290300370300200341e8096a41106a200341c0076a41106a290300370300200341e8096a41186a200341c0076a41186a290300370300200341e8096a41206a2001290300370300200320032903e00c3703b00c200320032903c0073703e8090b0240200328029c05450d00200f10290b0240024020050d0041032105411d2113200741014b0d01418bd6c200210f41112102410221010c0e0b200341b4056a200a36020020034198056a41206a20032903e80937030020034198056a41106a200341b00c6a41106a29030037030020034198056a41086a200341b00c6a41086a290300370300200341c0056a200341e8096a41086a290300370300200341c8056a200341e8096a41106a290300370300200341d0056a200341e8096a41186a290300370300200341d8056a200341e8096a41206a290300370300200320032903b00c37039805200320053602b0050240202f4101460d00410b210241add5c200210f410921010c0d0b410e2102419fd5c200210f410a210120032802a805202e470d0c200341ac056a280200202d470d0c024020032802b805220d2007490d0041112102418bd6c200210f410221010c0d0b410021010240200d41014b0d000240200d0e02000a000b200341800d6a41186a200341c8006a41186a290300370300200341800d6a41106a200341c8006a41106a290300370300200341800d6a41086a200341c8006a41086a290300370300200320032903483703800d4100210f200341800d6a21020c0a0b200d210203402002410176220f20016a22132001200520134105746a200341c8006a412010e7074101481b21012002200f6b220241014b0d000c090b0b0240202f4101470d00418cd5c200210f41132102410b21010c0d0b200341386a2007ad42004280cab5ee01420010d50720032003290338221b4280bcc1960b7c221a3703c0072003200341386a41086a290300201a201b54ad7c221b3703c8072003200341c8006a3602900c2003200341c8006a3602e00c2003200341e00c6a3602880d2003200341900c6a3602840d2003200341c0076a3602800d20034198056a200341c8006a200341800d6a108e04024002402003280298054101470d00200341a4056a280200210220034198056a41086a280200210f20032d009f05210a20032d009e05210120032d009d05211320032d009c0521050c010b41042105024020034198056a41086a2903004201520d0020034198056a41106a290300213120032802e00c2101200341b80d6a20034198056a41186a290300370300200341b00d6a2031370300200341800d6a41086a41003a0000200341890d6a2001290000370000200341910d6a200141086a290000370000200341990d6a200141106a290000370000200341a10d6a200141186a290000370000200341033a00800d200341800d6a10cb010b0b200541ff01714104470d0d200341c80f6a41106a220241003b0100200341c80f6a41086a22054200370300200342003703c80f41b3e6ca00ad4280808080e00084100122012f0000210a200320012f000e3b01c80f20012900022131200128000a210f2001102941c9e6ca00ad4280808080e00084100122012900002132200341800d6a41086a2213200141086a290000370300200320323703800d20011029200341d20f6a2013290300370100200320032903800d3701ca0f200341ae056a2005290300370100200341b6056a20022f01003b01002003200f3601a2052003203137019a052003200a3b019805200320032903c80f3701a605200341306a20034198056a412010fc012003280234210220032802302105200341286a41a6e5ca00411010fc01200328022c210a2003280228210f20032f0148211320032d004a210720032d004b210d20032f014c210820032d004e210920032d004f210620032f0150211020032d0052211120032d0053210c20032f0154210b20032d0056211220032d0057211520032f0158211620032d005a211720032d005b211820032f015c211920032d005e212f20032d005f212e20032903602131412010272201450d1420012003290348370000200141186a200341c8006a41186a290300370000200141106a200341c8006a41106a290300370000200141086a200341c8006a41086a290300370000200341940d6a200a4100200f1b360200200341bc0d6a2031370200200341bb0d6a202e3a0000200341ba0d6a202f3a0000200341b80d6a20193b0100200341b70d6a20183a0000200341b60d6a20173a0000200341b40d6a20163b0100200341b30d6a20153a0000200341b20d6a20123a0000200341b00d6a200b3b0100200341af0d6a200c3a0000200341ae0d6a20113a0000200341ac0d6a20103b0100200341ab0d6a20063a0000200341aa0d6a20093a0000200341a80d6a20083b0100200341a70d6a200d3a0000200341a60d6a20073a00002003201b3703880d2003201a3703800d20032002410020051b3602900d200320133b01a40d2003419c0d6a428180808010370200200320013602980d200320143703f80c2003201f3a00f70c2003201e3a00f60c2003201d3b01f40c2003201c3a00f30c200320203a00f20c200320213b01f00c200320223a00ef0c200320233a00ee0c200320243b01ec0c200320253a00eb0c200320263a00ea0c200320273b01e80c200320283a00e70c200320293a00e60c2003202a3b01e40c2003202b3a00e30c2003202c3a00e20c200320303b01e00c20034198056a200341f0026a200341e00c6a108c042003280298052101200320032802a0053602c407200320013602c007200341800d6a200341c0076a10f3030240200328029c05450d00200110290b0240200328029c0d41ffffff3f71450d0020032802980d10290b200341a50d6a20032903f0023700002003418d0d6a200341c8006a41086a290300370000200341950d6a200341c8006a41106a2903003700002003419d0d6a200341c8006a41186a290300370000200341ad0d6a200341f0026a41086a290300370000200341b50d6a200341f0026a41106a290300370000200341bd0d6a200341f0026a41186a290300370000200341023a00840d200341133a00800d200320032903483700850d200341dd0d6a2014370000200341dc0d6a201f3a0000200341db0d6a201e3a0000200341d90d6a201d3b0000200341d80d6a201c3a0000200341d70d6a20203a0000200341d50d6a20213b0000200341d40d6a20223a0000200341d30d6a20233a0000200341d10d6a20243b0000200341d00d6a20253a0000200341cf0d6a20263a0000200341cd0d6a20273b0000200341cc0d6a20283a0000200341cb0d6a20293a0000200341c90d6a202a3b0000200341c80d6a202b3a0000200341c70d6a202c3a0000200341c50d6a20303b0000200341800d6a10cb010c090b42002114200328029c05220541ff01714104460d102005411876210a2005411076210120054108762113200341a4056a280200210220034198056a41086a280200210f0c0f0b2001412c6a280200210a200141286a2802002105200141246a2802002113200141346a2802002107200141306a2802002104200141226a2f0100210f200341b00c6a41186a200141196a290000370300200341b00c6a41106a200141116a290000370300200341b00c6a41086a200141096a290000370300200320012900013703b00c4102210120022d00000d0120022d00014101470d01200241196a2d00002101200241186a2d0000210e200241166a2f0100210d200241156a2d00002108200241146a2d00002109200241126a2f01002106200241116a2d00002110200241106a2d000021112002410e6a2f0100210c2002410d6a2d0000210b2002410c6a2d000021122002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211f200241026a2f0100211e20032002411a6a290100370360200320013a005f2003200e3a005e2003200d3b015c200320083a005b200320093a005a200320063b0158200320103a0057200320113a00562003200c3b01542003200b3a0053200320123a0052200320153b0150200320163a004f200320173a004e200320183b014c200320193a004b2003201f3a004a2003201e3b01480240200f41ffff03710d0041abd6c200210f410d210a41032101410021020c030b410321010240200a0d0041fad5c200210f4111210a410321020c030b0240200a41e3004d0d0041e8d5c200210f4112210a410421020c030b2003200a3602f009200320053602ec09200320133602e809200341800d6a41186a200341c8006a41186a290300370300200341800d6a41106a2202200341c8006a41106a290300370300200341800d6a41086a2201200341c8006a41086a290300370300200320032903483703800d20034198056a200341e8096a200341800d6a108a0402402003280298054101460d0020034198056a41086a2205280200210e200328029c052113200120034198056a410c6a2802003602002003200f3b018c0d200320133602840d200341a0dcc3003602800d200341e00c6a200341800d6a108b04200341083a00a00d2003410b3a00a00d2003410c3a00a00d200320032f01e00c3b01800d200320032801e20c3601820d200320032d00e60c3a00860d200320032800e70c3600870d200320032d00eb0c3a008b0d2003410d3a00a00d200320032d00ec0c3a008c0d2003410e3a00a00d200320032d00ed0c3a008d0d2003410f3a00a00d200320032d00ee0c3a008e0d200320032d00ef0c3a008f0d200341103a00a00d200341113a00a00d200320032d00f00c3a00900d200341123a00a00d200320032d00f10c3a00910d200341133a00a00d200320032d00f20c3a00920d200341143a00a00d200320032d00f30c3a00930d200341153a00a00d200320032d00f40c3a00940d200341163a00a00d200320032d00f50c3a00950d200341173a00a00d200320032d00f60c3a00960d200320032d00f70c3a00970d200341183a00a00d200341193a00a00d200320032d00f80c3a00980d2003411a3a00a00d200320032d00f90c3a00990d2003411b3a00a00d200320032d00fa0c3a009a0d2003411c3a00a00d200320032d00fb0c3a009b0d2003411d3a00a00d200320032d00fc0c3a009c0d2003411e3a00a00d200320032d00fd0c3a009d0d2003411f3a00a00d200320032d00fe0c3a009e0d200320032d00ff0c3a009f0d200341203a00a00d20034198056a41186a220a20032903980d37030020034198056a41106a220f20032903900d370300200520032903880d370300200320032903800d37039805200341f0026a41186a200a290300370300200341f0026a41106a200f290300370300200341f0026a41086a200529030037030020032003290398053703f0022003200341b00c6a41186a2903003703f80c2003200341b00c6a41106a2903003703f00c2003200341b00c6a41086a2903003703e80c200320032903b00c3703e00c200341e00f6a200341f0026a200341e00c6a108c04200341800d6a20032802e00f220a20032802e80f108d04200341e00c6a41086a2001290300370300200341e00c6a41106a2002290300370300200341c0076a41086a200341a80d6a290300370300200341c0076a41106a200341b00d6a290300370300200341c0076a41186a200341b80d6a290300370300200341c0076a41206a2202200341c00d6a290300370300200320032903800d3703e00c2003200341800d6a41206a2903003703c00702400240024020032802980d2201450d00200328029c0d2105200341c80f6a41106a220f200341e00c6a41106a290300370300200341c80f6a41086a220d200341e00c6a41086a290300370300200341e8096a41086a2208200341c0076a41086a290300370300200341e8096a41106a2209200341c0076a41106a290300370300200341e8096a41186a2206200341c0076a41186a290300370300200341e8096a41206a2002290300370300200320032903e00c3703c80f200320032903c0073703e809024020032802e40f450d00200a10290b200341900c6a41166a200f2903002214370100410e210a200341900c6a410e6a200d290300370100200341a80f6a41166a22022014370100200341a80f6a41106a200341900c6a41106a290100370300200320032903c80f3701960c200341a80f6a41086a200341900c6a41086a290100370300200320032901900c3703a80f20034198056a41106a220d200229010037030020034198056a41086a200341a80f6a410e6a290100370300200320032901ae0f37039805200341b4056a2005360200200320013602b005200341d8056a200341e8096a41206a290300370300200341d0056a2006290300370300200341c8056a2009290300370300200341c0056a200829030037030020034198056a41206a20032903e809370300419fd5c200210f410a21020240200d2802002004470d00200341ac056a2802002007470d00200341bc056a2202200341c8006a412010e707450d03410821024180f8c400210f4108210a0b200541ffffff3f71450d01200110290c010b024020032802e40f450d00200a10290b41b8d5c200210f4108210a410721020b0240200e41ffffff3f71450d00201310290b4100210541803a2113410321010c050b2003290398052114200320034198056a41086a290300221a3703c807200320143703c00702402014201a84500d00200320023602e00c200341e8096a2002200341c0076a200341e00c6a10ea0320032903e8094201520d0020032903f0092114200341b80d6a200341e8096a41106a290300370300200341b00d6a2014370300200341800d6a41086a41003a0000200341890d6a2002290000370000200341910d6a200241086a290000370000200341990d6a200241106a290000370000200341a10d6a200241186a290000370000200341033a00800d200341800d6a10cb010b200341e00c6a41186a200341b00c6a41186a2201290300370300200341e00c6a41106a200341b00c6a41106a2202290300370300200341e00c6a41086a200341b00c6a41086a290300370300200320032903b00c3703e00c200341800d6a200341f0026a200341e00c6a108c0420033502880d42208620032802800d2205ad841004024020032802840d450d00200510290b200341a50d6a20032903f0023700002003418d0d6a200341c8006a41086a290300370000200341950d6a200341c8006a41106a2903003700002003419d0d6a200341c8006a41186a290300370000200341ad0d6a200341f0026a41086a290300370000200341b50d6a200341f0026a41106a290300370000200341bd0d6a200341f0026a41186a290300370000200341053a00840d200341133a00800d200320032903483700850d200341e80d6a2004360200200341ec0d6a2007360200200341dd0d6a2001290300370000200341d50d6a2002290300370000200341cd0d6a200341b00c6a41086a290300370000200341c50d6a20032903b00c370000200341800d6a10cb01024020032802b40541ffffff3f71450d0020032802b00510290b0240200e41ffffff3f71450d00201310290b420021140c050b42002114200328029c05220141ff01714104460d042001418080807871210520014110762102200141807e712113200341a4056a280200210a20034198056a41086a280200210f0c030b1039000b0b0240200541ffffff3f71450d00201310290b4100210541803a21130b200041206a200a3602002000411c6a200f360200200041186a2005200241ff01714110747220134180fe037172200141ff017172360200420121140b200042003703080c250b0240200520014105746a200341c8006a412010e707220f0d00410f2102419cd6c200210f410121010c040b200341800d6a41186a200341c8006a41186a290300370300200341800d6a41106a200341c8006a41106a290300370300200341800d6a41086a200341c8006a41086a290300370300200320032903483703800d200341800d6a2102200d200f411f7620016a220f490d020b0240200d200a470d0020034198056a41186a200a4101109e0120032802b00521050b2005200f4105746a220141206a2001200d200f6b41057410e5071a200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002003200d41016a3602b805200341800d6a20034198056a41c80010e4071a200320143703f80c2003201f3a00f70c2003201e3a00f60c2003201d3b01f40c2003201c3a00f30c200320203a00f20c200320213b01f00c200320223a00ef0c200320233a00ee0c200320243b01ec0c200320253a00eb0c200320263a00ea0c200320273b01e80c200320283a00e70c200320293a00e60c2003202a3b01e40c2003202b3a00e30c2003202c3a00e20c200320303b01e00c200341c0076a200341f0026a200341e00c6a108c0420032802c0072101200320032802c8073602e40c200320013602e00c200341800d6a200341e00c6a10f303024020032802c407450d00200110290b02402003419c0d6a28020041ffffff3f71450d0020032802980d10290b200341a50d6a20032903f0023700002003418d0d6a200341c8006a41086a290300370000200341950d6a200341c8006a41106a2903003700002003419d0d6a200341c8006a41186a290300370000200341ad0d6a200341f0026a41086a290300370000200341b50d6a200341f0026a41106a290300370000200341bd0d6a200341f0026a41186a290300370000200341033a00840d200341133a00800d200320032903483700850d200341ec0d6a202d360200200341e80d6a202e360200200341dd0d6a2014370000200341dc0d6a201f3a0000200341db0d6a201e3a0000200341d90d6a201d3b0000200341d80d6a201c3a0000200341d70d6a20203a0000200341d50d6a20213b0000200341d40d6a20223a0000200341d30d6a20233a0000200341d10d6a20243b0000200341d00d6a20253a0000200341cf0d6a20263a0000200341cd0d6a20273b0000200341cc0d6a20283a0000200341cb0d6a20293a0000200341c90d6a202a3b0000200341c80d6a202b3a0000200341c70d6a202c3a0000200341c50d6a20303b0000200341800d6a10cb010b0240200e41ffffff3f71450d00200410290b420021140c070b200f200d1041000b0240200a41ffffff3f71450d00200510290b41032105411d21130b0b200e41ffffff3f71450d02200410290c020b0b411d21130240200a41ffffff3f710d000c010b200410290b200041206a20023602002000411c6a200f360200200041186a200a411874200141ff017141107472201341ff017141087472200541ff017172360200420121140b200042003703080c1a0b024002400240024002400240201f41ffff0371450d002019450d01201941e4004f0d02200320193602f0092003200f3602ec09200320073602e809200341800d6a41186a200341900c6a41186a290300370300200341800d6a41106a200341900c6a41106a290300370300200341800d6a41086a2201200341900c6a41086a290300370300200320032903900c3703800d20034198056a200341e8096a200341800d6a108a042003280298054101460d0320034198056a41086a22022802002127200328029c052108200120034198056a410c6a2802003602002003201f3b018c0d200320083602840d200341a0dcc3003602800d200341e00c6a200341800d6a108b04200341083a00a00d2003410b3a00a00d2003410c3a00a00d200320032f01e00c3b01800d200320032801e20c3601820d200320032d00e60c3a00860d200320032800e70c3600870d200320032d00eb0c3a008b0d2003410d3a00a00d200320032d00ec0c3a008c0d2003410e3a00a00d200320032d00ed0c3a008d0d2003410f3a00a00d200320032d00ee0c3a008e0d200320032d00ef0c3a008f0d200341103a00a00d200341113a00a00d200320032d00f00c3a00900d200341123a00a00d200320032d00f10c3a00910d200341133a00a00d200320032d00f20c3a00920d200341143a00a00d200320032d00f30c3a00930d200341153a00a00d200320032d00f40c3a00940d200341163a00a00d200320032d00f50c3a00950d200341173a00a00d200320032d00f60c3a00960d200320032d00f70c3a00970d200341183a00a00d200341193a00a00d200320032d00f80c3a00980d2003411a3a00a00d200320032d00f90c3a00990d2003411b3a00a00d200320032d00fa0c3a009a0d2003411c3a00a00d200320032d00fb0c3a009b0d2003411d3a00a00d200320032d00fc0c3a009c0d2003411e3a00a00d200320032d00fd0c3a009d0d2003411f3a00a00d200320032d00fe0c3a009e0d200341203a00a00d200320032d00ff0c3a009f0d20034198056a41186a220120032903980d37030020034198056a41106a220a20032903900d370300200220032903880d370300200320032903800d37039805200341b00c6a41186a2001290300370300200341b00c6a41106a200a290300370300200341b00c6a41086a200229030037030020032003290398053703b00c200341003602880d200342013703800d2005200341800d6a10bf0220032802840d210220033502880d42208620032802800d220aad8410102201290018211420012d0017210720012d0016210920012f0014210620012d0013211020012d0012211120012f0010210c20012d000f210b20012d000e211220012f000c211520012d000b211620012d000a211720012f0008211820012d0007212020012d0006212120012f0004212220012d0003212320012d0002212420012f000021252001102902402002450d00200a10290b200320143703f80c200320073a00f70c200320093a00f60c200320063b01f40c200320103a00f30c200320113a00f20c2003200c3b01f00c2003200b3a00ef0c200320123a00ee0c200320153b01ec0c200320163a00eb0c200320173a00ea0c200320183b01e80c200320203a00e70c200320213a00e60c200320223b01e40c200320233a00e30c200320243a00e20c200320253b01e00c20034198056a200341b00c6a200341e00c6a108c04200341800d6a200328029805220120032802a005108d04200341e00c6a41086a2202200341800d6a41086a290300370300200341e00c6a41106a220a200341800d6a41106a290300370300200341c0076a41086a220f200341a80d6a290300370300200341c0076a41106a2213200341b00d6a290300370300200341c0076a41186a2204200341b80d6a290300370300200341c0076a41206a200341c00d6a290300370300200320032903800d3703e00c2003200341800d6a41206a2903003703c007200328029c0d210d024020032802980d220e450d00200341a80f6a41106a200a290300370300200341a80f6a41086a2002290300370300200341f0026a41086a200f290300370300200341f0026a41106a2013290300370300200341f0026a41186a2004290300370300200341f0026a41206a200341c0076a41206a290300370300200320032903e00c3703a80f200320032903c0073703f0020b0240200328029c05450d00200110290b200e0d04410121264100211d4201211b201e4101470d054200211441132101418cd5c2002102410b2113411d21044103210a0c100b410d210141abd6c2002102410021134103210a0c050b4111210141fad5c20021024103210a410321130c040b4112210141e8d5c2002102410421134103210a0c030b200341a4056a280200210120034198056a41086a280200210220032d009f05210f20032d009e05211320032d009d05210420032d009c05210a200510cc0120051029420021140c050b200341b4056a200d36020020034198056a41206a20032903f00237030020034198056a41106a200341a80f6a41106a29030037030020034198056a41086a200341a80f6a41086a290300370300200341c0056a200341f0026a41086a290300370300200341c8056a200341f0026a41106a290300370300200341d0056a200341f0026a41186a290300370300200341d8056a200341f0026a41206a290300370300200320032903a80f370398052003200e3602b005410121264201211b0240201e4101460d00410b210141add5c200210241092113200d210a0c080b410e2101419fd5c2002102410a2113024020032802a805201d460d00200d210a0c080b0240200341ac056a280200201c460d00200d210a0c080b41002101024002400240024020032802b805221341014b0d0020130e020201020b2013210203402002410176220a20016a220f2001200e200f4105746a200341900c6a412010e7074101481b21012002200a6b220241014b0d000b0b200e20014105746a200341900c6a412010e7072202450d012002411f7620016a21010b201f417f6a41ffff0371201341ffff03714b0d090c070b201f41ffff0371201341ffff03714d0d0641012113410f2101419cd6c2002102200d210a410121260c070b024002400240201f41ffff037141014b0d00200341800d6a200541a80210e4071a200341a2056a200341b80c6a290300370100200341aa056a200341b00c6a41106a290300370100200341b2056a200341b00c6a41186a29030037010020034180023b019805200320032903b00c37019a05200341e8096a200341800d6a20034198056a10c50120032903f009211420032903e8094201520d01200341880a6a2802002101200341840a6a2802002102200341e8096a41186a2d0000210a200341e8096a41106a290300211a20032d00830a210f20032d00820a211320032d00810a21042014a70d022003418c0a6a28020021074201211b0c070b200341186a201fad42ffff038342004280cab5ee01420010d5072003200329031822314280bcc1960b7c221a3703e8092003200341186a41086a290300201a203154ad7c22313703f0092003200341900c6a3602482003200341900c6a3602c0072003200341c0076a3602880d2003200341c8006a3602840d2003200341e8096a3602800d20034198056a200341900c6a200341800d6a108e04024002402003280298054101470d00200341a4056a280200210120034198056a41086a280200210220032d009f05210f20032d009e05211320032d009d05210420032d009c05210a0c010b4104210a024020034198056a41086a2903004201520d0020034198056a41106a290300213220032802c0072101200341b80d6a20034198056a41186a290300370300200341b00d6a2032370300200341800d6a41086a41003a0000200341890d6a2001290000370000200341910d6a200141086a290000370000200341990d6a200141106a290000370000200341a10d6a200141186a290000370000200341033a00800d200341800d6a10cb010b0b410121260240200a41ff01714104460d00420021140c0d0b200341c80f6a41106a220241003b0100200341c80f6a41086a220a4200370300200342003703c80f41b3e6ca00ad4280808080e00084100122012f0000210f200320012f000e3b01c80f2001290002211b200128000a21132001102941c9e6ca00ad4280808080e00084100122012900002132200341800d6a41086a2204200141086a290000370300200320323703800d20011029200341d20f6a2004290300370100200320032903800d3701ca0f200341ae056a200a290300370100200341b6056a20022f01003b0100200320133601a2052003201b37019a052003200f3b019805200320032903c80f3701a605200341106a20034198056a412010fc01200328021421022003280210210a200341086a41a6e5ca00411010fc01200328020c210f2003280208211320032f01900c210420032d00920c211f20032d00930c211e20032f01940c211d20032d00960c211c20032d00970c212820032f01980c212920032d009a0c212a20032d009b0c212b20032f019c0c212c20032d009e0c213020032d009f0c212f20032f01a00c212e20032d00a20c212d20032d00a30c213320032f01a40c213420032d00a60c213520032d00a70c213620032903a80c211b412010272201450d03200120032903900c370000200141186a200341900c6a41186a290300370000200141106a200341900c6a41106a290300370000200141086a200341900c6a41086a290300370000200341940d6a200f410020131b360200200341bc0d6a201b370200200341bb0d6a20363a0000200341ba0d6a20353a0000200341b80d6a20343b0100200341b70d6a20333a0000200341b60d6a202d3a0000200341b40d6a202e3b0100200341b30d6a202f3a0000200341b20d6a20303a0000200341b00d6a202c3b0100200341af0d6a202b3a0000200341ae0d6a202a3a0000200341ac0d6a20293b0100200341ab0d6a20283a0000200341aa0d6a201c3a0000200341a80d6a201d3b0100200341a70d6a201e3a0000200341a60d6a201f3a0000200320313703880d2003201a3703800d200320024100200a1b3602900d200320043b01a40d2003419c0d6a428180808010370200200320013602980d200320143703f80c200320073a00f70c200320093a00f60c200320063b01f40c200320103a00f30c200320113a00f20c2003200c3b01f00c2003200b3a00ef0c200320123a00ee0c200320153b01ec0c200320163a00eb0c200320173a00ea0c200320183b01e80c200320203a00e70c200320213a00e60c200320223b01e40c200320233a00e30c200320243a00e20c200320253b01e00c20034198056a200341b00c6a200341e00c6a108c042003280298052101200320032802a0053602ec09200320013602e809200341800d6a200341e8096a10f3030240200328029c05450d00200110290b0240200328029c0d41ffffff3f71450d0020032802980d10290b200341a50d6a20032903b00c3700002003418d0d6a200341900c6a41086a290300370000200341950d6a200341900c6a41106a2903003700002003419d0d6a200341900c6a41186a290300370000200341ad0d6a200341b00c6a41086a290300370000200341b50d6a200341b00c6a41106a290300370000200341bd0d6a200341b00c6a41186a290300370000200341023a00840d200341133a00800d200320032903900c3700850d200341dd0d6a2014370000200341dc0d6a20073a0000200341db0d6a20093a0000200341d90d6a20063b0000200341d80d6a20103a0000200341d70d6a20113a0000200341d50d6a200c3b0000200341d40d6a200b3a0000200341d30d6a20123a0000200341d10d6a20153b0000200341d00d6a20163a0000200341cf0d6a20173a0000200341cd0d6a20183b0000200341cc0d6a20203a0000200341cb0d6a20213a0000200341c90d6a20223b0000200341c80d6a20233a0000200341c70d6a20243a0000200341c50d6a20253b00002019ad4290a10f7e4280fd87d1007c211a200341800d6a10cb014100211d4200211b420121140c0b0b4200211b024020144201510d00420021140c060b427f427f427f200341f8096a290300221442c0caba157c221a201a2014541b22142019ad4290a10f7e7c221a201a2014541b221442c0b2cd3b7c221a201a2014541b211a420121140c050b427f427f427f201a42c0caba157c22142014201a541b22142019ad4290a10f7e7c221a201a2014541b221442c0b2cd3b7c221a201a2014541b211a420121144201211b0c040b200510cc012005102942002114411d2104200f41ffffff3f71450d01200710290c010b1030000b0b0c090b410021264100211d0c050b200341800d6a200541a80210e4071a200341f2096a200341b00c6a41086a290300370100200341fa096a200341c00c6a290300370100200341820a6a200341c80c6a29030037010020034180023b01e809200320032903b00c3701ea09200341c0076a200341800d6a200341e8096a10c501200329039805211a200320034198056a41086a290300221b3703502003201a3703480240201a201b84500d002003200341bc056a22013602e00c200341e8096a2001200341c8006a200341e00c6a10ea0320032903e8094201520d0020032903f009211a200341b80d6a200341e8096a41106a290300370300200341b00d6a201a370300200341800d6a41086a41003a0000200341890d6a2001290000370000200341910d6a200141086a290000370000200341990d6a200141106a290000370000200341a10d6a200141186a290000370000200341033a00800d200341800d6a10cb010b200320143703f80c200320073a00f70c200320093a00f60c200320063b01f40c200320103a00f30c200320113a00f20c2003200c3b01f00c2003200b3a00ef0c200320123a00ee0c200320153b01ec0c200320163a00eb0c200320173a00ea0c200320183b01e80c200320203a00e70c200320213a00e60c200320223b01e40c200320233a00e30c200320243a00e20c200320253b01e00c200341800d6a200341b00c6a200341e00c6a108c0420033502880d42208620032802800d2201ad841004024020032802840d450d00200110290b200341e8096a41186a200341900c6a41186a290300370300200341e8096a41106a200341900c6a41106a290300370300200341e8096a41086a200341900c6a41086a290300370300200320032903900c3703e809200341800d6a41186a200341b00c6a41186a290300370300200341800d6a41106a200341b00c6a41106a290300370300200341800d6a41086a200341b00c6a41086a290300370300200320032903b00c3703800d200341c0076a41186a2d0000210220032903c807211b20032903c007211a200320032900d9073703482003200341e0076a28000036004f02400240201a4201510d00410421010c010b2003200328004f3600cf0f200320032903483703c80f41042101201b4202510d00200320032800cf0f3600e70f200320032903c80f3703e00f200221010b200341c8006a41086a2202200341e8096a41086a290300370300200341c8006a41106a220a200341e8096a41106a290300370300200341c8006a41186a220f200341e8096a41186a290300370300200341e00c6a41086a2213200341800d6a41086a290300370300200341e00c6a41106a2204200341800d6a41106a290300370300200341e00c6a41186a2219200341800d6a41186a290300370300200320032903e809370348200320032903800d3703e00c200320032800e70f3600d70c200320032903e00f3703d00c2003418d0d6a2002290300370000200341950d6a200a2903003700002003419d0d6a200f290300370000200341a50d6a20032903e00c370000200341ad0d6a2013290300370000200341b50d6a2004290300370000200341bd0d6a2019290300370000200341043a00840d200341133a00800d200320032903483700850d200341dd0d6a2014370000200341dc0d6a20073a0000200341db0d6a20093a0000200341d90d6a20063b0000200341d80d6a20103a0000200341d70d6a20113a0000200341d50d6a200c3b0000200341d40d6a200b3a0000200341d30d6a20123a0000200341d10d6a20153b0000200341d00d6a20163a0000200341cf0d6a20173a0000200341cd0d6a20183b0000200341cc0d6a20203a0000200341cb0d6a20213a0000200341c90d6a20223b0000200341c80d6a20233a0000200341c70d6a20243a0000200341c50d6a20253b0000200341f00d6a20013a0000200341ec0d6a201c360200200341e80d6a201d360200200341e70d6a200341ea096a2d00003a0000200341e50d6a20032f00e8093b0000200341f80d6a20032800d70c360000200341f10d6a20032903d00c370000200341800d6a10cb01410021264200211b20032802b405210a0b420021140240200a41ffffff3f710d000c020b20032802b00510290c010b200341800d6a41186a200341900c6a41186a290300370300200341800d6a41106a200341900c6a41106a290300370300200341800d6a41086a200341900c6a41086a290300370300200320032903900c3703800d20132001490d03200e210202402013200d470d0020034198056a41186a200d4101109e0120032802b00521020b200220014105746a220241206a2002201320016b41057410e5071a200241186a200341800d6a41186a290300370000200241106a200341800d6a41106a290300370000200241086a200341800d6a41086a290300370000200220032903800d3700002003201341016a3602b805200341800d6a20034198056a41c80010e4071a200320143703f80c200320073a00f70c200320093a00f60c200320063b01f40c200320103a00f30c200320113a00f20c2003200c3b01f00c2003200b3a00ef0c200320123a00ee0c200320153b01ec0c200320163a00eb0c200320173a00ea0c200320183b01e80c200320203a00e70c200320213a00e60c200320223b01e40c200320233a00e30c200320243a00e20c200320253b01e00c200341e8096a200341b00c6a200341e00c6a108c0420032802e8092101200320032802f0093602c407200320013602c007200341800d6a200341c0076a10f303024020032802ec09450d00200110290b02402003419c0d6a28020041ffffff3f71450d0020032802980d10290b200341a50d6a20032903b00c3700002003418d0d6a200341900c6a41086a290300370000200341950d6a200341900c6a41106a2903003700002003419d0d6a200341900c6a41186a290300370000200341ad0d6a200341b00c6a41086a290300370000200341b50d6a200341b00c6a41106a290300370000200341bd0d6a200341b00c6a41186a290300370000200341033a00840d200341133a00800d200320032903900c3700850d200341ec0d6a201c360200200341e80d6a201d360200200341dd0d6a2014370000200341dc0d6a20073a0000200341db0d6a20093a0000200341d90d6a20063b0000200341d80d6a20103a0000200341d70d6a20113a0000200341d50d6a200c3b0000200341d40d6a200b3a0000200341d30d6a20123a0000200341d10d6a20153b0000200341d00d6a20163a0000200341cf0d6a20173a0000200341cd0d6a20183b0000200341cc0d6a20203a0000200341cb0d6a20213a0000200341c90d6a20223b0000200341c80d6a20233a0000200341c70d6a20243a0000200341c50d6a20253b00002019ad4290a10f7e4280fd87d1007c211a200341800d6a10cb01410121264200211b420121140b4101211d411d21044103210a0b0b0240202741ffffff3f71450d00200810290b200d41ffffff3f71450d01200e45201d720d01200e10290c010b200120131041000b02402026450d00200510cc010b20051029201b50450d0020002014370308200041106a201a370300420021140c0c0b2000200f3a001b200020133a001a200020043a001920002014370308200041246a2007360200200041206a20013602002000411c6a2002360200200041186a200a3a0000200041106a201a370300420121140c0b0b4104210a4100210141002102410021130b2005102942002114200a41ff01714104460d020c010b200510cc01200510294100210141808030210241803a21134182d5c20021040b200041206a200f3602002000411c6a2004360200200041186a20012002418080fc07717220134180fe037172200a41ff017172360200420121140b200042003703080c060b2007210102402005450d00200341e8096a41106a211320034198056a4104722110200441ff017121114100210a2007210103402001280200210520034198056a200141046a220f41a40210e4071a200341800d6a200f41a40210e4071a02400240024002402005411c460d00200341e8096a200341800d6a41a40210e4071a200341c0076a200341e8096a41a40210e4071a200341f0026a200341c0076a41a40210e4071a200341c8006a200341f0026a41a40210e4071a20032005360298052010200341c8006a41a40210e4071a024020050e1c04040404040304040404040404040303030303030203030304000404040b20032d00a0054103460d020c030b200141a8026a21010c050b200328029c054101460d010b200341880d6a200a360200200341063a00840d200341133a00800d200141a8026a2101200341800d6a10cb0120034198056a10cc010c060b200341800d6a20034198056a41a80210e4071a02400240024002400240200d0e0400010203000b41022105024002400240200c0e03000102000b410021050c010b200341c80f6a41106a200341e00c6a41106a2f01003b0100200341c80f6a41086a200341e00c6a41086a290300370300200320032903e00c3703c80f410121050b201320032903c80f370000201341086a200341c80f6a41086a290300370000201341106a200341c80f6a41106a2f01003b0000200320083602f409200320093602f009200320043602ec092003200b3b01ea09200320053a00e909200341003a00e8090c030b4102210502400240024020110e03000102000b410021050c010b200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f002410121050b201320032903f002370200201341086a200341f0026a41086a290300370200201341106a200341f0026a41106a290300370200200320083602f409200320093602f009200320053a00ec09200341013a00e8092003200e3b00ed092003200e4110763a00ef090c020b4102210502400240024020110e03000102000b410021050c010b200341f0026a410d6a200341e00c6a410d6a290000370000200341f0026a41086a200341e00c6a41086a290300370300200320032903e00c3703f002410121050b201320032903f002370200201341086a200341f0026a41086a290300370200201341106a200341f0026a41106a290300370200200320083602f409200320093602f009200320053a00ec09200341023a00e8092003200e3b00ed092003200e4110763a00ef090c010b200341033a00e809200320043602ec090b200341c0076a200341800d6a200341e8096a10c50120032903c0074201510d03200a41016a210a200141a8026a22012002470d000b200221010b200341800d6a20034198056a41a40210e4071a0b024020022001460d000340200110c2012002200141a8026a2201470d000b0b02402006450d00200641a8026c450d00200710290b200341013a00840d200341133a00800d200341800d6a10cb010c030b200141a8026a21010b200341e8096a41186a200341e0076a2903002214370300200341e8096a41106a200341c0076a41186a290300221a370300200341e8096a41086a200341c0076a41106a290300370300200320032903c8073703e809200341800d6a41086a200a3602002003418c0d6a201a370200200341940d6a20143e0200200341003a00840d200341133a00800d200341800d6a10cb010b024020022001460d000340200110c2012002200141a8026a2201470d000b0b2006450d00200641a8026c450d00200710290b42002114200042003703080b20002014370300200341f00f6a24000b8f0403027f017e077f230041306b22032400200341086a200141086a28020022043602002003200129020022053703002005a72106024002400240024020040d00410021070c010b200441057421084100210941002107200621010240034002402009450d0020092001412010e7074100480d004115210a41d3d5c200210b4105210c0c020b024020012002412010e707220941004a0d004113210a41c0d5c200210b4106210c20022001460d022009450d02200741016a21070b20012109200141206a2101200841606a2208450d020c000b0b2000200c3a0006200041833a3b0104200041013602002000410c6a200a360200200041086a200b360200200328020441ffffff3f71450d01200610290c010b200341106a41186a200241186a290000370300200341106a41106a200241106a290000370300200341106a41086a200241086a2900003703002003200229000037031020042007490d01024020042003280204470d00200320044101109e01200328020021060b200620074105746a220141206a2001200420076b41057410e5071a200141186a200341106a41186a290300370000200141106a200341106a41106a290300370000200141086a200341106a41086a290300370000200120032903103700002003200441016a22013602082000410c6a200136020020002003290300370204200041003602000b200341306a24000f0b200720041041000bba0502087f037e230041106b2202240002400240200141086a28020022034105744116722204417f4c0d000240200410272205450d00200520012802002206290000370000200541086a200641086a290000370000200241103602082002200436020420022005360200200141046a280200210720032002107102400240024020030d0020022802042106200228020821040c010b20034105742108200228020021092002280204210620022802082104034020072105024002402006200422036b4120490d00200341206a21040c010b200341206a22042003490d03200641017422072004200720044b1b22074100480d03024002400240024020060d00024020070d00410121090c020b2007102721090c030b20062007470d010b200721060c020b200920062007102b21090b200721062009450d060b200541206a2107200920036a22032005290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a290000370000200841606a22080d000b2002200636020420022004360208200220093602000b20012f010c210802400240200620046b4102490d00200441026a210520022802002103200621070c010b200441026a22052004490d01200641017422032005200320054b1b22074100480d010240024020060d00024020070d00410121030c020b200710272203450d060c010b2002280200210320062007460d00200320062007102b2203450d050b20022007360204200220033602000b200320046a20083b00002005ad4220862003ad8410102205290000210a200541086a290000210b200541106a290000210c200041186a200541186a290000370000200041106a200c370000200041086a200b3700002000200a3700002005102902402007450d00200310290b200241106a24000f0b1032000b1039000b1038000b1030000bf30703027f017e067f230041e0006b2203240041ddbfc500ad4280808080f00084100122042900002105200341086a200441086a2900003703002003200537030020041029418cb8c300ad4280808080900184100122042900002105200341106a41086a200441086a29000037030020032005370310200410290240024002400240412010272204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020032004ad42808080808004841002220129000037034020011029200341dc006a2206200441206a360200200320043602582003200341c0006a41086a3602542003200341c0006a360250200341206a200341d0006a107520041029412010272204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002004ad4280808080800484100522012900002105200341c0006a41086a200141086a29000037030020032005370340200110292006200441206a360200200320043602582003200341c0006a41106a3602542003200341c0006a360250200341306a200341d0006a1075200410292003280228220741206a2206200328023822086a2201417f4c0d01200328023021092003280220210a0240024020010d004100210b410121040c010b200110272204450d012001210b0b02400240200b410f4d0d00200b21020c010b200b41017422024110200241104b1b22024100480d030240200b0d002002102722040d010c050b200b2002460d002004200b2002102b2204450d040b20042003290300370000200441086a200341086a2903003700000240024020024170714110460d002002210b0c010b2002410174220b4120200b41204b1b220b4100480d032002200b460d0020042002200b102b2204450d040b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21020c010b2007415f4b0d03200b41017422022006200220064b1b22024100480d03200b2002460d002004200b2002102b2204450d040b200441206a200a200710e4071a02400240200220066b2008490d002002210b0c010b20012006490d032002410174220b2001200b20014b1b220b4100480d03024020020d000240200b0d00410121040c020b200b10272204450d050c010b2002200b460d0020042002200b102b2204450d040b200420066a2009200810e4071a200020013602082000200b3602042000200436020002402003280234450d00200910290b02402003280224450d00200a10290b200341e0006a24000f0b1039000b1038000b1032000b1030000b850604067f027e027f057e23004190016b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822020d00200041003602180c010b200328020c21042003200341106a280200220136023c200320023602380240024020014104490d002003200241046a36023820032001417c6a220536023c20054104490d00200228000021062003200241086a3602382003200141786a220536023c20054110490d00200228000421072003200141686a220836023c2003200241186a360238200241106a29000021092002290008210a41002101200341003a0088010240034020082001460d01200341e8006a20016a200220016a220541186a2d00003a00002003200541196a3602382003200141016a22053a0088012005210120054120470d000b200341c8006a41086a2201200341e8006a41086a290300370300200341c8006a41106a220b200341e8006a41106a290300370300200341c8006a41186a220c200341e8006a41186a290300370300200320032903683703482003200820056b36023c200341e8006a200341386a10960220032802682205450d01200341186a41086a2001290300220d370300200341186a41106a200b290300220e370300200341186a41186a200c290300220f370300200320032903482210370318200329026c2111200020093703082000200a3703002000201137021c200020053602182000200736021420002006360210200041246a20103702002000412c6a200d370200200041346a200e3702002000413c6a200f3702000c020b2003410036023c200141ff0171450d00200341003a0088010b20034100360250200342013703482003410d36021c200320033602182003200341c8006a360244200341fc006a41013602002003420137026c200341f4eaca003602682003200341186a360278200341c4006a41a8a3c800200341e8006a10371a200335025042208620033502488410080240200328024c450d00200328024810290b200041003602180b2004450d00200210290b20034190016a24000bdb1005067f027e037f0b7e027f230041b0036b22032400200228020821042002280204210520022802002106200341086a200110a802200341b0016a200328020822072003280210220810a90220032903b00121094200210a200342003703b001200341f8016a280200210b20032d00fc01210c024002402009420151220d0d00200341186a41306a4200370300200341186a41286a4200370300200341186a41206a4200370300200341186a41186a4200370300200341286a4200370300200341206a4200370300200342003703184200210e4200210f42002110420021110c010b200341e8016a2903002112200341b0016a41306a2903002113200341b0016a41206a2903002110200341b0016a41186a290300210f200341f0016a290300211120032903c001210e20032903b801210a200341186a41206a200341b0016a41286a290300370300200341186a41286a2013370300200341186a41306a2012370300200341286a200f370300200320103703302003200a3703182003200e3703200b200341186a41106a21020240024002400240024002400240200a200629030022137d2214200a56200e200641086a29030022157d200a201354ad7d2212200e562012200e511b450d004280808080b002211341cbe2c200210d4180800c21060c010b2003201437031820032012370320200f20137c2216200f542206201020157c2006ad7c221720105420172010511b4101470d0142808080808001211341839dc500210d4180800821062014210a2012210e0b200341d0006a41206a200241206a290300370300200341d0006a41186a200241186a290300370300200341d0006a41106a200241106a290300370300200341d0006a41086a200241086a290300370300200320022903003703500c010b200341186a41186a2017370300200320163703282013201584500d01200341f8006a200528020010a802200341b0026a2003280278220520032802800110a902200341e0026a290300420020032903b00242015122061b2113200341d8026a290300420020061b21150240200328027c450d00200510290b2015201458201320125820132012511b0d01200341d0006a41206a200241206a290300370300200341d0006a41186a200241186a290300370300200341d0006a41106a200241106a290300370300200341d0006a41086a200241086a2903003703002003200229030037035041dee2c200210d4280808080d00221134180800421062014210a2012210e0b20064180800c7141830c722106200dad221242088842ff018321102013201284428080fcffff03832113410121020c010b200341d0006a41206a200241206a2903002217370300200341d0006a41186a200241186a2903002216370300200341d0006a41106a200241106a2903002218370300200341d0006a41086a200241086a290300221337030020032002290300221537035020042802002102200341f8006a41186a2013370300200341f8006a41206a22052018370300200341a0016a22192016370300200341a8016a221a20173703002003201537038801200320143703782003201237038001427f200a200f7c220f200f200a542206200e20107c2006ad7c220a200e54200a200e511b22061b427f200a20061b8450210602400240427f201420157c220a200a2014542204201220137c2004ad7c220a201254200a2012511b22041b220e4280c8afa025544100427f200a20041b220a501b0d00200341f8006a41106a2903002115201a29030021172019290300210a2005290300210e2003290380012110200329037821134201211620032903900121180c010b420021160240200e200a84500d00200e200a10d402200341e8026a200a370300200341e0026a200e370300200341b0026a41086a41013a0000200341b9026a2002290000370000200341c1026a200241086a290000370000200341c9026a200241106a290000370000200341d1026a200241186a290000370000200341033a00b002200341b0026a10cb010b0b2006ad210f200341d8016a200e370300200341e0016a200a370300200341c0016a2010370300200341e8016a2017370300200341c8016a2015370300200320183703d001200320113703f001200320133703b801410021022003200c4100200942015122061b22043a00fc012003200b410020061b220b3602f801200320164201512206ad3703b001024020060d002008ad4220862007ad841004420021102014210a2012210e420021130c010b410410272206450d012006200b360000200641044108102b2206450d01200620043a0004200641084115102b2206450d01200620133700052006410d6a2010370000200341d0016a2903002110200341c8016a290300211320064115412a102b2206450d01200620133700152006411d6a20103700002006412a41d400102b2206450d012006200e3700252006412d6a200a3700002006413d6a200341f0016a2903003700002006200341e8016a2903003700352008ad4220862007ad842006ad4280808080d0088410032006102942002113420121102014210a2012210e0b0240200328020c450d00200710290b024002402002450d0020002006360204200041086a2010420886200dad42ff018384201384370200410121020c010b024002400240200d41ff017122020d0020104200510d004103210d200341b0026a21020c010b2002450d0120104200520d014104210d200341b0016a21020b200241086a200d3a0000200241003a0000200241096a2001290000370000200241116a200141086a290000370000200241196a200141106a290000370000200241216a200141186a290000370000200210cb010b200041186a200e370300200041106a200a370300200041086a200f370300410021020b20002002360200200341b0036a24000f0b1030000b13002000410d360204200041b0dcc3003602000bc11603107f057e057f230022062107200641e0016b41607122062400200241ffff03200241ffff03491b210202400240024002400240024002400240024020040d00200241017641036a220810272209450d01200641003602202006200836021c20062009360218200620023602a401200641013b01a001200641a0016a200641186a10f402200141086a280200210a2001280204210b20012802002102024020012d000c0d00410021010c050b2001410d6a2d0000410f71210c0c030b200241017641036a220c10272209450d00200641003602202006200c36021c20062009360218200620023602a40120064181023b01a001200641a0016a200641186a10f402200141086a280200210a2001280204210b20012802002102024020012d000c0d00410021010c050b2001410d6a2d0000410f7121080c010b1039000b410121010c020b410121010b03400240024020010e020001010b02402002200a490d00200641186a21010c040b200b20026a2d0000210c200241016a2102410121010c010b024020062802202201200628021c470d00200141016a22082001490d05200141017422092008200920084b1b22084100480d050240024020010d00024020080d00410121090c020b2008102722090d010c060b2006280218210920012008460d00200920012008102b2209450d050b2006200836021c200620093602180b200628021820016a200c3a00002006200141016a360220410021010c000b0b03400240024020010e020001010b02402002200a490d00200641186a21010c030b200b20026a2d00002108200241016a2102410121010c010b024020062802202201200628021c470d00200141016a220c2001490d0420014101742209200c2009200c4b1b220c4100480d040240024020010d000240200c0d00410121090c020b200c10272209450d050c010b200628021821092001200c460d0020092001200c102b2209450d040b2006200c36021c200620093602180b200628021820016a20083a00002006200141016a360220410021010c000b0b200641086a41086a200141086a280200220d360200200620012902003703080240200d200628020c470d00200d41016a2201200d490d02200d41017422022001200220014b1b22014100480d0202400240200d0d00024020010d00410121020c020b200110272202450d030c010b20062802082102200d2001460d002002200d2001102b2202450d020b2006200136020c200620023602080b2006280208220e200d6a41003a00002006200628021041016a220136021002402001200628020c470d00200141016a22022001490d02200141017422082002200820024b1b22024100480d020240024020010d00024020020d004101210e0c020b20021027220e450d030c010b20012002460d00200e20012002102b220e450d020b2006200236020c2006200e3602080b200e20016a41003a00002006200628021041016a220f36021002402004450d002005200641086a107102400240200628020c2202200628021022016b2005490d00200120056a210f2006280208210e0c010b200120056a220f2001490d0320024101742208200f2008200f4b1b22084100480d030240024020020d00024020080d004101210e0c020b20081027220e450d040c010b2006280208210e20022008460d00200e20022008102b220e450d030b2006200836020c2006200e3602080b200e20016a2004200510e4071a2006200f3602100b02400240024002402003280200220120032802042210470d0041002103410021010c010b200341106a28020021112003280208210a200328020c221241096a2113200641186a4101722108200641a0016a4101722114200641e0006a4101722102201241046a2115410021034101210b024002400340200641023a00a0012001290200211620062903b801211720062903b001211820062903a8012119200120062903a0013702002001290208211a200120193702082001290210211920012018370210200141186a220c2902002118200c201737020020062018370378200620193703702006201a37036820062016370360200141206a280200211b200641a0016a41176a220c200241176a290000370000200641a0016a41106a2204200241106a290000370300200641a0016a41086a2205200241086a290000370300200620022900003703a00102402016a7221c41ff0171221d4103470d0020034180fe037141087621010c050b200641c0006a41176a2209200c290000370000200641c0006a41106a221e2004290300370300200641c0006a41086a20052903002216370300200620062903a0012217370340200641e0006a41176a221f2009290000370000200641e0006a41106a220c201e290300370300200641e0006a41086a2209201637030020062017370360024002400240201d4102470d00200641023a0018200641e0006a41186a200841186a290000370300200c200841106a2900003703002009200841086a290000370300200620082900003703604100211d0c010b024002402015280200221d41244b0d002013211e0c010b2012280210211d201228020c211e0b2006201d360294012006201e360290012006201228020036029801201128020028020020064190016a4101200a109104211d2011280204280200211e20142006290360370000201441086a2009290300370000201441106a200c290300370000201441176a201f2900003700002006201c3a00a0012006201b3602c001200641186a201e200641a0016a20112802002802001092042011280200280200201d10930420062d0018221d4103460d01200641e0006a41186a221e200841186a290000370300200c200841106a2900003703002009200841086a29000037030020062008290000370360024002400240201d410371417f6a221b41014b0d004100211d201b0e020103010b4120200641086a107102400240200628020c2205200628021022046b4120490d002006280208210e0c010b200441206a221d2004490d0c2005410174220e201d200e201d4b1b221d4100480d0c0240024020050d000240201d0d004101210e0c020b201d1027220e450d0d0c010b2006280208210e2005201d460d00200e2005201d102b220e450d0c0b2006201d36020c2006200e3602080b200e20046a22052006290360370000200541186a201e290300370000200541106a200c290300370000200541086a2009290300370000200441206a210f0c010b200628023c211d200641a0016a41186a201e2903003703002004200c29030037030020052009290300370300200620062903603703a001201d41214f0d04201d200641086a107102400240200628020c22092006280210220c6b201d490d002006280208210e0c010b200c201d6a2204200c490d0b200941017422052004200520044b1b22044100480d0b0240024020090d00024020040d004101210e0c020b20041027220e450d0c0c010b2006280208210e20092004460d00200e20092004102b220e450d0b0b2006200436020c2006200e3602080b200e200c6a200641a0016a201d10e4071a200c201d6a210f0b2006200f360210200b211d0b200a41016a210a200b410174210b201d2003722103200141246a22012010460d030c010b0b20034180fe037141087621010c040b201d412041a4e5c300104b000b20034180fe037141087621010b200641033a0060200641b7016a2006290078370000200641a0016a41106a2006290071370300200641a8016a2006290069370300200620062900613703a0010b200641033a00180b200d41026a210202400240200d417d4b0d00200f2002490d01200e200d6a220220013a0001200220033a0000200041086a200641086a41086a28020036020020002006290308370200200724000f0b200d200241b4e5c300104c000b2002200f41b4e5c300104b000b1030000b1032000be309010d7f230041106b2204240002400240024002400240024020010d00410021010c010b200141086a28020022054101762106200141046a2802002107024002400240024020054101710d00200720064f0d012006200741b09fcc00104c000b200720064b0d012006200741c09fcc001036000b200720066b2108200128020020066a21090c010b20002001280200220120066a2d0000410f7110d1072007200641016a22066b2108200120066a21090b2000280200220121060240200141244d0d002000410c6a28020021060b02400240024002402006410174200028022c460d00200121060240200141244d0d002000410c6a28020021060b2008450d032006417f6a2106200141244b0d01200041056a210a2001210b0c020b0240200141244d0d002000410c6a28020021010b20042000200810d207024020042802004101470d00200441086a2802000d0541a4a1cc00411141b8a1cc001033000b2000280200220a21060240200a41244d0d002000410c6a28020021060b024020062001490d0002400240200a41244b0d00200041056a210a0c010b200041086a280200210a0b200a20016a220a20086a200a200620016b10e5071a200a2009200810e4071a200620086a21010240200028020041244b0d00200020013602000c040b2000410c6a20013602000c030b41c8a1cc00411e41b8a1cc001033000b2000410c6a280200210b200041086a280200210a0b200b20064d0d03200a20066a2d0000210a02400240200141244b0d00200041056a210b0c010b2000410c6a2802002101200041086a280200210b0b200120064d0d04200b20066a200a4170713a000020092d0000210a024002402000280200220141244b0d00200041056a210b0c010b2000410c6a2802002101200041086a280200210b0b200120064d0d05200b20066a220120012d0000200a410476723a000002402008417f6a220c450d00200041056a210d2000410c6a210e410021010340024002400240024020082001460d00200141016a220620084f0d01200920016a22012d0000210b200141016a2d0000210f0240200028020c20002802002201200141244b22101b220a2001412420101b470d0020042000410110d207024020042802004101470d00200441086a2802000d0a41a4a1cc00411141b8a1cc001033000b200028020021010b200f410476200b41047472210b200141244b0d02200d21012000210f0c030b2008200841909fcc001036000b200141016a200841a09fcc001036000b20002802082101200e210f0b200f200a41016a3602002001200a6a200b3a000020062101200c2006470d000b0b2009200c6a2d0000210a41242106024002402000280200220b41244b0d00200021010c010b2000410c6a2101200b21060b0240200128020022012006470d0020042000410110d20720042802004101470d00200441086a2802000d0341a4a1cc00411141b8a1cc001033000b200a410474210602400240200028020041244b0d00200041056a210a2000210b0c010b2000410c6a210b200041086a280200210a0b200b200141016a360200200a20016a20063a00000b2000200028022c20084101746a36022c200741017420056b21010b02402002450d002000200310d107200141016a21010b200441106a240020010f0b1030000b2006200b41e09ecc001036000b2006200141f09ecc001036000b2006200141809fcc001036000bd81803077f067e077f23002204210520044180036b416071220424002004200336021420042001360210024002400240024002400240024002400240024002400240024020022d00004101460d00200241046a28020021020240200141c0006a220628020022072007417f6a200141386a22082802002203200141346a22092802006b716b4101470d002001413c6a108b0120092802002209200828020022034d0d0002402003200720096b220a490d00200128023c22032006280200200a6b22074102746a200320094102746a200a41027410e4071a200141346a2007360200200141386a28020021030c010b200128023c220920074102746a2009200341027410e4071a200141386a2203200328020020076a22033602000b20082006280200417f6a200341016a713602002001413c6a28020020034102746a2002360200200141306a280200220320024d0d022001280228200241fc006c6a2201290210210b200120042903b0023702102001290208210c200120042903a802370208200441003a00a002200441003602a4022001290200210d200120042903a002370200200441d8006a2001290240220e370300200441386a22032001290220370300200441f8006a2001290260370300200141186a2202290200210f200220042903b802370200200441186a41d8006a2207200141d8006a290200370300200441186a41d0006a2208200141d0006a290200370300200441186a41c8006a2206200141c8006a290200370300200441186a41386a200141386a2902002210370300200441186a41306a200141306a290200370300200441186a41286a2209200141286a290200370300200441186a41186a220a200f370300200441186a41e8006a200141e8006a290200370300200441186a41f0006a200141f0006a290200370300200441186a41f8006a200141f8006a2802003602002004200b3703282004200c3703202004200d370318200da7221141ff01714101460d01200ba72112200ca72102200b422088a72113200c422088a72101200e422088a721142010a72115200441b0016a41086a22162003290300370300200441b0016a41106a22172009290300370300200441b0016a41186a200441c8006a29030037030020044198016a41086a200829030037030020044198016a41106a20072802003602002004200a2903003703b0012004200629030037039801200441d4006a290200220b422088a721032004200441106a3602d4012004200441146a3602d001200ba7210702400240024002400240200d422088a70e050102030400010b200441ac026a2013360200200441a0026a41086a2012360200200441a0026a41106a20042903b001370300200441a0026a41186a2016290300370300200441c0026a2017290300370300200441c8026a200441b0016a41186a290300370300200420023602a002200420013602a40202400240200141244b0d00200441a9026a21130c010b20042802b00221010b200241017621080240024020024101710d0020012008490d0941002106410021090c010b200120084d0d0941012109201320086a2d0000410f712106200841016a21080b200441e5026a20063a0000200441e0026a200120086b360200200420093a00e402200441003602d802200420042f01d8013b01e6022004201320086a3602dc0220044188026a200441d0016a3602002004410036028002200420153602f8012004201541c0046a3602fc01200141017420026b21012004200441a0026a36028402024002402007450d00200441e8016a200441d8026a2001200441f8016a200720141090042003450d01200710290c010b200441e8016a200441d8026a2001200441f8016a410020141090040b2015102920042802a40241244d0d0e20042802ac0210290c0e0b410110272201450d08200141003a000020044281808080103702ec01200420013602e8010c0d0b200441ac026a2013360200200441a0026a41086a2012360200200441a0026a41106a20042903b001370300200441a0026a41186a2016290300370300200441c0026a2017290300370300200441c8026a200441b0016a41186a290300370300200420023602a002200420013602a40202400240200141244b0d00200441a9026a21130c010b20042802b00221010b2002410176210802400240200241017122020d0020012008490d0a41002102410021060c010b200120084d0d0a201320086a2d0000410f712106200841016a21080b20044180026a200120086b360200200420063a00f901200420023a00f8012004201320086a3602fc01200420042f01d8013b01fa01200441d8026a200441f8016a10a5062003200441d8026a10710240024020042802dc02220820042802e00222016b2003490d0020042802d80221020c010b200120036a22022001490d0b200841017422062002200620024b1b22064100480d0b0240024020080d00024020060d00410121020c020b2006102722020d010c0e0b20042802d802210220082006460d00200220082006102b2202450d0d0b200420063602dc02200420023602d8020b200220016a2015200310e4071a200441f0016a200120036a360200200420042903d8023703e80102402007450d00201510290b20042802a40241244d0d0c20042802ac0210290c0c0b200441ac026a2013360200200441a0026a41086a2012360200200441a0026a41106a20042903b001370300200441a0026a41186a2016290300370300200441c0026a2017290300370300200441c8026a200441b0016a41186a290300370300200420023602a002200420013602a40202400240200141244b0d00200441a9026a21130c010b20042802b00221010b200420023602e001200420013602dc01200420133602d801200441e8016a200441d8016a10a60620042802d001280200200441d8016a41002004109104210120042802d4012802002100200441e4026a2014360200200441d8026a41106a200429039801370300200441f0026a200441a0016a290300370300200441f8026a20044198016a41106a2802003602002004200b3702dc02200420153602d802200441f8016a2000200441d8026a20042802d00128020010920420042802d0012802002001109304419cf7ca00412841b8a1cc001033000b419cf7ca00412841b8a1cc001033000b200041003a000020002002290001370001200041196a200241196a290000370000200041116a200241116a290000370000200041096a200241096a2900003700000c0a0b20002004290019370001200041003a0000200041196a200441186a41196a290000370000200041116a200441186a41116a290000370000200041096a200441186a41096a2900003700000c0a0b20022003418095c8001036000b2008200141b09fcc00104c000b2008200141c09fcc001036000b1039000b2008200141b09fcc00104c000b2008200141c09fcc001036000b1032000b1030000b0240024020042802f0012201411f4b0d0020042802e8012102200441a0026a20016a4100412020016b10e6071a200441a0026a2002200110e4071a200041246a2001360200200041196a200441b8026a290000370000200041116a200441b0026a290000370000200041096a200441a8026a290000370000200020042900a002370001410121010c010b2004280210220241c8006a2802002108200228024421062004280214220228022c2209410176210720022802002103024002400240024002402009410171450d0002400240200341244b0d00200241056a21092003210a0c010b2002410c6a280200210a200241086a28020021090b200a2007490d0202400240200341244b0d00200241056a21020c010b2002410c6a2802002103200241086a28020021020b200320074d0d0320044181026a200220076a2d000041f001713a0000200420093602f801410121020c010b02400240200341244b0d00200241056a21020c010b2002410c6a2802002103200241086a28020021020b20032007490d03200420023602f801410021020b200420023a008002200420073602fc01200441a0026a2006200441f8016a20042802e801220220012008280214110500200020042903a002370001200041096a200441a8026a290300370000200041116a200441b0026a290300370000200041196a200441b8026a29030037000020042802102201200128027441016a360274410021010c030b2007200a41b09ecc00104b000b2007200341c09ecc001036000b2007200341d09ecc00104b000b200020013a0000024020042802ec01450d00200210290b201141ff01710d010b200524000f0b2004413c6a10a706200524000b9d0301057f02402001450d0002400240200028022c220220014d0d00200220016b2203410176200341017122046a21052000280200220121020240200141244d0d002000410c6a28020021020b200520024f0d012000410c6a2106200520026b41016a2102034002400240200141244b0d00200021050c010b20062802002101200621050b02402001450d0020052001417f6a3602000b2002450d02200241016a2102200028020021010c000b0b024002402000280200220141244b0d00200021020c010b2000410c6a220228020021010b02402001450d00200241003602000b2000410036022c0c010b2000200336022c2004450d00024002402000280200220141244b0d00200041056a2106200121050c010b200041086a28020021062000410c6a28020021050b2005417f6a2102024002402005450d00200620026a2d0000210502400240200141244b0d00200041056a21000c010b2000410c6a2802002101200041086a28020021000b200120024d0d01200020026a20054170713a00000f0b2002200541909ecc001036000b2002200141a09ecc001036000b0b130020004108360204200041c4e5c3003602000b130020004106360204200041c8ecc3003602000b990301067f41012103024002400240024020024101742204417f4c0d00410021054100210602402004450d00200410272203450d02200421060b02402002450d0041002105034020012d000021070240024020052006460d00200621040c010b200641016a22042006490d05200641017422082004200820044b1b22044100480d05024020060d00024020040d00410121030c020b2004102722030d010c070b20062004460d00200320062004102b2203450d060b200320056a413041d700200741a001491b20074104766a3a000002400240200541016a22082004460d0020042106200821040c010b200441016a22062004490d05200441017422082006200820064b1b22064100480d05024020040d00024020060d00410121030c020b200610272203450d070c010b20042006460d00200320042006102b2203450d060b200141016a2101200320046a413041d7002007410f712204410a491b20046a3a0000200541026a21052002417f6a22020d000b0b2000200536020820002006360204200020033602000f0b1038000b1039000b1032000b1030000ba00d02097f037e230041a0026b220624000240024002400240200320056a41216a22070d0041012108410021094100210a0c010b410021094100210b4101210803402007410a6e210c024002402009200b460d00200b210a0c010b200b41016a220a200b490d03200b410174220d200a200d200a4b1b220a4100480d0302400240200b0d000240200a0d00410121080c020b200a102722080d010c060b200b200a460d002008200b200a102b2208450d050b200a210b0b200820096a2007200c41766c6a4130723a0000200941016a2109200741094b210d200c2107200d0d000b0b411a210d0240411a1027220c450d00200c41186a41002f00faf0433b0000200c41106a41002900f2f043370000200c41086a41002900eaf043370000200c41002900e2f0433700000240024020090d00411a21090c010b2009411a6a220b2009490d02200b4134200b41344b1b220d4100480d02200c411a200d102b220c450d03200820096a210e2008417f6a2107200c411a6a210b0340200b200720096a2d00003a0000200b41016a210b2009417f6a22090d000b200e20086b411a6a21090b0240200a450d00200810290b02400240200d20096b41204d0d00200d21070c010b200941216a220b2009490d02200d4101742207200b2007200b4b1b22074100480d02200d2007460d00200c200d2007102b220c450d030b200c20096a220b4100290090a445370000200b41206a41002d00b0a4453a0000200b41186a41002900a8a445370000200b41106a41002900a0a445370000200b41086a4100290098a445370000024002402007200941216a220b6b2003490d00200721090c010b200b20036a2209200b490d022007410174220a2009200a20094b1b22094100480d02024020070d00024020090d004101210c0c020b20091027220c450d040c010b20072009460d00200c20072009102b220c450d030b200c200b6a2002200310e4071a024002402009200b20036a220b6b2005490d00200921070c010b200b20056a2207200b490d022009410174220a2007200a20074b1b22074100480d02024020090d00024020070d004101210c0c020b20071027220c450d040c010b20092007460d00200c20092007102b220c450d030b200c200b6a2004200510e4071a200b20056aad422086200cad8410112209290000210f200941086a2900002110200941106a2900002111200641186a200941186a290000370300200641106a2011370300200641086a20103703002006200f3703002009102902402007450d00200c10290b41002109200641206a41106a4100360200200641206a41086a420037030020064200370320200641d8016a20012006109b04024020062d00d8014101460d00200641d0016a20064191026a290000370300200641c8016a20064189026a290000370300200641c0016a20064181026a290000370300200641b8016a200641f9016a290000370300200641b0016a200641f1016a290000370300200641a8016a200641e9016a290000370300200641a0016a200641e1016a290000370300200620062900d90137039801410121090b200641d8016a41386a220b20064198016a41386a290300370300200641d8016a41306a220720064198016a41306a290300370300200641d8016a41286a220c20064198016a41286a290300370300200641d8016a41206a220a20064198016a41206a290300370300200641d8016a41186a220d20064198016a41186a290300370300200641d8016a41106a220820064198016a41106a290300370300200641d8016a41086a220320064198016a41086a29030037030020062006290398013703d801024002402009450d00200641d8006a41386a200b290300370300200641d8006a41306a2007290300370300200641d8006a41286a200c290300370300200641d8006a41206a200a290300370300200641d8006a41186a200d290300370300200641d8006a41106a2008290300370300200641d8006a41086a2003290300370300200620062903d801370358200641d8006aad428080808080088410112209290000210f200941086a2900002110200941106a2900002111200641386a41186a200941186a290000370300200641386a41106a2011370300200641386a41086a20103703002006200f37033820091029200641206a41106a200641d4006a2802002209360200200641206a41086a200641cc006a290200220f370300200620062902442210370320200041116a2009360000200041096a200f37000020002010370001410121090c010b410021090b200020093a0000200641a0026a24000f0b1039000b1032000b1030000be90205017f017e017f017e017f230041206b2202240041c087cc00ad4280808080e000842203100122042900002105200241086a200441086a29000037030020022005370300200410292003100122042900002103200241106a41086a200441086a29000037030020022003370310200410290240411410272204450d0020042001290000370000200441106a2206200141106a280000360000200441086a200141086a290000370000411410272201450d0020012004290000370000200141106a2006280000360000200141086a2206200441086a29000037000020041029413410272204450d002004200229031037001020042002290300370000200441086a200241086a290300370000200441186a200241106a41086a290300370000200042b4808080c0063702042000200436020020042001290000370020200441286a2006290000370000200441306a200141106a28000036000020011029200241206a24000f0b1039000bef0203027f017e017f230041206b2202240041c087cc00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941c687cc00ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240411410272203450d0020032001290000370000200341106a2205200141106a280000360000200341086a200141086a290000370000411410272201450d0020012003290000370000200141106a2005280000360000200141086a2205200341086a29000037000020031029413410272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042b4808080c0063702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a28000036000020011029200241206a24000f0b1039000b940201037f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad841007108b0202400240200228020822010d00410221000c010b200228020c210302400240200241106a280200450d0020012d0000220441014b0d0041002100024020040e020200020b410121000c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b410221000b2003450d00200110290b200241d0006a240020000bba0503017f017e037f23004190016b22032400024020012002101d2204422088a72201450d002004a722052d0000220241014b0d002001417f6a210602400240024020020e020001000b41002101200341003a008801200541016a21070240034020062001460d01200341c8006a20016a200720016a2d00003a00002003200141016a22023a00880120022101200241c000470d000b200341106a200341d1006a290000370300200341186a200341d9006a290000370300200341206a200341e1006a290000370300200341286a200341e9006a290000370300200341306a200341f1006a290000370300200341386a200341f9006a2900003703002003413f6a20034180016a2900003700002003200329004937030820032d0048210241002106200341086a21010c020b200141ff0171450d02200341003a0088010c020b2006450d0120052d0001220241034f0d01200341086a41376a200341c8006a41376a290000370000200341086a41306a200341c8006a41306a290000370300200341086a41286a200341c8006a41286a290000370300200341086a41206a200341c8006a41206a290000370300200341086a41186a200341c8006a41186a290000370300200341086a41106a200341c8006a41106a290000370300200341086a41086a200341c8006a41086a2900003703002003200329004837030841012106200341086a21010b200020023a0001200020063a0000200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a290000370000200041226a200141206a2900003700002000412a6a200141286a290000370000200041326a200141306a290000370000200041396a200141376a2900003700002005102920034190016a24000f0b41e891cc00412e200341c8006a419893cc00419892cc00103a000b9f0303027f017e027f230041206b2202240041c087cc00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941fcf0c300ad4280808080900184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bc50602027f027e230041f0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00200041003a00000c010b200341106a2802002102200328020c2104200341003a0054024002402002450d00200320012d00003a0040200341013a0054024020024101460d00200320012d00013a0041200341023a005420024102460d00200320012d00023a0042200341033a005420024103460d00200320012d00033a0043200341043a005420024104460d00200320012d00043a0044200341053a005420024105460d00200320012d00053a0045200341063a005420024106460d00200320012d00063a0046200341073a005420024107460d00200320012d00073a0047200341083a005420024108460d00200320012d00083a0048200341093a005420024109460d00200320012d00093a00492003410a3a00542002410a460d00200320012d000a3a004a2003410b3a00542002410b460d00200320012d000b3a004b2003410c3a00542002410c460d00200320012d000c3a004c2003410d3a00542002410d460d00200320012d000d3a004d2003410e3a00542002410e460d00200320012d000e3a004e2003410f3a00542002410f460d00200320012d000f3a004f200341103a005420024110460d00200320012d00103a0050200341113a005420024111460d00200320012d00113a0051200341123a005420024112460d00200320012d00123a0052200341133a005420024113460d00200341186a41086a200341c0006a41086a2903002205370300200320012d00133a0053200341186a41106a200341c0006a41106a2802002202360200200320032903402206370318200041116a2002360000200041096a200537000020002006370001410121020c020b200341003a00540b20034100360220200342013703182003410d360234200320033602302003200341186a36023c200341d4006a410136020020034201370244200341f4eaca003602402003200341306a3602502003413c6a41a8a3c800200341c0006a10371a200335022042208620033502188410080240200328021c450d00200328021810290b410021020b200020023a00002004450d00200110290b200341f0006a24000ba00403037f017e047f230041206b22022400200241086a200110c801024002400240024002402002280208450d00200041003602000c010b200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410272206450d030b41002107200241003602182002200636021020022004410c6e3602140240024002402003450d0003402002200110c80120022802000d03200128020420022802042204490d032004417f4c0d050240024020040d0041002108410121090c010b2004102d2209450d0720012802042004490d0320092001280200200410e4071a200128020422082004490d082001200820046b3602042001200128020020046a360200200421080b2004ad4220862008ad842105024020072002280214470d00200241106a20074101109d0120022802102106200228021821070b20062007410c6c6a22042005370204200420093602002002200741016a22073602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c020b200910290b2000410036020002402007450d002007410c6c21012006210403400240200441046a280200450d00200428020010290b2004410c6a2104200141746a22010d000b0b20022802142204450d002004410c6c450d00200610290b200241206a24000f0b1038000b1039000b2004200841ccafc000104c000bd10b010b7f230041d0016b2202240002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a3602002005417f6a220541024b0d000240024002400240024020050e03000102000b41002105200241003a00a8012003417f6a2106417e21070240034020062005460d0120024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a2107200420086a41016a210841002106200241c8006a21050c030b200541ff0171450d04200241003a00a8010c040b41002105200241003a00a8012003417f6a2106417e21070240034020062005460d0120024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a210741012106200420086a41016a2108200241c8006a21050c020b200541ff0171450d03200241003a00a8010c030b41002105200241003a00a8012003417f6a2106417e2107034020062005460d0220024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a2107200420086a41016a210841022106200241c8006a21050b200241286a41086a200541086a290000370300200241286a41106a200541106a290000370300200241286a41186a200541186a2900003703002002200529000037032841002105200241003a00c8012007417f6a2103034020072005460d0320024188016a20056a200820056a22042d00003a0000200120033602042001200441016a3602002002200541016a22043a00c8012003417f6a210320042105200441c000470d000b200241c8006a41386a220120024188016a41386a290300370300200241c8006a41306a220520024188016a41306a290300370300200241c8006a41286a220320024188016a41286a290300370300200241c8006a41206a220420024188016a41206a290300370300200241c8006a41186a220720024188016a41186a290300370300200241c8006a41106a220820024188016a41106a290300370300200241c8006a41086a220920024188016a41086a290300370300200241086a41086a220a200241286a41086a290300370300200241086a41106a220b200241286a41106a290300370300200241086a41186a220c200241286a41186a290300370300200220022903880137034820022002290328370308200020063a000020002002290308370001200041096a200a290300370000200041116a200b290300370000200041196a200c290300370000200041216a2002290348370000200041296a2009290300370000200041316a2008290300370000200041396a2007290300370000200041c1006a2004290300370000200041c9006a2003290300370000200041d1006a2005290300370000200041d9006a20012903003700000c030b200541ff0171450d00200241003a00a8010b200041033a00000c010b0240200541ff0171450d00200241003a00c8010b200041033a00000b200241d0016a24000bee0201027f230041106b220224000240024020002d0000220341024b0d0002400240024020030e03000102000b200241013a000f20012002410f6a41011072412010272203450d0320032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310290c020b200241023a000f20012002410f6a41011072412010272203450d0220032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310290c010b200241033a000f20012002410f6a41011072412010272203450d0120032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310290b2001200041216a41c0001072200241106a24000f0b1039000bb10201057f230041106b220324000240024002400240200141046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b2003410036020820032005360200200320043602042001200310710240024020032802042206200328020822056b2001490d0020032802002104200621070c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d00024020070d00410121040c020b2007102722040d010c060b2003280200210420062007460d00200420062007102b2204450d050b20032007360204200320043602000b200420056a2000200110e4071a2002290200200520016aad4220862004ad84100302402007450d00200410290b200341106a24000f0b1038000b1039000b1032000b1030000ba20201057f230041106b220324000240024002400240200141047422044104722205417f4c0d00200510272206450d012003410036020820032005360204200320063602002001200310710240024020032802042207200328020822056b2004490d0020032802002101200721060c010b200520046a22012005490d03200741017422062001200620014b1b22064100480d030240024020070d00024020060d00410121010c020b2006102722010d010c060b2003280200210120072006460d00200120072006102b2201450d050b20032006360204200320013602000b200120056a2000200410e4071a2002290200200520046aad4220862001ad84100302402006450d00200110290b200341106a24000f0b1038000b1039000b1032000b1030000bb60201057f230041106b2203240002400240024002402001410274220441046a2205417f4c0d000240024020050d0041012106410021050c010b200510272206450d020b2003410036020820032006360200200320053602042001200310710240024020032802042207200328020822016b2004490d0020032802002105200721060c010b200120046a22052001490d03200741017422062005200620054b1b22064100480d030240024020070d00024020060d00410121050c020b2006102722050d010c060b2003280200210520072006460d00200520072006102b2205450d050b20032006360204200320053602000b200520016a2000200410e4071a2002290200200120046aad4220862005ad84100302402006450d00200510290b200341106a24000f0b1038000b1039000b1032000b1030000ba30301067f230041106b22032400024020014105744104722204417f4c0d000240200410272205450d002003410036020820032004360204200320053602002001200310710240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020002101024002402006200522046b4120490d00200441206a21050c010b024002400240200441206a22052004490d00200641017422002005200020054b1b22004100480d000240024020060d00024020000d00410121070c020b2000102721070c040b20062000470d020b200021060c030b1032000b200720062000102b21070b2000210620070d001030000b200141206a2100200720046a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100302402006450d00200710290b200341106a24000f0b1039000b1038000b930201037f230041106b220224002002200028024836020c20012002410c6a410410720240412010272203450d0020032000290058370000200341186a200041f0006a290000370000200341106a200041e8006a290000370000200341086a200041e0006a290000370000200120034120107220031029200028024c2103200041d4006a28020022042001107120012003200410722001200041f8006a41201072200120004198016a41c0001072412010272203450d00200320002900d801370000200341186a200041f0016a290000370000200341106a200041e8016a290000370000200341086a200041e0016a2900003700002001200341201072200310292000200110ae03200241106a24000f0b1039000b13002000410436020420004188f1c3003602000b3400200041c087cc0036020420004100360200200041146a4105360200200041106a41fc93c400360200200041086a42063702000b130020004101360204200041c09bc4003602000bbb0201067f230041106b22022400024002400240412510272203450d0020024225370204200220033602004121200210710240024020022802042204200228020822036b4121490d00200341216a2105200228020021060c010b200341216a22052003490d02200441017422062005200620054b1b22074100480d020240024020040d00024020070d00410121060c020b2007102722060d010c050b2002280200210620042007460d00200620042007102b2206450d040b20022007360204200220063602000b200620036a22034100290090a445370000200341206a41002d00b0a4453a0000200341186a41002900a8a445370000200341106a41002900a0a445370000200341086a4100290098a44537000020002002290300370200200041086a2005360200200241106a24000f0b1039000b1032000b1030000bcb0101037f2001280200210202400240412010272203450d0020032002290000370000200341186a200241186a290000370000200341106a200241106a29000037000041082101200341086a200241086a2900003700000240200341c2ecc300460d00200328000041f0c2c98b06470d020b2003280004210402400240034020014120460d01200320016a2102200141016a210120022d0000450d000b410021010c010b20002004360204410121010b20002001360200200310290f0b1039000b20004100360200200310290bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bef0203027f017e017f230041206b2202240041c087cc00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941c687cc00ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240411410272203450d0020032001290000370000200341106a2205200141106a280000360000200341086a200141086a290000370000411410272201450d0020012003290000370000200141106a2005280000360000200141086a2205200341086a29000037000020031029413410272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042b4808080c0063702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a28000036000020011029200241206a24000f0b1039000ba0120b027f027e017f017e017f017e017f027e017f047e057f230041b0026b2203240020034188016a2001109804200341306a200328028801220420032802900110e301200341c0006a290300210520032903382106200328023021070240200328028c01450d00200410290b0240024002400240024002402007450d004200210820034188016a41186a420037030020034188016a41106a2209420037030020034188016a41086a22074200370300200342003703880141c087cc00ad4280808080e0008410012204290000210a2007200441086a2900003703002003200a370388012004102941c497c400ad4280808080d0008410012204290000210a20034188026a41086a220b200441086a2900003703002003200a37038802200410292009200329038802220a370300200341d8006a41086a2007290300370300200341d8006a41106a200a370300200341d8006a41186a200b2903003703002003200329038801370358200341186a200341d8006a412010e30120032903204200200328021822071b220a20067d220c200a56200341186a41106a290300420020071b220d20057d200a200654ad7d220a200d56200a200d511b0d03200341c8006a200110ae042003280248210720032003280250220436029c02200320073602980220034188026a2004ad4220862007ad841007108b0220032802880222040d010c020b2000419b023b0001200041086a4110360200200041046a41e1eac3003602000c030b200328028c02210e02400240024020034188026a41086a280200220b4110490d00200b4170714110460d00200b417c714120470d010b20034100360260200342013703582003410d3602a402200320034198026a3602a0022003200341d8006a3602ac022003419c016a41013602002003420137028c01200341f4eaca00360288012003200341a0026a36029801200341ac026a41a8a3c80020034188016a10371a200335026042208620033502588410080240200328025c450d00200328025810290b420021080c010b200441086a290000210f20042900002110200441186a29000021112004290010210d2004280020210b420121080b200e450d00200410290b0240200328024c450d00200710290b42002112024020084200510d0020034188016a20022010200f200d2011200b10af0420032d0088014104460d002000419b063b0001200041086a4112360200200041046a4181ebc3003602000c020b2003200637038802200320053703900202400240200620058450450d004200210f0c010b20032002360248200341d8006a200220034188026a200341c8006a10de03024020032903584201520d00200341e8006a290300210f200329036021120c010b20034180016a290300210f200341f8006a290300211220032903604201520d00200341d8006a41106a290300210d200341c0016a200341d8006a41186a290300370300200341b8016a200d37030020034188016a41086a41003a000020034191016a200229000037000020034199016a200241086a290000370000200341a1016a200241106a290000370000200341a9016a200241186a290000370000200341033a00880120034188016a10cb010b20034188016a41186a220e420037030020034188016a41106a220b420037030020034188016a41086a22044200370300200342003703880141dcbec500ad4280808080800184220d10012213290000210820034188026a41086a2207201341086a29000037030020032008370388022013102920042007290300370300200320032903880237038801419fe3c200ad4280808080d0018422081001221329000021112007201341086a290000370300200320113703880220131029200b2003290388022211370300200341d8006a41086a22132004290300370300200341d8006a41106a22142011370300200341d8006a41186a2215200729030037030020032003290388013703582003200341d8006a412010e301200341106a29030021112003290308211020032802002116200e4200370300200b4200370300200442003703002003420037038801200d10012217290000210d2007201741086a2900003703002003200d370388022017102920042007290300370300200320032903880237038801200810012217290000210d2007201741086a2900003703002003200d3703880220171029200b200329038802220d370300201320042903003703002014200d3703002015200729030037030020032003290388013703582003427f2011420020161b220d200f7c2010420020161b220820127c22122008542216ad7c220820162008200d542008200d511b22161b370390012003427f201220161b37038801200341d8006aad4280808080800484220d20034188016aad428080808080028422081003200e4200370300200b420037030020044200370300200342003703880141c087cc00ad4280808080e000841001221629000021122004201641086a29000037030020032012370388012016102941c497c400ad4280808080d000841001221629000021122007201641086a2900003703002003201237038802201610292009200329038802370000200941086a2007290300370000201320042903003703002014200b2903003703002015200e29030037030020032003290388013703582003200a370390012003200c37038801200d2008100320034188016a20011098042003350290014220862003280288012207ad8410040240200328028c01450d00200710290b20034188016a200110ae042003350290014220862003280288012207ad8410040240200328028c01450d00200710290b20034188016a200110ac042003350290014220862003280288012207ad8410040240200328028c01450d00200710290b20034188016a41106a200537030020034188016a41086a200637030020034188016a41186a2002290000370300200341a8016a200241086a290000370300200341b0016a200241106a290000370300200341b8016a200241186a290000370300200341c0016a2001290000370300200341c8016a200141086a290000370300200341d0016a200141106a280000360200200341113a00880120034188016a10cb01410421010c020b2000419b083b0001200041086a410c360200200041046a4193ebc3003602000b410321010b200020013a0000200341b0026a24000bef0203027f017e017f230041206b2202240041c087cc00ad4280808080e00084100122032900002104200241086a200341086a290000370300200220043703002003102941dfb3c700ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240411410272203450d0020032001290000370000200341106a2205200141106a280000360000200341086a200141086a290000370000411410272201450d0020012003290000370000200141106a2005280000360000200141086a2205200341086a29000037000020031029413410272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042b4808080c0063702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a28000036000020011029200241206a24000f0b1039000bfc0202047f017e230041c0006b2207240041042108024002402002200384500d00200741206a200110cd05200741086a2007280220220920072802284180a6cc004100410010c7012007280208210a02402007280224450d00200910290b0240200a4101470d002000419c023b0001200041086a4117360200200041046a41a1b3c700360200410321080c010b200741206a200110cd052007350228210b2007280220210941101027220a450d01200a2002370000200a2003370008200a41104120102b220a450d01200a2004370010200a41186a2005370000200a412041c000102b220a450d01200a2006360020200b4220862009ad84200aad4280808080c004841003200a102902402007280224450d00200910290b200741206a41186a200141186a290000370300200741206a41106a200141106a290000370300200741206a41086a200141086a29000037030020072001290000370320200741106a200741206a10cc050b200020083a0000200741c0006a24000f0b1030000b800503017f047e097f230041106b220324002003200141086a29030022042001290300220585220620054218898520064210868520064225897c220642a0cbbf9599b5a19f0a7c2207200229001885200229000020078542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852002290008200642efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852002290010200642bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010d507200341086a29030020032903007c200420057c852205a7220841197622094108742009722209411074200972210a2001280210220b200871210c200141186a280200210d200141146a280200210e4100210f024003400240200e200c6a2800002210200a732208417f73200841fffdfb776a71418081828478712208450d0002400340200d200868410376200c6a200b7141306c6a22092002460d0120092002412010e707450d012008417f6a2008712208450d020c000b0b200020093602042000410c6a41013a0000200041086a20013602002000410d6a2002290000370000200041156a200241086a2900003700002000411d6a200241106a290000370000200041256a200241186a290000370000410021080c020b200f41046a220f200c6a200b71210c201020104101747141808182847871450d000b200041106a2001360200200041086a2005370300200041146a20022900003700002000411c6a200241086a290000370000200041246a200241106a2900003700002000412c6a200241186a290000370000410121080b20002008360200200341106a24000ba70903017f027e147f230041f0006b220224002002200041086a2903002203200029030022047c37031820022003200485220320044218898520034210868520034225897c3703102001200241106a10b20420022903182002290310852204421988a7220541ff0071220641087420067222064110742006722107200141256a2108200041106a21092000280210220a2004a7220b71210c200141cd006a2d0000210d2001412c6a280200210e200141286a280200210f200041186a2802002110200041146a28020021112001280220211241002113200141cc006a2d000041ff017121140240034002402011200c6a28000022152007732206417f73200641fffdfb776a71418081828478712206450d000240024020124125490d000340024002402010200668410376200c6a200a7141d0006c6a22162001460d0020012016412010e7070d010b024002402016280220221741244b0d00201641206a41056a21180c010b201628022c2117201628022821180b200e2017470d000240200f2018460d00200f2018200e10e7070d010b2014201641cc006a2d0000470d002014450d03200d41ff0171201641cd006a2d000041ff0171460d030b2006417f6a20067122060d000c030b0b024020140d000340024002402010200668410376200c6a200a7141d0006c6a22162001460d0020012016412010e7070d010b024002402016280220221741244b0d00201641206a41056a21180c010b201628022c2117201628022821180b20122017470d00024020082018460d0020082018201210e7070d010b201641cc006a2d0000450d030b2006417f6a20067122060d000c030b0b0340024002402010200668410376200c6a200a7141d0006c6a22162001460d0020012016412010e7070d010b024002402016280220221741244b0d00201641206a41056a21180c010b201628022c2117201628022821180b20122017470d00024020082018460d0020082018201210e7070d010b2014201641cc006a2d0000470d00200d41ff0171201641cd006a2d0000460d020b2006417f6a2006712206450d020c000b0b201241244d0d02200f10290c020b201341046a2213200c6a200a71210c201520154101747141808182847871450d000b2002200036020c200241106a200141d00010e4071a41002106200b21160340200641046a22062016200a7122016a2116201120016a28000041808182847871220c450d000b02402011200c6841037620016a200a7122066a2c000022164100480d0020112011280200418081828478716841037622066a2d000021160b024020164101712201450d002000411c6a2802000d00200241e0006a20092002410c6a10b304200028021421112000280210210a410021060340200641046a2206200b200a7122166a210b201120166a28000041808182847871220c450d000b2011200c6841037620166a200a7122066a2c00004100480d002011280200418081828478716841037621060b2000200028021c20016b36021c20002802182116201120066a200541ff007122013a00002006417c6a200a7120116a41046a20013a00002016200641d0006c6a200241106a41d00010e4071a200041206a2206200628020041016a3602000b200241f0006a24000ba40604017f027e027f017e230041e0006b22022400200241d0006a20002902182001290300220342a0cbbf9599b5a19f0a7c220485200029020020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852000290208200342efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852000290210200342bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010d5072001200241d8006a29030020022903507c2203370300024002402000280220220541244b0d00200041256a21060c010b2000412c6a2802002105200041286a28020021060b200241c0006a20032005ad220485420042adfed5e4d485fda8d800420010d5072001200442adfed5e4d485fda8d8007e20022903407c200241c0006a41086a2903007c220437030002400240024002400240200541084b0d00200541014b0d0120050d02420021030c030b0240200541104b0d00200241306a2006290000200485420042adfed5e4d485fda8d800420010d507200241386a29030020022903307c200520066a41786a2900008521030c040b200520066a41786a2900002107200421030340200629000020038542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2004852104200641086a2106200342cf829ebbefefde82147c2103200541786a220541084b0d000b200420078521030c030b0240200541034b0d00200520066a417e6a33000042108620063300008420048521030c030b200520066a417c6a35000042208620063500008420048521030c020b200631000021030b200320048521030b200241206a2003420042adfed5e4d485fda8d800420010d5072001200241206a41086a29030020022903207c22033703000240200041cc006a3100002204500d00200241106a2003200485420042adfed5e4d485fda8d800420010d507200241106a41086a29030020022903107c200041cd006a3100008521030b20022003420042adfed5e4d485fda8d800420010d5072001200241086a29030020022903007c370300200241e0006a24000bdf0e06097f017e067f017e017f027e230041306b22032400024002400240024002400240024002402001280210220441016a22052004490d00200128020022062107024020064108490d00200641016a41037641076c21070b200520074101764d0d032005200741016a2207200520074b1b22050d01418cc5c0002108410021094104210a4100210b0c020b41b4a1c000411c41d0a1c0001033000b024002400240024020054108490d00200541ffffffff01712005470d02200541037441076e21060c010b200541016a21060b417f2006417f6a6776220b41086a2206200b41056a2205490d04200b41016a2207ad42d0007e220c422088a70d042006417c712206200ca76a22082006490d042008102722080d011030000b41b4a1c000411c41d0a1c0001033000b200b200741037641076c200b4108491b2109200841ff01200510e60720066a210a20012802002106200128021021040b2001280204220541046a210d200620056a41016a210e2005280200417f7341808182847871210f200128020821102002280200221141086a2112024003400240200f0d000340200d200e4f0d03201041c0026a2110200d2802002106200d41046a2205210d2006418081828478712206418081828478460d000b200641808182847873210f2005210d0b2003201229030022132011290300220c7c37032820032013200c852213200c4218898520134210868520134225897c3703202010200f6841037641d0006c6a2214200341206a10b2042003290328200329032085220ca72106410021050340200541046a22052006200b7122076a2106200820076a280000418081828478712202450d000b200f417f6a21050240200820026841037620076a200b7122066a2c00004100480d002008280200418081828478716841037621060b2005200f71210f200820066a200ca741197622053a00002006417c6a200b7120086a41046a20053a0000200a200641d0006c6a201441d00010e4071a0c000b0b200120043602102001200a360208200041003602002001200920046b36020c2001280204210520012008360204200128020021062001200b3602002006450d040240200641086a200641056a490d00200641016aad42d0007e422088a71a0b200510290c040b200641016a21074100210541002106024003400240024020054101710d00200620074f0d0320062105200641016a21060c010b200641036a220520064922080d022005200749220b450d022007200641046a20081b2007200b1b21060b200128020420056a220520052802002205410776417f73418182840871200541fffefdfb07726a360200410121050c000b0b20012802042106200128020041016a220541044f0d01200641046a2006200510e5071a0c020b41b4a1c000411c41d0a1c0001033000b200620056a20062800003600000b417f2106024002402001280200220541016a220a2005490d002002280200220f41086a21144100210403402004221041016a21040240201020012802046a2d0000418001470d000240034020012802082106200320142903002213200f290300220c7c37032820032013200c852213200c4218898520134210868520134225897c3703202006201041d0006c6a220d200341206a10b2042001280204210b20012802002108410021062003290328200329032085220ca7220e21050340200641046a2206200520087122076a2105200b20076a280000418081828478712202450d000b0240200b20026841037620076a20087122066a2c00004100480d00200b280200418081828478716841037621060b20062008200e7122056b201020056b732008714104490d01200b20066a22052d000021072005200ca741197622023a00002006417c6a200871200b6a41046a20023a00000240200741ff01460d002001280208200641d0006c6a2206290200210c2006200d290200370200200641186a220529020021132005200d41186a2207290200370200200641106a220529020021152005200d41106a2208290200370200200641086a220529020021162005200d41086a220b290200370200200d200c370200200b20163702002008201537020020072013370200200641386a2205290200210c2005200d41386a2207290200370200200641306a220529020021132005200d41306a2208290200370200200641286a220529020021152005200d41286a220b290200370200200629022021162006200d290220370220200d20163702202007200c37020020082013370200200b2015370200200641c8006a2205290000210c2005200d41c8006a2207290000370000200629004021132006200d290040370040200d20133700402007200c3700000c010b0b2001280204220520106a41ff013a0000200520012802002010417c6a716a41046a41ff013a00002001280208200641d0006c6a200d41d00010e4071a0c010b200b20106a200ca741197622063a000020082010417c6a71200b6a41046a20063a00000b2004200a470d000b200128020022064108490d010b200641016a41037641076c21060b200041003602002001200620012802106b36020c0b200341306a24000b13002000410d3602042000419caac4003602000b920203027f017e037f230041206b220224000240024020012802082203ad420c7e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410421060c010b200510272206450d020b200241003602082002200636020020022005410c6e360204200241002003109d012002280208210702402003450d002003410c6c210620022802002007410c6c6a21052003410274417c6a41027621030340200241106a200110f105200541086a200241106a41086a280200360200200520022903103702002005410c6a21052001410c6a2101200641746a22060d000b200720036a41016a21070b20002002290300370200200041086a2007360200200241206a24000f0b1038000b1039000b8c1a06067f017e027f037e057f057e230041e0036b2203240020012800002104200341106a41186a2001411c6a290000370300200341106a41106a200141146a290000370300200341106a41086a2001410c6a2900003703002003200129000437031020022802002105200341a0036a41186a22064200370300200341a0036a41106a22074200370300200341a0036a41086a22014200370300200342003703a00341b1dcc900ad4280808080f000841001220829000021092001200841086a290000370300200320093703a00320081029418886ca00ad4280808080c00184100122082900002109200341c0036a41086a220a200841086a290000370300200320093703c00320081029200720032903c0032209370300200341d0006a41086a220b2001290300370300200341d0006a41106a2009370300200341d0006a41186a200a290300370300200320032903a003370350200341086a200341d0006a412010fc01410021080240024002402005200328020c410020032802081b460d00200341d0006a200510c006200341c8026a41086a200341d0006a410c6a290200370300200341c8026a41106a200341d0006a41146a290200370300200341c8026a41186a200341d0006a411c6a290200370300200320032902543703c802024020032802504101470d00200341a0036a41086a2208200341c8026a41086a2903002209370300200341a0036a41106a2207200341c8026a41106a290300220c370300200341a0036a41186a2205200341c8026a41186a290300220d370300200320032903c802220e3703a003200341f4006a2802002101200341a8026a41186a220a200d370300200341a8026a41106a2206200c370300200341a8026a41086a220b20093703002003200e3703a80220012002280210460d020b200041003602402002280204210702402002410c6a2802002201450d002001410c6c21082007210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b200241086a2802002201450d022001410c6c450d02200710290c020b200b4120360200200320043602502003200341106a360254200341c8026a200341d0006a10b705200341d0006a20032802c802220520032802d00210cd012001200341d9006a2900003703002007200341e1006a2900003703002006200341e9006a290000370300200320032900513703a003024020032d00504101470d00200341306a41186a200341a0036a41186a290300370300200341306a41106a200341a0036a41106a290300370300200341306a41086a200341a0036a41086a290300370300200320032903a003370330410121080b024020032802cc02450d00200510290b2002410c6a2802002101200241086a28020021052002280204210a0240024020080d002000410036024002402001450d002001410c6c2108200a210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b2005450d032005410c6c0d010c030b20022802102106200341c8016a41186a2208200341306a41186a2903002209370300200341c8016a41106a2202200341306a41106a290300220c370300200341c8016a41086a2204200341306a41086a290300220d37030020032003290330220e3703c801200341d0006a41186a220b2009370300200341d0006a41106a220f200c370300200341d0006a41086a200d3703002003200e370350200341c8026a200341d0006a10a002200341e8016a41186a22102008290300370300200341e8016a41106a22082002290300370300200341e8016a41086a2004290300370300200320032903c8013703e801024020032802e80222110d002000410036024002402001450d002001410c6c2108200a210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b2005450d032005410c6c0d010c030b20034188026a41186a201029030037030020034188026a41106a200829030037030020034188026a41086a200341e8016a41086a290300370300200320032903e80137038802200341a8026a41186a200341c8026a41186a290300370300200341a8026a41106a200341c8026a41106a290300370300200341a8026a41086a200341c8026a41086a290300370300200320032903c8023703a802200341f0026a290300210c20032802ec022104200341a0036a41186a22104200370300200341a0036a41106a22124200370300200341a0036a41086a22084200370300200342003703a00341b1dcc900ad4280808080f000841001220229000021092008200241086a290000370300200320093703a0032002102941b8dcc900ad4280808080a00184100122022900002109200341c0036a41086a2213200241086a290000370300200320093703c00320021029200720032903c003370000200741086a2013290300370000200341d0006a41086a2008290300370300200f2012290300370300200b2010290300370300200320032903a003370350200341d0036a200341d0006a108d020240024020032802d00322020d00410021080c010b20032902d4032209422088a72108200942ffffff3f83500d00200210290b024020082006470d0020002003290388022209370300200041206a20032903a802220d370300200341d0006a41186a20034188026a41186a290300220e370300200341d0006a41106a20034188026a41106a2903002214370300200341d0006a41086a20034188026a41086a2903002215370300200341d0006a41286a200341a8026a41086a2903002216370300200341d0006a41306a200341a8026a41106a2903002217370300200341d0006a41386a200341a8026a41186a2903002218370300200041086a2015370300200041106a2014370300200041186a200e370300200041286a2016370300200041306a2017370300200041386a2018370300200320093703502003200d370370200041c8006a200c370300200020043602442000201136024002402001450d002001410c6c2108200a210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b2005450d032005410c6c0d010c030b2000410036024002402004450d00200441306c450d00201110290b02402001450d002001410c6c2108200a210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b2005450d022005410c6c450d020b200a10290c010b2005200a290300370300200720062903003703002008200b290300370300200320032903a8023703a0032002410c6a280200210a200228020421060240410110272208450d00200841003a000041004100350280804042adfed5e4d485fda8d8007e200341d0006aad7c421f8922093e02808040200341c8026a41206a4100360200200341c8026a41186a4204370300200341dc026a418cc5c000360200200341003602d8022003418080c000ad3703c802200320093703d002200341d0006a41186a220741b4e0c800ad428080808010841010220141186a290000370300200341d0006a41106a2205200141106a290000370300200341d0006a41086a220b200141086a2900003703002003200129000037035020011029200341f4026a42818080801037020020034194036a20072903003702002003418c036a200529030037020020034184036a200b290300370200200320083602f002200320032903503702fc020240200a450d002006200a410c6c6a210841002802b0a140210741002902a8a140210920062101034020034188026a41086a20073602002003200937038802200341d0006a200341c8026a20034188026a2001280200200141086a28020010c1062001410c6a22012008470d000b0b200341d0006a200341c8026a41d80010e4071a200341c0016a200341a0036a41186a290300370300200341b8016a200341a0036a41106a290300370300200341b0016a200341a0036a41086a290300370300200320032903a0033703a8012000200341d0006a2004200341106a412010c206024020032802602207450d00200341e4006a280200220841046a2101200720086a41016a21002008280200417f73418081828478712105200341e8006a280200210802400340024002402005450d00200521070c010b0340200120004f0d03200841c0016a210820012802002107200141046a220521012007418081828478712207418081828478460d000b2007418081828478732107200521010b2007417f6a2007712105200820076841037641306c6a220741246a280200450d00200728022010290c000b0b02402003280260220141086a200141056a490d00200141016aad42307e422088a71a0b200328026410290b0240200341fc006a280200450d00200328027810290b0240200a450d00200a410c6c21082006210103400240200141046a280200450d00200128020010290b2001410c6a2101200841746a22080d000b0b200241086a2802002201450d012001410c6c450d01200610290c010b1039000b200341e0036a24000bd90301037f230041106b220224000240024020002802082203280200220441024b0d0002400240024020040e03000102000b200241003a00082001200241086a41011072412010272204450d03200441186a200341206a290000370000200441106a200341186a290000370000200441086a200341106a2900003700002004200341086a290000370000200120044120107220041029200220032802043602082001200241086a410410720c020b200241013a00082001200241086a41011072412010272204450d02200441186a200341206a290000370000200441106a200341186a290000370000200441086a200341106a2900003700002004200341086a290000370000200120044120107220041029200220032802043602082001200241086a410410720c010b200241023a00082001200241086a41011072412010272204450d01200441186a200341206a290000370000200441106a200341186a290000370000200441086a200341106a2900003700002004200341086a290000370000200120044120107220041029200220032802043602082001200241086a410410720b200220002903003703082001200241086a41081072200220002903103703082001200241086a41081072200241106a24000f0b1039000bf90403027f017e067f230041d0006b2202240041fce2c800ad4280808080f00184100122032900002104200241086a200341086a290000370300200220043703002003102941c4f4c800ad4280808080c00184100122032900002104200241106a41086a200341086a2900003703002002200437031020031029200220013703302002200241306aad42808080808001841002220329000037033820031029200241cc006a200241306a41086a3602002002200241386a41086a3602442002200241306a3602482002200241386a360240200241206a200241c0006a107502400240024002402002280228220541206a2206417f4c0d00200228022021070240024020060d0041002108410121030c010b200610272203450d02200621080b024002402008410f4d0d00200821090c010b200841017422094110200941104b1b22094100480d03024020080d002009102722030d010c050b20082009460d00200320082009102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020094170714110460d00200921080c010b200941017422084120200841204b1b22084100480d0320092008460d00200320092008102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821090c010b200541206a22092005490d032008410174220a2009200a20094b1b22094100480d0320082009460d00200320082009102b2203450d040b200341206a2007200510e4071a20002006360208200020093602042000200336020002402002280224450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a29000037030020022004370308200310294185b2c400ad4280808080f00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bba0e05037f017e0d7f017e017f230041b0016b22022400200241106a200110c80102400240024002402002280210450d00200041003602000c010b20022802142203200128020441246e2204200420034b1bad42247e2205422088a70d022005a72204417f4c0d020240024020040d00410421060c010b200410272206450d020b4100210720024100360220200220063602182002200441246e36021c02402003450d0020024188016a41046a2108200241f5006a210920024188016a410772210a2002419b016a220b41056a210c4100210d0340024002400240024002402001280204220e450d002001280200220f2d000021042001200e417f6a22103602042001200f41016a360200200441074b0d00024002400240024002400240024020040e080007010703040205000b200241086a200110c80120022802080d062001280204200228020c220e490d06200e417f4c0d0f0240200e0d00410121044101450d07410021110c090b200e102d2204450d0e2001280204200e490d0520042001280200200e10e40721112001280204220f200e490d072001200f200e6b36020420012001280200200e6a3602002011450d06200e21110c080b41002104200241003a00a801200e417e6a210e0240034020102004460d0120024188016a20046a200f20046a221141016a2d00003a00002001200e3602042001201141026a3602002002200441016a22113a00a801200e417f6a210e2011210420114120470d000b200241f8006a41086a200a41086a2800003602002002200a2900003703782002200b2900003703682002200c29000037006d20022f018801210e20022d008a012111200228008b012104200941026a20024185016a41026a2d00003a0000200920022f0085013b000020044108762112200e201141107472210e410021110c0a0b200441ff0171450d05200241003a00a8010c050b20024188016a200110ed05200228028c012211450d0420022f01880120022d008a0141107472210e20022d008b012104200220022903900137027c20022011360278410121110c080b20024188016a200110ed05200228028c012211450d0320022f01880120022d008a0141107472210e20022d008b012104200220022903900137027c20022011360278410221110c070b20024188016a200110ed05200228028c012211450d0220022f01880120022d008a0141107472210e20022d008b012104200220022903900137027c20022011360278410321110c060b2010450d01200f2d000121042001200e417e6a22113602042001200f41026a36020020040d012011450d01200f2d000221112001200e417d6a22103602042001200f41036a360200201141014b0d014100210442002113420021050240024020110e020100010b20104104490d02200f35000321052001200e41796a22043602042001200f41076a36020020044104490d02200f35000721132001200e41756a3602042001200f410b6a36020020134220862113410121040b200241e8006a41086a200841086a290200370300200220022802880136028001200220052013843703782002200829020037036841042111410021120c040b200410290b200241d8006a41086a200241f8006a41086a280200360200200241c8006a41086a200241e8006a41086a29030037030020022002290378370358200220022903683703482000410036020002402007450d00200741246c21042006210103400240024020012d0000220e41044b0d00024002400240200e0e050400010204040b2001410c6a280200450d03200141086a28020010290c030b2001410c6a280200450d02200141086a28020010290c020b2001410c6a280200450d01200141086a28020010290c010b200141086a280200450d00200141046a28020010290b200141246a21012004415c6a22040d000b0b200228021c2201450d06200141246c450d06200610290c060b200e200f41ccafc000104c000b200241e8006a41086a200841086a2902003703002002200e36027c200220113602782002200228028801360280012002200829020037036820044108762112410521110b0b200d41016a210d200241d8006a41086a200241f8006a41086a280200220f360200200241c8006a41086a200241e8006a41086a2903002205370300200241386a41086a2210200f360200200241286a41086a220f200537030020022002290378220537035820022002290368221337034820022005370338200220133703282012410874200441ff017172211402402007200228021c470d00200241186a2007410110960120022802182106200228022021070b2006200741246c6a220420143600042004200e3b0001200420113a0000200441036a200e4110763a0000200441106a201028020036000020042002290338370008200420022903283700142004411c6a200f2903003700002002200741016a2207360220200d2003470d000b0b20002002290318370200200041086a200241186a41086a2802003602000b200241b0016a24000f0b1039000b1038000b98ac0114057f017e057f017e037f027e087f037e017f017e057f027e0d7f017e017f017e027f037e017f017e230022012102200141c0176b41607122012400200141e0086a41186a4200370300200141e0086a41106a22034200370300200141e0086a41086a22044200370300200142003703e00841d482cc00ad4280808080d00084100122052900002106200141c80d6a41086a2207200541086a290000370300200120063703c80d2005102920042007290300370300200120012903c80d3703e00841fab1c400ad4280808080b001841001220529000021062007200541086a290000370300200120063703c80d20051029200320012903c80d2206370300200141a80d6a41086a2004290300370300200141a80d6a41106a2006370300200141a80d6a41186a2007290300370300200120012903e0083703a80d200141d80d6a200141a80d6a412010f901200041a08d066e210802400240024002400240024020012802d80d4101470d0020012902dc0d2206422088a741e8076a2000470d00200141d80d6a4180a6cc00410010940320014188176a20012802d80d41e8077010b904200141d80d6a200128028817220420012802901710bc0420012802d80d210720014188126a200141d80d6a41047241ac0410e4071a0240024020074103460d00200141e0086a20014188126a41ac0410e4071a0240200128028c17450d00200410290b200120073602b004200141b0046a410472200141e0086a41ac0410e4071a0c010b0240200128028c17450d00200410290b200141023602a808200141023602f007200141023602b8072001410236028007200141023602c8062001410236029006200141023602d805200141023602a005200141023602e804200141023602b0040b2006a72109410021070340200141d80d6a200710b90420013502e00d42208620012802d80d2204ad841004024020012802dc0d450d00200410290b200741016a220741e807470d000b200141e0086a41186a220a4200370300200141e0086a41106a220b4200370300200141e0086a41086a22044200370300200142003703e00841d482cc00ad4280808080d00084100122052900002106200141c80d6a41086a2207200541086a290000370300200120063703c80d2005102920042007290300370300200120012903c80d3703e00841fab1c400ad4280808080b001841001220529000021062007200541086a290000370300200120063703c80d20051029200320012903c80d370000200341086a2007290300370000200141a80d6a41086a2004290300370300200141a80d6a41106a200b290300370300200141a80d6a41186a200a290300370300200120012903e0083703a80d200141a80d6aad4280808080800484220c100420012802b004210720014188126a200141b0046a41047241ac0410e4071a20074103460d00200120073602d80d200141d80d6a41047220014188126a41ac0410e4071a20014188126a210a200141b9046a210d200141d80d6a210720014198046a41106a210e0340024002400240200a2007460d0020072802002104200741386a2205210720044102460d03200141b0046a200541486a220f10bd0420014198046a20012802b004220720012802b804220410e301200e290300210620012903a0042110024020012903980422114201520d002004ad4220862007ad8410040b2011a72104024020012802b404450d00200710290b2005210720044101470d03200f2802004101470d0120014188176a2005414c6a10cc030c020b200141b0046a200141d80d6a41b00410e4071a200141d8096a4200370300200141d0096a4200370300200141b8096a4200370300200141b0096a4200370300200141e0086a41386a4200370300200141e0086a41306a4200370300200141e0086a41186a4200370300200141c8096a4100360200200141a8096a4100360200200141e0086a41286a4100360200200142003703f008200142013703c009200142013703a0092001420137038009200141003602e808200142013703e00841002104024003400240200141b0046a200441386c6a22072802004102460d0020014188046a200741286a290300200741306a2903002004410873410f71410274419482cc006a350200420010d507410110272205450d0920014188046a41086a29030021062001290388042110200520043a0000200141e0086a20044105746a2207410472210a02402007280204450d00200728020010290b200a4101360200200720053602002007201037031020074101360208200741186a20063703000b02402004450d00200141e0086a20044105746a221241086a211320124104722114201241106a210a41002105200141e0086a21070340024020042005220b41016a22056b220d20044d0d00411b2107418ba6c70021040c0d0b0240200b41024d0d004115210741bca6c70021040c0d0b024002400240024002400240200b0e03000102000b200d4103490d030c100b200d41014b0d0f4107210e200d0e020301030b4109210e200d0d0e0c020b4108210e0c010b200d41046a210e0b02400240200141b0046a200e41ff017141386c6a220b2802004102460d00200141f8036a200b41286a290300200b41306a290300200e410873410f71410274419482cc006a350200420010d507200741106a290300221020012903f8037c2206200a29030058200741186a290300200141f8036a41086a2903007c2006201054ad7c2210200a41086a29030022115820102011511b0d01200741086a280200220b417f4c0d052007280200211502400240200b0d00410021164101210d0c010b200b1027220d450d0b200b21160b024002402016200b490d002016210f0c010b2016410174220f200b200f200b4b1b220f4100480d0c024020160d00200f1027220d0d010c0e0b2016200f460d00200d2016200f102b220d450d0d0b200d2015200b10e40721160240200b200f470d00200b41016a220f200b490d0c200b4101742215200f2015200f4b1b220f4100480d0c0240200b0d00200f1027220d450d0e0c010b200b200f460d002016200b200f102b220d450d0d0b200d200b6a200e3a0000200b41016a210b02402014280200450d00201228020010290b200a20063703002014200f3602002012200d3602002013200b360200200a20103703080c010b200741106a220d290300200a29030058200741186a220f2903002206200a41086a29030022105820062010511b0d00200741086a280200220b417f4c0d042007280200211702400240200b0d004100210e410121150c010b200b10272215450d0a200b210e0b02400240200e200b490d00200e21160c010b200e4101742216200b2016200b4b1b22164100480d0b0240200e0d00201610272215450d0d0c010b200e2016460d002015200e2016102b2215450d0c0b20152017200b10e407210e200f2903002106200d290300211002402014280200450d00201228020010290b200a2010370300201420163602002012200e3602002013200b360200200a20063703080b200741206a210720042005470d000b0b200441016a22044104470d000b20012802c809210f20012802c409211520012802c0092112024020012802e408450d0020012802e00810290b0240200128028409450d0020012802800910290b024020012802a409450d0020012802a00910290b024002400240200f0d004100211841082119410021050c010b200f41ffffff1f71200f470d08200f41067422074100480d08200710272219450d0920074106762118200141e0086a410872210a41002105201921070340201220056a2d0000220b410a460d01200142013703e008200141b0046a200b41386c6a2204280200220e4102460d0241002004200e4102461b22042903102110200420012903f00837031020042903082111200420012903e80837030820042903002106200420012903e0083703002004290328211a20044200370328200441186a220e290300211b200e20012903f808370300200441306a220e290300211c200e4200370300200120103703f008200120113703e808200120063703e0082001201b3703f8082004290320211020014188176a41106a2214200a41106a29020037030020014188176a41086a2216200a41086a2902003703002001200a29020037038817410021042006422088a7220d210e02402006a70d0010be04210e200141e0166a41106a2014290300370300200141e0166a41086a201629030037030020012001290388173703e016410121040b2007201c3703082007201a370300200741146a200d360200200741106a2004360200200141e0166a41106a2903002106200141e0166a41086a290300211120012903e016211a2007413c6a200b3a0000200741186a201a370300200741206a2011370300200741286a2006370300200741386a200e360200200741306a20103703002007413d6a20012f00b8163b00002007413f6a200141b8166a41026a2d00003a0000200741c0006a2107200f200541016a2205470d000b0b02402015450d00201210290b200141e0086a41186a22174200370300200141e0086a41106a221d4200370300200141e0086a41086a22154200370300200142003703e00841d482cc00ad4280808080d00084221e100122072900002106200141c80d6a41086a221f200741086a290000370300200120063703c80d200710292015201f290300370300200120012903c80d3703e00841d982cc00ad4280808080e00184100122072900002106201f200741086a290000370300200120063703c80d20071029200320012903c80d370000200341086a2220201f290300370000200141a80d6a41086a22122015290300370300200141a80d6a41106a2221201d290300370300200141a80d6a41186a22222017290300370300200120012903e0083703a80d200141f0036a200141a80d6a412010fc01200141bc046a20012802f403410020012802f0031b360200200141b0046a41086a220f41023a00002001410f3a00b004200141b0046a10cb0102402005450d00201920054106746a2123200141b0046aad42808080808002842124200141e0086aad42808080808004842125200920086b222620094b2127200141b9046a2128200141b0046a41106a210d20014188176a4104722113200141b0046a4105722129200141b0046a41036a212a200141b0046a41186a2116200141b0046a41206a212b200141b0046a41286a212c200141e8046a212d201921050340200541086a29030021062005290300211020052802102104200d200541246a29020037030020162005412c6a290200370300202b200541346a280200360200200f2005411c6a2902003703002001200541146a2902003703b00420044102460d01200141b8166a41086a200f2903002211370300200141b8166a41106a200d290300221a370300200141b8166a41186a2016290300221b370300200141b8166a41206a202b280200220a360200200120012903b004221c3703b81620052d003c212e20052802382107200141e0166a41206a220b200a360200200141e0166a41186a220a201b370300200141e0166a41106a220e201a370300200141e0166a41086a221420113703002001201c3703e016200120073602841702400240024002400240024002400240024020040d00200141c8036a200710bf04201020012903c80322117d221a2010562006200141c8036a41086a2903007d2010201154ad7d221120065620112006511b450d014200211a420021110c020b20014188176a41206a222f200b28020036020020014188176a41186a2230200a29030037030020014188176a41106a2231200e29030037030020014188176a41086a22322014290300370300200120012903e01637038817200141013a00bf17200141083a00be17200120133602b017200120103703a80d200120063703b00d02400240201020068450450d004200211141002107420021330c010b200120133602c80d2001200141c80d6a3602c0042001200141be176a3602bc042001200141b0176a3602b8042001200141bf176a3602b4042001200141a80d6a3602b004200141e0086a2013200141b0046a10c802024020012802e0084101470d0020012903e8082111410121070c010b200141e0086a41286a290300213320012903800921114100210720012903e8084201520d0020012903f008211a20012802c80d2107202d201729030037030020282007290000370000202841086a200741086a290000370000202841106a200741106a290000370000202841186a200741186a2900003700002001201a3703e00441002107200141003a00b804200141033a00b004200141b0046a10cb010b20070d0720164200370300200d4200370300200f4200370300200142003703b00441dcbec500ad4280808080800184221a10012207290000211b2012200741086a2900003703002001201b3703a80d20071029200f2012290300370300200120012903a80d3703b004419fe3c200ad4280808080d00184221b10012207290000211c2012200741086a2900003703002001201c3703a80d20071029200d20012903a80d370000200d41086a223420122903003700002015200f290300370300201d200d29030037030020172016290300370300200120012903b0043703e008200141d8036a200141e0086a412010e301200141d8036a41106a290300211c20012903e003213520012802d803210720164200370300200d4200370300200f4200370300200142003703b004201a10012204290000211a2012200441086a2900003703002001201a3703a80d20041029200f2012290300370300200120012903a80d3703b004201b10012204290000211a2012200441086a2900003703002001201a3703a80d20041029200d20012903a80d370000203420122903003700002015200f290300370300201d200d29030037030020172016290300370300200120012903b0043703e00820014200201c420020071b221a20337d2035420020071b221b201154ad7d221c201b20117d2211201b56201c201a56201c201a511b22071b3703b80420014200201120071b3703b00420252024100320174200370300201d420037030020154200370300200142003703e008201e100122072900002111201f200741086a290000370300200120113703c80d200710292015201f290300370300200120012903c80d3703e00841e782cc00ad4280808080a00184221a100122072900002111201f200741086a290000370300200120113703c80d20071029200320012903c80d3700002020201f290300370000201220152903003703002021201d29030037030020222017290300370300200120012903e0083703a80d200141b0046a200141a80d6a412010c004024020012802b00422140d0041002136200141003602b817200142043703b017410421140c040b20012902b4042111200120143602b017200120113702b4172011a7213602402011422088a7223741014b0d00024020370e020500050b4100210420012802841721070c030b4100210420012802841721072037210a03402004200a410176220b20046a220e20072014200e4102746a280200491b2104200a200b6b220a41014b0d000c030b0b20014188176a20014184176a10cc03200141013a00bf17200141083a00be172001201a3703a80d200120113703b00d200120014188176a3602b01702400240201a20118450450d004200211b41002104420021380c010b200120014188176a3602c80d2001200141c80d6a3602c0042001200141be176a3602bc042001200141b0176a3602b8042001200141bf176a3602b4042001200141a80d6a3602b004200141e0086a20014188176a200141b0046a10c802024020012802e0084101470d0020012903e808211b410121040c010b200141e0086a41286a2903002138200129038009211b4100210420012903e8084201520d0020012903f008211c20012802c80d2104202d201729030037030020282004290000370000202841086a200441086a290000370000202841106a200441106a290000370000202841186a200441186a2900003700002001201c3703e00441002104200141003a00b804200141033a00b004200141b0046a10cb010b20040d0620164200370300200d4200370300200f4200370300200142003703b00441dcbec500ad4280808080800184221c1001220429000021352012200441086a290000370300200120353703a80d20041029200f2012290300370300200120012903a80d3703b004419fe3c200ad4280808080d0018422351001220429000021392012200441086a290000370300200120393703a80d20041029200d20012903a80d370000200d41086a220b20122903003700002015200f290300370300201d200d29030037030020172016290300370300200120012903b0043703e008200141b0036a200141e0086a412010e301200141b0036a41106a290300213920012903b803213a20012802b003210420164200370300200d4200370300200f4200370300200142003703b004201c1001220a290000211c2012200a41086a2900003703002001201c3703a80d200a1029200f2012290300370300200120012903a80d3703b00420351001220a290000211c2012200a41086a2900003703002001201c3703a80d200a1029200d20012903a80d370000200b20122903003700002015200f290300370300201d200d29030037030020172016290300370300200120012903b0043703e008200142002039420020041b221c20387d203a420020041b2235201b54ad7d22392035201b7d221b2035562039201c562039201c511b22041b3703b80420014200201b20041b3703b0042025202410030b202c200637030020162011370300200120103703d0042001201a3703c004200120073602bc042001202e3a00b904200141043a00b8042001410f3a00b004200141b0046a10cb010c040b2007201420044102746a280200220a460d0220042007200a4b6a220420374d0d01200420371041000b410021372001280284172107410021040b024020372036470d00200141b0176a2036410110980120012802b417213620012802b01721140b201420044102746a220a41046a200a203720046b41027410e5071a200a20073602002001203741016a22373602b8170b20174200370300201d420037030020154200370300200142003703e008201e100122042900002111201f200441086a290000370300200120113703c80d200410292015201f290300370300200120012903c80d3703e008201a100122042900002111201f200441086a290000370300200120113703c80d20041029200320012903c80d3700002020201f290300370000201220152903003703002021201d29030037030020222017290300370300200120012903e0083703a80d0240024020140d00200c10040c010b200141203602b4042001200141a80d6a3602b00420142037200141b0046a10ef03203641ffffffff0371450d00201410290b2001280288172104200141b0046a41c0006a2006370300200d20132900003700002034201341086a220e290000370000200d41106a201341106a2214290000370000200d41186a201341186a2237290000370000200120103703e804200120043602bc0441032104200141033a00b804200120073602e0042001410f3a00b0042001202e3a00b904200141b0046a10cb010240024002400240202e410f710e0a00000000010101020203000b410021040c020b410121040c010b410221040b200141a80d6a200420096a223610c104200141b0046a20012802a80d220a20012802b00d223410c0040240024002400240024020012802b00422040d004100210b200141003602e808200142043703e0080c010b200120012902b40422113702e408200120043602e0082011422088a7220b2011a7223b460d002004200b4102746a20073602002001200b41016a220b3602e8080c010b200141e0086a200b410110980120012802e008220420012802e808220b4102746a20073602002001200b41016a220b3602e8082004450d0120012802e408213b0b200120343602b4042001200a3602b0042004200b200141b0046a10ef03203b41ffffffff0371450d01200410290c010b2034ad422086200aad8410040b024020012802ac0d450d00200a10290b200141b0046a200710c20420013502b804211120012802b004210a412010272204450d0a20042013290000370000200441186a2037290000370000200441106a2014290000370000200441086a200e2900003700002011422086200aad842004ad4280808080800484100320041029024020012802b404450d00200a10290b202a41206a202f280200360000202a41186a2030290300370000202a41106a2031290300370000202a41086a2032290300370000202a2001290388173700002015200f290000370300201d200d29000037030020172016290000370300200141e0086a411f6a2204200141b0046a411f6a290000370000200120012900b0043703e008200141003a00b404200120363602b004202920012903e008370000202941086a2015290300370000202941106a201d290300370000202941186a20172903003700002029411f6a2004290000370000200141c80d6a200710c30420013502d00d211120012802c80d210441041027220a450d0a200142043702ac0d2001200a3602a80d200141b0046a200141a80d6a10c40420012802ac0d210a20114220862004ad8420013502b00d42208620012802a80d220bad8410030240200a450d00200b10290b20012802cc0d450d00200410290b20270d0041032104410321140240024002400240024002400240024002400240202e410f710e0a00010203040506070809000b41002104410021140c080b41002114410121040c070b41002114410221040c060b410021140c050b41012104410121140c040b41012114410221040c030b410121140c020b410221040b410221140b20014188176a200710c504200141b0046a200128028817222e200128029017223710c604202620146a21070240024020012802b004220e0d004100210b200141003602e808200142083703e0084108210e0c010b200120012902b40422113702e4082001200e3602e0082011422088a7210b0b202620046a210a024002402007200b4b0d00200b21040c010b200141e0086a200b2007200b6b223010920120012802e008220e20012802e80822044104746a212f02400240024020304102490d00202f41002007200b417f736a223041047410e6071a200e200420096a20146a2008200b6a6b4104746a41706a212f203020046a21040c010b2030450d010b202f4200370308202f4200370300200441016a21040b200120043602e8080b02402007200a4b0d000340024002400240200420074b0d0020042007470d010240200420012802e408470d00200141e0086a2004410110920120012802e008210e20012802e80821040b200e20044104746a220b2006370308200b20103703002001200441016a22043602e8080c020b200e20074104746a220b200b290300221120102011201056200b41086a220b290300221120065620112006511b22141b370300200b2011200620141b3703000c010b200141c4046a4101360200200142013702b40420014198e3ca003602b004200141043602ac0d200141d8b2c4003602a80d2001200141a80d6a3602c004200141b0046a4180a6cc001040000b2007200a4f210b20072007200a496a2207200a4d200b410173710d000b0b20012802e4082107200120373602b4042001202e3602b004200e2004200141b0046a10a2040240200741ffffffff0071450d00200e10290b200128028c17450d00202e10290b200541c0006a22052023470d000b0b2018450d05201910290c050b419ee2ca00413341d4e2ca001057000b1038000b20014188176a41186a200541506a220741186a29000037030020014188176a41106a200741106a29000037030020014188176a41086a200741086a29000037030020012007290000370388170b200120103703e016200120063703e81602402010200684500d00200120014188176a3602b816200141e0086a20014188176a200141e0166a200141b8166a10ea0320012903e0084201520d0020012903e8082106200141b0046a41386a200b290300370300200d200129038817370000200d41086a20014188176a41086a290300370000200d41106a20014188176a41106a290300370000200d41186a20014188176a41186a290300370000200120063703e004200141003a00b804200141033a00b004200141b0046a10cb010b200521070c000b0b0240200841e0f2796c410020006b470d00200141e40d6a2008360200200141d80d6a41086a41003a00002001410f3a00d80d200141d80d6a10cb01200141e0086a41186a220a4200370300200141e0086a41106a220b4200370300200141e0086a41086a22044200370300200142003703e00841d482cc00ad4280808080d00084100122052900002106200141c80d6a41086a2207200541086a290000370300200120063703c80d2005102920042007290300370300200120012903c80d3703e00841e782cc00ad4280808080a001841001220529000021062007200541086a290000370300200120063703c80d20051029200320012903c80d370000200341086a2007290300370000200141a80d6a41086a2004290300370300200141a80d6a41106a200b290300370300200141a80d6a41186a200a290300370300200120012903e0083703a80d200141d80d6a200141a80d6a412010c00420012802d80d2207410420071b220e20012902dc0d420020071b2206422088a741027422046a2105200e21070240024003402004450d0120012007280200220a3602b0042004417c6a2104200741046a2107200141b0046a10c704450d000b41041027220b450d03200b200a36020020014281808080103702dc0d2001200b3602d80d4101210a0240034020052007460d012001200728020022043602b004200741046a2107200141b0046a10c704450d000240200a20012802dc0d470d00200141d80d6a200a410110980120012802d80d210b0b200b200a4102746a20043602002001200a41016a220a3602e00d0c000b0b20012802dc0d210f0c010b4104210b4100210a4100210f0b0240200642ffffffff0383500d00200e10290b200141e0086a41186a220e4200370300200141e0086a41106a220d4200370300200141e0086a41086a22044200370300200142003703e00841d482cc00ad4280808080d00084100122052900002106200141c80d6a41086a2207200541086a290000370300200120063703c80d2005102920042007290300370300200120012903c80d3703e00841e782cc00ad4280808080a001841001220529000021062007200541086a290000370300200120063703c80d20051029200320012903c80d370000200341086a2007290300370000200141a80d6a41086a2004290300370300200141a80d6a41106a200d290300370300200141a80d6a41186a200e290300370300200120012903e0083703a80d02400240200b0d00200141a80d6aad428080808080048410040c010b200141203602dc0d2001200141a80d6a3602d80d200b200a200141d80d6a10ef03200f41ffffffff0371450d00200b10290b200141b0046a200810c104200141d80d6a20012802b004220720012802b804220410c0040240024020012802d80d22080d0042002106410421080c010b2004ad4220862007ad84100420012902dc0d21060b024020012802b404450d00200710290b02402006422088a72207450d0020074102742105200821070340200141b0046a2007280200220a10c304200141d80d6a20012802b004220b20012802b80410c804024020012d00dc0d2204410346220d0d0020012802840e210320012802880e211720012802e00d211620012802e40d210f20012802e80d211320012802ec0d211220012802f00d211420012802f40d21150b024020012802b404450d00200b10290b4101210e024002402004410371417e6a220b41014b0d000240200b0e020002000b200120133602b8042001200f3602b404200120163602b004200120153602e00d200120143602dc0d200120123602d80d20014188126a200a4100200141b0046a200141d80d6a10c904200141d80d6a200a10c30420013502e00d42208620012802d80d220aad841004024020012802dc0d450d00200a10290b4100210e200d0d010b0240200441024b0d000240024020040e03030100030b200e450d020240200f450d00201610290b2014450d02201210290c020b2017450d01200310290c010b0240200f450d00201610290b2014450d00201210290b200741046a21072005417c6a22050d000b0b200642ffffffff0383500d00200810290b4200213a200141d80d6a41186a220a4200370300200141d80d6a41106a222e4200370300200141d80d6a41086a22044200370300200142003703d80d41cd87cc00ad4280808080a00184221010012205290000210620014188126a41086a2207200541086a2900003703002001200637038812200510292004200729030037030020012001290388123703d80d41ac84cc00ad42808080809001841001220529000021062007200541086a290000370300200120063703881220051029202e2001290388122206370300200141b0046a41086a22052004290300370300200141b0046a41106a220b2006370300200141b0046a41186a220e2007290300370300200120012903d80d3703b004200141b0046aad22334280808080800484221110040240024002400240024020004181ce18490d00200a4200370300202e420037030020044200370300200142003703d80d20101001220a29000021062004200a41086a290000370300200120063703d80d200a102941b8bcc700ad4280808080f001841001220a29000021062007200a41086a2900003703002001200637038812200a1029202e200129038812220637030020052004290300370300200b2006370300200e2007290300370300200120012903d80d3703b004200141d80d6a200141b0046a10ca04200041ffb1676a210e20012802d80d2207410420071b21370240024020012902dc0d420020071b2206422088a722290d004100211d0c010b203741046a2107202941037441786a41037641016a21044100211d024003402007280200200e4b0d01200741086a21072004201d41016a221d470d000b0b201d20294b0d020b0240201d4103742207450d00203720076a212b203721160340200141b0046a2016280200220d10cb04200141d80d6a20012802b004221520012802b804220810cc040240024020012802e40d22144102470d0041002117410421124104211f4100210f41042113410021140c010b20012802e80d210320012802dc0d211720012802e00d210f20012802d80d2212211f201221130b201641086a2116200f410274210a4101210520132107024002400340200a2204450d012005417f6a21052004417c6a210a2007280200210b200741046a2107200b200e4b0d000b0240200f200b200e4d220741016a410171220a20056b220b490d002013200b4102746a28020021030240200a200f6b2005470d0041002107410121140c030b201f200f4102746a417c6a2107200a410274210503402001200728020036028c122001200d36028812200141d80d6a20014188126a10cd0420013502e00d42208620012802d80d220aad841004024020012802dc0d450d00200a10290b2007417c6a21072004200541046a2205470d000b41012114200b210f0c010b200741016a41017120056b200f1043000b41002107200f0d00200141d80d6a200d10ce04024020012802d80d22040d00410121070c010b4100210720012802dc0d450d00200410290b200120033602e80d2001200f3602e00d200120173602dc0d200120123602d80d200120143602e40d0240024020144102470d002008ad4220862015ad8410040c010b2001200836028c122001201536028812200141d80d6a20014188126a10cf0420144102460d00201741ffffffff0371450d00201210290b024020012802b404450d00201510290b02402007450d00200141d80d6a200d10cb0420013502e00d42208620012802d80d2207ad84100420012802dc0d450d00200710290b2016202b470d000b0b200642ffffffff0f83210602402029201d6b2207450d000240201d450d0020372037201d4103746a200741037410e5071a0b2007ad42208620068421060b200141d80d6a41186a220a4200370300200141d80d6a41106a220b4200370300200141d80d6a41086a22044200370300200142003703d80d41cd87cc00ad4280808080a0018410012205290000211020014188126a41086a2207200541086a2900003703002001201037038812200510292004200729030037030020012001290388123703d80d41b8bcc700ad4280808080f001841001220529000021102007200541086a290000370300200120103703881220051029202e200129038812370000202e41086a2007290300370000200141b0046a41086a2004290300370300200141b0046a41106a200b290300370300200141b0046a41186a200a290300370300200120012903d80d3703b004024020370d00201110040c010b200141203602dc0d2001200141b0046a3602d80d20372006422088a7200141d80d6a10f103200642ffffffff0183500d00203710290b200041808c15700d03200142f0f2bda1a7ee9cb9f9003703d80d200141b0046a200141d80d6a10820220014188126a200141b0046a10a802200141d80d6a200128028812220420012802901210a902200141d80d6a41106a2203290300420020012903d80d42015122071b211020012903e00d420020071b21060240200128028c12450d00200410290b20014200201020064280c8afa02554ad7d221120064280b8d0df5a7c221a2006562011201056200642ffc7afa025561b22071b22063703c01620014200201a20071b22103703b816200141d80d6a41186a2208200637030020032010370300200141d80d6a41086a220f41013a00002001410e3a00d80d200141d80d6a10cb01200141003a008417200142003703e816200142003703e0162008420037030020034200370300200f4200370300200142003703d80d4197dec900ad4280808080800184222410012207290000210620014188126a41086a2215200741086a290000370300200120063703881220071029200f201529030037030020012001290388123703d80d4184baca00ad428080808090018422251001220729000021062015200741086a29000037030020012006370388122007102920032001290388122206370300200141b0046a41086a2216200f290300370300200141b0046a41106a2006370300200141b0046a41186a22172015290300370300200120012903d80d3703b004200141d80d6a200141b0046a108f0320012802d80d2207410420071b211f20012902dc0d420020071b2235422088221ea72214450d02200141e10d6a210b200141f0046a210e200141d0046a2112200141900e6a211320014188096a211d201f210741002104410021050340200141e0086a2007280200220d10d004200141d80d6a20012802e008220a20012802e80810d10420012903d80d2110200141b0046a200f41e00010e4071a42002106024020104201520d0020014188126a200141b0046a41e00010e4071a420121060b024020012802e408450d00200a10290b024002400240200650450d00200441016a21040c010b200141b0046a20014188126a41e00010e4071a024020012903b816221120012903b004221a54220a200141b8166a41086a2903002206201629030022105420062010511b0d0020012011201a7d3703b8162001200620107d200aad7d3703c016200141d80d6a200d10d00420013502e00d42208620012802d80d220aad841004024020012802dc0d450d00200a10290b20012903c004210620012017290300221037039017200120063703881702402006201084500d00200120123602a80d200141e0086a201220014188176a200141a80d6a10ea0320012903e0084201520d0020012903e80821062013200141e0086a41106a290300370300200b2012290000370000200b41086a201241086a290000370000200b41106a201241106a290000370000200b41186a201241186a290000370000200120063703880e200141003a00e00d200141033a00d80d200141d80d6a10cb010b20012903b004210620012016290300221037039017200120063703881702400240200620108450450d00420021114200211a420021104200211b0c010b2001200e3602a80d200141e0086a200e20014188176a200141a80d6a10de030240024020012903e0084201520d00200141e0086a41106a290300211b20012903e80821100c010b201d290300211b200129038009211020012903e8084201520d0020012903f00821062013200141e0086a41186a290300370300200b200e290000370000200b41086a200e41086a290000370000200b41106a200e41106a290000370000200b41186a200e41186a290000370000200120063703880e200141003a00e00d200141033a00d80d200141d80d6a10cb010b2016290300211a20012903b00421110b200141e0166a41086a220a427f200a2903002206201b7c20012903e016221b20107c221c201b54220aad7c2210200a201020065420102006511b220a1b3703002001427f201c200a1b3703e0162013201a370300200b200e290000370000200b41086a200e41086a290000370000200b41106a200e41106a290000370000200b41186a200e41186a290000370000200120113703880e200141023a00e00d2001410e3a00d80d2001200d3602840e200141d80d6a10cb01200441016a21040c010b200141013a008417024020040d00410021040c010b200520046b220a20144f0d01200720044102746b220a280200210d200a20072802003602002007200d3602000b200741046a21072014200541016a2205460d030c010b0b200a20144180bdc7001036000b201d20291044000b2004417f6a20144f0d00203542ffffffff0f832135201420046b21140b20084200370300200141d80d6a41106a22044200370300200f4200370300200142003703d80d20241001220729000021062015200741086a290000370300200120063703881220071029200f201529030037030020012001290388123703d80d20251001220729000021062015200741086a2900003703002001200637038812200710292003200129038812370000200341086a20152903003700002016200f290300370300200141b0046a41106a200429030037030020172008290300370300200120012903d80d3703b004200141203602dc0d2001200141b0046a3602d80d201f2014200141d80d6a10a3040240203542ffffffff0383500d00201f10290b024020012d0084170d004200211b200141a0036a20012903b8162206200141b8166a41086a2207290300221042c0843d420010e00720014190036a20012903a0032211200141a0036a41086a290300221a42c0fb42427f10d50720014180036a2011201a4290ce00420010d50720072010201020014180036a41086a290300200129038003221120062001290390037c221a42e40080221ca7417f201a4290ce007e221a428080808080c8d007541b201a201c42c0fb427e7c42a0c21e566aad7c221a201154ad7c2211201a200656201120105620112010511b22041b22117d20062006201a20041b221054ad7d3703002001200620107d3703b81602400240201020118450450d004200211c0c010b200141d80d6a41186a220b4200370300200141d80d6a41106a22054200370300200141d80d6a41086a22044200370300200142003703d80d41dcbec500ad428080808080018422061001220a290000211a20014188176a41086a2207200a41086a2900003703002001201a37038817200a10292004200729030037030020012001290388173703d80d419fe3c200ad4280808080d00184221a1001220a290000211b2007200a41086a2900003703002001201b37038817200a10292005200129038817221b370300200141e0086a41086a220e2004290300370300200141e0086a41106a220d201b370300200141e0086a41186a220f2007290300370300200120012903d80d3703e008200141e8026a200141e0086a412010e301200141e8026a41106a290300211b20012903f002211c20012802e802210a200b42003703002005420037030020044200370300200142003703d80d20061001220b29000021062007200b41086a2900003703002001200637038817200b10292004200729030037030020012001290388173703d80d201a1001220b29000021062007200b41086a2900003703002001200637038817200b102920052001290388172206370300200e2004290300370300200d2006370300200f2007290300370300200120012903d80d3703e00820014200201b4200200a1b220620117d201c4200200a1b221a201054ad7d221b201a20107d221c201a56201b200656201b2006511b22071b3703e00d20014200201c20071b3703d80d200141e0086aad4280808080800484200141d80d6aad428080808080028410032006201120071b211c201a201020071b211b0b200141e0166a41086a2207427f20072903002206201c7c20012903e016221a201b7c221b201a542207ad7c221a2007201a200654201a2006511b22071b3703002001427f201b20071b3703e016200141f00d6a2011370300200141e80d6a2010370300200141d80d6a41086a41043a00002001410e3a00d80d200141d80d6a10cb010b200142f0f2bda1a7ee9cb9f9003703d80d20014188126a200141d80d6a108202200141e8166a290300211020012903e016210641002107200141003a00c80d200141023a00b017200120103703e808200120063703e008200120014188126a3602a80d02400240200620108450450d00420021114200211a0c010b200120014188126a36028817200120014188176a3602e80d2001200141b0176a3602e40d2001200141a80d6a3602e00d2001200141c80d6a3602dc0d2001200141e0086a3602d80d200141b0046a20014188126a200141d80d6a10c80241012107024020012802b0044101470d004200211a20012903b80421110c010b200141d8046a290300211a200141d0046a29030021114100210720012903b8044201520d00200141b0046a41106a290300211b2001280288172104200141900e6a200141b0046a41186a290300370300200141880e6a201b37030041002107200141d80d6a41086a41003a0000200141e10d6a2004290000370000200141e90d6a200441086a290000370000200141f10d6a200441106a290000370000200141f90d6a200441186a290000370000200141033a00d80d200141d80d6a10cb010b0240024020070d00200141d80d6a41186a220a4200370300200141d80d6a41106a22044200370300200141d80d6a41086a22054200370300200142003703d80d41dcbec500ad428080808080018422241001220b290000211b20014188176a41086a2207200b41086a2900003703002001201b37038817200b10292005200729030037030020012001290388173703d80d419fe3c200ad4280808080d0018422251001220b290000211b2007200b41086a2900003703002001201b37038817200b10292004200129038817221b370300200141e0086a41086a220b2005290300370300200141e0086a41106a220e201b370300200141e0086a41186a220d2007290300370300200120012903d80d3703e008200141b8026a200141e0086a412010e3012010201a7d2006201154ad7d201a20107d2011200654ad7d2011200658201a201058201a201051220f1b22141b210c200620117d201120067d20141b2135200141b8026a41106a290300420020012802b80222141b211b20012903c002420020141b211c024002402011200656201a201056200f1b0d00200a42003703002004420037030020054200370300200142003703d80d20241001220f29000021062007200f41086a2900003703002001200637038817200f10292005200729030037030020012001290388173703d80d20251001220f29000021062007200f41086a2900003703002001200637038817200f10292004200129038817370000200441086a2007290300370000200b2005290300370300200e2004290300370300200d200a290300370300200120012903d80d3703e0082001427f201b200c7c201c20357c2210201c542207ad7c220620072006201b542006201b511b22071b3703e00d2001427f201020071b3703d80d200141d80d6a21070c010b200a42003703002004420037030020054200370300200142003703d80d20241001220f29000021062007200f41086a2900003703002001200637038817200f10292005200729030037030020012001290388173703d80d20251001220f29000021062007200f41086a2900003703002001200637038817200f10292004200129038817370000200441086a2007290300370000200b2005290300370300200e2004290300370300200d200a290300370300200120012903d80d3703e00820014200201b200c7d201c203554ad7d2206201c20357d2210201c562006201b562006201b511b22071b3703e00d20014200201020071b3703d80d200141d80d6a21070b200141e0086aad42808080808004842007ad428080808080028410030c010b41b8efc900ad4280808080a009841008200141d80d6a41186a220b4200370300200141d80d6a41106a22054200370300200141d80d6a41086a22044200370300200142003703d80d41dcbec500ad428080808080018422111001220a290000211a200141e0086a41086a2207200a41086a2900003703002001201a3703e008200a102920042007290300370300200120012903e0083703d80d419fe3c200ad4280808080d00184221a1001220a290000211b2007200a41086a2900003703002001201b3703e008200a1029200520012903e008221b370300200141b0046a41086a220e2004290300370300200141b0046a41106a220d201b370300200141b0046a41186a220f2007290300370300200120012903d80d3703b004200141d0026a200141b0046a412010e301200141d0026a41106a290300211b20012903d802211c20012802d002210a200b42003703002005420037030020044200370300200142003703d80d20111001220b29000021112007200b41086a290000370300200120113703e008200b102920042007290300370300200120012903e0083703d80d201a1001220b29000021112007200b41086a290000370300200120113703e008200b1029200520012903e0082211370300200e2004290300370300200d2011370300200f2007290300370300200120012903d80d3703b0042001427f201b4200200a1b221120107c201c4200200a1b221020067c221a2010542207ad7c22062007200620115420062011511b22071b3703e00d2001427f201a20071b3703d80d20334280808080800484200141d80d6aad428080808080028410030b20012903b8162106200141f00d6a200141b8166a41086a290300370300200141e80d6a2006370300200141d80d6a41086a41053a00002001410e3a00d80d201e42c097e8b2017e201e4280bfdf80017e7c4280e59af7007c213a200141d80d6a10cb010b4200213c0240200041c09306700d0010d2044280c0a8ca9a3a213c0b0240024020004180ce1870450d004280fbc6d2022110200141b0046a210b0c010b200141d80d6a41186a4200370300200141d80d6a41106a22054200370300200141d80d6a41086a22074200370300200142003703d80d41c99fc500ad428080808090018410012204290000210620014188126a41086a220a200441086a2900003703002001200637038812200410292007200a29030037030020012001290388123703d80d41b092c700ad4280808080d0028410012204290000210620014188176a41086a220a200441086a29000037030020012006370388172004102920052001290388172206370300200141b0046a41086a2007290300370300200141b0046a41106a2006370300200141b0046a41186a200a290300370300200120012903d80d3703b00402400240024002400240200141b0046a10b201220741ff01714102460d0020334280808080800484100420074101710d010b200141d80d6a200010d30420012d00d80d4104460d02200141b0046a200010d4040c010b200141d80d6a200010d40420012d00d80d4104460d01200141b0046a200010d3040b20012d00b0044104460d01411610d5041a200141b0026a411610d6040c010b200141043a00b0040b4280c0a8ca9a3a2110200141b0046a210b0b200141d80d6a41186a220f4200370300200141d80d6a41106a220442003703004108210d200141d80d6a41086a22074200370300200142003703d80d41c99fc500ad428080808090018422061001220a290000211120014188126a41086a2205200a41086a2900003703002001201137038812200a10292007200529030037030020012001290388123703d80d41ac8fc700ad4280808080d001841001220e290000211120014188176a41086a220a200e41086a2900003703002001201137038817200e102920042001290388172211370300200141b0046a41086a22142007290300370300200141b0046a41106a22162011370300200141b0046a41186a2212200a290300370300200120012903d80d3703b004200141a8026a200b412010fc0120012802ac02211520012802a8022113200f42003703002004420037030020074200370300200142003703d80d20061001220e29000021062005200e41086a2900003703002001200637038812200e10292007200529030037030020012001290388123703d80d41948fc700ad4280808080f00184100122052900002106200a200541086a2900003703002001200637038817200510292004200129038817220637030020142007290300370300201620063703002012200a290300370300200120012903d80d3703b004200141a0026a200b412010fc0120012802a402210720012802a0022104200120003602b81620012007410020041b22123602e40820012015410020131b22153602e0082001200141b8166a3602e808200141d80d6a200141e0086a200141e0086a41086a10d7040240024020012d00b80e22074103460d00200141b0046a200141d80d6a41e00010e4071a2001200141d80d6a41e4006a28000036008b12200120012800b90e3602881241e8001027220d450d02200d200141b0046a41e00010e407220420073a00602004200128028812360061200441e4006a200128008b1236000020014188126a41086a220e200141e0086a41086a280200360200200120012903e00837038812200141d80d6a20014188126a200e10d704024020012d00b80e220b4103470d004101210a410121040c020b41c9012105200141b90e6a220f41036a21144101210a410121040340200141b0046a200141d80d6a41e00010e4071a200120142800003600e3162001200f2800003602e016200141d80d6a200141b0046a41e00010e4071a200120012800e31636008b17200120012802e0163602881702402004200a470d00200a41016a2207200a490d05200a41017422162007201620074b1bad42e8007e2206422088a70d052006a722074100480d05024002400240200a0d0020070d014108210d0c020b200a41e8006c220a2007460d010240200a0d0020070d014108210d0c020b200d200a2007102b220d450d080c010b20071027220d450d070b200741e8006e210a0b200d20056a2207419f7f6a200141d80d6a41e00010e4071a2007417f6a200b3a00002007200128028817360000200741036a200128008b17360000200141d80d6a20014188126a200e10d704200541e8006a2105200441016a210420012d00b80e220b4103470d000c020b0b4100210a410021040b4100201220156b2207200720124b1bad22064280e1eb177e20107c200642c0b19f057e7c210602402004450d00200d280200210e200141d80d6a200d41046a41dc0010e4071a2001200d41e1006a2800003602b0042001200d41e4006a2800003600b304200d41e0006a2d000022164103460d00200d200441e8006c6a2113200141e8046a2115200141d80d6a41086a210f200141d80d6a410172212e20014188126a41046a2117200141d80d6a41096a211d200141d80d6a41106a210b20014189056a220341036a210841dcbec500ad42808080808001842139200141d8046a211f200d2105034020014188126a200141d80d6a41dc0010e4071a200120012800b3043600e316200120012802b0043602e016200141b0046a201741d80010e4071a200320012802e016360000200820012800e316360000200120163a008805200141d80d6a41186a22124200370300200b4200370300200f4200370300200142003703d80d2039100122072900002106200f200741086a290000370300200120063703d80d20071029419fe3c200ad4280808080d0018410012207290000210620014188176a41086a2204200741086a290000370300200120063703881720071029200b200129038817370000200b41086a2004290300370000200141e0086a41086a200f290300370300200141e0086a41106a200b290300370300200141e0086a41186a2012290300370300200120012903d80d3703e00820014188026a200141e0086a412010e30120014188026a41106a29030021112001280288022104200129039002211a200141b0046a41186a2903002138200141b0046a41086a290300210c20012903c004212520012903b004212441002107024020012903d0042233420288201f290300221c423e86842206201c420288221084500d004100210720062033852010201c8584500d00410021070340200141f8016a2033201c200741046a41fe007110eb07200741026a210720012903f8012206200141f8016a41086a290300221084500d0120062033852010201c85844200520d000b0b2011420020041b211e201a420020041b2135200541e8006a21144200211a420021100340200141d8016a2010420186201a423f888422104200201a420186221a4201842206420010d507200141e8016a200642002006420010d5070240201020012903e001221184201184420052200141e8016a41086a290300221120012903d801221b201b7c7c221b201154720d0020012903e8012111200141c8016a2033201c200741ff007110eb0720102010201120012903c80156201b200141c8016a41086a290300221156201b2011511b22041b2110201a200620041b211a0b02402007450d0041002007417e6a2204200420074b1b21070c010b0b4100210702402035420288201e423e86842206201e420288221184500d0020062035852011201e8584500d00410021070340200141b8016a2035201e200741046a41fe007110eb07200741026a210720012903b8012206200141b8016a41086a290300221184500d0120062035852011201e85844200520d000b0b4200211142002106034020014198016a20064201862011423f88842206420020114201862211420184221b420010d507200141a8016a201b4200201b420010d5070240200620012903a001221c84201c84420052200141a8016a41086a290300221c200129039801223320337c7c2233201c54720d0020012903a801211c20014188016a2035201e200741ff007110eb0720062006201c20012903880156203320014188016a41086a290300221c562033201c511b22041b21062011201b20041b21110b02402007450d0041002007417e6a2204200420074b1b21070c010b0b02400240024002400240201a201084500d00024002400240201641ff01710e03000102000b0340200141386a20252038201a201010e0072011221c20062233844200510d04200141386a41086a290300210620012903382111200141286a2024200c201c203310e00720112001290328221e542006200141286a41086a290300221b542006201b5122071b0d06201e201154201b20065420071b0d03200141186a20112006201a201010d507200141086a201e201b201c203310d5072024200129030822067d221b200c200141086a41086a2903007d2024200654ad7d220684500d032038200141186a41086a2903007d211e202520012903182211542107202520117d2111201a21242010210c201b211a20062110201c2125203321382011201e2007ad7d22068450450d000c060b0b03402010211b201a211c20112006844200510d04200141e8006a2024200c201c201b10e007200141f8006a202520382011200610e007200129037822332001290368221e54200141f8006a41086a2903002210200141e8006a41086a290300221a542010201a5122071b0d05201e203354201a20105420071b0d02200141d8006a203320102011200610d507200141c8006a201e201a201c201b10d5072024200129034822107d2233200c200141c8006a41086a2903007d2024201054ad7d221084500d022038200141d8006a41086a2903007d211e20252001290358221a5421072025201a7d211a201121242006210c2033211120102106201c2125201b2138201a201e2007ad7d22108450450d000c050b0b2024202556200c203856200c2038511b0d030b2001200e3602e40d200141053a00e00d200141093a00d80d200141d80d6a10cb01410021070c030b4180aac400411941a0f1c9001033000b4180aac400411941a0f1c9001033000b2001200e3602e40d200141043a00e00d200141093a00d80d200141d80d6a10cb0102400240024020012802e4042207450d0020014188176a201510d804200141d80d6a2001280288172216200128029017221210d904200720006a2104024020012d00d80d22074103712237410346222b0d00024020070e03000100000b02400240202b0d0020370e03010001010b20012802800e450d0020012802fc0d10290b202e20012f00b8163b0000202e41026a200141b8166a41026a2d00003a000041002107200141003a00d80d200120043602dc0d200f200141e0086a41c80010e4071a0c020b200120043602900e2001410136028c0e20074102470d012012ad4220862016ad8410040c020b2012201541186a290000370300200b201541106a290000370300200f201541086a290000370300200120152900003703d80d200141e0086a200141d80d6a200e10da04410121070c020b200141003602e808200142013703e008200141d80d6a200141e0086a10db0420012802e408212b2012ad4220862016ad8420013502e80842208620012802e0082212ad8410030240202b450d00201210290b0240200741037122074103460d0020070e03010001010b20012802800e450d0020012802fc0d10290b0240200128028c17450d00201610290b410c10272207450d032007200e360008200742e4cab5fbb6ccdcb0e3003700002001428c808080c00137028c172001200736028817201d2015290000370000201d41086a201541086a290000370000201d41106a201541106a290000370000201d41186a201541186a2900003700002001411f3a00e00d2001410e3602d80d2001200e3602840e200141e0086a20014188176a2004410020012001413f200141d80d6a10dc044101210720012802e0084101470d004194a3c700ad4280808080a0068410080b200120003602dc0d200120073a00d90d200141013a00d80d200141b0046a200e10dd0420012802b0042107200120012802b8043602e408200120073602e008200141d80d6a200141e0086a10de04024020012802b404450d00200710290b4280c0a8ca9a3a210620142013460d012005280268210e200141d80d6a200541ec006a41dc0010e4071a2001200541c9016a2800003602b0042001200541cc016a2800003600b304200541c8016a21072014210520072d000022164103470d000b0b0240200a450d00200a41e8006c450d00200d10290b200010df04211020022400427f203a427f203c427f200620107c221020102006541b7c22062006203c541b7c22062006203a541b0f0b1039000b1032000b1030000b4113210741d1a6c70021040b2001200736028c17200120043602881741a4b2c400412220014188176a4194b2c40041c8b2c400103a000be20c040a7f027e017f017e230041900f6b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822040d00200041033602000c010b200341086a41086a2802002105200328020c2106200341003a00f808200421024100210702400240024003400240024002402005450d0020022d0000220141014b0d002005417f6a2108200241016a21090240024020010e020001000b20034180096a41186a200341a0096a41186a29030037030020034180096a41106a200341a0096a41106a29030037030020034180096a41086a200341a0096a41086a290300370300200320032903a009370380094102210a200821050c030b0240024002402008450d00200241026a21092005417e6a210120022d0001220a41014b0d010240024002400240200a0e020001000b41002101200341003a00e0092005417e6a210a02400340200a2001460d01200341c0096a20016a200220016a41026a2d00003a00002003200141016a22093a00e0092009210120094120470d000b200341f00e6a41186a220a200341c0096a41186a290300370300200341f00e6a41106a220b200341c0096a41106a290300370300200341f00e6a41086a220c200341c0096a41086a290300370300200320032903c0093703f00e200220096a2102200520096b2209417e6a220141044f0d02200241026a21094102210a0c060b200220016a41026a2109200141ff0171450d03200341003a00e0090c030b20014104490d0320022800022108200341d00e6a41186a200341c0096a41186a290200370300200341d00e6a41106a200341c0096a41106a290200370300200341d00e6a41086a200341c0096a41086a290200370300200320032902c0093703d00e2005417a6a2101200241066a21094101210a0c010b200241026a2800002108200341d00e6a41186a200a290300370300200341d00e6a41106a200b290300370300200341d00e6a41086a200c290300370300200320032903f00e3703d00e2009417a6a2101200241066a21094100210a0b200341b00e6a41086a2202200341d00e6a41086a290300370300200341b00e6a41106a2205200341d00e6a41106a290300370300200341b00e6a41186a220b200341d00e6a41186a290300370300200320032903d00e3703b00e20014110490d01200941086a290000210d2009290000210e200341c0096a41186a200b290300370300200341c0096a41106a2005290300370300200341c0096a41086a2002290300370300200320032903b00e3703c009200941106a2109200141706a21012008210f0c020b410021010b4102210a0b200341f00d6a41086a2202200341c0096a41086a290300370300200341f00d6a41106a2205200341c0096a41106a290300370300200341f00d6a41186a2208200341c0096a41186a290300370300200320032903c0093703f00d200a4102470d010b20034180096a41186a200341a0096a41186a2903003703000240200741ff0171450d00200341003a00f8080b410321020c030b200341a0096a41186a2008290300221037030020034180096a41086a200229030037030020034180096a41106a200529030037030020034180096a41186a2010370300200320032903f00d37038009200121050b20092102200341c8046a200741386c6a2201200a360200200141086a200329038009370200200141106a20034180096a41086a290300370200200141186a20034180096a41106a290300370200200141206a20034180096a41186a290300370200200141306a200d370200200141286a200e3702002001200f3602042003200741016a22013a00f808200121072001410a470d000b20032802c8042102200341c0096a200341c8046a41047241ac0410e4071a0240200141ff017141094b0d00410321020c010b200341186a200341c0096a41ac0410e4071a20024103470d010b200341003602c809200342013703c0092003410d36021c200320033602182003200341c0096a3602f00e200341dc046a4101360200200342013702cc04200341f4eaca003602c8042003200341186a3602d804200341f00e6a41a8a3c800200341c8046a10371a20033502c80942208620033502c00984100820032802c409450d0120032802c00910290c010b200341c8046a200341186a41ac0410e4071a200041046a200341c8046a41ac0410e4071a0b200020023602002006450d00200410290b200341900f6a24000bc60603027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a29000037030020022004370308200310294195b3c400ad4280808080f00184100122032900002104200241186a41086a200341086a29000037030020022004370318200310292001280200210541011027210302400240024020054101460d002003450d02200341003a000041212105200341014121102b2203450d02200341196a200141206a290000370000200341116a200141186a290000370000200341096a200141106a2900003700002003200141086a29000037000120022001280204360240200241c0006a21060c010b2003450d0141012105200341013a000020022001280204360240200241c0006a21060b200320052005410174220720054104722201200720014b1b102b2203450d00200320056a200628020036000020022001ad4220862003ad841002220529000037033820051029200241cc006a200320016a360200200220033602482002200241c0006a3602442002200241386a360240200241286a200241c0006a1075200310290240024002402002280230220741206a2206417f4c0d00200228022821080240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121050c010b200141017422054110200541104b1b22054100480d03024020010d002005102722030d010c050b20012005460d00200320012005102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020054170714110460d00200521010c010b200541017422014120200141204b1b22014100480d0320052001460d00200320052001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2007490d00200121050c010b200741206a22052007490d03200141017422092005200920054b1b22054100480d0320012005460d00200320012005102b2203450d040b200341206a2008200710e4071a2000200636020820002005360204200020033602000240200228022c450d00200810290b200241d0006a24000f0b1038000b1039000b1032000b1030000b940407047f017e017f017e017f017e057f230041e0006b22002400200041306a41186a22014200370300200041306a41106a22024200370300200041306a41086a220342003703002000420037033041d787cc00ad42808080809001842204100122052900002106200041d0006a41086a2207200541086a29000037030020002006370350200510292003200729030037030020002000290350370330418088cc00ad4280808080a0018422061001220529000021082007200541086a2900003703002000200837035020051029200220002903502208370300200041106a41086a22092003290300370300200041106a41106a220a2008370300200041106a41186a220b200729030037030020002000290330370310200041086a200041106a412010fc01200028020c210c2000280208210d2001420037030020024200370300200342003703002000420037033020041001220529000021042007200541086a2900003703002000200437035020051029200320072903003703002000200029035037033020061001220529000021042007200541086a290000370300200020043703502005102920022000290350220437030020092003290300370300200a2004370300200b2007290300370300200020002903303703102000200c41e807200d1b220741016a360230200041106aad4280808080800484200041306aad4280808080c000841003200041e0006a240020070b9f0205027f017e027f037e017f230041206b22022400200241106a200110c504200220022802102203200228021810c60420022902044200200228020022011b210402402002280214450d00200310290b2001410820011b21052004a72106024002402004422088a72203450d00200541086a290300210420052903002107024020034101460d00200541106a2101200341047441706a210303402004200141086a290300220820072001290300220956200420085620042008511b220a1b210420072009200a1b2107200141106a2101200341706a22030d000b0b200641ffffffff0071450d01200510290c010b0240200641ffffffff0071450d00200510290b42002107420021040b2000200737030020002004370308200241206a24000bbe0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a10f5050240024020032802480d0020034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110290b200341e0006a24000bfc0403027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a29000037030020022004370308200310294189b3c400ad4280808080c00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941efb1c400ad4280808080b00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a29000037030020022004370308200310294181a0c400ad4280808080a00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bf40201037f230041106b220224002002200028020036020020012002410410720240024020002d0004220341024b0d0002400240024020030e03000102000b200241003a00072001200241076a4101107220012000410c6a412010722002200041086a2802003602082001200241086a410410720c020b200241013a00072001200241076a41011072412010272203450d02200341186a2000411d6a290000370000200341106a200041156a290000370000200341086a2000410d6a2900003700002003200041056a2900003700002001200341201072200310292002200041286a28020036020c20012002410c6a410410722000412c6a2802002103200041346a28020022002001107120012003200010720c010b200241023a00072001200241076a41011072200041086a2802002103200041106a2802002204200110712001200320041072200041146a28020021032000411c6a28020022002001107120012003200010720b200241106a24000f0b1039000bfc0403027f017e057f230041d0006b2202240041d482cc00ad4280808080d00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e7b1c400ad4280808080800184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000ba40403037f017e027f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10c8010240024020032802000d002003280224220420032802044104742205490d0002400240024002402005417f4c0d000240024020050d0042002106410121070c010b2005102d2207450d02200720032802202208200510e4071a2003200420056b3602242003200820056a3602202005ad21060b2007450d04024020062005ad422086842206422088a722050d002006a721050c030b024020074107712005410f71720d002006a72205410f710d0020054104762204450d032006422488a721080c040b2006a7450d04200710290c040b1038000b1039000b4100210802402005450d00200710290b41002104410821070b41000d002007450d002000200436020420002007360200200041086a20083602000c010b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602000b2002450d00200110290b200341e0006a24000bf61507047f017e027f027e017f047e037f230041a0026b22012400200141a0016a2000280200220210c504200141f0006a20012802a001220320012802a80110c60420012902744200200128027022041b2105024020012802a401450d00200310290b2004410820041b21030240024002400240024002402005422088a7220641014b0d0020060e020201020b200341086a22072903002108200329030021092003200341106a2204200641047441706a10e5072102200141a0016a200028020010c50420012802a0012103200120012802a8013602742001200336027020022006417f6a220a200141f0006a10a204024020012802a401450d00200310290b2007290300210b2002290300210c0240200a4101460d00200641047441606a21030340200b200441086a290300220d200c2004290300220e56200b200d56200b200d511b22061b210b200c200e20061b210c200441106a2104200341706a22030d000b0b0240200542ffffffff0083500d00200210290b410121042009200c7d220d2009562008200b7d2009200c54ad7d220b200856200b2008511b0d04200141386a200010cc032001200d3703582001200b370360200d200b8450450d0242002105420021080c030b200141f0006a200210c304200141a0016a200128027022062001280278220010c804024020012d00a40122044103460d002000ad4220862006ad8410040b200141d0016a2802002100200141cc016a280200210f200141b8016a2802002107200141b4016a2802002110200141ac016a280200210a200141a8016a280200211102402001280274450d00200610290b02400240200441034b0d00024020040e0402000102020b2000450d01200f10290c010b0240200a450d00201110290b2007450d00201010290b024020044103470d00200141a0016a200210e8040b200141d8006a200210c204200141a0016a200128025822042001280260220010cd01024020012d00a0012206450d002000ad4220862004ad8410040b200141f0006a41186a200141b9016a290000220b370300200141f0006a41106a200141b1016a290000220c370300200141f0006a41086a200141a9016a290000220d370300200120012900a101220e370370200141a0016a41186a2200200b370300200141a0016a41106a2207200c370300200141a0016a41086a220a200d3703002001200e3703a0010240024020064101460d00200141386a41186a4200370300200141386a41106a4200370300200141386a41086a4200370300200142003703380c010b200141386a41186a2000290300370300200141386a41106a2007290300370300200141386a41086a200a290300370300200120012903a0013703380b0240200128025c450d00200410290b2003290300210b2001200341086a290300220c3703602001200b37035802400240200b200c8450450d004200210c4200210d0c010b2001200141386a36026c200141f0006a200141386a200141d8006a200141ec006a10de03024020012903704201520d0020014180016a290300210d2001290378210c0c010b20014198016a290300210d20014190016a290300210c20012903784201520d00200141f0006a41106a290300210b200141d8016a200141f0006a41186a290300370300200141d0016a200b370300200141a0016a41086a41003a0000200141a9016a2001290338370000200141b1016a200141386a41086a290300370000200141b9016a200141386a41106a290300370000200141c1016a200141386a41186a290300370000200141033a00a001200141a0016a10cb010b200141a0016a41186a220a4200370300200141a0016a41106a22004200370300200141a0016a41086a22064200370300200142003703a00141dcbec500ad4280808080800184220b10012207290000210e200141d8006a41086a2204200741086a2900003703002001200e3703582007102920062004290300370300200120012903583703a001419fe3c200ad4280808080d00184220e1001220729000021082004200741086a2900003703002001200837035820071029200020012903582208370300200141f0006a41086a220f2006290300370300200141f0006a41106a22102008370300200141f0006a41186a22112004290300370300200120012903a001370370200141206a200141f0006a412010e301200141206a41106a29030021082001290328210920012802202107200a42003703002000420037030020064200370300200142003703a001200b1001220a290000210b2004200a41086a2900003703002001200b370358200a102920062004290300370300200120012903583703a001200e1001220a290000210b2004200a41086a2900003703002001200b370358200a102920002001290358220b370300200f20062903003703002010200b37030020112004290300370300200120012903a0013703702001427f2008420020071b220b200d7c2009420020071b220d200c7c220e200d542204ad7c220c2004200c200b54200c200b511b22041b3703a8012001427f200e20041b3703a001200141f0006aad4280808080800484200141a0016aad42808080808002841003200141a0016a200210c50420013502a80142208620012802a0012204ad84100420012802a401450d00200410290b41002104200542ffffffff0083500d02200310290c020b2001200141386a36026c200141f0006a200141386a200141d8006a200141ec006a10de03024020012903704201520d0020014180016a2903002108200129037821050c010b20014198016a290300210820014190016a290300210520012903784201520d00200141f0006a41106a290300210b200141d8016a200141f0006a41186a290300370300200141d0016a200b370300200141a0016a41086a41003a0000200141a9016a2001290338370000200141b1016a200141386a41086a290300370000200141b9016a200141386a41106a290300370000200141c1016a200141386a41186a290300370000200141033a00a001200141a0016a10cb010b200141a0016a41186a22074200370300200141a0016a41106a22004200370300200141a0016a41086a22064200370300200142003703a00141dcbec500ad4280808080800184220b10012202290000210c200141d8006a41086a2203200241086a2900003703002001200c3703582002102920062003290300370300200120012903583703a001419fe3c200ad4280808080d00184220c10012202290000210d2003200241086a2900003703002001200d3703582002102920002001290358220d370300200141f0006a41086a220a2006290300370300200141f0006a41106a220f200d370300200141f0006a41186a22102003290300370300200120012903a001370370200141086a200141f0006a412010e301200141086a41106a290300210d2001290310210e20012802082102200742003703002000420037030020064200370300200142003703a001200b10012207290000210b2003200741086a2900003703002001200b3703582007102920062003290300370300200120012903583703a001200c10012207290000210b2003200741086a2900003703002001200b3703582007102920002001290358220b370300200a2006290300370300200f200b37030020102003290300370300200120012903a0013703702001427f200d420020021b220b20087c200e420020021b220c20057c220d200c542203ad7c220c2003200c200b54200c200b511b22031b3703a8012001427f200d20031b3703a001200141f0006aad4280808080800484200141a0016aad428080808080028410030b200141a0026a240020040bfa0b06077f017e017f027e017f057e23004180016b220324002003200236021c20032001360218200341206a2002ad4220862001ad841007108b0202400240200328022022010d00200041033a00040c010b200328022421042003200341286a28020022053602342003200136023002400240024002400240024020054104490d002001280000210620032005417c6a22023602342003200141046a3602302002450d0020012d0004210220032005417b6a3602342003200141056a360230200241024b0d0002400240024020020e03000102000b41002102200341003a00782005417b6a2107417a21080240034020072002460d01200341d8006a20026a200120026a220941056a2d00003a00002003200520086a3602342003200941066a3602302003200241016a22093a00782008417f6a21082009210220094120470d000b2003200329006b220a3703482003200341f0006a29000037004d200520096b2202417b6a4104490d03200341e6006a2d0000210820032f0164210b2003350067210c200328026021072003290358210d2003280051210e2003290049210f200120096a220941056a28000021052003200241776a3602342003200941096a360230200c421886200b200841107472ad42ffffff078384200a42ff018342388684210a410021020c060b200241ff0171450d02200341003a00780c020b41002102200341003a00782005417b6a2107417a210802400240034020072002460d01200341d8006a20026a200120026a220941056a2d00003a00002003200520086a3602342003200941066a3602302003200241016a22093a00782008417f6a21082009210220094120470d000b2003200341f0006a29000037004d2003200329006b370348200520096b2202417b6a4104490d032003290358210f2003350260210d200341e6006a310000210c20033301642110200341d4006a310000211120033502502112200328006721072003290348210a200120096a220541056a280000210e2003200241776a3602342003200541096a3602302003200341306a10c80120032802000d032003280234220520032802042202490d032002417f4a0d010c050b200241ff0171450d02200341003a00780c020b0240024020020d0042002113410121090c010b2002102d2209450d03200920032802302208200210e4071a2003200520026b3602342003200820026a3602302002ad21130b2009450d01200d420886200f423888842010200c4210868442288684210d200f421888a72105200fa72108201220114220868442ffffffffff1f83210f20132002ad42208684210c410121020c050b200341106a200341306a10c80120032802100d002003280234220820032802142202490d002002417f4c0d020240024020020d004200210a410121050c010b2002102d2205450d02200520032802302209200210e4071a2003200820026b3602342003200920026a3602302002ad210a0b2005450d00200a2002ad42208684210d200341086a200341306a10c801024020032802080d0020032802342208200328020c2202490d002002417f4c0d030240024020020d004200210a410121070c010b2002102d2207450d03200720032802302209200210e4071a2003200820026b3602342003200920026a3602302002ad210a0b2007450d00200a2002ad42208684210a410221020c040b200da7450d00200510290b20034100360250200342013703482003410d36023c2003200341186a3602382003200341c8006a360244200341ec006a41013602002003420137025c200341f4eaca003602582003200341386a360268200341c4006a41a8a3c800200341d8006a10371a200335025042208620033502488410080240200328024c450d00200328024810290b410321020c040b1039000b1038000b0b200020083b000520002006360200200041076a20084110763a0000200041306a200c3700002000412c6a2009360000200041286a200e360000200041206a200f370000200041186a200a370000200041146a20073600002000410c6a200d370000200041086a20053600000b200020023a00042004450d00200110290b20034180016a24000bcd0b03057f017e067f23004180016b22052400200541d0006a200110dc0641002106200541086a2005280250220720052802584180a6cc004100410010c7012005280208210802402005280254450d00200710290b02400240024020084101470d004111210841b3d3c80021010c010b024020020d00200541d0006a41186a4200370300200541d0006a41106a22094200370300200541d0006a41086a220642003703002005420037035041d787cc00ad428080808090018410012207290000210a200541f0006a41086a2208200741086a2900003703002005200a37037020071029200620082903003703002005200529037037035041cd87cc00ad4280808080a0018410012207290000210a2008200741086a2900003703002005200a3703702007102920092005290370220a370300200541306a41086a2006290300370300200541306a41106a200a370300200541306a41186a200829030037030020052005290350370330200541206a200541306a412010c00402400240024002400240024002402005280220220b0d004100210820054100360218200542043703104100210c4100210d0c010b2005290224210a2005200b3602102005200a370214200aa7210c41002108024002400240200a422088a7220d41014b0d00200d0e020201020b200d2106034020082006410176220720086a220e200b200e4102746a28020020014b1b2108200620076b220641014b0d000b0b4101210e200b20084102746a28020022062001460d03200d200820062001496a2208490d040b200d200c470d010b200541106a200c41011098012005280214210c2005280210210b0b200b20084102746a220641046a2006200d20086b41027410e5071a200620013602002005200d41016a220d3602184106210e0b200541d0006a41186a220f4200370300200541d0006a41106a22104200370300200541d0006a41086a220642003703002005420037035041d787cc00ad428080808090018410012207290000210a200541f0006a41086a2208200741086a2900003703002005200a37037020071029200620082903003703002005200529037037035041cd87cc00ad4280808080a0018410012207290000210a2008200741086a2900003703002005200a3703702007102920092005290370370000200941086a2008290300370000200541306a41086a2006290300370300200541306a41106a2010290300370300200541306a41186a200f29030037030020052005290350370330200b0d01200541306aad428080808080048410040c020b2008200d1041000b200541203602542005200541306a360250200b200d200541d0006a10ef03200c41ffffffff0371450d00200b10290b200e4106460d0041edd3c800210141102108410421060240024002400240200e417f6a0e050001020305000b41b3d3c800210141112108410021060c040b41c4d3c8002101410e2108410121060c030b41d2d3c8002101410f2108410221060c020b41e1d3c8002101410c2108410321060c010b2004280208210e2004280204210b20042802002108200328020421042003280208210d20032802002106200541d0006a200110ac032005280250210720052005280258360234200520073602302006200d200541306a10a10402402005280254450d00200710290b02402004450d00200610290b200541d0006a2001108f062005280250210620052005280258360234200520063602302008200e200541306a10a10402402005280254450d00200610290b0240200b450d00200810290b200541d0006a200110dc062005350258210a200528025021010240410110272208450d00200820023a0000200a4220862001ad842008ad4280808080108410032008102902402005280254450d00200110290b200041043a00000c020b1030000b20004183343b0100200041086a2008360200200041046a2001360200200041026a20063a00000240200441046a280200450d00200428020010290b200341046a280200450d00200328020010290b20054180016a24000bdf0401097f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10c8010240024020022802000d0020022802042205200228022422064103762201200120054b1b22074103742201417f4c0d030240024020070d00410421080c010b200110272208450d050b41002101200241003602502002200736024c200220083602480240024002402005450d00034020064104490d0320022002280220220741046a3602202006417c6a4104490d02200728000021092002200741086a3602202007280004210702402001200228024c470d00200241c8006a20014101108d0120022802482108200228025021010b200641786a2106200820014103746a220a2007360204200a20093602002002200141016a22013602502005417f6a22050d000b200220063602240b2008450d022000200229024c370204200020083602000c030b2006417c6a21060b20022006360224200228024c41ffffffff0171450d00200810290b20024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000b2004450d00200310290b200241e0006a24000f0b1038000b1039000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941cfbcc700ad4280808080c00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b980503037f017e077f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d002000410236020c0c010b200328021421042003200341186a280200360224200320013602202003200341206a10c8010240024020032802000d002003280224220520032802044102742202490d00024002400240024002402002417f4c0d000240024020020d0042002106410121070c010b2002102d2207450d02200720032802202208200210e4071a2003200520026b22053602242003200820026a3602202002ad21060b2007450d0502402002ad4220862006842206422088a722020d002006a721020c030b024020072002724103710d002006a722024103710d0020024102762208450d032006422288a721090c040b2006a70d040c050b1038000b1039000b4100210902402002450d00200710290b41002108410421070b41000d012007450d0102402005450d0020032005417f6a220a36022420032003280220220b41016a360220200b2d0000220c41014b0d004100210202400240200c0e020100010b200a4104490d0120032005417b6a3602242003200b41056a360220200b280001210d410121020b2000200d3602102000200936020820002008360204200020073602000c030b2008450d010b200710290b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b410221020b2000200236020c2004450d00200110290b200341e0006a24000ba10503027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941c7bcc700ad4280808080800184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029024002400240410410272203450d002003200128020036000020012802042105200341044108102b2201450d022001200536000420022001ad42808080808001841002220329000037033820031029200241cc006a200141086a360200200220013602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a10752001102902402002280230220641206a2207417f4c0d00200228022821080240024020070d0041002103410121010c010b200710272201450d02200721030b024002402003410f4d0d00200321050c010b200341017422054110200541104b1b22054100480d03024020030d002005102722010d010c050b20032005460d00200120032005102b2201450d040b20012002290308370000200141086a200241086a41086a2903003700000240024020054170714110460d00200521030c010b200541017422034120200341204b1b22034100480d0320052003460d00200120052003102b2201450d040b20012002290318370010200141186a200241186a41086a29030037000002400240200341606a2006490d00200321050c010b200641206a22052006490d03200341017422092005200920054b1b22054100480d0320032005460d00200120032005102b2201450d040b200141206a2008200610e4071a2000200736020820002005360204200020013602000240200228022c450d00200810290b200241d0006a24000f0b1038000b1039000b1032000b1030000b830803027f017e067f230041f0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241106a41086a200341086a290000370300200220043703102003102941f283cc00ad4280808080d00084100122032900002104200241206a41086a200341086a2900003703002002200437032020031029200220013602402002200241c0006aad4280808080c000841002220329000037034820031029200241e4006a200241c4006a3602002002200241c8006a41086a36025c2002200241c0006a3602602002200241c8006a360258200241306a200241d8006a107502400240024002402002280238220541206a2201417f4c0d00200228023021060240024020010d0041002107410121030c010b200110272203450d03200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d02024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290310370000200341086a200241106a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0220082007460d00200320082007102b2203450d040b20032002290320370010200341186a200241206a41086a29030037000002400240200741606a2005490d00200721080c010b200541206a22082005490d02200741017422092008200920084b1b22084100480d0220072008460d00200320072008102b2203450d040b200341206a2006200510e4071a02402002280234450d00200610290b2002200136024420022003360240200241106a2001ad4220862003ad841007108b0202400240024020022802102201450d00200228021421052002200241186a28020036024c20022001360248200241086a200241c8006a10c8010240024020022802080d00200228024c2209200228020c2206490d002006417f4c0d050240024020060d0042002104410121070c010b2006102d2207450d0820072002280248220a200610e4071a2002200920066b36024c2002200a20066a3602482006ad21040b2007450d0020042006ad4220868421040c010b4100210720024100360228200242013703202002410d3602342002200241c0006a3602302002200241206a360254200241ec006a41013602002002420137025c200241f4eaca003602582002200241306a360268200241d4006a41a8a3c800200241d8006a10371a2002350228422086200235022084100802402002280224450d00200228022010290b0b02402005450d00200110290b20070d010b200041003602000c010b20002004370204200020073602000b02402008450d00200310290b200241f0006a24000f0b1038000b1032000b1039000b1030000b830601077f230041106b220224002002410036020820024201370300200028020021032000280208220420021071024002400240024020022802042205200228020822066b20044102742207490d0020022802002108200521040c010b200620076a22042006490d01200541017422082004200820044b1b22044100480d010240024020050d00024020040d00410121080c020b2004102722080d010c040b2002280200210820052004460d00200820052004102b2208450d030b20022004360204200220083602000b200820066a2003200710e4071a2002200620076a220636020802400240200028020c4101460d000240024020042006460d00200621040c010b200441016a22002004490d03200441017422062000200620004b1b22004100480d030240024020040d0041002104024020000d00410121080c020b200010272208450d060c010b20042000460d00200820042000102b2208450d050b20022000360204200220083602000b200820046a41003a00002002200441016a220836020820022802042100200228020021040c010b0240024020042006460d00200621040c010b200441016a22062004490d02200441017422072006200720064b1b22064100480d020240024020040d0041002104024020060d00410121080c020b200610272208450d050c010b20042006460d00200820042006102b2208450d040b20022006360204200220083602000b200820046a41013a00002002200441016a220636020820002802102105024002402002280204220720066b4104490d00200441056a210820022802002104200721000c010b200641046a22082006490d02200741017422042008200420084b1b22004100480d020240024020070d00024020000d00410121040c020b200010272204450d050c010b2002280200210420072000460d00200420072000102b2204450d040b20022000360204200220043602000b200420066a2005360000200220083602080b20012902002008ad4220862004ad84100302402000450d00200410290b200241106a24000f0b1032000b1030000bfc0403027f017e057f230041d0006b220224004197dec900ad4280808080800184100122032900002104200241086a41086a200341086a2900003703002002200437030820031029419fdec900ad4280808080900184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000be70804067f027e077f027e230041e0016b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822040d00200042003703000c010b200341106a2802002105200328020c210641002101200341003a00d801200541706a21070240024002400240034020052001460d01200341b8016a20016a200420016a2d00003a00002003200141016a22023a00d8012007417f6a21072002210120024120470d000b200341d8006a41086a200341b8016a41086a290300370300200341d8006a41106a200341b8016a41106a290300370300200341d8006a41186a200341b8016a41186a290300370300200320032903b801370358200520026b22084110490d02200420026a22052900002109200541086a290000210a41002101200341003a00d801200841706a2108034020082001460d02200341b8016a20016a200520016a41106a2d00003a00002003200141016a22023a00d8012002210120024120470d000b200341f8006a41086a220b200341b8016a41086a2201290300370300200341f8006a41106a220c200341b8016a41106a2208290300370300200341f8006a41186a220d200341b8016a41186a220e290300370300200320032903b801370378200720026b410f4d0d02200341386a41086a2207200341d8006a41086a290300370300200341386a41106a220f200341d8006a41106a290300370300200341386a41186a2210200341d8006a41186a290300370300200341186a41086a2211200b290300370300200341186a41106a220b200c290300370300200341186a41186a220c200d2903003703002003200329035837033820032003290378370318200520026a220241106a2900002112200241186a2900002113200120072903003703002008200f290300370300200e201029030037030020034198016a41086a2202201129030037030020034198016a41106a2207200b29030037030020034198016a41186a2205200c290300370300200320032903383703b8012003200329031837039801200041206a2013370300200041186a2012370300200041106a200a37030020002009370308200041286a20032903b801370300200041306a2001290300370300200041386a2008290300370300200041c0006a200e290300370300200041c8006a200329039801370300200041d0006a2002290300370300200041d8006a2007290300370300200041e0006a2005290300370300420121090c030b200141ff0171450d01200341003a00d8010c010b200141ff0171450d00200341003a00d8010b200341003602a00120034201370398012003410d36027c20032003360278200320034198016a360258200341cc016a4101360200200342013702bc01200341f4eaca003602b8012003200341f8006a3602c801200341d8006a41a8a3c800200341b8016a10371a20033502a0014220862003350298018410080240200328029c01450d0020032802980110290b420021090b200020093703002006450d00200410290b200341e0016a24000bf59c0107047f017e087f047e1a7f017e0e7f230041f0056b22002400200041d8036a41186a4200370300200041d8036a41106a22014200370300200041d8036a41086a22024200370300200042003703d8034196ebca00ad42808080808002841001220329000021042002200341086a290000370300200020043703d8032003102941e0f8ca00ad4280808080a00184100122032900002104200041a8056a41086a2205200341086a290000370300200020043703a80520031029200120002903a8052204370300200041a0036a41086a2002290300370300200041a0036a41106a2004370300200041a0036a41186a2005290300370300200020002903d8033703a003200041d8036a200041a0036a108d020240024020002802d80322020d0041002106200041003602c002200042013703b802410121020c010b200020002902dc0322043702bc02200020023602b8022004422088a721060b024002400240200641ffffff3f712006470d0020064105742203417f4c0d000240024020030d00410121050c010b200310272205450d020b200041003602e003200020053602d803200020034105763602dc03200041d8036a41002006109e0120002802e00321070240024020060d0020002802d80321080c010b2006410574210520002802d803220820074105746a2103034020032002290000370000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200341206a2103200241206a2102200541606a22050d000b200641057441606a41057620076a41016a21070b20002802dc032109200041d8036a41186a22054200370300200041d8036a41106a220a4200370300200041d8036a41086a22024200370300200042003703d8034196ebca00ad42808080808002841001220329000021042002200341086a290000370300200020043703d8032003102941f0edca00ad4280808080f00084100122032900002104200041a8056a41086a220b200341086a290000370300200020043703a80520031029200120002903a805370000200141086a200b290300370000200041a0036a41086a2002290300370300200041a0036a41106a200a290300370300200041a0036a41186a2005290300370300200020002903d8033703a003200041d8036a200041a0036a10a90720002802d803210220002902dc032104200041003602e003200042013703d803200041d8036a41002004420020021b2204422088a7220341306c220a41306d109e012004a7210b2002410820021b210c20002802e003210502402003450d0020002802d80320054105746a2102200c21030340200341086a2900002104200341106a290000210d2003290000210e200241186a200341186a290000370000200241106a200d370000200241086a20043700002002200e370000200541016a2105200241206a2102200341306a2103200a41506a220a0d000b0b200020053602e0030240200b450d00200b41306c450d00200c10290b20002802dc03210320002802d8032102200041b8026a20062005109e0120002802b80220002802c002220a4105746a2002200541057410e4071a2000200a20056a220b3602c0020240200341ffffff3f71450d00200210290b200041d8036a41186a22054200370300200041d8036a41106a220a4200370300200041d8036a41086a22024200370300200042003703d8034196ebca00ad42808080808002841001220329000021042002200341086a290000370300200020043703d8032003102941eaf8ca00ad4280808080900184100122032900002104200041a8056a41086a2206200341086a290000370300200020043703a80520031029200120002903a805370000200141086a2006290300370000200041a0036a41086a2002290300370300200041a0036a41106a200a290300370300200041a0036a41186a2005290300370300200020002903d8033703a003200041d8036a200041a0036a10a90720002802d803210220002902dc032104200041003602e003200042013703d803200041d8036a41002004420020021b2204422088a7220341306c220a41306d109e012004a721062002410820021b210120002802e003210502402003450d0020002802d80320054105746a2102200121030340200341086a2900002104200341106a290000210d2003290000210e200241186a200341186a290000370000200241106a200d370000200241086a20043700002002200e370000200541016a2105200241206a2102200341306a2103200a41506a220a0d000b0b200020053602e00302402006450d00200641306c450d00200110290b20002802dc03210320002802d8032102200041b8026a200b2005109e0120002802b80220002802c002220a4105746a2002200541057410e4071a2000200a20056a3602c0020240200341ffffff3f71450d00200210290b4196ebca00ad4280808080800284100122022900002104200041d0056a41086a2203200241086a290000370300200020043703d0052002102941f7edca00ad4280808080e00084100122022900002104200041a8056a41086a2205200241086a290000370300200020043703a80520021029412010272202450d01200220002903d005370000200220002903a805370010200241086a2003290300370000200241186a220a2005290300370000412010272203450d0120032002290000370000200341186a200a290000370000200341106a200241106a290000370000200341086a200241086a29000037000020004190036a41026a2205200041d8036a41026a2d00003a0000200020002f00d8033b019003200041f0026a41106a42a08080808004370300200041003a008803200020023602fc02200042a080808080043702f402200020033602f0022000418b036a20052d00003a0000200020002f0190033b0089032000200041a8056a36028c03200041d8036a200041f0026a109107024002402000280288042205450d00200041a0036a41186a220a200041d8036a41186a290300370300200041a0036a41106a2206200041d8036a41106a290300370300200041a0036a41086a220b200041d8036a41086a290300370300200020002903d8033703a00320004180046a290300210d20002903f803210e200029028c04210f200041d0056a41186a4200370300200041d0056a41106a22014200370300200041d0056a41086a22024200370300200042003703d00541dcbec500ad42808080808001841001220329000021042002200341086a290000370300200020043703d00520031029419fe3c200ad4280808080d0018410012203290000210420004198056a41086a220c200341086a29000037030020002004370398052003102920012000290398052204370300200041f8046a41086a2002290300370300200041f8046a41106a2004370300200041f8046a41186a200c290300370300200020002903d0053703f804200041a0026a200041f8046a412010e30120004190026a20002903a802200041a0026a41106a290300427f420010e00720002802a0022102200041a8056a41186a2203200a290300370300200041a8056a41106a2006290300370300200041a8056a41086a200b290300370300200020002903a0033703a80520004190026a41086a29030021042000290390022110413810272211450d0320004180026a200e200d2010420020021b2210420120104201562004420020021b22044200522004501b22021b2004420020021b10e007201120002903a8053703082011200f37022c20112005360228201141106a200041a8056a41086a2202290300370300201141186a200041a8056a41106a2205290300370300201141206a2003290300370300201120002903800237030020004281808080103702cc02200020113602c8022003200041f0026a41186a2903003703002005200041f0026a41106a2903003703002002200041f0026a41086a290300370300200020002903f0023703a805200041d8036a200041a8056a10910702400240200028028804220b0d00410121120c010b200041d8036a41286a21134138210a41012106410121030340200041a0036a41186a220c200041d8036a41186a290300370300200041a0036a41106a2214200041d8036a41106a290300370300200041a0036a41086a2215200041d8036a41086a290300370300200020002903d8033703a0032013290300210d200029028c04210e20002903f803210f200041d0056a41186a22164200370300200041d0056a41106a22174200370300200041d0056a41086a22024200370300200042003703d00541dcbec500ad42808080808001841001220529000021042002200541086a290000370300200020043703d00520051029419fe3c200ad4280808080d0018410012205290000210420004198056a41086a2218200541086a2900003703002000200437039805200510292001200029039805370000200141086a2018290300370000200041f8046a41086a2002290300370300200041f8046a41106a2017290300370300200041f8046a41186a2016290300370300200020002903d0053703f804200041e8016a200041f8046a412010e301200041d8016a20002903f001200041e8016a41106a290300427f420010e007200041c8016a200f200d20002903d801420020002802e80122021b220442012004420156200041d8016a41086a290300420020021b22044200522004501b22021b2004420020021b10e007200041d8046a41186a2205200c290300370300200041d8046a41106a220c2014290300370300200041d8046a41086a22142015290300370300200020002903a0033703d80420002903c8012104024020032006470d00200041c8026a2006410110a80120002802c80221110b2011200a6a22022004370300200241086a20002903d80437030020052903002104200c290300210d2014290300210f2002412c6a200e370200200241286a200b360200200241106a200f370300200241186a200d370300200241206a20043703002000200341016a22023602d002200041d8036a200041a8056a1091070240200028028804220b450d00200a41386a210a20002802cc022106200221030c010b0b200341016a21120b024020002802ac05450d0020002802a80510290b0240200041b8056a280200450d0020002802b40510290b20002802cc0221190c010b024020002802f402450d0020002802f00210290b41082111410021120240200028028003450d0020002802fc0210290b410021190b200041a8056a41086a200041b8026a41086a280200360200200020002903b8023703a8052012ad42387e2204422088a70d002004a72202417f4c0d000240024020020d00410821030c010b200210272203450d020b200041003602a803200020033602a0032000200241386e3602a403200041a0036a4100201210a80120002802a803210102402012450d00201241386c210a20002802a003200141386c6a2102201241037441786a410376210b200041d8036a41286a2106200041d8036a41086a2105201121030340200541186a200341206a290300370300200541106a200341186a290300370300200541086a200341106a2903003703002005200341086a290300370300200020032903003703d8032006200341286a10ef02200241306a200041d8036a41306a290300370300200241286a2006290300370300200241206a200041d8036a41206a290300370300200241186a200041d8036a41186a290300370300200241106a200041d8036a41106a290300370300200241086a2005290300370300200220002903d803370300200241386a2102200341386a2103200a41486a220a0d000b2001200b6a41016a21010b4108210a200041d8036a41086a22022001360200200020002903a0033703d803200041c8026a41214100200041a8056a200041d8036a1098020240024020002802c802220b0d0041012118200041013a00dc032000410c3a00d803200041d8036a10cb01200041a0036a2101200041d8036a21060c010b200041dc026a2802002101200041c8026a41106a280200211a200041d4026a280200211b200041c8026a41086a280200211420002802cc02210c42002104200041d8036a41186a4200370300200041d8036a41106a221c420037030020024200370300200042003703d8034196ebca00ad428080808080028410012203290000210d200041d0056a41086a2205200341086a2900003703002000200d3703d0052003102920022005290300370300200020002903d0053703d80341f0edca00ad4280808080f0008410012203290000210d200041a8056a41086a2205200341086a2900003703002000200d3703a80520031029201c20002903a805220d370300200041a0036a41086a2002290300370300200041a0036a41106a200d370300200041a0036a41186a2005290300370300200020002903d8033703a003200041d8036a200041a0036a10a907024020002802d8032202450d00200041a0036aad4280808080800484100420002902dc0321042002210a0b200041003602e003200042013703d803200041d8036a41002004422088a7220241306c220541306d109e012004a7210620002802e003211d02402002450d0020002802d803201d4105746a2102200a21030340200341086a2900002104200341106a290000210d2003290000210e200241186a200341186a290000370000200241106a200d370000200241086a20043700002002200e370000201d41016a211d200241206a2102200341306a2103200541506a22050d000b0b2000201d3602e00302402006450d00200641306c450d00200a10290b20002802dc03211e20002802d803211f42002104200041d8036a41186a22054200370300200041d8036a41106a220642003703004108210a200041d8036a41086a22024200370300200042003703d8034196ebca00ad428080808080028410012203290000210d200041d0056a41086a2215200341086a2900003703002000200d3703d0052003102920022015290300370300200020002903d0053703d80341eaf8ca00ad428080808090018410012203290000210d200041a8056a41086a2215200341086a2900003703002000200d3703a80520031029201c20002903a805370000201c41086a2015290300370000200041a0036a41086a2002290300370300200041a0036a41106a2006290300370300200041a0036a41186a2005290300370300200020002903d8033703a003200041d8036a200041a0036a10a907024020002802d8032202450d00200041a0036aad4280808080800484100420002902dc0321042002210a0b200041003602e003200042013703d803200041d8036a41002004422088a7220241306c220541306d109e012004a7210620002802e003212002402002450d0020002802d80320204105746a2102200a21030340200341086a2900002104200341106a290000210d2003290000210e200241186a200341186a290000370000200241106a200d370000200241086a20043700002002200e370000202041016a2120200241206a2102200341306a2103200541506a22050d000b0b200020203602e00302402006450d00200641306c450d00200a10290b20002802dc03212120002802d8032122024002400240201441306c2203450d00200b21020340200241286a2903002104200241206a290300210d200041d0056a41186a200241186a290000370300200041d0056a41106a200241106a290000370300200041d0056a41086a200241086a290000370300200020022900003703d005200d2004844200520d02200241306a2102200341506a22030d000b0b41012123410021240240200c450d00200c41306c450d00200b10290b410021250c010b200041a8056a41086a2205200041d0056a41086a290300370300200041a8056a41106a220a200041d0056a41106a290300370300200041a8056a41186a2206200041d0056a41186a290300370300200020002903d00522043703a003200020043703a805412010272223450d03202320002903a805370000202341186a2006290300370000202341106a200a290300370000202341086a200529030037000020004281808080103702dc03200020233602d8030240024020034130470d00410121240c010b200241306a2105200b201441306c6a220641506a21144101212403402005210202400340200241286a2903002104200241206a290300210d200041d0056a41186a2203200241186a290000370300200041d0056a41106a2205200241106a290000370300200041d0056a41086a220a200241086a290000370300200020022900003703d005200d2004844200520d012006200241306a2202470d000c030b0b200041f8046a41086a200a2903002204370300200041f8046a41106a2005290300220d370300200041f8046a41186a2003290300220e370300200020002903d005220f3703f804200041a0036a41186a220a200e370300200041a0036a41106a2215200d370300200041a0036a41086a221620043703002000200f3703a0030240202420002802dc03470d00200041d8036a20244101109e0120002802d80321230b200241306a2105202320244105746a220320002903a003370000200341186a200a290300370000200341106a2015290300370000200341086a20162903003700002000202441016a22243602e00320142002470d000b0b0240200c450d00200c41306c450d00200b10290b20002802dc0321250b2000410036029803200042043703900320004190036a41002001412c6c2202412c6d109301201b20026a21162000280298032126200028029003212702400240024020010d00201b21020c010b200041d8036a410c6a210a20272026412c6c6a2103200041a0036a410c6a210b200041d0056a41106a210c200041d8036a4104722106200041a8056a41206a2117200041a8056a41186a2118200041a8056a41086a2113201b21020340200228020021052017200241246a29020037030020182002411c6a290200370300200041a8056a41106a2201200241146a29020037030020132002410c6a2902003703002000200241046a2902003703a805024020050d002002412c6a21020c020b200620002903a805370200200641086a2013290300370200200641106a2001290300370200200641186a2018290300370200200641206a2017290300370200200020053602d803200041f8046a200a10ac07200041d0056a20002802f804222820002802800510fb05200041d0056a41086a2214290300210420002802e005210120002903d005210d20002802e4052115024020002802fc04450d00202810290b2004420020011b210e200d420020011b210d02402001450d00201541ffffff3f71450d002001410120011b10290b200041d0056a41186a22284200370300200c420037030020144200370300200042003703d00541dcbec500ad42808080808001841001220129000021042014200141086a290000370300200020043703d00520011029419fe3c200ad4280808080d0018410012201290000210420004198056a41086a2215200141086a290000370300200020043703980520011029200c200029039805370000200c41086a2015290300370000200041f8046a41086a2014290300370300200041f8046a41106a200c290300370300200041f8046a41186a2028290300370300200020002903d0053703f804200041b0016a200041f8046a412010e301200041a0016a20002903b801200041b0016a41106a290300427f420010e00720004190016a200d200e20002903a001420020002802b00122011b220442012004420156200041a0016a41086a290300420020011b22044200522004501b22011b2004420020011b10e007200041d8046a41086a2201200a41086a290200370300200041d8046a41106a2214200a41106a290200370300200041d8046a41186a2228200a41186a2902003703002000200a2902003703d80420002802dc03212920002802e003212a200042003703f80220002000290390013703f0022000420037038005200042003703f80420002005202a41246c6a3602dc05200020053602d805200020293602d405200020053602d0052000200041f8046a3602e4052000200041f0026a3602e00520004198056a200041d0056a1099020240024020002903f002220420002903f804220d7d222b20045620002903f802220e200029038005220f7d2004200d54ad7d2210200e562010200e511b4101470d00200d20047d2210200d56200f200e7d200d200454ad7d2204200f562004200f511b0d0120002802a0052205450d01200541306c2000280298056a41706a220542002005290300220d20107d220e200e200d56200541086a2205290300220e20047d200d201054ad7d2204200e562004200e511b22291b37030020054200200420291b3703000c010b20002802a0052205450d00200541306c2000280298056a41706a2205427f20052903002204202b7c220d200d2004542229200541086a2205290300220420107c2029ad7c220d200454200d2004511b22291b3703002005427f200d20291b3703000b200b20002903d804370200200041a0036a41086a22052015280200360200200b41186a2028290300370200200b41106a2014290300370200200b41086a2001290300370200200020002903980522043703a003200341286a200041a0036a41286a280200360200200341206a200041a0036a41206a290300370200200341186a200041a0036a41186a290300370200200341106a200041a0036a41106a290300370200200341086a200529030037020020032004370200202641016a21262003412c6a21032002412c6a22022016470d000b20002026360298030c010b200020263602980320022016460d00034020022203412c6a21020240200341046a2802002205450d00200541246c450d00200328020010290b20162002470d000b0b0240201a450d00201a412c6c450d00201b10290b200028029403212c200041d8036a2023202420272026109a0220004190036a41086a200041d8036a41086a2216280200360200200020002903d80337039003200041003602a803200042083703a003200041a0036a41002024410574220241057510900120002802a803212d20002802a003212e02402002450d00202320026a2113202e202d41306c6a2101200041d0056a41106a211541dcbec500ad4280808080800184210f2023210b0340200b41086a2900002104200b41106a290000210d200b290000210e200041d8036a41186a2217200b41186a290000370300200041d8036a41106a2218200d370300201620043703002000200e3703d803024002402000280290032206450d00200b41206a210b200028029403210c0340200641086a210320062f01062214410574210241002105024003402002450d01200041d8036a2003412010e707220a450d04200241606a2102200541016a2105200341206a2103200a417f4a0d000b2005417f6a21140b200c450d01200c417f6a210c200620144102746a41c8056a28020021060c000b0b41cceec90041da0041a8efc9001057000b200041d8046a41186a220a2017290300370300200041d8046a41106a220c2018290300370300200041d8046a41086a22142016290300370300200020002903d8033703d804200620054105746a220241f0026a290300210d200241e8026a290300210e200041d0056a41186a2205420037030020154200370300200041d0056a41086a22024200370300200042003703d005200f1001220329000021042002200341086a290000370300200020043703d00520031029419fe3c200ad4280808080d0018410012203290000210420004198056a41086a2206200341086a2900003703002000200437039805200310292015200029039805370000201541086a2006290300370000200041f8046a41086a2002290300370300200041f8046a41106a2015290300370300200041f8046a41186a2005290300370300200020002903d0053703f804200041f8006a200041f8046a412010e301200041e8006a200029038001200041f8006a41106a290300427f420010e007200041d8006a20002903684200200028027822021b220442012004420156200041e8006a41086a290300420020021b22044200522004501b22021b2004420020021b200e200d10d507200141186a200a290300370300200141106a200c290300370300200141086a2014290300370300200120002903d804370300200141286a200041d8006a41086a29030037030020012000290358370320202d41016a212d200141306a2101200b2013470d000b0b2000202d3602a8030240202541ffffff3f71450d00202310290b20002802a403212f02400240202d410d202d410d491b22300d00200041003602e003200042083703d803200041d8036a4100410010900120002802e00321240c010b203041306c220510272202450d03200041003602e003200020303602dc03200020023602d803200041d8036a4100203010900120002802d80320002802e003222441306c6a2102202e21030340200341086a2903002104200341106a290300210d200341186a290300210e2003290300210f200241286a200341286a290300370300200241206a200341206a290300370300200241186a200e370300200241106a200d370300200241086a20043703002002200f370300200241306a2102202441016a2124200341306a2103200541506a22050d000b200020243602e0030b20002802dc03213120002802d80321170240024020244115490d002024410176ad42307e2204422088a70d032004a72232417f4c0d03203210272233450d04200041003602a803200042043703a003201741506a2134201741f07e6a21354104210541002103410021362024212803402028210b410021284101210c0240200b417f6a2206450d000240024002400240024002402017200641306c6a200b41306c220220176a41a07f6a412010e7074100480d00200b417e6a2101203520026a2102410021284100210a034002402001200a470d00200b210c0c080b200a41016a210a200241306a2002412010e7072106200241506a21022006417f4a0d000b200a41016a210c200a417f73200b6a21060c010b2035200b41066c41037422146a210202400340024020064101470d00410021060c020b2006417f6a2106200241306a2002412010e707210a200241506a2102200a4100480d000b0b200b2006490d01200b20244b0d02200b20066b220c4101762201450d00203420146a21022017200641306c6a210a0340200041d8036a41286a2214200a41286a2215290300370300200041d8036a41206a2216200a41206a2218290300370300200041d8036a41186a2213200a41186a2228290300370300200041d8036a41106a2229200a41106a222a290300370300200041d8036a41086a2223200a41086a221b2903003703002000200a2903003703d803200241086a221a2903002104200241106a2225290300210d200241186a2237290300210e200241206a2238290300210f200241286a22392903002110200a2002290300370300201520103703002018200f3703002028200e370300202a200d370300201b200437030020392014290300370300203820162903003703002037201329030037030020252029290300370300201a2023290300370300200220002903d803370300200241506a2102200a41306a210a2001417f6a22010d000b0b024020060d00200621280c050b0240200c41094d0d00200621280c050b200b20244b0d02200b20066b21012017200641306c6a21140340200b2006417f6a2228490d040240200b20286b220c4102490d002017200641306c6a22022017202841306c6a2206412010e707417f4a0d002006290300210420062002290300370300200041d8036a41286a2213200641286a220a290300370300200041d8036a41206a2229200641206a2215290300370300200041d8036a41186a222a200641186a2216290300370300200041d8036a41106a2223200641106a2218290300370300200041d8036a41086a221b200641086a221a290300370300201a200241086a2903003703002018200241106a2903003703002016200241186a2903003703002015200241206a290300370300200a200241286a290300370300200020043703d803410121180240200c4103490d00200641e0006a200041d8036a412010e707417f4a0d004102210a2014210202400340200241286a200241d8006a290300370300200241206a200241d0006a290300370300200241186a200241c8006a290300370300200241106a200241c0006a290300370300200241086a200241386a2903003703002002200241306a22152903003703002001200a460d01200241e0006a2116200a211820152102200a41016a210a2016200041d8036a412010e707417f4a0d020c000b0b200a21180b2006201841306c6a220220002903d803370300200241286a2013290300370300200241206a2029290300370300200241186a202a290300370300200241106a2023290300370300200241086a201b2903003703000b2028450d05201441506a2114200141016a210120282106200c410a4f0d050c000b0b2006200b4180cac700104c000b200b20244180cac700104b000b200b2006417f6a2228490d00200b20244190cac700104b000b2028200b4190cac700104c000b0240203620002802a403470d00200041a0036a20364101108d0120002802a003210520002802a803220321360b200520364103746a2202200c360204200220283602002000200341016a22033602a80320032136024020034102490d000240024003400240024002400240024020052003417f6a4103746a2202280200450d00200341037420056a220141746a28020022062002280204220a4b0d010b20034103490d022002280204210a20052003417d6a22164103746a28020421020c010b41022136200341024d0d0620052003417d6a22164103746a2802042202200a20066a4d0d0041032136200341034d0d06200141646a280200200220066a4b0d050b2002200a490d010b2003417e6a21160b02400240024002400240024002402003201641016a22184d0d00200320164d0d012005201641037422296a2202280204222a20022802006a22022005201841037422236a22032802002213490d02200220244b0d032017201341306c6a22142003280204221541306c22036a210a200241306c2105200220136b220120156b220220154f0d042033200a200241306c220310e407220c20036a210620154101480d0520024101480d05203420056a2103200a210203402003200241506a220a200641506a22012001200a412010e707410048220b1b2205290300370300200341286a200541286a290300370300200341206a200541206a290300370300200341186a200541186a290300370300200341106a200541106a290300370300200341086a200541086a29030037030020062001200b1b210602402014200a2002200b1b2202490d00200c21050c080b200341506a2103200c2105200c2006490d000c070b0b2018200341a0cac7001036000b2016200341b0cac7001036000b2013200241c0cac700104c000b2002202441c0cac700104b000b20332014200310e407220c20036a2106024020154101480d00200120154c0d00201720056a210b200c21052014210203402002200a2005200a2005412010e70741004822011b2203290300370300200241286a200341286a290300370300200241206a200341206a290300370300200241186a200341186a290300370300200241106a200341106a290300370300200241086a200341086a2903003703002005200541306a20011b2105200241306a2102200a41306a200a20011b220a200b4f0d03200620054b0d000c030b0b20142102200c21050c010b200a2102200c21050b20022005200620056b220320034130706b10e4071a024020002802a803220220164d0d0020002802a003220520296a2203202a20156a36020420032013360200200220184d0d02200520236a2203200341086a20022018417f736a41037410e5071a20002002417f6a22033602a803200341014b0d010c030b0b2016200241d0cac7001036000b201820021042000b200321360b20280d000b024020002802a40341ffffffff0171450d00200510290b2032413070210220324130490d0120322002460d01203310290c010b20244102490d002024417f6a2103202441306c20176a41506a21064101210503400240024002400240202420032202417f6a2203490d00202420036b22014102490d032017200241306c6a22022017200341306c6a220a412010e707417f4a0d03200a2903002104200a2002290300370300200041d8036a41286a2215200a41286a220b290300370300200041d8036a41206a2216200a41206a220c290300370300200041d8036a41186a2218200a41186a2214290300370300200041d8036a41106a2213200a41106a2228290300370300200041d8036a41086a2229200a41086a222a290300370300202a200241086a2903003703002028200241106a2903003703002014200241186a290300370300200c200241206a290300370300200b200241286a290300370300200020043703d8034101210220014103490d02200a41e0006a200041d8036a412010e707417f4a0d0241002101200621020340200241286a200241d8006a290300370300200241206a200241d0006a290300370300200241186a200241c8006a290300370300200241106a200241c0006a290300370300200241086a200241386a2903003703002002200241306a220c29030037030020052001220b460d02200b417f6a2101200241e0006a2114200c21022014200041d8036a412010e707417f4a0d020c000b0b2003202441f0c9c700104c000b4102200b6b21020b200a200241306c6a220220002903d803370300200241286a2015290300370300200241206a2016290300370300200241186a2018290300370300200241106a2013290300370300200241086a20292903003703000b200641506a21062005417f6a210520030d000b0b200041003602e003200042083703d803200041d8036a4100202441306c221341306e222810920120002802e003210b0240024020130d0020002802d80321010c010b20002802d8032201200b4104746a21022013210520172103034020022003360200200241086a4200370300200241106a2102200b41016a210b200341306a2103200541506a22050d000b0b2011201241386c6a211520002802dc03212902400240024020120d002011210c0c010b200b41014b2118201121020340200241386a210c20022802282216450d0102402002412c6a290200220e422088a74105742203450d002002290300210d024020180d000240200b0e020200020b2001280200210542102104201621020340024020052002412010e7070d0020012001290308200d200442ffffffff0f837e7c3703080b200241206a21022004427f7c2104200341606a22030d000c020b0b201620036a21144200210420162106024003400240200b450d0041002102200b210303402003410176220520026a220a20022001200a4104746a2802002006412010e7074101481b2102200320056b220341014b0d000b200120024104746a22032802002006412010e7070d00200b20024d0d0220032003290308200d421020047d42ffffffff0f837e7c3703080b200442017c21042014200641206a2206460d020c000b0b2002200b41f4f8ca001036000b0240200e42ffffff3f83500d00201610290b200c2102200c2015470d000c020b0b2015200c460d000340200c41386a21020240200c412c6a28020041ffffff3f71450d00200c41286a28020010290b2002210c20152002470d000b0b02402019450d00201941386c450d00201110290b201720136a210c024002400240200b450d0020012802002203450d000240200b4101460d002001200b4104746a2106200141106a210220012903082104034020022802002205450d012004200241086a290300220d2004200d56220a1b210420032005200a1b2103200241106a22022006470d000b0b0240202941ffffffff0071450d00200110290b20030d01410021130c020b41002113202941ffffffff0071450d01200110290c010b200041f0026a41186a200341186a290000370300200041f0026a41106a200341106a290000370300200041f0026a41086a200341086a290000370300200020032900003703f002410121130b200041003602e003200042013703d803200041d8036a41002028109e0120002802e0032105024002402017200c4722380d0020002802d80321230c010b202441306c210a20002802d803222320054105746a210220172103034020022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200541016a2105200241206a2102200341306a2103200a41506a220a0d000b0b20002802dc032139200041003602e003200042083703d803200041d8036a4100202e202d41306c22026a2203202e203041306c220a6a6b41306e10900120002802e003210b02400240202d410d4b0d0020002802d803211b0c010b200a20026b210a20002802d803221b200b41306c6a2102200341506a21030340200341086a2903002104200341106a290300210d200341186a290300210e2003290300210f200241286a200341286a290300370300200241206a200341206a290300370300200241186a200e370300200241106a200d370300200241086a20043703002002200f370300200241306a2102200341506a2103200b41016a210b200a41306a220a0d000b0b20002802dc03211a200041003602e003200042013703d803200041d8036a4100200b109e0120002802e003210a02400240200b41306c22060d0020002802d803210c0c010b20002802d803220c200a4105746a2102201b2103034020022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200a41016a210a200241206a2102200341306a2103200641506a22060d000b0b20002802dc032133200041d8036a20232005201f201d10e506200041ec036a280200221541ffffff3f712015470d0120154105742201417f4c0d01200041e8036a280200213620002802e403211420002802dc03212d20002802d80321340240024020010d00410121020c010b200110272202450d030b200041003602e003200020023602d8032000200141057622283602dc03200041d8036a41002015109e0120002802e00321160240024020150d0020002802d80321180c010b2015410574210620002802d803221820164105746a210220142103034020022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200241206a2102200341206a2103200641606a22060d000b201541057441606a41057620166a41016a21160b20002802dc032102201820162023200510ef060240200241ffffff3f71450d00201810290b200041a8056a41186a2202200041f0026a41186a290300370300200041a8056a41106a2203200041f0026a41106a290300370300200041a8056a41086a2205200041f0026a41086a290300370300200020002903f0023703a8050240024020130d00200041d0056a41186a4200370300200041d0056a41106a22054200370300200041d0056a41086a22024200370300200042003703d0054193d4c800ad4280808080b002841001220329000021042002200341086a290000370300200020043703d0052003102941f8d7ca00ad4280808080d0008410012203290000210420004198056a41086a2206200341086a29000037030020002004370398052003102920052000290398052204370300200041d8046a41086a2002290300370300200041d8046a41106a2004370300200041d8046a41186a2006290300370300200020002903d0053703d804200041d8046aad428080808080048410040c010b200041d8036a41186a2002290300370300200041d8036a41106a2003290300370300200041d8036a41086a2005290300370300200020002903a8053703d803200041f8046a41186a4200370300200041f8046a41106a22054200370300200041f8046a41086a22024200370300200042003703f8044193d4c800ad4280808080b002841001220329000021042002200341086a290000370300200020043703f8042003102941f8d7ca00ad4280808080d00084100122032900002104200041d0056a41086a2206200341086a290000370300200020043703d00520031029200520002903d0052204370300200041a0036a41086a2002290300370300200041a0036a41106a2004370300200041a0036a41186a2006290300370300200020002903f8043703a003412010272202450d03200220002903d803370000200241186a200041d8036a41186a290300370000200241106a200041d8036a41106a290300370000200241086a200041d8036a41086a290300370000200041a0036aad42808080808004842002ad42808080808004841003200210290b0240024020010d00410121030c010b200110272203450d030b41002102200041003602e003200020283602dc03200020033602d803200041d8036a41002015109e0120002802e003211602402015450d002015410574210620002802d80320164105746a21010340200120026a2203201420026a2205290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a2900003700002006200241206a2202470d000b201541057441606a41057620166a41016a21160b20004180056a2016360200200020002903d8033703f804200041d8036a200c200a2022202010e506200041ec036a2802002103200041e8036a280200210520002802e4032102024020002802dc0341ffffff3f71450d0020002802d80310290b200041f8046a200028028005200341057422034105752206109e0120002802f804223720002802800522014105746a2002200310e4071a2000200120066a2225360280050240200541ffffff3f71450d00200210290b02402007450d00200820074105746a2115200041e1036a212a024020240d00200a410574211820004190046a21132008210a0340200a41086a2900002104200a41106a290000210d200a290000210e200041a8056a41186a2206200a41186a290000370300200041a8056a41106a2201200d370300200041a8056a41086a221620043703002000200e3703a805200a41206a210a20182103200c21020240024003402003450d01200041a8056a2002460d02200341606a21032002200041a8056a412010e7072105200241206a210220050d000c020b0b200042003703d80520004280a094a58d1d3703d0052000200041a8056a3602d804200041a0036a200041a8056a200041d0056a200041d8046a10a905200041a0036a41206a290300210420002903b803210d024020002903a0034201520d0020002903a803210e2013200041a0036a41106a290300370300202a20002903a805370000202a41086a2016290300370000202a41106a2001290300370000202a41186a20062903003700002000200e37038804200041003a00e003200041033a00d803200041d8036a10cb010b200041286a200d20041081022000290328a7450d00200041286a41106a29030021042000290330210d200042f0f2bda1a7ee9cb9f9003703a003200041d8036a200041a0036a108202200041d8036a200d2004108002200041d8036a41186a20043703002000200d3703e803200041063a00e0032000410e3a00d803200041d8036a10cb010b200a2015470d000c020b0b200a41057421282024410146212920004190046a211d200821010340200141086a2900002104200141106a290000210d2001290000210e200041a8056a41186a2216200141186a290000370300200041a8056a41106a2218200d370300200041a8056a41086a221320043703002000200e3703a80541002103024020290d0041002103202421050340200041d8036a41186a20172005410176220a20036a220641306c6a220241186a290000370300200041d8036a41106a200241106a290000370300200041d8036a41086a200241086a290000370300200020022900003703d80320062003200041d8036a200041a8056a412010e7074101481b21032005200a6b220541014b0d000b0b200141206a2101200041d8036a41186a220a2017200341306c6a220241186a290000370300200041d8036a41106a200241106a290000370300200041d8036a41086a200241086a290000370300200020022900003703d80320282103200c21020240200041d8036a200041a8056a412010e707450d00024003402003450d01200041a8056a2002460d02200341606a21032002200041a8056a412010e7072105200241206a210220050d000c020b0b200042003703d80520004280a094a58d1d3703d0052000200041a8056a3602d804200041a0036a200041a8056a200041d0056a200041d8046a10a905200041a0036a41206a290300210420002903b803210d024020002903a0034201520d0020002903a803210e201d200041a0036a41106a290300370300202a20002903a805370000202a41086a2013290300370000202a41106a2018290300370000202a41186a20162903003700002000200e37038804200041003a00e003200041033a00d803200041d8036a10cb010b200041c0006a200d20041081022000290340a7450d00200041c0006a41106a29030021042000290348210d200042f0f2bda1a7ee9cb9f9003703a003200041d8036a200041a0036a108202200041d8036a200d2004108002200a20043703002000200d3703e803200041063a00e0032000410e3a00d803200041d8036a10cb010b20012015470d000b0b0240200941ffffff3f71450d00200810290b20002802fc04211602402025450d0020254105742103200041e1036a210520004190046a2115203721020340200241086a2900002104200241106a290000210d2002290000210e200041a8056a41186a220a200241186a290000370300200041a8056a41106a2206200d370300200041a8056a41086a220120043703002000200e3703a805200042003703d80520004280a094a58d1d3703d0052000200041a8056a3602d804200041a0036a200041a8056a200041d0056a200041d8046a10a905200041a0036a41206a290300210420002903b803210d024020002903a0034201520d0020002903a803210e2015200041a0036a41106a290300370300200520002903a805370000200541086a2001290300370000200541106a2006290300370000200541186a200a2903003700002000200e37038804200041003a00e003200041033a00d803200041d8036a10cb010b200041106a200d200410810202402000290310a7450d00200041106a41106a29030021042000290318210d200042f0f2bda1a7ee9cb9f9003703a003200041d8036a200041a0036a108202200041d8036a200d2004108002200041d8036a41186a20043703002000200d3703e803200041063a00e0032000410e3a00d803200041d8036a10cb010b200241206a2102200341606a22030d000b0b0240201641ffffff3f71450d00203710290b200041d8036a41186a22034200370300200041d8036a41106a22054200370300200041d8036a41086a22024200370300200042003703d8034196ebca00ad4280808080800284220410012206290000210d200041d0056a41086a220a200641086a2900003703002000200d3703d005200610292002200a290300370300200020002903d0053703d80341f0edca00ad4280808080f0008410012201290000210d200041a8056a41086a2206200141086a2900003703002000200d3703a80520011029201c20002903a805370000201c41086a22152006290300370000200041a0036a41086a22162002290300370300200041a0036a41106a22182005290300370300200041a0036a41186a22132003290300370300200020002903d8033703a003200041203602dc032000200041a0036a3602d80320172024200041d8036a10c906200342003703002005420037030020024200370300200042003703d8032004100122012900002104200a200141086a290000370300200020043703d005200110292002200a290300370300200020002903d0053703d80341eaf8ca00ad42808080809001841001220a29000021042006200a41086a290000370300200020043703a805200a1029201c20002903a80537000020152006290300370000201620022903003703002018200529030037030020132003290300370300200020002903d8033703a003200041203602dc032000200041a0036a3602d803201b200b200041d8036a10c9062024ad42307e2204422088a70d012004a72202417f4c0d010240024020020d00410821030c010b200210272203450d030b200041003602e003200020033602d8032000200241306e3602dc03200041d8036a4100202410900120002802e00321050240024020380d0020002802d80321010c010b202441306c210a20002802d8032201200541306c6a2102201721030340200341086a2903002104200341106a290300210d200341186a290300210e2003290300210f200241286a200341286a290300370300200241206a200341206a290300370300200241186a200e370300200241106a200d370300200241086a20043703002002200f370300200241306a2102200541016a2105200341306a2103200a41506a220a0d000b0b2005ad42307e2204422088a70d012004a72202417f4c0d0120002802dc0321060240024020020d00410821030c010b200210272203450d030b200041003602e003200020033602d8032000200241306e3602dc03200041d8036a4100200510900120002802e003210a0240200541306c2205450d0020002802d803200a41306c6a2102200121030340200341086a2903002104200341106a290300210d200341186a290300210e2003290300210f200241286a200341286a290300370300200241206a200341206a290300370300200241186a200e370300200241106a200d370300200241086a20043703002002200f370300200241306a2102200a41016a210a200341306a2103200541506a22050d000b0b200041ab036a200a360000200020002903d8033700a303200041a7036a29000021042000410c3a00d803200041d8036a410c6a2004370000200041003a00dc03200020002900a0033700dd03200041d8036a10cb0102402006450d00200641306c450d00200110290b0240203641ffffff3f71450d00201410290b0240202d41ffffff3f71450d00203410290b0240203341ffffff3f71450d00200c10290b0240201a450d00201a41306c450d00201b10290b0240203941ffffff3f71450d00202310290b02402031450d00203141306c450d00201710290b0240202f450d00202f41306c450d00202e10290b02400240200028029003220a0d0041002106200041ec036a4100360200200041003602dc030c010b20002802980321060240024020002802940322030d00200a21020c010b20032102200a2105034020052802c80521052002417f6a22020d000b200a21020340200220022f01064102746a41c8056a28020021022003417f6a22030d000b2005210a0b200041f4036a20022f0106360200200041f0036a4100360200200041ec036a2002360200200041003602e803200042003703e0032000200a3602dc03200041003602d8030b200020063602f803200041d8036a10b90202402026450d002026412c6c21032027210203400240200241046a2802002205450d00200541306c450d00200228020010290b2002412c6a2102200341546a22030d000b0b0240202c450d00202c412c6c450d00202710290b0240202141ffffff3f71450d00202210290b41002118200041d8036a2106200041a0036a2101201e41ffffff3f71450d00201f10290b200041d8036a41186a220b4200370300200041d8036a41106a22024200370300200041d8036a41086a22034200370300200042003703d8034196ebca00ad428080808080028422041001220a290000210d200041d0056a41086a2205200a41086a2900003703002000200d3703d005200a1029200641086a220c2005290300370000200620002903d00537000041e0f8ca00ad4280808080a0018410012214290000210d200041a8056a41086a220a201441086a2900003703002000200d3703a80520141029200220002903a805220d370300200041a0036a41086a22142003290300370300200041a0036a41106a2215200d370300200041a0036a41186a2216200a290300370300200020002903d8033703a0032001ad42808080808004841004200b42003703002002420037030020034200370300200042003703d803200410012217290000210d2005201741086a2900003703002000200d3703d00520171029200c2005290300370000200620002903d00537000041d4e9cb00ad4280808080e00184220d10012217290000210e200a201741086a2900003703002000200e3703a80520171029200220002903a805220e370300201420032903003703002015200e3703002016200a290300370300200020002903d8033703a003200041086a2001412010fc0120002802082117200028020c2113200b42003703002002420037030020034200370300200042003703d80320041001220129000021042005200141086a290000370300200020043703d00520011029200c2005290300370000200620002903d005370000200d100122052900002104200a200541086a290000370300200020043703a80520051029200220002903a805220437030020142003290300370300201520043703002016200a290300370300200020002903d8033703a0032000201341016a410120171b3602d803200041a0036aad4280808080800484200041d8036aad4280808080c0008410030240024020002802c80222020d0020180d010c040b2018450d03024020002802cc022203450d00200341306c450d00200210290b200041d4026a280200210a0240200041dc026a2802002202450d002002412c6c2103200a210203400240200241046a2802002205450d00200541246c450d00200228020010290b2002412c6a2102200341546a22030d000b0b200041d8026a2802002202450d002002412c6c450d00200a10290b02402012450d00201241386c21032011412c6a210203400240200228020041ffffff3f71450d002002417c6a28020010290b200241386a2102200341486a22030d000b0b02402019450d00201941386c450d00201110290b200941ffffff3f71450d02200810290c020b1038000b1039000b200041f0056a24000b930605047f017e017f017e0a7f230041f0016b22022400200241d0006a41186a22034200370300200241d0006a41106a22044200370300200241d0006a41086a220542003703002002420037035041c99fc500ad42808080809001842206100122072900002108200241f0006a41086a2209200741086a2900003703002002200837037020071029200520092903003703002002200229037037035041d892c700ad4280808080c001841001220729000021082009200741086a2900003703002002200837037020071029200420022903702208370300200241306a41086a220a2005290300370300200241306a41106a220b2008370300200241306a41186a220c200929030037030020022002290350370330200241f0006a200241306a10a305410321070240024020022d009001220d4103470d00411610d5042109200241086a411610d60420022903082108200041026a20093a0000200041113a0001200041046a20083702000c010b200241306aad428080808080048422081004200241106a41086a220e2009290300370300200241106a41106a220f200241f0006a41106a2210290300370300200241106a41186a2211200241f0006a41186a2212290300370300200220022903703703102003420037030020044200370300200542003703002002420037035020061001220729000021062009200741086a2900003703002002200637037020071029200520092903003703002002200229037037035041b092c700ad4280808080d002841001220729000021062009200741086a290000370300200220063703702007102920042002290370370000200441086a2009290300370000200a2005290300370300200b2004290300370300200c200329030037030020022002290350370330200241013a00702008200241f0006aad428080808010841003200941023a0000200241093a0070200241f0006a10cb01201220112903003703002010200f2903003703002009200e2903003703002002200229031037037020014180ce186a200241f0006a200d4180840710a405410421070b200020073a0000200241f0016a24000bf31b06057f017e017f017e127f097e230022022103200241a0046b41607122022400200241a0016a41186a4200370300200241a0016a41106a22044200370300200241a0016a41086a22054200370300200242003703a00141c99fc500ad4280808080900184100122062900002107200241f8006a41086a2208200641086a290000370300200220073703782006102920052008290300370300200220022903783703a00141a88dc700ad4280808080b001841001220629000021072008200641086a2900003703002002200737037820061029200420022903782207370300200241d8006a41086a2005290300370300200241d8006a41106a2007370300200241d8006a41186a2008290300370300200220022903a001370358200241203602b4022002200241d8006a3602b002200241b8026a200241d8006aad428080808080048422091007108b02024002400240024002400240024020022802b802220a0d004100210b0c010b20022802bc02210c2002200241b8026a41086a2802003602cc022002200a3602c802200241d0006a200241c8026a10c8010240024020022802500d002002280254220d20022802cc02220e41c4006e22082008200d4b1bad42c4007e2207422088a70d042007a72208417f4c0d040240024020080d004104210b0c010b20081027220b450d040b200241003602d8022002200b3602d0022002200841c4006e3602d40202400240200d450d004100210f41002110034002400240200e4104490d00200220022802c802221141046a3602c8022011280000211241002108200241003a00c001200e417c6a21060240024002400240034020062008460d01200241a0016a20086a201120086a220541046a2d00003a00002002200541056a3602c8022002200841016a22053a00c0012005210820054120470d000b20024180046a41186a2213200241a0016a41186a221429030037030020024180046a41106a2215200241a0016a41106a221629030037030020024180046a41086a2217200241a0016a41086a2218290300370300200220022903a0013703800441002108200241003a00c001201120056a21192005200e6b41046a210e0340200e20086a450d02200241a0016a20086a201920086a221141046a2d00003a00002002201141056a3602c8022002200841016a22113a00c0012006417f6a21062011210820114120470d000b200241f8006a41186a22082014290300370300200241f8006a41106a22112016290300370300200241f8006a41086a220e2018290300370300200241e0036a41086a22192017290300370300200241e0036a41106a221a2015290300370300200241e0036a41186a221b2013290300370300200220022903a00137037820022002290380043703e0032014201b2903003703002016201a29030037030020182019290300370300200220022903e0033703a00120132008290300370300201520112903003703002017200e2903003703002002200229037837038004200620056b210e410021082012211a0c050b200841ff0171450d020c010b200841ff0171450d010b200241003a00c0010b4100210e0b410121080b200241c0036a41086a2205200241a0016a41086a290300370300200241c0036a41106a2206200241a0016a41106a290300370300200241c0036a41186a2211200241a0016a41186a290300370300200241a0036a41086a221920024180046a41086a290300370300200241a0036a41106a221220024180046a41106a290300370300200241a0036a41186a221320024180046a41186a290300370300200220022903a0013703c00320022002290380043703a00320080d02201041016a211020024180036a41186a2214201129030037030020024180036a41106a2211200629030037030020024180036a41086a22062005290300370300200241e0026a41086a22052019290300370300200241e0026a41106a22192012290300370300200241e0026a41186a22122013290300370300200220022903c00337038003200220022903a0033703e0020240200f20022802d402470d00200241d0026a200f4101109f0120022802d002210b20022802d802210f0b200b200f41c4006c6a2208201a36020020082002290380033702042008410c6a2006290300370200200841146a20112903003702002008411c6a2014290300370200200820022903e0023702242008412c6a2005290300370200200841346a20192903003702002008413c6a20122903003702002002200f41016a220f3602d8022010200d470d000b2002200e3602cc020b20022902d4022107200b450d010c020b2002200e3602cc02024020022802d4022208450d00200841c4006c450d00200b10290b0b4100210b2002410036028001200242013703782002410d360284042002200241b0026a360280042002200241f8006a3602e003200241b4016a4101360200200242013702a401200241f4eaca003602a001200220024180046a3602b001200241e0036a41a8a3c800200241a0016a10371a2002350280014220862002350278841008200228027c450d00200228027810290b200c450d00200a10290b200b4104200b1b2110024020074200200b1b221c422088a7220b450d00200241386a201028020010a505200241386a41106a2903004200200228023822081b21072002290340420020081b211d0240200b4101470d002002201d3703a00141002111200241003602b001200220073703a8010c040b201041c4006a2108200b41c4006c41bc7f6a210e41002111200241206a41106a21192010210f410121060340200241206a200828020010a505200720192903004200200228022022051b221e201d2002290328420020051b221f562007201e562007201e511b22051b2107201d201f20051b211d200f200820051b210f2011200620051b2111200641016a2106200841c4006a2108200e41bc7f6a220e0d000b2002201d3703a001200220113602b001200220073703a801200f0d030b411610d5042108200241186a411610d60420022903182107200041026a20083a000020004183223b0100200041046a2007370200201ca72202450d03200241c4006c450d0320101029200324000f0b1039000b1038000b2011200b4f0d012010201141c4006c6a220841186a2206290200211d2010200b417f6a221141c4006c6a220541c0006a280200210f200541206a290200211e200541286a290200211f200541306a2902002120200541386a29020021212005290200212220052902082107200529021021232006200541186a290200370200200829021021242008202337021020082902082123200820073702082008290200210720082022370200200841386a2021370200200841306a2020370200200841286a201f370200200841206a2205280200210b2005201e370200200841c0006a200f360200200220243703b001200220233703a801200220073703a0012002201d3703b80120024180046a41186a20022802bc0136020020024180046a41106a20022902b40137030020024180046a41086a20022902ac01370300200220022902a40137038004200241a0016a41186a220f4200370300200241a0016a41106a220e4200370300200241a0016a41086a22054200370300200242003703a00141c99fc500ad428080808090018410012206290000211d200241f8006a41086a2208200641086a2900003703002002201d3703782006102920052008290300370300200220022903783703a00141a88dc700ad4280808080b0018410012206290000211d2008200641086a2900003703002002201d3703782006102920042002290378370000200441086a2008290300370000200241d8006a41086a2005290300370300200241d8006a41106a200e290300370300200241d8006a41186a200f290300370300200220022903a001370358200241a0016a2010201110a605200920023502a80142208620022802a0012208ad841003024020022802a401450d00200810290b2007a7210e0240201ca72208450d00200841c4006c450d00201010290b200241f8006a200e10a705200241a0016a20022802782208200228028001220510a805024020022802a001220f450d002005ad4220862008ad8410040b200228027c210502400240200f0d002005450d01200810290c010b200241b8016a2903002107200241b0016a290300211d200241a8016a280200211920022802a401211002402005450d00200810290b02402019410574450d00201d200784500d00200241a9016a210520194105742106200241d8016a2111200f210803402002201d3703e003200220073703e803200220083602c003200241f8006a2008200241e0036a200241c0036a10ea03024020022903784201520d00200229038001211e200841186a290000211f200841106a290000211c200841086a2900002109200829000021202011200241f8006a41106a29030037030020052020370000200541086a2009370000200541106a201c370000200541186a201f370000200241003a00a801200241033a00a0012002201e3703d001200241a0016a10cb010b200841206a2108200641606a22060d000b0b200241c8016a2007370300200241c0016a201d370300200241a0016a41186a22082019360200200241b4016a2010360200200241a0016a41106a2205200f360200200241ac016a200e360200200241a0016a41086a220641013a0000200241093a00a001200241a0016a10cb01200820024180046a41186a280200360200200520024180046a41106a290300370300200620024180046a41086a29030037030020022002290380043703a0012002200b3602bc0120014180ce186a200241a0016a41004180840710a4050b200041043a00000b200324000f0b2011200b103e000be50301027f230041206b22012400412621020240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041ff01710e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627000b200141146a41013602002001420137020420014198e3ca003602002001410436021c200141bcd4c8003602182001200141186a36021020014180a6cc001040000b410021020c250b410121020c240b410221020c230b410321020c220b410421020c210b410521020c200b410621020c1f0b410721020c1e0b410821020c1d0b410921020c1c0b410a21020c1b0b410b21020c1a0b410c21020c190b410d21020c180b410e21020c170b410f21020c160b411021020c150b411121020c140b411221020c130b411321020c120b411421020c110b411521020c100b411621020c0f0b411721020c0e0b411821020c0d0b411921020c0c0b411a21020c0b0b411b21020c0a0b411c21020c090b411d21020c080b411e21020c070b411f21020c060b412021020c050b412121020c040b412221020c030b412321020c020b412421020c010b412521020b200141206a240020020bf00501037f230041206b22022400419b9cc5002103410f21040240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff017122010e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627000b200241146a41013602002002420137020420024198e3ca003602002002410436021c200241bcd4c8003602182002200241186a36021020024180a6cc001040000b41c19fc5002103410821040c250b41ced6c80021030c240b41b99fc5002103410821040c230b41b19fc5002103410821040c220b41a29fc50021030c210b41ddd6c8002103411121040c200b418f9fc5002103411321040c1f0b41fe9ec5002103411121040c1e0b41f39ec5002103410b21040c1d0b41e99ec5002103200121040c1c0b41dc9ec5002103410d21040c1b0b41d09ec5002103200121040c1a0b41c69ec5002103410a21040c190b41ba9ec5002103410c21040c180b41a99ec5002103411121040c170b419e9ec5002103410b21040c160b419dd6c8002103410821040c150b41969ec5002103410821040c140b41879ec50021030c130b41f69dc5002103411121040c120b41e79dc50021030c110b41dc9dc5002103410b21040c100b41d39dc5002103410921040c0f0b41c99dc5002103410a21040c0e0b41c29dc5002103410721040c0d0b41b99dc5002103410921040c0c0b41b09dc5002103410921040c0b0b41a89dc5002103410821040c0a0b419c9dc5002103410c21040c090b418b9dc5002103411121040c080b41839dc5002103410821040c070b41fa9cc5002103410921040c060b41e99cc5002103411121040c050b41dc9cc5002103410d21040c040b41d29cc5002103410a21040c030b41c19cc5002103411121040c020b41b99cc5002103410821040c010b41aa9cc50021030b2000200436020420002003360200200241206a24000bf21201277f230041f0046b220324000240024002402001280200220420012802044f0d00200341d7036a210520034184026a21062003418c046a2107200341d0036a4101722108200341b1046a220941036a210a03402001200441016a360200200341c0026a200410dd04200341d0036a20032802c002220b20032802c80210d305200341b8046a41086a220c200841086a290000370300200341b8046a41106a220d200841106a290000370300200341b8046a41186a220e200841186a290000370300200341b8046a41206a220f200841206a290000370300200341b8046a41286a2210200841286a290000370300200341b8046a412f6a22112008412f6a290000370000200341e8026a41086a2212200741086a290000370300200341e8026a41106a2213200741106a290000370300200341e8026a41186a2214200741186a290000370300200341e8026a41206a2215200741206a280000360200200320082900003703b804200320072900003703e802200328028804211620032d00d0032117200320092800003602d8012003200a2800003600db010240201741024622180d0020032d00b004211920034180026a412f6a201129000037000020034180026a41286a201029030037030020034180026a41206a200f29030037030020034180026a41186a200e29030037030020034180026a41106a200d29030037030020034180026a41086a200c290300370300200341a8036a41086a2012290300370300200341a8036a41106a2013290300370300200341a8036a41186a2014290300370300200341a8036a41206a2015280200360200200320032903b80437038002200320032903e8023703a803200320032800db013600a303200320032802d8013602a0032016211a0b024020032802c402450d00200b10290b200c20034180026a41086a221b290300370300200d20034180026a41106a221c290300370300200e20034180026a41186a221d290300370300200f20034180026a41206a221e290300370300201020034180026a41286a221f290300370300201120034180026a412f6a290000370000200341d8016a41086a2220200341a8036a41086a220b290300370300200341d8016a41106a2221200341a8036a41106a2216290300370300200341d8016a41186a2222200341a8036a41186a2223290300370300200341d8016a41206a2224200341a8036a41206a222528020036020020032003290380023703b804200320032903a8033703d801200320032800a3033600d301200320032802a0033602d001200341d0036a41086a2226200c290300370300200341d0036a41106a2227200d290300370300200341d0036a41186a220d200e290300370300200341d0036a41206a220e200f290300370300200341d0036a41286a220f2010290300370300200341d0036a412f6a2011290000370000200320032903b8043703d003200b2020290300370300201620212903003703002023202229030037030020252024280200360200200320032903d8013703a803200320032800d3013600a303200320032802d0013602a00302400240024020180d002017410171450d010b4103210c0c010b20062005290000370000200641286a200541286a290000370000200641206a200541206a290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000200341c0026a41086a2210200b290300370300200341c0026a41106a22112016290300370300200341c0026a41186a22172023290300370300200341c0026a41206a220b2025280200360200200320032903a8033703c0022012201b2902003703002013201c2902003703002014201d2902003703002015201e290200370300200341e8026a41286a2216201f290200370300200341e8026a41306a222320034180026a41306a280200360200200320032800a3033600bb02200320032802a0033602b80220032003290280023703e8024103210c201941ff01714103460d002026201229030037030020272013290300370300200d2014290300370300200e2015290300370300200f2016290300370300200341d0036a41306a22162023280200360200201b2010290300370300201c2011290300370300201d2017290300370300201e200b280200360200200320032903e8023703d003200320032903c00237038002200320032800bb023600ab03200320032802b8023602a8034103210c201a2002280200280200470d0020034198016a41306a201628020036020020034198016a41286a200f29030037030020034198016a41206a200e29030037030020034198016a41186a200d29030037030020034198016a41106a202729030037030020034198016a41086a2026290300370300200341f0006a41086a201b290300370300200341f0006a41106a201c290300370300200341f0006a41186a201d290300370300200341f0006a41206a201e280200360200200320032903d003370398012003200329038002370370200320032800ab0336006b200320032802a80336026820042128201a21292019210c0b200c41ff01714103470d02200128020022042001280204490d000b0b200041033a00600c010b200341306a41306a220820034198016a41306a280200360200200341306a41286a220720034198016a41286a290300370300200341306a41206a220d20034198016a41206a290300370300200341306a41186a220e20034198016a41186a290300370300200341306a41106a220f20034198016a41106a290300370300200341306a41086a221020034198016a41086a290300370300200341086a41086a2211200341f0006a41086a290300370300200341086a41106a2201200341f0006a41106a290300370300200341086a41186a2204200341f0006a41186a290300370300200341086a41206a2205200341f0006a41206a2802003602002003200329039801370330200320032903703703082003200328006b3600032003200328026836020020002028360200200020032903303702042000410c6a2010290300370200200041146a200f2903003702002000411c6a200e290300370200200041246a200d2903003702002000412c6a2007290300370200200041346a2008280200360200200020293602382000200329030837023c200041c4006a2011290300370200200041cc006a2001290300370200200041d4006a2004290300370200200041dc006a20052802003602002000200c3a0060200041e4006a2003280003360000200020032802003600610b200341f0046a24000b9f0303027f017e027f230041206b2202240041c99fc500ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102941c08ec700ad4280808080900184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bd70b06057f017e057f017e027f037e230041a0016b220324002003200236021420032001360210200341186a2002ad4220862001ad841007108b020240024002400240200328021822010d00200041023a00000c010b200328021c21042003200341206a280200220236024c20032001360248024002402002450d0020012d0000210520032002417f6a220636024c2003200141016a360248200541014b0d000240024002400240024020050e020001000b20064104490d04200341c4006a41026a200341d8006a41026a2d00003a0000200341286a41086a200341f8006a41086a290300370300200341286a41106a200341f8006a41106a290300370300200341286a41186a200341f8006a41186a280200360200200320032f00583b0144200320032903783703282001280001210520032002417b6a36024c2003200141056a360248410021020c010b200341086a200341c8006a10c80120032802080d03200328024c2207200328020c2205490d032005417f4c0d060240024020050d0042002108410121090c010b2005102d2209450d08200920032802482202200510e4071a2003200720056b220736024c2003200220056a3602482005ad21080b2009450d0341002102200341003a0098012005ad4220862008842208422088a7210a2008a7210b417f21050240024002400240034020072002460d01200341f8006a20026a2003280248220c2d00003a00002003200720056a36024c2003200c41016a3602482003200241016a22063a0098012005417f6a21052006210220064120470d000b200341d2006a20032d007a3a0000200341e0006a20034187016a290000370300200341d8006a41106a2003418f016a290000370300200341f0006a20034197016a2d00003a0000200320032f01783b01502003200329007f370358200720066b22024110490d01200328007b21052003200c41116a3602482003200241706a220d36024c200d4104490d05200c41096a290000210e200c29000121082003200c41156a36024820032002416c6a36024c2007416c6a2006460d05200c28001121062003200c41166a36024820032002416b6a220f36024c200c2d0015221041014b0d054100210d20100e020302030b200241ff0171450d00200341003a0098010b200b0d040c050b200f4104490d022003200c411a6a3602482003200241676a36024c200c28001621074101210d0b200341c4006a41026a200341d0006a41026a2d00003a0000200341286a41086a200341d8006a41086a290300370300200341286a41106a200341d8006a41106a290300370300200341286a41186a200341d8006a41186a2d00003a0000200341c3006a200341d5006a41026a2d00003a0000200320032f01503b014420032003290358370328200320032f00553b0041410121020b200341d8006a41026a200341c4006a41026a2d0000220c3a0000200341f8006a41086a200341286a41086a2903002211370300200341f8006a41106a200341286a41106a2903002212370300200341f8006a41186a200341286a41186a2802002210360200200320032f0144220f3b0158200320032903282213370378200041036a200c3a00002000200f3b0001200041046a2005360000200041c8006a200e370000200041c0006a2008370000200041086a2013370000200041106a2011370000200041186a2012370000200041206a2010360000200041386a2007360000200041346a200d360000200041306a20063600002000412c6a200a360000200041286a200b360000200041246a20093600000c030b200b450d010b200910290b20034100360230200342013703282003410d36025c2003200341106a3602582003200341286a3602502003418c016a41013602002003420137027c200341f4eaca003602782003200341d8006a36028801200341d0006a41a8a3c800200341f8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b410221020b200020023a00002004450d00200110290b200341a0016a24000f0b1038000b1039000b981303077f057e057f230041d0086b22032400200341f8006a200110d804200341f8056a20032802782204200328028001220510d90441022106024020032d00f805220741024622080d002005ad4220862004ad8410040b200341a8036a411f6a220520034198066a280000360000200341a8036a41186a220920034191066a290000370300200341a8036a41106a20034189066a290000220a370300200341a8036a41086a20034181066a290000220b370300200320032900f905220c3703a803200341c0066a290300210d200341b8066a290300210e2003419c066a280200210f200341a0066a2802002110200341a4066a2802002111200341f8056a411f6a22122005280000360000200341f8056a41186a22052009290300370300200341f8056a41106a2209200a370300200341f8056a41086a2213200b3703002003200c3703f805024020080d00200341306a411f6a2012280000360000200341306a41186a2005290300370300200341306a41106a2009290300370300200341306a41086a2013290300370300200320032903f805370330200721060b0240200328027c450d00200410290b0240024002400240200641037122064103460d0020060e03010001010b200341d8006a41186a200341306a41186a290300370300200341d8006a41106a200341306a41106a290300370300200341d8006a41086a200341306a41086a29030037030020032003290330370358200320113602a4032003200f3602a003200341f8006a200341a0036a10e40302402003280278411c460d00200341a8036a200341f8006a41a80210e4071a2003200e3703d0052003200d3703d8050240200e200d84500d002003200341d8006a3602a408200341a8086a200341d8006a200341d0056a200341a4086a10ea0320032903a8084201520d0020032903b008210a200341b0066a200341a8086a41106a290300370300200341a8066a200a370300200341f8056a41086a41003a000020034181066a200329035837000020034189066a200341d8006a41086a29030037000020034191066a200341d8006a41106a29030037000020034199066a200341f0006a290300370000200341033a00f805200341f8056a10cb010b200341f8056a41086a2206410c3a0000200341a1066a2003290358370000200341f8056a41096a2207200129000037000020034189066a200141086a29000037000020034191066a200141106a29000037000020034199066a200141186a290000370000200341a9066a200341d8006a41086a290300370000200341b1066a200341d8006a41106a290300370000200341b9066a200341d8006a41186a290300370000200341093a00f805200341d0066a200d370300200341c8066a200e370300200341f8056a10cb01200341f8056a200341a8036a41a80210e4071a200341003b01a808200341d0056a200341f8056a200341a8086a10c50120032903d005210a200341f8056a410c6a20023602002007200a503a0000200641073a0000200341093a00f805200341f8056a10cb01200041043a000020100d020c030b2003200e3703a8082003200d3703b0080240024002400240200e200d844200520d00200342003703d805200342003703d0050c010b2003200341d8006a3602d005200341a8036a200341d8006a200341a8086a200341d0056a10a905200341c8036a290300210a20032903c003210b024020032903a8034201520d0020032903b003210c200341b0066a200341a8036a41106a290300370300200341a8066a200c370300200341f8056a41086a41003a000020034181066a200329035837000020034189066a200341d8006a41086a29030037000020034191066a200341d8006a41106a29030037000020034199066a200341f0006a290300370000200341033a00f805200341f8056a10cb010b2003200b3703d0052003200a3703d805200b200a844200520d010b200341f8056a41186a22054200370300200341f8056a41106a22044200370300200341f8056a41086a22074200370300200342003703f80541dcbec500ad4280808080800184220a10012208290000210b200341a8086a41086a2206200841086a2900003703002003200b3703a8082008102920072006290300370300200320032903a8083703f805419fe3c200ad4280808080d00184220b10012208290000210c2006200841086a2900003703002003200c3703a80820081029200420032903a808220c370300200341a8036a41086a22092007290300370300200341a8036a41106a2212200c370300200341a8036a41186a22132006290300370300200320032903f8053703a803200341106a200341a8036a412010e301200341106a41106a290300210c2003290318210d20032802102108200542003703002004420037030020074200370300200342003703f805200a10012205290000210a2006200541086a2900003703002003200a3703a8082005102920072006290300370300200320032903a8083703f805200b10012205290000210a2006200541086a2900003703002003200a3703a80820051029200420032903a808220a370300200920072903003703002012200a37030020132006290300370300200320032903f8053703a8032003200c420020081b370380062003200d420020081b3703f805200341a8036aad4280808080800484200341f8056aad428080808080028410030c010b200342f0f2bda1a7ee9cb9f9003703a803200341f8056a200341a8036a108202200341f8056a200b200a10800220034190066a200a37030020034188066a200b37030020034180066a41063a00002003410e3a00f805200341f8056a10cb010b200341f8056a41086a410d3a0000200341a4066a20023602002001290000210a200341093a00f805200341f8056a41096a200a37000020034189066a200141086a29000037000020034191066a200141106a29000037000020034199066a200141186a290000370000200341f8056a10cb01411510d5042101200341086a411510d6042003290308210a200041026a20013a000020004183223b0100200041046a200a37020020100d010c020b200341f8056a41086a410e3a0000200341a4066a20023602002001290000210a200341093a00f805200341f8056a41096a200a37000020034189066a200141086a29000037000020034191066a200141106a29000037000020034199066a200141186a290000370000200341f8056a10cb01411310d5042101200341286a411310d6042003290328210a200041026a20013a000020004183223b0100200041046a200a3702000240200741037122014103460d0020010e03020002020b2010450d010b200f10290b200341d0086a24000b880202037f017e230041106b220224000240024020002d00004101460d00200241003a000020012002410110722002200041046a28020036020020012002410410720c010b200241013a00002001200241011072200041246a28020021032000412c6a28020022042001107120012003200410722001200041016a41201072200041c0006a29030021052002200041c8006a2903003703082002200537030020012002411010722002200041306a28020036020020012002410410720240200041346a2802004101460d00200241003a000020012002410110720c010b200241013a000020012002410110722002200041386a28020036020020012002410410720b200241106a24000ba20601067f230041f0026b22082400200841186a200110c601200841106a2008280218220920082802204180a6cc004100410010c7012008280210210a0240200828021c450d00200910290b024002400240024002400240200a4101460d000240024020034101460d004100210b0c010b2004410047200541014b71210b2005417f6a210c0b2001280208220a417f4c0d012001280200210d02400240200a0d0041002109410121050c010b200a10272205450d03200a21090b024002402009200a490d00200921030c010b20094101742203200a2003200a4b1b22034100480d04024020090d002003102722050d010c070b20092003460d00200520092003102b2205450d060b2005200d200a10e4072109200841186a200741a80210e4071a200841d4026a200c360200200841d0026a2004360200200841c8026a200a360200200841c4026a2003360200200820063a00d8022008200b3602cc02200820093602c0022002200841186a10ca01200841186a200210c001200828022021092008280218210a41002107200841e4026a41003a0000200841003602e002200841086a200a2009200841e0026a4105410010c7010240024020082802080d000c010b2008200828020c2207410520074105491b3602ec022008200841e0026a3602e8022008200841e8026a10c8012008280204417f6a210920082802004521070b0240200828021c450d00200a10290b20082009410020071b220a3602e402200820023602e002200841186a200110c60120082802182107200820082802203602ec02200820073602e802200841e0026a200841e8026a10fb010240200828021c450d00200710290b200841246a200a360200200841186a41086a20023602002008410036021c200841013a0018200841186a10cb01200041086a200a3602002000200236020420004100360200200141046a280200450d04200128020010290c040b200041003a000620004183043b0104200041013602002000410c6a4110360200200041086a41bbb8c800360200200710cc01200141046a280200450d03200128020010290c030b1038000b1039000b1032000b200841f0026a24000f0b1030000bfc0403027f017e057f230041d0006b2202240041c99fc500ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941db9fc500ad4280808080800284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000ba60203027f017e017f230041106b22022400200241003602082002420137030002400240024020002d00004101460d00410110272203450d02200341003a0000200220033602002002428180808010370204200041086a200210c606200235020842208621042002280204452103200228020021000c010b410110272203450d01200341013a000020022003360200200242818080801037020420002d00012105200341014102102b2203450d01200320053a000120022003360200200242828080802037020420002802042105200341024106102b2200450d01200020053600022002200036020020024286808080e000370204410021034280808080e00021040b200129020020042000ad841003024020030d00200010290b200241106a24000f0b1030000b8ce9010c017f017e047f017e017f017e037f017e287f047e067f037e230041f00d6b2201240010bf01024002400240024002400240024002400240024020004101470d0042002102200141b8046a21030c010b42002102200141d8046a41186a4200370300200141d8046a41106a22044200370300200141d8046a41086a22054200370300200142003703d80441c8bec500ad4280808080c000841001220629000021072005200641086a290000370300200120073703d804200610294194f1c200ad4280808080b00184100122062900002107200141c8086a41086a2208200641086a290000370300200120073703c80820061029200420012903c8082207370300200141b8046a41086a2005290300370300200141b8046a41106a2007370300200141b8046a41186a2008290300370300200120012903d8043703b804200141a8046a200141b8046a10b501200141b8046a2103420020012903b004420020012802a8041b220710b4017d220920092007561b42e012540d00200141b00c6a41186a220a4200370300200141b00c6a41106a220b4200370300200141b00c6a41086a22054200370300200142003703b00c41b1dcc900ad4280808080f0008422071001220c290000210920014188076a41086a2206200c41086a2900003703002001200937038807200c10292005200629030037030020012001290388073703b00c418886ca00ad4280808080c0018422091001220c290000210d2006200c41086a2900003703002001200d37038807200c1029200b200129038807220d370300200141900b6a41086a220e2005290300370300200141900b6a41106a220f200d370300200141900b6a41186a22102006290300370300200120012903b00c3703900b200141a0046a200141900b6a412010fc0120012802a404211120012802a0042112200a4200370300200b420037030020054200370300200142003703b00c20071001220c290000210d2006200c41086a2900003703002001200d37038807200c10292005200629030037030020012001290388073703b00c41a886ca00ad4280808080d001841001220c290000210d2006200c41086a2900003703002001200d37038807200c1029200b200129038807220d370300200e2005290300370300200f200d37030020102006290300370300200120012903b00c3703900b200141900b6a10b2012113200a4200370300200b420037030020054200370300200142003703b00c20071001220c290000210d2005200c41086a2900003703002001200d3703b00c200c102920091001220c29000021092008200c41086a290000370300200120093703c808200c1029200b20012903c80822093703002006200529030037030020014188076a41106a220c200937030020014188076a41186a220e2008290300370300200120012903b00c3703880720014198046a20014188076a412010fc01200128029c0421142001280298042115200a4200370300200b420037030020054200370300200142003703b00c41c6b7c700ad42808080808001841001220f29000021092005200f41086a290000370300200120093703b00c200f102941dcb7c700ad4280808080c000841001220f29000021092008200f41086a290000370300200120093703c808200f1029200b20012903c808220937030020062005290300370300200c2009370300200e2008290300370300200120012903b00c37038807200141b00c6a20014188076a109e0320012802b00c211620012902b40c2102200a4200370300200b420037030020054200370300200142003703b00c20071001220a29000021072005200a41086a290000370300200120073703b00c200a102941b8dcc900ad4280808080a001841001220a29000021072008200a41086a290000370300200120073703c808200a1029200b20012903c808220737030020062005290300370300200c2007370300200e2008290300370300200120012903b00c37038807200141b00c6a20014188076a108d0220012802b00c2205410120051b211720012902b40c420020051b2207a721180240024002402007422088a72205450d002017200541057422196a211a200141dc066a211b200141b00c6a41206a210f20014190066a410472210c200141e8056a41047221064100210a410221050340200141b8056a41186a2017200a6a220841186a220e290000370300200141b8056a41106a200841106a2210290000370300200141b8056a41086a200841086a221c290000370300200120082900003703b80520062008290000370000200641086a201c290000370000200641106a2010290000370000200641186a200e29000037000020012005417e6a22103602e8054100210e0240201020061093060d0020014190066a41206a200141e8056a41206a28020036020020014190066a41186a200141e8056a41186a29030037030020014190066a41106a200141e8056a41106a29030037030020014190066a41086a200141e8056a41086a290300370300200120012903e80537039006200141b8046a41186a220e200c41186a221c290200370300200141b8046a41106a221d200c41106a221e290200370300200141b8046a41086a221f200c41086a22202902003703002001200c2902003703b804200141b00c6a41186a2210201c290000370300200141b00c6a41106a221c201e290000370300200141b00c6a41086a221e20202900003703002001200c2900003703b00c200141b8066a200141b00c6a10a002200141d8046a41186a2220200e290300370300200141d8046a41106a2221201d290300370300200141d8046a41086a221d201f290300370300200120012903b8043703d80420012802d806220e450d00200f20012903b806370300200f41186a200141b8066a41186a290300370300200f41106a200141b8066a41106a290300370300200f41086a200141b8066a41086a29030037030020102020290300370300201c2021290300370300201e201d290300370300200141d8056a41086a221d201b41086a280200360200200120012903d8043703b00c2001201b2902003703d805200141900b6a41386a221f200141b00c6a41386a290300370300200141900b6a41306a2220200141b00c6a41306a290300370300200141900b6a41286a2221200141b00c6a41286a290300370300200141900b6a41206a2222200f290300370300200141900b6a41186a22232010290300370300200141900b6a41106a2210201c290300370300200141900b6a41086a221c201e290300370300200120012903b00c3703900b20014188076a41386a201f29030037030020014188076a41306a202029030037030020014188076a41286a202129030037030020014188076a41206a202229030037030020014188076a41186a202329030037030020014188076a41106a201029030037030020014188076a41086a201c290300370300200120012903900b37038807200141f8066a41086a201d280200360200200120012903d8053703f8060b200141c8086a41086a20014188076a41086a290300370300200141c8086a41106a20014188076a41106a290300370300200141c8086a41186a20014188076a41186a290300370300200141c8086a41206a20014188076a41206a290300370300200141c8086a41286a20014188076a41286a290300370300200141c8086a41306a20014188076a41306a290300370300200141c8086a41386a20014188076a41386a290300370300200141e8066a41086a200141f8066a41086a28020036020020012001290388073703c808200120012903f8063703e806200e0d02200541016a21052019200a41206a220a470d000b0b2001410036028005200142083703f804201841ffffff3f71450d01201710290c010b200141f0096a41386a2206200141c8086a41386a290300370300200141f0096a41306a220c200141c8086a41306a290300370300200141f0096a41286a2210200141c8086a41286a290300370300200141f0096a41206a221c200141c8086a41206a290300370300200141f0096a41186a221e200141c8086a41186a290300370300200141f0096a41106a221d200141c8086a41106a290300370300200141f0096a41086a221f200141c8086a41086a290300370300200141a8056a41086a2220200141e8066a41086a280200360200200120012903c8083703f009200120012903e8063703a80520014198056a41086a22212020280200360200200120012903a80537039805200141b00c6a41086a2220201f290300370300200141b00c6a41106a221f201d290300370300200141b00c6a41186a221d201e290300370300200141b00c6a41206a221b201c290300370300200141b00c6a41286a221c2010290300370300200141b00c6a41306a2210200c290300370300200141b00c6a41386a220c2006290300370300200120012903f0093703b00c20014188076a41086a2206202128020036020020012001290398053703880741d0001027221e450d02201e20012903b00c370300201e200e360240201e200129038807370244201e41386a200c290300370300201e41306a2010290300370300201e41286a201c290300370300201e41206a201b290300370300201e41186a201d290300370300201e41106a201f290300370300201e41086a2020290300370300201e41cc006a2006280200360200200142818080801037028c052001201e360288050240201941606a200a460d00200841206a21062019200a6b41606a211c200141dc066a211b20014190066a410472210c200141e8056a41047221080340200141b8056a41186a200641186a220a290000370300200141b8056a41106a200641106a220e290000370300200141b8056a41086a200641086a2210290000370300200120062900003703b80520062900002107200841186a200a29000037000020082007370000200841086a2010290000370000200841106a200e29000037000020012005417f6a220e3602e8054100210a0240200e20081093060d0020014190066a41206a200141e8056a41206a28020036020020014190066a41186a200141e8056a41186a29030037030020014190066a41106a200141e8056a41106a29030037030020014190066a41086a200141e8056a41086a290300370300200120012903e80537039006200141b8046a41186a220a200c41186a2210290200370300200141b8046a41106a221d200c41106a2219290200370300200141b8046a41086a221f200c41086a22202902003703002001200c2902003703b804200141b00c6a41186a220e2010290000370300200141b00c6a41106a22102019290000370300200141b00c6a41086a221920202900003703002001200c2900003703b00c200141b8066a200141b00c6a10a002200141d8046a41186a2220200a290300370300200141d8046a41106a2221201d290300370300200141d8046a41086a221d201f290300370300200120012903b8043703d80420012802d806220a450d00200f20012903b806370300200f41186a200141b8066a41186a290300370300200f41106a200141b8066a41106a290300370300200f41086a200141b8066a41086a290300370300200e2020290300370300201020212903003703002019201d290300370300200141d8056a41086a221d201b41086a280200360200200120012903d8043703b00c2001201b2902003703d805200141900b6a41386a221f200141b00c6a41386a290300370300200141900b6a41306a2220200141b00c6a41306a290300370300200141900b6a41286a2221200141b00c6a41286a290300370300200141900b6a41206a2222200141b00c6a41206a290300370300200141900b6a41186a2223200e290300370300200141900b6a41106a220e2010290300370300200141900b6a41086a22102019290300370300200120012903b00c3703900b20014188076a41386a201f29030037030020014188076a41306a202029030037030020014188076a41286a202129030037030020014188076a41206a202229030037030020014188076a41186a202329030037030020014188076a41106a200e29030037030020014188076a41086a2010290300370300200120012903900b37038807200141f8066a41086a201d280200360200200120012903d8053703f8060b200141c8086a41086a20014188076a41086a290300370300200141c8086a41106a20014188076a41106a290300370300200141c8086a41186a20014188076a41186a290300370300200141c8086a41206a20014188076a41206a290300370300200141c8086a41286a20014188076a41286a290300370300200141c8086a41306a20014188076a41306a290300370300200141c8086a41386a20014188076a41386a290300370300200141e8066a41086a200141f8066a41086a28020036020020012001290388073703c808200120012903f8063703e8060240200a0d00200641206a2106200541016a2105201c41606a221c0d010c020b0b200141f0096a41386a2224200141c8086a41386a2220290300370300200141f0096a41306a2225200141c8086a41306a2221290300370300200141f0096a41286a2226200141c8086a41286a221b290300370300200141f0096a41206a2227200141c8086a41206a2222290300370300200141f0096a41186a2228200141c8086a41186a2223290300370300200141f0096a41106a2229200141c8086a41106a222a290300370300200141f0096a41086a222b200141c8086a41086a222c290300370300200141a8056a41086a222d200141e8066a41086a222e280200360200200120012903c8083703f009200120012903e8063703a80520014198056a41086a222f202d280200360200200120012903a80537039805200641206a2106200141dc066a213020014190066a410472210c200141e8056a41047221084101210e410121310340200141b00c6a41086a2219202b290300370300200141b00c6a41106a221d2029290300370300200141b00c6a41186a221f2028290300370300200141b00c6a41206a22322027290300370300200141b00c6a41286a22332026290300370300200141b00c6a41306a22342025290300370300200141b00c6a41386a22352024290300370300200120012903f0093703b00c20014188076a41086a221c202f28020036020020012001290398053703880702402031200e470d0020014188056a200e410110ac01200128028805211e0b201e203141d0006c6a220e20012903b00c370300201d2903002107201f29030021092032290300210d20332903002136203429030021372035290300213820192903002139200e200a360240200e41086a2039370300200e200129038807370244200e41cc006a201c280200360200200e41386a2038370300200e41306a2037370300200e41286a2036370300200e41206a200d370300200e41186a2009370300200e41106a20073703002001203141016a2231360290052006201a460d010340200141b8056a41186a200641186a220a290000370300200141b8056a41106a200641106a220e290000370300200141b8056a41086a200641086a2210290000370300200120062900003703b805200120053602e80520102900002107200e29000021092006290000210d200841186a200a290000370000200841106a2009370000200841086a20073700002008200d3700004100210a0240200520081093060d0020014190066a41206a200141e8056a41206a28020036020020014190066a41186a200141e8056a41186a29030037030020014190066a41106a200141e8056a41106a29030037030020014190066a41086a200141e8056a41086a290300370300200120012903e80537039006200141b8046a41186a220a200c41186a220e290200370300200141b8046a41106a2210200c41106a223a290200370300200141b8046a41086a223b200c41086a223c2902003703002001200c2902003703b804201f200e290000370300201d203a2900003703002019203c2900003703002001200c2900003703b00c200141b8066a200141b00c6a10a002200141d8046a41186a220e200a290300370300200141d8046a41106a223a2010290300370300200141d8046a41086a2210203b290300370300200120012903b8043703d80420012802d806220a450d00200f20012903b806370300200f41186a200141b8066a41186a290300370300200f41106a200141b8066a41106a290300370300200f41086a200141b8066a41086a290300370300201f200e290300370300201d203a29030037030020192010290300370300200141d8056a41086a220e203041086a280200360200200120012903d8043703b00c200120302902003703d805200141900b6a41386a22102035290300370300200141900b6a41306a223a2034290300370300200141900b6a41286a223b2033290300370300200141900b6a41206a223c2032290300370300200141900b6a41186a223d201f290300370300200141900b6a41106a223e201d290300370300200141900b6a41086a223f2019290300370300200120012903b00c3703900b20014188076a41386a201029030037030020014188076a41306a203a29030037030020014188076a41286a203b29030037030020014188076a41206a203c29030037030020014188076a41186a203d29030037030020014188076a41106a203e290300370300201c203f290300370300200120012903900b37038807200141f8066a41086a200e280200360200200120012903d8053703f8060b202c201c290300370300202a20014188076a41106a290300370300202320014188076a41186a290300370300202220014188076a41206a290300370300201b20014188076a41286a290300370300202120014188076a41306a290300370300202020014188076a41386a290300370300202e200141f8066a41086a28020036020020012001290388073703c808200120012903f8063703e8060240200a0d00200541016a2105201a200641206a2206470d010c030b0b20242020290300370300202520212903003703002026201b29030037030020272022290300370300202820232903003703002029202a290300370300202b202c290300370300202d202e280200360200200120012903c8083703f009200120012903e8063703a805202f202d280200360200200120012903a80537039805200641206a2106200541016a2105200128028c05210e0c000b0b0240201841ffffff3f71450d00201710290b200141f8046a41086a20014188056a41086a28020036020020012001290388053703f8040b200141b00c6a41186a220a4200370300200141b00c6a41106a220c4200370300200141b00c6a41086a22054200370300200142003703b00c41b1dcc900ad4280808080f000841001220629000021072005200641086a290000370300200120073703b00c20061029418886ca00ad4280808080c00184100122062900002107200141c8086a41086a2208200641086a290000370300200120073703c80820061029200b20012903c808370000200b41086a200829030037000020014188076a41086a2206200529030037030020014188076a41106a200c29030037030020014188076a41186a200a290300370300200120012903b00c3703880720014190046a20014188076a412010fc01200128029404210a200128029004210c41c6b7c700ad42808080808001841001220529000021072006200541086a29000037030020012007370388072005102941c8f7c700ad4280808080a002841001220529000021072008200541086a290000370300200120073703c80820051029410021082001200a4100200c1b3602b8062001200141b8066aad22074280808080c00084100222052900003703f00920051029200141bc0c6a200141bc066a3602002001200141f0096a41086a220f3602b40c2001200141b8066a3602b80c2001200141f0096a3602b00c200141900b6a200141b00c6a107520012802980b220c41206a2206417f4c0d0220012802900b210e0240024020060d00410121050c010b200610272205450d02200621080b024002402008410f4d0d002008210a0c010b2008410174220a4110200a41104b1b220a4100480d04024020080d00200a102722050d010c0a0b2008200a460d0020052008200a102b2205450d090b2005200129038807370000200541086a20014188076a41086a29030037000002400240200a4170714110460d00200a21080c010b200a41017422084120200841204b1b22084100480d04200a2008460d002005200a2008102b2205450d090b200520012903c808370010200541186a200141c8086a41086a29030037000002400240200841606a200c490d002008210a0c010b200c415f4b0d042008410174220a2006200a20064b1b220a4100480d042008200a460d0020052008200a102b2205450d090b200541206a200e200c10e4071a024020012802940b450d00200e10290b2006ad4220862005ad8410060240200a450d00200510290b200141b00c6a41186a220a4200370300200141b00c6a41106a220c4200370300200141b00c6a41086a22054200370300200142003703b00c41b1dcc900ad4280808080f000841001220629000021092005200641086a290000370300200120093703b00c20061029418886ca00ad4280808080c00184100122062900002109200141c8086a41086a2208200641086a290000370300200120093703c80820061029200b20012903c808370000200b41086a200829030037000020014188076a41086a2206200529030037030020014188076a41106a200c29030037030020014188076a41186a200a290300370300200120012903b00c3703880720014188046a20014188076a412010fc01200128028c04210a200128028804210c41c6b7c700ad42808080808001841001220529000021092006200541086a29000037030020012009370388072005102941e0c9c700ad4280808080e001841001220529000021092008200541086a290000370300200120093703c80820051029410021082001200a4100200c1b3602b806200120074280808080c00084100222052900003703f00920051029200141bc0c6a200141bc066a3602002001200f3602b40c2001200141b8066a3602b80c2001200141f0096a3602b00c200141900b6a200141b00c6a107520012802980b220c41206a2206417f4c0d0220012802900b210e0240024020060d00410121050c010b200610272205450d02200621080b024002402008410f4d0d002008210a0c010b2008410174220a4110200a41104b1b220a4100480d04024020080d00200a10272205450d0a0c010b2008200a460d0020052008200a102b2205450d090b2005200129038807370000200541086a20014188076a41086a29030037000002400240200a4170714110460d00200a21080c010b200a41017422084120200841204b1b22084100480d04200a2008460d002005200a2008102b2205450d090b200520012903c808370010200541186a200141c8086a41086a29030037000002400240200841606a200c490d002008210a0c010b200c415f4b0d042008410174220a2006200a20064b1b220a4100480d042008200a460d0020052008200a102b2205450d090b200541206a200e200c10e4071a024020012802940b450d00200e10290b2006ad4220862005ad8410060240200a450d00200510290b2002420020161b21070240024002400240024002400240200128028005450d00200141b00c6a200141f8046a10f20520014193076a200141b00c6a41086a280200360000200120012903b00c37008b07200141bc0c6a2001418f076a290000370000200141023a00b40c200141083a00b00c20012001290088073700b50c200141b00c6a10cb01200141a0066a200141f8046a41086a28020036020020012007422088a7223a3602940620012014410020151b220c36029006200120012903f80437039806200141e8066a20014190066a41086a10f20520012802e806212c20012802ec06212e20012802f0062108410410272205450d082005200c36000020014284808080c0003702cc08200120053602c808200141b00c6a41d5cdc20010e90220014188076a20012802b00c220620012802b80c108b03200129028c07420020012802880722051b21092005410120051b210a024020012802b40c450d00200610290b200120094220883e028c072001200a36028807200141b00c6a20014188076a10c905200141b00c6a41086a280200210620012802b40c210e20012802b00c2105200141b00c6a41d5cdc200200141c8086a10ea0220014188076a20012802b00c221020012802b80c10ce012006410020051b210f200e410020051b210e200129028c07420020012802880722061b210d2005410420051b21052006410120061b2122024020012802b40c450d00201010290b200141900a6a200f3602002001418c0a6a200e360200200141800a6a200d370300200141f0096a41086a200141c8086a41086a280200360200200120012903c8083703f009200120053602880a200120223602fc0902402009a7450d00200a10290b2008450d01200d422088a7211c200141880a6a211a200141f0096a410c6a212a202c200841d0006c6a211e200141b00c6a41d0006a211b200141b00c6a410c6a2119200141c8086a41c4006a211d41002123202c210e0340200141b00c6a41386a2206200e220541386a290300370300200141b00c6a41306a2208200541306a290300370300200141b00c6a41286a220a200541286a290300370300200141b00c6a41206a220f200541206a290300370300200141b00c6a41186a2210200541186a290300370300200141b00c6a41106a2217200541106a290300370300200141b00c6a41086a221f200541086a290300370300200141d8056a41086a2220200541cc006a280200360200200120052903003703b00c2001200541c4006a2902003703d805200541d0006a210e200541c0006a2802002205450d03200141900b6a41386a22212006290300370300200141900b6a41306a22062008290300370300200141900b6a41286a2208200a290300370300200141900b6a41206a220a200f290300370300200141900b6a41186a220f2010290300370300200141900b6a41106a22102017290300370300200141900b6a41086a2217201f290300370300200141a8056a41086a221f2020280200360200200120012903b00c3703900b200120012903d8053703a805200141c8086a41386a2021290300370300200141c8086a41306a2006290300370300200141c8086a41286a2008290300370300200141c8086a41206a200a290300370300200141c8086a41186a200f290300370300200141c8086a41106a2010290300370300200141c8086a41086a2017290300370300200120012903900b3703c8082001200536028809201d20012903a805370200201d41086a201f280200360200410410272205450d092005200c360000201941002900d5cd42370000201941086a41002900ddcd4237000020014284808080c0003702b40c200120053602b00c2001200141c8086a3602cc0c200141b8066a200141b00c6a10ca0520051029200141b00c6a200141b8066a10d50220014180046a20012802b00c220620012802b80c4180a6cc004100410010c7012001280280042105024020012802b40c450d00200610290b024002400240024020054101460d0020014188076a200141c8086a41d00010e4071a200141003602f005200142013703e805200141e8056a41004100109e01200141b8056a41086a221720012802f005360200200120012903e8053703b805200141b00c6a20014188076a41d00010e4071a201b41086a2017280200360200201b20012903b80537020020014188076a200141b8066a10d502200128028807210520012001280290073602ec05200120053602e805200141b00c6a200141e8056a10e4020240200128028c07450d00200510290b024020012802f40c2205450d00200541306c450d0020012802f00c10290b024020012802840d41ffffff3f71450d0020012802800d10290b200141b8056a41186a221f200141b8066a41186a290300370300200141b8056a41106a2220200141b8066a41106a2903003703002017200141b8066a41086a290300370300200120012903b8063703b80520012802880a210f41002105024020012802900a221041014b0d00024020100e020003000b200141b8046a41186a201f290300370300200141b8046a41106a2020290300370300200141b8046a41086a2017290300370300200120012903b8053703b804410021050c030b20102106034020052006410176220820056a220a200f200a41246c6a280200200c4b1b2105200620086b220641014b0d000c020b0b200128028c092205450d02200541306c450d0220012802880910290c020b0240200f200541246c6a2802002206200c460d0020052006200c496a21050b200141b8046a41186a201f290300370300200141b8046a41106a2020290300370300200141b8046a41086a2017290300370300200120012903b8053703b804201020054f0d00200520101041000b02402010200128028c0a470d00201a2010410110960120012802840a211c20012802880a210f0b200f200541246c6a220641246a2006201020056b41246c10e5071a2006200c360200200620012903b8043702042006410c6a200141b8046a41086a290300370200200641146a200141b8046a41106a2903003702002006411c6a200141b8046a41186a2903003702002001201041016a3602900a200141d8046a41186a2206201f290300370300200141d8046a41106a22082020290300370300200141d8046a41086a220a2017290300370300200120012903b8053703d8040240201c20012802800a470d00202a201c4101109e0120012802840a211c0b20012802fc092222201c4105746a220520012903d804370000200541186a2006290300370000200541106a2008290300370000200541086a200a290300370000410121232001201c41016a221c3602840a0b200e201e470d000b201e210e0c020b200141013a00b40c200141083a00b00c200141b00c6a10cb0120012802fc042205450d05200541d0006c450d0520012802f80410290c050b202e450d01202e41d0006c450d01202c10290c010b0240201e200e460d000340200e220541d0006a210e0240200541c4006a2802002206450d00200641306c450d00200541c0006a28020010290b201e200e470d000b0b0240202e450d00202e41d0006c450d00202c10290b2023410171450d00200141f8066a20222022201c4105746a10ce05200141b00c6a41206a200141f0096a41206a2802002205360200200141b00c6a41186a200141f0096a41186a2903002209370300200141b00c6a41106a200141f0096a41106a290300370300200141b00c6a41086a200141f0096a41086a290300370300200120012903f0093703b00c200141c8086a2009a72208200510cf0520014188076a41d5cdc20010e902200128028807210520012001280290073602940b200120053602900b20012802c808220620012802d008200141900b6a10a1040240200128028c07450d00200510290b024020012802cc08450d00200610290b20014188076a41d5cdc200200141b00c6a10ea02200128028807210520012001280290073602cc08200120053602c80820012802bc0c2206200141c40c6a280200200141c8086a10cf010240200128028c07450d00200510290b024020012802b40c450d0020012802b00c10290b0240200141c00c6a28020041ffffff3f71450d00200610290b0240200141cc0c6a2802002205450d00200541246c450d00200810290b20012802f806220e0d010c020b200141003602f806024020012802f409450d0020012802f00910290b024020012802800a41ffffff3f71450d00202210290b200128028c0a2205450d01200541246c450d0120012802880a10290c010b20012802fc0621104100210802400240203a410a6e417f7320014180076a280200220a6a2206200a4b0d00203a4101203a41014b1b2205418094ebdc036e220820052008418094ebdc036c476a22084101200841014b1b220820054b0d0120012005200641036c220620052006491b20086ead428094ebdc037e200520086ead8042ffffffff0f834280bbb0217e428094ebdc0380a722053602b00c2001418094ebdc033602b40c200141b00c6a2005418094ebdc034b4102746a28020021080b200141003602b80c200142043703b00c200141b00c6a4100200a10980120012802b00c210f20012802b80c211c02400240200a0d0020012802b40c2106200e4100200f201c200c10ec0221080c010b200f201c4102746a2105200a2106034020052008360200200541046a21052006417f6a22060d000b20012802b40c2106200e200a200f201c200a6a200c10ec0221080b410410272205450d042005200c360000200141b80c6a4284808080c000370300200141c00c6a41002900d5cd42370300200141c80c6a41002900ddcd42370300200141d00c6a20083a0000200120053602b40c200141053a00b00c200141b00c6a10cb010240200641ffffffff0371450d00200f10290b0240200a450d00200a41e0006c2106200e41d4006a210503400240200541706a2802002208450d00200841306c450d002005416c6a28020010290b0240200528020041ffffff3f71450d002005417c6a28020010290b200541e0006a2105200641a07f6a22060d000b0b02402010450d00201041e0006c450d00200e10290b200128029806210a0240200141a0066a2802002205450d00200541d0006c2106200a41c4006a21050340024020052802002208450d00200841306c450d002005417c6a28020010290b200541d0006a2105200641b07f6a22060d000b0b2001419c066a2802002205450d02200541d0006c450d02200a10290c020b41f0a6c700411941dcaac7001033000b200128029806210a0240200141a0066a2802002205450d00200541d0006c2106200a41c4006a21050340024020052802002208450d00200841306c450d002005417c6a28020010290b200541d0006a2105200641b07f6a22060d000b0b02402001419c066a2802002205450d00200541d0006c450d00200a10290b41ce9bcc00ad4280808080c00184100841bf9bcc00ad4280808080f0018410080b0240200742ffffff3f83500d002016410120161b10290b2011410020121b210e20014188076a41186a420037030020014188076a41106a2208420037030020014188076a41086a22054200370300200142003703880741eebec500ad4280808080f000841001220629000021072005200641086a29000037030020012007370388072006102941f0f5c100ad4280808080900184100122062900002107200141c8086a41086a220a200641086a290000370300200120073703c80820061029200820012903c8082207370300200141b00c6a41086a220c2005290300370300200141b00c6a41106a220f2007370300200141b00c6a41186a2210200a29030037030020012001290388073703b00c20014188076a200141b00c6a10d001024020012903880722074202510d002001290390072109200141b00c6a2008280200221c41016a10da01200141f8036a20012802b00c220820012802b80c10fc0120012802fc03210a20012802f8032106024020012802b40c450d00200810290b20064101470d00200a200e41016a470d0020074201520d00200141b8056a41186a22174200370300200141b8056a41106a22064200370300200141b8056a41086a22084200370300200142003703b80541ccbec500ad42808080809001841001220a29000021072008200a41086a290000370300200120073703b805200a102941aafac400ad428080808030841001221e290000210720014188076a41086a220a201e41086a2900003703002001200737038807201e102920062001290388072207370300200141b00c6a41086a22192008290300370300200141b00c6a41106a221d2007370300200141b00c6a41186a221f200a290300370300200120012903b8053703b00c200141e8036a200141b00c6a10b501200141c0036a20012903f003420020012802e8031b220742e80780220d420042e807420010d507200141b00c6a201c109202200141d0036a20012802b00c222020012802b80c10e30120012903c00322022007200d4298787e7c42ff07837c2207427f200141c0036a41086a2903002007200254ad7c501b20097d2136200141d0036a41106a290300420020012802d003221e1b210720012903d8034200201e1b2102024020012802b40c450d00202010290b201742003703002006420037030020084200370300200142003703b80541dcbec500ad42808080808001841001221e29000021092008201e41086a290000370300200120093703b805201e1029419fe3c200ad4280808080d001841001221e2900002109200a201e41086a2900003703002001200937038807201e10292006200129038807370000200641086a200a29030037000020192008290300370300201d2006290300370300201f2017290300370300200120012903b8053703b00c200141a8036a200141b00c6a412010e30120014198036a20012903b003420020012802a80322061b2209200141a8036a41106a290300420020061b220d428094ebdc03420010e00720014188036a200129039803223820014198036a41086a29030022394280ec94a37c427f10d507200d200720022009562007200d562007200d511b22061b21072009200220061b210220012903880320097c21372036428086ebc7f5002036428086ebc7f500541b42058842ffffffff0f83428094ebdc037e4298ac9fd6038021404100210841d87d210602400240024002400340200141f8026a2038203920064190a4c5006a3502002209420010d5072008200220012903f802220d200920377e2209428094ebdc03802236a7417f2009428080808080c0b2cd3b541b200920364280ec94a37c7e7c4280cab5ee01566aad7c22095a2007200141f8026a41086a2903002009200d54ad7c220d5a2007200d51220a1b6a210820022009542007200d54200a1b0d01200641086a22060d000b200141e8026a2038203942e8aafa0b420010d507200141f0026a29030020012903e8022209203742e8aafa0b7e2207428094ebdc0380220da7417f2007428080808080c0b2cd3b541b2007200d4280ec94a37c7e7c4280cab5ee01566aad7c2207200954ad7c21090c010b02402008417f6a220620084d0d00200141e8016a2038203942c0f0f50b420010d507200141f0016a29030020012903e801220920374228802207a7417f203742c0f0f50b7e220d428080808080c0b2cd3b541b200d20074280ec94a37c7e7c4280cab5ee01566aad7c2207200954ad7c21090c010b200641244b0d01200141d8026a203820392006410374220a41e8a1c5006a2802002217ad2209420010d507200141b8026a200220012903d802220d200920377e2209428094ebdc03802236a7417f2009428080808080c0b2cd3b541b200920364280ec94a37c7e7c4280cab5ee01566aad7c220920022009562007200141d8026a41086a2903002009200d54ad7c220d562007200d511b22061b22362009200220061b22097d22412007200d20061b200d200720061b7d2036200954ad7d41002008410374221e41e8a1c5006a280200220820176b2217201720084b1b22084101200841014b1bad220d420010e007200141a8026a20012903b8022207200141b8026a41086a2903002209200d420010d507200141c8026a20382039200a41eca1c5006a2802002208ad2236420010d507200141f8016a20094200201e41eca1c5006a280200220a2008200a20084b22171b2008200a20171b6bad2202420010d50720014198026a200742002002420010d50720014188026a420042002007420010d507427f200141c8026a41086a29030020012903c8022209203620377e2207428094ebdc03802236a7417f2007428080808080c0b2cd3b541b200720364280ec94a37c7e7c4280cab5ee01566aad7c2207200954ad7c2209427f427f20014198026a41086a290300223620012903f8012001290388027c7c22422001290380022001290390028442005220422036547222171b2242427f20012903980220171b2236204120012903a8027d20027e200d807c220d2036542217ad7c220220172002204254200d20365a1b22171b22367c2007427f200d20171b220d7c22412007542217ad7c22022017200220095420022009511b22171b4200200920367d2007200d54ad7d22022007200d7d220d200756200220095620022009511b221e1b200a20084d20067322061b2109427f204120171b4200200d201e1b20061b21070b200141a8016a203820394280c2d72f420010d507200141d8016a20072009428094ebdc03420010e00720014198016a20012903a801220d2037420a802209a7417f20374280c2d72f7e2202428080808080c0b2cd3b541b200220094280ec94a37c7e7c4280cab5ee01566aad7c2209200141a8016a41086a2903002009200d54ad7c428094ebdc03420010e007200141c8016a20012903d801220d200141d8016a41086a29030022024280ec94a37c427f10d507200141b8016a200d20022040420010d50720014188016a200129039801220d20014198016a41086a29030022024280ec94a37c427f10d507200141f8006a200d20022040420010d507200141bc0c6a201c360200200141b00c6a41086a41003a0000200141c00c6a20012903b801220d2040200720012903c8017c7e2207428094ebdc03802202a7417f2007428080808080c0b2cd3b541b200720024280ec94a37c7e7c4280cab5ee01566aad7c2207370300200141c80c6a200141b8016a41086a2903002007200d54ad7c2202370300200141d80c6a4200200141f8006a41086a2903002001290378220d204020092001290388017c7e2209428094ebdc03802236a7417f2009428080808080c0b2cd3b541b200920364280ec94a37c7e7c4280cab5ee01566aad7c2209200d54ad7c220d20027d2009200754ad7d2236200920077d22372009562036200d562036200d511b22061b2209370300200141d00c6a4200203720061b220d370300200141043a00b00c200141b00c6a10cb0120014188076a201c10930220012802880721062001350290072136200120023703b80c200120073703b00c20364220862006ad84200141b00c6aad2202428080808080028410030240200128028c07450d00200610290b02400240200d2009844200520d0020014200370390072001420037038807200141b8046aad428080808080048421360c010b200141d8046a41186a220a4200370300200141d8046a41106a221c4200370300200141d8046a41086a22084200370300200142003703d80441dcbec500ad42808080808001842207100122172900002136200141c8086a41086a2206201741086a290000370300200120363703c8082017102920082006290300370300200120012903c8083703d804419fe3c200ad4280808080d0018422361001221729000021372006201741086a290000370300200120373703c80820171029200420012903c808370000200441086a22192006290300370000200141b8046a41086a221d2008290300370300200141b8046a41106a221f201c290300370300200141b8046a41186a2220200a290300370300200120012903d8043703b804200141e0006a200141b8046a412010e301200141e0006a41106a29030021372001290368213820012802602117200a4200370300201c420037030020084200370300200142003703d80420071001221e29000021072006201e41086a290000370300200120073703c808201e102920082006290300370300200120012903c8083703d80420361001221e29000021072006201e41086a290000370300200120073703c808201e1029200420012903c80837000020192006290300370000201d2008290300370300201f201c2903003703002020200a290300370300200120012903d8043703b8042001427f2037420020171b220720097c2038420020171b2237200d7c22382037542206ad7c22362006203620075420362007511b22061b3703b80c2001427f203820061b3703b00c200141b8046aad42808080808004842236200242808080808002841003024020060d002001200d3703880720012009370390070c030b20012037427f85220d3703880720012007427f852209370390072037200783427f520d020b200141d8046a41186a220a4200370300200141d8046a41106a221c4200370300200141d8046a41086a22084200370300200142003703d80441dcbec500ad42808080808001842207100122172900002109200141c8086a41086a2206201741086a290000370300200120093703c8082017102920082006290300370300200120012903c8083703d804419fe3c200ad4280808080d00184220910012217290000210d2006201741086a2900003703002001200d3703c80820171029200420012903c808370000200441086a22192006290300370000200141b8046a41086a221d2008290300370300200141b8046a41106a221f201c290300370300200141b8046a41186a2220200a290300370300200120012903d8043703b804200141c8006a200141b8046a412010e301200141c8006a41106a290300210d2001290350213720012802482117200a4200370300201c420037030020084200370300200142003703d80420071001221e29000021072006201e41086a290000370300200120073703c808201e102920082006290300370300200120012903c8083703d80420091001221e29000021072006201e41086a290000370300200120073703c808201e1029200420012903c80837000020192006290300370000201d2008290300370300201f201c2903003703002020200a290300370300200120012903d8043703b8042001200d420020171b3703b80c20012037420020171b3703b00c20362002428080808080028410030c020b20064125418cc3c2001036000b200142f0f2bda1a7ee9cb9f90037038807200141b00c6a20014188076a108202200141b00c6a200d2009108002200141c80c6a2009370300200141c00c6a200d370300200141b80c6a41063a00002001410e3a00b00c200141b00c6a10cb010b20104200370300200f4200370300200c4200370300200142003703b00c41b1dcc900ad4280808080f000841001220629000021072005200641086a290000370300200120073703880720061029200c200529030037030020012001290388073703b00c4182f0c900ad4280808080a001841001220629000021072005200641086a290000370300200120073703880720061029200b200129038807370000200b41086a2005290300370000200141900b6a41086a200c290300370300200141900b6a41106a200f290300370300200141900b6a41186a2010290300370300200120012903b00c3703900b200141203602ec052001200141900b6a3602e805200141b8066a200141900b6aad428080808080048422071007108b020240024020012802b806220c0d004100210a0c010b20012802bc06210f2001200141c0066a280200360294062001200c36029006200141c0006a20014190066a10c8010240024020012802400d0020012802442210200128029406220841c0016e2205200520104b1bad42c0017e2209422088a70d052009a72205417f4c0d050240024020050d004101210a0c010b20051027220a450d050b200141003602f8092001200a3602f0092001200541c0016e3602f40902402010450d00200141b00c6a41206a211e200141c8086a4101722119410021174100211c0240034041002105200141003a00e808201c41016a211c02400340200141003a00b80520082005460d01200141c8086a20056a20012802900622062d00003a00002001200641016a360290062001200541016a22063a00e8082006210520064120470d000b200141d8046a41086a2205200141c8086a41086a290300370300200141d8046a41106a221d200141c8086a41106a290300370300200141d8046a41186a221f200141c8086a41186a290300370300200120012903c8083703d8042001200820066b36029406200141c8086a20014190066a10c70320012d00c8084101460d02200141b00c6a41186a201f290300370300200141b00c6a41106a201d290300370300200141b00c6a41086a2005290300370300200120012903d8043703b00c201e201941a00110e4071a20014188076a200141b00c6a41c00110e4071a0240201720012802f409470d00200141f0096a20174101108e0120012802f009210a20012802f80921170b200a201741c0016c6a20014188076a41c00110e4071a2001201741016a22173602f809201c2010460d0320012802940621080c010b0b2001410036029406200541ff0171450d00200141003a00e8080b024020012802f4092205450d00200541c0016c450d00200a10290b0c010b20012902f4092109200a0d010b4100210a200141003602900720014201370388072001410d3602cc082001200141e8056a3602c808200120014188076a3602f009200141c40c6a4101360200200142013702b40c200141f4eaca003602b00c2001200141c8086a3602c00c200141f0096a41a8a3c800200141b00c6a10371a200135029007422086200135028807841008200128028c07450d0020012802880710290b200f450d00200c10290b2013201341ff0171410247712123200141003602b80c200142013703b00c200141b00c6a410020094200200a1b2236422088a7221a41c0016c222c41c0016e109e01200a4101200a1b212020012802b80c210820012802b00c211b0240201a450d00201b20084105746a2105202c210a20202106034020052006290000370000200541186a200641186a290000370000200541106a200641106a290000370000200541086a200641086a290000370000200841016a2108200541206a2105200641c0016a2106200a41c07e6a220a0d000b0b20012802b40c212e200141b00c6a41186a220c4200370300200141b00c6a41106a220a4200370300200141b00c6a41086a22064200370300200142003703b00c41b1dcc900ad4280808080f0008422091001220f290000210d20014188076a41086a2205200f41086a2900003703002001200d37038807200f10292006200529030037030020012001290388073703b00c41b8dcc900ad4280808080a001841001220f290000210d2005200f41086a2900003703002001200d37038807200f1029200b200129038807370000200b41086a220f2005290300370000200141900b6a41086a22102006290300370300200141900b6a41106a221c200a290300370300200141900b6a41186a2217200c290300370300200120012903b00c3703900b200141203602b40c2001200141900b6a3602b00c201b2008200141b00c6a10b90102402023450d00200c4200370300200a420037030020064200370300200142003703b00c200910012208290000210d2005200841086a2900003703002001200d37038807200810292006200529030037030020012001290388073703b00c419887ca00ad4280808080a0028410012208290000210d2005200841086a2900003703002001200d3703880720081029200b200129038807370000200f200529030037000020102006290300370300201c200a2903003703002017200c290300370300200120012903b00c3703900b200141b00c6a200141900b6a108f0320012802b00c2208450d002007100420012902b40c42ffffffff0383500d00200810290b200c4200370300200a420037030020064200370300200142003703b00c20091001220829000021092005200841086a2900003703002001200937038807200810292006200529030037030020012001290388073703b00c418886ca00ad4280808080c001841001220829000021092005200841086a290000370300200120093703880720081029200b200129038807370000200f200529030037000020102006290300370300201c200a2903003703002017200c290300370300200120012903b00c3703900b2001200e41016a22223602b00c2007200141b00c6aad22024280808080c000841003200141d8046a41186a22084200370300200141d8046a41106a220c4200370300200141d8046a41086a22054200370300200142003703d80441eebec500ad4280808080f000841001220629000021092005200641086a290000370300200120093703d8042006102941f0f5c100ad4280808080900184100122062900002109200141c8086a41086a220f200641086a290000370300200120093703c80820061029200420012903c808370000200441086a200f290300370000200141b8046a41086a2005290300370300200141b8046a41106a200c290300370300200141b8046a41186a2008290300370300200120012903d8043703b804200141b00c6a200141b8046a10d001200141b00c6a4100200a28020041016a20012903b00c4202511b10da01200141386a20012802b00c220820012802b80c10fc01200128023c210620012802382105024020012802b40c450d00200810290b024020054101470d00024020062022460d00200620224f0d0141ecb4c000ad428080808080068410080b202210f7010b200141b8056a41186a220c4200370300200141b8056a41106a22064200370300200141b8056a41086a22084200370300200142003703b80541b1dcc900ad4280808080f0008422091001220a290000210d200141c8086a41086a2205200a41086a2900003703002001200d3703c808200a102920082005290300370300200120012903c8083703b80541a7adc000ad4280808080b00184220d1001220f290000213720014188076a41086a220a200f41086a2900003703002001203737038807200f102920062001290388072237370300200141b00c6a41086a22102008290300370300200141b00c6a41106a221c2037370300200141b00c6a41186a2217200a290300370300200120012903b8053703b00c20014188076a200141b00c6a412010f901200e41026a212102400240200128028807410146220f450d00200135028c0721370c010b2021ad223742208620378421374101210f0b2001200f3602900b2001203742ffffffff0f83200e41036aad422086843702940b200c42003703002006420037030020084200370300200142003703b80520091001220e29000021092005200e41086a290000370300200120093703c808200e102920082005290300370300200120012903c8083703b805200d1001220e2900002109200a200e41086a2900003703002001200937038807200e10292006200129038807370000200641086a200a29030037000020102008290300370300201c20062903003703002017200c290300370300200120012903b8053703b00c2001412036028c072001200141b00c6a36028807200141900b6a41047220014188076a10fb01200141d8046a41186a220a4200370300200141d8046a41106a220c4200370300200141d8046a41086a22064200370300200142003703d80441eebec500ad4280808080f000841001220829000021092005200841086a290000370300200120093703c8082008102920062005290300370300200120012903c8083703d80441c4f5c100ad4280808080a001841001220829000021092005200841086a290000370300200120093703c80820081029200420012903c808370000200441086a2005290300370000200141b8046a41086a2006290300370300200141b8046a41106a200c290300370300200141b8046a41186a200a290300370300200120012903d8043703b804200141306a200141b8046a412010fc010240024020012802304101460d00200141e8056a20211094020c010b200141b00c6a200128023410da01200141286a20012802b00c220620012802b80c10fc01200128022c210a20012802282105024020012802b40c450d00200610290b024020050d0041e5a4c200ad4280808080e0068410084100210a0b200141d8046a41186a220c4200370300200141d8046a41106a220e4200370300200141d8046a41086a22064200370300200142003703d80441eebec500ad4280808080f00084100122082900002109200141c8086a41086a2205200841086a290000370300200120093703c8082008102920062005290300370300200120012903c8083703d8044180fac100ad42808080808001841001220829000021092005200841086a290000370300200120093703c80820081029200420012903c808370000200441086a2005290300370000200141b8046a41086a2006290300370300200141b8046a41106a200e290300370300200141b8046a41186a200c290300370300200120012903d8043703b80441002021200a6b2205200520214b1b21060240024002404100200141b8046a10b3012205200541ff01714104461b41ff0171220541034b0d00024020050e0400020103000b200641064f0d020b0240200641016a4106490d00200141d8046a41186a220a4200370300200141d8046a41106a220c4200370300200141d8046a41086a22064200370300200142003703d80441eebec500ad4280808080f00084100122082900002109200141c8086a41086a2205200841086a290000370300200120093703c8082008102920062005290300370300200120012903c8083703d80441b480c200ad4280808080d002841001220829000021092005200841086a290000370300200120093703c80820081029200420012903c808370000200441086a2005290300370000200141b8046a41086a2006290300370300200141b8046a41106a200c290300370300200141b8046a41186a200a290300370300200120012903d8043703b804200141013a00b805200141b8046aad4280808080800484200141b8056aad4280808080108410030b200141003602e8050c020b200141d8046a41186a220a4200370300200141d8046a41106a220c4200370300200141d8046a41086a22064200370300200142003703d80441eebec500ad4280808080f00084100122082900002109200141c8086a41086a2205200841086a290000370300200120093703c8082008102920062005290300370300200120012903c8083703d8044180fac100ad42808080808001841001220829000021092005200841086a290000370300200120093703c80820081029200420012903c808370000200441086a2005290300370000200141b8046a41086a2006290300370300200141b8046a41106a200c290300370300200141b8046a41186a200a290300370300200120012903d8043703b804200141b8046aad428080808080048410040b200141d8046a41186a220a4200370300200141d8046a41106a220c4200370300200141d8046a41086a22064200370300200142003703d80441eebec500ad4280808080f00084100122082900002109200141c8086a41086a2205200841086a290000370300200120093703c8082008102920062005290300370300200120012903c8083703d80441b480c200ad4280808080d002841001220829000021092005200841086a290000370300200120093703c80820081029200420012903c808370000200441086a2005290300370000200141b8046a41086a2006290300370300200141b8046a41106a200c290300370300200141b8046a41186a200a290300370300200120012903d8043703b804200141003a00b805200141b8046aad4280808080800484200141b8056aad428080808010841003200141e8056a20211094020b024002400240024020012802e805222a450d00200141d8046a41186a22084200370300200141d8046a41106a220a4200370300200141d8046a41086a22054200370300200142003703d80441eebec500ad4280808080f00084100122062900002109200141c8086a41086a221d200641086a290000370300200120093703c808200610292005201d290300370300200120012903c8083703d80441c4f5c100ad4280808080a00184100122062900002109201d200641086a290000370300200120093703c80820061029200420012903c808370000200441086a201d290300370000200141b8046a41086a2005290300370300200141b8046a41106a200a290300370300200141b8046a41186a2008290300370300200120012903d8043703b804200141206a200141b8046a412010fc0120012001280224410020012802201b3602b805200141e8056a41086a280200210520012802ec0521162001410036029806200142083703900620014190066a41002005410574220e41057510ac01200128029806210c20012802900621040240200e450d002004200c41d0006c6a2105200141b00c6a41206a2108202a21060340200141f0096a41086a220f200641086a290000370300200141f0096a41106a2210200641106a290000370300200141f0096a41186a221c200641186a290000370300200120062900003703f009200141b8066a20012802b805200141f0096a10d70120014188076a20012802b806221920012802c00610a102200141c8086a41186a221720014188076a41186a290300370300200141c8086a41106a221e20014188076a41106a290300370300201d20014188076a41086a29030037030020012001290388073703c8080240024020012802a807220a0d00200141900b6a41186a4200370300200141900b6a41106a42003703004108210a200141900b6a41086a4200370300200142003703900b410021174100211e0c010b200141900b6a41086a201d290300370300200141900b6a41106a201e290300370300200141900b6a41186a2017290300370300200120012903c8083703900b20012802ac07211720012802b007211e20012802b407211f0b024020012802bc06450d00201910290b200641206a2106200820012903900b370300200141b00c6a41086a2219200f290300370300200141b00c6a41106a220f2010290300370300200141b00c6a41186a2210201c290300370300200841186a200141900b6a41186a290300370300200841106a200141900b6a41106a290300370300200841086a200141900b6a41086a290300370300200120012903f0093703b00c200541386a200141b00c6a41386a290300370300200541306a200141b00c6a41306a290300370300200541286a200141b00c6a41286a290300370300200541206a2008290300370300200541186a2010290300370300200541106a200f290300370300200541086a2019290300370300200520012903b00c370300200541cc006a201f360200200541c8006a201e360200200541c4006a2017360200200541c0006a200a360200200541d0006a2105200c41016a210c200e41606a220e0d000b0b2001200c360298060240201641ffffff3f71450d00202a10290b2004450d00200128029406210e200141003602b80c200142013703b00c200141b00c6a4100200c109e0120012802b80c21080240200c41d0006c22050d0020012802b00c212a0c020b200420056a210a20012802b00c222a20084105746a210520042106034020052006290000370000200541186a200641186a290000370000200541106a200641106a290000370000200541086a200641086a290000370000200841016a2108200541206a2105200a200641d0006a2206470d000c020b0b200141900b6a41002021417f6a2205200520214b1b10fa01200141b00c6a20012802900b220520012802980b10c30620014188076a41086a2206200141bc0c6a29020037030020014188076a41106a2208200141c40c6a29020037030020014188076a41186a220a200141cc0c6a290200370300200120012902b40c370388070240024020012802b00c4101470d00200141d40c6a280200210c200141c8086a41186a200a290300370300200141c8086a41106a2008290300370300200141c8086a41086a200629030037030020012001290388073703c808024020012802940b450d00200510290b200141b00c6a41186a200141c8086a41186a290300370300200141b00c6a41106a200141c8086a41106a290300370300200141b00c6a41086a200141c8086a41086a290300370300200120012903c8083703b00c20014188076a202110fa0120013502900721092001280288072108410410272206450d06412010272205450d06200520012903b00c370000200541186a220a200141b00c6a41186a290300370000200541106a220e200141b00c6a41106a290300370000200541086a220f200141b00c6a41086a290300370000200641044120102b2206450d0d20062005290000370000200641186a200a290000370000200641106a200e290000370000200641086a200f290000370000200510292006412041c000102b2205450d0d2005200c36002020094220862008ad842005ad4280808080c00484100320051029200128028c07450d01200810290c010b20012802940b450d00200510290b410121164100212a0c010b200120083602b80c20012902b40c210d2001200c360290072001200e36028c072001200436028807200141b00c6a20014188076a10bb030240024020012802b00c4101470d0020012902b40c210941cbb8c800ad4280808080f006841008200910080c010b200141b00c6a41186a280200210e200141cc0c6a280200210f200141b00c6a41206a2802002106200141b00c6a41306a2802002119200141e40c6a280200211020014188076a200141b00c6a41386a41c80010e4071a200141c8086a41186a200141c8076a290300370300200141d8086a20014188076a41386a290300370300200141d0086a20014188076a41306a290300370300200120012903b0073703c808200141900b6a202110fa0120013502980b210920012802900b210a410410272208450d04412010272205450d04200520012903c808370000200541186a221c200141c8086a41186a290300370000200541106a2217200141c8086a41106a290300370000200541086a221e200141c8086a41086a290300370000200841044120102b2208450d0b20082005290000370000200841186a201c290000370000200841106a2017290000370000200841086a201e290000370000200510292008412041c000102b2205450d0b2005200c3600202009422086200aad842005ad4280808080c00484100320051029024020012802940b450d00200a10290b0240200e450d00200f41046a2105200f200e41016a221c6a210a200f280200417f7341808182847871210c0240034002400240200c450d00200c21080c010b03402005200a4f0d03200641c0016a210620052802002108200541046a220c21052008418081828478712208418081828478460d000b2008418081828478732108200c21050b2008417f6a200871210c200620086841037641306c6a220841246a280200450d00200828022010290c000b0b0240200e41086a200e41056a490d00201cad42307e422088a71a0b200f10290b2010450d00201910290b202a4521164101211f200d2109202a2121202a0d010b200141b00c6a41186a4200370300200141b00c6a41106a22084200370300200141b00c6a41086a22054200370300200142003703b00c41b1dcc900ad4280808080f000841001220629000021092005200641086a290000370300200120093703b00c2006102941b8dcc900ad4280808080a00184100122062900002109200141c8086a41086a220a200641086a290000370300200120093703c80820061029200820012903c808220937030020014188076a41086a200529030037030020014188076a41106a200937030020014188076a41186a200a290300370300200120012903b00c37038807200141b00c6a20014188076a108d0220012902b40c420020012802b00c22051b21092005410120051b21214100211f0b2001201f3a00b80420012020202c6a3602dc04200120203602d8042001200141d8046a3602bc052001200141b8046a3602b805200141003602f005200142013703e805200141e8056a41002009422088a722054105742206410575108e0120012802f005211920012802e805211d02402005450d00201d201941c0016c6a21082019200641606a4105766a213a200141b00c6a41206a211c200141f0096a4180016a212c200141f0096a41e0006a2104200141f0096a41c0006a2119200141f0096a41206a211e20014188076a4101722117202121050340200141b8066a41186a220a200541186a290000370300200141b8066a41106a220c200541106a290000370300200141b8066a41086a220e200541086a290000370300200120052900003703b80620014190066a200141b8066a10b50520014188076a200128029006221020012802980610b60520012d008807210f200141c8086a201741a00110e4071a02400240200f4101470d00200141900b6a200141c8086a41a00110e4071a0240200128029406450d00201010290b200141f0096a200141900b6a41a00110e4071a0c010b0240200128029406450d00201010290b200141f0096a410041a00110e6071a0b024020012802b8052d00000d0020012802bc052210280200220f2010280204460d002010200f41c0016a36020002400240200141f0096a200f41206a2210460d002010200141f0096a412010e7070d010b0240201e200f41c0006a2210460d002010201e412010e7070d010b02402019200f41e0006a2210460d0020102019412010e7070d010b02402004200f4180016a2210460d0020102004412010e7070d010b202c200f41a0016a220f460d01200f202c412010e707450d010b20012802b80541013a00000b200541206a2105200141b00c6a41186a200a290300370300200141b00c6a41106a200c290300370300200141b00c6a41086a200e290300370300200120012903b8063703b00c201c200141f0096a41a00110e4071a2008200141b00c6a41c00110e40741c0016a2108200641606a22060d000b203a41016a21190b200120193602f0050240200942ffffff3f83500d00202110290b2019ad42c0017e2209422088a70d022009a72205417f4c0d0220012802ec05212120012d00b804212c0240024020050d00410121060c010b200510272206450d020b200141003602900720012006360288072001200541c0016e36028c0720014188076a41002019108e01200128029007210f0240024020190d0020012802880721170c010b201d201941c0016c6a211c2001280288072217200f41c0016c6a2110200141b00c6a41a0016a2106200141b00c6a4180016a2108200141b00c6a41e0006a210a200141b00c6a41c0006a210c200141b00c6a41206a210e201d21050340200141b00c6a41186a200541186a290000370300200141b00c6a41106a200541106a290000370300200141b00c6a41086a200541086a290000370300200120052900003703b00c200e41186a200541386a290000370000200e41106a200541306a290000370000200e41086a200541286a290000370000200e200541206a290000370000200c200541c0006a290000370000200c41086a200541c8006a290000370000200c41106a200541d0006a290000370000200c41186a200541d8006a290000370000200a200541e0006a290000370000200a41086a200541e8006a290000370000200a41106a200541f0006a290000370000200a41186a200541f8006a290000370000200820054180016a290000370000200841086a20054188016a290000370000200841106a20054190016a290000370000200841186a20054198016a2900003700002006200541a0016a290000370000200641086a200541a8016a290000370000200641186a200541b8016a290000370000200641106a200541b0016a290000370000200f41016a210f2010200141b00c6a41c00110e40741c0016a2110200541c0016a2205201c470d000b0b200128028c072104200141b00c6a41186a220a4200370300200141b00c6a41106a220c4200370300200141b00c6a41086a22064200370300200142003703b00c41b1dcc900ad4280808080f0008410012208290000210920014188076a41086a2205200841086a2900003703002001200937038807200810292006200529030037030020012001290388073703b00c4182f0c900ad4280808080a001841001220829000021092005200841086a290000370300200120093703880720081029200b200129038807370000200b41086a2005290300370000200141900b6a41086a2006290300370300200141900b6a41106a200c290300370300200141900b6a41186a200a290300370300200120012903b00c3703900b200f41c0016c4104722205417f4c0d02200510272206450d01200141003602b80c200120053602b40c200120063602b00c200f200141b00c6a107102400240200f0d0020012802b80c210520012802b40c210f20012802b00c21060c010b2017200f41c0016c6a211e410020012802b80c220e6b210a20012802b40c210f410021080340200e20086a210c02400240200f200a6a4120490d0020012802b00c2106200f21100c010b200c41206a2205200c490d06200f41017422062005200620054b1b22104100480d0602400240200f0d00024020100d00410121060c020b201010272206450d0d0c010b20012802b00c2106200f2010460d002006200f2010102b2206450d0c0b200120103602b40c200120063602b00c0b2006200e6a20086a220f201720086a2205290000370000200f41186a200541186a290000370000200f41106a200541106a290000370000200f41086a200541086a2900003700002001200c41206a220f3602b80c024002402010200a6a41606a411f4d0d002010210f0c010b200f41206a221c200f490d062010410174220f201c200f201c4b1b220f4100480d060240024020100d000240200f0d00410121060c020b200f10272206450d0d0c010b2010200f460d0020062010200f102b2206450d0c0b2001200f3602b40c200120063602b00c0b2006200e6a20086a221041206a200541206a290000370000201041386a200541386a290000370000201041306a200541306a290000370000201041286a200541286a2900003700002001200c41c0006a22103602b80c02400240200f200a6a41406a411f4d0d00200f21100c010b201041206a221c2010490d06200f4101742210201c2010201c4b1b22104100480d0602400240200f0d00024020100d00410121060c020b201010272206450d0d0c010b200f2010460d002006200f2010102b2206450d0c0b200120103602b40c200120063602b00c0b2006200e6a20086a220f41c0006a200541c0006a290000370000200f41d8006a200541d8006a290000370000200f41d0006a200541d0006a290000370000200f41c8006a200541c8006a2900003700002001200c41e0006a220f3602b80c024002402010200a6a41a07f6a411f4d0d002010210f0c010b200f41206a221c200f490d062010410174220f201c200f201c4b1b220f4100480d060240024020100d000240200f0d00410121060c020b200f10272206450d0d0c010b2010200f460d0020062010200f102b2206450d0c0b2001200f3602b40c200120063602b00c0b2006200e6a20086a221041e0006a200541e0006a290000370000201041f8006a200541f8006a290000370000201041f0006a200541f0006a290000370000201041e8006a200541e8006a2900003700002001200c4180016a22103602b80c02400240200f200a6a41807f6a411f4d0d00200f21100c010b201041206a221c2010490d06200f4101742210201c2010201c4b1b22104100480d0602400240200f0d00024020100d00410121060c020b201010272206450d0d0c010b200f2010460d002006200f2010102b2206450d0c0b200120103602b40c200120063602b00c0b2006200e6a20086a220f4180016a20054180016a290000370000200f4198016a20054198016a290000370000200f4190016a20054190016a290000370000200f4188016a20054188016a2900003700002001200c41a0016a220f3602b80c024002402010200a6a41e07e6a411f4d0d002010210f0c010b200f41206a221c200f490d062010410174220f201c200f201c4b1b220f4100480d060240024020100d000240200f0d00410121060c020b200f10272206450d0d0c010b2010200f460d0020062010200f102b2206450d0c0b2001200f3602b40c200120063602b00c0b2006200e6a20086a221041a0016a200541a0016a290000370000201041b8016a200541b8016a290000370000201041b0016a200541b0016a290000370000201041a8016a200541a8016a2900003700002001200c41c0016a3602b80c200a41c07e6a210a200841c0016a2108200541c0016a201e470d000b200e20086a21050b20072005ad4220862006ad8410030240200f450d00200610290b02402004450d00200441c0016c450d00201710290b200141b00c6a41186a220a4200370300200141b00c6a41106a220c4200370300200141b00c6a41086a22064200370300200142003703b00c41b1dcc900ad4280808080f0008410012208290000210920014188076a41086a2205200841086a2900003703002001200937038807200810292006200529030037030020012001290388073703b00c41a886ca00ad4280808080d001841001220829000021092005200841086a290000370300200120093703880720081029200b200129038807370000200b41086a2005290300370000200141900b6a41086a2006290300370300200141900b6a41106a200c290300370300200141900b6a41186a200a290300370300200120012903b00c3703900b2001202c3a00b00c20072002428080808010841003200120223602b40c200141063a00b00c200141b00c6a10cb0120232020201a201d201910e60602402021450d00202141c0016c450d00201d10290b0240201f2016720d00200d42ffffff3f83500d00202a10290b0240202e41ffffff3f71450d00201b10290b4280c0a8ca9a3a21022036a72205450d00200541c0016c450d00202010290b42002107200141d8046a41186a220c4200370300200141d8046a41106a22064200370300200141d8046a41086a22054200370300200142003703d80441eebec500ad4280808080f000841001220829000021092005200841086a290000370300200120093703d8042008102941eab8c000ad4280808080900284100122082900002109200141c8086a41086a220a200841086a290000370300200120093703c80820081029200620012903c8082209370300200141b8046a41086a22082005290300370300200141b8046a41106a220e2009370300200141b8046a41186a220f200a290300370300200120012903d8043703b804200141186a200310b1012001280218417d710d06200c42003703002006420037030020054200370300200142003703d80441f5bec500ad428080808080018422371001221029000021072005201041086a290000370300200120073703d80420101029419bc1c200ad42808080808002842238100122102900002107200a201041086a290000370300200120073703c80820101029200620012903c808370000200641086a200a29030037000020082005290300370300200e2006290300370300200f200c290300370300200120012903d8043703b804200141b00c6a200310ed02200120012802b00c2205410420051b22203602900b024020012902b40c420020051b2236422088a7220c0d00420021070c060b4100210642002107202021054100210803400240024002400240200742ffbfcbacf622560d00200141086a2005280200200541086a2802002005410c6a280200200541146a280200200541186a280200108a022001290308a7450d010b20060d01410021060c020b200641016a2106200720012903107c21070c010b200820066b220a200c4f0d05200141b00c6a41186a220e2005200641646c6a220a41186a220f280200360200200141b00c6a41106a2210200a41106a221c290200370300200141b00c6a41086a2217200a41086a221e2902003703002001200a2902003703b00c200541086a22192902002109200541106a220b290200210d200541186a221d280200211f200a2005290200370200200f201f360200201c200d370200201e2009370200201d200e280200360200200b201029030037020020192017290300370200200520012903b00c3702000b2005411c6a2105200c200841016a2208460d050c000b0b1039000b1038000b1032000b200a200c4180bdc7001036000b2006450d00200c2006490d002020200c20066b220c411c6c6a200610f102203642ffffffff0f8321360b20012802900b2105200141b8056a41186a4200370300200141b8056a41106a220a4200370300200141b8056a41086a22064200370300200142003703b80520371001220829000021092006200841086a290000370300200120093703b805200810292038100122082900002109200141c8086a41086a220e200841086a290000370300200120093703c80820081029200a20012903c8082209370300200141b00c6a41086a2006290300370300200141b00c6a41106a2009370300200141b00c6a41186a200e290300370300200120012903b8053703b00c024020050d00200141b00c6aad428080808080048410040c010b2036a7210620014188076a2005200c10f002200141b00c6aad42808080808004842001350290074220862001280288072208ad8410030240200128028c07450d00200810290b2005200c10f1022006450d002006411c6c450d00200510290b200010b0012109200141f00d6a2400427f2002427f200720097c220920092007541b7c220720072002541b0f0b1030000b130020004101360204200041a4b3c4003602000b3400200041e4bec50036020420004100360200200041146a4103360200200041106a41a4b4c400360200200041086a420a3702000b9b0902097f037e230041206b220224002002410036020820024201370300024002400240412010272203450d0020032001290010370000200341186a2204200141286a290000370000200341106a2205200141206a290000370000200341086a2206200141186a290000370000412010272207450d02200241203602042002200736020020072003290000370000200741086a2006290000370000200741106a2005290000370000200741186a200429000037000020024120360208200310292001200210e601412010272203450d0020032001290030370000200341186a200141c8006a290000370000200341106a200141c0006a290000370000200341086a200141386a2900003700000240024020022802042208200228020822066b4120490d00200641206a210720022802002104200821050c010b200641206a22072006490d02200841017422042007200420074b1b22054100480d020240024020080d00024020050d00410121040c020b2005102722040d010c050b2002280200210420082005460d00200420082005102b2204450d040b20022005360204200220043602000b200420066a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200736020820031029412010272203450d0020032001290050370000200341186a200141e8006a290000370000200341106a200141e0006a290000370000200341086a200141d8006a2900003700000240200520076b411f4b0d00200741206a22062007490d02200541017422082006200820064b1b22064100480d020240024020050d00024020060d00410121040c020b200610272204450d050c010b20052006460d00200420052006102b2204450d040b20022006360204200220043602000b200420076a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a2900003700002002200741206a36020820031029200128020421052001410c6a2802002201200210710240024020010d002002280208210320022802042104200228020021080c010b200141246c210920022802042107200228020821010340200241106a200510bc022002280210210a02400240200720016b20022802182206490d00200120066a210320022802002108200721040c010b200120066a22032001490d04200741017422042003200420034b1b22044100480d040240024020070d00024020040d00410121080c020b200410272208450d070c010b2002280200210820072004460d00200820072004102b2208450d060b20022004360204200220083602000b200820016a200a200610e4071a2002200336020802402002280214450d00200a10290b200541246a210520042107200321012009415c6a22090d000b0b2003ad4220862008ad8410102201290000210b200141086a290000210c200141106a290000210d200041186a200141186a290000370000200041106a200d370000200041086a200c3700002000200b3700002001102902402004450d00200810290b200241206a24000f0b1039000b1032000b1030000b13002000410636020420004180bac4003602000b3400200041d482cc0036020420004100360200200041146a4109360200200041106a41d4d6c400360200200041086a42053702000b4d01027f230041106b220224000240410110272203450d00200341003a0000200041086a4101360200200241013602042002200336020020002002290300370200200241106a24000f0b1039000b2401017f230041b0046b22022400200241033602002000200210e702200241b0046a24000b2201017f230041106b22022400200241003602002000200210e802200241106a24000b930d04067f017e047f017e230041e0006b22022400200241306a200110dc06410221030240200228023022042002280238220510900641ff017122064102460d002005ad4220862004ad841004200621030b02402002280234450d00200410290b41022003410171200341024622031b21040240024002400240024002400240024020030d0020044101710d04200241306a41186a4200370300200241306a41106a22074200370300200241306a41086a220442003703002002420037033041d787cc00ad4280808080900184100122052900002108200241d0006a41086a2203200541086a2900003703002002200837035020051029200420032903003703002002200229035037033041cd87cc00ad4280808080a001841001220529000021082003200541086a2900003703002002200837035020051029200720022903502208370300200241106a41086a2004290300370300200241106a41106a2008370300200241106a41186a200329030037030020022002290330370310200241306a200241106a412010c0044101210920022802302203410420031b210a2002290234420020031b2208422088a7220b41014b0d0141002103200b0e020302030b41b3d3c8002103411121014100210502400240024020040e03000201000b200241c4006a41013602002002420137023420024198e3ca0036023020024104360214200241bcd4c8003602102002200241106a360240200241306a4180a6cc001040000b41c4d3c8002103410e2101410121050b2000411a3a0001200041086a2001360200200041046a2003360200200041026a20053a00000c050b41002103200b2104034020032004410176220520036a2206200a20064102746a28020020014b1b2103200420056b220441014b0d000b0b200a20034102746a22042802002001470d002003200b4f0d022004200441046a2003417f73200b6a41027410e5071a200842ffffffff0f832108200b417f6a210b410021090b200241306a41186a22064200370300200241306a41106a220c4200370300200241306a41086a220442003703002002420037033041d787cc00ad428080808090018410012205290000210d200241d0006a41086a2203200541086a2900003703002002200d37035020051029200420032903003703002002200229035037033041cd87cc00ad4280808080a0018410012205290000210d2003200541086a2900003703002002200d3703502005102920072002290350370000200741086a2003290300370000200241106a41086a2004290300370300200241106a41106a200c290300370300200241106a41186a200629030037030020022002290330370310200241203602342002200241106a360230200a200b200241306a10ef030240200842ffffffff0383500d00200a10290b2009450d002000419a023b0001200041086a410e360200200041046a41c4d3c8003602000c020b200241106a200110ac03200241306a2002280210220420022802182205108b03024020022802302203450d002005ad4220862004ad8410040b2002290234210802402002280214450d00200410290b200241306a2001108f06200235023842208620022802302204ad84100402402002280234450d00200410290b200241306a2001108906200241086a200228023022042002280238220610fc010240200228020822054101470d002006ad4220862004ad8410040b02402002280234450d00200410290b024020054101470d00200241306a2001108a06200235023842208620022802302204ad8410042002280234450d00200410290b02402003450d00200241306a41186a4200370300200241306a41106a22064200370300200241306a41086a220442003703002002420037033041b3e6ca00ad4280808080e0008410012205290000210d2004200541086a2900003703002002200d3703302005102941c9e6ca00ad4280808080e0008410012205290000210d200241d0006a41086a220a200541086a2900003703002002200d3703502005102920062002290350220d370300200241106a41086a2004290300370300200241106a41106a200d370300200241106a41186a200a290300370300200220022903303703102002200241106a412010fc012002280204210420022802002105200220083702342002200336023020012004410020051b200241306a108b060b200241306a200110dc06200235023842208620022802302203ad84100402402002280234450d00200310290b410421030c020b2003200b1042000b410321030b200020033a0000200241e0006a24000bfc02010b7f200241016a210320022d00002104200128020821052001280204210620012802002107034020062f0106220841226c2109410021024100210a0240024002400340200a210b024020092002470d002008210b0c020b024002402004200620026a220c41086a2d0000220a460d004101210c2004200a4f0d010c030b02400240024020040e03000102000b02402003200c41096a412010e707220a0d004100210d0c060b4101210c200a41004e0d020c040b02402003200c41096a412010e707220a0d004100210d0c050b4101210c200a41004e0d010c030b4100210d2003200c41096a412110e707220a450d03417f4101200a4100481b210c0b200b41016a210a200241226a2102200c417f470d000b0b20070d014101210d410021070b200020073602042000200d360200200041106a200b3602002000410c6a2005360200200041086a20063602000f0b2001200536020820012007417f6a220736020020012006200b4102746a4180036a28020022063602040c000b0b130020004107360204200041a4f2c4003602000bab2c06047f017e017f017e067f047e230041e0166b2207240020074198126a41186a2208420037030020074198126a41106a2209420037030020074198126a41086a220a4200370300200742003703981241d482cc00ad4280808080d00084220b1001220c290000210d200741e80d6a41086a220e200c41086a2900003703002007200d3703e80d200c1029200a200e290300370300200720072903e80d3703981241d982cc00ad4280808080e001841001220c290000210d200e200c41086a2900003703002007200d3703e80d200c1029200920072903e80d220d370300200741d8006a41086a220c200a290300370300200741d8006a41106a220f200d370300200741d8006a41186a2210200e2903003703002007200729039812370358200741d0006a200741d8006a412010fc01024002400240024002400240024002402007280254410020072802501b2002470d002008420037030020094200370300200a42003703002007420037039812200b10012202290000210d200e200241086a2900003703002007200d3703e80d20021029200a200e290300370300200720072903e80d3703981241fab1c400ad4280808080b0018410012202290000210d200e200241086a2900003703002007200d3703e80d20021029200920072903e80d370000200941086a200e290300370000200c200a290300370300200f2009290300370300201020082903003703002007200729039812370358200741b8096a200741d8006a412010f90120072802b8094101470d0241eda5c700210e411e210a20072802bc09220941036a2004490d06200320044b0d06200920034b0d06200420036b220e20044d0d01418ba6c700210e411b210a0c060b20004183323b0100200041086a4111360200200041046a41b79ec400360200200041026a41093a00000c060b0240200320096b220a20034d0d0041a6a6c700210e4116210a0c050b0240200a41034d0d0041bca6c700210e4115210a0c050b02400240024002400240200a0e0400010203000b200e4104490d050c070b200e41034f0d06200e41046a21020c050b200e41014b0d0541072102200e0e020401040b200e0d04410921020c030b410821020c020b20004183323b0100200041086a410a360200200041046a41c89ec400360200200041026a410a3a00000c040b200e21020b20074198126a41186a2208420037030020074198126a41106a220a420037030020074198126a41086a220e4200370300200742003703981241b3e6ca00ad4280808080e0008410012209290000210d200e200941086a2900003703002007200d370398122009102941c9e6ca00ad4280808080e000841001220c290000210d200741e80d6a41086a2209200c41086a2900003703002007200d3703e80d200c1029200a20072903e80d220d370300200741d8006a41086a2204200e290300370300200741d8006a41106a2203200d370300200741d8006a41186a220f20092903003703002007200729039812370358200741c8006a200741d8006a412010fc01200728024c21102007280248211120084200370300200a4200370300200e4200370300200742003703981241d482cc00ad4280808080d000841001220c290000210d200e200c41086a2900003703002007200d37039812200c102941fab1c400ad4280808080b001841001220c290000210d2009200c41086a2900003703002007200d3703e80d200c1029200a20072903e80d220d3703002004200e2903003703002003200d370300200f20092903003703002007200729039812370358200741b8096a200741d8006a412010f9010240024020072802b8094101460d00410021120c010b410021122010410020111b220e200741b8096a41086a2802006b220a200e4b0d00200a4100200a41e807491b21120b20074188056a201210b90420074198126a200728028805220e20072802900510bc04200728029812210c200741e80d6a20074198126a41047241ac0410e4071a024002400240200c4103460d00200741b8096a200741e80d6a41ac0410e4071a0240200728028c05450d00200e10290b20074188056a200741b8096a41ac0410e4071a0c010b0240200728028c05450d00200e10290b02402012417f6a220e20124b0d00200741c8166a200e10b90420074198126a20072802c816220e20072802d01610bc04200728029812210c200741e80d6a20074198126a41047241ac0410e4071a0240200c4103460d0020074188056a200741e80d6a41ac0410e4071a20072802cc16450d02200e10290c020b20072802cc16450d00200e10290b4102210c200741023602d0042007410236029804200741023602e003200741023602a803200741023602f002200741023602b8022007410236028002200741023602c8012007410236029001200741023602580c010b2007200c360258200741d8006a41047220074188056a41ac0410e4071a0b0240024002400240200741d8006a200241ff0171221341386c6a220f2802004102460d00200f41286a290300200554200f41306a290300220d200654200d2006511b450d010b200141086a21102002410f7121114100210e41002109024002400340200741d8006a200e6a210a0240200c410246220c0d004100200a200c1b220c28020022022001280200470d000240024020020d000240200c41086a22022010460d0020022010412010e7070d030b200c2802042001280204470d020c010b200c2802042001280204470d010b024002400240200941094b0d004100210c0240024002400240024002400240024020090e0a0a0900010203040506070a0b4102210c0c090b4103210c0c080b4104210c0c070b4105210c0c060b4106210c0c050b4107210c0c040b4108210c0c030b4109210c0c020b41f8f5c40041c50020074198126a41c0f6c40041d0f6c400103a000b4101210c0b41032103410321084103210202400240024002400240024002400240024002400240024002400240024002400240024002400240024020110e0a0001020304050607080a000b410021084100210241032104200c0e0a0a0b0c0d0e0f101112130a0b410021024101210841032104200c0e0a090a0b0c0d0e0f101112090b410021024102210841032104200c0e0a08090a0b0c0d0e0f1011080b410021020c050b410121084101210241032104200c0e0a060708090a0b0c0d0e0f060b410121024102210841032104200c0e0a05060708090a0b0c0d0e050b410121020c020b410221084102210241032104200c0e0a030405060708090a0b0c030b410221020b410321080b41032104200c0e0a00010203040506070809000b41002103410021040c080b41002104410121030c070b41002104410221030c060b410021040c050b41012103410121040c040b41012104410221030c030b410121040c020b410221030b410221040b200220034b0d02200420084b0d020b200e41f803460d02200e41386a210e200941016a2109200a41386a280200210c0c000b0b20004183323b0100200041086a4114360200200041046a41a39ec400360200200041026a41083a00000c060b4200210d4200210b024020012802004101470d00200741386a200128020410bf04200741c0006a290300210b2007290338210d0b20074198126a200110bd04200741206a200728029812220a20072802a01210e301200741306a2903002114200729032821152007280220210e0240200728029c12450d00200a10290b0240200520154200200e1b2216200d7c220d7d2215200556200620144200200e1b200b7c200d201654ad7c7d2005200d54ad7d220d200656200d2006511b0d000240024020012802004101470d00200741b8096a200141046a10cc030c010b200741b8096a41186a200141206a290000370300200741b8096a41106a200141186a290000370300200741b8096a41086a200141106a2900003703002007200141086a2900003703b8090b20072015370388052007200d370390052007200741b8096a3602d8164104210e02402015200d84500d002007200741b8096a3602dc162007200741dc166a3602a0122007200741d8166a36029c12200720074188056a36029812200741e80d6a200741b8096a20074198126a108e04024020072802e80d4101470d00200720072900ed0d370398122007200741f40d6a28000036009f1220072d00ec0d210e0c010b4104210e200741e80d6a41086a2903004201520d00200741e80d6a41106a290300210b20072802dc16210a200741d0126a200741e80d6a41186a290300370300200741c8126a200b37030020074198126a41086a41003a0000200741a1126a200a290000370000200741a9126a200a41086a290000370000200741b1126a200a41106a290000370000200741b9126a200a41186a290000370000200741033a00981220074198126a10cb010b20072007290398123703c8162007200728009f123600cf160240200e41ff01714104460d002000200e3a0000200020072903c816370001200041086a20072800cf163600000c070b200741e80d6a200110bd0420072802e80d210e20073502f00d210b200720063703a0122007200537039812200b422086200ead8420074198126aad42808080808002841003024020072802ec0d450d00200e10290b0240024020012802004101470d0020074198126a200141046a10cc030c010b20074198126a41186a200141206a29000037030020074198126a41106a200141186a29000037030020074198126a41086a200141106a2900003703002007200141086a290000370398120b200741e80d6a41186a20074198126a41186a290300220b370300200741e80d6a41106a20074198126a41106a2903002214370300200741e80d6a41086a20074198126a41086a220e2903002216370300200720072903981222173703e80d200741e0126a2006370300200741d8126a2005370300200741d0126a200d370300200741c8126a2015370300200e41053a0000200741a1126a2017370000200741a9126a2016370000200741b1126a2014370000200741b9126a200b370000200741c1126a20072800b809360000200741c4126a200741bb096a2800003600002007410f3a00981220074198126a10cb010b200f290310210b200f2001290210370310200f2903082115200f2001290208370308200f290300210d200f2001290200370300200f41186a220e2903002114200e200141186a290200370300200741d8006a201341386c6a220e41306a2006370200200e41286a2005370200200e41206a220e2902002106200e200141206a290200370200200da7220e4102460d02200d422088a7210a200741b8096a41206a20063703002007200d3703b809200741b8096a41186a2014370300200720153703c0092007200b3703c809200741c0096a21092007280258220c4102460d01200c200e470d010240200e4101460d00200741e0006a2009412010e7070d02200728025c200a460d030c020b200728025c200a470d010c020b200041043a00000c040b0240200728029001220c4102460d00200c200e470d000240200e4101460d0020074198016a2009412010e7070d0120074194016a280200200a460d020c010b20074194016a280200200a460d010b024020072802c801220c4102460d00200c200e470d000240200e4101460d00200741d0016a2009412010e7070d01200741cc016a280200200a460d020c010b200741cc016a280200200a460d010b0240200728028002220c4102460d00200c200e470d000240200e4101460d0020074188026a2009412010e7070d0120074184026a280200200a460d020c010b20074184026a280200200a460d010b024020072802b802220c4102460d00200c200e470d000240200e4101460d00200741c0026a2009412010e7070d01200741bc026a280200200a460d020c010b200741bc026a280200200a460d010b024020072802f002220c4102460d00200c200e470d000240200e4101460d00200741f8026a2009412010e7070d01200741f4026a280200200a460d020c010b200741f4026a280200200a460d010b024020072802a803220c4102460d00200c200e470d000240200e4101460d00200741b0036a2009412010e7070d01200741ac036a280200200a460d020c010b200741ac036a280200200a460d010b024020072802e003220c4102460d00200c200e470d000240200e4101460d00200741e8036a2009412010e7070d01200741e4036a280200200a460d020c010b200741e4036a280200200a460d010b0240200728029804220c4102460d00200c200e470d000240200e4101460d00200741a0046a2009412010e7070d012007419c046a280200200a460d020c010b2007419c046a280200200a460d010b024020072802d004220c4102460d00200c200e470d000240200e4101460d00200741d8046a2009412010e7070d01200741d4046a280200200a460d020c010b200741d4046a280200200a460d010b20074198126a200741b8096a10bd04200741086a200728029812220a20072802a012220910e301200741186a290300210b2007290310210d0240200729030822064201520d002009ad422086200aad8410040b2006a721090240200728029c12450d00200a10290b20094101470d0002400240200e4101470d0020074188056a200741b8096a41047210cc030c010b20074188056a41186a200741d8096a29030037030020074188056a41106a200741b8096a41186a29030037030020074188056a41086a200741b8096a41106a2903003703002007200741b8096a41086a290300370388050b2007200d3703c8162007200b3703d0160240200d200b84500d00200720074188056a3602dc16200741e80d6a20074188056a200741c8166a200741dc166a10ea0320072903e80d4201520d0020072903f00d2106200741d0126a200741e80d6a41106a290300370300200741c8126a200637030020074198126a41086a41003a0000200741a1126a200729038805370000200741a9126a20074188056a41086a290300370000200741b1126a20074188056a41106a290300370000200741b9126a200741a0056a290300370000200741033a00981220074198126a10cb010b02400240200e4101470d0020074198126a200741b8096a41047210cc030c010b20074198126a41186a200741d8096a29030037030020074198126a41106a200741b8096a41186a29030037030020074198126a41086a200741b8096a41106a2903003703002007200741b8096a41086a290300370398120b200741e80d6a41186a20074198126a41186a2903002206370300200741e80d6a41106a20074198126a41106a2903002205370300200741e80d6a41086a20074198126a41086a220e2903002215370300200720072903981222143703e80d200741d0126a200b370300200741c8126a200d370300200e41063a0000200741a1126a2014370000200741a9126a2015370000200741b1126a2005370000200741b9126a2006370000200741c1126a20072800c816360000200741c4126a200741cb166a2800003600002007410f3a009812200741d8126a200729038805370300200741e0126a20074188056a41086a29030037030020074198126a10cb010b20074198126a201210b904200728029812210e200720072802a0123602ec0d2007200e3602e80d200741d8006a200741e80d6a10f2020240200728029c12450d00200e10290b200041043a00000c020b41d1a6c700210e4113210a0b200041003a0000200041086a200a360200200041046a200e3602000b200741e0166a24000b0d00200141fcacc7004102104d0b1f0002402000280200450d00200041086a280200450d00200028020410290b0b130020004104360204200041d8fbc4003602000b3400200041d5bec50036020420004100360200200041146a4101360200200041106a41f88ac500360200200041086a42073702000b130020004101360204200041b08cc5003602000b3400200041ccbec50036020420004100360200200041146a4102360200200041106a41e093c500360200200041086a42093702000b130020004101360204200041a096c5003602000b2d01017f02404108102722020d001039000b20004288808080800137020420002002360200200242b8173700000b88090b107f017e017f017e017f017e017f017e017f017e017f230041306b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200241286a22082000200441306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e2903003703002013201029030037030020052002290300370300024020032001490d00200321040c030b2006410d7420067322044111762004732204410574200473220620077122044100200120042001491b6b220520014f0d01200241286a22082000200341306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e29030037030020132010290300370300200520022903003703002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200241286a22032000200441306c6a220141286a2204290300370300200241206a2206200141206a2207290300370300200241186a2208200141186a2209290300370300200241106a220a200141106a220b290300370300200241086a220c200141086a220d290300370300200220012903003703002000200541306c6a22002903002112200041086a22052903002114200041106a220e2903002116200041186a220f2903002118200041206a2210290300211a2004200041286a22112903003703002007201a37030020092018370300200b2016370300200d2014370300200120123703002011200329030037030020102006290300370300200f2008290300370300200e200a2903003703002005200c290300370300200020022903003703000b200241306a24000f0b200520014190bdc7001036000b200420014180bdc7001036000bf20907077f027e0b7f017e017f027e017f230041306b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d02200520062000200641306c6a22072903002000200541306c6a220829030056200741086a2903002209200841086a290300220a562009200a511b1b21060b200620014f0d03200420014f0d022000200441306c6a22042903002000200641306c6a220529030056200441086a22072903002209200541086a2208290300220a562009200a511b450d03200241286a220b200441286a220c290300370300200241206a220d200441206a220e290300370300200241186a220f200441186a2210290300370300200241106a2211200441106a2212290300370300200241086a221320072903003703002002200429030037030020082903002109200541106a2214290300210a200541186a22152903002116200541206a2217290300211820052903002119200c200541286a221a290300370300200e2018370300201020163703002012200a3703002007200937030020042019370300201a200b2903003703002017200d2903003703002015200f290300370300201420112903003703002008201329030037030020052002290300370300200621040c000b0b2006200141d89ac5001036000b2004200141e89ac5001036000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241286a220b200041286a2205290300370300200241206a220c200041206a2206290300370300200241186a220d200041186a2208290300370300200241106a220e200041106a2210290300370300200241086a220f200041086a2211290300370300200220002903003703002000200741306c6a22042903002109200441086a290300210a200441106a2903002116200441186a2903002118200441206a29030021192005200441286a2903003703002006201937030020082018370300201020163703002011200a3703002000200937030041002105024002400240034020042002290300370300200441286a200b290300370300200441206a200c290300370300200441186a200d290300370300200441106a200e290300370300200441086a200f2903003703002005410174220441017221060240200441026a220420074f0d00200620074f0d02200420062000200641306c6a22082903002000200441306c6a221029030056200841086a2903002209201041086a290300220a562009200a511b1b21060b200620074f0d03200520074f0d022000200541306c6a22052903002000200641306c6a220429030056200541086a22082903002209200441086a2210290300220a562009200a511b450d03200b200541286a2211290300370300200c200541206a2212290300370300200d200541186a2213290300370300200e200541106a2214290300370300200f20082903003703002002200529030037030020102903002109200441106a290300210a200441186a2903002116200441206a2903002118200429030021192011200441286a29030037030020122018370300201320163703002014200a3703002008200937030020052019370300200621050c000b0b2006200741d89ac5001036000b2005200741e89ac5001036000b200741014b0d000b0b200241306a24000f0b200720014190bdc7001036000bb40c050b7f017e017f037e0f7f230041306b22022400200041e0006a2103200041c07e6a21042001417f6a2105200041306a2106410021072001413249210841012109024003400240024020092001490d004100210a0c010b4101210a2000200941306c220b6a220c290300220d200c41506a220e29030056200c41086a290300220f200e41086a290300221056200f2010511b0d002006200b6a210a03404101210c20052009460d03200941016a2109200a2903002211200d58210c200a41086a2903002210200f51210e2010200f58210b200a41306a210a2011210d2010210f200c200b200e1b0d000b2009200149210a0b2009200146210c20080d0120092001460d010240024002400240024002402009417f6a220c20014f0d00200a450d012000200c41306c6a220a290300210f200a2000200941306c22126a220c290300370300200241286a2213200a41286a2214290300370300200241206a2215200a41206a2216290300370300200241186a220b200a41186a2217290300370300200241106a2218200a41106a2219290300370300200241086a221a200a41086a220e290300370300200e200c41086a221b2903003703002019200c41106a221c2903003703002017200c41186a221d2903003703002016200c41206a221e2903003703002014200c41286a221f2903003703002002200f370300200c2002290300370300201f2013290300370300201e2015290300370300201d200b290300370300201c2018290300370300201b201a29030037030020094102490d05200a290300220d20002009417e6a221541306c6a221329030058200e290300220f201341086a2220290300221058200f2010511b0d05200a2013290300370300200e2020290300370300200a29031021102019201341106a290300370300200b201429030037030020182016290300370300201a20172903003703002017201341186a2903003703002016201341206a2903003703002014201341286a29030037030020022010370300024020150d00410021150c050b200d20002009417d6a220e41306c6a220a29030058200f200a41086a290300221058200f2010511b0d04200420126a210a0340200a4188016a200a41d8006a290300370300200a4180016a200a41d0006a290300370300200a41f8006a200a41c8006a290300370300200a41f0006a200a41c0006a290300370300200a41e8006a200a41386a290300370300200a41e0006a200a41306a290300370300200e450d03200a2903002110200a41086a2113200a41506a210a200e417f6a210e200d201056200f2013290300221056200f2010511b0d000b200e41016a21150c030b200c20014180bdc7001036000b200920014190bdc7001036000b410021150b2000201541306c6a21130b2013200d3703002013200f3703082000201541306c6a220a2002290300370310200a41286a200b290300370300200a41206a2018290300370300200a41186a201a2903003703000b200741016a21070240200120096b22134102490d00200c290330200c290300220d58200c41386a2903002210201b290300220f582010200f511b0d00200c200c41306a220a290300370300201b200a41086a290300370300200c2903102110201c200a41106a290300370300200b201f2903003703002018201e290300370300201a201d290300370300201d200a41186a290300370300201e200a41206a290300370300201f200a41286a290300370300200220103703004101210e024020134103490d00200c290360200d58200c41e8006a2903002210200f582010200f511b0d00200320126a210e4103211b02400340200e220a41506a220e200a290300370300200e41286a200a41286a290300370300200e41206a200a41206a290300370300200e41186a200a41186a290300370300200e41106a200a41106a290300370300200e41086a200a41086a2903003703002013201b2214460d01201441016a211b200a41306a220e290300200d56200a41386a2903002210200f562010200f511b0d000b0b2014417f6a210e0b200a200d370300200a200f370308200c200e41306c6a220a41286a200b290300370300200a41206a2018290300370300200a41186a201a290300370300200a20022903003703100b20074105470d000b4100210c0b200241306a2400200c0b88090b107f017e017f017e017f017e017f017e017f017e017f230041306b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200241286a22082000200441306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e2903003703002013201029030037030020052002290300370300024020032001490d00200321040c030b2006410d7420067322044111762004732204410574200473220620077122044100200120042001491b6b220520014f0d01200241286a22082000200341306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e29030037030020132010290300370300200520022903003703002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200241286a22032000200441306c6a220141286a2204290300370300200241206a2206200141206a2207290300370300200241186a2208200141186a2209290300370300200241106a220a200141106a220b290300370300200241086a220c200141086a220d290300370300200220012903003703002000200541306c6a22002903002112200041086a22052903002114200041106a220e2903002116200041186a220f2903002118200041206a2210290300211a2004200041286a22112903003703002007201a37030020092018370300200b2016370300200d2014370300200120123703002011200329030037030020102006290300370300200f2008290300370300200e200a2903003703002005200c290300370300200020022903003703000b200241306a24000f0b200520014190bdc7001036000b200420014180bdc7001036000bfc1407087f027e077f027e047f017e017f230041306b22032400024020014101762204450d0003402004417f6a22042105024003402005410174220641017221070240200641026a220820014f0d00024002400240200720014f0d00024020022802002802002802002209280200220a0d004200210b4200210c0c020b2000200741306c6a210d2009280204210e200a210f02400340200f41086a2110200f2f010622114105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a21110b0240200e0d004200210b4200210c0c030b200e417f6a210e200f20114102746a41c8056a280200210f0c010b0b200f20124105746a220641f0026a290300210c200641e8026a290300210b0b200a450d012000200841306c6a210d2009280204210f0340200a41086a2110200a2f0106220e4105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b200f450d03200f417f6a210f200a200e4102746a41c8056a280200210a0c010b0b200a20124105746a220641f0026a2903002114200641e8026a29030021150c020b2007200141d89ac5001036000b42002115420021140b20082007200b201554200c201454200c2014511b1b21070b200720014f0d010240200520014f0d0020022802002802002802002211280200220f450d022000200541306c6a210d2011280204210a200f210502400340200541086a211020052f0106220e4105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b0240200a0d00420021144200210c0c030b200a417f6a210a2005200e4102746a41c8056a28020021050c010b0b200520124105746a220641f0026a290300210c200641e8026a29030021140b200f450d022000200741306c6a21052011280204210a0340200f41086a2110200f2f0106220e4105742106410021120240024003402006450d0120052010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b200a450d04200a417f6a210a200f200e4102746a41c8056a280200210f0c010b0b2014200f20124105746a220641e8026a29030054200c200641f0026a290300221454200c2014511b450d02200341286a2206200d41286a2210290300370300200341206a2212200d41206a2213290300370300200341186a220f200d41186a220a290300370300200341106a220e200d41106a2211290300370300200341086a2208200d41086a22092903003703002003200d2903003703002005290300210c200541086a22162903002114200541106a22172903002115200541186a2218290300210b200541206a2219290300211a2010200541286a221b2903003703002013201a370300200a200b3703002011201537030020092014370300200d200c370300201b2006290300370300201920122903003703002018200f2903003703002017200e2903003703002016200829030037030020052003290300370300200721050c010b0b2005200141e89ac5001036000b20040d000b0b0240024020014102490d002001211103402011417f6a221120014f0d02200341286a2209200041286a2206290300370300200341206a2216200041206a2210290300370300200341186a2217200041186a2212290300370300200341106a2218200041106a2213290300370300200341086a2219200041086a2205290300370300200320002903003703002000201141306c6a220d290300210c200d41086a2903002114200d41106a2903002115200d41186a290300210b200d41206a290300211a2006200d41286a2903003703002010201a3703002012200b37030020132015370300200520143703002000200c3703004100210502400340200d2003290300370300200d41286a2009290300370300200d41206a2016290300370300200d41186a2017290300370300200d41106a2018290300370300200d41086a20192903003703002005410174220641017221070240200641026a221b20114f0d00024002400240200720114f0d00024020022802002802002802002204280200220a0d00420021154200210c0c020b2000200741306c6a210d2004280204210e200a210f02400340200f41086a2110200f2f010622084105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a21080b0240200e0d00420021154200210c0c030b200e417f6a210e200f20084102746a41c8056a280200210f0c010b0b200f20124105746a220641f0026a290300210c200641e8026a29030021150b200a450d012000201b41306c6a210d2004280204210f0340200a41086a2110200a2f0106220e4105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b200f450d03200f417f6a210f200a200e4102746a41c8056a280200210a0c010b0b200a20124105746a220641f0026a2903002114200641e8026a290300210b0c020b2007201141d89ac5001036000b4200210b420021140b201b20072015200b54200c201454200c2014511b1b21070b200720114f0d010240200520114f0d0020022802002802002802002208280200220f450d022000200541306c6a21052008280204210a200f210d02400340200d41086a2110200d2f0106220e4105742106410021120240024003402006450d0120052010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b0240200a0d00420021144200210c0c030b200a417f6a210a200d200e4102746a41c8056a280200210d0c010b0b200d20124105746a220641f0026a290300210c200641e8026a29030021140b200f450d022000200741306c6a210d2008280204210a0340200f41086a2110200f2f0106220e4105742106410021120240024003402006450d01200d2010412010e7072213450d02200641606a2106201241016a2112201041206a21102013417f4a0d000b2012417f6a210e0b200a450d04200a417f6a210a200f200e4102746a41c8056a280200210f0c010b0b2014200f20124105746a220641e8026a29030054200c200641f0026a290300221454200c2014511b450d022009200541286a22062903003703002016200541206a22102903003703002017200541186a22122903003703002018200541106a22132903003703002019200541086a220f29030037030020032005290300370300200d290300210c200d41086a2903002114200d41106a2903002115200d41186a290300210b200d41206a290300211a2006200d41286a2903003703002010201a3703002012200b37030020132015370300200f20143703002005200c370300200721050c010b0b2005201141e89ac5001036000b201141014b0d000b0b200341306a24000f0b201120014190bdc7001036000bfc1e03107f027e107f230041306b22032400410021042001413249210541012106024003400240024020062001490d00410021070c010b20022802002802002802002208280200210941012107034002402009450d002006417f6a210a2000200641306c6a210b2008280204210c2009210d02400340200d41086a210e200d2f0106220f4105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a210f0b0240200c0d0042002113420021140c030b200c417f6a210c200d200f4102746a41c8056a280200210d0c010b0b200d20114105746a221041f0026a2903002114201041e8026a29030021130b2009450d002000200a41306c6a210b2008280204210c2009210d0340200d41086a210e200d2f0106220f4105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a210f0b200c450d02200c417f6a210c200d200f4102746a41c8056a280200210d0c010b0b2013200d20114105746a221041e8026a2903005a2014201041f0026a29030022135a20142013511b450d020b41012110200641016a2206200149210720062001470d000c030b0b2006200146211020050d0120062001460d0102400240024002402006417f6a221020014f0d002007410171450d012000201041306c6a220b2903002114200b2000200641306c6a220d290300370300200341286a2207200b41286a2215290300370300200341206a2208200b41206a2216290300370300200341186a220a200b41186a2217290300370300200341106a2218200b41106a2219290300370300200341086a221a200b41086a221b290300370300201b200d41086a221c2903003703002019200d41106a221d2903003703002017200d41186a221e2903003703002016200d41206a221f2903003703002015200d41286a222029030037030020032014370300200d200329030037030020202007290300370300201f2008290300370300201e200a290300370300201d2018290300370300201c201a29030037030020064102490d03200228020028020028020022212802002209450d0320002006417e6a222241306c6a210c202128020421232009210f02400340200f41086a210e200f2f010622244105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21240b024020230d0042002113420021140c030b2023417f6a2123200f20244102746a41c8056a280200210f0c010b0b200f20114105746a221041f0026a2903002114201041e8026a29030021130b2009450d032021280204210f0340200941086a210e20092f010622234105742110410021110240024003402010450d01200c200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21230b200f450d05200f417f6a210f200920234102746a41c8056a28020021090c010b0b2013200920114105746a221041e8026a2903005a2014201041f0026a29030022135a20142013511b0d03200b2903002114200b200c2903003703002007201529030037030020082016290300370300200a201729030037030020182019290300370300201a201b290300370300201b200c41086a2903003703002019200c41106a2903003703002017200c41186a2903003703002016200c41206a2903003703002015200c41286a29030037030020032014370300024020220d00410021220c030b20022802002802002802002216280200220c450d022006417d6a21152016280204210f200c210b02400340200b41086a210e200b2f010622094105742110410021110240024003402010450d012003200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21090b0240200f0d0042002113420021140c030b200f417f6a210f200b20094102746a41c8056a280200210b0c010b0b200b20114105746a221041f0026a2903002114201041e8026a29030021130b200c450d022000201541306c6a210b2016280204210f0340200c41086a210e200c2f010622094105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21090b200f450d04200f417f6a210f200c20094102746a41c8056a280200210c0c010b0b202221102013200c20114105746a220e41e8026a2903005a2014200e41f0026a29030022135a20142013511b0d02024003402000201041306c6a221020002015222241306c6a220e290300370300201041286a200e41286a290300370300201041206a200e41206a290300370300201041186a200e41186a290300370300201041106a200e41106a290300370300201041086a200e41086a2903003703002022450d0120022802002802002802002216280200220c450d042022417f6a21152016280204210f200c210b02400340200b41086a210e200b2f010622094105742110410021110240024003402010450d012003200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21090b0240200f0d0042002113420021140c030b200f417f6a210f200b20094102746a41c8056a280200210b0c010b0b200b20114105746a221041f0026a2903002114201041e8026a29030021130b200c450d042000201541306c6a210b2016280204210f0340200c41086a210e200c2f010622094105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21090b200f450d06200f417f6a210f200c20094102746a41c8056a280200210c0c010b0b202221102013200c20114105746a220e41e8026a290300542014200e41f0026a29030022135420142013511b0d000c040b0b410021220c020b201020014180bdc7001036000b200620014190bdc7001036000b2000202241306c6a22102003290300370300201041286a2007290300370300201041206a2008290300370300201041186a200a290300370300201041106a2018290300370300201041086a201a2903003703000b200441016a21040240200120066b22164102490d0020022802002802002802002217280200220f450d00200d41306a210b20172802042109200f210c02400340200c41086a210e200c2f010622154105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21150b024020090d0042002113420021140c030b2009417f6a2109200c20154102746a41c8056a280200210c0c010b0b200c20114105746a221041f0026a2903002114201041e8026a29030021130b200f450d002017280204210c0340200f41086a210e200f2f010622094105742110410021110240024003402010450d01200d200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21090b200c450d02200c417f6a210c200f20094102746a41c8056a280200210f0c010b0b2013200f20114105746a221041e8026a2903005a2014201041f0026a29030022135a20142013511b0d00200d2903002114200d200b290300370300200720202903003703002008201f290300370300200a201e2903003703002018201d290300370300201a201c290300370300201c200b41086a290300370300201d200b41106a290300370300201e200b41186a290300370300201f200b41206a2903003703002020200b41286a2903003703002003201437030041012109024020164103490d0020022802002802002802002219280200220f450d00200d41e0006a210b20192802042115200f210c02400340200c41086a210e200c2f010622174105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21170b024020150d0042002113420021140c030b2015417f6a2115200c20174102746a41c8056a280200210c0c010b0b200c20114105746a221041f0026a2903002114201041e8026a29030021130b200f450d002019280204210b0340200f41086a210e200f2f0106220c4105742110410021110240024003402010450d012003200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a210c0b200b450d02200b417f6a210b200f200c4102746a41c8056a280200210f0c010b0b2013200f20114105746a221041e8026a2903005a2014201041f0026a29030022135a20142013511b0d004102211702400340200d201741306c6a221041506a220e2010290300370300200e41286a201041286a290300370300200e41206a201041206a290300370300200e41186a201041186a290300370300200e41106a201041106a290300370300200e41086a201041086a290300370300201741016a221b2016460d01024020022802002802002802002219280200220c0d00201721090c030b200d201b41306c6a210b20192802042109200c210f02400340200f41086a210e200f2f010622154105742110410021110240024003402010450d01200b200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a21150b024020090d0042002113420021140c030b2009417f6a2109200f20154102746a41c8056a280200210f0c010b0b200f20114105746a221041f0026a2903002114201041e8026a29030021130b0240200c0d00201721090c030b2019280204210b0340200c41086a210e200c2f0106220f4105742110410021110240024003402010450d012003200e412010e7072212450d02201041606a2110201141016a2111200e41206a210e2012417f4a0d000b2011417f6a210f0b0240200b0d00201721090c050b200b417f6a210b200c200f4102746a41c8056a280200210c0c010b0b20172109201b21172013200c20114105746a221041e8026a290300542014201041f0026a29030022135420142013511b0d000c020b0b201721090b200d200941306c6a22102003290300370300201041286a2007290300370300201041206a2008290300370300201041186a200a290300370300201041106a2018290300370300201041086a201a2903003703000b20044105470d000b410021100b200341306a240020100bde2003147f037e067f230041c0026b220524000240024020014115490d004101210641012107024002400240034020012108200021092006200771410173210a024002400240024002400240034002400240024002402004450d00024020064101710d002000200110fb042004417f6a21040b2001410276220b41036c210c200b410174210d4100210e024020014132490d00200b200b417f6a220e2000200b4105746a2000200e4105746a412010e707220f41004822101b2211200b41016a2212200e200b20101b220b200020124105746a2000200b4105746a412010e70741004822121b220b2000200b4105746a200020114105746a412010e70722114100481b210b200d200d417f6a220e2000200d4105746a2000200e4105746a412010e707221341004822141b2215200d4101722216200e200d20141b220d200020164105746a2000200d4105746a412010e70722144100481b220d2000200d4105746a200020154105746a412010e70722154100481b210d200c200c417f6a220e2000200c4105746a2000200e4105746a412010e707221641004822171b2218200c41016a2207200e200c20171b220c200020074105746a2000200c4105746a412010e707220e4100481b220c2000200c4105746a200020184105746a412010e70722174100481b210c4102410120101b200f411f7620121b2011411f766a2013411f766a2014411f766a2015411f766a2016411f766a200e411f766a2017411f766a210e0b2000200d4105746a2000200b4105746a412010e7072210411f76200e6a2000200c4105746a2000200b200d201041004822101b220f4105746a412010e7072211411f766a210e2000200c200f20114100481b220c4105746a2000200d200b20101b22174105746a412010e707417f4c0d01200c21170c020b2000200110fc040c0f0b200e41016a220e410c490d0002402001410176220c450d00200020014105746a41606a210b2000210d0340200541206a41186a220e200d41186a2210290000370300200541206a41106a220f200d41106a2211290000370300200541206a41086a2212200d41086a22132900003703002005200d290000370320200b41086a22142900002119200b41106a2215290000211a200b41186a2216290000211b200d200b2900003700002010201b3700002011201a370000201320193700002016200e2903003700002015200f29030037000020142012290300370000200b2005290320370000200b41606a210b200d41206a210d200c417f6a220c0d000b0b20012017417f736a21174101210b0c010b200e45210b0b0240200b45200a724101710d002000200110fd040d0d0b2003450d02201720014f0d0102402003200020174105746a220b412010e70741004e0d0020002109200121080c040b200541206a41186a2213200041186a220f290000370300200541206a41106a2214200041106a2211290000370300200541206a41086a2215200041086a221229000037030020052000290000370320200b41086a220d2900002119200b41106a220c290000211a200b41186a220e290000211b2000200b290000370000200f201b3700002011201a37000020122019370000200e2013290300370000200c2014290300370000200d2015290300370000200b2005290320370000200541c0016a41186a2218200f290000370300200541c0016a41106a22072011290000370300200541c0016a41086a221c2012290000370300200520002900003703c001200041606a2116200041206a21174100210d2001210c03400240200d200c417f6a220e4f0d002017200d4105746a210b0340200541c0016a200b412010e707417f4c0d01200b41206a210b200e200d41016a220d470d000b200e210d0b2016200c4105746a210b02400340200d200c417f6a220c4f0d01200541c0016a200b412010e707210e200b41606a2210210b200e4100480d000b20132017200d4105746a220b41186a220e2900003703002014200b41106a221d2900003703002015200b41086a221e2900003703002005200b290000370320201041286a221f2900002119201041306a2220290000211a201041386a2221290000211b200b201041206a2210290000370000200e201b370000201d201a370000201e20193700002021201329030037000020202014290300370000201f201529030037000020102005290320370000200d41016a210d0c010b0b200020052903c001370000200f2018290300370000201120072903003700002012201c29030037000002402001200d41016a220b490d002000200b4105746a21002001200b6b220141154f0d010c0c0b0b200b200141c499c500104c000b2017200141fc99c5001036000b2008450d010b201720084f0d01200541206a41186a2214200941186a221c290000370300200541206a41106a2215200941106a221d290000370300200541206a41086a2216200941086a221e29000037030020052009290000370320200920174105746a220b41086a220d2900002119200b41106a220c290000211a200b41186a220e290000211b2009200b290000370000201c201b370000201d201a370000201e2019370000200e2014290300370000200c2015290300370000200d2016290300370000200b2005290320370000200541186a221f201c290000370300200541106a2220201d290000370300200541086a2221201e29000037030020052009290000370300200941206a210f410021182008417f6a220e450d02200f210b0340200b2005412010e70741004e0d03200b41206a210b200e201841016a2218470d000b200e21180c020b410041004180bdc7001036000b201720084190bdc7001036000b200920084105746a210d200e210c02400340200d2101200c220b20184d22070d01200b417f6a210c200141606a220d2005412010e707417f4a0d000b0b0240200b2018490d00200e200b490d024180012112410021004100210d410021104100210b4180012113200f20184105746a2206210f034002402001200f6b220c419fc0004b22170d00200c410576220c41807f6a200c200d200049200b201049220e7222111b210c02402011450d002013200c200e1b2113200c2012200e1b21120c010b200c200c41017622136b21120b0240200b2010470d00024020130d00200541c0006a2210210b0c010b4100210c200541c0006a220b2110200f210e03402010200c3a00002010200e2005412010e707417f73411f766a2110200e41206a210e2013200c41016a220c470d000b0b0240200d2000470d00024020120d00200541c0016a2200210d0c010b200141606a210c4100210e200541c0016a220d210003402000200e3a00002000200c2005412010e707411f766a2100200c41606a210c2012200e41016a220e470d000b0b02402000200d6b220c2010200b6b220e200e200c4b1b2211450d002014200f200b2d00004105746a220c41186a2900003703002015200c41106a2900003703002016200c41086a2900003703002005200c290000370320200f200b2d00004105746a220c2001200d2d0000417f734105746a220e290000370000200c41186a200e41186a290000370000200c41106a200e41106a290000370000200c41086a200e41086a290000370000024020114101460d002011417f6a211103402001200d2d0000417f734105746a220c200f200b2d00014105746a220e290000370000200c41186a200e41186a290000370000200c41106a200e41106a290000370000200c41086a200e41086a290000370000200f200b2d00014105746a220c2001200d2d0001417f734105746a220e290000370000200c41186a200e41186a290000370000200c41106a200e41106a290000370000200c41086a200e41086a290000370000200d41016a210d200b41016a210b2011417f6a22110d000b0b2001200d2d0000417f734105746a220c2005290320370000200c41186a2014290300370000200c41106a2015290300370000200c41086a2016290300370000200d41016a210d200b41016a210b0b200120124105746b2001200d2000461b2101200f20134105746a200f200b2010461b210f20170d000b02400240200b20104f0d002001210c03402014200f2010417f6a22102d00004105746a220d41186a220e2900003703002015200d41106a22002900003703002016200d41086a22012900003703002005200d290000370320200c41606a220c41086a22112900002119200c41106a2212290000211a200c41186a2213290000211b200d200c290000370000200e201b3700002000201a37000020012019370000201320142903003700002012201529030037000020112016290300370000200c2005290320370000200b2010490d000c020b0b200f210c200d20004f0d0003402000417f6a22002d0000210b2014200c41186a220e2900003703002015200c41106a22102900003703002016200c41086a220f2900003703002005200c2900003703202001200b417f734105746a220b41086a22112900002119200b41106a2212290000211a200b41186a2213290000211b200c200b290000370000200e201b3700002010201a370000200f2019370000201320142903003700002012201529030037000020112016290300370000200b2005290320370000200c41206a210c200d2000490d000b0b20092005290300370000201c201f290300370000201d2020290300370000201e20212903003700002008200c20066b41057620186a22014d0d032014201c2900003703002015201d2900003703002016201e29000037030020052009290000370320200920014105746a220b41086a220d2900002119200b41106a220c290000211a200b41186a220e290000211b2009200b290000370000201c201b370000201d201a370000201e2019370000200e2014290300370000200c2015290300370000200d2016290300370000200b2005290320370000200820016b220d450d04200d20012001200d4b1b210c2008410376210e200b41206a2100024002402001200d417f6a220d490d002000200d2002200b200410fa04200921000c010b2009200120022003200410fa04200b2103200d21010b200c200e4f2106200141154f0d010c050b0b2018200b41d499c500104c000b200b200e41d499c500104b000b200120084190bdc7001036000b4189a7c700411c41b8a1cc001033000b20014102490d00200041606a210e4101210c03400240200c220b41016a220c4102490d002000200b4105746a22102000200b417f6a220d4105746a220b412010e707417f4a0d00200541c0016a41186a220f201041186a2211290000370300200541c0016a41106a2212201041106a2213290000370300200541c0016a41086a2214201041086a2215290000370300200520102900003703c0012010200b2900003700002015200b41086a2900003700002013200b41106a2900003700002011200b41186a290000370000410021100240200d450d00200e210b03400240200541c0016a200b412010e7074100480d00200d21100c020b200b41206a200b290000370000200b41386a200b41186a290000370000200b41306a200b41106a290000370000200b41286a200b41086a290000370000200b41606a210b200d417f6a220d0d000b0b200020104105746a220b20052903c001370000200b41186a200f290300370000200b41106a2012290300370000200b41086a20142903003700000b200e41206a210e200c2001470d000b0b200541c0026a24000beb050a067f017e017f017e017f017e017f017e017f017e230041206b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200020044105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c37000020052008370000024020032001490d00200321040c030b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200020034105746a22042900002108200020054105746a220541086a2209290000210a200541106a220b290000210c200541186a220d290000210e20042005290000370000200441186a220f2900002110200f200e370000200441106a220f290000210e200f200c370000200441086a2204290000210c2004200a370000200d2010370000200b200e3700002009200c370000200520083700002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200020044105746a22012900002108200020054105746a220041086a2205290000210a200041106a2204290000210c200041186a2203290000210e20012000290000370000200141186a220629000021102006200e370000200141106a2206290000210e2006200c370000200141086a2201290000210c2001200a370000200320103700002004200e3700002005200c370000200020083700000b200241206a24000f0b200520014190bdc7001036000b200420014180bdc7001036000be90609067f017e017f017e017f027e017f017e027f230041206b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d0220052006200020064105746a200020054105746a412010e7074100481b21060b200620014f0d03200420014f0d02200020044105746a2204200020064105746a2205412010e70741004e0d03200541086a22072900002108200541106a2209290000210a200541186a220b290000210c2004290000210d20042005290000370000200441186a220e290000210f200e200c370000200441106a220e290000210c200e200a370000200441086a2204290000210a20042008370000200b200f3700002009200c3700002007200a3700002005200d370000200621040c000b0b2006200141d89ac5001036000b2004200141e89ac5001036000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241186a2209200041186a2204290000370300200241106a220b200041106a2205290000370300200241086a220e200041086a2203290000370300200020074105746a220641086a2900002108200641106a290000210a200641186a290000210c2000290000210d200020062900003700002004200c3700002005200a370000200320083700002002200d37030041002105024002400240034020062002290300370000200641186a2009290300370000200641106a200b290300370000200641086a200e2903003700002005410174220641017221040240200641026a220620074f0d00200420074f0d0220062004200020044105746a200020064105746a412010e7074100481b21040b200420074f0d03200520074f0d02200020054105746a2205200020044105746a2206412010e70741004e0d032009200541186a2203290000370300200b200541106a2210290000370300200e200541086a2211290000370300200641086a2900002108200641106a290000210a200641186a290000210c2005290000210d200520062900003700002003200c3700002010200a370000201120083700002002200d370300200421050c000b0b2004200741d89ac5001036000b2005200741e89ac5001036000b200741014b0d000b0b200241206a24000f0b200720014190bdc7001036000bd408030b7f017e0a7f230041c0006b22022400200041c0006a2103200041a07f6a21042001417f6a2105200141324921064101210741002108024003400240024020072001490d00410021090c010b41012109200020074105746a220a200a41606a412010e7074100480d0003404101210b20052007460d03200741016a2107200a41206a220b200a412010e7072109200b210a2009417f4a0d000b200720014921090b2007200146210b20060d0120072001460d010240024002402007417f6a220a20014f0d0002402009450d0020002007410574220c6a220b290000210d200b2000200a4105746a220a290000370000200a200d370000200b41086a220e290000210d200e200a41086a220f290000370000200f200d370000200b41106a2210290000210d2010200a41106a22112900003700002011200d370000200b41186a2212290000210d2012200a41186a22132900003700002013200d37000020074102490d03200a20002007417e6a22094105746a2214412010e707417f4a0d03200a290000210d200a2014290000370000200241206a41186a22152013290000370300200241206a41106a22162011290000370300200241206a41086a2217200f290000370300200f201441086a2900003700002011201441106a2900003700002013201441186a2900003700002002200d3703204100210f2009450d022004200c6a210a03400240200241206a200a412010e7074100480d002009210f0c040b200a41206a200a290000370000200a41386a200a41186a290000370000200a41306a200a41106a290000370000200a41286a200a41086a290000370000200a41606a210a2009417f6a22090d000c030b0b200720014190bdc7001036000b200a20014180bdc7001036000b2000200f4105746a220a2002290320370000200a41186a2015290300370000200a41106a2016290300370000200a41086a20172903003700000b200841016a21080240200120076b220f4102490d00200b41206a220a200b412010e707417f4a0d00200b290000210d200b200a290000370000200241206a41186a22112012290000370300200241206a41106a22132010290000370300200241206a41086a2214200e290000370300200e200a41086a2900003700002010200a41106a2900003700002012200a41186a2900003700002002200d3703204101210a0240200f4103490d00200b41c0006a200241206a412010e707417f4a0d002003200c6a210a4103210e02400340200a41606a2209200a290000370000200941186a200a41186a290000370000200941106a200a41106a290000370000200941086a200a41086a290000370000200f200e2209460d01200941016a210e200a41206a220a200241206a412010e7074100480d000b0b2009417f6a210a0b200b200a4105746a220a2002290320370000200a41186a2011290300370000200a41106a2013290300370000200a41086a20142903003700000b20084105470d000b4100210b0b200241c0006a2400200b0b8709010f7f23004190036b2204240002400240200141046a28020022052f01062206410b490d002001280208210720012802002108200441306a410041e00210e6071a200441286a22064100360200200441206a22094200370300200441186a220a4200370300200441106a220b4200370300200441086a220c42003703002004420037030002404194031027220d450d00200d41003b0106200d4100360200200d41086a200441306a41e00210e407210e200d4190036a2006280200360200200d4188036a2009290300370200200d4180036a200a290300370200200d41f8026a200b290300370200200d41f0026a200c290300370200200d20042903003702e802200441306a41086a2209200541d0016a290000370300200441306a41106a220f200541d8016a290000370300200441306a41186a2210200541e0016a290000370300200420052900c8013703302005280280032111200e200541e8016a20052f010641796a220641057410e407210e200d41e8026a20054184036a200641027410e4072112200541063b0106200d20063b0106200a2010290300370300200b200f290300370300200c20092903003703002004200429033037030002400240200128020c22014107490d00200d41066a210a200e2001417a6a220c4105746a200e200141796a22014105746a220b200641ffff037120016b41057410e5071a200b41186a200241186a290000370000200b41106a200241106a290000370000200b41086a200241086a290000370000200b20022900003700002012200c4102746a2106201220014102746a21020c010b200541086a220a200141016a220b4105746a200a20014105746a2206200541066a220a2f010020016b41057410e5071a200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a29000037000020062002290000370000200541e8026a220620014102746a21022006200b4102746a2106200121010b20062002200a2f010020016b41027410e5071a20022003360200200041013a00002000200236023c200041386a4100360200200041346a200d360200200041306a20113602002000412c6a2007360000200041286a2005360000200041246a200836000020002004290300370001200041096a200441086a290300370000200041116a200441106a290300370000200041196a200441186a290300370000200a200a2f010041016a3b01000c020b1030000b200541086a220a200128020c220d41016a220b4105746a200a200d4105746a220a2006200d6b41057410e5071a200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a290000370000200a2002290000370000200541e8026a2202200b4102746a2002200d4102746a220220052f0106200d6b41027410e5071a20022003360200200520052f010641016a3b0106200441306a410b6a200141086a280000360000200041003a00002000200236023c200041106a200d3600002004200129000037003320002004290030370001200041086a200441376a2900003700000b20044190036a24000be60b020f7f047e23004180046b220624000240024020012802002207417f6a2005470d000240024002400240200141046a28020022082f01062209410b490d002001280208210a200641c0006a410272410041be0310e6071a41c4031027220b450d05200b4100360200200b41046a200641c0006a41c00310e4071a200641c0006a41186a220c200841e0016a290000370300200641c0006a41106a220d200841d8016a290000370300200641c0006a41086a220e200841d0016a290000370300200620082900c801370340200828028003210f200b41086a200841e8016a20082f0106221041796a220541057410e4072111200b41e8026a20084184036a200541027410e4072112200b4194036a200841b0036a2010417a6a221341027410e4072114200841063b0106200b20053b010602402013450d00410021052014211003402010280200220920053b01042009200b360200201041046a21102013200541016a2205470d000b0b200641206a41186a200c2903002215370300200641206a41106a200d2903002216370300200641206a41086a200e2903002217370300200620062903402218370320200641186a2015370300200641106a2016370300200641086a201737030020062018370300200128020c22054107490d0120112005417a6a22014105746a2011200541796a22104105746a2209200b2f010620106b41057410e5071a200941186a200241186a290000370000200941106a200241106a290000370000200941086a200241086a290000370000200920022900003700002012200141027422096a201220104102746a2213200b2f010620106b41027410e5071a20132003360200200b200b2f010641016a22133b01062005410274220220146a416c6a201420096a2205201341ffff037120016b41027410e5071a200520043602002001200b2f010622134b0d022002200b6a41fc026a2105034020052802002209201041016a22103b01042009200b360200200541046a210520102013490d000c030b0b200841086a2205200128020c221341016a22104105746a200520134105746a2205200920136b41057410e5071a200541186a200241186a290000370000200541106a200241106a290000370000200541086a200241086a29000037000020052002290000370000200841e8026a22092010410274220b6a2009201341027422056a220920082f010620136b41027410e5071a20092003360200200820082f010641016a22093b0106200520084194036a22026a41086a2002200b6a220b200941ffff037120106b41027410e5071a200b20043602000240201020082f0106220b4b0d00200820056a4198036a210520132110034020052802002209201041016a22103b010420092008360200200541046a21052010200b490d000b0b200041003a0000200041046a2001290200370200200041106a20133602002000410c6a200141086a2802003602000c020b200841086a2210200541016a22094105746a201020054105746a221020082f010620056b41057410e5071a201041186a200241186a290000370000201041106a200241106a290000370000201041086a200241086a29000037000020102002290000370000200841e8026a2213200941027422016a2013200541027422106a221320082f010620056b41027410e5071a20132003360200200820082f010641016a22133b0106201020084194036a22026a41086a200220016a2201201341ffff037120096b41027410e5071a20012004360200200520082f010622134f0d00200820106a4198036a2110034020102802002209200541016a22053b010420092008360200201041046a211020132005470d000b0b20002006290300370001200041013a00002000412c6a200a360200200041286a2008360200200041246a2007360200200041386a2007360200200041346a200b360200200041306a200f360200200041096a200641086a290300370000200041116a200641106a290300370000200041196a200641186a2903003700000b20064180046a24000f0b41cc9ec800413541b8a1cc001033000b1030000b8b0503027f017e057f230041d0006b2202240041d5bec500ad4280808080f00084100122032900002104200241086a200341086a290000370300200220043703002003102941d08bc500ad4280808080800184100122032900002104200241106a41086a200341086a29000037030020022004370310200310292002200136022c2002412c6aad4280808080c00084100522032900002104200241306a41086a200341086a2900003703002002200437033020031029200241cc006a200241306a3602002002200241c0006a36024420022002412c6a3602482002200241306a360240200241206a200241c0006a107502400240024002402002280228220541206a2206417f4c0d00200228022021070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290300370000200341086a200241086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a20002006360208200020083602042000200336020002402002280224450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b130020004105360204200041f0e6ca003602000b130020004103360204200041f09fc8003602000b130020004102360204200041b4f8c4003602000b130020004105360204200041ace3c2003602000b130020004109360204200041fcb8c0003602000b130020004101360204200041d4aac0003602000b130020004101360204200041b4adc0003602000b13002000410336020420004190a8c0003602000b130020004103360204200041e0b7c7003602000b3400200041c99fc50036020420004100360200200041146a410f360200200041106a41e882c700360200200041086a42093702000b13002000411f36020420004180f2c5003602000b130020004111360204200041c4e1c5003602000b130020004108360204200041d0d5c5003602000b130020004127360204200041e4bfc5003602000b1300200041073602042000418cd7c8003602000b13002000410536020420004180eeca003602000b130020004106360204200041d0e8c9003602000b13002000410b360204200041a8dec9003602000b1300200041073602042000418ca0c4003602000b130020004102360204200041a488cc003602000b130020004101360204200041c4ebc3003602000b130020004102360204200041e8b3c7003602000b130020004107360204200041ecd6c2003602000b1300200041033602042000418cb1c7003602000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241e4003600000b3601017f02404110102722020d001039000b2002420037000820024280c2d72f370000200042908080808002370204200020023602000b2e01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241c093063600000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241880e3600000b3801017f02404110102722020d001039000b2002420037000820024280a094a58d1d370000200042908080808002370204200020023602000b2e01017f02404104102722020d001039000b20004284808080c0003702042000200236020020024180ce183600000b2e01017f02404104102722020d001039000b20004284808080c000370204200020023602002002418084073600000b7c01017f230041f0006b22022400200241106a4200370300200241186a4200370300200241206a4200370300200241286a4200370300200241306a4200370300200241386a4200370300200241c0006a410036020020024108360204200241086a4200370300200241003a00002000200210a105200241f0006a24000b8d1802097f027e230041206b220224002002410036020820024201370300024002400240024020012d00004101460d00410110272203450d032002410136020420022003360200200341003a000020024101360208200141046a28020021042001410c6a2802002203200210710240024020030d0020022802042105200228020821060c010b2004200341306c6a2107200228020421052002280208210603402004280200210802400240200520066b4104490d00200641046a2103200228020021090c010b200641046a22032006490d05200541017422092003200920034b1b220a4100480d050240024020050d000240200a0d00410121090c020b200a102722090d010c080b200228020021092005200a460d0020092005200a102b2209450d070b2002200a360204200220093602000b200920066a20083600002002200336020802400240200441086a2d00004101460d00200241003a00100240024020022802042003460d00200228020021050c010b200341016a22052003490d07200341017422062005200620054b1b22064100480d070240024020030d0041002103024020060d00410121050c020b200610272205450d0a0c010b2002280200210520032006460d00200520032006102b2205450d090b20022006360204200220053602000b200520036a41003a00002002200341016a22033602082002200441096a2d00004100474107742004410a6a2d00007222063a00100240024020022802042003460d00200228020021050c010b200341016a22052003490d07200341017422092005200920054b1b22094100480d070240024020030d0041002103024020090d00410121050c020b200910272205450d0a0c010b2002280200210520032009460d00200520032009102b2205450d090b20022009360204200220053602000b200520036a20063a00002002200341016a2203360208200441106a290300210b2002200441186a2903003703182002200b370310200241106a2109200228020421060c010b200241013a00100240024020022802042003460d00200228020021050c010b200341016a22052003490d06200341017422062005200620054b1b22064100480d060240024020030d0041002103024020060d00410121050c020b200610272205450d090c010b2002280200210520032006460d00200520032006102b2205450d080b20022006360204200220053602000b200520036a41013a00002002200341016a2205360208200441186a290300210b200441106a290300210c024002402002280204220920056b4110490d00200341116a210320022802002108200921060c010b200541106a22032005490d06200941017422062003200620034b1b22064100480d060240024020090d00024020060d00410121080c020b200610272208450d090c010b2002280200210820092006460d00200820092006102b2208450d080b20022006360204200220083602000b200820056a2205200b3700082005200c37000020022003360208200441206a290300210b2002200441286a2903003703182002200b370310200241106a21090b02400240200620036b4110490d0020022802002108200621050c010b200341106a22052003490d05200641017422082005200820054b1b22054100480d050240024020060d00024020050d00410121080c020b200510272208450d080c010b2002280200210820062005460d00200820062005102b2208450d070b20022005360204200220083602000b200820036a22062009290000370000200641086a200941086a2900003700002002200341106a22063602082007200441306a2204470d000b0b200141186a290300210b2001290310210c02400240200520066b4110490d0020022802002103200521040c010b200641106a22032006490d03200541017422042003200420034b1b22044100480d030240024020050d00024020040d00410121030c020b200410272203450d060c010b2002280200210320052004460d00200320052004102b2203450d050b20022004360204200220033602000b200320066a2205200b3700082005200c3700002002200641106a2209360208200141286a290300210b200141206a290300210c02400240200420096b410f4d0d00200421050c010b200941106a22052009490d03200441017422082005200820054b1b22054100480d030240024020040d00024020050d00410121030c020b200510272203450d060c010b20042005460d00200320042005102b2203450d050b20022005360204200220033602000b200320096a2204200b3700082004200c3700002002200641206a2204360208200141c0006a28020021090240200520046b41034b0d00200441046a22082004490d032005410174220a2008200a20084b1b22084100480d030240024020050d00024020080d00410121030c020b200810272203450d060c010b20052008460d00200320052008102b2203450d050b20022008360204200220033602000b200320046a20093600002002200641246a22033602082001290330210b2002200141386a2903003703182002200b370310200241106a21040c010b410110272203450d022002410136020420022003360200200341013a000020024101360208200141306a290300210b200141286a290300210c0240024020022802042205417f6a4110490d0020022802002103200521040c010b200541017422034111200341114b1b22044100480d0220022802002103024020052004460d00200320052004102b2203450d040b20022004360204200220033602000b2003200c370001200341096a200b37000020024111360208024002402004416f6a411f4d0d00200421050c010b200441017422054131200541314b1b22054100480d02024020042005460d00200320042005102b2203450d040b20022005360204200220033602000b20032001290001370011200341296a200141196a290000370000200341216a200141116a290000370000200341196a200141096a2900003700004131210420024131360208024020012d0021220641064b0d000240024002400240024002400240024020060e0700010203040506000b410021040c060b410121040c050b410221040c040b410321040c030b410421040c020b410521040c010b410621040b200220043a0010024020054131470d002003413141e200102b2203450d04200241e200360204200220033602000b200320043a00314132210420024132360208200228020421050b200141c0006a290300210b2001290338210c02400240200520046b4110490d0020022802002103200521060c010b20054101742203200441106a2206200320064b1b22064100480d020240024020050d00200610272203450d050c010b2002280200210320052006460d00200320052006102b2203450d040b20022006360204200220033602000b200320046a2205200b3700082005200c3700002002200441106a2209360208200141d0006a290300210b200141c8006a290300210c02400240200620096b410f4d0d00200621050c010b20064101742205200441206a2208200520084b1b22054100480d020240024020060d00200510272203450d050c010b20062005460d00200320062005102b2203450d040b20022005360204200220033602000b200320096a2206200b3700082006200c3700002002200441206a2206360208200141e8006a28020021090240200520066b41034b0d0020054101742208200441246a220a2008200a4b1b22084100480d020240024020050d00200810272203450d050c010b20052008460d00200320052008102b2203450d040b20022008360204200220033602000b200320066a20093600002002200441246a22033602082001290358210b2002200141e0006a2903003703182002200b370310200241106a21040b024002402002280204220620036b4110490d00200228020021050c010b200341106a22052003490d01200641017422092005200920054b1b22094100480d010240024020060d00024020090d00410121050c020b200910272205450d040c010b2002280200210520062009460d00200520062009102b2205450d030b20022009360204200220053602000b200520036a22052004290000370000200541086a200441086a2900003700002002200341106a2203360208200041086a200336020020002002290300370200200241206a24000f0b1032000b1030000b4d01027f230041106b2202240002404104102722030d001039000b2002420437020420022003360200410020021071200041086a200228020836020020002002290300370200200241106a24000bfe0301057f230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022030d00200041033a00200c010b200241186a28020021042002280214210541002101200241003a0068024002400240034020042001460d01200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241286a41186a200241c8006a41186a290300370300200241286a41106a200241c8006a41106a290300370300200241286a41086a200241c8006a41086a2903003703002002200229034837032820042006460d01200320066a2d0000220141034f0d0120002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a2903003700000c020b200141ff0171450d00200241003a00680b20024100360230200242013703282002410d3602242002200241086a3602202002200241286a36026c200241dc006a41013602002002420137024c200241f4eaca003602482002200241206a360258200241ec006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b410321010b200020013a00202005450d00200310290b200241f0006a24000b8c0707047f017e017f017e017f017e047f230041e0016b22042400200441d8006a41186a22054200370300200441d8006a41106a22064200370300200441d8006a41086a220742003703002004420037035841c99fc500ad4280808080900184220810012209290000210a200441c8006a41086a220b200941086a2900003703002004200a370348200910292007200b2903003703002004200429034837035841948fc700ad4280808080f00184220a10012209290000210c200b200941086a2900003703002004200c3703482009102920062004290348220c370300200441106a41086a22092007290300370300200441106a41106a220d200c370300200441106a41186a220e200b29030037030020042004290358370310200441086a200441106a412010fc01200428020c210f20042802082110200542003703002006420037030020074200370300200442003703582008100122052900002108200b200541086a29000037030020042008370348200510292007200b29030037030020042004290348370358200a100122052900002108200b200541086a290000370300200420083703482005102920062004290348220837030020092007290300370300200d2008370300200e200b290300370300200420042903583703102004200f410020101b220b41016a360258200441106aad4280808080800484200441d8006aad4280808080c0008410032004413f6a4200370000200441376a42003700002004412f6a4200370000200441276a42003700002004411f6a420037000020044200370017200441d8006a41096a22062009290000370000200441e9006a200d290000370000200441f1006a200e290000370000200441f9006a200441106a41206a29000037000020044181016a200441386a29000037000020044188016a420037000020044194016a200336020020044190016a200036020020044198016a2001290000370300200441a0016a200141086a290000370300200441a8016a200141106a290000370300200441b0016a200141186a290000370300200441003a005820042004290010370059200441b8016a20023a0000200441c8006a200b10dd0420042802482101200420042802503602dc01200420013602d801200441d8006a200441d8016a10de040240200428024c450d00200110290b200441e4006a200b360200200741033a0000200441093a0058200620023a0000200441d8006a10cb01200441e0016a24000bd10102027f047e230041c0006b22022400200241306a200110a705200241106a20022802302201200228023810a8050240024020022802102203450d0020022902142104200241286a2903002105200241206a290300210602402002280234450d00200110290b2002200620052004422088420010d507200241086a29030021054201210620022903002107200442ffffff3f83500d01200310290c010b02402002280234450d00200110290b420021060b2000200737030820002006370300200041106a2005370300200241c0006a24000b900201037f230041206b2203240002400240200241c4006c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420022003107102402002450d002001200241c4006c6a21050340200320012802003602102003200341106a41041072412010272202450d032003422037021420032002360210200341106a200141046a220141201072200328021421022003200328021022042003280218107202402002450d00200410290b2003200141206a41201072200141c0006a22012005470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1038000b1039000bfc0403027f017e057f230041d0006b2202240041c99fc500ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941d29fc500ad4280808080900184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000ba70302057f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602000c010b200328021421022003200341186a28020036022420032001360220200341c8006a200341206a1096020240024020032802482204450d00200328024c21050240200328022422064110490d002003200641706a36022420032003280220220641106a360220200341c8006a41086a280200210720062900002108200041186a200641086a290000370300200041106a2008370300200041086a200736020020002005360204200020043602000c020b200541ffffff3f71450d00200410290b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602000b2002450d00200110290b200341e0006a24000be70b06037f027e027f0a7e037f067e23004180036b22042400200328020021052004200110a80220044180016a200428020022032004280208220610a9022004290380012107420021082004420037038001200441c8016a280200210920042d00cc01210a0240024020074201510d00200441106a41306a4200370300200441106a41286a4200370300200441106a41206a4200370300200441106a41186a4200370300200441206a4200370300200441186a4200370300200442003703104200210b4200210c4200210d4200210e0c010b200441b8016a290300210f20044180016a41306a290300211020044180016a41206a290300210b20044180016a41186a2903002108200441c0016a290300210e200429039001210d200429038801210c200441106a41206a20044180016a41286a290300370300200441106a41286a2010370300200441106a41306a200f370300200441206a20083703002004200b3703282004200c3703102004200d3703180b200441106a41186a200b200241086a2903002210200b20082002290300221156200b201056200b2010511b22021b22127d20082011200820021b220f54ad7d221337030020042008200f7d2214370320200441c8006a41186a2013370300200441c8006a41206a2215200441106a41206a290300370300200441c8006a41286a2216200441106a41286a290300370300200441c8006a41306a2217200441106a41306a290300370300200420143703582004200c3703482004200d37035002400240427f200c20147c22142014200c542202200d20137c2002ad7c2213200d542013200d511b22021b22144280c8afa025544100427f201320021b2218501b0d00200441d8006a29030021192017290300211a20162903002114201529030021182004290350211b2004290348211c420121132004290360211d0c010b4200211302402014201884500d002014201810d402200441b8026a2018370300200441b0026a201437030020044180026a41086a41013a000020044189026a200529000037000020044191026a200541086a29000037000020044199026a200541106a290000370000200441a1026a200541186a290000370000200441033a00800220044180026a10cb010b0b200441a8016a2018370300200441b0016a201437030020044190016a201b370300200441b8016a201a37030020044198016a20193703002004201d3703a0012004200e3703c0012004201c370388012004200a4100200742015122021b22053a00cc0120042009410020021b22093602c801200420134201512202ad3703800102400240024020020d002006ad4220862003ad8410040c010b410410272202450d0120022009360000200241044108102b2202450d01200220053a0004200241084115102b2202450d012002201c3700052002410d6a201b370000200441a0016a290300211b20044198016a290300211c20024115412a102b2202450d012002201c3700152002411d6a201b3700002002412a41d400102b2202450d01200220183700252002412d6a20143700002002413d6a200441c0016a2903003700002002200441b8016a2903003700352006ad4220862003ad842002ad4280808080d008841003200210290b201020127d21102011200f54ad2114427f200c20087c22082008200c542202200d200b7c2002ad7c2208200d542008200d511b22021b427f200820021b8450210202402004280204450d00200310290b201020147d21082002ad210b2011200f7d21102013420152210202400240024020074201510d0020020d004103210320044180026a21020c010b20074201522002410173720d014104210320044180016a21020b200241086a20033a0000200241003a0000200241096a2001290000370000200241116a200141086a290000370000200241196a200141106a290000370000200241216a200141186a290000370000200210cb010b2000200f3703182000200c3703082000200b370300200041306a2008370300200041286a2010370300200041206a2012370300200041106a200d37030020044180036a24000f0b1030000bb50404057f017e017f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a3602000240200441037122064103460d00024002400240024020060e03000102000b2004410276ad21070c020b41012106024020050d000c050b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d04200141fcff0371410276ad21070c010b410121060240200541034f0d000c040b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d032001410276ad21070b410021060c020b02402004410276220841044b0d000240024020080e050002020201000b20054104490d022003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c030b20054108490d01200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c020b200841046a220541084b0d002002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c030b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c010b410121060b2000200737030820002006ad3703000b840402067f047e230041206b21020240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a2207360200200541014b0d0320050e020102010b200041023a00000f0b02402006450d0020042d0001210520012003417e6a22063602042001200441026a360200200541ff0071220741064b0d0020064110490d00200041003a0000200041086a2004290002370300200041026a20073a0000200020054107763a0001200041036a2002280009360000200041186a2002290310370300200041106a2004410a6a29000037030020012003416e6a3602042001200441126a360200200041076a2002410d6a2d00003a0000200041206a200241106a41086a2903003703000f0b200041023a00000f0b200241106a41086a220542003703002002420037031020064110490d01200741086a29000021082007290000210920012003416f6a22063602042001200441116a2207360200200542003703002002420037031020064110490d01200741086a290000210a2007290000210b20012003415f6a3602042001200441216a360200200041206a200a370300200041186a200b370300200041106a2008370300200041086a2009370300200041013a000020002002280009360001200041046a2002410c6a2800003600000f0b200041023a00000f0b200041023a00000bd813020b7f057e230041f0056b22022400024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541044b0d0620050e050102030405010b200041063a00000c0b0b200241c8036a20011096020240024020022802c8032206450d0020022802cc032107024020012802042204450d00200241d0036a2802002108200128020022092d0000210520012004417f6a22033602042001200941016a220a360200200541014b0d004100210b02400240024020050e020100010b41002105200241003a00e8032004417f6a210b417e21030340200b2005460d02200241c8036a20056a200920056a220a41016a2d00003a00002001200420036a3602042001200a41026a3602002002200541016a220a3a00e8032003417f6a2103200a2105200a4120470d000b200241a0016a41186a200241c8036a41186a290300370300200241a0016a41106a200241c8036a41106a290300370300200241a0016a41086a200241c8036a41086a290300370300200220022903c8033703a001200a417f7320046a21034101210b2009200a6a41016a210a0b200241c0006a41186a2205200241a0016a41186a290300370300200241c0006a41106a2204200241a0016a41106a290300370300200241c0006a41086a2209200241a0016a41086a290300370300200220022903a00137034020034104490d03200a280000210c20012003417c6a3602042001200a41046a36020020024180016a41086a2009290300220d37030020024180016a41106a2004290300220e37030020024180016a41186a2005290300220f370300200220022903402210370380012000200b3a0001200041013a0000200041026a20103700002000410a6a200d370000200041126a200e3700002000411a6a200f370000200041306a200c3602002000412c6a2008360100200041286a2007360100200041246a20063601000c0e0b200541ff0171450d00200241003a00e8030b200041063a0000200741ffffff3f71450d0c200610290c0c0b200041063a00000c0b0b200041063a0000200741ffffff3f71450d0a200610290c0a0b200241c8036a200110e40320022802c8032105200241a0016a200241c8036a41047241a40210e4071a024002402005411c460d00200241c8036a200241a0016a41a40210e4071a41a802102722030d010c0a0b200041063a00000c0a0b20032005360200200341046a200241c8036a41a40210e4071a2002200110c801024020022802000d0020022802042101200041023a0000200020022f0080013b0001200041086a2001360200200041046a20033602002000410c6a2002290240370200200041036a20024180016a41026a2d00003a0000200041146a200241c0006a41086a2902003702002000411c6a200241d0006a290200370200200041246a200241d8006a2902003702002000412c6a200241e0006a290200370200200041346a200241e8006a2802003602000c0a0b200041063a0000200310cc01200310290c090b200241106a200110c80120022802100d052002280214210a200241c8036a200110e40320022802c8032105200241a0016a200241c8036a41047241a40210e4071a2005411c460d04200241c8036a200241a0016a41a40210e4071a41a80210272203450d0720032005360200200341046a200241c8036a41a40210e4071a200241086a200110c801024020022802080d00200228020c2101200041033a0000200020022f0080013b00012000410c6a2001360200200041086a2003360200200041046a200a360200200041106a2002290340370300200041036a20024182016a2d00003a0000200041186a200241c0006a41086a290300370300200041206a200241c0006a41106a290300370300200041286a200241c0006a41186a290300370300200041306a200241c0006a41206a2903003703000c090b200041063a0000200310cc01200310290c080b41002105200241003a00e8032003417f6a21092003417e6a21030240024002400240034020092005460d01200241c8036a20056a200420056a220a41016a2d00003a0000200120033602042001200a41026a3602002002200541016a220a3a00e8032003417f6a2103200a2105200a4120470d000b200241c0006a41086a200241c8036a41086a290300370300200241c0006a41106a200241c8036a41106a290300370300200241c0006a41186a200241c8036a41186a290300370300200220022903c803370340200241186a200110c80120022802180d0120012802042203450d01200228021c21042001280200220a2d0000210520012003417f6a3602042001200a41016a360200200541014b0d014100210120050e020302030b200541ff0171450d00200241003a00e8030b200041063a00000c090b410121010b20024180016a41186a200241c0006a41186a290300220d37030020024180016a41106a200241c0006a41106a290300220e37030020024180016a41086a200241c0006a41086a290300220f37030020022002290340221037038001200041043a000020002010370001200041096a200f370000200041116a200e370000200041196a200d370000200041246a2004360200200041216a20013a0000200041286a2002290370370300200041306a200241f0006a41086a2903003703000c070b41002105200241003a00e8032003417f6a21092003417e6a21030240034020092005460d01200241c8036a20056a200420056a220a41016a2d00003a0000200120033602042001200a41026a3602002002200541016a220a3a00e8032003417f6a2103200a2105200a4120470d000b200241c0006a41086a200241c8036a41086a290300370300200241c0006a41106a200241c8036a41106a290300370300200241c0006a41186a200241c8036a41186a290300370300200220022903c803370340200241386a200110c8012002280238450d020c050b200541ff0171450d04200241003a00e8030c040b200041063a00000c050b200228023c2105200241286a200110aa052002290328a70d022002290330210d200241206a200110c80120022802200d022002280224210120024180016a41186a200241c0006a41186a290300220e37030020024180016a41106a200241c0006a41106a290300220f37030020024180016a41086a200241c0006a41086a290300221037030020022002290340221137038001200041053a000020002011370001200041096a2010370000200041116a200f370000200041196a200e370000200041216a20022f00703b0000200041236a200241f2006a2d00003a0000200041306a200d370300200041286a2001360200200041246a20053602000c040b200041063a00000c030b200041063a00000c020b200041063a00000c010b1030000b200241f0056a24000bab0b04057f017e017f037e230041a0056b2202240002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541034b0d0520050e0401020304010b200041053a00000c070b200241f8026a200110e40320022802f8022101200241d0006a200241f8026a41047241a40210e4071a024002402001411c460d00200241f8026a200241d0006a41a40210e4071a41a802102722050d010c070b200041053a00000c070b20052001360200200541046a200241f8026a41a40210e4071a200041013a0000200020022f00103b0001200041036a200241126a2d00003a0000200041046a2005360200200041086a2002290330370300200041106a200241306a41086a290300370300200041186a200241306a41106a290300370300200041206a200241306a41186a2903003703000c060b200241f8026a200110e40320022802f8022105200241d0006a200241f8026a41047241a40210e4071a2005411c460d03200241f8026a200241d0006a41a40210e4071a41a80210272203450d0420032005360200200341046a200241f8026a41a40210e4071a0240200128020422054108490d002001280200220629000021072001200541786a3602042001200641086a360200200041023a0000200020022f00103b0001200041036a200241106a41026a2d00003a0000200041086a2007370300200041046a2003360200200041106a2002290330370300200041186a200241306a41086a290300370300200041206a200241306a41106a2903003703000c060b200041053a0000200310cc01200310290c050b41002105200241003a0098032003417f6a21082003417e6a21030240034020082005460d01200241f8026a20056a200420056a220641016a2d00003a0000200120033602042001200641026a3602002002200541016a22063a0098032003417f6a21032006210520064120470d000b200241306a41086a200241f8026a41086a2903002207370300200241306a41106a200241f8026a41106a2903002209370300200241306a41186a200241f8026a41186a290300220a370300200220022903f802220b370330200041033a00002000200b370001200041096a2007370000200041116a2009370000200041196a200a370000200041216a2002280010360000200041246a200241106a41036a2800003600000c050b0240200541ff0171450d00200241003a0098030b200041053a00000c040b41002105200241003a0098032003417f6a21082003417e6a210302400240034020082005460d01200241f8026a20056a200420056a220641016a2d00003a0000200120033602042001200641026a3602002002200541016a22063a0098032003417f6a21032006210520064120470d000b200241306a41086a200241f8026a41086a290300370300200241306a41106a200241f8026a41106a290300370300200241306a41186a200241f8026a41186a290300370300200220022903f802370330200241f8026a200110e40320022802f8022101200241d0006a200241f8026a41047241a40210e4071a2001411c460d01200241f8026a200241d0006a41a40210e4071a41a80210272205450d0420052001360200200541046a200241f8026a41a40210e4071a200241106a41186a200241306a41186a2903002207370300200241106a41106a200241306a41106a2903002209370300200241106a41086a200241306a41086a290300220a37030020022002290330220b370310200041043a00002000200b370001200041096a200a370000200041116a2009370000200041196a2007370000200041216a20022f000d3b0000200041236a2002410f6a2d00003a0000200041246a20053602000c050b200541ff0171450d00200241003a0098030b200041053a00000c030b200041053a00000c020b200041053a00000c010b1030000b200241a0056a24000b8d0201067f024002400240200128020422020d00410121030c010b200128020022042d0000210520012002417f6a2206360204410121032001200441016a360200200541037122074103460d0002400240024020070e03020100020b20064103490d02200441036a2d0000210720042f0001210620012002417c6a3602042001200441046a360200200620074110747241087420057222024180807c6a41ffff0b4b0d0320024102762101410021030c030b2006450d0120042d0001210320012002417e6a3602042001200441026a360200200341087420057241ffff03712201418002492103200141027621010c020b20054102762101410021030c010b0b200020013b0102200020033b01000b892903137f067e127f230041f0036b220324000240024002400240024002400240024002400240024002400240024020012d00000e050001020304000b200341b4016a4101360200200342013702a40120034198e3ca003602a001200341043602cc03200341cce3ca003602c8032003200341c8036a3602b001200341a0016a4180a6cc001040000b200141046a280200210120022d00000d0320022d00014101470d03200241196a2d00002104200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f0100211520032002411a6a290100370370200320043a006f200320053a006e200320063b016c200320073a006b200320083a006a200320093b01682003200a3a00672003200b3a00662003200c3b01642003200d3a00632003200e3a00622003200f3b0160200320103a005f200320113a005e200320123b015c200320133a005b200320143a005a200320153b01584188dac700ad4280808080c00084100122022900002116200229000821172002102941b789cb00ad428080808030841001220229000021182002290008211920021029200320193701e003200320183701d803200320173701d003200320163701c803200341a0016a200341c8036a412010cd010240024020032d00a0014101460d00200341e0036a4200370300200341d8036a4200370300200341d0036a4200370300200342003703c8030c010b200320032900a1013703c8032003200341b9016a2900003703e0032003200341a9016a2900003703d0032003200341b1016a2900003703d8030b0240200341d8006a200341c8036a412010e7070d00200341a0016a200141a80210e4071a200341003b01c803200341f8006a200341a0016a200341c8036a10c50120032003290091013703a0012003200341f8006a41206a2800003600a701024020032903784201510d00410421020c0b0b20034190016a2d000021042003290380012116200320032800a70136003f200320032903a0013703384104210220164202510d0a2003200328003f36000f20032003290338370308200421020c0a0b200110cc012001102941833c21020c080b200141046a280200210120022d00000d0320022d00014101470d03200241196a2d00002104200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f0100211520032002411a6a290100370370200320043a006f200320053a006e200320063b016c200320073a006b200320083a006a200320093b01682003200a3a00672003200b3a00662003200c3b01642003200d3a00632003200e3a00622003200f3b0160200320103a005f200320113a005e200320123b015c200320133a005b200320143a005a200320153b01584188dac700ad4280808080c00084100122022900002116200229000821172002102941b789cb00ad428080808030841001220229000021182002290008211920021029200320193701e003200320183701d803200320173701d003200320163701c803200341a0016a200341c8036a412010cd010240024020032d00a0014101460d00200341e0036a4200370300200341d8036a4200370300200341d0036a4200370300200342003703c8030c010b200320032900a1013703c8032003200341b9016a2900003703e0032003200341a9016a2900003703d0032003200341b1016a2900003703d8030b0240200341d8006a200341c8036a412010e7070d00200341a0016a200141a80210e4071a200341003b01c803200341f8006a200341a0016a200341c8036a10c50120032003290091013703a0012003200341f8006a41206a2800003600a701024020032903784201510d00410421020c080b20034190016a2d000021042003290380012116200320032800a70136003f200320032903a0013703384104210220164202510d072003200328003f36000f20032003290338370308200421020c070b200110cc012001102941833c21020c050b200341086a41186a200141196a290000370300200341086a41106a200141116a290000370300200341086a41086a200141096a290000370300200320012900013703080240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002105200241156a2d00002106200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a290100370370200320013a006f200320043a006e200320053b016c200320063a006b200320073a006a200320083b0168200320093a00672003200a3a00662003200b3b01642003200c3a00632003200d3a00622003200e3b01602003200f3a005f200320103a005e200320113b015c200320123a005b200320133a005a200320143b01584188dac700ad4280808080c00084100122022900002116200229000821172002102941b789cb00ad428080808030841001220229000021182002290008211920021029200320193701e003200320183701d803200320173701d003200320163701c803200341a0016a200341c8036a412010cd010240024020032d00a0014101460d00200341e0036a4200370300200341d8036a4200370300200341d0036a4200370300200342003703c8030c010b200320032900a1013703c8032003200341b9016a2900003703e0032003200341a9016a2900003703d0032003200341b1016a2900003703d8030b0240200341d8006a200341c8036a412010e707450d0041833c21020c020b200341f8006a41186a2201200341086a41186a290300370300200341f8006a41106a2204200341086a41106a290300370300200341f8006a41086a2205200341086a41086a290300370300200320032903083703784188dac700ad4280808080c000842216100122022900002117200229000821182002102941b789cb00ad42808080803084221910012202290000211a2002290008211b200210292003201b3701e0032003201a3701d803200320183701d003200320173701c803200341a0016a200341c8036a412010cd010240024020032d00a0014101460d004100210242002117410021064100210741002108410021094100210a4100210b4100210c4100210d4100210e4100210f4100211041002111410021124100211341002114410021154100211c0c010b200341a0016a41086a2d00002111200341a9016a2f00002110200341ab016a2d0000210f200341ac016a2d0000210e200341ad016a2f0000210d200341af016a2d0000210c200341a0016a41106a2d0000210b200341b1016a2f0000210a200341b3016a2d00002109200341b4016a2d00002108200341b5016a2f00002107200341b7016a2d00002106200341a0016a41186a2d00002102200341b9016a290000211720032f00a101211c20032d00a301211520032d00a401211420032f00a501211320032d00a70121120b200341bd016a2017370000200341bc016a20023a0000200341bb016a20063a0000200341b9016a20073b0000200341a0016a41186a220220083a0000200341b7016a20093a0000200341b5016a200a3b0000200341b3016a200c3a0000200341b1016a200d3b0000200341a0016a41106a2206200e3a0000200341af016a200f3a0000200341ad016a20103b0000200341ac016a20113a0000200341ab016a20123a0000200341a9016a20133b0000200341a0016a41086a220720143a0000200341143a00a001200341a0016a41146a200b3a0000200320153a00a7012003201c3b00a501200341013a00a401200341a0016a10cb01200220012903003703002006200429030037030020072005290300370300200320032903783703a001201610012202290000211620022900082117200210292019100122022900002118200229000821192002102920032019370150200320183701482003201737014020032016370138412010272202450d05200220032903a001370000200241186a200341a0016a41186a290300370000200241106a200341a0016a41106a290300370000200241086a200341a0016a41086a290300370000200341386aad42808080808004842002ad42808080808004841003200210290c0a0b41823c21020b20004200370308200041206a410b3602002000411c6a41d8b0c700360200200041186a2002360200420121160c090b200141246a28020021040240024002400240024020022d00000d0020022d00014101470d00200141196a290000211a200141186a2d0000211c200141176a2d0000211d200141156a2f0000211e200141146a2d0000211f200141136a2d00002120200141116a2f00002121200141106a2d000021222001410f6a2d000021232001410d6a2f000021242001410c6a2d000021252001410b6a2d00002126200141096a2f00002127200141086a2d00002128200141076a2d00002129200141056a2f0000212a200141046a2d0000212b200141036a2d0000212c20012f0001212d200241196a2d00002101200241186a2d00002105200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f0100211520032002411a6a290100370370200320013a006f200320053a006e200320063b016c200320073a006b200320083a006a200320093b01682003200a3a00672003200b3a00662003200c3b01642003200d3a00632003200e3a00622003200f3b0160200320103a005f200320113a005e200320123b015c200320133a005b200320143a005a200320153b01584188dac700ad4280808080c00084100122022900002116200229000821172002102941b789cb00ad428080808030841001220229000021182002290008211920021029200320193701e003200320183701d803200320173701d003200320163701c803200341a0016a200341c8036a412010cd010240024020032d00a0014101460d00200341e0036a4200370300200341d8036a4200370300200341d0036a4200370300200342003703c8030c010b200320032900a1013703c8032003200341b9016a2900003703e0032003200341a9016a2900003703d0032003200341b1016a2900003703d8030b0240200341d8006a200341c8036a412010e707450d00200410cc012004102941833c21020c020b2003201a3701502003201c3a004f2003201d3a004e2003201e3b014c2003201f3a004b200320203a004a200320213b0148200320223a0047200320233a0046200320243b0144200320253a0043200320263a0042200320273b0140200320283a003f200320293a003e2003202a3b013c2003202b3a003b2003202c3a003a2003202d3b0138200341a0016a200441a80210e4071a200341d2036a2003290140370100200341da036a2003290148370100200341e2036a200329015037010020034180023b01c803200320032901383701ca03200341f8006a200341a0016a200341c8036a10c5014101210220032903784201520d04200341a0016a41186a20034198016a290300370300200341a0016a41106a2202200341f8006a41186a290300370300200341a8016a200341f8006a41106a29030037030020032003290380013703a001200210ff0541e0a3c800ad4280808080a001841008419aa1c000ad4280808080e00184100820032903a0014201510d024190a1c000ad4280808080a0018410080c030b200410cc012004102941823c21020b20004200370308200041206a410b3602002000411c6a41d8b0c700360200200041186a2002360200420121160c0b0b20032903a80110160b410021020b200320023a00a501200341023a00a401200341143a00a001200341a0016a10cb01200410290c070b200110cc012001102941823c21020c040b200110cc012001102941823c21020c010b1039000b20004200370308200041206a410b3602002000411c6a41d8b0c700360200200041186a2002360200420121160c040b200320032903083703282003200328000f36002f200341a0016a41086a20023a0000200341a9016a2003290328370000200341a0016a41106a200328002f360000200341003a00a401200320032f00353b00a5012003200341376a2d00003a00a701200341143a00a001200341a0016a41146a20032902c803370200200341bc016a200341c8036a41086a290200370200200341c4016a200341c8036a41106a280200360200200341a0016a10cb01200110290c020b20004200370308200041206a410b3602002000411c6a41d8b0c700360200200041186a2002360200420121160c020b200320032903083703282003200328000f36002f200341a0016a41086a20023a0000200341a9016a2003290328370000200341a0016a41106a200328002f360000200341003a00a401200320032f00353b00a5012003200341376a2d00003a00a701200341143a00a001200341a0016a41146a20032902c803370200200341bc016a200341c8036a41086a290200370200200341c4016a200341c8036a41106a280200360200200341a0016a10cb01200110290b42002116200042003703080b20002016370300200341f0036a24000bb90403027f017e077f230041306b2202240041e0a7c800ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102941e9a7c800ad4280808080e00084100122032900002104200241106a41086a200341086a2900003703002002200437031020031029200241206a20012802002205200128020810eb0202400240024002402002280228220641206a2207417f4c0d00200228022021080240024020070d0041002109410121030c010b200710272203450d02200721090b024002402009410f4d0d002009210a0c010b2009410174220a4110200a41104b1b220a4100480d03024020090d00200a102722030d010c050b2009200a460d0020032009200a102b2203450d040b20032002290300370000200341086a200241086a29030037000002400240200a4170714110460d00200a21090c010b200a41017422094120200941204b1b22094100480d03200a2009460d002003200a2009102b2203450d040b20032002290310370010200341186a200241106a41086a29030037000002400240200941606a2006490d002009210a0c010b200641206a220a2006490d032009410174220b200a200b200a4b1b220a4100480d032009200a460d0020032009200a102b2203450d040b200341206a2008200610e4071a200020073602082000200a3602042000200336020002402002280224450d00200810290b0240200141046a280200450d00200510290b200241306a24000f0b1038000b1039000b1032000b1030000bb30505037f017e037f017e027f230041e0026b22022400200241286a41086a200141086a28020036020020022001290200370328200241186a200241286a10b005200241286a200228021822012002280220220310f9010240200228022822044101470d002003ad4220862001ad8410040b200229022c21050240200228021c450d00200110290b0240024020044101470d00200241086a2005a7220610c001200241286a200228020822072002280210220410c10120022802282201410820011b21080240200229022c420020011b2209422088a722012005422088a7220a4d0d002008200a41c8026c6a2203450d002008200a41c8026c6a220441b4026a2107024020042802b4024102460d00024020042802a802220b450d002008200a41c8026c6a41ac026a280200450d00200b10290b200310cc010b2003200241286a41b40210e4071a20074102360200200441c0026a200241206a290300370300200420022903183703b80220022802102104200228020821070b0240024020080d002004ad4220862007ad8410040c010b200241286a2008200110e2022004ad4220862007ad84200235023042208620022802282204ad8410030240200228022c450d00200410290b02402001450d00200141c8026c21042008210103400240200141b4026a2802004102460d000240200141a8026a2802002203450d00200141ac026a280200450d00200310290b200110c2010b200141c8026a2101200441b87d6a22040d000b0b2009a72201450d00200141c8026c450d00200810290b0240200228020c450d00200710290b200241346a200a360200200241306a20063602002002410136022c200241013a0028200241286a10cb01200041043a00000c010b20004183043b0100200041086a410e360200200041046a41e1b4c800360200200041026a41013a00000b200241e0026a24000bbb0402097f057e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200042003703000c010b200341186a28020021052003280214210641002101200341003a0068024002400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341286a41186a2201200341c8006a41186a2207290300370300200341286a41106a2208200341c8006a41106a2209290300370300200341286a41086a220a200341c8006a41086a220b29030037030020032003290348370328200520026b410f4d0d01200b200a290300220c37030020092008290300220d37030020072001290300220e37030020032003290328220f370348200420026a22012900002110200041306a200141086a290000370300200041286a2010370300200041206a200e370300200041186a200d370300200041106a200c3703002000200f3703084201210c0c020b200141ff0171450d00200341003a00680b20034100360230200342013703282003410d3602242003200341086a3602202003200341286a36026c200341dc006a41013602002003420137024c200341f4eaca003602482003200341206a360258200341ec006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b4200210c0b2000200c3703002006450d00200410290b200341f0006a24000ba90102017f027e02400240411010272202450d00200241104120102b2202450d0120022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200041286a2903002103200029032021042002412041c000102b2200450d0120002004370020200041286a200337000020012902002000ad42808080808006841003200010290f0b1039000b1030000bb90603027f017e057f23004180016b2202240041b3e6ca00ad4280808080e00084100122032900002104200241306a41086a200341086a290000370300200220043703302003102941c0e6ca00ad4280808080900184100122032900002104200241d0006a41086a200341086a2900003703002002200437035020031029200220013602742002200241f4006aad4280808080c000841002220329000037037820031029200241146a200241f8006a3602002002200241f8006a41086a36020c2002200241f4006a3602102002200241f8006a360208200241c0006a200241086a107502400240024002402002280248220541206a2206417f4c0d00200228024021070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290330370000200341086a200241306a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290350370010200341186a200241d0006a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a02402002280244450d00200710290b200241086a2003200610cd01200241d0006a41086a2201200241116a290000370300200241d0006a41106a2206200241196a290000370300200241d0006a41186a2205200241216a290000370300200220022900093703500240024020022d00084101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290350370000200041186a2005290300370000200041106a2006290300370000200041086a20012903003700000b02402008450d00200310290b20024180016a24000f0b1038000b1039000b1032000b1030000bb10503027f017e047f230041d0006b2202240041b1dcc900ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941c2dcc900ad4280808080800184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bd60201027f23004180036b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003a00000c010b200328021421042003200341186a2802003602ec02200320013602e802200341c0016a200341e8026a10c703410121020240024020032d00c0014101470d004100210220034100360228200342013703202003410d3602f4022003200341086a3602f0022003200341206a3602fc02200341d4016a4101360200200342013702c401200341f4eaca003602c0012003200341f0026a3602d001200341fc026a41a8a3c800200341c0016a10371a200335022842208620033502208410082003280224450d01200328022010290c010b200341206a200341c0016a41017241a00110e4071a200041016a200341206a41a00110e4071a0b200020023a00002004450d00200110290b20034180036a24000be60703027f017e057f230041d0006b2202240041b1dcc900ad4280808080f00084100122032900002104200241086a41086a200341086a290000370300200220043703082003102941cadcc900ad4280808080800184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240200141086a28020041046a2203417f4c0d000240024020030d0041012105410021030c010b200310272205450d020b2002410036024820022005360240200220033602440240200341034b0d00200341017422064104200641044b1b22064100480d030240024020030d002006102722050d010c060b20032006460d00200520032006102b2205450d050b20022006360244200220053602400b2005200128000036000020024104360248200141046a2802002107200141086a2802002201200241c0006a10710240024020022802442208200228024822056b2001490d0020022802402103200821060c010b200520016a22032005490d03200841017422062003200620034b1b22064100480d030240024020080d00024020060d00410121030c020b200610272203450d060c010b2002280240210320082006460d00200320082006102b2203450d050b20022006360244200220033602400b200320056a2007200110e4071a2002200520016a2201ad4220862003ad841002220529000037033820051029200241cc006a200320016a360200200220033602482002200241c0006a3602442002200241386a360240200241286a200241c0006a107502402006450d00200310290b2002280230220841206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121050c010b200141017422054110200541104b1b22054100480d03024020010d00200510272203450d050c010b20012005460d00200320012005102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020054170714110460d00200521010c010b200541017422014120200141204b1b22014100480d0320052001460d00200320052001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2008490d00200121050c010b200841206a22052008490d03200141017422092005200920054b1b22054100480d0320012005460d00200320012005102b2203450d040b200341206a2007200810e4071a2000200636020820002005360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bf60603027f017e077f230041e0006b2203240041c6b7c700ad4280808080800184100122042900002105200341086a41086a200441086a290000370300200320053703082004102941c8f7c700ad4280808080a00284100122042900002105200341186a41086a200441086a2900003703002003200537031820041029200320013602382003200341386aad4280808080c000841002220429000037034820041029200341dc006a2204200341386a41046a3602002003200341c8006a41086a22013602542003200341386a3602582003200341c8006a360250200341286a200341d0006a1075200320023602442003200341c4006aad4280808080c0008410022202290000370348200210292004200341c4006a41046a360200200320013602542003200341c4006a3602582003200341c8006a360250200341386a200341d0006a107502400240024002402003280230220641206a2207200328024022086a2202417f4c0d00200328023821092003280228210a0240024020020d004100210b410121040c010b200210272204450d022002210b0b02400240200b410f4d0d00200b21010c010b200b41017422014110200141104b1b22014100480d030240200b0d002001102722040d010c050b200b2001460d002004200b2001102b2204450d040b20042003290308370000200441086a200341086a41086a2903003700000240024020014170714110460d002001210b0c010b2001410174220b4120200b41204b1b220b4100480d032001200b460d0020042001200b102b2204450d040b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2006490d00200b21010c010b200641206a22012006490d03200b410174220c2001200c20014b1b22014100480d03200b2001460d002004200b2001102b2204450d040b200441206a200a200610e4071a02400240200120076b2008490d002001210b0c010b20022007490d032001410174220b2002200b20024b1b220b4100480d03024020010d000240200b0d00410121040c020b200b10272204450d050c010b2001200b460d0020042001200b102b2204450d040b200420076a2009200810e4071a200020023602082000200b360204200020043602000240200328023c450d00200910290b0240200328022c450d00200a10290b200341e0006a24000f0b1038000b1039000b1032000b1030000bdaf50105027f037e117f057e0c7f230022032104200341a0066b416071220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e20000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f000b200341b4056a4101360200200342013702a40520034198e3ca003602a005200341043602a403200341cce3ca003602a0032003200341a0036a3602b005200341a0056a4180a6cc001040000b200141306a2903002105200141286a290300210620034180036a41186a200141196a29000037030020034180036a41106a200141116a29000037030020034180036a41086a200141096a29000037030020032001290001370380032002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109024020022d0000450d002003200737029405200320013a009305200320083a009205200320093b0190050c490b200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820022d000121022003200737039005200241ff01714101470d48200320073703b804200320013a00b704200320083a00b604200320093b01b4042003200a3a00b3042003200b3a00b2042003200c3b01b0042003200d3a00af042003200e3a00ae042003200f3b01ac04200320103a00ab04200320113a00aa04200320123b01a804200320133a00a704200320143a00a604200320153b01a404200320163a00a304200320173a00a204200320183b01a0044100210120064280a094a58d1d5441002005501b0d1e200320063703e002200320053703e8022003200341a0046a360290052003200341a0046a3602c0022003200341c0026a3602a805200320034190056a3602a4052003200341e0026a3602a005200341a0036a200341a0046a200341a0056a108e040240024020032802a0034101470d0020032f00a50320032d00a703411074722101200341a8036a290300210720032d00a40321020c010b410421020240200341a0036a41086a2903004201520d00200341a0036a41106a290300210720032802c0022101200341d8056a200341a0036a41186a290300370300200341d0056a2007370300200341a0056a41086a41003a0000200341a9056a2001290000370000200341b1056a200141086a290000370000200341b9056a200141106a290000370000200341c1056a200141186a290000370000200341033a00a005200341a0056a10cb010b0b0240200241ff01714104470d0041c99fc500ad428080808090018422071001220229000021192002290008211a2002102941908dc700ad4280808080f00184221b10012202290000211c2002290008211d200210292003201d3701f8022003201c3701f0022003201a3701e802200320193701e002200341186a200341e0026a412010fc01200328021c21012003280218210820071001220229000021072002290008211920021029201b10012202290000211a2002290008211b200210292003201b3701f8022003201a3701f002200320193701e802200320073701e00220032001410020081b220941016a3602a005200341e0026aad42808080808004842207200341a0056aad4280808080c0008410032003200341a0046a3602e002200341a0036a200910a70520033502a803211920032802a003210c411810272202450d36200342183702a405200320023602a0054101200341a0056a107120032802e002210120032802a005210a0240024020032802a405220b20032802a80522086b4120490d00200b21020c010b200841206a22022008490d38200b410174220d2002200d20024b1b22024100480d380240200b0d00024020020d004101210a0c020b20021027220a0d010c4a0b200b2002460d00200a200b2002102b220a450d490b2003200a3602a005200a20086a220a2001290000370000200a41186a200141186a290000370000200a41106a200141106a290000370000200a41086a200141086a2900003700002003200841206a220a3602a805200320023602a405024002402002200a6b4110490d0020032802a00521012002210b0c010b200a41106a2201200a490d382002410174220b2001200b20014b1b220b4100480d380240024020020d000240200b0d00410121010c020b200b10272201450d4b0c010b20032802a00521012002200b460d0020012002200b102b2201450d4a0b2003200b3602a405200320013602a0050b2001200a6a22022005370008200220063700002019422086200cad84200841306aad4220862001ad8410030240200b450d00200110290b024020032802a403450d00200c10290b200341a0056a41086a20034180036a41086a290300370300200341a0056a41106a20034180036a41106a290300370300200341a0056a41186a20034180036a41186a290300370300200341a0036a41086a200341a0046a41086a290300370300200341a0036a41106a200341a0046a41106a290300370300200341a0036a41186a200341a0046a41186a29030037030020032003290380033703a005200320032903a0043703a00341c99fc500ad42808080809001841001220229000021192002290008211a2002102941a88dc700ad4280808080b0018410012202290000211b2002290008211c200210292003201c3701f8022003201b3701f0022003201a3701e802200320193701e002410410272201450d3620012009360000412010272202450d36200220032903a005370000200241186a2208200341a0056a41186a290300370000200241106a220a200341a0056a41106a290300370000200241086a220b200341a0056a41086a290300370000200141044124102b2201450d48200120022900003700042001411c6a2008290000370000200141146a200a2900003700002001410c6a200b290000370000200210292001412441c800102b2202450d48200220032903a0033700242002413c6a200341a0036a41186a290300370000200241346a200341a0036a41106a2903003700002002412c6a200341a0036a41086a29030037000020072002ad4280808080c00884101420021029200341a0056a41186a2005370300200341a0056a41106a2006370300200341a0056a410c6a2009360200200341a0056a41086a41003a0000200341093a00a005200341a0056a10cb010c470b200141ffffff077122084110762101200841087621092007422088a721032007a7210a0c490b200141086a280200211e200141046a280200211f2002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021180240024020022d0000450d002003200737029405200320013a009305200320083a009205200320093b019005410121020c010b20022d000121022003200737039005200241ff017141014721020b200320073701f802200320013a00f702200320083a00f602200320093b01f4022003200a3a00f3022003200b3a00f2022003200c3b01f0022003200d3a00ef022003200e3a00ee022003200f3b01ec02200320103a00eb02200320113a00ea02200320123b01e802200320133a00e702200320143a00e602200320153b01e402200320163a00e302200320173a00e202200320183b01e002024020020d0020034180036a41186a200341e0026a41186a29010037030020034180036a41106a200341e0026a41106a29010037030020034180036a41086a200341e0026a41086a290100370300200320032901e00237038003200341a0056a201f10a70520032802a805210820032802a005210241002101200341a4036a41003a0000200341003602a003200341386a20022008200341a0036a4105410010c701024002402003280238450d000240200328023c2201410520014105491b2201450d002001417f6a210a024020032d00a003220141037122094103460d0002400240024020090e03000102000b20014102762109410121010c050b200a450d0220032d00a103410874200172220141ffff0371418002490d02200141fcff03714102762109410121010c040b200a4103490d0120032f00a10320032d00a30341107472410874200172220141ffff034d0d0120014102762109410121010c030b200141034b0d00200a4104490d004101210120032800a103220941ffffffff034b0d020b41f0a7c000ad428080808080048410082008ad4220862002ad84100a410021010b0b024020032802a405450d00200210290b2001450d1f024002402009201e4b0d00200341c0026a201f10a705200341a0056a20032802c002220220032802c80210a805200341a0036a41086a2201200341ac056a290200370300200341a0036a41106a2208200341b4056a290200370300200341a0036a41186a2209200341bc056a280200360200200320032902a4053703a003024020032802a005220a450d00200341e0026a41186a2009280200360200200341e0026a41106a2008290300370300200341e0026a41086a2001290300370300200320032903a0033703e002024020032802c402450d00200210290b200341bc046a200341e0026a41186a280200360200200341b4046a200341f0026a290300370200200341ac046a200341e8026a2903003702002003200a3602a004200320032903e0023702a40420032903b00421072003200341a0046a41186a29030022053703e802200320073703e002200320034180036a36029005024020072005844200510d00200320034180036a3602c0022003200341c0026a3602a805200320034190056a3602a4052003200341e0026a3602a005200341a0036a20034180036a200341a0056a108e040240024020032802a0034101470d0020032f00a50320032d00a703411074722201411076210820014108762109200341a0036a41086a290300210720032d00a40321020c010b4104210202400240200341a0036a41086a2903004201510d00410021010c010b200341a0036a41106a290300210720032802c0022108200341d8056a200341a0036a41186a290300370300200341d0056a200737030041002101200341a0056a41086a41003a0000200341a9056a2008290000370000200341b1056a200841086a290000370000200341b9056a200841106a290000370000200341c1056a200841186a290000370000200341033a00a005200341a0056a10cb010b41002109410021080b200241ff01714104470d030b200329039803210720032d009703210820032d009603210920032f019403210b20032d009303210c20032d009203210d20032f019003210e20032d008f03210f20032d008e03211020032f018c03211120032d008b03211220032d008a03211320032f018803211420032d008703211520032d008603211620032f018403211720032d008303211820032d008203211e20032f0180032120024020032802a804220120032802a404470d00200341a0046a20014101109e0120032802a004210a20032802a80421010b200a20014105746a22022007370018200220083a0017200220093a00162002200b3b00142002200c3a00132002200d3a00122002200e3b00102002200f3a000f200220103a000e200220113b000c200220123a000b200220133a000a200220143b0008200220153a0007200220163a0006200220173b0004200220183a00032002201e3a0002200220203b00002003200141016a3602a804200341a0056a41186a200341a0046a41186a290300370300200341a0056a41106a200341a0046a41106a290300370300200341a8056a20032903a804370300200320032903a0043703a005200341a0036a201f10a70520032802a0032102200320032802a8033602e402200320023602e002200341a0056a200341e0026a10d005024020032802a403450d00200210290b20032802a40541ffffff3f71450d4920032802a00510290c490b024020032802c402450d00200210290b410210d5042109200341306a410210d6042003280234210a2003280230210b4103210241112101410021080c470b412610d5042109200341286a412610d6044103210241112101410021082003280228210b200328022c210a0c460b20074220882105024020032802a40441ffffff3f71450d00200a10290b2005a7210a2007a7210b0c450b4102210241002108410021010c440b200141046a2802002108200341a0036a41206a200141286a290300370300200341a0036a41186a200141206a290300370300200341a0036a41106a200141186a290300370300200341a0036a41086a200141106a2903003703002003200141086a2903003703a0030240024002400240024020022d00000d0020022d000141ff01714101460d010b200341023a0080030c010b200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211f20032002411a6a2901003703b804200320013a00b704200320093a00b6042003200a3b01b4042003200b3a00b3042003200c3a00b2042003200d3b01b0042003200e3a00af042003200f3a00ae04200320103b01ac04200320113a00ab04200320123a00aa04200320133b01a804200320143a00a704200320153a00a604200320163b01a404200320173a00a304200320183a00a2042003201f3b01a004200341a0056a41206a200341a0036a41206a290300370300200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a00520034180036a200341a0046a2008200341a0056a10d10520032d0080034104460d0120032902840321070b20032802800321032000411c6a2007370200200041186a2003360200420121070c010b420021070b200042003703080c480b200141046a2802002108200341a0036a41206a200141286a290300370300200341a0036a41186a200141206a290300370300200341a0036a41106a200141186a290300370300200341a0036a41086a200141106a2903003703002003200141086a2903003703a00320022d00000d1d20022d000141ff01714101470d1d2002411a6a2901002107200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021182003200241096a2d00003a00e702200320143a00e602200320153b01e402200320163a00e302200320173a00e202200320183b01e0022003200e3a00ef022003200f3a00ee02200320103b01ec02200320113a00eb02200320123a00ea02200320133b01e802200320013a00f702200320093a00f6022003200a3b01f4022003200b3a00f3022003200c3a00f2022003200d3b01f002200320073701f802200341a0046a41186a2007370300200341a0046a41106a20032901f002370300200341a0046a41086a20032901e802370300200320032901e0023703a004200341a0056a200341a0046a10d2050240024020032d00a00522024102460d0020024101460d010b410310d5042102200341c0006a410310d604200320023a00c20220034183223b01c002200320032903403702c4020c420b200341a0056a41186a2d00002102200341b7056a2d00002101200341b5056a2f00002109200341b4056a2d0000210a200341b3056a2d0000210b200341b1056a2f0000210c200341a0056a41106a2d0000210d200341af056a2d0000210e200341ad056a2f0000210f200341ac056a2d00002110200341ab056a2d00002111200341a9056a2f00002112200341a0056a41086a2d0000211320032d00a705211420032f00a505211520032d00a405211620032d00a305211720032d00a205211820032d00a105211f2003200341b9056a29000037039803200320023a009703200320013a009603200320093b0194032003200a3a0093032003200b3a0092032003200c3b0190032003200d3a008f032003200e3a008e032003200f3b018c03200320103a008b03200320113a008a03200320123b018803200320133a008703200320143a008603200320153b018403200320163a008303200320173a008203200320183a0081032003201f3a008003200341a0056a41206a200341a0036a41206a290300370300200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a005200341c0026a20034180036a2008200341a0056a10d10520032d00c0024104460d430c410b4102210a20022d0000417f6a220b41034b0d3e200141046a280200210c02400240200b0e0400414101000b200241046a2d00000d3f200241086a28020041036c2002410c6a280200410174490d3f0b200341a0036a200c10dd04200341a0056a20032802a003220120032802a80310d30520032802a40321020240024020032d00a00522084102460d00200341f8056a2903002107200341f7056a2d00002109200341f6056a2d0000210a200341f4056a2f0100210b200341f3056a2d0000210d200341f2056a2d0000210e200341f0056a2f0100210f200341ef056a2d00002110200341ee056a2d00002111200341ec056a2f01002112200341eb056a2d00002113200341ea056a2d00002114200341e8056a2f01002115200341e7056a2d00002116200341e6056a2d00002117200341e4056a2f01002118200341e3056a2d0000211f200341e2056a2d0000211e200341e0056a2f0100212002402002450d00200110290b2008450d01200341143a00a005200341a0056a21020c3f0b02402002450d00200110290b200341143a00a005200341a0056a21020c3e0b200320073703b805200320093a00b7052003200a3a00b6052003200b3b01b4052003200d3a00b3052003200e3a00b2052003200f3b01b005200320103a00af05200320113a00ae05200320123b01ac05200320133a00ab05200320143a00aa05200320153b01a805200320163a00a705200320173a00a605200320183b01a4052003201f3a00a3052003201e3a00a205200320203b01a005200341a0036a200341a0056a10d405200341d8006a20032802a003220120032802a8034180a6cc004100410010c70120032802582102024020032802a403450d00200110290b024020024101460d00200320073703b805200320093a00b7052003200a3a00b6052003200b3b01b4052003200d3a00b3052003200e3a00b2052003200f3b01b005200320103a00af05200320113a00ae05200320123b01ac05200320133a00ab05200320143a00aa05200320153b01a805200320163a00a705200320173a00a605200320183b01a4052003201f3a00a3052003201e3a00a205200320203b01a005200341a0036a200341a0056a10d40520032802a003210220033502a8032107200341013a00e00220074220862002ad84200341e0026aad428080808010841003024020032802a403450d00200210290b200341ac056a200c360200200341a8056a41063a0000200341093a00a005200341a0056a10cb01200341a0056a200c10dd0420033502a80542208620032802a0052202ad84100420032802a405450d43200210290c430b410510d5042101200341d0006a410510d6044103210a20032802502109200328025421080c3f0b200341b8036a200141196a290000370300200341b0036a200141116a290000370300200341a8036a200141096a290000370300200320012900013703a003024002400240024020022d0000417f6a220141034b0d000240024020010e0400020201000b200241086a2802004101742002410c6a280200490d01200241046a28020041ff01710d010b41c99fc500ad4280808080900184221a100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341f8006a200341e0026a41204180a6cc004100410010c70120032802784101460d01200341a0056a41186a2201200341a0036a41186a290300370300200341a0056a41106a2208200341a0036a41106a290300370300200341a0056a41086a2209200341a0036a41086a290300370300200320032903a0033703a005201a100122022d000f210a20022d000e210b20022f000c210c20022d000b210d20022d000a210e20022f0008210f20022d0007211020022d0006211120022f0004211220022d0003211320022d0002211420022f0000211520021029419c93c700ad428080808090018410012202290008210720022d0007211620022d0006211720022f0004211820022d0003211f20022d0002211e20022f0000212020021029412010272202450d34200220032903a005370000200241186a2001290300370000200241106a2008290300370000200241086a2009290300370000412010272201450d3420012002290000370000200141186a2208200241186a290000370000200141106a2209200241106a290000370000200141086a2221200241086a2900003700002002102941c00010272202450d3420022007370018200220163a0017200220173a0016200220183b00142002201f3a00132002201e3a0012200220203b00102002200a3a000f2002200b3a000e2002200c3b000c2002200d3a000b2002200e3a000a2002200f3b0008200220103a0007200220113a0006200220123b0004200220133a0003200220143a0002200220153b0000200241386a2008290000370000200241306a2009290000370000200241286a20212900003700002002200129000037002020011029200341a0056a200241c00010d50520032802a005210920032903a805210720032802a40521082002102902402008450d00200341a0056a41186a4200370300200341a0056a41106a220a4200370300200341a0056a41086a22024200370300200342003703a00541b3e6ca00ad4280808080e000841001220129000021052002200141086a290000370300200320053703a0052001102941c9e6ca00ad4280808080e00084100122012900002105200341e0026a41086a220b200141086a290000370300200320053703e00220011029200a20032903e0022205370300200341a0046a41086a2002290300370300200341a0046a41106a2005370300200341a0046a41186a200b290300370300200320032903a0053703a004200341f0006a200341a0046a412010fc0102402003280274410020032802701b20094f0d00410710d5042102200341e8006a410710d60420032802682101200328026c2103200742ffffff3f83500d04200810290c040b200742ffffff3f83500d00200810290b200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a005200341003a00c00541c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341203602a4042003200341e0026a3602a004200341a0056a200341a0046a10d6050c450b410221080c020b410610d5042102200341e0006a410610d60420032802602101200328026421030b410321080b20004200370308200041206a20033602002000411c6a2001360200200041186a200241ff017141107420087241802272360200420121070c450b200341a0036a41186a200141196a290000370300200341b0036a200141116a290000370300200341a0036a41086a200141096a290000370300200320012900013703a0030240024020022d0000417f6a220141034b0d00024020010e0400010102000b200241046a2d00000d00200241086a28020041056c2002410c6a28020041036c4f0d010b20004200370308200041186a4102360200420121070c450b200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a005200341023a00c00541c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341203602a4042003200341e0026a3602a004200341a0056a200341a0046a10d6050c400b200341a0036a41186a200141196a290000370300200341b0036a200141116a290000370300200341a8036a200141096a290000370300200320012900013703a0030240024020022d0000417f6a220141034b0d00024020010e0400010102000b200241086a2802002002410c6a280200490d00200241046a28020041ff0171450d010b20004200370308200041186a4102360200420121070c440b200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a005200341013a00c00541c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341203602a4042003200341e0026a3602a004200341a0056a200341a0046a10d6050c3f0b200141286a280200210d200141246a2802002108200341c0026a41086a220a2002411c6a2800003602002003200241146a2900003703c0022002410c6a280000210b200241086a280000210c200241046a280000210920022d0000210220034198036a200141196a29000037030020034190036a200141116a29000037030020034180036a41086a200141096a290000370300200320012900013703800302400240200841880e490d0020034190056a41086a200a280200360200200320032903c0023703900520024102470d01200941ff01710d3641002109200c41036c200b4101744f0d350c340b2002417e6a220241024b0d3520020e03333534330b20024104460d330c340b20034198036a200141196a29000037030020034180036a41106a200141116a29000037030020034180036a41086a200141096a290000370300200320012900013703800341022101024020022d00004102470d00200241236a2d00002109200241216a2f0000210a2002411f6a2d0000210b2002411d6a2f0000210c2002410f6a2d0000210d2002410d6a2f0000210e2002410b6a2d0000210f200241096a2f00002110200241076a2d00002111200241056a2f00002112200241246a2802002113200241206a2d00002114200241116a2900002107200241106a2d000021152002410c6a2d00002116200241086a2d00002117200241046a2d000021082003200241196a28000036029805200320073703900520084101470d002003200a20094110747222023b01bc03200341be036a20024110763a00002003200c200b4110747222023b01b803200341ba036a20024110763a00002003200e200d4110747222023b01a803200341a0036a410a6a20024110763a000020032007a722023b01ac03200341ae036a20024110763a0000200320133a00bf03200320143a00bb0320032003290294053703b003200320153a00ab03200320163a00a703200320173a00a303200320074218883c00af0320032010200f4110747222023b01a403200320024110763a00a6032003201220114110747222023b01a003200320024110763a00a20341c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341a0056a200341e0026a10a3050240024020032d00c0054103460d0020032903a005210720032903a805210520032903b0052106200320032903b8053703b805200320063703b005200320053703a805200320073703a00520034180036a200341a0056a412010e707450d01410210d5042102200341b0016a410210d60420032802b401210820032802b00121030c320b410a10d504210220034198016a410a10d604200328029c0121082003280298012103410321010c320b200341a0046a20034180036a10d705200341a0056a20032802a004220220032802a80410d50520032903a805210720032802a405210e024020032802a404450d00200210290b0240200e0d004100210f200341003602c802200342013703c0024101210e0c2c0b2003200e3602c002200320073702c4022007a7210f41002102024002402007422088a7220a41014b0d00200a0e022d012d0b200a210103402001410176220820026a22092002200e20094105746a200341a0036a412010e7074101481b2102200120086b220141014b0d000b0b0240200e20024105746a200341a0036a412010e7072201450d00200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a0052001411f7620026a2208200a4b0d1a200341a0056a21010c2d0b410b10d5042102200341a8016a410b10d60420032802ac01210820032802a8012103200f41ffffff3f71450d30200e1029410321010c310b0c300b20022d000120022d0000410047720d18200341ac056a200141046a2802002202360200200341a8056a41063a0000200341093a00a005200341a0056a10cb01200341a0056a200210dd0420033502a80542208620032802a0052202ad84100420032802a405450d3c200210290c3c0b0240024020022d000120022d000041004772450d004102210241802221010c010b200141046a2802002101410c10272202450d2b20022001360008200242e4cab5fbb6ccdcb0e3003700002003428c808080c0013702a405200320023602a005200341a0036a200341a0056a10b10520032d00a0034104460d3c410210d5042102200341b8016a410210d604200241ff01714110744180227221014103210220032802b801210820032802bc0121030b20004200370308200041206a20033602002000411c6a2008360200200041186a2001200272360200420121070c3f0b200341c0026a41186a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c0022002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021180240024020022d0000450d002003200737029405200320013a009305200320083a009205200320093b019005410121020c010b20022d000121022003200737039005200241ff017141014721020b0240024020020d00200341e0026a200341c0026a10d805200341a0056a20032802e002221f20032802e802222010d905200341c0056a2d000021020240024020032d00a005221e4102470d00200341023a0080030c010b200320032d00a3053a008303200320032f00a1053b008103200320032902a405370284032003201e3a0080032003200341b8056a290300370398032003200341ac056a29020037028c032003200341b4056a280200360294030b200320013a00b704200320083a00b604200320093b01b4042003200a3a00b3042003200b3a00b2042003200c3b01b0042003200d3a00af042003200e3a00ae042003200f3b01ac04200320103a00ab04200320113a00aa04200320123b01a804200320133a00a704200320143a00a604200320153b01a404200320163a00a304200320173a00a204200320183b01a004200320073703b804200341b8056a200329039803370300200341a0056a41206a20023a0000200341023a00a00320032003290390033703b00520032003290388033703a805200320032903800322053703a005200320032903b80337039803200320032903b00337039003200320032903a80337038803200320032903a00337038003024002402005a7410371417f6a220141014b0d0041192102024020010e020002000b410c21020c010b411a2102200341a0056a410172200341a0046a412010e7070d00200320032903a00437008103200341013a0080032003200341b7046a290000370098032003200341b0046a290300370091032003200341a8046a2903003700890320032003290398033703b80520032003290390033703b00520032003290388033703a805200320032903800322053703a005024002402005a7220241ff01714102470d002020ad422086201fad8410040c010b410110272201450d3f200120023a0000200141014121102b2202450d3f200220032900a10537000120022007423888a73a0020200241186a20032900b805370000200241116a20032900b105370000200241096a20032900a9053700002020ad422086201fad842002ad42808080809004841003200210290b412821020b024020032802e402450d00201f10290b20024128460d3c200210d5042101200341c0016a200210d604200141ff017141107441802272210220032802c401210120032802c0012103410321080c010b4102210841802221020b20004200370308200041206a20013602002000411c6a2003360200200041186a2002200872360200420121070c3e0b20022d00000d1620022d000141ff01714101470d16200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a2901003703b803200320013a00b703200320083a00b603200320093b01b4032003200a3a00b3032003200b3a00b2032003200c3b01b0032003200d3a00af032003200e3a00ae032003200f3b01ac03200320103a00ab03200320113a00aa03200320123b01a803200320133a00a703200320143a00a603200320153b01a403200320163a00a303200320173a00a203200320183b01a003200341a0046a200341a0036a10d805200341a0056a20032802a004220220032802a804220110d905024020032d00a0054102460d00200341a0036a10b2020b2001ad4220862002ad84100420032802a404450d39200210290c390b200341c0026a41186a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c0022002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021180240024020022d0000450d002003200737029405200320013a009305200320083a009205200320093b019005410121020c010b20022d000121022003200737039005200241ff017141014721020b0240024020020d00200341e0026a200341c0026a10d805200341a0056a20032802e002221f20032802e802222010d905200341c0056a2d000021020240024020032d00a005221e4102470d00200341023a0080030c010b200320032d00a3053a008303200320032f00a1053b008103200320032902a405370284032003201e3a0080032003200341b8056a290300370398032003200341ac056a29020037028c032003200341b4056a280200360294030b200320013a00b704200320083a00b604200320093b01b4042003200a3a00b3042003200b3a00b2042003200c3b01b0042003200d3a00af042003200e3a00ae042003200f3b01ac04200320103a00ab04200320113a00aa04200320123b01a804200320133a00a704200320143a00a604200320153b01a404200320163a00a304200320173a00a204200320183b01a004200320073703b804200341b8056a200329039803370300200341a0056a41206a20023a0000200341023a00a00320032003290390033703b00520032003290388033703a805200320032903800322053703a005200320032903b80337039803200320032903b00337039003200320032903a80337038803200320032903a00337038003411b210202402005a741ff01714101470d00410d2102200341a0056a410172200341a0046a412010e7070d00200320032903a00437008103200341003a0080032003200341b7046a290000370098032003200341b0046a290300370091032003200341a8046a2903003700890320032003290398033703b80520032003290390033703b00520032003290388033703a805200320032903800322053703a005024002402005a7220241ff01714102470d002020ad422086201fad8410040c010b410110272201450d3d200120023a0000200141014121102b2202450d3d200220032900a10537000120022007423888a73a0020200241186a20032900b805370000200241116a20032900b105370000200241096a20032900a9053700002020ad422086201fad842002ad42808080809004841003200210290b412821020b024020032802e402450d00201f10290b20024128460d3a200210d5042101200341c8016a200210d604200141ff017141107441802272210220032802cc01210120032802c8012103410321080c010b4102210841802221020b20004200370308200041206a20013602002000411c6a2003360200200041186a2002200872360200420121070c3c0b200141306a2903002107200141286a2903002105200141216a2d00002108200341a0046a41186a200141196a290000370300200341a0046a41106a200141116a290000370300200341a0046a41086a200141096a290000370300200320012900013703a0044102210102400240024020022d0000450d000c010b024020022d000141ff01714101460d000c010b2002411a6a2901002106200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021182003200241096a2d00003a00e702200320143a00e602200320153b01e402200320163a00e302200320173a00e202200320183b01e0022003200e3a00ef022003200f3a00ee02200320103b01ec02200320113a00eb02200320123a00ea02200320133b01e802200320013a00f702200320093a00f6022003200a3b01f4022003200b3a00f3022003200c3a00f2022003200d3b01f002200320063701f802200341a0036a41186a2006370300200341a0036a41106a20032901f002370300200341a0036a41086a20032901e802370300200320032901e0023703a003200341a0056a41186a200341a0046a41186a290300370300200341a0056a41106a200341a0046a41106a290300370300200341a0056a41086a200341a0046a41086a290300370300200320032903a0043703a00520034180036a200341a0036a200341a0056a20082005200710da0520032802840321012003280280034101470d0120034180036a41086a29030021070b2000411c6a2007370200200041186a200136020020004200370308420121070c3c0b20004201370308200041106a2001ad220742c0b2cd3b7e200742a0b1ee037e7c42c0c0a4d2017c370300420021070c3b0b4102210102400240024020022d0000450d000c010b024020022d000141ff01714101460d000c010b2002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f010021172003200241096a2d00003a00e702200320133a00e602200320143b01e402200320153a00e302200320163a00e202200320173b01e0022003200d3a00ef022003200e3a00ee022003200f3b01ec02200320103a00eb02200320113a00ea02200320123b01e802200320013a00f702200320083a00f602200320093b01f4022003200a3a00f3022003200b3a00f2022003200c3b01f002200320073701f802200341b8056a2007370300200341a0056a41106a20032901f002370300200341a0056a41086a20032901e802370300200320032901e0023703a005200341a0036a200341a0056a10db0520032802a403210120032802a0034101470d01200341a0036a41086a29030021070b200042003703082000411c6a2007370200200041186a2001360200420121070c3b0b20004201370308200041106a2001ad220742c0b2cd3b7e20074280a4e8037e7c42c0f9f886017c370300420021070c3a0b024020022d000120022d000041004772450d0020004200370308200041186a4102360200420121070c3a0b41c99fc500ad4280808080900184100122022900002107200229000821052002102941a88dc700ad4280808080b001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341e0026aad428080808080048410040c350b200141086a2802002108200141046a28020021090240024020022d00000d0020022d000141ff01714101470d002001410c6a2802002101200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d0000211f200241046a2d0000211e200241026a2f0100212020032002411a6a2901003703b8052003200a3a00b7052003200b3a00b6052003200c3b01b4052003200d3a00b3052003200e3a00b2052003200f3b01b005200320103a00af05200320113a00ae05200320123b01ac05200320133a00ab05200320143a00aa05200320153b01a805200320163a00a705200320173a00a605200320183b01a4052003201f3a00a3052003201e3a00a205200320203b01a005200320013602a803200320083602a403200320093602a003200341a0046a200341a0056a200341a0036a10dc0520032d00a00422024104460d3620032902a404210720032f00a10420032d00a3044110747241087421030c010b410221024100210302402008450d00200910290b0b200042003703082000411c6a2007370200200041186a2003200272360200420121070c380b200141086a2802002108200141046a28020021090240024020022d00004101470d002001410c6a280200210a200241236a2d0000210b200241216a2f0000210c2002411f6a2d0000210d2002411d6a2f0000210e2002410f6a2d0000210f2002410d6a2f000021102002410b6a2d00002111200241096a2f00002112200241076a2d00002113200241056a2f00002114200241246a3502002106200241206a3100002119200241116a2900002107200241106a2d000021152002410c6a2d00002116200241086a2d00002117200241046a2d000021012003200241196a28000036029805200320073703900520014101470d00200320163a00e702200320173a00e302200320153a00eb02200320032902940522053d01f002200320054238883c00f702200320054230883c00f602200320054220883d01f402200320054218883c00f302200320054210883c00f2022003201220114110747222023b01e402200320024110763a00e6022003201420134110747222023b01e002200320024110763a00e202200320073d01ec02200320074218883c00ef0220032010200f4110747222023b01e802200320024110763a00ea0220032007a74110763a00ee0220032019421886200e200d41107472ad42ffffff078384200c200b41107472ad42ffffff07834220868420064238868422073701f802200341b8056a2007370300200341a0056a41106a20032901f002370300200341a0056a41086a20032901e802370300200320032901e0023703a0052003200a3602a803200320083602a403200320093602a003200341a0046a200341a0056a200341a0036a10dc0520032d00a00422024104460d3520032902a404210720032f00a10420032d00a3044110747241087421030c010b410221024100210302402008450d00200910290b0b200042003703082000411c6a2007370200200041186a2003200272360200420121070c370b200141086a2802002108200141046a28020021090240024020022d00000d0020022d000141ff01714101470d002001410c6a2802002101200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d0000211f200241046a2d0000211e200241026a2f0100212020032002411a6a2901003703b8052003200a3a00b7052003200b3a00b6052003200c3b01b4052003200d3a00b3052003200e3a00b2052003200f3b01b005200320103a00af05200320113a00ae05200320123b01ac05200320133a00ab05200320143a00aa05200320153b01a805200320163a00a705200320173a00a605200320183b01a4052003201f3a00a3052003201e3a00a205200320203b01a005200320013602a803200320083602a403200320093602a003200341a0046a200341a0056a200341a0036a10dd0520032d00a00422024104460d3420032902a404210720032f00a10420032d00a3044110747241087421030c010b410221024100210302402008450d00200910290b0b200042003703082000411c6a2007370200200041186a2003200272360200420121070c360b200141086a2802002108200141046a28020021090240024020022d00004101470d002001410c6a280200210a200241236a2d0000210b200241216a2f0000210c2002411f6a2d0000210d2002411d6a2f0000210e2002410f6a2d0000210f2002410d6a2f000021102002410b6a2d00002111200241096a2f00002112200241076a2d00002113200241056a2f00002114200241246a3502002106200241206a3100002119200241116a2900002107200241106a2d000021152002410c6a2d00002116200241086a2d00002117200241046a2d000021012003200241196a28000036029805200320073703900520014101470d00200320163a00e702200320173a00e302200320153a00eb02200320032902940522053d01f002200320054238883c00f702200320054230883c00f602200320054220883d01f402200320054218883c00f302200320054210883c00f2022003201220114110747222023b01e402200320024110763a00e6022003201420134110747222023b01e002200320024110763a00e202200320073d01ec02200320074218883c00ef0220032010200f4110747222023b01e802200320024110763a00ea0220032007a74110763a00ee0220032019421886200e200d41107472ad42ffffff078384200c200b41107472ad42ffffff07834220868420064238868422073701f802200341b8056a2007370300200341a0056a41106a20032901f002370300200341a0056a41086a20032901e802370300200320032901e0023703a0052003200a3602a803200320083602a403200320093602a003200341a0046a200341a0056a200341a0036a10dd0520032d00a00422024104460d3320032902a404210720032f00a10420032d00a3044110747241087421030c010b410221024100210302402008450d00200910290b0b200042003703082000411c6a2007370200200041186a2003200272360200420121070c350b200141246a280200211f200341c0026a41186a200141196a290000370300200341c0026a41106a200141116a290000370300200341c0026a41086a200141096a290000370300200320012900013703c0022002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021180240024020022d0000450d002003200737029405200320013a009305200320083a009205200320093b019005410121020c010b20022d000121022003200737039005200241ff017141014721020b200320073701f802200320013a00f702200320083a00f602200320093b01f4022003200a3a00f3022003200b3a00f2022003200c3b01f0022003200d3a00ef022003200e3a00ee022003200f3b01ec02200320103a00eb02200320113a00ea02200320123b01e802200320133a00e702200320143a00e602200320153b01e402200320163a00e302200320173a00e202200320183b01e002024020020d0020034180036a41186a200341e0026a41186a29010037030020034180036a41106a200341e0026a41106a29010037030020034180036a41086a200341e0026a41086a290100370300200320032901e00237038003200341a4046a41003b0100200341003602a004200341a0056a41186a200341c0026a41186a290300370300200341a0056a41106a200341c0026a41106a290300370300200341a0056a41086a200341c0026a41086a290300370300200320032903c0023703a005200341a0036a200341a0056a10de0520034198026a20032802a003220120032802a803200341a0046a4106410010c70102402003280298020d00411310d5042102200341d0016a411310d60420032903d00121070c1d0b2003200328029c022202410620024106491b22023602a4052003200341a0046a3602a005200341003a00e0020240024002402002450d0020032002417f6a3602a4052003200341a0046a4101723602a00520032d00a004220241014b0d0020020e020102010b41c6a3c700ad42808080809005841008411310d5042102200341d8016a411310d60420032802dc01210820032802d80121090c1d0b411310d504210220034190026a411310d604200328029402210820032802900221090c1c0b20034188026a200341a0056a10c8012003280288020d1a200328028c022102024020032802a403450d00200110290b0240024002402002201f4b0d00200341a0036a200341c0026a10d804200341a0056a20032802a003220120032802a80310d90420032802a40321020240024020032d00a00522084102460d00200341e8056a2903002105200341e0056a2903002106200341d8056a2802002122200341d4056a2802002123200341d0056a2802002109200341c8056a280200210a200341c4056a2802002124200341b9056a2900002107200341b8056a2d0000210b200341b7056a2d0000210c200341b5056a2f0000210d200341b4056a2d0000210e200341b3056a2d0000210f200341b1056a2f00002110200341b0056a2d00002111200341af056a2d00002112200341ad056a2f00002113200341ac056a2d00002114200341ab056a2d00002115200341a9056a2f00002116200341a8056a2d0000211720032d00a705211820032f00a505211f20032d00a405211e20032d00a305212020032f00a105212102402002450d00200110290b2008450d010240200a450d00202410290b200320073703b8032003200b3a00b7032003200c3a00b6032003200d3b01b4032003200e3a00b3032003200f3a00b203200320103b01b003200320113a00af03200320123a00ae03200320133b01ac03200320143a00ab03200320153a00aa03200320163b01a803200320173a00a703200320183a00a6032003201f3b01a4032003201e3a00a303200320203a00a203200320213b01a003200341a0056a41186a4200370300200341a0056a41106a22084200370300200341a0056a41086a22024200370300200342003703a00541b3e6ca00ad4280808080e000841001220129000021072002200141086a290000370300200320073703a0052001102941c9e6ca00ad4280808080e00084100122012900002107200341e0026a41086a220a200141086a290000370300200320073703e00220011029200820032903e0022207370300200341a0046a41086a2002290300370300200341a0046a41106a2007370300200341a0046a41186a200a290300370300200320032903a0053703a004200341f8016a200341a0046a412010fc0120032802fc01410020032802f8011b2202200941808407410020034180036a200341a0036a412010e7071b6a4180ce186a490d0302402023450d00200220224d0d050b200341a0056a200341a0036a20034180036a20062005410010e903200341a0056a200341c0026a10d80420033502a80542208620032802a0052202ad841004024020032802a405450d00200210290b200341a0056a41086a410f3a0000200341c9056a20032903a003370000200341b1056a200341c0026a41086a290300370000200341b9056a200341c0026a41106a290300370000200341c1056a200341c0026a41186a290300370000200341d1056a200341a0036a41086a290300370000200341d9056a200341a0036a41106a290300370000200341e1056a200341a0036a41186a290300370000200341093a00a005200341a0056a41096a20032903c00237000020034190066a200637030020034198066a200537030020034181066a20034180036a41186a290300370000200341f9056a20034180036a41106a290300370000200341f1056a20034180036a41086a290300370000200341e9056a200329038003370000200341a0056a10cb010c360b2002450d00200110290b411310d5042102200341e8016a411310d60420032802e801210820032802ec012101410321030c200b412610d5042102200341e0016a412610d60420032802e001210820032802e4012101410321030c1f0b41112102200341113a00a005200341a0056a21010c1a0b41122102200341123a00a005200341a0056a21010c190b410221030c1c0b20034180036a41186a200141196a29000037030020034190036a200141116a29000037030020034188036a200141096a29000037030020032001290001370380032002411a6a2901002107024020022d0000450d00200241166a2f01002101200241186a2d00002108200241196a2d000021022003200737029405200320023a009305200320083a009205200320013b0190050c170b20022d000121022003200737039005200241ff01714101470d16200341c0026a20034180036a10df05200341a0056a20032802c002220920032802c802220a10e00520032d00a0052102200341a0046a200341a0056a41017241ef0010e4071a0240024020024102470d00200341b0036a4200370300200341b8036a4200370300200341c0036a4200370300200341c8036a4200370300200341d0036a4200370300200341d8036a420037030041002102200341e0036a4100360200200341083602a403200341a0036a41086a4200370300200341003a00a0030c010b200320023a00a003200341a0036a410172200341a0046a41ef0010e4071a200241014621020b200341a0056a41186a4200370300200341a0056a41106a220b4200370300200341a0056a41086a22014200370300200342003703a00541b3e6ca00ad4280808080e000841001220829000021072001200841086a290000370300200320073703a0052008102941c9e6ca00ad4280808080e00084100122082900002107200341e0026a41086a220c200841086a290000370300200320073703e00220081029200b20032903e0022207370300200341a0046a41086a2001290300370300200341a0046a41106a2007370300200341a0046a41186a200c290300370300200320032903a0053703a004200341a0026a200341a0046a412010fc010240200341f8036a200341d0036a20021b220128021020032802a402410020032802a0021b4b0d0020014200370300200141106a4100360200200141086a42003703000b024002402002450d00200341d0036a2903002106200341c8036a29030021190c010b200341d8036a290300210620032903d0032119200341ac036a28020041306c2201450d0020032802a40341206a21020340200241706a22082903002105200841086a29030021070240200241686a2d00004101470d00427f2007200241086a2903007c200520022903007c221a2005542208ad7c22052008200520075420052007511b22081b2107427f201a20081b21050b200620072005201954200720065420072006511b22081b21062019200520081b2119200241306a2102200141506a22010d000b0b200341a0056a200341a0036a41f00010e4071a0240024020032d00a00522024102470d00200aad4220862009ad8410040c010b200341a0046a200341a0056a10a105200aad4220862009ad8420033502a80442208620032802a0042201ad841003024020032802a404450d00200110290b20020d00200341a8056a2802002202450d00200241306c450d0020032802a40510290b024020032802c402450d00200910290b02402019200684500d00200342e4cab5fbb6ccdcb0e3003703a005200341a0056a20034180036a20192006410210aa020c300b200342e4cab5fbb6ccdcb0e3003703a005200341a0056a20034180036a10ac020c2f0b20022d00000d0c20022d000141ff01714101470d0c200141196a2900002105200141186a2d00002109200141176a2d0000210a200141156a2f0000210b200141146a2d0000210c200141136a2d0000210d200141116a2f0000210e200141106a2d0000210f2001410f6a2d000021102001410d6a2f000021112001410c6a2d000021122001410b6a2d00002113200141096a2f00002114200141086a2d00002115200141076a2d00002116200141056a2f00002117200141046a2d00002118200141036a2d0000211f20012f00012101200241196a3100002106200241186a3100002119200241166a330100211a200241156a310000211b200241146a310000211c200241126a330100211d200241116a2d00002108200241106a2d0000211e2002410e6a2f010021202002410d6a2d000021212002410c6a2d000021242002410a6a2f01002123200241096a2d00002122200241086a2d00002125200241066a2f01002126200241056a2d00002127200241046a2d00002128200241026a2f01002129200341be036a2002411a6a29010022074230883c0000200341ae036a201e3a0000200341aa036a20243a000020032007a722023b01b803200341ba036a20024110763a0000200320203b01ac03200320233b01a803200320253a00a603200320263b01a403200320283a00a203200320293b01a003200320083a00af03200320213a00ab03200320223a00a703200320273a00a303200320074220883d01bc03200320074238883c00bf03200320074218883c00bb032003201d201c42108684201b42188684201a422086842019423086842006423886843703b003200341a0046a200341a0036a10d805200341a0056a20032802a004220820032802a804221e10d9050240024020032d00a0054102460d00200320032900a1053701e0022003200341b9056a2900003701f8022003200341a9056a2900003701e8022003200341b1056a2900003701f00220014180fe037141087621020c010b20014180fe03714108762102200341a0036a10a7020b200320153a00e702200320163a00e602200320173b01e402200320183a00e3022003201f3a00e20220032002410874200141ff0171723b01e0022003200f3a00ef02200320103a00ee02200320113b01ec02200320123a00eb02200320133a00ea02200320143b01e802200320093a00f7022003200a3a00f6022003200b3b01f4022003200c3a00f3022003200d3a00f2022003200e3b01f002200320053701f802200341b8056a2005370300200341b0056a20032901f002370300200341a0056a41086a20032901e802370300200320032901e0023703a005410110272202450d2f200241003a0000200241014121102b2202450d2f200220032903a005370001200241196a200341b8056a290300370000200241116a200341b0056a290300370000200241096a200341a8056a290300370000201ead4220862008ad842002ad428080808090048410032002102920032802a404450d2e200810290c2e0b0240024002400240024020022d00000d0020022d000141ff01714101460d010b200341023a00a0030c010b200141046a2802002101200241196a2d00002108200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211f20032002411a6a2901003703b805200320083a00b705200320093a00b6052003200a3b01b4052003200b3a00b3052003200c3a00b2052003200d3b01b0052003200e3a00af052003200f3a00ae05200320103b01ac05200320113a00ab05200320123a00aa05200320133b01a805200320143a00a705200320153a00a605200320163b01a405200320173a00a305200320183a00a2052003201f3b01a005200341a0036a200341a0056a2001410010e10520032d00a0034104460d0120032902a40321070b20032802a00321032000411c6a2007370200200041186a2003360200420121070c010b420021070b200042003703080c310b200141246a2802002108200341a0036a41186a200141196a290000370300200341a0036a41106a200141116a290000370300200341a0036a41086a200141096a290000370300200320012900013703a0030240024020022d00000d0020022d000141ff01714101470d00200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211f20032002411a6a2901003703b805200320013a00b705200320093a00b6052003200a3b01b4052003200b3a00b3052003200c3a00b2052003200d3b01b0052003200e3a00af052003200f3a00ae05200320103b01ac05200320113a00ab05200320123a00aa05200320133b01a805200320143a00a705200320153a00a605200320163b01a405200320173a00a305200320183a00a2052003201f3b01a005200341a0046a200341a0036a2008200341a0036a200341a0056a412010e70741004710e10520032d00a00422024104460d2e20032902a404210720032f00a10420032d00a3044110747241087421030c010b41022102410021030b200042003703082000411c6a2007370200200041186a2003200272360200420121070c300b200141306a2903002107200141286a2903002105200141216a2d00002108200341a0046a41186a200141196a290000370300200341a0046a41106a200141116a290000370300200341a0046a41086a200141096a290000370300200320012900013703a0044102210120022d00000d1020022d000141ff01714101470d102002411a6a2901002106200241196a2d00002101200241186a2d00002109200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021182003200241096a2d00003a00e702200320143a00e602200320153b01e402200320163a00e302200320173a00e202200320183b01e0022003200e3a00ef022003200f3a00ee02200320103b01ec02200320113a00eb02200320123a00ea02200320133b01e802200320013a00f702200320093a00f6022003200a3b01f4022003200b3a00f3022003200c3a00f2022003200d3b01f002200320063701f802200341a0036a41186a2006370300200341a0036a41106a20032901f002370300200341a0036a41086a20032901e802370300200320032901e0023703a003200341a0056a200341a0036a10d20520032d00a00522024102460d0a20024101470d0a200341a0056a41186a2d00002102200341b7056a2d00002101200341b5056a2f00002109200341b4056a2d0000210a200341b3056a2d0000210b200341b1056a2f0000210c200341a0056a41106a2d0000210d200341af056a2d0000210e200341ad056a2f0000210f200341a0056a410c6a2d00002110200341ab056a2d00002111200341a9056a2f00002112200341a0056a41086a2d0000211320032d00a705211420032f00a505211520032d00a405211620032d00a305211720032d00a205211820032d00a105211f2003200341b9056a2900003703b803200320023a00b703200320013a00b603200320093b01b4032003200a3a00b3032003200b3a00b2032003200c3b01b0032003200d3a00af032003200e3a00ae032003200f3b01ac03200320103a00ab03200320113a00aa03200320123b01a803200320133a00a703200320143a00a603200320153b01a403200320163a00a303200320173a00a203200320183a00a1032003201f3a00a003200341a0056a41186a200341a0046a41186a290300370300200341a0056a41106a200341a0046a41106a290300370300200341a0056a41086a200341a0046a41086a290300370300200320032903a0043703a00520034180036a200341a0036a200341a0056a20082005200710da05200328028403210102402003280280034101470d0020034180036a41086a280200210920034180036a410c6a280200210a2001411876210320014110762108200141087621020c120b20004201370308200041106a2001ad220742c0b2cd3b7e20074280a4e8037e7c4280f19e9b027c370300420021070c2f0b4102210120022d00000d0d20022d000141ff01714101470d0d2002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f010021172003200241096a2d00003a00e702200320133a00e602200320143b01e402200320153a00e302200320163a00e202200320173b01e0022003200d3a00ef022003200e3a00ee022003200f3b01ec02200320103a00eb02200320113a00ea02200320123b01e802200320013a00f702200320083a00f602200320093b01f4022003200a3a00f3022003200b3a00f2022003200c3b01f002200320073701f802200341a0036a41186a2007370300200341a0036a41106a20032901f002370300200341a0036a41086a20032901e802370300200320032901e0023703a003200341a0056a200341a0036a10d20520032d00a00522024102460d0a20024101470d0a200341a0056a41186a2d00002102200341b7056a2d00002101200341b5056a2f00002108200341b4056a2d00002109200341b3056a2d0000210a200341b1056a2f0000210b200341a0056a41106a2d0000210c200341af056a2d0000210d200341ad056a2f0000210e200341a0056a410c6a2d0000210f200341ab056a2d00002110200341a9056a2f00002111200341a0056a41086a2d0000211220032d00a705211320032f00a505211420032d00a405211520032d00a305211620032d00a205211720032d00a10521182003200341b9056a2900003703b805200320023a00b705200320013a00b605200320083b01b405200320093a00b3052003200a3a00b2052003200b3b01b0052003200c3a00af052003200d3a00ae052003200e3b01ac052003200f3a00ab05200320103a00aa05200320113b01a805200320123a00a705200320133a00a605200320143b01a405200320153a00a305200320163a00a205200320173a00a105200320183a00a005200341a0036a200341a0056a10db0520032802a4032101024020032802a0034101470d00200341a0036a41086a2802002109200341a0036a410c6a280200210a2001411876210320014110762108200141087621020c0f0b20004201370308200041106a2001ad220742c0b2cd3b7e20074280a4e8037e7c42c0899a96017c370300420021070c2e0b20022d00000d0a20022d000141ff01714101470d0a200141046a28020021182002411a6a2901002107200241196a2d00002101200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f010021172003200241096a2d00003a00e702200320133a00e602200320143b01e402200320153a00e302200320163a00e202200320173b01e0022003200d3a00ef022003200e3a00ee022003200f3b01ec02200320103a00eb02200320113a00ea02200320123b01e802200320013a00f702200320083a00f602200320093b01f4022003200a3a00f3022003200b3a00f2022003200c3b01f002200320073701f802200341a0036a41186a2007370300200341a0036a41106a20032901f002370300200341a0036a41086a20032901e802370300200320032901e0023703a003200341a0056a200341a0036a10d2050240024020032d00a00522024102460d0020024101460d010b410310d5042102200341b8026a410310d604200320023a00820320034183223b018003200320032903b802370284030c0c0b200341a0056a41186a2d00002102200341b7056a2d00002101200341b5056a2f00002108200341b4056a2d00002109200341b3056a2d0000210a200341b1056a2f0000210b200341a0056a41106a2d0000210c200341af056a2d0000210d200341ad056a2f0000210e200341ac056a2d0000210f200341ab056a2d00002110200341a9056a2f00002111200341a0056a41086a2d0000211220032d00a705211320032f00a505211420032d00a405211520032d00a305211620032d00a205211720032d00a105211f2003200341b9056a2900003703b804200320023a00b704200320013a00b604200320083b01b404200320093a00b3042003200a3a00b2042003200b3b01b0042003200c3a00af042003200d3a00ae042003200e3b01ac042003200f3a00ab04200320103a00aa04200320113b01a804200320123a00a704200320133a00a604200320143b01a404200320153a00a304200320163a00a204200320173a00a1042003201f3a00a00420034180036a200341a0046a2018410010e10520032d0080034104460d290c0b0b200141246a2802002108200341a0036a41186a2209200141196a290000370300200341a0036a41106a220a200141116a290000370300200341a0036a41086a220b200141096a290000370300200320012900013703a003024002400240024020022d000120022d000041004772450d00200341023a00a0040c010b200341a0056a41186a2009290300370300200341a0056a41106a200a290300370300200341a0056a41086a200b290300370300200320032903a0033703a005200341a0046a200341a0056a200810da0420032d00a0044104460d0120032902a40421070b20032802a00421032000411c6a2007370200200041186a2003360200420121070c010b420021070b200042003703080c2c0b410110d5042109200341106a410110d60441032102411121082003280210210a200328021421030c2a0b410210d5042109200341206a410210d6044103210241112101410021082003280220210b2003280224210a0c250b200341023a00c0020c230b2008200a1041000b20004200370308200041186a4102360200420121070c270b20004200370308200041186a4102360200420121070c260b20004200370308200041186a4102360200420121070c250b41032101410310d5042108200341a8026a410310d6044111210220032802a802210920032802ac02210a0c060b41032101410310d5042108200341b0026a410310d6044111210220032802b002210920032802b402210a0c030b200341023a0080030b20032802800321022000411c6a200329028403370200200041186a200236020020004200370308420121070c210b0b200020033a001b200020083a001a200020023a001920004200370308200041206a200a3602002000411c6a2009360200200041186a20013a0000420121070c1f0b0b200041206a200a3602002000411c6a2009360200200020033a001b200020083a001a200020023a0019200041186a20013a000020004200370308420121070c1d0b200041186a410236020020004200370308420121070c1c0b200210d5042102200341f0016a20012d000010d60420032802f401210120032802f0012108410321030c030b41c6a3c700ad42808080809005841008411310d504210220034180026a411310d604200328028402210820032802800221090b2008ad4220862009ad8421070b024020032802a403450d00200110290b2007422088a721012007a72108410321030b20004200370308200041206a20013602002000411c6a2008360200200041186a200241ff017141107420037241802272360200420121070c170b200341a0056a41186a200341a0036a41186a290300370300200341a0056a41106a200341a0036a41106a290300370300200341a0056a41086a200341a0036a41086a290300370300200320032903a0033703a0054100210a200341a0056a2101410021080b0240200a200f470d00200341c0026a200a4101109e0120032802c402210f20032802c002210e0b200e20084105746a220241206a2002200a20086b41057410e5071a20022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002003200a41016a22023602c802200341a0056a41186a4200370300200341a0056a41106a22094200370300200341a0056a41086a22014200370300200342003703a00541b3e6ca00ad4280808080e000841001220829000021072001200841086a290000370300200320073703a0052008102941c9e6ca00ad4280808080e00084100122082900002107200341e0026a41086a220a200841086a290000370300200320073703e00220081029200920032903e0022207370300200341a0046a41086a2001290300370300200341a0046a41106a2007370300200341a0046a41186a200a290300370300200320032903a0053703a004200341a0016a200341a0046a412010fc0120032802a401210920032802a001210a200341a0046a20034180036a10d7052002410574220b41047241046a2201417f4c0d0220033502a804210720032802a0042110200110272208450d002008200941c093066a41c09306200a1b2211360000200341043602a805200320013602a405200320083602a0052002200341a0056a10710240024020020d0020032802a805210120032802a405210920032802a005210d0c010b410020032802a80522016b210a20032802a005210d20032802a4052109200e210c0340200c210202402009200a6a411f4b0d00200141206a22082001490d042009410174220c2008200c20084b1b22084100480d04024002400240024020090d00024020080d004101210d0c020b20081027210d0c030b20092008470d010b200821090c020b200d20092008102b210d0b20082109200d450d150b200241206a210c200d20016a22082002290000370000200841186a200241186a290000370000200841106a200241106a290000370000200841086a200241086a290000370000200a41606a210a200141206a2101200b41606a220b0d000b200320093602a405200320013602a8052003200d3602a0050b20074220862010ad842001ad422086200dad84100302402009450d00200d10290b024020032802a404450d00201010290b0240200f41ffffff3f71450d00200e10290b200341a0056a41086a410a3a0000200341c9056a200329038003370000200341093a00a005200341a0056a41096a20032903a003370000200341b1056a200341a0036a41086a290300370000200341b9056a200341a0036a41106a290300370000200341c1056a200341a0036a41186a290300370000200341d1056a20034180036a41086a290300370000200341d9056a20034180036a41106a290300370000200341e1056a20034180036a41186a290300370000200341ec056a2011360200200341a0056a10cb0141c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341e0026aad428080808080048410040c110b1039000b1032000b1038000b410321010b20004200370308200041206a20083602002000411c6a2003360200200041186a200241ff017141107420017241802272360200420121070c100b200941ff01710d01200c200b490d010b41c99fc500ad4280808080900184100122022900002107200229000821052002102941d892c700ad4280808080c001841001220229000021062002290008211920021029200320193701f802200320063701f002200320053701e802200320073701e002200341a0056a200341e0026a10a30520032d00c00522024103460d0120032f01a005210120032d00a205210920032d00a305210a20032f01a405210b20032d00a605210c20032d00a705210e20032f01a805210f20032d00aa05211020032d00ab05211120032f01ac05211220032d00ae05211320032d00af05211420032f01b005211520032d00b205211620032d00b305211720032f01b405211820032d00b605211f20032d00b705211e200320032903b8053703b8032003201e3a00b7032003201f3a00b603200320183b01b403200320173a00b303200320163a00b203200320153b01b003200320143a00af03200320133a00ae03200320123b01ac03200320113a00ab03200320103a00aa032003200f3b01a8032003200e3a00a7032003200c3a00a6032003200b3b01a4032003200a3a00a303200320093a00a203200320013a00a00341082109200320014108763a00a103024002402002450d0020034180036a200341a0036a412010e707450d0641092109200341093a00a005200341a0056a21010c010b200341083a00a005200341a0056a21010b200910d504210220034188016a20012d000010d604200328028c01210120032802880121030c020b410221080c020b410210d504210220034180016a410210d604200328028401210120032802800121030b410321080b20004200370308200041206a20013602002000411c6a2003360200200041186a200241ff017141107420087241802272360200420121070c0a0b41c99fc500ad4280808080900184100122012900002107200129000821052001102941d892c700ad4280808080c001841001220129000021062001290008211920011029200320193701f802200320063701f002200320053701e802200320073701e002200341e0026aad4280808080800484100442002107200341a0056a41186a220b4200370300200341a0056a41106a22094200370300200341a0056a41086a22014200370300200342003703a00541b3e6ca00ad4280808080e000841001220a29000021052001200a41086a290000370300200320053703a005200a102941c9e6ca00ad4280808080e000841001220a2900002105200341e0026a41086a220c200a41086a290000370300200320053703e002200a1029200920032903e0022205370300200341a0046a41086a2001290300370300200341a0046a41106a2005370300200341a0046a41186a200c290300370300200320032903a0053703a00420034190016a200341a0046a412010fc01200328029401210a200328029001210c200b20034180036a41186a290300370300200920034180036a41106a290300370300200120034180036a41086a29030037030020032003290380033703a005200a4100200c1b20086a200341a0056a2002200d10a405200042003703080c090b411410d5042101200341c8006a20022d000010d604200328024c2108200328024821094103210a0c010b0b20004200370308200041206a20083602002000411c6a2009360200200041186a200141ff0171411074200a7241802272360200420121070c060b20032802c00221022000411c6a20032902c402370200200041186a200236020020004200370308420121070c050b20004200370308200041206a200a3602002000411c6a200b360200200041186a2008411874200941ff01714110747220014108744180fe037172200241ff017172360200420121070c040b42002107200042003703080c030b1030000b4102210241002101410021080b20004200370308200041206a20033602002000411c6a200a360200200041186a2001411874200941ff01714110747220084108744180fe037172200241ff017172360200420121070b20002007370300200424000bb26f08027f017e177f017e017f017e017f037e23004180076b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b200341bc046a4101360200200342013702ac0420034198e3ca003602a8042003410436028402200341cce3ca0036028002200320034180026a3602b804200341a8046a4180a6cc001040000b20012d000121042001411a6a2900002105200141196a2d00002106200141186a2d00002107200141166a2f00002108200141156a2d00002109200141146a2d0000210a200141126a2f0000210b200141116a2d0000210c200141106a2d0000210d2001410e6a2f0000210e2001410d6a2d0000210f2001410c6a2d000021102001410a6a2f00002111200141096a2d00002112200141086a2d00002113200141066a2f00002114200141056a2d00002115200141046a2d00002116200141026a2f000021172001412c6a2802002118200141286a2802002119200141246a280200211a2003200141306a2802002201360268024020022d000120022d0000410047720d000240201841e500490d0041002802d8a74c450d002003418c026a41013602002003410136028402200341b0e3c80036028002200320183602d8012003200341d8016a3602880241002802888040210141002802848040210241002802dca74c211b200341e8046a418003360200200341e0046a42de80808010370300200341dc046a41dde3c800360200200341d4046a4211370200200341d0046a41cce3c800360200200341c8046a4202370300200341b8046a4203370300200341b0046a4111360200200341c4046a20034180026a360200200341b4e3c8003602b404200341cce3c8003602ac04200341013602a80420024180a4c000201b410246221b1b200341a8046a20014198a4c000201b1b280210110200200328026821010b200341a8046a41186a4200370300200341a8046a41106a22024200370300200341a8046a41086a221b4200370300200342003703a8044193d4c800ad4280808080b002841001221c290000211d201b201c41086a2900003703002003201d3703a804201c102941f0edca00ad4280808080f000841001221c290000211d200341c8006a41086a221e201c41086a2900003703002003201d370348201c102920022003290348221d37030020034180026a41086a201b29030037030020034180026a41106a201d37030020034180026a41186a201e290300370300200320032903a80437038002200341a8046a20034180026a108d0220032802a804221b4101201b1b211c0240200120032902ac044200201b1b221d422088221fa7221b4f0d0041002802d8a74c4102490d002003418c026a410136020020034101360284022003201b3602d8012003200341d8016a360288022003200341e8006a3602800241002802888040210141002802848040211e41002802dca74c2120200341e8046a418903360200200341e0046a42de80808010370300200341dc046a41dde3c800360200200341d4046a4211370200200341d0046a41cce3c800360200200341c8046a4202370300200341b8046a4203370300200341b0046a4111360200200341c4046a20034180026a36020020034190d5c9003602b404200341cce3c8003602ac04200341023602a804201e4180a4c000202041024622201b200341a8046a20014198a4c00020201b2802101102000b201a201810bb05200341a8046a201a2018201c201b10e5062002280200210120032802ac04210220032802a804211b20032802b404221e200341bc046a280200201a201810ef060240200141ffffff3f71450d00201e10290b0240200241ffffff3f71450d00201b10290b02400240200441ff01710d00200341c8006a41186a4200370300200341c8006a41106a22064200370300200341c8006a41086a22024200370300200342003703484193d4c800ad4280808080b00284100122042900002105200341d8016a41086a2201200441086a290000370300200320053703d8012004102920022001290300370300200320032903d80137034841f8d7ca00ad4280808080d000841001220429000021052001200441086a290000370300200320053703d80120041029200620032903d801220537030020034180026a41086a200229030037030020034180026a41106a200537030020034180026a41186a2001290300370300200320032903483703800220034180026aad428080808080048410040c010b200320053703c004200320063a00bf04200320073a00be04200320083b01bc04200320093a00bb042003200a3a00ba042003200b3b01b8042003200c3a00b7042003200d3a00b6042003200e3b01b4042003200f3a00b304200320103a00b204200320113b01b004200320123a00af04200320133a00ae04200320143b01ac04200320153a00ab04200320163a00aa04200320173b01a804200341286a41186a4200370300200341286a41106a22064200370300200341286a41086a22024200370300200342003703284193d4c800ad4280808080b0028410012204290000210520034180026a41086a2201200441086a29000037030020032005370380022004102920022001290300370300200320032903800237032841f8d7ca00ad4280808080d000841001220429000021052001200441086a29000037030020032005370380022004102920062003290380022205370300200341c8006a41086a2002290300370300200341c8006a41106a2005370300200341c8006a41186a200129030037030020032003290328370348412010272201450d06200120032903a804370000200141186a200341a8046a41186a290300370000200141106a200341a8046a41106a290300370000200141086a200341a8046a41086a290300370000200341c8006aad42808080808004842001ad42808080808004841003200110290b201f42c0de810a7e2018ad42b0db067e7c21050240201941ffffff3f71450d00201a10290b200542809591c7397c21050240201d42ffffff3f83500d00201c10290b200041106a200537030020004201370308200042003703000c1b0b0240201941ffffff3f71450d00201a10290b200320032900e0063703b8012003200341e7066a2900003700bf01200041186a41023a000020004200370308200020032903b801370019200041206a20032900bf01370000200042013703000c1a0b200141086a2802002119200141046a280200211a20032002411a6a29010037039802410221012003200241026a2901003703800220032002410a6a290100370388022003200241126a29010037039002024002400240024020022d00014101470d0020022d000041ff01710d00200341b8016a41186a20034180026a41186a2218290300370300200341b8016a41106a20034180026a41106a2204290300370300200341b8016a41086a20034180026a41086a220629030037030020032003290380023703b801200341a8046a41186a4200370300200341a8046a41106a22074200370300200341a8046a41086a22014200370300200342003703a8044193d4c800ad4280808080b002841001220229000021052001200241086a290000370300200320053703a8042002102941f0edca00ad4280808080f00084100122022900002105200341c8006a41086a2208200241086a2900003703002003200537034820021029200720032903482205370300200620012903003703002004200537030020182008290300370300200320032903a80437038002200341a8046a20034180026a108d0220032902ac04420020032802a80422011b2205422088221da741057421022001410120011b22042101024002400340024020020d004100210241eeebca002118410921190c020b0240200341b8016a2001460d00200241606a21022001200341b8016a412010e7072118200141206a210120180d010b0b200341003602b004200342013703a804201a200341a8046a10bf0220032802b0042102024020032802ac04450d0020032802a80410290b200220194d0d014109210241e7d5c8002118411321190b41032101200542ffffff3f83500d02200410290c020b200341003602b004200342013703a804201a200341a8046a10bf0220032802ac042118200341e0066a41186a221920033502b00442208620032802a8042208ad841010220141186a290000370300200341e0066a41106a2206200141106a290000370300200341e0066a41086a2207200141086a290000370300200320012900003703e0062001102902402018450d00200810290b200341a8046a201a41a80210e4071a2003418d026a200341b8016a41086a29030037000020034195026a200341b8016a41106a2903003700002003419d026a200341b8016a41186a290300370000200341013a008402200320032903b80137008502200341013a008002200341d8016a200341a8046a20034180026a10c501200341c8006a41186a2019290300370300200341c8006a41106a2006290300370300200341c8006a41086a2007290300370300200320032903e006370348200341d8016a41186a2d0000211820032903e001211f20032903d8012121200320032900f1013703a8042003200341f8016a2800003600af040240024020214201510d00410421010c010b200320032800af043600af01200320032903a8043703a80141042101201f4202510d00200320032800af0136009f01200320032903a80137039801201821010b200341286a41086a2218200341c8006a41086a290300370300200341286a41106a2219200341c8006a41106a290300370300200341286a41186a2206200341c8006a41186a290300370300200320032903483703282003200329039801370388012003200328009f0136008f01200341053a00ac042003410a3a00a804200341b5046a2018290300370000200341bd046a2019290300370000200341c5046a2006290300370000200341d0046a20013a0000200320032903283700ad04200341cd046a20032f0095013b0000200341cf046a20034197016a2d00003a0000200341d1046a200329038801370000200341d8046a200328008f01360000200341f4046a200341e8006a41186a280200360200200341ec046a200341e8006a41106a290200370200200341e4046a200341e8006a41086a290200370200200341dc046a2003290268370200200341a8046a10cb01201fa70d024200211d0c030b0b201a10cc01201a1029200041206a20193602002000411c6a2018360200200020023a001a200041123a0019200041186a20013a000020004200370308200042013703000c1b0b427f2002ad42a01f7e201d42c0a9077e7c4280d8f1167c221d200341d8016a41106a2903007c221f201f201d541b211f4201211d0b0240200542ffffff3f83500d00200410290b201a1029200041106a201f3703002000201d370308200042003703000c190b2001410c6a2802002119200141046a28020021042003200141086a280200221a3602b4014102210120022d00000d1620022d00014101470d16200241196a2d00002101200241186a2d00002118200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f0100211520032002411a6a2901003703d001200320013a00cf01200320183a00ce01200320063b01cc01200320073a00cb01200320083a00ca01200320093b01c8012003200a3a00c7012003200b3a00c6012003200c3b01c4012003200d3a00c3012003200e3a00c2012003200f3b01c001200320103a00bf01200320113a00be01200320123b01bc01200320133a00bb01200320143a00ba01200320153b01b801200341a8046a41186a4200370300200341a8046a41106a22064200370300200341a8046a41086a22014200370300200342003703a8044193d4c800ad4280808080b002841001220229000021052001200241086a290000370300200320053703a8042002102941f0edca00ad4280808080f00084100122022900002105200341c8006a41086a2218200241086a290000370300200320053703482002102920062003290348220537030020034180026a41086a200129030037030020034180026a41106a200537030020034180026a41186a2018290300370300200320032903a80437038002200341a8046a20034180026a108d0220032902ac04420020032802a80422011b2205422088221da741057421022001410120011b220721010340024020020d004109211941eeebca002118410021020c160b0240200341b8016a2001460d00200241606a21022001200341b8016a412010e7072118200141206a210120180d010b0b200341003602b004200342013703a804201a200341a8046a10bf0220032802b0042118024020032802ac04450d0020032802a80410290b0240201820194d0d004113211941e7d5c8002118410921020c150b200341003602b004200342013703a804201a200341a8046a10bf0220032802ac042102200341e0066a41186a221920033502b00442208620032802a804220aad841010220141186a290000370300200341e0066a41106a2208200141106a290000370300200341e0066a41086a2209200141086a290000370300200320012900003703e0062001102902402002450d00200a10290b200341a8046a41186a2019290300370300200341a8046a41106a2008290300370300200341a8046a41086a2009290300370300200320032903e0063703a80420034180026a200341a8046a108107200341186a20032802800222022003280288024180a6cc004100410010c701200328021821010240200328028402450d00200210290b4101210220014101460d03024002400240024020044102490d00200341a8046a41186a22194200370300200341a8046a41106a22084200370300200341a8046a41086a22014200370300200342003703a8044193d4c800ad4280808080b0028410012202290000211f2001200241086a2900003703002003201f3703a80420021029419fdec900ad428080808090018410012202290000211f200341c8006a41086a2209200241086a2900003703002003201f3703482002102920062003290348370000200641086a200929030037000020034180026a41086a200129030037030020034180026a41106a200829030037030020034180026a41186a2019290300370300200320032903a80437038002200341a8046a20034180026a412010ce010240024020032802a80422020d0041002101200341003602702003420137036841012102410021190c010b200320032902ac04221f37026c20032002360268201f422088a72101201fa721190b200341286a41186a2208200341e0066a41186a290300370300200341286a41106a2209200341e0066a41106a290300370300200341286a41086a220a200341e0066a41086a290300370300200320032903e006370328024020012019470d00200341e8006a20014101109e0120032802682102200328027021010b200220014105746a22192003290328370000201941186a2008290300370000201941106a2009290300370000201941086a200a2903003700002003200141016a2208360270200328026c2119200841e4004b0d03200341286a41186a4200370300200341286a41106a220b4200370300200341286a41086a22094200370300200342003703284193d4c800ad4280808080b002841001220a290000211f200341d8016a41086a2201200a41086a2900003703002003201f3703d801200a102920092001290300370300200320032903d801370328419fdec900ad42808080809001841001220a290000211f2001200a41086a2900003703002003201f3703d801200a1029200b20032903d801221f370300200341c8006a41086a2009290300370300200341c8006a41106a201f370300200341c8006a41186a2001290300370300200320032903283703480240024020020d00200341c8006aad428080808080048410040c010b200341203602ac042003200341c8006a3602a80420022008200341a8046a10cf01201941ffffff3f71450d00200210290b200341c8006a41186a22094200370300200341c8006a41106a22194200370300200341c8006a41086a22024200370300200342003703484193d4c800ad4280808080b00284221f1001220a2900002121200341d8016a41086a2201200a41086a290000370300200320213703d801200a102920022001290300370300200320032903d80137034841a0b9ca00ad4280808080d0018422211001220a29000021222001200a41086a290000370300200320223703d801200a1029201920032903d8012222370300200341286a41086a220a2002290300370300200341286a41106a220b2022370300200341286a41186a220c200129030037030020032003290348370328200341106a200341286a412010fc012003280214210e2003280210210f20094200370300201942003703002002420037030020034200370348201f1001220d29000021222001200d41086a290000370300200320223703d801200d102920022001290300370300200320032903d80137034820211001220d29000021222001200d41086a290000370300200320223703d801200d1029201920032903d8012222370300200a2002290300370300200b2022370300200c200129030037030020032003290348370328200341086a200341286a412010fc012003280208210d200328020c211020094200370300201942003703002002420037030020034200370348201f10012209290000211f2001200941086a2900003703002003201f3703d8012009102920022001290300370300200320032903d801370348202110012209290000211f2001200941086a2900003703002003201f3703d80120091029201920032903d801221f370300200a2002290300370300200b201f370300200c2001290300370300200320032903483703282003201041016a4101200d1b3602a804200341286aad4280808080800484200341a8046aad4280808080c000841003200341a8046a201a41a80210e4071a20034180026a41186a200341e0066a41186a29030037030020034180026a41106a200341e0066a41106a29030037030020034180026a41086a200341e0066a41086a290300370300200320032903e00637038002200341d8016a20034180026a10810720032802d801210120033502e001211f20034201370380022003410036028802200341a8046a20034180026a10bf022003280284022102201f4220862001ad84200335028802422086200328028002221aad84100302402002450d00201a10290b024020032802dc01450d00200110290b200341a8046a10cc01200341a8046a41186a221a4200370300200341a8046a41106a22194200370300200341a8046a41086a22014200370300200342003703a80441b3e6ca00ad4280808080e0008410012202290000211f2001200241086a2900003703002003201f3703a8042002102941c9e6ca00ad4280808080e0008410012202290000211f200341c8006a41086a2209200241086a2900003703002003201f3703482002102920062003290348370000200641086a200929030037000020034180026a41086a2202200129030037030020034180026a41106a2206201929030037030020034180026a41186a2219201a290300370300200320032903a80437038002200320034180026a412010fc012003280204211a20032802002109412010272201450d08200120032903b801370000200141186a200341b8016a41186a290300370000200141106a200341b8016a41106a290300370000200141086a200341b8016a41086a290300370000200341c4046a4100360200200341b4046a4281808080103702002003201a41c093066a41c0930620091b3602c8044201211f200342013702bc04200320013602b004200320043602ac042003200e4100200f1b221a3602a8042019200341e0066a41186a2903003703002006200341e0066a41106a2903003703002002200341e0066a41086a290300370300200320032903e00637038002200341d8016a20034180026a10f00620032802d8012102200320032802e001360284022003200236028002200341a8046a20034180026a10bf05024020032802dc01450d00200210290b20011029200341b5046a200341b8016a41086a290300370000200341bd046a200341b8016a41106a290300370000200341c5046a200341b8016a41186a290300370000200341cd046a20032903e006370000200341d5046a200341e0066a41086a290300370000200341dd046a200341e0066a41106a290300370000200341e5046a200341e0066a41186a290300370000200341f4046a2004360200200341f0046a201a360200200341003a00ac042003410a3a00a804200320032903b8013700ad042018ad42f02e7e201d42b0db067e7c2008ad42b0901f7e7c4280aba186027c211d200341a8046a10cb01200542ffffff3f8350450d010c020b200341a8046a41186a22194200370300200341a8046a41106a22044200370300200341a8046a41086a22014200370300200342003703a8044193d4c800ad4280808080b0028410012202290000211f2001200241086a2900003703002003201f3703a8042002102941f0edca00ad4280808080f0008410012202290000211f200341c8006a41086a2208200241086a2900003703002003201f3703482002102920062003290348370000200641086a200829030037000020034180026a41086a200129030037030020034180026a41106a200429030037030020034180026a41186a2019290300370300200320032903a80437038002200341d8016a20034180026a108d020240024020032802d80122020d00410021010c010b20032902dc01221f422088a72101201f42ffffff3f83500d00200210290b200341a8046a201a41a80210e4071a2003418c026a200136020020034180026a41086a22014101360200200341003a008402200341013a008002200341d8016a200341a8046a20034180026a10c50120034180026a41186a200341e0066a41186a29030037030020034180026a41106a200341e0066a41106a2903003703002001200341e0066a41086a290300370300200320032903e00637038002200341d8016a41186a2d0000210220032903e001211f20032903d8012121200320032900f1013703a8042003200341f8016a2800003600af040240024020214201510d00410421010c010b200320032800af043600af01200320032903a8043703a80141042101201f4202510d00200320032800af0136009f01200320032903a80137039801200221010b200341c8006a41086a220220034180026a41086a290300370300200341c8006a41106a221a20034180026a41106a290300370300200341c8006a41186a221920034180026a41186a29030037030020032003290380023703482003200329039801370388012003200328009f0136008f01200341043a00ac042003410a3a00a804200341b5046a2002290300370000200341bd046a201a290300370000200341c5046a2019290300370000200341d0046a20013a0000200320032903483700ad04200341cd046a20032f0095013b0000200341cf046a20034197016a2d00003a0000200341d1046a200329038801370000200341d8046a200328008f01360000200341f4046a200341e8006a41186a280200360200200341ec046a200341e8006a41106a290200370200200341e4046a200341e8006a41086a290200370200200341dc046a2003290268370200200341a8046a10cb0102400240201fa70d004200211f0c010b427f2018ad42b8177e201d42e0b60d7e7c42c0e3d5257c221d200341d8016a41106a2903007c221f201f201d541b211d4201211f0b200542ffffff3f83500d010b200710290b20032802b4011029200041106a201d3703002000201f370308200042003703000c190b0240201941ffffff3f71450d00200210290b41102119418dd6c80021184107210241032101200542ffffff3f83500d170c150b200141216a2d00002115200141246a2802002114200341e0066a41186a200141196a290000370300200341e0066a41106a200141116a290000370300200341e0066a41086a200141096a290000370300200320012900013703e0062002411a6a2901002105200241196a2d00002118200241186a2d0000211a200241166a2f01002119200241156a2d00002104200241146a2d00002106200241126a2f01002107200241116a2d00002108200241106a2d000021092002410e6a2f0100210a2002410d6a2d0000210b2002410c6a2d0000210c2002410a6a2f0100210d200241096a2d0000210e200241086a2d0000210f200241066a2f01002110200241056a2d00002111200241046a2d00002112200241026a2f0100211341012101024020022d00000d0020022d000141014721010b2003200537039802200320183a0097022003201a3a009602200320193b019402200320043a009302200320063a009202200320073b019002200320083a008f02200320093a008e022003200a3b018c022003200b3a008b022003200c3a008a022003200d3b0188022003200e3a0087022003200f3a008602200320103b018402200320113a008302200320123a008202200320133b018002024020010d00200341d8016a41186a20034180026a41186a2218290300370300200341d8016a41106a20034180026a41106a221a290300370300200341d8016a41086a20034180026a41086a221929030037030020032003290380023703d801200341a8046a41186a4200370300200341a8046a41106a22044200370300200341a8046a41086a22014200370300200342003703a8044193d4c800ad4280808080b002841001220229000021052001200241086a290000370300200320053703a8042002102941f0edca00ad4280808080f00084100122022900002105200341c8006a41086a2206200241086a290000370300200320053703482002102920042003290348220537030020192001290300370300201a200537030020182006290300370300200320032903a80437038002200341a8046a20034180026a108d0220032902ac04420020032802a80422011b2205422088221fa741057421022001410120011b220421010340024020020d004109210141eeebca002102410021180c140b0240200341d8016a2001460d00200241606a21022001200341d8016a412010e7072118200141206a210120180d010b0b200341b8016a200341e0066a108207200341a8046a20032802b801220220032802c00110c10520032802bc0121010240024020032802b0042206450d00200341c8046a2802002118200341c4046a2802002108200341c0046a280200210b200341bc046a280200210a200341b8046a280200210720032802b404210920032903a804211d02402001450d00200210290b2003419c026a200836020020034198026a200b36020020034190026a20073602002003418c026a2009360200200320183602a0022003200a3602940220032006360288022003201d370380022014201da7460d01410a210141c4d6c8002102410321180c130b02402001450d00200210290b410f210141ced6c8002102410221180c130b41002102410021184100210c02402007450d002007410574211a410021182006210102400340200341d8016a2001460d0120182001200341d8016a412010e70722194100476a21182019450d01200141206a2101201a41606a221a0d000b4100210c0c010b4101210c0b4100210102402008450d002008410574211a41002102200a210102400340200341d8016a2001460d0120022001200341d8016a412010e70722194100476a21022019450d01200141206a2101201a41606a221a0d000b410021010c010b410121010b02400240201541ff01710d002001450d010c120b200c0d11200341286a41186a221a200341d8016a41186a290300370300200341286a41106a2219200341d8016a41106a290300370300200341286a41086a2208200341d8016a41086a290300370300200320032903d801370328024020072009470d0020034188026a20094101109e01200328029002210720032802880221060b200620074105746a22182003290328370000201841186a201a290300370000201841106a2019290300370000201841086a20082903003700002003200741016a221936029002200328029c02211a2001450d10201a20024d0d062003280294022218201a417f6a221a4105746a2201290000211d2001290008212120012900102122200141186a29000021232003201a36029c02201820024105746a220141186a202337000020012022370010200120213700082001201d3700000c100b200341c8006a41186a2202200341d8016a41186a290300370300200341c8006a41106a221a200341d8016a41106a290300370300200341c8006a41086a2219200341d8016a41086a290300370300200320032903d80137034802402008200b470d0020034194026a200b4101109e01200328029c022108200328029402210a0b200a20084105746a22012003290348370000200141186a2002290300370000200141106a201a290300370000200141086a20192903003700002003200328029c0241016a221a36029c022003280290022119200c450d0f201920184d0d0620032802880222022019417f6a22194105746a2201290000211d2001290008212120012900102122200141186a29000021232003201936029002200220184105746a220141186a202337000020012022370010200120213700082001201d3700000c0f0b4102211a0c120b200141286a280200211a200141306a2903002105200141246a2802002118200341b8016a41186a200141196a290000370300200341c8016a200141116a290000370300200341c0016a200141096a290000370300200320012900013703b8014102210120022d00000d0a20022d00014101470d0a20034180026a200341b8016a108207200341a8046a200328028002220220032802880210c10520032802840221010240024020032802b0042206450d00200341c8046a280200210c200341c4046a2802002104200341c0046a2802002107200341bc046a280200210a200341b8046a280200211920032802b404210820032903a804211d02402001450d00200210290b41122102410321012018201da7460d01410a211841c4d6c80021044103211a0c0a0b02402001450d00200210290b410f211841ced6c80021044102211a41122102410321010c0c0b201d422088a7210d200341a8046a41186a4200370300200341a8046a41106a220b4200370300200341a8046a41086a22184200370300200342003703a8044193d4c800ad4280808080b0028410012209290000211f2018200941086a2900003703002003201f3703a8042009102941f0edca00ad4280808080f0008410012209290000211f200341c8006a41086a220e200941086a2900003703002003201f37034820091029200b2003290348221f37030020034180026a41086a201829030037030020034180026a41106a201f37030020034180026a41186a200e290300370300200320032903a80437038002200341d8016a20034180026a108d020240024020032802d80122180d00410021090c010b20032902dc01221f422088a72109201f42ffffff3f83500d00201810290b0240024002402019200d4f220e0d004100200920046b2218201820094b1b200d490d00200341a8046a41186a22104200370300200341a8046a41106a2211420037030041082118200341a8046a41086a220e4200370300200342003703a80441b3e6ca00ad4280808080e000841001220f290000211f200e200f41086a2900003703002003201f3703a804200f102941c9e6ca00ad4280808080e000841001220f290000211f200341c8006a41086a2212200f41086a2900003703002003201f370348200f1029200b2003290348370000200b41086a201229030037000020034180026a41086a200e29030037030020034180026a41106a201129030037030020034180026a41186a2010290300370300200320032903a80437038002200341206a20034180026a412010fc012003280224410020032802201b200c4f0d01419dd6c80021044106211a0c0b0b200341a8046a200341b8016a201a200510830720032802a8044101470d01200341b4046a28020021180c090b200341c8006a41186a220e4200370300200341c8006a41106a22184200370300200341c8006a41086a22014200370300200342003703484193d4c800ad4280808080b002841001220b290000211f200341d8016a41086a2202200b41086a2900003703002003201f3703d801200b102920012002290300370300200320032903d80137034841f8d7ca00ad4280808080d000841001220b290000211f2002200b41086a2900003703002003201f3703d801200b1029201820032903d801221f370300200341286a41086a2001290300370300200341286a41106a201f370300200341286a41186a200229030037030020032003290348370328200341a8046a200341286a412010cd0120032d00a8042102200e200341c1046a2900003703002018200341b9046a2900003703002001200341b1046a290000370300200320032900a904370348024020024101460d002009200420196a6b21010c070b20034180026a41186a200341c8006a41186a290300221f37030020034180026a41106a200341c8006a41106a290300222137030020034180026a41086a2001290300222237030020032003290348222337038002200341a8046a41186a201f370300200341a8046a41106a2021370300200341a8046a41086a2022370300200320233703a804201941057421022006210102400340024020020d004100210b0c020b4101210b200341a8046a2001460d01200241606a21022001200341a8046a412010e7072118200141206a210120180d000b0b2009200420196a6b2101200b450d06200120196a2101200421020c070b200341d8066a350200210520034180026a200341a8046a41086a41a80210e4071a200341f4016a2004360200200341d8016a41186a2007360200200341d8016a41106a2019360200200341e4016a20083602002003200c3602f8012003200a3602ec01200320063602e0012003201d3703d801200341e0066a41186a200341b8016a41186a290300370300200341e0066a41106a200341b8016a41106a290300370300200341e0066a41086a200341b8016a41086a290300370300200320032903b8013703e006200341a8046a20034180026a41a80210e4071a200542c03e7e2009ad4290a10f7e7c42c0fa9dc3007c2105200e2009200341d8016a200341e0066a200341a8046a108407211d0c090b1039000b4111211941ddd6c80021180c100b1030000b2002201a103e000b20182019103e000b200120046a2102201921010b200341a8046a200341b8016a201a2005108307024020032802a8044101460d00200341d8066a350200210520034180026a200341a8046a41086a41a80210e4071a200341b5046a200341b8016a41086a2218290300370000200341bd046a200341b8016a41106a221a290300370000200341c5046a200341b8016a41186a220b290300370000200341d4046a2002360200200341d0046a2001360200200341063a00ac042003410a3a00a804200320032903b8013700ad04200341a8046a10cb01200341f4016a2004360200200341d8016a41186a2007360200200341d8016a41106a2019360200200341e4016a20083602002003200c3602f8012003200a3602ec01200320063602e0012003201d3703d801200341e0066a41186a200b290300370300200341e0066a41106a201a290300370300200341e0066a41086a2018290300370300200320032903b8013703e006200341a8046a20034180026a41a80210e4071a200542c03e7e2009ad4290a10f7e7c4280eb93cf007c21052001200d4f2009200341d8016a200341e0066a200341a8046a108407211d0c030b200341b4046a28020021180b20032802b004210420032d00af04211920032d00ae04211a20032d00ad04210220032d00ac0421010b0240200841ffffff3f71450d00200610290b200741ffffff3f71450d02200a10290c020b20004201370308200041106a427f2005201d7c221d201d2005541b370300420021050c020b0b200020193a001b2000201a3a001a200020023a001920004200370308200041206a20183602002000411c6a2004360200200041186a20013a0000420121050b200020053703000c090b200341cd046a20032903e006370000200341b5046a200341d8016a41086a290300370000200341bd046a200341d8016a41106a290300370000200341c5046a200341d8016a41186a290300370000200341d5046a200341e0066a41086a290300370000200341dd046a200341e0066a41106a290300370000200341e5046a200341e0066a41186a290300370000200341013a00ac042003410a3a00a804200320032903d8013700ad04200341f4046a201a360200200341f0046a2019360200200341ed046a20153a0000200341a8046a10cb01200341a8046a41206a20034180026a41206a280200360200200341a8046a41186a20034180026a41186a290300370300200341a8046a41106a20034180026a41106a290300370300200341a8046a41086a20034180026a41086a29030037030020032003290380023703a804200341b8016a200341e0066a10820720032802b8012101200320032802c00136024c20032001360248200341a8046a200341c8006a10bf05024020032802bc01450d00200110290b0240200341b4046a28020041ffffff3f71450d0020032802b00410290b0240200341c0046a28020041ffffff3f71450d0020032802bc0410290b201f42a0c21e7e4280aaead5007c211d0240200542ffffff3f83500d00200410290b200041106a201d37030020004201370308200042003703000c080b410d210141b7d6c8002102410421180b0240200941ffffff3f71450d00200610290b200b41ffffff3f71450d00200a10290b4103211a200542ffffff3f83500d00200410290b200041206a20013602002000411c6a2002360200200020183a001a200041123a0019200041186a201a3a000020004200370308200042013703000c040b41032101200542ffffff3f83500d020b200710290c010b0b201a10cc01201a1029200041206a20193602002000411c6a2018360200200041003a001b200020023a001a200041123a0019200041186a20013a000020004200370308200042013703000b20034180076a24000bf61407157f017e017f017e017f017e017f230041306b220224000240024020014115490d00024002402001410176220341ffffff3f712003470d0020034105742204417f4c0d000240200410272205450d002002410036020820024204370300200041606a2106200041a07f6a210741042108410021094100210a2001210b0340200b210c4100210b4101210d0240200c417f6a220e450d000240024002400240024002402000200e4105746a200c410574220f20006a41406a412010e7074100480d004102200c6b210e2007200f6a21034101210d03400240200e200d6a4101470d004100210b200c210d0c080b200d41016a210d200341206a2003412010e7072110200341606a21032010417f4a0d000b200c200d6b210e0c010b2007200f6a2103024003400240200e4101470d004100210e0c020b200e417f6a210e200341206a2003412010e7072110200341606a210320104100480d000b0b200c200e490d01200c20014b0d02200c200e6b220d4101762211450d002006200f6a21032000200e4105746a21100340200241106a41186a220f201041186a2212290000370300200241106a41106a2213201041106a2214290000370300200241106a41086a2215201041086a221629000037030020022010290000370310200341086a220b2900002117200341106a22182900002119200341186a221a290000211b201020032900003700002012201b3700002014201937000020162017370000201a200f29030037000020182013290300370000200b201529030037000020032002290310370000200341606a2103201041206a21102011417f6a22110d000b0b0240200e0d00200e210b0c050b0240200d41094d0d00200e210b0c050b200c20014b0d02200c200e6b21112000200e4105746a210f0340200c200e417f6a220b490d040240200c200b6b220d4102490d002000200e4105746a22032000200b4105746a220e412010e707417f4a0d00200e2900002117200e2003290000370000200241106a41186a2215200e41186a2210290000370300200241106a41106a2216200e41106a2212290000370300200241106a41086a2218200e41086a22132900003703002013200341086a2900003700002012200341106a2900003700002010200341186a29000037000020022017370310410121140240200d4103490d00200e41c0006a200241106a412010e707417f4a0d0041022110200f210302400340200341186a200341386a290000370000200341106a200341306a290000370000200341086a200341286a2900003700002003200341206a221229000037000020112010460d01200341c0006a21132010211420122103201041016a21102013200241106a412010e707417f4a0d020c000b0b201021140b200e20144105746a22032002290310370000200341186a2015290300370000200341106a2016290300370000200341086a20182903003700000b200b450d05200f41606a210f201141016a2111200b210e200d410a4f0d050c000b0b200e200c4180cac700104c000b200c20014180cac700104b000b200c200e417f6a220b490d00200c20014190cac700104b000b200b200c4190cac700104c000b0240200a2002280204470d002002200a4101108d012002280200210820022802082209210a0b2008200a4103746a2203200d3602042003200b3602002002200941016a22093602082009210a024020094102490d00034002400240024002400240200820092214417f6a22094103746a2203280200450d00201441037420086a221141746a280200220d200328020422104b0d010b20144103490d022003280204211020082014417d6a22034103746a280204210e0c010b4102210a0240201441024b0d0020142109200b450d090c060b20082014417d6a22034103746a280204220e2010200d6a4d0d004103210a0240201441034b0d0020142109200b450d090c060b201141646a280200200e200d6a4d0d00201421092014210a0c040b200e2010490d010b2014417e6a21030b02400240024002400240024002402014200341016a22184d0d00201420034d0d0120082003410374221a6a2203280204220a20032802006a220320082018410374221c6a22102802002216490d02200320014b0d03200020164105746a22132010280204221541057422106a210d2003410574210e200320166b220c20156b220320154f0d042005200d2003410574221010e407221220106a211120154101480d0520034101480d052006200e6a210e200d21030340200e200341606a220d201141606a220c200c200d412010e707410048220f1b2210290000370000200e41186a201041186a290000370000200e41106a201041106a290000370000200e41086a201041086a2900003700002011200c200f1b211102402013200d2003200f1b2203490d00201221100c080b200e41606a210e2012211020122011490d000c070b0b2018201441a0cac7001036000b2003201441b0cac7001036000b2016200341c0cac700104c000b2003200141c0cac700104b000b20052013201010e407221220106a2111024020154101480d00200c20154c0d002000200e6a210f201221102013210303402003200d2010200d2010412010e707410048220c1b220e290000370000200341186a200e41186a290000370000200341106a200e41106a290000370000200341086a200e41086a2900003700002010201041206a200c1b2110200341206a2103200d41206a200d200c1b220d200f4f0d03201120104b0d000c030b0b20132103201221100c010b200d2103201221100b20032010201120106b41607110e4071a2008201a6a2203200a20156a360204200320163602002008201c6a2203200341086a20142018417f736a41037410e5071a20022009360208200941014b0d000b2009210a200b450d040c010b200b450d030c000b0b1039000b1038000b0240200228020441ffffffff0171450d00200810290b2004450d01200510290c010b20014102490d002001417f6a2110200141057420006a41206a210f410121110340024002400240024020102203417f6a221020014b0d00200120106b220e4102490d03200020034105746a2203200020104105746a220c412010e707417f4a0d03200c2900002117200c2003290000370000200241106a41186a2213200c41186a220d290000370300200241106a41106a2214200c41106a2212290000370300200241106a41086a2208200c41086a22152900003703002015200341086a2900003700002012200341106a290000370000200d200341186a2900003700002002201737031041012103200e4103490d02200c41c0006a200241106a412010e707417f4a0d0241002112200f21030340200341406a220e200341606a220d290000370000200e41186a200d41186a290000370000200e41106a200d41106a290000370000200e41086a200d41086a29000037000020112012220e460d02200e417f6a21122003200241106a412010e707210d200341206a2103200d417f4a0d020c000b0b2010200141f0c9c700104c000b4102200e6b21030b200c20034105746a22032002290310370000200341186a2013290300370000200341106a2014290300370000200341086a20082903003700000b200f41606a210f2011417f6a211120100d000b0b200241306a24000bfc0701137f230041c0006b22042400200441003602082004420137030020044100360218200442013703102002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4101210b4101210c4100210d4101210e4101210f410021100340200b2111200e2112201021132007210320052102024002400340024020020d00410021052006450d020c030b02402006450d000240024020022006460d0020022006412010e70722140d010b2003200341206a2003200a4622021b210741002008200820094622141b21064100200320021b21052011210b2012210e201321102008200841206a20141b21080c050b02402014417f4c0d00200221050c040b200441206a41186a2214200241186a290000370300200441206a41106a2215200241106a290000370300200441206a41086a2216200241086a29000037030020042002290000370320024020132004280214470d00200441106a20134101109e01200428021821132004280210221121122011210f0b200f20134105746a22022004290320370000200241186a2014290300370000200241106a2015290300370000200241086a20162903003700002004201341016a2213360218410020032003200a4622141b21022003200341206a20141b21030c010b0b200441206a41186a2203200541186a290000370300200441206a41106a2213200541106a290000370300200441206a41086a2206200541086a29000037030020042005290000370320024020102004280214470d00200441106a20104101109e01200428021821102004280210220b210e0b200e20104105746a22022004290320370000200241186a2003290300370000200241106a2013290300370000200241086a20062903003700002004201041016a221036021841002106410020072007200a4622021b2105200e210f2007200741206a20021b21070c020b2004280204210220042802142103201120132000200110c5050240200341ffffff3f71450d00201110290b0240200241ffffff3f71450d00200c10290b200441c0006a24000f0b200441206a41186a2214200641186a290000370300200441206a41106a2215200641106a290000370300200441206a41086a2216200641086a290000370300200420062900003703200240200d2004280204470d002004200d4101109e012004280200210c2004280208210d0b200c200d4105746a22022004290320370000200241186a2014290300370000200241106a2015290300370000200241086a20162903003700002004200d41016a220d36020841002008200820094622021b21062011210b2012210e201321102008200841206a20021b2108200321070c000b0b9f0303027f017e027f230041206b2202240041a6d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941a4a1c900ad4280808080a00184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000b9f0303027f017e027f230041206b2202240041a6d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941f7edca00ad4280808080e00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000ba10701087f230041106b220224002002410036020820024201370300200028020021030240410410272204450d002002410436020420022004360200200420033600002002410436020820002802042103200441044108102b2204450d002002410836020420042003360004200220043602002002410836020820002802082104200041106a280200220320021071024002402003450d00200341057421052002280204210620022802082103034002400240200620036b4120490d00200341206a2107200228020021080c010b200341206a22072003490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102722080d010c060b2002280200210820062009460d00200820062009102b2208450d050b2002200936020420022008360200200921060b200820036a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002002200736020820072103200441206a2104200541606a22050d000b0b200028021421042000411c6a2802002203200210710240024020030d0020022802042109200228020821030c010b200341057421054100200228020822036b210820022802042106034002400240200620086a4120490d0020022802002107200621090c010b200341206a22072003490d03200641017422092007200920074b1b22094100480d030240024020060d00024020090d00410121070c020b200910272207450d060c010b2002280200210720062009460d00200720062009102b2207450d050b2002200936020420022007360200200921060b200720036a22072004290000370000200741186a200441186a290000370000200741106a200441106a290000370000200741086a200441086a2900003700002002200341206a2203360208200841606a2108200441206a2104200541606a22050d000b0b2000280220210602400240200920036b4104490d0020022802002104200921070c010b200341046a22042003490d01200941017422072004200720044b1b22074100480d010240024020090d00024020070d00410121040c020b200710272204450d040c010b2002280200210420092007460d00200420092007102b2204450d030b20022007360204200220043602000b200420036a20063600002001290200200341046aad4220862004ad84100302402007450d00200410290b200241106a24000f0b1032000b1030000b9f0303027f017e027f230041206b2202240041a6d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941f7edca00ad4280808080e00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bd304010a7f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602080c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021062003200241786a3602242003200141086a36022020012800042107200341c8006a200341206a10960220032802482202450d00200341c8006a41086a2802002108200328024c2105200341c8006a200341206a1096020240024020032802482209450d00200328024c210a2003280224220b41044f0d030240200a41ffffff3f71450d00200910290b200541ffffff3f710d010c020b200541ffffff3f71450d010b200210290b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602080c010b200341d0006a280200210c2000200536020c200020023602082000200736020420002006360200200041206a200328022022022800003602002000411c6a200c360200200041186a200a360200200041146a2009360200200041106a20083602002003200b417c6a3602242003200241046a3602200b2004450d00200110290b200341e0006a24000ba00401037f230041e00b6b22042400200441086a200110870720042004280208220520042802104180a6cc004100410010c701024002400240024002402004280200450d002004280204220620024d0d01200041093a000620004183263b0104200041013602002000410c6a4113360200200041086a41e7d5c8003602000c020b200041023a000620004183263b0104200041013602002000410c6a410f360200200041086a41ced6c8003602000c010b200441b0096a200110870720044188076a20042802b009220220042802b8091086072004280288072101200441bc096a20044188076a41047241a40210e4071a024002402001411c460d00200441e4046a200441bc096a41a40210e4071a024020042802b409450d00200210290b200441c0026a200441e4046a41a40210e4071a20042001360218200441186a410472200441c0026a41a40210e4071a20044188076a200441186a10c3012004290388072003560d01200041086a200441186a41a80210e4071a20004100360200200041b0026a2006360200200428020c450d040c030b024020042802b409450d00200210290b2000410c6a410f360200200041086a41ced6c800360200200041023a000620004183263b0104200041013602000c010b200041083a000620004183263b0104200041013602002000410c6a4113360200200041086a41fad5c800360200200441186a10cc010b200428020c450d010b200510290b200441e00b6a24000b8f0f0b017f017e037f017e017f027e037f027e057f027e067f230041c0036b220524000240024020000d002005413d6a200341086a290000370000200541c5006a200341106a290000370000200541cd006a200341186a290000370000200541033a00342005410b3a003020052003290000370035200541306a10cb0142002106410121070c010b2005413d6a200341086a2200290000370000200541c5006a200341106a2208290000370000200541cd006a200341186a2209290000370000200541023a00342005410b3a003020052003290000370035200541306a10cb01200541306a200410c3012005290330210a2002280204210b200541306a200441a80210e4071a200541e4026a2001360200200541d8026a41086a200b360200200541003a00dc02200541023a00d802200541086a200541306a200541d8026a10c501200541306a41186a2009290000370300200541306a41106a2008290000370300200541306a41086a200029000037030020052003290000370330200541086a41186a2d000021012005290310210c2005290308210d200520052900213703d8022005200541286a2800003600df0202400240200d4201510d00410421000c010b200520052800df0236008703200520052903d8023703800341042100200c4202510d0020052005280087033600b70320052005290380033703b003200121000b200541d8026a41086a2201200541306a41086a290300370300200541d8026a41106a2208200541306a41106a290300370300200541d8026a41186a2209200541306a41186a290300370300200520052903303703d802200520052903b0033703a003200520052800b7033600a703200541043a00342005410b3a00302005413d6a2001290300370000200541c5006a2008290300370000200541cd006a2009290300370000200541d8006a20003a0000200520052903d802370035200541d5006a20052f00b0033b0000200541d7006a200541b2036a2d00003a0000200541d9006a20052903a003370000200541e0006a20052800a703360000200541fc006a20054180036a41186a280200360200200541f4006a20054180036a41106a290200370200200541ec006a20054180036a41086a290200370200200541e4006a200529028003370200200541306a10cb01200541086a41106a290300200a200ca71b2106410021070b200541306a2003108707200535023842208620052802302200ad84100402402005280234450d00200010290b200541306a200310c005200535023842208620052802302200ad84100402402005280234450d00200010290b200541d8026a41186a220e4200370300200541d8026a41106a220f4200370300200541d8026a41086a22104200370300200542003703d80241a6d4c800ad4280808080b00284221110012200290000210c2010200041086a2900003703002005200c3703d80220001029419fdec900ad4280808080900184221210012200290000210c200541086a41086a2213200041086a2900003703002005200c37030820001029200f2005290308220c370300200541306a41086a22142010290300370300200541306a41106a2215200c370300200541306a41186a22162013290300370300200520052903d802370330200541d8026a200541306a412010ce0120052802d8022200410120001b2117024020052902dc02420020001b22184220882219a72209450d0041002101201721004100210802400240034002400240024020032000460d0020002003412010e707450d0020010d01410021010c020b200141016a21010c010b200820016b220b20094f0d02200e200020014105746b220b41186a221a290000370300200f200b41106a221b2900003703002010200b41086a221c2900003703002005200b2900003703d802200041086a221d290000210c200041106a221e290000210a200041186a221f290000210d200b2000290000370000201a200d370000201b200a370000201c200c370000201f200e290300370000201e200f290300370000201d2010290300370000200020052903d8023700000b200041206a21002009200841016a2208460d020c000b0b200b20094180bdc7001036000b2001417f6a20094f0d00200920016bad2219422086201842ffffffff0f838421180b20164200370300201542003703002014420037030020054200370330201110012200290000210c2014200041086a2900003703002005200c37033020001029201210012200290000210c2013200041086a2900003703002005200c3703082000102920152005290308220c37030020102014290300370300200f200c370300200e2013290300370300200520052903303703d802201942017c210c0240024020170d00200541d8026aad428080808080048410040c010b200541203602342005200541d8026a36023020172019a7200541306a10cf01201842ffffff3f83500d00201710290b427f200642c0b6fc9a017c220a200a2006541b220a200c42ffffffff0f834290f41d7e7c210c02402007450d00200410cc010b200c200a54210002402002410c6a28020041ffffff3f71450d00200228020810290b427f200c20001b210c0240200241186a28020041ffffff3f71450d00200228021410290b200541c0036a2400200c0bed6405057f027e107f057e117f230041c0036b22032400024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010905040302000b200341d4026a4101360200200342013702c40220034198e3ca003602c0022003410436028402200341cce3ca0036028002200320034180026a3602d002200341c0026a4180a6cc001040000b200141086a2802002104200141046a2802002105410221064100210720022d00000d0a20022d00014101470d0a200141186a2903002108200141106a29030021092001410c6a2802002101200241196a2d00002107200241186a2d00002106200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211920032002411a6a2901003703e801200320073a00e701200320063a00e6012003200a3b01e4012003200b3a00e3012003200c3a00e2012003200d3b01e0012003200e3a00df012003200f3a00de01200320103b01dc01200320113a00db01200320123a00da01200320133b01d801200320143a00d701200320153a00d601200320163b01d401200320173a00d301200320183a00d201200320193b01d0010240200141104d0d004114210241eaecca0021014180800c21070c0a0b024020010d0041072102418aedca0021014180800421070c0a0b4196ebca00ad4280808080800284221a10012202290000211b2002290008211c2002102941e0f8ca00ad4280808080a0018410012202290000211d2002290008211e200210292003201e3701d8022003201d3701d0022003201c3701c8022003201b3701c00241002106200341f4016a220741003a0000200341003602f001200341386a200341c0026a4120200341f0016a4105410010c7014100210a02402003280238450d002003200328023c2202410520024105491b360284022003200341f0016a36028002200341306a20034180026a10c8014100200328023420032802301b210a0b201a10012202290000211a2002290008211b2002102941f0edca00ad4280808080f0008410012202290000211c2002290008211d200210292003201d3701d8022003201c3701d0022003201b3701c8022003201a3701c002200741003a0000200341003602f001200341286a200341c0026a4120200341f0016a4105410010c70102402003280228450d002003200328022c2202410520024105491b360284022003200341f0016a36028002200341206a20034180026a10c8014100200328022420032802201b21060b4196ebca00ad428080808080028410012202290000211a2002290008211b2002102941eaf8ca00ad428080808090018410012202290000211c2002290008211d200210292003201d3701d8022003201c3701d0022003201b3701c8022003201a3701c00241002107200341f4016a41003a0000200341003602f001200341186a200341c0026a4120200341f0016a4105410010c7014100210b02402003280218450d002003200328021c2202410520024105491b360284022003200341f0016a36028002200341106a20034180026a10c8014100200328021420032802101b210b0b410c210202402006200a6a200b6a22060d004191edca0021010c0a0b0240200120064d0d0041feecca0021014180800821070c0a0b024020094281c8afa0255441002008501b450d00410a210241e0ecca0021014180801021070c0a0b200341c0026a200341d0016a10ac07200341086a20032802c002220720032802c8024180a6cc004100410010c70120032802082102024020032802c402450d00200710290b024020024101460d00200342003703b80120034280e8eda1ba013703b0012003200341d0016a3602bc022003200341d0016a3602f0012003200341f0016a3602c8022003200341bc026a3602c4022003200341b0016a3602c00220034180026a200341d0016a200341c0026a108e0402402003280280024101470d0020032d0084024104460d01410f210241d1ecca0021014180801421070c0b0b20034180026a41086a2903004201520d0020034180026a41106a290300211a20032802f0012102200341f8026a20034180026a41186a290300370300200341f0026a201a370300200341c0026a41086a41003a0000200341c9026a2002290000370000200341d1026a200241086a290000370000200341d9026a200241106a290000370000200341e1026a200241186a290000370000200341033a00c002200341c0026a10cb010b20034180026a200341d0016a10a802200341c0026a200328028002220720032802880210a902200341d0026a290300420020032903c00242015122021b211a20032903c802420020021b211b200341e0026a290300420020021b211c200341d8026a290300420020021b211d0240200328028402450d00200710290b200342f0d0c9abc6add9b1f4003703c002200341c0026a200341d0016a427f201b201d7c221d201d201b542202201a201c7c2002ad7c221b201a54201b201a511b22021b221a2009201a200954427f201b20021b221a200854201a2008511b22021b2209201a200820021b2208411e10aa0220034180026a200341d0016a10ac0702402001410574220d4114722207417f4c0d00200335028802211a200328028002210e0240200710272202450d002002200937000020022008370008200341103602c802200320073602c402200320023602c0022001200341c0026a1071410020032802c802220c6b210620032802c002210b20032802c402210a4100210203400240200a20066a411f4b0d00024002400240200c20026a220741206a22012007490d00200a41017422072001200720014b1b22014100480d0002400240200a0d00024020010d004101210b0c020b20011027210b0c040b200a2001470d020b2001210a0c030b1032000b200b200a2001102b210b0b2001210a200b0d001030000b200b200c6a20026a2201200520026a2207290000370000200141186a200741186a290000370000200141106a200741106a290000370000200141086a200741086a290000370000200641606a2106200d200241206a2202470d000b201a422086200ead84200c20026aad422086200bad8410030240200a450d00200b10290b0240200328028402450d00200e10290b200441ffffff3f71450d06200510290c060b1039000b1038000b420021080240024020022d000120022d000041004772450d00410221020c010b200141216a2d00002107200141096a2900002109200141116a290000211a2001290001211b2003200141196a2900003703e8012003201a3703e001200320093703d8012003201b3703d0014196ebca00ad42808080808002841001220229000021092002290008211a2002102941eaf8ca00ad428080808090018410012202290000211b2002290008211c200210292003201c3701d8022003201b3701d0022003201a3701c802200320093701c002200341f4016a41003a0000200341003602f001200341a8016a200341c0026a4120200341f0016a4105410010c70102400240024020032802a801450d00200320032802ac012202410520024105491b360284022003200341f0016a36028002200341a0016a20034180026a10c801200741ff017141004720032802a40141004720032802a001457173450d010c020b200741ff01710d010b200341f0016a200341d0016a10c407024020032d00f0014101460d0020032d00f1012102200342003703b80120034280a094a58d1d3703b0012003200341d0016a3602bc0220034180026a200341d0016a200341b0016a200341bc026a10a905200341a0026a2903002108200329039802210902402003290380024201520d00200329038802211a200341f8026a20034180026a41106a290300370300200341f0026a201a370300200341c0026a41086a41003a0000200341c9026a20032903d001370000200341d1026a200341d0016a41086a290300370000200341d9026a200341d0016a41106a290300370000200341e1026a200341e8016a290300370000200341033a00c002200341c0026a10cb010b20034188016a200920081081020240200329038801a7450d0020034188016a41106a29030021082003290390012109200342f0f2bda1a7ee9cb9f90037038002200341c0026a20034180026a108202200341c0026a20092008108002200341d8026a2008370300200341c0026a41106a2009370300200341c8026a41063a00002003410e3a00c002200341c0026a10cb010b200341cd026a200341d8016a290300370000200341d5026a200341d0016a41106a290300370000200341dd026a200341e8016a290300370000200341023a00c4022003410c3a00c002200320032903d0013700c502200341c0026a10cb01200241ff01710d0610d2040c060b20032802f401220241187621012002411076210420024108762105200341fc016a2802002107200341f0016a41086a28020021060c010b4201210841032102411421054110210441a6ebca002106411221070b200020013a001b200020043a001a200020053a001920002008370308200041206a20073602002000411c6a2006360200200041186a20023a0000200041106a42c08be40e3703000c0b0b411121064102210702400240024020022d00000d0020022d00014101470d00200141086a2802002119200141046a2802002101200241196a2d00002107200241186a2d00002104200241166a2f01002105200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a2901003703e801200320073a00e701200320043a00e601200320053b01e4012003200a3a00e3012003200b3a00e2012003200c3b01e0012003200d3a00df012003200e3a00de012003200f3b01dc01200320103a00db01200320113a00da01200320123b01d801200320133a00d701200320143a00d601200320153b01d401200320163a00d301200320173a00d201200320183b01d00102400240024002400240024002400240024020010e03000102000b200341c0026a200341d0016a10c40720032d00c0024101460d02200342003703b80120034280a094a58d1d3703b0012003200341d0016a3602f00120034180026a200341d0016a200341b0016a200341f0016a10ea0302402003290380024201520d002003290388022108200341f8026a20034180026a41106a290300370300200341f0026a2008370300200341c0026a41086a41003a0000200341c9026a20032903d001370000200341d1026a200341d0016a41086a290300370000200341d9026a200341d0016a41106a290300370000200341e1026a200341e8016a290300370000200341033a00c002200341c0026a10cb010b200341cd026a200341d8016a290300370000200341d5026a200341e0016a290300370000200341dd026a200341e8016a290300370000200341033a00c4022003410c3a00c002200320032903d0013700c502200341c0026a10cb010c0d0b200341c0026a41186a4200370300200341c0026a41106a22074200370300200341c0026a41086a22024200370300200342003703c0024196ebca00ad42808080808002841001220129000021082002200141086a290000370300200320083703c0022001102941eaf8ca00ad4280808080900184100122012900002108200341f0016a41086a2204200141086a290000370300200320083703f00120011029200720032903f001220837030020034180026a41086a200229030037030020034180026a41106a200837030020034180026a41186a2004290300370300200320032903c00237038002200341c0026a20034180026a10a90720032902c402420020032802c00222021b2208422088a7220a41306c2101410021072002410820021b220521020240024003402001450d02200341d0016a2002460d01200741016a2107200141506a21012002200341d0016a412010e7072104200241306a210220040d000b20044541016a41017120076a417f6a21070b2005200741306c6a2202200241306a2007417f73200a6a41306c10e5071a200342003703b80120034280a094a58d1d3703b0012003200341d0016a3602f00120034180026a200341d0016a200341b0016a200341f0016a10ea0302402003290380024201520d002003290388022109200341f8026a20034180026a41106a290300370300200341c0026a41306a2009370300200341c0026a41086a41003a0000200341c9026a20032903d001370000200341d1026a200341d0016a41086a290300370000200341d9026a200341d0016a41106a290300370000200341e1026a200341e8016a290300370000200341033a00c002200341c0026a10cb010b4196ebca00ad42808080808002841001220229000021092002290008211a2002102941eaf8ca00ad428080808090018410012202290000211b2002290008211c200210292003201c3701d8022003201b3701d0022003201a3701c802200320093701c00220034120360284022003200341c0026a360280022005200a417f6a20034180026a10c9062008a72202450d0d200241306c450d0d200510290c0d0b2008a72202450d06200241306c450d04200510290c040b200341c0026a41186a4200370300200341c0026a41106a22074200370300200341c0026a41086a22024200370300200342003703c0024196ebca00ad42808080808002841001220129000021082002200141086a290000370300200320083703c0022001102941e0f8ca00ad4280808080a00184100122012900002108200341f0016a41086a2204200141086a290000370300200320083703f00120011029200720032903f001220837030020034180026a41086a200229030037030020034180026a41106a200837030020034180026a41186a2004290300370300200320032903c00237038002200341c0026a20034180026a108d0220032802c0022202410120021b210a201920032902c402420020021b2208422088a722054f0d012008a72202450d05200241ffffff3f71450d030c020b20032802c402220741ff01714104460d0a200341cc026a2802002106200341c8026a28020021022007418080807871210520074180807c712104200741807e7121010c070b02402005450d002005410574210741002101200a21020340200341d0016a2002460d0420012002200341d0016a412010e70722044100476a21012004450d04200241206a2102200741606a22070d000b0b2008a72202450d03200241ffffff3f71450d010b200a10290b41b8ebca002102410321070c030b200a20014105746a2202200241206a2001417f7320056a41057410e5071a200342003703b80120034280a094a58d1d3703b0012003200341d0016a3602f00120034180026a200341d0016a200341b0016a200341f0016a10ea0302402003290380024201520d002003290388022109200341f8026a20034180026a41106a290300370300200341f0026a2009370300200341c0026a41086a41003a0000200341c9026a20032903d001370000200341d1026a200341d0016a41086a290300370000200341d9026a200341d0016a41106a290300370000200341e1026a200341e8016a290300370000200341033a00c002200341c0026a10cb010b4196ebca00ad42808080808002841001220229000021092002290008211a2002102941e0f8ca00ad4280808080a0018410012202290000211b2002290008211c200210292003201c3701d8022003201b3701d0022003201a3701c802200320093701c00220034120360284022003200341c0026a36028002200a2005417f6a20034180026a10b901200842ffffff3f83500d06200a10290c060b410321070b41b8ebca0021020b41802821014180803c2104410021050b20004200370308200041206a20063602002000411c6a2002360200200041186a20052004418080fc07717220014180fe037172200741ff0171723602000c0a0b41022107024002400240024020022d00000d0020022d00014101470d00200141046a2802002117200241196a2d00002101200241186a2d00002107200241166a2f01002106200241156a2d00002104200241146a2d00002105200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620032002411a6a2901003703e801200320013a00e701200320073a00e601200320063b01e401200320043a00e301200320053a00e2012003200a3b01e0012003200b3a00df012003200c3a00de012003200d3b01dc012003200e3a00db012003200f3a00da01200320103b01d801200320113a00d701200320123a00d601200320133b01d401200320143a00d301200320153a00d201200320163b01d0014196ebca00ad4280808080800284100122022900002108200229000821092002102941e0f8ca00ad4280808080a0018410012202290000211a2002290008211b200210292003201b3701d8022003201a3701d002200320093701c802200320083701c002200341f4016a41003a0000200341003602f00120034180016a200341c0026a4120200341f0016a4105410010c7010240200328028001450d0020032003280284012202410520024105491b360284022003200341f0016a36028002200341f8006a20034180026a10c80120032802780d00200328027c20174d0d004115210241d9ebca002101418080342106410321070c040b200341c0026a41186a4200370300200341c0026a41106a22054200370300200341c0026a41086a22024200370300200342003703c0024196ebca00ad42808080808002841001220129000021082002200141086a290000370300200320083703c0022001102941e0f8ca00ad4280808080a00184100122012900002108200341f0016a41086a2207200141086a290000370300200320083703f00120011029200520032903f001220837030020034180026a41086a200229030037030020034180026a41106a200837030020034180026a41186a2007290300370300200320032903c00237038002200341c0026a20034180026a108d0220032802c0022201410120011b21044100210a41002102024020032902c402420020011b2208422088a7220141014b0d004100210b20010e020302030b03402001410176220720026a22062002200420064105746a200341d0016a412010e7074101481b2102200120076b220141014b0d000c020b0b410021060c020b0240200420024105746a200341d0016a412010e70722010d004101210a2002210b0c010b2001411f7620026a210b0b0240200842ffffff3f83500d00200410290b02400240200a450d004113210241a9ecca0021014180802021060c010b410c21020240200341d0016a10a607450d00419decca002101418080242106410321070c020b200341c0026a41186a22064200370300200341c0026a41106a22044200370300200341c0026a41086a22014200370300200342003703c0024196ebca00ad42808080808002841001220729000021082001200741086a290000370300200320083703c0022007102941eaf8ca00ad4280808080900184100122072900002108200341f0016a41086a220a200741086a290000370300200320083703f00120071029200520032903f001370000200541086a200a29030037000020034180026a41086a200129030037030020034180026a41106a200429030037030020034180026a41186a2006290300370300200320032903c00237038002200341c0026a20034180026a10a90720032902c402420020032802c00222011b2208422088a741306c2107410021062001410820011b220a2101024003402007450d010240200341d0016a2001460d00200641016a2106200741506a21072001200341d0016a412010e7072104200141306a210120040d010b0b4191ecca0021014180802821062008a72207450d01200741306c450d01200a1029410321070c020b02402008a72202450d00200241306c450d00200a10290b200342003703b80120034280a094a58d1d3703b0012003200341d0016a3602bc022003200341d0016a3602f0012003200341f0016a3602c8022003200341bc026a3602c4022003200341b0016a3602c00220034180026a200341d0016a200341c0026a108e04024002402003280280024101470d0020032d0084024104460d01411a210241f7ebca0021014180802c2106410321070c030b20034180026a41086a2903004201520d0020034180026a41106a290300210820032802f0012102200341f8026a20034180026a41186a290300370300200341f0026a2008370300200341c0026a41086a41003a0000200341c9026a2002290000370000200341d1026a200241086a290000370000200341d9026a200241106a290000370000200341e1026a200241186a290000370000200341033a00c002200341c0026a10cb010b20032903e801210820032d00e701210420032d00e601210a20032f01e401210c20032d00e301210d20032d00e201210e20032f01e001210f20032d00df01211020032d00de01211120032f01dc01211220032d00db01211320032d00da01211420032f01d801211520032d00d701211620032d00d601211720032f01d401211820032d00d301211920032d00d201211f20032f01d0012120200341c0026a41186a22074200370300200341c0026a41106a22064200370300200341c0026a41086a22024200370300200342003703c0024196ebca00ad42808080808002841001220129000021092002200141086a290000370300200320093703c0022001102941e0f8ca00ad4280808080a00184100122012900002109200341f0016a41086a2221200141086a290000370300200320093703f00120011029200520032903f001370000200541086a202129030037000020034180026a41086a200229030037030020034180026a41106a200629030037030020034180026a41186a2007290300370300200320032903c00237038002200341c0026a20034180026a108d020240024020032802c00222010d00410021062003410036028802200342013703800241012101410021070c010b200320032902c40222093702840220032001360280022009422088a721072009a721060b02402007200b490d00024020072006470d0020034180026a20064101109e01200328028402210620032802800221010b2001200b4105746a220241206a20022007200b6b41057410e5071a20022008370018200220043a00172002200a3a00162002200c3b00142002200d3a00132002200e3a00122002200f3b0010200220103a000f200220113a000e200220123b000c200220133a000b200220143a000a200220153b0008200220163a0007200220173a0006200220183b0004200220193a00032002201f3a0002200220203b00002003200741016a2207360288024196ebca00ad4280808080800284100122022900002108200229000821092002102941e0f8ca00ad4280808080a0018410012202290000211a2002290008211b200210292003201b3701d8022003201a3701d002200320093701c802200320083701c002024020010d00200341c0026aad428080808080048410040c050b200341203602b4012003200341c0026a3602b00120012007200341b0016a10b901200641ffffff3f71450d04200110290c040b200b20071041000b410321070b20004200370308200041206a20023602002000411c6a2001360200200041186a20064180803c71200772418028723602000c090b410221070240024020022d00000d0020022d00014101460d010b4100210241002106410021010c030b200141246a2902002108200141236a2d00002107200141226a2d00002106200141206a2f010021042001411f6a2d000021052001411e6a2d0000210a2001411c6a2f0100210b2001411b6a2d0000210c2001411a6a2d0000210d200141186a2f0100210e200141176a2d0000210f200141166a2d00002110200141146a2f01002111200141136a2d00002112200141126a2d00002113200141106a2f010021142001410f6a2d000021152001410e6a2d000021162001410c6a2f01002117200141086a2802002122200141046a2802002123200241196a2d00002101200241186a2d00002118200241166a2f01002119200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002124200241106a2d000021252002410e6a2f010021262002410d6a2d000021272002410c6a2d000021282002410a6a2f01002129200241096a2d0000212a200241086a2d0000212b200241066a2f0100212c200241056a2d0000212d200241046a2d0000212e200241026a2f0100212f20032002411a6a2901003703c801200320013a00c701200320183a00c601200320193b01c4012003201f3a00c301200320203a00c201200320213b01c001200320243a00bf01200320253a00be01200320263b01bc01200320273a00bb01200320283a00ba01200320293b01b8012003202a3a00b7012003202b3a00b6012003202c3b01b4012003202d3a00b3012003202e3a00b2012003202f3b01b001200320083703e801200320073a00e701200320063a00e601200320043b01e401200320053a00e3012003200a3a00e2012003200b3b01e0012003200c3a00df012003200d3a00de012003200e3b01dc012003200f3a00db01200320103a00da01200320113b01d801200320123a00d701200320133a00d601200320143b01d401200320153a00d301200320163a00d201200320173b01d0010240200341b0016a200341d0016a412010e7070d0041bcecca002105410a21044180801c21060c020b200341c0026a200341b0016a10ac07200341f0006a20032802c002220120032802c8024180a6cc004100410010c70120032802702102024020032802c402450d00200110290b024020024101460d0041c6ecca002105410b21044180801821060c020b4196ebca00ad4280808080800284100122022900002108200229000821092002102941e0f8ca00ad4280808080a0018410012202290000211a2002290008211b200210292003201b3701d8022003201a3701d002200320093701c802200320083701c002200341f4016a41003a0000200341003602f001200341e8006a200341c0026a4120200341f0016a4105410010c70102402003280268450d002003200328026c2202410520024105491b360284022003200341f0016a36028002200341e0006a20034180026a10c80120032802600d00200328026420224d0d0041d9ebca002105411521044180803421060c020b20034180026a200341d0016a10ac07200341c0026a200328028002220120032802880210fb0520032902d402420020032802d00222021b21080240200328028402450d00200110290b2002410120021b210a41032107418028210141002102024002402008422088a722060d0041c6ecca002105410b21044180801821060c010b0240202320064f0d0041c9ebca002105411021044180803821060c010b200a20064105746a210e200341c0026a41106a21054196ebca00ad42808080808002842109200a210702400240024003402007200e460d010240200710a6070d00200741206a2110200341c0026a41186a220c420037030020054200370300200341c0026a41086a220b4200370300200342003703c002200910012202290000211a200b200241086a2900003703002003201a3703c0022002102941eaf8ca00ad428080808090018410012202290000211a200341f0016a41086a220d200241086a2900003703002003201a3703f00120021029200520032903f001370000200541086a2211200d29030037000020034180026a41086a2212200b29030037030020034180026a41106a2213200529030037030020034180026a41186a2214200c290300370300200320032903c00237038002200341c0026a20034180026a10a90720032902c402420020032802c00222021b221a422088a741306c2101410021062002410820021b220f2102024003402001450d01024020072002460d0020022007412010e7072104200641016a2106200141506a2101200241306a210220040d010b0b201aa72202450d01200241306c450d01200f10290c010b0240201aa72202450d00200241306c450d00200f10290b200c420037030020054200370300200b4200370300200342003703c002200910012202290000211a200b200241086a2900003703002003201a3703c0022002102941e0f8ca00ad4280808080a0018410012202290000211a200d200241086a2900003703002003201a3703f00120021029200520032903f0013700002011200d2903003700002012200b290300370300201320052903003703002014200c290300370300200320032903c00237038002200341c0026a20034180026a108d0220032802c0022201410120011b210b4100210202400240024020032902c402420020011b221a422088a7220141014b0d0020010e020201020b03402001410176220620026a22042002200b20044105746a2007412010e7074101481b2102200120066b220141014b0d000b0b200b20024105746a2007412010e7074521020b0240201a42ffffff3f83500d00200b10290b201021072002450d010b0b200342003703f80120034280e8eda1ba013703f0012003200341b0016a3602bc0220034180026a200341b0016a200341f0016a200341bc026a10a905200341a0026a2903002109200329039802211a02402003290380024201520d00200329038802211b200341f8026a20034180026a41106a290300370300200341f0026a201b370300200341c0026a41086a41003a0000200341c9026a20032903b001370000200341d1026a200341b0016a41086a290300370000200341d9026a200341b0016a41106a290300370000200341e1026a200341c8016a290300370000200341033a00c002200341c0026a10cb010b200341c8006a201a200910810202402003290348a7450d00200341c8006a41106a29030021092003290350211a200342f0f2bda1a7ee9cb9f90037038002200341c0026a20034180026a108202200341c0026a201a2009108002200341d8026a2009370300200341c0026a41106a201a370300200341c8026a41063a00002003410e3a00c002200341c0026a10cb010b200341c0026a200341b0016a10ac0720033502c80242208620032802c0022202ad841004024020032802c402450d00200210290b41002102200341b0016a21010c010b200341c0026a200341d0016a200341b0016a4280e8eda1ba014200410010e90320032802c0024101460d01200341c0026a200341d0016a10ac0720033502c80242208620032802c0022202ad841004024020032802c402450d00200210290b41012102200341d0016a21010b200342f0d0c9abc6add9b1f4003703c002200341c0026a200110ac02200341cd026a200341d0016a41086a290300370000200341d5026a200341d0016a41106a290300370000200341dd026a200341d0016a41186a290300370000200341e5026a20032903b001370000200341ed026a200341b0016a41086a290300370000200341f5026a200341b0016a41106a290300370000200341fd026a200341b0016a41186a29030037000020034185036a20023a0000200341043a00c4022003410c3a00c002200320032903d0013700c502200341c0026a10cb01200842ffffff3f83500d02200a10290c020b200341cc026a2802002104200341c8026a280200210520032802c4022207418080807871210220074180807c712106200741807e7121010b0240200842ffffff3f83500d00200a10290b200741ff01714104470d020b420021080c030b410321074180282101410021020b20004200370308200041206a20043602002000411c6a2005360200200041186a20022006418080fc07717220014180fe037172200741ff0171723602000c050b0240024020022d00000d0020022d00014101470d002002411a6a2901002108200241196a2d00002101200241186a2d00002107200241166a2f01002106200241156a2d00002104200241146a2d00002105200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f010021152003200241096a2d00003a00c702200320113a00c602200320123b01c402200320133a00c302200320143a00c202200320153b01c0022003200b3a00cf022003200c3a00ce022003200d3b01cc022003200e3a00cb022003200f3a00ca02200320103b01c802200320013a00d702200320073a00d602200320063b01d402200320043a00d302200320053a00d2022003200a3b01d002200320083701d802200341e8016a2008370300200341e0016a20032901d002370300200341d8016a20032901c802370300200320032901c0023703d001200341c0026a200341d0016a10ac07200341c0006a20032802c002220120032802c8024180a6cc004100410010c70120032802402102024020032802c402450d00200110290b024020024101470d00200341c0026a200341d0016a10ac0720033502c80242208620032802c0022202ad841004024020032802c402450d00200210290b200342f0d0c9abc6add9b1f4003703c002200341c0026a200341d0016a10ac0242002108200342003703b80120034280e8eda1ba013703b0012003200341d0016a3602f00120034180026a200341d0016a200341b0016a200341f0016a10ea032003290380024201520d032003290388022109200341f8026a20034180026a41106a290300370300200341f0026a2009370300200341c0026a41086a41003a0000200341c9026a20032903d001370000200341d1026a200341d0016a41086a290300370000200341d9026a200341d0016a41106a290300370000200341e1026a200341e8016a290300370000200341033a00c002200341c0026a10cb01200042003703080c080b4183a81821020c010b4182a81821020b20004200370308200041206a410b3602002000411c6a41c6ecca00360200200041186a20023602000c040b200020083703080c040b410321060c010b0b0240200441ffffff3f71450d00200510290b20004200370308200041206a20023602002000411c6a2001360200200041186a20074180801c71200672418028723602000b420121080b20002008370300200341c0036a24000bad1206087f017e047f017e057f077e230022042105200441e0016b416071220424000240200341e500490d0041002802d8a74c450d00200441ec006a410136020020044101360264200441b0e3c800360260200420033602482004200441c8006a36026841002802888040210641002802848040210741002802dca74c2108200441c0016a41a806360200200441b8016a42de80808010370300200441b4016a41dde3c800360200200441ac016a4211370200200441a8016a41cce3c800360200200441a0016a420237030020044190016a420337030020044188016a41113602002004419c016a200441e0006a360200200441b4e3c80036028c01200441cce3c80036028401200441013602800120074180a4c000200841024622081b20044180016a20064198a4c00020081b2802101102000b024002400240200141ffffff3f712001470d0020014105742207417f4c0d000240024020070d00410121080c010b200710272208450d020b4100210620044100360288012004200836028001200420074105763602840120044180016a41002001109e01200428028801210902402001450d002001410574210a20042802800120094105746a210b0340200b20066a2207200020066a2208290000370000200741186a200841186a290000370000200741106a200841106a290000370000200741086a200841086a290000370000200a200641206a2206470d000b200141057441606a41057620096a41016a21090b200441186a41086a20093602002004200429038001220c370318200ca7200920044180016a410041202009676b10fa0420044180016a41186a2201420037030020044180016a41106a220d420037030020044180016a41086a220e4200370300200442003703800141a6d4c800ad4280808080b0028410012206290000210c200e200641086a2900003703002004200c3703800120061029419fdec900ad428080808090018410012206290000210c200441c8006a41086a220f200641086a2900003703002004200c37034820061029200d2004290348220c370300200441e0006a41086a200e290300370300200441e0006a41106a200c370300200441e0006a41186a200f290300370300200420042903800137036020044180016a200441e0006a412010ce012004280280012206410120061b2110200429028401420020061b2211422088a72206450d0220064105742109200441e0006a410c72211220044180016a410c6a210020044180016a411472211320044180016a41087221142010210603402001200641186a290000370300200d200641106a290000370300200e200641086a2900003703002004200629000037038001200441286a20044180016a10be0520044180016a2004280228220b2004280230221510c105200f200041086a290200370300200441c8006a41106a220a200041106a2802003602002004200029020037034820042802a001210702402004280288012208450d00200429038001210c20122004290348370200201241086a200f290300370200201241106a200a2802003602002004200c370360200721160b2004200836026820044100360288012004290378211720042004290398012218370378200429037021192004200429039001221a3703702004290360211b2004200429038001221c3703602004290368210c2004200429038801221d370368201da7210802400240200ca7220a0d00201d210c201a211920182117201621070c010b2004201b370380012004200c37038801200420193703900120042017370398012004200a2019a74105746a3602542004200a3602502004200c422088a736024c2004200a3602482004200441186a360258200441386a200441c8006a10f905201441086a200441386a41086a22162802003602002014200429033837020020042019422088a7220a2017422088a74105746a3602542004200a36025020042017a736024c2004200a3602482004200441186a360258200441386a200441c8006a10f905201341086a201628020036020020132004290338370200200429038801210c200429038001211c2004290398012117200429039001211902402008450d002018a7210a0240201d422088a741ffffff3f71450d00200810290b200a41ffffff3f71450d00201a422088a710290b2004201c3703602004200c3703682004201937037020042017370378200ca721080b2004200c370388012004201937039001200120173703002004201c37038001200420073602a001200ca7210a0240024020080d002015ad422086200bad8410040c010b2004201536024c2004200b36024820044180016a200441c8006a10e4060b0240200a450d002017a721080240200c422088a741ffffff3f71450d00200a10290b200841ffffff3f71450d002019422088a710290b0240200428022c450d00200b10290b200641206a210620072116200941606a22090d000c030b0b1038000b1039000b0240201142ffffff3f83500d00201010290b20044180016a41186a220a420037030020044180016a41106a2208420037030020044180016a41086a22074200370300200442003703800141a6d4c800ad4280808080b00284220c10012200290000211c200441c8006a41086a2206200041086a2900003703002004201c3703482000102920072006290300370300200420042903483703800141f0edca00ad4280808080f0008410012200290000211c2006200041086a2900003703002004201c3703482000102920082004290348221c370300200441e0006a41086a220b2007290300370300200441e0006a41106a2201201c370300200441e0006a41186a22092006290300370300200420042903800137036020044120360284012004200441e0006a360280012002200320044180016a10d506200a420037030020084200370300200742003703002004420037038001200c10012200290000210c2006200041086a2900003703002004200c3703482000102920072006290300370300200420042903483703800141f8d7ca00ad4280808080d0008410012200290000210c2006200041086a2900003703002004200c3703482000102920082004290348220c370300200b20072903003703002001200c370300200920062903003703002004200429038001370360200441e0006aad428080808080048410040240200428021c41ffffff3f71450d00200428021810290b200524000bec0502057f017e23004190016b2201240020002d00002102200141186a2203200041196a290000370300200141106a2204200041116a290000370300200141086a2205200041096a2900003703002001200029000137030002400240024020020d00200141f0006a41186a4200370300200141f0006a41106a22034200370300200141f0006a41086a220042003703002001420037037041a6d4c800ad4280808080b002841001220229000021062000200241086a290000370300200120063703702002102941f8d7ca00ad4280808080d00084100122022900002106200141206a41086a2204200241086a2900003703002001200637032020021029200320012903202206370300200141c0006a41086a2000290300370300200141c0006a41106a2006370300200141c0006a41186a200429030037030020012001290370370340200141c0006aad428080808080048410040c010b200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a200529030037030020012001290300370320200141f0006a41186a4200370300200141f0006a41106a22034200370300200141f0006a41086a220042003703002001420037037041a6d4c800ad4280808080b002841001220229000021062000200241086a290000370300200120063703702002102941f8d7ca00ad4280808080d00084100122022900002106200141e0006a41086a2204200241086a2900003703002001200637036020021029200320012903602206370300200141c0006a41086a2000290300370300200141c0006a41106a2006370300200141c0006a41186a200429030037030020012001290370370340412010272200450d0120002001290320370000200041186a200141206a41186a290300370000200041106a200141206a41106a290300370000200041086a200141206a41086a290300370000200141c0006aad42808080808004842000ad42808080808004841003200010290b20014190016a24000f0b1039000bf78d0107017f017e127f017e117f097e0d7f230041d0086b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0900010203040506070a000b200341d4076a4101360200200342013702c40720034198e3ca003602c007200341043602b406200341cce3ca003602b0062003200341b0066a3602d007200341c0076a4180a6cc001040000b0240024020022d00000d0020022d00014101470d00200141196a2900002104200141186a2d00002105200141176a2d00002106200141156a2f00002107200141146a2d00002108200141136a2d00002109200141116a2f0000210a200141106a2d0000210b2001410f6a2d0000210c2001410d6a2f0000210d2001410c6a2d0000210e2001410b6a2d0000210f200141096a2f00002110200141086a2d00002111200141076a2d00002112200141056a2f00002113200141046a2d00002114200141036a2d0000211520012f000121162002411a6a2901002117200241196a2d00002118200241186a2d00002119200241166a2f0100211a200241156a2d0000211b200241146a2d0000211c200241126a2f0100211d200241116a2d0000211e200241106a2d0000211f2002410e6a2f010021202002410d6a2d000021212002410c6a2d000021222002410a6a2f01002123200241096a2d00002124200241086a2d00002125200241066a2f01002126200241056a2d00002127200241046a2d00002128200241026a2f01002102200341286a200141286a2903002229200141306a290300222a42c0843d420010e007200341186a2003290328222b200341286a41086a290300222c42c0fb42427f10d507200341086a202b202c42d08603420010d5072003201737038804200320183a008704200320193a0086042003201a3b0184042003201b3a0083042003201c3a0082042003201d3b0180042003201e3a00ff032003201f3a00fe03200320203b01fc03200320213a00fb03200320223a00fa03200320233b01f803200320243a00f703200320253a00f603200320263b01f403200320273a00f303200320283a00f203200320023b01f0032003200341086a41086a2903002003290308222b202920032903187c2217421480222ca7417f201742d086037e2217428080808080c8d007541b2017202c42c0fb427e7c42a0c21e566aad7c2217202b54ad7c222b420020174280a094a58d1d56202b420052202b501b22011b222b37038005200320174280a094a58d1d20011b22173703f8042003200341f0036a3602e0012003200341f0036a3602e8022003200341e8026a3602c8072003200341e0016a3602c4072003200341f8046a3602c007200341b0066a200341f0036a200341c0076a108e040240024020032802b0064101470d0020032d00b4064104460d0141832c21010c030b200341b0066a41086a2903004201520d00200341b0066a41106a290300212c20032802e8022101200341f8076a200341b0066a41186a290300370300200341f0076a202c370300200341c0076a41086a41003a0000200341c9076a2001290000370000200341d1076a200141086a290000370000200341d9076a200141106a290000370000200341e1076a200141186a290000370000200341033a00c007200341c0076a10cb010b4197dec900ad4280808080800184222c10012201290000212d2001290008212e2001102941a0b9ca00ad4280808080d00184222f1001220129000021302001290008213120011029200320313703900520032030370388052003202e370380052003202d3703f8042003200341f8046a412010fc012003280204210220032802002118202c10012201290000212c2001290008212d20011029202f10012201290000212e2001290008212f200110292003202f370390052003202e370388052003202d370380052003202c3703f80420032002410020181b220241016a3602c007200341f8046aad4280808080800484200341c0076aad4280808080c000841003200341c0076a41186a2219200341f0036a41186a290300370300200341c0076a41106a221a200341f0036a41106a290300370300200341c0076a41086a221b200341f0036a41086a290300370300200320032903f0033703c007200341b0066a200210d00420033502b806212c20032802b0062118412010272201450d1b200120032903c007370000200141186a2019290300370000200141106a201a290300370000200141086a201b2903003700002001412041c000102b2201450d1b20012029370020200141286a202a370000200141c000418001102b2201450d1b2001201737005020012004370048200120053a0047200120063a0046200120073b0044200120083a0043200120093a00422001200a3b00402001200b3a003f2001200c3a003e2001200d3b003c2001200e3a003b2001200f3a003a200120103b0038200120113a0037200120123a0036200120133b0034200120143a0033200120153a0032200120163b0030200141d8006a202b370000202c4220862018ad842001ad4280808080800c84100320011029024020032802b406450d00201810290b200341cc076a2002360200200341c8076a41003a00002003410e3a00c007200341c0076a10cb010c100b41822c21010b20004200370308200041206a411c3602002000411c6a41a3ddc900360200200041186a2001360200420121170c180b200241036a2d0000211820022f00012119200141046a280200211b02400240024020022d0000221a417f6a220141034b0d00024020010e0400010102000b200241086a2802004101742002410c6a2802004d0d00200241046a28020041ff0171450d010b4182ac0421012019201841107472201a4100477241ff01710d010b4197dec900ad4280808080800184100122012d000f211d20012d000e211e20012f000c211f20012d000b212020012d000a212120012f0008212220012d0007212320012d0006212420012f0004212520012d0003212620012d0002212720012f0000212820011029419fdec900ad428080808090018410012201290008211720012d0007210520012d0006210620012f0004210720012d0003210820012d0002210920012f0000210a200110292003201b3602c0012003200341c0016aad4280808080c00084100222012900003703800620011029200341cc076a200341c4016a360200200320034188066a3602c4072003200341c0016a3602c807200320034180066a3602c007200341f0036a200341c0076a107520032802f803221a41206a2202417f4c0d0a20032802f003211c0240024020020d0041002118410121010c010b200210272201450d0a200221180b024002402018410f4d0d00201821190c010b201841017422194110201941104b1b22194100480d08024020180d002019102722010d010c1b0b20182019460d00200120182019102b2201450d1a0b2001201d3a000f2001201e3a000e2001201f3b000c200120203a000b200120213a000a200120223b0008200120233a0007200120243a0006200120253b0004200120263a0003200120273a0002200120283b00000240024020194170714110460d00201921180c010b201941017422184120201841204b1b22184100480d0820192018460d00200120192018102b2201450d1a0b20012017370018200120053a0017200120063a0016200120073b0014200120083a0013200120093a00122001200a3b001002400240201841606a201a490d00201821190c010b201a415f4b0d08201841017422192002201920024b1b22194100480d0820182019460d00200120182019102b2201450d1a0b200141206a201c201a10e4071a024020032802f403450d00201c10290b200341c0076a2001200210d104024020032903c00742015222180d002002ad4220862001ad8410040b200341f0036a200341c8076a41e00010e4071a200341c0076a200341f0036a41e00010e4071a024020180d00200341e8026a200341c0076a41e00010e4071a02402019450d00200110290b200341b0066a41066a200341e8026a41e00010e4071a200341f8046a200341b0066a41e60010e4071a200341e0016a200341f8046a41066a41e00010e4071a20032903f00121172003200341f8016a290300222b37038005200320173703f804024002402017202b8450450d00420021294200212c0c010b2003200341e0016a41206a22013602f003200341b0066a2001200341f8046a200341f0036a10a905200341b0066a41206a290300212c20032903c806212920032903b0064201520d0020032903b8062104200341f8076a200341b0066a41106a290300370300200341f0076a2004370300200341c0076a41086a41003a0000200341c9076a2001290000370000200341d1076a200141086a290000370000200341d9076a200141106a290000370000200341e1076a200141186a290000370000200341033a00c007200341c0076a10cb010b200341386a2029202c10810202402003290338a7450d00200341386a41106a29030021292003290340212c200342f0f2bda1a7ee9cb9f9003703b006200341c0076a200341b0066a108202200341c0076a202c2029108002200341d8076a2029370300200341c0076a41106a202c370300200341c8076a41063a00002003410e3a00c007200341c0076a10cb010b200341d8076a202b370300200341c0076a41106a2017370300200341cc076a201b360200200341c8076a41033a00002003410e3a00c007200341c0076a10cb010c0f0b02402019450d00200110290b4183ac0421010b20004200370308200041206a41143602002000411c6a418fddc900360200200041186a2001360200420121170c170b200241036a2d0000211920022f0001211a200141046a28020021010240024020022d0000221b417f6a221841034b0d00024020180e0400010102000b200241046a2d00000d00200241086a28020041056c2002410c6a28020041036c4f0d010b4182ac042102201a201941107472201b4100477241ff01710d050b200341c0076a200110d004200341d0006a20032802c007220220032802c8074180a6cc004100410010c70120032802502118024020032802c407450d00200210290b4183ac04210220184101470d044197dec900ad42808080808001841001220229000021172002290008212b200210294184baca00ad42808080809001841001220229000021292002290008212c200210292003202c3703900520032029370388052003202b37038005200320173703f804200341c0076a200341f8046a108f0302400240024020032802c00722020d0041002119200341003602b806200342043703b0060c010b20032902c4072117200320023602b006200320173702b4062017422088a722182017a72219470d010b200341b0066a2019410110980120032802b406211920032802b006210220032802b80621180b200220184102746a20013602002003201841016a22183602b8064197dec900ad42808080808001841001220129000021172001290008212b200110294184baca00ad42808080809001841001220129000021292001290008212c200110292003202c3703900520032029370388052003202b37038005200320173703f804024020020d00200341f8046aad428080808080048410040c0d0b200341203602c4072003200341f8046a3602c00720022018200341c0076a10a304201941ffffffff0371450d0c200210290c0c0b2001412c6a280200211e200141286a2802002118200141246a280200211d200341e0016a41186a200141196a290000370300200341e0016a41106a200141116a290000370300200341e0016a41086a200141096a290000370300200320012900013703e0014102210120022d00000d1320022d00014101470d13200241196a2d00002101200241186a2d00002119200241166a2f0100211a200241156a2d0000211b200241146a2d0000211c200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002105200241046a2d00002106200241026a2f0100210720032002411a6a29010037038003200320013a00ff02200320193a00fe022003201a3b01fc022003201b3a00fb022003201c3a00fa022003201f3b01f802200320203a00f702200320213a00f602200320223b01f402200320233a00f302200320243a00f202200320253b01f002200320263a00ef02200320273a00ee02200320283b01ec02200320053a00eb02200320063a00ea02200320073b01e8020240201e41818001490d004183ddc900211c410c211b410321014116211a410221190c150b201ead222c422086201dad84101022012900002117200141086a290000212b200141106a2900002129200341f0036a41186a200141186a290000370300200341f0036a41106a2029370300200341f0036a41086a202b370300200320173703f00320011029200341c0076a200341f0036a10a307200341f0006a20032802c007220220032802c8074180a6cc004100410010c70120032802702101024020032802c407450d00200210290b20014101460d122003200341e0016a3602c4072003200341f0036a3602c007200341f8046a200341c0076a108106200341c0076a200341f8046a10a407200341e8006a20032802c007220220032802c8074180a6cc004100410010c70120032802682101024020032802c407450d00200210290b20014101460d12200341d8006a202c42004280c2d72f420010d50720032003290358222b4280c8afa0257c2217370380062003200341d8006a41086a2903002017202b54ad7c222b370388062003200341e8026a3602a0062003200341e8026a3602c0012003200341c0016a3602c8072003200341a0066a3602c407200320034180066a3602c007200341b0066a200341e8026a200341c0076a108e040240024020032802b0064101470d00200341bc066a280200211b200341b0066a41086a280200211c20032d00b706210220032d00b606211920032d00b506211a20032d00b40621010c010b410421010240200341b0066a41086a2903004201520d00200341b0066a41106a290300212920032802c0012102200341f8076a200341b0066a41186a290300370300200341f0076a2029370300200341c0076a41086a41003a0000200341c9076a2002290000370000200341d1076a200241086a290000370000200341d9076a200241106a290000370000200341e1076a200241186a290000370000200341033a00c007200341c0076a10cb010b0b200141ff01714104470d14200341c0076a200341f0036a10a30720032802c0072101200320032802c8073602b406200320013602b006201d201e200341b0066a10a104024020032802c407450d00200110290b200341f0076a202b370300200341e8076a201737030020034188086a4100360200200341c0076a41106a200341e8026a41086a290300370300200341c0076a41186a200341e8026a41106a290300370300200341e0076a200341e8026a41186a29030037030020034194086a200341f0036a41086a2903003702002003419c086a200341f0036a41106a290300370200200341a4086a200341f0036a41186a290300370200200342013703c007200320032903e8023703c8072003420837038008200341003602f807200320032903f00337028c08200341c4086a200341e0016a41186a290300370200200341bc086a200341e0016a41106a290300370200200341b4086a200341e0016a41086a290300370200200320032903e0013702ac08200341b0066a200341f8046a10a40720032802b0062101200320032802b806360284062003200136028006200341c0076a20034180066a10a107024020032802b406450d00200110290b200341c0076a41086a41073a0000200341c9076a20032903f804370000200341d1076a200341f8046a41086a290300370000200341d9076a200341f8046a41106a290300370000200341e1076a200341f8046a41186a2903003700002003410e3a00c007200341c0076a10cb012018450d0b201d10290c0b0b200341d8016a200141196a290000370300200341d0016a200141116a290000370300200341c8016a200141096a290000370300200320012900013703c001024020022d00014101470d0020022d000041ff01710d0020032002411a6a290100370398062003200241026a2901003703800620032002410a6a290100370388062003200241126a29010037039006200341a0066a200341c0016a10a407200341c0076a20032802a006220120032802a80610a50720032903c0072117200341f8046a200341c8076a41880110e4071a0240024020174202510d00200341f0036a200341f8046a41880110e4071a024020032802a406450d00200110290b200341e8026a200341f0036a41880110e4071a200341e0016a200341e8026a41880110e4071a200320173703b006200341b0066a41086a200341e0016a41880110e4071a200341f0036a41186a2201200341b0066a41206a290300370300200341f0036a41106a2202200341b0066a41186a290300370300200341f0036a41086a2218200341b0066a41106a290300370300200320032903b8063703f00320174201520d01200341e0066a290300212b200341d8066a2903002129200341c0076a410e6a2018290300370100200341c0076a41166a2002290300370100200341c0076a411e6a20012903002217370100200341f8046a411e6a22192017370100200320032903f0033701c607200341f8046a41086a200341c0076a41086a290100370300200341f8046a41106a200341c0076a41106a290100370300200341f8046a41186a200341c0076a41186a290100370300200320032901c0073703f804200120192901003703002002200341f8046a41166a2901003703002018200341f8046a410e6a290100370300200320032901fe043703f003200341f0036a20034180066a412010e7070d01200341c0076a200341fc066a10a30720033502c80742208620032802c0072201ad841004024020032802c407450d00200110290b200341c0076a200341c0016a10a40720033502c80742208620032802c0072201ad841004024020032802c407450d00200110290b200320293703e8022003202b3703f00202402029202b84500d00200320034180066a3602e001200341f8046a20034180066a200341e8026a200341e0016a10ea0320032903f8044201520d002003290380052117200341f8076a200341f8046a41106a290300370300200341f0076a2017370300200341c0076a41086a41003a0000200341c9076a200329038006370000200341d1076a20034180066a41086a290300370000200341d9076a20034180066a41106a290300370000200341e1076a20034198066a290300370000200341033a00c007200341c0076a10cb010b200341c0076a41086a410a3a0000200341c9076a20032903c001370000200341d1076a200341c0016a41086a290300370000200341d9076a200341d0016a290300370000200341e1076a200341d8016a2903003700002003410e3a00c007200341c0076a10cb01200341f4066a2802002201450d0d200141306c450d0d20032802f00610290c0d0b024020032802a406450d00200110290b41eddcc9002101410a21024180801021180c110b41e4dcc900210141092102418080142118200341f4066a2802002219450d10201941306c450d1020032802f0061029410321190c110b41022119410021180c100b200141386a2903002117200141306a290300212b2001412c6a280200211a200141286a2802002118200141246a280200211920034180036a200141196a290000370300200341f8026a200141116a290000370300200341f0026a200141096a290000370300200320012900013703e80220032002411a6a290100370390052003200241026a2901003703f80420032002410a6a290100370380052003200241126a290100370388050240024020022d00014101470d0020022d000041ff01710d00200341f0036a41186a200341f8046a41186a2202290300370300200341f0036a41106a200341f8046a41106a221b290300370300200341f0036a41086a200341f8046a41086a221c290300370300200320032903f8043703f0034182ac0c2101200341f0036a10a607450d0f201aad4220862019ad84101022012900002129200141086a290000212c200141106a29000021042002200141186a290000370300201b2004370300201c202c370300200320293703f80420011029200341c0076a200341f8046a10a307200341f8006a20032802c007220220032802c8074180a6cc004100410010c70120032802782101024020032802c407450d00200210290b20014101460d012003200341e8026a3602c4072003200341f8046a3602c007200341b0066a200341c0076a108106200341c0076a200341f8046a10a30720032802c0072101200320032802c8073602e401200320013602e0012019201a200341e0016a10a104024020032802c407450d00200110290b20032903b006212920032903b806212c20032903c0062104200341e1076a20032903c806370000200341d9076a2004370000200341d1076a202c370000200341c9076a2029370000200341c0076a41086a41073a00002003410e3a00c007200341c0076a10cb01413010272201450d162001202b370320200120032903f003370000200141286a2017370300200141186a200341f0036a41186a290300370000200141106a200341f0036a41106a290300370000200141086a200341f0036a41086a29030037000020034184086a42818080801037020020034194086a200341f8046a41086a2903003702002003419c086a200341f8046a41106a290300370200200341a4086a200341f8046a41186a2903003702002003200136028008200341003602f807200342003703c007200320032903f80437028c08200341b4086a200341e8026a41086a290300370200200341bc086a200341e8026a41106a290300370200200341c4086a200341e8026a41186a290300370200200320032903e8023702ac08200341e0016a200341b0066a10a40720032802e0012102200320032802e801360284062003200236028006200341c0076a20034180066a10a107024020032802e401450d00200210290b200110292018450d0b201910290c0b0b4182ac0c21010c0e0b4183ac0c21010c0d0b200141306a2903002117200141286a290300212b200341c0016a41186a200141196a290000370300200341c0016a41106a200141116a290000370300200341c0016a41086a200141096a290000370300200320012900013703c0014182ac1021010240024002400240024002400240024020022d00000d0020022d00014101470d00200241196a2d00002118200241186a2d00002119200241166a2f0100211a200241156a2d0000211b200241146a2d0000211c200241126a2f0100211d200241116a2d0000211e200241106a2d0000211f2002410e6a2f010021202002410d6a2d000021212002410c6a2d000021222002410a6a2f01002123200241096a2d00002124200241086a2d00002125200241066a2f01002126200241056a2d00002127200241046a2d00002128200241026a2f0100210520032002411a6a29010037039806200320183a009706200320193a0096062003201a3b0194062003201b3a0093062003201c3a0092062003201d3b0190062003201e3a008f062003201f3a008e06200320203b018c06200320213a008b06200320223a008a06200320233b018806200320243a008706200320253a008606200320263b018406200320273a008306200320283a008206200320053b01800620034180066a10a607450d00200341f8046a41186a200341c0016a41186a290300370300200341f8046a41106a200341c0016a41106a290300370300200341f8046a41086a200341c0016a41086a290300370300200320032903c0013703f804200341a0066a200341f8046a10a707200341c0076a20032802a006220120032802a80610a50720032903c0072129200341f8046a200341c0076a41086a41880110e4071a024020294202510d00200341f0036a200341f8046a41880110e4071a024020032802a406450d00200110290b200341e8026a200341f0036a41880110e4071a200341e0016a200341e8026a41880110e4071a200320293703b006200341b0066a41086a200341e0016a41880110e4071a200341f0036a41186a20034180066a41186a290300370300200341f0036a41106a20034180066a41106a290300370300200341f0036a41086a20034180066a41086a29030037030020032003290380063703f00320032802f006211a41002101200341f8066a280200221f41014b0d020240201f0e020004000b200341c0076a41186a200341f0036a41186a290300370300200341c0076a41106a200341f0036a41106a290300370300200341c0076a41086a200341f0036a41086a290300370300200320032903f0033703c00741002118200341c0076a21020c040b024020032802a406450d00200110290b4183ac1021010b200041206a410a3602002000411c6a41eddcc900360200200041186a200136020020004200370308420121170c190b201f210203402002410176221820016a22192001201a201941306c6a200341f0036a412010e7074101481b2101200220186b220241014b0d000b0b201a200141306c6a2202200341f0036a412010e7072218450d01200341c0076a41186a200341f0036a41186a290300370300200341c0076a41106a200341f0036a41106a290300370300200341c0076a41086a200341f0036a41086a290300370300200320032903f0033703c007200341c0076a2102201f2018411f7620016a2218490d040b0240201f200341f4066a280200470d00200341f0066a201f410110900120032802f006211a0b201a201841306c6a220141306a2001201f20186b41306c10e5071a200141286a20173703002001202b370320200141186a200241186a290300370300200141106a200241106a290300370300200141086a200241086a290300370300200120022903003703002003201f41016a221f3602f8060c010b201f20014d0d0120032901f203212920032901fa03212c200328018204211820032f01860421192003290388042104200220032f01f0033b0100201a200141306c6a2201202b37032020012004370318200120193b0116200120183601122001202c37010a20012029370102200141286a20173703000b200341c0076a10a80720032802c007210a0240201f450d00200a20032802c80722014105746a211b20032802f0062120200a410020011b2102200a41206a200a20011b21014100211e4100211c0340201c221d41016a211c2020201d41306c6a211a024002400340024020020d00410021020c020b2002201a412010e707221841004a0d01410020012001201b4622191b21022001200141206a20191b2219210120184100480d000b024002400240201e0d004100211e0c010b201d201e6b2201201f4f0d01200341f8046a41286a22182020200141306c6a220141286a221d290300370300200341f8046a41206a2221200141206a2222290300370300200341f8046a41186a2223200141186a2224290300370300200341f8046a41106a2225200141106a2226290300370300200341f8046a41086a2227200141086a2228290300370300200320012903003703f804201a41086a22052903002117201a41106a2206290300212b201a41186a22072903002129201a41206a2208290300212c201a2903002104201d201a41286a22092903003703002022202c370300202420293703002026202b37030020282017370300200120043703002009201829030037030020082021290300370300200720232903003703002006202529030037030020052027290300370300201a20032903f8043703000b201921010c020b2001201f4180bdc7001036000b201e41016a211e0b201c201f470d000b201e417f6a201f4f0d002003201f201e6b3602f8060b024020032802c40741ffffff3f71450d00200a10290b200341f8046a41186a4200370300200341f8046a41106a22184200370300200341f8046a41086a22014200370300200342003703f8044196ebca00ad42808080808002841001220229000021172001200241086a290000370300200320173703f8042002102941f0edca00ad4280808080f00084100122022900002117200341e8026a41086a2219200241086a290000370300200320173703e80220021029201820032903e8022217370300200341c0076a41086a2001290300370300200341c0076a41106a2017370300200341c0076a41186a2019290300370300200320032903f8043703c007200341f8046a200341c0076a10a90720032802f804210120032902fc042117200341003602c807200342013703c007200341c0076a41002017420020011b2217422088a7220241306c221941306d109e012017a7211a2001410820011b211b20032802c807211802402002450d0020032802c00720184105746a2101201b21020340200241086a2900002117200241106a290000212b20022900002129200141186a200241186a290000370000200141106a202b370000200141086a201737000020012029370000201841016a2118200141206a2101200241306a2102201941506a22190d000b0b200320183602c8070240201a450d00201a41306c450d00201b10290b024020032802c40741ffffff3f71450d0020032802c00710290b024020032802f806201841016a410176490d0020032802e8064101460d00200341c0076a41186a4200370300200341c0076a41106a22184200370300200341c0076a41086a22014200370300200342003703c00741b3e6ca00ad4280808080e000841001220229000021172001200241086a290000370300200320173703c0072002102941c9e6ca00ad4280808080e00084100122022900002117200341e8026a41086a2219200241086a290000370300200320173703e80220021029201820032903e8022217370300200341f8046a41086a22022001290300370300200341f8046a41106a22182017370300200341f8046a41186a221a2019290300370300200320032903c0073703f80420034180016a200341f8046a412010fc01200341ec066a20032802840141c0f0006a41c0f0002003280280011b360200200341013602e806201a200341c0016a41186a22192903003703002018200341c0016a41106a221a2903003703002002200341c0016a41086a2218290300370300200320032903c0013703f804200141083a00002003410e3a00c007200341c9076a20032903c001370000200341d1076a2018290300370000200341d9076a201a290300370000200341e1076a2019290300370000200341c0076a10cb010b200341c0076a200341b0066a41900110e4071a200341f8046a200341c0016a10a40720032802f804210120032003280280053602f403200320013602f003200341c0076a200341f0036a10a107024020032802fc04450d00200110290b20034184086a2802002201450d0a200141306c450d0a20032802800810290c0a0b2001201f41f4d8ca001036000b2018201f1041000b20004200370308200041206a41143602002000411c6a418fddc900360200200041186a2002360200420121170c110b1032000b4102211820022d00000d0720022d00014101470d07200141186a2d0000210f200141176a2d00002110200141156a2f00002111200141146a2d00002112200141136a2d00002113200141116a2f00002114200141106a2d000021152001410f6a2d000021162001410d6a2f000021322001410c6a2d000021332001410b6a2d00002134200141096a2f00002135200141086a2d00002136200141076a2d00002137200141056a2f00002138200141046a2d00002139200141036a2d0000213a20012f0001213b2003200141196a290000222a370390052003200f3a008f05200320103a008e05200320113b018c05200320123a008b05200320133a008a05200320143b018805200320153a008705200320163a008605200320323b018405200320333a008305200320343a008205200320353b018005200320363a00ff04200320373a00fe04200320383b01fc04200320393a00fb042003203a3a00fa042003203b3b01f80420034180066a200341f8046a10a707200341c0076a200328028006220120032802880610a50720032903c0072117200341f8046a200341c8076a41880110e4071a0240024002400240024020174202510d00200341f0036a200341f8046a41880110e4071a0240200328028406450d00200110290b200341e8026a200341f0036a41880110e4071a200341e0016a200341e8026a41880110e4071a200320173703b006200341b0066a41086a200341e0016a41880110e4071a20032802e8064101460d0141dbdcc9002119410621010c020b0240200328028406450d00200110290b41eddcc9002119410a2102410421010c020b200341c0076a41186a4200370300200341c0076a41106a22184200370300200341c0076a41086a22014200370300200342003703c00741b3e6ca00ad4280808080e000841001220229000021172001200241086a290000370300200320173703c0072002102941c9e6ca00ad4280808080e00084100122022900002117200341e8026a41086a2219200241086a290000370300200320173703e80220021029201820032903e8022217370300200341f8046a41086a2001290300370300200341f8046a41106a2017370300200341f8046a41186a2019290300370300200320032903c0073703f804200341b8016a200341f8046a412010fc0120032802bc01410020032802b8011b200341ec066a2802004f0d0241d2dcc9002119410721010b41092102200341f4066a2802002218450d00201841306c450d0020032802f00610290b410321180c090b200341c0076a200341fc066a10a30720033502c80742208620032802c0072201ad841004024020032802c407450d00200110290b2003202a3703d8072003200f3a00d707200320103a00d607200320113b01d407200320123a00d307200320133a00d207200320143b01d007200320153a00cf07200320163a00ce07200320323b01cc07200320333a00cb07200320343a00ca07200320353b01c807200320363a00c707200320373a00c607200320383b01c407200320393a00c3072003203a3a00c2072003203b3b01c007200341f8046a200341c0076a10a70720033502800542208620032802f8042201ad841004024020032802fc04450d00200110290b200341c0076a200341b0066a41900110e4071a20034188086a280200212820034184086a280200213c2003280280082124200341f0036a10a80720032802f003210a0240024020280d00410021280c010b200a20032802f80322014105746a211b200a410020011b2102200a41206a200a20011b21014100211e4100211c0340201c221d41016a211c2024201d41306c6a211a024002400340024020020d00410021020c020b2002201a412010e707221841004a0d01410020012001201b4622191b21022001200141206a20191b2219210120184100480d000b024002400240201e0d004100211e0c010b201d201e6b220120284f0d01200341f8046a41286a22182024200141306c6a220141286a221d290300370300200341f8046a41206a221f200141206a2220290300370300200341f8046a41186a2221200141186a2222290300370300200341f8046a41106a2223200141106a2225290300370300200341f8046a41086a2226200141086a2227290300370300200320012903003703f804201a41086a22052903002117201a41106a2206290300212b201a41186a22072903002129201a41206a2208290300212c201a2903002104201d201a41286a22092903003703002020202c370300202220293703002025202b3703002027201737030020012004370300200920182903003703002008201f290300370300200720212903003703002006202329030037030020052026290300370300201a20032903f8043703000b201921010c020b200120284180bdc7001036000b201e41016a211e0b201c2028470d000b201e450d0020282028201e6b220120282001491b21280b024020032802f40341ffffff3f71450d00200a10290b20284115490d032028410176ad42307e2217422088a70d012017a7223d417f4c0d01203d1027220b450d0041002102200341003602f803200342043703f003202441506a210e202441907f6a213e410421184100210c2028212303402023211b410021234101211c0240201b417f6a220d450d000240024002400240024002402024200d41306c6a220141206a290300201b41306c221a20246a41406a2219290300222b54200141286a2903002229201941086a29030022175420292017511b0d00201b417e6a211e203e201a6a2101410021234100211903400240201e2019470d00201b211c0c080b202b2001290300222c5a211a2017200141086a290300222951211c201720295a211d200141506a2101201941016a2119202c212b20292117201a201d201c1b0d000b201941016a211c2019417f73201b6a211a0c010b203e201b41066c410374221e6a2101200d211a024003400240201a4101470d004100211a0c020b202b2001290300222c5421192017200141086a290300222951211c2017202954211d200141506a2101201a417f6a211a202c212b202921172019201d201c1b0d000b0b201b201a490d02201b20284b0d01201b201a6b221c410176221d450d00200e201e6a21012024201a41306c6a21190340200341f8046a41286a221e201941286a221f290300370300200341f8046a41206a2220201941206a2221290300370300200341f8046a41186a2222201941186a2223290300370300200341f8046a41106a2225201941106a2226290300370300200341f8046a41086a2227201941086a2205290300370300200320192903003703f804200141086a22062903002117200141106a2207290300212b200141186a22082903002129200141206a2209290300212c200141286a220a290300210420192001290300370300201f20043703002021202c370300202320293703002026202b37030020052017370300200a201e29030037030020092020290300370300200820222903003703002007202529030037030020062027290300370300200120032903f804370300200141506a2101201941306a2119201d417f6a221d0d000b0b0240201a0d00201a21230c050b0240201c41094d0d00201a21230c050b201b20284b0d022024201a41306c6a211f0340201b201a417f6a2223490d040240201b20236b221c4102490d002024201a41306c6a220141206a221d2903002024202341306c6a221941206a221e29030022295a200141286a2220290300222b201941286a222129030022175a202b2017511b0d002019290300212b20192001290300370300200341f8046a41186a2222201941186a2225290300370300200341f8046a41106a2226201941106a2227290300370300200341f8046a41086a2205201941086a22062903003703002006200141086a2903003703002027200141106a2903003703002025200141186a290300370300201e201d290300370300202120202903003703002003202b3703f8040240201c4103490d00200d211d201f211e20194180016a29030020295a20194188016a290300222b20175a202b2017511b0d0002400340201e220141286a200141d8006a290300370300200141206a200141d0006a290300370300200141186a200141c8006a290300370300200141106a200141c0006a290300370300200141086a200141386a2903003703002001200141306a221e290300370300201a201d417f6a221d460d0120014180016a29030020295a20014188016a290300222b20175a202b2017511b450d000b0b200141306a21010b20012029370320200120032903f804370300200141286a2017370300200141186a2022290300370300200141106a2026290300370300200141086a20052903003703000b2023450d05201f41506a211f2023211a201c410a4f0d050c000b0b201b20284180cac700104b000b201a201b4180cac700104c000b201b201a417f6a2223490d00201b20284190cac700104b000b2023201b4190cac700104c000b0240200c20032802f403470d00200341f0036a200c4101108d0120032802f003211820032802f8032202210c0b2018200c4103746a2201201c360204200120233602002003200241016a22023602f8032002210c024020024102490d000240024003400240024002400240024020182002417f6a4103746a2201280200450d00200241037420186a221b41746a280200221a200128020422194b0d010b20024103490d022001280204211920182002417d6a22204103746a28020421010c010b4102210c200241024d0d0620182002417d6a22204103746a28020422012019201a6a4d0d004103210c200241034d0d06201b41646a2802002001201a6a4b0d050b20012019490d010b2002417e6a21200b02400240024002400240024002402002202041016a22214d0d00200220204d0d012018202041037422256a2201280204222620012802006a22012018202141037422276a22022802002222490d02200120284b0d032024202241306c6a221e2002280204221f41306c22026a2119200141306c2118200120226b221b201f6b2201201f4f0d04200b2019200141306c220210e407221b20026a211a201f4101480d0520014101480d05200e20186a21182019210103402018200141506a221c201a41506a221d201a41706a2202290300200141706a221929030054200241086a2903002217201941086a290300222b542017202b511b22191b2202290300370300201841086a200241086a290300370300201841106a200241106a290300370300201841186a200241186a290300370300201841206a200241206a290300370300201841286a200241286a290300370300201a201d20191b211a0240201e201c200120191b2201490d00201b21020c080b201841506a2118201b2102201b201a490d000c070b0b2021200241a0cac7001036000b2020200241b0cac7001036000b2022200141c0cac700104c000b2001202841c0cac700104b000b200b201e200210e407221d20026a211a0240201f4101480d00201b201f4c0d00202420186a211c201d2102201e21010340200120192002201941206a290300200241206a29030054201941286a2903002217200241286a290300222b542017202b511b221b1b2218290300370300200141086a201841086a290300370300200141106a201841106a290300370300200141186a201841186a290300370300200141206a201841206a290300370300200141286a201841286a2903003703002002200241306a201b1b2102200141306a2101201941306a2019201b1b2219201c4f0d03201a20024b0d000c030b0b201e2101201d21020c010b20192101201b21020b20012002201a20026b221820184130706b10e4071a024020032802f803220120204d0d0020032802f003221820256a22022026201f6a36020420022022360200200120214d0d02201820276a2202200241086a20012021417f736a41037410e5071a20032001417f6a22023602f803200241014b0d010c030b0b2020200141d0cac7001036000b202120011042000b2002210c0b2023450d030c000b0b1039000b1038000b024020032802f40341ffffffff0171450d00201810290b203d4130702101203d4130490d01203d2001460d01200b10290c010b20284102490d002028417f6a21182024202841306c6a211a4100211b0340024002400240202820182201417f6a2218490d00202820186b22194102490d022024200141306c6a220141206a221c2903002024201841306c6a220241206a221d29030022295a200141286a221e290300222b200241286a221f29030022175a202b2017511b0d022002290300212b20022001290300370300200341f8046a41186a2220200241186a2221290300370300200341f8046a41106a2222200241106a2223290300370300200341f8046a41086a2225200241086a22262903003703002026200141086a2903003703002023200141106a2903003703002021200141186a290300370300201d201c290300370300201f201e2903003703002003202b3703f80420194103490d01201b2119201a211c20024180016a29030020295a20024188016a290300222b20175a202b2017511b0d010340201c220141506a22022001290300370300200241286a200141286a290300370300200241206a200141206a290300370300200241186a200141186a290300370300200241106a200141106a290300370300200241086a200141086a2903003703002019417f6a2219450d02200141306a211c200141d0006a29030020295a200141d8006a290300222b20175a202b2017511b0d020c000b0b2018202841f0c9c700104c000b20012029370320200120032903f804370300200141286a2017370300200141186a2020290300370300200141106a2022290300370300200141086a20252903003703000b201b41016a211b201a41506a211a20180d000b0b200342f0f2bda1a7ee9cb9f9003703f804200341e0016a200341f8046a108202200342f0f2bda1a7ee9cb9f9003703f804200341f0036a200341f8046a108202200341e8026a200341f0036a10a802200341f8046a20032802e802220120032802f00210a90220032903f804211720034188056a290300212b2003290380052129024020032802ec02450d00200110290b2028202841017622014d0d014200202b4200201742015122021b222b2029420020021b22174280c8afa02554ad7d222920174280b8d0df5a7c222c2017562029202b56201742ffc7afa025561b22021b22172024200141306c6a220141286a290300222b200129032022294200202c20021b222c56202b201756202b2017511b22011b212b202c202920011b2117024020032903c0074201520d00200341e8026a41186a200341c0076a41206a290300370300200341e8026a41106a200341c0076a41186a290300370300200341f0026a200341c0076a41106a290300370300200320032903c8073703e802200341c0076a41286a29030021292003200341c0076a41306a290300222c37038806200320293703800602402029202c84500d002003200341e8026a3602c001200341f0036a200341e8026a20034180066a200341c0016a10ea0320032903f0034201520d0020032903f8032129200341b0056a200341f0036a41106a290300370300200341a8056a2029370300200341f8046a41086a41003a000020034181056a20032903e80237000020034189056a200341e8026a41086a29030037000020034191056a200341e8026a41106a29030037000020034199056a20034180036a290300370000200341033a00f804200341f8046a10cb010b200341e8026a200341ac086a412010e707450d00200341a8016a2017202b42e400420010e00720034198016a20032903a8012229200341a8016a41086a290300222c429c7f427f10d50720034188016a2029202c4214420010d507200341f8046a200341e0016a200341e8026a200329038801222c20172003290398017ca741ff0071220141056e2202200141146c2002419c7f6c6a41fcff037141324b6aad7c222920034188016a41086a2903002029202c54ad7c222c410010e003202b202c7d2017202954ad7d212b201720297d21170b200341f8046a200341e0016a200341ac086a2017202b410010e00320034199056a202a37000020034198056a200f3a000020034197056a20103a000020034195056a20113b000020034194056a20123a000020034193056a20133a000020034191056a20143b000020034190056a20153a00002003418f056a20163a00002003418d056a20323b00002003418c056a20333a00002003418b056a20343a000020034189056a20353b000020034188056a20363a000020034187056a20373a000020034185056a20383b000020034184056a20393a000020034183056a203a3a0000200341f8046a41096a203b3b000020034180056a41093a00002003410e3a00f804200341c8056a2017370300200341d0056a202b370300200341b9056a200341c4086a290200370000200341b1056a200341bc086a290200370000200341a9056a200341b4086a290200370000200341a1056a20032902ac08370000200341f8046a10cb01203c450d00203c41306c450d00202410290b42002117200042003703080c090b200120284184d9ca001036000b0b20004200370308200041206a20023602002000411c6a2019360200200041186a200141ff017141107420187241802c72360200420121170c060b02402018450d00201910290b20004200370308200041206a410c3602002000411c6a41f7dcc900360200200041186a2001360200420121170c050b410321190b20004200370308200041206a20023602002000411c6a2001360200200041186a20184180801c7120197241802c72360200420121170c030b41f7dcc900211c410c211b4116211a41032119410321010c010b0b02402018450d00201d10290b20004200370308200041206a201b3602002000411c6a201c360200200041186a2002411874201941ff017141107472201a41ff017141087472200141ff017172360200420121170b20002017370300200341d0086a24000f0b1030000bf3cb0111037f017e057f017e177f027e087f037e0a7f017e047f017e047f027e027f027e087f230041800b6b2204240002400240024002400240024002400240200141ff01710d00200241ff01714102470d00200441d0036a41186a22054200370300200441d0036a41106a22064200370300200441d0036a41086a22014200370300200442003703d00341cd87cc00ad4280808080a00184100122022900002107200441f8056a41086a2208200241086a290000370300200420073703f8052002102920012008290300370300200420042903f8053703d00341ac84cc00ad4280808080900184100122022900002107200441a8016a41086a2208200241086a290000370300200420073703a80120021029200620042903a8012207370300200441a0066a41086a22022001290300370300200441a0066a41106a22092007370300200441a0066a41186a220a2008290300370300200420042903d0033703a006200441d0006a200441a0066a41204180a6cc004100410010c70120042802504101460d01200542003703002006420037030020014200370300200442003703d00341d787cc00ad42808080809001841001220829000021072001200841086a290000370300200420073703d0032008102941fa87cc00ad4280808080e00084100122082900002107200441a0086a41086a2205200841086a290000370300200420073703a00820081029200620042903a00822073703002002200129030037030020092007370300200a2005290300370300200420042903d0033703a006200441a0086a200441a0066a10a60320042802a0082201410420011b210b200341086a280200220c20042902a408420020011b220d422088a7220e4b0d03200c41ffffffff0371200c460d020c070b200041023a00000c040b200041832e3b0100200041086a4112360200200041046a4181aec700360200200041026a41003a00000c030b200c4102742201417f4c0d040240024002400240024020010d004104210f0c010b20011027220f450d010b41002108200441003602602004200f36025820042001410276220536025c200441d0036a41186a22104200370300200441d0036a41106a22114200370300200441d0036a41086a22124200370300200442003703d00341b3e6ca00ad4280808080e000841001220129000021072012200141086a290000370300200420073703d0032001102941c9e6ca00ad4280808080e00084100122012900002107200441a0086a41086a2202200141086a290000370300200420073703a00820011029200620042903a008370000200641086a22132002290300370000200441a0066a41086a22142012290300370300200441a0066a41106a22152011290300370300200441a0066a41186a22162010290300370300200420042903d0033703a006200441c8006a200441a0066a412010fc010240200e450d0020032802002217200c4190026c6a2118024002400240200c450d00200b200e412c6c6a21094100211941012101200b21082017211a0340201a2802482105024002400240024020014101710d00200220054f0d010b201a4190026a211b20082101034020092001460d02200128020021022001412c6a2208210120022005470d000b200841786a2802004102460d02201a41a0016a2008460d02200841586a201a41f8006a412010e707450d02200041832e3b0100200041086a410f360200200041046a41c7aec700360200200041026a41043a0000200441d8006a21010c050b200041832e3b0100200041086a410f360200200041046a41a8aec700360200200041026a41023a0000200441d8006a21010c040b200041832e3b0100200041086a4110360200200041046a41b7aec700360200200041026a41033a0000200441d8006a21010c030b0240201a280218221c450d00201a280210211d200441a0086a2005108806200441d0036a20042802a008220220042802a80810f90120042802d403410020042802d003410146220a1b210120042802d803211e024020042802a408450d00200210290b024002402001201c6a22014101460d004105211f41d6aec700212041092121200141e4004b0d01201e4100200a1b2102201c410474210a201d41086a21010340200128020020026a2102200141106a2101200a41706a220a0d000b200241a09c014b0d010b200541e807490d01201c410474210103402001450d02200141706a2101201d2d000c2102201d41106a211d20024102470d000b4106211f41dfaec7002120411421210b200041832e3b0100200041086a2021360200200041046a2020360200200041026a201f3a0000200441d8006a21010c030b201a280248210202402019200428025c470d00200441d8006a201941011098012004280258210f200428026021190b200f20194102746a20023602002004201941016a221936026041002101201b211a201b2018470d000b0b200441d0036a41186a22084200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341cd87cc00ad4280808080a00184100122022900002107200441f8056a41086a2209200241086a290000370300200420073703f8052002102920012009290300370300200420042903f8053703d00341d983cc00ad4280808080b00184100122022900002107200441a8016a41086a2209200241086a290000370300200420073703a80120021029200620042903a801370000200641086a2009290300370000200441a0066a41086a2001290300370300200441a0066a41106a2005290300370300200441a0066a41186a2008290300370300200420042903d0033703a006200441a0086a200441a0066a109e0320042802a008211b20042902a4082107200441a0086a10a40320042802a408212220042802a008212320042802a8082101200441d0076a41186a200441c4086a290200370300200441d0076a41106a200441bc086a290200370300200441d0076a41086a200441b4086a290200370300200420042902ac083703d0072001200141ffffffff0171470d0a20014103742202417f4c0d0a0240024020020d004104210a0c010b20021027220a450d040b200441003602a8082004200a3602a0082004200241037622243602a40802400240200141037422010d00410021080c010b202320016a2119410021082023210f4100211a03400240200f2802004101470d00024002400240200841014b0d000240024020080e020001000b200f280204211d410021010c030b200f280204211d410021010c010b200f280204211d4100210120082102034020012002410176220520016a2209200a20094103746a280204201d4b1b2101200220056b220241014b0d000b0b0240200a20014103746a2802042202201d460d0020012002201d496a21010b200820014f0d00200120081041000b0240200820042802a408470d00200441a0086a20084101108d0120042802a008210a0b200a20014103746a220241086a2002200820016b41037410e5071a2002201d3602042002201a3602002004200841016a22083602a8080b201a41016a211a2019200f41086a220f470d000b20042802a40821240b200441d0036a41186a22024200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341b3e6ca00ad4280808080e0008422251001220929000021262001200941086a290000370300200420263703d0032009102941c9e6ca00ad4280808080e000841001221d2900002126200441a0086a41086a2209201d41086a290000370300200420263703a008201d1029200620042903a008370000200641086a220f2009290300370000200441a0066a41086a221a2001290300370300200441a0066a41106a22192005290300370300200441a0066a41186a221c2002290300370300200420042903d0033703a006200441c0006a200441a0066a412010fc012004280244212720042802402128200242003703002005420037030020014200370300200442003703d00320251001221d29000021252001201d41086a290000370300200420253703d003201d102941cfe6ca00ad4280808080a001841001221d29000021252009201d41086a290000370300200420253703a008201d1029200620042903a008370000200f2009290300370000201a200129030037030020192005290300370300201c2002290300370300200420042903d0033703a006200441a0086a200441a0066a412010cd0120042d00a00821092002200441b9086a2900003703002005200441b1086a2900003703002001200441a9086a290000370300200420042900a1083703d0030240024020094101460d0020044180086a41186a420037030020044180086a41106a420037030020044180086a41086a420037030020044200370380080c010b20044180086a41186a200229030037030020044180086a41106a200529030037030020044180086a41086a2001290300370300200420042903d003370380080b200441d0036a41186a22024200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341b1dcc900ad4280808080f000841001220929000021252001200941086a290000370300200420253703d00320091029418886ca00ad4280808080c001841001221d2900002125200441a0086a41086a2209201d41086a290000370300200420253703a008201d1029200620042903a008370000200641086a221c2009290300370000200441a0066a41086a221d2001290300370300200441a0066a41106a220f2005290300370300200441a0066a41186a221a2002290300370300200420042903d0033703a006200441386a200441a0066a412010fc01200428023c211e2004280238211f200242003703002005420037030020014200370300200442003703d00341b3e6ca00ad4280808080e000841001221929000021252001201941086a290000370300200420253703d0032019102941cfe6ca00ad4280808080a001841001221929000021252009201941086a290000370300200420253703a00820191029200620042903a008370000201c2009290300370000201d2001290300370300200f2005290300370300201a2002290300370300200420042903d0033703a006200441a0086a200441a0066a412010cd0120042d00a00821092002200441b9086a2900003703002005200441b1086a2900003703002001200441a9086a290000370300200420042900a1083703d003201e4100201f1b21190240024020094101460d00201a4200370300200f4200370300201d4200370300200442003703a0060c010b201a2002290300370300200f2005290300370300201d2001290300370300200420042903d0033703a0060b20074200201b1b2107201b4101201b1b2129200441a8016a410c6a200441a0066a41086a222a290300370200200441bc016a200441a0066a41106a222b290300370200200441c4016a200441a0066a41186a222c290300370200200420193602a801200420042903a0063702ac01200441003602900120044201370388014101212d200c450d01202941606a212e200a410c6a2120200441a0086aad4280808080800284212f200441a0066aad42808080808004842130200441d0036aad4280808080c0008421312007422088a72132200441a0086a4101722133200441a0086a41106a2134200441a9086a213541002102024003402017211c41f3aec700211a4183ae1c211b4110211e20022008460d01201c4190026a2117201c280248210f20022109024002400240024002400240024002400240034002400240200820094d0d00200a2009410374221d6a221928020421052008200941016a22024d0d012020201d6a2101034020012802002005470d02200141086a21012008200241016a2202470d000b200821020c010b20092008419083cc001036000b20022009490d010240200820024f0d0020022008418083cc00104b000b02402005200f460d002002210920022008460d0c0c010b0b024020044180086a201c41d8006a2205460d00200520044180086a412010e707450d0041aab0c700211a4183aec800211b4115211e0c0b0b200441d0036a41186a22364200370300200441d0036a41106a22374200370300200441d0036a41086a22384200370300200442003703d00341b3e6ca00ad4280808080e000841001220129000021252038200141086a290000370300200420253703d0032001102941c9e6ca00ad4280808080e00084100122012900002125200441a0086a41086a2221200141086a290000370300200420253703a00820011029200620042903a008370000200641086a2021290300370000202a2038290300370300202b2037290300370300202c2036290300370300200420042903d0033703a006200441306a200441a0066a412010fc010240201c4180026a2239280200221a200220096b220141017620014101716a4f0d004183afc700211a4183ae20211b4116211e0c0b0b0240201a20324d0d004199afc700211a4183ae24211b4117211e0c0b0b0240201c41d4006a221a2802004180a0014d0d0041edd3c800211a4183ae38211b0c0b0b200441a0086a201c2802482004280234417f6a417f20042802301b221b10aa0320042802bc08222d4102460d01201a2802002201417f4c0d1520042802b408213a20042802b008213b20042903a808213c20042802a408213d20042802a008213e201c28024c211f0240024020010d00410021094101211e0c010b20011027221e450d0f200121090b0240024020092001490d002009213f0c010b2009410174220c2001200c20014b1b223f4100480d10024020090d00203f1027221e0d010c120b2009203f460d00201e2009203f102b221e450d110b201e201f200110e4072140202c201c4190016a290000370300202b201c4188016a290000370300202a201c4180016a2900003703002004201c2900783703a006201c41086a221e2903002125201c2903002141200441f8056a201c41106a10f005200441a0086a41186a2242201c41c0006a2900003703002034201c41386a2900003703002021201c41306a2900003703002004201c2900283703a00802400240201c28021c22430d004100210c0c010b201c41246a2802002201417f4c0d160240024020010d00410021094101210c0c010b20011027220c450d10200121090b0240024020092001490d002009211f0c010b2009410174221f2001201f20014b1b221f4100480d11024020090d00201f1027220c450d130c010b2009201f460d00200c2009201f102b220c450d120b200c2043200110e4071a2001ad422086201fad8421260b20382021290300370300200428028006214320042802fc05214420042802f8052145200441a0086a200f108906200441286a20042802a008221f20042802a80810fc01200428022c210920042802282101024020042802a408450d00201f10290b024020014101470d002009201b4b0d00200441d0036a200f108a06200441a0086a20042802d003220920042802d803221f108b03024020042802a0082201450d00201fad4220862009ad8410040b20042902a4082146024020042802d403450d00200910290b200441a0086a200f10890620043502a80842208620042802a0082209ad841004024020042802a408450d00200910290b2046420020011b21462001410120011b2109200441a0086a200f10ac03200441d0036a20042802a008221f20042802a808108b0320042902d403204720042802d00322011b2147024020042802a408450d00201f10290b200441a0086a200f10ac0320042802a008211f200420042802a8083602d4032004201f3602d00320092046422088a7200441d0036a10a1042047a7410020011b21482047422088a7410020011b21492001410120011b2101024020042802a408450d00201f10290b200420493602a808200420483602a408200420013602a008200f201b200441a0086a108b062046a7450d00200910290b2026a721490240200c450d00410021480240202d4101460d004188b0c700211a4183aec000211b4115211e0c0a0b02402026422088a722094181808005490d0041f2afc700211a4183ae3c211b4116211e0c0a0b200441a0086a200f10890620042802a008210120043502a80821462004201b41c0f0006a3602d00320464220862001ad8420311003024020042802a408450d00200110290b200441a0086a200f108a0620042802a0082101200420042802a8083602d403200420013602d003200c2009200441d0036a10a10420042802a408450d00200110290b200c4521480240203dad422086203ead84204154203c202554203c2025511b450d00419db0c700211a4183aec400211b410d211e0c090b2004200f3602e006200441f8056a200441e0066a10cc0341002101200441003a00d006200441083a00cf06200420413703a006200420253703a8062004200441f8056a3602f007024002400240204120258450450d0042002125420021410c010b2004200441f8056a3602f0062004200441f0066a3602b0082004200441cf066a3602ac082004200441f0076a3602a8082004200441d0066a3602a4082004200441a0066a3602a008200441d0036a200441f8056a200441a0086a10c802024020042802d0034101470d004200214120042903d80321254101210120042802d40321090c020b200441d0036a41286a290300214120042903f00321254100210120042903d8034201520d0020042903e003213c20042802f0062101200441a0086a41386a203629030037030020352001290000370000203541086a200141086a290000370000203541106a200141106a290000370000203541186a200141186a2900003700002004203c3703d00841002101200441003a00a808200441033a00a008200441a0086a10cb010b0b0240024020010d00204242003703002034420037030020214200370300200442003703a00841dcbec500ad4280808080800184223c1001220129000021462038200141086a290000370300200420463703d0032001102920212038290300370300200420042903d0033703a008419fe3c200ad4280808080d00184224610012209290000214a200441f0066a41086a2201200941086a2900003703002004204a3703f00620091029203420042903f006370000203441086a221b2001290300370000202a2021290300370300202b2034290300370300202c2042290300370300200420042903a0083703a006200441106a200441a0066a412010e301200441106a41106a290300214a2004290318214b20042802102109204242003703002034420037030020214200370300200442003703a008203c1001220f290000213c2038200f41086a2900003703002004203c3703d003200f102920212038290300370300200420042903d0033703a00820461001220f290000213c2001200f41086a2900003703002004203c3703f006200f1029203420042903f006370000201b2001290300370000202a2021290300370300202b2034290300370300202c2042290300370300200420042903a0083703a00620044200204a420020091b223c20417d204b420020091b2241202554ad7d2246204120257d22252041562046203c562046203c511b22011b3703a80820044200202520011b3703a0082030202f10030c010b200941ff01714104470d030b200441003602a808200442013703a008201c2802482109410410272201450d10200441043602a408200420013602a00820012009360000200441043602a808412010272201450d0e20012005290000370000200141186a221b200541186a290000370000200141106a221f200541106a290000370000200141086a223d200541086a2900003700000240024020042802a408220f20042802a80822056b4120490d0020042802a00821090c010b200541206a22092005490d10200f410174223e2009203e20094b1b223e4100480d1002400240200f0d000240203e0d00410121090c020b203e10272209450d130c010b20042802a0082109200f203e460d002009200f203e102b2209450d1220042802a80821050b2004203e3602a408200420093602a0080b200920056a22092001290000370000200941186a201b290000370000200941106a201f290000370000200941086a203d2900003700002004200541206a3602a80820011029201c28024c211b201a2802002201200441a0086a10710240024020042802a408220f20042802a80822056b2001490d0020042802a00821090c010b200520016a22092005490d10200f410174221a2009201a20094b1b221a4100480d1002400240200f0d000240201a0d00410121090c020b201a10272209450d130c010b20042802a0082109200f201a460d002009200f201a102b2209450d1220042802a80821050b2004201a3602a408200420093602a0080b200920056a201b200110e4071a2004200520016a22013602a8080240024020042802a408220920016b4120490d0020042802a00821052009210f0c010b200141206a22052001490d102009410174220f2005200f20054b1b220f4100480d100240024020090d000240200f0d00410121050c020b200f10272205450d130c010b20042802a00821052009200f460d0020052009200f102b2205450d1220042802a80821010b2004200f3602a408200420053602a0080b200520016a2209201c41f8006a221a290000370000200941186a201a41186a290000370000200941106a201a41106a290000370000200941086a201a41086a2900003700002004200141206a22093602a8080240200f20096b413f4b0d00200941c0006a22012009490d10200f410174221a2001201a20014b1b22014100480d1002400240200f0d00024020010d00410121050c020b200110272205450d130c010b200f2001460d002005200f2001102b2205450d1220042802a80821090b200420013602a408200420053602a0080b200520096a2201201c4198016a2205290000370000200141386a200541386a290000370000200141306a200541306a290000370000200141286a200541286a290000370000200141206a200541206a290000370000200141186a200541186a290000370000200141106a200541106a290000370000200141086a200541086a2900003700002004200941c0006a3602a808412010272201450d0e2001201c41d8016a2205290000370000200141186a221a200541186a290000370000200141106a221b200541106a290000370000200141086a221f200541086a2900003700000240024020042802a408220f20042802a80822056b4120490d0020042802a00821090c010b200541206a22092005490d10200f410174223d2009203d20094b1b223d4100480d1002400240200f0d000240203d0d00410121090c020b203d10272209450d130c010b20042802a0082109200f203d460d002009200f203d102b2209450d1220042802a80821050b2004203d3602a408200420093602a0080b200920056a22092001290000370000200941186a201a290000370000200941106a201b290000370000200941086a201f2900003700002004200541206a3602a80820011029201e2903002125201c29030021410240024020042802a408220920042802a80822016b4110490d0020042802a00821050c010b200141106a22052001490d102009410174220f2005200f20054b1b220f4100480d100240024020090d000240200f0d00410121050c020b200f10272205450d130c010b20042802a00821052009200f460d0020052009200f102b2205450d1220042802a80821010b2004200f3602a408200420053602a0080b200520016a22052025370008200520413700002004200141106a3602a808201c2802102101201c2802182205200441a0086a107102402005450d002005410474211b034002402001410c6a2d000022054103714103460d004100210f02400240024020050e03020001020b4101210f0c010b4102210f0b0240024020042802a40820042802a8082205460d0020042802a00821090c010b200541016a22092005490d132005410174221a2009201a20094b1b221a4100480d130240024020050d00410021050240201a0d00410121090c020b201a10272209450d160c010b20042802a00821092005201a460d0020092005201a102b2209450d1520042802a80821050b2004201a3602a408200420093602a0080b200920056a200f3a00002004200541016a3602a8080b2001280200211e200141086a2802002205200441a0086a10710240024020042802a408221a20042802a80822096b2005490d0020042802a008210f0c010b200920056a220f2009490d12201a410174221f200f201f200f4b1b221f4100480d1202400240201a0d000240201f0d004101210f0c020b201f1027220f450d150c010b20042802a008210f201a201f460d00200f201a201f102b220f450d1420042802a80821090b2004201f3602a4082004200f3602a0080b200141106a2101200f20096a201e200510e4071a2004200920056a3602a808201b41706a221b0d000b0b412010272201450d0e2001201c41286a2205290000370000200141186a221a200541186a290000370000200141106a221b200541106a290000370000200141086a221e200541086a2900003700000240024020042802a408220f20042802a80822056b4120490d0020042802a00821090c010b200541206a22092005490d10200f410174221f2009201f20094b1b221f4100480d1002400240200f0d000240201f0d00410121090c020b201f10272209450d130c010b20042802a0082109200f201f460d002009200f201f102b2209450d1220042802a80821050b2004201f3602a408200420093602a0080b200920056a22092001290000370000200941186a201a290000370000200941106a201b290000370000200941086a201e2900003700002004200541206a3602a8082001102920042802a408210520042802a808210102400240201c28021c220f0d000240024020052001460d0020042802a00821050c010b200141016a22052001490d12200141017422092005200920054b1b22094100480d120240024020010d0041002101024020090d00410121050c020b200910272205450d150c010b20042802a008210520012009460d00200520012009102b2205450d1420042802a80821010b200420093602a408200420053602a0080b200520016a41003a0000200141016a21010c010b0240024020052001460d0020042802a00821050c010b200141016a22052001490d11200141017422092005200920054b1b22094100480d110240024020010d0041002101024020090d00410121050c020b200910272205450d140c010b20042802a008210520012009460d00200520012009102b2205450d1320042802a80821010b200420093602a408200420053602a0080b200520016a41013a00002004200141016a3602a808201c41246a2802002201200441a0086a10710240024020042802a408221a20042802a80822056b2001490d0020042802a00821090c010b200520016a22092005490d11201a410174221b2009201b20094b1b221b4100480d1102400240201a0d000240201b0d00410121090c020b201b10272209450d140c010b20042802a0082109201a201b460d002009201a201b102b2209450d1320042802a80821050b2004201b3602a408200420093602a0080b200920056a200f200110e4071a200520016a21010b20042802a408210520362001ad42208620042802a0082209ad841010220141186a2900003703002037200141106a2900003703002038200141086a290000370300200420012900003703d0032001102902402005450d00200910290b4100213d200441003602f006200441003602f8052002410374201d6b212d201c280288022101201c28028402211d4100213e4100211e4100211f0340201e417f6a2109202e201e4105746a211b034020014108490d074101210f200441013602e00620042001410376221a3602f00702400240201a41014b0d0020012105410021010240201a0e020002000b200441ac066a4101360200200441b4086a4102360200200442023702a408200441e4a7c7003602a008200441013602a4062004200441a0066a3602b0082004200441f0076a3602a8062004200441e0066a3602a006200441a0086a4180a6cc001040000b2001410771220f4108722105201d200f4107466a210f200141016a410771200141786a4178717221010b201d410120051b211a201b41206a211b200941016a2109200f211d4101200541077174201a2d000071450d000b2039280200201f4d0d05200941016a211e201f41016a214c201c2802f801201f41c1006c6a214d202d21052019211d0340024020050d0041b0afc700211a4117211e4183ae28211b0c090b200541786a2105201d280200211a201d41086a211d201a2009470d000b02400240204d2d00004101470d00200441f8056a2105203e0d01203320042903d003370000203341086a2038290300370000203341106a2037290300370000203341186a2036290300370000200441013a00a008200441f8056a200441a0086a200441a8016a108c0620042802f805213e0c010b200441f0066a2105203d0d00203320042903d003370000203341086a2038290300370000203341106a2037290300370000203341186a2036290300370000200441003a00a008200441f0066a200441a0086a200441a8016a108c0620042802f006213d0b200920324f0d04200f211d204c211f204d41016a2005350208422086200535020084201b10174101460d000b41c7afc700211a4110211e4183ae2c211b0c060b20092002418083cc00104c000b41e4afc700211a4183ae34211b410e211e0c080b2009410876410874200941ff017172211b2025422088a7211e2025a7211a0c050b2009203241f4bbc7001036000b4183afc700211a4116211e4183ae20211b0c010b2039280200201f460d0141d7afc700211a410d211e4183ae30211b0b0240203e450d0020042802fc05450d00203e10290b203d450d0120042802f406450d01203d10290c010b204220362903003703002034203729030037030020212038290300370300200420042903d0033703a00802402004280290012201200428028c01470d0020044188016a20014101109e0120042802900121010b200428028801222d20014105746a220520042903a008370000200541086a2021290300370000200541106a2034290300370000200541186a20422903003700002004200141016a360290010240203e450d0020042802fc05450d00203e10290b0240203d450d0020042802f406450d00203d10290b0240203f450d00204010290b0240203a450d00203b10290b02402043450d00204341047421052045210103400240200141046a280200450d00200128020010290b200141106a2101200541706a22050d000b0b0240204441ffffffff0071450d00204510290b0240200c450d002049450d00200c10290b20172018470d010c040b0b0240203f450d00204010290b0240203a450d00203b10290b02402043450d00204341047421022045210103400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b0240204441ffffffff0071450d00204510290b2048204945720d00200c10290b0240200428028c0141ffffff3f71450d0020042802880110290b0240202441ffffffff0171450d00200a10290b0240202241ffffffff0171450d00202310290b0240200742ffffff3f83500d00202910290b20044190076a41186a200441b0076a41186a29020037030020044190076a41106a200441b0076a41106a29020037030020044190076a41086a200441b0076a41086a290200370300200420042902b00737039007200041086a201e360200200041046a201a3602002000201b360200200441d8006a21010b200141046a28020041ffffffff0371450d06200128020010290c060b2027410020281b2149200441d0036a41186a22084200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341b1dcc900ad4280808080f000841001220229000021252001200241086a290000370300200420253703d00320021029418886ca00ad4280808080c00184100122022900002125200441a0086a41086a2209200241086a290000370300200420253703a00820021029200620042903a008370000200641086a2009290300370000202a2001290300370300202b2005290300370300202c2008290300370300200420042903d0033703a006200441086a200441a0066a412010fc01200428020c214e2004280208214f200441003602a808200442043703a008200441a0086a4100200e109801200e412c6c210520042802a008225020042802a80822084102746a2101200b2102034020012002280200360200200841016a2108200141046a21012002412c6a2102200541546a22050d000b200441b0076a41086a200441d0076a41086a290300370300200441b0076a41106a200441d0076a41106a290300370300200441b0076a41186a200441d0076a41186a290300370300200420083602a808200420042903d0073703b00720042902a4082131200428028c01215120042802900121520240202441ffffffff0171450d00200a10290b0240202241ffffffff0171450d00202310290b0240200742ffffff3f83500d00202910290b200441e8006a41086a200441b0076a41086a2903002207370300200441e8006a41106a200441b0076a41106a2903002225370300200441e8006a41186a200441b0076a41186a2903002226370300200420042903b0072241370368200341086a280200210c2003280200213420044188016a41186a202637030020044188016a41106a202537030020044188016a41086a2007370300200420413703880120044180086a20494132702253108d06200428028008210520042004280288082201360294072004200536029007200441f8056a2001ad4220862005ad8422071007108b02024002400240024020042802f8052208450d0020042802fc05210a2004200441f8056a41086a28020022013602b407200420083602b00702400240024020014104490d002004200841046a3602b00720042001417c6a22023602b40720024104490d00200835000021252004200141786a22093602b4072004200841086a3602b00741002101200441003a00c0080240034020092001460d01200441a0086a20016a200820016a220241086a2d00003a00002004200241096a3602b0072004200141016a22023a00c0082002210120024120470d000b200441d0036a41086a200441a0086a41086a290300370300200441d0036a41106a200441a0086a41106a290300370300200441d0036a41186a200441a0086a41186a2903003703002004200920026b3602b407200420042903a0083703d003200441a0086a200441b0076a10f50520042802a0082202450d0120042802a408211d200441a0086a200441b0076a10960220042802a008221a0d02201d41ffffffff0371450d01200210290c010b200441003602b407200141ff0171450d00200441003a00c0080b41002102200441003602d803200442013703d0032004410d3602d407200420044190076a3602d0072004200441d0036a3602a80141012101200441b4086a4101360200200442013702a408200441f4eaca003602a0082004200441d0076a3602b008200441a8016a41a8a3c800200441a0086a10371a20043502d80342208620043502d003841008024020042802d403450d0020042802d00310290b0c010b200441a8016a41086a200441d0036a41086a290300370300200441a8016a41106a200441d0036a41106a29030037030020042802a408210f410021010b0240200a450d00200810290b2001450d010b2004280284080d010c020b20071004200428028408210102402002450d0002402001450d00200510290b41f182cc00ad4280808080c00184100122012900002107200441a0066a41086a200141086a290000370300200420073703a0062001102941edc4c800ad4280808080d00284100122012900002107200441a8016a41086a200141086a290000370300200420073703a80120011029200420253e02f8052004200441f8056aad4280808080c00084100222012900003703d00720011029200441ac086a200441fc056a3602002004200441d0076a41086a3602a4082004200441f8056a3602a8082004200441d0076a3602a008200441d0036a200441a0086a107520042802d803220a41206a2208417f4c0d0b20042802d00321190240024020080d0041002105410121010c010b200810272201450d05200821050b024002402005410f4d0d00200521090c010b200541017422094110200941104b1b22094100480d06024020050d00200910272201450d080c010b20052009460d00200120052009102b2201450d070b200120042903a006370000200141086a200441a0066a41086a2903003700000240024020094170714110460d00200921050c010b200941017422054120200541204b1b22054100480d0620092005460d00200120092005102b2201450d070b200120042903a801370010200141186a200441a8016a41086a29030037000002400240200541606a200a490d00200521090c010b200a415f4b0d06200541017422092008200920084b1b22094100480d0620052009460d00200120052009102b2201450d070b200141206a2019200a10e4071a024020042802d403450d00201910290b2008ad4220862001ad84100602402009450d00200110290b0240201d41ffffffff0371450d00200210290b200f41ffffff3f71450d02201a10290c020b2001450d010b200510290b200441a0086a41186a4200370300200441a0086a41106a22084200370300200441a0086a41086a22014200370300200442003703a00841b1dcc900ad4280808080f000841001220229000021072001200241086a290000370300200420073703a0082002102941b8dcc900ad4280808080a00184100122022900002107200441a8016a41086a2205200241086a290000370300200420073703a80120021029200820042903a8012207370300200441d0036a41086a2001290300370300200441d0036a41106a2007370300200441d0036a41186a2005290300370300200420042903a0083703d003200441a0086a200441d0036a108d020240024020042802a00822010d00200441003602d806200442013703d0060c010b200420042902a4083702d406200420013602d0060b02402052200c2052200c491b223b450d0020044180086aad4280808080c00084213c20044180086a41046a2140200441d0076a41086a2136200441a0086a41086a2128200441a0086a4104722148200441a0086a41146a2133200441a0086a410172211a200441f8056a41146a21212004418c086a214c20044180086a410472214d200441a8016a41106a210e200441a0066a41106a211e200441980a6a2127200441f8096a2129200441b8096a213820044198096a212c200441f8086a212b200441a0086a41286a212a200441a0086a41106a2142200441d0036a41206a2123410021240340200441003602e806200442013703e006203420244190026c6a220f280284022108200f4188026a2802002105200441a0066a41186a22204200370300201e4200370300200441a0066a41086a221b4200370300200442003703a00641b1dcc900ad4280808080f00084100122012900002107201b200141086a290000370300200420073703a0062001102941b8dcc900ad4280808080a00184100122012900002107200441f0066a41086a2222200141086a290000370300200420073703f00620011029201e20042903f006370000201e41086a2022290300370000200441d0036a41086a221f201b290300370300200441d0036a41106a2217201e290300370300200441d0036a41186a22182020290300370300200420042903a0063703d003200441a0086a200441d0036a108d020240024020042802a00822010d0041002102200441003602b807200442013703b0070c010b200420042902a40822073702b407200420013602b0072007a721020b200441a8016a41186a221c4200370300200e4200370300200441a8016a41086a22194200370300200442003703a80141eebec500ad4280808080f000841001220129000021072019200141086a290000370300200420073703a8012001102941f0f5c100ad4280808080900184100122012900002107201f200141086a290000370300200420073703d00320011029200e20042903d003370000200e41086a201f290300370000202820192903003703002042200e290300370300200441a0086a41186a201c290300370300200420042903a8013703a008200441d0036a200441a0086a10d001203720042802e00320042903d00342025122011b2137024020010d00200441d0076a203710af01200441a0086a20042802d007223220042802d807222e10d101201f204841086a223f290200370300200420482902003703d0030240024020042802a0084101460d002004410036028c0820044200370380080c010b20044180086a41086a201f290300370300200420042903d003370380080b2004410036028006200420053602fc05200420083602f8052004200441b0076a36028c062004200441e0066a360288062004200441d0066a36028406200441a0086a200441f8056a2021108e06024020042d00a0084101470d000340201b201a41086a2900002207370300201e201a41106a29000022253703002020201a41186a29000022263703002004201a29000022413703a006201c2026370300200e202537030020192007370300200420413703a801024002402004280284082209450d00200428028808210a0c010b200441a0086a410041e00210e6071a200441d0036a41286a22014100360200202342003703002018420037030020174200370300201f4200370300200442003703d00341940310272209450d094100210a200941003b010620094100360200200941086a200441a0086a41e00210e4071a20094190036a200128020036020020094188036a202329030037020020094180036a2018290300370200200941f8026a2017290300370200200941f0026a201f290300370200200920042903d0033702e802200441003602880820042009360284080b024002400340200941086a210220092f0106221d410574210141002108024003402001450d01200441a8016a2002412010e7072205450d03200141606a2101200841016a2108200241206a21022005417f4a0d000b2008417f6a211d0b0240200a450d00200a417f6a210a2009201d4102746a4194036a28020021090c010b0b2018201c29030022073703002017200e2903002225370300201f20192903002226370300200420042903a80122413703d00320332041370200203341086a2026370200203341106a2025370200203341186a20073702002004204c3602b0082004201d3602ac082004204d3602a808200420093602a408200441003602a008200441a0086a410010d20121010c010b200920084102746a41e8026a21010b2001200128020041146a360200200420042802800841146a36028008200441a0086a200441f8056a2021108e0620042d00a0084101460d000b0b203f20044180086a41086a2903003702002048200429038008370200200441013602a008200441003602d803200442013703d00320042802a4082102410410272201450d0620012002360000200420013602d00320044284808080c0003702d4032028200441d0036a10d30120042802d4032101202ead4220862032ad8420043502d80342208620042802d0032202ad84100302402001450d00200210290b202810d401024020042802d407450d00203210290b20042802b40721020b0240200241ffffff3f71450d0020042802b00710290b200f280248210a20044180086a41186a221d200f41f0006a29000037030020044180086a41106a2232200f41e8006a29000037030020044180086a41086a222e200f41e0006a2900003703002004200f29005837038008200f41d4006a2802002201417f4c0d0a200f28024c21090240024020010d0041002102410121080c010b200110272208450d04200121020b0240024020022001490d00200221050c010b200241017422052001200520014b1b22054100480d05024020020d00200510272208450d070c010b20022005460d00200820022005102b2208450d060b20082009200110e407213f200441f8056a41186a2243200f4190016a290000370300200441f8056a41106a223d200f4188016a290000370300200441f8056a41086a223e200f4180016a2900003703002004200f2900783703f805200441d0036a41386a2235200f41d0016a290000370300200441d0036a41306a2245200f41c8016a290000370300200441d0036a41286a2239200f41c0016a2900003703002023200f41b8016a2900003703002018200f41b0016a2900003703002017200f41a8016a290000370300201f200f41a0016a2900003703002004200f290098013703d0032020200f41f0016a290000370300201e200f41e8016a290000370300201b200f41e0016a2900003703002004200f2900d8013703a006200f41086a2903002107200f290300212520044190076a200f41106a10f005201c200f41c0006a290000370300200e200f41386a2900003703002019200f41306a2900003703002004200f2900283703a80102400240200f28021c223a0d00410021080c010b200f41246a2802002202417f4c0d0b0240024020020d0041002109410121080c010b200210272208450d05200221090b0240024020092002490d002009210f0c010b2009410174220f2002200f20024b1b220f4100480d06024020090d00200f10272208450d080c010b2009200f460d0020082009200f102b2208450d070b2008203a200210e4071a2002ad422086200fad8421470b200441f0076a41086a220920044190076a41086a220228020036020020362019290300370300200441d0076a41106a220f200e290300370300200441d0076a41186a223a201c290300370300200441b0076a41086a2244202e290300370300200441b0076a41106a222e2032290300370300200441b0076a41186a2232201d29030037030020042004290390073703f007200420042903a8013703d00720042004290380083703b00720044190076a41186a221d204329030037030020044190076a41106a2243203d2903003703002002203e290300370300200420042903f80537039007200441a8016a41386a223d2035290300370300200441a8016a41306a223e2045290300370300200441a8016a41286a22352039290300370300200441a8016a41206a22452023290300370300201c2018290300370300200e20172903003703002019201f290300370300200420042903d0033703a801200441f0066a41186a221f2020290300370300200441f0066a41106a2220201e2903003703002022201b290300370300200420042903a0063703f006200420073703a808200420253703a008204220042903f007370300204241086a2009280200360200200420473703c008200420083602bc08202a20042903d007370300202a41086a2036290300370300202a41106a200f290300370300202a41186a203a290300370300200420013602f408200420053602f0082004203f3602ec082004200a3602e808202b41186a2032290300370300202b41106a202e290300370300202b41086a2044290300370300202b20042903b007370300202c41186a201d290300370300202c41106a2043290300370300202c41086a2002290300370300202c200429039007370300203841386a203d290300370300203841306a203e290300370300203841286a2035290300370300203841206a2045290300370300203841186a201c290300370300203841106a200e290300370300203841086a2019290300370300203820042903a801370300202941186a201f290300370300202941106a2020290300370300202941086a2022290300370300202920042903f006370300202741086a200441e0066a41086a280200360200202720042903e006370200200441003602ac0a200442013702a40a41f182cc00ad4280808080c00184100122012900002107201b200141086a290000370300200420073703a0062001102941edc4c800ad4280808080d002841001220129000021072019200141086a290000370300200420073703a8012001102920042049360280082004203c100222012900003703d00720011029200420403602dc03200420363602d403200420044180086a3602d8032004200441d0076a3602d003200441f8056a200441d0036a1075412010272201450d032001202d20244105746a2202290000370000200141186a2208200241186a290000370000200141106a2205200241106a290000370000200141086a2209200241086a290000370000412010272202450d0320022001290000370000200241186a221d2008290000370000200241106a220f2005290000370000200241086a2220200929000037000020011029200428028006220541c0006a221f417f4c0d0a20042802f805210a02400240201f0d00410021084101211c0c010b201f1027221c450d04201f21080b024002402008410f4d0d00200821010c010b200841017422014110200141104b1b22014100480d05024020080d0020011027221c450d070c010b20082001460d00201c20082001102b221c450d060b201c20042903a006370000201c41086a201b2903003700000240024020014170714110460d00200121090c010b200141017422084120200841204b1b22094100480d0520012009460d00201c20012009102b221c450d060b200541206a2101201c20042903a801370010201c41186a201929030037000002400240200941606a2005490d00200921080c010b2005415f4b0d05200941017422082001200820014b1b22084100480d0520092008460d00201c20092008102b221c450d060b201c41206a200a200510e4071a02400240200820016b411f4d0d00200821190c010b200141206a22052001490d05200841017422092005200920054b1b22194100480d05024020080d00024020190d004101211c0c020b20191027221c450d070c010b20082019460d00201c20082019102b221c450d060b201c20016a22012002290000370000200141186a201d290000370000200141106a200f290000370000200141086a202029000037000020021029024020042802fc05450d00200a10290b200441003602d803200442013703d003200441a0086a200441d0036a10a50420042802980a210a20042802a00a2201200441d0036a107102402001450d002001410574211d410020042802d80322026b210520042802d003210f20042802d40321090340200a21010240200920056a411f4b0d00200241206a22082002490d072009410174220a2008200a20084b1b22084100480d07024002400240024020090d00024020080d004101210f0c020b20081027210f0c030b20092008470d010b200821090c020b200f20092008102b210f0b20082109200f450d080b200141206a210a200f20026a22082001290000370000200841186a200141186a290000370000200841106a200141106a290000370000200841086a200141086a290000370000200541606a2105200241206a2102201d41606a221d0d000b200420093602d403200420023602d8032004200f3602d0030b20042802a40a210a20042802ac0a2201200441d0036a10710240024020010d0020042802d803210220042802d403210520042802d003210f0c010b2001410574211d410020042802d80322026b210920042802d003210f20042802d40321050340200a21010240200520096a411f4b0d00200241206a22082002490d072005410174220a2008200a20084b1b22084100480d07024002400240024020050d00024020080d004101210f0c020b20081027210f0c030b20052008470d010b200821050c020b200f20052008102b210f0b20082105200f450d080b200141206a210a200f20026a22082001290000370000200841186a200141186a290000370000200841106a200141106a290000370000200841086a200141086a290000370000200941606a2109200241206a2102201d41606a221d0d000b200420053602d403200420023602d8032004200f3602d0030b201fad422086201cad842002ad422086200fad84100302402005450d00200f10290b02402019450d00201c10290b024020042802f008450d0020042802ec0810290b024020042802b8082202450d0020042802b00821012002410474210203400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b024020042802b40841ffffffff0071450d0020042802b00810290b024020042802bc082201450d0020042802c008450d00200110290b0240200428029c0a41ffffff3f71450d0020042802980a10290b202441016a2124024020042802a80a41ffffff3f71450d0020042802a40a10290b2024203b490d000b0b200441d0036a2053108d0620043502d803210720042802d003211a200441003602a808200442013703a008410410272201450d03200441043602a408200420013602a00820012049360000200441043602a808200141044108102b2201450d03200441083602a4082001204e4100204f1b360004200420013602a008200441083602a808200141084128102b2201450d032001200429038801370008200141106a20044190016a290300370000200141186a20044188016a41106a290300370000200141206a20044188016a41186a290300370000200441283602a408200420013602a008200441283602a8082031422088a72201200441a0086a107102402001450d002001410274211d410020042802a80822016b210220042802a40821052050210803402008280200210f02400240200520026a4104490d0020042802a00821090c010b200141046a22092001490d052005410174220a2009200a20094b1b220a4100480d050240024020050d000240200a0d00410121090c020b200a10272209450d080c010b20042802a00821092005200a460d0020092005200a102b2209450d070b2004200a3602a408200420093602a008200a21050b200841046a2108200920016a200f3600002004200141046a22013602a8082002417c6a2102201d417c6a221d0d000b0b202d2052200441a0086a10850620042802a40821012007422086201aad8420043502a80842208620042802a0082202ad84100302402001450d00200210290b024020042802d403450d00201a10290b024020042802d40641ffffff3f71450d0020042802d00610290b0240203142ffffffff0383500d00205010290b0240205141ffffff3f71450d00202d10290b200441d0036a41186a22084200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341cd87cc00ad4280808080a00184100122022900002107200441f8056a41086a2209200241086a290000370300200420073703f8052002102920012009290300370300200420042903f8053703d003419f84cc00ad4280808080d00184100122022900002107200441a8016a41086a2209200241086a290000370300200420073703a80120021029200620042903a801370000200641086a2009290300370000200441a0066a41086a2001290300370300200441a0066a41106a2005290300370300200441a0066a41186a2008290300370300200420042903d0033703a006200441a0086a200441a0066a412010c0040240024020042802a008221f0d0041002120200441003602880820044204370380084104211f4100211d0c010b20042902a40821072004201f3602800820042007370284082007422088a721202007a7211d0b0240024002400240200c450d002034200c4190026c6a2117200441a0066aad4280808080c000842125200441a0066a41046a211c200441d0076a41086a211e200441a0086a410472211841cd87cc00ad4280808080a0018421260340200441a0086a2034280248221b108f0620042802a0082101200420042802a8083602d403200420013602d003203428024c203441d4006a280200200441d0036a10a104024020042802a408450d00200110290b024020342802182209450d0020342802102108200441d0036a201b108806200441a0086a20042802d003220a20042802d803221d10f9014100210220042802a808410020042802a008410146220f1b211a200841086a210120042802a408210e2009410474221921050340200128020020026a2102200141106a2101200541706a22050d000b20042002201a6a3602a808200441013602a0082004200e4100200f1b20096a3602a4082004201d3602ac012004200a3602a8012018200441a8016a10fb01024020042802d403450d00200a10290b03402026100122012900002107200441f8056a41086a220f200141086a290000370300200420073703f8052001102941f783cc00ad4280808080a00284100122012900002107200441a8016a41086a221a200141086a290000370300200420073703a801200110292004201b3602a00620042025100222012900003703d007200110292004201c3602ac082004201e3602a4082004200441a0066a3602a8082004200441d0076a3602a008200441d0036a200441a0086a107520042802d803220a41206a2202417f4c0d0f20042802d003211d0240024020020d0041002105410121010c010b200210272201450d09200221050b024002402005410f4d0d00200521090c010b200541017422094110200941104b1b22094100480d0a024020050d00200910272201450d0c0c010b20052009460d00200120052009102b2201450d0b0b200120042903f805370000200141086a200f2903003700000240024020094170714110460d00200921050c010b200941017422054120200541204b1b22054100480d0a20092005460d00200120092005102b2201450d0b0b200120042903a801370010200141186a201a29030037000002400240200541606a200a490d002005211a0c010b200a415f4b0d0a200541017422092002200920024b1b221a4100480d0a2005201a460d0020012005201a102b2201450d0b0b200141206a201d200a10e4071a024020042802d403450d00201d10290b41002105200441003602a808200442013703a00802402008410c6a2d000022094103714103460d0002400240024020090e03020001020b410121050c010b410221050b410110272209450d0b200920053a0000200420093602a00820044281808080103702a4080b2008280200210e200841086a2802002205200441a0086a10710240024020042802a408220f20042802a808220a6b2005490d0020042802a0082109200f211d0c010b200a20056a2209200a490d0a200f410174221d2009201d20094b1b221d4100480d0a02400240200f0d000240201d0d00410121090c020b201d10272209450d0d0c010b20042802a0082109200f201d460d002009200f201d102b2209450d0c0b2004201d3602a408200420093602a0080b2009200a6a200e200510e4071a2002ad4220862001ad84200a20056aad4220862009ad8410140240201d450d00200910290b0240201a450d00200110290b200841106a2108201941706a22190d000b41002101024002400240202041014b0d0020200e020201020b20202102034020012002410176220820016a2205201b201f20054102746a280200491b2101200220086b220241014b0d000b0b0240201b201f20014102746a2802002202470d004184bcc700ad4280808080c0048410080c020b20202001201b20024b6a2201490d040b02402020200428028408470d0020044180086a20204101109801200428028008211f0b201f20014102746a220241046a2002202020016b41027410e5071a2002201b3602002004202041016a2220360288080b20344190026a22342017470d000b200428028408211d0b200441d0036a41186a22024200370300200441d0036a41106a22084200370300200441d0036a41086a22014200370300200442003703d00341cd87cc00ad4280808080a001842207100122092900002125200441f8056a41086a2205200941086a290000370300200420253703f8052009102920012005290300370300200420042903f8053703d003419f84cc00ad4280808080d0018422251001220a2900002126200441a8016a41086a2209200a41086a290000370300200420263703a801200a1029200620042903a801370000200641086a220f2009290300370000200441a0066a41086a221a2001290300370300200441a0066a41106a22192008290300370300200441a0066a41186a220e2002290300370300200420042903d0033703a006200441203602a4082004200441a0066a3602a008201f2020200441a0086a10ef030240201d41ffffffff0371450d00201f10290b200242003703002008420037030020014200370300200442003703d00320071001220a29000021072005200a41086a290000370300200420073703f805200a102920012005290300370300200420042903f8053703d00320251001220529000021072009200541086a290000370300200420073703a80120051029200620042903a801370000200f2009290300370000201a200129030037030020192008290300370300200e2002290300370300200420042903d0033703a006200441a0086a200441a0066a412010c00420042802a0082201410420011b212a024020042902a408420020011b2241422088a722240d004100211f0c030b202a20244102746a2138200441a0066aad4280808080c000842126200441a0066a41046a2123200441d0076a41086a2134200441a0066a41086a2105200441a0086a410672211b4100211f4100211e41002121202a210f0340201f2117200441a0086a200f280200108806200441d0036a20042802a008220920042802a80810f90120042802d003410146210120042802d403210220042802d8032108024020042802a408450d00200910290b2002410020011b211c2008410020011b212002400240201e0d00410121010c010b201c201e6a41e50049202020216a41a19c01497121010b201741016a211f0240201c450d002001450d00200441a0086a200f28020010880620043502a80842208620042802a0082201ad841004024020042802a408450d00200110290b41cd87cc00ad4280808080a00184100122012900002107200441f8056a41086a221a200141086a290000370300200420073703f8052001102941f783cc00ad4280808080a00284100122012900002107200441a8016a41086a2219200141086a290000370300200420073703a801200110292004200f2802003602a00620042026100222012900003703d00720011029200420233602ac08200420343602a4082004200441a0066a3602a8082004200441d0076a3602a008200441d0036a200441a0086a107520042802d803220a41206a2202417f4c0d0d20042802d003211d0240024020020d0041002108410121010c010b200210272201450d07200221080b024002402008410f4d0d00200821090c010b200841017422094110200941104b1b22094100480d08024020080d00200910272201450d0a0c010b20082009460d00200120082009102b2201450d090b200120042903f805370000200141086a201a2903003700000240024020094170714110460d00200921080c010b200941017422084120200841204b1b22084100480d0820092008460d00200120092008102b2201450d090b200120042903a801370010200141186a201929030037000002400240200841606a200a490d00200821090c010b200a415f4b0d08200841017422092002200920024b1b22094100480d0820082009460d00200120082009102b2201450d090b200141206a201d200a10e4071a024020042802d403450d00201d10290b200420023602fc05200420013602f805200441a8016a2002ad4220862001ad8422251007108b020240024020042802a80122080d00410021020c010b20042802ac01210a200420042802b0013602a406200420083602a006200441a0086a200441a0066a10f6050240024020042802a00822020d00200441003602d803200442013703d0032004410d3602d4072004200441f8056a3602d0072004200441d0036a36028008200441013602b408200442013702a408200441f4eaca003602a0082004200441d0076a3602b00820044180086a41a8a3c800200441a0086a10371a20043502d80342208620043502d00384100820042802d403450d0120042802d00310290c010b20042902a40821070b0240200a450d00200810290b024020020d00410021020c010b202510040b2007420020021b21072002410420021b211802402009450d00200110290b20182007422088a722014104746a210802400240024020010d00201821010c010b20182101034002402001410c6a2d0000221a4103470d00200141106a21010c020b200141046a280200210920012802002102200141086a280200210a2004200f280200221d3602b0072004200a3602d407200420023602d007200441a8016a200441d0076a10e403024020042802a801411c460d00200441d0036a200441a8016a41a80210e4071a4103210a024002400240201a4103710e03010200010b4100210a4100210e0c010b200441a0086a200441b0076a10cc0320044180086a41086a201b41086a29010037030020044180086a41106a201b41106a29010037030020044180086a41186a201b41186a2f01003b01002004201b2901003703800820042801a208211d20042f01a00821194101210e4100210a0b200441a0086a200441d0036a41a80210e4071a2005200429038008370200200541086a20044180086a41086a290300370200200541106a20044180086a41106a290300370200200541186a20044180086a41186a2903003702002004201d3602a406200420193b01a2062004200e3a00a1062004200a3a00a006200441f8056a200441a0086a200441a0066a10c5010b02402009450d00200210290b200141106a22012008470d000c020b0b20082001460d000340200141106a21020240200141046a280200450d00200128020010290b2002210120082002470d000b0b0240200742ffffffff0083500d00201810290b201c201e6a221e41e3004b0d03202020216a2221419f9c014b0d030b200f41046a220f2038470d000c020b0b200120201041000b20172024490d00201f202441a8bcc700104c000b200441d0036a41186a22084200370300200441d0036a41106a22054200370300200441d0036a41086a22014200370300200442003703d00341cd87cc00ad4280808080a00184100122022900002107200441f8056a41086a2209200241086a290000370300200420073703f8052002102920012009290300370300200420042903f8053703d003419f84cc00ad4280808080d00184100122022900002107200441a8016a41086a2209200241086a290000370300200420073703a80120021029200620042903a801370000200641086a2009290300370000200441a0066a41086a2001290300370300200441a0066a41106a2005290300370300200441a0066a41186a2008290300370300200420042903d0033703a0062024201f6b220241027441046a2201417f4c0d080240024020010d0041012108410021010c010b200110272208450d020b200441003602a808200420083602a008200420013602a4082002200441a0086a10710240024020020d0020042802a808210120042802a408210a20042802a00821090c010b202a201f4102746a21082024410274201f4102746b211d410020042802a80822016b210520042802a408210203402008280200210f02400240200220056a4104490d0020042802a00821092002210a0c010b200141046a22092001490d052002410174220a2009200a20094b1b220a4100480d050240024020020d000240200a0d00410121090c020b200a10272209450d080c010b20042802a00821092002200a460d0020092002200a102b2209450d070b2004200a3602a408200420093602a008200a21020b200841046a2108200920016a200f3600002004200141046a22013602a8082005417c6a2105201d417c6a221d0d000b0b200441a0066aad42808080808004842001ad4220862009ad8410030240200a450d00200910290b0240204142ffffffff0383500d00202a10290b20042802602108200428025c21052004280258210f0b201042003703002011420037030020124200370300200442003703d00341cd87cc00ad4280808080a00184100122012900002107200441f8056a41086a2202200141086a290000370300200420073703f8052001102920122002290300370300200420042903f8053703d00341ac84cc00ad4280808080900184100122012900002107200441a8016a41086a2202200141086a290000370300200420073703a80120011029200620042903a80137000020132002290300370000201420122903003703002015201129030037030020162010290300370300200420042903d0033703a006200441203602a4082004200441a0066a3602a008200f2008200441a0086a10ef030240200541ffffffff0371450d00200f10290b200041043a00000240200da72201450d002001412c6c450d00200b10290b0240200c450d0020032802002208200c4190026c6a210503400240200841d0006a280200450d00200828024c10290b0240200841186a2802002202450d00200828021021012002410474210203400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b0240200841146a28020041ffffffff0071450d00200828021010290b0240200828021c2201450d00200841206a280200450d00200110290b0240200841fc016a2802002201450d00200141c1006c450d0020082802f80110290b20084190026a210120084188026a41003602002008280284022102200841013602840202402008418c026a280200450d00200210290b2001210820012005470d000b0b200341046a2802002201450d0620014190026c450d06200328020010290c060b1039000b1032000b1030000b200041832e3b0100200041086a4115360200200041046a4193aec700360200200041026a41013a00000b200da72201450d002001412c6c450d00200b10290b024020032802082201450d002003280200220820014190026c6a210503400240200841d0006a280200450d00200828024c10290b0240200841186a2802002202450d00200828021021012002410474210203400240200141046a280200450d00200128020010290b200141106a2101200241706a22020d000b0b0240200841146a28020041ffffffff0071450d00200828021010290b0240200828021c2201450d00200841206a280200450d00200110290b0240200841fc016a2802002201450d00200141c1006c450d0020082802f80110290b20084190026a210120084188026a41003602002008280284022102200841013602840202402008418c026a280200450d00200210290b2001210820012005470d000b0b200341046a2802002201450d0020014190026c450d00200328020010290b200441800b6a24000f0b1038000bec0403037f017e087f230041e0006b220224002002200110c80102400240024002402002280200450d00200041003602000c010b20022802042203200128020441246e2204200420034b1bad42247e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410272206450d030b4100210720024100360210200220063602082002200441246e36020c0240024002402003450d00410021080340200128020422094104490d03200841016a21082001280200220a280000210b20012009417c6a220c3602042001200a41046a36020041002104200241003a00582009417b6a21090340200c2004460d03200241386a20046a200a20046a220d41046a2d00003a0000200120093602042001200d41056a3602002002200441016a220d3a00582009417f6a2109200d2104200d4120470d000b200241186a41186a2209200241386a41186a290300370300200241186a41106a220d200241386a41106a290300370300200241186a41086a220a200241386a41086a2903003703002002200229033837031802402007200228020c470d00200241086a2007410110960120022802082106200228021021070b2006200741246c6a2204200b360200200420022903183702042004410c6a200a290300370200200441146a200d2903003702002004411c6a20092903003702002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c020b200441ff0171450d00200241003a00580b20004100360200200228020c2204450d00200441246c450d00200610290b200241e0006a24000f0b1038000b1039000bb30802077f037e230041106b220224000240024002400240200128020841146a2203417f4c0d000240024020030d0041012104410021030c010b200310272204450d020b20024100360208200220043602002002200336020402402003410f4b0d00200341017422054110200541104b1b22054100480d030240024020030d002005102722040d010c060b20032005460d00200420032005102b2204450d050b20022005360204200220043602000b2004200129000c370000200441086a200141146a290000370000200241103602082001280200210620012802082203200210710240024020022802042207200228020822086b2003490d0020022802002104200721050c010b200820036a22042008490d03200741017422052004200520044b1b22054100480d030240024020070d00024020050d00410121040c020b200510272204450d060c010b2002280200210420072005460d00200420072005102b2204450d050b20022005360204200220043602000b200420086a2006200310e4071a2002200820036a2208360208200128021c210302400240200520086b4120490d00200841206a21070c010b200841206a22072008490d03200541017422012007200120074b1b22014100480d030240024020050d00024020010d00410121040c020b200110272204450d060c010b20052001460d00200420052001102b2204450d050b20022001360204200220043602000b200420086a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200220073602082002200341206a36020c2002410c6a200210e5012002200341306a36020c2002410c6a200210e501200341c0006a2802002101200341c8006a28020022032002107102402003450d00200341306c210803400240024020022802042205200228020822036b4120490d00200228020021040c010b200341206a22042003490d05200541017422072004200720044b1b22074100480d050240024020050d00024020070d00410121040c020b200710272204450d080c010b2002280200210420052007460d00200420052007102b2204450d070b20022007360204200220043602000b200420036a2204200141106a290000370000200441186a200141286a290000370000200441106a200141206a290000370000200441086a200141186a2900003700002002200341206a3602082002200136020c2002410c6a200210e501200141306a2101200841506a22080d000b0b20022802042103200235020842208620022802002204ad84101022012900002109200141086a290000210a200141106a290000210b200041186a200141186a290000370000200041106a200b370000200041086a200a370000200020093700002001102902402003450d00200410290b200241106a24000f0b1038000b1039000b1032000b1030000bc7560a087f027e047f027e017f017e0b7f017e047f027e230022032104200341a0026b416071220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e080001020304050607000b200341b4016a4101360200200342013702a40120034198e3ca003602a0012003410436027c200341cce3ca003602782003200341f8006a3602b001200341a0016a4180a6cc001040000b200141186a2802002105200141146a28020021062001410c6a2802002107200141086a280200210802400240024020022d000120022d0000410047720d00200141106a280200220241808080054b0d012001411c6a28020022094180a0014d0d02200341d0006a4110360200200341edd3c80036024c200341043a004a20034183343b01480c140b200341023a00480c130b200341d0006a410c360200200341e1d3c80036024c200341033a004a20034183343b01480c120b200141046a280200210a20012d0001210120032002360280012003200736027c20032008360278200320093602a801200320053602a401200320063602a001200341c8006a200a200141ff0171410047200341f8006a200341a0016a10c90420032d00484104470d124200210b0c130b024002400240024020022d000120022d000041004772450d00200341023a00a0010c010b200341a0016a200141046a28020010e80420032d00a0014104460d0120032902a401210b0b20032802a00121012000411c6a200b370200200041186a20013602004201210b0c010b4200210b0b200042003703080c130b024020022d000120022d000041004772450d0020004200370308200041186a41023602004201210b0c130b200141046a28020021074200210b200341b8016a4200370300200341b0016a22064200370300200341a0016a41086a22024200370300200342003703a00141d787cc00ad428080808090018410012205290000210c200341f8006a41086a2201200541086a2900003703002003200c3703782005102920022001290300370300200320032903783703a00141e087cc00ad4280808080b0018410012205290000210c2001200541086a2900003703002003200c3703782005102920062003290378220c370300200320032903a001370320200320022903003703282003200c37033020032001290300370338200320073602a001200341206aad4280808080800484200341a0016aad4280808080c0008410030c0c0b200141186a280200210d200141146a2802002109200141106a280200210e2001410c6a280200210f200141086a280200210a200141046a280200211020032002411a6a2901003703b801410221012003200241026a2901003703a00120032002410a6a2901003703a8012003200241126a2901003703b0010240024020022d00014101470d0020022d000041ff01710d00200341c8006a41186a200341a0016a41186a290300370300200341c8006a41106a200341a0016a41106a290300370300200341c8006a41086a200341a0016a41086a290300370300200320032903a0013703482003420037032820034280a0e5b9c291013703202003200341c8006a3602742003200341c8006a3602682003200341e8006a3602a8012003200341f4006a3602a4012003200341206a3602a001200341f8006a200341c8006a200341a0016a108e040240024020032802784101470d0020034184016a2802002105200341f8006a41086a280200210720032d007f210620032d007e210820032d007d210220032d007c21010c010b410421010240200341f8006a41086a2903004201520d00200341f8006a41106a290300210b20032802682102200341d8016a200341f8006a41186a290300370300200341d0016a200b370300200341a0016a41086a41003a0000200341a9016a2002290000370000200341b1016a200241086a290000370000200341b9016a200241106a290000370000200341c1016a200241186a290000370000200341033a00a001200341a0016a10cb010b0b200141ff01714104470d0f411a210241032101200f41808080054d0d0141e1d3c8002107410c2105410321080c0f0b0c0e0b0240200d4180a0014d0d0041edd3c800210741102105410421080c0e0b10be0421022003200f360280012003200a36027c200320103602782003200d3602a801200320093602a4012003200e3602a001200341206a20024101200341f8006a200341a0016a10c904200341a0016a41186a2207200341c8006a41186a290300370300200341a0016a41106a2206200341c8006a41106a290300370300200341a0016a41086a2208200341c8006a41086a290300370300200320032903483703a001200341f8006a200210db06200335028001210b20032802782105412010272201450d03200120032903a001370000200141186a2007290300370000200141106a2006290300370000200141086a2008290300370000200b4220862005ad842001ad42808080808004841003200110290240200328027c450d00200510290b200341a8016a2002360200200341003602a401200341103a00a001200341a0016a10cb010c0a0b024020022d00000d0020022d00014101460d0a0b20004200370308200041186a41023602004201210b0c100b41002105024002402002280200220141ff017122074103460d0041022106410021080c010b200341a0016a200241046a280200200120074103461b220710dc0620032802a001220120032802a80110900641ff01712102024020032802a401450d00200110290b4102210141022002410171200241024622021b210602400240024020020d0020064101710d0241d2d3c8002107410f21020c010b41b3d3c80021074111210241002105410021010240024020060e03000201000b200341b4016a4101360200200342013702a40120034198e3ca003602a0012003410436027c200341bcd4c8003602782003200341f8006a3602b001200341a0016a4180a6cc001040000b41c4d3c8002107410e2102410121010b4103210641803421080c010b200341a0016a200710e804200341a0016a41086a2101024020032d00a00122064104470d002003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184221110012205290000210b200341f8006a41086a2202200541086a2900003703002003200b370378200510292003200229030037032820032003290378370320419a88cc00ad4280808080a00184221210012205290000210b2002200541086a2900003703002003200b3703782005102920012003290328370300200341a0016a41106a22092003290378220b370300200341a0016a41186a220a20022903003703002003200b370330200320032903203703a001200341f8006a200341a0016a10fd0520032802782201410420011b21130240200329027c420020011b2214422088a72215450d0020132015410c6c6a21162013211703400240201741086a22182802002208450d00201728020021014100210241002105034002400240024020072001280200460d0020020d01410021020c020b200241016a21020c010b200520026b220620084f0d09200341a0016a41206a220e20012002415c6c6a220641206a2210280200360200200a200641186a220f2902003703002009200641106a220d290200370300200341a0016a41086a2219200641086a221a290200370300200320062902003703a001200141206a221b280200211c200141186a221d290200210b200141106a221e290200210c200141086a221f290200212020062001290200370200201a2020370200200d200c370200200f200b3702002010201c360200201b200e280200360200201d200a290300370200201e2009290300370200201f2019290300370200200120032903a0013702000b200141246a21012008200541016a2205470d000b2002450d002018280200200820026b2201490d00201820013602000b2017410c6a22172016470d000b0b200320133602482003201437024c20034200370338200342003703302003420037032820034200370320201110012202290000210b200341f8006a41086a2201200241086a2900003703002003200b370378200210292003200129030037032820032003290378370320201210012202290000210b2001200241086a2900003703002003200b37037820021029200341206a41107222212003290378370000202141086a2001290300370000200341a0016a41086a200329032837030020092003290330370300200a2003290338370300200320032903203703a0012003412036027c2003200341a0016a360278200341c8006a200341f8006a10ee052014a7210602402015450d002015410c6c21022013210103400240200141046a2802002205450d00200541246c450d00200128020010290b2001410c6a2101200241746a22020d000b0b02402006450d002006410c6c450d00201310290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184221110012201290000210b200341f8006a41086a2213200141086a2900003703002003200b37037820011029200320132903003703282003200329037837032041eb87cc00ad4280808080f00184221210012201290000210b2013200141086a2900003703002003200b3703782001102920212003290378370000202141086a22222013290300370000200341a0016a41086a22092003290328370300200341a0016a41106a220a2003290330370300200341a0016a41186a220e2003290338370300200320032903203703a001200341f8006a200341a0016a10fd0520032802782201410420011b21150240200329027c420020011b2214422088a72223450d0020152023410c6c6a21162015211703400240201741086a22182802002208450d00201728020021014100210241002105034002400240024020072001280200460d0020020d01410021020c020b200241016a21020c010b200520026b220620084f0d0a200341a0016a41206a221020012002415c6c6a220641206a220f280200360200200e200641186a220d290200370300200a200641106a22192902003703002009200641086a221a290200370300200320062902003703a001200141206a221b280200211c200141186a221d290200210b200141106a221e290200210c200141086a221f290200212020062001290200370200201a20203702002019200c370200200d200b370200200f201c360200201b2010280200360200201d200e290300370200201e200a290300370200201f2009290300370200200120032903a0013702000b200141246a21012008200541016a2205470d000b2002450d002018280200200820026b2201490d00201820013602000b2017410c6a22172016470d000b0b200320153602482003201437024c20034200370338200342003703302003420037032820034200370320201110012201290000210b2013200141086a2900003703002003200b370378200110292003201329030037032820032003290378370320201210012201290000210b2013200141086a2900003703002003200b37037820011029202120032903783700002022201329030037000020092003290328370300200a2003290330370300200e2003290338370300200320032903203703a0012003412036027c2003200341a0016a360278200341c8006a200341f8006a10ee052014a7210602402023450d002023410c6c21022015210103400240200141046a2802002205450d00200541246c450d00200128020010290b2001410c6a2101200241746a22020d000b0b02402006450d002006410c6c450d00201510290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184220b10012201290000210c200341f8006a41086a2206200141086a2900003703002003200c37037820011029200320062903003703282003200329037837032041fa87cc00ad4280808080e00084220c1001220129000021202006200141086a290000370300200320203703782001102920212003290378370000202141086a220a2006290300370000200341a0016a41086a220e2003290328370300200341b0016a22102003290330370300200341b8016a220f2003290338370300200320032903203703a001200341f8006a200341a0016a10a60320032802782201410420011b21080240200329027c420020011b2220422088a72209450d002009412c6c2102200821010340024020012802002007470d00200141246a22052802004102460d00200541003602000b2001412c6a2101200241546a22020d000b0b20034200370338200342003703302003420037032820034200370320200b10012201290000210b2006200141086a2900003703002003200b370378200110292003200629030037032820032003290378370320200c10012201290000210b2006200141086a2900003703002003200b3703782001102920212003290378370000200a2006290300370000200e200329032837030020102003290330370300200f2003290338370300200320032903203703a0012003412036027c2003200341a0016a36027820082009200341f8006a10f00302402020a72201450d002001412c6c450d00200810290b200341e8006a200710db06200341a0016a200328026822012003280270220510cd01024020032d00a0012202450d002005ad4220862001ad8410040b200341f8006a41186a200341b9016a290000220b370300200341f8006a41106a200341b1016a290000220c370300200341f8006a41086a200341a9016a2900002220370300200320032900a10122143703782003200b3703382003200c37033020032020370328200320143703200240024020024101460d00200341c8006a41186a4200370300200341c8006a41106a4200370300200341c8006a41086a4200370300200342003703480c010b200341c8006a41186a2003290338370300200341c8006a41106a2003290330370300200341c8006a41086a2003290328370300200320032903203703480b0240200328026c450d00200110290b4200210b2003420037032820034280a0e5b9c291013703202003200341c8006a360268200341f8006a200341c8006a200341206a200341e8006a10ea03024020032903784201520d00200329038001210c200341d8016a200341f8006a41106a290300370300200341d0016a200c370300200341a0016a41086a41003a0000200341a9016a2003290348370000200341b1016a200341c8006a41086a290300370000200341b9016a200341c8006a41106a290300370000200341c1016a200341e0006a290300370000200341033a00a001200341a0016a10cb010b200341a8016a2007360200200341003602a401200341103a00a001200341a0016a10cb010c0b0b2001280200210220032802a401210720032d00a201210120032d00a101410874210820032d00a30141187421050b20004200370308200041206a20023602002000411c6a2007360200200041186a2005200141ff0171411074722008722006723602004201210b0c0f0b410221052002280200220741ff017122064103470d0920064103462105200241046a2802002102200341a0016a200141046a280200220810dd06200341186a20032802a001220920032802a80110fc01200328021c210620032802182101024020032802a401450d00200910290b2002200720051b21070240024020014101470d0020062007460d010b200341a0016a200710dd0620032802a001210120033502a801210b20032008360278200b4220862001ad84200341f8006aad4280808080c00084100320032802a401450d08200110290c080b200341a0016a200710c304200341106a20032802a001220220032802a8014180a6cc004100410010c70120032802102101024020032802a401450d00200210290b0240024020014101460d00200341a0016a200810c30441002105200341086a20032802a001220220032802a8014180a6cc004100410010c70120032802082101024020032802a401450d00200210290b20014101470d0141d29ec400450d010c0b0b4100210541d29ec4000d0a0b200341a0016a200810dd0620033502a80142208620032802a0012201ad841004024020032802a401450d00200110290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184221110012201290000210b200341f8006a41086a2215200141086a2900003703002003200b370378200110292003201529030037032820032003290378370320419a88cc00ad4280808080a00184221210012201290000210b2015200141086a2900003703002003200b37037820011029200341a0016a41086a220a2003290328370300200341a0016a41106a220e2003290378220b370300200341a0016a41186a221020152903003703002003200b370330200320032903203703a001200341f8006a200341a0016a10fd0520032802782201410420011b21230240200329027c420020011b2214422088a72222450d0020232022410c6c6a21212023211803400240201841086a22162802002209450d002018280200210141002102410021050340024002400240200720012802002206460d0020082006460d0020020d01410021020c020b200241016a21020c010b200520026b220620094f0d08200341a0016a41206a220f20012002415c6c6a220641206a220d2802003602002010200641186a2219290200370300200e200641106a221a290200370300200a200641086a221b290200370300200320062902003703a001200141206a221c280200211d200141186a221e290200210b200141106a221f290200210c200141086a2217290200212020062001290200370200201b2020370200201a200c3702002019200b370200200d201d360200201c200f280200360200201e2010290300370200201f200e2903003702002017200a290300370200200120032903a0013702000b200141246a21012009200541016a2205470d000b2002450d002016280200200920026b2201490d00201620013602000b2018410c6a22182021470d000b0b200320233602482003201437024c20034200370338200342003703302003420037032820034200370320201110012201290000210b2015200141086a2900003703002003200b370378200110292003201529030037032820032003290378370320201210012201290000210b2015200141086a2900003703002003200b37037820011029200341206a41107222132003290378370000201341086a2015290300370000200a2003290328370300200e200329033037030020102003290338370300200320032903203703a0012003412036027c2003200341a0016a360278200341c8006a200341f8006a10ee052014a7210602402022450d002022410c6c21022023210103400240200141046a2802002205450d00200541246c450d00200128020010290b2001410c6a2101200241746a22020d000b0b02402006450d002006410c6c450d00202310290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184221110012201290000210b200341f8006a41086a2215200141086a2900003703002003200b37037820011029200320152903003703282003200329037837032041eb87cc00ad4280808080f00184221210012201290000210b2015200141086a2900003703002003200b3703782001102920132003290378370000201341086a22242015290300370000200341a0016a41086a220a2003290328370300200341a0016a41106a220e2003290330370300200341a0016a41186a22102003290338370300200320032903203703a001200341f8006a200341a0016a10fd0520032802782201410420011b21230240200329027c420020011b2214422088a72222450d0020232022410c6c6a21212023211803400240201841086a22162802002209450d002018280200210141002102410021050340024002400240200720012802002206460d0020082006460d0020020d01410021020c020b200241016a21020c010b200520026b220620094f0d09200341a0016a41206a220f20012002415c6c6a220641206a220d2802003602002010200641186a2219290200370300200e200641106a221a290200370300200a200641086a221b290200370300200320062902003703a001200141206a221c280200211d200141186a221e290200210b200141106a221f290200210c200141086a2217290200212020062001290200370200201b2020370200201a200c3702002019200b370200200d201d360200201c200f280200360200201e2010290300370200201f200e2903003702002017200a290300370200200120032903a0013702000b200141246a21012009200541016a2205470d000b2002450d002016280200200920026b2201490d00201620013602000b2018410c6a22182021470d000b0b200320233602482003201437024c20034200370338200342003703302003420037032820034200370320201110012201290000210b2015200141086a2900003703002003200b370378200110292003201529030037032820032003290378370320201210012201290000210b2015200141086a2900003703002003200b370378200110292013200329037837000020242015290300370000200a2003290328370300200e200329033037030020102003290338370300200320032903203703a0012003412036027c2003200341a0016a360278200341c8006a200341f8006a10ee052014a7210602402022450d002022410c6c21022023210103400240200141046a2802002205450d00200541246c450d00200128020010290b2001410c6a2101200241746a22020d000b0b02402006450d002006410c6c450d00202310290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184220b10012201290000210c200341f8006a41086a2206200141086a2900003703002003200c37037820011029200320062903003703282003200329037837032041fa87cc00ad4280808080e00084220c1001220129000021202006200141086a290000370300200320203703782001102920132003290378370000201341086a220e2006290300370000200341a0016a41086a22102003290328370300200341b0016a220f2003290330370300200341b8016a220d2003290338370300200320032903203703a001200341f8006a200341a0016a10a60320032802782201410420011b21090240200329027c420020011b2220422088a7220a450d00200a412c6c210220092101034002400240200128020022052007460d0020082005470d010b200141246a22052802004102460d00200541003602000b2001412c6a2101200241546a22020d000b0b20034200370338200342003703302003420037032820034200370320200b10012201290000210b2006200141086a2900003703002003200b370378200110292003200629030037032820032003290378370320200c10012201290000210b2006200141086a2900003703002003200b3703782001102920132003290378370000200e200629030037000020102003290328370300200f2003290330370300200d2003290338370300200320032903203703a0012003412036027c2003200341a0016a3602782009200a200341f8006a10f00302402020a72201450d002001412c6c450d00200910290b2003420037033820034200370330200342003703282003420037032041d787cc00ad4280808080900184220b10012202290000210c200341f8006a41086a2201200241086a2900003703002003200c37037820021029200320012903003703282003200329037837032041cd87cc00ad4280808080a00184220c1001220229000021202001200241086a290000370300200320203703782002102920132003290378370000201341086a22062001290300370000200341a0016a41086a22092003290328370300200341b0016a220a2003290330370300200341b8016a220e2003290338370300200320032903203703a001200341f8006a200341a0016a412010c00420032802782202410420021b2205200329027c420020021b2220422088a722102007200810de0620034200370338200342003703302003420037032820034200370320200b10012202290000210b2001200241086a2900003703002003200b370378200210292003200129030037032820032003290378370320200c10012202290000210b2001200241086a2900003703002003200b37037820021029201320032903783700002006200129030037000020092003290328370300200a2003290330370300200e2003290338370300200320032903203703a0012003412036027c2003200341a0016a36027820052010200341f8006a10ef030240202042ffffffff0383500d00200510290b200341f8006a200710dc062003280278220120032802800122061090062105200341a0016a200810dc0620032802a001220220032802a8012209109006210a02400240200541ff0171220e4102470d002009ad4220862002ad8410040c010b410110272205450d062005200e4101463a00002009ad4220862002ad842005ad428080808010841003200510290b200a41ff01712105024020032802a401450d00200210290b0240024020054102470d002006ad4220862001ad8410040c010b410110272202450d06200220054101463a00002006ad4220862001ad842002ad428080808010841003200210290b0240200328027c450d00200110290b200341c8006a200710db06200341a0016a200328024822052003280250220910cd01200341a9016a2201290000210b200341b1016a2202290000210c200341b9016a220a290000212020032d00a001210e20032900a1012114200341f8006a200810db06200341a0016a20032802782206200328028001221010cd0120032d00a001210f200a2900002111200229000021122001290000212520032900a1012126412010272201450d002001200c4200200e41ff017141014622021b3700102001200b420020021b37000820012014420020021b370000200141186a2020420020021b3700002010ad4220862006ad842001ad42808080808004841003200110290240200328027c450d00200610290b412010272201450d00200120264200200f41014622021b37000020012025420020021b37000820012012420020021b370010200141186a2011420020021b3700002009ad4220862005ad842001ad42808080808004841003200110290240200328024c450d00200510290b200341206a200710c204200341c8006a200810c204200341f8006a200335022842208620032802202202ad84220b1007108b02200341a0016a200335025042208620032802482205ad84220c1007108b02024020032802a0012201450d0020032802a4012106200b200341a8016a3502004220862001ad8410032006450d07200110290c070b200b10040c060b1039000b200620084180bdc7001036000b200620084180bdc7001036000b200620094180bdc7001036000b200620094180bdc7001036000b1030000b0240024020032802782201450d00200328027c2106200c20034180016a3502004220862001ad8410032006450d01200110290c010b200c10040b0240200328024c450d00200510290b02402003280224450d00200210290b200341206a200710c504200341c8006a200810c504200341f8006a200335022842208620032802202202ad84220b1007108b02200341a0016a200335025042208620032802482205ad84220c1007108b020240024020032802a0012201450d0020032802a4012106200b200341a8016a3502004220862001ad8410032006450d01200110290c010b200b10040b0240024020032802782201450d00200328027c2106200c20034180016a3502004220862001ad8410032006450d01200110290c010b200c10040b0240200328024c450d00200510290b02402003280224450d00200210290b200341a0016a41186a220a4200370300200341a0016a41106a22054200370300200341a0016a41086a22024200370300200342003703a00141d482cc00ad4280808080d00084220b10012206290000210c200341c8006a41086a2201200641086a2900003703002003200c3703482006102920022001290300370300200320032903483703a00141e782cc00ad4280808080a00184220c1001220629000021202001200641086a2900003703002003202037034820061029200520032903482220370300200341f8006a41086a220e2002290300370300200341f8006a41106a22102020370300200341f8006a41186a220f2001290300370300200320032903a001370378200341a0016a200341f8006a412010c00420032802a0012206410420061b220920032902a401420020061b2220422088a722062007200810de06200a42003703002005420037030020024200370300200342003703a001200b10012207290000210b2001200741086a2900003703002003200b3703482007102920022001290300370300200320032903483703a001200c10012207290000210b2001200741086a2900003703002003200b3703482007102920052003290348220b370300200e20022903003703002010200b370300200f2001290300370300200320032903a001370378200341203602a4012003200341f8006a3602a00120092006200341a0016a10ef03202042ffffffff0383500d00200910290b4200210b0b2000200b3703080c050b20004200370308200041206a41223602002000411c6a41d29ec400360200200041186a20053602004201210b0c040b02402009450d00200e10290b0240200a450d00201010290b20004200370308200041206a20053602002000411c6a2007360200200041186a2006411874200841ff017141107472200241ff017141087472200141ff0171723602004201210b0c030b02402005450d00200610290b2007450d00200810290b200328024821012000411c6a200329024c370200200041186a20013602004201210b0b200042003703080b2000200b370300200424000bad0905037f017e027f047e017f230041a0026b22022400200241c8006a200110cd052002280248210320022002280250220436028c022002200336028802200241f8006a2004ad4220862003ad841007108b0202400240200228027822040d00420021050c010b200228027c2106024002400240200241f8006a41086a28020022074110490d0020074170714110460d002007417c714120470d010b20024100360260200242013703582002410d36029402200220024188026a360290022002200241d8006a36029c022002419c016a41013602002002420137028c01200241f4eaca0036028801200220024190026a360298012002419c026a41a8a3c80020024188016a10371a200235026042208620023502588410080240200228025c450d00200228025810290b420021050c010b200441086a290000210820042900002109200441186a290000210a2004290010210b20042800202107420121050b2006450d00200410290b0240200228024c450d00200310290b02400240024002402005500d0020024188016a41186a420037030020024188016a41106a2206420037030020024188016a41086a22034200370300200242003703880141b3e6ca00ad4280808080e000841001220429000021052003200441086a29000037030020022005370388012004102941c9e6ca00ad4280808080e00084100122042900002105200241f8006a41086a220c200441086a2900003703002002200537037820041029200620022903782205370300200241d8006a41086a2003290300370300200241d8006a41106a2005370300200241d8006a41186a200c2903003703002002200229038801370358200241306a200241d8006a412010fc01200241106a200a420041002002280234410020022802301b220320076b2204200420034b1bad2205420010d507200241206a20054200200b420010d507200242004200200b420010d5072002290308200229031884420052200241206a41086a2903002205200229030020022903107c7c220b200554720d0142002009200229032022057d220a200a2009562008200b7d2009200554ad7d220520085620052008511b22031b220b4200200520031b220584500d01200242f6cacda397cddbb320370340200241c0006a2001200b2005410610aa02200241c0016a2005370300200241b8016a200b37030020024188016a41086a41003a000020024191016a200129000037000020024199016a200141086a290000370000200241a1016a200141106a290000370000200241a9016a200141186a290000370000200241123a00880120024188016a21010c020b2000411c3b0001200041086a410a360200200041046a41b8b3c700360200410321010c020b200242f6cacda397cddbb320370338200241386a200110ac0220024188016a200110cd052002350290014220862002280288012203ad8410040240200228028c01450d00200310290b20024188016a41086a41013a000020024191016a200129000037000020024199016a200141086a290000370000200241a1016a200141106a290000370000200241a9016a200141186a290000370000200241123a00880120024188016a21010b200110cb01410421010b200020013a0000200241a0026a24000bbc0505017f017e017f017e047f230041d0006b2202240041dfb3c700ad4280808080f000842203100122042900002105200241086a200441086a29000037030020022005370300200410292003100122042900002103200241106a41086a200441086a29000037030020022003370310200410290240024002400240412010272204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100522012900002103200241306a41086a200141086a2900003703002002200337033020011029200241cc006a200441206a360200200220043602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a1075200410292002280228220641206a2201417f4c0d01200228022021070240024020010d0041002108410121040c010b200110272204450d01200121080b024002402008410f4d0d00200821090c010b200841017422094110200941104b1b22094100480d03024020080d002009102722040d010c050b20082009460d00200420082009102b2204450d040b20042002290300370000200441086a200241086a2903003700000240024020094170714110460d00200921080c010b200941017422084120200841204b1b22084100480d0320092008460d00200420092008102b2204450d040b20042002290310370010200441186a200241106a41086a29030037000002400240200841606a2006490d00200821090c010b2006415f4b0d03200841017422092001200920014b1b22094100480d0320082009460d00200420082009102b2204450d040b200441206a2007200610e4071a20002001360208200020093602042000200436020002402002280224450d00200710290b200241d0006a24000f0b1039000b1038000b1032000b1030000bb317021b7f057e23004180046b2203240002400240024020012002460d00200341d4036a21040340200341f0036a200110d50220034190036a20032802f003220520032802f80310f805200341d0026a41086a220620034190036a41086a290300370300200341d0026a41106a220720034190036a41106a290300370300200341d0026a41186a220820034190036a41186a290300370300200341d0026a41206a220920034190036a41206a290300370300200341d0026a41286a220a20034190036a41286a290300370300200341d0026a41306a220b20034190036a41306a290300370300200341d0026a41386a220c20034190036a41386a290300370300200341b0026a41086a220d200441086a290200370300200341b0026a41106a220e200441106a290200370300200341b0026a41186a220f200441186a28020036020020032003290390033703d002200320042902003703b002024020032802d0032210450d00200341f0016a41386a200c290300370300200341f0016a41306a200b290300370300200341f0016a41286a200a290300370300200341f0016a41206a2009290300370300200341f0016a41186a2008290300370300200341f0016a41106a2007290300370300200341f0016a41086a2006290300370300200341d0016a41086a200d290300370300200341d0016a41106a200e290300370300200341d0016a41186a200f280200360200200320032903d0023703f001200320032903b0023703d0010b024020032802f403450d00200510290b20100d022002200141206a2201470d000b0b20004100360208200042083702000c010b200341306a41386a2204200341f0016a41386a290300370300200341306a41306a2205200341f0016a41306a290300370300200341306a41286a2206200341f0016a41286a290300370300200341306a41206a2207200341f0016a41206a290300370300200341306a41186a2208200341f0016a41186a290300370300200341306a41106a2209200341f0016a41106a290300370300200341306a41086a220a200341f0016a41086a290300370300200341106a41086a220b200341d0016a41086a290300370300200341106a41106a220c200341d0016a41106a290300370300200341106a41186a220d200341d0016a41186a280200360200200320032903f001370330200320032903d00137031020034190016a41086a220e200a29030037030020034190016a41106a220a200929030037030020034190016a41186a2209200829030037030020034190016a41206a2208200729030037030020034190016a41286a2207200629030037030020034190016a41306a2206200529030037030020034190016a41386a22052004290300370300200341f0006a41086a2204200b290300370300200341f0006a41106a220b200c290300370300200341f0006a41186a220c200d28020036020020032003290330370390012003200329031037037020034190036a41086a220d200e29030037030020034190036a41106a220e200a29030037030020034190036a41186a220a200929030037030020034190036a41206a2209200829030037030020034190036a41286a2208200729030037030020034190036a41306a2207200629030037030020034190036a41386a22062005290300370300200320032903900137039003200341d0026a41086a22052004290300370300200341d0026a41106a2204200b290300370300200341d0026a41186a220b200c280200360200200320032903703703d0020240024041e00010272211450d00201120032903900337030020112010360240201120032903d002370244201141386a2006290300370300201141306a2007290300370300201141286a2008290300370300201141206a2009290300370300201141186a200a290300370300201141106a200e290300370300201141086a200d290300370300201141cc006a2005290300370200201141d4006a2004290300370200201141dc006a200b280200360200200342818080801037020420032011360200200241606a2001460d01200241406a211220034190036a41c4006a2110410121080340200341f0036a200141206a221310d50220034190036a20032802f003220420032802f80310f805200341d0026a41086a220520034190036a41086a220a290300370300200341d0026a41106a220620034190036a41106a220b290300370300200341d0026a41186a220720034190036a41186a220c290300370300200341d0026a41206a221420034190036a41206a220d290300370300200341d0026a41286a221520034190036a41286a220e290300370300200341d0026a41306a221620034190036a41306a220f290300370300200341d0026a41386a221720034190036a41386a2202290300370300200341b0026a41086a2218201041086a290200370300200341b0026a41106a2219201041106a290200370300200341b0026a41186a221a201041186a28020036020020032003290390033703d002200320102902003703b002024020032802d0032209450d00200341f0016a41386a2017290300370300200341f0016a41306a2016290300370300200341f0016a41286a2015290300370300200341f0016a41206a2014290300370300200341f0016a41186a2007290300370300200341f0016a41106a2006290300370300200341f0016a41086a2005290300370300200341d0016a41086a2018290300370300200341d0016a41106a2019290300370300200341d0016a41186a201a280200360200200320032903d0023703f001200320032903b0023703d0010b024020032802f403450d00200410290b0240024020090d0020122001460d040c010b200341306a41386a2204200341f0016a41386a290300370300200341306a41306a2214200341f0016a41306a290300370300200341306a41286a2215200341f0016a41286a290300370300200341306a41206a2216200341f0016a41206a290300370300200341306a41186a2217200341f0016a41186a290300370300200341306a41106a2218200341f0016a41106a290300370300200341306a41086a2219200341f0016a41086a290300370300200341106a41086a221a200341d0016a41086a290300370300200341106a41106a221b200341d0016a41106a290300370300200341106a41186a221c200341d0016a41186a280200360200200320032903f001370330200320032903d00137031020034190016a41086a221d201929030037030020034190016a41106a2219201829030037030020034190016a41186a2218201729030037030020034190016a41206a2217201629030037030020034190016a41286a2216201529030037030020034190016a41306a2215201429030037030020034190016a41386a22142004290300370300200341f0006a41086a2204201a290300370300200341f0006a41106a221a201b290300370300200341f0006a41186a221b201c280200360200200320032903303703900120032003290310370370200a201d290300370300200b2019290300370300200c2018290300370300200d2017290300370300200e2016290300370300200f201529030037030020022014290300370300200320032903900137039003200520042903003703002006201a2903003703002007201b280200360200200320032903703703d002024020082003280204470d0020032008410110a701200328020021110b2011200841e0006c6a2204200329039003370300200441106a200b290300370300200441086a200a290300370300200f290300211e2002290300211f200e2903002120200d2903002121200c2903002122200441c0006a2009360200200441186a2022370300200441206a2021370300200441286a2020370300200441c4006a20032903d002370200200441386a201f370300200441306a201e370300200441cc006a2005290300370200200441d4006a2006290300370200200441dc006a20072802003602002003200841016a220836020820122001460d030b201321010c000b0b1039000b20002003290300370200200041086a200341086a2802003602000b20034180046a24000bf304010a7f230041106b220324000240024002400240200241246c41046a2204417f4c0d000240024020040d0041012105410021040c010b200410272205450d020b20034100360208200320053602002003200436020420022003107102402002450d002001200241246c6a2106200328020421052003280208210203402001280200210402400240200520026b4104490d0020032802002107200521080c010b200241046a22082002490d05200541017422072008200720084b1b22084100480d050240024020050d00024020080d00410121070c020b2008102722070d010c080b2003280200210720052008460d00200720052008102b2207450d070b20032008360204200320073602000b200720026a20043600002003200241046a2209360208412010272204450d03200441186a220a2001411c6a290000370000200441106a220b200141146a290000370000200441086a220c2001410c6a2900003700002004200141046a29000037000002400240200820096b4120490d00200241246a2102200821050c010b200941206a22022009490d05200841017422052002200520024b1b22054100480d050240024020080d00024020050d00410121070c020b200510272207450d080c010b20082005460d00200720082005102b2207450d070b20032005360204200320073602000b200720096a22082004290000370000200841186a200a290000370000200841106a200b290000370000200841086a200c2900003700002003200236020820041029200141246a22012006470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1038000b1039000b1032000b1030000be30402087f027e230041106b2202240002400240200028020822034105744114722204417f4c0d000240200410272205450d002002410036020820022004360204200220053602002000280200210620032002107102400240024020030d0020022802042107200228020821050c010b20034105742108200228020021092002280204210720022802082105034020062103024002402007200522046b4120490d00200441206a21050c010b200441206a22052004490d03200741017422062005200620054b1b22064100480d03024002400240024020070d00024020060d00410121090c020b2006102721090c030b20072006470d010b200621070c020b200920072006102b21090b200621072009450d060b200341206a2106200920046a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200841606a22080d000b2002200736020420022005360208200220093602000b200041186a290300210a2000290310210b02400240200720056b4110490d00200541106a210620022802002103200721040c010b200541106a22062005490d01200741017422032006200320064b1b22044100480d010240024020070d00024020040d00410121030c020b200410272203450d060c010b2002280200210320072004460d00200320072004102b2203450d050b20022004360204200220033602000b200320056a2205200a3700082005200b37000020012902002006ad4220862003ad84100302402004450d00200310290b200241106a24000f0b1032000b1039000b1038000b1030000bab2306087f057e027f067e047f077e230041e0056b2204240020044180036a200210dd0420044180046a200428028003220520042802880310d30520044190036a41086a2206200441c0046a29030037030020044190036a41106a2207200441c8046a29030037030020044190036a41186a2208200441d0046a29030037030020044190036a41206a2209200441d8046a29030037030020044190036a41286a220a200441e0046a2903003703002004200441b8046a29030037039003024002400240024020042d008004220b4102460d00200441b0046a290300210c20044180046a41286a290300210d20044180046a41206a290300210e20044180046a41186a290300210f20044180046a41106a29030021102004418c046a280200211120044180046a41086a2802002112200441f0046a41286a200a290300370300200441f0046a41206a2009290300370300200441f0046a41186a2008290300370300200441f0046a41106a2007290300370300200441f0046a41086a200629030037030020042004290390033703f0040240200428028403450d00200510290b200441d0026a41086a2206200441f0046a41086a2903002213370300200441d0026a41106a2207200441f0046a41106a2903002214370300200441d0026a41186a2208200441f0046a41186a2903002215370300200441d0026a41206a2209200441f0046a41206a2903002216370300200441d0026a41286a220a200441f0046a41286a2903002217370300200420042903f00422183703d00220044180046a41286a2219201737030020044180046a41206a221a201637030020044180046a41186a221b201537030020044180046a41106a2205201437030020044180046a41086a221c20133703002004201837038004200b450d01411410d5042102200441e0016a411410d60420042802e401210320042802e00121050c020b0240200428028403450d00200510290b411410d5042102200441086a411410d604200428020c2103200428020821050c010b20044198026a41286a2019290300221337030020044198026a41206a201a2903002214370300200441e8016a41086a220b201c290300370300200441e8016a41106a22192005290300370300200441e8016a41186a221a201b290300370300200441e8016a41206a221b2014370300200441e8016a41286a221c201337030020042004290380043703e801200a201c2903003703002009201b2903003703002008201a290300370300200720192903003703002006200b290300370300200420042903e8013703d002200341186a2903002118200341086a2903002114200341206a290300211d200341106a290300211320032d0000210720044190036a200110a80220044180046a200428029003220920042802980310a902427f2013201d7c201420187c22162014542206ad7c22152006201520135420152013511b22061b2013200741014622081b2115427f201620061b201420081b21172005290300420020042903800442015122051b2116200429038804420020051b211e0240200428029403450d00200910290b0240024002400240024002400240024002400240024002402017201e56201520165620152016511b0d002011ad4220862012ad84211620044198026a200110df0520044180046a200428029802220b20042802a002221a10e00520042d0080042105200441f0046a20044180046a41017241ef0010e4071a024020054102470d004108210a20044190036a41086a4200370300200441a0036a221b4200370300200441a8036a4200370300200441b0036a4200370300200441b8036a4200370300200441c0036a4200370300200441c8036a420037030041002105200441d0036a4100360200200441003a009003200441083602940320044190036a4104722119410021080c060b200420053a00900320044190036a410172200441f0046a41ef0010e4071a02402005450d00411e21032004411e3a00800420044180046a21060c080b200441a0036a211b20044190036a4104722119200428029403210a41002105024002402004419c036a280200221c41014b0d0041002108201c0e020701070b201c2106034020052006410176220820056a2209200a200941306c6a28020020024b1b2105200620086b220641014b0d000b0b024002400240200a200541306c6a28020022062002460d00201c41e4004b0d01200520062002496a2105201c21080c080b201c20054d0d01200a200541306c6a220541186a290300211f200541106a290300211e0240024020052d000822064101470d0020044180016a200541206a2903002220200541286a2903002221420a420010e00720044190016a201e201f420a420010e007200d201e7d2222200d56200c201f7d200d201e54ad7d221e200c56201e200c511b0d05202220207d2223202256201e20217d2022202054ad7d221f201e56201f201e511b0d052016200429039001220c7d2222201656201020044190016a41086a2903007d2016200c54ad7d221e201056201e2010511b450d012023210d201f210c0c050b200541096a2d00002108024002402005410a6a2d0000220941ff0171450d00200441c0016a201f42002009ad42ff01832222420010d507200441d0016a201e42002022420010d507200441b0016a42004200201e420010d507427f200441d8016a290300222220042903c00120042903b0017c7c222020042903c80120042903b8018442005220202022547222091b2121427f20042903d00120091b21220c010b200441a0016a201e201f420a420010e007200441a8016a290300212120042903a00121220b200d201e7d2220200d56200c201f7d200d201e54ad7d221e200c56201e200c511b0d0402400240200841ff01710d00200f20227d220d200f56200e20217d200f202254ad7d220c200e56200c200e511b0d01200d210f200c210e201621232010211f0c080b201620227d2223201656201020217d2016202254ad7d221f201056201f2010511b450d070b2020210d201e210c0c040b0240200f20042903800122167d2210200f56200e20044180016a41086a2903007d200f201654ad7d2216200e562016200e511b450d002023210d201f210c20222116201e21100c040b2023210d201f210c2010210f2016210e20222116201e21100c060b41272103200441273a00800420044180046a21060c030b2005201c41f0a4c7001036000b412110d5042102200441106a412110d60420042903102113200041026a20023a000020004183223b0100200041046a20133702000c0c0b41202103200441203a00800420044180046a21060b410021050c040b0240024020060d00200841ff01714102460d004200201e200441b8036a2903007d2020200441b0036a290300220c54ad7d22162020200c7d220d2020562016201e562016201e511b22061b210c4200200d20061b210d200441a8036a290300211020042903a0032116024020084101710d004200200e20107d200f201654ad7d2210200f20167d2216200f562010200e562010200e511b22061b210e4200201620061b210f0c020b4200201f20107d2023201654ad7d2210202320167d22162023562010201f562010201f511b22061b21104200201620061b21160c020b2020210d201e210c0b20232116201f21100b200541086a22052003290300370300200541206a200341206a290300370300200541186a200341186a290300370300200541106a200341106a290300370300200541086a200341086a2903003703000c010b200441a4046a200341206a2902003702002004419c046a200341186a29020037020020044194046a200341106a2902003702002004418c046a200341086a290200370200200420032902003702840420082005490d020240200820044190036a41086a280200470d002019200841011090012019280200210a0b200a200541306c6a220641306a2006200820056b41306c10e5071a2006200236020020062004290280043702042006410c6a20044188046a290200370200200641146a20044190046a2902003702002006411c6a20044198046a290200370200200641246a200441a0046a2902003702002006412c6a200441a8046a2802003602002004200841016a36029c030b02400240024020074101470d00200441206a2018201d420a420010e007200441306a20142013420a420010e007200d20147c221f200d542203200c20137c2003ad7c221e200c54201e200c511b0d02201f20187c2214201f542203201e201d7c2003ad7c2213201e542013201e511b0d02201620042903307c221d20165422032010200441306a41086a2903007c2003ad7c221820105420182010511b0d01200f20042903207c220d200f542203200e200441206a41086a2903007c2003ad7c220c200e54200c200e511b450d062014210d2013210c201d2116201821100c020b20032d0001210502400240200341026a2d0000220341ff0171450d00200441e0006a201342002003ad42ff01832218420010d507200441f0006a201442002018420010d507200441d0006a420042002014420010d507427f200441f8006a2903002218200429036020042903507c7c221d2004290368200429035884420052201d2018547222031b2118427f200429037020031b211d0c010b200441c0006a20142013420a420010e007200441c8006a29030021182004290340211d0b200d20147c2214200d542203200c20137c2003ad7c2213200c542013200c511b0d010240200541ff01710d00200f201d7c220c200f542203200e20187c2003ad7c2218200e542018200e511b0d01200c210f2018210e2016211d201021180c050b2016201d7c221d2016542203201020187c2003ad7c221820105420182010511b450d040b2014210d2013210c0b411f21032004411f3a00800420044180046a210620042d00900321050b200310d5042107200441186a20062d000010d604200428021c210820042802182106410321030240200541ff01710d0020044198036a2802002205450d00200541306c450d0020042802940310290b200d2114200c2113200f210d200e210c2016211d201021180c030b200520081041000b024020070d00200541ff01714102460d00427f2013200441b8036a2903007c2014200441b0036a2903007c22162014542203ad7c22142003201420135420142013511b22031b2113427f201620031b2114201b41086a2903002116201b290300210c024020054101710d00427f200e20167c200f200c7c220d200f542203ad7c221620032016200e542016200e511b22031b210c427f200d20031b210d0c020b427f201820167c201d200c7c220c201d542203ad7c22162003201620185420162018511b22031b2118427f200c20031b211d0b200f210d200e210c0b20044180046a20044190036a41f00010e4071a024020042d00800422034102470d00201aad422086200bad841004410421030c010b200441f0046a20044180046a10a105201aad422086200bad8420043502f80442208620042802f0042205ad841003024020042802f404450d00200510290b024020030d0020044188046a2802002203450d00200341306c450d0020042802840410290b410421030b0240200428029c02450d00200b10290b024020034104470d00200442e4cab5fbb6ccdcb0e3003703c802200441c8026a20012017201510e503200441b0046a201337030020044180046a41286a201437030020044180046a41206a200c37030020044180046a41186a200d37030020044180046a41106a2018370300200441b8046a20042903d002370300200441c0046a200441d8026a290300370300200441c8046a200441d0026a41106a290300370300200441d0046a200441d0026a41186a290300370300200441d8046a200441d0026a41206a290300370300200441e0046a200441d0026a41286a2903003703002004201d37038804200441003a00800420044190036a200210dd04200428029003210220042004280298033602f404200420023602f00420044180046a200441f0046a10de040240200428029403450d00200210290b200041043a00000c020b200041113a0001200020033a0000200041086a2008360000200041046a2006360000200041026a20073a00000c010b200041046a2003ad4220862005ad843702002000200241ff0171411074418322723602000b200441e0056a24000b810703047f017e027f23004180016b22022400200241186a2203200141186a290000370300200241106a2204200141106a290000370300200241086a2205200141086a2900003703002002200129000037030041c99fc500ad4280808080900184100122012900002106200241286a41086a200141086a290000370300200220063703282001102941a891c700ad4280808080d00084100122012900002106200241386a41086a200141086a29000037030020022006370338200110290240024002400240412010272201450d0020012002290300370000200141186a2003290300370000200141106a2004290300370000200141086a200529030037000020022001ad42808080808004841002220329000037037820031029200241e4006a200141206a360200200220013602602002200241f8006a41086a36025c2002200241f8006a360258200241c8006a200241d8006a1075200110292002280250220741206a2203417f4c0d01200228024821080240024020030d0041002104410121010c010b200310272201450d01200321040b024002402004410f4d0d00200421050c010b200441017422054110200541104b1b22054100480d03024020040d002005102722010d010c050b20042005460d00200120042005102b2201450d040b20012002290328370000200141086a200241286a41086a2903003700000240024020054170714110460d00200521040c010b200541017422044120200441204b1b22044100480d0320052004460d00200120052004102b2201450d040b20012002290338370010200141186a200241386a41086a29030037000002400240200441606a2007490d00200421050c010b2007415f4b0d03200441017422052003200520034b1b22054100480d0320042005460d00200120042005102b2201450d040b200141206a2008200710e4071a0240200228024c450d00200810290b20022001200310d905200241e0006a2203200241096a290000370300200241e8006a2204200241116a290000370300200241f0006a2207200241196a290000370300200220022900013703580240024020022d000022084102470d00200041023a00000c010b200020083a000020002002290358370001200041096a2003290300370000200041116a2004290300370000200041196a20072903003700000b02402005450d00200110290b20024180016a24000f0b1039000b1038000b1032000b1030000be00903067f067e057f230041a0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200041023a00000c010b2003280214210502400240200341186a2802002206450d0020042d0000220141014b0d002006417f6a210202400240024020010e020001000b20024104490d022004280001210741002101200341003a0098012006417b6a21080240034020082001460d01200341f8006a20016a200420016a41056a2d00003a00002003200141016a22023a0098012002210120024120470d000b200341d8006a41186a200341f8006a41186a290300370300200341d8006a41106a200341f8006a41106a290300370300200341d8006a41086a200341f8006a41086a290300370300200320032903783703582006417b6a2002460d03200420026a220141056a2d0000220841034f0d03200620026b2202417a6a4104490d03200241766a4110490d03200241666a4110490d03200241566a4110490d03200141066a2800002106200141126a29000021092001410a6a290000210a200341286a41086a200341d8006a41086a290300370300200341286a41106a200341d8006a41106a290300370300200341286a41186a200341d8006a41186a29030037030020032003290358370328200320032800503602202003200341d3006a280000360023200141326a290000210b2001412a6a290000210c200141226a290000210d2001411a6a290000210e200320032f014e3b014c410021010c020b200141ff0171450d02200341003a0098010c020b2002450d0120042d0001220141014b0d012006417e6a2108410021020240024020010e020100010b410121020b200841034d0d01200341286a41086a200341f8006a41086a290300370300200341286a41106a200341f8006a41106a290300370300200341286a41186a200341f8006a41186a29030037030020032003290378370328200320032800583602202003200341d8006a41036a2800003600232004280002210f410121010b200341f8006a41086a2210200341286a41086a290300370300200341f8006a41106a2211200341286a41106a290300370300200341f8006a41186a2212200341286a41186a290300370300200320032f014c22133b015020032003290328370378200320032802203602582003200328002336005b200041306a200b370000200041286a200c370000200041206a200d370000200041186a200e370000200041106a2009370000200041086a200a370000200020023a00012000413c6a2006360000200041386a2007360000200041046a200f360000200041026a20133b0000200041e0006a20083a0000200041c0006a2003290378370000200041c8006a2010290300370000200041d0006a2011290300370000200041d8006a2012290300370000200041e1006a2003280258360000200041e4006a200328005b3600000c010b20034100360260200342013703582003410d36022c2003200341086a3602282003200341d8006a3602502003418c016a41013602002003420137027c200341f4eaca003602782003200341286a36028801200341d0006a41a8a3c800200341f8006a10371a200335026042208620033502588410080240200328025c450d00200328025810290b410221010b200020013a00002005450d00200410290b200341a0016a24000b9f0303027f017e027f230041206b2202240041c99fc500ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102941e893c700ad4280808080d00184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bde0201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602040c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d0020032002417c6a3602242003200141046a36022020012800002102200341c8006a200341206a109602200328024822050d010b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602040c010b2000200329024c37020820002005360204200020023602000b2004450d00200110290b200341e0006a24000ba10202067f017e230041106b2202240002400240412010272203450d0020032000290000370000200341186a2204200041186a290000370000200341106a2205200041106a290000370000200341086a2206200041086a290000370000412010272207450d0120072003290000370000200741186a2004290000370000200741106a2005290000370000200741086a2006290000370000200310290240024020002d0020220341024d0d004280808080800421080c010b024002400240024020030e03000102000b410021030c020b410121030c010b410221030b200220033a000f2007412041c000102b2207450d02200720033a00204280808080900421080b200129020020082007ad84100320071029200241106a24000f0b1039000b1030000b9f0303027f017e027f230041206b2202240041c99fc500ad4280808080900184100122032900002104200241086a200341086a2900003703002002200437030020031029419c93c700ad4280808080900184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bb10503027f017e047f230041d0006b2202240041c99fc500ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941a891c700ad4280808080d00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bab0602057f047e23004190016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200041023a00000c010b2003280214210502400240200341186a2802002201450d0020042d0000220241014b0d002001417f6a2106024002400240024020020e020001000b41002101200341003a008801200441016a21070240034020062001460d01200341e8006a20016a200720016a2d00003a00002003200141016a22023a0088012002210120024120470d000b200341c8006a41186a200341e8006a41186a2903002208370300200341206a41086a200341e8006a41086a290300370300200341206a41106a200341e8006a41106a290300370300200341206a41186a200837030020032003290368370320410021010c020b200141ff0171450d03200341003a0088010c030b41002101200341003a008801200441016a2107034020062001460d02200341e8006a20016a200720016a2d00003a00002003200141016a22023a0088012002210120024120470d000b200341c8006a41186a200341e8006a41186a2903002208370300200341206a41086a200341e8006a41086a290300370300200341206a41106a200341e8006a41106a290300370300200341206a41186a200837030020032003290368370320410121010b200341e8006a41186a200341206a41186a2903002208370300200341e8006a41106a200341206a41106a2903002209370300200341e8006a41086a200341206a41086a290300220a37030020032003290320220b370368200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c020b200141ff0171450d00200341003a0088010b20034100360250200342013703482003410d3602242003200341086a3602202003200341c8006a360244200341fc006a41013602002003420137026c200341f4eaca003602682003200341206a360278200341c4006a41a8a3c800200341e8006a10371a200335025042208620033502488410080240200328024c450d00200328024810290b410221010b200020013a00002005450d00200410290b20034190016a24000b9b2308047f027e047f077e037f087e157f017e23002206210720064180056b41607122062400024002400240024020012002460d0020012002412010e707450d00200641b0016a200110a80220064180046a20062802b001220820062802b80110a90220064190046a290300420020062903800442015122091b210a200629038804420020091b210b024020062802b401450d00200810290b200b200454200a200554200a2005511b450d01412110d5042103200641106a412110d60420062903102105200020033a000620004183223b0104200041086a20053702000c020b412510d5042103200641086a412510d60420062903082105200020033a000620004183223b0104200041086a20053702000c010b200641a0016a200110df0520064180046a20062802a001220c20062802a801220d10e00520064190036a41026a220920062d0083043a0000200641c8036a41086a220820064180046a41e0006a290300370300200641c8036a41106a220e20064180046a41e8006a290300370300200620062f0081043b019003200620064180046a41d8006a2903003703c8030240024020062d008004220f4102470d00200641b0016a41c0006a220941003602004200210b200641b0016a41106a4200370300200641b0016a41186a4200370300200641b0016a41206a4200370300200641b0016a41286a4200370300200641b0016a41306a4200370300200641b0016a41386a4200370300200641083602b401200641b0016a41086a4200370300200641003a00b001200641b0016a41d0006a2903002110200641b0016a41c8006a2903002111200929030021124200210a42002113420021140c010b20064180046a41d0006a290300211020064180046a41c8006a290300211120064180046a41386a290300211420064180046a41286a290300210a20064180046a41206a290300210b20064180046a41186a290300211520064180046a41106a290300211620064180046a41306a290300211320064180046a410c6a280200211720064180046a41086a28020021182006280284042119200641b0016a41c0006a20064180046a41c0006a2903002212370300200641b0016a41386a2014370300200641b0016a41286a200a370300200641b0016a41206a200b370300200641b0016a41186a2015370300200641b0016a41106a2016370300200641b0016a41d0006a2010370300200641b0016a41c8006a2011370300200641b0016a41306a2013370300200641b0016a410c6a2017360200200641b0016a41086a2018360200200641b0016a41d8006a20062903c803370300200641b0016a41e0006a2008290300370300200641b0016a41e8006a200e2903003703002006200f3a00b001200620062f0190033b00b101200620193602b401200620092d00003a00b3010b2006200241106a2900003700b1022006200241176a2900003700b8022006200241086a2900003700a902200620022900003700a10220062903b802211a2006200641c8016a2209290300221b3703b80220062903b002211c200620062903c001221d3703b00220062903a802211e200620062903b801221f3703a802200641013a00a00220062903a0022115200620062903b00122163703a002200231001f2120200641e8016a4200370300200641e0016a2005370300200641d8016a20043703002009201a370300200620202003ad222142ff0183420886843703d0012006201c3703c0012006201e3703b801200620153703b00120064188026a2209290300211a2009420037030020064180026a4200370300200641f8016a4200370300200642003703f00120064198026a2208280200210f20064190026a220e290300211c20084100360200200e42003703000240024002400240024002402016a741ff01714101460d002016422088a7210f201fa721082015a7210e201f422088a70d02200641e8016a200641c0016a200e41ff017141014622171b220e201b370308200e201d370300200e200b370310200e41186a200a3703002009200641b0016a41306a20171b22092012a736021020092014370308200920133703002008450d01200841306c450d01200f10290c010b20064180046a41176a200641a0026a410172220841176a29000037000020064180046a41106a200841106a29000037030020064180046a41086a200841086a2900003703002006200b3c009f04200620082900003703800402400240200b420888200a42388684220ba741ff0171450d00200641f8006a20134200200b42ff0183220b420010d50720064188016a200a4200200b420010d507200641e8006a42004200200a420010d507427f20064190016a290300220b200629037820062903687c7c22152006290380012006290370844200522015200b547222081b210b427f20062903880120081b21150c010b200641d8006a200a2013420a420010e007200641e0006a290300210b200629035821150b20064180046a2015200b200a201310e2051a200641e8016a200641c0016a20062d00b001410146220e1b2208201137031020082012370308200841186a2010370300200820143703002009200641e0016a200e1b2209201a3703002009201c3703082009200f3602100b02400240200341ff0171450d00200641386a20054200202142ff0183220a420010d507200641c8006a20044200200a420010d507200641286a420042002004420010d507427f200641d0006a290300220a200629033820062903287c7c220b2006290340200629033084420052200b200a547222031b2121427f200629034820031b211b0c010b200641186a20042005420a420010e007200641206a29030021212006290318211b0b200641d0026a200210df0520064180046a20062802d002222220062802d802222310e00520064190036a41026a220320062d0083043a000041082124200641c8036a41086a200641e0046a290300370300200641c8036a41106a2209200641e8046a290300370300200620062f0081043b0190032006200641d8046a2903003703c803200641d0046a2903002114200641c8046a290300211c0240024020062d00800422254102470d004200211f41002125420021104200211d4200212042002111420021124200211a41002126410021270c010b200641c0046a2903002110200641b8046a290300211f200641a8046a2903002111200641a0046a290300212020064198046a290300211a20064180046a41106a2903002112200641b0046a290300211d2006418c046a280200212620064180046a41086a28020021272006280284042124200641fc026a41026a20032d00003a0000200641e0026a41086a200641c8036a41086a290300370300200641e0026a41106a2009290300370300200620062f0190033b01fc02200620062903c8033703e0020b4101210320254101460d01427f201120057c202020047c220b2020542203ad7c220a2003200a201154200a2011511b22031b2111427f200b20031b2120427f201a20217c2012201b7c220b2012542203ad7c220a2003200a201a54200a201a511b22031b211a427f200b20031b21120240202641306c2203450d00202420036a2119200641b8046a210920064180046a410172222841036a2129202421030340200341306a21080240200341086a2d00004101710d00200341096a2d0000212a20064180036a200328020010dd0420064180046a2006280280032203200628028803222b10d305200641c8036a41086a222c200941086a222d290000370300200641c8036a41106a222e200941106a222f290000370300200641c8036a41186a2230200941186a2231290000370300200641c8036a41206a2232200941206a2233290000370300200641c8036a41286a2234200941286a2235290000370300200620282800003602f803200620292800003600fb03200620092900003703c80320064180046a41306a210e20064180046a41206a210f20064180046a41106a2117024020062d00800422184102472236450d00200e290300210a200f29030021152017290300211320062903a804210b200629039804211e200629038804211620064190036a41086a202c29030037030020064190036a41106a202e29030037030020064190036a41186a203029030037030020064190036a41206a203229030037030020064190036a41286a2034290300370300200620062800fb033600c303200620062802f8033602c003200620062903c8033703900320180d00427f200a20057c200b20047c2237200b54222cad7c220b202c200b200a54200b200a511b222c1b210a427f2037202c1b210b0240202a4101710d00427f201520217c201e201b7c2237201e54222cad7c221e202c201e201554201e2015511b222c1b2115427f2037202c1b211e0c010b427f201320217c2016201b7c2237201654222cad7c2216202c201620135420162013511b222c1b2113427f2037202c1b21160b202820062802c0033600002009200629039003370300200e200a370300200f201537030020172013370300202920062800c303360000202d20064190036a41086a290300370300202f20064190036a41106a290300370300203120064190036a41186a290300370300203320064190036a41206a290300370300203520064190036a41286a2903003703002006200b3703a8042006201e370398042006201637038804200620183a0080040240024020360d00202bad4220862003ad8410040c010b2006202b3602cc03200620033602c80320064180046a200641c8036a10e3050b200628028403450d00200310290b2008210320192008470d000b0b202621030c020b412310d504210320064198016a412310d604200341ff01714110742103200629039801210502402008450d00200841306c450d00200f10290b200341832272210341012109200e41ff01710d02201ea72208450d02200841306c450d022015422088a710290c020b427f201420057c201c20047c220b201c542209ad7c220a2009200a201454200a2014511b22091b2114427f200b20091b211c427f201020217c201f201b7c220b201f542209ad7c220a2009200a201054200a2010511b22091b2110427f200b20091b211f0b200641d0046a2014370300200641c8046a201c370300200641c0046a2010370300200641b8046a201f370300200641a8046a2011370300200641a0046a202037030020064198046a201a37030020064180046a41106a2012370300200641b0046a201d3703002006418c046a202636020020064180046a41086a2027360200200641d8046a20062903e002370300200641e0046a200641e0026a41086a290300370300200641e8046a200641e0026a41106a290300370300200620062f01fc023b00810420062024360284042006200641fc026a41026a2d00003a008304200620253a0080040240024020254102470d002023ad4220862022ad8410040c010b200641c8036a20064180046a10a1052023ad4220862022ad8420063502d00342208620062802c8032209ad841003024020062802cc03450d00200910290b20250d002027450d00202741306c450d00202410290b024020062802d402450d00202210290b200642e4cab5fbb6ccdcb0e3003703c802200641c8026a20012004200510e50320064180046a200641b0016a41f00010e4071a024020062d00800422094102470d00200dad422086200cad841004410021090c010b200641c8036a20064180046a10a105200dad422086200cad8420063502d00342208620062802c8032208ad841003024020062802cc03450d00200810290b024020090d0020064188046a2802002209450d00200941306c450d0020062802840410290b410021090b024020062802a401450d00200c10290b024020090d0020064180046a41086a41083a0000200641a9046a200229000037000020012900002105200641093a00800420064180046a41096a200537000020064191046a200141086a29000037000020064199046a200141106a290000370000200641a1046a200141186a290000370000200641b1046a200241086a290000370000200641b9046a200241106a290000370000200641c1046a200241186a29000037000020064180046a10cb0120002003360204410021060c020b20002003360204200041086a20053702000b410121060b20002006360200200724000b870e0b057f017e017f057e027f057e017f027e017f037e027f230022022103200241c0046b41607122022400200241d0006a200110df05200241b0036a200228025022042002280258220510e00520022d00b0032106200241d0016a200241b0036a41017241ef0010e4071a0240024020064102470d0042002107200241f0006a4200370300200241f8006a420037030020024180016a420037030020024188016a420037030020024190016a420037030020024198016a420037030041002108200241a0016a410036020020024108360264200241e0006a41086a4200370300200241003a006042002109410021064200210a4200210b4200210c0c010b200220063a0060200241e0006a410172200241d0016a41ef0010e4071a20024180016a290300220d420888a72106200241c0016a290300210920024190016a290300210b20024188016a290300210a20024198016a290300210c200241c8016a280200210e200da72108420021070b20024198016a4200370300200241e0006a41306a420037030020024188016a4200370300200241f8006a220f290300210d200f4200370300200241083602e402200241003a00e002200241003602c0022002290370211020024200370370200229036821112002420037036820024200370380012002200d3703f802200220103703f002200220113703e80220022903d80221122002200241b8016a220f29030022133703d80220022903d00221142002200241b0016a221529030022163703d00220022903c80221172002200241a8016a221829030022193703c80220022903e002210d2002200229036022103703e0022002200d37036020022903c002211a200220022903a001221b3703c002200f201237030020152014370300201820173703002002201a3703a001200da7210f02400240024002402010a741ff017122154101470d00200241a7036a20022900f802370000200241a0036a20022900f10237030020024190036a41086a20022900e902370300200220022900e10237039003200220083a00af03200641ff0171450d01200241286a200b42002006ad42ff0183220d420010d507200241386a200a4200200d420010d507200241186a42004200200a420010d507427f200241c0006a290300220d200229032820022903187c7c221120022903302002290320844200522011200d547222151b210d427f200229033820151b21110c020b412210d5042101200241c8006a412210d604200141ff017121012002290348210b024020150d002011a72206450d00200641306c450d002010422088a710290b200141107421010240200f41ff01710d0041010d0041010d00200d422088a710290b200141832272210102402002280254450d00200410290b20002001360204200041086a200b370200410121020c020b200241086a200a200b420a420010e007200241106a290300210d200229030821110b20024190036a2011200d200a200b10e2052108200241b0036a41186a4200370300200241b0036a41106a221c4200370300200241b0036a41086a22154200370300200242003703b00341b3e6ca00ad4280808080e0008410012218290000210d2015201841086a2900003703002002200d3703b0032018102941c9e6ca00ad4280808080e0008410012218290000210d200241b0046a41086a221d201841086a2900003703002002200d3703b00420181029201c20022903b004220d370300200241d0016a41086a2015290300370300200241d0016a41106a200d370300200241d0016a41186a201d290300370300200220022903b0033703d0012002200241d0016a412010fc01200228020421152002280200211820024198016a200241e0006a41106a200f41ff0171410146221c1b220f41186a2016370300200f2019370310200f201b370308200f200c370300200241b8016a20024190016a201c1b220f2007201384220d200a200d200a562009200b562009200b511b221c1b370300200f2009200b201c1b370308200f200e200641187441187541027441d4a7c0006a280200418084076c2015410020181b6a2206200e20064b1b360210200241b0036a200241e0006a41f00010e4071a0240024020022d00b00322064102470d002005ad4220862004ad8410040c010b200241d0016a200241b0036a10a1052005ad4220862004ad8420023502d80142208620022802d001220ead841003024020022802d401450d00200e10290b20060d00200241b8036a2802002206450d00200641306c450d0020022802b40310290b02402002280254450d00200410290b200241b0036a41086a41093a0000200241b0036a41096a2001290000370000200241c1036a200141086a290000370000200241c9036a200141106a290000370000200241d1036a200141186a290000370000200241093a00b003200241b0036a10cb0120002008360204410021020b20002002360200200324000b8d0c05027f017e027f037e027f23004190026b22032400200241086a2802002204ad220542208620022802002206ad84101022072900002108200741086a2900002109200741106a290000210a200341286a41186a200741186a290000370300200341286a41106a200a370300200341286a41086a20093703002003200837032820071029200341e0006a200341286a10d804200341206a2003280260220b20032802684180a6cc004100410010c7012003280220210702402003280264450d00200b10290b024002400240024020074101460d00200341106a200542004280c2d72f420010d5072003200341186a29030022083703880220032003290310220937038002200320013602584104210702402004450d002003200136025c2003200341dc006a3602682003200341d8006a360264200320034180026a360260200341e0016a2001200341e0006a108e04024020032802e0014101470d00200320032900e5013703602003200341ec016a28000036006720032d00e40121070c010b41042107200341e0016a41086a2903004201520d00200341e0016a41106a290300210a200328025c210b20034198016a200341e0016a41186a29030037030020034190016a200a370300200341e0006a41086a41003a0000200341e9006a200b290000370000200341f1006a200b41086a290000370000200341f9006a200b41106a29000037000020034181016a200b41186a290000370000200341033a0060200341e0006a10cb010b200320032903603703482003200328006736004f200741ff01714104470d01200341e0006a41186a4200370300200341e0006a41106a22044200370300200341e0006a41086a220742003703002003420037036041b3e6ca00ad4280808080e000841001220b290000210a2007200b41086a2900003703002003200a370360200b102941c9e6ca00ad4280808080e000841001220b290000210a20034180026a41086a2206200b41086a2900003703002003200a37038002200b10292004200329038002220a370300200341e0016a41086a220b2007290300370300200341e0016a41106a2207200a370300200341e0016a41186a22042006290300370300200320032903603703e001200341086a200341e0016a412010fc01200328020c21062003280208210c2003418b026a200241086a2800003600002003200229000037008302200341a8016a2008370300200341a0016a200937030020034181016a20032900800237000020034188016a20034187026a29000037000020034194016a410036020020034190016a20064100200c1b360200200341e9006a200141086a290000370000200341f1006a200141106a290000370000200341f9006a200141186a290000370000200341013a0060200320012900003700612004200341286a41186a2903003703002007200341286a41106a290300370300200b200341286a41086a290300370300200320032903283703e001200341c8006a200341e0016a10de05200328024821072003350250210a200341003602e801200342013703e001200341e0006a200341e0016a10db0420032802e4012102200a4220862007ad8420033502e80142208620032802e001220bad84100302402002450d00200b10290b0240200328024c450d00200710290b024020034188016a280200450d0020034184016a28020010290b200341b8016a2008370300200341b0016a2009370300200341e0006a41086a410b3a0000200341f1006a200341286a41086a290300370000200341f9006a200341286a41106a29030037000020034181016a200341286a41186a29030037000020034189016a200129000037000020034191016a200141086a29000037000020034199016a200141106a290000370000200341a1016a200141186a290000370000200341093a0060200341e0006a41096a2003290328370000200341e0006a10cb01200041043a00000c030b410f10d50421072003410f10d60420032903002108200041026a20073a000020004183223b0100200041046a20083702000c010b200020073a000020002003290348370001200041086a200328004f3600000b200241046a280200450d00200610290b20034190026a24000b910d03037f037e057f23004190026b22032400200235020842208620022802002204ad84101022052900002106200541086a2900002107200541106a2900002108200341306a41186a2209200541186a290000370300200341306a41106a220a2008370300200341306a41086a220b20073703002003200637033020051029200341003a008002200341e0006a41186a2009290300370300200341e0006a41106a200a290300370300200341e0006a41086a200b29030037030020032003290330370360200341e0016a200341e0006a10de05200341286a20032802e001220b20032802e80120034180026a4101410010c701024002400240024020032802280d00411010d50421052003411010d604200328020421092003280200210a20032802e401450d01200b10290c010b0240024002400240200328022c450d0020032d008002220c41014b0d004104210d200c0e020301030b41c6a3c700ad4280808080900584100841102105200341103a0060200341e0006a21090c010b410f21052003410f3a0060200341e0006a21090b200510d5042105200341206a20092d000010d604200328022421092003280220210a4103210d0b024020032802e401450d00200b10290b200d4104470d00200341e0016a200341306a10d804200341e0006a20032802e001220920032802e80110d90420032802e401210502400240024020032d0060220a4102460d0020034188016a280200210b20034184016a280200210d2003350264210602402005450d00200910290b200a450d014201210742801e2106200b450d02200d10290c020b02402005450d00200910290b411010d5042105200341086a411010d60420032903082106200041026a20053a000020004183223b0100200041046a20063702000c030b200642208642801e842106420021070b02402007200684a741ff01714101460d00200341e0006a41186a4200370300200341e0006a41106a220a4200370300200341e0006a41086a220542003703002003420037036041b3e6ca00ad4280808080e000841001220929000021072005200941086a290000370300200320073703602009102941c9e6ca00ad4280808080e0008410012209290000210720034180026a41086a220b200941086a290000370300200320073703800220091029200a2003290380022207370300200341e0016a41086a22092005290300370300200341e0016a41106a22052007370300200341e0016a41186a220a200b290300370300200320032903603703e001200341186a200341e0016a412010fc01200328021c210b200328021821042003418b026a200241086a2800003600002003200229000037008302200341a8016a4200370300200341a0016a420037030020034181016a20032900800237000020034188016a20034187026a29000037000020034198016a20064220883e020020034194016a410136020020034190016a200b410020041b360200200341e9006a200141086a290000370000200341f1006a200141106a290000370000200341f9006a200141186a290000370000200341013a006020032001290000370061200a200341306a41186a2903003703002005200341306a41106a2903003703002009200341306a41086a290300370300200320032903303703e001200341d0006a200341e0016a10de052003280250210520033502582106200341003602e801200342013703e001200341e0006a200341e0016a10db0420032802e401210220064220862005ad8420033502e80142208620032802e0012209ad84100302402002450d00200910290b02402003280254450d00200510290b024020034188016a280200450d0020034184016a28020010290b200341b8016a4200370300200341b0016a4200370300200341e0006a41086a410b3a0000200341f1006a200341306a41086a290300370000200341f9006a200341306a41106a29030037000020034181016a200341306a41186a29030037000020034189016a200129000037000020034191016a200141086a29000037000020034199016a200141106a290000370000200341a1016a200141186a290000370000200341093a0060200341e0006a41096a2003290330370000200341e0006a10cb01200041043a00000c030b410f10d5042105200341106a410f10d60420032903102106200041026a20053a000020004183223b0100200041046a20063702000c010b20004183223b0100200041086a2009360200200041046a200a360200200041026a20053a00000b200241046a280200450d00200410290b20034190026a24000b9f0303027f017e027f230041206b2202240041c99fc500ad4280808080900184100122032900002104200241086a200341086a290000370300200220043703002003102941c08ec700ad4280808080900184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bb10503027f017e047f230041d0006b2202240041c99fc500ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941bc90c700ad4280808080800184100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bbb1005057f017e067f077e017f230041c0016b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b020240024002400240200328021022020d00200041023a00000c010b200328021421042003200341186a280200220536025420032002360250024002402005450d0020022d0000210120032005417f6a22063602542003200241016a360250200141014b0d00024002400240024020010e020001000b2003200341d0006a10c80120032802000d03200328020422062003280254220141306e2207200720064b1bad42307e2208422088a70d062008a72207417f4c0d060240024020070d00410821090c010b200710272209450d080b4100210a20034100360268200320093602602003200741306e220b36026402402006450d002006417f6a210720034198016a41017221064100210a02400240034020014104490d0120032802502205350000210820032001417c6a3602542003200541046a36025020034198016a200341d0006a10ab0520032d00980122054102460d01200341f0006a411f6a220b2006411f6a290000370000200341f0006a41186a220c200641186a290000370300200341f0006a41106a220d200641106a290000370300200341f0006a41086a220e200641086a290000370300200320062900003703700240200a2003280264470d00200341e0006a200a4101109001200328026021092003280268210a0b2009200a41306c6a220120053a000820012008370300200141096a2003290370370000200141116a200e290300370000200141196a200d290300370000200141216a200c290300370000200141286a200b2900003700002003200a41016a220a3602682007450d022007417f6a2107200328025421010c000b0b20032802642201450d05200141306c450d05200910290c050b2003280264210b0b2009450d0302400240200328025422014110490d0020032003280250220641106a3602502003200141706a220736025420074110490d00200641086a290000210f200629000021102003200641206a3602502003200141606a220736025420074104490d01200641186a2900002108200629001021112003200641246a36025020032001415c6a220736025420074110490d0120062800202107200341386a2006412c6a290000370300200341cc006a41026a200341dd006a41026a2d00003a000020032011370320200320032f005d3b014c20032007360240200320062900243703302003200837032820032001414c6a3602542003200641346a360250410021010c030b200b450d04200b41306c450d04200910290c040b200b450d03200b41306c450d03200910290c030b20064110490d0220032005416f6a220a3602542003200241116a360250200241096a29000021082002290001211141002101200341003a00b801416e21060340200a2001460d0220034198016a20016a200220016a220741116a2d00003a00002003200520066a3602542003200741126a3602502003200141016a22073a00b8012006417f6a21062007210120074120470d000b200341e2006a20032d009a013a0000200320032f0198013b01602005416f6a2007460d02200341af016a290000210f20032900a7012110200328009b012109200328009f01210b20032800a301210a20032d00b701210d200220076a220141116a2d0000210c2003200520066a22063602542003200141126a360250200c41074f0d0220064110490d022003200141226a220e3602502003200520076b2207415e6a220636025420064110490d022001411a6a2900002112200141126a29000021132003200141326a220536025020032007414e6a220636025420064104490d022001412a6a2900002114200e2900002115200528000021062003200141366a220e36025020032007414a6a220536025420054110490d02200341cc006a41026a200341e0006a41026a2d00003a0000200341c0006a2012370300200341206a41106a2008370300200320032f01603b014c2003200741ba7f6a3602542003200141c6006a36025020032013370338200320113703282003200c3a00212003200d3a0020200320032801703601222003200341f4006a2f01003b01262001413e6a2900002111200e2900002108410121010b200341f0006a41026a200341cc006a41026a2d000022073a000020034198016a41086a2205200341206a41086a29030037030020034198016a41106a220c200341206a41106a29030037030020034198016a41186a220d200341206a41186a29030037030020034198016a41206a220e200341206a41206a290300370300200320032f014c22163b01702003200329032037039801200041186a200f370000200041106a2010370000200041036a20073a0000200020163b00012000410c6a200a360000200041086a200b360000200041046a2009360000200041e8006a2006360000200041e0006a2011370000200041d8006a2008370000200041d0006a2014370000200041c8006a2015370000200041206a200329039801370000200041286a2005290300370000200041306a200c290300370000200041386a200d290300370000200041c0006a200e2903003700000c020b200141ff0171450d00200341003a00b8010b20034100360228200342013703202003410d3602742003200341086a3602702003200341206a360260200341ac016a41013602002003420137029c01200341f4eaca00360298012003200341f0006a3602a801200341e0006a41a8a3c80020034198016a10371a2003350228422086200335022084100802402003280224450d00200328022010290b410221010b200020013a00002004450d00200210290b200341c0016a24000f0b1038000b1039000bf01c08077f067e0a7f017e017f057e017f067e23004190046b22042400200441a8026a200210dd04200441d8026a20042802a802220520042802b00210d305200441c8036a41086a220620044198036a290300370300200441c8036a41106a2207200441a0036a290300370300200441c8036a41186a2208200441a8036a290300370300200441c8036a41206a2209200441b0036a290300370300200441c8036a41286a220a200441b8036a290300370300200420044190036a2903003703c80320044188036a290300210b200441d8026a41286a290300210c200441d8026a41206a290300210d200441d8026a41186a290300210e200441d8026a41106a290300210f200441d8026a41086a290300211020042802dc02211120042d00d9022112024020042d00d80222134102460d0020044188016a41286a200a29030037030020044188016a41206a200929030037030020044188016a41186a200829030037030020044188016a41106a200729030037030020044188016a41086a2006290300370300200420042903c803370388010b024020042802ac02450d00200510290b200441b8016a41286a220520044188016a41286a290300370300200441b8016a41206a220620044188016a41206a290300370300200441b8016a41186a220720044188016a41186a290300370300200441b8016a41106a221420044188016a41106a290300370300200441b8016a41086a221520044188016a41086a29030037030020042004290388013703b801200441e8016a200110df05200441d8026a20042802e801221620042802f00110e005200441a8026a41026a220120042d00db023a0000200441c8036a41086a200441a4036a290200370300200441c8036a41106a2217200441ac036a290200370300200441c8036a41186a2218200441b4036a290200370300200441c8036a41206a2219200441bc036a290200370300200441c8036a41286a221a200441c4036a280200360200200420042f00d9023b01a80220042004419c036a2902003703c8030240024020042d00d80222094102470d004200211b4100210a4100211c4200211d4200211e4200211f42002120420021214100212241082108410021090c010b20044190036a290300212120044188036a2903002120200441d8026a41286a290300211f200441d8026a41206a290300211e200441d8026a41186a290300211d200441d8026a41106a290300211b20044198036a2802002122200441e4026a280200211c200441d8026a41086a280200210a20042802dc022108200441a4026a41026a20012d00003a0000200441f8016a41086a200441c8036a41086a290300370300200441f8016a41106a2017290300370300200441f8016a41186a2018290300370300200441f8016a41206a2019290300370300200441f8016a41286a201a280200360200200420042f01a8023b01a402200420042903c8033703f8010b200441a8026a41286a2005290300370300200441a8026a41206a2006290300370300200441a8026a41186a2007290300370300200441a8026a41106a2014290300370300200441a8026a41086a2015290300370300200420042903b8013703a80202400240024020090d00410021010240024002400240024002400240024002400240201c41014b0d00201c0e020201020b201c2105034020012005410176220620016a22072008200741306c6a28020020024b1b2101200520066b220541014b0d000b0b2008200141306c6a2802002002470d00024002402013410371417f6a220541014b0d0020050e020109010b200441c8036a41286a200441a8026a41286a290300370300200441c8036a41206a200441a8026a41206a290300370300200441c8036a41186a200441a8026a41186a290300370300200441c8036a41106a200441a8026a41106a290300370300200441c8036a41086a200441a8026a41086a290300370300200420042903a8023703c8030240024020030d00201c20014d0d042008200141306c6a220541186a2903002123200541106a29030021240240024020052d000822064101470d00200441106a200541206a2903002225200541286a2903002226420a420010e007200441206a20242023420a420010e007200c20247d2227200c56200b20237d200c202454ad7d2224200b562024200b511b0d01202720257d2228202756202420267d2027202554ad7d220c202456200c2024511b0d0120102004290320220b7d2224201056200f200441206a41086a2903007d2010200b54ad7d220b200f56200b200f511b0d01200e2004290310220f7d2210200e56200d200441106a41086a2903007d200e200f54ad7d220f200d56200f200d511b0d010c0b0b200541096a2d00002107024002402005410a6a2d0000220541ff0171450d00200441d0006a202342002005ad42ff01832227420010d507200441e0006a202442002027420010d507200441c0006a420042002024420010d507427f200441e8006a2903002227200429035020042903407c7c2228200429035820042903488442005220282027547222051b2125427f200429036020051b21270c010b200441306a20242023420a420010e007200441386a2903002125200429033021270b200c20247d2228200c56200b20237d200c202454ad7d220c200b56200c200b511b0d000240200741ff01710d00200e20277d2226200e56200d20257d200e202754ad7d2223200d562023200d511b0d0120102124200f210b2026210e2023210d0c0a0b201020277d2224201056200f20257d2010202754ad7d220b200f56200b200f511b450d090b41202101200441203a00d802200441d8026a21060c010b411d21012004411d3a00d802200441d8026a21060b200110d5042105200441086a20062d000010d604200428020c2106200428020821070c050b201c20014d0d022008200141306c6a22052d00080d07201241ff0171410047200541096a2d00004573450d07200541186a290300210c200541106a290300210f2008200141306c6a410a6a2c00002107200441d8026a41186a4200370300200441d8026a41106a22024200370300200441d8026a41086a22054200370300200442003703d80241b3e6ca00ad4280808080e0008410012206290000210b2005200641086a2900003703002004200b3703d8022006102941c9e6ca00ad4280808080e0008410012206290000210b20044180046a41086a2214200641086a2900003703002004200b37038004200610292002200429038004220b370300200441c8036a41086a2005290300370300200441c8036a41106a200b370300200441c8036a41186a2014290300370300200420042903d8023703c803200441f8006a200441c8036a412010fc01200428027c410020042802781b200741027441d4a7c0006a280200418084076c20116a22054f0d0720030d032021200c2020200f562021200c562021200c511b22061b21212020200f20061b212020222005202220054b1b21220c070b411c10d504210520044180016a411c10d604200428028001210720042802840121060c030b2001201c41f0a3c7001036000b2001201c4180a4c7001036000b411d10d5042105200441f0006a411d10d60420042802702107200428027421060b41032101200a450d04200a41306c450d04200810290c040b024020060d00200741ff01714102460d004200200c201f7d2028201e54ad7d220f2028201e7d2210202856200f200c56200f200c511b22051b210c4200201020051b2128024020074101710d004200200d201d7d200e201b54ad7d220f200e201b7d2210200e56200f200d56200f200d511b22051b210f4200201020051b21100c020b4200200b201d7d2024201b54ad7d220f2024201b7d2210202456200f200b56200f200b511b22051b210b4200201020051b21240b200e2110200d210f0b20044188036a200c370300200441d8026a41286a2028370300200441d8026a41206a200f370300200441d8026a41186a2010370300200441d8026a41106a200b37030020044190036a20042903c80337030020044198036a200441d0036a290300370300200441a0036a200441c8036a41106a290300370300200441a8036a200441c8036a41186a290300370300200441b0036a200441c8036a41206a290300370300200441b8036a200441c8036a41286a290300370300200420243703e002200441003a00d80220044180046a200210dd04200428028004210520042004280288043602fc03200420053602f803200441d8026a200441f8036a10de04200428028404450d00200510290b201c20014d0d022008200141306c6a2205200541306a201c2001417f736a41306c10e5071a201c417f6a211c0b20044190036a202137030020044188036a2020370300200441d8026a41286a201f370300200441d8026a41206a201e370300200441d8026a41186a201d370300200441d8026a41106a201b37030020044198036a2022360200200441e4026a201c360200200441d8026a41086a200a3602002004419c036a20042903f801370200200441a4036a200441f8016a41086a290300370200200441ac036a200441f8016a41106a290300370200200441b4036a200441f8016a41186a290300370200200441bc036a200441f8016a41206a290300370200200441c4036a200441f8016a41286a280200360200200420042f01a4023b00d902200420083602dc022004200441a4026a41026a2d00003a00db02200420093a00d8020240024020094102470d0020043502f00142208620042802e8012216ad8410040c010b20043502f001212120042802e8012116200441c8036a200441d8026a10a10520214220862016ad8420043502d00342208620042802c8032201ad84100320042802cc03450d00200110290b0240200a450d0020090d00200a41306c450d00200810290b410421010b024020042802ec01450d00201610290b0240024020014104470d00200041043a00000c010b200041113a0001200020013a0000200041086a2006360000200041046a2007360000200041026a20053a00000b20044190046a24000f0b2001201c1042000be80e08057f027e017f017e027f087e157f067e230041a0026b220524002005200010df05200541306a200528020022062005280208220710e005200541b0016a41026a220020052d00333a000041082108200541e8016a41086a20054190016a290300370300200541e8016a41106a220920054198016a290300370300200520052f00313b01b001200520054188016a2903003703e80120054180016a290300210a200541f8006a290300210b0240024020052d0030220c4102470d004200210d4100210e4100210f4200211042002111420021124200211342002114420021154100210c0c010b200541f0006a2903002115200541e8006a2903002114200541d8006a2903002112200541d0006a2903002111200541c8006a2903002110200541306a41106a290300210d200541e0006a29030021132005413c6a280200210f200541306a41086a280200210e200528023421082005412c6a41026a20002d00003a0000200541106a41086a200541e8016a41086a290300370300200541106a41106a2009290300370300200520052f01b0013b012c200520052903e8013703100b4101210002400240200c4101460d004200201220047d2011200354ad7d2216201120037d2217201156201620125620162012511b22001b21124200201720001b21114200201020027d200d200154ad7d2216200d20017d2217200d56201620105620162010511b22001b21104200201720001b210d0240200f41306c2200450d00200820006a2118200541e8006a2109200541306a410172221941036a211a200821000340200041306a211b0240200041086a2d00004101710d00200041096a2d0000211c200541a0016a200028020010dd04200541306a20052802a001220020052802a801221d10d305200541e8016a41086a221e200941086a221f290000370300200541e8016a41106a2220200941106a2221290000370300200541e8016a41186a2222200941186a2223290000370300200541e8016a41206a2224200941206a2225290000370300200541e8016a41286a2226200941286a222729000037030020052019280000360298022005201a28000036009b02200520092900003703e801200541306a41306a2128200541306a41206a2129200541306a41106a212a024020052d0030222b410247222c450d00202829030021172029290300212d202a290300212e200529035821162005290348212f20052903382130200541b0016a41086a201e290300370300200541b0016a41106a2020290300370300200541b0016a41186a2022290300370300200541b0016a41206a2024290300370300200541b0016a41286a20262903003703002005200528009b023600e30120052005280298023602e001200520052903e8013703b001202b0d004200201720047d2016200354ad7d2231201620037d2232201656203120175620312017511b221e1b211742002032201e1b21160240201c4101710d004200202d20027d202f200154ad7d2231202f20017d2232202f562031202d562031202d511b221e1b212d42002032201e1b212f0c010b4200202e20027d2030200154ad7d2231203020017d22322030562031202e562031202e511b221e1b212e42002032201e1b21300b201920052802e001360000200920052903b001370300202820173703002029202d370300202a202e370300201a20052800e301360000201f200541b0016a41086a2903003703002021200541b0016a41106a2903003703002023200541b0016a41186a2903003703002025200541b0016a41206a2903003703002027200541b0016a41286a290300370300200520163703582005202f370348200520303703382005202b3a003002400240202c0d00201dad4220862000ad8410040c010b2005201d3602ec01200520003602e801200541306a200541e8016a10e3050b20052802a401450d00200010290b201b21002018201b470d000b0b200f21000c010b4200200a20047d200b200354ad7d2216200b20037d2217200b562016200a562016200a511b22091b210a4200201720091b210b4200201520027d2014200154ad7d2216201420017d2217201456201620155620162015511b22091b21154200201720091b21140b20054180016a200a370300200541f8006a200b370300200541f0006a2015370300200541e8006a2014370300200541d8006a2012370300200541d0006a2011370300200541c8006a2010370300200541306a41106a200d370300200541e0006a20133703002005413c6a200f360200200541306a41086a200e36020020054188016a200529031037030020054190016a200541106a41086a29030037030020054198016a200541106a41106a290300370300200520052f012c3b00312005200836023420052005412c6a41026a2d00003a00332005200c3a003002400240200c4102470d002007ad4220862006ad8410040c010b200541e8016a200541306a10a1052007ad4220862006ad8420053502f00142208620052802e8012209ad841003024020052802ec01450d00200910290b200c0d00200e450d00200e41306c450d00200810290b02402005280204450d00200610290b200541a0026a240020000ba60203027f017e017f230041106b22022400200241003602082002420137030002400240024020002d00004101460d00410110272203450d02200341003a0000200220033602002002428180808010370204200041086a200210c606200235020842208621042002280204452103200228020021000c010b410110272203450d01200341013a000020024281808080103702042002200336020020002d00012105200341014102102b2203450d01200320053a000120024282808080203702042002200336020020002802042105200341024106102b2200450d01200020053600022002200036020020024286808080e000370204410021034280808080e00021040b200129020020042000ad841003024020030d00200010290b200241106a24000f0b1030000b4a01037f230041106b220124002001410036020820014201370300200110e405200128020421022000200128020022032001280208107202402002450d00200310290b200141106a24000bd40303017f017e027f230041e0006b22022400024002402000290300220342c000540d00024002400240200342808001540d002003428080808004540d014108200379a741037622046b4104490d022002411320044102746b3a00482001200241c8006a41011072200220002903002203370308200441786a21000340200220033c00482001200241c8006a4101107220034208882103200041016a22042000492105200421002005450d000b200220033703082003500d04200241286a41146a4109360200200241346a411c360200200241106a41146a41033602002002200241086a36024020024180f8ca00360244200241c8006a41146a410036020020024203370214200241aca5cc003602102002411c36022c20024180a6cc003602582002420137024c20024188f8ca003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a4180a6cc001040000b20022003a74102744101723b01482001200241c8006a410210720c030b20022003a74102744102723602482001200241c8006a410410720c020b41c4f7ca00413641b8a1cc001033000b20022003a74102743a00482001200241c8006a410110720b200241e0006a24000b890101027f230041106b2202240002404120102722030d001039000b20032000290004370000200341186a2000411c6a290000370000200341106a200041146a290000370000200341086a2000410c6a2900003700002001200341201072200310292002200028020036020c20012002410c6a410410722001200041246a41c0001072200241106a24000bcb0102017f017e230041106b220224000240024020002d00004101460d00200241003a00002001200241011072200220002d0001410047410774200041026a2d0000723a00002001200241011072200029030821032002200041106a290300370308200220033703000c010b200241013a00002001200241011072200029030821032002200041106a290300370308200220033703002001200241101072200041186a29030021032002200041206a290300370308200220033703000b2001200241101072200241106a24000bd60401037f230041106b220224000240024020002d0000417f6a220341044b0d000240024002400240024020030e050001020304000b200241003a000b20012002410b6a41011072200041246a28020021032000412c6a28020022042001107102402004450d002004410574210403402001200341201072200341206a2103200441606a22040d000b0b0240024020002d00014101460d00200241003a000b20012002410b6a410110720c010b200241013a000b20012002410b6a410110722001200041026a412010720b2002200028023036020c20012002410c6a410410720c040b200241013a000b20012002410b6a41011072200041046a280200200110bf02200041086a200110e6010c030b200241023a000b20012002410b6a41011072200041046a200110e601200041086a280200200110bf022000410c6a200110e6010c020b200241033a000b20012002410b6a41011072412010272203450d0220032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a290000370000200120034120107220031029200041246a200110e6012002200041216a2d00003a000b20012002410b6a410110720c010b200241043a000b20012002410b6a41011072412010272203450d0120032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a290000370000200120034120107220031029200041246a200110e601200041306a200110e505200041286a200110e6010b200241106a24000f0b1039000bcb4003037f017e017f230041106b220224000240024020002d0000220341144b0d0002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e15000102030405060708090a0b0c0d0e0f1011121314000b200241003a00002001200241011072200041086a2d0000220341044b0d140240024002400240024020030e050001020304000b200241003a000020012002410110722002200041106a29030037030020012002410810720240200041186a2d0000220341024b0d00024002400240024020030e03000102000b200241003a00000c020b200241013a00000c010b200241023a00000b20012002410110720b2002200041196a2d00003a000020012002410110720c180b200241013a00002001200241011072024002400240024002402000410c6a2d00000e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a0000200120024101107220022000410d6a2d00003a0000200120024101107220022000410e6a2d00003a00000b20012002410110722002200029031837030020012002410810720240200041206a2d0000220341024b0d00024002400240024020030e03000102000b200241003a00000c020b200241013a00000c010b200241023a00000b20012002410110720b2002200041216a2d00003a000020012002410110720c170b200241023a000020012002410110720c160b200241033a000020012002410110722001200041096a412010720c150b200241043a000020012002410110722001200041096a412010720c140b200241013a00002001200241011072200041046a280200220341024b0d1302400240024020030e03000102000b200241003a000020012002410110722002200041086a280200360200200120024104107220022000410c6a28020036020020012002410410720c150b200241013a000020012002410110722002200041086a280200360200200120024104107220022000410c6a28020036020020012002410410720c140b200241023a000020012002410110722002200041086a280200360200200120024104107220022000410c6a280200360200200120024104107202400240200041106a28020022030d00200241003a000020012002410110720c010b200241013a00002001200241011072200041186a28020022042001107120012003200410720b024020002d001c22034104460d00200241013a000020012002410110720240024002400240024020030e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a0000200120024101107220022000411d6a2d00003a0000200120024101107220022000411e6a2d00003a00000b20012002410110720c140b200241003a000020012002410110720c130b200241023a000020012002410110720240200041046a2d00004101460d00200241003a000020012002410110722001200041056a412010722002200041286a28020036020020012002410410720c130b200241013a000020012002410110722002200041086a28020036020020012002410410720c120b200241033a00002001200241011072200041086a2d0000220341044b0d1102400240024002400240024020030e050001020304000b200241003a000020012002410110722001200041096a41201072200041306a29030021052002200041386a290300370308200220053703000c040b200241013a000020012002410110722001200041096a41201072200041306a29030021052002200041386a290300370308200220053703000c030b200241023a000020012002410110722001200041096a412010722001200041296a41201072200041d0006a29030021052002200041d8006a290300370308200220053703000c020b200241033a000020012002410110722001200041096a41201072200041306a29030021052002200041386a290300370308200220053703002001200241101072200041c0006a29030021052002200041c8006a290300370308200220053703000c010b200241043a000020012002410110722001200041096a41201072200041306a29030021052002200041386a290300370308200220053703000b20012002411010720c110b200241043a00002001200241011072200041086a2d0000220341084b0d1002400240024002400240024002400240024020030e09000102030405060708000b200241003a0000200120024101107220022000410c6a2802003602002001200241041072200041106a29030021052002200041186a290300370308200220053703002001200241101072200041206a29030021052002200041286a2903003703082002200537030020012002411010720c180b200241013a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c170b200241023a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c160b200241033a0000200120024101107220022000410c6a28020036020020012002410410720c150b200241043a00002001200241011072200041096a2d0000220041024b0d1402400240024020000e03000102000b200241003a000020012002410110720c160b200241013a000020012002410110720c150b200241023a000020012002410110720c140b200241053a00002001200241011072200041096a2d0000220041024b0d1302400240024020000e03000102000b200241003a000020012002410110720c150b200241013a000020012002410110720c140b200241023a000020012002410110720c130b200241063a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c120b200241073a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c110b200241083a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c100b200241053a00002001200241011072200241003a000020012002410110722001200041106a41101072200041046a28020021032000410c6a28020022042001107120012003200410722002200041206a2d00003a000020012002410110720c0f0b200241063a00002001200241011072200241003a000020012002410110722002200041046a28020036020020012002410410720c0e0b200241073a00002001200241011072200041046a280200220341024b0d0d02400240024020030e03000102000b200241003a00002001200241011072200041086a2802002103200041106a2802002200200110712000450d0f2003200041286c6a2100034020012003412010722002200341206a29030037030020012002410810722000200341286a2203470d000c100b0b200241013a000020012002410110720c0e0b200241023a000020012002410110720c0d0b200241083a00002001200241011072200041046a2d0000220341024b0d0c02400240024020030e03000102000b200241003a000020012002410110722001200041056a412010720c0e0b200241013a000020012002410110720c0d0b200241023a00002001200241011072200041086a2802002104200041106a2802002200200110712000450d0c2004200041d0006c6a2106034020012004412010722002200441206a3602002002200110e5012002200441306a3602002002200110e501200428024021002004280248220320011071200441d0006a210402402003450d00200341306c210303402001200041106a41201072200220003602002002200110e501200041306a2100200341506a22030d000b0b20062004470d000c0d0b0b200241093a00002001200241011072200041086a2d0000220341104b0d0b0240024002400240024002400240024002400240024002400240024002400240024020030e11000102030405060708090a0b0c0d0e0f10000b200241003a0000200120024101107220022000410c6a2802003602002001200241041072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c1b0b200241013a0000200120024101107220022000410c6a2802003602002001200241041072200041206a29030021052002200041286a290300370308200220053703002001200241101072200041106a2802002103200041186a2802002200200110712000450d1a2000410574210003402001200341201072200341206a2103200041606a22000d000c1b0b0b200241023a000020012002410110720c190b200241033a0000200120024101107220022000410c6a2802003602002001200241041072200041096a2d0000220041024b0d1802400240024020000e03000102000b200241003a000020012002410110720c1a0b200241013a000020012002410110720c190b200241023a000020012002410110720c180b200241043a0000200120024101107220022000410c6a28020036020020012002410410720c170b200241053a0000200120024101107220022000410c6a28020036020020012002410410720c160b200241063a0000200120024101107220022000410c6a28020036020020012002410410720c150b200241073a0000200120024101107220022000410c6a28020036020020012002410410722002200041096a2d00003a000020012002410110720c140b200241083a000020012002410110722001200041096a412010722001200041296a412010720c130b200241093a000020012002410110722001200041096a412010720c120b2002410a3a000020012002410110722001200041096a41201072412010272203450d12200341186a200041c1006a290000370000200341106a200041396a290000370000200341086a200041316a2900003700002003200041296a2900003700002001200341201072200310292002200041cc006a28020036020020012002410410720c110b2002410b3a00002001200241011072412010272203450d11200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310292001200041296a41201072200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010720c100b2002410c3a00002001200241011072412010272203450d10200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310292001200041296a41201072200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010720c0f0b2002410d3a00002001200241011072412010272203450d0f200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a29000037000020012003412010722003102920022000412c6a28020036020020012002410410720c0e0b2002410e3a00002001200241011072412010272203450d0e200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a29000037000020012003412010722003102920022000412c6a28020036020020012002410410720c0d0b2002410f3a00002001200241011072412010272203450d0d200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310292001200041296a41201072200041f0006a29030021052002200041f8006a2903003703082002200537030020012002411010722001200041c9006a412010720c0c0b200241103a000020012002410110722001200041096a412010720c0b0b2002410a3a00002001200241011072200041046a200110ea050c0a0b2002410b3a00002001200241011072200041046a200110ea050c090b2002410c3a00002001200241011072200041046a2d0000220341044b0d080240024002400240024020030e050001020304000b200241003a00002001200241011072200041086a2802002103200041106a2802002200200110712000450d0c2003200041306c6a210003402001200341201072200341206a29030021052002200341286a2903003703082002200537030020012002411010722000200341306a2203470d000c0d0b0b200241013a000020012002410110720c0b0b200241023a000020012002410110722001200041056a412010720c0a0b200241033a000020012002410110722001200041056a412010720c090b200241043a000020012002410110722001200041056a412010722001200041256a412010722002200041c5006a2d00003a000020012002410110720c080b2002410d3a0000200120024101107220002d0001220041054b0d07024002400240024002400240024020000e06000102030405000b200241003a00000c050b200241013a00000c040b200241023a00000c030b200241033a00000c020b200241043a00000c010b200241053a00000b20012002410110720c070b2002410e3a00002001200241011072200041086a2d00002203410a4b0d060240024002400240024002400240024002400240024020030e0b000102030405060708090a000b200241003a0000200120024101107220022000410c6a28020036020020012002410410720c100b200241013a00002001200241011072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c0f0b200241023a0000200120024101107220022000412c6a2802003602002001200241041072200041306a29030021052002200041386a2903003703082002200537030020012002411010722001200041096a412010720c0e0b200241033a0000200120024101107220022000410c6a2802003602002001200241041072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c0d0b200241043a00002001200241011072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c0c0b200241053a00002001200241011072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c0b0b200241063a00002001200241011072200041106a29030021052002200041186a2903003703082002200537030020012002411010720c0a0b200241073a00002001200241011072412010272203450d0a200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310290c090b200241083a00002001200241011072412010272203450d09200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310290c080b200241093a00002001200241011072412010272203450d08200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310292001200041296a41201072200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010720c070b2002410a3a00002001200241011072412010272203450d07200341186a200041216a290000370000200341106a200041196a290000370000200341086a200041116a2900003700002003200041096a2900003700002001200341201072200310290c060b2002410f3a00002001200241011072200041086a2d0000220341064b0d05024002400240024002400240024020030e0700010203040506000b200241003a0000200120024101107220022000410c6a28020036020020012002410410720c0b0b200241013a0000200120024101107220022000410c6a28020036020020012002410410722002200041106a28020036020020012002410410722002200041146a28020036020020012002410410720c0a0b200241023a0000200120024101107220022000410c6a28020036020020012002410410720c090b200241033a000020012002410110722001200041106a4120107220022000410c6a28020036020020012002410410720240200041096a2d00002203410f7141094b0d000240024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a00000c090b200241013a00000c080b200241023a00000c070b200241033a00000c060b200241043a00000c050b200241053a00000c040b200241063a00000c030b200241073a00000c020b200241083a00000c010b200241093a00000b20012002410110720b200220002802303602002001200241041072200029033821052002200041c0006a2903003703082002200537030020012002411010720c080b200241043a0000200120024101107220022000410c6a28020036020020012002410410720240200041096a2d00002203410f7141094b0d000240024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a00000c090b200241013a00000c080b200241023a00000c070b200241033a00000c060b200241043a00000c050b200241053a00000c040b200241063a00000c030b200241073a00000c020b200241083a00000c010b200241093a00000b20012002410110720b200029031021052002200041186a290300370308200220053703002001200241101072200029032021052002200041286a2903003703082002200537030020012002411010720c070b200241053a000020012002410110722001200041096a41201072200041306a29030021052002200041386a290300370308200220053703002001200241101072200041c0006a29030021052002200041c8006a2903003703082002200537030020012002411010720c060b200241063a000020012002410110722001200041096a41201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c050b200241103a000020012002410110720240200041046a2802004101460d00200241003a000020012002410110722002200028020836020020012002410410720c050b200241013a000020012002410110722002200028020836020020012002410410720c040b200241113a00002001200241011072200241003a000020012002410110722001200041186a412010722001200041386a41141072200041086a29030021052002200041106a2903003703082002200537030020012002411010720c030b200241123a00002001200241011072200041096a21030240200041086a2d00004101460d00200241003a000020012002410110722001200341201072200041306a29030021052002200041386a2903003703082002200537030020012002411010720c030b200241013a0000200120024101107220012003412010720c020b200241133a00002001200241011072200041046a2d0000220341064b0d01024002400240024002400240024020030e0700010203040506000b200241003a000020012002410110722002200041086a2802003602002001200241041072024002400240024002402000410c6a2d00000e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a0000200120024101107220022000410d6a2d00003a0000200120024101107220022000410e6a2d00003a00000b20012002410110720c070b200241013a000020012002410110720c060b200241023a000020012002410110722001200041056a412010722001200041256a412010722001200041c5006a412010720c050b200241033a000020012002410110722001200041056a412010722002200041e8006a28020036020020012002410410722002200041ec006a28020036020020012002410410722001200041256a412010722001200041c5006a412010720c040b200241043a000020012002410110722001200041056a412010722002200041e8006a28020036020020012002410410722002200041ec006a28020036020020012002410410722001200041256a412010722001200041c5006a412010720240200041f0006a2d00004104460d00200241013a000020012002410110720240024002400240024020002d00700e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a000020012002410110722002200041f1006a2d00003a000020012002410110722002200041f2006a2d00003a00000b20012002410110720c040b200241003a000020012002410110720c030b200241053a000020012002410110722001200041056a412010722002200041e8006a28020036020020012002410410722002200041ec006a28020036020020012002410410722001200041256a412010722001200041c5006a412010720c020b200241063a000020012002410110722002200041086a28020036020020012002410410720c010b200241143a00002001200241011072200041046a2d0000220341024b0d0002400240024020030e03000102000b200241003a000020012002410110720240200041086a2d000022034104460d00200241013a000020012002410110720240024002400240024020030e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a000020012002410110722002200041096a2d00003a0000200120024101107220022000410a6a2d00003a00000b20012002410110720c030b200241003a000020012002410110720c020b200241013a000020012002410110722001200041056a412010720c010b200241023a000020012002410110722002200041056a2d00003a000020012002410110720b200241106a24000f0b1039000bcf0a01027f230041106b220224000240024020002d0000220341064b0d00024002400240024002400240024020030e0700010203040506000b200241003a000c20012002410c6a410110722001200041016a412010722002200041c4006a28020036020c20012002410c6a41041072412010272203450d07200341186a200041396a290000370000200341106a200041316a290000370000200341086a200041296a2900003700002003200041216a2900003700002001200341201072200310292002200041c8006a28020036020c20012002410c6a410410720c060b200241013a000c20012002410c6a410110722001200041016a41201072412010272203450d06200341186a200041396a290000370000200341106a200041316a290000370000200341086a200041296a2900003700002003200041216a2900003700002001200341201072200310292002200041c1006a2d00003a000c20012002410c6a410110722002200041c4006a28020036020c20012002410c6a410410722002200041c8006a28020036020c20012002410c6a410410720c050b200241023a000c20012002410c6a41011072412010272203450d0520032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310290c040b200241033a000c20012002410c6a41011072412010272203450d0420032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310290c030b200241043a000c20012002410c6a41011072412010272203450d0320032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a290000370000200120034120107220031029024020002d00244104460d00200241013a000c20012002410c6a410110720240024002400240024020002d00240e0400010203000b200241003a000c2002410c6a21000c030b200241013a000c2002410c6a21000c020b200241023a000c2002410c6a21000c010b200241033a000c20012002410c6a410110722002200041256a2d00003a000c20012002410c6a410110722002200041266a2d00003a000c2002410c6a21000b20012000410110720c030b200241003a000c20012002410c6a410110720c020b200241053a000c20012002410c6a41011072412010272203450d0220032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a290000370000200120034120107220031029024020002d00244104460d00200241013a000c20012002410c6a410110720240024002400240024020002d00240e0400010203000b200241003a000c2002410c6a21000c030b200241013a000c2002410c6a21000c020b200241023a000c2002410c6a21000c010b200241033a000c20012002410c6a410110722002200041256a2d00003a000c20012002410c6a410110722002200041266a2d00003a000c2002410c6a21000b20012000410110720c020b200241003a000c20012002410c6a410110720c010b200241063a000c20012002410c6a41011072412010272203450d0120032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201072200310292002200041246a28020036020c20012002410c6a410410722002200041286a28020036020c20012002410c6a410410720b200241106a24000f0b1039000b4d01017f230041206b22002400200041146a41013602002000420137020420004198e3ca003602002000410436021c200041cce3ca003602182000200041186a36021020004180a6cc001040000bfa0202017f027e230041206b2202240042808bd6ed00210302400240024002400240024020012d00000e06000102030504000b200241146a41013602002002420137020420024198e3ca003602002002410436021c200241cce3ca003602182002200241186a36021020024180a6cc001040000b200141306a35020042c0de810a7e2001412c6a35020042b0db067e7c42809591c7397c21030c030b2002200141046a28020010c301427f200141086a35020042a01f7e42808ece1c7c220320022903007c220420042003541b21030c020b0240200141046a28020041014b0d002002200141086a28020010c301427f200135020c42b8177e42c0c694307c220320022903007c220420042003541b21030c020b200135020c42f02e7e4280c2e9a3027c21030c010b427f427f200141286a35020042c03e7e42c0dfb8ba017c2203200141306a2903007c220420042003541b220342c0dcae177c220420042003541b21030b200041013b010820002003370300200241206a24000b9e0303077f017e017f230041106b220224000240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a36020020060d010b200041003602040c010b20042d0003210620012003417c6a3602042001200441046a360200200241086a200110c801024020022802080d002001280204200228020c2204490d002004417f4c0d02024002400240024020040d0042002109410121030c010b2004102d2203450d0120012802042004490d0220032001280200200410e4071a2001280204220a2004490d062001200a20046b3602042001200128020020046a3602002004ad21090b2003450d02200020092004ad4220868437020820002003360204200020074108742005722008411074722006411874723602000c030b1039000b200310290b200041003602040b200241106a24000f0b1038000b2004200a41ccafc000104c000bff0401097f230041106b22022400024002400240024020002802082203410c6c41046a2204417f4c0d00200028020021050240024020040d0041012100410021040c010b200410272200450d020b20024100360208200220003602002002200436020420032002107102402003450d0020052003410c6c6a2106034020052802002103200528020822042002107102402004450d002003200441246c6a2107200228020421002002280208210403402003280200210802400240200020046b4104490d00200228020021092000210a0c010b200441046a220a2004490d0720004101742209200a2009200a4b1b220a4100480d070240024020000d000240200a0d00410121090c020b200a102722090d010c0a0b200228020021092000200a460d0020092000200a102b2209450d090b2002200a360204200220093602000b200920046a20083600002002200441046a220836020802400240200a20086b4120490d00200441246a2104200a21000c010b200841206a22042008490d07200a41017422002004200020044b1b22004100480d0702400240200a0d00024020000d00410121090c020b200010272209450d0a0c010b200a2000460d002009200a2000102b2209450d090b20022000360204200220093602000b200920086a220a200341046a290000370000200a41186a2003411c6a290000370000200a41106a200341146a290000370000200a41086a2003410c6a29000037000020022004360208200341246a22032007470d000b0b2005410c6a22052006470d000b0b200228020421042001290200200235020842208620022802002203ad84100302402004450d00200310290b200241106a24000f0b1038000b1039000b1032000b1030000bb70204027f017e027f037e230041106b220224000240024020012802082203ad42287e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510272206450d020b20024100360208200220063602002002200541286e36020420024100200310a3012002280208210502402003450d00200341286c21062002280200200541286c6a21030340200141086a2903002104200141106a2903002107200141186a290300210820012903002109200341206a200141206a290300370300200341186a2008370300200341106a2007370300200341086a200437030020032009370300200341286a2103200541016a2105200141286a2101200641586a22060d000b0b20002002290300370200200041086a2005360200200241106a24000f0b1038000b1039000bab0201057f230041206b22022400024002402001280208220341ffffffff00712003470d0020034104742204417f4c0d00200128020021014104210502402004450d00200410272205450d020b200241003602082002200536020020022004410476360204200241002003109c012002280208210502402003450d0020034104742106200228020020054104746a21030340410221040240024002402001410c6a2d00004103710e03000102000b410021040c010b410121040b200241106a200110f10520032002290310370200200220043a001c200341086a200241106a41086a290300370200200541016a2105200341106a2103200141106a2101200641706a22060d000b0b20002002290300370200200041086a2005360200200241206a24000f0b1038000b1039000bc80101047f02400240024020012802082202417f4c0d00200128020021030240024020020d0041002101410121040c010b200210272204450d02200221010b0240024020012002490d00200121050c010b02400240200141017422052002200520024b1b22054100480d00024020010d002005102722040d030c060b20012005470d01200121050c020b1032000b200420012005102b2204450d030b20042003200210e40721012000200236020820002005360204200020013602000f0b1038000b1039000b1030000bfe0304027f017e067f077e230041c0006b220224000240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510272206450d020b20024100360208200220063602002002200541d0006e36020420024100200310ac012002280208210702402003450d002001200341d0006c6a21082002280200200741d0006c6a2105200341047441706a41047621090340200241206a41086a2203200141086a290300370300200241206a41106a2206200141106a290300370300200241206a41186a220a200141186a29030037030020022001290300370320200141206a2903002104200141286a290300210b200141306a290300210c200141386a290300210d200241106a200141c0006a10ee02200a290300210e2006290300210f2003290300211020022903202111200541386a200d370300200541306a200c370300200541286a200b370300200541206a2004370300200541086a201037030020052011370300200541106a200f370300200541186a200e370300200541c0006a2002290310370300200541c8006a200241106a41086a280200360200200541d0006a2105200141d0006a22012008470d000b200720096a41016a21070b20002002290300370200200041086a2007360200200241c0006a24000f0b1038000b1039000b920203027f017e037f230041206b220224000240024020012802082203ad420c7e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410421060c010b200510272206450d020b200241003602082002200636020020022005410c6e360204200241002003109d012002280208210702402003450d002003410c6c210620022802002007410c6c6a21052003410274417c6a41027621030340200241106a200110f105200541086a200241106a41086a280200360200200520022903103702002005410c6a21052001410c6a2101200641746a22060d000b200720036a41016a21070b20002002290300370200200041086a2007360200200241206a24000f0b1038000b1039000bcf0504037f017e087f047e23004180016b220224002002200110c80102400240024002402002280200450d00200041003602000c010b20022802042203200128020441306e2204200420034b1bad42307e2205422088a70d012005a72204417f4c0d010240024020040d00410821060c010b200410272206450d030b4100210720024100360210200220063602082002200441306e36020c0240024002402003450d0041002108034041002104200241003a0078200841016a210820012802042109417f210a034020092004460d03200241d8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0078200a417f6a210a200c2104200c4120470d000b200241386a41186a2204200241d8006a41186a290300370300200241386a41106a220a200241d8006a41106a290300370300200241386a41086a220d200241d8006a41086a290300370300200220022903583703382009200c6b220c4110490d03200b41096a2900002105200b290001210e2001200c41706a3602042001200b41116a360200200241186a41086a220c200d290300370300200241186a41106a2209200a290300370300200241186a41186a220a20042903003703002002200229033837031802402007200228020c470d00200241086a2007410110900120022802082106200228021021070b2006200741306c6a22042002290318370300200c290300210f20092903002110200a29030021112004200e370320200441286a2005370300200441186a2011370300200441106a2010370300200441086a200f3703002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c020b200441ff0171450d00200241003a00780b20004100360200200228020c2204450d00200441306c450d00200610290b20024180016a24000f0b1038000b1039000bd30201077f230041206b22022400200241086a200110c80102400240024002402002280208450d00200041003602000c010b200228020c220320012802044102762204200420034b1b22054102742204417f4c0d010240024020050d00410421060c010b200410272206450d030b41002104200241003602182002200536021420022006360210024002402003450d000340200128020422054104490d0220012802002207280000210820012005417c6a3602042001200741046a360200024020042002280214470d00200241106a2004410110980120022802102106200228021821040b200620044102746a20083602002002200441016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b20004100360200200228021441ffffffff0371450d00200610290b200241206a24000f0b1038000b1039000bfe0503097f017e017f230041306b22022400200241086a200110c80102400240024002402002280208450d00200041003602000c010b41042103200228020c220420012802044104762205200520044b1b22064104742205417f4c0d0202402006450d00200510272203450d020b41002105200241003602182002200636021420022003360210024002402004450d00034002400240200128020422060d00410321070c010b200128020022072d0000210820012006417f6a3602042001200741016a3602000240200841024d0d00410321070c010b2002200110c80102402002280200450d00410321070c010b02402001280204200228020422064f0d00410321070c010b2006417f4c0d06024002400240024020060d00410021094101210a0c010b2006102d220a450d0820012802042006490d02200a2001280200200610e4071a200128020422072006490d012001200720066b3602042001200128020020066a360200200621090b41032107200a450d022006ad4220862009ad84210b2002412a6a41026a2002412d6a41026a2d00003a0000200220022f002d3b012a200a210c200821070c020b2006200741ccafc000104c000b200a1029410321070b200241266a41026a22062002412a6a41026a2d00003a0000200220022f012a3b012620074103460d02200241226a41026a220820062d00003a0000200220022f01263b0122024020052002280214470d00200241106a20054101109c0120022802102103200228021821050b200320054104746a220620073a000c2006200b3702042006200c360200200620022f01223b000d2006410f6a20082d00003a00002002200541016a22053602182004417f6a22040d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b2000410036020002402005450d00200541047421062003210503400240200541046a280200450d00200528020010290b200541106a2105200641706a22060d000b0b200228021441ffffffff0071450d00200310290b200241306a24000f0b1039000b1038000bfa0101067f23004180016b220224002001410c6a2802002103200141086a280200210420012802002205210602402005410471450d0020012005410872220636020020040d00200141086a4281808080a0013702000b2001200641047236020020002802002100410021060340200220066a41ff006a2000410f712207413072200741d7006a2007410a491b3a00002006417f6a2106200041047622000d000b024020064180016a2200418101490d00200041800141a88ac000104c000b200141b88ac0004102200220066a4180016a410020066b104921062001200336020c200141086a20043602002001200536020020024180016a240020060bb10201017f230041a0016b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d00200041003602400c010b200328020c21022003200341106a28020036027c20032001360278200341186a200341f8006a10c1020240024020032802580d00200341003602880120034201370380012003410d360294012003200336029001200320034180016a36029c012003412c6a41013602002003420137021c200341f4eaca00360218200320034190016a3602282003419c016a41a8a3c800200341186a10371a2003350288014220862003350280018410080240200328028401450d0020032802800110290b200041003602400c010b2000200341186a41e00010e4071a0b2002450d00200110290b200341a0016a24000bf707040c7f017e047f037e23004190016b220224000240024002400240200141086a220328020022042001410c6a2802002205460d002001280210220628020021072006280208220841014b210903402003200441206a220a360200200241f0006a41186a200441186a290000370300200241f0006a41106a200441106a290000370300200241f0006a41086a200441086a29000037030020022004290000370370410021040240024020090d0020080e020401040b2008210b0340200b410176220c20046a220d20042007200d4105746a200241f0006a412010e7074101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241f0006a412010e7070d02200a2104200a2005470d000b0b2000410036020820004201370200200128020441ffffff3f71450d01200128020010290c010b200241d0006a41086a2204200241f0006a41086a290300370300200241d0006a41106a220b200241f0006a41106a290300370300200241d0006a41186a220c200241f0006a41186a29030037030020022002290370220e3703102002200e37035041201027220f450d01200f2002290350370000200f41186a200c290300370000200f41106a200b290300370000200f41086a200429030037000020024281808080103702042002200f36020020012802042110200128020021110240200a2005460d00410121120340200628020821032006280200210702400340200241f0006a41186a2208200a41186a290000370300200241f0006a41106a2209200a41106a290000370300200241f0006a41086a2201200a41086a2900003703002002200a290000370370200a41206a210a4100210402400240200341014b0d0020030e020301030b2003210b0340200b410176220c20046a220d20042007200d4105746a200241f0006a412010e7074101481b2104200b200c6b220b41014b0d000b0b200720044105746a200241f0006a412010e7070d01200a2005470d000c030b0b200241d0006a41086a2001290300220e370300200241d0006a41106a20092903002213370300200241d0006a41186a20082903002214370300200220022903702215370350200241106a41186a220b2014370300200241106a41106a220c2013370300200241106a41086a220d200e37030020022015370310024020122002280204470d00200220124101109e012002280200210f0b200f20124105746a22042002290310370000200441186a200b290300370000200441106a200c290300370000200441086a200d2903003700002002201241016a2212360208200a2005470d000b0b0240201041ffffff3f71450d00201110290b20002002290300370200200041086a200241086a2802003602000b20024190016a24000f0b1039000baa0704057f017e0a7f027e23004180016b22032400200341306a2001200228020c220411020002400240024002402003280230450d00200341d8006a41106a200341306a41106a290300370300200341d8006a41086a200341306a41086a290300370300200341d8006a41186a200341306a41186a290300370300200341d8006a41206a200341306a41206a280200360200200341106a41086a200341e4006a290200370300200341106a41106a200341ec006a290200370300200341106a41186a200341f4006a290200370300200320032903303703582003200329025c370310200341d8006a200120022802102205110200417f2003280258220641016a220720072006491bad42287e2208422088a70d022008a72206417f4c0d02200610272209450d032009200329031037030020094201370320200941186a200341106a41186a220a290300370300200941106a200341106a41106a220b290300370300200941086a200341106a41086a220c29030037030020034101360208200320093602002003200641286e2207360204200341306a2001200411020002402003280230450d00200341d8006a41047221064102210d41c800210e0340200341d8006a41206a200341306a41206a280200360200200341d8006a41186a220f200341306a41186a290300370300200341d8006a41106a2210200341306a41106a290300370300200341d8006a41086a2211200341306a41086a29030037030020032003290330370358200c200641086a290200370300200b200641106a290200370300200a200641186a29020037030020032006290200370310200f200a2903003703002010200b2903003703002011200c290300370300200320032903103703580240200d417f6a2007470d00200341306a2001200511020020032007417f2003280230221241016a220920092012491b10a301200328020021090b2009200e6a221241606a220720032903583703002011290300210820102903002113200f290300211420124201370300200741186a2014370300200741106a2013370300200741086a20083703002003200d360208200341306a200120041102002003280230450d01200e41286a210e200d41016a210d200328020421070c000b0b2001200228020011030002402002280204450d00200110290b20002003290300370200200041086a200341086a2802003602000c010b2000410036020820004208370200200120022802001103002002280204450d00200110290b20034180016a24000f0b1038000b1039000bf80202027f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022010d00200041003602100c010b200328021421042003200341106a41086a28020022023602242003200136022002400240024020024110490d002003200241706a3602242003200141106a360220200141086a290000210520012900002106200341c8006a200341206a109602200328024822020d010b20034100360230200342013703282003410d36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341f4eaca003602482003200341386a360258200341c4006a41a8a3c800200341c8006a10371a200335023042208620033502288410080240200328022c450d00200328022810290b200041003602100c010b200329024c2107200020053703082000200637030020002007370214200020023602100b2004450d00200110290b200341e0006a24000b5502017f017e230041306b22012400200141086a10cf0220012903082102200141286a2001290310370300200142013703182001427f200220007c220020002002541b370320200141206a10d002200141306a24000bf10905047f017e0c7f027e037f230041e0016b220224002002412036021c20022001360218200241206a2001ad42808080808004841007108b0202400240200228022022030d00200041003602000c010b200228022421042002200241286a28020036023420022003360230200241106a200241306a10c8010240024020022802100d00024002400240200228021422052002280234410c6e2201200120054b1bad420c7e2206422088a70d002006a72201417f4c0d000240024020010d00410421070c010b200110272207450d020b200241003602402002200736023820022001410c6e36023c02402005450d0041002108410021090340200241086a200241306a10c80120022802080d04200228020c220a2002280234220b41246e22012001200a4b1bad42247e2206422088a70d022006a72201417f4c0d020240024020010d004104210c0c010b20011027220c450d040b200241003602502002200c3602482002200141246e36024c02400240200a450d004100210d4100210e0240024002400340200b220f4104490d02200e41016a210e20022002280230220b41046a360230200b280000211041002101200241003a00d801200f417c6a2111034020112001460d02200241b8016a20016a200b20016a221241046a2d00003a00002002201241056a3602302002200141016a22123a00d8012012210120124120470d000b200241f8006a41086a200241b8016a41086a2903002206370300200241f8006a41106a200241b8016a41106a2903002213370300200241f8006a41186a200241b8016a41186a2903002214370300200241d8006a41086a22152006370300200241d8006a41106a22162013370300200241d8006a41186a22172014370300200220022903b8012206370378200220063703580240200d200228024c470d00200241c8006a200d41011096012002280248210c2002280250210d0b201120126b210b200c200d41246c6a22012010360200200120022903583702042001410c6a2015290300370200200141146a20162903003702002001411c6a20172903003702002002200d41016a220d360250200e200a470d000b2002200f20126b417c6a3602340c040b20024100360234200141ff0171450d01200241003a00d8010c010b2002200f3602340b200228024c2201450d06200141246c450d06200c10290c060b200c450d050b200229024c2106200941016a210902402008200228023c470d00200241386a20084101109d0120022802382107200228024021080b20072008410c6c6a220120063702042001200c3602002002200841016a220836024020092005470d000b0b2007450d032000200229023c370204200020073602000c040b1038000b1039000b02402008450d002008410c6c21122007210103400240200141046a280200220b450d00200b41246c450d00200128020010290b2001410c6a2101201241746a22120d000b0b200228023c2201450d002001410c6c450d00200710290b200241003602a00120024201370398012002410d36027c2002200241186a360278200220024198016a360258200241cc016a4101360200200242013702bc01200241f4eaca003602b8012002200241f8006a3602c801200241d8006a41a8a3c800200241b8016a10371a20023502a0014220862002350298018410080240200228029c01450d0020022802980110290b200041003602000b2004450d00200310290b200241e0016a24000ba60305017f017e037f017e017f230041d0006b2202240042002103200241206a41186a4200370300200241206a41106a22044200370300200241206a41086a220542003703002002420037032041b3e6ca00ad4280808080e000841001220629000021072005200641086a290000370300200220073703202006102941c0a4cb00ad4280808080e00184100122062900002107200241c0006a41086a2208200641086a2900003703002002200737034020061029200420022903402207370300200241086a2005290300370300200241106a2007370300200241186a200829030037030020022002290320370300024002400240200041024d0d0041012105410121060c010b024002400240024020000e03000102000b410110272205450d0441002106200541003a0000200541014105102b2205450d04200520013600014280808080d00021030c030b410110272205450d03200541013a00000c010b410110272205450d02200541023a00000b4100210642808080801021030b2002ad428080808080048420032005ad841003024020060d00200510290b200241d0006a24000f0b1030000b8b0101017f41d096cc00ad4280808080d001841008024002400240024020002d00000e0400010203000b200041046a29020010080f0b41c296cc00ad4280808080e0018410080f0b41b896cc00ad4280808080a0018410080f0b20003100011016200041026a31000010160240200041046a2802002201450d00200041086a3502004220862001ad8410080b0be40101027f230041106b22022400200220002802003602082001200241086a410410722002200028020436020c20012002410c6a410410720240412010272203450d0020032000290008370000200341186a200041206a290000370000200341106a200041186a290000370000200341086a200041106a290000370000200120034120107220031029412010272203450d0020032000290028370000200341186a200041c0006a290000370000200341106a200041386a290000370000200341086a200041306a290000370000200120034120107220031029200241106a24000f0b1039000bcb0202057f037e2001280200210202400240412010272203450d0020032002290000370000200341186a2204200241186a290000370000200341106a2205200241106a290000370000200341086a2206200241086a290000370000412010272202450d0120022003290000370000200241186a2004290000370000200241106a2005290000370000200241086a200629000037000020031029200128020421012002412041c000102b2203450d0120032001290000370020200341386a200141186a290000370000200341306a200141106a290000370000200341286a200141086a2900003700002003ad4280808080800884101022022900002107200241086a2900002108200241106a2900002109200041186a200241186a290000370000200041106a2009370000200041086a20083700002000200737000020021029200310290f0b1039000b1030000bca0c02097f037e230041d0016b2202240041002103200241386a410010fb0220024198016a20022802382204200228024010cd01200241f8006a41086a2205200241a4016a290200370300200241f8006a41106a2206200241ac016a290200370300200241f8006a41156a2207200241b1016a2900003700002002200229029c013703780240024020022d0098014101460d00200241d8006a41156a4200370000200241d8006a41106a4200370300200241d8006a41086a4200370300200242003703580c010b20022f00990120022d009b01411074722103200241d8006a41156a2007290000370000200241d8006a41106a2006290300370300200241d8006a41086a2005290300370300200220022903783703580b0240200228023c450d00200410290b200241186a41086a200241d8006a41086a2205290300370300200241186a41106a200241d8006a41106a290300370300200241186a41156a200241d8006a41156a29000037000020022002290358370318200241f8006a41156a22064200370000200241f8006a41106a22074200370300200241f8006a41086a220842003703002002420037037841b3e6ca00ad4280808080e00084100122042f00002109200441026a2d0000210a2002200441086a29000037007d200220042900033703782004102941c9e6ca00ad4280808080e0008410012204290000210b2005200441086a2900003703002002200b3703582004102920062005290300220b370000200241b0016a200b3700002002200229035837008501200241a3016a2008290300370000200241ab016a20072903003700002002200a3a009a01200220093b0198012002200229037837009b01200241106a20024198016a412010fc01410021040240024020012903004201520d002001290308220c4200510d012002280214410020022802101b2105417f21042005ad220d200141106a290300220b200b200d541b220d200d200b7d200c827d220b42ffffffff0f560d00200ba721040b20024198016a200410fb02200241086a200228029801220120022802a0014180a6cc004100410010c701200228020821050240200228029c01450d00200110290b410121010240024020054101470d00200241c0016a200410fb0220024198016a20022802c001220120022802c80110cd01200241f8006a41086a2205200241a4016a290200370300200241f8006a41106a2206200241ac016a290200370300200241f8006a41156a2207200241b1016a2900003700002002200229029c013703780240024020022d0098014101460d00200241d8006a41156a4200370000200241d8006a41106a4200370300200241d8006a41086a420037030020024200370358410021040c010b20022f00990120022d009b01411074722104200241d8006a41156a2007290000370000200241d8006a41106a2006290300370300200241d8006a41086a2005290300370300200220022903783703580b024020022802c401450d00200110290b200241386a41156a2201200241d8006a41156a290000370000200241386a41106a2205200241d8006a41106a29030037030020024198016a41086a2206200241d8006a41086a29030037030020024198016a41106a2207200529030037030020024198016a41156a22052001290000370000200241f8006a41086a2201200241186a41086a290300370300200241f8006a41106a2208200241186a41106a290300370300200241f8006a41156a2209200241186a41156a2900003700002002200229035837039801200220022903183703782000410e6a20034110763a00002000410c6a20033b0100200041046a42003702002000412e6a20044110763a00002000412c6a20043b01002000410f6a2002290378370000200041176a20012903003700002000411f6a2008290300370000200041246a20092900003700002000412f6a200229039801370000200041376a20062903003700002000413f6a2007290300370000200041c4006a2005290000370000410021010c010b20024198016a41156a200241386a41156a29000037000020024198016a41106a200241386a41106a29000037030020024198016a41086a200241386a41086a2900003703002002200229003837039801200041036a41003a0000200041800a3b00010b200020013a0000200241d0016a24000f0b41a094cc00411941bc94cc001033000b850605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d02200141b88ac0004102200241206a20006a41800120006b104921000c060b41272100200241186a21060340200241106a200520044290ce00420010e0072002200229031022072006290300220842f0b17f427f10d507200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441fa85c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441fa85c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d01200141b88ac0004102200241206a20006a41800120006b104921000c040b200041800141a88ac000104c000b200041800141a88ac000104c000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441fa85c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441fa85c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b20014180a6cc004100200241206a20006a412720006b104921000b200241a0016a240020000bc30202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042001104621000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141b88ac0004102200220006a4180016a410020006b104921000b20024180016a240020000f0b200341800141a88ac000104c000b200341800141a88ac000104c000b820101017f200120021071024002402001450d00200141057421030340412010272201450d0220012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200220014120107220011029200041206a2100200341606a22030d000b0b0f0b1039000bee19021e7f037e230041e0036b22032400200228020821042002280200210520022802042106200341186a2207200141206a290000370300200341106a2208200141186a290000370300200341086a2209200141106a290000370300200320012900083703002006410174210a2003410772210b200341c8016a41186a210c200341c8016a410c6a210d200341c8016a41206a210e2001280204210f200128020021102006211120052112200421134100211441002115024002400240024002400240024002400240024002400240024002400340200420156a2204410176210102400240024002400240024002400240024002402004410171450d0020112001490d02200120114f0d04200341013a00d001200320123602c801200320013602cc012003201220016a2d000041f001713a00d1010c010b20112001490d02200341003a00d001200320013602cc01200320123602c8010b200341b8036a20102003200341c8016a200f28020c11040002400240024020032802b80322160d00200341c8016a41086a2213200341086a290300370300200341c8016a41106a2206200341106a290300370300200341c8016a41186a2204200341186a290300370300200320032903003703c8014130102722010d010c190b20032802bc032117200341c8016a201620032802c00310870420032d00c8014101460d15201441016a21140c010b200120032903c80137000120012003290020370021200120144100473a0000200141096a2013290300370000200141116a2006290300370000200141196a2004290300370000200141286a200341276a29000037000020004101360200200020013602040c160b034020032802e401211820032802e001211920032802dc01211a20032802d801211120032802d401210420032802d001211220032802cc012101200341206a200e41a80110e4071a200328029403211b200328029003211c024002400240024020010e051710000102170b410021010240200441017420116b221d200a20136b221b201b201d4b1b221e450d000340201320016a221b410176221c20064f0d09201120016a221f410176222020044f0d0a2005201c6a2d0000221c410f71201c41f00171410476201b4101711b201220206a2d0000221b410f71201b410476201f4101711b470d01200141016a2201201e490d000b0b02402001201d460d00200042003702002017450d1a0c190b201d21010c020b200320183602dc01200320193602d8012003201a3602d401200320113602d001200320043602cc01200320123602c801200c200341206a41a80110e4071a02400240200a2013460d00201341017622012006490d012001200641b4a0cc001036000b02400240201c0d00410021010c010b201b417f4c0d1402400240201b0d0041002113410121010c010b201b10272201450d16201b21130b024002402013201b490d00201321060c010b20134101742206201b2006201b4b1b22064100480d17024020130d00200610272201450d1d0c010b20132006460d00200120132006102b2201450d1c0b2001201c201b10e4071a201bad4220862006ad8421210b20002001360204200041086a20213702000c0e0b0240200341c8016a200520016a2d00002201410f71200141047620134101711b410c6c6a2201280200221a4102470d00200041003602040c0e0b20012802042119200141086a28020021184101211d410121010c010b20032802a003211e200328029c03211d2003280298032101200320183602d001200320193602cc012003201a3602c801200d200341206a41a80110e4071a20032001360284032003201b360280032003201c3602fc02410021010240200441017420116b2218200a20136b221a201a20184b1b2219450d000340201320016a221b410176221c20064f0d09201120016a221f410176222020044f0d0a2005201c6a2d0000221c410f71201c41f00171410476201b4101711b201220206a2d0000221b410f71201b410476201f4101711b470d01200141016a22012019490d000b0b0240024002400240024020012018470d00201a2018470d01201d0d02410021010c030b200041003602040c0f0b201820136a220141017622042006490d022004200641b4a0cc001036000b201e417f4c0d1302400240201e0d0041002113410121010c010b201e10272201450d15201e21130b024002402013201e490d00201321060c010b20134101742206201e2006201e4b1b22064100480d16024020130d00200610272201450d1c0c010b20132006460d00200120132006102b2201450d1b0b2001201d201e10e4071a201ead4220862006ad8421210b20002001360204200041086a20213702000c0c0b0240200341c8016a200520046a2d00002204410f71200441047620014101711b410c6c6a2204280200221a4102470d00200041003602040c0c0b201841016a211d201841016a210120042802042119200441086a28020021180b200120156a21152013201d6a21130240201a450d00200341c8016a2019201810870420032d00c8014101460d150c010b0b0240024020184120460d00200341c8016a41086a22122009290300370300200341c8016a41106a221b2008290300370300200c2007290300370300200320032903003703c8012018417f4c0d110240024020180d0041002101410121110c010b201810272211450d13201821010b0240024020012018490d00200121040c010b200141017422042018200420184b1b22044100480d14024020010d00200410272211450d1a0c010b20012004460d00201120012004102b2211450d190b20112019201810e4072111413010272201450d18200141043a0000200120032903c801370001200120032f00aa033b00212001201836002c2001200436002820012011360024200141096a2012290300370000200141116a201b290300370000200141196a200c290300370000200141236a200341aa036a41026a2d00003a0000410121040c010b201941026a2d000021042019410f6a2900002121201941176a29000021222019280003210120192f0000211120192900072123200c2019411f6a2d00003a0000200341c8016a41106a2022370300200341c8016a41086a2021370300200341aa036a41026a20043a0000200320233703c801200320113b01aa03410021040b200341dc036a41026a2211200341aa036a41026a2d00003a0000200341b8036a41086a2212200341c8016a41086a290300370300200341b8036a41106a221b200341c8016a41106a290300370300200341b8036a41186a221c200c280200360200200320032f01aa033b01dc03200320032903c8013703b803024020040d00200b20032903b803370000200b41086a2012290300370000200b41106a201b290300370000200b41186a201c2d00003a0000200320032f01dc033b010020032001360003200320112d00003a00022017450d08201610290c080b200041013602002000200136020420170d140c150b2001201141f4a0cc00104b000b200120114184a1cc00104b000b200120114194a1cc001036000b201c200641b4a0cc001036000b2020200441b4a0cc001036000b201c200641b4a0cc001036000b2020200441b4a0cc001036000b2002280208210420022802042111200228020021120c000b0b200041003602000c020b200041003602000c010b4100211e0240200441017420116b200a20136b2218470d004100211e41002101024002402018450d00410021010340201120016a221b410176221c20044f0d05201320016a221f410176222020064f0d062012201c6a2d0000221c410f71201c41f00171410476201b4101711b200520206a2d0000221b410f71201b410476201f4101711b470d012018200141016a2201470d000c020b0b20012018470d010b2019417f4c0d040240024020190d00410021014101211e0c010b20191027221e450d06201921010b0240024020012019490d00200121130c010b200141017422132019201320194b1b22134100480d07024020010d0020131027221e450d0d0c010b20012013460d00201e20012013102b221e450d0c0b201e201a201910e4071a2019ad4220862013ad8421210b2000201e36020420004100360200200041086a20213702000b02402017450d00201610290b200341e0036a24000f0b201c200441b4a0cc001036000b2020200641b4a0cc001036000b1038000b1039000b1032000b2000420037020020170d010c020b20032d00c9012113200341b8036a41086a2206200341086a290300370300200341b8036a41106a2204200341106a290300370300200341b8036a41186a2211200341186a290300370300200320032903003703b803413010272201450d02200141033a0000200120032903b803370001200120133a0021200120032901aa03370122200141096a2006290300370000200141116a2004290300370000200141196a2011290300370000200141286a200341b0036a29010037010020004101360200200020013602042017450d010b201610290b200341e0036a24000f0b1030000b02000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a2900003703002002200437030820031029418984cc00ad4280808080e00284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a29000037030020022004370308200310294187bbc700ad4280808080a00284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941e883cc00ad4280808080a00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bb10a03067f017e017f230041f0006b22032400200341106a200010cb04200341c0006a200328021022042003280218220510cc04200341e0006a41086a2206200341c0006a41086a2802003602002003200329034037036002400240200328024c22074102470d0041002108200341003602282003420437032041002106410021070c010b200341306a2003280250360200200341206a41086a2006280200220636020020032003290360370320200328022421080b2003200736022c024020062008470d00200341206a200841011098010b2003280220220741046a2007200641027410e5071a200720013602002003200641016a360228200341c8006a2003290328370300200341c0006a41106a200341206a41106a2802003602002003200329032037034002400240200328024c4102470d002005ad4220862004ad8410040c010b2003200536026420032004360260200341c0006a200341e0006a10cf04200328024441ffffffff0371450d00200328024010290b02402003280214450d00200410290b2003200136026420032000360260200228020421072002280200210620022802082104200341c0006a200341e0006a10cd0420032802402102200320032802483602242003200236022020062004200341206a10a10402402003280244450d00200210290b02402007450d00200610290b200341c0006a41186a4200370300200341c0006a41106a22074200370300200341c0006a41086a220242003703002003420037034041cd87cc00ad4280808080a001841001220629000021092002200641086a290000370300200320093703402006102941b8bcc700ad4280808080f00184100122062900002109200341e0006a41086a2204200641086a2900003703002003200937036020061029200720032903602209370300200341206a41086a2002290300370300200341206a41106a2009370300200341206a41186a200429030037030020032003290340370320200341106a200341206a10ca04024002400240024002400240200328021022080d00410021022003410036020820034204370300410021050c010b20032003290214220937020420032008360200410021020240024002402009422088a7220541014b0d0020050e020201020b20052106034020022006410176220720026a2204200820044103746a41046a28020020014b1b2102200620076b220641014b0d000b0b0240200820024103746a41046a28020022062001460d00200220062001496a21020b200220054b0d030b20052009a7220a470d010b200320054101108d012003280204210a200328020021080b200820024103746a220641086a2006200520026b41037410e5071a20062001360204200620003602002003200541016a2201360208200341c0006a41186a4200370300200341c0006a41106a22074200370300200341c0006a41086a220242003703002003420037034041cd87cc00ad4280808080a001841001220629000021092002200641086a290000370300200320093703402006102941b8bcc700ad4280808080f00184100122062900002109200341e0006a41086a2204200641086a2900003703002003200937036020061029200720032903602209370300200341206a41086a2002290300370300200341206a41106a2009370300200341206a41186a20042903003703002003200329034037032020080d01200341206aad428080808080048410040c020b200220051041000b200341203602442003200341206a36024020082001200341c0006a10f103200a41ffffffff0171450d00200810290b200341f0006a24000be60601067f0240024002400240024020012d0000220341024d0d0041012101410021040c010b02400240024020030e03000102000b410110272205450d03200541013a0000412010272203450d0420032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a29000037000041212104200541014121102b2201450d0320012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310290c020b410110272205450d02200541023a0000412010272203450d0320032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a29000037000041212104200541014121102b2201450d0220012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310290c010b410110272205450d01200541033a0000412010272203450d0220032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a29000037000041212104200541014121102b2201450d0120012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310290b20022802002103410410272205450d0020052003360000412010272203450d0120032002290004370000200341186a22062002411c6a290000370000200341106a2207200241146a290000370000200341086a22082002410c6a290000370000200541044124102b2202450d00200220032900003700042002411c6a2006290000370000200241146a20072900003700002002410c6a20082900003700002003102920044101742203200441246a2206200320064b1b2105024020040d00200510272201450d010c030b20042005460d02200120042005102b22010d020b1030000b1039000b200120046a22032002290000370000200341206a200241206a280000360000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200210292000200636020820002005360204200020013602000bfc0403027f017e057f230041d0006b2202240041f182cc00ad4280808080c00184100122032900002104200241086a41086a200341086a29000037030020022004370308200310294182c5c800ad4280808080800284100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bef0602077f047e230041f0006b22032400024002400240200128020422044108490d000340200128020021052003410136026c20032004410376220636020802400240200641014b0d004100210741012108024020060e020002000b200341346a4101360200200341dc006a41023602002003420237024c200341e4a7c7003602482003410136022c2003200341286a3602582003200341086a3602302003200341ec006a360228200341c8006a4180a6cc001040000b200441016a410771200441786a4178717221072005410120041b2205200441077122044107466a2108200441087221040b2005410120041b2d000021062001200736020420012008360200200128020821050240024020064101200441077174710d00410021040c010b0240200128020c220628020820054d0d0020012802102104200341c8006a41186a2207200628020020054105746a220641186a290000370300200341c8006a41106a2208200641106a290000370300200341c8006a41086a2209200641086a29000037030020032006290000370348024020042802082206200441046a280200470d00200420064101109e01200428020821060b200428020020064105746a22062003290348370000200641186a2007290300370000200641106a2008290300370000200641086a20092903003700002004200428020841016a3602080b4100210402402002280200220628020820054d0d00200341c8006a41086a200628020020054105746a220441086a290000370300200341c8006a41106a200441106a290000370300200341c8006a41186a200441186a29000037030020032004290000370348410121040b200128020821050b2001200541016a360208200341286a41086a200341c8006a41086a290300370300200341286a41106a200341c8006a41106a290300370300200341286a41186a200341c8006a41186a2903003703002003200329034837032820040d022001280204220441084f0d000b0b200041003a00000c010b200341086a41186a200341286a41186a290300220a370300200341086a41106a200341286a41106a290300220b370300200341086a41086a200341286a41086a290300220c37030020032003290328220d370308200041196a200a370000200041116a200b370000200041096a200c3700002000200d370001200041013a00000b200341f0006a24000bfc0403027f017e057f230041d0006b2202240041cd87cc00ad4280808080a00184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f283cc00ad4280808080d00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b940201037f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad841007108b0202400240200228020822010d00410221000c010b200228020c210302400240200241106a280200450d0020012d0000220441014b0d0041002100024020040e020200020b410121000c010b20024100360220200242013703182002410d36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241f4eaca003602382002200241286a360248200241346a41a8a3c800200241386a10371a200235022042208620023502188410080240200228021c450d00200228021810290b410221000b2003450d00200110290b200241d0006a240020000b130020004113360204200041e8bdc7003602000b8b0301037f230041d0006b22032400024002400240024020002d00000e03010200010b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041022104200341306a21050c020b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041002104200341306a21050c010b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041012104200341306a21050b200341216a200541186a290000370000200341196a200541106a290000370000200341116a200541086a290000370000200320043a000820032005290000370009200341306a200341086a2001108c06200041216a200335023842208620032802302205ad8420021017210002402003280234450d00200510290b200341d0006a24004106410220004101461b0b8c0a03047f017e047f23004190016b22022400200241d8006a41186a4200370300200241d8006a41106a22034200370300200241d8006a41086a220442003703002002420037035841b1dcc900ad4280808080f000841001220529000021062004200541086a2900003703002002200637035820051029418886ca00ad4280808080c00184100122052900002106200241f8006a41086a2207200541086a2900003703002002200637037820051029200320022903782206370300200241386a41086a2004290300370300200241386a41106a2006370300200241386a41186a200729030037030020022002290358370338200241106a200241386a412010fc01200241d8006a2002280214410020022802101b2203200010b805200241086a2002280258220420022802604180a6cc004100410010c701200228020821050240200228025c450d00200410290b410121040240024002400240024020054101460d0041c6b7c700ad4280808080800184100122042900002106200241f8006a41086a200441086a290000370300200220063703782004102941e0c9c700ad4280808080e00184100122042900002106200241386a41086a200441086a2900003703002002200637033820041029200220033602282002200241286aad4280808080c00084100222042900003703880120041029200241e4006a22052002412c6a360200200220024188016a41086a220036025c2002200241286a360260200220024188016a360258200241186a200241d8006a1075412010272204450d0120042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020022004ad42808080808004841002220129000037038801200110292005200441206a360200200220043602602002200036025c200220024188016a360258200241286a200241d8006a1075200410292002280220220741206a2200200228023022086a2201417f4c0d02200228022821092002280218210a0240024020010d0041002103410121040c010b200110272204450d02200121030b024002402003410f4d0d00200321050c010b200341017422054110200541104b1b22054100480d04024020030d002005102722040d010c060b20032005460d00200420032005102b2204450d050b20042002290378370000200441086a200241f8006a41086a2903003700000240024020054170714110460d00200521030c010b200541017422034120200341204b1b22034100480d0420052003460d00200420052003102b2204450d050b20042002290338370010200441186a200241386a41086a29030037000002400240200341606a2007490d00200321050c010b2007415f4b0d04200341017422052000200520004b1b22054100480d0420032005460d00200420032005102b2204450d050b200441206a200a200710e4071a02400240200520006b2008490d00200521030c010b20012000490d04200541017422032001200320014b1b22034100480d04024020050d00024020030d00410121040c020b200310272204450d060c010b20052003460d00200420052003102b2204450d050b200420006a2009200810e4071a0240200228022c450d00200910290b0240200228021c450d00200a10290b20022004200110fc01200228020421012002280200210502402003450d00200410290b200141004720054100477121040b20024190016a240020040f0b1039000b1038000b1032000b1030000bae0707017f017e067f017e047f017e027f230041306b220124000240024010222202422088a722030d00410121040c010b2002a721040b2001200336022420012004360220024002400240024002402003450d0020042d0000210520012003417f6a3602242001200441016a360220200541014b0d00024020050e020004000b200141186a200141206a10c80120012802180d0020012802242206200128021c2205490d002005417f4c0d020240024020050d0042002102410121070c010b2005102d2207450d02200720012802202208200510e4071a2001200620056b3602242001200820056a3602202005ad21020b2007450d00200141106a200141206a10c8012005ad4220862002842209a7210a024020012802100d002001280214220b2001280224410c6e22052005200b4b1bad420c7e2202422088a70d032002a72205417f4c0d030240024020050d004104210c0c010b20051027220c450d030b2005410c6ead21020240200b450d000340200141086a200141206a10c80102400240024020012802080d0020012802242206200128020c2205490d002005417f4c0d080240024020050d004100210d410121080c010b2005102d2208450d0820082001280220220d200510e4071a2001200620056b3602242001200d20056a3602202005210d0b2002422088220ea722062002a7470d02024002400240200641016a220f2006490d00200ea74101742210200f200f2010491bad420c7e220e422088a70d00200ea7220f4100480d00024020060d00200f0d024104210c0c050b2006410c6c2206200f460d04024020060d00200f0d024104210c0c050b200c2006200f102b220c450d020c040b1032000b200f1027220c0d020b1030000b02402002422088a72205450d002005410c6c2106200c210503400240200541046a280200450d00200528020010290b2005410c6a2105200641746a22060d000b0b2002a72205450d042005410c6c450d04200c10290c040b2002422088220ea72106200f410c6ead21020b200c2006410c6c6a22062005ad422086200dad8437020420062008360200200e422086200242ffffffff0f83844280808080107c2102200b417f6a220b0d000b0b200c450d002007450d012009422088a721050c050b200a450d00200710290b41e891cc00412e200141286a419893cc00419892cc00103a000b1039000b1038000b410021070b2000200a36020420002007360200200041106a20023702002000410c6a200c360200200041086a200536020002402003450d00200410290b200141306a24000b970403017f017e017f23004190016b22052400200520013602040240200541046a20022004ad4220862003ad8410212206422088a72201450d002006a722072d0000220341014b0d004100210202400240024020030e020100010b41002102200541003a008801200741016a21042001417f6a2101034020012002460d02200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a2903003700002007102920054190016a24000f0b200241ff0171450d00200541003a0088010b41e891cc00412e200541c8006a419893cc00419892cc00103a000bac0501077f23004190016b2202240002400240024002402000410c6a2802002203417f4c0d0020002802042104200028020021050240024020030d0041002106410121070c010b200310272207450d02200321060b0240024020062003490d00200621080c010b200641017422082003200820034b1b22084100480d03024020060d002008102722070d010c050b20062008460d00200720062008102b2207450d040b20072004200310e4072106200241f8006a200041106a10f305200241106a410c6a2003360200200241106a41086a22032008360200200241206a2002290378370300200241286a2208200241f8006a41086a280200360200200241106a41306a200041306a290200370300200241106a41386a200041386a290200370300200241106a41c0006a200041c0006a290200370300200241106a41c8006a200041c8006a290200370300200241106a41d0006a200041d0006a290200370300200241106a41d8006a200041d8006a290200370300200241106a41e0006a200041e0006a2902003703002002200636021420022005360210200220002802243602342002200029021c37022c200220002902283703382002410c6a411d360200200241acbbc700360200200241043602042001411c6a28020021002002200241106a360208200128021821062002418c016a41023602002002420237027c200241d0cfc700360278200220023602880120062000200241f8006a1037210602402003280200450d00200228021410290b024020082802002203450d00200228022021002003410c6c210303400240200041046a280200450d00200028020010290b2000410c6a2100200341746a22030d000b0b0240200241246a2802002200450d002000410c6c450d00200228022010290b20024190016a240020060f0b1038000b1039000b1032000b1030000b980201027f230041206b22022400200220012802184180a6cc0041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041286a36021c200241086a200241186a41e0cfc70010622002411c6a41f0cfc70010621a20022d0010210002400240200228020c22030d00200021010c010b0240200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d0041012101200028021841a79fc00041012000411c6a28020028020c1100000d010b20022802082201280218418ee5c80041012001411c6a28020028020c11000021010b200220013a00100b200241206a2400200141ff01714100470b130020004104360204200041c8d0c7003602000b340020004188dac70036020420004100360200200041146a4101360200200041106a418cdac700360200200041086a42043702000b130020004103360204200041a0dbc7003602000b3400200041dfb3c70036020420004100360200200041146a4101360200200041106a41fcecc700360200200041086a42073702000b130020004101360204200041a4eec7003602000b130020004101360204200041d0efc7003602000b3400200041c6b7c70036020420004100360200200041146a4104360200200041106a419cf4c700360200200041086a42083702000b2201017f230041106b22022400200241003602002000200210e602200241106a24000b13002000410236020420004180fdc7003602000b3400200041cd87cc0036020420004100360200200041146a410c360200200041106a41d480c800360200200041086a420a3702000b2c01017f02404108102722020d001039000b20024200370000200042888080808001370204200020023602000b2b01017f02404104102722020d001039000b200042848080801037020420002002360200200241003a00000be40101047f230041106b2202240020024100360208200242013703004100200210710240024002400240200228020420022802082203460d00200228020021040c010b200341016a22042003490d01200341017422052004200520044b1b22054100480d010240024020030d0041002103024020050d00410121040c020b2005102722040d010c040b2002280200210420032005460d00200420032005102b2204450d030b20022005360204200220043602000b200420036a41003a0000200041086a200341016a36020020002002290300370200200241106a24000f0b1032000b1030000b8b05010a7f02400240200141086a280200220241036a2203417f4c0d0020012d000021044101210541002106024002402003450d00200310272205450d01200321060b200241017420046a220741ffff03200741ffff03491b220341c0006a41ff0020032007413e2003413e491b2207461b2108200320076b2109410021034101210a02400240034020082107024002400240200a41ff01714102470d00200721080c010b41002108200a410171450d004100210a0c010b2009450d0202402009418002490d00200941817e6a210941ff0121074102210a0c010b2009417f6a21074102210a410021090b024020062003470d00200341016a22062003490d032003410174220b2006200b20064b1b22064100480d03024020030d0041002103024020060d00410121050c020b2006102722050d010c070b20032006460d00200520032006102b2205450d060b200520036a20073a0000200341016a21030c000b0b02402004450d0020012d00012107024020032006470d00200341016a22092003490d022003410174220a2009200a20094b1b22064100480d02024020030d00024020060d00410121050c020b200610272205450d060c010b20032006460d00200520032006102b2205450d050b200520036a2007410f713a0000200341016a21030b2001280204210902400240200620036b2002490d00200621070c010b200320026a22072003490d012006410174220a2007200a20074b1b22074100480d01024020060d00024020070d00410121050c020b200710272205450d050c010b20062007460d00200520062007102b2205450d040b200520036a2009200210e4071a2000200320026a36020820002007360204200020053602000f0b1032000b1039000b1038000b1030000bb70101057f20012802082202410176210320012802042104024002400240024020024101710d0020042003490d02200128020020036a210141002102410021050c010b200420034d0d024101210520012802002202200341016a22066a2101200220036a2d0000410f712102200621030b200020053a000c20002001360204200041003602002000410d6a20023a0000200041086a200420036b3602000f0b2003200441b09fcc00104c000b2003200441c09fcc001036000bd60101017f024002402000280200220141034b0d0002400240024020010e0404000102040b0240200041086a28020041244d0d00200041106a28020010290b200041386a280200450d03200041346a28020010290f0b200041086a28020041244d0d02200041106a28020010290f0b20002802041029200041086a2802002201450d012000410c6a280200450d01200110290c010b0240200041086a28020041244d0d00200041106a28020010290b200041346a2802001029200041386a2802002201450d002000413c6a280200450d00200110290f0b0be12203047f067e037f230041c0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c01020c03040506070c08090a0b0c0d0e0f1011121314151617181900010b200241a0016a200141086a10f8032000411b360200200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c190b200241a0016a200141086a10f90320004100360200200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c180b200241a0016a200141046a10fa0320004101360200200041246a200241c0016a2802003602002000411c6a200241b8016a290300370200200041146a200241b0016a2903003702002000410c6a200241a8016a290300370200200020022903a0013702040c170b20004103360200200041086a200141086a2903003703000c160b02400240024002400240024020012d0004417f6a220341034b0d00200141046a210420030e0401020304010b419cf7ca00412841b8a1cc001033000b200141086a2802002103410121050c030b41022105200241026a200441036a2d00003a0000200241a0016a41086a200141146a290200370300200241b0016a2001411c6a290200370300200241b8016a200141246a2d00003a0000200220042f00013b010020022001410c6a2902003703a001200141086a2802002103200141286a28020021010c020b200141086a2802002103410321050c010b200241026a200441036a2d00003a0000200241a0016a41086a200141146a290200370300200241b0016a2001411c6a290200370300200241b8016a200141246a2d00003a0000200220042f00013b010020022001410c6a2902003703a001200141086a2802002103200141286a2802002101410421050b200020053a0004200020022f01003b000520004104360200200041086a20033602002000410c6a20022903a001370200200041286a2001360200200041076a200241026a2d00003a0000200041146a200241a0016a41086a2903003702002000411c6a200241b0016a290300370200200041246a200241b8016a2802003602000c150b02400240024002400240024002400240200141086a22032d0000417f6a220541034b0d0020050e0401020304010b419cf7ca00412841b8a1cc001033000b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141386a2903002106200141306a2903002107410121010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141c8006a2903002108200141c0006a2903002109200141386a2903002106200141306a2903002107410221010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a0012002200341216a2800003602002002200341246a280000360003200141c8006a3100002108200141c0006a2902002109200141386a2902002106200141306a2902002107200141d8006a290300210a200141d0006a290300210b410321010c030b200241a8016a200341096a290000370300200241b0016a200341116a290000370300200241b8016a200341196a290000370300200220032900013703a001200141386a2903002106200141306a2903002107410421010b0b0b200020022903a0013700092000200228020036002920004105360200200041d8006a200a370300200041d0006a200b370300200041c8006a2008370300200041c0006a2009370300200041386a2006370300200041306a2007370300200041086a20013a00002000412c6a2002280003360000200041116a200241a0016a41086a290300370000200041196a200241b0016a290300370000200041216a200241b8016a2903003700000c140b200241a0016a200141046a10fb03200041063602002000410c6a200241a8016a280200360200200020022903a0013702040c130b200241a0016a200141086a10a302200041086a200241a0016a41900210e4071a200041073602000c120b024002402001280204220c0d00410021030c010b200241a0016a41186a200141286a290000370300200241a0016a41106a200141206a290000370300200241a8016a200141186a290000370300200241a0016a41286a200141386a290000370300200241a0016a41306a200141c0006a290000370300200241a0016a41386a200141c8006a290000370300200241a0016a41c8006a200141d8006a290000370300200241a0016a41d0006a200141e0006a290000370300200241a0016a41d8006a200141e8006a2900003703002002200141106a2900003703a0012002200141306a2900003703c0012002200141d0006a2900003703e001200241a0016a41f8006a20014188016a290000370300200241a0016a41f0006a20014180016a290000370300200241a0016a41e8006a200141f8006a290000370300200241a0016a4198016a200141a8016a290000370300200241a0016a4190016a200141a0016a290000370300200241a0016a4188016a20014198016a2900003703002002200141f0006a29000037038002200220014190016a2900003703a0022001410c6a2802002201417f4c0d130240024020010d0041002105410121030c010b200110272203450d15200121050b0240024020052001490d00200521040c010b200541017422042001200420014b1b22044100480d16024020050d002004102722030d010c180b20052004460d00200320052004102b2203450d170b2003200c200110e4071a2002200241a0016a41a00110e4071a0b200020033602042000410c6a2001360200200041086a2004360200200041106a200241a00110e4071a200041093602000c110b2000410a360200200020012802043602040c100b200241a0016a200141086a10fc03200041086a200241a0016a41980210e4071a2000410b3602000c0f0b200141106a2802002203417f4c0d0f200141086a280200210d2001280204210e0240024020030d00410021054101210c0c010b20031027220c450d11200321050b0240024020052003490d00200521040c010b200541017422042003200420034b1b22044100480d12024020050d0020041027220c450d140c010b20052004460d00200c20052004102b220c450d130b200c200d200310e4072105200241a0016a200141146a10f305200041106a20033602002000410c6a2004360200200041086a20053602002000200e360204200041146a20022903a0013702002000411c6a200241a0016a41086a280200360200200041286a2001280228360200200041206a20012902203702002000412c6a2001412c6a2201290200370200200041346a200141086a2902003702002000413c6a200141106a290200370200200041c4006a200141186a290200370200200041cc006a200141206a290200370200200041d4006a200141286a290200370200200041dc006a200141306a290200370200200041e4006a200141386a2902003702002000410c3602000c0e0b10f403000b200241a0016a200141086a10fe032000410e360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0c0b200241a0016a200141086a10ff032000410f360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0b0b200241a0016a200141086a10ff0320004110360200200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c0a0b200241a0016a200141086a10800420004111360200200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c090b200241a0016a200141046a108104200041046a200241a0016a41c40010e4071a200041123602000c080b200241a0016a200141086a10820420004113360200200041c0006a200241a0016a41386a290300370300200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c070b200241a0016a200141046a108304200041046a200241a0016a41a00210e4071a200041143602000c060b200041153602000c050b200241a0016a200141086a10840420004116360200200041c0006a200241a0016a41386a290300370300200041386a200241a0016a41306a290300370300200041306a200241a0016a41286a290300370300200041286a200241a0016a41206a290300370300200041206a200241a0016a41186a290300370300200041186a200241a0016a41106a290300370300200041106a200241a0016a41086a290300370300200041086a20022903a0013703000c040b200241a0016a200141046a108504200041046a200241a0016a41c80010e4071a200041173602000c030b200241a0016a200141086a108604200041086a200241a0016a41f00010e4071a200041183602000c020b4102210c0240024002400240200141086a22032d0000417f6a220d41024b0d0041012105200d0e03030201030b419cf7ca00412841b8a1cc001033000b200141c8006a2903002109200141c0006a2903002108200141386a2903002107200141306a2903002106200141d0006a28020021044103210c0b200241b8016a200341196a290000370300200241b0016a200341116a290000370300200241a8016a200341096a290000370300200220032900013703a001200c21050b200020022903a0013700092000200228000036002920004119360200200041c8006a2009370300200041c0006a2008370300200041386a2007370300200041306a2006370300200041086a20053a0000200041d0006a2004360200200041116a200241a0016a41086a290300370000200041196a200241b0016a290300370000200041216a200241b8016a2903003700002000412c6a200241036a2800003600000c010b200241a0016a200141046a10f5032000411a3602002000413c6a200241d8016a280200360200200041346a200241d0016a2903003702002000412c6a200241c8016a290300370200200041246a200241c0016a2903003702002000411c6a200241b8016a290300370200200041146a200241b0016a2903003702002000410c6a200241a8016a290300370200200020022903a0013702040b200241c0036a24000f0b1038000b1039000b1032000b1030000ba50302047f017e23004180016b2202240002400240024002402000410c6a22032802002204200041106a280200470d002002200141fc0010e407210120002802082204200041046a280200470d02024002400240200441016a22032004490d00200441017422052003200520034b1bad42fc007e2206422088a70d002006a722034100480d00024020040d0020030d02410421050c050b20002802002105200441fc006c22042003460d04024020040d0020030d02410421050c050b200520042003102b2205450d020c040b1032000b2003102722050d020b1030000b2003200041186a280200417f6a200441016a71360200200041146a28020020044102746a28020021042002200141fc0010e407210102402000280208220320044d0d002000280200200441fc006c6a220041246a200041046a20002d00001b10a7062000200141fc0010e4071a0c030b20042003419095c8001036000b20002005360200200041046a200341fc006e360200200028020821040b2000280200200441fc006c6a200141fc0010e4071a20002000280208220441016a3602080b20024180016a240020040b130020004101360204200041d496c8003602000bfe0902037f047e23004190016b22062400024002400240024002402005450d0041002107200641003602080240024020012d00504101460d00200141d4006a28020021080c010b200641166a200141d3006a2d00003a0000200641206a200141e0006a290000370300200641286a200141e8006a290000370300200641306a200141f0006a2d00003a00002006200141d1006a2f00003b01142006200141d8006a290000370318200141d4006a2800002108410121070b200641e8006a41086a2006290318370300200641e8006a41106a200641186a41086a290300370300200641e8006a41186a200641186a41106a29030037030020064188016a200641186a41186a280200360200200620073a0068200620062f01143b00692006200836026c2006200641166a2d00003a006b200641003602502006200336024c200620023602482005417f4c0d02200510272202450d0320022004200510e4072102200620053602602006200536025c20062002360258200641386a2001200641e8006a200641c8006a200641d8006a200641086a10ac06200628023c210520062802384101460d01200141003a00502000200629030837020420004100360200200141d4006a20053602002000410c6a200641106a2802003602000c040b410121050240024020012d00504101460d00200141d4006a2802002104410021050c010b2006410a6a200141d3006a2d00003a0000200641206a200141e0006a290000370300200641286a200141e8006a290000370300200641306a200141f0006a2d00003a00002006200141d1006a2f00003b01082006200141d8006a290000370318200141d4006a28000021040b200641003602402006200336023c2006200236023820064100360248200641e8006a41086a2006290318370300200641e8006a41106a200641186a41086a290300370300200641e8006a41186a200641186a41106a29030037030020064188016a200641186a41186a280200360200200620053a0068200620062f01083b00692006200641086a41026a2d00003a006b2006200436026c200641d8006a2001200641e8006a200641386a200641c8006a10ad06200628025c210502400240024020062802584101460d00200641d8006a41086a2d000041ff01714102470d0141b4e0c800ad42808080801084220910102205290000210a200541086a290000210b200541106a290000210c200641e8006a41186a2202200541186a290000370300200641e8006a41106a2203200c370300200641e8006a41086a2204200b3703002006200a37036820051029200141013a0050200141d1006a2006290368370000200141d9006a2004290300370000200141e1006a2003290300370000200141e9006a2002290300370000200220091010220541186a2900003703002003200541106a2900003703002004200541086a2900003703002006200529000037036820051029200128024c22012006290368370000200141186a2002290300370000200141106a2003290300370000200141086a20042903003700000c020b200041013602002000200536020420062802482201450d05200628024c450d05200110290c050b200141003a0050200141d4006a20053602000b20002006290348370204200041003602002000410c6a200641d0006a2802003602000c030b200041013602002000200536020420062802082201450d02200628020c450d02200110290c020b1038000b1039000b20064190016a24000bca2f03087f0c7e0a7f230022062107200641e0076b4160712206240002400240024002400240024002400240024002400240024020022d00004101470d00200641b8046a200241196a290000370300200641b0046a200241116a290000370300200641a8046a200241096a290000370300200620022900013703a004200328020822084101762102200328020421092003280200210a024002402008410171450d0020092002490d04200220094f0d062006200a360288072006200236028c0720064191076a200a20026a2d000041f001713a0000200641013a0090070c010b20092002490d04200641003a0090072006200236028c072006200a360288070b200641e0036a2001200641a0046a20064188076a10ae0620062802e403210220062802e0034101470d0120004101360200200020023602040240200441046a280200450d00200428020010290b200724000f0b200241046a28020021020b0240200141c0006a220b28020022082008417f6a200141386a220a2802002209200141346a220c2802006b716b4101470d002001413c6a108b01200c280200220c200a28020022094d0d00024020092008200c6b220d490d00200128023c2209200b280200200d6b22084102746a2009200c4102746a200d41027410e4071a200141346a2008360200200141386a28020021090c010b200128023c220c20084102746a200c200941027410e4071a200141386a2209200928020020086a22093602000b200a200b280200417f6a200941016a713602002001413c6a28020020094102746a2002360200200141306a280200220920024d0d032001280228200241fc006c6a2202290210210e200220062903b0043702102002290208210f200220062903a804370208200641003a00a004200641003602a40420022902002110200220062903a004370200200241186a22092902002111200920062903b80437020020022902402112200241c8006a2902002113200241d0006a2902002114200241d8006a290200211520022902202116200241286a2902002117200241306a2902002118200241386a290200211920064180036a41086a2209200241e8006a29020037030020064180036a41106a220a200241f0006a29020037030020064180036a41186a2208200241f8006a280200360200200620113703f8032006200e3703f0032006200f3703e803200620103703e003200620193703d803200620183703d003200620173703c803200620163703c003200620153703b803200620143703b003200620133703a803200620123703a003200620022902603703800320064190046a41086a2202200441086a2802003602002006200429020037039004024002400240024002400240024002402010a7220b41ff01714101470d002003280200210c2003280204211a2003280208210d20064188066a41186a20062802fc0336020020064188066a41106a20062902f40337030020064188066a41086a20062902ec03370300200620062902e40337038806200641bc076a2015370200200641b4076a201437020020064188076a41246a2013370200200641a4076a201237020020064188076a41186a20062802dc0336020020064188076a41106a20062902d40337030020064188076a41086a20062902cc03370300200620062902c4033703880720064188076a413c6a20062903800337020020064188076a41c4006a2009290300370200200641d4076a200a290300370200200641dc076a2008280200360200200641c8056a41086a200228020036020020062006290390043703c805200641a0046a200120064188076a2003200641c8056a200510af0620062802a404210220062802a0044101460d072010420888a721052016a72108200641e8066a41186a2203200641c0046a280200360200200641e8066a41106a220a200641a0046a41186a290300370300200641e8066a41086a221b200641a0046a41106a221c290300370300200641c8066a41086a221d200641cd046a290000370300200641c8066a41106a221e200641d5046a290000370300200641c8066a41176a221f200641a0046a413c6a290000370000200620062900c5043703c8062006200641a0046a41086a22202903003703e806200641a0046a41246a2d00002104200641a8066a41086a2221200641ed046a290000370300200641a8066a41106a2222200641f5046a290000370300200641a8066a41176a2223200641fc046a280000360000200620062900e5043703a806200641a0046a41c4006a2d0000210920020e03030201030b200641bc076a2019370200200641b4076a201837020020064188076a41246a2017370200200641a4076a201637020020064188076a41186a20062802fc0336020020064188076a41106a20062902f40337030020064188076a41086a20062902ec0337030020064188076a413c6a20062903a00337020020064188076a41c4006a20062903a803370200200641d4076a20062903b003370200200641dc076a20062802b803360200200620062902e40337038807200641c8056a41086a200228020036020020062006290390043703c805200641a0046a200120064188076a2003200641c8056a200510af0620062802a404210220062802a0044101460d06200641e8066a41186a2209200641c0046a280200360200200641e8066a41106a2208200641a0046a41186a290300370300200641e8066a41086a220c200641a0046a41106a290300370300200641c8066a41086a220d200641cd046a290000370300200641c8066a41106a221a200641d5046a290000370300200641c8066a41176a221b200641a0046a413c6a290000370000200620062900c5043703c8062006200641a0046a41086a2903003703e806200641a0046a41246a2d0000210420064188066a41086a221c200641ed046a29000037030020064188066a41106a221d200641f5046a29000037030020064188066a41176a221e200641fc046a280000360000200620062900e50437038806200641a0046a41c4006a2d0000210a410221034100210520020e03030405030b200d410176210202400240200d410171450d00201a2002490d0c2002201a4f0d01200c20026a2d00004170712103410121040c0f0b0240201a2002490d00410021040c0f0b2002201a4184a1cc00104b000b2002201a4194a1cc001036000b200641e8056a41086a20064188066a41086a290300370300200641e8056a41106a20064188066a41106a290300370300200641e8056a41186a20064188066a41186a280200360200200641ab046a201b290300370000200641b3046a200a290300370000200641bb046a200328020036000020064188076a41176a201f29000037000020064188076a41106a201e29030037030020064188076a41086a201d29030037030020062006290388063703e805200620062903e8063700a304200620062903c80637038807200641a8056a41176a2023280000360000200641a8056a41106a2022290300370300200641a8056a41086a2021290300370300200641c8056a41176a200641a0046a41176a290000370000200641c8056a41106a201c290000370300200641c8056a41086a2020290000370300200620062903a8063703a805200620062900a0043703c80541012103410021052004210a200821040c0d0b200d410176210202400240200d410171450d00201a2002490d0b2002201a4f0d01200c20026a2d0000417071210d4101211a0c0c0b0240201a2002490d004100211a0c0c0b2002201a4184a1cc00104b000b2002201a4194a1cc001036000b410121050b200641e8056a41186a2009280200360200200641e8056a41106a2008290300370300200641e8056a41086a200c290300370300200641c8056a41086a200d290300370300200641c8056a41106a201a290300370300200641c8056a41176a201b29000037000020064188076a41086a201c29030037030020064188076a41106a201d29030037030020064188076a41176a201e280000360000200620062903e8063703e805200620062903c8063703c805200620062903880637038807410021030b0c090b410121030c090b2002200941f4a0cc00104b000b200220094184a1cc00104b000b200220094194a1cc001036000b20022009418095c8001036000b2002201a41f4a0cc00104b000b2002201a41f4a0cc00104b000b41002103200641003a00a404200641003602a004200641a0046a200c200c20026a10b00620064188076a41286a220c200641a0046a41286a221b28020036020020064188076a41206a221c200641a0046a41206a29030037030020064188076a41186a221d200641a0046a41186a29030037030020064188076a41106a2202200641a0046a41106a29030037030020064188076a41086a220a200641a0046a41086a290300370300200620062903a00437038807200641ab046a20064188066a41086a290300370000200641b3046a20064188066a41106a290300370000200641bb046a20064188066a41186a28020036000020062006290388063700a304200620083a00bf04200620053b01a004200620054110763a00a204201b200a290300370300200641d0046a2002290300370300200641d8046a201d290300370300200641e0046a201c290300370300200641e8046a200c28020036020020062006290388073703c004200641ed046a200d3a0000200641ec046a201a3a0000200641ee046a20062f01a8053b01002001200641a0046a10b104200641e8056a41086a200641e8066a41086a290300370300200641e8056a41106a200641e8066a41106a290300370300200641e8056a41186a200641e8066a41186a280200360200200641c8056a41086a200641c8066a41086a290300370300200641c8056a41106a200641c8066a41106a290300370300200641c8056a41176a200641c8066a41176a290000370000200620062903e8063703e805200620062903c8063703c80520064188076a41176a200641a8066a41176a2800003600002002200641a8066a41106a290300370300200a200641a8066a41086a290300370300200620062903a80637038807410121052009210a0c010b200641003a00a404200641003602a004200641a0046a200c200c20026a10b00620064188076a41286a2202200641a0046a41286a220a28020036020020064188076a41206a220c200641a0046a41206a29030037030020064188076a41186a220d200641a0046a41186a29030037030020064188076a41106a221a200641a0046a41106a29030037030020064188076a41086a221b200641a0046a41086a290300370300200620062903a00437038807200641ab046a20064188066a41086a290300370000200641b3046a20064188066a41106a290300370000200641bb046a20064188066a41186a28020036000020062006290388063700a304200620083a00bf04200620053b01a004200620054110763a00a204200a201b290300370300200641d0046a201a290300370300200641d8046a200d290300370300200641e0046a200c290300370300200641e8046a200228020036020020062006290388073703c004200641ed046a20033a0000200641ec046a20043a0000200641ee046a20062f01c8053b01002001200641a0046a10b104410221030b200641e8066a41186a200641e8056a41186a280200360200200641e8066a41106a200641e8056a41106a290300370300200641e8066a41086a200641e8056a41086a290300370300200641a0046a41086a200641c8056a41086a290300370300200641a0046a41106a200641c8056a41106a290300370300200641a0046a41176a200641c8056a41176a290000370000200641c8066a41086a20064188076a41086a290300370300200641c8066a41106a20064188076a41106a290300370300200641c8066a41176a20064188076a41176a290000370000200620062903e8053703e806200620062903c8053703a00420062006290388073703c80620064188066a41176a200641a8056a41176a28000036000020064188066a41106a200641a8056a41106a29030037030020064188066a41086a200641a8056a41086a290300370300200620062903a805370388062003200b41807e71722102410021030b200641e0026a41086a2208200641e8066a41086a290300370300200641e0026a41106a220b200641e8066a41106a290300370300200641e0026a41186a220c200641e8066a41186a280200360200200641c0026a41086a220d200641a0046a41086a290300370300200641c0026a41106a221a200641a0046a41106a290300370300200641c0026a41176a221b200641a0046a41176a290000370000200620062903e8063703e002200620062903a0043703c002200641a0026a41176a221c200641c8066a41176a290000370000200641a0026a41106a221d200641c8066a41106a290300370300200641a0026a41086a221e200641c8066a41086a29030037030020064180026a41086a221f20064188066a41086a29030037030020064180026a41106a222020064188066a41106a29030037030020064180026a41176a222120064188066a41176a280000360000200620062903c8063703a0022006200629038806370380020240024020030d00200641e0016a41186a200c280200360200200641e0016a41106a200b290300370300200641e0016a41086a2008290300370300200641c0016a41086a200d290300370300200641c0016a41106a201a290300370300200641c0016a41176a201b290000370000200641a0016a41086a201e290300370300200641a0016a41106a201d290300370300200641a0016a41176a201c290000370000200620062903e0023703e001200620062903c0023703c001200620062903a0023703a00120064180016a41176a202128000036000020064180016a41106a202029030037030020064180016a41086a201f290300370300200620062903800237038001200241ff01714102460d01200641e0006a41186a2203200641e0016a41186a280200360200200641e0006a41106a2208200641e0016a41106a290300370300200641e0006a41086a220b200641e0016a41086a290300370300200641c0006a41086a220c200641c0016a41086a290300370300200641c0006a41106a220d200641c0016a41106a290300370300200641c0006a41176a221a200641c0016a41176a290000370000200641206a41086a221b200641a0016a41086a290300370300200641206a41106a221c200641a0016a41106a290300370300200641206a41176a221d200641a0016a41176a290000370000200620062903e001370360200620062903c001370340200620062903a001370320200641176a221e20064180016a41176a280000360000200641106a221f20064180016a41106a290300370300200641086a222020064180016a41086a2903003703002006200629038001370300200641c0036a41086a2221200b290300370300200641c0036a41106a220b2008290300370300200641c0036a41186a22082003280200360200200620062903603703c00320064188076a41086a2203200c29030037030020064188076a41106a220c200d29030037030020064188076a41176a220d201a2900003700002006200629034037038807200641e0036a41086a221a201b290300370300200641e0036a41106a221b201c290300370300200641e0036a41176a221c201d290000370000200620062903203703e003200641a0036a41176a221d201e280000360000200641a0036a41106a221e201f290300370300200641a0036a41086a221f2020290300370300200620062903003703a003200641c0046a20043a0000200620023a00a004200620024118763a00a304200620024108763b00a104200641ac046a2021290300370200200641b4046a200b290300370200200641bc046a2008280200360200200620062903c0033702a404200641c1046a200629038807370000200641c9046a2003290300370000200641d1046a200c290300370000200641d8046a200d290000370000200641e0046a200a3a0000200641f8046a201c290000370000200641f1046a201b290300370000200641e9046a201a290300370000200641e1046a20062903e00337000020064180056a20093a000020064198056a201d28000036000020064191056a201e29030037000020064189056a201f29030037000020064181056a20062903a003370000200141286a200641a0046a10a9062106200041086a20053a00002000200636020420004100360200200724000f0b2000410136020020002002360204200724000f0b419c98c800411841b498c8001057000bca2304087f0c7e027f087e230022052106200541e0026b41607122052400024002400240024002400240024002400240024020022d00004101470d00200541f8006a200241196a290000370300200541f0006a200241116a290000370300200541e8006a200241096a290000370300200520022900013703602003280208220741017621022003280204210820032802002109024002402007410171450d0020082002490d06200220084f0d0820052009360288022005200236028c0220054191026a200920026a2d000041f001713a0000200541013a0090020c010b20082002490d06200541003a0090022005200236028c0220052009360288020b200541c0006a2001200541e0006a20054188026a10ae062005280244210220052802404101460d03200141c0006a220a28020022092009417f6a200141386a22072802002208200141346a220b2802006b716b4101470d022001413c6a108b01200b280200220b200728020022084d0d0220082009200b6b220c490d01200128023c2208200a280200200c6b22094102746a2008200b4102746a200c41027410e4071a200141346a2009360200200141386a28020021080c020b200241046a28020021020240200141c0006a220a28020022092009417f6a200141386a22072802002208200141346a220b2802006b716b4101470d002001413c6a108b01200b280200220b200728020022084d0d00024020082009200b6b220c490d00200128023c2208200a280200200c6b22094102746a2008200b4102746a200c41027410e4071a200141346a2009360200200141386a28020021080c010b200128023c220b20094102746a200b200841027410e4071a200141386a2208200828020020096a22083602000b2007200a280200417f6a200841016a713602002001413c6a28020020084102746a2002360200200141306a280200220820024d0d0620012802282108200541003a0060200541003602642008200241fc006c6a2202290200210d20022005290360370200200241186a2208290200210e20082005290378370200200241106a2208290200210f20082005290370370200200241086a2208290200211020082005290368370200200f422088200e4220868421112010422088200f422086842112200d4220882010422086842113200241e0006a2108200241c0006a2109200241206a2102200e4220882114200da72107200d420888a7210b0c080b200128023c220b20094102746a200b200841027410e4071a200141386a2208200828020020096a22083602000b2007200a280200417f6a200841016a713602002001413c6a28020020084102746a2002360200200141306a280200220820024d0d0520012802282108200541003a0060200541003602642008200241fc006c6a2202290200210d20022005290360370200200241186a2208290200210e20082005290378370200200241106a2208290200210f20082005290370370200200241086a2208290200211020082005290368370200200f422088200e4220868421112010422088200f422086842112200d4220882010422086842113200241e0006a2108200241c0006a2109200241206a2102200e4220882114200da72107200d420888a7210b0c060b2000410136020020002002360204200624000f0b2002200841f4a0cc00104b000b200220084184a1cc00104b000b200220084194a1cc001036000b20022008418095c8001036000b20022008418095c8001036000b200241186a290200210d200241106a290200210e200241086a290200210f200941186a290200211020022902002115200929020021162009290208211720092902102118200541206a41086a2202200841086a290200370300200541206a41106a2209200841106a290200370300200541206a41186a220a200841186a280200360200200520103703582005201837035020052017370348200520163703402005200829020037032002400240024002400240024002400240024002400240024002400240200741ff01714101470d0020032802002108200328020421192003280208211a200541bc026a2010370200200541b4026a201837020020054188026a41246a2017370200200541a4026a201637020020054188026a41186a200d4220883e0200200541c4026a200529032037020020054188026a41c4006a2002290300370200200541d4026a2009290300370200200541dc026a200a2802003602002005200e422088200d42208684370398022005200f422088200e422086843703900220052015422088200f4220868437038802200541e0006a200120054188026a2003200410b10620054182026a41026a220320054187016a2d00003a0000200541fe016a41026a2204200541a7016a2d00003a0000200520052f0085013b018202200520052f00a5013b01fe012005280264210220052802604101460d0720054180016a350200210d200541e0006a41186a290300210e200541e0006a41106a290300210f200541e0006a41086a2903002110200541a0016a350200211620054198016a290300211720054190016a290300211820054188016a290300211b200541b0016a290300211c200541a8016a290300211d200541b8016a290300211e200541e0006a41246a2d00002109200541e0006a41c4006a2d0000210c2015a7210a200541fa016a41026a20032d00003a0000200541f6016a41026a20042d00003a0000200520052f0182023b01fa01200520052f01fe013b01f60120020e03030201030b200541bc026a200d370200200541b4026a200e37020020054188026a41246a200f370200200541a4026a201537020020054188026a41186a20143e0200200541c4026a200529034037020020054188026a41c4006a2005290348370200200541d4026a2005290350370200200541dc026a2005280258360200200520113703980220052012370390022005201337038802200541e0006a200120054188026a2003200410b1064102210320054182026a41026a220820054187016a2d00003a0000200541fe016a41026a2204200541a7016a2d00003a0000200520052f0085013b018202200520052f00a5013b01fe012005280264210220052802604101460d0620054180016a350200210d200541e0006a41186a290300210e200541e0006a41106a290300210f200541e0006a41086a2903002110200541a0016a350200211620054198016a290300211720054190016a290300211820054188016a290300211b200541b0016a290300211f200541a8016a2903002120200541b8016a2903002121200541e0006a41246a2d00002109200541e0006a41c4006a2d00002119200541fa016a41026a20082d00003a0000200541f6016a41026a20042d00003a0000200520052f0182023b01fa01200520052f01fe013b01f6014100211a20020e03030405030b201a410176210202400240201a410171450d0020192002490d08200220194f0d01200820026a2d00004170712103410121090c0b0b024020192002490d00410021090c0b0b200220194184a1cc00104b000b200220194194a1cc001036000b200541ee016a41026a200541fa016a41026a2d00003a0000200541e0006a41026a200541f6016a41026a2d00003a0000200520052f01fa013b01ee01200520052f01f6013b0160410121034100211a201b21202018211f20172121201621152010211b200f2118200e2117200d2116201321102012210f2011210e2014210d20092119200a21090c090b201a410176210202400240201a410171450d0020192002490d07200220194f0d01200820026a2d000041707121044101211a0c080b024020192002490d004100211a0c080b200220194184a1cc00104b000b200220194194a1cc001036000b4101211a0b200541f2016a41026a200541fa016a41026a2d00003a0000200541ee016a41026a200541f6016a41026a2d00003a0000200520052f01fa013b01f201200520052f01f6013b01ee0142002115410021030b4200211e0c050b4200211e410121030c050b2002201941f4a0cc00104b000b2002201941f4a0cc00104b000b41002103200541003a006420054100360260200541e0006a2008200820026a10b00620054188026a41286a200541e0006a41286a2202280200220836020020054188026a41206a200541e0006a41206a290300221537030020054188026a41186a200541e0006a41186a290300221f37030020054188026a41106a200541e0006a41106a290300222037030020054188026a41086a200541e0006a41086a290300222137030020052005290360222237038802200541fb006a20143e0000200541f3006a2011370000200541eb006a20123700002002202137030020054190016a202037030020054198016a201f370300200541a0016a2015370300200541a8016a2008360200200541ad016a20043a0000200541ac016a201a3a0000200520133700632005200a3a007f20052022370380012005200b3b01602005200b4110763a0062200541ae016a20052f0186023b01002001200541e0006a10b104200541f2016a41026a200541fa016a41026a2d00003a0000200541ee016a41026a200541f6016a41026a2d00003a0000200520052f01fa013b01f201200520052f01f6013b01ee01420021154101211a201d2120201c211f201e2121200c21190c010b200541003a006420054100360260200541e0006a2008200820026a10b00620054188026a41286a200541e0006a41286a2202280200220836020020054188026a41206a200541e0006a41206a290300220d37030020054188026a41186a200541e0006a41186a290300220e37030020054188026a41106a200541e0006a41106a290300220f37030020054188026a41086a200541e0006a41086a290300221037030020052005290360221637038802200541fb006a20143e0000200541f3006a2011370000200541eb006a20123700002002201037030020054190016a200f37030020054198016a200e370300200541a0016a200d370300200541a8016a2008360200200541ad016a20033a0000200541ac016a20093a0000200520133700632005200a3a007f20052016370380012005200b3b01602005200b4110763a0062200541ae016a20052f01f2013b01002001200541e0006a10b104410221030b20054188026a41026a200541f2016a41026a2d00003a000020054182026a41026a200541ee016a41026a2d00003a0000200541fe016a41026a200541e0006a41026a2d00003a0000200520052f01f2013b018802200520052f01ee013b018202200520052f01603b01fe012003200741807e71722102410021030b410221082005411c6a41026a220720054188026a41026a22042d00003a0000200541186a41026a220a20054182026a41026a2d00003a0000200541146a41026a220b200541fe016a41026a2d00003a0000200520052f0188023b011c200520052f0182023b0118200520052f01fe013b0114024020030d00200541106a41026a220320072d00003a00002005410c6a41026a2207200a2d00003a0000200541086a41026a220a200b2d00003a0000200520052f011c220b3b0110200520052f01183b010c200520052f01143b0108200420032d00003a00002005200b3b018802200541c0006a41026a20072d00003a0000200520052f010c3b0140200541206a41026a200a2d00003a0000200520052f01083b01200240200241ff01714102460d00200541ec006a200f3702002005418c016a201837020020054184016a201b370200200541ac016a201f370200200541a4016a202037020020054180016a20093a000020054181016a20052f0188023b0000200541a0016a20193a0000200541a1016a20052f01403b0000200541c0016a200c3a0000200541c1016a20052f01203b0000200541f4006a200e37020020054194016a2017370200200541b4016a202137020020054183016a20054188026a41026a2d00003a0000200541a3016a200541c0006a41026a2d00003a0000200541c3016a200541206a41026a2d00003a0000200541fc006a200d3e02002005419c016a20163e0200200541bc016a20153e02002005201037026420052002360260200541cc016a201c370200200541c4016a201d370200200541d4016a201e370200201a4101712108200141286a200541e0006a10a90621030b200041086a20083a00002000200336020420004100360200200624000f0b2000410136020020002002360204200624000bf50403047f017e027f230041d0026b22042400200141c8006a280200210520012802442106200441d0016a41086a2207200341086a280200360200200420032902003703d001200441086a20062002200441d0016a200528020c1104000240024002400240200428020822030d002007200241086a290000370300200441d0016a41106a2201200241106a290000370300200441d0016a41186a2203200241186a290000370300200420022900003703d001413010272202450d01200241013a0000200220042903d0013700012002200429005c370021200241096a200441d8016a290300370000200241116a2001290300370000200241196a2003290300370000200241286a200441e3006a29000037000020004101360200200020023602040c030b200429020c2108200441b0016a41186a200241186a2209290000370300200441b0016a41106a200241106a220a290000370300200441b0016a41086a200241086a290000370300200420022900003703b001200441d0016a200441b0016a20032008422088a7200141286a220610b20620042802d401210120042802d0012105200441dc006a200741d40010e4071a20054101470d0120004101360200200020013602042008a7450d02200310290c020b1030000b200441086a200441dc006a41d40010e4071a200420013602f401200441d0016a41286a200441086a41d40010e4071a200441e9016a2009290000370000200441e1016a200a290000370000200441d9016a200241086a290000370000200441013a00d001200420022900003700d1012006200441d0016a10a906210220004100360200200020023602042008a7450d00200310290b200441d0026a24000b8e5903117f057e077f230022062107200641e0046b41607122062400200641086a200341086a2802003602002006200329020037030002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802000e050104000203010b200641f0006a2002412c6a290200370300200641e8006a200241246a290200370300200641c8006a41186a2002411c6a290200370300200641c8006a41106a2208200241146a290200370300200641c8006a41086a2002410c6a2902003703002006200229020437034820064196016a200241376a2d00003a0000200641f8006a41086a200241c4006a290200370300200641f8006a41106a200241cc006a290200370300200641f8006a41186a200241d4006a280200360200200620022f00353b01940120062002413c6a290200370378200241346a2d00002109200241386a280200210a02400240200628024c220b41244b0d00200641d1006a210c0c010b2008280200210b200641c8006a410c6a280200210c0b20062006280248220d3602a0012006200c360298012006280204210e2006280208210f2006200b36029c01200b4101742210200d6b2211200e410174200f6b2202200220114b1b2212450d0541002102200628020021130340200f20026a22084101762214200e4f0d07200d20026a22154101762216200b4f0d08201320146a2d00002214410f71201441f0017141047620084101711b200c20166a2d00002208410f71200841047620154101711b470d05200241016a22022012490d000c1f0b0b4101211520062802042203200628020822144101762216490d072006280200210241002108200641003a00e403200641003602e003200641e0036a200220166a200220036a10b006200641286a41086a200641f4036a290200370300200641386a200641fc036a290200370300200641c0006a20064184046a2902003703002006200641ec036a29020037032820144101712102200641e0036a41086a280200211420062802e403211620062802e003210320042902042117200428020021110c210b200241106a280200210d2002410c6a280200210c200241086a280200210b20022802042102024002402006280204221441017420062802082208460d00200841017622152014490d012015201441b4a0cc001036000b02400240200b0d002004280208211420042802002103410021080c010b2004280200210341002108200d20042802082214470d00024002402003200b470d00410121080c010b200b2003200d10e7074521080b200d21140b20042802042116024020052802002215450d00200541046a280200450d00201510290b2005200c3602042005200b360200200541086a200d360200200641286a41086a200641e0036a41086a290200370300200641286a41106a200641e0036a41106a290200370300200641286a41186a200641e0036a41186a290200370300200641106a41086a20064188036a41086a290200370300200641106a41106a20064188036a41106a280200360200200620062902e0033703282006200629028803370310410321150c210b200628020020156a2d000021142003200328020841016a36020820022014410f71201441047620084101711b221541246c6a22142902102118201420062903f00337021020142902082119201420062903e80337020820142902002117200641023a00e003201420062903e003370200201441186a2208290200211a200820062903f80337020002400240024002402017a741ff01714102470d002003280204221620032802082205410176220e490d0b2003280200210341002108200641003a008c03200641003602880320064188036a2003200e6a200320166a10b006200641b0026a41286a20064188036a41286a2802002203360200200641b0026a41206a20064188036a41206a2903002217370300200641b0026a41186a20064188036a41186a2903002218370300200641b0026a41106a20064188036a41106a2903002219370300200641b0026a41086a20064188036a41086a290300221a370300200641ec036a200629038803221b370200200641f4036a201a370200200641fc036a2019370200200641e0036a41246a20183702002006418c046a201737020020064194046a2003360200200641013602e403200641e0036a41086a20054101713602002006201b3703b002200641a0046a200441086a28020036020020064198046a2004290200370300200641003a00e0032002201541246c6a41046a200141286a200641e0036a10a906360200201441003a00000c010b20064180046a2014280220360200200641e0036a41186a201a370300200620193703e803200620173703e003200620183703f00320064188036a41086a200441086a2802003602002006200429020037038803200641b0026a2001200641e0036a200320064188036a200510ac0620062802b402210320062802b0024101460d01200641b0026a41086a2d0000211641002108201441003a00002002201541246c6a41046a2003360200201641ff0171450d020b41032115200b2103200c2116200d21140c220b20004101360200200020033602040240200b450d00200c450d00200b10290b200210290c1f0b2000428080808010370200200041186a200d360200200041146a200c360200200041106a200b3602002000410c6a2002360200200041086a4103360200200724000f0b200641d8026a2002412c6a290200370300200641d0026a200241246a290200370300200641c8026a2002411c6a290200370300200641c0026a2208200241146a290200370300200641b0026a41086a2002410c6a290200370300200620022902043703b002200241346a2802002111200241386a28020021092002413c6a280200211c200241c0006a280200211d0240024020062802b402220b41244b0d00200641b9026a210d0c010b2008280200210b200641b0026a410c6a280200210d0b200620062802b002220c3602a0012006200d360298012006280204210e2006280208210f2006200b36029c01410021020240200b410174200c6b220a200e410174200f6b22102010200a4b1b2212450d00200628020021130340200f20026a22084101762214200e4f0d09200c20026a22154101762216200b4f0d0a201320146a2d00002214410f71201441f0017141047620084101711b200d20166a2d00002208410f71200841047620154101711b470d01200241016a22022012490d000b0b02400240024002402002200a470d00200a2010460d010b2002200a490d01200f20026a22144101762208200e490d022008200e41b4a0cc001036000b4100210802402009450d00201d2004280208470d000240200428020022022009470d00410121080c010b20092002201d10e7074521080b200b200c4101762202490d0b200641003a00e403200641003602e003200641e0036a200d20026a200d200b6a10b00620064188036a41086a2215200641f4036a29020037030020064188036a41106a220d200641fc036a29020037030020064188036a41186a220e20064184046a2902003703002006200641ec036a29020037038803200c4101712102200641e0036a41086a220c280200211420062802e403211620062802e00321032004280208210b20042902002117024020052802002204450d00200541046a280200450d00200410290b2005201c36020420052009360200200541086a201d360200200641286a41086a2015290300370300200641286a41106a200d290300370300200641286a41186a200e290300370300200641106a41086a200c290200370300200641106a41106a200641e0036a41106a2802003602002006200629038803370328200620062902e0033703100c1b0b200b200c200241016a22136a22084101762203490d0b200641003a00e403200641003602e003200641e0036a200d20036a200d200b6a10b006200641a8016a41286a200641e0036a41286a2802002203360200200641a8016a41206a200641e0036a41206a2903002217370300200641a8016a41186a200641e0036a41186a2903002218370300200641a8016a41106a200641e0036a41106a2903002219370300200641a8016a41086a200641e0036a41086a2214290300221a370300200620062903e003221b3703a801200641c8006a41086a2216201a370300200641c8006a41106a22052019370300200641c8006a41186a220e2018370300200641c8006a41206a220f2017370300200641c8006a41286a221220033602002006201b370348200c20026a220c4101762203200b4f0d0c200d20036a2d0000210310b606211520142008410171360200200641ec036a22142006290348370200200641f4036a2016290300370200200641fc036a2005290300370200200641e0036a41246a200e2903003702002006418c046a200f29030037020020064194046a2012280200360200200641a4046a201d360200200641a0046a201c3602002006419c046a200936020020064198046a2011360200200641043602e403200641a8046a2006290278370300200641b0046a200641f8006a41086a290200370300200641b8046a200641f8006a41106a280200360200200641003a00e00320152003410f712003410476200c4101711b41246c6a2203200141286a2216200641e0036a10a906360204200341003a00000240024020062802042203410174200628020822086b2002460d00200820026a220e410176220b2003490d01200b200341b4a0cc001036000b200641e0036a20064198016a200210b706200641286a41086a200641e0036a41186a290300370300200641286a41106a20064180046a290300370300200641286a41186a20064188046a2903003703002006200641e0036a41106a29030037032820142802002114200641e0036a41086a28020021162004280208210b2004290200211720062802e403210320062802e003210241002108201521110c1b0b2003200820136a220f410176220d490d0d20062802002214200b6a2d0000210b41002108200641003a00e403200641003602e003200641e0036a2014200d6a201420036a10b006200641d8016a41286a200641e0036a41286a22032802002212360200200641d8016a41206a200641e0036a41206a2214290300221737030020064188036a410c6a200641e0036a41086a220d2903003702002006419c036a200641e0036a41106a220c290300370200200641a4036a200641e0036a41186a220529030037020020064188036a41246a2017370200200641b4036a2012360200200620062903e00322173703d8012006200f410171360288032006201737028c03200d20062902880337030020064198046a2004290200370300200641a0046a200441086a280200360200200641013602e403200c20064188036a41086a290200370300200520064188036a41106a290200370300201420064188036a41186a290200370300200320064188036a41206a29020037030020064190046a20064188036a41286a290200370300200641003a00e0032015200b410f71200b41f00171410476200e4101711b41246c6a22042016200641e0036a10a906360204200441003a0000200641e0036a20064198016a200210b706200641286a41086a2005290300370300200641286a41106a2014290300370300200641286a41186a20032903003703002006200c290300370328200641e0036a410c6a2802002114200d280200211620062802e403210320062802e003210242002117201521110c1a0b200628020020086a2d000021082003200220032802086a41016a36020820112008410f71200841047620144101711b221441246c6a22022902102118200220062903f00337021020022902082119200220062903e80337020820022902002117200641023a00e003200220062903e003370200200241186a2208290200211a200820062903f80337020002402017a741ff01714102470d0020032802042208200328020822154101762216490d0e20032802002103200641003a008c03200641003602880320064188036a200320166a200320086a10b006200641d8016a41286a20064188036a41286a2802002203360200200641d8016a41206a20064188036a41206a2903002217370300200641d8016a41186a20064188036a41186a2903002218370300200641d8016a41106a20064188036a41106a2903002219370300200641d8016a41086a20064188036a41086a290300221a370300200641ec036a200629038803221b370200200641f4036a201a370200200641fc036a2019370200200641e0036a41246a20183702002006418c046a201737020020064194046a2003360200200641013602e403200641e0036a41086a20154101713602002006201b3703d801200641a0046a200441086a28020036020020064198046a2004290200370300200641003a00e0032011201441246c6a41046a200141286a200641e0036a10a906360200200241003a00000c190b20064180046a2002280220360200200641e0036a41186a201a370300200620193703e803200620173703e003200620183703f00320064188036a41086a200441086a2802003602002006200429020037038803200641d8016a2001200641e0036a200320064188036a200510ac0620062802dc0121030240024020062802d8014101460d00200641d8016a41086a2d00002108200241003a00002011201441246c6a41046a2003360200200841ff01710d1a200b200c4101762202490d10200641003a00e403200641003602e003200641e0036a200d20026a200d200b6a10b00620064188036a41286a200641e0036a41286a280200220236020020064188036a41206a200641e0036a41206a290300221737030020064188036a41186a200641e0036a41186a290300221837030020064188036a41106a200641e0036a41106a290300221937030020064188036a41086a200641e0036a41086a290300221a370300200620062903e003221b370388032000410c6a200c410171360200200041086a41043602002000428080808010370200200041106a201b370200200041186a201a370200200041206a2019370200200041286a2018370200200041306a2017370200200041386a2002360200200041c8006a201d360200200041c4006a201c360200200041c0006a20093602002000413c6a20113602000c010b200041013602002000200336020402402009450d00201c450d00200910290b201110290b20062802b40241244d0d1d200641bc026a2802001029200724000f0b200641d8026a2002412c6a290200370300200641d0026a200241246a290200370300200641c8026a2002411c6a290200370300200641c0026a2208200241146a290200370300200641b0026a41086a2002410c6a290200370300200620022902043703b0022002413c6a2802002109200241386a280200211d200241346a28020021100240024020062802b402220b41244b0d00200641b9026a210d0c010b2008280200210b200641b0026a410c6a280200210d0b410021020240200b41017420062802b002220c6b22112006280204220e4101742006280208220f6b220a200a20114b1b2212450d00200628020021130340200f20026a22084101762214200e4f0d10200c20026a22154101762216200b4f0d11201320146a2d00002214410f71201441f0017141047620084101711b200d20166a2d00002208410f71200841047620154101711b470d01200241016a22022012490d000b0b02400240024002400240024020022011470d002011200a460d010b200220114f0d0210b6062114200c20026a22154101762208200b4f0d15200b201541016a220f410176220c490d16200d20086a2d0000211641002108200641003a00e403200641003602e003200641e0036a200d200c6a200d200b6a10b00620064188036a41286a200641e0036a41286a2212280200221336020020064188036a41206a200641e0036a41206a2211290300221737030020064188036a41186a200641e0036a41186a220b290300221837030020064188036a41106a220a200641e0036a41106a220d290300221937030020064188036a41086a221c200641e0036a41086a220c290300221a370300200620062903e003221b37038803200641ec036a220e201b370200200641e0036a41146a221e201a370200200641e0036a411c6a221f2019370200200641e0036a41246a22202018370200200641e0036a412c6a22212017370200200641e0036a41346a22222013360200200641a0046a221320093602002006419c046a2209201d360200200641e0036a41386a2010360200200641013602e403200c200f410171360200200641003a00e00320142016410f71201641047620154101711b41246c6a2215200141286a200641e0036a10a906360204201541003a0000200641e0036a2006200210b70620064198016a41086a2202200e280200360200200641c8006a41086a2215200b290300370300200641c8006a41106a22162011290300370300200641c8006a41186a220f2012290300370300200620062902e403370398012006200d290300370348200620062802e00336028c032006410436028803201c200629039801370300200a200228020036020020064188036a41386a410036020020064188036a41346a201436020020064188036a41146a200629034837020020064188036a411c6a201529030037020020064188036a41246a201629030037020020064188036a412c6a200f290300370200200641cc036a200629027837020020064188036a41cc006a200641f8006a41086a29020037020020064188036a41d4006a200641f8006a41106a280200360200200641286a41086a220f200441086a28020036020020062004290200370328200641e0036a200120064188036a2003200641286a200510af06200641d8016a41086a22052020290200370300200641d8016a41106a22122021290200370300200641d8016a41186a220120222902003703002006201f2902003703d801200c2802002115200e2802002102200d2802002103201e2802002116200b28020021142009280200211120132903002117200641a8046a280200210b20062802e403210d20062802e0032104200641a8016a41106a220c200641bc046a280200360200200641a8016a41086a220e200641e0036a41d4006a2902003703002006200641e0036a41cc006a2902003703a80120044101460d01200641286a41186a2001290300370300200641286a41106a2012290300370300200f2005290300370300200641106a41086a200e290300370300200641106a41106a200c280200360200200620062903d801370328200620062903a8013703100c040b41002102024020092004280208470d000240201020042802002202470d00410121020c010b20102002200910e7074521020b024020052802002203450d00200541046a280200450d00200310290b2005201d36020420052010360200200541086a200936020020020d02200641e0036a200641b0026a10b806200641286a41086a200641e0036a41186a290300370300200641286a41106a20064180046a290300370300200641286a41186a20064188046a2903003703002006200641e0036a41106a290300370328200641ec036a2802002114200641e0036a41086a2802002116200429020421172004280200211120062802e403210320062802e003210241002108410121150c030b200041013602002000200d3602040c190b200b200c4101762202490d1441002108200641003a00e403200641003602e003200641e0036a200d20026a200d200b6a10b006200641d8016a41286a2202200641e0036a41286a280200360200200641d8016a41206a2214200641e0036a41206a290300370300200641d8016a41186a2215200641e0036a41186a220b290300370300200641d8016a41106a2216200641e0036a41106a220d290300370300200641d8016a41086a220e200641e0036a41086a220f290300370300200620062903e0033703d80110b606211220064188036a41086a20062903d80137030020064188036a41106a200e29030037030020064188036a41186a201629030037030020064188036a41206a201529030037030020064188036a41286a2014290300370300200641b8036a200228020036020020064188036a41c0006a200936020020064188036a413c6a201d360200200641c0036a201036020020064188036a41346a20123602002006200c41017136028c032006410436028803200641286a41086a220c200441086a28020036020020062004290200370328200641e0036a200120064188036a2003200641286a200510af06200641c8006a41086a220520064184046a290200370300200641c8006a41106a220e2006418c046a290200370300200641c8006a41186a2212200641e0036a41346a2902003703002006200641fc036a290200370348200f2802002115200641ec036a2802002102200d2802002103200641f4036a2802002116200b2802002114200641e0036a413c6a2802002111200641e0036a41c0006a2903002117200641a8046a280200210b20062802e403210d20062802e0032104200641a8016a41106a220f200641bc046a280200360200200641a8016a41086a2213200641b4046a2902003703002006200641ac046a2902003703a801024020044101460d00200641286a41186a2012290300370300200641286a41106a200e290300370300200c2005290300370300200641106a41086a2013290300370300200641106a41106a200f28020036020020062006290348370328200620062903a8013703100c020b200041013602002000200d3602040c180b200641e0036a200641b0026a10b806200641286a41086a200641e0036a41186a290300370300200641286a41106a20064180046a290300370300200641286a41186a20064188046a2903003703002006200641e0036a41106a290300370328200641ec036a2802002114200641e0036a41086a2802002116200429020421172004280200211120062802e403210320062802e003210241012115410121080b20062802b40241244d0d1e200641bc026a28020010290c1e0b20020d190b2010200d460d12200d4101762202200b4f0d11200c20026a2d0000210210b60621140240024020114101460d00200b200d41016a22154101762216490d1541002108200641003a00e403200641003602e003200641e0036a200c20166a200c200b6a10b00620064188036a41286a200641e0036a41286a280200221636020020064188036a41206a200641e0036a41206a290300221737030020064188036a41186a200641e0036a41186a290300221837030020064188036a41106a200641e0036a41106a290300221937030020064188036a41086a200641e0036a41086a220b290300221a370300200620062903e003221b37038803200b2015410171360200200641ec036a201b370200200641f4036a201a370200200641fc036a201937020020064184046a20183702002006418c046a201737020020064194046a201636020020064198046a20093a0000200641023602e40320064199046a20062f0194013b00002006419b046a20064194016a41026a2d00003a00002006419c046a200a360200200641b8046a200641f8006a41186a280200360200200641b0046a200641f8006a41106a290300370300200641a8046a200641f8006a41086a290300370300200641a0046a2006290378370300200641003a00e003200141286a200641e0036a10a906210a0c010b20064188036a41026a20064194016a41026a2d00003a0000200641e0036a41086a200641f8006a41086a290300370300200641e0036a41106a200641f8006a41106a290300370300200641e0036a41186a200641f8006a41186a280200360200200620062f0194013b018803200620062903783703e003200921080b20142002410f712002410476200d4101711b41246c6a220220083a0000200220062f0188033b00012002200a360204200220062903e003370208200241036a2006418a036a2d00003a0000200241106a200641e0036a41086a2215290300370200200241186a200641e0036a41106a2216290300370200200241206a200641e0036a41186a220b2802003602004100210820064188036a41086a41003602002006201436028c032006410336028803200641a8016a41086a200441086a280200360200200620042902003703a801200641e0036a200120064188036a2003200641a8016a200510af06200641b0026a41086a220d200641e0036a41246a290200370300200641b0026a41106a220c2006418c046a290200370300200641b0026a41186a220520064194046a2902003703002006200641fc036a2902003703b00220152802002115200641ec036a280200210220162802002103200641f4036a2802002116200b28020021142006419c046a2802002111200641a0046a2903002117200641a8046a280200210b20062802e403210e20062802e0032104200641d8016a41106a220f200641bc046a280200360200200641d8016a41086a2212200641b4046a2902003703002006200641ac046a2902003703d801024020044101460d00200641286a41186a2005290300370300200641286a41106a200c290300370300200641286a41086a200d290300370300200641106a41086a2012290300370300200641106a41106a200f280200360200200620062903b002370328200620062903d8013703100c1c0b200041013602002000200e3602040c190b2014200e41b4a0cc001036000b2016200b41b4a0cc001036000b2016200341c4a0cc00104c000b200e201641c4a0cc00104c000b2014200e41b4a0cc001036000b2016200b41b4a0cc001036000b2002200b41c4a0cc00104c000b2003200b41c4a0cc00104c000b2003200b41b4a0cc001036000b200d200341c4a0cc00104c000b2016200841c4a0cc00104c000b2002200b41c4a0cc00104c000b2014200e41b4a0cc001036000b2016200b41b4a0cc001036000b2008200b41b4a0cc001036000b200c200b41c4a0cc00104c000b2002200b41c4a0cc00104c000b2002200b41b4a0cc001036000b41c498c800412a41b8a1cc001033000b2016200b41c4a0cc00104c000b20062802b40241244d0d05200641bc026a2802001029200724000f0b200b200c4101762202490d0141002108200641003a00e403200641003602e003200641e0036a200d20026a200d200b6a10b006200641286a41086a200641f4036a290200370300200641386a200641fc036a290200370300200641c0006a20064184046a2902003703002006200641ec036a290200370328200c4101712102201cad4220862009ad842117200641e0036a41086a280200211420062802e403211620062802e0032103201d210b0b024020062802b40241244d0d00200641bc026a28020010290b410421150c050b2002200b41c4a0cc00104c000b024002400240024020022011460d00200b200d20026a22084101762214490d0241002111200641003a00e403200641003602e003200641e0036a200c20146a200c200b6a10b006200641a8016a41286a2214200641e0036a41286a280200360200200641a8016a41206a2216200641e0036a41206a290300370300200641a8016a41186a220b200641e0036a41186a290300370300200641a8016a41106a220d200641e0036a41106a290300370300200641a8016a41086a220c200641e0036a41086a220e290300370300200620062903e0033703a8012003200328020820026a360208200641bc036a20093a00002006200841017136028c0341022115200641023602880320064188036a41086a220820062903a80137030020064188036a41106a220f200c29030037030020064188036a41186a220c200d29030037030020064188036a41206a220d200b29030037030020064188036a41286a220b2016290300370300200641b8036a2014280200360200200641bf036a20064194016a41026a2d00003a0000200620062f0194013b00bd03200641c0036a200a360200200641dc036a200641f8006a41186a280200360200200641d4036a200641f8006a41106a290300370200200641cc036a200641f8006a41086a290300370200200641c4036a2006290378370200200641286a41086a2214200441086a28020036020020062004290200370328200641e0036a200120064188036a2003200641286a200510af0620062802e403211620062802e0032103200641b0026a200e41d80010e4071a20034101460d01200641d8016a200641b0026a41d80010e4071a20064188036a20064198016a200210b706200641e0036a410472200641d8016a41d80010e4071a200641003a00e003200141286a200641e0036a10a90621022014200c290300370300200641286a41106a200d290300370300200641286a41186a200b2903003703002006200f2903003703282002ad21172008280200211620064194036a28020021142006280288032102200628028c032103410021080c060b2003200328020820116a360208200641e0036a41086a2006290378370300200641e0036a41106a200641f8006a41086a290300370300200641e0036a41186a200641f8006a41106a29030037030020064180046a200641f8006a41186a280200360200200620093a00e003200620062f0194013b00e103200620064196016a2d00003a00e3032006200a3602e40320064188036a41086a200441086a2802003602002006200429020037038803200641b0026a2001200641e0036a200320064188036a200510ac0620062802b4022115024020062802b0024101460d00200b200d4101762202490d03200641b0026a41086a2d0000210341002111200641003a00e403200641003602e003200641e0036a200c20026a200c200b6a10b006200641286a41086a200641f4036a290200370300200641386a200641fc036a290200370300200641c0006a20064184046a2902003703002006200641ec036a290200370328200d4101712102200341ff0171452108200641e0036a41086a280200211420062802e403211620062802e00321032015ad2117410221150c060b20004101360200200020153602040c030b20004101360200200020163602040c020b2014200b41c4a0cc00104c000b2002200b41c4a0cc00104c000b200628024c41244d0d00200641d4006a2802001029200724000f0b200724000f0b200628024c41244d0d00200641d4006a28020010290b20002008360204200041186a2014360200200041146a2016360200200041106a20033602002000410c6a2002360200200041086a20153602002000411c6a2006290328370200200041c8006a200b360200200041c0006a20173702002000413c6a2011360200200041cc006a2006290310370200200041246a200641286a41086a2903003702002000412c6a200641286a41106a290300370200200041346a200641286a41186a290300370200200041d4006a200641106a41086a290300370200200041dc006a200641106a41106a28020036020020004100360200200724000baf0301077f230041106b2203240020032000200220016b10d207024002400240024020032802004101470d00200341086a2802000d0141a4a1cc00411141b8a1cc001033000b41242104024002402000280200220541244b0d00200041056a210620052107200021080c010b2000410c6a22082802002107200041086a2802002106200521040b0240200720044f0d00034020022001460d03200620076a20012d00003a0000200141016a2101200741016a22072004490d000b0b2008200736020020012002460d02200141016a2107200041056a21092000410c6a210820012d000021060340024002402000280200220441244b0d0041242105200421010c010b20082802002101200421050b024020012005470d0020032000410110d207024020032802004101470d00200341086a2802000d0341a4a1cc00411141b8a1cc001033000b200028020021040b02400240200441244b0d0020092104200021050c010b20002802082104200821050b2005200141016a360200200420016a20063a000020022007460d0320072d00002106200741016a21070c000b0b1030000b200820073602000b200341106a24000bdd37070b7f017e027f017e057f037e017f230022052106200541e0036b41607122052400200328020821072003280200210820032802042109200541d8006a41086a220a2002411c6a290200370300200541d8006a41106a220b200241246a290200370300200541d8006a41186a220c2002412c6a290200370300200541c0006a41086a220d200241cc006a290200370300200541c0006a41106a220e200241d4006a2802003602002005200241146a2902003703582005200241c4006a2902003703402009410174210f2002413c6a2902002110200241386a2802002111200241346a28020021122002410c6a2902002113200241086a280200211420022802042115410221160240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802000e051d070001021d0b200541f8006a41086a2013370300200541f8006a41106a22172005290358370300200541f8006a41186a200a29030037030020054198016a200b290300370300200541a0016a200c290300370300200520153602782005201436027c200541a8016a41106a200e280200360200200541a8016a41086a200d290300370300200520052903403703a80102400240201441244b0d0020054181016a210c2014210b0c010b2013422088a7210c200528028801210b0b410021020240200f20076b2218200b41017420156b220e200e20184b1b220d450d000340201520026a22184101762216200b4f0d0f200720026a220f410176220a20094f0d10200c20166a2d00002216410f71201641f0017141047620184101711b2008200a6a2d00002218410f712018410476200f4101711b470d01200241016a2202200d490d000b0b2002200e460d07200541206a41186a201741186a290200370300200541206a41106a201741106a290200370300200541206a41086a201741086a290200370300200541086a41086a200541a8016a41086a290300370300200541086a41106a200541a8016a41106a280200360200200520052903a8013703082005201729020037032041022118410121160c1c0b200f2007470d0320140d014101211641032118410021140c1b0b200f2007470d0320110d01200541206a41186a200541d8006a41186a290300370300200541206a41106a200541d8006a41106a290300370300200541206a41086a200541d8006a41086a290300370300200520052903583703204101211641042118410021110c1a0b024020042802002202450d00200441046a280200450d00200210290b20042013370204200420143602004100211620054188036a41086a41003602002005201536028c032005410336028803200541206a41086a2202200341086a28020036020020052003290200370320200541a0026a200120054188036a200541206a10b306200541f8006a41086a2207200541c0026a290300370300200541f8006a41106a2209200541c8026a290300370300200541f8006a41186a2208200541d0026a29030037030020054180026a41086a2203200541f0026a29030037030020054180026a41106a220f200541f8026a2802003602002005200541a0026a41186a2903003703782005200541e8026a2903003703800220052802a4022118024020052802a0024101460d00200541a0026a41086a2802002115200541ac026a2802002114200541a0026a41106a2903002113200541d8026a2802002112200541dc026a2802002111200541e0026a2903002110200541206a41186a2008290300370300200541206a41106a200929030037030020022007290300370300200541086a41086a2003290300370300200541086a41106a200f2802003602002005200529037837032020052005290380023703080c1a0b200041013602000c1a0b20054180026a41186a2202200541d8006a41186a29030037030020054180026a41106a2207200541d8006a41106a29030037030020054180026a41086a2209200541d8006a41086a2903003703002005200529035837038002024020042802002208450d00200441046a280200450d00200810290b200420103702042004201136020020054188036a410c6a201337020020054188036a41086a20143602002005419c036a200529038002370200200541a4036a2009290300370200200541ac036a2007290300370200200541b4036a20022903003702004100211620054188036a41386a4100360200200541bc036a20123602002005201536028c032005410436028803200541206a41086a200341086a28020036020020052003290200370320200541a0026a200120054188036a200541206a10b306200541f8006a41086a200541c0026a290300370300200541f8006a41106a200541c8026a290300370300200541f8006a41186a200541d0026a290300370300200541e8016a41086a200541f0026a290300370300200541e8016a41106a200541f8026a2802003602002005200541a0026a41186a2903003703782005200541e8026a2903003703e80120052802a4022118024020052802a0024101460d00200541a0026a41086a2802002115200541a0026a410c6a2802002114200541a0026a41106a2903002113200541a0026a41386a2802002112200541dc026a2802002111200541e0026a2903002110200541206a41186a200541f8006a41186a290300370300200541206a41106a200541f8006a41106a290300370300200541206a41086a200541f8006a41086a290300370300200541086a41086a200541e8016a41086a290300370300200541086a41106a200541e8016a41106a28020036020020052005290378370320200520052903e8013703080c190b200041013602000c190b410121162007410176220220094f0d0a2015200820026a2d00002202410f71200241047620074101711b220941246c6a22022902102119200220052903b0023702102002290208211a200220052903a80237020820022902002110200541023a00a002200220052903a002370200200241186a2207290200211b200720052903b8023702004103211802402010a741ff01714102470d000c180b20022802202107200541e8016a41086a200341086a220828020022163602002008201641016a360200200520032902003703e801200541a0026a41186a201b370300200541c0026a2007360200200520193703b0022005201a3703a802200520103703a00220054188036a2001200541a0026a2003200410ad06200528028c0321070240024002402005280288034101460d0020054188036a41086a2d0000220841ff01714102470d0120054188036a410c6a201337020020054188036a41086a20143602002005201536028c032005410336028803200541206a41086a2202200541e8016a41086a280200360200200520052903e801370320200541a0026a200120054188036a200541206a10b306200541f8006a41086a2207200541c0026a290300370300200541f8006a41106a2209200541c8026a290300370300200541f8006a41186a2208200541d0026a29030037030020054180026a41086a2203200541f0026a29030037030020054180026a41106a2216200541f8026a2802003602002005200541a0026a41186a2903003703782005200541e8026a2903003703800220052802a402211820052802a0024101460d02200541a0026a41086a2802002115200541a0026a410c6a2802002114200541a0026a41106a2903002113200541d8026a2802002112200541dc026a2802002111200541e0026a2903002110200541206a41186a2008290300370300200541206a41106a200929030037030020022007290300370300200541086a41086a2003290300370300200541086a41106a20162802003602002005200529037837032020052005290380023703080c060b200041013602002000200736020402402014450d002013a7450d00201410290b20151029200624000f0b200241003a00002015200941246c6a41046a20073602002008417f7341017121160c180b200041013602000c180b200541f8006a41086a2013370300200541f8006a41106a22172005290358370300200541f8006a41186a200541d8006a41086a29030037030020054198016a200541d8006a41106a290300370300200541a0016a200541d8006a41186a290300370300200520153602782005201436027c02400240201441244b0d0020054181016a210c2014210b0c010b2013422088a7210c200528028801210b0b410021020240200f20076b221c200b41017420156b220e200e201c4b1b220d450d000340201520026a22184101762216200b4f0d0c200720026a220f410176220a20094f0d0d200c20166a2d00002216410f71201641f0017141047620184101711b2008200a6a2d00002218410f712018410476200f4101711b470d01200241016a2202200d490d000b0b0240024002402002200e470d00200e201c460d010b2002200e4f0d01200541206a41186a201741186a290200370300200541206a41106a201741106a290200370300200541206a41086a201741086a2902003703002005201729020037032041042118410121160c180b2011450d06024020042802002202450d00200441046a280200450d00200210290b2004201037020420042011360200200541b4036a200541f8006a41286a290300370200200541ac036a200541f8006a41206a290300370200200541a4036a200541f8006a41186a2903003702002005419c036a200541f8006a41106a29030037020020054188036a410c6a200541f8006a41086a2903003702004100211620054188036a41386a4100360200200541bc036a20123602002005200529037837028c03200541043602880320054180026a41086a2202200341086a2802003602002005200329020037038002200541a0026a200120054188036a20054180026a10b30620054188036a41086a2209200541a0026a41206a29030037030020054188036a41106a2208200541a0026a41286a29030037030020054188036a41186a2203200541d0026a2903003703002005200541a0026a41186a29030037038803200541a0026a41086a2802002115200541a0026a410c6a2802002114200541a0026a41106a2903002113200541a0026a41386a2802002112200541dc026a2802002111200541e0026a290300211020052802a402211820052802a00221072002200541f0026a29030037030020054180026a41106a220f200541f8026a2802003602002005200541e8026a2903003703800220074101460d04200541206a41186a2003290300370300200541206a41106a2008290300370300200541206a41086a2009290300370300200541086a41086a2002290300370300200541086a41106a200f280200360200200520052903880337032020052005290380023703080c170b200720026a2215410176220720094f0d0f410421182012200820076a2d00002207410f71200741047620154101711b220941246c6a22152902102119201520052903b0023702102015290208211a201520052903a80237020820152902002113200541023a00a002201520052903a002370200201541186a2207290200211b200720052903b80237020002402013a741ff01714102470d00200541206a41086a201741086a290200370300200541206a41106a201741106a290200370300200541206a41186a201741186a29020037030020052017290200370320410121160c160b20152802202107200541d0016a41086a200341086a220828020022183602002008200220186a41016a360200200520032902003703d001200541a0026a41186a201b370300200541c0026a2007360200200520193703b0022005201a3703a802200520133703a00220054188036a2001200541a0026a2003200410ad06200528028c0321022005280288034101460d040240024020054188036a41086a2d0000220741ff01714102470d00200541b4036a200541f8006a41286a290300370200200541ac036a200541f8006a41206a290300370200200541a4036a200541f8006a41186a2903003702002005419c036a200541f8006a41106a29030037020020054188036a410c6a200541f8006a41086a29030037020020054188036a413c6a201037020020054188036a41386a2011360200200541bc036a20123602002005200529037837028c032005410436028803200541206a41086a2202200541d0016a41086a280200360200200520052903d001370320200541a0026a200120054188036a200541206a10b30620054180026a41086a2207200541a0026a41206a29030037030020054180026a41106a2209200541a0026a41286a29030037030020054180026a41186a2208200541d0026a290300370300200541e8016a41086a2203200541f0026a290300370300200541e8016a41106a2216200541f8026a2802003602002005200541a0026a41186a290300370380022005200541e8026a2903003703e80120052802a402211820052802a0024101470d01200041013602000c190b201541003a0000410421182012200941246c6a41046a2002360200200541206a41086a201741086a290200370300200541206a41106a201741106a290200370300200541206a41186a201741186a290200370300200520172902003703202007417f7341017121160c160b200541a0026a41086a2802002115200541a0026a410c6a2802002114200541a0026a41106a2903002113200541a0026a41386a2802002112200541a0026a413c6a2802002111200541e0026a2903002110200541206a41186a2008290300370300200541206a41106a200929030037030020022007290300370300200541086a41086a2003290300370300200541086a41106a20162802003602002005200529038002370320200520052903e8013703080c020b200541a0026a41086a2013370300200541a0026a41106a22012005290358370300200541a0026a41186a200a290300370300200541c0026a200b290300370300200541c8026a200c290300370300200520153602a002200520143602a40202400240201441244b0d00200541a9026a210d2014210b0c010b2013422088a7210d20052802b002210b0b200b41017420156b200f20076b220c470d1241002102200c450d110340201520026a22034101762218200b4f0d0c200720026a220f410176220a20094f0d0d200d20186a2d00002218410f71201841f0017141047620034101711b2008200a6a2d00002203410f712003410476200f4101711b470d12200c200241016a2202470d000c140b0b200541c0016a41086a200341086a220228020036020020022007200e6a360200200520032902003703c001200541a0026a41086a2010370300200541a0026a41106a20052903a801370300200541b8026a200541a8016a41086a290300370300200541c0026a200541a8016a41106a280200360200200520113602a402200520123602a00220054188036a2001200541a0026a2003200410ad06200528028c032111024002402005280288034101460d0020054188036a41086a2d0000220241ff01714102470d01200528027c41244b0d06410221160c160b2000410136020020002011360204200528027c41244d0d1720054184016a2802001029200624000f0b41012116024020024101710d00200541206a41086a201741086a290200370300200541206a41106a201741106a290200370300200541206a41186a201741186a290200370300200541086a41086a200541d0016a41086a290200370300200541086a41106a200541d0016a41106a280200360200200520052902d0013703082005201729020037032041022118410021122005290380012113200528027c2114200528027821150c150b200541b4036a200541f8006a41286a290300370200200541ac036a200541f8006a41206a290300370200200541a4036a200541f8006a41186a2903003702002005419c036a200541f8006a41106a29030037020020054188036a410c6a200541f8006a41086a29030037020020054188036a41386a2011360200200541bc036a41003602002005200529037837028c03200541cc036a20052902d001370200200541d4036a200541d0016a41086a290200370200200541dc036a200541d0016a41106a2802003602002005410236028803200541206a41086a2202200541c0016a41086a280200360200200520052903c001370320200541a0026a200120054188036a200541206a10b30620054180026a41086a2207200541a0026a41206a29030037030020054180026a41106a2209200541a0026a41286a29030037030020054180026a41186a2208200541d0026a290300370300200541e8016a41086a2203200541f0026a290300370300200541e8016a41106a2216200541f8026a2802003602002005200541a0026a41186a290300370380022005200541e8026a2903003703e80120052802a402211820052802a0024101460d0c200541a0026a41086a2802002115200541a0026a410c6a2802002114200541a0026a41106a2903002113200541a0026a41386a2802002112200541dc026a2802002111200541e0026a2903002110200541206a41186a2008290300370300200541206a41106a200929030037030020022007290300370300200541086a41086a2003290300370300200541086a41106a20162802003602002005200529038002370320200520052903e8013703080b410021160c130b200041013602000c130b20004101360200200020023602042011450d0c2010a70d0b0c0c0b200541206a41186a201741186a290200370300200541206a41106a201741106a290200370300200541206a41086a201741086a290200370300200520172902003703204100211141042118410121160c100b20054184016a2802001029410221160c0f0b2016200b41b4a0cc001036000b200a200941b4a0cc001036000b2002200941b4a0cc001036000b2016200b41b4a0cc001036000b200a200941b4a0cc001036000b2018200b41b4a0cc001036000b200a200941b4a0cc001036000b200041013602000c080b2007200941b4a0cc001036000b201110290b20121029200528027c41244d0d0620054184016a2802001029200624000f0b2002200c460d010b200541206a41186a200141186a290200370300200541206a41106a200141106a290200370300200541206a41086a200141086a29020037030020052001290200370320201042ffffffff0f83211041012118410121160c020b2010a7210202400240200428020022070d00201421070c010b0240200441046a2802000d00201421070c010b2007102920052802a40221070b2004201136020420042012360200200441086a20023602000240200741244b0d00410121180c020b200541ac026a2802001029410121180c010b2005290380012113200528027c2114200528027821150b20002016360204200041146a2013370200200041106a20143602002000410c6a2015360200200041086a20183602002000411c6a2005290320370200200041c4006a2010370200200041c0006a20113602002000413c6a2012360200200041cc006a2005290308370200200041246a200541206a41086a2903003702002000412c6a200541206a41106a290300370200200041346a200541206a41186a290300370200200041d4006a200541086a41086a290300370200200041dc006a200541086a41106a28020036020020004100360200200624000f0b200020183602040b200624000baaa50120047f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e027f017e067f017e067f017e230041b00e6b22052400200541086a2002200310870402400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d00084101470d0020052d00092102200541900e6a41086a2203200141086a290000370300200541900e6a41106a2204200141106a290000370300200541900e6a41186a2206200141186a290000370300200520012900003703900e4130102722010d010c2c0b200541d4016a2802002107200541d0016a2802002108200541c8016a2903002109200541c4016a280200210a200541bc016a290200210b200541b8016a280200210c200541b0016a290300210d200541ac016a280200210e200541a4016a290200210f200541a0016a280200211020054198016a290300211120054194016a28020021122005418c016a290200211320054188016a280200211420054180016a2903002115200541fc006a2802002116200541f4006a2902002117200541f0006a2802002118200541e8006a2903002119200541e4006a280200211a200541dc006a290200211b200541086a41d0006a280200211c200541086a41c8006a290300211d200541086a41c4006a280200211e200541086a413c6a290200211f200541086a41386a2802002120200541086a41306a2903002121200541346a28020021222005412c6a22232902002124200541086a41206a2802002125200541246a22262802002127200541086a41186a28020021022005411c6a22282802002129200541086a410c6a222a290200212b200541086a41086a222c28020021064100212d200528020c0e051502030401150b200141033a0000200120052903900e370001200120023a0021200120052901e00d370122200141096a2003290300370000200141116a2004290300370000200141196a2006290300370000200141286a200541e60d6a29010037010020004101360200200020013602040c290b200541e0016a280200212e200541dc016a280200212d200541d8016a2802002123410221030240024020294102470d00410021024100212f0c010b200541900e6a41186a222f200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e200541e00d6a41086a2027360200200520023602e40d200520293602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012102024020052802084101460d00202f200541286a2903003703002030200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e71212f0b200541c0066a41186a2230200541900e6a41186a290300370300200541c0066a41106a2229200541900e6a41106a290300370300200541c0066a41086a2231200541900e6a41086a290300370300200520052903900e3703c006202f200341ff017172212f20020d03200541a0066a41186a2030290300370300200541a0066a41106a2029290300370300200541a0066a41086a2031290300370300200520052903c0063703a006410221024100210341002130024020254102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e200520243702e40d200520253602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210241012103024020052802084101460d002030200541286a2903003703002029200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b200241807e7121300b20054180076a41186a2229200541900e6a41186a29030037030020054180076a41106a2231200541900e6a41106a29030037030020054180076a41086a2226200541900e6a41086a290300370300200520052903900e370380072030200241ff017172210220030d04200541e0066a41186a2029290300370300200541e0066a41106a2031290300370300200541e0066a41086a202629030037030020052005290380073703e006410221034100213041002129024020224102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a2231200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002029200541286a2903003703002031200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121290b200541c0076a41186a2231200541900e6a41186a290300370300200541c0076a41106a2226200541900e6a41106a290300370300200541c0076a41086a2228200541900e6a41086a290300370300200520052903900e3703c0072029200341ff017172212920300d05200541a0076a41186a2031290300370300200541a0076a41106a2026290300370300200541a0076a41086a2028290300370300200520052903c0073703a007410221034100213041002131024020204102460d00200541900e6a41186a2231200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002031200541286a2903003703002026200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121310b20054180086a41186a2226200541900e6a41186a29030037030020054180086a41106a2228200541900e6a41106a29030037030020054180086a41086a222a200541900e6a41086a290300370300200520052903900e370380082031200341ff017172213120300d06200541e0076a41186a2026290300370300200541e0076a41106a2028290300370300200541e0076a41086a202a29030037030020052005290380083703e0074102210341002130410021260240201e4102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a222a200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002026200541286a2903003703002028200541086a41186a290300370300202a200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121260b200541c0086a41186a2228200541900e6a41186a290300370300200541c0086a41106a222a200541900e6a41106a290300370300200541c0086a41086a2227200541900e6a41086a290300370300200520052903900e3703c0082026200341ff017172212620300d07200541a0086a41186a2028290300370300200541a0086a41106a202a290300370300200541a0086a41086a2027290300370300200520052903c0083703a0084102210341002130410021280240201c4102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a222a200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002028200541286a290300370300202a200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121280b20054180096a41186a222a200541900e6a41186a29030037030020054180096a41106a2227200541900e6a41106a29030037030020054180096a41086a222c200541900e6a41086a290300370300200520052903900e370380092028200341ff017172212820300d08200541e0086a41186a202a290300370300200541e0086a41106a2027290300370300200541e0086a41086a202c29030037030020052005290380093703e00841022103410021304100212a0240201a4102460d00200541900e6a41186a222a200141186a290000370300200541900e6a41106a2227200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d00202a200541286a2903003703002027200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e71212a0b200541c0096a41186a2227200541900e6a41186a290300370300200541c0096a41106a222c200541900e6a41106a290300370300200541c0096a41086a2225200541900e6a41086a290300370300200520052903900e3703c009202a200341ff017172212a20300d09200541a0096a41186a2027290300370300200541a0096a41106a202c290300370300200541a0096a41086a2025290300370300200520052903c0093703a009410221034100213041002127024020184102460d00200541900e6a41186a2227200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002027200541286a290300370300202c200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121270b200541800a6a41186a222c200541900e6a41186a290300370300200541800a6a41106a2225200541900e6a41106a290300370300200541800a6a41086a2222200541900e6a41086a290300370300200520052903900e3703800a2027200341ff017172212720300d0a200541e0096a41186a202c290300370300200541e0096a41106a2025290300370300200541e0096a41086a2022290300370300200520052903800a3703e00941022103410021304100212c024020164102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2222200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d00202c200541286a2903003703002025200541086a41186a2903003703002022200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e71212c0b200541c00a6a41186a2225200541900e6a41186a290300370300200541c00a6a41106a2222200541900e6a41106a290300370300200541c00a6a41086a2220200541900e6a41086a290300370300200520052903900e3703c00a202c200341ff017172212c20300d0b200541a00a6a41186a2025290300370300200541a00a6a41106a2022290300370300200541a00a6a41086a2020290300370300200520052903c00a3703a00a410221034100213041002125024020144102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2222200141106a290000370300200541900e6a41086a2220200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002025200541286a2903003703002022200541086a41186a2903003703002020200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121250b200541800b6a41186a2222200541900e6a41186a290300370300200541800b6a41106a2220200541900e6a41106a290300370300200541800b6a41086a221e200541900e6a41086a290300370300200520052903900e3703800b2025200341ff017172212520300d0c200541e00a6a41186a2022290300370300200541e00a6a41106a2020290300370300200541e00a6a41086a201e290300370300200520052903800b3703e00a410221034100213041002122024020124102460d00200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121220b200541c00b6a41186a2220200541900e6a41186a290300370300200541c00b6a41106a221e200541900e6a41106a290300370300200541c00b6a41086a221c200541900e6a41086a290300370300200520052903900e3703c00b2022200341ff017172212220300d0d200541a00b6a41186a2020290300370300200541a00b6a41106a201e290300370300200541a00b6a41086a201c290300370300200520052903c00b3703a00b410221034100213041002120024020104102460d00200541900e6a41186a2220200141186a290000370300200541900e6a41106a221e200141106a290000370300200541900e6a41086a221c200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012130024020052802084101460d002020200541286a290300370300201e200541086a41186a290300370300201c200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b200341807e7121200b200541800c6a41186a221e200541900e6a41186a290300370300200541800c6a41106a221c200541900e6a41106a290300370300200541800c6a41086a221a200541900e6a41086a290300370300200520052903900e3703800c2020200341ff017172212020300d0e200541e00b6a41186a201e290300370300200541e00b6a41106a201c290300370300200541e00b6a41086a201a290300370300200520052903800c3703e00b41022130410021034100211e0240200e4102460d00200541900e6a41186a221e200141186a290000370300200541900e6a41106a221c200141106a290000370300200541900e6a41086a221a200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c213041012103024020052802084101460d00201e200541286a290300370300201c200541086a41186a290300370300201a200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b203041807e71211e203041ff017121300b200541c00c6a41186a221c200541900e6a41186a290300370300200541c00c6a41106a221a200541900e6a41106a290300370300200541c00c6a41086a2218200541900e6a41086a290300370300200520052903900e3703c00c201e203072213020030d0f200541a00c6a41186a201c290300370300200541a00c6a41106a201a290300370300200541a00c6a41086a2018290300370300200520052903c00c3703a00c4102211e410021034100211c0240200c4102460d00200541900e6a41186a221c200141186a290000370300200541900e6a41106a221a200141106a290000370300200541900e6a41086a2218200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c211e41012103024020052802084101460d00201c200541286a290300370300201a200541086a41186a2903003703002018200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b201e41807e71211c201e41ff0171211e0b200541800d6a41186a221a200541900e6a41186a290300370300200541800d6a41106a2218200541900e6a41106a290300370300200541800d6a41086a2216200541900e6a41086a290300370300200520052903900e3703800d201c201e72211e20030d10200541e00c6a41186a201a290300370300200541e00c6a41106a2018290300370300200541e00c6a41086a2016290300370300200520052903800d3703e00c4102211c410021034100211a0240200a4102460d00200541900e6a41186a221a200141186a290000370300200541900e6a41106a2218200141106a290000370300200541900e6a41086a2216200141086a290000370300200520012900003703900e200520093702e40d2005200a3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c211c41012103024020052802084101460d00201a200541286a2903003703002018200541086a41186a2903003703002016200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b201c41807e71211a201c41ff0171211c0b200541c00d6a41186a2218200541900e6a41186a290300370300200541c00d6a41106a2216200541900e6a41106a290300370300200541c00d6a41086a2214200541900e6a41086a290300370300200520052903900e3703c00d201a201c72211c20030d24200541a00d6a41186a2018290300370300200541a00d6a41106a2016290300370300200541a00d6a41086a2014290300370300200520052903c00d3703a00d4102210320084102470d1141002101410021040c120b41002101200541003a000c20054100360208200541086a20062006202ba76a10b006200541900e6a41086a2028290200370300200541a00e6a2026290200370300200541900e6a41186a20232902003703002005202a2902003703900e2002417f4c0d13200529020c21322005280208212f0240024020020d00410121030c010b200210272203450d25200221010b0240024020012002490d00200121300c010b200141017422042002200420024b1b22304100480d26024020010d00203010272203450d2a0c010b20012030460d00200320012030102b2203450d290b202b422088a7213120032029200210e4071a20054180026a41186a200541900e6a41186a29030037030020054180026a41106a200541900e6a41106a29030037030020054180026a41086a200541900e6a41086a290300370300200520052903900e370380024101212d0c120b200541003a000c20054100360208200541086a20062006202ba76a10b006200541e00d6a41086a2028290200370300200541e00d6a41106a22302026290200370300200541e00d6a41186a20232902003703002005202a2902003703e00d202c2802002106200528020c21312005280208212f200541900e6a41186a200141186a290000370300200541900e6a41106a200141106a290000370300200541900e6a41086a200141086a290000370300200520012900003703900e200541a00d6a41086a2027360200200520023602a40d200520293602a00d200541086a200541900e6a200541a00d6a200410b506200541c00d6a41086a2026290200370300200541c00d6a41106a22012023280200360200200520282902003703c00d200528020c2103024020052802084101460d00202c2903002124200541086a41106a280200212e200541e8016a41106a2001280200360200200541e8016a41086a200541c00d6a41086a29030037030020054180026a41086a200541e00d6a41086a29030037030020054180026a41106a203029030037030020054180026a41186a200541e00d6a41186a290300370300200520052903c00d3703e801200520052903e00d370380022006ad4220862031ad8421322024422088a72102202b422088a721312024a721304102212d0c120b2000410136020020002003360204202f41244d0d26200610290c260b410221034100212f4100212e024020064102460d00200541900e6a41186a222f200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e2005202b3702e40d200520063602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21034101212e024020052802084101460d00202f200541286a2903003703002030200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e4100212e0b200341807e71212f0b200541c0066a41186a2230200541900e6a41186a290300370300200541c0066a41106a2231200541900e6a41106a290300370300200541c0066a41086a222d200541900e6a41086a290300370300200520052903900e3703c006200341ff0171202f722106202e0d12200541a0066a41186a2030290300370300200541a0066a41106a2031290300370300200541a0066a41086a202d290300370300200520052903c0063703a006410221030240024020294102470d004100212e410021020c010b200541900e6a41186a222e200141186a290000370300200541900e6a41106a222f200141106a290000370300200541900e6a41086a2230200141086a290000370300200520012900003703900e200541e00d6a41086a2027360200200520023602e40d200520293602e00d200541086a200541900e6a200541e00d6a200410b506200528020c210341012102024020052802084101460d00202e200541286a290300370300202f200541086a41186a2903003703002030200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e71212e0b20054180076a41186a222f200541900e6a41186a29030037030020054180076a41106a2230200541900e6a41106a29030037030020054180076a41086a2229200541900e6a41086a290300370300200520052903900e37038007200341ff0171202e72210320020d13200541e0066a41186a202f290300370300200541e0066a41106a2030290300370300200541e0066a41086a202929030037030020052005290380073703e006410221024100212f4100212e024020254102460d00200541900e6a41186a222f200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a2229200141086a290000370300200520012900003703900e200520243702e40d200520253602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21024101212e024020052802084101460d00202f200541286a2903003703002030200541086a41186a2903003703002029200541086a41106a2903003703002005200541086a41086a2903003703900e4100212e0b200241807e71212f0b200541c0076a41186a2230200541900e6a41186a290300370300200541c0076a41106a2229200541900e6a41106a290300370300200541c0076a41086a2231200541900e6a41086a290300370300200520052903900e3703c007200241ff0171202f722102202e0d14200541a0076a41186a2030290300370300200541a0076a41106a2029290300370300200541a0076a41086a2031290300370300200520052903c0073703a0074102212e410021304100212f024020224102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212e4101212f024020052802084101460d002030200541286a2903003703002029200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e4100212f0b202e41807e7121300b20054180086a41186a2229200541900e6a41186a29030037030020054180086a41106a2231200541900e6a41106a29030037030020054180086a41086a222d200541900e6a41086a290300370300200520052903900e37038008202e41ff0171203072212e202f0d15200541e0076a41186a2029290300370300200541e0076a41106a2031290300370300200541e0076a41086a202d29030037030020052005290380083703e0074102212f4100212941002130024020204102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a2231200141106a290000370300200541900e6a41086a222d200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212f41012130024020052802084101460d002029200541286a2903003703002031200541086a41186a290300370300202d200541086a41106a2903003703002005200541086a41086a2903003703900e410021300b202f41807e7121290b200541c0086a41186a2231200541900e6a41186a290300370300200541c0086a41106a222d200541900e6a41106a290300370300200541c0086a41086a2223200541900e6a41086a290300370300200520052903900e3703c008202f41ff0171202972212f20300d16200541a0086a41186a2031290300370300200541a0086a41106a202d290300370300200541a0086a41086a2023290300370300200520052903c0083703a0084102213041002131410021290240201e4102460d00200541900e6a41186a2231200141186a290000370300200541900e6a41106a222d200141106a290000370300200541900e6a41086a2223200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c213041012129024020052802084101460d002031200541286a290300370300202d200541086a41186a2903003703002023200541086a41106a2903003703002005200541086a41086a2903003703900e410021290b203041807e7121310b20054180096a41186a222d200541900e6a41186a29030037030020054180096a41106a2223200541900e6a41106a29030037030020054180096a41086a2226200541900e6a41086a290300370300200520052903900e37038009203041ff0171203172213020290d17200541e0086a41186a202d290300370300200541e0086a41106a2023290300370300200541e0086a41086a202629030037030020052005290380093703e008410221294100212d410021310240201c4102460d00200541900e6a41186a222d200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212941012131024020052802084101460d00202d200541286a2903003703002023200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202941807e71212d0b200541c0096a41186a2223200541900e6a41186a290300370300200541c0096a41106a2226200541900e6a41106a290300370300200541c0096a41086a2228200541900e6a41086a290300370300200520052903900e3703c009202941ff0171202d72212920310d18200541a0096a41186a2023290300370300200541a0096a41106a2026290300370300200541a0096a41086a2028290300370300200520052903c0093703a00941022131410021234100212d0240201a4102460d00200541900e6a41186a2223200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21314101212d024020052802084101460d002023200541286a2903003703002026200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e4100212d0b203141807e7121230b200541800a6a41186a2226200541900e6a41186a290300370300200541800a6a41106a2228200541900e6a41106a290300370300200541800a6a41086a222a200541900e6a41086a290300370300200520052903900e3703800a203141ff01712023722123202d0d19200541e0096a41186a2026290300370300200541e0096a41106a2028290300370300200541e0096a41086a202a290300370300200520052903800a3703e00941022131410021264100212d024020184102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a222a200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21314101212d024020052802084101460d002026200541286a2903003703002028200541086a41186a290300370300202a200541086a41106a2903003703002005200541086a41086a2903003703900e4100212d0b203141807e7121260b200541c00a6a41186a2228200541900e6a41186a290300370300200541c00a6a41106a222a200541900e6a41106a290300370300200541c00a6a41086a2227200541900e6a41086a290300370300200520052903900e3703c00a203141ff01712026722126202d0d1a200541a00a6a41186a2028290300370300200541a00a6a41106a202a290300370300200541a00a6a41086a2027290300370300200520052903c00a3703a00a41022131410021284100212d024020164102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a222a200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21314101212d024020052802084101460d002028200541286a290300370300202a200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e4100212d0b203141807e7121280b200541800b6a41186a222a200541900e6a41186a290300370300200541800b6a41106a2227200541900e6a41106a290300370300200541800b6a41086a222c200541900e6a41086a290300370300200520052903900e3703800b203141ff01712028722128202d0d1b200541e00a6a41186a202a290300370300200541e00a6a41106a2027290300370300200541e00a6a41086a202c290300370300200520052903800b3703e00a410221314100212d4100212a024020144102460d00200541900e6a41186a222a200141186a290000370300200541900e6a41106a2227200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21314101212d024020052802084101460d00202a200541286a2903003703002027200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e4100212d0b203141807e71212a0b200541c00b6a41186a2227200541900e6a41186a290300370300200541c00b6a41106a222c200541900e6a41106a290300370300200541c00b6a41086a2225200541900e6a41086a290300370300200520052903900e3703c00b202a203141ff017172212a202d0d1c200541a00b6a41186a2027290300370300200541a00b6a41106a202c290300370300200541a00b6a41086a2025290300370300200520052903c00b3703a00b410221314100212d41002127024020124102460d00200541900e6a41186a2227200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410b506200528020c21314101212d024020052802084101460d002027200541286a290300370300202c200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e4100212d0b203141807e7121270b200541800c6a41186a222c200541900e6a41186a290300370300200541800c6a41106a2225200541900e6a41106a290300370300200541800c6a41086a2222200541900e6a41086a290300370300200520052903900e3703800c2027203141ff0171722127202d0d1d200541e00b6a41186a202c290300370300200541e00b6a41106a2025290300370300200541e00b6a41086a2022290300370300200520052903800c3703e00b4102212d410021314100212c024020104102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2222200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212d41012131024020052802084101460d00202c200541286a2903003703002025200541086a41186a2903003703002022200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202d41807e71212c202d41ff0171212d0b200541c00c6a41186a2225200541900e6a41186a290300370300200541c00c6a41106a2222200541900e6a41106a290300370300200541c00c6a41086a2220200541900e6a41086a290300370300200520052903900e3703c00c202c202d72212d20310d1e200541a00c6a41186a2025290300370300200541a00c6a41106a2022290300370300200541a00c6a41086a2020290300370300200520052903c00c3703a00c4102212c41002131410021250240200e4102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2222200141106a290000370300200541900e6a41086a2220200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212c41012131024020052802084101460d002025200541286a2903003703002022200541086a41186a2903003703002020200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202c41807e712125202c41ff0171212c0b200541800d6a41186a2222200541900e6a41186a290300370300200541800d6a41106a2220200541900e6a41106a290300370300200541800d6a41086a221e200541900e6a41086a290300370300200520052903900e3703800d2025202c72212c20310d1f200541e00c6a41186a2022290300370300200541e00c6a41106a2020290300370300200541e00c6a41086a201e290300370300200520052903800d3703e00c4102212541002131410021220240200c4102460d00200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410b506200528020c212541012131024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202541807e712122202541ff017121250b200541c00d6a41186a2220200541900e6a41186a290300370300200541c00d6a41106a221e200541900e6a41106a290300370300200541c00d6a41086a221c200541900e6a41086a290300370300200520052903900e3703c00d2022202572212520310d20200541a00d6a41186a2020290300370300200541a00d6a41106a201e290300370300200541a00d6a41086a201c290300370300200520052903c00d3703a00d4102212241002131410021200240200a4102460d00200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200520093702840e2005200a3602800e200541086a200541900e6a200541800e6a200410b506200528020c210141012131024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b200141807e712120200141ff017121220b200541e00d6a41186a2204200541900e6a41186a290300370300200541e00d6a41106a221e200541900e6a41106a290300370300200541e00d6a41086a221c200541900e6a41086a290300370300200520052903900e3703e00d20202022722101024020310d00200541a0026a41186a2004290300370300200541a0026a41106a201e290300370300200541a0026a41086a201c29030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c00410272231450d2720312006360200203120052903800637020420312003360224203120052903e0053702282031410c6a20054180066a41086a290300370200203141146a20054180066a41106a2903003702002031411c6a20054180066a41186a290300370200203141306a200541e0056a41086a290300370200203141386a200541e0056a41106a290300370200203141c0006a200541e0056a41186a290300370200203120023602482031202e36026c203120052903c00537024c203141d4006a200541c0056a41086a290300370200203141dc006a200541c0056a41106a290300370200203141e4006a200541c0056a41186a290300370200203120052903a005370270203141f8006a200541a0056a41086a29030037020020314180016a200541a0056a41106a29030037020020314188016a200541a0056a41186a2903003702002031202f36029001203120303602b401203141ac016a20054180056a41186a290300370200203141a4016a20054180056a41106a2903003702002031419c016a20054180056a41086a290300370200203120052903800537029401203141d0016a200541e0046a41186a290300370200203141c8016a200541e0046a41106a290300370200203141c0016a200541e0046a41086a290300370200203120052903e0043702b801203120293602d801203141f4016a200541c0046a41186a290300370200203141ec016a200541c0046a41106a290300370200203141e4016a200541c0046a41086a290300370200203120052903c0043702dc01203120233602fc0120314198026a200541a0046a41186a29030037020020314190026a200541a0046a41106a29030037020020314188026a200541a0046a41086a290300370200203120052903a00437028002203120263602a002203141bc026a20054180046a41186a290300370200203141b4026a20054180046a41106a290300370200203141ac026a20054180046a41086a29030037020020312005290380043702a402203120283602c402203141e0026a200541e0036a41186a290300370200203141d8026a200541e0036a41106a290300370200203141d0026a200541e0036a41086a290300370200203120052903e0033702c8022031202a3602e80220314184036a200541c0036a41186a290300370200203141fc026a200541c0036a41106a290300370200203141f4026a200541c0036a41086a290300370200203120052903c0033702ec022031202736028c03203141a8036a200541a0036a41186a290300370200203141a0036a200541a0036a41106a29030037020020314198036a200541a0036a41086a290300370200203120052903a003370290032031202d3602b003203141cc036a20054180036a41186a290300370200203141c4036a20054180036a41106a290300370200203141bc036a20054180036a41086a29030037020020312005290380033702b4032031202c3602d403203141f0036a200541e0026a41186a290300370200203141e8036a200541e0026a41106a290300370200203141e0036a200541e0026a41086a290300370200203120052903e0023702d803203120253602f80320314194046a200541c0026a41186a2903003702002031418c046a200541c0026a41106a29030037020020314184046a200541c0026a41086a290300370200203120052903c0023702fc032031200136029c04203141b8046a200541a0026a41186a290300370200203141b0046a200541a0026a41106a290300370200203141a8046a200541a0026a41086a290300370200203120052903a0023702a0044103212d024020080d004100212f0c120b2007417f4c0d120240024020070d00410021014101212f0c010b20071027222f450d24200721010b0240024020012007490d00200121020c010b200141017422022007200220074b1b22024100480d25024020010d0020021027222f450d290c010b20012002460d00202f20012002102b222f450d280b202f2008200710e4071a2007ad4220862002ad8421320c110b20004101360200200020013602040c250b200041013602002000202f3602040c240b20004101360200200020023602040c230b20004101360200200020293602040c220b20004101360200200020313602040c210b20004101360200200020263602040c200b20004101360200200020283602040c1f0b200041013602002000202a3602040c1e0b20004101360200200020273602040c1d0b200041013602002000202c3602040c1c0b20004101360200200020253602040c1b0b20004101360200200020223602040c1a0b20004101360200200020203602040c190b20004101360200200020303602040c180b200041013602002000201e3602040c170b200541900e6a41186a221a200141186a290000370300200541900e6a41106a2218200141106a290000370300200541900e6a41086a2216200141086a290000370300200520012900003703900e200541800e6a41086a2023360200200520073602840e200520083602800e200541086a200541900e6a200541800e6a200410b506200528020c210341012101024020052802084101460d00201a200541286a2903003703002018200541086a41186a2903003703002016200541086a41106a2903003703002005200541086a41086a2903003703900e410021010b200341807e712104200341ff017121030b200541e00d6a41186a2223200541900e6a41186a290300370300200541e00d6a41106a221a200541900e6a41106a290300370300200541e00d6a41086a2218200541900e6a41086a290300370300200520052903900e3703e00d2004200372210420010d14200541a0026a41186a2023290300370300200541a0026a41106a201a290300370300200541a0026a41086a201829030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c00410272203450d162003202f360200200320052903800637020420032002360224200320052903e0053702282003410c6a20054180066a41086a290300370200200341146a20054180066a41106a2903003702002003411c6a20054180066a41186a290300370200200341306a200541e0056a41086a290300370200200341386a200541e0056a41106a290300370200200341c0006a200541e0056a41186a290300370200200320293602482003203136026c200320052903c00537024c200341d4006a200541c0056a41086a290300370200200341dc006a200541c0056a41106a290300370200200341e4006a200541c0056a41186a290300370200200320052903a005370270200341f8006a200541a0056a41086a29030037020020034180016a200541a0056a41106a29030037020020034188016a200541a0056a41186a2903003702002003202636029001200320283602b401200341ac016a20054180056a41186a290300370200200341a4016a20054180056a41106a2903003702002003419c016a20054180056a41086a290300370200200320052903800537029401200341d0016a200541e0046a41186a290300370200200341c8016a200541e0046a41106a290300370200200341c0016a200541e0046a41086a290300370200200320052903e0043702b8012003202a3602d801200341f4016a200541c0046a41186a290300370200200341ec016a200541c0046a41106a290300370200200341e4016a200541c0046a41086a290300370200200320052903c0043702dc01200320273602fc0120034198026a200541a0046a41186a29030037020020034190026a200541a0046a41106a29030037020020034188026a200541a0046a41086a290300370200200320052903a004370280022003202c3602a002200341bc026a20054180046a41186a290300370200200341b4026a20054180046a41106a290300370200200341ac026a20054180046a41086a29030037020020032005290380043702a402200320253602c402200341e0026a200541e0036a41186a290300370200200341d8026a200541e0036a41106a290300370200200341d0026a200541e0036a41086a290300370200200320052903e0033702c802200320223602e80220034184036a200541c0036a41186a290300370200200341fc026a200541c0036a41106a290300370200200341f4026a200541c0036a41086a290300370200200320052903c0033702ec022003202036028c03200341a8036a200541a0036a41186a290300370200200341a0036a200541a0036a41106a29030037020020034198036a200541a0036a41086a290300370200200320052903a00337029003200320303602b003200341cc036a20054180036a41186a290300370200200341c4036a20054180036a41106a290300370200200341bc036a20054180036a41086a29030037020020032005290380033702b4032003201e3602d403200341f0036a200541e0026a41186a290300370200200341e8036a200541e0026a41106a290300370200200341e0036a200541e0026a41086a290300370200200320052903e0023702d8032003201c3602f80320034194046a200541c0026a41186a2903003702002003418c046a200541c0026a41106a29030037020020034184046a200541c0026a41086a290300370200200320052903c0023702fc032003200436029c04200341b8046a200541a0026a41186a290300370200200341b0046a200541a0026a41106a290300370200200341a8046a200541a0026a41086a290300370200200320052903a0023702a00441002130200541003a000c20054100360208200541086a20062006202ba76a10b006200541900e6a41086a2204200541086a41146a290200370300200541900e6a41106a2206200541086a411c6a290200370300200541900e6a41186a22292005412c6a2902003703002005200541086a410c6a2902003703900e200529020c21322005280208212f02400240202d0d000c010b202e417f4c0d0202400240202e0d0041002101410121300c010b202e10272230450d14202e21010b024002402001202e490d00200121020c010b20014101742202202e2002202e4b1b22024100480d15024020010d00200210272230450d190c010b20012002460d00203020012002102b2230450d180b2030202d202e10e4071a0b202b422088a7213120054180026a41186a202929030037030020054180026a41106a200629030037030020054180026a41086a2004290300370300200520052903900e370380024104212d0b2000202d360204200041106a20323702002000410c6a202f360200200041086a2031360200200041186a200529038002370200200041c4006a202e360200200041386a2003360200200041c8006a20052903e801370200200041206a20054180026a41086a290300370200200041286a20054180026a41106a290300370200200041306a20054180026a41186a290300370200200041d0006a200541e8016a41086a290300370200200041d8006a200541e8016a41106a2802003602002000413c6a2002ad4220862030ad84370200200041003602000c140b1038000b20004101360200200020063602040c120b20004101360200200020033602040c110b20004101360200200020023602040c100b200041013602002000202e3602040c0f0b200041013602002000202f3602040c0e0b20004101360200200020303602040c0d0b20004101360200200020293602040c0c0b20004101360200200020233602040c0b0b20004101360200200020263602040c0a0b20004101360200200020283602040c090b200041013602002000202a3602040c080b20004101360200200020273602040c070b200041013602002000202d3602040c060b200041013602002000202c3602040c050b20004101360200200020253602040c040b200041013602002000201c3602040c030b1039000b1032000b20004101360200200020043602040b200541b00e6a24000f0b1030000bde7f08057f017e037f047e247f037e1c7f057e230022042105200441c0056b416071220424000240024002400240024002400240024002400240024002402002280200417e6a220641024b0d000240024020060e03010003010b20022802042207415c6a21082002410c6a2902002109200241086a280200210a417f210603402006410f460d09200641016a2106200841246a22082d00004102460d000b200841246a210b2006210c024003400240200c41016a220c410f4d0d00200a0d0d200420063a00b002200441003a00c404200441003602c004200441c0046a200441b0026a200441b1026a10b00620044180046a41286a200441c0046a41286a28020036020020044180046a41206a200441c0046a41206a29030037030020044180046a41186a200441c0046a41186a29030037030020044180046a41106a200441c0046a41106a29030037030020044180046a41086a200441c0046a41086a290300370300200420042903c004370380040240200641ff0171410f4b0d00200441023a00c0042008290200210920042903d804210d20042903d004210e20042903c804210f200820042903c004370200200829020821102008200f3702082008290210210f2008200e370210200841186a2206290200210e2006200d3702002009a741ff01714102460d03200841206a2802002106200441fc046a2010370200200441f4046a2009370200200441c0046a41086a20042903800437030020044194056a200636020020044184056a200f370200200441c0046a41106a20044180046a41086a290300370300200441c0046a41186a20044180046a41106a290300370300200441c0046a41206a20044180046a41186a290300370300200441c0046a41286a20044180046a41206a290300370300200441f0046a20044180046a41286a2802003602002004418c056a200e37020020044282808080103703c004200441b0026a41086a200341086a280200360200200420032902003703b00220002001200441c0046a200441b0026a10b3060c0d0b2006411041ec97c8001036000b200b2d00002111200b41246a210b20114102460d000c0c0b0b41c797c800412441ec97c8001057000b200441286a2002412c6a290200370300200441206a200241246a290200370300200441186a2002411c6a290200370300200441106a2208200241146a290200370300200441086a2002410c6a29020037030020042002290204370300200441de006a200241376a2d00003a0000200441c0006a41086a200241c4006a290200370300200441c0006a41106a200241cc006a290200370300200441c0006a41186a200241d4006a2802003602002004200241356a2f00003b015c20042002413c6a290200370340200241346a2d0000210a200241386a280200210c024002402004280204220641244b0d00200441096a210b200621080c010b2004410c6a280200210b200828020021080b2008417f6a21110240024002400240024002402008450d00200b20116a2d00002107200328020821082003280204210b200328020021110240200641244d0d00200441106a28020021060b200820064101742004280200417f736a6a220641017621080240024002402006410171450d00200b2008490d042008200b490d012008200b4194a1cc001036000b200b20084f0d012008200b4184a1cc00104b000b201120086a22062d00002112200441003a00c404200441003602c004200441c0046a2011200610c20220044180046a41286a200441c0046a41286a28020036020020044180046a41206a200441c0046a41206a29030037030020044180046a41186a200441c0046a41186a29030037030020044180046a41106a200441c0046a41106a29030037030020044180046a41086a200441c0046a41086a290300370300200420042903c00422093703800441242113024002402009a7220641244b0d0020044180046a210b0c010b2004418c046a210b200621130b200b280200220b2013470d054124211402400240200641244b0d00200621130c010b2004418c046a2802002113200621140b20142013470d040240201341016a22152013490d0041002114024020154102490d00417f2015417f6a677621140b201441016a22132014490d004124211502400240200641244b0d0020044180046a4105722116200621140c010b2004418c046a280200211420044188046a2802002116200621150b201420134b0d040240024020134125490d0020152013470d010c070b20064125490d06200441003a00840420044180046a4105722016201410e4071a2004201436028004201610290c060b02400240200641244b0d00201310272206450d0c20062016201410e4071a0c010b201620152013102b2206450d0b0b2004418c046a201436020020044188046a2006360200200441013a00840420042013360280040c050b41a4a1cc00411141b8a1cc001033000b200741047421134102210b410121070c050b20114100418c98c8001036000b2008200b41f4a0cc00104b000b41e6a1cc00412041b8a1cc001033000b20042802800421060b20124170712007410f7172210702400240200641244b0d0020044180046a410572210620044180046a21130c010b2004418c046a211320044188046a28020021060b2013200b41016a3602002006200b6a20073a0000200441c8046a2004418d046a290000370300200441d0046a20044195046a290000370300200441d8046a2004419d046a290000370300200441df046a200441a4046a29000037000020042004290085043703c00420042d008404210b2004280280042106410021070b200441ed006a200441c8046a290300370000200441f5006a200441d0046a290300370000200441fd006a200441d8046a290300370000200441e0006a41246a200441df046a29000037000020042006360260200420042903c0043700652004200b3a006402400240200b41ff01714102470d004100210b0c010b0240200641244b0d00200441e0006a410572210b0c010b200441ec006a2802002106200441e8006a280200210b0b20062008200b1b2112200b2011200b1b2111024002400240024002400240024002400240200a410171450d00200441cf046a200441c8006a290300370000200441d7046a200441d0006a290300370000200441df046a200441d8006a2d00003a0000200420042f015c3b01c0042004200c3600c304200420042903403700c7042004200441dc006a41026a2d00003a00c20420044189046a20133a0000200420073a00880420042012360284042004201136028004200441b0026a2001200441c0046a20044180046a10ae0620042802b402210620042802b0024101460d04200141c0006a220a280200220b200b417f6a200141386a220c2802002208200141346a22142802006b716b4101470d022001413c6a108b0120142802002214200c28020022084d0d022008200b20146b2215490d01200128023c2208200a28020020156b220b4102746a200820144102746a201541027410e4071a200141346a200b360200200141386a28020021080c020b0240200141c0006a220a28020022082008417f6a200141386a220b2802002206200141346a22142802006b716b4101470d002001413c6a108b0120142802002214200b28020022064d0d0002402006200820146b2215490d00200128023c2206200a28020020156b22084102746a200620144102746a201541027410e4071a200141346a2008360200200141386a28020021060c010b200128023c221420084102746a2014200641027410e4071a200141386a2206200628020020086a22063602000b200b200a280200417f6a200641016a713602002001413c6a28020020064102746a200c360200200141306a2802002206200c4d0d062001280228200c41fc006c6a22062d0010210c20062d0008210a20062d0004211420062d0002211520062d0001211620062d000021172006411f6a2d000021182006411e6a2d000021192006411d6a2d0000211a2006411c6a2d0000211b2006411b6a2d0000211c2006411a6a2d0000211d200641196a2d0000211e200641186a22082d0000211f200641176a2d00002120200641166a2d00002121200641156a2d00002122200641146a2d00002123200641136a2d00002124200641126a2d00002125200641116a2d000021262006410f6a2d000021272006410e6a2d000021282006410d6a2d000021292006410c6a2d0000212a2006410b6a2d0000212b2006410a6a2d0000212c200641096a2d0000212d200641076a2d0000212e200641066a2d0000212f200641056a2d00002130200641036a2d00002131200820042903d804370200200620042903d004370210200620042903c804370208200441003a00c004200441003602c404200620042903c004370200200641e0006a2108200641c0006a210b200641206a21060c020b200128023c2214200b4102746a2014200841027410e4071a200141386a22082008280200200b6a22083602000b200c200a280200417f6a200841016a713602002001413c6a28020020084102746a2006360200200141306a280200220820064d0d052001280228200641fc006c6a22062d0010210c20062d0008210a20062d0004211420062d0002211520062d0001211620062d000021172006411f6a2d000021182006411e6a2d000021192006411d6a2d0000211a2006411c6a2d0000211b2006411b6a2d0000211c2006411a6a2d0000211d200641196a2d0000211e200641186a22082d0000211f200641176a2d00002120200641166a2d00002121200641156a2d00002122200641146a2d00002123200641136a2d00002124200641126a2d00002125200641116a2d000021262006410f6a2d000021272006410e6a2d000021282006410d6a2d000021292006410c6a2d0000212a2006410b6a2d0000212b2006410a6a2d0000212c200641096a2d0000212d200641076a2d0000212e200641066a2d0000212f200641056a2d00002130200641036a2d00002131200820042903d804370200200620042903d004370210200620042903c804370208200441003a00c004200441003602c404200620042903c004370200200641e0006a2108200641c0006a210b200641206a21060b200441a0016a41086a2232200841096a290000370300200441a0016a41106a2233200841116a290000370300200441a0016a41176a2234200841186a2800003600002004200b29021022353703d0012004200b29020822363703c8012004200b290200220f3703c001200420082900013703a0012004200b41186a29020022373703d8014101210b200641186a29020021092006290210210d2006290208210e20062902002210a72106201741ff01714101470d0120082d00002108200441c0046a41176a2034280000360000200441c0046a41106a2033290300370300200441c0046a41086a2032290300370300200420042903a0013703c004200ea722174180fe037141087621322010422088a722334180fe03714108762134200da722384180fe03714108762139200e422088a7223a4180fe0371410876213b2009a7223c4180fe0371410876213d200d422088a7223e4180fe0371410876213f2009422088a722404180fe037141087621412010423888a721422010423088a72143200e423888a72144200e423088a72145200d423888a72146200d423088a72147200e422086220e423888a72148200e423088a721492009423888a7214a2009423088a7214b200d422086220d423888a7214c200d423088a7214d20094220862209423888a7214e2009423088a7214f200fa721500c020b2000410136020020002006360204024020042d00644102460d00200428026041244d0d00200441e8006a28020010290b200428020441244d0d072004410c6a28020010290c070b200441c0046a41176a20042800d801360000200441c0046a41106a20042900d101370300200441c0046a41086a20042900c901370300200420042900c1013703c004200fa721084100210b20092137200621502014213320302134202f2143202e2142200a2117202d2132202c2149202b2148202a213a2029213b2028214520272144200c2138202621392025214d2024214c2023213e2022213f2021214720202146201f213c201e213d201d214f201c214e201b2140201a21412019214b2018214a2010210f200e2136200d21350b200441e0016a41086a2251200441c0046a41086a290300370300200441e0016a41106a2252200441c0046a41106a290300370300200441e0016a41176a2253200441c0046a41176a2800003600002004200f370380022004203637038802200420042903c0043703e00120042035370390022004203737039802024002400240024002400240203341ff017120344108747241ffff0371204341ff0171204241087472411074722234417f6a223341014b0d0020330e020201020b20044180036a41086a20042900890237030020044180036a41106a20042900910237030020044180036a41176a200429009802370000200441e0026a41086a2051290300370300200441e0026a41106a2052290300370300200441e0026a41176a2053280000360000200420042900810237038003200420042903e0013703e002200b0d02200441b0026a210b200441c0036a210c200441e0036a21112050210620082150410021030c030b200441b0026a41186a200429038002370300200441b0026a41206a200429038802370300200441b0026a41286a200429039002370300200441b0026a41106a203c41ff0171203d4108747241ffff0371204f41ff0171204e4108747241107472ad204041ff017120414108747241ffff0371204b41ff0171204a4108747241107472ad422086843703002004201741ff017120324108747241ffff0371204941ff0171204841087472411074722232ad203a41ff0171203b4108747241ffff0371204541ff0171204441087472411074722217ad422086843703b0022004203841ff017120394108747241ffff0371204d41ff0171204c4108747241107472ad203e41ff0171203f4108747241ffff0371204741ff017120464108747241107472ad422086843703b802200441e0036a41176a200441e0016a41176a280000360000200441e0036a41106a200441e0016a41106a290300370300200441e0036a41086a200441e0016a41086a290300370300200420042903e0013703e0030240200b450d00200441003a00c404200441003602c004200441c0046a2011201120126a10c20220044180046a41286a200441c0046a41286a220b280200221136020020044180046a41206a200441c0046a41206a290300220937030020044180046a41186a200441c0046a41186a2212290300220d37030020044180046a41106a200441c0046a41106a2217290300220e37030020044180046a41086a200441c0046a41086a290300220f370300200420042903c004221037038004200b200f370300200441f0046a200e370300200441f8046a200d37030020044180056a200937030020044188056a20113602002004418d056a20133a00002004418c056a20073a0000200441de046a20183a00002017202641ff017120254108747241ffff0371202441ff017120234108747241107472ad202241ff017120214108747241ffff0371202041ff0171201f4108747241107472ad42208684370300200441dc046a201a41ff01712019410874723b01002012201e41ff0171201d4108747241ffff0371201c41ff0171201b4108747241107472360200200420063a00df04200420103703e0042004201641ff017120154108747241ffff0371203141ff017120144108747241107472ad203041ff0171202f4108747241ffff0371202e41ff0171200a4108747241107472ad422086843703c0042004202d41ff0171202c4108747241ffff0371202b41ff0171202a4108747241107472ad202941ff017120284108747241ffff0371202741ff0171200c4108747241107472ad422086843703c8042001200441c0046a10b10420042802b402211720042802b00221320b20044180046a41286a200441286a29030037030020044180046a41206a200441206a29030037030020044180046a41186a200441186a29030037030020044180046a41106a200441106a29030037030020044180046a41086a200441086a290300370300200420042903003703800402400240201741244b0d00200441b9026a21060c010b200441c0026a2802002117200441bc026a28020021060b200441c0046a41086a2017360200200420063602c404200420323602c00420044180046a200441c0046a10b406200441ec046a200441a8046a290300370200200441c0046a41246a200441a0046a290300370200200441dc046a20044198046a290300370200200441d4046a20044180046a41106a290300370200200441c0046a410c6a20044180046a41086a290300370200200441fc046a20083a0000200441f4046a203737020020044185056a200441e0036a41086a2903003700002004418d056a200441e0036a41106a29030037000020044194056a200441f7036a28000036000020042004290380043702c404200420042903e0033700fd04200441023602c004200441c0036a41086a200341086a280200360200200420032902003703c00320002001200441c0046a200441c0036a10b30620042802b40241244d0d03200441b0026a410c6a28020010290c030b20044180046a41186a20042903800237030020044180046a41206a20042903880237030020044180046a41286a20042903900237030020044180046a41106a203c41ff0171203d4108747241ffff0371204f41ff0171204e4108747241107472ad204041ff017120414108747241ffff0371204b41ff0171204a4108747241107472ad422086843703002004201741ff017120324108747241ffff0371204941ff0171204841087472411074722217ad203a41ff0171203b4108747241ffff0371204541ff0171204441087472411074722203ad42208684370380042004203841ff017120394108747241ffff0371204d41ff0171204c4108747241107472ad203e41ff0171203f4108747241ffff0371204741ff017120464108747241107472ad4220868437038804200441c2036a20042d00e2013a000020042004290398023703e003200420042f01e0013b01c0030240200b450d00200441003a00c404200441003602c004200441c0046a2011201120126a10c202200441b0026a41286a200441c0046a41286a220b2802002211360200200441b0026a41206a200441c0046a41206a2903002209370300200441b0026a41186a200441c0046a41186a2203290300220d370300200441b0026a41106a200441c0046a41106a2212290300220e370300200441b0026a41086a200441c0046a41086a290300220f370300200420042903c00422103703b002200b200f370300200441f0046a200e370300200441f8046a200d37030020044180056a200937030020044188056a20113602002004418d056a20133a00002004418c056a20073a0000200441de046a20183a00002012202641ff017120254108747241ffff0371202441ff017120234108747241107472ad202241ff017120214108747241ffff0371202041ff0171201f4108747241107472ad42208684370300200441dc046a201a41ff01712019410874723b01002003201e41ff0171201d4108747241ffff0371201c41ff0171201b4108747241107472360200200420063a00df04200420103703e0042004201641ff017120154108747241ffff0371203141ff017120144108747241107472ad203041ff0171202f4108747241ffff0371202e41ff0171200a4108747241107472ad422086843703c0042004202d41ff0171202c4108747241ffff0371202b41ff0171202a4108747241107472ad202941ff017120284108747241ffff0371202741ff0171200c4108747241107472ad422086843703c8042001200441c0046a10b104200428028404210320042802800421170b200441c0046a41286a200441286a290300370300200441c0046a41206a200441206a290300370300200441c0046a41186a200441186a290300370300200441c0046a41106a200441106a290300370300200441c0046a41086a200441086a290300370300200420042903003703c00402400240200341244b0d0020044189046a21060c010b20044190046a28020021032004418c046a28020021060b200441b0026a41086a2003360200200420063602b402200420173602b002200441c0046a200441b0026a10b40620004101360204200041086a20042903c004370200200041106a200441c0046a41086a290300370200200041186a200441c0046a41106a290300370200200041206a200441c0046a41186a290300370200200041286a200441c0046a41206a290300370200200041306a200441c0046a41286a290300370200200041c0006a20083a0000200041386a20042903e003370200200020042f01c0033b0041200041c3006a200441c2036a2d00003a00002000410036020020042802840441244d0d022004418c046a28020010290c020b200441ce026a20183a0000200441b0026a41106a202641ff017120254108747241ffff0371202441ff017120234108747241107472ad202241ff017120214108747241ffff0371202041ff0171201f4108747241107472ad42208684370000200441cc026a201a41ff01712019410874723b0000200441c8026a201e41ff0171201d4108747241ffff0371201c41ff0171201b41087472411074723600002004201641ff017120154108747241ffff0371203141ff017120144108747241107472ad203041ff0171202f4108747241ffff0371202e41ff0171200a4108747241107472ad422086843700b0022004202d41ff0171202c4108747241ffff0371202b41ff0171202a4108747241107472ad202941ff017120284108747241ffff0371202741ff0171200c4108747241107472ad422086843700b80241012103200441e0036a210b200441c0036a2111200441a0036a210c0b200b20343600032011200429038003370000200c20042903e002370000201141086a20044180036a41086a290300370000201141106a20044180036a41106a290300370000201141176a20044180036a41176a290000370000200c41086a200441e0026a41086a290300370000200c41106a200441e0026a41106a290300370000200c41176a200441e0026a41176a280000360000200b201741ff017120324108747241ffff0371204941ff017120484108747241107472ad203a41ff0171203b4108747241ffff0371204541ff017120444108747241107472ad42208684370007200b410f6a203841ff017120394108747241ffff0371204d41ff0171204c4108747241107472ad203e41ff0171203f4108747241ffff0371204741ff017120464108747241107472ad42208684370000200b41176a203c41ff0171203d4108747241ffff0371204f41ff0171204e4108747241107472ad204041ff017120414108747241ffff0371204b41ff0171204a4108747241107472ad4220868437000020044180046a41286a220b200441286a29030037030020044180046a41206a220c200441206a29030037030020044180046a41186a2211200441186a29030037030020044180046a41106a220a200441106a29030037030020044180046a41086a2207200441086a2903003703002004200429030037038004200441c9046a200441b0026a41086a290000370000200441d1046a200441b0026a41106a290000370000200441c0046a41186a200441b0026a41176a290000370000200441c0046a41206a20063a0000200420033a00c004200420042900b0023700c104200441e1046a20042900e003370000200441e9046a200441e0036a41086a290000370000200441f1046a200441e0036a41106a290000370000200441c0046a41386a200441e0036a41176a29000037000020044180056a20503a000020044198056a200441c0036a41176a29000037000020044191056a200441c0036a41106a29000037000020044189056a200441c0036a41086a29000037000020044181056a20042900c003370000200441a0056a20083a0000200441b8056a200441a0036a41176a280000360000200441b1056a200441a0036a41106a290000370000200441a9056a200441a0036a41086a290000370000200441a1056a20042900a003370000200141286a200441c0046a10a90621062000428080808020370200200041086a200429038004370200200041106a2007290300370200200041186a200a290300370200200041206a2011290300370200200041286a200c290300370200200041306a200b2903003702002000413c6a2006360200200041386a41003a00000b20042d00644102460d0c200428026041244d0d0c200441e8006a28020010290c0c0b200c2006418095c8001036000b20062008418095c8001036000b200041046a200241d80010e4071a200041003602000c0a0b200441a0016a41026a2002410f6a2d00003a0000200441e0036a41086a200241206a290200370300200441e0036a41106a200241286a290200370300200441e0036a41186a200241306a280200360200200420022f000d3b01a0012004200241186a2902003703e0032002410c6a2d00002115200241086a2802002107200241106a2802002114200241146a2802002113200241346a280200210a20022802042112200441e0026a41086a200241c0006a2802003602002004200241386a2902003703e002200a415c6a2108417f210603402006410f460d04200641016a2106200841246a22082d00004102460d000b200841246a210b2006210c024002400240024002400240024003400240200c41016a220c410f4d0d002004418c036a200441e8026a280200360200200420063a008103200441013a008003200420042903e00222093702840302402009a7450d0020044180036a41047221060c030b0240200641ff0171410f4b0d00200441023a00c0042008290200210920042903d804210d20042903d004210e20042903c804210f200820042903c004370200200829020821102008200f3702082008290210210f2008200e370210200841186a220b290200210e200b200d3702002004200e370398042004200f37039004200420103703880420042009370380042009a7221641ff01714102460d04200841206a2802002117200441e0016a41026a20042d0083043a0000200441c8036a200429039004370300200441d0036a200429039804370300200420042f0081043b01e00120042004290388043703c003200328020820132007200741244b1b41017420126b6a220c410176210b20032802042108200328020021110240024002400240200c410171450d002008200b490d09200b2008490d01200b20084194a1cc001036000b2008200b4f0d01200b20084184a1cc00104b000b2011200b6a22082d00002118200441003a00c404200441003602c004200441c0046a2011200810c20220044180046a41286a200441c0046a41286a28020036020020044180046a41206a200441c0046a41206a29030037030020044180046a41186a200441c0046a41186a29030037030020044180046a41106a200441c0046a41106a29030037030020044180046a41086a200441c0046a41086a290300370300200420042903c004220d370380044124210302400240200da7220841244b0d0020044180046a210c0c010b2004418c046a210c200821030b0240200c280200220c2003470d004124211902400240200841244b0d00200821030c010b2004418c046a2802002103200821190b024020192003470d00200341016a221a2003490d0b410021190240201a4102490d00417f201a417f6a677621190b201941016a22032019490d0b4124211a02400240200841244b0d0020044180046a410572211b200821190c010b2004418c046a280200211920044188046a280200211b2008211a0b201920034b0d0a02400240024020034125490d00201a2003460d03200841244b0d01200310272208450d112008201b201910e4071a0c020b20084125490d02200441003a00840420044180046a410572201b201910e4071a2004201936028004201b10290c020b201b201a2003102b2208450d0f0b2004418c046a201936020020044188046a2008360200200441013a00840420042003360280040b20042802800421080b2018417071200672210302400240200841244b0d0020044180046a410572210820044180046a21180c010b2004418c046a211820044188046a28020021080b2018200c41016a3602002008200c6a20033a0000200441c8046a2004418d046a290000370300200441d0046a20044195046a290000370300200441d8046a2004419d046a290000370300200441df046a200441a4046a29000037000020042004290085043703c00420042d008404210c2004280280042108410021310c010b200641047421324102210c410121310b20094220882109200441bd026a200441c8046a290300370000200441c5026a200441d0046a290300370000200441cd026a200441d8046a290300370000200441b0026a41246a200441df046a290000370000200420083602b002200420042903c0043700b5022004200c3a00b40202400240200c41ff01714102470d004100210c0c010b0240200841244b0d00200441b0026a410572210c0c010b200441bc026a2802002108200441b8026a280200210c0b2009a721032008200b200c1b2133200c2011200c1b21110240024002400240201641ff01714101470d00200441cf046a200441c8036a290300370000200441d7046a200441d0036a290300370000200420042f01e0013b01c004200420033600c304200420042903c0033700c704200420173a00df042004200441e0016a41026a2d00003a00c20420044189046a20323a0000200420313a0088042004203336028404200420113602800420042001200441c0046a20044180046a10ae062004280204210820042802004101460d03200141c0006a2216280200220c200c417f6a200141386a2203280200220b200141346a22172802006b716b4101470d022001413c6a108b01201728020022172003280200220b4d0d02200b200c20176b2218490d01200128023c220b201628020020186b220c4102746a200b20174102746a201841027410e4071a200141346a200c360200200141386a280200210b0c020b0240200141c0006a2216280200220b200b417f6a200141386a220c2802002208200141346a22172802006b716b4101470d002001413c6a108b0120172802002217200c28020022084d0d0002402008200b20176b2218490d00200128023c2208201628020020186b220b4102746a200820174102746a201841027410e4071a200141346a200b360200200141386a28020021080c010b200128023c2217200b4102746a2017200841027410e4071a200141386a22082008280200200b6a22083602000b200c2016280200417f6a200841016a713602002001413c6a28020020084102746a2003360200200141306a280200220820034d0d0b2001280228200341fc006c6a22082d0010210320082d0008211620082d0004212d20082d0002213820082d0001213920082d000021342008411f6a2d000021172008411e6a2d000021182008411d6a2d000021192008411c6a2d0000211a2008411b6a2d0000211b2008411a6a2d0000211c200841196a2d0000211d200841186a220b2d0000211e200841176a2d0000211f200841166a2d00002120200841156a2d00002121200841146a2d00002122200841136a2d00002123200841126a2d00002124200841116a2d000021252008410f6a2d000021262008410e6a2d000021272008410d6a2d000021282008410c6a2d000021292008410b6a2d0000212a2008410a6a2d0000212b200841096a2d0000212c200841076a2d0000212e200841066a2d0000212f200841056a2d00002130200841036a2d0000213a200b20042903d804370200200820042903d004370210200820042903c804370208200441003a00c004200441003602c404200820042903c004370200200841e0006a210b200841c0006a210c200841206a21080c0f0b200128023c2217200c4102746a2017200b41027410e4071a200141386a220b200b280200200c6a220b3602000b20032016280200417f6a200b41016a713602002001413c6a280200200b4102746a2008360200200141306a280200220b20084d0d0a2001280228200841fc006c6a22082d0010210320082d0008211620082d0004212d20082d0002213820082d0001213920082d000021342008411f6a2d000021172008411e6a2d000021182008411d6a2d000021192008411c6a2d0000211a2008411b6a2d0000211b2008411a6a2d0000211c200841196a2d0000211d200841186a220b2d0000211e200841176a2d0000211f200841166a2d00002120200841156a2d00002121200841146a2d00002122200841136a2d00002123200841126a2d00002124200841116a2d000021252008410f6a2d000021262008410e6a2d000021272008410d6a2d000021282008410c6a2d000021292008410b6a2d0000212a2008410a6a2d0000212b200841096a2d0000212c200841076a2d0000212e200841066a2d0000212f200841056a2d00002130200841036a2d0000213a200b20042903d804370200200820042903d004370210200820042903c804370208200441003a00c004200441003602c404200820042903c004370200200841e0006a210b200841c0006a210c200841206a21080c0d0b2000410136020020002008360204024020042d00b4024102460d0020042802b00241244d0d00200441b8026a28020010290b200a1029200741244d0d0b201410290c0b0b2006411041fc97c8001036000b200b2d00002111200b41246a210b20114102460d000b2004418c036a200441e8026a280200360200200420063a008103200441023a008003200420042903e0023702840320044180036a41047221060b20004104360204200020042f01a0013b0011200041106a20153a00002000410c6a2007360200200041086a2012360200200041186a2013360200200041146a20143602002000411c6a20042903e003370200200041136a200441a2016a2d00003a0000200041246a200441e0036a41086a2903003702002000412c6a200441e0036a41106a290300370200200041346a200441e0036a41186a280200360200200041386a200a36020020004100360200200041c4006a200641086a2802003602002000413c6a20062902003702000c0e0b41c797c800412441fc97c8001057000b200b200841f4a0cc00104b000b41e6a1cc00412041b8a1cc001033000b41a4a1cc00411141b8a1cc001033000b20032008418095c8001036000b2008200b418095c8001036000b1030000b2002280200417e6a4103490d07200210a706200524000f0b200441c0016a41086a223b200b41086a290200370300200441c0016a41106a223c200b41106a290200370300200441c0016a41186a223d200b41186a2802003602002004200c29021022373703702004200c29020822353703682004200c29020022363703602004200b2902003703c0012004200c41186a2902002210370378200841186a29020021092008290210210d2008290208210e2008290200210f02400240203441ff01714101470d00200441003a00c404200441003602c004200441c0046a2011201120336a10c20220044180046a41286a200441c0046a41286a2208280200220b36020020044180046a41206a200441c0046a41206a290300225437030020044180046a41186a200441c0046a41186a220c290300225537030020044180046a41106a200441c0046a41106a2211290300225637030020044180046a41086a200441c0046a41086a2903002257370300200420042903c00422583703800420082057370300200441f0046a2056370300200441f8046a205537030020044180056a205437030020044188056a200b3602002004418d056a20323a00002004418c056a20313a0000200441de046a20173a00002011202541ff017120244108747241ffff0371202341ff017120224108747241107472ad202141ff017120204108747241ffff0371201f41ff0171201e4108747241107472ad42208684370300200441dc046a201941ff01712018410874723b0100200c201d41ff0171201c4108747241ffff0371201b41ff0171201a4108747241107472360200200420583703e0042004203941ff017120384108747241ffff0371203a41ff0171202d4108747241107472ad203041ff0171202f4108747241ffff0371202e41ff017120164108747241107472ad422086843703c0042004202c41ff0171202b4108747241ffff0371202a41ff017120294108747241107472ad202841ff017120274108747241ffff0371202641ff017120034108747241107472ad422086843703c8042004200f3c00df042001200441c0046a10b10420044180026a41086a203b29030037030020044180026a41106a203c29030037030020044180026a41186a203d28020036020020042010370318200420373703102004203537030820042036370300200420042903c00137038002200ea722164180fe0371410876212c200f422088a7222d4180fe03714108762130200da722034180fe03714108762125200e422088a722294180fe037141087621282009a7221e4180fe0371410876211d200d422088a722224180fe037141087621212009422088a7221a4180fe03714108762119200f423888a7212e200f423088a7212f200e423888a72126200e423088a72127200d423888a7211f200d423088a72120200e422086220e423888a7212a200e423088a7212b2009423888a721172009423088a72118200d422086220d423888a72123200d423088a7212420094220862209423888a7211b2009423088a7211c0c010b20044180026a41086a200429036837030020044180026a41106a200429037037030020044180026a41186a20042802783602002004200f37030020042004290360370380022004200e3703082004200d37031020042009370318200921100b0240024002400240202d41ff017120304108747241ffff0371202f41ff0171202e4108747241107472417f6a220841034b0d0020080e0401000002010b419cf7ca00412841b8a1cc001033000b20044180046a41186a2004290300370300200441a0046a2004290308370300200441a8046a200429031037030020044180046a41106a201e41ff0171201d4108747241ffff0371201c41ff0171201b41087472411074722211ad201a41ff017120194108747241ffff0371201841ff017120174108747241107472ad422086843703002004201641ff0171202c4108747241ffff0371202b41ff0171202a4108747241107472220cad202941ff017120284108747241ffff0371202741ff0171202641087472411074722208ad42208684370380042004200341ff017120254108747241ffff0371202441ff017120234108747241107472ad202241ff017120214108747241ffff0371202041ff0171201f4108747241107472220bad4220868437038804200420042903183703a00320042004280280023602a803200441c0046a41086a20153a0000200441c0046a41096a20042f01a0013b0000200441cb046a200441a2016a2d00003a0000200441c0046a41106a2013360200200441cc046a2014360200200420073602c404200420123602c004200441d4046a20042903e003370200200441dc046a200441e0036a41086a290300370200200441c0046a41246a200441e0036a41106a290300370200200441ec046a200441e0036a41186a280200360200200441c0006a41086a410136020020044101360240200420063a005c2004200441dc006a360244200441c0046a200441c0006a10b40602400240200841244b0d0020044180046a41096a210b0c010b201121080b200441c0006a41086a20083602002004200b3602442004200c360240200441c0046a200441c0006a10b4062000428080808010370200200041086a20042903c004370200200041106a200441c0046a41086a290300370200200041186a200441c0046a41106a290300370200200041206a200441c0046a41186a290300370200200041286a200441c0046a41206a290300370200200041306a200441c0046a41286a290300370200200041386a20042903a003370200200041c0006a200441a0036a41086a28020036020020042802840441244d0d012004418c046a28020010290c010b2010a7210c20044180046a41186a2004290300370300200441a0046a2004290308370300200441a8046a200429031037030020044180046a41106a201e41ff0171201d4108747241ffff0371201c41ff0171201b41087472411074722201ad201a41ff017120194108747241ffff0371201841ff017120174108747241107472ad422086843703002004201641ff0171202c4108747241ffff0371202b41ff0171202a41087472411074722211ad202941ff017120284108747241ffff0371202741ff0171202641087472411074722208ad42208684370380042004200341ff017120254108747241ffff0371202441ff017120234108747241107472ad202241ff017120214108747241ffff0371202041ff0171201f4108747241107472220bad42208684370388042004200428021c3602a00320042004290380023702a403200441c0046a41086a20153a0000200441c0046a41096a20042f01a0013b0000200441cb046a200441a2016a2d00003a0000200441c0046a41106a2013360200200441cc046a2014360200200420073602c404200420123602c004200441d4046a20042903e003370200200441dc046a200441e0036a41086a290300370200200441c0046a41246a200441e0036a41106a290300370200200441ec046a200441e0036a41186a280200360200200441c0006a41086a410136020020044101360240200420063a005c2004200441dc006a360244200441c0046a200441c0006a10b40602400240200841244b0d0020044180046a41096a210b0c010b200121080b200441c0006a41086a20083602002004200b36024420042011360240200441c0046a200441c0006a10b40620004104360204200041086a20042903c004370200200041106a200441c0046a41086a290300370200200041186a200441c0046a41106a290300370200200041206a200441c0046a41186a290300370200200041286a200441c0046a41206a290300370200200041306a200441c0046a41286a290300370200200041386a200c3602002000413c6a20042903a003370200200041c4006a200441a0036a41086a2802003602002000410036020020042802840441244d0d002004418c046a28020010290b20042d00b4024102460d0120042802b00241244d0d01200441b8026a2802001029200a10290c050b20044180036a410c6a200441e0026a41086a280200360200200441003a008003200420042903e00222093702840302402009a70d00419897c800412f41b8a1cc001033000b20004101360204200020042f01a0013b0011200041106a20153a00002000410c6a2007360200200041086a2012360200200041186a2013360200200041146a20143602002000411c6a20042903e003370200200041136a200441a2016a2d00003a0000200041246a200441e0036a41086a2903003702002000412c6a200441e0036a41106a290300370200200041346a200441e0036a41186a28020036020020004100360200200041c0006a20044180036a410472220441086a280200360200200041386a20042902003702000b200a10290c030b0240200a0d00419897c800412f41b8a1cc001033000b200441003a00c404200441003602c004200441c0046a4180a6cc004180a6cc0010b00620044180046a41286a200441c0046a41286a280200220636020020044180046a41206a200441c0046a41206a290300220d37030020044180046a41186a200441c0046a41186a290300220e37030020044180046a41106a200441c0046a41106a290300220f37030020044180046a41086a200441c0046a41086a2903002210370300200420042903c004223737038004200041086a410036020020004280808080103702002000410c6a2037370200200041146a20103702002000411c6a200f370200200041246a200e3702002000412c6a200d370200200041346a20063602002000413c6a2009370200200041386a200a3602000b200710290c010b2000428080808030370200200041106a20093702002000410c6a200a360200200041086a20073602000b2002280200417e6a4103490d00200210a706200524000f0b200524000bc90301097f230041106b2202240020002001280200220320002802006a41017110d3070240024002400240024020030d00200141086a2802002104410021030c010b200041046a280200220321050240200341244d0d00200041106a28020021050b200141086a2802002204450d012005417f6a210520012802042d0000210602400240200341244b0d00200041096a21070c010b200041106a28020021032000410c6a28020021070b200320054d0d02200720056a220320032d00002006410f71723a0000410121030b0240200320044f0d00200420036b2105200041096a2108200041106a2109200041046a210a200128020420036a2103034020032d000021060240200028021020002802042201200141244b22071b22042001412420071b470d002002200a410110d207024020022802004101470d00200241086a2802000d0641a4a1cc00411141b8a1cc001033000b200028020421010b02400240200141244b0d0020082101200a21070c010b200028020c2101200921070b2007200441016a360200200120046a20063a0000200341016a21032005417f6a22050d000b0b200241106a24000f0b4100410041eca6cc001036000b2005200341dca6cc001036000b1030000bdd0801087f230041d0026b2204240002400240024002400240024002400240024020022802004101470d00200241086a280200210520022802042102200441b0016a41186a200141186a290000370300200441b0016a41106a200141106a290000370300200441b0016a41086a200141086a290000370300200420012900003703b001200441d0016a200441b0016a20022005200310b20620042802d401210120042802d0012102200441d8006a200441d0016a41086a220541d40010e4071a20024101460d03200441046a200441d8006a41d40010e4071a200420013602d4012005200441046a41d40010e4071a41002102200441003a00d0012003200441d0016a10a90621010c010b2002280204210302400240200241086a28020022024120460d00200441d0016a41086a200141086a290000370300200441d0016a41106a200141106a290000370300200441d0016a41186a200141186a290000370300200420012900003703d0012002417f4c0d050240024020020d0041002101410121060c010b200210272206450d07200221010b0240024020012002490d00200121050c010b200141017422052002200520024b1b22054100480d08024020010d002005102722060d010c0b0b20012005460d00200620012005102b2206450d0a0b20062003200210e4072103413010272201450d09200141043a0000200120042903d001370001200120042f00043b00212001200236002c2001200536002820012003360024200141096a200441d8016a290300370000200141116a200441e0016a290300370000200141196a200441e8016a290300370000200141236a200441066a2d00003a0000410121020c010b200441046a41026a200341026a2d00003a0000200441d0016a41086a2003410f6a290000370300200441e0016a200341176a290000370300200441e8016a2003411f6a2d00003a0000200420032f00003b0104200420032900073703d00120032800032101410021020b200441b0016a41026a2203200441046a41026a22052d00003a0000200441d8006a41086a2206200441d0016a41086a2207290300370300200441d8006a41106a2208200441d0016a41106a2209290300370300200441d8006a41186a220a200441d0016a41186a220b2d00003a0000200420042f01043b01b001200420042903d00137035820020d01200520032d00003a00002007200629030037030020092008290300370300200b200a2d00003a0000200420042f01b0013b0104200420042903583703d001410121020b200020023a000420004100360200200041056a20042f01043b0000200041086a20013602002000410c6a20042903d001370200200041076a200441066a2d00003a0000200041146a200441d0016a41086a2903003702002000411c6a200441e0016a290300370200200041246a200441e8016a2802003602000c050b20004101360200200020013602040c040b20004101360200200020013602040c030b1038000b1039000b1032000b200441d0026a24000f0b1030000b800d01027f230041b0046b22002400024041c004102722010d001030000b200141023a00002001200029008d04370001200141023a0024200120002900ea03370025200141096a2000418d046a41086a290000370000200141116a2000418d046a41106a290000370000200141196a2000418d046a41186a290000370000200141206a2000418d046a411f6a2800003600002001412d6a200041ea036a41086a290000370000200141356a200041ea036a41106a2900003700002001413d6a200041ea036a41186a290000370000200141c4006a200041ea036a411f6a280000360000200141023a0048200141023a006c200120002900c703370049200141d1006a200041c7036a41086a290000370000200141d9006a200041c7036a41106a290000370000200141e1006a200041c7036a41186a290000370000200141e8006a200041c7036a411f6a280000360000200120002900a40337006d200141f5006a200041a4036a41086a290000370000200141fd006a200041a4036a41106a29000037000020014185016a200041a4036a41186a2900003700002001418c016a200041a4036a411f6a280000360000200141023a009001200141023a00b40120012000290081033700910120014199016a20004181036a41086a290000370000200141a1016a20004181036a41106a290000370000200141a9016a20004181036a41186a290000370000200141b0016a20004181036a411f6a280000360000200120002900de023700b501200141bd016a200041de026a41086a290000370000200141c5016a200041de026a41106a290000370000200141cd016a200041de026a41186a290000370000200141d4016a200041de026a411f6a280000360000200141023a00d801200141f8016a200041bb026a411f6a280000360000200141f1016a200041bb026a41186a290000370000200141e9016a200041bb026a41106a290000370000200141e1016a200041bb026a41086a290000370000200120002900bb023700d901200141023a00fc012001419c026a20004198026a411f6a28000036000020014195026a20004198026a41186a2900003700002001418d026a20004198026a41106a29000037000020014185026a20004198026a41086a29000037000020012000290098023700fd01200141023a00a002200141c0026a200041f5016a411f6a280000360000200141b9026a200041f5016a41186a290000370000200141b1026a200041f5016a41106a290000370000200141a9026a200041f5016a41086a290000370000200120002900f5013700a102200141023a00c402200141e4026a200041d2016a411f6a280000360000200141dd026a200041d2016a41186a290000370000200141d5026a200041d2016a41106a290000370000200141cd026a200041d2016a41086a290000370000200120002900d2013700c502200141023a00e80220014188036a200041af016a411f6a28000036000020014181036a200041af016a41186a290000370000200141f9026a200041af016a41106a290000370000200141f1026a200041af016a41086a290000370000200120002900af013700e902200141023a008c03200141ac036a2000418c016a411f6a280000360000200141a5036a2000418c016a41186a2900003700002001419d036a2000418c016a41106a29000037000020014195036a2000418c016a41086a2900003700002001200029008c0137008d03200141023a00b003200141d0036a200041e9006a411f6a280000360000200141c9036a200041e9006a41186a290000370000200141c1036a200041e9006a41106a290000370000200141b9036a200041e9006a41086a290000370000200120002900693700b103200141023a00d403200141f4036a200041c6006a411f6a280000360000200141ed036a200041c6006a41186a290000370000200141e5036a200041c6006a41106a290000370000200141dd036a200041c6006a41086a290000370000200120002900463700d503200141023a00f80320014198046a200041236a411f6a28000036000020014191046a200041236a41186a29000037000020014189046a200041236a41106a29000037000020014181046a200041236a41086a290000370000200120002900233700f903200141023a009c04200141bc046a2000411f6a280000360000200141b5046a200041186a290000370000200141ad046a200041106a290000370000200141a5046a200041086a2900003700002001200029000037009d04200041b0046a240020010b960a02067f057e230041f0006b22032400024002400240024002400240024002400240024002400240200141046a2802002204410174200141086a28020022056b20024d0d0020054101762106200520026a220741017621082007410171450d03200841016a22072006490d05200820044f0d06200128020020066a2108200720066b22014125490d012001417f4c0d07200110272204450d0820042008200110e4071a41012106200121080c020b200420054101762202490d0320012802002101200341003a001420034100360210200341106a200120026a200120046a10b006200341c0006a41286a200341106a41286a2802002201360200200341c0006a41206a200341106a41206a2903002209370300200341c0006a41186a200341106a41186a290300220a370300200341c0006a41106a200341106a41106a290300220b370300200341c0006a41086a200341106a41086a290300220c37030020032003290310220d370340200020054101713602002000200d3702042000410c6a200c370200200041146a200b3702002000411c6a200a370200200041246a20093702002000412c6a20013602000c0a0b200341106a2008200110e4071a2003410c6a41026a200341106a41026a2d00003a0000200341c8006a200341236a290000370300200341d0006a2003412b6a290000370300200341d8006a200341336a2d00003a0000200320032f00103b010c2003200329001b3703402003280013210420032800172108410021060b200341106a41086a220720063a0000200341196a20032f010c3b0000200341106a41106a220620083602002003411c6a2004360200200341246a20032903403702002003411b6a2003410e6a2d00003a00002003412c6a200341c0006a41086a290300370200200341106a41246a200341c0006a41106a2903003702002003413c6a200341c0006a41186a2802003602002003200136021420032005410171360210200341106a200241017110d3070240200341106a41104104200328021441244b1b6a22012802002205450d0020012005417f6a3602000b20002003290310370200200041286a200341106a41286a290300370200200041206a200341106a41206a290300370200200041186a200341106a41186a290300370200200041106a2006290300370200200041086a20072903003702000c080b20082006490d0520042008490d06200128020020066a210402400240200820066b22014125490d002001417f4c0d05200110272202450d0620022004200110e4071a41012104200121060c010b200341106a2004200110e4071a2003410c6a41026a200341106a41026a2d00003a0000200341c8006a200341236a290000370300200341d0006a2003412b6a290000370300200341d8006a200341336a2d00003a0000200320032f00103b010c2003200329001b3703402003280013210220032800172106410021040b2000200136020420002005410171360200200041086a20043a0000200041096a20032f010c3b0000200041106a20063602002000410c6a2002360200200041146a20032903403702002000410b6a2003410e6a2d00003a00002000411c6a200341c0006a41086a290300370200200041246a200341c0006a41106a2903003702002000412c6a200341d8006a2802003602000c070b2002200441c4a0cc00104c000b2006200741d4a0cc00104c000b2007200441d4a0cc00104b000b1038000b1039000b2006200841e4a0cc00104c000b2008200441e4a0cc00104b000b200341f0006a24000bbf06010c7f230041d0006b2202240020002001280200360200200141046a280200220321040240200341244d0d00200141106a28020021040b024002400240200441254f0d0041002105410021040c010b41012105200410272206450d010b2002410c6a22074100360200200241086a2006360200200241106a2002290230370300200241186a200241306a41086a290200370300200241206a200241306a41106a290200370300200241286a200241306a41186a280200360200200220053a000420022004360200200220022f004d3b00052002200241cf006a2d00003a000702400240200341244b0d00200141096a21010c010b200141106a28020021032001410c6a28020021010b02402003450d00200241057221082003417f6a210641002105034020012d00002109024002400240024020052004200441244b220a1b220320044124200a1b470d0002400240200a0d004124210b2004210c0c010b2005210c2004210b0b200b200c470d0002400240200c41016a220d200c490d004100210b0240200d4102490d00417f200d417f6a6776210b0b200b41016a220c200b490d0002400240200a0d004124210d200421052008210b0c010b2002280208210b2004210d0b2005200c4b0d0102400240200c4125490d00200d200c470d010c040b20044125490d04200241003a00042008200b200510e4071a20022005360200200b1029200228020021040c030b02400240200a0d00200c10272204450d0a2004200b200510e4071a0c010b200b200d200c102b2204450d090b2002200536020c20022004360208200241013a00042002200c3602000c040b41a4a1cc00411141b8a1cc001033000b41e6a1cc00412041b8a1cc001033000b200441244b0d010b20022104200821050c010b20022802082105200721040b2004200341016a360200200520036a20093a00002006450d01200141016a21012006417f6a2106200228020c2105200228020021040c000b0b200041046a22042002290300370200200441286a200241286a280200360200200441206a200241206a290300370200200441186a200241186a290300370200200441106a200241106a290300370200200441086a200241086a290300370200200241d0006a24000f0b1030000b130020004103360204200041f098c8003602000b130020004102360204200041989bc8003602000b0f00200028020020012002107941000b900201027f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b2000200320011079200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41a8a3c800200241086a10372101200241206a240020010b13002000410036020420004180a6cc003602000b130020004101360204200041f4a6c8003602000bca0603027f017e057f23004180016b2202240041b1dcc900ad4280808080f00084100122032900002104200241306a41086a200341086a290000370300200220043703302003102941f5a7c800ad4280808080a00284100122032900002104200241d0006a41086a200341086a2900003703002002200437035020031029200220013602742002200241f4006aad4280808080c000841002220329000037037820031029200241146a200241f8006a3602002002200241f8006a41086a36020c2002200241f4006a3602102002200241f8006a360208200241c0006a200241086a107502400240024002402002280248220541206a2206417f4c0d00200228024021070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290330370000200341086a200241306a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290350370010200341186a200241d0006a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a02402002280244450d00200710290b200241086a2003200610c306200241d8006a2201200241086a410c6a290200370300200241e0006a2206200241086a41146a290200370300200241e8006a2205200241086a411c6a290200370300200241d0006a41206a200241086a41246a2802003602002002200229020c3703500240024020022802084101460d00200041003602000c010b20004101360200200020022903503702042000410c6a2001290300370200200041146a20062903003702002000411c6a2005290300370200200041246a200241f0006a2802003602000b02402008450d00200310290b20024180016a24000f0b1038000b1039000b1032000b1030000b9f0501057f230041d0006b2205240002400240024002402004417f4c0d000240024020040d0041002106410121070c010b200410272207450d02200421060b0240024020062004490d00200621080c010b200641017422082004200820044b1b22084100480d03024020060d002008102722070d010c050b20062008460d00200720062008102b2207450d040b20072003200410e4072107410021060240200141306a2802002004470d000240200128022822062007470d00410121060c010b20072006200410e7074521060b02402008450d00200710290b0240024020060d00200541186a22082004ad4220862003ad841010220641186a290000370300200541106a2207200641106a290000370300200541086a2209200641086a2900003703002005200629000037030020061029200541206a41186a2008290300370300200541206a41106a2007290300370300200541206a41086a2009290300370300200520052903003703200240024020040d0041002106410121070c010b200410272207450d04200421060b0240024020062004490d00200621080c010b200641017422082004200820044b1b22084100480d05024020060d00200810272207450d070c010b20062008460d00200720062008102b2207450d060b20072003200410e40721062005200436024820052008360244200520063602402001200541206a2004200541c0006a10f906200041186a200541186a290300370000200041106a200541106a290300370000200041086a200541086a290300370000200020052903003700000c010b20002001290034370000200041186a200141cc006a290000370000200041106a200141c4006a290000370000200041086a2001413c6a2900003700000b200541d0006a24000f0b1038000b1039000b1032000b1030000b810d04047f017e027f017e230041a0016b2205240002400240024002400240024002400240024002400240200141d8006a2206200141346a412010e707450d00200541106a41186a200641186a290000370300200541106a41106a200641106a290000370300200541106a41086a200641086a290000370300200520062900003703102001200541106a10bc032206450d01200628020c4101480d010b200441046a2206417f4c0d020240024020060d0041012107410021060c010b200610272207450d040b2005410036021820052007360210200520063602140240200641034b0d00200641017422084104200841044b1b22084100480d050240024020060d002008102722070d010c0c0b20062008460d00200720062008102b2207450d0b0b20052008360214200520073602100b20072002360000200541043602182004200541106a10710240024020052802142208200528021822076b2004490d0020052802102106200821020c010b200720046a22062007490d05200841017422022006200220064b1b22024100480d050240024020080d00024020020d00410121060c020b200210272206450d0c0c010b2005280210210620082002460d00200620082002102b2206450d0b0b20052002360214200520063602100b200620076a2003200410e4071a20052001360210200541206a200141e0006a290200370300200541286a200141e8006a290200370300200541306a200141f0006a29020037030020054188a8c80036021420052001290258370318200541003602582005200720046a36025420052006360250200541f0006a200541106a200541d0006a10860602402002450d00200610290b20052802704101470d010240200528027422012d0000220441034b0d00024020040e0408080008080b200141086a280200450d07200141046a28020010290c070b200141286a280200450d06200141246a28020010290c060b200041003602400c070b20052802742204450d0502400240200541f8006a2903002209422088a741044f0d0041012106410021070c010b20042800002107410021060b02402009a7450d00200410290b20060d0520052007360208200541106a41106a200141d8006a220441086a290200370300200541106a41186a200441106a290200370300200541306a200441186a29020037030020054188a8c8003602142005200136021020052004290200370318200542043702542005200541086a360250200541f0006a200541106a200541d0006a108606024020052802704101470d000240200528027422012d0000220441034b0d00024020040e0406060006060b200141086a280200450d05200141046a28020010290c050b200141286a280200450d04200141246a28020010290c040b0240200528027422060d00200041003602400c070b200541f0006a41086a29030021092005200636020820052009422088a7220736020c41002101200541003a009001024002400240034020072001460d01200541f0006a20016a200620016a22042d00003a00002005200441016a3602082005200141016a22043a0090012004210120044120470d000b200541d0006a41086a2201200541f0006a41086a2202290300370300200541d0006a41106a2208200541f0006a41106a2203290300370300200541d0006a41186a220a200541f0006a41186a220b290300370300200520052903703703502005200720046b36020c200541f0006a200541086a1083022005280290012204450d01200541106a41186a2207200a290300370300200541106a41106a220a2008290300370300200541106a41086a22082001290300370300200541106a41286a22012002290300370300200541106a41306a22022003290300370300200541106a41386a2203200b290300370300200520052903503703102005200529037037033020054194016a280200210b200541f0006a41286a290300210c200041386a2003290300370300200041306a2002290300370300200041286a2001290300370300200041206a2005290330370300200041186a2007290300370300200041106a200a290300370300200041086a200829030037030020002005290310370300200041c8006a200c3702002000200b360244200020043602400c020b2005410036020c200141ff0171450d00200541003a0090010b200041003602400b2009a7450d06200610290c060b1038000b1039000b1032000b20011029200041003602400c020b200110290b200041003602400b200541a0016a24000f0b1030000ba60402097f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200041003602000c010b200341186a28020021052003280214210641002101200341003a0068024002400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341286a41186a2201200341c8006a41186a2207290300370300200341286a41106a2208200341c8006a41106a2209290300370300200341286a41086a220a200341c8006a41086a220b29030037030020032003290348370328200520026b41034d0d01200b200a290300220c37030020092008290300220d37030020072001290300220e37030020032003290328220f370348200420026a28000021012000411c6a200e370200200041146a200d3702002000410c6a200c3702002000200f370204200041246a2001360200410121010c020b200141ff0171450d00200341003a00680b4100210120034100360230200342013703282003410d3602242003200341086a3602202003200341286a36026c200341dc006a41013602002003420137024c200341f4eaca003602482003200341206a360258200341ec006a41a8a3c800200341c8006a10371a20033502304220862003350228841008200328022c450d00200328022810290b200020013602002006450d00200410290b200341f0006a24000b8a0201057f024020002802102201450d00200041146a280200220241046a2103200120026a41016a21042002280200417f73418081828478712105200041186a280200210202400340024002402005450d00200521010c010b0340200320044f0d03200241c0016a210220032802002101200341046a220521032001418081828478712201418081828478460d000b2001418081828478732101200521030b2001417f6a2001712105200220016841037641306c6a220141246a280200450d00200128022010290c000b0b02402000280210220341086a200341056a490d00200341016aad42307e422088a71a0b200028021410290b02402000412c6a280200450d00200028022810290b0b8f3d02267f0c7e23002201210220014180056b41607122032400200041186a22012802002104200041146a220528020022062802002107200141043602002005418cc5c00036020020002802102108200041003602102000411c6a42003702002003200036020c2006200841016a22096a210a200641046a2101024002400240024002402007418081828478712205418081828478460d00200541808182847873210b200421050c010b20042105034002402001200a490d00410021070c030b200541c0026a210520012802002107200141046a220c21012007418081828478712207418081828478460d000b200741808182847873210b200c21010b200341c0046a41186a2005200b6841037641d0006c6a220741186a290200370300200341c0046a41106a220d200741106a290200370300200341c0046a41086a220e200741086a290200370300200320072902003703c0042007280220210f20072d00242110200341c0026a41276a2211200741cc006a280000360000200341c0026a41206a2212200741c5006a290000370300200341c0026a41186a2007413d6a290000370300200341c0026a41106a2213200741356a290000370300200341c0026a41086a22142007412d6a290000370300200320072900253703c002200b417f6a200b71210720104102470d010b2000210f0c010b20034180046a41186a2215200341c0046a41186a221629030037030020034180046a41106a2217200d29030037030020034180046a41086a2218200e290300370300200341d8016a41086a22192014290300370300200341d8016a41106a221a2013290300370300200341d8016a41186a221b200341c0026a41186a221c290300370300200341d8016a41206a221d2012290300370300200341d8016a41276a221e2011280000360000200320032903c00437038004200320032903c0023703d801200341c0026a410572210b2000211f0340200341a0016a41186a220c2015290300370300200341a0016a41106a22202017290300370300200341a0016a41086a22212018290300370300200341106a41086a22222019290300370300200341106a41106a2223201a290300370300200341106a41186a2224201b290300370300200341106a41206a2225201d290300370300200341106a41276a2226201e28000036000020032003290380043703a001200320032903d801370310201b200c290300370300201a202029030037030020192021290300370300200320032903a0013703d801200b2003290310370000200b41086a2022290300370000200b41106a2023290300370000200b41186a2024290300370000200b41206a2025290300370000200b41276a2026280000360000200320103a00c4022003200f3602c002201f41c8006a280200210c201f280244211002400240200f41244b0d00200b211f0c010b20032802cc02210f20032802c802211f0b200320032f01ec023b01c8042003200f3602c4042003201f3602c0042010200341d8016a200341c0046a200c28021c110600024020032802c00241244d0d0020032802c80210290b024002402007450d002001210c0c010b034002402001200a490d0041002107200328020c210f0c040b200541c0026a210520012802002107200141046a220c21012007418081828478712207418081828478460d000b20074180818284787321070b2016200520076841037641d0006c6a220141186a290200370300200d200141106a290200370300200e200141086a290200370300200320012902003703c0042001280220210f20012d002421102011200141cc006a2800003600002012200141c5006a290000370300201c2001413d6a2900003703002013200141356a29000037030020142001412d6a290000370300200320012900253703c0022007417f6a2007712107024020104102470d00200c2101200328020c210f0c020b201520162903003703002017200d2903003703002018200e29030037030020192014290300370300201a2013290300370300201b201c290300370300201d2012290300370300201e2011280000360000200320032903c00437038004200320032903c0023703d801200328020c211f200c21010c000b0b02400340024002402007450d002007210b0c010b03402001200a4f0d03200541c0026a210520012802002107200141046a220c21012007418081828478712207418081828478460d000b200741808182847873210b200c21010b200b417f6a200b7121072005200b6841037641d0006c6a220c28022041244d0d00200c28022810290c000b0b4100210102402008450d00200641ff01200841056a10e6071a2008210120084108490d00200941037641076c21010b20002008360210200041206a41003602002000411c6a2001360200200041186a2004360200200041146a200636020002400240024002400240200f2d00504101460d00200f41d4006a28020021010240200f41c0006a220c28020022072007417f6a200f41386a220a2802002205200f41346a220b2802006b716b4101470d00200f413c6a108b01200b280200220b200a28020022054d0d00024020052007200b6b2210490d00200f28023c2205200c28020020106b22074102746a2005200b4102746a201041027410e4071a200f41346a2007360200200f41386a28020021050c010b200f28023c220b20074102746a200b200541027410e4071a200f41386a2205200528020020076a22053602000b200a200c280200417f6a200541016a71360200200f413c6a28020020054102746a2001360200024002400240024002400240024002400240024002400240200f41306a280200220520014d0d00200f280228200141fc006c6a22012902102127200120032903d00237021020012902082128200120032903c802370208200341003a00c002200341003602c40220012902002129200120032903c002370200200141186a2205290200212a200520032903d802370200200341c0006a41086a2205200141e8006a290200370300200341c0006a41106a2207200141f0006a290200370300200341c0006a41186a220a200141f8006a280200360200200320273703b001200320283703a801200320293703a001200320012902603703402003202a3703b8012001290240212b200141c8006a290200212c200141d0006a290200212d200141d8006a290200212e2001290220212f200141286a2902002130200141306a29020021312003200141386a290200223237039801200320313703900120032030370388012003202f370380012003202e3703782003202d3703702003202c3703682003202b37036002402029a741ff01714101470d00200341d8016a41176a220c20032900b8012229370000200341d8016a41106a220b20032900b1012227370300200341d8016a41086a221020032900a9012228370300200f28024c220120032900a101222a3700002001202fa722083a001f200141086a2028370000200141106a2027370000200141176a20293700002003202a3703d801200341c0026a41d8006a202e370300200341c0026a41d0006a202d370300200341c0026a41c8006a202c37030020034180036a202b370300200341fc026a200328029c01360200200341f4026a200329029401370200200341ec026a200329028c0137020020032003290284013702e402200341a0036a2003290340370300200341c0026a41e8006a2005290300370300200341c0026a41f0006a2007290300370300200341c0026a41f8006a200a280200360200200341c9026a2010290300370000200341d1026a200b290300370000200341c0026a41186a200c290000370000200320032903d8013700c102200341e0026a20083a0000200341013a00c002200f41286a200341c0026a10a9062101200328020c220341003a0050200341d4006a20013602000c0d0b2027a721072028a721052027422088a7210a2028422088a721012003410036028402200341003a00dc01200341003602d80120034188026a41106a200328027836020020034188026a41086a200329037037030020032003290368370388022032422088a721172032a72114024002400240024002402029422088a70e050102030400010b200341e0026a2030370300200341d8026a202f370300200341d0026a202a370300200341cc026a200a360200200341c8026a2007360200200341e8026a2031370300200320053602c002200320013602c40202400240200141244b0d00200341c9026a210a0c010b202aa721010b2005410176210b0240024020054101710d002001200b490d0741002107410021080c010b2001200b4d0d0741012108200a200b6a2d0000410f712107200b41016a210b0b200141017420056b220541ffff03200541ffff03491b210f2001200b6b210c200a200b6a210b02402017410020171b22100d00200f41017641036a22011027220a450d084100210520034100360218200320013602142003200a3602102003200f3602c404200341013b01c004200341c0046a200341106a10f40220080d0b410021010c0e0b200f41017641036a22011027220a450d074100210520034100360218200320013602142003200a3602102003200f3602c40420034181023b01c004200341c0046a200341106a10f40220080d0b410021010c0c0b4101210a410110272207450d06200741003a0000410121010c0e0b200341e0026a2030370300200341d8026a202f370300200341d0026a202a370300200341cc026a200a360200200341c8026a2007360200200341e8026a2031370300200320053602c002200320013602c40202400240200141244b0d00200341c9026a210a0c010b202aa721010b2005410176210702400240200541017122050d0020012007490d08410021054100210c0c010b200120074d0d08200a20076a2d0000410f71210c200741016a21070b200341186a200120076b3602002003200c3a0011200320053a00102003200a20076a360214200320032f0180043b0112200341c0046a200341106a10a506202ba72201200341c0046a10710240024020032802c404220c20032802c80422056b2001490d0020032802c0042107200c210a0c010b200520016a22072005490d13200c410174220a2007200a20074b1b220a4100480d1302400240200c0d000240200a0d00410121070c020b200a10272207450d140c010b20032802c0042107200c200a460d002007200c200a102b2207450d130b2003200a3602c404200320073602c0040b200720056a2014200110e4071a02402017450d00201410290b024020032802c40241244d0d0020032802cc0210290b200520016a21010c0d0b200341e0026a2030370300200341d8026a202f370300200341d0026a202a370300200341cc026a200a360200200341c8026a2007360200200341e8026a2031370300200320053602c002200320013602c40202400240200141244b0d00200341c9026a210a0c010b202aa721010b200320053602e803200320013602e4032003200a3602e00320034180046a200341e0036a10a606200341d8016a200341e0036a410020011091042101200328020c2105200341c0046a41086a202b370300200341c0046a41106a200329038802370300200341d8046a20034188026a41086a290300370300200341e0046a20034188026a41106a280200360200200320323703c004200341106a2005200341c0046a200341d8016a109204200341d8016a2001109304419cf7ca00412841b8a1cc001033000b419cf7ca00412841b8a1cc001033000b20012005418095c8001036000b200b200141b09fcc00104c000b200b200141c09fcc001036000b1039000b2007200141b09fcc00104c000b2007200141c09fcc001036000b410121010c020b410121010b03400240024020010e020001010b02402005200c490d00200341106a21010c040b200b20056a2d00002107200541016a2105410121010c010b0240200328021822012003280214470d00200141016a220a2001490d092001410174220f200a200f200a4b1b220a4100480d090240024020010d000240200a0d004101210f0c020b200a1027220f450d0a0c010b2003280210210f2001200a460d00200f2001200a102b220f450d090b2003200a3602142003200f3602100b200328021020016a20073a00002003200141016a360218410021010c000b0b03400240024020010e020001010b02402005200c490d00200341106a21010c030b200b20056a2d00002107200541016a2105410121010c010b0240200328021822012003280214470d00200141016a220a2001490d082001410174220f200a200f200a4b1b220a4100480d080240024020010d000240200a0d004101210f0c020b200a1027220f0d010c090b2003280210210f2001200a460d00200f2001200a102b220f450d080b2003200a3602142003200f3602100b200328021020016a20073a00002003200141016a360218410021010c000b0b200341d0036a41086a200141086a2802002213360200200320012902003703d0030240201320032802d403470d00201341016a22012013490d06201341017422052001200520014b1b22014100480d060240024020130d00024020010d00410121050c020b200110272205450d070c010b20032802d003210520132001460d00200520132001102b2205450d060b200320013602d403200320053602d0030b20032802d003220620136a41003a0000200320032802d80341016a22013602d8030240200120032802d403470d00200141016a22052001490d06200141017422072005200720054b1b22054100480d060240024020010d00024020050d00410121060c020b200510272206450d070c010b20012005460d00200620012005102b2206450d060b200320053602d403200320063602d0030b200620016a41003a0000200320032802d80341016a22153602d80302402010450d00202b422088a72201200341d0036a10710240024020032802d403220720032802d80322056b2001490d0020032802d00321060c010b200520016a220a2005490d072007410174220c200a200c200a4b1b220a4100480d070240024020070d000240200a0d00410121060c020b200a10272206450d080c010b20032802d00321062007200a460d0020062007200a102b2206450d070b2003200a3602d403200320063602d0030b200620056a2010200110e4071a2003200520016a22153602d8030b0240024002400240201441c0046a22122014470d0041002110410021010c010b200341106a4101722107200341c0046a410172211b200341c9026a211820034180046a41017221054100210b20142101410021104101210f024002400340200341023a00c0042001290200212920032903d804212720032903d004212820032903c804212f200120032903c0043702002001290208212a2001202f3702082001290210212f20012028370210200141186a220a2902002128200a202737020020032028370398042003202f370390042003202a370388042003202937038004200141206a280200210d200341c0046a41176a220a200541176a290000370000200341c0046a41106a2208200541106a290000370300200341c0046a41086a2219200541086a290000370300200320052900003703c00402402029a7220e41ff0171221a4103470d0020104180fe037141087621010c050b200341e0036a41176a220c200a290000370000200341e0036a41106a221f2008290300370300200341e0036a41086a20192903002229370300200320032903c00422273703e00320034180046a41176a2211200c29000037000020034180046a41106a220a201f29030037030020034180046a41086a220c20293703002003202737038004024002400240201a4102470d00200341023a001020034180046a41186a200741186a290000370300200a200741106a290000370300200c200741086a29000037030020032007290000370380044100211a0c010b0240024020032802c402221a41244b0d002018211f0c010b20032802d002211a20032802cc02211f0b200320032802c0023602b8042003201a3602b4042003201f3602b004200341d8016a200341b0046a4101200b109104211a200328020c211f201b200329038004370000201b41086a200c290300370000201b41106a200a290300370000201b41176a20112900003700002003200e3a00c0042003200d3602e004200341106a201f200341c0046a200341d8016a109204200341d8016a201a10930420032d0010221a4103460d0120034180046a41186a221f200741186a290000370300200a200741106a290000370300200c200741086a2900003703002003200729000037038004024002400240201a410371417f6a220d41014b0d004100211a200d0e020103010b4120200341d0036a10710240024020032802d403221920032802d80322086b4120490d0020032802d00321060c010b200841206a221a2008490d1020194101742206201a2006201a4b1b221a4100480d100240024020190d000240201a0d00410121060c020b201a10272206450d110c010b20032802d00321062019201a460d0020062019201a102b2206450d100b2003201a3602d403200320063602d0030b200620086a2219200329038004370000201941186a201f290300370000201941106a200a290300370000201941086a200c290300370000200841206a21150c010b2003280234211a200341c0046a41186a201f2903003703002008200a2903003703002019200c29030037030020032003290380043703c004201a41214f0d04201a200341d0036a10710240024020032802d403220c20032802d803220a6b201a490d0020032802d00321060c010b200a201a6a2208200a490d0f200c41017422192008201920084b1b22084100480d0f02400240200c0d00024020080d00410121060c020b200810272206450d100c010b20032802d0032106200c2008460d002006200c2008102b2206450d0f0b200320083602d403200320063602d0030b2006200a6a200341c0046a201a10e4071a200a201a6a21150b200320153602d803200f211a0b200b41016a210b200f410174210f201a2010722110200141246a22012012460d030c010b0b20104180fe037141087621010c040b201a412041a4e5c300104b000b20104180fe037141087621010b200341033a008004200341d7046a200329009804370000200341d0046a200329009104370300200341c8046a20032900890437030020032003290081043703c0040b200341033a00100b201341026a21052013417d4b0d020240201520054f0d002005201541b4e5c300104b000b200620136a220520013a0001200520103a000020032802d803210120032802d403210a20032802d003210702402017450d00202ba7450d00201710290b2014102920032802c40241244d0d0020032802cc0210290b200328020c220541c8006a280200210c20052802442105200341106a41086a41002802b0a140360200200341002902a8a140370310200341c0026a2005200341106a20072001200c280214110500200328020c220128024c220520032903c002370000200541086a200341c0026a41086a290300370000200541106a200341c0026a41106a290300370000200541186a200341c0026a41186a2903003700002001200128027441016a360274200128024c220541186a2900002129200541106a2900002127200541086a2900002128200141d1006a2005290000370000200141013a0050200141d9006a2028370000200141e1006a2027370000200141e9006a20293700000240200a450d00200710290b20032802d80141244d0d00200341e0016a28020010290b0240200041306a2802002203450d0020002802282201200341fc006c6a2107034002400240200141246a2203200141046a20012d00001b2201280200220541034b0d0002400240024020050e0404000102040b0240200128020841244d0d00200128021010290b200141386a280200450d03200128023410290c030b200128020841244d0d02200128021010290c020b2001280204102920012802082205450d012001410c6a280200450d01200510290c010b0240200128020841244d0d00200128021010290b2001280234102920012802382205450d002001413c6a280200450d00200510290b200341d8006a22012007470d000b0b02402000412c6a2802002201450d00200141fc006c450d00200028022810290b200041c0006a280200210102400240200041386a2802002203200041346a28020022054f0d00200120054f0d014189a7c700411c41b8a1cc001033000b20012003490d020b0240200141ffffffff0371450d002000413c6a28020010290b024020002802102205450d002000280214220341046a2101200520036a41016a21072003280200417f7341808182847871210a200028021821030240034002400240200a450d00200a21050c010b0340200120074f0d03200341c0026a210320012802002105200141046a220a21012005418081828478712205418081828478460d000b2005418081828478732105200a21010b2005417f6a200571210a200320056841037641d0006c6a220528022041244d0d00200528022810290c000b0b02402000280210220141086a200141056a490d00200141016aad42d0007e422088a71a0b200028021410290b200224000f0b2013200541b4e5c300104c000b20032001418ca8c700104b000b1030000b1032000bc00202027f017e230041106b220224002002200028023036020020012002410410720240412010272203450d0020032000290038370000200341186a200041d0006a290000370000200341106a200041c8006a290000370000200341086a200041c0006a290000370000200120034120107220031029024020002d0058220341024b0d00024002400240024020030e03000102000b200241003a00000c020b200241013a00000c010b200241023a00000b20012002410110720b200220002802343602002001200241041072200029030021042002200041086a290300370308200220043703002001200241101072200029031021042002200041186a290300370308200220043703002001200241101072200029032021042002200041286a290300370308200220043703002001200241101072200241106a24000f0b1039000b130020004104360204200041e0a8c8003602000b3400200041e0a7c80036020420004100360200200041146a4102360200200041106a41f0b4c800360200200041086a42093702000bac0402067f027e230041106b220324000240024002400240200141306c4104722204417f4c0d00200410272205450d012003410036020820032004360204200320053602002001200310710240024020010d002003280208210120032802042105200328020021060c010b2000200141306c6a2107200328020021062003280204210520032802082101034002400240200520016b4120490d00200141206a2104200521080c010b200141206a22042001490d05200541017422082004200820044b1b22084100480d05024020050d00024020080d00410121060c020b2008102722060d010c070b20052008460d00200620052008102b2206450d060b200620016a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200041286a2903002109200041206a290300210a02400240200820046b4110490d00200441106a2101200821050c010b200441106a22012004490d05200841017422052001200520014b1b22054100480d05024020080d00024020050d00410121060c020b200510272206450d070c010b20082005460d00200620082005102b2206450d060b200620046a220420093700082004200a3700002007200041306a2200470d000b2003200536020420032001360208200320063602000b20022902002001ad4220862006ad84100302402005450d00200610290b200341106a24000f0b1038000b1039000b1032000b1030000b130020004101360204200041c4bbc8003602000b3400200041eea1c80036020420004100360200200041146a4105360200200041106a418cbdc800360200200041086a420f3702000b130020004102360204200041a4c2c8003602000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241e5003600000b13002000410136020420004194c5c8003602000b3400200041f182cc0036020420004100360200200041146a4103360200200041106a41bcc6c800360200200041086a420c3702000b3400200041cdcac80036020420004100360200200041146a4101360200200041106a41e0cac800360200200041086a42123702000b130020004102360204200041e4cbc8003602000bb908030a7f027e017f23004180016b22022400200241106a22034200370300200241086a42003703002002411c6a22044180023b0100200241186a22054180e8922636020020024200370300200241013602680240024002400240411810272206450d002002420137027420022006360270200241f0006a41004101108f01200228027022072002280278220841186c6a2206200329030037030820062002290308370300200620022d001d3a0015200620042d00004100473a001420062005280200360210200841016a21062002280274210902402002280268220341044d0d00200341186c450d00200228020410290b200641186c4104722203417f4c0d01200310272204450d0020024100360208200220033602042002200436020020062002107102402006450d002007200641186c6a210a200228020421042002280208210b200721030340200341086a290300210c2003290300210d024002402004200b6b4110490d00200b41106a210620022802002105200421080c010b200b41106a2206200b490d05200441017422052006200520064b1b22084100480d050240024020040d00024020080d00410121050c020b2008102722050d010c080b2002280200210520042008460d00200520042008102b2205450d070b20022008360204200220053602000b2005200b6a2204200c3700082004200d37000020022006360208200341106a28020021040240200820066b41034b0d00200641046a220b2006490d052008410174220e200b200e200b4b1b220b4100480d050240024020080d000240200b0d00410121050c020b200b10272205450d080c010b2008200b460d0020052008200b102b2205450d070b2002200b360204200220053602000b200520066a20043600002002200641046a2204360208200341146a2d0000210802400240200228020422062004460d00200228020021050c010b200441016a22062004490d05200441017422052006200520064b1b22064100480d050240024020040d0041002104024020060d00410121050c020b200610272205450d080c010b2002280200210520042006460d00200520042006102b2205450d070b20022006360204200220053602000b200520046a20083a00002002200441016a2208360208200341156a2d0000210b0240024020062008460d0020062104200821060c010b200641016a22042006490d05200641017422082004200820044b1b22044100480d050240024020060d0041002106024020040d00410121050c020b200410272205450d080c010b20062004460d00200520062004102b2205450d070b20022004360204200220053602000b200520066a200b3a00002002200641016a220b360208200341186a2203200a470d000b0b20002002290300370200200041086a200241086a28020036020002402009450d00200941186c450d00200710290b20024180016a24000f0b1039000b1038000b1032000b1030000b3501017f02404110102722020d001039000b20024200370008200242c0843d370000200042908080808002370204200020023602000b340020004188a2c80036020420004100360200200041146a4101360200200041106a41d4cec800360200200041086a42183702000ba30301067f230041106b22032400024020014105744104722204417f4c0d000240200410272205450d002003410036020820032004360204200320053602002001200310710240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020002101024002402006200522046b4120490d00200441206a21050c010b024002400240200441206a22052004490d00200641017422002005200020054b1b22004100480d000240024020060d00024020000d00410121070c020b2000102721070c040b20062000470d020b200021060c030b1032000b200720062000102b21070b2000210620070d001030000b200141206a2100200720046a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100302402006450d00200710290b200341106a24000f0b1039000b1038000bc90402017f037e23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101241014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101741014621000c010b2002ad4220862001ad84101022012900002105200141086a2900002106200141106a2900002107200441186a200141186a290000370300200441106a2007370300200441086a2006370300200420053703002001102941012101200441206a200041016a200410d7064100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a29000037030020042004290021370348200441c8006aad4280808080900484101022002900002105200041086a2900002106200041106a2900002107200441f0006a41186a200041186a290000370300200441f0006a41106a2007370300200441f0006a41086a200637030020042005370370200010290240200441f0006a2003460d00200441f0006a2003412010e7074521010b200121000b20044190016a240020000bcf0303017f017e037f230041d0006b22032400024020012002101e2204422088a72201450d002004a722052d0000220241014b0d002001417f6a210602400240024020020e020001000b41002101200341003a0049200541016a21070240034020062001460d01200341286a20016a200720016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d0028210241002106200341086a21010c020b200141ff0171450d02200341003a00490c020b2006450d0120052d0001220241034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a2900003703002003200329002837030841012106200341086a21010b200020023a0001200020063a0000200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a29000037000020051029200341d0006a24000f0b41e891cc00412e200341286a419893cc00419892cc00103a000b130020004102360204200041acd1c8003602000bb50301087f230041106b220424002000280204210520002802002106410021072001a7220821090340200741046a22072009200671220a6a21092005200a6a28000041808182847871220b450d000b02402005200b68410376200a6a20067122076a2c000022094100480d0020052005280200418081828478716841037622076a2d000021090b02402009410171220a450d00200028020c0d0020042000200310da062000280204210520002802002106410021070340200741046a2207200820067122096a2108200520096a28000041808182847871220b450d000b2005200b6841037620096a20067122076a2c00004100480d002005280200418081828478716841037621070b2000200028020c200a6b36020c20002802082109200520076a2001a7411976220a3a00002007417c6a20067120056a41046a200a3a00002009200741306c6a220741286a200241286a290200370200200741206a200241206a290200370200200741186a200241186a290200370200200741106a200241106a290200370200200741086a200241086a290200370200200720022902003702002000200028021041016a360210200441106a24000bb01105097f017e057f037e017f230041c0006b22032400024002400240024002400240024002402001280210220441016a22052004490d00200128020022062107024020064108490d00200641016a41037641076c21070b200520074101764d0d032005200741016a2207200520074b1b22050d01418cc5c0002108410021094104210a4100210b0c020b41b4a1c000411c41d0a1c0001033000b024002400240024020054108490d00200541ffffffff01712005470d02200541037441076e21060c010b200541016a21060b417f2006417f6a6776220b41086a2206200b41056a2205490d04200b41016a2207ad42307e220c422088a70d042006417c712206200ca76a22082006490d042008102722080d011030000b41b4a1c000411c41d0a1c0001033000b200b200741037641076c200b4108491b2109200841ff01200510e60720066a210a20012802002106200128021021040b2001280204220541046a210d200620056a41016a210e2005280200417f7341808182847871210f2002280200211020012802082111024003400240200f0d000340200d200e4f0d03201141c0016a2111200d2802002106200d41046a2205210d2006418081828478712206418081828478460d000b200641808182847873210f2005210d0b2003201041086a29030022122010290300220c852213200c4218898520134210868520134225897c221342a0cbbf9599b5a19f0a7c22142011200f6841037641306c6a221529001885201529000020148542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852015290008201342efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852015290010201342bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010d507200341086a29030020032903007c2012200c7c85220ca72106410021050340200541046a22052006200b7122076a2106200820076a280000418081828478712202450d000b200f417f6a21050240200820026841037620076a200b7122066a2c00004100480d002008280200418081828478716841037621060b2005200f71210f200820066a200ca741197622053a00002006417c6a200b7120086a41046a20053a0000200a200641306c6a220641286a201541286a290200370200200641206a201541206a290200370200200641186a201541186a290200370200200641106a201541106a290200370200200641086a201541086a290200370200200620152902003702000c000b0b200120043602102001200a360208200041003602002001200920046b36020c2001280204210520012008360204200128020021062001200b3602002006450d040240200641086a200641056a490d00200641016aad42307e422088a71a0b200510290c040b200641016a21074100210541002106024003400240024020054101710d00200620074f0d0320062105200641016a21060c010b200641036a220520064922080d022005200749220b450d022007200641046a20081b2007200b1b21060b200128020420056a220520052802002205410776417f73418182840871200541fffefdfb07726a360200410121050c000b0b20012802042106200128020041016a220541044f0d01200641046a2006200510e5071a0c020b41b4a1c000411c41d0a1c0001033000b200620056a20062800003600000b417f2106024002402001280200220541016a22102005490d00200228020021154100210f0340200f221141016a210f024020112001280204220b6a2d0000418001470d0002400340200341106a201541086a29030022122015290300220c852213200c4218898520134210868520134225897c221342a0cbbf9599b5a19f0a7c22142001280208201141306c6a220d29001885200d29000020148542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85200d290008201342efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85200d290010201342bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010d5072001280200210841002106200341106a41086a29030020032903107c2012200c7c85220ca7220e21050340200641046a2206200520087122076a2105200b20076a280000418081828478712202450d000b0240200b20026841037620076a20087122066a2c00004100480d00200b280200418081828478716841037621060b20062008200e7122056b201120056b732008714104490d01200b20066a22052d000021072005200ca741197622023a00002006417c6a200871200b6a41046a20023a00000240200741ff01460d002001280208200641306c6a2206290200210c2006200d290200370200200641186a220529020021132005200d41186a2207290200370200200641106a220529020021122005200d41106a2208290200370200200641086a220529020021142005200d41086a220b290200370200200b20143702002008201237020020072013370200200d200c370200200641286a2205290200210c2005200d41286a2207290200370200200629022021132006200d290220370220200d20133702202007200c3702002001280204210b0c010b0b2001280204220520116a41ff013a0000200520012802002011417c6a716a41046a41ff013a00002001280208200641306c6a2206200d290200370200200641086a200d41086a290200370200200641106a200d41106a290200370200200641186a200d41186a290200370200200641206a200d41206a290200370200200641286a200d41286a2902003702000c010b200b20116a200ca741197622063a000020082011417c6a71200b6a41046a20063a00000b200f2010470d000b200128020022064108490d010b200641016a41037641076c21060b200041003602002001200620012802106b36020c0b200341c0006a24000bfc0403027f017e057f230041d0006b2202240041d787cc00ad4280808080900184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b5e0c800ad4280808080f00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041d787cc00ad4280808080900184100122032900002104200241086a41086a200341086a2900003703002002200437030820031029419588cc00ad4280808080d00084100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000bfc0403027f017e057f230041d0006b2202240041d787cc00ad4280808080900184100122032900002104200241086a41086a200341086a2900003703002002200437030820031029418a88cc00ad4280808080b00184100122032900002104200241186a41086a200341086a2900003703002002200437031820031029200220013602342002200241346aad4280808080c000841002220329000037033820031029200241cc006a200241386a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107502400240024002402002280230220541206a2206417f4c0d00200228022821070240024020060d0041002101410121030c010b200610272203450d02200621010b024002402001410f4d0d00200121080c010b200141017422084110200841104b1b22084100480d03024020010d002008102722030d010c050b20012008460d00200320012008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821010c010b200841017422014120200141204b1b22014100480d0320082001460d00200320082001102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200141606a2005490d00200121080c010b200541206a22082005490d03200141017422092008200920084b1b22084100480d0320012008460d00200320012008102b2203450d040b200341206a2007200510e4071a2000200636020820002008360204200020033602000240200228022c450d00200710290b200241d0006a24000f0b1038000b1039000b1032000b1030000b931101147f230041106b2204240041002105024002400240200141014b0d0020010e020201020b20012106034020052006410176220720056a2208200020084102746a28020020024b1b2105200620076b220641014b0d000b0b4100210602400240200020054102746a28020022072002470d00410021090c010b200520072002496a2105410121090b4101210a024002400240200141014b0d0020010e020201020b4100210620012107034020062007410176220820066a220b2000200b4102746a28020020034b1b2106200720086b220741014b0d000b0b0240200020064102746a28020022072003470d004100210a0c010b200620072003496a21060b02400240024002400240024020090d00200a450d06200520014f0d0220052106200321020c010b200a0d05200620014f0d020b200020064102746a200236020020014115490d0302402001410176220541ffffffff03712005470d002005410274220c417f4c0d000240200c1027220d450d004100210520044100360208200442043703002000417c6a210e200041746a210f410421094100210320012110034020102102410021104101210b02402002417f6a2211450d00024002400240024002400240200020114102746a2802002002410274221220006a41786a2802002207490d002002417e6a2113200f20126a210841002110410021060340024020132006470d002002210b0c080b200641016a210620072008280200220b4f210a2008417c6a2108200b2107200a0d000b200641016a210b2006417f7320026a21060c010b200f20126a21082011210602400340024020064101470d00410021060c020b2006417f6a210620072008280200220b49210a2008417c6a2108200b2107200a0d000b0b20022006490d02200220014b0d01200220066b220b410176220a450d00200020064102746a2107200e20126a21080340200728020021132007200828020036020020082013360200200741046a21072008417c6a2108200a417f6a220a0d000b0b024020060d00200621100c050b0240200b41094d0d00200621100c050b200220014b0d02200020064102746a2112034020022006417f6a2210490d040240200220106b220b4102490d00200020064102746a22082802002207200020104102746a221328020022144f0d00201320073602000240200b4103490d002011210a201221072013280208221320144f0d00034020072013360200200741046a21082006200a417f6a220a460d01200741086a211320082107201328020022132014490d000b0b200820143602000b2010450d052012417c6a211220102106200b410a4f0d050c000b0b200220014180cac700104b000b200620024180cac700104c000b20022006417f6a2210490d00200220014190cac700104b000b201020024190cac700104c000b024020032004280204470d00200420034101108d01200428020021092004280208220521030b200920034103746a2206200b360204200620103602002004200541016a220536020820052103024020054102490d00024002400240024002400340024002400240024020092005417f6a4103746a2206280200450d00200541037420096a220b41746a2802002208200628020422074d0d0041022103200541024d0d0a20092005417d6a22124103746a2802042206200720086a4d0d0141032103200541034d0d0a200b41646a280200200620086a4d0d01200521030c0a0b20054103490d012006280204210720092005417d6a22124103746a28020421060b20062007490d010b2005417e6a21120b02402005201241016a22144d0d00200520124d0d022009201241037422156a2205280204221620052802006a22062009201441037422176a22052802002211490d03200620014b0d04200020114102746a22082005280204221341027422076a21052006410274210b02400240200620116b220220136b220620134f0d00200d20052006410274220710e407220a20076a2107024020134101480d0020064101480d00200e200b6a21030240034020032005417c6a22062007417c6a220b200b28020020062802004922021b2802003602002007200b20021b210720082006200520021b22054f0d012003417c6a2103200a2007490d000b0b200428020021090b200a21060c010b200d2008200710e407220620076a21070240024020134101480d00200220134a0d010b20082105200621060c010b2000200b6a2103200621060240034020082005280200220b20062802002202200b200249220b1b3602002006200641046a200b1b2106200841046a2108200541046a2005200b1b220520034f0d01200720064b0d000b0b200821050b20052006200720066b417c7110e4071a2004280208220520124d0d05200920156a2206201620136a36020420062011360200200520144d0d06200920176a2206200641086a20052014417f736a41037410e5071a20042005417f6a220536020820052103200541014d0d070c010b0b2014200541a0cac7001036000b2012200541b0cac7001036000b2011200641c0cac700104c000b2006200141c0cac700104b000b2012200541d0cac7001036000b201420051042000b2010450d050c000b0b1039000b1038000b2005200141a4e0c8001036000b2006200141dcdfc8001036000b0240200428020441ffffffff0171450d00200910290b200c450d01200d10290c010b20014102490d002001417f6a2105200020014102746a21084100210b034002400240024020052206417f6a220520014b0d00200120056b22074102490d02200020064102746a22062802002202200020054102746a2203280200220a4f0d022003200236020020074103490d01200b21072008210220032802082203200a4f0d01034020022206417c6a20033602002007417f6a2207450d02200641046a22022802002203200a4f0d020c000b0b2005200141f0c9c700104c000b2006200a3602000b200b41016a210b2008417c6a210820050d000b0b200441106a24000b130020004105360204200041bce0c8003602000ba46708047f017e017f027e077f017e057f097e23004180036b22012400200141e8006a41186a4200370300200141e8006a41106a22024200370300200141e8006a41086a220342003703002001420037036841fce2c800ad4280808080f00184100122042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102920032006290300370300200120012903c002370368418be3c800ad4280808080d001841001220429000021052006200441086a290000370300200120053703c00220041029200220012903c0022205370300200141e0026a41086a2003290300370300200141e0026a41106a2005370300200141e0026a41186a2006290300370300200120012903683703e002200141203602ec012001200141e0026a3602e801200141c0026a200141e0026aad2207428080808080048422081007108b020240024020012802c00222030d0041022106200141023602b4020c010b20012802c40221092001200628020022063602f401200120033602f0010240024020064104490d002001200341046a3602f00120012006417c6a22043602f40120044104490d002003280000210a2001200641786a3602f4012001200341086a3602f0012003280004210b200141e8006a200141f0016a10b2032001280268220c450d00200129026c2105410021060240024020012802f401220d0d000c010b2001200d417f6a220e3602f401200120012802f001220f41016a3602f0010240200f2d00004101460d000c010b200e4104490d002001200d417b6a3602f4012001200f41056a3602f001200f2800012104410121060b200120043602b802200120053702ac022001200c3602a8022001200b3602a4022001200a3602a0020c010b200141003602880220014201370380022001410d3602d4022001200141e8016a3602d002200120014180026a3602fc01200141fc006a41013602002001420137026c200141f4eaca003602682001200141d0026a360278200141fc016a41a8a3c800200141e8006a10371a2001350288024220862001350280028410080240200128028402450d0020012802800210290b410221060b200120063602b4022009450d00200310290b200141e8006a41106a2203200141a0026a41106a2209280200360200200141e8006a41086a220a200141a0026a41086a220b290300370300200120012903a0023703680240024002400240024002400240024020064102460d0020014180026a41106a2003280200220336020020014180026a41086a200a29030022103703002001200129036822053703800220092003360200200b2010370300200141b8026a2004360200200120053703a002200120063602b40202402005a722032000470d00410121030240024020064101460d0020012802a4022106200141e0026a200141a0026a41086a10ef05200141f8006a2006360200200141f4006a200141e0026a41086a280200360200200120012903e00237026c41002103200141e8006a21060c010b20012802a4022106200141e0026a200141a0026a41086a10ef05200141fc006a2006360200200141e8006a41086a20012903e002370300200141f8006a200141e0026a41086a2802003602002001200436026c200141e8006a21060b20062003360200200610e10620012802a00221030b024020012802a40220036a2000470d002001200141a8026a220d36026c20014100360268200141b0026a28020041286c4105722206417f4c0d02200610272203450d03200341013a0000200120063602e402200120033602e002200141013602e80220012802a802210620012802b0022203200141e0026a10710240024020030d0020012802e802210320012802e002210b0c010b2006200341286c6a210c20012802e402210920012802e8022103034002400240200920036b4120490d00200341206a210420012802e002210b2009210a0c010b200341206a22042003490d072009410174220a2004200a20044b1b220a4100480d070240024020090d000240200a0d004101210b0c020b200a1027220b0d010c0d0b20012802e002210b2009200a460d00200b2009200a102b220b450d0c0b2001200a3602e4022001200b3602e0020b200b20036a22032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a290000370000200120043602e802200641206a290300210502400240200a20046b4108490d00200441086a2103200a21090c010b200441086a22032004490d07200a41017422092003200920034b1b22094100480d0702400240200a0d00024020090d004101210b0c020b20091027220b450d0d0c010b200a2009460d00200b200a2009102b220b450d0c0b200120093602e4022001200b3602e0020b200b20046a2005370000200120033602e802200c200641286a2206470d000b0b20012802e402210641d3d5c800ad4280808080c002842003ad422086200bad84100302402006450d00200b10290b02402001280268450d00200141f0006a2802002206450d00200641286c450d00200128026c10290b200141e8006a41086a2206200d290000370300200141e8006a41106a2204200d41086a2800003602002001410036026c200141073a0068200141e8006a10cb01200141e8006a41186a220a420037030020044200370300200642003703002001420037036841fce2c800ad4280808080f00184100122092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102920062003290300370300200120012903c002370368418be3c800ad4280808080d001841001220929000021052003200941086a290000370300200120053703c00220091029200220012903c002370000200241086a2003290300370000200141e0026a41086a2006290300370300200141e0026a41106a2004290300370300200141e0026a41186a200a290300370300200120012903683703e002200810040c010b200141ac026a2802002206450d00200641286c450d0020012802a80210290b200141e8006a41186a22094200370300200141e8006a41106a220a4200370300200141e8006a41086a220342003703002001420037036841fce2c800ad4280808080f00184100122042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102920032006290300370300200120012903c0023703684198e3c800ad4280808080d000841001220429000021052006200441086a290000370300200120053703c00220041029200220012903c002370000200241086a2006290300370000200141e0026a41086a2003290300370300200141e0026a41106a200a290300370300200141e0026a41186a2009290300370300200120012903683703e002200141203602c4022001200141e0026a3602c00220014180026a20081007108b022001280280022206450d05200128028402210402400240024020014180026a41086a2802002209450d0020062d0000220a41034b0d0041002103024002400240200a0e0405000102050b2009417f6a4108490d0220062900012105410121030c040b410221030c020b2009417f6a4108490d0020062900012105410321030c020b200141003602a802200142013703a0022001410d3602d4022001200141c0026a3602d0022001200141a0026a3602f001200141fc006a41013602002001420137026c200141f4eaca003602682001200141d0026a360278200141f0016a41a8a3c800200141e8006a10371a20013502a80242208620013502a002841008024020012802a402450d0020012802a00210290b410421030b0b02402004450d00200610290b2003417f6a220641024b0d0520060e03040503040b1038000b1039000b1032000b2005422088a7210602402005a722032000470d00200141043602682001200636026c200141e8006a10e1060b200620036a2000470d01200141003602a002200141e8006a41186a22094200370300200141e8006a41106a220a4200370300200141e8006a41086a220342003703002001420037036841fce2c800ad4280808080f00184100122042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102920032006290300370300200120012903c0023703684198e3c800ad4280808080d000841001220429000021052006200441086a290000370300200120053703c00220041029200220012903c002370000200241086a2006290300370000200141e0026a41086a2003290300370300200141e0026a41106a200a290300370300200141e0026a41186a2009290300370300200120012903683703e002200141e8006a200141a0026a10e2062008200135027042208620012802682206ad8410030240200128026c450d00200610290b2001410236026c200141073a0068200141e8006a10cb010c010b2005422088a7210602402005a722032000470d00200141033602682001200636026c200141e8006a10e1060b200620036a2000470d00200141023602a002200141e8006a41186a22094200370300200141e8006a41106a220a4200370300200141e8006a41086a220342003703002001420037036841fce2c800ad4280808080f00184100122042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102920032006290300370300200120012903c0023703684198e3c800ad4280808080d000841001220429000021052006200441086a290000370300200120053703c00220041029200220012903c002370000200241086a2006290300370000200141e0026a41086a2003290300370300200141e0026a41106a200a290300370300200141e0026a41186a2009290300370300200120012903683703e002200141e8006a200141a0026a10e2062008200135027042208620012802682206ad8410030240200128026c450d00200610290b2001410136026c200141073a0068200141e8006a10cb010b200141e8006a41186a22044200370300200141e8006a41106a220d4200370300200141e8006a41086a220342003703002001420037036841eea1c800ad4280808080f001842205100122092900002108200141a0026a41086a2206200941086a290000370300200120083703a0022009102920032006290300370300200120012903a00237036841fda3c800ad4280808080e000841001220929000021082006200941086a290000370300200120083703a00220091029200d20012903a0022208370300200141e0026a41086a220a2003290300370300200141e0026a41106a220b2008370300200141e0026a41186a220c2006290300370300200120012903683703e002200141e0006a200141e0026a412010fc012001280264210f0240200128026022024101470d002007428080808080048410040b20044200370300200d4200370300200342003703002001420037036820051001220929000021052006200941086a290000370300200120053703a0022009102920032006290300370300200120012903a00237036841a8c1c800ad4280808080b001841001220929000021052006200941086a290000370300200120053703a00220091029200d20012903a002370000200d41086a2006290300370000200a2003290300370300200b200d290300370300200c2004290300370300200120012903683703e00202400240200141e0026a10b201220641ff01714102460d0020064101710d010b41041027220a450d01200a4100360200200141e8006a41186a22044200370300200141e8006a41106a22094200370300200141e8006a41086a220342003703002001420037036841eea1c800ad4280808080f0018422051001220b2900002108200141a0026a41086a2206200b41086a290000370300200120083703a002200b102920032006290300370300200120012903a00237036841fda1c800ad4280808080b001841001220b29000021082006200b41086a290000370300200120083703a002200b1029200d20012903a002370000200d41086a220b2006290300370000200141e0026a41086a220c2003290300370300200141e0026a41106a22002009290300370300200141e0026a41186a220e2004290300370300200120012903683703e0022001412036026c2001200141e0026a360268200a4101200141e8006a10a304200a102941041027220a450d01200a41003602002004420037030020094200370300200342003703002001420037036820051001221129000021082006201141086a290000370300200120083703a0022011102920032006290300370300200120012903a0023703684183a4c800ad4280808080c001841001221129000021082006201141086a290000370300200120083703a00220111029200d20012903a002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903683703e0022001412036026c2001200141e0026a360268200a4101200141e8006a10a304200a10292004420037030020094200370300200342003703002001420037036820051001220a29000021082006200a41086a290000370300200120083703a002200a102920032006290300370300200120012903a002370368418fa4c800ad4280808080e000841001220a29000021082006200a41086a290000370300200120083703a002200a1029200d20012903a002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903683703e00220014100360268200742808080808004842208200141e8006aad22104280808080c0008410032004420037030020094200370300200342003703002001420037036820051001220a29000021052006200a41086a290000370300200120053703a002200a102920032006290300370300200120012903a00237036841a8c1c800ad4280808080b001841001220a29000021052006200a41086a290000370300200120053703a002200a1029200d20012903a002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903683703e002200141013a0068200820104280808080108410030b200141e8006a41186a4200370300200141e8006a41106a22124200370300200141e8006a41086a220642003703002001420037036841eea1c800ad4280808080f001841001220329000021052006200341086a290000370300200120053703682003102941fda1c800ad4280808080b00184100122032900002105200141a0026a41086a2204200341086a290000370300200120053703a00220031029201220012903a0022205370300200141e0026a41086a2006290300370300200141e0026a41106a2005370300200141e0026a41186a2004290300370300200120012903683703e002200141e8006a200141e0026a108f03024002402001280268220e0d0041002113200141003602c802200142043703c0024104210e410021110c010b2001200129026c22053702c4022001200e3602c0022005422088a721112005a721130b200141e8006a41186a22094200370300200141e8006a41106a220a4200370300200141e8006a41086a220342003703002001420037036841eea1c800ad4280808080f00184100122042900002105200141a0026a41086a2206200441086a290000370300200120053703a0022004102920032006290300370300200120012903a0023703684183a4c800ad4280808080c001841001220429000021052006200441086a290000370300200120053703a00220041029200d20012903a002370000200d41086a2006290300370000200141e0026a41086a2003290300370300200141e0026a41106a200a290300370300200141e0026a41186a2009290300370300200120012903683703e002200141e8006a200141e0026a108f03024002402001280268220a0d0041002114200141003602880220014204370380024104210a4100210c0c010b2001200129026c2205370284022001200a360280022005422088a7210c2005a721140b0240024002400240024020020d002011450d012011410274200e6a417c6a280200210f0b201141002011419c7f6a22062006201141016a4b1b2215490d01200141003602c8022015450d03200e20154102746a2100200e210203402002280200210b02400240024002400240200c41014b0d0041002106200c0e020201020b41002106200c2103034020062003410176220420066a2209200b200a20094102746a280200491b2106200320046b220341014b0d000b0b200b200a200641027422036a2802002204460d022006200b20044b6a21060c010b410021060b2001200636026841cca4c800412e200141e8006a41fca4c800418ca5c800103a000b200c20064d0d03200a20036a2203200341046a2006417f73200c6a41027410e5071a2001200c417f6a220c36028802200241046a22022000470d000c040b0b4195a4c800412641bca4c8001057000b201520111044000b2006200c1042000b410021064100210b0240201120156b2203450d0002402015450d00200e200e20154102746a200341027410e5071a0b200120033602c8022003210b0b024002400240200c41014b0d00200c0e020201020b41002106200c2103034020062003410176220420066a2209200f200a20094102746a280200491b2106200320046b220341014b0d000b0b0240200f200a20064102746a2802002203460d002006200f20034b6a21060b200c20064f0d002006200c1041000b0240200c2014470d0020014180026a20144101109801200128028002210a0b200a20064102746a220341046a2003200c20066b41027410e5071a2003200f3602002001200c41016a2203360288020240200b2013470d00200141c0026a2013410110980120012802c002210e20012802c802210b0b200e200b4102746a200f3602002001200b41016a220b3602c802024002400240024002400240024002402003450d00200341017621062003410171450d01200320064d0d03200a20064102746a28020021000c020b419ca5c80041c30041b8a1cc001033000b200320064d0d0220032006417f6a22044d0d03200a20044102746a280200200a20064102746a2802006a41017621000b20012802c4022102200141e8006a41186a22094200370300200141e8006a41106a220a4200370300200141e8006a41086a220442003703002001420037036841eea1c800ad4280808080f0018422051001220c2900002108200141a0026a41086a2206200c41086a290000370300200120083703a002200c102920042006290300370300200120012903a00237036841fda1c800ad4280808080b001841001220c29000021082006200c41086a290000370300200120083703a002200c1029200d20012903a002370000200d41086a220f2006290300370000200141e0026a41086a22112004290300370300200141e0026a41106a2215200a290300370300200141e0026a41186a22132009290300370300200120012903683703e0022001412036026c2001200141e0026a360268200e200b200141e8006a10a3040240200241ffffffff0371450d00200e10290b200128028402210e200128028002210220094200370300200a4200370300200442003703002001420037036820051001220c29000021052006200c41086a290000370300200120053703a002200c102920042006290300370300200120012903a0023703684183a4c800ad4280808080c001841001220c29000021052006200c41086a290000370300200120053703a002200c1029200d20012903a002370000200f2006290300370000201120042903003703002015200a29030037030020132009290300370300200120012903683703e0022001412036026c2001200141e0026a36026820022003200141e8006a10a3040240200e41ffffffff0371450d00200210290b200141e8006a41186a22094200370300200141e8006a41106a22044200370300200141e8006a41086a220342003703002001420037036841eea1c800ad4280808080f001841001220a2900002105200141a0026a41086a2206200a41086a290000370300200120053703a002200a102920032006290300370300200120012903a002370368418fa4c800ad4280808080e000841001220a29000021052006200a41086a290000370300200120053703a002200a1029200d20012903a002370000200d41086a2006290300370000200141e0026a41086a220a2003290300370300200141e0026a41106a220c2004290300370300200141e0026a41186a22022009290300370300200120012903683703e0022001200036026820074280808080800484200141e8006aad22164280808080c0008410030240200b41e500470d002009420037030020044200370300200342003703002001420037036841b3e6ca00ad4280808080e000841001220b29000021052003200b41086a29000037030020012005370368200b102941c9e6ca00ad4280808080e000841001220b29000021052006200b41086a290000370300200120053703a002200b1029201220012903a002370000201241086a2006290300370000200a2003290300370300200c200429030037030020022009290300370300200120012903683703e002200141d8006a200141e0026a412010fc010b2009420037030020044200370300200342003703002001420037036841eebec500ad4280808080f0008422081001220929000021052006200941086a290000370300200120053703a0022009102920032006290300370300200120012903a00237036841f0f5c100ad428080808090018422101001220929000021052006200941086a290000370300200120053703a00220091029200420012903a0022205370300200a2003290300370300200c200537030020022006290300370300200120012903683703e002200141e8006a200141e0026a10d001024002402001290368427f7c4201560d00200141e0026a21020c010b20042903002117200141e8006a41186a220a4200370300200141e8006a41106a22094200370300200141e8006a41086a220642003703002001420037036841ccbec500ad42808080809001841001220329000021052006200341086a290000370300200120053703682003102941aafac400ad428080808030841001220b2900002105200141a0026a41086a2203200b41086a290000370300200120053703a002200b1029200920012903a0022205370300200141e0026a41086a220c2006290300370300200141e0026a41106a22022005370300200141e0026a41186a22002003290300370300200120012903683703e002200141c8006a200141e0026a10b501200141386a2001290350420020012802481b221842e807802219420042e807420010d507200a420037030020094200370300200642003703002001420037036820081001220b29000021052003200b41086a290000370300200120053703a002200b102920062003290300370300200120012903a00237036820101001220b29000021052003200b41086a290000370300200120053703a002200b1029200420012903a002370000200441086a2003290300370000200c2006290300370300200220092903003703002000200a290300370300200120012903683703e00220012903382105200141386a41086a2903002108410410272206450d06200620173e0000200641044108102b2206450d06200641013a0004200641084110102b2206450d0620062005201820194298787e7c42ff07837c2210427f20082010200554ad7c501b370005200742808080808004842006ad4280808080d00184100320061029200141e0026a21020b200141e8006a41186a22094200370300200141e8006a41106a22044200370300200141e8006a41086a220342003703002001420037036841e4bec500ad4280808080a0018422051001220a2900002108200141a0026a41086a2206200a41086a290000370300200120083703a002200a102920032006290300370300200120012903a002370368418e9fc400ad4280808080e000841001220a29000021082006200a41086a290000370300200120083703a002200a1029200420012903a0022208370300200141e0026a41086a220a2003290300370300200141e0026a41106a220b2008370300200141e0026a41186a220c2006290300370300200120012903683703e0022002ad4280808080800484220810042009420037030020044200370300200342003703002001420037036820051001220229000021052006200241086a290000370300200120053703a0022002102920032006290300370300200120012903a0023703684198b7c400ad4280808080c001841001220229000021052006200241086a290000370300200120053703a00220021029200420012903a0022205370300200a2003290300370300200b2005370300200c2006290300370300200120012903683703e002200810042009420037030020044200370300200342003703002001420037036841cdcac800ad4280808080a002841001220929000021052006200941086a290000370300200120053703a0022009102920032006290300370300200120012903a00237036841b8cbc800ad42808080809002841001220929000021052006200941086a290000370300200120053703a00220091029200420012903a0022205370300200a2003290300370300200b2005370300200c2006290300370300200120012903683703e002200141206a200141e0026a10d102200141206a41106a290300211a2001290328211b20012802202106200141106a10cf02200141e8006a427f2001290310220520012903187c220820082005541b22054280c0a8ca9a3a20054280c0a8ca9a3a541b2218428090cad2c60e2018428090cad2c60e5622091b2208428090cad2c60e200520091b22057d42002008200554ad7d42808090bbbad6adf00d42004280c0a8ca9a3a420010d2020240024020012802684101460d0020042903002205427f570d00200329030021080c010b42ffffffffffffffffff002105427f21080b200141e8006a200820052008200542808090bbbad6adf00d420010d2020240024020012802684101460d00200141f8006a2903002210427f570d00200141f0006a290300211c0c010b42ffffffffffffffffff002110427f211c0b200141e8006a4204420042808090bbbad6adf00d420042a08d06420010d2020240024020012802684101460d00200141f8006a2903002217427f570d00200141f0006a290300211d0c010b42ffffffffffffffffff002117427f211d0b200141e8006a4208420042808090bbbad6adf00d42004280c8afa025420010d2020240024020012802684101460d00200141f8006a2903002219427f570d00200141f0006a290300211e0c010b42ffffffffffffffffff002119427f211e0b200141e8006a201d20172008200542808090bbbad6adf00d420010d202024020012802684101470d00428080808080808080807f42ffffffffffffffffff00200520178542005322031b21084200427f20031b21170c050b200141f8006a2903002208427f550d03428080808080808080807f42ffffffffffffffffff00200520178542005322031b21084200427f20031b21170c040b2006200341e0a5c8001036000b2006200341f0a5c8001036000b200420034180a6c8001036000b200141f0006a29030021170b200141e8006a201e2019201c201042808090bbbad6adf00d420010d2020240024020012802684101470d00428080808080808080807f42ffffffffffffffffff00201020198542005322031b21054200427f20031b211c0c010b0240200141f8006a2903002205427f550d00428080808080808080807f42ffffffffffffffffff00201020198542005322031b21054200427f20031b211c0c010b200141f0006a290300211c0b201a420020061b2110201b420020061b211902400240201842ff8fcad2c60e560d0042ffffffffffffffffff00428080808080808080807f201042ffffffffffffffffff00428080808080808080807f200820057d2017201c54ad7d22184200531b201841012008427f552008501b220641012005427f552005501b47200641012018427f552018501b477122061b22087d20192018423f872017201c7d20061b221754ad7d22054200531b200541012010427f552010501b220641012008427f552008501b47200641012005427f552005501b477122061b2208427f2005423f87201920177d20061b2205428080f0c4c5a9d28f72562008427f552008427f511b22061b21082005428080f0c4c5a9d28f7220061b21050c010b42ffffffffffffffffff00428080808080808080807f201042ffffffffffffffffff00428080808080808080807f200820057c2017201c7c2218201754ad7c22174200531b201741012008427f552008501b220641012005427f552005501b46200641012017427f552017501b477122061b22087c20192017423f87201820061b7c2217201954ad7c22054200531b200541012010427f552010501b220641012008427f552008501b46200641012005427f552005501b477122061b21082005423f87201720061b21050b200141e8006a41186a220a4200370300200141e8006a41106a22094200370300200141e8006a41086a220642003703002001420037036841cdcac800ad4280808080a002841001220b2900002110200141a0026a41086a2203200b41086a290000370300200120103703a002200b102920062003290300370300200120012903a00237036841b8cbc800ad42808080809002841001220b29000021102003200b41086a290000370300200120103703a002200b1029200420012903a002370000200441086a2003290300370000200141e0026a41086a220b2006290300370300200141e0026a41106a220c2009290300370300200141e0026a41186a2202200a290300370300200120012903683703e0022001200837037020012005370368200742808080808004842205201642808080808002841003200a420037030020094200370300200642003703002001420037036841ccbec500ad42808080809001841001220429000021072006200441086a290000370300200120073703682004102941ac84cc00ad42808080809001841001220429000021072003200441086a290000370300200120073703a00220041029200920012903a0022207370300200b2006290300370300200c200737030020022003290300370300200120012903683703e0020240200141e0026a10b201220641ff01714102460d00200510042006410171450d00200141e8006a41186a4200370300200141e8006a41106a22064200370300200141e8006a41086a220442003703002001420037036841c8bec500ad4280808080c00084100122092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102920042003290300370300200120012903c00237036841a8c1c800ad4280808080b001841001220929000021052003200941086a290000370300200120053703c00220091029200620012903c0022205370300200141a0026a41086a2004290300370300200141a0026a41106a2005370300200141a0026a41186a2003290300370300200120012903683703a002200141e8006a200141a0026a10ce03024020012d006822034102460d00200141a0026aad22054280808080800484100420014180026a41086a200141f1006a29000037030020014180026a41106a200141f9006a29000037030020014180026a41186a20014181016a29000037030020012001290069370380020240200341037122034103460d0020030e03010001010b200141e0026a41186a20014180026a41186a290300370300200141e0026a41106a20014180026a41106a290300370300200141e0026a41086a20014180026a41086a29030037030020012001290380023703e002200141e8006a41186a220a4200370300200141e8006a41106a220b4200370300200141e8006a41086a220442003703002001420037036841c8bec500ad4280808080c00084100122092900002107200141c0026a41086a2203200941086a290000370300200120073703c0022009102920042003290300370300200120012903c002370368418cf3c200ad4280808080c001841001220929000021072003200941086a290000370300200120073703c00220091029200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200b290300370300200141a0026a41186a200a290300370300200120012903683703a002200141086a200141a0026a412010fc0141002109200141e8006a200128020c410020012802081b220a10cd03200141a0026a2001280268220b200128027010e3060240024020012802a00222040d00200141003602d802200142013703d00241012104410021030c010b200120012902a40222073702d402200120043602d0022007422088a721032007a721090b0240200128026c450d00200b10290b024002402003418002490d00412010272203450d04200320012903e002370000200341186a200141e0026a41186a290300370000200341106a200141e0026a41106a290300370000200341086a200141e0026a41086a290300370000200141e8006a200a41016a220a10cd0320012802682104200120012802703602a402200120043602a00220034101200141a0026a10a4040240200128026c450d00200410290b20031029200141e8006a41186a220b4200370300200141e8006a41106a220c4200370300200141e8006a41086a220442003703002001420037036841c8bec500ad4280808080c00084100122092900002107200141c0026a41086a2203200941086a290000370300200120073703c0022009102920042003290300370300200120012903c002370368418cf3c200ad4280808080c001841001220929000021072003200941086a290000370300200120073703c00220091029200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200c290300370300200141a0026a41186a200b290300370300200120012903683703a0022001200a3602682005428080808080048420164280808080c000841003200141d0026a21030c010b200141e8006a41186a220b200141e0026a41186a290300370300200141e8006a41106a220c200141e0026a41106a290300370300200141e8006a41086a2202200141e0026a41086a290300370300200120012903e002370368024020032009470d00200141d0026a20094101109e0120012802d002210420012802d80221030b200420034105746a22092001290368370000200941186a200b290300370000200941106a200c290300370000200941086a20022903003700002001200341016a22093602d802200141e8006a200a10cd0320012802682103200120012802703602a402200120033602a00220042009200141a0026a10a4040240200128026c450d00200310290b200141d0026a21030b200341046a28020041ffffff3f71450d00200328020010290b200141e8006a41186a220a4200370300200141e8006a41106a220b4200370300200141e8006a41086a220442003703002001420037036841c8bec500ad4280808080c00084100122092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102920042003290300370300200120012903c00237036841d1e8c200ad42808080808001841001220929000021052003200941086a290000370300200120053703c00220091029200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200b290300370300200141a0026a41186a200a290300370300200120012903683703a002200141a0026aad4280808080800484100420014180036a24000f0b41c5f7c400412b41b8a1cc001033000b1030000b9111030b7f017e017f230041d0006b2201240020014100360230200142013703280240024002402000280200220241044b0d000240024002400240024020020e050001020304000b410110272202450d062001410136022c20012002360228200241013a000020014101360230200028020421032000410c6a2802002202200141286a10710240024020020d00200128023021020c010b2003200241286c6a21044100200128023022056b2106410021020340200520026a2107024002402006200128022c22086a4120490d00200128022821092008210a0c010b200741206a22092007490d082008410174220a2009200a20094b1b220a4100480d080240024020080d000240200a0d00410121090c020b200a102722090d010c0b0b200128022821092008200a460d0020092008200a102b2209450d0a0b2001200a36022c200120093602280b200920056a20026a220b200320026a2208290000370000200b41186a200841186a290000370000200b41106a200841106a290000370000200b41086a200841086a2900003700002001200741206a220b360230200841206a290300210c0240200a20066a41606a41074b0d00200b41086a220d200b490d08200a410174220b200d200b200d4b1b220b4100480d0802400240200a0d000240200b0d00410121090c020b200b10272209450d0b0c010b200a200b460d002009200a200b102b2209450d0a0b2001200b36022c200120093602280b200920056a20026a41206a200c3700002001200741286a360230200641586a2106200241286a21022004200841286a470d000b200520026a21020b200041106a280200210a02400240200128022c220920026b4104490d00200128022821080c010b200241046a22082002490d06200941017422062008200620084b1b22064100480d060240024020090d00024020060d00410121080c020b200610272208450d090c010b2001280228210820092006460d00200820092006102b2208450d080b2001200636022c200120083602280b200820026a200a3600002001200241046a3602300c040b410110272202450d052001410136022c20012002360228200241023a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d052001280228210202402008200a460d0020022008200a102b2202450d070b2001200a36022c200120023602280b200220093600012001410536023020002802082102200041106a2802002208200141286a10710240024020080d002001280230210a0c010b2002200841286c6a210b2001280230210a034002400240200128022c2207200a6b4120490d00200a41206a210820012802282109200721060c010b200a41206a2208200a490d07200741017422092008200920084b1b22064100480d070240024020070d00024020060d00410121090c020b200610272209450d0a0c010b2001280228210920072006460d00200920072006102b2209450d090b2001200636022c200120093602280b2009200a6a220a2002290000370000200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a29000037000020012008360230200241206a290300210c0240200620086b41074b0d00200841086a220a2008490d0720064101742207200a2007200a4b1b220a4100480d070240024020060d000240200a0d00410121090c020b200a10272209450d0a0c010b2006200a460d0020092006200a102b2209450d090b2001200a36022c200120093602280b200920086a200c3700002001200841086a220a360230200b200241286a2202470d000b0b200041146a280200210902400240200128022c2208200a6b4104490d00200128022821020c010b200a41046a2202200a490d05200841017422062002200620024b1b22064100480d050240024020080d00024020060d00410121020c020b200610272202450d080c010b2001280228210220082006460d00200220082006102b2202450d070b2001200636022c200120023602280b2002200a6a20093600002001200a41046a3602300c030b410110272202450d042001410136022c20012002360228200241033a000020014101360230200041086a290300210c02400240200128022c2208417f6a4108490d00200128022821020c010b200841017422024109200241094b1b22094100480d0420012802282102024020082009460d00200220082009102b2202450d060b2001200936022c200120023602280b2002200c370001200141093602300c020b410110272202450d032001410136022c20012002360228200241043a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d032001280228210202402008200a460d0020022008200a102b2202450d050b2001200a36022c200120023602280b20022009360001200141053602300c010b410110272202450d022001410136022c20012002360228200241053a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d022001280228210202402008200a460d0020022008200a102b2202450d040b2001200a36022c200120023602280b20022009360001200141053602300b200141146a200141306a2802003600002001200129032837000c200141346a200141106a290000370000200141c6a4b9da04360029200141023a00282001200129000937002d200141286a10d30302402000280200220241014b0d000240024020020e020001000b200041086a2802002202450d01200241286c450d01200028020410290c010b2000410c6a2802002202450d00200241286c450d00200041086a28020010290b200141d0006a24000f0b1032000b1030000b8c0201037f024002400240024002400240024020012802000e0400010203000b41012102410110272201450d05200141003a0000410121030c040b410110272202450d04200241013a000020012802042103200241014105102b2202450d042002200336000120012802082104410a210320024105410a102b2201450d04200120043600050c020b41012102410110272201450d03200141023a0000410121030c020b410110272202450d02200241033a000020012802042103200241014105102b2202450d022002200336000120012802082104410a210320024105410a102b2201450d02200120043600050b410921020b2000200236020820002003360204200020013602000f0b1030000b8a06010c7f23004190016b220324002003200236021420032001360210200341186a2002ad4220862001ad841007108b020240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10c8010240024020032802080d00200328020c2206200328022c22074105762201200120064b1b22014105742202417f4c0d030240024020010d00410121080c010b200210272208450d050b41002109200341003602402003200136023c20032008360238024002402006450d004100210a03402007210b41002101200341003a008801200a41016a210a0340200b2001460d03200341e8006a20016a200328022822022d00003a00002003200241016a3602282003200141016a22023a0088012002210120024120470d000b200341c8006a41186a220c200341e8006a41186a290300370300200341c8006a41106a220d200341e8006a41106a290300370300200341c8006a41086a220e200341e8006a41086a2903003703002003200329036837034802402009200328023c470d00200341386a20094101109e0120032802382108200328024021090b200b20026b2107200820094105746a22012003290348370000200141186a200c290300370000200141106a200d290300370000200141086a200e2903003700002003200941016a2209360240200a2006470d000b2003200b20026b36022c0b2008450d012000200329023c370204200020083602000c020b2003410036022c0240200141ff0171450d00200341003a0088010b200328023c41ffffff3f71450d00200810290b20034100360250200342013703482003410d36023c2003200341106a3602382003200341c8006a360234200341fc006a41013602002003420137026c200341f4eaca003602682003200341386a360278200341346a41a8a3c800200341e8006a10371a200335025042208620033502488410080240200328024c450d00200328024810290b200041003602000b2005450d00200410290b20034190016a24000f0b1038000b1039000ba10701087f230041106b220224002002410036020820024201370300200028020021030240410410272204450d002002410436020420022004360200200420033600002002410436020820002802042103200441044108102b2204450d002002410836020420042003360004200220043602002002410836020820002802082104200041106a280200220320021071024002402003450d00200341057421052002280204210620022802082103034002400240200620036b4120490d00200341206a2107200228020021080c010b200341206a22072003490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102722080d010c060b2002280200210820062009460d00200820062009102b2208450d050b2002200936020420022008360200200921060b200820036a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002002200736020820072103200441206a2104200541606a22050d000b0b200028021421042000411c6a2802002203200210710240024020030d0020022802042109200228020821030c010b200341057421054100200228020822036b210820022802042106034002400240200620086a4120490d0020022802002107200621090c010b200341206a22072003490d03200641017422092007200920074b1b22094100480d030240024020060d00024020090d00410121070c020b200910272207450d060c010b2002280200210720062009460d00200720062009102b2207450d050b2002200936020420022007360200200921060b200720036a22072004290000370000200741186a200441186a290000370000200741106a200441106a290000370000200741086a200441086a2900003700002002200341206a2203360208200841606a2108200441206a2104200541606a22050d000b0b2000280220210602400240200920036b4104490d0020022802002104200921070c010b200341046a22042003490d01200941017422072004200720044b1b22074100480d010240024020090d00024020070d00410121040c020b200710272204450d040c010b2002280200210420092007460d00200420092007102b2204450d030b20022007360204200220043602000b200420036a20063600002001290200200341046aad4220862004ad84100302402007450d00200410290b200241106a24000f0b1032000b1030000bd907010f7f230041c0006b22052400200541003602082005420137030020054100360218200542013703102003410020041b21062001410020021b2107200341206a200320041b2108200141206a200120021b2109200120024105746a210a200320044105746a210b4101210c4100210d4101210e4101210f410021100340200e211120102102200821032006210102400340024020010d004100210620070d02200020052903003702002000200529031037020c200041086a200541086a280200360200200041146a200541106a41086a280200360200200541c0006a24000f0b024020070d00200541206a41186a2203200641186a290000370300200541206a41106a2202200641106a290000370300200541206a41086a2207200641086a29000037030020052006290000370320024020102005280214470d00200541106a20104101109e012005280210210e200528021821100b200e20104105746a22012005290320370000200141186a2003290300370000200141106a2002290300370000200141086a20072903003700002005201041016a221036021841002107410020082008200b4622011b2106200e210f2008200841206a20011b21080c030b0240024020012007460d0020012007412010e70722040d010b2003200341206a2003200b4622011b2108410020092009200a4622041b21074100200320011b21062011210e200221102009200941206a20041b21090c030b02402004417f4c0d00200121060c020b200541206a41186a2204200141186a290000370300200541206a41106a2212200141106a290000370300200541206a41086a2213200141086a29000037030020052001290000370320024020022005280214470d00200541106a20024101109e012005280218210220052802102211210f0b200f20024105746a22012005290320370000200141186a2004290300370000200141106a2012290300370000200141086a20132903003700002005200241016a2202360218410020032003200b4622041b21012003200341206a20041b21030c000b0b200541206a41186a2204200741186a290000370300200541206a41106a2212200741106a290000370300200541206a41086a2213200741086a290000370300200520072900003703200240200d2005280204470d002005200d4101109e012005280200210c2005280208210d0b200c200d4105746a22012005290320370000200141186a2004290300370000200141106a2012290300370000200141086a20132903003700002005200d41016a220d360208410020092009200a4622011b21072011210e200221102009200941206a20011b2109200321080c000b0bc96b08067f017e057f037e027f047e047f017e23004180036b220524000240410810272206450d0020062001200241c0016c6a220736020420062001360200024002400240024020000d0020054188026a41186a2208420037030020054188026a41106a2209420037030020054188026a41086a22024200370300200542003703880241fce2c800ad4280808080f001841001220a290000210b200541b8026a41086a220c200a41086a2900003703002005200b3703b802200a10292002200c290300370300200520052903b802370388024190f4c800ad4280808080c001841001220a290000210b200c200a41086a2900003703002005200b3703b802200a1029200920052903b802220b370300200541d8016a41086a220d2002290300370300200541d8016a41106a220e200b370300200541d8016a41186a220f200c29030037030020052005290388023703d801200541c8006a200541d8016a10b5012005290350210b20052802482110200842003703002009420037030020024200370300200542003703880241b1dcc900ad4280808080f000841001220a29000021112002200a41086a2900003703002005201137038802200a1029418886ca00ad4280808080c001841001220a2900002111200c200a41086a290000370300200520113703b802200a1029200920052903b8022211370300200d2002290300370300200e2011370300200f200c29030037030020052005290388023703d801200541c0006a200541d8016a412010fc012005280244210c2005280240210920054188026a200b420020101b10b8042005280288022102200535029002210b2005200c410020091b3602d801200b4220862002ad84200541d8016aad4280808080c0008410030240200528028c02450d00200210290b200610290c010b0240024002402002450d002006200141c0016a3602002005200141226a29000037018a0220052001412a6a29000037019202200541d8026a41086a2202200529039002370300200520012f00203b0188022005200141326a29000037019a0220052001413a6a2800003601a20220052001413e6a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a220c2002290300370300200520052903d8023703d801200541b8026a41086a200c290300370300200520052903d8013703b802200628020420062802006b41c0016e41286c41286a2202417f4c0d0520021027220e450d04200e20052903b802370300200e4201370320200e2011370318200e200b370310200e41086a200541b8026a41086a220f2903003703004101210c200541013602c0012005200e3602b8012005200241286e22023602bc01200628020022092006280204460d012006200941c0016a3602002005200941226a29000037018a0220052009412a6a29000037019202200541d8026a41086a2208200529039002370300200541003a00a8022005200941216a2d00003a008902200520092d00203a0088022005200941326a29000037019a0220052009413a6a2800003601a20220052009413e6a2f00003b01a602200541203a00a80220052005290388023703d80220052903a002210b2005290398022111200541d8016a41086a22092008290300370300200520052903d8023703d8014102210c41c800210a0340200f20092903002212370300200520052903d80122133703b80220092012370300200520133703d8012005200b3703f001200520113703e8010240200c417f6a2002470d00200541b8016a2002200628020420062802006b41c0016e41016a10a30120052802b801210e0b200e200a6a220d41606a220220052903d8013703002009290300210b200541d8016a41106a2903002111200541d8016a41186a2903002112200d4201370300200241186a2012370300200241106a2011370300200241086a200b3703002005200c3602c0010240200628020022022006280204470d0020052802bc0121020c030b2006200241c0016a3602002005200241226a29000037018a0220052002412a6a290000370192022008200529039002370300200541003a00a8022005200241216a2d00003a008902200520022d00203a0088022005200241326a29000037019a0220052002413a6a2800003601a20220052002413e6a2f00003b01a602200541203a00a80220052005290388023703d80220052903a002210b200529039802211120092008290300370300200520052903d8023703d801200a41286a210a200c41016a210c20052802bc0121020c000b0b200610294108210e4100210c410021020c010b200610290b20054188026a41186a420037030020054188026a41106a2209420037030020054188026a41086a220a4200370300200542003703880241fce2c800ad4280808080f0018410012208290000210b200541b8026a41086a2206200841086a2900003703002005200b3703b80220081029200a2006290300370300200520052903b80237038802418fe5c800ad4280808080f0008410012208290000210b2006200841086a2900003703002005200b3703b80220081029200920052903b802220b370300200541d8016a41086a200a290300370300200541d8016a41106a200b370300200541d8016a41186a200629030037030020052005290388023703d80120054188026a200541d8016a412010f901024002402005280288024101460d002005200c360290022005200236028c022005200e36028802200541d8016a20054188026a41004100200510e706200541d8016aad4280808080800484210b0c010b200541d8016aad4280808080800484220b1004200529028c0221112005200c360290022005200236028c022005200e36028802200541d8016a20054188026a2011a741012011422088a710e7060b20054188026a41186a220a420037030020054188026a41106a220c420037030020054188026a41086a22064200370300200542003703880241fce2c800ad4280808080f001842211100122082900002112200541b8026a41086a2202200841086a290000370300200520123703b8022008102920062002290300370300200520052903b802370388024190f4c800ad4280808080c0018422121001220829000021132002200841086a290000370300200520133703b80220081029200920052903b802370000200941086a22102002290300370000200541d8016a41086a22082006290300370300200541d8016a41106a220d200c290300370300200541d8016a41186a220e200a29030037030020052005290388023703d801200541306a200541d8016a10b5012005280230211420052903382113200a4200370300200c420037030020064200370300200542003703880220111001220f29000021112002200f41086a290000370300200520113703b802200f102920062002290300370300200520052903b8023703880220121001220f29000021112002200f41086a290000370300200520113703b802200f1029200920052903b8023700002010200229030037000020082006290300370300200d200c290300370300200e200a29030037030020052005290388023703d8012005201342017c420120141b221137038802200b20054188026aad42808080808001841003200a4200370300200c420037030020064200370300200542003703880241b1dcc900ad4280808080f0008410012209290000210b2006200941086a2900003703002005200b3703880220091029418886ca00ad4280808080c0018410012209290000210b2002200941086a2900003703002005200b3703b80220091029200c20052903b802220b37030020082006290300370300200d200b370300200e200229030037030020052005290388023703d801200541286a200541d8016a412010fc01200528022c21062005280228210c20054188026a201110b8042005280288022102200535029002210b200520064100200c1b3602d801200b4220862002ad84200541d8016aad4280808080c000841003200528028c02450d00200210290b410810272202450d022002200736020420022001360200410810272206450d0220062003200441c0016c6a221436020420062003360200200541f8006a20024198e5c80010fa0520054188016a200641b0e7c80010fa052005280280012109200528027c21042005280278211020054198016a41086a20054188016a41086a28020036020020052005290388013703980120054188026a41186a220c420037030020054188026a41106a220e420037030020054188026a41086a22064200370300200542003703880241c8bec500ad4280808080c00084220b1001220a2900002111200541d8026a41086a2202200a41086a290000370300200520113703d802200a102920062002290300370300200520052903d8023703880241a4f0c200ad4280808080a0018422111001220a29000021122002200a41086a290000370300200520123703d802200a1029200e20052903d8022212370300200541b8026a41086a220a2006290300370300200541b8026a41106a22082012370300200541b8026a41186a220d200229030037030020052005290388023703b802200541186a200541b8026a10b501024002400240024002402005290320420020052802181b221342017c22122013540d00200c4200370300200e4200370300200642003703002005420037038802200b1001220f29000021132002200f41086a290000370300200520133703d802200f102920062002290300370300200520052903d8023703880220111001220f29000021112002200f41086a290000370300200520113703d802200f1029200e20052903d802370000200e41086a22152002290300370000200a20062903003703002008200e290300370300200d200c29030037030020052005290388023703b8022005201237038802200541b8026aad4280808080800484221120054188026aad221642808080808001841003200c4200370300200e4200370300200642003703002005420037038802200b1001220f290000210b2002200f41086a2900003703002005200b3703d802200f102920062002290300370300200520052903d8023703880241d983cc00ad4280808080b001841001220f290000210b2002200f41086a2900003703002005200b3703d802200f1029200e20052903d80237000020152002290300370000200a20062903003703002008200e290300370300200d200c29030037030020052005290388023703b802200941286c4104722202417f4c0d06200210272206450d0520054100360290022005200236028c022005200636028802200920054188026a10710240024020090d002005280290022102200528028802210a0c010b2010200941286c6a210d200528028c02210c200528029002210220102106034002400240200c20026b4120490d00200528028802210a200c21090c010b200241206a22092002490d07200c410174220a2009200a20094b1b22094100480d0702400240200c0d00024020090d004101210a0c020b20091027220a0d010c0c0b200528028802210a200c2009460d00200a200c2009102b220a450d0b0b2005200936028c022005200a360288020b200a20026a220c2006290000370000200c41186a200641186a290000370000200c41106a200641106a290000370000200c41086a200641086a2900003700002005200241206a220836029002200641206a290300210b02400240200920086b4108490d00200241286a21022009210c0c010b200841086a22022008490d072009410174220c2002200c20024b1b220c4100480d070240024020090d000240200c0d004101210a0c020b200c1027220a450d0c0c010b2009200c460d00200a2009200c102b220a450d0b0b2005200c36028c022005200a360288020b200a20086a200b3700002005200236029002200d200641286a2206470d000b0b200528028c02210620112002ad422086200aad84100302402006450d00200a10290b02402004450d00200441286c450d00201010290b0240201242017c220b2012540d0042002112200541b8026a41186a4200370300200541b8026a41106a220d4200370300200541b8026a41086a22064200370300200542003703b80241c8bec500ad4280808080c000841001220c2900002113200541d8026a41086a2202200c41086a290000370300200520133703d802200c102920062002290300370300200520052903d8023703b80241e4f2c200ad4280808080e001841001220c29000021132002200c41086a290000370300200520133703d802200c1029200d20052903d8022213370300200541d8016a41086a2006290300370300200541d8016a41106a2013370300200541d8016a41186a2002290300370300200520052903b8023703d80120054188026a200541d8016a10c00320054199026a2900002117200541a1026a290000211320052d0088022106200220054191026a29000037030020052005290089023703d8020240024020064101460d00200541d8006a41086a420037030020054200370358420021130c010b200541d8006a41086a2002290300370300200520052903d802370358201721120b200541b8026a41186a220c4200370300200541b8026a41106a22094200370300200541b8026a41086a22064200370300200542003703b80241c8bec500ad4280808080c0008422171001220a2900002118200541d8026a41086a2202200a41086a290000370300200520183703d802200a102920062002290300370300200520052903d8023703b802418cf3c200ad4280808080c0018422181001220a29000021192002200a41086a290000370300200520193703d802200a1029200d20052903d802370000200d41086a22082002290300370000200541d8016a41086a220f2006290300370300200541d8016a41106a22042009290300370300200541d8016a41186a2210200c290300370300200520052903b8023703d801200541106a200541d8016a412010fc01200528021421152005280210211a200c42003703002009420037030020064200370300200542003703b80220171001220a29000021172002200a41086a290000370300200520173703d802200a102920062002290300370300200520052903d8023703b80220181001220a29000021172002200a41086a290000370300200520173703d802200a1029200d20052903d80237000020082002290300370000200f2006290300370300200420092903003703002010200c290300370300200520052903b8023703d8012005410036028802200541d8016aad4280808080800484221720164280808080c000841003200541b8016a41086a200541d8006a41086a290300370300200520052903583703b801417f20154100201a1b220841016a220220022008491b410d744128722210417f4c0d0720101027220f450d06200f20052903b801370000200f200b370020200f2013370018200f2012370010200f41086a200541b8016a41086a29030037000041282104410021064100210202400340024002402002450d00200c2009470d01200a41ffffff3f71450d00200210290b200620084f0d02200541d8026a200610cd03200541b8026a20052802d802220c20052802e002220910e306024020052802b8022202450d002009ad422086200cad8410040b20052902bc02420020021b210b2002410120021b2102024020052802dc02450d00200c10290b200641016a21062002200b422088a74105746a2109200ba7210a2002210c0c010b200541d8016a41186a200c41186a2215290000370300200541d8016a41106a200c41106a221a290000370300200541d8016a41086a200c41086a221b2900003703002005200c2900003703d801201b290000210b201a2900002118200c290000211920054188026a41186a221a201529000037030020054188026a41106a2215201837030020054188026a41086a221b200b3703002005201937038802200541b8026a41186a221c201a290300370300200541b8026a41106a221a2015290300370300200541b8026a41086a221d201b29030037030020052005290388023703b8020240201020046b411f4b0d00200441206a22152004490d082010410174221b2015201b20154b1b22154100480d080240024020100d00024020150d004101210f0c020b20151027220f450d0d0c010b20102015460d00200f20102015102b220f450d0c0b201521100b200c41206a210c200f20046a221520052903b802370000201541186a201c290300370000201541106a201a290300370000201541086a201d290300370000200441206a21040c000b0b200541e8006a41086a2004ad422086200fad841010220241086a290000370300200520022900003703682002290010210b200229001821182002102902402010450d00200f10290b200541b8026a41186a22064200370300200541b8026a41106a22094200370300200541b8026a41086a220c4200370300200542003703b80241c8bec500ad4280808080c0008422191001220a290000211e200541d8026a41086a2202200a41086a2900003703002005201e3703d802200a1029200c2002290300370300200520052903d8023703b80241e4f2c200ad4280808080e001841001220a290000211e2002200a41086a2900003703002005201e3703d802200a1029200d20052903d802370000200d41086a2002290300370000200541d8016a41086a200c290300370300200541d8016a41106a2009290300370300200541d8016a41186a2006290300370300200520052903b8023703d801412010272202450d0620022005290368370000200220183700182002200b370010200241086a200541e8006a41086a29030037000020172002ad4280808080800484100320021029200541a8016a41086a200541d8006a41086a290300220b3703002005200529035822173703a801200541d8016a41086a2208200b370300200520173703d80120054188026a41186a220f420037030020054188026a41106a2204420037030020054188026a41086a220c4200370300200542003703880220191001220a290000210b200541d8026a41086a2202200a41086a2900003703002005200b3703d802200a1029200c2002290300370300200520052903d8023703880241b8f1c200ad4280808080a001841001220a290000210b2002200a41086a2900003703002005200b3703d802200a1029200e20052903d802370000200e41086a220a2002290300370000200541b8026a41086a2210200c290300370300200920042903003703002006200f29030037030020052005290388023703b802412010272206450d06200620052903d8013700002006201337001820062012370010200641086a200829030037000020112006ad428080808080048410032006102920054188026a41186a2209420037030020054188026a41106a22084200370300200c4200370300200542003703880241c8bec500ad4280808080c0008410012206290000210b2002200641086a2900003703002005200b3703d80220061029200c2002290300370300200520052903d8023703880241e4f2c200ad4280808080e0018410012206290000210b2002200641086a2900003703002005200b3703d80220061029200e20052903d802370000200a20022903003700002010200c290300370300200541b8026a41106a2008290300370300200541b8026a41186a200929030037030020052005290388023703b80220054188026a200541b8026a10c00320054199026a290000210b200541a1026a290000211220052d0088022106200220054191026a29000037030020052005290089023703d8020240024020064101460d00200541b8016a41186a4200370300200541b8016a41106a4200370300200541c0016a4200370300200542003703b8010c010b200541b8016a41086a200541d8026a41086a290300370300200520052903d8023703b801200520123703d0012005200b3703c8010b200541d8016a41086a220220054198016a41086a280200360200200541d8016a41246a200541b8016a41186a290300370200200541d8016a411c6a200541b8016a41106a290300370200200541d8016a41146a200541b8016a41086a2903003702002005200529039801220b3703d801200520052903b8013702e401200541b4026a20054180026a28020036020020054188026a41246a200541d8016a41206a29030037020020054188026a411c6a200541d8016a41186a29030037020020054188026a41146a200541d8016a41106a29030037020020054194026a20022903003702002005200b37028c02200541003602880220054188026a10d00320054188026a41186a2209420037030020054188026a41106a220a420037030020054188026a41086a22064200370300200542003703880241c8bec500ad4280808080c000841001220c290000210b200541d8026a41086a2202200c41086a2900003703002005200b3703d802200c102920062002290300370300200520052903d8023703880241a8f2c200ad4280808080f001841001220c290000210b2002200c41086a2900003703002005200b3703d802200c1029200e20052903d802370000200e41086a2002290300370000200541b8026a41086a2006290300370300200541b8026a41106a200a290300370300200541b8026a41186a200929030037030020052005290388023703b802200541203602f4022005200541b8026a3602f002200541e8006a20111007108b02024020052802682202450d00200528026c210c024002400240200541e8006a41086a2802002206450d0020022d00004101470d0020054200370388022006417f6a4108490d002002290001210b2005420037038802200641776a4108490d0020064111460d0020022d001122064103490d010b200541003602e002200542013703d8022005410d36025c2005200541f0026a3602582005200541d8026a3602fc022005419c026a41013602002005420137028c02200541f4eaca00360288022005200541d8006a36029802200541fc026a41a8a3c80020054188026a10371a20053502e00242208620053502d802841008024020052802dc02450d0020052802d80210290b410321060c010b20022900092112200520052800d8023602582005200541d8026a41036a28000036005b200520052802583602e8022005200528005b3600eb020b0240200c450d00200210290b20064103460d0020111004200520052800eb023600db02200520052802e8023602d802200520052800db0236006b200520052802d802360268200541a0026a20063a000020054198026a201237030020054190026a200b370300200541a4026a200528006b360000200520052802683600a102200541023602880220054188026a10d0030b410810272206450d082006200736020420062001360200410810272210450d082010201436020420102003360200200541d8006a41086a2202420037030020054200370358200241b3e6ca00ad4280808080e000841001220c41086a2900003703002005200c290000370358200c102941c9e6ca00ad4280808080e000841001220c290000210b200c2900082111200c102920054188026a41086a2002290300370300200520113703a0022005200b370398022005200529035837038802200541086a20054188026a412010fc012005280208210a200528020c2108200541b8026a41186a220e4200370300200541b8026a41106a220f4200370300200541b8026a41086a22024200370300200542003703b80241c6b7c700ad428080808080018410012209290000210b200541d8026a41086a220c200941086a2900003703002005200b3703d802200910292002200c290300370300200520052903d8023703b80241ceb7c700ad4280808080e0018410012209290000210b200c200941086a2900003703002005200b3703d80220091029200d20052903d802370000200d41086a200c290300370000200541b8016a41086a2002290300370300200541b8016a41106a200f290300370300200541b8016a41186a200e290300370300200520052903b8023703b8012005200841b0096a41b009200a1b36028802200541b8016aad4280808080800484221720164280808080c000841003200628020022022006280204460d022006200241c0016a3602002005200241e2006a29000037018a022005200241ea006a29000037019202200c2005290390023703002005200241e0006a2f00003b0188022005200241f2006a29000037019a022005200241fa006a2800003601a2022005200241fe006a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a2202200c290300370300200520052903d8023703d801200541e8006a41086a2002290300370300200520052903d801370368200628020420062802006b41c0016e41057441206a220210272204450d0620042005290368370000200420113700182004200b370010200441086a200541e8006a41086a2903003700004101210c200541013602c002200520043602b80220052002410576220f3602bc02200628020022022006280204460d032006200241c0016a3602002005200241e2006a29000037018a022005200241ea006a29000037019202200541d8026a41086a22082005290390023703002005200241e0006a2f00003b0188022005200241f2006a29000037019a022005200241fa006a2800003601a2022005200241fe006a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a22092008290300370300200520052903d8023703d8014102210c4120210a0340200541b8016a41086a20092903002212370300200520052903d80122133703b80120092012370300200520133703d801200520113703f0012005200b3703e8010240200c417f6a200f470d00200541b8026a200f200628020420062802006b41c0016e41016a109e0120052802b80221040b2004200a6a220220052903d801370000200241186a200541d8016a41186a290300370000200241106a200541d8016a41106a290300370000200241086a20092903003700002005200c3602c0020240200628020022022006280204470d0020052802bc02210f0c050b2006200241c0016a3602002005200241e2006a29000037018a022005200241ea006a2900003701920220082005290390023703002005200241e0006a2f00003b0188022005200241f2006a29000037019a022005200241fa006a2800003601a2022005200241fe006a2f00003b01a60220052005290388023703d802200529039802210b20052903a002211120092008290300370300200520052903d8023703d801200a41206a210a200c41016a210c20052802bc02210f0c000b0b41c489c30041c90041a08ac3001057000b41c489c30041c90041908ac3001057000b200610294100210f410121044100210c0c010b200610290b200541b8026a41186a220a4200370300200541b8026a41106a22084200370300200541b8026a41086a22064200370300200542003703b80241c6b7c700ad428080808080018410012209290000210b200541d8026a41086a2202200941086a2900003703002005200b3703d8022009102920062002290300370300200520052903d8023703b80241dcb7c700ad4280808080c0008410012209290000210b2002200941086a2900003703002005200b3703d80220091029200d20052903d802370000200d41086a2002290300370000200541b8016a41086a2006290300370300200541b8016a41106a2008290300370300200541b8016a41186a200a290300370300200520052903b8023703b801200c41057422084104722202417f4c0d02200210272206450d0120054100360290022005200236028c022005200636028802200c20054188026a107102400240200c0d002005280290022106200528028c022109200528028802210e0c010b410020052802900222066b210a200528028802210e200528028c0221092004210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d032009410174220d200c200d200c4b1b220c4100480d03024002400240024020090d000240200c0d004101210e0c020b200c1027210e0c030b2009200c470d010b200c21090c020b200e2009200c102b210e0b200c2109200e450d060b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b2005200936028c0220052006360290022005200e360288020b20172006ad422086200ead84100302402009450d00200e10290b0240200f41ffffff3f71450d00200410290b20101029410810272206450d032006200736020420062001360200410810272210450d032010201436020420102003360200024002400240024002402000450d00200628020022022006280204460d012006200241c0016a360200200520024182016a29000037018a0220052002418a016a29000037019202200541d8026a41086a220c200529039002370300200520024180016a2f00003b018802200520024192016a29000037019a0220052002419a016a2800003601a20220052002419e016a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a2202200c290300370300200520052903d8023703d801200541e8006a41086a220c2002290300370300200520052903d801370368200628020420062802006b41c0016e41057441206a220210272204450d0620042005290368370000200420113700182004200b370010200441086a200c2903003700004101210c200541013602c002200520043602b80220052002410576220f3602bc02200628020022022006280204460d022006200241c0016a360200200520024182016a29000037018a0220052002418a016a29000037019202200541d8026a41086a2208200529039002370300200520024180016a2f00003b018802200520024192016a29000037019a0220052002419a016a2800003601a20220052002419e016a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a22092008290300370300200520052903d8023703d8014102210c4120210a0340200541b8016a41086a20092903002212370300200520052903d80122133703b80120092012370300200520133703d801200520113703f0012005200b3703e8010240200c417f6a200f470d00200541b8026a200f200628020420062802006b41c0016e41016a109e0120052802b80221040b2004200a6a220220052903d801370000200241186a200541d8016a41186a290300370000200241106a200541d8016a41106a290300370000200241086a20092903003700002005200c3602c0020240200628020022022006280204470d0020052802bc02210f0c040b2006200241c0016a360200200520024182016a29000037018a0220052002418a016a290000370192022008200529039002370300200520024180016a2f00003b018802200520024192016a29000037019a0220052002419a016a2800003601a20220052002419e016a2f00003b01a60220052005290388023703d802200529039802210b20052903a002211120092008290300370300200520052903d8023703d801200a41206a210a200c41016a210c20052802bc02210f0c000b0b20101029200610290c030b200610294100210f410121044100210c0c010b200610290b200541d8006a41086a2202420037030020054200370358200241cd87cc00ad4280808080a001841001220641086a290000370300200520062900003703582006102941d983cc00ad4280808080b0018410012206290000210b200629000821112006102920054188026a41086a2002290300370300200520113703a0022005200b370398022005200529035837038802200c41057422084104722202417f4c0d03200210272206450d02200541003602e001200520023602dc01200520063602d801200c200541d8016a107102400240200c0d0020052802e001210620052802dc01210920052802d801210e0c010b410020052802e00122066b210a20052802d801210e20052802dc0121092004210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d042009410174220d200c200d200c4b1b220c4100480d04024002400240024020090d000240200c0d004101210e0c020b200c1027210e0c030b2009200c470d010b200c21090c020b200e2009200c102b210e0b200c2109200e450d070b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b200520093602dc01200520063602e0012005200e3602d8010b201642808080808004842006ad422086200ead84100302402009450d00200e10290b0240200f41ffffff3f71450d00200410290b201010290b410810272206450d032006200736020420062001360200410810272201450d032001201436020420012003360200024002400240024002402000450d00200628020022022006280204460d012006200241c0016a3602002005200241a2016a29000037018a022005200241aa016a29000037019202200541d8026a41086a220c2005290390023703002005200241a0016a2f00003b0188022005200241b2016a29000037019a022005200241ba016a2800003601a2022005200241be016a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a2202200c290300370300200520052903d8023703d801200541e8006a41086a220c2002290300370300200520052903d801370368200628020420062802006b41c0016e41057441206a220210272204450d0620042005290368370000200420113700182004200b370010200441086a200c2903003700004101210c200541013602c002200520043602b80220052002410576220f3602bc02200628020022022006280204460d022006200241c0016a3602002005200241a2016a29000037018a022005200241aa016a29000037019202200541d8026a41086a22082005290390023703002005200241a0016a2f00003b0188022005200241b2016a29000037019a022005200241ba016a2800003601a2022005200241be016a2f00003b01a60220052005290388023703d802200529039802210b20052903a0022111200541d8016a41086a22092008290300370300200520052903d8023703d8014102210c4120210a0340200541b8016a41086a20092903002212370300200520052903d80122133703b80120092012370300200520133703d801200520113703f0012005200b3703e8010240200c417f6a200f470d00200541b8026a200f200628020420062802006b41c0016e41016a109e0120052802b80221040b2004200a6a220220052903d801370000200241186a200541d8016a41186a290300370000200241106a200541d8016a41106a290300370000200241086a20092903003700002005200c3602c0020240200628020022022006280204470d0020052802bc02210f0c040b2006200241c0016a3602002005200241a2016a29000037018a022005200241aa016a2900003701920220082005290390023703002005200241a0016a2f00003b0188022005200241b2016a29000037019a022005200241ba016a2800003601a2022005200241be016a2f00003b01a60220052005290388023703d802200529039802210b20052903a002211120092008290300370300200520052903d8023703d801200a41206a210a200c41016a210c20052802bc02210f0c000b0b20011029200610290c030b20061029410121044100210c4100210f0c010b200610290b200541d8006a41086a22024200370300200542003703582002418ebfc500ad4280808080a002841001220641086a290000370300200520062900003703582006102941dcb7c700ad4280808080c0008410012206290000210b200629000821112006102920054188026a41086a2002290300370300200520113703a0022005200b370398022005200529035837038802200c41057422084104722202417f4c0d03200210272206450d02200541003602e001200520023602dc01200520063602d801200c200541d8016a107102400240200c0d0020052802e001210620052802dc01210920052802d801210e0c010b410020052802e00122066b210a20052802d801210e20052802dc0121092004210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d042009410174220d200c200d200c4b1b220c4100480d04024002400240024020090d000240200c0d004101210e0c020b200c1027210e0c030b2009200c470d010b200c21090c020b200e2009200c102b210e0b200c2109200e450d070b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b200520093602dc01200520063602e0012005200e3602d8010b201642808080808004842006ad422086200ead84100302402009450d00200e10290b0240200f41ffffff3f71450d00200410290b200110290b20054180036a24000f0b1032000b1039000b1038000b1030000be91305057f017e047f027e037f230041f0006b22052400200541c0006a41186a22064200370300200541c0006a41106a22074200370300200541c0006a41086a220842003703002005420037034041fce2c800ad4280808080f0018410012209290000210a200541e0006a41086a220b200941086a2900003703002005200a370360200910292008200b29030037030020052005290360370340418be3c800ad4280808080d0018410012209290000210a200b200941086a2900003703002005200a3703602009102920072005290360220a370300200541206a41086a22092008290300370300200541206a41106a220c200a370300200541206a41186a220d200b29030037030020052005290340370320200541186a200541206a41204180a6cc004100410010c701024002400240024002400240024020052802184101470d00410d210b419cd5c8002108410221070c010b2006420037030020074200370300200842003703002005420037034041b3e6ca00ad4280808080e0008410012206290000210a2008200641086a2900003703002005200a3703402006102941c9e6ca00ad4280808080e0008410012206290000210a200b200641086a2900003703002005200a3703602006102920072005290360220a37030020092008290300370300200c200a370300200d200b29030037030020052005290340370320200541106a200541206a412010fc012005280214410020052802101b2109024020034101460d00200541206a210e0c030b200541c0006a41186a22064200370300200541c0006a41106a220c4200370300200541c0006a41086a220842003703002005420037034041fce2c800ad4280808080f00184220f1001220d290000210a200541e0006a41086a220b200d41086a2900003703002005200a370360200d10292008200b2903003703002005200529036037034041c8e9c800ad4280808080a0018422101001220d290000210a200b200d41086a2900003703002005200a370360200d102920072005290360370000200741086a220d200b290300370000200541206a41086a220e2008290300370300200541206a41106a2211200c290300370300200541206a41186a2212200629030037030020052005290340370320200541086a200541206a412010fc012005280208450d01200528020c20094d0d014107210b4195d5c8002108410321070b200041831c3b0100200041086a200b360200200041046a2008360200200041026a20073a0000200141046a280200220b450d02200b41286c450d02200128020010290c020b20064200370300200c42003703002008420037030020054200370340200f10012213290000210a200b201341086a2900003703002005200a370360201310292008200b29030037030020052005290360370340201010012213290000210a200b201341086a2900003703002005200a3703602013102920072005290360370000200d200b290300370000200e20082903003703002011200c29030037030020122006290300370300200520052903403703202005200920024101746a360240200541206aad4280808080800484200541c0006aad4280808080c000841003200541206a210e0b200128020821082001280204210c2001280200210d200541c0006a41186a22114200370300200541c0006a41106a22124200370300200541c0006a41086a220142003703002005420037034041fce2c800ad4280808080f0018410012206290000210a200541e0006a41086a220b200641086a2900003703002005200a370360200610292001200b29030037030020052005290360370340418be3c800ad4280808080d0018410012206290000210a200b200641086a2900003703002005200a3703602006102920072005290360370000200741086a200b290300370000200541206a41086a2001290300370300200541206a41106a2012290300370300200541206a41186a201129030037030020052005290340370320200541003602482005420137034041041027220b450d02200541043602442005200b360240200b200936000020054104360248200b41044108102b220b450d0220054108360244200b20023600042005200b360240200541083602482008200541c0006a10712005280248210702402008450d00200d200841286c6a2106200d210b0340024002402005280244220220076b4120490d00200741206a210820052802402101200221090c010b200741206a22082007490d04200241017422012008200120084b1b22094100480d040240024020020d00024020090d00410121010c020b2009102722010d010c070b2005280240210120022009460d00200120022009102b2201450d060b20052009360244200520013602400b200120076a2207200b290000370000200741186a200b41186a290000370000200741106a200b41106a290000370000200741086a200b41086a29000037000020052008360248200b41206a290300210a0240200920086b41074b0d00200841086a22072008490d04200941017422022007200220074b1b22074100480d040240024020090d00024020070d00410121010c020b200710272201450d070c010b20092007460d00200120092007102b2201450d060b20052007360244200520013602400b200120086a200a3700002005200841086a22073602482006200b41286a220b470d000b0b2005280244210b0240024020034101460d0002400240200b2007460d00200528024021080c010b200741016a220b2007490d0420074101742208200b2008200b4b1b220b4100480d040240024020070d00410021070240200b0d00410121080c020b200b10272208450d070c010b200528024021082007200b460d0020082007200b102b2208450d060b2005200b360244200520083602400b200820076a41003a00002005200741016a22073602480c010b02400240200b2007460d00200528024021080c010b200741016a220b2007490d0320074101742208200b2008200b4b1b220b4100480d030240024020070d00410021070240200b0d00410121080c020b200b10272208450d060c010b200528024021082007200b460d0020082007200b102b2208450d050b2005200b360244200520083602400b200820076a41013a00002005200741016a22013602480240200b20016b41034b0d00200141046a22092001490d03200b41017422022009200220094b1b22094100480d0302400240200b0d00024020090d00410121080c020b200910272208450d060c010b200b2009460d002008200b2009102b2208450d050b20052009360244200520083602400b200820016a20043600002005200741056a22073602482005280244210b200528024021080b200ead42808080808004842007ad4220862008ad8410030240200b450d00200810290b0240200c450d00200c41286c450d00200d10290b200041043a00000b200541f0006a24000f0b1032000b1030000b290020004101360204200041086a200128020420012802006b41c0016e2201360200200020013602000bf40101047f230041d0006b21020240200128020022032001280204470d00200041003602000f0b2001200341c0016a3602002002200341c2006a29000037012a2002200341ca006a290000370132200241106a220120022903303703002002200341d2006a29000037013a200241186a220420022903383703002002200341da006a2800003601422002200341de006a2f00003b0146200241206a220520022903403703002002200341c0006a2f00003b01282002200229032837030820002003360200200020022903083700042000410c6a2001290300370000200041146a20042903003700002000411c6a20052903003700000b8406020e7f047e230041b0016b22032400024002402001280200220420012802042205460d002001200441c0016a22063602002003200429004237018a012003200429004a37019201200341e8006a41086a22072003290390013703002003200429005237019a01200341e8006a41106a22082003290398013703002003200428005a3601a201200320042f005e3b01a601200341e8006a41186a220920032903a001370300200320042f00403b0188012003200329038801370368200341c8006a41186a220a2009290300370300200341c8006a41106a220b2008290300370300200341c8006a41086a220c200729030037030020032003290368370348200341286a41186a220d200a290300370300200341286a41106a220e200b290300370300200341286a41086a220f200c29030037030020032003290348370328200541c07e6a211002400340200341086a41186a200d2903002211370300200341086a41106a200e2903002212370300200341086a41086a200f290300221337030020032003290328221437030820034188016a41186a201137030020034188016a41106a201237030020034188016a41086a201337030020032014370388012002450d0120102004460d022001200641c0016a22053602002003200629004237018a012003200629004a3701920120072003290390013703002003200629005237019a0120082003290398013703002003200628005a3601a201200320062f005e3b01a601200920032903a001370300200320062f00403b0188012003200329038801370368200a2009290300370300200b2008290300370300200c200729030037030020032003290368370348200d200a290300370300200e200b290300370300200f200c29030037030020032003290348370328200441c0016a21042002417f6a2102200521060c000b0b2000200436020020002003290388013702042000410c6a20034190016a290300370200200041146a20034198016a2903003702002000411c6a200341a0016a2903003702000c010b200041003602000b200341b0016a24000b130020004101360204200041d4e9c8003602000b3400200041fce2c80036020420004100360200200041146a4106360200200041106a41e0eec800360200200041086a420f3702000b2c01017f02404108102722020d001039000b20004288808080800137020420002002360200200242003700000b2201017f230041106b22022400200241003602002000200210e206200241106a24000bad1206087f017e047f017e057f077e230022042105200441e0016b416071220424000240200341e500490d0041002802d8a74c450d00200441ec006a410136020020044101360264200441b0e3c800360260200420033602482004200441c8006a36026841002802888040210641002802848040210741002802dca74c2108200441c0016a41a806360200200441b8016a42de80808010370300200441b4016a41dde3c800360200200441ac016a4211370200200441a8016a41cce3c800360200200441a0016a420237030020044190016a420337030020044188016a41113602002004419c016a200441e0006a360200200441b4e3c80036028c01200441cce3c80036028401200441013602800120074180a4c000200841024622081b20044180016a20064198a4c00020081b2802101102000b024002400240200141ffffff3f712001470d0020014105742207417f4c0d000240024020070d00410121080c010b200710272208450d020b4100210620044100360288012004200836028001200420074105763602840120044180016a41002001109e01200428028801210902402001450d002001410574210a20042802800120094105746a210b0340200b20066a2207200020066a2208290000370000200741186a200841186a290000370000200741106a200841106a290000370000200741086a200841086a290000370000200a200641206a2206470d000b200141057441606a41057620096a41016a21090b200441186a41086a20093602002004200429038001220c370318200ca7200920044180016a410041202009676b10fa0420044180016a41186a2201420037030020044180016a41106a220d420037030020044180016a41086a220e420037030020044200370380014193d4c800ad4280808080b0028410012206290000210c200e200641086a2900003703002004200c3703800120061029419fdec900ad428080808090018410012206290000210c200441c8006a41086a220f200641086a2900003703002004200c37034820061029200d2004290348220c370300200441e0006a41086a200e290300370300200441e0006a41106a200c370300200441e0006a41186a200f290300370300200420042903800137036020044180016a200441e0006a412010ce012004280280012206410120061b2110200429028401420020061b2211422088a72206450d0220064105742109200441e0006a410c72211220044180016a410c6a210020044180016a411472211320044180016a41087221142010210603402001200641186a290000370300200d200641106a290000370300200e200641086a2900003703002004200629000037038001200441286a20044180016a10f00620044180016a2004280228220b2004280230221510c105200f200041086a290200370300200441c8006a41106a220a200041106a2802003602002004200029020037034820042802a001210702402004280288012208450d00200429038001210c20122004290348370200201241086a200f290300370200201241106a200a2802003602002004200c370360200721160b2004200836026820044100360288012004290378211720042004290398012218370378200429037021192004200429039001221a3703702004290360211b2004200429038001221c3703602004290368210c2004200429038801221d370368201da7210802400240200ca7220a0d00201d210c201a211920182117201621070c010b2004201b370380012004200c37038801200420193703900120042017370398012004200a2019a74105746a3602542004200a3602502004200c422088a736024c2004200a3602482004200441186a360258200441386a200441c8006a10f905201441086a200441386a41086a22162802003602002014200429033837020020042019422088a7220a2017422088a74105746a3602542004200a36025020042017a736024c2004200a3602482004200441186a360258200441386a200441c8006a10f905201341086a201628020036020020132004290338370200200429038801210c200429038001211c2004290398012117200429039001211902402008450d002018a7210a0240201d422088a741ffffff3f71450d00200810290b200a41ffffff3f71450d00201a422088a710290b2004201c3703602004200c3703682004201937037020042017370378200ca721080b2004200c370388012004201937039001200120173703002004201c37038001200420073602a001200ca7210a0240024020080d002015ad422086200bad8410040c010b2004201536024c2004200b36024820044180016a200441c8006a10e4060b0240200a450d002017a721080240200c422088a741ffffff3f71450d00200a10290b200841ffffff3f71450d002019422088a710290b0240200428022c450d00200b10290b200641206a210620072116200941606a22090d000c030b0b1038000b1039000b0240201142ffffff3f83500d00201010290b20044180016a41186a220a420037030020044180016a41106a2208420037030020044180016a41086a2207420037030020044200370380014193d4c800ad4280808080b00284220c10012200290000211c200441c8006a41086a2206200041086a2900003703002004201c3703482000102920072006290300370300200420042903483703800141f0edca00ad4280808080f0008410012200290000211c2006200041086a2900003703002004201c3703482000102920082004290348221c370300200441e0006a41086a220b2007290300370300200441e0006a41106a2201201c370300200441e0006a41186a22092006290300370300200420042903800137036020044120360284012004200441e0006a360280012002200320044180016a10d506200a420037030020084200370300200742003703002004420037038001200c10012200290000210c2006200041086a2900003703002004200c3703482000102920072006290300370300200420042903483703800141f8d7ca00ad4280808080d0008410012200290000210c2006200041086a2900003703002004200c3703482000102920082004290348220c370300200b20072903003703002001200c370300200920062903003703002004200429038001370360200441e0006aad428080808080048410040240200428021c41ffffff3f71450d00200428021810290b200524000b9f0303027f017e027f230041206b220224004193d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941f7edca00ad4280808080e00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000b130020004105360204200041d0f8c8003602000b340020004193d4c80036020420004100360200200041146a4106360200200041106a4190a5c900360200200041086a42133702000b3400200041a6d4c80036020420004100360200200041146a4106360200200041106a4190a5c900360200200041086a42133702000b130020004107360204200041c0a9c9003602000b3400200041d787cc0036020420004100360200200041146a4109360200200041106a4194c0c900360200200041086a42093702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102722060d001039000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241e8073600000bfa0301047f230041206b22042400024002400240024002400240024002402002200141346a2205460d0020022005412010e707450d00200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410bc0322010d010c060b200141306a2802002202417f4c0d01200128022821060240024020020d0041002101410121070c010b200210272207450d03200221010b0240024020012002490d00200121050c010b200141017422052002200520024b1b22054100480d04024020010d002005102722070d010c060b20012005460d00200720012005102b2207450d050b20072006200210e4072101200041086a200236020020002005360204200020013602000c060b200128020c4101480d0420012802082202417f4c0d00200128020021060240024020020d0041002101410121070c010b200210272207450d02200221010b0240024020012002490d00200121050c010b200141017422052002200520024b1b22054100480d03024020010d00200510272207450d050c010b20012005460d00200720012005102b2207450d040b20072006200210e4072101200041086a200236020020002005360204200020013602000c050b1038000b1039000b1032000b1030000b200041003602000b200441206a24000be80302057f017e230041f0006b22042400200328020021050240024002400240024020032802082206200041306a280200470d00200520002802282207460d0120052007200610e707450d010b200441c0006a41186a2206200141186a290000370300200441c0006a41106a2207200141106a290000370300200441c0006a41086a2208200141086a2900003703002004200129000037034020042000200441c0006a10b00420042802004101470d01200429030821092004200441106a280200220136023c20062004412c6a2902003703002007200441246a29020037030020082004411c6a290200370300200441c0006a412c6a4101360200200441e8006a200341086a2802003602002004200441146a29020037034020042003290200370360200141106a2009200441c0006a2004413c6a10d9060c030b200341046a280200450d020c010b024020042802042201412c6a280200220041004a0d00200141206a2105200441c0006a41086a2206200341086a280200360200200420032902003703400240200141246a280200450d0020012802201029200128022c21000b20052004290340370200200541086a20062802003602002001200041016a36022c0c020b2001200041016a36022c200341046a280200450d010b200510290b200441f0006a24000ba50202047f017e230041f0006b2203240002402001200041346a2204460d0020012004412010e707450d00200341c0006a41186a2204200141186a290000370300200341c0006a41106a2205200141106a290000370300200341c0006a41086a2206200141086a2900003703002003200129000037034020032000200341c0006a10b004024020032802004101470d00200329030821072003200341106a280200220136023c20042003412c6a2902003703002005200341246a29020037030020062003411c6a290200370300200341e8006a4280808080703703002003200341146a29020037034020034201370360200141106a2007200341c0006a2003413c6a10d9060c010b2003280204412c6a22012001280200417f6a3602000b200341f0006a24000b8d0101037f230041206b220324004101210402402001200041346a2205460d0020012005412010e707450d00200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310bc0322010d00410021040c010b200128020c41004a21040b200341206a240020040b130020004106360204200041a8cfc9003602000b1300200041e8d4c900360204200020013602000b1300200041e8d4c900360204200020013602000bfa0301047f230041206b22042400024002400240024002400240024002402002200141346a2205460d0020022005412010e707450d00200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410bc0322010d010c060b200141306a2802002202417f4c0d01200128022821060240024020020d0041002101410121070c010b200210272207450d03200221010b0240024020012002490d00200121050c010b200141017422052002200520024b1b22054100480d04024020010d002005102722070d010c060b20012005460d00200720012005102b2207450d050b20072006200210e4072101200041086a200236020020002005360204200020013602000c060b200128020c4101480d0420012802082202417f4c0d00200128020021060240024020020d0041002101410121070c010b200210272207450d02200221010b0240024020012002490d00200121050c010b200141017422052002200520024b1b22054100480d03024020010d00200510272207450d050c010b20012005460d00200720012005102b2207450d040b20072006200210e4072101200041086a200236020020002005360204200020013602000c050b1038000b1039000b1032000b1030000b200041003602000b200441206a24000b8d0101037f230041206b220324004101210402402001200041346a2205460d0020012005412010e707450d00200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310bc0322010d00410021040c010b200128020c41004a21040b200341206a240020040b9f0303027f017e027f230041206b220224004193d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941a4a1c900ad4280808080a00184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000b9f0303027f017e027f230041206b220224004193d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941f7edca00ad4280808080e00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000ba00401037f230041e00b6b22042400200441086a200110850720042004280208220520042802104180a6cc004100410010c701024002400240024002402004280200450d002004280204220620024d0d01200041093a000620004183243b0104200041013602002000410c6a4113360200200041086a41e7d5c8003602000c020b200041023a000620004183243b0104200041013602002000410c6a410f360200200041086a41ced6c8003602000c010b200441b0096a200110850720044188076a20042802b009220220042802b8091086072004280288072101200441bc096a20044188076a41047241a40210e4071a024002402001411c460d00200441e4046a200441bc096a41a40210e4071a024020042802b409450d00200210290b200441c0026a200441e4046a41a40210e4071a20042001360218200441186a410472200441c0026a41a40210e4071a20044188076a200441186a10c3012004290388072003560d01200041086a200441186a41a80210e4071a20004100360200200041b0026a2006360200200428020c450d040c030b024020042802b409450d00200210290b2000410c6a410f360200200041086a41ced6c800360200200041023a000620004183243b0104200041013602000c010b200041083a000620004183243b0104200041013602002000410c6a4113360200200041086a41fad5c800360200200441186a10cc010b200428020c450d010b200510290b200441e00b6a24000b8f0f0b017f017e037f017e017f027e037f027e057f027e067f230041c0036b220524000240024020000d002005413d6a200341086a290000370000200541c5006a200341106a290000370000200541cd006a200341186a290000370000200541033a00342005410a3a003020052003290000370035200541306a10cb0142002106410121070c010b2005413d6a200341086a2200290000370000200541c5006a200341106a2208290000370000200541cd006a200341186a2209290000370000200541023a00342005410a3a003020052003290000370035200541306a10cb01200541306a200410c3012005290330210a2002280204210b200541306a200441a80210e4071a200541e4026a2001360200200541d8026a41086a200b360200200541003a00dc02200541013a00d802200541086a200541306a200541d8026a10c501200541306a41186a2009290000370300200541306a41106a2008290000370300200541306a41086a200029000037030020052003290000370330200541086a41186a2d000021012005290310210c2005290308210d200520052900213703d8022005200541286a2800003600df0202400240200d4201510d00410421000c010b200520052800df0236008703200520052903d8023703800341042100200c4202510d0020052005280087033600b70320052005290380033703b003200121000b200541d8026a41086a2201200541306a41086a290300370300200541d8026a41106a2208200541306a41106a290300370300200541d8026a41186a2209200541306a41186a290300370300200520052903303703d802200520052903b0033703a003200520052800b7033600a703200541043a00342005410a3a00302005413d6a2001290300370000200541c5006a2008290300370000200541cd006a2009290300370000200541d8006a20003a0000200520052903d802370035200541d5006a20052f00b0033b0000200541d7006a200541b2036a2d00003a0000200541d9006a20052903a003370000200541e0006a20052800a703360000200541fc006a20054180036a41186a280200360200200541f4006a20054180036a41106a290200370200200541ec006a20054180036a41086a290200370200200541e4006a200529028003370200200541306a10cb01200541086a41106a290300200a200ca71b2106410021070b200541306a2003108507200535023842208620052802302200ad84100402402005280234450d00200010290b200541306a2003108207200535023842208620052802302200ad84100402402005280234450d00200010290b200541d8026a41186a220e4200370300200541d8026a41106a220f4200370300200541d8026a41086a22104200370300200542003703d8024193d4c800ad4280808080b00284221110012200290000210c2010200041086a2900003703002005200c3703d80220001029419fdec900ad4280808080900184221210012200290000210c200541086a41086a2213200041086a2900003703002005200c37030820001029200f2005290308220c370300200541306a41086a22142010290300370300200541306a41106a2215200c370300200541306a41186a22162013290300370300200520052903d802370330200541d8026a200541306a412010ce0120052802d8022200410120001b2117024020052902dc02420020001b22184220882219a72209450d0041002101201721004100210802400240034002400240024020032000460d0020002003412010e707450d0020010d01410021010c020b200141016a21010c010b200820016b220b20094f0d02200e200020014105746b220b41186a221a290000370300200f200b41106a221b2900003703002010200b41086a221c2900003703002005200b2900003703d802200041086a221d290000210c200041106a221e290000210a200041186a221f290000210d200b2000290000370000201a200d370000201b200a370000201c200c370000201f200e290300370000201e200f290300370000201d2010290300370000200020052903d8023700000b200041206a21002009200841016a2208460d020c000b0b200b20094180bdc7001036000b2001417f6a20094f0d00200920016bad2219422086201842ffffffff0f838421180b20164200370300201542003703002014420037030020054200370330201110012200290000210c2014200041086a2900003703002005200c37033020001029201210012200290000210c2013200041086a2900003703002005200c3703082000102920152005290308220c37030020102014290300370300200f200c370300200e2013290300370300200520052903303703d802201942017c210c0240024020170d00200541d8026aad428080808080048410040c010b200541203602342005200541d8026a36023020172019a7200541306a10cf01201842ffffff3f83500d00201710290b427f200642c0b6fc9a017c220a200a2006541b220a200c42ffffffff0f834290f41d7e7c210c02402007450d00200410cc010b200c200a54210002402002410c6a28020041ffffff3f71450d00200228020810290b427f200c20001b210c0240200241186a28020041ffffff3f71450d00200228021410290b200541c0036a2400200c0b9f0303027f017e027f230041206b220224004193d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941a4a1c900ad4280808080a00184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bcd0201027f23004180056b220324002003200236020420032001360200200341086a2002ad4220862001ad841007108b0202400240200328020822010d002000411c3602000c010b200328020c21022003200341106a2802003602ec04200320013602e804200341c0026a200341e8046a10e4030240024020032802c0022204411c470d0020034100360220200342013703182003410d3602f404200320033602f0042003200341186a3602fc04200341d4026a4101360200200342013702c402200341f4eaca003602c0022003200341f0046a3602d002200341fc046a41a8a3c800200341c0026a10371a20033502204220862003350218841008200328021c450d01200328021810290c010b200341186a200341c0026a41047241a40210e4071a200041046a200341186a41a40210e4071a0b200020043602002002450d00200110290b20034180056a24000b9f0303027f017e027f230041206b2202240041a6d4c800ad4280808080b00284100122032900002104200241086a200341086a290000370300200220043703002003102941a4a1c900ad4280808080a00184100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000b13002000410a360204200041e4d5c9003602000b880402097f017e230041d0006b220124000240024002400240200028020c22020d00410021020c010b200041146a28020021030240200041106a2802002200450d00034020022802800321022000417f6a22000d000b0b2003450d004100210403402002450d03410021050240200420022f0106490d00034002400240200228020022000d0041002104410021000c010b200541016a210520022f010421040b2002102920002102200420002f01064f0d000b200021020b200141286a41206a22062002200441226c6a220041286a2f00003b0100200141286a41186a2207200041206a290000370300200141286a41106a2208200041186a290000370300200141286a41086a2209200041106a2900003703002001200041086a290000370328200441016a210402402005450d00200220044102746a4180036a2802002102410021042005417f6a2200450d00034020022802800321022000417f6a22000d000b0b200141206a20062f01003b0100200141186a2007290300370300200141106a2008290300370300200141086a200929030037030020012001290328220a370300200aa741ff01714103460d022003417f6a22030d000b0b200141033a00000b02402002450d0020022802002100200210292000450d00034020002802002102200010292002210020020d000b0b200141d0006a24000f0b41a79dc800412b41e0f6c4001033000bf00f09027f017e057f017e017f017e017f027e0b7f230041d0026b22022400024002400240200128020022032001280204460d00200241f8006aad4280808080900484210420012802082105200241c4016a2106200241c5016a2107200241a0016a410472210803402001200341226a360200024002400240024020032d00000e03010200010b200341096a2209290000210a200341116a220b290000210c200341196a220d290000210e2003290001210f200241f8006a41206a2210200341216a22112d00003a0000200241f8006a41186a2212200e370300200241f8006a41106a2213200c370300200241f8006a41086a2214200a3703002002200f37037820041010221541086a290000210a201541106a290000210c2015290000210e200241d0006a41186a2216201541186a290000370300200241d0006a41106a2217200c370300200241d0006a41086a2218200a3703002002200e37035020151029200241b0026a41186a2016290300220a370300200241b0026a41106a2017290300220c370300200241b0026a41086a2018290300220e37030020022002290350220f3703b0022016200a3703002017200c3703002018200e3703002002200f370350201020112d00003a00002012200d2900003703002013200b2900003703002014200929000037030020022003290001370378410221100c020b200241b0026a41186a200341196a2215290000370300200241b0026a41106a200341116a2216290000370300200241b0026a41086a200341096a2217290000370300200220032900013703b002200241d0006a41186a2015290000370300200241d0006a41106a2016290000370300200241d0006a41086a201729000037030020022003290001370350200241f8006a41186a2015290000370300200241f8006a41106a2016290000370300200241f8006a41086a201729000037030020022003290001370378410021100c010b200241b0026a41186a200341196a2215290000370300200241b0026a41106a200341116a2216290000370300200241b0026a41086a200341096a2217290000370300200220032900013703b002200241d0006a41186a2015290000370300200241d0006a41106a2016290000370300200241d0006a41086a201729000037030020022003290001370350200241f8006a41186a2015290000370300200241f8006a41106a2016290000370300200241f8006a41086a201729000037030020022003290001370378410121100b20024190026a41186a2203200241d0006a41186a221529030037030020024190026a41106a2211200241d0006a41106a221629030037030020024190026a41086a2212200241d0006a41086a2217290300370300200241e8016a41086a2213200241f8006a41086a2218290300370300200241e8016a41106a2214200241f8006a41106a2209290300370300200241e8016a41186a2219200241f8006a41186a220b290300370300200241e8016a41206a221a200241f8006a41206a220d2d00003a00002002200229035037039002200220022903783703e8012008200229039002370200200841086a2012290300370200200841106a2011290300370200200841186a2003290300370200200720022903e801370000200741086a22112013290300370000200741106a22122014290300370000200741186a22132019290300370000200741206a201a2d00003a0000200220053602a001200220103a00c40102400240200128020c22030d00410321030c010b200241003602582002200336025420022001280210360250200241f8006a200241d0006a200610e9044103210320022802784101460d00200d200241a0016a41206a280200360200200b200241a0016a41186a2903003703002009200241a0016a41106a2903003703002018200241a0016a41086a290300370300201720112900003703002016201229000037030020152013290000370300200241d0006a411f6a2007411f6a280000360000200220022903a00137037820022007290000370350201021030b200241286a41086a2018290300370300200241286a41106a2009290300370300200241286a41186a200b290300370300200241286a41206a200d280200360200200241086a2017290300370300200241106a2016290300370300200241186a20152903003703002002411f6a200241d0006a411f6a2800003600002001200128020841016a2205360208200220022903783703282002200229035037030020034103470d02200128020022032001280204470d000b0b200041033a00240c010b200241a0016a41206a2201200241286a41206a280200360200200241a0016a41186a2207200241286a41186a290300370300200241a0016a41106a2208200241286a41106a290300370300200241a0016a41086a2215200241286a41086a290300370300200241f8006a41086a2216200241086a290300370300200241f8006a41106a2217200241106a290300370300200241f8006a41186a2218200241186a290300370300200241f8006a411f6a22092002411f6a280000360000200220022903283703a00120022002290300370378200041206a2001280200360200200041186a2007290300370200200041106a2008290300370200200041086a2015290300370200200020022903a001370200200020033a0024200020022903783700252000412d6a2016290300370000200041356a20172903003700002000413d6a2018290300370000200041c4006a20092800003600000b200241d0026a24000b23002000428080808010370200200041086a200128020420012802006b41226e3602000b920101027f23004190016b22032400200341c8006a2001108a0702400240024020032d006c4103460d00200241016a210403402003200341c8006a41c80010e407220241c8006a200241c80010e4071a2004417f6a2204450d02200241c8006a2001108a0720022d006c4103470d000b0b200041033a00240c010b2000200241c8006a41c80010e4071a0b20034190016a24000b1a000240200028020441ffffff3f71450d00200028020010290b0bf40206037f017e017f017e017f027e230041f0006b2102024020012802082203200128020c470d00200041033a00240f0b2001200341206a360208200241086a41086a2204200341086a2900002205370300200241086a41106a2206200341106a2900002207370300200241086a41186a2208200341186a29000022093703002003290000210a20012001280210220341016a3602102002200a370308200241286a41186a2009370300200241286a41106a2007370300200241286a41086a20053703002002200a370328200241c8006a41186a2009370300200241c8006a41106a2007370300200241c8006a41086a2005370300200020033602002000200a3700252000412d6a2005370000200041356a20073700002000413d6a2009370000200041c5006a200241c8006a41206a2d00003a00002002200a370348200020022903083702042000410c6a2004290300370200200041146a20062903003702002000411c6a2008290300370200200041013a00240b2e0020004101360204200041086a2001410c6a280200200141086a2802006b4105752201360200200020013602000bd50503057f047e0b7f230041c0016b2203240002400240024020012802082204200128020c2205460d002001280210210603402001200441206a2207360208200441186a2900002108200441106a2900002109200441086a290000210a2004290000210b2001200641016a220c360210200341f8006a41086a2204200a370300200341f8006a41106a220d2009370300200341f8006a41186a220e2008370300200341d8006a41106a2009370300200341d8006a41186a2008370300200341d8006a41086a200a370300200341306a41086a220f200a370300200341306a41106a22102009370300200341306a41186a221120083703002003200b3703782003200b3703582003200b370330200341086a41206a2212200341f8006a41206a22132d00003a0000200341086a41186a2214200e290300370300200341086a41106a2215200d290300370300200341086a41086a2216200429030037030020032003290378370308200320032f01563b0106200341a0016a41086a200f290300370300200341a0016a41106a2010290300370300200341a0016a41186a2011290300370300200320032903303703a00120042016290300370300200d2015290300370300200e2014290300370300201320122d00003a000020032003290308370378200320032f01063b01582002450d022002417f6a2102200c21062007210420052007470d000b0b200041033a00240c010b20002006360200200020032903a001370204200041013a0024200020032903783700252000410c6a200341a0016a41086a290300370200200041146a200341a0016a41106a2903003702002000411c6a200341a0016a41186a2903003702002000412d6a200341f8006a41086a290300370000200041356a200341f8006a41106a2903003700002000413d6a200341f8006a41186a290300370000200041c5006a20034198016a2d00003a0000200041c6006a20032f01583b01000b200341c0016a24000ba00605057f017e037f027e027f230041f0006b22022400200241286a200141146a350200422086200135020c841015108b020240024020022802282203450d00200141086a2104200141106a210503400240024020042802002206200229022c2207422088a722084b0d00200128020022092003460d0120092003200610e707450d010b2007a7450d02200310290c020b02402005280200450d00200128020c10290b2001200336020c20052007370200200241086a2003200810fb05024002402002280218220a450d00200241086a41086a29030021072002290308210b2002290320210c200228021c210d024020012d0018450d002001350214422086200135020c8410040b2001280214220820042802002203490d0102400240200820036b22084108490d00200841786a2106200128020c20036a41086a21090c010b41002106024041002802d8a74c0d004180a6cc0021090c010b4100210641002802888040210341002802848040210841002802dca74c210e200241e600360268200242dc80808010370360200241db9fc00036025c20024213370254200241c89fc000360250200242003703484180a6cc00210920024180a6cc0036024420024201370338200241c09fc00036023420024113360230200241c89fc00036022c2002410136022820084180a4c000200e410246220e1b200241286a20034198a4c000200e1b2802101102000b41002103200241003a00480240034020062003460d01200241286a20036a200920036a2d00003a00002002200341016a22083a00482008210320084120470d000b20002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a290300370000200041286a20073703002000200b370320200041386a200c3703002000200d3602342000200a3602300c050b0240200341ff0171450d00200241003a00480b200d41ffffff3f71450d00200a10290b200241286a2001350214422086200135020c841015108b02200228022822030d010c020b0b2003200841bcf7c900104c000b200041003602300b200241f0006a24000b130020004102360204200041bcf8c9003602000b3400200041b1dcc90036020420004100360200200041146a4107360200200041106a418481ca00360200200041086a42073702000b2c01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241003600000b130020004108360204200041a48cca003602000b340020004197dec90036020420004100360200200041146a4105360200200041106a41e8b5ca00360200200041086a42083702000b130020004109360204200041b0bfca003602000b3501017f02404108102722020d001039000b20004288808080800137020420002002360200200242f0f2bda1a7ee9cb9f9003700000b3701017f02404110102722020d001039000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000b2b01017f02404101102722020d001039000b200042818080801037020420002002360200200241143a00000b2e01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241c0f0003600000b2e01017f02404104102722020d001039000b20004284808080c0003702042000200236020020024190ce003600000b2e01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241808c153600000b2e01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241d086033600000b130020004107360204200041b8cbca003602000b34002000419ad6ca0036020420004100360200200041146a4102360200200041106a41b0d6ca00360200200041086a42133702000b900a030a7f027e017f230041106b220224002002410036020820024201370300024002400240412010272203450d002003200029004c370000200341186a2204200041e4006a290000370000200341106a2205200041dc006a290000370000200341086a2206200041d4006a290000370000412010272207450d02200241203602042002200736020020072003290000370000200741086a2006290000370000200741106a2005290000370000200741186a200429000037000020024120360208200310292007412041c000102b2203450d022003200029006c370020200341286a200041f4006a290000370000200341306a200041fc006a290000370000200341386a20004184016a29000037000020022003360200200242c080808080083702040240024020002903004201510d00200341c000418001102b2203450d04200341003a004020024180013602042002200336020041c10021070c010b200341c000418001102b2203450d03200341013a00402003200041086a2207290000370041200341e9006a200041306a2903003700002003200041286a290300370061200341c9006a200741086a290000370000200341d1006a200741106a290000370000200341d9006a200741186a2900003700002002200336020020024280818080900c37020441f10021070b200220073602080240024020002802384101460d00200320076a41003a0000200741016a21030c010b200320076a41013a00002002200741016a22033602082000413c6a2802002106024002402002280204220520036b4104490d00200228020021040c010b41000d0320054101742204200341046a2208200420084b1b22084100480d030240024020050d002008102722040d010c060b2002280200210420052008460d00200420052008102b2204450d050b20022008360204200220043602000b200420036a2006360000200741056a21030b2002200336020820002802402109200041c8006a2802002200200210710240024020000d002002280208210020022802042107200228020021050c010b2009200041306c6a210a41002002280208220b6b210620022802042107410021030340200b20036a210802400240200720066a4120490d0020022802002105200721040c010b200841206a22002008490d04200741017422042000200420004b1b22044100480d040240024020070d00024020040d00410121050c020b200410272205450d070c010b2002280200210520072004460d00200520072004102b2205450d060b20022004360204200220053602000b2005200b6a20036a2207200920036a2200290000370000200741186a200041186a290000370000200741106a200041106a290000370000200741086a200041086a2900003700002002200841206a2207360208200041286a290300210c200041206a290300210d02400240200420066a41606a410f4d0d00200421070c010b200741106a220e2007490d0420044101742207200e2007200e4b1b22074100480d040240024020040d00024020070d00410121050c020b200710272205450d070c010b20042007460d00200520042007102b2205450d060b20022007360204200220053602000b2005200b6a20036a220441286a200c370000200441206a200d3700002002200841306a360208200641506a2106200341306a2103200a200041306a470d000b200b20036a21000b20012902002000ad4220862005ad84100302402007450d00200510290b200241106a24000f0b1039000b1032000b1030000b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000b9f0303027f017e027f230041206b220224004197dec900ad4280808080800184100122032900002104200241086a200341086a29000037030020022004370300200310294190bbca00ad4280808080f00084100122032900002104200241106a41086a200341086a29000037030020022004370310200310290240412010272203450d0020032001290000370000200341186a2205200141186a290000370000200341106a2206200141106a290000370000200341086a200141086a290000370000412010272201450d0020012003290000370000200141186a2005290000370000200141106a2006290000370000200141086a2205200341086a2900003700002003102941c00010272203450d002003200229031037001020032002290300370000200341086a200241086a290300370000200341186a200241106a41086a290300370000200042c080808080083702042000200336020020032001290000370020200341286a2005290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011029200241206a24000f0b1039000bb10503027f017e047f230041d0006b220224004197dec900ad4280808080800184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b8baca00ad4280808080c00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000ba11005097f037e027f037e037f230041f0026b220324002003200236020c20032001360208200341106a2002ad4220862001ad841007108b0202400240200328021022040d00200042023703000c010b200328021421052003200341186a28020022063602a401200320043602a00141002107200341003a00e8022004210220062101024002400240024002400240024002400340200721082001450d01200341c8026a20086a20022d00003a000020032001417f6a22013602a4012003200241016a22023602a0012003200841016a22073a00e80220074120470d000b200341a8016a41086a200341c8026a41086a290300370300200341a8016a41106a200341c8026a41106a290300370300200341a8016a41186a200341c8026a41186a290300370300200320032903c8023703a80141002107200341003a00e802200620086b417e6a2108034020012007460d02200341c8026a20076a200220076a22062d00003a00002003200641016a3602a0012003200741016a22063a00e802200320083602a4012008417f6a21082006210720064120470d000b200341c8016a41086a200341c8026a41086a290300370300200341c8016a41106a200341c8026a41106a290300370300200341c8016a41186a200341c8026a41186a290300370300200320032903c8023703c80120012006460d05200220066a22092d00002102200320083602a4012003200941016a22073602a001200241014b0d0520020e020302030b200841ff0171450d04200341003a00e8020c040b200741ff0171450d03200341003a00e8020c030b200941116a210741002102200341003a00e802200120066b416f6a21010240034020082002460d01200341c8026a20026a200920026a41016a2d00003a000020032001410f6a3602a4012003200741716a3602a0012003200241016a22063a00e8022001417f6a2101200741016a21072006210220064120470d000b200341a8026a41186a2202200341c8026a41186a290300370300200341a8026a41106a220a200341c8026a41106a290300370300200341a8026a41086a220b200341c8026a41086a290300370300200320032903c8023703a802200820066b4110490d03200920066a220841096a290000210c200841016a290000210d20034188026a41086a200b29030037030020034188026a41106a200a29030037030020034188026a41186a2002290300370300200320013602a401200320073602a001200320032903a802370388024201210e200121080c020b200241ff0171450d02200341003a00e8020c020b4200210e0b200341e8016a41186a20034188026a41186a290300370300200341e8016a41106a20034188026a41106a290300370300200341e8016a41086a20034188026a41086a29030037030020032003290388023703e8012008450d0020072d0000210120032008417f6a22023602a4012003200741016a3602a001200141014b0d00410021060240024020010e020100010b20024104490d012007280001210920032008417b6a3602a4012003200741056a3602a001410121060b200341c8026a200341a0016a10f40520032802c8020d010b200341003602b002200342013703a8022003410d36028c022003200341086a360288022003200341a8026a3602e801200341dc026a4101360200200342013702cc02200341f4eaca003602c802200320034188026a3602d802200341e8016a41a8a3c800200341c8026a10371a20033502b00242208620033502a802841008024020032802ac02450d0020032802a80210290b4202210e0c010b200341f0006a41086a2202200341c8026a41086a2201280200360200200341d0006a41086a2207200341a8016a41086a290300370300200341d0006a41106a2208200341a8016a41106a290300370300200341d0006a41186a220a200341a8016a41186a290300370300200341306a41086a220b200341c8016a41086a290300370300200341306a41106a220f200341c8016a41106a290300370300200341306a41186a2210200341c8016a41186a290300370300200320032903c802370370200320032903a801370350200320032903c80137033020034180016a41186a200341e8016a41186a290300221137030020034180016a41106a200341e8016a41106a290300221237030020034180016a41086a200341e8016a41086a290300221337030020012013370300200341c8026a41106a22142012370300200341c8026a41186a22152011370300200341206a41086a22162002280200360200200320032903e801221137038001200320113703c80220032003290370370320200341a8026a41186a2202200a290300370300200341a8026a41106a220a2008290300370300200341a8026a41086a22082007290300370300200320032903503703a80220034188026a41186a2207201029030037030020034188026a41106a2210200f29030037030020034188026a41086a220f200b2903003703002003200329033037038802200041306a200c370300200041286a200d3703002000413c6a2009360200200041386a2006360200200041206a2015290300370300200041186a2014290300370300200041106a2001290300370300200020032903c802370308200041c0006a2003290320370300200041c8006a2016280200360200200020032903a80237024c200041d4006a2008290300370200200041dc006a200a290300370200200041e4006a200229030037020020004184016a2007290300370200200041fc006a2010290300370200200041f4006a200f290300370200200020032903880237026c0b2000200e3703002005450d00200410290b200341f0026a24000b8d0303047f017e027f230041d0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a22034200370300200142003703204196ebca00ad42808080808002841001220429000021052003200441086a290000370300200120053703202004102941f0edca00ad4280808080f00084100122042900002105200141c0006a41086a2206200441086a2900003703002001200537034020041029200220012903402205370300200141086a2003290300370300200141106a2005370300200141186a200629030037030020012001290320370300200141206a200110a90720012802202204410820041b2107410021030240024002402001290224420020041b2205422088a7220441014b0d0020040e020201020b03402004410176220220036a220620032007200641306c6a2000412010e7074101481b2103200420026b220441014b0d000b0b2007200341306c6a2000412010e7074521030b02402005a72204450d00200441306c450d00200710290b200141d0006a240020030bb10503027f017e047f230041d0006b220224004197dec900ad4280808080800184100122032900002104200241086a41086a200341086a290000370300200220043703082003102941b8baca00ad4280808080c00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000b830404047f017e037f027e230041d0006b22012400200141206a41186a4200370300200141206a41106a22024200370300200141206a41086a22034200370300200142003703204196ebca00ad42808080808002841001220429000021052003200441086a290000370300200120053703202004102941f0edca00ad4280808080f00084100122042900002105200141c0006a41086a2206200441086a2900003703002001200537034020041029200220012903402205370300200141086a2003290300370300200141106a2005370300200141186a200629030037030020012001290320370300200141206a200110a90720012802202103200129022421052001410036022820014201370320200141206a41002005420020031b2205422088a7220441306c220641306d109e012005a721072003410820031b21082001280228210202402004450d00200128022020024105746a2103200821040340200441086a2900002105200441106a29000021092004290000210a200341186a200441186a290000370000200341106a2009370000200341086a20053700002003200a370000200241016a2102200341206a2103200441306a2104200641506a22060d000b0b2001200236022802402007450d00200741306c450d00200810290b20002001290320370200200041086a200141206a41086a280200360200200141d0006a24000bbf0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841007108b0202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10f4050240024020022802480d0020024100360230200242013703282002410d36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241f4eaca003602482002200241386a360258200241c4006a41a8a3c800200241c8006a10371a200235023042208620023502288410080240200228022c450d00200228022810290b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110290b200241e0006a24000b130020004104360204200041f0d9ca003602000b13002000410836020420004188dcca003602000bb10503027f017e047f230041d0006b220224004196ebca00ad4280808080800284100122032900002104200241086a41086a200341086a290000370300200220043703082003102941f7edca00ad4280808080e00084100122032900002104200241186a41086a200341086a29000037030020022004370318200310290240024002400240412010272203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad42808080808004841002220129000037033820011029200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a1075200310292002280230220541206a2201417f4c0d01200228022821060240024020010d0041002107410121030c010b200110272203450d01200121070b024002402007410f4d0d00200721080c010b200741017422084110200841104b1b22084100480d03024020070d002008102722030d010c050b20072008460d00200320072008102b2203450d040b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0320082007460d00200320082007102b2203450d040b20032002290318370010200341186a200241186a41086a29030037000002400240200741606a2005490d00200721080c010b2005415f4b0d03200741017422082001200820014b1b22084100480d0320072008460d00200320072008102b2203450d040b200341206a2006200510e4071a2000200136020820002008360204200020033602000240200228022c450d00200610290b200241d0006a24000f0b1039000b1038000b1032000b1030000bfc0201037f024020002d0000417f6a2201410b4b0d0002400240024002400240024020010e0c000606060106020304060605000b200041046a2802004102490d05200041106a2802002201450d05200041146a280200450d05200110290f0b200041086a280200450d04200041046a28020010290c040b200041046a2802000d032000410c6a2802002201450d03200141286c450d03200041086a28020010290f0b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2102200041086a28020041c4006a21010340024020012802002203450d00200341306c450d002001417c6a28020010290b200141d0006a2101200241b07f6a22020d000b0b2000410c6a2802002201450d02200141d0006c450d02200028020810290f0b200041086a2d00004101470d01200041146a28020041ffffff3f71450d01200041106a28020010290f0b200041046a2d00000d002000410c6a2802002201450d00200141306c450d00200041086a28020010290f0b0b13002000410a360204200041fcf9ca003602000b3400200041b3e6ca0036020420004100360200200041146a410f360200200041106a41a895cb00360200200041086a42063702000b2b01017f02404101102722020d001039000b200042818080801037020420002002360200200241003a00000be00101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002400240412010272206450d0020062002290300370000200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000412010272203450d0120032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a29000037000020061029200042a0808080800437020420002003360200200241206a24000f0b1039000b1030000b4201017f0240410810272202450d0020024200370000200241084110102b2202450d0020004290808080800237020420002002360200200242003700080f0b1030000bae0101017f0240410410272202450d0020024100360000200241044108102b2202450d00200241003a0004200241084115102b2202450d00200242003700052002410d6a420037000020024115412a102b2202450d00200242003700152002411d6a42003700002002412a41d400102b2202450d002002420037003520024200370025200042d4808080d008370204200020023602002002413d6a42003700002002412d6a42003700000f0b1030000b1300200041063602042000419cafcb003602000b2f01017f02404104102722020d001039000b20004284808080c000370204200020023602002002418080c0023600000b2f01017f02404108102722020d001039000b20004288808080800137020420002002360200200242c0b2cd3b3700000b3001017f02404108102722020d001039000b2000428880808080013702042000200236020020024280e497d0123700000b4801017f0240410810272202450d00200242c0f0f50b370000200241084110102b2202450d002000429080808080023702042000200236020020024280c2d72f3700080f0b1030000b3101017f02404108102722020d001039000b2000428880808080013702042000200236020020024280c0a8ca9a3a3700000b2d01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241e0123600000b13002000410636020420004194b8cb003602000b340020004196ebca0036020420004100360200200041146a4105360200200041106a41d8e5cb00360200200041086a42103702000b6201027f230041106b220224000240411410272203450d00200342003700082003420037000020024294808080800237020420022003360200410020021071200041086a200228020836020020002002290300370200200241106a24000f0b1039000b130020004106360204200041cceecb003602000b3501017f02404108102722020d001039000b20004288808080800137020420002002360200200242f0d0c9abc6add9b1f4003700000b2c01017f02404104102722020d001039000b20004284808080c00037020420002002360200200241143600000b2c01017f02404104102722020d001039000b20004284808080c000370204200020023602002002410d3600000b3801017f02404110102722020d001039000b2002420037000820024280e8eda1ba01370000200042908080808002370204200020023602000b13002000410536020420004184f3cb003602000bea1508047f017e077f027e037f017e017f037e230041d0016b22022400200241b0016a41186a4200370300200241b0016a41106a22034200370300200241b0016a41086a22044200370300200242003703b0014196ebca00ad42808080808002841001220529000021062004200541086a290000370300200220063703b0012005102941f0edca00ad4280808080f00084100122052900002106200241f0006a41086a2207200541086a290000370300200220063703702005102920032002290370220637030020024190016a41086a200429030037030020024190016a41106a200637030020024190016a41186a2007290300370300200220022903b00137039001200241d0006a20024190016a10a907024002400240200228025022080d00410021092002410036020820024208370300410821080c010b200220022902542206370204200220083602002006a7210941002104024002402006422088a7220a41014b0d00200a0e020201020b200a210503402005410176220720046a220b20042008200b41306c6a2001412010e7074101481b2104200520076b220541014b0d000b0b2008200441306c6a2001412010e7070d0002400240024002402004200a4f0d002008200441306c6a2205200541306a200a2004417f736a41306c10e5071a2002200a417f6a220c360208200241b0016a41186a220b4200370300200241b0016a41106a220d4200370300200241b0016a41086a22044200370300200242003703b0014196ebca00ad4280808080800284220e1001220529000021062004200541086a290000370300200220063703b0012005102941eaf8ca00ad4280808080900184220f100122072900002106200241f0006a41086a2205200741086a290000370300200220063703702007102920032002290370370000200341086a200529030037000020024190016a41086a2203200429030037030020024190016a41106a2210200d29030037030020024190016a41186a2211200b290300370300200220022903b00137039001200241b0016a20024190016a10a90720022802b0012207410820071b21120240024020022902b401420020071b2206422088a722070d00420021130c010b200b20122007417f6a221441306c6a220741186a290300370300200d200741106a2903003703002004200741086a290300370300200220072903003703b0012014ad422086200642ffffffff0f83842106200741286a290300211520072903202116420121130b2011200b2903003703002010200d29030037030020032004290300370300200220022903b00137039001200241f0006a41186a4200370300200241f0006a41106a220342003703002005420037030020024200370370200e10012207290000210e2004200741086a2900003703002002200e3703b0012007102920052004290300370300200220022903b001370370200f10012207290000210e2004200741086a2900003703002002200e3703b00120071029200320022903b001220e370300200241d0006a41086a2005290300370300200241d0006a41106a200e370300200241d0006a41186a2004290300370300200220022903703703500240024020120d00200241d0006aad428080808080048410040c010b200241203602b4012002200241d0006a3602b00120122006422088a7200241b0016a10c9062006a72204450d00200441306c450d00201210290b200241106a41186a20024190016a41186a22042903002206370300200241106a41106a20024190016a41106a2205290300220e370300200241106a41086a20024190016a41086a2207290300220f37030020022002290390012217370310200241306a41186a220b2006370300200241306a41106a220d200e370300200241306a41086a2212200f370300200220173703300240201350450d00200c210a4100210d0c040b2004200b2903003703002005200d29030037030020072012290300370300200220022903303703900141002104024002400240200a417f6a220541014b0d0020050e020201020b200c210503402005410176220720046a220b20042008200b41306c6a20024190016a412010e7074101481b2104200520076b220541014b0d000b0b2008200441306c6a20024190016a412010e7072205450d022005411f7620046a21040b200241d0006a41186a20024190016a41186a2903002206370300200241d0006a41106a20024190016a41106a290300220e370300200241d0006a41086a20024190016a41086a290300220f37030020022002290390012213370350200241f0006a41186a2006370300200241f0006a41106a200e370300200241f0006a41086a200f37030020022013370370200241b0016a41186a2006370300200241b0016a41106a200e370300200241b0016a41086a200f370300200220133703b001200c2004490d020240200c2009470d0020022009410110900120022802042109200228020021080b2008200441306c6a220541306a2005200c20046b41306c10e5071a200541286a201537030020052016370320200541186a200241b0016a41186a290300370300200541106a200241b0016a41106a290300370300200541086a200241b0016a41086a290300370300200520022903b0013703002002200a3602084101210d0c030b2004200a1042000b200241d0006a41186a20024190016a41186a290300370300200241d0006a41106a20024190016a41106a290300370300200241d0006a41086a20024190016a41086a29030037030020022002290390013703504100210d200c210a0c010b2004200c1041000b200241f0006a41186a220b4200370300200241f0006a41106a22124200370300200241f0006a41086a22054200370300200242003703704196ebca00ad4280808080800284100122072900002106200241b0016a41086a2204200741086a290000370300200220063703b0012007102920052004290300370300200220022903b00137037041f0edca00ad4280808080f000841001220729000021062004200741086a290000370300200220063703b00120071029200320022903b001370000200341086a2004290300370000200241d0006a41086a2005290300370300200241d0006a41106a2012290300370300200241d0006a41186a200b29030037030020022002290370370350200241203602b4012002200241d0006a3602b0012008200a200241b0016a10c906200241003602b801200242013703b001200241b0016a4100200a41306c220b41306d109e0120022802b80121070240200a450d0020022802b00120074105746a2104200821050340200541086a2900002106200541106a290000210e2005290000210f200441186a200541186a290000370000200441106a200e370000200441086a20063700002004200f370000200741016a2107200441206a2104200541306a2105200b41506a220b0d000b0b200220073602b80102402009450d00200941306c450d00200810290b20022802b401210520022802b0012104200241b0016a41186a200141186a290000370300200241b0016a41106a200141106a290000370300200241b0016a41086a200141086a290000370300200220012900003703b001200241b0016a41012004200710ef062000200d3a0001200041003a0000200041026a200229019001370100200041086a20024196016a290100370100200541ffffff3f71450d01200410290c010b200041013a00002000410c6a4109360200200041086a41eeebca00360200200041066a410c3a0000200041046a4183283b01002009450d00200941306c450d00200810290b200241d0016a24000b13002000411136020420004190f8cb003602000b8903010a7f230041206b220124000240024002400240200041086a2802002202450d00410020024102746b2103417f210420002802002205210603402003450d01200441016a2104200341046a210320062802002107200641046a21062007450d000b4100200741004741016a41017122066b2004460d002002200620046a2208490d012002200741004741016a4101716b20046b220641ffffffff03712006470d0220064102742209417f4c0d024104210a02402009450d0020091027220a450d040b200141003602182001200a36021020012009410276360214200141106a410020061098012001280210200128021822064102746a200520084102746a4104200741004741016a410171220741027420036a6b10e4071a200141086a22032002200620076b6a20046b360200200120012903103703000240200041046a28020041ffffffff0371450d00200028020010290b20002001290300370200200041086a20032802003602000b200141206a24000f0b2008200241ec8bcc00104c000b1038000b1039000bb90403077f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742208417f4c0d002008102d2209450d01024020050d004200210a0c040b2004417f6a220b20044b210c2002280200210d2003417f6a220e20034b0d022001280200210f2007417f6a2102200820096a417c6a2110410021064200210a03404100211102402003200e20066b22124d0d00410021112012200e4b0d00200f20124102746a28020021110b410021120240200c0d002004200b20066b22134d0d002013200b4b0d00200d20134102746a28020021120b200720024d0d052010200a2011ad7c2012ad7c220a3e02002010417c6a21102002417f6a2102200a422088210a200641016a22062005490d000c040b0b1038000b1039000b2007417f6a2102200820096a417c6a2111410021104200210a0340410021060240200c0d00410021062004200b20106b22124d0d00410021062012200b4b0d00200d20124102746a28020021060b200720024d0d022011200a2006ad7c220a3e02002011417c6a21112002417f6a2102200a422088210a201041016a22102005490d000b0b024020072005417f736a220220074f0d00200020073602082000200841027636020420002009360200200920024102746a200a3e02000240200141046a28020041ffffffff0371450d00200128020010290b0f0b2002200741dc8bcc001036000b2002200741dc8bcc001036000bb404030e7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742207417f4c0d0002402007102d2208450d002004450d022001280200210902400240024020030d002006417f6a2105200720086a417c6a210a20092004417f6a22024102746a21030340200420024d0d0302402003280200450d00200620054d0d03200a41003602000b2003417c6a2103200a417c6a210a2005417f6a21052002417f6a2202417f470d000c060b0b200720086a417c6a210b200341027420022802006a417c6a210c4100210d2006210e03402004200d417f736a220220044f0d020240200920024102746a220f2802002210450d0042002111417f2102200b2105200c210a024003402006200e20026a22124d0d012005200a3502002010ad7e20117c20053502007c22113e0200201142208821110240200320026a0d002006200d20036a417f736a220520064f0d05200820054102746a20113e02000c030b2005417c6a2105200a417c6a210a200f280200211020032002417f6a22026a22122003490d000b2012200341cc8bcc001036000b2012200641cc8bcc001036000b200b417c6a210b200e417f6a210e200d41016a220d2004460d050c000b0b2005200641dc8bcc001036000b2002200441cc8bcc001036000b1039000b1038000b2000200636020820002007410276360204200020083602000240200141046a28020041ffffffff0371450d00200128020010290b0bca0302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b41cc8ccc004118200141086a41e48ccc0041f48ccc00103a000b41cc8ccc004118200141086a41e48ccc0041f48ccc00103a000b2008200541cc8bcc001036000b2009200041cc8bcc001036000b41c78dcc004110200141086a41d88dcc0041e88dcc00103a000b2002200041cc8bcc001036000b41c78dcc004110200141086a41d88dcc0041e88dcc00103a000ba80301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b2008200241fc8bcc00104c000b20002009418c8ccc00104c000b100020002802002000280204200110650bcd04010a7f230041106b220224002002410036020820024204370300200128000c2103410021040240024002400240024002400240024020012802042205200128020022064920012d00084100477222010d004100200520066b2204200420054b1b220741016a220420074f0d00200341086a21084100210441042109410021010340200828020022072005417f736a220a20074f0d02200620054f2107200520062005496b21052003280200200a4102746a280200210a024020012002280204470d0020022001417f41004100417f4100200520066b2209200920054b1b220941016a220b200b2009491b20071b20052006491b220941016a220b200b2009491b109801200228020021090b200920046a200a3602002002200141016a2201360208200441046a21042005200649200772450d000c070b0b2002410020041098012002280208210b20010d042002280200200b4102746a2104200520064d0d012005417f732101200341086a21092005210703402001200928020022086a220a20014f0d0320042003280200200a4102746a280200360200200141016a2101200441046a210420062007417f6a2207490d000b200520066b200b6a210b0c030b200a200741cc8bcc001036000b20052006460d010c020b200a200841cc8bcc001036000b200341086a28020022052006417f736a220620054f0d022004200328020020064102746a280200360200200b41016a210b0b2002200b3602080b20002002290300370200200041086a200241086a280200360200200241106a24000f0b2006200541cc8bcc001036000b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000bb00301047f230041c0006b2202240020002802002103410121000240200128021841c29dc000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042e4aec285979ba58811520d012002200036020c2002411e36021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241d09dc0003602282002200241106a36023820042005200241286a10370d020c010b2002200036020c2002410836021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241d09dc0003602282002200241106a36023820042005200241286a10370d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241e09dc0003602282002200241106a36023820002001200241286a103721000b200241c0006a240020000b21002000417f6a41ff01712002ad4220862001ad842004ad4220862003ad8410000b1c00200128021841b09bcc00410f2001411c6a28020028020c1100000bca0201047f230041106b22022400024002400240024020002d002c410171450d0002400240200028020041244b0d00200041056a2103200021040c010b2000410c6a2104200041086a28020021030b20042802002204450d02200420036a417f6a2203450d02200320032d00002001723a00000c010b41242104024002402000280200220541244b0d00200021030c010b2000410c6a2103200521040b0240200328020022032004470d0020022000410110d20720022802004101470d00200241086a2802000d0341a4a1cc00411141b8a1cc001033000b2001410474210102400240200028020041244b0d00200041056a2104200021050c010b2000410c6a2105200041086a28020021040b2005200341016a360200200420036a20013a00000b2000200028022c41016a36022c200241106a24000f0b41e09ccc00413a419c9dcc001057000b1030000bb20301057f41242103024002402001280200220441244b0d00200421050c010b2001410c6a2802002105200421030b4100210602400240024002400240200320056b20024f0d00200520026a22022005490d0241002105024020024102490d00417f2002417f6a677621050b200541016a22032005490d024124210202400240200441244b0d00200141056a2107200421050c010b2001410c6a2802002105200141086a2802002107200421020b200520034b0d030240024020034125490d004100210620022003460d02200441244b0d03200310272202450d0120022007200510e4071a0c060b4100210620044125490d01200141003a0004200141056a2007200510e4071a2001200536020020071029200041003602000f0b2000200336020441012106200041086a41013602000b200020063602000f0b200720022003102b22020d0220002003360204200041086a4101360200200041013602000f0b20002003360204200041086a4100360200200041013602000f0b41e6a1cc00412041b8a1cc001033000b200141013a0004200120033602002001410c6a2005360200200141086a2002360200200041003602000bf109010a7f230041106b220224002000280200210320002001360200024002400240024002400240024002400240024002400240024002400240024002400240200320014b0d00200320014f0d10200041046a2101412421042000280204220541244b0d01200121030c020b200041046a280200220321010240200341244d0d00200041106a28020021010b2001417f6a2206450d0d2001417e6a2107200041096a210841002101034002400240200341244b22040d0020082109200321050c010b20002802102105200028020c21090b200520014d0d03200141016a2105200920016a2d000021090240024020040d002008210a2003210b0c010b2000280210210b200028020c210a0b200b20054d0d04200a20016a41016a2d0000210a0240024020040d00200821040c010b20002802102103200028020c21040b200320014d0d05200420016a200a4104762009410474723a0000200041046a2802002103024020072001460d00200521010c010b0b02400240200341244b0d0020082101200321040c010b20002802102104200028020c21010b200420064d0d05200120066a2d000021010240200341244d0d0020002802102103200028020c21080b200320064d0d060c0e0b200041106a2103200521040b0240200328020022032004470d0020022001410110d20720022802004101470d00200241086a2802000d0641a4a1cc00411141b8a1cc001033000b02400240200128020041244b0d00200041096a21040c010b200041106a21012000410c6a28020021040b2001200341016a360200200420036a41003a0000200041046a280200220321010240200341244d0d00200041106a28020021010b024020014102490d002001417f6a2101200041096a210803402001417f6a210402400240200341244b22050d00200821092003210a0c010b2000280210210a200028020c21090b200a20044d0d08200920016a417f6a2d000021090240024020050d002008210a2003210b0c010b2000280210210b200028020c210a0b200b20014d0d09200a20016a2d0000210a0240024020050d00200821050c010b20002802102103200028020c21050b200320014d0d0a200520016a200a4104762009410474723a0000200141014b2105200041046a28020021032004210120050d000b0b02400240200341244b0d00200041096a2101200321040c010b200041106a28020021042000410c6a28020021010b2004450d0920012d0000210102400240200341244b0d00200041096a21000c010b200041106a28020021032000410c6a28020021000b2003450d0a2000200141f001714104763a00000c0d0b2001200541dca4cc001036000b200141016a200b41eca4cc001036000b2001200341fca4cc001036000b2006200441bca4cc001036000b2006200341cca4cc001036000b1030000b2001417f6a200a4188a2cc001036000b2001200b4198a2cc001036000b2001200341a8a2cc001036000b41004100418ca5cc001036000b41004100419ca5cc001036000b02400240200341244b0d00200041096a2101200321040c010b200041106a28020021042000410c6a28020021010b2004450d0220012d0000210102400240200341244b0d00200041096a21080c010b200041106a28020021032000410c6a28020021080b4100210620030d004100410041cca4cc001036000b200820066a20014104743a00000b200241106a24000f0b4100410041bca4cc001036000b8a0202017f037e230041106b220524002001200210dd0742ffffffff0f832003200410dd0742ffffffff0f8310dc0721062001200210dd074220882003200410dd0742ffffffff0f8310dc0720064220887c220742208810d807210820052003200410dd074220882001200210dd0742ffffffff0f8310dc07200742ffffffff0f837c2207422086200642ffffffff0f83842008200742208810d8077c2001200210dd074220882003200410dd0742208810dc0710d8077c2001200210de072003200410dd0710d80710dc0710db072001200210dd0710d8072003200410de0710dc0710db0710df07200529030021032000200541086a29030037030820002003370300200541106a24000b3c01017f230041106b220524002005200120022003200410d407200529030021012000200541086a29030037030820002001370300200541106a24000b3c01017f230041106b220524002005200120022003200410e307200529030021012000200541086a29030037030820002001370300200541106a24000b040000000b040020000b1500024020014200520d0010d707000b20002001800b1500024020014200520d0010d707000b20002001820b0700200120007c0b0700200120007e0b040020000b040020010b100020002002370308200020013703000b3c01017f230041106b220524002005200120022003200410e107200529030021012000200541086a29030037030820002001370300200541106a24000b3e01017f230041106b2205240020052001200220032004410010e207200529030021012000200541086a29030037030820002001370300200541106a24000bc00704017f027e027f047e230041d0006b2206240002400240024002400240024002400240024002402001200210de07500d002003200410dd0721072003200410de0721082007500d012008500d022003200410de0779a72001200210de0779a76b2209413f4b0d0341ff0020096b210a200941016a21090c080b02402003200410de07500d0020050d040c060b02402005450d002001200210dd072003200410dd0710da07210720054200370308200520073703000b2001200210dd072003200410dd0710d90721010c060b2008500d030240024002402001200210dd07500d002003200410de077b4201510d012003200410de0779a72001200210de0779a76b2209413e4b0d0241ff0020096b210a200941016a21090c090b02402005450d00200642002001200210de072003200410de0710da0710df07200629030021072005200641086a290300370308200520073703000b2001200210de072003200410de0710d90721010c070b02402005450d00200641106a2001200210dd072001200210de072003200410de07427f7c8310df07200629031021072005200641186a290300370308200520073703000b2001200210de072003200410de077a423f838821010c060b2005450d040c020b02402003200410dd077b4201510d0041bf7f2003200410dd0779a72001200210de0779a76b22096b210a200941c1006a21090c060b02402005450d002001200210dd0721072003200410dd07210820054200370308200520072008427f7c833703000b2003200410dd074201510d06200641c0006a200120022003200410dd077aa710eb07200641c8006a2903002102200629034021010c060b2005450d020b2005200137030020052002370308420021010c020b10d707000b420021010b420021020c010b200641206a20012002200a41ff007110ea07200641306a20012002200941ff007110eb07200641206a41086a2903002102200641306a41086a290300210b20062903202101200629033021070240024020090d00420021084200210c0c010b4200210c4200210d0340200b4201862007423f888422082008427f8520047c20074201862002423f88842207427f85220820037c200854ad7c423f8722082004837d20072008200383220e54ad7d210b2007200e7d2107420020024201862001423f8884842102200d200142018684210120084201832208210d2009417f6a22090d000b0b02402005450d00200520073703002005200b3703080b200c20024201862001423f8884842102200820014201868421010b2000200137030020002002370308200641d0006a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10e207200529031021012000200529031837030820002001370300200541206a24000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030bac0102017f037e230041206b2204240002400240200341c000710d002003450d012001200210dd0721052001200210de072106200420052003413f71ad2207862001200210dd07410020036b413f71ad8820062007868410df07200441086a2903002102200429030021010c010b200441106a42002001200210dd072003413f71ad8610df07200441186a2903002102200429031021010b2000200137030020002002370308200441206a24000b9e0102017f027e230041106b22042400024002400240200341c000710d002003450d022001200210de0721052001200210dd072003413f71ad2206882005410020036b413f71ad868421052001200210de0720068821010c010b2001200210de072003413f71ad882105420021010b20042005200110df07200441086a2903002102200429030021010b2000200137030020002002370308200441106a24000b3a01017f230041106b22042400200420012002200310e807200429030021012000200441086a29030037030820002001370300200441106a24000b3a01017f230041106b22042400200420012002200310e907200429030021012000200441086a29030037030820002001370300200441106a24000b0bf5a70c0300418080c0000b0c802f88b9001210000012100000419080c0000bc6a70c20001000170000006e020000050000007372632f6c6962616c6c6f632f7261775f7665632e727300c70010004600000068010000130000001f00000004000000040000002000000021000000220000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72001f000000000000000100000023000000b4001000130000004a020000050000007372632f6c6962616c6c6f632f666d742e72732f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f666d742f6d6f642e72730000004b0110001600000061011000160000008e321200010000003801100013000000ca0300000d0000007372632f6c6962616c6c6f632f7665632e7273737761705f72656d6f766520696e6465782028697320292073686f756c64206265203c206c656e202869732000a001100014000000b4011000170000008e321200010000003801100013000000f10300000d000000696e73657274696f6e20696e6465782028697320292073686f756c64206265203c3d206c656e202869732000f40110001200000061011000160000008e321200010000003801100013000000210400000d00000072656d6f76616c20696e64657820286973200000300210001600000046021000230000008e3212000100000038011000130000002d0500000d000000737461727420647261696e20696e6465782028697320292073686f756c64206265203c3d20656e6420647261696e20696e64657820286973200000009402100014000000b4011000170000008e321200010000003801100013000000330500000d000000656e6420647261696e20696e6465782028697320c802100020000000e8021000120000001f000000000000000100000024000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000d403100006000000da03100022000000696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468200c04100016000000220410000d000000736c69636520696e64657820737461727473206174202062757420656e64732061742000930e100016000000040800002f0000005b2e2e2e5d000000a80410000b0000007d0e100016000000e7041000010000005b0e10000e000000690e1000040000006d0e100010000000e704100001000000a80410000b000000b304100026000000d904100008000000e104100006000000e7041000010000006279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620606026051000020000001005100016000000560400002400000010051000160000004c040000110000007372632f6c6962636f72652f666d742f6d6f642e72732e2e3a05100016000000540000001400000030787372632f6c6962636f72652f666d742f6e756d2e727300010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a840600b80a1000200000000a0000001c000000b80a1000200000001a000000280000007372632f6c6962636f72652f756e69636f64652f7072696e7461626c652e72730003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf55380e100023000000520000003e00000000700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f000000000380e1000230000004b00000028000000380e10002300000057000000160000007372632f6c6962636f72652f756e69636f64652f756e69636f64655f646174612e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f6620607372632f6c6962636f72652f7374722f6d6f642e7273426f72726f774572726f72426f72726f774d75744572726f7270616e69636b6564206174200000f90e100001000000fa0e1000030000000013130000000000f80e100001000000f80e1000010000003a27272c2020202020000000240f10001a0000008b01000026000000930e100016000000c30700002f0000007372632f6c6962636f72652f7374722f7061747465726e2e72730000500f10001b00000052000000050000007372632f6c6962636f72652f736c6963652f6d656d6368722e72732c200000001f0000000c000000040000002500000026000000270000002c0a00001f000000040000000400000028000000290000002a00000028280a2c0a000000930e100016000000800700002f0000003062000037101000260000006672616d655f737570706f72743a3a686173682f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f737570706f72742f7372632f686173682e7273496e76616c696420726576657273653a2068617368206c656e67746820746f6f2073686f72740000001f00000004000000040000002b0000002c0000002d0000001f00000000000000010000002e0000002f000000300000006d61782d77656967687461637475616c5f7765696768743d00131300000000000000000048617368207461626c65206361706163697479206f766572666c6f77e010100059000000500000001b0000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6861736862726f776e2d302e362e332f7372632f7261772f6d6f642e727300000000000000010000000000000082800000000000008a8000000000008000800080000000808b800000000000000100008000000000818000800000008009800000000000808a00000000000000880000000000000009800080000000000a000080000000008b800080000000008b0000000000008089800000000000800380000000000080028000000000008080000000000000800a800000000000000a0000800000008081800080000000808080000000000080010000800000000008800080000000801f00000000000000010000003100000032000000300000001f000000000000000100000031000000320000003000000001a8010001605354524f424576312e302e3200005412100055000000680000000d0000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6d65726c696e2d322e302e302f7372632f7374726f62652e727300000054121000550000007c0000001500000054121000550000007d0000000d000000a213100019000000bb13100016000000000000002000000004000000020000000000000002000000000000000300000001000000200000000400000002000000000000000200000000000000030000005412100055000000880000000d000000641310003e0000005412100055000000910000000900000054121000550000005e0000000900000054121000550000005f00000009000000596f75207573656420746865205420666c61672c207768696368207468697320696d706c656d656e746174696f6e20646f65736e277420737570706f7274596f7520747269656420746f20636f6e74696e7565206f702020627574206368616e67656420666c61677320746f20000000000000000100000002000000040000000800000010000000200000004661696c656420746f206465636f646520636f6d70616374207533322061743a00000000941410000e00000000000000a4141000010000000000000000000000ac141000010000000000000000000000b4141000060000000000000000131300000000000000000000000000bc141000010000000000000000000000c4141000070000000000000000131300000000000000000000000000cc14100001000000000000004e6577417574686f7269746965730000471510000d00000023151000240000005061757365640000fc14100027000000526573756d656400d4141000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e417574686f726974794c6973740000000080151000070000000000000088151000030000000000000000000000a015100003000000000000004f6666656e6365000ea410000400000012a410000e0000000fb9120004000000b8151000550000000d16100053000000601610004700000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c61737420656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c7365292e53746f72656452616e6765000000000000e01610000a00000000000000781e1000010000000000000000000000ec16100002000000000000004e657753657373696f6e0000fc161000550000005117100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e74696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672edc1710006000000088000000120000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e332e302f7372632f636f6465632e72734572726f72496e636f7272656374536c617368696e675370616e73496e636f7272656374486973746f7279446570746843616c6c4e6f74416c6c6f77656450687261676d656e426f677573456c656374696f6e53697a6550687261676d656e426f67757353636f726550687261676d656e426f6775734564676550687261676d656e426f67757353656c66566f746550687261676d656e536c61736865644e6f6d696e6174696f6e50687261676d656e426f6775734e6f6d696e6174696f6e50687261676d656e426f6775734e6f6d696e61746f7250687261676d656e426f677573436f6d7061637450687261676d656e426f67757357696e6e657250687261676d656e426f67757357696e6e6572436f756e74536e617073686f74556e617661696c61626c6550687261676d656e5765616b5375626d697373696f6e50687261676d656e4561726c795375626d697373696f6e416c7265616479436c61696d65644e6f74536f72746564416e64556e69717565496e76616c69644e756d6265724f664e6f6d696e6174696f6e73496e76616c6964457261546f52657761726446756e6465645461726765744e6f556e6c6f636b4368756e6b4e6f4d6f72654368756e6b73496e73756666696369656e7456616c7565496e76616c6964536c617368496e6465784475706c6963617465496e646578456d70747954617267657473416c7265616479506169726564416c7265616479426f6e6465644e6f7453746173684e6f74436f6e74726f6c6c65725761726e696e673a20412073657373696f6e206170706561727320746f2068617665206265656e20736b69707065642e626f6e64626f6e645f6578747261756e626f6e6477697468647261775f756e626f6e64656476616c69646174656e6f6d696e6174656368696c6c7365745f70617965657365745f636f6e74726f6c6c65727365745f76616c696461746f725f636f756e74666f7263655f6e6f5f65726173666f7263655f6e65775f6572617365745f696e76756c6e657261626c6573666f7263655f756e7374616b65666f7263655f6e65775f6572615f616c7761797363616e63656c5f64656665727265645f736c6173687061796f75745f6e6f6d696e61746f727061796f75745f76616c696461746f727061796f75745f7374616b6572737265626f6e647365745f686973746f72795f6465707468726561705f73746173687375626d69745f656c656374696f6e5f736f6c7574696f6e7375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e6564426f6e6465644c65646765724e6f6d696e61746f7273457261735374616b65727356616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e457261536c617368696e675370616e735370616e536c617368536e617073686f7456616c696461746f7273536e617073686f744e6f6d696e61746f7273457261456c656374696f6e5374617475730000000000081e10000900000000000000141e10000300000000000000000000002c1e10000200000000000000000000003c1e1000060000000000000050da1100020000000000000000000000441e10000100000000000000000000004c1e1000050000000000000050da1100020000000000000000000000541e10000100000000000000000000005c1e10001a00000000000000781e1000010000000000000000000000801e1000020000000000000000000000901e10000f00000000000000a01e1000010000000000000000000000a81e1000010000000000000000000000b01e10000e00000000000000a01e1000010000000000000000000000c01e1000010000000000000000000000e91b1000060000000000000050da1100020000000000000000000000c81e1000040000000000000000000000e81e1000080000000000000050da1100020000000000000000000000f01e1000010000000000000000000000f81e1000090000000000000050da1100020000000000000000000000041f100002000000000000004572615061796f75740000006f221000080000006b721200070000006b72120007000000e8211000560000003e221000310000005265776172640000992110004f000000536c61736800000050211000490000004f6c64536c617368696e675265706f72744469736361726465640000148312000c000000f7201000470000003e211000120000005374616b696e67456c656374696f6e00e82010000f000000a420100044000000536f6c7574696f6e53746f72656400006a2010003a000000aa1f1000230000000013130000000000cd1f1000540000002120100049000000556e626f6e646564851f10002500000057697468647261776e000000141f1000570000006b1f10001a00000020416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365602066726f6d2074686520756e6c6f636b696e672071756575652e20416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e20416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c2069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e2041206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e2041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e20636f6d7075746174696f6e206d6574686f642e456c656374696f6e436f6d7075746520416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e20546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e20604163636f756e7449646020697320746865207374617368206163636f756e742e2054686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e457261496e64657845726173526577617264506f696e747300ffff0000ffffffffc72310001c000000e323100004000000e723100002000000e323100004000000e923100002000000972310001d000000b42310001300000074231000220000009623100001000000492310002b00000070616c6c65745f7374616b696e672f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f7374616b696e672f7372632f6c69622e7273f09f92b820457374696d6174696e67206e6578742073657373696f6e206368616e6765206661696c65642ef09f92b8204661696c656420746f2063726561746520736e617073686f74206174202ef09f92b820456c656374696f6e2077696e646f77206973204f70656e28292e20536e617073686f742063726561746564f09f92b820536e617073686f742073697a6520746f6f20626967205b203c3e205d5b5d2e0063241000390000009c241000010000003b241000280000000c2410002f0000004578656375746564206f6666636861696e20776f726b65722074687265616420776974686f7574206572726f72732ef09f92b8204572726f7220696e2070687261676d656e206f6666636861696e20776f726b65723a20736b697070696e67206f6666636861696e20776f726b657220696e206f70656e20656c656374696f6e2077696e646f772064756520746f205b5d000000000000009c1a10000400000000000000c028100003000000000000000000000008291000160000000000000000000000a01a10000a00000000000000b8291000010000000000000000000000d0291000160000000000000000000000aa1a10000600000000000000802a1000010000000000000000000000982a1000200000000000000000000000b01a10001100000000000000982b1000010000000000000000000000b02b10001e0000000000000000000000c11a10000800000000000000a02c1000010000000000000000000000b82c1000110000000000000000000000c91a10000800000000000000402d1000010000000000000000000000582d1000130000000000000000000000d11a1000050000000000000000131300000000000000000000000000f02d1000110000000000000000000000d61a10000900000000000000782e1000010000000000000000000000902e1000100000000000000000000000df1a10000e00000000000000102f1000010000000000000000000000282f1000100000000000000000000000ed1a10001300000000000000a82f1000010000000000000000000000c02f1000080000000000000000000000001b10000d0000000000000000131300000000000000000000000000003010000900000000000000000000000d1b10000d0000000000000000131300000000000000000000000000483010000a00000000000000000000001a1b1000110000000000000098301000010000000000000000000000b03010000900000000000000000000002b1b10000d00000000000000f8301000020000000000000000000000283110000b0000000000000000000000381b1000140000000000000000131300000000000000000000000000803110000800000000000000000000004c1b10001500000000000000c0311000020000000000000000000000f03110000e0000000000000000000000611b1000100000000000000060321000020000000000000000000000903210001e0000000000000000000000711b100010000000000000008033100001000000000000000000000098331000130000000000000000000000811b10000e0000000000000030341000020000000000000000000000603410001700000000000000000000008f1b10000600000000000000802a1000010000000000000000000000183510000f0000000000000000000000951b1000110000000000000090351000020000000000000000000000c0351000150000000000000000000000a61b10000a00000000000000f830100002000000000000000000000068361000100000000000000000000000b01b10001800000000000000e8361000050000000000000000000000603710002f0000000000000000000000c81b10002100000000000000e8361000050000000000000000000000d8381000090000000000000000000000c85a10000a0000000000000087e412002300000000000000bef212000500000000000000c3f212001500000000000000945b10000500000000000000995b100011000000366a1000590000008f6a1000210000000013130000000000b06a10004c0000000013130000000000fc6a1000490000000013130000000000bc69100010000000001313000000000091c212000b000000456b1000350000002deb1100080000007a6b10001a0000000013130000000000946b100054000000e86b100050000000386c1000130000004b6c100017000000deff10000b000000626c10004c000000ae6c10003800000034c312000c00000000000000286a10000e00000000000000c3f21200150000000068100059000000596810000d00000000131300000000006668100054000000ba681000590000001369100013000000001313000000000026691000580000007e6910003e0000000013130000000000bc69100010000000001313000000000091c212000b000000995910003a0000002deb110008000000666710001000000015bb11000d000000cc69100017000000deff10000b000000e369100045000000d76710002900000034c312000c00000000000000bef212000500000000000000c3f21200150000008163100055000000d663100040000000166410004900000000131300000000005f64100052000000b1641000300000000013130000000000e16410004f000000306510004f0000007f6510003f0000000013130000000000005b100055000000dc5b1000430000000013130000000000be651000120000000013130000000000d065100026000000001313000000000091c212000b000000f665100050000000d35910002600000046661000590000009f6610005c000000fb661000540000004f6710001700000066671000100000002b5a10000b0000007667100017000000deff10000b0000008d6710004a000000d767100029000000f0e812000a00000000000000155710001200000000000000c2c41200030000005c5f10004b0000000013130000000000a75f10004d000000f45f1000130000000013130000000000005b100055000000dc5b1000430000000013130000000000076010001300000000131300000000001a6010001b000000001313000000000091c212000b00000035601000550000008a60100051000000db6010003d000000186110005e000000f9591000320000008e481000100000007661100042000000b86110000d000000c56110001d000000e2611000490000002b6210002a000000556210001c0000007162100061000000d26210006c000000d04310001d0000003e6310004300000034c312000c00000000000000495f100005000000000000004e5f10000e000000b45e10003a00000000131300000000000d591000370000000013130000000000005b100055000000dc5b100043000000001313000000000091c212000b000000995910003a000000d359100026000000f959100032000000544b10000c000000ee5e100017000000deff10000b000000055f100024000000295f10002000000034c312000c00000000000000855e100007000000000000008c5e100028000000965c1000440000000013130000000000da5c100054000000d4471000230000000013130000000000005b100055000000dc5b100043000000001313000000000091c212000b0000002e5d10004c0000007a5d100040000000ba5d10003600000028bf11000a000000f05d100021000000115e100021000000deff10000b000000325e100032000000645e10002100000034c312000c000000aa5b10003200000000131300000000000d591000370000000013130000000000005b100055000000dc5b100043000000001313000000000091c212000b000000995910003a0000001f5c100015000000f959100032000000345c1000090000003d5c100017000000deff10000b000000545c100022000000765c10002000000034c312000c00000000000000945b10000500000000000000995b100011000000d25a10002e00000000131300000000000d591000370000000013130000000000005b100055000000001313000000000091c212000b000000995910003a000000d359100026000000f95910003200000028bf11000a000000555b100019000000aec612000d0000006e5b100013000000815b10001300000034c312000c00000000000000c85a10000a0000000000000087e4120023000000e95810002400000000131300000000000d5910003700000000131300000000004459100055000000001313000000000091c212000b000000995910003a000000d359100026000000f9591000320000002b5a10000b000000365a100017000000deff10000b0000004d5a10003d0000008a5a10003e00000034c312000c0000000000000025a912000300000000000000ebea12000c000000965810002500000000131300000000007955100022000000001313000000000091c212000b000000bb58100017000000d25810001700000034c312000c000000515810002c00000000131300000000007955100022000000001313000000000091c212000b00000017581000100000007d58100019000000b35510001200000034c312000c0000009c57100053000000ef5710002800000000131300000000007955100022000000001313000000000091c212000b00000017581000100000002758100019000000405810001100000034c312000c00000000000000915310000a00000000000000adf2120011000000275710003300000000131300000000007955100022000000001313000000000091c212000b0000005a571000070000006157100024000000855710001700000034c312000c00000000000000105710000500000000000000d0cf12000c00000000000000155710001200000000000000c2c4120003000000c55510004300000000131300000000007955100022000000001313000000000091c212000b000000085610003b0000004356100023000000665610002e0000009456100061000000f55610001b00000034c312000c000000385510004100000000131300000000007955100022000000001313000000000091c212000b0000009b55100018000000b35510001200000034c312000c000000000000007841100003000000000000006f22100008000000000000002b5510000d00000000000000aa83120008000000b3531000260000000013130000000000d95310004700000000131300000000002054100041000000001313000000000091c212000b0000006154100015000000765410002e000000a454100035000000d95410001d000000f65410001a000000105510001b00000034c312000c000000000000007841100003000000000000006f2210000800000000000000915310000a000000000000009b53100018000000014d100058000000594d100057000000b04d1000310000000013130000000000bd4f1000290000000013130000000000e64f10003f000000494e100059000000a24e10004c00000025501000560000007b50100049000000c450100022000000e650100042000000285110004800000070511000280000000013130000000000ee4e100057000000454f10000e0000000013130000000000534f100051000000001313000000000091c212000b0000009851100057000000ef51100027000000165210004e00000064521000370000009b52100050000000eb521000520000003d5310005400000034c312000c000000000000007841100003000000000000006f22100008000000014d100058000000594d100057000000b04d1000310000000013130000000000e14d10002900000000131300000000000a4e10003f000000494e100059000000a24e10004c0000000013130000000000ee4e100057000000454f10000e0000000013130000000000534f100051000000001313000000000091c212000b000000a44f100019000000c2e310003100000034c312000c00000000000000f24c10000f00000000000000d0cf12000c000000000000007841100003000000000000006f22100008000000324910004400000000131300000000007649100053000000c94910004a000000134a10004d0000000013130000000000604a100056000000b64a10001e0000000013130000000000d44a100040000000001313000000000091c212000b000000144b100040000000c2e3100031000000544b10000c000000604b100047000000a74b100030000000deff10000b000000d74b1000560000002d4c10004b000000784c100044000000bc4c10003600000034c312000c000000474710003800000000131300000000007f47100055000000d447100023000000001313000000000091c212000b000000f7471000350000002c48100025000000514810003d0000008e481000100000009e48100026000000aec612000d000000c448100040000000044910002e00000034c312000c00000000000000134710001100000000000000244710001100000000000000354710001200000000000000ebea12000c000000ed4310004c000000394410002000000000131300000000002eff10000c00000059441000440000009d44100052000000ef44100051000000404510005100000091451000280000000013130000000000b945100015000000001313000000000091c212000b000000ce45100038000000064610001d000000aec612000d00000023461000280000004b4610001c000000674610004c000000b34610006000000034c312000c0000008b4110004e000000d94110005800000031421000300000000013130000000000614210002400000000131300000000008542100040000000001313000000000091c212000b000000c5421000490000000e43100023000000deff10000b00000031431000360000006743100069000000d04310001d00000034c312000c000000000000003341100007000000000000003a41100013000000000000004d41100007000000000000005441100012000000000000006641100005000000000000006b4110000d000000000000007841100003000000000000006f22100008000000000000007b41100004000000000000007f4110000c000000353a10003800000000131300000000006d3a10000d0000007a3a1000450000000013130000000000bf3a1000210000000013130000000000e03a10002b00000000131300000000000b3b10003d000000483b1000540000009c3b10000c0000000013130000000000a83b10004a0000000013130000000000f23b10002a00000000131300000000001c3c10003200000000131300000000004e3c100053000000a13c100047000000e83c10004c000000343d100054000000883d100058000000e03d1000260000000013130000000000063e10001800000000131300000000001e3e100039000000573e10003e000000953e10002b000000c03e100055000000153f1000570000006c3f1000100000007c3f100043000000bf3f10001b0000000013130000000000da3f10003000000000131300000000000a401000590000006340100059000000bc401000500000000c41100027000000001313000000000091c212000b000000193a10001c00000034c312000c000000203910003000000000131300000000005039100057000000a739100058000000ff3910001a000000001313000000000091c212000b000000193a10001c00000034c312000c00000020556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e204e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e732066726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061207472616e73616374696f6e20696e2074686520626c6f636b2e20536565206063726174653a3a77656967687460206d6f64756c652e205375626d697420612070687261676d656e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a20312e2069732076616c69642e20322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e207468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e204120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a20312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e20322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f64657320746865206564676520202020776569676874732e20426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205b6070687261676d656e605d2c206f7220616e79206f7468657220616c676f726974686d2e204164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a202d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e20426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e2054686520696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e64205b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f205b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c2063617573652074686520736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64206d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e204120736f6c7574696f6e2069732076616c69642069663a20302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602e20312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2e20322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e20332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d75737420202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e20323536202020206f722062696c6c696f6e292e20342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e20352e2048617320636f72726563742073656c662d766f7465732e204120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a20312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e20322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e20332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265202020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e63652977696e6e6572735665633c56616c696461746f72496e6465783e636f6d70616374436f6d7061637441737369676e6d656e747373636f726550687261676d656e53636f726565726173697a65456c656374696f6e53697a652052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e6365206973207a65726f2e205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e6520616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c6566742e20546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e20436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e2042617365205765696768743a2037352e3934202b20322e333936202a205320c2b573202d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73202d2057726974657320456163683a205370616e536c617368202a2053205365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e207768656e2060486973746f727944657074686020697320726564756365642e202d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e202d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e20202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c642020202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062792020202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e204f726967696e206d75737420626520726f6f742e202d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033202d2042617365205765696768743a2032392e3133202a204520c2b57320202020202d2052656164733a2043757272656e74204572612c20486973746f727920446570746820202020202d205772697465733a20486973746f727920446570746820202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f72507265667320202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465786e65775f686973746f72795f6465707468436f6d706163743c457261496e6465783e5f6572615f6974656d735f64656c65746564205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e20546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73202d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602e202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2033342e353120c2b573202a202e303438204c20c2b57320202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745d20202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657220506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f20202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e20546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966206974206973206e6f74206f6e65206f6620746865207374616b6572732e20546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292e202d2d2d2d2d2d2d2d2d2d2d204e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72292042617365205765696768743a20313130202b2035342e32202a204e20c2b57320284d656469616e20536c6f70657329202d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204d6967726174654572612c204572617356616c696461746f725265776172642c202020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d7329202d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329202d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d732976616c696461746f725f7374617368202a2a546869732065787472696e7369632077696c6c2062652072656d6f76656420616674657220604d6967726174696f6e457261202b20486973746f727944657074686020686173207061737365642c20676976696e67206f70706f7274756e69747920666f7220757365727320746f20636c61696d20616c6c2072657761726473206265666f7265206d6f76696e6720746f2053696d706c65205061796f7574732e20416674657220746869732074696d652c20796f752073686f756c642075736520607061796f75745f7374616b6572736020696e73746561642e2a2a204d616b65206f6e652076616c696461746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f66207468652076616c696461746f7220746f20706179206f75742e202d206065726160206d6179206e6f74206265206c6f776572207468616e206f6e6520666f6c6c6f77696e6720746865206d6f737420726563656e746c792070616964206572612e204966206974206973206869676865722c2020207468656e20697420696e6469636174657320616e20696e737472756374696f6e20746f20736b697020746865207061796f7574206f6620616c6c2070726576696f757320657261732e205741524e494e473a206f6e636520616e2065726120697320706179656420666f7220612076616c696461746f7220737563682076616c696461746f722063616e277420636c61696d20746865207061796f7574206f662070726576696f7573206572612e205741524e494e473a20496e636f727265637420617267756d656e747320686572652063616e20726573756c7420696e206c6f7373206f66207061796f75742e2042652076657279206361726566756c2e202d2054696d6520636f6d706c65786974793a204f2831292e204d616b65206f6e65206e6f6d696e61746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f6620746865206e6f6d696e61746f7220746f20706179206f75742e202d206076616c696461746f72736020697320746865206c697374206f6620616c6c2076616c696461746f72732074686174206077686f6020686164206578706f7375726520746f20647572696e672060657261602c202020616c6f6e67736964652074686520696e646578206f66206077686f6020696e2074686520636c6970706564206578706f73757265206f66207468652076616c696461746f722e202020492e652e206561636820656c656d656e742069732061207475706c65206f66202020602876616c696461746f722c20696e646578206f66206077686f6020696e20636c6970706564206578706f73757265206f662076616c696461746f7229602e202020496620697420697320696e636f6d706c6574652c207468656e206c657373207468616e207468652066756c6c207265776172642077696c6c2062652070616964206f75742e2020204974206d757374206e6f742065786365656420604d41585f4e4f4d494e4154494f4e53602e202d204e756d626572206f662073746f726167652072656164206f6620604f2876616c696461746f727329603b206076616c696461746f7273602069732074686520617267756d656e74206f66207468652063616c6c2c202020616e6420697320626f756e64656420627920604d41585f4e4f4d494e4154494f4e53602e202d20456163682073746f72616765207265616420697320604f284e29602073697a6520616e64206465636f646520636f6d706c65786974793b20604e602069732074686520206d6178696d756d2020206e6f6d696e6174696f6e7320746861742063616e20626520676976656e20746f20612073696e676c652076616c696461746f722e202d20436f6d7075746174696f6e20636f6d706c65786974793a20604f284d41585f4e4f4d494e4154494f4e53202a206c6f674e29603b20604d41585f4e4f4d494e4154494f4e5360206973207468652020206d6178696d756d206e756d626572206f662076616c696461746f72732074686174206d6179206265206e6f6d696e6174656420627920612073696e676c65206e6f6d696e61746f722c206974206973202020626f756e646564206f6e6c792065636f6e6f6d6963616c6c792028616c6c206e6f6d696e61746f72732061726520726571756972656420746f20706c6163652061206d696e696d756d207374616b65292e76616c696461746f72735665633c28543a3a4163636f756e7449642c20753332293e2043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e20506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e20436f6d706c65786974793a204f2855202b2053292077697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d3130303020616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e202d20426173653a2035383730202b2033342e3631202a205320c2b573202d20526561643a20556e6170706c69656420536c6173686573202d2057726974653a20556e6170706c69656420536c6173686573736c6173685f696e646963657320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e20546865206469737061746368206f726967696e206d75737420626520526f6f742e202d2042617365205765696768743a20322e303520c2b573202d2057726974653a20466f72636545726120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f7665642042617365205765696768743a2035332e3037202b20322e333635202a205320c2b5732052656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b73205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b732057726974657320456163683a205370616e536c617368202a205373746173686e756d5f736c617368696e675f7370616e7320536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e202d204f285629202d2042617365205765696768743a20322e323038202b202e303036202a205620c2b573202d2057726974653a20496e76756c6e657261626c657320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e202d2042617365205765696768743a20312e39353920c2b573202d20577269746520466f72636545726120466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e202d2042617365205765696768743a20312e38353720c2b57320536574732074686520696465616c206e756d626572206f662076616c696461746f72732e2042617365205765696768743a20312e37313720c2b5732057726974653a2056616c696461746f7220436f756e74202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d2d2d2042617365205765696768743a2032352e323220c2b573202d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572202d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572636f6e74726f6c6c6572202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e202d2042617365205765696768743a2031312e333320c2b57320202020202d20526561643a204c656467657220202020202d2057726974653a205061796565706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e20416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d20436f6e7461696e73206f6e6520726561642e202d2d2d2d2d2d2d2d2042617365205765696768743a2031362e353320c2b573202d20526561643a20457261456c656374696f6e5374617475732c204c6564676572202d2057726974653a2056616c696461746f72732c204e6f6d696e61746f7273204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e292077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e2042617365205765696768743a2032322e3334202b202e3336202a204e20c2b573207768657265204e20697320746865206e756d626572206f662074617267657473202d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261202d205772697465733a2056616c696461746f72732c204e6f6d696e61746f7273746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e2042617365205765696768743a2031372e313320c2b573202d20526561643a2045726120456c656374696f6e205374617475732c204c6564676572202d2057726974653a204e6f6d696e61746f72732c2056616c696461746f7273707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e20456d697473206057697468647261776e602e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e20436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76652042617365205765696768743a205570646174653a2035302e3532202b202e303238202a205320c2b573202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745d202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572204b696c6c3a2037392e3431202b20322e333636202a205320c2b573202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e204163636f756e745d2c204c6f636b73202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205b4f726967696e204163636f756e745d2c204c6f636b73204e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e20456d6974732060556e626f6e646564602e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669612020206077697468647261775f756e626f6e646564602e202d204f6e6520444220656e7472792e2042617365205765696768743a2035302e333420c2b573202d20526561643a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745d202d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e642069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e20456d6974732060426f6e646564602e2042617365205765696768743a2035342e383820c2b573202d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b736d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2042617365205765696768743a2036372e383720c2b573202d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73202d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572000000000000487910000c0000000000000000000000c2c4120003000000000000000000000000000000000000000000000000000000000000000013130054791000000000000000000064791000070000000000000001000000000000009c7910000e0000000000000000000000c2c41200030000000000000000000000000000000000000000000000000000000000000000131300ac7910000000000000000000bc79100001000000000000000100000000000000c4791000150000000000000000000000c2c41200030000000000000000000000000000000000000000000000000000000000000000131300dc7910000000000000000000ec79100001000000000000000100000000000000f47910000d0000000000000000000000adf21200110000000000000000000000000000000000000000000000000000000000000000131300047a10000000000000000000147a100003000000000000000100000000000000e91b1000060000000105000000000000d0cf12000c00000000000000d0cf12000c0000000000000000000000000000000000000000131300dc7f100000000000000000002c7a100001000000000000000000000000000000ef1b1000060000000102000000000000d0cf12000c00000000000000347a1000290000000000000000000000000000000000000000131300dc7f10000000000000000000607a100001000000000000000000000000000000687a1000050000000105000000000000d0cf12000c00000000000000995b1000110000000000000000000000000000000000000000131300707a10000000000000000000807a100001000000000000000100000000000000386e12000a0000000105000000000000d0cf12000c000000000000004e5f10000e00000000000000000000000000000000000000001313003c7c10000000000000000000887a100001000000000000000100000000000000f51b10000a0000000105000000000000d0cf12000c00000000000000907a1000190000000000000000000000000000000000000000131300ac7a10000000000000000000bc7a100001000000000000000000000000000000c47a10000a00000000000000000000006f221000080000000000000000000000000000000000000000000000000000000000000000131300a88010000000000000000000d07a100004000000000000000000000000000000f07a1000090000000000000000000000f97a10000d0000000000000000000000000000000000000000000000000000000000000000131300087b10000000000000000000187b100004000000000000000000000000000000387b10001500000001050000000000006f2210000800000000000000148312000c0000000000000000000000000000000000000000131300a88010000000000000000000507b100001000000000000000000000000000000ff1b10000b00000002050500000000006f2210000800000000000000d0cf12000c00000000000000587b1000240000000000000000131300c07b100000000000000000007c7b100006000000000000000100000000000000ac7b10001200000002050500000000006f2210000800000000000000d0cf12000c00000000000000587b1000240000000000000000131300c07b10000000000000000000d07b10000b000000000000000100000000000000287c10001200000002050500000000006f2210000800000000000000d0cf12000c000000000000004e5f10000e00000000000000001313003c7c100000000000000000004c7c100005000000000000000100000000000000747c10001300000001050000000000006f2210000800000000000000a9f812000c0000000000000000000000000000000000000000131300807e10000000000000000000887c100003000000000000000000000000000000772210001000000001050000000000006f2210000800000000000000a07c10001d0000000000000000000000000000000000000000131300c07c10000000000000000000d07c100002000000000000000100000000000000e07c10000e00000001050000000000006f2210000800000000000000a9f812000c0000000000000000000000000000000000000000131300787d10000000000000000000f07c100002000000000000000100000000000000007d1000080000000000000000000000087d1000070000000000000000000000000000000000000000000000000000000000000000131300107d10000000000000000000207d100001000000000000000100000000000000287d1000130000000000000000000000a1ca12000700000000000000000000000000000000000000000000000000000000000000001313003c7d100000000000000000004c7d100003000000000000000100000000000000647d1000130000000000000000000000a9f812000c0000000000000000000000000000000000000000000000000000000000000000131300787d10000000000000000000887d100002000000000000000100000000000000987d10001000000001050000000000006f2210000800000000000000a87d10002f0000000000000000000000000000000000000000131300d87d10000000000000000000e87d100001000000000000000100000000000000f07d10000a0000000000000000000000fa7d10001d0000000000000000000000000000000000000000000000000000000000000000131300187e10000000000000000000287e1000040000000000000001000000000000000a1c10001300000002050500000000006f2210000800000000000000d0cf12000c00000000000000487e1000170000000000000000131300607e10000000000000000000707e1000020000000000000000000000000000001d1c10001300000002050500000000006f2210000800000000000000d0cf12000c00000000000000a9f812000c0000000000000000131300807e10000000000000000000907e100001000000000000000000000000000000301c10000d0000000105000000000000d0cf12000c00000000000000987e1000170000000000000000000000000000000000000000131300b07e10000000000000000000c07e1000010000000000000000000000000000003d1c1000090000000105000000000000c87e10002300000000000000eb7e1000220000000000000000000000000000000000000000131300107f10000000000000000000207f100002000000000000000100000000000000307f10001600000000000000000000006f221000080000000000000000000000000000000000000000000000000000000000000000131300a88010000000000000000000487f100001000000000000000000000000000000461c1000120000000000000000000000adf21200110000000000000000000000000000000000000000000000000000000000000000131300607f10000000000000000000507f100002000000000000000000000000000000581c1000120000000000000000000000adf21200110000000000000000000000000000000000000000000000000000000000000000131300607f10000000000000000000707f100002000000000000000000000000000000807f10000d00000000000000000000008d7f10002a0000000000000000000000000000000000000000000000000000000000000000131300dc7f10000000000000000000b87f100003000000000000000000000000000000d07f10000b00000000000000000000006b4110000d0000000000000000000000000000000000000000000000000000000000000000131300dc7f10000000000000000000ec7f1000010000000000000000000000000000006a1c1000110000000000000000000000f47f10001e00000000000000000000000000000000000000000000000000000000000000001313001480100000000000000000002480100002000000000000000100000000000000348010001500000000000000000000000fb912000400000000000000000000000000000000000000000000000000000000000000001313004c80100000000000000000005c8010000200000000000000010000000000000010ca11000e00000000000000000000001eca11000800000000000000000000000000000000000000000000000000000000000000001313006c80100000000000000000007c801000040000000000000001000000000000009c8010000a00000000000000000000006f221000080000000000000000000000000000000000000000000000000000000000000000131300a88010000000000000000000b8801000010000000000000000000000486973746f727944657074681f0000000000000001000000330000002b9010002300000000131300000000004e9010004e00000000131300000000009c90100043000000df9010002b0000000a9110004400000056616c696461746f72436f756e7400001f000000000000000100000034000000019010002a0000004d696e696d756d56616c696461746f72436f756e740000001f000000000000000100000035000000b18f100050000000496e76756c6e657261626c65730000001f000000000000000100000036000000dd8e100056000000338f100053000000868f10002b0000009d8e1000400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e0000004c8e10005100000050617965650000001f000000000000000100000037000000138e100039000000c28d1000510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e0000001f000000000000000100000038000000698d10005900000043757272656e744572610000d98c1000170000000013130000000000f08c100059000000498d100020000000416374697665457261416374697665457261496e666f00001f0000000000000001000000380000002a8c1000360000000013130000000000608c10002e0000008e8c10004b00000045726173537461727453657373696f6e496e646578000000de8b10004c0000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3ec08b10001e000000001313000000000060891000580000000013130000000000b88910002a000000708b100050000000457261735374616b657273436c697070656400001f000000000000000100000039000000e2891000260000000013130000000000088a1000560000005e8a100037000000958a100047000000dc8a10003d0000000013130000000000198b1000570000000013130000000000b88910002a000000708b1000500000004572617356616c696461746f72507265667300001f00000000000000010000003a0000001c89100044000000001313000000000060891000580000000013130000000000b88910002a0000004572617356616c696461746f725265776172640092881000420000000013130000000000d488100048000000457261526577617264506f696e74733c543a3a4163636f756e7449643e0000001f00000000000000010000003b0000001e8810002b000000498810004900000045726173546f74616c5374616b6500009c8710003b000000d787100047000000466f726365457261466f7263696e67001f0000000000000001000000370000008787100015000000536c6173685265776172644672616374696f6e001f000000000000000100000034000000108710003e00000000131300000000004e8710003900000043616e63656c6564536c6173685061796f7574001f00000000000000010000003c0000009086100045000000d58610003b000000556e6170706c696564536c61736865735665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e001f0000000000000001000000360000005f86100031000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e001f000000000000000100000036000000b5851000490000000013130000000000fe85100032000000308610002f0000002850657262696c6c2c2042616c616e63654f663c543e29001f0000000000000001000000380000004885100051000000998510001c0000001f000000000000000100000038000000f084100058000000736c617368696e673a3a536c617368696e675370616e73001f000000000000000100000038000000cd8410002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e0000001f00000000000000010000003d000000508410004f0000009f8410002e0000004561726c69657374556e6170706c696564536c6173680000118410003f000000b88310005900000072831000460000001f00000000000000010000003800000019831000590000007283100046000000517565756564456c6563746564456c656374696f6e526573756c743c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e005b82100059000000b4821000580000000c8310000d00000051756575656453636f7265001f0000000000000001000000380000002f8210002c000000456c656374696f6e5374617475733c543a3a426c6f636b4e756d6265723e00001f000000000000000100000037000000c281100052000000148210001b000000497343757272656e7453657373696f6e46696e616c0000001f0000000000000001000000380000005981100053000000ac811000160000001f00000000000000010000003e000000fe8010003300000050ca11001f000000001313000000000031811000280000004d69677261746545726100001f000000000000000100000038000000c08010003e0000002054686520657261207768657265207765206d696772617465642066726f6d204c617a79205061796f75747320746f2053696d706c65205061796f7574732054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e20546869732069732073657420746f2076332e302e3020666f72206e6577206e6574776f726b732e2054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b652065726120666f7263696e6720696e746f206163636f756e742e20466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c2077652061636365707420736f6c7574696f6e7320746f206265207375626d69747465642e205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e20546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d2074686520726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e2069732065786563757465642e20536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c79206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e20536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c7920546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653a20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d6020416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e204d6f6465206f662065726120666f7263696e672e2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e2054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e2045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e2053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e2054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e2049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e20436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e20546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f207468652060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e20284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292e2054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e2054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e204578706f73757265206f662076616c696461746f72206174206572612e205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e20546865206163746976652065726120697320746865206572612063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d75737420626520657175616c20746f206053657373696f6e496e746572666163653a3a76616c696461746f7273602e205468652063757272656e742065726120696e6465782e205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f72207365742c206974206d6967687420626520616374697665206f72206e6f742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e20496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e000000000000c09110000e00000000000000148312000c0000000000000000131300d09110000000000000000000e0911000010000000000000000000000e89110000f000000000000006f221000080000000000000000131300f8911000000000000000000008921000010000000000000053657373696f6e7350657245726100001f00000000000000010000003f000000499210001c000000426f6e64696e674475726174696f6e001f0000000000000001000000400000001092100039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e4572726f723a2073746172745f73657373696f6e5f696e646578206d7573742062652073657420666f722063757272656e745f65726100b49210001f000000d392100016000000e992100009000000f09f92b8206e65772076616c696461746f7220736574206f662073697a652020686173206265656e20656c6563746564207669612020666f7220657261200000409410002a000000059410003b00000065786163746c79206f6e65206f6620606d617962655f76616c696461746f726020616e6420606d617962655f6e6f6d696e6174696f6e2e69735f736f6d656020697320747275652e2069735f76616c696461746f722069732066616c73653b206d617962655f6e6f6d696e6174696f6e20697320736f6d653b20716564000000ee2210005b000000a20a000022000000ac93100025000000d19310000b000000dc93100029000000f09f92b820412062657474657220736f6c7574696f6e20287769746820636f6d707574652020616e642073636f7265202920686173206265656e2076616c69646174656420616e642073746f726564206f6e20636861696e2ef09f92b820646574656374656420616e206572726f7220696e20746865207374616b696e67206c6f636b696e6720616e6420736e617073686f742ef09f92b820756e2d636f6d70616374696e6720736f6c7574696f6e206661696c65642064756520746f200000000000005f1a10000d00000000000000d0971000010000000000000000000000571a10000800000000000000d89710000100000000000000000000004a1a10000d00000000000000e09710000100000000000000000000003d1a10000d00000000000000e8971000010000000000000000000000311a10000c00000000000000f0971000010000000000000000000000231a10000e00000000000000f8971000010000000000000000000000121a1000110000000000000000981000010000000000000000000000011a1000110000000000000008981000010000000000000000000000f51910000c0000000000000010981000010000000000000000000000e81910000d0000000000000018981000010000000000000000000000dc1910000c0000000000000020981000010000000000000000000000ca191000120000000000000028981000010000000000000000000000b01910001a00000000000000309810000100000000000000000000009e191000120000000000000038981000010000000000000000000000901910000e0000000000000040981000010000000000000000000000791910001700000000000000489810000100000000000000000000006319100016000000000000005098100001000000000000000000000050191000130000000000000058981000010000000000000000000000381910001800000000000000609810000100000000000000000000002519100013000000000000006898100002000000000000000000000011191000140000000000000078981000020000000000000000000000fb181000160000000000000088981000010000000000000000000000e4181000170000000000000090981000010000000000000000000000cb181000190000000000000098981000020000000000000000000000b61810001500000000000000a8981000010000000000000000000000a51810001100000000000000b0981000010000000000000000000000931810001200000000000000b89810000100000000000000000000007a1810001900000000000000c09810000100000000000000000000006c1810000e00000000000000c8981000010000000000000000000000571810001500000000000000d0981000010000000000000000000000411810001600000000000000d89810000100000000000000399f10001a000000249f1000150000000b9f100019000000ed9e10001e000000d49e100019000000c39e100011000000a19e1000220000006e9e100033000000499e100025000000209e100029000000ed9d100033000000d69d100017000000b79d10001f000000969d100021000000539d1000430000001a9d100039000000da9c100040000000a69c1000340000007a9c10002c000000149c1000580000006c9c10000e000000939b100057000000ea9b10002a0000004e9b100045000000fb9a1000530000008e9a100058000000e69a100015000000459a100049000000f499100051000000ae99100046000000909910001e0000003e991000520000000d99100031000000e09810002d00000020496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e20496e636f72726563742070726576696f757320686973746f727920646570746820696e7075742070726f76696465642e205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e2054686520656c656374696f6e2073697a6520697320696e76616c69642e2054686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e20546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e20412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f20736c617368206f6620746865207461726765742e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e204572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e64657820697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e204f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676520696e20736e617073686f74292e20496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e2054686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e20546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e20546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e20496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e20496e76616c69642065726120746f207265776172642e20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e2043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e2043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e20536c617368207265636f726420696e646578206f7574206f6620626f756e64732e204475706c696361746520696e6465782e20546172676574732063616e6e6f7420626520656d7074792e20436f6e74726f6c6c657220697320616c7265616479207061697265642e20537461736820697320616c726561647920626f6e6465642e204e6f742061207374617368206163636f756e742e204e6f74206120636f6e74726f6c6c6572206163636f756e742e00fe9f100040000000bc9f10004200000096231000010000008b9f10003100000096231000010000005374616b696e674f6666636861696e76616c6964617465556e7369676e65642073756363656564656420666f72206120736f6c7574696f6e206174206572612076616c696461746520756e7369676e65642070726520646973706174636820636865636b73206661696c65642064756520746f206d6f64756c65206572726f72202372656a656374696e6720756e7369676e6564207472616e73616374696f6e2062656361757365206974206973206e6f74206c6f63616c2f696e2d626c6f636b2e7061726974792f7374616b696e672d656c656374696f6e2f6661696c656420746f20777269746520746f206f6666636861696e2064622e666f726b2e726563656e746c792065786563757465642e5265706f72747366696e616c6e756d44656665727265644f6666656e636573004da110001800000065a11000240000007374616b696e6770616c6c65745f7374616b696e673a3a6f6666636861696e5f656c656374696f6e2f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f7374616b696e672f7372632f6f6666636861696e5f656c656374696f6e2e7273707265706172656420736f6c7574696f6e2061667465722020657175616c697a6174696f6e20697465726174696f6e7320776974682073636f7265200000009ca110006200000034000000120000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f72756e74696d652f7372632f63757276652e72730000000000008ca0100007000000010500000000000060a310000d000000000000006da31000340000000000000000000000000000000000000000131300a4a310000000000000000000b4a31000010000000000000000000000000000009ba01000100000000000000000000000bca31000190000000000000000000000000000000000000000000000000000000000000000131300d8a310000000000000000000e8a3100002000000000000000100000000000000f8a310001600000002050500000000000ea41000040000000000000012a410000e0000000000000020a4100012000000000000000013130034a41000000000000000000044a41000010000000000000001000000000000004ca410001200000001050000000000000ea41000040000000000000059c9120007000000000000000000000000000000000000000013130060a41000000000000000000070a410000600000000000000010000005265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e0000001f00000000000000010000003800000073a61000520000005665633c44656665727265644f6666656e63654f663c543e3e0000001f00000000000000010000003600000009a610005900000062a6100011000000436f6e63757272656e745265706f727473496e6465784b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e00001f000000000000000100000036000000bfa510004a0000005265706f72747342794b696e64496e64657800001f000000000000000100000036000000a0a41000440000000013130000000000e4a410002f000000001313000000000013a510005200000065a510005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d69747465642061742061206c617465722074696d652e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e6772616e6470613a65717569766f6361696d2d6f6e6c696e653a6f66666c696e706172613a646f75626c652d766f7465000000b3a7100016000000c9a710001600000080a710002d000000ada7100003000000b0a710000300000000000000200000000000000002000000000000000200000000000000030000000100000020000000080000000200000000000000000000000200000003000000020000002000000000000000020000000000000002000000000000000300000042697450747220726567696f6e2063616e6e6f7420777261702074686520616464726573732073706163653a20202b20203d204269745074722063616e6e6f7420616464726573732020626974733b20746865206d6178696d756d206973204469676573744974656d206e6f7420657175616c5468657265206973206f6e6c79206f6e6520666174616c206572726f723b207165640000001f00000008000000040000004100000098d2110034000000cf020000010000004e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473210000dba810000d000000c0a810001b0000001de611000200000098d21100340000002c0300000100000042616420696e70757420646174612070726f766964656420746f20657865637574655f626c6f636bf0a8100010000000696e697469616c697a655f626c6f636b08a910000f0000006170706c795f65787472696e7369630020a9100013000000696e686572656e745f65787472696e73696373003ca910000f000000636865636b5f696e686572656e74730054a910001400000076616c69646174655f7472616e73616374696f6e70a910000f0000006f6666636861696e5f776f726b65720088a91000150000006c6f63616c5f76616c69646174696f6e5f64617461000000a8a910000e00000070617261636861696e5f636f64650000c0a91000090000006765745f6865616473000000d4a91000240000007375626d69745f7265706f72745f65717569766f636174696f6e5f65787472696e73696300aa10001c00000067656e65726174655f6b65795f6f776e6572736869705f70726f6f6624aa10001500000067656e65726174655f73657373696f6e5f6b65797300000044aa1000130000006465636f64655f73657373696f6e5f6b6579730060aa10000d0000006163636f756e745f6e6f6e636500000078aa10000a00000071756572795f696e666f556e63616c6c61626c65556e657870656374656454696d65706f696e7457726f6e6754696d65706f696e744e6f54696d65706f696e744e6f74466f756e6453656e646572496e5369676e61746f726965735369676e61746f726965734f75744f664f72646572546f6f4d616e795369676e61746f72696573546f6f4665775369676e61746f726965734e6f417070726f76616c734e6565646564416c7265616479417070726f7665645a65726f5468726573686f6c64626174636861735f73756261735f6d756c7469617070726f76655f61735f6d756c746963616e63656c5f61735f6d756c7469000000000000a0ac10001000000000000000b0ac1000020000000000000000000000c0ac1000020000000000000000000000d0ac10000e0000000000000000131300000000000000000000000000e0ac1000010000000000000000000000e8ac10000b00000000000000f4ac10000300000000000000000000000cad10000200000000000000000000001cad100010000000000000002cad10000400000000000000000000004cad10000200000000000000000000005cad100010000000000000006cad100005000000000000000000000094ad1000020000000000000000000000a4ad100011000000000000002cad1000040000000000000000000000b8ad100002000000000000000000000082aa10000a00000000000000c8ad1000010000000000000000000000d0ad100001000000000000004261746368496e746572727570746564c2c4120003000000500b13000d000000bcb010005600000012b11000130000004261746368436f6d706c65746564000089b01000330000004e65774d756c7469736967000eb51200090000000eb512000900000058af100008000000fcaf1000520000004eb010003b0000004d756c7469736967417070726f76616c0eb512000900000042af1000160000000eb512000900000058af10000800000060af100056000000b6af1000460000004d756c746973696745786563757465640eb512000900000042af1000160000000eb512000900000058af1000080000007c2e12000e000000a2ae10004b000000edae1000550000004d756c746973696743616e63656c6c65640000000fae10004c0000005bae100047000000c2c4120003000000d8ad10003700000020412063616c6c20776974682061206066616c73656020497343616c6c61626c652066696c7465722077617320617474656d707465642e2041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e20466972737420706172616d20697320746865206163636f756e7420746861742069732063616e63656c6c696e672c20746869726420697320746865206d756c7469736967206163636f756e742c20666f757274682069732068617368206f66207468652063616c6c2e2041206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742c20666f757274682069732068617368206f66207468652063616c6c20746f2062652065786563757465642e54696d65706f696e743c426c6f636b4e756d6265723e43616c6c486173682041206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742c20666f757274682069732068617368206f66207468652063616c6c2e2041206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c207365636f6e6420697320746865206d756c7469736967206163636f756e742c2074686972642069732068617368206f66207468652063616c6c2e204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e446561644163636f756e744b656570416c6976654578697374656e7469616c4465706f736974496e73756666696369656e7442616c616e63654c69717569646974795265737472696374696f6e7356657374696e6742616c616e63657365745f62616c616e63657472616e736665725f6b6565705f616c697665546f74616c49737375616e63650000000088b21000070000000000000050da110002000000000000000000000090b2100001000000000000000000000098b21000080000000000000050da1100020000000000000000000000a0b21000020000000000000000000000b0b210000800000000000000b8b21000030000000000000000000000d0b21000010000000000000000000000d8b210000a0000000000000030121100030000000000000000000000e4b21000010000000000000000000000a4711200070000000000000050da1100020000000000000000000000ecb210000100000000000000456e646f77656400f1b310002f000000447573744c6f737482b3100050000000d2b310001f0000005472616e736665720eb51200090000000eb51200090000006b721200070000005cb310002600000042616c616e636553657400002bb3100031000000f4b210003700000020536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20412062616c616e6365207761732073657420627920726f6f74202877686f2c20667265652c207265736572766564292e205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c7565292e20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e74696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c4c6174656e6573730000000000000024b810000a0000000000000000000000e8c91200030000000000000000000000000000000000000000000000000000000000000000131300a0b81000000000000000000030b8100001000000000000000100000000000000d90113000b000000000000000000000038b8100027000000000000000000000000000000000000000000000000000000000000000013130060b81000000000000000000070b810000100000000000000010000000000000078b810000b0000000000000000000000e8c91200030000000000000000000000000000000000000000000000000000000000000000131300a0b81000000000000000000084b810000200000000000000010000000000000094b810000b0000000000000000000000e8c91200030000000000000000000000000000000000000000000000000000000000000000131300a0b810000000000000000000b0b8100001000000000000000100000000000000b8b810000a0000000000000000000000c2b8100016000000000000000000000000000000000000000000000000000000000000000013130074b910000000000000000000d8b810000a00000000000000010000000000000028b910000f000000000000000000000037b910001400000000000000000000000000000000000000000000000000000000000000001313004cb9100000000000000000005cb910000100000000000000000000000000000064b910000e0000000000000000000000c2b8100016000000000000000000000000000000000000000000000000000000000000000013130074b91000000000000000000084b91000010000000000000001000000000000008cb910000c0000000000000000000000c2c4120003000000000000000000000000000000000000000000000000000000000000000013130054ba1000000000000000000098b9100009000000000000000100000000000000e0b91000110000000105000000000000c2c412000300000000000000f1b910001b00000000000000000000000000000000000000001313000cba100000000000000000001cba100001000000000000000100000000000000a82012000b000000000000000000000024ba10000f000000000000000000000000000000000000000000000000000000000000000013130034ba1000000000000000000044ba10000200000000000000000000000000000051b4100008000000000000000000000090d012000e000000000000000000000000000000000000000000000000000000000000000013130054ba1000000000000000000064ba100005000000000000000100000045706f6368496e64657800001dc01000150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e001f00000000000000010000003600000002c010001b00000047656e65736973536c6f7400a0bf10003e000000debf10002400000043757272656e74536c6f74001f0000000000000001000000420000008bbf10001500000052616e646f6d6e6573737363686e6f72726b656c3a3a52616e646f6d6e657373c5bd10002e0000000013130000000000f3bd10000b0000000013130000000000febd1000410000003fbe10003e0000007dbe100045000000c2be10004500000007bf10004100000048bf1000430000004e65787445706f6368436f6e6669674e657874436f6e66696744657363726970746f72001f0000000000000001000000380000009fbd1000260000004e65787452616e646f6d6e65737300001f00000000000000010000004300000088bd1000170000005365676d656e74496e64657843bc10001f000000001313000000000062bc10003d0000009fbc100040000000dfbc100025000000001313000000000004bd10003b0000003fbd10004200000081bd100007000000556e646572436f6e737472756374696f6e5665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e1f000000000000000100000036000000febb1000450000004d6179626552616e646f6d6e657373001f00000000000000010000003800000077bb100040000000b7bb1000470000001f0000000000000001000000340000008cba1000360000000013130000000000c2ba10004500000007bb1000440000004bbb10002c00000020486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e6564207570206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636b20657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e204e6578742065706f636820636f6e66696775726174696f6e2c206966206368616e6765642e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e000000000000a4c010000d00000000000000e8c91200030000000000000000131300b4c010000000000000000000c4c01000020000000000000000000000d4c010001100000000000000904a1100090000000000000000131300e8c010000000000000000000f8c01000050000000000000045706f63684475726174696f6e0000001f00000000000000010000004400000050c210004300000093c210003f0000004578706563746564426c6f636b54696d650000001f00000000000000010000004500000020c110004100000061c1100044000000a5c1100041000000e6c110004200000028c210002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e000060c4100064000000720000001300000060c4100064000000890000001800000060c4100064000000b50000001900000060c4100064000000000100004200000060c410006400000014010000420000004475706c696361746520766f74657220286f72206f7468657220636f727275707420696e707574292e00000060c4100064000000580100001500000060c41000640000005d0100001e0000001f00000000000000010000004600000060c4100064000000600000001a00000060c4100064000000600000002c00000060c4100064000000cd0100002400000060c4100064000000ce0100002400000060c4100064000000f20100002300000060c4100064000000f40100002400000060c4100064000000170200003500000060c4100064000000210200002400000060c4100064000000430200003500000060c4100064000000440200003500000060c4100064000000590200002b00000060c41000640000005a0200002800000060c4100064000000640200002b00000060c410006400000065020000280000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f70687261676d656e2f7372632f7265647563652e727365706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b2071656400000030c51000580000008b0100001b00000030c510005800000093010000200000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f626162652f7372632f6c69622e72730000000038ab1000050000000000000064c610000100000000000000000000007cc610001400000000000000000000003dab100006000000000000001cc710000200000000000000000000004cc710000a000000000000000000000043ab100008000000000000009cc71000040000000000000000000000fcc710003300000000000000000000004bab1000100000000000000094c91000040000000000000000000000f4c910002700000000000000000000005bab10000f000000000000002ccb10000400000000000000000000008ccb10001b000000000000000000000095db100005000000000000009adb100017000000b4d81000200000000013130000000000d4d810005100000025d9100031000000001313000000000056d910001f000000001313000000000075d910003c000000001313000000000091c212000b000000b1d9100024000000d5d910002e00000003da10003100000034c312000c000000001313000000000034da1000560000008ada10004d000000d7da1000560000002ddb10005400000081db100014000000000000008b46120005000000000000004bd010000300000000000000441912000400000000000000481912001700000013d810003800000000131300000000004bd81000300000000013130000000000948c120034000000001313000000000091c212000b0000007bd810001900000094d810002000000034c312000c000000000000005d4b120009000000000000004bd0100003000000000000004ed010001100000000000000adf21200110000000000000074d410000f0000000000000083d410002100000000000000441912000400000000000000481912001700000092d0100056000000e8d010003f0000000013130000000000a4d4100055000000f9d4100008000000001313000000000027d11000540000007bd1100058000000d3d110000e0000000013130000000000948c1200340000000013130000000000eccc10005600000042cd10005100000093cd10001c000000e1d110005700000038d21000550000008dd210003600000001d5100023000000001313000000000024d51000480000006cd51000470000000013130000000000b3d51000570000000ad610005600000060d6100038000000001313000000000091c212000b00000098d610001500000064ce10003400000098ce100050000000e8ce100052000000add61000490000003acf10003000000011d310003600000047d310003f000000804211000d000000f6d610001c00000086d310004c000000d2d3100024000000f6d310003d00000012d71000200000003ea211000f00000032d710002400000056d71000240000007ad7100025000000aec612000d0000009fd7100030000000cfd710003100000000d810001300000034c312000c000000000000005d4b120009000000000000004bd0100003000000000000004ed010001100000000000000adf21200110000000000000074d410000f0000000000000083d41000210000000000000081d0100009000000000000008ad010000800000092d0100056000000e8d010003f000000001313000000000027d11000540000007bd1100058000000d3d110000e0000000013130000000000948c1200340000000013130000000000eccc10005600000042cd10005100000093cd10001c000000e1d110005700000038d21000550000008dd210003600000026ce1000340000000013130000000000c3d210004e000000001313000000000091c212000b0000005ace10000a00000064ce10003400000098ce100050000000e8ce1000520000003acf10003000000011d310003600000047d310003f000000804211000d00000086d310004c000000d2d3100024000000f6d310003d000000a9cf1000230000003ea211000f00000033d410002000000053d4100021000000aec612000d000000eccf10002f0000001bd010003000000034c312000c000000000000005d4b120009000000000000004bd0100003000000000000004ed010001100000000000000adf2120011000000000000005fd01000090000000000000068d01000190000000000000081d0100009000000000000008ad010000800000064cc100056000000bacc1000320000000013130000000000948c1200340000000013130000000000eccc10005600000042cd10005100000093cd10001c000000afcd10005800000007ce10001f00000026ce100034000000001313000000000091c212000b0000005ace10000a00000064ce10003400000098ce100050000000e8ce1000520000003acf100030000000804211000d0000006acf1000220000008ccf10001d000000a9cf100023000000cccf100020000000aec612000d000000eccf10002f0000001bd010003000000034c312000c0000002043616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c7920666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869732064697370617463682e204d6179206e6f7420626520656d7074792e202d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e20666f7220746869732064697370617463682e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e202d20604f285329602e202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f662020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e202d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e202d2053746f726167653a2072656d6f766573206f6e65206974656d2e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2033372e36202b20302e303834202a205320202020202d20526561643a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d20202020202d2057726974653a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d7531366f746865725f7369676e61746f7269657374696d65706f696e7454696d65706f696e743c543a3a426c6f636b4e756d6265723e63616c6c5f686173685b75383b2033325d20526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e7420696620617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e205061796d656e743a20604d756c74697369674465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c757320607468726573686f6c64602074696d657320604d756c74697369674465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f722069732063616e63656c6c65642e202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e204966206974206973206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e204e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292e202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c207769746820612020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66202020604d756c74697369674465706f73697442617365202b207468726573686f6c64202a204d756c74697369674465706f736974466163746f72602e20202020202d204372656174653a2034342e3731202b20302e303838202a205320202020202d20417070726f76653a2033312e3438202b20302e313136202a20536d617962655f74696d65706f696e744f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e2049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e2043616c6c73206d75737420656163682066756c66696c207468652060497343616c6c61626c65602066696c7465722e202d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e204e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f207573652060617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e20526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f7468657277697365206f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642c206d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e202d20604f2853202b205a202b2043616c6c29602e202d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2e202d2054686520776569676874206f6620746865206063616c6c602e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20202020202d204372656174653a2034362e3535202b20302e303839202a205320c2b57320202020202d20417070726f76653a2033342e3033202b202e313132202a205320c2b57320202020202d20436f6d706c6574653a2034302e3336202b202e323235202a205320c2b57320202020202d2052656164733a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d20202020202d205772697465733a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d202d20506c75732043616c6c205765696768742053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e2043616c6c73206d75737420656163682066756c66696c207468652060497343616c6c61626c65602066696c7465722e202d2042617365207765696768743a20322e38363120c2b573202d20506c75732074686520776569676874206f6620746865206063616c6c602053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e2043616c6c73206d7573742066756c66696c207468652060497343616c6c61626c65602066696c74657220756e6c65737320746865206f726967696e2069732060526f6f74602e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e202d2042617365207765696768743a2031342e3339202b202e393837202a206320c2b573202d20506c7573207468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e202d20506c7573206f6e65206164646974696f6e616c206576656e742e202872657065617420726561642f77726974652920546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c542061732054726169743e3a3a43616c6c3e000000000000000cdc1000090000000205020000000000d0cf12000c000000000000008ad01000080000000000000015dc10003400000000000000001313004cdc100000000000000000005cdc10000100000000000000000000004d756c7469736967734d756c74697369673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e0000001f00000000000000010000003800000064dc1000250000002054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e00000000000000183c110008000000000000003cdd10000200000000000000000000006cdd10001b000000000000000000000081b110000b0000000000000044de10000300000000000000000000008cde1000120000000000000000000000243c11000e000000000000001cdf100003000000000000000000000064df10000600000000000000000000008cb1100013000000000000003cdd100002000000000000000000000094df10000b00000000000000000000002c261100040000000000000087e412002300000000000000bef2120005000000000000002de210001300000060e4100036000000001313000000000096e4100042000000d8e410004800000020e510004500000065e510002d000000001313000000000092e5100046000000001313000000000091c212000b000000d8e510004c00000024e610003300000057e610005a0000000013130000000000b1e61000130000000013130000000000c4e610005400000018e710004b00000063e710003500000098e7100058000000f0e710005200000042e810003e00000080e8100022000000a2e8100051000000f3e81000370000002ae910004500000034c312000c0000000000000084e41200030000000000000087e4120023000000000000004ce4100008000000000000002de21000130000000000000054e410000c000000000000002de210001300000040e2100025000000001313000000000065e2100048000000ade2100042000000efe210004600000035e3100040000000001313000000000075e310002d000000001313000000000091c212000b000000a2e3100020000000c2e3100031000000b8071100160000003ea211000f000000f3e310001a0000000de410001900000026e410002600000034c312000c0000000000000027e21000060000000000000087e4120023000000000000002c261100040000000000000087e412002300000000000000bef2120005000000000000002de210001300000054e1100054000000a8e110000b00000091c212000b000000b3e110005000000003e210002400000034c312000c000000ecdf10005400000040e0100010000000001313000000000050e010002f00000000131300000000007fe010003100000091c212000b000000b0e010003a000000eae010001800000002e110004700000049e110000b0000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e73666572202d2043686561706572207468616e207472616e736665722062656361757365206163636f756e742063616e6e6f74206265206b696c6c65642e202d2042617365205765696768743a2035312e3420c2b573202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374202873656e64657220697320696e206f7665726c617920616c72656164792920233c2f7765696768743e2045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069732020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e736f75726365436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e20202020202d204372656174696e673a2032372e353620c2b57320202020202d204b696c6c696e673a2033352e313120c2b573202d204442205765696768743a203120526561642c203120577269746520746f206077686f606e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e74202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e00000000009fb110000d0000000000000000000000d0ea10000a0000000000000000000000000000000000000000000000000000000000000000131300dcea10000000000000000000ecea10000100000000000000010000000000000039b31200070000000102000000000000d0cf12000c00000000000000f4ea10001700000000000000000000000000000000000000001313000ceb100000000000000000001ceb100006000000000000000100000000000000f8c81100050000000102000000000000d0cf12000c000000000000004ceb10001c000000000000000000000000000000000000000013130068eb1000000000000000000078eb10000200000000000000010000000000000010ca11000e00000000000000000000001eca110008000000000000000000000000000000000000000000000000000000000000000013130088eb1000000000000000000098eb1000030000000000000001000000543a3a42616c616e636500001f00000000000000010000003c00000040ed1000260000004163636f756e74446174613c543a3a42616c616e63653e001f0000000000000001000000470000004fec10001b00000000131300000000006aec100056000000c0ec1000300000000013130000000000f0ec1000500000005665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e1f000000000000000100000036000000d8eb10002e00000006ec1000490000001f00000000000000010000003700000050ca11001f0000000013130000000000b0eb10002800000020546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054484953204d4159204e4556455220424520494e204558495354454e434520414e4420594554204841564520412060746f74616c28292e69735f7a65726f2829602e2049662074686520746f74616c2069732065766572207a65726f2c207468656e2074686520656e747279202a4d5553542a2062652072656d6f7665642e204e4f54453a2054686973206973206f6e6c79207573656420696e20746865206361736520746861742074686973206d6f64756c65206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e00000000000039b110001200000000000000d0ea10000a0000000000000000131300a0ed10000000000000000000b0ed100001000000000000001f000000000000000100000048000000b8ed10003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e000000ec0d130064000000700000002e000000ec0d1300640000008f00000034000000ec0d13006400000068000000340000006d6f646c70792f7574696c6973756261000000002bab10000d000000000000009cef10000100000000000000000000001cab10000f00000000000000a4ef10000100000000000000000000000bab10001100000000000000acef1000010000000000000000000000faaa10001100000000000000b4ef1000010000000000000000000000e8aa10001200000000000000bcef1000010000000000000000000000d3aa10001500000000000000c4ef1000010000000000000000000000c0aa10001300000000000000ccef1000010000000000000000000000b8aa10000800000000000000d4ef1000010000000000000000000000003c11000800000000000000dcef1000010000000000000000000000adaa10000b00000000000000e4ef10000100000000000000000000009faa10000e00000000000000ecef10000100000000000000000000008caa10001300000000000000f4ef100001000000000000000000000082aa10000a00000000000000d0ad1000010000000000000085f210001d00000059f210002c00000031f210002800000006f210002b000000daf110002c00000096f110004400000052f11000440000001af1100038000000cef010004c00000086f01000480000003af010004c000000fcef10003e00000020412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e204120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e204e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e204f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e204d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e205468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e20546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e2054686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e2054686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e2043616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e2043616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e205468726573686f6c6420697320746f6f206c6f7720287a65726f292e0000ec0d130064000000d300000011000000ec0d130064000000d8000000090000000000000073b110000e00000000000000a4f310000100000000000000000000005eb110001500000000000000acf31000010000000000000000000000834e11000800000000000000b4f310000100000000000000000000004bb110001300000000000000bcf3100001000000000000000000000039b110001200000000000000c4f3100001000000000000000000000030b110000900000000000000ccf31000010000000000000000000000a1d911001700000000000000d4f3100001000000000000000000000025b110000b00000000000000dcf31000010000000000000006f5100027000000d4f4100032000000b7f410001d00000099f410001e0000005ef410003b0000003af410002400000007f4100033000000e4f31000230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c756520476f7420616e206f766572666c6f7720616674657220616464696e67204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c7565617474657374636c61696d5f6174746573746d696e745f636c61696d496e76616c6964457468657265756d5369676e61747572655369676e65724861734e6f436c61696d53656e6465724861734e6f436c61696d44657374696e6174696f6e56657374696e67506f74556e646572666c6f77496e76616c696453746174656d656e7450726576616c69646174654174746573747300000000000000f0f510000700000000000000f8f5100003000000000000000000000010f610000100000000000000436c61696d6564000eb512000900000033f610000f0000006b7212000700000018f610001b00000020536f6d656f6e6520636c61696d656420736f6d6520444f54732e457468657265756d416464726573737061726100000000000049f510001800000000000000f0f6100001000000000000000000000061f510001000000000000000f8f6100001000000000000000000000071f51000100000000000000000f7100001000000000000000000000081f51000120000000000000008f7100001000000000000000000000093f510000c0000000000000010f710000200000000000000000000009ff51000100000000000000020f71000010000000000000040f810001c00000021f810001f000000fdf7100024000000adf71000500000004df7100059000000a6f710000700000028f71000250000002041206e65656465642073746174656d656e7420776173206e6f7420696e636c756465642e2054686572652773206e6f7420656e6f75676820696e2074686520706f7420746f20706179206f757420736f6d6520756e76657374656420616d6f756e742e2047656e6572616c6c7920696d706c6965732061206c6f676963206572726f722e205468652064657374696e6174696f6e20697320616c72656164792076657374696e6720616e642063616e6e6f742062652074686520746172676574206f662061206675727468657220636c61696d2e204163636f756e742049442073656e64696e6720747820686173206e6f20636c61696d2e20457468657265756d206164647265737320686173206e6f20636c61696d2e20496e76616c696420457468657265756d207369676e61747572652e636c61696d7319457468657265756d205369676e6564204d6573736167653a0a507265636c61696d7300000000000000133c1100050000000000000038f9100002000000000000000000000068f910002600000000000000000000003ff510000a0000000000000098fa1000040000000000000000000000f8fa100017000000000000000000000033f510000c00000000000000b0fb1000030000000000000000000000f8fb10002900000000000000000000002df51000060000000000000040fd100001000000000000000000000058fd10001400000000000000000000002c2611000400000000000000d0cf12000c00000000000000240611001200000000000000360611000e000000870811002300000000131300000000001801110032000000001313000000000090fe100015000000aa0811004200000095011100200000000013130000000000b50111001b000000ec081100260000000013130000000000120911002a00000000131300000000002eff10000c0000008502110037000000bc021100440000000003110028000000001313000000000026e712000900000028031100400000006803110041000000a9031100110000003c091100420000007e09110047000000630411003d000000a004110028000000c804110029000000f10411003b0000002c05110015000000001313000000000094ff100017000000abff10001d000000c509110017000000deff10000b0000005805110057000000af05110057000000dc0911001e000000f0e812000a0000000000000084e41200030000000000000033f610000f00000000000000bef212000500000000000000a9f812000c000000000000002e08110010000000000000003e0811003400000000000000d50011000900000000000000720811001500000044061100220000000013130000000000614111003200000000131300000000002eff10000c000000660611003d000000a306110034000000d706110043000000001313000000000026e712000900000028031100400000001a0711003d00000057071100280000007f07110039000000001313000000000094ff100017000000b807110016000000ce07110017000000deff10000b000000e50711000f000000f4071100180000000c08110022000000f0e812000a000000000000002c2611000400000000000000d0cf12000c00000000000000240611001200000000000000360611000e00000000000000d5001100090000000000000059c9120007000000de0011003a00000000131300000000001801110032000000001313000000000090fe1000150000004a0111004b00000095011100200000000013130000000000b50111001b000000d00111003100000000131300000000000102110053000000540211003100000000131300000000002eff10000c0000008502110037000000bc0211004400000000031100280000003aff10005a000000001313000000000026e712000900000028031100400000006803110041000000a903110011000000ba03110041000000fb031100520000004d04110016000000630411003d000000a004110028000000c804110029000000f10411003b0000002c05110015000000001313000000000094ff100017000000abff10001d0000004105110017000000deff10000b0000005805110057000000af05110057000000060611001e000000f0e812000a00000000000000d5001100090000000000000059c9120007000000f8fd10003e000000001313000000000036fe10005a000000001313000000000090fe100015000000a5fe10004b000000f0fe10003e00000000131300000000002eff10000c0000003aff10005a000000001313000000000026e712000900000094ff100017000000abff10001d000000c8ff100016000000deff10000b000000e9ff1000620000004b00110062000000ad00110028000000f0e812000a0000002041747465737420746f20612073746174656d656e742c206e656564656420746f2066696e616c697a652074686520636c61696d732070726f636573732e205741524e494e473a20496e73656375726520756e6c65737320796f757220636861696e20696e636c75646573206050726576616c69646174654174746573747360206173206120605369676e6564457874656e73696f6e602e20556e7369676e65642056616c69646174696f6e3a20412063616c6c20746f20617474657374206973206465656d65642076616c6964206966207468652073656e6465722068617320612060507265636c61696d60207265676973746572656420616e642070726f76696465732061206073746174656d656e746020776869636820697320657870656374656420666f7220746865206163636f756e742e20506172616d65746572733a202d206073746174656d656e74603a20546865206964656e74697479206f66207468652073746174656d656e74207768696368206973206265696e6720617474657374656420746f20696e20746865207369676e61747572652e20546f74616c20436f6d706c65786974793a204f283129202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2042617365205765696768743a2039332e3320c2b573204442205765696768743a202d20526561643a20507265636c61696d732c205369676e696e672c20436c61696d732c20546f74616c2c20436c61696d732056657374696e672c2056657374696e672056657374696e672c2042616c616e6365204c6f636b2c204163636f756e74202d2057726974653a2056657374696e672056657374696e672c204163636f756e742c2042616c616e6365204c6f636b2c20546f74616c2c20436c61696d2c20436c61696d732056657374696e672c205369676e696e672c20507265636c61696d732056616c69646174652050726556616c6964617465417474657374733a202b382e36333120c2b57373746174656d656e74204d616b65206120636c61696d20746f20636f6c6c65637420796f757220444f5473206279207369676e696e6720612073746174656d656e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e20412063616c6c20746f2060636c61696d5f61747465737460206973206465656d65642076616c696420696620746865207369676e61747572652070726f7669646564206d61746368657320746865206578706563746564207369676e6564206d657373616765206f663a203e20457468657265756d205369676e6564204d6573736167653a203e2028636f6e666967757265642070726566697820737472696e67292861646472657373292873746174656d656e742920616e6420606164647265737360206d6174636865732074686520606465737460206163636f756e743b20746865206073746174656d656e7460206d757374206d617463682074686174207768696368206973206578706563746564206163636f7264696e6720746f20796f757220707572636861736520617272616e67656d656e742e202d206064657374603a205468652064657374696e6174696f6e206163636f756e7420746f207061796f75742074686520636c61696d2e202d2060657468657265756d5f7369676e6174757265603a20546865207369676e6174757265206f6620616e20657468657265756d207369676e6564206d657373616765202020206d61746368696e672074686520666f726d6174206465736372696265642061626f76652e2054686520776569676874206f6620746869732063616c6c20697320696e76617269616e74206f7665722074686520696e70757420706172616d65746572732e202d204f6e6520606574685f7265636f76657260206f7065726174696f6e20776869636820696e766f6c7665732061206b656363616b206861736820616e6420612020206563647361207265636f7665722e202d20466f75722073746f7261676520726561647320746f20636865636b206966206120636c61696d2065786973747320666f722074686520757365722c20746f202020676574207468652063757272656e7420706f742073697a652c20746f207365652069662074686572652065786973747320612076657374696e67207363686564756c652c20746f206765742074686520202072657175697265642073746174656d656e742e202d20557020746f206f6e652073746f7261676520777269746520666f7220616464696e672061206e65772076657374696e67207363686564756c652e202d204f6e6520606465706f7369745f6372656174696e67602043757272656e63792063616c6c2e202d204f6e652073746f7261676520777269746520746f207570646174652074686520746f74616c2e202d2054776f2073746f726167652072656d6f76616c7320666f722076657374696e6720616e6420636c61696d7320696e666f726d6174696f6e2e202d204f6e65206465706f736974206576656e742e2042617365205765696768743a203237302e3220c2b573202d20526561643a205369676e696e672c20436c61696d732c20546f74616c2c20436c61696d732056657374696e672c2056657374696e672056657374696e672c2042616c616e6365204c6f636b2c204163636f756e74202d2057726974653a2056657374696e672056657374696e672c204163636f756e742c2042616c616e6365204c6f636b2c20546f74616c2c20436c61696d2c20436c61696d732056657374696e672c205369676e696e672056616c696461746520556e7369676e65643a202b3139302e3120c2b573657468657265756d5f7369676e617475726545636473615369676e6174757265204d696e742061206e657720636c61696d20746f20636f6c6c65637420444f54732e202d206077686f603a2054686520457468657265756d206164647265737320616c6c6f77656420746f20636f6c6c656374207468697320636c61696d2e202d206076616c7565603a20546865206e756d626572206f6620444f547320746861742077696c6c20626520636c61696d65642e202d206076657374696e675f7363686564756c65603a20416e206f7074696f6e616c2076657374696e67207363686564756c6520666f7220746865736520444f54732e202d204f6e652073746f72616765206d757461746520746f20696e6372656173652074686520746f74616c20636c61696d7320617661696c61626c652e202d204f6e652073746f7261676520777269746520746f206164642061206e657720636c61696d2e202d20557020746f206f6e652073746f7261676520777269746520746f206164642061206e65772076657374696e67207363686564756c652e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2042617365205765696768743a2031302e343620c2b573202d2052656164733a20546f74616c202d205772697465733a20546f74616c2c20436c61696d73202d204d617962652057726974653a2056657374696e672c2053746174656d656e7476657374696e675f7363686564756c654f7074696f6e3c2842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d626572293e4f7074696f6e3c53746174656d656e744b696e643e204d616b65206120636c61696d20746f20636f6c6c65637420796f757220444f54732e20412063616c6c20746f20636c61696d206973206465656d65642076616c696420696620746865207369676e61747572652070726f7669646564206d617463686573203e2028636f6e666967757265642070726566697820737472696e672928616464726573732920616e6420606164647265737360206d6174636865732074686520606465737460206163636f756e742e202d2054687265652073746f7261676520726561647320746f20636865636b206966206120636c61696d2065786973747320666f722074686520757365722c20746f202020676574207468652063757272656e7420706f742073697a652c20746f207365652069662074686572652065786973747320612076657374696e67207363686564756c652e2042617365205765696768743a203236392e3720c2b5732056616c696461746520556e7369676e65643a202b3138382e3720c2b573000000000000c003130006000000010600000000000033f610000f00000000000000a9f812000c0000000000000000000000000000000000000000131300b40b110000000000000000000013130000000000000000000000000000000000c40b1100050000000000000000000000a9f812000c0000000000000000000000000000000000000000000000000000000000000000131300cc0b110000000000000000000013130000000000000000000100000000000000dfd9110007000000010600000000000033f610000f00000000000000dc0b11002c0000000000000000000000000000000000000000131300080c11000000000000000000180c110004000000000000000000000000000000c603130007000000010600000000000033f610000f00000000000000380c11000d0000000000000000000000000000000000000000131300480c11000000000000000000580c1100010000000000000000000000000000007cf81000090000000106000000000000d0cf12000c0000000000000033f610000f0000000000000000000000000000000000000000131300600c11000000000000000000700c11000100000000000000000000001f000000000000000100000038000000546f74616c0000001f00000000000000010000003c0000002842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d626572291f000000000000000100000038000000f30c11001e000000110d110043000000540d1100390000008d0d11003300000053746174656d656e744b696e640000001f000000000000000100000038000000c30c1100300000001f000000000000000100000038000000780c11004b000000205072652d636c61696d656420457468657265756d206163636f756e74732c20627920746865204163636f756e74204944207468617420746865792061726520636c61696d656420746f2e205468652073746174656d656e74206b696e642074686174206d757374206265207369676e65642c20696620616e792e2056657374696e67207363686564756c6520666f72206120636c61696d2e2046697273742062616c616e63652069732074686520746f74616c20616d6f756e7420746861742073686f756c642062652068656c6420666f722076657374696e672e205365636f6e642062616c616e636520697320686f77206d7563682073686f756c6420626520756e6c6f636b65642070657220626c6f636b2e2054686520626c6f636b206e756d626572206973207768656e207468652076657374696e672073686f756c642073746172742e00000000f80d11000600000000000000fe0d1100050000000000000000131300040e11000000000000000000140e11000100000000000000507265666978265b75385d001f0000000000000001000000490000001c0e11004500000020546865205072656669782074686174206973207573656420696e207369676e656420457468657265756d206d6573736167657320666f722074686973206e6574776f726b656c61626f726174655f6465706c6f795f646174616669785f6465706c6f795f646174617365745f6f6666626f617264696e676269645f72656e65776269646e65775f61756374696f6e41756374696f6e496e50726f67726573734c65617365506572696f64496e506173744e6f74506172614f726967696e506172614e6f744f6e626f617264696e67496e76616c69644f726967696e416c726561647952656769737465726564496e76616c6964436f6465556e7365744465706c6f79446174614e6f6e496e74657273656374696e6752616e67654e6f7443757272656e7441756374696f6e4e6f7441756374696f6e63616e2774207377617020616e20756e6465706c6f7965642070617261636861696e56616c696461746545717569766f636174696f6e5265706f7274417574686f724f6c64556e636c65556e636c65416c7265616479496e636c75646564546f6f48696768556e636c6547656e65736973556e636c65546f6f4d616e79556e636c6573556e636c6573416c7265616479536574496e76616c6964556e636c65506172656e747365745f756e636c65734f6e626f617264696e670000000000401111000e000000000000005011110001000000000000000000000058111100010000000000000000000000601111000e000000000000007011110003000000000000000000000088111100020000000000000000000000981111000d00000000000000a8111100010000000000000000000000b0111100010000000000000000000000b81111000900000000000000c4111100040000000000000000000000e4111100010000000000000000000000ec1111000a00000000000000f8111100040000000000000000000000181211000200000000000000000000002812110008000000000000003012110003000000000000000000000048121100020000000000000000000000581211000a0000000000000050da11000200000000000000000000006412110001000000000000004e65774c65617365506572696f640000d31411000b000000de1411002100000041756374696f6e5374617274656400002e1411000c000000d31411000b000000e31012000b0000003a141100530000008d1411004600000041756374696f6e436c6f7365640000002e1411000c000000ff1311002f000000576f6e4465706c6f79000000eb131100140000008d131100090000002a051300060000006b721200070000009613110055000000576f6e52656e6577616c00002a051300060000008d131100090000006b721200070000006b721200070000000c131100310000003d1311005000000052657365727665640eb51200090000006b721200070000006b72120007000000a412110053000000f712110015000000556e726573657276656400006c121100380000002046756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e2046756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e205365636f6e642069732074686520746f74616c2e20416e206578697374696e672070617261636861696e20776f6e2074686520726967687420746f20636f6e74696e75652e2046697273742062616c616e63652069732074686520657874726120616d6f756e7420726573657665642e205365636f6e642069732074686520746f74616c20616d6f756e742072657365727665642e536c6f7452616e676520536f6d656f6e6520776f6e2074686520726967687420746f206465706c6f7920612070617261636861696e2e2042616c616e636520616d6f756e7420697320646564756374656420666f72206465706f7369742e4e65774269646465723c4163636f756e7449643e20416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e41756374696f6e496e64657820416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f20636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e4c65617365506572696f642041206e6577206c6561736520706572696f6420697320626567696e6e696e672e00617474656d707420746f20646976696465206279207a65726f00000000000000ab0e1100110000000000000088161100010000000000000000000000bc0e1100110000000000000090161100010000000000000000000000cd0e11000d0000000000000098161100010000000000000000000000da0e11001100000000000000a0161100010000000000000000000000eb0e11000d00000000000000a8161100010000000000000000000000f80e11001100000000000000b0161100010000000000000000000000090f11000b00000000000000b8161100010000000000000000000000140f11000f00000000000000c0161100010000000000000000000000230f11001400000000000000c8161100010000000000000000000000370f11001100000000000000d0161100010000000000000000000000480f11000a00000000000000d8161100010000000000000000000000e12912000c00000000000000e0161100010000000000000000000000ed2912001000000000000000e81611000100000000000000c218110025000000a118110021000000731811002e0000004f18110024000000051811004a000000e417110021000000be1711002600000089171100350000005b1711002e00000044171100170000003417110010000000161711001e000000f01611002600000020476976656e20696e697469616c2068656164206461746120697320746f6f206c617267652e20476976656e20636f64652073697a6520697320746f6f206c617267652e204e6f7420616e2061756374696f6e2e204e6f7420612063757272656e742061756374696f6e2e2054686520626964206d757374206f7665726c617020616c6c20696e74657273656374696e672072616e6765732e204465706c6f796d656e74206461746120686173206e6f74206265656e2073657420666f7220746869732070617261636861696e2e2054686520636f6465206d75737420636f72726573706f6e6420746f2074686520686173682e2050617261636861696e20697320616c726561647920726567697374657265642e20546865206f726967696e20666f7220746869732063616c6c206d75737420626520746865206f726967696e2077686f2072656769737465726564207468652070617261636861696e2e205468652070617261636861696e204944206973206e6f74206f6e626f617264696e672e20546865206f726967696e20666f7220746869732063616c6c206d75737420626520612070617261636861696e2e20546865206c6561736520706572696f6420697320696e2074686520706173742e20546869732061756374696f6e20697320616c726561647920696e2070726f67726573732e4465706f736974734f6666626f617264696e6741756374696f6e496e666f57696e6e696e67556e636c657300001f00000008000000040000004a0000006069203c2034603b20606a203c2069603b20606a202b2031203c2034603b20716564000064b11200340000004c0300001d00000060191100290000006561726c69657220726573697a65206d65616e73206974206d757374206265203e3d20693b207165644f6e626f61726451756575655265736572766564416d6f756e747300000000f70f11000a00000000000000d0191100010000000000000000000000e8191100010000000000000000000000091a11000a00000000000000131a11000e000000f0191100190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e000000000000000c1911000600000000000000000000002c1b11003a0000000000000000000000000000000000000000000000000000000000000000131300681b11000000000000000000781b1100010000000000000001000000000000008e0f1100060000000000000000000000d0cf12000c0000000000000000000000000000000000000000000000000000000000000000131300801b11000000000000000000901b110001000000000000000000000000000000981b11000c00000000000000000000000fb91200040000000000000000000000000000000000000000000000000000000000000000131300a41b11000000000000000000b41b11000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e00001f000000000000000100000036000000041c1100070000001f000000000000000100000038000000eb1b110019000000446964536574556e636c65731f000000000000000100000038000000bc1b11002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c657300ac1c110001000000d51c110028000000ac1c110001000000ad1c11002800000070616c6c65745f6772616e6470613a3a65717569766f636174696f6e2f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f6772616e6470612f7372632f65717569766f636174696f6e2e72735b5d204572726f72207375626d697474696e672065717569766f636174696f6e207265706f72743a205d205375626d6974746564204752414e4450412065717569766f636174696f6e207265706f72742e00000000000000a00e11000b00000000000000081e1100020000000000000000000000381e11000500000000000000000000009d0e11000300000000000000601e1100050000000000000000000000d81e1100100000000000000000000000940e11000900000000000000581f1100040000000000000000000000b81f11000f0000000000000000000000850e11000f000000000000003020110001000000000000000000000048201100050000000000000000000000760e11000f0000000000000070201100050000000000000000000000e8201100070000000000000000000000610e1100150000000000000020211100020000000000000000000000502111000c0000000000000000000000382b11000800000000000000741e12001700000000000000402b1100120000000000000033291100190000002c2a1100160000000013130000000000422a110055000000972a11004a000000e12a11005700000000000000652511000300000000000000682511000e00000000000000072911000d00000000000000142911001500000000000000292911000a000000000000003329110019000000000000004c2911000900000000000000332911001900000000000000552911000600000000000000c3f21200150000005b29110053000000ae2911000b00000000131300000000008426110057000000db261100500000000013130000000000b9291100560000000f2a11001d0000002b271100540000007f2711001b0000009a27110053000000ed271100430000003028110051000000ed271100430000008128110053000000d42811003300000000000000072911000d00000000000000142911001500000000000000292911000a000000000000003329110019000000000000004c2911000900000000000000332911001900000000000000552911000600000000000000c3f212001500000030261100540000000013130000000000ba2511002a00000000131300000000008426110057000000db2611005000000000131300000000002b271100540000007f2711001b0000009a27110053000000ed271100430000003028110051000000ed271100430000008128110053000000d428110033000000000000002c261100040000000000000087e412002300000088251100320000000013130000000000ba2511002a0000000013130000000000e42511004800000000000000652511000300000000000000682511000e00000000000000f223110007000000000000007e5a12000f000000000000007625110009000000000000009ed0120007000000000000007f2511000900000000000000c2c4120003000000000000005b5e120011000000000000006c5e120008000000f92311004b00000000131300000000004424110032000000762411002c000000a224110040000000e224110047000000292511003c00000000000000f223110007000000000000007e5a12000f0000000000000055c9120004000000000000004d5e12000e000000b02111001d0000000013130000000000cd21110053000000202211003100000000131300000000005122110058000000a922110051000000fa221100590000000013130000000000532311001b0000006e2311003f000000ad23110045000000204e6f74652061206e65772070617261636861696e277320636f64652e2054686973206d7573742062652063616c6c656420616674657220606669785f6465706c6f795f646174616020616e642060636f646560206d7573742062652074686520707265696d616765206f66207468652060636f64655f68617368602070617373656420746865726520666f72207468652073616d652060706172615f6964602e2054686973206d61792062652063616c6c6564206265666f7265206f722061667465722074686520626567696e6e696e67206f66207468652070617261636861696e2773206669727374206c6561736520706572696f642e2049662063616c6c6564206265666f7265207468656e207468652070617261636861696e2077696c6c206265636f6d65206163746976652061742074686520666972737420626c6f636b206f6620697473207374617274696e67206c6561736520706572696f642e2049662061667465722c207468656e2069742077696c6c206265636f6d652061637469766520696d6d6564696174656c7920616674657220746869732063616c6c2e202d20605f6f726967696e6020697320697272656c6576616e742e202d2060706172615f696460206973207468652070617261636861696e2049442077686f736520636f64652077696c6c20626520656c61626f72617465642e202d2060636f6465602069732074686520707265696d616765206f662074686520726567697374657265642060636f64655f6861736860206f662060706172615f6964602e706172615f69642053657420746865206465706c6f7920696e666f726d6174696f6e20666f722061207375636365737366756c2062696420746f206465706c6f792061206e65772070617261636861696e2e202d20606f726967696e60206d75737420626520746865207375636365737366756c20626964646572206163636f756e742e202d20607375626020697320746865207375622d626964646572204944206f6620746865206269646465722e202d2060706172615f696460206973207468652070617261636861696e20494420616c6c6f7474656420746f207468652077696e6e696e67206269646465722e202d2060636f64655f6861736860206973207468652068617368206f66207468652070617261636861696e2773205761736d2076616c69646174696f6e2066756e6374696f6e2e202d2060696e697469616c5f686561645f6461746160206973207468652070617261636861696e277320696e697469616c206865616420646174612e737562436f6d706163743c53756249643e636f64655f68617368636f64655f73697a652053657420746865206f66662d626f617264696e6720696e666f726d6174696f6e20666f7220612070617261636861696e2e20546865206f726967696e202a6d7573742a20626520612070617261636861696e206163636f756e742e202d20606465737460206973207468652064657374696e6174696f6e206163636f756e7420746f2072656365697665207468652070617261636861696e2773206465706f7369742e64657374204d616b652061206e6577206269642066726f6d20612070617261636861696e206163636f756e7420666f722072656e6577696e67207468617420287072652d6578697374696e67292070617261636861696e2e204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c206163746976652062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e742076616c7565206f66206041756374696f6e436f756e746572602e202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e61756374696f6e5f696e646578436f6d706163743c41756374696f6e496e6465783e66697273745f736c6f74436f6d706163743c4c65617365506572696f644f663c543e3e6c6173745f736c6f74616d6f756e74204d616b652061206e6577206269642066726f6d20616e206163636f756e742028696e636c7564696e6720612070617261636861696e206163636f756e742920666f72206465706c6f79696e672061206e65772070617261636861696e2e202d20607375626020697320746865207375622d6269646465722049442c20616c6c6f77696e6720666f72206d756c7469706c6520636f6d706574696e67206269647320746f206265206d6164652062792028616e642066756e64656420627929207468652073616d65206163636f756e742e204372656174652061206e65772061756374696f6e2e20546869732063616e206f6e6c792068617070656e207768656e2074686572652069736e277420616c726561647920616e2061756374696f6e20696e2070726f677265737320616e64206d6179206f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e20416363657074732074686520606475726174696f6e60206f6620746869732061756374696f6e20616e642074686520606c656173655f706572696f645f696e64657860206f662074686520696e697469616c206c6561736520706572696f64206f662074686520666f757220746861742061726520746f2062652061756374696f6e65642e6475726174696f6e6c656173655f706572696f645f696e646578000000000000590113000e00000000000000000000002e1411000c00000000000000000000000000000000000000000000000000000000000000001313006c2e110000000000000000007c2e110001000000000000000100000000000000670113000a00000000000000000000002c6312000b0000000000000000000000000000000000000000000000000000000000000000131300f82f11000000000000000000842e110002000000000000000100000000000000e71811000800000001050000000000002a0513000600000000000000942e1100110000000000000000000000000000000000000000131300a82e11000000000000000000b82e11000d000000000000000100000000000000fa1811000b0000000000000000000000202f1100220000000000000000000000000000000000000000000000000000000000000000131300442f11000000000000000000542f1100050000000000000000000000000000000519110007000000010500000000000090d012000e000000000000007c2f11000e00000000000000000000000000000000000000001313008c2f110000000000000000009c2f110003000000000000000000000000000000951911000f0000000105000000000000b42f11001400000000000000a9f812000c0000000000000000000000000000000000000000131300c82f11000000000000000000d82f110002000000000000000000000000000000891911000c0000000105000000000000e82f110010000000000000002c6312000b0000000000000000000000000000000000000000131300f82f110000000000000000000830110002000000000000000100000000000000011011000a00000001050000000000002a0513000600000000000000183011003c00000000000000000000000000000000000000001313005430110000000000000000006430110004000000000000000000000000000000ef1811000b00000001050000000000002a0513000600000000000000d0cf12000c0000000000000000000000000000000000000000131300843011000000000000000000943011000200000000000000010000001f000000000000000100000034000000db381100360000003e38110053000000913811004a0000005665633c42616c616e63654f663c543e3e0000001f0000000000000001000000360000007335110057000000ca351100140000000013130000000000de3511005900000037361100540000008b3611002c0000000013130000000000b7361100580000000f3711002d00000000131300000000003c371100540000009037110057000000e737110057000000284c65617365506572696f644f663c543e2c20543a3a426c6f636b4e756d6265722900001f00000000000000010000004b000000393411003e00000000131300000000007734110051000000c8341100540000001c3511005700000057696e6e696e67446174613c543e00001f00000000000000010000004c00000047331100570000009e33110054000000f2331100470000004269646465723c543a3a4163636f756e7449643e1f000000000000000100000038000000ed3211004c000000393311000e0000004c65617365506572696f644f663c543e1f0000000000000001000000360000005832110059000000b13211003c000000284c65617365506572696f644f663c543e2c20496e636f6d696e6750617261636861696e3c543a3a4163636f756e7449642c20543a3a486173683e291f00000000000000010000004d0000004b311100530000009e31110049000000e7311100560000003d3211001b0000001f00000000000000010000004e000000a430110059000000fd3011004e000000204f66662d626f617264696e67206163636f756e743b2063757272656e63792068656c64206f6e206465706f73697420666f72207468652070617261636861696e206765747320706c616365642068657265206966207468652070617261636861696e2067657473206f66662d626f61726465643b20692e652e20697473206c6561736520706572696f6420697320757020616e642069742069736e27742072656e657765642e205468652061637475616c206f6e2d626f617264696e6720696e666f726d6174696f6e2e204f6e6c7920657869737473207768656e206f6e65206f662074686520666f6c6c6f77696e6720697320747275653a202d204974206973206265666f726520746865206c6561736520706572696f642074686174207468652070617261636861696e2073686f756c64206265206f6e2d626f61726465642e202d205468652066756c6c206f6e2d626f617264696e6720696e666f726d6174696f6e20686173206e6f7420796574206265656e2070726f766964656420616e64207468652070617261636861696e206973206e6f74207965742064756520746f206265206f66662d626f61726465642e2054686520736574206f662050617261204944732074686174206861766520776f6e20616e64206e65656420746f206265206f6e2d626f617264656420617420616e207570636f6d696e67206c656173652d706572696f642e205468697320697320636c6561726564206f7574206f6e2074686520666972737420626c6f636b206f6620746865206c6561736520706572696f642e20416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e6720287375622d2972616e6765732e205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e676573206174206561636820626c6f636b20696e207468652066696e616c20456e64696e6720506572696f64206f66207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f2074686520456e64696e6720506572696f642e2054686520666972737420626c6f636b206f662074686520656e64696e6720706572696f6420697320303b20746865206c6173742069732060456e64696e67506572696f64202d2031602e20496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e20546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f757220636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468652061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e20566172696f757320616d6f756e7473206f6e206465706f73697420666f7220656163682070617261636861696e2e20416e20656e74727920696e20604d616e616765644964736020696d706c6965732061206e6f6e2d2064656661756c7420656e74727920686572652e205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620617420616e792074696d6520697320746865206d6178696d756d206974656d20696e2074686973206c6973742e20546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572206578697374656429206173206661722061732074686973206d6f64756c6520697320636f6e6365726e65642e20496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e2069742077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f7265207a65726f657320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e204f726465726564206c697374206f6620616c6c2060506172614964602076616c756573207468617420617265206d616e616765642062792074686973206d6f64756c652e205468697320696e636c7564657320636861696e73207468617420617265206e6f7420796574206465706c6f7965642028627574206861766520776f6e20616e2061756374696f6e20696e2074686520667574757265292e20546865206e756d626572206f662061756374696f6e7320746861742068617665206265656e207374617274656420736f206661722e00000000131300000000001de611000200000000000000e50f11001200000000000000e8391100010000000000000000000000d50f11001000000000000000f0391100010000000000000000000000c80f11000d00000000000000f8391100010000000000000000000000bc0f11000c00000000000000003a1100010000000000000000000000b00f11000c00000000000000083a11000100000000000000000000009c0f11001400000000000000103a1100010000000000000000000000940f11000800000000000000183a11000100000000000000d53a110023000000b43a110021000000a33a1100110000008d3a1100160000006d3a1100200000004e3a11001f000000203a11002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e61727261792068617320534c4f545f52414e47455f434f554e54206974656d733b20696e646578206e65766572207265616368657320746861742076616c75653b207165640000001f00000000000000010000004f00000064b1120034000000fd02000036000000703b110055000000480600001b0000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962616c6c6f632f636f6c6c656374696f6e732f62747265652f6d61702e727354696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b4e6f745472616e73666572496e5573654e6f744f776e65724e6f7441737369676e6564636c61696d7472616e7366657266726565666f7263655f7472616e736665720000000000008c3c11000d000000000000009c3c1100020000000000000000000000ac3c1100010000000000000000000000b43c11000a00000000000000c03c1100010000000000000000000000c83c11000100000000000000496e64657841737369676e65640000000eb5120009000000003d11000c0000000c3d11001e000000496e64657846726565640000003d11000c000000d03c1100300000002041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e4163636f756e74496e6465782041206163636f756e7420696e646578207761732061737369676e65642e4e6f77736574500000001000000004000000510000004765747320616e64206465636f6465732074696d657374616d7020696e686572656e742064617461783d11005d000000e90000001f0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f74696d657374616d702f7372632f6c69622e727300000000000000133c11000500000000000000883e1100010000000000000000000000a03e1100100000000000000000000000183c11000800000000000000203f1100020000000000000000000000503f1100100000000000000000000000203c11000400000000000000883e1100010000000000000000000000d03f1100100000000000000000000000243c11000e00000000000000203f1100020000000000000000000000504011001000000000000000000000008b4612000500000000000000cb4411000f000000da44110027000000001313000000000001451100380000000013130000000000948c1200340000000013130000000000394511003d00000000131300000000001542110025000000001313000000000091c212000b00000010f111000a0000003a42110027000000c743110019000000804211000d00000034c312000c0000000000000025a912000300000000000000d0cf12000c000000000000008b4612000500000000000000cb4411000f000000e043110058000000384411002f0000000013130000000000948c1200340000000013130000000000674411004a000000bd4111005800000000131300000000001542110025000000001313000000000091c212000b00000010f111000a0000003a42110027000000b14411001a000000804211000d00000034c312000c0000008d421100260000000013130000000000b34211005800000000131300000000000b43110056000000001313000000000061431100440000000013130000000000a543110022000000001313000000000091c212000b00000010f111000a0000003a42110027000000c743110019000000804211000d00000034c312000c000000d040110056000000264111003b000000001313000000000061411100320000000013130000000000934111002a000000bd4111005800000000131300000000001542110025000000001313000000000091c212000b00000010f111000a0000003a42110027000000614211001f000000804211000d00000034c312000c00000020466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e202d204f6e65206576656e742e204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e543a3a4163636f756e74496e6465782041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e000000000000d0451100080000000102000000000000cb4411000f00000000000000d84511001c0000000000000000000000000000000000000000131300f44511000000000000000000044611000100000000000000000000004163636f756e747328543a3a4163636f756e7449642c2042616c616e63654f663c543e291f0000000000000001000000380000000c4611002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e0000000000002d3d110003000000000000005c46110001000000000000000000000074461100120000000000000000000000ca4911000300000000000000cd49110012000000044711001600000000131300000000001a4711005600000070471100360000000013130000000000a647110051000000f74711001100000000131300000000000848110036000000001313000000000091c212000b0000003e481100340000007248110068000000da4811002d000000074911002a0000003149110060000000914911003900000034c312000c00000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e202d20604f285429602077686572652060546020636f6d706c6578697479206f6620606f6e5f74696d657374616d705f73657460202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f7365746020604f285429602e202d2042656e63686d61726b3a20372e36373820286d696e207371756172657320616e616c79736973292020202d204e4f54453a20546869732062656e63686d61726b2077617320646f6e6520666f7220612072756e74696d65207769746820696e7369676e69666963616e7420606f6e5f74696d657374616d705f736574602068616e646c6572732e20202020204e65772062656e63686d61726b696e67206973206e6565646564207768656e20616464696e67206e65772068616e646c6572732e6e6f77436f6d706163743c543a3a4d6f6d656e743e00000000002a3d1100030000000000000000000000904a11000900000000000000000000000000000000000000000000000000000000000000001313009c4a11000000000000000000ac4a1100010000000000000001000000000000002c0213000900000000000000000000000fb91200040000000000000000000000000000000000000000000000000000000000000000131300b44a11000000000000000000c44a1100010000000000000001000000543a3a4d6f6d656e740000001f000000000000000100000042000000f94a1100240000001f000000000000000100000038000000cc4a11002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000584b11000d00000000000000904a1100090000000000000000131300684b11000000000000000000784b110004000000000000004d696e696d756d506572696f640000001f000000000000000100000052000000984b11005a000000f24b11005a0000004c4c110059000000a54c11001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e0000000c4d110049000000920200001a0000000c4d110049000000a3010000270000000100000001000000000000000000000000000000010000000c4d1100490000008e0200001d0000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f736c6963652f736f72742e72730000000c4d110049000000a1000000300000000c4d110049000000a40000003000000054696d657374616d7020746f6f2066617220696e2066757475726520746f2061636365707454696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b54696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b734d6178566f7465735265616368656457726f6e675570706572426f756e644e6f6e73656e7365496e7374616e744e6f74416c6c6f776564566f74657345786973744e6f7444656c65676174696e67496e73756666696369656e7446756e6473556e646572666c6f774f766572666c6f77416c726561647944656c65676174696e674e6f5065726d697373696f6e4e6f74566f7465724e6f7441637469766557726f6e674f70656e4e6f744f70656e4e6f74457870697265644e6f744c6f636b65644e6f6e6557616974696e67507265696d616765496e76616c69645265666572656e64756d496e76616c6964507265696d6167654d697373696e67496d6d696e656e744e6f74496d6d696e656e744475706c6963617465507265696d6167654e6f7444656c65676174656457726f6e6750726f7879416c726561647950726f7879416c72656164795665746f65644e6f50726f706f73616c496e76616c6964486173684e6f7453696d706c654d616a6f7269747950726f706f73616c426c61636b6c6973746564416c726561647943616e63656c6564426164496e6465784e6f7450726f787956616c75654c6f7744656d6f63726163794465706f7369744f665265666572656e64756d496e666f4f6600000000002c501100080000000000000000000000345011000f0000000000000000000000000000000000000000000000445011000c0000000000000000000000706f6c6b61646f747061726974792d706f6c6b61646f7400df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d03000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a8010000006772616e62616265696d6f6e70617261617564690000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e0150617920444f547320746f2074686520506f6c6b61646f74206163636f756e743a0000000000000033b312000600000000000000530000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000550000000000000000000000000000005600000000000000000000000000000057000000000000000000000000000000081112001800000000000000580000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000005900000000000000000000000000000059000000000000000000000000000000e013120009000000000000005a000000000000000000000000000000000000000000000000000000000000005b0000000000000000000000000000005c0000000000000000000000000000005900000000000000000000000000000059000000000000000000000000000000485f110004000000000000005d0000000000000000000000000000000000000000000000000000000000000059000000000000000000000002000000000000000000000000000000000000005e000000000000000000000000000000590000000000000000000000000000004c5f110009000000000000005f0000000000000000000000000000000000000000000000000000000000000060000000000000000000000002000000000000000000000000000000000000006100000000000000000000000000000059000000000000000000000000000000555f110007000000000000006200000000000000000000000000000000000000000000000000000000000000630000000000000000000000000000006400000000000000000000000000000059000000000000000000000000000000590000000000000000000000000000005c5f110008000000000000006500000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000006700000000000000000000000000000068000000000000000000000000000000690000000000000000000000000000004d25120012000000000000006a0000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000006b00000000000000000000000000000059000000000000000000000000000000645f11000a000000000000006c000000000000000000000000000000000000000000000000000000000000006d00000000000000000000000200000000000000000000000000000000000000590000000000000000000000000000006e0000000000000000000000000000006e5f110007000000000000006f0000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000710000000000000000000000000000007200000000000000000000000000000073000000000000000000000000000000755f110008000000000000007400000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000007500000000000000000000000000000059000000000000000000000000000000590000000000000000000000000000007d5f11000a00000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000005900000000000000000000000000000059000000000000000000000000000000316e12000700000000000000760000000000000000000000000000000000000000000000000000000000000077000000000000000000000000000000780000000000000000000000000000005900000000000000000000000000000079000000000000000000000000000000ee1012000f000000000000007a000000000000000000000000000000000000000000000000000000000000007b000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007d000000000000000000000000000000875f110007000000000000007e000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000800000000000000000000000000000005900000000000000000000000000000081000000000000000000000000000000c6db110008000000000000008200000000000000000000000000000000000000000000000000000000000000830000000000000000000000000000008400000000000000000000000000000059000000000000000000000000000000850000000000000000000000000000008e5f11001200000002000000000000000000000000000000000000000000000000000000000000000000000059000000000000000000000002000000000000000000000000000000000000005900000000000000000000000000000059000000000000000000000000000000c94f1100090000000000000086000000000000000000000000000000000000000000000000000000000000008700000000000000000000000000000088000000000000000000000000000000890000000000000000000000000000008a000000000000000000000000000000a05f110007000000000000008b000000000000000000000000000000000000000000000000000000000000008c0000000000000000000000000000008d000000000000000000000000000000590000000000000000000000000000008e000000000000000000000000000000a75f110012000000000000008f000000000000000000000000000000000000000000000000000000000000008c0000000000000000000000000000008d000000000000000000000000000000590000000000000000000000000000008e000000000000000000000000000000b95f11001100000000000000900000000000000000000000000000000000000000000000000000000000000091000000000000000000000000000000920000000000000000000000000000009300000000000000000000000000000094000000000000000000000000000000ca5f11001300000000000000950000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000970000000000000000000000000000005900000000000000000000000000000059000000000000000000000000000000176f120008000000000000009800000000000000000000000000000000000000000000000000000000000000990000000000000000000000000000009a0000000000000000000000000000009b0000000000000000000000000000009c000000000000000000000000000000cd0313000a000000000000009d000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000200000000000000000000000000000000000000590000000000000000000000000000009f000000000000000000000000000000710113000c00000000000000a000000000000000000000000000000000000000000000000000000000000000a10000000000000000000000020000000000000000000000000000000000000059000000000000000000000000000000a2000000000000000000000000000000540113000500000000000000a300000000000000000000000000000000000000000000000000000000000000a4000000000000000000000000000000a500000000000000000000000000000059000000000000000000000000000000a6000000000000000000000000000000d70313000900000000000000a700000000000000000000000000000000000000000000000000000000000000a8000000000000000000000000000000a900000000000000000000000000000059000000000000000000000000000000aa000000000000000000000000000000c00313000600000000000000ab00000000000000000000000000000000000000000000000000000000000000ac000000000000000000000000000000ad000000000000000000000000000000ae000000000000000000000000000000af000000000000000000000000000000dfd911000700000000000000b000000000000000000000000000000000000000000000000000000000000000b1000000000000000000000000000000b2000000000000000000000000000000b3000000000000000000000000000000b4000000000000000000000000000000dd5f11000700000000000000b500000000000000000000000000000000000000000000000000000000000000b6000000000000000000000000000000b700000000000000000000000000000059000000000000000000000000000000b800000000000000000000000000000008ed11000400000000000000b900000000000000000000000000000000000000000000000000000000000000ba000000000000000000000000000000bb00000000000000000000000000000059000000000000000000000000000000bc00000000000000000000004261626554696d657374616d70496e646963657342616c616e636573417574686f72736869705374616b696e674f6666656e636573486973746f726963616c4772616e647061417574686f72697479446973636f76657279436f756e63696c546563686e6963616c436f6d6d6974746565456c656374696f6e7350687261676d656e546563686e6963616c4d656d626572736869705574696c69747900000000c14f11000800000000000000286411000100000000000000000000004e2b12000f0000000000000030641100010000000000000000000000b94f1100080000000000000038641100010000000000000000000000b14f1100080000000000000040641100010000000000000000000000a24f11000f00000000000000486411000100000000000000000000005d2b12001100000000000000506411000100000000000000000000008f4f11001300000000000000586411000100000000000000000000007e4f1100110000000000000060641100010000000000000000000000734f11000b0000000000000068641100010000000000000000000000694f11000a00000000000000706411000100000000000000000000005c4f11000d0000000000000078641100010000000000000000000000504f11000c0000000000000080641100010000000000000000000000464f11000a00000000000000886411000100000000000000000000003a4f11000c0000000000000090641100010000000000000000000000294f11001100000000000000986411000100000000000000000000001e4f11000b00000000000000a06411000100000000000000000000001d2b12000800000000000000a8641100010000000000000000000000164f11000800000000000000b0641100010000000000000000000000074f11000f00000000000000b8641100010000000000000000000000f64e11001100000000000000c0641100010000000000000000000000e74e11000f00000000000000c8641100010000000000000000000000dc4e11000b00000000000000d0641100010000000000000000000000d34e11000900000000000000d8641100010000000000000000000000c94e11000a00000000000000e0641100010000000000000000000000c24e11000700000000000000e8641100010000000000000000000000b94e11000900000000000000f0641100010000000000000000000000b04e11000900000000000000f8641100010000000000000000000000a84e11000800000000000000006511000100000000000000000000009c4e11000c00000000000000086511000100000000000000000000008b4e1100110000000000000010651100010000000000000000000000834e11000800000000000000186511000100000000000000000000007a4e1100090000000000000020651100010000000000000000000000694e11001100000000000000286511000100000000000000000000005c4e11000d0000000000000030651100010000000000000000000000524e11000a0000000000000038651100020000000000000000000000414e1100110000000000000048651100010000000000000000000000394e11000800000000000000506511000100000000000000000000002a4e11000f00000000000000586511000100000000000000000000001b4e11000f00000000000000606511000100000000000000bf6a11000e000000a76a1100180000009b6a11000c0000008d6a11000e000000676a110026000000516a110016000000366a11001b0000000b6a11002b000000fe6911000d000000e969110015000000c269110027000000b269110010000000a66911000c000000986911000e0000008169110017000000746911000d0000006a6911000a00000061691100090000004e691100130000002c691100220000001b691100110000000669110015000000dd68110029000000a16811003c000000626811003f000000146811004e000000d0671100440000009e671100320000006b6711003300000048671100230000001f67110029000000f56611002a000000b5661100400000008c66110029000000fb65110056000000516611003b000000c4651100370000009e6511002600000089651100150000006865110021000000204d6178696d756d206e756d626572206f6620766f74657320726561636865642e20496e76616c696420757070657220626f756e642e2044656c65676174696f6e20746f206f6e6573656c66206d616b6573206e6f2073656e73652e2054686520696e7374616e74207265666572656e64756d206f726967696e2069732063757272656e746c7920646973616c6c6f7765642e20546865206163636f756e742063757272656e746c792068617320766f74657320617474616368656420746f20697420616e6420746865206f7065726174696f6e2063616e6e6f74207375636365656420756e74696c207468657365206172652072656d6f7665642c20656974686572207468726f7567682060756e766f746560206f722060726561705f766f7465602e20546865206163636f756e74206973206e6f742063757272656e746c792064656c65676174696e672e20546f6f206869676820612062616c616e6365207761732070726f7669646564207468617420746865206163636f756e742063616e6e6f74206166666f72642e20416e20756e657870656374656420696e746567657220756e646572666c6f77206f636375727265642e20416e20756e657870656374656420696e7465676572206f766572666c6f77206f636375727265642e20546865206163636f756e7420697320616c72656164792064656c65676174696e672e20546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e2e2054686520676976656e206163636f756e7420646964206e6f7420766f7465206f6e20746865207265666572656e64756d2e20412070726f78792d64652d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206e6f74206163746976652e20412070726f78792d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206f70656e20746f20616e6f74686572206163636f756e742e20412070726f78792d70616972696e672077617320617474656d7074656420746f20616e206163636f756e74207468617420776173206e6f74206f70656e2e20546865206c6f636b206f6e20746865206163636f756e7420746f20626520756e6c6f636b656420686173206e6f742079657420657870697265642e2054686520746172676574206163636f756e7420646f6573206e6f7420686176652061206c6f636b2e204e6f2070726f706f73616c732077616974696e6720496e76616c696420707265696d61676520566f746520676976656e20666f7220696e76616c6964207265666572656e64756d20507265696d616765206e6f7420666f756e6420496d6d696e656e7420546f6f206561726c79204e6f7420696d6d696e656e7420507265696d61676520616c7265616479206e6f746564204e6f742064656c6567617465642057726f6e672070726f787920416c726561647920612070726f7879204964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365204e6f2065787465726e616c2070726f706f73616c20496e76616c69642068617368204e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974792050726f706f73616c207374696c6c20626c61636b6c69737465642050726f706f73616c20616c7265616479206d6164652043616e6e6f742063616e63656c207468652073616d652070726f706f73616c20747769636520556e6b6e6f776e20696e646578204e6f7420612070726f78792050726f706f73616c20646f6573206e6f742065786973742056616c756520746f6f206c6f7700000000000000906c11000f0000000000000090d012000e0000000000000000131300a06c11000000000000000000b06c1100050000000000000000000000d86c11000c0000000000000090d012000e0000000000000000131300f86c11000000000000000000e46c1100010000000000000000000000ec6c11000c0000000000000090d012000e0000000000000000131300f86c11000000000000000000086d1100010000000000000000000000106d11000e00000000000000a9f812000c0000000000000000131300206d11000000000000000000306d1100010000000000000000000000386d1100150000000000000090d012000e0000000000000000131300506d11000000000000000000606d1100010000000000000000000000686d11000d0000000000000090d012000e0000000000000000131300786d11000000000000000000886d1100010000000000000000000000906d11001300000000000000a9f812000c0000000000000000131300a46d11000000000000000000b46d1100010000000000000000000000bc6d11000800000000000000c2c41200030000000000000000131300c46d11000000000000000000d46d11000100000000000000456e6163746d656e74506572696f64001f0000000000000001000000bd000000996f11005c0000000013130000000000f56f11004c000000417011005a0000009b701100270000004c61756e6368506572696f64606f110039000000566f74696e67506572696f641f0000000000000001000000be000000326f11002e0000004d696e696d756d4465706f73697400001f0000000000000001000000bf000000e56e11004d00000046617374547261636b566f74696e67506572696f640000001f0000000000000001000000c0000000aa6e11003b000000436f6f6c6f6666506572696f640000001f0000000000000001000000c1000000526e110058000000507265696d616765427974654465706f736974001f0000000000000001000000c2000000086e11004a0000004d6178566f7465731f0000000000000001000000c3000000dc6d11002c00000020546865206d6178696d756d206e756d626572206f6620766f74657320666f7220616e206163636f756e742e2054686520616d6f756e74206f662062616c616e63652074686174206d757374206265206465706f7369746564207065722062797465206f6620707265696d6167652073746f7265642e20506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e0000000000000c7112000800000000000000b0731100020000000000000000000000c0731100010000000000000000000000c87311000600000000000000d0731100030000000000000000000000e8731100010000000000000000000000f07311000e00000000000000001313000000000000000000000000000074110001000000000000000000000008741100070000000000000010741100020000000000000000000000207411000100000000000000000000002874110006000000000000003074110001000000000000000000000038741100010000000000000000000000407411000900000000000000307411000100000000000000000000004c7411000100000000000000000000005474110009000000000000003074110001000000000000000000000060741100010000000000000000000000542d1200080000000000000068741100020000000000000000000000787411000100000000000000000000008074110009000000000000008c7411000200000000000000000000009c741100010000000000000000000000a47411000b00000000000000b4b41200010000000000000000000000b0741100010000000000000000000000b87411000600000000000000c0741100030000000000000000000000d8741100010000000000000000000000e07411000d00000000000000ec711200030000000000000000000000f0741100010000000000000000000000f87411000c00000000000000ec71120003000000000000000000000004751100010000000000000000000000e74e11000f000000000000000c7511000200000000000000000000001c751100010000000000000000000000074f11000f000000000000000c751100020000000000000000000000247511000100000000000000000000002c7511000e000000000000003c7511000400000000000000000000005c751100010000000000000000000000647511000800000000000000b4b412000100000000000000000000006c7511000100000000000000b8781100090000006b72120007000000cf781100300000005461626c65640000b8781100090000006b72120007000000c17811000e000000817811003700000045787465726e616c5461626c656400005b7811002600000053746172746564007c7611000f0000004e7811000d000000367811001800000050617373656400007c7611000f0000000a7811002c0000004e6f74506173736564000000de7711002c00000043616e63656c6c6564000000bd771100210000007c7611000f0000000fb9120004000000a07711001d00000044656c6567617465640000000eb51200090000000eb51200090000006877110038000000556e64656c656761746564002e7711003a0000005665746f656400000eb51200090000006772120004000000e31012000b0000000877110026000000507265696d6167654e6f746564000000d076110038000000507265696d616765557365648b7611004500000067721200040000007c7611000f0000003976110043000000f675110043000000507265696d616765526561706564000067721200040000000eb51200090000006b721200070000000eb51200090000009f75110057000000556e6c6f636b6564747511002b00000020416e206163636f756e7420686173206265656e20756e6c6f636b6564207375636365737366756c6c792e2041207265676973746572656420707265696d616765207761732072656d6f76656420616e6420746865206465706f73697420636f6c6c6563746564206279207468652072656170657220286c617374206974656d292e20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d61676520776173206d697373696e672e20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d6167652077617320696e76616c69642e5265666572656e64756d496e64657820412070726f706f73616c20707265696d616765207761732072656d6f76656420616e6420757365642028746865206465706f736974207761732072657475726e6564292e20412070726f706f73616c277320707265696d61676520776173206e6f7465642c20616e6420746865206465706f7369742074616b656e2e20416e2065787465726e616c2070726f706f73616c20686173206265656e207665746f65642e20416e206163636f756e74206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e20416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e20412070726f706f73616c20686173206265656e20656e61637465642e2041207265666572656e64756d20686173206265656e2063616e63656c6c65642e20412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e20412070726f706f73616c20686173206265656e20617070726f766564206279207265666572656e64756d2e2041207265666572656e64756d2068617320626567756e2e566f74655468726573686f6c6420416e2065787465726e616c2070726f706f73616c20686173206265656e207461626c65642e2041207075626c69632070726f706f73616c20686173206265656e207461626c656420666f72207265666572656e64756d20766f74652e50726f70496e6465785665633c4163636f756e7449643e2041206d6f74696f6e20686173206265656e2070726f706f7365642062792061207075626c6963206163636f756e742e0000000000802b12000700000000000000547e1100020000000000000000000000847e11001100000000000000000000000c7f11000600000000000000147f1100020000000000000000000000447f11001000000000000000000000009db612000400000000000000c47f1100020000000000000000000000f47f1100120000000000000000000000848011000a00000000000000c47f11000200000000000000000000009080110012000000000000000000000020811100100000000000000030811100010000000000000000000000488111000e0000000000000000000000b88111001000000000000000c8811100010000000000000000000000e08111000e0000000000000000000000508211001900000000000000c88111000100000000000000000000006c8211000f0000000000000000000000e48211001800000000000000c8811100010000000000000000000000fc8211000f0000000000000000000000748311000a0000000000000080831100030000000000000000000000c8831100140000000000000000000000688411000d00000000000000c8811100010000000000000000000000788411000f0000000000000000000000f08411001100000000000000048511000100000000000000000000001c8511000b0000000000000000000000748511000d00000000000000848511000100000000000000000000009c8511000c0000000000000000000000fc8511000e000000000000000c861100010000000000000000000000248611000e0000000000000000000000948611000b0000000000000000131300000000000000000000000000a08611000c00000000000000000000000087110010000000000000000c8611000100000000000000000000001087110010000000000000000000000090871100080000000000000098871100030000000000000000000000e08711001b0000000000000000000000b88811000a0000000000000000131300000000000000000000000000c48811001300000000000000000000005c89110016000000000000000013130000000000000000000000000074891100090000000000000000000000bc8911000d00000000000000cc891100010000000000000000000000e48911000c0000000000000000000000448a11001900000000000000cc891100010000000000000000000000608a1100010000000000000000000000688a11001600000000000000cc891100010000000000000000000000808a11000c0000000000000000000000e08a11002200000000000000cc891100010000000000000000000000048b11000100000000000000000000000c8b11000d000000000000001c8b11000200000000000000000000004c8b1100140000000000000000000000ec8b11000600000000000000f48b11000100000000000000000000000c8c11000e00000000000000000000007c8c11000a00000000000000f48b1100010000000000000000000000888c1100100000000000000000000000088d11000b00000000000000148d11000100000000000000000000002c8d11002000000000000000000000002c8e11001100000000000000408e1100020000000000000000000000708e1100140000000000000000000000108f11000e0000000000000098871100030000000000000000000000208f11001b0000000000000000000000f88f1100100000000000000000131300000000000000000000000000089011000f0000000000000000000000809011001100000000000000148d1100010000000000000000000000949011001100000000000000000000001c9111000e000000000000002c9111000200000000000000000000005c911100010000000000000000000000b89111000d000000000000009ed012000700000000000000bef212000500000000000000c3f21200150000007bbf1100280000000013130000000000a3bf110046000000e9bf11002100000000131300000000000ac011003600000040c0110046000000001313000000000086c0110012000000001313000000000091c212000b000000ba7f12001500000098c011002d000000c5c011003b00000000c111001400000014c111005100000034c312000c0000007365636f6e6400000000000083461200080000000000000056bf1100120000000000000068bf11001300000000000000ebea12000c00000027bd11002e000000001313000000000055bd11004100000096bd1100450000000013130000000000dbbd1100330000000ebe1100510000005fbe11004a000000001313000000000091c212000b000000a9be11004e000000f7be1100180000000fbf11001900000028bf11000a00000032bf11002400000034c312000c000000000000002baf1100090000000000000034af110018000000000000009db6120004000000000000000ebd1100190000007cbb11004d000000c9bb11002f0000000013130000000000769b1100330000000013130000000000f8bb110038000000e3b9110022000000001313000000000091c212000b00000030bc11005200000057ba11002900000082bc11003d000000d7ba11003e000000c4c21200150000003ea211000f000000bfbc110025000000e4bc11002a00000034c312000c00000070726f78795f766f7465000014b911005400000068b911003d0000000013130000000000769b1100330000000013130000000000a5b911003e000000e3b9110022000000001313000000000091c212000b00000005ba11005200000057ba11002900000080ba110057000000d7ba11003e00000015bb11000d0000003ea211000f00000022bb11002b0000004dbb11002f00000034c312000c000000656d657267656e63795f63616e63656c000000002baf110009000000000000007c7611000f000000c4b7110054000000c4b611000c000000001313000000000018b811003f000000001313000000000057b8110035000000001313000000000091c212000b000000dcae1100160000008cb8110030000000bcb8110031000000edb811000e000000fbb811001900000034c312000c00000065787465726e616c5f70726f706f736500000000b89111000d000000000000009ed012000700000078b611004c000000c4b611000c0000000013130000000000d0b611003b0000000013130000000000d1b4110036000000001313000000000091c212000b0000000bb711004b00000056b711002f000000a5b011002800000085b711001c000000a1b711002300000034c312000c00000065787465726e616c5f70726f706f73655f6d616a6f72697479000000b5b51100560000000bb6110018000000001313000000000023b611003c0000000013130000000000d1b4110036000000001313000000000007b51100530000005ab5110027000000001313000000000091c212000b000000ba7f12001500000081b511001b0000005fb611001900000034c312000c00000065787465726e616c5f70726f706f73655f64656661756c7423b411005200000075b4110021000000001313000000000096b411003b0000000013130000000000d1b4110036000000001313000000000007b51100530000005ab5110027000000001313000000000091c212000b000000ba7f12001500000081b511001b0000009cb511001900000034c312000c000000666173745f747261636b000000000000b89111000d000000000000009ed01200070000000000000011b411000d0000000000000090d012000e000000000000001eb41100050000000000000090d012000e0000001ab11100540000006eb1110059000000c7b111003b000000001313000000000002b2110035000000001313000000000037b211003e00000075b2110058000000cdb2110026000000f3b211005500000048b311002f000000001313000000000077b3110011000000001313000000000091c212000b000000ba7f12001500000088b311002e000000b6b3110043000000f9b311001800000034c312000c0000007665746f5f65787465726e616c0000004caf11002f00000000131300000000007baf1100370000000013130000000000b2af11004c0000000013130000000000feaf110010000000001313000000000091c212000b0000000eb011004600000054b0110051000000a5b0110028000000cdb0110029000000f6b011002400000034c312000c00000063616e63656c5f7265666572656e64756d000000000000002baf1100090000000000000034af11001800000091ae110015000000001313000000000066a71100310000000013130000000000a6ae110036000000001313000000000091c212000b000000dcae110016000000f2ae11002000000012af11001900000034c312000c00000063616e63656c5f717565756564000000000000008cae110005000000000000007c7611000f0000005bad110028000000001313000000000066a7110031000000001313000000000083ad110032000000001313000000000091c212000b000000b5ad11004d00000002ae11003200000034ae11003300000067ae11002500000034c312000c00000061637469766174655f70726f787900000000000056ad11000500000000000000d0cf12000c0000009fac1100410000000013130000000000e0ac1100250000000013130000000000769b110033000000001313000000000005ad110038000000001313000000000091c212000b000000ba7f120015000000aaab110014000000beab1100150000003dad11001900000034c312000c000000636c6f73655f70726f787900ebab110026000000001313000000000011ac1100280000000013130000000000769b110033000000001313000000000091c212000b000000ba7f12001500000039ac1100260000005fac11002700000086ac11001900000034c312000c000000646561637469766174655f70726f7879dbaa11004b000000001313000000000026ab110022000000001313000000000048ab1100280000000013130000000000769b110033000000001313000000000070ab11003a000000001313000000000091c212000b000000ba7f120015000000aaab110014000000beab110015000000d3ab11001800000034c312000c00000064656c656761746500000000beaa11000200000000000000d0cf12000c00000000000000c0aa11000a00000000000000caaa11000a00000000000000d4aa11000700000000000000a9f812000c0000009ba911004f0000000013130000000000039611005600000059961100330000000013130000000000eaa9110058000000819711001e0000009f97110057000000f69711002600000000131300000000001c981100520000006e98110056000000c49811005100000015991100550000006a9911003200000000131300000000009c99110013000000001313000000000091c212000b00000067a8110056000000bda811003300000042aa11002b0000006daa11002c00000023a91100290000004ca911002a00000099aa11002500000034c312000c000000756e64656c65676174650000cba711003400000000131300000000007e94110058000000d6941100380000000013130000000000ffa711005200000051a811001600000000131300000000004a95110015000000001313000000000091c212000b00000067a8110056000000bda8110033000000f0a811001900000009a911001a00000023a91100290000004ca911002a00000076a911002500000034c312000c000000636c6561725f7075626c69635f70726f706f73616c73000049a711001d000000001313000000000066a7110031000000001313000000000091c212000b00000010f111000a00000097a711001b000000b2a711001900000034c312000c0000006e6f74655f707265696d6167650000000000000039a71100100000000000000059c912000700000098a6110058000000f0a61100490000000013130000000000769b1100330000000013130000000000eca511003200000000131300000000001ea6110017000000001313000000000091c212000b00000035a611002000000034c312000c0000006e6f74655f707265696d6167655f6f7065726174696f6e616c00000055a61100430000006e6f74655f696d6d696e656e745f707265696d61676500006ea5110051000000bfa511002d0000000013130000000000769b1100330000000013130000000000eca511003200000000131300000000001ea6110017000000001313000000000091c212000b00000035a611002000000034c312000c0000006e6f74655f696d6d696e656e745f707265696d6167655f6f7065726174696f6e616c000022a511004c000000726561705f707265696d61676500000000000000b89111000d000000000000009ed0120007000000000000000aa511001800000000000000ebea12000c00000096a211003d0000000013130000000000769b1100330000000013130000000000d3a211003400000007a311004b00000052a3110040000000001313000000000092a3110054000000e6a31100570000003da411002c000000001313000000000069a4110018000000001313000000000091c212000b00000081a4110034000000b5a4110018000000cda4110019000000e6a411002400000034c312000c000000756e6c6f636b0000000000007bf211000600000000000000d0cf12000c0000003aa11100290000000013130000000000769b110033000000001313000000000063a111002f000000001313000000000091c212000b00000092a1110035000000c7a111003b00000002a211003c0000003ea211000f0000004da211002600000073a211002300000034c312000c0000006f70656e5f70726f787900001ea011001000000000131300000000002ea0110037000000001313000000000065a011001900000000131300000000007ea011003b0000000013130000000000b9a0110042000000001313000000000091c212000b0000002899120013000000d299110025000000fba011002600000021a111001900000034c312000c00000072656d6f76655f766f746500000000008b46120005000000000000007c7611000f000000399a11002000000000131300000000005e9c110004000000629c110023000000859c110020000000a59c110025000000ca9c1100400000000a9d110036000000409d110022000000629d110058000000ba9d1100170000000013130000000000d19d11002b000000fc9d11003c000000389e110038000000709e110030000000a09e110057000000f79e1100570000004e9f11003a0000000013130000000000889f110053000000db9f1100230000000013130000000000049311003e000000001313000000000091c212000b00000042931100500000009293110037000000139c11002b000000fd9311002c000000fe9f11002000000034c312000c00000072656d6f76655f6f746865725f766f7465000000000000007bf211000600000000000000d0cf12000c000000000000008b46120005000000000000007c7611000f000000399a1100200000000013130000000000599a110054000000ad9a11004c000000f99a1100560000004f9b1100270000000013130000000000769b1100330000000013130000000000a99b110054000000fd9b110016000000049311003e000000001313000000000091c212000b00000042931100500000009293110037000000139c11002b000000fd9311002c0000003e9c11002000000034c312000c00000070726f78795f64656c65676174650000b69511004d00000000131300000000000396110056000000599611003300000000131300000000008c96110055000000e19611002c00000000131300000000000d97110058000000659711001c000000819711001e0000009f97110057000000f6971100260000001c981100520000006e98110056000000c49811005100000015991100550000006a9911003200000000131300000000009c99110013000000001313000000000091c212000b000000af99110023000000d299110025000000f79911001d000000149a11002500000034c312000c00000070726f78795f756e64656c65676174654c9411003200000000131300000000007e94110058000000d694110038000000001313000000000058921100540000000e9511003c00000000131300000000004a95110015000000001313000000000091c212000b0000005f951100250000008495110012000000969511002000000034c312000c00000070726f78795f72656d6f76655f766f7465000000c5911100280000000013130000000000ed91110054000000419211001700000000131300000000005892110054000000ac921100580000000013130000000000049311003e000000001313000000000091c212000b00000042931100500000009293110037000000c993110034000000fd9311002c000000299411002300000034c312000c000000656e6163745f70726f706f73616c000000000000b89111000d000000000000009ed0120007000000000000008b46120005000000000000007c7611000f000000649111005400000020456e61637420612070726f706f73616c2066726f6d2061207265666572656e64756d2e20466f72206e6f77207765206a757374206d616b65207468652077656967687420626520746865206d6178696d756d2e70726f706f73616c5f686173682052656d6f766520612070726f7869656420766f746520666f722061207265666572656e64756d2e2045786163746c79206571756976616c656e7420746f206072656d6f76655f766f746560206578636570742074686174206974206f70657261746573206f6e20746865206163636f756e742074686174207468652073656e64657220697320612070726f787920666f722e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d75737420626520612070726f787920666f7220736f6d65206f74686572206163636f756e74207768696368206861732061207265676973746572656420766f746520666f7220746865207265666572656e64756d206f662060696e646578602e202d2060696e646578603a2054686520696e646578206f66207265666572656e64756d206f662074686520766f746520746f2062652072656d6f7665642e202d20604f2852202b206c6f6720522960207768657265205220697320746865206e756d626572206f66207265666572656e646120746861742060746172676574602068617320766f746564206f6e2e2020205765696768742069732063616c63756c6174656420666f7220746865206d6178696d756d206e756d626572206f6620766f74652e202d2044622072656164733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f66602c206050726f787960202d204462207772697465733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f6660202d2042617365205765696768743a2032362e3335202b202e3336202a205220c2b57320556e64656c65676174652074686520766f74696e6720706f776572206f6620612070726f78696564206163636f756e742e20546f6b656e73206d617920626520756e6c6f636b656420666f6c6c6f77696e67206f6e636520616e20616d6f756e74206f662074696d6520636f6e73697374656e74207769746820746865206c6f636b20706572696f64206f662074686520636f6e76696374696f6e2077697468207768696368207468652064656c65676174696f6e20776173206973737565642e2070726f787920666f7220736f6d65206f74686572206163636f756e742077686963682069732063757272656e746c792064656c65676174696e672e20456d6974732060556e64656c656761746564602e2073616d652061732060756e64656c65676174652077697468206164646974696f6e616c3a2044622072656164733a206050726f7879602042617365205765696768743a203339202b20372e393538202a205220c2b5732044656c65676174652074686520766f74696e6720706f77657220287769746820736f6d6520676976656e20636f6e76696374696f6e29206f6620612070726f78696564206163636f756e742e205468652062616c616e63652064656c656761746564206973206c6f636b656420666f72206173206c6f6e6720617320697427732064656c6567617465642c20616e64207468657265616674657220666f72207468652074696d6520617070726f70726961746520666f722074686520636f6e76696374696f6e2773206c6f636b20706572696f642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2c20616e6420746865207369676e696e67206163636f756e74206d7573742068617665206265656e20736574206173207468652070726f7879206163636f756e7420666f722060746172676574602e202d2060746172676574603a20546865206163636f756e742077686f6c6520766f74696e6720706f776572207368616c6c2062652064656c65676174656420616e642077686f73652062616c616e6365206c6f636b65642e20202054686973206163636f756e74206d757374206569746865723a2020202d2062652064656c65676174696e6720616c72656164793b206f722020202d2068617665206e6f20766f74696e67206163746976697479202869662074686572652069732c207468656e2069742077696c6c206e65656420746f2062652072656d6f7665642f636f6e736f6c69646174656420202020207468726f7567682060726561705f766f746560206f722060756e766f746560292e202d2060746f603a20546865206163636f756e742077686f736520766f74696e6720746865206074617267657460206163636f756e74277320766f74696e6720706f7765722077696c6c20666f6c6c6f772e202d2060636f6e76696374696f6e603a2054686520636f6e76696374696f6e20746861742077696c6c20626520617474616368656420746f207468652064656c65676174656420766f7465732e205768656e207468652020206163636f756e7420697320756e64656c6567617465642c207468652066756e64732077696c6c206265206c6f636b656420666f722074686520636f72726573706f6e64696e6720706572696f642e202d206062616c616e6365603a2054686520616d6f756e74206f6620746865206163636f756e7427732062616c616e636520746f206265207573656420696e2064656c65676174696e672e2054686973206d7573742020206e6f74206265206d6f7265207468616e20746865206163636f756e7427732063757272656e742062616c616e63652e20456d697473206044656c656761746564602e2073616d65206173206064656c65676174652077697468206164646974696f6e616c3a202d2044622072656164733a206050726f7879602c206070726f7879206163636f756e7460202d204462207772697465733a206070726f7879206163636f756e7460202d2042617365205765696768743a2036382e3631202b20382e303339202a205220c2b5732052656d6f7665206120766f746520666f722061207265666572656e64756d2e2049662074686520607461726765746020697320657175616c20746f20746865207369676e65722c207468656e20746869732066756e6374696f6e2069732065786163746c79206571756976616c656e7420746f206072656d6f76655f766f7465602e204966206e6f7420657175616c20746f20746865207369676e65722c207468656e2074686520766f7465206d757374206861766520657870697265642c20656974686572206265636175736520746865207265666572656e64756d207761732063616e63656c6c65642c20626563617573652074686520766f746572206c6f737420746865207265666572656e64756d206f7220626563617573652074686520636f6e76696374696f6e20706572696f64206973206f7665722e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e202d2060746172676574603a20546865206163636f756e74206f662074686520766f746520746f2062652072656d6f7665643b2074686973206163636f756e74206d757374206861766520766f74656420666f722020207265666572656e64756d2060696e646578602e202d2044622072656164733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f6660202d2042617365205765696768743a2031392e3135202b202e333732202a20522049663a202d20746865207265666572656e64756d207761732063616e63656c6c65642c206f72202d20746865207265666572656e64756d206973206f6e676f696e672c206f72202d20746865207265666572656e64756d2068617320656e646564207375636820746861742020202d2074686520766f7465206f6620746865206163636f756e742077617320696e206f70706f736974696f6e20746f2074686520726573756c743b206f722020202d20746865726520776173206e6f20636f6e76696374696f6e20746f20746865206163636f756e74277320766f74653b206f722020202d20746865206163636f756e74206d61646520612073706c697420766f7465202e2e2e7468656e2074686520766f74652069732072656d6f76656420636c65616e6c7920616e64206120666f6c6c6f77696e672063616c6c20746f2060756e6c6f636b60206d617920726573756c7420696e206d6f72652066756e6473206265696e6720617661696c61626c652e2049662c20686f77657665722c20746865207265666572656e64756d2068617320656e64656420616e643a202d2069742066696e697368656420636f72726573706f6e64696e6720746f2074686520766f7465206f6620746865206163636f756e742c20616e64202d20746865206163636f756e74206d6164652061207374616e6461726420766f7465207769746820636f6e76696374696f6e2c20616e64202d20746865206c6f636b20706572696f64206f662074686520636f6e76696374696f6e206973206e6f74206f766572202e2e2e7468656e20746865206c6f636b2077696c6c206265206167677265676174656420696e746f20746865206f766572616c6c206163636f756e742773206c6f636b2c207768696368206d617920696e766f6c7665202a6f7665726c6f636b696e672a20287768657265207468652074776f206c6f636b732061726520636f6d62696e656420696e746f20612073696e676c65206c6f636b207468617420697320746865206d6178696d756d206f6620626f74682074686520616d6f756e74206c6f636b656420616e64207468652074696d65206973206974206c6f636b656420666f72292e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2c20616e6420746865207369676e6572206d7573742068617665206120766f7465207265676973746572656420666f72207265666572656e64756d2060696e646578602e202d2042617365205765696768743a2032312e3033202b202e333539202a2052204265636f6d6520612070726f78792e2054686973206d7573742062652063616c6c6564207072696f7220746f2061206c61746572206061637469766174655f70726f7879602e204f726967696e206d7573742062652061205369676e65642e202d2060746172676574603a20546865206163636f756e742077686f736520766f7465732077696c6c206c617465722062652070726f786965642e2060636c6f73655f70726f787960206d7573742062652063616c6c6564206265666f726520746865206163636f756e742063616e2062652064657374726f7965642e202d204462207772697465733a206050726f7879602c206070726f7879206163636f756e7460202d2042617365205765696768743a2031342e383620c2b57320556e6c6f636b20746f6b656e732074686174206861766520616e2065787069726564206c6f636b2e202d2060746172676574603a20546865206163636f756e7420746f2072656d6f766520746865206c6f636b206f6e2e202d20436f6d706c657869747920604f2852296020776974682052206e756d626572206f6620766f7465206f66207461726765742e202d2044622072656164733a2060566f74696e674f66602c206062616c616e636573206c6f636b73602c2060746172676574206163636f756e7460202d204462207772697465733a2060566f74696e674f66602c206062616c616e636573206c6f636b73602c2060746172676574206163636f756e7460202d2042617365205765696768743a20202020202d20556e6c6f636b2052656d6f76653a2034322e3936202b202e303438202a205220202020202d20556e6c6f636b205365743a2033372e3633202b202e333237202a20522052656d6f766520616e20657870697265642070726f706f73616c20707265696d61676520616e6420636f6c6c65637420746865206465706f7369742e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f6620612070726f706f73616c2e202d206070726f706f73616c5f6c656e6774685f75707065725f626f756e64603a20616e20757070657220626f756e64206f6e206c656e677468206f66207468652070726f706f73616c2e20202045787472696e736963206973207765696768746564206163636f7264696e6720746f20746869732076616c75652077697468206e6f20726566756e642e20546869732077696c6c206f6e6c7920776f726b2061667465722060566f74696e67506572696f646020626c6f636b732066726f6d207468652074696d6520746861742074686520707265696d61676520776173206e6f7465642c2069662069742773207468652073616d65206163636f756e7420646f696e672069742e2049662069742773206120646966666572656e74206163636f756e742c207468656e206974276c6c206f6e6c7920776f726b20616e206164646974696f6e616c2060456e6163746d656e74506572696f6460206c617465722e20456d6974732060507265696d616765526561706564602e202d20436f6d706c65786974793a20604f284429602077686572652044206973206c656e677468206f662070726f706f73616c2e202d2044622072656164733a2060507265696d6167657360202d204462207772697465733a2060507265696d6167657360202d2042617365205765696768743a2033392e3331202b202e303033202a206220c2b57370726f706f73616c5f6c656e5f75707065725f626f756e642053616d6520617320606e6f74655f696d6d696e656e745f707265696d6167656020627574206f726967696e20697320604f7065726174696f6e616c507265696d6167654f726967696e602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e2054686973207265717569726573207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652e204e6f206465706f736974206973206e65656465642e202d2060656e636f6465645f70726f706f73616c603a2054686520707265696d616765206f6620612070726f706f73616c2e20456d6974732060507265696d6167654e6f746564602e2073656520607765696768745f666f723a3a6e6f74655f707265696d616765602053616d6520617320606e6f74655f707265696d6167656020627574206f726967696e20697320604f7065726174696f6e616c507265696d6167654f726967696e602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e205468697320646f65736e27742072657175697265207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652062757420646f657320726571756972652061206465706f7369742c2072657475726e6564206f6e636520656e61637465642e656e636f6465645f70726f706f73616c20436c6561727320616c6c207075626c69632070726f706f73616c732e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f526f6f745f2e202d204462207772697465733a20605075626c696350726f707360202d2042617365205765696768743a20322e35303520c2b57320556e64656c65676174652074686520766f74696e6720706f776572206f66207468652073656e64696e67206163636f756e742e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742062652063757272656e746c792064656c65676174696e672e202d20436f6d706c65786974793a20604f28522960207768657265205220697320746865206e756d626572206f66207265666572656e64756d732074686520766f7465722064656c65676174696e6720746f20686173202020766f746564206f6e2e205765696768742069732063686172676564206173206966206d6178696d756d20766f7465732e202d2044622072656164733a20322a60566f74696e674f6660202d204462207772697465733a20322a60566f74696e674f6660202d2044622072656164732070657220766f7465733a20605265666572656e64756d496e666f4f6660202d204462207772697465732070657220766f7465733a20605265666572656e64756d496e666f4f6660202d2042617365205765696768743a2033332e3239202b20382e313034202a205220c2b5732044656c65676174652074686520766f74696e6720706f77657220287769746820736f6d6520676976656e20636f6e76696374696f6e29206f66207468652073656e64696e67206163636f756e742e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2c20616e6420746865207369676e696e67206163636f756e74206d757374206569746865723a202d2044622072656164733a20322a60566f74696e674f66602c206062616c616e636573206c6f636b7360202d204462207772697465733a20322a60566f74696e674f66602c206062616c616e636573206c6f636b7360202d2042617365205765696768743a2036352e3738202b20382e323239202a205220c2b573746f636f6e76696374696f6e436f6e76696374696f6e62616c616e63652044656163746976617465207468652070726f78792c20627574206c65617665206f70656e20746f2074686973206163636f756e742e2043616c6c6564206279207468652073746173682e205468652070726f7879206d75737420616c7265616479206265206163746976652e204e4f54453a205573656420746f2062652063616c6c6564206072656d6f76655f70726f7879602e202d206070726f7879603a20546865206163636f756e7420746861742077696c6c2062652064656163746976617465642061732070726f78792e202d2044622072656164733a206050726f787960202d204462207772697465733a206050726f787960202d2042617365205765696768743a20382e303320c2b57320436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e204e4f54453a205573656420746f2062652063616c6c6564206072657369676e5f70726f7879602e202d2044622072656164733a206050726f7879602c206073656e646572206163636f756e7460202d204462207772697465733a206050726f7879602c206073656e646572206163636f756e7460202d2042617365205765696768743a2031352e343120c2b573205370656369667920612070726f7879207468617420697320616c7265616479206f70656e20746f2075732e2043616c6c6564206279207468652073746173682e204e4f54453a205573656420746f2062652063616c6c656420607365745f70726f7879602e202d206070726f7879603a20546865206163636f756e7420746861742077696c6c206265206163746976617465642061732070726f78792e202d2042617365205765696768743a20372e39373220c2b57370726f78792043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e202d20607768696368603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e202d20604f284429602077686572652060446020697320746865206974656d7320696e207468652064697370617463682071756575652e205765696768746564206173206044203d203130602e202d2044622072656164733a20607363686564756c6572206c6f6f6b7570602c207363686564756c6572206167656e646160202d204462207772697465733a20607363686564756c6572206c6f6f6b7570602c207363686564756c6572206167656e646160202d2042617365205765696768743a2033362e3738202b20332e323737202a204420c2b57377686963682052656d6f76652061207265666572656e64756d2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e202d20436f6d706c65786974793a20604f283129602e202d204462207772697465733a20605265666572656e64756d496e666f4f6660202d2042617365205765696768743a2032312e353720c2b5737265665f696e646578436f6d706163743c5265666572656e64756d496e6465783e205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d75737420626520605665746f4f726967696e602e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c20746f207665746f20616e6420626c61636b6c6973742e20456d69747320605665746f6564602e202d20436f6d706c65786974793a20604f2856202b206c6f6728562929602077686572652056206973206e756d626572206f6620606578697374696e67207665746f65727360202020506572666f726d7320612062696e61727920736561726368206f6e20606578697374696e675f7665746f657273602077686963682073686f756c64206e6f742062652076657279206c617267652e202d2044622072656164733a20604e65787445787465726e616c602c2060426c61636b6c69737460202d204462207772697465733a20604e65787445787465726e616c602c2060426c61636b6c69737460202d2042617365205765696768743a2032392e3837202b202e313838202a205620c2b573205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e20546865206469737061746368206f6620746869732063616c6c206d757374206265206046617374547261636b4f726967696e602e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f2020206046617374547261636b566f74696e67506572696f646020696620746f6f206c6f772e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e20456d697473206053746172746564602e202d2044622072656164733a20604e65787445787465726e616c602c20605265666572656e64756d436f756e7460202d204462207772697465733a20604e65787445787465726e616c602c20605265666572656e64756d436f756e74602c20605265666572656e64756d496e666f4f6660202d2042617365205765696768743a2033302e3120c2b573766f74696e675f706572696f6464656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c44656661756c744f726967696e602e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e202d2044622077726974653a20604e65787445787465726e616c60202d2042617365205765696768743a20332e30383720c2b573205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c4d616a6f726974794f726967696e602e202d2042617365205765696768743a20332e30363520c2b573205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206045787465726e616c4f726967696e602e202d20436f6d706c657869747920604f2856296020776974682056206e756d626572206f66207665746f65727320696e2074686520626c61636b6c697374206f662070726f706f73616c2e2020204465636f64696e6720766563206f66206c656e67746820562e2043686172676564206173206d6178696d756d202d204462207772697465733a20604e65787445787465726e616c60202d2042617365205765696768743a2031332e38202b202e313036202a205620c2b573205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206043616e63656c6c6174696f6e4f726967696e602e202d607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e202d2044622072656164733a20605265666572656e64756d496e666f4f66602c206043616e63656c6c6174696f6e7360202d204462207772697465733a20605265666572656e64756d496e666f4f66602c206043616e63656c6c6174696f6e7360202d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2033342e323520c2b57320566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2070726f787920766f746520666f722e202d2060766f7465603a2054686520766f746520636f6e66696775726174696f6e2e202d20436f6d706c65786974793a20604f28522960207768657265205220697320746865206e756d626572206f66207265666572656e64756d73207468652070726f78792068617320766f746564206f6e2e2020207765696768742069732063686172676564206173206966206d6178696d756d20766f7465732e202d2044622072656164733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f66602c206062616c616e636573206c6f636b73602c206050726f7879602c206070726f7879206163636f756e7460202d204462207772697465733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f66602c206062616c616e636573206c6f636b7360202d2d2d2d2d2d2d2d2d2d2d2d20202020202d2050726f787920566f7465204e65773a2035342e3335202b202e333434202a205220c2b57320202020202d2050726f787920566f7465204578697374696e673a2035342e3335202b202e3335202a205220c2b57320566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f20766f746520666f722e202d20436f6d706c65786974793a20604f28522960207768657265205220697320746865206e756d626572206f66207265666572656e64756d732074686520766f7465722068617320766f746564206f6e2e202d2044622072656164733a20605265666572656e64756d496e666f4f66602c2060566f74696e674f66602c206062616c616e636573206c6f636b736020202020202d20566f7465204e65773a2034392e3234202b202e333333202a205220c2b57320202020202d20566f7465204578697374696e673a2034392e3934202b202e333433202a205220c2b5734163636f756e74566f74653c42616c616e63654f663c543e3e205369676e616c732061677265656d656e742077697468206120706172746963756c61722070726f706f73616c2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742c20657175616c20746f20746865206f726967696e616c206465706f7369742e202d206070726f706f73616c603a2054686520696e646578206f66207468652070726f706f73616c20746f207365636f6e642e202d20607365636f6e64735f75707065725f626f756e64603a20616e20757070657220626f756e64206f6e207468652063757272656e74206e756d626572206f66207365636f6e6473206f6e207468697320202070726f706f73616c2e2045787472696e736963206973207765696768746564206163636f7264696e6720746f20746869732076616c75652077697468206e6f20726566756e642e202d20436f6d706c65786974793a20604f28532960207768657265205320697320746865206e756d626572206f66207365636f6e647320612070726f706f73616c20616c7265616479206861732e202d2044622072656164733a20604465706f7369744f6660202d204462207772697465733a20604465706f7369744f6660202d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2032322e3238202b202e323239202a205320c2b573436f6d706163743c50726f70496e6465783e7365636f6e64735f75707065725f626f756e642050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20707265696d6167652e202d206076616c7565603a2054686520616d6f756e74206f66206465706f73697420286d757374206265206174206c6561737420604d696e696d756d4465706f73697460292e20456d697473206050726f706f736564602e202d2044622072656164733a20605075626c696350726f70436f756e74602c20605075626c696350726f707360202d204462207772697465733a20605075626c696350726f70436f756e74602c20605075626c696350726f7073602c20604465706f7369744f6660202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2042617365205765696768743a2034322e3538202b202e313237202a205020c2b57320776974682060506020746865206e756d626572206f662070726f706f73616c7320605075626c696350726f7073600000000000000090c611000f0000000000000000000000b8781100090000000000000000000000000000000000000000000000000000000000000000131300bcc711000000000000000000a0c6110001000000000000000100000000000000a8c611000b0000000000000000000000b3c61100270000000000000000000000000000000000000000000000000000000000000000131300dcc611000000000000000000ecc6110001000000000000000100000000000000d24f1100090000000105000000000000b87811000900000000000000f4c6110021000000000000000000000000000000000000000013130018c71100000000000000000028c711000300000000000000000000000000000040c711000900000001060000000000009ed01200070000000000000049c711003a000000000000000000000000000000000000000013130028ca1100000000000000000084c711000200000000000000000000000000000094c711000f00000000000000000000007c7611000f0000000000000000000000000000000000000000000000000000000000000000131300bcc711000000000000000000a4c7110001000000000000000100000000000000acc711000d00000000000000000000007c7611000f0000000000000000000000000000000000000000000000000000000000000000131300bcc711000000000000000000ccc7110002000000000000000100000000000000db4f11001000000001050000000000007c7611000f00000000000000dcc7110035000000000000000000000000000000000000000013130014c81100000000000000000024c81100030000000000000000000000000000003cc81100080000000105000000000000d0cf12000c0000000000000044c8110032000000000000000000000000000000000000000013130078c81100000000000000000088c8110004000000000000000100000000000000a8c81100050000000105000000000000d0cf12000c00000000000000adc81100180000000000000000000000000000000000000000131300c8c811000000000000000000d8c8110004000000000000000000000000000000f8c81100050000000105000000000000d0cf12000c0000000000000090d012000e000000000000000000000000000000000000000013130000c91100000000000000000010c911000400000000000000000000000000000030c911001500000000000000000000000fb91200040000000000000000000000000000000000000000000000000000000000000000131300f8c91100000000000000000048c911000200000000000000010000000000000058c911000c000000000000000000000064c9110018000000000000000000000000000000000000000000000000000000000000000013130028ca110000000000000000007cc91100040000000000000000000000000000009cc911000900000001060000000000009ed012000700000000000000a5c91100230000000000000000000000000000000000000000131300c8c911000000000000000000d8c9110002000000000000000000000000000000e8c911000d00000001060000000000009ed0120007000000000000000fb91200040000000000000000000000000000000000000000131300f8c91100000000000000000008ca11000100000000000000010000000000000010ca11000e00000000000000000000001eca110008000000000000000000000000000000000000000000000000000000000000000013130028ca1100000000000000000038ca11000300000000000000000000005075626c696350726f70436f756e740057d111003d0000005075626c696350726f70735665633c2850726f70496e6465782c20543a3a486173682c20543a3a4163636f756e744964293e00001f0000000000000001000000360000000fd1110048000000285665633c543a3a4163636f756e7449643e2c2042616c616e63654f663c543e290000001f00000000000000010000004d000000b8d01100210000000013130000000000d9d0110036000000507265696d61676573507265696d6167655374617475733c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e0027d01100580000007fd01100390000005265666572656e64756d436f756e7400dbcf11004c0000004c6f77657374556e62616b65640000001f0000000000000001000000340000005bcf110049000000a4cf1100370000005265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a486173682c2042616c616e63654f663c543e3e0000001f000000000000000100000038000000ecce11002d000000001313000000000019cf110042000000566f74696e674f66566f74696e673c42616c616e63654f663c543e2c20543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e00001f0000000000000001000000c400000004ce1100570000005bce1100570000000013130000000000b2ce11003a00000050726f787950726f787953746174653c543a3a4163636f756e7449643e0000001f00000000000000010000003800000096cd11004c000000e2cd110022000000001313000000000066cd1100300000004c6f636b730000001f000000000000000100000038000000bbcc11005700000012cd110054000000001313000000000066cd1100300000004c6173745461626c656457617345787465726e616c0000005bcc110056000000b1cc11000a0000004e65787445787465726e616c28543a3a486173682c20566f74655468726573686f6c64296dcb110056000000c3cb11005500000018cc11002900000041cc11001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e291f00000000000000010000004d000000dfca11005400000033cb11003a00000043616e63656c6c6174696f6e730000001f00000000000000010000003800000095ca11004a00000053746f7261676556657273696f6e52656c656173657300001f00000000000000010000003800000050ca11001f00000000131300000000006fca1100260000002053746f726167652076657273696f6e206f66207468652070616c6c65742e204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e204163636f756e747320666f7220776869636820746865726520617265206c6f636b7320696e20616374696f6e207768696368206d61792062652072656d6f76656420617420736f6d6520706f696e7420696e20746865206675747572652e205468652076616c75652069732074686520626c6f636b206e756d62657220617420776869636820746865206c6f636b206578706972657320616e64206d61792062652072656d6f7665642e2054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e2057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b65792069732074686520766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e20416c6c20766f74657320666f72206120706172746963756c617220766f7465722e2057652073746f7265207468652062616c616e636520666f7220746865206e756d626572206f6620766f74657320746861742077652068617665207265636f726465642e20546865207365636f6e64206974656d2069732074686520746f74616c20616d6f756e74206f662064656c65676174696f6e732c20746861742077696c6c2062652061646465642e2054574f582d4e4f54453a205341464520617320604163636f756e7449646073206172652063727970746f2068617368657320616e797761792e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e2054574f582d4e4f54453a205341464520617320696e646578657320617265206e6f7420756e64657220616e2061747461636b6572e280997320636f6e74726f6c2e20546865206c6f77657374207265666572656e64756d20696e64657820726570726573656e74696e6720616e20756e62616b6564207265666572656e64756d2e20457175616c20746f20605265666572656e64756d436f756e74602069662074686572652069736e2774206120756e62616b6564207265666572656e64756d2e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e204d6170206f662068617368657320746f207468652070726f706f73616c20707265696d6167652c20616c6f6e6720776974682077686f207265676973746572656420697420616e64207468656972206465706f7369742e2054686520626c6f636b206e756d6265722069732074686520626c6f636b20617420776869636820697420776173206465706f73697465642e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e2054574f582d4e4f54453a20536166652c20617320696e6372656173696e6720696e7465676572206b6579732061726520736166652e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865207365636f6e64206974656d206973207468652070726f706f73616c277320686173682e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e4c4f474943204552524f523a2062616b655f7265666572656e64756d2f7363686564756c655f6e616d6564206661696c65644661696c656420746f206465636f64652060507265696d616765537461747573602076617269616e740010d211005d000000700600002d00000010d211005d00000077060000400000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f64656d6f63726163792f7372632f6c69622e727300000010d211005d000000400600002d000000ccd2110021000000706f6c6b61646f745f72756e74696d652f55736572732f6761762f436f72652f706f6c6b61646f742f72756e74696d652f706f6c6b61646f742f7372632f6c69622e7273556e61626c6520746f20637265617465207369676e6564207061796c6f61643a20496e76616c69642072616e676520666f7220746869732061756374696f6e72616e676520656e6473206265666f726520697420626567696e7372616e676520626567696e7320746f6f206561726c7972616e676520626567696e7320746f6f206c61746572616e676520656e647320746f6f206c617465000000000000000000000000617474656d707420746f20646976696465206279207a65726f617373657274696f6e206661696c65643a206d6964203c3d206c656e0000001f00000008000000040000004a0000001f0000000000000001000000460000001f0000000000000001000000c50000007672662d6e6d2d706b000000f4d3110006000000fad3110010000000496e64657820206f7574206f6620626f756e64733a2000001cd4110055000000420900000e0000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962616c6c6f632f636f6c6c656374696f6e732f7665635f64657175652e727371202f206365696c28712f246d617829203c20246d61782e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b2071656400e0d411006a00000065010000270000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e72730000e0d411006a0000006c01000027000000e0d411006a00000077010000210000004661696c656420746f20636f6e76657274506172656e7420686173682073686f756c642062652076616c69642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e00000035d6110032000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e5369676e617475726520766572696669636174696f6e206661696c65642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e5472616e73616374696f6e43616c6c46696c74657228296e6577686561647350617261636861696e20686561647320636f756c64206e6f74206265206465636f6465642e00a0011300390000008b050000140000004e6f2070617261636861696e20686561647320666f756e6420696e20696e686572656e7420646174612e7265706f72745f646f75626c655f766f74657365745f6865616473546f6f4d616e794865616455706461746573546f6f4d616e795061726143616e6469646174657348656164734f75744f664f72646572556e7265676973746572656450617261496e76616c6964436f6c6c61746f72517565756546756c6c496e76616c69644d6573736167654f726967696e4e6f56616c696461746f7247726f75704e6f74456e6f75676856616c6964697479566f746573566f74657345786365656473417574686f72697469657357726f6e6756616c696461746f72417474657374696e67496e76616c69645369676e6174757265556e746167676564566f746573506172656e744d69736d6174636856616c69646174696f6e436f6465546f6f4c61726765446973616c6c6f776564436f64655570677261646543616e6e6f7450617946656573556e657870656374656452656c6179506172656e7456616c6964617465446f75626c65566f74655265706f727473526571756972655375646f7375646f7375646f5f756e636865636b65645f7765696768747365745f6b65797375646f5f617300000000000010d91100050000000000000018d9110001000000000000000000000020d91100010000000000000000000000b07512000a00000000000000b4b4120001000000000000000000000028d9110001000000000000000000000030d911000a000000000000003cd9110001000000000000000000000020d91100010000000000000053756469640000007c2e12000e00000080d911001800000044d911003c0000005375646f4173446f6e6500000fb912000400000020546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e416d6f756e744c6f774578697374696e6756657374696e675363686564756c654e6f7456657374696e6776657374766573745f6f746865727665737465645f7472616e7366657256657374696e6700000000000040da11000e0000000000000050da110002000000000000000000000060da110002000000000000000000000070da11001000000000000000b4b4120001000000000000000000000080da1100010000000000000056657374696e675570646174656400000eb51200090000006b72120007000000d3da11005600000029db11004600000056657374696e67436f6d706c6574656488da11004b00000020416e206163636f756e742028676976656e2920686173206265636f6d652066756c6c79207665737465642e204e6f20667572746865722076657374696e672063616e2068617070656e2e2054686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e646963617465206d6f72652066756e64732061726520617661696c61626c652e205468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e50617261636861696e206865616473206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b4475706c696361746564486561727462656174496e76616c69644b6579686561727462656174496d4f6e6c696e6548656172746265617441667465724b6579730000000064dc1100110000000000000078dc110001000000000000000000000080dc110001000000000000000000000088dc110007000000000000000013130000000000000000000000000090dc110001000000000000000000000098dc11000b00000000000000a4dc1100010000000000000000000000acdc1100010000000000000048656172746265617452656365697665640000007cdd11000b0000004cdd110030000000416c6c476f6f640017dd110035000000536f6d654f66666c696e6500ffdc110018000000b4dc11004b0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f726974794964467574757265436f646555706772616465730000001f000000080000000400000041000000bddb110009000000496e76616c69642f6f75746461746564206b6579206f776e6572736869702070726f6f662e4661696c656420746f207265706f7274206f6666656e6365000000a0011300390000003d0500002f0000006f7264657265645f6e656564735f646973706174636820636f6e7461696e732069643f21a001130039000000bb0300001d00000050617374436f64655072756e696e6750617374436f646550617374436f64654d65746176616c696461746f725f726f6c655f706169727300a001130039000000f20300002f000000a0de110048000000ff01000023000000a0de11004800000000020000230000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f736c6963652f6d6f642e72730000000001d711001200000000000000fce0110001000000000000000000000013d71100150000000000000004e1110001000000000000000000000028d711000f000000000000000ce1110001000000000000000000000037d71100100000000000000014e1110001000000000000000000000047d711000f000000000000001ce1110001000000000000000000000056d71100090000000000000024e111000100000000000000000000005fd7110014000000000000002ce1110001000000000000000000000073d71100100000000000000034e1110001000000000000000000000083d7110016000000000000003ce1110001000000000000000000000099d71100170000000000000044e11100010000000000000000000000b0d7110017000000000000004ce11100010000000000000000000000c7d71100100000000000000054e11100010000000000000000000000d7d711000d000000000000005ce11100010000000000000000000000e4d711000e0000000000000064e11100010000000000000000000000ed29120010000000000000006ce11100010000000000000000000000f2d71100160000000000000074e1110001000000000000000000000008d8110015000000000000007ce111000100000000000000000000001dd811000d0000000000000084e111000100000000000000000000002ad8110015000000000000008ce11100010000000000000096e411003800000077e411001f0000002de411004a00000001e411002c000000efe3110012000000a8e311004700000089e311001f00000067e31100220000003ee311002900000000e311003e000000c7e2110039000000a6e211002100000072e211003400000049e211002900000030e21100190000000de2110023000000f4e1110019000000c5e111002f00000094e111003100000020556e65787065637465642072656c61792d706172656e7420666f7220612063616e64696461746520726563656970742e205061726120646f6573206e6f74206861766520656e6f7567682062616c616e636520746f2070617920666565732e20446973616c6c6f77656420636f646520757067726164652e204e65772076616c69646174696f6e20636f64652077617320746f6f206c617267652e204865616420646174612077617320746f6f206c617267652e2057726f6e6720706172656e74206865616420666f722070617261636861696e20726563656970742e20457874726120756e7461676765642076616c696469747920766f74657320616c6f6e6720776974682063616e6469646174652e20496e76616c6964207369676e61747572652066726f6d2061747465737465722e20417474657374696e672076616c696461746f72206e6f74206f6e207468697320636861696e27732076616c69646174696f6e20647574792e20546865206e756d626572206f66206174746573746174696f6e73206578636565647320746865206e756d626572206f6620617574686f7269746965732e204e6f7420656e6f7567682076616c696469747920766f74657320666f722063616e6469646174652e204e6f2076616c696461746f722067726f757020666f722070617261636861696e2e20546865206d657373616765206f726967696e20697320696e76616c69642e20546865206d6573736167652071756575652069732066756c6c2e204d657373616765732077696c6c206265206164646564207768656e2074686572652069732073706163652e20496e76616c696420636f6c6c61746f722e2043616e64696461746520697320666f7220616e20756e726567697374657265642070617261636861696e2e2050726f706f736564206865616473206d75737420626520617363656e64696e67206f726465722062792070617261636861696e20494420776974686f7574206475706c69636174652e20546f6f206d616e792070617261636861696e2063616e646964617465732e2050617261636861696e206865616473206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b2e0000a001130039000000f305000035000000417574686f726564426c6f636b73000000e8110045000000c10300002200000000e8110045000000dd0300001500000000e8110045000000eb0300001e00000000e8110045000000f40300001800000000e8110045000000f50300001900000000e8110045000000f80300001a00000000e8110045000000fe0300000d000000f5e51100160000001de6110002000000f5e51100160000000be6110012000000696d6f6e6c696e6570616c6c65745f696d5f6f6e6c696e652f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e7273536b697070696e6720686561727462656174206174202e204e6f7420612076616c696461746f722e3a20002fe711001c00000001e711002e000000cfe611001a000000e9e6110018000000b3e611000a000000bde61100120000009be611001800000085e611001600000068e611001d0000004661696c656420746f206665746368206e6574776f726b2073746174654661696c656420746f2061637175697265206c6f636b4661696c656420746f207369676e20686561727462656174417574686f726974792020697320616c7265616479206f6e6c696e6548656172746265617420616c72656164792073656e74206174202e2057616974696e6720666f7220696e636c7573696f6e2e546f6f206561726c7920746f2073656e64206865617274626561742c206e657874206578706563746564206174204661696c656420746f207375626d6974207472616e73616374696f6e0098e511005d00000027020000340000007061726974792f696d2d6f6e6c696e652d6865617274626561742f0098e7110008000000a0e7110020000000c0e711000b000000cbe71100030000005b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20202873657373696f6e3a20293a200000001313000000000000131300000000001f0000000400000004000000c60000001f0000000400000004000000c60000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962616c6c6f632f736c6963652e72730000000000000063d811000400000000000000f8e8110001000000000000000000000010e911000a000000000000000000000067d81100150000000000000060e9110002000000000000000000000090e911000a00000000000000000000007cd811000700000000000000e0e91100010000000000000000000000f8e9110009000000000000000000000083d81100070000000000000040ea110002000000000000000000000070ea11000b0000000000000000000000441912000400000000000000481912001700000006ec11004e0000000013130000000000948c120034000000001313000000000091c212000b0000002deb11000800000035eb1100190000004eeb11001800000066eb11003200000034c312000c0000000000000044191200040000000000000048191200170000000000000001ed1100070000000000000026d912000600000006ec11004e00000054ec11004c000000a0ec11002d0000000013130000000000948c120034000000001313000000000091c212000b0000002deb110008000000cdec11003400000034c312000c0000000000000025a91200030000000000000087e412002300000098eb11005d0000000013130000000000948c120034000000001313000000000091c212000b0000002deb11000800000035eb110019000000f5eb11001100000034c312000c0000000000000084e41200030000000000000087e4120023000000000000004419120004000000000000004819120017000000c8ea1100540000001ceb1100110000000013130000000000948c120034000000001313000000000091c212000b0000002deb11000800000035eb1100190000004eeb11001800000066eb11003200000034c312000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204f2831292e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e20546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e5f7765696768745375646f00000000b7c41200030000000000000000000000d0cf12000c000000000000000000000000000000000000000000000000000000000000000013130064ed1100000000000000000074ed11000100000000000000010000001f00000000000000010000004e0000007ced1100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e00000000000000c2d9110004000000000000000013130000000000000000000000000024ee1100110000000000000000000000c6d911000a00000000000000acee1100010000000000000000000000c4ee1100130000000000000000000000d0d911000f000000000000005cef11000200000000000000000000008cef11001200000000000000e3f411002f000000001313000000000012f51100580000002ef311001a000000001313000000000048f3110035000000001313000000000091c212000b00000010f111000a0000006af511001e00000088f511003f000000c7f5110040000000f8f311000d00000007f611003b00000042f611003900000078f411006b00000034c312000c000000000000007bf21100060000000000000087e4120023000000aaf211002f0000000013130000000000948c1200340000000013130000000000d9f21100550000002ef311001a000000001313000000000048f3110035000000001313000000000091c212000b00000010f111000a0000001af111001e0000007df311003d000000baf311003e000000f8f311000d00000005f411003a0000003ff411003900000078f411006b00000034c312000c000000000000007bf21100060000000000000087e412002300000000000000c70f1200080000000000000081f21100290000001cf011001a0000000013130000000000948c120034000000001313000000000036f01100450000007bf0110040000000bbf011003d0000000013130000000000f8f0110018000000001313000000000091c212000b00000010f111000a0000001af111001e00000038f111004f00000087f1110050000000d7f11100380000000ff211006c00000034c312000c00000020437265617465206120766573746564207472616e736665722e202d2060746172676574603a20546865206163636f756e7420746861742073686f756c64206265207472616e7366657272656420746865207665737465642066756e64732e202d2060616d6f756e74603a2054686520616d6f756e74206f662066756e647320746f207472616e7366657220616e642077696c6c206265207665737465642e202d20607363686564756c65603a205468652076657374696e67207363686564756c6520617474616368656420746f20746865207472616e736665722e20456d697473206056657374696e6743726561746564602e202d20604f283129602e202d2044625765696768743a20332052656164732c20332057726974657320202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c205b53656e646572204163636f756e745d20202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c205b53656e646572204163636f756e745d202d2042656e63686d61726b3a203130302e33202b202e333635202a206c20c2b57320286d696e2073717561726520616e616c7973697329202d205573696e672031303020c2b5732066697865642e20417373756d696e67206c657373207468616e203530206c6f636b73206f6e20616e7920757365722c20656c7365207765206d61792077616e7420666163746f7220696e206e756d626572206f66206c6f636b732e74617267657456657374696e67496e666f3c42616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e20556e6c6f636b20616e79207665737465642066756e6473206f662061206074617267657460206163636f756e742e202d2060746172676574603a20546865206163636f756e742077686f7365207665737465642066756e64732073686f756c6420626520756e6c6f636b65642e204d75737420686176652066756e6473207374696c6c206c6f636b656420756e6465722074686973206d6f64756c652e20456d69747320656974686572206056657374696e67436f6d706c6574656460206f72206056657374696e6755706461746564602e20202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e7420202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e74202d2042656e63686d61726b3a20202020202d20556e6c6f636b65643a2034342e33202b202e323934202a206c20c2b57320286d696e2073717561726520616e616c797369732920202020202d204c6f636b65643a2034382e3136202b202e313033202a206c20c2b57320286d696e2073717561726520616e616c7973697329202d205573696e6720353020c2b5732066697865642e20417373756d696e67206c657373207468616e203530206c6f636b73206f6e20616e7920757365722c20656c7365207765206d61792077616e7420666163746f7220696e206e756d626572206f66206c6f636b732e20556e6c6f636b20616e79207665737465642066756e6473206f66207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e6473207374696c6c202d2044625765696768743a20322052656164732c20322057726974657320202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c205b53656e646572204163636f756e745d20202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c205b53656e646572204163636f756e745d20202020202d20556e6c6f636b65643a2034382e3736202b202e303438202a206c20c2b57320286d696e2073717561726520616e616c797369732920202020202d204c6f636b65643a2034342e3433202b202e323834202a206c20c2b57320286d696e2073717561726520616e616c79736973290000000000dfd91100070000000102000000000000d0cf12000c0000000000000081f21100290000000000000000000000000000000000000000131300d4f611000000000000000000e4f611000100000000000000000000001f000000000000000100000038000000ecf611003600000020496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e0000000000005cf711001100000000000000a9f812000c000000000000000013130070f71100000000000000000080f7110001000000000000004d696e5665737465645472616e736665720000001f0000000000000001000000bf00000088f711004700000020546865206d696e696d756d20616d6f756e7420746f206265207472616e7366657272656420746f206372656174652061206e65772076657374696e67207363686564756c652e0000000000bddb11000900000000000000fcf711000200000000000000000000002cf811000a0000000000000000000000bddb11000900000000000000c7f911001900000000000000e0f911000a00000000000000eaf911002f00000091c212000b0000007cf8110048000000c4f811002d0000000013130000000000f1f811002300000014f911002c00000040f911004f0000008ff9110017000000a6f911002100000034c312000c000000202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020616e642045206973206c656e677468206f66202020604865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373602020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b602020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c2020206052656365697665644865617274626561747360202d2044625772697465733a2060526563656976656448656172746265617473604865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e617475726500000000000000cedb11000e000000000000000000000090d012000e000000000000000000000000000000000000000000000000000000000000000013130004fc110000000000000000007cfb110006000000000000000100000000000000dcdb1100040000000000000000000000acfb1100130000000000000000000000000000000000000000000000000000000000000000131300840412000000000000000000c0fb110001000000000000000100000000000000c8fb1100120000000205050000000000148312000c00000000000000dafb1100090000000000000059c91200070000000000000000131300e4fb11000000000000000000f4fb110002000000000000000000000000000000e0e411000e0000000205050000000000148312000c00000000000000cc8312000e00000000000000c2c4120003000000000000000013130004fc1100000000000000000014fc11000200000000000000010000002bfd11004c000000001313000000000077fd110044000000bbfd110034000000effd1100400000002ffe11004e0000005665633c543a3a417574686f7269747949643e00f7fc11003400000052656365697665644865617274626561747341757468496e646578001f0000000000000001000000c70000009bfc11003c000000d7fc1100200000001f00000000000000010000003400000024fc11004500000069fc11003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00000000000000f8d611000900000000000000d8fe1100010000000000000000000000d8221200010000000000000000000000e6d611001200000000000000f0fe110001000000000000000000000008ff11000400000000000000000000003700120005000000000000003c0012001600000000000000beff11000600000000000000c4ff11007300000028ff110040000000001313000000000068ff110046000000aeff1100100000002050726f7669646520612070726f6f66207468617420736f6d652076616c696461746f722068617320636f6d6d69746564206120646f75626c652d766f74652e205468652077656967687420697320303b20696e206f7264657220746f2061766f696420446f53206120605369676e6564457874656e73696f6e602076616c69646174696f6e20697320696d706c656d656e7465642e7265706f7274446f75626c65566f74655265706f72743c3c543a3a4b65794f776e657250726f6f6653797374656d2061730a20202020202020202020202020202020204b65794f776e657250726f6f6653797374656d3c284b65795479706549642c2056616c696461746f724964293e3e3a3a50726f6f663e68656164735665633c417474657374656443616e6469646174653e000000000000d90113000b0000000000000000000000740412001000000000000000000000000000000000000000000000000000000000000000001313008404120000000000000000009404120001000000000000000100000000000000e40113000400000001050000000000002a05130006000000000000004d5e12000e00000000000000000000000000000000000000001313000405120000000000000000009c041200010000000000000000000000000000004fde11000c00000001050000000000002a0513000600000000000000a4041200200000000000000000000000000000000000000000131300c40412000000000000000000d40412000300000000000000010000000000000047de1100080000000105000000000000ec04120018000000000000004d5e12000e0000000000000000000000000000000000000000131300040512000000000000000000140512000200000000000000000000000000000038de11000f0000000000000000000000240512001d0000000000000000000000000000000000000000000000000000000000000000131300440512000000000000000000540512000100000000000000010000000000000087dd11001200000001050000000000002a051300060000000000000090d012000e00000000000000000000000000000000000000001313005c05120000000000000000000013130000000000000000000000000000000000e80113000a00000001050000000000002a05130006000000000000004d5e12000e00000000000000000000000000000000000000001313006c05120000000000000000000013130000000000000000000100000000000000f20113000500000001050000000000002a05130006000000000000006c5e12000800000000000000000000000000000000000000001313007c05120000000000000000008c05120001000000000000000000000000000000f70113001200000001050000000000002a051300060000000000000094051200120000000000000000000000000000000000000000131300a80512000000000000000000b805120002000000000000000100000000000000090213001600000001050000000000002a0513000600000000000000c80512000a0000000000000000000000000000000000000000131300d40512000000000000000000e4051200030000000000000001000000000000001f0213000d00000000000000000000002c6312000b0000000000000000000000000000000000000000000000000000000000000000131300fc05120000000000000000000c061200010000000000000001000000000000002c0213000900000000000000000000002c6312000b0000000000000000000000000000000000000000000000000000000000000000131300140612000000000000000000240612000400000000000000000000005665633c56616c696461746f7249643e1f0000000000000001000000360000005b0a120025000000260a1200350000005061726150617374436f64654d6574613c543a3a426c6f636b4e756d6265723e1f0000000000000001000000c80000006509120052000000b709120052000000090a12001d000000285061726149642c20543a3a426c6f636b4e756d626572291f000000000000000100000038000000060912004e00000054091200110000005665633c285061726149642c20543a3a426c6f636b4e756d626572293e0000001f000000000000000100000036000000dd081200290000001f0000000000000001000000380000001f0000000000000001000000c90000001f000000000000000100000038000000aa081200330000005665633c5570776172644d6573736167653e00001f00000000000000010000003600000031081200470000007808120032000000287533322c207533322900001f0000000000000001000000ca0000004b071200510000009c07120056000000f20712003f0000001f00000000000000010000003600000007071200440000001f00000000000000010000003800000044061200560000009a061200520000000013130000000000ec0612001b0000002060536f6d6560206966207468652070617261636861696e20686561647320676574207570646174656420696e207468697320626c6f636b2c20616c6f6e672077697468207468652070617261636861696e20494473207468617420646964207570646174652e204f72646572656420696e207468652073616d652077617920617320607265676973747261723a3a416374697665602028692e652e20627920506172614964292e20604e6f6e6560206966206e6f742079657420757064617465642e20546865206f726465726564206c697374206f662050617261496473207468617420686176652061206052656c6179446973706174636851756575656020656e7472792e2053697a65206f6620746865206469737061746368207175657565732e205365706172617465642066726f6d2061637475616c206461746120696e206f7264657220746f2061766f696420636f73746c79206465636f64696e67207768656e20636865636b696e6720726563656970742076616c69646974792e204669727374206974656d20696e207475706c652069732074686520636f756e74206f66206d65737361676573207365636f6e642069662074686520746f74616c206c656e6774682028696e20627974657329206f6620746865206d657373616765207061796c6f6164732e204d6573736167657320726561647920746f2062652064697370617463686564206f6e746f207468652072656c617920636861696e2e204974206973207375626a65637420746f20604d41585f4d4553534147455f434f554e546020616e64206057415445524d41524b5f4d4553534147455f53495a45602e20546865206865616473206f66207468652070617261636861696e7320726567697374657265642061742070726573656e742e205061737420636f6465207072756e696e672c20696e206f72646572206f66207072696f726974792e2041637475616c207061737420636f64652c20696e64696361746564206279207468652070617261636861696e20616e642074686520626c6f636b206e756d62657220617420776869636820697420626563616d65206f757464617465642e205061737420636f6465206f662070617261636861696e732e205468652070617261636861696e73207468656d73656c766573206d6179206e6f74206265207265676973746572656420616e796d6f72652c2062757420776520616c736f206b65657020746865697220636f6465206f6e2d636861696e20666f72207468652073616d6520616d6f756e74206f662074696d65206173206f7574646174656420636f646520746f20617373697374207769746820617661696c6162696c6974792e205468652061637469766520636f6465206f6620612063757272656e746c792d726567697374657265642070617261636861696e2e20416c6c20617574686f72697469657327206b65797320617420746865206d6f6d656e742e7c1313005a000000740100001b0000007c1313005a000000670100000d0000007573657220646f6573206e6f74206861766520616e206578697374696e672076657374696e67207363686564756c653b20712e652e642e001f0000000c0000000400000015000000f80a12005b000000090100000d0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f76657374696e672f7372632f6c69622e7273000000000058d811000b00000000000000700b12000100000000000000780b1200200000002053656e646572206d75737420626520746865205375646f206163636f756e744272616e63682077697468206e6f2073756276616c7565732e20536f6d657468696e672077656e742077726f6e672e757365645f696e646578206f6e6c7920736574206966206f636375706965643b20716564007c1313005a000000b2040000250000007c1313005a000000de040000250000007c1313005a000000290500001c000000496e73657274696f6e206e657665722064656c657465732e7c1313005a0000006202000025000000617373657274696f6e206661696c65643a20216578697374696e675f6b65792e69735f656d7074792829000000000000b8d911000a00000000000000c40c1200010000000000000000000000a1d911001700000000000000cc0c120001000000000000000000000098d911000900000000000000d40c12000100000000000000750d1200220000001e0d120057000000dc0c12004200000020416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e20416e206578697374696e672076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e7420746861742063616e6e6f7420626520636c6f6262657265642e20546865206163636f756e7420676976656e206973206e6f742076657374696e672e0000000000b3db11000a00000000000000d00d1200010000000000000000000000a0db11001300000000000000d80d12000100000000000000f60d120019000000e00d120016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e617373657274696f6e206661696c65643a2073656c662e6c656e2829203c204341504143495459617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d2031617373657274696f6e206661696c65643a2073656c662e686569676874203e2030617373657274696f6e206661696c65643a2073656c662e6c656e2829203e203063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650000e40e120056000000a5040000520000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962616c6c6f632f636f6c6c656374696f6e732f62747265652f6e6f64652e72730000e40e120056000000b60400004c000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d20316d6f72655f6174746573746174696f6e7356524648617368565246526573756c747672662d696e7672662d6f75744368617267655472616e73616374696f6e5061796d656e747363686564756c6563616e63656c7363686564756c655f6e616d656463616e63656c5f6e616d6564000000000074101200090000000000000080101200020000000000000000000000001313000000000000000000000000009010120008000000000000008010120002000000000000000000000000131300000000000000000000000000981012000a00000000000000a41012000300000000000000000000000013130000000000000000005363686564756c6564000000e31012000b000000c2c412000300000043616e63656c6564446973706174636865640000bc10120018000000d41012000f0000007c2e12000e0000005461736b416464726573733c426c6f636b4e756d6265723e4f7074696f6e3c5665633c75383e3e426c6f636b4e756d62657246696e616c697479547261636b6572526563656e7448696e747352616e646f6d6e657373436f6c6c656374697665466c697052616e646f6d4d6174657269616c66696e616c5f68696e742f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f72616e646f6d6e6573732d636f6c6c6563746976652d666c69702f7372632f6c69622e727300001f0000000400000004000000cb000000cc000000cd0000001f00000004000000040000000a0000001f00000004000000040000000e000000506f7374496e666f3a20546f6f4d616e794174746573746174696f6e735570646174654f72646572656448696e74734d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b20716564001013120064000000700000002b000000726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b2071656400001f00000004000000040000000c00000010131200640000007b0000001b0000007072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b20716564001013120064000000960000001100000010131200640000009000000019000000101312006400000091000000190000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f66696e616c6974792d747261636b65722f7372632f6c69622e727300000000ea11120013000000000000009013120001000000000000009813120035000000204d6f7265206174746573746174696f6e732063616e206265206164646564206f6e6c79206f6e636520696e206120626c6f636b2e000000381112006e00000055000000110000005363686564756c65724c6f6f6b75704167656e6461486973746f726963616c53657373696f6e7300ce0000005800000008000000cf000000d0000000ce0000005800000008000000d1000000d2000000d3000000d4000000d5000000d6000000d70000006661696c656420746f20696e7365727420696e746f2074726965000000000000c70f1200080000000000000010151200040000000000000000000000701512000a0000000000000000000000cf0f12000600000000000000c0151200020000000000000000000000f01512000a0000000000000000000000d50f12000e0000000000000040161200050000000000000000000000b81612000a0000000000000000000000e30f12000c0000000000000008171200010000000000000000000000201712000a0000000000000000000000f0181200040000000000000090d012000e00000000000000f41812000e000000000000000219120028000000000000002a19120008000000000000003219120012000000000000004419120004000000000000004819120017000000bd1912001d000000001313000000000091c212000b0000008f17120028000000da19120024000000aec612000d000000aa19120013000000fe19120014000000121a12004f00000034c312000c00000000000000f0181200040000000000000090d012000e000000000000008b4612000500000000000000c2c41200030000005f19120026000000001313000000000091c212000b0000008f171200280000008519120025000000aec612000d000000aa19120013000000f71712001c000000131812005000000034c312000c00000000000000355f1200020000000000000059c912000700000000000000f0181200040000000000000090d012000e00000000000000f41812000e000000000000000219120028000000000000002a191200080000000000000032191200120000000000000044191200040000000000000048191200170000006318120017000000001313000000000091c212000b0000008f171200280000007a18120023000000aec612000d000000dc1712001b000000f71712001c0000009d1812005300000034c312000c00000000000000355f1200020000000000000059c9120007000000701712001f000000001313000000000091c212000b0000008f17120028000000b717120025000000aec612000d000000dc1712001b000000f71712001c000000131812005000000034c312000c0000002043616e63656c2061206e616d6564207363686564756c6564207461736b2e202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73202d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b57320202020202d20526561643a204167656e64612c204c6f6f6b757020202020202d2057726974653a204167656e64612c204c6f6f6b7570202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73205363686564756c652061206e616d6564207461736b2e202d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573202d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c737768656e6d617962655f706572696f6469634f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e7072696f726974797363686564756c653a3a5072696f7269747963616c6c426f783c3c542061732054726169743e3a3a43616c6c3e2043616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e202d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b57320202020202d20526561643a204167656e646120416e6f6e796d6f75736c79207363686564756c652061207461736b2e202d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b57320202020202d2057726974653a204167656e6461202d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c734661696c6564546f43616e63656c0000000000ef13120006000000010500000000000090d012000e00000000000000201b12003a00000000000000000000000000000000000000001313005c1b120000000000000000006c1b120001000000000000000100000000000000e913120006000000010500000000000059c912000700000000000000741b12001b0000000000000000000000000000000000000000131300901b12000000000000000000a01b12000100000000000000000000005665633c4f7074696f6e3c5363686564756c65643c3c542061732054726169743e3a3a43616c6c2c20543a3a426c6f636b4e756d6265723e3e3e00001f000000000000000100000036000000e81b1200530000005461736b416464726573733c543a3a426c6f636b4e756d6265723e001f00000000000000010000004b000000a81b120040000000204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e4661696c6564546f5363686564756c654661696c656420746f2067656e657261746520686973746f726963616c20616e6365737472792d696e636c7573696f6e2070726f6f662e000000000004a91d12000e000000b71d12000b000000566563746f72206361706163697479206f766572666c6f77521d1200570000004b00000009000000ffffff1f0a1d120013000000381d12001a0000000a1d1200130000001d1d12001b000000617373657274696f6e206661696c65643a2062697473203c3d20726573756c742e6c656e28294361706163697479206f766572666c6f773a20206f766572666c6f777320616c6c6f636174696f6e2073697a6520206f766572666c6f7773206d6178696d756d206c656e677468202f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e31372e342f7372632f7665632f6170692e7273566563746f72206c656e67746820206f766572666c6f7773200000000000002e1112000a00000000000000f01d1200010000000000000000000000081e1200020000000000000000000000701e12000400000000000000741e120017000000181e12003d000000551e12001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e0000000000fd1012000b0000000000000000000000442012001300000000000000000000000000000000000000000000000000000000000000001313006020120000000000000000005820120001000000000000000100000000000000031212000c00000000000000000000004420120013000000000000000000000000000000000000000000000000000000000000000013130060201200000000000000000070201200010000000000000001000000000000000f12120006000000000000000000000090d012000e00000000000000000000000000000000000000000000000000000000000000001313007820120000000000000000008820120001000000000000000100000000000000fd11120006000000000000000000000090d012000e0000000000000000000000000000000000000000000000000000000000000000131300902012000000000000000000a020120001000000000000000000000000000000a82012000b00000000000000000000000fb91200040000000000000000000000000000000000000000000000000000000000000000131300a42412000000000000000000001313000000000000000000010000005665633c543a3a426c6f636b4e756d6265723e00162112000e0000001f00000000000000010000003600000000211200160000001f000000000000000100000034000000f42012000c0000001f000000000000000100000038000000b320120041000000496e697469616c697a65642046696e616c2068696e7420746f206170706c7920696e2074686520626c6f636b2e20604e6f6e6560206d65616e73202273616d6520617320706172656e74222e20546865206d656469616e2e204f72646572656420726563656e742068696e74732e20526563656e742068696e74732e00000000942112000a0000000000000090d012000e0000000000000000131300a02112000000000000000000b0211200010000000000000000000000b82112000d0000000000000090d012000e0000000000000000131300c82112000000000000000000d8211200010000000000000057696e646f7753697a6500001f0000000000000001000000d800000027221200460000005265706f72744c6174656e63790000001f0000000000000001000000d9000000e021120047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e50617261426c6f636b4174746573746174696f6e73526563656e7450617261426c6f636b73000000000000810f12001100000000000000c0221200010000000000000000000000d82212000100000000000000000000002523120005000000000000002a23120010000000e0221200450000002050726f766964652063616e64696461746520726563656970747320666f722070617261636861696e732c20696e20617363656e64696e67206f726465722062792069642e5f6d6f72654d6f72654174746573746174696f6e730000000000008222120010000000010500000000000090d012000e000000000000004424120011000000000000000000000000000000000000000013130058241200000000000000000068241200020000000000000000000000000000006d22120015000000020506000000000090d012000e00000000000000677212000400000000000000782412001400000000000000001313008c24120000000000000000009c241200010000000000000000000000000000002c0213000900000000000000000000000fb91200040000000000000000000000000000000000000000000000000000000000000000131300a4241200000000000000000000131300000000000000000001000000496e636c75646564426c6f636b733c543e0000001f000000000000000100000038000000de2412003c0000001a25120033000000426c6f636b4174746573746174696f6e733c543e1f000000000000000100000038000000b42412002a0000001f000000000000000100000038000000204174746573746174696f6e73206f6e206120726563656e742070617261636861696e20626c6f636b2e2041206d617070696e672066726f6d206d6f64756c617220626c6f636b206e756d62657220286e2025204174746573746174696f6e506572696f642920746f2073657373696f6e20696e64657820616e6420746865206c697374206f662063616e646964617465206861736865732e5472616e73616374696f6e5061796d656e740000000000b8251200110000000000000000000000c92512000a0000000000000000000000000000000000000000000000000000000000000000131300d42512000000000000000000001313000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572001f00000000000000010000003c00000000000000542612001200000000000000a9f812000c000000000000000013130068261200000000000000000078261200010000000000000000000000802612000b000000000000008b261200290000000000000000131300b42612000000000000000000c426120001000000000000005472616e73616374696f6e4279746546656500001f0000000000000001000000da0000000f27120043000000576569676874546f4665655665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e1f0000000000000001000000db000000cc261200430000002054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e000000000000201112000e00000000000000000000008f5012000c0000000000000000000000000000000000000000000000000000000000000000131300ac2712000000000000000000bc2712000300000000000000010000001f000000000000000100000036000000d4271200580000002c28120058000000842812001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e416c72656164795570646174656442616448696e74000000000000952812000e00000000000000e4281200010000000000000000000000a32812000700000000000000ec28120001000000000000001829120032000000f4281200240000002046696e616c697a6564206865696768742061626f766520626c6f636b206e756d6265722046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b73776170646572656769737465725f7061726174687265616473656c6563745f7061726174687265616472656769737465725f706172617468726561647365745f7468726561645f636f756e74646572656769737465725f7061726172656769737465725f7061726150617261416c7265616479457869737473496e76616c6964436861696e4964496e76616c69645468726561644964436f6465546f6f4c617267654865616444617461546f6f4c617267654c696d697450617261746872656164436f6d6d697473496e7374616e636531436f6c6c656374697665496e7374616e636532436f6c6c656374697665000000442a120023000000605f5f49676e6f7265602063616e206e6576657220626520636f6e73747275637465644475706c69636174654f6666656e63655265706f7274496e76616c69644b65794f776e65727368697050726f6f66546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65647265706f72745f65717569766f636174696f6e3a6772616e6470615f617574686f72697469657357726f6e6750726f706f73616c4c656e67746857726f6e6750726f706f73616c576569676874546f6f4d616e7950726f706f73616c73546f6f4561726c79416c7265616479496e697469616c697a65644475706c6963617465566f746557726f6e67496e64657850726f706f73616c4d697373696e674475706c696361746550726f706f73616c7365745f6d656d626572736578656375746570726f706f7365636c6f7365000000000c7112000800000000000000c02c1200040000000000000000000000e02c1200020000000000000000000000f02c12000500000000000000f82c1200050000000000000000000000202d1200020000000000000000000000302d12000800000000000000bc711200010000000000000000000000382d1200010000000000000000000000402d12000b00000000000000bc7112000100000000000000000000004c2d1200010000000000000000000000542d120008000000000000005c2d12000200000000000000000000006c2d1200010000000000000000000000742d12000e000000000000005c2d1200020000000000000000000000842d12000100000000000000000000008c2d12000600000000000000942d1200030000000000000000000000ac2d120001000000000000000eb51200090000008b7312000d0000006772120004000000e52d12000b000000782f120053000000cb2f120010000000566f7465640000000eb512000900000067721200040000000fb9120004000000e52d12000b000000e52d12000b000000f02e120042000000322f120046000000417070726f766564bf2e120031000000446973617070726f766564008a2e120035000000457865637574656467721200040000007c2e12000e0000003b2e1200410000004d656d62657245786563757465640000f02d12004b000000436c6f73656400006772120004000000e52d12000b000000e52d12000b000000b42d12003100000020412070726f706f73616c2077617320636c6f73656420616674657220697473206475726174696f6e207761732075702e4d656d626572436f756e7420412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e4469737061746368526573756c742041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e2041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e00ec2f120038000000ea000000240000002f55736572732f6761762f436f72652f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f7265676973747261722e7273ec2f120038000000e90000002200000000446562746f727300000000b32912001100000000000000c8301200010000000000000000000000c42912000e00000000000000d0301200010000000000000000000000d22912000f00000000000000d8301200010000000000000000000000e12912000c00000000000000e0301200010000000000000000000000ed2912001000000000000000e83012000100000000000000523112001a0000003c3112001600000025311200170000000d31120018000000f03012001d00000020496e76616c69642070617261206865616420646174612073697a652e20496e76616c6964207061726120636f64652073697a652e20496e76616c696420706172617468726561642049442e20496e76616c69642070617261636861696e2049442e2050617261636861696e20616c7265616479206578697374732eec2f120038000000730200002d0000004772616e64706146696e616c69747950656e64696e674368616e67655374617465000000ec2f1200380000000902000011000000640000003b32120049000000843212000a0000008e3212000100000070616c6c65745f636f6c6c6563746976652f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f636f6c6c6563746976652f7372632f6c69622e72734e6577206d656d6265727320636f756e742065786365656473206d6178696d756d20616d6f756e74206f66206d656d626572732065787065637465642e202865787065637465643a202c2061637475616c3a20295374616c6c656400001f0000000800000004000000dc000000dd0000000000000000000000de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f0000000800000004000000dc000000dd0000000000000000000000de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e657874466f72636564000000000000c02a120013000000000000000035120002000000000000000000000030351200080000000000000000000000023712001200000000000000143712002a000000000000003e3712000f000000000000004d371200100000007035120043000000b33512003e000000f13512003f000000303612001200000000131300000000004236120041000000833612004a000000cd36120035000000205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e2053696e63652074686520776569676874206f66207468652065787472696e73696320697320302c20696e206f7264657220746f2061766f696420446f53206279207375626d697373696f6e206f6620696e76616c69642065717569766f636174696f6e207265706f7274732c2061206d616e6461746f7279207072652d76616c69646174696f6e206f66207468652065787472696e73696320697320696d706c656d656e74656420696e206120605369676e6564457874656e73696f6e602e65717569766f636174696f6e5f70726f6f6645717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e6b65795f6f776e65725f70726f6f66543a3a4b65794f776e657250726f6f660000000000000098311200050000000000000000000000703912001b00000000000000000000000000000000000000000000000000000000000000001313008c39120000000000000000009c391200010000000000000001000000000000008b3112000d0000000000000000000000a4391200230000000000000000000000000000000000000000000000000000000000000000131300206412000000000000000000c839120001000000000000000000000000000000c83412000a000000000000000000000090d012000e0000000000000000000000000000000000000000000000000000000000000000131300503a12000000000000000000d0391200010000000000000000000000000000008f321200070000000000000000000000d8391200200000000000000000000000000000000000000000000000000000000000000000131300f83912000000000000000000083a120001000000000000000000000000000000103a12000c00000000000000000000001c3a1200050000000000000000000000000000000000000000000000000000000000000000131300243a12000000000000000000343a120002000000000000000100000000000000443a12000c00000001050000000000001c3a12000500000000000000148312000c0000000000000000000000000000000000000000131300503a12000000000000000000603a120004000000000000000000000053746f72656453746174653c543a3a426c6f636b4e756d6265723e001f0000000000000001000000df0000002a3c12002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e00f93b120031000000ca3b12002f00000028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572291f00000000000000010000004b000000a63b12002400000043757272656e74536574496453657449640000001f0000000000000001000000420000001e3b120057000000753b120031000000536574496453657373696f6e1f000000000000000100000038000000803a120056000000d63a12001a0000000013130000000000f03a12002e0000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e2054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e0000000000006e2b12000b000000000000002c3d1200030000000000000000000000743d1200180000000000000000000000792b12000700000000000000343e1200020000000000000000000000643e12000a0000000000000000000000802b12000700000000000000b43e1200030000000000000000000000fc3e12001b00000000000000000000009db612000400000000000000d43f12000300000000000000000000001c4012000c0000000000000000000000872b120005000000000000007c401200040000000000000000000000dc4012001b0000000000000000000000625012000b00000000000000adf2120011000000000000006d5012000500000000000000725012001400000000000000865012000900000000000000e52d12000b000000974c1200210000000013130000000000b84c1200520000000a4d120039000000434d12004e000000914d12002b0000000013130000000000bc4d1200160000000013130000000000d24d120056000000284e120049000000001313000000000091c212000b0000009a4412000a000000714e120015000000864e120039000000bf4e120039000000f84e12002700000090451200060000001f4f12005d0000007c4f12003c000000b84f1200520000000a5012005800000034c312000c000000000000008346120008000000000000007a4b12001e00000000000000b44612000c00000000000000ebea12000c000000984b12003d0000000013130000000000d54b12002b000000001313000000000091c212000b0000009a4412000a000000004c120061000000614c120036000000bf4712000a00000034c312000c000000000000005d4b12000900000000000000664b120014000000000000008346120008000000000000007a4b12001e00000000000000b44612000c00000000000000ebea12000c000000d04712003f00000000131300000000000f48120022000000001313000000000031481200510000008248120016000000001313000000000091c212000b0000009a4412000a000000984812002c000000c244120039000000fb44120038000000c448120032000000f64812003e00000034491200400000009045120006000000744912002e000000a24912003d000000df4912002b0000000a4a1200430000004d4a12002f0000007c4a120037000000b34a12003a000000ed4a120034000000214b120030000000514b12000c00000034c312000c000000000000008346120008000000000000009ed0120007000000000000008b4612000500000000000000af9912001600000000000000c947120007000000000000000fb9120004000000c04612003d0000000013130000000000fd46120024000000001313000000000091c212000b0000009a4412000a00000021471200430000009045120006000000644712002c000000904712002f000000bf4712000a00000034c312000c000000000000008346120008000000000000009ed0120007000000000000008b4612000500000000000000af9912001600000000000000904612001500000000000000a54612000f00000000000000b44612000c00000000000000ebea12000c000000b4411200540000000013130000000000084212005600000000131300000000005e42120053000000b1421200300000000013130000000000e142120053000000344312004a00000000131300000000007e43120063000000e1431200590000003a44120060000000001313000000000091c212000b0000009a4412000a000000a44412001e000000c244120039000000fb441200380000003345120033000000664512002a00000090451200060000009645120044000000da451200600000003a46120038000000724612001100000034c312000c00000020436c6f7365206120766f746520746861742069732065697468657220617070726f7665642c20646973617070726f766564206f722077686f736520766f74696e6720706572696f642068617320656e6465642e204d61792062652063616c6c656420627920616e79207369676e6564206163636f756e7420696e206f7264657220746f2066696e69736820766f74696e6720616e6420636c6f7365207468652070726f706f73616c2e2049662063616c6c6564206265666f72652074686520656e64206f662074686520766f74696e6720706572696f642069742077696c6c206f6e6c7920636c6f73652074686520766f74652069662069742069732068617320656e6f75676820766f74657320746f20626520617070726f766564206f7220646973617070726f7665642e2049662063616c6c65642061667465722074686520656e64206f662074686520766f74696e6720706572696f642061627374656e74696f6e732061726520636f756e7465642061732072656a656374696f6e7320756e6c6573732074686572652069732061207072696d65206d656d6265722073657420616e6420746865207072696d65206d656d626572206361737420616e20617070726f76616c2e202b206070726f706f73616c5f7765696768745f626f756e64603a20546865206d6178696d756d20616d6f756e74206f662077656967687420636f6e73756d656420627920657865637574696e672074686520636c6f7365642070726f706f73616c2e202b20606c656e6774685f626f756e64603a2054686520757070657220626f756e6420666f7220746865206c656e677468206f66207468652070726f706f73616c20696e2073746f726167652e20436865636b656420766961202020202020202020202020202020202020206073746f726167653a3a726561646020736f206974206973206073697a655f6f663a3a3c7533323e2829203d3d203460206c6172676572207468616e207468652070757265206c656e6774682e20232320576569676874202d20604f2842202b204d202b205031202b20503229602077686572653a2020202d20604260206973206070726f706f73616c602073697a6520696e20627974657320286c656e6774682d6665652d626f756e646564292020202d20604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20605031602069732074686520636f6d706c6578697479206f66206070726f706f73616c6020707265696d6167652e2020202d20605032602069732070726f706f73616c2d636f756e742028636f64652d626f756e64656429202d2044423a20202d20322073746f726167652072656164732028604d656d62657273603a20636f64656320604f284d29602c20605072696d65603a20636f64656320604f283129602920202d2033206d75746174696f6e73202860566f74696e67603a20636f64656320604f284d29602c206050726f706f73616c4f66603a20636f64656320604f284229602c206050726f706f73616c73603a20636f64656320604f28503229602920202d20616e79206d75746174696f6e7320646f6e65207768696c6520657865637574696e67206070726f706f73616c6020286050316029202d20757020746f2033206576656e747370726f706f73616c696e64657870726f706f73616c5f7765696768745f626f756e64436f6d706163743c5765696768743e6c656e6774685f626f756e642041646420616e20617965206f72206e617920766f746520666f72207468652073656e64657220746f2074686520676976656e2070726f706f73616c2e205265717569726573207468652073656e64657220746f2062652061206d656d6265722e202d20604f284d296020776865726520604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20312073746f72616765207265616420604d656d62657273602028636f64656320604f284d2960292020202d20312073746f72616765206d75746174696f6e2060566f74696e67602028636f64656320604f284d296029202d2031206576656e74617070726f7665204164642061206e65772070726f706f73616c20746f2065697468657220626520766f746564206f6e206f72206578656375746564206469726563746c792e205265717569726573207468652073656e64657220746f206265206d656d6265722e20607468726573686f6c64602064657465726d696e65732077686574686572206070726f706f73616c60206973206578656375746564206469726563746c792028607468726573686f6c64203c20326029206f722070757420757020666f7220766f74696e672e202d20604f2842202b204d202b2050312960206f7220604f2842202b204d202b20503229602077686572653a2020202d206272616e6368696e6720697320696e666c75656e63656420627920607468726573686f6c64602077686572653a20202020202d20605031602069732070726f706f73616c20657865637574696f6e20636f6d706c65786974792028607468726573686f6c64203c2032602920202020202d20605032602069732070726f706f73616c732d636f756e742028636f64652d626f756e646564292028607468726573686f6c64203e3d203260292020202d20312073746f726167652072656164206069735f6d656d626572602028636f64656320604f284d2960292020202d20312073746f726167652072656164206050726f706f73616c4f663a3a636f6e7461696e735f6b6579602028636f64656320604f28312960292020202d20444220616363657373657320696e666c75656e63656420627920607468726573686f6c64603a20202020202d204549544845522073746f7261676520616363657373657320646f6e65206279206070726f706f73616c602028607468726573686f6c64203c2032602920202020202d204f522070726f706f73616c20696e73657274696f6e2028607468726573686f6c64203c3d20326029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c73602028636f64656320604f285032296029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c436f756e74602028636f64656320604f2831296029202020202020202d20312073746f72616765207772697465206050726f706f73616c4f66602028636f64656320604f2842296029202020202020202d20312073746f726167652077726974652060566f74696e67602028636f64656320604f284d2960292020202d2031206576656e747468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e202d20604f284d202b2050296020776865726520604d60206d656d626572732d636f756e742028636f64652d626f756e6465642920616e642060506020636f6d706c6578697479206f66206469737061746368696e67206070726f706f73616c60202d2044423a203120726561642028636f64656320604f284d296029202b20444220616363657373206f66206070726f706f73616c60205365742074686520636f6c6c6563746976652773206d656d626572736869702e202d20606e65775f6d656d62657273603a20546865206e6577206d656d626572206c6973742e204265206e69636520746f2074686520636861696e20616e642070726f7669646520697420736f727465642e202d20607072696d65603a20546865207072696d65206d656d6265722077686f736520766f74652073657473207468652064656661756c742e202d20606f6c645f636f756e74603a2054686520757070657220626f756e6420666f72207468652070726576696f7573206e756d626572206f66206d656d6265727320696e2073746f726167652e202020202020202020202020202020205573656420666f722077656967687420657374696d6174696f6e2e20526571756972657320726f6f74206f726967696e2e204e4f54453a20446f6573206e6f7420656e666f7263652074686520657870656374656420604d41585f4d454d4245525360206c696d6974206f6e2074686520616d6f756e74206f66206d656d626572732c20627574202020202020207468652077656967687420657374696d6174696f6e732072656c79206f6e20697420746f20657374696d61746520646973706174636861626c65207765696768742e202d20604f284d50202b204e29602077686572653a2020202d20604d60206f6c642d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20604e60206e65772d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d206050602070726f706f73616c732d636f756e742028636f64652d626f756e646564292020202d20312073746f72616765206d75746174696f6e2028636f64656320604f284d296020726561642c20604f284e29602077726974652920666f722072656164696e6720616e642077726974696e6720746865206d656d626572732020202d20312073746f7261676520726561642028636f64656320604f285029602920666f722072656164696e67207468652070726f706f73616c732020202d206050602073746f72616765206d75746174696f6e732028636f64656320604f284d29602920666f72207570646174696e672074686520766f74657320666f7220656163682070726f706f73616c2020202d20312073746f726167652077726974652028636f64656320604f283129602920666f722064656c6574696e6720746865206f6c6420607072696d656020616e642073657474696e6720746865206e6577206f6e656e65775f6d656d626572737072696d654f7074696f6e3c543a3a4163636f756e7449643e6f6c645f636f756e745665633c543a3a486173683e006c5212002400000050726f706f73616c4f663c542061732054726169743c493e3e3a3a50726f706f73616c003952120033000000566f7465733c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e000c5212002d000000fa51120012000000ac5112004e0000001c51120057000000735112003900000020546865206d656d6265722077686f2070726f7669646573207468652064656661756c7420766f746520666f7220616e79206f74686572206d656d62657273207468617420646f206e6f7420766f7465206265666f7265207468652074696d656f75742e204966204e6f6e652c207468656e206e6f206d656d6265722068617320746861742070726976696c6567652e205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e000000001f6f12000900000000000000000000008f5012000c0000000000000000000000000000000000000000000000000000000000000000131300a054120000000000000000009c50120001000000000000000100000000000000a45012000a00000001060000000000009ed012000700000000000000ae501200190000000000000000000000000000000000000000131300206412000000000000000000c850120001000000000000000000000000000000f7b612000600000001060000000000009ed012000700000000000000d0501200230000000000000000000000000000000000000000131300206412000000000000000000f450120001000000000000000000000000000000a09c12000d0000000000000000000000c2c41200030000000000000000000000000000000000000000000000000000000000000000131300486312000000000000000000fc50120001000000000000000100000000000000f0b61200070000000000000000000000adf21200110000000000000000000000000000000000000000000000000000000000000000131300b054120000000000000000000451120001000000000000000100000000000000f8ab1200050000000000000000000000d0cf12000c00000000000000000000000000000000000000000000000000000000000000001313002064120000000000000000000c5112000200000000000000000000001f0000000000000001000000360000001f00000000000000010000003600000000000000a62912000d00000000000000f455120004000000000000000000000054561200050000000000000000000000972912000f000000000000007c561200010000000000000000000000945612000100000000000000000000008729120010000000000000009c561200010000000000000000000000b4561200050000000000000000000000742912001300000000000000dc5612000200000000000000000000000c5712000800000000000000000000006329120011000000000000004c571200030000000000000000000000945712000500000000000000000000004e291200150000000000000000131300000000000000000000000000bc5712000700000000000000000000004a2912000400000000000000f45712000100000000000000000000000c581200080000000000000000000000355f120002000000000000007e5a12000f000000000000000860120004000000000000000c601200080000000000000055c9120004000000000000004d5e12000e000000000000005b5e120011000000000000006c5e120008000000375f12003e000000755f1200230000000013130000000000985f12003d000000d55f12003300000000000000355f120002000000000000007e5a12000f000000105f120025000000000000000b5f12000500000000000000c2c4120003000000745e1200500000000013130000000000c45e1200260000000013130000000000ea5e1200210000000000000055c9120004000000000000004d5e12000e000000000000005b5e120011000000000000006c5e120008000000e55c12002900000000131300000000000e5d120053000000615d12004e0000000013130000000000af5d12004c000000fb5d12004a000000455e12000800000000000000c55c120003000000000000007e5a12000f00000000000000c85c12000900000000000000d15c12000a00000000000000db5c12000a000000000000009ed0120007000000c85b1200410000000013130000000000095c120050000000595c120057000000b05c1200150000008d5a1200320000000013130000000000bf5a1200480000000013130000000000075b1200560000005d5b120051000000ae5b12001a00000000000000795a120005000000000000007e5a12000f0000004c58120059000000a558120059000000fe5812005700000000131300000000005559120058000000ad59120050000000fd59120056000000535a120026000000205377617020612070617261636861696e207769746820616e6f746865722070617261636861696e206f7220706172617468726561642e20546865206f726967696e206d7573742062652061206050617261636861696e602e2054686520737761702077696c6c2068617070656e206f6e6c7920696620746865726520697320616c726561647920616e206f70706f7369746520737761702070656e64696e672e204966207468657265206973206e6f742c2074686520737761702077696c6c2062652073746f72656420696e207468652070656e64696e67207377617073206d61702c20726561647920666f722061206c6174657220636f6e6669726d61746f727920737761702e20546865206050617261496460732072656d61696e206d617070656420746f207468652073616d652068656164206461746120616e6420636f646520736f2065787465726e616c20636f64652063616e2072656c79206f6e20605061726149646020746f2062652061206c6f6e672d7465726d206964656e746966696572206f662061206e6f74696f6e616c202270617261636861696e222e20486f77657665722c207468656972207363686564756c696e6720696e666f2028692e652e2077686574686572207468657927726520612070617261746872656164206f722070617261636861696e292c2061756374696f6e20696e666f726d6174696f6e20616e64207468652061756374696f6e206465706f736974206172652073776974636865642e6f74686572436f6d706163743c5061726149643e20446572656769737465722061207061726174687265616420616e6420726574726965766520746865206465706f7369742e204d7573742062652073656e742066726f6d2061206050617261636861696e60206f726967696e2077686963682069732063757272656e746c79206120706172617468726561642e20456e737572652074686174206265666f72652063616c6c696e672074686973207468617420616e792066756e647320796f752077616e7420656d70746965642066726f6d2074686520706172617468726561642773206163636f756e74206973206d6f766564206f75743b20616674657220746869732069742077696c6c20626520696d706f737369626c6520746f207265747269657665207468656d2028776974686f757420676f7665726e616e636520696e74657276656e74696f6e292e20506c61636520612062696420666f722061207061726174687265616420746f2062652070726f6772657373656420696e20746865206e65787420626c6f636b2e20546869732069732061206b696e64206f66207370656369616c207472616e73616374696f6e20746861742073686f756c642062652068656176696c79207072696f726974697a656420696e20746865207472616e73616374696f6e20706f6f6c206163636f7264696e6720746f20746865206076616c7565603b206f6e6c792060546872656164436f756e7460206f66207468656d206d61792062652070726573656e74656420696e20616e792073696e676c6520626c6f636b2e5f69645f636f6c6c61746f72436f6c6c61746f7249645f686561645f686173682052656769737465722061207061726174687265616420666f7220696d6d656469617465207573652e204d7573742062652073656e742066726f6d2061205369676e6564206f726967696e20746861742069732061626c6520746f206861766520506172617468726561644465706f7369742072657365727665642e2060636f64656020616e642060696e697469616c5f686561645f646174616020617265207573656420746f20696e697469616c697a6520746865207061726174687265616427732073746174652e20556e6c696b65206072656769737465725f70617261602c20746869732066756e6374696f6e20646f657320636865636b207468617420746865206d6178696d756d20636f64652073697a6520616e64206865616420646174612073697a6520617265207265737065637465642c206173207061726174687265616420726567697374726174696f6e20697320616e2061746f6d696320616374696f6e2e56616c69646174696f6e436f6465696e697469616c5f686561645f64617461486561644461746120526573657420746865206e756d626572206f6620706172617468726561647320746861742063616e2070617920746f206265207363686564756c656420696e20612073696e676c6520626c6f636b2e202d2060636f756e74603a20546865206e756d626572206f662070617261746872656164732e204d7573742062652063616c6c65642066726f6d20526f6f74206f726967696e2e636f756e74204465726567697374657220612070617261636861696e207769746820676976656e206964696420526567697374657220612070617261636861696e207769746820676976656e20636f64652e204d7573742062652063616c6c656420627920726f6f742e204661696c7320696620676976656e20494420697320616c726561647920757365642e20556e6c696b65207468652060526567697374726172602074726169742066756e6374696f6e206f66207468652073616d65206e616d652c207468697320636865636b732074686520636f646520616e642068656164206461746120616761696e73742073697a65206c696d6974732e696e666f50617261496e666f00000000cd0313000a00000000000000000000002c6312000b00000000000000000000000000000000000000000000000000000000000000001313003863120000000000000000000013130000000000000000000100000000000000e00313000b0000000000000000000000c2c412000300000000000000000000000000000000000000000000000000000000000000001313004863120000000000000000005863120001000000000000000100000000000000eb0313000f0000000000000000000000606312001e00000000000000000000000000000000000000000000000000000000000000001313005064120000000000000000008063120002000000000000000100000000000000fa031300060000000000000000000000906312002e0000000000000000000000000000000000000000000000000000000000000000131300c06312000000000000000000d063120006000000000000000100000000000000000413000a00000000000000000000002a05130006000000000000000000000000000000000000000000000000000000000000000013130000641200000000000000000010641200020000000000000001000000000000000a0413000b00000001050000000000002a05130006000000000000002a0513000600000000000000000000000000000000000000001313002064120000000000000000003064120001000000000000000000000000000000150413000500000001050000000000002a05130006000000000000000c60120008000000000000000000000000000000000000000013130038641200000000000000000048641200010000000000000000000000000000001a0413000a0000000000000000000000606312001e00000000000000000000000000000000000000000000000000000000000000001313005064120000000000000000006064120001000000000000000100000000000000353012000700000001050000000000002a0513000600000000000000d0cf12000c0000000000000000000000000000000000000000131300686412000000000000000000786412000100000000000000010000005665633c5061726149643e001f0000000000000001000000360000001f000000000000000100000034000000786712002d0000005665633c5665633c285061726149642c20436f6c6c61746f724964293e3e0000d8661200540000002c6712004c0000005665633c285061726149642c204f7074696f6e3c28436f6c6c61746f7249642c20526574726961626c65293e293e00001f0000000000000001000000360000008c65120057000000e3651200580000003b6612005600000091661200340000000013130000000000c5661200130000001f0000000000000001000000d9000000286512004f00000077651200150000001f0000000000000001000000380000000f651200190000001f000000000000000100000038000000e56412002a0000001f000000000000000100000036000000ab6412003a0000001f00000000000000010000004e000000806412002b0000002055736572732077686f20686176652070616964206120706172617468726561642773206465706f736974205468652063757272656e7420717565756520666f7220706172617468726561647320746861742073686f756c6420626520726574726965642e204d6170206f6620616c6c20726567697374657265642070617261746872656164732f636861696e732e2050656e64696e672073776170206f7065726174696f6e732e20546865206e65787420756e75736564205061726149642076616c75652e2053746172742074686973206869676820696e206f7264657220746f206b656570206c6f77206e756d6265727320666f722073797374656d2d6c6576656c20636861696e732e2050617261746872656164732f636861696e73207363686564756c656420666f7220657865637574696f6e207468697320626c6f636b2e2049662074686520636f6c6c61746f72204944206973207365742c207468656e206120706172746963756c617220636f6c6c61746f722068617320616c7265616479206265656e2063686f73656e20666f7220746865206e65787420626c6f636b2c20616e64206e6f206f7468657220636f6c6c61746f72206d61792070726f766964652074686520626c6f636b2e20496e2074686973206361736520776520616c6c6f772074686520706f73736962696c697479206f662074686520636f6d62696e6174696f6e206265696e67207265747269656420696e2061206c6174657220626c6f636b2c206578707265737365642062792060526574726961626c65602e204f726465726564206279205061726149642e20416e206172726179206f6620746865207175657565206f6620736574206f662074687265616473207363686564756c656420666f722074686520636f6d696e6720626c6f636b733b206f72646572656420627920617363656e64696e6720706172612049442e2054686572652063616e206265206e6f206475706c696361746573206f66207061726120494420696e2065616368206c697374206974656d2e20546865206e756d626572206f66207468726561647320746f207363686564756c652070657220626c6f636b2e00000000000000b52a12000b0000000000000050681200020000000000000000000000a92a12000c00000000000000606812000200000000000000000000009c2a12000d0000000000000070681200010000000000000000000000952a12000700000000000000786812000100000000000000000000007d2a1200180000000000000080681200010000000000000000000000672a12001600000000000000886812000100000000000000fc691200420000003e6a12002a0000008e69120045000000d369120029000000536912003b0000002369120030000000d66812004d0000009068120046000000204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e2041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292ece0000005800000008000000d1000000d2000000d3000000d4000000d5000000d6000000d7000000a86a12003c000000843212000a0000008e3212000100000057726f6e6720636f756e74207573656420746f20657374696d617465207365745f6d656d62657273207765696768742e202865787065637465643a2000000000eeb512000900000000000000fc6b12000100000000000000000000005d2b12001100000000000000046c12000100000000000000000000004e2b12000f000000000000000c6c1200010000000000000000000000442b12000a00000000000000146c1200010000000000000000000000372b12000d000000000000001c6c1200010000000000000000000000252b12001200000000000000246c12000100000000000000000000001d2b120008000000000000002c6c12000100000000000000000000000d2b12001000000000000000346c1200010000000000000000000000fa2a120013000000000000003c6c1200010000000000000000000000e72a12001300000000000000446c12000100000000000000b36d120018000000936d1200200000007f6d1200140000006e6d120011000000576d120017000000366d120021000000f66c120040000000b66c120040000000816c1200350000004c6c1200350000002054686520676976656e206c656e67746820626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686520676976656e2077656967687420626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686572652063616e206f6e6c792062652061206d6178696d756d206f6620604d617850726f706f73616c7360206163746976652070726f706f73616c732e2054686520636c6f73652063616c6c206973206d61646520746f6f206561726c792c206265666f72652074686520656e64206f662074686520766f74696e672e204d656d626572732061726520616c726561647920696e697469616c697a656421204475706c696361746520766f74652069676e6f726564204d69736d61746368656420696e6465782050726f706f73616c206d757374206578697374204475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564204163636f756e74206973206e6f742061206d656d6265720000000000617474656d707420746f20646976696465206279207a65726f4e6f4b6579734475706c6963617465644b65794e6f4173736f63696174656456616c696461746f724964496e76616c696450726f6f667365745f6b65797370757267655f6b65797353657373696f6e56616c696461746f72734e6578744b6579734b65794f776e65725072656d61747572655374696c6c4f70656e4e6f7446696e646572556e6b6e6f776e546970416c72656164794b6e6f776e526561736f6e546f6f426967496e76616c696450726f706f73616c496e646578496e73756666696369656e7450726f706f7365727342616c616e636570726f706f73655f7370656e6472656a6563745f70726f706f73616c617070726f76655f70726f706f73616c7265706f72745f617765736f6d65726574726163745f7469707469705f6e6577746970636c6f73655f746970547265617375727950726f706f73616c73000000000c7112000800000000000000147112000100000000000000000000001c7112000100000000000000000000002471120008000000000000002c711200010000000000000000000000347112000100000000000000000000003c7112000700000000000000447112000300000000000000000000005c7112000100000000000000000000006471120008000000000000006c7112000200000000000000000000007c7112000100000000000000000000008471120005000000000000002c7112000100000000000000000000008c7112000100000000000000000000009471120008000000000000002c7112000100000000000000000000009c711200010000000000000000000000a471120007000000000000002c711200010000000000000000000000ac711200010000000000000000000000b47112000600000000000000bc711200010000000000000000000000c4711200010000000000000000000000cc7112000a00000000000000bc711200010000000000000000000000d8711200010000000000000000000000e07112000900000000000000ec711200030000000000000000000000047212000100000000000000000000000c7212000c00000000000000bc71120001000000000000000000000018721200010000000000000050726f706f7365648b7312000d000000f27312000e0000005370656e64696e676b72120007000000b87312003a00000041776172646564008b7312000d0000006b721200070000000eb5120009000000987312002000000052656a65637465648b7312000d0000006b721200070000005e7312002d0000004275726e740000003b73120023000000526f6c6c6f766572ef7212004c0000004465706f73697400cf721200200000004e657754697000006772120004000000a972120026000000546970436c6f73696e6700007272120037000000546970436c6f73656400000067721200040000000eb51200090000006b72120007000000457212002200000054697052657472616374656420721200250000002041207469702073756767657374696f6e20686173206265656e207265747261637465642e2041207469702073756767657374696f6e20686173206265656e20636c6f7365642e4861736842616c616e63652041207469702073756767657374696f6e206861732072656163686564207468726573686f6c6420616e6420697320636c6f73696e672e2041206e6577207469702073756767657374696f6e20686173206265656e206f70656e65642e20536f6d652066756e64732068617665206265656e206465706f73697465642e205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e50726f706f73616c496e64657820536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e204e65772070726f706f73616c2e416c72656164794d656d6265726164645f6d656d626572737761705f6d656d62657272657365745f6d656d626572736368616e67655f6b65797365745f7072696d65636c6561725f7072696d6500000000000000587512000b0000000000000000131300000000000000000000000000647512000100000000000000000000006c7512000d00000000000000001313000000000000000000000000007c751200010000000000000000000000847512000e0000000000000000131300000000000000000000000000947512000100000000000000000000009c7512000c0000000000000000131300000000000000000000000000a8751200010000000000000000000000b07512000a0000000000000000131300000000000000000000000000bc751200010000000000000000000000c47512000500000000000000cc751200010000000000000000000000d475120001000000000000004d656d62657241646465640001771200390000004d656d62657252656d6f766564000000c67612003b0000004d656d626572735377617070656400008f761200370000004d656d62657273526573657449761200460000004b65794368616e6765640000277612002200000044756d6d79000000f87512002f000000dc7512001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e0000a001130039000000d003000022000000656e74697265206e65775f7365742077617320676976656e20746f206275696c645f737570706f72745f6d61703b20656e20656e747279206d757374206265206372656174656420666f722065616368206974656d3b20716564000084bc1200660000009803000023000000496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e742062792074726561737572795175657565644b6579732c781200610000009e0100001e0000002c78120061000000fc010000290000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f70687261676d656e2f7372632f6c69622e72730000002c781200610000007801000033000000b078120048000000bb0100002d0000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f6f70732f61726974682e7273766563746f72207769746820706f736974697665206c656e6774682077696c6c20686176652061206d61783b207165642c78120061000000c6020000190000006974657261746f72207769746820706f736974697665206c656e6774682077696c6c20686176652061206d696e3b2071656400002c78120061000000ca020000190000002c78120061000000f502000016000000e00000001400000004000000e1000000e20000000000000000000000e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e40000001800000004000000e5000000e60000000000000000000000e70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cc7b12006d00000078000000450000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f737570706f72742f7372632f73746f726167652f67656e657261746f722f6d61702e7273000000000000001f6e12000800000000000000947c1200020000000000000000000000c47c12000e0000000000000000000000276e12000a0000000000000000131300000000000000000000000000347d12000c000000000000000000000071c5120004000000000000007780120007000000000000007e801200050000000000000059c9120007000000387f12003a000000727f120048000000c77d1200310000000013130000000000f87d120035000000001313000000000091c212000b000000ba7f1200150000005a7e120056000000cf7f12003c0000000b801200290000003480120021000000558012002200000034c312000c000000947d120033000000c77d1200310000000013130000000000f87d120035000000001313000000000091c212000b0000002d7e12002d0000005a7e120056000000b07e12003c000000ec7e120029000000157f12002300000034c312000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e20202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460202d20446257726974657320706572206b65792069643a20604b65794f776e646572602053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d20436f6d706c65786974793a20604f28312960202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360202d204462526561647320706572206b65792069643a20604b65794f776e657260202d20446257726974657320706572206b65792069643a20604b65794f776e657260543a3a4b65797370726f6f660000000000386e12000a0000000000000000000000ec821200130000000000000000000000000000000000000000000000000000000000000000131300e0ab120000000000000000000083120001000000000000000100000000000000088312000c0000000000000000000000148312000c0000000000000000000000000000000000000000000000000000000000000000131300b09c120000000000000000002083120001000000000000000100000000000000288312000d00000000000000000000000fb912000400000000000000000000000000000000000000000000000000000000000000001313003883120000000000000000004883120002000000000000000100000000000000027812000a0000000000000000000000588312001e0000000000000000000000000000000000000000000000000000000000000000131300788312000000000000000000888312000200000000000000010000000000000098831200120000000000000000000000aa831200080000000000000000000000000000000000000000000000000000000000000000131300209d12000000000000000000b483120003000000000000000100000000000000426e1200080000000105000000000000cc8312000e0000000000000077801200070000000000000000000000000000000000000000131300dc8312000000000000000000ec831200010000000000000000000000000000004a6e1200080000000105000000000000f48312001400000000000000cc8312000e000000000000000000000000000000000000000013130000ac12000000000000000000088412000100000000000000000000005665633c543a3a56616c696461746f7249643e00028612001f00000043757272656e74496e64657853657373696f6e496e646578e48512001e0000005175657565644368616e6765640000001f0000000000000001000000380000006d8512004e000000bb851200290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e00001f000000000000000100000036000000e68412004f000000358512003800000044697361626c656456616c696461746f72735665633c7533323e000079841200200000000013130000000000998412004d000000543a3a56616c696461746f72496400001f0000000000000001000000380000005284120027000000284b65795479706549642c205665633c75383e29108412004200000020546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e00000000000000bf6e12000d0000000000000084871200020000000000000000000000b4871200090000000000000000000000cc6e12000f00000000000000fc87120001000000000000000000000014881200070000000000000000000000db6e12001000000000000000fc8712000100000000000000000000004c881200080000000000000000000000eb6e12000e000000000000008c881200020000000000000000000000bc881200130000000000000000000000f96e12000b00000000000000548912000100000000000000000000006c891200130000000000000000000000046f12000700000000000000048a12000300000000000000000000004c8a12001600000000000000000000000b6f12000300000000000000fc8a12000200000000000000000000002c8b12001900000000000000000000000e6f1200090000000000000054891200010000000000000000000000f48b1200110000000000000000000000bef212000500000000000000c3f212001500000000000000da9a12000b0000000000000087e4120023000000c59912004b000000109a12004d0000005d9a120015000000001313000000000091c212000b0000002899120013000000729a12002d0000009f9a12003b00000034c312000c00000000000000a49912000b00000000000000af99120016000000e99812003f000000001313000000000091c212000b00000028991200130000003b991200340000006f9912003500000034c312000c00000018981200570000006f9812002b000000001313000000000091c212000b0000009a98120014000000ae98120024000000d29812001700000034c312000c000000000000008c941200060000000000000059c91200070000000000000084e412000300000000000000d0cf12000c00000087961200570000000013130000000000948c1200340000000013130000000000de961200550000003397120035000000001313000000000043921200580000009b92120017000000b29212003b0000000013130000000000ed9212001e000000001313000000000091c212000b00000068971200330000009b97120025000000c097120031000000f19712002700000034c312000c00000000000000f991120004000000000000009ed012000700000092941200550000000013130000000000e79412003800000000131300000000001f951200540000007395120051000000c49512001400000000131300000000000e8d120059000000678d1200580000000013130000000000d895120024000000001313000000000091c212000b000000ba7f120015000000fc951200370000003396120024000000579612003000000034c312000c000000000000008c941200060000000000000059c91200070000000000000084e412000300000000000000d0cf12000c00000000000000fd9112000900000000000000a9f812000c000000069212003d00000000131300000000002f8f120055000000848f12001d000000001313000000000043921200580000009b92120017000000b29212003b00000007901200540000005b901200360000000013130000000000ed9212001e000000001313000000000091c212000b0000000b9312005500000060931200300000009093120042000000d29312004300000015941200390000004e941200200000006e9412001e00000034c312000c00000000000000f991120004000000000000009ed012000700000000000000fd9112000900000000000000a9f812000c000000028f12002d00000000131300000000002f8f120055000000848f12001d00000000131300000000000e8d120059000000a18f120058000000f98f12000e00000007901200540000005b9012003600000000131300000000009190120059000000ea9012000d000000001313000000000091c212000b000000bf8d120039000000f7901200450000001f8e1200400000005f8e12004100000000131300000000003c911200580000009491120035000000c99112001d000000e69112001300000034c312000c0000007c8c1200180000000013130000000000948c1200340000000013130000000000c88c12004600000000131300000000000e8d120059000000678d120058000000001313000000000091c212000b000000bf8d120039000000f88d1200270000001f8e1200400000005f8e120041000000a08e12002b000000cb8e12003700000034c312000c00000020436c6f736520616e64207061796f75742061207469702e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2054686520746970206964656e74696669656420627920606861736860206d75737420686176652066696e69736865642069747320636f756e74646f776e20706572696f642e202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d65642020206173207468652068617368206f6620746865207475706c65206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279206163636f756e742049442e202d20436f6d706c65786974793a20604f285429602077686572652060546020697320746865206e756d626572206f6620746970706572732e2020206465636f64696e6720605469707065726020766563206f66206c656e677468206054602e202020605460206973206368617267656420617320757070657220626f756e6420676976656e2062792060436f6e7461696e734c656e677468426f756e64602e2020205468652061637475616c20636f737420646570656e6473206f6e2074686520696d706c656d656e746174696f6e206f662060543a3a54697070657273602e202d20446252656164733a206054697073602c206054697070657273602c20607469702066696e64657260202d2044625772697465733a2060526561736f6e73602c206054697073602c206054697070657273602c20607469702066696e64657260204465636c6172652061207469702076616c756520666f7220616e20616c72656164792d6f70656e207469702e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742062652061206d656d626572206f662074686520605469707065727360207365742e2020206173207468652068617368206f6620746865207475706c65206f66207468652068617368206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e65666963696172792020206163636f756e742049442e202d20607469705f76616c7565603a2054686520616d6f756e74206f66207469702074686174207468652073656e64657220776f756c64206c696b6520746f20676976652e20546865206d656469616e2074697020202076616c7565206f662061637469766520746970706572732077696c6c20626520676976656e20746f20746865206077686f602e20456d6974732060546970436c6f73696e676020696620746865207468726573686f6c64206f66207469707065727320686173206265656e207265616368656420616e642074686520636f756e74646f776e20706572696f642068617320737461727465642e2020206465636f64696e6720605469707065726020766563206f66206c656e677468206054602c20696e736572742074697020616e6420636865636b20636c6f73696e672c20202041637475616c6c792077656967687420636f756c64206265206c6f77657220617320697420646570656e6473206f6e20686f77206d616e7920746970732061726520696e20604f70656e5469706020627574206974202020697320776569676874656420617320696620616c6d6f73742066756c6c20692e65206f66206c656e6774682060542d31602e202d20446252656164733a206054697070657273602c20605469707360202d2044625772697465733a20605469707360686173687469705f76616c7565204769766520612074697020666f7220736f6d657468696e67206e65773b206e6f2066696e6465722773206665652077696c6c2062652074616b656e2e202d2060726561736f6e603a2054686520726561736f6e20666f722c206f7220746865207468696e6720746861742064657365727665732c20746865207469703b2067656e6572616c6c7920746869732077696c6c20626520202061205554462d382d656e636f6465642055524c2e202d206077686f603a20546865206163636f756e742077686963682073686f756c6420626520637265646974656420666f7220746865207469702e20456d69747320604e657754697060206966207375636365737366756c2e202d20436f6d706c65786974793a20604f2852202b2054296020776865726520605260206c656e677468206f662060726561736f6e602c2060546020697320746865206e756d626572206f6620746970706572732e2020202d20604f285429603a206465636f64696e6720605469707065726020766563206f66206c656e677468206054602020202020605460206973206368617267656420617320757070657220626f756e6420676976656e2062792060436f6e7461696e734c656e677468426f756e64602e20202020205468652061637475616c20636f737420646570656e6473206f6e2074686520696d706c656d656e746174696f6e206f662060543a3a54697070657273602e2020202d20604f285229603a2068617368696e6720616e6420656e636f64696e67206f6620726561736f6e206f66206c656e67746820605260202d20446252656164733a206054697070657273602c2060526561736f6e7360202d2044625772697465733a2060526561736f6e73602c20605469707360726561736f6e20526574726163742061207072696f72207469702d7265706f72742066726f6d20607265706f72745f617765736f6d65602c20616e642063616e63656c207468652070726f63657373206f662074697070696e672e204966207375636365737366756c2c20746865206f726967696e616c206465706f7369742077696c6c20626520756e72657365727665642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642074686520746970206964656e74696669656420627920606861736860206d7573742068617665206265656e207265706f7274656420627920746865207369676e696e67206163636f756e74207468726f75676820607265706f72745f617765736f6d65602028616e64206e6f74207468726f75676820607469705f6e657760292e20456d697473206054697052657472616374656460206966207375636365737366756c2e2020202d20446570656e6473206f6e20746865206c656e677468206f662060543a3a48617368602077686963682069732066697865642e202d20446252656164733a206054697073602c20606f726967696e206163636f756e7460202d2044625772697465733a2060526561736f6e73602c206054697073602c20606f726967696e206163636f756e7460205265706f727420736f6d657468696e672060726561736f6e60207468617420646573657276657320612074697020616e6420636c61696d20616e79206576656e7475616c207468652066696e6465722773206665652e205061796d656e743a20605469705265706f72744465706f73697442617365602077696c6c2062652072657365727665642066726f6d20746865206f726967696e206163636f756e742c2061732077656c6c20617320605469705265706f72744465706f736974506572427974656020666f722065616368206279746520696e2060726561736f6e602e202d20436f6d706c65786974793a20604f2852296020776865726520605260206c656e677468206f662060726561736f6e602e2020202d20656e636f64696e6720616e642068617368696e67206f662027726561736f6e27202d20446252656164733a2060526561736f6e73602c206054697073602c206077686f206163636f756e74206461746160202d2044625772697465733a206054697073602c206077686f206163636f756e7420646174616020417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e202d20436f6d706c65786974793a204f2831292e202d20446252656164733a206050726f706f73616c73602c2060417070726f76616c7360202d20446257726974653a2060417070726f76616c73602052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e202d20436f6d706c65786974793a204f283129202d20446252656164733a206050726f706f73616c73602c206072656a65637465642070726f706f736572206163636f756e7460202d2044625772697465733a206050726f706f73616c73602c206072656a65637465642070726f706f736572206163636f756e746070726f706f73616c5f6964436f6d706163743c50726f706f73616c496e6465783e2050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d20446252656164733a206050726f706f73616c436f756e74602c20606f726967696e206163636f756e7460202d2044625772697465733a206050726f706f73616c436f756e74602c206050726f706f73616c73602c20606f726967696e206163636f756e746062656e656669636961727900000000000000a09c12000d00000000000000000000008b7312000d0000000000000000000000000000000000000000000000000000000000000000131300b09c12000000000000000000c09c1200010000000000000001000000000000001f6f12000900000001050000000000008b7312000d00000000000000c89c1200240000000000000000000000000000000000000000131300ec9c12000000000000000000fc9c120001000000000000000000000000000000049d12000900000000000000000000000d9d1200120000000000000000000000000000000000000000000000000000000000000000131300209d12000000000000000000309d120001000000000000000100000000000000389d12000400000001050000000000009ed0120007000000000000003c9d12003c000000000000000000000000000000000000000013130000ac12000000000000000000789d120003000000000000000000000000000000909d12000700000001060000000000009ed01200070000000000000059c91200070000000000000000000000000000000000000000131300989d12000000000000000000a89d120002000000000000000000000050726f706f73616c436f756e740000001f000000000000000100000034000000849f12002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e1f000000000000000100000038000000659f12001f000000417070726f76616c735665633c50726f706f73616c496e6465783e001f000000000000000100000036000000279f12003e000000546970734f70656e5469703c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c20543a3a486173683e629e120056000000b89e12004f000000079f120020000000526561736f6e73001f0000000000000001000000c7000000b89d1200520000000a9e1200580000002053696d706c6520707265696d616765206c6f6f6b75702066726f6d2074686520726561736f6e2773206861736820746f20746865206f726967696e616c20646174612e20416761696e2c2068617320616e20696e73656375726520656e756d657261626c6520686173682073696e636520746865206b65792069732067756172616e7465656420746f2062652074686520726573756c74206f6620612073656375726520686173682e2054697073207468617420617265206e6f742079657420636f6d706c657465642e204b65796564206279207468652068617368206f66206028726561736f6e2c2077686f29602066726f6d207468652076616c75652e2054686973206861732074686520696e73656375726520656e756d657261626c6520686173682066756e6374696f6e2073696e636520746865206b657920697473656c6620697320616c72656164792067756172616e7465656420746f20626520612073656375726520686173682e2050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e00000000000000a8a112000c00000000000000b4a11200070000000000000000131300bca112000000000000000000cca11200020000000000000000000000dca112001300000000000000a9f812000c0000000000000000131300f0a11200000000000000000000a2120001000000000000000000000008a212000b0000000000000090d012000e000000000000000013130014a21200000000000000000024a212000100000000000000000000002ca212000400000000000000b4a1120007000000000000000013130030a21200000000000000000040a2120001000000000000000000000048a212000c0000000000000090d012000e000000000000000013130054a21200000000000000000064a212000100000000000000000000006ca212000d0000000000000079a2120007000000000000000013130080a21200000000000000000090a2120001000000000000000000000098a212001400000000000000a9f812000c0000000000000000131300aca212000000000000000000bca21200010000000000000000000000c4a212001700000000000000a9f812000c0000000000000000131300dca212000000000000000000eca2120001000000000000000000000040f91200080000000000000040f91200080000000000000000131300f4a21200000000000000000004a31200010000000000000050726f706f73616c426f6e645065726d696c6c001f0000000000000001000000e80000001ea512005500000073a512004400000050726f706f73616c426f6e644d696e696d756d001f0000000000000001000000bf000000cca41200520000005370656e64506572696f64001f0000000000000001000000e9000000aaa41200220000004275726e1f0000000000000001000000ea00000066a4120044000000546970436f756e74646f776e1f0000000000000001000000eb00000015a412005100000054697046696e6465727346656550657263656e741f0000000000000001000000ec000000c9a312004c0000005469705265706f72744465706f736974426173651f00000000000000010000004800000094a31200350000005469705265706f72744465706f73697450657242797465001f0000000000000001000000c200000052a31200420000001f0000000000000001000000ed0000000ca3120046000000205468652074726561737572792773206d6f64756c652069642c207573656420666f72206465726976696e672069747320736f7665726569676e206163636f756e742049442e2054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e2e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120746970207265706f72742e2054686520616d6f756e74206f66207468652066696e616c2074697020776869636820676f657320746f20746865206f726967696e616c207265706f72746572206f6620746865207469702e2054686520706572696f6420666f722077686963682061207469702072656d61696e73206f70656e20616674657220697320686173206163686965766564207468726573686f6c6420746970706572732e2050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e00000000000d7412000a00000000000000eca6120001000000000000000000000004a71200030000000000000000000000e3b612000d00000000000000eca612000100000000000000000000001ca71200030000000000000000000000177412000b0000000000000034a7120002000000000000000000000064a71200050000000000000000000000227412000d000000000000008ca71200010000000000000000000000a4a712000400000000000000000000002f7412000a00000000000000c4a71200010000000000000000000000dca71200050000000000000000000000397412000900000000000000eca6120001000000000000000000000004a81200010000000000000000000000427412000b00000000000000001313000000000000000000000000000ca8120001000000000000000000000084e412000300000000000000d0cf12000c000000ceaa12001f0000000013130000000000edaa12002d0000007aaa12002400000000131300000000009eaa1200300000000000000071aa12000600000000000000d0cf12000c0000000000000077aa12000300000000000000d0cf12000c000000cfa91200300000000013130000000000ffa912002e00000000131300000000002daa12004400000000000000c8a912000700000000000000adf212001100000028a91200560000007ea912001b000000001313000000000099a912002f0000000000000025a912000300000000000000d0cf12000c0000006aa81200360000000013130000000000a0a812003d0000000013130000000000dda81200480000003aa812003000000014a81200260000002052656d6f766520746865207072696d65206d656d626572206966206974206578697374732e2053657420746865207072696d65206d656d6265722e204d75737420626520612063757272656e74206d656d6265722e2053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e205072696d65206d656d62657273686970206973207061737365642066726f6d20746865206f726967696e206163636f756e7420746f20606e6577602c20696620657874616e742e6e6577204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e6d656d626572732053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e205072696d65206d656d62657273686970206973202a6e6f742a207061737365642066726f6d206072656d6f76656020746f2060616464602c20696620657874616e742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e496e7374616e6365314d656d6265727368697000000000000000f0b61200070000000000000000000000adf21200110000000000000000000000000000000000000000000000000000000000000000131300e0ab12000000000000000000f0ab120001000000000000000100000000000000f8ab1200050000000000000000000000d0cf12000c000000000000000000000000000000000000000000000000000000000000000013130000ac1200000000000000000010ac12000100000000000000000000001f00000000000000010000003600000041ac1200320000005072696d650000001f00000000000000010000003800000018ac120029000000205468652063757272656e74207072696d65206d656d6265722c206966206f6e65206578697374732e205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e0094ac12005c000000710200001800000094ac12005c0000009d0200001a0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f74726561737572792f7372632f6c69622e727300000000136e12000c0000000000000060ad1200010000000000000000000000fc6d1200170000000000000068ad1200010000000000000000000000ef6d12000d0000000000000070ad1200010000000000000000000000e96d1200060000000000000078ad12000100000000000000ecad120019000000c4ad120028000000aaad12001a00000080ad12002a000000204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e00000000000000a36e12001c00000000000000e8ae12000100000000000000000000008f6e12001400000000000000f0ae1200010000000000000000000000836e12000c00000000000000f8ae1200010000000000000000000000776e12000c0000000000000000af12000100000000000000000000006d6e12000a0000000000000008af1200010000000000000000000000646e1200090000000000000010af12000100000000000000000000005b6e1200090000000000000018af1200010000000000000000000000526e1200090000000000000020af1200010000000000000081b012001f00000066b012001b00000044b012002200000021b012002300000008b0120019000000c0af12004800000075af12004b00000028af12004d00000020546865207469702063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e20546865207469702063616e6e6f7420626520636c61696d65642f636c6f736564206265636175736520746865726520617265206e6f7420656e6f7567682074697070657273207965742e20546865206163636f756e7420617474656d7074696e6720746f20726574726163742074686520746970206973206e6f74207468652066696e646572206f6620746865207469702e2054686520746970206861736820697320756e6b6e6f776e2e20546865207469702077617320616c726561647920666f756e642f737461727465642e2054686520726561736f6e20676976656e206973206a75737420746f6f206269672e204e6f2070726f706f73616c206174207468617420696e6465782e2050726f706f73657227732062616c616e636520697320746f6f206c6f772ec0b012005e000000ad0000000d000000c0b012005e000000de000000110000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f6d656d626572736869702f7372632f6c69622e72736e6f6e652076616c756573206172652066696c7465726564206f757420696e2070726576696f7573206c6f6769633b2071656400000064b112003400000062030000250000002f55736572732f6761762f436f72652f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f736c6f74732e7273a0b112002a000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a200000d4b11200230000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e436865636b457261436865636b576569676874436865636b5370656356657273696f6e436865636b4e6f6e6365436865636b547856657273696f6e436865636b47656e657369734e6f6e5a65726f526566436f756e744e6f6e44656661756c74436f6d706f736974654661696c6564546f4578747261637452756e74696d6556657273696f6e5370656356657273696f6e4e65656473546f496e637265617365496e76616c6964537065634e616d653a65787472696e7369635f696e64657866696c6c5f626c6f636b72656d61726b7365745f686561705f70616765737365745f636f64657365745f636f64655f776974686f75745f636865636b737365745f6368616e6765735f747269655f636f6e6669677365745f73746f726167656b696c6c5f73746f726167656b696c6c5f7072656669787375696369646553797374656d4163636f756e74426c6f636b486173684e756d626572506172656e744861736845787472696e73696373526f6f74446967657374000000000000004cb4120010000000000000005cb4120001000000000000000000000064b412000100000000000000000000006cb412000f000000000000007cb412000200000000000000000000008cb4120001000000000000000000000094b412000b0000000000000000131300000000000000000000000000a0b41200010000000000000000000000a8b412000a00000000000000b4b41200010000000000000000000000bcb41200010000000000000000000000c4b412000d00000000000000b4b41200010000000000000000000000d4b41200010000000000000045787472696e7369635375636365737341b512000c0000004db512002500000045787472696e7369634661696c656400500b13000d00000041b512000c0000002cb5120015000000436f6465557064617465640017b51200150000004e65774163636f756e7400000eb5120009000000f3b412001b0000004b696c6c65644163636f756e74000000dcb412001700000020416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e4163636f756e74496420603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e00007cb512001a0000004552524f523a20436f727275707465642073746174652061742050687261676d656e456c656374696f6e496e76616c69645265706c6163656d656e74496e76616c696452656e6f756e63696e67496e76616c6964566f7465436f756e74496e76616c696443616e646964617465436f756e744e6f744d656d626572496e73756666696369656e7443616e64696461746546756e647352756e6e65725375626d69744d656d6265725375626d69744475706c69636174656443616e6469646174655265706f727453656c664d7573744265566f746572556e61626c65546f506179426f6e644c6f7742616c616e63654d6178696d756d566f7465734578636565646564546f6f4d616e79566f7465734e6f566f746573556e61626c65546f566f7465766f746572656d6f76655f766f7465727265706f72745f646566756e63745f766f7465727375626d69745f63616e64696461637972656e6f756e63655f63616e64696461637972656d6f76655f6d656d6265724d656d62657273566f74696e6700000000000000dcb712000700000000000000e4b71200010000000000000000000000ecb712000400000000000000000000000cb8120009000000000000000013130000000000000000000000000018b8120002000000000000000000000028b812000c00000000000000b4b4120001000000000000000000000034b8120002000000000000000000000044b812000f00000000000000b4b4120001000000000000000000000054b812000100000000000000000000005cb812000d000000000000006cb8120003000000000000000000000084b8120002000000000000004e65775465726d0071bb12001900000017ba1200560000006dba120056000000c3ba1200580000001bbb120056000000456d7074795465726d00000099b912004d000000e6b91200310000004d656d6265724b69636b65643bb91200510000008cb912000d0000004d656d62657252656e6f756e6365640013b9120028000000566f7465725265706f727465640000000eb51200090000000eb51200090000000fb912000400000094b8120058000000ecb8120023000000204120766f7465722028666972737420656c656d656e742920776173207265706f72746564202862797420746865207365636f6e6420656c656d656e742920776974682074686520746865207265706f7274206265696e67207375636365737366756c206f72206e6f742028746869726420656c656d656e74292e626f6f6c2041206d656d626572206861732072656e6f756e6365642074686569722063616e6469646163792e2041206d656d62657220686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f742060456d7074795465726d602e204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e205468697320697320646966666572656e742066726f6d20604e65775465726d285b5d29602e2053656520746865206465736372697074696f6e206f6620604e65775465726d602e2041206e6577207465726d2077697468206e6577206d656d626572732e205468697320696e64696361746573207468617420656e6f7567682063616e64696461746573206578697374656420746f2072756e2074686520656c656374696f6e2c206e6f74207468617420656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e204120604e65775465726d285b5d296020696e64696361746573207468617420736f6d652063616e6469646174657320676f7420746865697220626f6e6420736c617368656420616e64206e6f6e65207765726520656c65637465642c207768696c73742060456d7074795465726d60206d65616e732074686174206e6f2063616e64696461746573206578697374656420746f20626567696e20776974682e5665633c284163636f756e7449642c2042616c616e6365293e00001f000000000000000100000023000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f646550726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b20716564000000000000000000000000000010bc12003d000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b207165640000000000000000000000000000000000000043616e6469646174657352756e6e65727355700084bc120066000000b0030000190000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f656c656374696f6e732d70687261676d656e2f7372632f6c69622e72734576656e74734576656e74546f706963730000000000b6b212000a00000000000000b4be1200010000000000000000000000ccbe1200010000000000000000000000c0b212000600000000000000d4be1200010000000000000000000000ecbe1200070000000000000000000000c6b212000e0000000000000024bf12000100000000000000000000003cbf1200080000000000000000000000d4b2120008000000000000007cbf120001000000000000000000000094bf12000a0000000000000000000000dcb2120017000000000000007cbf1200010000000000000000000000e4bf1200080000000000000000000000f3b21200170000000000000024c012000100000000000000000000003cc012000a00000000000000000000000ab312000b000000000000008cc01200010000000000000000000000a4c0120008000000000000000000000015b312000c00000000000000e4c01200010000000000000000000000fcc0120008000000000000000000000021b312000b000000000000003cc112000200000000000000000000006cc112000b00000000000000000000002cb31200070000000000000000131300000000000000000000000000c4c112000a00000000000000000000009bca12000600000000000000a1ca12000700000059ca1200420000000000000052ca1200070000000000000059c9120007000000ebc912001b000000001313000000000091c212000b0000009cc212000900000006ca1200380000003eca12001400000034c312000c00000000000000e3c912000500000000000000e8c912000300000060c912003f000000001313000000000091c212000b0000009cc21200090000009fc9120013000000b2c9120019000000cbc912001800000034c312000c0000000000000055c91200040000000000000059c91200070000000dc812001a000000001313000000000091c212000b00000027c812004d00000083c712002200000074c812005e000000a5c712000b000000d2c812005f00000031c912002400000034c312000c00000018c7120047000000001313000000000091c212000b0000005fc712002400000083c7120022000000a5c712000b000000b0c712005d00000034c312000c00000000000000e5c612001300000000000000f8c61200200000000bc6120028000000001313000000000091c212000b0000009cc212000900000033c612002c0000005fc612003600000095c6120019000000aec612000d000000bbc612002a00000034c312000c00000000000000f9c512000500000000000000fec512000d0000007dc512001b000000001313000000000091c212000b00000098c5120025000000bdc512001f000000dcc512001d00000057c512001a00000034c312000c0000000000000071c51200040000000000000075c5120008000000c5c412001e000000001313000000000091c212000b000000e3c412003f00000022c51200190000003bc512001c00000057c512001a00000034c312000c00000000000000b1c412000600000000000000b7c412000300000000000000bac412000800000000000000c2c412000300000040c3120045000000001313000000000085c312004f000000d4c3120050000000001313000000000091c212000b00000024c41200370000005bc412001900000074c412001d00000091c412002000000034c312000c00000014c21200590000006dc2120024000000001313000000000091c212000b0000009cc2120009000000a5c212001f000000c4c2120015000000d9c2120017000000f0c212004400000034c312000c000000204b696c6c207468652073656e64696e67206163636f756e742c20617373756d696e6720746865726520617265206e6f207265666572656e636573206f75747374616e64696e6720616e642074686520636f6d706f73697465206461746120697320657175616c20746f206974732064656661756c742076616c75652e2023203c7765696768743e202d20604f28312960202d20312073746f72616765207265616420616e642064656c6574696f6e2e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2042617365205765696768743a20382e36323620c2b573204e6f2044422052656164206f72205772697465206f7065726174696f6e7320626563617573652063616c6c657220697320616c726561647920696e206f7665726c61792023203c2f7765696768743e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465722074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e202d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860202d206050602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a20302e383334202a205020c2b573202d205772697465733a204e756d626572206f66207375626b657973202b20317072656669784b65795f7375626b657973753332204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579202d206049602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a202e333738202a206920c2b573202d205772697465733a204e756d626572206f66206974656d736b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e202d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360202d206049602073746f72616765207772697465732028604f28312960292e202d2042617365205765696768743a20302e353638202a206920c2b5736974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292e202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129202d2042617365205765696768743a20372e32313820c2b573202d204442205765696768743a20202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573746368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e202d20604f2843296020776865726520604360206c656e677468206f662060636f646560202d20312073746f726167652077726974652028636f64656320604f28432960292e202d2031206576656e742e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2053657420746865206e65772072756e74696d6520636f64652e202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f646560202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e636f64655665633c75383e2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e202d20312073746f726167652077726974652e202d2042617365205765696768743a20312e34303520c2b573202d203120777269746520746f20484541505f50414745537061676573753634204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e202d2042617365205765696768743a20302e36363520c2b5732c20696e646570656e64656e74206f662072656d61726b206c656e6774682e202d204e6f204442206f7065726174696f6e732e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f50657262696c6c0000000039b31200070000000102000000000000d0cf12000c00000000000000dccf120025000000000000000000000000000000000000000013130004d01200000000000000000014d01200010000000000000001000000000000001cd012000e0000000000000000000000c2c4120003000000000000000000000000000000000000000000000000000000000000000013130078d0120000000000000000002cd012000100000000000000000000000000000034d012000b00000000000000000000003fd0120010000000000000000000000000000000000000000000000000000000000000000013130050d01200000000000000000060d012000100000000000000010000000000000068d01200100000000000000000000000c2c4120003000000000000000000000000000000000000000000000000000000000000000013130078d01200000000000000000088d012000100000000000000000000000000000040b3120009000000010500000000000090d012000e000000000000009ed01200070000000000000000000000000000000000000000131300e8d012000000000000000000a8d0120001000000000000000100000000000000b0d012000d0000000105000000000000c2c41200030000000000000059c91200070000000000000000000000000000000000000000131300c0d012000000000000000000d0d012000100000000000000010000000000000049b3120006000000000000000000000090d012000e0000000000000000000000000000000000000000000000000000000000000000131300e4f412000000000000000000d8d01200010000000000000001000000000000004fb312000a00000000000000000000009ed01200070000000000000000000000000000000000000000000000000000000000000000131300e8d012000000000000000000e0d012000100000000000000010000000000000059b312000e00000000000000000000009ed01200070000000000000000000000000000000000000000000000000000000000000000131300e8d012000000000000000000f8d012000100000000000000010000000000000067b3120006000000000000000000000000d112000b00000000000000000000000000000000000000000000000000000000000000001313000cd1120000000000000000001cd1120001000000000000000100000000000000eabc120006000000000000000000000024d1120023000000000000000000000000000000000000000000000000000000000000000013130048d11200000000000000000058d112000100000000000000010000000000000060d112000a00000000000000000000006ad112000a0000000000000000000000000000000000000000000000000000000000000000131300e4f41200000000000000000074d1120001000000000000000100000000000000f0bc12000b00000001020000000000009ed0120007000000000000007cd11200210000000000000000000000000000000000000000131300a0d112000000000000000000b0d112000a00000000000000010000000000000000d2120012000000000000000000000012d2120016000000000000000000000000000000000000000000000000000000000000000013130028d21200000000000000000038d212000100000000000000000000000000000040d212000e00000000000000000000004ed2120005000000000000000000000000000000000000000000000000000000000000000013130054d21200000000000000000064d21200010000000000000000000000543a3a4163636f756e7449644163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0000001f0000000000000001000000ee0000005fd712003a00000045787472696e736963436f756e74000031d712002e000000426c6f636b57656967687445787472696e73696373576569676874001f0000000000000001000000ef0000000fd7120022000000416c6c45787472696e736963734c656e1f000000000000000100000038000000bfd6120050000000543a3a426c6f636b4e756d626572543a3a4861736800000099d612002600000045787472696e736963446174610000001f0000000000000001000000360000004ad612004f00000008d6120042000000ecd512001c0000001f0000000000000001000000f0000000a7d51200450000004469676573744f663c543e001f0000000000000001000000360000006bd512003c0000005665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e001f00000000000000010000003600000043d51200280000004576656e74436f756e744576656e74496e64657815d512002e0000005665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e0000001f000000000000000100000036000000e3d21200490000002cd3120025000000001313000000000051d3120054000000a5d3120051000000f6d312003900000000131300000000002fd412005300000082d4120053000000d5d41200400000004c61737452756e74696d65557067726164654c61737452756e74696d6555706772616465496e666f1f0000000000000001000000380000008ed2120055000000457865637574696f6e50686173655068617365001f0000000000000001000000380000006cd21200220000002054686520657865637574696f6e207068617365206f662074686520626c6f636b2e2053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e205468652063757272656e742077656967687420666f722074686520626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e00000000000000ecd812000e0000000000000090d012000e0000000000000000131300fcd8120000000000000000000cd9120001000000000000000000000014d91200120000000000000026d912000600000000000000001313002cd9120000000000000000003cd9120001000000000000000000000044d9120008000000000000004cd912000f00000000000000001313005cd9120000000000000000006cd9120001000000000000000000000074d91200140000000000000026d9120006000000000000000013130088d91200000000000000000098d91200010000000000000000000000a0d91200130000000000000026d91200060000000000000000131300b4d912000000000000000000c4d91200010000000000000000000000ccd912001200000000000000c2c41200030000000000000000131300e0d912000000000000000000f0d912000100000000000000426c6f636b48617368436f756e7400001f0000000000000001000000f100000035db1200360000004d6178696d756d426c6f636b5765696768745765696768741f0000000000000001000000f200000016db12001f000000446257656967687452756e74696d654462576569676874001f0000000000000001000000f3000000d4da120042000000426c6f636b457865637574696f6e5765696768741f0000000000000001000000f400000080da12005400000045787472696e73696342617365576569676874001f0000000000000001000000f500000022da12005e0000004d6178696d756d426c6f636b4c656e67746800001f0000000000000001000000f6000000f8d912002a00000020546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e20546865206261736520776569676874206f6620616e2045787472696e73696320696e2074686520626c6f636b2c20696e646570656e64656e74206f6620746865206f662065787472696e736963206265696e672065786563757465642e20546865206261736520776569676874206f6620657865637574696e67206120626c6f636b2c20696e646570656e64656e74206f6620746865207472616e73616374696f6e7320696e2074686520626c6f636b2e2054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e20546865206d6178696d756d20776569676874206f66206120626c6f636b2e20546865206d6178696d756d206e756d626572206f6620626c6f636b7320746f20616c6c6f7720696e206d6f7274616c20657261732e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b2071656400b8db12005a000000200400001c000000b8db12005a00000028040000110000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f6672616d652f73797374656d2f7372632f6c69622e72730000000000009db6120004000000000000001cdd12000200000000000000000000004cdd1200190000000000000000000000a1b612000c000000000000000013130000000000000000000000000014de12000d0000000000000000000000adb6120014000000000000007cde120001000000000000000000000094de12001b0000000000000000000000c1b6120010000000000000006cdf120001000000000000000000000084df1200150000000000000000000000d1b6120012000000000000002ce0120001000000000000000000000044e01200260000000000000000000000e3b612000d0000000000000074e11200020000000000000000000000a4e11200120000000000000000000000a8f212000500000000000000adf212001100000000000000bef212000500000000000000c3f212001500000093ef120057000000eaef120039000000001313000000000023f012005500000078f012000a000000001313000000000082f012001400000096f0120012000000a8f0120056000000fef0120045000000001313000000000043f11200570000009af1120028000000001313000000000091c212000b000000c2f11200170000006eea12000d000000d9f11200360000000ff212001500000024f2120035000000ceea12000e0000006aef12000a00000059f212000800000061f212004700000034c312000c000000e2ee120048000000001313000000000091c212000b0000002aef12001600000040ef12002a0000006eea12000d0000006aef12000a00000074ef120016000000ceea12000e0000006aef12000a0000008aef12000900000074ef12001600000034c312000c00000000000000aaee12000700000000000000b1ee120031000000f7ea1200570000004eeb120057000000a5eb1200170000000013130000000000bceb120022000000deeb12005300000031ec12003c000000001313000000000000131300000000006dec12005a000000c7ec120030000000001313000000000091c212000b000000f7ec12002d00000024ed1200290000004ded1200240000006eea12000d00000071ed12001500000086ed1200140000009aed120013000000aded120036000000ceea12000e000000e3ed12001c000000ffed12003700000036ee12001e00000054ee12005600000034c312000c00000000000000dcea12000f00000000000000ebea12000c0000000ee912001e00000000131300000000002ce912001900000045e912003b00000080e912004b000000cbe912005500000020ea12000d000000001313000000000091c212000b0000002dea12001800000045ea1200290000006eea12000d0000007bea1200140000008fea12000e0000009dea12000b000000a8ea12000d000000b5ea120019000000ceea12000e000000b5ea1200190000008fea12000e00000034c312000c00000000000000fae812000a0000000000000004e912000a000000b9e41200540000000de51200100000001de51200500000006de512003d000000aae512005600000000e612002400000024e612005300000077e6120056000000cde612005900000026e71200090000002fe712001e0000004de712001800000065e712002a0000008fe712000e0000009de712000f000000ace7120026000000d2e712000f0000009de712000f000000ace7120026000000e1e7120019000000fae71200180000008fe712000e00000012e812003400000046e8120023000000d2e712000f00000012e812003400000046e812002300000069e8120019000000fae71200180000008fe712000e00000082e812002b00000046e8120023000000d2e712000f00000082e812002b00000046e81200230000000013130000000000ade8120043000000f0e812000a0000000000000084e41200030000000000000087e412002300000000000000aae412000f000000000000000fb912000400000034e21200570000008be21200200000000013130000000000abe212005600000001e312003d00000000131300000000003ee3120051000000001313000000000091c212000b0000008fe312001a000000a9e312001a000000c3e3120010000000d3e3120014000000e7e31200330000001ae4120011000000e7e31200330000002be412005900000034c312000c0000002052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f6620746865206f7574676f696e67206d656d62657220697320736c61736865642e20496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20726f756e6420697320737461727465642e204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e20496620776520686176652061207265706c6163656d656e743a20092d2042617365207765696768743a2035302e393320c2b57320092d2053746174652072656164733a2009092d2052756e6e65727355702e6c656e28292009092d204d656d626572732c2052756e6e6572735570202872656d6f76655f616e645f7265706c6163655f6d656d6265722920092d205374617465207772697465733a20456c73652c2073696e63652074686973206973206120726f6f742063616c6c20616e642077696c6c20676f20696e746f2070687261676d656e2c20776520617373756d652066756c6c20626c6f636b20666f72206e6f772e77686f3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263656861735f7265706c6163656d656e742052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c206f7574636f6d65732065786973743a202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c2074686520626f6e64206973202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e202d20606f726967696e6020697320612063757272656e742072756e6e65722d75702e20496e207468697320636173652c2074686520626f6e6420697320756e72657365727665642c2072657475726e656420616e642020206f726967696e2069732072656d6f76656420617320612072756e6e65722d75702e202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c2074686520626f6e6420697320756e726573657276656420616e64206f726967696e20697320202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e20202053696d696c617220746f205b6072656d6f76655f766f746572605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e203c7765696768743e20496620612063616e6469646174652069732072656e6f756e63696e673a200942617365207765696768743a2031372e323820c2b5732009436f6d706c6578697479206f662063616e6469646174655f636f756e743a20302e32333520c2b573200953746174652072656164733a2009092d2043616e646964617465732009092d205b4163636f756e7442616c616e63652877686f292028756e72657365727665295d20095374617465207772697465733a204966206d656d6265722069732072656e6f756e63696e673a200942617365207765696768743a2034362e323520c2b5732009092d204d656d626572732c2052756e6e6572735570202872656d6f76655f616e645f7265706c6163655f6d656d626572292c2009092d205b4163636f756e74446174612877686f292028756e72657365727665295d2049662072756e6e65722069732072656e6f756e63696e673a2009092d2052756e6e6572735570202872656d6f76655f616e645f7265706c6163655f6d656d626572292c20576569676874206e6f74653a205468652063616c6c20696e746f206368616e67654d656d62657273206e65656420746f206265206163636f756e74656420666f722e203c2f7765696768743e72656e6f756e63696e6752656e6f756e63696e67205375626d6974206f6e6573656c6620666f722063616e6469646163792e20412063616e6469646174652077696c6c206569746865723a2020202d204c6f73652061742074686520656e64206f6620746865207465726d20616e6420666f7266656974207468656972206465706f7369742e2020202d2057696e20616e64206265636f6d652061206d656d6265722e204d656d626572732077696c6c206576656e7475616c6c7920676574207468656972207374617368206261636b2e2020202d204265636f6d6520612072756e6e65722d75702e2052756e6e6572732d75707320617265207265736572766564206d656d6265727320696e2063617365206f6e65206765747320666f72636566756c6c79202020202072656d6f7665642e204261736520776569676874203d2033332e333320c2b57320436f6d706c6578697479206f662063616e6469646174655f636f756e743a20302e33373520c2b5732053746174652072656164733a20092d2043616e646964617465732e6c656e282920092d2043616e6469646174657320092d204d656d6265727320092d2052756e6e657273557020092d205b4163636f756e7442616c616e63652877686f295d205374617465207772697465733a63616e6469646174655f636f756e74436f6d706163743c7533323e205265706f727420607461726765746020666f72206265696e6720616e20646566756e637420766f7465722e20496e2063617365206f6620612076616c6964207265706f72742c20746865207265706f727465722069732072657761726465642062792074686520626f6e6420616d6f756e74206f662060746172676574602e204f74686572776973652c20746865207265706f7274657220697473656c662069732072656d6f76656420616e6420746865697220626f6e6420697320736c61736865642e204120646566756e637420766f74657220697320646566696e656420746f2062653a2020202d206120766f7465722077686f73652063757272656e74207375626d697474656420766f7465732061726520616c6c20696e76616c69642e20692e652e20616c6c206f66207468656d20617265206e6f20202020206c6f6e67657220612063616e646964617465206e6f7220616e20616374697665206d656d626572206f7220612072756e6e65722d75702e20546865206f726967696e206d7573742070726f7669646520746865206e756d626572206f662063757272656e742063616e6469646174657320616e6420766f746573206f6620746865207265706f727465642074617267657420666f722074686520707572706f7365206f66206163637572617465207765696768742063616c63756c6174696f6e2e204e6f204261736520776569676874206261736564206f6e206d696e2073717561726520616e616c797369732e20436f6d706c6578697479206f662063616e6469646174655f636f756e743a20312e37353520c2b57320436f6d706c6578697479206f6620766f74655f636f756e743a2031382e353120c2b5732020092d20566f74696e67287265706f72746572292020092d2043616e6469646174652e6c656e28292020092d20566f74696e6728546172676574292020092d2043616e646964617465732c204d656d626572732c2052756e6e6572735570202869735f646566756e63745f766f7465722920092d204c6f636b287265706f72746572207c7c207461726765742920092d205b4163636f756e7442616c616e6365287265706f72746572295d202b204163636f756e7442616c616e6365287461726765742920092d20566f74696e67287265706f72746572207c7c2074617267657429204e6f74653a207468652064622061636365737320697320776f7273652077697468207265737065637420746f2064622c207768696368206973207768656e20746865207265706f727420697320636f72726563742e646566756e6374446566756e6374566f7465723c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e2052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e732074686520626f6e642e2042617365207765696768743a2033362e3820c2b57320416c6c207374617465206163636573732069732066726f6d20646f5f72656d6f76655f766f7465722e20092d20566f74696e6720092d205b4163636f756e74446174612877686f295d20092d204c6f636b7320566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e20546869732063616e2062652063616c6c656420746f207365742074686520696e697469616c20766f7465732c206f722075706461746520616c7265616479206578697374696e6720766f7465732e2055706f6e20696e697469616c20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e64206120626f6e6420616d6f756e742069732072657365727665642e205468652060766f746573602073686f756c643a2020202d206e6f7420626520656d7074792e2020202d206265206c657373207468616e20746865206e756d626572206f6620706f737369626c652063616e646964617465732e204e6f7465207468617420616c6c2063757272656e74206d656d6265727320616e64202020202072756e6e6572732d75702061726520616c736f206175746f6d61746963616c6c792063616e6469646174657320666f7220746865206e65787420726f756e642e2049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f206e6f7420706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636b20616e64206b65657020736f6d6520666f722066757274686572207472616e73616374696f6e732e2042617365207765696768743a2034372e393320c2b57320092d2043616e646964617465732e6c656e2829202b204d656d626572732e6c656e2829202b2052756e6e65727355702e6c656e282920092d20566f74696e67202869735f766f7465722920092d205b4163636f756e7442616c616e63652877686f292028756e72657365727665202b20746f74616c5f62616c616e6365295d20092d204c6f636b20092d205b4163636f756e7442616c616e63652877686f292028756e72657365727665202d2d206f6e6c79207768656e206372656174696e672061206e657720766f746572295d766f7465735665633c543a3a4163636f756e7449643e76616c7565436f6d706163743c42616c616e63654f663c543e3e00000000f0b6120007000000000000000000000090f41200210000000000000000000000000000000000000000000000000000000000000000131300bcf412000000000000000000b4f41200010000000000000001000000000000006abc120009000000000000000000000090f41200210000000000000000000000000000000000000000000000000000000000000000131300bcf412000000000000000000ccf4120001000000000000000100000000000000d4f412000e0000000000000000000000c2c41200030000000000000000000000000000000000000000000000000000000000000000131300e4f412000000000000000000f4f4120001000000000000000100000000000000f7b61200060000000105000000000000d0cf12000c00000000000000fcf4120021000000000000000000000000000000000000000013130020f51200000000000000000030f512000300000000000000010000000000000060bc12000a0000000000000000000000adf2120011000000000000000000000000000000000000000000000000000000000000000013130048f51200000000000000000058f512000200000000000000010000005665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e0000000ef712003c0000001f000000000000000100000036000000bcf6120052000000456c656374696f6e526f756e647300001f0000000000000001000000340000006cf61200500000002842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e290000001f0000000000000001000000f70000000ef612002e00000000131300000000003cf61200300000001f00000000000000010000003600000068f5120056000000bef5120050000000205468652070726573656e742063616e646964617465206c6973742e20536f72746564206261736564206f6e206163636f756e742d69642e20412063757272656e74206d656d626572206f722072756e6e65722d75702063616e206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e20566f74657320616e64206c6f636b6564207374616b65206f66206120706172746963756c617220766f7465722e2054574f582d4e4f54453a205341464520617320604163636f756e7449646020697320612063727970746f20686173682054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e205468652063757272656e742072756e6e6572735f75702e20536f72746564206261736564206f6e206c6f7720746f2068696768206d657269742028776f72736520746f20626573742072756e6e6572292e205468652063757272656e7420656c6563746564206d656d626572736869702e20536f72746564206261736564206f6e206163636f756e742069642e0000000000009cf812000d00000000000000a9f812000c0000000000000000131300b8f81200000000000000000000131300000000000000000000000000c8f812000a00000000000000a9f812000c0000000000000000131300d4f81200000000000000000000131300000000000000000000000000e4f812000e00000000000000c2c41200030000000000000000131300f4f8120000000000000000000013130000000000000000000000000004f912001000000000000000c2c4120003000000000000000013130014f9120000000000000000000013130000000000000000000000000024f912000c0000000000000090d012000e000000000000000013130030f9120000000000000000000013130000000000000000000000000040f91200080000000000000048f912000e000000000000000013130058f91200000000000000000000131300000000000000000043616e646964616379426f6e6442616c616e63654f663c543e0000001f0000000000000001000000bf000000566f74696e67426f6e6400001f0000000000000001000000f8000000446573697265644d656d6265727300001f0000000000000001000000f90000004465736972656452756e6e65727355701f0000000000000001000000fa0000005465726d4475726174696f6e1f0000000000000001000000c10000004d6f64756c6549644c6f636b4964656e74696669657200001f0000000000000001000000fb0000003a6865617070616765733a636f64653a6368616e6765735f747269650000000097b212000f0000000000000010fa12000200000000000000000000007db212001a0000000000000020fa120002000000000000000000000060b212001d0000000000000030fa12000300000000000000000000004db21200130000000000000048fa12000100000000000000000000003eb212000f0000000000000050fa12000100000000000000cbfb120045000000b6fb12001500000065fb120051000000b6fb120015000000e6fa12003c000000001313000000000022fb120043000000a6fa12004000000058fa12004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e20546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d650000000091b612000c00000000000000ecfd12000100000000000000000000008ab612000700000000000000f4fd12000100000000000000000000007eb612000c00000000000000fcfd12000100000000000000000000006ab61200140000000000000004fe120001000000000000000000000060b612000a000000000000000cfe120001000000000000000000000051b612000f0000000000000014fe120001000000000000000000000046b612000b000000000000001cfe12000100000000000000000000003cb612000a0000000000000024fe120001000000000000000000000029b6120013000000000000002cfe12000100000000000000000000001db612000c0000000000000034fe120001000000000000000000000011b612000c000000000000003cfe1200010000000000000000000000f7b512001a0000000000000044fe1200010000000000000000000000eeb5120009000000000000004cfe1200010000000000000000000000d9b51200150000000000000054fe1200010000000000000000000000c9b5120010000000000000005cfe1200010000000000000000000000b8b51200110000000000000064fe1200010000000000000000000000a6b5120012000000000000006cfe12000100000000000000e100130031000000bb00130026000000990013002200000072001300270000004000130032000000210013001f0000001000130011000000fcff120014000000dbff120021000000b8ff12002300000095ff1200230000006fff12002600000061ff12000e00000028ff120039000000f4fe120034000000b4fe12004000000074fe1200400000002050726564696374696f6e20726567617264696e67207265706c6163656d656e74206166746572206d656d6265722072656d6f76616c2069732077726f6e672e205468652072656e6f756e63696e67206f726967696e2070726573656e74656420612077726f6e67206052656e6f756e63696e676020706172616d657465722e205468652070726f766964656420636f756e74206f66206e756d626572206f6620766f74657320697320696e636f72726563742e205468652070726f766964656420636f756e74206f66206e756d626572206f662063616e6469646174657320697320696e636f72726563742e204e6f742061206d656d6265722e2043616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64732e2052756e6e65722063616e6e6f742072652d7375626d69742063616e6469646163792e204d656d6265722063616e6e6f742072652d7375626d69742063616e6469646163792e204475706c6963617465642063616e646964617465207375626d697373696f6e2e2043616e6e6f74207265706f72742073656c662e204d757374206265206120766f7465722e20566f7465722063616e206e6f742070617920766f74696e6720626f6e642e2043616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e63652e2043616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765642e2043616e6e6f7420766f7465206d6f7265207468616e2063616e646964617465732e204d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e2043616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d626572732065786973742e000002000000010000000100000001000000010000000100000001000000010000000100000002000000030000000400000001000000020000000300000001000000536c6f747341756374696f6e436f756e7465724d616e616765644964734174746573746174696f6e73000000a0011300390000008204000022000000a0011300390000007c040000200000002f55736572732f6761762f436f72652f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f70617261636861696e732e7273417574686f726974696573436f6465467574757265436f6465486561647352656c61794469737061746368517565756552656c61794469737061746368517565756553697a654e656564734469737061746368446964557064617465492068657265627920616772656520746f20746865207465726d73206f66207468652073746174656d656e742077686f7365205348412d323536206d756c74696861736820697320516d58456b4d61686668484a507a5433526a6b58695a56466937375a655665757874416a686f6a47524e59636b7a2e202854686973206d617920626520666f756e64206174207468652055524c3a2068747470733a2f2f73746174656d656e742e706f6c6b61646f742e6e6574776f726b2f736166742e68746d6c29492068657265627920616772656520746f20746865207465726d73206f66207468652073746174656d656e742077686f7365205348412d323536206d756c74696861736820697320516d63315859715436533339574e70325565695255725a6963685557555070474554684445366441623366364e792e202854686973206d617920626520666f756e64206174207468652055524c3a2068747470733a2f2f73746174656d656e742e706f6c6b61646f742e6e6574776f726b2f726567756c61722e68746d6c29436c61696d735369676e696e6750617261636861696e73526567697374726172546872656164436f756e7453656c6563746564546872656164734163746976654e65787446726565496450656e64696e6753776170506172617352657472795175657565000000007c04130014000000000000009004130001000000000000000000000098041300010000000000000000000000a0041300160000000000000090041300010000000000000000000000b8041300010000000000000050617261746872656164526567697374657265642a05130006000000f504130035000000506172617468726561644465726567697374657265640000c004130035000000205468652070617261746872656164206f662074686520737570706c696564204944207761732064652d726567697374657265642e204120706172617468726561642077617320726567697374657265643b20697473206e657720494420697320737570706c6965642e5061726149644005130067000000450000000d0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e7273000000000000000000617474656d707420746f20646976696465206279207a65726f00000040051300670000006e0000000900000040051300670000007f0000000900000040051300670000009d0000001b0000004005130067000000d50100001c0000004005130067000000d60100001c00000063616e6e6f74206669742061206e756d62657220696e746f207531323800000040051300670000009100000009000000616c7265616479206d757461626c7920626f72726f7765641f00000000000000010000004600000084061300430000001e030000090000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f63656c6c2e7273616c726561647920626f72726f776564001f0000000000000001000000c500000084061300430000006e0300000900000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564001f00000008000000040000004a000000610713006e000000690000001b000000726573756c742063616e6e6f742066697420696e20753132382f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e727362616265736c6f74436f756c64206e6f74206465636f64652072657175657374656420696e686572656e742074797065214241424520696e686572656e742064617461206e6f7420666f756e6442616265565246496e4f7574436f6e7465787442414245736c6f74206e756d62657263757272656e742065706f6368636861696e2072616e646f6d6e657373006c0813006c000000ce0000000d0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e72731f000000000000000100000023000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b207165640000280913006e00000009010000090000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e727300001f000000000000000100000023000000001313000000000072756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e67436f6d70616374496e76616c6964496e646578436f6d706163745374616b654f766572666c6f77436f6d706163745461726765744f766572666c6f770000000000000000000000617474656d707420746f20646976696465206279207a65726f0000004c0a130068000000600000002b0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e727348617368206e6f7420657175616c2f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f72756e74696d652f7372632f7472616974732e7273000000c20a1300630000002104000013000000426164206f726967696e43616e206e6f74206c6f6f6b757044697370617463684572726f725472616e616374696f6e206469737061746368206973206d616e6461746f72793b207472616e73616374696f6e73206d6179206e6f742068617665206d616e6461746f727920646973706174636865732e412063616c6c20776173206c6162656c6c6564206173206d616e6461746f72792c2062757420726573756c74656420696e20616e204572726f722e5472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f723c7761736d3a73747269707065643e4475706c69636174655265706f72744f6666656e63654572726f720000ec0d130064000000460000001f0000002f55736572732f6761762f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f666663636538352f7072696d6974697665732f747269652f7372632f6e6f64655f636f6465632e7273ec0d1300640000004f000000140000006c656e20213d20302073696e6365206c656e2025203220213d20303b20696e6e6572206861732061206c61737420656c656d656e743b207165640000ac0e1300610000003c0000001a0000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e312f7372632f6e6962626c652f6e6962626c657665632e7273000000ac0e1300610000006000000033000000ac0e130061000000600000000d000000ac0e1300610000006b0000000f000000ac0e1300610000006b0000003e000000ac0e130061000000690000000f000000ac0e1300610000009100000039000000ac0e1300610000009100000011000000ac0e1300610000009300000011000000ac0e1300610000009400000040000000ac0e130061000000940000004e000000d00f1300630000009800000017000000d00f13006300000096000000290000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e312f7372632f6e6962626c652f6e6962626c65736c6963652e727300e01113005b0000004d0000001c000000d00f1300630000004000000012000000d00f1300630000005500000032000000d00f1300630000004f0000002d000000d00f130063000000e10000000f000000d00f130063000000df0000000f000000d00f130063000000e10000003d0000006361706163697479206f766572666c6f7700000010131300490000000a00000009000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e617373657274696f6e206661696c65643a206e65775f636170203e3d206c656e0000e01113005b0000008d0000003c000000e01113005b0000008d00000051000000e01113005b0000008d0000003100000058111300550000004b0000004200000058111300550000004a0000003e0000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e312f7372632f6e6f64652e727300000058111300550000006b0000002200000058111300550000009a000000320000005811130055000000aa0000003e0000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e312f7372632f6e6962626c652f6d6f642e727300e01113005b000000870000001d000000e01113005b000000870000000d000000e01113005b0000008600000031000000e01113005b0000008600000042000000e01113005b0000008600000026000000e01113005b0000008e00000018000000e01113005b0000008e0000000d000000c41213002d000000f11213000c000000fd12130003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20101313004900000010000000090000002f72757374632f323435346136386366626236336161376238653039666530353131346435663938623266393734302f7372632f6c6962636f72652f6d6163726f732f6d6f642e72730000007c1313005a00000042060000090000007c1313005a00000042060000320000002f55736572732f6761762f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e312f7372632f7472696564626d75742e72730041d8a7cc000b08000000000000000000898a05046e616d6501808a05ec0700196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31011e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31021d6578745f68617368696e675f74776f785f36345f76657273696f6e5f3103196578745f73746f726167655f7365745f76657273696f6e5f31041b6578745f73746f726167655f636c6561725f76657273696f6e5f3105206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f3106226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3107196578745f73746f726167655f6765745f76657273696f6e5f31081d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3109226578745f6f6666636861696e5f72616e646f6d5f736565645f76657273696f6e5f310a1c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f310b276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f310c286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f310d236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f310e286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f310f346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3110206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3111206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f3112236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f3113226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31141c6578745f73746f726167655f617070656e645f76657273696f6e5f31151e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31161c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f3117236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f3218286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31191a6578745f73746f726167655f726f6f745f76657273696f6e5f311a226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f311b2a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f311c256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f311d2c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f311e376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f311f256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f3120286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3121216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f3122246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3123296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31241a6578745f73746f726167655f726561645f76657273696f6e5f31251e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31261c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31270c5f5f727573745f616c6c6f63280a5f5f72675f616c6c6f63290e5f5f727573745f6465616c6c6f632a0c5f5f72675f6465616c6c6f632b0e5f5f727573745f7265616c6c6f632c0c5f5f72675f7265616c6c6f632d135f5f727573745f616c6c6f635f7a65726f65642e115f5f72675f616c6c6f635f7a65726f65642f09686173685f746573743033616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68353163623932333763613366353463663108727573745f6f6f6d3234616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68636633313064393836323166623433303329636f72653a3a70616e69636b696e673a3a70616e69633a3a683030363437306536303862656439353034673c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c26542c636f72653a3a736c6963653a3a497465723c543e3e3e3a3a737065635f657874656e643a3a68663630333566303732643235353538393525616c6c6f633a3a666d743a3a666f726d61743a3a68353162646564663733633836333235353636636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68393562303464643938363539313862363723636f72653a3a666d743a3a77726974653a3a68303831356161306566383061653962353848616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303135383538626463303964366137323948616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303230616334656139386532646663323a33636f72653a3a6f7074696f6e3a3a6578706563745f6e6f6e655f6661696c65643a3a68363834326330353630396131316161343b3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68623565356635306535393861353161303c3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68343835333230373837643133636431643d3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68323565373337646265363866313463313e41616c6c6f633a3a7665633a3a5665633c543e3a3a737761705f72656d6f76653a3a6173736572745f6661696c65643a3a68633031623332663963663337653963313f4e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6866313530386135356232346364666464402d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6831323165636465623765613431366466413c616c6c6f633a3a7665633a3a5665633c543e3a3a696e736572743a3a6173736572745f6661696c65643a3a6861393437313162303766353636306563423c616c6c6f633a3a7665633a3a5665633c543e3a3a72656d6f76653a3a6173736572745f6661696c65643a3a68303739623034626265643466336234324341616c6c6f633a3a7665633a3a5665633c543e3a3a647261696e3a3a73746172745f6173736572745f6661696c65643a3a6833323235356664613534653537663838443f616c6c6f633a3a7665633a3a5665633c543e3a3a647261696e3a3a656e645f6173736572745f6661696c65643a3a68356431313731303562383636383764354539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6862393936313139646531313231346565462f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68366533616365353734346466643033644711727573745f626567696e5f756e77696e6448313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68303661353130333961616237383235344935636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68653932373262646363616336306465614a43636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68643738323237356538303230633037344b34636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a68313938373562666436383834646638634c36636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68316465333637626133373764636538644d2c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a68313636656363363539373163643363634e2e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a68623233363366646233303032316536664f323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6836306537626263363530333664373932504a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683535363930333161386438653835313251323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68376161336631343238396430386261365247636f72653a3a756e69636f64653a3a756e69636f64655f646174613a3a6772617068656d655f657874656e643a3a6c6f6f6b75703a3a68613835323132396535396333363565615332636f72653a3a756e69636f64653a3a7072696e7461626c653a3a636865636b3a3a68393165333839386434396631656236395449636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a683236383537666231363037623539353355453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683065623838643135356633303964303756483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862333335646536383631323063633233572e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683633646465376666396462376438623458303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686230333265336361626166646339613159323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68343533633561623935663535323564345a323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68306164336266313239633832353336375b533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68363062366563633731616261623535365c2e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a68323361303933653464646237393335315d2f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a68356261336366363138313565373762665e2e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a68663435363732306637616333343265355f3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6838383463623733303536396562326561603b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6865643364376661306531626237333132613a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68666434323965346239656338393933366239636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68613533333665666163353734656238626337636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a686637353538653961373662616632373064443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683362303935626162663933396632636265313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862306565323536613538376662373638668001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68376438313835366161663932613237396747636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a42696e61727920666f722069383e3a3a666d743a3a6830343935376436643034313761623237684a636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a557070657248657820666f72206933323e3a3a666d743a3a6833616234653261306439326130356261693e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68613031393933356237623361336434656a5a637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a746f5f62797465733a3a68616165363666613661363230343135316b57637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a706f77326b3a3a68336331316537313265613562386338346c7e637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a737172745f726174696f5f693a3a68623934396134613831326165366438666d24737562746c653a3a626c61636b5f626f783a3a68373039366535313535383366663730616e5a637572766532353531395f64616c656b3a3a72697374726574746f3a3a52697374726574746f506f696e743a3a656c6c696761746f725f72697374726574746f5f666c61766f723a3a68346434363937613834366439653935646f49637572766532353531395f64616c656b3a3a7363616c61723a3a5363616c61723a3a66726f6d5f63616e6f6e6963616c5f62797465733a3a683339376564386631343866663435313470693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683164376535613965633834333230613671776672616d655f73797374656d3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f73797374656d3a3a436865636b4e6f6e63653c543e3e3a3a656e636f64655f746f3a3a683037366333643036343238636132323572543c616c6c6f633a3a7665633a3a5665633c75383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4f75747075743e3a3a77726974653a3a683134646330656536363133316264313373693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683330633838616461386130613930626374483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683862333430623364656464656363353975513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6866373032313266386439656264656232763a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6831623438326238653662666365323234773b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6866373230353261623465333861396463783a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a683832313133333739343830373638623479503c6672616d655f737570706f72743a3a64656275673a3a57726974657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68366232623832663937343735353463337a4d3c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68636663616565386239613366643935647b493c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68373564336365333237656131383435617c206b656363616b3a3a66313630303a3a68633262383461656634313639366136637d383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68386430646338613436313533343633397e343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68353933353866646232646137633663387f363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a68313631306366366334353136666461668001366d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6e65773a3a68666363383837626163323430356666398101366d65726c696e3a3a7374726f62653a3a5374726f62653132383a3a626567696e5f6f703a3a68666537346433396134333038343336658201303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683464656338623963613066386161323183013f6d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a636f6d6d69745f62797465733a3a683731376238316534633737663363663284013d6d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f7536343a3a68343564373434333964373739616432308501426d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6368616c6c656e67655f62797465733a3a6839356634303532623139366662656265860191016d65726c696e3a3a7374726f62653a3a5f4445524956455f44726f705f464f525f416c69676e65644b656363616b53746174653a3a3c696d706c20636f72653a3a6f70733a3a64726f703a3a44726f7020666f72206d65726c696e3a3a7374726f62653a3a416c69676e65644b656363616b53746174653e3a3a64726f703a3a68373664333462333761376438353431668701453c70616c6c65745f7374616b696e673a3a466f7263696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683566376631643764343734346533333488014470616c6c65745f7374616b696e673a3a736c617368696e673a3a536c617368696e675370616e733a3a656e645f7370616e3a3a686163633034636532306465356531396689013a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a68383132646135376466383933616331658a01453c737472206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68323130366334613461656265353435658b0136616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a646f75626c653a3a68343632626136646564323464653838348c0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68303837363437643835383062613439648d0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68306435326462613632663537623532388e0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68306566303936656635323666656264658f0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6831303032383336393230323637653266900137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6831353362633434343562363063353266910137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6831633239336162336637626363663733920137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832316361383931306662386566396437930137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832336338336537316538623466376661940137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832613130643130393939303936613936950137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832653963653935383137626266386631960137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832656132393938323462396132393761970137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832656665623530376432323637663432980137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833623733313235663034613732636338990137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68336663353932343830356638353439319a0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68343235306235633863623661333635619b0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68343632643137623131353636346539629c0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68343733393563326335656561636466339d0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68346138613034383331393265623561359e0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68353263643831656466393563396338619f0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6835333639356137613766343639653365a00137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6835373361363461396530373461613535a10137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6836356563643066646532303762313464a20137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6838323432633237313464366463393737a30137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6838663165383139313232366161643963a40137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6839653238363739386661366238646262a50137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6839666261323366633736386437613235a60137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6861313065653937303663656539333435a70137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6861313166346464326364303337363136a80137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6862336436326461643761653537346539a90137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6862623339636332326334306633343166aa0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6863306437613064333638326462313038ab0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6864356538383565346332383162653436ac0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6864653835356332333065646431616437ad0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6865323535386165303038346530383162ae0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6866366430383431383333326338626637af015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839396234666365613664656330396161b001753c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6832653161623666613939326436633663b101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831383265333238356439623933646563b201386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836653431386535663230353736613362b301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866623233333463613761663237323939b4013e70616c6c65745f626162653a3a4d6f64756c653c543e3a3a63757272656e745f65706f63685f73746172743a3a6838393264306138373139306565656361b501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835333265353234646433303336393764b6018b013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61704974657261746f723c4b2c562c4861736865723e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838396362366331653462333865666232b7018b013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61704974657261746f723c4b2c562c4861736865723e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6864653662376532313132643139313764b80147636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6831633835623037353066633565353230b901437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6862636637653733333363323635353436ba01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862373639393133346466316134353662bb013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6831643962643436313038363065646266bc013770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6834623366376431656236656463663861bd013b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6865636430643231303037343734623461be013f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6832633761653761373262326533333361bf013870616c6c65745f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6830643439353531653465333439353662c0015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863303936313362353564336334313931c101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862373934613934346465316334653135c2012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6838323165343531376663616630386535c301693c706f6c6b61646f745f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6838383365623232386231316537613163c4014d3c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68386366623631613565366630386233632e31323932c501593c706f6c6b61646f745f72756e74696d653a3a43616c6c2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6834363135353038363761383837336638c6015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830663635643865376531363535653964c7014373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6861623439346133393963636463316230c8016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834626232666339316137356230356538c901437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836613666316638323031636262653631ca01776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a617070656e643a3a6830313032646233363431366236623065cb01416672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a6833303661323631613335346362323563cc012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6838323165343531376663616630386535cd01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838316638656633313665333663633938ce01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834353431333863376631353162396136cf01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839663063383964386330663235373635d001386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866636363636666613830643837353766d101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865646666613264373737386166643339d2014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6837366266356662663331313135396635d301723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835343133343636393631373232623239d401613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6837373834326638653936643436666564d501706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838313539336630386461313666393432d601706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863333834646434343738643263316465d701706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863633435623136613934343263653937d8015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830306533316236356162653735653365d9015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831663664643762613765346532373464da015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835616165663138306138313663653862db015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836623861396566613061336234326139dc015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838633530346666353239323637323035dd015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864373636306131393331656633623933de015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866383235386635636565316536323265df01746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6837323439323539366464356362326134e001386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834616361626333393933323636633836e1014e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f665f766f74655f7765696768743a3a6835643735616436343765353134643330e201386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863666363646664366534303761323437e301386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861346436356361383366396166663262e4014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6835633436666530333034613938303832e501723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6830313835653237376265353333373934e6016f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6833343732316238626636623233313233e7013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6861366461633132643561636263366434e8013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a656e737572655f6e65775f6572613a3a6862626631613966616336613165303531e9013e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863306363363830366231373033356563ea01723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835663534613335636466636533646637eb01753c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261456c656374696f6e5374617475733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861353263326363356530336133343563ec016d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863353333373739336338336563386436ed013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834366336366237656639316263373566ee01723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173546f74616c5374616b653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866323037613631353236616634636565ef01743c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173526577617264506f696e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837643836653133306539616637646630f001763c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744572617356616c696461746f7250726566733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830383133323530343339626632326230f101763c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261735374616b657273436c69707065643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836653938643461643731336332373332f201793c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865393737373164363231303232663534f301703c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374486973746f727944657074683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862653163636661636438613330373330f4014770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6831656562363935323138646566356261f5019b013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865623833373438613333656439613165f6019a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866616164313231336431333937363235f7013770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746172745f6572613a3a6861366239326532643164313934613563f801386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835643734663461633663613262353232f901386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862616137393136626238653836333534fa015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832656337326231323639343936633766fb014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6839663036633834393166646633303761fc01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837363430373731323233366238303362fd015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861303534313264303130346534623734fe01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835383735646333346437636234636636ff013570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a68653430656366646434306135316461378002446672616d655f737570706f72743a3a7472616974733a3a43757272656e63793a3a7265736f6c76655f6372656174696e673a3a68626133376230396266333439366462378102743c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a4e65676174697665496d62616c616e63653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a54727944726f703e3a3a7472795f64726f703a3a683862663561316463663739393463663882024873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a68653639353439623332333537353735628302860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a683136616562313765633739323234643584026c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683030393434336438396635323932393785028e0170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e3e3a3a656e636f64655f746f3a3a686536353433646465316132303535393486028b0170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e3e3a3a6465636f64653a3a683431626665663434653930633337613187022b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a683437343464653461643462323038383688025b70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c41636375726163793e3a3a66726f6d5f61737369676e6d656e743a3a68666434643166333066633633323864658902ba013c70616c6c65745f7374616b696e673a3a53746173684f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3e3a3a636f6e766572743a3a68303066353063316139613461623966398a02f7013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073705f7374616b696e673a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a54726169743e3a3a56616c696461746f7249642c3c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a54726169743e3a3a46756c6c4964656e74696669636174696f6e292c7536343e3e3a3a6f6e5f6f6666656e63653a3a68366431306138633931653235386135378b027c3c73705f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e2061732073705f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a68306235633164353439653463383931618c02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68363861666436323766363331396663648d02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68313636653466316238626230643339648e024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68616237336234343032366535363032398f024970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a683131366564646431666561643566626690023570616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a64697361626c653a3a683931393032383432323262383935333191025e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a686163363266613066646436393565653692025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683762363332333137366437336137386293025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683936653637396430646534653935616594023570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f6572613a3a683365633562396133306638643961663395024370616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636c6561725f6572615f696e666f726d6174696f6e3a3a68383730663139396539626262316137329602543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68316464343434636237643139386436639702533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a683266363862623936396366343664376398022573705f70687261676d656e3a3a656c6563743a3a68333664343233393634313030306232369902513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68353534373038346532346663343831399a023173705f70687261676d656e3a3a6275696c645f737570706f72745f6d61703a3a68326634626233333266653966663965669b02513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68326162646431356637363632666136369c022d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a68336432626330373030353437343563399d02706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68646236383536663962663965383562309e02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68303632656230393431376364316262309f02706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6834353333393030626131623632346530a002d3023c70616c6c65745f7374616b696e673a3a4578706f737572654f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c70616c6c65745f7374616b696e673a3a4578706f737572653c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c3c542061732070616c6c65745f7374616b696e673a3a54726169743e3a3a43757272656e6379206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a42616c616e63653e3e3e3e3a3a636f6e766572743a3a6866646138306439333236336536376433a102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830363663363938623230643130336536a2026a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6865313235366166323939656437376436a302493c70616c6c65745f7374616b696e673a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834323731613037663361663735663233a402623c70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6861653966373434663334613331316433a5025a3c70616c6c65745f7374616b696e673a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6865326335306365663139323763303139a6025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835383536333563313964613434393330a702336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e635f7265663a3a6863663234393833386334396432343366a8025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835353639333738326633303863383433a902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838633634323739616133316139633664aa028d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a6837306163386633306235326462666335ab023870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a6839343130656335373832366238383834ac0290013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656d6f76655f6c6f636b3a3a6834646366383537386363633733313233ad02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863616232326165343161616262333039ae02746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6838623539386135343363646266626566af025273705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a6832313536386334613230346262623831b0023970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6866303639633931346638386461626539b1024870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636865636b5f616e645f7265706c6163655f736f6c7574696f6e3a3a6831363433363634653036353961383633b202336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465635f7265663a3a6833393031313439346536323831373032b302b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6864343264363837336137306261323337b4024170616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7072655f64697370617463685f636865636b733a3a6864643834333738306232643136383262b5025b70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c41636375726163793e3a3a696e746f5f61737369676e6d656e743a3a6836326332363362613564653136643238b602403c73705f70687261676d656e3a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863326238393965336436393835383664b702386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831346238396262353763623963663739b802633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6834306633663830666636396262373530b902613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830333637646135386663303566353662ba0247636f72653a3a61727261793a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72205b543b205f5d3e3a3a666d743a3a6862383838386135333136336362303463bb025f3c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6865356566666537626662316430373462bc026f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6864336661333565666234626235616435bd023e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6839343332303963326365376361333436be029d017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202847302c48302c49302c4a302c4b302c4c302c4d302c4e302c4f302c50302c51302c5230293e3a3a656e636f64655f746f3a3a6832323264663361353335636633346465bf0276706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6830306164663563393165643064326566c002533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6862336134623464393461396365323434c102960173705f7374616b696e673a3a6f6666656e63653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f7374616b696e673a3a6f6666656e63653a3a4f6666656e636544657461696c733c5265706f727465722c4f6666656e6465723e3e3a3a6465636f64653a3a6864353561316436373733356465373361c202773c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a457874656e643c3c4120617320736d616c6c7665633a3a41727261793e3a3a4974656d3e3e3a3a657874656e643a3a6838363634383762613936613632313231c3028b013c73705f72756e74696d653a3a67656e657269633a3a636865636b65645f65787472696e7369633a3a436865636b656445787472696e7369633c4163636f756e7449642c43616c6c2c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a4170706c7961626c653e3a3a6170706c793a3a6834366132363831313433303435623037c4024473705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3a3a7072655f64697370617463683a3a6830636565356333633234336137376633c502776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6861343263623865643038633234383138c602406672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6830396537323933633138383236646131c7024570616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a636f6d707574655f6665653a3a6864386235643666623635623864646139c802b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6864623362643132313963633538343365c90283013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4c696d697450617261746872656164436f6d6d6974733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6832656232653435383232613038373863ca0287013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a56616c6964617465446f75626c65566f74655265706f7274733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6837386665326563633738356332653939cb0281013c70616c6c65745f6772616e6470613a3a65717569766f636174696f6e3a3a56616c696461746545717569766f636174696f6e5265706f72743c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6861643532383735636465656638336138cc027c3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a50726576616c6964617465417474657374733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6865383566653531313739616532373931cd026b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6833393938616234666137666163313433ce027a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6836313762646434313135323566376232cf02766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6833373636383033373233393364386536d002766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7075743a3a6832373064336134353438636133656566d102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837326339323933346265663166386338d2024673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a6839613530366236386365323538333036d302463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6834323430646630353166633666326133d402456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6839386133656563616366393138623432d5025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864353136363062393166663965643836d6024f70616c6c65745f7374616b696e673a3a6f6666636861696e5f656c656374696f6e3a3a636f6d707574655f6f6666636861696e5f656c656374696f6e3a3a6832643231613165393837613061366238d70248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6832343437366439643334396434623939d802633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6834613466643532386334316361656363d902533c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6864356130633062383230376236336339da02583c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6836646534663366346664323564386465db022d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6834396239396637353537633839353265dc022e73705f70687261676d656e3a3a7265647563653a3a7265647563653a3a6864626334303765633837366134373361dd027a3c73705f61726974686d657469633a3a7065725f7468696e67733a3a5065725531362061732073705f61726974686d657469633a3a7065725f7468696e67733a3a5065725468696e673e3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a6833336134383764633537636462616234de025273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6830393136653934323631656234663438df023f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837643233626165633338323165313639e0028c0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5072654469676573743e3a3a6465636f64653a3a6832656439353436366339386663353237e102683c73705f636f6e73656e7375735f7672663a3a7363686e6f72726b656c3a3a56524650726f6f66206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836346330643433313030376563313533e2023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6836623566653766323630306562316536e3028d0170616c6c65745f7363686564756c65723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f7363686564756c65723a3a5363686564756c65643c43616c6c2c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6830366364386462383131366437306432e402437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6864653032613431373965393765333766e502437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6865613765643438383336643565316330e6023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6830633631383132363430633061393939e7023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6831653433663730353930313239643966e8023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6862653965666432313635636239383638e9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833313065666330396230376265396634ea02706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6864323536313666666539393033393462eb02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6866363235383633386431383633336466ec024670616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a7265706f72745f6f725f73746f72655f6f6666656e63653a3a6863656563383131316530323035623964ed02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831643238666434653238303362656430ee02443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834323861383434656633653631656537ef02443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837376535613131653432343662346634f0023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6836646162326638353363623364666637f1022b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6832356336646634626362663938386434f2024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6835343238303239616363666637343164f3025c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6834306632333166323839333930383562f402653c73705f747269653a3a6e6f64655f6865616465723a3a4e6f6465486561646572206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6837376139333365343865313732376231f5020c436f72655f76657273696f6ef6026b3c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e67206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6864646438393335383033626364613264f70212436f72655f657865637574655f626c6f636bf802723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839326361393232313337646639613663f902543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830663533376133383638623334623032fa0284016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65732c434f6e52756e74696d65557067726164653e3a3a696e697469616c697a655f626c6f636b3a3a6830626133666530343932663239346637fb025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835663331343565653064623638646366fc025373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a6833343835336663616266373861373033fd028c016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65732c434f6e52756e74696d65557067726164653e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a6837303866666435373737613435303930fe02446672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6e6f74655f66696e69736865645f65787472696e736963733a3a6838646464653161373761353934636361ff02713c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a68366536626533636263656561653332648003346672616d655f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a68643761336465366336666438613434328103363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a68663863313365363362313838636239308203303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837316532613637383333306162383335830315436f72655f696e697469616c697a655f626c6f636b8403114d657461646174615f6d657461646174618503870a3c706f6c6b61646f745f72756e74696d653a3a52756e74696d652061732073705f6170693a3a72756e74696d655f6465636c5f666f725f4d657461646174613a3a4d657461646174613c73705f72756e74696d653a3a67656e657269633a3a626c6f636b3a3a426c6f636b3c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c7533322c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c3c3c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a5369676e65722061732073705f72756e74696d653a3a7472616974733a3a4964656e746966794163636f756e743e3a3a4163636f756e7449642c706f6c6b61646f745f72756e74696d653a3a43616c6c2c73705f72756e74696d653a3a4d756c74695369676e61747572652c28706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a5472616e73616374696f6e43616c6c46696c7465723c706f6c6b61646f745f72756e74696d653a3a497343616c6c61626c652c706f6c6b61646f745f72756e74696d653a3a43616c6c3e2c6672616d655f73797374656d3a3a436865636b5370656356657273696f6e3c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c6672616d655f73797374656d3a3a436865636b547856657273696f6e3c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c6672616d655f73797374656d3a3a436865636b47656e657369733c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c6672616d655f73797374656d3a3a436865636b4572613c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c6672616d655f73797374656d3a3a436865636b4e6f6e63653c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c6672616d655f73797374656d3a3a436865636b5765696768743c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4c696d697450617261746872656164436f6d6d6974733c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a56616c6964617465446f75626c65566f74655265706f7274733c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c70616c6c65745f6772616e6470613a3a65717569766f636174696f6e3a3a56616c696461746545717569766f636174696f6e5265706f72743c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e2c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a50726576616c6964617465417474657374733c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e293e3e3e3e3a3a6d657461646174613a3a686635373033353333643437393461353486031c426c6f636b4275696c6465725f6170706c795f65787472696e73696387039c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68396363386436626233373334353262338803aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a686334636364363965363232383266663189031b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b8a035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68396439383661393733623662343132398b03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68636161636662363463303763363566388c0320426c6f636b4275696c6465725f696e686572656e745f65787472696e736963738d036f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a68333366643061393633633735343534348e03613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68363364623663333932646433353031358f03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68376530613732336632623239656665629003543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a686134353834303235646130663538653691031c426c6f636b4275696c6465725f636865636b5f696e686572656e747392034b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6862333839363362613638393164386436930318426c6f636b4275696c6465725f72616e646f6d5f73656564940390013c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a686561663032663063373030643631326395032b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e96039f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a683137616534346435366362663932373397035373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a68306662666463666665386164393232339803436672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a636865636b5f626c6f636b5f6c656e6774683a3a68353366306662663461356331316162349903473c73705f72756e74696d653a3a44697370617463684572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68356532306664323739346631306162639a03323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68343861306539383462313136633032669b03214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b65729c0386016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65732c434f6e52756e74696d65557067726164653e3a3a657874726163745f7072655f6469676573743a3a68623734383761653538326561613037339d03366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e697469616c697a653a3a68316262356261626238613733326637639e03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68343663343739323030333264633234359f035173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6866613230623938393737623763613563a003633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6833386631613537333533653334653031a103583c70616c6c65745f696d5f6f6e6c696e653a3a4f6666636861696e4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838323233613963643532336637636335a2031850617261636861696e486f73745f76616c696461746f7273a3031950617261636861696e486f73745f647574795f726f73746572a40358706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c63756c6174655f647574795f726f737465723a3a6836616466653638613034626161663131a5031f50617261636861696e486f73745f6163746976655f70617261636861696e73a603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864653534663438363265663732633830a7033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6835363465613433393333383230323438a8032850617261636861696e486f73745f676c6f62616c5f76616c69646174696f6e5f7363686564756c65a9032350617261636861696e486f73745f6c6f63616c5f76616c69646174696f6e5f64617461aa0358706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a6c6f63616c5f76616c69646174696f6e5f646174613a3a6866643730366532623163633438353436ab031c50617261636861696e486f73745f70617261636861696e5f636f6465ac035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831386466666164383262626137316161ad031750617261636861696e486f73745f6765745f6865616473ae03a201706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a43616e646964617465436f6d6d69746d656e74733e3a3a656e636f64655f746f3a3a6837633165383837363038653565396136af031d50617261636861696e486f73745f7369676e696e675f636f6e74657874b0033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6839623364386635393636376634346339b1031e4772616e6470614170695f6772616e6470615f617574686f726974696573b203543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6835303131613762663166303730343735b3032f4772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f65787472696e736963b4038b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a6837326465373838333262633964346264b5037273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6833323061313831316232386633363763b6034c6672616d655f73797374656d3a3a6f6666636861696e3a3a5369676e65723c542c432c583e3a3a6163636f756e74735f66726f6d5f6b6579733a3a6864376631636436303136303461353364b70368636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6834343135343233363331336233373563b8034a3c73705f636f72653a3a63727970746f3a3a4163636f756e744964333220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839366436396166343461343165393866b903303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835356266646664393631653865633036ba03274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66bb034b70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a67656e65726174655f666f723a3a6861313231303264666438333634646266bc03366861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a6765743a3a6865653262633435353665333930636435bd0338747269655f64623a3a6c6f6f6b75703a3a4c6f6f6b75703c4c2c513e3a3a6c6f6f6b5f75703a3a6836366431313739353561613063336239be0315426162654170695f636f6e66696775726174696f6ebf03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832336638363233626334303234323365c003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833656234623238333838346335393735c1031b426162654170695f63757272656e745f65706f63685f7374617274c20321417574686f72697479446973636f766572794170695f617574686f726974696573c3032153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973c4034e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f67656e65726174653a3a6865626533643164666363393838323263c5034e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f67656e65726174653a3a6863353737343666393336623634666539c6031f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b657973c7037a706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6834363235653231363663393463653261c8038f0173705f6170706c69636174696f6e5f63727970746f3a3a737232353531393a3a3c696d706c2073705f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d655075626c696320666f722073705f636f72653a3a737232353531393a3a5075626c69633e3a3a746f5f7261775f7665633a3a6864363462663930386332373362616435c9031d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365ca035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837326165636431333737316663343666cb03205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fcc034873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6863656133366331663333663932376462cd035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834656538643664373164383434646639ce03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838383062353631663836626364646661cf03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861303933643964613034326635333035d0033c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6465706f7369745f636f6e73656e7375733a3a6862383638666237613132356339363330d103457363686e6f72726b656c3a3a706f696e74733a3a52697374726574746f426f74683a3a66726f6d5f636f6d707265737365643a3a6864663038366666643863323963336463d203407363686e6f72726b656c3a3a7672663a3a5652464f75747075743a3a6174746163685f696e7075745f686173683a3a6833346366343131353330303362373664d303376672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6833393934383265623136313363663164d4033b70616c6c65745f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835303662333931383133613664383639d5036b3c70616c6c65745f626162653a3a5f5f4765744279746553747275637452616e646f6d6e6573733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832363039363530643066303062323862d6034470616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862346363666430316537323437646263d7039a013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839363964376131383633376232663433d80396013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837356235653862346234393635303864d90348616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a456e7472793c4b2c563e3a3a6f725f696e736572743a3a6865616133393235343834366336333438da033c73705f70687261676d656e3a3a6e6f64653a3a4e6f64653c413e3a3a7365745f706172656e745f6f663a3a6836663263306664343661613932353337db033373705f70687261676d656e3a3a6e6f64653a3a4e6f64653c413e3a3a726f6f743a3a6832316630373638346537643564303764dc032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6831346164313732326134383739386163dd033b73705f70687261676d656e3a3a6e6f64653a3a4e6f64653c413e3a3a69735f706172656e745f6f663a3a6862356162343566313132303834643734de03b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6836643838616332626337663665323765df035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863616165343139346135396164343435e00385013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a6862643733393034366333346266653232e1033c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830313935353161366335626431326531e2033e70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832333133313236316661323137313432e3037270616c6c65745f7574696c6974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a43616c6c3c543e3e3a3a6465636f64653a3a6838386461383762613238613266303638e40373706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6866396362666438303530613064313364e50390013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a657874656e645f6c6f636b3a3a6835623232396564376531363131656161e603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866383234326433356331666131396161e7033d70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7570646174655f6c6f636b733a3a6836646434616437663665316163323661e8033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6830386635366661363561353661306239e9039a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726570617472696174655f72657365727665643a3a6861396466383336656638316362636563ea03b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6863303163613866346639386663366135eb033f70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6830376234653038313133386636373934ec034170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6838663230613133616266653561363664ed036e3c70616c6c65745f62616c616e6365733a3a5f5f476574427974655374727563744163636f756e743c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831343431646665313831373361393437ee034a70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861633461613937363265313938663831ef03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831356430343035646638313361636565f003437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6835393332353535353339646462623163f103437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6864356662343937613239363739653263f203303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838303536353563653638613630323537f3034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6835626563633562316235613366393262f403463c70616c6c65745f626162653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6839653030656437363032326439626333f503493c70616c6c65745f7574696c6974793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838353435346663313266376432633238f603643c636f72653a3a697465723a3a61646170746572733a3a436c6f6e65643c493e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6866646663353262353438373138366138f703483c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838636662363161356536663038623363f803463c70616c6c65745f7375646f3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6864613835643563383732616634383433f903473c6672616d655f73797374656d3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6839396263323536363336626265663362fa034b3c70616c6c65745f7363686564756c65723a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833366264353566623132346332663065fb03443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832383737313631363563316638313361fc03493c70616c6c65745f6772616e6470613a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865313865333466386365616465396136fd034b3c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833316636306132313835613330336461fe034b3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830323538306466323837396332626162ff034e3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68343064613535313332386335313331658004543c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683361333261613938303638323831366381044e3c70616c6c65745f6d656d626572736869703a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686565383966336139376562313731623082044a3c70616c6c65745f74726561737572793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686565306462356365346330653739383483045e3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68393833666536616263356561383366308404593c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686637633561393664353363303536376485045d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a686132396361333732393164303733656686045a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833303034633761363034323365353937870439747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633a3a6465636f64653a3a686231363066383337643232336434383088046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683963643038636132346436663861346289045a3c70616c6c65745f7574696c6974793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68373765623336626165393161626534318a044670616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a656e737572655f736f727465645f616e645f696e736572743a3a68656164666265343532353765633333398b04437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68343936396565366439393766663238628c04706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68336334613936363431353538316261388d04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68376230386165303531636431376239348e04b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a68323335373266363562613662326436388f045f3c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683038323739336464663265363539343390046d3c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6272616e63685f6e6f64655f6e6962626c65643a3a6861326432353235343039363563633561910472747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a617070656e645f6f7074696f6e616c5f736c6963655f616e645f6e6962626c653a3a6862303363326536613732633836356235920441747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a636f6d6d69745f6368696c643a3a683065363938303064653539386432376693045c747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a64726f705f6c617374733a3a68366162353562636239623236303661629404623c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68616431383365396337303839303038669504703c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861623234333439653835613732333136960440706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a746f5f61736369695f6865783a3a683136346536363238633933626238623597044a706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6574685f7265636f7665723a3a683663323662303639323864343964373998045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683130653930303363666338326438316199045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68396664393435313265646636623563359a04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68353037316466366662306437646230309b045573705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665723a3a68646465343234366534353439396231629c045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68636439373966373232313566613937369d04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68343465646237653235373165396432659e04543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68303237613330613062376534333266669f047c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6865323233613133366435366636626537a0047f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6830363864666136393638363433306232a104437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830383635656633373563353063323966a204437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830646265383736353563313532376635a304437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6832316363343163613434633239373137a404437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6864366536343961633139666466653330a504a601706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a416272696467656443616e646964617465526563656970743e3a3a656e636f64655f746f3a3a6836396262633535343461666231613037a6044d706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6834646436323432333832653366306239a7044f706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831636463346334356534363837626263a80458706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832616333643434356165613337383362a904a3013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726566697844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862386164613039613063623332646163aa044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6861376539633432306335316638386465ab04483c5b543b20385d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863313061356565323337336263386337ac045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839316133363466366637366231643633ad044c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a70726f636573735f636c61696d3a3a6861353463306466323739623963333735ae045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861616634366631386636616330636163af0495013c70616c6c65745f76657374696e673a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a56657374696e675363686564756c653c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6164645f76657374696e675f7363686564756c653a3a6834396161366537386261313230393237b004386861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a656e7472793a3a6861623539613061333233343432346532b104396861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a696e736572743a3a6862346164396231613065386639323334b2044d636f72653a3a686173683a3a696d706c733a3a3c696d706c20636f72653a3a686173683a3a4861736820666f722028412c42293e3a3a686173683a3a6831343666623930326431313835373263b3043e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6839353635356235616437623461633035b4046f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863306662343966646537653532373766b504443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837363934346430323738306266373633b60495013c70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a4b65794f776e657250726f6f6653797374656d3c2873705f636f72653a3a63727970746f3a3a4b65795479706549642c44293e3e3a3a636865636b5f70726f6f663a3a6862643730326464653531636632356466b70482017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202850302c51302c5230293e3a3a656e636f64655f746f3a3a6835323537653064616334333833646130b8045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861653032323039363139356564306265b9045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861373836346361323234313433306463ba04543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834393136393333316435373335376562bb04753c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6865656661663861666335326164616434bc04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862643764316663356439636265323665bd045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831633936343838313235613064343961be04a2013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6e65775f69643a3a6836326662643930346239653736326366bf044a706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a6465706f7369745f68656c643a3a6834366435383537313965346532343731c004386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839643263663239316331356237646463c1045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837313331376333613663663435366335c2045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835643239383134333430323437613862c3045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862346238363762313062646363306365c4047f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6863653161316466313931633565353531c5045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830346364353938643036666332383935c604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863343934613836663464346239663736c70468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6837343161303932633261326531666432c804386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832666366306237393333303265343362c904a9013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656769737465725f706172613a3a6866383833343633303436633637333663ca04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833326562313137376561323531373266cb045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839633462303761373334636437326263cc04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832613735336130323236343066343663cd045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866336135393165616431376161643264ce0451706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a70617261636861696e5f686561643a3a6862306666303632366661303263343838cf044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6830336262353061376339343762333533d0045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832393734376139383030613539353930d104386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833313966343737666331326139323065d2044470616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f70687261676d656e3a3a6837373939663236653632653262363332d3043f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a6861616630663964363136633763356462d4043d70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a6830333566333837623063396331653964d5043470616c6c65745f64656d6f63726163793a3a4572726f723c543e3a3a61735f75383a3a6830326662343231363939313366623964d6043570616c6c65745f64656d6f63726163793a3a4572726f723c543e3a3a61735f7374723a3a6836643861343531623238366635393261d704673c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6835633264653839386137633261633935d8045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833363565353932653436313934333232d904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831613062363037303230326338616634da044170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f656e6163745f70726f706f73616c3a3a6831326463643831393637313936616338db049f0170616c6c65745f64656d6f63726163793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a507265696d6167655374617475733c4163636f756e7449642c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6863666463386331363366313432356666dc044170616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a646f5f7363686564756c655f6e616d65643a3a6863613865666531343762616538316166dd045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834353265316234663563656230396466de04437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836303836363633303833643131653365df04753c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6864383731373932313064376163313365e0043f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865303766393763653232666366663264e1044170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830653131383034646666303531356337e204437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6862346335316236383930613739653738e3044c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865633531663737306362663838343161e4044e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866396464386330343965663930623134e5047e3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a5f5f476574427974655374727563744f6e626f617264696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838363261623366663064643132343161e6047b3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a5f5f4765744279746553747275637457696e6e696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836646664633034393966393735643233e7047f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a5f5f4765744279746553747275637441756374696f6e496e666f3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866653434303235626533396232346632e804ab013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a646572656769737465725f706172613a3a6866656139373639343864303332343764e90441616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365617263683a3a7365617263685f747265653a3a6833626363653631363730393838343535ea04623c70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862323235343466346162383935356330eb0448706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a68616e646c655f6269643a3a6862623039326366323231376530396332ec04303c282920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831356364316262633037326262353161ed042b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6831343231336361373632393939663463ee043c70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6838346232303732643166326235616666ef043e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863306437373162313862393139613536f0043e70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832333364653137306435323633303763f1044070616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832643336326265313130613364316437f2044970616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833366261613464613736386436303134f3049b013c70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835366532366337616464323537613062f40434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6864643565323164336663653937306161f5042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6833366638616236656530373561663037f6043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6838346565623838333537663131633536f70434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6862636362663764656337396631636336f8042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6830613964393261633234663535316131f9043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6835306665373832353039316163643431fa042d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6836306463353866643939393239643461fb0434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6861363133643434626338363530373539fc042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6838616530643636643965663561663231fd043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6832393430306565303065656433396161fe04fa01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a6836383837333061353038313035316233ff04fe01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a683733643264393164653831353135336180055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832663966313262666130373833373937810544706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73797374656d3a3a6839386236663834313937306536643934820547706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7363686564756c65723a3a6862353764666132633965353533343833830545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696e64696365733a3a6831643133333439356433326135663339840546706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f62616c616e6365733a3a6838333663356561353332653462336231850545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7374616b696e673a3a6834623139666337303064326639353864860546706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6f6666656e6365733a3a6835353138313764393035626233396265870545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73657373696f6e3a3a6864393933656332653963346134666437880545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6772616e6470613a3a6861346338363035313939656337336464890547706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696d5f6f6e6c696e653a3a68633939616134663265303461393664398a054070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68353563336331643464326233346233378b053e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68336433643035323962356562306237628c0547706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f64656d6f63726163793a3a68626131366664633266343539336639388d054970616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68383037356330616663663034663833648e05613c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68303433313833346462333266666238358f0552706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636f6c6c6563746976655f496e7374616e6365313a3a6837656661336663613037353939656563900550706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f656c656374696f6e735f70687261676d656e3a3a6831643935366433653466396365303761910552706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6d656d626572736869705f496e7374616e6365313a3a6832353838323931303635333735323966920546706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f74726561737572793a3a6862363862653130366433656361313936930543706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f736c6f74733a3a6836333065643035353761313861333464940547706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7265676973747261723a3a6839653636313762316361306161343235950544706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636c61696d733a3a6836663639313862626132383236386137960545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f76657374696e673a3a6861326364343535653736363432333737970545706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7574696c6974793a3a6830333766656166636464306431306334980542706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7375646f3a3a6836636563346633383161323634333739990596013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178566f74657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68646437373636343335353331636661319a05a1013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a507265696d616765427974654465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68626262323534656536396161393935659b059b013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6f6c6f6666506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68343831366233363130366561363863369c05a3013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a46617374547261636b566f74696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68346338353239663138303364653539349d059c013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68356636303831313335376230613438669e059a013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68646164373234636263353036646661649f059d013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e6163746d656e74506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832326230363462363733393437633639a0056e3c70616c6c65745f64656d6f63726163793a3a5f5f47657442797465537472756374566f74696e674f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833663662663439663064353830336137a1053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6861316261646536366538646132663339a205713c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563745075626c696350726f70733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835626634613032393335366165613435a305386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831376465396633613733613862373865a4054170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a6837623763643138633361316165343335a5053b70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6261636b696e675f666f723a3a6830363337623662336439383639626166a6053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6838626662353133643563626535353736a7055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864383731376365643162363436356534a805386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830383063316136613034356230636466a905b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6835343861373230636363613636653364aa056b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837303637363539303438343264636134ab058f0170616c6c65745f64656d6f63726163793a3a766f74653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f64656d6f63726163793a3a766f74653a3a4163636f756e74566f74653c42616c616e63653e3e3a3a6465636f64653a3a6862313031633863396636333566336337ac057a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6839613030323930323433656366326266ad056c70616c6c65745f7375646f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7375646f3a3a43616c6c3c543e3e3a3a6465636f64653a3a6866373930633536326330366239666432ae056b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7531363e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839393238326635343030303264306139af05573c70616c6c65745f7375646f3a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6832363234303863393630393361663935b0055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838323464323361376265393638633138b1053f70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a646f5f63616e63656c5f6e616d65643a3a6866616134636334623238343331666637b205386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833353962356638613935636535393132b3054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6832303336343032633965306536336366b405366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a6839303736616366343666366363616362b5055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834396162663434373238316539613538b605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832323332366430653561376634356261b7055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833303364323437303938633061613761b805706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6865363331316130666466373138333366b9055c3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6836373932353365396664396165653430ba055f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6861346466343364633663353664623465bb052b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6834666338363733316430636333303433bc054b6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6834303032643437313464363439373162bd055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833356633616562636236383334663531be055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864623336666561343334313565616661bf05437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834623036623831346533616166663436c0055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862316161303563373836656263643438c105386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834633333366563383633393331306561c2054c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a6864616330396130653035326639326334c3054470616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a66696e616c697a655f70726f706f73616c3a3a6864366563333130633633663730356530c405653c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6837313938353139316663393634623732c50599013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6832623335333635356436616432356432c6058d013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f7072696d653a3a6838616136363064663135613863386662c7055b3c70616c6c65745f74726561737572793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6862393032633336653663346431636566c8054c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a7365745f68656164733a3a6830636261396538643139653438306435c905543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831366464353866626235363137343833ca05437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837643336623932626134366634316239cb056e3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6831366461373764346237346666613637cc053970616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a7570646174655f6c6f636b3a3a6839666136376133646462636465323039cd055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835633533616366373832366262623863ce05513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6832343463643132616363396566663965cf053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6862663763353734356664643437373034d005437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830646661363236353365616637313036d1053870616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7472795f766f74653a3a6830656332623532353065343464613361d2053570616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a70726f78793a3a6832333962353264326437613864366439d305386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864353430346539653537613735316330d4055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837383662316532313837633833353937d505386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865653230373961636334356330616662d605437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834613462333264356566636635636239d7055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831653039643231626266386461323539d8055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864616263383735663264326461333731d905386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833333538353462343932313563383932da053c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7472795f64656c65676174653a3a6861613433396365636134663138663266db053e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7472795f756e64656c65676174653a3a6864333631346232333630373930623265dc054370616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6e6f74655f707265696d6167655f696e6e65723a3a6834643063306633393163663130306165dd054c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6e6f74655f696d6d696e656e745f707265696d6167655f696e6e65723a3a6865303064393531613664353262383934de055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833643661393563303239633635333963df055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865626132666638346233666538643465e005386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861363235633161336238303266306636e1053f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7472795f72656d6f76655f766f74653a3a6865313965316538636532636336306165e2054a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265647563655f757073747265616d5f64656c65676174696f6e3a3a6834616131386164393237343961666230e3054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6839623734386262356165333931326562e4053f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6833633732383364333165376632633765e505713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6863346132356662396634346438393434e6057f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6836396631346666626636343737306234e705920170616c6c65745f64656d6f63726163793a3a766f74653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a766f74653a3a4163636f756e74566f74653c42616c616e63653e3e3a3a656e636f64655f746f3a3a6837303931666663383934303737623464e8057d70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a656e636f64655f746f3a3a6836363561313233643464653938333061e90577706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6862663135383362316430643261616135ea058e0170616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f636f6c6c6563746976653a3a5261774576656e743c486173682c4163636f756e7449642c493e3e3a3a656e636f64655f746f3a3a6831386365343264353834346464376237eb05763c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6833616539373530373936316232396233ec056f3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6861646337353438313961356661373739ed057c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6863396332646434303931636565353539ee054a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6865613765333537376232663066376338ef05443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832613231653535383663373363613165f005443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834343661393039326264323465633566f105443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865393834323539356163666263626263f205443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838363766643164366463646461373937f305443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6863666665633837623036643465623662f405543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832383030373863333365303832383662f505543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833666362343461613939303330346634f605543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838653266303734656435356537306235f705383c2a636f6e7374205420617320636f72653a3a666d743a3a506f696e7465723e3a3a666d743a3a6834383263333130313336663739386136f805386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865336661393662343665356235333231f905513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6836666166646262356630366535336362fa05513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6839373038386434316265343563393231fb05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866646663656430353661646136616261fc054b6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6832363663393533376264313962643365fd05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866326165386331633063356562323261fe05766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7075743a3a6832376634383638383330333132363433ff05563c73705f72756e74696d653a3a44697370617463684572726f722061732073705f72756e74696d653a3a7472616974733a3a5072696e7461626c653e3a3a7072696e743a3a686631643738633339346235303264616680069d017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202847302c48302c49302c4a302c4b302c4c302c4d302c4e302c4f302c50302c51302c5230293e3a3a656e636f64655f746f3a3a68393732323033353233366366646334338106437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68396634366238613031376566623532348206fa013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e74332c5475706c65456c656d656e74342c5475706c65456c656d656e74352c5475706c65456c656d656e74362c5475706c65456c656d656e74372c5475706c65456c656d656e74382c5475706c65456c656d656e74392c5475706c65456c656d656e7431302c5475706c65456c656d656e743131292061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a6164646974696f6e616c5f7369676e65643a3a68373335346532373461656537626231378306303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68386434366566323039336262643135338406303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68386438633238313861363566313563308506483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6862393062383865643762323866396231860638747269655f64623a3a6c6f6f6b75703a3a4c6f6f6b75703c4c2c513e3a3a6c6f6f6b5f75703a3a683963353134656639353462393631363987062b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a683030356239656462363835656430366688065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a686137613634623838656362623963326289065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68356432346463383761376461316338668a065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68356139393066363434316330663461658b0651706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a6e6f74655f706173745f636f64653a3a68656636373531643232626134326232348c0649706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a6c6f63616c697a65645f7061796c6f61643a3a68303766313130623635313134333065348d065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68396163396666613834346238303437308e06673c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a68383239323161393435303663663539388f065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68386135313930383739653563383962629006386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68613636386139343636306337313465339106743c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683863616638623362633662643266653292065c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a446f75626c65566f74655265706f72743c50726f6f663e3a3a7665726966795f766f74653a3a683665376664303766626137356665396193063d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a686166303538613163373365613064366694064d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a686430616535656661666635383366393495064a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a68643862306166353033303261633632319606473c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68303633396130616239333063623761399706373c285431302c5431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686231373533643661363437376163316298063970616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683530313538346437376537303430366399063b70616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68333330356134393932383735396636329a063c70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68343531376237333037383932663737309b063e70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68313161343134393839633234663736309c064770616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68376466616663366632333433333634359d063e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68626564663866323330333038306634399e064070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68633833383164383764653032396165359f06783c70616c6c65745f696d5f6f6e6c696e653a3a5f5f476574427974655374727563745265636569766564486561727462656174733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862373364336431366137626134613064a00651706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832323431643964386337646363646335a10653706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830646538633037313230306534383539a2068f013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a5f5f4765744279746553747275637452656c61794469737061746368517565756553697a653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838306333663238666631323830383165a30683013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a5f5f47657442797465537472756374467574757265436f64653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838303066656133633164323361643835a40685013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a5f5f4765744279746553747275637450617374436f64654d6574613c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832306330316639663236363332386464a5063673705f747269653a3a6e6f64655f636f6465633a3a7061727469616c5f656e636f64653a3a6862306138376633326434653931616134a60660747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a72696768745f697465723a3a6864336163363763656466366436663763a7062b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6832613265653261336563333738366632a806483c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838636662363161356536663038623363a9063c747269655f64623a3a7472696564626d75743a3a4e6f646553746f726167653c483e3a3a616c6c6f633a3a6863393264336664643339373835303130aa065c3c70616c6c65745f7375646f3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6834646631643232643136373830376338ab06543c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e20617320747269655f64623a3a547269654d75743c4c3e3e3a3a696e736572743a3a6839353465343437353663643665333338ac063e747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f61743a3a6835656532346634613766633137653962ad063e747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a72656d6f76655f61743a3a6834623136343234633738343464663237ae063a747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a63616368653a3a6831303639313235343334343630346537af0645747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f696e73706563746f723a3a6831393138646565643835363735343431b006773c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a457874656e643c3c4120617320736d616c6c7665633a3a41727261793e3a3a4974656d3e3e3a3a657874656e643a3a6835616232346365663630346437326465b10645747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a72656d6f76655f696e73706563746f723a3a6836386361613164633737323061613439b2063c747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a66726f6d5f656e636f6465643a3a6832623933366431333336393830366539b30638747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a6669783a3a6833336236323632396638366632633838b40632747269655f64623a3a7472696564626d75743a3a636f6d62696e655f6b65793a3a6838363163303934363638303234386664b5063e747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a696e6c696e655f6f725f686173683a3a6833363638626635356431343937383437b60635747269655f64623a3a7472696564626d75743a3a656d7074795f6368696c6472656e3a3a6865393332626661623964366664353335b70665747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a746f5f73746f7265645f72616e67653a3a6833643964326439323432643532303166b8062c636f72653a3a636c6f6e653a3a436c6f6e653a3a636c6f6e653a3a6839333833346565383661663164323466b9065f3c70616c6c65745f76657374696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866386164626430343132393664346438ba06613c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830343638626536646464353263643561bb063a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6832643163306365343536393366653936bc063b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6863646266623839343637333333336631bd063a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6832613732343135303339383833623563be06723c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839336535383932346362333233643636bf06763c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838633031353739633232633664353762c006746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6834393431343235666664323964386134c106503c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844423c482c543e3e3a3a696e736572743a3a6837666566323333646638353133316139c2064470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a71756572793a3a6861303932343165646538363130316333c306386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837383335306134303061663866326634c4062b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6833396263336438613465663466633366c5062b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6839336237343237636434353832396533c606aa0170616c6c65745f64656d6f63726163793a3a74797065733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a74797065733a3a5265666572656e64756d5374617475733c426c6f636b4e756d6265722c486173682c42616c616e63653e3e3a3a656e636f64655f746f3a3a6833373663313731336663313934386465c7063e70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833613532616230653231616263393966c8064070616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833656538346635353432613366323262c906437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6833633861386232616337366432323761ca064570616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831313331363339393731663763626362cb064770616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839613462353265623466373763633233cc065070616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6830333561316666306532646636366663cd069f013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830633563336330373662646237663938ce0653706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864653266636231623463383461636330cf0655706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862666131643934363330366332303632d0064a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6834616365663730326537656462373162d1065370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861666538386636336663656432323639d206a3013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a576569676874546f46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833346338383962393339303662643036d306aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863373664383337326265393832353839d4065170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861626665373461306430616462353266d5064a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833353266653039353262663765373634d606553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6862623662363265393031333834373631d7066073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6865616532313439616230313666396561d806683c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833653866656366336161623733366162d906366861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a696e736572743a3a6865343466656139366238333734383663da063e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6861623265366637656336633937643235db065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861613366353935396437343534363966dc065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835323731336332633439303737633764dd065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832626130333361316430323738303637de064d706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a737761705f6f7264657265645f6578697374656e63653a3a6836643734336462386139663639316565df06733c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6837616461383932303665336566363636e006713c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6833663338333036613566303537643361e1063970616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6832616431336636653261616363633964e2063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6864383134636361633439666130653739e306386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835623830393163656466383730636632e4064a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833623361303261636661336532323433e5064d6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a636f6d707574655f6d656d626572735f646966663a3a6866643237313339616138356166373334e60693013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e74332c5475706c65456c656d656e7434292061732070616c6c65745f73657373696f6e3a3a53657373696f6e48616e646c65723c4149643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6866623561316231653630313135383739e7063d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6865633933326663396166326535336632e806683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6833356563626230306230653062306565e906633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834366431353662343164323130653562ea063e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a6831393962616639313363346436333034eb063c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6838343565373366333865633665633138ec063e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862646130336636323230336139623565ed06703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830333866643236646236636637623038ee06693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863613163383738376464323335336131ef0699013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6839626464663232633636396262373131f0065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861323665323035613337643066636366f1064170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6839653665346565336434643339643037f2064370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6863326139396531646336363466633833f3064370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6865656562353663326130333230666335f40650706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6861313030626536323936366137656463f50652706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865373866336561386236623735343261f6067f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5f5f47657442797465537472756374446562746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864383763303935663035663961306438f70682013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5f5f476574427974655374727563744e6578744672656549643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866623166346562643964393032643863f8064d3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844423c482c543e3e3a3a6765743a3a6831646236366638316562313964376366f906513c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844423c482c543e3e3a3a656d706c6163653a3a6861636434333537656534343637653339fa06503c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844423c482c543e3e3a3a72656d6f76653a3a6838393963653761393236363938386438fb06523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844423c482c543e3e3a3a636f6e7461696e733a3a6833666230613063666330616539363638fc065f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863653739646538323535613863363531fd06563c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64623a3a6831313464366164326236336230353339fe065a3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64625f6d75743a3a6834356131363337306537316263313365ff06503c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a6765743a3a68383162633739363265646432303432308007553c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a636f6e7461696e733a3a683239633332303033323134323830323881075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a686563666333386165393331663864313282075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683132393138373466376639613761363783074c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a683537656537346432326563616138646684074470616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a66696e616c697a655f70726f706f73616c3a3a686333363264626337613663373930373385075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68306664313164633839666235633339668607386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683737336461633037316263393334336187075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68336135623533323333653338336363328807643c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686138616531646339366662316363346589072b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68306235636435333938663833313062668a07663c636f72653a3a697465723a3a61646170746572733a3a46696c7465723c492c503e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68386438366636386237663265346331378b076b3c636f72653a3a697465723a3a61646170746572733a3a46696c7465723c492c503e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a68333838303936643236346364356363368c073e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a68366437393362363437303039306564618d072b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68323739373031313965376330383861638e07633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68386333646161346466353466356139668f07683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a683531663538646363303735383837663490073e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a683736336161613963393266383831393391078b013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61704974657261746f723c4b2c562c4861736865723e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683137316634396437613739326434366192073c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686130343138666433306562393463373793073e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68333333366166343164383938356661619407703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683861633566386365346132663863633895073d70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683662336435323039653234623262356396073f70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683737633161396461623062306163616697074870616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861653738316435343366656431346664980795013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6f64756c65496444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68663133353566616231383365623861379907a1013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5469705265706f72744465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68306431373966353866306362666436649a079a013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a54697046696e6465727346656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68326636346334303531363666303637669b0799013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a546970436f756e74646f776e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68396136393939383835306232633230399c0791013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68623936643366303438663465633463649d0798013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333331333935376433353632383732399e0799013c70616c6c65745f74726561737572793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68316562376433393963656162643131339f074170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6862663133643665663735623335643232a0074370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6832336164363666366335333961613534a107437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834353930393437346634326265376666a207683c73705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836383336396466376466663862363033a3075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862373333623034663638653163356261a4075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839626635303362663530356331366663a507386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836383933323963386134626464323565a6074270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f6d656d6265723a3a6832313662666233646161663764643735a7075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830623362396335343937326433393065a80793013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a436f6e7461696e733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a736f727465645f6d656d626572733a3a6831323437316133616632336232653132a907386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832646638343763656465343664316132aa075f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862636239333630393937393239663438ab07603c70616c6c65745f74726561737572793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6865663636616330613531663137303339ac075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863373965353333373135366334356366ad072b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6866323862623335303662653238633238ae073a6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863346632313634303539373530343732af073c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862343832366138616264636265316332b007703c6672616d655f73797374656d3a3a5f5f47657442797465537472756374457865637574696f6e50686173653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864356134666562353264326333383932b107703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e73696373526f6f743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864356132666166316335386664353536b2076d3c6672616d655f73797374656d3a3a5f5f47657442797465537472756374426c6f636b5765696768743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835386362306361336366383236393732b307693c6672616d655f73797374656d3a3a5f5f476574427974655374727563744163636f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838393662316136353130623666363366b407456672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6862363632356361323136626563316234b5079c013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178696d756d426c6f636b4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834316163363330353336633133323166b6079d013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45787472696e7369634261736557656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865623936623535666433393532613433b7079e013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b457865637574696f6e57656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861613461303136336363346236316364b80792013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446257656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862643633393036646365356365363631b9079c013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178696d756d426c6f636b57656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839366135653131343837363235336239ba0798013c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b48617368436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839653239663331393565356665643630bb074770616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6838633561633264396237306633316636bc074970616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833383437613836396238323161316466bd07753c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a5f5f47657442797465537472756374566f74696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832623532633530376563613630366636be075270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861666437376637326636643236653364bf079f013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6f64756c65496444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864303366343731303933646465623631c007a7013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465736972656452756e6e657273557044656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838363937353030393234353230396434c107a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446573697265644d656d6265727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861313065623333346435363530626136c207a1013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e67426f6e6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831333635323161343334636464383936c3075d3c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839643538333035336466386238353834c4075270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a72656d6f76655f616e645f7265706c6163655f6d656d6265723a3a6837373236613764666130303932303662c5076a3c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864643136303833633038616631306164c6073a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6865303938303865373264363961383166c7073773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6836313938666538396261336439643232c8073773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6836656636386261383236333835353437c9074473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6838656632386563323332633632623738ca074b3c73705f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6838366464333362353533313134643861cb07303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836396438353737646461396136626366cc07513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6832636666306639346236643062326438cd07413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832366664636266323964343063663063ce07323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6836316638326139656531373939636534cf074273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6863393164363339633735306335393734d007573c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861656364303133623039373237643063d10756747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a707573683a3a6866613934323765313666663232313363d20735736d616c6c7665633a3a536d616c6c5665633c413e3a3a7472795f726573657276653a3a6830363538653235346134363363343162d30739747269655f64623a3a6e6962626c653a3a6e6962626c655f6f70733a3a73686966745f6b65793a3a6831633562656466306462663335386131d40738636f6d70696c65725f6275696c74696e733a3a696e743a3a6d756c3a3a5f5f6d756c7469333a3a6839373632626331636361303166383364d507085f5f6d756c746933d607095f5f756d6f64746933d7072b636f6d70696c65725f6275696c74696e733a3a61626f72743a3a6837373662356362633663393964313163d807463c69363420617320636f6d70696c65725f6275696c74696e733a3a696e743a3a496e743e3a3a66726f6d5f756e7369676e65643a3a6862323335333636616636376639373338d907453c75363420617320636f6d70696c65725f6275696c74696e733a3a696e743a3a496e743e3a3a61626f7274696e675f6469763a3a6835333932613666333636333665633930da07453c75363420617320636f6d70696c65725f6275696c74696e733a3a696e743a3a496e743e3a3a61626f7274696e675f72656d3a3a6863616561316238643435356136333439db07453c69363420617320636f6d70696c65725f6275696c74696e733a3a696e743a3a496e743e3a3a7772617070696e675f6164643a3a6835643830383865393331303734336639dc07453c69363420617320636f6d70696c65725f6275696c74696e733a3a696e743a3a496e743e3a3a7772617070696e675f6d756c3a3a6861636634663139336566653333356566dd07423c6931323820617320636f6d70696c65725f6275696c74696e733a3a696e743a3a4c61726765496e743e3a3a6c6f773a3a6863353939613333653463386535616133de07433c6931323820617320636f6d70696c65725f6275696c74696e733a3a696e743a3a4c61726765496e743e3a3a686967683a3a6866636563313538666435333636616162df07493c6931323820617320636f6d70696c65725f6275696c74696e733a3a696e743a3a4c61726765496e743e3a3a66726f6d5f70617274733a3a6864613532623436666163373466343837e007095f5f75646976746933e1073a636f6d70696c65725f6275696c74696e733a3a696e743a3a756469763a3a5f5f756469767469333a3a6831653839613935666364643932303133e2073d636f6d70696c65725f6275696c74696e733a3a696e743a3a756469763a3a5f5f756469766d6f647469343a3a6863326234343164343030373334316166e3073a636f6d70696c65725f6275696c74696e733a3a696e743a3a756469763a3a5f5f756d6f647469333a3a6865396336646230626637383638626331e407066d656d637079e507076d656d6d6f7665e607066d656d736574e7070462636d70e8073b636f6d70696c65725f6275696c74696e733a3a696e743a3a73686966743a3a5f5f6173686c7469333a3a6838656231636163626365343565313733e9073b636f6d70696c65725f6275696c74696e733a3a696e743a3a73686966743a3a5f5f6c7368727469333a3a6861613765666137333665663233346637ea07095f5f6173686c746933eb07095f5f6c73687274693300550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34352e302d6e696768746c79202832343534613638636620323032302d30352d303429", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51866e06a692cbd47f2449d23683ea3ce75d020000": "0x6499eec6c70a3e1211a1991248716f999cad2b5911fd652e5700b5382d1d3e2b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d08d33a04630a1200eb6436c93ef19b42b070000": "0x4e8b242422577c9f7a6ed78ebb9408e38e03d7c9096a338ef4081241c29d890700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700846460e32cf55cb7917297457d5f7ef697caf3": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928974f484196d48d68936c07bcc9509d3894fcf7eba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897da1f36b13c74e5f988f806da14650b790a54b4c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bbfb20c83b79f8cfe3c3f7296f0390900760745": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5123d9e15b9215b7adaecbda345aff4bb07f060000": "0x70d68c29241a3ef5841c11afdbb956a75e971fef57ce8b82248f027644bf296600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511e88ae973c0c9b9aed1e4e0c65062c23da070000": "0x7631a588d157e5f7eaccb276b39ec6e0fe033574d07139c1354763e122a4d06500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700860b441b1ae0c0641409e5863e1a5f3a28a651": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc0b999bcedaeacee67b1e36d207f68bd55f1e128cdc90b1a970b1656efc6531": "0xa6a2b356718faf8cce70e78f06712f1ce5917d04", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0db810871a474bd38da3a58837e35b4df847f": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397734ed6fd608eec64c9fc1d82af4fa6165820bca0": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8fce84ceddb0e33e9b310adcc5625d8f7b8b77d": "0x008826bcfcd800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae6869a774b00ba29794c8d4611295bb0d9c2bf2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000d6dbcc9191c9bdaf3904cbc0bd1135f5ccfcb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f65d1913b854830681e7d0ee71c9756e0fe9f32": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5463e2740bf82a52ebc0b310c575854d592940c": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3eed7d3fb7e8161ca57a6ed51a5175fe0537c71d89202ae75a286d9e78c26d1a": "0x000b6274e5e9464df801fcfd8a9fed607086fbb8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001264aae739aad7299ae9e4154d598c0419f226": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002696d567f76c4b7a60cb00b1d95b0993fdcf95": "0x00a8b5d34bc800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000e0eff1c1ea2d6c76862b36009e1e1017acb88": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397401a887450b7096d8ec6651e15909d0a34e1898e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc6419b1a4cfb8b590a3eb48bcd5bdc8cdfd8f595ac6e1bac1899e82a1c548200": "0xe5db04802c56a6de7532a9aac9cf39c7a3bc7b71", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b66e4cd327c761fcbcac782909bde1518bcf55cd": "0x0010b8a666b600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e17de34ca530df364f3b818e29a8ec82a3da8e": "0x00c4c3f061ca00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890c69d0cdaf9abd8b01a100387d4c5ccba3b467f4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289625181f151d0300b8a8ed7a5bf2779f939ecad4d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de63503ec5788a8aa4911a43ee47190ae94f2ab44ad62096bffc56a422b38b26e": "0xdb3a83ce2d027400f34819317f357e9e967007c4", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f4899aa039a663975aaf3c069e8aa74152090000": "0x92a195bb2aca1f87595bebe3cfcc5792dfb26a4327b897e13be11c55349f6c4200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c65ef40b6a9a126951a17eb84fef0ff99d54de2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b82ec69d0521ebd32f7d445188e5b6593ee49046": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c391666d5b864610559e59c046357585192a25": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc94540e69a5c2d5a2e8432e99d9a99d66265343": "0x00c88f18385c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007ca5c1afdce9618c0bb7d86c2e1699fe935581": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5159443b8826f5eb67489423eb1d26ce6962060000": "0x12810d0b133504b5b0f6174b2ef048eb0cfe1b5e45fc7b4e422eed4b2bc1846300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ace3d849dcc2c1b7758b05cea344a7a108fce03": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ae20bb9616cc25af5dfe06997d4e5b8437a7421": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700812ef6564c068b4612e2c1f289358a115b2ddc": "0x00463efd4e7f0a000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e228a4c62c1abced2b55ca9af8b08b1cf0ae4988": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca5bc1915da74aba3aadd7ce7b809045d5eb5b73559259755fdcd85a40a5dc6e": "0xdacc0fd259ce0de2829b38a0765970e7ab65346c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009bd3c56ae851e91ac23e8a736a7698de525f1d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fd593bd99ed831bb189c73ad7290501597199ac": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fa204a1b8d4d8da5577c1eacac9b7e5f3e896c70": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981df87a117417b554a2ade4f7a425fcc4b2d919a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b3900179e0d9e20712ed41f8bb9ff8cb1e3fc88": "0x00a81c90c74c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431c5142225c7e26732a7ea83d3b25c826d8637556": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896afe9576ad00a571d9c04402006414ae45a8a490": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc5666fb8f709373953716884e8e3e46537957d9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513ef9590ba923a00623d3df39d3d075087a000000": "0x2eba9a39dbfdd5f3cba964355d45e27319f0271023c0353d97dc6df2401b0e3d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d946f4dec39d47a43ff25d186e00b6f0f5010000": "0xb274417440be5bc8a904a2ecb75d78bd678850e2a01a7b260230848f4231534e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3d8392d560d174203e7c080f13421c5aacf1314": "0x00feb8bf501000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5169e862c3d633b3d32774490b67ed13a03c040000": "0x083cc8444e66f2751a2d725275690c48a2ecef4f5bc519738cec602aa5dfe45100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d364c29bfbc9f06a42b5cf37ffd831e91c843cc25d8b90071546810ecf279e458": "0x24dc293f38625991044c976a3c99c358563f82d1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e499dde041fdfd3cf0251a08b7ba8582088870": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956be9656add1b07ddf587a25ca2ee79b5dded4e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dbda5deda828ffa3c15dc99cad296c5671181fd3": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d2137339627c6cb8de09eeceea4b8160c116a30f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bc3643d1d263c04558f871fe91f8f51acf080000": "0xb65d26557de4647d0b74c1c74f33ee210cb1bab3d38754bb09a664f6d1db760a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d3f4ffe07d9163018c1133d8c260b3d4e4010000": "0xaec55c9f5ae328c609a1fb6a914ea6079f25f33d5ea261fe272460b0f0973d7a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928932b2c49c595f816c6ff3852f983d77249dc9463d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2cd0bac7ae51daeb1c11493b6dc337fa471e9a1656f8e86b066c6fb22af2822": "0x960cbcac0d20353c14c5a4392af3b80b3f962eef", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397089913f600e20bcca596e00940631f783fcc3fe1": "0x004ed7a1c0bf03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d42f3b628436e4e71a27dca47fded37cf040000": "0xb640c8c456f0757ff52f051ffb503c6611e8d7c24c520d9be406c9a73587894500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890082242f0e0c5831adcfdcc04052b72dbeffbad0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a224725ea45e342d5f769ad16c4f7f19df7b1c39": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ab2aaa53121d617f02e48c6e8ac908c4467a5dd": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ad219d400583e19f68349efc91d9d9426050000": "0x24392caae002c7705b8a8ae61f55a5bae270ddf4b2a61147e43596f62e6dc15c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e3a57ce212b3db9c683245532d085de60e18bf3d249275c9e7a827939568d1d": "0x6d6fd4653efa8efde0a7bd582adb2d0c8101c930", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fbb059d3b1b26f431937225a41197f03b3070000": "0x44dc7e01917e80374fd8bab942b77bbb6dc857b578b681ce199cc524fd8caf1900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971feed555363e3ec72086c6f347b1b8f67d869333": "0x00ae63c303fe05000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513bd86fd6cc0e794dd225164120277b74a4050000": "0x647a9b6cc579aafd3b0b1a04ae88f2dc5724b89a8fc45042679e87665e17720000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282438919f90098e7976078c2ca828b6af4fdc3ab9052": "0x0070f7e810fb02000000000000000000d4c5d20400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c8495a15d9120bec1b5148745f13667dd7104a82": "0x00ea32381b0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890086c68ec3a352527ee68308deb658fa50da846c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b89b8904b5dc812d1211c1916a09656a35040000": "0xf8553b8def3e39297b80cff66ed8653d62fc8dd3ff4c73144242d4a4c69f0b5c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928934ad8c38970ee9c497009e85f48fcd856322aab9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c520b8c3e99de440a600168725914ebacc16b548": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe2d3714dc0abc2fed9f148be5ed1f224793f01d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970002945f1fc37863f255e0803b75ff1f5276e23a": "0x0072a9f3d3810e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d8188d47b24e6d8061509b7915cc40d31cf4b8c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c3fa6efb1678f509d5f1d5ca5702655a6040000": "0x0a70464ab2804d852f76709174e8f4c30b46e7c58dd5ad8d189865185873521a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974214a1879b2678aa9ca0abcdc8effd02e40f4419": "0x00c8c736f51b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d9bd91673fffca8936f266f14ebbcf940f684658": "0x0014cfc86b6c08000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7b88b6d9199cb9cfd50020218517f1b6cd0ec50": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824330caa2e774035687e738e60ed754c1787b206a81": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a75f3a76006ec39432a2bdecc1034b3008090000": "0x90c86ffd4c51b7cb742cc247b992c880bd23d00972912da343d1dee59f118e2700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cbbc5d06be48b9b1d90a8e787b4d42bc4a3b74a8": "0x0098c5448d1600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a35fdcc674e005040637bed34a1278e06f040000": "0x3cba3cb96173c2dfff3f2bb0cf5e3c70784cffadbf02b1b2be4fcdd1f78e437400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799bc4449c9a1e3435912f2c19e75afb1defcbd94": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e7b9a7b203678bd95a2c7c44630e7d56efa2d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009e51b0d7a06b3a8a22ddc326e1981d417a8b4a": "0x00ceaa99f6be0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f3841e5e0672e7bcd9a2a3a25e24ea7eb0d6c74": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ec037e3865c948398bce3cac6e0a3af1a87969b5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1e522a1fbfe27af28b0f198775fd9521588000c": "0x001a3581565501000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6b2e23616f4c246e2e0dfaa0485ac98be69725d": "0x007c9f9ebf2b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dca56407a6476d9375e9dd68a55e38feeb2cff715286f9c8597e2272453e8af60": "0x2658a833b04556526cbd6b2caab0a9fada7d8977", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770bc832c319132b534d1e32eb24a5a58a29f2624": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d1ae1c475ef49e628bfa5e4e09e52fae00d6b66b": "0x006e35f8103500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ef3cc2ca8953fc709ddf23b3949199de6070000": "0xe26f1171b9708d791cfb6f144d994a52d30fa3ffeccda0dedebe6b17b054c07100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7848bedb58a722316a55a845fea16b34cea5e5b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896407c0c25a5ac315d64b8eea2f315983f4096f7b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dccca577630b892c34f36d9681dde7ba25bed23356d467e1415913b7e2515755d": "0xbefc4249d323465b36830ee666c6df935904da3d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bc2c9667bbaa1b51c94f8a6d157a099abbddda": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898beb69c07a54a0feff772c42eed03d8036bcd446": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d4ff781e1de100c601a55c007e2cd85581841dca": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d984e16482c99cfad1436111e321a86d87d0fac203bf64538f888e45d793b5413": "0xcabc87c953dad294fc0ed22c563bac10fa8e3ab5", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc80d34e8174bf6910e23f6dc3b132a0cff6fbcaeaefa2bf588db3c8e11e3f653": "0x00d102007852fb6304637ad44457b9bf42be382b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793f4c3085d088c79aa83a9e60ebaa245e8c3425b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf36912f45c463b51d4b90aceea2727d18e0e2ed": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f8b4b80a2830d11d4843b980f06635530e993a18": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a276c8c59606dbc8515f3bbde2bbf30956ae793689cf5c003d7e595d1ecee64": "0xefabdb22a54dbdc370b31156a16b7a362199affb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4639d2b10d88d41a4fdf2ce50a922e9a99477aa5500316347f2036dda7cc805b": "0xa974c739d6a0f8bbf598f8da986f6667b347eb78", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51524c1827542b67dce751d8ec1ec83f4d10020000": "0x0a0e65d2793d7b4fd5b46d91a149daed37cbe9dd522a30eec15c3f3e8861a25b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1a73e362728d8de8f7e7961a7a92486d9897c1c": "0x00eef3db9dd901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700197a17c8ec9e02c852be37c127dcc004ea4eca": "0x00b44bd2d67400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fd29fbaf2b2245931f154595c2b909bea226418": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519c145c16dccf2718cfa8ea304dcd4fd3e9060000": "0x18403959947079acc738119e8cff8a944ac6e3a4956a1a378f1a268b01baf47600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970062bcd4cbb3f4501caa19a2abae06c7dad957e7": "0x00be18543bbc00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f1dbf210d8bd9ba610071d284620c157cdfdf40": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2f0789cefd1e9c0432e8bfd47c4f1ef06b0a50e1e1884ccd7e1bf263c53af33": "0x4877170e1a23388f4121c72d6b8cee7696ab92d4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970a35612a6a1a9dd3b942ed5113aeb56dcdc4b615": "0x00107cb8e7c300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16fcf8dd3680ec588538e1b3f27a827da4f3b725ba71e74ef68a636b6f5cc372": "0x00b6a48781fe2ed596deaff18ff09363ad627245", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890073ab4feb184e95b514c03103fa4d0409df140a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977bd77a44bafa948bc94d8fb6dc2d0b9e9583f215": "0x00c68d756eb300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a7455f18d8399830baad97632cda0a9cc2008f66": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512448908877fec51821804c2ab3f9ea29c6050000": "0x12ae1449f1318e75220747ede8feee0561f500f1ca2400c204ffad735c53ec5400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c213678db23cd757e5b476b95358f5b249070000": "0x709326ed34f4e04f9cc1808d1bf6f368c24448f9327c1926ec673fd5093e2c7000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972dbdb05d09c9e0f10446881b9be2e107f91f7e41": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289792b11a085ce9034cf2f6f7e31c53d85e4da2240": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfe578ba506f1c6f5d82d2cc86cef3e6b7447b24c2b9e82891f7f454a55dcc216": "0x006e724fce558be730b5ebf7f1d4da69b8d72daf", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b91355280b218cadf3772a949f0478880594d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fb1c60db3703abaf29a2d3a01f46c109275e0d": "0x00744903af1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a19ba54235400e8ac4e77957eded1345dbb54277": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a752faa9889de57975049d585fa87377c7bf0894": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972aabaf50bdb0b288e642f0753758ec38ee556567": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e9ad7f04d507c0cad58e5abfd5a55dab4d3b19a": "0x00da99da740a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1472ed23d9d8b62b09fa74698626869e65808583bcc382d8239b7da80024843d": "0x7025fe5275828b45b97d3b950d65666dcdb9fc95", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72322cff7ccfe90301cecc6957a68c3024c93c6b498f2b3cafa29cb75b85d00c": "0x2a7cb534202768d7daa624051d64ed942ed546bf", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd60888e982105f5cf40568c5ef03aa875becf1e4dd57c42c2623943feb128c26": "0x49e961c06237fdc4bb51c48813a8480e75701478", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c522a2fe6dd800459133be7817b955fae0beb57": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970026c2822209f9a0f8427fcf5d8f75dc0e471058": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899405ffe8c225312b403cb49a313e7a0da78c1387": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289699fcd9fc201726b30d6f6dd8b3307334f1b89be": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711814f00f1838263ab8b3acbeb9b90e90bb53e42": "0x00d8adf2724902000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a863cb15ac188d87a440836037e25f645a020000": "0x3c5efe835b5f538e43d755f3b1847af1a33ecb796c24445fec6abad99fb2d04c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e005e96b230631a08c53a58cbde5e1e13943647": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d624f523610e459d18d7dca623df5000f61e7ff083aabf4358595230f89c5e332": "0x0dc2547858e1caf83aaf4d61db51d3696b2a593a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e25fbe47354d8ed5377773251b41e1caa13f1363": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289223124942a06b92fd5267174d18dee47bebd942d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a712cacb7ee5cc9b956b718f9416ed0993060000": "0x147703aab4af61ad1df86d783df7e3c6d67e5974445e770e9f751733b07f584900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c59be10c6f6d60b03f94c87f4f78ae8afd040000": "0xc62a133f277af4f8d937c5720bc59904ab1d48e59820789cae9e326a0c45e15800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b566eb055743eb2daf5221d7a1da355b1da5433a": "0x002a6809f9ce00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003e042a1c0d20f39cbb5664edb923aaf00b8e30": "0x002a96626fe000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb3e3c8d8aa4e70f250473414b308e25d9080000": "0x545c47306c568ac5e74d5194126702c63a91639425146deb45671dd6144ef86c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c917e78db9edd508a9dd83894c993455e080000": "0x52b2685e43a4ff9ae6ff3476f2bdb84356ff427ab671bbcca1de6e486881e15400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006860119dc98195115d8bfd4011eea31214f028": "0x0022afc58d0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db01694db6ea17d4ecf62bf8919c2ed7bf166b237b9dce969168be4c6c600047d": "0xa74d379117fae37e0f17f3ad6634baa201af20ee", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b1a22d149fbe630c3f18a01bd593618e1e2fdd": "0x00aa7f5f551c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339745bca14081244a055409294312fb1731ab3750ac": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760e04fa14b8faf0d3d7b1844e8535eb156814b3f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973cc9063e7ac5fa8345e1f59bc32a470ccd30ca6d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d660e0a01a5850b0e4c1c447a8d4f41b9cae63d0": "0x000420885c3341000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d60babb8bab89537c2b2c8d0dfce9ecf940e40": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785ac9e682995ebebde8ff107fbbbfe7c40992e4a": "0x0040763a6b0bde000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e4992bb3d86f6734af7fd1528a658f8484936b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289572613e81421b11b7cf99fb41c3bdcb915a50d31": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006c8616a98ff7b6fd6302ffe44a18348df5b3fc": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517b51f2daf843aa70d89f9688b5832b90d7040000": "0xb8e06dc2e6bb6bd269319ace4cf8f663338f8f285a0564d6a139063c985d231000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51eb210bec36b683e16f8df06253c9efdebb040000": "0xea9c4b014031963e4e1961db0b632181056d80692b9f9f8302b0916394e1402700000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ef9cc5e5a5d22955f21dfc7b830749badc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efaa2f28aed1cf6923c64137ddcedc4a94181fa5": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138cee411bf913f6b5812146036e22887da060000": "0x9051936ee4376c9062485bf5d47e3755d24f3baf00d120b4162abe72296f584a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d65d5df37328bd4ee8ac0c5e487b0f3675e8ae8272c82d3cbcd699af3d68f61c8": "0x58445ba5cb35d9d4513df77f8ef3ccc8d608045d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970063a5947b2cb42b51fe5e6fa0b75e6105b3a0f2": "0x00da3a60ac3800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289228679ce88ce13bb8483bbefc4d107a1aed02d2b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe781dc59ce5e521c2ba3415cc78c9145a080000": "0x06ab119355c4230391d5a2983adcf81d91fa5c160c77993512437b35bfa67d4100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922f6a08b13d46bfac92f45a624dafd3ab4ca5761": "0x00", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x18fa3437b10f6e7af8f31362df3a179b991a8c56313d1bcd6307a4d0c734c1ae310100000000000000d2419bc8835493ac89eb09d5985281f5dff4bc6c7a7ea988fd23af05f301580a0100000000000000ccb6bef60defc30724545d57440394ed1c71ea7ee6d880ed0e79871a05b5e40601000000000000005e67b64cf07d4d258a47df63835121423551712844f5b67de68e36bb9a21e12701000000000000006236877b05370265640c133fec07e64d7ca823db1dc56f2d3584b3d7c0f1615801000000000000006c52d02d95c30aa567fda284acf25025ca7470f0b0c516ddf94475a1807c4d250100000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928975993bdf8a6c4c657f007fe09ec4fb4fcdeb3ba7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fac201d9eb3ac69d0f333067bb0df400ebcbea7c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c95904990fa58ba027b185d876d88d4a079950": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519242af27c7c48756ce7374977002cfc46f050000": "0xf02898c0c4db9a86d5b6c4192c26147cc0d4845d3c93f723a4082701a68c116b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bed113f4cdbf6e0fd3d402f84fe00cdb9ed79c3a": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979704593a5983b6b3e498b644802337974a2d0c3c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af50942a6552333a69f736a00aaf7d5f57e764e1": "0x0066506bfb6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0c6e7d0d2756e3c703cb749a78699880892744c": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a403e651ec2cd3b6b385dc639f1a90ea01017f7": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896adab48e2bc7819044ed2a9e4041f918db545aea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae09e49b8529bf5e7cdaa468f652c3f09fe62289": "0x00446b11410300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895490d6fb1ddfd925bef575445c4ccf0f20526b83": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bab1d735d0df1c56300c93a4dd1fc16bd9070000": "0xb8bf671a6d683d47aadddebc4586550750407f68178f77a6aedda63fd0cec13100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000f6cdbe9dfc875008e23822266cef6ff78124d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c46fbc59c8742b17c3f67fb39338046c1b3be969": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7ef6733ceb972d95d74368fe24b511512ae857f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d3388e1ed707443442afa9bb133d9dffacd9b467": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de218d439c40293656ad41f042840106973655483a4e3481535b798cebfc46d52": "0x007b2f1e74f2d7a146dc352b987b44bb49d0d6ab", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eb3893593421571007c99eecf18314b37d2319": "0x00d8c00f4d0401000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769294b14b71f036b1f394e45b46a370bfa860300": "0x009e4e93b58d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965e9bd9c64b29a79b286f4b2f8a3cb449c13a91d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bd120e887cc82285aff8408dc208ed32b132bb3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928919d1e23c329025f05bc9249d021fc59abb483254": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e56da5dcaeafaccb73e526f3afac2f48cd0136ae": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de82b4045016786e298d7f72e2ae948a7d9981df0fe2d3180648fbb4a52b85849": "0xcef45cadd1e590c243490ad0c0fb9bd0a47d07c3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed434693c34b81c2f7979f2f2724a63a0709fbc1": "0x00406cde340405000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f1ad9cf75089d42b8b56407fa8cd4914cf1453": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824369ff7706b367405d95890cba4d905a9f040cd467": "0x00408ab5c74301000000000000000000a4ee0b0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973872d74c3dbddbb0757cdc78070afc7a8266b595": "0x00a87036668100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f74310dfdbde986ba9bde96a472efff97e2234a7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a35612a6a1a9dd3b942ed5113aeb56dcdc4b615": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824368a85a879380543b48c40d0620e0681300a88553": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893872d74c3dbddbb0757cdc78070afc7a8266b595": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893dbc5ff979d0f30d65c33f684eb4b32cb4cfd3cb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed8bda7a810d594f145079dfb46849d8ae35c716": "0x0016c3676b6700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003ca16bd227028787da3cf107e86b4c78fcb8c3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da8b44f24437db42008b305e9047895ece47eb7cce3cdeb97bdd2ddf0b4943d5b": "0x60e04fa14b8faf0d3d7b1844e8535eb156814b3f", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df8553b8def3e39297b80cff66ed8653d62fc8dd3ff4c73144242d4a4c69f0b5c": "0xe4d35cb41da50f320fb28123684440d99e450d24", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511dfc028386948d3e6f376cdd5269882419050000": "0xaa98586310c2340a471a30255b03bb4736205056373576e53c5062c1a80f642600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0a09fefba656f157e715f18083ca46628c3646143daaa0f3f9ac171e306f350": "0x006ef813cd8eab68641cd6fb8d5f3b8126abb5ba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339795fb1fbd1f13ca58ef95a91fc8171d6f0c53439e": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d501bb225e3c5794bc5c96942847648613c63625ff3593b3901e903ba83c7d957": "0xec12141e117791b66693d6ab5ca3e270f531f76c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a95e38a8dc50337aed200378a46bfd23d33232f5": "0x00c0e1d0612100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bd27d1c8cbd251d089c352d0bd4fbe5722040000": "0xbe2daf84705de34c1930370f53566524b08145b4d192d6cdd5a35cc71930e24000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890051e28f46719ed3e65d93c5c172bfe0ed982b84": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006706b3aced8f9c82f45055521b875be51da06f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8441ea3b1d64620b1b83a902a7b711c2066447c": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a3cfef97dad26bf0e3f7152edb74b84a278c123b": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002c39a54adc4033eb6cd69c7f67459c0bf90ad9": "0x00de52b6088800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974523dbf40b244fec4c04fb37682ba584aba0711f": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154c175457b3824026998dd4849feb1c870070000": "0x68410aa34e30d94c8f4b266e5d9db3d14f44242327d9266877454ec70ae0cc4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f961ef1f20028e8340d5618d3bcb077718e58825": "0x001e10ef470400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397141af52b68e8e1cfe3318d7b91c698b6c0e2d9f5": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d1906f171b3ae82d0c500555143c28d239ca74": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431c00e0743d704094b1d198076a33a33487e2d38c": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5187b3eb6e60044a15c893c2b1b7842ded42090000": "0x1ebd2c29909eb603331b960308a070b839ee78e80fe12ef05e4639a176ab743e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ff34674c9401c39cf82d06d04f2037411d835db8": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea53c14c3481ba7416851fddf1c192362ac5b8123e4866ff2ead77cd6c2d772a": "0xdd6c0fcf38a991d9c95d2e379f4f234807bcbeba", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ad9acdc0fd7c7e32f899379a3c56ca18a50c41": "0x004a5eddc34200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51473a4f4f9feee536becaf84fd6f94f0792040000": "0xeaeac37aa13c38ed2518b7b4be3e4e7899c5b971091d93a4d33ae18231b1fc1e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5193e9cf20e2f3b9e59596e549631efeea93070000": "0x1eb5c6758a96f303461856a587c3b58bddd005b2b1de6b14b3fded4b5b01960e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b180153b71e80491d9746e90f472a0d8ec040000": "0x68659f683ec88be378fb7729f1e6ab48731265b4c1f915a17cf25624c1109a2900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00fedab32153c74b69435ee6c8df8c097d47a12e6e513a05079f7cee24c35113": "0x08c58b2dcf43c4505526af8e5e067bc08d3d0175", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1afd8047b4dd08d1d8bc15ffe901a00390a71d7dc601650097828c3fbc6a2202": "0x00ae5328446d335ff5aefe66bbc5be2d827915a3", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86b8c669e6eb75936e2bdeeaec46be25388fe9104540395aecd2d03a4335e959": "0x15510ab37ed950371ec9ddd5635fb5d1419ba3f9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970002f625594208e49a2a858a109794d50276bf82": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ecad80fa0ba008c28f47b446a99f7c401a24df80": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824309fbc09d7da0c050d4fd80db0649b30378cc4839": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900846460e32cf55cb7917297457d5f7ef697caf3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c1b9adf120f8247211132d86a8b3c9d04dbec26": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf2e734042a355d05ffb2e3915b16811f45a695e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa65fa461471c7ad4b09bc9b74844df0faf71d0198782b0f26f704b185ac3634": "0xe31e4be4a7c65fbf14ff16ed654bd06b3a1c6750", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f619e5784802a7c966c46b12cbd2510ceb084de": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289607f233defb94a83543cd250f2113eb5b5d68f7e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda1032f908449065d9512274e07fa2bc8311658a89e10ebb2b93d4d442c3ce29": "0xc47108828a0c47dabe79cb9fc8f87fa9b4dd3447", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890042f115150fc2eb576fc9a626075ce1c785adaa": "0x00", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516942fa0a3d7171b7ee7c816e72e6ff57fc070000": "0x901873793cdc00c038c78a1144c8c548482bb2daef46d5cc56e76ba142ecf63200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895fe82ccf847c7f2a0281fac8fd9bcfc7ef245f9a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c69f44ccd469078bb71e7a704c162029e45c0c9d": "0x008032b03281ca000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cfe2d550e5f331a0626b08e9dea48b37c7d33231": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ed1e8aa9e5dd16435e3fa47f87501b777d020000": "0xa2062f4049a118f70b5f523c45f2d637d73a43f73a80949c0c35fc985604393200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928937977eaf6917d93704a3283bfe16d87aa5eb0717": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928915a5e1c36ac791c29453dfb2b7eae643a1b17e73": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5bfd05d823b7c9f00a9d66319c889d50678f457": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923b7bf89200663f958f11c7d495f9dfa793b8ef2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397291cb06901bae540721973fb6a98a2f6170b21a0": "0x0020c9e7070400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397470f765ac9ca7fd2d19b7b68b39f3a3da9f648c6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f9e3e6c76760ce49fbd87e857fc18ebb7527584": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519e33584c644370201ab6d4d2c7157ce4eb030000": "0x2c4fa0b90e34cd788d2be0354965cfb4bc5207dca0e825b468e7c73a2c223c3000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a7aab883d2cb1309e3c942074c7a2fc1455152d9adcc2d590b5457eea146e5f": "0xba4795e1db269aa9156234e30888d75ff3aaddfd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893bca1e6cc37f9b72191cd98b6fbdce4e092f0d3d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a0be7b175484ca4b6ed2490439ceaebd1c83c400": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4b82f0101e2c306b1cf78e966da56058ad177d1c649111f3dd2ebe90afe3c75": "0xe18eb8520947679c4780bae0abb06e6a219b8df7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eacd0f6481a7df06b3af2c13b2a185316803eb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ded57d5f73180b6e247ca3f4fce025fb1a82459d86527bbaaef28c2f4a4eeae69": "0x61f4f7d2a593d1040406d2df519699b96f455a50", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a9f94b0f5bed56d03c2a3741eef545edb7c27ddc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba3494fe956dfdb34a70964c62c613ec1c9d1750": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e666339d61a192d437f96ad1e40f197d547187c8": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e103f3df1e411be2cb88bd11e9c2e15c4e69394": "0x00a0ed86271400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4479a684448e202bae5f8fcc4f2a898757ab8ea3b891baa6132b37ca3cfee139": "0xf00a83c85b0a5fd088b7ef7cd5b4910ade729d03", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289185476974fb1f9346c90d0831778f958456bcd53": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970055e4b4e56e60aed3224764a6479e704e2cb236": "0x00dc2582a47c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730d6d9ce640c97def75838cde7f753bf7f161403": "0x00ba38eea7830c000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970016b34601309434ee42c643a76b78696e8363ae": "0x00ec670c037900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff45a27708c55e909009e59f1d53aad9b940e273": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5142a8b76c69d8262a823448c648ec727322080000": "0x0ef2e01a9f54a4567f054356635348f69bb29e7e70592436f60b3dd4a3bd0b1a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df2bf630289bf17443c0eb89d5fdca0868eafa0a": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f6ea8017692a0d625ae893193e301cc22000000": "0xfcc3adcc46a1d2dde1ccb5a05db9534b7c7fc30404ffc7a5c2e3de947909e94f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cdc5f944f190ab822712994782a65d7723582eff": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513ef7e9ef3e02b5e80ec599420e8c2c8264040000": "0x30599dba50b5f3ba0b36f856a761eb3c0aee61e830d4beb448ef94b6ad92be3900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec3b9a4f7823e1300b670dc007d3408763760cb7c320453d33619773b01c412a": "0x41a7300cfe3e58c2a2c248b3f55228122961b132", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbccd3abe59dc17a36fae237852338d0fcc0f616a257aa8ee05a964b8b521ea74": "0xb74a9972cc5dbed5eb8714672680d8a1bdecbc3d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f9d96b3520fc91f21d75d65ed8531cfda0628a": "0x000467eeed0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d1329c5042de8e73a19012577ff26372d003d1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975449713c3b74111612c326efdc9a5e9567cbaa89": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a224725ea45e342d5f769ad16c4f7f19df7b1c39": "0x008053ee7ba80a000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51120c27912af0d6e3aec822e78236bf548b000000": "0x1a6d83de58105258076725b05d526d8af18d027c86f0b702ec1143946f4fa23a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a0957c6c74540218f392c01174ac3e6c911b57": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dc7dcc21d1c488fcf7775d7b081a882502ef47": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970074b0b90a98675309b9db4c27badd1b8ea42b0b": "0x00ce429ebb4103000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738edb955024a69942471180dbaa3416006379f2b": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928910b26700b0a2d3f5ef12fa250aba818ee3b43bf4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51065e7c5d8047290ced6812b637f7b93bc1040000": "0x324ec702cbef49677b575d5f1d84768fa445f2e273530172952030521917985f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891749ad951fb612b42dc105944da86c362a783487": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c5d3a4a84a2d404dc9828428180fd927dcdbc896": "0x00003426f56b1c000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895113c12e12427747e73b87b76bc524124acb69d2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e78c61b1083bde0307908fcb6231736fc9d51e930469146b4ebb45c68167f4b": "0xd99b6e4871d4235bc2dbcf58c6c1cca46ea8ad1f", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439a36821b843a170995a145f3503400866bd69fe4": "0x00001c0611c813000000000000000000ed88022000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892e05cd4a04815510ab2d10464db9c1356cec8bd1": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243eb514a98e40a66e5d4f634b9afae1ec41d58c659": "0x0000dc207497010000000000000000009554930200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d542e185fa0607eba80c93da9b7ff93435f0f5fec06a8876ca117c3557a3f516e": "0xb7a9b1c894620751312656b66c7dc2e333cfe677", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc07a393135ceff70346ef1d14953f5f348acbacfaee49076c903c17883f75d7e": "0x82d31226f14b0b79aaa950cfdd01ad248765ad20", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a6a46f3bceaa2b9799712e1d4413ce08cb8a801": "0x00989568830900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5140737986ba076ef494d447bf74cfe13e17090000": "0x4a51e088519499f09d4efa334b901675050a1d5ab6fc66a25eab4dc38a9b097e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890003903739a38fdc8226d75fe036caa51f37ba9f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977df289cbd544ba6bd153b783ee9024e46a1a7527": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f2f3d21866a3167be7b0af44dacb2e496c5b827e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae86355012408b1130842a93db57f27d3edab57e7187589b16d4186dc8eb5d2f": "0xed5b940de6f21fcc6d1168cb78590f9ab6cd2ba6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5cceedf3c21bb629353405e2e438cfab7c94c56": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76acdf6617c513da01555e0f83863ca8d44226e977f8ee5a243565193cdde012": "0x0026ec71cb407474b48df42a58a80618c4e44e99", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e613d5ff2f7ed0d7ff4c00155b749984ec0ab732": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c9fff9f2fd3bf895fdedae1c18c3951fa135331": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe7c59f5c785ddb869662aecdccf932b29e10771": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005734cba73fa9aa8aae2e4a11c1ddd631f3d064": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e793755ce4e93d29ae317ed885cfc65d45e98d9e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a378bab57ff303be5842361b3c0b5ff44e222a76": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f9998f8570b0afdf090d930b702e430edf66f8": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b1112458dd8d294c00264a5dfb897e5a85040000": "0x80c506c8a97b330e37357f791c6d498369d086fbbe9e78d67d7e07720d51ea6f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d2fc4af6283590eee0d236dee41b1c0b257472e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f4d910b1ba48ef5349f3cbfb01908c1f42ed63a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897cef137621ee58bd6c3a7036924dbc0288f81dc4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51682fa0e0e9a3cce302c81bad161a5a020a020000": "0x823ab8fb16d1f8dee7f90459777ec16efa1a35a6626e965a80f4135c4a6ef33500000000000000000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289efddc6a78911e0d1964ed041a8d81de69cdc8ca4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900edd6cbe72d13a402da3478c6fbc8a0eb461fb8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899303b03dc3aa29a78c0495513920fa310f9e561d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c14f09369aa8e6a7490ce9c54be313e5daafc0c7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512f47ab0a0e2faac53383158350f742b5e5020000": "0x14bb873b383aa7bfc47eca28391ee5482af6bacc5be7ef49f6edfcd7b8be727f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ffb30c28424584c8971adee83f320580ca000000": "0xe4abcfe30c4b4f7ac36c37366241c6091d766a03d28f070deb646707bbbd056200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a0ec663291c413542dd5919d73f95057ea06907f2937d711fd9f17591c0d25f": "0x9e0ee8a2c14d8c467a9b31129caeae40b021659f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001b2ca922cd635a78fc6e87d33b8e8726e057d8": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339739dc8b68208f3cf7de41f8129623dea433dade6d": "0x00001a93fa350e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ebe4fd701cce5d001c481f5662d1e941371c49f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000ee102d3ca744851a94c25c3eea1cfea5bc5a8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289020e6a798d9f7d8eef4696d0f9c555359900ea19": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339729c0e5b31ccbcc929e001a4828a62e09bd307688": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e2f4b428f4fcdc1a238a75b172a73c6fa788a1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d4b1e7287477ce8247daa310641ddef3b9311e": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a95e38a8dc50337aed200378a46bfd23d33232f5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515656b4cbab0151f442f9482cb78d3eae4e080000": "0x1a74b5f0acf6cc5cb0929de58f353dc08ae974bce555de6470a842e5c5a1218c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0ba2bcb31e7789cf711bdb657cc69526bb9a2f7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f465f7ce5a1e26c402177194653c12e7222f127": "0x00a4b18db87601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e31e4be4a7c65fbf14ff16ed654bd06b3a1c6750": "0x0040ee7affbf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e6594a27734f52d8a01015d8a810c81902070000": "0x3e514819b14bd168c797646db45a4c143390eac318c97c11839ccf819ce24b7f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891c4ba011e13f2f735dee87c7801001ef5e7348d0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae3fa55a10ce27c1f669636f4c9c9a6e3e665806743ae2ea04129f24e6f7a850": "0x91e943fd3640f82f0b3577e796a9cb31724b7bc0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd315db0cbeace9fdfa9b1fca41d0c0918f4827b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da1dd44112db0e17d2f116694636b9729d010000": "0x2c4bba68b6aacea483b743d0431b1ff5c33cd7522e2c4e3b53c0928211e25b5900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84c74f819ebdfa0b67b0807eedbd49cc649a38b769d42632458c6a13ea6c5416": "0xa6bddeffe26cd501deca6569ef33870f15aeb637", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e162461bb73493d7340a0fa23908f86005090000": "0xaeaea210589babb9eb1cb9a7787994ee4b65e98906cc9d9288386fa39184a75000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724a9f3b7757a2f30e5171009f067bb906f9a8e67": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928911814f00f1838263ab8b3acbeb9b90e90bb53e42": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824355e9a88d4c79252e7340f1e7816098b755c942d0": "0x00e08a5e43ea03000000000000000000c4d5550600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd650c3670b5cd26153d23688b773c926ac3188fde5961ee0a6b3d4ebc7cd900f": "0xd5bd0f12144dde4c70b3a80bd8b0817cc1ae6593", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c8b04462d5806811b58295d06cd8510d82050000": "0x1e2b0e0122e7c8598b5e600b94d16d88da6f9b90a520ad2fa21bd3004bf2901a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713597c1e37b3dbfb347255a2939b6d58f557e1ca": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a3b9f63335f09ab460319dc5b38b9f7029803b": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcce721bcf2f83777132dfe3a79be1bcb76db9b6e0deeebd3cc1adbf1b8a12864": "0xf18ccca441625179b40e774436ba038505fcef83", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397022070e52ad6f0425f72feb16636fffce243529c": "0x00c65a1111d361000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc3ebef58d5bbd698bd02d914225a4736cf023bc21ebce7cd1a41c03a4324575": "0xbebd4c731ec56e072e94cb0617bb47783ef3741d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f4925a195ddaa2f6923e6ded18b7b79fe2050000": "0xd0c1c48b97e9bf16e10f7449a111e40dda58ede742fbe3aa9a6dd5662a6bce3400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d1f0e7d6941ac51e65ffcfbe8f84db0ef919f55": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed5b940de6f21fcc6d1168cb78590f9ab6cd2ba6": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289114ee4ee7e6c4bf88c112a1cd1590c82e71ab298": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005a1f98863767d7a9cb58dd848119874ebf099f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516014b085c45f4d08555c77bc422143a3be040000": "0x96d7699bc59f8b6fc9be2be5f6ef506b63c7e10b8d751a73513694b601aced4c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f843d23f9c75d5e2602c6de0574ad94e57e8132": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cfcfb4fa0e64528b2c5c8c42e7d46118ae142d92": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb33463e1812ee584c557a160780b0331a50b3dc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b6a48781fe2ed596deaff18ff09363ad627245": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e6d63c094705f1eae1648ab88463fc0ea6050000": "0x60c05022f8868ca43dfac61219a3e3e51bd234b2e76a4e3f2c21793402447e5000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5172b49f438958c47739eed12feaf1c00068040000": "0x18ad345b8bea4ce83dfad12d60239dcd63d92a7d7ff2b8e529569c8fa5fe044200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce6e5f32bd27b3f64a693b593378b389c5103a83": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c95f72c8e52f3df1ebfe156e7ce75c2121c8d1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a8d70c0692ce44b04c5ce0a7e77bcc6a0490766": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928957d6f80480c6c1c0c7269c7b5ff282d0e37154b2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de2a3a940afc8f2dda379e32bb95a977514d9bb7fdb4aa27eea3c9a7ee8e8802d": "0x00735384d4b8bc62916ff05a16679d41c9850fb1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928956d8d3046128996b3356e248e2448c7de420d98b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728bf51f47e903925c00a03264c7e7a0576785600": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154758f82d5d1ad2f778cde5223c63e5b12030000": "0x60145312077b3fbd05398e5fd1f349e29b41e6e38029fbc9bae2f1f8a9ae8a2d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928cd36b7b86b3d6a8d53f0332fc3563489aee858": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d92a195bb2aca1f87595bebe3cfcc5792dfb26a4327b897e13be11c55349f6c42": "0x9a36821b843a170995a145f3503400866bd69fe4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6f13f5f9c2a098a1b0e02774f73b16f93ed892f": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0db810871a474bd38da3a58837e35b4df847f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b94ac84a9f1d304a6aa6ee6dbcbfdb3ac81f82": "0x00624c25681301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000e5a0a7326596d024936e96ec7b662e5de59e7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51677560270335b443c34aeb51a5c8355b9d040000": "0x34e8aa23b46d7b3fe5a4493e01eb4dcdb1bb4bc12ba4cc57e4d53a3c52d5380600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51109314b6e0951def279c176b0427f76bc5060000": "0x7697834d583c3c53aa62fc52856c9be86d55c0768f2bdc9c35295390a93f8e1a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517fef368878716783cde6c5965bdb11f463080000": "0x8e11401fdf86813483585117c55a6a912ab954917e64d3e70efeb25e18901c5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cd03d9b87fc7a4669076fb8675021f04e4e8f9da": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4a025dc1068a02a63ca49aed9ffadb1d249a1f5": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c383c50f156431e8f7187e0c04f14b85ad4aff27": "0x005650f3083000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c062628943a930b805849b494719c7d23c77bd5": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977009eb50d01c3aa66f09ed1b9d675c6edbe392b8": "0x00a2ed9f605600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ca3e84bdb1a6d3e68fd572699737d203ffc66ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf1e7d7b8b56e594e0294c5aef7a81b957350e34": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970028dbe0396e7c888373dc2bf00ec85c292afd84": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003b3575e3870ff8d5dc6114539250b359194aa2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289319112568bec6af88d43c258f36d94319bf1ac23": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007598555819639ca06fb8b20e3ecffe1159cb99": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985591bfabb18be044fa98d72f7093469c588483c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513dd248ee659776ad3caa0380bf925aa765060000": "0x107210db50634b820ed2323b16a861a2980dc828cd432458a37efcf0efc3390400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005c87548ba2fa697f7d3ee6d63722cb4f25c7c6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700365211e85575a3a4ade9c33c7207fcfe886bb7": "0x00b438b5fcb901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d24d8e5836c187481f76ab9c0a7ab01a912c31": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770a5643374c28a958b5dcfbb68a36d3fc31e2fb6": "0x0028f637af7c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8ff247832dc7f7d5163f2623869d3dd3c36b56b": "0x00a030937f8901000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899833f0f9247ee62faea47d6fcc838e262742b95f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a1e09cd44050639a816fb6374da3baa1228ea4d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5169237cb12bd6cd67888988af9d20662127040000": "0xc65de6003709aa5a6b81354c00fb13e281ac05e852cb4194c69f78566e8ac82800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897738dd4955693f16822925a3cc9fde3f94e13e32": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dc120c0536de04a202721962e9be40432ba642": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e6e426ce0daef13a18330489126c709e3c54dd535be6e3840513ee1441ddb63": "0x85e2f2767bcc9cb4814bd555413e2e17e1cf8459", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0bf059f5658c248e0ac04ee4f1dc07bfd739ef0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900091bfd5d263eaf2c04134a4ddd0eea8c70468a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cf356a6efa93781c6cd23d8d8d270fa49c1e549c": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d136726fcaf415dc235995fafe215258aed5c421": "0x007ab0403b2c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518579ad59200592ae351040c18ada9880ee040000": "0x724e0032275bac5598878e5dee08149d11c44700c9c4626d1f339ff1be715f3000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518fd760bbe17026e541defc264183463a2b030000": "0xfa74a5a45fd63ee5693a96ac0e371fe7559fd8e9895321bc7761e1cbcd73a32200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511c5b41e2c8170e10a44f4346524bcabe2c010000": "0x4cbd028b49652bb2a34aca9063cf88a06495ef9d5d33392598e0e57de504681100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5101f028f40f46aa78954efa1e14f0c6b3a6010000": "0x58e8986a603cab040fb5e976c61b23021a5f5e7a0206da27c08fbaec24fba75500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4c1562a1e4d60a14486fa3b12d843501862d77075d222ea7ae7e61ac8cf6a11": "0x261c307a058f4a6970c2fd1c3d696fdb968b83a2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddad463ee00bc9a0e288a87bf7f80ba96ae2bd082d49beeb7467c40eaf153f00d": "0xfdbdeaede3cef361db915f912bcb676475074f21", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700976b44190fbe9870317db584086f6f9d84d610": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ae3e8a291096b596d36cd4f6fcb3edcbaf50e673": "0x000cb2866c2100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900af0c8544bbbe405642a32b0aa5758fe489e37b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890056962a7b6b0ec4c917488d06892ce34075218e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897dfc554e9b71dc76d1836307af3f81c15eb9d0bf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db3c66b5c51c955020fb220715dc0f73fa4514ca434efb9bd12e9cb1690049889": "0xfcf8700996507fefbcbe7258ff7f5af0abd5821d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a4ceceef89a949afa2ce10c73ed5f0d79dfb3c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ba381e968d5a797f0d93e5f3705bc2a98d8734": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b4bfe7e67030cd1da33c01c06256038d4713a5": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899bb987d0bfab369b9eca904b842723670584a5fe": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51861a6c763807c7cc9f5c3626ccd6cea90a090000": "0x1ea9fa1c4639443f9cbf06f83e53f11d817b751cc333915cd9d15eb6dd917b1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3cfef97dad26bf0e3f7152edb74b84a278c123b": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ba94085b8a6965a47f4b0c283cc08d76d6060000": "0xa0048e4648a919387cd0843a35a68bd6ea9a1418927eac08a6f7bc11e3f38a4600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431f8a9aa97618c77fad4be22fba26d4ea0507119c": "0x00600b6776ab010000000000000000004eb5b30200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d0036b211691a8f28a2f159a8db9d84fd3eee0": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e784d624d4e60da998bdd79169edb8beff89d27": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c509424fd0794e367683b213a91f3cd83d1180": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289734ed6fd608eec64c9fc1d82af4fa6165820bca0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895eeb604e66c8afebce169152326276d345bc320e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e8a7bad83211e09594da192ac539f37dc2060000": "0xbc309fd2bdd98d456fabda1bf024664ad14d59f052dcee610e47d8db622bf70100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e2409b5ef509e1e584584edc945545f42fcbb3f288f3355e9194206b4ce773f": "0x49fa2629dd5ba6ece667bf6eadf174d2c8195cf4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df0dace05e939a7d03eb7edb13409ea19b7cb1f0d20469267322acc92c9cdc62b": "0x6846d14e5177c97220466fa343cb3ef0d1e29f07", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397450f4b99969a564bfe2388b52aa949a1c109b588": "0x0008711b0c0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51753c633268f8b3d0362961f5947220b321020000": "0xce23da48a54f65a3dcd3d16bb18a99d44a25cd096954fba3ae2ef973cf706e5800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46a4232f9aa69c5313bb2909632365ffef0d59eaa0031dbeb68f903b164b0714": "0x0044b3d793d4cbf50f0973e2c8d62ca3bdcbb38d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289855f896fe935353955324fb1609165ec9372d473": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c572d95b14fcff25a83939d95bad68eaad030000": "0x30c76c1fbe70308d47eac55e1bfdbc77cdd577c1cfdba04ee225d5057bcf330700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970129b205bd7da590c22b986f2fcfcb3079ee3d69": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a145addb0a24f0c4697189a02eadb006be244d49": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f651fd29c612a4b39a1a19cc749fa099f82ec9": "0x00c0af01f46809000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772d8a23c70ec138734d5cde0fd9e3edad5102320": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243b752d54f3436601d8ccb4fa02bf2289192e4ab59": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a426ce80e46773962e068093597661b7733494a3dc2ecd9873ccb7958a7a153": "0xa738917e17968c22c3ae246a69df2f64fea012ac", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900497c0ea743f6a572459c14dff09468021c84de": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a4ba602a82bb59c3124f5ade6b77e93bb274b3e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0af9641145b68970bf6f3904732bd7740d57be1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ba739859643cd795fdf204bdcc4236fa6ce04ee": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76729e17ad31469debcb60f3ce3622f79143e442e77b58d6e2195d9ea998680d": "0x6bd98f74f818c4fbfb760afc077c3c8059b11276", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717822cd9476fdebd92e640bdf9fd63169750f9a5": "0x00e69d55840b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d34e8aa23b46d7b3fe5a4493e01eb4dcdb1bb4bc12ba4cc57e4d53a3c52d53806": "0x116812f3295d2754012b63805ca7f89226115950", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009fe4c8eda6664669ee264c1db5f831d4af2f5f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938db95df5bffa0bd5e39c27866f7d53e04c2f87c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897abd31d835a1a6ae9d8912936e8b68f7fc89ee0a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db036f284468b4fb6b3d48f86280cb806fc36713edd255d195504d1f32607af26": "0x185a7fc4ace368d233e620b2a45935661292bdf2", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51915725d2421192e91f84c0ce1a78635bd3080000": "0x8829babf92550447e53be69e21369ef808fcb572a5629ce18dce2af6194e951a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436812d2dbd83e65750a7db91ab8806972ce170be9": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004e0fc93058997aaba684c4b3e9b5549a736fcb": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002bb2aee0241ac3b7a6fb01a6fdb8c5c7cd61c8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51276a63d65b41ec79101ef73e780b7fa1c5080000": "0x8ef70a1d0d8e97d88585fce557a65af431dbf158d2682b5088134e1cbb089b7800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e64078aaf2bb01b7dca49d0257a43652f03813f7": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970045e6f8ae50c7b511c257acc200e3fbbf947d44": "0x00ba12184d7b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282438d590735c51726c9e24a446143734dd5ed632031": "0x00c06e31d910010000000000000000001184b90100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519d4b9bb11828d6f69d2d1c1021f15aec80040000": "0x40bbe499b94672c1618d355759184eece4fddb4a142d3ee0b79d4de66b92e32100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51923607500b34c83931832797d401d1f4ad000000": "0xe88a80739ece6a8dfbc8a37158c0c1bc0dd0368c672a4ecf3516f0cbd6cf435000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e7b750b2a5a7110f77836074ddfbc7e095070000": "0x9a8ead39ce1b44f37d16e98496441be79018e910d5f58c0fa1518d8fd774955000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007050147f1b0875723fcb4ffce39451ed3fbb4d": "0x0068eb4646f709000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715a5e1c36ac791c29453dfb2b7eae643a1b17e73": "0x00baad66232700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970584e184eb509fa6417371c8a171206658792da0": "0x00581c527c5c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894755d3d389180081398ce855382d5f03e6547acc": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d38a295559d8977464fd8cdd133f8805f2388e42a6e009219247048a27d9ac06b": "0x30f0056172b5a1432a49c44b0c5bdff96a7fb54a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ff83a6d7418c73bb7fc1cb245d8aca979295316c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a44db7ef03c1c87530fe2aaba58a0b6b01d3c3e1": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c1efc49285eb5deda2ac887d613242475ed15048": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f2293358c8721bb10cf8fef9fc9704189581ccb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339746db544038c59b826dda8d3cc8b72de90c86e683": "0x00b0ff5367f305000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e4e1bb00487836ed9891e040019c477ec5fd483ac46cda73b62e151f31f6103": "0x00a2e5004a31e7b931bef05499dc4f3dca1b616b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d9354ef22423d1d544a01a2fd8b2ac03af0aa0e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba9d129d178bb0d08689948da60b5517ac35b89b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a3b20eee7cd3801a6408ff4c6f73a75556da2a1d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de679bd5e3d1d3bf6e8a515cca2afc8e5bf5d25aeeda6851134357d1c69070b2b": "0xbc13a9ed082cc1556a92d05a143fcd2346ebe62c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970006bdc62b8bc4ffb50a0e99803b147843117239": "0x00d64e45001d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a72895374cf1814aa3d5e82a21dcf181782df422e033027fa4ad65629385872": "0x2bba2ac16832d15f8f415f1cb351fe20977ca399", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c5faed48240954efe9b5f666d1b6df1de3fa2ae": "0x00821289f30200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ea949d53645e094cc44db822ad4c0d779f9c9a3252c5bb85816696b75e04c07": "0x6236f26b6bf5e69bae11e794e9ef25d3895b3b1d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b4fcdf9e6c5fc7ab486cb70177e3676f1df239f4": "0x01", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970028b16bf35427a11760cc5f4db866dd8127be14": "0x0016e332d60200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436afe9576ad00a571d9c04402006414ae45a8a490": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397925cc6e8424900f85c93957095893f806afab0a8": "0x002a886f964c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcf3808986a5bdfbf72211debc42cdd72af74aa1": "0x00b0ad01f46005000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891add1af6a3949b9613922f9dd9cc3c98d003d5fa": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397668ba98f1cf879d29ff9767dd89dd06c188bdcca": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893be58c29b09669c1b1edd3153b0872e3cbcd8492": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5bd0f12144dde4c70b3a80bd8b0817cc1ae6593": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e527eaf454a93e9aaf096b404c8450e66cbb9ed": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccabcd8ff377bae0838b7bd827a83676bce01aec": "0x0010df60427b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289539f0f7f1e8e7aa08d822213305eb6e40c09ee44": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760f2a161f72ca11980c5b6ebb86a537e63fc2de8": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928937213da6063363ebdae7ba5a3b0dee7e139483f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397925807e0ad65347794cffac5a8622d573c3cd80a": "0x009a32d2642900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a22438f8c8ba4f08a9a3c857b2687cc1a890ee30": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dccbfb039ee654031cc916533ef1ce64e6b1422f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ae125582205e28cc4786f5e729d9a09608d7b27": "0x00fac8d95c9903000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928955c1214cb709381cc47eb4edbd28d19c67939a7a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5147336a6a2853237545f8e293f51c697882080000": "0x17b7295b2d66adadef5746c793b746bd2443e1da913636625ba95c7ff853bf2200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e2021221b0bb5e2d1ceda9f024ed9804b055708": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b55be9f54c6606717a0ae67942f3fb297df4e396": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711bc2c7ea454e083cea1186239abc83733200e78": "0x0040db35ba1601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700320c624958997f6d8ec1d130a436e87a1f0b0e": "0x00bac1e9b31800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967cdd37fa7b4c8dec31e218467ff93f2d1d44efe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b53aba6899696c8f9638267c5c32fe003b86c871": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f8a55193512202fe419de12ff41207968ffdce": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e7f5b9a284b1008acec688a28fd7b7080202359c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2c71c01fae573da0ddcf3a0f10c28e5400093c72eec182b1a141c4dfb4a8a02": "0x58a0056880f6490bf35430b081f49d2edf2b1915", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bef780ac34cf7b53b5624b863d1a84918e6defbc": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e3b44cad5fb1b7f0e23aecb9564e183a51fc0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d36c27983d26ff572358bdfd21942a2b4cbb3391": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a9184c124058289cde2f114180733a9e5b29724": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282435d5ce50ecdb86b2e04589daed8e6cfcfc238d3d7": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fa2c79b96c7e30d5fa1f24a81a84e10aa336ae0": "0x00fad415c00000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895dc41b5662cf58ebfe9cef62d58c2c11a9863428": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f780e239ce7dd4a7b7b1413d70e2c01fbe070000": "0x904187b85d65703dbba21e51c74e2d89b492c9b0d44f3ec3b1974824d3eec95c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5196262ec8dd0da5b6d99040f16d4a14f046090000": "0x84e6b806bcba1f9f0255ec9eacff9f4322805b842b6e02e00f469cd5494eca5f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007eb3537067c48639bce08b04e4fb52caf64e9c": "0x0054a6b6228506000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100ae3b422d71b3c8a313e61997fb1e46f9060000": "0x5a03ae20d63f42ac899a002627267b2b98dcb922812431f7e983a9632d2aac3c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726a21090f6187a35c5d0578c68e22c78e569b18f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6a3c186d9e7a9a84043a4a6e62213c376e7dc913be683e2c77c6f61f9e67c045": "0x651547546b24fa036b9c1b1c2dc8b2ae9c07aed9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a3c5437ebea4546ac6e6cfc1d8a76f30a6539f": "0x00defe0f6a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8ac74f5da1ae7e61f7c7c511e2b888589b801c2": "0x002e275035cd25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c68b2706d13f729df4eb2ab8edf4f2d59e037803": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da384f18b8a6e83d45afa4731424f1bd08317d10": "0x005880abe94f01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ec8a7741041f5ceeb83ba66b58188a560a040000": "0x7cf0679071a357a43da60fe7685f9d0314b704a6465af69c4ec86a310d2cad4900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970055823c75b1ea66d16f08559adbc70e19227322": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ef237ceb4033d0ea9adf7a316901a384b1040000": "0x76b3fa5836fb5eb23288d20ac261989160ce1c76eded0e23e6e25ab98234152900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908ee71a2eb80bb3f51e5d5a95862f78aa3703ffb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893137346f506a2d980e1b00a5ff4801ce702448fe": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894185524e7b4ec8f909a435f4ac705f9348105b32": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db24b419150b1a22c259fd8321a3058ea83a8118d29eb0bc46e0056e6f9889427": "0x4dce6b147ce7c96b3722bcf6ea4f86c98f0c3419", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000977634918b6483ebdfb23a3e68fa322f1da1b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2bca81090e89e309ec127817a88dd595f2f3b370c1277ee11f5334cc075122f": "0x1dc59612f191c66e69dc23f3ab00b945593836e9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dfba60f29b3caff9e6942494862994c277f05d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892271afc06ff1ccad666da20d7e4c5817ce1af599": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f59fbfe6c2cba95173d69b4b0b00e09c76501fc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ccf6ed5fb4b037e92aa2b61cb1239fc6572d0c6": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fbff56f721e4adf38f8123c4e98abfddcb080000": "0x0e6de68b13b82479fbe988ab9ecb16bad446b67b993cdd9198cd41c7c6259c4900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f24ae4ffa0dea729530f81bda54f5ad0af050000": "0xd4ad39c91010433747d3e6817e73678e317969eb4c33786cdf091affcebe450500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d567082d66dc9c1cd236a3044a92c5b595fbeb6": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea9138be7bd2bf49ac9e7eb09cc9e7727ae44b1b66deb95562f353c71b2ce168": "0x0054ee21332017c772a9dcb68cc6e120b305c9ea", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b357d2fd313c931d28ff7ca74e0e0db992080000": "0x7657cea869409d039e938e7e3c418ee4a0377eed697591775c3210e2f718625300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d396f87af37acca0980aeb814375eb46880d37bc": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700957438646d37820df1a7d2434f4955f4c930ec": "0x00185504205500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24bdf1036d7330a4523dd74314816746d3969569fa9604a4d3f8a3de9ce24f28": "0x008dc499df64ff95fd5b048b15d430ca0baabbe1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c699ed7a9354ebbcc89529f88b67802e6f35a337": "0x00b4697f7b3200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51332db308a39ec5c17aeba2b4f6152736b4010000": "0xaa339be97e8b33e2eaa4bd2ae50e48d238882841f2a1caf34da47b021880443400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289759e87db3f90e6dadd412213aa32140a8cf26ba1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b9be8a12f0bb04e290a6727e57dd34757b776d6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fd4e15b4dd20136a9621576743893a17d4dfff2d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3e809c51300ca5731ae485be9885098ea8139d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243968bbcc804a1003e95b3150c50fcc25873e0d8ba": "0x006001ca9aeb02000000000000000000e7c0b90400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b3b6d0e8643d53b6b22807385fa63146058f56": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970037428972d6c3f5f40200902235c03843a3ed94": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fe2716ed876e1a4243333758d547131a98490a": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707bf572c47678e5141ace6b29c38e0a9995d7134": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7b8441d5110c178c29be709793a41d73ae8b3119a971b18fbd20945ea5d622f0": "0xec3af4ace34c5c019a1bc08de4dd22df31f0895f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a184d0a2f7d54d4552bbdcfc10d287a4c5bea5aa": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f454fa5c8c9dc56209f6f5d4c7df32c735c4946": "0x00cc3bab081700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dfad4e398bcfee3910f788ba02ac6de09156ff44": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac42f377da5d9a624f94d0e9904e76c144736d": "0x0044db3fc1ac00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900477bcf4c48a8c4814ace55160c0ab89ddc9795": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc08ab19077f91abc5f4163463deebd9054613a93e9d1076b4beaf38684eb4e32": "0x00ba381e968d5a797f0d93e5f3705bc2a98d8734", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700272a64bc6afa24c034902ae6d9253314a0f655": "0x00488c227be903000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c2fdc1f6d5ade6a3d39ab48d545a6a59d971265": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd546ebfde341c6b20726d206d084de51c316358": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289341ad4e79cb95c9c556e0bf96863d78a182d08f1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005b75905e8b686acbe0365d46ba0ac2a70b3160": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4cf1511151f1ff35e0241aa5ffbf2bb4f13f57e68a2e9ced4274ec08b6af410a": "0x1a0433933f6ea1084a7bf83ccb474b4cd263e7d8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8e8e3ab65dbcb1a1835299935bad1d984a80fd4d1e3f10f7402dab53aa44b128": "0x705fb243cd2cdda5ffd62c702fbe2d48353e3bdf", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe84f63b9e30f438711f49b4a2f3e251c541f9a6e43b0e9df4f64e8394ba517e": "0x5c0e0da2990dd5c3933b13cc49264c206e62b474", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5129bb6b788cc740ad8a4076865c06b26727000000": "0x1c2a5f648afea2a94286c17f6c60d16c9ef8511fa4ae88a54ce2748b6c8fa90f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d66b1ebbaeb6b2beee0ef60ab899c6a6ccfc7e3cbf820e5be26f561b44a56832f": "0x004af69a0c1ef595d06cdd6fa458165efeb0fa8c", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d7ffd826ad8f3288a0159a0c6b5492242d070000": "0xd2837598797295d619785777a5b9771ba532dbe841b224caad6ab58110d67a6100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2cd0402bc1c5e2d064c78538df5837b93d7cc99": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac9699995e6091a616897cc7344af69d9ee2ab61aa33ffcd2d11cdb895a6f944": "0x5cb05a5971756ce32ceab168695de963f70b051b", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511ccc384eeb1a9cbdaa1ca3ea4b8e4516ae020000": "0x9e743c08f7db2511b7d73fbf70d949c62944ab8fe18ec19690f2ced2c0fc351400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d18a9f519644fbe5f27956fec87cc8c035080000": "0xf49b492b314717533bade41861cb8699c765a0bab8ad7b83635662705c0a11d500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd02c1edcd16c17e8e1a9b6d3bf8c20df4c1427225868599d0e11da1442eb297b": "0x67494fb2a324220f917b9f9d6f6cfe72093d4cae", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897b365d77a01b72223a89517b981d0b97e5e41646": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a43389d6cada465a26af74f61c897d1855ca63": "0x00e61c8dbda200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397141de041d47905ce043140c61970a5a28ca39879": "0x00d098d4af7100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f35d8f45cd7c2bc88e13c929ae5190d7c4060000": "0x56715f37cc9f7b4cf7c97ae4a0f8f4f10d8a22f6a45f0b08a6281bfb175f7f1f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b305edc645bc99c5264c16c8c9227762c59043": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a20a5419f34167dc1b4ed5a22a8888ea6773520a": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ef9d64a965dbebd8671375325a0aad9358218934": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973de2de32606ff2d88b86efcabefc7f0d850b1d07": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8bdc33dd6ee3520995675c15083ad8db68de8bc": "0x00fc717fa12000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbeae5bcad1a8c156291b7ddf46b38b0c61a6aaacebd57b21c75627bfe7f9ab71": "0xd42059f4bba9e1ec1aff76fc2c0afffbb0abe68c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d482c372545dcc163359bb181126befde763314": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb8b81fa35f3cc0ec9878562c80da8c91a050000": "0x26a9d684d5dcf7d34c82d0e88b811cf5f9faa13c95ee1eef1aabaa1f2f3b956c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda61c824abfb1e5df1140697374346be4443e41fd1e6ec99c22f2cf3381eb82e": "0x7cb45acd0b8a871f396b319e5549bcd36a047533", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516974aa1820a98d8c68dee483a645b846e3070000": "0x208bf08c0dfef7a942588f65ce004eba9932fae7c25fb33720debf8d1e27350200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900599a3e41a80ed4b6dc948a52fb52bba05ef887": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dde55dc13c5df43146dd3a4e8b44da6a27d052dd19443121adc90bbd690b4c334": "0xf41b89ea9a14abeb84183d25896b79071a81f5a9", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5108cf667fd728f66d7fc5b78d2b611cb774010000": "0x808776b923a9800a6a340da7dadecba63033a28c5f30879db9b6f8975caa9a2800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5129d2db55e0a939e65a4afce889d0671790030000": "0x1a14b0528d08f27ab53ff72a5b59dd415232cd840c4cf4d07a237be679cae33400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970be9a01de08f7c18e973f073844aed6d8414a5e6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749657dfe91f0572eef4984feb486a34f2a98eebf": "0x00ca91bb010500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d167d9286a956bc717c29ebd938fc46bc05eeda8f507575a77d01985e35211e20": "0x00106ef113a8cb3c3a233553c4ce69ea14d88524", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130eab7fa5eec230d8c29e4e58423f9338d080000": "0x9088903c35f715b176cc6dc581484cc306a7d643b0220f1386a31ca925c9a60d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970088a951e10d2f4a7e9cb3a2fefb563fac33eb0e": "0x0028cd22abaa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289350b85f8b7d4924c88b90cdac534ff4931512ab3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cef11607ebc0a7535f23e0b7bc4eba5dd65a75b2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08a42f9d42527558253666ca03c7ba05ed79b0ee71469cdeb27d99482da09320": "0xd06dd653d12418aca05e155c451e4c4f628ae986", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007c2833e9857bdcfd571270b500c0c397f0ea80": "0x00807c4be53b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc493b051f40fb47625edb508d1a43509ef0e3a6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c0a1988b92b2538bb264e649e285bd78beb07": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928936f44cf83a35e43c5ac7d775f24a11e6a874a85f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c5e52c3882edc17def447d245ad8101e0c040000": "0x8a1ec46479fec3c43eea382d637de8f295ccb2c0b6f6fdd4c5d34a687737a60100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289537902c724861132c14848de8f504f196eef562c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c4363a5d67bed3671cecdb593609745882e913": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974dfdcd7e1ac714e61cffb899d09235f4b548f960": "0x009614e5531101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b5eba1c7420ab3513ca76e1358b1a7c9038d1fe1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705fc2dc53c14f07faa71da549035569e14c7c793": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895449713c3b74111612c326efdc9a5e9567cbaa89": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a528e61d81a47cc9ab160555143da7220f9471d2": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e04fba4d693e414f7252ff3381616d711e13b992": "0x00f0cc775d8600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3ac0cc6ebb5ab258f626ddd6ad1c1833140996e9703c6c4a5688f45b421ad710": "0x00de0911e577096ba2d8e3f2d5ec0458b1d24830", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289905aa2247bfd6b8c4850d59b83cb6a43007b2ad8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea9c3d391651517623fdb56677aed5a825000000": "0x8c6480536395191bbc760632ae89722cba67f49042cd1a5a5e729c3186a4176700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397438ccbd79f20c1e68b828211ec2ba30c0ec9c05a": "0x009cb679bdef03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005423adf241a0a11478d32b7d49930fa4267709": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e2b429c8428f37654b553ea0aaad267f8c67cf82": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da29b24398799903fe36cfe2b193e8d0a90643a3abc81105a5356afe30c7e8377": "0x7d64d09556b4e737f932b39dbbe48fa4f67d862b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920a77f06ce8ad15268b50577aec5dd0af28c5c84": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d127a30e486492921e58f2564b36ab1ca21ff630672f0e76920edd601f8f2b89a": "0x6be555d4469720a6a980245a1a2139a5e678e415", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971d55410119f0d9f4d3eda0a346a43ff04e15b36f": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a5d4145d389cca2ae8740dc2af3a06acf135e3": "0x00b65c7e590b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4e721d3968b0c88be2dca14041f75701064b3b6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700973738d8b9ff38e9af49f5c7b511f41199c106": "0x00e8d992a10400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005e42814cdf3db319923b257a0e0a48e3ee5350": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890093073268cc5bbc3c4a616d9fa90cb49a34d339": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72d8647fca16d78cae19f6186371a4aa9091dce52f566f05834afa9ab177dd28": "0x449b5b91b10523f024b6d9101afad2f3cfe7c8ea", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee1301ee318ac92f4ae4254263da4325640a97a2": "0x00901ec4bc1600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d5f0ae658e4d4d48cce0355ab6c1eb155b7a82": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8229bde539592a0e953424f61f362d2e275eec51c6f88facd1b8cbc925f045a": "0x30da5c03ce04c15dfea28b7466b5598e0f48c1e0", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ad8e92592570e989ca076e2d5e4c1638cd3c5": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cd52a72f9655ced5ed66134b11deefa841a28d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978533a89796fe8070604197679c3e250ea2a88a4a": "0x008e804bf80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289128b1dec802ddf81681e3d6f113bd83dd852311e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004ed6f4db65547b8b8998bec6c133d99d37fe3f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d761a334025503fc32b8d7029bd4f1f90fa08b78f6144e0680b430931c36de76a": "0x07940d682e51fe3f01b2236d18aae7fae021a7e1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289058457cb480231445486c786db63ead914b9e1d3": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a2a6f1eaaeced797b514b9da30309ccdf857d70": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ae125582205e28cc4786f5e729d9a09608d7b27": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701bdb7ada61c82e951b9ed9f0d312dc9af0ba0f2": "0x00d27175e9f502000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dc7778c338e869497f09f0894618334afc21d266": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895cd12fb4761f91f6a2bd4240c73e7d8fc8a3f638": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c99a3b6afc1215dc0b1196ebd9edbf8b045b76": "0x0018ee47a4d000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f9bb7e454f5b3eb2310343f0e99269dc2bb8a1d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c9645cd9c965c5d1ba0d1519f8412c5fdd9283b4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289470959f6872985a33b5f5ccd75bf2f8a407691af": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e737ea62ef4a2b771e3e82be3b8e0898181a8b62": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5143df6ae6411e8d60b5b5a4c5516ba6ff8b080000": "0xb3c66b5c51c955020fb220715dc0f73fa4514ca434efb9bd12e9cb169004988900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cf7c0865a0dcaaf8bf3c5641e82eb37c690d5024": "0x0080ca3961240000000000000000000069de3a0000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510332b4931909d1f01830bc4361537e4f54090000": "0x1a2f001ed283dc87324378e0fb2c820997b8ad16632be93cc19869440f5f5d4700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f0f772504eca495a1e9bc3b8a1cec2b639c9df": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b614ba568f71a18428d29dc741ef829140b46e5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2e52e1a42c3ab5305f1b071ce7d197565e9bbb7": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976f9bb7e454f5b3eb2310343f0e99269dc2bb8a1d": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd1cf598b1a50d24d53c7241fedf2de60f489597": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002954009901528acdcd08e4bc173f271ae4c291": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5247024eb375e8741cd51473702b6f574bf45b8585fce64768177d2659da5f3b": "0xa13d980cb2bedb03cacb7003143e7af78c602030", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd485ebc07a3913f5734c389f7b74a7d81f62ada7262e22d485b1ac2c640ca646": "0xb1b561896f65cd50341459052a69cefb25673451", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970099d229b3b989f3d7ad9778549a540058160fec": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d35ee346bf2df7627509006d92316ed8d0713d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704f0594c389d0071131f288014a05e91449146bd": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517f824c46b76cc7857e143df7b9afb537b4060000": "0x00e2711e44108938250ef0890c80128c0aac93fe6e146ca54e6905a1895ff06100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792349b865f8b6033f8a36861f62fe4b0202c93d1": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894dda8293a5da4a6021f6b228845713ab246a8607": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd01fdc12481b7c5de7004e8dd54ff70d4bc561d3ee07de32dbee35b7348b813e": "0x65e9bd9c64b29a79b286f4b2f8a3cb449c13a91d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa70dbd775c74c3182ccf34636c63637b49a8f56": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d824a7af00f98513fc725908955b32f8c745bde6131ee4b71fdae8ea153101218": "0xeb8192767e4a432cf722450cdd0985d904e6b748", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730f92bacb185193876bf6f37a6bb10f01aaeb36e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20e0a7b8b478d267fed40ccc4a53315eb9dda9e258c6cd12befa4ce2039b707f": "0x78a451390d870ab409d22dd5afabbbb623166e3f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970042fc4e1015fd757f149ca0ad34f44c33b51893": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513cdb10998eac4559fa1a267eb2738dcbe5080000": "0xf89537d3a6e3eea634392a7db7096c70319cf6c7a8806d6312ec58179e53c60600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51558a258f1e6767ed1f60dbc321d04bd0d7010000": "0x489ce3deac0c0573439241af1f5b6aefaa31bf07c4cc1fe3191f6de83b44952f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e2928aa326bc909add3e91fc8389d76e6c5fa1d9605edb04d657aab22e5a258": "0x16621a778e3533c0219fa9db54f2d65c1ffd978f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddf2bd305b334ee4aa8e27481db525338c87da5f": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976c068858140829f7fddd7907bca518e6b97c7274": "0x00b2db83201e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890710c910d3d8061019f91bb90ccdf607898e135e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6e66021e4bc573a1cd11450b9adde832cafc9e7e83fd3c4901c3e0d0f0789009": "0xd38e00c10beaa10ed77f6e574adcdc31f1647e56", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289537b2feb029a7073da038c2b9bd34c1c6109a0a0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397522aef9c286463840def1e9d7b43f15de76b1b4b": "0x00ae9f17c4be12000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098029c2d615fe6f6cd9a6b6d35618878dc4cdc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a49b7c571e40e73be0122d9256016ebc704a38c4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ae76cc2cfc6f643aaebc3391da915c3e722329b4ff10bcbe6fbead4e79fa56c": "0xce2dcc3b6911ac513d32f326bb72bc44c1ca1b84", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970bae10406f82399bab8c8713aa8f5e0c05c98d84": "0x00b688ef6e0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006a2ebbbfbbd4c4d0537c033b1e1ff34202bc61": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4b2c91d9d4fc939948ca13e03fc91b01b6c9c286ebdeb4c6f9843156166aa19": "0x58a9d04522df5a3c7e1af52192b89d9c952b338d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb2b6f2f316f419c8bbaf441ea94e47a2193f7e2": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea4ca720a5284bec0611c7d63e78cf1d5fa8a64d0c3bfa17354fb2a4cfe45144": "0x129631915a3ca10b9a159a7dc95bde0ba71682d3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c89a2437b7cc02b0bdac206ac317a8a1e7826db": "0x00602225aa3f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ac00bcb875fae707ed8d800e17985d174ad3027": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe550bc1088982fa32049171142e42954f3294d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d8566765f1c00841096a4c097c5da2cf656509": "0x00ecc28c1b9603000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896556deebc10e49b32cad8ed7f3604827f9672e0d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920c1bf2cb99a7026fea57c28dcc9e85c4ac89c94": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c0dc84869b0efae772635a889ba9986b28c0fb": "0x0058823c772100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c50164ef29cfbff4685873ec8918fa2b5190b2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5abed40690213905ecddaf187a5a16cba5705720196bd942354f1debb47c4470": "0x2c8d6ee56d63c0ccc987b1bbce567834e4e3f312", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a6b2fc358a77318dacd1eabcc8a5b27b7ec14861": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894dde991987acdfc23c0e4e72c70d715794a052c4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897162bf64f3d1e899cdea224458af61a33511ff42": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5191336d14cd48e42c88cd104051270410c3040000": "0x3476a6305429ae9215028af5afdfa49abd1104cadf55e65e20af5173acb2de6000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d103978c14955ceaae31e258d640048cba43ea36a3636d4f6884b7ddf5e30d113": "0x00acc0bd13770679812fae76ceaada758781a5ee", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243cb41214ae65c8ea58500c913d29305ac2092f0d0": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc05210b4c8af29367ca9ecbde4992250204318d053a6cee2a99850ca05cfdb5e": "0x024afac105064abd224256087859ce5fe0dd2f89", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700718f7d6f56e3aef4ae4d4dca50bedaa4bc4f3a": "0x00745a2fa8bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e1d15e2d670c63b9846789c38c28eac68755177": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943bf5419c4eb65b6f8cd55489338ded388c71b62": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c8d6ee56d63c0ccc987b1bbce567834e4e3f312": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928974b9ee01ea740c5d61e3868dbfd5abe504269ae6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d98e54d3a278c69a0a65b7bdc5a82294ae9c59fa7ef908a41a3f479ae08742b23": "0x94cbc73d485035a0ab712484144dde3352d6cf60", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc49098d1f282e8d10fc8ec1f27e119fa45f8498": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00c68940bd54119e1b84fbf90e9dd10034a2b937f2c2016a155100a598db892b": "0x00590fc72b10e46e5a5eb6adeeb2966b37b61b4c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a7ffad9c186a581b06ffae5f5c1fbfbf190c794": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339772af8296d1272deffe909926d1db18ee418542a8": "0x00a2092f3f3600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397051f77131b0ea6d149608021e06c7206317782cc": "0x0008711b0c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd3bd59974417b224b5951648e5209ddadc42381": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008d723ecd3298ecf004ea846fc880002822cf59": "0x00983e953b0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700feb32379a84bc54fafefc9e3faa03e626892f8": "0x00bcdd8acecf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4410731522e26803b8e6eb6e5467d77aaa050684b95722bba660882c90a9d015": "0xe0c04181f1437010d0db38d7623be82af40ecd6e", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bdc59bc934360468b13b8a94bad99871df53ae": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300590fc72b10e46e5a5eb6adeeb2966b37b61b4c": "0x00ae3d7161030200000000000000000096f9410300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcce77d786693195b956708015ff218d87a546e5b2c4a2696dc7cdd82b98c9b44": "0x00d57d447ac2a9cde3401bba7abb6f888eb63ed7", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fe023a9198e623f212a7eadfc0565fda1d070000": "0xbe29d91eef0aac3d083dce8b7033d16b98fe94fc303d21e6e268ad311313844a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe921850b08e283ad8e9fa23d55b6b9a50223d4bbde1f86884783c8619445244": "0xb8f9101b21f47ceaf22f52b0f4373a0d95ae7af9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339713d45bada78daa5cd52162254d158a217dd1faa4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397213de3994517a65ef92c7ad4ec9b824dcccc67f5": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922128818393800d4123cbb9b81740db04f380977": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890016b34601309434ee42c643a76b78696e8363ae": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c90480cd768c13eb1be84bbc0414883bcbac27": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c0e0da2990dd5c3933b13cc49264c206e62b474": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08ca477537ecd3556ea4e694f0d3c9959afdef57149bd303bb85c84a3124a302": "0x000a8a991cb59ddd83b76f334288e57997d25853", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ca3dd8080c9f217c9a1e0820c39e31ade0dfc0b5": "0x001cf28d372200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c163730557af3cc84dffd66affb23d2347154257": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d033fef6d4c75ce2f4878314057c2f959fab4679": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004217146a0642a86afb5e6293021dd02d1f4729": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893de2de32606ff2d88b86efcabefc7f0d850b1d07": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a8147b63c67b2d13f3d19f6607ae3086f088490": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b26577622b961191d9760e43cfe25ce444b02807": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397487bfea2ffcde43dc7cb20b5cf1f84c7c836e917": "0x00c06e31d91001000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aac3bccfaddf32b9066fed9a76f0694a471e8b71": "0x00865401b47f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c80503caa4caae2640f0bf835bd5e3418d4ee1": "0x00c0fd5f400100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5172475f0b5a6aca3c0f3e372e09436bdb84060000": "0xd4dac0e43b7012fdaefc31e13762b80c909be0d0508eba2d22d03ad954786f7f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908c6c136fb974c8ffec3b38e8d053791a048a0b9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920135f71a2c2d92ad87aab4431862fd7c38c79c4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002cbe540f860818a183be6052ffbb1de22dfbec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bea1d038be0b029dffb599a396eabbff2584b2a8": "0x007ebb5c423f0b000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5178e311aaabdd03450b0584ce99102e8426040000": "0xbee56ca36a0a5393bf9bfbe5d2079e31d4359d35388df257e23793c7b195b85500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db64c29324eb942fab6b41cc041f0e099f35d5c7fec824bae17717c5fa68cb83e": "0x55c1214cb709381cc47eb4edbd28d19c67939a7a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008bd7c09ec961aac1fffb733e6f7615ba6990b7": "0x00ce0530150000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723acc3516b86547dc0096ec4a3447af0ea0bfb55": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d982a7fc06922cb361516d5fd621f1801e31943c3e1d957ed63e925dbd5672a35": "0xd97e73afd7e39b59832ce426537ce534bb5a34a9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978370da48be315b1f73fdbf206a9a8678234a16a4": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978506d946cc63d1f1f3a303d68b0da64597cd64f3": "0x001cd01a8f7b43000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970014bcad7b114436044a783d787e18f947fc8bae": "0x001cd75d120e02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f74310dfdbde986ba9bde96a472efff97e2234a7": "0x007ceafac42900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5151eee873794ff81ad8bcb8c28326287de7080000": "0x5efad5aef39eadd6d70721079c222dcfd7a12faddd95169f5df916c45b4e7b3b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900659ec26a98fab3ed365db68d56a31d005cad3f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c3dec2840b7d5077d566658f5224151f97050000": "0x06ba2bdf21a8e40bc4f333eea2868aba048a42f00bee1ea5c1cd8913eeb32a5600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d022a9ca172e5543e2fdfcfb72a6734c6d050000": "0x34d46a7b5d29b3012f3d797ddbdf0e2a5a211d5a2f071a48828897a2f35ca30e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975feea0d35bc1d74650856fdba465a9fd7582b08f": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efabdb22a54dbdc370b31156a16b7a362199affb": "0x00400f84b5a300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890387fcdba9b695926f21ae1b0701fadc85b28744": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5181ee21bfa4a1c1f0893cdd0f5ada8eeeb8080000": "0xe6634f00d2a02b8c109ccb802bc0351674e21650ec3bb5c96c2515dbe6543a0200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5142469527df36f9aed9f015252db5ea8754050000": "0xb0eea2a1f67da637fd1fa8c1895d15ec763c789567cb02463c6edb494d3af07b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289076f1329e5a326f9b1a7a83b99281e1fa0895585": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960c5157e1255dae7acf046b38fece4a69ad6289e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4e71dfddba17863c7ea76d390624122e2369ae4f3a01a910036e7bb70d89e2b": "0x003e042a1c0d20f39cbb5664edb923aaf00b8e30", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed53f7c273f524da37f189e800b9bb66ec9ea26d": "0x00545a7c258502000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ad57cf7ec770f7d356b96e7b5abed7e10fed2c60c21cd43a558ccd33ceed9cd": "0x5b614ba568f71a18428d29dc741ef829140b46e5", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51647a794c7f9a29deca7d75e080f8c65c29000000": "0x5c720889653e8b55b473a6111b9971495a924d131ecc1a60e83d770849953d4a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975cb05a5971756ce32ceab168695de963f70b051b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928902dee0b9caa39f4e16b63822eeb6de8dd68464ad": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008b0c207b6efeccb38af8b6849ffa6b9be0eb61": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289752975f5990c33da38c4cd50f0a41b70b3a6796c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a3db1e1d102c140d89f35c708d37d8565e040000": "0x1251da9bb3f5185428cdc2eb2178278babcc3ffa9bc8bc4b19209d60f5832c6900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cf5351c2d529da04667b48c86d2412d7f6040000": "0x8ada3c6fa6d06703711d5ecd225ce1839bc44ae0e6b9c3ef1ea241db8f66817000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970082242f0e0c5831adcfdcc04052b72dbeffbad0": "0x00c2b658000100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890044208bb3e0d5b0dd69cff4eb36acdeb986c189": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924586e1a8a6fbb94ca745b6ceeb98017fc8de873": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae09e49b8529bf5e7cdaa468f652c3f09fe62289": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b5bfd05d823b7c9f00a9d66319c889d50678f457": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892e3fcfa6ce2e239eb735071d9f86e38dd5f8d8f0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b06c6248f718528075ca09e7882eb8acff080000": "0x802bf4620f7a14c125343ee7bb185208670bae709c63228c12acf6ac4d023f2200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bf9ddfe00cd7d62d697c92e084dd61e05d050000": "0x52b0605b1fe9bf82a21c3231b611f23945734683851d49e29cbb51f4acdf041e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d3dcce592e72f9de4f14f72c699145950c7f2889": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b1934afae7066c22b1305c7c87f045c98040000": "0x28e2740f0d79ca882ba5e2530f61aac644384032af481b1eb41ba48a1c2c1f3f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51db4510c4f58f0bdd1de80a8fd6eea271c7020000": "0xa26d7f204384eec001d21fec7638b13c5fedaabf38d64fb8cb70fd9bc4146e4600000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca487df464e44a534ba6b0cbb32407b587": "0x0000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972553a9aa6cdb203895a904e98f6d2437be0805ce": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973310cb1ad03f5b8a93d5c673e11782f159a017ad": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f01fb7123fd21b1428098e7684093babeb59b764": "0x0080c6a47e8d03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4487a0a91f3c75bb9631fe6160690d9149ed853": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab2a3ec557a9fc596bef9c447637abef78f2bf36": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a92d58547d1c7a1f0f340e540267f278011ce0f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f80da45d4b487b5dfabcd2b85478a6730d798c2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a2e0acc596bea390051f5ac435c527bf4c070000": "0xa422bb294c984d6edf3736feb318ff9e316d1a8488e2bde3c9cfdc50a802ee2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2ea620515ca448e7d546849540f0ffe2bc8dc3b665b7b1350f21f70a35fac055": "0x987901179f790fd04e956173d45fcac9aa74b66c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa0554b5802d43ab255cd089a6a7fee211a41a": "0x000ec19d5bbf09000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5181998275b462923c9a3483f4df4a1d9e67050000": "0x542e185fa0607eba80c93da9b7ff93435f0f5fec06a8876ca117c3557a3f516e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c87f254b8701ae8bb2c5eea176838ba02a050000": "0xb067a8a7015b58d16ccdd5dd7ee3e2d6e07f725bec022f6b6604adcb058ec70e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339767e3653e795000b68a3b2f763f628483e21c96bd": "0x00781154c61000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339710b26700b0a2d3f5ef12fa250aba818ee3b43bf4": "0x00caadafad0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397320b5f61e5ce5f386149dd2f1f65019657724650": "0x00e67db2845e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c0189ef9aacac36959a78f72da2d5a49535d5b9a31845b820c0da2ff4e26602": "0x1221d505ceba3ea8f70b3324e11ee7eae3740b93", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976eeef85c9161e7486156e8fa517ab0964fc1b969": "0x006c9bea403b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa0fd755c0d0528c9b7633462a4570b75bcabdb9": "0x0076e6a2f50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9645cd9c965c5d1ba0d1519f8412c5fdd9283b4": "0x00ee5c29a72f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c95904990fa58ba027b185d876d88d4a079950": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965570b90b7887a0ceb57f7604da311e84663a290": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896bd16c10081589deaeb5cdce5963fabbbd350616": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289720bb1fa61910880dcfb5256a4b2378cd5d8f563": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc838f3c7b8b9223bd1f08b47d800ac5daa9d6b32f2e8faf4f16555c816ac4f22": "0x2ac00bcb875fae707ed8d800e17985d174ad3027", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c8e15c38714d27525ea5dcc9bb1e622f04fd04": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c43afbf4fae6c9545c16a6de3c8abedc2c589271": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5168ff3cade57fc8a0179e6b80456643b781000000": "0x828fd8ddaf7415bed383c5732e236d718bdbcadc1790ada6e27dfa87f9e74a5800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f3a8b900e2bae095cec502f2262339930f090000": "0xe204497afb88b9af744c7d7b0cb10516cf0750aba8ef1989cdd0c511b9c15c6e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776c1e740aa7f9685923e23e884fb23361f008111": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7a2179c90de5faaa539ef2f2d8a1d0f2ea547db": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bdac7423ca974deb9f4d5db731cbc3f5c64e3f4b": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ffdfc5c3130107f310a81996104c889731811d4d": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51555960b388aebf663f7852840a42005553040000": "0x72117b487f33e88cbfb017e9925874f664a0d0cabebafecf2a2677eff0cb847a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a002d19522440cd4af9636097bd510dc780f8f": "0x00ae518f24d701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ab10a4c4d9b566830c833a90c865d859770016": "0x0020034cf68f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515a98b6df68d2532b24cf133d1dee85801c050000": "0xd84d3591efaa337adb83215be213e18204dd71fe9cf356f72281a687c825356a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970086c68ec3a352527ee68308deb658fa50da846c": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700da40c72ba0f9b64145964396c15ccc71cf7766": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890010aacbcfaa53a4b19bd7bad12ea033d1377220": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fef3b3dead1a6926d49aa32b12c22af54d9ff985": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4f8d0377b14301ea3778fc39552b421b586f7e4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d94b6b94508e6afc5a85d01a5cf4a5bc7db6953981d36ca03d82c851d79648372": "0xa528e61d81a47cc9ab160555143da7220f9471d2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397204ebe348564569032991905d5d1d4ccd35df422": "0x00d44d82b10900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d5faa7afe93789d42c8193c01d67a25478d1f1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a2d3f2f6d4a3fc6b4e5be57fa3d896b3d7e04cd": "0x0080f420e6b500000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b2a794ad36f9c8bf61be70b0d35c4c7829060000": "0x3aef55642426e0153ede83ed786d7d8bc66ced9f461bf5a77348032dddcd853300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fae71531e49260eff5e0e0f970dc70902f040000": "0xe6ba7360b9e07983d3503bd24e0ebd36b6bdf50a613785f994cb4964708c791e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436df205592f28ab7e1db1ff8e24d66c53e5f22c3f": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243e0e741e91998cee7bdfd13bb0c48ec23fb8c1f60": "0x0080a1a76b4a350000000000000000005bcb3b5600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289608cb60905efc0b59ebad8a9c650a410fead95a0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58b05775f004e33d9212457b1f0e246dd665f76142bdf5115f561180acf0bb32": "0x00228be11366ac5fe81770d49480c2a190a9da08", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d4c5ecefdd2a070bd0caffceda6b50ca10d7fd": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900336f4647818e2acaf710ad55c714dfffaf1ecb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e9763a3ac1928e281c7776b41aaa83b558204e0": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928920965e529c2a05a2630d84b9809be93b76720096": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eaeccfcf272dee48fa3e4e783c6dea0fa1fc38cf": "0x00da5284960300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928971a3d6c54338788dc4da94e34cd9ad2f1d89d7e0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397511912af85b5b6fa435339879dd81d5140e516c9": "0x003a6373de8800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a3dc3119df6bc6cdc397c83ff1d7687738080000": "0x68e72ac76f4f79fa9c7333504a6f19a01cbf28273ea2d34fbface9f8bf817e7000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970097843adb6489371e27819e20fece2d58cdda3d": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f5d7b6314cafa1938306aa393f09f6012ab7288f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d10b5f5141a6e5bb941902a1c358472374c98b36fe1352c5cdcc0083acacbef07": "0x00c0798c0df1e87069417e76b8ca4fa089d051f1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffdfc5c3130107f310a81996104c889731811d4d": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500bfc9f68fb7dd3f27061726180cec7e2d5e28925ae9f906e5ebf1c81adcc7e524751273a73a278f472d863f532": "0xe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009bdf8ded35fd7e2b8f649a808323978569e05a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971bc24e64bd4446b8873a956a4fc1d1af2b798a2d": "0x0048a2f99b4a21000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900dc3020ef4790527aeb51d62567bb48642acac8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fff7e689a4ed9668c9207f55c8d68bab1cb507": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976851cab6bfadfa47246dd71528c4d519aeb85fd4": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703224123bd06444350b7d75e2b080ba68598ddc9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f2dbb3e34ed1d44c56caa450a65199ce15165e3": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60059d247f883ba83508ba33bc087e517824a5d405fe60542efe01f2d7db5767": "0x0f44232ef2cc7a637513c492322271498bd4b915", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289075c5fec47d39bd6482df2cfe32a6d1f83b722b8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da24a3d7ea476f7eadf8c65f9ac5aec691aa7af4d0e4a8863795482016401a732": "0x00c5d33619ffdf46315cd16bd053a03d2873bc37", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339702dee0b9caa39f4e16b63822eeb6de8dd68464ad": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecc05d761209a12fbab5791b193ef3855ac7abd0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289271b8269e278d8a2ab0113de746c1b1136b320cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d646982089831a323228bf105965a23817d28308": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004ed6f4db65547b8b8998bec6c133d99d37fe3f": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f3f007a415cd23b2275e689b088cc0ff0f0b1b1": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817deaa58dc24089f8bf9d09ce5be1ae57d6f47213a94475761fd34f73e92a3db15a": "0x00036d90bb4e462221fbe06403a023192c0e6c4f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cb33463e1812ee584c557a160780b0331a50b3dc": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ed7e0cc71b2e17e00fccbb69c8fa70a32da1a96a83e2ee44e30f05678b1da06": "0xb37489e03c48cf54cff37898b07f64402edaf101", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d7841fa410e1caafcc033f67f20c0f60163e3153": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e87a44ddfc5762e9cf415c9c00fcab24f3ada6d3": "0x00704ccdfa7703000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928905c94ef9192ca1b80c427a749771cde2e0f7dc53": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f37e91526b4835c0dbdb35b8f1853adb31060000": "0x62f4e441bde73fd9195635f4706bd275b8f28994a7b24caac04fee952422ad3800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514e32a08bccec5812ad77a105cdb4b90342040000": "0x12c5c9b9dfc7ddbc627c60771de9a84b552bf1bd48e9332ff8abcb7cce87bb1600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339785f8d96b05b4b33b934f358bcffc916ea60ca1e7": "0x0086ef35191300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e35152239ee9fe923f20df2f38280b32bc98d22": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519ba578f8b9dc9c703000ea47717db77118080000": "0x04518c742860d637765b48a16338b84661cde437e1668aea0867bb9d42724a2c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289280b9eb4839eb05e05e48973e1c969226fcc4392": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898370da48be315b1f73fdbf206a9a8678234a16a4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e1a6e1d0d940de7accfddc03ae542af6d690c64": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397be7d69b9aec64673f2ccdb97c24bdacafeaaf2a7": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d9bd91673fffca8936f266f14ebbcf940f684658": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5124825437e7a91c00ece51a096237a326dc020000": "0x00ee008cc4cb267e410a49854b34df4dd21ab2bb826cd7dc055fef773711b92500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d9eb97d7b1c97639a6914e0cb56dd8e584910646": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890094803d665f06fae41ff86b05c81413ca8a8a35": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7697834d583c3c53aa62fc52856c9be86d55c0768f2bdc9c35295390a93f8e1a": "0x78f5234552ba1bac0a945d5e5bdfb56d84d4931a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006261f93219f1cf1b3468d807503dce5a5b11f5": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c78724c7d87165b1e7ddece03dcc717b9557c1ff": "0x000c5849192401000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890073e43211dcde9c888a7f57d65e3dc23e967896": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978285a8f9373803328ce82b909ed406e7b88e8206": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf2d514689fad1121753850b85496743cb6ba7df": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7ee8a9df96c3eb8146b2532d3b25421a451a770": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007ad88b72dc1cf54adf012caf81e3db579bf04e": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ac0ef3f6d0ad997a16438cf7cc685c2aaf032f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e59d5f000bd5e17b3d5f9a87bcf85d1940f2aa8e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928976c1e740aa7f9685923e23e884fb23361f008111": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ef38ee9ba641cba4c3b92a1c594dd6e6708cd3e": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbcbad26ad9af28cfd50dd70c8fa6c7dd3964941a4e124f19851c003ee8be0137": "0xe95a0b7851db5423d0aadc91bf963eab02c6d440", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974f65d1913b854830681e7d0ee71c9756e0fe9f32": "0x0000e941cc6b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de65a278c02c568b67d0bac04b701deeca427066d27f8ac2237972bb86dfc4840": "0x123685f3b3c7550254f187ca3746db61e6a248fd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000bee5537a6910f6dcee78c1ea1b7967d4efc2e": "0x0044cec0982500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e771b378ddd0f68c41961af73e4e93c78dfed5778d5377673ba9ee8573e3d05": "0x8d0d4cfa04b458077b80a2b625bca31d710cb0e9", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900463c8b0c4f1596ada872e327fa84481fed673d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db445e27228291560a790171804710c389df4ef28b65f83848d63db5fc77cd343": "0x5b279c406a13a1772c7c382d1096b04a7e65e753", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977adc26b95c3e4625e1ac01f4eba38273e6c1ce48": "0x00142ea50a1800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b6f20d6fa4c28a6ae5a4372d4798f2f759c25ba7": "0x0068367fe62d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289254c62b0e0862a383dbba455dcf692e71fadcebf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005b6d541644ffd62b7c61884bf8651b1e10e146": "0x00d6dc8cef0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970007e5053a12e40bc320f2be221a71b0bb72300c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339712f9122d6ca5294f6817ae79a9c4634a07931a85": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705217a5ea7391027b88f54b550bca825d6108af7": "0x00fa3db39f3300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a22438f8c8ba4f08a9a3c857b2687cc1a890ee30": "0x008ace1a761902000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000d21538f4fbbe5aee7b158591e7cfc2456b0c2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339748e9fc7556146598014c9b9a4f258aff8aec463c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8ec978a98432565745c836f384440f84ddddd40922aac33d98a1e46f896901b": "0x2f7b34d58d8a6134c268fb8f0174e94ce07874e0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe8f3d02414c57745f1e87be25ee3496a1a573ff": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51571a4c91b0a467fd2ff5cd44e301b0003b050000": "0xfc96e66c4ab58a38b86c7013ed317c808c0e8684a8e921db83280190aabff65500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb431327705a1ee54417f8cf3146669ea52f3e41": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d06e11fd0d4df6c4765eb346aac47682cb7871da9ecfd235255f6eadb8392b20d": "0xa926f76a86362c456e877e0b3f00c1a43b05c4ce", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970028f8743d32aa2c22d2eb1b415c64d3fb49ebad": "0x00b2f58f6b0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009b32198b47c8b8006c0c3483ba90a7fa18f8f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c8bb43bfcda8845d576effa7ee5c555e126b0e": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824311e328bd7023e933426940ad12d6e1b5bbd55f1e": "0x00e0d21c5bbb000000000000000000009b2c2f0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a4ba602a82bb59c3124f5ade6b77e93bb274b3e": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d0380d16422278eaf980fcb91502a4cfd23d46": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243005d79be124e0852482eea03f11c3ce1eab68805": "0x00f0caaee75c0600000000000000000090d94b0a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517972ea2c61df6a92867a52b7944a8bd37d060000": "0xd4d2cbec06234804a90868dfa7f89619dcc178d8d361aa9e9eb082309ad6c92000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743a125a9461625e72cf17558f1c8b3b653347686": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d47e503b630c37057023c04ea57149dc70ae19f186db24f59881c55cb61da522f": "0xaf44c1183aea35445f24b3b82073cc0afd007cf6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee58852b55610f513c694362070de7122a144b87": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339734ad8c38970ee9c497009e85f48fcd856322aab9": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5c720889653e8b55b473a6111b9971495a924d131ecc1a60e83d770849953d4a": "0xd531b67faf691723fda5e741359efa9bdb52bde5", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a0e65d2793d7b4fd5b46d91a149daed37cbe9dd522a30eec15c3f3e8861a25b": "0xd517ccc6eaa9380931987daf0ea1c53ce4ac4ca8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397968ced1eadf5bbe3ec2f6c6e1911b8f4e43452a7": "0x00a69227cc3b01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d4b1e7287477ce8247daa310641ddef3b9311e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922a71133e0a9514145b5ea4ce0b874a9afd596fb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708ee71a2eb80bb3f51e5d5a95862f78aa3703ffb": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9289bcdc9cae01e2d396a8b70b27bfe77caf341e969c1175cf908a7ea1906e3a": "0xec27421edc22ae46c23ad1e8b34f8651b3d1d350", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904f0594c389d0071131f288014a05e91449146bd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397076f1329e5a326f9b1a7a83b99281e1fa0895585": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6f9eff7c30c41ddfc4cd9f78a5757cf3679ce7b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d07c48e25485b727193d8e1ca5b5a2f3352048f2": "0x008674a4b32c03000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd401d71bf90863a159beb23026bf2c0d14bbd504ae240640a17a16e9c4849d7f": "0xd908f80aba091f8eb3135e7876d51b5b1a7bb188", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397216ad8bd24f5f277b78774e605910e04016b6e78": "0x0080e03779c311000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de8cecef8b9fa5dcad5ec62ec22d635e8d95bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896df24f6685a62f791ba337bf3ff67e91f3d4bc3a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700091bfd5d263eaf2c04134a4ddd0eea8c70468a": "0x003497c6042c01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dc3bef2bc640387a9b8ff1938e5a9fbd45040000": "0x16735bbcfb152276f7322d3360d6f4a6ff55b364a953484161e0de19f5599b1300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893a7dd8fc58ff94de5cede695988e78e5f3fb3df2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928993011e03417d775496e3e81c5ba87cd973538dab": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d5bd8a5efaa38c2c9f3ffcc73006b8ff19192e3": "0x00", - "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x02", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824346ac13adfb85fb7261d69153e73b006e585509e3": "0x0040158caecc020000000000000000000eb7870400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ed1e4ffbfc0f87a0ca99d9058e2900c23959e1f410fe31f2648ec3af27006c2": "0xa1d09b38beaef617e933f8c735fee190db1d0263", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000177e159f6b155a0e81f6859e9ca4c6610156d": "0x0056cfcc711400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea2d46da940941153d236e8693624e1f4c75111f1d0dadf824786425c53cc045": "0x0cade02299ddef16f672b3525001d473485289db", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970031aa2156f558895016433e6299dec2a4505d5b": "0x00c029f73d5405000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c908d506ddb0c9a41766b3f54f2ef592c50fbb5": "0x0034a8c5180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a669ef68da390965ed95cce8f02f6a11a6520ba": "0x00482276b8c703000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900951b683e7eedce3efc6199759ea1ab521fa5b3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928917822cd9476fdebd92e640bdf9fd63169750f9a5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970cade02299ddef16f672b3525001d473485289db": "0x00743ba40b0000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98a41fff566e802db0fb6a7fec49b6fac5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d": "0x000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b204ab1acdb7b9d2b4cedb03505a281a7f080000": "0x0ea81d109d526eebecfc18c680281235a4bf23fade14e838d120a2943a48efab00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f68ff9a1cb4aeb9018a8671087fcc6155bef517b": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893de899827e1b9413d6889727a4662074ffab3a73": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb5634d0c12b29996b2086639b804b441878b167": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a0638fc950ad83956179d5584f8115b9f9e0cb4": "0x007cac4553a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002c33c9811e4b478b1d4a2e4c6f60250e792919": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e82fe500c39f4644d479f85e4b3e407a9d6a1e": "0x00461784db1000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51de82bd4b3a5b2be429786d44c4ebacf611040000": "0x92070ebf24c4c84a47db97b62d308834c3f258a9d96aafd6bd11eca52bd6ce4b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f88827e4b5f71ca9f5f34a638e60512752040000": "0xa459850c4accf690b03ee38b0d0b4e312ec1005f58f2f761b01d77c00514ec0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f91786aecd3995bf5fd3a6183973193b51d6b5": "0x00f87ce4f60900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d47297cdcf36eed17305d6a5471c6cd482c7e91c": "0x00be4216aa73bb000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b4de57c216b2bb92151828a9335856f54bab03f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e538fc87abe6b95622e5af0d60906350fbe2280": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890048d77cd53479c2e9594d55f058a224041c11ce": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0e741e91998cee7bdfd13bb0c48ec23fb8c1f60": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0d243a2e86fd76e56fd99cde8bb928ce3d140f8": "0x00ba1ae7383a03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006dbb368da30eeda3c789408a6162512e75a788": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e659b900949f70623fda99c695dbd27e9cd9e7fb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed53f7c273f524da37f189e800b9bb66ec9ea26d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518a96acc0ec56d30ea248b651266f128403080000": "0xc838f3c7b8b9223bd1f08b47d800ac5daa9d6b32f2e8faf4f16555c816ac4f2200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928995e1a959df4af4ac693c2de538b4b0de14592423": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6d80523162d2d4f2f026e427516057966070000": "0x76817c2ac6b91279539b83574f5d22009a2bb2f37fad4f0ffc8355e69bc59a6c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700746df19d71232f9e5acc79bffda2745b69b97c": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004547158d12daf5a188c111543b87aaa3aafb92": "0x0086985bd4a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975623284ba17d06a852e3c74b6b3ef1509a13b65d": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d42efa2e57a813989da4bac4551e4010ee45003fc3f360f5202a958b2b1a29918": "0x0150dea99371e59d756012651a55cfe5e7a1299e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970059d48fa65e3440a352527e5c11627927751023": "0x0070720eac5800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec77c48e880d46812d3e9c6fc5e4f8858f51d94c": "0x006005ecb58e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6b8e05763ce13e81917c0cab8f724194abf57f2": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d4920fa9841558c97da4dbad60bfea2664f6cb9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d470122b2f8c87b9303d36a4d1a0c089234fa31": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b86a8cbd383f9a45c70ed742eb6edfa2e1aa8e9c": "0x008aa477502200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001adb13591f0a8ac80d152b8902b0a9e66aa599": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5438aa39d5800ee70449975bb26d31c60792dc9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e125a2395e88601ad81f6f77d32c9c3640020000": "0x16d28220f8e13c7e464056988a9788066cd6427d5100c773e7adbc4c08f97a5100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c50164ef29cfbff4685873ec8918fa2b5190b2": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009325dfeed3f384e863c57455ac3d3c4809d210": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd6e08fb25db746221175b2d50e9fdf7b227643a": "0x00cc8e03df9905000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfa9066b188cbf62e3b2a063e5ffe4b4f92f8e287b7bf5368fdff1a992bd52857": "0x4ba3b6302e0fd7fe3d21fe1d2ec3ccec915b505f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e2f4b428f4fcdc1a238a75b172a73c6fa788a1": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971508d705f64ce3810d54ed2ff5cc9fccb55a6942": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dac2f0e3d8c2bec6c5f11f6f5e99adb3e9f3b6ae": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e8523b608cd42fc15c1ec89738a62fcb9e5a76": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700daac3d76e6a2e0bda10600e5a6b0e044ea2117": "0x007a4984bfa700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d8f6cbb93e77cd917631c53ef7f1d3c6a9060000": "0x4863d8e858ecdcbe518244f1535ddbca677937bba3e813346bcc5b471f4e516800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892da865b913ce50451351a315d8b37cb87a4f4109": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a9924ef83a357ec4c978a66ddddfe9cd325b0bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002dc409f3938a24541ad2dbff32b8635f5af5e9": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a78aeb479d6738f5c0eb11870f1ee63f01070000": "0x3eed7d3fb7e8161ca57a6ed51a5175fe0537c71d89202ae75a286d9e78c26d1a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001e0d294383d5b4136476648acc8d04a6461ae3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f42003e7c19b429ca0f6b9f0f75ae6c08cec5463": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4863d8e858ecdcbe518244f1535ddbca677937bba3e813346bcc5b471f4e5168": "0x8dd535c62fe25e520fb4becc53d19d39f5d798c4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a69c42be4828dcffcba1bc8dd9bd10f5c3caf3": "0x002e50c0ad4000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975e4d95432c7d44feb173a155f31a7c65a1f13668": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b00ae1e677b27eee9955d632ff07a8590210b366": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700508808bce4e1d3d170cc4cedf616e759522144": "0x00e86151d60100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b31f557d9e0b8ebe6f6fa65d6bb6e8d774c794": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c9e9801b90518b2ec3197525805fe1994f020000": "0xfab20f6aac6679222f627da75051b3866b8a547686f676a73a906ef985c48c3800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700adae7292b68d8d92ded17f5c4f606bb90f6f5c": "0x003e8bb26e5b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002844ae6b76746980ce8bc65f409abe021582a9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975cd12fb4761f91f6a2bd4240c73e7d8fc8a3f638": "0x00406352bfc601000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e3bf929b3f1c271e62cc6d1f2882eda0e741f8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973a9b0cdab618a437cfbb3aff8fc8b22ea5188d70": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c1c6383e5fdee5909518f8fb94e23d9757334e": "0x008c0e73b14a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f05bdfd076980a8884e37d1cf90bda6801cba37": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a34c6bcae6f46ac6470443ccea67d937f6060c7e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bd04211da0c403c48722220799e6253121080000": "0xb67d17f0067c5650930c4d4259ef7b5f7ee951af57f06cf6360b75b7a56e824e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339718be7c263f1de5d3c4e78105638ccc5cef8e7c9d": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397081c8e52338007010ab569afb8f1e098e645d3ec": "0x005880abe94f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768476977382d9cb85d11775b79252ee7d2859738": "0x000cbd89fe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1ed877f9fb8eed0ada11b8f3562e73b807cf65754a073388fd7bae9104b59d0c": "0xfe2ebe8b791bff2fe45927e9fcde8a5f9760e249", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b16993a0b0cebca447009fd302c7d085f4a3f3": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c6f2faaa16c7641c1adff6944452976ca1504976": "0x00d25b92b61f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900961f206d72118bcbb9685c1f642682c11902bd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890dc056cd15bc9857757eabee309f0412cc9c79e5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892392f61669f6e3b81a46d30210761c77b0ed35cd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970ae46dc2234842d01e72c6d688bc2e1c4b18a004": "0x00a05a8c338051000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514416e89eb4020b28249c78a7b1c295ac05030000": "0x04f8e9018e5d7471067ed148c3c91f980b6f713f6d921104bd17b33917a6336600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5640a67cb9a12ac09b8a79ce6c9bb3d8fdcde7d4ffb20797b27341fd6690806e": "0x00d43d052fcc727cb262971ea068d3f94f774935", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de879d14e74c8c5de8dbb00e01fa32b495c0f1fbc66b6b93bc31006f044293955": "0x61436deba951a9f929c5d7f5d9488204c2037aa2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970069c7b8173234a0b275d948db0a415a7b48091c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a96e78d4900cb5f8c412c1437b15aaf81f6733": "0x001242a3973e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa879bda95576cdcb96a64406d1366b48ef57e33": "0x00d8a5ccb34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e33c5c1f3a42e74eb61862584b27454a9a44a06": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c326c5ab988880f8fe6c1e17b97cfbea724a39cc": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d169679c4a927396e65263ed42c5bcf3a824cf1dfd03ef3dca2bdc0f3538e487b": "0x198a1bad80c2eac0fb986553955cfb5e30f464c7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c5f66fc6dd672a91114e67edcde69ac17b2ebc8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a38edc99fbc7935f47a5047a757bd870a7f02640": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af1ad6a98e5f53c3bb27509177ac3564b55703ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e5da2d78dbc9d7a047ac8700a09f4fb50a23d8c3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e96cfaccbc1ed061cad3ed70efd8dd74316a9b": "0x00865401b47f04000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977525af9498280da3fc2f5498c495e89561b8ee79": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d53ff1caf92232a43e8935260dd13dcf03bb4e6473df67213af77085e2948c08a": "0x1c8b8633670b06b418295c37ad8e9390c6f6ad72", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b505830ffd0059f9a3d98c1eebade1b8279a40e3": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243d0d62f0e012fd9cde4c2b255305228fd4a3160de": "0x00706f96a686020000000000000000008564160400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc7d085592f433e4523a2bc030842427b63ce31c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007e917588d7a1392c3604501e00a73565d06845": "0x0076aec8f5abb1000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005417c5ae560be9c83ad34e3f1cfbfde481ba61": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519d73b621f1a1ec7d00ee0f6d2eb055dc58050000": "0xda8564ba0f7e717dd8d61025823ef756b474d6a3f3e8099da01ce16b53d8515400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289247927ac71bdd4d795b6478286a7800064dae9d5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c6f954321a3029db46bacf497159628dba070000": "0xbe2ca6fbdbaa308accc6024e77ead45cf89e5318a8be6c85d52261c341377f2700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c66dee0f51697b87529bfeb805ce09685070000": "0x4ecddc1c11402f03446a1bd87ca5232df46bd5db7f9a80537464b299d1bd8a0f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e48ce69a2366fe2f8c979b270c94c7cfac040000": "0x7afff4a998fecc10c07df0f46ace2a365517324289dd106c75005d1c5cccfd2100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ddcb32a75577e9a33c2af218bb8209e96f92627f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f1dbf210d8bd9ba610071d284620c157cdfdf40": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c23d4e5d6b3b797fe085fb0a3bafb7f758da9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900684c55baee983062a207cca3d8581c7a2c32ef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892c840d94dcf091b87fd63db7eb0885d9ca4b5f79": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895dd5aa7a9b90b8ca0e608cfa2022281854490dcb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008af2eb1b57b4a591e08cd0dcb93b0b0978053f": "0x007a116602e800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b0fb7ee5554869bfb57d69836b005e00a942d7": "0x008062175ed158000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c14584ac76ee1a0c3d35d336f2448c65f1dbad7": "0x00523940c54600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70fc94e4372b91e68eae0dbbff7d37a76308ad2c1260b27ca02a1dd4a17f7042": "0xa1c45f47adf9afd4df16500a4c213cf52af55f88", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5c914d49eef7110f4b178ade972bafcdf83f994": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f9c86dd81e7c9af956327767f5e9c5da7a3bdf21": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf1c98cd754206368af6e2c36e0661454adb11": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397206c99512d5e7bbfb0d430813e23b7b9dc1b41be": "0x004203eec38a05000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd4dac0e43b7012fdaefc31e13762b80c909be0d0508eba2d22d03ad954786f7f": "0x0037b4f93292da122cee7227bbe94ebd9f2fe930", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b289087ee4dd222cb003d5cf9d14e376502c7c7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928936921aa381ba281dcb6fb6489461c2cabb8c23db": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966dbb95b55759347745b8580661c049dc211bff2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda91670ea8e3b7b52e7b221279ce9dfe7f97d1c836ba42202f59d245d1589c2d": "0x6d482c372545dcc163359bb181126befde763314", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928977c56ecfc21bf4bc66adae4898224b07a81b4efa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b10d4d83491e7be1f9451065c9dc5909b717a28c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bd22ff2d97e949911807c2f142d609ae40522cea": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb36f3d6b177c8acbd8dc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201": "0x48b623941c2a4d41cf25ef495408690fc853f777192498c0922eab1e9df4f061d2419bc8835493ac89eb09d5985281f5dff4bc6c7a7ea988fd23af05f301580a3ccde029459535c8bda2aa6fc2d97af3880409010bbc05a15f8d42bce8f0176d3c7d33a7ca6e152bcceb20a75bf67dca553cfe1fa0546decfdab25177765ae078acc4f2aa64faa0c97ea1f8702fbdf1843694734eee4d7c65c5605c2f8127148", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d980761b3559eda50fdd683089d53060d8bb900c1a3935ce66f99f6392612b57f": "0xbe7f0d32ca1cfa5d95b4c10c960a088f2080a508", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a47861cd4c65225b1e00284090503ce41023acf": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890138bd5b9fe5ee16cc0e0b0d63adc94a6ad7b21a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcd8d9d843b3a5558a914eb74b0ee05e7da49f59": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514a3e7dfa35943bebf09756a6831b24f212080000": "0x7081542596adb05d6140c170ac479edf7cfd5aa35357590acfe5d11a804d944e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51849aa2f468a77c951039ffe1b08247313c030000": "0x0016292937846b8e0f933c667229d8b6765917b86dd19e0f6c32bdb4ab1a2e3400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a36821b843a170995a145f3503400866bd69fe4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974287603500f11aa83802c4c02e2b5a9130ebe23a": "0x0006ae27a08d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f26719804c82085d861d13a0338d07967af11cfd": "0x0040222ec86a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c53e4175affb6add29bedc688783c6dd9afc452": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c00bb75cbd8e55346d2fe041c632d5b6cb6f6c4": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e56be81797e2616b7d4c57c892dbecda35045fa1": "0x005a2d81a81d18000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9c159c7347f55c54a3e600e3e9781b9982f05ca871bdeace6b6775dca9eebd11": "0x006a1212d2d3e63753368cbb4116ed4bf3719e64", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ff636bfe534a97fa8adc9366aee821059b032d2": "0x00dcfef6301100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dda9c6a6ad458f966eb78979e4c7bf8557a89f71c221927e0efd1f5c8614e8154": "0xf1d5ca8c8cf354b8d5ee91f6ed61f20059ba4beb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397642a4f994bcbf6fea70c54ec416ed9de02f8e00c": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928980c503db92ae417099a025c49103b80e370ddae1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897eb9c6574928e51488595ce200904de622a212ec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a1206a0acb0a887986a5ec7c1899f96a68f6f18": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339719d1e23c329025f05bc9249d021fc59abb483254": "0x00ae6ec28fcd0e000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893d022562f644e3f88a3ce6bfce0afc0539d421e5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896812d2dbd83e65750a7db91ab8806972ce170be9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a9b5d50da09d57e940215c15f075139f7788cd38": "0x0072e669861100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb0d43ba23028b7db38d8d6e2e2fdb56db9c0302": "0x00d2a4642bb700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2f4451bf599ec52cece0a8cf96d61f350d4ab20": "0x00665faa191700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b725ab758bf6d8834f562726af8535e720060000": "0x0ccf27ab564b31e8835ea23f48894d22b986382bae5889720c66225960dbd80a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786716e7f1b8a4ab2d72262ec5e034ff995b684bc": "0x00f8fb80fdbe00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e48fa43331d29570366a4244398aeb56756467cb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e4dd79678be50fbf6aebb41dd0a4b6eb2412d28c481d09c0fd2dbb14beed619": "0x00538ad6845f3526e08a2d1bdda4ce56a6191ecf", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb37e5180a48cb71c0e3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e": "0xdea6f4a727d3b2399275d6ee8817881f10597471dc1d27f144295ad6fb933c7afa3437b10f6e7af8f31362df3a179b991a8c56313d1bcd6307a4d0c734c1ae316a103df5c5131813fa77ba4f8be88b2d2b4a47323d2011c9d987615f067e9e7856f0bb1f6307e043be568014eb4062a9bca4a255f39ed0be9205ee97c93b4b6ee0a3e2de329a70e2763438a1a757bf6dab945dcaededc7455a7fcfae83def07b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d88fc08d7997cf899274ea31d6e9f6c883483b95ed1d489575fb1523d42912517": "0x55ed1eae79078844675b794dee5902ab7304db79", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4d35cb41da50f320fb28123684440d99e450d24": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ad3e041b7b94a6ada8197b9bc9c554bc747d53c5b2779813597ab0939fe585f": "0x00a5d4145d389cca2ae8740dc2af3a06acf135e3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397040e5e95969b231eb8dbccf2bbe7b339588fde54": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc3a572c4d49eeabd53154a59779f7eb6da912a9": "0x00508df5952701000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289456209ca9fcf4dc8d276a659f6c37003555fd0ac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515e105a4f48b4168658c5227deeebea5bf9050000": "0xa494377af81b9e491c444929c24ae96e88099a23c0e207aa130d2d1ae589765000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0807cf08105020d06cbdec06fb549adcccf14e0": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d68e72ac76f4f79fa9c7333504a6f19a01cbf28273ea2d34fbface9f8bf817e70": "0x72d8a23c70ec138734d5cde0fd9e3edad5102320", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928953972a2e0db345848a8fa288b902d1be01393ecb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c5c5385fb7bebfc1fbe02db4b9c4df76e39941e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896aa251b33219bd6095ffcb9db692ce2abb203e43": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e13540ecee11b212e8b775dc8e71f374aae9b3f8": "0x00a2c3388eab0e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e793755ce4e93d29ae317ed885cfc65d45e98d9e": "0x004af6b3941c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1050436acc3c741a67ef38f329a01baaf317c24ef837ab6245e3c1531719692f": "0x65dd37ee6e2df4710af8229d4aa913ea6264ddb7", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d285f6f5fc6353dcab3853dae25cc92bb18a849fe7493b654338a3527d9d9da68": "0x00961f206d72118bcbb9685c1f642682c11902bd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ff27838e63649d23e22c115e15e5a22ceb7a680": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289900a94e7b5ef122f71d1cede47deb4cf429cd10a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ab980e9f3b036a21ad11568aa020f6ffb407067": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006a0822d45e7a82220093d1abb1d595e05b1333": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b7a9b1c894620751312656b66c7dc2e333cfe677": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d1a80b1f8a44594e343b3d36806898616c3c123a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd834724ac202075b2125e21c88829469c79745d3615dad5ecfbc96c2b651ad17": "0x31b81404b826658f107997f2a9cf96e6fae6915d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c64f09d3a447e74cd8e8e769983c25c95d697714": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824303fee733b242749112fee4ff2bbf7f612dd607ed": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289462cc75caee4d0be283eeddbc2cd5698b9880b91": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289949b82dfc04558bc4d3ca033a1b194915a3a3bee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c7975fa3b0e1ecc47baad4596626aa2c1089524": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950d919314f2981bda224370b7165fde7bd733040": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708047a8561852b8d75e9ce66751a9e0ef4eb2ad3": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766c6c69ee2c1b963f63710a599e7fb3508aa3e61": "0x009cc874400e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af44c1183aea35445f24b3b82073cc0afd007cf6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900197a17c8ec9e02c852be37c127dcc004ea4eca": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1f206f7c890fea0cec8c819d1a9e302849fdc7b1d54e8385895155e1aa4490ea": "0xe96acc7d52abd264535e1a64a03a9fce3e238c77", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d99b6e4871d4235bc2dbcf58c6c1cca46ea8ad1f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b35dbc596f545739e25e203b41823251acdee17": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3890fe49cc68cb8567fd01fcea08055b25b3cb1d8fd1c37f2896d3819ebffa1b": "0x99ce75400cd94e1277047d0913ba8e6921aa1637", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d583ea20f5dccc9c80dfd745123651bab91e560b74a672f2f2b3dc8f992346c49": "0x6b12c9b8714c27aad069301ad0bc4c0cc416f1e7", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700732c6677028393e3bd88433aa4c221e1d4bda2": "0x00c0ee56871300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df5aa870ca48f1dd80eeb75b80b7d2d797d74ca8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972afd2c2904bac60f47e0a351c2fd66e12789c7e6": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4791e01db745246a89a9eb394227cabf8ab4e1c": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ab530a569015d1cb75ec21da05e00b943b903b22232d8e2d2c24245b5e3777d": "0xdfe344098825e1ac854d356926e44f303b7d08f2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e28833ecc493aa66477f04c932a4d689598910": "0x00ea85053c1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792fafb4ba354108be7f0b76f5aa93e59b21288c5": "0x0098550f100200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51585b474dd5eba950a6ea9ed5b67c7f8c4e070000": "0xdaf5e24f1300e8f83b716baf3b1fedd62eab829ecba9592d373871dc1e9b8f6a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979193eaa11ee8101beb2f7c3c88a5df61a5114f98": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c7fb76d905102fbf68a981474bd26e5fa4427790": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f30aa1a2b965b6273414c69bcdbbcea76a52ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891098afe502a221d6d6687077daee2b5692faa9e5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510d6389aede1da18020ee7a90881dded296040000": "0xd0aed46706bbb3fd28d13bc698b81ef6aaa0cf78942879954835e3f8475f404400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5128606e12e34d3ea210070284ef80ca395a030000": "0x58771ce0f83cf6651fba0037541ec21a0afab196938a7ef3722769f24a38de5900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fad2f675a57f7709ce2d2f9215a560aa2d060000": "0xd6077b2cf2af58f058dce80e52283bb700ac5d2cf8a979fb6b8e6f4f90a0454400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bf8401e27fbb06066845b15be8c1b06e42b0e6": "0x00daf69b441c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798194b95e37bd6de019d5ac8fc416daed2091408": "0x008027461a740a010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c875b446639ca898f1b3addccd107b9e1e2f09d4": "0x00eca1ad533400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6c4d3830cec539bb01d5209b79ae4fcc5053bc2": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fa6cdbeec8b0ae15c81a65c5da6d152a0a6c25e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700543f7424da419242560b6036cd8a21dfa01c52": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289994625b177e36e65a06118684707c19a62194586": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa0346f3edefd952f673a0e24ae4658c22a64743": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ab35e5fe5354151bccc15e6d219dcd23c2e868": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d74eef92e8a21aa5cf2507036407d59dd5070000": "0xf058d4c46a6efa9894fa49e07fa14d756b3934a65ce6592cf3ff441dd527db2e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d40145d31d0a4233efc8d72f2917e57d3af5631e01550629ea87570561fbcb952": "0x21fa2fd0d1126a88a7fcfae18f8fe849999a17ed", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae43c3cd9c3e320d03f5cf5ccc4eed0383c6b879bca35e8ccc7174f2147a2a17": "0x524db42cfa6386c5bd43229805ba087cc5d25438", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1924e3e6693420a5461039f1225c5cc765de4f0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999dfbf9a028384c05ea011e6279a4c1d18c782be": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824391f2376856197b8bb33ee86f56d4a17da7298859": "0x0000c52ebca2b100000000000000000030fb711f01000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899cb6247bf9e22da514b1b32acae28c560c73d848": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243004272a32a2ca68c679f25fcd14ef02cd7933a5a": "0x0040f09bbce1080000000000000000008f4c5f0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d566e7d7d28c4566bf9c64bfc61e0bd122dcea4315c30a4db862e96634092446d": "0x04e38005b0c3a9e183c22ddaac3e074c689757de", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe2d3714dc0abc2fed9f148be5ed1f224793f01d": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5107f38a260a8942cac8323fda732df2cd77050000": "0x26f7f8e2427eed26b1844a1a5fe5cfcd9a9fd7038a0e9049552c71f2a244b22c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52bab50114e81b832ea60de94e7bfb05dc831a309ddb04cbb1be5eaed217151a": "0x0036c76ec47dfc17a96b1a68893bf269e1c2875b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700cc6eb30b179245a98c456964fc577a5e302244": "0x00ae9f17c4be12000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006a8106e821a1b44cb0626f7fea5a951b11a282": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930c083613ea607aa5c2d723ac9e2c6b0c032288f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a04a8b46187fc60ec1754b78c6489f8918941321": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a1504b9d2fa2a344ae27cf32d1ddef24ef6d46": "0x00aa0f2ad80700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700684acee25e34f5ea3b944a58c5e23f922c14b0": "0x00222837aa7d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970030122b94e0e0c56a5b04feb3ec224244a5b18c": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d422f2aadd599b4974e4cb9a5410f03159e5459fa81e8348f8746a8ad845b8306": "0x23803954be1a85583e00ed01ffc8d232edc87e1c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f44232ef2cc7a637513c492322271498bd4b915": "0x0044698ead0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df370202f48a6858de8eab90afaa3ebe1c6bc63b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d60bd4d5a4a4b80c613ec911ea4b1a3066f040369ac2655c3dc63e6f9ea97822c": "0xb82ec69d0521ebd32f7d445188e5b6593ee49046", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dd1834278e89be66b9dc56f60516794298000000": "0x023f1505e3e54e2925d67915d720d12db1a32bcc04218ad713d75f5b543cbc5200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51271580cccd57e25ddaa956c1ef8960a2e0040000": "0x09cdcfe42bb7443b5f0d32c6e770f32b18b7ff9838f7015eb6083b5fdeb5cfdb00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bed32016ccb33d7ae3eb165cbf37c7d23e35da90": "0x00da72776c8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900efcd61a32da40d230aac22bc0ebd026d8a9fcd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f129a8a4ef740ad545508a30068725c058375c4a": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c89b9819ae522824ade6efe464d30f8e431cf904": "0x0080e03779c3110000000000000000001e99be1c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339708afb83c6ec32222be7277238e78b8b768f47ad7": "0x00203f885c017e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976256921fd93382ce2d468570f6bfb385e5bccf0f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098a926dfd4c742a18bb91e0dd1196cab95f4b6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c8d2f03af9ee67f36463ef212e09137800e377": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339706d2ab1ed0c25b0629d277afd6fd928d232d41b2": "0x0028dda6111000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938edb955024a69942471180dbaa3416006379f2b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009d14e5ef0bdaae60db17775e772dcd9e6130c6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce4e902b421071b4825e6c630d14614e6021f42806546f390d8b61c328d55073": "0xa7eac235c1800f3301e452f50a8df7a6f82f6192", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51aa4d3fdad0a740ecb010734cac7c532c30070000": "0x12d777258efa6c17819186568ee99a5bafd6d2ab4f707ebe15d843756ef4c07700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d0eb611e8056e7061e0acdbc497eca0db4292af": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289745e0ddf824ef48ae3506f915facde8382d4501d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da24280ca3cec95cfa124e17a8f01f1dd287bf14df1937d9ed97c91e39ed5a252": "0x00994d4bbb81f3d3cf352edc8af739c878b78768", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ab2a3ec557a9fc596bef9c447637abef78f2bf36": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975641519cc28def80d631baa28b949f17a6a22ad1": "0x00bc04ffc76607000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc692c0ca48ca508dfe638774741a1f049f03f7799fffcf84c804d7f2a2645108": "0xecad80fa0ba008c28f47b446a99f7c401a24df80", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da033ebb41c70f7fe3525f62f6678ea6b8b986e2808c4e221b51c3cf42beb3df8": "0x470959f6872985a33b5f5ccd75bf2f8a407691af", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df2bf630289bf17443c0eb89d5fdca0868eafa0a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008481aa634a6d406c0ab9ba67ab019f68ec7d45": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289450f4b99969a564bfe2388b52aa949a1c109b588": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb1c7fb52c3267564a84e68a2db4daa791000000": "0x4ec51c4a049e6621ca891bc03533a9572b93165aeb4b9f00ee1625cc4ad7472a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d0c352dbc3f03762421093ac7225224cca2f54f9": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243847c5586665b81798aec196a3065cdc577a013dd": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a3cada9b1c35f6fcd1ac2d72afe68e92a8040000": "0xe4af1cfecc881925c64cbb34a528ee9b77805b0b357c8301996bb5d3b21da57e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890961081fdccbd287cc1045744a7c0b0222d70314": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e1d15e2d670c63b9846789c38c28eac68755177": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c0a78ca841d922a4254e8957d62198a4425ef314": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970077f609a73630a90fdd05e6edb7ab0c99bf71f8": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c39eb735f8dbdf396c2749f298cba2bfd74cde": "0x00a81c90c74c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fff3f1be70b67ce7363c08cb8966281354070000": "0x1af976180cd02a36b76a442a92af3bf89a15500a334d64271369d1b41639b47600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ae32d080487ab45708d505c20edf8ff9f49213a0849b378f2e229bf603e7608": "0x286409bf413131c1bdb5c2ff95c5f8d7379c5162", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5197770ba428597b489660c31df381a8f7f3050000": "0xac58e10e4125165d840d53169e111a4e76487f930d7bda577583f6bbf6db513b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db48db47e2db5323dbfc4ad1fd358f731424b27a1d3a323eeb57702bf51589c1e": "0xcd03d9b87fc7a4669076fb8675021f04e4e8f9da", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891dc13ea429ed10d2ad98c5eb66d528e4875bf2c1": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243185d5cd827f66703890387d348a796cc8538d08e": "0x0040c1bda4a901000000000000000000c9c3b00200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ba8649eceb83037c22cf1727ff5d47b9f666a5b": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243c77c440c06384717ad302a6c5290c9e8716f67c1": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d89384c4107f7d0feadb833e769e7e1396eaa5e4": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507a177c265e93c51a706172618050e91d8b60377c58f1e8dfb6236dece92917f1b4ee67d2787ab090c5f8d2200f": "0x88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243810cff23a588aadac06cd93b443a12fa3a78affc": "0x00008d49fd1a0700000000000000000073707f0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c6dd54d08d5e5db12d90baa03045e877095fa5a": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243729184154b516f6caafdc8ef2826809669a6e082": "0x00406352bfc6010000000000000000001ddcdf0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f9852f33e7b714fdcb0cc70fd2338923c5ee9c45": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518a4b46b256c6b33a8bdbd519b5adc481c7070000": "0x56137106658725f976ea2409e4a015d980c2cfafec7b57d1e4b7fe268cc35b2f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900de78cd0ddc98246466f7fffd6cd96ececf7430": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ece6fd032e4d674561246baffa8f92728955b6": "0x000a1e02571a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dec6b5880e87f3cb86eee445afd7ce299065f11b": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289129631915a3ca10b9a159a7dc95bde0ba71682d3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289efcaae9ff64d2cd95b5249dcffe7faa0a0c0e44d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000f7b173834095ef9a8050828649ac394046818": "0x007c068aa30900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd68a0b50d9c1fa1644238aed53f0bf7b0926a143e1568fb13f1d9142f6c84d76": "0x00f1f605aa47e882d4c33a928fb1620881682ebd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a1e82a8554ccc29275f5cd010de3668578bbc9f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eaa0987ad748c033d01d71ddd87e2d5e1fd80e52": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5b5f898ef9dfd2971c5fc2f145a4c05d762f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d1f0e7d6941ac51e65ffcfbe8f84db0ef919f55": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f365db6236535b6f2cea032578637e82490c80d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ca0e74521dbefb81823ffb4807c78957fea21b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fe56ab3bae1b0a44433458333c4b05a248f8241": "0x00f2d5e5975e15000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d00ee008cc4cb267e410a49854b34df4dd21ab2bb826cd7dc055fef773711b925": "0xc6b2e23616f4c246e2e0dfaa0485ac98be69725d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339704226cfa81b91131b31a7eebca8ca2d9677bf0de": "0x00920d70945f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979fcf5f950cd5ff61ca37042f293113dcfec1ea5f": "0x009cebca242900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339749a4754c8d01ba67609c0ebd6569e18679d43abc": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d90592f98c1e649196327edc9212c1dde53cb8c8cb4ccbd7bbe360d0f2e401709": "0xf00098c1c1c81604a82b903cc34f91436e6a72ff", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ed825d6533c5220639bea97f98aeba7e02b0845f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976d8188d47b24e6d8061509b7915cc40d31cf4b8c": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c0ab889aa9583f67dd90116710079d7d2d94f3": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b73c916e56833aa4ef789ac94e78a0a5cae93c70": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea5d1906782ea18165f17d2b7cc97e996d9f08f9f35d7226505fa253892a4311": "0x86e3d8f8c1252600304047adec71785c41671bc2", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fb5b702b7d3c5efb00630e8014e79bfbbf5ef81": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339705df79a1f08a459cd77ebbf6b3333da75dcb6141": "0x00828a13987702000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289051f77131b0ea6d149608021e06c7206317782cc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970055a15e869bb215e605335181284aee8be30a50": "0x00da602c785f20000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513b3dee7b6bad0e1e1f7d87ca172e08feb9060000": "0x60059d247f883ba83508ba33bc087e517824a5d405fe60542efe01f2d7db576700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74f57b8c30f491524688bda45df9f49aeaf6b96b4c1a4aed06d777aaee605338": "0xebb3b5365f80f437d4be00fffaedec844b24ce14", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7f5b9a284b1008acec688a28fd7b7080202359c": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971fc2d658b3346975cc5bd586efd5e7c26db8c98d": "0x00341c01bd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973e0c4d785244c2df4fb88b81b2ca0aa7411a6ec2": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d82e4431bca23b39a02f6131a04c65d0aac0ff3ed9e7d1ca880cee1d65ab82962": "0x6314bea21ac7c7c29127ac20b508ff8d430bdfbc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707940d682e51fe3f01b2236d18aae7fae021a7e1": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976641a9a247811657a0c435567260eea47c3fc81a": "0x00421e33e0df01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c7dbc61cef6887665a6a2ee94e39c5f7e8030000": "0x3235f7d984058bb410c163fc1d7a90e5475c0917aad77deb241093a50b4f683f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339790947676a04a00d14056a9d1d428e24999f60f2c": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b8cc90051abd0b9b33bd17121b899bb7a9d796e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928944f4c9eb38dbc24b17fadecb8033c24c70e7d836": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1d483bb4ab67995d0689ddb9104df604cc04178": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890088a951e10d2f4a7e9cb3a2fefb563fac33eb0e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a632b76ee5addaed733c1ecd6a207d8a98060000": "0xfc0d23727263d4adb6de5b630ef74983623192544a7d3c523211c46b2ffbfd7900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098b09e215f5ffe356a13c6e1fa420209efefb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd7c282b347e54ed214e842158c7c36c99cac70e": "0x00e03b8bd29400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe2ca6fbdbaa308accc6024e77ead45cf89e5318a8be6c85d52261c341377f27": "0x458e55f31a66a01be0801221777d1127de93f6d4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c6f2351c0d351af08be5f54ca624f1a12417531": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51453b6dc8ba5035474f86af7d04ed5e34c6080000": "0x48d307a492109a221d7237b1b3ab2026ab23810b16f8cab2c750aa9181984a7800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28e3d3c413860766007043602a6d6921c324a873c736d96691a40c9d8ceb8d47": "0x007924aa5e2abb7a230caa625cc0f073f0ca61f4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcec75028adfd5db7751930c7d9c79a0e660fa55a9cfe45030c0fbb8339021d1c": "0x55b3230118d3952b35b7965b09752dd299a95706", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397269f2df75c2f22db96592cad6ad5ce58bb85472b": "0x00ec226f1d3200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928909d7bc4d2ce5b5369c16b76f6c6297b1c711b832": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d321bad8be173fc114055f9aa77859f1befbf589718d9cc6dc4b801fd0e675c57": "0xd067ee646a21d8904fe24a5d1047cce91b34bdc9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76d8103a1098183b5518fd2c4aa0595379a6708d8bfc2ee6414963f307a83a2c": "0x185476974fb1f9346c90d0831778f958456bcd53", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b2e52e1a42c3ab5305f1b071ce7d197565e9bbb7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc65de6003709aa5a6b81354c00fb13e281ac05e852cb4194c69f78566e8ac828": "0x56be9656add1b07ddf587a25ca2ee79b5dded4e2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f36a2d00e9312041d71615ac5260dac69b2c44": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da0c2802ba380d41dcc343cbf730e65bb198929288d6577799e9056014079bc71": "0x6afe9576ad00a571d9c04402006414ae45a8a490", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892ed99752dabb3138a911c2b71c9a80c7fc917614": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e96acc7d52abd264535e1a64a03a9fce3e238c77": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e56da5dcaeafaccb73e526f3afac2f48cd0136ae": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3bbb30d00284df9abc29e5601e34965df641199": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d5ce12a848bb0d982d8a07ae5c462f5e9a7199": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397861bdc02d79dd2598d829fcba91e11f1d26b0aa0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339781594a7163a447cb1ac16ddb7f831dc1c43f9307": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c33a725229490756ac021941021ea509853ff7d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b68bbc3e20ee753a024a480dea125bb69262abb4": "0x00fa7c33951000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c0c36cb561beb841efcfc7212710d0c7b1bb187": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897cca361415fbf12722397c47e063a4952ad65bc0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ae3e8a291096b596d36cd4f6fcb3edcbaf50e673": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aec6e482d2ec9cedf8f03072ff8bd27850e95c": "0x003eac4f5ab600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ba2b48d35573cd15a89057fc6aa79f58945c36": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970967e2492eb0f8a7bec3979df99088fad360d62f": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512de2af1be289e17743e11cce0667ab71c4050000": "0x2252a1d50d94240bd4e5b32ef5c118d59e864a8add6e2d30fcff53b939f08a1000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a13d980cb2bedb03cacb7003143e7af78c602030": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b593edd7cba746ca27bca29de492b3cdaae2b3fa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf2c5698312de5417c17d2f7a0e7d8404a1ba62b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289802b450c936ab1849243267995dc9aa45f234a48": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b40d5c17aab371a6ed5ac622ea232b590f2a31b": "0x002c07fd6a5500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776211ee383d28be255a7a44de4a5e641a7d88e93": "0x00e094fb1eaa02000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513bf4b0a79776148bc186d7f1ea414894c3080000": "0xf2bfe9a0d14bca7ebc7d681f805ab905e882778d398dd991f61dce22d1bea24c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba9d129d178bb0d08689948da60b5517ac35b89b": "0x005806d2931003000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cdbe5c54d75ea03526b2241a1d79329805ac23bf": "0x00749ddfb21500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977a78aa44b5660cc42e0941782a278c510f17cfe7": "0x000870a05e8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aaf196cedfe640591c2d0eb4b06cc2c746697f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fae39043b8698caa4f1417659b00737fa19b8ecc": "0x00aabbe1098600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad1626660dc56812b6798a4960b02662e2e7b70b": "0x00808bd33a30b5000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e6de68b13b82479fbe988ab9ecb16bad446b67b993cdd9198cd41c7c6259c49": "0xf993f7ba557bde7f6f8c49c7d53d2b0d6dc87361", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ba3494fe956dfdb34a70964c62c613ec1c9d1750": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b7d3dfb87fc35055dcb7d292d3bdc430496380": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900aa4c31db8fcf894fcc3499b2ebcf3e4eeb8842": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900598748134c87ab7e0e4de09dcb4c060fd73591": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930aeeadd2dad9c66d74ca5c6b52d9d8d3d1b8ed3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d13c361e67f4124aeb0913a21299ccf21c040000": "0xb01917ef7ef9823b455ceb5295211968ff32f415d7feaaafbb6facce258ab11700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c95d852b78d3be6f3df2c1448f023ff3ee4f51": "0x00e0fa29790900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976a8666af2e42ebaae251383d5d96bfe80e41b4e2": "0x006296e5511600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289081754b0a1468f7ee643f1ff9896174ddc6fb4b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f6fe74155a9b6733a8ac7b3836e38927d7a761b0": "0x00782fcb050a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950ed8729f9b9cf868b12785094dcd61b4e37fcd9": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e58b984496c06c4668dc371110f5c0052d826627fea35dbf7dd9254d719665b": "0x0f465f7ce5a1e26c402177194653c12e7222f127", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397211f8d4e57db34f5a7476771ab52ef4e407666e7": "0x00a031a95fe300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890014bcad7b114436044a783d787e18f947fc8bae": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5149f67d3af4fcb13c553835d6179182d5b4070000": "0x6a2484979a9f60423218a17095a44c4db2f17f2db386017faa64bd92724a1e7d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ca0e74521dbefb81823ffb4807c78957fea21b": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b0c94ae3d19f2c585b920842211d2d8430da691f": "0x00148b66da2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510767cc84745b3ae53765b376724b3f071f090000": "0x28a3dba187141f0d7d9af3d921cfc738e52f07aeb3eb5b7814bf0912fe672a2200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db40b9e0fbd4e819b9a56f1e7e7768e7d68f35220f086a80165e38037f391894d": "0xe09656727d41176c0b8987f684450af02eda1466", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ce8a0915d27d4d3295e8b67c593d3423f371ce7d": "0x0098224f9b6720000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430023772fedf1a43256e6ae4c227b6dc05989f814": "0x0010fc266f380200000000000000000024d3970300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4a991fd5f82d736df9ceee054511249b89f9a4d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005d79be124e0852482eea03f11c3ce1eab68805": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001e14757da7169f07fe225c2afad22e69eb93cb": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002a66b507752653dd0468eac677ce6063b58701": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243f619a00f641e82037048c9d0cd20f9b64c664fc0": "0x0090dd1e04f1000000000000000000007601860100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5137579c440e2ffab0da172d4e932ae5b030080000": "0x39e54a89f737272fc97f2a35b25e9bb5b0265a2d78749965aee5c0986e4c23ec00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5186cd2bd11f207ea82fe99aedeb87fe81ed050000": "0x5205f3382194a16e9f1e95e9dada0ca5b5f44e5f35cb257c054a5b072ab2515100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397622f1c8146096564ed842e48b498c08fb298b4b8": "0x00ac55c0712600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f365db6236535b6f2cea032578637e82490c80d": "0x00c003a59b5901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792fb25e8d9fa70512c5709c401274d1e6a441f6d": "0x005a64433e8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007cd4fdb6a94978efcb1997af675dd6e4bbe1d1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ce6c2909b2bbe2f6a5bb8df2f37568668d22663": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae7976297df7e47f83d7166c1dc7c5170c45574aa384519a0bbd549479bb9139": "0x445fca1e2473f0c47938979ee2cb469aca9d36b6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c17b6f24cf566e25bb33302da671b658577c1373": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d84372f8b7fefa198c90e3ec77d5b062e0467b32": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e403233a64dd902a5cd50e83c5a08b7896875ee8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892de237a350c65bf399bf853a3cc6bffd23b21917": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890007e5053a12e40bc320f2be221a71b0bb72300c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d04518c742860d637765b48a16338b84661cde437e1668aea0867bb9d42724a2c": "0xdffb703dc6c44e62c195bbbcd9c7fdbf45f5a133", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a32ad2c6d4d5ce0b978e4e0e955e02abbb70ca": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a04068a84913bf3db84f450a82588801197e028": "0x004465738fcf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004337ca7ef0391b38f913689626697307aece2b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700063eccd46e37c80e52b55e9ff2912afd8d99bb": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928961fe11633c0fd8d3c9392b777c0996254e5368cd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892317fedd4b4af7c3b6fd14cd044a2acc92ff15a0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890036ec309c318597ab5e273d535c6cf2b4ecb98e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768f67e0a9c4a93ea99f820c1b4fb86dad5a27883": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b16993a0b0cebca447009fd302c7d085f4a3f3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970011dadd05ec7515e18f0bb50ad1918198ea2b5b": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a79e6221d11f5f98254fb956a38a55076f83d0e": "0x001c0e1d160200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d04c895bdb4bde0c4f6d3cdd1d2d6483e5a8a946": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008fc7cbadffbd0d7fe44f8dfd60a79d721a1c9c": "0x00a65f83e67f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890025c20580d7ce0b8996c9bc91f5935dc031f3ad": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afab97a2147313fa873dbcfaf175aa1f24c8cbbb": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ba381e968d5a797f0d93e5f3705bc2a98d8734": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd460ce63649068b38c00c88f2b5b451e105f6e217cbe19c6a274819887379e63": "0xba3494fe956dfdb34a70964c62c613ec1c9d1750", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890021381df55f5e10059831b97653c52d42a1e137": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517433f95259db00ac1562af449c06bbb4d4070000": "0x2861549f4eded2d6aa490a7a313e0108aeac7c17bb63ad2b99f815d725311e3300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f57e50a2ea8f652c4166eff8ce217baa204e7f17": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138b2c90054cd79e4a16921d60df28c9e78070000": "0x4a1d7eb798b449b44466ddc54525343cce18396743aa708d1ec25f870e37cf7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d22ed1a4911800562bedf94162f45f4b3ed383ff35defc9586c6861105e501945": "0xf82fb4366eb81322a5e8ba8b6281d04c32b3d631", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc85b0daca47936a407193940ba2ab7414970818": "0x005039278c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd766dc1c0441f9b06691d3b19ff1d150b839e7d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c5464af38cf465bee0a30d7ddccd900cc20ab9": "0x002a535b914203000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b3c2a4ce7ce57a74371b7e3dae8f3393229c2aac": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195045087148dc2aec4770617261803c7d33a7ca6e152bcceb20a75bf67dca553cfe1fa0546decfdab25177765ae07": "0xdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f58dd9bc2f6a98b04433713439ea55a44070000": "0xb445e27228291560a790171804710c389df4ef28b65f83848d63db5fc77cd34300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff83a6d7418c73bb7fc1cb245d8aca979295316c": "0x001a1d06994200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890ae2f976301c5afec7ec28494b91471c1c2f1093": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c88fa499e7561e464292a8a3c76f4f0351101bea": "0x00bc04ffc76607000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f91786aecd3995bf5fd3a6183973193b51d6b5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756b8729ffcc28c4bb5718c94261543477a4eb4e5": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339783730c5d67dc5740a2ced307a2612e4a337dc46e": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da800e44b2b342ef986a4e96fa2f2b49f57ba47851db3a54e915295d148c8180b": "0x4ccf6ed5fb4b037e92aa2b61cb1239fc6572d0c6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899604602d57c5ad85c36b8bc59394086b5f18e7b4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973b271c43635a5ff2be9b8ce704bdc3ec1cd199a1": "0x0026f61e763a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d908a2a6b07c69278da04e238eb396d240e9818b9e3ad11545bac463a4cb3be1a": "0x2d05ccdd7d7481f71eef6aeb4e0527ad47753272", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890019012e00e460970f1d39925494ec20a2dbd50b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e06a8d603b1151b6e88a82a4ce53e6e8b985b5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c76c643a4c56e4d7f45d3e8a9166340c5e787d3": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e7465a8034887a0004d4ed2c4219c2f5c22cb114": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e88b871f4d3c16b385ddff8370f6730b9b74c38b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d01fe71aa1b2188725a4a1d197f8032c27f75f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d147703aab4af61ad1df86d783df7e3c6d67e5974445e770e9f751733b07f5849": "0x5f3f007a415cd23b2275e689b088cc0ff0f0b1b1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a8c4badcf003bc07e1096c9c1cda2bab98080000": "0x9a34338cb3f82de1fca9185285d30a075745505390d3a898066eb280cc44ba7300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ca0db0283dbf8d123602a2ec334ab5c3fd9e2540577e0955eaec679cefa4f0a": "0x3799d6c8dfad3c6cac7d4ea9430458503bd9d4e9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a58c667ab381990c1070fae2940bff21a5af23ebf4313e745aec82172773315": "0x6df24f6685a62f791ba337bf3ff67e91f3d4bc3a", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ea2376acee36454341f0a626cde932000a591da9b5cb385b5fdafaf077b2425": "0xc49830add09b7b13758537fa4e8db73fa5fd4bb4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777c2a982679c5d64e845eeb58f59af38459578b6": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009fe4c8eda6664669ee264c1db5f831d4af2f5f": "0x001662710c0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000989f1b22b2b2ce40d680a388f9033bc8fa704": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c9520bc4a39e7ba4108d2794b5ef7727c78d34e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006c8616a98ff7b6fd6302ffe44a18348df5b3fc": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6583b354dfc9f39075200ac364392bed6c5d409ef63f8b8698e7aa14b9b1469": "0x13d8779df2c88e622175dc24f8bd2b53c562e631", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397088e9ad1f2411247868395d0b0a6279d92bf12f3": "0x004a5eddc34200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bf278ff22a98e2ec520472ee271da5586d4ac12": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c771ceb58b220cb663c2a77b37558cde21c471ee": "0x007ece841f8c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f882d59de84b2bbe5a37dea30d6156abc2624301": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d33aae1defd629dba3d3d9c225b1274788127318": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e10f34493e884232f2847c6da66773e51ec1731b": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f8a9aa97618c77fad4be22fba26d4ea0507119c": "0x00600b6776ab01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d920bbd35a0a98f20c6eac5857ffd316b80963": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea63a7e85bbf2cb582c90d97d8f78170ba7743a5": "0x002c490fd71c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c3c0e9543220809e9207ece95c504006574f50c42361068e846dc51f7e44c71": "0x00fe2716ed876e1a4243333758d547131a98490a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928906d6ee9ea1c648071973cde4669d95955d496422": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928925b28e2fbab8ce0b5d54ac6968369d6a9f1e2197": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289520ad81a6359835797a4a7b0b0cfd0406a18f64c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da25fceeab53dd6644261c4723907ee3bf1b8229": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b2bedc981445a47fd58cb9814b8c11699093df": "0x00b808f1f31800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511f91410fd0202db2270b1e13d6b0988cc8050000": "0x1a286c553f1c240de8df6b45d223c3eaa7bba7c29379cc6c634975a48c17503c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b55cb6edcc8c9cca3b659007d1abec171bf75ea4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e7981c2d131ff111fe1449faef19ae71ab9bffefc3c43f1a1938b287f47b060": "0x00b59ac37bc3e2ae0f9d32b6751e516eccb38732", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2945102218ec28141fd0be4fa57b11ffbb0bf25a6732f2aa68fb70653321b66b": "0x00fa9ed378e8bc649df332605415e5a9f3cea779", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8fc0738b7450ebf2b496cd15652b1805346be72": "0x00dc023837a403000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928960e04fa14b8faf0d3d7b1844e8535eb156814b3f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cdd4f0d8d858b122c56d54a8a719d7c76e4db0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af302aa751058797c6ab5249cb83547a6357763a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d9459cc85e78e0336adb349eabf257dbaf9d5a2b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289daec98c63f553f059c024da69f7becc810f8ca0c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b2656fd04da0b96fce05f2adf02e751a14090000": "0xfce03157d8e323968680f92bb8e16e468e35613b5e9645d56b736c1fcbcad72d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722a0105994c3f4ad8c3e78144e47a6eff9976377": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e17fbc2389061940e39af6db317b48ab56d2a33": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f2478f49dc3dc086605e6b5a8dc1d8a8d415c876": "0x000017a775606a010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9234f3b6117260ff6de428e15b943b387a6d4a7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289200b6591326cca7daf74d4b6a5789824040d5660": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a74a375a7abfdc2a836a1ad3987caa82aac2e79": "0x004c44f1ae0b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518fe5fd6356ededc90b893927da844408c7050000": "0x48d8c75ee8b4de67c25eac76659690f8c11b3ff23eaf348b89a2e13e8598ad1400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c7927e2b4364f8ea6745336ee77f9a77bda0e4dbe2354d3c4b9328817505a7a": "0x5bb96900d055aa4b3de73bd195c49400237fe7f2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd2610d42a7cc342bdfac6abb2efc488ca51c5685a3cef97ffbf3614a98ecd03b": "0x69ff7706b367405d95890cba4d905a9f040cd467", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a41d48673da40f5343bc1e871eb360ad8b9bdff": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4add2e79c9cb1b479a22a663f7f25e53f63ee7d": "0x00b27651350000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951cd0cb94cf5bce38ae16c1a0df2af1fafc991e2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007589e0ef0ead23d975d47e48eda004c90b14a6": "0x009c3a04d74c10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970150dea99371e59d756012651a55cfe5e7a1299e": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974c2d79f8483b8fa0b0026d39db21dd51d90021d9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f82fb4366eb81322a5e8ba8b6281d04c32b3d631": "0x00a26a5406f200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006ff6c79e263c3d58e9718ca0f08540d46d0db2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901a7d9fa7d0eb1185c67e54da83c2e75db69e39f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b3bcea099c64a01d1a3d1a6b78198c69a0070000": "0x42804d00b39843601a505a8bc5f29dd23e9ed0256aca3cf207a7c9005c6bd74600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006c1983fccaf096caaee155ce27a6bcafe640bf": "0x00a234c7d60300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d98fa099942b9179688793b146505935d64def65": "0x0026da6a887d25000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e302eb54d1c41647ee0eecea4d5b7dd90dac8ddd": "0x0044135e7e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cc6eb30b179245a98c456964fc577a5e302244": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d268ecd67d92c521327a5dcd19d0e0ed4191367afc90c726911311d404626fb21": "0x00d920bbd35a0a98f20c6eac5857ffd316b80963", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a0f3bc2c0168cb1ddf914d803e996996ba080000": "0x6e66021e4bc573a1cd11450b9adde832cafc9e7e83fd3c4901c3e0d0f078900900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd68b9347a3c6c5a16919f86d7d7e822f0b7d797361fcfc03338f5c18b6c7cf23": "0x1bbd9ddc49fd2d67462d0b1919151ec9aa45fc4b", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x18e0a3e2de329a70e2763438a1a757bf6dab945dcaededc7455a7fcfae83def07b8acc4f2aa64faa0c97ea1f8702fbdf1843694734eee4d7c65c5605c2f812714814f13a09505d4014b468c1d3e394002832d9edc35dbbae1a7a6dc96025d47d5b74b919094e1fca66ed767766aa0a91025b6a8b955bb970912900ad4e413ea9360a7d2ed5da6a62c32ef4477bef2a1ba05c5feea57ebd44516a8257dcf9a3b67b4c0831fc73ca4ae4d46cf82e74ad01549973d132795c579d40eed490cbb01524", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700abe816d32a0ff056a4a9cbf7c9eab2b550a2e4": "0x00c41afa0e9000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004547158d12daf5a188c111543b87aaa3aafb92": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cd0699b4667af672f71ea4e589d9d2c29ca992": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891feed555363e3ec72086c6f347b1b8f67d869333": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952c7f3fb2a8bdc8f2d9cdc9404b5779108d4ea0c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e0fc93058997aaba684c4b3e9b5549a736fcb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed5b940de6f21fcc6d1168cb78590f9ab6cd2ba6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397663e2ead665b23089266bed606d492ddfafa5ff7": "0x00c07ed6adf901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977ff48b76335074baa82f4236dc673b6c56a8a703": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0ab9981f21acbcca729868d221baa118155602912ee0f3cc7014a38d2ac14a71": "0xf65fe2f2d8215e4dfdaf150b031259ece9998f8a", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5155b19dbc37f2b2b113eb82ffda03dfe936070000": "0xb8a3477a6ca9f9545ded0272a812d70c23b1267c8a7d0a077aef540b1d06087a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c0e0da2990dd5c3933b13cc49264c206e62b474": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5128fa8df454e4ccb47c7b699b56b0167dc3060000": "0x0ab9981f21acbcca729868d221baa118155602912ee0f3cc7014a38d2ac14a7100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f32137a894b2f46f186846da0bcfa57941060000": "0xb227d24a97cba787bde41e45897f6cf34822e210d475862df1a62710a661e13e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccdecb6fb16e73a9311e57c75beef3487b3a0b08": "0x00e4dbdcc51000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1efb42259f19cb4fd06aa4ceada857028a371af88868bd3bd88808ffc5a0747c": "0xb4624dca7c8be0b12e1f883cd5a64da42ee200e7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289225f3e472c48e708915cb4b24a3091f22fda52eb": "0x01", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e83613e4f90a971a43ee9cf36a45e16314050000": "0x7a9749cfb7256e7e48edca7a6911018861ec6e26d9eb2c81bbf037628fefcf0400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798b6371f584b45a302d9f09e8741c4f0e4526bfa": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df67048f1edb9b4c247c24e8b69219024581aa0d3aa509fbf8567199e2acf247a": "0x5a65b40f6e9bd80597482769f6bf1e09d49a5634", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894f26a98109d0e971370b72be7857f44a822a4651": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928986ec1830e985a7f8b3c7cebfa6c86774f9b347b9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b2c52e1aeb3340a166c483297a70f1ec3d0cd160": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8cea24ecc961f20fd7ea6332915c9ae85521f1b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da8f51905dd52f35565093792d9ed99097070000": "0xf6bf5945bd3abe20c1cded2b4250a87c47a13726ea2dee57f8a56920ef53d61300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700648e430be595e8293d447699e00f383da18abe": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513abf7d994adca5773bacd203e8dbfa19d6050000": "0xc0e4f5e8f715c5e6acbb2f15742f021693ecd39501613dfdc93a85c1cd77582e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bbeda4a55beb07bcb912a7e5ac6f477703090000": "0x4aadcb14243c81ea0785494a25185106c5dc1ee5a56078ae95603f2f2aaaa15300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289298679f84e404ac8a9c73158ee6fa4973eca9abd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c154d6a5f53e66085ce1d7c26f23aeb6d6b18ac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397befc4249d323465b36830ee666c6df935904da3d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df4dff459b93832e9bd6e0c32e5866126ecc434a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aa7d705eaf0a79ef8f0eb9b8c4b80b885205ea": "0x00fc8d0e800000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d12847802c9c373e96c9f5a0d7ac75a43c080000": "0xfdb612d1816c094e2d7bd3d957b76444c172c761fdf19df2f31d63917926e34e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891739e6e25e3da9107b7f60145dd2c8cbb76fc139": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930b943dd80ec2729942b65aed370835bff04bfec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700554019bc1d942aef1cbf7ee6becdab99ca91d7": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e18eb8520947679c4780bae0abb06e6a219b8df7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973d5b125732ab8687d607772cae3a63dc5784ce87": "0x00321a5ef36b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d4c9ffc5680b9492c9fe7201b972190cd51c0d3": "0x00", - "0x3a6772616e6470615f617574686f726974696573": "0x0118dea6f4a727d3b2399275d6ee8817881f10597471dc1d27f144295ad6fb933c7a010000000000000048b623941c2a4d41cf25ef495408690fc853f777192498c0922eab1e9df4f0610100000000000000f72daf2e560e4f0f22fb5cbb04ad1d7fee850aab238fd014c178769e7e3a9b8401000000000000001c151c11cb72334d26d70769e3af7bbff3801a4e2dca2b09b7cce0af8dd813070100000000000000680d278213f908658a49a1025a7f466c197e8fb6fabb5e62220a7bd75f860cab01000000000000008e59368700ea89e2bf8922cc9e4b86d6651d1c689a0d57813f9768dbaadecf710100000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08d3cd80270b7fcb3d94ca800834890bd03f39d867a9fae9b7335de90e9a576a": "0x14ff1233fa526a1c2a67640f637ffb1bce5df502", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5157ea7f0b431b3b3548859f5cd19e5d3485080000": "0xb6e1b1e9deea63d87810cc9d86bb759d26666a54086a9b650d91d95c59e3a8de00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970038aa4c51581fb226d7a515c038de9796f41fff": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003997d4a7cc30410836ab9003f96afe1f6feb50": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928916eb8921f75fd6761fe5cc90674bd9c69d05d1ea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000a0f7d5a3ba578fd3438cbccae3d3c722702c9": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ba7149b3bc64c6f805d02017a0d71e89362de64": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db2751ab0acae482c9785925ea091b999ecb9cf62c8cd2b1a8ad582a90a52b317": "0x034e104e2767228cc99fb3aa5af22db30c428b12", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896e4b9fc84af5b73f2d99d036273766f211d9d6b6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974a522a059291f53b8ffee8b90b72a1223b6dac46": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893a6d927022815090c856377c74b4128f1fb114cb": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d380ffa0d99a6519e0ab4d8a08c2d60ff5a8c7762c79e148ae6ee899170010044": "0xffda559dc06f88b229af02fdc41a5a6a48127aa1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5102a1d41ce52b9e33eabda47327d6536db6070000": "0x761a4086e686fb60b17943b03eca939e82fa2d1e4f9d6a9cbad22578d12be27400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928966f1c634f11355c3dee9015852dff6e65dbbf49c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5154e15702851dda1fa23b1049974a2c9afd060000": "0x2021456d5c848daa658b302a50a0a682e78f24599a6fc4b224621cfb9f00a95300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397beb910ae193dc54411747ac236e67d221ff3f1d7": "0x00bc15a98b8f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d92070ebf24c4c84a47db97b62d308834c3f258a9d96aafd6bd11eca52bd6ce4b": "0x462891ac9ea16c799f864e308c7e73829faafc02", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9fa413d7d329f4217ff3b4713843b6ef8f64c2ad1d769db015187dda34a7ca00": "0x8049419a99016123ed264ca39436a91c35c7fe2a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003c0f01ebe0f29488c629e253dcd4cb9f1cc586": "0x00a65c64378900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700510782b5d5bf4c408ad8a18c4cb7eaaaf592d0": "0x007e15ac953900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51835acde82e1d88b6f34b6d6bd258fecd12050000": "0xe648126c1f38e729968541f3a55390e13ebf3b076c8ea1509e378eec2594286d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51751d32bc127d8e3c50f180d3bb9e42f7c0020000": "0x7e96c1b891441afa759d3b9f5576f58ddff074f49f65059f410a4b4b9bad883700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48ff48391b63229dc9407669fb7973389cf9a9b6fb3afc5d3b39e3ac8da7f9e9": "0x1476d4c5204269665dac82770a8cfa80cb4ee953", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de8cecef8b9fa5dcad5ec62ec22d635e8d95bf": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510607bbf0bf1209ac4aef8d665dd16a9925070000": "0xd401d71bf90863a159beb23026bf2c0d14bbd504ae240640a17a16e9c4849d7f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890007186e9b4a6d02ba04e7b7504173a64814387d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007c0b89085282ce1cdba3bbf12e1228547275d4": "0x000673b4ce1200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970084125bebeaa11df85ac05d8da15c2ad150e814": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce23da48a54f65a3dcd3d16bb18a99d44a25cd096954fba3ae2ef973cf706e58": "0x213de3994517a65ef92c7ad4ec9b824dcccc67f5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723f9313f69cc340859fdd8afd5d69f9298fd295d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970086eb4edda94678c1d7894533072af28e6b0faa": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cb55ab5cdb7797b8a44a76c4d923701985df4d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dec0b26473a8566bcb2220ef71791a54381860591c9293f4d51d49f4015025c58": "0x65ad859676e14ccafd371f0e5b5841d1ed014cf5", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923fc17c723c870ec4bf48e71135a4446986b5d0d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004c54887f268bb0e5ed906f779d6ac081c11660": "0x006e7f7b980800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892702f707de88382ba6cf64a6341d089514341a5b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f698fe716ed0d54b6e91e8064057ebb34070000": "0xc80d34e8174bf6910e23f6dc3b132a0cff6fbcaeaefa2bf588db3c8e11e3f65300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f36a2d00e9312041d71615ac5260dac69b2c44": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289668dbd6154064e193ab693a4f79bbbd06e107741": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897db1094c1006eb7c057cde290791334ee99e4754": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000c10b4afef8d4c640ae287e75dd71c427cb0e0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b5d47ed8c07fe4d9a143fddf967ca8d66562beb3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e10f34493e884232f2847c6da66773e51ec1731b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c3668049cc8c0e75c32ec8bad06421c3bd26281": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8ac080a57b99bdc0f1a66d24064113b8bc5f728": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970073ab4feb184e95b514c03103fa4d0409df140a": "0x00d4238d32a200000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cdf9afacb0a46405d9b985aad3dadbaf3c000000": "0x42a0955465512b8f6e3afa33bad2036803c4786825097a6a7b81f289bd1c520100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397638a66644872aef9572ad260b0b353d4a860b45d": "0x00c029f73d5405000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a48bda48cdcbdd257fa55b7b7985a1ba61d9e1f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f3f007a415cd23b2275e689b088cc0ff0f0b1b1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf36912f45c463b51d4b90aceea2727d18e0e2ed": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243ff3592363b611cd701ccfa565dff6d1de23dfb2e": "0x00a031a95fe3000000000000000000000eee6f0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970027be158b9f1dc432577577d225f0520c309696": "0x005e9fc7130400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282433e0c4d785244c2df4fb88b81b2ca0aa7411a6ec2": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928929955c36088322a44d55f597eb63a7f60af639d3": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970044603a9c1b3e99918dc373a07dcdfedf38bdca": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ee03095cfa46cab6e89cdf19dc2cdc64fc76d2": "0x00f6b7082a7e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289af50942a6552333a69f736a00aaf7d5f57e764e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289810cff23a588aadac06cd93b443a12fa3a78affc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f613cbfe3c3552aa32bd23cc820b811b666007e3": "0x00aae20ead3e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512cb9d0de12ef65062d8262f04b7adad97d010000": "0x1e713a22e920a812dc7179926fd698289ad66bbba84c982851ddcaaeb26e075800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a42e82c8cb31068b240772ec69685ffc59b7fd11": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f06b9faa0d5b71935682f53b6ec711158a8e9b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f374deac1b5daf9d8f703189f1eec12bd80295a0": "0x00c07c9e760300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005a9309489cc3231adee672e986e79d7dd1acd9": "0x0050a95c091900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6ec7549a425fb0bfb24c1652c119a3d37050000": "0x8aa7eef9275f5b5230173bf9392682ebaede3cebca4f7acad4e383b8f172723f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003ca16bd227028787da3cf107e86b4c78fcb8c3": "0x00daf338368b00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519cabf0e6f7aa0084163c0c9f32ffa9df51020000": "0xdefd71969bd8c3999920e2e07a671cf76f502b08341a0bef1a4669d3affe205a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e326e81577ca673de641881b5d997528ee246f20": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974fe992e566f8a28248acc4cb401b7ffd7df959b0": "0x00868bdcab1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339774ebb92f67bd7a62e95e8129177921c2808b1070": "0x00c8a697cf0676020000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397742aa56043ed0dcf2673279f39b7dfe2abaf3610": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974aa9324f187b1005e43892e3fe65bc9c78bb8d8a": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b0b0d02d246dadb22f40133c2fb0fcf738b3337c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e7848bedb58a722316a55a845fea16b34cea5e5b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890069bf728cdbeb783ee8adb4801db3721f94f1ca": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b86ef72b38f189bbf18a94bc46c044b73ea807a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892fce155ddf214a56eb2e88939f2a48afb4b751c6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d86857505f3b297b65414126f02183450b040000": "0x88d74924b788c1f7ec64a54c63eccaddca748f588f67c26e5595870acecd925900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890013aa2fb5ec916660b38f1d53d4fc9bf8ef8a84": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289663e2ead665b23089266bed606d492ddfafa5ff7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289775d8bb769448c20a545c582088db5bff3751e84": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971c5142225c7e26732a7ea83d3b25c826d8637556": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730c083613ea607aa5c2d723ac9e2c6b0c032288f": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339769c575e3d825fed93c07195a802b6f77de4f5226": "0x0042b095ed0700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e064b904dfb30bdd37886efb20bb328a6b5b4a6c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b3e756f1b7013ab97b0631e560dda1880070000": "0x1afc89af3de835961ef0c698e6dfb77ab5de39e040d90944febdc47941600f4800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d5faa7afe93789d42c8193c01d67a25478d1f1": "0x006c054ca75702000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d84882d133a24d5f846dbb25597744a99f71327ecc0dd6a9e6ed54fdfd3fd173e": "0x7735e8af95538d6b436e3f63db0233b46f23aa08", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940f8fc59e380b53808df1bd1c4e0e2674186dfab": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fa6ab66fa1e479c1873ce0c8ea5c1261d778e6": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970098b09e215f5ffe356a13c6e1fa420209efefb1": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289709e8bdba7a7ca0bf99a138cb2a1d3e84b91c753": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999cf1375f2c178bfc895cd207ebb142621e8b8ef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d177586539eb325c70e15b369e1f8510bbd3cf44": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96b238d8b52668f90c36ad34ec02572133c9f234ca8983e33fbacab88345243c": "0x4209c9ea64fb4fa437eb950b3839a43c99d96c06", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ad406dc68cfab9920f00f2c5dfff89650d05929": "0x00ca3777b19c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977c838d644d5b60a023afed7497c311fa78175a6d": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d847ccc12910274a556bd06371c25a54bb922c447c8dae6c8818d86579e494a71": "0x60256530d074465406df460b6f38424ab5df6bed", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bc09b4284743f45d2c07926caaeaffa1bb4b6d46": "0x0000c52ebca2b1000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f3826a238beb074eae1d6c2a42cd3c63e2fc9147": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512b1d74ca63638b94de95a2c5f8b5f9e52e080000": "0xa2bba0c19b621759defe85c49e74d41dc70d6cac1138553207a8c921b6db705b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c8050f5ff8d448a5f3ac9e092f45f5ebb9df9de": "0x00526255c91800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ab416fe30d58afe5d9454c7fce7f830bcc750356": "0x00c87a6ad0cf02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907d1920e45d63344fd7b9a3de9befd133e61e081": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d885a263f335b180210364cc9de22b23cfcd1c90792971a82fca0980952a87219": "0x86821570ee3ec4bfaa2e2ffbbf16ee4f61336dc7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892658a833b04556526cbd6b2caab0a9fada7d8977": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511d9ea318921d67fa137fd2b1fe29855de4030000": "0x7a1878a2deff652de8f84322fbc6f3116e643c65ba2bac59244e64c91382ba4e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098e8aaf2dc065865e68baad8c60fb2d9787179": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d2eb8b578ae98447fcb32a4f6b68c45058635ab": "0x00dce0e4be3500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003b3575e3870ff8d5dc6114539250b359194aa2": "0x0040f09bbce108000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289335c0552eb130f3dfbe6efcb4d2895aed1e9938b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e63bdf498cc6781799cc23953e32dce295a95a0f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339777603bf4ae686fae678f2b2591a3487dc68599b5": "0x00487ddee25f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928996f0aa4251eb879290d36ae975c57a59f2a5472f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de0911e577096ba2d8e3f2d5ec0458b1d24830": "0x00d4c710ab4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289822b1f91970e2a6a2b4a72b75c3aa890d9b1fad8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895b53d322d505c0b8f76e745023c7d69845d663b4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339758a9d04522df5a3c7e1af52192b89d9c952b338d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928973361bd483cc76d6d0681065e6ddb25e84ca96df": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397383f42b5de515c564641f65f5da3bd8b4a35b4b4": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e448f88bdd86658308994de3c90a473f04abb4d4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006ef813cd8eab68641cd6fb8d5f3b8126abb5ba": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b7680dba45cb6fd6ae148cc8b30963667d386d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c2fd6608ee68a808f73f06d7b09cc036ea080000": "0xd63e66ba8c5af8b64993b764f71aa50a4b0f112d87f49015031b8378f8ce2d6a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519df9701da88a234e107d455bb8261f94c4080000": "0x6816dca78be4303480a42b848fef6ffc01e4189a5ec4aee433543b0381c3a51e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9e40ca7bd1fd588ca534ee6b96a65ca8a53ec232dda838cc3cd2bd1887904906": "0x11bc2c7ea454e083cea1186239abc83733200e78", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eb0718ce75762eeba4570943d5b2de2afb9085b6": "0x000e760ff72301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900892b067f072e1f337b367c9a8d9ea968d4419d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517ad99cb9b0f07f70415e6af2b71d66a3ef000000": "0xaed7efec80092410d5bbf134d29e673e1592e2b95bb7fc24f84d5121344c2c2900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970087df4a94ed0637178dff912b20e01ace2dc9d3": "0x009c7912141900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c431b755d5b1ccd238d5b8470b35afa2591474e": "0x00fe2d45b7a603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977738dd4955693f16822925a3cc9fde3f94e13e32": "0x007829c1894d02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700538ad6845f3526e08a2d1bdda4ce56a6191ecf": "0x00d8b10d918100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5192ddcc9d32b0009dfc1332d9a2684783cc000000": "0xda61c824abfb1e5df1140697374346be4443e41fd1e6ec99c22f2cf3381eb82e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4e4ff6adcb360ec9eb50d5e04ad47aec66a30055222dc13c6215b5f2db59767": "0xaba13ff6c070ac900ca4e3861ef66045be42b37b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d09e3d208f737d92bd55e3cc348094b24e60d223f7bbe266a49d7f87e727118dc": "0x048109448c4730ac047abe0097034754cc9f0dc8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339735895e864b6a7b88db055924e01de9e030c42020": "0x004eff6c020700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e260e35f88bb3d71ff842178649c2817dbf50c04": "0x0016c10c435a01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dffb703dc6c44e62c195bbbcd9c7fdbf45f5a133": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d09cdd094e9a51d26bbc6cbb71d3f7c5b8edde629402e3e5370e7f6904512fc4a": "0xde5eea1691af15296ab6474d161ea8a4ab5f86f6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c687a26242033da5caffa1ef62a293c930a3dc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970961081fdccbd287cc1045744a7c0b0222d70314": "0x0042224efe1700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891508d705f64ce3810d54ed2ff5cc9fccb55a6942": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397128bef3c7b002090dd018677f551a865595a19d1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289687f956a18fd757f21ff2c1f0334c589a6bd4d1b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512ee83da91122462c4264a5c79a17968caf010000": "0xc44cba2747fcc1dfdc75f1ad38fbb13fc2ea072cc3855f7db2a52f9e5dd5080e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289123843545fb525c8e134c9a5f15ada6865cc3848": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c09c648b43dacc11c63f053c95beed79c3e7fb31": "0x00be6c373c2000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ad4551742f5718e0af5d88119974c86efc8b83bb": "0x007e84c4358901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973637f645f8bdb74e1cd1b28b5afc64c4a29c1f1b": "0x0040ac6893f800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005ecb236707b6e0e75bbe9fb034528668ad21a3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4a025dc1068a02a63ca49aed9ffadb1d249a1f5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d313f089755915750761bfbec433d1389a080000": "0xa0dd8643134d45dc348125039356a3d2f9d785235a057a20476de704a088396b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f30a1481febb1a1e6ebde2942c58a284eb060000": "0x2436d28eba2d9eb5a342e5fc9a2de9b2070f4a20ecca3dfdcbc83fdb0d19923600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51867a7fd6cece4c57eb6c2e7ffe3936e831000000": "0xc2fc92e6992a16358fcc7a4d816f46056c0f6d231c33d8cc2def79cde45d226a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5cba75ed8675adb79470d814cf37fa72d13b8df12ea9651a7e65f6bd526bfd48": "0x7b40d5c17aab371a6ed5ac622ea232b590f2a31b", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d76a6b80847d39f2242188ab8488af63177db6cc02d15808fddf18668e2d6bc25": "0x9dedc7bf7fbcfc0d48964cd9977337b944e177e1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a09c71abc6ddcfeb38b68eef7d236d0f4b94c11d": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891f9aa698b3781ea29878036773a0df87f5325d98": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289088cca87b0d829b35efeb6934ff807cd3befc48b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5ce26469794d196f16f4b83422bdae40f610dd8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006a0822d45e7a82220093d1abb1d595e05b1333": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006b0c951ffdbd1e139bb4734001e5bb38590533": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518f077e8a37488e9e93ea41e00ba310d01e080000": "0x8a2086278ce66471ae2b31bccc818095eda142f95bb13339ce5e8fe7c459961800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d5f1a7ad414f764f51f339126c2bf0e5a2070000": "0xd47637eb6578f4f2017e7dafba599a2829b73980e13e3e5f17b3a2081b9abf0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339722a71133e0a9514145b5ea4ce0b874a9afd596fb": "0x00c408874aa601000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b4513bc7f383d9f27e8c9d2b16216328927f1669": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974ae4f357871171a3c3e10586ff545acd8e165618": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009715b79dcb53d3fff43ed82c11b2cef7088730": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c7d10893b30c28cd726fc75f103fb6233080000": "0x8b3219495b480547011e7eb4c773b6b1778077195169a4e5fb16ce6b553b9b0c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f6a9a82ba882ede0fb2e2e8608d01f0250080000": "0x885e9172fadfb8cbdb532c65d07078a2c9c150bc3ded165da437268b1cf3afe100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824346db544038c59b826dda8d3cc8b72de90c86e683": "0x00b0ff5367f3050000000000000000006021a10900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db4f1d6715086ecf1c0f4f46320455faec20ca76cd7dac4151427b212c5021964": "0xe3bbc9586ef4c2baa9cc995fc50dfa7118d35dad", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000f7e4679bd941ca16000210130b66329e28845": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c231dc7e55ec4b6e33ea3ea6d77d88917d879781": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138013074731c3cfe675e57d793d494743d050000": "0x0a49c0914f127ebf3bf1364ab5a351479d32700fd8b73bc2d6a94cc38176b53900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e1c09312f5397c46089a6f95fd0424523eab7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339793677d3d013f091f772e54e6e50f26204de7db79": "0x006e525970d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008211ed672526f479a537039766a8d8daf809f7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a777a85e56f533ee46eb6de0825678efcec56f": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c2d79f8483b8fa0b0026d39db21dd51d90021d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d48af0a9782bce4b43ce6864a1c9e32e5f47c6c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970085ebc8d2dda15b907c3b43e5f6cdb17849b98b": "0x005a9010a19f05000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d300b561ea06abe10d38ad05319e5d2ea641802": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0f3ca995aadd1438b56bd795335a723114ae98e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62bac995e1409297460e9ba42a01bba4c01e2740fcaea01950402ee0a51f8022": "0x00dd82457a6fb1ea688d0fa4a2a2151368619403", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519017d1c733ec2aeaa6fd0230614e397e2a000000": "0x48454b0387f763dcf46291236ddfe846ef6466aba368f75aec3bb84b65b39f6600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d682736f965078d3b99638dcdaa574b2f9cdbd60f5a0e0a4c6082496687260d50": "0x456ec4d3265a0e2c8566728f819737a8c4a9872e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9aad9414088708b92ec181c612190b68da9d63cdc7a62f1d0c6ed9f568471224": "0x76211ee383d28be255a7a44de4a5e641a7d88e93", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e20357f4f128753e6fc6de0e6ac51e897d2ba9": "0x00bc082a630800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc493b051f40fb47625edb508d1a43509ef0e3a6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5137e2e05d860ed55cad9f31ab1e373f1650090000": "0xd657f17319e754644e239fae0cdf743468637219cfd0e3847bb0ab967980523400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430063d8aa6c33d88963ee4176bdcbd65ece06cc13": "0x0000c16ff286230000000000000000003d327d3900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339789379ecb3d84d69e1b18075d89e864bea36c9b10": "0x00d8d7433fd006000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006bc93719aef20a0258f9371a725b576c046148": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513285e7ce799a85ea0356ac073d6348b9ef040000": "0xaee72821ca00e62304e4f0d858122a65b87c8df4f0eae224ae064b951d39f61000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48d8c75ee8b4de67c25eac76659690f8c11b3ff23eaf348b89a2e13e8598ad14": "0x22a35cbb6356055d8216a36af746c58bcfb99566", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004bc0521cf3e6289217adc9ab50722a3d2f6849": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005e42814cdf3db319923b257a0e0a48e3ee5350": "0x006af59b273877000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005e5c04f113b7ca7c62a331be999bff4f0ec44d": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928991f2376856197b8bb33ee86f56d4a17da7298859": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339737c5bf8acb3140f17819ecb4dccbf2e66dff9ec6": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e7465a8034887a0004d4ed2c4219c2f5c22cb114": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c4f2ac5ef5a2dcfd221f9ee1bd559802cf060000": "0x62b5214b6ee02f9e2596ba869ce0d3e27d8a5580072163a12f6294f3587bcb0100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da69c4536ec42bf8f3b60198d7b78be15ad9a147ed73f25164474fc61af261a53": "0x0084e0ea2823277102b3701b0b29d974c29e5e3f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ce603c14ee8349fadd8888ff87d53d93fd43c": "0x00f660a1ac0500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9008091e2d1fb20e6d6a46c0d66591c9b00b73ea42386c0897dfdd5327c15531": "0x075c5fec47d39bd6482df2cfe32a6d1f83b722b8", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973137346f506a2d980e1b00a5ff4801ce702448fe": "0x00c26f318a5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003997d4a7cc30410836ab9003f96afe1f6feb50": "0x000a8552081600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728cd36b7b86b3d6a8d53f0332fc3563489aee858": "0x0020034cf68f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397abf9eedde255d9fb1047d2f63970faf7637ce68d": "0x00d616f8da0300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975113c12e12427747e73b87b76bc524124acb69d2": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e2d8cd482efb93b788cff519bcbf5e25dca333be": "0x003ece57dbec23000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa72f6b0d74e9843b68cbba5e8d622d055f7a4e6dd196b421a67f23baf05a841": "0x351a7dffbe4b4eba06a0b583c970c4f83e89835c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8bdc33dd6ee3520995675c15083ad8db68de8bc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928916b278ad48a9fb2a18f099c210ef742479fce983": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d5e9ea82cabbb9fc6b0485d31b5fd5bf97431d": "0x008c2a02902a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894036ce05f4b3f7254541e9f50f56247cccafc14e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517c2577007a6bbd7c254a2653f03646a0ee060000": "0x90ebf0971459d3c56b434d4a20257625893fd27ad1bd423739d918976adaf86600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8bcdee6b78af63f0ce1c8b97bb7199b8172a10b": "0x009c4d06cc3e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924a9f3b7757a2f30e5171009f067bb906f9a8e67": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8362c2fbae2707b54b90ca0e28b7bc4bb25e81159931d9ac85cc75c20a9e161": "0x088cca87b0d829b35efeb6934ff807cd3befc48b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970024f96565d874463a46684d2f276318793049e5": "0x00d86d7f8e2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940d0a40a05c43ce715932731f2ae3f6b0fbcfbab": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e2ccc768dbf601ace5bfb82591e59297993dc9ef": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709f8eb817bed2df18ed680c9c310b9ea75c2a488": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339743c8ec1ace6c4b36e88ea5b6388c20ff3f13b19c": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890099fedd81ce071a859bc98a84b7bfdfc52f4242": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eaa0987ad748c033d01d71ddd87e2d5e1fd80e52": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ffe3083861f58aa0101453a61fd3a1b747d2b75": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aa879bda95576cdcb96a64406d1366b48ef57e33": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518c167783904fbc5bc6801b7fb6cbe29845010000": "0x420c638c444c31f43e678d1f1565f1c40c3d2319de8096fd24ecde1be227ff2400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5153639babc51111bf412889c90be2cd620d040000": "0x8af773cc899e6beafdf0f125cda8cc0b24b253fb2d856db1297c8bd01d76211200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289497acc237dab7e7f944a8b1acdf9f56288bddf13": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc81a4baa6265095f1081b86633e628677325b8f7ce821d1a44492e05b017577f": "0x68a85a879380543b48c40d0620e0681300a88553", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009f4a65c06d5fb189b88f998eb9cd5e88f16708": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a1b28877a75798bed7c923d042a8bee3753aa796": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979e420616cf7f23f48fd442e11cbb1f36e37546f1": "0x00da25696b3a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8284b7cc1e21c463fbe2e309c8cda79827620863b9a26a7445c9daceae91a778": "0x5b53d322d505c0b8f76e745023c7d69845d663b4", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d82e5bbeee29a5fc8ec9513dfe2089ac32387a0d72dd85990a887f9e4ad890855": "0x07b8ae7d128d58f51815d99b751c0dd9b6cf2d44", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700002f21194993a750972574e2d82ce8c95078a6": "0x00d639e9f10000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8a7cd13c25d7237e4e957074e70bc3985920f21": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d0108a019eee1442d3b864276739f6824a460331": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dec6b5880e87f3cb86eee445afd7ce299065f11b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971020df9da65f804831fa334e16befbac20599a33": "0x0082377cd53497000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bc36c18295814233a70dc57b69d96ea3a2050000": "0x06489613133c162307321143c102143da96dd6309bcc1ba2ff7f1b53f429843300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bdb3924fc91e02130cde47545865b618eeb5e1d4": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508d6237c8d786801061756469804c0831fc73ca4ae4d46cf82e74ad01549973d132795c579d40eed490cbb01524": "0xe240d12c7ad07bb0e7785ee6837095ddeebb7aef84d6ed7ea87da197805b343a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928985ac9e682995ebebde8ff107fbbbfe7c40992e4a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007924aa5e2abb7a230caa625cc0f073f0ca61f4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fcae7970392f510a985a7eaccd3820b7759d65d9": "0x00fad415c00000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002c5f1d2459a12bd296be7ebc652e9c7d1bf2c0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289970a3182ec4dbe8115a001c5abf6f5383cfd6c6c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518936df98834c9124023f8f439f2a71ffef020000": "0xf8999d6c00d5014ef989664191dd131f18fee4d5b3341637baae3a9925a3ce2500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ae39db49af9e2dec759ad1647fdadefb7184399": "0x005827a658e00f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b73c916e56833aa4ef789ac94e78a0a5cae93c70": "0x00ea6c66a4cf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51be5cc1288ab067e2d64733e29375c27a2d000000": "0x76acdf6617c513da01555e0f83863ca8d44226e977f8ee5a243565193cdde01200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0108a019eee1442d3b864276739f6824a460331": "0x00a2a8027b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289142f4db6d6e603f4c5990723c9376300edc964a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e420616cf7f23f48fd442e11cbb1f36e37546f1": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515b3b42c2ab41b914ac211031ab233cba84050000": "0x507b544916be600bd033d37e659e090467d1cdd29bf9dcfab11e1a8eb7b4c67b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f7a7256c303a22b718380a600f75193626090000": "0x74d422ddfaf5c928d04f719fe7f218e9de21d83f5fd0e7cf66fa20a3c2a72d2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700443dd96337e1a0de0d5b909ca680f00af85f45": "0x00e898be808500000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6cabd36a1a0833f843b41221a584ee3396ac4df33712dd8b96f6a5f0babe4158": "0x008a15ba6eb9104f34001a142a0b57e0008d8e07", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003ef653b996a653d41d4ed315b3209f44bcce9d": "0x007629af4d7601000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900567685d0b24e7a550e84ec66adc6fa91c35208": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f928e604b981ca97463d9bbd06d84ebb5c87ef4": "0x002046fdcb6951010000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6c29577335bfd3cbe0df3daf35919a30761a13580aa72d1d3fe8003e2fc1a443": "0x004d1fe43ac70412e62d8186e8e0cb261d6c602b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339731369166ee8d31fce7b69d3231e42245b117c9bd": "0x00404c948b3203000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cef45cadd1e590c243490ad0c0fb9bd0a47d07c3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898a44f67e79908d52a5d81bf30cd063a481eb528f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee0a93db77fb6741be11c337e2edfe00233b0c19": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000e229e2cccd3c40cc7d3182ac72fde71122213": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900818158c1ebf72ff7d3a2feb70735d99a5c674b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009f9a431fe97b71e157c50043f770cd5db2558f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900afef101ad493ac1da15395eeb0c84cb8a2a0cf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900daac3d76e6a2e0bda10600e5a6b0e044ea2117": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fcae7970392f510a985a7eaccd3820b7759d65d9": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a0284e9a010ca7d7696d6f6e803ccde029459535c8bda2aa6fc2d97af3880409010bbc05a15f8d42bce8f0176d": "0xdc9974cdb3cebfac4d31333c30865ff66c35c1bf898df5c5dd2924d3280e7201", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972ee824bf2fad9d0e360bdccd74c2b5d3f634b9c2": "0x00702964a2af00000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcaea07de2b8f010516dca3f7ef52f7ac5a": "0x040000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0af9641145b68970bf6f3904732bd7740d57be1": "0x00d6c280a42800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289106d77aa34d1fedbcdf0cfc17d140745aa5c2626": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289185d5cd827f66703890387d348a796cc8538d08e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289202c3ba79b184884973405abf8b7d3d65cf73f3f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289729184154b516f6caafdc8ef2826809669a6e082": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bb2da6e051604740d95273c51180219056d3e70c": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289386c6c6a0df3ebf66b64cb34c6f8834b9711a2e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289522325d3c47c84ff0a86fae37bd4f62a703d5b42": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c9f778ebffa282838000bdab016dfa08f75dd445": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928979af82bbb0552f8ad0192f4a7638dfbe8be00908": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397008dd1b21dad14a42715a406f36abc940ebf0287": "0x009e3f8afc9f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899f6bee6899ccd70cf776107ca787cd88dcca0b37": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289edf039c36c3fc977c8830d68d75d989d42ed1827": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d467023bb6cdf712422c34498a5143b0c7f9d3e92e336d5e8c7bfd1da7f119473": "0x1c00e0743d704094b1d198076a33a33487e2d38c", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517a0c5c512b9fa2847953b22cc6ff649867070000": "0x72f7dd3a2e7a78481494856d4ecae073b7fe731495cc78c9b100a2775f59881b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518b8d16cb92be342e132493c0a271a6415d040000": "0xb80268054c501c008024aee44a8d5462f59464ade23dde004291254683496a6600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431ad661fe9878af3b77754710f50981c82549bda8": "0x00009573c24800000000000000000000d1bc750000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da6d16d544f5994d2de0c8064d38f2df418f943595629ee6a2ba8df7a25f23803": "0xcb2b6f2f316f419c8bbaf441ea94e47a2193f7e2", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d96d7699bc59f8b6fc9be2be5f6ef506b63c7e10b8d751a73513694b601aced4c": "0x8e6365a5dad54ec79a5411b6a8100d6b25f155b8", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df8750a008794352b2a7533510bfd2fdc2f2ebb55e343d2dfc4c1bebdd0b89878": "0x5b650393b228dfb785b07f149fb213d691e49b33", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976bf95319e992a3ea48071692bb0553b173fd7d34": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc1162ef65ff4c434e986880d325a2705cc64b37": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e1ef7504fcd7d982885efd88d190d3179fcc3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eed251dbde2ca8d330a978ccbfe4758294a096c7": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f59fbfe6c2cba95173d69b4b0b00e09c76501fc": "0x007ef91cb75900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e5684f9a6f43932992d720d52b378fadb376732": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890029dc8d8ef8c287ad395732dbe5d5bf951da820": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008fc7cbadffbd0d7fe44f8dfd60a79d721a1c9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c699ed7a9354ebbcc89529f88b67802e6f35a337": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d023bd0c9a21b2c69bff060f85fdee8b2a2e2908": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51623245c1c45601313c2fa273b5eed76cc9050000": "0x8a14f3b22fd8bb376d4639aaa8011bd8aa0bc34a5fa83d91e11a07bf83a1613e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c7856350e309384b519c873fb20d4393fe42085ef1a2f2c260a14eac8045973": "0x001c23d4e5d6b3b797fe085fb0a3bafb7f758da9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978803cd717982cbf4036d0ecd1925f13c09a11a51": "0x00805cec442900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae77fe3329cb18cbb61840793fa16d02319cca0da4ffc3fec7f1a50fbfc1e91f": "0x99fb6c13d95f1b74e77778fc86b98ffb30cfb929", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a738917e17968c22c3ae246a69df2f64fea012ac": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890b7b02c9a7f9b6444ef6e54384a5b5feb6b36be5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970019012e00e460970f1d39925494ec20a2dbd50b": "0x0068d9d7873402000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707d1920e45d63344fd7b9a3de9befd133e61e081": "0x00202e585d3783000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700477bcf4c48a8c4814ace55160c0ab89ddc9795": "0x00888bf5e46100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700169602c4e4f14ba7adabe3c3829b6115e244e4": "0x0090bc88150100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4cfea3e89b8563274d1cdb191bd0d5de97de790821a6d41990f7671db2ae9108": "0x5e0e7a5ca7fd2b638cb8e544d9188dfc38385db3", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd69e158003222f6d68e25d9f39e881c74c2a833a6f048b854f79a03eec996e40": "0xe228a4c62c1abced2b55ca9af8b08b1cf0ae4988", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e825b93af6a21bc084f8f21d59398daeaf2ecd1": "0x00f424648f0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d045e79ff7d87b7fc35c70bec29501fbbc28203": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975dc41b5662cf58ebfe9cef62d58c2c11a9863428": "0x0066fa41c93400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a5fe200655224ca4109e8bc0b29ccbbc1e1269b0": "0x009ea646782400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900cfc49da98153ce90639fa4e327f1516f98cc6e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900467243b6d8312a68f35ca037c0428d52ed8aaf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895bec595767bf447fb61edddc723765f241de1dc4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289719e57b6d5969fdbc9b35bf76153dee9d09e2536": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519c655964ae84dbace8d02d40a7fd744696070000": "0x2251fc8e7977546c82b7bd4bfc3383601436d5ef3cf7a3060859bebc05a9a04600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339717e7adf544b8c6ab81cfd449f4154d14a61b2b29": "0x00706f96a68602000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974aa8f04de40456cfde9e606f9f066f399bfa4aa2": "0x00425a2f59a800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d8cb03d06e50b85644026da3e510f15e39e65efd": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895d930f5838e8f0a2e2db62535d767bdbb5da7ce4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289903e339fcd2bff1d25c91e1bc0d2b46fe71dc1d2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ad1ad5f214271d037176bec3f90fb4448ee56399": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339776436bdf4f3b3b9abfa08f825d2db471a4e33507": "0x000892b8f75a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700388e518f2aac5b12485f3e2dafa9aa8262945e": "0x00204a736c3d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901c08575d845acf2bdd1df6b449afebe9e8910cf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de02806109b735d8f9144819353a1db3dec1a4e9d44abfcd6ce67180c02e4ac2a": "0x0023d732d511a5d2cb335d824655f29daa85be26", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d89384c4107f7d0feadb833e769e7e1396eaa5e4": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009580bb9bb318dac9a5b0b3607491c858c45aed": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397456209ca9fcf4dc8d276a659f6c37003555fd0ac": "0x0010a5d4e80000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007ce39c82c2cf3d1d4e5890abdd3bb51567e469": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008235374c2b0a0fadd61c6bbdde2b9983af91f4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397800819914cb399e8eba6cc9f026066fae96e4ff1": "0x005650f3083000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900760e131413c57cf00d098dc27ee53f0fc3a7ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289da2bf8e3c90f7250c9db68d9566f40350380149f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928911efc885eda7ddde9c1c77f2946737796ef06e3f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb73fa15563f569a813a78d9a4f714b9aa020000": "0x74242c09e3519ed1c34ec0a846ccd0509227c4b23e5cfa42b7a84d75a0ba7a5300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a3befe0f30e5fafbe6f9d79d6a3e3a382c060000": "0xf69a73bcfc9996e432faaeca61f336deaab5ce773dc236161ce08bc852df7e0c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002a6b8504b4aa93bf79f1c8bff1fed68c591380": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289393774d01e81a2fa93affad6e3f75a86a569f11e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bc7d1910bc4424aed7eddf5e5a008931625c28": "0x00142a8aecdf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c49830add09b7b13758537fa4e8db73fa5fd4bb4": "0x00301a45ba2900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ff8402f59bd3a3cab5b4ebc092939f5b2070000": "0xd60888e982105f5cf40568c5ef03aa875becf1e4dd57c42c2623943feb128c2600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1489a65848401b2fca29f84ca8041af9ec1e8bc08d79469d95554d9c59cbc659": "0x98b6371f584b45a302d9f09e8741c4f0e4526bfa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975c498cfbae903fcd46bc6eddba138f78b96b7200": "0x00fa4c6f798806000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397456ec4d3265a0e2c8566728f819737a8c4a9872e": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4e3d772a967b139601c365d3804d88396b10b4ed8f7cd6d67d7ea6b46b2d5761": "0x31d04a32f22022ec66afe6c2351db768ed32b873", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e4c826e8a26d72cd784052b0a45f93a451a5e2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928c42de479e57cc0c90b8a3eceb406dc173ad7cc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928987ccdf773a25a7036e7b95de5ec8fe74bf7121f6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c68bb853570f4d75a02e7f7c1a7bc179e62e830d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519450ccbdc1f3e3857b25ad39e99048788d060000": "0x6cf513881f519aa8ffa7b6631e934e954afba13b14629e9683c20d697fbf5d5a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a3437295823c66aa4e245297ed78ef52fa6c71": "0x00d6dc8cef0c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890087c431927e0a49ac8908026cfb13d3cf96b950": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891cda53cdae34c5c3b2c62e35bdd1db577e56d3a5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0663c63fc812a1d2d5ec872f1f2244ba474f36cf28dffb9c8197e87ab4f19e50": "0xfc7d085592f433e4523a2bc030842427b63ce31c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fa9ed378e8bc649df332605415e5a9f3cea779": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898ebea2c1deba5a629af27b0c8383113008c8ef43": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d491bd0f908f61798cccff0b8e27838166050000": "0x70472afbf636a8e281850e5a0700ce70b2ce675bb2038e92b134fd7f5d02bf0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e35d39ed1562e36efd2facd3fc6312c25241e8c665fbe0fef836b92224bb72e": "0x0b792f95c5d535942270423c12a735beace8e36f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004b592365dccc0bcdc29fb82223f2774b93bfea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928992fafb4ba354108be7f0b76f5aa93e59b21288c5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707ff3463620606e7483f074c44fc25c32383bc79": "0x002484462f7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1c45f47adf9afd4df16500a4c213cf52af55f88": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900da54bae3fa6d6612987a7f29a32ef9999af062": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f51382de43471e6056864cb39123ac877c1902b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f9beb8f41a6431023bcf41a1c396fcb9e4060000": "0x4e3d772a967b139601c365d3804d88396b10b4ed8f7cd6d67d7ea6b46b2d576100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ea3c5be41a73bd49b97f4cdd3eb55335baf03b3": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b4dbea3155a8f7f37183b29d105ce11af7080000": "0x4e2c830f308677db112a4a79bc17a39c91352b6d3ea0e476ed59dff980a0167700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948f5ae497b444b6acc53150116526f0b239d1170": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397203d2e2bf08a58c132f650f44e6db94b78097032": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928993d79977ef117007a0028218d99dd2caebd70b55": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28b60a62d04c7d92c4fcba02072a384e2f60ecffd56264aaff66325509ee2277": "0x0087814a753208557c3fad394d80348307326fac", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46ef2823db8925dfc223d2be94661efd2e77286cc9ed573d94c0391d0622262d": "0x006c8616a98ff7b6fd6302ffe44a18348df5b3fc", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbc1d8ebf568492bdb5735740168af7187006eed87bed5d2082b32b0b3fa9d953": "0x1c062628943a930b805849b494719c7d23c77bd5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971eb95275df958625d6ee8a7da99eea9fff12127f": "0x001e22598cef03000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e348817abb98cb962fc0780a47ebd471d9c318395fa80b4529a64cfabb2e32c": "0x9e005e96b230631a08c53a58cbde5e1e13943647", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976df205592f28ab7e1db1ff8e24d66c53e5f22c3f": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bc73c898b502cfba8144fd3a1a33757ab84440ac": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282432c8d6ee56d63c0ccc987b1bbce567834e4e3f312": "0x00901ec4bc160000000000000000000001cb240000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898afe5cd482d702980f9b141ab34150996db32341": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100ccf8bee84cdd69c2c7f74f02832c23f5080000": "0x6eb49bf513747f0547e07635cfb06fcde75dd66f96ccde6fa072b9fc12603c3c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a1206a0acb0a887986a5ec7c1899f96a68f6f18": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1c7a132e41c02fa4c8dcb647700633c59d6fc8235b867d9422d1fccf24f77b45": "0x00ab35e5fe5354151bccc15e6d219dcd23c2e868", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513d7ac04550fee8d57d45eecf63665296e0050000": "0x421f3f945c49886c4993af976b9d06e97b4a59f99b151c9af27fd612446bcd6d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e7573ef29328441aba06fcbecae95383cc85a5db": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d70464a147925dde45821d92e07a49082107b862": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fc4045b648c5b9b5c353accd0a61437c4a030000": "0x844d7741df7f47531af93e28a1bd1912a471977cc3cf5666030936380715054c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bf8401e27fbb06066845b15be8c1b06e42b0e6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e187973a417e345f5c4f5dfb690b3d01001e43": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895f2fdfdb7945f770436d1f41c01b47fb76313a39": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519a6b6c99cb0d08662d83ac1764e5809501050000": "0x423185717826a19d375e259a844fad640a1bda720f14e0fa7c74bf936a42007f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f57c911367700dc2b5d847ffb0849293ba5af025": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896285a2a0892b479e0324f4e51b2f1052712a1e73": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009e02b21abefc7ecc1f2b11700b49106d7d552b": "0x0078818246ba00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f5f3148b56f9929c4ca064619f751c0061050000": "0x84583d9d96ad734c94c2a8e35e9545434a0aaf87ef3b14a3aafeeb6f863ccbd400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3cb41637bcd76f2609d767597d6863ccb3cd965d896637769a43039c6347a47c": "0x8f4d910b1ba48ef5349f3cbfb01908c1f42ed63a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0cf34d8a3dd4d379800bb440c1a3523cad4d9ea": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7455f18d8399830baad97632cda0a9cc2008f66": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d721f7b0f0217f3fe8b192b5a2a7feb22b296e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928951afd27a799424910c5bfbe69646a6f87cc8b73d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397651547546b24fa036b9c1b1c2dc8b2ae9c07aed9": "0x00e6562e0e5e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bed113f4cdbf6e0fd3d402f84fe00cdb9ed79c3a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339788b5c0f4c52ac62c66c1c4d009e6ae0f72f4d042": "0x0036effeca8d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2888de98d79687ad6a7f8c38c9408829b86680eab8e30d62ec36b989f8088c7e": "0xf68ff9a1cb4aeb9018a8671087fcc6155bef517b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890002ec0da4bfd7e9b5cfdcef93f8a02d4b271aba": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339799c72a739535fef15968b080611b4752a564a3f8": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006e6907ba032a02644f7289d5a2e5b6f3e41a49": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19506c292ad94b2c2cee6261626580fa3437b10f6e7af8f31362df3a179b991a8c56313d1bcd6307a4d0c734c1ae31": "0x3887050ecff59f58658b3df63a16d03a00f92890f1517f48c2f6ccd215e5450e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bff9908ed6553a0c3b071b1232bb6b544abdbf": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ab7edcd19d92170528cd5d8a7d25dc6ffb75c39": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1eb5c6758a96f303461856a587c3b58bddd005b2b1de6b14b3fded4b5b01960e": "0xafd6e8fdc9e0f3579e0b51f4af2587141b34ae18", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892afd2c2904bac60f47e0a351c2fd66e12789c7e6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f4400714bf70c32740d1b103553e4147c0ae254": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700aaf196cedfe640591c2d0eb4b06cc2c746697f": "0x001a5524560200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928998e43e922b829f33f3a8c9a81943df15706e7441": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d9103bb6b67a55a7fece2d1af62d457c2178946d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dd421a32ea27a37f92e901256c472f34ce070000": "0xaced6ba10b1cdbb0cb10cf662c37e312414c26f632fb5e89e1ac410238a4406800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f0650200d57ff9098164898d2231b2de220c99": "0x00d42517c30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e49d3022283a9fa6d64271c2f18813d5250667": "0x000e064d410300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a8c2a3dd76bbaff6c13be1d583b3c95aef9e773d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c766b7772d2ed956c850107bf56ca79299ce6d": "0x00dec475160300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4f3e8a5bf3a21759f79fdf15f03b1bb099b3ea8284a845d5eac8b476e618804": "0x29bff29d8193e551e089b3aad1e3937882fd9d3d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bace2a685d8d73c3e60b84bbc34ab782f54100c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339747a22454aab7e24467ac9fd5453db69b3dfe8cdd": "0x004072e62d2d07000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc4f955aa807f2c144801b3ff189da53ae841c7f5d6bd15cb3fd3b5001e94f855": "0x1b22a64ea64c2f4cf1d6ae25c855db5fe1ca0e20", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971114c8fc7287c7b9eaca65be89d82d85288a891a": "0x00901f44ae003f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397893a98ff8d6d8d13cb095ca1ee3f9a70bf9bbaa8": "0x004ce4f43b5701000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ad897f48e2166a71b83e541cdeab9c36232d905": "0x0062ebffa05700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890055996baa3a392a18f78afc52a0fa967e6206e0": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c432730fd9008dcd451546379bfc921b51050000": "0xb8362c2fbae2707b54b90ca0e28b7bc4bb25e81159931d9ac85cc75c20a9e16100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d62544cac590661359cfd64c73c4f33f806d24": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df2bfe9a0d14bca7ebc7d681f805ab905e882778d398dd991f61dce22d1bea24c": "0x3cefad973ebe1f54b6e790c823f90f81e95f4aa8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890f44232ef2cc7a637513c492322271498bd4b915": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f81a1831e1bb3b21b063f40b5fd29969d9cb2ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ff82054932bb21f78c58582390d34e16a479294": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5138071eee89b59e68488f19c2600d80a886070000": "0x9a976f1fe1d9b93e4931a5fc14d9312f64677e32033366f01d9f855edc92ed1200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51686ffa482169b58cb879a4a4e55fdd4a1e090000": "0x46a1fee5a1810662ef7c82a2e91a37a39ab9611105b3a45717ec131bdc4cfe4000000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5149e13bfe7ec4693058f8fa225936c66b08050000": "0xca51a1ec0e15c10c0bf0e44a957964485d66ddb7009419186136d1cdd60f9a3300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d46ae3dd83d4737906858d8cdaebea882b9bc8581f6716140e1e9cc1516ea0161": "0x0059d48fa65e3440a352527e5c11627927751023", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db01917ef7ef9823b455ceb5295211968ff32f415d7feaaafbb6facce258ab117": "0x7df289cbd544ba6bd153b783ee9024e46a1a7527", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c8e20df2aed2601379f90cca198dba99cbd8ef": "0x00a07bce160400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8889bb12ffc22c93e6190aeac259184d7181bed3f0cc9938d27315f8e61c8c4a": "0xe571ba1d28c1acbc64c8b63b6a4c9664aca816da", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006706b3aced8f9c82f45055521b875be51da06f": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973bca1e6cc37f9b72191cd98b6fbdce4e092f0d3d": "0x00703874580800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510907a059c2701667eebcb93307c14a654b090000": "0x103092c0a2aa3bbbbd71945f255bd5cfb7a97acd4a7f08efdf2ff5cd9c6cc34800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511beedc39f7668334e2012d40b606637ff3080000": "0x0a99dc7c944cb8c2cf094502e581afd9a15b0867783234427828e7e557903e4900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f7e7b1b52725e1f32729d3a2c521a5f76c98df": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005906f955d7a8c58b036a9c36c96398cc40e32d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892684445d42e93876de6d41ed685081b9ae9bdd31": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940095bd940a96c8b42abc9602a265071d0ef82c6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894d5f062ae922c42aba01b342b17fee7c9ff2d071": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898234c57f49a272ab89ed69f445cf9ce68406a1e1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798d13c1d3fb4621065d79a06a17a0621daa314ee": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ad682addf837939690da95071b9492b064797b9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289022070e52ad6f0425f72feb16636fffce243529c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899fbaf540fab13261780b0eac3e1beafb4a923bd5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7841fa410e1caafcc033f67f20c0f60163e3153": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339716b278ad48a9fb2a18f099c210ef742479fce983": "0x008c0d35660200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df677578eb4297cab4fca1239773f757a4d13a01": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002309df96687e44280bb72c3818358faeeb699c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928904226cfa81b91131b31a7eebca8ca2d9677bf0de": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e60cd5cfd2a79cb84942b411750fae1f800b5dde": "0x0066172ede4c06000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999c72a739535fef15968b080611b4752a564a3f8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf0489ae7bbf3b7321841f3ce9db682a6b0cf612": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c6a412544ca646cffb8dcee7e8041f1c8c050000": "0x8c23324b0cb29e4fd1a68cb08febe58b50e39d8afdb5f752d6c26c8ba52fc00200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977b1ec653cb5acf9b5e95dc259928fc766d0ac22e": "0x006ce3e337a800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289082d3e0f04664b65127876e9a05e2183451c792a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979bb987d0bfab369b9eca904b842723670584a5fe": "0x00000e8308e409000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002a7fd49620dac7ed03ba8cdd224ec2ddd16a1c": "0x00f8b460847c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397720bb1fa61910880dcfb5256a4b2378cd5d8f563": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339759674388ca17d95cf03ca527665f789ac10bf4f1": "0x000472e3852901000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea9d6a9ff692b9616f90f983f2e2aae2ca3c9186": "0x00f889cfe91900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e723454d7ca777999065bd370faaf671b469149e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890028f8743d32aa2c22d2eb1b415c64d3fb49ebad": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f385662f28eb02ccd3da6d3a370777cf73e68306": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d064beb03134e27c7ea7635c6dbaa993b3b54819217b3b50838fd21cecfedf725": "0x687f956a18fd757f21ff2c1f0334c589a6bd4d1b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970055996baa3a392a18f78afc52a0fa967e6206e0": "0x0052f09cb80800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb4576a033caf3ea0eb8a9545b26fef07ee78115": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d013158d85a214417ba437399a5dafce6d040000": "0xccdab8025bb63660540679cce9993fbbfa4a0d0c7ad4704d7d0a04e4be9c6b2600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51905a3b2efee31b5241c157d7ca1fc38661010000": "0xc63e44ad328b36535b7ff697686bfa43c8b009e96b263aab1a37933abfbcb13800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a1878a2deff652de8f84322fbc6f3116e643c65ba2bac59244e64c91382ba4e": "0x002bd178dc5ec5ae344d367d4a97281f63736d7b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004deef731d0998523980400c6be915b827d4a17": "0x006297f4340500000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899ddac6c981572aa3f4ab7ffa3d64356d94093206": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513a5e670f9ec192f1b4db9f4471061300a0030000": "0x2a85f847dd5d86132513b8e5db91d5a05d15d615c121ebcda24f09e496a7390100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243eaab1f865f5fef8b614c6b2468333205122cd5f7": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70472afbf636a8e281850e5a0700ce70b2ce675bb2038e92b134fd7f5d02bf0b": "0xe73a25b58bf440d8ad53eb773f412a4e89e22719", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339728020c484d59bc36b2741d5aa1e1d48e6e3ab0e8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339701772953ed3b69349088ae7824c649d6dcd0cb1e": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890026eb71a83ff1c11b7a516768a7449e27ff565a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db6caa98b3af02040bc59ac2086370f722bb98f22031f65f56fa9a5d2fbf8d849": "0x00b01d06372d7bfdf7ddacb9b11037e024377810", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397001a3929769b8f2f809aad807767b5e2c0a9e27e": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970072d5c92b77a0ca227964a4dfb304acadc78a05": "0x00e4d5530b1e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd8bd9c7e5df52ce11d6370096388ebc0ce1d165fb610382be7f322f78eaef401": "0x80a8bca8a6bfe60479f523c10c459ff6384760c2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700958aa22920b759f069b570b275e2f9034ad0b9": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009f4a65c06d5fb189b88f998eb9cd5e88f16708": "0x00fe0f93981100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762288f785a33c2318f0244dfe24748a9b444f8e9": "0x0060a23c5e6c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899324439bdee04087564a0c4d01fd94fc5240f88f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899c2746e9042bc252215d3153d0592bc44f28b2f0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a01b1820b48fa4f1866f485e6351659beed55d2a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723b7bf89200663f958f11c7d495f9dfa793b8ef2": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005dd1c702c3fcbca5f63b3ab931b15e03b3c9ed": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eefc4631700701e9d546fb7451705dc83b0731": "0x00ba4f31a30800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f80da45d4b487b5dfabcd2b85478a6730d798c2": "0x00a8b75ddc2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b96841cabbc7dbd69ef0cf8f81dff3c8a5e21570": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002c2d84a889df4bdab0175a1c4487f67adacff9": "0x00fa444440aa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900449ebfbdd1a6e11dc4d7b458d4851efbb06778": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004c54887f268bb0e5ed906f779d6ac081c11660": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002a9013053f71ba888e54a8f4896a5cea18f904": "0x00eca039a32700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979ddac6c981572aa3f4ab7ffa3d64356d94093206": "0x00a6c8b2dd6324000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289669b996dfbf62da2ddf0c9ceeac503b920671639": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee1fae10668204a6a11d73f1dfba264e212d3286": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007cd4fdb6a94978efcb1997af675dd6e4bbe1d1": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e0ed608adb4488caaa5b7ae3e39f3d7ff7487b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e51231daa306acf16eac34a864564ca36b262a1f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a5fa029a852ac699897b9bac268e3baaa9c920fc37fae630f62a726b1f25840": "0x008fc7cbadffbd0d7fe44f8dfd60a79d721a1c9c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973fe5d6a2d1caba760006007687adca8661a252f4": "0x001efb11781e02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b7ce6873ee9cd4a462a3e13fc8dd93d9a40ae5ba": "0x0032f4233ff602000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967494fb2a324220f917b9f9d6f6cfe72093d4cae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974514bcb1596297d8a9110c03306b47429203aaaa": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973890a960391f2a35e00e7fb86ddd1637b0d5ace9": "0x004e67f401e000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e83319b827857d8d696d6f6e805e5ab03e0bc62a8fd3fded0b09ac04c6192796873b38abceffdbd1548f35f61a": "0x5809fd84af6483070acbb92378e3498dbc02fb47f8e97f006bb83f60d7b2b15d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6fe74155a9b6733a8ac7b3836e38927d7a761b0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0453de8b68a795494ce1ce969819ede9bf795d7e1b389de4f5b01b6fe1118404": "0x43a6edd95e865b50426330da71638b56f2a75c21", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ee48f23c4b73cbfadebf37cbf7d73fc41469f79b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965076dd6f1438dea38b5901315208ee437482051": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339724094ad3da60814fa50da15508539effa329a1b8": "0x0088d21c5b0f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4a1d7eb798b449b44466ddc54525343cce18396743aa708d1ec25f870e37cf71": "0x48299f5998fbdc5898ac71e8221014a7124e0788", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0c59e84c73e9f41ac8dbc44eada4bd908a07f05": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519779622e5d653566d45156fe31ce034067060000": "0x22f738ac3bf4393d7968dfee80d6fac4d0457c0e80b56e4d599b40d7b4a3e34700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5196949239f3bcf14cd5b90a9fae4e8ab91f020000": "0x7c9e58caac08b868c221d0347c32a43e1ca416ee023125bd2f43b590f2c58e3900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289893a98ff8d6d8d13cb095ca1ee3f9a70bf9bbaa8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b0c4f552eee0531a134802d847c8f2fa0ca4e79": "0x0010a125955101000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5057dbc6c810eddf1e13d94305854ab72621bbe9566b117f69e705bdbaa9143d": "0xb20a9355f834dc352aad5ab9bb4edef1d45a37ed", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bd5f99e04c74736c9af2996d0b15c3f8165207": "0x00a02b27a25b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898963d38fea40b7cb37c9bb2c4d3252415f0b6d65": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397111c06a2f9ca5975c5c2803ce2ba4517e5361b56": "0x002484462f7d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516f629698caa69928b42466c28582a117b9070000": "0x78431453addcdf3e1ae922819e854136abd32cf2937ae9c84329f1eb92a15b7100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ccd8ff59612d4108d9bbe5f16add545efc6fdbe": "0x00a014e3322600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0e3eec80e1f333baf219d42661731c044052704": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513c0990748d50ed1b16b371d96daed0ea14060000": "0xce855e2b5a5260a655291157b6517146f10888ca83cb17609b906a401681a14500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6c6cae8ad5e77ec2b3c9df3df6c139a3e824193b1c9f0ba69cc6e4c01e867a61": "0x331ca0d8ac0d809e8e6031769d5318589a469e0d", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516d8d3acd6eceef751ba2291fb3788d388e060000": "0xba52bca4f4d427db7c58d6e341ea01f2e5374c826a11fa6d4ab5f0a1c6f13f0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970094803d665f06fae41ff86b05c81413ca8a8a35": "0x00a27b4c1d6400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974209c9ea64fb4fa437eb950b3839a43c99d96c06": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d39e54a89f737272fc97f2a35b25e9bb5b0265a2d78749965aee5c0986e4c23ec": "0x27786aebb2cd05b2fecede13382aabc3a838c69d", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a0669f20ddc7e3feea1e2df54372a8776fc42e4b1997f3f95fac2a962f3367b": "0xa42264114e13a067ac2baca439e9ec5df20c8819", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0be7b175484ca4b6ed2490439ceaebd1c83c400": "0x0062b3e8e00200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a24d20be9357d2ea5d385ae82bb06015260533d800c23145dbac4b1cfee7f77": "0x0055a15e869bb215e605335181284aee8be30a50", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc62a133f277af4f8d937c5720bc59904ab1d48e59820789cae9e326a0c45e158": "0x7574855f00481cddf4c103ae36ddf6e042e5d367", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5e6bfb60d6b71fe80ee70912e01de904de80da6da39d1128f210e53db3c71853": "0x43a125a9461625e72cf17558f1c8b3b653347686", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890082f8170db9a32e8cfed10aaaca5cba2c20eee2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894b7530fd33209c28c18e254816adf0e2f065be7e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289611ef0a18a260834d1a063bd279c8f4dfe6f37c0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dd76301e7c4b342f1d805b7205db98f6c1611ad7": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928962288f785a33c2318f0244dfe24748a9b444f8e9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa70dbd775c74c3182ccf34636c63637b49a8f56": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289017a5d5fcc1bf0ff50080df6b62f484e96c5831d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949fa2629dd5ba6ece667bf6eadf174d2c8195cf4": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d603153efe4c60f146d61b66d5c9f4a9b469291aa260899bd99083d755a28923d": "0x83730c5d67dc5740a2ced307a2612e4a337dc46e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700a1b46319be9163b8ae30dbe506235608a563dc": "0x00cc5d68c87a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700f57f2f7af6b196ff8cda28f9ea27010464d009": "0x00ae8f7afb2300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515f7c458492c7dd9d734d6600897fc393c1000000": "0x0a4146e5d4eb7d13aa83c9a86ddb78f4b68b6a4f4c4410fbbfae65c2ae7f8f7600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339707ef90799d9df56a442e958d6bcbb274f2f9bd55": "0x00d83b74c6278e000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397539f0f7f1e8e7aa08d822213305eb6e40c09ee44": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ad2f45a879431ad25fd8ecb47119e20b86040b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928947b340a7cd29bfa96a17c1685f61a67f0c7de422": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928978402f084d2219d4844e5446ce4e67fba23b9d1e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898036c27fab2691804b28b9f47239e64c15e249bf": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397addb5210dce9127918db041caee93be7b50ce633": "0x008a74cb221f0d000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d3396c5b7ada618bb851ef905bddd1bbbf4379": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975d67096571f54542c5950d22122a030c308e7ecb": "0x00a0724e180900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b2d0d59cd5f2404e8b84aac4558d85fd81080000": "0xf3a6a9b086181a0005de487ea5fd72fe7066d056d7c7b9d6572e0f609925f3dd00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700fa022c7a8d5712e902569e7dbefc471919a1ad": "0x003036d4980900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e6d7485cbe990acc1ad0ee9e8ccf39c0c93440e": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397da0e34cfc36d47a3e0c08d8fdb0ede1408c7aa3d": "0x0082313f7f2d19010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cc04cd98da89a9172372aef4b62bedecd01a7f5a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d48e5f2ba6ff67730b0ac46f70411fb5d836c8981bd1a239fe6ef450ec72ae008": "0x00c063dddb0309717f742363085e29ca9b097db6", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979936b02740624946720db39a34ab4f5ce0c11ab9": "0x00a0724e180900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51abdf023635965214039f0930779e5fdfbd040000": "0xdc940c013d2869a42dfbdef9882e33b67ae45dd42494db04d49feef8dc2a680400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512341807f99d624ffb36989b5d85b51306a040000": "0x86dd8c48657e9cb0e83e44d630c8e1cf761e9b92329484c28fe6649a4b7efb5f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970dc2c13dd88f9aae93a65e7e24b07a39e1d94ed0": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d70464a147925dde45821d92e07a49082107b862": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e31e4be4a7c65fbf14ff16ed654bd06b3a1c6750": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5a0d7d8d403f371985fcb5c4dd9527bf82ee4ab": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824313376a50540351f4d0242e20256e857a80bc86b0": "0x00408ab5c74301000000000000000000a4ee0b0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339766dbb95b55759347745b8580661c049dc211bff2": "0x0012a552ef6000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824341f2f7387969ac7c06fa49a29fc479c22a9ec8e6": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700659ec26a98fab3ed365db68d56a31d005cad3f": "0x00c6ac59614e01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727fad8fa4f7ab0d981f0a5635cce2895f786e59a": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bed32016ccb33d7ae3eb165cbf37c7d23e35da90": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c05217770e1cae59d85c04f333cabfde7c7dbefb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899d979604f1633bd31944245b5f6d183adebcf10a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f2deb52656ec09d473daf4a2a425dd930e050000": "0x70001bb5611ed06bc17a2d36520bc84621baca6e76448ef632aec450edb0c97100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a03ae20d63f42ac899a002627267b2b98dcb922812431f7e983a9632d2aac3c": "0x0062bcd4cbb3f4501caa19a2abae06c7dad957e7", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d58342df06e837a7ff38096d1169b1f87938fd88bd84c81edcf5900fc525e791b": "0x002408a2f9bbf1fee7a53eb361f8eb2ce47aa6af", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5198d8fa7a7d419b990706565c5911dc78b2080000": "0xe2d126c3dffe301385f3d6da21756147d8f58040a9021e4196a89fffa2800a4800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d34ec6782d6aa76c498734281a7118615544a986f39bcdb18fd3542fe567d044d": "0x67db7a2aa35266295c4e478f2f6f1a1f6663e0c0", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78c8003d8becb1414e373f12bdafaee23c760cda6aa4f2421bd424472995d707": "0xf220d58015031403687716a43c54f64dc99713b6", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da21f09d50a9e3c76c519e0f59865a8ff370180e83a6058392e5a0e64f8b9a333": "0xa04a8b46187fc60ec1754b78c6489f8918941321", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f38865dac042397b42a80a2cdd54eaf32d439754": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890084e0ea2823277102b3701b0b29d974c29e5e3f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a8beea0a04b6f97bb39cff19803de453ef4cc02": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289111c06a2f9ca5975c5c2803ce2ba4517e5361b56": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c4a157e6363fb44cf9a3edaabeec6657914f8a1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898134fae7112d109c4dd3a1f09aac75f2372cdf0b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971241b9a94b7cbd63c50a9fa35b1e370fc583cb00": "0x00ca26e4674802000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eaa3371c03ec84b98706abf06bfca8b85956bd": "0x00c0a31bf09801000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005789f1339729bd51c51cc221efaaeb571b6dfb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893cd0266a7d638588e79fa9b471fb4c2d6072e4d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928980872129a96f429312a717e2fab264562b1254d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243fa93a39e60a804ed41e1bdfd38badd4197e6a977": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d70fb86ded71ec9629d9edd8f664d277ca1695b56c069cc710c823f6eb7ce0917": "0x005ba629a682cfc064d0f7e35710819889fa357b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339782d31226f14b0b79aaa950cfdd01ad248765ad20": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a4f4bd2ebfde2b52565fcf21498d1fed82347dbe23c16cc499fa3e194016558": "0x4b78bdc1a48d2186c3a5c3c8c0892ef47155f85d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f67a905cd6e24183abe1bd4718aaba22c520d02": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899e8014d80afe8da0e24e90539b864794c6981a0a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f74ff8fec69a8691f8ff0493dba28b57fe3b11a4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928970bc832c319132b534d1e32eb24a5a58a29f2624": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b8577dadcf48e02e17c649edf5185844dd2df05c": "0x00ba1ae7383a03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890022bcca7fea62918f9412994bde69b9a396e446": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cb4e4ab1d79759d29b58116ef6c0158298a0d12d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519e033ee38dd04dbca2c771088b65f816ce050000": "0x520bb8772cb80655102c3c0395b92b8bbe820dcb8d8ef656bdc2f15cf2701c4900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970f7f54dc0421d8b06c07e3d872730fa111e1aa67": "0x0020034cf68f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b466ce9b46756db2360a5211200dd0f3a050000": "0xd0a09fefba656f157e715f18083ca46628c3646143daaa0f3f9ac171e306f35000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890075cfddebf8f19740296cad7870516db11db25a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009b60368d141bc267a201d3024cd8c68c5968df": "0x00442e98972f06000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ff3d81dd18320c1488c8a4a768a1ce5a1040000": "0x525c90c5a8fac52e9992258bc4bf9b8de7f812b172afef45147ddc56ef23731f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5146a76b2bace61b4088fc1a405de25b7fee030000": "0x38a295559d8977464fd8cdd133f8805f2388e42a6e009219247048a27d9ac06b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974af9fe0d55c749c5fa4eac73c660afe9614c926f": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a6dce6de865f10bffa3585eb4422532406050000": "0x1472ed23d9d8b62b09fa74698626869e65808583bcc382d8239b7da80024843d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1e1fa2e8cd46e066c37ba6ab79822b0217bc35122349367473f7fd0851d3b224": "0x0b3967aac9abb324d90ba784b0a4ed41d2a7c257", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928967936306c1490db7c491b0fe56bcf067ede1fd28": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1eacff2415e856692ddc43aa3dc4e8f965353af039e2efe4a70d6accb6e76625": "0x00de002b79aade8d38abb85617f6dff10f60917b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397006dcb8ce8e81b15ea955599cbd14b0532da2d0f": "0x0030dc8f48a101000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243003b3575e3870ff8d5dc6114539250b359194aa2": "0x0040f09bbce1080000000000000000008f4c5f0e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700dbddc3563c920884f1efd111c93ff30d3d8465": "0x00aede25018b02000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339786bc373e025f772a169e0c3a1f973f8725979169": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d52528ac5266c38e3558705368e9627a53290f0620a464fd74378bf6fce3f4c5a": "0x1add1af6a3949b9613922f9dd9cc3c98d003d5fa", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289635954403448b9f55655fd5dbcc9675e8a4b8109": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc6abe24151bd4bd9a8a3c8e578e649d96f27467749cd5198bda48388de2a42e": "0x9c2746e9042bc252215d3153d0592bc44f28b2f0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339775485be7dc5d7e1218052accd222e75d4484df1c": "0x00be174c553800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900510782b5d5bf4c408ad8a18c4cb7eaaaf592d0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897363ce9c3118275a73211c2746432167ea95ebb4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e124cb3fbfa4b20bd4ac9715bba413bce7040000": "0xa2c71c01fae573da0ddcf3a0f10c28e5400093c72eec182b1a141c4dfb4a8a0200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dba1c5969994434143ad0966f1e785de075b8e67": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51432bf4cadba9bba1999f217826c4f55558040000": "0x38258ff5251b93f46034c7e4ad5eccef902a733ac24cd1db66549041273ec23800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e8209f6505dc718027be561be842318187216bc2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a8c2c0007f4f50045241bf96aa1934b0dda2528d": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928930f0056172b5a1432a49c44b0c5bdff96a7fb54a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e629f5ed94561a2e8a2572b46eef3bfb4419162a": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289331ca0d8ac0d809e8e6031769d5318589a469e0d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c43ec0fb4c71b599ab3b5e9e6fbd89553eb615d2": "0x002a911003cb01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5196ff67e4b5330a89cb59d07afd6462cec6010000": "0x388610ae23e60ed846aaed8241eff3c792915b98bed9c1eea8f0a8defd2b976d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002e54f5a746d8af042121ad2129c4240bf460a2": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973dd62544630d94aed21653ed9ec15810cc759a55": "0x000484564a1300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437a419133257993a9af281933febc870657c764d3": "0x0000b605da79630000000000000000004426f8a000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ffd011cc6737e113dc8ba4b2cc294e656e9d8f00": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928937c5bf8acb3140f17819ecb4dccbf2e66dff9ec6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7631a588d157e5f7eaccb276b39ec6e0fe033574d07139c1354763e122a4d065": "0x206dcd656eb235659735538e8c7e708ba0c3779d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970628dae391a37ccb6ccae7e6b6495c2622d69cda": "0x007a55aa1ceb0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970004ed6ee7f9141133026274973ed0ee4ce84f65": "0x0058909b1a3e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5109d914ca781a438ea1d69234460363a59a070000": "0x2e2409b5ef509e1e584584edc945545f42fcbb3f288f3355e9194206b4ce773f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000077e89a2702e5438d2be4f7e8744a5ee2b60a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898d6fbc613b4bedf87e57a6134fb72508099bc089": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397029ecc9d77295d1126c333cb1e1bdf3ceea8d515": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339736f44cf83a35e43c5ac7d775f24a11e6a874a85f": "0x004c2862d02b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a482566e63d032af218a8d65caeeda5dec73e4b4": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d828fd8ddaf7415bed383c5732e236d718bdbcadc1790ada6e27dfa87f9e74a58": "0x29c0e5b31ccbcc929e001a4828a62e09bd307688", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282437735e8af95538d6b436e3f63db0233b46f23aa08": "0x0000b0d140d30f000000000000000000bea09b1900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752e55f169adf75007081d795987122cf82af8e2d": "0x000aa1d3ec1f01000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51388560f70625e5fd942e32874fb5d94603040000": "0x6ee274ce5c8a1dca1db4d84ac8e9d7164148b088247f6647596573a52684395800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397994625b177e36e65a06118684707c19a62194586": "0x00f4fb4e8b3a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bcaebcdced422e8079231b446d2b8abd50000000": "0x18d97c8a8030d9450e706a8affb50f35b961b348606433e47c35173f4691d14400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890549c3f578615e95f58e521a726269b6c1985dd5": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2bba0c19b621759defe85c49e74d41dc70d6cac1138553207a8c921b6db705b": "0x6d508a1452fc1ae7b10b6e858d75e669536fea16", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a1cac24ee6eb326f1640c5c97b8a2e260b4452aa": "0x0038b8458c2e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc2fc92e6992a16358fcc7a4d816f46056c0f6d231c33d8cc2def79cde45d226a": "0x009e02b21abefc7ecc1f2b11700b49106d7d552b", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928912ecdad9268108d4cdb6c21da81e447ab12ad84d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518bfbdeb4a760ee37bd33447838d37d5a94070000": "0x6a3c186d9e7a9a84043a4a6e62213c376e7dc913be683e2c77c6f61f9e67c04500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bdacb2381dea4e23621e4e3f5c8f0ae020cfc688": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700df109c62f7e61eb2531f8751a9202beb4f5436": "0x005e737e69fa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894bcdf08359aeae40aafdd2cc282e7c1fbb2d310a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bebd4c731ec56e072e94cb0617bb47783ef3741d": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928927d8519774c77bab85031463f236c702c7ee8bd7": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282436a37135f77421be9d9e5c15284188e9658207dba": "0x0070139ed73508000000000000000000e124490d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970026eb71a83ff1c11b7a516768a7449e27ff565a": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d660e0a01a5850b0e4c1c447a8d4f41b9cae63d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c72c867cc89ccb922cda5821ffe7f060d8603d": "0x000aa1d3ec1f01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289801aa940bf8ac12429d35c2cbf0a13b61758bd4e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928958a9d04522df5a3c7e1af52192b89d9c952b338d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976407c0c25a5ac315d64b8eea2f315983f4096f7b": "0x00ec2501941c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fcfee4691f55d3ee2276a75fa57b784d98ffd1": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243546d80fbdadde160e5d4a3482bbdbf310163192c": "0x0040e59c301200000000000000000000346f1d0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d30c76c1fbe70308d47eac55e1bfdbc77cdd577c1cfdba04ee225d5057bcf3307": "0xaa71944087a4242e157bb28a8a1b110274228ea5", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a59c51409b63f4900cc5c90374036d3a98f7673b": "0x00d0c2bb340301000000000000000000aa70a30100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339763a673778cb652db8fe7b320da78842e364c40eb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890054e99a8a384386279936d42dcbabb4a710ee74": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc63e44ad328b36535b7ff697686bfa43c8b009e96b263aab1a37933abfbcb138": "0x0004ed6ee7f9141133026274973ed0ee4ce84f65", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339798c97b38d63ba67d0770cdcf8115a5c8a470e937": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289928318b2e90c8b1a5255d03ee5eb3a1533e3dbea": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972063700c6e019a814d24f514ec6512711c399826": "0x004e1d826b2608000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b43d777a3640c4b0d674668f57ed75b7fc84ea82": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bb9f0597834168a78ec443f09f75e3d62ee98dd4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e3c4d881755355b58527e1f09a5507808de5f9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a045d6728561c3b5f1978c235e83331e4f9d54": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970c69d0cdaf9abd8b01a100387d4c5ccba3b467f4": "0x00dc597e469902000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900778318977af805d19aecd1aec84802cc0672b2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974bd120e887cc82285aff8408dc208ed32b132bb3": "0x00ba96511c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978067113652df86032aa683acd46c0b2abd8c4a36": "0x0080ca39612400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bd4e8aafa7d3e1d9fc46c5ca788d6dcd1ba873": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397275b51c1557dec3d252df5984bd2ce9e1f7429ad": "0x00bcd2c49e0800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289097b2eece415aa2a4a7b1e0c310c81ea3ee1e292": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e7d980e385eead4e52d1daf803f4f5869799cd12f55a41031f3d9d93b52f882": "0xba10276d69a11c6ca944dcfecd669325b67614eb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d0e8e4ab292f43b95ab94c1014d22abc9adffd": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0cc283d935edb5c0df5e29b111534c101fa0280": "0x0000fd137b2a5c010000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970e696320539189bf06f28dc0c7b7ece1880e14e4": "0x008057d73a4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d7200c399634a9dbbf59db9f48685ec22ea4acb7": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62e11b08e75dca26b32d2cddbbb7c9acccd504aa7dd2ecb41a7e30ff08baca00": "0x50ef20ae1ec6ca0229f4a3195401f1256985bfea", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897eba0c6ce3bc5bba68807e2f390ed997a5f78763": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c44438ca119cb3f91dee8f514f435f2d88c338f": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f95ca3e58c701eff23bcacbfc3c889ec6dc4a8ed": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a3e730a655dc85eb0752491b2b95792e5c080000": "0x3afa3ce88a657a1c8bfb69da7910fbf48b36af6246ab91c868d410338b998a3600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977e22e58855cad471e60b297f1a48c34f44091132": "0x00d6d9e581e101000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518121e7d56c6d2afdf021e0c25ddf8fc305040000": "0x729324ff6798093939a73546e0f3d53a9cd7d4e938d238145c9422ce9f0beb0700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51064fe2eef017486210a9cf90c3dedbad2d050000": "0xe4e822f53c6197f69e968d91b2e0d7ef65d1c4a870cecad43f82195e7841e51a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002537ce06f4d8d67fa5c81c75dda886efb646b2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892553a9aa6cdb203895a904e98f6d2437be0805ce": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a09493ecfecb6c710157bba28443bf28bed792af": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339768616b50e3e0eaed3c1b12fc53162e335e0853c1": "0x00f0ab75a40d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12e4fa92d67dc73b2ae4a7eab1451467be74b56b03d7892cd31f10ba3991474a": "0x13d5d590be45f86e1c1297073951ad7abfb746e4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ab10a4c4d9b566830c833a90c865d859770016": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2e6ebc8ca688165b98479e557e0f1722d08cc23a910b99d73152f8777f6a3c16": "0xbfe953b6bb77bf8c7851141ca684c5dcfd6cb925", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973dbc5ff979d0f30d65c33f684eb4b32cb4cfd3cb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d97e73afd7e39b59832ce426537ce534bb5a34a9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da65b765fa2b4a31d06732e463b6c0ddcbfc615ec83d94ec4570512254b6d0b43": "0xd5c914d49eef7110f4b178ade972bafcdf83f994", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a2e3a0c50956a2c664e9cb7783dc9dcce718daff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be1c575e4d30176199bad4b2fcf7217a6df20f16": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289163e5addf68d6e21695adfe1f8fbb33c78d9cd4a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a71f095a32e886f926f17c350b1dba021d00d50b": "0x00aecaf4c90900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8a8d6adb510e76876d66dd0ce3abae5e37781ae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339756da5ac544ffd544d8c78afba72665b79dd1b87b": "0x00d22374f95f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb8483ad49c7987e37dd191dbc834054df080000": "0x680f6ff2de0a6401afa65d55ba9bf6f2cb6043914916950ad51e3eade0f0d67700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df73baa66d4746e8447877fe051d6dffa85811dcd14c6dceeb29e011b1514f23e": "0x0022d7796a2d5977267948e5ffba8b9fe04c3da5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339791ea6ea479dcc9c599dbf6a410cc7ea3798d3351": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da06c4e59af8d86d8b552887762255c830d79b847a6648210ca6b24d0dbba0e2d": "0x210f50483da86a563e049ccc0e261835a63b98ee", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333977f88b00db27a500fbfa7ebc9c3caa2dea6f59d5b": "0x0002422ba50900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751afd27a799424910c5bfbe69646a6f87cc8b73d": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9841d92c40dfe289a0ad0ba13bc970838226f9d9baf089655588eac023e3b179": "0xe48fa43331d29570366a4244398aeb56756467cb", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc0b8e03e1b852120a5cba39dffcfd8dafd1a882472200210c3a8e6a51bb1c020": "0xe0f3ca995aadd1438b56bd795335a723114ae98e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726c96b604abf5871c32e63ae7be295008967a47f": "0x003ab9a30d2400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dfc0d23727263d4adb6de5b630ef74983623192544a7d3c523211c46b2ffbfd79": "0xe087bc674e53b1b48ca0d8bd6691eaaea2ff78dc", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900360778f53e71ee3aa3ba78e9b6728ca5917b3b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da44cef17a2676c816212c314fd6b6c46fc1c3d88c888188a0bcd272e25059d3d": "0x00bf2209a10d9ffda04bf453bcb3e367f3eb6756", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c19f28184295a37171703d21b242216a1b10ba3c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979a94771e7e73f9d8d6e880cfb12cab4e9573c45e": "0x0018b092324802000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eb8e47a06707a3dfb17728f8961009adb88eb8": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4ac3e0cbc1bf2889a7d39e3a2d4f3f1a2ea203367207c98c62a0d7fddaa22510": "0x0051e28f46719ed3e65d93c5c172bfe0ed982b84", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895140e3aa403d274eaa6f6b4af30e2c050c1ec8d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003cefd9d6241b8d10bd2e4d9047f6174a4ddca6": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7a793f1a32c34ed50dad1a047fd58ba7d6babcc59089bf1c8525ea8c9d813046": "0x00ac0f75d0d139301dd8d666526b02234220b14a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890dc2c13dd88f9aae93a65e7e24b07a39e1d94ed0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ad2ddf4425a05406b95be23d2d66c1b11844c28": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d98fa099942b9179688793b146505935d64def65": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e97926a75f3f203a4253193af231d3e778080000": "0xed57d5f73180b6e247ca3f4fce025fb1a82459d86527bbaaef28c2f4a4eeae6900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f8edb714fbe38dad3e6a03dc61fb36fc4c37114": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a5b68dd85f2aff5bc60ece004f36879399c242": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d86dd8c48657e9cb0e83e44d630c8e1cf761e9b92329484c28fe6649a4b7efb5f": "0xe0237d930cc0e0748cd9f00e95d88d25de6165b2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a48d6223b001e03cce2b775a968e5199a626434": "0x006c2932302b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892aabaf50bdb0b288e642f0753758ec38ee556567": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b1e522a1fbfe27af28b0f198775fd9521588000c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892b4294fc374566d487008f154cfb6701ae636196": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900472a26baddb79f1149a9589a132e5e0f762253": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890d666d51a8d222c2065f611e6aa7d4c8ff4a4bbd": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5160c9c965b3293e4bef375851e90f5cc9ca050000": "0xea5d1906782ea18165f17d2b7cc97e996d9f08f9f35d7226505fa253892a431100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b61eb7bad145d2c220180375b327c7cbe0ae9a21": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f342cae012d74fc3ecdb75e04e3b957101040000": "0x6cecea2c48271687c926a72814cfccede993dad2b803ec0d546d2bafa586c11d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972f60e0b4d918fa51fe99ec04b7b0f952fcbb7950": "0x007a4b0e500e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895bb506f259835349974c5fbf0bfd5cbd37157dfb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007fd348bf472eaaf68e58f652c082b86813bdca": "0x00e022299d8100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007fe28a2303b0943a759b036d56a73b48bd3164": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f61e40add6b7b887ffe8792aadcb6433d5209a4e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397058457cb480231445486c786db63ead914b9e1d3": "0x00009573c24800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e5da0878b3aa76231dcc38ba1c8ef7308df8bf3d50496e5d52e8ee76b9b9655": "0xa9409db5aafca9b68f43dcf38bf46d460079cc3e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc4bf2d98b12ab9b121713eafd468e3d1dd1338d": "0x00400f84b5a300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5194a51e4dab4d49c760f9eff8acd580f727070000": "0xde8f4427e9db9a35e0c832a3622287db2dcbb58b2190e6a9a697e867f8d5381800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d5162bef9ca95cab0b5469e0399878923131d36c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df65227f172a1e2e0ccf5238ba986c3ebe035b77f062ef04b43d88614cbc07502": "0x20275e007f9678e47a9f3c52ea85d68c24217a65", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928917e7adf544b8c6ab81cfd449f4154d14a61b2b29": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891bd8808429c6f5c520232fafa9dfe1ea760c5bf8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e8523b608cd42fc15c1ec89738a62fcb9e5a76": "0x00", - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c47108828a0c47dabe79cb9fc8f87fa9b4dd3447": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289db64136231a5004bf3fa556667b26e4eccc15bc5": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397739066ed2d1718fd100cec4d9f347382ec6440dc": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397eaab1f865f5fef8b614c6b2468333205122cd5f7": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0947083ab9417ea4c8a5e1cf759f3619622753fb60579c45dc65c6cdda10c56": "0x23fc17c723c870ec4bf48e71135a4446986b5d0d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb8192767e4a432cf722450cdd0985d904e6b748": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a37135f77421be9d9e5c15284188e9658207dba": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970054d65ed11bf1e5ca7f22799d64d88e7e5c38ee": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970183f3866e19384aa414dadfdb3f18395b36f631": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397967e82bac222eb299da4d0b3c47a4d2c69602fab": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afd4d2d92a53cd312df6856ea9faf6b8d9f8c3c5": "0x0002aef52d0900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d10ded14d9cffc8776745dbc613da8aa7ab6a22fa02b9d1e929ddb169e8a5445b": "0x3137346f506a2d980e1b00a5ff4801ce702448fe", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cb895cfd442db4a3f550bbe40ea5e4404c080000": "0xda6b7380d10c98da303b571403864215b403dcb77b1d9183649278f9c02c761f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a777a85e56f533ee46eb6de0825678efcec56f": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df1fe9f7ba0feab9e47684d4006ed25ad6c441a1553cef62748545ea575392af5": "0x5d5c3f6832e88fd28cf40a1f25684b7ff99a66a5", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339762431669ffdeeafb1d3b071ceebe443011b8d6ab": "0x00946f32c2d301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994ec83fc57394504eb57001350f2b5d4e6f7c5b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928996f568fd6311f0fcf6c8fb0d017f4b7a85f5dd38": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cc3d336002054a3215fd3cd1f00f08bcc494fbcb": "0x00f8bf551c9d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002f331dd9949283c6f9f9b1833dfcdcba874740": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ad9acdc0fd7c7e32f899379a3c56ca18a50c41": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e6a8d75bc5e3c79b23e45d6ff505015db1b0b753": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900bbb1ea6d7b0b887163d6e32cbdf53e87187cb3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289924c251902924c7dbd4cbf166d42757fb2d146cb": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d78fd3865bb8c8a833369aea5b5014df0d9e860a390391250f367fbe5771a2b49": "0xdd04defd841f7efce21f5c63f123baacc61b796c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976cc5d8a4f16d0dd7122bc1d2759703ee9013c237": "0x0018dc4ea44500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f04a8b3701556ebe9ff89b64058f0875ba4366e3": "0x004c44f1ae0b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002cc28b6e9a1c0757029c8e42378e7ce97021e8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e9ffec62661647c99718d1e2783261291a545747": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891b1a105919ffc05d685f342385d5aa4ff4260383": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f2a9c275221468f59ac010f639c06615bcdc8076": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f947f05d2b295c924a3e6058771180cbb75cd60a": "0x005eb12cde1700000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bce2d382ebe2620439203c9ad7b86d48ed070000": "0xa21f09d50a9e3c76c519e0f59865a8ff370180e83a6058392e5a0e64f8b9a33300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51be1f34fe35eda8b84bd60fb3bc82aef748070000": "0x7e6b597b7c166901e03ec2d436ab4de5185b7ad1a59795b90cc403612e17b27300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974cf7037aeb2962a18b2e08aa140f07cb53e1a957": "0x00ccf483926900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5158d8a7493e162d17c9f71f89cb8cbc38de060000": "0x62bac995e1409297460e9ba42a01bba4c01e2740fcaea01950402ee0a51f802200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a4252f6d64dad6c3c4b8154a21c2103f6271822a5120cfa4725fbb7f7372c70": "0x1fba1a1a641591737a3ba3e7eb236d2cfafdeb69", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c4ea7d30d01e1d8438dbbea89d44d235a46aca": "0x002695f2b11300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ee43bc46973fb91459bbeea3c7f637c6efef128": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339792ad1b3d75fba67d54663da9fc848a8ade10fa67": "0x00540ec8632600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519d4cc1da6a0332ad3bed7fb48b553d26b9080000": "0x2c75b578ae2bfc003b5fca59f1e26630652005a07144bba9a75ed44a00fed75100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928928046b3cdb72ce8eac1e8953d17727f87dd6ff2f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bee33ac5520a2245cbf8288e768a5cc26927cddf": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d438d034340c787f15207a158d94c62b36dedf8c7314451d196b039ba2e5c6bf5": "0xe7465a8034887a0004d4ed2c4219c2f5c22cb114", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ad379b2518f722776a3b377ad2329afaca060000": "0x9abddb3e03b3abda683c57883445f02d6f6902efd36bae7007e1a71f37368f0d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe550bc1088982fa32049171142e42954f3294d4": "0x008435f8106000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890028a86e047f2fe0834d472d87728dfb50774251": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008e158b389d89e9f98ab781725f34f5d06e7ed0": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5ae1ab6d1fffe69e07bae35aa873beb9f1a4352134629535ddcb0a9bc5313974": "0xe0fb96e2ba70b2c330c297339cb535629f887bf0", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d18ad345b8bea4ce83dfad12d60239dcd63d92a7d7ff2b8e529569c8fa5fe0442": "0x38103bda64188813b4d890ecd742d389589525bf", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000abf987d6d132cd1477b2c9f1fca2ffc0a4375": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005325ce1235df371bf5e8671ba58f7bc2d549c1": "0x00c611f5847e16000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397799217756e33b324e3af7439e0645c0d65b614a5": "0x00ac0b28f31102000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972215457b391a2660337b75568ec05adaec457502": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976b80b7d073b3ed63690c0962d061dbd88cef4f64": "0x00e26fad98e612000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896c583fd0876ecf8c8497bbcb3f8e888f2ee1c214": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ad41e9d6e1fa47f1f6bcc63bd0327009590a47b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974d300b561ea06abe10d38ad05319e5d2ea641802": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970446eed77a750a57751b3b1f294ed9a72945cd25": "0x00fcec52e30d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62f4e441bde73fd9195635f4706bd275b8f28994a7b24caac04fee952422ad38": "0x002deff295e375a68734582a3ed0f7786b7e92af", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5159705ade22e03ade30f00a37b1c9f34d9e040000": "0xde880ff77037dce39d035916f70a67006ee696b9cf9b4de4c61360194363037800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700de002b79aade8d38abb85617f6dff10f60917b": "0x00e61c8dbda200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979d6b708f01044bc2d23ac51ed5dbc7563c46a6fd": "0x007e15ac953900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c4d620dd343cd3fe7c350707ad56680b4baae9a3": "0x0080fbbf800200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee2f123f672d5bce14e7f9dbad8cfc34146319bc": "0x00c6c5932b7300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928991e943fd3640f82f0b3577e796a9cb31724b7bc0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a44e6d1cca8226e718ee0b4f4edfa68bd3773705": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cc4b6ec090e357c968d6e38894c9e4cce1030000": "0x9004d2df7c89ba8d7d65f01056ce579d41a7216db3c8e6c28826aec6d6c21b2600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009dcd9ee2679e1a794297acdcdb9b325ed9f2d5": "0x0084449cfc2f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce78603c8966932919873970f15729482bf020697acc7b2fafc031cfc9d9fc1c": "0x2d7b42e27e2382e2d28e06bde9d82413906c6c03", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a99e74d6616ae317cbeef70401baef1383d287a3": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978acb047dc00c1633e89130375c964ba9b1e203b8": "0x00ee853eab0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d4e58becd5f1b09ee3876eb448f6a9b7fd75740b0b1498a73d53ddcc094b6bd79": "0x006dd904124038280e01c52b465f2d802b3c1783", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890014f112fdf769779b38ead59b66f955dad1b147": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923acc3516b86547dc0096ec4a3447af0ea0bfb55": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d74242c09e3519ed1c34ec0a846ccd0509227c4b23e5cfa42b7a84d75a0ba7a53": "0x3cc9063e7ac5fa8345e1f59bc32a470ccd30ca6d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c923b032f3c9641cfcbc6a909fb66b29faa5449e": "0x00806aacaf3c09000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4a6bc20742c72fafd45ff5ef53f7073d174aa51bc63126183ba20fedc251867": "0x5641519cc28def80d631baa28b949f17a6a22ad1", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e09f6bbacf54dcddfc5277a0355f2dcfe657c2d0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009325dfeed3f384e863c57455ac3d3c4809d210": "0x00d0e98a070900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928958a0056880f6490bf35430b081f49d2edf2b1915": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900099a01d4d41e7df0f2f08687d2edbf7884d99c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f4791e01db745246a89a9eb394227cabf8ab4e1c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dcc09076d5cbf29fd82ed31be066e2909af4f7af62d3b34007383e60211d4c100": "0xe9faddbdf9c03466a607fc06415ac3f129aa2dc4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900000a9c44f24e314127af63ae55b864a28d7aee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ed69230ff6fdc2362113979ad08500065c83f31": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970026ec71cb407474b48df42a58a80618c4e44e99": "0x008ee409331900000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f4b93da8b8c241808d6a44786af6d734ee080000": "0x38e9e71e1ed6e521e2fc802a333996a60fa2581b1496e9eee3665ce0994a821300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f84b835800125e729921cb11f3e4becd258d7741": "0x00407a10f35a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824361aa4b596264f9e1eabf688567e8e80080732169": "0x008053ee7ba80a000000000000000000ac283f1100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db2d89b7dbf920e6cd64997f1b3ee49c4de09327342dbbba971a362062817a24e": "0x635954403448b9f55655fd5dbcc9675e8a4b8109", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978e6365a5dad54ec79a5411b6a8100d6b25f155b8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700539df92b2c2e52a873c02479906672608fe563": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339726dc3a2b04c409af7f03783b000b2cc05020ed7c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f71ffc433df3a137c9c0a5cf08fcc3e4316e4e8e": "0x00769f7b7f5300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891fcec00a57e3900cd43cc6f187ad3deaaa27ff56": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d9835b2f0aa1bf6fa6001993cfa75dc5b040000": "0xe4a865acc76e7c89557365725832e3ba3ccaabadafdd5f1a668ff74243823c7800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8b4b80a2830d11d4843b980f06635530e993a18": "0x0060970a641c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28a3dba187141f0d7d9af3d921cfc738e52f07aeb3eb5b7814bf0912fe672a22": "0x185d5cd827f66703890387d348a796cc8538d08e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b167f576f31f640d6d8d678549db0005619be50b": "0x00181b6acc0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a7f29211d50461588ec3c6857c9ca25474c650c7d2048ef2283a2245ceaa831": "0x23a7e13e72a9844787fab89ca269940f80ae76f1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c2e763a5924cb23fc77515a19ec3cc7e7a122250": "0x00c42f04c43b03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f7a3bb54858fdc941a3be7418e1026dcfdf65d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928940f264c803b913ce7769ab4319b371b95a072103": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c7fb76d905102fbf68a981474bd26e5fa4427790": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c238a08112b845f6da8affa118efb25721090000": "0x2e0efc13ef5ef79db8c5973c8d1956a63e3310b43014dc64187bd50693c9763100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008e7bdaa3171666718763a8b46b28415c256a8d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e4c6d9d21ed31544cc123f5153d39fe65e9a9e1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900106ef113a8cb3c3a233553c4ce69ea14d88524": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c96ff8e5bccba1f29e17561d2aaf59cb6e38a9": "0x0088515494a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5197ca506b2b319ada404819036e25b93790060000": "0x0ab234c65bd20f8ecd6ad7aeb23e025b168b7a91847fa048927e2434e3cfa25c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a2e3a0c50956a2c664e9cb7783dc9dcce718daff": "0x007c97c8d60100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51219ac9c0ab255221af97151243e360777b050000": "0xece71fba2046bf700da154b046b97359c83d0e14f81b53e33161e30593571a7a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177bb609628ab4a59438539f18c4d6d2b56050000": "0x966ee7c8c9dd52e4650c99b77e62531cfec2f7611aa8b5d77ce28206faa3267e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f0f772504eca495a1e9bc3b8a1cec2b639c9df": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8621027cf6c97d46500c2978193be29b4fdc1838cf768057440793a5910dbe20": "0x00518bc639b1ace490d22790ae1ac8dc933160fb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974341633902051568199e6436ef96483c49e72dd7": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891732d95532f10ae18b2317ee75d4ab0981369f37": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a640c639421c815ad2e40be3ed98ff0eb0e446b4": "0x006897abaa5400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895ea3c5be41a73bd49b97f4cdd3eb55335baf03b3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896a6a46f3bceaa2b9799712e1d4413ce08cb8a801": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd00f2a04707472db297d54c9ac7ceaa6c6bdd05d1c12876d7ab3464ebaa20558": "0xb2deac69d3ec9489812479a2994bc068d133706a", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c417ec8432a7cc95fff6a7efee0d97555b07caab": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974504eb623e2c8ae4e61ad147b13cf978aef376ee": "0x0006e8c8f04800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c5aad719ec7f446020947e59a75f4ebcdeada5f14a43fd3e4e2cc7ae7ba0053": "0x141de041d47905ce043140c61970a5a28ca39879", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e96cfaccbc1ed061cad3ed70efd8dd74316a9b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e4992bb3d86f6734af7fd1528a658f8484936b": "0x00a6ffa0e4e304000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979af1322b1526ea42be721916e6ba232b4f001fd6": "0x00cc6bc2f1bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bffbc05987709ade08d71b36d7e36fcb7a613b": "0x00e49d354e5e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896851cab6bfadfa47246dd71528c4d519aeb85fd4": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a89681d73055acfac5c4ce4ed108c3ea7a84a59": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9232d67619fc452fad6b32e2bf06d6e1265a28c09cb6e10bc48b971092ec733c": "0x01ba3841bbe358c1b3a9310d84ba98bfac5fb318", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397445fca1e2473f0c47938979ee2cb469aca9d36b6": "0x0082663a29ff6d000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51192683c077b870422fdc89423a0d9b1546060000": "0x90592f98c1e649196327edc9212c1dde53cb8c8cb4ccbd7bbe360d0f2e40170900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d42804d00b39843601a505a8bc5f29dd23e9ed0256aca3cf207a7c9005c6bd746": "0xdec7861534b86faa8f8ae36a561fae5277da4709", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928929bff29d8193e551e089b3aad1e3937882fd9d3d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d707c94e3ad62ed919cf1eebeffe3381161c4daef849a306d698539931a08ce14": "0x656dc09b4dc821695c9de996b762b3362e00a205", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b7c29cdc876b13796be8ebbe32e10f8b8050000": "0xf45007634380d0945f4056026a04e2f546df29985da61753b225409fb8f4262800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517d0cd5cfc129a18c685de96c8d269dc64a000000": "0xe8c7ad65c15fa3ba64424a61b177382a0c5468135aecca9ca454f5e7ce4d305b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a002d19522440cd4af9636097bd510dc780f8f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f77fd2297cb28b7a104f3f4d47b19a50a1ddd451": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a57844f09543679d27a8f5ce1b6bf81bc14f021": "0x0012a3c85efa00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894af79369d49d03b92400c3b67a65b694044ead5a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d5162bef9ca95cab0b5469e0399878923131d36c": "0x00ca0a717d1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bbfb61f18a0949a5ba261b5a7054c53d5b3c93": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e0e3eec80e1f333baf219d42661731c044052704": "0x00d09172775400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f3e809c51300ca5731ae485be9885098ea8139d0": "0x005ebeb2030a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999d1efb41a2c5ce8d000599595f598e6ae9a8356": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c325e3ce706532f3b717bdd1ed6b5f412010000": "0xe02806109b735d8f9144819353a1db3dec1a4e9d44abfcd6ce67180c02e4ac2a00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d3c2f4ae8dc0dc19f736f40a615f1c026020000": "0x4410731522e26803b8e6eb6e5467d77aaa050684b95722bba660882c90a9d01500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515a5fd6372e4a5314ea7779ad3cc62cf4a4040000": "0xcce721bcf2f83777132dfe3a79be1bcb76db9b6e0deeebd3cc1adbf1b8a1286400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397226c85b4f7e53cee040b6d2f45f4fddef5d97bee": "0x00d0cfdc8cd700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003df8ef68083daaaae470187267dd53bcdb133a": "0x009c3f425b0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974678b10000b032197ae5a403058cd72096198650": "0x000af7ebba6e06010000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893890a960391f2a35e00e7fb86ddd1637b0d5ace9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000028ce0fce9e53bee386adbf4d175062b20fee": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100abaa29210df0d8c56d796350a2d268cb060000": "0xfc5d04e7ff3965c8285a2c23aa573117deeed886bbe5e3be0974f1cf0a2ff21600000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510ec52599fde54e2277e9e36639158668b7070000": "0x3ac8adb41dbcf04f2d67294fa621940d040400987e05cff6326b1318939db15900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba58db6c7bfc75aa2b8ec1c9b2624172c81f6d2391180047091dcd0cea5ec45c": "0xbc17ff2de0b6577aae386e5bfe8ab7695282a52f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513f48a4049e572ea867f9332705d8ad90ad020000": "0xb6e0bb21fa812549e3f75b92d433225455e299a0d106a5d0a1a5867ef5d3a37b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df4015230238cad5d18740a481674824e976409255571cdd91c0ba9a439b7544a": "0x08c6c136fb974c8ffec3b38e8d053791a048a0b9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a34c6bcae6f46ac6470443ccea67d937f6060c7e": "0x0062844325d300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b4c9db39245d9386585a1008f730224cef030000": "0x42efa2e57a813989da4bac4551e4010ee45003fc3f360f5202a958b2b1a2991800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5122f39e59fa4d80f72b5015375df0c56ac4070000": "0xec18887a19369a1c99fafec6d8e52b3f6d0a1af6abdab0d0ca49daa56bfdbb2600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c53bca5a649c275c951cd479dfbe21e6c4bb9fb9c94dc3fcb6a71410825f632": "0xd8cb03d06e50b85644026da3e510f15e39e65efd", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d54dc905cdef051a3b6bbce57b6e6c5edda54bcde2f34d763dad9e179ce042a32": "0x4daae42c5e89d09da39cb90f81bcb2acbfddf67c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ad2f45a879431ad25fd8ecb47119e20b86040b": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397441dae5199e8c642556707176913c2942b455251": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928952e55f169adf75007081d795987122cf82af8e2d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be7f0d32ca1cfa5d95b4c10c960a088f2080a508": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee48f23c4b73cbfadebf37cbf7d73fc41469f79b": "0x00d6c0fd102d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d545c47306c568ac5e74d5194126702c63a91639425146deb45671dd6144ef86c": "0xe63bdf498cc6781799cc23953e32dce295a95a0f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512d6538b75305db26f83b3ae0c4a084ca23090000": "0xc2511b9ebf609e66a3ead4d7eb980e9f0a6ecdfea9846726d14e45d29579207100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df46963643d40844f90c6d1b927d82f67955371cfb3523ab6c272e22a66a92334": "0x0a92d58547d1c7a1f0f340e540267f278011ce0f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289dd41dde058e870f4274deb8cb2417eef04940f61": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514b68e550bd16fa4eb661bad2f583f6ddfa070000": "0xc8ca8ddd21b83ee3a70faadf02745a57659bd0063b8844312300127a8988c10300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ce270cce389cfc09984e1e97337eb7cf1d060000": "0xe2dcfc052f7656cb9e107a9c2d0adc19d2c206bc51e3225ffffca10b83b8c21600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898889ff5b6323e71c28c26d2c34b8bb52654f00a6": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5195b18709044900f8a04d00ee67c895845a040000": "0xc2b8dfe759e221edee35ecb51b15ec454425d1e772d224e2efcecda23f7a3c5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2852dd1c93302c44657e8bab87b8c86a550e18c4a0dead775708bd6ff909b915": "0xee213d531429838906fcd09e48b7a488bcc501f4", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d510b448492a9fd2771d789bf037ed4e15ddc050000": "0x662d6d64e01bcc5f3a54341ef0bb1cbc022105de37a80558723f50a59ff6895200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b0ed4774f5cb36752a3661f8248958418d4bd1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003c6df13f3c95f12e0f3e2c82e3980d9732558b": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b9be94c7664f2ba9c444d7ab2980bb6d2c050000": "0x502937e1a131cb6646bcb72d521c894d4d3fb35f1da1c44058b7658d8d299d3600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971330b7402f677e3adc774d13164ebbd9066ce181": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e49d3022283a9fa6d64271c2f18813d5250667": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db8e2b3878594576b6226e0050abcfbd96ec61db33f60b5541e3adddb3eff284c": "0xa228f05157969366882c78be7c434dc3d66b5b19", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890097788b27b144f03715621ac2de4aab5b94c158": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d24f8b3dbcb13ea214b670cb611fe7939e20a23db19647485e01206502e64ef7b": "0x0f6550e2abcd33b14be0768e4fa62c66fcbf665f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928945d094b1790602ec766d3a81701f02ad99f3e954": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed2d649d7c8a8c8c62368e42c5717df2af5e1a33": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282431fd593bd99ed831bb189c73ad7290501597199ac": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e2a1374cfa7647e2031be60fcafec5add32295e3f65c887654f80a215ff7711": "0xc7f440d4c45c1ce7a295c788d9cbea9ff627cf8a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002b8afafdbf14bd18a1ee36bfd45a35adc783d7": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de827d83f5b7fa514c856ca4157b894148a5a2d7e05265b449422f88213d9ea4f": "0xef398a72ca7e9c352d14aa297c5c59f604c43bdc", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003b872492daab5764157df79e40d853ebbac4cd": "0x0066497f817f07000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a20a5419f34167dc1b4ed5a22a8888ea6773520a": "0x00f077ddc02b0f000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397173ba35fbb37fd281880645a2e7f8e18ba38de0c": "0x0060b7986c8800000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df804000000000000000000000000000000000000000000000000000000000000": "0xd6f5646d9e7fbee7cc907eb8e12dafa5378431e6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004e1d33f9cddab664a732b7eebe2a80d04ae413": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892967ed7db96f71cfff4626dafc29258e337a26f3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928957f0c073f9954b81dd7de5d4b33cbcea46500d8d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289aba74c2bbedd2cc9fbf53faea49cf1080aeca487": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289004996dcf23cdf72b62191ac358142615192c7c2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f6b8e05763ce13e81917c0cab8f724194abf57f2": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3413070fd675fa96164a98442f0cdaf50d6e70c25de43a5268f987f7cbf67426": "0xc24318e1ea1b011a6a84d2f83436c77bd753e840", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970013e7914c4e0368bb75176c58d7b85064ba76af": "0x00f6fb67c47c00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d416cb92370732d87025ddc68f01a6d449080000": "0x7addfa612b215eb31656bda9898be79259e308ab918ec8d61364fc1e872b47af00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890033d8e0c69970ce4aa5402658135a4977e0948e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339740f0e17c0e8d725e985840198edda545fc3a7162": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289152c7b351851c158305f51bcba4cc9570259cd6b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896503fe6dc225865a54dccca75e9410f53a35b137": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de81caeb02e5b76e68d008ebbf4e3b036b570f2d4c44064daa5d1b5efa0e5e052": "0x2317fedd4b4af7c3b6fd14cd044a2acc92ff15a0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700642d51e2ef92650e2c7308b4078864ab0d8603": "0x000c58bce01700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a0d9967935116cdbc4ca46dc114bd175c7eaefb8": "0x006677ef716501000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928948e9fc7556146598014c9b9a4f258aff8aec463c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae43aa58d1bea3f6cfe4741001f77174a074659668bd6a8ad6fffb9c34915a14": "0x008c2651bfc939ffc086fd5b5e598cdc1d662c97", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974cb26d4abc32e99e107f1cfed2b07bbadd425b79": "0x00d0ef2636a902000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900554019bc1d942aef1cbf7ee6becdab99ca91d7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289027ed05be029f65a37ae646f349adafcc9758755": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928943e0c52f9a3920e2f8c01479fdba32a8115ad332": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a1f84545ff677fdb54d955f707055dc70f05452": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fe41c316e87c3c4a6e85c965cd678de24e09bd44": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d20e5782fa85cb47b81c3eeb5186e5d5a8288c92e1cc9001c16bdc6a2c194cd4c": "0x5a6ed25e84058c2810261558ebc593216aa8d1bd", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003edcc4d34cd4a22b85b496aa33defee0ae5717": "0x00920d70945f06000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397560cd6b5772c69efe8c36ec3e1f8af3b95c66b44": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890098b67b82c0be8d4cbdcaf68c96a1bce7bf61fa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c875b446639ca898f1b3addccd107b9e1e2f09d4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df677578eb4297cab4fca1239773f757a4d13a01": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9446b359ee88fd32037b052b4d815ca777566ecb8cd6860db053a7d4454eb14f": "0x5a6e3ec695183eb5c9808f550fff6a29d2f40de6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a0094af5e7a2d052f67814b9bbc799ad6ece294": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700bc41f12063661d86d9df79c28c9a360782b478": "0x00a8b5d34bc800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899955dc870b36c6ff8c41567f6937f8277b00769c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5110572f8a179d542e6146940ac83095b8e2070000": "0x8ae76cc2cfc6f643aaebc3391da915c3e722329b4ff10bcbe6fbead4e79fa56c00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5134258e533fa096dc90377bbe390a25e744040000": "0x1600e09e1d8a1324934f83d55d5f6f503e2d91bf4270eeaefd462f24e4487e2900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928974ebb92f67bd7a62e95e8129177921c2808b1070": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f95ca3e58c701eff23bcacbfc3c889ec6dc4a8ed": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c5180bb2f2975ce4750af769d7a32dcbd69d39ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009bae8840cb3906de25e5f8b9e89ee6cf7eaa43": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002128dc2b569d5765ff40f2656d6d7b91422c58": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ddf8f475ee3b847117ed3df673e85c8b4593bbf3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ca3dd8080c9f217c9a1e0820c39e31ade0dfc0b5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a89a25f5651b44a4e9c99f500a25d503e0070000": "0x2e16ac66b63f96b1d8e9e3b203c613f9f246385e3571bd7730f793f01c66815300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511b8b87b90649256335409373dab8f36983030000": "0x8a0d544a89df376af974b0fb1a1bc47b43d9668d910504573466f70b5d39150700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51af8357dabfc8c7a80891fda8751eb766df070000": "0x66ea46144093bd290acc67ed188e375cb13daf3f329ec5898cd6bf22922a363500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928901bdb7ada61c82e951b9ed9f0d312dc9af0ba0f2": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c6c0f1c8825c7ea730b6fc23bceee8ee5a8389": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891221d505ceba3ea8f70b3324e11ee7eae3740b93": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ff4500730a6a2a32b6add8c27abf2803b3bf0": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bf1a4bb27ae3ced0991a0c60d49adffaa014779d": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900882015100d9a8165e33467f695de68d115a172": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289984af7d5fc49ec8bfe113d542f3eb2f8e2551dfb": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289005807b3364cb222841a96051227671f15d1f502": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289458e55f31a66a01be0801221777d1127de93f6d4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccda9de9a7a369174a04ebfc2d18faec1120225a": "0x00864900a51c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970072ffb8069bdd4f791fbf9352a7226c7f46ecd9": "0x00540ec8632600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b72b4ef3d1bc5158136b21f91e44bafdcb8faa60": "0x00d487ed9c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f0f3afd02178ae1d3e34a7f787b9b8a07b937295": "0x00021044ae9920000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b434e938062f321bee814acd82270acf6844cca9": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890093897717316daa87a594feb918503d7adb5fb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b305edc645bc99c5264c16c8c9227762c59043": "0x0066a69b2a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289739066ed2d1718fd100cec4d9f347382ec6440dc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397599266e9b5c0983b9f68f13f1834fdac9c2f0ff6": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c5487b072dbf2029b3afdff0a077f531c6060000": "0x6208d7c4e716bc9605f4eeeb26a73f884f9cc17f2bbfec39364ac917c716f14900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289401a887450b7096d8ec6651e15909d0a34e1898e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a32c58cec6a3db131c52c9dd88d7e006bd18bb5": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5187a6438ac9dec73642b3ff1c1185b91df2060000": "0xdcf77dc7b6033d7330a9d9c3bf666cdfb86362038400f4776da8dfdb03ad8c4900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e8fc0738b7450ebf2b496cd15652b1805346be72": "0x01", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900802eaceef7911f5ef5884174357a13de4b63ac": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4c51165f7f13ce32256492d88388901cf7e615f": "0x0014ee4b971000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fc29a37e321f816145f9645967ab5e2a87d8b0ff": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5177f4c0d755a1eaf6aaf2d8930e1b4f3df3060000": "0xc2bca81090e89e309ec127817a88dd595f2f3b370c1277ee11f5334cc075122f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7eac235c1800f3301e452f50a8df7a6f82f6192": "0x008053ee7ba80a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974036ce05f4b3f7254541e9f50f56247cccafc14e": "0x0060a48df79715000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3e5ae76a3a9b417bf426cc6197998bc4bda848e6f01bef81749a51af89cf4031": "0x68476977382d9cb85d11775b79252ee7d2859738", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397daec98c63f553f059c024da69f7becc810f8ca0c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928923f9313f69cc340859fdd8afd5d69f9298fd295d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c616dcddb10148ef5351b5b0c272486d15b3f629": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f8f3088978f60f5a6c1992b1b3ada0f228cf47ac": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ba1b9304ac4cc7292dc263ed814df01af8060000": "0xce856779cf6c02521d578ea679e1f013b277dc334498cd252aa76f9b6bb5964900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e9bc7845bcdf580a95687ae90c37e0b7f995135f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513ddab6f63d18c9f8ce476e51524a318c4b040000": "0x2434fb99a4b3f7768f861ffef0a7dbed086174caa733acd2cdec25bbbcdfcc5e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974e09168663a2a36b3b066176f82df10fb615f4b2": "0x0010b6c8f94b08000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd401f460e0251ed41d7fb32ca463b5233b620cb9569eef5327def27fbd7c7b57": "0xd8f13d654e51f66ed93335d573ab2da1cdaf832d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fdab49634888d5432dd9f4718887fdc69d27f39a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d515652d2f6bbd21a0695c2b02bcabf61593f090000": "0x2806d2821e7ee92952bd25fde83ed76930fd5d1c7139fb9f3742991ea3c3e35200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894c6dd54d08d5e5db12d90baa03045e877095fa5a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517e5162eadf0a0227dcef05ef4d4d357de9020000": "0x4ad3e041b7b94a6ada8197b9bc9c554bc747d53c5b2779813597ab0939fe585f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a305c9a9b3472c011628c8a7bc59843a88070000": "0x7a793f1a32c34ed50dad1a047fd58ba7d6babcc59089bf1c8525ea8c9d81304600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a4841dd23a0c6e2069f543be8dd5db5442f62cff": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db274417440be5bc8a904a2ecb75d78bd678850e2a01a7b260230848f4231534e": "0x95009f768050dfb14ef9ada842323c6349386972", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0e60dc2e716e841366dd85abf1464d4d8a7e27a1a1bd4b7719f5c26877c52e39": "0xa07166eb5793a0f9d60a9adf056b7e4fdd2eda73", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a4c761977251e08c56f9865ecdbc530df99adee7": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339771b183dc5834b02237e996efed6933c104bc9292": "0x00703874580800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289527a1247054d4dee8fe4720990dd8b9154225487": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f17cb2d4f469ad4776a976ef606c4a871c0677de": "0x006044e269a307000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d500774a5e6eb480dcabecc949e4c2508d7329ea62a1e68aebf76b819da6b864e": "0xcbd1b6c83908c27f324e5cfbb6f62d27ef9e27c4", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fe41c316e87c3c4a6e85c965cd678de24e09bd44": "0x0096837eb52a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893e08fc7cb11366c6e0091fb0fd64e0e5f8190bca": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e9b42caff12b77d5f8b3b291d5d83c4f86060000": "0x7cd6988ebf11799cd1e193aef0c87b6475656d42572eda38d962e05c76260f5800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9641374a4f6f48768d9a6bd815c31807e4765251a974ce0b0c75f2382086fd35": "0xddcb32a75577e9a33c2af218bb8209e96f92627f", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ba835a2252a188d72be311ab7dcea6a29eba4ad": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51afced508358026f35c5fe8362eb4f94188050000": "0xa686df428ce6fef4c9888ec3b9934c66ab1a0c1b475c22d5ef0fda78a1f9cd4c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2259051e6c53d3a07e28073904ccbebb981a4afa2df4ecc48f2b2a6a89650778": "0x009f33693d1d3fc5b3eedc3d9d457f77059a498a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397643ee88f0cc3872eb8d2092d43c3220e35427653": "0x00a21abb8b1f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7225bf2a5f6b10dea716b22a85f6f1fe23fb44d555f435e7e8e31d13f825c536": "0x007e917588d7a1392c3604501e00a73565d06845", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513260fbafef1102f3350d016fe33476ddb3050000": "0x52eeb0775a35b135b1cc12b0c4234db95f5a684bc6553bd94ce177914830941e00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d460d54a173ad68d1a19c047550b679df7070000": "0x2459105748cd16d4f93c3166c7e4118d762ebccd0cb41c924236a94a3bfbf04200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f23f6f305b8fde67e5adfd6664d64c887f030000": "0x68b96498d1be734042e4cb74d95fed63cd8c08ebc7dafde5564107e1c1a24d5500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da4273cdb774f1171698e97b7154fa90e9080000": "0x2a7942832aefac80ff43a6842bedcb6f194094474d663ed88c14a940dffc426c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289516760a6e0a4f8e3683260c1b5275ac0b28992f4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899a27e4a44e3633f546f8af7fc0acefc55e58af5a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700beefa91563f6c652924891226981aacdf88834": "0x00eca5b6716f08000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e3f51f35abe48323c6734d1f83342c684225ae": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700c020f030a93bf6e1836931274ecaa1cc958683": "0x00f2eaa9050f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002408a2f9bbf1fee7a53eb361f8eb2ce47aa6af": "0x0062b4f104d248000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da653655826c606e95ea798282f0e700f22d9669ed58fe5279acc79f03f2fb341": "0x5acaf60782e62269ec264824dbbb13f9e85d71cb", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009978d735f1a23bb6922b620c490ac4aba66cfd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928903224123bd06444350b7d75e2b080ba68598ddc9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896d82fda6e5d6dedf42042f3ddfa2b78b152b6402": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c24318e1ea1b011a6a84d2f83436c77bd753e840": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddce017740d3a4d978b15057144384c96e46691410218ac91cec8be4f7d67977a": "0x963260139fd90579c3a8a16292433d4170fc23ca", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa79627160ce8dad4d4619e0c5dc2890254d56b03dd41adbe171d38094b3345e": "0x781088752c0d882ad057dcb31dd0d023efb8d872", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d520aefaa9aa8f2c237f96957bc1858cce594c62126484c3cef56600e11580a77": "0xe56da5dcaeafaccb73e526f3afac2f48cd0136ae", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900345e8d6c2fbe70fe65954937ef335cfc092cb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700db158028c2d7db707c525956aa3fde0409eca0": "0x00724f344b0a05000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2a8c3c2f2e55ac470078c1021e3f8b77d106f62f7282799e765f75f1723f810b": "0x000977634918b6483ebdfb23a3e68fa322f1da1b", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970352804a070c4d94d441ceb8490ec619899f9e4d": "0x00142a8aecdf01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900484a2fe88db28bad5aeacf9aad06c476542d92": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b32816c1386cf0f7d5df26b4ca5921730c6f0ece": "0x00c0206bc81602000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3ce2e3348670207db72f1be4076a5725bf3f59c41fb13c5f6e585ebe4ce6497f": "0x438ccbd79f20c1e68b828211ec2ba30c0ec9c05a", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d81d2a92dd5f2b6ffe5fec1e40595cfa0dd456ea74935fffab3e5dbcb2b141352": "0x8f7c2327fbd51bb8040c53fc64e3aa6df197c9c0", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec037e3865c948398bce3cac6e0a3af1a87969b5": "0x00008a2cd1b701000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5128cf46e92f592757a8b837809ba340ec51060000": "0x583ea20f5dccc9c80dfd745123651bab91e560b74a672f2f2b3dc8f992346c4900000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518ff048a1a67ed167cbfd961c4bb7ce495f080000": "0x847c474dfcb41662f246b6e223fab3c9d17832da63304dcce5202f7aa686574d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518d2eb150cf5d8b4ebb9133d597c11c2ed5040000": "0x82e5bbeee29a5fc8ec9513dfe2089ac32387a0d72dd85990a887f9e4ad89085500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700250aa807dbedae13eff449a8303ac62fa0dee6": "0x009e7961b21f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978ae1a0bd06aa351227ec269277a43831f0d34da5": "0x00da02e30fe310000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970056962a7b6b0ec4c917488d06892ce34075218e": "0x00aa63c979d100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892a016496ded64b9724a571f0703892fcd5a0ad47": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ee13480f5e260b749022ff1e533a22e14e48c083": "0x004c4cc09aca00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890062bcd4cbb3f4501caa19a2abae06c7dad957e7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890086163e3bd61e85334868c8b1a2d65d3f244f6f": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d0c2ead868626ace5a2389dda1339fd468030000": "0x321bad8be173fc114055f9aa77859f1befbf589718d9cc6dc4b801fd0e675c5700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daed7efec80092410d5bbf134d29e673e1592e2b95bb7fc24f84d5121344c2c29": "0xdfe4c9aa892384176066b2776c0507c17cbf5099", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289383f42b5de515c564641f65f5da3bd8b4a35b4b4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397802b450c936ab1849243267995dc9aa45f234a48": "0x00e094fb1eaa02000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897c90efde43639f566ed43d95d9f909697245acaa": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f156f0e79a516f69163743f87e592677fe3e74f7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ad406dc68cfab9920f00f2c5dfff89650d05929": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700449ebfbdd1a6e11dc4d7b458d4851efbb06778": "0x00fa5354f60200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397af770e8cbcce62a1a458739a4ae0811c72d33f55": "0x0066497f817f07000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ff573d34af66eb169195a474ac9bd88860060000": "0x0f2f9a1ba9bb89bb9f415a4c237a733a5d8896cd766b4bdb7343ebef0687260d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895dab307d07dba5375eb40ac1f1b285c2d8307b03": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5147767bb710d1a631db7a2b1d32983b4352080000": "0xd6e1166e5621c7bb14591fd4530a0424c3089260083b087b9d77e2cec1bc31de00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3907773de2b12033f7196b9517045a63315b4cd": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008f6eb1f8852e3ec09a2a33ff19e4c7369ea37b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397470959f6872985a33b5f5ccd75bf2f8a407691af": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d518eeb67887ac45edf57c7df3115d9272426060000": "0xaaaf1b0d98b3fe0673c0cfca35d10d99e198d97e8e757b3bfcbb6b7d0fc0b67600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890945c91d5ddc3cdfdf7fdd45ded0746d0f31296e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e8209f6505dc718027be561be842318187216bc2": "0x00500a82d0d400000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003850a6770db5d0bde4dcf7985838a12a1f4045": "0x00188d22dd1400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928992ad1b3d75fba67d54663da9fc848a8ade10fa67": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289be2fde5ea1a064e4b3708f35c269ac5e06c3eb7b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965e01fd6abad727e8726046f5b55b25ff6bddf92": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dae50b8775cc2cdddd86bc443fe42bfea4e801a316ee579264cc7b4d54bad3307": "0x4dda8293a5da4a6021f6b228845713ab246a8607", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d07c48e25485b727193d8e1ca5b5a2f3352048f2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f581c3646c7eba0b95e6ad486ee48c2be833b660": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397009b32198b47c8b8006c0c3483ba90a7fa18f8f2": "0x00d4dae9256400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0d243a2e86fd76e56fd99cde8bb928ce3d140f8": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513221a387cdf1f10e067ad3fbd7d29967c4020000": "0xd07fcba81f01c46a75c6f430ee4938322ddd3340a460aec133b410962daa304500000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5180ee6d7af42d06c6a13e4655f5822b983d040000": "0x0867efd74f0e185120843b417f4b62e3a937df54007f8b68eef468bf97e2e34200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282430089e3121271cf650d27633bd9693190bd2f69f0": "0x004072e62d2d07000000000000000000a7df9c0b00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5130747856aae8e0afb9d8efdd8aee98c315050000": "0x9e40ca7bd1fd588ca534ee6b96a65ca8a53ec232dda838cc3cd2bd188790490600000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0f2f9a1ba9bb89bb9f415a4c237a733a5d8896cd766b4bdb7343ebef0687260d": "0x06d2ab1ed0c25b0629d277afd6fd928d232d41b2", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978761e0dd63d14cf566acf4b730f3540f164b6b56": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c17d9bb1ec5b9baa20b7d0b4d90aa5643ca1175c": "0x00d420f4be4c01000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba19adf8ab8528c9f53058b494b6154dde0fadfe2bdeb3a9b9c87761cdcbb441": "0x539f0f7f1e8e7aa08d822213305eb6e40c09ee44", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289009b60368d141bc267a201d3024cd8c68c5968df": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b043ebcca29d4a6c8ba1dfdb75fedad3dac2a5f6": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005b2da8bb885172492b3f57a510e3a90526c637": "0x006aa028eee502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339752c7f3fb2a8bdc8f2d9cdc9404b5779108d4ea0c": "0x00fe189e4c8505000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e28c5e4c6891afb0df739910c733766305cde69a": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890584e184eb509fa6417371c8a171206658792da0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979edc6ba142d75e9662cdbdd2224773be20db4260": "0x00205917580d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397efe2bad68fa91496e13adadf87568b1fc3b454a4": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bccda47579963d17ba3becdad1512e02aa9fb80d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e1e7b99b256c9faf8acc6fa17a1ad3e6e30cb99ca64df0daaef71735f21b07e": "0x8c723d6c9f5710dd0cc7219a4658f09c3f5d9928", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890013742c72bc005ef342eb367374d089ac6dd481": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928906118f0b0b10db4ea349c972900c67fc44d54516": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282434af79369d49d03b92400c3b67a65b694044ead5a": "0x00203d88792d000000000000000000000396490000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928922e00a49eb33d077e389a17928e7f7bbed4fb938": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928932fc9e119218462c2171fa5bbd554979fb7a3e74": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fdbdeaede3cef361db915f912bcb676475074f21": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972bd01b74ab575b2bea1ac2f8112a0a15cf09deb": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700049f62287af249ec7e0afef09cd6d6d708bf6f": "0x00b817faac0600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339742a49b7c7a88907053060c8011f11c5d26f2db8f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972a8dc8b6ce13666fe5c2c56d23f9831a7b61a13a": "0x003644e1317705000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e1b93424c6edd8536fa71891923de5766fda9a9a": "0x00bcc1fbefef00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d72f7dd3a2e7a78481494856d4ecae073b7fe731495cc78c9b100a2775f59881b": "0x6f229ac4cc64385aa20b2cf7f75a9eba129b6711", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d514eea4d85c176ea8828cdec479385b3c275040000": "0x0663c63fc812a1d2d5ec872f1f2244ba474f36cf28dffb9c8197e87ab4f19e5000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928908548af3414d04416f96f60cb1c39dc8ea927b4c": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1c2a5f648afea2a94286c17f6c60d16c9ef8511fa4ae88a54ce2748b6c8fa90f": "0x22a5afcec732df9e65eb56c0ca7fab1c3c26e7d3", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d0d62f0e012fd9cde4c2b255305228fd4a3160de": "0x00706f96a68602000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890047753c8946ba8f3ba101ba2afa2832c4a5b6fd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928907bf572c47678e5141ace6b29c38e0a9995d7134": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a32f50f0c7d78bb3a6cb081046bfee5b89060000": "0x445a834ed21583bcae5888eb433323c745fa4a472dd8ef0af700df918158d20100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddee9d01ef9ae9a28b5d1ad92908701b2eef4b6ab8dd733a2bc50fd3f73fb4b63": "0x0025c20580d7ce0b8996c9bc91f5935dc031f3ad", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001c75e0c290be78b48b440123a7b9c9950cb4dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900248d1380769d8ad43a4663da2712bd1186dc76": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896b84b4c46babd3748c1c73bc408f6999238d00a1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900eb0d1842deec54de9fee30c06369c21e33b99a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc20a5c102573d715a962f123d0991e9c5bf60ca03aea31a1305c72d9d5101671": "0x914c952f5746b19f007124c995ee5b08061139dd", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289410a7076af80d5c66f3eb350f4d455c959e99968": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b1190e1c02cc7db63072609b9da9dae5557f478a": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5820b363e423d6569657bec1820a35823af2aa019c17507f2204ed9f5c107147": "0xc9e65f133b90e4fcf565abb95408708f9845b90c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a13d980cb2bedb03cacb7003143e7af78c602030": "0x00022d34640b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d2c2b9441c516f28c9aa9cbc04f5aa257a18b77083c8ef8092b7e6332eb5ccd51": "0x00320c624958997f6d8ec1d130a436e87a1f0b0e", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd43d6feb9c8b0455a11950079b65ad498771bd454e01b56907a2ac6362d7274b": "0x1eb3162901545cb116b780f3456186b5d1396142", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700928c48cd1e36087af5c06ed90b4a6cc161abde": "0x00381c3a2c0400000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a32583d65fb0c890d13834bd3f1477b91ad86446828a80c3ba30f6241725a10": "0x341e46b97431121edb45c7397534704946e1090f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f5c78d56cecddfa5e7151650201b5144bdb25fb1": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f88370269b6718332b8005b44de1c1abb1c194b5": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002cdf90e124b3a929d16682b6683f198d65d9b4": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339761ac28a26b98d1639e38034d48d1a3760b96a22d": "0x0008711b0c0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289000028ce0fce9e53bee386adbf4d175062b20fee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b31f557d9e0b8ebe6f6fa65d6bb6e8d774c794": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9a34338cb3f82de1fca9185285d30a075745505390d3a898066eb280cc44ba73": "0x38b89b94dc5dec100a23fae5b5140ffcf81c8b24", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b14c0abd57488f6c66fa299c0b26cddc60da9367": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339760c5157e1255dae7acf046b38fece4a69ad6289e": "0x00da5001030800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c48fd59cfa7e22ad3d505b62a62a9a6050060000": "0x2e0834be7dd8eb02ee1ae17ba5af36b576df80a3b9be07f8837c3739ea69866200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289006d21a300eeab8a54eb2ef797195f60b2517e0c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e6d7485cbe990acc1ad0ee9e8ccf39c0c93440e": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976e33fe6344ffd1fb1aa35d7823021a99e10aa1fb": "0x00501213dfb68a000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b372cf3e7c70309bd436314663ebd45f3ca4b15c": "0x00caadafad0200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f80791d5ce62ea36ded1fba5e1bf53c15938c9f2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397231e4177e2d79bcffb4dd1d0e9b6cfa31f1acd98": "0x002cb5d95f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e4d4993cf7be0b894bb458dff9c2653434d407fe": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397007ed64ac2fe49e1bcb932151e72de0ca813ecf8": "0x00a4289f320700000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b9c31d32260bde35e51bff1fcf2237219d99ef91": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e571ba1d28c1acbc64c8b63b6a4c9664aca816da": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894ba3b6302e0fd7fe3d21fe1d2ec3ccec915b505f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289847c5586665b81798aec196a3065cdc577a013dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ba90e5b6d3376d792ca3927524c27a185fbfb159": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975f9e3e6c76760ce49fbd87e857fc18ebb7527584": "0x0068367fe62d00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5100ae4899cb63e5f444601f805abff66a70080000": "0x260f09bf8836b84b88d389cf793389a6387090d930c1dc555789d94b304d093400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db09131af9d0a9204475313dc71104ba4ab278d9101977e1e9f523a8220e0074f": "0x320a67f5d718c4b541a5ef8194ad4f4638162f6c", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928994c90e0a573db26467e0e812090a9220c20edcd3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3c803d0e3f20e39f3060761bcffc56363024d98234dc248583149be800647c7e": "0xf409aba35fd318d2f06b820f80cdda3819f7a545", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900beefa91563f6c652924891226981aacdf88834": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ccb2545aaf81d791232b9e111f4acf0a182547f3": "0x004e99ec4e3705000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b434e938062f321bee814acd82270acf6844cca9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333976812d2dbd83e65750a7db91ab8806972ce170be9": "0x00203d88792d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee095ff182d11b07804c7ae6184e03ea05cdb5e35c0a7d2cbed0e6fdd5ac050a": "0x00aa569e5eeb25e923ea96578d77a73a53bd643e", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a707a440e0a34f11c3c259a20622440cbed1970": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397719819815ba8d64ed7712c3005c8df49b2085368": "0x00d0bba2d55703000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f822a6fa1ddb385ac9b36e3c0a96000822050000": "0xe8eacc9d19f41e050e02e99f34a704b7afcd65c7886bcd79d6c888440e5ba71b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972b91c155fd65aa757542460218f00df1e9a1d822": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7917ca8ca77855eb657fb414a3736204e4e3cca": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5198d6112ef75832eda6c8abfadca79ed6fe050000": "0x5a14fd5630d7c9bbf5f0bf20e8dfb6b8d9cd0be47a64b65c9c4ffea8d25acb2700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282438a77e549ab954b951a118c7106bb46e606e9c445": "0x0080f420e6b5000000000000000000000b58260100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970225bf3928801e04bffc49fa57329c999a3bbc41": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928997883f6fb7483a6cb748a647f23b601fcd69b393": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397705fb243cd2cdda5ffd62c702fbe2d48353e3bdf": "0x00c462cb9a0e00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516ba59061e1ab64b53ba1f9f7a9252d684b060000": "0xa0226b58094e54045005fe23c8a403e110a4eacfc8ccdcf6cb009c81c4f9444700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d246b502d7931ac1df713e968670cd5ac008a1f84e5db9a0df695891a2b9ff13b": "0x77c6f7a1f67e4810c454d57f5972da4761f8079f", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700850453ab4667fbce4688912e43f1ded185f847": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971e768862e1b8abaf3c1c776b032036c7b774de85": "0x001e10b9e23f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970050e26f4860d18a81ec8685bee8e73b18f2614a": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970023772fedf1a43256e6ae4c227b6dc05989f814": "0x0010fc266f3802000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900843587f711b5b15b4b234450e0a3ac1750e4b3": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dac133ebfde441672c055b79ca9a6059850984eead1ae036f48ca1230e7f0556f": "0x3e2021221b0bb5e2d1ceda9f024ed9804b055708", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397000977634918b6483ebdfb23a3e68fa322f1da1b": "0x002656d56b8e22000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971a0094af5e7a2d052f67814b9bbc799ad6ece294": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979b35dbc596f545739e25e203b41823251acdee17": "0x00b8dd585c4b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fb5dfca2e526f23b90d21488082228750c17a3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891a0433933f6ea1084a7bf83ccb474b4cd263e7d8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f5133638ea25da451abbc648fb87b28d0318aef": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289904a974b3f43903b63d2b6c7fd379550baf4742c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e1b93424c6edd8536fa71891923de5766fda9a9a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fa5b8e7942818890da1ab0b8ea9f79c6e912a758": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ea1a59c6785f5c391efee3656f5c7e84dd20e07b": "0x00eccc45eb0100000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900f81756700dca9b2fe8d4269a761206ff26ca95": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928972ff95ddf81bfd2db7a088aaafe39e7f3ad3682d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397aa71944087a4242e157bb28a8a1b110274228ea5": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975a01e248364beedae2dc37ddce5f45dc5b7011c6": "0x0036e9591cef02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d16d28220f8e13c7e464056988a9788066cd6427d5100c773e7adbc4c08f97a51": "0x7dbb16b85b247430888763302413d6d2abc1ff8c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a6d4b980ebb41243978f92316777792ec14fff50": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289352fc97f4dfc29a453be0898d59984431a6e0714": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700afef101ad493ac1da15395eeb0c84cb8a2a0cf": "0x00ee69afcc2100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51dfab7dc9bda49a0553ba48aa07ecdbf39a010000": "0x760f4fea13251aa55dcf9d3baf44aa467128767f29789fcc3fc1edf69949c77900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824305b30ed53364a95a0ac56b214077a85bd5992772": "0x00001c0611c813000000000000000000ed88022000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890017a7dbf1051e0ea2a57513ff9423919bc8a5e3": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5186fae015c98feff6e4d268982f51f71ac5050000": "0xa6d16d544f5994d2de0c8064d38f2df418f943595629ee6a2ba8df7a25f2380300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896bd98f74f818c4fbfb760afc077c3c8059b11276": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289003f12ba2e37d864732ce8b000270b05fdb2a893": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700e3c4d881755355b58527e1f09a5507808de5f9": "0x0088c596351d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896846d14e5177c97220466fa343cb3ef0d1e29f07": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897a669ef68da390965ed95cce8f02f6a11a6520ba": "0x01", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da95cca149f246208e7bcefeed44145b6ca332fb9b797084eccedfc9b746d1daf": "0x4118b3011a348538694a2655100db72e5010a0c4", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c01e3c81c99db5918e079c5198282c29b773020": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928991ea6ea479dcc9c599dbf6a410cc7ea3798d3351": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7e88787d9eb21f9643369b4357b4a5e61865cc7caa976ae37b2192fc67218634": "0x8919f90098e7976078c2ca828b6af4fdc3ab9052", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511884a579ede5a880ce55ee21a1e68a048b010000": "0x78c8003d8becb1414e373f12bdafaee23c760cda6aa4f2421bd424472995d70700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5115e2989f2843fbae96dd80fddf4f073516040000": "0x9ed22cfc6877c1961ac2cdbe5536684b0761074b8ea475d0c2f173f5989be90400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e3ea41cc49b5791b4410ecc3d2dc4a303e09f4": "0x00", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300b2272bea66948af04edeecbeb0171521cfb24f": "0x0040763a6b0bde000000000000000000fc794e6701000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897ed6f2cb4f74ed164582fef026304ef2b1d1b637": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d12ae1449f1318e75220747ede8feee0561f500f1ca2400c204ffad735c53ec54": "0x75d27075d8d9aa87e54f05a07a52c5a117436cc7", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928913d45bada78daa5cd52162254d158a217dd1faa4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928992349b865f8b6033f8a36861f62fe4b0202c93d1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975bb506f259835349974c5fbf0bfd5cbd37157dfb": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890025641d2b744f643432cfef4c08b76430fda5e0": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d47297cdcf36eed17305d6a5471c6cd482c7e91c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900a43389d6cada465a26af74f61c897d1855ca63": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dea62962b601de31248d06aa13a52bfbdcb1ad4e534ef4f271bd5b39fe0759637": "0xcf1e7d7b8b56e594e0294c5aef7a81b957350e34", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d8e01e6fca80b292913d75f48f0a2e853f060000": "0xca09f130c47fda19a2512d38b5e7ba1b84e849eca85a93677122fbae4ceb4f1b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7ab28f300e32aa503233448cb8b7ae963933abae546105ea1925172f28efab05": "0x3dd62544630d94aed21653ed9ec15810cc759a55", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397afefeb0eb9875074ca2a2d508eab621fdec459e2": "0x0078e6bb2e4300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fcbe7c027c8cc33f9ff58358629a833279c814": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397393774d01e81a2fa93affad6e3f75a86a569f11e": "0x0080c6a47e8d03000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5144bdf3a496d85bf4b05082b1887e2a2307070000": "0xe805f9ae6f23f4e1bd98a26b1c055d0729755e1fe4c913a713c7094ebb1e362b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d449bc4f0c813a72037bb8747e3c2277c8e2136052071a3dda29af93ca1d66b2e": "0xfba281c66fe1034a2f1cfcde7fc6f6d939df9cd6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928921b967d11709c5f62eccd737625effc14de873ea": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f0571e067930c59f974d3394987bf4392513748e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51badc36e2b573573fc0c0b46103a032be17050000": "0x72c725acce32a689fa5eb670601a139a3dae75fa9e0e77224428896082c5642d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a9d3066f32caa51fd4cec46e3916ef2042060000": "0x36e5192ceacb95e0919a64940e90ca47852b8aa1271e2d4c69383411e72b270200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51543938c9ecba965fcaa21e537c780365e1070000": "0x58783e1e9b02c77a63dbb17861f1fc21cca35045ff11132bcee7afe4ed5db23800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900705b1272d1301af42e4a730161bcc1da26b534": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5097017378c065cfad77e7360fba48624873f44c16669a73913e735237a82a29": "0x46e4cf75e7a515935482c3f1b557efe92893d483", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289177a47426d4c1a6a65276505167c36b663db2575": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5199191ab33190fca8a5ce85235e91f89853000000": "0x08c71e9b40bc639ac1b3e109b15f4a9f701529eb6941b0fbb51ca6856dea4c0800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c6e1586b3fb4ce04143f3b84729234ab9c1e28eb": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bdfedf4cbabcc9cfc93e7e6e7a827434ad050000": "0x7687b89809c7a3c7450a60f94b3f5e23b2e989312f14c3e521506479e4883c1d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928981594a7163a447cb1ac16ddb7f831dc1c43f9307": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a003fc1e731965c0e08ccc93868cddae6895d8e0": "0x00a014e3322600000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d2b35b43c6ecd57e7f154ef5d5dffd0c73f8d4c": "0x007ebb5c423f0b000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ae9a937d4302533dfb4710e49ed7ec6482070000": "0xc4e71dfddba17863c7ea76d390624122e2369ae4f3a01a910036e7bb70d89e2b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44ba33d654fef43a6736352ccf94a226569f10be0fa323d34c09f13419dec25a": "0xb10d4d83491e7be1f9451065c9dc5909b717a28c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397945df54583eb102061f57d3b4f3e499d7acc49b7": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978f7c2327fbd51bb8040c53fc64e3aa6df197c9c0": "0x0010a5d4e80000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ba0dcf63227d00743abc481beb50a906e6010000": "0x96fa67ee8a1c434d8efd13671fbb12ae29421c4c0e350e2fe93744caea8ad20b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979dedc7bf7fbcfc0d48964cd9977337b944e177e1": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec6ff8b811135779cab408d1449e9ee75703e8c7": "0x00ec851e755400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c5137df3f8f85e7b8d1f5059045ed0639db413": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5cbf38076b2d9b9faef9f96907d266d5effda6e8458ca6f4287615089f05502a": "0x3e386f707569dfdea7210b53bf3e03f6d24ee073", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893ac7850fba178228acbd4c8b601bda2342392e21": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289001ff7e32cfd40f06e0d9f60f60eac6bef113f41": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894aa8f04de40456cfde9e606f9f066f399bfa4aa2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978d4c9ffc5680b9492c9fe7201b972190cd51c0d3": "0x00927581d50000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895fd474f8abdb347ec54b15cbca40b56dd2f2aefc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289007d79331ea38e90d35ce0540f37067f2662585c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896904b80d7b5967daf9a55a469e18c55ea75964e8": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a3f80af332d2b92874c1e0f76af6f23586847357": "0x00b4a3ea662900000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9032a7c54bbe6a7c1c9ab89364242a3d39a725aa880a38110fd92bfceac13b09": "0x6adab48e2bc7819044ed2a9e4041f918db545aea", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511688b90ed29e524caa1cd597aa19684dc1030000": "0x3a2ff980384cc7996c6ae89384ed5f47531ba3ac7f9b2a3f89863a99266a3b1000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970010cb37589862d13ee82641c31b3d3efe93e06e": "0x00289650330900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973c15412599907bcda854ca9f243f32baaf3844a2": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397701ce59b203d5368c7ac68f6f57a5f23552d6458": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bd9d6e7489a7b450937fa7ecbabd71be819bee3d": "0x00ca752c232500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ac9e50fa5a78b072c26e33e6ac2c8e00fb2a22": "0x00aa8e680e0a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928949657dfe91f0572eef4984feb486a34f2a98eebf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289559bd4befa5d868ca380a9928ca2228e3ed26ff1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896256921fd93382ce2d468570f6bfb385e5bccf0f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928964606650c04bde33fab32ad33833dde37b47360b": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da2f43a8179d71374a49f4151bae8d01dd1ca9cc85eaf135a23e8134ae32d4fe7": "0x470f765ac9ca7fd2d19b7b68b39f3a3da9f648c6", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898e10e1d033589ab6ff05a410ec742434858d3f4e": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8c2100c8a8ae062f38b1eaed5b6e754179080d9e37d53b11f4ae7bf94102f451": "0x13983684c4cddfc884ad85d31f5e46f078f13095", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397520ad81a6359835797a4a7b0b0cfd0406a18f64c": "0x00e40b54020000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bcf0c42b60a210ce7d16928b5cfc4421d23ada25": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928938422523da6181fbda6662269bd301a95686a001": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ef398a72ca7e9c352d14aa297c5c59f604c43bdc": "0x007ef91cb75900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e585af0cb7cfcfe9314679e120318a5daa8644": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51445418f19831b32553e6589dce0ea4644c060000": "0x9c0acef99357fd179a671b7724ce635b53b25611ad3742af3878ccc6a0f0046e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c0f428bff6a974aefaafb3d14930fe63699a4bb0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397026581d80b9cf65c119f32a750947c45cdbb0847": "0x008c8b2757e600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289eb0718ce75762eeba4570943d5b2de2afb9085b6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928961ac28a26b98d1639e38034d48d1a3760b96a22d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e688284626ca2d00b578865c0e7d189c6ca978b0": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397012b4170e46b07ad9cc49d4ae4f7b406467cbacb": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f66b1c892c38a01c167535eb17a503ac8e070000": "0x1abaeefafe1ae6d3eb202f130440b7b2d3365279ce56def44f2610e56986ca0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243a974c739d6a0f8bbf598f8da986f6667b347eb78": "0x0070eab4447900000000000000000000b43bc40000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339796cced3c89d0565c7075aad1b2b19c49f449af1c": "0x00da25696b3a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f73a96a4ff788fdd54acd5c5e2cdef3394040000": "0x9212c23e56838d5813efaec0b256040ba31348213b5d9001c95643164f02486f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f74ff8fec69a8691f8ff0493dba28b57fe3b11a4": "0x005ea223252a00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51d686d1501111e886e060be79b4c4352f34040000": "0xf449728349d850e44f8043b65efd6be7d8db8f4360fad672bfeb2ff6a304877c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3a1c2b4df870c87d3f205b720185a9e54176207b9c52a6803c82de6b34332e0e": "0xf91769506a288aa7edf21f0100444eec2c6f1033", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397cd17aab6f8299d35bc11428093bf1c4ae3b981f3": "0x001e39c7e9a600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e82fe500c39f4644d479f85e4b3e407a9d6a1e": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512c0421799f29ff6ad8f7ba7d95b81d361d050000": "0x66d0e8a978133b248e0d8f228c1040af8f7152f366a2b6543349b2555f21141f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900e17abe40cddfc8a2d2ed13eea958eb0030c0db": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892f60e0b4d918fa51fe99ec04b7b0f952fcbb7950": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5117b6f90d3ebc1391796263eafad63f482f030000": "0xaa44cf61123c6bf9110c8cc4454cc241f0dbfa92af8719ae1c33334f90dc297000000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51abe2883db7414a44b55c1d4979fed69c90040000": "0xe4317517c949be76bb6d6bf45c664e15c948968ecf47fa0b29ef71c331b30c3d00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289318aa87413115388a04d0083e792849e09fe496e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898f6292826b8af10c8b70a178fce20411da8b37b4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a496c36bc39f1dc6d989db28d51c55c102555007": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b167f576f31f640d6d8d678549db0005619be50b": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b61959b37aadff714af150580559858483459b8e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fc27d391ed66cd60f72ce19ccc99abb67a57ee": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bfd720d4cc1aeaca059c466b41ae0a55c652b8a1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d8cb03d06e50b85644026da3e510f15e39e65efd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b422b17a216192f8a25ee6d08342dfeb3e05e6dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289f5c78d56cecddfa5e7151650201b5144bdb25fb1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397005ba629a682cfc064d0f7e35710819889fa357b": "0x002e6ed21f1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289bf66f78612884363c0f231c11a33ebbd6d26ef82": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d666c474e2f859bb39716a333ad449122df3605cf2d272ab876171d0a61cbdd07": "0xf9852f33e7b714fdcb0cc70fd2338923c5ee9c45", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e697b87de1acad4e636a923460fe2c15b3040000": "0x261f0bbb3c232961255def15a8939e3e0a5f6ec619496d704519ba3e111a601200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28ca3d92a66a8c35c479af3375d6181a95ae794d798e02e6997b73c3d9307543": "0x002c2d84a889df4bdab0175a1c4487f67adacff9", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817daa84e0c7acc3e5566e5b833d2f8619b98abd0d2a2c159398fbe616c3f16f8bd0": "0x99ddd5e2568b6f88f4ebc3d8025ba4538c8cc8ac", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397150afa640c00b0f2b7add198bb670ddeacd2ba1f": "0x00e070e8b01000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bd3f1a813924a59db054e3ecc3f7baad73060000": "0xbadd8927d3b3276bf4691aaea34e7b5cc8c1afea864578263fd57abc6ded4d4500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339770d394f0974b088f02599badc4b1df6e7fe52d09": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28206efde24bcb2b8e30e1f36b1fa31bbe821bd61f5bfab0b8c8e7c2a0df7356": "0xc8f9a7246af6650f96401dbbee0c30e5f913cf54", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b6431ad281def976f5cc1d53bf51485433030000": "0xd2595b4dd370884f00e06b9b1e6f8e26e80797cec0660c246a616649f09a490a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397df423fe29ac1331bfcdc8e01f2934a971e4dfb72": "0x005a3db8ca1c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973be088b61fe7972ccefd39298656ef9b147e06b9": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff34674c9401c39cf82d06d04f2037411d835db8": "0x0040e59c301200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002aa61c8653d63ed86aa91053285c5db6be2ef1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397fc6e2bd34595f49ccd77ef257810d6aa9c4941f4": "0x002a07e4311300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900abe816d32a0ff056a4a9cbf7c9eab2b550a2e4": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895705d16cc35d891bf6951c24c374afec5f7e38dc": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c498cfbae903fcd46bc6eddba138f78b96b7200": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d21d90b501c8f1a883642c9158b61c987753650d": "0x002acfc5745300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d512435420c92437279a5232ef3cceffb7f7e040000": "0x2e4d4b606ea5d17de20136f8e12d3521ffd48fe8acaf5325c7961f002b582d0b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289261c307a058f4a6970c2fd1c3d696fdb968b83a2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ea28924fbdd264700a791f3ce734284a1c080000": "0xf66ad061b8b6ff29e2cf485f542b90e733f2164dd9567d2713eaa54362c4d52100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397574f85614c44755bfd42ee17a3bdebbd67a531bf": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928964465f1b98dbd0158f23e0dc0b1aeb967e1565a5": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898acb047dc00c1633e89130375c964ba9b1e203b8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893c3e4e713e333bbc44b36f89912b5d8dfecb725f": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899d0d5ff120f3d5a0daec7ea328dbe9e682d0efd3": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a62bc08e021695b3cfada083d0481452bf5c0fd4": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e96acc7d52abd264535e1a64a03a9fce3e238c77": "0x00e00d9e260c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b566eb055743eb2daf5221d7a1da355b1da5433a": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a12be70f3ec681399d61fa18022b31b2c5000000": "0xd018840d66c4f9365a2da31759f36a354306e12944d9c207a3668207dfb7e16500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339750d07d27600d0c2d74c22befa45e749c3d3f090d": "0x00e094fb1eaa02000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df1c7807add4fbf549db8d37e8279efac27bd1478a333e4c9bc10c80cdafc9e90": "0x54036dcfa7deae92f0d948088690cfdfea648143", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397128b1dec802ddf81681e3d6f113bd83dd852311e": "0x00a0724e180900000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339727f3ee1c40ec45fda74a1f7c1bf36a66864a2376": "0x00e070e8b01000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e6c6c739e406cf3ccb1c666d24cfd200585faafe": "0x008e805e6cb502000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970090087b636ef3f95b14a4dd93d28fb2b1747fea": "0x00e04fa9956800000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df524873fc92acd043016194ea11dfa3276f7e70": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972392f61669f6e3b81a46d30210761c77b0ed35cd": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289fea35be9327aca7beffc93d2b0cfea5d291f7d13": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dee0874d09c3b5d554cc991a98bb9e1f7287671660fd542d7796ace33dc7c7502": "0x25d56aca979398aca283611258eaf84de39c0d9d", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891e9ad7f04d507c0cad58e5abfd5a55dab4d3b19a": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8c167731c26d3dabde6783daee8735ba0408190": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339723c93d5b4d09093d82ec6b4e62505071c3ef00f9": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db08a593d2617176b23f2c2d1e32f7d9bab61aa012c1a5ba68104bfda6504322e": "0x0b7b02c9a7f9b6444ef6e54384a5b5feb6b36be5", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5157ddde16794fdd71380ba804d00194f8f0080000": "0xce4e902b421071b4825e6c630d14614e6021f42806546f390d8b61c328d5507300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51866640194ad325613d8224e5517a53e2c9060000": "0xba35225c3fc78975a20ea5119f4b9e9e458e44c981e67e38f2082b144faecd5900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397c46fbc59c8742b17c3f67fb39338046c1b3be969": "0x00520c259a7d00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b004efb56cdd4fb9bc79132f2fd60902c28142": "0x0064eb1fd70400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289a4c761977251e08c56f9865ecdbc530df99adee7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519485cc4ecd6d298f89297302618fc25096010000": "0x5cec348d901c9a9d931610a858474d3c5092d1297df3fa7dc986faed11c4d05b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d44d131755e0f4f5ae4baaf483ee1dee0f775c91c1451e8a06195b471a5559412": "0xdd9364642d32a48eb2cb1b0b65d18656f4a66180", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339780872129a96f429312a717e2fab264562b1254d4": "0x00bc7c65071400000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5132e347feabaecc5648dec83be9f6386024030000": "0x2c59026a5b96292f0ef483d5604bf90dd067ab2e442adc25767091806dde577500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397bcf0c42b60a210ce7d16928b5cfc4421d23ada25": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899ab791e5fc047dbb25dac95d3a01f162738ffdd2": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289df1e9b2eae31aafa11fcc281d6d0efb49c7e12b2": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51a97a0fd9fd6c732c40439fba699c0a7390080000": "0x0e7d980e385eead4e52d1daf803f4f5869799cd12f55a41031f3d9d93b52f88200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817da4910e5bf0a07ad0b3dd37d04aec0eafdbcc5ce4c96e7bbfb4c332a3d135db79": "0xb752d54f3436601d8ccb4fa02bf2289192e4ab59", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824300b46c2526e227482e2ebb8f4c69e4674d262e75": "0x000022e7a6e89800000000000000000008d06ef700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339730da5c03ce04c15dfea28b7466b5598e0f48c1e0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289359043a2edeac162a5bcb5594a24724176dd68bf": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e45e521d5179090a446dd312330530177f585091": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397dba1c5969994434143ad0966f1e785de075b8e67": "0x00a854ae840c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002802750d12a39450f2f4a0e19375b8de24074d": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333979c3668049cc8c0e75c32ec8bad06421c3bd26281": "0x004ed7a1c0bf03000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192893bcae7a7bee3a07c59a217cddc891d947965ec00": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0a2eab03e8d24c980a0b7a03c30f0c5537caf9c27907477fe481898217d25c70": "0x00c4ea7d30d01e1d8438dbbea89d44d235a46aca", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a74b5f0acf6cc5cb0929de58f353dc08ae974bce555de6470a842e5c5a1218c": "0x91ea6ea479dcc9c599dbf6a410cc7ea3798d3351", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928964cea862ccb0395f7b0f2ad5bc63b0f299a56637": "0x00", - "0xf2794c22e353e9a839f12faab03a911b308ce9615de0775a82f8a94dc3d285a1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397355d599405c853d1be6f1ff027967879d69acafb": "0x001e39c7e9a600000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513cda749d107e8dd4351a206703616696d2070000": "0xa203f552cab792a1e664d742c53e060f014328d8d2fa8eefe5edca90c3fa8a4100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339703fcec3a20f276aac1f7967a461301d75180371a": "0x000628f9e97e10000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004c129a0b05b5bda2b7ce56313ffd840c3b47d5": "0x008a28cb900a00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970047522120faa210d0e6722c57a5b1d83c417950": "0x00c662e4d35000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192892576f5ef8309dbb23c39be29d62273b4c917d783": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f760704253f15e9798783e695e6011893b38b549": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890aa3a0ddc82af4c06c0bc4c8acc6a9a9a6280672": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516c8840544bd90ef2cc01dc475d548cf35c040000": "0x246b502d7931ac1df713e968670cd5ac008a1f84e5db9a0df695891a2b9ff13b00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ba9171e89937ac44dfe9a19a1307e54814ce78": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289953bbf3ce4f4e15d76793c6d672f227993c4f3ec": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339751cd0cb94cf5bce38ae16c1a0df2af1fafc991e2": "0x00a6367cdc8300000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51284722d140d9a31b177923162bcfa75020090000": "0xdcd52d8332620b371c24b68a5f8f303792981975e817ac1e0e0d5a1034e1ae1f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700b9f5c58ff70657d2c607eda6c44c1b70e69665": "0x00b4766a6e4200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397152c7b351851c158305f51bcba4cc9570259cd6b": "0x00421e33e0df01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924941335e79baae9751f508e7e95c1dd475b4e31": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975852b57c0d039fda16a6c948d2689b402526497d": "0x008ac580060600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192899b53723ef104396f1f44a378a84a15067e11e166": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289750410db2d74027243fa5b6abcab763635fa7fa9": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397004cf480789b4cbad22bdfe4c1ae7ccf4a4675c7": "0x00008d49fd1a07000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d0c5ca519856ed9f4245a8613db481fab23c68914960802465e2f2c6f67f40f79": "0x0086c68ec3a352527ee68308deb658fa50da846c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7c0e9733213d62d53db42c6ab23ba4f20748c41c83f28f7f2ed935a43a32292c": "0xb0c94ae3d19f2c585b920842211d2d8430da691f", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ac090b38263e7fce9c72a0c28fa159bacb040000": "0xfa5640a653470ee0da616be3b471374a4af3bf29545d540b5fa7c63b59c9d06000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8cefa6b7f204e06e8fda587af0917d02df5a35ceb8bed4583c3a5e91352f834c": "0x7c90efde43639f566ed43d95d9f909697245acaa", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339738c1a42ec8564eb3a62966a831a5fa45e42b5455": "0x00624f8f730f00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5187cbbc1a7c8dfc5b8ad46360c40c227aa7000000": "0xd0a28cd71e1b713dafa7168963102e068ee03c9921cc6ecaa91a6f3cfa5b077000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928924a7eaad0d7f13d1999206d8c22f926980a12ca6": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d28e2740f0d79ca882ba5e2530f61aac644384032af481b1eb41ba48a1c2c1f3f": "0x745e0ddf824ef48ae3506f915facde8382d4501d", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978c0a288a91525460275a7b8762d2138207210ee9": "0x0000c16ff28623000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894a74a375a7abfdc2a836a1ad3987caa82aac2e79": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339787b72db3c9257c0647034b53686116d2ffa0f384": "0x00301a45ba2900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895c2ba9a003f6616bbb133e3dbbe827e5f5c45371": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e0dc528b979898218393f18a4568c69476640918": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339757981d9691cc20a7ce7c628f6d7b1ab82fac8607": "0x0094bcba878500000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d78dec21cc26ca8e9a6c12f5f11b0a59f21829e0": "0x00ac9de8d0ec00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c4ea4230999370bef2b2f92144bc03c9511338a7": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511f625ded47a1af12f37184990443c94a45060000": "0xfa407293a2fdaf63407100b29d4c02196810ac847cfbf3d9b472e29abff5872800000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d87282439bb987d0bfab369b9eca904b842723670584a5fe": "0x00000e8308e4090000000000000000007744011000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d40602cf99698212b9115e545fdb1d449d37ed001a3b8c4cc9fb6b890ba92c45b": "0x0aa431c58dac3b6f8cc07877c817165572ac383c", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700818158c1ebf72ff7d3a2feb70735d99a5c674b": "0x001a4b6b869603000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ff551a18250d3764de26d99e1ff0e854771056a3": "0x00525742bab805000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519f338179279b2e54cd06ed99ef51d5ad14040000": "0x98a8cd51a12a19dd5440fde5e43cb50f9d48d95ea5c5ee3618eb0b2945f02f2100000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51cabfa596aa6c29d4f0093819621875dbb3060000": "0xcc614406d9612fa12c9384213e4e4203287d777a602a84c931240fd8c2aa375300000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e9d60c6637468011364a177f0fe4f5e8da080000": "0x90b3bb381576bb2acd03c2e06930913a373b1c3d2ef68b9275d86940812be31200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890048de500664dd14290254bc70fa818079308610": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894e09168663a2a36b3b066176f82df10fb615f4b2": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971f77687df949341a0fd8f69a3b557a26e13efc8f": "0x0054a6b6228506000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc601b3e5d664c8cfd77f6713be93b8b4364e6a1e93217d04888b3c7cc21ee235": "0xd0ee80934b74c7f0f25c7a137a8a16e58e713283", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928999fb6c13d95f1b74e77778fc86b98ffb30cfb929": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890016625480945278b5ff3606667b0571f183efb7": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890446eed77a750a57751b3b1f294ed9a72945cd25": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928965e7c827ef5af55a5080f2589dbbd334e06dae9a": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970077d40b5898cf2fead807b1589e90142b99a3a4": "0x007e2232bb2b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d08e7cdbe4ea147b107456a5a1c4885f3306890522fd89b7394a1ce9ebda1357f": "0xd0c352dbc3f03762421093ac7225224cca2f54f9", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700eb8e5c2880dab44f41e7ebd008ba6031789932": "0x003c728ed34d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289cf356a6efa93781c6cd23d8d8d270fa49c1e549c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5151c5b185a1b28b06d66e0259982686ae89080000": "0x438d034340c787f15207a158d94c62b36dedf8c7314451d196b039ba2e5c6bf500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d1a14b0528d08f27ab53ff72a5b59dd415232cd840c4cf4d07a237be679cae334": "0x006860119dc98195115d8bfd4011eea31214f028", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397266215c7cafe4d42985587d614ecc2a94075cce5": "0x0082357a0a0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d872824345602bfba960277bf917c1b2007d1f03d7bd29e4": "0x00407a10f35a00000000000000000000062c930000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de6634f00d2a02b8c109ccb802bc0351674e21650ec3bb5c96c2515dbe6543a02": "0x354b2ae0cce6f0ed8f332f123d4367bb800ac687", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970051e28f46719ed3e65d93c5c172bfe0ed982b84": "0x001ebc12440b00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333972c400a9c0e85fec5dc0607362a1783e0ec224ef7": "0x0022f2d1e57d01000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339715955df69f2c7dfb120839d6b4c78230b664a362": "0x00bc7a47413600000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900fbcd1a1318617d6df1d267e92dc329c6dda05d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928950d07d27600d0c2d74c22befa45e749c3d3f090d": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d6499eec6c70a3e1211a1991248716f999cad2b5911fd652e5700b5382d1d3e2b": "0x7894774b62144bf5cbbee837c96e833e16e3edce", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700d102007852fb6304637ad44457b9bf42be382b": "0x00e80abae14c10000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289914c952f5746b19f007124c995ee5b08061139dd": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289b8f8068f55fb15342508809c3b2f6606aca7a650": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ecdfb30ff7141766182ca031e20777c0bca09306": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700497c0ea743f6a572459c14dff09468021c84de": "0x00268dca6f7902000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5191fd4ffbdb5000b188deca34c57aabd11b040000": "0xae1595f870cc27a34374a6b819a554e242997efeb760433c6fdb4372c2f2820400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d62b5214b6ee02f9e2596ba869ce0d3e27d8a5580072163a12f6294f3587bcb01": "0xb5d47ed8c07fe4d9a143fddf967ca8d66562beb3", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192894765d5715c351557d5242e3e6af8e1365ed5d08d": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51385e672e49faf784d1eeb47b36fda5db37070000": "0x063ae62f76c019f22db0492b9e2ece04dc8a6c37532cee44cf1e8a43da76053000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dce371857e768db4c8e5e3cb7c5b1aefaea189aa3e9f0e708577666535113517c": "0x00850453ab4667fbce4688912e43f1ded185f847", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51552e94847cedad8a425b0d434c1d2a633f050000": "0x666c474e2f859bb39716a333ad449122df3605cf2d272ab876171d0a61cbdd0700000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700ddaad281bd203effd53340aab51fbcef400e9c": "0x0076585b061100000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51783a73b8f986a0784c1d25a3a00ecc1b81060000": "0xd827433e2e48f71fb28bdfdfeeb6ebef2cc8f1bfcd4062487372fa4a0064ee6e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971ee21068ba0c94e7833940cc4c8058e2dd41096e": "0x00301a45ba2900000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed2a206f51a7c5df6772616e801c151c11cb72334d26d70769e3af7bbff3801a4e2dca2b09b7cce0af8dd81307": "0x88ee494d719d68a18aade04903839ea37b6be99552ceceb530674b237afa9166", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51ad7ce7ef2d4f8544d62f6523e74e6b5bec060000": "0x980761b3559eda50fdd683089d53060d8bb900c1a3935ce66f99f6392612b57f00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dba52bca4f4d427db7c58d6e341ea01f2e5374c826a11fa6d4ab5f0a1c6f13f02": "0x422d9bba52a289ca568b6be38a5bda2ed79fb328", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975490d6fb1ddfd925bef575445c4ccf0f20526b83": "0x00e87648170000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397537902c724861132c14848de8f504f196eef562c": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e77bca46a70638e60c9f81bc09d2daad7ebfb379": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c8495a15d9120bec1b5148745f13667dd7104a82": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51636f98f7a17cf965d1bb6a4c103ec5c2d7080000": "0xd62f37fe5de823d66a120bd90a86e7be43c372a5eb9b487d702a8459203bec1000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d6a54b8c2aa14f2a9ab5c4d99c10f8bde48de08e": "0x0028dda6111000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339765570b90b7887a0ceb57f7604da311e84663a290": "0x0082b4b8400200000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289586e945c70b8411172261d48c2d549e52aacf643": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397002b44b7211507e761721b71b7d9dd77b29c67f1": "0x0010fb62e84e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3868d1aeb675f1fe97eae0da557f9fceff37afa": "0x00d22374f95f00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970620a4b3b1a36178015ae2c7204498ffb160853b": "0x006aedf4123200000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333971dc13ea429ed10d2ad98c5eb66d528e4875bf2c1": "0x00e40b54020000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d517856954c180b3eb0d15cc8e1f29626cc76060000": "0xc08ab19077f91abc5f4163463deebd9054613a93e9d1076b4beaf38684eb4e3200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d3882ccb174b01d544a410c104c75d018db85d9a749e9cc59249cfcf3d4f4d530": "0xc05217770e1cae59d85c04f333cabfde7c7dbefb", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511e00db5f09ff87aaffbf7ce33f6f9fc226070000": "0x268ecd67d92c521327a5dcd19d0e0ed4191367afc90c726911311d404626fb2100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817df6be65cc16c65708bb6a0e4b9958ffe23d1c56ee5683670a69dbbbb70c10d507": "0x553581f31faeec2ffb2119e7ae41a257f5ae0c44", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a50ee9a3d2480093dd4d94442dd6e9ef2044ed39": "0x0000b605da7963000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f4f8d0377b14301ea3778fc39552b421b586f7e4": "0x00f89a5b360300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192891241b9a94b7cbd63c50a9fa35b1e370fc583cb00": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397f8f3088978f60f5a6c1992b1b3ada0f228cf47ac": "0x008ac4fe5b2301000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898b2e32fc97a28e0ebc5482e328a8f8de993650a6": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928997d9c5ee5dd7eeb360eaa1cf37252154ca145e2b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973ba7149b3bc64c6f805d02017a0d71e89362de64": "0x00009573c24800000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51b7acc03ce074748f735cfaf6c4c334b60c080000": "0xda54c31637509fec9b39b34a070c98437c8e78beedd7eacdb46aa99f41ecdb0000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900976b44190fbe9870317db584086f6f9d84d610": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192895a707a440e0a34f11c3c259a20622440cbed1970": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897f4c327d9fb68a5b249d96d7680c8203ef4fe56c": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397482b1c8fcbb12b90573071652cc5d46fc24fa426": "0x00743ba40b0000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5125db438cfe3190f45fff11bf4bef82af14080000": "0x76d8103a1098183b5518fd2c4aa0595379a6708d8bfc2ee6414963f307a83a2c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd006d0f2c483b3ad7df4a76432af79ff2d6d2adb608c1066c7aa1758cc6b0c08": "0xaf1063dc4a5261ecda991dc24ee256e4700be7bb", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970d9905f0c546708f12b180ed038e87fa702e0cad": "0x009cc589734803000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d7ed18ee2a4570d6d5da249195b8169757c0104f9398db1be982e656844dbe33d": "0x0a9c3868f96e8a3e5386470d78f78046e09cf77a", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397611ef0a18a260834d1a063bd279c8f4dfe6f37c0": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397b3aeabe65664ab160d8ddef2d0a74f24faf321c7": "0x0080dd62b22102000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339709790fda0cc6a748b715bb2ecd8fcc012d38811a": "0x0080c045b21c00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333974b7530fd33209c28c18e254816adf0e2f065be7e": "0x00acd53cf37000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333975f27b51b5ec208ee9cb25b55d8728243318aa87413115388a04d0083e792849e09fe496e": "0x0030bd6c70430600000000000000000046a4220a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7d341dec7a554c2f7117527a1514f34ead904b6": "0x0048513e650e00000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289002848284eb655a5a99250ffbb09605b8e624261": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900c8d2f03af9ee67f36463ef212e09137800e377": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d513cb01d9cce3fb6e144a034235f01c66e8a000000": "0x7628a5be63c4d3c8dbb96c2904b1a9682e02831a1af836c7efc808020b92fa6300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397924c251902924c7dbd4cbf166d42757fb2d146cb": "0x006ee223f3bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dd0fb8a9ff2c401782c57be9d81d51d4083fb4d77deca12888b29dc737274e832": "0xf613cbfe3c3552aa32bd23cc820b811b666007e3", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5128716b04be1093d3ffa84a217c2e4be6bb060000": "0x48e5f2ba6ff67730b0ac46f70411fb5d836c8981bd1a239fe6ef450ec72ae00800000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519caaa89f83f3e375d77d9b339c1563d8d7050000": "0x7c63cf2a62f9fec0367c3f77d665e2406ca7940cdce57f736cc6ae356b71b61200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192897758d89177a41267dd2390262707faa602f4f2d9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289967e82bac222eb299da4d0b3c47a4d2c69602fab": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51da61288701854493ecd2e07ca345929b99070000": "0xac133ebfde441672c055b79ca9a6059850984eead1ae036f48ca1230e7f0556f00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51f68afb52363799c2c565109210cfdf7eb2040000": "0x8401968bdcdfe4b6d9d9fe8b0b11348ca789ac0135f0ff4299de7dad5c332b4300000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289c61840fbe306c4e984a41128a5a5a492f5491ddc": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700467243b6d8312a68f35ca037c0428d52ed8aaf": "0x00761509960840000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e571ba1d28c1acbc64c8b63b6a4c9664aca816da": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289089913f600e20bcca596e00940631f783fcc3fe1": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a7f5082cece0be9b14e8be6c1747d0fca39ec8d7": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e7321957993cae05c6d5e4282e83d1b09b57caa9": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289e9faddbdf9c03466a607fc06415ac3f129aa2dc4": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d516113b4784bbe247ec0691d70b76ed5c096000000": "0x1492d85a4c248f9eb0c1d5786ba25459f136216d637cf45f69e7ac035a94873c00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397202c3ba79b184884973405abf8b7d3d65cf73f3f": "0x001aa84f47bf00000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397ec50c43867523234d23f0238a29f3e0df59e7b4f": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900010b75619f666c3f172f0d1c7fa86d02adcf9c": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890063a1ad9b3ad315d4a0bb590435d34d4593845e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289320b5f61e5ce5f386149dd2f1f65019657724650": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898c723d6c9f5710dd0cc7219a4658f09c3f5d9928": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8ae2ec50efc3eab6dac128888c6171c2c1a01a03fd01109ec467daa2c3af3b75": "0xfc6b49f7539a0bdb98f78b3089baeb861b9e71c1", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339700845040dab8b551a3b246664a6f9d2c2431c0f2": "0x00c0e1d0612100000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973024413123731ac0ce07c13e9511c0bb76a228d9": "0x006ee223f3bf00000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51128ee2ee636f459614b860212cf9687bf1070000": "0x6a36947e2a739ac119a83602d101a0ea24df365aacfd1a91c166d8734f96491e00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d5a14fd5630d7c9bbf5f0bf20e8dfb6b8d9cd0be47a64b65c9c4ffea8d25acb27": "0xf7d61f6573db5f748e402dee14b0aa70a1a12288", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333978b1f512edfd229d910efed5af91445aaebc8c7a1": "0x009268fea65208000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397a899ca042ea5de91cd2174dfe9e13233e9deafd6": "0x001428b7820700000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397e403233a64dd902a5cd50e83c5a08b7896875ee8": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890a4390841918eb8b1ca88e377ada4da46f8f83e8": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289008ce1ef049738e34a1f1e03764ec209b329a558": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5180c0199c5a46faaa48e11b38c51ba77927060000": "0x9a99db07618548fa203c1816e4fc95741d00d8d0ce0f38eec8633f0ea5a6c51900000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e3339711feb627f21cb0d2e4daeb7f8aeee1fad6574704": "0x00743ba40b0000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ce76a4eb328d7c14d3a425ac145f887d7277e6ff": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289d52edbffac1aea8f0bdcd78ca849abfc51a03d28": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289ed434693c34b81c2f7979f2f2724a63a0709fbc1": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa9119289697eeab43d4558bd0d82e805d319d59578fd12ef": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d511748e36c613e593ed0a5528a8552b89c11060000": "0x4ee051c50b5c51b147d939e25ce61aa7e05af10ced2ed62ce7051509009ddf5400000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397003e3ea8f5c20dfa974948da91960c0812c09ab9": "0x002acfc5745300000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d9efbf480d958cdfcb501e7c573026da710fbc824f4fa05501fa36cfad8dfcd50": "0x5ffcf1f0f84cfc6fd881348ac8e74ec5856beefe", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519ab389998404087e7874af1a002dfc2373070000": "0x7c911f087ecbd131871ac6262c81521e5f32f5e626d30ffb35456a42c0d95c3500000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192898049419a99016123ed264ca39436a91c35c7fe2a": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dbe672adea7c17054748cf224dbd6bf1c769e99f301921ccc034b14b0234e7267": "0x341ad4e79cb95c9c556e0bf96863d78a182d08f1", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51c9fb2f63050fa8c2e727e4d4f43f820138050000": "0x44d131755e0f4f5ae4baaf483ee1dee0f775c91c1451e8a06195b471a555941200000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817de4317517c949be76bb6d6bf45c664e15c948968ecf47fa0b29ef71c331b30c3d": "0xe403233a64dd902a5cd50e83c5a08b7896875ee8", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890024d44f11a321a70888283808c81c454b156546": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928925d56aca979398aca283611258eaf84de39c0d9d": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f3654937b2fb15344117b9b16fe5065d8f0d386": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d5136cfa4ec2770d39006c761b4a1cb69a61c090000": "0x102ecd1c98119bb49b5fdcdde4160e597892cb30aa1aa3a40dafe3717e59a74a00000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970026db7abf8a3fe7b3543a035d11e22b90615ee5": "0x0050a95c091900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192896f4920d9045a58646dada2c7a8b48f513387c86c": "0x00", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51797c51580ad31b9c22b7bda52b6d0042b4080000": "0x3e5f290acd69dfe4ef0ed31024db52c380ea2b18be398c37cd53d1ffe807d77700000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d519ed1a0d6962298a486c3d85733161c5c12060000": "0xa24a3d7ea476f7eadf8c65f9ac5aec691aa7af4d0e4a8863795482016401a73200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e5d255ba83d61f0224659de3c170b2fb0d050000": "0x605a10f7a8372c3ab9d2b945827cbd548781d9c3a054697de99f995aa096ce5200000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e0a391549a38511d69231e67a8ab32d39d060000": "0x22cf9dc37215691aeb166d34895f9651b6b9f0eac9e67795b1d48e8eea19a37100000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333970005ed1b33b541a3029004ccbba7cef3748ae1c7": "0x007a2120ce1100000000000000000000", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817ddc73a045120bad713a3c84fb3ea30d2b28b680eae6737465ab10706b088b0110": "0x004547158d12daf5a188c111543b87aaa3aafb92", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817d8401968bdcdfe4b6d9d9fe8b0b11348ca789ac0135f0ff4299de7dad5c332b43": "0x79af82bbb0552f8ad0192f4a7638dfbe8be00908", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333975ca455068327d42db7e66c6c80532452f39ad256": "0x0056b961800900000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900d8566765f1c00841096a4c097c5da2cf656509": "0x00", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817db2dc42595cd47cf78bd4fa4f99b99cd4f20ec4ea682b0715d906b5694e4dc345": "0x656e42bef0b20a74de23d365958a4461f595b755", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e33397d023bd0c9a21b2c69bff060f85fdee8b2a2e2908": "0x0008db62010400000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900b01d06372d7bfdf7ddacb9b11037e024377810": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa911928900ef6623036edb96606b9dff2b5b26e697fbbb9e": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890aa431c58dac3b6f8cc07877c817165572ac383c": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950580521c32d95894070617261809ab54fd64223ac5dd0c547efbf0015944d1bcf8f4ca721716d8922fc940c9a61": "0x82104c22c383925323bf209d771dec6e1388285abe22c22d50de968467e0bb6c", - "0x9c5d795d0297be56027a4b2464e3339763e6d3c1fb15805edfd024172ea4817dc8855e85e66cf69a1652147e4f0f29ff9c32eb0bb2bf5ca462f4f7d022938c69": "0xd1ba30cfd46c08cf699b00c705de01764689c272", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51e1685631e887d23acb4117fe64953bc9b7060000": "0xdeeb4b4fbcbc7e7e1dd19a2371c71951f820801be5e87e8e18e2e2291e4b132d00000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51bb2a19be328e67402a48bfde04baa67e92070000": "0xf8f5d1e351b28ed8669a4b295907d12566df2267d0d244b21a0974a0830e4b1400000000000000000000000000000000", - "0x1a736d37504c2e3fb73dad160c55b2918ee7418a6531173d60d1f6a82d8f4d51fb95039bbaef1da8a64e125600abf60ae2040000": "0xf2f675d0370f2f3fa3e011cd0c381e2c12d17fe56a01ca3045ee38357e15802000000000000000000000000000000000", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890055e4b4e56e60aed3224764a6479e704e2cb236": "0x00", - "0x9c5d795d0297be56027a4b2464e33397c0793c53db77bf57f00ed54aa91192890328d281d559d1e3aad4059a8d5a137e4dbc663b": "0x00", - "0x9c5d795d0297be56027a4b2464e333979c5d795d0297be56027a4b2464e333973f9265fd0b4f92eee642703e72d749c077cffbbb": "0x002acfc5745300000000000000000000" - }, - "childrenDefault": {} - } - }, - "codeSubstitutes": { - "0x86aa36a140dfc449c30dbce16ce0fea33d5c3786766baa764e33f336841b9e29": "0x0061736d010000000184033660037f7f7f017f60027f7f017f60027f7f0060017f0060047f7f7f7f0060057f7f7f7f7f0060037f7f7f0060017f017e60027e7e0060037f7e7e0060027f7e017f60037f7e7f017f6000017f60027f7f017e60037f7f7e017e60000060017e017f60017f017f60017e0060017e017e60047f7e7e7e017f60027f7e017e6000017e60037e7e7f017e60027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f0060037e7f7f0060047f7f7f7e0060047f7f7e7e0060067f7f7f7e7e7f0060027e7f0060047e7f7f7f0060097f7f7f7f7f7f7f7f7e0060067f7f7f7f7e7e00600a7f7f7f7f7f7f7f7f7f7f0060097f7f7f7f7f7f7f7f7f0060077f7f7e7e7e7f7f0060027f7e0060077f7e7e7e7e7e7e0060047e7e7e7e017f60037e7f7f017f60047f7e7f7f0060047f7e7e7f0060057f7f7f7e7e0060057e7f7e7e7f0060077f7f7e7e7f7e7e0060067f7f7f7f7f7f017f60057f7f7e7e7f0060057f7f7f7e7e017f60057f7e7e7e7e017f60057f7e7e7f7f0060057f7e7e7e7e0002a70e2d03656e76066d656d6f727902001403656e76206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f31000803656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000903656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31000a03656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31000b03656e76286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f31000c03656e762c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f31000d03656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31000d03656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31000a03656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31000e03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f32000b03656e76276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f31000f03656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31001003656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000303656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001103656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31001003656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31001003656e76206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31001003656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31001003656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31001003656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31001203656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31001203656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31001203656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31001303656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31000c03656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001403656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001503656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000903656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001603656e76226578745f6f6666636861696e5f72616e646f6d5f736565645f76657273696f6e5f31000c03656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31001303656e761c6578745f73746f726167655f617070656e645f76657273696f6e5f31000803656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31001303656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31001203656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31001203656e76286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31000f03656e761c6578745f73746f726167655f6578697374735f76657273696f6e5f31001003656e76196578745f73746f726167655f6765745f76657273696f6e5f31001303656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31001303656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001703656e762a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f31000f03656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001603656e76196578745f73746f726167655f7365745f76657273696f6e5f31000803656e76276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f31000f03c408c20811110303000011110f0f0f0f0f060602060005000101020102020201180307191a06000501010111110106061b01010101060101000101000101001c00010102011106060202020206060206060606060204010203060604051d05010101020201060201010206020602030602060606060606060602060d0202020202020202020202020602040202020202020206060302010202060202020202020202020202020202020f02020f02020202020202020202020203030202020202020202020202020202030204020202020102061e061e03020206020303020302020202030206060102021a0202020202020202020001010101010106060306050601040303030401050406020606000203020400030303030602021e0206110602061f1e0302030604020602060406020602060603060302021b020201060602030620020306010206020202060403160605020502020502060206070f021103020202060606020606061b040302020203020202030606020c06060202060206050307020602060202020202030303020202020202022103030202110303030203030202030202020206020303030202060303030203030202020203030202020202020202020303030202020303020302020202030303020603020202060602061f0606030602220206062306020602030402010206110f020202020203020202020202030303020202020303020305060606021e1e021e1e0202060206010602241b11110307070204030303062502020202020202020302030303030402262702280202030302032002020303030202021a0202020302030229020f02020604020606020202020202020202060202020202020202022a2b020601020f02110f0f0202020606060206060606020606060606060202060606022c060206060206060206060202020202020203030202020202020202020302020202020206020206050205050d06020306112d060306060203020102020203060211022e0606021e031e0304020202020101010202020204060302040303030303030303030303030303030303030303030303030101020206110202010202040606060606060202020202020604020202030206022f02030402020f03043003040202032904110c020211010201020301030303020202020206061131010303030903030302321a03030302010101020601030f0f040202020203021103050502020203030202020205270202020203030303030203030302030602030303030d0d030f020c03020d0d0d0d0d0d0d0d060d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d040d0d0d0d0d0d0d0d06060d0d0d0d020202021d0511020204020202021d05110402030303020203020202030203020202040206020204031b01021a040203030202030202020202021b051b0602040c0606030202020233060602040303030303020202020234031202030603030306030206110105270202010311020101022c35353535000000002c0407017001910291020619037f01418080c0000b7f0041ecf5cc000b7f0041ecf5cc000b07980b2a195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000c436f72655f76657273696f6e00c20712436f72655f657865637574655f626c6f636b00c30715436f72655f696e697469616c697a655f626c6f636b00ca07114d657461646174615f6d6574616461746100cb071c426c6f636b4275696c6465725f6170706c795f65787472696e73696300cc071b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00cd0720426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300ce071c426c6f636b4275696c6465725f636865636b5f696e686572656e747300cf0718426c6f636b4275696c6465725f72616e646f6d5f7365656400d0072b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00d107214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200d3071850617261636861696e486f73745f76616c696461746f727300d4071e50617261636861696e486f73745f76616c696461746f725f67726f75707300d5072050617261636861696e486f73745f617661696c6162696c6974795f636f72657300d6072750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f6461746100d7072650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f75747075747300d8072550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c6400d9071a50617261636861696e486f73745f73657373696f6e5f696e666f00da071d50617261636861696e486f73745f76616c69646174696f6e5f636f646500db072850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f646500dc072c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c69747900dd071e50617261636861696e486f73745f63616e6469646174655f6576656e747300de071a50617261636861696e486f73745f646d715f636f6e74656e747300df072c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e747300e0071e4772616e6470614170695f6772616e6470615f617574686f72697469657300e107384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300e207274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600e30715426162654170695f636f6e66696775726174696f6e00e5071b426162654170695f63757272656e745f65706f63685f737461727400e60715426162654170695f63757272656e745f65706f636800e70712426162654170695f6e6578745f65706f636800e80724426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600e90735426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300ea0721417574686f72697479446973636f766572794170695f617574686f72697469657300eb072153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300ec071f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797300ef071d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500f007205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00f107275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c7300f2070a5f5f646174615f656e6403010b5f5f686561705f626173650302098f04010041010b900243475950dd0851525a69ee02f902ea05ec05ed058f015f5eb9073f40416a4a6061626364657e870189015b85028c08f603f706f806890288028702dc03f6069c029d029e02b802ae02b602b002b102b502b702b902e10898059405ba03b903b803b703e703dd05c103d905c703cb03ca03aa08cf03f203ce03e503a808cd03e203e103e003df03e803e603a708f303f103fb03fa03f903f803a70796059305b004af04b5045cf904f8048a08f704ff0483058105de05db05dc05da05d8059e05d705d605e405e305e205e105e005930694069206b506b606b706c308c2089e06c408d408d208c108b404b3049f06d304ad04ac04ae04d404b407b307b507da03d903a006db0385078407a1068607d306fe048005b807b707c007d505d405a206df058006f604a306c003bf03a406d303a607a507a506be07b207b107a606bf07a308a208a706a608b60888088708a8068f088b08c903c803a906cc03d503d108d008aa06f503f403ab06f703fe03c503c403ac06c603de0281078007ad0682079c07cb08ae06de03dd03af06e403fc03b503b403b006b603d403ef03ee03b106f003fd0384028302b2068602ad02f406f306b306f50694078b078a07b4068c07f106fa06f90688019a0597059c058d078f07900793078e07a807b607ba07c107e208d8088d088908ba02bb02a508a408ab08a908a9029d0599059b05c908c808c708c608c50890010abcce68c20806002000102d0b0700200010df080b06002000102f0b0700200010de080b0a0020002001200210310b2a01017f0240200210df082203450d002003200020022001200120024b1b10e9081a200010de080b20030b0600200010330b1d01017f0240200010df082201450d0020014100200010eb081a0b20010b05001035000b05001037000b05001034000b1700410141cce2cc00410741d4e2cc00412210d90800000b110041d0f0cc004111418080c0001039000b4701017f230041206b22032400200341146a4100360200200341d4e2cc00360210200342013702042003200136021c200320003602182003200341186a360200200320021044000b950101017f02400240200141004e0d0041012102410021010c010b0240024002400240200228020022030d002001450d022001102c21020c010b0240200228020422020d002001450d022001102c21020c010b200320022001103021020b20020d012000200136020441012101410121020c020b410121020b20002002360204410021020b20002002360200200041086a20013602000bde0201067f230041206b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240200141146a2802000d00200621070c010b02402004450d00410021054101210402402006410f4b0d00200341046a280200450d030b200620066a220720064f0d010c020b4100410041ac80c000103c000b02402007417f4c0d00024020070d0041002105410121040c020b200721052007102c22040d011036000b1038000b20004100360208200020043602002000200536020420022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a290200370300200220012902003703080240200241046a41bc80c000200241086a103d0d00200241206a24000f0b41d480c0004133200241086a418881c000419881c000103e000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c2003418c84c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20021044000bc20501097f230041306b22032400200341246a2001360200200341033a00282003428080808080043703082003200036022020034100360218200341003602100240024002400240024020022802082204450d0020022802002105200228020422062002410c6a2802002207200720064b1b2208450d01200020052802002005280204200128020c1100000d03200541086a2100200228021021092008210a034020032004411c6a2d00003a00282003200441046a290200422089370308200441186a28020021014100210741002102024002400240200441146a2802000e03010002010b2001410374210b410021022009200b6a220b2802044102470d01200b28020028020021010b410121020b2003200136021420032002360210200441106a28020021020240024002402004410c6a2802000e03010002010b20024103742101200920016a22012802044102470d01200128020028020021020b410121070b2003200236021c20032007360218200920042802004103746a2202280200200341086a20022802041101000d04200a417f6a220a450d03200441206a2104200041046a210220002802002101200041086a2100200328022020012002280200200328022428020c110000450d000c040b0b2002280200210520022802042206200241146a2802002204200420064b1b2208450d0020022802102104200020052802002005280204200128020c1100000d02200541086a21002008210203402004280200200341086a200441046a2802001101000d032002417f6a2202450d02200441086a2104200041046a210120002802002107200041086a2100200328022020072001280200200328022428020c110000450d000c030b0b410021080b0240200620084d0d002003280220200520084103746a22042802002004280204200328022428020c1100000d010b410021040c010b410121040b200341306a240020040b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c20054190e2cc00360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041044000b8d0201047f230041206b22032400024002402000280200220041046a2802002204200041086a28020022056b2002490d00200028020021040c010b0240200520026a22062005490d00200441017422052006200520064b1b22054108200541084b1b21050240024020040d00200341003602100c010b200341106a41086a410136020020032004360214200320002802003602100b20032005200341106a103a200341086a2802002105024020032802004101460d00200020032802042204360200200041046a2005360200200041086a28020021050c020b2005450d001036000b1038000b200420056a2001200210e9081a200041086a2200200028020020026a360200200341206a240041000bbf0501047f230041306b2202240020002802002100024002400240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c040b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c030b024020002802082203200041046a280200460d00200028020021040c020b200341016a22042003490d04200341017422052004200520044b1b22044108200441084b1b21040240024020030d00200241003602200c010b200241206a41086a410136020020022003360224200220002802003602200b200241106a2004200241206a103a200241186a2802002103024020022802104101460d00200020022802142204360200200041046a2003360200200028020821030c020b20030d030c040b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200420036a20013a00002000200028020841016a3602080c040b0240200041046a2802002204200041086a28020022036b2001490d00200028020021040c030b200320016a22052003490d01200441017422032005200320054b1b22034108200341084b1b21030240024020040d00200241003602200c010b200241206a41086a410136020020022004360224200220002802003602200b200241106a2003200241206a103a200241106a41086a2802002103024020022802104101460d00200020022802142204360200200041046a2003360200200041086a28020021030c030b2003450d010b1036000b1038000b200420036a2002410c6a200110e9081a200041086a2200200028020020016a3602000b200241306a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41bc80c000200241086a103d2101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c2002418c82c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a482c0001044000b0b002000350200200110480b3401017f230041106b220224002002200136020c200220003602082002419c84c000360204200241d4e2cc0036020020021049000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241fc82c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a419483c0001044000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241d083c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41e883c0001044000b0d0020002802001a037f0c000b0bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a20004290ce0080220442f0b17f7e20007ca7220641ffff037141e4006e220741017441de84c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441de84c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441de84c0006a2f00003b00000b02400240200541094a0d00200241096a2003417f6a22036a200541306a3a00000c010b200241096a2003417e6a22036a200541017441de84c0006a2f00003b00000b200141d4e2cc004100200241096a20036a412720036b104b2103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141c4e2cc003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a103b410141cce2cc0041072001280210200128021810d90800000b0c0042f3a38eecb2fea7f4570bea0501067f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001476a2108200a41016a210a2009417f6a22090d000b0b200820076a21070b412b418080c40020061b21080240024020002802084101460d004101210a2000200820012002104c0d012000280218200320042000411c6a28020028020c1100000f0b02402000410c6a280200220920074b0d004101210a2000200820012002104c0d012000280218200320042000411c6a28020028020c1100000f0b024002400240024002402005410871450d00200028020421052000413036020420002d002021064101210a200041013a00202000200820012002104c0d054100210a200920076b22092101410120002d0020220820084103461b4103710e0403020102030b4100210a200920076b22092105024002400240410120002d0020220720074103461b4103710e0402010001020b2009410176210a200941016a41017621050c010b410021052009210a0b200a41016a210a0340200a417f6a220a450d0420002802182000280204200028021c280210110100450d000b41010f0b2009410176210a200941016a41017621010c010b410021012009210a0b200a41016a210a02400340200a417f6a220a450d0120002802182000280204200028021c280210110100450d000b41010f0b200028020421094101210a200028021820032004200028021c28020c1100000d01200141016a2108200028021c210120002802182102024003402008417f6a2208450d014101210a200220092001280210110100450d000c030b0b200020063a00202000200536020441000f0b200028020421094101210a2000200820012002104c0d00200028021820032004200028021c28020c1100000d00200541016a2108200028021c210120002802182100034002402008417f6a22080d0041000f0b4101210a200020092001280210110100450d000b0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341a886c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021044000b8908010a7f20002802102103024002400240200028020822044101470d0020034101470d020c010b20034101460d002000280218200120022000411c6a28020028020c1100000f0b200120026a2105024002400240200041146a28020022060d0041002107200121080c010b41002107200121080340200520082203460d02200341016a2108024020032c00002209417f4a0d00200941ff017121090240024020082005470d004100210a2005210b0c010b20032d0001413f71210a200341026a2208210b0b200941e001490d0002400240200b2005470d004100210c2005210b0c010b200b2d0000413f71210c200b41016a2208210b0b200941f001490d0002400240200b2005470d004100210b0c010b200b41016a2108200b2d0000413f71210b0b200a410c742009411274418080f0007172200c41067472200b72418080c400460d030b200820036b20076a21072006417f6a22060d000b0b20052008460d00024020082c00002203417f4a0d0002400240200841016a2005470d0041002108200521060c010b200841026a210620082d0001413f7141067421080b200341ff017141e001490d000240024020062005470d0041002106200521090c010b200641016a210920062d0000413f7121060b200341ff017141f001490d00200341ff01712103200620087221080240024020092005470d00410021050c010b20092d0000413f7121050b20084106742003411274418080f0007172200572418080c400460d010b024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b0240024002402002450d004100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000b2008200028020c22054f0d014100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000c030b0b41002108200028020c22050d010b2000280218200120022000411c6a28020028020c1100000f0b41002103200520086b22052107024002400240410020002d0020220820084103461b4103710e0402010001020b20054101762103200541016a41017621070c010b41002107200521030b200341016a210302400240024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000c020b0b2000280204210841012103200028021820012002200028021c28020c1100000d01200741016a2103200028021c210720002802182100034002402003417f6a22030d0041000f0b200020082007280210110100450d000b0b410121030b20030be00801067f230041f0006b220524002005200336020c20052002360208410121062001210702402001418102490d00410020016b2108418002210903400240200920014f0d0041002106200020096a2c000041bf7f4c0d00200921070c020b2009417f6a21074100210620094101460d01200820096a210a20072109200a4101470d000b0b200520073602142005200036021020054100410520061b36021c200541d4e2cc0041ea86c00020061b3602180240024002400240200220014b22060d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b20052002360220024002402002450d0020022001470d010b200221060c030b200141016a210903400240200220014f0d00200020026a2c00004140480d00200541246a2109200221060c050b2002417f6a210620024101460d03200920024621032006210220030d030c000b0b20052002200320061b360228200541306a41146a4103360200200541c8006a41146a4104360200200541d4006a410436020020054203370234200541f086c0003602302005410136024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a20041044000b200541e4006a4104360200200541c8006a41146a4104360200200541d4006a4101360200200541306a41146a4104360200200542043702342005418887c0003602302005410136024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a20041044000b200541246a21090b024020062001460d00410121034100210802400240200020066a22072c000022024100480d002005200241ff0171360224200541286a21010c010b200020016a220121030240200741016a2001460d00200741026a210320072d0001413f7121080b2002411f71210702400240200241ff017141e0014f0d00200820074106747221020c010b410021002001210a024020032001460d00200341016a210a20032d0000413f7121000b200020084106747221030240200241ff017141f0014f0d0020032007410c747221020c010b410021020240200a2001460d00200a2d0000413f7121020b20034106742007411274418080f00071722002722202418080c400460d020b2005200236022441012103200541286a21012002418001490d00410221032002418010490d0041034104200241808004491b21030b200520063602282005200320066a36022c200541306a41146a4105360200200541ec006a4104360200200541e4006a4104360200200541c8006a41146a4106360200200541d4006a410736020020054205370234200541a887c00036023020052001360258200520093602502005410136024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541206a360248200541306a20041044000b41e8aac700412b20041039000b1000200120002802002000280204104e0b7c01037f230041206b2202240002402000280200200110550d002001411c6a2802002103200128021821042002411c6a4100360200200241d4e2cc003602182002420137020c2002419088c00036020820042003200241086a103d0d002000280204200110552101200241206a240020010f0b200241206a240041010ba40403037f017e017f410121020240200128021841272001411c6a2802002802101101000d0041f4002103410221040240024002400240024002402000280200220041776a0e1f05010303000303030303030303030303030303030303030303040303030304020b41f2002103410221040c040b41ee002103410221040c030b200041dc00460d010b0240024002400240200010530d0020001054450d01410121040c030b200041017267410276410773ad4280808080d0008421050c010b200041017267410276410773ad4280808080d0008421050b410321040b200021030c010b20002103410221040b03402004210641dc002100410121024101210402400240024002400240024020060e0402010500020b02400240024002402005422088a741ff01710e06050302010006050b200542ffffffff8f608342808080803084210541f50021000c060b200542ffffffff8f608342808080802084210541fb0021000c050b413041d70020032005a72204410274411c7176410f712200410a491b20006a2100024020040d00200542ffffffff8f60834280808080108421050c050b2005427f7c42ffffffff0f832005428080808070838421050c040b200542ffffffff8f6083210541fd0021000c030b41002104200321000c030b20012802184127200128021c2802101101000f0b200542ffffffff8f60834280808080c0008421050b410321040b20012802182000200128021c280210110100450d000b0b20020ba60301047f0240024002404100410f200041a49a04491b2201200141086a2201200141027441b094c0006a280200410b742000410b7422014b1b2202200241046a2202200241027441b094c0006a280200410b7420014b1b2202200241026a2202200241027441b094c0006a280200410b7420014b1b2202200241016a2202200241027441b094c0006a280200410b7420014b1b220241027441b094c0006a280200410b74220320014620032001496a20026a2201411e4b0d0041b105210402402001411e460d00200141027441b494c0006a28020041157621040b4100210202402001417f6a220320014b0d002003411f4f0d03200341027441b094c0006a28020041ffffff007121020b02402004200141027441b094c0006a280200411576220141016a460d00200020026b2102200141b105200141b1054b1b21032004417f6a210441002100034020032001460d032000200141bc95c0006a2d00006a220020024b0d012004200141016a2201470d000b200421010b20014101710f0b2001411f41f09ac000103c000b200341b10541809bc000103c000b2003411f41ac95c000103c000be20601077f024002400240024002400240024002400240200041ffff034b0d0020004180fe0371410876210141ed88c000210241002103200041ff0171210402400340200241026a2105200320022d000122066a21070240024020022d000022022001470d0020072003490d06200741a3024f0d07200341d089c0006a210203402006450d022006417f6a210620022d00002103200241016a210220032004470d000b410021060c050b200220014b0d022007210320052102200541bf89c000470d010c020b2007210320052102200541bf89c000470d000b0b200041ffff0371210441f28bc0002102410121060340200241016a21000240024020022d000022034118744118752207417f4a0d00200041a78ec000460d07200741ff007141087420022d0001722103200241026a21020c010b200021020b200420036b22044100480d0220064101732106200241a78ec000470d000c020b0b0240200041ffff074b0d0020004180fe0371410876210141b88ec000210241002103200041ff0171210402400340200241026a2105200320022d000122066a21070240024020022d000022022001470d0020072003490d09200741b0014f0d0a200341848fc0006a210203402006450d022006417f6a210620022d00002103200241016a210220032004470d000b410021060c050b200220014b0d022007210320052102200541848fc000470d010c020b2007210320052102200541848fc000470d000b0b200041ffff0371210441b390c0002102410121060340200241016a21000240024020022d000022034118744118752207417f4a0d00200041d693c000460d0a200741ff007141087420022d0001722103200241026a21020c010b200021020b200420036b22044100480d0220064101732106200241d693c000470d000c020b0b41002106200041b5d9736a41b5db2b490d00200041e28b746a41e20b490d002000419fa8746a419f18490d00200041dee2746a410e490d00200041feffff0071419ef00a460d00200041a2b2756a4122490d00200041cb91756a410b4f0d070b20064101710f0b2003200741c089c0001057000b200741a20241c089c000104d000b41e8aac700412b41a88ec0001039000b2003200741c089c0001057000b200741af0141c089c000104d000b41e8aac700412b41a88ec0001039000b200041f08338490ba70201037f23004180016b22022400024002400240024020012802002203411071450d00410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141ac88c0004102200220036a4180016a410020036b104b21000c010b02402003412071450d00410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d03200141ac88c0004102200220036a4180016a410020036b104b21000c010b2000ad2001104821000b20024180016a240020000f0b2000418001419c88c0001056000b2000418001419c88c0001056000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341b088c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021044000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341fc93c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021044000bec0201017f230041f0006b220624002006200136020c2006200036020820062003360214200620023602102006410236021c200641f09bc000360218024020042802000d00200641386a41146a4103360200200641c4006a4103360200200641d8006a41146a41033602002006420437025c200641f49bc0003602582006410436023c2006200641386a3602682006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051044000b200641206a41106a200441106a290200370300200641206a41086a200441086a29020037030020062004290200370320200641d8006a41146a4104360200200641d4006a4108360200200641386a41146a4103360200200641c4006a41033602002006420537025c200641949cc0003602582006410436023c2006200641386a3602682006200641206a3602502006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051044000b140020002802002001200028020428020c1101000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a103d2100200241206a240020000b1c00200128021841f39cc000410b2001411c6a28020028020c1100000b1c00200128021841fe9cc000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a410136020020034201370214200341c4e2cc003602102003410436022c2003200341286a3602202003200341086a360228200341106a20021044000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a103d2101200241206a240020010b15002001200028020022002802002000280204104e0b8a0501077f0240024002402002450d000340024020002802082d0000450d00200028020041c59dc0004104200028020428020c110000450d0041010f0b4100210320022104024002400340200120036a210502400240200441074b0d002004450d03200220036b2106410021070340200520076a2d0000410a460d022006200741016a2207470d000c040b0b024002400240200541036a417c7120056b2207450d0020042007200720044b1b2106410021070340200520076a2d0000410a460d042006200741016a2207470d000b2006200441786a22084b0d020c010b200441786a2108410021060b02400340200520066a220741046a2802002209417f732009418a94a8d0007341fffdfb776a7120072802002207417f732007418a94a8d0007341fffdfb776a7172418081828478710d01200641086a220620084d0d000b0b200620044b0d070b20042006460d02200420066b21092001200620036a6a21054100210702400340200520076a2d0000410a460d012009200741016a2207470d000c040b0b200620076a21070b200720036a220741016a21030240200720024f0d00200120076a2d0000410a470d00410121070c030b200220036b2104200220034f0d000b0b41002107200221030b200028020820073a0000200028020421072000280200210602400240024020022003460d000240200220034d0d00200120036a22052c000041bf7f4a0d020b200120024100200341cc9dc000104f000b200620012002200728020c110000450d0141010f0b0240200620012003200728020c110000450d0041010f0b20052c000041bf7f4c0d040b200120036a2101200220036b22020d000b0b41000f0b20062004418c9ec0001056000b200120022003200241dc9dc000104f000b850201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002003200110602101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41dc9ec000200241086a103d2101200241206a240020010b0d0020002802002001200210600b8c0201027f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002003200110602101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41dc9ec000200241086a103d2101200241206a240020010bd40202047f027e230041c0006b2203240041012104024020002d00080d00200028020421050240200028020022062d0000410471450d00024020050d0041012104200628021841f59ec00041022006411c6a28020028020c1100000d02200028020021060b41012104200341013a0017200341346a41c09ec000360200200320062902183703082003200341176a3602102006290208210720062902102108200320062d00203a00382003200837032820032007370320200320062902003703182003200341086a3602302001200341186a200228020c1101000d01200328023041d89ec0004102200328023428020c11000021040c010b41012104200628021841bc9ec00041f49ec00020051b4102410120051b2006411c6a28020028020c1100000d0020012000280200200228020c11010021040b200020043a00082000200028020441016a360204200341c0006a240020000b840703017f027e027f02402002280200220341134c0d00024002400240200042808084fea6dee111540d002002200341706a2203360200200120036a200042808084fea6dee111802204428080fc81d9a19e6e7e20007c2200428080e983b1de1680a741ff017141e4007041017441de84c0006a2f00003b0000200228020020016a41026a20004280a094a58d1d80a741ffff037141e4007041017441de84c0006a2f00003b0000200228020020016a41046a20004280c8afa02580a741e4007041017441de84c0006a2f00003b0000200228020020016a41066a20004280c2d72f80a741e4007041017441de84c0006a2f00003b0000200228020020016a41086a200042c0843d8042e40082a741017441de84c0006a2f00003b0000200228020020016a410a6a20004290ce008042e40082a741017441de84c0006a2f00003b0000200228020020016a410c6a200042e40080220542e40082a741017441de84c0006a2f00003b00002005429c7f7e20007ca72103410e21060c010b024020004280c2d72f5a0d00200021040c020b2002200341786a2203360200200120036a20004280c2d72f8022044280bea8507e20007ca7220341c0843d6e41ff017141e4007041017441de84c0006a2f00003b0000200228020020016a41026a20034190ce006e41ffff037141e4007041017441de84c0006a2f00003b0000200228020020016a41046a200341e4006e220641e4007041017441de84c0006a2f00003b00002006419c7f6c20036a2103410621060b2001200228020020066a6a200341017441de84c0006a2f00003b00000b024002402004a722064190ce004f0d00200621030c010b20022002280200417c6a2203360200200120036a20064190ce006e220341f0b17f6c20066a220641ffff037141e4006e220741017441de84c0006a2f00003b0000200228020020016a41026a2007419c7f6c20066a41ffff037141017441de84c0006a2f00003b00000b0240200341ffff0371220641e400490d0020022002280200417e6a2207360200200120076a200641e4006e2206419c7f6c20036a41ffff037141017441de84c0006a2f00003b0000200621030b0240200341ffff037141094b0d0020022002280200417f6a2206360200200120066a200341306a3a00000f0b20022002280200417e6a2206360200200120066a200341ffff037141017441de84c0006a2f00003b00000f0b41fb9ec000411c41989fc0001039000bd108020b7f017e4101210302400240200228021841222002411c6a2802002802101101000d000240024020010d00410021040c010b200020016a21052000210641002104200021074100210802400340200641016a210902400240024020062c0000220a4100480d00200a41ff0171210b0c010b0240024020092005470d004100210b200521060c010b20062d0001413f71210b200641026a220921060b200a411f7121030240200a41ff0171220a41e0014f0d00200b200341067472210b0c010b0240024020062005470d004100210c2005210d0c010b20062d0000413f71210c200641016a2209210d0b200c200b41067472210b0240200a41f0014f0d00200b2003410c7472210b0c010b02400240200d2005470d004100210a200921060c010b200d41016a2106200d2d0000413f71210a0b200b4106742003411274418080f0007172200a72220b418080c400470d010c030b200921060b4102210941f400210d02400240024002400240024002400240200b41776a0e1f06010303000303030303030303030303030303030303030303040303030304020b41f200210d0c050b41ee00210d0c040b200b41dc00460d010b0240200b10530d00200b10540d040b200b41017267410276410773ad4280808080d00084210e410321090c010b0b200b210d0b0240024020082004490d0002402004450d0020042001460d00200420014f0d01200020046a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020046a200820046b200228021c28020c110000450d0141010f0b200020012004200841bc9fc000104f000b03402009210a4101210341dc00210441012109024002400240024002400240200a0e0402010500020b0240024002400240200e422088a741ff01710e06050302010006050b200e42ffffffff8f608342808080803084210e4103210941f50021040c070b200e42ffffffff8f608342808080802084210e4103210941fb0021040c060b413041d700200d200ea72209410274411c7176410f712204410a491b20046a2104024020090d00200e42ffffffff8f608342808080801084210e0c050b200e427f7c42ffffffff0f83200e4280808080708384210e0c040b200e42ffffffff8f6083210e4103210941fd0021040c040b41002109200d21040c030b410121090240200b418001490d0041022109200b418010490d0041034104200b41808004491b21090b200920086a21040c040b200e42ffffffff8f60834280808080c00084210e0b410321090b20022802182004200228021c2802101101000d050c000b0b200820076b20066a21082006210720052006470d000b0b2004450d0020042001460d00200420014f0d02200020046a2c000041bf7f4c0d020b410121032002280218200020046a200120046b200228021c28020c1100000d0020022802184122200228021c28021011010021030b20030f0b200020012004200141ac9fc000104f000b870101027f23004180016b2202240020002d00002103410021000340200220006a41ff006a20034101714130723a00002000417f6a2100200341017641ff007122030d000b024020004180016a2203418101490d002003418001419c88c0001056000b200141e79fc0004102200220006a4180016a410020006b104b210020024180016a240020000b1c00200128021841adb3c00041052001411c6a28020028020c1100000bcf0401067e2000420037001720002001290320220242338842137e2001290300220342ffffffffffffff03837c220442137c4233882001290308220542ffffffffffffff038320034233887c22037c4233882001290310220642ffffffffffffff038320054233887c22057c4233882001290318220742ffffffffffffff038320064233887c22067c423388200242ffffffffffffff038320074233887c22077c42338842137e20047c22023c0000200020024228883c0005200020024220883c0004200020024218883c0003200020024210883c0002200020024208883c00012000200242338820037c22044225883c000b20002004421d883c000a200020044215883c000920002004420d883c0008200020044205883c00072000200442338820057c2203422a883c0012200020034222883c001120002003421a883c0010200020034212883c000f20002003420a883c000e200020034202883c000d2000200442ffffffffffffff038322044203862002423088420783843c00062000200342338820067c2202421f883c0017200020024227883c0018200020024217883c001620002002420f883c0015200020024207883c00142000200342ffffffffffffff038322054206862004422d88843c000c2000200242338820077c22034204883c001a20002003420c883c001b200020034214883c001c20002003421c883c001d200020034224883c001e2000200242ffffffffffffff038322024201862005423288843c00132000200342ffffffffffffff03832203422c883c001f200020034204862002422f88843c00190b7101027f230041c0006b2202240020022000106b200241206a2001106b41002101410121000340200241206a20016a2d0000200220016a2d0000732203410020036b72417f7341800171410776106d2000712100200141016a22014120470d000b2000106d2101200241c0006a240020010b1501017f230041106b220120003a000f20012d000f0bd00702017f147e230041f0016b2203240020012903202104200129031821052001290310210620012903082107200129030021080340200341b0016a200842002008420010e80820034180016a20074200200442137e2209420010e808200341c0006a200542137e220a42002006420010e808200341e0016a200a42002005420010e808200341f0006a200842002007420010e808200341306a200642002009420010e808200341e0006a200742002007420010e808200341206a200842002006420010e808200341d0016a200a42002004420010e808200341c0016a200942002004420010e808200341a0016a200842002005420010e808200341106a200742002006420010e8082003200642002006420010e80820034190016a200842002004420010e808200341d0006a200742002005420010e808200329039001220b20032903507c2206420186220c20032903007c220720032903a001220d20032903107c2208420186220e20032903c0017c22042003290320220f20032903d0017c2205420186221020032903607c22092003290370221120032903307c220a420186221220032903e0017c2213200329038001221420032903407c2215420186221620032903b0017c221742338820034180016a41086a290300200341c0006a41086a2903007c2015201454ad7c4201862015423f8884200341b0016a41086a2903007c2017201654ad7c420d86847c2215423388200341f0006a41086a290300200341306a41086a2903007c200a201154ad7c420186200a423f8884200341e0016a41086a2903007c2013201254ad7c2015201354ad7c420d86847c220a423388200341206a41086a290300200341d0016a41086a2903007c2005200f54ad7c4201862005423f8884200341e0006a41086a2903007c2009201054ad7c200a200954ad7c420d86847c2205423388200341a0016a41086a290300200341106a41086a2903007c2008200d54ad7c4201862008423f8884200341c0016a41086a2903007c2004200e54ad7c2005200454ad7c420d86847c220442338820034190016a41086a290300200341d0006a41086a2903007c2006200b54ad7c4201862006423f8884200341086a2903007c2007200c54ad7c2004200754ad7c420d868442137e201742ffffffffffffff03837c220642ffffffffffffff038321082006423388201542ffffffffffffff03837c2107200442ffffffffffffff03832104200542ffffffffffffff03832105200a42ffffffffffffff038321062002417f6a22020d000b2000200437032020002005370318200020063703102000200737030820002008370300200341f0016a24000bbbd40103017f297e037f230041d0c1006b22032400200341a8c1006a20024101106e200341a0386a20022903002204420020032903a8412205420010e808200341b0396a20032903c841220642002002290308220742137e2208420010e808200341f0396a20032903c041220942002002290310220a42137e220b420010e808200341b03a6a20032903b841220c42002002290318220d42137e220e420010e808200341f03a6a20032903b041220f42002002290320221042137e2211420010e808200341f0386a200f42002004420010e808200341b0386a200542002007420010e808200341c0396a20064200200b420010e808200341803a6a20094200200e420010e808200341c03a6a200c42002011420010e80820034180396a200c42002004420010e808200341803b6a200f42002007420010e808200341c0386a20054200200a420010e808200341d0396a20064200200e420010e808200341903a6a200942002011420010e80820034190396a200942002004420010e808200341d03a6a200c42002007420010e808200341903b6a200f4200200a420010e808200341d0386a20054200200d420010e808200341e0396a200642002011420010e808200341a0396a200642002004420010e808200341a03a6a200942002007420010e808200341e03a6a200c4200200a420010e808200341a03b6a200f4200200d420010e808200341e0386a200542002010420010e808200320032903d039221220032903c0387c220520032903903a7c22062003290380397c220920032903803b7c220c20032903c039221320032903b0387c220f20032903803a7c221420032903c03a7c221520032903f0387c221620032903b039221720032903a0387c221820032903f0397c221920032903b03a7c221a20032903f03a7c221b423388200341b0396a41086a290300200341a0386a41086a2903007c2018201754ad7c200341f0396a41086a2903007c2019201854ad7c200341b03a6a41086a2903007c201a201954ad7c200341f03a6a41086a2903007c201b201a54ad7c420d86847c2219423388200341c0396a41086a290300200341b0386a41086a2903007c200f201354ad7c200341803a6a41086a2903007c2014200f54ad7c200341c03a6a41086a2903007c2015201454ad7c200341f0386a41086a2903007c2016201554ad7c2019201654ad7c420d86847c220f42ffffffffffffff038322143703c03b200320032903e039221720032903d0387c22152003290390397c221620032903d03a7c221a20032903903b7c2213200f423388200341d0396a41086a290300200341c0386a41086a2903007c2005201254ad7c200341903a6a41086a2903007c2006200554ad7c20034180396a41086a2903007c2009200654ad7c200341803b6a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c220542ffffffffffffff038322183703c83b200320032903a039221220032903e0387c220620032903a03a7c220920032903e03a7c220c20032903a03b7c220f2005423388200341e0396a41086a290300200341d0386a41086a2903007c2015201754ad7c20034190396a41086a2903007c2016201554ad7c200341d03a6a41086a2903007c201a201654ad7c200341903b6a41086a2903007c2013201a54ad7c2005201354ad7c420d86847c220542ffffffffffffff0383221a3703d03b20032005423388200341a0396a41086a290300200341e0386a41086a2903007c2006201254ad7c200341a03a6a41086a2903007c2009200654ad7c200341e03a6a41086a2903007c200c200954ad7c200341a03b6a41086a2903007c200f200c54ad7c2005200f54ad7c420d868442137e201b42ffffffffffffff03837c220542ffffffffffffff0383220c3703b03b20032005423388201942ffffffffffffff03837c220f3703b83b200341a8c1006a200341b03b6a4101106e20034190356a20032903a841220542002004420010e808200341e0356a20032903c841220642002008420010e808200341b0366a20032903c04122094200200b420010e80820034180376a20032903b84122154200200e420010e808200341d0376a20032903b041221642002011420010e808200341e0376a201642002004420010e808200341a0356a200542002007420010e808200341f0356a20064200200b420010e808200341c0366a20094200200e420010e80820034190376a201542002011420010e808200341a0376a201542002004420010e808200341f0376a201642002007420010e808200341b0356a20054200200a420010e80820034180366a20064200200e420010e808200341d0366a200942002011420010e808200341e0366a200942002004420010e808200341b0376a201542002007420010e80820034180386a20164200200a420010e808200341c0356a20054200200d420010e80820034190366a200642002011420010e808200341a0366a200642002004420010e808200341f0366a200942002007420010e808200341c0376a20154200200a420010e80820034190386a20164200200d420010e808200341d0356a200542002010420010e808200341800d6a200c420020012903002211420010e80820034190346a200f42137e42002001290320220e420010e808200341d0336a200129031822054200201442137e220b420010e80820034190336a200129031022064200201842137e2216420010e808200341c0326a200129030822094200201a42137e2215420010e808200341f00c6a20094200200c420010e80820034180356a200f42002011420010e80820034180346a200e4200200b420010e808200341c0336a200542002016420010e80820034180336a200642002015420010e808200341e00c6a200c42002006420010e808200341b0326a200f42002009420010e808200341f0346a201142002014420010e808200341f0336a200e42002016420010e808200341b0336a200542002015420010e808200341800c6a200c42002005420010e808200341f0326a200f42002006420010e808200341a0326a200942002014420010e808200341e0346a201142002018420010e808200341e0336a20154200200e420010e808200341a00b6a200c4200200e420010e808200341a0336a200f42002005420010e808200341e0326a200642002014420010e80820034190326a200942002018420010e808200341d0346a201a42002011420010e80820034180306a20032903a036221c20032903d0357c220c20032903f0367c220f20032903c0377c22142003290390387c2215200329039036221d20032903c0357c221620032903e0367c220b20032903b0377c22182003290380387c2219200329038036221e20032903b0357c221a20032903d0367c221b20032903a0377c221320032903f0377c220820032903f035221f20032903a0357c221220032903c0367c22172003290390377c222020032903e0377c222120032903e03522222003290390357c222320032903b0367c22242003290380377c222520032903d0377c2226423388200341e0356a41086a29030020034190356a41086a2903007c2023202254ad7c200341b0366a41086a2903007c2024202354ad7c20034180376a41086a2903007c2025202454ad7c200341d0376a41086a2903007c2026202554ad7c420d86847c2223423388200341f0356a41086a290300200341a0356a41086a2903007c2012201f54ad7c200341c0366a41086a2903007c2017201254ad7c20034190376a41086a2903007c2020201754ad7c200341e0376a41086a2903007c2021202054ad7c2023202154ad7c420d86847c221242338820034180366a41086a290300200341b0356a41086a2903007c201a201e54ad7c200341d0366a41086a2903007c201b201a54ad7c200341a0376a41086a2903007c2013201b54ad7c200341f0376a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a42338820034190366a41086a290300200341c0356a41086a2903007c2016201d54ad7c200341e0366a41086a2903007c200b201654ad7c200341b0376a41086a2903007c2018200b54ad7c20034180386a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2216423388200341a0366a41086a290300200341d0356a41086a2903007c200c201c54ad7c200341f0366a41086a2903007c200f200c54ad7c200341c0376a41086a2903007c2014200f54ad7c20034190386a41086a2903007c2015201454ad7c2016201554ad7c420d868442137e202642ffffffffffffff03837c220f42ffffffffffffff0383220c42002011420010e808200341d0306a200f423388202342ffffffffffffff03837c220f42137e4200200e420010e808200341f0306a201242ffffffffffffff0383221442137e221942002005420010e808200341a0316a201a42ffffffffffffff0383220b42137e221842002006420010e808200341e0316a201642ffffffffffffff0383221642137e221542002009420010e808200341f02f6a200c42002009420010e808200341c0306a200f42002011420010e808200341e0306a20194200200e420010e80820034190316a201842002005420010e808200341d0316a201542002006420010e808200341e02f6a200c42002006420010e808200341b0306a200f42002009420010e808200341c0346a201442002011420010e80820034180316a20184200200e420010e808200341c0316a201542002005420010e808200341d02f6a200c42002005420010e808200341a0306a200f42002006420010e80820034180326a201442002009420010e808200341b0346a200b42002011420010e808200341b0316a20154200200e420010e808200341c02f6a200c4200200e420010e80820034190306a200f42002005420010e808200341d0326a201442002006420010e808200341f0316a200b42002009420010e808200341a0346a201642002011420010e8082003200329038031221220032903c0347c220f20032903c0317c221420032903e02f7c221520032903b0307c2216200329039031221720032903e0307c220c20032903d0317c220b20032903f02f7c221820032903c0307c221920032903a031222020032903f0307c221a20032903e0317c221b2003290380307c221320032903d0307c2208423388200341a0316a41086a290300200341f0306a41086a2903007c201a202054ad7c200341e0316a41086a2903007c201b201a54ad7c20034180306a41086a2903007c2013201b54ad7c200341d0306a41086a2903007c2008201354ad7c420d86847c221a42338820034190316a41086a290300200341e0306a41086a2903007c200c201754ad7c200341d0316a41086a2903007c200b200c54ad7c200341f02f6a41086a2903007c2018200b54ad7c200341c0306a41086a2903007c2019201854ad7c201a201954ad7c420d86847c220b42ffffffffffffff0383220c3703e83b200320032903b03422172003290380327c221820032903b0317c221920032903d02f7c221b20032903a0307c2213200b42338820034180316a41086a290300200341c0346a41086a2903007c200f201254ad7c200341c0316a41086a2903007c2014200f54ad7c200341e02f6a41086a2903007c2015201454ad7c200341b0306a41086a2903007c2016201554ad7c200b201654ad7c420d86847c221442ffffffffffffff0383220f3703f03b200320032903f031222020032903d0327c221520032903a0347c221620032903c02f7c220b2003290390307c22122014423388200341b0346a41086a29030020034180326a41086a2903007c2018201754ad7c200341b0316a41086a2903007c2019201854ad7c200341d02f6a41086a2903007c201b201954ad7c200341a0306a41086a2903007c2013201b54ad7c2014201354ad7c420d86847c221842ffffffffffffff038322143703f83b20032018423388200341f0316a41086a290300200341d0326a41086a2903007c2015202054ad7c200341a0346a41086a2903007c2016201554ad7c200341c02f6a41086a2903007c200b201654ad7c20034190306a41086a2903007c2012200b54ad7c2018201254ad7c420d868442137e200842ffffffffffffff03837c221642ffffffffffffff038322153703d83b20032016423388201a42ffffffffffffff03837c22163703e03b200341803c6a200341d83b6a4101106e200341a8c1006a200341803c6a4101106e200341a83c6a200341a8c1006a4101106e200341b02f6a20032903a83c220b42002015420010e808200341b02c6a2014420020032903b03c221842137e420010e808200341902d6a200f420020032903b83c221942137e2208420010e808200341f02d6a200c420020032903c03c221b42137e2213420010e808200341d02e6a2016420020032903c83c221242137e221a420010e808200341a02f6a20164200200b420010e808200341f02c6a201542002018420010e808200341802d6a201442002008420010e808200341e02d6a200f42002013420010e808200341c02e6a200c4200201a420010e808200341902f6a200c4200200b420010e808200341e02c6a201642002018420010e808200341c02d6a201542002019420010e808200341d02d6a201442002013420010e808200341b02e6a200f4200201a420010e808200341802f6a200f4200200b420010e808200341d02c6a200c42002018420010e808200341b02d6a201642002019420010e808200341902e6a20154200201b420010e808200341a02e6a20144200201a420010e808200341f02e6a20144200200b420010e808200341c02c6a200f42002018420010e808200341a02d6a200c42002019420010e808200341802e6a20164200201b420010e808200341e02e6a201542002012420010e808200341e0296a20032903f02e222720032903e02e7c220b20032903c02c7c221820032903a02d7c221920032903802e7c221a20032903a02e222820032903902e7c221b20032903802f7c221320032903d02c7c220820032903b02d7c221220032903d02d222920032903c02d7c221720032903b02e7c222020032903902f7c222120032903e02c7c222320032903802d222a20032903f02c7c222420032903e02d7c222520032903c02e7c222620032903a02f7c221c20032903b02c222b20032903b02f7c221d20032903902d7c221e20032903f02d7c221f20032903d02e7c2222423388200341b02c6a41086a290300200341b02f6a41086a2903007c201d202b54ad7c200341902d6a41086a2903007c201e201d54ad7c200341f02d6a41086a2903007c201f201e54ad7c200341d02e6a41086a2903007c2022201f54ad7c420d86847c221d423388200341802d6a41086a290300200341f02c6a41086a2903007c2024202a54ad7c200341e02d6a41086a2903007c2025202454ad7c200341c02e6a41086a2903007c2026202554ad7c200341a02f6a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341d02d6a41086a290300200341c02d6a41086a2903007c2017202954ad7c200341b02e6a41086a2903007c2020201754ad7c200341902f6a41086a2903007c2021202054ad7c200341e02c6a41086a2903007c2023202154ad7c2024202354ad7c420d86847c2217423388200341a02e6a41086a290300200341902e6a41086a2903007c201b202854ad7c200341802f6a41086a2903007c2013201b54ad7c200341d02c6a41086a2903007c2008201354ad7c200341b02d6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b423388200341f02e6a41086a290300200341e02e6a41086a2903007c200b202754ad7c200341c02c6a41086a2903007c2018200b54ad7c200341a02d6a41086a2903007c2019201854ad7c200341802e6a41086a2903007c201a201954ad7c201b201a54ad7c420d868442137e202242ffffffffffffff03837c221842ffffffffffffff0383220b420020032903803c2213420010e808200341b02a6a2018423388201d42ffffffffffffff03837c221842137e420020032903a03c2208420010e808200341d02a6a202442ffffffffffffff0383221942137e2224420020032903983c2212420010e808200341802b6a201742ffffffffffffff0383221a42137e2223420020032903903c2217420010e808200341c02b6a201b42ffffffffffffff0383221b42137e2221420020032903883c2220420010e808200341d0296a200b42002020420010e808200341a02a6a201842002013420010e808200341c02a6a202442002008420010e808200341f02a6a202342002012420010e808200341b02b6a202142002017420010e808200341c0296a200b42002017420010e808200341902a6a201842002020420010e808200341d02b6a201942002013420010e808200341e02a6a202342002008420010e808200341a02b6a202142002012420010e808200341b0296a200b42002012420010e808200341802a6a201842002017420010e808200341e02b6a201942002020420010e808200341802c6a201a42002013420010e808200341902b6a202142002008420010e808200341a0296a200b42002008420010e808200341f0296a201842002012420010e808200341f02b6a201942002017420010e808200341902c6a201a42002020420010e808200341a02c6a201b42002013420010e808200320032903e02a221e20032903d02b7c221320032903a02b7c220820032903c0297c221220032903902a7c221720032903f02a221f20032903c02a7c222020032903b02b7c222120032903d0297c222320032903a02a7c222420032903802b222220032903d02a7c222520032903c02b7c222620032903e0297c221c20032903b02a7c221d423388200341802b6a41086a290300200341d02a6a41086a2903007c2025202254ad7c200341c02b6a41086a2903007c2026202554ad7c200341e0296a41086a2903007c201c202654ad7c200341b02a6a41086a2903007c201d201c54ad7c420d86847c2225423388200341f02a6a41086a290300200341c02a6a41086a2903007c2020201f54ad7c200341b02b6a41086a2903007c2021202054ad7c200341d0296a41086a2903007c2023202154ad7c200341a02a6a41086a2903007c2024202354ad7c2025202454ad7c420d86847c222042ffffffffffffff03833703e03c200320032903802c221c20032903e02b7c222120032903902b7c222320032903b0297c222420032903802a7c22262020423388200341e02a6a41086a290300200341d02b6a41086a2903007c2013201e54ad7c200341a02b6a41086a2903007c2008201354ad7c200341c0296a41086a2903007c2012200854ad7c200341902a6a41086a2903007c2017201254ad7c2020201754ad7c420d86847c221342ffffffffffffff03833703e83c200320032903902c221e20032903f02b7c220820032903a02c7c221220032903a0297c221720032903f0297c22202013423388200341802c6a41086a290300200341e02b6a41086a2903007c2021201c54ad7c200341902b6a41086a2903007c2023202154ad7c200341b0296a41086a2903007c2024202354ad7c200341802a6a41086a2903007c2026202454ad7c2013202654ad7c420d86847c221342ffffffffffffff03833703f03c20032013423388200341902c6a41086a290300200341f02b6a41086a2903007c2008201e54ad7c200341a02c6a41086a2903007c2012200854ad7c200341a0296a41086a2903007c2017201254ad7c200341f0296a41086a2903007c2020201754ad7c2013202054ad7c420d868442137e201d42ffffffffffffff03837c221342ffffffffffffff03833703d03c20032013423388202542ffffffffffffff03837c3703d83c200341f83c6a200341d03c6a4101106e20034190296a200b420020032903f83c2213420010e80820034190266a201b420020032903803d220842137e420010e808200341f0266a20032903883d221242137e22234200201a420010e808200341d0276a20032903903d222042137e222142002019420010e808200341b0286a2018420020032903983d222442137e2217420010e80820034180296a201842002013420010e808200341d0266a200b42002008420010e808200341e0266a201b42002023420010e808200341c0276a20214200201a420010e808200341a0286a201742002019420010e808200341f0286a201342002019420010e808200341c0266a201842002008420010e808200341a0276a200b42002012420010e808200341b0276a20214200201b420010e80820034190286a20174200201a420010e808200341e0286a20134200201a420010e808200341b0266a200842002019420010e80820034190276a201842002012420010e808200341f0276a200b42002020420010e80820034180286a20174200201b420010e808200341d0286a20134200201b420010e808200341a0266a20084200201a420010e80820034180276a201242002019420010e808200341e0276a201842002020420010e808200341c0286a200b42002024420010e8082003200329039028222520032903b0277c220b20032903f0287c221820032903a0277c221a20032903c0267c221b20032903c027222420032903e0267c221920032903a0287c221320032903d0267c22082003290380297c221220032903f02622262003290390267c221720032903d0277c22202003290390297c222120032903b0287c2223423388200341f0266a41086a29030020034190266a41086a2903007c2017202654ad7c200341d0276a41086a2903007c2020201754ad7c20034190296a41086a2903007c2021202054ad7c200341b0286a41086a2903007c2023202154ad7c420d86847c2220423388200341c0276a41086a290300200341e0266a41086a2903007c2019202454ad7c200341a0286a41086a2903007c2013201954ad7c200341d0266a41086a2903007c2008201354ad7c20034180296a41086a2903007c2012200854ad7c2020201254ad7c420d86847c221342ffffffffffffff038322193703b03d2003200329038028222620032903b0267c220820032903e0287c221220032903f0277c22212003290390277c2224201342338820034190286a41086a290300200341b0276a41086a2903007c200b202554ad7c200341f0286a41086a2903007c2018200b54ad7c200341a0276a41086a2903007c201a201854ad7c200341c0266a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff038322173703b83d2003200329038027222520032903a0267c221820032903d0287c221a20032903c0287c221b20032903e0277c2213200b42338820034180286a41086a290300200341b0266a41086a2903007c2008202654ad7c200341e0286a41086a2903007c2012200854ad7c200341f0276a41086a2903007c2021201254ad7c20034190276a41086a2903007c2024202154ad7c200b202454ad7c420d86847c220b42ffffffffffffff038322213703c03d2003200b42338820034180276a41086a290300200341a0266a41086a2903007c2018202554ad7c200341d0286a41086a2903007c201a201854ad7c200341c0286a41086a2903007c201b201a54ad7c200341e0276a41086a2903007c2013201b54ad7c200b201354ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703a03d20032018423388202042ffffffffffffff03837c22183703a83d200341c83d6a200341a03d6a4105106e200341c0236a200b420020032903c83d221a420010e808200341c0246a201842137e420020032903e83d221b420010e80820034180256a201942137e2224420020032903e03d2213420010e808200341c0256a201742137e2223420020032903d83d2208420010e80820034180266a202142137e2220420020032903d03d2212420010e808200341b0236a200b42002012420010e80820034180246a20184200201a420010e808200341b0246a20244200201b420010e808200341f0246a202342002013420010e808200341b0256a202042002008420010e808200341a0236a200b42002008420010e808200341f0256a201842002012420010e808200341f0236a20194200201a420010e808200341a0246a20234200201b420010e808200341e0246a202042002013420010e80820034190236a200b42002013420010e808200341a0256a201842002008420010e808200341e0256a201942002012420010e808200341e0236a20174200201a420010e80820034190246a20204200201b420010e80820034180236a200b4200201b420010e808200341d0246a201842002013420010e80820034190256a201942002008420010e808200341d0256a201742002012420010e808200341d0236a20214200201a420010e808200320032903a024222420032903f0237c220b20032903e0247c221820032903a0237c221a20032903f0257c221b20032903f024222520032903b0247c221920032903b0257c221320032903b0237c22082003290380247c221220032903c02522262003290380257c22172003290380267c222020032903c0237c222120032903c0247c2223423388200341c0256a41086a29030020034180256a41086a2903007c2017202654ad7c20034180266a41086a2903007c2020201754ad7c200341c0236a41086a2903007c2021202054ad7c200341c0246a41086a2903007c2023202154ad7c420d86847c2217423388200341f0246a41086a290300200341b0246a41086a2903007c2019202554ad7c200341b0256a41086a2903007c2013201954ad7c200341b0236a41086a2903007c2008201354ad7c20034180246a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703803e200320032903e023222520032903e0257c22082003290390247c22122003290390237c222020032903a0257c22212013423388200341a0246a41086a290300200341f0236a41086a2903007c200b202454ad7c200341e0246a41086a2903007c2018200b54ad7c200341a0236a41086a2903007c201a201854ad7c200341f0256a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703883e200320032903d025221c2003290390257c221820032903d0237c221a2003290380237c221320032903d0247c2224200b423388200341e0236a41086a290300200341e0256a41086a2903007c2008202554ad7c20034190246a41086a2903007c2012200854ad7c20034190236a41086a2903007c2020201254ad7c200341a0256a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff038322263703903e2003200b423388200341d0256a41086a29030020034190256a41086a2903007c2018201c54ad7c200341d0236a41086a2903007c201a201854ad7c20034180236a41086a2903007c2013201a54ad7c200341d0246a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703f03d20032018423388201742ffffffffffffff03837c22183703f83d200341983e6a200341f03d6a410a106e200341b0206a200b420020032903983e2208420010e80820034180216a201842137e2228420020032903b83e2212420010e808200341d0216a201942137e221c420020032903b03e2217420010e808200341a0226a201b42137e2213420020032903a83e2220420010e808200341f0226a202642137e221a420020032903a03e2221420010e808200341e0226a200b42002021420010e808200341a0206a201842002008420010e808200341f0206a201c42002012420010e808200341c0216a201342002017420010e80820034190226a201a42002020420010e80820034180226a200b42002020420010e808200341d0226a201842002021420010e80820034190206a201942002008420010e808200341e0206a201342002012420010e808200341b0216a201a42002017420010e808200341a0216a200b42002017420010e808200341f0216a201842002020420010e808200341c0226a201942002021420010e80820034180206a201b42002008420010e808200341d0206a201a42002012420010e808200341c0206a200b42002012420010e80820034190216a201842002017420010e808200341e0216a201942002020420010e808200341b0226a201b42002021420010e808200341f01f6a202642002008420010e808200320032903e02022292003290390207c220820032903b0217c22122003290380227c222020032903d0227c222120032903c021222720032903f0207c22172003290390227c222320032903e0227c222420032903a0207c222520032903a022222a20032903d0217c221d20032903f0227c221e20032903b0207c221f2003290380217c2222423388200341a0226a41086a290300200341d0216a41086a2903007c201d202a54ad7c200341f0226a41086a2903007c201e201d54ad7c200341b0206a41086a2903007c201f201e54ad7c20034180216a41086a2903007c2022201f54ad7c420d86847c221e423388200341c0216a41086a290300200341f0206a41086a2903007c2017202754ad7c20034190226a41086a2903007c2023201754ad7c200341e0226a41086a2903007c2024202354ad7c200341a0206a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703d03e2003200329038020222a20032903c0227c222420032903d0207c222520032903a0217c221f20032903f0217c22272023423388200341e0206a41086a29030020034190206a41086a2903007c2008202954ad7c200341b0216a41086a2903007c2012200854ad7c20034180226a41086a2903007c2020201254ad7c200341d0226a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703d83e200320032903b022222920032903e0217c221220032903f01f7c222020032903c0207c22212003290390217c2223200842338820034180206a41086a290300200341c0226a41086a2903007c2024202a54ad7c200341d0206a41086a2903007c2025202454ad7c200341a0216a41086a2903007c201f202554ad7c200341f0216a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703e03e20032008423388200341b0226a41086a290300200341e0216a41086a2903007c2012202954ad7c200341f01f6a41086a2903007c2020201254ad7c200341c0206a41086a2903007c2021202054ad7c20034190216a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703c03e20032012423388201e42ffffffffffffff03837c22123703c83e200341e83e6a200341c03e6a4114106e200341a01d6a2008420020032903e83e2220420010e808200341f01d6a201242137e420020032903883f2221420010e808200341c01e6a201742137e2227420020032903803f2223420010e808200341901f6a201d42137e2222420020032903f83e2224420010e808200341e01f6a201f42137e221e420020032903f03e2225420010e808200341d01f6a200842002025420010e808200341901d6a201242002020420010e808200341e01d6a202742002021420010e808200341b01e6a202242002023420010e808200341801f6a201e42002024420010e808200341f01e6a200842002024420010e808200341c01f6a201242002025420010e808200341801d6a201742002020420010e808200341d01d6a202242002021420010e808200341a01e6a201e42002023420010e808200341901e6a200842002023420010e808200341e01e6a201242002024420010e808200341b01f6a201742002025420010e808200341f01c6a201d42002020420010e808200341c01d6a201e42002021420010e808200341b01d6a200842002021420010e808200341801e6a201242002023420010e808200341d01e6a201742002024420010e808200341a01f6a201d42002025420010e808200341e01c6a201f42002020420010e808200320032903d01d222720032903801d7c220820032903a01e7c221220032903f01e7c221720032903c01f7c222020032903b01e222920032903e01d7c222120032903801f7c222320032903d01f7c222420032903901d7c222520032903901f222a20032903c01e7c221d20032903e01f7c221e20032903a01d7c221f20032903f01d7c2222423388200341901f6a41086a290300200341c01e6a41086a2903007c201d202a54ad7c200341e01f6a41086a2903007c201e201d54ad7c200341a01d6a41086a2903007c201f201e54ad7c200341f01d6a41086a2903007c2022201f54ad7c420d86847c221d423388200341b01e6a41086a290300200341e01d6a41086a2903007c2021202954ad7c200341801f6a41086a2903007c2023202154ad7c200341d01f6a41086a2903007c2024202354ad7c200341901d6a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff03833703a03f200320032903f01c221f20032903b01f7c222320032903c01d7c222420032903901e7c222520032903e01e7c221e2021423388200341d01d6a41086a290300200341801d6a41086a2903007c2008202754ad7c200341a01e6a41086a2903007c2012200854ad7c200341f01e6a41086a2903007c2017201254ad7c200341c01f6a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff03833703a83f200320032903a01f222720032903d01e7c221220032903e01c7c221720032903b01d7c222020032903801e7c22212008423388200341f01c6a41086a290300200341b01f6a41086a2903007c2023201f54ad7c200341c01d6a41086a2903007c2024202354ad7c200341901e6a41086a2903007c2025202454ad7c200341e01e6a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703b03f20032008423388200341a01f6a41086a290300200341d01e6a41086a2903007c2012202754ad7c200341e01c6a41086a2903007c2017201254ad7c200341b01d6a41086a2903007c2020201754ad7c200341801e6a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703903f20032008423388201d42ffffffffffffff03837c3703983f200341b83f6a200341903f6a410a106e200341901a6a200b420020032903b83f2208420010e808200341e01a6a2028420020032903d83f2212420010e808200341b01b6a20032903d03f22174200201c420010e808200341801c6a20032903c83f222042002013420010e808200341d01c6a20032903c03f22214200201a420010e808200341c01c6a20214200200b420010e808200341801a6a201842002008420010e808200341d01a6a20124200201c420010e808200341a01b6a201742002013420010e808200341f01b6a20204200201a420010e808200341e01b6a20204200200b420010e808200341b01c6a202142002018420010e808200341f0196a200842002019420010e808200341c01a6a201242002013420010e808200341901b6a20174200201a420010e808200341801b6a20174200200b420010e808200341d01b6a202042002018420010e808200341a01c6a202142002019420010e808200341e0196a20084200201b420010e808200341b01a6a20124200201a420010e808200341a01a6a20124200200b420010e808200341f01a6a201742002018420010e808200341c01b6a202042002019420010e808200341901c6a20214200201b420010e808200341d0196a200842002026420010e808200320032903c01a222420032903f0197c220b20032903901b7c221820032903e01b7c221a20032903b01c7c221b20032903801a222520032903d01a7c221920032903a01b7c221320032903f01b7c220820032903c01c7c221220032903b01b222620032903901a7c221720032903e01a7c222020032903801c7c222120032903d01c7c2223423388200341b01b6a41086a290300200341901a6a41086a2903007c2017202654ad7c200341e01a6a41086a2903007c2020201754ad7c200341801c6a41086a2903007c2021202054ad7c200341d01c6a41086a2903007c2023202154ad7c420d86847c2217423388200341801a6a41086a290300200341d01a6a41086a2903007c2019202554ad7c200341a01b6a41086a2903007c2013201954ad7c200341f01b6a41086a2903007c2008201354ad7c200341c01c6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703f03f200320032903b01a222520032903e0197c220820032903801b7c221220032903d01b7c222020032903a01c7c22212013423388200341c01a6a41086a290300200341f0196a41086a2903007c200b202454ad7c200341901b6a41086a2903007c2018200b54ad7c200341e01b6a41086a2903007c201a201854ad7c200341b01c6a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703f83f200320032903a01a221c20032903d0197c221820032903f01a7c221a20032903c01b7c221320032903901c7c2224200b423388200341b01a6a41086a290300200341e0196a41086a2903007c2008202554ad7c200341801b6a41086a2903007c2012200854ad7c200341d01b6a41086a2903007c2020201254ad7c200341a01c6a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff03832226370380402003200b423388200341a01a6a41086a290300200341d0196a41086a2903007c2018201c54ad7c200341f01a6a41086a2903007c201a201854ad7c200341c01b6a41086a2903007c2013201a54ad7c200341901c6a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703e03f20032018423388201742ffffffffffffff03837c22183703e83f20034188c0006a200341e03f6a4132106e20034180176a200b42002003290388402208420010e808200341d0176a201842137e2228420020032903a8402212420010e808200341a0186a201942137e221c420020032903a0402217420010e808200341f0186a201b42137e221342002003290398402220420010e808200341c0196a202642137e221a42002003290390402221420010e808200341b0196a200b42002021420010e808200341f0166a201842002008420010e808200341c0176a201c42002012420010e80820034190186a201342002017420010e808200341e0186a201a42002020420010e808200341d0186a200b42002020420010e808200341a0196a201842002021420010e808200341e0166a201942002008420010e808200341b0176a201342002012420010e80820034180186a201a42002017420010e808200341f0176a200b42002017420010e808200341c0186a201842002020420010e80820034190196a202142002019420010e808200341d0166a201b42002008420010e808200341a0176a201a42002012420010e80820034190176a200b42002012420010e808200341e0176a201842002017420010e808200341b0186a201942002020420010e80820034180196a201b42002021420010e808200341c0166a202642002008420010e808200320032903b017222920032903e0167c22082003290380187c221220032903d0187c222020032903a0197c2221200329039018222720032903c0177c221720032903e0187c222320032903b0197c222420032903f0167c222520032903f018222a20032903a0187c221d20032903c0197c221e2003290380177c221f20032903d0177c2222423388200341f0186a41086a290300200341a0186a41086a2903007c201d202a54ad7c200341c0196a41086a2903007c201e201d54ad7c20034180176a41086a2903007c201f201e54ad7c200341d0176a41086a2903007c2022201f54ad7c420d86847c221e42338820034190186a41086a290300200341c0176a41086a2903007c2017202754ad7c200341e0186a41086a2903007c2023201754ad7c200341b0196a41086a2903007c2024202354ad7c200341f0166a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703c040200320032903d016222a2003290390197c222420032903a0177c222520032903f0177c221f20032903c0187c22272023423388200341b0176a41086a290300200341e0166a41086a2903007c2008202954ad7c20034180186a41086a2903007c2012200854ad7c200341d0186a41086a2903007c2020201254ad7c200341a0196a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703c8402003200329038019222920032903b0187c221220032903c0167c22202003290390177c222120032903e0177c22232008423388200341d0166a41086a29030020034190196a41086a2903007c2024202a54ad7c200341a0176a41086a2903007c2025202454ad7c200341f0176a41086a2903007c201f202554ad7c200341c0186a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703d0402003200842338820034180196a41086a290300200341b0186a41086a2903007c2012202954ad7c200341c0166a41086a2903007c2020201254ad7c20034190176a41086a2903007c2021202054ad7c200341e0176a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703b04020032012423388201e42ffffffffffffff03837c22123703b840200341d8c0006a200341b0c0006a41e400106e200341f0136a2008420020032903d8402220420010e808200341c0146a201242137e420020032903f8402221420010e80820034190156a201742137e2227420020032903f0402223420010e808200341e0156a201d42137e2222420020032903e8402224420010e808200341b0166a201f42137e221e420020032903e0402225420010e808200341a0166a200842002025420010e808200341e0136a201242002020420010e808200341b0146a202742002021420010e80820034180156a202242002023420010e808200341d0156a201e42002024420010e808200341c0156a200842002024420010e80820034190166a201242002025420010e808200341d0136a201742002020420010e808200341a0146a202242002021420010e808200341f0146a201e42002023420010e808200341e0146a200842002023420010e808200341b0156a201242002024420010e80820034180166a201742002025420010e808200341c0136a201d42002020420010e80820034190146a201e42002021420010e80820034180146a200842002021420010e808200341d0146a201242002023420010e808200341a0156a201742002024420010e808200341f0156a201d42002025420010e808200341b0136a201f42002020420010e808200320032903a014222720032903d0137c220820032903f0147c221220032903c0157c22172003290390167c2220200329038015222920032903b0147c222120032903d0157c222320032903a0167c222420032903e0137c222520032903e015222a2003290390157c221d20032903b0167c221e20032903f0137c221f20032903c0147c2222423388200341e0156a41086a29030020034190156a41086a2903007c201d202a54ad7c200341b0166a41086a2903007c201e201d54ad7c200341f0136a41086a2903007c201f201e54ad7c200341c0146a41086a2903007c2022201f54ad7c420d86847c221d42338820034180156a41086a290300200341b0146a41086a2903007c2021202954ad7c200341d0156a41086a2903007c2023202154ad7c200341a0166a41086a2903007c2024202354ad7c200341e0136a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff038337039041200320032903c013221f2003290380167c22232003290390147c222420032903e0147c222520032903b0157c221e2021423388200341a0146a41086a290300200341d0136a41086a2903007c2008202754ad7c200341f0146a41086a2903007c2012200854ad7c200341c0156a41086a2903007c2017201254ad7c20034190166a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff038337039841200320032903f015222720032903a0157c221220032903b0137c22172003290380147c222020032903d0147c22212008423388200341c0136a41086a29030020034180166a41086a2903007c2023201f54ad7c20034190146a41086a2903007c2024202354ad7c200341e0146a41086a2903007c2025202454ad7c200341b0156a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703a04120032008423388200341f0156a41086a290300200341a0156a41086a2903007c2012202754ad7c200341b0136a41086a2903007c2017201254ad7c20034180146a41086a2903007c2020201754ad7c200341d0146a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703804120032008423388201d42ffffffffffffff03837c37038841200341a8c1006a20034180c1006a4132106e200341a0106a20032903a84122084200200b420010e808200341f0106a20032903c841221242002028420010e808200341c0116a20032903c04122174200201c420010e80820034190126a20032903b841222042002013420010e808200341e0126a20032903b04122214200201a420010e808200341f0126a20214200200b420010e808200341b0106a200842002018420010e80820034180116a20124200201c420010e808200341d0116a201742002013420010e808200341a0126a20204200201a420010e808200341b0126a20204200200b420010e80820034180136a202142002018420010e808200341c0106a200842002019420010e80820034190116a201242002013420010e808200341e0116a20174200201a420010e808200341f0116a20174200200b420010e808200341c0126a202042002018420010e80820034190136a202142002019420010e808200341d0106a20084200201b420010e808200341a0116a20124200201a420010e808200341b0116a20124200200b420010e80820034180126a201742002018420010e808200341d0126a202042002019420010e808200341a0136a20214200201b420010e808200341e0106a200842002026420010e8082003200329039011222420032903c0107c220b20032903e0117c221820032903b0127c22192003290380137c221a200329038011222520032903b0107c221b20032903d0117c221320032903a0127c220820032903f0127c221220032903f010222620032903a0107c221720032903c0117c22202003290390127c222120032903e0127c2223423388200341f0106a41086a290300200341a0106a41086a2903007c2017202654ad7c200341c0116a41086a2903007c2020201754ad7c20034190126a41086a2903007c2021202054ad7c200341e0126a41086a2903007c2023202154ad7c420d86847c221742338820034180116a41086a290300200341b0106a41086a2903007c201b202554ad7c200341d0116a41086a2903007c2013201b54ad7c200341a0126a41086a2903007c2008201354ad7c200341f0126a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b42ffffffffffffff038337039041200320032903a011222120032903d0107c221320032903f0117c220820032903c0127c22122003290390137c2220201b42338820034190116a41086a290300200341c0106a41086a2903007c200b202454ad7c200341e0116a41086a2903007c2018200b54ad7c200341b0126a41086a2903007c2019201854ad7c20034180136a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c220b42ffffffffffffff038337039841200320032903b011222420032903e0107c22182003290380127c221920032903d0127c221a20032903a0137c221b200b423388200341a0116a41086a290300200341d0106a41086a2903007c2013202154ad7c200341f0116a41086a2903007c2008201354ad7c200341c0126a41086a2903007c2012200854ad7c20034190136a41086a2903007c2020201254ad7c200b202054ad7c420d86847c220b42ffffffffffffff03833703a0412003200b423388200341b0116a41086a290300200341e0106a41086a2903007c2018202454ad7c20034180126a41086a2903007c2019201854ad7c200341d0126a41086a2903007c201a201954ad7c200341a0136a41086a2903007c201b201a54ad7c200b201b54ad7c420d868442137e202342ffffffffffffff03837c220b42ffffffffffffff0383370380412003200b423388201742ffffffffffffff03837c37038841200341a8c1006a20034180c1006a4102106e200341900d6a2015420020032903a841220b420010e80820034190106a2014420020032903b041221842137e420010e808200341c00f6a200f420020032903b841221942137e2208420010e808200341f00e6a200c420020032903c041221b42137e2213420010e808200341a00e6a2016420020032903c841221242137e221a420010e808200341a00d6a20164200200b420010e80820034180106a201542002018420010e808200341b00f6a201442002008420010e808200341e00e6a200f42002013420010e808200341900e6a200c4200201a420010e808200341b00d6a200c4200200b420010e808200341f00f6a201642002018420010e808200341a00f6a201542002019420010e808200341d00e6a201442002013420010e808200341800e6a200f4200201a420010e808200341c00d6a200f4200200b420010e808200341e00f6a200c42002018420010e808200341900f6a201642002019420010e808200341c00e6a20154200201b420010e808200341f00d6a20144200201a420010e808200341d00d6a20144200200b420010e808200341d00f6a200f42002018420010e808200341800f6a200c42002019420010e808200341b00e6a20164200201b420010e808200341e00d6a201542002012420010e808200341f0096a20032903d00f221c20032903800f7c220c20032903d00d7c220f20032903e00d7c221420032903b00e7c221520032903c00d221d20032903e00f7c221620032903f00d7c220b20032903c00e7c221820032903900f7c221920032903800e221e20032903b00d7c221a20032903d00e7c221b20032903a00f7c221320032903f00f7c220820032903e00e221f20032903900e7c221220032903b00f7c22172003290380107c222020032903a00d7c222120032903c00f222220032903f00e7c22232003290390107c222420032903900d7c222520032903a00e7c2226423388200341c00f6a41086a290300200341f00e6a41086a2903007c2023202254ad7c20034190106a41086a2903007c2024202354ad7c200341900d6a41086a2903007c2025202454ad7c200341a00e6a41086a2903007c2026202554ad7c420d86847c2223423388200341e00e6a41086a290300200341900e6a41086a2903007c2012201f54ad7c200341b00f6a41086a2903007c2017201254ad7c20034180106a41086a2903007c2020201754ad7c200341a00d6a41086a2903007c2021202054ad7c2023202154ad7c420d86847c2212423388200341800e6a41086a290300200341b00d6a41086a2903007c201a201e54ad7c200341d00e6a41086a2903007c201b201a54ad7c200341a00f6a41086a2903007c2013201b54ad7c200341f00f6a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a423388200341c00d6a41086a290300200341e00f6a41086a2903007c2016201d54ad7c200341f00d6a41086a2903007c200b201654ad7c200341c00e6a41086a2903007c2018200b54ad7c200341900f6a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2218423388200341d00f6a41086a290300200341800f6a41086a2903007c200c201c54ad7c200341d00d6a41086a2903007c200f200c54ad7c200341e00d6a41086a2903007c2014200f54ad7c200341b00e6a41086a2903007c2015201454ad7c2018201554ad7c420d868442137e202642ffffffffffffff03837c222742ffffffffffffff0383220c420020032903e032222820032903d0347c220f20032903a00b7c22142003290390327c221520032903a0337c221620032903e033222920032903e0347c220b20032903800c7c221920032903a0327c221b20032903f0327c221320032903f033222a20032903f0347c220820032903b0337c221720032903e00c7c222020032903b0327c222120032903c033222b2003290380347c22242003290380337c222520032903f00c7c22262003290380357c221c200329039033222c20032903d0337c221d20032903800d7c221e20032903c0327c221f2003290390347c222242338820034190336a41086a290300200341d0336a41086a2903007c201d202c54ad7c200341800d6a41086a2903007c201e201d54ad7c200341c0326a41086a2903007c201f201e54ad7c20034190346a41086a2903007c2022201f54ad7c420d86847c221d423388200341c0336a41086a29030020034180346a41086a2903007c2024202b54ad7c20034180336a41086a2903007c2025202454ad7c200341f00c6a41086a2903007c2026202554ad7c20034180356a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341f0336a41086a290300200341f0346a41086a2903007c2008202a54ad7c200341b0336a41086a2903007c2017200854ad7c200341e00c6a41086a2903007c2020201754ad7c200341b0326a41086a2903007c2021202054ad7c2024202154ad7c420d86847c2208423388200341e0336a41086a290300200341e0346a41086a2903007c200b202954ad7c200341800c6a41086a2903007c2019200b54ad7c200341a0326a41086a2903007c201b201954ad7c200341f0326a41086a2903007c2013201b54ad7c2008201354ad7c420d86847c220b423388200341e0326a41086a290300200341d0346a41086a2903007c200f202854ad7c200341a00b6a41086a2903007c2014200f54ad7c20034190326a41086a2903007c2015201454ad7c200341a0336a41086a2903007c2016201554ad7c200b201654ad7c420d868442137e202242ffffffffffffff03837c221742ffffffffffffff0383220f420010e808200341900b6a200b42ffffffffffffff0383221442002027423388202342ffffffffffffff03837c221542137e420010e808200341f00b6a200842ffffffffffffff038322164200201242ffffffffffffff0383221942137e2208420010e808200341d00c6a202442ffffffffffffff0383220b4200201a42ffffffffffffff0383221b42137e2213420010e808200341c00a6a201842ffffffffffffff0383221242137e221a42002017423388201d42ffffffffffffff03837c2218420010e808200341b00a6a200c42002018420010e808200341e0096a20154200200f420010e808200341800b6a201442002008420010e808200341e00b6a201642002013420010e808200341c00c6a200b4200201a420010e808200341b00c6a200b4200200c420010e808200341a00a6a201542002018420010e808200341d0096a20194200200f420010e808200341f00a6a201442002013420010e808200341d00b6a20164200201a420010e808200341c00b6a20164200200c420010e808200341a00c6a200b42002015420010e808200341900a6a201942002018420010e808200341c0096a201b4200200f420010e808200341e00a6a20144200201a420010e808200341d00a6a20144200200c420010e808200341b00b6a201642002015420010e808200341900c6a200b42002019420010e808200341800a6a201b42002018420010e808200341b0096a20124200200f420010e808200320032903f00a221220032903d0097c220c20032903d00b7c220f20032903b00c7c221420032903a00a7c221520032903e00b221720032903800b7c221620032903c00c7c220b20032903b00a7c221820032903e0097c221920032903d00c222020032903f00b7c221a20032903c00a7c221b20032903f0097c221320032903900b7c2208423388200341d00c6a41086a290300200341f00b6a41086a2903007c201a202054ad7c200341c00a6a41086a2903007c201b201a54ad7c200341f0096a41086a2903007c2013201b54ad7c200341900b6a41086a2903007c2008201354ad7c221b420d86847c221a423388200341e00b6a41086a290300200341800b6a41086a2903007c2016201754ad7c200341c00c6a41086a2903007c200b201654ad7c200341b00a6a41086a2903007c2018200b54ad7c200341e0096a41086a2903007c2019201854ad7c201b4233887c201a201954ad7c2213420d86847c221642ffffffffffffff03833703e840200320032903c009221720032903900a7c220b20032903e00a7c221820032903c00b7c221920032903a00c7c221b2016423388200341f00a6a41086a290300200341d0096a41086a2903007c200c201254ad7c200341d00b6a41086a2903007c200f200c54ad7c200341b00c6a41086a2903007c2014200f54ad7c200341a00a6a41086a2903007c2015201454ad7c20134233887c2016201554ad7c2213420d86847c220c42ffffffffffffff03833703f040200320032903800a221220032903900c7c220f20032903b0097c221420032903d00a7c221520032903b00b7c2216200c423388200341c0096a41086a290300200341900a6a41086a2903007c200b201754ad7c200341e00a6a41086a2903007c2018200b54ad7c200341c00b6a41086a2903007c2019201854ad7c200341a00c6a41086a2903007c201b201954ad7c20134233887c200c201b54ad7c220b420d86847c220c42ffffffffffffff03833703f8402003200c423388200341800a6a41086a290300200341900c6a41086a2903007c200f201254ad7c200341b0096a41086a2903007c2014200f54ad7c200341d00a6a41086a2903007c2015201454ad7c200341b00b6a41086a2903007c2016201554ad7c200b4233887c200c201654ad7c420d868442137e200842ffffffffffffff03837c220c42ffffffffffffff03833703d8402003200c423388201a42ffffffffffffff03837c3703e040200341a8c1006a200341d8c0006a4101106e200341a0066a20032903a841220c42002004420010e808200341a0096a20032903b041220f42137e42002010420010e808200341d0086a20032903b841221442137e22184200200d420010e80820034180086a20032903c041221642137e220b4200200a420010e808200341b0076a20032903c841221942137e221542002007420010e808200341b0066a200c42002007420010e80820034190096a200f42002004420010e808200341c0086a201842002010420010e808200341f0076a200b4200200d420010e808200341a0076a20154200200a420010e808200341c0066a200c4200200a420010e80820034180096a200f42002007420010e808200341b0086a201442002004420010e808200341e0076a200b42002010420010e80820034190076a20154200200d420010e808200341d0066a200c4200200d420010e808200341f0086a200f4200200a420010e808200341a0086a201442002007420010e808200341d0076a201642002004420010e80820034180076a201542002010420010e808200341e0066a200c42002010420010e808200341e0086a200f4200200d420010e80820034190086a20144200200a420010e808200341c0076a201642002007420010e808200341f0066a201942002004420010e808200320032903b00822102003290380097c220420032903e0077c22072003290390077c220a20032903c0067c220c20032903c008221a2003290390097c220f20032903f0077c221420032903a0077c221520032903b0067c221620032903d008221b20032903a0097c220b2003290380087c220d20032903a0067c221820032903b0077c2219423388200341d0086a41086a290300200341a0096a41086a2903007c200b201b54ad7c20034180086a41086a2903007c200d200b54ad7c200341a0066a41086a2903007c2018200d54ad7c200341b0076a41086a2903007c2019201854ad7c420d86847c220b423388200341c0086a41086a29030020034190096a41086a2903007c200f201a54ad7c200341f0076a41086a2903007c2014200f54ad7c200341a0076a41086a2903007c2015201454ad7c200341b0066a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220f42ffffffffffffff038337039041200320032903a008221820032903f0087c221420032903d0077c22152003290380077c221620032903d0067c220d200f423388200341b0086a41086a29030020034180096a41086a2903007c2004201054ad7c200341e0076a41086a2903007c2007200454ad7c20034190076a41086a2903007c200a200754ad7c200341c0066a41086a2903007c200c200a54ad7c200f200c54ad7c420d86847c220442ffffffffffffff0383370398412003200329039008221020032903e0087c220720032903c0077c220a20032903f0067c220c20032903e0067c220f2004423388200341a0086a41086a290300200341f0086a41086a2903007c2014201854ad7c200341d0076a41086a2903007c2015201454ad7c20034180076a41086a2903007c2016201554ad7c200341d0066a41086a2903007c200d201654ad7c2004200d54ad7c420d86847c220442ffffffffffffff03833703a0412003200442338820034190086a41086a290300200341e0086a41086a2903007c2007201054ad7c200341c0076a41086a2903007c200a200754ad7c200341f0066a41086a2903007c200c200a54ad7c200341e0066a41086a2903007c200f200c54ad7c2004200f54ad7c420d868442137e201942ffffffffffffff03837c220442ffffffffffffff03833703804120032004423388200b42ffffffffffffff03837c37038841200341b0c0006a20034180c1006a106b20034188c0006a2001106b410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f7341800171410776106d202d71212d200241016a22024120470d000b202d106d212f200341a8c1006a41086a42f0ffffffffffff3f200141086a2903007d220442ffffffffffffff038342d0fdffffffffff3f20012903007d22074233887c370300200341a8c1006a41106a42f0ffffffffffff3f200141106a2903007d220a42ffffffffffffff038320044233887c370300200341a8c1006a41186a42f0ffffffffffff3f200141186a2903007d220442ffffffffffffff0383200a4233887c370300200341a8c1006a41206a42f0ffffffffffff3f200141206a2903007d220a42ffffffffffffff038320044233887c3703002003200a42338842137e200742ffffffffffffff03837c3703a841200341b0c0006a20034180c1006a106b20034188c0006a200341a8c1006a106b410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f7341800171410776106d202d71212d200241016a22024120470d000b200341a0046a42f0ffffffffffff3f200e7d220742338842137e42d0fdffffffffff3f20117d220e42ffffffffffffff03837c2204420042b0c1bad0f4e48603420010e808200341d0036a42f0ffffffffffff3f20057d220a423388200742ffffffffffffff03837c2207420042a7a7fbf49beaf607420010e808200341f0046a42f0ffffffffffff3f20067d2211423388200a42ffffffffffffff03837c220a420042a0d69f90da80b1cb00420010e808200341c0056a42f0ffffffffffff3f20097d2205423388201142ffffffffffffff03837c2211420042badf96dcb5c3bac700420010e80820034190066a200542ffffffffffffff0383200e4233887c220e420042a7ecfac2b5f7ea19420010e80820034180066a200e420042b0c1bad0f4e48603420010e80820034190046a20044200429db1bce4dfb435420010e808200341c0036a2007420042a0d69f90da80b1cb00420010e808200341e0046a200a420042badf96dcb5c3bac700420010e808200341b0056a2011420042a7ecfac2b5f7ea19420010e808200341a0056a2011420042b0c1bad0f4e48603420010e808200341f0056a200e4200429db1bce4dfb435420010e80820034180046a2004420042e098f4e5e9ebfb03420010e808200341b0036a2007420042badf96dcb5c3bac700420010e808200341d0046a200a420042a7ecfac2b5f7ea19420010e808200341c0046a200a420042b0c1bad0f4e48603420010e80820034190056a20114200429db1bce4dfb435420010e808200341e0056a200e420042e098f4e5e9ebfb03420010e808200341f0036a20044200429e9981b4dab2e103420010e808200341a0036a2007420042a7ecfac2b5f7ea19420010e80820034190036a2007420042b0c1bad0f4e48603420010e808200341b0046a200a4200429db1bce4dfb435420010e80820034180056a2011420042e098f4e5e9ebfb03420010e808200341d0056a200e4200429e9981b4dab2e103420010e808200341e0036a20044200429df893c0a486ae01420010e808200341c0036a41086a290300211820034190046a41086a290300211920032903c00321042003290390042109200341e0046a41086a290300211020032903e004210c200341b0056a41086a290300211a20032903b005210f20034180066a41086a290300211b2003290380062114200341d0036a41086a2903002113200341a0046a41086a290300210820032903d003210720032903a0042115200341f0046a41086a290300211220032903f0042116200341c0056a41086a290300211720032903c005210b20034190066a41086a2903002120200329039006210d20032903b003210a200329038004211120032903d004210e20032903a005210520032903f0052106202d106d2101200320062005200e200a20117c22117c220e7c22057c22062014200f200c200420097c22097c220c7c220f7c2214200d200b2016200720157c22157c22167c220b7c220d423388202020172012201320087c2015200754ad7c7c2016201554ad7c7c200b201654ad7c7c200d200b54ad7c2215420d86847c2207423388201b201a2010201820197c2009200454ad7c7c200c200954ad7c7c200f200c54ad7c7c2014200f54ad7c20154233887c2007201454ad7c2215420d86847c220442ffffffffffffff03833703b841200320032903a003221620032903f0037c220920032903c0047c220c2003290390057c220f20032903e0057c22142004423388200341b0036a41086a29030020034180046a41086a2903007c2011200a54ad7c200341d0046a41086a2903007c200e201154ad7c200341a0056a41086a2903007c2005200e54ad7c200341f0056a41086a2903007c2006200554ad7c20154233887c2004200654ad7c2206420d86847c220442ffffffffffffff03833703c0412003200329039003221520032903e0037c220a20032903b0047c22112003290380057c220e20032903d0057c22052004423388200341a0036a41086a290300200341f0036a41086a2903007c2009201654ad7c200341c0046a41086a2903007c200c200954ad7c20034190056a41086a2903007c200f200c54ad7c200341e0056a41086a2903007c2014200f54ad7c20064233887c2004201454ad7c2206420d86847c220442ffffffffffffff03833703c8412003200442338820034190036a41086a290300200341e0036a41086a2903007c200a201554ad7c200341b0046a41086a2903007c2011200a54ad7c20034180056a41086a2903007c200e201154ad7c200341d0056a41086a2903007c2005200e54ad7c20064233887c2004200554ad7c420d868442137e200d42ffffffffffffff03837c220442ffffffffffffff03833703a84120032004423388200742ffffffffffffff03837c3703b041200341b0c0006a20034180c1006a106b20034188c0006a200341a8c1006a106b410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f7341800171410776106d202d71212d200241016a22024120470d000b202d106d210220034180036a20032903d8402204420042b0c1bad0f4e48603420010e808200320032903e040220742137e4200429df893c0a486ae01420010e808200341e0006a20032903e840220a42137e22064200429e9981b4dab2e103420010e808200341c0016a20032903f040220e42137e2205420042e098f4e5e9ebfb03420010e808200341a0026a20032903f840220942137e22114200429db1bce4dfb435420010e808200341f0026a20044200429db1bce4dfb435420010e808200341c0006a2007420042b0c1bad0f4e48603420010e808200341d0006a20064200429df893c0a486ae01420010e808200341b0016a20054200429e9981b4dab2e103420010e80820034190026a2011420042e098f4e5e9ebfb03420010e808200341e0026a2004420042e098f4e5e9ebfb03420010e808200341306a20074200429db1bce4dfb435420010e80820034190016a200a420042b0c1bad0f4e48603420010e808200341a0016a20054200429df893c0a486ae01420010e80820034180026a20114200429e9981b4dab2e103420010e808200341d0026a20044200429e9981b4dab2e103420010e808200341206a2007420042e098f4e5e9ebfb03420010e80820034180016a200a4200429db1bce4dfb435420010e808200341e0016a200e420042b0c1bad0f4e48603420010e808200341f0016a20114200429df893c0a486ae01420010e808200341c0026a20044200429df893c0a486ae01420010e808200341106a20074200429e9981b4dab2e103420010e808200341f0006a200a420042e098f4e5e9ebfb03420010e808200341d0016a200e4200429db1bce4dfb435420010e808200341b0026a2009420042b0c1bad0f4e48603420010e8082003200420042003290370220820032903107c220720032903d0017c220a20032903b0027c221120032903c0027c220e200329038001221220032903207c220520032903e0017c220620032903f0017c220920032903d0027c220c200329039001221720032903307c220f20032903a0017c22142003290380027c221520032903e0027c22162003290350222020032903407c220b20032903b0017c220d2003290390027c221820032903f0027c22192003290360222120032903007c221020032903c0017c221a2003290380037c221b20032903a0027c2213423388200341e0006a41086a290300200341086a2903007c2010202154ad7c200341c0016a41086a2903007c201a201054ad7c20034180036a41086a2903007c201b201a54ad7c200341a0026a41086a2903007c2013201b54ad7c420d86847c2210423388200341d0006a41086a290300200341c0006a41086a2903007c200b202054ad7c200341b0016a41086a2903007c200d200b54ad7c20034190026a41086a2903007c2018200d54ad7c200341f0026a41086a2903007c2019201854ad7c2010201954ad7c420d86847c220b42338820034190016a41086a290300200341306a41086a2903007c200f201754ad7c200341a0016a41086a2903007c2014200f54ad7c20034180026a41086a2903007c2015201454ad7c200341e0026a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220f42338820034180016a41086a290300200341206a41086a2903007c2005201254ad7c200341e0016a41086a2903007c2006200554ad7c200341f0016a41086a2903007c2009200654ad7c200341d0026a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c2205423388200341f0006a41086a290300200341106a41086a2903007c2007200854ad7c200341d0016a41086a2903007c200a200754ad7c200341b0026a41086a2903007c2011200a54ad7c200341c0026a41086a2903007c200e201154ad7c2005200e54ad7c420d868442137e201342ffffffffffffff03837c221142ffffffffffffff03838542002002200172106dad42ff01837d22078385220a3703d84020032011423388201042ffffffffffffff03837c20032903e04022048520078320048522113703e0402003200542ffffffffffffff038320032903f840220485200783200485220e3703f8402003200f42ffffffffffffff038320032903f04022048520078320048522053703f0402003200b42ffffffffffffff038320032903e84022048520078320048522073703e84020034188c0006a200341d8c0006a106b200342f0ffffffffffff3f200e7d220642ffffffffffffff038342f0ffffffffffff3f20057d22094233887c200e85420020032d008840410171106dad42ff01837d220483200e853703f8402003200942ffffffffffffff038342f0ffffffffffff3f20077d220e4233887c2005852004832005853703f0402003200e42ffffffffffffff038342f0ffffffffffff3f20117d220e4233887c2007852004832007853703e8402003200e42ffffffffffffff038342d0fdffffffffff3f200a7d22074233887c2011852004832011853703e0402003200642338842137e200742ffffffffffffff03837c200a85200483200a853703d84020002001202f72106d3a0000200020032903d840370308200041106a20032903e040370300200041186a20032903e840370300200041206a20032903f040370300200041286a20032903f840370300200341d0c1006a24000bd003011a7e200131001221022001310011210320013100102104200131000f2105200131000d2106200131000e2107200131001f2108200131001e2109200131001d210a200131001c210b200131001b210c200131001a210d200131000c210e200131000b210f200131000a21102001310009211120013100072112200131000821132001310019211420013100182115200131001721162001310016211720013100132118200131001421192001310015211a200020013500002001310004422086842001310005422886842001310006221b4230868442ffffffffffffff038337030020002018201942088684201a4210868420174218868420164220868420154228868420144230868442018842ffffffffffffff03833703182000201b201242088684201342108684201142188684201042208684200f42288684200e4230868442038842ffffffffffffff038337030820002015201442088684200d42108684200c42188684200b42208684200a42288684200942308684200842388684420c8842ffffffffffffff03833703202000200e20064208868420074210868420054218868420044220868420034228868420024230868420184238868442068842ffffffffffffff03833703100ba5990104017f237e057f0d7e230041f02b6b22022400200242003703e028200242013703d828200242003703e828200242003703f028200242003703f828200241c82a6a20014101106e200241c8256a20022903c82a2203420042b0c1bad0f4e48603420010e808200241c8286a20022903d02a220442137e4200429df893c0a486ae01420010e808200241f8276a20022903d82a220542137e22064200429e9981b4dab2e103420010e808200241a8276a20022903e02a220742137e2208420042e098f4e5e9ebfb03420010e808200241d8266a20022903e82a220942137e220a4200429db1bce4dfb435420010e808200241d8256a20034200429db1bce4dfb435420010e808200241b8286a2004420042b0c1bad0f4e48603420010e808200241e8276a20064200429df893c0a486ae01420010e80820024198276a20084200429e9981b4dab2e103420010e808200241c8266a200a420042e098f4e5e9ebfb03420010e808200241e8256a2003420042e098f4e5e9ebfb03420010e808200241a8286a20044200429db1bce4dfb435420010e808200241d8276a2005420042b0c1bad0f4e48603420010e80820024188276a20084200429df893c0a486ae01420010e808200241b8266a200a4200429e9981b4dab2e103420010e808200241f8256a20034200429e9981b4dab2e103420010e80820024198286a2004420042e098f4e5e9ebfb03420010e808200241c8276a20054200429db1bce4dfb435420010e808200241f8266a2007420042b0c1bad0f4e48603420010e808200241a8266a200a4200429df893c0a486ae01420010e80820024188266a20034200429df893c0a486ae01420010e80820024188286a20044200429e9981b4dab2e103420010e808200241b8276a2005420042e098f4e5e9ebfb03420010e808200241e8266a20074200429db1bce4dfb435420010e80820024198266a2009420042b0c1bad0f4e48603420010e808200241b81d6a200229038826220b2002290398267c22032002290388287c220420022903b8277c220520022903e8267c220a20022903a826220c20022903f8267c220720022903f8257c22082002290398287c220620022903c8277c2209200229038827220d20022903d8277c220e20022903b8267c220f20022903e8257c221020022903a8287c221120022903e827221220022903b8287c22132002290398277c221420022903c8267c221520022903d8257c221620022903c828221720022903c8257c221820022903f8277c221920022903a8277c221a20022903d8267c221b423388200241c8286a41086a290300200241c8256a41086a2903007c2018201754ad7c200241f8276a41086a2903007c2019201854ad7c200241a8276a41086a2903007c201a201954ad7c200241d8266a41086a2903007c201b201a54ad7c420d86847c2218423388200241e8276a41086a290300200241b8286a41086a2903007c2013201254ad7c20024198276a41086a2903007c2014201354ad7c200241c8266a41086a2903007c2015201454ad7c200241d8256a41086a2903007c2016201554ad7c2018201654ad7c420d86847c221342338820024188276a41086a290300200241d8276a41086a2903007c200e200d54ad7c200241b8266a41086a2903007c200f200e54ad7c200241e8256a41086a2903007c2010200f54ad7c200241a8286a41086a2903007c2011201054ad7c2013201154ad7c420d86847c220e423388200241a8266a41086a290300200241f8266a41086a2903007c2007200c54ad7c200241f8256a41086a2903007c2008200754ad7c20024198286a41086a2903007c2006200854ad7c200241c8276a41086a2903007c2009200654ad7c200e200954ad7c420d86847c220742338820024188266a41086a29030020024198266a41086a2903007c2003200b54ad7c20024188286a41086a2903007c2004200354ad7c200241b8276a41086a2903007c2005200454ad7c200241e8266a41086a2903007c200a200554ad7c2007200a54ad7c420d868442137e201b42ffffffffffffff03837c220442ffffffffffffff0383220320022903d8287c2208420042f682ffa299b88202420010e808200241d81c6a200742ffffffffffffff0383220720022903f8287c2206420042ddf396f0fbf7b9c300420010e808200241e81c6a200e42ffffffffffffff0383220a20022903f0287c2209420042ccf7d9e9fbcee010420010e80820024188236a201342ffffffffffffff0383220520022903e8287c220e4200428df582a3b0868004420010e808200241e8216a2004423388201842ffffffffffffff03837c220420022903e0287c220f4200429aebd0c282f1c201420010e808200241f8216a200f420042f682ffa299b88202420010e808200241c81d6a2008420042cff887b5bcb5c603420010e808200241c81c6a2006420042ccf7d9e9fbcee010420010e808200241f81c6a20094200428df582a3b0868004420010e80820024198236a200e4200429aebd0c282f1c201420010e808200241a8236a200e420042f682ffa299b88202420010e80820024188226a200f420042cff887b5bcb5c603420010e808200241d81d6a2008420042848dc885f9eff000420010e808200241b81c6a20064200428df582a3b0868004420010e808200241881d6a20094200429aebd0c282f1c201420010e808200241981d6a2009420042f682ffa299b88202420010e808200241b8236a200e420042cff887b5bcb5c603420010e80820024198226a200f420042848dc885f9eff000420010e808200241e81d6a2008420042dfddd7d2ccf91a420010e808200241a81c6a20064200429aebd0c282f1c201420010e808200241981c6a2006420042f682ffa299b88202420010e808200241a81d6a2009420042cff887b5bcb5c603420010e808200241c8236a200e420042848dc885f9eff000420010e808200241a8226a200f420042dfddd7d2ccf91a420010e808200241f81d6a2008420042bed6acd4f2a00a420010e808200220022903b81c221920022903d81d7c220820022903881d7c220620022903a8237c22092002290388227c220e20022903c81c221a20022903c81d7c220f20022903f81c7c22102002290398237c221120022903f8217c221320022903d81c221b20022903b81d7c221420022903e81c7c22152002290388237c221620022903e8217c2218423388200241d81c6a41086a290300200241b81d6a41086a2903007c2014201b54ad7c200241e81c6a41086a2903007c2015201454ad7c20024188236a41086a2903007c2016201554ad7c200241e8216a41086a2903007c2018201654ad7c420d86847c2214423388200241c81c6a41086a290300200241c81d6a41086a2903007c200f201a54ad7c200241f81c6a41086a2903007c2010200f54ad7c20024198236a41086a2903007c2011201054ad7c200241f8216a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f42ffffffffffffff038337039029200220022903a81c221620022903e81d7c221020022903981d7c221120022903b8237c22132002290398227c2215200f423388200241b81c6a41086a290300200241d81d6a41086a2903007c2008201954ad7c200241881d6a41086a2903007c2006200854ad7c200241a8236a41086a2903007c2009200654ad7c20024188226a41086a2903007c200e200954ad7c200f200e54ad7c420d86847c220842ffffffffffffff038337039829200220022903981c221920022903f81d7c220620022903a81d7c220920022903c8237c220e20022903a8227c220f2008423388200241a81c6a41086a290300200241e81d6a41086a2903007c2010201654ad7c200241981d6a41086a2903007c2011201054ad7c200241b8236a41086a2903007c2013201154ad7c20024198226a41086a2903007c2015201354ad7c2008201554ad7c420d86847c220842ffffffffffffff03833703a02920022008423388200241981c6a41086a290300200241f81d6a41086a2903007c2006201954ad7c200241a81d6a41086a2903007c2009200654ad7c200241c8236a41086a2903007c200e200954ad7c200241a8226a41086a2903007c200f200e54ad7c2008200f54ad7c420d868442137e201842ffffffffffffff03837c220842ffffffffffffff03833703802920022008423388201442ffffffffffffff03837c37038829200241d8216a2003420042a3f1e59aa1b9d301420010e808200241f8226a200442137e221c420042ffed8af7ec86c802420010e808200241e8236a200542137e2210420042bbf9809de6b8ce03420010e80820024198246a200a42137e2211420042a9808780a6f4f902420010e808200241d8246a200742137e2208420042bdddd5d88385ea00420010e808200241c8216a2003420042bdddd5d88385ea00420010e808200241e8226a2004420042a3f1e59aa1b9d301420010e808200241d8236a2010420042ffed8af7ec86c802420010e80820024188246a2011420042bbf9809de6b8ce03420010e808200241c8246a2008420042a9808780a6f4f902420010e808200241b8216a2003420042a9808780a6f4f902420010e808200241d8226a2004420042bdddd5d88385ea00420010e808200241e8246a2005420042a3f1e59aa1b9d301420010e808200241f8236a2011420042ffed8af7ec86c802420010e808200241b8246a2008420042bbf9809de6b8ce03420010e808200241a8216a2003420042bbf9809de6b8ce03420010e808200241c8226a2004420042a9808780a6f4f902420010e808200241f8246a2005420042bdddd5d88385ea00420010e80820024198256a200a420042a3f1e59aa1b9d301420010e808200241a8246a2008420042ffed8af7ec86c802420010e808200241d8206a2003420042ffed8af7ec86c802420010e808200241b8226a2004420042bbf9809de6b8ce03420010e80820024188256a2005420042a9808780a6f4f902420010e808200241a8256a200a420042bdddd5d88385ea00420010e808200241b8256a2007420042a3f1e59aa1b9d301420010e808200241881e6a200342a3f1e59aa1b9d3017c2206420042efffffffffffffc30020022903d820221d20022903b8257c220920022903b8227c220e2002290388257c220f20022903a8257c221320022903a824221e2002290398257c221420022903a8217c221520022903c8227c221620022903f8247c221820022903f823221f20022903e8247c221920022903b8247c221a20022903b8217c221b20022903d8227c220b20022903d823222020022903e8227c220c2002290388247c220d20022903c8247c221220022903c8217c221720022903f822222120022903d8217c222220022903e8237c22232002290398247c222420022903d8247c2225423388200241f8226a41086a290300200241d8216a41086a2903007c2022202154ad7c200241e8236a41086a2903007c2023202254ad7c20024198246a41086a2903007c2024202354ad7c200241d8246a41086a2903007c2025202454ad7c420d86847c2222423388200241d8236a41086a290300200241e8226a41086a2903007c200c202054ad7c20024188246a41086a2903007c200d200c54ad7c200241c8246a41086a2903007c2012200d54ad7c200241c8216a41086a2903007c2017201254ad7c2022201754ad7c420d86847c220c423388200241f8236a41086a290300200241e8246a41086a2903007c2019201f54ad7c200241b8246a41086a2903007c201a201954ad7c200241b8216a41086a2903007c201b201a54ad7c200241d8226a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241a8246a41086a29030020024198256a41086a2903007c2014201e54ad7c200241a8216a41086a2903007c2015201454ad7c200241c8226a41086a2903007c2016201554ad7c200241f8246a41086a2903007c2018201654ad7c2019201854ad7c420d86847c221442ffffffffffffff03837d221542338842137e42bcfdffffffffffc3002014423388200241d8206a41086a290300200241b8256a41086a2903007c2009201d54ad7c200241b8226a41086a2903007c200e200954ad7c20024188256a41086a2903007c200f200e54ad7c200241a8256a41086a2903007c2013200f54ad7c2014201354ad7c420d868442137e202542ffffffffffffff03837c221342ffffffffffffff03837d221642ffffffffffffff03837c2209420010e808200241881f6a201542ffffffffffffff038342efffffffffffffc300201942ffffffffffffff03837d220f4233887c220e4200201c4287f0dc94c6dfde0f7c420010e80820024198216a200f42ffffffffffffff038342efffffffffffffc300200c42ffffffffffffff03837d22144233887c220f42002010428b868581d2a18c387c2215420010e808200241c8206a201442ffffffffffffff038342efffffffffffffc3002013423388202242ffffffffffffff03837c7d22134233887c22104200201142e18392a796b7d2c4007c2214420010e80820024188206a201342ffffffffffffff038320164233887c22114200200842eda9ced69582d9307c2208420010e808200241981e6a201142002006420010e808200241c81f6a20094200200442bdddd5d88385ea007c2213420010e808200241f81e6a200e42002015420010e80820024188216a200f42002014420010e808200241b8206a201042002008420010e808200241a81e6a201042002006420010e808200241f81f6a201142002013420010e808200241b81f6a20094200200542a9808780a6f4f9027c2215420010e808200241e81e6a200e42002014420010e808200241f8206a200f42002008420010e808200241b81e6a200f42002006420010e808200241a8206a201042002013420010e808200241e81f6a201142002015420010e808200241a81f6a20094200200a42bbf9809de6b8ce037c2214420010e808200241d81e6a200e42002008420010e808200241c81e6a200e42002006420010e808200241e8206a200f42002013420010e80820024198206a201042002015420010e808200241d81f6a201142002014420010e808200241981f6a20094200200742ffed8af7ec86c8027c420010e808200220022903e81e221920022903b81f7c220820022903f8207c220620022903a81e7c220920022903f81f7c220e20022903f81e221a20022903c81f7c220f2002290388217c221020022903b8207c221120022903981e7c221320022903881f221b20022903881e7c22142002290398217c221520022903c8207c22162002290388207c2218423388200241881f6a41086a290300200241881e6a41086a2903007c2014201b54ad7c20024198216a41086a2903007c2015201454ad7c200241c8206a41086a2903007c2016201554ad7c20024188206a41086a2903007c2018201654ad7c420d86847c2214423388200241f81e6a41086a290300200241c81f6a41086a2903007c200f201a54ad7c20024188216a41086a2903007c2010200f54ad7c200241b8206a41086a2903007c2011201054ad7c200241981e6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f42ffffffffffffff03833703e029200220022903d81e221620022903a81f7c221020022903b81e7c221120022903a8207c221320022903e81f7c2215200f423388200241e81e6a41086a290300200241b81f6a41086a2903007c2008201954ad7c200241f8206a41086a2903007c2006200854ad7c200241a81e6a41086a2903007c2009200654ad7c200241f81f6a41086a2903007c200e200954ad7c200f200e54ad7c420d86847c220842ffffffffffffff03833703e829200220022903c81e221920022903981f7c220620022903e8207c22092002290398207c220e20022903d81f7c220f2008423388200241d81e6a41086a290300200241a81f6a41086a2903007c2010201654ad7c200241b81e6a41086a2903007c2011201054ad7c200241a8206a41086a2903007c2013201154ad7c200241e81f6a41086a2903007c2015201354ad7c2008201554ad7c420d86847c220842ffffffffffffff03833703f02920022008423388200241c81e6a41086a290300200241981f6a41086a2903007c2006201954ad7c200241e8206a41086a2903007c2009200654ad7c20024198206a41086a2903007c200e200954ad7c200241d81f6a41086a2903007c200f200e54ad7c2008200f54ad7c420d868442137e201842ffffffffffffff03837c220842ffffffffffffff03833703d02920022008423388201442ffffffffffffff03837c3703d829200241c82a6a20024180296a200241d0296a106f20022d00c82a2126200241a02a6a41206a2227200241f02a6a2903002208370300200241a02a6a41186a2228200241c82a6a41206a2903002206370300200241a02a6a41106a2229200241c82a6a41186a2903002209370300200241a02a6a41086a222a200241c82a6a41106a290300220e370300200220022903d02a220f3703a02a20024188196a200129030022104200200f420010e808200241881c6a200842002001290308221142137e420010e808200241b81b6a200642002001290310221342137e2218420010e808200241e81a6a200942002001290318221542137e2216420010e808200241981a6a200e42002001290320221942137e2214420010e80820024198196a200e42002010420010e808200241f81b6a200f42002011420010e808200241a81b6a200842002018420010e808200241d81a6a200642002016420010e808200241881a6a200942002014420010e808200241a8196a200942002010420010e808200241e81b6a200e42002011420010e808200241981b6a200f42002013420010e808200241c81a6a200842002016420010e808200241f8196a200642002014420010e808200241b8196a200642002010420010e808200241d81b6a200942002011420010e808200241881b6a200e42002013420010e808200241b81a6a200f42002015420010e808200241e8196a200842002014420010e808200241c8196a200842002010420010e808200241c81b6a200642002011420010e808200241f81a6a200942002013420010e808200241a81a6a200e42002015420010e808200241d8196a200f42002019420010e808200220022903c819222220022903d8197c220820022903c81b7c220620022903f81a7c220920022903a81a7c220e20022903e819222320022903b81a7c220f20022903b8197c221020022903d81b7c221120022903881b7c221320022903c81a222420022903981b7c221420022903f8197c221520022903a8197c221620022903e81b7c221820022903a81b222520022903f81b7c221920022903d81a7c221a20022903881a7c221b2002290398197c220b20022903881c221c2002290388197c220c20022903b81b7c220d20022903e81a7c221220022903981a7c2217423388200241881c6a41086a29030020024188196a41086a2903007c200c201c54ad7c200241b81b6a41086a2903007c200d200c54ad7c200241e81a6a41086a2903007c2012200d54ad7c200241981a6a41086a2903007c2017201254ad7c420d86847c220c423388200241a81b6a41086a290300200241f81b6a41086a2903007c2019202554ad7c200241d81a6a41086a2903007c201a201954ad7c200241881a6a41086a2903007c201b201a54ad7c20024198196a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241c81a6a41086a290300200241981b6a41086a2903007c2014202454ad7c200241f8196a41086a2903007c2015201454ad7c200241a8196a41086a2903007c2016201554ad7c200241e81b6a41086a2903007c2018201654ad7c2019201854ad7c420d86847c2214423388200241e8196a41086a290300200241b81a6a41086a2903007c200f202354ad7c200241b8196a41086a2903007c2010200f54ad7c200241d81b6a41086a2903007c2011201054ad7c200241881b6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f423388200241c8196a41086a290300200241d8196a41086a2903007c2008202254ad7c200241c81b6a41086a2903007c2006200854ad7c200241f81a6a41086a2903007c2009200654ad7c200241a81a6a41086a2903007c200e200954ad7c200f200e54ad7c420d868442137e201742ffffffffffffff03837c220842ffffffffffffff03833703f82a20022008423388200c42ffffffffffffff03837c22063703802b2002200f42ffffffffffffff038322093703982b2002201442ffffffffffffff0383220e3703902b2002201942ffffffffffffff0383220f3703882b200241c82a6a200241f82a6a106b20022d00c82a410171106d417f73410171106d21012002200642f0ffffffffffff3f20067d221142ffffffffffffff038342d0fdffffffffff3f20022903f82a22107d22134233887c8542002001ad42ff01837d22088320068522063703802b2002200942f0ffffffffffff3f20097d221442ffffffffffffff038342f0ffffffffffff3f200e7d22154233887c8520088320098522093703982b2002200f42f0ffffffffffff3f200f7d221642ffffffffffffff038320114233887c85200883200f85220f3703882b200220102010201442338842137e201342ffffffffffffff03837c852008838522103703f82a2002200e201542ffffffffffffff038320164233887c85200883200e85220e3703902b2026417f734101712201106d2126202a202a290300221120068542002026ad42ff01837d220883201185370300202920292903002206200f85200883200685370300202820282903002206200e85200883200685370300202720272903002206200985200883200685370300200220022903a02a22062010852008832006853703a02a2001106d2101200241c80f6a200720022903f8287d42f0ffffffffffff3f7c221142338842137e200320022903d8287d42d0fdffffffffff3f7c220942ffffffffffffff03837c22084200200342ecffffffffffff038542002001ad42ff01837d22038342ecffffffffffff03852206420010e808200241880d6a200742ffffffffffffff038520038342ffffffffffffff038522074200200420022903e0287d42f0ffffffffffff3f7c220f42ffffffffffffff038320094233887c220942137e420010e808200241d80d6a200a42ffffffffffffff038520038342ffffffffffffff0385220e4200200520022903e8287d42f0ffffffffffff3f7c221042ffffffffffffff0383200f4233887c220f42137e2213420010e808200241a80e6a200542ffffffffffffff038520038342ffffffffffffff038522054200200a20022903f0287d42f0ffffffffffff3f7c221442ffffffffffffff038320104233887c220a42137e2210420010e808200241f80e6a200442ffffffffffffff038520038342ffffffffffffff038522034200201142ffffffffffffff038320144233887c221142137e2204420010e808200241e80e6a200342002008420010e808200241b80f6a200642002009420010e808200241f80c6a200742002013420010e808200241c80d6a200e42002010420010e808200241980e6a200542002004420010e808200241880e6a200542002008420010e808200241d80e6a200342002009420010e808200241a80f6a20064200200f420010e808200241e80c6a200742002010420010e808200241b80d6a200e42002004420010e808200241a80d6a200e42002008420010e808200241f80d6a200542002009420010e808200241c80e6a20034200200f420010e808200241980f6a20064200200a420010e808200241880c6a200742002004420010e808200241a80b6a200742002008420010e808200241980d6a200e42002009420010e808200241e80d6a20054200200f420010e808200241b80e6a20034200200a420010e808200241880f6a200642002011420010e808200241f8096a20022903a80b220b20022903880f7c220320022903980d7c220420022903e80d7c220520022903b80e7c220a20022903880c220c20022903980f7c220720022903a80d7c220820022903f80d7c220620022903c80e7c220920022903e80c220d20022903a80f7c220e20022903b80d7c220f20022903880e7c221020022903d80e7c221120022903f80c221220022903b80f7c221320022903c80d7c221420022903980e7c221520022903e80e7c221620022903880d221720022903c80f7c221820022903d80d7c221920022903a80e7c221a20022903f80e7c221b423388200241880d6a41086a290300200241c80f6a41086a2903007c2018201754ad7c200241d80d6a41086a2903007c2019201854ad7c200241a80e6a41086a2903007c201a201954ad7c200241f80e6a41086a2903007c201b201a54ad7c420d86847c2218423388200241f80c6a41086a290300200241b80f6a41086a2903007c2013201254ad7c200241c80d6a41086a2903007c2014201354ad7c200241980e6a41086a2903007c2015201454ad7c200241e80e6a41086a2903007c2016201554ad7c2018201654ad7c420d86847c2213423388200241e80c6a41086a290300200241a80f6a41086a2903007c200e200d54ad7c200241b80d6a41086a2903007c200f200e54ad7c200241880e6a41086a2903007c2010200f54ad7c200241d80e6a41086a2903007c2011201054ad7c2013201154ad7c420d86847c220e423388200241880c6a41086a290300200241980f6a41086a2903007c2007200c54ad7c200241a80d6a41086a2903007c2008200754ad7c200241f80d6a41086a2903007c2006200854ad7c200241c80e6a41086a2903007c2009200654ad7c200e200954ad7c420d86847c2207423388200241a80b6a41086a290300200241880f6a41086a2903007c2003200b54ad7c200241980d6a41086a2903007c2004200354ad7c200241e80d6a41086a2903007c2005200454ad7c200241b80e6a41086a2903007c200a200554ad7c2007200a54ad7c420d868442137e201b42ffffffffffffff03837c220842ffffffffffffff03832203420042a09ab5a7a4d5d602420010e808200241980b6a200742ffffffffffffff03832204420042efabafe6f7c88835420010e808200241f80b6a200e42ffffffffffffff03832205420042f8fb9b94e0ed8617420010e808200241d80c6a201342ffffffffffffff0383220a4200428b83d98ea38bdb0a420010e808200241c80a6a2008423388201842ffffffffffffff03837c2207420042e6c09290d28a8b35420010e808200241b80a6a2007420042a09ab5a7a4d5d602420010e808200241e8096a2003420042b5cccc99bcc0e502420010e808200241880b6a2004420042f8fb9b94e0ed8617420010e808200241e80b6a20054200428b83d98ea38bdb0a420010e808200241c80c6a200a420042e6c09290d28a8b35420010e808200241b80c6a200a420042a09ab5a7a4d5d602420010e808200241a80a6a2007420042b5cccc99bcc0e502420010e808200241d8096a2003420042a8f2a9fabaa79b01420010e808200241f80a6a20044200428b83d98ea38bdb0a420010e808200241d80b6a2005420042e6c09290d28a8b35420010e808200241c80b6a2005420042a09ab5a7a4d5d602420010e808200241a80c6a200a420042b5cccc99bcc0e502420010e808200241980a6a2007420042a8f2a9fabaa79b01420010e808200241c8096a2003420042a9afa6f3e694c800420010e808200241e80a6a2004420042e6c09290d28a8b35420010e808200241d80a6a2004420042a09ab5a7a4d5d602420010e808200241b80b6a2005420042b5cccc99bcc0e502420010e808200241980c6a200a420042a8f2a9fabaa79b01420010e808200241880a6a2007420042a9afa6f3e694c800420010e808200241b8096a2003420042c2cdbdbdb3d1e502420010e80820022903f029210f20022903e829210e20022903e029210520022903d829210320022903d0292104200241a02b6a200241a02a6a4101106e200241c82b6a41106a220120292903002207370300200241c82b6a41086a202a290300220a200a7c220a3703002001200720077c2207370300200241c82b6a41186a2028290300220820087c2208370300200241c82b6a41206a2027290300220620067c2206370300200220022903a02a220920097c22093703c82b200241c8176a200442002009420010e808200241b8176a20064200200342137e420010e808200241c8166a20084200200542137e2213420010e80820024188186a20074200200e42137e2211420010e808200241b8166a200a4200200f42137e2210420010e808200241c8186a200a42002004420010e808200241d8176a200942002003420010e808200241a8176a200642002013420010e808200241d8166a200842002011420010e808200241a8166a200742002010420010e80820024198186a200742002004420010e808200241d8186a200a42002003420010e808200241e8176a200942002005420010e80820024198176a200642002011420010e80820024198166a200842002010420010e808200241e8166a200842002004420010e808200241a8186a200742002003420010e808200241e8186a200a42002005420010e808200241f8176a20094200200e420010e808200241e8146a200642002010420010e80820024188176a200642002004420010e808200241f8166a200842002003420010e808200241b8186a200742002005420010e808200241f8186a200a4200200e420010e808200241b8136a20094200200f420010e808200241e8066a20022903d80a222220022903b8097c220a20022903b80b7c220720022903980c7c220820022903880a7c220620022903e80a222320022903c8097c220920022903c80b7c221020022903a80c7c221120022903980a7c221320022903f80a222420022903d8097c221420022903d80b7c221520022903b80c7c221620022903a80a7c221820022903880b222520022903e8097c221920022903e80b7c221a20022903c80c7c221b20022903b80a7c220b20022903980b221c20022903f8097c220c20022903f80b7c220d20022903d80c7c221220022903c80a7c2217423388200241980b6a41086a290300200241f8096a41086a2903007c200c201c54ad7c200241f80b6a41086a2903007c200d200c54ad7c200241d80c6a41086a2903007c2012200d54ad7c200241c80a6a41086a2903007c2017201254ad7c420d86847c220c423388200241880b6a41086a290300200241e8096a41086a2903007c2019202554ad7c200241e80b6a41086a2903007c201a201954ad7c200241c80c6a41086a2903007c201b201a54ad7c200241b80a6a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241f80a6a41086a290300200241d8096a41086a2903007c2014202454ad7c200241d80b6a41086a2903007c2015201454ad7c200241b80c6a41086a2903007c2016201554ad7c200241a80a6a41086a2903007c2018201654ad7c2019201854ad7c420d86847c2214423388200241e80a6a41086a290300200241c8096a41086a2903007c2009202354ad7c200241c80b6a41086a2903007c2010200954ad7c200241a80c6a41086a2903007c2011201054ad7c200241980a6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220942ffffffffffffff0383200f7d42f0ffffffffffff3f7c220f42338842137e2009423388200241d80a6a41086a290300200241b8096a41086a2903007c200a202254ad7c200241b80b6a41086a2903007c2007200a54ad7c200241980c6a41086a2903007c2008200754ad7c200241880a6a41086a2903007c2006200854ad7c2009200654ad7c420d868442137e201742ffffffffffffff03837c220742ffffffffffffff038320047d42d0fdffffffffff3f7c220842ffffffffffffff03837c22044200429bdceccb84d4fd03420010e808200241b8076a200f42ffffffffffffff0383201442ffffffffffffff0383200e7d42f0ffffffffffff3f7c22064233887c220a420042969988cadca7b00e420010e808200241a8096a200642ffffffffffffff0383201942ffffffffffffff038320057d42f0ffffffffffff3f7c22064233887c2205420042a88c8b81f5cabeca00420010e808200241d8086a200642ffffffffffffff03832007423388200c42ffffffffffffff03837c20037d42f0ffffffffffff3f7c22074233887c2203420042c8ee859b8cd29829420010e80820024188086a200742ffffffffffffff038320084233887c2207420042dcd78e98b19df320420010e808200241f8076a20074200429bdceccb84d4fd03420010e808200241d8066a2004420042d2dfded4f0ede000420010e808200241a8076a200a420042a88c8b81f5cabeca00420010e80820024198096a2005420042c8ee859b8cd29829420010e808200241c8086a2003420042dcd78e98b19df320420010e808200241b8086a20034200429bdceccb84d4fd03420010e808200241e8076a2007420042d2dfded4f0ede000420010e808200241c8066a2004420042b8ecf9b5ffe8f503420010e80820024198076a200a420042c8ee859b8cd29829420010e80820024188096a2005420042dcd78e98b19df320420010e808200241f8086a20054200429bdceccb84d4fd03420010e808200241a8086a2003420042d2dfded4f0ede000420010e808200241d8076a2007420042b8ecf9b5ffe8f503420010e80820024198056a200442004298c9f9f3f9c09502420010e80820024188076a200a420042dcd78e98b19df320420010e808200241f8066a200a4200429bdceccb84d4fd03420010e808200241e8086a2005420042d2dfded4f0ede000420010e80820024198086a2003420042b8ecf9b5ffe8f503420010e808200241c8076a200742004298c9f9f3f9c09502420010e808200241e8036a2004420042b4f0cadfb1d2dd01420010e80820022903b82b212320022903b02b212420022903a82b212520022903c02b211c20022903a02b211d200242003703d02a200242013703c82a200242003703d82a200242003703e02a200242003703e82a200220022903a02b42017c22033703c82a200220022903a82b22043703d02a200220022903b02b22103703d82a200220022903b82b22153703e02a200241e8106a20034200200229038817221720022903b8137c220520022903f8167c220a20022903b8187c220720022903f8187c220820022903e814222220022903f8177c220620022903e8167c220920022903a8187c220e20022903e8187c220f200229039817221e20022903e8177c22112002290398167c22132002290398187c221420022903d8187c221620022903a817221f20022903d8177c221820022903d8167c221920022903a8167c221a20022903c8187c221b20022903b817222020022903c8177c220b20022903c8167c220c2002290388187c220d20022903b8167c2212423388200241b8176a41086a290300200241c8176a41086a2903007c200b202054ad7c200241c8166a41086a2903007c200c200b54ad7c20024188186a41086a2903007c200d200c54ad7c200241b8166a41086a2903007c2012200d54ad7c420d86847c220b423388200241a8176a41086a290300200241d8176a41086a2903007c2018201f54ad7c200241d8166a41086a2903007c2019201854ad7c200241a8166a41086a2903007c201a201954ad7c200241c8186a41086a2903007c201b201a54ad7c200b201b54ad7c420d86847c221942338820024198176a41086a290300200241e8176a41086a2903007c2011201e54ad7c20024198166a41086a2903007c2013201154ad7c20024198186a41086a2903007c2014201354ad7c200241d8186a41086a2903007c2016201454ad7c2019201654ad7c420d86847c2211423388200241e8146a41086a290300200241f8176a41086a2903007c2006202254ad7c200241e8166a41086a2903007c2009200654ad7c200241a8186a41086a2903007c200e200954ad7c200241e8186a41086a2903007c200f200e54ad7c2011200f54ad7c420d86847c220642338820024188176a41086a290300200241b8136a41086a2903007c2005201754ad7c200241f8166a41086a2903007c200a200554ad7c200241b8186a41086a2903007c2007200a54ad7c200241f8186a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e201242ffffffffffffff03837c220942ffffffffffffff03832205420010e808200241a8136a200642ffffffffffffff0383220a4200200442137e222b420010e808200241d8146a201142ffffffffffffff038322074200201042137e2218420010e80820024188166a201942ffffffffffffff038322084200201542137e2216420010e80820024188126a2009423388200b42ffffffffffffff03837c2206420020022903c02b221a42137e2211420010e808200241f8116a200642002003420010e808200241d8106a200542002004420010e80820024198136a200a42002018420010e808200241c8146a200742002016420010e808200241f8156a200842002011420010e808200241e8156a200842002003420010e808200241e8116a200642002004420010e808200241c8106a200542002010420010e80820024188136a200a42002016420010e808200241b8146a200742002011420010e808200241a8146a200742002003420010e808200241d8156a200842002004420010e808200241d8116a200642002010420010e808200241b8106a200542002015420010e808200241f8126a200a42002011420010e808200241e8126a200a42002003420010e80820024198146a200742002004420010e808200241c8156a200842002010420010e808200241c8116a200642002015420010e808200241a8106a20054200201a420010e8082000200229038813222c20022903c8107c221b20022903b8147c220b20022903e8157c220c20022903e8117c220d200229039813222220022903d8107c220920022903c8147c220e20022903f8157c220f20022903f8117c221320022903a813221e20022903e8107c221420022903d8147c22192002290388167c22122002290388127c2217423388200241a8136a41086a290300200241e8106a41086a2903007c2014201e54ad7c200241d8146a41086a2903007c2019201454ad7c20024188166a41086a2903007c2012201954ad7c20024188126a41086a2903007c2017201254ad7c420d86847c221242338820024198136a41086a290300200241d8106a41086a2903007c2009202254ad7c200241c8146a41086a2903007c200e200954ad7c200241f8156a41086a2903007c200f200e54ad7c200241f8116a41086a2903007c2013200f54ad7c2012201354ad7c420d86847c222242ffffffffffffff038337031020024198106a42f0ffffffffffff3f201c7d221442338842137e42d1fdffffffffff3f201d7d220e42ffffffffffffff03837c220942002005420010e808200241d8126a200a420042f0ffffffffffff3f20257d220f42ffffffffffffff0383200e4233887c220e42137e420010e80820024188146a2007420042f0ffffffffffff3f20247d221342ffffffffffffff0383200f4233887c220f42137e2224420010e808200241b8156a2008420042f0ffffffffffff3f20237d221942ffffffffffffff038320134233887c221342137e2223420010e808200241b8116a20064200201442ffffffffffffff038320194233887c221442137e2219420010e808200241a8116a200642002009420010e80820024188106a20054200200e420010e808200241c8126a200a42002024420010e808200241f8136a200742002023420010e808200241a8156a200842002019420010e80820024198156a200842002009420010e80820024198116a20064200200e420010e808200241f80f6a20054200200f420010e808200241b8126a200a42002023420010e808200241e8136a200742002019420010e808200241d8136a200742002009420010e80820024188156a20084200200e420010e80820024188116a20064200200f420010e808200241e80f6a200542002013420010e808200241a8126a200a42002019420010e80820004190016a20022903a812222d20022903e80f7c221920022903d8137c22232002290388157c22242002290388117c222520022903b812222e20022903f80f7c221c20022903e8137c221d2002290398157c221e2002290398117c221f20022903c812222f2002290388107c222020022903f8137c222120022903a8157c223020022903a8117c223120022903d81222322002290398107c22332002290388147c223420022903b8157c223520022903b8117c2236423388200241d8126a41086a29030020024198106a41086a2903007c2033203254ad7c20024188146a41086a2903007c2034203354ad7c200241b8156a41086a2903007c2035203454ad7c200241b8116a41086a2903007c2036203554ad7c420d86847c2233423388200241c8126a41086a29030020024188106a41086a2903007c2020202f54ad7c200241f8136a41086a2903007c2021202054ad7c200241a8156a41086a2903007c2030202154ad7c200241a8116a41086a2903007c2031203054ad7c2033203154ad7c420d86847c2220423388200241b8126a41086a290300200241f80f6a41086a2903007c201c202e54ad7c200241e8136a41086a2903007c201d201c54ad7c20024198156a41086a2903007c201e201d54ad7c20024198116a41086a2903007c201f201e54ad7c2020201f54ad7c420d86847c221c42ffffffffffffff0383370300200020022903f812223020022903b8107c221d20022903a8147c221e20022903d8157c221f20022903d8117c2221202242338820024188136a41086a290300200241c8106a41086a2903007c201b202c54ad7c200241b8146a41086a2903007c200b201b54ad7c200241e8156a41086a2903007c200c200b54ad7c200241e8116a41086a2903007c200d200c54ad7c2022200d54ad7c420d86847c221b42ffffffffffffff038337031820024198126a200a42002009420010e808200241c8136a20074200200e420010e808200241f8146a20084200200f420010e808200241f8106a200642002013420010e808200241d80f6a200542002014420010e80820004198016a200229039812222c20022903d80f7c220b20022903c8137c220c20022903f8147c220d20022903f8107c2222201c423388200241a8126a41086a290300200241e80f6a41086a2903007c2019202d54ad7c200241d8136a41086a2903007c2023201954ad7c20024188156a41086a2903007c2024202354ad7c20024188116a41086a2903007c2025202454ad7c201c202554ad7c420d86847c222342ffffffffffffff0383370300200020022903e812221920022903a8107c22052002290398147c220a20022903c8157c220720022903c8117c2208201b423388200241f8126a41086a290300200241b8106a41086a2903007c201d203054ad7c200241a8146a41086a2903007c201e201d54ad7c200241d8156a41086a2903007c201f201e54ad7c200241d8116a41086a2903007c2021201f54ad7c201b202154ad7c420d86847c220642ffffffffffffff038337032020002006423388200241e8126a41086a290300200241a8106a41086a2903007c2005201954ad7c20024198146a41086a2903007c200a200554ad7c200241c8156a41086a2903007c2007200a54ad7c200241c8116a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e201742ffffffffffffff03837c220542ffffffffffffff038337030020002005423388201242ffffffffffffff03837c370308200241d8016a20022903f806222d20022903e8037c220520022903e8087c220a2002290398087c220720022903c8077c2208200229038807222e2002290398057c220620022903f8087c221920022903a8087c221b20022903d8077c2212200229039807222f20022903c8067c22172002290388097c222420022903b8087c222520022903e8077c221c20022903a807223220022903d8067c221d2002290398097c221e20022903c8087c221f20022903f8077c222120022903b807223720022903e8067c223020022903a8097c223120022903d8087c22342002290388087c2235423388200241b8076a41086a290300200241e8066a41086a2903007c2030203754ad7c200241a8096a41086a2903007c2031203054ad7c200241d8086a41086a2903007c2034203154ad7c20024188086a41086a2903007c2035203454ad7c420d86847c2230423388200241a8076a41086a290300200241d8066a41086a2903007c201d203254ad7c20024198096a41086a2903007c201e201d54ad7c200241c8086a41086a2903007c201f201e54ad7c200241f8076a41086a2903007c2021201f54ad7c2030202154ad7c420d86847c221d42338820024198076a41086a290300200241c8066a41086a2903007c2017202f54ad7c20024188096a41086a2903007c2024201754ad7c200241b8086a41086a2903007c2025202454ad7c200241e8076a41086a2903007c201c202554ad7c201d201c54ad7c420d86847c221742338820024188076a41086a29030020024198056a41086a2903007c2006202e54ad7c200241f8086a41086a2903007c2019200654ad7c200241a8086a41086a2903007c201b201954ad7c200241d8076a41086a2903007c2012201b54ad7c2017201254ad7c420d86847c2206423388200241f8066a41086a290300200241e8036a41086a2903007c2005202d54ad7c200241e8086a41086a2903007c200a200554ad7c20024198086a41086a2903007c2007200a54ad7c200241c8076a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e203542ffffffffffffff03837c220a42ffffffffffffff0383220542002009420010e808200241f8026a20144200200a423388203042ffffffffffffff03837c220a42137e420010e808200241b8056a20134200201d42ffffffffffffff0383220742137e2212420010e80820024198046a200f4200201742ffffffffffffff0383220842137e221b420010e808200241386a200e4200200642ffffffffffffff0383220642137e2219420010e808200241c8016a200e42002005420010e808200241e8026a20094200200a420010e808200241a8056a201442002012420010e80820024188046a20134200201b420010e808200241286a200f42002019420010e808200241b8016a200f42002005420010e808200241d8026a200e4200200a420010e808200241c8056a200942002007420010e808200241f8036a20144200201b420010e808200241186a201342002019420010e808200241a8016a201342002005420010e808200241c8026a200f4200200a420010e808200241d8056a200e42002007420010e808200241a8046a200942002008420010e808200241086a201442002019420010e80820024198016a201442002005420010e808200241b8026a20134200200a420010e808200241e8056a200f42002007420010e808200241b8046a200e42002008420010e80820024188036a200942002006420010e80820024188016a200342002005420010e80820024198036a20064200202b420010e808200241c8046a200842002018420010e808200241f8056a200742002016420010e808200241a8026a200a42002011420010e80820024198026a200a42002003420010e808200241f8006a200542002004420010e808200241a8036a200642002018420010e808200241d8046a200842002016420010e80820024188066a200742002011420010e80820024198066a200742002003420010e80820024188026a200a42002004420010e808200241e8006a200542002010420010e808200241b8036a200642002016420010e808200241e8046a200842002011420010e808200241f8046a200842002003420010e808200241a8066a200742002004420010e808200241f8016a200a42002010420010e808200241d8006a200542002015420010e808200241c8036a200642002011420010e808200241d8036a200642002003420010e80820024188056a200842002004420010e808200241b8066a200742002010420010e808200241e8016a200a42002015420010e808200241c8006a20054200201a420010e80820004188016a202042ffffffffffffff03833703002000202342338820024198126a41086a290300200241d80f6a41086a2903007c200b202c54ad7c200241c8136a41086a2903007c200c200b54ad7c200241f8146a41086a2903007c200d200c54ad7c200241f8106a41086a2903007c2022200d54ad7c2023202254ad7c420d868442137e203642ffffffffffffff03837c220342ffffffffffffff038337037820004180016a2003423388203342ffffffffffffff03837c370300200041e0006a20022903b803221b20022903687c220320022903e8047c22042002290398067c22052002290388027c220a20022903a803221320022903787c220720022903d8047c22082002290388067c22062002290398027c220920022903980322142002290388017c220e20022903c8047c220f20022903f8057c221020022903a8027c221142338820024198036a41086a29030020024188016a41086a2903007c200e201454ad7c200241c8046a41086a2903007c200f200e54ad7c200241f8056a41086a2903007c2010200f54ad7c200241a8026a41086a2903007c2011201054ad7c420d86847c220e423388200241a8036a41086a290300200241f8006a41086a2903007c2007201354ad7c200241d8046a41086a2903007c2008200754ad7c20024188066a41086a2903007c2006200854ad7c20024198026a41086a2903007c2009200654ad7c200e200954ad7c420d86847c220742ffffffffffffff0383370300200041386a20022903f803220b20022903c8057c220820022903187c220620022903b8017c220920022903d8027c220f20022903a805220c20022903e8027c22102002290388047c221320022903287c221420022903c8017c221520022903f802220d20022903d8017c221620022903b8057c22182002290398047c221920022903387c221a423388200241f8026a41086a290300200241d8016a41086a2903007c2016200d54ad7c200241b8056a41086a2903007c2018201654ad7c20024198046a41086a2903007c2019201854ad7c200241386a41086a2903007c201a201954ad7c420d86847c2216423388200241a8056a41086a290300200241e8026a41086a2903007c2010200c54ad7c20024188046a41086a2903007c2013201054ad7c200241286a41086a2903007c2014201354ad7c200241c8016a41086a2903007c2015201454ad7c2016201554ad7c420d86847c221042ffffffffffffff0383370300200041e8006a20022903c803221920022903587c221320022903f8047c221420022903a8067c221520022903f8017c22182007423388200241b8036a41086a290300200241e8006a41086a2903007c2003201b54ad7c200241e8046a41086a2903007c2004200354ad7c20024198066a41086a2903007c2005200454ad7c20024188026a41086a2903007c200a200554ad7c2007200a54ad7c420d86847c220342ffffffffffffff0383370300200041c0006a2002290308221b20022903a8047c220420022903a8017c220520022903c8027c220a20022903d8057c22072010423388200241f8036a41086a290300200241c8056a41086a2903007c2008200b54ad7c200241186a41086a2903007c2006200854ad7c200241b8016a41086a2903007c2009200654ad7c200241d8026a41086a2903007c200f200954ad7c2010200f54ad7c420d86847c220842ffffffffffffff0383370300200041f0006a20022903d803220b20022903487c22062002290388057c220920022903b8067c220f20022903e8017c22102003423388200241c8036a41086a290300200241d8006a41086a2903007c2013201954ad7c200241f8046a41086a2903007c2014201354ad7c200241a8066a41086a2903007c2015201454ad7c200241f8016a41086a2903007c2018201554ad7c2003201854ad7c420d86847c220342ffffffffffffff0383370300200041c8006a20022903980122192002290388037c221320022903b8027c221420022903e8057c221520022903b8047c22182008423388200241086a41086a290300200241a8046a41086a2903007c2004201b54ad7c200241a8016a41086a2903007c2005200454ad7c200241c8026a41086a2903007c200a200554ad7c200241d8056a41086a2903007c2007200a54ad7c2008200754ad7c420d86847c220442ffffffffffffff038337030020002003423388200241d8036a41086a290300200241c8006a41086a2903007c2006200b54ad7c20024188056a41086a2903007c2009200654ad7c200241b8066a41086a2903007c200f200954ad7c200241e8016a41086a2903007c2010200f54ad7c2003201054ad7c420d868442137e201142ffffffffffffff03837c220342ffffffffffffff0383370350200041d8006a2003423388200e42ffffffffffffff03837c3703002000200442338820024198016a41086a29030020024188036a41086a2903007c2013201954ad7c200241b8026a41086a2903007c2014201354ad7c200241e8056a41086a2903007c2015201454ad7c200241b8046a41086a2903007c2018201554ad7c2004201854ad7c420d868442137e201a42ffffffffffffff03837c220342ffffffffffffff0383370328200041306a2003423388201642ffffffffffffff03837c370300200241f02b6a24000bd32004047f017e027f1c7e23004190066b220224000240024020012c001f417f4a0d00200041003a00000c010b20024180056a41186a2203200141186a29000037030020024180056a41106a2204200141106a29000037030020024180056a41086a2205200141086a29000037030020022001290000220637038005200220022d009f0541ff00713a009f05200241c0056a41186a22074200370300200241c0056a41106a22084200370300200241c0056a41086a220142003703002002200231008205421086200231008105420886200642ff0183848422063703c005200220023100830542188620068422063703c005200220023100840542208620068422063703c005200220023100850542288620068422063703c005200220023100860542308620068422063703c00520022002310087054238862006843703c005200120012903002005310000842206370300200120023100890542088620068422063703002001200231008a0542108620068422063703002001200231008b0542188620068422063703002001200231008c0542208620068422063703002001200231008d0542288620068422063703002001200231008e0542308620068422063703002001200231008f0542388620068437030020082008290300200431000084220637030020082002310091054208862006842206370300200820023100920542108620068422063703002008200231009305421886200684220637030020082002310094054220862006842206370300200820023100950542288620068422063703002008200231009605423086200684220637030020082002310097054238862006842209370300200720072903002003310000842206370300200720023100990542088620068422063703002007200231009a0542108620068422063703002007200231009b0542188620068422063703002007200231009c0542208620068422063703002007200231009d0542288620068422063703002007200231009e0542308620068422063703002007200231009f05423886200684220a37030020024180036a20022903c005220b42ffffffffffffff07832206420042edcd87b9d697d207420010e808200241c0026a2006420042dac89fe3dad6ee01420010e80820024180026a2001290300220c420c864280e0ffffffffff0783200b42348884220b420042edcd87b9d697d207420010e808200241b0026a20064200429bcad7d9feffff07420010e808200241c0016a200b420042dac89fe3dad6ee01420010e808200241d0036a200942188642808080f8ffffff0783200c42288884220c420042edcd87b9d697d207420010e808200241a0026a2006420042ffffffffffffff07420010e80820024180016a200b4200429bcad7d9feffff07420010e808200241c0036a200c420042dac89fe3dad6ee01420010e808200241a0046a200a422486428080808080feff07832009421c88842209420042edcd87b9d697d207420010e80820024190026a2006420042ffffffffffff03420010e808200241c0006a200b420042ffffffffffffff07420010e808200241b0036a200c4200429bcad7d9feffff07420010e80820024190046a2009420042dac89fe3dad6ee01420010e808200241f0046a200a4210882206420042edcd87b9d697d207420010e8082002200b420042ffffffffffff03420010e808200241a0036a200c420042ffffffffffffff07420010e80820024180046a20094200429bcad7d9feffff07420010e808200241e0046a2006420042dac89fe3dad6ee01420010e80820024190036a200c420042ffffffffffff03420010e808200241f0036a2009420042ffffffffffffff07420010e808200241d0046a20064200429bcad7d9feffff07420010e808200241e0036a2009420042ffffffffffff03420010e808200241c0046a2006420042ffffffffffffff07420010e808200241b0046a2006420042ffffffffffff03420010e808200241f0026a200229038003220b429bfcd192b1b4c7027e42ffffffffffffff07832206420042eda7d7e7a5e39801420010e808200241e0026a200642004281cbb5cef7c5fa06420010e808200241f0016a200229038002220d20022903c0027c220c200b20022903f00222097c220b423488200241f0026a41086a29030020024180036a41086a2903007c200b200954ad7c220e420c86847c220920022903e0027c220a429bfcd192b1b4c7027e42ffffffffffffff0783220b420042eda7d7e7a5e39801420010e808200241d0026a2006420042f9bdd300420010e808200241e0016a200b42004281cbb5cef7c5fa06420010e808200241b0016a20022903c001220f20022903b0027c221020022903d0037c221120022903d0027c221220022903e0017c221320022903f0012214200a7c2215423488200241f0016a41086a29030020024180026a41086a290300200241c0026a41086a2903007c200c200d54ad7c200e4234887c2009200c54ad7c200241e0026a41086a2903007c200a200954ad7c7c2015201454ad7c2216420c86847c2209429bfcd192b1b4c7027e42ffffffffffffff0783220c420042eda7d7e7a5e39801420010e808200241d0016a200b420042f9bdd300420010e808200241a0016a200c42004281cbb5cef7c5fa06420010e808200241f0006a200229038001221720022903a0027c220a20022903c0037c220d20022903a0047c220e20022903d0017c221420022903a0017c221520022903b001221820097c2219423488200241b0016a41086a290300200241c0016a41086a290300200241b0026a41086a2903007c2010200f54ad7c200241d0036a41086a2903007c2011201054ad7c200241d0026a41086a2903007c2012201154ad7c200241e0016a41086a2903007c2013201254ad7c20164234887c2009201354ad7c7c2019201854ad7c221a420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff07832209420042eda7d7e7a5e39801420010e80820024190016a200c420042f9bdd300420010e808200241e0006a200942004281cbb5cef7c5fa06420010e808200241306a2002290340221b2002290390027c221120022903b0037c22122002290390047c221320022903f0047c220f2006422c867c22162002290390017c221820022903607c22192002290370221c20107c221d423488200241f0006a41086a29030020024180016a41086a290300200241a0026a41086a2903007c200a201754ad7c200241c0036a41086a2903007c200d200a54ad7c200241a0046a41086a2903007c200e200d54ad7c200241d0016a41086a2903007c2014200e54ad7c200241a0016a41086a2903007c2015201454ad7c201a4234887c2010201554ad7c7c201d201c54ad7c221e420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff0783220a420042eda7d7e7a5e39801420010e808200241d0006a2009420042f9bdd300420010e808200241206a200a42004281cbb5cef7c5fa06420010e808200241106a200a420042f9bdd300420010e808200120022903f003221f2002290390037c220d20022903d0047c220e200c422c867c221420022903107c221520022903a003222020022903007c22172002290380047c221a20022903e0047c221c200b422c867c221d20022903507c222120022903207c22222002290330222320107c2224423488200241306a41086a290300200241c0006a41086a29030020024190026a41086a2903007c2011201b54ad7c200241b0036a41086a2903007c2012201154ad7c20024190046a41086a2903007c2013201254ad7c200241f0046a41086a2903007c200f201354ad7c20064214887c2016200f54ad7c20024190016a41086a2903007c2018201654ad7c200241e0006a41086a2903007c2019201854ad7c201e4234887c2010201954ad7c7c2024202354ad7c2210420c86847c2206423488200241a0036a41086a290300200241086a2903007c2017202054ad7c20024180046a41086a2903007c201a201754ad7c200241e0046a41086a2903007c201c201a54ad7c200b4214887c201d201c54ad7c200241d0006a41086a2903007c2021201d54ad7c200241206a41086a2903007c2022202154ad7c20104234887c2006202254ad7c2212420c86847c220b42ffffffffffffff0783200642ffffffffffffff07834293d8a898da9ce77e7c2206423f877c42ffb4cab188ba85797c221342ffffffffffffff0783200642ffffffffffffff0783200a422c86220f20022903b0047c220620022903c004221620022903e0037c22102009422c867c2211200b423488200241f0036a41086a29030020024190036a41086a2903007c200d201f54ad7c200241d0046a41086a2903007c200e200d54ad7c200c4214887c2014200e54ad7c200241106a41086a2903007c2015201454ad7c20124234887c200b201554ad7c220c420c86847c220b423488200241c0046a41086a290300200241e0036a41086a2903007c2010201654ad7c20094214887c2011201054ad7c200c4234887c200b201154ad7c2209420c86847c220c423488200a421488200241b0046a41086a2903007c2006200f54ad7c20094234887c200c200654ad7c420c8684200c42ffffffffffffff0783200b42ffffffffffffff07832013423f877c4287c2ac7f7c220c423f877c2209423f877c428080808080807c7c2210423f87220a42eda7d7e7a5e39801837c22064234887c200a4281cbb5cef7c5fa06837c220b42ffffffffffffff078322113703002008200c42ffffffffffffff0783200b4234887c200a42f9bdd300837c220c42ffffffffffffff078322123703002007200942ffffffffffffff0783200c4234887c220942ffffffffffffff07832213370300200241e0056a201042ffffffffffffff078320094234887c200a4280808080808004837c220a42ffffffffffffff07833703002002200642ffffffffffffff078322103703c0052002200a4228883c00bf052002200a4220883c00be052002200a4218883c00bd052002200a4210883c00bc052002200a4208883c00bb052002200a3c00ba0520022009422c883c00b905200220094224883c00b80520022009421c883c00b705200220094214883c00b60520022009420c883c00b505200220094204883c00b405200220134204862012423088843c00b3052002200c4228883c00b2052002200c4220883c00b1052002200c4218883c00b0052002200c4210883c00af052002200c4208883c00ae052002200c3c00ad052002200b422c883c00ac052002200b4224883c00ab052002200b421c883c00aa052002200b4214883c00a9052002200b420c883c00a8052002200b4204883c00a705200220114204862010423088843c00a605200220064228883c00a505200220064220883c00a405200220064218883c00a305200220064210883c00a205200220064208883c00a105200220063c00a0052006a72108200241a0056a4101722103410021014101210702400340200820024180056a20016a2d0000732208410020086b72417f7341800171410776106d20077121072001411f460d01200320016a2d00002108200141016a21010c000b0b4100210102402007106d41ff01714101470d002000200229038005370001200041196a20024198056a290300370000200041116a20024190056a290300370000200041096a20024188056a290300370000410121010b200020013a00000b20024190066a24000bc60101017f230041106b2202240002400240024002400240024002400240200041ff01710e0700010203040506070b200241003a000f20012002410f6a410110740c060b200241013a000f20012002410f6a410110740c050b200241023a000f20012002410f6a410110740c040b200241033a000f20012002410f6a410110740c030b200241043a000f20012002410f6a410110740c020b200241053a000f20012002410f6a410110740c010b200241063a000f20012002410f6a410110740b200241106a24000b880201047f230041206b2203240002400240200041046a2802002204200041086a28020022056b2002490d00200028020021040c010b0240200520026a22062005490d00200441017422052006200520064b1b22054108200541084b1b21050240024020040d00200341003602100c010b200341106a41086a410136020020032004360214200320002802003602100b200320054101200341106a107d200341086a2802002105024020032802004101460d00200020032802042204360200200041046a2005360200200041086a28020021050c020b2005450d001036000b1038000b200420056a2001200210e9081a200041086a2200200028020020026a360200200341206a24000bfa0201057f230041106b2203240002402001450d002000200141386c6a210403402000220528020421012005280208220620021076200220012006107420052802102101200528021422062002107620022001200610740240024020052802184101470d00200528021c2101200528022422062002107620022001200610740c010b2003200528021c200528022028020c11020020032802002101200328020822062002107620022001200610742003280204450d002001102e0b200541386a2100200528022c21010240024020052802284101470d00200528023422052002107620054103742205450d01200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000c020b0b200528023022052002107620054103742205450d00200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000b0b20002004470d000b0b200341106a24000bab0101017f230041106b220224000240024002400240200041c000490d00200041808001490d012000418080808004490d02200241033a00032001200241036a41011074200220003602042001200241046a410410740c030b200220004102743a00032001200241036a410110740c020b200220004102744101723b010a20012002410a6a410210740c010b2002200041027441027236020c20012002410c6a410410740b200241106a24000bec0101047f02402001450d0020002001411c6c6a21030340200022042802042101200428020822052002107620022001200510742004411c6a21002004280210210102400240200428020c4101470d00200428021822042002107620044103742204450d01200120046a2106034020012802002104200141046a2802002205200210762002200420051074200141086a22012006470d000c020b0b200428021422042002107620044103742204450d00200120046a2106034020012802002104200141046a2802002205200210762002200420051074200141086a22012006470d000b0b20002003470d000b0b0be40301057f02402001450d0020002001412c6c6a21030340200022042802042101200428020822052002107620022001200510742004280210210102400240200428020c4101470d0020042802182205200210762005450d01200541186c2105200141146a21010340200141706a2802002106200141746a28020022072002107620022006200710742001417c6a280200210620012802002207200210762002200620071074200141186a2101200541686a22050d000c020b0b200441146a2802002205200210762005450d00200541186c2105200141146a21010340200141706a2802002106200141746a28020022072002107620022006200710742001417c6a280200210620012802002207200210762002200620071074200141186a2101200541686a22050d000b0b2004412c6a21002004280220210102400240200428021c4101470d00200428022822052002107620054103742205450d01200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000c020b0b200428022422052002107620054103742205450d00200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000b0b20002003470d000b0b0bb00701057f230041c0006b2203240002402001450d002000200141f0006c6a21040340200028020421012000280208220520021076200220012005107402400240200028020c22014102470d00200341003a00202002200341206a410110740c010b200341013a00202002200341206a41011074024020014101470d002000280214210120002802182205200210762002200120051074200028022021010240200028021c4101470d002000280228220520021076200120052002107a0c020b200041246a280200220520021076200120052002107a0c010b200341206a20002802101103002003280224210120032802282205200210762002200120051074200328023021060240200328022c4101460d002003280234220120021076200620012002107a0c010b2003280238220120021076200620012002107a024020032802382201450d00200141d8006c21074100210503400240200620056a220141346a280200450d002001413c6a280200450d00200141386a280200102e0b0240200141c4006a280200450d00200141cc006a28020041ffffffff0171450d00200141c8006a280200102e0b2007200541d8006a2205470d000b0b20032802342201450d00200141d8006c450d002006102e0b02400240200028022c22014102470d00200341003a00202002200341206a410110740c010b200341013a00202002200341206a41011074024020014101470d0020002802302101200028023822052002107620012005200210780c010b200341186a200028023011030020032802182101200328021c22052002107620012005200210780b02400240200028023c22014102470d00200341003a00202002200341206a410110740c010b200341013a00202002200341206a41011074024020014101470d00200028024021012000280248220520021076200120052002107b0c010b200341106a2000280240110300200328021021012003280214220520021076200120052002107b0b02400240200028024c4101470d0020002802502101200028025822052002107620012005200210750c010b200341086a200028025011030020032802082101200328020c22052002107620012005200210750b200041f0006a210102400240200028025c4101470d0020002802602105200028026822062002107620052006200210770c010b2003200028026011030020032802002105200328020422062002107620052006200210770b200320002d006c3a00202002200341206a410110742001210020012004470d000b0b200341c0006a24000bc10501057f230041106b2203240002402001450d002000200141d8006c6a21040340200022052802042101200528020822062002107620022001200610740240024020052d00544101460d00200341003a000f20022003410f6a410110740c010b200341013a000f20022003410f6a410110740b024002400240024020052d000c0e03000102030b200341003a000f20022003410f6a4101107420052802142101200528021822062002107620022001200610740c020b200341013a000f20022003410f6a410110742005410d6a2d0000200210732005280214210120052802182206200210762002200120061074200528022021012005280224220620021076200220012006107420032005410e6a2d00003a000f20022003410f6a410110740c010b200341023a000f20022003410f6a410110742005410d6a2d00002002107320052802142101200528021822062002107620022001200610742005280220210120052802242206200210762002200120061074200528022c2101200528023022062002107620022001200610742005410e6a2d0000200210730b0240024020052802344101470d0020052802382101200528024022062002107620022001200610740c010b20032005280238200528023c28020c11020020032802002101200328020822062002107620022001200610742003280204450d002001102e0b200541d8006a2100200528024821010240024020052802444101470d00200528025022052002107620054103742205450d01200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000c020b0b200528024c22052002107620054103742205450d00200120056a2107034020012802002105200141046a2802002206200210762002200520061074200141086a22012007470d000b0b20002004470d000b0b200341106a24000b950301057f02402001450d0020002001412c6c6a21030340200022042802042101200428020822052002107620022001200510742004280210210102400240200428020c4101470d00200428021822052002107620054103742205450d01200120056a2106034020012802002105200141046a2802002207200210762002200520071074200141086a22012006470d000c020b0b200428021422052002107620054103742205450d00200120056a2106034020012802002105200141046a2802002207200210762002200520071074200141086a22012006470d000b0b2004412c6a21002004280220210102400240200428021c4101470d00200428022822052002107620054103742205450d01200120056a2106034020012802002105200141046a2802002207200210762002200520071074200141086a22012006470d000c020b0b200428022422052002107620054103742205450d00200120056a2106034020012802002105200141046a2802002207200210762002200520071074200141086a22012006470d000b0b20002003470d000b0b0be207010c7f230041206b220224002001410c6a2802002103200128020821042001280204210502400240024002400240024002400240024002400240200128020022060d002004450d01200320046b21070c020b200520066b2101024020040d00200121070c020b2001200320046b6a220720014f0d012000420137020041002107200041086a22084100360200200520066b2109410121010c040b2000420137020041002107200041086a22084100360200410121010c010b2007417f4c0d070240024020070d00410121010c010b2007102c2201450d050b20002001360200200041086a22084100360200200041046a200736020020060d010b200320046b410020041b21090c020b200520066b21092004450d010b02402009200320046b6a220a2009490d00200a21090c010b0240024020052006460d00200641016a210b0c010b2004450d0420032004460d044100210b20042106200441016a21040b200041046a210c4100210d034020042109200b210a20062d0000210602400240024002400240200d2007470d0002400240200a0d00200320096b410020091b21040c010b2005200a6b21042009450d00417f2004200320096b6a220b200b2004491b21040b200720076b417f200441016a220b200b2004491b22044f0d00200720046a22042007490d0a2007410174220b2004200b20044b1b22044108200441084b1b21040240024020070d00200241003602100c010b2002410136021820022007360214200220013602100b200220044101200241106a107d2002280208210720022802004101460d01200020022802042201360200200c20073602000b2001200d6a20063a00002008200d41016a220d360200200a0d01200a210b0c020b2007450d080c050b200a2005470d014100210b0b2009450d0520092003460d05200941016a2104200921060c010b200a41016a210b20092104200a21060c000b0b200720094f0d012007410174220a2009200a20094b1b22094108200941084b1b21090240024020070d00200241003602100c010b200241106a41086a410136020020022007360214200220013602100b200220094101200241106a107d200241086a2802002109024020022802004101460d00200020022802042201360200200041046a20093602000c020b2009450d030b1036000b4100210902402006450d0020052006460d00200520066b21090340200120062d00003a0000200141016a21012005200641016a2206470d000b0b02402004450d0020032004460d00200920046b21060340200120042d00003a0000200141016a21012003200441016a2204470d000b200320066a21090b200820093602000b200241206a24000f0b1038000bbd0101017f0240024002400240024002402002450d0020014100480d01024002400240200328020022040d002001450d010c050b200328020422030d0120010d040b200221030c050b20042003200110302203450d030c040b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2001102c22030d010b2000200136020441012103200221010c010b20002003360204410021030b20002003360200200041086a20013602000b1c002001280218419eeacc00410f2001411c6a28020028020c1100000b9f0904017f017e017f087e230041b0046b22022400200141bc016a350200210320012802b8012104200241c0016a200141b80110e9081a024002400240200241e8016a2903004201510d0020022903c80121050c010b200241f0016a290300220620022903c8012205560d010b200521060b200220063703c801024002400240200241a0026a2903004201510d0020022903c80121050c010b200241a8026a290300220620022903c8012205560d010b200521060b200220063703c801024002400240200241d8026a2903004201510d0020022903c80121050c010b200241e0026a290300220620022903c8012205560d010b200521060b200220063703c80102402004450d002006428094ebdc038020037e2006428094ebdc038220037e2206428094ebdc038042ffffffff0f2006428080808080c0b2cd3b541b2006428094ebdc03824280cab5ee0156ad7c42ffffffff0f837c21060240200241d8016a2903004201510d00200241e0016a42004200200241f0016a290300220320067d220520052003561b220320022903d0017d220520052003561b3703002002200241e8016a2903003703d8010b024020024190026a2903004201510d0020024198026a42004200200241a8026a290300220320067d220520052003561b220320024188026a2903007d220520052003561b3703002002200241a0026a290300370390020b200241c8026a2903004201510d00200241d0026a42004200200241e0026a290300220320067d220620062003561b2206200241c0026a2903007d220320032006561b3703002002200241d8026a2903003703c8020b200241f8026a200241c0016a41b80110e9081a02400240200229038003220620022903f8022203200241f8036a29030022077c580d002006420020024198046a290300220520024190046a2903005022011b540d00427e200241a8046a290300427f7c200241a0046a290300501b2007540d0020024188046a29030022085020024180046a2903002209420052710d00420020082009501b4200427f200520011b220520077d220820082005561b560d0020062003200241c0036a29030022097c580d0020064200200241e0036a2903002208200241f8026a41e0006a2903005022011b540d00427e200241f0036a290300427f7c200241e8036a290300501b2009540d00200241d0036a290300220a50200241c8036a290300220b420052710d004200200a200b501b4200427f200820011b220820097d220a200a2008561b560d0020062003200229038803220a7c580d0020064200200241a8036a290300220b200241a0036a2903005022011b540d00427e200241b8036a290300427f7c200241b0036a290300501b200a540d0020024198036a29030022065020024190036a290300220c420052710d0042002006200c501b4200427f200b20011b2206200a7d220b200b2006561b560d002006502006200a5620062003567172450d00200850200820095620082003567172450d002005502005200756200520035671720d010b200241013a000241d3a0c00041e000200241026a41ec9fc00041b4a1c000103e000b2000200241086a200241f8026a41b80110e90841b80110e9081a200241b0046a24000ba90803197e017f147e20002903c0012101200029039801210220002903702103200029034821042000290320210520002903b8012106200029039001210720002903682108200029034021092000290318210a20002903b001210b200029038801210c2000290360210d2000290338210e2000290310210f20002903a8012110200029038001211120002903582112200029033021132000290308211420002903a00121152000290378211620002903502117200029032821182000290300211941c07e211a0340200b200c200d200e200f85858585221b4201892015201620172018201985858585221c85221d201385211e20012006200720082009200a85858585221f201c42018985221c85212020012002200320042005858585852221420189201b85221b2009854237892222201f4201892010201120122013201485858585220985221f200f85423e892223427f8583201d201085420289222485210120222021200942018985220f20168542298922212003201c854227892225427f8583852110201b2006854238892226201f200c85420f892227427f8583201d201285420a89222885210c2028200f2018854224892229427f85832005201c85421b89222a852116200f2015854212892215201f200e85420689222b201d201485420189222c427f85838521032002201c85420889222d201b200885421989222e427f8583202b8521122004201c85421489221c201b200a85421c89220a427f8583201f200b85423d89220e852104200a200e427f8583201d201185422d89221d852109200f2017854203892214200e201d427f858385210e201d2014427f8583201c852113200a2014201c427f8583852118201b200785421589221d200f201985221c2020420e89221b427f858385210a201b201d427f8583201f200d85422b89221f85210f201d201f427f8583201e422c89221d852114201a4198a3c0006a290300201c201f201d427f85838585211920262029202a427f858385221f2102201d201c427f8583201b85221d2105202120232024427f858385221c2106202a2026427f8583202785221b2107202c2015427f8583202d852226210820242021427f85832025852224210b202e2015202d427f8583852221210d202920272028427f8583852227211120252022427f858320238522222115202e202b427f8583202c8522232117201a41086a221a0d000b200020223703a00120002016370378200020233703502000201837032820002019370300200020103703a8012000202737038001200020123703582000201337033020002014370308200020243703b0012000200c37038801200020213703602000200e3703382000200f3703102000201c3703b8012000201b3703900120002026370368200020093703402000200a370318200020013703c0012000201f3703980120002003370370200020043703482000201d3703200be61801037f230041f0016b22032400200341106a41126a410041b60110eb081a2003411e6a41002800b6a340360100200341002f00aca3403b0114200341002800a8a340360210200341002900aea340370116200341106a1080012000200341106a41c80110e908220041003a00ca01200041003b01c801200041124100108201024020002d00c801220441c7014b0d00200020046a220420042d000041cd00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c8014f0d010b200020046a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041f200733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041ec00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041e900733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041ee00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004120733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041f600733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004131733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d0000412e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004130733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b2003200236020c200041124100108201024020002d00c801220441c8014f0d00200020046a220420042d000041e400733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c8014f0d010b2000200441ff01716a220420042d000041ef00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041ed00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d0000412d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041f300733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b200041ca016a21052000200441ff01716a220420042d000041f000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010b200341123a00df01024020052d00004112460d00200341e0016a410c6a4109360200200341246a4102360200200341106a410c6a4102360200200341186a41aca4c000360200200341023602142003419ca4c000360210200341093602e401200320053602e001200341206a200341e0016a3602002003200341df016a3602e8012005200341df016a200341106a41eca4c000108301000b0240200441ff0171220541c7014b0d00200020056a220420042d000020032d000c733a0000200020002d00c80141016a22043a00c80102400240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200441ff017141c8014f0d010b2000200441ff01716a220420042d000020032d000d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000f733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b200041024100108201024002402002450d0020002d00c80121040340200441ff0171220441c7014b0d02200020046a220420042d000020012d0000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002104200041003b01c8010b200141016a21012002417f6a22020d000b0b200341f0016a24000f0b200441c80141bca3c000103c000b200441ff017141c80141bca3c000103c000b200441ff017141c80141bca3c000103c000b200441c80141bca3c000103c000bd30501027f230041306b22032400200320013a000702400240024002402002450d0020002d00ca01200141ff0171460d01200341086a410c6a41093602002003412c6a4102360200200341186a410c6a4102360200200341206a41aca4c0003602002003410236021c2003419ca4c0003602182003410936020c2003200041ca016a2200360208200341286a200341086a3602002003200341076a3602102000200341076a200341186a41eca4c000108301000b2003200141087122023a00080240024020020d00200020013a00ca0120002d00c9012104200020002d00c801220241016a3a00c901200320013a0019200320043a00180240200241c7014b0d00200020026a220120012d000020032d0018733a0000200020002d00c80141016a22023a00c8010240200241ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002102200041003b01c8010c030b200141c801490d020b200241ff017141c80141bca3c000103c000b2003412c6a4100360200200341286a41d4e2cc003602002003420137021c200341fca4c000360218200341086a41aad3c800200341186a4184a5c000108301000b2000200241ff01716a220120012d000020032d0019733a0000200020002d00c80141016a22013a00c8010240200141ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002101200041003b01c8010b20032d0007412471450d00200141ff01712201450d00200141c7014b0d01200020016a220120012d000020002d00c901733a000020002d00c80141016a41ff0171220141c8014f0d02200020016a220120012d00004104733a0000200020002d00a701418001733a00a7012000108001200041003b01c8010b200341306a24000f0b200141c8014194a5c000103c000b200141c80141a4a5c000103c000b6601017f230041206b220424002004200136020420042000360200200441086a41106a200241106a290200370300200441086a41086a200241086a2902003703002004200229020037030820044198a3c000200441046a4198a3c000200441086a20031058000b960801027f230041306b2205240020052004360200200041124100108201024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c030b200141c801490d020c030b200641c80141bca3c000103c000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41aca4c0003602002005410236020c2005419ca4c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a41eca4c000108301000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b200041024100108201024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020032d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541306a24000f0b200641c80141bca3c000103c000b200641ff017141c80141bca3c000103c000be00e01027f230041c0006b220424002004200337030820044108360210200041124100108201024002400240024002402002450d0020002d00c80121050340200541ff0171220541c7014b0d02200020056a220520052d000020012d0000733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010b200141016a21012002417f6a22020d000b0b200441123a001720002d00ca014112470d0120002d00c801220541c7014b0d03200020056a220520052d000020042d0010733a0000200020002d00c80141016a22053a00c8010240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c030b200141c801490d020c030b200541c80141bca3c000103c000b200441306a410c6a41093602002004412c6a4102360200200441186a410c6a4102360200200441206a41aca4c0003602002004410236021c2004419ca4c000360218200441093602342004200041ca016a2200360230200441286a200441306a3602002004200441176a3602382000200441176a200441186a41eca4c000108301000b2000200541ff01716a220520052d000020042d0011733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0012733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0013733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b200041024100108201024020002d00c801220541c8014f0d00200020056a220520052d000020042d0008733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c8014f0d010b2000200541ff01716a220520052d000020042d0009733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000a733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000b733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000c733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000d733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000e733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000f733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b200441c0006a24000f0b200541ff017141c80141bca3c000103c000b200541ff017141c80141bca3c000103c000bb80801027f230041306b2205240020052004360200200041124100108201024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c030b200141c801490d020c030b200641c80141bca3c000103c000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41aca4c0003602002005410236020c2005419ca4c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a41eca4c000108301000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108001200041003b01c8010b20004107410010820102402004450d0020002d00c8012106024002400340200641ff0171220641c7014b0d012003200020066a2d00003a000020002d00c801220641c7014b0d02200020066a41003a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a701200010800141002106200041003b01c8010b200341016a21032004417f6a22040d000c030b0b200641c80141a4a6c000103c000b200641c80141b4a6c000103c000b200541306a24000f0b200641ff017141c80141bca3c000103c000bc60201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141ac88c0004102200220006a4180016a410020006b104b21000c010b20002d0000210402402003412071450d00410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d03200141ac88c0004102200220006a4180016a410020006b104b21000c010b2004ad42ff01832001104821000b20024180016a240020000f0b2004418001419c88c0001056000b2004418001419c88c0001056000b820401027f230041106b220224000240024002400240024002400240024002402000280200417b6a2203410220034108491b0e080102030405060700010b200128021841e4a6c000410c2001411c6a28020028020c11000021010c070b200128021841f0a6c00041102001411c6a28020028020c11000021010c060b20012802184180a7c00041132001411c6a28020028020c11000021010c050b200220012802184193a7c000410c2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41a0a7c00010661a20022d0008210120022802042203450d04200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d0041012101200028021841f79ec00041012000411c6a28020028020c1100000d010b2002280200220128021841f89ec00041012001411c6a28020028020c11000021010b200220013a00080c040b200128021841b0a7c000410b2001411c6a28020028020c11000021010c030b200128021841bba7c000410c2001411c6a28020028020c11000021010c020b200128021841c7a7c000410d2001411c6a28020028020c11000021010c010b200128021841d4a7c000410c2001411c6a28020028020c11000021010b200241106a2400200141ff01714100470b1c002001280218419eeacc00410f2001411c6a28020028020c1100000bd10201057f230041106b22022400024002400240024002400240024002400240024020012d00000e06010203040500010b20024181ca003b01082002200141216a3602042002200141016a3602000c050b410110322201450d062000428180808010370204200020013602000c050b2001410c6a22032802002204412020044120491b220541016a2204102c2206450d0520062004200410eb082106200328020022032005490d06200641016a200141046a280200200510e9081a2000200436020820002004360204200020063602000c040b20024181c4003b01082002200141216a3602042002200141016a3602000c020b20024181c6003b01082002200141216a3602042002200141016a3602000c010b20024181c8003b01082002200141216a3602042002200141016a3602000b20002002108b010b200241106a24000f0b1036000b2005200341b8aac000104d000bef06010c7f230041206b22022400200141096a2d0000210320012802042104200128020021050240024002400240024002400240024002400240024020012d000822064102470d0002402005450d00200420056b21070c020b2000420137020041002107200041086a22084100360200410121010c030b20064101462101024020050d00200121070c020b2001200420056b6a220720014f0d002000420137020041002107200041086a2208410036020041012101200641014621090c040b2007417f4c0d080b0240024020070d00410121010c010b2007102c2201450d050b20002001360200200041086a22084100360200200041046a200736020020064102470d010b200420056b410020051b21090c020b200641014621092005450d010b02402009200420056b6a220a2009490d00200a21090c010b200041046a210b410021090340024002400240200641ff01714102470d002003210a0c010b4100210a2006410171450d00410021060c010b2005450d0520052004460d0520052d0000210341022106200541016a21050b0240024020092007470d00200720076b417f200420056b410020051b220c41016a220d200d200c491b220c4f0d002007200c6a220c2007490d072007410174220d200c200d200c4b1b220c4108200c41084b1b210c0240024020070d00200241003602100c010b2002410136021820022007360214200220013602100b2002200c4101200241106a107d2002280208210720022802004101460d01200020022802042201360200200b20073602000b200120096a20033a00002008200941016a2209360200200a21030c010b0b2007450d040c010b200720094f0d012007410174220a2009200a20094b1b22094108200941084b1b21090240024020070d00200241003602100c010b200241106a41086a410136020020022007360214200220013602100b200220094101200241106a107d200241086a2802002107024020022802004101460d00200020022802042201360200200041046a20073602000c020b2007450d030b1036000b410021070240024020060e03010001000b200120033a000041012107200141016a21010b02402005450d0020042005460d00200720056b21070340200120052d00003a0000200141016a21012004200541016a2205470d000b200420076a21070b200820073602000b200241206a24000f0b1038000bc10201067f230041206b2202240041002103024002400240200141016a2204200028020422054d0d000240200041146a22062802002201200041106a280200470d00200141016a22032001490d03200141017422072003200720034b1b22034104200341044b1b220341ffffffff03712003464102742107200341027421030240024020010d00200241003602100c010b200241186a4104360200200220014102743602142002200028020c3602100b200220032007200241106a107d200241086a280200210320022802004101460d022000200228020436020c200041106a20034102763602000b200028020c220341046a2003200141027410ea081a2003200420056b36020020002004360204410121032006200141016a3602002000200028020041016a3602000b200241206a240020030f0b2003450d001036000b1038000bc60101097f200141146a28020022034102742104200128020c210520012802002106417f210720012802042208210902400340024020040d00410021040c020b200741016a21072004417c6a21042005280200210a200920024b210b200541046a21052009200a6b2109200b0d000b200620036b2205210402402003200b20076a2209490d00200141146a20093602002006200b6b20076b21040b20002005360204200041086a2004360200410121040b20002004360200200120082002200820024b1b3602040b810201057f0240024020012802042202450d002001280200210303402002418c016a210420022f018a012105410021010240034020052001460d01418fafc0002004410810ec082206450d04200141016a2101200441086a21042006417f4a0d000b2001417f6a21050b2003450d012003417f6a2103200220054102746a41e4016a28020021020c000b0b200041003602042000410c6a4128360200200041086a4197afc000360200200041013602000f0b024020022001410c6c6a2201410c6a2802004108490d00200041086a200141046a280200290000370300200041003602000f0b20004201370300200041086a41bfafc000ad42808080809005843702000b1c00200128021841a2b3c000410b2001411c6a28020028020c1100000b1c00200128021841adb3c00041052001411c6a28020028020c1100000b800201047f230041206b2202240002400240200041046a280200200041086a2802002203460d00200028020021040c010b0240200341016a22042003490d00200341017422052004200520044b1b22044108200441084b1b21040240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220044101200241106a107d200241086a2802002103024020022802004101460d00200020022802042204360200200041046a2003360200200041086a28020021030c020b2003450d001036000b1038000b200420036a20013a0000200041086a2200200028020041016a360200200241206a24000bc004010b7f23004180016b2203240002400240024002400240200220012802044105762204200420024b1b22054105742204417f4c0d000240024020050d00410121060c010b2004102c2206450d030b024020020d00410021020c040b200341c8006a41017221044100210741002108410021090340200341c8006a2001109301200341286a41086a220a200441086a290000370300200341286a41106a220b200441106a290000370300200341286a41186a220c200441186a2900003703002003200429000037032820032d00484101460d02200341086a41186a220d200c290300370300200341086a41106a220c200b290300370300200341086a41086a220b200a290300370300200320032903283703080240024020092005470d002007200941016a220a2007200a4b1b220a4104200a41044b1b220a41ffffff3f71200a462105200a410574210a0240024020090d00200341003602480c010b200341013602502003200836024c200320063602480b200341f0006a200a2005200341c8006a107d2003280278210a20032802704101460d0120032802742106200a41057621050b200620086a220a2003290308370000200a41186a200d290300370000200a41106a200c290300370000200a41086a200b290300370000200741026a2107200841206a21082002200941016a2209460d050c010b0b200a0d020b1038000b20004100360200200541ffffff3f71450d022006102e0c020b1036000b2000200536020420002006360200200041086a20023602000b20034180016a24000bfd0202047f047e230041b0016b2202240041002103200241003a00682001280204417f6a210402400240024003402004417f460d01200241c8006a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00682004417f6a21042005210320054120470d000b200241f0006a41086a2204200241c8006a41086a290300370300200241f0006a41106a2201200241c8006a41106a290300370300200241f0006a41186a2203200241c8006a41186a29030037030020022002290348370370200541ff0171411f4d0d01200241286a41186a20032903002206370300200241086a41086a20042903002207370300200241086a41106a20012903002208370300200241086a41186a2006370300200220022903702209370308200041196a2006370000200041116a2008370000200041096a200737000020002009370001410021040c020b200341ff0171450d00200241003a00680b410121040b200020043a0000200241b0016a24000bcc0403027f017e077f230041a0076b2203240002400240024002400240024002402002200128020028020441b0026e2204200420024b1bad42b0027e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102c2206450d040b2001200128020441016a2207360204200441b0026e210802400240200720012802084b0d0020020d01410021020c070b200041003602000c030b200341e0046a41047221094100210a41002104410021070340200341e0046a200110950120032802e004210b200341b4026a200941ac0210e9081a200b411c460d02200341086a200341b4026a41ac0210e9081a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42b0027e2205422088a74541037421082005a7210c0240024020070d00200341003602e0040c010b200341083602e804200320043602e404200320063602e0040b20034190076a200c2008200341e0046a107d20032802980721082003280290074101460d012003280294072106200841b0026e21080b200620046a220c200b360200200c41046a200341086a41ac0210e9081a200a41026a210a200441b0026a21042002200741016a2207460d060c010b0b20080d030b1038000b200041003602002007450d002006210703402007109601200741b0026a2107200441d07d6a22040d000b0b2008450d03200841b0026c450d032006102e0c030b1036000b200128020421070b2000200836020420002006360200200041086a200236020020012007417f6a3602040b200341a0076a24000b93e9030d057f017e037f027e027f077e0f7f027e017f027e017f017e0e7f230041c01a6b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e250102030405060708090a290b0c0d0e0f101112132929292914151629172e2d2929292c2b2a290b2000411c3602000c560b200128020022032802042204450d54200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024020060e0a00010203040506070809600b2001280200220128020422034104490d5f20012802002205280000210420012003417c6a3602042001200541046a3602002004418194ebdc034f0d5f410121010c0a0b2002200110ad0120022802000d5e20012802002205280204220620022802042203490d5e2003417f4c0d560240024020030d00410121040c010b200310322204450d5c2001280200220528020421060b20062003490d5d20042005280200200310e9082101200528020422062003490d302005200620036b3602042005200528020020036a3602002001450d5e2003ad220742208620078421074102410b20011b21010c080b2001280200220128020422034108490d5d2001280200220429000021072001200341786a3602042001200441086a360200410321010c080b200241086a200110ad0120022802080d5c200128020022052802042206200228020c2203490d5c2003417f4c0d540240024020030d00410121040c010b200310322204450d5a2001280200220528020421060b20062003490d5b20042005280200200310e9082101200528020422062003490d262005200620036b3602042005200528020020036a3602002001450d5c2003ad220742208620078421074104410b20011b21010c060b200241106a200110ad0120022802100d5b20012802002205280204220620022802142203490d5b2003417f4c0d530240024020030d00410121040c010b200310322204450d592001280200220528020421060b20062003490d5a20042005280200200310e9082101200528020422062003490d242005200620036b3602042005200528020020036a3602002001450d5b2003ad220742208620078421074105410b20011b21010c050b200241c0156a200110fd0520022802c01522044102460d5a20022902c4152107410621010c040b200241286a200110ad0120022802280d59200228022c2206200128020028020441186e2203200320064b1bad42187e2207422088a70d512007a72203417f4c0d510240024020030d00410421040c010b2003102c2204450d570b2001200128020441016a2205360204200341186ead2107200520012802084b0d57024002402006450d000340200241206a200110ad0120022802200d5a20012802002205280204220820022802242203490d5a2003417f4c0d540240024020030d00410121090c010b200310322209450d5a2001280200220528020421080b0240024020082003490d0020092005280200200310e90821082005280204220a2003490d2f2005200a20036b3602042005200528020020036a3602002008450d5c200241186a200110ad012003ad220b422086200b84220ca7210d024020022802180d0020012802002205280204220a200228021c2203490d002003417f4c0d570240024020030d004101210e0c010b20031032220e450d5d20012802002205280204210a0b02400240200a2003490d00200e2005280200200310e908210a2005280204220e20034f0d012003200e41b8b2c0001056000b200e102e0c010b2005200e20036b3602042005200528020020036a360200200a0d020b200d450d5c0b2009102e0c5b0b02402007422088220ba722052007a7470d00200541016a22092005490d552005410174220e20092009200e491b22094104200941044b1bad42187e220b422088a7454102742109200ba7210e0240024020050d00200241003602c0150c010b200241043602c815200220043602c0152002200541186c3602c4150b200241e0076a200e2009200241c0156a107d20022802e807210920022802e0074101460d0320022802e40721042007422088220ba72105200941186ead21070b2004200541186c6a2205200d36020420052008360200200541146a2003ad220f422086200f84220f422088a73602002005410c6a200f422086200aad84370200200541086a200c422088a7360200200b422086200742ffffffff0f83844280808080107c21072006417f6a22060d000b200128020421050b20012005417f6a3602042004450d5a4107410b20041b21010c040b2009450d510c560b200241c0156a200110e80120022802c0152204450d5820022902c4152107410821010c020b200241306a200110ad0120022802300d5720012802002205280204220620022802342203490d572003417f4c0d4f0240024020030d00410121040c010b200310322204450d552001280200220528020421060b20062003490d5620042005280200200310e9082106200528020422082003490d1f2005200820036b3602042005200528020020036a3602002006450d572003ad2207422086200784210702402001280200220128020422054104490d0020012802002206280000210320012005417c6a3602042001200641046a360200410921010c030b2007a70d560c570b200241386a200110ad0120022802380d56200128020022052802042206200228023c2203490d562003417f4c0d4e0240024020030d00410121040c010b200310322204450d542001280200220528020421060b20062003490d5520042005280200200310e9082101200528020422062003490d1d2005200620036b3602042005200528020020036a3602002001450d562003ad22074220862007842107410a410b20011b21010b0b20004100360200200041186a2003360200200041106a20073702002000410c6a2004360200200041086a2001360200200041206a200241f0176a41900210e9081a0c550b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024020060e06000102030405090b2001280200220428020422054104490d0820042802002206280000210320042005417c6a3602042004200641046a360200200241f0176a200110fd0520022802f01722044102460d08200128020022062802042209450d08200241f8176a280200210820022802f417210a2006280200220d2d0000210520062009417f6a3602042006200d41016a3602002001200128020441016a2206360204200620012802084b0d08200241f0176a200110950120022802f0172109200241c0156a200241f0176a41047241ac0210e9081a2009411c460d08200241f0176a200241c0156a41ac0210e9081a41b002102c2206450d5920062009360200200641046a200241f0176a41ac0210e9081a20012001280204417f6a36020441012101420021070c050b2001280200220428020422054104490d0720042802002206280000210320042005417c6a3602042004200641046a3602002001280200220128020422054104490d0720012802002206280000210420012005417c6a3602042001200641046a3602004102210141002106420021070c040b200241c0006a200110ad0120022802400d0620012802002205280204220620022802442204490d062004417f4c0d520240024020040d00410121030c010b200410322203450d582001280200220528020421060b20062004490d0520032005280200200410e9082106200528020422082004490d2a2005200820046b3602042005200528020020046a3602002006450d062004ad2207422086200784220ba721042001280200220528020422064104490d042005280200220a280000210820052006417c6a3602042005200a41046a360200200241f0176a200110fd0520022802f01722064102460d042001280200220a2802042209450d0420022902f4172107200a280200220d2d00002105200a2009417f6a360204200a200d41016a3602002001200128020441016a220a360204200a20012802084b0d04200241f0176a200110950120022802f017210d200241c0156a200241f0176a41047241ac0210e9081a200d411c460d04200241f0176a200241c0156a41ac0210e9081a41b002102c2209450d57200b422088a7210a2009200d360200200941046a200241f0176a41ac0210e9081a20012001280204417f6a360204410321010c030b200241c8006a200110ad0120022802480d05200128020022052802042206200228024c2204490d052004417f4c0d510240024020040d00410121030c010b200410322203450d572001280200220528020421060b20062004490d0420032005280200200410e9082101200528020422062004490d1f2005200620046b3602042005200528020020046a3602002001450d052004ad22074220862007842207422088a7210a2007a721044104210141002106410021080c020b2001280200220428020422054104490d0420042802002206280000210320042005417c6a3602042004200641046a360200200241f0176a200110fd0520022802f01722044102460d04200128020022062802042208450d0420022902f41721072006280200220a2d0000210520062008417f6a3602042006200a41016a3602002001200128020441016a2206360204200620012802084b0d04200241f0176a200110950120022802f0172108200241c0156a200241f0176a41047241ac0210e9081a2008411c460d04200241f0176a200241c0156a41ac0210e9081a41b002102c2206450d5520062008360200200641046a200241f0176a41ac0210e9081a20012001280204417f6a3602042007422088a721082007a7210a41052101420021070c010b200241d0006a200110ad0120022802500d0320012802002205280204220620022802542204490d032004417f4c0d4f0240024020040d00410121030c010b200410322203450d552001280200220528020421060b20062004490d0220032005280200200410e9082106200528020422082004490d1c2005200820046b3602042005200528020020046a3602002006450d032004ad2207422086200784220ba721042001280200220528020422064104490d012005280200220a280000210820052006417c6a3602042005200a41046a360200200241f0176a200110fd0520022802f01722064102460d012001280200220a2802042209450d0120022902f4172107200a280200220d2d00002105200a2009417f6a360204200a200d41016a3602002001200128020441016a220a360204200a20012802084b0d01200241f0176a200110950120022802f017210d200241c0156a200241f0176a41047241ac0210e9081a200d411c460d01200241f0176a200241c0156a41ac0210e9081a41b002102c2209450d54200b422088a7210a2009200d360200200941046a200241f0176a41ac0210e9081a20012001280204417f6a360204410621010b200020053a0005200020013a000420004101360200200041246a20093602002000411c6a2007370200200041186a2006360200200041146a2008360200200041106a200a3602002000410c6a2004360200200041086a2003360200200041286a200241e0076a41880210e9081a0c570b2004450d010b2003102e0b2000411c3602000c540b200128020022032802042204450d4e200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e03000103530b200241f0176a2001109802200241fc176a2802002204450d5220024184186a280200210320024180186a280200210520022802f817210920022903f0172107200241e0076a20024188186a41e40010e9081a200241f4186a2802002108200241f0176a4180016a2802002106200241ec186a280200210a200241c0156a200241f8186a41800110e9081a200241f0176a200110f601024020022802f417450d00200241fc176a290200210c20022902f417210b20022802f0172101200241a80e6a200241e0076a41e40010e9081a200241d8116a200241c0156a41800110e9081a4101210d0c040b02402003450d00200341246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d002004102e0b02402008450d00200841246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012003415c6a22030d000b0b2006450d52200641246c0d010c520b200241f0176a2001109802200241fc176a2802002204450d5120024184186a280200210320024180186a280200210520022802f817210920022903f0172107200241e0076a20024188186a41e40010e9081a200241f4186a2802002108200241f0176a4180016a2802002106200241ec186a280200210a200241c0156a200241f8186a41800110e9081a200241f0176a200110f601024020022802f417450d00200241fc176a290200210c20022902f417210b20022802f0172101200241a80e6a200241e0076a41e40010e9081a200241d8116a200241c0156a41800110e9081a4102210d0c030b02402003450d00200341246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d002004102e0b02402008450d00200841246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012003415c6a22030d000b0b2006450d51200641246c450d510b200a102e0c500b200128020022032802042204450d4f200328020022052d0000210620032004417f6a3602042003200541016a36020020064101470d4f2001280200220328020422044108490d4f20032802002205290000210b2003200441786a3602042003200541086a3602002001280200220328020422044108490d4f20032802002205290000210c2003200441786a3602042003200541086a360200200128020022012802042203450d4f200128020022042d0000210520012003417f6a3602042001200441016a3602004200210702400240024020050e03020001520b420121070c010b420221070b200241a80e6a200241d8146a41e40010e9081a200241d8116a200241e0076a41800110e9081a4103210d0b200241d00a6a200241a80e6a41e40010e9081a20024198106a200241d8116a41800110e9081a200041186a200c370200200041106a200b370200200041346a2003360200200041306a20053602002000412c6a2004360200200041286a2009360200200041206a20073702002000410c6a2001360200200041086a200d36020020004102360200200041386a200241d00a6a41e40010e9081a200041a4016a2008360200200041a0016a20063602002000419c016a200a360200200041a8016a20024198106a41800110e9081a0c530b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241d8006a200110da042002290358a70d002002290360210720004103360200200041086a2007370300200041106a200241f0176a41a00210e9081a0c530b2000411c3602000c520b200128020022032802042204450d49200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e0500010203044e0b2001280200220128020422044104490d4d20012802002205280000210320012004417c6a3602042001200541046a36020042002107410121084200210b0c4f0b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210b20022900d7152107200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f8132001280200220128020422084104490d4d2005280000210a200228008b14210920022900ff13210c20022800fb13210320022f00f913210420022d00f81321052001280200220d280000210620012008417c6a3602042001200d41046a36020020022007421888a73b00eb1420022007421088a73a00ea1420022007a73b01e81420022009ad422086200aad843703e01420022007422888200b42188684a722013600ed142001411076210a2002200c3703d814200c421888a7210d200c420888a72109200241d8146a410f6a290000210b20022900df142107200ca7210e410221080c4f0b200441ff0171450d4c200241003a00e0150c4c0b2001280200220128020422044104490d4b20012802002205280000210320012004417c6a3602042001200541046a36020042002107410321080c4c0b41002104200241003a00e0150240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210b20022900d7152107200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f81320012802002208280204220a4104490d4d2005280000210d200228008b14210e20022900ff13210c20022800fb13210320022f00f913210420022d00f81321052008280200220928000021062008200a417c6a3602042008200941046a360200200128020022012802042208450d4d2001280200220a2d0000210920012008417f6a3602042001200a41016a3602004100210120090e0202014d0b200441ff0171450d4c200241003a00e0150c4c0b410121010b2002200e3602f4092002200d3602f009200220073703f8092007423888200b42ff018342088684a7210a2002200c3703e809200c421888a7210d200c420888a72109200241f7096a290000210b20022900ef092107200ca7210e410421080c4c0b2001280200220128020422044104490d4920012802002205280000210320012004417c6a3602042001200541046a36020042002107410521080c4a0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e0400010203070b200241c0156a200110eb0120022d00c0154105460d06200241c0156a41106a290300210b200241c8156a2903002107200241e0156a2802002103200241d8156a290300210c20022802c415210520022802c0152104200241e8006a200110820202402002290368a70d00200241e8006a41106a29030021102005ad4220862004ad8421112002290370220f422088a72105200fa72104410121010c040b200441ff01714102470d062007a7450d062005102e0c060b200241c0156a200110eb0120022d00c0154105460d05200241c0156a41106a290300210b200241e0156a2802002103200241d8156a290300210c200241c8156a290300210720022802c415210520022802c015210420024198016a2001108202200229039801a70d0420024198016a41106a290300211020022903a001210f20024180016a2001108202200229038001a70d0420024180016a41106a290300211220022903880121132005ad4220862004ad842111200f422088a72105200fa72104410221010c020b200241c0156a200110eb0120022d00c0154105460d04200241c0156a41106a290300210b200241e0156a22042802002103200241d8156a290300210c200241c0156a41086a2205290300210720022802c415210820022802c0152106200241c0156a200110eb01024020022d00c0154105460d00200241d8116a41086a200241c0156a41146a290200370300200241d8116a41106a200241dc156a2802003602002002200241c0156a410c6a2902003703d8112005280200210a2004350200210f20022802c415210520022802c0152104200241b0016a2001108202024020022903b001a70d00200241b0016a41106a290300211420022903b8012115200241e0076a41146a200241d8116a41106a280200360200200241e0076a410c6a200241e0116a290300370200200220022903d8113702e4072002200a3602e0072008ad4220862006ad842111200241e0076a41106a290300211220022903e007211020022903e8072113410321010c030b200441ff01714102470d00200a450d002005102e0b200641ff01714102470d042007a7450d042008102e0c040b200241c0156a200110eb0120022d00c0154105460d03200241c0156a41106a290300210b200241c8156a2903002107200241e0156a2802002103200241d8156a290300210c20022802c415210520022802c0152104200241c8016a200110820220022903c801a70d01200241c8016a41106a29030021102005ad4220862004ad84211120022903d001220f422088a72105200fa721044200210f4104210142002113420021120b20004105360200200041e0006a2014370200200041d8006a2015370200200041c8006a2012370200200041c0006a2013370200200041386a20103702002000411c6a200b370200200041146a2007370200200041d0006a200f3702002000412c6a2003360200200041246a200c3702002000410c6a2011370200200041086a2001360200200041306a2005ad4220862004ad84370200200041e8006a200241f0176a41c80110e9081a0c530b200441ff01714102470d012007a7450d012005102e0c010b200441ff01714102470d002007a7450d002005102e0b2000411c3602000c500b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241e0016a200110ad0120022802e0010d0020022802e4012205200128020028020441f0006e2203200320054b1bad42f0007e2207422088a70d472007a72203417f4c0d470240024020030d00410421060c010b2003102c2206450d4d0b2001200128020441016a2204360204200341f0006ead21070240200420012802084b0d00024002402005450d00200241c0156a41086a21090340200241c0156a200110990220022802c415210420022802c0152108200241e0076a200941e80010e9081a2004450d03200241d8116a200241e0076a41e80010e9081a02402007422088220ba722032007a7470d00200341016a220a2003490d4c2003410174220d200a200a200d491b220a4104200a41044b1bad42f0007e220b422088a745410274210a200ba7210d0240024020030d00200241003602c0150c010b200241043602c815200220063602c0152002200341f0006c3602c4150b20024198106a200d200a200241c0156a107d20022802a010210a2002280298104101460d03200228029c1021062007422088220ba72103200a41f0006ead21070b2006200341f0006c6a2203200436020420032008360200200341086a200241d8116a41e80010e9081a200b422086200742ffffffff0f83844280808080107c21072005417f6a22050d000b200128020421040b20012004417f6a3602042006450d022000200636020420004106360200200041086a2007370200200041106a200241f0176a41a00210e9081a0c520b200a0d4d0c480b02402007422088a72201450d002006200141f0006c6a2105200621010340024020012204410c6a2802002203450d0020042802042101200341246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012003415c6a22030d000b0b200441f0006a21010240200441086a2802002203450d00200341246c450d002004280204102e0b20012005470d000b0b2007a72201450d00200141f0006c450d002006102e0b2000411c3602000c4f0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200410021164100210e410721090240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e170001020304055c060708090a0b0c0d0e0f101112131415170b200241c0156a200110eb0120022d00c0154105460d16200241d8116a41086a200241d4156a290200370300200241d8116a41106a200241dc156a2902003703002002200241cc156a2902003703d811200241c0156a41086a280200210820022802c415210a20022802c0152105200241e8016a2001108202024002400240024020022903e801a70d00200128020022032802042204450d00200241e8016a41106a290300210c20022903f001210b200328020022062d0000210e20032004417f6a360204410121092003200641016a36020041002104024002400240200e0e050600010204030b410121040c050b410221040c030b41002104200241003a00e01502400340200128020022032802042206450d01200241c0156a20046a2003280200220d2d00003a000020032006417f6a3602042003200d41016a3602002002200441016a22033a00e0152003210420034120470d000b200241a80e6a410f6a2201200241c0156a410f6a290000370000200241a80e6a41086a2203200241c0156a41086a290300370300200241d8146a410f6a22042001290000370000200241d8146a41086a22012003290300370300200241d00a6a41086a22032001290300370300200241d00a6a410f6a22012004290000370000200220022903c0153703d00a200241c0156a411f6a310000210720022900d715210f200241f8136a410f6a22042001290000370000200241f8136a41086a2003290300370300200220022903d00a3703f8132004290000211020022800fb13210120022900ff13211120022d00f8132103200220022f00f9133b00e107200220033a00e007200241e0076a411f6a20073c0000200241e0076a410f6a20103700002002200f3700f707200220113700e707200220013600e3074103210420022f01e007210d0c040b200441ff0171450d00200241003a00e0150b200541ff01714102470d192008450d19200a102e0c190b410421040b0b20024198106a41106a200241d8116a41106a29030037030020024198106a41086a200241d8116a41086a290300221137030020022901e607220f422088200241ee076a2901002210422086842107200fa7220e41807e7121162010422088210f20022d00ff07211720022800fb07211820022f00f907211920022d00f807211a20022f01f607211b20022801e207210320022903d811211020022802ac10211c20022f01aa10211d20022d00a910211e20022800a510211f20022f00a310212020022d00a21021212011a721220c5b0b20024180026a2001108202200229038002a70d15200229038802220b42208820024190026a290300220c422086842107200c422088210f200ba7220e41807e712116410221090c580b20024198026a2001108202200229039802a70d1420022903a002220b422088200241a8026a290300220c422086842107200c422088210f200ba7220e41807e712116410321090c570b410421092001280200220128020422044104490d1320012802002205280000210320012004417c6a3602042001200541046a360200420021070c550b200241b0026a200110ad0120022802b0020d1220022802b40221032002418094ebdc033602c415200220033602c015200128020022012802042204450d12200241c0156a2003418094ebdc034b4102746a2802002103200128020022052d0000210620012004417f6a3602042001200541016a360200410521094100210e024020060e025800130b4101210e0c550b200241c0156a200110ea0120022802c0152203450d1120022802c415220e41807e712116200241c8156a35020021074200210f410621090c540b200128020022032802042204450d0f200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024020060e050001020304050b200241003a00d8140c590b200241013a00d8140c580b200241023a00d8140c570b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a410f6a2201200241c0156a410f6a290000370000200241d8116a41086a2203200241c0156a41086a29030037030020024198106a410f6a2204200129000037000020024198106a41086a22012003290300370300200241a80e6a41086a22032001290300370300200241a80e6a410f6a22012004290000370000200220022903c0153703a80e200241df156a310000211020022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a2003290300370300200220022903a80e3703f8132004290000210c20022900ff13210720022d00f813210120022f00f9132103200220022800fb133602dc14200220033b01da14200220013a00d914200241033a00d8140c570b0240200441ff0171450d00200241003a00e0150b200241053a00d8140c120b200241043a00d8140c550b200241053a00d8140c100b200241c0156a200110eb0120022d00c0154105460d0f20022902c415220c422088200241cc156a290200220f422086842107200241d4156a290200220b422888200241dc156a31000042188684a72118200ca7220e41807e712116200f422088210f200b421888a72119200b421088a7211a200241e0156a2802002105200241de156a2f01002123200241dd156a2d0000211720022802c0152103200ba7211b410921090c520b200241b8026a200110ad0120022802b8020d0e20022802bc02210342002107410a21090c500b200241c0026a200110ad0120022802c0020d0d20022802c402210342002107410b21090c4f0b200128020022012802042203450d0c200128020022052d0000210420012003417f6a3602042001200541016a360200200441e5004f0d0c42002107410c21094100210e4200210f0c510b410d21094100210e0c4e0b410e21094100210e0c4d0b200241c0156a200110e40120022802c0152203450d0920022802c415220e41807e712116200241c8156a35020021074200210f410f21090c4c0b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f81320022800fb13210320022f00f913210d20022d00f8132104200241d8146a41086a22062005290000370300200220022900ff133703d814200241f0146a20073c00002002200b3703e8142001280200220128020422084104490d092001280200220a280000210520012008417c6a3602042001200a41046a36020020022903d814220b4220882006290300220c422086842107200c422088210f200ba7220e41807e71211620022800ed14211820022f00eb14211920022d00ea14211a20022f01e814211b411021090c4e0b200441ff0171450d08200241003a00e0150c080b411121094100210e0c4a0b2001280200220428020422054104490d0620042802002206280000210320042005417c6a3602042004200641046a360200200241c8026a200110ad0120022802c8020d0620022802cc02220441ffffffff03712004470d06200441027422052001280200220628020422084b0d062005417f4c0d4c0240024020050d004104210e0c010b20051032220e450d522001280200220628020421080b02400240200820044102742201490d00200e2006280200200110e90821082006280204220a20014f0d012001200a41b8b2c0001056000b2005450d07200e102e0c070b2006200a20016b3602042006200628020020016a3602002008450d062004ad4220862005410276ad842107200841807e7121164200210f411221090c490b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210b20022900d7152107200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f8132001280200220128020422084104490d062007422888200b42188684a721182005350000210c200228008b14210620022900ff13210b20022800fb13210320022f00f913210d20022d00f81321042007421888a721192007421088a7211a2007a7211b2001280200220a280000210520012008417c6a3602042001200a41046a3602002006411076ad423086200641087641ff0171ad42288684200c2006ad4220864280808080f01f8384842207422088210f200b4220882007422086842107200ba7220e41807e712116411321090c4b0b200441ff0171450d05200241003a00e0150c050b200241d0026a200110820220022903d002a70d0420022903d802220b422088200241e0026a290300220c422086842107200c422088210f200ba7220e41807e712116411421090c470b200241f0026a200110ad0120022802f0020d0320022802f4022103200241e8026a200110ad0120022802e8020d0320022802ec02220e41807e712116411521090c460b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210c20022900d715210b200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f8132001280200220128020422064104490d0320052800002108200228008b14210a20022900ff13210f20022800fb13210320022f00f913210d20022d00f813210420012802002209280000210520012006417c6a3602042001200941046a3602002002200a3602f409200220083602f009200f42208820022903f0092210422086842107200b422888200c42188684a72118200fa7220e41807e7121162010422088210f200b421888a72119200b421088a7211a200ba7211b411621090c480b200441ff0171450d02200241003a00e0150c020b200241c0156a200110ea0120022802c0152203450d0120022902c415220b4220882107200ba7220e41807e7121164200210f411721090c440b200241053a00d8140b2000411c3602000c4e0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b2000411c3602000c4d0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004100212402400240024020060e020001030b41002104200241003a00e015024002400240024002400240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8146a410f6a2203200241c0156a410f6a290000370000200241d8146a41086a2204200241c0156a41086a290300370300200241e8096a410f6a22052003290000370000200241e8096a41086a22032004290300370300200241c80d6a41086a22042003290300370300200241c80d6a410f6a22032005290000370000200220022903c0153703c80d200241df156a310000210c20022900d715210b200241f8136a410f6a22052003290000370000200241f8136a41086a2004290300370300200220022903c80d3703f8132005290000210720022800fb13210920022f00f913210a20022d00f813210820022900ff13211241002104200241003a00e015200b422888200c42188684a721212012428080808070832125200b421888a72122200b421088a7210e200ba7210d0340200128020022032802042205450d02200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e8096a410f6a2203200241c0156a410f6a290000370000200241e8096a41086a2204200241c0156a41086a290300370300200241c80d6a410f6a22052003290000370000200241c80d6a41086a22032004290300370300200241a00d6a41086a22042003290300370300200241a00d6a410f6a22032005290000370000200220022903c0153703a00d200241df156a310000210b20022900d715210c200241f8136a410f6a22052003290000370000200241f8136a41086a2004290300370300200220022903a00d3703f8132005290000210f20022800fb13211e20022f00f913211f20022d00f813212020022900ff132110200241f0146a200b3c00002002200c3703e8142002200f3703e014200220103703d81441002104200241003a00e0150340200128020022032802042205450d03200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e8096a410f6a2203200241c0156a410f6a290000370000200241e8096a41086a2204200241c0156a41086a290300370300200241c80d6a410f6a22052003290000370000200241c80d6a41086a22032004290300370300200241a00d6a41086a22042003290300370300200241a00d6a410f6a22032005290000370000200220022903c0153703a00d200241df156a310000211020022900d715210f200241f8136a410f6a22052003290000370000200241f8136a41086a2004290300370300200220022903a00d3703f8132005290000210c20022900ff13210b20022800fb13211720022f00f913211c20022d00f813211d41002104200241003a00e015200f422888201042188684a72118200f421888a72119200f421088a7211b200fa721230340200128020022032802042205450d04200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e8096a410f6a2203200241c0156a410f6a290000370000200241e8096a41086a2204200241c0156a41086a290300370300200241c80d6a410f6a22052003290000370000200241c80d6a41086a22032004290300370300200241a00d6a41086a22042003290300370300200241a00d6a410f6a22032005290000370000200220022903c0153703a00d200241df156a310000211120022900d7152110200241f8136a410f6a22052003290000370000200241f8136a41086a2004290300370300200220022903a00d3703f8132005350000212620022900ff13210f20022800fb13210520022f00f913210420022d00f8132103200228008b1421064100211a200241003a00e015200641087621272006ad42208621282006411076ad21290340200128020022062802042216450d05200241c0156a201a6a2006280200222a2d00003a000020062016417f6a3602042006202a41016a3602002002201a41016a22063a00e0152006211a20064120470d000b200241c80d6a410f6a2206200241c0156a410f6a290000370000200241c80d6a41086a221a200241c0156a41086a290300370300200241a00d6a410f6a22162006290000370000200241a00d6a41086a2206201a290300370300200241e80c6a41086a221a2006290300370300200241e80c6a410f6a22062016290000370000200220022903c0153703e80c200241df156a310000211520022900d7152114200241f8136a410f6a22162006290000370000200241f8136a41086a201a290300370300200220022903e80c3703f8132016290000211320022800fb13212a20022f00f913211620022d00f813211a20022900ff13212b200241800a6a20153c0000200220143703f809200220133703f0092002202b3703e8094100212c200241003a00e015034020012802002206280204222d450d06200241c0156a202c6a2006280200222e2d00003a00002006202d417f6a3602042006202e41016a3602002002202c41016a22063a00e0152006212c20064120470d000b200241c80d6a410f6a2206200241c0156a410f6a290000370000200241c80d6a41086a222c200241c0156a41086a290300370300200241a00d6a410f6a222d2006290000370000200241a00d6a41086a2206202c290300370300200241e80c6a41086a222c2006290300370300200241e80c6a410f6a2206202d290000370000200220022903c0153703e80c200241df156a310000211320022900d7152114200241f8136a410f6a222d2006290000370000200241f8136a41086a202c290300370300200220022903e80c3703f813202d280000212f200228008b14213020022900ff13211520022800fb13212e20022f00f913212d20022d00f813212c200241e0076a41186a2206200241d8146a41186a2d00003a0000200241e0076a41106a2224200241d8146a41106a290300370300200241e0076a41086a2231200241d8146a41086a290300370300200220022903d8143703e007200241d8116a41186a2232200241e8096a41186a2d00003a0000200241d8116a41106a2233200241e8096a41106a290300370300200241d8116a41086a2234200241e8096a41086a290300370300200220022903e8093703d81120024198106a41186a20062d00003a000020024198106a41106a202429030037030020024198106a41086a2031290300370300200220022903e00737039810200241a80e6a41186a20322d00003a0000200241a80e6a41106a2033290300370300200241a80e6a41086a2034290300370300200220022903d8113703a80e200241f8026a200110ad0120022802f8020d0a20012802002231280204223220022802fc022206490d0a2006417f4c0d4e20060d06410121240c070b200441ff0171450d09200241003a00e0150c090b200441ff0171450d08200241003a00e0150c080b200441ff0171450d07200241003a00e0150c070b200441ff0171450d06200241003a00e0150c060b201a41ff0171450d05200241003a00e0150c050b202c41ff0171450d04200241003a00e0150c040b200610322224450d4c2001280200223128020421320b20322006490d0120242031280200200610e9082101203128020422322006490d1d2031203220066b3602042031203128020020066a3602002001450d022029423086202741ff0171ad4228868420284280808080f01f832026848421262025201242ffffffff0f838421252006ad22124220862012842112200241d00a6a41186a20024198106a41186a2d00003a0000200241d00a6a41106a20024198106a41106a290300370300200241d00a6a41086a20024198106a41086a29030037030020024198136a41086a200241a80e6a41086a29030037030020024198136a41106a200241a80e6a41106a29030037030020024198136a41186a200241a80e6a41186a2d00003a000020022002290398103703d00a200220022903a80e370398130b200241e80f6a41186a2201200241d00a6a41186a2d00003a0000200241e80f6a41106a2206200241d00a6a41106a290300370300200241e80f6a41086a2227200241d00a6a41086a290300370300200241f80d6a41086a223120024198136a41086a290300370300200241f80d6a41106a223220024198136a41106a290300370300200241f80d6a41186a223320024198136a41186a2d00003a0000200220022903d00a3703e80f20022002290398133703f80d2000411f6a2007370000200041176a2025370000200041336a201e360000200041316a201f3b0000200041306a20203a00002000412c6a20213602002000412a6a20223b01002000200e3a0029200041276a200d3b0000200041136a2009360000200041116a200a3b0000200041106a20083a0000200041086a20123702002000202436020420004109360200200020022903e80f3700372000413f6a2027290300370000200041c7006a2006290300370000200041cf006a20012d00003a00002000418f016a20113c000020004187016a2010370000200041ff006a2026370000200041f7006a200f370000200041df006a200c370000200041d7006a200b37000020004193016a202a36000020004191016a20163b000020004190016a201a3a0000200041f3006a2005360000200041f1006a20043b0000200041f0006a20033a0000200041ec006a2018360200200041ea006a20193b01002000201b3a0069200041e7006a20233b0000200041d3006a2017360000200041d1006a201c3b0000200041d0006a201d3a0000200041b3016a202e360000200041b7016a2015370000200041bf016a202f360000200041c3016a2030360000200041cf016a20133c0000200041c7016a2014370000200041b1016a202d3b0000200041b0016a202c3a0000200041af016a20332d00003a0000200041a7016a20322903003700002000419f016a2031290300370000200020022903f80d37009701200041d0016a200241f0176a41e00010e9081a0c4e0b2024102e0b2000411c3602000c4c0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e03000102040b200241f0176a200110cb0620022903f81722074202510d0320022802fc17210320022802f417210420022802f0172105200241e0076a20024180186a41e40010e9081a200241e8186a280200210620022802ec18210820022802e418210a200241c0156a200241f0176a4180016a41800110e9081a200241f0176a200110f60120022802f417450d032007a72101200241fc176a290200210b20022802f017210920022902f417210c200241d00a6a200241e0076a41e40010e9081a200241d8116a200241c0156a41800110e9081a200c422088200b422086842107200b422088210b200ca7210d4101210e0c020b200241f0176a200110cb0620022903f81722074202510d0220022802fc17210320022802f417210420022802f0172105200241a80e6a20024180186a41e40010e9081a200241e8186a280200210620022802ec18210820022802e418210a200241c0156a200241f0176a4180016a41800110e9081a200241f0176a200110f60120022802f417450d022007a72101200241fc176a290200210b20022802f017210920022902f417210c200241d8146a200241a80e6a41e40010e9081a200241e0076a200241c0156a41800110e9081a200241d00a6a200241d8146a41e40010e9081a200241d8116a200241e0076a41800110e9081a200c422088200b422086842107200b422088210b200ca7210d4102210e0c010b2001280200220328020422044104490d0120032802002205280000210920032004417c6a3602042003200541046a3602002001280200220128020422034104490d0120012802002204280000210d20012003417c6a3602042001200441046a360200200241d00a6a200241c0156a41e40010e9081a200241d8116a200241f0176a41800110e9081a4103210e0b200241e8096a200241d00a6a41e40010e9081a20024198106a200241d8116a41800110e9081a2000411c6a200b3e0200200041146a20073702002000412c6a2003360200200041286a2001360200200041246a2004360200200041206a2005360200200041106a200d3602002000410c6a2009360200200041086a200e3602002000410a360200200041306a200241e8096a41e40010e9081a2000419c016a200836020020004198016a200636020020004194016a200a360200200041a0016a20024198106a41800110e9081a200041a8026a20024198136a41086a290300370300200041a0026a2002290398133703000c4c0b2000411c3602000c4b0b200128020022032802042204450d3b200328020022052d0000210620032004417f6a3602042003200541016a36020020060d3b2001280200220328020422044104490d3b20032802002205280000210620032004417c6a3602042003200541046a36020020024190036a200110ad012002280290030d3b2001280200220428020422052002280294032203490d3b2003417f4c0d410240024020030d00410121080c010b200310322208450d472001280200220428020421050b0240024020052003490d0020082004280200200310e90821052004280204220820034f0d012003200841b8b2c0001056000b2008102e0c3c0b2004200820036b3602042004200428020020036a3602002005450d3b2003ad2207422086200784210b20024188036a200110ad012002280288030d3a200228028c0322082001280200280204410c6e2203200320084b1bad420c7e2207422088a70d412007a72203417f4c0d410240024020030d004104210a0c010b2003102c220a450d470b2001200128020441016a22043602042003410c6ead2107200420012802084b0d3902402008450d00034020024180036a200110ad012002280280030d3b2001280200220428020422092002280284032203490d3b2003417f4c0d430240024020030d004101210d0c010b20031032220d450d492001280200220428020421090b20092003490d3a200d2004280200200310e90821092004280204220d2003490d192004200d20036b3602042004200428020020036a3602002009450d3b02402007422088220ca722042007a7470d00200441016a220d2004490d442004410174220e200d200d200e491b220d4104200d41044b1bad420c7e220c422088a745410274210d200ca7210e0240024020040d00200241003602e0070c010b200241043602e8072002200a3602e00720022004410c6c3602e4070b200241d8116a200e200d200241e0076a107d20022802e011210d20022802d8114101460d3f20022802dc11210a2007422088220ca72104200d410c6ead21070b200a2004410c6c6a22042003ad220f422086200f8437020420042009360200200c422086200742ffffffff0f83844280808080107c21072008417f6a22080d000b200128020421040b20012004417f6a360204200a450d3a2002200a3602c815200128020022032802042104200220073702cc152002200b3703c015200ba7210d20044104490d3720032802002208280000210e20032004417c6a3602042003200841046a3602002001280200220328020422044104490d3720032802002208280000212020032004417c6a3602042003200841046a3602002001280200220328020422044104490d3720032802002208280000211e20032004417c6a3602042003200841046a360200200241cc156a290200210720022902c415210b4100210a200241003a008016200b422088a7211f2007422088a72121200ba7211d2007a7212241c000210402400240034002400240200128020022032802042208450d002003280200220a2d0000210920032008417f6a3602042003200a41016a36020020022d008016220341c000490d01200220093a00e00741bcf5cc00412b200241e0076a41e0c0cb0041e4decc00103e000b200a41ff0171450d02200241003a0080160c020b200241c0156a20036a20093a00002002200341016a220a3a0080162004417f6a22040d000b2003413e4b0d010b0240200d450d002005102e0b02402021450d002021410c6c2103201f210103400240200141046a280200450d002001280200102e0b2001410c6a2101200341746a22030d000b0b2022450d3c2022410c6c450d3c201f102e0c3c0b2005450d3b200241f8156a290300210720022903f015210b20022802ec15210120022f01ea15210320022800e515210420022f00e315210820022d00e215210a20022f01e015210920022903d815210c20022802d415211c20022802d015211720022802cc15212320022f01ca15211b20022d00c915211920022800c515211820022f00c315211a20022d00c215211620022f01c015212a200020022d00e9153a00552000200a3a004e200020193a0035200020163a002e200020063602042000410b360200200041e4006a2007370200200041dc006a200b370200200041d8006a2001360200200041d6006a20033b0100200041d1006a2004360000200041cf006a20083b0000200041cc006a20093b0100200041c4006a200c370200200041c0006a201c3602002000413c6a2017360200200041386a2023360200200041366a201b3b0100200041316a20183600002000412f6a201a3b00002000412c6a202a3b0100200041286a201e360200200041246a2020360200200041206a200e3602002000411c6a2021360200200041186a2022360200200041146a201f360200200041106a201d3602002000410c6a200d360200200041086a2005360200200041ec006a200241f0176a41c40110e9081a0c4a0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b2000411c3602000c490b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004200210f42002107410d21080240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e19000102030405060708090a0b18170c0d0e0f101112131415161a0b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022900cf15210720022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c015210520024198036a2001108202200229039803a70d1a200241a8036a290300210c20022903a003210b2007422088210f410121080c180b200441ff0171450d19200241003a00e0150c190b200241b8036a200110ad0120022802b8030d1820022802bc032103200241b0036a200110ad0120022802b0030d1820022802b403212141022108420021070c160b200241c0036a200110ad0120022802c0030d17200128020022042802042205450d1720022802c4032103200428020022062d0000210820042005417f6a3602042004200641016a36020002400240024020080e0200011a0b200128020022042802042205450d19200428020022082d0000210620042005417f6a3602042004200841016a360200410021040240024002400240024002400240200641ff00710e0706000102030405200b4180800421040c050b4180800821040c040b4180800c21040c030b4180801021040c020b4180801421040c010b4180801821040b2001280200220128020422054110490d192001280200220841086a290000210b200829000021072001200841106a3602002001200541706a360204200242003703d015200220073703c0152002200b3703c8152006410174418002712101410021050c010b2001280200220428020422054110490d182004280200220641086a290000210b200629000021072004200641106a3602002004200541706a3602042001280200220128020422044110490d182001280200220541086a290000210c2005290000210f2001200541106a360200200241d8156a200c3703002001200441706a360204200220073703c0152002200b3703c8152002200f3703d0154100210141012105410021040b2007422088210f20044180801c71200172200572212120022903d815210b20022802d415211f20022f01d215211e20022d00d115212020022800cd15210d20022f00cb15210920022d00ca15210e20022f01c815210a4200210c410321080c150b410421082001280200220128020422044104490d1620012802002205280000210320012004417c6a3602042001200541046a360200420021070c140b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022900cf152207422088210f20022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c0152105410521080c140b200441ff0171450d15200241003a00e0150c150b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022900cf152207422088210f20022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c0152105410621080c130b200441ff0171450d14200241003a00e0150c140b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022900cf152207422088210f20022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c0152105410721080c120b200441ff0171450d13200241003a00e0150c130b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b2001280200220628020422084104490d1320022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022900cf15210720022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c015210520062802002220280000211f20062008417c6a3602042006202041046a3602002001280200220128020422064104490d1320012802002208350000210b20012006417c6a3602042001200841046a3602002007422088210f4200210c410821080c110b200441ff0171450d12200241003a00e0150c120b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022900cf152207422088210f20022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022800cb15212220022800c715212120022800c315210320022f00c115210420022d00c0152105410921080c100b200441ff0171450d11200241003a00e0150c110b200241c8036a200110ad0120022802c8030d1020022802cc032103410a2108420021070c0e0b2001280200220128020422044104490d0f20012802002205280000210320012004417c6a3602042001200541046a360200410b2108420021070c0d0b41002104200241003a00e015024002400240024002400240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f813200128020022062802042208450d16200235008b14210f2005350000210c200228008314212220022800ff13212120022800fb13210320022f00f913210420022d00f81321052006280200220a2d0000210920062008417f6a3602042006200a41016a3602004100212020090e0707060102030405160b200441ff0171450d15200241003a00e0150c150b410221200c050b410321200c040b410421200c030b410521200c020b410621200c010b410121200b2001280200220128020422064110490d0e200b422888200742188684a7210d200f422086200c842107200b421888a72109200b421088a7210e200ba7210a2001280200220841086a290000210c2008290000210b2001200841106a3602002001200641706a360204410c21080c0c0b200241d0036a200110ad0120022802d0030d0d20012802002205280204220620022802d4032204490d0d2004417f4c0d4d0240024020040d00410121030c010b200410322203450d532001280200220528020421060b20062004490d0c20032005280200200410e9082101200528020422062004490d222005200620046b3602042005200528020020046a3602002001450d0d2004ad22074220862007842207422088a721222007a72121410f2108420021070c0b0b200241d8036a200110ad0120022802d8030d0c20012802002205280204220620022802dc032204490d0c2004417f4c0d4c0240024020040d00410121030c010b200410322203450d522001280200220528020421060b20062004490d0b20032005280200200410e9082101200528020422062004490d182005200620046b3602042005200528020020046a3602002001450d0c2004ad22074220862007842207422088a721222007a7212141102108420021070c0a0b200241e0036a200110ad0120022802e0030d0b20012802002205280204220620022802e4032204490d0b2004417f4c0d4b0240024020040d00410121030c010b200410322203450d512001280200220528020421060b20062004490d0a20032005280200200410e9082101200528020422062004490d162005200620046b3602042005200528020020046a3602002001450d0b2004ad22074220862007842207422088a721222007a7212141112108420021070c090b200241e8036a200110ad0120022802e8030d0a20012802002205280204220620022802ec032204490d0a2004417f4c0d4a0240024020040d00410121030c010b200410322203450d502001280200220528020421060b20062004490d0920032005280200200410e9082101200528020422062004490d142005200620046b3602042005200528020020046a3602002001450d0a2004ad22074220862007842207422088a721222007a7212141122108420021070c080b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241cf156a290000210720022802dc15210d20022f01da15210920022d00d915210e20022f00d715210a20022800c315210320022f00c115210420022d00c015210520022900c715210b200241f0036a200110ad0120022802f0030d0a200b422088a72122200ba7212120022802f403211f2007422088210f411321080c080b200441ff0171450d09200241003a00e0150c090b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f813200b422888200742188684a7210d200235008b14220f4220862004350000842107200b421888a72109200b421088a7210e20022900ff13220c422088a7212220022800fb13210320022f00f913210420022d00f8132105200ba7210a200ca72121411421080c070b200441ff0171450d08200241003a00e0150c080b2001280200220128020422044104490d0720012802002205280000210320012004417c6a3602042001200541046a36020041152108420021070c050b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210b20022900d7152107200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f8132001280200220128020422064104490d072007422888200b42188684a7210d2005350000210c200235008b14210f20022900ff13210b20022800fb13210320022f00f913210420022d00f81321052007421888a721092007421088a7210e2007a7210a20012802002208280000211f20012006417c6a3602042001200841046a360200200c200f422086842107200b422088a72122200ba72121411621080c050b200441ff0171450d06200241003a00e0150c060b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a41086a2206200241cf156a29000037030041172108200241d8116a41106a220a200241c0156a41176a290000370300200241d8116a41186a2209200241df156a2d00003a0000200220022900c71522073703e007200220073703d81120022d00c015210520022f00c115210420022800c3152103200241e8096a41186a220d20092d00003a0000200241e8096a41106a200a290300370300200241e8096a41086a220a2006290300370300200220022903d8113703e8092001280200220128020422064104490d0620012802002209280000211f20012006417c6a3602042001200941046a36020020022903f809220b422888200d31000042188684a7210d200a2903002207422088210f200b421888a72109200b421088a7210e20022903e809220c422088a72122200ba7210a200ca721210c040b200441ff0171450d05200241003a00e0150c050b41002104200241003a00e0150240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200128020022062802042208450d0720022900d715210b200241df156a310000210f200241cf156a290000210720022900c715210c20022800c315210320022f00c115210420022d00c01521052006280200220a2d0000210920062008417f6a3602042006200a41016a3602004100211f20090e020201070b200441ff0171450d06200241003a00e0150c060b2001280200220128020422084104490d052001280200220a280000210620012008417c6a3602042001200a41046a3602004101211f0b200b422888200f42188684a7210d2007422088210f200b421888a72109200b421088a7210e200ba7210a200c422088a721222006ad210b200ca721214200210c411821080c020b200241f8036a200110ad0120022802f8030d0320022802fc03210341192108420021070c010b410e2108420021070b2000201e3b012a200020203a0029200020093b00232000200e3a0022200020043b000a200020053a00092000410d360200200041386a200c370200200041306a200b3702002000412c6a201f360200200041256a200d360000200041206a200a3b0100200041146a2022360200200041106a20213602002000410c6a2003360200200041086a20083a0000200041186a200f422086200742ffffffff0f8384370200200041c0006a200241f0176a41f00110e9081a0c4a0b2003102e0b2000411c3602000c480b200241e0076a200110cc06024020022d00e0074107460d00200241d8116a41306a200241e0076a41306a2903002207370300200241d8116a41286a200241e0076a41286a290300220b370300200241d8116a41206a200241e0076a41206a290300220c370300200241d8116a41186a200241e0076a41186a290300220f370300200241c0156a410c6a200241e0076a41086a290300370200200241c0156a41146a200241e0076a41106a290300370200200241c0156a411c6a200f370200200241c0156a41246a200c370200200241c0156a412c6a200b370200200241c0156a41346a2007370200200220022903e0073702c4152000410e360200200020022902c0153702042000410c6a200241c0156a41086a290200370200200041146a200241c0156a41106a2902003702002000411c6a200241c0156a41186a290200370200200041246a200241c0156a41206a2902003702002000412c6a200241c0156a41286a290200370200200041346a200241c0156a41306a2902003702002000413c6a200241f8156a280200360200200041c0006a200241f0176a41f00110e9081a0c480b2000411c3602000c470b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024020060e06000102030405090b200241c0156a200110e40120022802c0152208450d0820022802c415210a200128020022032802042204450d05200241c8156a2802002109200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e020201000b200241023a00d8140c090b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a410f6a2203200241c0156a410f6a290000370000200241d8116a41086a2204200241c0156a41086a29030037030020024198106a410f6a2205200329000037000020024198106a41086a22032004290300370300200241a80e6a41086a22042003290300370300200241a80e6a410f6a22032005290000370000200220022903c0153703a80e200241df156a310000210f20022900d7152110200241f8136a410f6a22052003290000370000200241f8136a41086a2004290300370300200220022903a80e3703f8132005290000210b20022900ff13210c20022d00f813210320022f00f9132104200220022800fb1322053602dc14200220043b01da14200220033a00d914200241013a00d814200541187621040c020b0240200441ff0171450d00200241003a00e0150b200241023a00d8140c080b200241003a00d81420022d00df1421040b2001280200220128020422054104490d0620022d00da14210620022f01d814210e20022800db1421032002200c3700e107200241e9076a200b3700002001280200220d350000210720012005417c6a3602042001200d41046a360200200220103700f107200220043a00e007200c423888200b42088684a7210d200e20064110747222044180feff07714108762105200fa741ff01712101200c421888a7210e200b421888a72122200241f8076a310000210b20022802e007210620022903f007210c410121210c3b0b200110cc042203450d0720024180046a200110ad012002280280040d0620022802840421064200210c41022121410021224200210b42002107410021090c3a0b20024190046a200110ad012002280290040d062002280294042103200110cc042206450d0620024188046a200110ad0102402002280288040d00200228028c04210e4200210c41032121410021224200210b42002107410021090c390b2006108b022006102e0c060b41002104200241003a00e0150240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241cf156a290000210720022900c715210f20022802dc15210620022f01da15210a20022d00d915210920022f00d715210d20022800c315210320022f00c115210520022d00c015210420024198046a200110ad012002280298040d0820012802002201280204220e450d08200228029c042108200128020022222d000021212001200e417f6a3602042001202241016a3602004100210120210e020201080b200441ff0171450d07200241003a00e0150c070b410121010b200220063600ed142002200a3b00eb14200220093a00ea142002200d3b01e814200f422088a7210e2007422088a72122200241f0146a310000210b20022903e814210c200fa721062007a7210d410421210c380b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a41086a2206200241cf156a290000370300200241d8116a41106a2208200241d7156a290000370300200241d8116a41186a220a200241df156a2d00003a0000200220022900c71522073703e007200220073703d81120022d00c015210420022f00c115210520022800c3152103200241e8096a41186a200a2d00003a0000200241e8096a41106a2008290300370300200241e8096a41086a2006290300370300200220022903d8113703e809200241b8046a200110ad0120022802b8040d0520022802bc042108200241a8046a200110da0420022903a804a70d0520022903b0042107200241a0046a200110ad0120022802a0040d0520022802a404210a20022903e809220f422088a7210e200241f0096a2903002210422088a72122200241800a6a310000210b20022903f809210c200fa721062010a7210d410521210c370b200441ff0171450d04200241003a00e0150c040b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20022900c7152207422088a7210e200241df156a310000210b20022900d715210c20022800d315212220022800cf15210d20022800c315210320022f00c115210520022d00c01521042007a721064106212141002109420021070c360b200441ff0171450d03200241003a00e0150c030b200241023a00d8140b200a41ffffff3f71450d012008102e0c010b2003108b022003102e0b2000411c3602000c460b200128020022032802042204450d2f200328020022052d0000210620032004417f6a3602042003200541016a3602004102210e02400240024002400240024020060e06003401020304350b200241c0156a200110e40120022802c0152203450d3420022902c415210b200241c0046a2001108202024020022903c004a70d0020022903c8042207423888200241d0046a290300220c42088684a7210d200b422088a72104200c423888a7210a200c421888a72109200ba721054101210e0c330b200b42ffffff3f83500d342003102e0c340b200241d8046a200110ad0120022802d8040d3320022802dc04210320023502801420024184146a33010020024186146a31000042108684422086842107200228008b142109200228008714210d20022802fc1321044103210e4200210b0c310b200128020022032802042204450d32200328020022052d0000210620032004417f6a3602042003200541016a3602004104210e4100210a410021094100210d41002103024020060e03320300330b200241e0046a200110ad0120022802e0040d3220022802e4042105410221030c2f0b200241c0156a200110eb0120022d00c0154105460d31200241e0076a41086a200241d4156a290200370300200241f0076a200241dc156a2902003703002002200241cc156a2902003703e007200241c0156a41086a280200210420022802c415210520022802c01521030240200128020022012802042206450d00200128020022082d0000210a20012006417f6a3602042001200841016a3602004100210802400240200a0e020100020b410121080b20022903e0072207423888200241e8076a290300220b42088684a7210d200b423888a7210a200b421888a72109200241f0076a290300210b4105210e0c310b200341ff01714102470d312004450d312005102e0c310b2001280200220428020422054104490d3020042802002206280000210320042005417c6a3602042004200641046a3602002001280200220128020422044104490d3020012802002206280000210520012004417c6a3602042001200641046a3602004106210e0c2d0b4100210a410021094100210d410121030c2d0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004107210302400240024002400240024020060e0700010203040531060b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f813200b422888200742188684a7211b200b421888a72120200b421088a721192004280000210e200228008b14210d20022900ff13210720022800fb13210820022f00f913210a20022d00f8132109200ba72122410121030c310b200441ff0171450d05200241003a00e0150c050b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f81320022800fb13210820022f00f913210a20022d00f8132109200241d8146a41086a22012004290000370300200220022900ff133703d814200241f0146a20073c00002002200b3703e814200b422888200742188684a7211b200b421888a72120200b421088a721192001290300220c422088a7210d20022903d8142107200ba72122200ca7210e410221030c300b200441ff0171450d04200241003a00e0150c040b41002104200241003a00e015024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2203200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052003290000370000200241d8116a41086a2203200429030037030020024198106a41086a2204200329030037030020024198106a410f6a22032005290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22052003290000370000200241f8136a41086a200429030037030020022002290398103703f81320022800fb13210820022f00f913210a20022d00f8132109200241e8096a41086a2005290000370300200220022900ff133703e809200241800a6a20073c00002002200b3703f80941002104200241003a00e0150340200128020022032802042205450d02200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210f200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f813200f422888200742188684a7211e2004290000210c20022900ff13210b20022800fb13211c20022f00f913211720022d00f813212320022903f8092210422888200241800a6a31000042188684a7211b200f421888a7211f200f421088a7211d2010421888a721202010421088a72119200241e8096a41086a2903002211422088a7210d20022903e8092107200fa721212010a721222011a7210e410321030c300b200441ff0171450d04200241003a00e0150c040b200441ff0171450d03200241003a00e0150c030b200241d8116a200110e40120022802d8112208450d0220022902dc112107200241cc156a290200210c20022902c415210b20022f01e807212220022d00ea07211920022f00eb07212020022d009c10212320022f009d10211720022f01d415212120022d00d615211d20022f00d715211f20022800d915211e20022d00dd15210520022f01de152104410421034100210d4100210e0c2d0b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f813200b422888200742188684a7211b200b421888a72120200b421088a721192004280000210e200228008b14210d20022900ff13210720022800fb13210820022f00f913210a20022d00f8132109200ba72122410521030c2d0b200441ff0171450d01200241003a00e0150c010b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000210720022900d715210b200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f813200b422888200742188684a7211b200b421888a72120200b421088a721192004280000210e200228008b14210d20022900ff13210720022800fb13210820022f00f913210a20022d00f8132109200ba72122410621030c2c0b200441ff0171450d00200241003a00e0150b2000411c3602000c440b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e03000102050b200241e8046a200110820220022903e804a70d04200241f8046a290300210720022903f004210b200241c0156a200110eb0120022d00c0154105460d0420022903c0152211422088a72101200241d0156a290300210c200241c8156a290300210f200241e0156a2802002103200241d8156a29030021102011a72104410121050c030b20024180056a200110ad0120022802800522010d034104410220011b210520022802840521040c010b20024188056a200110ad0120022802880522010d024104410320011b2105200228028c0521040b0b20004112360200200041386a2007370200200041306a200b3702002000411c6a200c370200200041146a200f3702002000412c6a2003360200200041246a2010370200200041106a20013602002000410c6a2004360200200041086a2005360200200041c0006a200241f0176a41f00110e9081a0c440b2000411c3602000c430b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024020060e050001020304090b41002104200241003a00e015024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241df156a310000210b20022900c715210c20022800c315210d20022f00c115210920022d00c015210a20023500cf15210f20022800d315210e20022900d715210741002104200241003a0081162007422888200b42188684a72122200f200ead42208684210b2007421888a721212007421088a721202007a7211f0340200128020022032802042205450d02200328020022062d0000210820032005417f6a3602042003200641016a360200200241c0156a20046a20083a00002002200441016a22033a00811620032104200341c100470d000b2002200c3703d814200220223600ed14200220213b00eb14200220203a00ea142002201f3b01e8142002200b3703e014200e4110762101200e4108762120200241ef156a290000211020022900e715210f20022f00ff15211f20022800fb15211e20022800f715211d20022800e315210320022f00e115210420022d00e015210520022802dc15210620022f01da15210820022d00d915210e20022f00d715212220022900cf15210720022800cb15211c20022800c715212120023502c01520023301c41520023100c6154210868442208684420886200241f0146a31000084211120022903e8142115410121230c060b200441ff0171450d09200241003a00e0150c090b200441ff0171450d08200241003a0081160c080b41002104200241003a00d4150240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00d4152003210420034114470d000b200220022802d0153602f007200220022903c8153702e807200220022802c4153602e407200220022802c015220a3602e0072001280200220328020422044110490d0a2003280200220541086a2900002111200529000021152003200541106a3602002003200441706a360204200128020022032802042204450d0a200328020022052d0000210920032004417f6a3602042003200541016a3602004100212120090e0202010a0b200441ff0171450d09200241003a00d4150c090b2001280200220328020422044110490d082003280200220541086a290000210b200529000021072003200541106a3602002003200441706a3602042001280200220328020422044110490d082003280200220541086a290000210f2005290000210c2003200541106a3602002003200441706a36020420012802002203280204220441034d0d0820032802002205280000210620032004417c6a3602042003200541046a3602002002200c3703d0152002200b3703c815200220063602e01520022802d415210320022f01d215210420022d00d115210520022f00cb15210820022800cd15210620022d00ca15210e20022f01c815212220022903e0152110410121210b20012802002209280204220d450d07200928020022202d0000211f2009200d417f6a3602042009202041016a360200410221234102212002400240201f0e020100090b200128020022012802042209450d082001280200220d2d0000211f20012009417f6a3602042001200d41016a360200410021200240201f0e020100090b410121200b200a410876210920023500ef07200241f3076a31000042208684210b20022900e707210c20022800e307210d4100211c0c030b41002104200241003a00e01502400240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241800a6a200241df156a3100003c0000200220022900d7153703f809200220022900cf153703f009200220022900c7153703e80920022800c315210d20022f00c115210920022d00c015210a41002104200241003a0081160340200128020022032802042205450d02200328020022062d0000210820032005417f6a3602042003200641016a360200200241c0156a20046a20083a00002002200441016a22033a00811620032104200341c100470d000b200241ef156a290000211020022900e715210f20022f00ff15211f20022800fb15211e20022800f715211d20022800e315210320022f00e115210420022d00e015210520022802dc15210620022f01da15210820022d00d915210e20022f00d715212220022900cf15210720022800cb15211c20022800c715212120023502c015210b20023301c415210c20023100c615211120024190056a200110ad012002280290050d0a20012802002223280204221b2002280294052220490d0a2020417f4c0d4420200d02410121170c030b200441ff0171450d09200241003a00e0150c090b200441ff0171450d08200241003a0081160c080b202010322217450d4620012802002223280204211b0b201b2020490d0420172023280200202010e90821012023280204221b2020490d142023201b20206b3602042023202328020020206a3602002001450d06200b200c20114210868442208684420886200241800a6a3100008421112020ad220b422086200b842214422088a72118200241f0096a290300220b423088a72101200b422888a7212020022903f809211520022903e809210c2014a72119410321230c020b20024198056a200110ad012002280298050d05200128020022042802042205200228029c052203490d052003417f4c0d3f0240024020030d004101210d0c010b20031032220d450d452001280200220428020421050b20052003490d04200d2004280200200310e9082101200428020422052003490d122004200520036b3602042004200428020020036a3602002001450d052003ad2207422086200784210c410421230c010b41002104200241003a00d41502400240024002400240024002400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00d4152003210420034114470d000b20022802d015210d20022903c815210720022802c015210a20022802c415210841002104200241003a00d4152008411876210e200a411876211f200a41087621090340200128020022032802042205450d02200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00d4152003210420034114470d000b200128020022032802042204450d0220022802c415212220022802c015212020022802d015212120022903c815210b200328020022052d0000210620032004417f6a3602042003200541016a36020020060e020405030b200441ff0171450d0a200241003a00d4150c0a0b200441ff0171450d09200241003a00d4150c090b200241023a00e8090c080b200241023a00e8090c070b200241003a00e8090c010b41002104200241003a00e0150340200128020022032802042205450d03200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a410f6a2201200241c0156a410f6a290000370000200241d8116a41086a2203200241c0156a41086a290300370300200241a80e6a410f6a22042001290000370000200241a80e6a41086a22012003290300370300200241d8146a41086a22032001290300370300200241d8146a410f6a22012004290000370000200220022903c0153703d814200241df156a310000210f20022900d7152114200241f8136a410f6a22042001290000370000200241f8136a41086a2003290300370300200220022903d8143703f8132004290000211020022900ff13210c20022d00f813210120022f00f9132103200220022800fb133602ec09200220033b01ea09200220013a00e909200241013a00e8090b202041087621012002200c3700e107200241e9076a2010370000200241dc0a6a2021410874ad200b423888843e0200200220022d00ef093a00e0072002200b4208862022411876ad843702d40a200220224108742020411876723602d00a2014423888200f42ff018342088684210f202141187620022f01e80920022d00ea0941107472410874722121200dad42088620074238888442ffffffffff1f83210b200c423888201042088684a721222007420886200ead84210c2008410874201f72210d2014421888a721032014420888a721042010422088a721062010421088a721082010420888a7210e20022800eb09211c200241d00a6a41086a2903002111200228029810211d200228029c10211e20022f01a010211f20022f01a210211b20022802a410211720022802a810211920022802ac10211820022903e007210720022903d00a21152014a7210542002110410521230b200020053a00492000200e3a0042200020013b011e200020203a001d200020093b000a2000200a3a0009200041133602002000411c6a200b4220883c0000200041186a200b3e0000200041d8006a2010370200200041d0006a200f370200200041286a2011370200200041206a2015370200200041f4006a2018360200200041f0006a2019360200200041ec006a2017360200200041ea006a201b3b0100200041e8006a201f3b0100200041e4006a201e360200200041e0006a201d360200200041cc006a2003360200200041ca006a20043b0100200041c5006a2006360000200041c3006a20083b0000200041c0006a20223b0100200041386a2007370200200041346a201c360200200041306a2021360200200041106a200c3700002000410c6a200d360000200041086a20233a0000200041f8006a200241f0176a41b80110e9081a0c460b0240200441ff0171450d00200241003a00e0150b200241023a00e8090c020b2017102e0c010b200d102e0b2000411c3602000c420b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602044101210a2003200541016a360200024002400240024002400240024020060e0403000102070b200241c0156a200110eb0120022d00c0154105460d0620022903c015220b422088a72103200241d0156a290300210f200241c8156a2903002107200241e0156a2802002105200241d8156a290300210c200ba721044102210a0c020b200241c0156a200110eb0120022d00c01522044105460d05200241d8116a41086a200241d4156a290200370300200241d8116a41106a200241dc156a2802003602002002200241cc156a2902003703d811200241c0156a41086a280200210a20022802c415210302402001280200220628020422084110490d0020022d00c315210d20022f00c115210e200241e0156a28020021052006280200220941086a290000210b200929000021102006200941106a3602002006200841706a3602042001280200220628020422084110490d002006280200220941086a2900002111200929000021152006200941106a3602002006200841706a3602042001280200220128020422064104490d0020012802002209280000210820012006417c6a3602042001200941046a360200200241ec076a200241d8116a41086a290300370200200241f4076a200241d8116a41106a2802003602002002200a3602e007200220022903d8113702e407200e200d411074724108742004722104200241e0076a41086a290300210f20022903e007210720022903f007210c420021124103210a420021250c020b20044102470d05200a0d040c050b200241c0156a200110eb0120022d00c0154105460d04200241c0156a41106a2208290300210f200241e0156a220a2802002105200241d8156a2209290300210c200241c8156a2206290300210720022802c415210320022802c0152104200241c0156a200110eb0120022d00c0154105460d022006290300210b20022802c415210e20022802c015210d2001280200220628020422224110490d0120082903002115200a2802002108200929030021112006280200220a41086a2900002114200a29000021102006200a41106a3602002006202241706a36020420012802002206280204220a4110490d012006280200220941086a2900002113200929000021282006200941106a3602002006200a41706a3602044104210a2001280200220128020422064104490d0120012802002209280000212220012006417c6a3602042001200941046a360200200220223602d0152014422086201042208884212520104220862112200ead422086200dad842110200220283703c01520022802c415210d20022903d01521262028a721090b20004114360200200041f8006a2026370200200041f0006a2013370200200041dc006a20253e0200200041d4006a2012370200200041c0006a2015370200200041386a200b3702002000411c6a200f370200200041146a2007370200200041ec006a200d360200200041e8006a2009360200200041e0006a2014370200200041d0006a2008360200200041c8006a2011370200200041306a20103702002000412c6a2005360200200041246a200c370200200041086a200a3602002000410c6a2003ad4220862004ad8437020020004180016a200241f0176a41b00110e9081a0c450b200d41ff01714102470d00200ba7450d00200e102e0b200441ff01714102470d012007a7450d010b2003102e0b2000411c3602000c410b200241c0156a200110cd06024020022f01c0154104460d00200241e0076a41086a200241c0156a41086a2903002207370300200220022903c015220b3703e007200041153602002000200b3702042000410c6a2007370200200041146a200241f0176a419c0210e9081a0c410b2000411c3602000c400b200128020022032802042204450d24200328020022052d0000210620032004417f6a3602042003200541016a3602004104210a0240024020060e0f00012425232221201f1e1d1c1b1a19260b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241900d6a41086a200241e8096a41086a2800003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41106a200241e0076a41106a290000370300200241c80d6a41086a200241e0076a41086a290000370300200220022900e8093703900d200220022f0098133b018c0d200220022900e0073703c80d200241df156a310000210c20022900d715210b20022900c715210720022800c315210820022f00c115212a20022d00c015212c20023500cf15210f20023500d3152110200241880d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290000370300200241a00d6a41086a200241d8116a41086a290000370300200220022900d8113703a00d200241840d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01840d200241e80c6a41106a20024198106a41106a290000370300200241e80c6a41086a20024198106a41086a29000037030020022002290098103703e80c200241e40c6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290000370300200241c80c6a41086a200241a80e6a41086a290000370300200220022900a80e3703c80c200241d8146a41206a200241f0176a41206a280000360200200241d8146a41186a200241f0176a41186a290000370300200241d8146a41106a200241f0176a41106a290000370300200241d8146a41086a200241f0176a41086a290000370300200220022900f0173703d814201042208622104280808080806083200f20104280808080f01f838484210f4101210a0c250b200441ff0171450d25200241003a00e0150c250b200241a0056a200110ad0120022802a0050d2420022802a4052205200128020028020441c8006e2203200320054b1bad42c8007e2207422088a70d362007a72203417f4c0d360240024020030d00410421080c010b2003102c2208450d3c0b2001200128020441016a2204360204200341c8006ead210702400240024002400240024002400240024002400240200420012802084b0d00024002402005450d00200241c0156a410c6a211f200241c0156a410172211c0340200241c0156a200110ed0302400240024020022d00c01522044106460d00200241f8136a41026a220a201c41026a2d00003a0000200241e8096a41086a2209201f41086a290200370300200241e8096a41106a220d201f41106a2902003703002002201c2f00003b01f8132002201f2902003703e80920022802c415210620022802c8152103200241f0176a200110ed0320022d00f0174106470d0120044101470d002003450d002006102e0b410621040c010b200241b4146a41026a200a2d00003a000020024198136a41086a200929030037030020024198136a41106a200d290300370300200241e0076a41086a200241f0176a41086a290300370300200241e0076a41106a200241f0176a41106a290300370300200241e0076a41186a200241f0176a41186a290300370300200241e0076a41206a200241f0176a41206a280200360200200220022f01f8133b01b414200220022903e80937039813200220022903f0173703e0072003211e2006211d0b200241b0146a41026a2203200241b4146a41026a2d00003a0000200241e80f6a41086a220620024198136a41086a290300370300200241e80f6a41106a220a20024198136a41106a290300370300200241d8116a41086a2209200241e0076a41086a290300370300200241d8116a41106a220d200241e0076a41106a290300370300200241d8116a41186a220e200241e0076a41186a290300370300200241d8116a41206a2222200241e0076a41206a280200360200200220022f01b4143b01b01420022002290398133703e80f200220022903e0073703d81120044106460d03200241ac146a41026a222120032d00003a0000200241f80d6a41086a22202006290300370300200241f80d6a41106a2206200a29030037030020024198106a41086a220a200929030037030020024198106a41106a2209200d29030037030020024198106a41186a220d200e29030037030020024198106a41206a220e2022280200360200200220022f01b0143b01ac14200220022903e80f3703f80d200220022903d8113703981002402007422088220ba722032007a7470d00200341016a22222003490d4520034101742217202220222017491b22224104202241044b1bad42c8007e220b422088a7454102742122200ba721170240024020030d00200241003602f0170c010b200241043602f817200220083602f0172002200341c8006c3602f4170b200241c0156a20172022200241f0176a107d20022802c815212220022802c0154101460d0320022802c41521082007422088220ba72103202241c8006ead21070b2008200341c8006c6a220320043a0000200341086a201e360000200341046a201d360000200341036a20212d00003a0000200320022f01ac143b00012003410c6a20022903f80d370000200341146a20202903003700002003411c6a2006290300370000200341346a20092903003700002003412c6a200a2903003700002003413c6a200d290300370000200341246a200229039810370000200341c4006a200e280200360000200b422086200742ffffffff0f83844280808080107c21072005417f6a22050d000b200128020421040b20012004417f6a3602042008450d30200241f0176a200110ed0320022d00f0174106460d0a20024180186a310000210c20024190186a220a350200210f20024188186a2209290300211420024184186a220d280200210320024182186a2f0100210420024181186a2d00002105200241f0176a41086a220e290300210b20022802f417212a20022802f0172106200241f0176a200110ed0320022d00f0174106460d09200241e8096a41086a200a280200360200200220092903003703e809200d280200210d200241fc176a220a2902002110200e280200212d20022802f417212e20022802f017212c200241f0176a200110ed0320022d00f01722094106460d08200241f8136a41026a20022d00f3173a000020024198106a41086a20024184186a222029020037030020024198106a41106a2002418c186a221f290200370300200220022f00f1173b01f8132002200a29020037039810200241f0176a41086a220a280200210e20022802f4172122200241f0176a200110ed0320022d00f01722214106460d07200241f80d6a41026a20022d00f3173a0000200241d8116a41086a2020290200370300200241d8116a41106a201f290200370300200220022f00f1173b01f80d2002200241fc176a221d2902003703d811200a280200212020022802f417211f200241f0176a200110ed0320022d00f017221e4106460d06200241ea0f6a20022d00f3173a0000200241e0076a41086a20024184186a290200370300200241f0076a2002418c186a290200370300200220022f00f1173b01e80f2002201d2902003703e007200241f0176a41086a280200211d20022802f417211c2001280200220a2802042217450d05200a28020022232d00002118200a2017417f6a360204200a202341016a3602004100212f420021114100212320180e020302050b20220d460c410b02402007422088a72201450d002008200141c8006c6a2103200821010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200141c8006a22012003470d000b0b2007a72201450d2e200141c8006c450d2e2008102e0c2e0b41002117200241003a00841803402001280200220a2802042223450d02200241f0176a20176a200a280200221b2d00003a0000200a2023417f6a360204200a201b41016a3602002002201741016a220a3a008418200a2117200a4114470d000b20022802f417220a41087420022802f0172217411876722119200a41187621302017410876211b200228028018212f20022903f8172111410121230b200241f0176a200110ed0320022d00f01722184106460d014102210a20024198136a41026a222420022d00f3173a0000200241c0156a41086a222720024184186a290200370300200241c0156a41106a22312002418c186a290200370300200220022f00f1173b0198132002200241fc176a2902003703c015200241f0176a41086a2232280200211a20022802f4172116200241f0176a200110ed0320022d00f0174106470d0720184101470d01201a450d012016102e0c010b201741ff0171450d00200241003a0084180b201e4101470d00201d450d00201c102e0b20214101470d002020450d00201f102e0b20094101470d00200e450d002022102e0b202c41ff01714101470d00202d450d00202e102e0b200641ff01714101470d00200ba7450d00202a102e0b02402007422088a72201450d002008200141c8006c6a2103200821010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200141c8006a22012003470d000b0b2007a72201450d25200141c8006c450d252008102e0c250b200241a80e6a41206a2201200241f0176a41206a280200360200200241a80e6a41186a2233200241f0176a41186a290300370300200241a80e6a41106a2234200241f0176a41106a290300370300200241a80e6a41086a22352032290300370300200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a200241f8136a41026a2d00003a0000200220022903f0173703a80e200220022903e8093703900d200220022f01f8133b018c0d200241c80d6a41106a20024198106a41106a290300370300200241c80d6a41086a20024198106a41086a29030037030020022002290398103703c80d200241880d6a41026a200241f80d6a41026a2d00003a0000200220022f01f80d3b01880d200241a00d6a41106a200241d8116a41106a290300370300200241a00d6a41086a200241d8116a41086a290300370300200220022903d8113703a00d200241840d6a41026a200241e80f6a41026a2d00003a0000200220022f01e80f3b01840d200241e80c6a41106a200241e0076a41106a290300370300200241e80c6a41086a200241e0076a41086a290300370300200220022903e0073703e80c200241e40c6a41026a20242d00003a0000200220022f0198133b01e40c200241c80c6a41106a2031290300370300200241c80c6a41086a2027290300370300200220022903c0153703c80c200241d8146a41206a2001280200360200200241d8146a41186a2033290300370300200241d8146a41106a2034290300370300200241d8146a41086a2035290300370300200220022903a80e3703d81420114208862030ad42ff0183842113202fad42088620114238888442ffffffffff1f832112202dad422086202ead842111202cad422086200f842115202aad4220862006ad84210f0c230b2004200641b8b2c0001056000b2004200641b8b2c0001056000b2004200641b8b2c0001056000b2004200841b8b2c0001056000b2004200641b8b2c0001056000b2003200641b8b2c0001056000b2003200841b8b2c0001056000b2003200641b8b2c0001056000b2003200641b8b2c0001056000b2003200541b8b2c0001056000b2020201b41b8b2c0001056000b2004200641b8b2c0001056000b2003200d41b8b2c0001056000b2006203241b8b2c0001056000b2004200841b8b2c0001056000b2003200a41b8b2c0001056000b2003200641b8b2c0001056000b2000411c3602000c2d0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241d8116a200110950620022802d811450d0020024198106a200241d8116a41c00110e9081a200241003a00881202402001280200220328020422044110490d002003280200220541086a29000021072005290000210b2003200541106a3602002003200441706a360204200241013a0088122002200b3703d811200220073703e0110240200128020022032802042204410f4d0d002003280200220541086a29000021072005290000210b2003200541106a3602002003200441706a360204200241d8116a41186a22042007370300200241023a0088122002200b3703e8112001280200220328020422054110490d002003280200220641086a29000021072006290000210b2003200641106a360200200241d8116a41286a20073703002003200541706a360204200241033a0088122002200b3703f811200241d00a6a41086a200241d8116a41086a290300220c370300200241d00a6a41106a200241d8116a41106a290300220f370300200241d00a6a41186a20042903002210370300200241d00a6a41206a200b370300200241d00a6a41286a2007370300200220022903d81122113703d00a200241e8096a41286a22032007370300200241e8096a41206a2204200b370300200241e8096a41186a22052010370300200241e8096a41106a2206200f370300200241e8096a41086a2208200c370300200220113703e80920024198136a41286a220a200329030037030020024198136a41206a2209200429030037030020024198136a41186a200529030037030020024198136a41106a200629030037030020024198136a41086a22042008290300370300200220022903e809370398132001280200220328020422054104490d0120032802002206280000210820032005417c6a3602042003200641046a3602002002280298102103200241a80e6a20024198106a41047241bc0110e9081a200241e80f6a41286a200a290300370300200241e80f6a41206a2009290300370300200241e80f6a41186a220520024198136a41186a290300370300200241e80f6a41106a220620024198136a41106a290300370300200241e80f6a41086a200429030037030020022002290398133703e80f2003450d02200241f0176a41286a200241e80f6a41286a290300370300200241f0176a41206a200241e80f6a41206a290300370300200241f0176a41186a2005290300370300200241f0176a41106a2006290300370300200241f0176a41086a200241e80f6a41086a290300370300200220022903e80f3703f017200220033602a018200241a4186a200241a80e6a41bc0110e9082104200220083602e019200241d8076a200110ad010240024020022802d8070d0020022802dc072105200241d0076a200110ad0120022802d007450d010b200241a0186a109b060c030b20022802d4072101200241f80d6a41286a2206200241f0176a41286a290300370300200241f80d6a41206a2208200241f0176a41206a290300370300200241f80d6a41186a220a200241f0176a41186a290300370300200241f80d6a41106a2209200241f0176a41106a290300370300200241f80d6a41086a220d200241f0176a41086a290300370300200220022903f0173703f80d200241c0156a200441c40110e9081a200241c80d6a41086a2204200d290300370300200241c80d6a41106a220d2009290300370300200241c80d6a41186a2209200a290300370300200241c80d6a41206a220a2008290300370300200241c80d6a41286a22082006290300370300200220022903f80d3703c80d200241e0076a200241c0156a41c40110e9081a200241d8146a412c6a2008290300370200200241d8146a41246a200a290300370200200241d8146a411c6a2009290300370200200241d8146a41146a200d290300370200200241d8146a410c6a2004290300370200200220022903c80d3702dc142000411b360200200020022902d8143702042000410c6a200241d8146a41086a290200370200200041146a200241d8146a41106a2902003702002000411c6a200241d8146a41186a290200370200200041246a200241d8146a41206a2902003702002000412c6a200241d8146a41286a290200370200200041346a20024188156a280200360200200041386a20033602002000413c6a200241e0076a41c40110e9081a20004184026a200136020020004180026a200536020020004188026a20022903a00d37030020004190026a200241a00d6a41086a29030037030020004198026a200241a00d6a41106a290300370300200041a0026a200241a00d6a41186a290300370300200041a8026a200241a00d6a41206a2903003703000c2f0b200241003a0088120b20024198106a109b060b2000411c3602000c2c0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024020060e060001020304050c0b20024190076a200110ad012002280290070d0b2001280200220528020422062002280294072204490d0b2004417f4c0d2e0240024020040d00410121030c010b200410322203450d342001280200220528020421060b20062004490d0a20032005280200200410e9082106200528020422082004490d082005200820046b3602042005200528020020046a3602002006450d0b41002105200241003a00e0152004ad22074220862007842207422088a7210d2007a7210902400340200128020022042802042206450d01200241c0156a20056a200428020022082d00003a000020042006417f6a3602042004200841016a3602002002200541016a22043a00e0152004210520044120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2204200241c0156a41086a290300370300200241d8116a410f6a22052001290000370000200241d8116a41086a22012004290300370300200241d8146a41086a22042001290300370300200241d8146a410f6a22012005290000370000200220022903c0153703d814200241df156a310000210c20022900d715210b200241f8136a410f6a22052001290000370000200241f8136a41086a2004290300370300200220022903d8143703f81320052800002108200228008b14210a20022900ff13210720022800fb13210420022f00f913210520022d00f8132106200242003703a0102002200d36029c102002200936029810200b422888200c42188684a72109200b421888a7210d200b421088a7210e200ba72122410121210c070b0240200541ff0171450d00200241003a00e0150b2009450d0b0c0a0b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20024198106a41086a200241e0076a41086a29000037030020024198106a41106a200241e0076a41106a290000370300200220022900e00737039810200241cf156a290000220b422088a7210a20022900c715210720022802dc15210920022f01da15210d20022d00d915210e20022f00d715212220022800c315210420022f00c115210520022d00c0152106200ba72108410221210c050b200441ff0171450d0a200241003a00e0150c0a0b200241b0076a200110ad0120022802b0070d0920012802002205280204220620022802b4072204490d092004417f4c0d2c0240024020040d00410121030c010b200410322203450d322001280200220528020421060b20062004490d0820032005280200200410e9082106200528020422082004490d072005200820046b3602042005200528020020046a3602002006450d092004ad2207422086200784210b41002105200241003a00e015024002400340200128020022042802042206450d01200241c0156a20056a200428020022082d00003a000020042006417f6a3602042004200841016a3602002002200541016a22043a00e0152004210520044120470d000b200241e0076a410f6a2204200241c0156a410f6a290000370000200241e0076a41086a2205200241c0156a41086a290300370300200241d8116a410f6a22062004290000370000200241d8116a41086a22042005290300370300200241d00a6a41086a22052004290300370300200241d00a6a410f6a22042006290000370000200220022903c0153703d00a200241df156a310000210f20022900d715210c200241f8136a410f6a22062004290000370000200241f8136a41086a2005290300370300200220022903d00a3703f81320062800002108200228008b14210a20022900ff13210720022800fb13210420022f00f913210520022d00f813210620024198076a2001108202200229039807a70d01200c422888200f42188684a72109200c421888a7210d200c421088a7210e200ca7212220022903a007210c20024198106a41106a20024198076a41106a2903003703002002200b370398102002200c3703a010410321210c060b200541ff0171450d00200241003a00e0150b200ba70d080c090b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241d8116a41086a2203200241cf156a290000370300200241d8116a41106a2208200241d7156a290000370300200241d8116a41186a220a200241df156a2d00003a0000200220022900c71522073703e007200220073703d81120022d00c015210620022f00c115210520022800c3152104200241e8096a41186a2209200a2d00003a0000200241e8096a41106a2008290300370300200241e8096a41086a22082003290300370300200220022903d8113703e809200241b8076a200110820220022903b807a70d09200241b8076a41106a2903002107200220022903c00737039810200220073703a01020022903f809220b422888200931000042188684a72109200b421888a7210d200b421088a7210e2008290300220c422088a7210a20022903e8092107200ba72122200ca72108410421210c030b200441ff0171450d08200241003a00e0150c080b41002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20024198106a41086a200241e0076a41086a29000037030020024198106a41106a200241e0076a41106a290000370300200220022900e0073703981020022900d715220b422888200241df156a31000042188684a72109200b421888a7210d200b421088a7210e20022800d315210a20022800cf15210820022900c715210720022800c315210420022f00c115210520022d00c0152106200ba72122410521210c020b200441ff0171450d07200241003a00e0150c070b41002104200241003a00e0150340200128020022032802042205450d03200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b20024198106a41086a200241e0076a41086a29000037030020024198106a41106a200241e0076a41106a290000370300200220022900e0073703981020022900d715220b422888200241df156a31000042188684a72109200b421888a7210d200b421088a7210e200241cf156a290000220c422088a7210a20022900c715210720022800c315210420022f00c115210520022d00c0152106200ba72122200ca72108410621210b0b200241a80e6a41106a220120024198106a41106a290300370300200241a80e6a41086a20024198106a41086a290300220b3703002002200229039810220c3703a80e200041186a200aad4220862008ad84370000200041106a20073700002000412c6a2003360000200020093600252000200d3b00232000200e3a0022200041206a20223b00002000410c6a2004360000200020053b000a200020063a0009200041086a20213a00002000411a360200200041306a200c370200200041386a200b370200200041c0006a2001290300370200200041c8006a200241f0176a41e80110e9081a0c300b200441ff0171450d03200241003a00e0150c030b2004200841b8b2c0001056000b2004200841b8b2c0001056000b2003102e0b2000411c3602000c2b0b02400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024002400240024002400240024020060e090001020304050608070d0b20024198066a2001108202200229039806a70d0c200241a8066a290300210b20022903a006210720024190066a200110ad012002280290060d0c2001280200220528020422062002280294062204490d0c2004417f4c0d2f0240024020040d00410121030c010b200410322203450d352001280200220528020421060b20062004490d0b20032005280200200410e9082101200528020422062004490d0d2005200620046b3602042005200528020020046a3602002001450d0c2004ad220c422086200c84220c422088210f200ca72104410121010c090b200241b0066a200110ad0120022802b00622010d0b410a410220011b21014200210f20022802b40621030c070b200241d0066a200110ad0120022802d0060d0a20022802d4062103200241c0156a200110eb0120022d00c0154105460d0a200241c0156a41106a290300210b200241c8156a2903002107200241e0156a2802002105200241d8156a290300210c20022802c415210620022802c0152104200241b8066a2001108202024020022903b806a70d00200241b8066a41106a290300211120022903c00621102006ad210f410321010c090b200441ff01714102470d0a2007a7450d0a2006102e0c0a0b200241d8066a200110ad0120022802d80622010d09410a410420011b21014200210f20022802dc0621030c050b200241e0066a200110ad0120022802e00622010d08410a410520011b21014200210f20022802e40621030c040b200241e8066a200110ad0120022802e8060d0720022802ec062103200241c0156a200110eb0120022d00c0154105460d0720022903c0152210422088210f200241d0156a290300210b200241c8156a2903002107200241e0156a2802002105200241d8156a290300210c2010a721044200211041062101420021110c050b200241f0066a200110ad0120022802f00622010d06410a410720011b21014200210f20022802f40621030c020b20024188076a200110ad012002280288070d05200228028c07210320024180076a200110ad012002280280070d052001280200220628020422082002280284072205490d052005417f4c0d280240024020050d00410121040c010b200510322204450d2e2001280200220628020421080b0240024020082005490d0020042006280200200510e90821012006280204220820054f0d012005200841b8b2c0001056000b2004102e0c060b2006200820056b3602042006200628020020056a3602002001450d052005ad2207422086200784220f42208821074200210b410921010c020b200241f8066a200110ad0120022802f80622010d04410a410820011b21014200210f20022802fc0621030b0b0b20004119360200200041c0006a2011370200200041386a2010370200200041206a200b370200200041186a2007370200200041306a2005360200200041286a200c3702002000410c6a2003360200200041086a2001360200200041106a200f4220862004ad84370200200041c8006a200241f0176a41e80110e9081a0c2d0b2003102e0b2000411c3602000c2b0b2004200641b8b2c0001056000b024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024020060e0400010203080b200241d8116a200110e40120022802d8112203450d0720022902dc11210b0240200110cc042204450d0020022902d815220c42808080807083210f20022902d0152207428080808070832110200241ec076a310000211120022902e407211520022802cc15210e20022802c8152109200228009b10210820022f009910210a2007a7210d410121010c0a0b200b42ffffff3f8350450d060c070b2001280200220328020422044102490d06200328020022062f0000210520032004417e6a3602042003200641026a360200200241c0156a200110e40120022802c0152203450d0620022902c415210b200241c0156a200110fd0520022802c01522044102460d04200241c8156a280200210a20022802c415210620024188066a200110ad012002280288060d0420012802002209280204220d200228028c062208490d042008417f4c0d290240024020080d004101210e0c010b20081032220e450d2f20012802002209280204210d0b200d2008490d03200e2009280200200810e908210d200928020422222008490d072009202220086b3602042009200928020020086a360200200d450d042008ad2207422086200784210c200128020022082802042209450d02200828020022222d0000212120082009417f6a3602042008202241016a360200410021220240024020210e020100040b410121220b2001280200220128020422094108490d02200c422088a721082001280200220e29000021072001200941786a3602042001200e41086a360200200c422086200dad84220f4220882111200f422086200aad842115200c421088a7210a200c420888a72121410221014100210d4200210c4200210f420021100c080b2001280200220328020422044102490d05200328020022052f0000210a20032004417e6a3602042003200541026a360200200241c0156a200110e40120022802c0152208450d0520022902c4152107200241c0156a200110fd05024020022802c0154102460d00200241c8156a280200210d20022903c015211041002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b2001280200220128020422094108490d01200241df156a310000211120022900d715211520022900c715210b20022800c315210320022f00c115210520022d00c0152122200241cf156a290000220c422088a72106200ca721042001280200220e290000210c2001200941786a3602042001200e41086a360200200c42808080807083210f2010422088a7210e2010a7210941032101420021100c090b200441ff0171450d00200241003a00e0150b200742ffffff3f83500d052008102e0c050b2001280200220328020422044102490d04200328020022052f0000210a20032004417e6a3602042003200541026a360200200241c0156a200110e40120022802c0152208450d0420022902c415210702402001280200220328020422044104490d0020032802002205280000210920032004417c6a3602042003200541046a3602002001280200220328020422044104490d0020032802002205280000210e20032004417c6a3602042003200541046a36020041002104200241003a00e01502400340200128020022032802042205450d01200241c0156a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00e0152003210420034120470d000b200241e0076a410f6a2201200241c0156a410f6a290000370000200241e0076a41086a2203200241c0156a41086a290300370300200241d8116a410f6a22042001290000370000200241d8116a41086a2201200329030037030020024198106a41086a2203200129030037030020024198106a410f6a22012004290000370000200220022903c01537039810200241df156a310000211120022900d7152115200241f8136a410f6a22042001290000370000200241f8136a41086a200329030037030020022002290398103703f81320042800002104200228008b14210620022900ff13210b20022800fb13210320022f00f913210520022d00f8132122410421014100210d4200210c4200210f420021100c080b200441ff0171450d00200241003a00e0150b200742ffffff3f83500d042008102e0c040b200ca7450d010b200e102e0b200b42ffffff3f83500d010b2003102e0b2000411c3602000c2b0b2008202241b8b2c0001056000b200020213a0029200020223a000920004118360200200041286a20113c0000200041206a20153702002000413c6a200e360200200041386a2009360200200041306a20073702002000412c6a20083602002000412a6a200a3b01002000411c6a2006360200200041186a2004360200200041106a200b3702002000410c6a20033602002000410a6a20053b0100200041086a20013a0000200041c8006a200f200c42ffffffff0f8384370200200041c0006a2010200dad84370200200041d0006a200241f0176a41e00110e9081a0c290b200241c0156a200110bc03024020022d00c015410b460d00200241e0076a200241c0156a41c80010e9081a20004117360200200041046a200241e0076a41c80010e9081a200041cc006a200241f0176a41e40110e9081a0c290b2000411c3602000c280b410f210a0c0b0b200241f0176a200110eb0120022d00f0174105460d0b200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200220022902e8093703900d200220022f0098133b018c0d200220022902e0073703c80d2002418c186a310000210c20024184186a290200210b200241fc176a290200210f200241f0176a41206a28020021032002418e186a2f010021042002418d186a2d0000210520022902f417210720022802f0172108200241880d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200220022902d8113703a00d200241840d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01840d200241e80c6a41106a20024198106a41106a290200370300200241e80c6a41086a20024198106a41086a29020037030020022002290298103703e80c200241e40c6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200220022902a80e3703c80c200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902c0153703d814410e210a0c0a0b200241f0176a200110eb0120022d00f0174105460d0a2002418c186a310000210c20024184186a290200210b200241f0176a41206a220928020021032002418e186a2f010021042002418d186a2d00002105200241fc176a290200210f200241f0176a41086a220e280200210620022802f417210a20022802f0172108200241f0176a200110ed03024020022d00f0174106460d00200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200220022902e8093703900d200220022f0098133b018c0d200220022902e0073703c80d200241f0176a41186a2903002110200241f0176a41106a29030021112009280200210d200e290300211520022903f0172114200241880d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200220022902d8113703a00d200241840d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01840d200241e80c6a41106a20024198106a41106a290200370300200241e80c6a41086a20024198106a41086a29020037030020022002290298103703e80c200241e40c6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200220022902a80e3703c80c200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902c0153703d8142006ad422086200aad842107410d210a0c0a0b200841ff01714102470d0a2006450d0a200a102e0c0a0b200241f0176a200110eb0120022d00f0174105460d092002418c186a310000210c20024184186a290200210b200241f0176a41206a220d28020021032002418e186a2f010021042002418d186a2d00002105410c210a200241f0176a410c6a290200210f200241f0176a41086a220e280200210620022802f417210920022802f0172108200241f0176a200110ed03024020022d00f0174106460d00200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200220022902e8093703900d200220022f0098133b018c0d200220022902e0073703c80d200241f0176a41186a2903002110200241f0176a41106a2903002111200d280200210d200e290300211520022903f0172114200241880d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200220022902d8113703a00d200241840d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01840d200241e80c6a41106a20024198106a41106a290200370300200241e80c6a41086a20024198106a41086a29020037030020022002290298103703e80c200241e40c6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200220022902a80e3703c80c200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902c0153703d8142006ad4220862009ad8421070c090b200841ff01714102470d092006450d092009102e0c090b200241f0176a200110eb0120022d00f0174105460d08200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200220022902e8093703900d200220022f0098133b018c0d200220022902e0073703c80d2002418c186a310000210c20024184186a290200210b200241fc176a290200210f200241f0176a41206a28020021032002418e186a2f010021042002418d186a2d0000210520022902f417210720022802f0172108200241880d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200220022902d8113703a00d200241840d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01840d200241e80c6a41106a20024198106a41106a290200370300200241e80c6a41086a20024198106a41086a29020037030020022002290298103703e80c200241e40c6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200220022902a80e3703c80c200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902c0153703d814410b210a0c070b20024180066a200110ad012002280280060d072002280284062108200241f0176a200110eb0120022d00f0174105460d07200241f8176a280200210920022802f417210d20022802f017210a0240024020012802002206280204220e450d0020024188186a310000210c20024180186a290300210b20024190186a35020021142002418c186a28020021032002418a186a2f0100210420024189186a2d00002105200241fc176a3502002107200628020022222d000021212006200e417f6a3602042006202241016a3602004200211502400240024002400240024020210e0707000102030405060b2001280200220128020422064110490d052001280200220e41086a2900002110200e29000021112001200e41106a3602002001200641706a360204420121150c060b420221150c050b420321150c040b420421150c030b420521150c020b420621150c010b200a41ff01714102470d082009450d08200d102e0c080b200241900d6a41086a200241e8096a41086a2802003602002002418c0d6a41026a20024198136a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200241880d6a41026a200241e80f6a41026a2d00003a0000200220022902e8093703900d200220022f0098133b018c0d200220022902e0073703c80d200220022f00e80f3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200241840d6a41026a200241f80d6a41026a2d00003a0000200241e80c6a41086a20024198106a41086a290200370300200241e80c6a41106a20024198106a41106a290200370300200241e40c6a41026a200241f8136a41026a2d00003a0000200220022902d8113703a00d200220022f00f80d3b01840d20022002290298103703e80c200220022f00f8133b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902a80e3703c80c200220022902c0153703d81420074220862009ad84210f200dad422086200aad842107410a210a0c060b200241f8056a200110ad0120022802f8050d062001280200220128020422034108490d0620022802fc0521082001280200220429000021072001200341786a3602042001200441086a360200200742ff01560d06200241900d6a41086a200241a80e6a41086a2802003602002002418c0d6a41026a200241e8096a41026a2d00003a0000200241c80d6a41086a200241c0156a41086a290200370300200241c80d6a41106a200241c0156a41106a290200370300200241880d6a41026a20024198136a41026a2d00003a0000200220022902a80e3703900d200220022f00e8093b018c0d200220022902c0153703c80d200220022f0098133b01880d200241a00d6a41106a200241e0076a41106a290200370300200241a00d6a41086a200241e0076a41086a290200370300200241840d6a41026a200241e80f6a41026a2d00003a0000200241e80c6a41086a200241d8116a41086a290200370300200241e80c6a41106a200241d8116a41106a290200370300200241e40c6a41026a200241f80d6a41026a2d00003a0000200220022902e0073703a00d200220022f00e80f3b01840d200220022902d8113703e80c200220022f00f80d3b01e40c200241c80c6a41106a20024198106a41106a290200370300200241c80c6a41086a20024198106a41086a290200370300200241d8146a41206a200241f0176a41206a280200360200200241d8146a41186a200241f0176a41186a290200370300200241d8146a41106a200241f0176a41106a290200370300200241d8146a41086a200241f0176a41086a29020037030020022002290298103703c80c200220022902f0173703d814200742ff018321074109210a0c050b200241f0056a200110ad0120022802f0050d0520022802f405210341002105200241003a00e01502400340200128020022042802042206450d01200241c0156a20056a200428020022082d00003a000020042006417f6a3602042004200841016a3602002002200541016a22043a00e0152004210520044120470d000b200241e8096a41186a200241df156a310000220c3c00004108210a200241900d6a41086a20024198136a41086a2802003602002002418c0d6a41026a200241e80f6a41026a2d00003a0000200220022900cf15220f3703f009200220022900c71522073703e809200220022900d715220b3703f80920022002290298133703900d200220022f00e80f3b018c0d20022800c315210820022f00c115212a20022d00c015212c200241c80d6a41106a200241e0076a41106a290200370300200241c80d6a41086a200241e0076a41086a290200370300200220022902e0073703c80d200241880d6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200220022902d8113703a00d200241840d6a41026a200241f8136a41026a2d00003a0000200220022f00f8133b01840d200241e80c6a41106a20024198106a41106a290200370300200241e80c6a41086a20024198106a41086a29020037030020022002290298103703e80c200241e40c6a41026a200241b4146a41026a2d00003a0000200220022f00b4143b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200220022902a80e3703c80c200241d8146a41206a200241f0176a41206a280200360200200241d8146a41186a200241f0176a41186a290200370300200241d8146a41106a200241f0176a41106a290200370300200241d8146a41086a200241f0176a41086a290200370300200220022902f0173703d8140c050b200541ff0171450d05200241003a00e0150c050b200241e8056a200110ad0120022802e8050d0420022802ec052108200241d0056a200110820220022903d005a70d04200241d0056a41106a290300210f20022903d8052107200241900d6a41086a200241a80e6a41086a2802003602002002418c0d6a41026a200241e8096a41026a2d00003a0000200241c80d6a41086a200241c0156a41086a290200370300200241c80d6a41106a200241c0156a41106a290200370300200241880d6a41026a20024198136a41026a2d00003a0000200220022902a80e3703900d200220022f00e8093b018c0d200220022902c0153703c80d200220022f0098133b01880d200241a00d6a41106a200241e0076a41106a290200370300200241a00d6a41086a200241e0076a41086a290200370300200241840d6a41026a200241e80f6a41026a2d00003a0000200241e80c6a41086a200241d8116a41086a290200370300200241e80c6a41106a200241d8116a41106a290200370300200241e40c6a41026a200241f80d6a41026a2d00003a0000200220022902e0073703a00d200220022f00e80f3b01840d200220022902d8113703e80c200220022f00f80d3b01e40c200241c80c6a41106a20024198106a41106a290200370300200241c80c6a41086a20024198106a41086a290200370300200241d8146a41206a200241f0176a41206a280200360200200241d8146a41186a200241f0176a41186a290200370300200241d8146a41106a200241f0176a41106a290200370300200241d8146a41086a200241f0176a41086a29020037030020022002290298103703c80c200220022902f0173703d8144107210a0c030b2001280200220128020422034104490d0320012802002204280000210820012003417c6a3602042001200441046a360200200241900d6a41086a200241a80e6a41086a2802003602002002418c0d6a41026a200241e8096a41026a2d00003a0000200241c80d6a41086a200241c0156a41086a290200370300200241c80d6a41106a200241c0156a41106a290200370300200220022902a80e3703900d200220022f00e8093b018c0d200220022902c0153703c80d200241880d6a41026a20024198136a41026a2d00003a0000200220022f0098133b01880d200241a00d6a41106a200241e0076a41106a290200370300200241a00d6a41086a200241e0076a41086a290200370300200220022902e0073703a00d200241840d6a41026a200241e80f6a41026a2d00003a0000200220022f00e80f3b01840d200241e80c6a41106a200241d8116a41106a290200370300200241e80c6a41086a200241d8116a41086a290200370300200220022902d8113703e80c200241e40c6a41026a200241f80d6a41026a2d00003a0000200220022f00f80d3b01e40c200241c80c6a41106a20024198106a41106a290200370300200241c80c6a41086a20024198106a41086a29020037030020022002290298103703c80c200241d8146a41206a200241f0176a41206a280200360200200241d8146a41186a200241f0176a41186a290200370300200241d8146a41106a200241f0176a41106a290200370300200241d8146a41086a200241f0176a41086a290200370300200220022902f0173703d8144106210a4200210f0c020b200241c8056a200110ad0120022802c8050d0220022802cc052108200241b0056a200110820220022903b005a70d02200241b0056a41106a290300210f20022903b8052107200241900d6a41086a200241a80e6a41086a2802003602002002418c0d6a41026a200241e8096a41026a2d00003a0000200241c80d6a41086a200241c0156a41086a290200370300200241c80d6a41106a200241c0156a41106a290200370300200241880d6a41026a20024198136a41026a2d00003a0000200220022902a80e3703900d200220022f00e8093b018c0d200220022902c0153703c80d200220022f0098133b01880d200241a00d6a41106a200241e0076a41106a290200370300200241a00d6a41086a200241e0076a41086a290200370300200241840d6a41026a200241e80f6a41026a2d00003a0000200241e80c6a41086a200241d8116a41086a290200370300200241e80c6a41106a200241d8116a41106a290200370300200241e40c6a41026a200241f80d6a41026a2d00003a0000200220022902e0073703a00d200220022f00e80f3b01840d200220022902d8113703e80c200220022f00f80d3b01e40c200241c80c6a41106a20024198106a41106a290200370300200241c80c6a41086a20024198106a41086a290200370300200241d8146a41206a200241f0176a41206a280200360200200241d8146a41186a200241f0176a41186a290200370300200241d8146a41106a200241f0176a41106a290200370300200241d8146a41086a200241f0176a41086a29020037030020022002290298103703c80c200220022902f0173703d8144105210a0c010b200241a8056a200110ad0120022802a8050d0120022802ac052222200128020028020441c4006e2203200320224b1bad42c4007e2207422088a70d132007a72203417f4c0d130240024020030d00410421080c010b2003102c2208450d190b2001200128020441016a2204360204200341c4006ead21070240200420012802084b0d00024002402022450d00200241f8136a410f6a211a20024180186a212c4100210a0340200241003a009018200a41016a210a410021040240024002400340200128020022032802042205450d01200241f0176a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0090182003210420034120470d000b200241f0176a411f6a310000210b200229008718210c20022d00f017210320022f00f117210520022800f317210620022900f717210f20022800ff172116200228008318212a200241f0176a200110ed0320022d00f01722044106470d01410621040c020b0240200441ff0171450d00200241003a0090180b410621040c010b202c290300211520022903f817211120022f019218211f20022d009118211e200228008d18211d20022f008b18211c20022d008a18211720022f018818212320022802f417211b20022f01f217211920022d00f1172118202a212120162120200f2110200621092005210d2003210e200c2114200b21130b2002202136008b142002202036008714200220103700ff13200220093600fb132002200d3b00f9132002200e3a00f81320044106460d03201a290000210c20022900ff13210f02402007422088220ba722032007a7470d00200341016a22052003490d1820034101742206200520052006491b22054104200541044b1bad42c4007e220b422088a7454102742105200ba721060240024020030d00200241003602f0170c010b200241043602f817200220083602f0172002200341c4006c3602f4170b200241e8096a20062005200241f0176a107d20022802f009210520022802e8094101460d0320022802ec0921082007422088220ba72103200541c4006ead21070b2008200341c4006c6a22032011370028200320143700172003200f3700072003201f3b00422003201e3a00412003201d36003d2003201c3b003b200320173a003a200320233b00382003201b360024200320193b0022200320183a0021200320043a0020200320093600032003200d3b00012003200e3a0000200341306a20153700002003411f6a20133c00002003410f6a200c370000200b422086200742ffffffff0f83844280808080107c2107200a2022470d000b200128020421040b20012004417f6a3602042008450d03200241900d6a41086a20024198136a41086a2802003602002002418c0d6a41026a200241e80f6a41026a2d00003a0000200241c80d6a41086a200241e0076a41086a290200370300200241c80d6a41106a200241e0076a41106a290200370300200241880d6a41026a200241f80d6a41026a2d00003a000020022002290298133703900d200220022f00e80f3b018c0d200220022902e0073703c80d200220022f00f80d3b01880d200241a00d6a41106a200241d8116a41106a290200370300200241a00d6a41086a200241d8116a41086a290200370300200241840d6a41026a200241b4146a41026a2d00003a0000200241e80c6a41086a20024198106a41086a290200370300200241e80c6a41106a20024198106a41106a290200370300200241e40c6a41026a200241b0146a41026a2d00003a0000200220022902d8113703a00d200220022f00b4143b01840d20022002290298103703e80c200220022f00b0143b01e40c200241c80c6a41106a200241a80e6a41106a290200370300200241c80c6a41086a200241a80e6a41086a290200370300200241d8146a41206a200241c0156a41206a280200360200200241d8146a41186a200241c0156a41186a290200370300200241d8146a41106a200241c0156a41106a290200370300200241d8146a41086a200241c0156a41086a290200370300200220022902a80e3703c80c200220022902c0153703d8144103210a0c020b20050d190c140b02402007422088a72201450d00200141c4006c2103200841286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102e0b200141c4006a2101200341bc7f6a22030d000b0b2007a72201450d01200141c4006c450d012008102e0c010b200241b80c6a41086a2201200241900d6a41086a280200360200200241b40c6a41026a22062002418c0d6a41026a2d00003a0000200241980c6a41086a222d200241c80d6a41086a290300370300200241980c6a41106a222e200241c80d6a41106a290300370300200241940c6a41026a222f200241880d6a41026a2d00003a0000200220022903900d3703b80c200220022f018c0d3b01b40c200220022903c80d3703980c200220022f01880d3b01940c200241f80b6a41106a2230200241a00d6a41106a290300370300200241f80b6a41086a2224200241a00d6a41086a290300370300200241f40b6a41026a2227200241840d6a41026a2d00003a0000200241d80b6a41086a2231200241e80c6a41086a290300370300200241d80b6a41106a2232200241e80c6a41106a290300370300200241d40b6a41026a2233200241e40c6a41026a2d00003a0000200220022903a00d3703f80b200220022f01840d3b01f40b200220022903e80c3703d80b200220022f01e40c3b01d40b200241b80b6a41106a2234200241c80c6a41106a290300370300200241b80b6a41086a2235200241c80c6a41086a290300370300200241d00a6a41206a2236200241d8146a41206a280200360200200241d00a6a41186a2237200241d8146a41186a290300370300200241d00a6a41106a2238200241d8146a41106a290300370300200241d00a6a41086a2239200241d8146a41086a290300370300200220022903c80c3703b80b200220022903d8143703d00a200041c8006a2010370200200041c0006a2011370200200041286a200c3c0000200041206a200b370200200041186a200f370200200041106a2007370200200041d0006a200d360200200041386a2015370200200041306a20143702002000412c6a2003360200200020043b002a200020053a00292000410c6a20083602002000202a3b000a2000202c3a0009200041086a200a3a000020004116360200200041e0006a20093a0000200041d4006a20022903b80c370200200041dc006a2001280200360200200041e4006a2022360200200041e8006a200e360200200020022f01b40c3b0061200041e3006a20062d00003a0000200041ec006a20022903980c370200200041f4006a202d290300370200200041fc006a202e29030037020020004184016a20213a000020004187016a202f2d00003a0000200020022f01940c3b0085012000418c016a202036020020004188016a201f360200200041a0016a203029030037020020004198016a202429030037020020004190016a20022903f80b370200200041a8016a201e3a0000200041ab016a20272d00003a0000200020022f01f40b3b00a901200041b0016a201d360200200041ac016a201c360200200041c4016a2032290300370200200041bc016a2031290300370200200041b4016a20022903d80b370200200041cc016a20183a0000200041cf016a20332d00003a0000200020022f01d40b3b00cd01200041d4016a201a360200200041d0016a2016360200200041e8016a2034290300370200200041e0016a2035290300370200200041d8016a20022903b80b37020020004190026a203628020036020020004188026a203729030037020020004180026a2038290300370200200041f8016a2039290300370200200041f0016a20022903d00a370200200041a4026a20123700002000419c026a201337000020004198026a20193600002000201b3b009602200020173a00950220004194026a20233a00000c1b0b2000411c3602000c1a0b200020043b0046200020053a00452000201e3600412000201f3b003f2000201d3a003e200020173b0026200020233a00252000201b360021200020203b001f200020193a001e2000200a3b0006200020093a0005200020033a000420004111360200200041346a200c3700002000412c6a200b3700002000410c6a20073700002000413c6a20213b0000200041286a201c3600002000411c6a20223b0000200041086a2008360000200041146a200dad422086200ead84370000200041c8006a200241f0176a41e80110e9081a0c190b4100210a410021094100210d0b0b200020083a000920004110360200200041286a200b370200200041146a2004360200200041106a20053602002000410c6a2003360200200041086a200e3a0000200041186a200dad220b423886200742ffffffffffffffff008384370200200041206a200aad4238862009ad42188684200b42088884370200200041306a200241f0176a41800210e9081a0c160b2000411c3602000c150b0b200020013a0029200020053b000a200020043a00092000410f360200200041286a200b3c0000200041206a200c370200200041386a2007370200200041346a2009360200200041306a200a3602002000412c6a2008360200200041146a200e360200200041106a20063602002000410c6a2003360200200041086a20213a0000200041186a2022ad422086200dad84370200200041c0006a200241f0176a41f00110e9081a0c130b2007422088a721010240200d450d002005102e0b2007a7210402402001450d002001410c6c2103200a210103400240200141046a280200450d002001280200102e0b2001410c6a2101200341746a22030d000b0b2004450d032004410c6c450d03200a102e0c030b200d102e0b02402007422088a72201450d002001410c6c2103200a210103400240200141046a280200450d002001280200102e0b2001410c6a2101200341746a22030d000b0b2007a72201450d002001410c6c450d00200a102e0b200ba7450d002005102e0b2000411c3602000c0e0b200d0d090c040b4100210e4200210f0b0c010b200241e9076a200c370000200220073700e107200220022d00df143a00e0074108210920022903e007220c422088200241e0076a41086a290300220f42208684210720022f01d81420022d00da14411074722204410876210d200f422088210f200ca7220e41807e7121162002200b3700f107200b422088a72118200b421088a72119200b420888a7211a201042ff0183a7211720022800db14210320022f01f007211b0b2000201e3a0049200020213a0042200020233b002a200020173a0029200020193b00232000201a3a00222000200d3b010a200020043a000920004107360200200041d8006a200c370200200041d0006a200b370200200041cc006a201c360200200041ca006a201d3b0100200041c5006a201f360000200041c3006a20203b0000200041c0006a20223b0100200041386a2010370200200041346a2008360200200041306a200a3602002000412c6a2005360200200041256a2018360000200041206a201b3b01002000410c6a2003360200200041086a20093a0000200041186a200f422086200742208884370200200041106a20074220862016200e41ff017172ad84370200200041e0006a200241f0176a41d00110e9081a0c090b1038000b2000411c3602000c070b410021064200210b410021010b200041003b0126200020013a00252000200a3b0023200020093b000d200020043b0006200020053a0005200020083a0004200041043602002000411b6a200b370000200041136a2007370000200041286a20063602002000410f6a200d3600002000410c6a200e3a0000200041086a20033602002000412c6a200241f0176a41840210e9081a0c050b2000411c3602000c040b1036000b02402007422088a72201450d00200141186c21032004210103400240200141046a280200450d002001280200102e0b0240200141106a280200450d002001410c6a280200102e0b200141186a2101200341686a22030d000b0b2007a72201450d01200141186c450d010b2004102e0b2000411c3602000b200241c01a6a24000baa2d01047f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1b00010218180304051806070818090a0b0c0d0e0f10111213141516170b0240024002400240024002400240200041086a2802000e0a1e1e001e01021e030405060b200041106a280200450d1d2000410c6a280200102e0f0b200041106a280200450d1c2000410c6a280200102e0f0b200041106a280200450d1b2000410c6a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b200041106a2802002202450d1a200241186c450d1a200028020c102e0f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d192002410c6c450d19200028020c102e0f0b200041106a280200450d182000410c6a280200102e0f0b200041106a280200450d172000410c6a280200102e0f0b0240024002400240024020002d00040e061b001b010203040b200041186a22022802001096012002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a22022802001096012002280200102e0f0b2000410c6a280200450d18200041086a280200102e0f0b200041186a22022802001096012002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a22022802001096012002280200102e0f0b02400240200041086a280200417f6a0e020001170b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c102e0b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c01102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d162002410c6c450d162000280210102e0f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c102e0b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c01102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d152000280210102e0f0b0240024002400240200041086a2802000e0418000102030b2000410c6a2d00004102470d17200041146a280200450d17200041106a280200102e0f0b2000410c6a2d00004102470d16200041146a280200450d16200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d15200041386a280200450d15200041346a280200102e0f0b2000410c6a2d00004102470d14200041146a280200450d14200041106a280200102e0f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d002004280204102e0b20022003470d000b0b200041086a2802002202450d13200241f0006c450d132000280204102e0f0b024002400240024002400240200041086a2d00000e171800181818180118180218181818180318180418181818050b2000412c6a2d00004102470d17200041346a280200450d17200041306a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d16200241246c450d16200028020c102e0f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a280200102e0f0b200041106a28020041ffffff3f71450d142000410c6a280200102e0f0b200041146a28020041ffffffff0371450d13200041106a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d12200241246c450d12200028020c102e0f0b20002802042202450d11200041086a280200450d112002102e0f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d112000280210102e0f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d102000280210102e0f0b02402000410c6a280200450d00200041086a280200102e0b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f2000280214102e0f0b0240024002400240200041086a2d000041716a0e0400010203120b200041106a280200450d112000410c6a280200102e0f0b200041106a280200450d102000410c6a280200102e0f0b200041106a280200450d0f2000410c6a280200102e0f0b200041106a280200450d0e2000410c6a280200102e0f0b024002400240200041086a2d0000417f6a0e03000102100b200041306a28020041ffffff3f71450d0f2000412c6a280200102e0f0b2000410c6a22022802001096012002280200102e0f0b200041106a22022802001096012002280200102e0f0b024002400240200041086a2d0000417f6a0e030001020f0b200041306a28020041ffffff3f71450d0e2000412c6a280200102e0f0b2000410c6a22022802001096012002280200102e0f0b200041106a22022802001096012002280200102e0f0b02400240200041086a2d0000417f6a0e05000d0d0d010d0b200041106a28020041ffffff3f71450d0c2000410c6a280200102e0f0b2000410c6a2d00004102470d0b200041146a280200450d0b200041106a280200102e0f0b20002d00044104470d0a2000410c6a28020041ffffff3f71450d0a200041086a280200102e0f0b200041086a2802004101470d092000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b02400240200041086a2d0000417d6a0e0200010a0b200041f0006a280200450d09200041ec006a280200102e0f0b200041106a280200450d082000410c6a280200102e0f0b024002400240200041086a2802000e040a0a0001020b2000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d07200041386a280200450d07200041346a280200102e0f0b02400240024020002f01040e03090001020b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d08200241b0026c450d082000280208102e0f0b200041086a22022802001096012002280200102e0f0b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d06200241b0026c450d062000280208102e0f0b0240024002400240024002400240200041086a2d0000417e6a0e0d00010c0c0c0c0c0c02030405060c0b0240200041146a2802002201450d002000410c6a2802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a280200102e0b0240200241246a2d00004101470d002002412c6a280200450d00200241286a280200102e0b200241c8006a22022001470d000b0b0240200041106a2802002202450d00200241c8006c450d00200028020c102e0b0240200041186a2d00004101470d00200041206a280200450d002000411c6a280200102e0b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a280200102e0b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a280200102e0b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a280200102e0b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a280200102e0b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a280200102e0b200041f0016a2d00004101470d0b200041f8016a280200450d0b200041f4016a280200102e0f0b0240200041146a2802002202450d00200241c4006c21012000410c6a28020041286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102e0b200241c4006a2102200141bc7f6a22010d000b0b200041106a2802002202450d0a200241c4006c450d0a200028020c102e0f0b200041106a2d00004102470d09200041186a280200450d09200041146a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d07200041386a280200450d07200041346a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d06200041386a280200450d06200041346a280200102e0f0b2000410c6a2d00004102470d05200041146a280200450d05200041106a280200102e0f0b20002d00042202417e6a4108490d040240024020020e020600010b200041286a22022802001096012002280200102e0f0b200041c8006a22022802001096012002280200102e0f0b0240024002400240200041086a2d00000e0407000102030b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041186a22022802001096012002280200102e0f0b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041286a280200450d05200041246a280200102e0f0b200041306a28020041ffffff3f71450d042000412c6a280200102e0f0b200041306a28020041ffffff3f71450d032000412c6a280200102e0f0b0240024002400240200041086a2802000e09060006010606020606030b200041106a280200450d052000410c6a280200102e0f0b200041106a2d00004102470d04200041186a280200450d04200041146a280200102e0f0b200041106a2d00004102470d03200041186a280200450d03200041146a280200102e0f0b200041146a280200450d02200041106a280200102e0f0b02400240200041086a2d0000417f6a0e03000301030b200041306a280200450d022000412c6a280200102e0c020b200041306a280200450d012000412c6a280200102e0f0b02402000413c6a28020041ffffffff0171450d00200041386a280200102e0b0240200041c8006a2802002202450d002002410c6c450d00200041c4006a280200102e0b0240200041d4006a28020041ffffffff0071450d00200041d0006a280200102e0b0240200041e0006a2802002202450d00200241146c450d00200041dc006a280200102e0b0240200041ec006a2802002202450d00200241186c450d00200041e8006a280200102e0b0240200041f8006a2802002202450d002002411c6c450d00200041f4006a280200102e0b024020004184016a28020041ffffff3f71450d0020004180016a280200102e0b024020004190016a2802002202450d00200241246c450d002000418c016a280200102e0b02402000419c016a2802002202450d00200241286c450d0020004198016a280200102e0b0240200041a8016a2802002202450d002002412c6c450d00200041a4016a280200102e0b0240200041b4016a2802002202450d00200241306c450d00200041b0016a280200102e0b0240200041c0016a2802002202450d00200241346c450d00200041bc016a280200102e0b0240200041cc016a2802002202450d00200241386c450d00200041c8016a280200102e0b0240200041d8016a2802002202450d002002413c6c450d00200041d4016a280200102e0b0240200041e4016a28020041ffffff1f71450d00200041e0016a280200102e0b200041f0016a2802002202450d00200241c4006c450d00200041ec016a280200102e0f0b0b900403027f017e077f230041a0076b22032400024002400240024002402002200128020441b0026e2204200420024b1bad42b0027e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102c2206450d030b200441b0026e2107024020020d00410021020c040b200341e0046a410472210841002109410021044100210a0340200341e0046a200110980120032802e004210b200341b4026a200841ac0210e9081a200b411c460d02200341086a200341b4026a41ac0210e9081a02400240200a2007470d002009200a41016a220c2009200c4b1b220c4104200c41044b1bad42b0027e2205422088a745410374210c2005a7210702400240200a0d00200341003602e0040c010b200341083602e804200320043602e404200320063602e0040b20034190076a2007200c200341e0046a107d200328029807210c2003280290074101460d012003280294072106200c41b0026e21070b200620046a220c200b360200200c41046a200341086a41ac0210e9081a200941026a2109200441b0026a21042002200a41016a220a460d050c010b0b200c0d020b1038000b200041003602000240200a450d002006210a0340200a109601200a41b0026a210a200441d07d6a22040d000b0b2007450d02200741b0026c450d022006102e0c020b1036000b2000200736020420002006360200200041086a20023602000b200341a0076a24000bfcb1030b067f017e027f027e037f017e027f067e0f7f037e117f230041c01b6b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200141046a2104200128020022052d0000210620012003417f6a22073602042001200541016a36020020060e250102030405060708090a2b0b0c0d0e0f101112132b2b2b2b1415162b17302f2b2b2b2e2d2c2b0b2000411c3602000c630b2007450d6120052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024002400240024020060e0a000102030405060708096d0b20074104490d6c2005280002210620012003417a6a3602042001200541066a3602002006418194ebdc034f0d6c410121010c0a0b2002200110ab0120022802000d6b2004280200220320022802042205490d6b2005417f4c0d670240024020050d00410121060c010b200510322206450d6a200428020021030b20032005490d6a20062001280200200510e9082103200128020422072005490d302001200720056b3602042001200128020020056a3602002003450d6b2005ad220842208620088421084102410b20031b21010c080b20074108490d6a200529000221082001200341766a36020420012005410a6a360200410321010c080b200241086a200110ab0120022802080d6920042802002203200228020c2205490d692005417f4c0d650240024020050d00410121060c010b200510322206450d68200428020021030b20032005490d6820062001280200200510e9082103200128020422072005490d262001200720056b3602042001200128020020056a3602002003450d692005ad220842208620088421084104410b20031b21010c060b200241106a200110ab0120022802100d682004280200220320022802142205490d682005417f4c0d640240024020050d00410121060c010b200510322206450d67200428020021030b20032005490d6720062001280200200510e9082103200128020422072005490d242001200720056b3602042001200128020020056a3602002003450d682005ad220842208620088421084105410b20031b21010c050b20024180166a200110fe0520022802801622064102460d672002290284162108410621010c040b200241286a200110ab0120022802280d66200228022c2207200428020041186e2205200520074b1bad42187e2208422088a70d622008a72205417f4c0d620240024020050d00410421060c010b2005102c2206450d650b200541186ead2108024002402007450d000340200241206a200110ab010240024020022802200d002004280200220320022802242205490d002005417f4c0d670240024020050d00410121090c010b200510322209450d6a200428020021030b024020032005490d0020092001280200200510e908210a200128020422032005490d302001200320056b3602042001200128020020056a360200200a450d01200241186a200110ab012005ad220b422086200b84220ca7210d024020022802180d0020042802002203200228021c2205490d002005417f4c0d690240024020050d004101210e0c010b20051032220e450d6c200428020021030b0240024020032005490d00200e2001280200200510e908210e2001280204220320054f0d012005200341b8b2c0001056000b200e102e0c010b2001200320056b3602042001200128020020056a360200200e0d030b200d450d010b2009102e0b02402008422088a72201450d00200141186c21052006210103400240200141046a280200450d002001280200102e0b0240200141106a280200450d002001410c6a280200102e0b200141186a2101200541686a22050d000b0b2008a72201450d6a200141186c450d6a0c690b02402008422088220ba722032008a7470d00200341016a22092003490d662003410174220f20092009200f491b22094104200941044b1bad42187e220b422088a7454102742109200ba7210f0240024020030d0020024100360280160c010b200241043602881620022006360280162002200341186c360284160b20024198086a200f200920024180166a107d20022802a00821092002280298084101460d03200228029c0821062008422088220ba72103200941186ead21080b2006200341186c6a2203200d3602042003200a360200200341146a2005ad22104220862010842210422088a73602002003410c6a2010422086200ead84370200200341086a200c422088a7360200200b422086200842ffffffff0f83844280808080107c21082007417f6a22070d000b0b2006450d674107410b20061b21010c040b2009450d620c640b20024180166a200110e3012002280280162206450d652002290284162108410821010c020b200241306a200110ab0120022802300d642004280200220320022802342205490d642005417f4c0d600240024020050d00410121060c010b200510322206450d63200428020021030b20032005490d6320062001280200200510e9082103200128020422072005490d1f2001200720056b3602042001200128020020056a3602002003450d642005ad220842208620088421080240200428020022034104490d0020012802002207280000210520012003417c6a3602042001200741046a360200410921010c030b2008a70d630c640b200241386a200110ab0120022802380d6320042802002203200228023c2205490d632005417f4c0d5f0240024020050d00410121060c010b200510322206450d62200428020021030b20032005490d6220062001280200200510e9082103200128020422072005490d1d2001200720056b3602042001200128020020056a3602002003450d632005ad22084220862008842108410a410b20031b21010b0b20004100360200200041186a2005360200200041106a20083702002000410c6a2006360200200041086a2001360200200041206a200241b0186a41900210e9081a0c620b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024020060e06000102030405090b20074104490d082005280002210620012003417a6a22073602042001200541066a3602002007450d0820052d0006210a2001200341796a22043602042001200541076a220e3602004100210702400240200a0e0201000a0b20044104490d09200535000721082001200341756a220736020420012005410b6a36020020074104490d09200535000b210b2001200341716a220436020420012005410f6a220e3602002008200b422086842108410121070b41000d082004450d08200e2d0000210320012004417f6a3602042001200e41016a360200200241b0186a200110980120022802b018210120024180166a200241b0186a41047241ac0210e9081a2001411c460d08200241b0186a20024180166a41ac0210e9081a41b002102c2205450d6720052001360200200541046a200241b0186a41ac0210e9081a2008422088a721042008a7210a4101210e420021080c050b20074104490d072005280002210620012003417a6a22073602042001200541066a36020020074104490d07200528000621072001200341766a36020420012005410a6a3602004102210e41002105420021080c040b200241c0006a200110ab0120022802400d062004280200220320022802442205490d062005417f4c0d630240024020050d00410121060c010b200510322206450d66200428020021030b20032005490d0520062001280200200510e9082103200128020422072005490d2a2001200720056b3602042001200128020020056a3602002003450d062005ad2208422086200884220ba72107200428020022034104490d0420012802002205280000210420012003417c6a220e3602042001200541046a220a360200200e450d04200a2d0000210920012003417b6a220e3602042001200a41016a220d360200410021050240024020090e020100060b200e4104490d05200a35000121082001200341776a22053602042001200a41056a36020020054104490d05200a350005210c2001200341736a220e3602042001200a41096a220d3602002008200c422086842108410121050b41000d04200e450d04200d2d000021032001200e417f6a3602042001200d41016a360200200241b0186a200110980120022802b018210e20024180166a200241b0186a41047241ac0210e9081a200e411c460d04200241b0186a20024180166a41ac0210e9081a41b002102c2201450d65200b422088a7210a2001200e360200200141046a200241b0186a41ac0210e9081a4103210e0c030b200241c8006a200110ab0120022802480d0520042802002203200228024c2205490d052005417f4c0d620240024020050d00410121060c010b200510322206450d65200428020021030b20032005490d0420062001280200200510e9082103200128020422072005490d1f2001200720056b3602042001200128020020056a3602002003450d052005ad22084220862008842208422088a7210a2008a721074104210e41002105410021040c020b20074104490d042005280002210620012003417a6a22073602042001200541066a3602002007450d0420052d0006210a2001200341796a22043602042001200541076a220e3602004100210702400240200a0e020100060b20044104490d05200535000721082001200341756a220736020420012005410b6a36020020074104490d05200535000b210b2001200341716a220436020420012005410f6a220e3602002008200b422086842108410121070b41000d042004450d04200e2d0000210320012004417f6a3602042001200e41016a360200200241b0186a200110980120022802b018210120024180166a200241b0186a41047241ac0210e9081a2001411c460d04200241b0186a20024180166a41ac0210e9081a41b002102c2205450d6320052001360200200541046a200241b0186a41ac0210e9081a2008422088a721042008a7210a4105210e420021080c010b200241d0006a200110ab0120022802500d032004280200220320022802542205490d032005417f4c0d600240024020050d00410121060c010b200510322206450d63200428020021030b20032005490d0220062001280200200510e9082103200128020422072005490d1c2001200720056b3602042001200128020020056a3602002003450d032005ad2208422086200884220ba72107200428020022034104490d0120012802002205280000210420012003417c6a220e3602042001200541046a220a360200200e450d01200a2d0000210920012003417b6a220e3602042001200a41016a220d360200410021050240024020090e020100030b200e4104490d02200a35000121082001200341776a22053602042001200a41056a36020020054104490d02200a350005210c2001200341736a220e3602042001200a41096a220d3602002008200c422086842108410121050b41000d01200e450d01200d2d000021032001200e417f6a3602042001200d41016a360200200241b0186a200110980120022802b018210e20024180166a200241b0186a41047241ac0210e9081a200e411c460d01200241b0186a20024180166a41ac0210e9081a41b002102c2201450d62200b422088a7210a2001200e360200200141046a200241b0186a41ac0210e9081a4106210e0b200020033a00052000200e3a000420004101360200200041246a20013602002000411c6a2008370200200041186a2005360200200041146a2004360200200041106a200a3602002000410c6a2007360200200041086a2006360200200041286a20024198086a41880210e9081a0c640b2007450d010b2006102e0b2000411c3602000c610b2007450d5c20052d0001210620012003417e6a3602042001200541026a3602000240024002400240024020060e03000103610b200241b0186a2001109a02200241bc186a2802002203450d60200241c4186a2802002105200241c0186a280200210620022802b818210e20022903b018210820024198086a200241c8186a41e40010e9081a200241b4196a2802002104200241b0186a4180016a2802002107200241ac196a280200210a20024180166a200241b8196a41800110e9081a200241b0186a200110f701024020022802b418450d00200241bc186a290200210b20022902b418210c20022802b0182109200241980f6a20024198086a41e40010e9081a20024198126a20024180166a41800110e9081a410121010c040b02402005450d00200541246c21052003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b02402006450d00200641246c450d002003102e0b02402004450d00200441246c2105200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b2007450d60200741246c0d010c600b200241b0186a2001109a02200241bc186a2802002203450d5f200241c4186a2802002105200241c0186a280200210620022802b818210e20022903b018210820024198086a200241c8186a41e40010e9081a200241b4196a2802002104200241b0186a4180016a2802002107200241ac196a280200210a20024180166a200241b8196a41800110e9081a200241b0186a200110f701024020022802b418450d00200241bc186a290200210b20022902b418210c20022802b0182109200241980f6a20024198086a41e40010e9081a20024198126a20024180166a41800110e9081a410221010c030b02402005450d00200541246c21052003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b02402006450d00200641246c450d002003102e0b02402004450d00200441246c2105200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b2007450d5f200741246c450d5f0b200a102e0c5e0b200241b0186a20011095024103210120022d00c0184103460d5d200241b8186a290300210b20022903b018210c20022903c0182108200241980f6a20024198156a41e40010e9081a20024198126a20024198086a41800110e9081a0b200241880b6a200241980f6a41e40010e9081a200241d8106a20024198126a41800110e9081a200041186a200b370200200041106a200c370200200041346a2005360200200041306a20063602002000412c6a2003360200200041286a200e360200200041206a20083702002000410c6a2009360200200041086a200136020020004102360200200041386a200241880b6a41e40010e9081a200041a4016a2004360200200041a0016a20073602002000419c016a200a360200200041a8016a200241d8106a41800110e9081a0c600b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241d8006a200110d9042002290358a70d002002290360210820004103360200200041086a2008370300200041106a200241b0186a41a00210e9081a0c600b2000411c3602000c5f0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024020060e050001020304060b20074104490d052005280002210620012003417a6a3602042001200541066a36020042002108410121044100210a4200210b4100210e0c040b20024180166a200110930120022d0080164101460d04200428020022044104490d0420024180166a41106a290300210820024188166a290300210c2002419d166a280000210a2002419b166a2f0000210e2002419a166a2d0000210920024198166a2f0100210d200228028416210620022f018216210520022d00811621032001280200220f280000210720012004417c6a3602042001200f41046a3602002002200e3b00eb10200220093a00ea102002200d3b01e8102002200c3703d810200220083703e0102002200a3600ed1020022900df102210422888200241e7106a290000220b421886842108200a4110762109200b422888210b200c421888a72111200c420888a7210f2010420888a7210a200ca721122010a7210e410221040c030b20074104490d032005280002210620012003417a6a3602042001200541066a36020042002108410321044100210a4200210b4100210e4100210d41002107410021010c020b20024180166a200110930120022d0080164101460d02200428020022044104490d0220024190166a290300211020024188166a290300210c2002419d166a28000021092002419b166a2f0000210d2002419a166a2d0000210f20024198166a2f01002111200228028416210620022f018216210520022d00811621032001280200220a280000210720012004417c6a220e3602042001200a41046a220a360200200e450d02200a2d0000210e20012004417b6a3602042001200a41016a3602004100210102400240200e0e020100040b410121010b2002200d3b00ab0f2002200f3a00aa0f200220113b01a80f200220103703a00f200c423888201042088684a7210e200220093600ad0f20094110762109200241ac0f6a330100200241ae0f6a31000042108684210b200c421888a72111200c420888a7210f20022902a40f2108200ca721122010a7210a410421040c010b20074104490d012005280002210620012003417a6a3602042001200541066a36020020022900df10220c422888200241e7106a290000220b421886842108200b422888210b200c420888a7210a20022f00d910210f20022800db10211120022f00ef10210920022d00f110210120022f01f210210d20022802f4102107200ca7210e410521040b2000200d3b0126200020013a0025200020093b00232000200f3b000d200020053b0006200020033a0005200020043a000420004104360200200041286a20073602002000410f6a20113600002000410c6a20123a0000200041086a20063602002000411b6a200b422886200842188884370000200041136a2008422886200aad42088684200ead42ff0183843700002000412c6a200241b0186a41840210e9081a0c5f0b2000411c3602000c5e0b02402007450d0020052d0001210620012003417e6a3602042001200541026a360200024002400240024002400240024020060e0400010203070b20024180166a200110e60120022d0080164105460d0620024180166a41106a290300210b20024188166a2903002108200241a0166a280200210520024198166a290300210c20022802841621062002280280162103200241e8006a200110db0402402002290368a70d00200241e8006a41106a29030021132006ad4220862003ad84211420022903702210422088a721062010a72103410121010c040b200341ff01714102470d062008a7450d062006102e0c060b20024180166a200110e60120022d0080164105460d0520024180166a41106a290300210b200241a0166a280200210520024198166a290300210c20024188166a29030021082002280284162106200228028016210320024198016a200110db04200229039801a70d0420024198016a41106a290300211320022903a001211020024180016a200110db04200229038001a70d0420024180016a41106a290300211520022903880121162006ad4220862003ad8421142010422088a721062010a72103410221010c020b20024180166a200110e60120022d0080164105460d0420024180166a41106a290300210b200241a0166a2203280200210520024198166a290300210c20024180166a41086a220629030021082002280284162104200228028016210720024180166a200110e601024020022d0080164105460d0020024198126a41086a20024180166a41146a29020037030020024198126a41106a2002419c166a280200360200200220024180166a410c6a290200370398122006280200210a2003350200211020022802841621062002280280162103200241b0016a200110db04024020022903b001a70d00200241b0016a41106a290300211720022903b801211820024198086a41146a20024198126a41106a28020036020020024198086a410c6a200241a0126a290300370200200220022903981237029c082002200a360298082004ad4220862007ad84211420024198086a41106a2903002115200229039808211320022903a0082116410321010c030b200341ff01714102470d00200a450d002006102e0b200741ff01714102470d042008a7450d042004102e0c040b20024180166a200110e60120022d0080164105460d0320024180166a41106a290300210b20024188166a2903002108200241a0166a280200210520024198166a290300210c20022802841621062002280280162103200241c8016a200110db0420022903c801a70d01200241c8016a41106a29030021132006ad4220862003ad84211420022903d0012210422088a721062010a72103420021104104210142002116420021150b20004105360200200041e0006a2017370200200041d8006a2018370200200041c8006a2015370200200041c0006a2016370200200041386a20133702002000411c6a200b370200200041146a2008370200200041d0006a20103702002000412c6a2005360200200041246a200c3702002000410c6a2014370200200041086a2001360200200041306a2006ad4220862003ad84370200200041e8006a200241b0186a41c80110e9081a0c600b200341ff01714102470d012008a7450d012006102e0c010b200341ff01714102470d002008a7450d002006102e0b2000411c3602000c5d0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241e0016a200110ab0120022802e0010d0020022802e4012206200428020041f0006e2205200520064b1bad42f0007e2208422088a70d582008a72205417f4c0d580240024020050d00410421070c010b2005102c2207450d5b0b200541f0006ead21080240024002402006450d0020024180166a41086a210e034020024180166a2001109b022002280284162103200228028016210420024198086a200e41e80010e9081a2003450d0320024198126a20024198086a41e80010e9081a02402008422088220ba722052008a7470d00200541016a220a2005490d5d20054101742209200a200a2009491b220a4104200a41044b1bad42f0007e220b422088a745410274210a200ba721090240024020050d0020024100360280160c010b200241043602881620022007360280162002200541f0006c360284160b200241d8106a2009200a20024180166a107d20022802e010210a20022802d8104101460d0320022802dc1021072008422088220ba72105200a41f0006ead21080b2007200541f0006c6a2205200336020420052004360200200541086a20024198126a41e80010e9081a200b422086200842ffffffff0f83844280808080107c21082006417f6a22060d000b0b2007450d022000200736020420004106360200200041086a2008370200200041106a200241b0186a41a00210e9081a0c5f0b200a0d5b0c590b02402008422088a72201450d002007200141f0006c6a2106200721010340024020012203410c6a2802002205450d0020032802042101200541246c210503400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b200341f0006a21010240200341086a2802002205450d00200541246c450d002003280204102e0b20012006470d000b0b2008a72201450d00200141f0006c450d002007102e0b2000411c3602000c5c0b02402007450d0020052d0001210620012003417e6a22193602042001200541026a3602004100211a410021124107210d0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e170001020304056d060708090a0b0c0d0e0f101112131415170b20024180166a200110e60120022d0080164105460d1620024198086a41086a20024194166a29020037030020024198086a41106a2002419c166a29020037030020022002418c166a2902003703980820024180166a41086a28020021092002280284162111200228028016210e200241e8016a200110db0420022903e801a70d1520042802002205450d15200241e8016a41106a290300210c20022903f001210b200128020022032d0000210620012005417f6a3602044101210d2001200341016a3602004100210a02400240024002400240024020060e0505000102031b0b4101210a0c030b4102210a0c020b20024180166a200110930120022d0080164101460d18200241d8106a41106a20024191166a290000370300200241f0106a20024199166a2900002210370300200241e0106a20024189166a290000370300200220022900811622143703d81020022f00eb10200241ed106a2d0000411074722103200241e6106a310000210820022801da10210720022901de10211320022800e710210520022f01ee10211b20022f00f110211c20022800f310211d20022d00f710211e2014a7210f2010a7211f4103210a0c020b4104210a0b0b20024198126a41106a20024198086a41106a29030037030020024198126a41086a20024198086a41086a29030022143703002003ad4228862005ad42088684200842ff01838422084220882110201342208820084220868421082013a7221241807e71211a200229039808211320022d00a212212020022f00a312212120022800a512212220022d00a912212320022f01aa12212420022802ac1221252014a721260c6c0b20024180026a200110db04200229038002a70d15200229038802220b42208820024190026a290300220c422086842108200c4220882110200ba7221241807e71211a4102210d0c6a0b20024198026a200110db04200229039802a70d1420022903a002220b422088200241a8026a290300220c422086842108200c4220882110200ba7221241807e71211a4103210d0c690b4104210d20194104490d132005280002210720012003417a6a3602042001200541066a360200420021080c670b200241b0026a200110ab0120022802b0020d1220022802b40221052002418094ebdc0336028416200220053602801620042802002203450d1220024180166a2005418094ebdc034b4102746a2802002107200128020022052d0000210620012003417f6a3602042001200541016a3602004105210d41002112024020060e026900130b410121120c670b20024180166a200110e5012002280280162207450d11200228028416221241807e71211a20024188166a3502002108420021104106210d0c660b2019450d1020052d0002210620012003417d6a3602042001200541036a3602004100210a02400240024002400240024020060e050500010203160b4101210a0c030b4102210a0c020b20024180166a200110930120022d0080164101460d13200241d8106a41106a20024191166a290000370300200241d8106a41086a20024189166a290000370300200241f0106a220120024199166a29000037030020024198086a41086a200241e6106a29010037030020024198086a41106a200241ee106a2f01003b0100200220022900811622083703d810200220022901de103703980820022801da1021072001290300210b2008a7210f4103210a0c020b4104210a0b0b4108210d200229039808220c42208820024198086a41086a2903002210422086842108200ca7221241807e71211a20104220882110200b423888a7211e200b421888a7211d200b420888a7211c200241a8086a2f0100211b200ba7211f0c660b20024180166a200110e60120022d0080164105460d0f200229028416220b4220882002418c166a290200220c422086842108200ba7221241807e71211a200c4220882110200241a0166a280200210e2002419e166a2f010021272002419d166a2d0000211e20024199166a280000211d20024197166a2f0000211c20024196166a2d0000211f20024194166a2f0100211b20022802801621074109210d0c640b200241b8026a200110ab0120022802b8020d0e20022802bc02210742002108410a210d0c620b200241c0026a200110ab0120022802c0020d0d20022802c402210742002108410b210d0c610b2019450d0c20052d0002210a20012003417d6a3602042001200541036a360200200a41e5004f0d0c42002108410c210d41002112420021100c620b410d210d410021120c600b410e210d410021120c5f0b200241c8026a200110ab01024020022802c802450d0020024100360280160c0a0b20024180166a200120022802cc021092012002280280162207450d09200228028416221241807e71211a20024188166a350200210842002110410f210d0c5e0b20024180166a200110930120022d0080164101460d084110210d200241d8106a41086a220520024180166a41106a290300370300200241d8106a41106a20024180166a41186a290300370300200241d8106a41186a200241a0166a2d00003a0000200220024180166a41086a2903003703d810200428020022034104490d08200228028416210720022f018216210f20022d008116210a20012802002206280000210e20012003417c6a3602042001200641046a36020020022903d810220b4220882005290300220c422086842108200ba7221241807e71211a200c422088211020022f01e810211b20022d00ea10211f20022f00eb10211c20022800ed10211d0c5e0b4111210d410021120c5c0b20194104490d062005280002210720012003417a6a3602042001200541066a36020020024180166a200110e7012002280280162212450d06201241807e71211a2002290284162108420021104112210d0c5b0b20024180166a200110930120022d0080164101460d05200428020022054104490d05200241a0166a310000211020024198166a290300210b20024190166a290300210c20024188166a2903002113200228028416210720022f018216210f20022d008116210a20012802002203280000210e20012005417c6a3602042001200341046a3602002013422088200c422086842108200b422888201042188684a7211d200c42208821102013a7221241807e71211a200b421888a7211c200b421088a7211f200ba7211b4113210d0c5b0b200241d0026a200110db0420022903d002a70d0420022903d802220b422088200241e0026a290300220c422086842108200c4220882110200ba7221241807e71211a4114210d0c590b200241f0026a200110ab0120022802f0020d0320022802f4022107200241e8026a200110ab0120022802e8020d0320022802ec02221241807e71211a4115210d0c580b20024180166a200110930120022d0080164101460d02200428020022054104490d0220024190166a290300210b20024188166a290300210c2002419d166a280000211d2002419b166a2f0000211c2002419a166a2d0000211f20024198166a2f0100211b200228028416210720022f018216210f20022d008116210a20012802002203280000210e20012005417c6a3602042001200341046a360200200c422088200b422086842108200b4220882110200ca7221241807e71211a4116210d0c580b20024180166a200110e5012002280280162207450d01200229028416220b4220882108200ba7221241807e71211a420021104117210d0c560b200e41ff01714102470d002009450d002011102e0b2000411c3602000c5b0b02402007450d0020012003417e6a3602042001200541026a3602000b2000411c3602000c5a0b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004100210502400240024020060e020001030b200241b0186a200110990320022d00b0184101460d0220024180166a200241b0186a41017241c00110e9081a200241f8026a200110ab0120022802f8020d022004280200220620022802fc022203490d022003417f4c0d570240024020030d00410121050c010b200310322205450d5a200428020021060b20062003490d0120052001280200200310e9082106200128020422072003490d1d2001200720036b3602042001200128020020036a3602002006450d022003ad2208422086200884210820024198086a20024180166a41c00110e9081a0b20024198126a20024198086a41c00110e9081a200041086a20083702002000200536020420004109360200200041106a20024198126a41c00110e9081a200041d0016a200241d8106a41e00010e9081a0c5b0b2005102e0b2000411c3602000c590b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b200241b0186a200110c80620022903b81822084202510d0320022802bc18210520022802b418210320022802b018210620024198086a200241c0186a41e40010e9081a200241a8196a280200210720022802ac19210420022802a419210a20024180166a200241b0186a4180016a41800110e9081a200241b0186a200110f70120022802b418450d032008a72101200241bc186a290200210b20022802b018210e20022902b418210c200241880b6a20024198086a41e40010e9081a20024198126a20024180166a41800110e9081a200c422088200b422086842108200b422088210b200ca721094101210d0c020b200241b0186a200110c80620022903b81822084202510d0220022802bc18210520022802b418210320022802b0182106200241980f6a200241c0186a41e40010e9081a200241a8196a280200210720022802ac19210420022802a419210a20024180166a200241b0186a4180016a41800110e9081a200241b0186a200110f70120022802b418450d022008a72101200241bc186a290200210b20022802b018210e20022902b418210c20024198156a200241980f6a41e40010e9081a20024198086a20024180166a41800110e9081a200241880b6a20024198156a41e40010e9081a20024198126a20024198086a41800110e9081a200c422088200b422086842108200b422088210b200ca721094102210d0c010b20074104490d012005280002210e20012003417a6a22063602042001200541066a36020020064104490d01200528000621092001200341766a36020420012005410a6a360200200241880b6a20024180166a41e40010e9081a20024198126a200241b0186a41800110e9081a4103210d0b200241a00a6a200241880b6a41e40010e9081a200241d8106a20024198126a41800110e9081a2000411c6a200b3e0200200041146a20083702002000412c6a2005360200200041286a2001360200200041246a2003360200200041206a2006360200200041106a20093602002000410c6a200e360200200041086a200d3602002000410a360200200041306a200241a00a6a41e40010e9081a2000419c016a200436020020004198016a200736020020004194016a200a360200200041a0016a200241d8106a41800110e9081a200041a8026a200241e80e6a41086a290300370300200041a0026a20022903e80e3703000c590b2000411c3602000c580b2007450d4e20052d0001210620012003417e6a22073602042001200541026a36020020060d4e20074104490d4e2005280002210620012003417a6a3602042001200541066a36020020024190036a200110ab012002280290030d4e200428020022032002280294032205490d4e2005417f4c0d520240024020050d00410121070c010b200510322207450d55200428020021030b0240024020032005490d0020072001280200200510e908210e2001280204220320054f0d012005200341b8b2c0001056000b2007102e0c4f0b2001200320056b3602042001200128020020056a360200200e450d4e2005ad2208422086200884211020024188036a200110ab010240024002402002280288030d00200228028c03220a2004280200410c6e22052005200a4b1bad420c7e2208422088a70d552008a72205417f4c0d550240024020050d00410421090c010b2005102c2209450d580b2005410c6ead21080240024002400240200a450d00034020024180036a200110ab012002280280030d04200428020022032002280284032205490d042005417f4c0d5a0240024020050d00410121070c010b200510322207450d5d200428020021030b20032005490d0320072001280200200510e9082107200128020422032005490d1f2001200320056b3602042001200128020020056a3602002007450d0402402008422088220ba722032008a7470d00200341016a220d2003490d5b2003410174220f200d200d200f491b220d4104200d41044b1bad420c7e220b422088a745410274210d200ba7210f0240024020030d0020024100360298080c010b200241043602a008200220093602980820022003410c6c36029c080b20024198126a200f200d20024198086a107d20022802a012210d2002280298124101460d03200228029c1221092008422088220ba72103200d410c6ead21080b20092003410c6c6a22032005ad220c422086200c8437020420032007360200200b422086200842ffffffff0f83844280808080107c2108200a417f6a220a0d000b0b2009450d032002200936028816200428020021052002200837028c1620022010370380162010a7210320054104490d0420012802002207280000210a20012005417c6a22043602042001200741046a36020020044104490d042007280004210d2001200541786a22043602042001200741086a36020020044104490d04200728000821092001200541746a36020420012007410c6a36020020024180166a410c6a2902002108200229028416210b20024180166a200110a701200b422088a721042008422088a721012008a7210720022d0080164101470d0502402003450d00200e102e0b02402001450d002001410c6c21052004210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2007450d542007410c6c450d542004102e0c540b200d0d590c570b2007102e0b02402008422088a72201450d002001410c6c21052009210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2008a72201450d002001410c6c450d002009102e0b2010a7450d50200e102e0c500b2008422088a7210102402003450d00200e102e0b2008a7210302402001450d002001410c6c21052009210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2003450d4f2003410c6c450d4f2009102e0c4f0b200e450d4e200241b9166a290000210820024180166a41316a290000210c200241ad166a2800002105200241ab166a2f0000210f200241a6166a280100211120024180166a41246a2f01002112200241a3166a2d0000211b200241a1166a2f0000211c20024199166a290000211020024195166a280000211d20024191166a280000211f2002418d166a280000211e20024180166a410b6a2f000021272002418a166a2d00002126200228018616212020022f018416212120022d008316212220022f00811621232000200241aa166a2d00003a00552000201b3a004e200020263a0035200020223a002e200020063602042000410b360200200041e4006a2008370200200041dc006a200c370200200041d8006a2005360200200041d6006a200f3b0100200041d1006a2011360000200041cf006a20123b0000200041cc006a201c3b0100200041c4006a2010370200200041c0006a201d3602002000413c6a201f360200200041386a201e360200200041366a20273b0100200041316a20203600002000412f6a20213b00002000412c6a20233b0100200041286a2009360200200041246a200d360200200041206a200a3602002000411c6a2001360200200041186a2007360200200041146a2004360200200041106a200ba73602002000410c6a2003360200200041086a200e360200200041ec006a200241b0186a41c40110e9081a0c570b02402007450d0020012003417e6a3602042001200541026a3602000b2000411c3602000c560b2007450d4a20052d0001210720012003417e6a22063602042001200541026a360200410d211b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020070e19000102030405060708090a0b640c0d0e0f1011121314151617630b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d63200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d20024198036a200110db0420022802980322010d63411a410120011b211b200241a8036a290300210c20022903a003210b0c640b200741ff0171450d62200241003a00a0160c620b200241b8036a200110ab0120022802b8030d6120022802bc03210e200241b0036a200110ab0120022802b0030d6120022802b403211d4102211b0c620b200241c0036a200110ab0120022802c0030d6020022802c403210e20024180166a200110b10420022d0080164102460d60200241a0166a290300210b2002419c166a280200211e2002419a166a2f0100212720024199166a2d0000211f20024195166a280000211120024193166a2f0000210f20024192166a2d0000211220024190166a2f0100210a20024188166a2903002108200228028416211c200228028016211d4200210c4103211b0c610b4104211b20064104490d5f2005280002210e20012003417a6a3602042001200541066a3602000c600b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d5f200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d4105211b0c600b200741ff0171450d5e200241003a00a0160c5e0b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d5e200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d4106211b0c5f0b200741ff0171450d5d200241003a00a0160c5d0b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d5d200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d4107211b0c5e0b200741ff0171450d5c200241003a00a0160c5c0b41002107200241003a00a0162006411f2006411f491b20056a41036a211b417d210a0240034020062007460d0120024180166a20076a200520076a220441026a2d00003a000020012003200a6a3602042001200441036a3602002002200741016a22043a00a016200a417f6a210a2004210720044120470d000b200441ff01714120490d5c200320046b2203417e6a4104490d5c200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d201b280000211e20012003417a6a22063602042001200520046a220541066a220736020020064104490d5c2007350000210b2001200341766a36020420012005410a6a3602004200210c4108211b0c5d0b200741ff0171450d5b200241003a00a0160c5b0b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d5b200228029c16211120022f019a16210f20022d009916211220022f009716210a200229008f162108200228008b16211c200228008716211d200228008316210e20022f008116210920022d008016210d4109211b0c5c0b200741ff0171450d5a200241003a00a0160c5a0b200241c8036a200110ab0120022802c8030d5920022802cc03210e410a211b0c5a0b20064104490d582005280002210e20012003417a6a3602042001200541066a360200410b211b0c590b20024180166a200110930120022d0080164101460d5720042802002203450d572002419d166a28000021112002419b166a2f0000210f2002419a166a2d0000211220024198166a2f0100210a20024190166a29030021082002418c166a280200211c20024188166a280200211d200228028416210e20022f018216210920022d008116210d200128020022052d0000210620012003417f6a22073602042001200541016a3602004100211f024002400240024002400240024020060e07060500010203045e0b4102211f0c050b4103211f0c040b4104211f0c030b4105211f0c020b4106211f0c010b4101211f0b20074110490d57200541096a290000210c2005290001210b20012003416f6a3602042001200541116a360200410c211b0c580b410e211b0c570b200241d0036a200110ab0120022802d0030d552004280200220320022802d4032205490d552005417f4c0d5b0240024020050d004101210e0c010b20051032220e450d5e200428020021030b20032005490d0a200e2001280200200510e9082103200128020422062005490d1f2001200620056b3602042001200128020020056a3602002003450d552005ad22084220862008842208422088a7211c2008a7211d410f211b0c560b200241d8036a200110ab0120022802d8030d542004280200220320022802dc032205490d542005417f4c0d5a0240024020050d004101210e0c010b20051032220e450d5d200428020021030b20032005490d09200e2001280200200510e9082103200128020422062005490d152001200620056b3602042001200128020020056a3602002003450d542005ad22084220862008842208422088a7211c2008a7211d4110211b0c550b200241e0036a200110ab0120022802e0030d532004280200220320022802e4032205490d532005417f4c0d590240024020050d004101210e0c010b20051032220e450d5c200428020021030b20032005490d08200e2001280200200510e9082103200128020422062005490d132001200620056b3602042001200128020020056a3602002003450d532005ad22084220862008842208422088a7211c2008a7211d4111211b0c540b200241e8036a200110ab0120022802e8030d522004280200220320022802ec032205490d522005417f4c0d580240024020050d004101210e0c010b20051032220e450d5b200428020021030b20032005490d07200e2001280200200510e9082103200128020422062005490d112001200620056b3602042001200128020020056a3602002003450d522005ad22084220862008842208422088a7211c2008a7211d4112211b0c530b41002107200241003a00a0162003417d6a21030240034020062007460d0120024180166a20076a200520076a220441026a2d00003a0000200120033602042001200441036a3602002002200741016a22043a00a0162003417f6a21032004210720044120470d000b200441ff01714120490d52200229008716210b2002418f166a2900002108200228029c16211120022f019a16210f20022d009916211220022f009716210a200228008316210e20022f008116210920022d008016210d200241f0036a200110ab0120022802f00322010d52200b422088a7211c200ba7211d411a411320011b211b20022802f403211e0c530b200741ff0171450d51200241003a00a0160c510b20024180166a200110930120022d0080164101460d5020024188166a290300220b422088a7211c20024190166a29030021082002419d166a28000021112002419b166a2f0000210f2002419a166a2d0000211220024198166a2f0100210a200228028416210e20022f018216210920022d008116210d200ba7211d4114211b0c510b20064104490d4f2005280002210e20012003417a6a3602042001200541066a3602004115211b0c500b20024180166a200110930120022d0080164101460d4e200428020022054104490d4e20024190166a290300210820024188166a290300210b2002419d166a28000021112002419b166a2f0000210f2002419a166a2d0000211220024198166a2f0100210a200228028416210e20022f018216210920022d008116210d20012802002203280000211e20012005417c6a3602042001200341046a360200200b422088a7211c200ba7211d4116211b0c4f0b41002107200241003a00a0162006411f2006411f491b20056a41036a210f417d21040240034020062007460d0120024180166a20076a200520076a220a41026a2d00003a00002001200320046a3602042001200a41036a3602002002200741016a220a3a00a0162004417f6a2104200a2107200a4120460d4e0c000b0b200741ff0171450d4d200241003a00a0160c4d0b41002107200241003a00a016417d21040240034020062007460d0120024180166a20076a200520076a220a41026a2d00003a00002001200320046a3602042001200a41036a3602002002200741016a220a3a00a0162004417f6a2104200a2107200a4120460d4c0c000b0b200741ff0171450d4c200241003a00a0160c4c0b200241f8036a200110ab0120022802f8030d4b20022802fc03210e4119211b0c4c0b200e102e0c4a0b20024198086a200110c906024020022d0098084107460d0020024198126a41306a20024198086a41306a290300220837030020024198126a41286a20024198086a41286a290300220b37030020024198126a41206a20024198086a41206a290300220c37030020024198126a41186a20024198086a41186a290300221037030020024180166a410c6a20024198086a41086a29030037020020024180166a41146a20024198086a41106a29030037020020024180166a411c6a201037020020024180166a41246a200c37020020024180166a412c6a200b37020020024180166a41346a20083702002002200229039808370284162000410e36020020002002290280163702042000410c6a20024180166a41086a290200370200200041146a20024180166a41106a2902003702002000411c6a20024180166a41186a290200370200200041246a20024180166a41206a2902003702002000412c6a20024180166a41286a290200370200200041346a20024180166a41306a2902003702002000413c6a200241b8166a280200360200200041c0006a200241b0186a41f00110e9081a0c550b2000411c3602000c540b2007450d4520052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024020060e060001020304054e0b20024180046a200110ab010240200228028004450d0020024100360280160c4e0b20024180166a20012002280284041092012002280280162206450d4d200228028416210e20042802002205450d0520024188166a2802002109200128020022072d0000210a20012005417f6a22033602042001200741016a3602000240024002400240200a0e020201000b200241023a0098120c090b20024180166a2001109301024020022d0080164101470d00200241023a0098120c090b200241d8106a41186a20024199166a290000370300200241e8106a20024191166a290000370300200241e0106a20024189166a290000370300200220022900811622083703d810200241e7106a290000210b20022900df10210c20022f00ef10210720022d00f110210520022f01f210210320022802f410210a20022f00d910210d200220022800db10220f36029c122002200d3b019a12200220083c009912200241013a0098122002200a36009d08200220033b009b08200220053a009a08200220073b019808200f411876210a200428020021030c010b200241003a00981220022d009f12210a0b20034104490d0620022d009a12210d20022f019812210f2002290099082110200228009b1221052002200c3700990f200241a10f6a200b37000020012802002204350000210820012003417c6a3602042001200441046a3602002002200a3a00980f200220073a00a90f200c423888200b42088684a72104200f200d4110747222074180feff0771410876210a2010423888a721012010421888a7210d2010420888a7210f200c421888a72111200b421888a7211c20022802980f210320022f01a80f21122010a7211b4101211d0c4c0b200110cb042205450d4c20024188046a200110ab012002280288040d06200228028c0421034102211d420021084100211c410021090c4b0b20024198046a200110ab012002280298040d4b200228029c042105200110cb042203450d4b20024190046a200110ab0102402002280290040d0020022802940421114103211d420021084100211c410021090c490b2003108b022003102e0c4b0b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220a41026a2d00003a0000200120033602042001200a41036a3602002002200641016a220a3a00a0162003417f6a2103200a2106200a4120460d4a0c000b0b200641ff0171450d4a200241003a00a0160c4a0b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120470d000b200441ff01714120490d4a200229009716210b2002419f166a31000021132002418f166a290000210c2002290087162110200228008316210520022f008116210a20022d0080162107200241c0046a200110ab0120022802c0040d4a20022802c4042106200241b0046a200110d90420022903b004a70d4a20022903b8042108200241a8046a200110ab0120022802a8040d4a200b422888201342188684a7210d200b421888a7210f200b421088a7211b200ba7211220022802ac04210e200c422088a7211c2010422088a72111200ca721042010a721034105211d0c470b200641ff0171450d49200241003a00a0160c490b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120460d460c000b0b200641ff0171450d48200241003a00a0160c480b200241023a0098120b200e41ffffff3f71450d462006102e0c460b2005108b022005102e0c450b2007450d3f20052d0001210620012003417e6a22113602044102210d2001200541026a3602000240024002400240024020060e06004301020304440b200241e0046a200110ab01024020022802e004450d0020024100360280160c440b20024180166a200120022802e4041092012002280280162207450d43200229028416210b200241c8046a200110db04024020022903c804a70d0020022903d0042208423888200241d8046a290300220c42088684a7210f200c421888210c200b422088a7210a200ba7210e4101210d0c430b200b42ffffff3f83500d432007102e0c430b200241e8046a200110ab0120022802e8040d4220022802ec04210720023500eb10200241ef106a31000042208684210c20023502e010200241e4106a330100200241e6106a3100004210868442208684210820022903f010210b20022800e710210f20022802dc10210a4103210d0c410b2011450d4120052d0002210620012003417d6a3602042001200541036a3602004104210d4100210f4200210c410021070240024020060e03420001430b410121070c410b200241f0046a200110ab0120022802f0040d4120022802f404210e410221070c400b20024180166a200110e60120022d0080164105460d4020024198086a41086a20024194166a290200370300200241a8086a2002419c166a29020037030020022002418c166a2902003703980820024180166a41086a280200210a200228028416210e2002280280162107024020042802002205450d00200128020022032d0000210620012005417f6a3602042001200341016a360200410021090240024020060e020100020b410121090b2002290398082208423888200241a0086a290300220b42088684a7210f200b421888210c200241a8086a290300210b4105210d0c400b200741ff01714102470d40200a450d40200e102e0c400b20114104490d3f2005280002210720012003417a6a22063602044106210d2001200541066a36020020064104490d3f2005280006210e2001200341766a36020420012005410a6a3602004100210f4200210c0c3e0b2007450d3c20052d0001210620012003417e6a3602042001200541026a3602004107210502400240024002400240024020060e0700010203040541420b20024180166a20011093014101210520022d0080164101460d4120024190166a290300220b422088a7210920024188166a29030021082002419d166a28000021262002419b166a2f000021122002419a166a2d0000212020024198166a2f0100210f200228028416210320022f018216210720022d0081162104200ba7210d0c400b20024180166a200110930120022d0080164101460d40200241d8106a41186a200241a0166a2d00003a0000200241d8106a41106a20024180166a41186a290300220b37030020024180166a41106a290300220c422088a7210920024188166a2903002108200228028416210320022f018216210720022d008116210420022800ed10212620022f00eb10211220022d00ea102120200ba7210f200ca7210d410221050c3f0b20024180166a200110930120022d0080164101460d3f200241980f6a41086a220520024180166a41106a2206290300370300200241980f6a41106a20024180166a41186a220a290300370300200241980f6a41186a220e200241a0166a2d00003a0000200220024180166a41086a220d2903003703980f200228028416210320022f018216210720022d008116210420024180166a200110930120022d0080164101460d3f20022903a80f2210422888200e31000042188684a721262010421888a721122010421088a7212020052903002213422088a721092006290300210c200d290300210b2002419d166a280000211c2002419b166a2f0000211b2002419a166a2d0000211d200a2f01002111200228028416211f20022f018216211e20022d008116212720022903980f21082010a7210f2013a7210d410321050c3e0b200241f8046a200110ab01024020022802f804450d0020024100360298080c3f0b20024198086a200120022802fc041092012002280298082203450d3e200229029c0821082002418c166a290200210c200229028416210b20022d009c12212720022f009d12211e20022f019416211120022d009616211d20022f009716211b200228009916211c20022d009d16210e20022f019e16210a41042105410021094100210d0c3d0b20024180166a200110930120022d0080164101460d3d20024190166a290300220b422088a7210920024188166a29030021082002419d166a28000021262002419b166a2f000021122002419a166a2d0000212020024198166a2f0100210f200228028416210320022f018216210720022d0081162104200ba7210d410521050c3c0b20024180166a200110930120022d0080164101460d3c200241f0106a20024199166a290000370300200241e8106a20024191166a290000370300200241e0106a20024189166a2900003703002002200229008116220b3703d81020022f00d910210720022800db10210320022900df10210820022800e710210d20022800eb10210920022f00ef10210f20022d00f110212020022f01f210211220022802f4102126200ba72104410621050c3b0b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602000240024002400240024020060e03000102050b20024180056a200110db04200229038005a70d0420024190056a2903002108200229038805210b20024180166a200110e60120022d0080164105460d042002290380162214422088a7210120024190166a290300210c20024188166a2903002110200241a0166a280200210520024198166a29030021132014a72103410121060c030b20024198056a200110ab0120022802980522010d034104410220011b2106200228029c0521030c010b200241a0056a200110ab0120022802a00522010d024104410320011b210620022802a40521030b0b20004112360200200041386a2008370200200041306a200b3702002000411c6a200c370200200041146a20103702002000412c6a2005360200200041246a2013370200200041106a20013602002000410c6a2003360200200041086a2006360200200041c0006a200241b0186a41f00110e9081a0c510b2000411c3602000c500b2007450d3820052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024020060e0500010203043f0b20024180166a200110930120022d0080164101460d3e20024190166a2204290300210820024188166a2212290300210b2002419d166a220928000021072002419b166a220d2f0000210a2002419a166a220f2d0000210e20024180166a41186a22112f0100211b200228028416210520022f018216210620022d008116210320024180166a200110a80120022d0080164101460d3e2002200b3703d810200220073600ed102002200a3b00eb102002200e3a00ea102002201b3b01e810200220083703e010200241b0166a2903002113200241a8166a2903002110200241c0166a2f0100211b200241bc166a280200211c200241b8166a280200211d200241a4166a2802002107200241a2166a2f0100210a200241a1166a2d0000210e20092800002109200d2f0000210d200f2d0000210f20112f010021112004290300210c2002418c166a280200211f201228020021122002350081162002330085162002310087164210868442208684420886200241d8106a41186a3100008421142008423088a721012008422888a7210420022903e8102118410121270c3c0b200241003a0094162007450d3d20052d0002210620012003417d6a22073602042001200541036a360200200241013a009416200220063a00801620070d1a0c3c0b20024180166a200110930120022d0080164101460d3c200241980f6a41086a20024180166a41106a2212290300370300200241980f6a41106a20024180166a41186a2211290300370300200241980f6a41186a200241a0166a2d00003a0000200220024180166a41086a221e2903003703980f200228028416210520022f018216210620022d008116210320024180166a200110a80120022d0080164101460d3c200241b0166a2903002113200241a8166a2903002110200241c0166a2f0100211b200241bc166a280200211c200241b8166a280200211d200241a4166a2802002107200241a2166a2f0100210a200241a1166a2d0000210e2002419d166a28000021092002419b166a2f0000210d2002419a166a2d0000210f20112f010021112012290300210c2002418c166a280200211f201e28020021122002350081162108200233008516210b2002310087162114200241a8056a200110ab0120022802a8050d3c2004280200222620022802ac052227490d3c2027417f4c0d4e0240024020270d004101211e0c010b20271032221e450d51200428020021260b20262027490d02201e2001280200202710e9082104200128020422262027490d112001202620276b3602042001200128020020276a3602002004450d3c2008200b20144210868442208684420886200241b00f6a3100008421142027ad22084220862008842217422088a72121200241a00f6a2903002208423088a721012008422888a7210420022903a80f211820022903980f210b2017a72120410321270c3a0b200241b0056a200110ab0120022802b0050d3b2004280200220620022802b4052203490d3b2003417f4c0d4d0240024020030d00410121050c010b200310322205450d50200428020021060b20062003490d0220052001280200200310e9082106200128020422072003490d0f2001200720036b3602042001200128020020036a3602002006450d3b2003ad2208422086200884210b410421270c390b200241003a0094162007450d3a20052d0002210620012003417d6a22073602042001200541036a360200200241013a009416200220063a00801620070d160c360b201e102e0c390b2005102e0c380b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004101210e024002400240024002400240024020060e0403000102070b20024180166a200110e60120022d0080164105460d06200229038016220b422088a7210520024190166a290300211020024188166a2903002108200241a0166a280200210720024198166a290300210c200ba721034102210e0c020b20024180166a200110e60120022d00801622034105460d0520024198126a41086a20024194166a29020037030020024198126a41106a2002419c166a28020036020020022002418c166a2902003703981220024180166a41086a280200210e20022802841621050240200428020022044110490d0020022d008316210920022f008116210d200241a0166a28020021072001280200220641086a290000210b200629000021132001200641106a3602002001200441706a220a360204200a4110490d00200641186a2900002114200629001021182001200441606a220a3602042001200641206a360200200a4104490d002006280020210a20012004415c6a3602042001200641246a360200200241ac086a200241a8126a280200360200200241a4086a20024198126a41086a2903003702002002200e36029808200220022903981237029c08200d200941107472410874200372210320024198086a41086a2903002110200229039808210820022903a808210c420021154103210e420021280c020b20034102470d05200e0d040c050b20024180166a200110e60120022d0080164105460d0420024180166a41106a220a2903002110200241a0166a220e280200210720024198166a2209290300210c20024188166a220629030021082002280284162105200228028016210320024180166a200110e60120022d0080164105460d022006290300210b200228028416210f200228028016210d200428020022044110490d01200a2903002118200e280200210a200929030021142001280200220641086a2900002117200629000021132001200641106a3602002001200441706a220e360204200e4110490d01200641186a2900002116200629001021292001200441606a22093602042001200641206a3602004104210e20094104490d012006280020210920012004415c6a3602042001200641246a36020020022009360290162017422086201342208884212820134220862115200fad422086200dad8421132002202937038016200228028416210d200229039016212a2029a721090b20004114360200200041f8006a202a370200200041f0006a2016370200200041dc006a20283e0200200041d4006a2015370200200041c0006a2018370200200041386a200b3702002000411c6a2010370200200041146a2008370200200041ec006a200d360200200041e8006a2009360200200041e0006a2017370200200041d0006a200a360200200041c8006a2014370200200041306a20133702002000412c6a2007360200200041246a200c370200200041086a200e3602002000410c6a2005ad4220862003ad8437020020004180016a200241b0186a41b00110e9081a0c520b200d41ff01714102470d00200ba7450d00200f102e0b200341ff01714102470d012008a7450d010b2005102e0b2000411c3602000c4e0b20024180166a200110ca06024020022f0180164104460d0020024198086a41086a20024180166a41086a29030022083703002002200229038016220b37039808200041153602002000200b3702042000410c6a2008370200200041146a200241b0186a419c0210e9081a0c4e0b2000411c3602000c4d0b2007450d2f20052d0001210720012003417e6a222b3602042001200541026a3602004104210e0240024020070e0f000126282524232221201f1e1d1c1b310b20024180166a20011093014101210e20022d0080164101460d30200241800e6a41086a200241a00a6a41086a280000360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200220022900a00a3703800e200220022f00e80e3b01fc0d20024180166a41106a290300210b20024180166a41086a29030021082002419d166a280000210f2002419b166a2f000021122002419a166a2d0000211b20024180166a41186a2f01002111200228028416210620022f018216212c20022d008116212d200241e00d6a41106a20024198086a41106a290000370300200241e00d6a41086a20024198086a41086a29000037030020022002290098083703e00d200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290000370300200241c00d6a41086a20024198126a41086a29000037030020022002290098123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290000370300200241a00d6a41086a200241d8106a41086a290000370300200220022900d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290000370300200241800d6a41086a200241980f6a41086a290000370300200220022900980f3703800d20024198156a41206a200241b0186a41206a28000036020020024198156a41186a200241b0186a41186a29000037030020024198156a41106a200241b0186a41106a29000037030020024198156a41086a200241b0186a41086a290000370300200220022900b018370398150c270b200241b8056a200110ab0120022802b8050d2f20022802bc052207200428020041c8006e2205200520074b1bad42c8007e2208422088a70d472008a72205417f4c0d470240024020050d00410421060c010b2005102c2206450d4a0b200541c8006ead210802400240024002402007450d0020024180166a410c6a211c20024180166a410172211e034020024180166a200110ec0302400240024020022d00801622034106460d00200241a0146a41026a220e201e41026a2d00003a0000200241a00a6a41086a2209201c41086a290200370300200241a00a6a41106a220d201c41106a2902003703002002201e2f00003b01a0142002201c2902003703a00a200228028416210a2002280288162105200241b0186a200110ec0320022d00b0184106470d0120034101470d002005450d00200a102e0b410621030c010b200241b4146a41026a200e2d00003a0000200241e80e6a41086a2009290300370300200241e80e6a41106a200d29030037030020024198086a41086a200241b0186a41086a29030037030020024198086a41106a200241b0186a41106a29030037030020024198086a41186a200241b0186a41186a29030037030020024198086a41206a200241b0186a41206a280200360200200220022f01a0143b01b414200220022903a00a3703e80e200220022903b01837039808200a211d2005211f0b200241b0146a41026a2205200241b4146a41026a2d00003a0000200241b80e6a41086a220a200241e80e6a41086a290300370300200241b80e6a41106a220e200241e80e6a41106a29030037030020024198126a41086a220920024198086a41086a29030037030020024198126a41106a220d20024198086a41106a29030037030020024198126a41186a220f20024198086a41186a29030037030020024198126a41206a221120024198086a41206a280200360200200220022f01b4143b01b014200220022903e80e3703b80e20022002290398083703981220034106460d03200241ac146a41026a221220052d00003a0000200241900e6a41086a221b200a290300370300200241900e6a41106a220a200e290300370300200241d8106a41086a220e2009290300370300200241d8106a41106a2209200d290300370300200241d8106a41186a220d200f290300370300200241d8106a41206a220f2011280200360200200220022f01b0143b01ac14200220022903b80e3703900e20022002290398123703d81002402008422088220ba722052008a7470d00200541016a22112005490d4d20054101742227201120112027491b22114104201141044b1bad42c8007e220b422088a7454102742111200ba721270240024020050d00200241003602b0180c010b200241043602b818200220063602b0182002200541c8006c3602b4180b20024180166a20272011200241b0186a107d20022802881621112002280280164101460d0320022802841621062008422088220ba72105201141c8006ead21080b2006200541c8006c6a220520033a0000200541086a201f360000200541046a201d360000200541036a20122d00003a0000200520022f01ac143b00012005410c6a20022903900e370000200541146a201b2903003700002005411c6a200a290300370000200541346a20092903003700002005412c6a200e2903003700002005413c6a200d290300370000200541246a20022903d810370000200541c4006a200f280200360000200b422086200842ffffffff0f83844280808080107c21082007417f6a22070d000b0b2006450d32200241b0186a200110ec0320022d00b0184106460d30200241ec0e6a200241bc186a22032d00003a00002002200241b0186a41086a22072802003602e80e200241bd186a280000210f200241c1186a2d0000210d200241c2186a2f01002109200241c4186a220e280200210a200241c8186a22112903002114200241d0186a2212350200210b20022802b418212c20022802b0182105200241b0186a200110ec0320022d00b0184106460d2f200241a00a6a41086a2012280200360200200220112903003703a00a200e280200211d2003290200210c2007280200210720022802b418212d20022802b0182103200241b0186a200110ec0320022d00b018221c4106460d2e200241b4146a41026a20022d00b3183a0000200241d8106a41086a200241c4186a220e290200370300200241d8106a41106a200241cc186a2211290200370300200220022f00b1183b01b4142002200241bc186a22122902003703d810200241b0186a41086a221b280200211f20022802b418211e200241b0186a200110ec0320022d00b01822274106460d2d200241a0146a41026a20022d00b3183a000020024198126a41086a200e29020037030020024198126a41106a2011290200370300200220022f00b1183b01a0142002201229020037039812201b280200212620022802b4182120200241b0186a200110ec0320022d00b01822214106460d2c200241920e6a20022d00b3183a000020024198086a41086a200241c4186a290200370300200241a8086a200241cc186a290200370300200220022f00b1183b01900e2002200241bc186a29020037039808200241b0186a41086a280200212220022802b41821232004280200220e450d2b200128020022042d000021112001200e417f6a22123602042001200441016a3602004100212b420021104100211920110e0228022b0b20110d4b0c490b02402008422088a72201450d002006200141c8006c6a2105200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200141c8006a22012005470d000b0b2008a72201450d30200141c8006c450d300c2f0b200241003a00c4182012450d2820042d000121112001200e417e6a22123602042001200441026a360200200241013a00c418200220113a00b0182012450d2720042d000221112001200e417d6a22123602042001200441036a360200200241023a00c418200220113a00b1182012450d2720042d000321112001200e417c6a22123602042001200441046a360200200241033a00c418200220113a00b2182012450d2720042d000421112001200e417b6a22123602042001200441056a360200200241043a00c418200220113a00b3182012450d2720042d000521112001200e417a6a22123602042001200441066a360200200241053a00c418200220113a00b4182012450d2720042d000621112001200e41796a22123602042001200441076a360200200241063a00c418200220113a00b5182012450d2720042d000721112001200e41786a22123602042001200441086a360200200241073a00c418200220113a00b6182012450d2720042d000821112001200e41776a22123602042001200441096a360200200241083a00c418200220113a00b7182012450d2720042d000921112001200e41766a221236020420012004410a6a360200200241093a00c418200220113a00b8182012450d2720042d000a21112001200e41756a221236020420012004410b6a3602002002410a3a00c418200220113a00b9182012450d2720042d000b21112001200e41746a221236020420012004410c6a3602002002410b3a00c418200220113a00ba182012450d2720042d000c21112001200e41736a221236020420012004410d6a3602002002410c3a00c418200220113a00bb182012450d2720042d000d21112001200e41726a221236020420012004410e6a3602002002410d3a00c418200220113a00bc182012450d2720042d000e21112001200e41716a221236020420012004410f6a3602002002410e3a00c418200220113a00bd182012450d2720042d000f21112001200e41706a22123602042001200441106a3602002002410f3a00c418200220113a00be182012450d2720042d001021112001200e416f6a22123602042001200441116a360200200241103a00c418200220113a00bf182012450d2720042d001121112001200e416e6a22123602042001200441126a360200200241113a00c418200220113a00c0182012450d2720042d001221112001200e416d6a22123602042001200441136a360200200241123a00c418200220113a00c1182012450d2720042d001321112001200e416c6a22123602042001200441146a360200200241133a00c418200220113a00c2182012450d2720042d001421112001200e416b6a3602042001200441156a360200200220113a00c31820022802b418220441087420022802b018221a4118767221242004411876212e201a410876212520022903b818211020022802c018212b410121190c250b2005200641b8b2c0001056000b2005200641b8b2c0001056000b2005200641b8b2c0001056000b2005200741b8b2c0001056000b2005200741b8b2c0001056000b2005200741b8b2c0001056000b2005200741b8b2c0001056000b2005200741b8b2c0001056000b2005200741b8b2c0001056000b2003200741b8b2c0001056000b2027202641b8b2c0001056000b2005200641b8b2c0001056000b2005200341b8b2c0001056000b2003200741b8b2c0001056000b2005200741b8b2c0001056000b2005200341b8b2c0001056000b2005200741b8b2c0001056000b20052d0003210620012003417c6a22073602042001200541046a360200200241023a009416200220063a0081162007450d1f20052d0004210620012003417b6a22073602042001200541056a360200200241033a009416200220063a0082162007450d1f20052d0005210620012003417a6a22073602042001200541066a360200200241043a009416200220063a0083162007450d1f20052d000621062001200341796a22073602042001200541076a360200200241053a009416200220063a0084162007450d1f20052d000721062001200341786a22073602042001200541086a360200200241063a009416200220063a0085162007450d1f20052d000821062001200341776a22073602042001200541096a360200200241073a009416200220063a0086162007450d1f20052d000921062001200341766a220736020420012005410a6a360200200241083a009416200220063a0087162007450d1f20052d000a21062001200341756a220736020420012005410b6a360200200241093a009416200220063a0088162007450d1f20052d000b21062001200341746a220736020420012005410c6a3602002002410a3a009416200220063a0089162007450d1f20052d000c21062001200341736a220736020420012005410d6a3602002002410b3a009416200220063a008a162007450d1f20052d000d21062001200341726a220736020420012005410e6a3602002002410c3a009416200220063a008b162007450d1f20052d000e21062001200341716a220736020420012005410f6a3602002002410d3a009416200220063a008c162007450d1f20052d000f21062001200341706a22073602042001200541106a3602002002410e3a009416200220063a008d162007450d1f20052d0010210620012003416f6a22073602042001200541116a3602002002410f3a009416200220063a008e162007450d1f20052d0011210620012003416e6a22073602042001200541126a360200200241103a009416200220063a008f162007450d1f20052d0012210620012003416d6a22073602042001200541136a360200200241113a009416200220063a0090162007450d1f20052d0013210620012003416c6a22073602042001200541146a360200200241123a009416200220063a0091162007450d1f20052d0014210620012003416b6a22073602042001200541156a360200200241133a009416200220063a00921620070d1e0c1f0b20052d0003210620012003417c6a22073602042001200541046a360200200241023a009416200220063a0081162007450d2120052d0004210620012003417b6a22073602042001200541056a360200200241033a009416200220063a0082162007450d2120052d0005210620012003417a6a22073602042001200541066a360200200241043a009416200220063a0083162007450d2120052d000621062001200341796a22073602042001200541076a360200200241053a009416200220063a0084162007450d2120052d000721062001200341786a22073602042001200541086a360200200241063a009416200220063a0085162007450d2120052d000821062001200341776a22073602042001200541096a360200200241073a009416200220063a0086162007450d2120052d000921062001200341766a220736020420012005410a6a360200200241083a009416200220063a0087162007450d2120052d000a21062001200341756a220736020420012005410b6a360200200241093a009416200220063a0088162007450d2120052d000b21062001200341746a220736020420012005410c6a3602002002410a3a009416200220063a0089162007450d2120052d000c21062001200341736a220736020420012005410d6a3602002002410b3a009416200220063a008a162007450d2120052d000d21062001200341726a220736020420012005410e6a3602002002410c3a009416200220063a008b162007450d2120052d000e21062001200341716a220736020420012005410f6a3602002002410d3a009416200220063a008c162007450d2120052d000f21062001200341706a22073602042001200541106a3602002002410e3a009416200220063a008d162007450d2120052d0010210620012003416f6a22073602042001200541116a3602002002410f3a009416200220063a008e162007450d2120052d0011210620012003416e6a22073602042001200541126a360200200241103a009416200220063a008f162007450d2120052d0012210620012003416d6a22073602042001200541136a360200200241113a009416200220063a0090162007450d2120052d0013210620012003416c6a22073602042001200541146a360200200241123a009416200220063a0091162007450d2120052d0014210620012003416b6a22073602042001200541156a360200200241133a009416200220063a00921620070d1f0c210b2000411c3602000c380b024002402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d0020024198126a2001109606200228029812450d00200241d8106a20024198126a41c00110e9081a20024198126a200110a401024002402002290398124201510d00200241880b6a41286a2205200241c8126a290300370300200241880b6a41206a220320024198126a41286a290300370300200241880b6a41186a220620024198126a41206a290300370300200241880b6a41106a220720024198126a41186a290300370300200241880b6a41086a220a20024198126a41106a290300370300200220022903a0123703880b2004280200220441044f0d010b200241d8106a109b060c010b2001280200220e280000210920012004417c6a3602042001200e41046a36020020022802d8102104200241980f6a200241d8106a41047241bc0110e9081a200241a00a6a41286a2005290300370300200241a00a6a41206a2003290300370300200241a00a6a41186a2006290300370300200241a00a6a41106a2007290300370300200241a00a6a41086a200a290300370300200220022903880b3703a00a2004450d00200241b0186a41286a200241a00a6a41286a290300370300200241b0186a41206a200241a00a6a41206a290300370300200241b0186a41186a200241a00a6a41186a290300370300200241b0186a41106a200241a00a6a41106a290300370300200241b0186a41086a200241a00a6a41086a290300370300200220022903a00a3703b018200220043602e018200241e4186a200241980f6a41bc0110e9082105200220093602a01a20024190086a200110ab0102402002280290080d00200228029408210320024188086a200110ab01200228028808450d020b200241e0186a109b060b2000411c3602000c380b200228028c082101200241e80e6a41286a2206200241b0186a41286a290300370300200241e80e6a41206a2207200241b0186a41206a290300370300200241e80e6a41186a220a200241b0186a41186a290300370300200241e80e6a41106a220e200241b0186a41106a290300370300200241e80e6a41086a2209200241b0186a41086a290300370300200220022903b0183703e80e20024180166a200541c40110e9081a200241b80e6a41086a22052009290300370300200241b80e6a41106a2209200e290300370300200241b80e6a41186a220e200a290300370300200241b80e6a41206a220a2007290300370300200241b80e6a41286a22072006290300370300200220022903e80e3703b80e20024198086a20024180166a41c40110e9081a20024198156a412c6a200729030037020020024198156a41246a200a29030037020020024198156a411c6a200e29030037020020024198156a41146a200929030037020020024198156a410c6a2005290300370200200220022903b80e37029c152000411b36020020002002290298153702042000410c6a20024198156a41086a290200370200200041146a20024198156a41106a2902003702002000411c6a20024198156a41186a290200370200200041246a20024198156a41206a2902003702002000412c6a20024198156a41286a290200370200200041346a200241c8156a280200360200200041386a20043602002000413c6a20024198086a41c40110e9081a20004184026a200136020020004180026a200336020020004188026a20022903900e37030020004190026a200241900e6a41086a29030037030020004198026a200241900e6a41106a290300370300200041a0026a200241900e6a41186a290300370300200041a8026a200241900e6a41206a2903003703000c370b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024002400240024002400240024020060e060001020304050e0b200241c8076a200110ab0120022802c8070d0d2004280200220620022802cc072203490d0d2003417f4c0d3f0240024020030d00410121050c010b200310322205450d42200428020021060b20062003490d0620052001280200200310e9082106200128020422072003490d072001200720036b3602042001200128020020036a3602002006450d0d20024180166a2001109301410121012003ad22084220862008842208a72103024020022d0080164101460d00200242003703a0152002200336029815200220084220883e029c1520024190166a290300220b422088a7210d20024188166a29030021082002419d166a28000021042002419b166a2f0000210a2002419a166a2d0000210e20024198166a2f01002109200228028416210320022f018216210620022d0081162107200ba7210f0c0d0b20030d060c0d0b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120470d000b200441ff01714120490d0d20022900871621082002418f166a290000210b200228029c16210420022f019a16210a20022d009916210e20022f0097162109200228008316210320022f008116210620022d008016210720024198156a41106a20024198086a41106a29000037030020024198156a41086a20024198086a41086a290000370300200220022900980837039815200842808080807083200842ffffffff0f83842108200b422088a7210d200ba7210f410221010c0b0b200641ff0171450d0c200241003a00a0160c0c0b200241e8076a200110ab0120022802e8070d0b2004280200220620022802ec072203490d0b2003417f4c0d3d0240024020030d00410121050c010b200310322205450d40200428020021060b20062003490d0420052001280200200310e9082106200128020422072003490d062001200720036b3602042001200128020020036a3602002006450d0b2003ad2208422086200884210b20024180166a200110930120022d0080164101460d0320024180166a41106a290300210c20024188166a29030021082002419d166a28000021042002419b166a2f0000210a2002419a166a2d0000210e20024198166a2f01002109200228028416210320022f018216210620022d0081162107200241d0076a200110db0420022903d007a70d0320022903d807211020024198156a41106a200241d0076a41106a2903003703002002200b37039815200220103703a015200c422088a7210d200ca7210f410321010c0a0b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120460d090c000b0b200641ff0171450d0a200241003a00a0160c0a0b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120470d000b200441ff01714120490d0a20022900871621082002418f166a290000210b200228029c16210420022f019a16210a20022d009916210e20022f0097162109200228008316210320022f008116210620022d008016210720024198156a41106a20024198086a41106a29000037030020024198156a41086a20024198086a41086a290000370300200220022900980837039815200842808080807083200842ffffffff0f83842108200b422088a7210d200ba7210f410521010c080b200641ff0171450d09200241003a00a0160c090b41002106200241003a00a0162003417d6a21030240034020072006460d0120024180166a20066a200520066a220441026a2d00003a0000200120033602042001200441036a3602002002200641016a22043a00a0162003417f6a21032004210620044120460d060c000b0b200641ff0171450d08200241003a00a0160c080b200ba7450d070b2005102e0c060b2003200741b8b2c0001056000b2003200741b8b2c0001056000b20024198086a41086a220120024180166a41086a29030037030020024198086a41106a220520024180166a41106a29030037030020024198086a41186a220320024180166a41186a290300370300200220022903801637039808200441ff0171411f4d0d0320024198126a41186a20032903002208370300200241d8106a41086a2001290300370300200241d8106a41106a2005290300370300200241d8106a41186a200837030020022002290398083703d81020022d00d810210720022f00d910210620022800db10210320022f00ef10210920022d00f110210e20022f01f210210a20022802f410210420022800eb10210d20022800e710210f20022900df10210820024198156a41106a200241980f6a41106a29000037030020024198156a41086a200241980f6a41086a290000370300200220022900980f37039815410621010c010b20024198086a41086a22052002418f166a29000037030020024198086a41106a220a20024197166a29000037030020024198086a41186a220e20024180166a411f6a2d00003a0000200220022900871637039808200441ff0171411f4d0d0220022d008016210720022f00811621062002280083162103200241980f6a41086a2005290300370300200241980f6a41106a200a290300370300200241980f6a41186a200e2d00003a000020022002290398083703980f200241f0076a200110db0420022903f007a70d02200241f0076a41106a2903002108200220022903f80737039815200220083703a01520022903a80f220b422888200241b00f6a31000042188684a72104200b421888a7210a200b421088a7210e200241a00f6a290300220c422088a7210d20022903980f2108200ba72109200ca7210f410421010b0b200241880b6a41106a221120024198156a41106a290300370300200241880b6a41086a20024198156a41086a290300220b3703002002200229039815220c3703880b200041186a200dad422086200fad84370000200041106a20083700002000412c6a2005360000200020043600252000200a3b00232000200e3a0022200041206a20093b00002000410c6a2003360000200020063b000a200020073a0009200041086a20013a00002000411a360200200041306a200c370200200041386a200b370200200041c0006a2011290300370200200041c8006a200241b0186a41e80110e9081a0c370b2000411c3602000c360b024002402007450d0020052d0001210620012003417e6a3602042001200541026a360200024002400240024002400240024002400240024002400240024020060e090001020304050608070d0b200241d0066a200110db0420022903d006a70d0c200241e0066a290300210b20022903d8062108200241c8066a200110ab0120022802c8060d0c2004280200220620022802cc062203490d0c2003417f4c0d3e0240024020030d00410121050c010b200310322205450d41200428020021060b20062003490d0b20052001280200200310e9082106200128020422072003490d0d2001200720036b3602042001200128020020036a3602002006450d0c2003ad220c422086200c84220c4220882114200ca72103410121010c090b200241e8066a200110ab0120022802e80622010d0b410a410220011b21014200211420022802ec0621050c070b20024188076a200110ab012002280288070d0a200228028c07210520024180166a200110e60120022d0080164105460d0a20024180166a41106a290300210b20024188166a2903002108200241a0166a280200210620024198166a290300210c20022802841621072002280280162103200241f0066a200110db04024020022903f006a70d00200241f0066a41106a290300211320022903f80621102007ad2114410321010c090b200341ff01714102470d0a2008a7450d0a2007102e0c0a0b20024190076a200110ab0120022802900722010d09410a410420011b21014200211420022802940721050c050b20024198076a200110ab0120022802980722010d08410a410520011b210142002114200228029c0721050c040b200241a0076a200110ab0120022802a0070d0720022802a407210520024180166a200110e60120022d0080164105460d072002290380162210422088211420024190166a290300210b20024188166a2903002108200241a0166a280200210620024198166a290300210c2010a721034200211041062101420021130c050b200241a8076a200110ab0120022802a80722010d06410a410720011b21014200211420022802ac0721050c020b200241c0076a200110ab0120022802c0070d0520022802c4072105200241b8076a200110ab0120022802b8070d052004280200220720022802bc072206490d052006417f4c0d370240024020060d00410121030c010b200610322203450d3a200428020021070b0240024020072006490d0020032001280200200610e90821072001280204220420064f0d012006200441b8b2c0001056000b2003102e0c060b2001200420066b3602042001200128020020066a3602002007450d052006ad2208422086200884221442208821084200210b410921010c020b200241b0076a200110ab0120022802b00722010d04410a410820011b21014200211420022802b40721050b0b0b20004119360200200041c0006a2013370200200041386a2010370200200041206a200b370200200041186a2008370200200041306a2006360200200041286a200c3702002000410c6a2005360200200041086a2001360200200041106a20144220862003ad84370200200041c8006a200241b0186a41e80110e9081a0c380b2005102e0b2000411c3602000c360b2003200741b8b2c0001056000b0240024002402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024020060e0400010203080b200241a0066a200110ab01024020022802a006450d0020024100360298080c080b20024198086a200120022802a4061092012002280298082205450d07200229029c08210b0240200110cb042203450d0020022902981622104280808080708321132002290290162208428080808070832114200228028c16210f2002280288162109200228009b12210e20022f009912210a2008a7210d410121010c0a0b200b42ffffff3f8350450d060c070b20074102490d0620052f0002210620012003417c6a3602042001200541046a360200200241b0066a200110ab01024020022802b006450d0020024100360280160c070b20024180166a200120022802b4061092012002280280162205450d06200229028416210b20024180166a200110fe0520022802801622034102460d04200229028416210c200241a8066a200110ab0120022802a8060d042004280200220e20022802ac06220a490d04200a417f4c0d3802400240200a0d00410121070c010b200a10322207450d3b2004280200210e0b200e200a490d0320072001280200200a10e90821092001280204220e200a490d072001200e200a6b36020420012001280200200a6a3602002009450d04200aad220842208620088421102004280200220a450d022001280200220d2d0000210e2001200a417f6a220f3602042001200d41016a3602004100210402400240200e0e020100040b410121040b200f4108490d022010422088a7210e200d29000121082001200a41776a3602042001200d41096a360200200941107621112010421088a7210a2010420888a7211b20104220862009ad84421888a72112410221014100210d4200211042002113420021140c080b20074102490d0520052f0002210a20012003417c6a3602042001200541046a360200200241b8066a200110ab01024020022802b806450d0020024100360280160c060b20024180166a200120022802bc06109201200228028016220e450d05200229028416210820024180166a200110fe0502402002280280164102460d0020024188166a280200210d200229038016211441002105200241003a00a01620042802002107417f21030240034020072005460d0120024180166a20056a200128020022062d00003a00002001200720036a3602042001200641016a3602002002200541016a22063a00a0162003417f6a21032006210520064120470d000b200641ff01714120490d01200720066b22074108490d01200229008716210b2002418f166a2900002118200228029c16210320022f019a16210920022d009916210f20022f0097162111200228008316210520022f008116210620022d00801621042001280200221229000021102001200741786a3602042001201241086a360200200220093b00ab0f2002200f3a00aa0f200220113b01a80f2010428080808070832113200b422088a7ad422086200ba7ad84210b200220033600ad0f20034110762112200341087621112014422088a7210f200220183703a00f20022902a40f210c20022f01ac0f21072014a721092018a7210341032101420021140c090b200541ff0171450d00200241003a00a0160b200842ffffff3f83500d05200e102e0c050b20074102490d0420052f0002210a20012003417c6a3602042001200541046a360200200241c0066a200110ab01024020022802c006450d0020024100360280160c050b20024180166a200120022802c406109201200228028016220e450d0420022902841621080240200428020022034104490d0020012802002207280000210920012003417c6a22053602042001200741046a36020020054104490d002007280004210f2001200341786a22043602042001200741086a36020041002105200241003a00a016200341776a21030240034020042005460d0120024180166a20056a200720056a220641086a2d00003a0000200120033602042001200641096a3602002002200541016a22063a00a0162003417f6a21032006210520064120470d000b20024198086a41086a220120024180166a41086a29030037030020024198086a41106a220520024180166a41106a29030037030020024198086a41186a220320024180166a41186a290300370300200220022903801637039808200641ff0171411f4d0d0120024198126a41186a2003290300220b370300200241d8106a41086a2001290300370300200241d8106a41106a2005290300370300200241d8106a41186a200b37030020022002290398083703d81020022d00d810210420022f00d910210620022800db10210520022f00f310210720022d00f510211120022f01f610211220022900eb10210c20022800e710210320022900df10210b410421014100210d4200211042002113420021140c080b200541ff0171450d00200241003a00a0160b200842ffffff3f83500d04200e102e0c040b2010a7450d010b2007102e0b200b42ffffff3f83500d010b2005102e0b2000411c3602000c360b200a200e41b8b2c0001056000b2000201b3a0029200020113a0026200020043a0009200041183602002000413c6a200f360200200041386a2009360200200041306a20083702002000412c6a200e3602002000412a6a200a3b0100200041276a20123b0000200041246a20073b01002000411c6a200c370200200041186a2003360200200041106a200b3702002000410c6a20053602002000410a6a20063b0100200041086a20013a0000200041c8006a2013201042ffffffff0f8384370200200041c0006a2014200dad84370200200041d0006a200241b0186a41e00110e9081a0c340b20024180166a200110bd03024020022d008016410b460d0020024198086a20024180166a41c80010e9081a20004117360200200041046a20024198086a41c80010e9081a200041cc006a200241b0186a41e40110e9081a0c340b2000411c3602000c330b410f210e0c0c0b200241b0186a200110e60120022d00b0184105460d14200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200220022902a00a3703800e200220022f00e80e3b01fc0d200241bc186a290200210b200241b0186a41206a280200210a200241ce186a2f01002109200241cd186a2d0000210d200241c9186a280000210f200241c7186a2f00002112200241c6186a2d0000211b200241c4186a2f0100211120022902b418210820022802b0182106200241e00d6a41106a20024198086a41106a290200370300200241e00d6a41086a20024198086a41086a29020037030020022002290298083703e00d200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a29020037030020022002290298123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290200370300200241a00d6a41086a200241d8106a41086a290200370300200220022902d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a290200370300200220022902980f3703800d20024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a290200370300200220022902801637039815410e210e0c0b0b200241b0186a200110e60120022d00b0184105460d13200241b0186a41206a2207280200210a200241ce186a2f01002109200241cd186a2d0000210d200241c9186a280000210f200241c7186a2f00002112200241c6186a2d0000211b200241c4186a2f01002111200241bc186a290200210b200241b0186a41086a2204280200210520022802b418210320022802b0182106200241b0186a200110ec03024020022d00b0184106460d00200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200241e00d6a41086a20024198086a41086a290200370300200241e00d6a41106a20024198086a41106a290200370300200220022902a00a3703800e200220022f00e80e3b01fc0d20022002290298083703e00d200241b0186a41186a290300210c200241b0186a41106a29030021102007280200211d2004290300211320022903b0182114200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a29020037030020022002290298123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290200370300200241a00d6a41086a200241d8106a41086a290200370300200220022902d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a290200370300200220022902980f3703800d20024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a2902003703002002200229028016370398152005ad4220862003ad842108410d210e0c0b0b200641ff01714102470d132005450d132003102e0c130b200241b0186a200110e60120022d00b0184105460d12200241b0186a41206a2207280200210a200241ce186a2f01002109200241cd186a2d0000210d200241c9186a280000210f200241c7186a2f00002112200241c6186a2d0000211b200241c4186a2f01002111410c210e200241b0186a410c6a290200210b200241b0186a41086a2204280200210520022802b418210320022802b0182106200241b0186a200110ec03024020022d00b0184106460d00200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200241e00d6a41086a20024198086a41086a290200370300200241e00d6a41106a20024198086a41106a290200370300200220022902a00a3703800e200220022f00e80e3b01fc0d20022002290298083703e00d200241b0186a41186a290300210c200241b0186a41106a29030021102007280200211d2004290300211320022903b0182114200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a29020037030020022002290298123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290200370300200241a00d6a41086a200241d8106a41086a290200370300200220022902d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a290200370300200220022902980f3703800d20024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a2902003703002002200229028016370398152005ad4220862003ad8421080c0a0b200641ff01714102470d122005450d122003102e0c120b200241b0186a200110e60120022d00b0184105460d11200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200220022902a00a3703800e200220022f00e80e3b01fc0d200241bc186a290200210b200241b0186a41206a280200210a200241ce186a2f01002109200241cd186a2d0000210d200241c9186a280000210f200241c7186a2f00002112200241c6186a2d0000211b200241c4186a2f0100211120022902b418210820022802b0182106200241e00d6a41106a20024198086a41106a290200370300200241e00d6a41086a20024198086a41086a29020037030020022002290298083703e00d200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a29020037030020022002290298123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290200370300200241a00d6a41086a200241d8106a41086a290200370300200220022902d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a290200370300200220022902980f3703800d20024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a290200370300200220022902801637039815410b210e0c080b20024198066a200110ab012002280298060d10200228029c062106200241b0186a200110e60120022d00b0184105460d10200241b8186a280200210320022802b418210720022802b01821050240024020042802002204450d00200241d0186a3502002114200241cc186a280200210a200241ca186a2f01002109200241c9186a2d0000210d200241c5186a280000210f200241c3186a2f00002112200241c2186a2d0000211b200241c0186a2f01002111200241bc186a35020021082001280200220e2d0000211c20012004417f6a221d3602042001200e41016a36020042002113024002400240024002400240201c0e0707000102030405060b201d4110490d05200e41096a290000210c200e290001211020012004416f6a3602042001200e41116a360200420121130c060b420221130c050b420321130c040b420421130c030b420521130c020b420621130c010b200541ff01714102470d112003450d112007102e0c110b200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200241e00d6a41086a20024198086a41086a290200370300200241e00d6a41106a20024198086a41106a290200370300200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022902a00a3703800e200220022f00e80e3b01fc0d20022002290298083703e00d200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a290200370300200241bc0d6a41026a200241900e6a41026a2d00003a0000200241a00d6a41086a200241d8106a41086a290200370300200241a00d6a41106a200241d8106a41106a2902003703002002419c0d6a41026a200241a0146a41026a2d00003a000020022002290298123703c00d200220022f00900e3b01bc0d200220022902d8103703a00d200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a29020037030020024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a290200370300200220022902980f3703800d20022002290280163703981520084220862003ad84210b2007ad4220862005ad842108410a210e0c070b20024190066a200110ab012002280290060d0f200428020022054108490d0f20022802940621062001280200220329000021082001200541786a3602042001200341086a360200200842ff01560d0f200241800e6a41086a200241980f6a41086a280200360200200241fc0d6a41026a200241a00a6a41026a2d00003a0000200241e00d6a41086a20024180166a41086a290200370300200241e00d6a41106a20024180166a41106a290200370300200241dc0d6a41026a200241e80e6a41026a2d00003a0000200220022902980f3703800e200220022f00a00a3b01fc0d20022002290280163703e00d200220022f00e80e3b01dc0d200241c00d6a41106a20024198086a41106a290200370300200241c00d6a41086a20024198086a41086a290200370300200241bc0d6a41026a200241b80e6a41026a2d00003a0000200241a00d6a41086a20024198126a41086a290200370300200241a00d6a41106a20024198126a41106a2902003703002002419c0d6a41026a200241900e6a41026a2d00003a000020022002290298083703c00d200220022f00b80e3b01bc0d20022002290298123703a00d200220022f00900e3b019c0d200241800d6a41106a200241d8106a41106a290200370300200241800d6a41086a200241d8106a41086a29020037030020024198156a41206a200241b0186a41206a28020036020020024198156a41186a200241b0186a41186a29020037030020024198156a41106a200241b0186a41106a29020037030020024198156a41086a200241b0186a41086a290200370300200220022902d8103703800d200220022902b01837039815200842ff018321084109210e0c060b20024188066a200110ab012002280288060d0e200228028c06210a20024180166a200110930120022d0080164101460d0e4108210e200241800e6a41086a200241a00a6a41086a280200360200200241fc0d6a41026a200241e80e6a41026a2d00003a0000200241e00d6a41086a20024198086a41086a290200370300200241e00d6a41106a20024198086a41106a290200370300200220022902a00a3703800e200220022f00e80e3b01fc0d20022002290298083703e00d20024180166a41106a290300210b20024180166a41086a290300210820024180166a41186a290300210c20024180166a41206a3100002110200228028416210620022f018216212c20022d008116212d200241dc0d6a41026a200241b80e6a41026a2d00003a0000200220022f00b80e3b01dc0d200241c00d6a41106a20024198126a41106a290200370300200241c00d6a41086a20024198126a41086a29020037030020022002290298123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f00900e3b01bc0d200241a00d6a41106a200241d8106a41106a290200370300200241a00d6a41086a200241d8106a41086a290200370300200220022902d8103703a00d2002419c0d6a41026a200241a0146a41026a2d00003a0000200220022f00a0143b019c0d200241800d6a41106a200241980f6a41106a290200370300200241800d6a41086a200241980f6a41086a290200370300200220022902980f3703800d20024198156a41206a200241b0186a41206a28020036020020024198156a41186a200241b0186a41186a29020037030020024198156a41106a200241b0186a41106a29020037030020024198156a41086a200241b0186a41086a290200370300200220022902b01837039815200c422888201042188684a7210f200c421888a72112200c421088a7211b200ca721110c050b20024180066a200110ab012002280280060d0d2002280284062106200241e8056a200110db0420022903e805a70d0d200241e8056a41106a290300210b20022903f0052108200241800e6a41086a200241980f6a41086a280200360200200241fc0d6a41026a200241a00a6a41026a2d00003a0000200241e00d6a41086a20024180166a41086a290200370300200241e00d6a41106a20024180166a41106a290200370300200241dc0d6a41026a200241e80e6a41026a2d00003a0000200220022902980f3703800e200220022f00a00a3b01fc0d20022002290280163703e00d200220022f00e80e3b01dc0d200241c00d6a41106a20024198086a41106a290200370300200241c00d6a41086a20024198086a41086a290200370300200241bc0d6a41026a200241b80e6a41026a2d00003a0000200241a00d6a41086a20024198126a41086a290200370300200241a00d6a41106a20024198126a41106a2902003703002002419c0d6a41026a200241900e6a41026a2d00003a000020022002290298083703c00d200220022f00b80e3b01bc0d20022002290298123703a00d200220022f00900e3b019c0d200241800d6a41106a200241d8106a41106a290200370300200241800d6a41086a200241d8106a41086a29020037030020024198156a41206a200241b0186a41206a28020036020020024198156a41186a200241b0186a41186a29020037030020024198156a41106a200241b0186a41106a29020037030020024198156a41086a200241b0186a41086a290200370300200220022902d8103703800d200220022902b018370398154107210e0c040b202b4104490d0c2005280002210620012003417a6a3602044106210e2001200541066a360200200241800e6a41086a200241980f6a41086a280200360200200241fc0d6a41026a200241a00a6a41026a2d00003a0000200241e00d6a41086a20024180166a41086a290200370300200241e00d6a41106a20024180166a41106a290200370300200241dc0d6a41026a200241e80e6a41026a2d00003a0000200220022902980f3703800e200220022f00a00a3b01fc0d20022002290280163703e00d200220022f00e80e3b01dc0d200241c00d6a41106a20024198086a41106a290200370300200241c00d6a41086a20024198086a41086a290200370300200241bc0d6a41026a200241b80e6a41026a2d00003a0000200241a00d6a41086a20024198126a41086a290200370300200241a00d6a41106a20024198126a41106a2902003703002002419c0d6a41026a200241900e6a41026a2d00003a000020022002290298083703c00d200220022f00b80e3b01bc0d20022002290298123703a00d200220022f00900e3b019c0d200241800d6a41106a200241d8106a41106a290200370300200241800d6a41086a200241d8106a41086a29020037030020024198156a41206a200241b0186a41206a28020036020020024198156a41186a200241b0186a41186a29020037030020024198156a41106a200241b0186a41106a29020037030020024198156a41086a200241b0186a41086a290200370300200220022902d8103703800d200220022902b018370398154200210b0c030b200241e0056a200110ab0120022802e0050d0b20022802e4052106200241c8056a200110db0420022903c805a70d0b200241c8056a41106a290300210b20022903d0052108200241800e6a41086a200241980f6a41086a280200360200200241fc0d6a41026a200241a00a6a41026a2d00003a0000200241e00d6a41086a20024180166a41086a290200370300200241e00d6a41106a20024180166a41106a290200370300200241dc0d6a41026a200241e80e6a41026a2d00003a0000200220022902980f3703800e200220022f00a00a3b01fc0d20022002290280163703e00d200220022f00e80e3b01dc0d200241c00d6a41106a20024198086a41106a290200370300200241c00d6a41086a20024198086a41086a290200370300200241bc0d6a41026a200241b80e6a41026a2d00003a0000200241a00d6a41086a20024198126a41086a290200370300200241a00d6a41106a20024198126a41106a2902003703002002419c0d6a41026a200241900e6a41026a2d00003a000020022002290298083703c00d200220022f00b80e3b01bc0d20022002290298123703a00d200220022f00900e3b019c0d200241800d6a41106a200241d8106a41106a290200370300200241800d6a41086a200241d8106a41086a29020037030020024198156a41206a200241b0186a41206a28020036020020024198156a41186a200241b0186a41186a29020037030020024198156a41106a200241b0186a41106a29020037030020024198156a41086a200241b0186a41086a290200370300200220022902d8103703800d200220022902b018370398154105210e0c020b200241c0056a200110ab0120022802c0050d0a20022802c405220a200428020041c4006e22052005200a4b1bad42c4007e2208422088a70d222008a72205417f4c0d220240024020050d00410421060c010b2005102c2206450d250b200541c4006ead2108024002400240200a450d004100210e0340200241003a00d018200e41016a210e2004280200417f6a2105410021030240024003402005417f460d01200241b0186a20036a200128020022072d00003a0000200120053602042001200741016a3602002002200341016a22073a00d0182005417f6a21052007210320074120470d000b20024198086a41086a2205200241b0186a41086a29030037030020024198086a41106a2203200241b0186a41106a220d29030037030020024198086a41186a2209200241b0186a41186a290300370300200220022903b01837039808200741ff0171411f4b0d010c050b200341ff0171450d04200241003a00d0180c040b200241d8106a41086a2005290300370300200241d8106a41106a2003290300370300200241d8106a41186a200929030037030020022002290398083703d810200241b0186a200110ec0320022d00b01822034106460d03200d290300210c20022903b818211020022f01d218210720022d00d118210920022800cd18210d20022f00cb18210f20022d00ca18211120022f01c818211220022802b418211b20022f01b218211c20022d00b118211d20022800db10211f20022f00d910211e20022d00d810212720022f00ef10210520022d00f110212620022f01f210212020022802f410212120022900df10210b200220022900e7103703a00f2002200b3703980f200220213600ad0f200220203b00ab0f200220263a00aa0f200220053b01a80f02402008422088220ba722052008a7470d00200541016a22262005490d2720054101742220202620262020491b22264104202641044b1bad42c4007e220b422088a7454102742126200ba721200240024020050d00200241003602b0180c010b200241043602b818200220063602b0182002200541c4006c3602b4180b20024198086a20202026200241b0186a107d20022802a00821262002280298084101460d03200228029c0821062008422088220ba72105202641c4006ead21080b2006200541c4006c6a2205201f3600032005201e3b0001200520273a0000200241980f6a41186a2d0000211f200241980f6a41106a2903002113200241980f6a41086a290300211420022903980f2118200541306a200c37000020052010370028200520183700072005410f6a2014370000200541176a20133700002005411f6a201f3a0000200520073b0042200520093a00412005200d36003d2005200f3b003b200520113a003a200520123b00382005201b3600242005201c3b00222005201d3a0021200520033a0020200b422086200842ffffffff0f83844280808080107c2108200e200a470d000b0b2006450d0c200241800e6a41086a200241a0146a41086a280200360200200241fc0d6a41026a200241b4146a41026a2d00003a0000200241e00d6a41086a200241a00a6a41086a290200370300200241e00d6a41106a200241a00a6a41106a290200370300200241dc0d6a41026a200241b0146a41026a2d00003a0000200220022902a0143703800e200220022f00b4143b01fc0d200220022902a00a3703e00d200220022f00b0143b01dc0d200241c00d6a41106a200241e80e6a41106a290200370300200241c00d6a41086a200241e80e6a41086a290200370300200241bc0d6a41026a200241ac146a41026a2d00003a0000200241a00d6a41086a200241b80e6a41086a290200370300200241a00d6a41106a200241b80e6a41106a2902003703002002419c0d6a41026a2002419d146a41026a2d00003a0000200220022902e80e3703c00d200220022f00ac143b01bc0d200220022902b80e3703a00d200220022f009d143b019c0d200241800d6a41106a200241900e6a41106a290200370300200241800d6a41086a200241900e6a41086a29020037030020024198156a41206a20024180166a41206a28020036020020024198156a41186a20024180166a41186a29020037030020024198156a41106a20024180166a41106a29020037030020024198156a41086a20024180166a41086a290200370300200220022902900e3703800d2002200229028016370398154103210e0c030b20260d250c230b02402008422088a72201450d00200141c4006c2105200641286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102e0b200141c4006a2101200541bc7f6a22050d000b0b2008a72201450d0a200141c4006c0d090c0a0b200241b0186a200110ec0320022d00b018222f4106460d024102210e200241b80e6a41026a220420022d00b3183a000020024180166a41086a2230200241c4186a29020037030020024180166a41106a2231200241cc186a290200370300200220022f00b1183b01b80e2002200241bc186a29020037038016200241b0186a41086a2211280200213220022802b4182133200241b0186a200110ec03024020022d00b0184106470d00202f4101470d032032450d032033102e0c030b200241980f6a41206a2201200241b0186a41206a280200360200200241980f6a41186a2234200241b0186a41186a290300370300200241980f6a41106a2235200241b0186a41106a290300370300200241980f6a41086a22362011290300370300200241800e6a41086a200241a00a6a41086a280200360200200220022903b0183703980f200220022903a00a3703800e20022f01e80e211120022d00ea0e211b20022f00eb0e2112200241fc0d6a41026a200241b4146a41026a2d00003a0000200220022f01b4143b01fc0d200241e00d6a41106a200241d8106a41106a290300370300200241e00d6a41086a200241d8106a41086a290300370300200220022903d8103703e00d200241dc0d6a41026a200241a0146a41026a2d00003a0000200220022f01a0143b01dc0d200241c00d6a41106a20024198126a41106a290300370300200241c00d6a41086a20024198126a41086a29030037030020022002290398123703c00d200241bc0d6a41026a200241900e6a41026a2d00003a0000200220022f01900e3b01bc0d200241a00d6a41106a20024198086a41106a290300370300200241a00d6a41086a20024198086a41086a29030037030020022002290398083703a00d2002419c0d6a41026a20042d00003a0000200220022f01b80e3b019c0d200241800d6a41106a2031290300370300200241800d6a41086a203029030037030020022002290380163703800d20024198156a41206a200128020036020020024198156a41186a203429030037030020024198156a41106a203529030037030020024198156a41086a2036290300370300200220022903980f370398152010420886202ead42ff0183842118202bad42088620104238888442ffffffffff1f8321172007ad422086202dad8421102003ad422086200b842113202cad4220862005ad84210b0b200241f00c6a41086a2201200241800e6a41086a280200360200200241ec0c6a41026a2205200241fc0d6a41026a2d00003a0000200241d00c6a41086a2203200241e00d6a41086a290300370300200241d00c6a41106a2207200241e00d6a41106a290300370300200241cc0c6a41026a2204200241dc0d6a41026a2d00003a0000200220022903800e3703f00c200220022f01fc0d3b01ec0c200220022903e00d3703d00c200220022f01dc0d3b01cc0c200241b00c6a41106a222b200241c00d6a41106a290300370300200241b00c6a41086a222e200241c00d6a41086a290300370300200241ac0c6a41026a2230200241bc0d6a41026a2d00003a0000200241900c6a41086a2231200241a00d6a41086a290300370300200241900c6a41106a2234200241a00d6a41106a2903003703002002418c0c6a41026a22352002419c0d6a41026a2d00003a0000200220022903c00d3703b00c200220022f01bc0d3b01ac0c200220022903a00d3703900c200220022f019c0d3b018c0c200241f00b6a41106a2236200241800d6a41106a290300370300200241f00b6a41086a2237200241800d6a41086a290300370300200241880b6a41206a223820024198156a41206a280200360200200241880b6a41186a223920024198156a41186a290300370300200241880b6a41106a223a20024198156a41106a290300370300200241880b6a41086a223b20024198156a41086a290300370300200220022903800d3703f00b20022002290398153703880b200041c8006a200c370200200041c0006a2010370200200041186a200b370200200041106a2008370200200041d0006a201d360200200041386a2013370200200041306a20143702002000412c6a200a360200200020093b002a2000200d3a0029200041256a200f360000200020123b00232000201b3a0022200041206a20113b01002000410c6a20063602002000202c3b000a2000202d3a0009200041086a200e3a000020004116360200200041e0006a201c3a0000200041d4006a20022903f00c370200200041dc006a2001280200360200200041e4006a201e360200200041e8006a201f360200200020022f01ec0c3b0061200041e3006a20052d00003a0000200041ec006a20022903d00c370200200041f4006a2003290300370200200041fc006a200729030037020020004184016a20273a000020004187016a20042d00003a0000200020022f01cc0c3b0085012000418c016a202636020020004188016a2020360200200041a0016a202b29030037020020004198016a202e29030037020020004190016a20022903b00c370200200041a8016a20213a0000200041ab016a20302d00003a0000200020022f01ac0c3b00a901200041b0016a2022360200200041ac016a2023360200200041c4016a2034290300370200200041bc016a2031290300370200200041b4016a20022903900c370200200041cc016a202f3a0000200041cf016a20352d00003a0000200020022f018c0c3b00cd01200041d4016a2032360200200041d0016a2033360200200041e8016a2036290300370200200041e0016a2037290300370200200041d8016a20022903f00b37020020004190026a203828020036020020004188026a203929030037020020004180026a203a290300370200200041f8016a203b290300370200200041f0016a20022903880b370200200041a4026a20173700002000419c026a201837000020004198026a2024360000200020253b0096022000201a3a00950220004194026a20193a00000c250b200241003a00c4180b20214101470d002022450d002023102e0b20274101470d002026450d002020102e0b201c4101470d00201f450d00201e102e0b200341ff01714101470d002007450d00202d102e0b200541ff01714101470d0020022802e80e450d00202c102e0b02402008422088a72201450d002006200141c8006c6a2105200621010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200141c8006a22012005470d000b0b2008a72201450d01200141c8006c450d010b2006102e0b2000411c3602000c1c0b20052d0015210720012003416a6a22063602042001200541166a2205360200200220073a009316200229038816210b200228029016210e2002280280162103200228028416210a200241003a0094162006450d0420052d0000210720012006417f6a2204360204200241013a0094162001200541016a360200200220073a00801602402004450d0020052d0001210720012006417e6a2204360204200241023a0094162001200541026a360200200220073a0081162004450d0020052d0002210720012006417d6a2204360204200241033a0094162001200541036a360200200220073a0082162004450d0020052d0003210720012006417c6a2204360204200241043a0094162001200541046a360200200220073a0083162004450d0020052d0004210720012006417b6a2204360204200241053a0094162001200541056a360200200220073a0084162004450d0020052d0005210720012006417a6a2204360204200241063a0094162001200541066a360200200220073a0085162004450d0020052d000621072001200641796a2204360204200241073a0094162001200541076a360200200220073a0086162004450d0020052d000721072001200641786a2204360204200241083a0094162001200541086a360200200220073a0087162004450d0020052d000821072001200641776a2204360204200241093a0094162001200541096a360200200220073a0088162004450d0020052d000921072001200641766a22043602042002410a3a00941620012005410a6a360200200220073a0089162004450d0020052d000a21072001200641756a22043602042002410b3a00941620012005410b6a360200200220073a008a162004450d0020052d000b21072001200641746a22043602042002410c3a00941620012005410c6a360200200220073a008b162004450d0020052d000c21072001200641736a22043602042002410d3a00941620012005410d6a360200200220073a008c162004450d0020052d000d21072001200641726a22043602042002410e3a00941620012005410e6a360200200220073a008d162004450d0020052d000e21072001200641716a22043602042002410f3a00941620012005410f6a360200200220073a008e162004450d0020052d000f21072001200641706a2204360204200241103a0094162001200541106a360200200220073a008f162004450d0020052d0010210720012006416f6a2204360204200241113a0094162001200541116a360200200220073a0090162004450d0020052d0011210720012006416e6a2204360204200241123a0094162001200541126a360200200220073a0091162004450d0020052d0012210720012006416d6a2204360204200241133a0094162001200541136a360200200220073a0092162004450d0020052d0013210720012006416c6a22063602042001200541146a2205360200200220073a009316024020060d00200241023a00880b0c060b200228028416210720022802801621042002290388162108200228029016210920052d0000210d20012006417f6a3602042001200541016a3602000240024002400240200d0e020102000b200241023a00880b0c080b200241003a00880b0c010b20024180166a2001109301024020022d0080164101470d00200241023a00880b0c070b200241f0106a20024199166a290000370300200241e8106a20024191166a290000370300200241e0106a20024189166a290000370300200220022900811622133703d810200241e7106a290000210c20022900df10211020022f00ef10210120022d00f110210520022f01f210210620022802f410210d20022f00d910210f200220022800db1036028c0b2002200f3b018a0b200220133c00890b200241013a00880b2002200d36009d15200220063b009b15200220053a009a15200220013b019815200228029812211d0b2003410876210620044108762101200241a4086a2009410874ad2008423888843e0200200220022d008f0b3a00980f200220084208862007411876ad8437029c082002200741087420044118767236029808200941187620022f01880b20022d008a0b41107472410874722112200ead420886200b4238888442ffffffffff1f832108200220103700990f2010423888200c42088684a7211120022900991522134230882110200b420886200a411876ad84210b200a41087420034118767221052013421088a72107200c422088a72109200c421088a7210d200c420888a7210f200228008b0b211f20022d009815210e20024198086a41086a2903002114200228029c12211c20022f01a012211b20022f01a212212620022802a412211e20022802a812212020022802ac12212120022903980f210c20022903980821182013a7210a42002113410521270c030b200241003a0094160c040b200241003a0094160c030b20052d0015210720012003416a6a22063602042001200541166a2205360200200220073a00931620022002290388163702a008200220022802841636029c08200220022802801622033602980820022002280290163602a80820064110490d02200541086a2900002114200529000021182001200641706a22073602042001200541106a3602002007450d0220052d0010210420012006416f6a221b3602042001200541116a221c360200410021120240024020040e020100040b201b4110490d03200541196a29000021082005290011210c20012006415f6a22073602042001200541216a36020020074110490d03200541296a29000021102005290021210b20012006414f6a22073602042001200541316a360200200741034d0d032005280031210720012006414b6a221b3602042001200541356a221c3602002002200b370390162002200837038816200220073602a016200228029416210720022f019216210a20022d009116210e20022f008b16210d200228008d16210920022d008a16210f20022f018816211120022903a0162113410121120b41000d02201b450d02201c2d000021052001201b417f6a22063602042001201c41016a36020041022127410221040240024020050e020100040b2006450d03201c2d000121052001201b417e6a3602042001201c41026a36020041002104024020050e020100040b410121040b2003410876210620023500a708200241ab086a310000422086842108200229009f08210b200228009b0821054100211f0b2000200e3a00492000200f3a0042200020013b011e200020043a001d200020063b000a200020033a0009200041133602002000411c6a20084220883c0000200041186a20083e0000200041d8006a2013370200200041d0006a2010370200200041286a2014370200200041206a2018370200200041f4006a2021360200200041f0006a2020360200200041ec006a201e360200200041ea006a20263b0100200041e8006a201b3b0100200041e4006a201c360200200041e0006a201d360200200041cc006a2007360200200041ca006a200a3b0100200041c5006a2009360000200041c3006a200d3b0000200041c0006a20113b0100200041386a200c370200200041346a201f360200200041306a2012360200200041106a200b3700002000410c6a2005360000200041086a20273a0000200041f8006a200241b0186a41b80110e9081a0c180b200241003a0094160b2000411c3602000c160b2000200a3b00462000200e3a00452000201c3600412000201b3b003f2000201d3a003e2000201e3b0026200020273a002520002026360021200020123b001f200020203a001e200020073b0006200020043a0005200020053a000420004111360200200041346a200c3700002000412c6a200b3700002000410c6a20083700002000413c6a20113b0000200041286a201f3600002000411c6a200f3b0000200041086a2003360000200041146a2009ad422086200dad84370000200041c8006a200241b0186a41e80110e9081a0c150b2000411c3602000c140b200020093a000920004110360200200041286a200b370200200041146a200a360200200041106a200e3602002000410c6a2007360200200041086a200d3a0000200041206a200c421886200fad220b42088884370200200041186a200b423886200842ffffffffffffffff008384370200200041306a200241b0186a41800210e9081a0c130b2000411c3602000c120b20024198086a41086a22012002418f166a29000037030020024198086a41106a220320024197166a29000037030020024198086a41186a220620024180166a411f6a2d00003a0000200220022900871637039808200441ff0171411f4d0d0320022d008016210720022f008116210a200228008316210520024198126a41186a20062d000022063a0000200241980f6a41086a20012903002208370300200241980f6a41106a22012003290300370300200241980f6a41186a20063a00002002200229039808220b3703980f20012f01002112200228029c0f211120022d00aa0f211b20022f00ab0f210f20022800ad0f210d20022802a40f211c200ba721032008a721044106211d41002109420021080b0c010b20024198086a41086a22032002418f166a29000037030020024198086a41106a220620024197166a29000037030020024198086a41186a220e20024180166a411f6a2d00003a0000200220022900871637039808200a41ff0171411f4d0d0120022d008016210720022f008116210a2002280083162105200241d8106a41086a2003290300370300200241d8106a41106a2006290300370300200241d8106a41186a200e2d00003a000020022002290398083703d810200241a0046a200110ab0120022802a0040d0120042802002203450d0120022802a4042106200128020022042d0000210e20012003417f6a3602042001200441016a3602004100210102400240200e0e020100030b410121010b20022903d8102208422088a72111200241e0106a290300220b422088a7211c20022800ed10210d20022f00eb10210f20022d00ea10211b20022f01e81021122008a72103200ba721044104211d0b200020013a00292000200f3b00232000201b3a00222000200a3b000a200020073a00092000410f360200200041386a2008370200200041346a2009360200200041306a200e3602002000412c6a2006360200200041256a200d360000200041206a20123b0100200041146a2011360200200041106a20033602002000410c6a2005360200200041086a201d3a0000200041186a201cad4220862004ad84370200200041c0006a200241b0186a41f00110e9081a0c0e0b2000411c3602000c0d0b20024198086a41086a220620024180166a41086a29030037030020024198086a41106a220720024180166a41106a29030037030020024198086a41186a220e20024180166a41186a290300370300200220022903801637039808200a41ff0171411f4d0d01200241d8106a41086a2006290300370300200241d8106a41106a2007290300370300200241d8106a41186a200e29030037030020022002290398083703d8102003417e6a200a460d012005200a6a220541026a2d000021062001200320046a22043602042001200541036a3602004100211e0240024020060e020100030b20044104490d02200541036a280000210720012003200a6b41796a3602042001200541076a3602004101211e0b20022900df10220c422088a7211c200241e7106a290000210820022802f410211120022f01f210210f20022d00f110211220022f00ef10210a20022800db10210e20022f00d910210920022d00d810210d2007ad210b200ca7211d4200210c4118211b0c020b20024198086a41086a22062002418f166a29000037030020024198086a41106a220720024197166a29000037030020024198086a41186a220420024180166a411f6a2d00003a0000200220022900871637039808200a41ff0171411f4d0d0020022d008016210d20022f0081162109200228008316210e200241980f6a41086a2006290300370300200241980f6a41106a2007290300370300200241980f6a41186a20042d00003a000020022002290398083703980f2003200a6b2203417e6a4104490d00200f280000211e20012003417a6a36020420012005200a6a41066a36020020022903a80f220b422888200241b00f6a31000042188684a72111200b421888a7210f200b421088a7211220022903980f220c422088a7211c200241a00f6a2903002108200ba7210a200ca7211d4200210b4117211b4200210c0c010b2000411c3602000c0a0b200020273b012a2000201f3a00292000200f3b0023200020123a0022200020093b000a2000200d3a00092000410d360200200041386a200c370200200041306a200b3702002000412c6a201e360200200041256a2011360000200041206a200a3b0100200041186a2008370200200041146a201c360200200041106a201d3602002000410c6a200e360200200041086a201b3a0000200041c0006a200241b0186a41f00110e9081a0c090b2000411c3602000c080b41002112420021100b0b200020233a0049200020203a0042200020273b002a2000201e3a00292000201c3b00232000201f3a00222000200f3b010a2000200a3a000920004107360200200041d8006a200c370200200041d0006a200b370200200041cc006a2025360200200041ca006a20243b0100200041c5006a2022360000200041c3006a20213b0000200041c0006a20263b0100200041386a2013370200200041346a2009360200200041306a20113602002000412c6a200e360200200041256a201d360000200041206a201b3b01002000410c6a2007360200200041086a200d3a0000200041186a2010422086200842208884370200200041106a2008422086201a201241ff017172ad84370200200041e0006a200241b0186a41d00110e9081a0c050b1038000b2000411c3602000c030b1036000b2006102e0b2000411c3602000b200241c01b6a24000b940704027f017e097f037e23004190026b22032400024002400240024002402002200128020441286e2204200420024b1bad42287e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102c2206450d020b200441286e2107024020020d00410021020c040b410021080340200341003a00c8012008220941016a21082001280204210a417f210b41002104024002400340200a2004460d01200341a8016a20046a2001280200220c2d00003a00002001200a200b6a3602042001200c41016a3602002003200441016a220c3a00c801200b417f6a210b200c2104200c4120470d000b200341d0016a41086a2204200341a8016a41086a290300370300200341d0016a41106a220b200341a8016a41106a290300370300200341d0016a41186a220d200341a8016a41186a290300370300200320032903a8013703d001200c41ff0171411f4b0d010c050b200441ff0171450d04200341003a00c8010c040b200341e8006a41086a220e2004290300370300200341e8006a41106a2204200b290300370300200341e8006a41186a220b200d290300370300200320032903d001370368200a200c6b220c4108490d032001280200220a29000021052001200c41786a3602042001200a41086a360200200341286a41086a200e290300220f370300200341286a41106a20042903002210370300200341286a41186a200b2903002211370300200341086a41186a220b2011370300200341086a41106a220c2010370300200341086a41086a220a200f37030020032003290368220f3703282003200f3703080240024020092007470d0020094101742204200941016a2207200420074b1b22044104200441044b1bad42287e220f422088a7454103742104200fa721070240024020090d00200341003602a8010c010b200341083602b001200320063602a8012003200941286c3602ac010b200341d0016a20072004200341a8016a107d20032802d801210420032802d0014101460d0120032802d4012106200441286e21070b2006200941286c6a22042003290308370300200a290300210f200c2903002110200b290300211120042005370320200441186a2011370300200441106a2010370300200441086a200f37030020082002460d050c010b0b20040d010b1038000b1036000b200041003602002007450d01200741286c450d012006102e0c010b2000200736020420002006360200200041086a20023602000b20034190026a24000baf0102017f017e230041106b2203240002402001450d002001410674210103400240024020002903004201510d00200341003a000020022003410110740c010b200341013a000020022003410110742002200041206a41201074200041086a29030021042003200041106a2903003703082003200437030020022003411010742003200041186a29030037030020022003410810740b200041c0006a2100200141406a22010d000b0b200341106a24000b9e0101027f230041106b22032400024002402001450d002000200141c4006c6a210403402003200028020036020020022003410410744120102c2201450d0220034220370204200320013602002003200041046a2200412010742002200328020022012003280208107402402003280204450d002001102e0b2002200041206a41201074200041c0006a22002004470d000b0b200341106a24000f0b1036000b740002402001450d002000200141e0016c6a2101034020022000412010742002200041206a412010742002200041c0006a412010742002200041e0006a41201074200220004180016a412010742002200041a0016a412010742002200041c0016a41201074200041e0016a22002001470d000b0b0bb40203027f017e027f230041106b2203240002402001450d002000200141d8006c6a210403402002200041386a41201074200029030021052003200041086a2903003703082003200537030020022003411010742000280220210120002802282206200210760240200641306c2206450d00200120066a210603402002200141201074200141206a29030021052003200141286a290300370308200320053703002002200341101074200141306a22012006470d000b0b200041d8006a2107200028022c2101200041346a28020022062002107602402006450d002006410574210603402002200141201074200141206a2101200641606a22060d000b0b200029031021052003200041186a2903003703082003200537030020022003411010742007210020072004470d000b0b200341106a24000ba40102017f017e230041106b2203240002402001450d002001410574210103402002200041106a41081074200029030021042003200041086a29030037030820032004370300200220034110107402400240024002400240200041186a2d00000e03000102040b200341003a00000c020b200341013a00000c010b200341023a00000b20022003410110740b200041206a2100200141606a22010d000b0b200341106a24000bff0101027f230041106b2203240002400240200141c4006c2201450d0003400240024020002d00004101460d00200341003a000020022003410110742003200041046a28020036020020022003410410740c010b200341013a000020022003410110744120102c2204450d0320034220370204200320043602002003200041016a412010742002200328020022042003280208107402402003280204450d002004102e0b0240200041216a2d00004101460d00200341003a000020022003410110740c010b200341013a000020022003410110742002200041226a412010740b200041c4006a2100200141bc7f6a22010d000b0b200341106a24000f0b1036000b930201057f230041106b2203240002402001450d0020002001411c6c6a2104034020002802002105200028020822012002107602402001450d002005200141e0006c6a210603402005200210a101200528025021012005280258220720021076200541e0006a210502402007450d002007410574210703402002200141201074200141206a2101200741606a22070d000b0b20052006470d000b0b2000411c6a2105200028020c2101200028021422072002107602402007450d00200741027421070340200320012802003602082002200341086a41041074200141046a21012007417c6a22070d000b0b2003200028021836020c20022003410c6a410410742005210020052004470d000b0b200341106a24000b9c0101027f230041106b2202240020012000412010742002200041206a360204200241046a200110af012002200041306a360208200241086a200110af01200041c0006a2802002103200041c8006a28020022002001107602402000450d00200041306c210003402001200341106a412010742002200336020c2002410c6a200110af01200341306a2103200041506a22000d000b0b200241106a24000bc50101037f230041306b2203240002400240200241046a2204417f4c0d000240024020040d00410121050c010b2004102c2205450d020b200341003602102003200436020c200320053602082002200341086a1076200341086a2001200210742003200328020822022003280210220410a3013703182003412c6a200220046a360200200320023602282003200341206a3602242003200341186a3602202000200341206a107c0240200328020c450d002002102e0b200341306a24000f0b1038000b1036000b1d01017e2001ad4220862000ad841013220029000021022000102e20020bea0304037f027e017f047e230041a0016b22022400200241003a00380240024002400240200128020422034110490d002001280200220441086a2900002105200429000021062001200441106a3602002001200341706a2204360204200241013a00382002200637030820022005370310200441104f0d01200042013703000c020b200042013703000c020b2001280200220441086a2900002105200429000021062001200441106a360200200241086a41186a220720053703002001200341606a2204360204200241023a003820022006370318024020044110490d002001280200220441086a2900002105200429000021062001200441106a360200200241086a41286a20053703002001200341506a360204200241033a003820022006370328200241c0006a41086a200241086a41086a2903002208370300200241c0006a41106a200241086a41106a2903002209370300200241c0006a41186a2007290300220a370300200241c0006a41206a2006370300200241c0006a41286a200537030020022002290308220b370340200041306a2005370300200041286a2006370300200041206a200a370300200041186a2009370300200041106a20083703002000200b370308200042003703000c020b200042013703000b200241003a00380b200241a0016a24000bac0401057f230041106b220241003a000802400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013a00082001200441016a360200200220053a000020060d01200041013a00000c020b200041013a00000f0b200128020022042d0000210520012003417e6a22063602042001200441016a360200200241023a0008200220053a00010240024002400240024002402006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200241033a0008200220053a00022006450d01200128020022042d0000210520012003417c6a22063602042001200441016a360200200241043a0008200220053a00032006450d02200128020022042d0000210520012003417b6a22063602042001200441016a360200200241053a0008200220053a00042006450d03200128020022042d0000210520012003417a6a22063602042001200441016a360200200241063a0008200220053a00052006450d04200128020022042d000021052001200341796a22063602042001200441016a360200200241073a0008200220053a00062006450d05200041003a0000200128020022042d000021052001200341786a3602042001200441016a360200200220053a0007200020022903003700010f0b200041013a00000c050b200041013a00000c040b200041013a00000c030b200041013a00000c020b200041013a00000c010b200041013a00000b200241003a00080bbf0202077f047e230041f0006b22022400200241003a002841002103024002400340200241003a003020012802002204280204220520054100472206490d01200341016a2107200241306a20042802002208200610e9081a2004200520066b3602042004200820066a360200024020050d00200241003a00300b200241086a20036a20022d00303a0000200220073a00282007210320074120470d000b200241306a41086a200241086a41086a2903002209370300200241306a41106a200241086a41106a290300220a370300200241306a41186a200241086a41186a290300220b37030020022002290308220c370330200041196a200b370000200041116a200a370000200041096a20093700002000200c370001200041003a00000c010b200041013a0000200341ff0171450d00200241003a00280b200241f0006a24000bd60301087f230041d0016b2202240041002103200241003a00482001280204417f6a210402400240024003402004417f460d01200241086a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00482004417f6a210420052103200541c000470d000b200241d0006a41086a2204200241086a41086a290300370300200241d0006a41106a2201200241086a41106a290300370300200241d0006a41186a2203200241086a41186a290300370300200241d0006a41206a2206200241086a41206a290300370300200241d0006a41286a2207200241086a41286a290300370300200241d0006a41306a2208200241086a41306a290300370300200241d0006a41386a2209200241086a41386a29030037030020022002290308370350200541ff017141c000490d0120002002290350370001200041003a0000200041396a2009290300370000200041316a2008290300370000200041296a2007290300370000200041216a2006290300370000200041196a2003290300370000200041116a2001290300370000200041096a20042903003700000c020b200041013a0000200341ff0171450d01200241003a00480c010b200041013a00000b200241d0016a24000bef0101047f230041d0016b2202240041002103200241003a00492001280204417f6a210402400240024003402004417f460d01200241086a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00492004417f6a210420052103200541c100470d000b2002418f016a200241086a41c10010e9081a200241ce006a2002418f016a41c10010e9081a200541ff017141c100490d01200041016a200241ce006a41c10010e9081a200041003a00000c020b200041013a0000200341ff0171450d01200241003a00490c010b200041013a00000b200241d0016a24000be20201077f230041206b2202240002400240200041046a2802002203200041086a28020022046b2001410c6a280200200128020822056b22064103752207490d00200028020021030c010b0240200420076a22082004490d00200341017422042008200420084b1b22044104200441044b1b220441ffffffff01712004464102742108200441037421040240024020030d00200241003602100c010b200241186a410436020020022003410374360214200220002802003602100b200220042008200241106a107d200241086a2802002104024020022802004101460d00200020022802042203360200200041046a2004410376360200200041086a28020021040c020b2004450d001036000b1038000b200320044103746a2005200610e9081a20012001410c6a280200360208200041086a2200200028020020076a3602000240200141046a28020041ffffffff0171450d002001280200102e0b200241206a24000bf90302057f017e230041106b22022400200242003c000c200242003e02080240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013a000c2001200441016a360200200220053a000802402006450d00200128020022042d0000210520012003417e6a22063602042001200441016a360200200241023a000c200220053a00092006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200241033a000c200220053a000a2006450d00200128020022042d0000210520012003417c6a3602042001200441016a360200200241043a000c200220053a000b200231000ca741034d0d01200228020821042002200110ab01024002400240024020022802000d002001280204220520022802042203490d002003417f4c0d020240024020030d00410121060c010b200310322206450d04200128020421050b0240024020052003490d0020062001280200200310e90821052001280204220620034f0d012003200641b8b2c0001056000b2006102e0c010b2001200620036b3602042001200128020020036a36020020050d010b200041003602040c050b20002003ad220742208620078437020820002005360204200020043602000c040b1038000b1036000b200241003a000c0b200041003602040b200241106a24000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000ba00402067f017e230041106b22022400200242003c000c200242003e020802400240200128020022032802042204450d00200328020022052d0000210620032004417f6a360204200241013a000c2003200541016a360200200220063a00080240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200200241023a000c200220063a0009200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200200241033a000c200220063a000a200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200200241043a000c200220063a000b200231000ca741034d0d01200228020821042002200110ad01024002400240024020022802000d0020012802002205280204220620022802042203490d002003417f4c0d020240024020030d00410121070c010b200310322207450d042001280200220528020421060b0240024020062003490d0020072005280200200310e90821012005280204220620034f0d012003200641b8b2c0001056000b2007102e0c010b2005200620036b3602042005200528020020036a36020020010d010b200041003602040c050b20002003ad220842208620088437020820002001360204200020043602000c040b1038000b1036000b200241003a000c0b200041003602040b200241106a24000bfb0201057f02400240200128020022022802042203450d00200228020022042d0000210520022003417f6a360204410121032002200441016a3602000240200541037122024103460d0002400240024020020e03000102000b20054102762102410021030c040b200128020022022802042203450d02200228020022012d0000210420022003417f6a360204410121032002200141016a3602002004410874200572220141ffff0371418002490d03200141fcff03714102762102410021030c030b2001280200220228020422034103490d012002280200220141026a2d0000210420012f000021062002200141036a36020020022003417d6a3602042006200441107472410874200572220241808004492103200241027621020c020b0240200541034d0d000c020b2001280200220128020422054104490d0120012802002203280000210220012005417c6a3602042001200341046a36020020024180808080044921030c010b410121030b20002002360204200020033602000bad0201047f230041106b22022400024002402001280208220341146a2204417f4c0d000240024020040d00410121050c010b2004102c2205450d020b20024100360208200220043602042002200536020020022001410c6a411010742001280200210420032002107620022004200310742002200128021c2204412010742002200441206a36020c2002410c6a200210af012002200441306a36020c2002410c6a200210af01200441c0006a2802002101200441c8006a28020022042002107602402004450d00200441306c210403402002200141106a412010742002200136020c200141306a21012002410c6a200210af01200441506a22040d000b0b200020022802002201200228020810b00102402002280204450d002001102e0b200241106a24000f0b1038000b1036000bad0303017f027e027f230041306b2202240002400240024002400240024020002802002200290300220342c000544100200041086a29030022045022051b0d0020034280800154410020051b0d01200342808080800454410020051b0d02411020047920037942c0007c20044200521ba741037622056b41044f0d0341c087c500413641c489c5001039000b20022003a74102743a00182001200241186a410110740c030b20022003a74102744101723b01182001200241186a410210740c020b20022003a74102744102723602182001200241186a410410740c010b2002413320054102746b3a00182001200241186a41011074200029030021032002200041086a290300220437031020022003370308200541706a21000340200220033c00182001200241186a410110742003420888200442388684210320044208882104200041016a22052000492106200521002006450d000b2002200337030820022004370310200320048450450d010b200241306a24000f0b2002412c6a4100360200200241286a41d4e2cc003602002002420137021c2002418888c500360218200241086a200241186a10de04000b4c0020002002ad4220862001ad8410102201290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a2900003700002001102e0b920101047f230041106b22022400024002402000280208220341d8006c4104722204417f4c0d00200028020021002004102c2205450d01200241003602082002200436020420022005360200200320021076200020032002109d012001280200200128020420022802002201200228020810b20102402002280204450d002001102e0b200241106a24000f0b1038000b1036000b18002001ad4220862000ad842003ad4220862002ad84102a0bc00101047f230041106b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102c2205450d0120004100360208200020043602042000200536020020032000107602402003450d002003410574210303404120102c2204450d03200242203702042002200436020020022001412010742000200228020022042002280208107402402002280204450d002004102e0b200141206a2101200341606a22030d000b0b200241106a24000f0b1038000b1036000bd90102047f017e230041106b2202240002400240200128020822034106744104722204417f4c0d00200128020021012004102c2205450d0120004100360208200020043602042000200536020020032000107602402003450d002003410674210303402000200141206a41201074200129030021062002200141086a290300370308200220063703002000200241101074200141106a29030021062002200141186a290300370308200220063703002000200241101074200141c0006a2101200341406a22030d000b0b200241106a24000f0b1038000b1036000bae0101047f230041106b2202240002400240200128020822034103744104722204417f4c0d00200128020021012004102c2205450d0120004100360208200020043602042000200536020020032000107602402003450d00200120034103746a21030340200220012802003602082000200241086a410410742002200141046a28020036020c20002002410c6a41041074200141086a22012003470d000b0b200241106a24000f0b1038000b1036000ba50101047f230041106b2202240020002802002103200028020822002001107602402000450d002003200041386c6a210403402001200341086a41201074200220032903003703082001200241086a41081074200328022821002003280230220520011076200341386a210302402005450d002005410574210503402001200041201074200041206a2100200541606a22050d000b0b20032004470d000b0b200241106a24000b990101037f230041106b2202240020002802002103200028020822002001107602402000450d002003200041c8006c6a2104034020022003108a012001200228020022002002280208107402402002280204450d002000102e0b2002200341246a2203108a012001200228020022002002280208107402402002280204450d002000102e0b200341246a22032004470d000b0b200241106a24000b8d0101037f230041106b22022400200028020021032000280208220020011076024002402000450d002000410574210003404120102c2204450d02200242203702042002200436020020022003412010742001200228020022042002280208107402402002280204450d002004102e0b200341206a2103200041606a22000d000b0b200241106a24000f0b1036000bde0103037f017e017f230041106b22022400200028020021032000280208220020011076024020004106742200450d00200320006a210403402001200341201074200329032021052002200341286a290300370308200220053703002001200241101074200328023021002003280238220620011076200341c0006a21030240200641306c2206450d00200020066a210603402001200041201074200041206a29030021052002200041286a290300370308200220053703002001200241101074200041306a22002006470d000b0b20032004470d000b0b200241106a24000bdc0201047f230041206b2203240002400240200041086a28020022042001490d00024002402004200041046a280200470d00200441016a22052004490d03200441017422062005200620054b1b22054104200541044b1b220541ffffff3f712005464103742106200541057421050240024020040d00200341003602100c010b200341106a41086a410836020020032004410574360214200320002802003602100b200320052006200341106a107d200341086a280200210520032802004101460d0120002003280204360200200041046a20054105763602000b200028020020014105746a220541206a2005200420016b41057410ea081a200541186a200241186a290300370300200541106a200241106a290300370300200541086a200241086a29030037030020052002290300370300200041086a200441016a360200200341206a24000f0b2005450d011036000b200120041045000b1038000bf70301087f200041086a22032802002104410021052003410036020002402004450d004100210541002106024003400240024020050d0020012802002207210803402000280200200641306c6a210903402008450d0320082009412010ec0841004a0d0302400240200228020022082002280204470d00410021080c010b2002200841206a3602000b2001200836020020072009412010ec08210a20082107200a4100480d000b200821072004200641016a22064b0d000b410021050c040b03402000280200200641306c6a210920012802002207210803402008450d0220082009412010ec0841004a0d0202400240200228020022082002280204470d00410021080c010b2002200841206a3602000b2001200836020020072009412010ec08210a20082107200a4100480d000b2000280200200620056b41306c6a22082009290300370300200841286a200941286a290300370300200841206a200941206a290300370300200841186a200941186a290300370300200841106a200941106a290300370300200841086a200941086a2903003703002004200641016a22064d0d030c000b0b200541016a21052004200641016a22064b0d000b0b024020050d00410021050c010b20002802002208200620056b41306c6a2008200641306c6a200420066b41306c10ea081a0b2003200420056b3602000be10101047f230041206b22012400024002400240200041046a28020020002802082202470d00200241016a22032002490d02200241017422042003200420034b1b22034104200341044b1b220341ffffffff01712003464102742104200341037421030240024020020d00200141003602100c010b200141186a410436020020012002410374360214200120002802003602100b200120032004200141106a107d200141086a280200210220012802004101460d0120002001280204360200200041046a20024103763602000b200141206a24000f0b2002450d001036000b1038000baf0c01107f230041a0036b2202240002400240024020012802082203200128020c460d0020012802102104200241b4026a2105200241e0026a41206a2106200241c8016a4104722107200241d0006a4104722108200241106a41386a2109200241106a41306a210a200241106a41286a210b03402001200341206a36020820082003290000370000200841086a200341086a290000370000200841106a200341106a290000370000200841186a200341186a29000037000020022004360250024002402004200810be01450d002001200128021041016a22043602100c010b200241c8016a41206a200241d0006a41206a280200360200200241c8016a41186a200241d0006a41186a290300370300200241c8016a41106a200241d0006a41106a290300370300200241c8016a41086a200241d0006a41086a290300370300200220022903503703c801200241f0016a41186a2203200741186a220c290000370300200241f0016a41106a220d200741106a220e290000370300200241f0016a41086a220f200741086a2210290000370300200220072900003703f001200241e0026a41186a2204200c290000370300200241e0026a41106a220c200e290000370300200241e0026a41086a220e2010290000370300200220072900003703e00220024190026a200241e0026a10bf01200241c0026a41186a22102003290300370300200241c0026a41106a2211200d290300370300200241c0026a41086a220d200f290300370300200220022903f0013703c0020240024020022802b00222030d00410021030c010b2006200229039002370300200641186a20024190026a41186a290300370300200641106a20024190026a41106a290300370300200641086a20024190026a41086a29030037030020042010290300370300200c2011290300370300200e200d290300370300200241f8006a41086a200541086a280200360200200220022903c0023703e0022002200529020037037820024188016a41386a200241e0026a41386a29030037030020024188016a41306a200241e0026a41306a29030037030020024188016a41286a200241e0026a41286a29030037030020024188016a41206a200629030037030020024188016a41186a200429030037030020024188016a41106a200c29030037030020024188016a41086a200e290300370300200220022903e002370388010b0240024020030d0020094200370300200a4200370300200b4200370300200241106a41206a4200370300200241106a41186a4200370300200241106a41106a4200370300200241106a41086a4200370300200241086a410036020020024200370310200242003703000c010b200920024188016a41386a290300370300200a20024188016a41306a290300370300200b20024188016a41286a290300370300200241106a41206a20024188016a41206a290300370300200241106a41186a20024188016a41186a290300370300200241106a41106a20024188016a41106a290300370300200241106a41086a20024188016a41086a290300370300200241086a200241f8006a41086a2802003602002002200229038801370310200220022903783703000b2001200128021041016a220436021020030d030b20012802082203200128020c470d000b0b200041003602400c010b200241e0026a41386a2201200241106a41386a290300370300200241e0026a41306a2208200241106a41306a290300370300200241e0026a41286a2204200241106a41286a290300370300200241e0026a41206a2207200241106a41206a290300370300200241e0026a41186a2206200241106a41186a290300370300200241e0026a41106a220c200241106a41106a290300370300200241e0026a41086a220e200241106a41086a29030037030020024188016a41086a220d200241086a280200360200200220022903103703e0022002200229030037038801200041386a2001290300370300200041306a2008290300370300200041286a2004290300370300200041206a2007290300370300200041186a2006290300370300200041106a200c290300370300200041086a200e290300370300200020022903e002370300200020033602402000200229038801370244200041cc006a200d2802003602000b200241a0036a24000bc10501037f23004190016b22022400200241e0006a22034200370300200241d8006a22044200370300200241c8006a41086a420037030020024200370348200241c8006a41a081ca004107108102200241e8006a41e4d1c100410c1081022003200241e8006a41086a29000037030020042002290068370300200241106a200241c8006a4120108e02200241c8006a2002280214410020022802101b2204200010c206200228024822002002280250108f0221030240200228024c450d002000102e0b4101210002400240024020030d00200241186a41bed8c8004108108102200241e8006a41edd8c800410e108102200220043602382002200241386a410410a301370378200241d4006a2203200241386a41046a3602002002200241f8006a41086a36024c2002200241386a3602502002200241f8006a360248200241286a200241c8006a107c4120102c2200450d012002422037027c20022000360278200241f8006a200141201074200220022802782200200228028001220410a301370388012003200020046a36020020022000360250200220024188016a41086a36024c200220024188016a360248200241386a200241c8006a107c0240200228027c450d002000102e0b20022802302203200228024022046a41206a2200417f4c0d020240024020000d00410121010c010b2000102c2201450d020b200241003602502002200036024c20022001360248200241c8006a200241186a41101074200241c8006a200241e8006a41101074200241c8006a2002280228220020031074200241c8006a20022802382203200410740240200228023c450d002003102e0b0240200228022c450d002000102e0b200241086a200228024822042002280250108e02200228020c2100200228020821030240200228024c450d002004102e0b200341004720004100477121000b20024190016a240020000f0b1036000b1038000bbf0302077f017e230041a0016b22022400200241086a1094030240024020022903084202520d00200041003602200c010b200241f0006a200241086a41106a280200200110a103200241c0006a20022802702203200228027810a20320024180016a41186a2204200241c0006a41186a29030037030020024180016a41106a2205200241c0006a41106a2903003703004108210120024180016a41086a2206200241c0006a41086a2903003703002002200229034037038001200241ec006a280200210702400240200228026022080d0042002109200241206a41186a4200370300200241206a41106a4200370300200241206a41086a4200370300200242003703200c010b200241206a41086a2006290300370300200241206a41106a2005290300370300200241206a41186a2004290300370300200220022903800137032020022902642109200821010b02402002280274450d002003102e0b2000200229032037030020002009370224200020013602202000412c6a2007360200200041186a200241206a41186a290300370300200041106a200241206a41106a290300370300200041086a200241206a41086a2903003703000b200241a0016a24000bb60303057f017e037f230041e0006b2202240002400240200128020c2203200128020822046b2205410675220641ffffff3f712006470d0020054101752205417f4c0d00200129020021070240024020050d00410121010c010b2005102c2201450d020b20002001360200200041086a220841003602002000200541057636020420004100200610c10120082802002105024020042003460d00200028020020054105746a2100200241206a41206a21010340200241206a41386a200441386a290300370300200241206a41306a200441306a290300370300200241206a41286a200441286a2903003703002001200441206a290300370300200241086a2206200141086a290000370300200241106a2209200141106a290000370300200241186a220a200141186a29000037030020022001290000370300200041186a200a290300370000200041106a2009290300370000200041086a200629030037000020002002290300370000200541016a2105200041206a21002003200441c0006a2204470d000b0b20082005360200024020074280808080f0ffffff0383500d002007a7102e0b200241e0006a24000f0b1038000b1036000bdd0101027f230041206b22032400024002400240200041046a280200220420016b20024f0d00200120026a22022001490d02200441017422012002200120024b1b22014104200141044b1b220141ffffff3f712001462102200141057421010240024020040d00200341003602100c010b200341186a410136020020032004410574360214200320002802003602100b200320012002200341106a107d200341086a280200210120032802004101460d0120002003280204360200200041046a20014105763602000b200341206a24000f0b2001450d001036000b1038000bad0204047f017e017f037e02400240200128020c2202200128020822036b41306d220441ffffff3f712004470d0020044105742205417f4c0d00200129020021060240024020050d00410121010c010b2005102c2201450d020b20002001360200200041086a220741003602002000200541057636020420004100200410c1012006422088a7210420072802002101024020032002460d00200028020020014105746a21000340200341086a2900002108200341106a29000021092003290000210a200041186a200341186a290000370000200041106a2009370000200041086a20083700002000200a370000200141016a2101200041206a21002002200341306a2203470d000b0b2007200136020002402004450d00200441306c450d002006a7102e0b0f0b1038000b1036000b820203017f017e067f0240024020012802082202ad420c7e2203422088a70d002003a72204417f4c0d00200128020021054104210102402004450d002004102c2201450d020b2000410036020820002001360200200041046a2004410c6e220636020002402004410c490d00200241ffffffff0371210703402007450d01200541086a2802002204417f4c0d02200528020021080240024020040d00410121090c010b2004102c2209450d040b20092008200410e9082108200141086a2004360200200141046a2004360200200120083602002005410c6a21052001410c6a21012007417f6a21072006417f6a22060d000b0b200020023602080f0b1038000b1036000bd10503027f017e0a7f230041206b220224000240024020012802082203ad42247e2204422088a70d002004a72205417f4c0d00200128020021064104210702402005450d002005102c2207450d020b410021082000410036020820002007360200200041046a200541246e2209360200024020054124490d002002411e6a210a034020052008460d014101210b02400240024002400240200620086a22012d00000e050104020300010b200a200141036a2d00003a00004104210b200241086a41046a200141146a2d00003a00002002200141016a2f00003b011c2002200141106a2800003602082001410c6a280000210c200141086a280000210d200141046a280000210e0c030b200a200141036a2d00003a0000200241086a41086a200141186a290000370300200241086a41106a200141206a2d00003a00002002200141016a2f00003b011c2002200141106a2900003703082001410c6a280000210c200141086a280000210d200141046a280000210e4100210b0c020b2001410c6a280200220d417f4c0d04200141046a280200210102400240200d0d004101210e0c010b200d102c220e450d060b200e2001200d10e9081a4102210b200d210c0c010b4103210b200a200141036a2d00003a0000200241086a41086a200141186a290000370300200241086a41106a200141206a2d00003a00002002200141016a2f00003b011c2002200141106a2900003703082001410c6a280000210c200141086a280000210d200141046a280000210e0b200720086a2201200b3a0000200141016a20022f011c3b0000200141036a200a2d00003a00002001410c6a200c360200200141086a200d360200200141046a200e360200200141106a2002290308370200200141186a200241086a41086a290300370200200141206a200241086a41106a280200360200200841246a21082009417f6a22090d000b0b20002003360208200241206a24000f0b1038000b1036000bdb0205027f017e037f017e037f230041206b220224000240024020012802082203ad42307e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821010c010b2005102c2201450d020b2000410036020820002001360200200041046a200541306e2207360200024020054130490d00200341ffffffff0071210503402005450d01200641086a290300210420062903002108200241186a2209200641286a290300370300200241106a220a200641206a290300370300200241086a220b200641186a2903003703002002200641106a2903003703002001200437030820012008370300200141106a2002290300370300200141186a200b290300370300200141206a200a290300370300200141286a2009290300370300200641306a2106200141306a21012005417f6a21052007417f6a22070d000b0b20002003360208200241206a24000f0b1038000b1036000bbf0304027f017e067f077e230041306b220224000240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821010c010b2005102c2201450d020b2000410036020820002001360200200041046a200541d0006e22073602000240200541d000490d0003402005450d01200241106a41086a2208200641086a290300370300200241106a41106a2209200641106a290300370300200241106a41186a220a200641186a29030037030020022006290300370310200641286a2903002104200641306a290300210b200641386a290300210c2006290320210d2002200641c0006a10c501200a290300210e2009290300210f2008290300211020022903102111200141386a200c370300200141306a200b370300200141286a2004370300200141206a200d370300200141086a201037030020012011370300200141106a200f370300200141186a200e370300200141c0006a2002290300370300200141c8006a200241086a280200360200200141d0006a2101200541b07f6a2105200641d0006a21062007417f6a22070d000b0b20002003360208200241306a24000f0b1038000b1036000bdd0603027f017e0d7f230041106b220224000240024020012802082203ad42247e2204422088a70d002004a72205417f4c0d00200128020021064104210702402005450d002005102c2207450d020b410021082000410036020820002007360200200041046a200541246e2209360200024020054124490d00034020052008460d010240024002400240024002400240200620086a22012d00000e06010203040500010b2001410c6a280200220a417f4c0d08200141046a280200210102400240200a0d004101210b0c010b200a102c220b450d0a0b200b2001200a10e908410876210c4105210d200a210e0c050b2002200141146a2900003703002002200141196a290000370005200141016a2f0000200141036a2d000041107472210f200141046a280000220b410876210c200141106a28000021102001410c6a280000210a200141086a280000210e4100210d0c040b200141106a2802002210417f4c0d06200141036a2d0000210f200141016a2f0000210a200141086a2802002111200141046a2d0000210b4101210d4101210e02402010450d002010102c220e450d080b200a200f41107472210f200e2011201010e9081a2010210a0c030b200141106a2802002210417f4c0d05200141036a2d0000210f200141016a2f0000210a200141086a280200210d200141046a2d0000210b0240024020100d004101210e0c010b2010102c220e450d070b200a200f41107472210f200e200d201010e9081a4102210d2010210a0c020b200141106a2802002210417f4c0d04200141036a2d0000210f200141016a2f0000210a200141086a280200210d200141046a2d0000210b0240024020100d004101210e0c010b2010102c220e450d060b200a200f41107472210f200e200d201010e9081a4103210d2010210a0c010b4104210d200141046a280200210b2001410c6a280200210a200141086a280200210e4100210c0b200720086a2201200d3a0000200141036a200f4110763a0000200141016a200f3b0000200141106a20103602002001410c6a200a360200200141086a200e360200200141046a200c410874200b41ff017172360200200141146a20022903003702002001411c6a200241086a290300370200200841246a21082009417f6a22090d000b0b20002003360208200241106a24000f0b1038000b1036000be20102047f037e024002402001280208220241ffffff3f712002470d0020024105742203417f4c0d00200128020021040240024020030d00410121010c010b2003102c2201450d020b2000410036020820002001360200200041046a2003410576220536020002402003450d0003402005450d01200441086a2900002106200441106a290000210720042900002108200141186a200441186a290000370000200141106a2007370000200141086a200637000020012008370000200141206a2101200441206a21042005417f6a22050d000b0b200020023602080f0b1038000b1036000bf4380f027f017e167f017e017f027e0d7f027e047f017e057f047e0b7f027e037f230041c0056b220224000240024020012802082203ad42b0027e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b2005102c2207450d020b410021082000410036020820002007360200200041046a200541b0026e22093602000240200541b002490d00200241a8036a210a20024190056a210b200241d0036a210c200241a4036a210d200241f8036a210e200241d8036a210f200241b8036a211020024198036a2111200241d4036a2112200241a0036a2113034020052008460d0102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200620086a22012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b20024190036a200141386a10ca0120024180036a41086a2214200141246a2d00003a000020022001411c6a29020037038003200141256a2d000021152002200141266a2f01003b01be01200141186a2802002116200141146a2802002117200141106a2802002118200141086a2903002104200141286a28020021192001412c6a280200211a200141306a290300211b200141f8016a280200211c200229039003211d200229039803211e200241d0016a201341b00110e9081a20014184026a280200211f20014180026a2802002120200241c0016a41086a20142d00003a000020022002290380033703c001200241086a200241d0016a41b00110e9081a411b21140c1b0b20024190036a200141086a10cb01200220022802a4033602c00120022802a0032116200228029c03211720022802980321182002290390032104410021140c1a0b20024190036a200141046a10cc01200241c0016a41086a200a41086a2d00003a00002002200a2902003703c001200220022f01b2033b01be0120022802a403211620022802a0032117200228029c0321182002290294032104200228029003212120022d00b1032115410121140c190b20024190036a200141086a10cd01200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e200241086a200c41b00110e9081a200241d0016a41086a200b41086a290200370300200241d0016a41106a200b41106a290200370300200241d0016a41186a200b41186a2902003703002002200b2902003703d001200228028c05211f20022802880521202002280284052122200228028005211c410221140c180b200141086a2903002104410321140c170b4104211402400240024002400240024002400240200141046a2d0000417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002101410121140c040b20024190036a41086a200141246a2d00003a000020022001411c6a29000037039003200141056a2f0000200141076a2d0000411074722123200141186a2800002116200141146a2800002117200141106a2800002124200141286a2802002119200141086a2900002204a721012004422088a7212541022114202621150c040b200141086a2802002101410321140c020b20024190036a41086a200141246a2d00003a000020022001411c6a29000037039003200141056a2f0000200141076a2d0000411074722123200141256a2d00004100472115200141186a2800002116200141146a2800002117200141106a2800002124200141286a2802002119200141086a2900002204a721012004422088a721250c020b200141086a2802002101410521140b202721192026211520282117202921160b200241c0016a41086a20024190036a41086a2d00003a000020022002290390033703c001200220022f01d0013b01be01202341087420147221212025ad4220862001ad8421044104211420192127201521262017212820162129202421180c160b20024190036a200141086a10ce01200241c0016a41086a200d41086a2d00003a0000200241086a41086a200c41086a290200370300200241086a41106a200c41106a290200370300200241086a41186a200c41186a2902003703002002200d2902003703c001200220022f01ae033b01be012002200c290200370308200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e410521140c150b20024190036a200141046a10cf0120022902940321042002280290032121410621140c140b20024190036a200141086a10d001200241c0016a41086a200d41086a2d00003a0000200241086a41086a200c41086a290200370300200241086a41106a200c41106a2902003703002002200d2902003703c001200220022f01ae033b01be012002200c290200370308200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e410721140c130b10d101000b02400240200141046a22142802000d0041002121202a2117202b21160c010b200241086a41086a200141246a2d00003a0000201141186a200141e8006a290200370200201141106a200141e0006a290200370200201141086a200141d8006a2902003702002011200141d0006a29020037020020022001411c6a2900003703082002200141266a2f01003b01c0012002200141c8006a29020037039003200141386a290200212c200141306a290200212d200141186a2802002116200141146a2802002117200141106a280200212e200141256a2d0000212f200141286a28020021302001412c6a2802002131200141c0006a2902002132201041186a20014188016a290200370200201041106a20014180016a290200370200201041086a200141f8006a2902003702002010200141f0006a290200370200200f20014190016a290200370200200f41086a20014198016a290200370200200f41106a200141a0016a290200370200200f41186a200141a8016a290200370200200e200141b0016a290200370200200e41086a200141b8016a290200370200200e41106a200141c0016a290200370200200e41186a200141c8016a2902003702002001410c6a2802002233417f4c0d15201428020021010240024020330d00410121210c010b2033102c2221450d170b20212001203310e9081a20024180036a41086a200241086a41086a2d00003a00002002200229030837038003200220022f01c0013b01ce01200241d0016a20024190036a41880110e9081a2017212a2016212b0b200241c0016a41086a20024180036a41086a2d00003a000020022002290380033703c001200220022f01ce013b01be01200241086a200241d0016a41880110e9081a2033ad4220862033ad842104410921142032211e202d211b202c211d2031211a20302119202f2115202e21180c110b20024190036a200141086a10d201200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e200241086a200c41b00110e9081a200241d0016a41086a200b41086a290200370300200241d0016a41106a200b41106a2902003703002002200b2902003703d001200228028c05211f20022802880521202002280284052122200228028005211c410a21140c100b20024190036a200141046a10d301200241c0016a41086a200a41086a2d00003a0000200241086a41086a201241086a290200370300200241086a41106a201241106a290200370300200241086a41186a201241186a290200370300200241086a41206a201241206a2802003602002002200a2902003703c001200220022f01b2033b01be0120022012290200370308200241c4036a290200211d20022902bc03211b20022802a403211620022802a0032117200228029c0321182002290294032104200228029003212120022d00b103211520022802b403211920022802b803211a20022902cc03211e410b21140c0f0b10d401000b20024190036a200141086a10d501200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a410d21140c0d0b20024190036a200141086a10d601200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a410e21140c0c0b20024190036a200141086a10d601200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a410f21140c0b0b20024190036a200141086a10d701200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be0120022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a411021140c0a0b4107211702400240024002400240024002400240200141046a2d0000417f6a0e0701020304050607000b41e2a0cc00412841a4c3cb001039000b20024190036a41086a200141246a2d00003a000020022001411c6a29000037039003200141056a2f0000200141076a2d0000411074722134200141186a2800002135200141146a2800002136200141106a2800002137200141086a2900002138410121170c050b20024190036a41086a200141246a2d00003a000020022001411c6a29000037039003200141056a2f0000200141076a2d0000411074722134200141186a2800002135200141146a2800002136200141106a2800002137200141086a2900002138410221170c040b20024190036a41086a200141246a2d00003a000020022001411c6a290000370390032002200141266a2f00003b01d001200141056a2f0000200141076a2d000041107472213420394280808080806083200141c0006a350000200141c4006a31000042208684842139200141386a290000213a200141306a290000213b2001412c6a280000213c200141286a280000213d200141256a2d0000213e200141186a2800002135200141146a2800002136200141106a2800002137200141086a2900002138410321170c030b20024190036a200141086a10c80120022802980321372002290390032138410421170c020b20024190036a41086a200141246a2d00003a000020022001411c6a2900003703900341052117200141056a2f0000200141076a2d0000411074722134200141186a2800002135200141146a2800002136200141106a2800002137200141086a29000021380c010b20024190036a41086a200141246a2d00003a000020022001411c6a29000037039003200141056a2f0000200141076a2d0000411074722134200141186a2800002135200141146a2800002136200141106a2800002137200141086a2900002138410621170b200241c0016a41086a20024190036a41086a2d00003a000020022002290390033703c001200220022f01d0013b01be0120344108742017722121411121142039211e203b211b203a211d203c211a203d2119203e2115203621172035211620372118203821040c090b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a290300211d200141306a290300211b41012117024002400240024002402001410c6a2d00000e050104020300010b4104211720024190036a41046a200141206a2d00003a000020022001411c6a280000360290032001410d6a2f00002001410f6a2d000041107472213f200141186a2800002140200141146a2800002141200141106a28000021420c030b20024198036a200141246a2d00003a000020022001411c6a290000370390032002200141266a2f00003b01082001410d6a2f00002001410f6a2d000041107472213f2001412c6a2d00002143200141286a2800002144200141256a2d00002145200141186a2800002140200141146a2800002141200141106a2800002142410021170c020b200141186a2802002241417f4c0d11200141106a28020021010240024020410d00410121420c010b2041102c2242450d130b20422001204110e9081a41022117204121400c010b20024198036a200141246a2d00003a000020022001411c6a290000370390032002200141266a2f00003b01082001410d6a2f00002001410f6a2d000041107472213f2001412c6a2d00002143200141286a2800002144200141256a2d00002145200141186a2800002140200141146a2800002141200141106a2800002142410321170b200241d0016a41086a20024190036a41086a2d00003a000020022002290390033703d001200220022f01083b018003204341ff0171211a42012104203f21010c030b2001410c6a28020022174108762101420221040c010b2001410c6a28020022174108762101420321040b2046211a2047211b2048211d0b200241c0016a41086a200241d0016a41086a2d00003a0000200220022903d0013703c001200220022f0180033b01be012001410874201741ff017172ad422086200484210441122114201a2146201b2147201d214820442119204521152041211720402116204221180c080b20024190036a200141086a10d801200241c0016a41086a200d41086a2d00003a0000200241086a41086a200c41086a290200370300200241086a41106a200c41106a290200370300200241086a41186a200c41186a290200370300200241086a41206a200c41206a290200370300200241086a41286a200c41286a2902003703002002200d2902003703c001200220022f01ae033b01be012002200c290200370308200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e411321140c070b20024190036a200141086a10d901200241c0016a41086a200d41086a2d00003a0000200241086a41086a200c41086a290200370300200241086a41106a200c41106a290200370300200241086a41186a200c41186a290200370300200241086a41206a200c41206a290200370300200241086a41286a200c41286a290200370300200241086a41306a200c41306a2902003703002002200d2902003703c001200220022f01ae033b01be012002200c29020037030820024190036a41306a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e411421140c060b0240024002400240200141046a2f0100417f6a0e03010200010b20024190036a200141086a10c9012002280298032149200228029403214a2002280290032114410321010c020b20024190036a200141086a10c9012002280298032149200228029403214a2002280290032114410121010c010b200141066a2f0100214b41b002102c2214450d0a20024190036a200141086a28020010da01201420024190036a41b00210e9081a410221010b204b4110742001722121204aad4220862014ad84210441152114204921180c050b20024190036a200141086a10db01200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e200241086a200c41b00110e9081a200241d0016a41086a200b41086a290200370300200241d0016a41106a200b41106a290200370300200241d0016a41186a200b41186a290200370300200241d0016a41206a200b41206a2902003703002002200b2902003703d001200228028c05211f20022802880521202002280284052122200228028005211c411621140c040b20024190036a200141046a10dc01200241c0016a41086a200a41086a2d00003a00002002200a2902003703c001200220022f01b2033b01be01200220022802d403360208200241c4036a290200211d20022902bc03211b20022802a403211620022802a0032117200228029c0321182002290294032104200228029003212120022d00b103211520022802b403211920022802b803211a20022902cc03211e411721140c030b20024190036a200141086a10dd01200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200220022903d003370308200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e411821140c020b20024190036a200141086a10de01200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e411921140c010b20024190036a200141086a10df01200241c0016a41086a200d41086a2d00003a00002002200d2902003703c001200220022f01ae033b01be01200241c0036a290300211d20022903b803211b20022802a0032116200228029c0321172002280298032118200229039003210420022d00ad03211520022802b003211920022802b403211a20022903c803211e411a21140b200720086a22012014360200200141186a2016360200200141146a2017360200200141106a2018360200200141086a2004370300200141046a2021360200200241c0016a41086a2d0000211420022903c0012104200141256a20153a0000200141386a201d370200200141306a201b3702002001411c6a2004370200200141246a20143a0000200141c0006a201e3702002001412c6a201a360200200141286a2019360200200141266a20022f01be013b0100200141c8006a200241086a41b00110e9081a20014184026a201f36020020014180026a2020360200200141fc016a2022360200200141f8016a201c36020020014188026a20022903d00137020020014190026a200241d0016a41086a29030037020020014198026a200241d0016a41106a290300370200200141a0026a200241d0016a41186a290300370200200141a8026a200241f0016a290300370200200841b0026a21082009417f6a22090d000b0b20002003360208200241c0056a24000f0b1038000b1036000bce0d03057f017e287f024002402001280208220241ffffffff01712002470d0020024103742203417f4c0d00200128020021040240024020030d00410421050c010b2003102c2205450d020b200020053602002000200341037636020420052004200241037410e9081a20002002360208200141146a2802002206ad420c7e2207422088a70d002007a72204417f4c0d00200128020c21034104210202402004450d002004102c2202450d020b20022003200410e9082108200141206a280200220241ffffffff00712002470d0020024104742209417f4c0d00200128021821054104210302402009450d002009102c2203450d020b20032005200241047410e908210a2001412c6a280200220bad42147e2207422088a70d002007a7220c417f4c0d002001280224210302400240200c0d00410421050c010b200c102c2205450d020b20052003200c10e908210d200141386a280200220ead42187e2207422088a70d002007a7220f417f4c0d002001280230210302400240200f0d00410421050c010b200f102c2205450d020b20052003200f10e9082110200141c4006a2802002211ad421c7e2207422088a70d002007a72212417f4c0d00200128023c21030240024020120d00410421050c010b2012102c2205450d020b20052003201210e9082113200141d0006a280200220341ffffff3f712003470d0020034105742214417f4c0d00200128024821050240024020140d00410421150c010b2014102c2215450d020b20152005200341057410e9082116200141dc006a2802002217ad42247e2207422088a70d002007a72215417f4c0d00200128025421050240024020150d00410421180c010b2015102c2218450d020b20182005201510e9082119200141e8006a280200221aad42287e2207422088a70d002007a72218417f4c0d00200128026021050240024020180d004104211b0c010b2018102c221b450d020b201b2005201810e908211c200141f4006a280200221dad422c7e2207422088a70d002007a7221b417f4c0d00200128026c210502400240201b0d004104211e0c010b201b102c221e450d020b201e2005201b10e908211f20014180016a2802002220ad42307e2207422088a70d002007a7221e417f4c0d002001280278210502400240201e0d00410421210c010b201e102c2221450d020b20212005201e10e90821222001418c016a2802002223ad42347e2207422088a70d002007a72221417f4c0d0020012802840121050240024020210d00410421240c010b2021102c2224450d020b20242005202110e908212520014198016a2802002226ad42387e2207422088a70d002007a72224417f4c0d0020012802900121050240024020240d00410421270c010b2024102c2227450d020b20272005202410e9082128200141a4016a2802002229ad423c7e2207422088a70d002007a72227417f4c0d00200128029c0121050240024020270d004104212a0c010b2027102c222a450d020b202a2005202710e908212b200141b0016a280200220541ffffff1f712005470d002005410674222c417f4c0d0020012802a801212a02400240202c0d004104212d0c010b202c102c222d450d020b202d202a200541067410e908212d200141bc016a280200222ead42c4007e2207422088a70d002007a7222a417f4c0d0020012802b401212f410421010240202a450d00202a102c2201450d020b2001202f202a10e9082101200041bc016a202e360200200041b8016a202a41c4006e360200200020013602b401200041b0016a2005360200200041ac016a202c4106763602002000202d3602a801200041a4016a2029360200200041a0016a2027413c6e3602002000202b36029c0120004198016a202636020020004194016a202441386e36020020002028360290012000418c016a202336020020004188016a202141346e360200200020253602840120004180016a2020360200200041fc006a201e41306e36020020002022360278200041f4006a201d360200200041f0006a201b412c6e3602002000201f36026c200041e8006a201a360200200041e4006a201841286e3602002000201c360260200041dc006a2017360200200041d8006a201541246e36020020002019360254200041d0006a2003360200200041cc006a201441057636020020002016360248200041c4006a2011360200200041c0006a2012411c6e3602002000201336023c200041386a200e360200200041346a200f41186e360200200020103602302000412c6a200b360200200041286a200c41146e3602002000200d360224200041206a20023602002000411c6a20094104763602002000200a360218200041146a2006360200200041106a2004410c6e3602002000200836020c0f0b1038000b1036000b9d0803047f017e087f230041106b2202240002400240024002400240024002400240024002400240024002402001280200417f6a0e0a01020304050607080900010b2001410c6a2802002203417f4c0d0a200128020421010240024020030d00410121040c010b2003102c2204450d0c0b20042001200310e90821012000410c6a2003360200200041086a2003360200200020013602042000410a3602000c090b20004101360200200020012802043602040c080b2001410c6a2802002203417f4c0d08200128020421010240024020030d00410121040c010b2003102c2204450d0a0b20042001200310e90821012000410c6a2003360200200041086a200336020020002001360204200041023602000c070b20004103360200200041086a200141086a2903003703000c060b2001410c6a2802002203417f4c0d06200128020421010240024020030d00410121040c010b2003102c2204450d080b20042001200310e90821012000410c6a2003360200200041086a200336020020002001360204200041043602000c050b2001410c6a2802002203417f4c0d05200128020421010240024020030d00410121040c010b2003102c2204450d070b20042001200310e90821012000410c6a2003360200200041086a200336020020002001360204200041053602000c040b20004106360200200020012902043702042000410c6a2001410c6a2802003602000c030b2001410c6a2802002205ad42187e2206422088a70d032006a72203417f4c0d030240024020030d00200341186e2107410421080c010b200128020421092003102c2208450d05200341186e210720034118490d00200541ffffffff0171210a4100210b2007210c0340200a450d012009200b6a220141086a2802002203417f4c0d05200128020021040240024020030d004101210d0c010b2003102c220d450d070b200d2004200310e908210d200141146a2802002204417f4c0d052001410c6a28020021010240024020040d004101210e0c010b2004102c220e450d070b200e2001200410e908210e2008200b6a2201200d360200200141146a2004360200200141106a20043602002001410c6a200e360200200141086a2003360200200141046a2003360200200a417f6a210a200b41186a210b200c417f6a220c0d000b0b20002008360204200041073602002000410c6a2005360200200041086a20073602000c020b2002200141046a10c301200041083602002000410c6a200241086a280200360200200020022903003702040c010b2001410c6a2802002203417f4c0d01200128020421040240024020030d004101210b0c010b2003102c220b450d030b200b2004200310e90821042000410c6a2003360200200041086a20033602002000200436020420004109360200200041106a20012802103602000b200241106a24000f0b1038000b1036000bca0701097f230041b0026b22022400024002400240024002400240024002400240024020012d0000417f6a0e06010203040506000b41e2a0cc00412841ecb0c4001039000b200141106a28020021032001410c6a2802002104200141086a2802002105200141046a280200210620012d0001210741b002102c2208450d062002200141146a28020010a8042008200241b00210e9082101200041106a20033602002000410c6a2004360200200041086a2005360200200041046a2006360200200041146a2001360200200020073a0001200041013a00000c050b200041023a0000200041046a200141046a2902003702000c040b2001410c6a2802002203417f4c0d05200141046a28020021040240024020030d00410121050c010b2003102c2205450d050b20052004200310e90821042001411c6a2802002105200141186a280200210620012d00012107200128021421082001280210210941b002102c220a450d042002200128022010a804200a200241b00210e90821012000411c6a2005360200200041186a2006360200200041146a2008360200200041106a20093602002000410c6a2003360200200041086a2003360200200041046a2004360200200041206a2001360200200020073a0001200041033a00000c030b2001410c6a2802002203417f4c0d04200141046a28020021010240024020030d00410121040c010b2003102c2204450d040b20042001200310e90821012000410c6a2003360200200041086a2003360200200041046a2001360200200041043a00000c020b200141106a28020021032001410c6a2802002104200141086a2802002105200141046a280200210620012d0001210741b002102c2208450d022002200141146a28020010a8042008200241b00210e9082101200041106a20033602002000410c6a2004360200200041086a2005360200200041046a2006360200200041146a2001360200200020073a0001200041053a00000c010b2001410c6a2802002203417f4c0d02200141046a28020021040240024020030d00410121050c010b2003102c2205450d020b20052004200310e90821042001411c6a2802002105200141186a280200210620012d00012107200128021421082001280210210941b002102c220a450d012002200128022010a804200a200241b00210e90821012000411c6a2005360200200041186a2006360200200041146a2008360200200041106a20093602002000410c6a2003360200200041086a2003360200200041046a2004360200200041206a2001360200200020073a0001200041063a00000b200241b0026a24000f0b1036000b1038000b9b1b03047f017e167f230041e0036b2202240002400240024002402001280200417f6a0e03010200010b20004103360200200041186a200141186a2d00003a0000200041106a200141106a290300370300200041086a200141086a2903003703000c020b20024180026a41186a220320014198026a29000037030020024180026a41106a220420014190026a29000037030020024180026a41086a220520014188026a290000370300200220014180026a29000037038002200141186a2903002106200241e0026a41086a2207200141386a290200370300200241e0026a41106a2208200141c0006a290200370300200241e0026a41186a2209200141c8006a290200370300200241c0026a41086a220a200141d8006a290200370300200241c0026a41106a220b200141e0006a290200370300200241c0026a41186a220c200141e8006a290200370300200241a0026a41086a220d200141f8006a290200370300200241a0026a41106a220e20014180016a290200370300200241a0026a41186a220f20014188016a2902003703002002200141306a2902003703e0022002200141d0006a2902003703c0022002200141f0006a2902003703a002200141206a2802002110200241f0016a200141246a10c701200241c0036a41086a2211200141a8016a290200370300200241c0036a41106a2212200141b0016a290200370300200241c0036a41186a2213200141b8016a290200370300200241a0036a41086a2214200141c8016a290200370300200241a0036a41106a2215200141d0016a290200370300200241a0036a41186a2216200141d8016a29020037030020024180036a41086a2217200141e8016a29020037030020024180036a41106a2218200141f0016a29020037030020024180036a41186a2219200141f8016a2902003703002002200141a0016a2902003703c0032002200141c0016a2902003703a0032002200141e0016a2902003703800320014190016a280200211a20024180016a20014194016a10c701200241186a221b2003290300370300200241106a22032004290300370300200241086a22042005290300370300200241d0016a41086a22052007290300370300200241d0016a41106a22072008290300370300200241d0016a41186a22082009290300370300200241b0016a41086a2209200a290300370300200241b0016a41106a220a200b290300370300200241b0016a41186a220b200c2903003703002002200229038002370300200220022903e0023703d001200220022903c0023703b00120024190016a41186a220c200f29030037030020024190016a41106a220f200e29030037030020024190016a41086a220e200d290300370300200241e0006a41186a220d2013290300370300200241e0006a41106a22132012290300370300200241e0006a41086a22122011290300370300200241c0006a41186a221c2016290300370300200241c0006a41106a22162015290300370300200241c0006a41086a22152014290300370300200220022903a00237039001200220022903c003370360200220022903a003370340200241206a41186a22142019290300370300200241206a41106a22192018290300370300200241206a41086a22182017290300370300200220022903800337032020012802042117200241c0036a200141086a10c301200041206a2010360200200041186a2006370300200041246a20022903f0013702002000412c6a200241f0016a41086a280200360200200041306a20022903d001370300200041386a2005290300370300200041c0006a2007290300370300200041c8006a2008290300370300200041d0006a20022903b001370300200041d8006a2009290300370300200041e0006a200a290300370300200041e8006a200b290300370300200141146a280200210120004190016a201a36020020004188016a200c29030037030020004180016a200f290300370300200041f8006a200e290300370300200041f0006a2002290390013703002000419c016a20024180016a41086a28020036020020004194016a200229038001370200200041a0016a2002290360370300200041a8016a2012290300370300200041b0016a2013290300370300200041b8016a200d290300370300200041d8016a201c290300370300200041d0016a2016290300370300200041c8016a2015290300370300200041c0016a2002290340370300200041f8016a2014290300370300200041f0016a2019290300370300200041e8016a2018290300370300200041e0016a200229032037030020004198026a201b29030037030020004190026a200329030037030020004188026a200429030037030020004180026a200229030037030020002017360204200041106a2011280200360200200041086a20022903c003370200200041146a2001360200200041013602000c010b20024180026a41186a220320014198026a29000037030020024180026a41106a220420014190026a29000037030020024180026a41086a220520014188026a290000370300200220014180026a29000037038002200141186a2903002106200241e0026a41086a2207200141386a290200370300200241e0026a41106a2208200141c0006a290200370300200241e0026a41186a2209200141c8006a290200370300200241c0026a41086a220a200141d8006a290200370300200241c0026a41106a220b200141e0006a290200370300200241c0026a41186a220c200141e8006a290200370300200241a0026a41086a220d200141f8006a290200370300200241a0026a41106a220e20014180016a290200370300200241a0026a41186a220f20014188016a2902003703002002200141306a2902003703e0022002200141d0006a2902003703c0022002200141f0006a2902003703a002200141206a2802002110200241f0016a200141246a10c701200241c0036a41086a2211200141a8016a290200370300200241c0036a41106a2212200141b0016a290200370300200241c0036a41186a2213200141b8016a290200370300200241a0036a41086a2214200141c8016a290200370300200241a0036a41106a2215200141d0016a290200370300200241a0036a41186a2216200141d8016a29020037030020024180036a41086a2217200141e8016a29020037030020024180036a41106a2218200141f0016a29020037030020024180036a41186a2219200141f8016a2902003703002002200141a0016a2902003703c0032002200141c0016a2902003703a0032002200141e0016a2902003703800320014190016a280200211a20024180016a20014194016a10c701200241186a221b2003290300370300200241106a22032004290300370300200241086a22042005290300370300200241d0016a41086a22052007290300370300200241d0016a41106a22072008290300370300200241d0016a41186a22082009290300370300200241b0016a41086a2209200a290300370300200241b0016a41106a220a200b290300370300200241b0016a41186a220b200c2903003703002002200229038002370300200220022903e0023703d001200220022903c0023703b00120024190016a41186a220c200f29030037030020024190016a41106a220f200e29030037030020024190016a41086a220e200d290300370300200241e0006a41186a220d2013290300370300200241e0006a41106a22132012290300370300200241e0006a41086a22122011290300370300200241c0006a41186a221c2016290300370300200241c0006a41106a22162015290300370300200241c0006a41086a22152014290300370300200220022903a00237039001200220022903c003370360200220022903a003370340200241206a41186a22142019290300370300200241206a41106a22192018290300370300200241206a41086a22182017290300370300200220022903800337032020012802042117200241c0036a200141086a10c301200041206a2010360200200041186a2006370300200041246a20022903f0013702002000412c6a200241f0016a41086a280200360200200041306a20022903d001370300200041386a2005290300370300200041c0006a2007290300370300200041c8006a2008290300370300200041d0006a20022903b001370300200041d8006a2009290300370300200041e0006a200a290300370300200041e8006a200b290300370300200141146a280200210120004190016a201a36020020004188016a200c29030037030020004180016a200f290300370300200041f8006a200e290300370300200041f0006a2002290390013703002000419c016a20024180016a41086a28020036020020004194016a200229038001370200200041a0016a2002290360370300200041a8016a2012290300370300200041b0016a2013290300370300200041b8016a200d290300370300200041d8016a201c290300370300200041d0016a2016290300370300200041c8016a2015290300370300200041c0016a2002290340370300200041f8016a2014290300370300200041f0016a2019290300370300200041e8016a2018290300370300200041e0016a200229032037030020004198026a201b29030037030020004190026a200329030037030020004188026a200429030037030020004180026a200229030037030020002017360204200041106a2011280200360200200041086a20022903c003370200200041146a2001360200200041023602000b200241e0036a24000bc61803067f037e047f230041c0006b2202240002400240024002400240024002402001280200417f6a0e0401020300010b200141046a2103410121040240024002400240024020012d00040e050104020300010b2002410a6a200341036a2d00003a0000200241286a41046a200141186a2d00003a0000200220032f00013b01082002200141146a280000360228200141106a28020021052001410c6a2802002106200141086a2802002107410421040c030b2002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021052001410c6a2802002106200141086a2802002107410021040c020b200141106a2802002205417f4c0d06200141086a28020021040240024020050d00410121070c010b2005102c2207450d080b20072004200510e9081a41022104200521060c010b410321042002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021052001410c6a2802002106200141086a28020021070b200020043a0004200020022f01083b0005200020022f00243b0025200041106a20053600002000410c6a2006360000200041086a2007360000200041146a2002290328370000200041076a200241086a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200041276a200241246a41026a2d00003a000020012903282108200041306a200141306a290300370300200041286a2008370300200041043602000c030b200141046a2103410121060240024002400240024020012d00040e050104020300010b2002410a6a200341036a2d00003a0000200241286a41046a200141186a2d00003a0000200220032f00013b01082002200141146a280000360228200141106a28020021042001410c6a2802002105200141086a2802002107410421060c030b2002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021042001410c6a2802002105200141086a2802002107410021060c020b200141106a2802002205417f4c0d05200141086a28020021040240024020050d00410121070c010b2005102c2207450d070b20072004200510e9081a41022106200521040c010b410321062002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021042001410c6a2802002105200141086a28020021070b200020063a0004200020022f01083b0005200020022f00243b0025200041106a20043600002000410c6a2005360000200041086a2007360000200041146a2002290328370000200041076a200241086a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200041276a200241246a41026a2d00003a000020012903282108200041306a200141306a290300370300200041286a2008370300200041013602000c020b200141046a2103410121040240024002400240024020012d00040e050104020300010b2002410a6a200341036a2d00003a0000200241286a41046a200141186a2d00003a0000200220032f00013b01082002200141146a280000360228200141106a28020021062001410c6a2802002105200141086a2802002107410421040c030b2002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021062001410c6a2802002105200141086a2802002107410021040c020b200141106a2802002205417f4c0d04200141086a28020021040240024020050d00410121070c010b2005102c2207450d060b20072004200510e9081a41022104200521060c010b410321042002410a6a200341036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220032f00013b01082002200141146a290000370328200141106a28020021062001410c6a2802002105200141086a28020021070b200020043a0004200020022f01083b0005200020022f00243b0025200041106a20063600002000410c6a2005360000200041086a2007360000200041146a2002290328370000200041076a200241086a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200041276a200241246a41026a2d00003a0000200141306a2903002108200129032821092001290338210a200041c0006a200141c0006a290300370300200041386a200a370300200041306a2008370300200041286a2009370300200041023602000c010b200141046a2107410121034101210b0240024002400240024020012d00040e050104020300010b200241206a200741036a2d00003a0000200241086a41046a200141186a2d00003a0000200220072f00013b011e2002200141146a280000360208200141106a280200210c2001410c6a2802002105200141086a28020021044104210b0c030b200241206a200741036a2d00003a0000200241086a41086a2001411c6a290000370300200241086a41106a200141246a2d00003a0000200220072f00013b011e2002200141146a290000370308200141106a280200210c2001410c6a2802002105200141086a28020021044100210b0c020b200141106a2802002205417f4c0d03200141086a28020021070240024020050d00410121040c010b2005102c2204450d050b20042007200510e9081a4102210b2005210c0c010b4103210b200241206a200741036a2d00003a0000200241086a41086a2001411c6a290000370300200241086a41106a200141246a2d00003a0000200220072f00013b011e2002200141146a290000370308200141106a280200210c2001410c6a2802002105200141086a28020021040b02400240024002400240200141286a220d2d00000e050104020300010b200241266a200d41036a2d00003a000041042103200241286a41046a2001413c6a2d00003a00002002200d2f00013b01242002200141386a280000360228200141346a2802002107200141306a280200210e2001412c6a28020021060c030b200241266a200d41036a2d00003a0000200241306a200141c0006a290000370300200241386a200141c8006a2d00003a00002002200d2f00013b01242002200141386a290000370328200141346a2802002107200141306a280200210e2001412c6a2802002106410021030c020b200141346a2802002207417f4c0d032001412c6a28020021030240024020070d00410121060c010b2007102c2206450d050b20062003200710e9081a410221032007210e0c010b41032103200241266a200d41036a2d00003a0000200241306a200141c0006a290000370300200241386a200141c8006a2d00003a00002002200d2f00013b01242002200141386a290000370328200141346a2802002107200141306a280200210e2001412c6a28020021060b2000200b3a0004200020022f011e3b0005200020022f00053b0025200041106a200c3600002000410c6a2005360000200041086a2004360000200041146a2002290308370000200041076a2002411e6a41026a2d00003a00002000411c6a200241086a41086a290300370000200041246a200241086a41106a2d00003a0000200041276a200241056a41026a2d00003a0000200141d8006a290300210820012903502109200041286a20033a00002000412c6a2006360000200041306a200e360000200041346a2007360000200020022f01243b00292000412b6a200241246a41026a2d00003a0000200041386a2002290328370000200041c0006a200241286a41086a290300370000200041c8006a200241286a41106a2d00003a0000200020022f00213b0049200041cb006a200241216a41026a2d00003a0000200041d8006a2008370300200041d0006a2009370300200041033602000b200241c0006a24000f0b1038000b1036000b8d0503027f017e0f7f230041f0006b220224000240024020012802082203ad42f0007e2204422088a70d002004a72205417f4c0d00200128020021064104210702402005450d002005102c2207450d020b410021012000410036020820002007360200200041046a200541f0006e22083602000240200541f000490d00200341ffffffff0071210903402009450d01200241c0006a41086a220a200620016a220541186a290000370300200241c0006a41106a220b200541206a290000370300200241c0006a41186a220c200541286a290000370300200241206a41086a220d200541386a290000370300200241206a41106a220e200541c0006a290000370300200241206a41186a220f200541c8006a290000370300200241086a2210200541d8006a290000370300200241106a2211200541e0006a290000370300200241186a2212200541e8006a2900003703002002200541106a2900003703402002200541306a2900003703202002200541d0006a29000037030020052802002113200241e0006a200541046a10c701200720016a22052013360200200541046a20022903603702002005410c6a200241e0006a41086a280200360200200541106a2002290340370200200541186a200a290300370200200541206a200b290300370200200541286a200c290300370200200541306a2002290320370200200541386a200d290300370200200541c0006a200e290300370200200541c8006a200f290300370200200541e8006a2012290300370200200541e0006a2011290300370200200541d8006a2010290300370200200541d0006a20022903003702002009417f6a2109200141f0006a21012008417f6a22080d000b0b20002003360208200241f0006a24000f0b1038000b1036000bd41403057f027e017f230041d0006b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e170102030405060708090a0b0c0d0e0f1011121314151617000b41e2a0cc00412841f4ebc6001039000b4101210302400240024002400240200141246a2d00000e050104020300010b200241ce006a200141276a2d00003a000041042103200241106a41046a200141386a2d00003a00002002200141256a2f00003b014c2002200141346a280000360210200141306a28000021042001412c6a2800002105200141286a28000021060c030b200241ce006a200141276a2d00003a0000200241186a2001413c6a290000370300200241206a200141c4006a2d00003a00002002200141256a2f00003b014c2002200141346a290000370310200141306a28000021042001412c6a2800002105200141286a2800002106410021030c020b200141306a2802002205417f4c0d19200141286a28020021030240024020050d00410121060c010b2005102c2206450d1b0b20062003200510e9081a41022103200521040c010b200241ce006a200141276a2d00003a0000200241186a2001413c6a290000370300200241206a200141c4006a2d00003a00002002200141256a2f00003b014c2002200141346a290000370310200141306a28000021042001412c6a2800002105200141286a2800002106410321030b200141d0006a290300210720012903482108410421090240024002400240024020012d00010e050001020304000b410021090c030b410121090c020b410221090c010b200241c0006a2001411a6a290000370300200241386a200141126a290000370300200241306a2001410a6a2900003703002002200141026a290000370328410321090b200041246a20033a0000200041256a20022f014c3b0000200041306a20043600002000412c6a2005360000200041286a2006360000200041346a2002290310370000200041c5006a20022f000d3b0000200041276a200241cc006a41026a2d00003a00002000413c6a200241106a41086a290300370000200041c4006a200241106a41106a2d00003a0000200041c7006a2002410d6a41026a2d00003a0000200041d0006a2007370300200041c8006a2008370300200020093a0001200041013a0000200041026a20022903283700002000410a6a200241286a41086a290300370000200041126a200241286a41106a2903003700002000411a6a200241c0006a2903003700000c160b200041023a0000200041106a200141106a290300370300200041086a200141086a2903003703000c150b200041033a0000200041106a200141106a290300370300200041086a200141086a2903003703000c140b200041043a0000200041046a200141046a2802003602000c130b200041053a0000200041046a200141046a280200360200200041086a200141086a2d00004100473a00000c120b200241286a200141046a10c401200041063a00002000410c6a200241306a280200360200200041046a20022903283702000c110b200041073a00000c100b410421050240024002400240024020012d00010e050001020304000b410021050c030b410121050c020b410221050c010b200241c0006a2001411a6a290000370300200241386a200141126a290000370300200241306a2001410a6a2900003703002002200141026a290000370328410321050b200020053a0001200041083a0000200041026a20022903283700002000410a6a200241286a41086a290300370000200041126a200241386a2903003700002000411a6a200241c0006a2903003700000c0f0b4101210302400240024002400240200141046a2d00000e050104020300010b200241126a200141076a2d00003a0000200241286a41046a200141186a2d00003a00002002200141056a2f00003b01102002200141146a280000360228200141106a28000021042001410c6a2800002105200141086a2800002106410421030c030b200241126a200141076a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a00002002200141056a2f00003b01102002200141146a290000370328200141106a28000021042001410c6a2800002105200141086a2800002106410021030c020b200141106a2802002205417f4c0d11200141086a28020021010240024020050d00410121060c010b2005102c2206450d130b20062001200510e9081a41022103200521040c010b200241126a200141076a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a00002002200141056a2f00003b01102002200141146a290000370328200141106a28000021042001410c6a2800002105200141086a2800002106410321030b200041046a20033a0000200041056a20022f01103b0000200041106a20043600002000410c6a2005360000200041086a2006360000200041146a2002290328370000200041256a20022f004c3b0000200041076a200241106a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200041276a200241cc006a41026a2d00003a0000200041093a00000c0e0b2000410a3a0000200041046a200141046a2802003602000c0d0b2000410b3a0000200041046a200141046a2802003602000c0c0b2000410c3a0000200020012d00013a00010c0b0b2000410d3a00000c0a0b2000410e3a00000c090b200241286a200141046a10c8012000410f3a00002000410c6a200241306a280200360200200041046a20022903283702000c080b200041103a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c070b200041113a00000c060b200141106a280200220541ffffffff03712005470d0620054102742206417f4c0d06200141086a2802002103200141046a28020021044104210102402006450d002006102c2201450d080b20012003200541027410e9082101200041106a20053602002000410c6a2006410276360200200041086a2001360200200041046a2004360200200041123a00000c050b200041133a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c040b200041143a0000200041106a200141106a290300370300200041086a200141086a2903003703000c030b200041153a0000200041046a200141046a2902003702000c020b200041163a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c010b200241286a200141046a10c401200041173a00002000410c6a200241306a280200360200200041046a20022903283702000b200241d0006a24000f0b1038000b1036000b110041e2a0cc00412841889cc5001039000bc91a05017f017e0a7f027e117f230041c0036b22022400024002400240024002402001280200417f6a0e03010203000b41e2a0cc00412841c499c9001039000b200141186a2903002103200241a0036a41086a22042001413c6a290200370300200241a0036a41106a2205200141c4006a290200370300200241a0036a41186a2206200141cc006a290200370300200241e0026a41086a2207200141dc006a290200370300200241e0026a41106a2208200141e4006a290200370300200241e0026a41186a2209200141ec006a290200370300200241e0026a41206a220a200141f4006a290200370300200241e0026a41286a220b200141fc006a290200370300200241e0026a41306a220c20014184016a290200370300200241e0026a41386a220d2001418c016a2902003703002002200141346a2902003703a0032002200141d4006a2902003703e002200141206a290300210e200141286a290300210f200141306a2802002110200241c0026a41186a2211200141b0016a290200370300200241c0026a41106a2212200141a8016a290200370300200241c0026a41086a2213200141a0016a29020037030020024180026a41386a2214200141f0016a29020037030020024180026a41306a2215200141e8016a29020037030020024180026a41286a2216200141e0016a29020037030020024180026a41206a2217200141d8016a29020037030020024180026a41186a2218200141d0016a29020037030020024180026a41106a2219200141c8016a29020037030020024180026a41086a221a200141c0016a290200370300200220014198016a2902003703c0022002200141b8016a2902003703800220014194016a280200211b200241e0016a41186a221c20014190026a290300370300200241e0016a41106a221d20014188026a290300370300200241e0016a41086a221e20014180026a2903003703002002200141f8016a2903003703e001200241c0016a41186a221f2006290300370300200241c0016a41106a22062005290300370300200241c0016a41086a22052004290300370300200220022903a0033703c00120024180016a41386a2204200d29030037030020024180016a41306a220d200c29030037030020024180016a41286a220c200b29030037030020024180016a41206a220b200a29030037030020024180016a41186a220a200929030037030020024180016a41106a2209200829030037030020024180016a41086a22082007290300370300200220022903e00237038001200241e0006a41186a22202011290300370300200241e0006a41106a22112012290300370300200241e0006a41086a22122013290300370300200220022903c002370360200241206a41386a22132014290300370300200241206a41306a22142015290300370300200241206a41286a22152016290300370300200241206a41206a22162017290300370300200241206a41186a22172018290300370300200241206a41106a22182019290300370300200241206a41086a2219201a2903003703002002200229038002370320200241186a221a201c290300370300200241106a221c201d290300370300200241086a221d201e290300370300200220022903e0013703002001280204211e200241e0026a200141086a10c301200041306a2010360200200041286a200f370300200041206a200e370300200041186a2003370300200041346a20022903c0013702002000413c6a2005290300370200200041c4006a2006290300370200200041cc006a201f290300370200200041d4006a200229038001370200200041dc006a2008290300370200200041e4006a2009290300370200200041ec006a200a290300370200200041f4006a200b290300370200200041fc006a200c29030037020020004184016a200d2903003702002000418c016a2004290300370200200141146a280200210120004194016a201b360200200041b0016a2020290300370200200041a8016a2011290300370200200041a0016a201229030037020020004198016a2002290360370200200041f0016a2013290300370200200041e8016a2014290300370200200041e0016a2015290300370200200041d8016a2016290300370200200041d0016a2017290300370200200041c8016a2018290300370200200041c0016a2019290300370200200041b8016a200229032037020020004190026a201a29030037030020004188026a201c29030037030020004180026a201d290300370300200041f8016a20022903003703002000201e360204200041106a2007280200360200200041086a20022903e002370200200041146a2001360200200041013602000c020b200141186a2903002103200241a0036a41086a22042001413c6a290200370300200241a0036a41106a2205200141c4006a290200370300200241a0036a41186a2206200141cc006a290200370300200241e0026a41086a2207200141dc006a290200370300200241e0026a41106a2208200141e4006a290200370300200241e0026a41186a2209200141ec006a290200370300200241e0026a41206a220a200141f4006a290200370300200241e0026a41286a220b200141fc006a290200370300200241e0026a41306a220c20014184016a290200370300200241e0026a41386a220d2001418c016a2902003703002002200141346a2902003703a0032002200141d4006a2902003703e002200141206a290300210e200141286a290300210f200141306a2802002110200241c0026a41186a2211200141b0016a290200370300200241c0026a41106a2212200141a8016a290200370300200241c0026a41086a2213200141a0016a29020037030020024180026a41386a2214200141f0016a29020037030020024180026a41306a2215200141e8016a29020037030020024180026a41286a2216200141e0016a29020037030020024180026a41206a2217200141d8016a29020037030020024180026a41186a2218200141d0016a29020037030020024180026a41106a2219200141c8016a29020037030020024180026a41086a221a200141c0016a290200370300200220014198016a2902003703c0022002200141b8016a2902003703800220014194016a280200211b200241e0016a41186a221c20014190026a290300370300200241e0016a41106a221d20014188026a290300370300200241e0016a41086a221e20014180026a2903003703002002200141f8016a2903003703e001200241c0016a41186a221f2006290300370300200241c0016a41106a22062005290300370300200241c0016a41086a22052004290300370300200220022903a0033703c00120024180016a41386a2204200d29030037030020024180016a41306a220d200c29030037030020024180016a41286a220c200b29030037030020024180016a41206a220b200a29030037030020024180016a41186a220a200929030037030020024180016a41106a2209200829030037030020024180016a41086a22082007290300370300200220022903e00237038001200241e0006a41186a22202011290300370300200241e0006a41106a22112012290300370300200241e0006a41086a22122013290300370300200220022903c002370360200241206a41386a22132014290300370300200241206a41306a22142015290300370300200241206a41286a22152016290300370300200241206a41206a22162017290300370300200241206a41186a22172018290300370300200241206a41106a22182019290300370300200241206a41086a2219201a2903003703002002200229038002370320200241186a221a201c290300370300200241106a221c201d290300370300200241086a221d201e290300370300200220022903e0013703002001280204211e200241e0026a200141086a10c301200041306a2010360200200041286a200f370300200041206a200e370300200041186a2003370300200041346a20022903c0013702002000413c6a2005290300370200200041c4006a2006290300370200200041cc006a201f290300370200200041d4006a200229038001370200200041dc006a2008290300370200200041e4006a2009290300370200200041ec006a200a290300370200200041f4006a200b290300370200200041fc006a200c29030037020020004184016a200d2903003702002000418c016a2004290300370200200141146a280200210120004194016a201b360200200041b0016a2020290300370200200041a8016a2011290300370200200041a0016a201229030037020020004198016a2002290360370200200041f0016a2013290300370200200041e8016a2014290300370200200041e0016a2015290300370200200041d8016a2016290300370200200041d0016a2017290300370200200041c8016a2018290300370200200041c0016a2019290300370200200041b8016a200229032037020020004190026a201a29030037030020004188026a201c29030037030020004180026a201d290300370300200041f8016a20022903003703002000201e360204200041106a2007280200360200200041086a20022903e002370200200041146a2001360200200041023602000c010b20004103360200200020012902043702040b200241c0036a24000b910403067f017e077f024002402001410c6a2802002202417f4c0d0020012802042103200128020021040240024020020d00410121050c010b2002102c2205450d020b20052003200210e9082106200141186a2802002207ad420c7e2208422088a70d002008a72203417f4c0d000240024020030d002003410c6e21094104210a0c010b2001280210210b2003102c220a450d022003410c6e21092003410c490d00200741ffffffff0371210c200a21052009210d0340200c450d01200b41086a2802002203417f4c0d02200b280200210e0240024020030d004101210f0c010b2003102c220f450d040b200f200e200310e908210e200541086a2003360200200541046a20033602002005200e360200200b410c6a210b2005410c6a2105200c417f6a210c200d417f6a220d0d000b0b2000200636020420002004360200200020012802243602242000200129021c37021c200041186a2007360200200041146a2009360200200041106a200a3602002000410c6a2002360200200041086a200236020020002001290228370228200041306a200141306a290200370200200041386a200141386a290200370200200041c0006a200141c0006a290200370200200041c8006a200141c8006a290200370200200041d0006a200141d0006a290200370200200041d8006a200141d8006a290200370200200041e0006a200141e0006a2902003702000f0b1038000b1036000b110041e2a0cc00412841f4afc4001039000b8a0f03037f027e027f230041106b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e190102030405060708090a0b0c0d0e0f10111213141516171819000b41e2a0cc00412841c0accb001039000b200041013a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c180b200041023a0000200041046a200141046a2902003702000c170b200141046a28020021034101210402400240200141086a2d00004101470d00200141286a2903002105200141206a29030021060c010b200141096a2d000041017121072001410a6a2d00002108410021040b200041033a0000200041286a2005370300200041206a2006370300200041106a20012903103703002000410a6a20083a0000200041096a20073a0000200041086a20043a0000200041046a20033602002000410b6a200228000b360000200041186a200141186a2903003703002000410f6a2002410b6a41046a2d00003a00000c160b200041043a0000200041046a200141046a2802003602000c150b200041053a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c140b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c130b200041073a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c120b200041083a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2902003702000c110b200041093a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c100b2000410a3a0000200041046a200141046a2802003602000c0f0b2000410b3a0000200041046a200141046a2802003602000c0e0b2000410c3a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000c0d0b2000410d3a00000c0c0b2000410e3a00000c0b0b2001410c6a2802002204417f4c0d0b200141046a28020021010240024020040d00410121030c010b2004102c2203450d0d0b20032001200410e90821012000410c6a2004360200200041086a2004360200200041046a20013602002000410f3a00000c0a0b2001410c6a2802002204417f4c0d0a200141046a28020021010240024020040d00410121030c010b2004102c2203450d0c0b20032001200410e90821012000410c6a2004360200200041086a2004360200200041046a2001360200200041103a00000c090b2001410c6a2802002204417f4c0d09200141046a28020021010240024020040d00410121030c010b2004102c2203450d0b0b20032001200410e90821012000410c6a2004360200200041086a2004360200200041046a2001360200200041113a00000c080b2001410c6a2802002204417f4c0d08200141046a28020021010240024020040d00410121030c010b2004102c2203450d0a0b20032001200410e90821012000410c6a2004360200200041086a2004360200200041046a2001360200200041123a00000c070b200041133a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c060b200041143a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c050b200041153a0000200041046a200141046a2802003602000c040b200041163a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c030b200041173a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c020b200041183a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041286a200141286a280200360200200041246a200141246a2802004101463602000c010b200041193a0000200041046a200141046a2802003602000b200241106a24000f0b1038000b1036000bd90501037f230041c0026b2202240002400240024002400240024002400240024020012d0000417f6a0e06010203040506000b41e2a0cc00412841b8afc9001039000b2002200141246a10c80141002103024020012d00014101470d00200241286a2001411a6a290000370300200241206a200141126a290000370300200241186a2001410a6a2900003703002002200141026a290000370310410121030b200020033a0001200041013a0000200041246a2002290300370200200041026a2002290310370000200041306a20012802303602002000412c6a200241086a2802003602002000410a6a200241106a41086a290300370000200041126a200241206a2903003700002000411a6a200241286a2903003700000c050b41b002102c2203450d05200241106a200141046a280200108e08200041046a2003200241106a41b00210e908360200200041023a0000200041086a200141086a2802003602000c040b200141046a280200210341b002102c2204450d04200241106a200141086a280200108e08200041086a2004200241106a41b00210e908360200200041046a2003360200200041033a00002000410c6a2001410c6a2802003602000c030b200041043a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a280200360200200041216a200141216a2d00004100473a00000c020b200041053a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041306a200141306a290300370300200041246a200141246a2902003702000c010b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000b200241c0026a24000f0b1036000b960701057f230041206b22022400024002400240024002400240024002400240024020012d0000417f6a0e06010203040506000b41e2a0cc0041284188f3c0001039000b200241086a200141046a10c801200041013a0000200041186a200141186a290300370300200041106a200141106a290300370300200041046a20022903083702002000410c6a200241106a2802003602000c050b200041023a00000c040b200041033a0000200041046a200141046a2802003602000c030b200141086a280200210341002104024002400240200141046a2802000e03020100020b410221040c010b410121040b200041043a0000200041086a2003360200200041046a20043602000c020b4101210502400240024002400240200141046a2d00000e050104020300010b2002411e6a200141076a2d00003a0000200241086a41046a200141186a2d00003a00002002200141056a2f00003b011c2002200141146a280000360208200141106a28000021062001410c6a2800002104200141086a2800002103410421050c030b2002411e6a200141076a2d00003a0000200241086a41086a2001411c6a290000370300200241086a41106a200141246a2d00003a00002002200141056a2f00003b011c2002200141146a290000370308200141106a28000021062001410c6a2800002104200141086a2800002103410021050c020b200141106a2802002204417f4c0d04200141086a28020021050240024020040d00410121030c010b2004102c2203450d060b20032005200410e9081a41022105200421060c010b2002411e6a200141076a2d00003a0000200241086a41086a2001411c6a290000370300200241086a41106a200141246a2d00003a00002002200141056a2f00003b011c2002200141146a290000370308200141106a28000021062001410c6a2800002104200141086a2800002103410321050b200041046a20053a0000200041056a20022f011c3b0000200041106a20063600002000410c6a2004360000200041086a2003360000200041146a2002290308370000200041256a20022f00053b0000200041076a2002411c6a41026a2d00003a00002000411c6a200241086a41086a290300370000200041246a200241086a41106a2d00003a0000200041276a200241056a41026a2d00003a000020012d00012101200041053a0000200020014100473a00010c010b200041063a0000200041046a200141046a2902003702000b200241206a24000f0b1038000b1036000bee0903037f037e037f23004180016b2202240002400240024002400240024002400240024020012d0000417f6a0e050102030405000b41e2a0cc00412841e0f3c0001039000b20002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a41c10010e9081a200041013a00000c040b200241106a2203200141116a280000360200200241086a2204200141096a29000037030020022001290001370300200141206a2903002105200141186a2903002106420021070240200141286a2903004201520d00200241206a41206a200141d0006a290300370300200241206a41186a200141c8006a290300370300200241206a41106a200141c0006a290300370300200241206a41086a200141386a2903003703002002200141306a290300370320420121070b20002002290300370001200041206a2005370300200041186a2006370300200041286a2007370300200041306a2002290320370300200041096a2004290300370000200041116a2003280200360000200041386a200241206a41086a290300370300200041c0006a200241206a41106a290300370300200041c8006a200241206a41186a290300370300200041d0006a200241206a41206a29030037030020012d00152101200041023a0000200041156a4102200141004720014102461b3a00000c030b200241186a200141196a290000370300200241106a200141116a290000370300200241086a200141096a29000037030020022001290001370300200241206a200141216a41c10010e9081a200141ec006a2802002203417f4c0d03200141e4006a28020021010240024020030d00410121040c010b2003102c2204450d050b20042001200310e9082101200041196a200241186a290300370000200041116a200241106a290300370000200041096a200241086a29030037000020002002290300370001200041216a200241206a41c10010e9081a200041ec006a2003360200200041e8006a2003360200200041e4006a2001360200200041033a00000c020b2001410c6a2802002203417f4c0d02200141046a28020021010240024020030d00410121040c010b2003102c2204450d040b20042001200310e90821012000410c6a2003360200200041086a2003360200200041046a2001360200200041043a00000c010b200241e8006a41106a2204200141116a280000360200200241e8006a41086a2208200141096a29000037030020022001290001370368200241106a2209200141256a280000360200200241086a220a2001411d6a2900003703002002200141156a290000370300410021030240200141296a2d00004101470d00200241386a200141c2006a290000370300200241206a41106a2001413a6a290000370300200241206a41086a200141326a29000037030020022001412a6a290000370320410121030b20002002290368370001200041156a2002290300370000200041296a20033a00002000412a6a2002290320370000200041116a2004280200360000200041096a20082903003700002000411d6a200a290300370000200041256a2009280200360000200041326a200241206a41086a2903003700002000413a6a200241206a41106a290300370000200041c2006a200241386a290300370000200041053a00000b20024180016a24000f0b1038000b1036000ba014020a7f047e230041c0006b2202240002400240024002400240024002402001280200417f6a0e0401020300010b200141046a210341012104410121050240024002400240024020012d00040e050104020300010b200241246a200341036a2d00003a0000200241106a41046a200141186a2d00003a0000200220032f00013b01222002200141146a280000360210200141106a28020021062001410c6a2802002107200141086a2802002108410421050c030b200241246a200341036a2d00003a0000200241106a41086a2001411c6a290000370300200241106a41106a200141246a2d00003a0000200220032f00013b01222002200141146a290000370310200141106a28020021062001410c6a2802002107200141086a2802002108410021050c020b200141106a2802002206417f4c0d06200141086a28020021030240024020060d00410121080c010b2006102c2208450d080b20082003200610e9081a41022105200621070c010b41032105200241246a200341036a2d00003a0000200241106a41086a2001411c6a290000370300200241106a41106a200141246a2d00003a0000200220032f00013b01222002200141146a290000370310200141106a28020021062001410c6a2802002107200141086a28020021080b02400240024002400240200141286a22092d00000e050104020300010b2002413e6a200941036a2d00003a000041042104200241286a41046a2001413c6a2d00003a0000200220092f00013b013c2002200141386a280000360228200141346a2802002103200141306a280200210a2001412c6a280200210b0c030b2002413e6a200941036a2d00003a0000200241306a200141c0006a290000370300200241386a200141c8006a2d00003a0000200220092f00013b013c2002200141386a290000370328200141346a2802002103200141306a280200210a2001412c6a280200210b410021040c020b200141346a2802002203417f4c0d062001412c6a28020021040240024020030d004101210b0c010b2003102c220b450d080b200b2004200310e9081a410221042003210a0c010b410321042002413e6a200941036a2d00003a0000200241306a200141c0006a290000370300200241386a200141c8006a2d00003a0000200220092f00013b013c2002200141386a290000370328200141346a2802002103200141306a280200210a2001412c6a280200210b0b200020053a0004200020022f01223b0005200041106a20063600002000410c6a2007360000200041086a2008360000200041146a2002290310370000200041076a200241226a41026a2d00003a00002000411c6a200241106a41086a290300370000200041246a200241106a41106a2d00003a0000200141f0006a2802002106200141d8006a290300210c200141e0006a290300210d200141e8006a290300210e2001290350210f200041286a20043a00002000412c6a200b360000200041306a200a360000200041346a2003360000200041276a2002410d6a41026a2d00003a0000200020022f000d3b0025200020022f013c3b00292000412b6a2002413c6a41026a2d00003a0000200041386a2002290328370000200041c0006a200241286a41086a290300370000200041c8006a200241286a41106a2d00003a0000200041e8006a200e370300200041e0006a200d370300200041d8006a200c370300200041d0006a200f370300200041f0006a200636020020004104360200200041cb006a200241256a41026a2d00003a0000200020022f00253b00490c030b200041013602000c020b200141046a2104410121080240024002400240024020012d00040e050104020300010b200241126a200441036a2d00003a0000200241286a41046a200141186a2d00003a0000200220042f00013b01102002200141146a280000360228200141106a280200210b2001410c6a2802002106200141086a2802002103410421080c030b200241126a200441036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220042f00013b01102002200141146a290000370328200141106a280200210b2001410c6a2802002106200141086a2802002103410021080c020b200141106a2802002206417f4c0d04200141086a28020021010240024020060d00410121030c010b2006102c2203450d060b20032001200610e9081a410221082006210b0c010b41032108200241126a200441036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220042f00013b01102002200141146a290000370328200141106a280200210b2001410c6a2802002106200141086a28020021030b200020083a0004200020022f01103b0005200020022f003c3b0025200041106a200b3600002000410c6a2006360000200041086a2003360000200041146a2002290328370000200041076a200241106a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200041276a2002413c6a41026a2d00003a0000200041023602000c010b200141046a2104410121080240024002400240024020012d00040e050104020300010b200241126a200441036a2d00003a0000200241286a41046a200141186a2d00003a0000200220042f00013b01102002200141146a280000360228200141106a280200210b2001410c6a2802002106200141086a2802002103410421080c030b200241126a200441036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220042f00013b01102002200141146a290000370328200141106a280200210b2001410c6a2802002106200141086a2802002103410021080c020b200141106a2802002206417f4c0d03200141086a28020021080240024020060d00410121030c010b2006102c2203450d050b20032008200610e9081a410221082006210b0c010b41032108200241126a200441036a2d00003a0000200241286a41086a2001411c6a290000370300200241286a41106a200141246a2d00003a0000200220042f00013b01102002200141146a290000370328200141106a280200210b2001410c6a2802002106200141086a28020021030b200020083a0004200020022f01103b0005200041106a200b3600002000410c6a2006360000200041086a2003360000200041146a2002290328370000200041076a200241106a41026a2d00003a00002000411c6a200241286a41086a290300370000200041246a200241286a41106a2d00003a0000200141306a290300210c200141c0006a290300210d200141386a290300210e2001290328210f200041c8006a200141c8006a280200360200200041386a200e370300200041c0006a200d370300200041286a200f370300200041306a200c37030020004103360200200041276a2002413c6a41026a2d00003a0000200020022f003c3b00250b200241c0006a24000f0b1038000b1036000be22505027f017e027f017e037f230041b0046b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b200241086a200141386a10ca01200241f8016a41286a200141306a290300370300200241f8016a41206a200141286a290300370300200241f8016a41186a200141206a290300370300200241f8016a41106a200141186a290300370300200241f8016a41086a200141106a2903003703002002200141086a2903003703f801200141f8016a2802002103200241f8016a41306a200241086a41c00110e9081a20014180026a2903002104200241086a200241f8016a41f00110e9081a200041086a200241086a41f00110e9081a20004180026a2004370300200041f8016a20033602002000411b3602000c1b0b200241f8016a200141086a10cb0120004100360200200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c1a0b200241f8016a200141046a10cc0120004101360200200041246a20024198026a2802003602002000411c6a20024190026a290300370200200041146a20024188026a2903003702002000410c6a20024180026a290300370200200020022903f8013702040c190b200241f8016a200141086a10cd01200041086a200241f8016a41a00210e9081a200041023602000c180b20004103360200200041086a200141086a2903003703000c170b41042103200141046a210502400240024002400240024002400240024020012d0004417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002105410121030c040b41022103200241086a41026a200541036a2d00003a0000200241f8016a41086a200141146a29020037030020024188026a2001411c6a29020037030020024190026a200141246a2d00003a0000200220052f00013b010820022001410c6a2902003703f801200141086a2802002105200141286a28020021010c040b200141086a2802002105410321030c020b2002410a6a200541036a2d00003a0000200241f8016a41086a200141146a29020037030020024188026a2001411c6a29020037030020024190026a200141246a2d00003a0000200220052f00013b010820022001410c6a2902003703f80120012d00254100472106200141086a2802002105200141286a28020021010c030b200141086a2802002105410521030b0b0b200020033a0004200020022f01083b0005200020063a0025200020022f01ac043b0126200041086a20053602002000410c6a20022903f801370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a200241f8016a41086a2903003702002000411c6a20024188026a290300370200200041246a20024190026a2d00003a0000200041043602000c160b200241f8016a200141086a10ce01200041086a200241f8016a41e00010e9081a200041053602000c150b200241f8016a200141046a10cf01200041063602002000410c6a20024180026a280200360200200020022903f8013702040c140b200241f8016a200141086a10d001200041086a200241f8016a41d80010e9081a200041073602000c130b10d101000b02400240200128020422050d00410021030c010b200241f8016a41186a200141286a290000370300200241f8016a41106a200141206a29000037030020024180026a200141186a290000370300200241f8016a41286a200141386a290000370300200241f8016a41306a200141c0006a290000370300200241f8016a41386a200141c8006a290000370300200241f8016a41c8006a200141d8006a290000370300200241f8016a41d0006a200141e0006a290000370300200241f8016a41d8006a200141e8006a2900003703002002200141106a2900003703f8012002200141306a290000370398022002200141d0006a2900003703b802200241f8016a41f8006a20014188016a290000370300200241f8016a41f0006a20014180016a290000370300200241f8016a41e8006a200141f8006a290000370300200241f8016a4198016a200141a8016a290000370300200241f8016a4190016a200141a0016a290000370300200241f8016a4188016a20014198016a290000370300200241f8016a41b8016a200141c8016a290000370300200241f8016a41b0016a200141c0016a290000370300200241f8016a41a8016a200141b8016a2900003703002002200141f0006a2900003703d802200220014190016a2900003703f8022002200141b0016a290000370398032001410c6a2802002201417f4c0d130240024020010d00410121030c010b2001102c2203450d150b20032005200110e9081a200241086a200241f8016a41c00110e9081a0b200020033602042000410c6a2001360200200041086a2001360200200041106a200241086a41c00110e9081a200041093602000c110b200241f8016a200141086a10d201200041086a200241f8016a41980210e9081a2000410a3602000c100b200241f8016a200141046a10d301200041046a200241f8016a41e80010e9081a2000410b3602000c0f0b10d401000b200241f8016a200141086a10d5012000410d360200200041386a200241f8016a41306a290300370300200041306a200241f8016a41286a290300370300200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c0d0b200241f8016a200141086a10d6012000410e360200200041386a200241f8016a41306a290300370300200041306a200241f8016a41286a290300370300200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c0c0b200241f8016a200141086a10d6012000410f360200200041386a200241f8016a41306a290300370300200041306a200241f8016a41286a290300370300200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c0b0b200241f8016a200141086a10d70120004110360200200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c0a0b200141046a2103410721050240024002400240024002400240024020012d0004417f6a0e0701020304050607000b41e2a0cc00412841a4c3cb001039000b20024190026a200341196a29000037030020024188026a200341116a29000037030020024180026a200341096a290000370300200220032900013703f801410121050c050b20024190026a200341196a29000037030020024188026a200341116a29000037030020024180026a200341096a290000370300200220032900013703f801410221050c040b200241f8016a41186a200341196a290000370300200241f8016a41106a200341116a290000370300200241f8016a41086a200341096a290000370300200241086a41086a200341296a290000370300200241086a41106a200341316a290000370300200241086a41186a200341396a290000370300200220032900013703f8012002200341216a290000370308410321050c030b200241086a200141086a10c80120024183026a200241086a41086a280200360000200220022903083700fb01410421050c020b20024190026a200341196a29000037030020024188026a200341116a29000037030020024180026a200341096a290000370300200220032900013703f801410521050c010b20024190026a200341196a29000037030020024188026a200341116a29000037030020024180026a200341096a290000370300200220032900013703f801410621050b200020053a0004200020022903f80137000520002002290308370025200020022f00ac043b00452000410d6a200241f8016a41086a290300370000200041156a200241f8016a41106a2903003700002000411d6a200241f8016a41186a2903003700002000412d6a200241086a41086a290300370000200041356a200241086a41106a2903003700002000413d6a200241086a41186a290300370000200041c7006a200241ae046a2d00003a0000200041113602000c090b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a2903002104200141306a29030021074101210841012109024002400240024002402001410c6a2d00000e050104020300010b41042109200241f8016a41046a200141206a2d00003a000020022001411c6a2800003602f80120012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a28020021050c030b20024180026a200141246a290000370300200241f8016a41106a2001412c6a2d00003a000020022001411c6a2900003703f80120012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410021090c020b200141186a2802002203417f4c0d0f200141106a28020021010240024020030d00410121050c010b2003102c2205450d110b20052001200310e9081a410221092003210a0c010b20024180026a200141246a290000370300200241f8016a41106a2001412c6a2d00003a000020022001411c6a2900003703f80120012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410321090b200241086a41106a200241f8016a41106a2d00003a0000200241086a41086a200241f8016a41086a290300370300200241046a41026a200241ac046a41026a2d00003a0000200220022903f801370308200220022f00ac043b01040c030b2001410c6a28020022094108762106410221080c010b2001410c6a28020022094108762106410321080b0b200020022f01043b002d20004112360200200041386a2004370300200041306a2007370300200041186a200a360200200041146a2003360200200041106a2005360200200041086a20083602002000411c6a20022903083702002000410c6a2006410874200941ff017172360200200041246a200241086a41086a2903003702002000412c6a200241086a41106a2d00003a00002000412f6a200241066a2d00003a00000c080b200241f8016a200141086a10d801200041086a200241f8016a41f00010e9081a200041133602000c070b200241f8016a200141086a10d901200041086a200241f8016a41f80010e9081a200041143602000c060b024002400240024020012f0104417f6a0e03010200010b200241f8016a200141086a10c90120022902fc01210420022802f8012103410321010c020b200241f8016a200141086a10c90120022902fc01210420022802f8012103410121010c010b20012f0106210541b002102c2203450d08200241f8016a200141086a28020010da012003200241f8016a41b00210e9081a410221010b200020013b0104200041153602002000410c6a2004370200200041086a2003360200200041066a20053b01000c050b200241f8016a200141086a10db01200041086a200241f8016a41a80210e9081a200041163602000c040b200241f8016a200141046a10dc01200041046a200241f8016a41c80010e9081a200041173602000c030b200241f8016a200141086a10dd01200041086a200241f8016a41c80010e9081a200041183602000c020b200241f8016a200141086a10de0120004119360200200041c0006a200241f8016a41386a290300370300200041386a200241f8016a41306a290300370300200041306a200241f8016a41286a290300370300200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000c010b200241f8016a200141086a10df012000411a360200200041c0006a200241f8016a41386a290300370300200041386a200241f8016a41306a290300370300200041306a200241f8016a41286a290300370300200041286a200241f8016a41206a290300370300200041206a200241f8016a41186a290300370300200041186a200241f8016a41106a290300370300200041106a200241f8016a41086a290300370300200041086a20022903f8013703000b200241b0046a24000f0b1038000b1036000b8b6f04027f017e3c7f027e230041c0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e0f0102030405060708090a0b0c0d0e0f000b41e2a0cc00412841f89bc4001039000b200041013a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c0e0b2001410c6a2802002203ad42c8007e2204422088a70d0e2004a72205417f4c0d0e0240024020050d00200541c8006e2106410421070c010b200141046a28020021082005102c2207450d10200541c8006e2106200541c800490d00200341ffffffff017121094100210a2006210b03402009450d014100210c4100210d0240024002400240024002402008200a6a22052d00000e06050102030400050b200241f0026a41026a200541036a2d00003a000020024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541016a2f00003b01f0022002200541106a290000370388032005410c6a280000210e200541086a280000210f200541046a28000021104105210d0c040b2005410c6a280200220e417f4c0d14200541046a280200210f4101210d410121100240200e450d00200e102c2210450d160b2010200f200e10e9081a200e210f0c030b4102210d200241f0026a41026a200541036a2d00003a000020024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541016a2f00003b01f0022002200541106a290000370388032005410c6a280000210e200541086a280000210f200541046a28000021100c020b4103210d200241f0026a41026a200541036a2d00003a000020024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541016a2f00003b01f0022002200541106a290000370388032005410c6a280000210e200541086a280000210f200541046a28000021100c010b200241f0026a41026a200541036a2d00003a000020024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541016a2f00003b01f0022002200541106a290000370388032005410c6a280000210e200541086a280000210f4104210d200541046a28000021100b024002400240024002400240200541246a2d00000e06050102030400050b200241d8026a41026a200541276a2d00003a0000200241a0036a41086a2005413c6a290000370300200241a0036a41106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a2900003703a003200541306a28000021112005412c6a2800002112200541286a28000021134105210c0c040b200541306a2802002212417f4c0d14200541286a28020021054101210c4101211302402012450d002012102c2213450d160b20132005201210e9081a201221110c030b4102210c200241d8026a41026a200541276a2d00003a0000200241a0036a41086a2005413c6a290000370300200241a0036a41106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a2900003703a003200541306a28000021112005412c6a2800002112200541286a28000021130c020b200241d8026a41026a200541276a2d00003a0000200241a0036a41086a2005413c6a290000370300200241a0036a41106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a2900003703a003200541306a28000021112005412c6a2800002112200541286a28000021134103210c0c010b200241d8026a41026a200541276a2d00003a0000200241a0036a41086a2005413c6a290000370300200241a0036a41106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a2900003703a003200541306a28000021112005412c6a2800002112200541286a28000021134104210c0b2007200a6a2205200d3a0000200541016a20022f01f0023b0000200541036a200241f0026a41026a2d00003a00002005410c6a200e360200200541086a200f360200200541046a2010360200200541106a200229038803370200200541186a20024188036a41086a290300370200200541206a20024188036a41106a280200360200200541246a200c3a0000200541256a20022f01d8023b0000200541276a200241d8026a41026a2d00003a0000200541306a20113602002005412c6a2012360200200541286a2013360200200541346a20022903a0033702002005413c6a200241a0036a41086a290300370200200541c4006a200241a0036a41106a2802003602002009417f6a2109200a41c8006a210a200b417f6a220b0d000b0b4100211441002115024002400240024002400240200141106a2d00000e06050102030400050b200241f4016a200141136a2d00003a0000200241e8016a200141286a290000370300200241e0016a41106a200141306a2d00003a00002002200141116a2f00003b01f2012002200141206a2900003703e0012001411c6a2800002105200141186a2800002116200141146a2800002110410521150c040b2001411c6a2802002205417f4c0d12200141146a280200210a410121154101211002402005450d002005102c2210450d140b2010200a200510e9081a200521160c030b41022115200241f2016a41026a200141136a2d00003a0000200241e8016a200141286a290000370300200241e0016a41106a200141306a2d00003a00002002200141116a2f00003b01f2012002200141206a2900003703e0012001411c6a2800002105200141186a2800002116200141146a28000021100c020b200241f4016a200141136a2d00003a0000200241e8016a200141286a290000370300200241e0016a41106a200141306a2d00003a00002002200141116a2f00003b01f2012002200141206a2900003703e0012001411c6a2800002105200141186a2800002116200141146a2800002110410321150c010b200241f4016a200141136a2d00003a0000200241e8016a200141286a290000370300200241e0016a41106a200141306a2d00003a00002002200141116a2f00003b01f2012002200141206a2900003703e0012001411c6a2800002105200141186a2800002116200141146a2800002110410421150b024002400240024002400240200141346a2d00000e06050102030400050b2002418c026a200141376a2d00003a000020024180026a200141cc006a29000037030020024188026a200141d4006a2d00003a00002002200141356a2f00003b018a022002200141c4006a2900003703f801200141c0006a280000210a2001413c6a2800002117200141386a2800002113410521140c040b200141c0006a280200220a417f4c0d12200141386a280200210941012114410121130240200a450d00200a102c2213450d140b20132009200a10e9081a200a21170c030b410221142002418a026a41026a200141376a2d00003a000020024180026a200141cc006a29000037030020024188026a200141d4006a2d00003a00002002200141356a2f00003b018a022002200141c4006a2900003703f801200141c0006a280000210a2001413c6a2800002117200141386a28000021130c020b2002418c026a200141376a2d00003a000020024180026a200141cc006a29000037030020024188026a200141d4006a2d00003a00002002200141356a2f00003b018a022002200141c4006a2900003703f801200141c0006a280000210a2001413c6a2800002117200141386a2800002113410321140c010b2002418c026a200141376a2d00003a000020024180026a200141cc006a29000037030020024188026a200141d4006a2d00003a00002002200141356a2f00003b018a022002200141c4006a2900003703f801200141c0006a280000210a2001413c6a2800002117200141386a2800002113410421140b4100211841002119024002400240024002400240200141d8006a2d00000e06050102030400050b200241a4026a200141db006a2d00003a000020024198026a200141f0006a290000370300200241a0026a200141f8006a2d00003a00002002200141d9006a2f00003b01a2022002200141e8006a29000037039002200141e4006a2800002109200141e0006a280000211a200141dc006a280000210b410521190c040b200141e4006a2802002209417f4c0d12200141dc006a280200210c410121194101210b02402009450d002009102c220b450d140b200b200c200910e9081a2009211a0c030b41022119200241a2026a41026a200141db006a2d00003a000020024198026a200141f0006a290000370300200241a0026a200141f8006a2d00003a00002002200141d9006a2f00003b01a2022002200141e8006a29000037039002200141e4006a2800002109200141e0006a280000211a200141dc006a280000210b0c020b200241a4026a200141db006a2d00003a000020024198026a200141f0006a290000370300200241a0026a200141f8006a2d00003a00002002200141d9006a2f00003b01a2022002200141e8006a29000037039002200141e4006a2800002109200141e0006a280000211a200141dc006a280000210b410321190c010b200241a4026a200141db006a2d00003a000020024198026a200141f0006a290000370300200241a0026a200141f8006a2d00003a00002002200141d9006a2f00003b01a2022002200141e8006a29000037039002200141e4006a2800002109200141e0006a280000211a200141dc006a280000210b410421190b024002400240024002400240200141fc006a2d00000e06050102030400050b200241bc026a200141ff006a2d00003a0000200241b0026a20014194016a290000370300200241b8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ba0220022001418c016a2900003703a80220014188016a280000211b20014184016a280000210c20014180016a2800002111410521180c040b20014188016a280200220c417f4c0d1220014180016a280200210d41012118410121110240200c450d00200c102c2211450d140b2011200d200c10e9081a200c211b0c030b41022118200241ba026a41026a200141ff006a2d00003a0000200241b0026a20014194016a290000370300200241b8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ba0220022001418c016a2900003703a80220014188016a280000211b20014184016a280000210c20014180016a28000021110c020b200241bc026a200141ff006a2d00003a0000200241b0026a20014194016a290000370300200241b8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ba0220022001418c016a2900003703a80220014188016a280000211b20014184016a280000210c20014180016a2800002111410321180c010b200241bc026a200141ff006a2d00003a0000200241b0026a20014194016a290000370300200241b8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ba0220022001418c016a2900003703a80220014188016a280000211b20014184016a280000210c20014180016a2800002111410421180b4100211c4100211d024002400240024002400240200141a0016a2d00000e06050102030400050b200241d4026a200141a3016a2d00003a0000200241c8026a200141b8016a290000370300200241d0026a200141c0016a2d00003a00002002200141a1016a2f00003b01d2022002200141b0016a2900003703c002200141ac016a280000211e200141a8016a280000210d200141a4016a280000210f4105211d0c040b200141ac016a280200220d417f4c0d12200141a4016a280200210e4101211d4101210f0240200d450d00200d102c220f450d140b200f200e200d10e9081a200d211e0c030b4102211d200241d2026a41026a200141a3016a2d00003a0000200241c8026a200141b8016a290000370300200241d0026a200141c0016a2d00003a00002002200141a1016a2f00003b01d2022002200141b0016a2900003703c002200141ac016a280000211e200141a8016a280000210d200141a4016a280000210f0c020b200241d4026a200141a3016a2d00003a0000200241c8026a200141b8016a290000370300200241d0026a200141c0016a2d00003a00002002200141a1016a2f00003b01d2022002200141b0016a2900003703c002200141ac016a280000211e200141a8016a280000210d200141a4016a280000210f4103211d0c010b200241d4026a200141a3016a2d00003a0000200241c8026a200141b8016a290000370300200241d0026a200141c0016a2d00003a00002002200141a1016a2f00003b01d2022002200141b0016a2900003703c002200141ac016a280000211e200141a8016a280000210d200141a4016a280000210f4104211d0b02402001418c026a2d00004101470d00200241b0036a2001419d026a280000360200200241a8036a20014195026a29000037030020022001418d026a2900003703a0034101211c0b4100211f41002120024002400240024002400240200141c4016a2d00000e06050102030400050b200241ec026a200141c7016a2d00003a0000200241e0026a200141dc016a290000370300200241e8026a200141e4016a2d00003a00002002200141c5016a2f00003b01ea022002200141d4016a2900003703d802200141d0016a2800002121200141cc016a280000210e200141c8016a2800002108410521200c040b200141d0016a280200220e417f4c0d12200141c8016a280200211241012120410121080240200e450d00200e102c2208450d140b20082012200e10e9081a200e21210c030b41022120200241ea026a41026a200141c7016a2d00003a0000200241e0026a200141dc016a290000370300200241e8026a200141e4016a2d00003a00002002200141c5016a2f00003b01ea022002200141d4016a2900003703d802200141d0016a2800002121200141cc016a280000210e200141c8016a28000021080c020b200241ec026a200141c7016a2d00003a0000200241e0026a200141dc016a290000370300200241e8026a200141e4016a2d00003a00002002200141c5016a2f00003b01ea022002200141d4016a2900003703d802200141d0016a2800002121200141cc016a280000210e200141c8016a2800002108410321200c010b200241ec026a200141c7016a2d00003a0000200241e0026a200141dc016a290000370300200241e8026a200141e4016a2d00003a00002002200141c5016a2f00003b01ea022002200141d4016a2900003703d802200141d0016a2800002121200141cc016a280000210e200141c8016a2800002108410421200b024002400240024002400240200141e8016a2d00000e06050102030400050b20024186036a200141eb016a2d00003a0000200241f8026a20014180026a29000037030020024180036a20014188026a2d00003a00002002200141e9016a2f00003b0184032002200141f8016a2900003703f002200141f4016a2800002122200141f0016a2800002112200141ec016a28000021234105211f0c040b200141f4016a2802002212417f4c0d12200141ec016a28020021014101211f4101212302402012450d002012102c2223450d140b20232001201210e9081a201221220c030b4102211f20024184036a41026a200141eb016a2d00003a0000200241f8026a20014180026a29000037030020024180036a20014188026a2d00003a00002002200141e9016a2f00003b0184032002200141f8016a2900003703f002200141f4016a2800002122200141f0016a2800002112200141ec016a28000021230c020b20024186036a200141eb016a2d00003a0000200241f8026a20014180026a29000037030020024180036a20014188026a2d00003a00002002200141e9016a2f00003b0184032002200141f8016a2900003703f002200141f4016a2800002122200141f0016a2800002112200141ec016a28000021234103211f0c010b20024186036a200141eb016a2d00003a0000200241f8026a20014180026a29000037030020024180036a20014188026a2d00003a00002002200141e9016a2f00003b0184032002200141f8016a2900003703f002200141f4016a2800002122200141f0016a2800002112200141ec016a28000021234104211f0b200241da016a41026a2201200241f2016a41026a2d00003a0000200241c8016a41086a2224200241e0016a41086a290300370300200241c8016a41106a2225200241e0016a41106a2d00003a0000200241c4016a41026a2226200241dd016a41026a2d00003a0000200241c0016a41026a22272002418a026a41026a2d00003a0000200220022f01f2013b01da01200220022903e0013703c801200220022f00dd013b01c401200220022f018a023b01c001200241a8016a41106a2228200241f8016a41106a2d00003a0000200241a8016a41086a2229200241f8016a41086a290300370300200241a4016a41026a222a200241f5016a41026a2d00003a0000200241a0016a41026a222b200241a2026a41026a2d00003a000020024188016a41086a222c20024190026a41086a29030037030020024188016a41106a222d20024190026a41106a2d00003a0000200220022903f8013703a801200220022f00f5013b01a401200220022f01a2023b01a00120022002290390023703880120024184016a41026a222e2002418d026a41026a2d00003a000020024180016a41026a222f200241ba026a41026a2d00003a0000200241e8006a41106a2230200241a8026a41106a2d00003a0000200241e8006a41086a2231200241a8026a41086a290300370300200241e4006a41026a2232200241a5026a41026a2d00003a0000200220022f008d023b018401200220022f01ba023b018001200220022903a802370368200220022f00a5023b0164200241e0006a41026a2233200241d2026a41026a2d00003a0000200220022f01d2023b0160200241c8006a41106a2234200241c0026a41106a2d00003a0000200241c8006a41086a2235200241c0026a41086a290300370300200220022903c002370348200241c4006a41026a2236200241bd026a41026a2d00003a0000200220022f00bd023b014420024188036a41106a2237200241a0036a41106a28020036020020024188036a41086a2238200241a0036a41086a290300370300200220022903a00337038803200241c0006a41026a2239200241ea026a41026a2d00003a0000200220022f01ea023b0140200241286a41106a223a200241d8026a41106a2d00003a0000200241286a41086a223b200241d8026a41086a290300370300200220022903d802370328200241246a41026a223c200241d5026a41026a2d00003a0000200220022f00d5023b0124200241206a41026a223d20024184036a41026a2d00003a0000200220022f0184033b0120200241086a41106a223e200241f0026a41106a2d00003a0000200241086a41086a223f200241f0026a41086a290300370300200220022903f002370308200241046a41026a2240200241ed026a41026a2d00003a0000200220022f00ed023b0104200041106a20153a00002000410c6a2003360200200041086a2006360200200041046a20073602002000411c6a2005360000200041186a2016360000200041146a2010360000200041116a20022f01da013b0000200041136a20012d00003a0000200041206a20022903c801370000200041286a2024290300370000200041306a20252d00003a0000200041316a20022f01c4013b0000200041336a20262d00003a0000200041346a20143a0000200041376a20272d00003a0000200041356a20022f01c0013b0000200041c0006a200a3600002000413c6a2017360000200041386a2013360000200041d4006a20282d00003a0000200041cc006a2029290300370000200041c4006a20022903a801370000200041d7006a202a2d00003a0000200041d5006a20022f01a4013b0000200041d8006a20193a0000200041db006a202b2d00003a0000200041d9006a20022f01a0013b0000200041e4006a2009360000200041e0006a201a360000200041dc006a200b360000200041f8006a202d2d00003a0000200041f0006a202c290300370000200041e8006a200229038801370000200041fb006a202e2d00003a0000200041f9006a20022f0184013b0000200041fc006a20183a0000200041ff006a202f2d00003a0000200041fd006a20022f0180013b000020004188016a201b36000020004184016a200c36000020004180016a20113600002000419c016a20302d00003a000020004194016a20312903003700002000418c016a20022903683700002000419f016a20322d00003a00002000419d016a20022f01643b0000200041a0016a201d3a0000200041a3016a20332d00003a0000200041a1016a20022f01603b0000200041ac016a201e360000200041a8016a200d360000200041a4016a200f360000200041c0016a20342d00003a0000200041b8016a2035290300370000200041b0016a2002290348370000200041c3016a20362d00003a0000200041c1016a20022f01443b0000200041c4016a20203a0000200041c7016a20392d00003a0000200041c5016a20022f01403b0000200041d0016a2021360000200041cc016a200e360000200041c8016a2008360000200041e4016a203a2d00003a0000200041dc016a203b290300370000200041d4016a2002290328370000200041e7016a203c2d00003a0000200041e5016a20022f01243b0000200041e8016a201f3a0000200041eb016a203d2d00003a0000200041e9016a20022f01203b0000200041f4016a2022360000200041f0016a2012360000200041ec016a202336000020004188026a203e2d00003a000020004180026a203f290300370000200041f8016a20022903083700002000418b026a20402d00003a000020004189026a20022f01043b00002000418c026a201c3a00002000419d026a203728020036000020004195026a20382903003700002000418d026a200229038803370000200041a3026a200241a0036a41026a2d00003a0000200041a1026a20022f00a0033b0000200041023a00000c0d0b2001410c6a2802002214ad42c4007e2204422088a70d0d2004a72211417f4c0d0d0240024020110d00201141c4006e2123410421070c010b200141046a28020021082011102c2207450d0f201141c4006e2123201141c400490d004100210a200241f2026a210f200821052023210e03402011200a460d01200241a0036a41086a2212200541086a290200370300200241a0036a41106a2210200541106a290200370300200241a0036a41186a2213200541186a290200370300200220052902003703a0034100210902400240024002400240024020052d00200e06050102030400050b200f2008200a6a220141236a2d00003a000020024188036a41086a200141386a29000037030020024188036a41106a200141c0006a2d00003a00002002200141216a2f00003b01f0022002200141306a290000370388032001412c6a280000210b200141286a280000210c200141246a280000210d410521090c040b2008200a6a2201412c6a280200220c417f4c0d13200141246a2802002101410121094101210d0240200c450d00200c102c220d450d150b200d2001200c10e9081a200c210b0c030b41022109200241f0026a41026a2008200a6a220141236a2d00003a000020024188036a41086a200141386a29000037030020024188036a41106a200141c0006a2d00003a00002002200141216a2f00003b01f0022002200141306a290000370388032001412c6a280000210b200141286a280000210c200141246a280000210d0c020b200f2008200a6a220141236a2d00003a000020024188036a41086a200141386a29000037030020024188036a41106a200141c0006a2d00003a00002002200141216a2f00003b01f0022002200141306a290000370388032001412c6a280000210b200141286a280000210c200141246a280000210d410321090c010b200f2008200a6a220141236a2d00003a000020024188036a41086a200141386a29000037030020024188036a41106a200141c0006a2d00003a00002002200141216a2f00003b01f0022002200141306a290000370388032001412c6a280000210b200141286a280000210c200141246a280000210d410421090b200541c4006a21052007200a6a220120022903a003370200200141186a2013290300370200200141106a2010290300370200200141086a2012290300370200200141206a20093a0000200141216a20022f01f0023b0000200141236a200f2d00003a00002001412c6a200b360200200141286a200c360200200141246a200d360200200141306a200229038803370200200141386a20024188036a41086a290300370200200141c0006a20024188036a41106a280200360200200a41c4006a210a200e417f6a220e0d000b0b200041033a00002000410c6a2014360200200041086a2023360200200041046a20073602000c0c0b200041043a00000c0b0b200041053a0000200041106a200141106a290300370300200041086a200141086a290300370300200041046a200141046a2802003602000c0a0b200041063a0000200041046a200141046a2802003602000c090b200041073a0000200041106a200141106a290300370300200041086a200141086a290300370300200041046a200141046a2802003602000c080b200041083a000020002001290001370001200041246a200141246a280200360200200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c070b200041093a0000200041086a200141086a290300370300200041046a200141046a2802003602000c060b200141046a280200210d4101210902400240024002400240200141086a2d00000e050104020300010b2002418a036a2001410b6a2d00003a0000200241a0036a41046a2001411c6a2d00003a00002002200141096a2f00003b0188032002200141186a2800003602a003200141146a280000210c200141106a28000021052001410c6a280000210a410421090c030b2002418a036a2001410b6a2d00003a0000200241a0036a41086a200141206a290000370300200241a0036a41106a200141286a2d00003a00002002200141096a2f00003b0188032002200141186a2900003703a003200141146a280000210c200141106a28000021052001410c6a280000210a410021090c020b200141146a2802002205417f4c0d082001410c6a28020021090240024020050d004101210a0c010b2005102c220a450d0a0b200a2009200510e9081a410221092005210c0c010b2002418a036a2001410b6a2d00003a0000200241a0036a41086a200141206a290000370300200241a0036a41106a200141286a2d00003a00002002200141096a2f00003b0188032002200141186a2900003703a003200141146a280000210c200141106a28000021052001410c6a280000210a410321090b200141c0006a2903002141200141386a290300214242062104024002400240024002400240024020012802300e0700010203040506000b420021040c050b420121040c040b420221040c030b420321040c020b420421040c010b420521040b200041086a20093a0000200041046a200d360200200041096a20022f0188033b0000200041146a200c360000200041106a20053600002000410c6a200a360000200041186a20022903a003370000200041296a20022f00f0023b00002000410b6a20024188036a41026a2d00003a0000200041206a200241a0036a41086a290300370000200041286a200241a0036a41106a2d00003a00002000412b6a200241f0026a41026a2d00003a0000200041c0006a2041370300200041386a2042370300200041306a20043703002000410a3a00000c050b4101210902400240024002400240200141046a2d00000e050104020300010b2002418a036a200141076a2d00003a0000200241a0036a41046a200141186a2d00003a00002002200141056a2f00003b0188032002200141146a2800003602a003200141106a280000210c2001410c6a2800002105200141086a280000210a410421090c030b2002418a036a200141076a2d00003a0000200241a0036a41086a2001411c6a290000370300200241a0036a41106a200141246a2d00003a00002002200141056a2f00003b0188032002200141146a2900003703a003200141106a280000210c2001410c6a2800002105200141086a280000210a410021090c020b200141106a2802002205417f4c0d07200141086a28020021010240024020050d004101210a0c010b2005102c220a450d090b200a2001200510e9081a410221092005210c0c010b2002418a036a200141076a2d00003a0000200241a0036a41086a2001411c6a290000370300200241a0036a41106a200141246a2d00003a00002002200141056a2f00003b0188032002200141146a2900003703a003200141106a280000210c2001410c6a2800002105200141086a280000210a410321090b200041046a20093a0000200041056a20022f0188033b0000200041106a200c3600002000410c6a2005360000200041086a200a360000200041146a20022903a003370000200041256a20022f00f0023b0000200041076a20024188036a41026a2d00003a00002000411c6a200241a0036a41086a290300370000200041246a200241a0036a41106a2d00003a0000200041276a200241f0026a41026a2d00003a00002000410b3a00000c040b4101211202400240024002400240200141046a2d00000e050104020300010b200241c2026a200141076a2d00003a000020024188036a41046a200141186a2d00003a00002002200141056a2f00003b01c0022002200141146a28000036028803200141106a28000021102001410c6a2800002105200141086a280000210c410421120c030b200241c2026a200141076a2d00003a000020024188036a41086a2001411c6a29000037030020024188036a41106a200141246a2d00003a00002002200141056a2f00003b01c0022002200141146a29000037038803200141106a28000021102001410c6a2800002105200141086a280000210c410021120c020b200141106a2802002205417f4c0d06200141086a280200210a0240024020050d004101210c0c010b2005102c220c450d080b200c200a200510e9081a41022112200521100c010b200241c2026a200141076a2d00003a000020024188036a41086a2001411c6a29000037030020024188036a41106a200141246a2d00003a00002002200141056a2f00003b01c0022002200141146a29000037038803200141106a28000021102001410c6a2800002105200141086a280000210c410321120b4100210d02400240024002400240024020012d00280e06050102030400050b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094105210d0c040b200141346a280200220a417f4c0d082001412c6a28020021014101210d410121090240200a450d00200a102c2209450d0a0b20092001200a10e9081a200a210e0c030b4102210d200241f0026a41026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021090c020b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094103210d0c010b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094104210d0b200041046a20123a0000200041056a20022f01c0023b0000200041106a20103600002000410c6a2005360000200041086a200c360000200041146a200229038803370000200041256a20022f00a8023b0000200041076a200241c0026a41026a2d00003a00002000411c6a20024188036a41086a290300370000200041246a20024188036a41106a2d00003a0000200041276a200241a8026a41026a2d00003a0000200041286a200d3a00002000412c6a2009360000200041306a200a360000200041346a200e360000200041296a20022f01f0023b00002000412b6a200241f0026a41026a2d00003a0000200041386a20022903a003370000200041c0006a200241a0036a41086a290300370000200041c8006a200241a0036a41106a2d00003a0000200041c9006a20022f00d8023b0000200041cb006a200241d8026a41026a2d00003a00002000410c3a00000c030b4101211202400240024002400240200141046a2d00000e050104020300010b200241c2026a200141076a2d00003a000020024188036a41046a200141186a2d00003a00002002200141056a2f00003b01c0022002200141146a28000036028803200141106a28000021102001410c6a2800002105200141086a280000210c410421120c030b200241c2026a200141076a2d00003a000020024188036a41086a2001411c6a29000037030020024188036a41106a200141246a2d00003a00002002200141056a2f00003b01c0022002200141146a29000037038803200141106a28000021102001410c6a2800002105200141086a280000210c410021120c020b200141106a2802002205417f4c0d05200141086a280200210a0240024020050d004101210c0c010b2005102c220c450d070b200c200a200510e9081a41022112200521100c010b200241c2026a200141076a2d00003a000020024188036a41086a2001411c6a29000037030020024188036a41106a200141246a2d00003a00002002200141056a2f00003b01c0022002200141146a29000037038803200141106a28000021102001410c6a2800002105200141086a280000210c410321120b4100210d02400240024002400240024020012d00280e06050102030400050b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094105210d0c040b200141346a280200220a417f4c0d072001412c6a28020021014101210d410121090240200a450d00200a102c2209450d090b20092001200a10e9081a200a210e0c030b4102210d200241f0026a41026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021090c020b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094103210d0c010b200241f2026a2001412b6a2d00003a0000200241a8036a200141c0006a290000370300200241b0036a200141c8006a2d00003a00002002200141296a2f00003b01f0022002200141386a2900003703a003200141346a280000210e200141306a280000210a2001412c6a28000021094104210d0b200041046a20123a0000200041056a20022f01c0023b0000200041106a20103600002000410c6a2005360000200041086a200c360000200041146a200229038803370000200041256a20022f00a8023b0000200041076a200241c0026a41026a2d00003a00002000411c6a20024188036a41086a290300370000200041246a20024188036a41106a2d00003a0000200041276a200241a8026a41026a2d00003a0000200041286a200d3a00002000412c6a2009360000200041306a200a360000200041346a200e360000200041296a20022f01f0023b00002000412b6a200241f0026a41026a2d00003a0000200041386a20022903a003370000200041c0006a200241a0036a41086a290300370000200041c8006a200241a0036a41106a2d00003a0000200041c9006a20022f00d8023b0000200041cb006a200241d8026a41026a2d00003a00002000410d3a00000c020b4101210902400240024002400240200141046a2d00000e050104020300010b2002418a036a200141076a2d00003a0000200241a0036a41046a200141186a2d00003a00002002200141056a2f00003b0188032002200141146a2800003602a003200141106a28000021052001410c6a280000210c200141086a280000210a410421090c030b2002418a036a200141076a2d00003a0000200241a0036a41086a2001411c6a290000370300200241a0036a41106a200141246a2d00003a00002002200141056a2f00003b0188032002200141146a2900003703a003200141106a28000021052001410c6a280000210c200141086a280000210a410021090c020b200141106a2802002205417f4c0d04200141086a28020021010240024020050d004101210a0c010b2005102c220a450d060b200a2001200510e9081a410221092005210c0c010b2002418a036a200141076a2d00003a0000200241a0036a41086a2001411c6a290000370300200241a0036a41106a200141246a2d00003a00002002200141056a2f00003b0188032002200141146a2900003703a003200141106a28000021052001410c6a280000210c200141086a280000210a410321090b200041046a20093a0000200041056a20022f0188033b0000200041106a20053600002000410c6a200c360000200041086a200a360000200041146a20022903a003370000200041256a20022f00f0023b0000200041076a20024188036a41026a2d00003a00002000411c6a200241a0036a41086a290300370000200041246a200241a0036a41106a2d00003a0000200041276a200241f0026a41026a2d00003a00002000410e3a00000c010b2000410f3a00000b200241c0036a24000f0b1038000b1036000bd90a01097f230041f0026b2202240002400240024002400240024002400240024002400240024020012d0000417f6a0e0a01020304050607080900010b200241186a2203200141196a290000370300200241106a2204200141116a290000370300200241086a2205200141096a29000037030020022001290001370300200241206a41186a2206200141396a290000370300200241206a41106a2207200141316a290000370300200241206a41086a2208200141296a2900003703002002200141216a290000370320200141c1006a2d0000210941b002102c220a450d0a200241c0006a200141c4006a28020010bb03200a200241c0006a41b00210e9082101200041196a2003290300370000200041116a2004290300370000200041096a200529030037000020002002290300370001200041216a2002290320370000200041296a2008290300370000200041316a2007290300370000200041396a2006290300370000200041c4006a2001360200200041c1006a20093a00002000410a3a00000c090b200241386a2203200141196a290000370300200241306a2204200141116a290000370300200241286a2205200141096a29000037030020022001290001370320200141216a2d0000210641b002102c2207450d09200241c0006a200141246a28020010bb032007200241c0006a41b00210e9082101200041196a2003290300370000200041116a2004290300370000200041096a200529030037000020002002290320370001200041246a2001360200200041216a20063a0000200041013a00000c080b200041023a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a280200360200200041216a200141216a2d00003a00000c070b200041033a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a280200360200200041216a200141216a2d00003a00000c060b200041043a00000c050b200041053a0000200020012d00013a0001200041046a200141046a280200360200200041026a200141026a2f01003b01000c040b200041063a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a290200370200200041226a200141226a2f01003b0100200041216a200141216a2d00003a00000c030b200041073a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000c020b200041083a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000c010b200041093a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000b200241f0026a24000f0b1036000bf14107037f017e057f017e027f027e067f230041b0056b220224000240024002400240024002400240024002400240024020012d0000417f6a0e0401020304000b41e2a0cc00412841889cc4001039000b200241086a200141046a10c80141b002102c2203450d03411021040240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141106a28020022012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b20024180036a200141386a10ca01200141086a2903002105200241d0016a41086a200141246a2d00003a000020022001411c6a2902003703d001200220012f01263b01ce01200141186a2802002106200141146a2802002107200141106a2802002108200141286a28020021092001412c6a280200210a200141306a290300210b200141f8016a280200210c20012d0025210d200229038003210e200229038803210f200241186a20024180036a41106a41b00110e9081a2005a721102005422088a7211120014184026a280200211220014180026a2802002101411b21040c1c0b20024180036a200141086a10cb01200220024194036a2802003602d001200229038003220f422088a7211120024190036a28020021062002418c036a280200210720024180036a41086a2802002108200fa72110410021040c1c0b20024180036a200141046a10cc01200241d8016a200241a0036a2d00003a0000200220024198036a2903003703d0012002200241a2036a2f01003b01ce0120022f00810320022d008303411074722113200229028403220f422088a7211120024194036a280200210620024180036a41106a28020021072002418c036a2802002108200241a1036a2d0000210d20022d0080032114200fa72110410121040c230b20024180036a200141086a10cd01200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d001200220022f019e033b01ce01200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a2802002108200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f20022d009d03210d2002290380032105200241186a200241c0036a41b00110e9081a200241e0016a41086a20024188056a290300370300200241e0016a41106a20024190056a290300370300200241f8016a20024198056a290300370300200220024180056a2903003703e0012005422088a72111200241fc046a2802002112200241f8046a2802002101200241f4046a2802002115200241f0046a280200210c2005a72110410221040c190b200141086a290300220fa72110200f422088a72111410321040c190b02400240024002400240024002400240024020012d0004417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002110410121140c040b20024180036a41086a200141246a2d00003a000020022001411c6a2902003703800320012f0005200141076a2d0000411074722113200141186a2802002106200141146a2802002107200141106a28020021082001410c6a2802002111200141086a2802002110200141286a2802002109410221140c040b200141086a2802002110410321140c020b20024180036a41086a200141246a2d00003a000020022001411c6a2902003703800320012d0025410047210d20012f0005200141076a2d0000411074722113200141186a2802002106200141146a2802002107200141106a28020021082001410c6a2802002111200141086a2802002110200141286a2802002109410421140c030b200141086a2802002110410521140b0b0b200241d0016a41086a20024180036a41086a2d00003a000020022002290380033703d001410421040c200b20024180036a200141086a10ce01200241d0016a41086a2002419c036a2d00003a0000200241186a41086a200241c8036a290300370300200241186a41106a200241d0036a290300370300200241306a200241d8036a290300370300200220024194036a2902003703d001200220022f019e033b01ce012002200241c0036a2903003703182002290380032205422088a72111200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a2802002108200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f20022d009d03210d2005a72110410521040c150b20024180036a200141046a10cf0120022f00810320022d008303411074722113200229028403220f422088a7211120022d0080032114200fa72110410621040c1e0b20024180036a200141086a10d001200241d0016a41086a2002419c036a2d00003a0000200241186a41086a200241c8036a290300370300200241186a41106a200241d0036a290300370300200220024194036a2902003703d00120022002419e036a2f01003b01ce012002200241c0036a2903003703182002290380032205422088a72111200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f2005a72110410721040c130b10d101000b02400240200128020422130d0041002114410021110c010b200241206a200141246a2d00003a000020022001411c6a290000370318200220012f01263b01d0012002200141c8006a29020037038003200141386a290200210e200141306a290200210b200141186a2802002106200141146a2802002107200141106a2802002108200141286a28020021092001412c6a280200210a200141c0006a290200210f20012d0025210d200241a0036a200141e8006a29020037030020024180036a41186a200141e0006a29020037030020024180036a41106a200141d8006a29020037030020024180036a41306a200141f8006a29020037030020024180036a41386a20014180016a29020037030020024180036a41c0006a20014188016a29020037030020024180036a41d0006a20014198016a29020037030020024180036a41d8006a200141a0016a29020037030020024180036a41e0006a200141a8016a2902003703002002200141d0006a290200370388032002200141f0006a2902003703a803200220014190016a2902003703c80320024180036a4180016a200141c8016a29020037030020024180036a41f8006a200141c0016a29020037030020024180036a41f0006a200141b8016a2902003703002002200141b0016a2902003703e8032001410c6a2802002211417f4c0d190240024020110d00410121140c010b2011102c2214450d190b20142013201110e9081a200241f0026a41086a200241186a41086a2d00003a0000200220022903183703f002200220022f01d0013b01ee02200241e0016a20024180036a41880110e9081a0b200241d0016a41086a200241f0026a41086a2d00003a0000200220022903f0023703d001200220022f01ee023b01ce01200241186a200241e0016a41880110e9081a2014410876211341092104201121100c1b0b20024180036a200141086a10d201200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d001200220022f019e033b01ce01200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a2802002108200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f20022d009d03210d2002290380032105200241186a200241c0036a41b00110e9081a200241e0016a41086a20024188056a290300370300200241e0016a41106a20024190056a290300370300200220024180056a2903003703e0012005422088a72111200241fc046a2802002112200241f8046a2802002101200241f4046a2802002115200241f0046a280200210c2005a72110410a21040c110b20024180036a200141046a10d301200241d0016a41086a20024180036a41206a2d00003a0000200241186a41086a200241cc036a290200370300200241186a41106a200241d4036a290200370300200241186a41186a200241dc036a290200370300200241186a41206a200241e4036a280200360200200220024180036a41186a2903003703d001200220022f01a2033b01ce012002200241c4036a29020037031820022f00810320022d0083034110747221132002290284032205422088a72111200241b4036a290200210e200241ac036a290200210b20024194036a280200210620024180036a41106a28020021072002418c036a2802002108200241bc036a290200210f20022d008003211420022d00a103210d20022802a403210920022802a803210a2005a72110410b21040c190b10d401000b20024180036a200141086a10d501200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce01200229038003220f422088a72111200241b0036a290300210e200241a8036a290300210b20024190036a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200fa72110410d21040c0e0b20024180036a200141086a10d601200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce01200229038003220f422088a72111200241b0036a290300210e200241a8036a290300210b20024190036a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200fa72110410e21040c0d0b20024180036a200141086a10d601200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce01200229038003220f422088a72111200241b0036a290300210e200241a8036a290300210b20024190036a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200fa72110410f21040c0c0b20024180036a200141086a10d701200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce01200229038003220f422088a7211120024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200fa721100c0c0b4107211402400240024002400240024002400240024020012d0004417f6a0e0701020304050608000b41e2a0cc00412841a4c3cb001039000b20024180036a41086a200141246a2d00003a000020022001411c6a2900003703800320012f0005200141076a2d0000411074722113200141186a2800002106200141146a2800002107200141106a2800002108200141086a2900002105410121140c050b20024180036a41086a200141246a2d00003a000020022001411c6a2900003703800320012f0005200141076a2d0000411074722113200141186a2800002106200141146a2800002107200141106a2800002108200141086a2900002105410221140c040b20024180036a41086a200141246a2d00003a0000200220012f00263b011820022001411c6a29000037038003200141c0006a350000200141c4006a31000042208684210f20012f0005200141076a2d0000411074722113200141386a290000210e200141306a290000210b2001412c6a280000210a200141286a2800002109200141186a2800002106200141146a2800002107200141106a2800002108200141086a290000210520012d0025210d410321140c040b20024180036a200141086a10c80120022802880321082002290380032105410421140c030b20024180036a41086a200141246a2d00003a000020022001411c6a2900003703800320012f0005200141076a2d0000411074722113200141186a2800002106200141146a2800002107200141106a2800002108200141086a2900002105410521140c010b20024180036a41086a200141246a2d00003a000020022001411c6a2900003703800320012f0005200141076a2d0000411074722113200141186a2800002106200141146a2800002107200141106a2800002108200141086a2900002105410621140b0b200241d0016a41086a20024180036a41086a2d00003a000020022002290380033703d001200220022f01183b01ce012005422088a721112005a72110411121040c130b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a290300210e200141306a290300210b4101211041012113024002400240024002402001410c6a2d00000e050104020300010b4104211320024180036a41046a200141206a2d00003a000020022001411c6a2802003602800320012f000d2001410f6a2d0000411074722104200141186a2802002106200141146a2802002107200141106a28020021080c030b20024188036a200141246a2d00003a0000200220012f01263b01e00120022001411c6a2902003703800320012f000d2001410f6a2d00004110747221042001412c6a2d00002114200141286a2802002109200141186a2802002106200141146a2802002107200141106a280200210820012d0025210d410021130c020b200141186a2802002207417f4c0d15200141106a28020021010240024020070d00410121080c010b2007102c2208450d150b20082001200710e9081a41022113200721060c010b20024188036a200141246a2d00003a0000200220012f01263b01e00120022001411c6a2902003703800320012f000d2001410f6a2d00004110747221042001412c6a2d00002114200141286a2802002109200141186a2802002106200141146a2802002107200141106a280200210820012d0025210d410321130b200241186a41086a20024180036a41086a2d00003a00002002200229038003370318200220022f01e0013b01f002201441ff0171210a0c030b2001410c6a28020022134108762104410221100c010b2001410c6a28020022134108762104410321100b0b200241d0016a41086a200241186a41086a2d00003a0000200220022903183703d001200220022f01f0023b01ce012004410874201341ff0171722111411221040c090b20024180036a200141086a10d801200241d0016a41086a2002419c036a2d00003a0000200241186a41086a200241c8036a290300370300200241186a41106a200241d0036a290300370300200241306a200241d8036a290300370300200241186a41206a200241e0036a290300370300200241186a41286a200241e8036a290300370300200220024194036a2902003703d00120022002419e036a2f01003b01ce012002200241c0036a2903003703182002290380032205422088a72111200241b0036a290300210e20024180036a41286a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d20024180036a41206a2802002109200241a4036a280200210a200241b8036a290300210f2005a72110411321040c070b20024180036a200141086a10d901200241d0016a41086a2002419c036a2d00003a0000200241186a41086a200241c8036a290300370300200241186a41106a200241d0036a290300370300200241306a200241d8036a290300370300200241186a41206a200241e0036a290300370300200241186a41286a200241e8036a290300370300200241186a41306a200241f0036a290300370300200220024194036a2902003703d001200220022f019e033b01ce012002200241c0036a2903003703182002290380032205422088a7211120024180036a41306a290300210e20024180036a41286a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a280200210820024180036a41206a2802002109200241a4036a280200210a200241b8036a290300210f20022d009d03210d2005a72110411421040c100b02400240024020012f0104417f6a0e03010200010b20024180036a200141086a10c901410321140c0f0b20024180036a200141086a10c901410121140c0e0b20012f0106211341b002102c2210450d0b20024180036a200141086a28020010da01201020024180036a41b00210e9081a200220133b011a41022114200241023b01180c0e0b20024180036a200141086a10db01200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce01200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d20024180036a41206a2802002109200241a4036a280200210a200241b8036a290300210f2002290380032105200241186a200241c0036a41b00110e9081a200241e0016a41086a20024188056a290300370300200241e0016a41106a20024190056a290300370300200241f8016a20024198056a290300370300200241e0016a41206a200241a0056a290300370300200220024180056a2903003703e0012005422088a72111200241fc046a2802002112200241f8046a2802002101200241f4046a2802002115200241f0046a280200210c2005a72110411621040c050b20024180036a200141046a10dc01200241d8016a200241a0036a2d00003a0000200220024198036a2903003703d0012002200241a2036a2f01003b01ce01200241b4036a290200210e200241ac036a290200210b20024194036a280200210620024180036a41106a28020021072002418c036a2802002108200241a1036a2d0000210d200241a4036a2802002109200241a8036a280200210a200241bc036a290200210f20022d0080032114200229028403210520022f008103210120022d00830321132002200241c4036a280200360218200120134110747221132005422088a721112005a72110411721040c0d0b20024180036a200141086a10dd01200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce012002200241c0036a2903003703182002290380032205422088a72111200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f2005a72110411821040c020b20024180036a200141086a10de01200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d001200220022f019e033b01ce012002290380032205422088a72111200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a2802002108200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f20022d009d03210d2005a72110411921040c010b20024180036a200141086a10df01200241d0016a41086a2002419c036a2d00003a0000200220024194036a2902003703d00120022002419e036a2f01003b01ce012002290380032205422088a72111200241b0036a290300210e200241a8036a290300210b20024180036a41106a28020021062002418c036a280200210720024180036a41086a28020021082002419d036a2d0000210d200241a0036a2802002109200241a4036a280200210a200241b8036a290300210f2005a72110411a21040b0b0b0c070b200141026a2f0100211320024180036a200141046a10c801200141246a2802002203417f4c0d032001411c6a2802002104200141186a2802002114200141146a2802002111200141106a28020021070240024020030d00410121080c010b2003102c2208450d030b20082004200310e9082104200041026a20133b0100200041246a2003360200200041206a20033602002000411c6a2004360200200041186a2014360200200041146a2011360200200041106a2007360200200041023a0000200041046a2002290380033702002000410c6a20024188036a280200360200200041286a2001290328370300200020012d00014100473a00010c070b200141226a2f0100210320024180036a200141246a10c801200041226a20033b0100200041246a2002290380033702002000412c6a20024188036a280200360200200041386a200141386a280200360200200041306a200141306a29020037030020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200141c0006a290300210f200041033a0000200041c0006a200f3703000c060b200141226a2f0100210320024180036a200141246a10c801200041226a20033b0100200041043a0000200041246a2002290380033702002000412c6a20024188036a280200360200200041306a200141306a29020037030020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c050b1036000b1038000b200220143b01182002280288032108200228028403211120022802800321100b20022f001920022d001b411074722113411521040b200320133b0005200320143a000420032004360200200341076a20134110763a000020032011ad4220862010ad843703082003200b3703302003200636021820032007360214200320083602102003200d3a00252003200f3703402003200a36022c20032009360228200320022f01ce013b0126200341386a200e370300200320022903d00137021c200341246a200241d0016a41086a2d00003a0000200341c8006a200241186a41b00110e9081a20032012360284022003200136028002200320153602fc012003200c3602f801200320022903e0013703880220034190026a200241e0016a41086a29030037030020034198026a200241e0016a41106a290300370300200341a0026a200241f8016a290300370300200341a8026a20024180026a2903003703002000410c6a200241086a41086a280200360200200041046a2002290308370200200041106a2003360200200041013a00000b200241b0056a24000b850d03027f027e057f230041206b2202240002400240024002400240024002400240024002400240024002402001280200417f6a0e09010203040506070809000b41e2a0cc00412841e0ecc0001039000b2001410c6a2802002203417f4c0d09200141186a2903002104200141106a2903002105200128020421064101210102402003450d002003102c2201450d0b0b20012006200310e9082101200041186a2004370300200041106a20053703002000410c6a2003360200200041086a200336020020002001360204200041013602000c080b20004102360200200020012802043602040c070b200128020421074101210802400240024002400240200141086a22092d00000e050104020300010b2002411e6a200941036a2d00003a000041042108200241086a41046a2001411c6a2d00003a0000200220092f00013b011c2002200141186a280000360208200141146a280200210a200141106a28020021032001410c6a28020021060c030b2002411e6a200941036a2d00003a0000200241086a41086a200141206a290000370300200241086a41106a200141286a2d00003a0000200220092f00013b011c2002200141186a290000370308200141146a280200210a200141106a28020021032001410c6a2802002106410021080c020b200141146a2802002203417f4c0d092001410c6a28020021080240024020030d00410121060c010b2003102c2206450d0b0b20062008200310e9081a410221082003210a0c010b410321082002411e6a200941036a2d00003a0000200241086a41086a200141206a290000370300200241086a41106a200141286a2d00003a0000200220092f00013b011c2002200141186a290000370308200141146a280200210a200141106a28020021032001410c6a28020021060b20002007360204200020022f011c3b0009200020022f00053b0029200041086a20083a0000200041146a200a360000200041106a20033600002000410c6a2006360000200041186a20022903083700002000410b6a2002411c6a41026a2d00003a0000200041206a200241086a41086a290300370000200041286a200241086a41106a2d00003a00002000412b6a200241056a41026a2d00003a000020012903302104200041386a200141386a290300370300200041306a2004370300200041033602000c060b20004104360200200020012802043602040c050b20004105360200200020012802043602040c040b200128020421074101210802400240024002400240200141086a22092d00000e050104020300010b2002411e6a200941036a2d00003a000041042108200241086a41046a2001411c6a2d00003a0000200220092f00013b011c2002200141186a280000360208200141146a280200210a200141106a28020021032001410c6a28020021060c030b2002411e6a200941036a2d00003a0000200241086a41086a200141206a290000370300200241086a41106a200141286a2d00003a0000200220092f00013b011c2002200141186a290000370308200141146a280200210a200141106a28020021032001410c6a2802002106410021080c020b200141146a2802002203417f4c0d062001410c6a28020021010240024020030d00410121060c010b2003102c2206450d080b20062001200310e9081a410221082003210a0c010b410321082002411e6a200941036a2d00003a0000200241086a41086a200141206a290000370300200241086a41106a200141286a2d00003a0000200220092f00013b011c2002200141186a290000370308200141146a280200210a200141106a28020021032001410c6a28020021060b20002007360204200020022f011c3b0009200020022f00053b0029200041086a20083a0000200041146a200a360000200041106a20033600002000410c6a2006360000200041186a20022903083700002000410b6a2002411c6a41026a2d00003a0000200041206a200241086a41086a290300370000200041286a200241086a41106a2d00003a00002000412b6a200241056a41026a2d00003a0000200041063602000c030b20004107360200200020012802043602040c020b20004108360200200020012802043602040c010b200141106a2802002203417f4c0d01200141086a2802002106200128020421010240024020030d00410121080c010b2003102c2208450d030b20082006200310e9082106200041106a20033602002000410c6a2003360200200041086a200636020020002001360204200041093602000b200241206a24000f0b1038000b1036000bc00501037f02400240024002400240024002400240024020012d0000417f6a0e06010203040506000b41e2a0cc00412841d4cec8001039000b2001412c6a2802002202417f4c0d05200141246a28020021034101210402402002450d002002102c2204450d070b20042003200210e90821042000412c6a2002360200200041286a2002360200200041246a2004360200200041013a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041023a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b2001412c6a2802002202417f4c0d03200141246a28020021040240024020020d00410121030c010b2002102c2203450d050b20032004200210e90821042000412c6a2002360200200041286a2002360200200041246a2004360200200041033a0000200041386a200141386a290300370300200041306a200129033037030020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041043a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b200041053a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b1038000b1036000bff0104017f017e037f037e0240024020012802082202ad42287e2203422088a70d002003a72204417f4c0d00200128020021050240024020040d00410821010c010b2004102c2201450d020b2000410036020820002001360200200041046a200441286e2206360200024020044128490d0003402004450d01200541086a2903002103200541106a29030021072005290320210820052903002109200141186a200541186a290300370300200141106a2007370300200141086a200337030020012009370300200141206a2008370300200141286a2101200441586a2104200541286a21052006417f6a22060d000b0b200020023602080f0b1038000b1036000ba80101017f024020002802082201450d0020002802002100200141246c210103400240024002400240024020002d00000e050400010204030b2000410c6a280200450d03200041086a280200102e0c030b2000410c6a280200450d02200041086a280200102e0c020b2000410c6a280200450d01200041086a280200102e0c010b200041086a280200450d00200041046a280200102e0b200041246a21002001415c6a22010d000b0b0bcd0101017f0240024002400240024020002802000e0404000102030b0240200041086a2802004125490d00200041106a280200102e0b200041386a280200450d03200041346a280200102e0f0b200041086a2802004125490d02200041106a280200102e0f0b2000280204102e200041086a2802002201450d012000410c6a280200450d012001102e0c010b0240200041086a2802004125490d00200041106a280200102e0b200041346a280200102e200041386a2802002201450d002000413c6a280200450d002001102e0f0b0bff0403037f017e077f230041306b22022400200241086a200110ab01024002402002280208450d00200041003602000c010b024002400240024002400240200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102c2206450d040b2004410c6e2107024020030d00410021030c060b41002108410021094100210a03402002200110ab0120022802000d032001280204220b20022802042204490d032004417f4c0d010240024020040d004101210c0c010b20041032220c450d052001280204210b0b200b2004490d02200c2001280200200410e908210b2001280204220c2004490d052001200c20046b3602042001200128020020046a36020002400240200a2007470d002008200a41016a220c2008200c4b1b220c4104200c41044b1bad420c7e2205422088a745410274210c2005a7210702400240200a0d00200241003602200c010b2002410436022820022009360224200220063602200b200241106a2007200c200241206a107d2002280218210c20022802104101460d0120022802142106200c410c6e21070b200620096a220c200b360200200c41046a2004ad2205422086200584370200200841026a21082009410c6a21092003200a41016a220a460d070c010b0b200c0d030b1038000b200c102e0b200041003602000240200a450d002006210403400240200441046a280200450d002004280200102e0b2004410c6a2104200941746a22090d000b0b2007450d032007410c6c450d032006102e0c030b1036000b2004200c41b8b2c0001056000b2000200736020420002006360200200041086a20033602000b200241306a24000bd206030a7f017e017f230041f0016b220224002002200110ad01024002402002280200450d00200041003602000c010b024002400240024002402002280204220320012802002802044105762204200420034b1b22054105742204417f4c0d004101210602402005450d002004102c2206450d020b2001200128020441016a220436020402400240200420012802084b0d0020030d01410021030c060b200041003602000c030b410021070340200241003a00a8012007220841016a21074100210902400240024002400240034020012802002204280204220a450d0120024188016a20096a2004280200220b2d00003a00002004200a417f6a3602042004200b41016a3602002002200941016a22043a00a8012004210920044120470d000b200241e8006a41186a20024188016a41186a290300220c370300200241c8006a41086a220420024188016a41086a290300370300200241c8006a41106a220920024188016a41106a290300370300200241c8006a41186a220a200c3703002002200229038801370348200241286a41186a220b200a290300370300200241286a41106a220a2009290300370300200241286a41086a2209200429030037030020022002290348370328200241086a41186a220d200b290300370300200241086a41106a220b200a290300370300200241086a41086a220a20092903003703002002200229032837030820082005470d0320084101742204200841016a2209200420094b1b22044104200441044b1b220441ffffff3f7120044621092004410574210420080d0120024100360288010c020b0240200941ff0171450d00200241003a00a8010b200041003602000c070b200241013602900120022006360288012002200841057436028c010b200241e8006a2004200920024188016a107d2002280270210420022802684101460d01200228026c2106200441057621050b200620084105746a22042002290308370000200441186a200d290300370000200441106a200b290300370000200441086a200a29030037000020072003460d050c010b0b20040d010b1038000b1036000b200541ffffff3f71450d022006102e0c020b200128020421040b2000200536020420002006360200200041086a200336020020012004417f6a3602040b200241f0016a24000bfc0503037f017e0b7f23004190016b220224002002200110ab01024002402002280200450d00200041003602000c010b024002400240024020022802042203200128020441246e2204200420034b1bad42247e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102c2206450d030b200441246e2107024020030d00410021030c040b200241d8006a4101722108410021094100210a4100210b0340200241d8006a200110e601200241306a41086a2204200841086a290000370300200241306a41106a220c200841106a290000370300200241306a41186a220d200841186a290000370300200241306a411f6a220e2008411f6a2800003600002002200829000037033020022d0058220f4105460d02200241086a411f6a2210200e280000360000200241086a41186a220e200d290300370300200241086a41106a220d200c290300370300200241086a41086a220c20042903003703002002200229033037030802400240200b2007470d002009200b41016a2204200920044b1b22044104200441044b1bad42247e2205422088a74541027421042005a7210702400240200b0d00200241003602580c010b200241043602602002200a36025c200220063602580b20024180016a20072004200241d8006a107d20022802880121042002280280014101460d012002280284012106200441246e21070b2006200a6a2204200f3a0000200441016a2002290308370000200441096a200c290300370000200441116a200d290300370000200441196a200e290300370000200441206a2010280000360000200941026a2109200a41246a210a2003200b41016a220b460d050c010b0b20040d020b1038000b200041003602000240200b450d00200621040340024020042d00004102470d00200441086a280200450d00200441046a280200102e0b200441246a2104200a415c6a220a0d000b0b2007450d02200741246c450d022006102e0c020b1036000b2000200736020420002006360200200041086a20033602000b20024190016a24000b801103057f047e017f230041f0016b22022400024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e050102030405060b200041053a00000c0e0b200241d8006a2001109301024020022d00584101460d0020024198016a200241d8006a41196a290000220737030020024190016a200241d8006a41116a290000220837030020024188016a200241d8006a41096a290000220937030020022002290059220a37038001200041003a00002000200a370001200041096a2009370000200041116a2008370000200041196a2007370000200041216a20022f00383b0000200041236a2002413a6a2d00003a00000c0e0b200041053a00000c0d0b200041013a00000c0c0b200241086a200110ab01024020022802080d0020012802042203200228020c2205490d002005417f4c0d050240024020050d004101210b0c010b20051032220b450d07200128020421030b024020032005490d00200b2001280200200510e90821032001280204220b2005490d082001200b20056b3602042001200128020020056a3602002003450d01200041023a0000200020022f0080013b0001200041086a2005ad2207422086200784370000200041046a2003360000200041106a2002290258370200200041036a20024180016a41026a2d00003a0000200041186a200241d8006a41086a290200370200200041206a200241d8006a41106a2802003602000c0d0b200b102e0b200041053a00000c0b0b41002105200241003a00782003417e6a21030240034020062005460d01200241d8006a20056a200420056a220b41016a2d00003a0000200120033602042001200b41026a3602002002200541016a220b3a00782003417f6a2103200b2105200b4120460d0a0c000b0b200541ff0171450d09200241003a00780c090b200241003a006c2006450d0620042d0001210520012003417e6a220b3602042001200441026a360200200241013a006c200220053a0058200b0d010c050b200041053a00000c080b20042d0002210520012003417d6a220b3602042001200441036a360200200241023a006c200220053a0059200b450d0320042d0003210520012003417c6a220b3602042001200441046a360200200241033a006c200220053a005a200b450d0320042d0004210520012003417b6a220b3602042001200441056a360200200241043a006c200220053a005b200b450d0320042d0005210520012003417a6a220b3602042001200441066a360200200241053a006c200220053a005c200b450d0320042d000621052001200341796a220b3602042001200441076a360200200241063a006c200220053a005d200b450d0320042d000721052001200341786a220b3602042001200441086a360200200241073a006c200220053a005e200b450d0320042d000821052001200341776a220b3602042001200441096a360200200241083a006c200220053a005f200b450d0320042d000921052001200341766a220b36020420012004410a6a360200200241093a006c200220053a0060200b450d0320042d000a21052001200341756a220b36020420012004410b6a3602002002410a3a006c200220053a0061200b450d0320042d000b21052001200341746a220b36020420012004410c6a3602002002410b3a006c200220053a0062200b450d0320042d000c21052001200341736a220b36020420012004410d6a3602002002410c3a006c200220053a0063200b450d0320042d000d21052001200341726a220b36020420012004410e6a3602002002410d3a006c200220053a0064200b450d0320042d000e21052001200341716a220b36020420012004410f6a3602002002410e3a006c200220053a0065200b450d0320042d000f21052001200341706a220b3602042001200441106a3602002002410f3a006c200220053a0066200b450d0320042d0010210520012003416f6a220b3602042001200441116a360200200241103a006c200220053a0067200b450d0320042d0011210520012003416e6a220b3602042001200441126a360200200241113a006c200220053a0068200b450d0320042d0012210520012003416d6a220b3602042001200441136a360200200241123a006c200220053a0069200b450d0320042d0013210520012003416c6a220b3602042001200441146a360200200241133a006c200220053a006a200b450d0320042d0014210520012003416b6a3602042001200441156a36020020024180016a41086a2201200241d8006a41086a290300370300200220053a006b20024180016a41106a2205200241d8006a41106a280200360200200241143a006c2002200229035837038001200241386a41106a22032005280200360200200241386a41086a220520012903003703002002200229038001370338200041043a000020002002290338370001200041096a2005290300370000200041116a2003280200360000200041156a20022900183700002000411c6a2002411f6a2900003700000c070b1038000b1036000b2005200b41b8b2c0001056000b200241003a006c0b200041053a00000c020b20024180016a41086a2205200241d8006a41086a29030037030020024180016a41106a2201200241d8006a41106a29030037030020024180016a41186a2203200241d8006a41186a2903003703002002200229035837038001200b41ff0171411f4d0d00200241186a41086a20052903002207370300200241186a41106a20012903002208370300200241186a41186a200329030022093703002002200229038001220a370318200041033a00002000200a370001200041096a2007370000200041116a2008370000200041196a2009370000200041216a20022f00153b0000200041236a200241176a2d00003a00000c010b200041053a00000b200241f0016a24000b8a0201067f230041106b22022400200241086a200110ab01024002400240024002402002280208450d00200041003602000c010b0240200228020c220341ffffffff03712003470d0020034102742204200128020422054b0d002004417f4c0d020240024020040d00410421060c010b200410322206450d04200128020421050b0240200520034102742207490d0020062001280200200710e9082105200128020422062007490d0520002003ad4220862004410276ad84370204200020053602002001200620076b3602042001200128020020076a3602000c020b2004450d002006102e0b200041003602000b200241106a24000f0b1038000b1036000b2007200641b8b2c0001056000bc50503037f017e087f230041306b22022400200241086a200110ad01024002402002280208450d00200041003602000c010b02400240024002400240024002400240200228020c22032001280200280204410c6e2204200420034b1bad420c7e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102c2206450d050b2001200128020441016a22073602042004410c6e210802400240200720012802084b0d0020030d01410021030c090b200041003602000c040b41002109410021074100210a03402002200110ad0120022802000d032001280200220b280204220c20022802042204490d032004417f4c0d010240024020040d004101210d0c010b20041032220d450d062001280200220b280204210c0b200c2004490d02200d200b280200200410e908210c200b280204220d2004490d06200b200d20046b360204200b200b28020020046a36020002400240200a2008470d002009200a41016a220b2009200b4b1b220b4104200b41044b1bad420c7e2205422088a745410274210b2005a7210802400240200a0d00200241003602200c010b2002410436022820022007360224200220063602200b200241106a2008200b200241206a107d2002280218210b20022802104101460d0120022802142106200b410c6e21080b200620076a220b200c360200200b41046a2004ad2205422086200584370200200941026a21092007410c6a21072003200a41016a220a460d080c010b0b200b0d040b1038000b200d102e0b20004100360200200a450d002006210403400240200441046a280200450d002004280200102e0b2004410c6a2104200741746a22070d000b0b2008450d042008410c6c450d042006102e0c040b1036000b2004200d41b8b2c0001056000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b200241306a24000bd60704037f017e0a7f057e23004190026b220224002002200110ab01024002402002280200450d00200041003602000c010b024002400240024020022802042203200128020441306e2204200420034b1bad42307e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102c2206450d020b200441306e2107024020030d00410021030c040b410021080340200241003a00c8012008220941016a21082001280204210a417f210b41002104024002400340200a2004460d01200241a8016a20046a2001280200220c2d00003a00002001200a200b6a3602042001200c41016a3602002002200441016a220c3a00c801200b417f6a210b200c2104200c4120470d000b200241d0016a41086a2204200241a8016a41086a290300370300200241d0016a41106a220b200241a8016a41106a290300370300200241d0016a41186a220d200241a8016a41186a290300370300200220022903a8013703d001200c41ff0171411f4b0d010c050b200441ff0171450d04200241003a00c8010c040b200241e8006a41086a220e2004290300370300200241e8006a41106a220f200b290300370300200241e8006a41186a220b200d290300370300200220022903d001370368200a200c6b220c4110490d032001280200220441086a2900002105200429000021102001200441106a3602002001200c41706a360204200241286a41086a2204200e290300370300200241286a41106a220c200f290300370300200241286a41186a220a200b29030037030020022002290368370328200241086a41186a220b200a290300370300200241086a41106a220a200c290300370300200241086a41086a220c2004290300370300200220022903283703080240024020092007470d0020094101742204200941016a2207200420074b1b22044104200441044b1bad42307e2211422088a74541037421042011a721070240024020090d00200241003602a8010c010b200241083602b001200220063602a8012002200941306c3602ac010b200241d0016a20072004200241a8016a107d20022802d801210420022802d0014101460d0120022802d4012106200441306e21070b200c2903002111200a2903002112200b2903002113200229030821142006200941306c6a2204201037032020042014370300200441286a2005370300200441186a2013370300200441106a2012370300200441086a201137030020082003460d050c010b0b20040d010b1038000b1036000b200041003602002007450d01200741306c450d012006102e0c010b2000200736020420002006360200200041086a20033602000b20024190026a24000bb80603037f017e0b7f23004190016b220224002002200110ad01024002402002280200450d00200041003602000c010b02400240024002400240024020022802042203200128020028020441246e2204200420034b1bad42247e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102c2206450d040b2001200128020441016a2207360204200441246e210802400240200720012802084b0d0020030d01410021030c070b200041003602000c030b200241d8006a4101722107410021094100210a4100210b0340200241d8006a200110eb01200241306a41086a2204200741086a290000370300200241306a41106a220c200741106a290000370300200241306a41186a220d200741186a290000370300200241306a411f6a220e2007411f6a2800003600002002200729000037033020022d0058220f4105460d02200241086a411f6a2210200e280000360000200241086a41186a220e200d290300370300200241086a41106a220d200c290300370300200241086a41086a220c20042903003703002002200229033037030802400240200b2008470d002009200b41016a2204200920044b1b22044104200441044b1bad42247e2205422088a74541027421042005a7210802400240200b0d00200241003602580c010b200241043602602002200a36025c200220063602580b20024180016a20082004200241d8006a107d20022802880121042002280280014101460d012002280284012106200441246e21080b2006200a6a2204200f3a0000200441016a2002290308370000200441096a200c290300370000200441116a200d290300370000200441196a200e290300370000200441206a2010280000360000200941026a2109200a41246a210a2003200b41016a220b460d060c010b0b20040d030b1038000b20004100360200200b450d00200621040340024020042d00004102470d00200441086a280200450d00200441046a280200102e0b200441246a2104200a415c6a220a0d000b0b2008450d03200841246c450d032006102e0c030b1036000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b20024190016a24000baf0a02057f027e230041b0026b2202240002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e050102030405060b200041053a00000c060b41002104200241003a00b80102400340200128020022032802042205450d0120024198016a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b8012003210420034120470d000b200241386a41186a20024198016a41186a2903002207370300200241086a41086a220120024198016a41086a290300370300200241086a41106a220320024198016a41106a290300370300200241086a41186a220420073703002002200229039801370308200041003a000020002002290308370001200041096a2001290300370000200041116a2003290300370000200041196a2004290300370000200041216a20022f00293b0000200041236a2002412b6a2d00003a00000c060b0240200441ff0171450d00200241003a00b8010b200041053a00000c050b200041013a00000c040b2002200110ad01024020022802000d0020012802002204280204220520022802042203490d002003417f4c0d050240024020030d00410121060c010b200310322206450d072001280200220428020421050b024020052003490d0020062004280200200310e9082101200428020422052003490d082004200520036b3602042004200428020020036a3602002001450d01200041023a0000200020022f00383b0001200041086a2003ad2207422086200784370000200041046a2001360000200041106a200229029801370200200041036a200241386a41026a2d00003a0000200041186a20024198016a41086a290200370200200041206a20024198016a41106a2802003602000c050b2006102e0b200041053a00000c030b41002104200241003a00b80102400340200128020022032802042205450d0120024198016a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b8012003210420034120470d000b200241386a41186a20024198016a41186a2903002207370300200241086a41086a220120024198016a41086a290300370300200241086a41106a220320024198016a41106a290300370300200241086a41186a220420073703002002200229039801370308200041033a000020002002290308370001200041096a2001290300370000200041116a2003290300370000200041196a2004290300370000200041216a20022f00293b0000200041236a2002412b6a2d00003a00000c030b0240200441ff0171450d00200241003a00b8010b200041053a00000c020b41002104200241003a00ac0102400340200128020022032802042205450d0120024198016a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00ac012003210420034114470d000b200241086a41086a20024198016a41086a2903002207370300200241086a41106a20024198016a41106a280200220136020020022002290398012208370308200041043a000020002008370001200041096a2007370000200041116a2001360000200041156a20022900293700002000411c6a200241306a2900003700000c020b0240200441ff0171450d00200241003a00ac010b200041053a00000c010b200041053a00000b200241b0026a24000f0b1038000b1036000b2003200541b8b2c0001056000bde0505037f017e057f017e017f230041e00a6b220224002002200110ad01024002402002280200450d00200041003602000c010b02400240024002400240024020022802042203200128020028020441c8036e2204200420034b1bad42c8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102c2206450d040b2001200128020441016a2207360204200441c8036e210802400240200720012802084b0d0020030d01410021030c070b200041003602000c030b20024188076a41f0006a21094100210a4100210441002107034020024188076a200110ed01200241a0066a20024188076a41e80010e9081a20022903f0072105200241c8036a200941d80210e9081a20054203510d02200241e0026a200241a0066a41e80010e9081a200241086a200241c8036a41d80210e9081a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42c8037e220b422088a7454103742108200ba7210c0240024020070d0020024100360288070c010b20024108360290072002200436028c0720022006360288070b200241d00a6a200c200820024188076a107d20022802d80a210820022802d00a4101460d0120022802d40a2106200841c8036e21080b200620046a200241e0026a41e80010e908220c41e8006a2005370300200c41f0006a200241086a41d80210e9081a200a41026a210a200441c8036a21042003200741016a2207460d060c010b0b20080d030b1038000b200041003602002007450d002006210a03400240200a220741e8006a2903004202510d0020072d00004102470d00200741086a280200450d00200741046a280200102e0b200741c8036a210a20074198016a109601200441b87c6a22040d000b0b2008450d03200841c8036c450d032006102e0c030b1036000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b200241e00a6a24000bdf1504057f017e077f067e230041c00a6b22022400200241286a200110ad0102400240024002400240024002400240024020022802280d00200228022c210320012001280204220441016a2205360204200520012802084b0d0002402003450d0041002105410020036b2103034020054101460d0520032005417f6a2205470d000b0b20012004360204200128020022052802042203450d01200528020022062d0000210420052003417f6a3602042005200641016a360200200441ff00714104460d02200042033703680c080b200042033703680c070b200042033703680c060b02402004411874411875417f4c0d00420221070c040b20024180076a200110eb01024020022d00800722044105460d00200241fc066a41026a20022d0083073a0000200241e0066a41086a20024194076a290200370300200241f0066a2002419c076a290200370300200220022f0081073b01fc0620022002418c076a2902003703e00620024180076a41086a2802002105200228028407210602400240024002400240200128020022032802042208450d00200328020022092d0000210a20032008417f6a3602042003200941016a36020002400240024002400240200a0e03000102050b41002108200241003a00e80402400340200128020022032802042209450d01200241a8046a20086a2003280200220a2d00003a000020032009417f6a3602042003200a41016a3602002002200841016a22033a00e80420032108200341c000470d000b200241f8016a41086a2203200241a8046a41086a290300370300200241f8016a41106a2208200241a8046a41106a290300370300200241f8016a41186a2209200241a8046a41186a290300370300200241f8016a41206a220a200241a8046a41206a290300370300200241f8016a41286a220b200241a8046a41286a290300370300200241f8016a41306a220c200241a8046a41306a290300370300200241f8016a41386a220d200241a8046a41386a290300370300200220022903a8043703f801200241f8096a41386a220e200d290300370300200241f8096a41306a200c2903002207370300200241f8096a41286a200b290300220f370300200241f8096a41206a200a2903002210370300200241f8096a41186a20092903002211370300200241f8096a41106a20082903002212370300200241f8096a41086a20032903002213370300200220022903f80122143703f809200241e8076a41306a2007370300200241e8076a41286a200f370300200241e8076a41206a2010370300200241e8076a41186a2011370300200241e8076a41106a2012370300200241e8076a41086a2013370300200241e8076a41386a200e290300370300200220143703e807410021080c030b200841ff0171450d04200241003a00e8040c040b41002108200241003a00e80402400340200128020022032802042209450d01200241a8046a20086a2003280200220a2d00003a000020032009417f6a3602042003200a41016a3602002002200841016a22033a00e80420032108200341c000470d000b200241f8016a41086a2203200241a8046a41086a290300370300200241f8016a41106a2208200241a8046a41106a290300370300200241f8016a41186a2209200241a8046a41186a290300370300200241f8016a41206a220a200241a8046a41206a290300370300200241f8016a41286a220b200241a8046a41286a290300370300200241f8016a41306a220c200241a8046a41306a290300370300200241f8016a41386a220d200241a8046a41386a290300370300200220022903a8043703f801200241f8096a41386a220e200d290300370300200241f8096a41306a200c2903002207370300200241f8096a41286a200b290300220f370300200241f8096a41206a200a2903002210370300200241f8096a41186a20092903002211370300200241f8096a41106a20082903002212370300200241f8096a41086a20032903002213370300200220022903f80122143703f809200241e8076a41306a2007370300200241e8076a41286a200f370300200241e8076a41206a2010370300200241e8076a41186a2011370300200241e8076a41106a2012370300200241e8076a41086a2013370300200241e8076a41386a200e290300370300200220143703e807410121080c020b200841ff0171450d03200241003a00e8040c030b41002108200241003a00e9040340200128020022032802042209450d02200241a8046a20086a2003280200220a2d00003a000020032009417f6a3602042003200a41016a3602002002200841016a22033a00e90420032108200341c100470d000b200241f8016a200241a8046a41c10010e9081a200241f8096a200241f8016a41c10010e9081a200241b6096a200241f8096a41c10010e9081a200241e8076a200241b6096a41c10010e9081a410221080b200241a7076a200241e8076a41c10010e9081a200128020022032802042209450d042003280200220a310000211020032009417f6a3602042003200a41016a360200201050450d02420021070c030b200841ff0171450d00200241003a00e9040b20044102470d0420050d030c040b200128020022032802042209450d012003280200220a310000211120032009417f6a3602042003200a41016a36020042022010420f8386220f4204540d01420121072011420886201084420488200f420c882210420120104201561b7e2210200f5a0d010b200241206a200110ad0120022802200d0020022802242109200241086a20011082022002290308a7450d040b20044102470d012005450d010b2006102e0b420221070c020b1038000b200241086a41106a290300211220022903102111200241f8096a41026a200241fc066a41026a2d00003a0000200241f8016a41086a200241e0066a41086a290300370300200241f8016a41106a200241e0066a41106a290300370300200220022f01fc063b01f809200220022903e0063703f801200241a8046a200241a7076a41c10010e9081a200220022f01de063b01b6090b200241f4016a41026a2203200241f8096a41026a2d00003a0000200241d8016a41086a220a200241f8016a41086a290300370300200241d8016a41106a220b200241f8016a41106a290300370300200220022f01f8093b01f401200220022903f8013703d80120024197016a200241a8046a41c10010e9081a200220022f01b6093b01940120074202510d0120024190016a41026a20032d00003a0000200241f8006a41086a200a290300370300200241f8006a41106a200b290300370300200220022f01f4013b019001200220022903d801370378200241376a20024197016a41c10010e9081a200220022f0194013b01340b200241a8046a200110950120022802a8042103200241f8016a200241a8046a41047241ac0210e9081a02402003411c460d00200020043a0000200020022f0190013b000120002005360208200020063602042000200229037837020c200020083a0024200041036a20024192016a2d00003a0000200041146a20024180016a2903003702002000411c6a20024188016a290300370200200041256a200241376a41c10010e9081a20004188016a201237030020004180016a201137030020004190016a2009360200200041f8006a20103703002000200f37037020002007370368200020022f01343b016620004198016a20033602002000419c016a200241f8016a41ac0210e9081a0c020b2000420337036820074202510d01200441ff01714102470d012005450d012006102e0c010b200042033703680b200241c00a6a24000beb0201067f230041206b2202240002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b2207490d00200028020021030c010b0240200420076a22062004490d00200341017422042006200420064b1b22044108200441084b1b21040240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220044101200241106a107d200241086a2802002104024020022802004101460d00200020022802042203360200200041046a2004360200200041086a280200210420012802002106200128020421050c020b2004450d001036000b1038000b024020062005460d002001200641016a36020020062d0000210602400340200320046a20063a0000200128020022062001280204460d01200441016a21042001200641016a36020020062d000021060c000b0b200441016a21040b200041086a2004360200200241206a24000bde0a04077f017e037f017e230041d0006b22022400200241086a200110ad01024002402002280208450d00200041013602000c010b200228020c21032001200128020441016a2204360204024002400240024002400240200420012802084b0d00200241003a00172002420037021c024020030d00200241286a41086a200241186a41086a28020036020020022002290318370328200241286a21040c050b4100210502400240024002400340200241003a0030200128020022042802042206450d07200428020022072d0000210820042006417f6a3602042004200741016a360200200241013a0030200220083a0028200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241023a0030200220083a0029200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241033a0030200220083a002a200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241043a0030200220083a002b200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241053a0030200220083a002c200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241063a0030200220083a002d200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200241073a0030200220083a002e200128020022042802042206450d06200428020022072d0000210820042006417f6a3602042004200741016a360200200220083a002f200229032821092002200110ad0120022802000d0720012802002206280204220720022802042204490d072004417f4c0d020240024020040d00410121080c010b200410322208450d042001280200220628020421070b20072004490d0120082006280200200410e908210a200628020422072004490d042006200720046b3602042006200628020020046a360200200a450d072002200937032802400240200228021c220b450d002002280218210c0c010b41e401102c220b450d044100210c200b4100360200200b41003b018a012002200b36021c200241003602180b200541016a21052004ad220d422086200d84210d024002400340200b418c016a2106200b2f018a012108410021040240034020082004460d01200241286a2006410810ec082207450d03200441016a2104200641086a21062007417f4a0d000b2004417f6a21080b0240200c450d00200c417f6a210c200b20084102746a41e4016a280200210b0c010b0b20022009370338200220083602302002200b36022c200241003602282002200241186a3602342002200d3702442002200a360240200241286a200241c0006a10f0010c010b200b2004410c6c6a220441086a220628020021072006200d370200200441046a220628020021042006200a3602002004450d002007450d002004102e0b20052003470d000b20022d00172104200241286a41086a200241186a41086a2802003602002002200229031837032820040d07200241286a21040c080b2008102e0c050b1038000b1036000b2004200741b8b2c0001056000b200041013602000c050b200241003a00300b200241013a0017200241286a41086a200241186a41086a280200360200200220022903183703280b200241286a10f101410121040c010b200020042902003702042000410c6a200441086a280200360200410021040b2000200436020020012001280204417f6a3602040b200241d0006a24000b931505017f017e097f017e067f230041e0006b2202240020002902102103200028020821042000280200210520002802042106200241206a41086a2207200141086a2802003602002002200129020037032002400240024020062f018a012201410a4b0d00200241c0006a41086a2007280200360200200220022903203703402006418c016a2107200141016a21080240200441016a220920014b220a0d00200720094103746a200720044103746a20082004417f736a41037410ea081a0b200720044103746a2003370000200241d0006a41086a2205200241c0006a41086a28020036020020022002290340370350200641046a21070240200a0d0020072009410c6c6a20072004410c6c6a200120046b410c6c10ea081a0b20072004410c6c6a22042002290350370200200441086a2005280200360200200620083b018a010c010b410521014100210a02400240200441054f0d0041042101200421070c010b41052107024002402004417b6a0e020201000b200441796a21074101210a410621010c010b410021074101210a0b0240024002400240024002400240024002400240024041e401102c2204450d00200441003b018a0120044100360200200420062f018a01220b2001417f736a22083b018a012006418c016a220c20014103746a290000210d200241d0006a41086a200641046a220e2001410c6c6a220941086a280200360200200220092902003703502008410c4f0d01200b200141016a22096b2008470d022004418c016a200c20094103746a200841037410e9081a200441046a200e2009410c6c6a2008410c6c10e9081a200620013b018a01200241306a41086a200241d0006a41086a220b28020036020020022002290350370330200241c0006a41086a220c200241206a41086a2802003602002002200229032037034020042006200a1b2201418c016a210820012f018a01220941016a210a0240200741016a220e20094b220f0d002008200e4103746a200820074103746a200a2007417f736a41037410ea081a0b200820074103746a2003370000200b200c28020036020020022002290340370350200141046a21080240200f0d002008200e410c6c6a20082007410c6c6a200920076b410c6c10ea081a0b20082007410c6c6a22072002290350370200200741086a200241d0006a41086a220b2802003602002001200a3b018a01200241106a41086a200241306a41086a220f2802002201360200200220022903302203370310200241086a22102001360200200220033703000240024002402006280200220a0d00410021050c010b200d21032004211141002101034020062f0188012108200f20102802003602002002200229030037033020052001470d06200a2f018a01220e410b490d024100210941042106024020084105490d0020082106024002402008417b6a0e020201000b200841796a210841012109410621060c010b4100210841012109410521060b419402102c2204450d03200441003b018a01200441003602002004200a2f018a01220c2006417f736a22013b018a01200a418c016a221220064103746a290000210d200b200a41046a22132006410c6c6a220741086a280200360200200220072902003703502001410c4f0d07200c200641016a22076b2001470d082004418c016a201220074103746a200141037410e9081a200441046a20132007410c6c6a2001410c6c10e9081a200a20063b018a01200241c0006a41086a220c200b2802003602002002200229035037034020042f018a01220141016a21122001410c4f0d09200e20066b22062012470d0a200541016a2105200441e4016a200a20074102746a41e4016a200641027410e9081a4100210602400340200420064102746a41e4016a280200220720063b018801200720043602002006200620014922076a220620014b0d0120070d000b0b200241206a41086a2212200c28020036020020022002290340370320200c200f280200360200200220022903303703402004200a20091b2207418c016a210e20072f018a01220141016a21090240200841016a220620014b22130d00200e20064103746a200e20084103746a2008417f7320096a41037410ea081a0b200e20084103746a2003370000200b200c28020036020020022002290340370350200741046a210c024020130d00200c2006410c6c6a200c2008410c6c6a200120086b410c6c10ea081a0b200c2008410c6c6a220c2002290350370200200c41086a200b280200360200200741e4016a210c0240200841026a220e200141026a22014f0d00200c200e4102746a200c20064102746a2006417f7320016a41027410ea081a0b200c20064102746a2011360200200720093b018a010240200620014f0d00200720084102746a41e8016a2106034020062802002201200841016a22083b01880120012007360200200641046a210620092008470d000b0b2010201228020036020020022002290320370300200a2106200a2802002207210a200d2103200421112005210120070d000b0b200f20102802002206360200200220022903002203370330200241c0006a41086a200636020020022003370340200028020c22012802042207450d0920012802002108419402102c2206450d01200620073602e401200641003b018a0120064100360200200741003b01880120072006360200200120063602042001200841016a360200200241d0006a41086a200241c0006a41086a2802003602002002200229034037035020082005470d0a20062f018a012207410b4f0d0b2006200741016a22083b018a01200620074103746a418c016a200d37000020062007410c6c6a2207410c6a200241d8006a280200360200200741046a2002290350370200200620084102746a41e4016a2004360200200420083b018801200420063602002001200128020841016a3602080c0d0b200241c0006a41086a2205200241306a41086a28020036020020022002290330370340200841016a2106200a418c016a2107200a2f018a01220441016a21090240200420084d22010d00200720064103746a200720084103746a2008417f7320096a41037410ea081a0b200720084103746a2003370000200241d0006a41086a200528020036020020022002290340370350200a41046a2107024020010d0020072006410c6c6a20072008410c6c6a200420086b410c6c10ea081a0b20072008410c6c6a22072002290350370200200741086a200241d0006a41086a280200360200200a41e4016a2107200441026a2105024020010d00200841027420076a41086a200720064102746a2006417f7320056a41027410ea081a0b200720064102746a2011360200200a20093b018a01200620054f0d0b200441016a2107200a2006417f6a22064102746a41e8016a2104034020042802002201200641016a22063b0188012001200a360200200441046a210420072006470d000c0c0b0b1036000b2008410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b2001410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2012410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b200028020c2206200628020841016a3602080b200241e0006a24000bc80203047f017e017f200028020421012000410036020402402001450d00024020002802002202450d002002417f6a2102034020012802e40121012002450d012002417f6a21020c000b0b024020002802082203450d004100210003402003417f6a210341012102024002400340200020012f018a01490d010240200128020022040d002001102e410021010c030b20012f01880121002001102e2002417f6a2102200421010c000b0b200041016a210420012000410c6c6a220041086a2902002105200041046a2802002106024020024101470d00200421000c010b200120044102746a41e4016a280200210102402002450d000340200241016a220020024f210420012802e40121012000210220040d000b0b410021000b2006450d0202402005a7450d002006102e0b20030d000b0b0340200128020021022001102e2002210120020d000b0b0bc30301067f230041206b22022400200041086a28020022032001107602400240200028020422040d004100210441002100410021030c010b2000280200210520042100034020042f013221062005450d012005417f6a2105200420064102746a4194036a280200210420002802940321000c000b0b200241146a2006360200200241106a20043602002002200336021820024200370308200220003602042002200536020002402003450d00034020022003417f6a3602182002410020001b220628020021050240024020062802082203200628020422042f01324f0d00200421000c010b03400240200428020022000d00410021000c020b200541016a210520042f0130210320002104200320002f01324f0d000b0b200341016a21070240024020050d00200021040c010b200020074102746a4194036a280200210402402005417f6a2205450d00034020042802940321042005417f6a22050d000b0b410021070b2006200436020420064100360200200620073602082001200020034105746a41346a412010742002200020034102746a41046a28020036021c20012002411c6a4104107420022802182203450d01200228020421000c000b0b200241206a24000ba3990204067f1a7e157f407e230041d0ce006b22042400200441d0c6006a200341d00110e9081a200441d0c6006a41abd8c8004109200241a0016a412010840120044180c5006a200441d0c6006a41d00110e9081a200441a0c8006a41386a22024200370300200441a0c8006a41306a22034200370300200441a0c8006a41286a22054200370300200441a0c8006a41206a22064200370300200441a0c8006a41186a22074200370300200441a0c8006a41106a22084200370300200441a0c8006a41086a22094200370300200442003703a04820044180c5006a41b0b7c0004107200441a0c8006a41c0001086012008310000210a2009310000210b2007310000210c20043100b248210d20043100b148210e20043100af48210f20043100ad48211020043100ae48211120043100bf48211220043100be48211320043100bd48211420043100bc48211520043100bb48211620043100ba48211720043100ac48211820043100ab48211920043100aa48211a20043100a948211b20043100a748211c20043100b948211d20043100b748211e20043100b648211f20043100b348212020043100b448212120043100b5482122200420043502a04820043100a4484220868420043100a5484228868420043100a64822234230868442ffffffffffffff03833703e04820042020202142088684202242108684201f42188684201e42208684200c42288684201d4230868442018842ffffffffffffff03833703f84820042023201c42088684200b42108684201b42188684201a4220868420194228868420184230868442038842ffffffffffffff03833703e8482004200c201d42088684201742108684201642188684201542208684201442288684201342308684201242388684420c8842ffffffffffffff03833703804920042018201042088684201142108684200f42188684200a42208684200e42288684200d4230868420204238868442068842ffffffffffffff03833703f04820044188c9006a200441e0c8006a1071200441a8ca006a41186a20022903002220370300200441a8ca006a41106a2003290300220a370300200441a8ca006a41086a2005290300220b37030020042006290300220d3703a84a20043100ba4a210e20043100b94a210f20043100b74a211020043100b54a211120043100b64a211220043100c74a211320043100c64a211420043100c54a211520043100c44a211620043100c34a211720043100c24a211920043100b44a210c20043100b34a211a20043100b24a211b20043100b14a211c20043100af4a211e20043100c14a211820043100bf4a211f20043100be4a212120043100bb4a211d20043100bc4a212220043100bd4a21232004200d42ffffffff0f8320043100ac4a4220868420043100ad4a4228868420043100ae4a220d4230868442ffffffffffffff03833703c84a2004201d202242088684202342108684202142188684201f42208684202042ff018322204228868420184230868442018842ffffffffffffff03833703e04a2004200d201e42088684200b42ff018342108684201c42188684201b42208684201a42288684200c4230868442038842ffffffffffffff03833703d04a20042018420886202084201942108684201742188684201642208684201542288684201442308684201342388684420c8842ffffffffffffff03833703e84a2004200c201142088684201242108684201042188684200a42ff018342208684200f42288684200e42308684201d4238868442068842ffffffffffffff03833703d84a200441f0ca006a200441c8ca006a1071200441d0c6006a41106a2203200441f0ca006a41386a290300220b370300200441d0c6006a41086a2224200441f0ca006a41306a290300220d20042903f84a220e7c3703002003200b20042903804b220f7c370300200441d0c6006a41186a2208200441f0ca006a41c0006a290300221020042903884b22117c370300200441d0c6006a41206a2209200441f0ca006a41c8006a290300221220042903904b22137c370300200420042903984b221420042903f04a22157c3703d046200441a8ce006a41206a2202200441f0ca006a41f0006a290300370300200441a8ce006a41186a2205200441f0ca006a41e8006a290300370300200441a8ce006a41106a2206200441f0ca006a41e0006a290300370300200441a8ce006a41086a2207200441f0ca006a41d8006a290300370300200420042903c04b3703a84e200441d0c1006a20042903e84b220c420042d9e2cbb5c2f2a603420010e808200441a0c2006a200441f0ca006a4198016a29030022184200428ee0b9a98cbfbd1f420010e808200441f0c2006a200441f0ca006a4190016a290300221d420042968c8a82a4c39824420010e808200441c0c3006a200441f0ca006a4188016a2903002220420042d587a4ceaceea43d420010e80820044190c4006a200441f0ca006a4180016a290300220a420042edd39cadab84b215420010e808200441a0c4006a200a420042d9e2cbb5c2f2a603420010e808200441e0c1006a200c420042fabaabb1878ad401420010e808200441b0c2006a2018420042968c8a82a4c39824420010e80820044180c3006a201d420042d587a4ceaceea43d420010e808200441d0c3006a2020420042edd39cadab84b215420010e808200441e0c3006a2020420042d9e2cbb5c2f2a603420010e808200441b0c4006a200a420042fabaabb1878ad401420010e808200441f0c1006a200c420042d2808e80cce8f301420010e808200441c0c2006a2018420042d587a4ceaceea43d420010e80820044190c3006a201d420042edd39cadab84b215420010e808200441a0c3006a201d420042d9e2cbb5c2f2a603420010e808200441f0c3006a2020420042fabaabb1878ad401420010e808200441c0c4006a200a420042d2808e80cce8f301420010e80820044180c2006a200c420042f7f281baccf19c03420010e808200441d0c2006a2018420042edd39cadab84b215420010e808200441e0c2006a2018420042d9e2cbb5c2f2a603420010e808200441b0c3006a201d420042fabaabb1878ad401420010e80820044180c4006a2020420042d2808e80cce8f301420010e808200441d0c4006a200a420042f7f281baccf19c03420010e80820044190c2006a200c420042ffdb95eed98d9001420010e808200441d0c6006a41c8006a2225201220137d42f0ffffffffffff3f7c220c42ffffffffffffff0383201020117d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41c0006a2226201842ffffffffffffff0383200b200f7d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41386a2227201842ffffffffffffff0383200d200e7d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41306a2228201842ffffffffffffff0383201420157d42d0fdffffffffff3f7c22184233887c3703002004200c42338842137e201842ffffffffffffff03837c3703f846200441d0c6006a41f0006a22292002290300370300200441d0c6006a41e8006a222a2005290300370300200441d0c6006a41e0006a222b2006290300370300200441d0c6006a41d8006a222c2007290300370300200420042903a84e3703a047200441d0c6006a4188016a222d20042903c042221320042903f0417c220c2004290390437c221820042903e0437c221d20042903b0447c222020042903b042221420042903e0417c220a2004290380437c220b20042903d0437c220d20042903a0447c220e20042903a042221520042903d0417c220f20042903f0427c221020042903c0437c22112004290390447c2212423388200441a0c2006a41086a290300200441d0c1006a41086a2903007c200f201554ad7c200441f0c2006a41086a2903007c2010200f54ad7c200441c0c3006a41086a2903007c2011201054ad7c20044190c4006a41086a2903007c2012201154ad7c420d86847c220f423388200441b0c2006a41086a290300200441e0c1006a41086a2903007c200a201454ad7c20044180c3006a41086a2903007c200b200a54ad7c200441d0c3006a41086a2903007c200d200b54ad7c200441a0c4006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383370300200441d0c6006a4190016a222e20042903d04222112004290380427c220b20042903a0437c220d20042903f0437c220e20042903c0447c2210200a423388200441c0c2006a41086a290300200441f0c1006a41086a2903007c200c201354ad7c20044190c3006a41086a2903007c2018200c54ad7c200441e0c3006a41086a2903007c201d201854ad7c200441b0c4006a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff0383370300200441d0c6006a4198016a222f20042903e04222132004290390427c221820042903b0437c221d2004290380447c222020042903d0447c220a200c423388200441d0c2006a41086a29030020044180c2006a41086a2903007c200b201154ad7c200441a0c3006a41086a2903007c200d200b54ad7c200441f0c3006a41086a2903007c200e200d54ad7c200441c0c4006a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff0383370300200441d0c6006a4180016a2230200c423388200441e0c2006a41086a29030020044190c2006a41086a2903007c2018201354ad7c200441b0c3006a41086a2903007c201d201854ad7c20044180c4006a41086a2903007c2020201d54ad7c200441d0c4006a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c423388200f42ffffffffffffff03837c3703002004200c42ffffffffffffff03833703c84720044190cc006a41206a223120044188c9006a41c8006a223229030037030020044190cc006a41186a223320044188c9006a41c0006a2234290300222037030020044190cc006a41106a223520044188c9006a41386a2236290300221d37030020044190cc006a41086a223720044188c9006a41306a22382903002218370300200420042903b049220c3703904c2004200c2004290388497c220c3703904c203720182004290390497c22183703002035201d2004290398497c221d3703002033202020042903a0497c22203703002031203129030020042903a8497c220a370300200441c03e6a20042903d046220b4200200c420010e808200441c0c1006a200a42002024290300220d42137e420010e808200441f0c0006a202042002003290300220e42137e2212420010e808200441a0c0006a201d42002008290300221042137e2211420010e808200441d03f6a201842002009290300221342137e220f420010e808200441d03e6a20184200200b420010e808200441b0c1006a200c4200200d420010e808200441e0c0006a200a42002012420010e80820044190c0006a202042002011420010e808200441c03f6a201d4200200f420010e808200441e03e6a201d4200200b420010e808200441a0c1006a20184200200d420010e808200441d0c0006a200c4200200e420010e80820044180c0006a200a42002011420010e808200441b03f6a20204200200f420010e808200441f03e6a20204200200b420010e80820044190c1006a201d4200200d420010e808200441c0c0006a20184200200e420010e808200441f03f6a200c42002010420010e808200441a03f6a200a4200200f420010e808200441803f6a200a4200200b420010e80820044180c1006a20204200200d420010e808200441b0c0006a201d4200200e420010e808200441e03f6a201842002010420010e808200441903f6a200c42002013420010e8082038290300210b2036290300210a2034290300211d200429039049210d200429039849210e20042903a0492120200441f03b6a20042903f846220c4200203229030020042903a8497d42f0ffffffffffff3f7c220f42338842137e20042903b0492004290388497d42d0fdffffffffff3f7c221242ffffffffffffff03837c2218420010e808200441f03d6a200f42ffffffffffffff0383201d20207d42f0ffffffffffff3f7c220f4233887c221d42002028290300222042137e420010e808200441b03d6a200f42ffffffffffffff0383200a200e7d42f0ffffffffffff3f7c220f4233887c220a42002027290300220e42137e2213420010e808200441f03c6a200f42ffffffffffffff0383200b200d7d42f0ffffffffffff3f7c220d4233887c220b42002026290300221042137e2211420010e808200441b03c6a200d42ffffffffffffff038320124233887c220d42002025290300221242137e220f420010e808200441e03b6a200d4200200c420010e808200441b03e6a201842002020420010e808200441a03d6a201d42002013420010e808200441e03c6a200a42002011420010e808200441a03c6a200b4200200f420010e808200441d03b6a200b4200200c420010e808200441a03e6a200d42002020420010e808200441e03d6a20184200200e420010e808200441d03c6a201d42002011420010e808200441903c6a200a4200200f420010e808200441c03b6a200a4200200c420010e808200441903e6a200b42002020420010e808200441d03d6a200d4200200e420010e808200441903d6a201842002010420010e808200441803c6a201d4200200f420010e808200441b03b6a201d4200200c420010e808200441803e6a200a42002020420010e808200441c03d6a200b4200200e420010e808200441803d6a200d42002010420010e808200441c03c6a201842002012420010e808200420042903d03c221320042903e03d7c220c20042903903c7c221820042903d03b7c221d20042903a03e7c222020042903a03d221420042903b03e7c220a20042903e03c7c220b20042903a03c7c220d20042903e03b7c220e20042903f03d221520042903f03b7c220f20042903b03d7c221020042903f03c7c221120042903b03c7c2212423388200441f03d6a41086a290300200441f03b6a41086a2903007c200f201554ad7c200441b03d6a41086a2903007c2010200f54ad7c200441f03c6a41086a2903007c2011201054ad7c200441b03c6a41086a2903007c2012201154ad7c420d86847c220f423388200441a03d6a41086a290300200441b03e6a41086a2903007c200a201454ad7c200441e03c6a41086a2903007c200b200a54ad7c200441a03c6a41086a2903007c200d200b54ad7c200441e03b6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703c84c200420042903803c221120042903903d7c220b20042903c03b7c220d20042903903e7c220e20042903d03d7c2210200a423388200441d03c6a41086a290300200441e03d6a41086a2903007c200c201354ad7c200441903c6a41086a2903007c2018200c54ad7c200441d03b6a41086a2903007c201d201854ad7c200441a03e6a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff03833703d04c200420042903b03b221320042903c03c7c221820042903803e7c221d20042903c03d7c222020042903803d7c220a200c423388200441803c6a41086a290300200441903d6a41086a2903007c200b201154ad7c200441c03b6a41086a2903007c200d200b54ad7c200441903e6a41086a2903007c200e200d54ad7c200441d03d6a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff03833703d84c2004200c423388200441b03b6a41086a290300200441c03c6a41086a2903007c2018201354ad7c200441803e6a41086a2903007c201d201854ad7c200441c03d6a41086a2903007c2020201d54ad7c200441803d6a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff03833703b84c2004200c423388200f42ffffffffffffff03837c3703c04c200441e03a6a20042903c847220c420020042903804a2218420010e808200441d03a6a20044188c9006a4198016a290300221d42002030290300222042137e420010e808200441803a6a20044188c9006a4190016a290300220a4200202d290300220e42137e2212420010e808200441b0396a20044188c9006a4188016a290300220b4200202e290300221042137e2211420010e808200441e0386a20044188c9006a4180016a290300220d4200202f290300221342137e220f420010e808200441d0386a200d4200200c420010e808200441a03b6a201842002020420010e808200441c03a6a201d42002012420010e808200441f0396a200a42002011420010e808200441a0396a200b4200200f420010e80820044190396a200b4200200c420010e808200441c0386a200d42002020420010e808200441903b6a20184200200e420010e808200441b03a6a201d42002011420010e808200441e0396a200a4200200f420010e808200441d0396a200a4200200c420010e80820044180396a200b42002020420010e808200441b0386a200d4200200e420010e808200441803b6a201842002010420010e808200441a03a6a201d4200200f420010e808200441903a6a201d4200200c420010e808200441c0396a200a42002020420010e808200441f0386a200b4200200e420010e808200441a0386a200d42002010420010e808200441f03a6a201842002013420010e808200420042903903a221c20042903f03a7c220c20042903c0397c221820042903f0387c221d20042903a0387c222020042903a03a221e20042903803b7c220a20042903d0397c220b2004290380397c220d20042903b0387c220e20042903b03a221f20042903903b7c220f20042903e0397c22102004290390397c221120042903c0387c221220042903c03a222120042903a03b7c221320042903f0397c221420042903a0397c221520042903d0387c221620042903d03a222220042903e03a7c221720042903803a7c221920042903b0397c221a20042903e0387c221b423388200441d03a6a41086a290300200441e03a6a41086a2903007c2017202254ad7c200441803a6a41086a2903007c2019201754ad7c200441b0396a41086a2903007c201a201954ad7c200441e0386a41086a2903007c201b201a54ad7c420d86847c2217423388200441c03a6a41086a290300200441a03b6a41086a2903007c2013202154ad7c200441f0396a41086a2903007c2014201354ad7c200441a0396a41086a2903007c2015201454ad7c200441d0386a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2213423388200441b03a6a41086a290300200441903b6a41086a2903007c200f201f54ad7c200441e0396a41086a2903007c2010200f54ad7c20044190396a41086a2903007c2011201054ad7c200441c0386a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03a6a41086a290300200441803b6a41086a2903007c200a201e54ad7c200441d0396a41086a2903007c200b200a54ad7c20044180396a41086a2903007c200d200b54ad7c200441b0386a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703804d2004200f42ffffffffffffff03833703f84c2004201342ffffffffffffff03833703f04c2004200a423388200441903a6a41086a290300200441f03a6a41086a2903007c200c201c54ad7c200441c0396a41086a2903007c2018200c54ad7c200441f0386a41086a2903007c201d201854ad7c200441a0386a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c220c423388201742ffffffffffffff03837c3703e84c2004200c42ffffffffffffff03833703e04c20044190356a20042903a047220c420020042903d8492218420010e808200441a0366a20044188c9006a41f0006a290300221d4200202c290300222042137e420010e808200441e0366a20044188c9006a41e8006a290300220a4200202b290300220e42137e2212420010e808200441a0376a20044188c9006a41e0006a290300220b4200202a290300221042137e2211420010e808200441e0376a20044188c9006a41d8006a290300220d42002029290300221342137e220f420010e808200441e0356a200d4200200c420010e808200441a0356a201842002020420010e808200441b0366a201d42002012420010e808200441f0366a200a42002011420010e808200441b0376a200b4200200f420010e808200441f0356a200b4200200c420010e808200441f0376a200d42002020420010e808200441b0356a20184200200e420010e808200441c0366a201d42002011420010e80820044180376a200a4200200f420010e80820044180366a200a4200200c420010e808200441c0376a200b42002020420010e80820044180386a200d4200200e420010e808200441c0356a201842002010420010e808200441d0366a201d4200200f420010e80820044190366a201d4200200c420010e80820044190376a200a42002020420010e808200441d0376a200b4200200e420010e80820044190386a200d42002010420010e808200441d0356a201842002013420010e8082004200429039036221c20042903d0357c220c2004290390377c221820042903d0377c221d2004290390387c222020042903d036221e20042903c0357c220a2004290380367c220b20042903c0377c220d2004290380387c220e20042903c036221f20042903b0357c220f2004290380377c221020042903f0357c221120042903f0377c221220042903b036222120042903a0357c221320042903f0367c221420042903b0377c221520042903e0357c221620042903a03622222004290390357c221720042903e0367c221920042903a0377c221a20042903e0377c221b423388200441a0366a41086a29030020044190356a41086a2903007c2017202254ad7c200441e0366a41086a2903007c2019201754ad7c200441a0376a41086a2903007c201a201954ad7c200441e0376a41086a2903007c201b201a54ad7c420d86847c2217423388200441b0366a41086a290300200441a0356a41086a2903007c2013202154ad7c200441f0366a41086a2903007c2014201354ad7c200441b0376a41086a2903007c2015201454ad7c200441e0356a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2213423388200441c0366a41086a290300200441b0356a41086a2903007c200f201f54ad7c20044180376a41086a2903007c2010200f54ad7c200441f0356a41086a2903007c2011201054ad7c200441f0376a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441d0366a41086a290300200441c0356a41086a2903007c200a201e54ad7c20044180366a41086a2903007c200b200a54ad7c200441c0376a41086a2903007c200d200b54ad7c20044180386a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42338820044190366a41086a290300200441d0356a41086a2903007c200c201c54ad7c20044190376a41086a2903007c2018200c54ad7c200441d0376a41086a2903007c201d201854ad7c20044190386a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c221842ffffffffffffff0383220c3703884d20042018423388201742ffffffffffffff03837c22183703904d2004200a42ffffffffffffff0383221d3703a84d2004200f42ffffffffffffff038322203703a04d2004201342ffffffffffffff0383220a3703984d200441b0cd006a41086a2231201820187c370300200441b0cd006a41106a2224200a200a7c370300200441b0cd006a41186a2225202020207c370300200441b0cd006a41206a2226201d201d7c3703002004200c200c7c3703b04d20042903c04c211c20042903c84c211e20042903d04c211f20042903d84c212120042903b84c2122200420042903803f222320042903903f7c220c2004290380417c221820042903b0407c221d20042903e03f7c222020042903a03f223920042903f03f7c220a20042903f03e7c220b2004290390417c220d20042903c0407c220e200429038040223a20042903d0407c220f20042903b03f7c221020042903e03e7c221120042903a0417c221220042903e040223b20042903b0417c22132004290390407c221420042903c03f7c221520042903d03e7c221620042903c041223c20042903c03e7c221720042903f0407c221920042903a0407c221a20042903d03f7c221b423388200441c0c1006a41086a290300200441c03e6a41086a2903007c2017203c54ad7c200441f0c0006a41086a2903007c2019201754ad7c200441a0c0006a41086a2903007c201a201954ad7c200441d03f6a41086a2903007c201b201a54ad7c420d86847c2217423388200441e0c0006a41086a290300200441b0c1006a41086a2903007c2013203b54ad7c20044190c0006a41086a2903007c2014201354ad7c200441c03f6a41086a2903007c2015201454ad7c200441d03e6a41086a2903007c2016201554ad7c2017201654ad7c420d86847c221342338820044180c0006a41086a290300200441d0c0006a41086a2903007c200f203a54ad7c200441b03f6a41086a2903007c2010200f54ad7c200441e03e6a41086a2903007c2011201054ad7c200441a0c1006a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03f6a41086a290300200441f03f6a41086a2903007c200a203954ad7c200441f03e6a41086a2903007c200b200a54ad7c20044190c1006a41086a2903007c200d200b54ad7c200441c0c0006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a423388200441803f6a41086a290300200441903f6a41086a2903007c200c202354ad7c20044180c1006a41086a2903007c2018200c54ad7c200441b0c0006a41086a2903007c201d201854ad7c200441e03f6a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c220c423388201742ffffffffffffff03837c220e3703884e2004200c42ffffffffffffff0383220b3703804e2004200a42ffffffffffffff0383220a3703a04e2004200f42ffffffffffffff0383220d3703984e2004201342ffffffffffffff0383220f3703904e2004200b20042903b84c7c3703804e2004200e20042903c04c7c3703884e2004200f20042903c84c7c3703904e2004200d20042903d04c7c3703984e2004200a20042903d84c7c3703a04e2002202629030037030020052025290300222037030020062024290300221d370300200720312903002218370300200420042903b04d220c3703a84e2004200c20042903e04c7c220c3703a84e2007201820042903e84c7c22183703002006201d20042903f04c7c221d3703002005202020042903f84c7c22123703002002200229030020042903804d7c2215370300200441f0276a202629030020042903804d7d42f0ffffffffffff3f7c221042338842137e20042903b04d20042903e04c7d42d0fdffffffffff3f7c221142ffffffffffffff03837c22204200200a20217d42f0ffffffffffff3f7c221342338842137e200b20227d42d0fdffffffffff3f7c221442ffffffffffffff03837c220a420010e80820044180356a201342ffffffffffffff0383200d201f7d42f0ffffffffffff3f7c220d4233887c220b4200203129030020042903e84c7d42f0ffffffffffff3f7c221642ffffffffffffff038320114233887c221342137e2223420010e80820044180346a200d42ffffffffffffff0383200f201e7d42f0ffffffffffff3f7c220f4233887c220d4200202429030020042903f04c7d42f0ffffffffffff3f7c221142ffffffffffffff038320164233887c221942137e221e420010e80820044180336a200f42ffffffffffffff0383200e201c7d42f0ffffffffffff3f7c220f4233887c220e4200202529030020042903f84c7d42f0ffffffffffff3f7c221642ffffffffffffff038320114233887c221c42137e221b420010e808200441d0266a200f42ffffffffffffff038320144233887c220f4200201042ffffffffffffff038320164233887c222142137e2216420010e808200441c0266a200f42002020420010e808200441e0276a200a42002013420010e808200441f0336a200b4200201e420010e808200441f0326a200d4200201b420010e80820044180326a200e42002016420010e80820044180316a200e42002020420010e808200441b0266a200f42002013420010e808200441d0276a200a42002019420010e808200441e0326a200b4200201b420010e808200441f0316a200d42002016420010e808200441f0306a200d42002020420010e808200441e0346a200e42002013420010e80820044180256a200f42002019420010e808200441c0276a200a4200201c420010e808200441e0316a200b42002016420010e808200441e0306a200b42002020420010e808200441d0346a200d42002013420010e808200441c0336a200e42002019420010e808200441d0236a200f4200201c420010e808200441b0276a200a42002021420010e808200441902b6a200c420020042903804e2210420010e808200441802d6a20042903a04e221a4200201842137e420010e808200441802e6a20042903984e22174200201d42137e2239420010e808200441802f6a20042903904e22144200201242137e2222420010e80820044180306a20042903884e22114200201542137e221f420010e808200441f02f6a20114200200c420010e808200441a02b6a201042002018420010e808200441f02c6a201a42002039420010e808200441f02d6a201742002022420010e808200441f02e6a20144200201f420010e808200441e02e6a20144200200c420010e808200441e02f6a201142002018420010e808200441b02b6a20104200201d420010e808200441e02c6a201a42002022420010e808200441e02d6a20174200201f420010e808200441d02d6a20174200200c420010e808200441d02e6a201442002018420010e808200441d02f6a20114200201d420010e808200441c02b6a201042002012420010e808200441d02c6a201a4200201f420010e808200441c02c6a201a4200200c420010e808200441c02d6a201742002018420010e808200441c02e6a20144200201d420010e808200441c02f6a201142002012420010e808200441d02b6a201042002015420010e808200441d0306a20204200200c420010e808200441f0346a201542002023420010e808200441e0336a20124200201e420010e808200441d0326a201d4200201b420010e808200441d0316a201842002016420010e808200441c0306a201842002020420010e808200441c0346a200c42002013420010e808200441d0336a20154200201e420010e808200441c0326a20124200201b420010e808200441c0316a201d42002016420010e808200441b0306a201d42002020420010e808200441b0346a201842002013420010e808200441b0336a200c42002019420010e808200441b0326a20154200201b420010e808200441b0316a201242002016420010e808200441a0306a201242002020420010e808200441a0346a201d42002013420010e808200441a0336a201842002019420010e808200441a0326a200c4200201c420010e808200441a0316a201542002016420010e80820044190306a201542002020420010e80820044190346a201242002013420010e80820044190336a201d42002019420010e80820044190326a20184200201c420010e80820044190316a200c42002021420010e808200441a0276a20104200200a420010e808200441902f6a200b4200201142137e420010e808200441a02e6a200d4200201442137e221d420010e808200441b02d6a200e4200201742137e2218420010e80820044190106a200f4200201a42137e220c420010e80820044180106a200f42002010420010e80820044190276a200a42002011420010e808200441902e6a200b4200201d420010e808200441a02d6a200d42002018420010e808200441b02c6a200e4200200c420010e808200441e02b6a200e42002010420010e808200441f00f6a200f42002011420010e80820044180276a200a42002014420010e808200441902d6a200b42002018420010e808200441a02c6a200d4200200c420010e808200441f02b6a200d42002010420010e808200441b02f6a200e42002011420010e808200441900f6a200f42002014420010e808200441f0266a200a42002017420010e808200441902c6a200b4200200c420010e808200441802c6a200b42002010420010e808200441a02f6a200d42002011420010e808200441b02e6a200e42002014420010e808200441b00e6a200f42002017420010e808200441e0266a200a4200201a420010e808200420042903e02c221320042903b02b7c220c20042903e02d7c221820042903e02e7c221d20042903e02f7c222020042903f02c221420042903a02b7c220a20042903f02d7c220b20042903f02e7c220d20042903f02f7c220e20042903802d221520042903902b7c220f20042903802e7c221020042903802f7c22112004290380307c2212423388200441802d6a41086a290300200441902b6a41086a2903007c200f201554ad7c200441802e6a41086a2903007c2010200f54ad7c200441802f6a41086a2903007c2011201054ad7c20044180306a41086a2903007c2012201154ad7c420d86847c220f423388200441f02c6a41086a290300200441a02b6a41086a2903007c200a201454ad7c200441f02d6a41086a2903007c200b200a54ad7c200441f02e6a41086a2903007c200d200b54ad7c200441f02f6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff038322173703c04d200420042903d02c221120042903c02b7c220b20042903d02d7c220d20042903d02e7c220e20042903d02f7c2210200a423388200441e02c6a41086a290300200441b02b6a41086a2903007c200c201354ad7c200441e02d6a41086a2903007c2018200c54ad7c200441e02e6a41086a2903007c201d201854ad7c200441e02f6a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff038322213703c84d200420042903c02c221320042903d02b7c221820042903c02d7c221d20042903c02e7c222020042903c02f7c220a200c423388200441d02c6a41086a290300200441c02b6a41086a2903007c200b201154ad7c200441d02d6a41086a2903007c200d200b54ad7c200441d02e6a41086a2903007c200e200d54ad7c200441d02f6a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff038322233703d04d2004200c423388200441c02c6a41086a290300200441d02b6a41086a2903007c2018201354ad7c200441c02d6a41086a2903007c201d201854ad7c200441c02e6a41086a2903007c2020201d54ad7c200441c02f6a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff038322143703b04d2004200c423388200f42ffffffffffffff03837c22153703b84d20044180286a20042903903022222004290390317c220c2004290390347c22182004290390337c221d2004290390327c222020042903a031223920042903a0327c220a20042903a0307c220b20042903a0347c220d20042903a0337c220e20042903b032223a20042903b0337c220f20042903b0317c221020042903b0307c221120042903b0347c221220042903d033223b20042903c0347c221320042903c0327c221620042903c0317c221920042903c0307c221a20042903f034223c20042903d0307c221b20042903e0337c221c20042903d0327c221e20042903d0317c221f423388200441f0346a41086a290300200441d0306a41086a2903007c201b203c54ad7c200441e0336a41086a2903007c201c201b54ad7c200441d0326a41086a2903007c201e201c54ad7c200441d0316a41086a2903007c201f201e54ad7c420d86847c221b423388200441d0336a41086a290300200441c0346a41086a2903007c2013203b54ad7c200441c0326a41086a2903007c2016201354ad7c200441c0316a41086a2903007c2019201654ad7c200441c0306a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c2213423388200441b0326a41086a290300200441b0336a41086a2903007c200f203a54ad7c200441b0316a41086a2903007c2010200f54ad7c200441b0306a41086a2903007c2011201054ad7c200441b0346a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a0316a41086a290300200441a0326a41086a2903007c200a203954ad7c200441a0306a41086a2903007c200b200a54ad7c200441a0346a41086a2903007c200d200b54ad7c200441a0336a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383223d42f0ffffffffffff3f7c223e20237d221242338842137e200a42338820044190306a41086a29030020044190316a41086a2903007c200c202254ad7c20044190346a41086a2903007c2018200c54ad7c20044190336a41086a2903007c201d201854ad7c20044190326a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201f42ffffffffffffff03837c222042ffffffffffffff0383223f42d0fdffffffffff3f7c224020147d220a42ffffffffffffff03837c220c4200203f20147c2218420010e808200441c0296a203d20237c221d42002020423388201b42ffffffffffffff03837c224142f0ffffffffffff3f7c224220157d220b42ffffffffffffff0383200a4233887c222042137e420010e808200441a02a6a200f42ffffffffffffff0383224320217c220a4200201342ffffffffffffff0383224442f0ffffffffffff3f7c224520177d220d42ffffffffffffff0383200b4233887c220e42137e2213420010e808200441b02a6a204420177c220b4200204342f0ffffffffffff3f7c224620217d220f42ffffffffffffff0383200d4233887c221042137e2211420010e808200441d0296a204120157c220d4200201242ffffffffffffff0383200f4233887c221242137e220f420010e80820044180296a200d4200200c420010e80820044190286a201842002020420010e808200441902a6a201d42002013420010e808200441e02a6a200a42002011420010e808200441c02a6a200b4200200f420010e808200441f0286a200b4200200c420010e808200441b0296a200d42002020420010e808200441a0286a20184200200e420010e808200441d02a6a201d42002011420010e808200441f02a6a200a4200200f420010e808200441e0286a200a4200200c420010e808200441a0296a200b42002020420010e808200441e0296a200d4200200e420010e808200441b0286a201842002010420010e808200441802b6a201d4200200f420010e808200441d0286a201d4200200c420010e80820044190296a200a42002020420010e808200441802a6a200b4200200e420010e808200441f0296a200d42002010420010e808200441c0286a201842002012420010e80820044180216a2014420020042903e030222220042903b0277c220c20042903d0347c221820042903c0337c221d20042903d0237c222020042903e031223920042903c0277c220a20042903f0307c220b20042903e0347c220d2004290380257c220e20042903e032223a20042903d0277c220f20042903f0317c22102004290380317c221120042903b0267c221220042903f033223b20042903e0277c221320042903f0327c22162004290380327c221920042903c0267c221a200429038035223c20042903f0277c221b2004290380347c221c2004290380337c221e20042903d0267c221f42338820044180356a41086a290300200441f0276a41086a2903007c201b203c54ad7c20044180346a41086a2903007c201c201b54ad7c20044180336a41086a2903007c201e201c54ad7c200441d0266a41086a2903007c201f201e54ad7c420d86847c221b423388200441f0336a41086a290300200441e0276a41086a2903007c2013203b54ad7c200441f0326a41086a2903007c2016201354ad7c20044180326a41086a2903007c2019201654ad7c200441c0266a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c2213423388200441e0326a41086a290300200441d0276a41086a2903007c200f203a54ad7c200441f0316a41086a2903007c2010200f54ad7c20044180316a41086a2903007c2011201054ad7c200441b0266a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441e0316a41086a290300200441c0276a41086a2903007c200a203954ad7c200441f0306a41086a2903007c200b200a54ad7c200441e0346a41086a2903007c200d200b54ad7c20044180256a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a423388200441e0306a41086a290300200441b0276a41086a2903007c200c202254ad7c200441d0346a41086a2903007c2018200c54ad7c200441c0336a41086a2903007c201d201854ad7c200441d0236a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201f42ffffffffffffff03837c220c42ffffffffffffff03832218420010e808200441b0226a200a42ffffffffffffff0383221d4200201542137e420010e808200441e0236a200f42ffffffffffffff038322204200201742137e220e420010e80820044190256a201342ffffffffffffff0383220a4200202142137e220d420010e808200441a0226a200c423388201b42ffffffffffffff03837c220b4200202342137e220c420010e80820044190226a200b42002014420010e808200441f0206a201842002015420010e808200441c0226a201d4200200e420010e808200441f0236a20204200200d420010e808200441a0256a200a4200200c420010e808200441b0256a200a42002014420010e80820044180226a200b42002015420010e808200441e0206a201842002017420010e808200441d0226a201d4200200d420010e80820044180246a20204200200c420010e80820044190246a202042002014420010e808200441c0256a200a42002015420010e808200441f0216a200b42002017420010e808200441d0206a201842002021420010e808200441e0226a201d4200200c420010e808200441f0226a201d42002014420010e808200441a0246a202042002015420010e808200441d0256a200a42002017420010e808200441e0216a200b42002021420010e808200441c0206a201842002023420010e808200420042903d022221c20042903e0207c220c2004290380247c220d20042903b0257c220e2004290380227c220f20042903c022221e20042903f0207c221020042903f0237c221120042903a0257c22122004290390227c221320042903b022221f2004290380217c221620042903e0237c22192004290390257c221a20042903a0227c221b423388200441b0226a41086a29030020044180216a41086a2903007c2016201f54ad7c200441e0236a41086a2903007c2019201654ad7c20044190256a41086a2903007c201a201954ad7c200441a0226a41086a2903007c201b201a54ad7c420d86847c2216423388200441c0226a41086a290300200441f0206a41086a2903007c2010201e54ad7c200441f0236a41086a2903007c2011201054ad7c200441a0256a41086a2903007c2012201154ad7c20044190226a41086a2903007c2013201254ad7c2016201354ad7c420d86847c221042ffffffffffffff03833703904e200420042903e022221a20042903d0207c22112004290390247c221220042903c0257c221320042903f0217c22192010423388200441d0226a41086a290300200441e0206a41086a2903007c200c201c54ad7c20044180246a41086a2903007c200d200c54ad7c200441b0256a41086a2903007c200e200d54ad7c20044180226a41086a2903007c200f200e54ad7c2010200f54ad7c420d86847c220c42ffffffffffffff03833703984e200420042903f022221c20042903c0207c220d20042903a0247c220e20042903d0257c220f20042903e0217c2210200c423388200441e0226a41086a290300200441d0206a41086a2903007c2011201a54ad7c20044190246a41086a2903007c2012201154ad7c200441c0256a41086a2903007c2013201254ad7c200441f0216a41086a2903007c2019201354ad7c200c201954ad7c420d86847c220c42ffffffffffffff03833703a04e2004200c423388200441f0226a41086a290300200441c0206a41086a2903007c200d201c54ad7c200441a0246a41086a2903007c200e200d54ad7c200441d0256a41086a2903007c200f200e54ad7c200441e0216a41086a2903007c2010200f54ad7c200c201054ad7c420d868442137e201b42ffffffffffffff03837c220c42ffffffffffffff03833703804e2004200c423388201642ffffffffffffff03837c3703884e20044190286a41086a2903002147200441902a6a41086a2903002148200429039028213b20042903902a210c200441e02a6a41086a290300214920042903e02a213c200441c02a6a41086a290300214a20042903c02a214b20044180296a41086a290300214c200429038029214d20044180286a41086a290300214e200441c0296a41086a290300214f200429038028215020042903c029210d200441a02a6a41086a290300215120042903a02a2152200441b02a6a41086a290300215320042903b02a2154200441d0296a41086a290300215520042903d029215620042903d02a210f20042903a028211f20042903f02a212220042903f028213920042903b029213a200441d02a6a41086a2903002157200441a0286a41086a2903002158200441f02a6a41086a2903002159200441f0286a41086a290300215a200441b0296a41086a290300215b20042903802b211020042903b028211a20042903e028211b20042903a029211c20042903e029211e200441802b6a41086a290300215c200441b0286a41086a290300215d200441e0286a41086a290300215e200441a0296a41086a290300215f200441e0296a41086a290300216020042903c028211220042903d0282111200429039029211320042903802a211620042903f0292119200441c0286a41086a2903002161200441d0286a41086a290300216220044190296a41086a2903002163200441802a6a41086a2903002164200441f0296a41086a290300216520044188c9006a20044180ce006a4101106e200441e01c6a200429038849220e4200201920162013201120127c22127c22137c22167c2219201e201c201b2010201a7c221a7c221b7c221c7c221e203a20392022200f201f7c221f7c22227c22397c223a204d204b203c200c203b7c223b7c223c7c224b7c224d205620542052200d20507c22507c22527c22547c2256423388205520532051204f204e7c2050200d54ad7c7c2052205054ad7c7c2054205254ad7c7c2056205454ad7c420d86847c220d423388204c204a2049204820477c203b200c54ad7c7c203c203b54ad7c7c204b203c54ad7c7c204d204b54ad7c200d204d54ad7c420d86847c223b423388205b205a2059205720587c201f200f54ad7c7c2022201f54ad7c7c2039202254ad7c7c203a203954ad7c203b203a54ad7c420d86847c221f4233882060205f205e205c205d7c201a201054ad7c7c201b201a54ad7c7c201c201b54ad7c7c201e201c54ad7c201f201e54ad7c420d86847c220f423388206520642063206220617c2012201154ad7c7c2013201254ad7c7c2016201354ad7c7c2019201654ad7c200f201954ad7c420d868442137e205642ffffffffffffff03837c221142ffffffffffffff0383220c420010e808200441e01f6a200f42ffffffffffffff038322194200200429039049220f42137e420010e808200441901f6a201f42ffffffffffffff038322164200200429039849221042137e221b420010e808200441c01e6a203b42ffffffffffffff03832213420020042903a049221242137e221a420010e808200441f01d6a2011423388200d42ffffffffffffff03837c220d420020042903a849221c42137e2211420010e808200441f01c6a200d4200200e420010e808200441d01f6a200c4200200f420010e808200441801f6a20194200201b420010e808200441b01e6a20164200201a420010e808200441e01d6a201342002011420010e808200441801d6a20134200200e420010e808200441c01f6a200d4200200f420010e808200441f01e6a200c42002010420010e808200441a01e6a20194200201a420010e808200441d01d6a201642002011420010e808200441901d6a20164200200e420010e808200441b01f6a20134200200f420010e808200441e01e6a200d42002010420010e808200441901e6a200c42002012420010e808200441c01d6a201942002011420010e808200441a01d6a20194200200e420010e808200441a01f6a20164200200f420010e808200441d01e6a201342002010420010e808200441801e6a200d42002012420010e808200441b01d6a200c4200201c420010e808200420042903a01e223a20042903f01e7c220e20042903d01d7c220f20042903801d7c221020042903c01f7c221120042903801f223b20042903d01f7c221220042903b01e7c221a20042903e01d7c221b20042903f01c7c221c20042903e01f223c20042903e01c7c221e20042903901f7c221f20042903c01e7c222220042903f01d7c2239423388200441e01f6a41086a290300200441e01c6a41086a2903007c201e203c54ad7c200441901f6a41086a2903007c201f201e54ad7c200441c01e6a41086a2903007c2022201f54ad7c200441f01d6a41086a2903007c2039202254ad7c420d86847c221e423388200441801f6a41086a290300200441d01f6a41086a2903007c2012203b54ad7c200441b01e6a41086a2903007c201a201254ad7c200441e01d6a41086a2903007c201b201a54ad7c200441f01c6a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c221242ffffffffffffff03833703b84e200420042903c01d222220042903901e7c221a20042903901d7c221b20042903b01f7c221c20042903e01e7c221f2012423388200441a01e6a41086a290300200441f01e6a41086a2903007c200e203a54ad7c200441d01d6a41086a2903007c200f200e54ad7c200441801d6a41086a2903007c2010200f54ad7c200441c01f6a41086a2903007c2011201054ad7c2012201154ad7c420d86847c220e42ffffffffffffff03833703c04e200420042903a01d223a20042903b01d7c220f20042903a01f7c221020042903d01e7c221120042903801e7c2212200e423388200441c01d6a41086a290300200441901e6a41086a2903007c201a202254ad7c200441901d6a41086a2903007c201b201a54ad7c200441b01f6a41086a2903007c201c201b54ad7c200441e01e6a41086a2903007c201f201c54ad7c200e201f54ad7c420d86847c220e42ffffffffffffff03833703c84e2004200e423388200441a01d6a41086a290300200441b01d6a41086a2903007c200f203a54ad7c200441a01f6a41086a2903007c2010200f54ad7c200441d01e6a41086a2903007c2011201054ad7c200441801e6a41086a2903007c2012201154ad7c200e201254ad7c420d868442137e203942ffffffffffffff03837c220e42ffffffffffffff03833703a84e2004200e423388201e42ffffffffffffff03837c3703b04e200441f0ca006a41106a4200370300200441f0ca006a41186a4200370300200441f0ca006a41206a4200370300200442003703f84a200442013703f04a200441d0c6006a200441f0ca006a200441a8ce006a106f200441c0146a200c420020042903d846220e420010e808200441e0156a200441d0c6006a41286a290300220f4200200d42137e420010e80820044180176a200929030022104200201342137e221c420010e808200441a0186a200829030022114200201642137e221b420010e808200441c0196a200329030022124200201942137e221a420010e808200441b0196a20124200200c420010e808200441b0146a200e4200200d420010e808200441d0156a200f4200201c420010e808200441f0166a20104200201b420010e80820044190186a20114200201a420010e80820044180186a20114200200c420010e808200441a0196a20124200200d420010e808200441a0146a200e42002013420010e808200441c0156a200f4200201b420010e808200441e0166a20104200201a420010e808200441d0166a20104200200c420010e808200441f0176a20114200200d420010e80820044190196a201242002013420010e808200441c0136a200e42002016420010e808200441b0156a200f4200201a420010e808200441a0156a200f4200200c420010e808200441c0166a20104200200d420010e808200441e0176a201142002013420010e80820044180196a201242002016420010e808200441e0126a200e42002019420010e80820044180126a20042903804e220c4200200e420010e80820044190156a200f420020042903884e220d42137e420010e808200441b0166a2010420020042903904e221342137e221b420010e808200441d0176a2011420020042903984e221942137e221a420010e808200441f0186a2012420020042903a04e221c42137e2216420010e808200441e0186a20124200200c420010e808200441f0116a200e4200200d420010e80820044180156a200f4200201b420010e808200441a0166a20104200201a420010e808200441c0176a201142002016420010e808200441b0176a20114200200c420010e808200441d0186a20124200200d420010e808200441e0116a200e42002013420010e808200441f0146a200f4200201a420010e80820044190166a201042002016420010e80820044180166a20104200200c420010e808200441a0176a20114200200d420010e808200441c0186a201242002013420010e808200441d0116a200e42002019420010e808200441e0146a200f42002016420010e808200441d0146a200f4200200c420010e808200441f0156a20104200200d420010e80820044190176a201142002013420010e808200441b0186a201242002019420010e808200441c0116a200e4200201c420010e808200441c00d6a20042903802c224b20042903e0267c220c20042903a02f7c220d20042903b02e7c220e20042903b00e7c220f20042903902c224d20042903f0267c221020042903f02b7c221120042903b02f7c221220042903900f7c221320042903902d22502004290380277c221620042903a02c7c221920042903e02b7c221a20042903f00f7c221b20042903902e22522004290390277c221c20042903a02d7c221e20042903b02c7c221f2004290380107c222220042903902f225420042903a0277c223920042903a02e7c223a20042903b02d7c223b2004290390107c223c423388200441902f6a41086a290300200441a0276a41086a2903007c2039205454ad7c200441a02e6a41086a2903007c203a203954ad7c200441b02d6a41086a2903007c203b203a54ad7c20044190106a41086a2903007c203c203b54ad7c420d86847c2239423388200441902e6a41086a29030020044190276a41086a2903007c201c205254ad7c200441a02d6a41086a2903007c201e201c54ad7c200441b02c6a41086a2903007c201f201e54ad7c20044180106a41086a2903007c2022201f54ad7c2039202254ad7c420d86847c221e423388200441902d6a41086a29030020044180276a41086a2903007c2016205054ad7c200441a02c6a41086a2903007c2019201654ad7c200441e02b6a41086a2903007c201a201954ad7c200441f00f6a41086a2903007c201b201a54ad7c201e201b54ad7c420d86847c2216423388200441902c6a41086a290300200441f0266a41086a2903007c2010204d54ad7c200441f02b6a41086a2903007c2011201054ad7c200441b02f6a41086a2903007c2012201154ad7c200441900f6a41086a2903007c2013201254ad7c2016201354ad7c420d86847c2210423388200441802c6a41086a290300200441e0266a41086a2903007c200c204b54ad7c200441a02f6a41086a2903007c200d200c54ad7c200441b02e6a41086a2903007c200e200d54ad7c200441b00e6a41086a2903007c200f200e54ad7c2010200f54ad7c420d868442137e203c42ffffffffffffff03837c225642ffffffffffffff0383220d420020042903d014224720042903c0117c220c20042903f0157c220e2004290390177c220f20042903b0187c221120042903e014224820042903d0117c22122004290380167c221320042903a0177c221920042903c0187c221a20042903f014224920042903e0117c221b2004290390167c221c20042903b0177c221f20042903d0187c2222200429038015224a20042903f0117c223a20042903a0167c223b20042903c0177c223c20042903e0187c224b200429039015224c2004290380127c224d20042903b0167c225020042903d0177c225220042903f0187c225442338820044190156a41086a29030020044180126a41086a2903007c204d204c54ad7c200441b0166a41086a2903007c2050204d54ad7c200441d0176a41086a2903007c2052205054ad7c200441f0186a41086a2903007c2054205254ad7c420d86847c224d42338820044180156a41086a290300200441f0116a41086a2903007c203a204a54ad7c200441a0166a41086a2903007c203b203a54ad7c200441c0176a41086a2903007c203c203b54ad7c200441e0186a41086a2903007c204b203c54ad7c204d204b54ad7c420d86847c223a423388200441f0146a41086a290300200441e0116a41086a2903007c201b204954ad7c20044190166a41086a2903007c201c201b54ad7c200441b0176a41086a2903007c201f201c54ad7c200441d0186a41086a2903007c2022201f54ad7c203a202254ad7c420d86847c221c423388200441e0146a41086a290300200441d0116a41086a2903007c2012204854ad7c20044180166a41086a2903007c2013201254ad7c200441a0176a41086a2903007c2019201354ad7c200441c0186a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c2212423388200441d0146a41086a290300200441c0116a41086a2903007c200c204754ad7c200441f0156a41086a2903007c200e200c54ad7c20044190176a41086a2903007c200f200e54ad7c200441b0186a41086a2903007c2011200f54ad7c2012201154ad7c420d868442137e205442ffffffffffffff03837c220c42ffffffffffffff0383221a420010e808200441900e6a201242ffffffffffffff0383221b42002056423388203942ffffffffffffff03837c220e42137e420010e808200441b00f6a201c42ffffffffffffff0383221c4200201e42ffffffffffffff0383221342137e2211420010e808200441e00e6a203a42ffffffffffffff0383221e4200201642ffffffffffffff0383221642137e220f420010e808200441f00c6a200c423388204d42ffffffffffffff03837c221f4200201042ffffffffffffff0383221942137e220c420010e808200441b00d6a201f4200200d420010e808200441800e6a201a4200200e420010e808200441a00f6a201b42002011420010e808200441d00e6a201c4200200f420010e808200441e00c6a201e4200200c420010e808200441a00d6a201e4200200d420010e808200441f00d6a201f4200200e420010e808200441c00f6a201a42002013420010e808200441c00e6a201b4200200f420010e808200441d00c6a201c4200200c420010e808200441900d6a201c4200200d420010e808200441e00d6a201e4200200e420010e808200441d00f6a201f42002013420010e808200441f00e6a201a42002016420010e808200441f00b6a201b4200200c420010e808200441800d6a201b4200200d420010e808200441d00d6a201c4200200e420010e808200441e00f6a201e42002013420010e808200441800f6a201f42002016420010e808200441a00e6a201a42002019420010e808200441b00a6a20042903800d224c20042903a00e7c220c20042903d00d7c220f20042903e00f7c221020042903800f7c221120042903f00b224e20042903f00e7c221220042903900d7c222220042903e00d7c223920042903d00f7c223a20042903c00e224f20042903c00f7c223b20042903d00c7c223c20042903a00d7c224b20042903f00d7c224d20042903a00f225120042903800e7c225020042903d00e7c225220042903e00c7c225420042903b00d7c225620042903900e225320042903c00d7c224720042903b00f7c224820042903e00e7c224920042903f00c7c224a423388200441900e6a41086a290300200441c00d6a41086a2903007c2047205354ad7c200441b00f6a41086a2903007c2048204754ad7c200441e00e6a41086a2903007c2049204854ad7c200441f00c6a41086a2903007c204a204954ad7c420d86847c2247423388200441a00f6a41086a290300200441800e6a41086a2903007c2050205154ad7c200441d00e6a41086a2903007c2052205054ad7c200441e00c6a41086a2903007c2054205254ad7c200441b00d6a41086a2903007c2056205454ad7c2047205654ad7c420d86847c2250423388200441c00e6a41086a290300200441c00f6a41086a2903007c203b204f54ad7c200441d00c6a41086a2903007c203c203b54ad7c200441a00d6a41086a2903007c204b203c54ad7c200441f00d6a41086a2903007c204d204b54ad7c2050204d54ad7c420d86847c223b423388200441f00b6a41086a290300200441f00e6a41086a2903007c2012204e54ad7c200441900d6a41086a2903007c2022201254ad7c200441e00d6a41086a2903007c2039202254ad7c200441d00f6a41086a2903007c203a203954ad7c203b203a54ad7c420d86847c223c423388200441800d6a41086a290300200441a00e6a41086a2903007c200c204c54ad7c200441d00d6a41086a2903007c200f200c54ad7c200441e00f6a41086a2903007c2010200f54ad7c200441800f6a41086a2903007c2011201054ad7c203c201154ad7c420d868442137e204a42ffffffffffffff03837c225542ffffffffffffff03832222420020042903a015225720042903e0127c220c20042903c0167c220f20042903e0177c22102004290380197c221120042903b015225820042903c0137c221220042903d0167c223920042903f0177c223a2004290390197c224b20042903c015225920042903a0147c224d20042903e0167c22522004290380187c225420042903a0197c225620042903d015225a20042903b0147c224820042903f0167c22492004290390187c224a20042903b0197c224c20042903e015225b20042903c0147c224e2004290380177c224f20042903a0187c225120042903c0197c2253423388200441e0156a41086a290300200441c0146a41086a2903007c204e205b54ad7c20044180176a41086a2903007c204f204e54ad7c200441a0186a41086a2903007c2051204f54ad7c200441c0196a41086a2903007c2053205154ad7c420d86847c224e423388200441d0156a41086a290300200441b0146a41086a2903007c2048205a54ad7c200441f0166a41086a2903007c2049204854ad7c20044190186a41086a2903007c204a204954ad7c200441b0196a41086a2903007c204c204a54ad7c204e204c54ad7c420d86847c2248423388200441c0156a41086a290300200441a0146a41086a2903007c204d205954ad7c200441e0166a41086a2903007c2052204d54ad7c20044180186a41086a2903007c2054205254ad7c200441a0196a41086a2903007c2056205454ad7c2048205654ad7c420d86847c224d423388200441b0156a41086a290300200441c0136a41086a2903007c2012205854ad7c200441d0166a41086a2903007c2039201254ad7c200441f0176a41086a2903007c203a203954ad7c20044190196a41086a2903007c204b203a54ad7c204d204b54ad7c420d86847c2212423388200441a0156a41086a290300200441e0126a41086a2903007c200c205754ad7c200441c0166a41086a2903007c200f200c54ad7c200441e0176a41086a2903007c2010200f54ad7c20044180196a41086a2903007c2011201054ad7c2012201154ad7c420d868442137e205342ffffffffffffff03837c225242ffffffffffffff0383220c420010e808200441800b6a201242ffffffffffffff0383220f42002055423388204742ffffffffffffff03837c223942137e420010e808200441900c6a204d42ffffffffffffff038322104200205042ffffffffffffff0383223a42137e2250420010e808200441b00b6a204842ffffffffffffff038322114200203b42ffffffffffffff0383224b42137e224d420010e808200441e0096a2052423388204e42ffffffffffffff03837c22124200203c42ffffffffffffff0383223c42137e223b420010e808200441a00a6a201242002022420010e808200441f00a6a200c42002039420010e808200441800c6a200f42002050420010e808200441a00b6a20104200204d420010e808200441d0096a20114200203b420010e808200441900a6a201142002022420010e808200441e00a6a201242002039420010e808200441a00c6a200c4200203a420010e808200441900b6a200f4200204d420010e808200441c0096a20104200203b420010e808200441800a6a201042002022420010e808200441d00a6a201142002039420010e808200441b00c6a20124200203a420010e808200441c00b6a200c4200204b420010e808200441e0086a200f4200203b420010e808200441f0096a200f42002022420010e808200441c00a6a201042002039420010e808200441c00c6a20114200203a420010e808200441d00b6a20124200204b420010e808200441e00b6a200c4200203c420010e808200441b0206a2018420042b0c1bad0f4e48603420010e80820044180236a201d420042a7a7fbf49beaf607420010e808200441b0246a2020420042a0d69f90da80b1cb00420010e808200441e0256a200a420042badf96dcb5c3bac700420010e808200441d0216a200b420042a7ecfac2b5f7ea19420010e808200441c0216a200b420042b0c1bad0f4e48603420010e808200441a0206a20184200429db1bce4dfb435420010e80820044190236a201d420042a0d69f90da80b1cb00420010e808200441c0246a2020420042badf96dcb5c3bac700420010e808200441f0256a200a420042a7ecfac2b5f7ea19420010e80820044180266a200a420042b0c1bad0f4e48603420010e808200441b0216a200b4200429db1bce4dfb435420010e80820044190206a2018420042e098f4e5e9ebfb03420010e808200441a0236a201d420042badf96dcb5c3bac700420010e808200441d0246a2020420042a7ecfac2b5f7ea19420010e808200441e0246a2020420042b0c1bad0f4e48603420010e80820044190266a200a4200429db1bce4dfb435420010e808200441a0216a200b420042e098f4e5e9ebfb03420010e80820044180206a20184200429e9981b4dab2e103420010e808200441b0236a201d420042a7ecfac2b5f7ea19420010e808200441c0236a201d420042b0c1bad0f4e48603420010e808200441f0246a20204200429db1bce4dfb435420010e808200441a0266a200a420042e098f4e5e9ebfb03420010e80820044190216a200b4200429e9981b4dab2e103420010e808200441f01f6a20184200429df893c0a486ae01420010e808200441901a6a20042903b04d2222420042b0c1bad0f4e48603420010e808200441e01a6a20042903d04d2239420042a7a7fbf49beaf607420010e808200441b01b6a20042903c84d223a420042a0d69f90da80b1cb00420010e808200441801c6a20042903c04d223b420042badf96dcb5c3bac700420010e808200441d01c6a20042903b84d223c420042a7ecfac2b5f7ea19420010e808200441c01c6a203c420042b0c1bad0f4e48603420010e808200441801a6a20224200429db1bce4dfb435420010e808200441d01a6a2039420042a0d69f90da80b1cb00420010e808200441a01b6a203a420042badf96dcb5c3bac700420010e808200441f01b6a203b420042a7ecfac2b5f7ea19420010e808200441e01b6a203b420042b0c1bad0f4e48603420010e808200441b01c6a203c4200429db1bce4dfb435420010e808200441f0196a2022420042e098f4e5e9ebfb03420010e808200441c01a6a2039420042badf96dcb5c3bac700420010e808200441901b6a203a420042a7ecfac2b5f7ea19420010e808200441801b6a203a420042b0c1bad0f4e48603420010e808200441d01b6a203b4200429db1bce4dfb435420010e808200441a01c6a203c420042e098f4e5e9ebfb03420010e808200441e0196a20224200429e9981b4dab2e103420010e808200441b01a6a2039420042a7ecfac2b5f7ea19420010e808200441a01a6a2039420042b0c1bad0f4e48603420010e808200441f01a6a203a4200429db1bce4dfb435420010e808200441c01b6a203b420042e098f4e5e9ebfb03420010e808200441901c6a203c4200429e9981b4dab2e103420010e808200441d0196a20224200429df893c0a486ae01420010e808200441e0106a200c420042ea81f582a8b53f420010e808200441d0126a200f420042bbda9284b7cbdd1b420010e808200441b0136a201042004288f5a7f5b28623420010e80820044190146a2011420042edd5d7bc83fb803c420010e808200441b0116a2012420042edc19ab7ab9cc0c700420010e808200441a0116a2012420042ea81f582a8b53f420010e808200441d0106a200c420042b9a6dff282e9ba01420010e808200441c0126a200f42004288f5a7f5b28623420010e808200441a0136a2010420042edd5d7bc83fb803c420010e80820044180146a2011420042edc19ab7ab9cc0c700420010e808200441f0136a2011420042ea81f582a8b53f420010e80820044190116a2012420042b9a6dff282e9ba01420010e808200441c0106a200c420042d8f8d29390ec01420010e808200441b0126a200f420042edd5d7bc83fb803c420010e80820044190136a2010420042edc19ab7ab9cc0c700420010e80820044180136a2010420042ea81f582a8b53f420010e808200441e0136a2011420042b9a6dff282e9ba01420010e80820044180116a2012420042d8f8d29390ec01420010e808200441b0106a200c420042ff91f789b6a19403420010e808200441a0126a200f420042edc19ab7ab9cc0c700420010e80820044190126a200f420042ea81f582a8b53f420010e808200441f0126a2010420042b9a6dff282e9ba01420010e808200441d0136a2011420042d8f8d29390ec01420010e808200441f0106a2012420042ff91f789b6a19403420010e808200441a0106a200c420042fff5f38289d9e103420010e808200441a0076a20042903f009224c20042903e00b7c220c20042903c00a7c220f20042903c00c7c221020042903d00b7c221120042903e008224e20042903c00b7c221220042903800a7c222220042903d00a7c223920042903b00c7c223a20042903900b224f20042903a00c7c223b20042903c0097c223c20042903900a7c224b20042903e00a7c224d20042903800c225120042903f00a7c225020042903a00b7c225220042903d0097c225420042903a00a7c225620042903800b225320042903b00a7c224720042903900c7c224820042903b00b7c224920042903e0097c224a423388200441800b6a41086a290300200441b00a6a41086a2903007c2047205354ad7c200441900c6a41086a2903007c2048204754ad7c200441b00b6a41086a2903007c2049204854ad7c200441e0096a41086a2903007c204a204954ad7c420d86847c2247423388200441800c6a41086a290300200441f00a6a41086a2903007c2050205154ad7c200441a00b6a41086a2903007c2052205054ad7c200441d0096a41086a2903007c2054205254ad7c200441a00a6a41086a2903007c2056205454ad7c2047205654ad7c420d86847c2250423388200441900b6a41086a290300200441a00c6a41086a2903007c203b204f54ad7c200441c0096a41086a2903007c203c203b54ad7c200441900a6a41086a2903007c204b203c54ad7c200441e00a6a41086a2903007c204d204b54ad7c2050204d54ad7c420d86847c223b423388200441e0086a41086a290300200441c00b6a41086a2903007c2012204e54ad7c200441800a6a41086a2903007c2022201254ad7c200441d00a6a41086a2903007c2039202254ad7c200441b00c6a41086a2903007c203a203954ad7c203b203a54ad7c420d86847c223a423388200441f0096a41086a290300200441e00b6a41086a2903007c200c204c54ad7c200441c00a6a41086a2903007c200f200c54ad7c200441c00c6a41086a2903007c2010200f54ad7c200441d00b6a41086a2903007c2011201054ad7c203a201154ad7c420d868442137e204a42ffffffffffffff03837c220c42ffffffffffffff0383220f4200200d420010e808200441f0076a20194200200c423388204742ffffffffffffff03837c221042137e225e420010e80820044180096a20164200205042ffffffffffffff0383221242137e2250420010e808200441a0086a20134200203b42ffffffffffffff0383223942137e2222420010e808200441d0066a200e4200203a42ffffffffffffff0383225242137e2211420010e80820044190076a200e4200200f420010e808200441e0076a200d42002010420010e808200441f0086a201942002050420010e80820044190086a201642002022420010e808200441c0066a201342002011420010e80820044180076a20134200200f420010e808200441d0076a200e42002010420010e80820044190096a200d42002012420010e80820044180086a201942002022420010e808200441b0066a201642002011420010e808200441f0066a20164200200f420010e808200441c0076a201342002010420010e808200441a0096a200e42002012420010e808200441b0086a200d42002039420010e808200441a0066a201942002011420010e808200441e0066a20194200200f420010e808200441b0076a201642002010420010e808200441b0096a201342002012420010e808200441c0086a200e42002039420010e808200441d0086a200d42002052420010e8082004200429038008224c2004290390097c220c20042903b0067c223a2004290380077c223b20042903d0077c223c20042903f008224e20042903e0077c224b2004290390087c224d20042903c0067c22542004290390077c225620042903f007224f20042903a0077c22472004290380097c224820042903a0087c224920042903d0067c224a423388200441f0076a41086a290300200441a0076a41086a2903007c2047204f54ad7c20044180096a41086a2903007c2048204754ad7c200441a0086a41086a2903007c2049204854ad7c200441d0066a41086a2903007c204a204954ad7c420d86847c2247423388200441f0086a41086a290300200441e0076a41086a2903007c204b204e54ad7c20044190086a41086a2903007c204d204b54ad7c200441c0066a41086a2903007c2054204d54ad7c20044190076a41086a2903007c2056205454ad7c2047205654ad7c420d86847c224b42ffffffffffffff03833703e046200420042903a006224920042903b0087c224d20042903f0067c225420042903c0077c225620042903a0097c2248204b42338820044180086a41086a29030020044190096a41086a2903007c200c204c54ad7c200441b0066a41086a2903007c203a200c54ad7c20044180076a41086a2903007c203b203a54ad7c200441d0076a41086a2903007c203c203b54ad7c204b203c54ad7c420d86847c220c42ffffffffffffff03833703e846200420042903e006224c20042903d0087c223a20042903b0077c223b20042903b0097c223c20042903c0087c224b200c423388200441a0066a41086a290300200441b0086a41086a2903007c204d204954ad7c200441f0066a41086a2903007c2054204d54ad7c200441c0076a41086a2903007c2056205454ad7c200441a0096a41086a2903007c2048205654ad7c200c204854ad7c420d86847c220c42ffffffffffffff03833703f0462004200c423388200441e0066a41086a290300200441d0086a41086a2903007c203a204c54ad7c200441b0076a41086a2903007c203b203a54ad7c200441b0096a41086a2903007c203c203b54ad7c200441c0086a41086a2903007c204b203c54ad7c200c204b54ad7c420d868442137e204a42ffffffffffffff03837c220c42ffffffffffffff03833703d0462004200c423388204742ffffffffffffff03837c3703d84620044190236a41086a290300215f200441a0206a41086a2903002160200429039023210c20042903a0202155200441c0246a41086a290300216120042903c0242157200441f0256a41086a290300216220042903f0252158200441c0216a41086a290300216320042903c021215920044180236a41086a2903002164200441b0206a41086a2903002165200429038023213a20042903b020215a200441b0246a41086a290300216620042903b024215b200441e0256a41086a290300216720042903e025215c200441d0216a41086a290300216820042903d021215d20042903a023213b200429039020214e20042903d024214f200429038026215120042903b0212153200441a0236a41086a290300216920044190206a41086a290300216a200441d0246a41086a290300216b20044180266a41086a290300216c200441b0216a41086a290300216d20042903b023213c200429038020214820042903e0242149200429039026214a20042903a021214c200441b0236a41086a290300216e20044180206a41086a290300216f200441e0246a41086a290300217020044190266a41086a2903002171200441a0216a41086a290300217220042903c023214b20042903f01f214d20042903f024215420042903a02621562004290390212147200441c0236a41086a2903002173200441f01f6a41086a2903002174200441f0246a41086a2903002175200441a0266a41086a290300217620044190216a41086a2903002177200441a8ca006a200441d0c6006a106b20042d00a84a410171106d2102200420042903b04d2278204720562054204b204d7c224d7c22547c22567c2247204c204a2049203c20487c22487c22497c224a7c224c20532051204f203b204e7c224e7c224f7c22517c2253205920582057200c20557c22557c22577c22587c2259205d205c205b203a205a7c225a7c225b7c225c7c225d423388206820672066206420657c205a203a54ad7c7c205b205a54ad7c7c205c205b54ad7c7c205d205c54ad7c420d86847c223a423388206320622061205f20607c2055200c54ad7c7c2057205554ad7c7c2058205754ad7c7c2059205854ad7c203a205954ad7c420d86847c2255423388206d206c206b2069206a7c204e203b54ad7c7c204f204e54ad7c7c2051204f54ad7c7c2053205154ad7c2055205354ad7c420d86847c223b423388207220712070206e206f7c2048203c54ad7c7c2049204854ad7c7c204a204954ad7c7c204c204a54ad7c203b204c54ad7c420d86847c223c423388207720762075207320747c204d204b54ad7c7c2054204d54ad7c7c2056205454ad7c7c2047205654ad7c203c204754ad7c420d868442137e205d42ffffffffffffff03837c224b42ffffffffffffff03838542002002ad42ff01837d220c832078853703b04d200420042903b84d224d204b423388203a42ffffffffffffff03837c85200c83204d853703b84d200420042903c04d223a205542ffffffffffffff038385200c83203a853703c04d200420042903c84d223a203b42ffffffffffffff038385200c83203a853703c84d200420042903d04d223a203c42ffffffffffffff038385200c83203a853703d04d20044190066a200f4200201820042903a01a225a20042903d0197c223a20042903f01a7c223b20042903c01b7c223c20042903901c7c224b20042903b01a225b20042903e0197c224d20042903801b7c225420042903d01b7c225620042903a01c7c224720042903c01a225c20042903f0197c224820042903901b7c224920042903e01b7c224a20042903b01c7c224c20042903d01a225d20042903801a7c224e20042903a01b7c224f20042903f01b7c225120042903c01c7c225320042903e01a225f20042903901a7c225520042903b01b7c225720042903801c7c225820042903d01c7c2259423388200441e01a6a41086a290300200441901a6a41086a2903007c2055205f54ad7c200441b01b6a41086a2903007c2057205554ad7c200441801c6a41086a2903007c2058205754ad7c200441d01c6a41086a2903007c2059205854ad7c420d86847c2255423388200441d01a6a41086a290300200441801a6a41086a2903007c204e205d54ad7c200441a01b6a41086a2903007c204f204e54ad7c200441f01b6a41086a2903007c2051204f54ad7c200441c01c6a41086a2903007c2053205154ad7c2055205354ad7c420d86847c224e423388200441c01a6a41086a290300200441f0196a41086a2903007c2048205c54ad7c200441901b6a41086a2903007c2049204854ad7c200441e01b6a41086a2903007c204a204954ad7c200441b01c6a41086a2903007c204c204a54ad7c204e204c54ad7c420d86847c2248423388200441b01a6a41086a290300200441e0196a41086a2903007c204d205b54ad7c200441801b6a41086a2903007c2054204d54ad7c200441d01b6a41086a2903007c2056205454ad7c200441a01c6a41086a2903007c2047205654ad7c2048204754ad7c420d86847c224d423388200441a01a6a41086a290300200441d0196a41086a2903007c203a205a54ad7c200441f01a6a41086a2903007c203b203a54ad7c200441c01b6a41086a2903007c203c203b54ad7c200441901c6a41086a2903007c204b203c54ad7c204d204b54ad7c420d868442137e205942ffffffffffffff03837c225442ffffffffffffff038385200c83201885223a420010e808200441d0036a201d204d42ffffffffffffff038385200c83201d85223b4200205e420010e808200441a0046a2020204842ffffffffffffff038385200c83202085223c42002050420010e808200441f0046a200a204e42ffffffffffffff038385200c83200a85224b42002022420010e808200441c0056a200b2054423388205542ffffffffffffff03837c85200c83200b85224d42002011420010e808200441b0056a204d4200200f420010e80820044180066a203a42002010420010e808200441c0036a203b42002050420010e80820044190046a203c42002022420010e808200441e0046a204b42002011420010e808200441d0046a204b4200200f420010e808200441a0056a204d42002010420010e808200441f0056a203a42002012420010e808200441b0036a203b42002022420010e80820044180046a203c42002011420010e808200441f0036a203c4200200f420010e808200441c0046a204b42002010420010e80820044190056a204d42002012420010e808200441e0056a203a42002039420010e808200441a0036a203b42002011420010e80820044190036a203b4200200f420010e808200441e0036a203c42002010420010e808200441b0046a204b42002012420010e80820044180056a204d42002039420010e808200441d0056a203a42002052420010e808200420042903b003225220042903f0057c220f2004290380047c221020042903d0047c221120042903a0057c221220042903c00322542004290380067c22222004290390047c223920042903e0047c223a20042903b0057c223b20042903d00322562004290390067c223c20042903a0047c224b20042903f0047c224d20042903c0057c2250423388200441d0036a41086a29030020044190066a41086a2903007c203c205654ad7c200441a0046a41086a2903007c204b203c54ad7c200441f0046a41086a2903007c204d204b54ad7c200441c0056a41086a2903007c2050204d54ad7c420d86847c223c423388200441c0036a41086a29030020044180066a41086a2903007c2022205454ad7c20044190046a41086a2903007c2039202254ad7c200441e0046a41086a2903007c203a203954ad7c200441b0056a41086a2903007c203b203a54ad7c203c203b54ad7c420d86847c222242ffffffffffffff03833703e046200420042903a003224d20042903e0057c223920042903f0037c223a20042903c0047c223b2004290390057c224b2022423388200441b0036a41086a290300200441f0056a41086a2903007c200f205254ad7c20044180046a41086a2903007c2010200f54ad7c200441d0046a41086a2903007c2011201054ad7c200441a0056a41086a2903007c2012201154ad7c2022201254ad7c420d86847c220f42ffffffffffffff03833703e8462004200429039003225220042903d0057c221020042903e0037c221120042903b0047c22122004290380057c2222200f423388200441a0036a41086a290300200441e0056a41086a2903007c2039204d54ad7c200441f0036a41086a2903007c203a203954ad7c200441c0046a41086a2903007c203b203a54ad7c20044190056a41086a2903007c204b203b54ad7c200f204b54ad7c420d86847c220f42ffffffffffffff03833703f0462004200f42338820044190036a41086a290300200441d0056a41086a2903007c2010205254ad7c200441e0036a41086a2903007c2011201054ad7c200441b0046a41086a2903007c2012201154ad7c20044180056a41086a2903007c2022201254ad7c200f202254ad7c420d868442137e205042ffffffffffffff03837c220f42ffffffffffffff03833703d0462004200f423388203c42ffffffffffffff03837c3703d846200441c0126a41086a290300215a200441d0106a41086a290300215b20042903c012211120042903d010214e200441a0136a41086a290300215c20042903a013214f20044180146a41086a290300215d2004290380142151200441a0116a41086a290300215e20042903a0112153200441d0126a41086a290300215f200441e0106a41086a290300216020042903d012211220042903e0102155200441b0136a41086a290300216120042903b013215720044190146a41086a29030021622004290390142158200441b0116a41086a290300216320042903b011215920042903b012212220042903c0102148200429039013214920042903f013214a200429039011214c200441b0126a41086a2903002164200441c0106a41086a290300216520044190136a41086a2903002166200441f0136a41086a290300216720044190116a41086a290300216820042903a012213920042903b0102152200429038013215420042903e01321562004290380112147200441a0126a41086a2903002169200441b0106a41086a290300216a20044180136a41086a290300216b200441e0136a41086a290300216c20044180116a41086a290300216d200429039012213a20042903a010214b20042903f012214d20042903d013215020042903f010216e20044190126a41086a290300216f200441a0106a41086a2903002170200441f0126a41086a2903002171200441d0136a41086a2903002172200441f0106a41086a2903002173200441a8ca006a200441d0c6006a106b20042d00a84a410171106d2102200420042903b04d221042f0ffffffffffff3f20042903d04d223b7d223c42338842137e42d0fdffffffffff3f20107d227442ffffffffffffff03837c8542002002ad42ff01837d220f8320108522103703b04d2004203b203b203c42ffffffffffffff038342f0ffffffffffff3f20042903c84d223c7d22754233887c85200f8385223b3703d04d20044180036a203e203b7d223e42338842137e204020107d224042ffffffffffffff03837c22104200201a206e2050204d203a204b7c223b7c224b7c224d7c2250204720562054203920527c22527c22547c22567c2247204c204a2049202220487c22487c22497c224a7c224c20532051204f2011204e7c224e7c224f7c22517c2253205920582057201220557c22557c22577c22587c2259423388206320622061205f20607c2055201254ad7c7c2057205554ad7c7c2058205754ad7c7c2059205854ad7c420d86847c2255423388205e205d205c205a205b7c204e201154ad7c7c204f204e54ad7c7c2051204f54ad7c7c2053205154ad7c2055205354ad7c420d86847c224e423388206820672066206420657c2048202254ad7c7c2049204854ad7c7c204a204954ad7c7c204c204a54ad7c204e204c54ad7c420d86847c2222423388206d206c206b2069206a7c2052203954ad7c7c2054205254ad7c7c2056205454ad7c7c2047205654ad7c2022204754ad7c420d86847c2212423388207320722071206f20707c203b203a54ad7c7c204b203b54ad7c7c204d204b54ad7c7c2050204d54ad7c2012205054ad7c420d868442137e205942ffffffffffffff03837c223a42ffffffffffffff038385200c83201a852211420010e808200420042903b84d221a42f0ffffffffffff3f201a7d223942ffffffffffffff038320744233887c85200f83201a85221a3703b84d200441c0006a201b201242ffffffffffffff038385200c83201b85221242002042201a7d223b42ffffffffffffff038320404233887c221a42137e420010e808200420042903c04d221b42f0ffffffffffff3f201b7d224b42ffffffffffffff038320394233887c85200f83201b8522393703c04d20044190016a201c202242ffffffffffffff038385200c83201c85221b4200204520397d222242ffffffffffffff0383203b4233887c221c42137e223b420010e8082004203c203c207542ffffffffffffff0383204b4233887c85200f838522393703c84d200441e0016a201e204e42ffffffffffffff038385200c83201e85220f4200204620397d221e42ffffffffffffff038320224233887c222242137e2239420010e808200441b0026a201f203a423388205542ffffffffffffff03837c85200c83201f85220c4200203e42ffffffffffffff0383201e4233887c221f42137e221e420010e808200441a0026a200c42002010420010e808200441f0026a20114200201a420010e808200441306a20124200203b420010e80820044180016a201b42002039420010e808200441d0016a200f4200201e420010e808200441c0016a200f42002010420010e80820044190026a200c4200201a420010e808200441e0026a20114200201c420010e808200441206a201242002039420010e808200441f0006a201b4200201e420010e808200441e0006a201b42002010420010e808200441b0016a200f4200201a420010e80820044180026a200c4200201c420010e808200441d0026a201142002022420010e808200441106a20124200201e420010e8082004201242002010420010e808200441d0006a201b4200201a420010e808200441a0016a200f4200201c420010e808200441f0016a200c42002022420010e808200441c0026a20114200201f420010e80820042004290300225620042903c0027c220c20042903507c220f20042903a0017c221020042903f0017c22112004290310224720042903d0027c221220042903607c221a20042903b0017c221b2004290380027c221c2004290320224820042903e0027c221e20042903707c221f20042903c0017c22222004290390027c22392004290330224920042903f0027c223a2004290380017c223b20042903d0017c223c20042903a0027c224b2004290340224a2004290380037c224d2004290390017c225020042903e0017c225220042903b0027c2254423388200441c0006a41086a29030020044180036a41086a2903007c204d204a54ad7c20044190016a41086a2903007c2050204d54ad7c200441e0016a41086a2903007c2052205054ad7c200441b0026a41086a2903007c2054205254ad7c420d86847c224d423388200441306a41086a290300200441f0026a41086a2903007c203a204954ad7c20044180016a41086a2903007c203b203a54ad7c200441d0016a41086a2903007c203c203b54ad7c200441a0026a41086a2903007c204b203c54ad7c204d204b54ad7c420d86847c223a423388200441206a41086a290300200441e0026a41086a2903007c201e204854ad7c200441f0006a41086a2903007c201f201e54ad7c200441c0016a41086a2903007c2022201f54ad7c20044190026a41086a2903007c2039202254ad7c203a203954ad7c420d86847c221e423388200441106a41086a290300200441d0026a41086a2903007c2012204754ad7c200441e0006a41086a2903007c201a201254ad7c200441b0016a41086a2903007c201b201a54ad7c20044180026a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c2212423388200441086a290300200441c0026a41086a2903007c200c205654ad7c200441d0006a41086a2903007c200f200c54ad7c200441a0016a41086a2903007c2010200f54ad7c200441f0016a41086a2903007c2011201054ad7c2012201154ad7c420d868442137e205442ffffffffffffff03837c220c42ffffffffffffff0383220f3703d0462004200c423388204d42ffffffffffffff03837c22103703d8462004201242ffffffffffffff038322113703f0462004201e42ffffffffffffff038322123703e8462004203a42ffffffffffffff0383221a3703e046200441a8ca006a200441d0c6006a106b2004201142f0ffffffffffff3f20117d221b42ffffffffffffff038342f0ffffffffffff3f20127d221c4233887c85420020042d00a84a410171106dad42ff01837d220c832011853703f04620042012201c42ffffffffffffff038342f0ffffffffffff3f201a7d22114233887c85200c832012853703e8462004201a201142ffffffffffffff038342f0ffffffffffff3f20107d22114233887c85200c83201a853703e04620042010201142ffffffffffffff038342d0fdffffffffff3f200f7d22114233887c85200c832010853703d8462004200f201b42338842137e201142ffffffffffffff03837c85200c83200f853703d046200441e0c4006a200441d0c6006a106b41002102034020044180c5006a20026a41003a0000200241016a220241c801470d000b20044188c9006a41186a2203200141186a29000037030020044188c9006a41106a2205200141106a29000037030020044188c9006a41086a2206200141086a2900003703002004200129000037038849200441d0c6006a20044188c9006a10f401200441d0c6006a41086a290300210c200441d0c6006a41106a290300210f200441d0c6006a41186a2903002110200441d0c6006a41206a290300211a200441f8c6006a290300211b20044180c7006a290300211120044188c7006a290300211220044190c7006a290300211c20044198c7006a290300211e200441a0c7006a290300211f20042802d446210120042802d046210220044180c5006a200441a8c7006a41f00010e9081a0240024020024101460d00200441f0ca006a20044180c5006a41f00010e9081a2004200f200c4233887c22224233882022200f54ad420d8684223a20107c223942ffffffffffffff03833703b048200420394233882039203a54ad420d8684223a201a7c223942ffffffffffffff03833703b848200420394233882039203a54ad420d8684223a201b7c223942ffffffffffffff03833703c048200420394233882039203a54ad420d868442137e200c42ffffffffffffff03837c223942ffffffffffffff03833703a04820042039423388202242ffffffffffffff03837c3703a84820044188c9006a41206a4200370300200342003703002005420037030020064200370300200442003703884920044180c5006a41206a420037030020044180c5006a41186a420037030020044180c5006a41106a420037030020044180c5006a41086a420037030020044200370380452004201220114233887c22224233882022201254ad420d8684223a201c7c22394233882039203a54ad420d8684223b201e7c223a423388203a203b54ad420d8684223c201f7c223b42ffffffffffffff03833703f0462004203a42ffffffffffffff03833703e8462004203942ffffffffffffff03833703e0462004203b423388203b203c54ad420d868442137e201142ffffffffffffff03837c2239423388202242ffffffffffffff03837c3703d8462004203942ffffffffffffff03833703d0460240200441a0c8006a20044188c9006a106c20044180c5006a200441d0c6006a106c72106d41ff01714101470d0020004101360200200041013a00040c020b200041a0016a201937030020004198016a201637030020004190016a201337030020004188016a200e37030020004180016a200d370300200041f8006a203d370300200041f0006a2043370300200041e8006a2044370300200041e0006a2041370300200041d8006a203f370300200041d0006a2023370300200041c8006a2021370300200041c0006a2017370300200041386a2015370300200041306a2014370300200041286a201d370300200041206a2020370300200041186a200a370300200041106a200b370300200041086a201837030020004190026a201f37030020004188026a201e37030020004180026a201c370300200041f8016a2012370300200041f0016a2011370300200041e8016a201b370300200041e0016a201a370300200041d8016a2010370300200041d0016a200f370300200041c8016a200c370300200041c0016a200441e0c4006a41186a290300370300200041b8016a200441e0c4006a41106a290300370300200041b0016a200441e0c4006a41086a290300370300200041a8016a20042903e04437030020004198026a200441f0ca006a41f00010e9081a200041003602000c010b2000200136020420004101360200200041186a20103e0200200041106a200f370200200041086a200c3702000b200441d0ce006a24000bbd6603047f237e067f230041d01f6b22022400200241801c6a20011070200241a81c6a200241801c6a106b41002103410121040340200120036a2d0000200241a81c6a20036a2d0000732205410020056b72417f7341800171410776106d2004712104200341016a22034120470d000b2004106d2103200241881f6a200241801c6a106b20022d00881f410171106d210402400240024002400240200341ff0171450d00200441ff01714101470d010b200241b81e6a21030c010b200241c81c6a200241801c6a4101106e200242f0ffffffffffff3f20022903e81c7d220642ffffffffffffff038342f0ffffffffffff3f20022903e01c7d22074233887c3703901d2002200742ffffffffffffff038342f0ffffffffffff3f20022903d81c22077d22084233887c3703881d2002200842ffffffffffffff038342f0ffffffffffff3f20022903d01c22087d22094233887c3703801d2002200942ffffffffffffff038342d1fdffffffffff3f20022903c81c22097d220a4233887c3703f81c2002200642338842137e200a42ffffffffffffff03837c3703f01c200242003703b01d200242003703b81d2002200942017c3703981d200220083703a01d200220073703a81d200220022903e01c3703b01d200220022903b81d20022903e81c7c3703b81d200241c01d6a200241981d6a4101106e200241b81e6a200241f01c6a4101106e200241f8156a20022903b81e2206420042ca8e9ae5dec6ac02420010e808200241f8186a20022903c01e220742137e4200428092f58893f9b701420010e808200241a8186a20022903c81e220842137e220b420042c486ffe299c731420010e808200241d8176a20022903d01e220a42137e220c420042d6fff8ffd98b8601420010e80820024188176a20022903d81e220d42137e2209420042c2a2aaa7fcfa9503420010e80820024188166a2006420042c2a2aaa7fcfa9503420010e808200241e8186a2007420042ca8e9ae5dec6ac02420010e80820024198186a200b4200428092f58893f9b701420010e808200241c8176a200c420042c486ffe299c731420010e808200241f8166a2009420042d6fff8ffd98b8601420010e80820024198166a2006420042d6fff8ffd98b8601420010e808200241d8186a2007420042c2a2aaa7fcfa9503420010e80820024188186a2008420042ca8e9ae5dec6ac02420010e808200241b8176a200c4200428092f58893f9b701420010e808200241e8166a2009420042c486ffe299c731420010e808200241a8166a2006420042c486ffe299c731420010e808200241c8186a2007420042d6fff8ffd98b8601420010e808200241f8176a2008420042c2a2aaa7fcfa9503420010e808200241a8176a200a420042ca8e9ae5dec6ac02420010e808200241d8166a20094200428092f58893f9b701420010e808200241b8166a20064200428092f58893f9b701420010e808200241b8186a2007420042c486ffe299c731420010e808200241e8176a2008420042d6fff8ffd98b8601420010e80820024198176a200a420042c2a2aaa7fcfa9503420010e808200241c8166a200d420042ca8e9ae5dec6ac02420010e808200241f8136a20022903c01d2208420020022903b816220e20022903c8167c220620022903b8187c220720022903e8177c22092002290398177c220a20022903d816220f20022903a8177c220c20022903a8167c220b20022903c8187c220d20022903f8177c221020022903b81722112002290388187c221220022903e8167c22132002290398167c221420022903d8187c2215200229039818221620022903e8187c221720022903c8177c221820022903f8167c22192002290388167c221a20022903f818221b20022903f8157c221c20022903a8187c221d20022903d8177c221e2002290388177c221f423388200241f8186a41086a290300200241f8156a41086a2903007c201c201b54ad7c200241a8186a41086a2903007c201d201c54ad7c200241d8176a41086a2903007c201e201d54ad7c20024188176a41086a2903007c201f201e54ad7c420d86847c221c42338820024198186a41086a290300200241e8186a41086a2903007c2017201654ad7c200241c8176a41086a2903007c2018201754ad7c200241f8166a41086a2903007c2019201854ad7c20024188166a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c2218423388200241b8176a41086a29030020024188186a41086a2903007c2012201154ad7c200241e8166a41086a2903007c2013201254ad7c20024198166a41086a2903007c2014201354ad7c200241d8186a41086a2903007c2015201454ad7c2018201554ad7c420d86847c2212423388200241d8166a41086a290300200241a8176a41086a2903007c200c200f54ad7c200241a8166a41086a2903007c200b200c54ad7c200241c8186a41086a2903007c200d200b54ad7c200241f8176a41086a2903007c2010200d54ad7c2012201054ad7c420d86847c220c42ffffffffffffff038320022903e01d220d7d42f0ffffffffffff3f7c220b42338842137e200c423388200241b8166a41086a290300200241c8166a41086a2903007c2006200e54ad7c200241b8186a41086a2903007c2007200654ad7c200241e8176a41086a2903007c2009200754ad7c20024198176a41086a2903007c200a200954ad7c200c200a54ad7c420d868442137e201f42feffffffffffff03837c220742ffffffffffffff038320087d42d0fdffffffffff3f7c221342ffffffffffffff03837c2206420010e808200241e8156a200b42ffffffffffffff0383201242ffffffffffffff038320022903d81d220c7d42f0ffffffffffff3f7c220a4233887c2217420020022903c81d220942137e420010e80820024198156a200a42ffffffffffffff0383201842ffffffffffffff038320022903d01d220a7d42f0ffffffffffff3f7c220b4233887c22144200200a42137e2215420010e808200241c8146a200b42ffffffffffffff03832007423388201c42ffffffffffffff03837c20097d42f0ffffffffffff3f7c22074233887c22124200200c42137e2210420010e808200241a8136a200742ffffffffffffff038320134233887c22074200200d42137e220b420010e80820024198136a200742002008420010e808200241e8136a200642002009420010e808200241d8156a201742002015420010e80820024188156a201442002010420010e808200241b8146a20124200200b420010e808200241a8146a201242002008420010e80820024188136a200742002009420010e808200241d8136a20064200200a420010e808200241c8156a201742002010420010e808200241f8146a20144200200b420010e808200241e8146a201442002008420010e80820024198146a201242002009420010e808200241f8126a20074200200a420010e808200241c8136a20064200200c420010e808200241b8156a20174200200b420010e808200241a8156a201742002008420010e808200241d8146a201442002009420010e80820024188146a20124200200a420010e808200241e8126a20074200200c420010e808200241b8136a20064200200d420010e808200220022903c815221c20022903d8137c220820022903f8147c220920022903a8147c220a2002290388137c220c20022903d815221d20022903e8137c220b2002290388157c220d20022903b8147c22102002290398137c221320022903e815221e20022903f8137c22152002290398157c221820022903c8147c221920022903a8137c221a423388200241e8156a41086a290300200241f8136a41086a2903007c2015201e54ad7c20024198156a41086a2903007c2018201554ad7c200241c8146a41086a2903007c2019201854ad7c200241a8136a41086a2903007c201a201954ad7c420d86847c2215423388200241d8156a41086a290300200241e8136a41086a2903007c200b201d54ad7c20024188156a41086a2903007c200d200b54ad7c200241b8146a41086a2903007c2010200d54ad7c20024198136a41086a2903007c2013201054ad7c2015201354ad7c420d86847c220b42ffffffffffffff03833703a01e200220022903b815221920022903c8137c220d20022903e8147c22102002290398147c221320022903f8127c2218200b423388200241c8156a41086a290300200241d8136a41086a2903007c2008201c54ad7c200241f8146a41086a2903007c2009200854ad7c200241a8146a41086a2903007c200a200954ad7c20024188136a41086a2903007c200c200a54ad7c200b200c54ad7c420d86847c220842ffffffffffffff03833703a81e200220022903a815221c20022903b8137c220920022903d8147c220a2002290388147c220c20022903e8127c220b2008423388200241b8156a41086a290300200241c8136a41086a2903007c200d201954ad7c200241e8146a41086a2903007c2010200d54ad7c20024198146a41086a2903007c2013201054ad7c200241f8126a41086a2903007c2018201354ad7c2008201854ad7c420d86847c220842ffffffffffffff03833703b01e20022008423388200241a8156a41086a290300200241b8136a41086a2903007c2009201c54ad7c200241d8146a41086a2903007c200a200954ad7c20024188146a41086a2903007c200c200a54ad7c200241e8126a41086a2903007c200b200c54ad7c2008200b54ad7c420d868442137e201a42ffffffffffffff03837c220842ffffffffffffff03833703901e20022008423388201542ffffffffffffff03837c3703981e200241a81f6a41106a4200370300200241a81f6a41186a4200370300200241a81f6a41206a4200370300200242003703b01f200242013703a81f200241b81e6a200241a81f6a200241901e6a106f20024198126a20022903981d220d420020022903c01e2208420010e808200241d80f6a200241e01e6a2903002209420020022903a01d221042137e420010e808200241b8106a200241b81e6a41206a2203290300220a420020022903a81d221342137e221a420010e80820024198116a200241b81e6a41186a2204290300220c420020022903b01d221842137e2219420010e808200241f8116a200241b81e6a41106a2205290300220b420020022903b81d221c42137e2215420010e808200241d8126a200b4200200d420010e80820024198106a200842002010420010e808200241a8106a20094200201a420010e80820024188116a200a42002019420010e808200241e8116a200c42002015420010e808200241c8126a200c4200200d420010e80820024188106a200b42002010420010e808200241e8106a200842002013420010e808200241f8106a200942002019420010e808200241d8116a200a42002015420010e808200241b8126a200a4200200d420010e808200241f80f6a200c42002010420010e808200241d8106a200b42002013420010e808200241b8116a200842002018420010e808200241c8116a200942002015420010e808200241a8126a20094200200d420010e808200241e80f6a200a42002010420010e808200241c8106a200c42002013420010e808200241a8116a200b42002018420010e80820024188126a20084200201c420010e808200241980d6a2006420020022903a81222202002290388127c220d20022903e80f7c221020022903c8107c221320022903a8117c221520022903c811222120022903b8117c221820022903b8127c221920022903f80f7c221a20022903d8107c221c20022903f810222220022903e8107c221d20022903d8117c221e20022903c8127c221f2002290388107c220e20022903a81022232002290398107c220f2002290388117c221120022903e8117c221620022903d8127c221b20022903d80f22242002290398127c222520022903b8107c22262002290398117c222720022903f8117c2228423388200241d80f6a41086a29030020024198126a41086a2903007c2025202454ad7c200241b8106a41086a2903007c2026202554ad7c20024198116a41086a2903007c2027202654ad7c200241f8116a41086a2903007c2028202754ad7c420d86847c2225423388200241a8106a41086a29030020024198106a41086a2903007c200f202354ad7c20024188116a41086a2903007c2011200f54ad7c200241e8116a41086a2903007c2016201154ad7c200241d8126a41086a2903007c201b201654ad7c2025201b54ad7c420d86847c220f423388200241f8106a41086a290300200241e8106a41086a2903007c201d202254ad7c200241d8116a41086a2903007c201e201d54ad7c200241c8126a41086a2903007c201f201e54ad7c20024188106a41086a2903007c200e201f54ad7c200f200e54ad7c420d86847c221d423388200241c8116a41086a290300200241b8116a41086a2903007c2018202154ad7c200241b8126a41086a2903007c2019201854ad7c200241f80f6a41086a2903007c201a201954ad7c200241d8106a41086a2903007c201c201a54ad7c201d201c54ad7c420d86847c2218423388200241a8126a41086a29030020024188126a41086a2903007c200d202054ad7c200241e80f6a41086a2903007c2010200d54ad7c200241c8106a41086a2903007c2013201054ad7c200241a8116a41086a2903007c2015201354ad7c2018201554ad7c420d868442137e202842ffffffffffffff03837c221042ffffffffffffff0383220d420010e808200241b8096a201842ffffffffffffff038322184200200742137e420010e808200241c80e6a201d42ffffffffffffff038322154200201242137e221c420010e808200241f80d6a200f42ffffffffffffff038322134200201442137e221a420010e808200241e80d6a2010423388202542ffffffffffffff03837c22104200201742137e2219420010e808200241d80d6a201042002006420010e808200241880d6a200d42002007420010e808200241980f6a20184200201c420010e808200241d80e6a20154200201a420010e808200241880e6a201342002019420010e808200241980e6a201342002006420010e808200241c80d6a201042002007420010e808200241f80c6a200d42002012420010e808200241a80f6a20184200201a420010e808200241e80e6a201542002019420010e808200241f80e6a201542002006420010e808200241a80e6a201342002007420010e808200241b80d6a201042002012420010e808200241e80c6a200d42002014420010e808200241b80f6a201842002019420010e808200241c80f6a201842002006420010e808200241880f6a201542002007420010e808200241b80e6a201342002012420010e808200241a80d6a201042002014420010e808200241d80c6a200d42002017420010e808200241e8066a20022903c80f222020022903d80c7c220620022903880f7c220720022903b80e7c221220022903a80d7c221420022903b80f222120022903e80c7c221720022903f80e7c221920022903a80e7c221a20022903b80d7c221c20022903a80f222220022903f80c7c221d20022903e80e7c221e20022903980e7c221f20022903c80d7c220e20022903980f222320022903880d7c220f20022903d80e7c221120022903880e7c221620022903d80d7c221b20022903b809222420022903980d7c222520022903c80e7c222620022903f80d7c222720022903e80d7c2228423388200241b8096a41086a290300200241980d6a41086a2903007c2025202454ad7c200241c80e6a41086a2903007c2026202554ad7c200241f80d6a41086a2903007c2027202654ad7c200241e80d6a41086a2903007c2028202754ad7c420d86847c2225423388200241980f6a41086a290300200241880d6a41086a2903007c200f202354ad7c200241d80e6a41086a2903007c2011200f54ad7c200241880e6a41086a2903007c2016201154ad7c200241d80d6a41086a2903007c201b201654ad7c2025201b54ad7c420d86847c220f423388200241a80f6a41086a290300200241f80c6a41086a2903007c201d202254ad7c200241e80e6a41086a2903007c201e201d54ad7c200241980e6a41086a2903007c201f201e54ad7c200241c80d6a41086a2903007c200e201f54ad7c200f200e54ad7c420d86847c221d423388200241b80f6a41086a290300200241e80c6a41086a2903007c2017202154ad7c200241f80e6a41086a2903007c2019201754ad7c200241a80e6a41086a2903007c201a201954ad7c200241b80d6a41086a2903007c201c201a54ad7c201d201c54ad7c420d86847c2217423388200241c80f6a41086a290300200241d80c6a41086a2903007c2006202054ad7c200241880f6a41086a2903007c2007200654ad7c200241b80e6a41086a2903007c2012200754ad7c200241a80d6a41086a2903007c2014201254ad7c2017201454ad7c420d868442137e202842ffffffffffffff03837c220742ffffffffffffff0383220642002008420010e808200241b8076a200942002007423388202542ffffffffffffff03837c220742137e420010e808200241d8076a200a4200200f42ffffffffffffff0383221242137e221c420010e80820024188086a200c4200201d42ffffffffffffff0383221942137e221a420010e808200241c8086a200b4200201742ffffffffffffff0383221742137e2214420010e808200241d8066a200b42002006420010e808200241a8076a200842002007420010e808200241c8076a20094200201c420010e808200241f8076a200a4200201a420010e808200241b8086a200c42002014420010e808200241c8066a200c42002006420010e80820024198076a200b42002007420010e808200241d8086a200842002012420010e808200241e8076a20094200201a420010e808200241a8086a200a42002014420010e808200241e8056a200a42002006420010e80820024188076a200c42002007420010e808200241e8086a200b42002012420010e80820024188096a200842002019420010e80820024198086a200942002014420010e80820024188056a200942002006420010e808200241f8066a200a42002007420010e808200241f8086a200c42002012420010e80820024198096a200b42002019420010e808200241a8096a200842002017420010e80820022d00b81e21292003200241801c6a41206a222a2903003703002004200241801c6a41186a222b2903003703002005200241801c6a41106a222c2903002208370300200241b81e6a41086a222d200241801c6a41086a222e2903002207370300200220022903801c22063703b81e2002200620022903801c7c22063703b81e202d2007202e2903007c220737030020052008202c2903007c220837030020042004290300202b2903007c220937030020032003290300202a2903007c220a370300200241880c6a200d42002006420010e808200241880a6a200a4200201042137e420010e808200241980a6a20094200201342137e2212420010e808200241e80a6a20084200201542137e220b420010e808200241b80b6a20074200201842137e220c420010e808200241c80b6a20074200200d420010e808200241980c6a200642002010420010e808200241f8096a200a42002012420010e808200241a80a6a20094200200b420010e808200241f80a6a20084200200c420010e808200241880b6a20084200200d420010e808200241d80b6a200742002010420010e808200241a80c6a200642002013420010e808200241e8096a200a4200200b420010e808200241b80a6a20094200200c420010e808200241c80a6a20094200200d420010e808200241980b6a200842002010420010e808200241e80b6a200742002013420010e808200241b80c6a200642002015420010e808200241d8096a200a4200200c420010e808200241c8096a200a4200200d420010e808200241d80a6a200942002010420010e808200241a80b6a200842002013420010e808200241f80b6a200742002015420010e808200241c80c6a200642002018420010e808200220022903c809221f20022903c80c7c220620022903d80a7c220720022903a80b7c220820022903f80b7c220920022903d809220e20022903b80c7c220a20022903c80a7c220c20022903980b7c220b20022903e80b7c220d20022903e809220f20022903a80c7c221020022903b80a7c221220022903880b7c221320022903d80b7c221420022903f809221120022903980c7c221520022903a80a7c221720022903f80a7c221820022903c80b7c221920022903880a221620022903880c7c221a20022903980a7c221c20022903e80a7c221d20022903b80b7c221e423388200241880a6a41086a290300200241880c6a41086a2903007c201a201654ad7c200241980a6a41086a2903007c201c201a54ad7c200241e80a6a41086a2903007c201d201c54ad7c200241b80b6a41086a2903007c201e201d54ad7c420d86847c221a423388200241f8096a41086a290300200241980c6a41086a2903007c2015201154ad7c200241a80a6a41086a2903007c2017201554ad7c200241f80a6a41086a2903007c2018201754ad7c200241c80b6a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2215423388200241e8096a41086a290300200241a80c6a41086a2903007c2010200f54ad7c200241b80a6a41086a2903007c2012201054ad7c200241880b6a41086a2903007c2013201254ad7c200241d80b6a41086a2903007c2014201354ad7c2015201454ad7c420d86847c2210423388200241d8096a41086a290300200241b80c6a41086a2903007c200a200e54ad7c200241c80a6a41086a2903007c200c200a54ad7c200241980b6a41086a2903007c200b200c54ad7c200241e80b6a41086a2903007c200d200b54ad7c2010200d54ad7c420d86847c220a423388200241c8096a41086a290300200241c80c6a41086a2903007c2006201f54ad7c200241d80a6a41086a2903007c2007200654ad7c200241a80b6a41086a2903007c2008200754ad7c200241f80b6a41086a2903007c2009200854ad7c200a200954ad7c420d868442137e201e42ffffffffffffff03837c220642ffffffffffffff03833703e81d20022006423388201a42ffffffffffffff03837c3703f01d2002200a42ffffffffffffff038322063703881e2002201042ffffffffffffff038322073703801e2002201542ffffffffffffff0383220c3703f81d200241881f6a200241e81d6a106b2002200642f0ffffffffffff3f20067d220942ffffffffffffff038342f0ffffffffffff3f20077d22084233887c85420020022d00881f410171106dad42ff01837d220a8320068522063703881e20022007200842ffffffffffffff038342f0ffffffffffff3f200c7d220b4233887c85200a8320078522073703801e200220022903e81d2208200942338842137e42d0fdffffffffff3f20087d220d42ffffffffffffff03837c85200a8320088522083703e81d200220022903f01d220942f0ffffffffffff3f20097d221042ffffffffffffff0383200d4233887c85200a8320098522093703f01d2002200c200b42ffffffffffffff038320104233887c85200a83200c85220a3703f81d20024198046a200229038805221b20022903a8097c220c20022903f8067c220b20022903f8087c220d2002290398097c221020022903980822252002290388097c221220022903e8057c22132002290388077c221420022903e8087c221520022903e807222620022903d8087c221720022903a8087c221820022903c8067c22192002290398077c221a20022903c807222720022903a8077c221c20022903f8077c221d20022903b8087c221e20022903d8067c221f20022903b807222820022903e8067c220e20022903d8077c220f2002290388087c221120022903c8087c2216423388200241b8076a41086a290300200241e8066a41086a2903007c200e202854ad7c200241d8076a41086a2903007c200f200e54ad7c20024188086a41086a2903007c2011200f54ad7c200241c8086a41086a2903007c2016201154ad7c420d86847c220e423388200241c8076a41086a290300200241a8076a41086a2903007c201c202754ad7c200241f8076a41086a2903007c201d201c54ad7c200241b8086a41086a2903007c201e201d54ad7c200241d8066a41086a2903007c201f201e54ad7c200e201f54ad7c420d86847c221c423388200241e8076a41086a290300200241d8086a41086a2903007c2017202654ad7c200241a8086a41086a2903007c2018201754ad7c200241c8066a41086a2903007c2019201854ad7c20024198076a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c221742338820024198086a41086a29030020024188096a41086a2903007c2012202554ad7c200241e8056a41086a2903007c2013201254ad7c20024188076a41086a2903007c2014201354ad7c200241e8086a41086a2903007c2015201454ad7c2017201554ad7c420d86847c221842338820024188056a41086a290300200241a8096a41086a2903007c200c201b54ad7c200241f8066a41086a2903007c200b200c54ad7c200241f8086a41086a2903007c200d200b54ad7c20024198096a41086a2903007c2010200d54ad7c2018201054ad7c420d868442137e201642ffffffffffffff03837c221042ffffffffffffff0383220c420020022903f01c220b420010e808200241e8046a20022903901d220d42002010423388200e42ffffffffffffff03837c221042137e420010e80820024188066a20022903881d22124200201c42ffffffffffffff0383221542137e221c420010e808200241b8056a20022903801d22134200201742ffffffffffffff0383221942137e221a420010e808200241c8036a20022903f81c22144200201842ffffffffffffff0383221842137e2217420010e80820024188046a20144200200c420010e808200241d8046a200b42002010420010e808200241f8056a200d4200201c420010e808200241a8056a20124200201a420010e808200241b8036a201342002017420010e808200241f8036a20134200200c420010e808200241c8046a201442002010420010e80820024198066a200b42002015420010e80820024198056a200d4200201a420010e808200241a8036a201242002017420010e808200241e8036a20124200200c420010e808200241b8046a201342002010420010e808200241a8066a201442002015420010e808200241c8056a200b42002019420010e808200241c8026a200d42002017420010e808200241d8036a200d4200200c420010e808200241a8046a201242002010420010e808200241b8066a201342002015420010e808200241d8056a201442002019420010e808200241f8046a200b42002018420010e8082002200229039805221c2002290398067c220c20022903a8037c220b20022903f8037c221020022903c8047c221220022903f805221d20022903d8047c220d20022903a8057c221320022903b8037c22142002290388047c221520022903e804221e2002290398047c22172002290388067c221820022903b8057c221920022903c8037c221a423388200241e8046a41086a29030020024198046a41086a2903007c2017201e54ad7c20024188066a41086a2903007c2018201754ad7c200241b8056a41086a2903007c2019201854ad7c200241c8036a41086a2903007c201a201954ad7c420d86847c2217423388200241f8056a41086a290300200241d8046a41086a2903007c200d201d54ad7c200241a8056a41086a2903007c2013200d54ad7c200241b8036a41086a2903007c2014201354ad7c20024188046a41086a2903007c2015201454ad7c2017201554ad7c420d86847c221342ffffffffffffff0383220d3703a01e200220022903c802221d20022903c8057c221420022903e8037c221520022903b8047c221820022903a8067c2219201342338820024198056a41086a29030020024198066a41086a2903007c200c201c54ad7c200241a8036a41086a2903007c200b200c54ad7c200241f8036a41086a2903007c2010200b54ad7c200241c8046a41086a2903007c2012201054ad7c2013201254ad7c420d86847c220c42ffffffffffffff038322103703a81e200220022903d803221e20022903f8047c220b20022903a8047c221220022903b8067c221320022903d8057c221c200c423388200241c8026a41086a290300200241c8056a41086a2903007c2014201d54ad7c200241e8036a41086a2903007c2015201454ad7c200241b8046a41086a2903007c2018201554ad7c200241a8066a41086a2903007c2019201854ad7c200c201954ad7c420d86847c220c42ffffffffffffff038322143703b01e2002200c423388200241d8036a41086a290300200241f8046a41086a2903007c200b201e54ad7c200241a8046a41086a2903007c2012200b54ad7c200241b8066a41086a2903007c2013201254ad7c200241d8056a41086a2903007c201c201354ad7c200c201c54ad7c420d868442137e201a42ffffffffffffff03837c220b42ffffffffffffff0383220c3703901e2002200b423388201742ffffffffffffff03837c220b3703981e20024188016a200c42002008420010e808200241d8016a20064200200b42137e420010e808200241e8026a20074200200d42137e2215420010e80820024188026a200a4200201042137e2213420010e808200241386a20094200201442137e2212420010e808200241f8006a20094200200c420010e808200241c8016a20084200200b420010e808200241d8026a200642002015420010e808200241f8016a200742002013420010e808200241286a200a42002012420010e808200241e8006a200a4200200c420010e808200241b8016a20094200200b420010e808200241f8026a20084200200d420010e808200241e8016a200642002013420010e808200241186a200742002012420010e808200241d8006a20074200200c420010e808200241a8016a200a4200200b420010e80820024188036a20094200200d420010e80820024198026a200842002010420010e808200241086a200642002012420010e808200241c8006a20064200200c420010e80820024198016a20074200200b420010e80820024198036a200a4200200d420010e808200241a8026a200942002010420010e808200241b8026a200842002014420010e808200220022903e801221520022903f8027c220620022903187c220720022903687c220820022903b8017c220920022903d802221720022903c8017c220a20022903f8017c220c20022903287c220b20022903787c220d20022903d80122182002290388017c221020022903e8027c22122002290388027c221320022903387c2214423388200241d8016a41086a29030020024188016a41086a2903007c2010201854ad7c200241e8026a41086a2903007c2012201054ad7c20024188026a41086a2903007c2013201254ad7c200241386a41086a2903007c2014201354ad7c420d86847c2210423388200241d8026a41086a290300200241c8016a41086a2903007c200a201754ad7c200241f8016a41086a2903007c200c200a54ad7c200241286a41086a2903007c200b200c54ad7c200241f8006a41086a2903007c200d200b54ad7c2010200d54ad7c420d86847c220a42ffffffffffffff03833703b81f2002200229030822132002290398027c220c20022903587c220b20022903a8017c220d2002290388037c2212200a423388200241e8016a41086a290300200241f8026a41086a2903007c2006201554ad7c200241186a41086a2903007c2007200654ad7c200241e8006a41086a2903007c2008200754ad7c200241b8016a41086a2903007c2009200854ad7c200a200954ad7c420d86847c220642ffffffffffffff03833703c01f20022002290348221520022903b8027c22072002290398017c22082002290398037c220920022903a8027c220a2006423388200241086a41086a29030020024198026a41086a2903007c200c201354ad7c200241d8006a41086a2903007c200b200c54ad7c200241a8016a41086a2903007c200d200b54ad7c20024188036a41086a2903007c2012200d54ad7c2006201254ad7c420d86847c220642ffffffffffffff03833703c81f20022006423388200241c8006a41086a290300200241b8026a41086a2903007c2007201554ad7c20024198016a41086a2903007c2008200754ad7c20024198036a41086a2903007c2009200854ad7c200241a8026a41086a2903007c200a200954ad7c2006200a54ad7c420d868442137e201442ffffffffffffff03837c220642ffffffffffffff03833703a81f20022006423388201042ffffffffffffff03837c3703b01f4200210602402029450d00200241881f6a200241a81f6a106b4200210620022d00881f410171106d41ff01714101460d00200241d01e6a4200370300200241c81e6a4200370300200241c01e6a4200370300200242003703b81e200241881f6a200241901e6a106b200241b81e6a4101722129410021054100210341012104024003402005200241881f6a20036a2d0000732205410020056b72417f7341800171410776106d20047121042003411f460d01202920036a2d00002105200341016a21030c000b0b420021062004106d41ff01714101460d00200241b81e6a41206a200241e81d6a41206a290300370300200241b81e6a41186a200241e81d6a41186a290300370300200241b81e6a41106a200241e81d6a41106a290300370300200241b81e6a41086a200241e81d6a41086a290300370300200241e81e6a200241901e6a41086a290300370300200241f01e6a200241901e6a41106a290300370300200241f81e6a200241901e6a41186a290300370300200241801f6a200241901e6a41206a290300370300200220022903e81d3703b81e200220022903901e3703e01e200241881b6a41206a200241a81f6a41206a290300370300200241881b6a41186a200241a81f6a41186a290300370300200241881b6a41106a200241a81f6a41106a290300370300200241881b6a41086a200241a81f6a41086a290300370300200220022903a81f3703881b200241b01b6a200241b81e6a41d00010e9081a420121060b200241b81e6a210320064200520d010b200241b01a6a410f6a2003410f6a290000370000200241b01a6a41086a200341086a290000370300200220032900003703b01a200241b5196a200241b01a6a41d30010e9081a41012103200041013a0004200020022900b5193700052000410d6a200241b5196a41086a290000370000200041146a200241b5196a410f6a2900003700000c010b200241b01a6a41036a200241b01b6a41d00010e9081a200241881a6a41206a2203200241881b6a41206a290300370300200241881a6a41186a2204200241881b6a41186a290300370300200241881a6a41106a2205200241881b6a41106a290300370300200241881a6a41086a2229200241881b6a41086a290300370300200220022903881b3703881a200241b5196a200241b01a6a41d30010e9081a20024188196a41206a222a200329030037030020024188196a41186a2203200429030037030020024188196a41106a2204200529030037030020024188196a41086a22052029290300370300200220022903881a37038819200041086a200241b5196a41036a41d00010e9081a200041e0006a4200370300200041d8006a4201370300200041e8006a4200370300200041f0006a4200370300200041f8006a420037030020004180016a20022903881937000020004188016a200529030037000020004190016a200429030037000020004198016a2003290300370000200041a0016a202a290300370000200041a8016a2001290000370000200041b0016a200141086a290000370000200041b8016a200141106a290000370000200041c0016a200141186a290000370000410021030b20002003360200200241d01f6a24000bd60101027f230041106b2202240002400240024002400240024020002d00000e050001020304050b200241003a000f20012002410f6a410110742001200041016a412010740c040b200241013a000f20012002410f6a410110740c030b200241023a000f20012002410f6a41011074200041046a28020021032000410c6a28020022002001107620012003200010740c020b200241033a000f20012002410f6a410110742001200041016a412010740c010b200241043a000f20012002410f6a410110742001200041016a411410740b200241106a24000bb40201067f230041106b22022400024002402001280200220328020422044104490d0020032802002205280000210620032004417c6a3602042003200541046a3602002002200110e8010240024020022802002203450d00200241086a2802002105200228020421042001280200220128020422074104490d012000200436020820002003360204200020063602002000410c6a200536020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c030b200041003602040c020b2000410036020402402005450d002005410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2004450d012004410c6c450d012003102e0c010b200041003602040b200241106a24000baa0201067f230041106b2202240002400240200128020422034104490d0020012802002204280000210520012003417c6a3602042001200441046a3602002002200110e3010240024020022802002203450d00200241086a280200210620022802042104200128020422074104490d012000200436020820002003360204200020053602002000410c6a200636020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c030b200041003602040c020b2000410036020402402006450d002006410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2004450d012004410c6c450d012003102e0c010b200041003602040b200241106a24000bd007020e7f047e230041b0046b22022400200128020c2103200128020821042001280204210520012802002106200241286a200010f901200241e0016a200228022822002002280230220710fa01200241f0036a41086a2208200241e0016a41086a290300370300200241f0036a41106a2209200241e0016a41106a290300370300200241f0036a41186a220a200241e0016a41186a290300370300200241f0036a41206a220b200241e0016a41206a290300370300200241f0036a41286a220c200241e0016a41286a290300370300200241f0036a41306a220d200241e0016a41306a290300370300200241f0036a41386a220e200241e0016a41386a290300370300200220022903e0013703f00320022d00a002210120024188036a200241e0016a41c1006a41e70010e9081a02402001410646220f0d00200241386a41386a200e290300370300200241386a41306a200d290300370300200241386a41286a200c290300370300200241386a41206a200b290300370300200241386a41186a200a290300370300200241386a41106a2009290300370300200241386a41086a2008290300370300200220022903f003370338200241386a41c1006a20024188036a41e70010e9081a0b200220013a0078410021010240200f0d0002402006280200220f290300221020022903382211542206200f41086a2903002212200241386a41086a220829030022135420122013511b0d00200f201020117d370300200f201220137d2006ad7d370308200241023a0078200241186a200241c0016a2002290368200241f0006a29030010fb012005280200210f20042802002106200242f0f2bda1a7ee9cb9f9003703f00320022006360290032002410236028c03200241e2b8c00036028803200241e0016a200241f0036a20024188036a10fc01200241086a200241e0016a2002290338200829030010fd01200f427f200f290300221220022903087c221320132012542206200f41086a22082903002212200241086a41086a2903007c2006ad7c221320125420132012511b22061b3703002008427f201320061b370300200241ec016a2004280200360200200241e0016a41086a41023a0000200241153a00e001200241e0016a10fe010c010b41012101200328020041013a00000b200241e0016a200241386a41a80110e9081a0240024020022d00a0024106470d002000200710ff010c010b20024100360290032002420137038803200241e0016a20024188036a10800220002007200228028803220f20022802900310b201200228028c03450d00200f102e0b0240200228022c450d002000102e0b200241b0046a240020010b870201037f230041d0006b22022400200241086a41bad7c7004108108102200241186a419dfec6004108108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bd41205047f067e017f027e0a7f230041a0026b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041063a00400c010b200328020c21042003200341086a41086a28020036026c20032001360268200341186a200341e8006a109301024002400240024020032d00184101460d0020034190016a200341316a290000370300200341f8006a41106a200341296a290000370300200341f8006a41086a200341216a29000037030020032003290019370378200328026c22024110490d0020032003280268220541106a3602682003200241706a220636026c20064110490d00200541086a2900002107200529000021082003200541206a3602682003200241606a220636026c20064110490d00200541186a29000021092005290010210a2003200541306a3602682003200241506a220636026c20064110490d00200541286a290000210b2005290020210c2003200241406a220d36026c2003200541c0006a2206360268200d450d00200541386a290000210e2005290030210f2003200241bf7f6a36026c2003200641016a36026841002102024002400240024020062d00000e06060500010203040b410221020c050b200341186a200341e8006a10930120032d00184101460d02200341b8016a41186a200341316a290000370300200341b8016a41106a200341296a290000370300200341b8016a41086a200341216a290000370300200341b4016a41026a200341d8016a41026a2d00003a000020034198016a41086a200341f8016a41086a29000037030020034198016a41106a200341f8016a41106a29000037030020034198016a41186a200341f8016a41186a280000360200200320032900193703b801200320032f00d8013b01b401200320032900f80137039801410321020c040b200341186a200341e8006a10930120032d00184101460d01200341f8016a41186a2205200341316a290000370300200341f8016a41106a2206200341296a290000370300200341f8016a41086a220d200341216a290000370300200320032900193703f80141042102200328026c22104104490d01200341b8016a41086a200d290300370300200341b8016a41106a2006290300370300200341b8016a41186a2005290300370300200341b4016a41026a2003419c026a41026a2d00003a0000200320032903f8013703b80120032802682205280000210d20032010417c6a36026c2003200541046a360268200320032f009c023b01b40120034198016a41186a200341d8016a41186a28020036020020034198016a41106a200341d8016a41106a29020037030020034198016a41086a200341d8016a41086a290200370300200320032902d801370398010c030b200341186a200341e8006a10930120032d00184101460d00200341f8016a41186a200341316a290000370300200341f8016a41106a200341296a290000370300200341f8016a41086a200341216a290000370300200320032900193703f801200341186a200341e8006a10930120032d00184101460d002003419c026a41026a220220032d001b3a0000200341d8016a41086a200341186a41106a290300370300200341d8016a41106a200341186a41186a290300370300200341d8016a41186a200341386a2d00003a0000200320032f00193b019c022003200341186a41086a2903003703d801200328026c22064104490d00200328021c210d200341b8016a41086a200341f8016a41086a290300370300200341b8016a41106a200341f8016a41106a290300370300200341b8016a41186a200341f8016a41186a290300370300200341b4016a41026a20022d00003a000020034198016a41186a200341d8016a41186a2d00003a000020034198016a41106a200341d8016a41106a29030037030020034198016a41086a200341d8016a41086a290300370300200320032903f8013703b801200320032f019c023b01b401200320032903d8013703980120032802682202280000210520032006417c6a36026c2003200241046a360268200341b3016a200341f5016a41026a2d00003a0000200320032f00f5013b00b101410521020c020b20034100360220200342013703182003410a3602fc01200320033602f8012003200341186a3602b801200341d4006a410136020020034201370244200341909dc5003602402003200341f8016a360250200341b8016a419cebc000200341c0006a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b410621020c020b410121020b200341c0006a41186a2206200341b8016a41186a290300370300200341c0006a41106a2210200341b8016a41106a290300370300200341c0006a41086a2211200341b8016a41086a290300370300200341f4006a41026a2212200341b4016a41026a2d00003a0000200341d8016a41086a221320034198016a41086a290300370300200341d8016a41106a221420034198016a41106a290300370300200341d8016a41186a221520034198016a41186a280200360200200320032903b801370340200320032f01b4013b017420032003290398013703d801200341f8016a41086a2216200341f8006a41086a290300370300200341f8016a41106a2217200341f8006a41106a290300370300200341f8016a41186a2218200341f8006a41186a290300370300200341e2006a20122d00003a0000200320032903783703f801200320032f01743b0160200041386a200e3703002000200f370330200041286a200b3703002000200c370320200041186a20093703002000200a3703102000200737030820002008370300200341186a411f6a2212200341c0006a411f6a280000360000200341186a41186a22192006290300370300200341186a41106a22062010290300370300200341186a41086a2210201129030037030020032003290340370318200041e4006a200d360000200041e0006a2012280000360000200041d9006a2019290300370000200041d1006a2006290300370000200041c9006a201029030037000020002003290318370041200041e8006a20032903d801370000200041f0006a2013290300370000200041f8006a201429030037000020004180016a201528020036000020004184016a2005360000200041a0016a201829030037000020004198016a201729030037000020004190016a201629030037000020004188016a20032903f8013700000b200020023a00402004450d002001102e0b200341a0026a24000bf21104027f097e047f087e230041d0026b2204240002400240200220038450450d0042002102420021030c010b200441f0006a200110c802200441d0016a20042802702205200428027810c902200441f0016a2903002106200441e8016a2903002107200441e0016a290300210820042903d801210920042903d001210a02402004280274450d002005102e0b200a4201520d002009200784200820068484500d00200441f0006a200110c802200441d0016a20042802702205200428027810c902200441d0016a41386a290300210b200441d0016a41306a2903002107200441d0016a41286a2903002108200441d0016a41206a290300210c200441d0016a41186a290300210d200441d0016a41106a290300210a20044190026a290300210e20042903d801210620042903d0012109200441206a41086a200441a0026a290300370300200420044198026a2903003703200240024020094201510d004200210e200441306a41386a4200370300200441306a41306a4200370300200441306a41286a4200370300200441306a41206a4200370300200441306a41186a4200370300200441306a41106a4200370300200441306a41086a4200370300200442003703304200210842002107420021064200210a0c010b200441306a41286a2007370300200441306a41306a200b37030020042008370350200420063703302004200e3703682004200d3703402004200a3703382004200c3703480b02402004280274450d002005102e0b024002402006200a844200520d0020082004290340842007200441c8006a29030084844200520d002004290360200441e8006a2903008450450d004200210d410021050c010b200441c0006a2903002106200441e0006a290300210c200441d8006a2903002108200441d0006a290300210b20042903382107200429033021094201210d2004290348210a410121050b0240200d420152220f450d004200210b420021084200210c4200210e420021064200210a42002109420021070b200441f8016a2210200837030020044180026a2211200c370300200441e8016a200a2003200a2006200256200a200356200a2003511b22121b22087d20062002200620121b220a54ad7d220d3703002004200b3703f00120042006200a7d22133703e0012004427f200720087c2009200a7c220b2009542212ad7c22062012200620075420062007511b22121b22063703d8012004427f200b20121b22073703d001200fad210b02400240427f200720137c22092009200754220f2006200d7c200fad7c220920065420092006511b220f1b220c42ffc7afa02556427f2009200f1b22094200522009501b0d0020072013842006200d8484220d50210f42002113200d420052ad210d0c010b2011290300211420102903002115200441f0016a2903002116200441e0016a290300211720042903e801211820042903d801211920042903d001211a420121134200210d4101210f0b200441a8016a200837030020044198016a200937030020044190016a2212200c37030020044180016a20063703002004200a3703a001200420073703782004200d370388012004200b37037002400240024020052013420152720d00200420013602d0012001200441d0016a10bd060c010b0240200541017322052013420151720d00200420013602d0012001200441d0016a10be0641ff017122054103460d01024020050e03030200030b200f0d03200420123602d001200441d0016a10cc020c030b20134201522005710d010b200441b0016a200110c802200441d0016a20042802b001220520042802b801220f10c90220042903d001210a200441206a41086a2212200441a0026a290300370300200420044198026a29030037032002400240200a4201510d00200441c0016a41086a4200370300200442003703c0010c010b200441c0016a41086a2012290300370300200420042903203703c0010b024020134201510d004200211a420021194200211642002115420021144200210e42002117420021180b20044180026a2015370300200441d0016a41286a2016370300200441f0016a2018370300200441e8016a2017370300200441d0016a41106a201937030020044190026a200e37030020044198026a20042903c001370300200441d0016a41386a2014370300200441a0026a200441c0016a41086a2903003703002004201a3703d801200442013703d0012005200f200441d0016a41086a10c805024020042802b401450d002005102e0b200441f0006a41106a2903002106200441f0006a41286a2903002109200441f0006a41386a290300210820042903782107200429039001210c20042903a001210a2004290370210b200429038801210d0b0240200b4201520d0020044188026a200637030020044180026a2007370300200441d0016a41086a41003a0000200441d9016a2001290000370000200441e1016a200141086a290000370000200441e9016a200141106a290000370000200441f1016a200141186a290000370000200441033a00d001200441d0016a10fe010b02400240200d50450d00420021060c010b200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d001420121060b200441186a200441d0016a41186a22052903002207370300200441106a200441d0016a41106a220f290300220b370300200441086a200441d0016a41086a2212290300220d370300200420042903d001220e37030020044180026a22102009370300200441f8016a2211200c370300200f200d3703002005200b370300200441f0016a2007370300200420063703d0012004200e3703d801200441d0016a10d204024020042903d001500d0020042011360270200441f0006a10cc020b20044188026a20083703002010200a370300201241063a0000200441d9016a2001290000370000200441e1016a200141086a290000370000200441e9016a200141106a290000370000200441f1016a200141186a290000370000200441033a00d001200320087d2002200a54ad7d21032002200a7d2102200441d0016a10fe010b2000200237030020002003370308200441d0026a24000b930301037f230041e0006b22032400200341c0006a200241086a2802003602002003200229020037033820032001360230200341edde91e30636023402400240200341306a410c6a2802002204410c6a2202417f4c0d000240024020020d00410121050c010b2002102c2205450d020b200341003602502003200236024c20032005360248200341c8006a200341306a41047241041074200341c8006a200141081074200328023821022004200341c8006a1076200341c8006a2002200410742003200341c0006a280200360208200341c8006a200341086a41041074200328024821022003200328025036025c20032002360258200341086a200341d8006a10d0040240200328024c450d002002102e0b0240024020032d00084101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002003290009370000200041186a200341216a290000370000200041106a200341196a290000370000200041086a200341116a2900003700000b200341e0006a24000f0b1038000b1036000b9c1005027f0c7e017f047e017f230041d0026b22042400024002402002200384500d00200441e0006a200110c802200441d0016a20042802602205200428026810c902200441d0016a41386a2903002106200441d0016a41306a2903002107200441d0016a41286a2903002108200441d0016a41206a2903002109200441d0016a41186a290300210a200441d0016a41106a290300210b20044190026a290300210c20042903d801210d20042903d001210e200441a0016a41086a200441a0026a290300370300200420044198026a2903003703a00102400240200e4201510d004200210c200441206a41386a4200370300200441206a41306a4200370300200441206a41286a4200370300200441206a41206a4200370300200441206a41186a4200370300200441206a41106a4200370300200441206a41086a420037030020044200370320420021094200210842002107420021064200210d4200210b4200210a4200210f420021104200210e420021110c010b200441206a41206a2008370300200441206a41286a2007370300200441206a41106a200a370300200441206a41306a2006370300200420093703382004200d3703202004200c3703582004200b3703282008210f20072110200d210e200b21110b02402004280264450d002005102e0b02400240200e2011844200520d00200f2004290330842010200441386a29030084844200520d002004290350200441d8006a2903008450450d004200210e410021120c010b4201210e410121120b0240200e4201510d004200210a4200210c420021094200210842002107420021064200210d4200210b0b0240200e4201510d0020024280c8afa0255441002003501b0d010b200441f0016a2008370300200441f8016a200737030020044180026a2006370300200420093703e8012004200a3703e0012004200b200b20037c200d20027c220f200d542205ad7c221120052011200b542011200b511b22051b22113703d8012004200d200f20051b220d3703d0014200210f4200200320051b21034200200220051b210b42012110200e420152ad211302400240427f200d200a7c22022002200d542205201120097c2005ad7c220220115420022011511b22051b221442ffc7afa02556427f200220051b22024200522002501b0d00200d200a84201120098484220a50210542002110200a420052ad210f0c010b200441e0016a290300211520042903d801211620042903d001210a410121050b20044198016a200337030020044188016a200237030020044180016a22172014370300200441f0006a20113703002004200b370390012004200d3703682004200f3703782004201337036002400240024002400240024020122010420152720d00200420013602d0012001200441d0016a10bd060c010b0240201241017322122010420151720d00200420013602d0012001200441d0016a10be0641ff017122124103460d01024020120e03030200030b20044190016a2101024020050d00200420173602d001200441d0016a10cc020b200420013602d001200441d0016a10ce020c060b20104201522012710d020b200441b0016a200110c802200441d0016a20042802b001221220042802b801221710c90220042903d001210b200441a0016a41086a2205200441a0026a290300370300200420044198026a2903003703a00102400240200b4201510d00200441c0016a41086a4200370300200442003703c0010c010b200441c0016a41086a2005290300370300200420042903a0013703c0010b20044198026a20042903c001370300200441a0026a200441c0016a41086a290300370300200442013703d001200441d0016a41386a20064200201042015122051b37030020044180026a2007420020051b370300200441d0016a41286a2008420020051b370300200441f0016a2009420020051b370300200441e8016a2015420020051b370300200441d0016a41106a2016420020051b37030020044190026a200c420020051b3703002004200a420020051b3703d80120122017200441d0016a41086a10c805024020042802b401450d002012102e0b20042903602209428080808070832107200441e0006a41106a2903002111200441e0006a41286a2903002102200441e0006a41386a29030021032004290368210d2004290380012114200429039001210b2004290378210f0c030b200e420152ad21090c010b200e420152ad21090b420021070b02402007200942ffffffff0f83844201520d0020044188026a201137030020044180026a200d370300200441d0016a41086a41003a0000200441d9016a2001290000370000200441e1016a200141086a290000370000200441e9016a200141106a290000370000200441f1016a200141186a290000370000200441033a00d001200441d0016a10fe010b02400240200f50450d004200210d0c010b200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d0014201210d0b200441186a200441d0016a41186a22012903002209370300200441106a200441d0016a41106a22052903002207370300200441086a200441d0016a41086a2903002208370300200420042903d001220a37030020044180026a2002370300200441f8016a221220143703002005200837030020012007370300200441f0016a20093703002004200d3703d0012004200a3703d801200441d0016a10d20420042903d001500d0120042012360260200441e0006a10cc020c010b4200210b420021030b2000200b37030020002003370308200441d0026a24000bfe0a010c7f23004180026b22012400200141c0016a22024200370300200141b8016a22034200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41d9fcc60041061081022004200141c8016a41086a2205290000370300200120012900c8013703a801200141c8016a4180f4cb00410610810220022005290000370300200320012900c801370300200141086a200141a8016a4120108e02024002402001280208450d00200128020c450d00200141c0016a22064200370300200141b8016a22074200370300200141a8016a41086a22024200370300200142003703a801200141c8016a41d9fcc60041061081022002200141c8016a41086a2204290000370300200120012900c8013703a801200141c8016a41e8f7cb00410e108102200341086a22082004290000370000200320012900c801370000200141203602dc012001200141a8016a3602d801200141f0016a200141a8016a412010ed020240024020012802f00122090d00410321050c010b200141f0016a41086a280200210a20012802f401210b200141003a00c801024002400240200a450d00410121050240024020092d00000e03000401020b200a417f6a4104490d012009280001210c410021050c030b410221050c010b200141003602d001200142013703c8012001410a3602e4012001200141d8016a3602e0012001200141c8016a3602ec01200141246a410136020020014201370214200141909dc5003602102001200141e0016a360220200141ec016a419cebc000200141106a103d1a20012802c80120012802d00110ef02024020012802cc01450d0020012802c801102e0b410321050b0b200b450d002009102e0b200141106a200041800110e9081a200141a0016a410036020020014194016a200c360200200142013703980120014102200520054103461b220536029001200642003703002007420037030020024200370300200142003703a801200141c8016a41d9fcc600410610810220022004290000370300200120012900c8013703a801200141c8016a41a4f5cb00410a10810220082004290000370000200320012900c8013700002001200141a8016a4120108e020240024002402001280204410020012802001b220241016a22002002490d0020014198016a210c200141c0016a22064200370300200141b8016a22074200370300200141a8016a41086a22044200370300200142003703a801200141c8016a41d9fcc60041061081022004200141c8016a41086a2202290000370300200120012900c8013703a801200141c8016a41a4f5cb00410a108102200341086a22082002290000370000200320012900c801370000200120003602c801200141a8016a4120200141c8016a410410b201200642003703002007420037030020044200370300200142003703a801200141c8016a41d9fcc600410610810220042002290000370300200120012900c8013703a801200141c8016a41e0f4cb00410610810220082002290000370000200320012900c801370000200141003602f801200142013703f0010240024020050e03030001040b200141013a00c801200141f0016a200141c8016a410110740c030b200141023a00c801200141f0016a200141c8016a410110740c020b200141106a10c008200128029c0141ffffff3f71450d03200128029801102e0c030b200141003a00c801200141f0016a200141c8016a4101107420012001280294013602c801200141f0016a200141c8016a410410740b200141106a200141f0016a109c06200c200141f0016a10b8012002200141f0016a41086a280200360200200120012903f0013703c801200141a8016a4120200141c8016a10c702200141106a10c008200128029c0141ffffff3f71450d01200128029801102e0c010b200010c0080b20014180026a24000b0e002001ad4220862000ad8410210b910302017f017e230041106b22022400200120004188016a41201074200029030021032002200041086a290300370308200220033703002001200241101074200029031021032002200041186a290300370308200220033703002001200241101074200029032021032002200041286a290300370308200220033703002001200241101074200029033021032002200041386a290300370308200220033703002001200241101074024002400240024002400240024020002d00400e06000102030405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110742001200041c1006a412010740c020b200241043a000020012002410110742001200041c1006a412010742002200041e4006a28020036020020012002410410740c010b200241053a000020012002410110742001200041c1006a412010742001200041e1006a41201074200220004184016a28020036020020012002410410740b200241106a24000b2c0020002002ad4220862001ad8410122201290000370000200041086a200141086a2900003700002001102e0ba10606057f017e027f017e027f017e230041206b2202240002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240200641037122034103460d00024002400240024020030e03000102000b2006410276ad21070c020b200128020022012802042203450d04200128020022042d0000210520012003417f6a360204410121032001200441016a3602002005410874200672220141ffff0371418002490d03200141fcff0371410276ad21070c010b410121032001280200220128020422044103490d022001280200220541026a2d0000210820052f000021092001200541036a36020020012004417d6a3602042009200841107472410874200672220141808004490d022001410276ad21070b4200210a410021030c030b02400240024002402006410276220b0e0d00030303010303030303030302030b2001280200220328020422014104490d0420032802002206350000210720032001417c6a3602042003200641046a36020020074280808080045421034200210a0c050b2001280200220328020422014108490d032003280200220629000021072003200141786a3602042003200641086a3602002007428080808080808080015421034200210a0c040b2001280200220328020422014110490d022003280200220641086a290000210a200629000021072003200641106a3602002003200141706a360204200a428080808080808080015421030c030b200641334b0d01200b41046a21094100210441012103200241186a210c420021074200210a0340200128020022062802042205450d0120062802002208310000210d20062005417f6a3602042006200841016a360200200241106a200d4200200441037441f8007110ed08200c290300200a84210a20022903102007842107200441016a22062104200641ff01712009490d000b2002427f427f41e800200b4103746b41f8007110e4082007200229030058200a200241086a290300220d58200a200d511b21030c020b0c010b410121030b20002007370308200041106a200a37030020002003ad370300200241206a24000b130020004109360204200041a8b9c0003602000b3400200041bad7c70036020420004100360200200041146a4104360200200041106a41b8d6c000360200200041086a42083702000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002410036020c20002002410c6a41041074200241106a24000b130020004107360204200041a4dcc0003602000b4401027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241a0c21e36020c20002002410c6a41041074200241106a24000b4501027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241808dcf0036020c20002002410c6a41041074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b200042043702042000200336020020024180840736020c20002002410c6a41041074200241106a24000be92007017f027e027f017e067f027e027f230041f0126b2202240042022103024002400240024002400240200129036822044202520d00200241106a20014198016a41b00210e9081a0c010b2002418e036a200141246a41c20010e9081a200241d0036a41086a220520014188016a290300370300200241d0036a41106a220620014190016a290300370300200220014180016a2903003703d003200141f8006a290300210320012903702107200128020821082001280204210920012d0000210a200241d00d6a41026a220b200141036a2d00003a000020024188046a41086a220c200141146a29020037030020024188046a41106a2001411c6a290200370300200220012f00013b01d00d2002200129020c37038804024002400240200a0e03020100010b2008450d002009102e0b200241f8116a41026a200241c8126a41026a2d00003a000020024188086a41086a200241980b6a41086a29030037030020024188086a410d6a200241980b6a410d6a290000370000200220022f01c8123b01f811200220022903980b37038808200041036a41003a0000200041013b0001200041013a000020014198016a108b020c030b200241980b6a410d6a220a20024188046a410d6a290000370000200241980b6a41086a220d200c290300370300200241f8116a41026a220c200b2d00003a000020024188086a41086a220b200d29030037030020024188086a410d6a220d200a290000370000200220022f01d00d3b01f8112002200229038804370388082002200c2d00003a00ea03200220022f01f8113b01e803200220083600ef03200220093600eb03200241e8036a41186a200d290000370000200241e8036a41136a200b29030037000020022002290388083700f303200241d00d6a20014198016a41b00210e9081a20024180106a41106a200629030037030020024180106a41086a2005290300370300200220022903d003370380104100210a200241d8116a4100108c02200241c8126a20022802d811220820022802e011108d0220022d00c8122101200241f8116a41186a2209200241e1126a290000370300200241f8116a41106a200241d9126a290000370300200241f8116a41086a200241d1126a290000370300200220022900c9123703f8110240024020014101460d00200241bd126a4200370000200241b8126a4200370300200241b0126a4200370300200242003703a8120c010b200241b0126a20024183126a290000370300200241a8126a41106a200241f8116a41136a290000370300200241bd126a2009290000370000200220022900fb113703a81220022f01f81120022d00fa1141107472210a0b024020022802dc11450d002008102e0b20024198116a41086a200241a8126a41086a29030037030020024198116a41106a200241a8126a41106a29030037030020024198116a41156a200241a8126a41156a290000370000200220022903a8123703981120024190126a22014200370300200241f8116a41106a22084200370300200241f8116a41086a22094200370300200242003703f811200241c8126a41d9fcc60041061081022009200241c8126a41086a2205290000370300200220022900c8123703f811200241c8126a4180f4cb00410610810220012005290000370300200820022900c812370300200241086a200241f8116a4120108e0241002101024020044201520d0020074200510d04200228020c410020022802081b2108417f210142002008ad220e20037d220f200f200e561b220e20037c200e2007827d220e42ffffffff0f560d00200ea721010b200241c8126a2001108c0220022802c812220920022802d012108f022108024020022802cc12450d002009102e0b2008450d0120024198126a2001108c02200241c8126a200228029812220820022802a012108d0220022d00c812210120024190126a2209200241e1126a290000370300200241f8116a41106a200241d9126a290000370300200241f8116a41086a200241d1126a290000370300200220022900c9123703f8110240024020014101460d00200241bd126a4200370000200241a8126a41106a4200370300200241a8126a41086a4200370300200242003703a812410021010c010b200241a8126a41086a20024183126a290000370300200241a8126a41106a2002418b126a290000370300200241bd126a2009290000370000200220022900fb113703a81220022f01f81120022d00fa114110747221010b0240200228029c12450d002008102e0b200241d8116a41156a2208200241a8126a41156a290000370000200241d8116a41106a2209200241a8126a41106a290300370300200241b8116a41106a22052009290300370300200241b8116a41156a22092008290000370000200241b8116a41086a200241a8126a41086a290300220e370300200241d8106a41086a2208200e370300200241d8106a41106a22062005290300370300200241d8106a41156a22052009290000370000200220022903a812220e3703b8112002200e3703d810200241f8106a41156a220920024198116a41156a290000370000200241f8106a41106a220b20024198116a41106a290300370300200241f8106a41086a220c20024198116a41086a29030037030020022002290398113703f810200241b8106a41156a220d2009290000370000200241b8106a41106a2209200b290300370300200241b8106a41086a220b200c290300370300200220022903f8103703b81020024198106a41156a220c200529000037000020024198106a41106a2205200629030037030020024198106a41086a22062008290300370300200220022903d81037039810200241e00a6a41156a2208200d290000370000200241e00a6a41106a220d2009290300370300200241e00a6a41086a2209200b290300370300200220022903b8103703e00a200241c00a6a41156a220b200c290000370000200241c00a6a41106a220c2005290300370300200241c00a6a41086a2205200629030037030020022002290398103703c00a200241800b6a41106a220620024180106a41106a290300370300200241800b6a41086a221020024180106a41086a29030037030020022002290380103703800b200241980b6a41046a200241d00d6a41b00210e9081a20024188086a200241980b6a41b40210e9081a200241f0076a41106a22112006290300370300200241f0076a41086a22062010290300370300200241d0076a41086a22102009290300370300200241d0076a41106a2209200d290300370300200241d0076a41156a220d2008290000370000200241b0076a41086a22082005290300370300200241b0076a41106a2205200c290300370300200241b0076a41156a220c200b290000370000200220022903800b3703f007200220022903e00a3703d007200220022903c00a3703b00720024188046a20024188086a41046a41b00210e9081a200241f2066a200a4110763a0000200241f0066a200a3b0100200241c8066a2003370300200241c0066a2007370300200241d0066a220a20022903f007370300200241d8066a2006290300370300200241e0066a22062011290300370300200241f3066a20022903d007370000200241fb066a201029030037000020024183076a200929030037000020024188076a200d290000370000200220043703b8062002429e808080f0003703e80620024192076a20014110763a000020024190076a20013b010020024193076a20022903b0073700002002419b076a2008290300370000200241a3076a2005290300370000200241a8076a200c2900003700004108102c2201450d042002420837028c08200220013602880820024188046a20024188086a1090020240024020022903b8064201520d00200220022903c80620022903c0062203420c882204420120044201561b80a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b01980b20024188086a200241980b6a410210740c010b200241003a00980b20024188086a200241980b6a410110740b200620024188086a1091022002200a3602980b200241980b6a20024188086a10af01200220022802e8063602980b20024188086a200241980b6a41041074200220022802ec063602980b20024188086a200241980b6a410410744120102c2201450d042002422037029c0b200220013602980b200241980b6a200241f0066a4120107420024188086a20022802980b220120022802a00b10740240200228029c0b450d002001102e0b4120102c2201450d042002422037029c0b200220013602980b200241980b6a20024190076a4120107420024188086a20022802980b220120022802a00b10740240200228029c0b450d002001102e0b200228028808210102400240200228029008220a418102490d00200241f8116a2001200a10b0012002418e036a200241f8116a4120200241e8036a10920221010c010b2002418e036a2001200a200241e8036a10920221010b0240200228028c08450d00200228028808102e0b024020010d0020004180083b0001200041013a0000200041036a41003a000020024188046a108b020c030b200241e8026a41086a200241e8036a41086a290300370300200241e8026a41106a200241e8036a41106a290300370300200241e8026a41186a200241e8036a41186a290300370300200241c0026a41086a200241c8066a290300370300200241c0026a41106a200241d0066a290300370300200241c0026a41186a200241d8066a290300370300200241e0026a200241e0066a290300370300200220022903e8033703e8022002200241c0066a2903003703c00220022903b8062103200241106a20024188046a41b00210e9081a0b200041086a20022903e802370300200041286a2003370300200041306a20022903c002370300200041206a200241e8026a41186a290300370300200041186a200241e8026a41106a290300370300200041106a200241e8026a41086a290300370300200041386a200241c0026a41086a290300370300200041c0006a200241c0026a41106a290300370300200041c8006a200241c0026a41186a290300370300200041d0006a200241c0026a41206a290300370300200041d8006a200241106a41b00210e9081a200041003a00000c010b200241b8116a41156a200241d8116a41156a290000370000200241b8106a41086a200241f8106a41086a290000370300200241b8106a41106a200241f8106a41106a290000370300200241b8106a41156a200241f8106a41156a29000037000020024198106a41156a200241d8106a41156a290000370000200220022900f8103703b810200241d00d6a108b0220024188086a200241980b6a41b40210e9081a200241f0076a41106a200241800b6a41106a290300370300200241f0076a41086a200241800b6a41086a290300370300200241d0076a41086a200241e00a6a41086a290000370300200241d0076a41106a200241e00a6a41106a290000370300200241d0076a41156a200241e00a6a41156a290000370000200241b0076a41086a200241c00a6a41086a290000370300200241b0076a41106a200241c00a6a41106a290000370300200241b0076a41156a200241c00a6a41156a290000370000200220022903800b3703f007200220022900e00a3703d007200220022900c00a3703b007200041036a41003a0000200041800a3b0001200041013a00000b200241f0126a24000f0b41d0e7cc00411941ece7cc001039000b1036000ba62801047f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1b00010218180304051806070818090a0b0c0d0e0f10111213141516170b0240024002400240024002400240200041086a2802000e0a1e1e001e01021e030405060b200041106a280200450d1d2000410c6a280200102e0f0b200041106a280200450d1c2000410c6a280200102e0f0b200041106a280200450d1b2000410c6a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b200041106a2802002202450d1a200241186c450d1a200028020c102e0f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d192002410c6c450d19200028020c102e0f0b200041106a280200450d182000410c6a280200102e0f0b200041106a280200450d172000410c6a280200102e0f0b0240024002400240024020002d00040e061b001b010203040b200041186a2202280200108b022002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a2202280200108b022002280200102e0f0b2000410c6a280200450d18200041086a280200102e0f0b200041186a2202280200108b022002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a2202280200108b022002280200102e0f0b02400240200041086a280200417f6a0e020001170b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d162002410c6c450d162000280210102e0f0b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d152000280210102e0f0b0240024002400240200041086a2802000e0418000102030b2000410c6a2d00004102470d17200041146a280200450d17200041106a280200102e0f0b2000410c6a2d00004102470d16200041146a280200450d16200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d15200041386a280200450d15200041346a280200102e0f0b2000410c6a2d00004102470d14200041146a280200450d14200041106a280200102e0f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d002004280204102e0b20022003470d000b0b200041086a2802002202450d13200241f0006c450d132000280204102e0f0b024002400240024002400240200041086a2d00000e171800181818180118180218181818180318180418181818050b2000412c6a2d00004102470d17200041346a280200450d17200041306a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d16200241246c450d16200028020c102e0f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a280200102e0f0b200041106a28020041ffffff3f71450d142000410c6a280200102e0f0b200041146a28020041ffffffff0371450d13200041106a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d12200241246c450d12200028020c102e0f0b20002802042202450d11200041086a280200450d112002102e0f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d112000280210102e0f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d102000280210102e0f0b02402000410c6a280200450d00200041086a280200102e0b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f2000280214102e0f0b0240024002400240200041086a2d000041716a0e0400010203120b200041106a280200450d112000410c6a280200102e0f0b200041106a280200450d102000410c6a280200102e0f0b200041106a280200450d0f2000410c6a280200102e0f0b200041106a280200450d0e2000410c6a280200102e0f0b024002400240200041086a2d0000417f6a0e03000102100b200041306a28020041ffffff3f71450d0f2000412c6a280200102e0f0b2000410c6a2202280200108b022002280200102e0f0b200041106a2202280200108b022002280200102e0f0b024002400240200041086a2d0000417f6a0e030001020f0b200041306a28020041ffffff3f71450d0e2000412c6a280200102e0f0b2000410c6a2202280200108b022002280200102e0f0b200041106a2202280200108b022002280200102e0f0b02400240200041086a2d0000417f6a0e05000d0d0d010d0b200041106a28020041ffffff3f71450d0c2000410c6a280200102e0f0b2000410c6a2d00004102470d0b200041146a280200450d0b200041106a280200102e0f0b20002d00044104470d0a2000410c6a28020041ffffff3f71450d0a200041086a280200102e0f0b200041086a2802004101470d092000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b02400240200041086a2d0000417d6a0e0200010a0b200041f0006a280200450d09200041ec006a280200102e0f0b200041106a280200450d082000410c6a280200102e0f0b024002400240200041086a2802000e040a0a0001020b2000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d07200041386a280200450d07200041346a280200102e0f0b02400240024020002f01040e03090001020b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d08200241b0026c450d082000280208102e0f0b200041086a2202280200108b022002280200102e0f0b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d06200241b0026c450d062000280208102e0f0b0240024002400240024002400240200041086a2d0000417e6a0e0d00010c0c0c0c0c0c02030405060c0b0240200041146a2802002201450d002000410c6a2802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a280200102e0b0240200241246a2d00004101470d002002412c6a280200450d00200241286a280200102e0b200241c8006a22022001470d000b0b0240200041106a2802002202450d00200241c8006c450d00200028020c102e0b0240200041186a2d00004101470d00200041206a280200450d002000411c6a280200102e0b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a280200102e0b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a280200102e0b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a280200102e0b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a280200102e0b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a280200102e0b200041f0016a2d00004101470d0b200041f8016a280200450d0b200041f4016a280200102e0f0b0240200041146a2802002202450d00200241c4006c21012000410c6a28020041286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102e0b200241c4006a2102200141bc7f6a22010d000b0b200041106a2802002202450d0a200241c4006c450d0a200028020c102e0f0b200041106a2d00004102470d09200041186a280200450d09200041146a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d07200041386a280200450d07200041346a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d06200041386a280200450d06200041346a280200102e0f0b2000410c6a2d00004102470d05200041146a280200450d05200041106a280200102e0f0b20002d00042202417e6a4108490d040240024020020e020600010b200041286a2202280200108b022002280200102e0f0b200041c8006a2202280200108b022002280200102e0f0b0240024002400240200041086a2d00000e0407000102030b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041186a2202280200108b022002280200102e0f0b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041286a280200450d05200041246a280200102e0f0b200041306a28020041ffffff3f71450d042000412c6a280200102e0f0b200041306a28020041ffffff3f71450d032000412c6a280200102e0f0b0240024002400240200041086a2802000e09060006010606020606030b200041106a280200450d052000410c6a280200102e0f0b200041106a2d00004102470d04200041186a280200450d04200041146a280200102e0f0b200041106a2d00004102470d03200041186a280200450d03200041146a280200102e0f0b200041146a280200450d02200041106a280200102e0f0b02400240200041086a2d0000417f6a0e03000301030b200041306a280200450d022000412c6a280200102e0c020b200041306a280200450d012000412c6a280200102e0f0b02402000413c6a28020041ffffffff0171450d00200041386a280200102e0b0240200041c8006a2802002202450d002002410c6c450d00200041c4006a280200102e0b0240200041d4006a28020041ffffffff0071450d00200041d0006a280200102e0b0240200041e0006a2802002202450d00200241146c450d00200041dc006a280200102e0b0240200041ec006a2802002202450d00200241186c450d00200041e8006a280200102e0b0240200041f8006a2802002202450d002002411c6c450d00200041f4006a280200102e0b024020004184016a28020041ffffff3f71450d0020004180016a280200102e0b024020004190016a2802002202450d00200241246c450d002000418c016a280200102e0b02402000419c016a2802002202450d00200241286c450d0020004198016a280200102e0b0240200041a8016a2802002202450d002002412c6c450d00200041a4016a280200102e0b0240200041b4016a2802002202450d00200241306c450d00200041b0016a280200102e0b0240200041c0016a2802002202450d00200241346c450d00200041bc016a280200102e0b0240200041cc016a2802002202450d00200241386c450d00200041c8016a280200102e0b0240200041d8016a2802002202450d002002413c6c450d00200041d4016a280200102e0b0240200041e4016a28020041ffffff1f71450d00200041e0016a280200102e0b200041f0016a2802002202450d00200241c4006c450d00200041ec016a280200102e0f0b0b850201037f230041d0006b22022400200241086a41d9fcc6004106108102200241186a41a0f3cb004109108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b9d0902047f017e230041b0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003a00000c010b200341186a280200210220032802142104200341003a0060024002402002450d00200320012d00003a0040200341013a0060024020024101460d00200320012d00013a0041200341023a006020024102460d00200320012d00023a0042200341033a006020024103460d00200320012d00033a0043200341043a006020024104460d00200320012d00043a0044200341053a006020024105460d00200320012d00053a0045200341063a006020024106460d00200320012d00063a0046200341073a006020024107460d00200320012d00073a0047200341083a006020024108460d00200320012d00083a0048200341093a006020024109460d00200320012d00093a00492003410a3a00602002410a460d00200320012d000a3a004a2003410b3a00602002410b460d00200320012d000b3a004b2003410c3a00602002410c460d00200320012d000c3a004c2003410d3a00602002410d460d00200320012d000d3a004d2003410e3a00602002410e460d00200320012d000e3a004e2003410f3a00602002410f460d00200320012d000f3a004f200341103a006020024110460d00200320012d00103a0050200341113a006020024111460d00200320012d00113a0051200341123a006020024112460d00200320012d00123a0052200341133a006020024113460d00200320012d00133a0053200341143a006020024114460d00200320012d00143a0054200341153a006020024115460d00200320012d00153a0055200341163a006020024116460d00200320012d00163a0056200341173a006020024117460d00200320012d00173a0057200341183a006020024118460d00200320012d00183a0058200341193a006020024119460d00200320012d00193a00592003411a3a00602002411a460d00200320012d001a3a005a2003411b3a00602002411b460d00200320012d001b3a005b2003411c3a00602002411c460d00200320012d001c3a005c2003411d3a00602002411d460d00200320012d001d3a005d2003411e3a00602002411e460d00200320012d001e3a005e2003411f3a00602002411f460d00200341206a41106a2202200341c0006a41106a290300370300200341206a41086a2205200341c0006a41086a290300370300200320012d001f3a005f200341206a41186a2206200341c0006a41186a290300370300200341203a006020032003290340220737036820032007370320200041196a2006290300370000200041116a2002290300370000200041096a200529030037000020002003290320370001410121020c020b200341003a00600b20034100360270200342013703682003410a3602242003200341086a3602202003200341e8006a3602ac01200341d4006a410136020020034201370244200341909dc5003602402003200341206a360250200341ac016a419cebc000200341c0006a103d1a2003280268200328027010ef020240200328026c450d002003280268102e0b410021020b200020023a00002004450d002001102e0b200341b0016a24000b840201037f230041d0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341909dc5003602382003200341286a360248200341346a419cebc000200341386a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b0b2005450d002004102e0b2000200236020420002001360200200341d0006a24000b11002001ad4220862000ad8410244101460bf97002067f017e230041106b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1c000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c0b200241003a000020012002410110740240024002400240024002400240024002400240200041086a280200417f6a0e0a00010203040506070809250b200241003a0000200120024101107420022000410c6a28020036020020012002410410740c240b200241013a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c230b200241023a000020012002410110742002200041106a29030037030020012002410810740c220b200241033a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c210b200241043a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c200b200241053a0000200120024101107402402000410c6a2802004101460d00200241003a000020012002410110740c200b200241013a000020012002410110742002200041106a28020036020020012002410410742002200041146a28020036020020012002410410740c1f0b200241063a000020012002410110742000410c6a2802002103200041146a2802002200200110762000450d1e2003200041186c6a2104034020032802002100200341086a28020022052001107620012000200510742003410c6a2802002100200341146a2802002205200110762001200020051074200341186a22032004470d000c1f0b0b200241073a000020012002410110742000410c6a2802002103200041146a2802002200200110762000450d1d20032000410c6c6a2104034020032802002100200341086a28020022052001107620012000200510742003410c6a22032004470d000c1e0b0b200241083a000020012002410110742000410c6a2802002103200041146a28020022052001107620012003200510742002200041186a28020036020020012002410410740c1c0b200241093a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c1b0b200241013a0000200120024101107402400240024002400240024020002d0004417f6a0e06000102030405200b200241003a000020012002410110742002200041086a2802003602002001200241041074024002402000410c6a2802004101460d00200241003a000020012002410110740c010b200241013a000020012002410110742002200041106a28020036020020012002410410742002200041146a28020036020020012002410410740b200220002d00053a00002001200241011074200028021820011090020c1f0b200241013a000020012002410110742002200041086a280200360200200120024104107420022000410c6a28020036020020012002410410740c1e0b200241023a00002001200241011074200041086a2802002103200041106a28020022052001107620012003200510742002200041146a280200360200200120024104107402400240200041186a2802004101460d00200241003a000020012002410110740c010b200241013a0000200120024101107420022000411c6a28020036020020012002410410742002200041206a28020036020020012002410410740b200220002d00053a00002001200241011074200028022420011090020c1d0b200241033a00002001200241011074200041086a2802002103200041106a28020022002001107620012003200010740c1c0b200241043a000020012002410110742002200041086a2802003602002001200241041074024002402000410c6a2802004101460d00200241003a000020012002410110740c010b200241013a000020012002410110742002200041106a28020036020020012002410410742002200041146a28020036020020012002410410740b200220002d00053a00002001200241011074200028021820011090020c1b0b200241053a00002001200241011074200041086a2802002103200041106a28020022052001107620012003200510742002200041146a280200360200200120024104107402400240200041186a2802004101460d00200241003a000020012002410110740c010b200241013a0000200120024101107420022000411c6a28020036020020012002410410742002200041206a28020036020020012002410410740b200220002d00053a00002001200241011074200028022420011090020c1a0b200241023a00002001200241011074024002400240200041086a280200417f6a0e030001021c0b200241003a00002001200241011074200120004188026a412010742002200041206a2903003703002001200241081074200041286a2001108f0620004198016a2001108f0620022000410c6a2802003602002001200241041074200041106a2802002103200041186a28020022052001107602402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107620012005200410742003410c6a22032006470d000b0b20022000411c6a28020036020020012002410410740c1b0b200241013a00002001200241011074200120004188026a412010742002200041206a2903003703002001200241081074200041286a2001108f0620004198016a2001108f0620022000410c6a2802003602002001200241041074200041106a2802002103200041186a28020022052001107602402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107620012005200410742003410c6a22032006470d000b0b20022000411c6a28020036020020012002410410740c1a0b200241023a00002001200241011074200041106a20011096020c190b200241033a00002001200241011074200241003a00002001200241011074200041086a200110dc040c180b200241043a00002001200241011074200041046a21030240024002400240024020002d0004417f6a0e0500010203041c0b200241003a000020012002410110742002200041086a28020036020020012002410410740c1b0b200241013a000020012002410110742001200341016a412010742002200041286a28020036020020012002410410740c1a0b200241023a000020012002410110742002200041086a28020036020020012002410410740c190b200241033a000020012002410110742001200341016a412010742002200041286a2802003602002001200241041074200220002d00253a000020012002410110740c180b200241043a000020012002410110742002200041086a28020036020020012002410410740c170b200241053a000020012002410110740240024002400240200041086a280200417f6a0e04000102031a0b200241003a000020012002410110742000410c6a200110f5012002200041306a3602002002200110af010c190b200241013a000020012002410110742000410c6a200110f5012002200041306a3602002002200110af012002200041c0006a3602002002200110af010c180b200241023a000020012002410110742000410c6a200110f501200041306a200110f5012002200041d8006a3602002002200110af010c170b200241033a000020012002410110742000410c6a200110f5012002200041306a3602002002200110af010c160b200241063a00002001200241011074200241003a00002001200241011074200028020421032000410c6a2802002200200110762000450d15200041f0006c2100034020032001108f06200341f0006a2103200041907f6a22000d000c160b0b200241073a0000200120024101107402400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041086a22032d0000417f6a0e17000102030405060708090a0b0c0d0e0f101112131415162b0b200241003a000020012002410110742000412c6a200110f5012002200041d0006a3602002002200110af010240024002400240024020002d00090e0500010203042f0b200241003a000020012002410110740c2e0b200241013a000020012002410110740c2d0b200241023a000020012002410110740c2c0b200241033a000020012002410110742001200341026a412010740c2b0b200241043a000020012002410110740c2a0b200241013a000020012002410110742002200041106a3602002002200110af010c290b200241023a000020012002410110742002200041106a3602002002200110af010c280b200241033a0000200120024101107420022000410c6a28020036020020012002410410740c270b200241043a000020012002410110742000410c6a20011091022002200041106a2d00003a000020012002410110740c260b200241053a000020012002410110742000410c6a2802002103200041146a280200220020011076200041246c2200450d2503402003200110f501200341246a21032000415c6a22000d000c260b0b200241063a000020012002410110740c240b200241073a000020012002410110740240024002400240024020032d00010e050001020304280b200241003a000020012002410110740c270b200241013a000020012002410110740c260b200241023a000020012002410110740c250b200241033a000020012002410110742001200341026a412010740c240b200241043a000020012002410110740c230b200241083a000020012002410110742000410c6a200110f5010c220b200241093a000020012002410110742000410c6a20011091020c210b2002410a3a000020012002410110742000410c6a20011091020c200b2002410b3a00002001200241011074200220032d00013a000020012002410110740c1f0b2002410c3a000020012002410110740c1e0b2002410d3a000020012002410110740c1d0b2002410e3a000020012002410110742000410c6a2802002103200041146a2802002200200110762000450d1c2000410574210003402001200341201074200341206a2103200041606a22000d000c1d0b0b2002410f3a000020012002410110742001200341016a4120107420022000412c6a28020036020020012002410410740c1b0b200241103a000020012002410110740c1a0b200241113a0000200120024101107420022000410c6a2802003602002001200241041074200041106a2802002103200041186a28020022002001107620012003200041027410740c190b200241123a000020012002410110742001200341016a4120107420022000412c6a28020036020020012002410410740c180b200241133a000020012002410110742002200041106a3602002002200110af010c170b200241143a000020012002410110742000410c6a2001109102200041106a20011091020c160b200241153a000020012002410110742001200341016a4120107420022000412c6a28020036020020012002410410740c150b200241163a000020012002410110742000410c6a2802002103200041146a280200220020011076200041246c2200450d1403402003200110f501200341246a21032000415c6a22000d000c150b0b200241083a00002001200241011074200110b6040c130b200241093a0000200120024101107402402000280204450d00200241003a000020012002410110742001200041106a412010742001200041306a412010742001200041d0006a412010742001200041f0006a41201074200120004190016a412010742001200041b0016a41201074200028020421032000410c6a28020022002001107620012003200010740c130b200241013a000020012002410110740c120b2002410b3a00002001200241011074024002400240200041086a280200417f6a0e03000102140b200241003a00002001200241011074200041206a200110900620022000410c6a2802003602002001200241041074200041106a2802002103200041186a28020022052001107602402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107620012005200410742003410c6a22032006470d000b0b20022000411c6a28020036020020012002410410740c130b200241013a00002001200241011074200041206a200110900620022000410c6a2802003602002001200241041074200041106a2802002103200041186a28020022052001107602402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107620012005200410742003410c6a22032006470d000b0b20022000411c6a28020036020020012002410410740c120b200241023a0000200120024101107420022000410c6a28020036020020012002410410742002200041106a28020036020020012002410410740c110b2002410c3a00002001200241011074200241003a00002001200241011074200220002802043602002001200241041074200041086a2802002103200041106a2802002205200110762001200320051074200041146a28020021032000411c6a2802002205200110762000412c6a210702402005450d0020032005410c6c6a2106034020032802002105200341086a28020022042001107620012005200410742003410c6a22032006470d000b0b2002200041206a28020036020020012002410410742002200041246a28020036020020012002410410742002200041286a28020036020020012002410410742001200741c00010740c100b2002410d3a00002001200241011074200110b6040c0f0b2002410e3a000020012002410110740240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041086a22032d0000417f6a0e19000102030405060708090a0b0c0d0e0f101112131415161718270b200241003a000020012002410110744120102c2205450d27200041306a210020024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b200220003602002002200110af010c260b200241013a000020012002410110742000410c6a2001109102200041106a20011091020c250b200241023a000020012002410110742000410c6a2001109102200041106a200110b2040c240b200241033a0000200120024101107420022000410c6a28020036020020012002410410740c230b200241043a000020012002410110744120102c2200450d2320024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d222000102e0c220b200241053a000020012002410110744120102c2200450d2220024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d212000102e0c210b200241063a000020012002410110744120102c2200450d2120024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d202000102e0c200b200241073a000020012002410110744120102c2205450d2020024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022c36020020012002410410742002200028023036020020012002410410740c1f0b200241083a000020012002410110744120102c2200450d1f20024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d1e2000102e0c1e0b200241093a000020012002410110742000410c6a20011091020c1d0b2002410a3a0000200120024101107420022000410c6a28020036020020012002410410740c1c0b2002410b3a000020012002410110742001200341016a4120107420002d002920011073200041306a29030021082002200041386a2903003703082002200837030020012002411010740c1b0b2002410c3a000020012002410110740c1a0b2002410d3a000020012002410110740c190b2002410e3a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c180b2002410f3a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c170b200241103a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c160b200241113a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c150b200241123a000020012002410110744120102c2205450d152000412c6a210020024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b200020011091020c140b200241133a000020012002410110742001200341016a412010740c130b200241143a0000200120024101107420022000410c6a28020036020020012002410410740c120b200241153a000020012002410110742001200341016a4120107420022000412c6a28020036020020012002410410740c110b200241163a000020012002410110744120102c2205450d1120024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022c36020020012002410410740c100b200241173a000020012002410110744120102c2205450d1020024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b0240200028022c4101460d00200241003a000020012002410110740c100b200241013a000020012002410110742002200041306a28020036020020012002410410740c0f0b200241183a000020012002410110742000410c6a20011091020c0e0b2002410f3a00002001200241011074024002400240024002400240200041086a22042d0000417f6a0e06000102030405130b200241003a000020012002410110742000412c6a2802002103200041346a28020022052001107602402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b0240024020042d00014101460d00200241003a000020012002410110740c010b200241013a000020012002410110742001200441026a412010740b2002200028023836020020012002410410740c120b200241013a000020012002410110742000410c6a2802002001109002200041106a20011091020c110b200241023a000020012002410110742000410c6a2001109102200041106a2802002001109002200041146a20011091020c100b200241033a000020012002410110744120102c2203450d102000412c6a210020024220370204200220033602002002200441016a412010742001200228020022032002280208107402402002280204450d002003102e0b20002001109102200220042d00213a000020012002410110740c0f0b200241043a000020012002410110744120102c2203450d0f200041306a2105200041386a21062000412c6a210020024220370204200220033602002002200441016a412010742001200228020022032002280208107402402002280204450d002003102e0b200020011091022006200110dc04200520011091020c0e0b200241053a000020012002410110744120102c2200450d0e20024220370204200220003602002002200441016a41201074200120022802002200200228020810742002280204450d0d2000102e0c0d0b200241103a00002001200241011074024002400240024002400240200041086a22042d0000417f6a0e06000102030405120b200241003a000020012002410110742000412c6a2802002103200041346a28020022052001107602402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b0240024020042d00014101460d00200241003a000020012002410110740c010b200241013a000020012002410110742001200441026a412010740b2002200028023836020020012002410410740c110b200241013a000020012002410110742000410c6a2802002001109002200041106a20011091020c100b200241023a000020012002410110742000410c6a2001109102200041106a2802002001109002200041146a20011091020c0f0b200241033a000020012002410110744120102c2203450d0f2000412c6a210020024220370204200220033602002002200441016a412010742001200228020022032002280208107402402002280204450d002003102e0b20002001109102200220042d00213a000020012002410110740c0e0b200241043a000020012002410110744120102c2203450d0e200041306a2105200041386a21062000412c6a210020024220370204200220033602002002200441016a412010742001200228020022032002280208107402402002280204450d002003102e0b200020011091022006200110dc04200520011091020c0d0b200241053a000020012002410110744120102c2200450d0d20024220370204200220003602002002200441016a41201074200120022802002200200228020810742002280204450d0c2000102e0c0c0b200241113a00002001200241011074024002400240024002400240200041086a2d0000417f6a0e06000102030405110b200241003a000020012002410110742000410c6a2802002103200041146a280200220520011076200041186a210402402005450d002005410574210003402001200341201074200341206a2103200041606a22000d000b0b200220043602002002200110af010c100b200241013a000020012002410110740c0f0b200241023a000020012002410110742000410c6a20011091020c0e0b200241033a000020012002410110740240024002402000410c6a2802000e03000102100b200241003a000020012002410110740c0f0b200241013a000020012002410110740c0e0b200241023a00002001200241011074200041106a20011091020c0d0b200241043a000020012002410110742000410c6a200110f501200220002d00093a000020012002410110740c0c0b200241053a0000200120024101107420022000410c6a28020036020020012002410410742002200041106a28020036020020012002410410740c0b0b200241123a00002001200241011074200041046a2103024002400240024002400240024020002d0004417f6a0e0700010203040506110b200241003a000020012002410110742001200341016a412010740c100b200241013a000020012002410110742001200341016a412010740c0f0b200241023a000020012002410110742001200341016a412010742001200341216a412010740c0e0b200241033a00002001200241011074200041086a2802002103200041106a2802002200200110762000450d0d2000410574210003402001200341201074200341206a2103200041606a22000d000c0e0b0b200241043a000020012002410110742001200341016a412010740c0c0b200241053a000020012002410110742001200341016a412010740c0b0b200241063a000020012002410110740c0a0b200241133a00002001200241011074024002400240200041086a280200417f6a0e030001020c0b200241003a000020012002410110742002200041306a3602002002200110af012000410c6a200110f5010c0b0b200241013a000020012002410110742000410c6a20011091020c0a0b200241023a000020012002410110742000410c6a20011091020c090b200241183a0000200120024101107402400240024002400240200041086a22032d0000417f6a0e0500010203040d0b200241003a000020012002410110742001200341016a412010742001200341216a41c10010740c0c0b200241013a000020012002410110742001200341016a41141074200041206a29030021082002200041286a29030037030820022008370300200120024110107402400240200041306a2903004201510d00200241003a000020012002410110740c010b200241013a00002001200241011074200041386a29030021082002200041c0006a290300370308200220083703002001200241101074200041c8006a29030021082002200041d0006a2903003703082002200837030020012002411010742002200041d8006a28020036020020012002410410740b024020032d001522004102470d00200241003a000020012002410110740c0c0b200241013a00002001200241011074024020004101460d00200241003a000020012002410110740c0c0b200241013a000020012002410110740c0b0b200241023a000020012002410110742001200341016a412010742001200341216a41c1001074200041ec006a2802002103200041f4006a28020022002001107620012003200010740c0a0b200241033a000020012002410110742000410c6a2802002103200041146a28020022002001107620012003200010740c090b200241043a000020012002410110742001200341016a411410742001200341156a411410740240200341296a2d00004101460d00200241003a000020012002410110740c090b200241013a0000200120024101107420012003412a6a412010740c080b200241193a000020012002410110740240024002400240200041086a280200417f6a0e04000102030b0b200241003a000020012002410110740c0a0b200241013a000020012002410110742000410c6a200110f5010c090b200241023a000020012002410110742000410c6a200110f501200041306a29030021082002200041386a290300370308200220083703002001200241101074200041c0006a29030021082002200041c8006a2903003703082002200837030020012002411010742002200041d0006a28020036020020012002410410740c080b200241033a000020012002410110742000410c6a200110f501200041306a200110f501200041d8006a29030021082002200041e0006a290300370308200220083703002001200241101074200041e8006a29030021082002200041f0006a2903003703082002200837030020012002411010742002200041f8006a28020036020020012002410410740c070b2002411a3a0000200120024101107402400240024020002f0104417f6a0e03000102090b200241003a00002001200241011074200041086a2802002103200041106a280200220020011076200041b0026c2200450d08034020032001109002200341b0026a2103200041d07d6a22000d000c090b0b200241013a00002001200241011074200220002f01063b01002001200241021074200041086a28020020011090020c070b200241023a00002001200241011074200041086a2802002103200041106a280200220020011076200041b0026c2200450d06034020032001109002200341b0026a2103200041d07d6a22000d000c070b0b2002411c3a00002001200241011074024002400240024002400240024002400240024002400240024002400240200041086a22032d0000417f6a0e0f000102030405060708090a0b0c0d0e140b200241003a000020012002410110742001200341016a412010740c130b200241013a000020012002410110742000410c6a200110b7012002200041186a108a012001200228020022032002280208107402402002280204450d002003102e0b20022000413c6a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041e0006a108a012001200228020022032002280208107402402002280204450d002003102e0b200220004184016a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041a8016a108a012001200228020022032002280208107402402002280204450d002003102e0b0240024020004194026a22032d00004101460d00200241003a000020012002410110740c010b200241013a000020012002410110742001200341016a411410740b2002200041cc016a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041f0016a108a01200120022802002200200228020810742002280204450d122000102e0c120b200241023a000020012002410110742000410c6a2802002103200041146a280200220020011076200041c4006c2200450d11200320006a2105034020012003412010742002200341206a2200108a012001200228020022032002280208107402402002280204450d002003102e0b200041246a22032005470d000c120b0b200241033a000020012002410110740c100b200241043a000020012002410110742000410c6a20011091022002200041106a3602002002200110af010c0f0b200241053a0000200120024101107420022000410c6a28020036020020012002410410740c0e0b200241063a000020012002410110742000410c6a20011091022002200041106a3602002002200110af010c0d0b200241073a000020012002410110742000412c6a20011091022001200341016a412010740c0c0b200241083a000020012002410110742000410c6a20011091022002200041106a29030037030020012002410810740c0b0b200241093a000020012002410110742000410c6a2001109102200041106a200110f501200041386a200110ea030c0a0b2002410a3a000020012002410110742000410c6a200110f5010c090b2002410b3a000020012002410110742000410c6a200110f5012002200041306a108a01200120022802002200200228020810742002280204450d082000102e0c080b2002410c3a000020012002410110742000410c6a200110f5012002200041306a108a01200120022802002200200228020810742002280204450d072000102e0c070b2002410d3a000020012002410110742000410c6a200110f5010c060b2002410e3a000020012002410110740c050b2002411d3a00002001200241011074200041046a2103024002400240024002400240024002400240024020002d0004417f6a0e0a000102030405060708090e0b200241003a000020012002410110742001200341016a412010740240024020002d00254107470d00200241003a000020012002410110740c010b200241013a00002001200241011074024002400240024002400240024020032d00210e0700010203070405070b200241003a00000c050b200241013a00000c040b200241023a00000c030b200241033a00000c020b200241053a00000c010b200241063a00000b20012002410110740b200028022820011090020c0d0b200241013a000020012002410110742001200341016a41201074024002400240024002400240024020002d00250e0700010203060405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b2002200028022836020020012002410410740c0c0b200241023a000020012002410110742001200341016a41201074024002400240024002400240024020002d00250e0700010203060405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b2002200028022836020020012002410410740c0b0b200241033a000020012002410110740c0a0b200241043a00002001200241011074024002400240024002400240024020002d00050e0700010203060405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b200220002802083602002001200241041074200220002f01063b010020012002410210740c090b200241053a000020012002410110742001200341016a412010742000412c6a2105200041286a2104024002400240024002400240024020002d00250e0700010203060405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b200220032f01223b0100200120024102107420042001109102200520011091020c080b200241063a000020012002410110742001200341016a412010744120102c2200450d0820024220370204200220003602002002200341216a41201074200120022802002200200228020810742002280204450d072000102e0c070b200241073a000020012002410110742001200341016a412010744120102c2200450d0720024220370204200220003602002002200341216a41201074200120022802002200200228020810742002280204450d062000102e0c060b200241083a000020012002410110742001200341016a412010744120102c2200450d0620024220370204200220003602002002200341216a41201074200120022802002200200228020810742002280204450d052000102e0c050b200241093a000020012002410110742001200341016a412010742001200341216a412010740240024020002d00454107470d00200241003a000020012002410110740c010b200241013a00002001200241011074024002400240024002400240024020032d00410e0700010203070405070b200241003a00000c050b200241013a00000c040b200241023a00000c030b200241033a00000c020b200241053a00000c010b200241063a00000b20012002410110740b200028024820011090020c040b2002411e3a000020012002410110740240024002400240200041086a22042d0000417f6a0e0400010203070b200241003a000020012002410110742000410c6a2802002103200041146a28020022052001107602402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b200028021820011090020c060b200241013a00002001200241011074200220002f010a3b010020012002410210742000410c6a2802002103200041146a28020022052001107602402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b0240024020002802184101460d00200241003a000020012002410110740c010b200241013a0000200120024101107420022000411c6a28020036020020012002410410742002200041206a28020036020020012002410410740b200028022421032000412c6a2802002205200110762001200320051074200220002d00093a000020012002410110742002200029033037030020012002410810740c050b200241023a00002001200241011074200220002f012a3b010020012002410210742000412c6a2802002103200041346a28020022052001107602402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b200441016a21030240024020002802384101460d00200241003a000020012002410110740c010b200241013a0000200120024101107420022000413c6a28020036020020012002410410742002200041c0006a28020036020020012002410410740b20012003412010742002200029034837030020012002410810740c040b200241033a00002001200241011074200220002f012a3b010020012002410210742000412c6a2802002103200041346a280200220520011076200441016a210402402005450d002005410574210503402001200341201074200341206a2103200541606a22050d000b0b20022000280238360200200120024104107420022000413c6a280200360200200120024104107420012004412010740c030b200241223a00002001200241011074024002400240024002400240024002400240200041086a280200417f6a0e090001020304050607080b0b200241003a000020012002410110742002200041186a3602002002200110af012000410c6a2802002103200041146a28020022002001107620012003200010740c0a0b200241013a000020012002410110742000410c6a20011091020c090b200241023a000020012002410110742000410c6a2001109102200041106a200110f5012002200041386a3602002002200110af010c080b200241033a000020012002410110742000410c6a20011091020c070b200241043a000020012002410110742000410c6a20011091020c060b200241053a000020012002410110742000410c6a2001109102200041106a200110f5010c050b200241063a000020012002410110742000410c6a20011091020c040b200241073a000020012002410110742000410c6a20011091020c030b200241083a000020012002410110742000410c6a2001109102200041106a2802002103200041186a28020022002001107620012003200010740c020b200241233a00002001200241011074024002400240024002400240200041086a22032d0000417f6a0e06000102030405070b200241003a000020012002410110742000412c6a2802002105200041346a28020022002001107620012005200010742001200341016a412010740c060b200241013a000020012002410110744120102c2200450d0620024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d052000102e0c050b200241023a000020012002410110742000412c6a2802002105200041346a28020022042001107620012005200410742001200341016a412010742002200041386a3602002002200110af010c040b200241033a000020012002410110744120102c2205450d04200041306a210020024220370204200220053602002002200341016a412010742001200228020022032002280208107402402002280204450d002003102e0b200220003602002002200110af010c030b200241043a000020012002410110744120102c2200450d0320024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d022000102e0c020b200241053a000020012002410110744120102c2200450d0220024220370204200220003602002002200341016a41201074200120022802002200200228020810742002280204450d012000102e0c010b200241243a00002001200241011074200241003a000020012002410110742002200041386a1091062001200228020022042002280208107420004180026a2103200041086a210502402002280204450d002004102e0b20012005413010742002200041f8016a28020036020020012002410410742003200110910220004184026a20011091020b200241106a24000f0b1036000bb30101027f230041106b2202240002400240024002402000280200220341c000490d00200341808001490d012003418080808004490d02200241033a00032001200241036a41011074200220002802003602042001200241046a410410740c030b200220034102743a00032001200241036a410110740c020b200220034102744101723b010a20012002410a6a410210740c010b2002200341027441027236020c20012002410c6a410410740b200241106a24000bf70201017f23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a10890721000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a10fa0421000c010b20042001200210b001200441206a200041016a200410d3084100210020042d00200d00200441c8006a41206a200441206a41216a2d00003a0000200441e0006a200441396a290000370300200441d8006a200441316a290000370300200441d0006a200441296a29000037030020042004290021370348200441f0006a200441c8006a412110b001200441f0006a2003412010ec084521000b20044190016a240020000bc81303067f017e067f230041d0036b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a0e03010203040b200042033703000c040b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020041002105200241003a0028200341726a21030240034020092005460d01200241086a20056a200420056a2206410d6a2d00003a00002001200336020420012006410e6a3602002002200541016a22063a00282003417f6a21032006210520064120470d000b20024190036a41086a2204200241086a41086a29030037030020024190036a41106a2203200241086a41106a29030037030020024190036a41186a2209200241086a41186a2903003703002002200229030837039003410121050240200641ff01714120490d00200241f0026a41186a2009290300370300200241f0026a41106a2003290300370300200241f0026a41086a200429030037030020022002290390033703f002410021050b200241b0026a41086a200241f0026a41086a290300370300200241b0026a41106a200241f0026a41106a290300370300200241b0026a41186a200241f0026a41186a290300370300200220022903f0023703b00220050d01200241f0016a41086a2205200241b0026a41086a290300370300200241f0016a41106a2204200241b0026a41106a290300370300200241f0016a41186a2203200241b0026a41186a290300370300200220022903b0023703f001200241086a200110940220022d00084101460d01200241a8016a2201200241c1006a290000370300200241a0016a2206200241396a29000037030020024198016a2209200241316a29000037030020024190016a220a200241296a290000370300200241f0006a41186a220b200241216a290000370300200241f0006a41106a220c200241196a290000370300200241f0006a41086a220d200241116a290000370300200241d0016a41086a220e2005290300370300200241d0016a41106a22052004290300370300200241d0016a41186a2204200329030037030020022002290009370370200220022903f0013703d001200241b0016a41186a22032004290300370300200241b0016a41106a22042005290300370300200241b0016a41086a2205200e290300370300200220022903d0013703b001200041106a20073602002000200837030820004200370300200020022903b0013702142000411c6a2005290300370200200041246a20042903003702002000412c6a2003290300370200200020022903703702342000413c6a200d290300370200200041c4006a200c290300370200200041cc006a200b290300370200200041d4006a200a290300370200200041dc006a2009290300370200200041e4006a2006290300370200200041ec006a20012903003702000c050b0240200541ff0171450d00200241003a00280b200241b0026a41086a200241f0026a41086a290300370300200241b0026a41106a200241f0026a41106a290300370300200241b0026a41186a200241f0026a41186a290300370300200220022903f0023703b0020b200042033703000c030b024020064104490d002004280001210620012003417b6a22053602042001200441056a36020020054108490d0020004201370300200429000521082001200341736a36020420012004410d6a360200200041106a200636020020002008370308200041146a200241086a41e40010e9081a0c030b200042033703000c020b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020041002105200241003a0028200341726a21030240034020092005460d01200241086a20056a200420056a2206410d6a2d00003a00002001200336020420012006410e6a3602002002200541016a22063a00282003417f6a21032006210520064120470d000b20024190036a41086a2204200241086a41086a29030037030020024190036a41106a2203200241086a41106a29030037030020024190036a41186a2209200241086a41186a2903003703002002200229030837039003410121050240200641ff01714120490d00200241f0026a41186a2009290300370300200241f0026a41106a2003290300370300200241f0026a41086a200429030037030020022002290390033703f002410021050b200241b0026a41086a200241f0026a41086a290300370300200241b0026a41106a200241f0026a41106a290300370300200241b0026a41186a200241f0026a41186a290300370300200220022903f0023703b00220050d01200241f0016a41086a2205200241b0026a41086a290300370300200241f0016a41106a2204200241b0026a41106a290300370300200241f0016a41186a2203200241b0026a41186a290300370300200220022903b0023703f001200241086a200110940220022d00084101460d01200241a8016a2201200241c1006a290000370300200241a0016a2206200241396a29000037030020024198016a2209200241316a29000037030020024190016a220a200241296a290000370300200241f0006a41186a220b200241216a290000370300200241f0006a41106a220c200241196a290000370300200241f0006a41086a220d200241116a290000370300200241d0016a41086a220e2005290300370300200241d0016a41106a22052004290300370300200241d0016a41186a2204200329030037030020022002290009370370200220022903f0013703d001200241b0016a41186a22032004290300370300200241b0016a41106a22042005290300370300200241b0016a41086a2205200e290300370300200220022903d0013703b001200041106a20073602002000200837030820004202370300200020022903b0013702142000411c6a2005290300370200200041246a20042903003702002000412c6a2003290300370200200020022903703702342000413c6a200d290300370200200041c4006a200c290300370200200041cc006a200b290300370200200041d4006a200a290300370200200041dc006a2009290300370200200041e4006a2006290300370200200041ec006a20012903003702000c030b0240200541ff0171450d00200241003a00280b200241b0026a41086a200241f0026a41086a290300370300200241b0026a41106a200241f0026a41106a290300370300200241b0026a41186a200241f0026a41186a290300370300200220022903f0023703b0020b200042033703000c010b200042033703000b200241d0036a24000bd411010b7f230041b0036b2202240020024180016a200110a701200241c0006a41086a220120024189016a290000370300200241c0006a41106a220320024191016a290000370300200241c0006a41186a220420024199016a290000370300200241c0006a41206a2205200241a1016a290000370300200241c0006a41286a2206200241a9016a290000370300200241c0006a41306a2207200241b1016a290000370300200241c0006a41386a2208200241b9016a290000370300200220022900810137034002400240024020022d0080014101460d00200241386a22092008290300370300200241306a22082007290300370300200241286a22072006290300370300200241206a22062005290300370300200241186a22052004290300370300200241106a220a2003290300370300200241086a220b20012903003703002002200229034037030020024198026a41186a200929030037030020024198026a41106a200829030037030020024198026a41086a20072903003703002002200629030037039802200420052903003703002003200a2903003703002001200b2903003703002002200229030037034020024180016a200241c0006a10720240024020022d0080014101460d0020024190036a410f6a200241c0006a410f6a29000037000020024190036a41086a200241c0006a41086a290000370300200220022900403703900341012101410221050c010b200241ae036a20022d0083013a000020024198036a2002418d016a2900003703002002419f036a20024194016a2900003700002002418c036a200241a0016a2d00003a0000200220022f0081013b01ac0320022002290085013703900320022002419c016a280200360288034100210120022d00840121050b20024184036a41026a2206200241ac036a41026a2d00003a0000200241e8026a41086a220320024190036a41086a290300370300200241e8026a410f6a220420024190036a410f6a290000370000200241e0026a41046a220720024188036a41046a2d00003a0000200220022f01ac033b01840320022002290390033703e80220022002280288033602e002024020010d00200241dc026a41026a20062d00003a0000200241c0026a41086a2003290300370300200241c0026a410f6a2004290000370000200241b8026a41046a20072d00003a0000200220022f0184033b01dc02200220022903e8023703c002200220022802e0023602b802200241c0006a41186a20024198026a41186a290300370300200241c0006a41106a20024198026a41106a290300370300200241c0006a41086a20024198026a41086a290300370300200220022903980237034020024180016a200241c0006a1072410121010240024020022d0080014101460d0020024190036a410f6a200241c0006a410f6a29000037000020024190036a41086a200241c0006a41086a2900003703002002200229004037039003410221030c010b200241ae036a20022d0083013a000020024198036a2002418d016a2900003703002002419f036a20024194016a2900003700002002418c036a200241a0016a2d00003a0000200220022f0081013b01ac0320022002290085013703900320022002419c016a280200360288034100210120022d00840121030b20024184036a41026a2207200241ac036a41026a22082d00003a0000200241e8026a41086a220420024190036a41086a2209290300370300200241e8026a410f6a220620024190036a410f6a220a290000370000200241e0026a41046a220b20024188036a41046a220c2d00003a0000200220022f01ac033b01840320022002290390033703e80220022002280288033602e00202402001450d0020024180016a410f6a200629000037000020024180016a41086a2004290300370300200220022903e8023703800141012101200321050c030b20024194026a41026a20072d00003a000020092004290300370300200a2006290000370000200c200b2d00003a00002008200241dc026a41026a2d00003a0000200220022f0184033b019402200220022903e80237039003200220022802e00236028803200220022f01dc023b01ac0320024180016a410f6a2201200241c0026a410f6a29000037000020024180016a41086a2204200241c0026a41086a290300370300200220022903c00237038001200241e8026a41046a200241b8026a41046a2d00003a0000200220022802b8023602e802200241c0006a410f6a2001290000370000200241c0006a41086a20042903003703002002200229038001370340410021010c020b20024180016a410f6a200429000037000020024180016a41086a2003290300370300200220022903e80237038001410121010c010b200041013a00000c010b20024190026a41026a2204200241ac036a41026a2d00003a0000200241f8016a41086a2206200241c0006a41086a290300370300200241f8016a410f6a2207200241c0006a410f6a290000370000200241f0016a41046a2208200241e8026a41046a2d00003a0000200241ec016a41026a220920024194026a41026a2d00003a0000200220022f01ac033b019002200220022903403703f801200220022802e8023602f001200220022f0194023b01ec01200241d0016a410f6a220a20024190036a410f6a290000370000200241d0016a41086a220b20024190036a41086a290300370300200241c8016a41046a220c20024188036a41046a2d00003a000020022002290390033703d00120022002280288033602c801024020010d00200020022f0190023b0001200041046a20053a0000200041056a20022903f8013700002000411c6a20022802f001360000200041216a20022f01ec013b0000200041036a20042d00003a00002000410d6a2006290300370000200041146a2007290000370000200041206a20082d00003a0000200041236a20092d00003a0000200041246a20033a0000200041003a0000200041256a20022903d0013700002000412d6a200b290300370000200041346a200a2900003700002000413c6a20022802c801360000200041c0006a200c2d00003a00000c010b200041013a00000b200241b0036a24000ba40202057f027e230041106b21020240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020054101470d01024002400240024020064108490d00200429000121072001200341776a22053602042001200441096a36020020054108490d002004290009210820012003416f6a22033602042001200441116a22043602002003450d0320042d0000210520012003417f6a3602042001200441016a36020041002101024020050e03030200040b410221010c020b200041033a00100f0b410121010b200020013a0010200020083703082000200737030020002002280009360011200041146a2002410c6a2800003600000f0b200041033a00100f0b200041033a00100f0b200041033a00100ba10101017f230041106b22022400200241013a00082001200241086a41011074200220002903003703082001200241086a41081074200220002903083703082001200241086a41081074024002400240024020002d00100e03000102030b200241003a00082001200241086a410110740c020b200241013a00082001200241086a410110740c010b200241023a00082001200241086a410110740b200241106a24000b9f0101057f230041106b2202240020004100360208200042013702002002200128020036020c20002002410c6a41041074200128020421032001410c6a28020022042000107602402004450d0020032004410c6c6a2105034020032802002104200341086a28020022062000107620002004200610742003410c6a22032005470d000b0b200220012802103602082000200241086a41041074200241106a24000bd20603057f017e027f230041a0046b2202240041002103200241003a009003024002400240024002400340200128020022042802042205450d01200241f0026a20036a200428020022062d00003a000020042005417f6a3602042004200641016a3602002002200341016a22043a0090032004210320044120470d000b20024190026a41186a200241f0026a41186a2903002207370300200241f0016a41086a200241f0026a41086a290300370300200241f0016a41106a200241f0026a41106a290300370300200241f0016a41186a2007370300200220022903f0023703f0012001280200220428020422034108490d012004280200220529000021072004200341786a3602042004200541086a360200200241f0026a200110990220022802f4022205450d02200241fc026a280200210420022802f802210620022802f002210320024190026a200241f0026a41106a41e00010e9081a200241f0026a200110990220022802f402450d03200241206a200241f0026a41f00010e9081a200241086a2201200241f0016a41086a290300370300200241106a2208200241f0016a41106a290300370300200241186a2209200241f0016a41186a290300370300200220022903f00137030020024190016a20024190026a41e00010e9081a200041146a2004360200200020063602102000200536020c2000200336020820002007370300200041186a20024190016a41e00010e9081a200041f8006a200241206a41f00010e9081a20004180026a2009290300370300200041f8016a2008290300370300200041f0016a2001290300370300200041e8016a20022903003703000c040b0240200341ff0171450d00200241003a0090030b2000410036020c0c030b2000410036020c0c020b2000410036020c0c010b2000410036020c02402004450d00200441246c21032005210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a280200102e0c030b2004410c6a280200450d02200441086a280200102e0c020b2004410c6a280200450d01200441086a280200102e0c010b200441086a280200450d00200441046a280200102e0b200441246a21042003415c6a22030d000b0b2006450d00200641246c450d002005102e0b200241a0046a24000b881d05057f017e087f027e057f230041d0056b2202240041002103200241003a00a805024002400240024002400240024002400340200128020022042802042205450d0120024188056a20036a200428020022062d00003a000020042005417f6a3602042004200641016a3602002002200341016a22043a00a8052004210320044120470d000b200241e0036a41186a20024188056a41186a2903002207370300200241c0026a41086a220420024188056a41086a290300370300200241c0026a41106a220320024188056a41106a290300370300200241c0026a41186a2205200737030020022002290388053703c002200241a0016a41186a22062005290300370300200241a0016a41106a22052003290300370300200241a0016a41086a22032004290300370300200220022903c0023703a00120024180016a41186a200629030037030020024180016a41106a200529030037030020024180016a41086a2003290300370300200220022903a00137038001200241186a200110ad0120022802180d02200228021c210841002103200241003a00a8050340200128020022042802042205450d0220024188056a20036a200428020022062d00003a000020042005417f6a3602042004200641016a3602002002200341016a22043a00a8052004210320044120470d000b200241e0036a41186a20024188056a41186a2903002207370300200241c0026a41086a220420024188056a41086a290300370300200241c0026a41106a220320024188056a41106a290300370300200241c0026a41186a2205200737030020022002290388053703c002200241e0016a41186a22062005290300370300200241e0016a41106a22052003290300370300200241e0016a41086a22032004290300370300200220022903c0023703e001200241c0016a41186a2006290300370300200241c0016a41106a2005290300370300200241c0016a41086a2003290300370300200220022903e0013703c00141002103200241003a00a8050340200128020022042802042205450d0420024188056a20036a200428020022062d00003a000020042005417f6a3602042004200641016a3602002002200341016a22043a00a8052004210320044120470d000b200241e0036a41186a20024188056a41186a2903002207370300200241c0026a41086a220420024188056a41086a290300370300200241c0026a41106a220320024188056a41106a290300370300200241c0026a41186a2205200737030020022002290388053703c002200241a0026a41186a22062005290300370300200241a0026a41106a22052003290300370300200241a0026a41086a22032004290300370300200220022903c0023703a00220024180026a41186a200629030037030020024180026a41106a200529030037030020024180026a41086a2003290300370300200220022903a00237038002200241106a200110ad0120022802100d0520022802142209200128020028020441246e2204200420094b1bad42247e2207422088a7450d040c070b0240200341ff0171450d00200241003a00a8050b200241a0016a41086a200241c0026a41086a290300370300200241a0016a41106a200241c0026a41106a290300370300200241a0016a41186a200241c0026a41186a290300370300200220022903c0023703a001200041003602040c050b0240200341ff0171450d00200241003a00a8050b200241e0016a41086a200241c0026a41086a290300370300200241e0016a41106a200241c0026a41106a290300370300200241e0016a41186a200241c0026a41186a290300370300200220022903c0023703e001200041003602040c040b200041003602040c030b0240200341ff0171450d00200241003a00a8050b200241a0026a41086a200241c0026a41086a290300370300200241a0026a41106a200241c0026a41106a290300370300200241a0026a41186a200241c0026a41186a290300370300200220022903c0023703a002200041003602040c020b2007a72204417f4c0d02024002400240024020040d004104210a0c010b2004102c220a450d010b2001200128020441016a2203360204200441246ead2107200320012802084b0d01024002402009450d00200241ed036a210b2002419b056a220c41056a210d4100210e0340200128020022042802042203450d04200428020022052d0000210620042003417f6a3602042004200541016a360200024002400240024002400240024002400240024020060e08000e010e030402050e0b200241086a200110ad0120022802080d0d200128020022032802042206200228020c2204490d0d2004417f4c0d100240024020040d00410121050c010b200410322205450d0d2001280200220328020421060b20062004490d0620052003280200200410e90821062003280204220f20044f0d052004200f41b8b2c0001056000b41002103200241003a00a80502400340200128020022042802042205450d0120024188056a20036a200428020022062d00003a000020042005417f6a3602042004200641016a3602002002200341016a22043a00a8052004210320044120470d000b2002200d2900003700c5052002200c2900003703c005200220022900c5053700b505200220022903c0053703b005200220022903b0053703f804200220022900b5053700fd04200228008f05210620022f018805210420022d008a052103200228008b0521052002290093052110200220022900fd043700ed04200220022903f8043703e804200220022900ed043700dd04200220022903e8043703d804200220022900dd043700e503200220022903d8043703e003200b20022f00d5043b0000200b41026a200241d5046a41026a2d00003a0000201042808080807083211120054108762112200420034110747221032010a7210f410021130c080b200341ff0171450d0c200241003a00a8050c0c0b20024188056a200110ac01200228028c052206450d0b20022f01880520022d008a0541107472210320022d008b05210520022903900522104280808080708321112010a7210f410121130c060b20024188056a200110ac01200228028c052206450d0a20022f01880520022d008a0541107472210320022d008b05210520022903900522104280808080708321112010a7210f410221130c050b20024188056a200110ac01200228028c052206450d0920022f01880520022d008a0541107472210320022d008b05210520022903900522104280808080708321112010a7210f410321130c040b200128020022042802042203450d08200428020022052d0000210620042003417f6a3602042004200541016a36020020060d08200241c0056a200110fd0520022802c00522054102460d08200241e0036a41086a20024188056a41086a29020037030020022002290288053703e00320022802c805210f20022802c40521064104211342002111410021120c020b2003200f20046b3602042003200328020020046a3602002006450d07200241e0036a41086a20024188056a41086a29020037030020022002290288053703e003200641087621122004ad22104220862010842210422088a7210f2010a7210641052113420021110c010b2005102e0c060b0b200241c0026a41086a200241e0036a41086a2903002210370300200241c0046a41086a22142010370300200220022903e00322103703c002200220103703c004024020074220882210a722042007a7470d00200441016a22152004490d0820044101742216201520152016491b22154104201541044b1bad42247e2210422088a74541027421152010a721160240024020040d0020024100360288050c010b20024104360290052002200a360288052002200441246c36028c050b200241e0036a2016201520024188056a107d20022802e803211520022802e0034101460d0320022802e403210a20074220882210a72104201541246ead21070b200a200441246c6a22042011200fad8437000c2004200636000820042012410874200541ff017172360004200420033b0001200420133a0000200441036a20034110763a0000200420022903c0043700142004411c6a20142903003700002010422086200742ffffffff0f83844280808080107c2107200e41016a220e2009470d000b200128020421030b20012003417f6a360204200a450d03200241e0006a41186a220420024180016a41186a290300370300200241e0006a41106a220320024180016a41106a290300370300200241e0006a41086a220520024180016a41086a290300370300200241c0006a41086a2206200241c0016a41086a290300370300200241c0006a41106a2201200241c0016a41106a290300370300200241c0006a41186a2209200241c0016a41186a290300370300200241206a41086a220e20024180026a41086a290300370300200241206a41106a220f20024180026a41106a290300370300200241206a41186a221320024180026a41186a2903003703002002200229038001370360200220022903c0013703402002200229038002370320200020073702082000200a36020420002008360200200041106a2002290360370200200041186a2005290300370200200041206a2003290300370200200041286a2004290300370200200041306a2002290340370200200041386a2006290300370200200041c0006a2001290300370200200041c8006a2009290300370200200041e8006a2013290300370200200041e0006a200f290300370200200041d8006a200e290300370200200041d0006a20022903203702000c040b2015450d040b1036000b02402007422088a72204450d00200441246c2103200a210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a280200102e0c030b2004410c6a280200450d02200441086a280200102e0c020b2004410c6a280200450d01200441086a280200102e0c010b200441086a280200450d00200441046a280200102e0b200441246a21042003415c6a22030d000b0b2007a72204450d00200441246c450d00200a102e0b200041003602040b200241d0056a24000f0b1038000b9e0703067f017e017f230041a0046b2202240041002103200241003a00900320012802042104417f21050240024002400240034020042003460d01200241f0026a20036a200128020022062d00003a00002001200420056a3602042001200641016a3602002002200341016a22063a0090032005417f6a21052006210320064120470d000b20024190026a41086a2203200241f0026a41086a29030037030020024190026a41106a2205200241f0026a41106a29030037030020024190026a41186a2207200241f0026a41186a290300370300200220022903f00237039002200641ff0171411f4b0d010c020b200341ff0171450d01200241003a0090030c010b200241f0016a41086a2003290300370300200241f0016a41106a2005290300370300200241f0016a41186a200729030037030020022002290390023703f001024002400240200420066b22034108490d002001280200220529000021082001200341786a3602042001200541086a360200200241f0026a2001109b0220022802f4022205450d01200241fc026a280200210320022802f802210620022802f002210420024190026a200241f0026a41106a41e00010e9081a200241f0026a2001109b0220022802f402450d02200241206a200241f0026a41f00010e9081a200241086a2201200241f0016a41086a290300370300200241106a2207200241f0016a41106a290300370300200241186a2209200241f0016a41186a290300370300200220022903f00137030020024190016a20024190026a41e00010e9081a200041146a2003360200200020063602102000200536020c2000200436020820002008370300200041186a20024190016a41e00010e9081a200041f8006a200241206a41f00010e9081a20004180026a2009290300370300200041f8016a2007290300370300200041f0016a2001290300370300200041e8016a20022903003703000c040b2000410036020c0c030b2000410036020c0c020b2000410036020c02402003450d00200341246c21012005210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a280200102e0c030b2003410c6a280200450d02200341086a280200102e0c020b2003410c6a280200450d01200341086a280200102e0c010b200341086a280200450d00200341046a280200102e0b200341246a21032001415c6a22010d000b0b2006450d01200641246c450d012005102e0c010b2000410036020c0b200241a0046a24000bd80e03057f037e067f23004190046b2202240041002103200241003a00c8032001280204417f6a210402400240024002400240024002400240024003402004417f460d01200241a8036a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8032004417f6a21042005210320054120470d000b200241d0036a41086a2204200241a8036a41086a290300370300200241d0036a41106a2203200241a8036a41106a290300370300200241d0036a41186a2206200241a8036a41186a290300370300200220022903a8033703d003200541ff0171411f4d0d0120024188016a41086a2004290300220737030020024188016a41106a2003290300220837030020024188016a41186a20062903002209370300200241e8006a41186a2009370300200241e8006a41106a2008370300200241e8006a41086a2007370300200220022903d00322073703a8022002200737038801200220073703682002200110ab0120022802000d042002280204210641002103200241003a00c8032001280204417f6a210403402004417f460d03200241a8036a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8032004417f6a21042005210320054120470d000b200241d0036a41086a2203200241a8036a41086a290300370300200241d0036a41106a220a200241a8036a41106a290300370300200241d0036a41186a220b200241a8036a41186a290300370300200220022903a8033703d003200541ff0171411f4d0d03200241c8016a41086a20032903002207370300200241c8016a41106a200a2903002208370300200241c8016a41186a200b2903002209370300200241a8016a41186a2009370300200241a8016a41106a2008370300200241a8016a41086a2007370300200220022903d00322073703a802200220073703c801200220073703a80141002103200241003a00c80303402004417f460d06200241a8036a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8032004417f6a21042005210320054120470d000b200241d0036a41086a2204200241a8036a41086a290300370300200241d0036a41106a2203200241a8036a41106a290300370300200241d0036a41186a220a200241a8036a41186a290300370300200220022903a8033703d003200541ff0171411f4d0d0620024188026a41086a2004290300220737030020024188026a41106a2003290300220837030020024188026a41186a200a2903002209370300200241e8016a41186a2009370300200241e8016a41106a2008370300200241e8016a41086a2007370300200220022903d00322073703a8022002200737038802200220073703e801200241a8036a200110b50520022802a8032204450d0720022902ac032107200241c8006a41186a2201200241e8006a41186a290300370300200241c8006a41106a2203200241e8006a41106a290300370300200241c8006a41086a2205200241e8006a41086a290300370300200241286a41086a220a200241a8016a41086a290300370300200241286a41106a220b200241a8016a41106a290300370300200241286a41186a220c200241a8016a41186a290300370300200241086a41086a220d200241e8016a41086a290300370300200241086a41106a220e200241e8016a41106a290300370300200241086a41186a220f200241e8016a41186a29030037030020022002290368370348200220022903a801370328200220022903e801370308200020073702082000200436020420002006360200200041106a2002290348370200200041186a2005290300370200200041206a2003290300370200200041286a2001290300370200200041306a2002290328370200200041386a200a290300370200200041c0006a200b290300370200200041c8006a200c290300370200200041e8006a200f290300370200200041e0006a200e290300370200200041d8006a200d290300370200200041d0006a20022903083702000c080b200341ff0171450d00200241003a00c8030b20024188016a41086a200241a8026a41086a29030037030020024188016a41106a200241a8026a41106a29030037030020024188016a41186a200241a8026a41186a290300370300200220022903a80237038801200041003602040c060b200341ff0171450d00200241003a00c8030b200241c8016a41086a200241a8026a41086a290300370300200241c8016a41106a200241a8026a41106a290300370300200241c8016a41186a200241a8026a41186a290300370300200220022903a8023703c801200041003602040c040b200041003602040c030b200341ff0171450d00200241003a00c8030b20024188026a41086a200241a8026a41086a29030037030020024188026a41106a200241a8026a41106a29030037030020024188026a41186a200241a8026a41186a290300370300200220022903a80237038802200041003602040c010b200041003602040b20024190046a24000b0f00200028020020012002107441000b8a0201027f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b2000200320011074200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a419cebc000200241086a103d2101200241206a240020010bdf0101087f0240200028020422020d0041000f0b2000280200210320012d002041ff01712104037f200241346a210020022f01322105410021060240024003400240200520062207470d00200521070c030b02400240024020012000412010ec082206450d00410121082006417f4c0d050c010b2004200041206a2d00002206460d01417f200420064720042006491b21080b200741016a2106200041216a210041012109200841016a0e03030201030b0b410121090b20090f0b024020030d0041000f0b2003417f6a2103200220074102746a41a0036a28020021020c000b0b980101057f0240200028020422020d0041000f0b200028020021030340200241346a210420022f013221054100210002400240034020052000460d0120012004412010ec082206450d02200041016a2100200441206a21042006417f4a0d000b2000417f6a21050b024020030d0041000f0b2003417f6a2103200220054102746a4194036a28020021020c010b0b200220004102746a41046a0b9a0101057f0240200028020422020d0041000f0b20002802002103034020024190026a210420022f018e0221054100210002400240034020052000460d0120012004412010ec082206450d02200041016a2100200441206a21042006417f4a0d000b2000417f6a21050b024020030d0041000f0b2003417f6a2103200220054102746a41f0046a28020021020c010b0b2002200041186c6a41046a0b960101057f0240200028020422020d0041000f0b200028020021030340200241e0006a210420022f015e21054100210002400240034020052000460d0120012004412010ec082206450d02200041016a2100200441206a21042006417f4a0d000b2000417f6a21050b024020030d0041000f0b2003417f6a2103200220054102746a41c0036a28020021020c010b0b200220004103746a0ba90301087f02400240024020012802042203450d00200128020021040c010b41a003102c2203450d0141002104200341003b01322003410036020020012003360204200141003602000b20022d002041ff017121050340200341346a210620032f0132210741002108024003400240200720082209470d00200721090c020b02400240024020022006412010ec082208450d004101210a2008417f4c0d040c010b2005200641206a2d00002208460d01417f200520084720052008491b210a0b200941016a2108200641216a2106200a41016a0e03020001020b0b20002004360204200041106a20013602002000410c6a2009360200200041086a2003360200200041013602000f0b02402004450d002004417f6a2104200320094102746a41a0036a28020021030c010b0b20004100360204200041106a20013602002000410c6a2009360200200041086a2003360200200041146a20022900003700002000411c6a200241086a290000370000200041246a200241106a2900003700002000412c6a200241186a290000370000200041346a200241206a2d00003a0000200041003602000f0b1036000bc01c03067f037e187f230041e0016b22032400200341206a41186a200141186a290000370300200341206a41106a200141106a290000370300200341206a41086a200141086a2900003703002003200129000037032002400240024002400240024002400240024002400240024002400240024020002802042204450d00200028020021050c010b419403102c2204450d0141002105200441003b01322004410036020020002004360204200041003602000b02400340200441346a210620042f01322107410021010240034020072001460d01200341206a2006412010ec082208450d03200141016a2101200641206a21062008417f4a0d000b2001417f6a21070b02402005450d002005417f6a2105200420074102746a4194036a28020021040c010b0b200341086a2003412c6a2902002209370300200341106a200341346a290200220a370300200341186a2003413c6a280200220136020020032003290224220b3703002003280220210c200341a0016a41186a22062001360200200341a0016a41106a2208200a370300200341a0016a41086a220520093703002003200b3703a001024020042f01322201410a4b0d00200341206a41186a2006280200360200200341206a41106a2008290300370300200341206a41086a2005290300370300200320032903a001370320200441346a2106200141016a21080240200741016a220520014b220d0d00200620054105746a200620074105746a20082007417f736a41057410ea081a0b200620074105746a2201200c360000200120032903203700042001410c6a200341286a290300370000200141146a200341306a2903003700002001411c6a200341386a280200360000200441046a21010240200d0d00200120054102746a200120074102746a20082007417f736a41027410ea081a0b200120074102746a2002360200200420083b01320c0d0b410521014100210e02400240200741054f0d0041042101200721080c010b41052108024002402007417b6a0e020201000b200741796a21084101210e410621010c010b410021084101210e0b419403102c2206450d01200641003b013220064100360200200620042f0132220d2001417f736a22073b0132200441346a220f20014105746a22052800002110200341386a2005411c6a280000360200200341306a200541146a290000370300200341286a2005410c6a290000370300200320052900043703202007410c4f0d02200d200141016a22056b2007470d03200441046a220d20014102746a2802002111200641346a200f20054105746a200741057410e9081a200641046a200d20054102746a200741027410e9081a200420013b0132200341c0016a41086a200341206a41086a2205290300370300200341c0016a41106a200341206a41106a220d290300370300200341c0016a41186a200341206a41186a220f280200360200200320032903203703c00120062004200e1b22072f01322101200f200341a0016a41186a280200360200200d200341a0016a41106a2903003703002005200341a0016a41086a290300370300200320032903a001370320200741346a210e200141016a21120240200841016a221320014b22140d00200e20134105746a200e20084105746a20122008417f736a41057410ea081a0b200e20084105746a2201200c360000200120032903203700042001410c6a2005290300370000200141146a200d2903003700002001411c6a200f280200360000200741046a2101024020140d00200120134102746a200120084102746a20122008417f736a41027410ea081a0b200120084102746a2002360200200720123b013220034180016a41086a2215200341c0016a41086a2216290300220937030020034180016a41106a2217200341c0016a41106a2218290300220a37030020034180016a41186a2219200341c0016a41186a221a2802002201360200200320032903c001220b37038001200341e0006a41186a22122001360200200341e0006a41106a2213200a370300200341e0006a41086a221420093703002003200b370360024002400240200428020022020d004100211b0c010b4100211b2011211c2006211d2010211e034020042f01302104200341a0016a41186a221f2012280200360200200341a0016a41106a22202013290300370300200341a0016a41086a22212014290300370300200320032903603703a0014101450d0720022f0132220e410b490d024100210541042101024020044105490d0020042101024002402004417b6a0e020201000b200441796a210441012105410621010c010b4100210441012105410521010b41c403102c2206450d04200641003b013220064100360200200620022f013222112001417f736a22083b0132200241346a222220014105746a22072800002110200341206a41186a220c2007411c6a280000360200200341206a41106a220d200741146a290000370300200341206a41086a220f2007410c6a290000370300200320072900043703202008410c4f0d082011200141016a22076b2008470d09200241046a222320014102746a2802002111200641346a202220074105746a200841057410e9081a200641046a2023200741027422076a200841027410e9081a200220013b01322016200f2903003703002018200d290300370300201a200c280200360200200320032903203703c00120062f0132220841016a21222008410c4f0d0a200e20016b22012022470d0b201b41016a211b20064194036a200220076a4194036a200141027410e9081a4100210102400340200620014102746a4194036a280200220720013b0130200720063602002001200120084922076a220120084b0d0120070d000b0b2019201a2802003602002017201829030037030020152016290300370300200320032903c001370380012006200220051b22072f0132210e200c201f280200360200200d2020290300370300200f2021290300370300200320032903a001370320200741346a2108200e41016a21050240200441016a2201200e4b221f0d00200820014105746a200820044105746a2004417f7320056a41057410ea081a0b200820044105746a2208201e360000200820032903203700042008410c6a200f290300370000200841146a200d2903003700002008411c6a200c280200360000200741046a21080240201f0d00200820014102746a200820044102746a2004417f7320056a41027410ea081a0b20082004410274220d6a201c36020020074194036a21080240200441026a220f200e41026a220c4f0d002008200f4102746a200820014102746a2001417f73200c6a41027410ea081a0b200820014102746a201d360200200720053b013202402001200c4f0d002007200d6a4198036a2101034020012802002208200441016a22043b013020082007360200200141046a210120052004470d000b0b2014201529030037030020132017290300370300201220192802003602002003200329038001370360200221042002280200220121022011211c2006211d2010211e20010d000b0b200341c0006a41186a20122802002201360200200341c0006a41106a20132903002209370300200341c0006a41086a2014290300220a37030020032003290360220b370340201a2001360200201820093703002016200a3703002003200b3703c00120002802042208450d0a2000280200210741c403102c2201450d022001200836029403200141003b013220014100360200200841003b013020082001360200200020013602042000200741016a360200200341206a41186a200341c0016a41186a280200360200200341206a41106a200341c0016a41106a290300370300200341206a41086a200341c0016a41086a290300370300200320032903c0013703202007201b470d0b20012f01322207410b4f0d0c200120074105746a220841346a2010360000200841386a2003290320370000200841c0006a200341286a290300370000200841c8006a200341306a290300370000200841d0006a200341386a2802003600002001200741016a22083b0132200120084102746a4194036a2006360200200120074102746a41046a2011360200200620083b0130200620013602002000200028020841016a3602080c0e0b20022f01322108200341206a41186a220c200341a0016a41186a280200360200200341206a41106a220d200341a0016a41106a290300370300200341206a41086a220f200341a0016a41086a290300370300200320032903a001370320200441016a2101200241346a2106200841016a21070240200420084f22050d00200620014105746a200620044105746a2004417f7320076a41057410ea081a0b200620044105746a2206201e360000200620032903203700042006410c6a200f290300370000200641146a200d2903003700002006411c6a200c280200360000200241046a2106024020050d00200620014102746a200620044102746a2004417f7320076a41027410ea081a0b20062004410274220c6a201c36020020024194036a2106200841026a2104024020050d00200c20066a41086a200620014102746a2001417f7320046a41027410ea081a0b200620014102746a201d360200200220073b0132200120044f0d0c200841016a210720022001417f6a22014102746a4198036a2106034020062802002208200141016a22013b013020082002360200200641046a210620072001470d000c0d0b0b200420014102746a41046a20023602000c0c0b1036000b2007410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b2008410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2022410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b2000200028020841016a3602080b200341e0016a24000beb0201067f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a28020020002802006b716b4101470d00200221030240024002402002450d00200220026a22032002490d04200141106a41086a4104360200200120024102743602142001200028020836021020012003410274200341ffffffff0371200346410274200141106a107d200141086a280200210320012802004101460d01200020012802043602082000410c6a200341027622033602000b20032002410174470d0420002802002204200041046a28020022054d0d022005200220046b22064f0d01200041086a280200220320024102746a2003200541027410e9081a200041046a2200200028020020026a3602000c020b2003450d021036000b200041086a2802002202200320066b22034102746a200220044102746a200641027410e9081a200020033602000b200141206a24000f0b1038000b41c4ebc000412b41f0ebc0001039000bd20302037f017e23004180126b2203240020034280808080802037020c2003200236021c200320013602182003200341186a360208200341b80e6a200341086a10ed010240024020032903a00f4203510d00200341f00a6a200341b80e6a41c80310e9081a02402003280208220228020422044104490d0020022802002205280000210120022004417c6a3602042002200541046a360200200341880a6a200341f00a6a41e80010e9081a20032903d80b2106200341b0076a200341e00b6a41d80210e9081a0c020b024020032903d80b4202510d0020032d00f00a41ff01714102470d0020032802f80a450d0020032802f40a102e0b200341880c6a108b020b420321060b200341c8066a200341880a6a41e80010e9081a200341f0036a200341b0076a41d80210e9081a0240024020064203510d00200341206a200341c8066a41e80010e9081a200320063703880120034190016a200341f0036a41d80210e9081a200320013602e803024020032802082802040d002000200341206a41d00310e9081a0c020b20004203370368024020064202510d0020032d002041ff01714102470d002003280228450d002003280224102e0b200341b8016a108b020c010b200042033703680b20034180126a24000bef1a03037f037e197f230041f0036b2205240020012802042106200128020021072001280208220141086a2900002108200141106a29000021092001290000210a200541186a220b200141186a290000370300200541106a220c2009370300200541086a220d20083703002005200a3703002003410174210e2005410772210f200541c8016a41186a2110200541c8016a410c6a2111200541c8016a41206a211241002113410021144100211502400240024002400240024002400240024002400240024002400240024002400340201541017621010240024020154101710d00200120034b0d03200541003a00d001200520013602cc01200520023602c8010c010b200120034b0d03200120034f0d04200541013a00d001200520023602c801200520013602cc012005200220016a2d000041f001713a00d1010b200541d0036a20072005200541c8016a200628020c110400024020052802d00322160d00200541c8016a41086a2213200541086a290300370300200541c8016a41106a2203200541106a290300370300200541c8016a41186a2217200541186a290300370300200520052903003703c8014130102c2201450d10200120052903c80137000120012005290020370021200120144100473a0000200141096a2013290300370000200141116a2003290300370000200141196a2017290300370000200141286a200541276a29000037000020004101360200200020013602040c0f0b20052802d803210120052802d4032118024002400240200428020c20144b0d002001417f4c0d130240024020010d00410121170c010b2001102c2217450d130b20172016200110e90821192010200b290300370300200541c8016a41106a221a200c290300370300200541c8016a41086a221b200d290300370300200520052903003703c801024020042802082217200441046a221c280200470d00201741016a221d2017490d142017410174221e201d201e201d4b1b221d4104201d41044b1bad42307e2208422088a745410274211d2008a7211e0240024020170d00200541003602200c010b200541043602282005201741306c360224200520042802003602200b200541d0036a201e201d200541206a107d20052802d803211720052802d0034101460d02200420052802d403360200201c201741306e360200200428020821170b2004280200201741306c6a2217201936020420172014360200201720052903c8013702102017410c6a2001360200201741086a2001360200201741186a201b290300370200201741206a201a290300370200201741286a20102903003702002004200428020841016a3602080b200541c8016a2016200110a80220052d00c8014101460d0e201441016a21140c010b20170d100c110b034020052802e401211f20052802e001212020052802dc01212120052802d801211920052802d401211720052802d001211a20052802cc012101200541206a201241a80110e9081a200528029403211b200528029003211c024002400240024020010e05100f000102100b410021010240201741017420196b2222200e20136b221b201b20224b1b2223450d000340201320016a221b410176221c20034f0d0a201920016a221d410176221e20174f0d0b2002201c6a2d0000221c410f71201c41f00171410476201b4101711b201a201e6a2d0000221b410f71201b410476201d4101711b470d012023200141016a2201470d000b202321010b024020012022470d00202221010c030b200042003702000c110b2005201f3602dc01200520203602d801200520213602d401200520193602d001200520173602cc012005201a3602c8012010200541206a41a80110e9081a02400240200e2013460d002013410176220120034f0d0b200541c8016a200220016a2d00002201410f71200141047620134101711b410c6c6a220128020022214102470d01200042003702000c120b410021010240201c450d00201b417f4c0d1502400240201b0d00410121010c010b201b102c2201450d150b2001201c201b10e9081a0b20002001360204200041003602002000410c6a201b360200200041086a201b3602000c110b20012802042120200141086a280200211f41012122410121010c010b20052802a0032123200528029c03212220052802980321012005201f3602d001200520203602cc01200520213602c8012011200541206a41a80110e9081a20052001360284032005201b360280032005201c3602fc02410021010240201741017420196b221f200e20136b22212021201f4b1b2220450d000340201320016a221b410176221c20034f0d0b201920016a221d410176221e20174f0d0c2002201c6a2d0000221c410f71201c41f00171410476201b4101711b201a201e6a2d0000221b410f71201b410476201d4101711b470d012020200141016a2201470d000b202021010b02402001201f460d00200042003702000c100b024002402021201f460d002013201f6a2201410176221720034f0d0d200541c8016a200220176a2d00002217410f71201741047620014101711b410c6c6a221728020022214102470d01200042003702000c110b4100210102402022450d002023417f4c0d140240024020230d00410121010c010b2023102c2201450d140b20012022202310e9081a0b20002001360204200041003602002000410c6a2023360200200041086a20233602000c100b201f41016a2122201f41016a210120172802042120201741086a280200211f0b200120156a2115201320226a211302402021450d00200541c8016a2020201f10a80220052d00c8014101460d0e0c010b0b02400240201f4120460d002010200b290300370300200541c8016a41106a2201200c290300370300200541c8016a41086a2217200d290300370300200520052903003703c801201f417f4c0d1202400240201f0d00410121190c010b201f102c2219450d120b20192020201f10e9082119200541d0036a41186a221a2010290300370300200541d0036a41106a221b2001290300370300200541d0036a41086a221c2017290300370300200520052903c8013703d0034130102c2201450d11200141043a0000200120052903d003370001200120052f00c8013b00212001201f36002c2001201f36002820012019360024200141096a201c290300370000200141116a201b290300370000200141196a201a290300370000200141236a200541c8016a41026a2d00003a0000410121170c010b41002117200541c8016a41026a41003a0000200541003b01c80120202f00002119200541cc036a41026a202041026a2d00003a00002020411f6a2d0000211a202041176a29000021082020280003210120202900072109200541d0036a41086a221b2020410f6a290000370300200541d0036a41106a221c2008370300200541d0036a41186a221d201a3a0000200520193b01cc03200520093703d0032010201d2d00003a0000200541c8016a41106a201c290300370300200541c8016a41086a201b290300370300200520052903d0033703c8010b200541c8036a41026a2219200541cc036a41026a2d00003a0000200541a8036a41086a221a200541c8016a41086a290300370300200541a8036a41106a221b200541c8016a41106a290300370300200541a8036a41186a221c2010280200360200200520052f01cc033b01c803200520052903c8013703a803024020170d00200f20052903a803370000200f41086a201a290300370000200f41106a201b290300370000200f41186a201c2d00003a0000200520052f01c8033b010020052001360003200520192d00003a00022018450d012016102e0c010b0b20004101360200200020013602040c0c0b2001200341a0f0cc00104d000b2001200341b0f0cc00104d000b2001200341c0f0cc00103c000b201c200341e0efcc00103c000b201e201741e0efcc00103c000b2001200341e0efcc00103c000b201c200341e0efcc00103c000b201e201741e0efcc00103c000b2017200341e0efcc00103c000b41002104024002400240201741017420196b200e20136b2215470d004100210441002101024002402015450d00410021010340201920016a221b410176221c20174f0d04201320016a221d410176221e20034f0d05201a201c6a2d0000221c410f71201c41f00171410476201b4101711b2002201e6a2d0000221b410f71201b410476201d4101711b470d012015200141016a2201470d000c020b0b20012015470d010b2020417f4c0d080240024020200d00410121040c010b2020102c2204450d080b20042021202010e9081a2020ad220842208620088421080b2000200436020420004100360200200041086a20083702000c040b201c201741e0efcc00103c000b201e200341e0efcc00103c000b200042003702000c010b20052d00c9012113200541d0036a41086a2203200541086a290300370300200541d0036a41106a2217200541106a290300370300200541d0036a41186a2219200541186a290300370300200520052903003703d0034130102c2201450d02200141033a0000200120052903d003370001200120133a0021200120052901a803370122200141096a2003290300370000200141116a2017290300370000200141196a2019290300370000200141286a200541ae036a29010037010020004101360200200020013602040b2018450d002016102e0b200541f0036a24000f0b1036000b1038000b9e1203027f027e127f230041b0096b2203240041002104200341003602a806200320023602a406200320013602a006420321050240024020020d0042002106410021070c010b41012107200341013602a80642002106024020012d000022080d00420021050c010b0240024002400240024002400240024002400240200841c00171220941c001460d0002402009418001460d00200941c000470d0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c0c0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c0a0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c0a0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c080b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c080b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c060b2007417f6a21070c080b2007417f6a21070c070b2007417f6a21070c060b410121070c040b410121070c020b410121070b2008ad422086428002842106420121050c020b2008ad4220862106420121050c010b2008ad4220862106420221050b2006422088a721094101210a41012108024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402005200684a741ff01710e040500010a050b2009410171220b450d03200720024f0d0141002108200120076a2d00004110490d030c090b2009410171220b450d010240200720024f0d0041002108200120076a2d00004110490d020c090b2007200241f4cec800103c000b200720024184cfc800103c0c030b2007200941016a4101766a220c20024b0d052003200c3602a806200341106a200341a0066a10d70420032802100d0520032802a806220d20032802146a220e20032802a4064b0d052003200e3602a806200341e0046a200341f0076a41c00110e9081a410121040c010b2007200941016a4101766a220c20024b0d042003200c3602a806200c41026a220820024b0d04200320083602a806200c417e4f0d062001200c6a2f00002104410021094100210d0240200642800283500d00200341086a200341a0066a10d70420032802080d054101210820032802a806220e200328020c6a220f20032802a4064b0d062003200f3602a8064101210d0b200341023602a40920034102360298092003410236028c092003410236028009200341023602f408200341023602e808200341023602dc08200341023602d008200341023602c408200341023602b808200341023602ac08200341023602a00820034102360294082003410236028808200341023602fc07200341023602f007200341f0076a2108200441ffff037121100340024020102009410f7176410171450d002003200341a0066a10d70420032802000d0620032802a8062211200328020422126a220420032802a4064b0d06200320043602a806200841086a2004360200200841046a2011360200200820124120473602000b2008410c6a2108200941016a22094110470d000b200341e0046a200341f0076a41c00110e9081a410421040b200341a0036a200341e0046a41c00110e9081a200341c0016a41186a200f360200200341c0016a41146a200e360200200341c0016a41106a200d360200200341c0016a410c6a200b360200200341c0016a41086a200c360200200320073602c401200320043602c001200341c0016a411c6a200341a0036a41c00110e9081a4100210a4100211320040e050e010000020e0b000b200c2007490d04200c20024b0d05200e200d490d06200e20024b0d07200c20076b2109200120076a21082001200d6a2114200e200d6b2115410121130c0c0b200341023602a40920034102360298092003410236028c092003410236028009200341023602f408200341023602e808200341023602dc08200341023602d008200341023602c408200341023602b808200341023602ac08200341023602a00820034102360294082003410236028808200341023602fc07200341023602f007410021080340410221040240200341c0016a20086a2209411c6a22102802004102460d00200941246a2802002111200941206a28020021090240024020102802004101470d0020112009490d0b41012104201120024d0d012011200241d4f2cc00104d000b20112009490d0b41002104201120024b0d0c0b201120096b2111200120096a21120b200341f0076a20086a22092004360200200941086a2011360200200941046a20123602002008410c6a220841c001460d0b0c000b0b410121080b200341a0036a200341e0046a41c00110e9081a200020083a00010c0a0b200c200841e4cec8001057000b2007200c41c4f3cc001057000b200c200241c4f3cc00104d000b200d200e41d4f3cc001057000b200e200241d4f3cc00104d000b2009201141d4f2cc001057000b2009201141e4f2cc001057000b2011200241e4f2cc00104d000b02400240200d4101460d00410021120c010b200f200e490d03200f20024b0d04200f200e6b21112001200e6a21120b200c2007490d04200c20024b0d05200341f8076a280200211620032802f407211520032802f0072114200341186a200341fc076a41a80110e9081a200c20076b2109200120076a2108200341ac096a2802002110200341a8096a280200211720032802a4092118410421130b2000411c6a2016360200200041186a2015360200200041146a2014360200200041106a200b3602002000410c6a2009360200200041086a2008360200200041046a2013360200200041206a200341186a41a80110e9081a200041d8016a2011360200200041d4016a2012360200200041d0016a2010360200200041cc016a2017360200200041c8016a20183602000b2000200a3a0000200341b0096a24000f0b200e200f41e4f3cc001057000b200f200241e4f3cc00104d000b2007200c41c4f3cc001057000b200c200241c4f3cc00104d000b7e01027f230041306b22022400200241146a410436020020024188e2cc003602102002410436020c20024180e2cc003602082001411c6a2802002103200128021821012002412c6a41023602002002420237021c20024190e2cc003602182002200241086a36022820012003200241186a103d2101200241306a240020010bc81703037f037e197f230041f0036b2204240020012802042105200128020021062001280208220141086a2900002107200141106a290000210820012900002109200441186a220a200141186a290000370300200441106a220b2008370300200441086a220c2007370300200420093703002003410174210d2004410772210e200441c8016a41186a210f200441c8016a410c6a2110200441c8016a41206a211141002112410021134100211402400240024002400240024002400240024002400240024002400240024002400340201441017621010240024020144101710d00200120034b0d03200441003a00d001200420013602cc01200420023602c8010c010b200120034b0d03200120034f0d04200441013a00d001200420023602c801200420013602cc012004200220016a2d000041f001713a00d1010b200441d0036a20062004200441c8016a200528020c11040002400240024020042802d00322150d00200441c8016a41086a2212200441086a290300370300200441c8016a41106a2203200441106a290300370300200441c8016a41186a2216200441186a290300370300200420042903003703c8014130102c22010d010c130b20042802d4032117200441c8016a201520042802d80310a80220042d00c8014101460d0f201341016a21130c010b200120042903c80137000120012004290020370021200120134100473a0000200141096a2012290300370000200141116a2003290300370000200141196a2016290300370000200141286a200441276a29000037000020004101360200200020013602040c100b034020042802e401211820042802e001211920042802dc01211a20042802d801211b20042802d401211620042802d001211c20042802cc012101200441206a201141a80110e9081a200428029403211d200428029003211e024002400240024020010e05110f000102110b4100210102402016410174201b6b221f200d20126b221d201d201f4b1b2220450d000340201220016a221d410176221e20034f0d0a201b20016a2221410176222220164f0d0b2002201e6a2d0000221e410f71201e41f00171410476201d4101711b201c20226a2d0000221d410f71201d41047620214101711b470d012020200141016a2201470d000b202021010b02402001201f470d00201f21010c030b200042003702000c120b200420183602dc01200420193602d8012004201a3602d4012004201b3602d001200420163602cc012004201c3602c801200f200441206a41a80110e9081a02400240200d2012460d002012410176220120034f0d0b200441c8016a200220016a2d00002201410f71200141047620124101711b410c6c6a2201280200221a4102470d01200042003702000c130b410021010240201e450d00201d417f4c0d1002400240201d0d00410121010c010b201d102c2201450d160b2001201e201d10e9081a0b20002001360204200041003602002000410c6a201d360200200041086a201d3602000c120b20012802042119200141086a28020021184101211f410121010c010b20042802a0032120200428029c03211f2004280298032101200420183602d001200420193602cc012004201a3602c8012010200441206a41a80110e9081a20042001360284032004201d360280032004201e3602fc024100210102402016410174201b6b2218200d20126b221a201a20184b1b2219450d000340201220016a221d410176221e20034f0d0b201b20016a2221410176222220164f0d0c2002201e6a2d0000221e410f71201e41f00171410476201d4101711b201c20226a2d0000221d410f71201d41047620214101711b470d012019200141016a2201470d000b201921010b024020012018460d00200042003702000c110b02400240201a2018460d00201220186a2201410176221620034f0d0d200441c8016a200220166a2d00002216410f71201641047620014101711b410c6c6a2216280200221a4102470d01200042003702000c120b410021010240201f450d002020417f4c0d0f0240024020200d00410121010c010b2020102c2201450d150b2001201f202010e9081a0b20002001360204200041003602002000410c6a2020360200200041086a20203602000c110b201841016a211f201841016a210120162802042119201641086a28020021180b200120146a21142012201f6a21120240201a450d00200441c8016a2019201810a80220042d00c8014101460d0f0c010b0b0240024020184120460d00200f200a290300370300200441c8016a41106a2201200b290300370300200441c8016a41086a2216200c290300370300200420042903003703c8012018417f4c0d0d0240024020180d004101211b0c010b2018102c221b450d130b201b2019201810e908211b200441d0036a41186a221c200f290300370300200441d0036a41106a221d2001290300370300200441d0036a41086a221e2016290300370300200420042903c8013703d0034130102c2201450d12200141043a0000200120042903d003370001200120042f00c8013b00212001201836002c200120183600282001201b360024200141096a201e290300370000200141116a201d290300370000200141196a201c290300370000200141236a200441c8016a41026a2d00003a0000410121160c010b41002116200441c8016a41026a41003a0000200441003b01c80120192f0000211b200441cc036a41026a201941026a2d00003a00002019411f6a2d0000211c201941176a29000021072019280003210120192900072108200441d0036a41086a221d2019410f6a290000370300200441d0036a41106a221e2007370300200441d0036a41186a2221201c3a00002004201b3b01cc03200420083703d003200f20212d00003a0000200441c8016a41106a201e290300370300200441c8016a41086a201d290300370300200420042903d0033703c8010b200441c8036a41026a221b200441cc036a41026a2d00003a0000200441a8036a41086a221c200441c8016a41086a290300370300200441a8036a41106a221d200441c8016a41106a290300370300200441a8036a41186a221e200f280200360200200420042f01cc033b01c803200420042903c8013703a803024020160d00200e20042903a803370000200e41086a201c290300370000200e41106a201d290300370000200e41186a201e2d00003a0000200420042f01c8033b0100200420013600032004201b2d00003a00022017450d012015102e0c010b0b20004101360200200020013602040c0d0b2001200341a0f0cc00104d000b2001200341b0f0cc00104d000b2001200341c0f0cc00103c000b201e200341e0efcc00103c000b2022201641e0efcc00103c000b2001200341e0efcc00103c000b201e200341e0efcc00103c000b2022201641e0efcc00103c000b2016200341e0efcc00103c000b410021180240024002402016410174201b6b200d20126b2214470d004100211841002101024002402014450d00410021010340201b20016a221d410176221e20164f0d04201220016a2221410176222220034f0d05201c201e6a2d0000221e410f71201e41f00171410476201d4101711b200220226a2d0000221d410f71201d41047620214101711b470d012014200141016a2201470d000c020b0b20012014470d010b2019417f4c0d030240024020190d00410121180c010b2019102c2218450d090b2018201a201910e9081a2019ad220742208620078421070b2000201836020420004100360200200041086a20073702000c050b201e201641e0efcc00103c000b2022200341e0efcc00103c000b1038000b200042003702000c010b20042d00c9012112200441d0036a41086a2203200441086a290300370300200441d0036a41106a2216200441106a290300370300200441d0036a41186a221b200441186a290300370300200420042903003703d0034130102c2201450d02200141033a0000200120042903d003370001200120123a0021200120042901a803370122200141096a2003290300370000200141116a2016290300370000200141196a201b290300370000200141286a200441ae036a29010037010020004101360200200020013602040b2017450d002015102e0b200441f0036a24000f0b1036000b9f0402027f037e230041f0006b2201240002404101102c22020d001036000b200241003a0000410041003502e8f54c200141d0006aad7c42adfed5e4d485fda8d8007e42218922033e02e8f54c200141c0006a41e8f5cc00ad220442a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010e808200141206a200342a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010e808200141306a200442c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010e808200141106a200342c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010e80820012003200485420042adfed5e4d485fda8d800420010e808200141d0006a41aad3c800410110b001200041286a4200370300200041246a41d0a1c00036020020004100360220200041346a428180808010370200200020023602302000200129005037003c200041c4006a200141d0006a41086a290000370000200041cc006a200141e0006a290000370000200041d4006a200141e8006a29000037000020002003200141c0006a41086a2903002001290340857c200141086a29030020012903008542cf829ebbefefde82147c2205893703002000200141106a41086a29030020012903108520047c20054230888937031820002003200141306a41086a2903002001290330857c2005422088893703102000200141206a41086a29030020012903208520047c200542108889370308200141f0006a24000bfd0101057f2000410c6a280200200028020822016b220241e0006d210302402002450d002001200341e0006c6a2104034002402001220541386a2802002201450d00200141d8006c2102200528023041306a21010340200128020022032003280200417f6a3602000240200128020022032802000d00200341046a22032003280200417f6a3602002001280200220341046a2802000d002003102e0b200141d8006a2101200241a87f6a22020d000b0b200541e0006a21010240200541346a2802002202450d00200241d8006c450d002005280230102e0b20012004470d000b0b024020002802042201450d00200141e0006c450d002000280200102e0b0b130020004109360204200041f0ecc0003602000bb10201027f230041206b220424000240024002400240024020022001413c6a412010ec080d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b2002102c2201450d030b200020023602042000200136020020012005200210e9081a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410af022202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b2001102c2202450d020b200020013602042000200236020020022005200110e9081a200041086a20013602000c030b1038000b1036000b200041003602000b200441206a24000be10303017f047e087f230041306b22022400200241206a20002903182000290308852203200141186a2900008542002000290310220420002903002205852206200129001085420010e808200241106a2003200141086a2900008542002006200129000085420010e8082002200442002004200241106a41086a2903002002290310857c2004200241206a41086a2903002002290320857c200542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892203420010e808200041246a280200220720002802202208200241086a290300200229030085200389a722097122006a280000220a200941197641818284086c220b732209417f73200941fffdfb776a71418081828478712109200041046a200871210c4104210d024003400240024020090d00200d21090340200c21000240200a200a4101747141808182847871450d004100210e0c050b2008200020096a41046a71210c200941046a220d2109200b200720006a280000220a73220e417f73200e41fffdfb776a7141808182847871220e450d000c020b0b2009210e20070d004100210e0c020b200e417f6a200e71210920012007410020082000200e684103766a716b41306c6a41506a220e412010ec080d000b0b200241306a2400200e41206a4100200e1b0bb60301057f230041e0006b22052400024002402004417f4c0d000240024020040d00410121060c010b2004102c2206450d020b20062003200410e9082107410021060240200141386a2802002004470d0020072001280230200410ec084521060b02402004450d002007102e0b024002402006450d002000200129003c370000200041186a200141d4006a290000370000200041106a200141cc006a290000370000200041086a200141c4006a2900003700000c010b20052003200410b001200541206a41186a200541186a2207290000370300200541206a41106a200541106a2208290000370300200541206a41086a200541086a220929000037030020052005290000370320200541c0006a41086a200241086a280200360200200520022902003703400240024020040d00410121060c010b2004102c2206450d030b200520043602542005200636025020062003200410e9081a200520043602582001200541206a200541c0006a200541d0006a10b102200041186a2007290000370000200041106a2008290000370000200041086a2009290000370000200020052900003700000b200541e0006a24000f0b1038000b1036000be50301047f23004180016b220424000240024020032802082205200041386a280200470d00200328020022062000280230200510ec080d00200341046a280200450d012006102e0c010b200441c0006a41186a2205200141186a290000370300200441c0006a41106a2206200141106a290000370300200441c0006a41086a2207200141086a2900003703002004200129000037034020042000200441c0006a10b202024020042903004201520d00200441c0006a41286a200441306a290300370300200441c0006a41206a200441286a2903003703002005200441206a2903003703002006200441186a2903003703002007200441106a29030037030020042004290308370340200441f0006a41086a200341086a2802003602002004410136027c20042003290200370370200441c0006a200441f0006a10b3020c010b0240200441106a2802002205417c6a2201280200220041004a0d00200541706a2106200441c0006a41086a2207200341086a280200360200200420032902003703400240200541746a280200450d002006280200102e200128020021000b20062004290340370200200641086a20072802003602002001200041016a3602000c010b2001200041016a360200200341046a280200450d002003280200102e0b20044180016a24000b880503017f047e097f230041306b22032400200341206a20012903182001290308852204200241186a2900008542002001290310220520012903002206852207200229001085420010e808200341106a2004200241086a2900008542002007200229000085420010e8082003200542002005200341106a41086a2903002003290310857c2005200341206a41086a2903002003290320857c200642adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892204420010e808200141246a280200220820012802202209200341086a2903002003290300852004892205a7220a71220b6a280000220c200a41197641818284086c220d73220a417f73200a41fffdfb776a7141808182847871210e200b41046a200971210f410421100240024003400240200e0d002010210a0340200f210b200c200c41017471418081828478710d032009200b200a6a41046a71210f200a41046a2210210a200d2008200b6a280000220c73220e417f73200e41fffdfb776a7141808182847871220e450d000b0b2008450d01200e68210a200e417f6a200e71210e200841002009200b200a4103766a716b41306c6a220a41506a2002412010ec080d000b2000200537030820004200370300200041186a41013a0000200041146a2001360200200041106a200a360200200041196a2002290000370000200041216a200241086a290000370000200041296a200241106a290000370000200041316a200241186a2900003700000c010b2000200537030820004201370300200041106a2001360200200041146a20022900003700002000411c6a200241086a290000370000200041246a200241106a2900003700002000412c6a200241186a2900003700000b200341306a24000bca0503027f077e067f23004180016b2202240020022000280208220336020c20002903002104200241106a41186a200041246a2902002205370300200241106a41106a2000411c6a2902002206370300200241106a41086a200041146a2902002207370300200241106a41286a200141086a29020022083703002002200029020c220937031020022001290200220a370330200241c0006a41286a2008370300200241c0006a41206a200a370300200241c0006a41186a2005370300200241c0006a41106a2006370300200241c0006a41086a200737030020022009370340200341206a210b2003280220220c2004a7220d712101200341246a280200210e4104210003402001220f20006a200c712101200041046a2100200e200f6a280000418081828478712210450d000b0240200e201068410376200f6a200c7122006a2c000022014100480d00200e200e280200418081828478716841037622006a2d000021010b200341286a280200210f024020014101712210450d00200f0d00200241f0006a200b2002410c6a10b4022003280220220c200d712101200341246a280200210e4104210003402001220f20006a200c712101200041046a2100200e200f6a28000041808182847871220b450d000b0240200e200b68410376200f6a200c7122006a2c00004100480d00200e280200418081828478716841037621000b2003280228210f0b2003200f20106b360228200e20006a200d41197622013a0000200c2000417c6a71200e6a41046a20013a0000200e410020006b41306c6a41506a220041286a200241c0006a41286a290300370200200041206a200241c0006a41206a290300370200200041186a200241c0006a41186a290300370200200041106a200241c0006a41106a290300370200200041086a200241c0006a41086a290300370200200020022903403702002003412c6a2200200028020041016a36020020024180016a24000be91007077f017e077f017e027f027e017f23004180016b220324000240024002400240200128020c220441016a22052004490d000240200520012802002206200641016a220741037641076c20064108491b22064101764b0d004100210641002105024003400240024020064101710d00200520074f0d0320052106200541016a21050c010b200541036a220620054922080d0220062007492209450d022007200541046a20081b200720091b21050b200141046a28020020066a220620062802002206410776417f73418182840871200641fffefdfb07726a360200410121060c000b0b200141046a2802002105200128020041016a22064104490d02200520066a20052800003600000c030b024002400240024002402005200641016a2206200520064b1b22050d0041d0a1c000210841002109410021050c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d04417f2005410374220541076e417f6a677641016a41012005410d4b1b21050b2005ad42307e220a422088a70d02200aa72206200541046a22096a22082006490d022008102c2208450d01200820066a220841ff01200910eb081a2005417f6a2209200541037641076c20094108491b21050b200841506a210b200520046b210c200141046a280200220d41046a210e200d20076a210f200d280200417f7341808182847871211020022802002111034002400240024020100d000340200e200f4f0d02200d41c07e6a210d200e2802002105200e41046a2206210e2005418081828478712205418081828478460d000b2005418081828478732207417f6a20077121102006210e0c020b200d450d00201021072010417f6a20107121100c010b2001200436020c2001200c360208200041003602002001280200210520012009360200200141046a22062802002107200620083602002005450d082007200541016aad42307ea76b102e0c080b41002105200341106a20112903182011290308852212200d41002007684103766b41306c6a41506a221341186a22142900008542002011290310220a20112903002215852216201329001085420010e808200341206a2012201341086a22172900008542002016201329000085420010e8082003200a4200200a200341206a41086a2903002003290320857c200a200341106a41086a2903002003290310857c201542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892212420010e808200341086a290300200329030085201289220aa721060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b200820056a200aa741197622063a00002005417c6a20097120086a41046a20063a0000200b410020056b41306c6a220541286a201341286a290200370200200541206a201341206a290200370200200541186a2014290200370200200541106a201341106a290200370200200541086a2017290200370200200520132902003702000c000b0b1036000b41accdcc00411c41c8cdcc001039000b41accdcc00411c41c8cdcc001039000b41accdcc00411c41c8cdcc001039000b200541046a2005200610ea081a0b41002105024020012802002204417f460d002002280200210d200141046a2110410021050340024020102802002208200522146a2d0000418001470d00410020146b21170340200341c0006a200d290318200d2903088522122008201741306c6a41506a220e41186a2213290000854200200d290310220a200d2903002215852216200e29001085420010e808200341d0006a2012200e41086a220f2900008542002016200e29000085420010e808200341306a200a4200200a200341d0006a41086a2903002003290350857c200a200341c0006a41086a2903002003290340857c201542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892212420010e8082001280200210941002105200341306a41086a290300200329033085201289220aa7221121060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b02402005200920117122066b201420066b7320097141034b0d00200820146a200aa741197622053a000020092014417c6a7120086a41046a20053a00000c020b200820056a22062d000021072006200aa741197622023a00002005417c6a20097120086a41046a20023a00000240200741ff01470d002010280200220620146a41ff013a0000200620012802002014417c6a716a41046a41ff013a00002010280200410020056b41306c6a41506a2205200e290200370200200541086a200f290200370200200541106a200e41106a290200370200200541186a2013290200370200200541206a200e41206a290200370200200541286a200e41286a2902003702000c020b2010280200410020056b41306c6a41506a2205290200210a2005200e290200370200200541186a2206290200211220062013290200370200200541106a220629020021152006200e41106a2207290200370200200541086a220629020021162006200f290200370200200f20163702002007201537020020132012370200200e200a370200200541286a2206290200210a2006200e41286a2207290200370200200529022021122005200e290220370220200e20123702202007200a370200201028020021080c000b0b201441016a210520142004470d000b20012802002205200541016a41037641076c20054108491b21050b2000410036020020012005200128020c6b3602080b20034180016a24000ba20201047f23004180016b22032400024020012000413c6a412010ec08450d00200341c0006a41186a2204200141186a290000370300200341c0006a41106a2205200141106a290000370300200341c0006a41086a2206200141086a2900003703002003200129000037034020032000200341c0006a10b202024020032903004201520d00200341c0006a41286a200341306a290300370300200341c0006a41206a200341286a2903003703002004200341206a2903003703002005200341186a2903003703002006200341106a29030037030020032003290308370340200342808080807037037820034201370370200341c0006a200341f0006a10b3020c010b200341106a280200417c6a22012001280200417f6a3602000b20034180016a24000b880101017f230041206b220324000240024020012000413c6a412010ec080d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310af0222010d00410021010c010b200128020c41004a21010b200341206a240020010b1300200041e0f2c000360204200020013602000b9a0201067f024020002802202201450d0002402000412c6a280200450d00200041246a280200220241046a2103200120026a41016a21042002280200417f73418081828478712101024003400240024020010d000340200320044f0d04200241c07e6a210220032802002101200341046a220521032001418081828478712201418081828478460d000b2001418081828478732201417f6a2001712106200521030c010b2002450d022001417f6a20017121060b2001682105200621012002410020054103766b41306c6a220541746a280200450d00200541706a280200102e200621010c000b0b200028022021010b200041246a280200200141016aad42307ea76b102e0b0240200041346a280200450d002000280230102e0b0b1300200041e0f2c000360204200020013602000bb10201027f230041206b220424000240024002400240024020022001413c6a412010ec080d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b2002102c2201450d030b200020023602042000200136020020012005200210e9081a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410af022202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b2001102c2202450d020b200020013602042000200236020020022005200110e9081a200041086a20013602000c030b1038000b1036000b200041003602000b200441206a24000b880101017f230041206b220324000240024020012000413c6a412010ec080d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310af0222010d00410021010c010b200128020c41004a21010b200341206a240020010b8b0201047f200028020421012000410036020402402001450d00024020002802002202450d002002417f6a2102034020012802940321012002450d012002417f6a21020c000b0b024020002802082203450d004100210003402003417f6a210341012102024002400340200020012f0132490d010240200128020022040d002001102e410021010c030b20012f013021002001102e2002417f6a2102200421010c000b0b200041016a210020024101460d00200120004102746a4194036a280200210102402002450d000340200241016a220020024f210420012802940321012000210220040d000b0b410021000b20030d000b0b0340200128020021022001102e2002210120020d000b0b0b8a0201047f200028020421012000410036020402402001450d00024020002802002202450d002002417f6a21020340200128026021012002450d012002417f6a21020c000b0b024020002802082203450d004100210003402003417f6a210341012102024002400340200020012f015e490d01024020012802002204450d0020012f015c21002001102e2002417f6a2102200421010c010b0b2001102e410021010c010b200041016a210020024101460d00200120004102746a41e0006a280200210102402002450d000340200241016a220020024f2104200128026021012000210220040d000b0b410021000b20030d000b0b0340200128020021022001102e2002210120020d000b0b0b8b0201047f200028020421012000410036020402402001450d00024020002802002202450d002002417f6a2102034020012802c00321012002450d012002417f6a21020c000b0b024020002802082203450d004100210003402003417f6a210341012102024002400340200020012f015e490d010240200128025822040d002001102e410021010c030b20012f015c21002001102e2002417f6a2102200421010c000b0b200041016a210020024101460d00200120004102746a41c0036a280200210102402002450d000340200241016a220020024f210420012802c00321012000210220040d000b0b410021000b20030d000b0b0340200128025821022001102e2002210120020d000b0b0be90101047f200028020421012000410036020402402001450d00024020002802182202450d0020002802082103200028020021000340410120006b21002002417f6a2102024002400340200320012f0106490d010240200128020022040d002001102e410021010c030b20012f010421032001102e2000417f6a2100200421010c000b0b200341016a210320004101460d00200120034102746a41206a280200210102402000450d004100210303402001280220210120002003417f6a2203470d000b0b410021030b4100210020020d000b0b0340200128020021002001102e2000210120000d000b0b0bc78c0106027f027e077f027e197f037e230022032104200341e0076b41607122032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e0a00010203040506070809000b2003418c056a4101360200200342013702fc042003419cc3cb003602f804200341043602e40620034194c3cb003602e0062003200341e0066a36028805200341f8046a41e0ecc0001044000b200141186a2903002105200141106a29030021062001410c6a2802002107200141086a280200210820012802042101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a200241106a290200370300200341f8046a41086a200241086a290200370300200320022902003703f804200341e0066a200341f8046a10c10241022102200341d0066a41026a220920032d00e3063a0000200341a0036a41086a220a200341f4066a290200370300200341a0036a410d6a220b200341f9066a290000370000200320032f00e1063b01d0062003200341e0066a410c6a2902003703a00302400240024020032d00e0064101460d00200341e0066a41086a280200210220032802e406210c200341f4026a41026a20092d000022093a0000200341c0046a41086a220d200a290300370300200341c0046a410d6a220a200b290000370000200320032f01d006220b3b01f402200320032903a0033703c004200320093a00a2062003200b3b01a006200320023600a7062003200c3600a306200341b3066a200d290300370000200341a0066a41186a200a290000370000200320032903c0043700ab06024002400240200741818001490d00200341a0046a410310c2020c010b0240200642ffcfdbc3f4025620054200522005501b0d00200341a0046a410610c2020c010b200341a0046a41186a220b4200370300200341b0046a22024200370300200341a0046a41086a22094200370300200342003703a004200341e0066a41bad7c70041081081022009200341e0066a41086a220a290000370300200320032900e0063703a004200341e0066a4198d9c000410b108102200b200a290000370300200220032900e006370300200341106a200341a0046a4120108e0220032007ad42004280c2d72f420010e8082003280214210c2003280210210d200341f8046a200341a0066a2003290300220e4280c8afa0257c220f200341086a290300200f200e54ad7c220e10c302024020032d00f8044106470d00200b42003703002002420037030020094200370300200342003703a004200341e0066a41bad7c70041081081022009200a290000370300200320032900e0063703a004200341e0066a4198d9c000410b108102200241086a200a290000370000200220032900e0063700002003200c4100200d1b220241016a3602f804200341a0046a4120200341f8046a410410b20120034182066a20032d00a2063a000020034183066a20032900a306370000200341f8046a41186a4200370300200341f8046a41206a4200370300200341a0056a42003703002003418b066a200341ab066a220929000037000020034193066a200941086a29000037000020034198066a2009410d6a2900003700002003200537038005200320063703f804200320032f01a0063b0180062003420037038805200341b0056a200e3703002003200f3703a805200341003a00b805200341a0046a200210f90120032802a804210a20032802a0042109200341003602e806200342013703e006200341f8046a200341e0066a1080022009200a20032802e006220b20032802e80610b201024020032802e406450d00200b102e0b024020032802a404450d002009102e0b200320073602a804200320083602a404200320013602a004200341e0066a200210c40220032802e006220720032802e806200341a0046a10c502024020032802e406450d002007102e0b02402008450d002001102e0b200341ec066a2002360200200341e8066a41003a0000200341153a00e006200341e0066a10fe0141062102200341063a00a0040c020b200341a0046a410110c2020b02402008450d002001102e0b20032902a404210520032d00a00421020b200341f8026a41026a220120032d00a3043a0000200320032f00a1043b01f802200241ff01714106460d02200341e0036a41026a20012d00003a0000200320032f01f8023b01e0030c010b02402008450d002001102e0b0b20034190036a41026a200341e0036a41026a2d000022013a0000200320032f01e00322083b019003200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b200041186a41003a00002000420037030820002003280080043600192000411c6a20034183046a28000036000020004200370300200424000f0b20012802042101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a200241106a290200370300200341f8046a41086a200241086a290200370300200320022902003703f8044102210202400240200341f8046a10c60241ff01714102460d00200341c0046a200110f901200341f8046a20032802c004220820032802c804220710fa01024002400240024020032d00b80541064622020d0002404100200341f8046a20021b22022d0040450d0020034180046a410410c2020c020b200241013a0040200241c1006a200341e0066a41c70010e9081a200341b8046a22094200370300200341b0046a220a4200370300200341a0046a41086a220b4200370300200342003703a004200341e0066a41bad7c7004108108102200b200341e0066a41086a2202290000370300200320032900e0063703a004200341e0066a41c0dac000410f10810220092002290000370300200a20032900e0063703004104102c2209450d0d200342043702a406200320093602a006200320013602e006200341a0066a200341e0066a41041074200220032802a806360200200320032903a0063703e006200341a0046a4120200341e0066a10c702200341063a0080040c020b20034180046a410210c2020b4100210120032d00800422024106470d010b410621020240024020032d00b8054106470d002008200710ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a1080022008200720032802e006220220032802e80610b201024020032802e406450d002002102e0b410621020b410121010b024020032802c404450d002008102e0b200341f8026a41026a220820032d0083043a0000200320032f0081043b01f80220010d012003290284042105200341c0036a41026a20082d00003a0000200320032f01f8023b01c00320024106460d010b200341a0036a41026a200341c0036a41026a2d000022013a0000200320032f01c00322083b01a003200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b20004200370308200020032800e003360019200041186a41003a00002000411c6a200341e3036a28000036000020004200370300200424000f0b200141386a2903002105200141306a29030021062001280204211020034190036a41026a22072001410b6a2d00003a0000200341e0066a41086a22092001411c6a290200370300200341e0066a41106a220a200141246a290200370300200320012f00093b0190032003200141146a2902003703e006200141086a2d000021082001410c6a280200210d200141106a2802002101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a220b200241106a290200370300200341f8046a41086a220c200241086a290200370300200320022902003703f8040240024002400240200341f8046a10c60241ff01714102460d00200341c0046a41026a20072d00003a0000200c2009290300370300200b200a290300370300200320032f0190033b01c004200320032903e0063703f8040240024020080e03030100010b2001450d00200d102e0b200341c0036a41086a200341a0066a41086a290300370300200320032f01a0043b01fc02410121020c020b20084102470d1f2001450d1f200d102e410221020c200b200341a0066a410d6a2202200341f8046a410d6a290000370000200341a0066a41086a2208200341f8046a41086a290300370300200341fc026a41026a2207200341c0046a41026a2d00003a0000200341c0036a41086a22092008290300370300200341c0036a410d6a22082002290000370000200320032f01c0043b01fc02200320032903f8043703c003200341d0066a41026a220220072d00003a0000200320032f01fc023b01d006200341a0036a410d6a22072008290000370000200341a0036a41086a220a2009290300370300200320032903c0033703a003200341c0046a201010f901200341f8046a20032802c004220820032802c804220910fa01200341b3046a200a290300370000200341b8046a2007290000370000200320022d00003a00a204200320032f01d0063b01a004200320013600a7042003200d3600a304200320032903a0033700ab04024002400240024020032d00b80541064622020d0002404100200341f8046a20021b22022d00404103490d0020034180046a410410c2020c020b02402002290300200656200241086a290300220f200556200f2005511b0d0020034180046a410710c2020c020b200241033a0040200241c1006a20032903a004370000200341a0046a41186a290300210f200241186a2005370300200341b0046a290300210520022006370310200241c9006a200341a0046a41086a290300370000200241d1006a2005370000200241d9006a200f370000200341063a0080040c020b20034180046a410210c2020b4100210120032d00800422024106470d010b410621020240024020032d00b8054106470d002008200910ff010c010b200341003602a806200342013703a006200341f8046a200341a0066a1080022008200920032802a006220220032802a80610b201024020032802a406450d002002102e0b410621020b410121010b024020032802c404450d002008102e0b200341f8026a41026a220820032d0083043a0000200320032f0081043b01f80220010d01200329028404210520034180036a41026a20082d00003a0000200320032f01f8023b0180030b20024106470d1e0b20004200370308200020032800e003360019200041186a41003a00002000411c6a200341e3036a28000036000020004200370300200424000f0b20012802042111200241276a2d00002112200241256a2f00002113200241246a2d00002114200241226a2f01002115200241206a2f0100210b2002411c6a280200210c200241186a280200210d200241146a2802002110200241106a28020021162002410c6a2802002109200241086a280200210a200241066a2f00002117200241056a2d00002118200241046a2d0000210841022107200241026a2f010021192002280228210120022d0001211a0240024002400240024020022d0000221b0e03000102000b4100211c4102211d2008210702400240201a0e03000105000b4100211d200821074100211c0c040b4101211d200821070c030b4102210702400240024020080e03000102000b410021070c010b410121070b200341a0066a41026a200341f8046a41026a2d00003a0000200320032f00f8043b01a0064101211c0c010b02400240024020080e03000102000b410021070c010b410121070b4102211c200341a0066a41026a200341f8046a41026a2d00003a0000200320032f00f8043b01a0060b0b200128020041016a221e41014d0d06201320124110747221022003419c056a221220143a00002003419a056a221320153b010020034198056a221f200b3b010020034194056a2220200c36020020034190056a2221200d360200200341f8046a41146a22222010360200200341f8046a41106a22232016360200200341f8046a410c6a22242009360200200341f8046a41086a2225200a3602002001201e3602002003419d056a221e20032f01a0063b00002003419f056a2226200341a0066a41026a2d00003a0000200320173b01fe04200320183a00fd04200320073a00fc04200320193b01fa042003201d3a00f9042003201c3a00f804200320013602a005200341e0066a200341f8046a10c102024020032d00e0064101470d00202620024110763a0000201e20023b0000201220143a0000201320153b0100201f200b3b01002020200c3602002021200d3602002022201036020020232016360200202420093602002025200a360200200320013602a005200320173b01fe04200320183a00fd04200320083a00fc04200320193b01fa042003201a3a00f9042003201b3a00f804024002400240201b0e020001020b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b2003200b3b01be062003200c3601ba062003200d3601b606200320103601b206200320163601ae06200320093601aa062003200a3601a606200320173b01a406200320183a00a306200320083a00a206200320193b01a0060240201a450d004110102c2202450d09200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d0920014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220836020020080d022002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22082008280200417f6a220836020020080d022002102e0c020b4101210b410021084100210a0c1d0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b024020080d004101210b200a41017420094d0d00410021084100210a0c1d0b4110102c2202450d07200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d0720014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220836020020080d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22082008280200417f6a220836020020080d002002102e0b20012001280200417f6a22023602004100210b4101210820020d1a2001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d1a2001102e4100210a0c1b0b200341d0066a41026a220720032d00e3063a0000200341a0036a41086a2227200341e0066a41146a290200370300200341a0036a410d6a2228200341f9066a290000370000200320032f00e1063b01d0062003200341e0066a410c6a2902003703a003200341e0066a41086a280200211d20032802e406211c202620024110763a0000201e20023b0000201220143a0000201320153b0100201f200b3b01002020200c3602002021200d3602002022201036020020232016360200202420093602002025200a360200200320013602a005200320173b01fe04200320183a00fd04200320083a00fc04200320193b01fa042003201a3a00f9042003201b3a00f804200341f4026a41026a20072d00003a0000200341c0046a41086a2027290300370300200341c0046a410d6a202829000037000020012001280200417f6a2202360200200320032f01d0063b01f402200320032903a0033703c0044101210a41002108024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b20032802a005220141046a22022002280200417f6a220236020020020d002001102e0b4100210b0c1a0b20012802042101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a200241106a290200370300200341f8046a41086a200241086a290200370300200320022902003703f804200341e0066a200341f8046a10c102200341a0046a41086a2202200341e9066a290000370300200341a0046a41106a2208200341f1066a290000370300200341a0046a41186a2207200341f9066a290000370300200320032900e1063703a00420032d00e0064101460d07200341c0046a41186a2007290300370300200341c0046a41106a2008290300370300200341c0046a41086a2002290300370300200320032903a0043703c004200341a0046a200110f901200341f8046a20032802a004220820032802a804220710fa0120032d00b80541064622020d0602404100200341f8046a20021b22022d00404103460d00200341a0066a410410c2020c140b0240200341c0046a200241c1006a2201412010ec08450d00200341a0066a410510c2020c140b200341e8016a20022903102205200241186a290300220642c0843d420010e608200341d8016a2005200642c0843d420010e708200341c8016a20032903d801200341d8016a41086a29030042a0c21e420010e808200341e0066a200120032903c801220620032903e8012205420188a7200542a0c21e7e42c0843d8242a0c21e566aad7c2205200341c8016a41086a2903002005200654ad7c220610c302200341fa026a220920032d00e3063a0000200320032f00e1063b01f802024020032d00e006220a4106470d0020022005370320200241286a2006370300200341a0066a41186a22094200370300200341a0066a41106a220a4200370300200341a0066a41086a220b4200370300200342003703a006200341d0066a41d9fcc6004106108102200b200341d0066a41086a220c290000370300200320032900d0063703a006200341d0066a4180f4cb0041061081022009200c290000370300200a20032900d006370300200341c0016a200341a0066a4120108e0220032802c001210920032802c401210a200241043a0040200141086a2900002105200141106a29000021062001290000210f200241d9006a200141186a290000370000200241d1006a2006370000200241c9006a2005370000200241c1006a200f370000200241e4006a200a41808dcf006a41808dcf0020091b360200200341063a00a0060c150b20032902e40621052003200a3a00a006200320032f01f8023b00a106200320053702a406200320092d00003a00a3060c130b20012802042117200341ec026a41026a22072001410b6a2d00003a000020034180046a41086a22092001411c6a29020037030020034180046a41106a220a200141246a290200370300200320012f00093b01ec022003200141146a29020037038004200141086a2d000021082001410c6a280200210b200141106a2802002101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a220c200241106a290200370300200341f8046a41086a220d200241086a290200370300200320022902003703f804200341e0066a200341f8046a10c102200341f4026a41026a220220032d00e3063a0000200341c0046a41086a2210200341e0066a41146a290200370300200341c0046a410d6a2216200341f9066a290000370000200320032f00e1063b01f4022003200341e0066a410c6a2902003703c00402400240024020032d00e0064101460d00200341e0066a41086a280200211820032802e406211920034180036a41026a20022d00003a0000200341e0036a41086a2010290300370300200341e0036a410d6a2016290000370000200320032f01f4023b018003200320032903c0043703e003200341a0066a41026a20072d00003a0000200320032f01ec023b01a006200d2009290300370300200c200a29030037030020032003290380043703f8040240024020080e03030100010b2001450d00200b102e0b200341a0036a41086a200341e0066a41086a290300370300200320032f01a0043b01d006410121020c020b20084102470d122001450d12200b102e410221020c130b200341e0066a410d6a2202200341f8046a410d6a290000370000200341e0066a41086a2208200341f8046a41086a290300370300200341d0066a41026a2207200341a0066a41026a2d00003a0000200341a0036a41086a22092008290300370300200341a0036a410d6a22082002290000370000200320032f01a0063b01d006200320032903f8043703a003200320072d00003a00c204200320032f01d0063b01c004200320013600c7042003200b3600c304200341d8046a2008290000370000200341d3046a2009290300370000200320032903a0033700cb04200341a0036a201710f901200341f8046a20032802a003220820032802a803220710fa01200341e0066a410b6a2018360000200341ef066a20032903e003370000200341f7066a200341e0036a41086a290300370000200341fc066a200341e0036a410d6a290000370000200320032f0180033b01e406200320034180036a41026a2d00003a00e606200320193600e70620032d00b80521022003200341c0046a3602e0060240024002400240200241064622020d0002404100200341f8046a20021b22022d00404104460d00200341a0066a410410c2020c020b0240200341e0066a4104722209200241c1006a220a412010ec08450d00200341a0066a410510c2020c020b200341fe026a220d20032d00c2043a0000200341a0046a41086a2210200941086a290200370300200341a0046a41106a2216200941106a290200370300200341a0046a41186a2218200941186a290200370300200341c0036a41086a2219200341c0046a410b6a220c41086a290000370300200341c0036a410d6a2214200c410d6a290000370000200320032f01c0043b01fc02200320092902003703a0042003200c2900003703c003200341a0066a41186a22094200370300200341a0066a41106a220c4200370300200341a0066a41086a22154200370300200342003703a006200341d0066a41d9fcc60041061081022015200341d0066a41086a221a290000370300200320032900d0063703a006200341d0066a4180f4cb0041061081022009201a290000370300200c20032900d006370300200341f8016a200341a0066a4120108e0220032802f801210920032802fc01210c200241053a0040200a41186a2018290300370000200a41106a2016290300370000200a41086a2010290300370000200a20032903a004370000200241e1006a20032f01fc023b0000200241e3006a200d2d00003a0000200241e8006a2001360000200241e4006a200b36000020024184016a200c418084076a4180840720091b360200200241ec006a20032903c003370000200241f4006a2019290300370000200241f9006a2014290000370000200341063a00a0060c020b200341a0066a410210c2020b4100210120032d00a00622024106470d010b410621020240024020032d00b8054106470d002008200710ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a1080022008200720032802e006220220032802e80610b201024020032802e406450d002002102e0b410621020b410121010b024020032802a403450d002008102e0b200341f8026a41026a220820032d00a3063a0000200320032f00a1063b01f80202402001450d00200341f8046a41086a41033a000020034181056a20032903c004370000200341a4056a201736020020034189056a200341c0046a41086a29030037000020034191056a200341d0046a29030037000020034199056a200341d8046a290300370000200341153a00f804200341f8046a10fe010c110b20032902a4062105200341e8026a41026a20082d00003a0000200320032f01f8023b01e8020b20024106460d0f0c110b20012802042108200341f8046a41286a2207200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a2209200241186a290200370300200341f8046a41106a200241106a290200370300200341f8046a41086a200241086a290200370300200320022902003703f804200341e0066a200341f8046a10c102410121014102210220032d00e0064101460d0d20034190036a200810f901200341f8046a200328029003220a200328029803220b10fa01200341d0056a22022903002105200220032903f806370300200341c8056a22022903002106200220032903f006370300200341c0056a2202290300210f200220032903e806370300200320053703b806200320063703b0062003200f3703a806200320032903b80522053703a0062003200341f0056a2903003703d8042003200341e8056a2903003703d0042003200341e0056a2903003703c8042003200341d8056a290300220e3703c004200341063a00e006200320032903e00622063703b805200341f8056a290300210f024002402005a7220241ff01714106470d000c010b2009290300210520072903002129200329038805212a200329039805212b200341e0066a41176a20032900b806370000200341e0066a41106a20032900b106370300200341e0066a41086a20032900a906370300200341a0046a41086a20032900c904370300200341a0046a41106a20032900d104370300200341a0046a41176a20032900d804370000200320032900a1063703e006200320032900c1043703a004200ea72118200fa72119410021010b2006a7210720034180046a41086a2209200341e0066a41086a29030037030020034180046a41106a220c200341e0066a41106a29030037030020034180046a41176a220d200341e0066a41176a290000370000200341e0036a41086a2210200341a0046a41086a290300370300200341e0036a41106a2216200341a0046a41106a290300370300200341e0036a41176a2217200341a0046a41176a290000370000200320032903e00637038004200320032903a0043703e00320010d06200341c0036a41176a200d290000370000200341c0036a41106a200c290300370300200341c0036a41086a2009290300370300200341a0036a41086a2010290300370300200341a0036a41106a2016290300370300200341a0036a41176a201729000037000020032003290380043703c003200320032903e0033703a0030240200241ff01714105460d0020034180036a410410c2020c0d0b200341a0046a41176a200341c0036a41176a290000370000200341a0046a41106a200341c0036a41106a290300370300200341a0046a41086a200341c0036a41086a290300370300200320032903c0033703a004200320183a00bf04200341c0046a41176a200341a0036a41176a290000370000200341c0046a41106a200341a0036a41106a290300370300200341c0046a41086a200341a0036a41086a290300370300200320032903a0033703c004200320193a00df04200341b8066a22024200370300200341a0066a41106a22014200370300200341a0066a41086a22094200370300200342003703a006200341d0066a41d9fcc60041061081022009200341d0066a41086a220c290000370300200320032900d0063703a006200341d0066a4180f4cb0041061081022002200c290000370300200120032900d00637030020034190026a200341a0066a4120108e02024020032802940241002003280290021b200f422088a74f0d0020034180036a410910c2020c0d0b200342f0f2bda1a7ee9cb9f90037038004200320083602e806200341023602e406200341e2b8c0003602e006200341a0066a20034180046a200341e0066a10fc0120034180046a200341a0066a10c802200341e0066a200328028004220120032802880410c902200341e0066a41106a290300420020032903e00642015122021b210620032903e806420020021b210f0240200328028404450d002001102e0b20034180026a200341a0046a202b202910fb01200341e0036a200341a0066a200341a0046a200f202a202a200f56200520065620052006511b22021b220e2006200520021b2205410110ca0220034180046a200341a0066a200341c0046a4200200f200e7d222a202a200f56200620057d200f200e54ad7d220520065620052006511b22021b22064200200520021b2205410110ca0241062107200341063a00b805200341e0066a200810c40220032802e006220220032802e80610ff01024020032802e406450d002002102e0b20034198076a200537030020034190076a2006370300200341e0066a41086a41043a0000200341e9066a20032903c0043700002003418c076a2008360200200341f1066a200341c0046a41086a290300370000200341f9066a200341d0046a29030037000020034181076a200341d8046a290300370000200341153a00e006200341e0066a10fe01200341063a0080030c0c0b200128020421072002410e6a2f0100210a2002410d6a2d0000210b2002410c6a2d0000210c2002410a6a2f0100210d200241096a2d00002110200241086a2d00002116200241046a2d0000210920022802282101024020022d000022080d002002411a6a2901002105200241196a2d00002108200241186a2d00002117200241166a2f01002118200241156a2d00002119200241146a2d00002114200241126a2f01002115200241116a2d0000211a200241106a2d0000211b200241066a2f0100211d200241056a2d0000211c200241026a2f0100211220022d0001210220012001280200417f6a2213360200024020130d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22132013280200417f6a221336020020130d002001102e0b200320053703b806200320083a00b706200320173a00b606200320183b01b406200320193a00b306200320143a00b206200320153b01b0062003201a3a00af062003201b3a00ae062003200a3b01ac062003200b3a00ab062003200c3a00aa062003200d3b01a806200320103a00a706200320163a00a6062003201d3b01a4062003201c3a00a306200320093a00a206200320123b01a0060240200241ff01710d00410321080c010b4110102c2202450d02200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d0220014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a22173602004100210820170d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22172017280200417f6a221736020020170d002002102e0b0240024002402008417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200941ff01710d00200d411074201041087472201672410174200a411074200b41087472200c724b0d020b4110102c2202450d03200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d0320014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220836020020080d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22082008280200417f6a220836020020080d002002102e0b20012001280200417f6a22083602004102210220080d0b2001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22082008280200417f6a220836020020080d0b2001102e0c0b0b200341a0046a200710f901200341f8046a20032802a004220120032802a804220810fa01024002400240024002400240024020032d00b80541064622020d004100200341f8046a20021b22022d00400e06020305050401020b200341e0066a410210c202200320032900e106370380042003200341e8066a2800003600870420032d00e006210220032802a404450d102001102e0c100b200341e0066a410810c202200320032900e106370380042003200341e0066a41086a2800003600870420032d00e006210220032802a404450d0f2001102e0c0f0b200341e0066a200710c40220032802e006220920032802e80610ff01024020032802e406450d002009102e0b200341a8026a20024188016a2002290330222a200241386a290300222b10cb0220032903a80221052003200341a8026a41086a29030022063703e806200320053703e0060240024020052006844200520d002003200341e0066a3602a006200341a0066a10cc020c010b200342f0f2bda1a7ee9cb9f9003703a006200341e0066a200341a0066a10cd0220034198026a200341e0066a2005200610fd01200341b0066a20034198026a41086a290300220e20067d200329039802220f200554ad7d2006200e7d2005200f54ad7d200f200556200e200656200e2006511b22021b3703002003200f20057d2005200f7d20021b3703a80620032002ad3703a006200341a0066a41086a21090240024020020d00200320093602c004200341c0046a10cc020c010b200320093602c004200341c0046a10ce020b200341f8066a2006370300200341f0066a2005370300200341e8066a41063a00002003410e3a00e006200341e0066a10fe010b200341063a00b805200341f8066a202b370300200341f0066a202a370300200341ec066a2007360200200341e8066a41013a0000200341153a00e006200341e0066a10fe0142f0f98fc30121050c030b200341e0066a410410c202200320032900e106370380042003200341e8066a2800003600870420032d00e006210220032802a404450d0d2001102e0c0d0b200341c8026a200241c1006a2002290320200241286a29030010fb010b200342f0f2bda1a7ee9cb9f9003703c004200320073602e806200341023602e406200341e2b8c0003602e006200341a0066a200341c0046a200341e0066a10fc01200341e0066a200710c40220032802e006220220032802e80610ff01024020032802e406450d002002102e0b200341c0046a200341a0066a10c802200341e0066a20032802c004220920032802c80410c902200341f0066a290300420020032903e00642015122021b210520032903e806420020021b2106024020032802c404450d002009102e0b200342f0f2bda1a7ee9cb9f9003703c004200341e0066a200341c0046a10cd02200341c0046a200341a0066a200341e0066a20062005410110ca02200341063a00b805200341ec066a2007360200200341e8066a41053a0000200341153a00e006200341e0066a10fe01428887a88c0221050b0240024020032d00b8054106470d002001200810ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a1080022001200820032802e006220220032802e80610b20120032802e406450d002002102e0b024020032802a404450d002001102e0b200320032800c0033602a0032003200341c3036a2800003600a303200041186a41003a0000200041106a200537030020004201370308200020032802a0033600192000411c6a20032800a30336000020004200370300200424000f0b200128020421072001410c6a2802002108200141086a2802002101200341f8046a41286a200241286a280200360200200341f8046a41206a200241206a290200370300200341f8046a41186a200241186a290200370300200341f8046a41106a200241106a290200370300200341f8046a41086a200241086a290200370300200320022902003703f804200341e0066a200341f8046a10c102200341a0046a41086a2202200341e9066a290000370300200341a0046a41106a2209200341f1066a290000370300200341a0046a41186a220a200341f9066a290000370300200320032900e1063703a00420032d00e0064101460d05200341c0046a41186a200a290300370300200341c0046a41106a2009290300370300200341c0046a41086a2002290300370300200320032903a0043703c004200341a0046a200710f901200341f8046a20032802a004220a20032802a804220b10fa01024002400240024020032d00b80541064622020d0002404100200341f8046a20021b22022d00404104460d00200341a0066a410410c2020c020b0240200241c1006a200341c0046a412010ec08450d00200341a0066a410510c2020c020b200341b8066a22094200370300200341b0066a220c4200370300200341a0066a41086a220d4200370300200342003703a006200341d0066a41d9fcc6004106108102200d200341d0066a41086a2210290000370300200320032900d0063703a006200341d0066a4180f4cb00410610810220092010290000370300200c20032900d006370300200341d8026a200341a0066a4120108e02200220032802dc0241808dcf006a41808dcf0020032802d8021b22092002280264220c2009200c4b1b360264200341063a00a0060c020b200341a0066a410210c2020b4100210920032d00a00622024106470d010b410621020240024020032d00b8054106470d00200a200b10ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a108002200a200b20032802e006220220032802e80610b201024020032802e406450d002002102e0b410621020b410121090b024020032802a404450d00200a102e0b200341f8026a41026a220a20032d00a3063a0000200320032f00a1063b01f80202402009450d0020034184056a200736020020034180056a41063a0000200341153a00f804200341f8046a10fe012008450d082001102e0c080b20032902a406210520034180046a41026a200a2d00003a0000200320032f01f8023b0180040c060b1036000b00000b200341a0066a410210c2020c0c0b410221020c0e0b20034180036a410210c2020c050b410221020b02402008450d002001102e0b20024106460d00200341f8046a41026a20034180046a41026a2d000022013a0000200320032f01800422083b01f804200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a000020002005370024420121050c010b4200210520004200370308200020032800f804360019200041186a41003a00002000411c6a200341fb046a2800003600000b20002005370300200424000f0b200320032800c0033602a00320032003290380043703e00320032003280087043600e7032003200341c3036a2800003600a303200041186a41003a000020004200370308200020032802a0033600192000411c6a20032800a303360000200041206a20023a0000200020032903e003370021200041286a20032800e70336000020004201370300200424000f0b024020032d00800322024106470d0002400240200741ff01714106470d00200a200b10ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a108002200a200b20032802e006220220032802e80610b20120032802e406450d002002102e0b0240200328029403450d00200a102e0b200041186a41003a000020004200370308200020032800ec023600192000411c6a200341ef026a28000036000020004200370300200424000f0b0240200328029403450d00200a102e0b200341fe026a20032d0083033a0000200320032f00810322013b01f802200320013b01fc0220032902840321050b200341f4026a41026a200341fc026a41026a2d000022013a0000200320032f01fc0222083b01f402200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b200042003703082000200328009003360019200041186a41003a00002000411c6a20034193036a28000036000020004200370300200424000f0b410221020b200341e4026a41026a200341e8026a41026a2d000022013a0000200320032f01e80222083b01e402200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b4100210120032d00a00622024106470d010b410621020240024020032d00b8054106470d002008200710ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a1080022008200720032802e006220220032802e80610b201024020032802e406450d002002102e0b410621020b410121010b024020032802a404450d002008102e0b200341e0036a41026a220820032d00a3063a0000200320032f00a1063b01e00320010d0120032902a4062105200341c0036a41026a20082d00003a0000200320032f01e0033b01c00320024106460d010b200341a0036a41026a200341c0036a41026a2d000022013a0000200320032f01c00322083b01a003200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b200042003703082000200328008004360019200041186a41003a00002000411c6a20034183046a28000036000020004200370300200424000f0b4100210a0b4102210220034180036a41026a2201200341f4026a41026a2d00003a0000200341e0036a41086a2207200341c0046a41086a290300370300200341e0036a410d6a2209200341c0046a410d6a290000370000200320032f01f4023b018003200320032903c0043703e003024002400240024002400240024020080d00200341ec026a41026a220220012d00003a000020034180046a41086a2201200729030037030020034180046a410d6a22072009290000370000200320032f0180033b01ec02200320032903e00337038004200341e0036a201110f901200341f8046a20032802e003220820032802e803220910fa01200341fc026a41026a20022d00003a0000200341c0036a41086a2001290300370300200341c0036a410d6a2007290000370000200320032f01ec023b01fc0220032003290380043703c0030240024020032d00b80541064622020d00024002400240024002404100200341f8046a20021b22022d00400e06000000010203000b200341a0066a410410c2020c050b200341b3046a200341c0036a41086a290300370000200341a0046a41186a2201200341cd036a290000370000200320032f01fc023b01a0042003201d3600a7042003201c3600a304200320032903c0033700ab042003200341fe026a2d00003a00a204200a450d07200341e0066a41186a2001290300370300200341e0066a41106a200341a0046a41106a290300370300200341e0066a41086a200341a0046a41086a290300370300200320032903a0043703e006200341e0066a200241c1006a412010ec08450d070c020b200241c1006a2101024002400240200a450d00200341d3046a200341c0036a41086a290300370000200341c0046a41186a200341cd036a290000370000200320032f01fc023b01c0042003201d3600c7042003201c3600c304200320032903c0033700cb042003200341fe026a2d00003a00c204200341c0046a2001412010ec08450d01200341a0066a41186a22074200370300200341b0066a220a4200370300200341a0066a41086a220b4200370300200342003703a006200341d0066a41d9fcc6004106108102200b200341d0066a41086a220c290000370300200320032900d0063703a006200341d0066a4180f4cb0041061081022007200c290000370300200a20032900d006370300200341d8006a200341a0066a4120108e0202402003280258450d002002280264200328025c490d030b200341a0066a410910c2020c060b200341f0006a20012002290320200241286a29030010cb02200329037021052003200341f0006a41086a29030022063703e806200320053703e0060240024020052006844200520d002003200341e0066a3602a006200341a0066a10cc020c010b200342f0f2bda1a7ee9cb9f9003703a006200341e0066a200341a0066a10cd02200341e0006a200341e0066a2005200610fd01200341b0066a200341e0006a41086a290300220e20067d2003290360220f200554ad7d2006200e7d2005200f54ad7d200f200556200e200656200e2006511b22011b3703002003200f20057d2005200f7d20011b3703a80620032001ad3703a006200341a0066a41086a21070240024020010d00200320073602c004200341c0046a10cc020c010b200320073602c004200341c0046a10ce020b200341f8066a2006370300200341f0066a2005370300200341e8066a41063a00002003410e3a00e006200341e0066a10fe010b20024200370320200241286a42003703000c080b200341186a20012002290320200241286a29030010fb010c070b200341386a20012002290320200241286a29030010cb02200329033821052003200341386a41086a29030022063703e806200320053703e0060240024020052006844200520d002003200341e0066a3602a006200341a0066a10cc020c010b200342f0f2bda1a7ee9cb9f9003703a006200341e0066a200341a0066a10cd02200341286a200341e0066a2005200610fd01200341b0066a200341286a41086a290300220e20067d2003290328220f200554ad7d2006200e7d2005200f54ad7d200f200556200e200656200e2006511b22011b3703002003200f20057d2005200f7d20011b3703a80620032001ad3703a006200341a0066a41086a21070240024020010d00200320073602a004200341a0046a10cc020c010b200320073602a004200341a0046a10ce020b200341f8066a2006370300200341f0066a2005370300200341e8066a41063a00002003410e3a00e006200341e0066a10fe010b20024200370320200241286a42003703000c060b200b0d040b41022102200341023a00a006410021010c060b200341a0066a410210c2020b4100210120032d00a00622024106470d040c030b0c040b200341a0016a200241c1006a2002290320200241286a29030010cb0220032903a00121052003200341a0016a41086a29030022063703e806200320053703e0060240024020052006844200520d002003200341e0066a3602a006200341a0066a10cc020c010b200342f0f2bda1a7ee9cb9f9003703a006200341e0066a200341a0066a10cd0220034190016a200341e0066a2005200610fd01200341b0066a20034190016a41086a290300220e20067d200329039001220f200554ad7d2006200e7d2005200f54ad7d200f200556200e200656200e2006511b22011b3703002003200f20057d2005200f7d20011b3703a80620032001ad3703a006200341a0066a41086a21070240024020010d00200320073602c004200341c0046a10cc020c010b200320073602c004200341c0046a10ce020b200341f8066a2006370300200341f0066a2005370300200341e8066a41063a00002003410e3a00e006200341e0066a10fe010b20024200370320200241286a42003703000b200241023a0040200241c1006a200341e0066a41c70010e9081a200341063a00a0060b410621020240024020032d00b8054106470d002008200910ff010c010b200341003602e806200342013703e006200341f8046a200341e0066a1080022008200920032802e006220220032802e80610b201024020032802e406450d002002102e0b410621020b410121010b024020032802e403450d002008102e0b200341f8026a41026a220820032d00a3063a0000200320032f00a1063b01f80220010d0120032902a4062105200341e8026a41026a20082d00003a0000200320032f01f8023b01e80220024106460d010b200341e4026a41026a200341e8026a41026a2d000022013a0000200320032f01e80222083b01e402200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000f0b200042003703082000200328009003360019200041186a41003a00002000411c6a20034193036a28000036000020004200370300200424000f0b410221020b200341ec026a41026a20034180036a41026a2d000022013a0000200320032f01800322083b01ec02200041206a20023a0000200041186a41003a000020004200370308200020083b0021200041236a20013a00002000200537002420004201370300200424000bbe06030d7f017e037f230041306b220224002002200141026a2f01003b012e2002200141066a2f01003b012c20022001410a6a2f01003b012a200141046a2d00002103200141056a2d00002104200141086a2d00002105200141096a2d000021062001410c6a2d000021072001410d6a2d0000210820012d0001210920012d0000210a20022001410e6a2f01003b0128200141116a2d0000210b200141106a2d0000210c2002200141126a2f01003b0126200141156a2d0000210d200141146a2d0000210e2002200141166a2f01003b01242001411a6a290100210f200141196a2d00002110200141186a2d000021112001280228210120022f012e211202400240200a0d0020012001280200417f6a220a360200200220123b0122200220022f012c3b0120200220022f012a3b011e200220022f01283b011c200220022f01263b011a200220022f01243b01182002200f3703080240200a0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a220a200a280200417f6a220a360200200a0d002001102e0b0240200941ff01714101460d00200041013a00000c020b200020022f01223b0001200041046a20043a0000200041036a20033a0000200041086a20063a0000200041076a20053a0000200041056a20022f01203b00002000410c6a20083a00002000410b6a20073a0000200041096a20022f011e3b0000200041106a200b3a00002000410f6a200c3a00002000410d6a20022f011c3b0000200041146a200d3a0000200041136a200e3a0000200041116a20022f011a3b0000200041186a20103a0000200041176a20113a0000200041003a0000200041156a20022f01183b0000200041196a20022903083700000c010b200220123b0120200220022f012c3b011e200220022f012a3b011c200220022f01283b011a200220022f01263b01182002200f37020c200220103a000b200220113a000a200220022f01243b0108200041013a000020012001280200417f6a220036020020000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22002000280200417f6a220036020020000d002001102e0b200241306a24000bc60201047f230041c0006b2202240041aab4c700210341092104410821050240024002400240024002400240024002400240200141ff01710e0a00010203040506070809000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41b0a5cc001044000b41d0ffc3002103411c2104410021050c070b41caeac2002103410c2104410121050c060b419eb4c7002103410c2104410221050c050b4195b9c000210341102104410321050c040b4187b9c0002103410e2104410421050c030b41fbb8c0002103410c2104410521050c020b41f1b8c0002103410a2104410621050c010b41e4b8c0002103410d2104410721050b20004183c4003b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bce1204027f0c7e037f037e230041e0026b220424002004200337031020042002370308200420013602040240024020022003844200520d00200041063a00000c010b2004200136023c20044180016a200110c802200441e0016a200428028001220520042802880110c902200441e0016a41386a2903002106200441e0016a41306a2903002107200441e0016a41286a2903002108200441e0016a41206a2903002109200441e0016a41186a290300210a200441e0016a41106a290300210b200441a0026a290300210c20042903e801210d20042903e001210e200441b0016a41086a200441b0026a2903003703002004200441a8026a2903003703b00102400240200e4201510d004200210c200441c0006a41386a4200370300200441c0006a41306a4200370300200441c0006a41286a4200370300200441c0006a41206a4200370300200441c0006a41186a4200370300200441c0006a41106a4200370300200441c0006a41086a420037030020044200370340420021094200210842002107420021064200210d4200210b4200210a4200210f420021104200210e420021110c010b200441c0006a41206a2008370300200441c0006a41286a2007370300200441c0006a41106a200a370300200441c0006a41306a2006370300200420093703582004200d3703402004200c3703782004200b3703482008210f20072110200d210e200b21110b0240200428028401450d002005102e0b02400240200e2011844200520d00200f2004290350842010200441d8006a29030084844200520d002004290370200441f8006a2903008450450d004200210e410021050c010b4201210e410121050b0240200e4201510d004200210842002107420021064200210c4200210a420021094200210d4200210b0b0240024002400240024002400240200d20027d2211200d56200b20037d200d200254ad7d220d200b56200d200b511b0d000240200a20027c220f200a542212200920037c2012ad7c220b200954200b2009511b450d00200441d0016a41086a4108360200200441a984ca003602d401200441023a00d201200441830a3b01d0010c020b200441d0016a20012002200341042011200d10d70620042d00d0014106470d0120044188026a22132007370300200441f8016a200b37030020044190026a2214200637030020042008370380022004200f3703f001200420113703e0012004200d3703e8014200210a42012107200e420152ad210802400240427f2011200f7c220920092011542212200d200b7c2012ad7c2209200d542009200d511b22121b220642ffc7afa02556427f200920121b22094200522009501b0d002011200f84200d200b8484220b50211242002107200b420052ad210a0c010b201429030021152013290300211620044180026a2903002117200441f0016a290300210f20042903f801211020042903e801210e20042903e001210b410121120b200441a8016a2009370300200441a0016a2213200637030020044190016a200d37030020042011370388012004200a37039801200420083703800120052007420152720d02200420013602e0012001200441e0016a10bd060c040b200441d8016a4113360200200441c8a3c7003602d401200441033a00d201200441830a3b01d0010b20042902d401210b20042802d00121050c010b0240200541017322052007420151720d00200420013602e0012001200441e0016a10be0641ff017122054103460d02024020050e03040300040b41042105024020120d00200420133602e001200441e0016a10cc020b0c010b2007420152200571450d010c020b200541ff01714106460d02200020053a0000200041036a20054118763a0000200020054108763b0001200041046a200b3702000c030b200441c0016a200110c802200441e0016a20042802c001221220042802c801221310c90220042903e0012102200441b0016a41086a2205200441b0026a2903003703002004200441a8026a2903003703b0010240024020024201510d00200441d0016a41086a4200370300200442003703d0010c010b200441d0016a41086a2005290300370300200420042903b0013703d0010b200441a8026a20042903d001370300200441b0026a200441d0016a41086a290300370300200442013703e00120044198026a20154200200742015122051b37030020044190026a2016420020051b370300200441e0016a41286a2017420020051b37030020044180026a2010420020051b370300200441f8016a200f420020051b370300200441e0016a41106a200e420020051b370300200441a0026a200c420020051b3703002004200b420020051b3703e80120122013200441e0016a41086a10c805024020042802c401450d002012102e0b20044180016a41106a290300210d20044180016a41286a2903002109200429038801211120042903a00121062004290380012108200429039801210a0b024020084201520d0020044198026a200d37030020044190026a2011370300200441e0016a41086a41003a0000200441e9016a2001290000370000200441f1016a200141086a290000370000200441f9016a200141106a29000037000020044181026a200141186a290000370000200441033a00e001200441e0016a10fe010b02400240200a50450d00420021020c010b200441e0016a41086a200428023c220141086a290000370300200441e0016a41106a200141106a290000370300200441e0016a41186a200141186a290000370300200420012900003703e001420121020b200441186a41186a200441e0016a41186a22012903002203370300200441186a41106a200441e0016a41106a2205290300220b370300200441186a41086a200441e0016a41086a290300220d370300200420042903e001220a37031820044190026a200937030020044188026a221220063703002005200d3703002001200b37030020044180026a2003370300200420023703e0012004200a3703e801200441e0016a10d204024020042903e001500d0020042012360240200441c0006a10cc020b200441086a41086a290300210320042903082102200428020421010b20044198026a200337030020044190026a2002370300200441e0016a41086a41053a0000200441e9016a2001290000370000200441f1016a200141086a290000370000200441f9016a200141106a29000037000020044181026a200141186a290000370000200441033a00e001200441e0016a10fe01200041063a00000b200441e0026a24000b870201037f230041d0006b22022400200241086a41bad7c7004108108102200241186a4194dac0004112108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b970101047f230041106b22032400024002402002280208220441046a2205417f4c0d00200228020021020240024020050d00410121060c010b2005102c2206450d020b20034100360208200320053602042003200636020020042003107620032002200410742000200120032802002205200328020810b20102402003280204450d002005102e0b200341106a24000f0b1038000b1036000b9d0601087f20002802282101024002400240024020002d000022020d0020002d0001210020012001280200417f6a2203360200024020030d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22032003280200417f6a220336020020030d002001102e0b0240200041ff01710d0041000f0b4110102c2200450d03200041f8f7c60036020c2000410136020820004281808080103702004110102c2201450d0320014190f8c60036020c20014101360208200142818080801037020020002000280200417f6a220336020020030d012000280208200028020c2802001103000240200028020c280204450d002000280208102e0b200041046a22032003280200417f6a220336020020030d012000102e0c010b410021030240024002402002417f6a0e03000104010b2000410e6a2f010021022000410d6a2d000021042000410c6a2d000021052000410a6a2f01002106200041096a2d00002107200041086a2d00002108200041046a2d0000210020012001280200417f6a2203360200024020030d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22032003280200417f6a220336020020030d002001102e0b200041ff01710d0141012103200641107420074108747220087241056c200241107420044108747220057241036c490d010c030b4101210320024103460d020c010b4110102c2200450d02200041f8f7c60036020c2000410136020820004281808080103702004110102c2201450d0220014190f8c60036020c20014101360208200142818080801037020020002000280200417f6a220336020020030d002000280208200028020c2802001103000240200028020c280204450d002000280208102e0b200041046a22032003280200417f6a220336020020030d002000102e0b20012001280200417f6a22003602004102210320000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22002000280200417f6a220036020020000d002001102e0b20030f0b1036000b31002001ad4220862000ad84200235020842208620022802002200ad84101f0240200241046a280200450d002000102e0b0bac0201037f230041e0006b22022400200241d9fcc6004106108102200241106a41dcf1cb004107108102024002404120102c2203450d002002422037023420022003360230200241306a200141201074200241c0006a200228023022012002280238220310d803200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a107c02402002280234450d002001102e0b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241e0006a24000f0b1036000b1038000b8c0402067f027e230041d0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044104490d002004417c7122054104460d0020054108460d002005410c460d00200441707122044110460d00200128000021052001280004210620012800082107200128000c2108200141186a29000021092001290010210a0240200441506a0e110102020202020202020202020202020201000b20044120470d010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341909dc5003602382003200341286a360248200341346a419cebc000200341386a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b420021090c010b2000200a370308200041386a2001290040370300200041286a2001290030370300200041186a2001290020370300200041106a2009370300200041d4006a2008360200200041d0006a2007360200200041cc006a2006360200200041c8006a2005360200200041c0006a200141c8006a290000370300200041306a200141386a290000370300200041206a200141286a290000370300420121090b200020093703002002450d002001102e0b200341d0006a24000bb63507017f0a7e017f067e047f047e037f230041d0066b2206240020062001360204200620053a001f20062003370308200620043703100240024002402003200484500d0020012002412010ec080d010b200041063a00000c010b200620023602e401200641a8026a200210c802200641d0056a20062802a802220120062802b00210c9020240024020062903d0054201510d0042002107200641e8016a41386a4200370300200641e8016a41306a4200370300200641e8016a41286a420037030020064188026a4200370300200641e8016a41186a4200370300200641e8016a41106a4200370300200641f0016a4200370300200642003703e80142002108420021094200210a4200210b42002104420021034200210c4200210d4200210e4200210f420021100c010b200641d0056a41386a290300210b200641d0056a41306a290300210a200641d0056a41206a2903002108200641d0056a41186a290300210c200641d0056a41106a290300210320064190066a290300210720062903d805210420064188026a200641d0056a41286a2903002209370300200641e8016a41286a200a370300200641e8016a41106a200c370300200641e8016a41306a200b3703002006200837038002200620043703e801200620073703a002200620033703f0012009210d200a210e2004210f200321100b024020062802ac02450d002001102e0b02400240200f2010844200520d00200d20062903f80184200e20064180026a29030084844200520d00200629039802200641a0026a2903008450450d0042002110410021110c010b42012110410121110b0240024020104201510d00200641e8036a4200370300200641e0036a4200370300200641d8036a4200370300200641d0036a4200370300200641c8036a4200370300200641c0036a4200370300200641b8036a4200370300200642003703b0030c010b200641d0036a2009370300200641d8036a200a370300200641e0036a200b370300200641c0036a200c370300200620083703c803200620073703e803200620043703b003200620033703b8030b2006200628020422013602f403200641e8046a200110c802200641d0056a20062802e804220520062802f00410c9020240024020062903d0054201510d004200210d200641f8036a41386a4200370300200641f8036a41306a4200370300200641f8036a41286a4200370300200641f8036a41206a4200370300200641f8036a41186a4200370300200641f8036a41106a420037030020064180046a4200370300200642003703f80342002112420021134200210c4200211442002104420021034200210f42002115420021164200210e420021170c010b200641d0056a41386a2903002114200641d0056a41306a290300210c200641d0056a41206a2903002112200641d0056a41186a290300210f200641d0056a41106a290300210320064190066a290300210d20062903d8052104200641f8036a41206a200641d0056a41286a2903002213370300200641f8036a41286a200c370300200641f8036a41106a200f370300200641f8036a41306a20143703002006201237039004200620043703f8032006200d3703b004200620033703800420132115200c21162004210e200321170b024020062802ec04450d002005102e0b02400240200e2017844200520d00201520062903880484201620064190046a29030084844200520d0020062903a804200641b0046a2903008450450d004200210e410021050c010b4201210e410121050b02400240200e4201510d004200210d20064198056a420037030020064190056a420037030020064188056a420037030020064180056a4200370300200641f8046a4200370300200641f0046a4200370300200642003703e80442002104420021030c010b20064188056a201337030020064190056a200c37030020064198056a2014370300200641f8046a200f3703002006201237038005200620043703e804200620033703f0040b024002400240024020042006290308220f7d220c2004562003200641086a41086a29030022177d2004200f54ad7d220420035620042003511b450d0041838a0c21054280808080b002210341c8a3c7002118410121190c010b2006200c3703e804200620043703f004024020062903b0032203200f7c22132003542218200641b0036a41086a290300221220177c2018ad7c220320125420032012511b450d0041838a08210542808080808001210341a984ca002118410121190c010b200620133703b003200641c8036a2903002112200620033703b8030240427f201320062903c0037c221420142013542218200320127c2018ad7c221220035420122003511b22181b4280c8afa025544100427f201220181b501b450d0041838a1021054280808080a002210341e4a3c7002118410121190c010b200641d0056a2006280204200f20174102200c200410d706024020062d00d0054106460d0041838a0421054280808080d002210341a0a3c7002118410121190c010b0240024020062d001f4101470d00200641a0056a200628020410c802200641d0056a20062802a005221920062802a80510c902200628029c06211820062903d0052103024020062802a405450d002019102e0b20034201520d012018450d010b427f200c20062903f8047c22032003200c542218200420064180056a2903007c2018ad7c220320045420032004511b22181b4280c8afa025544100427f200320181b501b450d0041838a1421054280808080900121034180a4c7002118410121190c010b200641a0056a41206a200641e8046a41306a2903002203370300200641a0056a41186a200641e8046a41286a2903002212370300200641a0056a41106a200641e8046a41206a2903002213370300200641a8056a200641e8046a41186a290300220f370300200620062903f80422173703a0052006200d3703c805200641d0056a41186a200f370300200641d0056a41206a22192013370300200641d0056a41286a221a2012370300200641d0056a41306a221b2003370300200620173703e0052006200c3703d005200620043703d80542012103200e420152ad211402400240427f200c20177c22122012200c5422182004200f7c2018ad7c221320045420132004511b22181b22124280c8afa025544100427f201320181b2213501b450d00200c2017842004200f8484220f50211842002103200f420052ad21170c010b201b290300211c201a290300211d2019290300211e200641d0056a41106a290300211620062903e805211f20062903d805211520062903d005210f42002117410121180b200641e0046a2013370300200641d8046a221a2012370300200641c8046a20043703002006200c3703c004200620173703d004200620143703b8040240024002400240024020052003420152720d00200620013602d0052001200641d0056a10bd060c010b0240200541017322052003420151720d00200620013602d0052001200641d0056a10be0641ff017122054103460d01024020050e03030200030b42002103410121194104210502402018450d000c060b2006201a3602d005200641d0056a10cc020c050b20034201522005710d020b200641e8046a200110c802200641d0056a20062802e804221920062802f004221a10c90220064198066a221b2802002120200641a0066a22212903002104200628029c06212220062903d005210c200642013703d00520064188066a201c4200200342015122051b37030020064180066a201d420020051b370300200641d0056a41286a201e420020051b370300200641f0056a201f420020051b370300200641e8056a2016420020051b370300200641d0056a41106a2015420020051b370300202120044200200c42015122181b3703002006419c066a2022410020181b360200201b2020410020181b36020020064190066a200d420020051b3703002006200f420020051b3703d8052019201a200641d8056a10c805024020062802ec04450d002019102e0b200641b8046a41106a2903002104200641b8046a41286a290300211320062903c004210c20062903d804211220062903b804210f20062903d00421170c040b20062903b80422044280808080708321032004a72118200641e0046a2903002113200641c8046a290300210420062903d804211220062903c004210c4100211920062903d00421170c010b200e420152211842002103410021190b0b20032018ad84210f2019450d00410121010c010b0240200f4201520d0020064188066a200437030020064180066a200c370300200641d0056a41086a41003a0000200641d9056a2001290000370000200641e1056a200141086a290000370000200641e9056a200141106a290000370000200641f1056a200141186a290000370000200641033a00d005200641d0056a10fe010b02400240201750450d004200210f0c010b200641d0056a41086a20062802f403220141086a290000370300200641d0056a41106a200141106a290000370300200641d0056a41186a200141186a290000370300200620012900003703d0054201210f0b200641f8036a41186a200641d0056a41186a2903002204370300200641f8036a41106a200641d0056a41106a2903002203370300200641f8036a41086a200641d0056a41086a290300220c370300200641e8046a41086a200c370300200641e8046a41106a2003370300200641e8046a41186a2004370300200620062903d00522043703f803200620043703e804410021010b200641f8036a41086a2218200641b0036a41186a290300370300200641f8036a41106a2219200641b0036a41206a290300370300200641f8036a41186a221a200641b0036a41286a290300370300200641f8036a41206a221b200641b0036a41306a290300370300200620062903c0033703f803200641b0036a41086a290300210420062903b0032103024002402001450d004200210e41012101200f210c0c010b200641e8036a2903002107200641d0056a41186a2018290300220a370300200641d0056a41206a2019290300370300200641d0056a41286a201a290300370300200641d0056a41306a201b290300370300200620062903f80322083703e005200620033703d005200620043703d8054200210d4201210e2010420152210102400240427f200320087c220c200c20035422182004200a7c2018ad7c220c200454200c2004511b22181b221742ffc7afa02556427f200c20181b22104200522010501b0d004200210e20032008842004200a8484420052ad210d0c010b20064180066a290300210b200641f8056a290300210a200641f0056a2903002109200641e0056a290300211620062903e805210820062903d805211520062903d00521140b2001ad210c200641a0056a41086a200641e8046a41086a290300370300200641a0056a41106a200641e8046a41106a290300370300200641a0056a41186a200641e8046a41186a290300370300200620062903e8043703a005410021010b20064190036a41086a200641a0056a41086a29030037030020064190036a41106a200641a0056a41106a29030037030020064190036a41186a200641a0056a41186a290300370300200620062903a0053703900302400240024002400240024020010d00200641d0026a2010370300200641c8026a22052017370300200641a8026a41106a200437030020064188036a201337030020064180036a22192012370300200641e0026a2201200629039003370300200641e8026a20064198036a290300370300200641f0026a20064190036a41106a290300370300200641f8026a200641a8036a290300370300200620033703b0022006200f3703d8022006200d3703c0022006200c3703a802024002402011200e420152720d00200620023602d0052002200641d0056a10bd060c010b024020114101732218200e420151720d00200620023602d0052002200641d0056a10be0641ff017122184103460d010240024020180e03010300010b0240200d500d00200620053602d005200641d0056a10cc020b200641d8026a10d204410121184104210520062903d802500d05200620193602d005200641d0056a10cc020c050b200641b0036a41286a200141286a290300370300200641b0036a41206a200141206a290300370300200641b0036a41186a200141186a290300370300200641b0036a41106a200141106a290300370300200641b0036a41086a200141086a290300370300200620012903003703b003410021180c040b200e4201522018710d020b200641f8036a200210c802200641d0056a20062802f8032219200628028004221110c90220064198066a221a280200211b200641a0066a22202903002104200628029c06212120062903d0052103200642013703d00520064188066a200b4200200e42015122051b37030020064180066a200a420020051b370300200641d0056a41286a2009420020051b370300200641d0056a41206a2008420020051b370300200641d0056a41186a2016420020051b370300200641d0056a41106a2015420020051b370300202020044200200342015122181b3703002006419c066a2021410020181b360200201a201b410020181b36020020064190066a2007420020051b37030020062014420020051b3703d80520192011200641d0056a41086a10c805024020062802fc03450d002019102e0b200641b0036a41086a2205200141086a290300370300200641b0036a41106a2218200141106a290300370300200641b0036a41186a2219200141186a290300370300200641b0036a41206a2211200141206a290300370300200641b0036a41286a221a200141286a290300370300200620012903003703b003200641a8026a41106a2903002104200641a8026a41286a290300211020062903b002210320062903c802211720062903a802210a20062903c002210d20062903d802210c200641f8036a41286a201a290300370300200641f8036a41206a2011290300370300200641f8036a41186a2019290300370300200641f8036a41106a2018290300370300200641f8036a41086a2005290300370300200620062903b0033703f803200641f8036a21010c030b410121180c010b200641b0036a41286a200141286a290300370300200641b0036a41206a200141206a290300370300200641b0036a41186a200141186a290300370300200641b0036a41106a200141106a290300370300200641b0036a41086a200141086a290300370300200620012903003703b003410021180b200641f8036a41286a200641b0036a41286a290300370300200641f8036a41206a200641b0036a41206a290300370300200641f8036a41186a200641b0036a41186a290300370300200641f8036a41106a200641b0036a41106a290300370300200641f8036a41086a200641b0036a41086a290300370300200620062903b0033703f803200641f8036a210120180d01200c210a200f210c0b200641a8026a41286a200141286a290300370300200641a8026a41206a200141206a290300370300200641a8026a41186a200141186a290300370300200641a8026a41106a200141106a290300370300200641a8026a41086a200141086a290300370300200620012903003703a8020240200a4201520d0020062802e401210120064188066a200437030020064180066a2003370300200641d0056a41086a41003a0000200641d9056a2001290000370000200641e1056a200141086a290000370000200641e9056a200141106a290000370000200641f1056a200141186a290000370000200641033a00d005200641d0056a10fe010b02400240200d50450d00420021040c010b200641e8016a41086a20062802e401220141086a290000370300200641e8016a41106a200141106a290000370300200641e8016a41186a200141186a290000370300200620012900003703e801420121040b200641e8046a41186a200641e8016a41186a290300370300200641e8046a41106a200641e8016a41106a290300370300200641e8046a41086a200641e8016a41086a290300370300200641d0056a41086a200641a8026a41086a290300370300200641d0056a41106a200641a8026a41106a290300370300200641d0056a41186a200641a8026a41186a290300370300200641d0056a41206a200641a8026a41206a290300370300200641d0056a41286a200641a8026a41286a290300370300200620062903e8013703e804200620062903a8023703d005410021010c010b410121010b200641b0016a41086a2218200641d0056a41086a290300370300200641b0016a41106a2219200641d0056a41106a290300370300200641b0016a41186a2211200641d0056a41186a290300370300200641b0016a41206a221a200641d0056a41206a290300370300200641b0016a41286a221b200641d0056a41286a29030037030020064190016a41086a2220200641e8046a41086a29030037030020064190016a41106a2221200641e8046a41106a29030037030020064190016a41186a2222200641e8046a41186a290300370300200620062903d0053703b001200620062903e80437039001024020010d00200641e0006a200629039001370300200641206a41106a2018290300370300200641206a41186a2019290300370300200641206a41206a2011290300370300200641206a41286a201a290300370300200641d0006a201b290300370300200641e8006a2020290300370300200641f0006a2021290300370300200641f8006a20222903003703002006200c370320200620062903b0013703282006200437035820064188016a201037030020064180016a22012017370300200641206a10d20402402006290320500d002006200641c8006a3602d005200641d0056a10cc020b200641d8006a10d20402402006290358500d00200620013602d005200641d0056a10cc020b200641086a41086a290300210420062903082103200641206a41186a2006280204220141186a290000220c370300200641206a41106a200141106a290000220a370300200641206a41086a200141086a290000220f370300200620012900002207370320200641a8066a2004370300200641a0066a2003370300200641d0056a41086a41023a0000200641d9056a2007370000200641e1056a200f370000200641e9056a200a370000200641f1056a200c370000200641f9056a200229000037000020064181066a200241086a29000037000020064189066a200241106a29000037000020064191066a200241186a290000370000200641033a00d005200641d0056a10fe01200041063a00000c010b20002005360200200041046a200c3702000b200641d0066a24000beb130a017f047e017f047e0b7f017e027f017e017f0c7e230041f0026b2204240002400240200220038450450d00420021054200210642002107420021080c010b20044180016a200110c802200441f0016a200428028001220920042802880110c90220044190026a290300210a20044188026a290300210b20044180026a290300210620042903f801210c20042903f001210d0240200428028401450d002009102e0b420021050240200d4201520d00200c200b842006200a8484500d00200441f0016a41c8006a210e200441f0016a41086a210f20044180016a41306a211020044180016a41206a211141002109200441f0016a41386a2112200441f0016a41106a2113200441c0006a41286a2114200441c0006a41186a211502400240024003402004200136022c20044180016a200110c802200441f0016a200428028001221620042802880110c90220122903002107200441f0016a41306a2217290300210b200441f0016a41206a221829030021082013290300210d2004290398022105200429038802211920042903f801210a20042903b002210c20042903f0012106200441306a41086a200e41086a2903003703002004200e2903003703300240024020064201510d004200210c200441c0006a41386a4200370300200441c0006a41306a420037030020144200370300200441c0006a41206a420037030020154200370300200441c0006a41106a4200370300200441c0006a41086a420037030020044200370340420021054200210b4200210a4200210d0c010b2014200b370300200441c0006a41306a2007370300200420053703602004200a3703402004200c370378200420193703502004200d370348200420083703580b0240200428028401450d002016102e0b02400240200a200d844200520d002005200429035084200429037084200b201529030084200441c0006a41386a290300848450450d0042002119410021160c010b200441c0006a41106a290300210a200441c0006a41306a290300210820142903002106200441c0006a41206a29030021072004290348210d2004290340210b4201211920042903582105410121160b02402019420152221a450d004200210742002106420021084200210c4200210a420021054200210b4200210d0b200441f0016a41286a221b2006370300201720083703002004200b3703f0012004200d3703f801200441f0016a41186a200542002005200d7c200a200b7c2206200a54ad7c220820064280c8afa02554ad7d221920064280b8d0df5a7c221c2006562019200856200642ffc7afa025561b221d1b220620034200201c201d1b2208200254200620035420062003511b221d1b200320091b22062005200a20082002201d1b200220091b220856200520065620052006511b221d1b22067d200a2008200a201d1b220554ad7d221937030020042007370390022004200a20057d221c37038002200320067d2002200554ad7d2108200220057d2107201aad211e02400240427f200b201c7c220a200a200b54221a200d20197c201aad7c220a200d54200a200d511b221a1b221f42ffc7afa02556427f200a201a1b220a420052200a501b0d002020200a200b201c84200d20198484220c5022171b21202021201f20171b21214200210a200c420052ad21190c010b20172903002122201b29030021232018290300212420132903002125200429038802212620042903f801212720042903f00121284201210a4200211941012117200c21290b20044180016a41c8006a200837030020044180016a41386a200637030020044180016a41286a202037030020044180016a41106a200d370300200420073703c001200420053703b001200420213703a0012004200b3703880120042019370398012004201e3703800102402016200a420152720d00200420013602f0012001200441f0016a10bd060c030b20164101732216200a420151720d01200420013602f00102402001200441f0016a10be0641ff017122164102460d0020160d03200441c8016a2903002108200441b8016a2903002106200441a8016a290300212020044190016a290300210d20042903c001210720042903b001210520042903a0012121200429038801210b2004290398012119200429038001211e0c040b024020170d00200420113602f001200441f0016a10cc020b200420103602f001200441f0016a10cc02200941016a22094102470d000b420021050c030b200a4201522016710d010b200441d0016a200110c802200441f0016a20042802d001220920042802d801221610c90220042903f001210d200441306a41086a2217200e41086a2903003703002004200e29030037033002400240200d4201510d00200441e0016a41086a4200370300200442003703e0010c010b200441e0016a41086a2017290300370300200420042903303703e0010b0240200a4201510d0042002128420021274200212442002123420021224200212942002125420021260b200e20042903e001370300200441a0026a202337030020044190026a2026370300200441f0016a41106a2027370300200441f0016a41386a2022370300200e41086a200441e0016a41086a29030037030020042024370398022004202537038802200420283703f801200420293703b002200442013703f00120092016200f10c805024020042802d401450d002009102e0b20044180016a41106a290300210d200441a8016a290300212020044180016a41386a2903002106200441c8016a2903002108200429038801210b20042903a001212120042903b001210520042903c0012107200429038001211e20042903980121190b0240201e4201520d00200441a8026a200d370300200441a0026a200b370300200441f0016a41086a41003a0000200441f9016a200129000037000020044181026a200141086a29000037000020044189026a200141106a29000037000020044191026a200141186a290000370000200441033a00f001200441f0016a10fe010b02400240201950450d00420021030c010b200441f0016a41086a200428022c220141086a290000370300200441f0016a41106a200141106a290000370300200441f0016a41186a200141186a290000370300200420012900003703f001420121030b200441086a41186a200441f0016a41186a2201290300220d370300200441086a41106a200441f0016a41106a2209290300220a370300200441086a41086a200441f0016a41086a290300220b370300200420042903f0012202370308200441a0026a202037030020044198026a221620213703002009200b3703002001200a37030020044190026a200d370300200420033703f001200420023703f801200441f0016a10d20420042903f001500d01200420163602800120044180016a10cc020c010b4200210620022107200321080b2000200737031020002005370300200041186a200837030020002006370308200441f0026a24000b9b0304057f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a41f8fcc60041081081022004200141c0006a41086a220529000037030020012001290040370320200141c0006a41a8aac800410d1081022002200529000037030020032001290040370300200141086a200141206a412010f802200141086a41106a290300210620012903102107200128020821082000280200220041086a29030021092000290300210a20024200370300200342003703002004420037030020014200370320200141c0006a41f8fcc60041081081022004200529000037030020012001290040370320200141c0006a41a8aac800410d1081022002200529000037030020032001290040370300200142002006420020081b220620097d2007420020081b2207200a54ad7d22092007200a7d220a200756200920065620092006511b22021b37034820014200200a20021b370340200141206a4120200141c0006a411010b201200141d0006a24000b8f0201027f230041d0006b22022400200241d4e2cc0036023020022001360228200241edde91e30636022c02404104102c2203450d002002420437023c20022003360238200241386a200241286a41047241041074200241386a200141081074200228023821012002200228024036024c200220013602482002200241c8006a10d0040240200228023c450d002001102e0b0240024020022d00004101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290001370000200041186a200241196a290000370000200041106a200241116a290000370000200041086a200241096a2900003700000b200241d0006a24000f0b1036000b9a0304057f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a41f8fcc60041081081022004200141c0006a41086a220529000037030020012001290040370320200141c0006a41a8aac800410d1081022002200529000037030020032001290040370300200141086a200141206a412010f802200141086a41106a290300210620012903102107200128020821082000280200220041086a29030021092000290300210a20024200370300200342003703002004420037030020014200370320200141c0006a41f8fcc60041081081022004200529000037030020012001290040370320200141c0006a41a8aac800410d10810220022005290000370300200320012900403703002001427f20092006420020081b22067c200a2007420020081b22077c22092007542202ad7c22072002200720065420072006511b22021b3703482001427f200920021b370340200141206a4120200141c0006a411010b201200141d0006a24000bd88f01040a7f047e047f037e230022032104200341c0086b416071220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0b00010203040506070d1817000b20034194056a410136020020034201370284052003419cc3cb0036028005200341043602e403200341a4a7c7003602e0032003200341e0036a3602900520034180056a4198f3c0001044000b200141246a2802002105200141216a2d00002106200341b8076a41186a200141196a290000370300200341b8076a41106a200141116a290000370300200341b8076a41086a200141096a290000370300200320012900013703b80720034180056a41286a2201200241286a28020036020020034180056a41206a2207200241206a29020037030020034180056a41186a2208200241186a29020037030020034180056a41106a2209200241106a29020037030020034180056a41086a220a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341c0036a41086a2202200341e0036a41096a290000370300200341c0036a41106a220b200341e0036a41116a290000370300200341c0036a41186a220c200341e0036a41196a290000370300200320032900e1033703c00320032d00e0034101460d14200341a0026a41186a200c290300370300200341a0026a41106a200b290300370300200341a0026a41086a2002290300370300200320032903c0033703a00220034180056a200341b8076a200341a0026a200610d002200341e0036a41086a2008290300370300200341e0036a41106a2007290300370300200341e0036a41186a2001280200360200200320092903003703e003200a290300210d20032802840521012003280280054101460d2f200341e0046a41186a2202200341e0036a41186a280200360200200341e0046a41106a2206200341e0036a41106a290300370300200341e0046a41086a2207200341e0036a41086a290300370300200320032903e0033703e00402402001450d0020034180056a410710d102200329028405210d20032802800521010c300b200341ec036a20032903e004370200200341f4036a2007290300370200200341e0036a411c6a200629030037020020034184046a20022802003602002003200d3702e403200341003602e003200341d8076a41186a200341b8076a41186a290300370300200341d8076a41106a200341b8076a41106a290300370300200341d8076a41086a200341b8076a41086a290300370300200320032903b8073703d80720034180056a200541b00210e9081a200341e0036a200341d8076a20034180056a10d2022005102e200320032800c0043602a0042003200341c3046a2800003600a304200041186a41003a000020004200370308200020032802a0043600192000411c6a20032800a30436000020004200370300200424000f0b200141246a2802002109200141216a2d0000210a200341a0036a41186a2205200141196a290000370300200341a0036a41106a2206200141116a290000370300200341a0036a41086a2207200141096a290000370300200320012900013703a003200341e0036a41286a200241286a280200360200200341e0036a41206a200241206a290200370300200341e0036a41186a200241186a290200370300200341e0036a41106a200241106a290200370300200341e0036a41086a200241086a290200370300200320022902003703e003200341d8076a200341e0036a10c102200341c0036a41086a2201200341d8076a41096a290000370300200341c0036a41106a2202200341d8076a41116a290000370300200341c0036a41186a2208200341d8076a41196a290000370300200320032900d9073703c00320032d00d8074101460d11200341a0046a41186a2008290300370300200341a0046a41106a2002290300370300200341a0046a41086a2001290300370300200320032903c0033703a004200341c0046a41186a2005290300370300200341c0046a41106a2006290300370300200341c0046a41086a2007290300370300200320032903a0033703c0040240200341a0046a200341c0046a412010ec080d00200341d8076a410810d102200341ef036a200341d8076a41086a280200220136000020034198056a41003a0000200341a8056a2001360000200320032903d8073700e703200341a1056a200341e0036a41086a29000037000020034200370388052003420137038005200320032900e00337009905410121020c2c0b200341e0046a41186a2206200341c0046a41186a290300370300200341e0046a41106a2207200341c0046a41106a290300370300200341e0046a41086a2208200341c0046a41086a290300370300200320032903c0043703e004200341b0086a200341a0046a10d302200341e0036a20032802b00820032802b80810d402200341ec036a280200210b0240024020032802e00322050d004200210e4100210141042105410021024200210d0c010b200341e0036a41186a290300210d200341e0036a41106a290300210e200341e0036a41086a280200210220032802e40321010b200341b8076a41186a2006290300370300200341b8076a41106a2007290300370300200341b8076a41086a2008290300370300200320032903e0043703b807024020024120490d00200341e0036a410110d10220032f00e10320032d00e3034110747221020c290b200341f4076a200341b8076a41186a290300370200200341ec076a200341b8076a41106a290300370200200341e4076a200341b8076a41086a290300370200200320032903b8073702dc072003200a3a00fc07200320093602d807200341306a20052002200341d8076a10d5022003280230450d0b20032802342107200341e0036a41206a200341d8076a41206a290300370300200341e0036a41186a200341d8076a41186a290300370300200341e0036a41106a200341d8076a41106a290300370300200341e0036a41086a200341d8076a41086a290300370300200320032903d8073703e00320022007490d12024002400240024020022001470d00200141016a22062001490d09200141017422082006200820064b1b22064104200641044b1bad42287e220f422088a7454102742106200fa721080240024020010d00200341003602c0030c010b200341c8036a4104360200200320053602c0032003200141286c3602c4030b20034180036a20082006200341c0036a107d20034188036a28020021012003280280034101460d012003280284032105200141286e21010b2005200741286c6a220641286a2006200220076b41286c10ea081a200641206a200341e0036a41206a290300370200200641186a200341e0036a41186a290300370200200641106a200341e0036a41106a290300370200200641086a200341e0036a41086a290300370200200620032903e003370200200341206a200241016a2202ad42004280cdad9d01420010e80820032903202210428088caade9057c220f200e56200341206a41086a290300200f201054ad7c2210200d562010200d5122061b450d01200341e0036a200341a0046a200f200e7d2010200d7d200f200e54ad7d10c30220032d00e00322064106460d0220032f00e10320032d00e30341107472210220032902e403210d0c2c0b2001450d070c290b200e200f58200d20105820061b0d00200341106a200341a0046a200e200f7d200d20107d200e200f54ad7d10fb010b200341f8036a20103703002003200f3703f0032003200b3602ec03200320023602e803200320013602e403200320053602e00320032802b808210220032802b00821060240024020050d002006200210ff010c010b20062002200341e0036a10d6022005450d002001450d00200141286c450d002005102e0b20034198056a41003a00002003419c056a200341a3086a28000036000020034200370380052003420037038805200320032800a008360099050c2a0b200141246a2802002109200141216a2d0000210a200341c0046a41186a2205200141196a290000370300200341c0046a41106a2206200141116a290000370300200341c0046a41086a2207200141096a290000370300200320012900013703c004200341e0036a41286a200241286a280200360200200341e0036a41206a200241206a290200370300200341e0036a41186a200241186a290200370300200341e0036a41106a200241106a290200370300200341e0036a41086a200241086a290200370300200320022902003703e003200341a0026a200341e0036a10c102200341c0036a41086a2201200341a0026a41096a290000370300200341c0036a41106a2202200341a0026a41116a290000370300200341c0036a41186a2208200341a0026a41196a290000370300200320032900a1023703c003024020032d00a0024101470d0020034180056a41206a41023a000020034180056a41186a41003a00002003420037038805200342013703800520034180056a41086a21010c250b200341e0046a41186a2008290300370300200341e0046a41106a2002290300370300200341e0046a41086a2001290300370300200320032903c0033703e004200341a0036a200341e0046a10d302200341a0026a20032802a00320032802a80310d402200341b8076a41186a2005290300370300200341b8076a41106a2006290300370300200341b8076a41086a2007290300370300200320032903c0043703b807200341a0026a41186a2201290300210e200120032903f803370300200341003602e00320032903b0022110200320032903f0033703b00220032903a802210f200320032903e8033703a80220032903a002210d200320032903e0033703a002200da72201450d0f200341fc036a200341b8076a41186a290300370200200341f4036a200341c8076a290300370200200341ec036a200341b8076a41086a290300370200200320032903b8073702e4032003200a3a008404200320093602e003200341d8006a2001200fa72205200341e0036a10d502200d422088a721020240024020032802580d00200328025c220620054f0d102001200641286c6a2207200741286a20052006417f736a41286c10ea081a02402005417f6a22050d004200210f4200210d0c220b200341c8006a2005ad42004280cdad9d01420010e8082003290348220d428088caade9057c220f201056200341d0006a290300200f200d54ad7c220d200e56200d200e511b450d21200341a0046a200341e0046a200f20107d200d200e7d200f201054ad7d10c30220032d00a00422064106460d2220032d00a304210520032f00a104210720032902a404210d200341a0056a20063a000020034198056a41003a00002003200720054110747222053b00a105200341a3056a20054110763a00002003200d3702a405200342003703880520034201370380050c010b200341c0036a410210d102200341af046a200341c0036a41086a280200220536000020034180056a41186a41003a0000200341a8056a2005360000200320032903c0033700a704200341a1056a200341a0046a41086a29000037000020034200370388052003420137038005200320032900a004370099050b2002450d23200241286c450d232001102e0c230b20034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341c0036a41086a2201200341e9036a290000370300200341c0036a41106a2202200341f1036a290000370300200341c0036a41186a2205200341f9036a290000370300200320032900e1033703c003024020032d00e0034101470d00200320032800e0043602c004200320032900a0023703b8072003200341e3046a2800003600c3042003200341a7026a2800003600bf07200041186a41003a000020004200370308200020032802c0043600192000411c6a20032800c304360000200041206a41023a0000200020032903b807370021200041286a20032800bf0736000020004201370300200424000f0b200341d8076a41186a2005290300370300200341d8076a41106a2002290300370300200341d8076a41086a2001290300370300200320032903c0033703d807200341e0036a200341d8076a10d30220034180056a20032802e003220220032802e803220110d4020240024020032802800522050d004200210d41042105410021014200210e0c010b2002200110ff0120034198056a290300210e20034190056a290300210d20032802840521010b024020032802e403450d002002102e0b02402001450d00200141286c450d002005102e0b200341e0006a200341d8076a200d200e10fb01200320032800e0043602c0042003200341e3046a2800003600c304200041186a41003a000020004200370308200020032802c0043600192000411c6a20032800c30436000020004200370300200424000f0b41022105200141026a2f01002106200141046a2802002109200320012d00013a00b00820034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a2201200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341d8076a41086a2202200341e9036a290000370300200341d8076a41106a2207200341f1036a290000370300200341d8076a41186a2208200341f9036a290000370300200320032900e1033703d807024020032d00e0034101460d00200341a0026a41186a2008290300370300200341a0026a41106a2007290300370300200341a0026a41086a2002290300370300200320032903d8073703a002200341b8076a41186a22024200370300200341b8076a41106a22054200370300200341b8076a41086a22074200370300200342003703b80720034180056a41d9fcc60041061081022007200129000037030020032003290080053703b80720034180056a4180f4cb004106108102200220012900003703002005200329008005370300200341f8006a200341b8076a4120108e02200328027c210120032802782102200341f0006a41fcc6cb004110108e022003280274210520032802702107200320063b01940520032005410020071b36028c0520032001410020021b36028805200341a8f3c000360280052003200341b0086a360290052003200341a0026a36028405200341c0036a20034180056a10d702200341203602dc072003200341c0036a3602d80720034180056a200341d8076a1093010240024020032d0080054101470d00200341f8036a4200370300200341f0036a4200370300200341e8036a4200370300200342003703e0030c010b200341f8036a20034199056a290000370300200341f0036a20034191056a290000370300200341e8036a20034189056a29000037030020032003290081053703e0030b20034180056a200341e0036a10d3022003280280052202200328028805108f0221010240200328028405450d002002102e0b02402001450d0020034180056a410510d10220032003290081053703e004200320034188056a2800003600e70420032d00800521050c010b20034180056a200341a0026a4280d5f7caea05420010c302200320032900810537039004200320034180056a41086a28000036009704024020032d00800522054106470d00200341a0046a41086a200341a0026a41086a290300370300200341a0046a41106a2202200341a0026a41106a290300370300200341a0046a41186a2205200341a0026a41186a290300370300200320032903a0023703a00420032d00b00821074128102c2201450d2620012009360200200120032903a004370204200120073a0024200120032f01c0033b00252001410c6a200341a8046a290300370200200141146a20022903003702002001411c6a2005290300370200200141276a200341c2036a2d00003a0000200341b8076a200341e0036a10d30220032802c007210520032802b8072102413c102c2207450d262003423c3702dc07200320073602d80720014101200341d8076a10d802200342003703880520034280d5f7caea0537038005200341d8076a20034180056a411010742002200520032802d807220720032802e00710b201024020032802dc07450d002007102e0b024020032802bc07450d002002102e0b2001102e20032d00b00821012003418d056a200341e0036a41086a29030037000020034195056a200341e0036a41106a2903003700002003419d056a200341e0036a41186a290300370000200341a5056a20032903a002370000200341ad056a200341a0026a41086a290300370000200341b5056a200341a0026a41106a290300370000200341bd056a200341a0026a41186a290300370000200341c6056a20063b0100200341c5056a20013a0000200341013a008405200341133a008005200320032903e0033700850520034180056a10fe01200320032800a003360280032003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a20032800830336000020004200370300200424000f0b20032003280097043600e70420032003290390043703e0040b200320032800a00336028003200320032903e0043703c004200320032800e7043600c7042003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a200328008303360000200041206a20053a0000200020032903c004370021200041286a20032800c70436000020004201370300200424000f0b200141286a2802002106200141246a2802002107200141226a2f01002108200141216a2d00002105200341a0026a41186a200141196a290000370300200341a0026a41106a200141116a290000370300200341a0026a41086a200141096a290000370300200320012900013703a002200320053a00b00820034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341a0046a41086a2201200341e0036a41096a290000370300200341a0046a41106a2202200341e0036a41116a290000370300200341a0046a41186a2205200341e0036a41196a290000370300200320032900e1033703a0040240024020032d00e0034101460d00200341d8076a41186a2005290300370300200341d8076a41106a2002290300370300200341d8076a41086a2001290300370300200320032903a0043703d807200320083b0194052003200636028c052003200736028805200341a8f3c000360280052003200341b0086a360290052003200341a0026a36028405200341c0036a20034180056a10d702200341203602bc072003200341c0036a3602b80720034180056a200341b8076a1093010240024020032d0080054101470d00200341f8036a4200370300200341f0036a4200370300200341e8036a4200370300200342003703e0030c010b200341f8036a20034199056a290000370300200341f0036a20034191056a290000370300200341e8036a20034189056a29000037030020032003290081053703e0030b0240200341e0036a200341d8076a412010ec08450d0020034180056a410610d10220032003290081053703e004200320034188056a2800003600e70420032d00800521010c020b200341b8076a200341d8076a10d30220034180056a20032802b807220220032802c007220110d4020240024020032802800522050d004200210d41002101410421054200210e0c010b2002200110ff0120034198056a290300210e20034190056a290300210d20032802840521010b024020032802bc07450d002002102e0b02402001450d00200141286c450d002005102e0b20034180016a200341a0026a200d200e10fb01200320032800a003360280032003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a20032800830336000020004200370300200424000f0b410221010b200320032800a00336028003200320032903e0043703c004200320032800e7043600c7042003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a200328008303360000200041206a20013a0000200020032903c004370021200041286a20032800c70436000020004201370300200424000f0b20034180036a41186a200141196a29000037030020034180036a41106a200141116a29000037030020034180036a41086a200141096a2900003703002003200129000137038003200341a0036a41186a200141396a290000370300200341a0036a41106a200141316a290000370300200341a0036a41086a200141296a2900003703002003200141216a2900003703a00320034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a2201200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341d8076a41086a2202200341e0036a41096a290000370300200341d8076a41106a2205200341e0036a41116a290000370300200341d8076a41186a2206200341e0036a41196a290000370300200320032900e1033703d80720032d00e0034101460d09200341c0046a41186a2006290300370300200341c0046a41106a2005290300370300200341c0046a41086a2002290300370300200320032903d8073703c004200341e0036a20034180036a10d30220034180056a20032802e003220620032802e80310d4022001280200410020032802800522011b21022003280284052105024020032802e403450d002006102e0b2001410420011b21112005410020011b2112024002402002450d002011200241286c6a210c20034180056a410472210b20034180056a41256a2106200341d8076a41026a2105201121010340200341e0036a41206a2207200141206a280200360200200341e0036a41186a2208200141186a290200370300200341e0036a41106a2209200141106a290200370300200341e0036a41086a220a200141086a290200370300200320012902003703e003200141246a2d000021022005200141276a2d00003a00002003200141256a2f00003b01d80720024107460d01200620032f01d8073b000020034180056a41206a200728020036020020034180056a41186a200829030037030020034180056a41106a200929030037030020034180056a41086a200a290300370300200641026a20052d00003a0000200320032903e00337038005200320023a00a405200b200341c0046a412010ec08450d02200141286a2201200c470d000b0b20034180056a410310d10220032003290081053703e802200320034188056a2800003600ef0220032d00800521012012450d1b201241286c450d1b2011102e0c1b0b02402012450d00201241286c450d002011102e0b200341c0036a41086a220520034180036a41086a290300370300200341c0036a41106a220620034180036a41106a290300370300200341c0036a41186a220920034180036a41186a290300370300200341a0046a41086a220a200341a0036a41086a290300370300200341a0046a41106a220b200341a0036a41106a290300370300200341a0046a41186a220c200341a0036a41186a29030037030020032003290380033703c003200320032903a0033703a0044200210d200341b8076a41186a22014200370300200341b8076a41106a22074200370300200341b8076a41086a22084200370300200342003703b80720034180056a41d9fcc6004106108102200820034180056a41086a220229000037030020032003290080053703b80720034180056a4180f4cb004106108102200120022900003703002007200329008005370300200341b0016a200341b8076a4120108e0220032802b401211220032802b0012111200820052903003703002007200629030037030020012009290300370300200341e0046a41086a2209200a290300370300200341e0046a41106a220a200b290300370300200341e0046a41186a220b200c290300370300200320032903c0033703b807200320032903a0043703e00420034180086a200341c0046a10d90220034180056a20032802800820032802880810da022003418c056a280200210c0240024020032802800522060d004104210641002102410021054200210e0c010b20034180056a41186a290300210e20034180056a41106a290300210d2002280200210520032802840521020b200341d8076a41086a2008290300370300200341d8076a41106a2007290300370300200341d8076a41186a2001290300370300200341a0026a41086a2009290300370300200341a0026a41106a200a290300370300200341a0026a41186a200b290300370300200320032903b8073703d807200320032903e0043703a0022005411f4b0d0320034180056a41086a2207200341d8076a41086a29030037030020034180056a41106a2208200341d8076a41106a29030037030020034180056a41186a2209200341d8076a41186a290300370300200341e0036a41086a220a200341a0026a41086a290300370300200341e0036a41106a220b200341a0026a41106a290300370300200341e0036a41186a2213200341a0026a41186a290300370300200320032903d80737038005200320032903a0023703e00320052002470d02200241016a22012002490d00200241017422142001201420014b1b22014104200141044b1bad42c4007e220f422088a7454102742101200fa721140240024020020d00200341003602b0080c010b200341b8086a4104360200200320063602b0082003200241c4006c3602b4080b200341a0086a20142001200341b0086a107d200341a8086a280200210120032802a0084101470d0120010d220b1038000b20032802a4082106200141c4006e21020b2006200541c4006c6a22012012410020111b36020020012003290380053702042001410c6a2007290300370200200141146a20082903003702002001411c6a2009290300370200200120032903e0033702242001412c6a200a290300370200200141346a200b2903003702002001413c6a2013290300370200200341a0016a200541016a2205ad420042809adbba02420010e8080240024020032903a0012210428088caade9057c220f200d58200341a0016a41086a290300200f201054ad7c2210200e582010200e5122011b0d0020034180056a200341c0046a200f200d7d2010200e7d200f200d54ad7d10c30220032d00800522014106460d0120032d008305210520032f008105210720032003290284053702940820032007200541107472410874200172360290080c170b200d200f58200e20105820011b0d0020034190016a200341c0046a200d200f7d200e20107d200d200f54ad7d10fb010b41062101200341063a0090080c010b20034190086a410110d102200d210f200e211020032d00900822014106470d140b20034198056a20103703002003200f370390052003200c36028c05200320053602880520032002360284052003200636028005200328028808210520032802800821070240024020060d002007200510ff010c010b2007200520034180056a10db022006450d002002450d00200241c4006c450d002006102e0b20032003290091083703e003200320034198086a2800003600e7030c140b200341b8076a41186a200141196a290000370300200341b8076a41106a200141116a290000370300200341b8076a41086a200141096a290000370300200320012900013703b807200341a0026a41186a200141396a290000370300200341a0026a41106a200141316a290000370300200341a0026a41086a200141296a2900003703002003200141216a2900003703a00220034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341c0036a41086a2201200341e0036a41096a290000370300200341c0036a41106a2202200341e0036a41116a290000370300200341c0036a41186a2205200341e0036a41196a290000370300200320032900e1033703c00320032d00e0034101460d01200341d8076a41186a2005290300370300200341d8076a41106a2002290300370300200341d8076a41086a2001290300370300200320032903c0033703d807200341e0046a200341d8076a10d902200341e0036a20032802e00420032802e80410da02200341e0036a41186a2201290300210e200120032903980537030041002108200341003602800520032903f003211020032003290390053703f00320032903e803210f20032003290388053703e80320032903e003210d20032003290380053703e003200da72207450d02200d422088210d0240200fa72206450d00200741246a210a41002109410021084100210202400340024002402008450d002007200241c4006c6a21012007200220096a41c4006c6a210503400240200141046a200341b8076a412010ec080d00200141246a200341a0026a412010ec08450d030b2005200141c40010e90841c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141606a200341b8076a412010ec080d002001200341a0026a412010ec08450d020b200141c4006a2101200241016a22022006490d000b410021080c030b2009417f6a2109200841016a2108200241016a22022006490d000b0b024020080d00410021080c010b2007200220086b41c4006c6a2007200241c4006c6a200620026b41c4006c10ea081a0b200da7210202400240200620086b22012006490d0020034180056a410210d1020c010b200d200f422086842115024020010d004200210f4200210d0c0e0b200341c8016a2001ad2216420042809adbba02420010e80820032903c801220d428088caade9057c220f201058200341d0016a290300200f200d54ad7c220d200e58200d200e511b0d0d20034180056a200341d8076a200f20107d200d200e7d200f201054ad7d10c302024020032d00800522014106470d002016422086201542ffffffff0f8384210e0c0f0b20032d008305210520032f008105210620032003290284053702840520032006200541107472410874200172360280050b2002450d0b200241c4006c450d0b2007102e0c0b0b200341e0036a410510d10220032f00e10320032d00e3034110747221020c1c0b410221010c0f0b20034180056a410210d1020c080b410221010c100b200620051046000b200341a0046a410210d102200341ef036a200341a0046a41086a280200220136000020034198056a41003a0000200341a8056a2001360000200320032903a0043700e703200341a1056a200341e0036a41086a29000037000020034200370388052003420137038005200320032900e003370099050c130b20034180056a41206a41023a000020034180056a41186a41003a00002003420037038805200342013703800520034180056a41086a21010c1a0b200720021045000b410221010c1a0b200141c4006a2802002107200141c1006a2d00002105200341c0046a41186a200141196a290000370300200341c0046a41106a200141116a290000370300200341c0046a41086a200141096a290000370300200320012900013703c004200341e0046a41186a200141396a290000370300200341e0046a41106a200141316a290000370300200341e0046a41086a200141296a2900003703002003200141216a2900003703e00420034180056a41286a2201200241286a28020036020020034180056a41206a2206200241206a29020037030020034180056a41186a2208200241186a29020037030020034180056a41106a2209200241106a29020037030020034180056a41086a220a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c10202400240024020032d00e0034101470d00410221090c010b20034180056a200341e0046a200341c0046a200510d002200341e0036a41086a2008290300370300200341e0036a41106a2006290300370300200341e0036a41186a2001280200360200200320092903003703e00320032f00850520032d008705411074722108200a290300210d20032d00840521092003280280054101460d00200341a0046a41186a200341e0036a41186a2201280200360200200341a0046a41106a200341e0036a41106a290300370300200341a0046a41086a200341e0036a41086a290300370300200320032903e0033703a00420034100360288052003420137038005200720034180056a109002200341b8076a20032802800520032802880510b001200341a0026a41186a200341b8076a41186a2202290200370300200341a0026a41106a200341b8076a41106a2205290200370300200341a0026a41086a200341b8076a41086a2206290200370300200320032902b8073703a0020240200328028405450d00200328028005102e0b200242003703002005420037030020064200370300200342003703b80720034180056a41d9fcc6004106108102200620034180056a41086a220a29000037030020032003290080053703b80720034180056a4180f4cb0041061081022002200a290000370300200520032900800537030020034198026a200341b8076a4120108e02200328029c0221022003280298022105200341d8076a200341c0046a10d902200341e0036a20032802d80720032802e00710da022001290300210f200120032903980537030020032903f003211520032003290390053703f00320032903e803211020032003290388053703e803200341003602800520032903e003210e20032003290380053703e0030240024002400240024002400240200ea7220a450d00200e422088210e024002402010a722060d004100210c0c010b2002410020051b210b20084108742009722111410021134100210c410021020240034002400240200c450d00200a200241c4006c6a2101200a200220136a41c4006c6a210503400240200141046a200341e0046a412010ec080d00200141246a200341a0026a412010ec080d004100200b20012802006b22122012200b4b1b20114f0d030b2005200141c40010e90841c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141046a200341e0046a412010ec080d00200141246a200341a0026a412010ec080d004100200b20012802006b22052005200b4b1b20114f0d020b200141c4006a2101200241016a22022006490d000b4100210c0c030b2013417f6a2113200c41016a210c200241016a22022006490d000b0b0240200c0d004100210c0c010b200a2002200c6b41c4006c6a200a200241c4006c6a200620026b41c4006c10ea081a0b200ea72102024002402006200c6b22012006490d0020034180056a410210d1020c010b200e2010422086842116024020010d00420021104200210e0c040b20034188026a2001ad2217420042809adbba02420010e808200329038802220e428088caade9057c221020155820034190026a2903002010200e54ad7c220e200f58200e200f511b0d0320034180056a200341c0046a201020157d200e200f7d2010201554ad7d10c302024020032d00800522014106470d002017422086201642ffffffff0f8384210f0c050b20032d008305210520032f008105210620032003290284053702840520032006200541107472410874200172360280050b2002450d01200241c4006c450d01200a102e0c010b20034180056a410210d1020b20032d0080052202410646210120032802e003210a20024106460d02200a450d040c030b02402015201058200f200e58200f200e511b0d00200341f8016a200341c0046a201520107d200f200e7d2015201054ad7d10fb010b2001ad422086201642ffffffff0f8384210f20010d0002402002450d00200241c4006c450d00200a102e0b4100210a0b024020032802e0032201450d0020032802e4032202450d00200241c4006c450d002001102e0b200341f8036a200e370300200341f0036a20103703002003200f3702e4032003200a3602e003200341063a008005410121010b20032802e007210220032802d80721050240200a0d002005200210ff010c020b20052002200341e0036a10db020b20032802e4032202450d00200241c4006c450d00200a102e0b024020032802dc07450d0020032802d807102e0b02402001450d00200341ec036a20032903a004370200200341f4036a200341a0046a41086a290300370200200341e0036a411c6a200341a0046a41106a29030037020020034184046a200341a0046a41186a2802003602002003200d3702e403200320084108742009723602e003200341d8076a41186a200341e0046a41186a290300370300200341d8076a41106a200341e0046a41106a290300370300200341d8076a41086a200341e0046a41086a290300370300200320032903e0043703d80720034180056a200741b00210e9081a200341e0036a200341d8076a20034180056a10d2022007102e200320032800c003360280052003200341c3036a28000036008305200041186a41003a00004200210d2000420037030820002003280280053600192000411c6a2003280083053600000c020b20034180056a410710d10220032f00810520032d008305411074722108200329028405210d20032d00800521090b2007108b022007102e200320032800c003360280052003200341c3036a28000036008305200041236a20084110763a0000200020083b0021200041186a41003a00002000420037030820002003280280053600192000411c6a2003280083053600002000200d370024200041206a20093a00004201210d0b2000200d370300200424000f0b200341b8076a41186a200141196a290000370300200341b8076a41106a200141116a290000370300200341b8076a41086a200141096a290000370300200320012900013703b807200341a0026a41186a200141396a290000370300200341a0026a41106a200141316a290000370300200341a0026a41086a200141296a2900003703002003200141216a2900003703a00220034180056a41286a200241286a28020036020020034180056a41206a200241206a29020037030020034180056a41186a200241186a29020037030020034180056a41106a200241106a29020037030020034180056a41086a200241086a2902003703002003200229020037038005200341e0036a20034180056a10c102200341c0036a41086a2201200341e0036a41096a290000370300200341c0036a41106a2202200341e0036a41116a290000370300200341c0036a41186a2205200341e0036a41196a290000370300200320032900e1033703c00302400240024002400240024002400240024020032d00e0034101460d00200341d8076a41186a2005290300370300200341d8076a41106a2002290300370300200341d8076a41086a2001290300370300200320032903c0033703d807200341e0046a200341b8076a10d902200341e0036a20032802e00420032802e80410da02200341e0036a41186a2201290300210e200120032903980537030041002108200341003602800520032903f003211020032003290390053703f00320032903e803210f20032003290388053703e80320032903e003210d20032003290380053703e003200da72207450d01200d422088210d0240200fa72206450d00200741246a210a41002109410021084100210202400340024002402008450d002007200241c4006c6a21012007200220096a41c4006c6a210503400240200141046a200341d8076a412010ec080d00200141246a200341a0026a412010ec08450d030b2005200141c40010e90841c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141606a200341d8076a412010ec080d002001200341a0026a412010ec08450d020b200141c4006a2101200241016a22022006490d000b410021080c030b2009417f6a2109200841016a2108200241016a22022006490d000b0b024020080d00410021080c010b2007200220086b41c4006c6a2007200241c4006c6a200620026b41c4006c10ea081a0b200da7210202400240200620086b22012006490d0020034180056a410210d1020c010b200d200f422086842115024020010d004200210f4200210d0c050b200341e8016a2001ad2216420042809adbba02420010e80820032903e801220d428088caade9057c220f201058200341f0016a290300200f200d54ad7c220d200e58200d200e511b0d0420034180056a200341b8076a200f20107d200d200e7d200f201054ad7d10c302024020032d00800522014106470d002016422086201542ffffffff0f8384210e0c060b20032d008305210520032f008105210620032003290284053702840520032006200541107472410874200172360280050b2002450d02200241c4006c450d022007102e0c020b410221010c070b20034180056a410210d1020b20032d0080052201410646210220032802e003210720014106460d022007450d040c030b02402010200f58200e200d58200e200d511b0d00200341d8016a200341b8076a2010200f7d200e200d7d2010200f54ad7d10fb010b2001ad422086201542ffffffff0f8384210e20010d0002402002450d00200241c4006c450d002007102e0b410021070b024020032802e0032201450d0020032802e4032202450d00200241c4006c450d002001102e0b200341f8036a200d370300200341f0036a200f3703002003200e3702e403200320073602e00341062101200341063a008005410121020b20032802e804210520032802e0042106024020070d002006200510ff010c020b20062005200341e0036a10db020b20032802e4032205450d00200541c4006c450d002007102e0b024020032802e404450d0020032802e004102e0b200320032900810537039004200320034188056a2800003600970402402002450d00200320032800a003360280032003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a20032800830336000020004200370300200424000f0b20032003280097043600c70420032003290390043703c0040b200320032800a00336028003200320032903c0043703a004200320032800c7043600a7042003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a200328008303360000200041206a20013a0000200020032903a004370021200041286a20032800a70436000020004201370300200424000f0b20032d0080052201410646210220032802e003210720014106460d022007450d040c030b02402010200f58200e200d58200e200d511b0d00200341b8016a200341d8076a2010200f7d200e200d7d2010200f54ad7d10fb010b2001ad422086201542ffffffff0f8384210e20010d0002402002450d00200241c4006c450d002007102e0b410021070b024020032802e0032201450d0020032802e4032202450d00200241c4006c450d002001102e0b200341f8036a200d370300200341f0036a200f3703002003200e3702e403200320073602e00341062101200341063a008005410121020b20032802e804210520032802e0042106024020070d002006200510ff010c020b20062005200341e0036a10db020b20032802e4032205450d00200541c4006c450d002007102e0b024020032802e404450d0020032802e004102e0b200320032900810537039004200320034188056a2800003600970402402002450d00200320032800a003360280032003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a20032800830336000020004200370300200424000f0b20032003280097043600c70420032003290390043703c0040b200320032800a00336028003200320032903c0043703a004200320032800c7043600a7042003200341a3036a28000036008303200041186a41003a00002000420037030820002003280280033600192000411c6a200328008303360000200041206a20013a0000200020032903a004370021200041286a20032800a70436000020004201370300200424000f0b20032003290091083703e003200320034198086a2800003600e7032002450d00200241c4006c450d002006102e0b0240200328028408450d00200328028008102e0b200320032903e00337039004200320032800e70336009704024020014106470d00200341a5056a20032903c0043700002003418d056a20034180036a41086a29030037000020034195056a20034180036a41106a2903003700002003419d056a20034180036a41186a290300370000200341ad056a200341c0046a41086a290300370000200341b5056a200341c0046a41106a290300370000200341bd056a200341c0046a41186a290300370000200341023a008405200341133a008005200320032903800337008505200341dd056a200341a0036a41186a290300370000200341d5056a200341a0036a41106a290300370000200341cd056a200341a0036a41086a290300370000200341c5056a20032903a00337000020034180056a10fe01200320032800f9023602e0022003200341fc026a2800003600e302200041186a41003a000020004200370308200020032802e0023600192000411c6a20032800e30236000020004200370300200424000f0b20032003280097043600ef0220032003290390043703e8020b200320032800f9023602e002200320032903e8023703d002200320032800ef023600d7022003200341fc026a2800003600e302200041186a41003a000020004200370308200020032802e0023600192000411c6a20032800e302360000200041206a20013a0000200020032903d002370021200041286a20032800d70236000020004201370300200424000f0b02402010200f56200e200d56200e200d511b450d00200341386a200341e0046a2010200f7d200e200d7d2010200f54ad7d10fb010b2005450d010b024020032802a0022206450d0020032802a4022207450d00200741286c450d002006102e0b200341a0026a41186a200d370300200341b0026a200f37030020034180056a41186a41003a0000200320053602a802200320023602a402200320013602a002200342003703800520034200370388050c010b20034198056a41003a00002003420037038005200342003703880502402002450d00200241286c450d002001102e0b20032802a00221010b20032802a803210220032802a0032105024020010d002005200210ff010c010b20052002200341a0026a10d6020b024020032802a002450d0020032802a4022201450d00200141286c450d0020032802a002102e0b024020032802a403450d0020032802a003102e0b20034180056a41086a21012003290380054201520d010b200341d8076a41206a200141206a290300220d370300200341d8076a41186a200141186a290300220e370300200341d8076a41106a200141106a290300220f370300200341d8076a41086a200141086a29030022103703002003200129030022153703d807200041286a200d370300200041206a200e370300200041186a200f370300200041106a20103703002000201537030820004201370300200424000f0b200341d8076a41106a200141106a290300220d370300200341d8076a41086a200141086a290300220e37030020032001290300220f3703d807200041186a200d370300200041106a200e3703002000200f37030820004200370300200424000f0b1036000b20032902e403210d20032d00e00321060b20034198056a41003a0000200341a0056a20063a0000200320023b00a105200341a3056a20024110763a00002003419c056a200341a3086a28000036000020034200370388052003420137038005200320032800a008360099052003200d3702a4052001450d00200141286c450d002005102e0b024020032802b408450d0020032802b008102e0b20032903800542015121020b20034180056a41086a21012002450d010b200341a0026a41206a200141206a290300220d370300200341a0026a41186a200141186a290300220e370300200341a0026a41106a200141106a290300220f370300200341a0026a41086a200141086a29030022103703002003200129030022153703a002200041286a200d370300200041206a200e370300200041186a200f370300200041106a20103703002000201537030820004201370300200424000f0b200341a0026a41106a200141106a290300220d370300200341a0026a41086a200141086a290300220e37030020032001290300220f3703a002200041186a200d370300200041106a200e3703002000200f37030820004200370300200424000f0b2005108b022005102e200320032800c0043602a0042003200341c3046a2800003600a304200041186a41003a000020004200370308200020032802a0043600192000411c6a20032800a304360000200041246a200d370200200041206a200136020020004201370300200424000b8a0e020e7f037e230041e0016b2204240020044190016a200110d302200441b8016a200428029001220520042802980110d402200441c0016a280200410020042802b80122061b210120042802bc0121070240200428029401450d002005102e0b2006410420061b21080240024002402001450d002008200141286c6a2109200441b8016a410472210a200441b8016a41256a2105024002400240200341ff0171220b4107460d00200441e4006a41026a210c200821010340200441e8006a41206a220d200141206a280200360200200441e8006a41186a220e200141186a290200370300200441e8006a41106a220f200141106a290200370300200441e8006a41086a2210200141086a29020037030020042001290200370368200141246a2d00002111200c200141276a2d00003a00002004200141256a2f00003b016420114107460d04200441b8016a41206a200d280200360200200441b8016a41186a200e290300370300200441b8016a41106a200f290300370300200441b8016a41086a2010290300370300200520042f01643b0000200541026a200c2d00003a0000200420042903683703b801200420113a00dc010240200a2002412010ec080d002011200b460d030b200141286a22012009470d000c040b0b200441e4006a41026a2111200821010340200441e8006a41206a220c200141206a280200360200200441e8006a41186a220d200141186a290200370300200441e8006a41106a220e200141106a290200370300200441e8006a41086a220f200141086a29020037030020042001290200370368200141246a2d000021032011200141276a2d00003a00002004200141256a2f00003b016420034107460d03200441b8016a41206a200c280200360200200441b8016a41186a200d290300370300200441b8016a41106a200e290300370300200441b8016a41086a200f290300370300200520042f01643b0000200541026a20112d00003a0000200420042903683703b801200420033a00dc010240200a2002412010ec08450d0020044190016a41206a41002802d8f34036020020044190016a41186a41002902d0f34037030020044190016a41106a41002902c8f340370300200141286a22012009470d010c040b0b20044190016a41206a200441b8016a41206a28020036020020044190016a41186a200441b8016a41186a29030037030020044190016a41106a200441b8016a41106a29030037030020044190016a41086a200441b8016a41086a2903003703002004418c016a41026a200541026a2d00003a0000200420042903b80137039001200420052f00003b018c010c010b20044190016a41206a200441b8016a41206a28020036020020044190016a41186a200441b8016a41186a29030037030020044190016a41106a200441b8016a41106a29030037030020044190016a41086a200441b8016a41086a2903003703002004418c016a41026a200541026a2d00003a0000200420042903b80137039001200420052f00003b018c010b200441c0006a41206a220120044190016a41206a2205280200360200200441c0006a41186a221120044190016a41186a2202290300370300200441c0006a41106a220a20044190016a41106a220c290300370300200441c0006a41086a220920044190016a41086a220d2903003703002004413c6a41026a220e2004418c016a41026a2d00003a00002004200429039001370340200420042f018c013b013c200341ff01714107470d010b41012105410721030c010b200520012802002201360200200220112903002212370300200c200a2903002213370300200d20092903002214370300200441e8006a41026a200e2d00003a0000200441c2016a2014370100200441ca016a2013370100200441d2016a2012370100200441da016a200136010020042004290340221237039001200420042f013c3b0168200420123701ba01410021050b2007410020061b2101200441106a41086a200441b8016a41086a2211290100370300200441106a41106a200441b8016a41106a290100370300200441106a41186a200441b8016a41186a290100370300200441106a411e6a200441b8016a411e6a2901003701002004410c6a41026a2202200441e8006a41026a2d00003a0000200420042901b801370310200420042f01683b010c0240024020050d0020002004290112370104200020042f010c3b0029200041286a20033a0000200041246a200441326a2801003601002000411c6a2004412a6a290100370100200041146a200441226a2901003701002000410c6a2004411a6a2901003701002000412b6a20022d00003a000002402001450d00200141286c450d002008102e0b410021010c010b200441b8016a410310d1022000410c6a2011280200360200200020042903b80137020402402001450d00200141286c450d002008102e0b410121010b20002001360200200441e0016a24000ba80201047f230041c0006b22022400410b210341f6fac000210441072105024002400240024002400240024002400240200141ff01710e09000102030405060708000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41bc8ccc001044000b4107210341effac0002104410021050c060b41082103418be7c4002104410121050c050b4108210341e7fac0002104410221050c040b41dcfac0002104410321050c030b4109210341d3fac0002104410421050c020b410c210341c284ca002104410521050c010b41c8fac0002104410621050b200041833a3b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000bd20a02057f017e23004190066b22032400200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a29000037030020032001290000370300024002404110102c2204450d00200441f8f7c60036020c2004410136020820044281808080103702004110102c2201450d0020014190f8c60036020c20014101360208200142818080801037020020042004280200417f6a2205360200024020050d002004280208200428020c2802001103000240200428020c280204450d002004280208102e0b200441046a22052005280200417f6a220536020020050d002004102e0b200341d8006a41206a2204200041206a290200370300200341d8006a41186a2205200041186a290200370300200341d8006a41106a2206200041106a290200370300200341d8006a41086a2207200041086a29020037030020032000290200370358200128020041016a220041014d0d0120012000360200200341b0036a41206a2004290300370300200341b0036a41186a2005290300370300200341b0036a41106a2006290300370300200341b0036a41086a2007290300370300200320032903583703b003412c102c2200450d0020002001360200200020032903b0033702042000410c6a200341b8036a290300370200200041146a200341b0036a41106a2903003702002000411c6a200341c8036a290300370200200041246a200341d0036a2903003702004110102c2204450d00200441c0fec60036020c20042000360208200442818080801037020020012001280200417f6a2200360200024020000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22002000280200417f6a220036020020000d002001102e0b200341d8006a200241b00210e9081a20034188036a411e6a22012003411e6a29010037010020034188036a41186a2200200341186a29030037030020034188036a41106a2202200341106a29030037030020034188036a41086a2205200341086a2903003703002003200329030037038803024002402004280208200341d8006a200428020c28020c1101000d0041022100200341c8006a41023a0000200341286a41186a41003a000020042004280200417f6a2201360200420021082003420037033020034201370328024020010d002004280208200428020c2802001103000240200428020c280204450d002004280208102e0b200441046a22012001280200417f6a220136020020010d002004102e0b200341d8006a10dc02410121010c010b200341b0036a200341d8006a41b00210e9081a200341ea056a2005290300370100200341f2056a2002290300370100200341fa056a2000290300370100200341e0056a41206a200129010037010020034180023b01e00520032003290388033701e2052003200436028806200341286a200341b0036a200341e0056a10dd0220032903284201512101200341286a41206a2d00002100200329033021080b2003200341d0006a2800003600b703200320032900493703b0030240024020010d00410621010c010b200320032800b70336005f200320032903b0033703584106210120084202510d002003200328005f3600b703200320032903583703b003200021010b200320032903b0033703e005200320032800b7033600e705200341b8036a20013a0000200341b9036a20032903e005370000200341c0036a20032800e705360000200341003a00b403200341133a00b003200320032f0088033b00b50320032003418a036a2d00003a00b703200341c4036a200341d8006a41d40010e9081a200341b0036a10fe0120034190066a24000f0b1036000b00000bb10201037f230041e0006b22022400200241086a4190fec6004105108102200241186a41a8dbc8004107108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000ba30b04047f017e0c7f037e230041d0016b220324002003200236021420032001360210200341186a2001200210ed0202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10ab0102400240024020032802080d00024002400240200328020c2206200328022c41286e2201200120064b1bad42287e2207422088a70d002007a72201417f4c0d0002400240024020010d00410421080c010b2001102c2208450d010b200141286e2102024020060d00410021060c030b200341a8016a41017221094100210a4100210b0340200341a8016a200341286a1093010240024020032d00a8014101460d0020034188016a41186a220c200941186a29000037030020034188016a41106a220d200941106a29000037030020034188016a41086a220e200941086a2900003703002003200929000037038801200328022c2201450d002003280228220f2d0000211020032001417f6a221136022c2003200f41016a3602284100211202400240024002400240024020100e0705040001060203060b410221120c040b410321120c030b410521120c020b410621120c010b410121120b20114104490d00200341a8016a41086a200e290300370300200341a8016a41106a200d290300370300200341a8016a41186a200c29030037030020034182016a41026a20034185016a41026a2d00003a000020032003290388013703a801200f280001211320032001417b6a36022c2003200f41056a360228200320032f0085013b0182010c010b410721120b200341e0006a41186a2201200341a8016a41186a290300370300200341e0006a41106a220f200341a8016a41106a290300370300200341e0006a41086a220c200341a8016a41086a290300370300200341dc006a41026a220d20034182016a41026a2d00003a0000200320032903a801370360200320032f0182013b015c024020124107460d00200341386a41186a220e2001290300370300200341386a41106a2210200f290300370300200341386a41086a220f200c290300370300200341346a41026a220c200d2d00003a000020032003290360370338200320032f015c3b01340240200b2002470d00200241016a22012002490d042002410174220d2001200d20014b1b22014104200141044b1bad42287e2207422088a74541027421012007a7210d0240024020020d00200341003602a8010c010b200341043602b001200320083602a8012003200241286c3602ac010b20034188016a200d2001200341a8016a107d200328029001210102402003280288014101470d0020010d040c050b200328028c012108200141286e21020b2008200a6a22012013360200200e290300210720102903002114200f290300211520032903382116200141246a20123a0000200141046a20163702002001410c6a2015370200200141146a20143702002001411c6a2007370200200141256a20032f01343b0000200141276a200c2d00003a0000200a41286a210a2006200b41016a220b460d040c010b0b2002450d04200241286c450d040c030b1036000b1038000b2008450d01200328022c2201410f4b0d022002450d01200241286c450d010b2008102e0b200341003602900120034201370388012003410a3602642003200341106a360260200320034188016a360238200341bc016a4101360200200342013702ac01200341909dc5003602a8012003200341e0006a3602b801200341386a419cebc000200341a8016a103d1a20032802880120032802900110ef020240200328028c01450d00200328028801102e0b200041003602000c010b2000200236020420002008360200200041106a20032802282202290000370300200041086a2006360200200041186a200241086a2900003703002003200141706a36022c2003200241106a3602280b2005450d002004102e0b200341d0016a24000bd70201097f410121044100210502400240024020020e020201000b200341046a21062003280200210720032d002441ff017121084100210503400240024020012002410176220920056a220a41286c6a220b41046a2006412010ec08220c450d00417f4101200c4100481b210c0c010b4100417f200b2d0024220c200847200c2008491b200c2008461b220c0d00417f200b280200220c200747200c2007491b210c0b2005200a200c4101461b2105200220096b220241014b0d000b0b024002402001200541286c6a220c41046a200341046a412010ec082202450d00417f410120024100481b21020c010b02404100417f200c2d0024220220032d002422094720022009491b20022009461b22020d0041ff012102200c280200220c20032802002209490d01200c20094721020b20020d00410021040c010b2005200241ff017141ff01466a21050b20002005360204200020043602000baa0102037f017e230041206b2203240002400240200228020841286c41146a2204417f4c0d002004102c2205450d0120034100360208200320043602042003200536020020022802002002280208200310d802200229031021062003200241186a290300370318200320063703102003200341106a411010742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000f0b1038000b1036000bc40201027f230041106b220224000240411a102c2203450d002002421a37020420022003360200200220012802004110107420022001280204412010742002200128020836020c20022002410c6a410410742002200128020c36020c20022002410c6a41041074024002400240024002400240024020012802102d00000e0700010203060405060b200241003a000c20022002410c6a410110740c050b200241013a000c20022002410c6a410110740c040b200241023a000c20022002410c6a410110740c030b200241033a000c20022002410c6a410110740c020b200241053a000c20022002410c6a410110740c010b200241063a000c20022002410c6a410110740b200220012f01143b010c20022002410c6a41021074200020022802002201200228020810b00102402002280204450d002001102e0b200241106a24000f0b1036000bf90101017f230041106b2203240020012002107602402001450d00200141286c210103402002200041046a412010740240024002400240024002400240200041246a2d00000e0700010203060405060b200341003a000b20022003410b6a410110740c050b200341013a000c20022003410c6a410110740c040b200341023a000d20022003410d6a410110740c030b200341033a000e20022003410e6a410110740c020b200341053a000f20022003410f6a410110740c010b200341063a00032002200341036a410110740b200320002802003602042002200341046a41041074200041286a2100200141586a22010d000b0b200341106a24000bb10201037f230041e0006b22022400200241086a4190fec6004105108102200241186a41afdbc800410d108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bb10d03047f017e0d7f23004190036b220324002003200236020c20032001360208200341106a2001200210ed020240024002400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ab0102400240024020032802000d0020032802042206200328022441c4006e2201200120064b1bad42c4007e2207422088a70d052007a72201417f4c0d050240024020010d00410421080c010b2001102c2208450d050b200141c4006e210902400240024020060d00410021060c010b200341a8026a410172210a4100210b0340200341a8026a200341206a10930102400240024020032d00a8024101460d00200b41016a210c200341e8016a41186a220d200a41186a290000370300200341e8016a41106a220e200a41106a290000370300200341e8016a41086a220f200a41086a2900003703002003200a2900003703e80141002101200341003a00c802417f2102200328022421100240034020102001460d01200341a8026a20016a200328022022112d00003a00002003201020026a3602242003201141016a3602202003200141016a22123a00c8022002417f6a21022012210120124120470d000b200341f0026a41186a2201200341a8026a41186a290300370300200341f0026a41106a2202200341a8026a41106a290300370300200341f0026a41086a2213200341a8026a41086a290300370300200320032903a8023703f002201241ff01714120490d0120034188026a41086a2214201329030037030020034188026a41106a2213200229030037030020034188026a41186a22022001290300370300200320032903f00237038802201020126b22014104490d01200341c8016a41086a2212200f290300370300200341c8016a41106a2210200e290300370300200341c8016a41186a220e200d290300370300200341a8016a41086a220d2014290300370300200341a8016a41106a220f2013290300370300200341a8016a41186a22132002290300370300200320032903e8013703c80120032003290388023703a801201128000121022003201141056a36022020032001417c6a36022420034188016a41086a2201201229030037030020034188016a41106a2212201029030037030020034188016a41186a2210200e290300370300200341e8006a41086a2211200d290300370300200341e8006a41106a220d200f290300370300200341e8006a41186a220e2013290300370300200320032903c80137038801200320032903a801370368200341c8006a41186a220f2010290300370300200341c8006a41106a22102012290300370300200341c8006a41086a22122001290300370300200341286a41186a2213200e290300370300200341286a41106a220e200d290300370300200341286a41086a220d2011290300370300200320032903880137034820032003290368370328200b2009470d03200941016a220120094f0d020c0c0b200141ff0171450d00200341003a00c8020b2009450d05200941c4006c0d040c050b200941017422112001201120014b1b22014104200141044b1bad42c4007e2207422088a74541027421012007a721110240024020090d00200341003602a8020c010b200341043602b002200320083602a8022003200941c4006c3602ac020b200341f0026a20112001200341a8026a107d20032802f8022101024020032802f0024101470d002001450d0a0c090b20032802f4022108200141c4006e21090b2008200b41c4006c6a22012002360200200120032903483702042001410c6a2012290300370200200141146a20102903003702002001411c6a200f290300370200200120032903283702242001412c6a200d290300370200200141346a200e2903003702002001413c6a2013290300370200200c210b200c2006470d000b0b2008450d0120032802242201410f4b0d022009450d01200941c4006c450d010b2008102e0b200341003602f802200342013703f0022003410a3602d4022003200341086a3602d0022003200341f0026a36028802200341bc026a4101360200200342013702ac02200341909dc5003602a8022003200341d0026a3602b80220034188026a419cebc000200341a8026a103d1a20032802f00220032802f80210ef02024020032802f402450d0020032802f002102e0b200041003602000c010b2000200936020420002008360200200041106a20032802202202290000370300200041086a2006360200200041186a200241086a2900003703002003200141706a3602242003200241106a3602200b2005450d002004102e0b20034190036a24000f0b1036000b1038000bc10102047f017e230041206b22032400024002402002280208220441c4006c41146a2205417f4c0d000240024020050d00410121060c010b2005102c2206450d02200228020821040b200341003602082003200536020420032006360200200228020020042003109505200229031021072003200241186a290300370318200320073703102003200341106a411010742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000f0b1038000b1036000b802401047f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1b00010218180304051806070818090a0b0c0d0e0f10111213141516170b0240024002400240024002400240200041086a2802000e0a1e1e001e01021e030405060b200041106a280200450d1d2000410c6a280200102e0f0b200041106a280200450d1c2000410c6a280200102e0f0b200041106a280200450d1b2000410c6a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b200041106a2802002202450d1a200241186c450d1a200028020c102e0f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d192002410c6c450d19200028020c102e0f0b200041106a280200450d182000410c6a280200102e0f0b200041106a280200450d172000410c6a280200102e0f0b0240024002400240024020002d00040e061b001b010203040b200041186a220228020010dc022002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a220228020010dc022002280200102e0f0b2000410c6a280200450d18200041086a280200102e0f0b200041186a220228020010dc022002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a220228020010dc022002280200102e0f0b02400240200041086a280200417f6a0e020001170b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d162002410c6c450d162000280210102e0f0b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d152000280210102e0f0b0240024002400240200041086a2802000e0418000102030b2000410c6a2d00004102470d17200041146a280200450d17200041106a280200102e0f0b2000410c6a2d00004102470d16200041146a280200450d16200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d15200041386a280200450d15200041346a280200102e0f0b2000410c6a2d00004102470d14200041146a280200450d14200041106a280200102e0f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d002004280204102e0b20022003470d000b0b200041086a2802002202450d13200241f0006c450d132000280204102e0f0b024002400240024002400240200041086a2d00000e171800181818180118180218181818180318180418181818050b2000412c6a2d00004102470d17200041346a280200450d17200041306a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d16200241246c450d16200028020c102e0f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a280200102e0f0b200041106a28020041ffffff3f71450d142000410c6a280200102e0f0b200041146a28020041ffffffff0371450d13200041106a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d12200241246c450d12200028020c102e0f0b20002802042202450d11200041086a280200450d112002102e0f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d112000280210102e0f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d102000280210102e0f0b02402000410c6a280200450d00200041086a280200102e0b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f2000280214102e0f0b0240024002400240200041086a2d000041716a0e0400010203120b200041106a280200450d112000410c6a280200102e0f0b200041106a280200450d102000410c6a280200102e0f0b200041106a280200450d0f2000410c6a280200102e0f0b200041106a280200450d0e2000410c6a280200102e0f0b024002400240200041086a2d0000417f6a0e03000102100b200041306a28020041ffffff3f71450d0f2000412c6a280200102e0f0b2000410c6a220228020010dc022002280200102e0f0b200041106a220228020010dc022002280200102e0f0b024002400240200041086a2d0000417f6a0e030001020f0b200041306a28020041ffffff3f71450d0e2000412c6a280200102e0f0b2000410c6a220228020010dc022002280200102e0f0b200041106a220228020010dc022002280200102e0f0b02400240200041086a2d0000417f6a0e05000d0d0d010d0b200041106a28020041ffffff3f71450d0c2000410c6a280200102e0f0b2000410c6a2d00004102470d0b200041146a280200450d0b200041106a280200102e0f0b20002d00044104470d0a2000410c6a28020041ffffff3f71450d0a200041086a280200102e0f0b200041086a2802004101470d092000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b02400240200041086a2d0000417d6a0e0200010a0b200041f0006a280200450d09200041ec006a280200102e0f0b200041106a280200450d082000410c6a280200102e0f0b024002400240200041086a2802000e040a0a0001020b2000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d07200041386a280200450d07200041346a280200102e0f0b02400240024020002f01040e03090001020b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d08200241b0026c450d082000280208102e0f0b200041086a220228020010dc022002280200102e0f0b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d06200241b0026c450d062000280208102e0f0b0240024002400240024002400240200041086a2d0000417e6a0e0d00010c0c0c0c0c0c02030405060c0b0240200041146a2802002201450d002000410c6a2802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a280200102e0b0240200241246a2d00004101470d002002412c6a280200450d00200241286a280200102e0b200241c8006a22022001470d000b0b0240200041106a2802002202450d00200241c8006c450d00200028020c102e0b0240200041186a2d00004101470d00200041206a280200450d002000411c6a280200102e0b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a280200102e0b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a280200102e0b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a280200102e0b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a280200102e0b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a280200102e0b200041f0016a2d00004101470d0b200041f8016a280200450d0b200041f4016a280200102e0f0b0240200041146a2802002202450d00200241c4006c21012000410c6a28020041286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102e0b200241c4006a2102200141bc7f6a22010d000b0b200041106a2802002202450d0a200241c4006c450d0a200028020c102e0f0b200041106a2d00004102470d09200041186a280200450d09200041146a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d07200041386a280200450d07200041346a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d06200041386a280200450d06200041346a280200102e0f0b2000410c6a2d00004102470d05200041146a280200450d05200041106a280200102e0f0b20002d00042202417e6a4108490d040240024020020e020600010b200041286a220228020010dc022002280200102e0f0b200041c8006a220228020010dc022002280200102e0f0b0240024002400240200041086a2d00000e0407000102030b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041186a220228020010dc022002280200102e0f0b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041286a280200450d05200041246a280200102e0f0b200041306a28020041ffffff3f71450d042000412c6a280200102e0f0b200041306a28020041ffffff3f71450d032000412c6a280200102e0f0b0240024002400240200041086a2802000e09060006010606020606030b200041106a280200450d052000410c6a280200102e0f0b200041106a2d00004102470d04200041186a280200450d04200041146a280200102e0f0b200041106a2d00004102470d03200041186a280200450d03200041146a280200102e0f0b200041146a280200450d02200041106a280200102e0f0b02400240200041086a2d0000417f6a0e03000301030b200041306a280200450d022000412c6a280200102e0c020b200041306a280200450d012000412c6a280200102e0f0b200041386a109b060f0b0be5890505077f077e147f0b7e037f230041f0176b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0203040506070809010a0b0c010d0e0f10363534333231302f2e2d00020b20014184026a280200210420014180026a280200210520022d0001210620022d000021072002280228210220034190136a200141086a41f80110e9081a20022002280200417f6a2201360200024002400240024020070d00024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200641ff01714102470d01200341e9003602d408200341fee7c7003602d008200341e0106a20034190136a10b80620032d00e0104106470d2f200341c0066a22014200370300200341a8066a41106a22024200370300200341a8066a41086a22074200370300200342003703a806200341e8056a41a5fec600411a1081022007200341e8056a41086a290300370300200320032903e8053703a806200341a8046a41ccc5c80041101081022001200341a8046a41086a290300370300200220032903a804370300200341203602b40a2003200341a8066a3602b00a200341b00e6a200341a8066a412010ed0220032802b00e22070d02410021060c030b20010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341c0136a109b06200320032800f0063602e8062003200341f3066a2800003600eb06200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200041206a41023a0000200042013703000c640b20032802b40e21082003200341b00e6a41086a2802003602840c200320073602800c200341a0046a200341800c6a10ab0102400240024020032802a0040d0020032802a404210120034198046a200341800c6a10ab01200328029804450d010b41002106200341003602e810200342013703e0102003410a3602ac042003200341b00a6a3602a8042003200341e0106a3602e805200341d4156a4101360200200342013702c415200341909dc5003602c0152003200341a8046a3602d015200341e8056a419cebc000200341c0156a103d1a20032802e01020032802e81010ef02024020032802e410450d0020032802e010102e0b0c010b200328029c042109410121060b2008450d002007102e0b2006450d2a20012005470d2920092004470d28200341c0156a20034190136a41f80110e9081a200341e0106a200341c0156a10b90620032802e0104101460d12200341b00e6a41386a2201200341a0116a290300370300200341b00e6a41306a200341e0106a41386a290300220a370300200341b00e6a41286a200341e0106a41306a290300220b370300200341b00e6a41206a200341e0106a41286a290300220c370300200341b00e6a41186a200341e0106a41206a290300220d370300200341b00e6a41106a200341e0106a41186a290300220e370300200341b00e6a41086a200341e0106a41106a290300220f3703002003200341e0106a41086a29030022103703b00e200341c0156a41306a2207200a370300200341c0156a41286a200b370300200341c0156a41206a200c370300200341c0156a41186a200d370300200341c0156a41106a200e370300200341c0156a41086a200f370300200341c0156a41386a2001290300370300200320103703c015200341a8066a41186a4200370300200341a8066a41106a4200370300200341a8066a41086a22014200370300200342003703a806200341e8056a41a5fec600411a1081022001200341e8056a41086a290300370300200320032903e8053703a806200341a8046a4184c4c800410e108102200241086a200341a8046a41086a290300370300200220032903a804370300200341003602e810200342013703e0102007200341e0106a10b901200341e0106a200341c0156a41301074024002400240024020032d00fc150e03000102030b200341003a00a804200341e0106a200341a8046a410110740c020b200341013a00a804200341e0106a200341a8046a410110740c010b200341023a00a804200341e0106a200341a8046a410110740b200341a8066a412020032802e010220220032802e81010b201024020032802e410450d002002102e0b20032802f01521060240200341f8156a2802002202450d0020024106742101200641346a21020340024020022802002207450d00200741306c450d002002417c6a280200102e0b200241c0006a2102200141406a22010d000b0b0240200341f4156a28020041ffffff1f71450d002006102e0b20034180043b01c415200341173a00c015200341c0156a10fe01200320032800f0063602e8062003200341f3066a2800003600eb06200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c620b000b2001410c6a2802002108200141106a290300210a200141086a280200210120034190136a41286a2207200241286a28020036020020034190136a41206a2206200241206a29020037030020034190136a41186a2204200241186a29020037030020034190136a41106a2205200241106a29020037030020034190136a41086a2209200241086a2902003703002003200229020037039013200aa72111200a422088a7211202400240024002400240024002400240024002402001417f6a0e0a00010203040506070809000b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a705450d00200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c6a0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c690b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102024020032d00e0104101470d0002402011450d002008102e0b200320032800b00e3602800c2003200341b30e6a2800003600830c200041186a41003a000020004200370308200020032802800c3600192000411c6a20032800830c360000200041206a41023a0000200042013703000c690b02402011450d002008102e0b200320032800b00e3602800c2003200341b30e6a2800003600830c200041186a41003a000020004200370308200020032802800c3600192000411c6a20032800830c360000200042003703000c680b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a705450d00200320032800b00e3602800c2003200341b30e6a2800003600830c200041186a41003a000020004200370308200020032802800c3600192000411c6a20032800830c360000200041206a41023a0000200042013703000c680b4108102c2202450d64200342083702c415200320023602c0152003200a3703e010200341c0156a200341e0106a4108107441dcc1cb00410a20032802c015220220032802c81510b201024020032802c415450d002002102e0b200320032800b00e3602800c2003200341b30e6a2800003600830c200041186a41003a000020004200370308200020032802800c3600192000411c6a20032800830c360000200042003703000c670b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a705450d00410221060c660b200341b00e6a2008201210ba0620032802b00e2202450d6420032802b40e21012003200341b80e6a2802003602840c200320023602800c200341106a200341800c6a10ab010240024020032802100d0020032802840c220720032802142206490d002006417f4c0d510240024020060d00410121040c010b200610322204450d6620032802840c21070b024020072006490d00200420032802800c200610e908210920032802840c22072006490d182003200720066b3602840c200320032802800c20066a3602800c200341086a200341800c6a10ab01024020032802080d0020032802840c2207200328020c2205490d002005417f4c0d530240024020050d00410121130c010b200510322213450d6820032802840c21070b024020072005490d00201320032802800c200510e908211420032802840c22072005490d192003200720056b22073602840c200320032802800c20056a22153602800c024020074104490d002003201541046a3602800c20032007417c6a22163602840c20164104490d00201528000421172003201541086a3602800c2003200741786a22163602840c20164104490d002003200741746a3602840c20032015410c6a3602800c2003200341800c6a10ab0120032802000d002003280204221520032802840c410c6e2207200720154b1bad420c7e220a422088a70d55200aa72207417f4c0d550240024020070d00410421160c010b2007102c2216450d6a0b2007410c6ead210a02400240024002402015450d000340200341c0156a200341800c6a10a50120032d00c0154101460d0320032802840c22074104490d0320032900c115210b20032802800c2218280000211920032007417c6a3602840c2003201841046a3602800c0240200a422088a72207200aa7470d00200741016a22182007490d5b2007410174221a20182018201a491b22184104201841044b1bad420c7e220c422088a7454102742118200ca7211a0240024020070d00200341003602c0150c010b200341043602c815200320163602c01520032007410c6c3602c4150b200341e0106a201a2018200341c0156a107d20032802e810211820032802e0104101460d0320032802e4102116200a428080808070832018410c6ead84210a0b20162007410c6c6a220720193602082007200b370200200a4280808080107c210a2015417f6a22150d000b0b2016450d03200aa7211520032802840c41034b0d082015450d032015410c6c0d020c030b2018450d570c6b0b200aa72207450d012007410c6c450d010b2016102e0b2005450d010b2013102e0b2006450d010b2004102e0b2001450d652002102e0c650b02402001450d002002102e0b02400240024020064108470d000240200929000042f0deb1db968cd9b7f400510d00410021074180c2cb002101410f21020c020b02402017411f4f0d004101210741e6c1cb002101411a21020c020b2009102e02402005450d002014102e0b02402015450d002015410c6c450d002016102e0b41acc2cb0041052008201210b201200341c8156a41023a0000200341003a00c015200341c0156a10fe0102402011450d002008102e0b200320032800b00a3602d0082003200341b30a6a2800003600d308200041186a41003a000020004200370308200020032802d0083600192000411c6a20032800d308360000200042003703000c690b410021074180c2cb002101410f21022006450d010b2009102e0b02402005450d002014102e0b410321062015450d652015410c6c450d652016102e0c650b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a705450d0002402011450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c660b41acc2cb0041052008201210b201200341c8156a41023a0000200341003a00c015200341c0156a10fe0102402011450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c650b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341c0156a10a7050d290240024020084101460d0041b1c2cb00410d10ff010c010b200341003602c815200342013703c015200320113602800c200341c0156a200341800c6a41041074200320123602800c200341c0156a200341800c6a4104107441b1c2cb00410d20032802c015220220032802c81510b20120032802c415450d002002102e0b200341cc156a2012360200200341c8156a2011360200200320083602c415200341043a00c015200341c0156a10a504200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c640b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a7050d0002402012450d002008201241186c6a21012008210203402002280200200241086a2802002002410c6a280200200241146a28020010b201200241186a22022001470d000b2012450d00201241186c21012008210203400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b02402011450d00201141186c450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c640b02402012450d00201241186c21012008210203400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b02402011450d00201141186c450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c630b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a7050d0002402012450d0020082012410c6c6a21012008210203402002280200200241086a28020010ff012002410c6a22022001470d000b2012450d002012410c6c21012008210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402011450d002011410c6c450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c630b02402012450d002012410c6c21012008210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402011450d002011410c6c450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c620b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c0150240200341c0156a10a705450d0002402011450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c620b2008201210890302402011450d002008102e0b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200042003703000c610b200341c0156a41286a2007280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102200341c8066a41086a200341e0106a41096a290000370300200341c8066a41106a200341e0106a41116a290000370300200341c8066a41186a200341e0106a41196a290000370300200320032900e1103703c806024020032d00e0104101470d0002402011450d002008102e0b200320032800ab043600f30b200320032802a8043602f00b200041186a41003a000020004200370308200020032802f00b3600192000411c6a20032800f30b360000200041206a41023a0000200042013703000c610b200341900a6a41186a2202200341c8066a41186a290300370300200341900a6a41106a2201200341c8066a41106a290300370300200341900a6a41086a2207200341c8066a41086a290300370300200320032903c8063703900a200341a8066a2008201210b001200341e0106a41186a2206200341a8066a41186a290300370300200341e0106a41106a2204200341a8066a41106a290300370300200341e0106a41086a2205200341a8066a41086a290300370300200320032903a8063703e010200341c0156a41086a41053a0000200341c0156a41096a20032903900a370000200341c0156a41116a2007290300370000200341c0156a41196a2001290300370000200341e1156a2002290300370000200341e9156a20032903e010370000200341f1156a2005290300370000200341f9156a200429030037000020034181166a2006290300370000200341003a00c015200341c0156a10fe0102402011450d002008102e0b200320032800ab043600f30b200320032802a8043602f00b200041186a41003a000020004200370308200020032802f00b3600192000411c6a20032800f30b360000200042003703000c600b20034190136a41206a200141246a28020036020020034190136a41186a2001411c6a29020037030020034190136a41106a200141146a29020037030020034190136a41086a2001410c6a2902003703002003200129020437039013200341c0156a41286a200241286a280200360200200341c0156a41206a200241206a290200370300200341c0156a41186a200241186a290200370300200341c0156a41106a200241106a290200370300200341c0156a41086a200241086a290200370300200320022902003703c015200020034190136a200341c0156a10d5040c5f0b200141346a2802002115200141306a28020021122001412c6a2802002118200141286a2802002117200141206a290200210a2001411c6a280200211a200141186a2802002106200141146a2802002107200141106a28020021162001410c6a280200211b200141086a2802002104200341800c6a200141386a41e40010e9081a200141a4016a2802002114200141a0016a28020021132001419c016a2802002119200341e0106a200141a8016a41800110e9081a200341d0086a41286a2201200241286a280200360200200341d0086a41206a2205200241206a290200370300200341d0086a41186a2209200241186a290200370300200341d0086a41106a2208200241106a290200370300200341d0086a41086a2211200241086a290200370300200320022902003703d008024002400240024020040e0400010203000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac04200341a4a7c7003602a8042003200341a8046a3602d015200341c0156a4190afc4001044000b200341b00e6a200341800c6a41e40010e9081a20034190136a200341e0106a41800110e9081a200341c0156a41286a2001280200360200200341c0156a41206a2005290300370300200341c0156a41186a2009290300370300200341c0156a41106a2008290300370300200341c0156a41086a2011290300370300200320032903d0083703c015200341f0066a200341c0156a10c102200341a8066a41086a200341f9066a2202290000370300200341a8066a41106a20034181076a2201290000370300200341a8066a41186a20034189076a2204290000370300200320032900f1063703a80602400240024020032d00f0064101470d00200341d00a6a41023a0000200341c80a6a41003a0000200342003703b80a200342013703b00a02402006450d002006410c6c21012016210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402007450d002007410c6c450d002016102e0b02402015450d00201541246c21012018210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b02402012450d00201241246c450d002018102e0b02402014450d00201441246c21012019210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b02402013450d00201341246c450d002019102e0b200341b80a6a210241002106410221040c010b200341c8066a41186a200341a8066a41186a290300220b370300200341c8066a41106a200341a8066a41106a290300220c370300200341c8066a41086a200341a8066a41086a290300220d370300200320032903a806220e3703c8062004200b3700002001200c3700002002200d3700002003200e3700f106200341013a00f006200341d4156a2015360200200341c0156a41106a2012360200200341c0156a410c6a2018360200200320173602c8152003200a3703c015200341c0156a41186a200341b00e6a41e40010e9081a200341c4166a2014360200200341c0156a4180016a2013360200200341bc166a2019360200200341c8166a20034190136a41800110e9081a200341a8046a410c6a2006360200200341a8046a41086a20073602002003201a3602b804200320163602ac042003201b3602a804200341b00a6a200341f0066a200341c0156a200341a8046a10990420032903b00a4201520d01200341b00a6a41086a2102200341d00a6a2d0000210420032d00c80a21060b200320022800113602b0082003200241146a2800003600b30820022f0019210120022d001b2107200229001c210a2002280224210220032903b80a210b20032903c00a210c200041186a20063a0000200041106a200c3703002000200b370308200020032802b0083600192000411c6a20032800b3083600002000412c6a20023602002000200a370024200020073a0023200020013b0021200041206a20043a0000200042013703000c610b200320032800c90a3602b0082003200341b00a6a411c6a2800003600b30820032903b80a210a20032903c00a210b200041186a20032d00c80a3a0000200041106a200b3703002000200a370308200020032802b0083600192000411c6a20032800b308360000200042003703000c600b200341b00e6a200341800c6a41e40010e9081a20034190136a200341e0106a41800110e9081a200341c0156a41286a2001280200360200200341c0156a41206a2005290300370300200341c0156a41186a2009290300370300200341c0156a41106a2008290300370300200341c0156a41086a2011290300370300200320032903d0083703c015024002400240200341c0156a10bb06450d00200341d00a6a41023a0000200341c80a6a41003a0000200342003703b80a200342013703b00a02402006450d002006410c6c21012016210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402007450d002007410c6c450d002016102e0b02402015450d00201541246c21012018210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b02402012450d00201241246c450d002018102e0b02402014450d00201441246c21012019210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b02402013450d00201341246c450d002019102e0b200341b80a6a210241002106410221040c010b200341c0156a10e20420034189076a200341c0156a41186a220229030037000020034181076a200341c0156a41106a2201290300370000200341f9066a200341c0156a41086a290300370000200341013a00f006200320032903c0153700f106200341d4156a201536020020012012360200200341c0156a410c6a2018360200200320173602c8152003200a3703c0152002200341b00e6a41e40010e9081a200341c4166a2014360200200341c0156a4180016a2013360200200341bc166a2019360200200341c8166a20034190136a41800110e9081a200341a8046a410c6a2006360200200341a8046a41086a20073602002003201a3602b804200320163602ac042003201b3602a804200341b00a6a200341f0066a200341c0156a200341a8046a10990420032903b00a4201520d01200341b00a6a41086a2102200341d00a6a2d0000210420032d00c80a21060b200320022800113602e8052003200241146a2800003600eb0520022f0019210120022d001b2107200229001c210a2002280224210220032903b80a210b20032903c00a210c200041186a20063a0000200041106a200c3703002000200b370308200020032802e8053600192000411c6a20032800eb053600002000412c6a20023602002000200a370024200020073a0023200020013b0021200041206a20043a0000200042013703000c600b200320032800c90a3602e8052003200341b00a6a411c6a2800003600eb0520032903b80a210a20032903c00a210b200041186a20032d00c80a3a0000200041106a200b3703002000200a370308200020032802e8053600192000411c6a20032800eb05360000200042003703000c5f0b200341c0156a41286a2001280200360200200341c0156a41206a2005290300370300200341c0156a41186a2009290300370300200341c0156a41106a2008290300370300200341c0156a41086a2011290300370300200320032903d0083703c0150240200341c0156a10a705450d00200320032800f3063600eb06200320032802f0063602e806200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200041206a41023a0000200042013703000c5f0b2003200a3703d0152003201a3602cc15200320063602c815200320073602c415200320163602c015200341c0156a10ed04200320032802f0063602e806200320032800f3063600eb06200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c5e0b200141086a290300210a200341c0156a41286a200241286a280200360200200341c0156a41206a200241206a290200370300200341c0156a41186a200241186a290200370300200341c0156a41106a200241106a290200370300200341c0156a41086a200241086a290200370300200320022902003703c01502400240200341c0156a10bb060d00200341a8066a41186a22024200370300200341a8066a41106a22014200370300200341a8066a41086a22074200370300200342003703a806200341e8056a41e8fcc60041091081022007200341e8056a41086a290300370300200320032903e8053703a806200341a8046a41d48ec90041091081022002200341a8046a41086a290300370300200120032903a804370300200341a8066a4120108f020d23200341c0066a22074200370300200341b8066a22064200370300200341a8066a41086a22024200370300200342003703a806200341e8056a41e8fcc60041091081022002200341e8056a41086a2204290300370300200320032903e8053703a806200341a8046a41b08ec9004103108102200141086a2205200341a8046a41086a2209290300370300200120032903a804370300200341286a200341a8066a1085032003280228450d012003290330220b500d01200b42b8177c200a580d0141f4d6c80041ce0041c4d7c8001039000b200320032800f3063600eb06200320032802f0063602e806200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200041206a41023a0000200042013703000c5e0b200742003703002006420037030020024200370300200342003703a806200341e8056a41e8fcc600410910810220022004290300370300200320032903e8053703a806200341a8046a41b08ec900410310810220052009290300370300200120032903a8043703002003200a3703c015200341a8066a4120200341c0156a410810b201200742003703002006420037030020024200370300200342003703a806200341e8056a41e8fcc600410910810220022004290300370300200320032903e8053703a806200341a8046a41d48ec900410910810220052009290300370300200120032903a804370300200341013a00a804200341a8066a4120200341a8046a410110b201200742003703002006420037030020024200370300200342003703a806200341e8056a41a8f8c600410410810220022004290300370300200320032903e8053703a806200341a8046a41c98bc500410b10810220052009290300370300200120032903a804370300200341186a200341a8066a1085032003290320420020032802181b200a42f02e80520d20200320032800f3063600eb06200320032802f0063602e806200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c5d0b200341f0066a41086a22082001411d6a290000370300200320012900153703f0062001410d6a290000210b200141286a2802002111200141056a290000210a20012d0004210720012d0025211220034190136a41286a2201200241286a28020036020020034190136a41206a2206200241206a29020037030020034190136a41186a2204200241186a29020037030020034190136a41106a2205200241106a29020037030020034190136a41086a2209200241086a2902003703002003200229020037039013200a421888a7210202400240024002400240024020070e06000102030405000b200341d4156a4101360200200342013702c4152003419cc3cb003602c015200341043602ac0420034194c3cb003602a8042003200341a8046a3602d015200341c0156a41e89bc4001044000b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102200341900a6a41086a200341e9106a290000370300200341900a6a41106a200341f1106a290000370300200341900a6a41186a200341f9106a290000370300200320032900e1103703900a02400240024020032d00e0104101460d00200341b00e6a41186a200341900a6a41186a290300370300200341b00e6a41106a200341900a6a41106a290300370300200341b00e6a41086a200341900a6a41086a290300370300200320032903900a3703b00e200341800c6a200210ff03200341c0156a20032802800c220420032802880c220610b205200341a8066a41086a2205200341c0156a41186a290300370300200341a8066a41106a2209200341e0156a290300370300200341a8066a41186a2208200341e8156a290300370300200320032903d0153703a806200320032800f1153602a8042003200341f4156a2800003600ab04200341c0156a41086a290300210a20032903c015210b024020032d00f015220741024622010d00200341c8066a41186a2008290300370300200341c8066a41106a2009290300370300200341c8066a41086a2005290300370300200320032903a8063703c806200320032802a8043602f00b200320032800ab043600f30b0b0240024020010d00200341e0106a410310bc060c010b200341c8066a41186a200341b00e6a41186a290300370300200341c8066a41106a200341b00e6a41106a290300370300200341c8066a41086a200341b00e6a41086a290300370300200320032903b00e3703c8064200210a4280d0dbc3f402210b200341e0106a200341b00e6a4280d0dbc3f402420010c302410021070b20032d00e01022014106470d01200341f4156a20032800f30b360000200341c0156a41186a200341c8066a41086a290300370300200341e0156a200341c8066a41106a290300370300200341e8156a2201200341c8066a41186a2903003703002003200b3703c015200320032903c8063703d015200320073a00f015200320032802f00b3600f1152003200a3703c81520042006200341c0156a10c605024020032802840c450d002004102e0b20012002360200200341cd156a200341b00e6a41086a290300370000200341d5156a200341b00e6a41106a290300370000200341dd156a200341b00e6a41186a290300370000200341003a00c415200341023a00c015200320032903b00e3700c515200341c0156a10fe01200041186a41003a000020004200370308200020032800e8053600192000411c6a200341eb056a280000360000200042003703000c630b410221010c010b20032902e410210a20032d00e310210620032d00e210210720032d00e110210220032802840c450d002004102e0b2000200a370024200020063a0023200020073a0022200020023a002120004200370308200041206a20013a0000200041186a41003a0000200042013703000c600b200341800c6a41186a20082903003703002003200b3703880c2003200a3703800c200320032903f0063703900c200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102200341a8066a41086a200341e9106a290000370300200341a8066a41106a200341f1106a290000370300200341a8066a41186a200341f9106a290000370300200320032900e1103703a80620032d00e0104101460d21200341b00e6a41186a200341a8066a41186a290300370300200341b00e6a41106a200341a8066a41106a290300370300200341b00e6a41086a200341a8066a41086a290300370300200320032903a8063703b00e0240200341b00e6a200341800c6a412010ec08450d00200341900a6a201110ff03200341c0156a20032802900a220120032802980a220710b205200341b00a6a41086a200341e8156a290300370300200320032903e0153703b00a200320032800f1153602a8042003200341f4156a2800003600ab04200341c0156a41186a290300210a20032903d015210b20032903c815210c20032903c015210d024020032d00f015220641024622020d00200341d0086a41086a200341b00a6a41086a290300370300200320032903b00a3703d008200320032802a8043602f00b200320032800ab043600f30b0b200341a8046a41086a2204200341d0086a41086a290300370300200320032903d0083703a80420020d21200341e8056a41086a2004290300220e370300200320032903a804220f3703e805200341d8156a200e3703002003200a3703c8152003200b3703c0152003200f3703d01502402006410171450d00200341e0106a410510bc060c580b0240200341c0156a200341b00e6a412010ec08450d00200341e0106a410210bc060c580b200341e0106a200341b00e6a200341800c6a200d200c4101108904200341e0106a41086a290300210e024020032802e0104101460d00200341f0106a290300210a200341d0086a41086a200341980c6a290300370300200320032903900c3703d008200341063a00e0104200200c200a7d200d200e54ad7d220a200d200e7d220b200d56200a200c56200a200c511b22021b210c4200200b20021b210d20032903880c210a20032903800c210b41002102410021060c590b20032802e41021022003200e3702e410200320023602e0100c570b200341b0086a410410bc0620032d00b0084106460d590c5b0b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102200341a8066a41086a200341e9106a290000370300200341a8066a41106a200341f1106a290000370300200341a8066a41186a200341f9106a290000370300200320032900e1103703a80620032d00e0104101460d1c200341b00e6a41186a200341a8066a41186a290300370300200341b00e6a41106a200341a8066a41106a290300370300200341b00e6a41086a200341a8066a41086a290300370300200320032903a8063703b00e200341800c6a200210ff03200341c0156a20032802800c220520032802880c220710b205200341b00a6a41086a2206200341e8156a290300370300200320032903e0153703b00a200341c0156a41186a290300210a20032903d015210b20032903c815210c20032903c015210d024020032d00f015220441024622010d00200341d0086a41086a2006290300370300200320032903b00a3703d0080b200341a8046a41086a200341d0086a41086a290300370300200320032903d0083703a80420010d1e200341e8056a41086a200341a8046a41086a290300220e370300200320032903a804220f3703e805200341d8156a200e3703002003200a3703c8152003200b3703c0152003200f3703d01502402004410171450d00200341e0106a410510bc060c510b200341c0156a200341b00e6a412010ec08450d1d200341e0106a410210bc060c500b200341d0086a41086a2008290300370300200320032903f0063703d008200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341c0156a10a7050d1a200341e0106a201110ff03200341c0156a20032802e010220220032802e810220110b205200341e8056a41086a2206200341e8156a290300370300200320032903e0153703e805200320032800f1153602a8042003200341f4156a2800003600ab04200341d8156a290300210c20032903d015210d20032903c815210e20032903c015210f024020032d00f01541024622070d00200341b00a6a41086a2006290300370300200320032903e8053703b00a200320032802a8043602f00b200320032800ab043600f30b0b200341a8046a41086a200341b00a6a41086a290300370300200320032903b00a3703a804024020070d00200341d8156a200341b0046a290300370300200320032903a8043703d0152003200d3703c0152003200c3703c815200341c8006a200341c0156a200f200e10fb010b200341c0156a41186a200b370300200341e0156a20032903d008370300200341f4156a20032800f30b360000200341e8156a2207200341d8086a22062903003703002003200a3703d015200342003703c815200342003703c015200320123a00f015200320032802f00b3600f11520022001200341c0156a10c605024020032802e410450d002002102e0b200341cd156a200b370000200341d5156a20032903d00837000020072011360200200341dd156a20062903003700002003200a3700c515200341003a00c415200341023a00c015200341c0156a10fe01200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c5d0b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a200929030037030020032003290390133703c015200341e0106a200341c0156a10c102200341a8066a41086a200341e9106a290000370300200341a8066a41106a200341f1106a290000370300200341a8066a41186a200341f9106a290000370300200320032900e1103703a80620032d00e0104101460d16200341b00e6a41186a200341a8066a41186a290300370300200341b00e6a41106a200341a8066a41106a290300370300200341b00e6a41086a200341a8066a41086a290300370300200320032903a8063703b00e200341900a6a200210ff03200341c0156a20032802900a220520032802980a220710b205200341b00a6a41086a2206200341e8156a290300370300200320032903e0153703b00a200320032800f1153602a8042003200341f4156a2800003600ab04200341c0156a41186a290300210a20032903d015210b20032903c815210c20032903c015210d024020032d00f015220441024622010d00200341d0086a41086a2006290300370300200320032903b00a3703d008200320032802a8043602f00b200320032800ab043600f30b0b200341a8046a41086a200341d0086a41086a290300370300200320032903d0083703a80420010d18200341e8056a41086a200341a8046a41086a290300220e370300200320032903a804220f3703e805200341f8106a200e3703002003200a3703e8102003200b3703e0102003200f3703f01002402004410171450d00200341800c6a410510bc060c4a0b200341e0106a200341b00e6a412010ec08450d17200341800c6a410210bc060c490b20034194066a41026a22062001410f6a2d00003a0000200341d0086a41086a2204200141206a290200370300200341d0086a41106a2205200141286a290200370300200320012f000d3b0194062003200141186a2902003703d008200141c8006a290300210e200141c0006a290300210d2002411a6a290100210c200241196a2d00002113200241186a2d00002115200241166a2f01002114200241156a2d00002116200241146a2d00002118200241126a2f01002119200241116a2d0000211a200241106a2d000021172002410e6a2f0100211b2002410d6a2d0000211c2002410c6a2d0000211d2002410a6a2f0100211e200241096a2d0000211f200241086a2d00002120200241066a2f01002121200241056a2d00002122200241046a2d00002123200241026a2f01002124200141146a2802002108200141106a28020021112001410c6a2d00002109200141386a290300210b200141306a290300210a2002280228210720022d0001211220022d0000210202400240024002400240200141086a2802000e050001020304000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac04200341a4a7c7003602a8042003200341a8046a3602d015200341c0156a4194a7c7001044000b200341b0086a41026a20062d00003a0000200341b00e6a41086a2004290300370300200341b00e6a41106a2005290300370300200320032f0194063b01b008200320032903d0083703b00e20072007280200417f6a22013602000240024002400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b41012102201241ff01714101470d012003201f3a00cf06200320203a00ce06200320213b01cc06200320223a00cb06200320233a00ca06200320243b01c8062003201a3a00d706200320173a00d6062003201b3b01d4062003201c3a00d3062003201d3a00d2062003201e3b01d006200320133a00df06200320153a00de06200320143b01dc06200320163a00db06200320183a00da06200320193b01d8062003200c3703e006200341900a6a41186a2201200c370300200341900a6a41106a220720032903d806370300200341900a6a41086a220620032903d006370300200320032903c8063703900a20034190136a41186a200129030037030020034190136a41106a200729030037030020034190136a41086a2006290300370300200320032903900a37039013200341a8046a41026a2201200341b0086a41026a2d00003a0000200320032f01b0083b01a804200341e0106a41086a2207200341b00e6a41086a290300370300200341e0106a41106a200341b00e6a41106a290300370300200320032903b00e3703e01002400240024020090e03000201020b200341e8056a41026a20012d00003a0000200341800c6a41086a2007290300370300200341800c6a410d6a200341e0106a410d6a290000370000200320032f01a8043b01e805200320032903e0103703800c410021020c010b2008450d002011102e0b200341bb066a200341800c6a41086a290300370000200341a8066a41186a2003418d0c6a290000370000200320032f01e8053b01a806200320083600af06200320113600ab06200320032903800c3700b3062003200341e8056a41026a2d00003a00aa0620020d03200341c0156a41186a200341a8066a41186a290300370300200341c0156a41106a200341a8066a41106a290300370300200341c0156a41086a200341a8066a41086a290300370300200320032903a8063703c015200341e0106a20034190136a200341c0156a200a200b410110ca0220032d00e01022024106460d0620032902e410210a20032d00e310210120032d00e210210720032d00e11021060c050b024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0c010b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0b4102210220094102470d012008450d012011102e0c010b410121020b0b200320032800b00a3602f0062003200341b30a6a2800003600f306200041186a41003a000020004200370308200020032802f0063600192000411c6a20032800f306360000200041246a200a370200200020013a0023200020073a0022200020063a0021200041206a20023a0000200042013703000c5f0b200320032800b00a3602f0062003200341b30a6a2800003600f306200041186a41003a000020004200370308200020032802f0063600192000411c6a20032800f306360000200042003703000c5e0b200341e8066a41026a20062d00003a0000200341b00a6a41086a2004290300370300200341b00a6a41106a200529030037030020072007280200417f6a2201360200200320032f0194063b01e806200320032903d0083703b00a02400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b201241ff01710d01200341e0106a41026a2201200341e8066a41026a2d00003a0000200341c0156a41086a2207200341b00a6a41086a290300370300200341c0156a41106a200341b00a6a41106a290300370300200320032f01e8063b01e010200320032903b00a3703c0154101210220090e03020403040b20010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b4102210220094102470d4c2008450d4c2011102e0c4c0b200341b00e6a41026a20012d00003a000020034190136a41086a200729030037030020034190136a410d6a200341c0156a410d6a290000370000200320032f01e0103b01b00e200320032903c01537039013410021020c010b2008450d002011102e0b200341bb066a20034190136a41086a290300370000200341a8066a41186a22012003419d136a290000370000200320032f01b00e3b01a806200320083600af06200320113600ab0620032003290390133700b3062003200341b00e6a41026a2d00003a00aa0620020d16200341800c6a41186a2001290300370300200341800c6a41106a200341a8066a41106a290300370300200341800c6a41086a200341a8066a41086a290300370300200320032903a8063703800c20034190136a200341800c6a10c802200341c0156a200328029013220720032802981310c902200341c0156a41386a2903002125200341c0156a41306a2903002126200341c0156a41286a2903002127200341c0156a41206a2903002128200341c0156a41186a2903002129200341c0156a41106a290300210f20034180166a290300212a20032903c815211020032903c015210c200341a8046a41086a20034190166a290300370300200320034188166a2903003703a804200e200b7c200d200a7c222b200d54ad7c212c02400240200c4201510d00200341e0106a41386a4200370300200341e0106a41306a4200370300200341e0106a41286a4200370300200341e0106a41206a4200370300200341f8106a4200370300200341e0106a41106a4200370300200341e0106a41086a4200370300200342003703e0104200212a42002128420021274200212642002125420021104200210f420021294200212d4200212e4200210c4200212f0c010b200341e0106a41206a2027370300200341e0106a41286a2026370300200341e0106a41106a2029370300200341e0106a41306a2025370300200320283703f810200320103703e0102003202a370398112003200f3703e8102027212d2026212e2010210c200f212f0b202c502102202b4280c8afa0255421010240200328029413450d002007102e0b2001410020021b210202400240200c202f844200520d00202d20032903f01084202e200341f8106a29030084844200520d0020032903901120034198116a2903008450450d004200212b410021010c010b4201212b410121010b4200200b20021b210b4200200a20021b210a0240202b4201510d004200212742002126420021254200212a4200212942002128420021104200210f0b4200200e20021b210c4200200d20021b210d02400240200a201058200b200f58200b200f5122021b0d002003200a20107d3703c0152003200b200f7d200a201054ad7d3703c8152003200341c0156a3602f006200341f0066a10ce020c010b200a20105a200b200f5a20021b0d0020032010200a7d3703c0152003200f200b7d2010200a54ad7d3703c8152003200341c0156a3602f006200341f0066a10cc020b02400240200d202958200c202858200c20285122021b0d002003200d20297d3703c0152003200c20287d200d202954ad7d3703c8152003200341c0156a3602f006200341f0066a10ce020c010b200d20295a200c20285a20021b0d0020032029200d7d3703c01520032028200c7d2029200d54ad7d3703c8152003200341c0156a3602f006200341f0066a10cc020b200341e8156a22072026370300200341f0156a22062025370300200320273703e0152003200c3703d8152003200d3703d0152003200a3703c0152003200b3703c8154200210f42012110202b420152ad212802400240427f200a200d7c220e200e200a542202200b200c7c2002ad7c220e200b54200e200b511b22021b222942ffc7afa02556427f200e20021b220e420052200e501b0d00200a200d84200b200c8484220f50210242002110200f420052ad210f0c010b2006290300212d2007290300212f200341e0156a290300212c200341d0156a290300212520032903d815212b20032903c815212720032903c0152126410121020b200341d8136a200c370300200341d0136a200d370300200341c8136a200b370300200341b8136a200e370300200341b0136a22072029370300200341a0136a200b3703002003200a3703c0132003200a370398132003200f3703a8132003202837039013024020012010420152720d002003200341800c6a3602c015200341800c6a200341c0156a10bd060c480b02400240200141017322012010420151720d002003200341800c6a3602c015200341800c6a200341c0156a10be0641ff017122014103460d49024020010e03024a00020b024020020d00200320073602c015200341c0156a10cc020b410421020c4b0b2010420152200171450d480b200a2126200b21100c480b200141e0006a290300210c200141d8006a290300210f200141d0006a2903002110200ba72113200aa72101200a422088a72115200341f0066a41026a20062d00003a0000200341e0106a41086a2004290300370300200341e0106a41106a200529030037030020072007280200417f6a2206360200200320032f0194063b01f006200320032903d0083703e0100240024002400240024002400240200241ff01710d00024020060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b201241ff01710d01200341800c6a41026a2207200341f0066a41026a2d00003a0000200341c0156a41086a2206200341e0106a41086a290300370300200341c0156a41106a200341e0106a41106a290300370300200320032f01f0063b01800c200320032903e0103703c0154101210220090e03020403040b20060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b410221020240200141ff01714102470d002013450d002015102e0b20094102470d032008450d032011102e0c030b200341b00a6a41026a20072d00003a0000200341b00e6a41086a2006290300370300200341b00e6a410d6a200341c0156a410d6a290000370000200320032f01800c3b01b00a200320032903c0153703b00e410021020c010b2008450d002011102e0b200341db066a200341b00e6a41086a290300370000200341c8066a41186a2207200341bd0e6a290000370000200320032f01b00a3b01c806200320083600cf06200320113600cb06200320032903b00e3700d3062003200341b00a6a41026a2d00003a00ca060240024020020d00200b422088a7210420034190136a41186a200729030037030020034190136a41106a200341c8066a41106a29030037030020034190136a41086a200341c8066a41086a290300370300200320032903c806370390132001410876210241012106024002400240200141ff01710e03000201020b2010a72107410021060c010b02402013450d002015102e0b0b200341bf066a200e3700002003200d3700b706200320073a00c706200320043600b306200320133600af06200320153600ab06200320023b01a806200320024110763a00aa0620060d01200341c0156a41186a200341a8066a41186a290300370300200341c0156a41106a200341a8066a41106a290300370300200341c0156a41086a200341a8066a41086a290300370300200320032903a8063703c015200341b00e6a20034190136a200341c0156a200f200c410110ca02024020032d00b00e22024106460d0020032902b40e210a20032d00b30e210120032d00b20e210720032d00b10e21060c040b200320032802e8053602b008200320032800eb053600b308200041186a41003a000020004200370308200020032802b0083600192000411c6a20032800b308360000200042003703000c600b41012102200141ff01714102470d012013450d012015102e0c010b410121020b0b200320032802e8053602b008200320032800eb053600b308200041186a41003a000020004200370308200020032802b0083600192000411c6a20032800b308360000200041246a200a370200200020013a0023200020073a0022200020063a0021200041206a20023a0000200042013703000c5c0b200341e8056a41026a20062d00003a0000200341b00e6a41086a2004290300370300200341b00e6a41106a2005290300370300200320032f0194063b01e805200320032903d0083703b00e20072007280200417f6a22013602000240024002400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b41012102201241ff01714101470d012003201f3a00cf06200320203a00ce06200320213b01cc06200320223a00cb06200320233a00ca06200320243b01c8062003201a3a00d706200320173a00d6062003201b3b01d4062003201c3a00d3062003201d3a00d2062003201e3b01d006200320133a00df06200320153a00de06200320143b01dc06200320163a00db06200320183a00da06200320193b01d8062003200c3703e006200341900a6a41186a2201200c370300200341900a6a41106a220720032903d806370300200341900a6a41086a220620032903d006370300200320032903c8063703900a20034190136a41186a200129030037030020034190136a41106a200729030037030020034190136a41086a2006290300370300200320032903900a37039013200341b00a6a41026a2201200341e8056a41026a2d00003a0000200320032f01e8053b01b00a200341e0106a41086a2207200341b00e6a41086a290300370300200341e0106a41106a200341b00e6a41106a290300370300200320032903b00e3703e01002400240024020090e03000201020b200341a8046a41026a20012d00003a0000200341800c6a41086a2007290300370300200341800c6a410d6a200341e0106a410d6a290000370000200320032f01b00a3b01a804200320032903e0103703800c410021020c010b2008450d002011102e0b200341bb066a200341800c6a41086a290300370000200341a8066a41186a2003418d0c6a290000370000200320032f01a8043b01a806200320083600af06200320113600ab06200320032903800c3700b3062003200341a8046a41026a2d00003a00aa0620020d03200341c0156a41186a200341a8066a41186a290300370300200341c0156a41106a200341a8066a41106a290300370300200341c0156a41086a200341a8066a41086a290300370300200320032903a8063703c015200341e0106a20034190136a200341c0156a200a200b410010ca0220032d00e01022024106460d0620032902e410210a20032d00e310210120032d00e210210720032d00e11021060c050b024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0c010b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0b4102210220094102470d012008450d012011102e0c010b410121020b0b200320032802f0063602e806200320032800f3063600eb06200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb063600002000200a370024200020013a0023200020073a0022200020063a0021200041206a20023a0000200042013703000c5c0b200320032802f0063602e806200320032800f3063600eb06200041186a41003a000020004200370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c5b0b2001410c6a2802002105200141086a280200211120012802042104200341c0156a41286a200241286a280200360200200341c0156a41206a200241206a290200370300200341c0156a41186a200241186a290200370300200341c0156a41106a200241106a290200370300200341c0156a41086a200241086a290200370300200320022902003703c0150240024002400240200341c0156a10bb060d0002402005410a4d0d00200341f00b6a410310bf060c030b200341900a6a41186a22014200370300200341900a6a41106a22174200370300200341900a6a41086a22024200370300200342003703900a200341d0086a4190dac800410a1081022002200341d0086a41086a2206290300370300200320032903d0083703900a200341b00a6a41d097c900410c1081022001200341b00a6a41086a2209290300370300201720032903b00a3703000240200341900a6a108603220741ff01714102460d002007410171450d00200341f00b6a410210bf060c020b200142003703002017420037030020024200370300200342003703900a200341d0086a4190dac800410a10810220022006290300370300200320032903d0083703900a200341b00a6a41d097c900410c108102201741086a2009290300370200201720032903b00a370200200341013a00a804200341900a6a4120200341a8046a410110b201200341c8066a41186a22024200370300200341c8066a41106a221b4200370300200341c8066a41086a22014200370300200342003703c806200341e8056a41d9fcc60041061081022001200341e8056a41086a290300370300200320032903e8053703c806200341a8046a4180f4cb0041061081022002200341a8046a41086a290300370300201b20032903a80437030020034180016a200341c8066a4120108e0220032802800121012003280284012107200341b0086a10e10402400240024020032802b808220220032802b4082219470d00200241016a22062002490d4a200241017422092006200920064b1b22064104200641044b1bad42c4007e220a422088a7454102742106200aa721090240024020020d00200341003602c0150c010b200341c8156a4104360200200320032802b0083602c0152003200241c4006c3602c4150b20034190136a20092006200341c0156a107d20034198136a28020021062003280290134101460d0120032003280294133602b0082003200641c4006e22193602b4080b20032802b008221c200241c4006c6a22062007410020011b360204200641003a00002003200241016a22153602b8082004200541f0006c22026a212420050d01200421070c460b20060d5c0c480b200441f4006a2106200241907f6a2109200341e0106a4101722114200341c0156a41106a2130200341c0156a41086a2131200341c8066a41186a21162003419f0c6a21322004210703402007280204211a20072802002112200341c0156a200741086a41e80010e9081a200741f0006a2107201a450d4520034190136a200341c0156a41e80010e9081a2003201a3602c415200320123602c015203120034190136a41e80010e9081a20164200370300200341c8066a41106a22184200370300200341c8066a41086a22134200370300200342003703c806200341e8056a41d9fcc60041061081022013200341e8056a41086a290300370300200320032903e8053703c806200341a8046a4180f4cb004106108102201b41086a200341a8046a41086a290300370300201b20032903a804370300200341f8006a200341c8066a4120108e0220032802782102200328027c2101200341800c6a200341c0156a109a04024020120d00200341e0106a410410bf0620033500e11020033300e51020033100e7104210868442208684210a200341e8106a28020021020c450b024020122001410020021b22024d0d00200341e0106a410510bf0620033500e11020033300e51020033100e7104210868442208684210a200341e8106a28020021020c450b200341b00a6a2012417f6a108c02200341e0106a20032802b00a220820032802b80a108d0220032d00e01021012016201441186a221d2900003703002018201441106a221e2900003703002013201441086a221f290000370300200320142900003703c8060240024020014101460d00200341b00e6a41186a4200370300200341b00e6a41106a4200370300200341b00e6a41086a4200370300200342003703b00e0c010b200341b00e6a41186a2016290300370300200341b00e6a41106a2018290300370300200341b00e6a41086a2013290300370300200320032903c8063703b00e0b024020032802b40a450d002008102e0b0240200341b00e6a2030412010ec08450d00200341e0106a410110bf0620033500e11020033300e51020033100e7104210868442208684210a200341e8106a28020021020c450b0240201220024f0d00200341e0106a410710bf0620033500e11020033300e51020033100e7104210868442208684210a200341e8106a28020021020c450b024002402015450d00201541c4006c2101201c21020340024020022d00004101470d0041012108200241016a200341800c6a412010ec08450d030b200241c4006a2102200141bc7f6a22010d000b0b410021080b200341b00a6a2012108c02200341e0106a20032802b00a220120032802b80a108d0220032d00e01021022016201d2900003703002018201e2900003703002013201f290000370300200320142900003703c8060240024020024101460d00200341b00e6a41186a4200370300200341b00e6a41106a4200370300200341b00e6a41086a4200370300200342003703b00e0c010b200341b00e6a41186a2016290300370300200341b00e6a41106a2018290300370300200341b00e6a41086a2013290300370300200320032903c8063703b00e0b024020032802b40a450d002001102e0b02402008417f73200341b00e6a200341800c6a412010ec08410047710d00200341e0106a410610bf0620033500e11020033300e51020033100e7104210868442208684210a200341e8106a28020021020c450b2032310000210a20032900930c210b200328008f0c2101200328008b0c210820032800870c211220032800830c211a20032f00810c211d200335009b0c210c200341800c6a200341c0156a109a04200341b00e6a41186a221e4200370300200341b00e6a41106a221f4200370300200341b00e6a41086a22204200370300200342003703b00e200341a8066a41186a22214200370300200341a8066a41106a22224200370300200341a8066a41086a22234200370300200342003703a80641c800102c2202450d5c200341c8066a10e2042002410236022020024101360244200241186a2016290300370200200241106a2018290300370200200241086a2013290300370200200220032903c806370200200220032903a8063702242002412c6a2023290300370200200241346a20222903003702002002413c6a2021290300370200200320023602e01020034282808080203702e410200341e0106a10e304200341e0106a41186a201e290300370300200341e0106a41106a201f290300370300200341e0106a41086a2020290300370300200320032903b00e3703e010200341e0106a10e404200341f0066a41186a2213200341800c6a41186a290300370300200341f0066a41106a2218200341800c6a41106a290300370300200341f0066a41086a221e200341800c6a41086a290300370300200320032903800c3703f006024020152019470d0020192019470d00201941016a22022019490d492019410174221f2002201f20024b1b22024104200241044b1bad42c4007e220d422088a7454102742102200da7211f0240024020190d00200341003602e0100c010b200341043602e8102003201c3602e0102003201941c4006c3602e4100b200341b00e6a201f2002200341e0106a107d20032802b80e210220032802b00e4101460d44200320032802b40e221c3602b0082003200241c4006e22193602b4080b201c201541c4006c6a220241013a0000201e290300210d2018290300210e2013290300210f20032903f0062110200241c1006a200c200a42208684220a4220883c00002002200a3e003d2002200b370035200220013600312002200836002d200220123600292002201a3600252002201d3b0023200241003a002120022010370001200241196a200f370000200241116a200e370000200241096a200d370000200320032802b80841016a22153602b80820032802c4152108024020032802cc152202450d00200241246c21012008210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b024020032802c8152202450d00200241246c450d002008102e0b200941907f6a2109200641f0006a210620072024470d000c460b0b200341023a00f00b0b2005450d010b2004200541f0006c6a2106200421020340024020022207410c6a2802002201450d0020072802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200741f0006a21020240200741086a2802002201450d00200141246c450d002007280204102e0b20022006470d000b0b2011450d42201141f0006c450d422004102e0c420b200341c0156a200141086a41d80010e9081a20034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a1081060c590b200141086a280200211520012802042112200341a8046a200141106a41c00110e9081a200341e8056a41286a2201200241286a280200360200200341e8056a41206a2207200241206a290200370300200341e8056a41186a2206200241186a290200370300200341e8056a41106a2204200241106a290200370300200341e8056a41086a2205200241086a290200370300200320022902003703e80502402012450d00200341f0066a200341a8046a41c00110e9081a200341c0156a41286a2001280200360200200341c0156a41206a2007290300370300200341c0156a41186a2006290300370300200341c0156a41106a2004290300370300200341c0156a41086a2005290300370300200320032903e8053703c01520034190136a200341c0156a10c102200341900a6a41086a20034199136a290000370300200341900a6a41106a200341a1136a290000370300200341900a6a41186a200341a9136a29000037030020032003290091133703900a024020032d0090134101460d00200341b0086a41186a2202200341900a6a41186a2206290300370300200341b0086a41106a2201200341900a6a41106a290300370300200341b0086a41086a2207200341900a6a41086a290300370300200320032903900a3703b008200341d0086a200341f0066a41c00110e9081a20034190136a41186a200229030037030020034190136a41106a200129030037030020034190136a41086a2007290300370300200320032903b00837039013200341c0156a20034190136a10f005024020032d00c0154101470d00200341f7106a2202200341d9156a290000370000200341e0106a41106a2201200341d2156a290100370300200341990a6a200341ca156a290100370000200341a10a6a200129030037000020062002290000370000200320032d00c1153a00900a200320032901c2153700910a200341b0086a1083060d13200341b00e6a200341d0086a41c00110e9081a200341c8066a200341900a6a10a603200341c0156a20032802c806220120032802d00610a70320032d00c0152102200341e0106a200341c0156a41017241c00110e9081a0240024020024101460d00200341003a0090130c010b200341013a00901320034190136a410172200341e0106a41c00110e9081a0b024020032802cc06450d002001102e0b20034190136a4101722114200341c0156a4101722102416821060340200341c0016a200341b00e6a200641b0fac6006a280000220110d10320032802c0012107200320032802c40122043602e810200320073602e410200320013602e010200341f00b6a200341e0106a10c203200341c0156a20032802f00b220520032802f80b10f402200341a8066a41086a2209200241086a290000370300200341a8066a41106a2208200241106a290000370300200341a8066a41186a2211200241186a290000370300200320022900003703a8060240024020032d00c0154101470d00200341c8066a41186a22132011290300370300200341c8066a41106a22112008290300370300200341c8066a41086a22082009290300370300200320032903a8063703c806024020032802f40b450d002005102e0b200341c0156a41186a2013290300370300200341c0156a41106a2011290300370300200341c0156a41086a2008290300370300200320032903c8063703c015200341c0156a200341900a6a412010ec08450d01200341c0156a410310c006200341800c6a410a6a200341c8156a2202280200360000200320032903c0153700820c200341b00a6a200341800c6a41c00110e9081a2002200341b00a6a410a6a280000360200200320032900b20a3703c0150c3f0b20032802f40b450d002005102e0b0240024020032d0090134101470d00200341b8016a2014200110d10320032802b8012205450d000240200420032802bc012209470d0020072005200410ec08450d020b200320093602c815200320053602c415200320013602c015200341e0106a200341c0156a10c20320032802e010220520032802e81010ff0120032802e410450d002005102e0b200320043602c815200320073602c415200320013602c015200341e0106a200341c0156a10c20320032802e010210120032802e81021074120102c2204450d5a200342203702c415200320043602c015200341c0156a200341900a6a412010742001200720032802c015220420032802c81510b201024020032802c415450d002004102e0b20032802e410450d002001102e0b200641046a22060d000b200341e0106a200341900a6a10a60320032802e810210120032802e0102102200341003602c815200342013703c015200341c0156a200341b00e6a41201074200341c0156a200341b00e6a41206a41201074200341c0156a200341f00e6a41201074200341c0156a200341900f6a41201074200341c0156a200341b00f6a41201074200341c0156a200341d00f6a412010742002200120032802c015220720032802c81510b201024020032802c415450d002007102e0b024020032802e410450d002002102e0b024020032d009013450d00200341b0086a108a060b41062102200341063a00c0150c3d0b200341c0156a410210c0060c3b0b410221020c3c0b200341c0156a41286a2001280200360200200341c0156a41206a2007290300370300200341c0156a41186a2006290300370300200341c0156a41106a2004290300370300200341c0156a41086a2005290300370300200320032903e8053703c01520034190136a200341c0156a10c102200341a8066a41086a20034199136a290000370300200341a8066a41106a200341a1136a290000370300200341a8066a41186a200341a9136a29000037030020032003290091133703a80620032d0090134101460d0f200341b00a6a41186a200341a8066a41186a290300220a370300200341b00a6a41106a200341a8066a41106a290300220b370300200341b00a6a41086a200341a8066a41086a290300220c370300200320032903a806220d3703b00a20034190136a41186a200a37030020034190136a41106a200b37030020034190136a41086a200c3703002003200d37039013200341c0156a20034190136a10f0050240024020032d00c0154101470d00200341f7106a2202200341d9156a290000370000200341e0106a41106a2201200341d2156a290100370300200341890c6a200341ca156a290100370000200341910c6a2001290300370000200341800c6a41186a2002290000370000200320032d00c1153a00800c200320032901c2153700810c200341d0086a200341800c6a10a603200341c0156a20032802d008220220032802d808220710a703024020032d00c0152201450d002002200710ff010b20032d00c1152107200341e0106a200341c0156a41027241bf0110e9081a024020014101470d00200341b00e6a200341e0106a41bf0110e9081a024020032802d408450d002002102e0b200320073a00901320034190136a410172200341b00e6a41bf0110e9081a200341b0016a20034190136a41e7e485f30610d103200320032903b0013702c415200341e7e485f3063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b200341a8016a20034190136a41e2c289ab0610d103200320032903a8013702c415200341e2c289ab063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b200341a0016a20034190136a41e9dabdf30610d103200320032903a0013702c415200341e9dabdf3063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b20034198016a20034190136a41f0c2c98b0610d10320032003290398013702c415200341f0c2c98b063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b20034190016a20034190136a41e1e69df30610d10320032003290390013702c415200341e1e69df3063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b20034188016a20034190136a41e1ea91cb0610d10320032003290388013702c415200341e1ea91cb063602c015200341e0106a200341c0156a10c20320032802e010220220032802e81010ff01024020032802e410450d002002102e0b200341b00a6a108a060c3b0b024020032802d408450d002002102e0b200341f0066a410410c0060c010b200341f0066a410210c0060b20032d00f00622024106460d3820032d00f106210120032d00f206210720032d00f306210620032902f406210a0c370b2001411c6a2802002115200141186a2802002111200141146a2802002108200141106a28020021122001410c6a2802002113200141086a2802002107200341e0106a200141206a41800210e9081a200341800c6a41286a2201200241286a280200360200200341800c6a41206a2206200241206a290200370300200341800c6a41186a2204200241186a290200370300200341800c6a41106a2205200241106a290200370300200341800c6a41086a2209200241086a290200370300200320022902003703800c024002400240024020070e0400010203000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac0420034194c3cb003602a8042003200341a8046a3602d015200341c0156a41c499c9001044000b20034190136a200341e0106a41800210e9081a200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903800c3703c015200341b00a6a200341c0156a10c102200341a8066a41086a200341b90a6a2202290000370300200341a8066a41106a200341c10a6a2201290000370300200341a8066a41186a200341c90a6a2207290000370300200320032900b10a3703a80602400240024020032d00b00a4101470d00200341d00e6a41023a0000200341c80e6a41003a0000200342003703b80e200342013703b00e02402011450d002011410c6c21012012210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402008450d002008410c6c450d002012102e0b200341b80e6a210241002106410221040c010b200341c8066a41186a200341a8066a41186a290300220a370300200341c8066a41106a200341a8066a41106a290300220b370300200341c8066a41086a200341a8066a41086a290300220c370300200320032903a806220d3703c8062007200a3700002001200b3700002002200c3700002003200d3700b10a200341013a00b00a200341c0156a20034190136a41800210e9081a200341dc086a2011360200200341d0086a41086a2008360200200320153602e008200320123602d408200320133602d008200341b00e6a200341b00a6a200341c0156a200341d0086a10c10620032903b00e4201520d01200341b00e6a41086a2102200341d00e6a2d0000210420032d00c80e21060b200320022800113602e8062003200241146a2800003600eb0620022f0019210120022d001b2107200229001c210a2002280024210220032903b80e210b20032903c00e210c200041186a20063a0000200041106a200c3703002000200b370308200020032802e8063600192000411c6a20032800eb063600002000412c6a2002360200200041246a200a370200200020073a0023200020013b0021200041206a20043a0000200042013703000c5a0b200320032800c90e3602e8062003200341b00e6a411c6a2800003600eb0620032903b80e210a20032903c00e210b200041186a20032d00c80e3a0000200041106a200b3703002000200a370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c590b20034190136a200341e0106a41800210e9081a200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903800c3703c015024002400240200341c0156a10bb06450d00200341d00e6a41023a0000200341c80e6a41003a0000200342003703b80e200342013703b00e02402011450d002011410c6c21012012210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402008450d002008410c6c450d002012102e0b200341b80e6a210241002106410221040c010b200341c0156a10e204200341c90a6a200341c0156a41186a290300370000200341c10a6a200341c0156a41106a290300370000200341b90a6a200341c0156a41086a290300370000200341013a00b00a200320032903c0153700b10a200341c0156a20034190136a41800210e9081a200341dc086a2011360200200341d0086a41086a2008360200200320153602e008200320123602d408200320133602d008200341b00e6a200341b00a6a200341c0156a200341d0086a10c10620032903b00e4201520d01200341b00e6a41086a2102200341d00e6a2d0000210420032d00c80e21060b200320022800113602f0062003200241146a2800003600f30620022f0019210120022d001b2107200229001c210a2002280024210220032903b80e210b20032903c00e210c200041186a20063a0000200041106a200c3703002000200b370308200020032802f0063600192000411c6a20032800f3063600002000412c6a2002360200200041246a200a370200200020073a0023200020013b0021200041206a20043a0000200042013703000c590b200320032800c90e3602f0062003200341b00e6a411c6a2800003600f30620032903b80e210a20032903c00e210b200041186a20032d00c80e3a0000200041106a200b3703002000200a370308200020032802f0063600192000411c6a20032800f306360000200042003703000c580b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903800c3703c0150240200341c0156a10a705450d002000420037002420004200370308200041206a41023a0000200041186a41003a0000200042013703000c580b200341a8066a41186a22024200370300200341b8066a22014200370300200341a8066a41086a22074200370300200342003703a806200341e8056a41a0dac800410f1081022007200341e8056a41086a290300370300200320032903e8053703a806200341a8046a41a0eec80041071081022002200341a8046a41086a290300370300200120032903a804370300200341a8066a41202013201210e504200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c570b200141246a28020021052001411c6a2802002104200141186a2802002109200141146a2802002108200141106a28020021062001410c6a2802002111200141086a2802002112200341c0156a41286a200241286a280200360200200341c0156a41206a200241206a290200370300200341c0156a41186a200241186a290200370300200341c0156a41106a200241106a290200370300200341c0156a41086a200241086a290200370300200320022902003703c015024002400240200341c0156a10bb06450d004200210a410221064200210b0c010b200341a8066a41186a22024200370300200341a8066a41106a22014200370300200341a8066a41086a22074200370300200342003703a806200341e8056a41a081ca0041071081022007200341e8056a41086a290300370300200320032903e8053703a806200341a8046a41e4d1c100410c1081022002200341a8046a41086a290300370300200120032903a804370300200341c8016a200341a8066a4120108e02200341c0156a20032802cc01410020032802c8011b2215200510c20620032802c015220220032802c815108f022107024020032802c415450d002002102e0b200341b00e6a1087032007417f7320032802b00e221320054105746a410020032802b80e20054b1b2202410047710d01024020032802b40e41ffffff3f71450d002013102e0b4280808080b0024280808080a00120071b210b41b4f3c800ad41aaf3c800ad20071b210a410321060b02402011450d002012102e0b02402004450d002004410c6c21012008210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402009450d002009410c6c450d002008102e0b200020073a00222000410c3a0021200042003703082000200b200a84370024200041206a20063a0000200041186a41003a0000200042013703000c570b200241086a290000210a200241106a290000210b2002290000210c200341c8066a41186a200241186a290000220d370300200341c8066a41106a200b370300200341c8066a41086a200a3703002003200c3703c806200341cd156a200a370000200341d5156a200b370000200341dd156a200d370000200341003a00c415200341083a00c0152003200c3700c515200341c0156a10fe01200341003602e810200342013703e0102006200341e0106a1076200341e0106a2012200610742004200341e0106a107602402004450d0020082004410c6c6a210620082102034020022802002101200241086a2802002207200341e0106a1076200341e0106a2001200710742002410c6a22022006470d000b0b20034190136a2015200510c20620032802e810220141046a2202417f4c0d3f20032802e0102107200328029813210520032802901321060240024020020d00410121150c010b2002102c2215450d540b200341003602c815200320023602c415200320153602c0152001200341c0156a1076200341c0156a2007200110742006200520032802c015220220032802c81510b201024020032802c415450d002002102e0b0240200328029413450d002006102e0b024020032802e410450d002007102e0b024020032802b40e41ffffff3f71450d002013102e0b02402011450d002012102e0b02402004450d002004410c6c21012008210203400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b02402009450d002009410c6c450d002008102e0b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c560b200341c0156a41306a200141386a290300370300200341c0156a41286a200141306a290300370300200341c0156a41206a200141286a290300370300200341c0156a41186a200141206a290300370300200341c0156a41106a200141186a290300370300200341c0156a41086a200141106a2903003703002003200141086a2903003703c01520034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c3060c550b200341c0156a41306a200141386a290300370300200341c0156a41286a200141306a290300370300200341c0156a41206a200141286a290300370300200341c0156a41186a200141206a290300370300200341c0156a41106a200141186a290300370300200341c0156a41086a200141106a2903003703002003200141086a2903003703c01520034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c4060c540b200341c0156a41306a200141386a290300370300200341c0156a41286a200141306a290300370300200341c0156a41206a200141286a290300370300200341c0156a41186a200141206a290300370300200341c0156a41106a200141186a290300370300200341c0156a41086a200141106a2903003703002003200141086a2903003703c01520034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c5060c530b200141206a290300210c200141186a290300210a200141286a290300210b200141146a2802002112200141106a28020021112001410c6a2802002108200141086a2d0000210720012d00092113200341e0106a41286a2201200241286a280200360200200341e0106a41206a2206200241206a290200370300200341e0106a41186a2204200241186a290200370300200341e0106a41106a2205200241106a290200370300200341e0106a41086a2209200241086a290200370300200320022902003703e0100240024002400240024002400240024020070e0700010203040506000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac0420034194c3cb003602a8042003200341a8046a3602d015200341c0156a4188f3c0001044000b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c01520034190136a200341c0156a10c1020240024020032d0090134101460d0020034190136a41086a280200210220034190136a410c6a280200210120034190136a41106a280200210720034190136a41146a290200210b20032d009113210620032f019213210420032802941321052003200341ac136a35020020034190136a41206a31000042208684220d3e00cb0e200341cf0e6a200d4220883c00002003200b3700c30e200320073600bf0e200320013600bb0e200320023600b70e200320053600b30e200320043b00b10e200320063a00b00e0240201241104d0d00200341d0086a410410f3020c020b024020120d00200341d0086a410210f3020c020b200341980c6a22014200370300200341800c6a41106a22024200370300200341800c6a41086a22074200370300200342003703800c200341b00a6a418ef9c00041101081022007200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a1081022001200341c0156a41086a290000370300200220032900c01537030041002101200341b40a6a41003a0000200341003602b00a20034198026a200341800c6a4120200341b00a6a4105410010ca040240200328029802450d002003200328029c022201410520014105491b3602c4152003200341b00a6a3602c01520034190026a200341c0156a10ab010240200328029002450d00410021010c010b20032802940221010b200341980c6a4200370300200341800c6a41106a4200370300200341800c6a41086a22074200370300200342003703800c200341b00a6a418ef9c00041101081022007200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a41c7c3cb004107108102200241086a200341c0156a41086a290000370000200220032900c01537000041002107200341b40a6a41003a0000200341003602b00a20034188026a200341800c6a4120200341b00a6a4105410010ca040240200328028802450d002003200328028c022207410520074105491b3602c4152003200341b00a6a3602c01520034180026a200341c0156a10ab010240200328028002450d00410021070c010b20032802840221070b200341980c6a4200370300200341800c6a41106a4200370300200341800c6a41086a22064200370300200342003703800c200341b00a6a418ef9c00041101081022006200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a41a8f9c0004109108102200241086a200341c0156a41086a290000370000200220032900c01537000041002102200341b40a6a41003a0000200341003602b00a200341f8016a200341800c6a4120200341b00a6a4105410010ca04024020032802f801450d00200320032802fc012202410520024105491b3602c4152003200341b00a6a3602c015200341f0016a200341c0156a10ab01024020032802f001450d00410021020c010b20032802f40121020b02402002417f200120076a220720072001491b2201720d00200341d0086a410110f3020c020b02402012417f200120026a220220022001491b4d0d00200341d0086a410310f3020c020b0240200a4280c8afa02556200c420052200c501b0d00200341d0086a410510f3020c020b200341e0016a2012ad42004280a0cb9801420010e80820034190136a200341b00e6a10e702200341c0156a200328029013220120032802981310e902200341d8156a290300210b20032802e015210220032903d015210f20032903e001220e4280e0cdb8eb057c220d200e54ad2110200341e8016a290300212820032902e41521290240200328029413450d002001102e0b200b420020021b210e200f420020021b210f202820107c210b02402002450d00202942ffffff3f83500d002002410120021b102e0b024002400240417f200d200f85200b200e8584420052200d200f542202200b200e54200b200e511b1b41016a0e03010200010b200341c0156a200341b00e6a200d200f7d200b200e7d2002ad7d10c30220032d00c0154106460d01200341d0086a410610f3020c030b200341d0016a200341b00e6a200f200d7d200e200b7d200f200d54ad7d10fb010b20034190136a200341b00e6a10c802200341c0156a200328029013220720032802981310c902200341e0156a290300420020032903c01542015122021b2110200341d8156a2201290300420020021b2128200341d0156a290300420020021b210e20032903c815420020021b210f0240200328029413450d002007102e0b42f0d0c9abc6add9b1f400200341b00e6a427f200f20287c22282028200f542202200e20107c2002ad7c220f200e54200f200e511b22021b220e200a200e200a54427f200f20021b220e200c54200e200c511b22021b220a200e200c20021b220c411f1085062001200b370300200341e8156a2012360200200341e4156a20113602002003200d3703d0152003200c3703c8152003200a3703c015200320083602e01520034190136a200341b00e6a10e7022003280290132202200328029813200341c0156a10b9050240200328029413450d002002102e0b0240201141ffffff3f71450d002008102e0b200341063a00d0080c380b200341023a00d0080b0240201141ffffff3f71450d002008102e0b20032d00d00822024106460d3620032f00d108210120032d00d3082107200020032902d408370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c580b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c01520034190136a200341c0156a10c102200341800c6a41086a20034199136a290000370300200341800c6a41106a200341a1136a290000370300200341800c6a41186a200341a9136a29000037030020032003290091133703800c20032d0090134101460d0d200341b00e6a41186a200341800c6a41186a290300370300200341b00e6a41106a200341800c6a41106a290300370300200341b00e6a41086a200341800c6a41086a290300370300200320032903800c3703b00e200341c0156a200341b00e6a10e70220032802c015220120032802c815108f022102024020032802c415450d002001102e0b02402002450d00200341b00e6a10e802200341063a00b00a0c350b200341b00a6a410710f30220032d00b00a4106460d340c330b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c01520034190136a200341c0156a10c10220032d0090134101460d0b20034190136a41086a280200210220034190136a410c6a280200210120034190136a41106a280200210720034190136a41146a290200210a20032d009113210620032f019213210420032802941321052003200341ac136a35020020034190136a41206a31000042208684220b3e00cb0e200341cf0e6a200b4220883c00002003200a3700c30e200320073600bf0e200320013600bb0e200320023600b70e200320053600b30e200320043b00b10e200320063a00b00e200341980c6a22024200370300200341800c6a41106a22054200370300200341800c6a41086a22014200370300200342003703800c200341b00a6a418ef9c00041101081022001200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a1081022002200341c0156a41086a290000370300200520032900c015370300200341b40a6a41003a0000200341003602b00a200341b0026a200341800c6a4120200341b00a6a4105410010ca04024020032802b002450d00200320032802b4022202410520024105491b3602c4152003200341b00a6a3602c015200341a8026a200341c0156a10ab0120032802a8020d0020032802ac0220084d0d00200341f0066a410e10f3020c300b200341a0026a200341b00e6a10eb0220032802a002450d0a20032802a4022109200341c0066a22024200370300200341a8066a41106a22014200370300200341a8066a41086a22074200370300200342003703a806200341e8056a418ef9c00041101081022007200341e8056a41086a290300370300200320032903e8053703a806200341a8046a41c7c3cb0041071081022002200341a8046a41086a290300370300200120032903a804370300200341c0156a200341a8066a10f10220032802c0152201410820011b21044100210202400240024020032902c415420020011b220a422088a722010e020201000b4100210203402001410176220620026a210720072002200420074106746a41206a200341b00e6a412010ec084101481b2102200120066b220141014b0d000b0b200420024106746a41206a200341b00e6a412010ec084521020b0240200a42ffffff1f83500d002004102e0b02402002450d00200341f0066a410a10f3020c300b200341a80a6a22024200370300200341900a6a41106a22014200370300200341900a6a41086a22074200370300200342003703900a200341b00a6a418ef9c00041101081022007200341b00a6a41086a290000370300200320032900b00a3703900a200341d0086a41a8f9c00041091081022002200341d0086a41086a290000370300200120032900d008370300200341c0156a200341900a6a10f10220032802c0152202410820021b210602400240024020032902c415420020021b220a422088a72201450d00200641206a2102200141067441406a41067641016a210741002101034002402002200341b00e6a412010ec080d000240200a42ffffff1f83500d002006102e0b200341f0066a410b10f3020c340b200241c0006a21022007200141016a2201470d000b200a42ffffff1f8350450d010c020b200a42ffffff1f83500d010b2006102e0b200341c0156a200341b00e6a4280a094a58d1d420010c302024020032d00c0154106470d00200341cf0e6a310000210a20033500cb0e210b20032900c30e210c20032800bf0e210720032800bb0e210620032800b70e210420032800b30e210820032f00b10e211120032d00b00e2112200341d0086a10ec0220032802d80822012009490d0a0240200120032802d408470d00200141016a22022001490d41200141017422132002201320024b1b22024104200241044b1bad42307e220d422088a7454103742102200da721130240024020010d00200341003602c0150c010b200341c0156a41086a4108360200200320032802d0083602c0152003200141306c3602c4150b20034190136a20132002200341c0156a107d20034198136a28020021022003280290134101460d0520032003280294133602d0082003200241306e3602d4080b20032802d008200941306c6a220241306a2002200120096b41306c10ea081a2002411f6a200b200a42208684220a4220883c00002002200a3e001b200241286a420037030020024280a094a58d1d3703202002200c3700132002200736000f2002200636000b2002200436000720022008360003200220113b0001200220123a00002003200141016a22023602d80820034190136a41086a2002360200200320032903d008220a3703901302400240200aa722020d00200341980c6a4200370300200341800c6a41106a4200370300200341800c6a41086a22024200370300200342003703800c200341b00a6a418ef9c00041101081022002200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a108102200541086a200341c0156a41086a290000370000200520032900c015370000200341800c6a412010ff010c010b200341980c6a4200370300200341800c6a41106a4200370300200341800c6a41086a22014200370300200342003703800c200341b00a6a418ef9c00041101081022001200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a108102200541086a200341c0156a41086a290000370000200520032900c015370000200341800c6a20034190136a10bd052003280294132201450d00200141306c450d002002102e0b200341063a00f0060c320b200341f0066a410c10f3020c2f0b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c01520034190136a200341c0156a10c102200341f0066a41086a20034199136a290000370300200341f0066a41106a200341a1136a290000370300200341f0066a41186a200341a9136a29000037030020032003290091133703f0060240024002400240024002400240024020032d0090134101460d00200341b00e6a41186a200341f0066a41186a290300370300200341b00e6a41106a200341f0066a41106a290300370300200341b00e6a41086a200341f0066a41086a290300370300200320032903f0063703b00e20080e03020301020b41022102200341023a00a8040c060b200320113602f006200341b00e6a411f6a310000210a20032d00b00e210220032f00b10e210120032900b30e210b20032900bb0e210c20032900c30e210d20033500cb0e210e200341d0086a10ec02200341b3136a200a3c000020034190136a411f6a200e3e0000200341a7136a200d3700002003419f136a200c3700002003200b37009713200320013b009513200320023a00941320032802d80821092003200341f0066a36029013410e2108200920114b0d0220034190136a4104722104410021024110210820032802d00821050240024020090e020401000b410021022009210103402001410176220620026a2107200720022005200741306c6a2004412010ec084101481b2102200120066b220141014b0d000b0b2005200241306c6a2004412010ec080d02200920024d0d0d2005200241306c6a2201290320210a200141286a290300210b2001200141306a20092002417f736a41306c10ea081a20032009417f6a3602d808200341c8026a2004200a200b10fb01200341c0156a41086a220241043a0000200341c9156a2004290000370000200341d1156a200441086a290000370000200341d9156a200441106a290000370000200341e1156a200441186a2900003700002003410c3a00c015200341c0156a10fe0120034190136a41086a20032802d808360200200320032903d008220a370390130240200aa722010d00200341800c6a41186a22014200370300200341800c6a41106a22074200370300200341800c6a41086a22064200370300200342003703800c200341b00a6a418ef9c00041101081022006200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a10810220012002290000370300200720032900c015370300200341800c6a412010ff010c330b200341800c6a41186a22074200370300200341800c6a41106a22064200370300200341800c6a41086a22044200370300200342003703800c200341b00a6a418ef9c00041101081022004200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a419ef9c000410a10810220072002290000370300200620032900c015370300200341800c6a20034190136a10bd052003280294132202450d32200241306c450d322001102e0c320b200341c0156a200341b00e6a410010f00220032d00c0154101460d02200341c0156a41086a41043a0000200341c9156a20032903b00e370000200341d1156a200341b00e6a41086a290300370000200341d9156a200341c00e6a290300370000200341e1156a200341c80e6a2903003700002003410c3a00c015200341c0156a10fe010c310b200341b00e6a411f6a310000210a20032d00b00e210120032f00b10e210720032900b30e210b20032900bb0e210c20032900c30e210d20033500cb0e210e200341900a6a41186a22024200370300200341900a6a41106a22064200370300200341900a6a41086a22044200370300200342003703900a200341b00a6a418ef9c00041101081022004200341b00a6a41086a290000370300200320032900b00a3703900a200341d0086a41a8f9c00041091081022002200341d0086a41086a290000370300200620032900d008370300200341c0156a200341900a6a10f10220032802c015210220032902c415210f20034190136a411f6a200a3c00002003200e3e00ab132003200d3700a3132003200c37009b132003200b37009313200320073b009113200320013a0090132002410820021b210402400240200f420020021b220a422088a72205450d00200441206a2107200541067441406a41067641016a210641002102410021010340200720026a20034190136a412010ec08450d02200241c0006a21022006200141016a2201470d000b0b0240200a42ffffff1f83500d002004102e0b200341a8046a411010f3020c030b200420026a220241186a290300210b200241106a290300210c2002200241c0006a2001417f7320056a41067410ea081a200341b8026a20034190136a200c200b10fb01200341c0156a41086a220241043a0000200341c0156a41096a200329039013370000200341d1156a20034190136a41086a290300370000200341d9156a20034190136a41106a290300370000200341e1156a20034190136a41186a2903003700002003410c3a00c015200341c0156a10fe0120032004360290132003200a4280808080707c220a37029413200341800c6a41186a22014200370300200341800c6a41106a22074200370300200341800c6a41086a22064200370300200342003703800c200341b00a6a418ef9c00041101081022006200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a41a8f9c000410910810220012002290000370300200720032900c015370300200341800c6a20034190136a10f202200a42ffffff1f83500d302004102e0c300b024020032802d4082202450d00200241306c450d0020032802d008102e0b200341a8046a200810f3020c010b200341a8046a411010f3020b20032d00a80422024106460d2e0b20032f00a904210120032d00ab042107200020032902ac04370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c550b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c01502400240200341c0156a10a7050d004200210e410121010240200841ff01710e03022d002d0b2012450d2b2011102e0c2b0b410221014200210e200841ff01714102470d2a2012450d2a2011102e0c2a0b2003200b3e00ab13200341af136a200b4220883c000020032012360097132003201136009313200320084110763b009113200320084108763a0090132003200a3e009b132003200c3700a3132003200a4220883e009f13200341980c6a22024200370300200341800c6a41106a22014200370300200341800c6a41086a22074200370300200342003703800c200341b00a6a418ef9c00041101081022007200341b00a6a41086a290000370300200320032900b00a3703800c200341c0156a41a8f9c00041091081022002200341c0156a41086a290000370300200120032900c015370300200341b40a6a41003a0000200341003602b00a200341e0026a200341800c6a4120200341b00a6a4105410010ca040240024020032802e002450d00200320032802e4022202410520024105491b3602c4152003200341b00a6a3602c015200341d8026a200341c0156a10ab01201341ff017141004720032802d8024520032802dc0241004771730d010c2a0b201341ff0171450d290b200341c0156a411110f30220033500c11520033300c51520033100c7154210868442208684210d200341c8156a280200210220032d00c01521014201210e0c2a0b200341c0156a41286a2001280200360200200341c0156a41206a2006290300370300200341c0156a41186a2004290300370300200341c0156a41106a2005290300370300200341c0156a41086a2009290300370300200320032903e0103703c015200341c0156a10a7050d04200341b00a6a418ef9c0004110108102200341c0156a41fbafc90041061081024120102c2202450d502003422037029413200320023602901320034190136a200341b00a6a4110107420034190136a200341c0156a411010742003280298132202417f4c0d3c20032802901321010240024020020d00410121070c010b2002102c2207450d510b20072001200210e9082101200341f0066a41086a20034190136a41086a22162802002207360200200341a8046a41026a2206200341c0156a41026a2d00003a00002003200329039013220a3703f006200320032f00c0153b01a804200341940c6a2007360200200320023602880c200320023602840c200320013602800c2003200a37028c0c200341003a009c0c2003410b3602980c2003419f0c6a20062d00003a0000200320032f01a8043b009d0c200341c0156a200341800c6a10fa020240200341c0156a41c0006a2802002213450d00200341900a6a41106a2108200341c8066a41106a2109034020034190136a41386a200341c0156a41386a29030037030020034190136a41306a200341c0156a41306a29030037030020034190136a41286a200341c0156a41286a29030037030020034190136a41206a200341c0156a41206a29030037030020034190136a41186a2218200341c0156a41186a29030037030020034190136a41106a2219200341c0156a41106a2903003703002016200341c0156a41086a290300370300200320032903c0153703901320132003280288164105746a211520032802841621142013210202400240024003400240024002400240200222062015460d00200341c8066a41186a420037030020094200370300200341c8066a41086a22024200370300200342003703c806200341d0086a418ef9c00041101081022002200341d0086a41086a2211290300370300200320032903d0083703c806200341b00a6a41c7c3cb004107108102200941086a200341b00a6a41086a2212290300370300200920032903b00a370300200341b00e6a200341c8066a10f10220032802b00e2201410820011b21054100210202400240024020032902b40e420020011b220a422088a722010e020201000b4100210203402001410176220420026a210720072002200520074106746a41206a2006412010ec084101481b2102200120046b220141014b0d000b0b200520024106746a41206a2006412010ec084521020b0240200a42ffffff1f83500d002005102e0b20020d05200341900a6a41186a420037030020084200370300200341900a6a41086a22024200370300200342003703900a200341b00a6a418ef9c000411010810220022012290000370300200320032900b00a3703900a200341d0086a41a8f9c0004109108102200841086a2011290000370000200820032900d008370000200341b00e6a200341900a6a10f10220032802b00e2202410820021b210420032902b40e420020021b220a422088a72201450d01200441206a2102200141067441406a41067641016a2107410021010340024020022006412010ec080d00200a42ffffff1f83500d072004102e0c070b200241c0006a21022007200141016a2201470d000b200a42ffffff1f8350450d020c030b200341b00e6a41186a2018290300370300200341b00e6a41106a2019290300370300200341b00e6a41086a201629030037030020032003290390133703b00e200341b00e6a10e802201441ffffff3f71450d060c050b200a42ffffff1f83500d010b2004102e0b200641206a2102200341e8026a200610eb0220032802e8020d000b0b201441ffffff3f71450d010b2013102e0b200341c0156a200341800c6a10fa0220032802801622130d000b0b024020032802840c450d0020032802800c102e0b0240200341900c6a280200450d00200328028c0c102e0b200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c530b20020d4f0c3b0b2005200741b8b2c0001056000b2006200741b8b2c0001056000b20032802d008210220032802d4082101200341c8156a200341ec106a280200360200200320032902e4103703c01520022001200341c0156a41a8e9c70041b8e9c700103e000b2000420037002420004200370308200041206a41023a0000200041186a41003a0000200042013703000c4e0b200220091046000b200920011045000b200341f0066a410910f3020c240b41022102200341023a00f0060c240b200341023a00b00a0c250b410221020c270b200341c0156a410510c0060c280b410121020c320b410221010c350b200341d8006a200341b00e6a200d200c10cb02200341c0156a41186a200341d8006a41186a290300370300200320032903683703d0152003200341d8006a41086a2903003703c815200320032903583703c0152003200341c0156a3602800c200341800c6a10cc02200341d0086a41086a200341f0106a220141086a290300370300200341063a00800c200320012903003703d0084200210d41002101410121064200210c0c320b200341800c6a410110bc060c300b2000420037002420004200370308200041206a41023a0000200041186a41003a0000200042013703000c420b410221010c360b200341386a200341b00e6a200d200c10fb01200341063a00e0100c330b200341e0106a410110bc060c310b200341e0106a410110bc060c350b200341023a00b0080c390b4184b4c400412741acb4c4001039000b41b3d6c800413041e4d6c8001039000b200320032800e0103602b00e2003200341e3106a2800003600b30e200041186a41003a000020004200370308200020032802b00e3600192000411c6a20032800b30e360000200041206a41023a0000200042013703000c3a0b200341d4156a4101360200200342013702c415200341c4e2cc003602c015200341043602e4102003200341e0106a3602d0152003200341d0086a3602e010200341c0156a4198e9c7001044000b200341d4156a4101360200200342013702c415200341c4e2cc003602c015200341043602e4102003200341e0106a3602d0152003200341d0086a3602e010200341c0156a4188e9c7001044000b41fee7c70041e90041f8e8c700105d000b200341c0156a41086a200341e0106a41086a280200360200200320032903e0103703c01541fee7c70041e900200341c0156a41f4a7c70041e8e8c700103e000b200341c0156a41386a200141c0006a290300370300200341c0156a41306a200141386a290300370300200341c0156a41286a200141306a290300370300200341c0156a41206a200141286a290300370300200341c0156a41186a200141206a290300370300200341c0156a41106a200141186a290300370300200341c0156a41086a200141106a2903003703002003200141086a2903003703c01520034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c6060c350b200341c0156a41386a200141c0006a290300370300200341c0156a41306a200141386a290300370300200341c0156a41286a200141306a290300370300200341c0156a41206a200141286a290300370300200341c0156a41186a200141206a290300370300200341c0156a41106a200141186a290300370300200341c0156a41086a200141106a2903003703002003200141086a2903003703c01520034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c0020c340b200141c8006a290300210f200141c0006a29030021102001413c6a2802002117200141386a280200211a200141306a290300210d2001412c6a28020021182001412a6a2f010021152001411c6a290200210e200141186a2802002107200141146a2802002113200141106a28020021112001410c6a28020021122001410a6a2f01002114200141086a2d00002106200141246a350200210a200141286a310000210b20012d0029211920012d00092116200341800c6a41286a2201200241286a280200360200200341800c6a41206a2204200241206a290200370300200341800c6a41186a2205200241186a290200370300200341800c6a41106a2209200241106a290200370300200341800c6a41086a2208200241086a290200370300200320022902003703800c200a200b42208684210c0240024002400240024020060e050001020304000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac0420034194c3cb003602a8042003200341a8046a3602d015200341c0156a41889cc4001044000b200341c0156a41286a2001280200360200200341c0156a41206a2004290300370300200341c0156a41186a2005290300370300200341c0156a41106a2009290300370300200341c0156a41086a2008290300370300200320032903800c3703c01520034190136a200341c0156a10c102200341c8066a41086a20034199136a290000370300200341c8066a41106a200341a1136a290000370300200341c8066a41186a200341a9136a29000037030020032003290091133703c806024002400240024002400240024020032d0090134101460d00200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a02400240024020130d00200341c0156a4104108e04200341c0156a41086a28020021020c010b201341e400490d01200341c0156a4105108e04200341c8156a28020021020b20032903c015210a2007108c042007102e0c020b200320133602e810200320113602e410200320123602e010200341c0156a41186a200341900a6a41186a290300370300200341c0156a41106a200341900a6a41106a290300370300200341c0156a41086a2201200341900a6a41086a290300370300200320032903900a3703c01520034190136a200341e0106a200341c0156a108d042003419c136a2802002102200329029413210a02402003280290134101460d00200120023602002003200aa722043602c415200341b1c5cb003602c015200341013b01cc15200341a8066a200341c0156a10900420034120360294132003200341a8066a36029013200341c0156a20034190136a1093010240024020032d00c0154101470d00200341e8086a4200370300200341e0086a4200370300200341d8086a4200370300200342003703d0080c010b200341e8086a200341d9156a290000370300200341e0086a200341d1156a290000370300200341d8086a200341c9156a290000370300200320032900c1153703d0080b200341003602c815200342013703c0152007200341c0156a10900220032802c8152105024020032802c415450d0020032802c015102e0b20034190136a200741b00210e9081a200341b00a6a41186a200341d0086a41186a290300370300200341b00a6a41106a200341d0086a41106a290300370300200341b00a6a41086a200341d0086a41086a290300370300200320032903d0083703b00a4110102c2201450d3b200141f8f7c60036020c2001410136020820014281808080103702004110102c2202450d3b20024190f8c60036020c20024101360208200242818080801037020020012001280200417f6a2206360200024020060d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22062006280200417f6a220636020020060d002001102e0b02400240200228020820034190136a200228020c28020c1101000d0020034180116a41023a0000200341f8106a41003a000020022002280200417f6a22013602004200210b200342003703e810200342013703e010024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b20034190136a10dc02410121060c010b200341c0156a20034190136a41b00210e9081a200341ba0e6a200341b80a6a290300370100200341c20e6a200341c00a6a290300370100200341ca0e6a200341c80a6a290300370100200341d00e6a200341ce0a6a29010037010020034180023b01b00e200320032903b00a3701b20e200320023602d80e200341e0106a200341c0156a200341b00e6a10dd0220032903e010420151210620032903e810210b0b20034188116a280200210220034180116a290300210e200341f0106a290300210c200328028c112101024020060d00410021064200210d200ba70d044200210b0c060b410121060240200b4201510d00200341f8106a290300210d0c060b427f2005ad42e8077e42b0b182067c220b200c7c220c200c200b541b210c4200210d0c040b2007108c042007102e4200210b4200210d0c050b2007108c042007102e4202210a0b4200210b0240201141ffffff3f710d004200210d0c040b2012102e4200210d0c030b427f2005ad42e8077e42b0b182067c220b200c7c220c200c200b541b210c0b4201210b0b0240200a4280808080f0ffffff0783500d002004102e0b2007102e2006450d01200e210a0b2000200b3703082000412c6a2001360200200041286a2002360200200041206a200a370300200041186a200d370300200041106a200c370300200042013703000c370b2000200b370308200041186a200d370300200041106a200c370300200042003703000c360b200ba72102200aa7210620034190136a41286a200128020036020020034190136a41206a200429030037030020034190136a41186a200529030037030020034190136a41106a200929030037030020034190136a41086a2008290300370300200320032903800c37039013200341e0106a20034190136a10c102200341a8066a41086a200341e9106a290000370300200341a8066a41106a200341f1106a290000370300200341a8066a41186a200341f9106a290000370300200320032900e1103703a80602400240024020032d00e0104101470d0041022101200341e0156a41023a000041002107200341d8156a41003a00004200210a200342003703c815200342013703c01502402015411074201941087472200272450d002006102e0b201141ffffff3f71450d012012102e0c010b200341c8066a41186a200341a8066a41186a290300220a370300200341c8066a41106a200341a8066a41106a290300220b370300200341c8066a41086a200341a8066a41086a290300220c370300200320032903a806220f3703c806200341e0106a41186a200a370300200341e0106a41106a200b370300200341e0106a41086a200c3703002003200f3703e010200320133602b80e200320113602b40e200320123602b00e2003419c136a201836020020034190136a41086a20154110742019410874722002723602002003200636029413200320163a009113200341003a009013200341c0156a200341e0106a2014200341b00e6a2007200ea7200e422088a720034190136a200d108f0420032903c815210a20032903c0154201520d01200341e0156a2d00002101200341c0156a41186a2d000021070b200320032800d9153602e8062003200341c0156a411c6a2800003600eb06200341c0156a41106a290300210b20032f00e115210220032d00e315210620032902e415210c20032802ec152104200041186a20073a0000200041106a200b3703002000200a370308200020032802e8063600192000411c6a20032800eb063600002000412c6a2004360200200041246a200c370200200020063a0023200020023b0021200041206a20013a0000200042013703000c360b200320032800d9153602e8062003200341c0156a411c6a2800003600eb06200341c0156a41106a290300210b200041186a200341c0156a41186a2d00003a0000200041106a200b3703002000200a370308200020032802e8063600192000411c6a20032800eb06360000200042003703000c350b20034190136a41286a200128020036020020034190136a41206a200429030037030020034190136a41186a200529030037030020034190136a41106a200929030037030020034190136a41086a2008290300370300200320032903800c37039013200341e0106a20034190136a10c102200341a8066a41086a200341e9106a290000370300200341a8066a41106a200341f1106a290000370300200341a8066a41186a200341f9106a290000370300200320032900e1103703a80602400240024020032d00e0104101470d0041022102200341e0156a41023a000041002101200341d8156a41003a00004200210a200342003703c815200342013703c015200d42ffffff3f83500d012018102e0c010b200341c8066a41186a200341a8066a41186a290300220a370300200341c8066a41106a200341a8066a41106a290300220b370300200341c8066a41086a200341a8066a41086a2903002228370300200320032903a80622293703c806200341e0106a41186a200a370300200341e0106a41106a200b370300200341e0106a41086a2028370300200320293703e0102003200d3702b40e200320183602b00e20034190136a41206a200c4220883c000020034190136a411c6a200c3e0200200341a4136a200e37020020034190136a41106a20073602002003419c136a201336020020034190136a41086a20113602002003201236029413200320143b019213200320163a009113200341013a009013200341c0156a200341e0106a2015200341b00e6a201a20172010a720034190136a200f108f0420032903c815210a20032903c0154201520d01200341c0156a41206a2d00002102200341c0156a41186a2d000021010b200320032800d9153602f0062003200341c0156a411c6a2800003600f306200341c0156a41106a290300210b20032f00e115210720032d00e315210620032902e415210c20032802ec152104200041186a20013a0000200041106a200b3703002000200a370308200020032802f0063600192000411c6a20032800f3063600002000412c6a2004360200200041246a200c370200200020063a0023200020073b0021200041206a20023a0000200042013703000c350b200320032800d9153602f0062003200341c0156a411c6a2800003600f306200341c0156a41106a290300210b200041186a200341c0156a41186a2d00003a0000200041106a200b3703002000200a370308200020032802f0063600192000411c6a20032800f306360000200042003703000c340b2003200c3e008b072003418f076a200c4220883c00002003200e37008307200320073600ff06200320133600fb06200320113600f706200320123600f306200320143b00f106200320163a00f006200341c0156a41286a2001280200360200200341c0156a41206a2004290300370300200341c0156a41186a2005290300370300200341c0156a41106a2009290300370300200341c0156a41086a2008290300370300200320032903800c3703c01520034190136a200341c0156a10c102200341c8066a41086a20034199136a290000370300200341c8066a41106a200341a1136a290000370300200341c8066a41186a200341a9136a29000037030020032003290091133703c8060240024002400240024020032d0090134101460d00200341d0086a41186a200341c8066a41186a290300370300200341d0086a41106a200341c8066a41106a290300370300200341d0086a41086a200341c8066a41086a290300370300200320032903c8063703d0080240201541024f0d00200341f00b6a4101108e040c020b0240200d42ffffffff0f560d00200341f00b6a4104108e040c020b0240200d422088a741e400490d00200341f00b6a4105108e040c020b2003200d3702e410200320183602e010200341c0156a41186a200341d0086a41186a290300370300200341c0156a41106a200341d0086a41106a290300370300200341c0156a41086a2201200341d0086a41086a290300370300200320032903d0083703c01520034190136a200341e0106a200341c0156a108d042003419c136a2802002102200329029413210a024002402003280290134101460d0020012002360200200320153b01cc152003200aa722013602c415200341b1c5cb003602c015200341a8066a200341c0156a10900420034120360294132003200341a8066a36029013200341c0156a20034190136a109301200a422088210a0240024020032d00c0154101470d00200341c80a6a4200370300200341c00a6a4200370300200341b80a6a4200370300200342003703b00a0c010b200341c80a6a200341d9156a290000370300200341c00a6a200341d1156a290000370300200341b80a6a200341c9156a290000370300200320032900c1153703b00a0b200aa72102200341a8066a41186a200341f0066a41186a290000370300200341a8066a41106a200341f0066a41106a290000370300200341a8066a41086a200341f0066a41086a290000370300200320032900f0063703a806200341c8066a200341b00a6a200341a8066a109104200341c0156a20032802c806220720032802d006109204200341900a6a41086a2206200341c0156a41086a290300370300200341900a6a41106a2204200341c0156a41106a290300370300200341e0106a41086a2205200341e4156a290200370300200341e0106a41106a2209200341ec156a290200370300200341e0106a41186a2208200341f4156a290200370300200341e0106a41206a2211200341fc156a290200370300200341e0106a41286a221220034184166a280200360200200320032903c0153703900a200320032902dc153703e010024020032802d8152213450d00200341b0086a41106a2004290300370300200341b0086a41086a2006290300370300200341b00e6a41086a2005290300370300200341b00e6a41106a2009290300370300200341b00e6a41186a2008290300370300200341b00e6a41206a2011290300370300200341b00e6a41286a2012280200360200200320032903900a3703b008200320032903e0103703b00e024020032802cc06450d002007102e0b200341a8046a41166a200341b0086a41106a290300220a370100200341a8046a410e6a200341b0086a41086a290300370100200341e8056a41166a2207200a370100200341e8056a41106a200341a8046a41106a290100370300200320032903b0083701ae04200341e8056a41086a200341a8046a41086a290100370300200320032901a8043703e80520034190136a41106a2206200729010037030020034190136a41086a200341e8056a410e6a290100370300200320032901ee0537039013200320133602a813200341d4136a200341d80e6a280200360200200341cc136a200341d00e6a290300370200200341c4136a200341c80e6a290300370200200341bc136a200341b00e6a41106a290300370200200341b4136a200341b00e6a41086a290300370200200341ac136a20032903b00e37020002402006280200201a470d00200341a4136a2802002017460d030b200341f00b6a410b108e040c050b024020032802cc06450d002007102e0b200341f00b6a4108108e040c050b200341f00b6a41086a20023602002003200a3703f00b0c050b0240200341b4136a2207200341d0086a412010ec08450d00200341f00b6a4109108e040c030b20034188046a200720032903901320034190136a41086a29030010fb01200341e8056a4195fec6004108108102200341a8046a41f4f3c30041091081024120102c2207450d35200342203702e410200320073602e010200341e0106a200341b00a6a41201074200320032802e010220720032802e810220610a3013703b00e200341cc156a200720066a360200200320073602c8152003200341b00e6a41086a3602c4152003200341b00e6a3602c015200341b0086a200341c0156a107c024020032802e410450d002007102e0b4120102c2207450d35200342203702b40e200320073602b00e200341b00e6a200341f0066a41201074200341e0106a20032802b00e220720032802b80e220610d803200341cc156a200720066a360200200320073602c8152003200341f0106a3602c4152003200341e0106a3602c015200341900a6a200341c0156a107c024020032802b40e450d002007102e0b20032802b808220620032802980a22046a41206a2207417f4c0d210240024020070d00410121050c010b2007102c2205450d360b200341003602c815200320073602c415200320053602c015200341c0156a200341e8056a41101074200341c0156a200341a8046a41101074200341c0156a20032802b008220720061074200341c0156a20032802900a220620041074024020032802940a450d002006102e0b024020032802b408450d002007102e0b20032802c015220720032802c81510ff01024020032802c415450d002007102e0b200341f0066a109804200341cd156a200341d0086a41086a290300370000200341d5156a200341d0086a41106a290300370000200341dd156a200341d0086a41186a290300370000200341e5156a20032903b00a370000200341ed156a200341b00a6a41086a290300370000200341f5156a200341b00a6a41106a290300370000200341fd156a200341b00a6a41186a290300370000200341033a00c415200341143a00c015200320032903d0083700c515200341a8166a201a360200200341ac166a20173602002003419d166a200341f0066a41186a29000037000020034195166a200341f0066a41106a2900003700002003418d166a200341f0066a41086a29000037000020034185166a20032900f006370000200341c0156a10fe01200341063a00f00b024020032802ac1341ffffff3f71450d0020032802a813102e0b200241ffffff3f71450d042001102e0c040b200341023a00f00b0b200d42ffffff3f83500d022018102e0c020b20032802ac1341ffffff3f71450d0020032802a813102e0b200241ffffff3f71450d002001102e0b024020032d00f00b22024106460d0020032f00f10b210120032d00f30b2107200020032902f40b370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c340b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c330b200341c0156a200141046a41c80010e9081a20034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10cf020c320b200341c0156a200141086a41a80210e9081a20034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a1080040c310b200141106a28020021232001410c6a2802002131200141086a280200211d200141066a2f0100210420012f01042107200241246a2d0000211c200241226a2f010021092002411a6a290100210b200241196a2d00002108200241186a2d00002111200241166a2f01002112200241156a2d00002113200241146a2d00002115200241106a28020021142002410c6a2802002116200241086a2802002118200241066a2f01002119200241056a2d0000211a200241046a2d00002101200241026a2f0100211720022d0001212220022d00002105200341f00b6a41026a2206200241276a2d00003a00002003200241256a2f00003b01f00b2002280228210202400240024002400240024002400240024002400240024002402007417f6a0e03000102000b024002400240024002400240024020050e03000102000b4100210441022107200121060240024020220e03000107000b4100210720012106410021040c060b41012107200121060c050b4101210441022106024020010e03020005020b41012106410121040c040b410221044102210620010e03000103000b410021060c010b410121060b0b200228020041016a221b41014d0d0b200341e4156a201c360200200341e2156a20093b0100200341da156a200b370100200341d9156a20083a0000200341d8156a20113a0000200341d6156a20123b0100200341d5156a20133a0000200341d4156a20153a0000200341d0156a2014360200200341cc156a2016360200200341c8156a20183602002002201b360200200320023602e815200320193b01c6152003201a3a00c515200320063a00c415200320173b01c215200320073a00c115200320043a00c015201d202341b0026c6a2107200341c0156a10a7052106024020230d004200210a201d21010c050b200341e0106a410472212120060d024200210a41002106201c2130201c2120201c2132201d210403402004280200211b20034190136a200441046a221e41ac0210e9081a200341c0156a201e41ac0210e9081a0240201b411c470d00200441b0026a21010c080b200341e0106a200341c0156a41ac0210e9081a200341b00e6a200341e0106a41ac0210e9081a200341800c6a200341b00e6a41ac0210e9081a2003201b3602e0102021200341800c6a41ac0210e9081a200341d0086a200341e0106a109704200341c0156a200341e0106a41b00210e9081a0240024002400240024020050e03000102000b4100211f4102211b2001211e0240024020220e03000105000b4100211b2001211e4100211f0c040b4101211b2001211e0c030b4101211f4102211e203221200240024020010e03000104000b4100211e203221200c020b4101211e203241807e71201c72222021324101211f0c020b4102211f203021204102211e02400240024020010e03000104000b4100211e0c010b203041807e71201c7221304101211e0b203021200b0b200228020041016a222441014d0d0c20022024360200200320023602b813200320203602b413200320093b01b2132003200b3701aa13200320083a00a913200320113a00a813200320123b01a613200320133a00a513200320153a00a413200320143602a0132003201636029c132003201836029813200320193b0196132003201a3a0095132003201e3a009413200320173b0192132003201b3a0091132003201f3a009013200341b00e6a200341c0156a20034190136a10dd020240024020032903b80e4201510d0020032903d008210c0c010b20032903d008220c20032903c00e220d200d200c561b210c0b427f200a200c7c220c200c200a541b210a024020032903b00e4201510d00200641016a2106200441b0026a22042007470d010c050b0b200441b0026a21010c080b200341f0066a41026a20062d00003a0000200320032f01f00b3b01f006024002400240024002400240024020050e03000102000b41002106410221070240024020220e03000107000b41002107410021060c060b410121070c050b410121062001210541022101024020050e03020005020b41012101410121060c040b41022106200121054102210120050e03000103000b410021010c010b410121010b0b200228020041016a220541014d0d0a200341e4156a201c360200200341e2156a20093b0100200341da156a200b370100200341c0156a41196a20083a0000200341c0156a41186a20113a0000200341d6156a20123b0100200341d5156a20133a0000200341d4156a220920153a0000200341c0156a41106a2014360200200341cc156a22082016360200200341c0156a41086a201836020020022005360200200320023602e815200320193b01c6152003201a3a00c515200320013a00c415200320173b01c215200320073a00c115200320063a00c01520034190136a200341c0156a10c102200341c8066a41086a220120034199136a290000370300200341c8066a41106a2207200341a1136a290000370300200341c8066a41186a220620034190136a41196a29000037030020032003290091133703c8060240024002400240024020032d0090134101460d00200341900a6a41186a2006290300220a370300200341900a6a41106a2007290300220b370300200341900a6a41086a2001290300220c370300200320032903c806220d3703900a2008200c3702002009200b370200200341dc156a200a370200200341b1c5cb003602c0152003200d3702c415200320043b01e4154112102c2201450d3d2003421237029413200320013602901320034190136a41b1c5cb004110107420034190136a200341c0156a41047241201074200320043b01e01020034190136a200341e0106a41021074200341a8066a200328029013220120032802981310b0010240200328029413450d002001102e0b20034120360294132003200341a8066a36029013200341c0156a20034190136a1093010240024020032d00c0154101470d00410021044200210a41002105410021094100210841002111410021124100211341002115410021144100211641002118410021190c010b200341d9156a290000210a200341d8156a2d00002104200341d7156a2d00002105200341d5156a2f00002109200341d4156a2d00002108200341d3156a2d00002111200341cf156a2800002112200341cb156a280000211320032800c715211520032f00c515211420032d00c415211620032d00c315211820032f00c11521190b4110102c2201450d3d200141f8f7c60036020c2001410136020820014281808080103702004110102c2207450d3d20074190f8c60036020c20074101360208200742818080801037020020012001280200417f6a2206360200024020060d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22062006280200417f6a220636020020060d002001102e0b200341f0066a41026a2201200341c0156a41026a2d00003a000020072007280200417f6a2206360200200320032f00c0153b01f006024020060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22062006280200417f6a220636020020060d002007102e0b200341800c6a201d10970420034190136a201d41b00210e9081a200341b00a6a41026a20012d00003a0000200320032f01f0063b01b00a02400240200228020820034190136a200228020c28020c1101000d0020034180116a41023a0000200341f8106a41003a000020022002280200417f6a2201360200200342003703e810200342013703e010024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b20034190136a10dc0220032903800c210a0c010b200341c0156a20034190136a41b00210e9081a200341ca0e6a200a370100200341c90e6a20043a0000200341c80e6a20053a0000200341c60e6a20093b0100200341c50e6a20083a0000200341c40e6a20113a0000200341b00e6a41106a2012360200200341bc0e6a2013360200200341b80e6a2015360200200341d50e6a20032f01b00a3b0000200341d70e6a200341b20a6a2d00003a0000200320143b01b60e200320163a00b50e200320183a00b40e200320193b01b20e20034180023b01b00e200320023602d80e200341e0106a200341c0156a200341b00e6a10dd02024020032903e8104201510d0020032903800c210a0c010b20032903800c220a200341e0106a41106a290300220b200b200a561b210a0b200320032800f9103602a8042003200341fc106a2800003600ab04200a42d0ceae3d7c220b200a54210620034188116a280200210220032903e0104201520d0120034180116a290300210c200320032800ab043600d308200320032802a8043602d008200320032802d0083602b008200320032800d3083600b308200c420888210a200328028c112101200ca72107410121040c020b20022002280200417f6a2201360200024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201d108b02201d102e4200210c410221070c020b200320032800ab043600d308200320032802a8043602d008410021040b427f200b20061b210b201d102e4201210c2004450d010b200320032800b3083600eb05200320032802b0083602e805200041276a200a4230883c0000200041256a200a4220883d00002000200a3e0021200041186a41003a0000200041106a200b3703002000200c370308200020032802e8053600192000411c6a20032800eb053600002000412c6a2001360200200041286a2002360000200041206a20073a0000200042013703000c3c0b200320032800b3083600eb05200320032802b0083602e805200041186a41003a0000200041106a200b37030020004201370308200020032802e8053600192000411c6a20032800eb05360000200042003703000c3b0b20034190136a41246a201c3a000020034190136a41226a20093b010020034190136a411a6a200b37010020034190136a41196a20083a000020034190136a41186a20113a000020034190136a41166a20123b010020034190136a41156a20133a000020034190136a41146a20153a000020034190136a41106a201436020020034190136a410c6a201636020020034190136a41086a2018360200200320193b0196132003201a3a009513200320013a009413200320173b019213200320223a009113200320053a00901320034190136a41256a20032f01f00b3b000020034190136a41276a20062d00003a0000200320023602b813200341e0106a410c6a2023360200200341e0106a41086a20313602002003201d3602e410200320034190136a3602e010200341c0156a200341e0106a10a40520032802b81322022002280200417f6a360200024020032802b81322022802000d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b20032802b81341046a22022002280200417f6a36020020032802b813220241046a2802000d002002102e0b200341d9156a2102200341c0156a41186a2d00002101200341c0156a41106a290300210a20032903c815210b024020032903c0154201520d00200320022800003602f0062003200241036a2800003600f306200341c0156a41206a280200210220032902e415210c20032802ec152107200041186a20013a0000200041106a200a3703002000200b370308200020032802f0063600192000411c6a20032800f3063600002000200736002c2000200c370024200041206a2002360000200042013703000c3b0b200320022800003602f0062003200241036a2800003600f306200041186a20013a0000200041106a200a3703002000200b370308200020032802f0063600192000411c6a20032800f306360000200042003703000c3a0b201c213041002106201c2124201c2132201d21044200210a03402004280200211b20034190136a200441046a221e41ac0210e9081a200341c0156a201e41ac0210e9081a201b411c460d03200341e0106a200341c0156a41ac0210e9081a200341b00e6a200341e0106a41ac0210e9081a200341800c6a200341b00e6a41ac0210e9081a2003201b3602e0102021200341800c6a41ac0210e9081a200341d0086a200341e0106a10970420034190136a200341e0106a41b00210e9081a0240024002400240024020050e03000102000b410021204102211b2001211e0240024020220e03000105000b4100211b2001211e410021200c040b4101211b2001211e0c030b410121204102211e203221240240024020010e03000104000b4100211e203221240c020b4101211e203241807e71201c7222242132410121200c020b41022120203021244102211e02400240024020010e03000104000b4100211e0c010b203041807e71201c7221304101211e0b203021240b0b200228020041016a221f41014d0d092002201f36020002400240200228020820034190136a200228020c28020c1101000d0020022002280200417f6a221b360200200341023a00d00e200341003a00c80e200342003703b80e200342013703b00e0240201b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a221b201b280200417f6a221b360200201b0d002002102e0b20034190136a10dc0220032903d008210c0c010b200341c0156a20034190136a41b00210e9081a200320023602d80a200320243602d40a200320093b01d20a2003200b3701ca0a200320083a00c90a200320113a00c80a200320123b01c60a200320133a00c50a200320153a00c40a200320143602c00a200320163602bc0a200320183602b80a200320193b01b60a2003201a3a00b50a2003201e3a00b40a200320173b01b20a2003201b3a00b10a200320203a00b00a200341b00e6a200341c0156a200341b00a6a10dd02024020032903b80e4201510d0020032903d008210c0c010b20032903d008220c20032903c00e220d200d200c561b210c0b427f200a200c7c220c200c200a541b210a20032903b00e4201510d05200641016a2106200441b0026a22042007470d000b0b200721010b200341c0156a20034190136a41ac0210e9081a0c010b200441b0026a21010b024020072001460d0003402001108b022007200141b0026a2201470d000b0b02402031450d00203141b0026c450d00201d102e0b200341c8156a41063a0000200341113a00c015200341c0156a10fe0120022002280200417f6a22013602002023ad4288b0fa007e200a7c42c8b8fa067c210a20010d032002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a22013602002001450d020c030b200441b0026a21010b20034190136a41206a200341d80e6a290300220b37030020034190136a41186a200341b00e6a41206a290300220c37030020034190136a41106a200341b00e6a41186a29030037030020034190136a41086a200341b00e6a41106a290300370300200320032903b80e37039013200341c0156a41086a200c370300200341c0156a41106a200b3e0200200341113a00c015200320063602c415200641016aad4288b0fa007e210b200341c0156a10fe01024020072001460d0003402001108b022007200141b0026a2201470d000b0b200b200a7c210a02402031450d00203141b0026c450d00201d102e0b200a42c8b8fa067c210a20022002280200417f6a220136020020010d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d010b2002102e0b200320032800eb063600eb05200320032802e8063602e805200041186a41003a0000200041106a200a37030020004201370308200020032802e8053600192000411c6a20032800eb05360000200042003703000c310b00000b200341e8056a41026a22062001410f6a2d00003a0000200341800c6a41086a2204200141206a290200370300200341800c6a41106a2205200141286a290200370300200320012f000d3b01e8052003200141186a2902003703800c200141c8006a290300210d200141c0006a290300210e2002411a6a290100210c200241196a2d00002113200241186a2d00002115200241166a2f01002114200241156a2d00002116200241146a2d00002118200241126a2f01002119200241116a2d0000211a200241106a2d000021172002410e6a2f0100211b2002410d6a2d0000211c2002410c6a2d0000211d2002410a6a2f0100211e200241096a2d0000211f200241086a2d00002120200241066a2f01002121200241056a2d00002122200241046a2d00002123200241026a2f01002124200141d0006a2802002131200141146a2802002108200141106a28020021112001410c6a2d00002109200141386a290300210b200141306a290300210a2002280228210720022d0001211220022d0000210202400240024002400240200141086a2802000e050001020304000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602e410200341a4a7c7003602e0102003200341e0106a3602d015200341c0156a41aca7c7001044000b20072007280200417f6a220136020002400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b201241ff01714101460d02200341c8066a41186a200341a8066a41186a290300370300200341c8066a41106a200341a8066a41106a290300370300200341c8066a41086a200341a8066a41086a290300370300200320032903a8063703c8060c010b024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b200341c8066a41186a200341a8066a41186a290300370300200341c8066a41106a200341a8066a41106a290300370300200341c8066a41086a200341a8066a41086a290300370300200320032903a8063703c8060b200341023a0090130c010b2003201f3a00af06200320203a00ae06200320213b01ac06200320223a00ab06200320233a00aa06200320243b01a8062003201a3a00b706200320173a00b6062003201b3b01b4062003201c3a00b3062003201d3a00b2062003201e3b01b006200320133a00bf06200320153a00be06200320143b01bc06200320163a00bb06200320183a00ba06200320193b01b8062003200c3703c006200341c8066a41186a2202200c370300200341c8066a41106a220120032903b806370300200341c8066a41086a220720032903b006370300200320032903a8063703c806200341900a6a41186a22062002290300370300200341900a6a41106a22022001290300370300200341900a6a41086a22012007290300370300200320032903c8063703900a200341c0156a41186a2006290300370300200341c0156a41106a2002290300370300200341c0156a41086a2001290300370300200320032903900a3703c01520034190136a200341c0156a10b30320032d0090134106460d010b20032802901321022000200329029413370024200041206a2002360000200041186a41003a000020004200370308200042013703000c330b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c320b200341a8046a41026a20062d00003a0000200341e0106a41086a2004290300370300200341e0106a41106a200529030037030020072007280200417f6a2201360200200320032f01e8053b01a804200320032903800c3703e0100240024002400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b41012102201241ff01714101470d01200341d0086a41026a2201200341a8046a41026a2d00003a000020034190136a41086a2207200341e0106a41086a29030037030020034190136a41106a200341e0106a41106a290300370300200320032f01a8043b01d008200320032903e0103703901320090e03020403040b20010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b41022102200341023a00b00a20094102470d0302402008450d002011102e0b410221020c030b200341f0066a41026a20012d00003a0000200341b00e6a41086a2007290300370300200341b00e6a410d6a20034190136a410d6a290000370000200320032f01d0083b01f00620032003290390133703b00e410021020c010b2008450d002011102e0b200341bb066a200341b00e6a41086a290300370000200341a8066a41186a2201200341bd0e6a290000370000200320032f01f0063b01a806200320083600af06200320113600ab06200320032903b00e3700b3062003200341f0066a41026a2d00003a00aa0602402002450d0041012102200341013a00b00a0c010b200341c0156a41186a2001290300370300200341c0156a41106a200341a8066a41106a290300370300200341c0156a41086a200341a8066a41086a290300370300200320032903a8063703c015200341b00a6a200341c0156a10b30320032d00b00a22024106460d010b20032f00b10a210120032d00b30a2107200020032902b40a370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c320b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c310b200341a8046a41026a20062d00003a0000200341b00e6a41086a2004290300370300200341b00e6a41106a2005290300370300200320032f01e8053b01a804200320032903800c3703b00e20072007280200417f6a220136020002400240024002400240024002400240200241ff01710d00024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b201241ff01714101470d022003201f3a00cf06200320203a00ce06200320213b01cc06200320223a00cb06200320233a00ca06200320243b01c8062003201a3a00d706200320173a00d6062003201b3b01d4062003201c3a00d3062003201d3a00d2062003201e3b01d006200320133a00df06200320153a00de06200320143b01dc06200320163a00db06200320183a00da06200320193b01d8062003200c3703e006200341900a6a41186a2202200c370300200341900a6a41106a220120032903d806370300200341900a6a41086a220720032903d006370300200320032903c8063703900a200341e0106a41186a2002290300370300200341e0106a41106a2001290300370300200341e0106a41086a2007290300370300200320032903900a3703e010200a4280a094a58d1d544100200b501b450d01410321020c040b024020010d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0c020b200341d0086a41026a2201200341a8046a41026a2d00003a0000200341c0156a41086a200341b00e6a41086a290300370300200341c0156a41106a200341b00e6a41106a290300370300200320032f01a8043b01d008200320032903b00e3703c0154101210202400240024020090e03000201020b200341f0066a41026a20012d00003a0000200341b00a6a41086a200341c0156a41086a290300370300200341b00a6a410d6a200341c0156a410d6a290000370000200320032f01d0083b01f006200320032903c0153703b00a410021020c010b2008450d002011102e0b200341bb066a200341b00a6a41086a290300370000200341a8066a41186a2201200341bd0a6a290000370000200320032f01f0063b01a806200320083600af06200320113600ab06200320032903b00a3700b3062003200341f0066a41026a2d00003a00aa060240024020020d0020034190136a41186a200129030037030020034190136a41106a200341a8066a41106a29030037030020034190136a41086a200341a8066a41086a290300370300200320032903a80637039013200341c0156a20034190136a10b10320032802c015220120032802c815108f022102024020032802c415450d002001102e0b2002450d014194a4c700ad210a4280808080f002210b4101210741192106410321020c050b4200210a410121024200210b0c050b200341c0156a200341e0106a20034190136a200a200b410110ca02024020032d00c01522024106470d00200341c0156a20034190136a10b10320032802c015220120032802c815108f022102024020032802c415450d002001102e0b2002450d06200341c8156a411736020020034194a4c7003602c415200341013a00c21520034183323b01c01541bca7c7004137200341c0156a41f4a7c7004184a8c700103e000b20032d00c315210120032d00c215210720032d00c115210620032902c415220a42808080807083210b0c040b200341900a6a41186a200341c8066a41186a290300370300200341900a6a41106a200341c8066a41106a290300370300200341900a6a41086a200341c8066a41086a290300370300200320032903c8063703900a0b410221020b4102210741ceeac700ad210a42808080809001210b4119210620094102470d002008450d002011102e41ceeac700ad210a0b0b200020013a0023200020073a0022200020063a0021200041206a20023a0000200041186a41003a0000200042003703082000200b42808080807083200a42ffffffff0f8384370024200042013703000c310b200341c0156a41186a2202200d3703002003200e3703d0152003200a3703c015200320313602e0152003200b3703c81520034190136a200341c0156a10b203200220034190136a41186a290300370300200341c0156a41106a20034190136a41106a290300370300200341c0156a41086a20034190136a41086a29030037030020032003290390133703c015200341b00a6a200341c0156a10b303200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c300b200141f0006a2903002110200141e8006a2903002128200141e0006a290300210c200141d8006a290300210f200141f8006a2802002114200ba72113200aa72101200a422088a72115200341a8046a41026a20062d00003a0000200341b00e6a41086a2004290300370300200341b00e6a41106a200529030037030020072007280200417f6a2206360200200320032f01e8053b01a804200320032903800c3703b00e0240024002400240024002400240200241ff01710d00024020060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b41022102201241ff01710d0141032102200f4280a094a58d1d544100200c501b0d01200b422088a721062001410876210241012107200141ff01710e03020403040b4102210220060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22062006280200417f6a220636020020060d002007102e0b200141ff01714102470d032013450d032015102e0c030b410021070c010b02402013450d002015102e0b0b200341df066a200d3700002003200e3700d706200320313a00e706200320063600d306200320133600cf06200320153600cb06200320023b01c806200320024110763a00ca06024020070d00200341e0106a41186a200341c8066a41186a290300370300200341e0106a41106a200341c8066a41106a290300370300200341e0106a41086a200341c8066a41086a290300370300200320032903c8063703e010200341d0086a41026a2201200341a8046a41026a2d00003a0000200320032f01a8043b01d008200341c0156a41086a2207200341b00e6a41086a290300370300200341c0156a41106a200341b00e6a41106a290300370300200320032903b00e3703c0154101210202400240024020090e03000201020b200341f0066a41026a20012d00003a0000200341b00a6a41086a2007290300370300200341b00a6a410d6a200341c0156a410d6a290000370000200320032f01d0083b01f006200320032903c0153703b00a410021020c010b2008450d002011102e0b200341bb066a200341b00a6a41086a290300370000200341a8066a41186a200341bd0a6a290000370000200320032f01f0063b01a806200320083600af06200320113600ab06200320032903b00a3700b3062003200341f0066a41026a2d00003a00aa060240024020020d0020034190136a41186a200341a8066a41186a29030037030020034190136a41106a200341a8066a41106a29030037030020034190136a41086a200341a8066a41086a290300370300200320032903a80637039013200341c0156a200341e0106a10b10320032802c015220120032802c815108f022102024020032802c415450d002001102e0b2002450d014194a4c700ad210a4280808080f002210b4101210141192107410321020c040b4200210a410121024200210b0c030b200341c0156a20034190136a200341e0106a200f200c410110ca020240024020032d00c01522024106470d00200341c0156a200341e0106a10b10320032802c015220120032802c815108f022102024020032802c415450d002001102e0b2002450d01200341c8156a411736020020034194a4c7003602c415200341013a00c21520034183323b01c01541bca7c7004137200341c0156a41f4a7c7004194a8c700103e000b20032d00c315210620032d00c215210120032d00c115210720032902c415220a42808080807083210b0c030b200341c0156a41186a22022010370300200320283703d0152003200f3703c015200320143602e0152003200c3703c815200341e0106a200341c0156a10b2032002200341e0106a41186a290300370300200341c0156a41106a200341e0106a41106a290300370300200341c0156a41086a200341e0106a41086a290300370300200320032903e0103703c015200341b00a6a200341c0156a10b303200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c320b410121020b4102210141ceeac700ad210a42808080809001210b41192107024020094102470d002008450d002011102e41ceeac700ad210a0b0b200020063a0023200020013a0022200020073a0021200041206a20023a0000200041186a41003a0000200042003703082000200b42808080807083200a42ffffffff0f8384370024200042013703000c2f0b200341a4066a41026a22192001410b6a2d00003a00002003419c066a41046a221a2001411c6a2d00003a0000200320012f00093b01a4062003200141186a28000036029c06200141286a290300210a200141206a290300210c200141086a2d000021042001410c6a2800002111200141106a2800002105200141146a2800002118200141306a290300210b200141386a290300210d200141c0006a290300210e200141c8006a2d0000211b20012d001d211720012f011e211e200341f00b6a41086a221f200141da006a2f00003b0100200341900a6a41086a2221200141e8006a2802003602002003200141cc006a280000360097062003200128004936029406200320012900523703f00b2003200141e0006a2903003703900a200141d0006a2d0000211c200141dc006a2802002120200141ec006a2802002122200141f0006a2802002123200141f4006a280200212420012d0051211d2003200241166a2901003703b00a20032002411c6a2901003701b60a200241246a2802002112200241156a2d00002113200241146a2d00002115200241106a28020021072002410c6a2802002108200241086a2802002109200241046a2802002106200241026a2f010021142002280228210120022d0001211620022d0000210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020040e06000102030405000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602ac0420034194c3cb003602a8042003200341a8046a3602d015200341c0156a41e0f3c0001044000b200341ff106a200a3c0000200341f3106a201a2d00003a00002003200c3700f710200320192d00003a00e210200320032f01a4063b01e010200320183600eb10200320053600e710200320113600e3102003200328029c063600ef102003201e3b00f510200320173a00f4102003200a4238883c00c6152003200a4228883d01c4152003200a4208883e02c0152003201b3a00df152003200e3700d7152003200d3700cf152003200b3700c715200341e3156a2003280097063600002003201d3a00e8152003201c3a00e71520032003280294063602e015200341f1156a201f2f01003b0000200320203600f315200320032903f00b3700e915200341ff156a20212f01003b0000200320032903900a3700f71520034190136a41156a20133a000020034190136a41146a20153a000020034190136a41106a200736020020034190136a410c6a200836020020034190136a41086a200936020020034190136a41246a20123602002003200636029413200320143b019213200320163a009113200320023a00901320034190136a41166a20032903b00a37010020034190136a411c6a20032901b60a370100200320013602b81320034190136a10bb060d04200341f0066a200341e0106a10e00220034190136a200341c0156a20032802f006220220032802f80641d4e2cc00410010e10220032d0090134101470d0520032003280095133600b30820032003280192133602b008200320032800b3083600eb05200320032802b0083602e805200320032d0091133a00800c200320032802e8053600810c200320032800eb053600840c20034199136a2d00002101200341a1136a28000021072003419a136a350100210a2003419e136a330100210b2003418f0c6a200341a0136a3100003c00002003418d0c6a200b3d00002003200a3e00890c200320073602900c200320013a00880c20034190136a200341800c6a10ab03200328029013220720032802981310e40241ff017121010240200328029413450d002007102e0b024020014102460d00200341a8046a410510b0030c140b200341b00e6a41106a200341800c6a41106a280200360200200341b00e6a41086a200341800c6a41086a290300370300200320032903800c3703b00e20034190136a41186a200341e0106a41186a29030037030020034190136a41106a200341e0106a41106a29030037030020034190136a41086a200341e0106a41086a290300370300200320032903e01037039013200341d0086a200341b00e6a20034190136a10ac03024020032d00d00822014106470d00024020032802f406450d002002102e0b200341063a00a8040c160b20032d00d108210720032d00d208210620032d00d3082104200320032902d4083702ac04200320043a00ab04200320063a00aa04200320073a00a904200320013a00a8040c130b200341800c6a41026a20192d00003a0000200341b00e6a41046a201a2d00003a0000200320032f01a4063b01800c2003200328029c063602b00e20032003280294063602c80620032003280097063600cb06200341b0086a41086a201f2f01003b0100200320032903f00b3703b008200341c0156a41156a20133a0000200341c0156a41146a20153a0000200341c0156a41106a2007360200200341c0156a410c6a2008360200200341c0156a41086a2009360200200341c0156a41246a2012360200200320063602c415200320143b01c215200320163a00c115200320023a00c015200341c0156a41166a20032903b00a370100200341c0156a411c6a20032901b60a370100200320013602e815200341c0156a10a7050d05200341c0066a22024200370300200341a8066a41106a22014200370300200341a8066a41086a22074200370300200342003703a806200341e8056a41b6d1cc0041061081022007200341e8056a41086a2204290300370300200320032903e8053703a806200341a8046a41e9f9c00041051081022002200341a8046a41086a2209290300370300200120032903a804370300200341d8036a200341a8066a412010f802200341d8036a41106a290300210f20032903e003211020032802d8032106200242003703002001420037030020074200370300200342003703a806200341e8056a41b6d1cc00410610810220072004290300370300200320032903e8053703a806200341a8046a41e9f9c000410510810220022009290300370300200120032903a80437030020032010420020061b2210200c7c22283703c0152003200f420020061b200a7c2028201054ad7c3703c815200341a8066a4120200341c0156a411010b201200341d3156a200341b40e6a2d00003a00002003200341820c6a2d00003a00c215200320032f01800c3b01c015200320183600cb15200320053600c715200320113600c315200320032802b00e3600cf15200341e8056a41b6d1cc004106108102200341a8046a41b6d1cc0041061081024114102c2202450d402003421437029413200320023602901320034190136a200341c0156a411410742003280298132202417f4c0d2c20032802901321010240024020020d00410121070c010b2002102c2207450d410b20072001200210e90821070240200328029413450d002001102e0b200241206a2201417f4c0d2c2001102c2206450d4020034100360298132003200136029413200320063602901320034190136a200341e8056a4110107420034190136a200341a8046a4110107420034190136a20072002107402402002450d002007102e0b200328029013210220032802981321012003200a3703c8152003200c3703c01520022001200341c0156a411010b2010240200328029413450d002002102e0b0240200b4201520d00200341c0156a41146a20032800cb06360000200341e2156a200341b8086a2f01003b01002003201b3a00d0152003200e3703c8152003200d3703c015200320032802c8063600d1152003201d3a00d9152003201c3a00d815200320032903b0083701da15200320203602e4152003200341820c6a2d00003a009213200320032f01800c3b0190132003201836009b1320032005360097132003201136009313200341a3136a200341b40e6a2d00003a0000200320032802b00e36009f13200341e8056a41b6d1cc004106108102200341a8046a41bcdbc80041071081024114102c2202450d41200342143702e410200320023602e010200341e0106a20034190136a4114107420032802e8102202417f4c0d2d20032802e01021010240024020020d00410121070c010b2002102c2207450d420b20072001200210e9082107024020032802e410450d002001102e0b200241206a2201417f4c0d2d2001102c2206450d41200341003602e810200320013602e410200320063602e010200341e0106a200341e8056a41101074200341e0106a200341a8046a41101074200341e0106a20072002107402402002450d002007102e0b20032802e010220220032802e810200341c0156a10ba0520032802e410450d002002102e0b0240201741ff017122024102460d00200341d3156a200341b40e6a2d00003a0000200320032f01800c3b01c015200320183600cb15200320053600c715200320113600c315200320032802b00e3600cf152003200341800c6a41026a2d00003a00c21520034190136a200341c0156a10e30220032802901321012003280298132107200341003602c815200342013703c0150240024020024101460d00200341003a00a804200341c0156a200341a8046a410110740c010b200341013a00a804200341c0156a200341a8046a410110740b2001200720032802c015220220032802c81510b201024020032802c415450d002002102e0b200328029413450d002001102e0b200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c430b200341ff106a200a3c0000200341f3106a201a2d00003a00002003200c3700f710200320192d00003a00e210200320032f01a4063b01e010200320183600eb10200320053600e710200320113600e3102003200328029c063600ef102003201e3b00f510200320173a00f4102003200a4238883c00c6152003200a4228883d01c4152003200a4208883e02c0152003201b3a00df152003200e3700d7152003200d3700cf152003200b3700c715200341e3156a2003280097063600002003201d3a00e8152003201c3a00e71520032003280294063602e015200341f1156a201f2f01003b0000200320203600f315200320032903f00b3700e915200341ff156a20212f01003b0000200320032903900a3700f71520034190136a41156a20133a000020034190136a41146a20153a000020034190136a41106a200736020020034190136a410c6a200836020020034190136a41086a200936020020034190136a41246a20123602002003200636029413200320143b019213200320163a009113200320023a00901320034190136a41166a20032903b00a37010020034190136a411c6a20032901b60a370100200320013602b81320034190136a10bb060d05200341d0086a200341e0106a10e00220034190136a200341c0156a20032802d008220220032802d8082022202410e10220032d0090134101470d0620032003280095133600b30820032003280192133602b008200320032800b3083600eb05200320032802b0083602e805200320032802e8053602a804200320032800eb053600ab0420034199136a2d00002107200341a1136a28000021062003419a136a350100210a2003419e136a330100210b20032d00911321042003419f136a200341a0136a310000220c3c00002003419d136a200b3d0000200320043a0090132003200a3e009913200320063602a013200320073a009813200320032802a80436009113200320032800ab0436009413200341b00e6a20034190136a10e30220032802b00e220520032802b80e10e40241ff01712101024020032802b40e450d002005102e0b024020014102460d00024041c40141c70120011b2024470d0041abcecc0041efcfcc0020011b2022202410ec08450d010b200341f0066a410510b0030c0f0b2003200a200b200c4210868442208684220a3e00b90e200341bf0e6a200a4230883c0000200341bd0e6a200a4220883d0000200320043a00b00e200320032802a8043600b10e200320032800ab043600b40e200320063602c00e200320073a00b80e20034190136a41186a200341e0106a41186a29030037030020034190136a41106a200341e0106a41106a29030037030020034190136a41086a200341e0106a41086a290300370300200320032903e01037039013200341800c6a200341b00e6a20034190136a10ac03024020032d00800c22014106470d00024020032802d408450d002002102e0b200341063a00f0062023450d112022102e0c110b20032d00810c210720032d00820c210620032d00830c2104200320032902840c3702f406200320043a00f306200320063a00f206200320073a00f106200320013a00f0060c0e0b200341c0156a41156a20133a0000200341c0156a41146a20153a0000200341c0156a41106a2007360200200341c0156a410c6a2008360200200341c0156a41086a2009360200200341c0156a41166a20032903b00a370100200341c0156a411c6a20032901b60a370100200341c0156a41246a2012360200200320063602c415200320143b01c215200320163a00c115200320023a00c015200320013602e81520034190136a200341c0156a10c102200341a8066a41086a20034190136a41096a290000370300200341a8066a41106a20034190136a41116a290000370300200341a8066a41186a200341a9136a29000037030020032003290091133703a80620032d0090134101460d06200341e0106a41186a200341a8066a41186a290300370300200341e0106a41106a200341a8066a41106a290300370300200341e0106a41086a200341a8066a41086a290300370300200320032903a8063703e01020034190136a200341e0106a108103200341c0156a2003280290132202200328029813108203200320032801c2153602b008200320032800c5153600b3080240024020032d00c0154101470d00200341ca156a350100200341ce156a330100200341c0156a41106a3100004210868442208684210a200341c0156a41116a2800002101200341c0156a41096a2d0000210720032d00c1152106200320032800b3083600eb05200320032802b0083602e8050240200328029413450d002002102e0b200320032800eb053600ab04200320032802e8053602a804200320032802a8043602d008200320032800ab043600d3082003200a3e00c915200341cf156a200a4230883c0000200341cd156a200a4220883d0000200320063a00c015200320032802d0083600c115200320032800d3083600c415200320013602d015200320073a00c81520034190136a200341c0156a10e302200328029013220420032802981310e40241ff017121020240200328029413450d002004102e0b20024102460d01024041c40141c70120021b2018470d0041abcecc0041efcfcc0020021b2011201810ec08450d020b200341800c6a410510b0030c0d0b0240200328029413450d002002102e0b200341800c6a410310b0030c0c0b2003200a3e0099132003419f136a200a4230883c00002003419d136a200a4220883d0000200320063a009013200320032802d00836009113200320032800d30836009413200320013602a013200320073a009813200341c0156a41186a200341e0106a41186a290300370300200341c0156a41106a200341e0106a41106a290300370300200341c0156a41086a200341e0106a41086a290300370300200320032903e0103703c015200341b00e6a20034190136a200341c0156a10ac03024020032d00b00e22024106470d00200341c0156a200341e0106a10810320032802c015220220032802c81510ff01024020032802c415450d002002102e0b200341063a00800c2005450d0d2011102e0c0d0b20032d00b10e210120032d00b20e210720032d00b30e2106200320032902b40e3702840c200320063a00830c200320073a00820c200320013a00810c200320023a00800c0c0b0b200341930c6a201a2d00003a0000200320192d00003a00820c200320032f01a4063b01800c2003201836008b0c200320053600870c200320113600830c2003200328029c0636008f0c200341b00e6a410b6a200a3700002003200c3700b30e2003201e3b00b10e200320173a00b00e2003200b3c00c30e2003200b4230883d01cc062003200b4210883e02c8062003201b3a00de062003200e3701d6062003200d3701ce06200341e2066a2003280097063600002003201d3a00e7062003201c3a00e60620032003280294063600df06200320032901b60a3701c615200320032903b00a3703c0150240200241ff017122044101470d0020012001280200417f6a220236020020032f01cc15210420032902c415210a20032d00c315210520032d00c215211120032f01c0152118024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200641ff01710d072009410274200841036c490d070c090b20044103460d0820032801ca15210520032f01c815211120032903c015210c0c070b200341023a00a8040c0f0b200341a8046a410110b0030c0d0b20004200370024200041206a41023a0000200041186a41003a000020004200370308200042013703000c3d0b200341023a00f0060c090b200341f0066a410110b0030c070b200341023a00800c0c040b200320043b01cc15200320053a00c315200320113a00c215200320183b01c0152003200a3702c41520032801ca15210520032903c015210c4110102c2204450d36200441f8f7c60036020c410121022004410136020820044281808080103702004110102c2201450d36200a422088a7211120014190f8c60036020c20014101360208200142818080801037020020042004280200417f6a221836020020180d002004280208200428020c2802001103000240200428020c280204450d002004280208102e0b200441046a22182018280200417f6a221836020020180d002004102e0b200341e4156a2012360200200341c0156a41206a2005360200200341de156a20113b0100200341d6156a200c370100200341d5156a20133a0000200341d4156a20153a0000200341d2156a20074110763b0100200341d1156a20074108763a0000200341c0156a41106a20073a0000200341cc156a2008360200200341c0156a41086a2009360200200320013602e815200320063602c415200320143b01c215200320163a00c115200320023a00c015200341c0156a10a7050d010b200341c0156a200341800c6a10e202200341f0036a20032802c015220220032802c815220110f80220034180046a290300210c20032903f803210d024020032903f003220a4201520d002002200110ff010b200aa72101024020032802c415450d002002102e0b02402001450d0020034190136a200341b00e6a10e202200328029813210120032802901321022003200c3703c8152003200d3703c01520022001200341c0156a411010b201200328029413450d002002102e0b20034190136a200341800c6a10ad03200341c0156a2003280290132202200328029813220710ae03024020032903c01542015222010d002002200710ff010b200320032800d9153602f0062003200341dc156a2800003600f3060240024020010d00200341e0156a2d00002101200341d8156a2d00002107200341d0156a290300210a20032802ec15210620032902e415210c20032d00e315210420032d00e215210520032d00e115210920032903c815210d200320032800f3063600eb06200320032802f0063602e8060240200328029413450d002002102e0b200341d4156a20032800eb06360000200320073a00d0152003200a3703c8152003200d3703c015200320032802e8063600d115200320063602e4152003200c3702dc15200320043a00db15200320053a00da15200320093a00d915200320013a00d81520034190136a200341b00e6a10ad032003280290132202200328029813200341c0156a10ba05200328029413450d012002102e0c010b200328029413450d002002102e0b200341c0156a200341800c6a10ab03024020032802c015220120032802c815220710e40241ff017122024102460d002001200710ff010b024020032802c415450d002001102e0b024020024102460d0020034190136a200341b00e6a10ab0320032802981321072003280290132101200341003602c815200342013703c0150240024020024101460d00200341003a00a804200341c0156a200341a8046a410110740c010b200341013a00a804200341c0156a200341a8046a410110740b2001200720032802c015220220032802c81510b201024020032802c415450d002002102e0b200328029413450d002001102e0b200341a8066a41186a2202200341c8066a41186a290300370300200341a8066a41106a2201200341c8066a41106a290300370300200341a8066a41086a2207200341c8066a41086a290300370300200320032903c8063703a8060240200b4280fe0383428002520d00200341c0156a41186a2002290300370300200341c0156a41106a2001290300370300200341c0156a41086a2007290300370300200320032903a8063703c015200341f0066a200341c0156a10810320034190136a20032802f006220220032802f80622011082030240024020032d0090134101460d00200341003a00e0100c010b200341e0106a41136a20034190136a41136a2f00003b0000200341e0106a410b6a20034190136a410b6a290000370000200341e0106a41096a20034190136a41096a2f00003b000020032003290091133700e110200341013a00e010200341e0106a4101722207200341800c6a411410ec080d00200720032903b00e370000200741086a200341b00e6a41086a290300370000200741106a200341b00e6a41106a280200360000200341013a00e0100b20034190136a410d6a200341e0106a410d6a29000037000020034190136a41086a200341e0106a41086a290300370300200320032903e010220a3703901302400240200aa741ff01714101460d002002200110ff010c010b4114102c2207450d36200342143702d408200320073602d008200341d0086a20034190136a410172411410742002200120032802d008220720032802d80810b20120032802d408450d002007102e0b20032802f406450d002002102e0b200320032802e8053602b008200320032800eb053600b308200041186a41013a000020004200370308200020032802b0083600192000411c6a20032800b308360000200042003703000c370b200320032802e8053602b008200320032800eb053600b308200041186a41003a000020004200370308200020032802b0083600192000411c6a20032800b308360000200041206a41023a0000200042013703000c360b02402005450d002011102e0b20032d00800c22024106460d0020032f00810c210120032d00830c2107200020032902840c370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c350b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c340b20032802d408450d002002102e0b02402023450d002022102e0b20032d00f00622024106460d0020032f00f106210120032d00f3062107200020032902f406370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c320b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c310b024020032802f406450d002002102e0b20032d00a8044106460d010b20032802a8042102200020032902ac04370024200041206a2002360000200041186a41003a000020004200370308200042013703000c2f0b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c2e0b200341d0086a41086a2222200141206a290300370300200341d0086a41106a2223200141286a2903003703002003200141186a2903003703d008200241246a2801002120200241226a2f010021212002411a6a290100210a200241196a2d00002115200241186a2d00002114200241166a2f01002116200241156a2d00002118200241146a2d00002119200241126a2f0100211a200241116a2d00002117200241106a2d0000211b2002410e6a2f010021052002410d6a2d000021092002410c6a2d000021082002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f0100211c200241056a2d0000211d200241046a2d0000210441022124200241026a2f0100211e2001410c6a28020021062002280228210720022d0001211f20022d000021020240024002400240200141086a2802000e0400010203000b200341c0156a41146a4101360200200342013702c4152003419cc3cb003602c015200341043602e41020034194c3cb003602e0102003200341e0106a3602d015200341c0156a4184ccc2001044000b200141386a290300210b200141306a290300210c200141146a2802002124200141106a2802002101200341b00e6a41106a2023290300370300200341b00e6a41086a2022290300370300200320032903d0083703b00e200341c0156a41246a2020360200200341c0156a41226a20213b0100200341c0156a411a6a200a370100200341c0156a41196a20153a0000200341c0156a41186a20143a0000200341c0156a41166a20163b0100200341c0156a41156a20183a0000200341c0156a41146a20193a0000200341c0156a41126a201a3b0100200341c0156a41116a20173a0000200341c0156a41106a201b3a0000200341c0156a410e6a20053b0100200341c0156a410d6a20093a0000200341c0156a410c6a20083a0000200341c0156a410a6a20113b0100200341c0156a41096a20123a0000200341c0156a41086a20133a0000200320073602e8152003201c3b01c6152003201d3a00c515200320043a00c4152003201e3b01c2152003201f3a00c115200320023a00c01520034190136a200341c0156a10c10241012102024002400240024020032d0090134101460d0020034190136a41086a280200210720034190136a410c6a280200210420034190136a41106a280200210520034190136a41146a290200210a20032d009113210920032f019213210820032802941321112003200341ac136a35020020034190136a41206a31000042208684220d3e00fb10200341ff106a200d4220883c00002003200a3700f310200320053600ef10200320043600eb10200320073600e710200320113600e310200320083b00e110200320093a00e010200341c0156a41106a200341b00e6a41106a290300370300200341c0156a41086a2204200341b00e6a41086a290300370300200320032903b00e3703c01520064108762107024002400240200641ff01710e03000201020b20034190136a410d6a200341c0156a410d6a29000037000020034190136a41086a2004290300370300200320032903c01537039013410021020c010b2024450d002001102e0b200341a30a6a20034190136a41086a290300370000200341900a6a41186a22062003419d136a290000370000200320243600970a200320013600930a200320032903901337009b0a200320073b01900a200320074110763a00920a20020d02200341f0066a41186a2006290300370300200341f0066a41106a2206200341900a6a41106a290300370300200341f0066a41086a2204200341900a6a41086a290300370300200320032903900a3703f00620034198036a200c200b42c0843d420010e60820034188036a200c200b42c0843d420010e708200341f8026a20032903880320034188036a41086a29030042d08603420010e808200341c0156a200341e0106a20032903f802220d200329039803220a421480a7200a42d086037e42c0843d8242a0c21e566aad7c220a4280a094a58d1d200a4280a094a58d1d56200341f8026a41086a290300200a200d54ad7c220a420052200a501b22021b220d200a420020021b220a10c30220032d00c0154106460d014280808080c003210a410321020c030b410221020240200641ff01714102460d004200210a0c030b4200210a410221022024450d022001102e0c020b200341c8066a41186a22024200370300200341c8066a41106a22014200370300200341c8066a41086a22074200370300200342003703c806200341e8056a41bad7c70041081081022007200341e8056a41086a2205290300370300200320032903e8053703c806200341a8046a41e4afc900410d1081022002200341a8046a41086a2209290300370300200120032903a804370300200341f0026a200341c8066a4120108e0220032802f402210820032802f0022111200242003703002001420037030020074200370300200342003703c806200341e8056a41bad7c700410810810220072005290300370300200320032903e8053703c806200341a8046a41e4afc900410d10810220022009290300370300200120032903a80437030020032008410020111b220241016a3602c015200341c8066a4120200341c0156a410410b201200341c0156a41186a200a370300200341f8156a200341e0106a41186a290300370300200341f0156a200341e0106a41106a290300370300200341e8156a200341e0106a41086a29030037030020034188166a200429030037030020034190166a200629030037030020034198166a200341f0066a41186a2903003703002003200b3703c8152003200c3703c0152003200d3703d015200320032903e0103703e015200320032903f00637038016200341b00a6a200210d60320032802b80a210720032802b00a2101200341003602880c200342013703800c200341800c6a200341c0156a41206a412010742003200b370398132003200c37039013200341800c6a20034190136a41101074200341800c6a20034180166a412010742003200a370398132003200d37039013200341800c6a20034190136a411010742001200720032802800c220620032802880c10b201024020032802840c450d002006102e0b024020032802b40a450d002001102e0b200341cc156a2002360200200341c8156a41003a00002003410e3a00c015200341c0156a10fe01200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c310b4200210a410121020b200041133b002120004200370308200041206a20023a0000200041186a41003a00002000200a4280808080f0038341d0ffc300ad84370024200042013703000c2f0b0240200241ff01710d0020072007280200417f6a2202360200024020020d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b2003200a3703c006200320153a00bf06200320143a00be06200320163b01bc06200320183a00bb06200320193a00ba062003201a3b01b806200320173a00b7062003201b3a00b606200320053b01b406200320093a00b306200320083a00b206200320113b01b006200320123a00af06200320133a00ae062003201c3b01ac062003201d3a00ab06200320043a00aa062003201e3b01a8060240201f41ff01710d00410321020c010b4110102c2201450d2c200141f8f7c60036020c2001410136020820014281808080103702004110102c2207450d2c20074190f8c60036020c20074101360208200742818080801037020020012001280200417f6a22153602004100210220150d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22152015280200417f6a221536020020150d002001102e0b0240024002400240200241ff0171417f6a0e03000102010b20072007280200417f6a2202360200024020020d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b0240200441ff01710d00201141107420124108747220137241017420054110742009410874722008724b0d020b4110102c2202450d2e200241f8f7c60036020c2002410136020820024281808080103702004110102c2207450d2e20074190f8c60036020c20074101360208200742818080801037020020022002280200417f6a220136020020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b20072007280200417f6a22013602004200210a4102210202402001450d004200210b0c020b2007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22012001280200417f6a220136020002402001450d004200210b0c020b2007102e4200210b0c010b200341e8056a41bad7c7004108108102200341a8046a41dbafc9004109108102200320063602b0082003200341b0086a410410a3013703900a200341cc156a200341b0086a41046a3602002003200341900a6a41086a3602c4152003200341b0086a3602c8152003200341900a6a3602c015200341b00e6a200341c0156a107c20032802b80e220741206a2202417f4c0d180240024020020d00410121010c010b2002102c2201450d2d0b200341003602f806200320023602f406200320013602f006200341f0066a200341e8056a41101074200341f0066a200341a8046a41101074200341f0066a20032802b00e220220071074024020032802b40e450d002002102e0b200341c0156a20032802f006220220032802f806220110b805024020032903c0154201520d002002200110ff01200341b00e6a200341c0156a41086a41e00010e9081a200341800c6a200341b00e6a41e00010e9081a024020032802f406450d002002102e0b20034190136a41066a200341800c6a41e00010e9081a200341e0106a20034190136a41e60010e9081a200341b00a6a200341e0106a41066a41e00010e9081a200341b8036a200341d00a6a20032903c00a220e200341c80a6a290300220f10cb0220032903b803210a2003200341b8036a41086a290300220b3703c8152003200a3703c01502400240200a200b844200520d002003200341c0156a3602901320034190136a10cc020c010b200342f0f2bda1a7ee9cb9f90037039013200341c0156a20034190136a10cd02200341a8036a200341c0156a200a200b10fd01200341a0136a200341a8036a41086a290300220d200b7d20032903a803220c200a54ad7d200b200d7d200a200c54ad7d200c200a56200d200b56200d200b511b22021b3703002003200c200a7d200a200c7d20021b3703981320032002ad3703901320034190136a41086a21010240024020020d00200320013602e010200341e0106a10cc020c010b200320013602e010200341e0106a10ce020b200341d8156a200b370300200341d0156a200a370300200341c8156a41063a00002003410e3a00c015200341c0156a10fe010b200341c0156a41186a200f370300200341d0156a200e370300200341cc156a2006360200200341c8156a41033a00002003410e3a00c015200341c0156a10fe01200041186a41003a000020004200370308200020032800e8063600192000411c6a200341e8066a41036a280000360000200042003703000c300b200341b00e6a200341c8156a41e00010e9081a024020032802f406450d002002102e0b41caeac200ad210a4280808080c001210b410321020b20004193023b0021200042003703082000200b200a84370024200041206a20023a0000200041186a41003a0000200042013703000c2e0b200341c0156a41246a2020360200200341c0156a41226a20213b0100200341c0156a411a6a200a370100200341c0156a41196a20153a0000200341c0156a41186a20143a0000200341c0156a41166a20163b0100200341c0156a41156a20183a0000200341c0156a41146a20193a0000200341c0156a41126a201a3b0100200341c0156a41116a20173a0000200341c0156a41106a201b3a0000200341c0156a410e6a20053b0100200341c0156a410d6a20093a0000200341c0156a410c6a20083a0000200341c0156a410a6a20113b0100200341c0156a41096a20123a0000200341c0156a41086a20133a0000200320073602e8152003201c3b01c6152003201d3a00c515200320043a00c4152003201e3b01c2152003201f3a00c115200320023a00c0154200210a4200210b02400240200341c0156a10c60241ff01714102460d00200341c0156a200610d60320032802c015220120032802c815108f022102024020032802c415450d002001102e0b20020d0141caeac200ad210a4280808080c001210b410321240b20004193023b0021200042003703082000200b200a84370024200041206a20243a0000200041186a41003a0000200042013703000c2e0b200341c8066a41186a22024200370300200341d8066a22014200370300200341c8066a41086a22074200370300200342003703c806200341e8056a41bad7c70041081081022007200341e8056a41086a290300370300200320032903e8053703c806200341a8046a4194ccc20041091081022002200341a8046a41086a290300370300200120032903a8043703004104102c2202450d2a20034204370294132003200236029013200320063602c01520034190136a200341c0156a41041074200341c0156a41086a20032802981336020020032003290390133703c015200341c8066a4120200341c0156a10c702200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c2d0b200341c0156a200141046a41c40010e9081a20034190136a41286a200241286a28020036020020034190136a41206a200241206a29020037030020034190136a41186a200241186a29020037030020034190136a41106a200241106a29020037030020034190136a41086a200241086a29020037030020032002290200370390132000200341c0156a20034190136a10c7060c2c0b200341c0156a20034190136a410110f002200341c9156a2102024020032d00c0154101470d0020033500c5152002330000200341cb156a3100004210868442208684210d200341c0156a410c6a280200210220032d00c41521014200210e0c020b20032d00c1152101200341c0156a41086a41033a00002002200329039013370000200341d1156a20034190136a41086a290300370000200341d9156a200341a0136a290300370000200341e1156a20034190136a41186a2903003700002003410c3a00c015200341c0156a10fe010240200141ff01710d0010f7021a0b200320032802a8043602b008200320032800ab043600b308200041186a41003a000020004200370308200020032802b0083600192000411c6a20032800b308360000200042003703000c2b0b0b200320032800ab043600b308200320032802a8043602b008200041276a200d4230883c0000200041256a200d4220883d00002000200d3e0021200041186a41003a0000200041106a42d8e4970f3703002000200e370308200020032802b0083600192000411c6a20032800b308360000200041286a2002360000200041206a20013a0000200042013703000c290b200341063a00a8040b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c270b20032d00f00622024106460d010b20032f00f106210120032d00f3062107200020032902f406370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c250b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c240b20032802b00a2102200020032902b40a370024200041206a2002360000200041186a41003a000020004200370308200042013703000c230b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c220b20004200370308200020032800e805360019200041186a41003a00002000411c6a200341eb056a280000360000200042003703000c210b2000200a370024200020063a0023200020073a0022200020013a002120004200370308200041206a20023a0000200041186a41003a0000200042013703000c200b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c1f0b20032d00c01521020b0240200241ff01714106460d0020032d00c115210120032d00c215210720032d00c315210620032902c415210a0c010b02402015450d002012102e0b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c1d0b02402015450d002012102e0b2000200a370024200020063a0023200020073a0022200020013a002120004200370308200041206a20023a0000200041186a41003a0000200042013703000c1c0b20020d180c040b20032d00e0102101200341f00b6a41086a2002360200200320013a00f00b2003200a3e00f10b2003200a4230883c00f70b2003200a4220883d00f50b024020032802cc152202450d00200241246c2101201a210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b024020032802c8152202450d00200241246c450d00201a102e0b024020242007460d000340200610e1010240200641046a2802002202450d00200241246c450d002006280200102e0b200641f0006a2106200941907f6a22090d000b0b02402011450d00201141f0006c450d002004102e0b20032802b4082202450d02200241c4006c450d0220032802b008102e0c020b20242007460d002004200541f0006c6a210603402007220241046a220110e101200241f0006a21070240200241086a2802002202450d00200241246c450d002001280200102e0b20062007470d000b0b02402011450d00201141f0006c450d002004102e0b200341a80a6a4200370300200341a00a6a4200370300200341900a6a41086a22024200370300200342003703900a200341d0086a4190dac800410a1081022002200341d0086a41086a290300370300200320032903d0083703900a200341b00a6a41d5dac8004106108102201741086a200341b00a6a41086a290300370200201720032903b00a370200201541c4006c41046a2202417f4c0d0120032802b00821010240024020020d00410121070c010b2002102c2207450d160b200341003602c815200320023602c415200320073602c0152015200341c0156a107620012015200341c0156a109f01200341900a6a412020032802c015220220032802c81510b201024020032802c415450d002002102e0b200341063a00f00b20032802b4082202450d00200241c4006c450d002001102e0b024020032d00f00b22024106460d0020032f00f10b210120032d00f30b2107200020032902f40b370024200020073a0023200020013b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c180b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c170b1038000b200341e8056a200341800c6a10c802200341c0156a20032802e805220120032802f005220710c90220032903c015210a200341a8046a41086a220220034190166a290300370300200320034188166a2903003703a80402400240200a4201510d00200341f0066a41086a4200370300200342003703f0060c010b200341f0066a41086a2002290300370300200320032903a8043703f0060b200341c0156a41c8006a20032903f00637030020034190166a200341f0066a41086a290300370300200342013703c015200341c0156a41386a202d4200201042015122021b370300200341f0156a202f420020021b370300200341c0156a41286a202c420020021b370300200341e0156a202b420020021b370300200341d8156a2025420020021b370300200341c0156a41106a2027420020021b37030020034180166a202a420020021b37030020032026420020021b3703c81520012007200341c0156a41086a10c805024020032802ec05450d002001102e0b20034190136a41106a290300211020034190136a41286a290300210e20034190136a41386a290300210b20034190136a41c8006a290300210c200329039813212620032903b013212920032903c013210a20032903d013210d200329039013212820032903a813210f0b024020284201520d00200341f8156a2010370300200341f0156a2026370300200341c0156a41086a41003a0000200341c9156a20032903800c370000200341d1156a200341800c6a41086a290300370000200341d9156a200341900c6a290300370000200341e1156a200341980c6a290300370000200341033a00c015200341c0156a10fe010b02400240200f50450d004200210f0c010b200341c0156a41186a200341800c6a41186a290300370300200341c0156a41106a200341800c6a41106a290300370300200341c0156a41086a200341800c6a41086a290300370300200320032903800c3703c0154201210f0b200341b00e6a41186a200341c0156a41186a22022903002210370300200341b00e6a41106a200341c0156a41106a22012903002228370300200341b00e6a41086a200341c0156a41086a22072903002226370300200320032903c01522273703b00e200341f0156a2206200e370300200341e8156a220420293703002001202637030020022028370300200341e0156a20103703002003200f3703c015200320273703c815200341c0156a10d204024020032903c015500d00200320043602901320034190136a10cc020b20034188166a200c37030020034180166a200d370300200341f8156a200b3703002006200a370300200741033a0000200341c9156a20032903800c370000200341d1156a200341800c6a41086a290300370000200341d9156a200341800c6a41106a290300370000200341e1156a200341800c6a41186a290300370000200341033a00c015200341c0156a10fe01200320032802c8063602f00b200320032800cb063600f30b200041186a41003a000020004200370308200020032802f00b3600192000411c6a20032800f30b360000200042003703000c140b200341900a6a41086a2201200341b0086a41086a2f01003b0100200320032802c8063602f00b200320032800cb063600f30b200320032903b0083703900a200041186a41003a000020004200370308200020032802f00b3600192000411c6a20032800f30b360000200041206a20023a0000200020032903900a3700222000412a6a20012f01003b0000200042013703000c130b20032d00800c22014106470d0141012101410221060b200341e0156a20032903d008370300200341f4156a20032800f30b360000200341e8156a200341d8086a290300370300200341d8156a200a3703002003200d3703c015200320063a00f015200320032802f00b3600f1152003200c3703c8152003200b3703d015024002402001450d002005200710ff010c010b20052007200341c0156a10c6050b410621010b20032902840c210a20032d00830c210720032d00820c210620032d00810c2104024020032802940a450d002005102e0b20014106460d010b2000200a370024200020073a0023200020063a0022200020043a002120004200370308200041206a20013a0000200041186a41003a0000200042013703000c0f0b200341e8156a2002360200200341cd156a200341b80e6a290300370000200341d5156a200341c00e6a290300370000200341dd156a200341b00e6a41186a290300370000200341023a00c415200341023a00c015200320032903b00e3700c515200341c0156a10fe01200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c0e0b20032d00e01022014106470d010b2005200710ff01410621010b20032902e410210a20032d00e310210720032d00e210210620032d00e1102104024020032802840c450d002005102e0b20014106460d010b2000200a370024200020073a0023200020063a0022200020043a002120004200370308200041206a20013a0000200041186a41003a0000200042013703000c0a0b200341c8156a2002360200200341013a00c415200341023a00c015200341c0156a10fe01200041186a41003a000020004200370308200020032800e8063600192000411c6a200341eb066a280000360000200042003703000c090b20032d00e01022024106470d0141012106410221020b200341e0156a20032903d008370300200341f4156a20032800f30b360000200341e8156a200341d8086a290300370300200341d8156a200a3703002003200d3703c015200320023a00f015200320032802f00b3600f1152003200c3703c8152003200b3703d015024002402006450d002001200710ff010c010b20012007200341c0156a10c6050b410621020b20032902e410210a20032d00e310210720032d00e210210620032d00e1102104024020032802940a450d002001102e0b20024106470d01200341cd156a20032903880c370000200341e8156a2011360200200341d5156a200341900c6a290300370000200341dd156a200341980c6a290300370000200341003a00c415200341023a00c015200320032903800c3700c515200341c0156a10fe01200341063a00b0080b20004200370308200020032800e806360019200041186a41003a00002000411c6a200341eb066a280000360000200042003703000c050b2003200a3702b408200320073a00b308200320063a00b208200320043a00b108200320023a00b0080b20032802b0082102200020032902b408370024200041206a2002360000200041186a41003a000020004200370308200042013703000c030b1036000b4103210641022107418fc2cb002101411d21020b02402011450d002008102e0b200320032800b00a3602d0082003200341b30a6a2800003600d308200041186a41003a000020004200370308200020032802d0083600192000411c6a20032800d308360000200041286a2002360200200041246a2001360200200020073a0022200041003a0021200041206a20063a0000200042013703000b200341f0176a24000b13002000410636020420004198f4c0003602000bf70802077f027e230041f0006b2202240002400240024002400240024020012d0000417f6a0e03010002000b200041003b0001200041013a0000200041036a41003a00000c030b200241386a200141016a10e00241002103200241d0006a200141216a20022802382204200228024041d4e2cc00410010e102200241286a200241db006a290000370300200241306a200241e3006a2f00003b01002002200229005337032020022d0052210520022d0051210620022d005021010240200228023c450d002004102e0b0c010b200241386a200141016a10e002200241d0006a200141216a200228023822072002280240200141e4006a2204280200200141ec006a220128020010e102200241286a200241db006a290000370300200241306a200241e3006a2f00003b010020022002290053370320200128020021082004280200210320022d0052210520022d0051210620022d00502101200228023c450d002007102e0b200241086a41106a200241206a41106a2f010022043b0100200241086a41086a200241206a41086a290300220937030020022002290320220a370308200241d0006a41106a220720043b0100200241d0006a41086a220420093703002002200a3703500240200141ff01714101470d002002412a6a2004290300370100200241326a20072f01003b0100200220053a0021200220063a002020022002290350370122200241d0006a200241206a10e202200228025022042002280258108f02210102402002280254450d002004102e0b024020010d00200041800e3b0001200041013a0000200041036a41013a00000c020b200241d0006a41106a200241206a41106a280200360200200241d0006a41086a200241206a41086a29030037030020022002290320370350200241386a200241d0006a10e30220022802382204200228024010e40241ff017121010240200228023c450d002004102e0b0240024020014102460d0002402003450d0041c40141c70120011b2008470d0041abcecc0041efcfcc0020011b2003200810ec08450d020b200041800e3b0001200041013a0000200041036a41033a00000c030b2003450d00200041800e3b0001200041013a0000200041036a41033a00000c020b410c102c2201450d02200241d0006a41106a200241206a41086a290300370300200241d0006a41186a200241206a41106a28020036020020024106360254200241eef8c00036025020022002290320370358410a102c2204450d022002420a37023c200220043602384106200241386a1076200241386a41eef8c00041061074200241386a200241d0006a41086a41141074200141086a200228024036020020012002290338370200200041306a41013a0000200041286a428180808010370200200041246a2001360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a42e400370300200041316a2002280038360000200041346a2002413b6a280000360000200041003a00000c010b200041800e3b0001200041013a0000200041036a41003a00000b200241f0006a24000f0b1036000be80401097f230041306b22022400024002404120102c2203450d002002422037020420022003360200200220014120107441012104200228020822034101742201417f4c0d012002280200210502402001450d002001102c2204450d010b2000410036020820002004360200200041046a2206200136020002402003450d002003417f6a2107410021030240034020052d00002108024002400240024020032001470d00200141016a22092001490d082001410174220a2009200a20094b1b22094108200941084b1b21090240024020010d00200241003602200c010b2002410136022820022001360224200220043602200b200241106a20094101200241206a10d1042002280218210120022802104101460d01200020022802142204360200200620013602000b2000200341016a2209360208200420036a413041d700200841a001491b20084104766a3a000020092001470d0220062802002001470d02200141016a220420014f0d010c070b2001450d060c050b2001410174220a2004200a20044b1b22044108200441084b1b21040240024020010d00200241003602200c010b2002410136022820022001360224200220002802003602200b200241106a20044101200241206a10d1042002280218210120022802104101460d02200020022802142204360200200620013602000b2000200941016a2209360208200420036a41016a413041d7002008410f712201410a491b20016a3a00002007450d02200541016a21052007417f6a210720062802002101200921030c000b0b2001450d020c010b02402002280204450d002002280200102e0b200241306a24000f0b1036000b1038000bb40a02077f027e230041a0026b22062400024002400240024002400240200520036a41216a22070d0041012108410021094100210a0c010b4100210b4100210c4100210a410121080240024003402007410a7021090240200c200a470d00200c41016a220a200c490d05200b200a200b200a4b1b220a4108200a41084b1b210a02400240200c0d00200641003602d8010c010b200641013602e0012006200c3602dc01200620083602d8010b20064198016a200a4101200641d8016a107d20062802a001210a2006280298014101460d02200628029c0121080b2008200c6a20094130723a00002007410a490d02200c41016a210c200b41026a210b2007410a6e21070c000b0b200a450d020c050b200c41016a21090b411a102c220c450d032006411a36025c2006200c360258200c41002900f4f840370000200c41086a41002900fcf840370000200c41106a4100290084f940370000200c41186a41002f008cf9403b00002006411a360260024002402009450d002009411a6a22072009490d022006429a808080103702dc012006200c3602d80120064198016a20074134200741344b1b4101200641d8016a107d200641a0016a28020021072006280298014101460d01200628029c01210c2006200736025c2006200c3602580b20090d02411a210c0c030b20070d030b1038000b2008417f6a210b200c411a6a210c200921070340200c200b20076a2d00003a0000200c41016a210c2007417f6a22070d000b2009411a6a210c0b2006200c3602600240200a450d002008102e0b200641d8006a41b8fcc60041211074200641d8006a200220031074200641d8006a20042005107420062006280258220c200628026010e5020240200628025c450d00200c102e0b4100210c200641206a41106a4100360200200641206a41086a420037030020064200370320200641d8016a2001200610e602024020062d00d8014101460d00200641d0016a20064191026a290000370300200641c8016a20064189026a290000370300200641c0016a20064181026a290000370300200641b8016a200641f9016a290000370300200641b0016a200641f1016a29000037030020064198016a41106a200641e9016a29000037030020064198016a41086a200641e1016a290000370300200620062900d901370398014101210c0b200641d8016a41386a220720064198016a41386a290300370300200641d8016a41306a220b20064198016a41306a290300370300200641d8016a41286a220920064198016a41286a290300370300200641d8016a41206a220820064198016a41206a290300370300200641d8016a41186a220a20064198016a41186a290300370300200641d8016a41106a20064198016a41106a290300370300200641d8016a41086a20064198016a41086a29030037030020062006290398013703d80102400240200c450d00200641d8006a41386a2007290300370300200641d8006a41306a200b290300370300200641d8006a41286a2009290300370300200641d8006a41206a2008290300370300200641d8006a41186a200a290300370300200641d8006a41106a200641d8016a41106a290300370300200641d8006a41086a200641d8016a41086a290300370300200620062903d801370358200641386a200641d8006a41c00010e502200641206a41106a200641d4006a280000220c360200200641206a41086a200641cc006a290000220d37030020062006290044220e370320200041116a200c360000200041096a200d3700002000200e3700014101210c0c010b4100210c0b2000200c3a0000200641a0026a24000f0b1036000bf50101047f230041306b22022400200241b6d1cc004106108102200241106a41b6d1cc004106108102024002404114102c2203450d002002421437022420022003360220200241206a20014114107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b22022400200241b6d1cc004106108102200241106a41bcd1cc004107108102024002404114102c2203450d002002421437022420022003360220200241206a20014114107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000b800201027f230041d0006b220224002002200136020420022000360200200241086a2000200110ed0202400240200228020822010d00410221000c010b200228020c210302400240200241106a280200450d0041002100024020012d00000e020200010b410121000c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241909dc5003602382002200241286a360248200241346a419cebc000200241386a103d1a2002280218200228022010ef020240200228021c450d002002280218102e0b410221000b2003450d002001102e0b200241d0006a240020000b4c0020002002ad4220862001ad8410112201290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a2900003700002001102e0ba80503017f017e027f23004190016b22032400024002402001200210052204422088a722020d00410121010c010b2004a721010b200320023602442003200136024002402002450d0020012d0000210520032002417f6a22063602442003200141016a36024002400240024020050e020001030b200341c8006a200341c0006a10a70120032d00484101460d02200341086a200341d2006a290100370300200341106a200341da006a290100370300200341186a200341e2006a290100370300200341206a200341ea006a290100370300200341286a200341f2006a290100370300200341306a200341fa006a290100370300200341376a20034181016a2900003700002003200329014a37030020032d00492102410021050c010b2006450d0120012d0001210520032002417e6a3602442003200141026a3602404100210202400240024020050e03020100040b410221020c010b410121020b200341376a200341c8006a41376a290000370000200341306a200341c8006a41306a290000370300200341286a200341c8006a41286a290000370300200341206a200341c8006a41206a290000370300200341186a200341c8006a41186a290000370300200341106a200341c8006a41106a290000370300200341086a200341c8006a41086a29000037030020032003290048370300410121050b200020023a0001200020053a0000200041026a20032903003700002000410a6a200341086a290300370000200041126a200341106a2903003700002000411a6a200341186a290300370000200041226a200341206a2903003700002000412a6a200341286a290300370000200041326a200341306a290300370000200041396a200341376a2900003700002001102e20034190016a24000f0b41cae0cc00412e200341c8006a41f8e0cc004188e1cc00103e000bb10201037f230041e0006b22022400200241086a418ef9c0004110108102200241186a41fbafc9004106108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bb40102047f027e230041d0006b22012400200141106a200010e702200141206a200128021022022001280218220310e90202400240200128024022040d00420021054101210441002103420021060c010b2002200310ff01200128024441ffffff3f712103200141386a2903002106200129033021050b02402001280214450d002002102e0b02402003450d002004102e0b42f0d0c9abc6add9b1f400200010ea02200120002005200610fb01200141d0006a24000bf00304027f017e037f037e230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602200c010b200328021421022003200341186a280200360224200320013602202003200341206a10ab0102400240024002402003280200450d00200341003602480c010b200341c8006a200341206a200328020410920120032802482204450d00200329024c210502400240200328022422064110490d0020032003280220220741106a3602202003200641706a2208360224200841104f0d010b200542ffffff3f83500d012004102e0c010b200741086a29000021092007290000210a2003200641606a3602242003200741206a36022020040d010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b200041003602200c010b200741186a290000210b200020072900103703102000200a3703002000200537022420002004360220200041186a200b370300200020093703080b2002450d002001102e0b200341e0006a24000b9503010a7f230041206b2202240020022000370308200241106a200110d4062002280218210341002104200241003602180240024020030d0041002105200228021021060c010b2002280210220641106a2107410021054100210802400340024002402005450d00200620084105746a21092006200820046a4105746a210a0340200941106a220b2900002002290308510d02200a2009290300370300200a41186a200941186a290300370300200a41106a200b290300370300200a41086a200941086a290300370300200a41206a210a200941206a21092003200841016a22084b0d000c040b0b200720084105746a2109034020092900002002290308510d01200941206a21092003200841016a22084b0d000b410021050c030b2004417f6a2104200541016a21052003200841016a22084b0d000b0b024020050d00410021050c010b2006200820056b4105746a200620084105746a200320086b41057410ea081a0b2002200320056b220936021820012006200910d5060240200228021441ffffff3f71450d002006102e0b200241206a24000bca0101077f230041106b22022400200210ec0241012103200228020021044100210541002106024002400240200228020822070e020201000b4100210503402007410176220820056a2106200620052004200641306c6a2001412010ec084101481b2105200720086b220741014b0d000b0b02402004200541306c6a2001412010ec0822070d0020052106410021030c010b20052007411f766a21060b024020022802042205450d00200541306c450d002004102e0b2000200636020420002003360200200241106a24000bb40302047f017e23004180016b22012400200141206a22024200370300200141086a41106a22034200370300200141086a41086a420037030020014200370308200141086a418ef9c0004110108102200141e8006a419ef9c000410a1081022002200141e8006a41086a290000370300200320012900683703002001412036022c2001200141086a360228200141306a200141086a412010ed0202400240200128023022030d00410021020c010b200128023421042001200141306a41086a28020036024420012003360240200141e8006a200141c0006a10e90102400240200128026822020d004100210220014100360250200142013703482001410a36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c200141909dc5003602682001200141d8006a360278200141e4006a419cebc000200141e8006a103d1a2001280248200128025010ef020240200128024c450d002001280248102e0b0c010b200129026c21050b2004450d002003102e0b0240024020020d0020004100360208200042083702000c010b20002005370204200020023602000b20014180016a24000b130020002002ad4220862001ad84102510da080bde0401047f230041c0006b220224002000280204210320002802002104200128021841a89fc00041012001411c6a28020028020c11000021000240024020030d00200021050c010b2002200436020441012105024020000d00024020012d0000410471450d0041012105200128021841f99ec0004101200128021c28020c1100000d012001280200210041012105200241013a001720022000360218200241c09ec00036023420022001290218370308200220012d00203a00382002200128020436021c20022001290210370328200220012902083703202002200241176a3602102002200241086a360230200241046a200241186a1087010d01200228023041d89ec0004102200228023428020c11000021050c010b200241046a200110870121050b20034101460d00200441016a21002003417f6a2103034020022000360204200541ff0171210441012105024020040d00024020012802002205410471450d00200241013a001720022005360218200241c09ec00036023420022001290218370308200220012d00203a00382002200128020436021c20022001290210370328200220012902083703202002200241176a3602102002200241086a3602300240200241046a200241186a1087010d00200228023041d89ec0004102200228023428020c11000021050c020b410121050c010b41012105200128021841bc9ec0004102200128021c28020c1100000d00200241046a200110870121050b200041016a21002003417f6a22030d000b0b41012100024020050d00200128021841fa9ec0004101200128021c28020c11000021000b200241c0006a240020000b0e002001ad4220862000ad8410160be52005067f017e027f067e057f230041f0026b22032400200341b8016a22044200370300200341a0016a41106a22054200370300200341a0016a41086a22064200370300200342003703a001200341e0006a418ef9c00041101081022006200341e0006a41086a2207290000370300200320032900603703a001200341e0006a41c7c3cb0041071081022004200729000037030020052003290060370300200341e0016a200341a0016a10f10220032802e0012206410820061b2108410021040240024002400240024002400240024002400240024002400240024002400240024020032902e401420020061b2209422088a7220a0e020201000b41002104200a210603402006410176220b20046a210720072004200820074106746a41206a2001412010ec084101481b21042006200b6b220641014b0d000b0b200820044106746a41206a2001412010ec080d002004200a4f0d01200820044106746a2206290310210c200641186a290300210d2006200641c0006a2004417f73200a6a41067410ea081a024002402002450d00200341106a2001200c200d10cb022003290310210e2003200341106a41086a290300220f3703e8012003200e3703e00102400240200e200f844200520d002003200341e0016a3602a001200341a0016a10cc020c010b200342f0f2bda1a7ee9cb9f9003703a001200341e0016a200341a0016a10cd022003200341e0016a200e200f10fd01200341b0016a200341086a2903002210200f7d20032903002211200e54ad7d200f20107d200e201154ad7d2011200e562010200f562010200f511b22041b37030020032011200e7d200e20117d20041b3703a80120032004ad3703a001200341a0016a41086a21060240024020040d0020032006360260200341e0006a10cc020c010b20032006360260200341e0006a10ce020b200341f8016a200f370300200341f0016a200e370300200341e8016a41063a00002003410e3a00e001200341e0016a10fe010b20034198026a200d37030020034190026a200c370300200341e0016a41086a41063a0000200341e9016a2001290000370000200341f1016a200141086a290000370000200341f9016a200141106a29000037000020034181026a200141186a2900003700002003410c3a00e001200341e0016a10fe010c010b200341306a2001200c200d10fb010b200341a0016a41186a220a4200370300200341a0016a41106a22024200370300200341a0016a41086a220b4200370300200342003703a001200341e0006a418ef9c0004110108102200b200341e0006a41086a2206290000370300200320032900603703a001200341e0006a41a8f9c0004109108102200541086a200629000037000020052003290060370000200341e0016a200341a0016a10f10220032802e0012204410820041b21070240024020032902e401420020041b220e422088a722040d00410021120c010b200341e0016a41386a20072004417f6a22134106746a220441386a290300370300200341e0016a41306a200441306a290300370300200341e0016a41286a200441286a290300370300200341e0016a41206a200441206a290300370300200341e0016a41186a200441186a290300370300200341e0016a41106a200441106a290300370300200341e0016a41086a200441086a290300370300200320042903003703e001200e42ffffffff0f832013ad42208684210e410121120b200341a0016a41386a2213200341e0016a41386a290300370300200341a0016a41306a2214200341e0016a41306a290300370300200341a0016a41286a2215200341e0016a41286a290300370300200341a0016a41206a2216200341e0016a41206a290300370300200a200341e0016a41186a22042903003703002002200341e0016a41106a220a290300370300200b200341e0016a41086a2202290300370300200320032903e0013703a001200320073602402003200e37024420044200370300200a420037030020024200370300200342003703e001200341e0006a418ef9c000411010810220022006290000370300200320032900603703e001200341e0006a41a8f9c000410910810220042006290000370300200a2003290060370300200341e0016a200341c0006a10f2020240200e42ffffff1f83500d002007102e0b20094280808080707c210e200341e0006a41086a2204200341a0016a41086a290300370300200341e0006a41106a2206200341a0016a41106a290300370300200341e0006a41186a2207200341a0016a41186a290300370300200341e0006a41206a2016290300370300200341e0006a41286a2015290300370300200341e0006a41306a2014290300370300200341e0006a41386a2013290300370300200320032903a001370360410021132012450d05200341e0016a41386a2212200341e0006a41386a290300370300200341e0016a41306a2214200341e0006a41306a290300370300200341e0016a41286a2215200341e0006a41286a290300370300200341e0016a41206a2202200341e0006a41206a290300370300200341e0016a41186a2007290300370300200341e0016a41106a2006290300370300200341e0016a41086a2004290300370300200320032903603703e001410021040240200e4220882210a722130e020403000b410021042013210603402006410176220b20046a210720072004200820074106746a41206a2002412010ec084101481b21042006200b6b220641014b0d000c030b0b0240200942ffffff1f83500d002008102e0b200341e0016a410d10f302200041013a00002000410c6a200341e8016a280200360200200041046a20032903e0013702000c0b0b2004200a1046000b200820044106746a41206a2002412010ec082206450d0120042006411f766a21040b200341a0016a41086a2015290300370300200341b0016a2014290300370300200341a0016a41186a201229030037030020032003290380023703a001200420134b0d09200341e0016a41186a290300210f200341e0016a41086a290300210c20032903f001210d20032903e001211102402013200ea7470d00201341016a22062013490d0620134101742207200620062007491b22064104200641044b1b220641ffffff1f712006464103742107200641067421060240024020130d00200341003602400c010b200341c0006a41086a410836020020032008360240200320104206863e02440b200341e0026a20062007200341c0006a107d200341e8026a280200210620032802e0024101460d0320032802e40221082006410676ad210e0b200820044106746a220641c0006a2006201320046b41067410ea081a200641186a200f3703002006200d3703102006200c37030820062011370300200620032903a001370320200641286a200341a8016a290300370300200641306a200341b0016a290300370300200641386a200341a0016a41186a290300370300200e42ffffffff0f8320094280808080708384210e0b410121130b2003200e3702a401200320083602a00120080d01200341f8016a4200370300200341e0016a41106a4200370300200341e0016a41086a22044200370300200342003703e001200341e0006a418ef9c00041101081022004200341e0006a41086a2206290000370300200320032900603703e001200341e0006a41c7c3cb004107108102200a41086a2006290000370000200a2003290060370000200341e0016a412010ff010c020b2006450d020c070b200341f8016a4200370300200341e0016a41106a4200370300200341e0016a41086a22044200370300200342003703e001200341e0006a418ef9c00041101081022004200341e0006a41086a2206290000370300200320032900603703e001200341e0006a41c7c3cb004107108102200a41086a2006290000370000200a2003290060370000200341e0016a200341a0016a10f2022008450d00200e42ffffff1f83500d002008102e0b200341b8016a4200370300200341a0016a41106a4200370300200341a0016a41086a22044200370300200342003703a001200341e0006a418ef9c00041101081022004200341e0006a41086a2206290000370300200320032900603703a001200341e0006a41c7c3cb004107108102200541086a200629000037000020052003290060370000200341e0016a200341a0016a10f10220032902e401420020032802e001220b1b2209422088a72207410674410675220441ffffff3f712004470d0020044105742206417f4c0d000240024020060d00410121020c010b2006102c2202450d060b024002402006410576221220044f0d00200641047622082004200820044b1b22044104200441044b1b220441ffffff3f712004462108200441057421040240024020060d00200341003602e0010c010b200341e8016a4101360200200320063602e401200320023602e0010b200341a0016a20042008200341e0016a107d200341a8016a280200210420032802a0014101460d0120032802a4012102200441057621120b200b4108200b1b211420070d02410021080c030b20040d050b1038000b2007410674210b200741067441406a4106762115200341e0016a41206a210720022104201421060340200341e0016a41386a200641386a290300370300200341e0016a41306a200641306a290300370300200341e0016a41286a200641286a2903003703002007200641206a290300370300200341a0016a41086a2208200741086a290000370300200341a0016a41106a2205200741106a290000370300200341a0016a41186a220a200741186a290000370300200320072900003703a001200441186a200a290300370000200441106a2005290300370000200441086a2008290300370000200420032903a001370000200441206a2104200641c0006a2106200b41406a220b0d000b201541016a21080b0240200942ffffff1f83500d002014102e0b200341c0006a41186a200141186a290000370300200341c0006a41106a200141106a290000370300200341c0006a41086a200141086a29000037030020032001290000370340200341a0016a41186a22044200370300200341a0016a41106a22064200370300200341a0016a41086a22074200370300200342003703a001200341e0006a41c8afc90041131081022007200341e0006a41086a220b290000370300200320032900603703a001200341e0006a41dbc3cb0041051081022004200b29000037030020062003290060370300200341e0016a200341a0016a412010f40220032d00e00121052004200341f9016a2900003703002006200341f1016a2900003703002007200341e9016a290000370300200320032900e1013703a0010240024020054101470d00200341e0006a41186a22052004290300370300200341e0006a41106a220a2006290300370300200b2007290300370300200320032903a001370360200341c0006a41012002200810f502200420052903003703002006200a2903003703002007200b290300370300200320032903603703a001200341a0016a2001412010ec08450d01200341f9016a200341b8016a290300370000200341f1016a200341b0016a290300370000200341e9016a200341a8016a290300370000200320032903a0013700e101200341013a00e001200341e0016a10f6020c010b200341c0006a41012002200810f5020b200041003a0000200020133a00012012450d002002102e0b200341f0026a24000f0b200420131045000b1036000b9c0804067f017e057f057e230041d0016b220224002002412036020c20022001360208200241106a2001412010ed02024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ab010240024020022802000d00024002402002280204220520022802244106762201200120054b1b22014106742206417f4c0d000240024020010d00410821070c010b2006102c2207450d060b2001ad2108024002402005450d00200241a8016a41017221090340200241a8016a200241206a10930120022d00a8014101460d0420024188016a41186a220a200941186a29000037030020024188016a41106a220b200941106a29000037030020024188016a41086a220c200941086a2900003703002002200929000037038801200228022422064110490d0420022002280220220141106a3602202002200641706a220d360224200d4110490d04200141086a290000210e2001290000210f200241c8006a41086a200c2903002210370300200241c8006a41106a200b2903002211370300200241c8006a41186a200a2903002212370300200241286a41086a220a2010370300200241286a41106a220b2011370300200241286a41186a220c20123703002002200641606a3602242002200141206a3602202002200229038801221037034820022010370328200141186a290000211020012900102111024020084220882212a722062008a7470d00200641016a22012006490d042006410174220d20012001200d491b22014104200141044b1b220141ffffff1f71200146410374210d200141067421010240024020060d00200241003602a8010c010b200241083602b001200220073602a801200220124206863e02ac010b20024188016a2001200d200241a8016a107d20022802900121012002280288014101460d03200228028c0121072001410676ad21080b200720064106746a220120113703102001200e3703082001200f370300200141186a201037030020012002290328370320200141286a200a290300370300200141306a200b290300370300200141386a200c290300370300200842ffffffff0f83200641016aad4220868421082005417f6a22050d000b0b2007450d0320002008370204200020073602000c040b20010d050b1038000b200842ffffff1f83500d002007102e0b200241003602900120024201370388012002410a36026c2002200241086a360268200220024188016a360248200241bc016a4101360200200242013702ac01200241909dc5003602a8012002200241e8006a3602b801200241c8006a419cebc000200241a8016a103d1a20022802880120022802900110ef020240200228028c01450d00200228028801102e0b200041003602000b2004450d002003102e0b200241d0016a24000f0b1036000b810202047f017e230041206b2202240002400240200128020822034106744104722204417f4c0d00200128020021012004102c2205450d0120024100360208200220043602042002200536020020032002107602402003450d002003410674210303402002200141206a41201074200129030021062002200141086a290300370318200220063703102002200241106a41101074200141106a29030021062002200141186a290300370318200220063703102002200241106a41101074200141c0006a2101200341406a22030d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241206a24000f0b1038000b1036000be90301047f230041c0006b220224004182fcc10021034112210441102105024002400240024002400240024002400240024002400240024002400240024002400240200141ff01710e12000102030405060708090a0b0c0d0e0f1011000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a4184c2cc001044000b41f6fbc1002103410c2104410021050c0f0b41effbc100210341072104410121050c0e0b41e3fbc1002103410c2104410221050c0d0b41cffbc100210341142104410321050c0c0b41c5fbc1002103410a2104410421050c0b0b41b6fbc1002103410f2104410521050c0a0b41abfbc1002103410b2104410621050c090b41a1fbc1002103410a2104410721050c080b418efbc100210341132104410821050c070b4182fbc1002103410c2104410921050c060b41f4fac1002103410e2104410a21050c050b41dafac1002103411a2104410b21050c040b41e0c3cb00210341092104410c21050c030b41c8fac1002103410d21050c020b41b8fac100210341102104410e21050c010b41a7fac100210341112104410f21050b20004183223b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b970302027f047e23004180016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003a00000c010b200328021421042003200341106a41086a28020036026c20032001360268200341c0006a200341e8006a109301410121020240024020032d00404101470d004100210220034100360228200342013703202003410a3602742003200341086a3602702003200341206a36027c200341d4006a410136020020034201370244200341909dc5003602402003200341f0006a360250200341fc006a419cebc000200341c0006a103d1a2003280220200328022810ef022003280224450d012003280220102e0c010b200341386a200341c0006a41196a2900002205370300200341306a200341c0006a41116a2900002206370300200341206a41086a200341c0006a41096a2900002207370300200320032900412208370320200041196a2005370000200041116a2006370000200041096a2007370000200020083700010b200020023a00002004450d002001102e0b20034180016a24000bc210050b7f017e087f087e0b7f230022042105200441c0016b4160712206240002400240200141ffffff3f712001470d0020014105742207417f4c0d0041012108024002402007450d002007102c2208450d0120074105762109200821042007210a0340200a450d0120042000290000370000200441086a200041086a290000370000200441106a200041106a290000370000200441186a200041186a290000370000200441206a2104200a41606a210a200041206a21002009417f6a22090d000b0b2008200110fc02200641e0006a41186a220b4200370300200641e0006a41106a220c4200370300200641e0006a41086a220d42003703002006420037036020064180016a41c8afc9004113108102200d20064180016a41086a2200290000370300200620062900800137036020064180016a41dbafc9004109108102200b2000290000370300200c20062900800137030020064180016a200641e0006a4120108d032006280280012204410120041b210e200629028401420020041b220f422088a72204450d02200e20044105746a2110200641206a410c72211120064180016a410c6a2112200e2113034020064180016a41186a2214201341186a29000037030020064180016a41106a201341106a2900003703002000201341086a2900003703002006201329000037038001200641106a20064180016a10f50720064180016a200628021022152006280218221610b305200d201241086a290200370300200c201241106a2802003602002006201229020037036020062802a00121170240200628028801220a450d00200629038001211820112006290360370200201141086a200d290300370200201141106a200c28020036020020062018370320201721040b2006200a360228200641003602880120062903382119200620062903980122183703382006290330211a2006200629039001221b3703302006290320211c2006200629038001221d3703202006290328211e2006200629038801221f37032802400240201ea722200d00200421170c010b2006201c3703402006201e3703482006201a370350201e422088a721212006201937035802400240201aa722040d00201a422088a721222019422088a721042019a72123202021240c010b202020044105746a212220202125202021240340200b202541186a2900002218370300200c202541106a290000221b370300200d202541086a290000221d37030020002025290000221e370000200041086a2226201d370000200041106a2227201b370000200041186a222820183700002006201e37036020062024360284012006202036028001202541206a212541002104024002400240024020010e020201000b410021042001210a0340200a410176222920046a210920092004200820094105746a2000412010ec084101481b2104200a20296b220a41014b0d000b0b200820044105746a2000412010ec08450d010b20242000290000370000202441186a2028290000370000202441106a2027290000370000202441086a2026290000370000202441206a21240b20252022470d000b200628025c210420062802582123200628025421220b201fa7212a2006202136024c200620203602482006202420206b4105753602500240024020040d00202221240c010b202220044105746a212020222125202221240340200b202541186a2900002218370300200c202541106a290000221b370300200d202541086a290000221d37030020002025290000221e370000200041086a2226201d370000200041106a2227201b370000200041186a222820183700002006201e37036020062024360284012006202236028001202541206a212541002104024002400240024020010e020201000b410021042001210a0340200a410176222920046a210920092004200820094105746a2000412010ec084101481b2104200a20296b220a41014b0d000b0b200820044105746a2000412010ec08450d010b20242000290000370000202441186a2028290000370000202441106a2027290000370000202441086a2026290000370000202441206a21240b20252020470d000b0b20062023360258200620223602542006202420226b41057536025c2006290348211f2006290340211d2006290350211b200629035821180240202a450d000240200628022c41ffffff3f71450d002006280228102e0b200628023841ffffff3f71450d002006280234102e0b2006201d3703202006201f3703282006201b370330200620183703380b2006201f370388012006201b37039001201420183703002006201d37038001200620173602a00102400240201fa722040d002015201610ff010c010b2018a7210a2015201620064180016a10c0050240201f422088a741ffffff3f71450d002004102e0b200a41ffffff3f71450d00201b422088a7102e0b201341206a211302402006280214450d002015102e0b2017210420132010470d000c030b0b1036000b1038000b0240200f42ffffff3f83500d00200e102e0b20064198016a2200420037030020064190016a2204420037030020064180016a41086a220a42003703002006420037038001200641e0006a41c8afc9004113108102200a200641e0006a41086a22092900003703002006200629006037038001200641e0006a41c7c3cb004107108102200020092900003703002004200629006037030020064180016a2002200310c5052000420037030020044200370300200a42003703002006420037038001200641e0006a41c8afc9004113108102200a20092900003703002006200629006037038001200641e0006a41dbc3cb004105108102200020092900003703002004200629006037030020064180016a412010ff0102402007450d002008102e0b200524000bdc0301057f230041f0006b2201240020002d00002102200141186a2203200041196a290000370300200141106a2204200041116a290000370300200141086a2205200041096a2900003703002001200029000137030002400240024020020d00200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a41c8afc9004113108102200141206a41dbc3cb0041051081022000200141206a41086a29000037030020022001290020370300200141c0006a412010ff010c010b200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a200529030037030020012001290300370320200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a41c8afc9004113108102200141e0006a41dbc3cb0041051081022000200141e0006a41086a290000370300200220012900603703004120102c2200450d012001422037026420012000360260200141e0006a200141206a41201074200141c0006a412020012802602200200128026810b2012001280264450d002000102e0b200141f0006a24000f0b1036000be4750d067f017e047f017e0b7f057e027f027e027f027e027f017e177f230041f0036b22002400200041d0016a10ec02200041c0026a41186a22014200370300200041c0026a41106a22024200370300200041c0026a41086a22034200370300200042003703c002200041f0026a418ef9c00041101081022003200041f0026a41086a2204290000370300200020002900f0023703c002200041f0026a41c7c3cb00410710810220012004290000370300200220002900f002370300200041f0026a200041c0026a10f10220002802f002210520002902f4022106200142003703002002420037030020034200370300200042003703c002200041f0026a418ef9c000411010810220032004290000370300200020002900f0023703c002200041f0026a41a8f9c000410910810220012004290000370300200220002900f002370300200041f0026a200041c0026a10f1022005410820051b210720002802f0022208410820081b21092006420020051b2206a7210a20002902f402420020081b220ba7210c0240024002400240024002402006422088a7220d410674220e4106752208200b422088a7220f41067422104106756a22052008490d002005ad42307e2206422088a70d042006a72208417f4c0d04024020080d00410821110c020b2008102c22110d010c050b2007200e6a2112200920106a2113200a41ffffff1f7121144100210a4100210f4100210d41002115410821112007210e200921080340024002400240024020070d00200721050c010b2012200e470d01410021052014450d002007102e0b024020132008460d00200829031021062002200841306a2903003703002003200841286a290300370300200841186a290300210b2001200841386a290300370300200020082903203703c002200841c0006a2108200521070c020b200c41ffffff1f710d040c050b200e29031021062002200e41306a2903003703002003200e41286a290300370300200e41186a290300210b2001200e41386a2903003703002000200e2903203703c002200e41c0006a210e0b200041f0026a41186a22102001290300370300200041f0026a41106a2216200229030037030020042003290300370300200020002903c0023703f00202400240200d2015470d00024002402007450d00417f2012200e6b4106752205201320086b4106756a221520152005491b21050c010b201320086b41067521050b200d417f200541016a221520152005491b6a2205200d490d06200f2005200f20054b1b22054104200541044b1bad42307e2217422088a74541037421052017a7211502400240200d0d00200041003602a0020c010b200041083602a8022000200a3602a402200020113602a0020b20004180026a20152005200041a0026a107d20002802880221052000280280024101460d012000280284022111200541306e21150b2011200a6a220520002903f002370300200429030021172016290300211820102903002119200541286a200b370300200541206a2006370300200541186a2019370300200541106a2018370300200541086a2017370300200a41306a210a200f41026a210f200d41016a210d0c010b0b20050d040c030b0240024002400240200841306e221520054f0d00201541017422082005200820054b1b22054104200541044b1bad42307e2206422088a74541037421052006a721080240024020150d00200041003602f0020c010b200041f0026a41086a4108360200200020113602f0022000201541306c3602f4020b200041c0026a20082005200041f0026a107d200041c8026a280200210520002802c0024101460d0120002802c4022111200541306e21150b200d0d014100210d201121050c020b20050d050c040b200741206a2108200d410674220d41406a4106762101201121050340200841086a2903002106200841106a290300210b200841186a2903002117200841706a220e41086a290300211820082903002119200541206a200e290300370300200541286a2018370300200541186a2017370300200541106a200b370300200541086a200637030020052019370300200541306a2105200841c0006a2108200d41406a220d0d000b200141016a210d0b0240200a41ffffff1f71450d002007102e0b0240200f450d00200f410674210e200941206a21080340200841086a2903002106200841106a290300210b200841186a2903002117200841706a220a41086a290300211820082903002119200541206a200a290300370300200541286a2018370300200541186a2017370300200541106a200b370300200541086a200637030020052019370300200541306a2105200841c0006a2108200d41016a210d200e41406a220e0d000b0b200c41ffffff1f71450d010b2009102e0b0240024020002802d401220820002802d80122056b200d490d0020002802d00121080c010b2005200d6a220e2005490d0120084101742205200e2005200e4b1b22054104200541044b1bad42307e2206422088a74541037421052006a7210e0240024020080d00200041003602f0020c010b200041f0026a41086a4108360200200020002802d0013602f0022000200841306c3602f4020b200041c0026a200e2005200041f0026a107d200041c8026a2802002105024020002802c0024101460d00200020002802c40222083602d0012000200541306e3602d40120002802d80121050c010b20050d020c010b2008200541306c6a2011200d41306c10e9081a200020002802d801200d6a22083602d80102402015450d00201541306c450d002011102e20002802d80121080b02400240024020080d00200041f8026a41013a00002000410c3a00f002200041f0026a10fe01024020002802d4012205450d00200541306c450d0020002802d001102e0b42c0b2cd3b21060c010b200841ffffff3f712008470d022008410574220d417f4c0d0220002802d0012105200d102c2204450d030240024002400240200d410576221020084f0d00200041f0026a41086a4101360200200020043602f0022000200d3602f402200041c0026a200d410476220d2008200d20084b1b220d4104200d41044b1b220d410574200d41ffffff3f71200d46200041f0026a107d200041c0026a41086a280200210d20002802c0024101460d0120002802c4022104200d41057621100b20052005200841306c6a470d01410021160c020b200d0d050c040b200841306c220d41506a41306e210e20042108034020082005290000370000200841186a200541186a290000370000200841106a200541106a290000370000200841086a200541086a290000370000200841206a2108200541306a2105200d41506a220d0d000b200e41016a21160b200041d8026a4200370300200041c0026a41106a4200370300200041c0026a41086a22054200370300200042003703c002200041f0026a41f8fcc60041081081022005200041f0026a41086a2208290000370300200020002900f0023703c002200041f0026a41a8aac800410d108102200241086a2008290000370000200220002900f002370000200041b8016a200041c0026a412010f802200041b8016a41106a290300211a20002903c001211b20002802b8012103200041f0016a418ef9c0004110108102200041c0026a41fbafc90041061081024120102c2205450d03200042203702f402200020053602f002200041f0026a200041f0016a41101074200041f0026a200041c0026a4110107420002802f8022205417f4c0d0220002802f002210d0240024020050d00410121080c010b2005102c2208450d040b2008200d200510e9082108200041e0016a41086a200041f0026a41086a220a280200220d360200200041dc016a41026a220e200041c0026a41026a2d00003a0000200020002903f00222063703e001200020002f00c0023b01dc0120004194026a200d3602002000200536028802200020053602840220002008360280022000200637028c02200041003a009c022000410b360298022000419f026a200e2d00003a0000200020002f01dc013b009d02200041f0026a20004180026a10fa02024002400240024002400240024002400240024020002802b00322050d000240200028028402450d00200028028002102e0b4108211c4100211d024020004190026a280200450d00200028028c02102e0b4100210c0c010b200041c0026a41186a2208200041f0026a41186a290300370300200041c0026a41106a220d200041f0026a41106a290300370300200041c0026a41086a200a290300370300200020002903f0023703c002200041f0026a41286a2903002106200029039003210b20002902b403211741c000102c221c450d0c201c200b370300201c20002903c002370310201c2017370234201c2005360230201c2006370308201c41186a200041c0026a41086a2202290300370300201c41206a200d290300370300201c41286a2008290300370300200041a0026a41186a20004180026a41186a290300370300200041a0026a41106a20004180026a41106a290300370300200041a0026a41086a20004180026a41086a29030037030020002000290380023703a002200041f0026a200041a0026a10fa020240024020002802b00322070d004101210c4101211d0c010b41f400210d20004198036a21014101210c4101211d0340200041c0026a41186a200041f0026a41186a220e2903002206370300200041c0026a41106a200041f0026a41106a220a290300220b3703002002200041f0026a41086a220f2903002217370300200020002903f00222183703c00220012903002119200029039003211e20002902b403211f200e2006370300200a200b370300200f2017370300200020183703f0020240201d200c470d00200c41016a2205200c490d0e200c41017422082005200820054b1b22054104200541044b1b220541ffffff1f7120054641037421082005410674210502400240200c0d00200041003602f0010c010b200041083602f8012000201c3602f0012000200c4106743602f4010b200041e0026a20052008200041f0016a107d20002802e802210520002802e0024101460d0420002802e402211c2005410676210c0b201c200d6a2205414c6a220820193703082008201e3703002005415c6a220820002903f002370300200841086a200f290300370300200841106a200a290300370300200841186a200e2903003703002005201f3702002005417c6a2007360200200d41c0006a210d201d41016a211d200041f0026a200041a0026a10fa0220002802b00322070d000b0b024020002802a402450d0020002802a002102e0b200041b0026a280200450d0020002802ac02102e0b201d41ffffff1f7141386c2220417f4c0d0a0240024020200d00410821210c010b2020102c2221450d0c0b201a420020031b2122201b420020031b212302400240201c201d41067422246a201c470d0041002125420021260c010b200041a8016a20232022427f420010e708200041a8016a41086a2903002206420020002903a801220b42015620064200522006501b22051b211e200b420120051b211f201c201d4106746a2101200041f0026a41306a2103200041f0026a41106a210d4100210e4100212520212105201c21080340200d41186a220f200841286a290300370300200d41106a2207200841206a290300370300200d41086a2202200841186a290300370300200d200841106a2903003703002000200841086a2903003703f802200020082903003703f0022003200841306a10c80120004198016a20002903f00220002903f802201f201e10e70820002903a003210620002802a803210a2005200029039801427f20004198016a41086a290300501b3703002002290300210b20072903002117200f2903002118200d2903002119200541306a200a360200200541206a2018370300200541186a2017370300200541106a200b370300200541086a2019370300200541286a2006370300417f200e200a6a220a200a200e491b210e200541386a2105202541016a21252001200841c0006a2208470d000b200ead42a895b1037e21260b20003502d801211a200020163602a802200020103602a402200020043602a0022025ad221b42387e2206422088a70d0a2006a7220e417f4c0d0a02400240200e0d00410821050c010b200e102c2205450d0c0b200041003602c802200020053602c0022000200e41386e22073602c4020240200e4138490d00200041f0026a41286a210f200041f0026a41086a210d202121082007210a0340200e450d01200a450d04200d2008290308370300200d41186a200841206a290300370300200d41106a200841186a290300370300200d41086a200841106a290300370300200020082903003703f002200f200841286a10c801200541306a200041f0026a41306a290300370300200541286a200f290300370300200541206a200041f0026a41206a290300370300200541186a200041f0026a41186a290300370300200541106a200041f0026a41106a290300370300200541086a200d290300370300200520002903f002370300200541386a2105200e41486a210e200841386a2108200a417f6a220a0d000b0b200020253602c80242002106200042003703f00220004180026a4121200041a0026a200041c0026a200041f0026a10fb022000280280024101460d032000418c026a28020021014108210220004180026a41086a280200212720004180026a41186a280200212820004194026a280200212920004180026a41106a280200212a200028028402212b200041f0026a41186a22054200370300200041f0026a41106a222c4200370300200041f0026a41086a22084200370300200042003703f002200041f0016a418ef9c00041101081022008200041f0016a41086a290000370300200020002900f0013703f002200041c0026a41c7c3cb0041071081022005200041c0026a41086a290000370300202c20002900c002370300200041c0026a200041f0026a10f102024020002802c0022205450d00200041f0026a412010ff0120002902c4022106200521020b2006422088a7220d410674410675220541ffffff3f712005470d0a20054105742208417f4c0d0a0240024020080d004101212d0c010b2008102c222d450d0c0b02400240024002402008410576222e20054f0d002008410476220e2005200e20054b1b22054104200541044b1b220541ffffff3f71200546210e200541057421050240024020080d00200041003602f0020c010b200041f8026a4101360200200020083602f4022000202d3602f0020b200041c0026a2005200e200041f0026a107d200041c8026a280200210520002802c0024101460d0120002802c402212d2005410576212e0b200d0d014100212f0c020b20050d0d0c0c0b200d410674210e200d41067441406a4106762103200041f0026a41206a210d202d2105200221080340200041f0026a41386a200841386a290300370300200041f0026a41306a200841306a290300370300200041f0026a41286a200841286a290300370300200d200841206a290300370300200041c0026a41086a220a200d41086a290300370300200041c0026a41106a220f200d41106a290300370300200041c0026a41186a2207200d41186a2903003703002000200d2903003703c002200541186a2007290300370000200541106a200f290300370000200541086a200a290300370000200520002903c002370000200541206a2105200841c0006a2108200e41406a220e0d000b200341016a212f0b0240200642ffffff1f83500d002002102e0b4200210620004188036a4200370300200041f0026a41106a420037030041082102200041f0026a41086a22054200370300200042003703f002200041f0016a418ef9c00041101081022005200041f0016a41086a290000370300200020002900f0013703f002200041c0026a41a8f9c0004109108102202c41086a200041c0026a41086a290000370000202c20002900c002370000200041c0026a200041f0026a10f102024020002802c0022205450d00200041f0026a412010ff0120002902c4022106200521020b2006422088a7220d410674410675220541ffffff3f712005470d0a20054105742208417f4c0d0a0240024020080d00410121300c010b2008102c2230450d0c0b02400240024002402008410576223120054f0d002008410476220e2005200e20054b1b22054104200541044b1b220541ffffff3f71200546210e200541057421050240024020080d00200041003602f0020c010b200041f8026a4101360200200020083602f402200020303602f0020b200041c0026a2005200e200041f0026a107d200041c8026a280200210520002802c0024101460d0120002802c4022130200541057621310b200d0d01410021050c020b20050d0d0c0c0b200d410674210e200d41067441406a4106762103200041f0026a41206a210d20302105200221080340200041f0026a41386a200841386a290300370300200041f0026a41306a200841306a290300370300200041f0026a41286a200841286a290300370300200d200841206a290300370300200041c0026a41086a220a200d41086a290300370300200041c0026a41106a220f200d41106a290300370300200041c0026a41186a2207200d41186a2903003703002000200d2903003703c002200541186a2007290300370000200541106a200f290300370000200541086a200a290300370000200520002903c002370000200541206a2105200841c0006a2108200e41406a220e0d000b200341016a21050b0240200642ffffff1f83500d002002102e0b2030200510fc020240024020010d00202b21080c010b20004188016a20232022427f420010e70820004188016a41086a29030022064200200029038801220b42015620064200522006501b22051b2117200b420120051b2118200141306c210d202b2105202b21080340200541286a2903002106200541206a290300210b200041c0026a41186a220e200541186a290300370300200041c0026a41106a220a200541106a290300370300200041c0026a41086a220f200541086a290300370300200020052903003703c0020240200b2006844200510d00200041d8006a200642002018420010e808200041e8006a20174200200b420010e808200041f8006a200b42002018420010e808200041f0026a41186a200e290300220b370300200041f0026a41106a200a2903002219370300200041f0026a41086a200f290300221e370300200020002903c002221f3703f002200841186a200b370300200841106a2019370300200841086a201e3703002008201f370300200841286a427f200041f8006a41086a290300220b200029035820002903687c7c221920064200522017420052712000290360420052722000290370420052722019200b5472220e1b3703002008427f2000290378200e1b370320200841306a21080b200541306a2105200d41506a220d0d000b0b024002402008202b6b41306d2232410d2032410d491b223341306c22050d00410821340c010b2005102c2234450d0c0b203220336b2135024020330d00410021360c070b203341306c220d41506a41306e210e20342105202b21080340200841086a2903002106200841106a290300210b200841186a2903002117200841206a290300211820082903002119200541286a200841286a290300370300200541206a2018370300200541186a2017370300200541106a200b370300200541086a200637030020052019370300200541306a2105200841306a2108200d41506a220d0d000b200e41016a213602402035450d002033450d00202b202b203341306c6a203541306c10ea081a0b0240203641144b0d00203641014d0d07200e417f6a2105200e41306c20346a41506a21084102210d034020362005490d032008200d10fd02200841506a2108200d41016a210d2005417f6a2205417f470d000c080b0b2036410176ad42307e2206422088a70d0a2006a72237417f4c0d0a2037102c2238450d0b203441506a2139203441f07e6a213a410421104100213b410021032036213c0340203c213d4100213c4101210d0240203d417f6a220e450d000240024002400240024002402034200e41306c6a203d41306c220f20346a41a07f6a412010ec084100480d00203d417e6a210e203a200f6a21054100213c4100210803400240200e2008470d00203d210d0c080b200841016a2108200541306a2005412010ec08210d200541506a2105200d417f4a0d000b200841016a210d2008417f73203d6a210e0c010b203a200f6a2105024003400240200e4101470d004100210e0c020b200e417f6a210e200541306a2005412010ec082108200541506a210520084100480d000b0b203d200e490d01203d20364b0d02203d200e6b220d410176220a450d002039200f6a21052034200e41306c6a21080340200041c0026a41186a220f200841186a2207290300370300200041c0026a41106a2202200841106a2201290300370300200041c0026a41086a2204200841086a2216290300370300200020082903003703c002200841206a22112903002106200541286a2215290300210b200541086a22132903002117200541106a22122903002118200541186a221429030021192005290300211e2011200541206a22092903003703002007201937030020012018370300201620173703002008201e370300200841286a220729030021172007200b370300201220022903003703002014200f29030037030020132004290300370300200520002903c0023703002015201737030020092006370300200541506a2105200841306a2108200a417f6a220a0d000b0b0240200e0d00200e213c0c050b0240200d41094d0d00200e213c0c050b203d20364b0d02203d200e6b210d200e417f6a21052039200e41306c6a21080340203d2005490d0b2008200d41016a220d10fd022005417f6a220e20054f0d04200841506a2108200e2105200d410a490d000c040b0b200e203d41e4d1cc001057000b203d203641e4d1cc00104d000b203d200e417f6a2205490d07203d203641f4d1cc00104d000b200e41016a213c0b02402003203b470d00203b41016a2205203b490d0c203b41017422082005200820054b1b22054104200541044b1b220541ffffffff017120054641027421082005410374210502400240203b0d00200041003602f0020c010b200041043602f802200020103602f0022000203b4103743602f4020b200041c0026a20052008200041f0026a107d20002802c8022105024020002802c0024101470d0020050d0e0c0d0b20002802c40221102005410376213b0b201020034103746a2205200d3602042005203c360200200341016a22132103024020134102490d0002400240024003400240024002400240201020132203417f6a22134103746a2205280200450d00200341037420106a220a41746a280200220e200528020422084d0d00200341024d0d0820102003417d6a22054103746a280204220d2008200e6a4d0d01200341034d0d08200a41646a280200200d200e6a4b0d080c010b20034103490d012005280204210820102003417d6a22054103746a280204210d0b200d2008490d010b2003417e6a21050b02402003200541016a22124d0d00200320054d0d02201020054103746a2216280204221420162802006a2205201020124103746a22112802002215490d03200520364b0d04201641046a21092034201541306c6a22012011280204220441306c22086a210e200541306c210d02400240200520156b220f20046b22052004490d0020382001200810e908220220086a210a0240024020044101480d00200f20044a0d010b200121052002210d0c020b2034200d6a21072002210d2001210503402005200e200d200e200d412010ec08410048220f1b2208290300370300200541286a200841286a290300370300200541206a200841206a290300370300200541186a200841186a290300370300200541106a200841106a290300370300200541086a200841086a290300370300200d200d41306a200f1b210d200541306a2105200e41306a200e200f1b220e20074f0d02200a200d4b0d000c020b0b2038200e200541306c220810e908220220086a210a0240024020044101480d00200541014e0d010b200e21052002210d0c010b2039200d6a2108200e21050340200541506a210e200a41506a210f2008200e200f200f200e412010ec0841004822071b220d290300370300200841286a200d41286a290300370300200841206a200d41206a290300370300200841186a200d41186a290300370300200841106a200d41106a290300370300200841086a200d41086a290300370300200a200f20071b210a02402001200e200520071b2205490d002002210d0c020b200841506a21082002210d2002200a490d000b0b2005200d200a200d6b220820084130706b10e9081a2009201420046a360200201620153602002011201141086a20032012417f736a41037410ea081a41012103201341014d0d050c010b0b201220034184d2cc00103c000b200520034194d2cc00103c000b2015200541a4d2cc001057000b2005203641a4d2cc00104d000b203c450d060c000b0b20050d0a0c090b2005203641c4d1cc001056000b200720074188decc00103c000b200028028402210d0240201d450d00201d4106742108201c41346a210503400240200528020041ffffff3f71450d002005417c6a280200102e0b200541c0006a2105200841406a22080d000b0b0240200c41ffffff1f71450d00201c102e0b200d4105460d03200041f8026a41023a00002000410c3a00f002200041f0026a10fe010c030b2005203d41f4d1cc001057000b0240203b41ffffffff0171450d002010102e0b2037413070210520374130490d0020372005460d002038102e0b02402035410176220d450d00203541306c202b6a41506a2105202b21080340200041f0026a41286a220e200841286a220a290300370300200041f0026a41206a220f200841206a2207290300370300200041f0026a41186a2202200841186a2201290300370300200041f0026a41106a2203200841106a2204290300370300200041f0026a41086a2210200841086a2216290300370300200020082903003703f002200541086a22112903002106200541106a2215290300210b200541186a22132903002117200541206a22122903002118200541286a2214290300211920082005290300370300200a201937030020072018370300200120173703002004200b370300201620063703002014200e2903003703002012200f290300370300201320022903003703002015200329030037030020112010290300370300200520002903f002370300200541506a2105200841306a2108200d417f6a220d0d000b0b203541ffffff3f712035470d0320354105742205417f4c0d030240024020050d00410121030c010b2005102c2203450d050b0240024002402005410576221420354f0d00200541047622082035200820354b1b22084104200841044b1b220841ffffff3f71200846210d200841057421080240024020050d00200041003602f0020c010b200041f8026a4101360200200020053602f402200020033602f0020b200041c0026a2008200d200041f0026a107d200041c8026a2802002105024020002802c0024101460d0020002802c40221032005410576211420354521380c020b20050d070c060b203545213820350d00410021150c010b203241306c203341306c6b210d203541306c41506a41306e210e20032105202b2108034020052008290000370000200541186a200841186a290000370000200541106a200841106a290000370000200541086a200841086a290000370000200541206a2105200841306a2108200d41506a220d0d000b200e41016a21150b2003201510fc022036ad42187e2206422088a70d032006a72205417f4c0d030240024020050d004108210f0c010b2005102c220f450d050b0240024002400240200541186e221320364f0d00201341017422082036200820364b1b22084104200841044b1bad42187e2206422088a74541037421082006a7210d02400240200541174b0d00200041003602f0020c010b200041f0026a41086a41083602002000200f3602f0022000201341186c3602f4020b200041c0026a200d2008200041f0026a107d200041c8026a280200210520002802c0024101460d0120002802c402210f200541186e21130b20342034203641306c6a2211462212450d01410021020c020b20050d060c050b2034203641306c22056a210d200541506a41306e210e200f210520342108034020052008360200200541106a4200370300200541086a4200370300200541186a2105200d200841306a2208470d000b200e41016a21020b201c201d4106746a2116024002400240201d0d00201c21040c010b201c21050340200541c0006a210420052802302210450d010240200541346a290200221e422088a74105742208450d00200541086a290300211820052903002119201020086a2101410021072010210a024003404100210502400240024020020e020201000b410021052002210803402008410176220e20056a210d200d2005200f200d41186c6a280200200a412010ec084101481b21052008200e6b220841014b0d000b0b200f200541186c6a2208280200200a412010ec080d00200220054d0d02200041386a20184200411020076bad2206420010e808200041c8006a201942002006420010e8082008427f20082903082206427f20002903482000290340420052200041c8006a41086a290300220b20002903387c2217200b547222051b7c220b200b200654220d200841106a220e2903002206427f201720051b7c200dad7c220b200654200b2006511b22051b370308200e427f200b20051b3703000b200741016a21072001200a41206a220a470d000c020b0b2005200241b4f9c000103c000b0240201e42ffffff3f83500d002010102e0b2004210520042016470d000c020b0b20162004460d000340200441c0006a21050240200441346a28020041ffffff3f71450d00200441306a280200102e0b2005210420162005470d000b0b0240200c41ffffff1f71450d00201c102e0b0240024002402002450d00200f280200220d450d00024020024101460d00200f200241186c6a210a200f41186a2105200f41106a2903002106200f290308210b03402005280200220e450d012006200541106a2903002217200b200541086a290300221856200620175620062017511b22081b2106200b201820081b210b200d200e20081b210d200541186a2205200a470d000b0b02402013450d00201341186c450d00200f102e0b200d0d014100210e0c020b4100210e2013450d01201341186c450d01200f102e0c010b200041a0026a41186a200d41186a290000370300200041a0026a41106a200d41106a290000370300200041a0026a41086a200d41086a2900003703002000200d2900003703a0024101210e0b203641ffffff3f712036470d0320364105742205417f4c0d030240024020050d00410121070c010b2005102c2207450d050b02400240024002402005410576220920364f0d00200541047622082036200820364b1b22084104200841044b1b220841ffffff3f71200846210d200841057421080240024020050d00200041003602f0020c010b200041f8026a4101360200200020053602f402200020073602f0020b200041c0026a2008200d200041f0026a107d200041c8026a280200210520002802c0024101460d0120002802c4022107200541057621090b2012450d01410021010c020b20050d060c050b2034203641306c22056a210d200541506a41306e210a2007210520342108034020052008290000370000200541186a200841186a290000370000200541106a200841106a290000370000200541086a200841086a290000370000200541206a2105200d200841306a2208470d000b200a41016a21010b200041f0026a20072001202d202f10fe02200041f0026a41106a280200210c20002802f402211d20002802f002211c20002802fc02223d20004184036a2802002007200110f502200041f9026a2202200041a0026a41086a29030037000020004181036a200041a0026a41106a29030037000020004189036a200041a0026a41186a2903003700002000200e3a00f002200020002903a0023700f102200041f0026a10f602024020002802d80141306c2205450d0020002802d001220e20056a2104200041c0026a41086a2116200041a8036a21100340200e41306a210f0240024002400240024020010e020300010b410021050c010b410021052001210803402008410176220a20056a210d200d20052007200d4105746a200e412010ec084101481b21052008200a6b220841014b0d000b0b200720054105746a200e412010ec08450d010b024002400240024020150e020300010b410021050c010b410021052015210803402008410176220a20056a210d200d20052003200d4105746a200e412010ec084101481b21052008200a6b220841014b0d000b0b200320054105746a200e412010ec08450d010b200041186a200e200e290320200e41286a220829030010cb02200029031821062000200041186a41086a290300220b3703f802200020063703f002024002402006200b844200520d002000200041f0026a3602c002200041c0026a10cc020c010b200042f0f2bda1a7ee9cb9f9003703c002200041f0026a200041c0026a10cd02200041086a200041f0026a2006200b10fd01200041c0026a41106a200041086a41086a2903002218200b7d20002903082217200654ad7d200b20187d2006201754ad7d20172006562018200b562018200b511b22051b3703002000201720067d200620177d20051b3703c80220002005ad3703c0020240024020050d00200020163602f001200041f0016a10cc020c010b200020163602f001200041f0016a10ce020b200041f0026a41186a200b3703002000200637038003200041063a00f8022000410e3a00f002200041f0026a10fe010b200e2903202106200e41186a290000210b200e41106a2900002117200e29000021182010200829030037030020022018370000200241086a200e41086a290000370000200241106a2017370000200241186a200b370000200041053a00f8022000410c3a00f002200020063703a003200041f0026a10fe010b200f210e200f2004470d000b0b201120346b41306e220541ffffff1f712005470d0320054106742208417f4c0d030240024020080d00410821100c010b2008102c2210450d050b4100210d200041003602e802200020103602e0022000200841067622163602e4020240201620054f0d002008410576220e2005200e20054b1b22054104200541044b1b220541ffffff1f71200546410374210e200541067421050240024020080d00200041003602f0020c010b200041f0026a41086a4108360200200020083602f402200020103602f0020b200041c0026a2005200e200041f0026a107d200041c8026a280200210520002802c0024101460d03200020002802c40222103602e0022000200541067622163602e4020b024020120d0020002802d80141306c2101203641306c41506a41306e211520002802d00121042010210f2034210203402002220e41306a2102200121052004210802400340024020050d00420021064200210b0c020b200541506a21052008200e412010ec08210d200841306a220a2108200d0d000b200a41706a22052903002106200541086a290300210b0b200041c0026a41186a2205200e41186a290300370300200041c0026a41106a2208200e41106a290300370300200041c0026a41086a220d200e41086a290300370300200e41286a2903002117200e2903202118200e2903002119200f2006370310200f41186a200b370300200020193703c002200f2018370300200f2017370308200f41386a2005290300370300200f41306a2008290300370300200f20002903c002370320200f41286a200d290300370300200f41c0006a210f20022011470d000b201541016a210d0b2000200d3602e80220004188036a4200370300200041f0026a41106a4200370300200041f0026a41086a22054200370300200042003703f002200041f0016a418ef9c00041101081022005200041f0016a41086a290000370300200020002900f0013703f002200041c0026a41c7c3cb004107108102202c41086a200041c0026a41086a290000370000202c20002900c002370000200041f0026a200041e0026a10ff0202402016450d002010102e0b203541ffffff1f712035470d0320354106742205417f4c0d030240024020050d00410821150c010b2005102c2215450d050b41002108200041003602e802200020153602e0022000200541067622133602e402024002400240201320354f0d00200541057622082035200820354b1b22084104200841044b1b220841ffffff1f71200846410374210d200841067421080240024020050d00200041003602f0020c010b200041f0026a41086a4108360200200020053602f402200020153602f0020b200041c0026a2008200d200041f0026a107d200041c8026a2802002105024020002802c0024101460d00200020002802c40222153602e0022000200541067622133602e4020c020b20050d070c060b20380d010b202b203541306c6a211020002802d80141306c2116203541306c41506a41306e211220002802d00121112015210a202b210f0340200f41286a2903002106200f290320210b200041f0026a41186a2202200f41186a290000370300200041f0026a41106a2201200f41106a290000370300200041f0026a41086a2204200f41086a2900003703002000200f2900003703f002200f41306a210f201621052011210802400340024020050d0042002117420021180c020b200541506a21052008200041f0026a412010ec08210d200841306a220e2108200d0d000b200e41706a22052903002117200541086a29030021180b200041c0026a41186a22052002290300370300200041c0026a41106a22082001290300370300200041c0026a41086a220d2004290300370300200020002903f0023703c002200a2006370308200a200b370300200a2017370310200a41186a2018370300200a20002903c002370320200a41286a200d290300370300200a41306a2008290300370300200a41386a2005290300370300200a41c0006a210a200f2010470d000b201241016a21080b200020083602e80202402027450d00202741306c450d00202b102e0b20004188036a220d4200370300200041f0026a41106a22084200370300200041f0026a41086a22054200370300200042003703f002200041f0016a418ef9c00041101081022005200041f0016a41086a220e290000370300200020002900f0013703f002200041c0026a41a8f9c0004109108102202c41086a220a200041c0026a41086a220f290000370000202c20002900c002370000200041f0026a200041e0026a10ff0202402013450d002015102e0b200d42003703002008420037030020054200370300200042003703f002200041f0016a418ef9c00041101081022005200e290000370300200020002900f0013703f002200041c0026a419ef9c000410a108102200a200f290000370000202c20002900c002370000200041f0026a412010ff0120004184036a203636020020082033360200200541003a00002000410c3a00f002200041f0026a410c6a2034360200200041f0026a10fe01200d42003703002008420037030020054200370300200042003703f002200041f0016a418ef9c00041101081022005200e290000370300200020002900f0013703f002200041c0026a41e0a3c200410e108102200a200f290000370000202c20002900c0023700002000200041f0026a4120108e022000280200210220002802042101200d42003703002008420037030020054200370300200042003703f002200041f0016a418ef9c00041101081022005200e290000370300200020002900f0013703f002200041c0026a41e0a3c200410e108102200a200f290000370000202c20002900c0023700002000200141016a410120021b3602c002200041f0026a4120200041c0026a410410b2010240200c41ffffff3f71450d00203d102e0b0240201d41ffffff3f71450d00201c102e0b02402009450d002007102e0b02402014450d002003102e0b02402031450d002030102e0b0240202e450d00202d102e0b02402028450d002028412c6c2108202a210503400240200541046a280200220d450d00200d41246c450d002005280200102e0b2005412c6a2105200841546a22080d000b0b2029450d002029412c6c450d00202a102e0b201b42f094c0337e201a42c0a8ee3f7e7c20267c2106201a4280e1eb177e210b02402025450d00202541386c21082021412c6a210503400240200528020041ffffff3f71450d002005417c6a280200102e0b200541386a2105200841486a22080d000b0b2006200b7c2106201b42c0f0f50b7e210b02402024450d002020450d002021102e0b2006200b7c2106201a4280c2d72f7e210b024020002802d4012205450d00200541306c450d0020002802d001102e0b2006200b7c21060b200041f0036a240020060f0b20050d010b1038000b1036000b9d0202017f037e230041d0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341909dc5003602382003200341286a360248200341346a419cebc000200341386a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b420021040b2002450d002001102e0b2000200637030820002004370300200041106a2005370300200341d0006a24000bbf0402017f057e23004180016b220524002005200436020c20052003360208200541d4e2cc00200141086a20024108491b36021020054100200241786a2201200120024b1b360214200541d8006a200541106a109301200541386a41086a2202200541e1006a290000370300200541386a41106a2201200541e9006a290000370300200541386a41186a2203200541f1006a290000370300200520052900593703380240024002400240024020052d00584101460d00200541186a41186a2003290300370300200541186a41106a2001290300370300200541186a41086a2002290300370300200520052903383703182005200541086a10ab0102402005280200450d00200541003602580c030b200541d8006a200541086a200528020410920120052802582202450d02200529025c21060240200528020c22014110490d0020052005280208220341106a3602082005200141706a220436020c200441104f0d020b200642ffffff3f83500d022002102e0c020b200041003602400c030b200341086a2900002107200329000021082005200141606a36020c2005200341206a36020820020d010b200041003602400c010b200341186a29000021092003290010210a20002005290318370000200041186a200541186a41186a290300370000200041106a200541186a41106a290300370000200041086a200541186a41086a290300370000200041386a20093703002000200a370330200041286a20073703002000200837032020002006370244200020023602400b20054180016a24000be60203057f017e037f230041d0006b220224002002200128020c200141146a280200108b050240024020022802002203450d00200141086a2104200141106a210502400340024002402004280200220620022902042207422088a722084b0d0020012802002003200610ec08450d010b2007a7450d032003102e0c030b02402005280200450d00200128020c102e0b2001200336020c2005200737020020022003200810ed020240024020022802002203450d002002280208210920022802042108024020012d001c450d00200128020c200128021410ff010b2001280214220a20042802002206490d032002200128020c20066a200a20066b20032009200128021811050020022802400d012008450d002003102e0b2002200128020c2001280214108b05200228020022030d010c030b0b2000200241d00010e9081a2008450d022003102e0c020b2006200a41e89ec5001056000b200041003602400b200241d0006a24000bea6609037f017e017f017e187f037e097f027e067f230041c0036b22052400200541b0026a41086a2206200241086a280200360200200520022902003703b00220054180026a41086a2202200341086a2802003602002005200329020037038002200541e0026a200541b0026a20054180026a10b904200541086a41086a200541e0026a41086a22032802002207360200200520052903e0022208370308200541186a41086a200541f4026a2802002209360200200520052902ec02220a37031820062007360200200520083703b002200220093602002005200a37038002200541e0026a2001200541b0026a20054180026a10e206200541c8006a41086a2206200541f8026a2802003602002005200541f0026a2903003703482003280200210b200541e0026a410c6a280200210220052802e402210c024002400240024002400240024002400240024020052802e0024101460d00200541286a41086a200628020036020020052005290348370328024020042903004201520d00200541286a2004280208200441106a290300200441186a29030010c0040b200c20024102746a210702400240024020010d00200c2103200c210d0c010b200c2103200c210d2002450d0020024102742104200c2103200c210d03402003220241046a210320022802002202450d012002280208220641016a41004c0d022002200636020802400240200241f4006a2d00000d0020022002280200417f6a220636020020060d01200241046a22062006280200417f6a220636020020060d012002102e0c010b200d2002360200200d41046a210d2001417f6a2201450d020b2004417c6a22040d000b200721030b0240200720036b2202450d00200241027541027421020340200328020022012001280200417f6a3602000240200328020022012802000d00200141046a22012001280200417f6a3602002003280200220141046a2802000d002001102e0b200341046a21032002417c6a22020d000b0b02400240200d200c6b220e410275220f41144b0d00200f41014d0d0641022103200c200f417e6a22024102746a21010340200f2002490d022001200310e306200341016a21032001417c6a21012002417f6a2202417f470d000c070b0b200f410176220341ffffffff03712003470d0b20034102742210417f4c0d0b2010102c2211450d0a200c417c6a2112200c41746a2113410421144100211541002116200f2117034020172109410021174101210202402009417f6a2204450d00024002400240024002400240024002400240024002400240200c20044102746a2802002203280208220241016a41004c0d0020032002360208200c2009417e6a22074102746a2802002202280208220141016a41004c0d01200328025021032002200136020820032002280250490d04201320094102746a210341002117410021010340024020072001470d00200921020c0e0b200341046a2802002202280208220441016a41004c0d032002200436020820032802002204280208220641016a41004c0d0420022802502102200420063602082003417c6a2103200141016a2101200220042802504f0d000b200141016a21022001417f7320096a21040c050b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b2013200941027422076a210302400340024020044101470d00410021040c020b200341046a2802002202280208220141016a41004c0d032002200136020820032802002201280208220641016a41004c0d0420022802502102200120063602082004417f6a21042003417c6a210320022001280250490d000b0b20092004490d032009200f4b0d04200920046b22024101762206450d00200c20044102746a2103201220076a21010340200328020021072003200128020036020020012007360200200341046a21032001417c6a21012006417f6a22060d000b0b024020040d00200421170c070b0240200241094d0d00200421170c070b2009200f4b0d04200920046b21022004417f6a2103201220044102746a2101034020092003490d0c2001200241016a220210e3062003417f6a220420034f0d062001417c6a2101200421032002410a490d000c060b0b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b2004200941e4d1cc001057000b2009200f41e4d1cc00104d000b20092004417f6a2203490d062009200f41f4d1cc00104d000b200441016a21170b0240024002400240024020162015460d00201621030c010b201541016a22032015490d10201541017422012003200120034b1b22034104200341044b1b220341ffffffff01712003464102742101200341037421030240024020150d00200541003602e0020c010b200541043602e802200520143602e002200520154103743602e4020b20054180026a20032001200541e0026a107d20052802880221012005280280024101460d01200528028402211420152103200141037621150b201420034103746a2203200236020420032017360200201641016a22182116201841024f0d010c020b20010d0d0c0e0b024002400240024002400240024003400240024002400240201420182216417f6a22184103746a2203280200450d00201641037420146a220641746a2802002204200328020422024d0d00201641024d0d0c20142016417d6a22034103746a2802042201200220046a4d0d01201641034d0d0c200641646a280200200120046a4b0d0c0c010b20164103490d012003280204210220142016417d6a22034103746a28020421010b20012002490d010b2016417e6a21030b02402016200341016a22194d0d00201620034d0d02201420034103746a221a280204221b201a2802006a2203201420194103746a221c280200221d490d032003200f4b0d04200c201d4102746a221e201c280204221f41027422026a210120034102742106024002402003201d6b2207201f6b2203201f490d002011201e200210e908220320026a210402400240201f4101480d002007201f4a0d010b201e2102200321030c020b200c20066a212020032103201e2102034020012802002206280208220741016a41004c0d082006200736020820032802002207280208220941016a41004c0d092006280250210620072009360208200220012003200620072802504922061b2802003602002003200341046a20061b2103200241046a2102200141046a200120061b220120204f0d02200420034b0d000c020b0b201120012003410274220210e908222020026a210402400240201f4101480d00200341014e0d010b20012102202021030c010b201220066a21092001210203402004417c6a22032802002201280208220641016a41004c0d09200120063602082002417c6a22062802002207280208222141016a41004c0d0a2001280250210120072021360208200920062003200120072802504922011b2802003602002004200320011b21040240201e2006200220011b2202490d00202021030c020b2009417c6a21092020210320202004490d000b0b20022003200420036b417c7110e9081a201a41046a201b201f6a360200201a201d360200201c201c41086a20162019417f736a41037410ea081a41012116201841014d0d090c010b0b201920164184d2cc00103c000b200320164194d2cc00103c000b201d200341a4d2cc001057000b2003200f41a4d2cc00104d000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b41bcd9cc00411820054180026a41c4f8c90041d4f8c900103e000b2017450d050c000b0b2002200f41c4d1cc001056000b41bcd9cc00411820054180026a4190b7c00041a0b7c000103e000b2000200c360204200041013602002000410c6a2002360200200041086a200b3602000c030b2003200941f4d1cc001057000b0240201541ffffffff0171450d002014102e0b2010450d002011102e0b20052802302102200528022c21012005200528022822033602402005200136023c2005200336023820052003200241e0006c6a221a36024441042122024002402002450d00200541b0026a410472211c200541e0026a41346a21020240034020054180026a41286a2204200341286a29030037030020054180026a41206a2206200341206a29030037030020054180026a41186a2207200341186a29030037030020054180026a41106a2209200341106a29030037030020054180026a41086a2220200341086a2903003703002005200329030037038002200341306a2802002101200541c8006a41086a22212003413c6a290200370300200541c8006a41106a221e200341c4006a290200370300200541c8006a41186a2216200341cc006a290200370300200541c8006a41206a221f200341d4006a290200370300200541c8006a41286a2214200341dc006a2802003602002005200341346a290200370348024020010d00200341e0006a211a0c020b200541e0026a41286a2004290300370300200541e0026a41206a2006290300370300200541e0026a41186a2007290300370300200541e0026a41106a2009290300370300200541e0026a41086a202029030037030020022005290348370200200241086a2021290300370200200241106a201e290300370200200241186a2016290300370200200241206a201f290300370200200241286a201428020036020020052005290380023703e0022005200136029003200541b0026a200541e0026a10bd07024020052802b00222010d00200341e0006a2203201a470d010c020b0b200541f8006a41106a201c41106a2902002208370300200541d8016a41086a201c41086a290200220a370300200541d8016a41106a2008370300200541d8016a41186a201c41186a2902002223370300200541d8016a41206a201c41206a29020022243703002005200341e0006a3602402005201c29020022253703d801200541b0016a41206a22032024370300200541b0016a41186a22022023370300200541b0016a41106a22042008370300200541b0016a41086a2206200a370300200520253703b001412c102c2222450d0720222001360200202220052903b0013702042022410c6a2006290300370200202241146a20042903003702002022411c6a2002290300370200202241246a2003290300370200200541a0016a41086a200541386a41086a2903002208370300200520052903383703a001024002402008a7220120052802ac01221a470d0041012126410121270c010b200541e0026a41346a2102200541b0026a410472211c41012126410121270240034020054180026a41286a22042001220341286a29030037030020054180026a41206a2206200341206a29030037030020054180026a41186a2207200341186a29030037030020054180026a41106a2209200341106a29030037030020054180026a41086a2220200341086a2903003703002005200329030037038002200341306a2802002101200541c8006a41086a22212003413c6a290200370300200541c8006a41106a221e200341c4006a290200370300200541c8006a41186a2216200341cc006a290200370300200541c8006a41206a221f200341d4006a290200370300200541c8006a41286a2214200341dc006a2802003602002005200341346a2902003703482001450d01200541e0026a41286a2004290300370300200541e0026a41206a22042006290300370300200541e0026a41186a22062007290300370300200541e0026a41106a22072009290300370300200541e0026a41086a2209202029030037030020022005290348370200200241086a2021290300370200200241106a201e290300370200200241186a2016290300370200200241206a201f290300370200200241286a201428020036020020052005290380023703e0022005200136029003200541b0026a200541e0026a10bd07024020052802b00222010d00200341e0006a2201201a470d010c020b200541f8006a41106a201c41106a2902002208370300200541d8016a41086a201c41086a290200220a370300200541d8016a41106a2008370300200541d8016a41186a201c41186a2902002223370300200541d8016a41206a201c41206a29020022243703002005200341e0006a3602a8012005201c29020022253703d801200541b0016a41206a22032024370300200541b0016a41186a22202023370300200541b0016a41106a22212008370300200541b0016a41086a221e200a370300200520253703b0012004200329030037030020062020290300370300200720212903003703002009201e290300370300200520052903b0013703e0020240024020272026470d00202641016a22032026490d0d202641017422202003202020034b1b22034104200341044b1bad422c7e2208422088a74541027421032008a721200240024020260d0020054100360280020c010b2005410436028802200520223602800220052026412c6c360284020b200541b0026a2020200320054180026a107d20052802b802210320052802b0024101460d0120052802b40221222003412c6e21260b20222027412c6c6a220320013602002003410c6a2009290300370200200320052903e002370204200341146a20072903003702002003411c6a2006290300370200200341246a2004290300370200202741016a212720052802a801220120052802ac01221a470d010c030b0b2003450d0a0c090b2005200341e0006a3602a8010b200541a0016a10ac020c020b2005201a3602400b200541386a10ac0241002127410021260b200541053602b00220222027412c6c6a2128202221290240034020292028460d012029280208220341ffffffff03712003470d072029280200210402400240200341027422020d004104212a0c010b2002102c222a450d070b02400240024002402002410276222b20034f0d00200241017622012003200120034b1b22014104200141044b1b220141ffffffff03712001464102742106200141027421010240024020020d00200541003602e0020c010b200541043602e802200520023602e4022005202a3602e0020b20054180026a20012006200541e0026a107d20052802880221022005280280024101460d01200528028402212a2002410276212b0b20042004200341246c22016a470d01410021030c020b2002450d090c080b200441206a21032001415c6a41246e2104202a2102034020022003280200360200200341246a2103200241046a21022001415c6a22010d000b200441016a21030b4101450d0720034103742202417f4c0d070240024020020d004108212c0c010b2002102c222c450d070b0240024002402002410376222d20034f0d00200241027622012003200120034b1b22014104200141044b1b41037421010240024020020d00200541003602e0020c010b200541083602e802200520023602e4022005202c3602e0020b20054180026a20014108200541e0026a107d200528028802210202402005280280024101460d00200528028402212c2002410376212d0c020b2002450d0a0c090b20030d00410021130c010b20034102742201417c6a4102762104202c2103202a2102034020032002350200370300200341086a2103200241046a21022001417c6a22010d000b200441016a21130b2029412c6a212e202c201341037422046a21064200210820042103202c210202400240024002400340024020030d00024020130d004100212041082107410021130c050b0240428094ebdc0320082008428094ebdc035422031b2008428094ebdc0320031b7d222f4200520d00201341ffffffff01712013470d0e20134103742203417f4c0d0e2003102c2207450d0d2007202c200310e9081a200341037621200c050b202f2013ad2230822124202f20308021252006202c6b2203410376220241ffffffff00712002470d0d20034101742203417f4c0d0d0240024020030d004108211f0c010b2003102c221f450d0d0b02400240024002402003410476223120024f0d00200341037622012002200120024b1b22024104200241044b1b220241ffffffff00712002464103742101200241047421020240024020030d00200541003602e0020c010b200541083602e802200520033602e4022005201f3602e0020b20054180026a20022001200541e0026a107d20052802880221032005280280024101460d01200528028402211f200341047621310b201341037441786a2232410376211541002102201f2103202c21010340200341086a200129030037030020032002360200200341106a2103200241016a2102200141086a2101200441786a22040d000b201541016a210f02402032419f014b22330d002032450d07200f410474201f6a41706a210741002104201521010340200f20012203417f6a2201490d040240200f20016b22204102490d00201f20034104746a220341086a2206290300201f20014104746a220241086a2209290300220a5a0d00200228020021212002200329030037030020092006290300370300024020204103490d002004417f6a210941002102200721030340200341186a2206290300200a5a0d0120092002460d06200341086a20062903003703002003200341106a22062903003703002006210320042002417f6a2202470d000b200621030b2003200a370308200320213602000b200741706a21072004417f6a210420010d000c080b0b200f410176220341ffffffff00712003470d1020034104742234417f4c0d102034102c2212450d0f201f41706a2135201f41586a213641002110410421144100211e200f211803400240024020182207417f6a22030d0041012106410021180c010b0240024002400240024002400240201f20034104746a41086a29030020074104742209201f6a41686a290300220a540d002007417e6a2104203620096a210241002118410021030340024020042003470d00200721060c090b200341016a2103200a200229030022235a2101200241706a21022023210a20010d000b200341016a21062003417f7320076a21030c010b203620096a210202400340024020034101470d00410021030c020b2003417f6a2103200a20022903002223542101200241706a21022023210a20010d000b0b20072003490d012007200f4b0d02200720036b22064101762204450d00201f20034104746a2102203520096a21010340200541e0026a41086a2209200241086a2220290300370300200520022903003703e002200141086a2221290300210a200220012903003703002020200a37030020212009290300370300200120052903e002370300200241106a2102200141706a21012004417f6a22040d000b0b024020030d00200321180c060b0240200641094d0d00200321180c060b2007200f4b0d03200320076b2101201f20034104746a2109034020072003417f6a2218490d050240200720186b22064102490d00201f20034104746a220341086a2204290300201f20184104746a220241086a2220290300220a5a0d00200228020021212002200329030037030020202004290300370300024020064103490d0041012102200921030340200341186a2204290300200a5a0d01200120026a4101460d06200341086a20042903003703002003200341106a2204290300370300200421032001200241016a22026a0d000b200421030b2003200a370308200320213602000b2018450d06200941706a21092001417f6a2101201821032006410a4f0d060c000b0b2003200741e4d1cc001057000b2007200f41e4d1cc00104d000b2002200641d4d1cc00103c000b20072003417f6a2218490d002007200f41f4d1cc00104d000b2018200741f4d1cc001057000b02400240024002400240201e2010460d00201e21030c010b201041016a22032010490d15201041017422022003200220034b1b22034104200341044b1b220341ffffffff01712003464102742102200341037421030240024020100d00200541003602e0020c010b200541043602e802200520143602e002200520104103743602e4020b20054180026a20032002200541e0026a107d20052802880221022005280280024101460d01200528028402211420102103200241037621100b201420034103746a2203200636020420032018360200201e41016a2219211e201941024f0d010c020b2002450d130c120b0240024002400340024002400240024020142019221e417f6a22194103746a2203280200450d00201e41037420146a220641746a2802002204200328020422024d0d00201e41024d0d082014201e417d6a22034103746a2802042201200220046a4d0d01201e41034d0d08200641646a280200200120046a4b0d080c010b201e4103490d01200328020421022014201e417d6a22034103746a28020421010b20012002490d010b201e417e6a21030b0240201e200341016a221b4d0d00201e20034d0d02201420034103746a221a2802042211201a2802006a22032014201b4103746a221c280200221d490d032003200f4b0d04201a41046a2117201f201d4104746a2221201c280204221641047422026a210420034104742106024002402003201d6b220720166b22032016490d0020122021200210e908222020026a21010240024020164101480d00200720164a0d010b20212103202021020c020b201f20066a210920202102202121030340200320042002200441086a290300200241086a2903005422061b2207290300370300200341086a200741086a2903003703002002200241106a20061b2102200341106a2103200441106a200420061b220420094f0d02200120024b0d000c020b0b201220042003410474220210e908220720026a21010240024020164101480d00200341014e0d010b20042103200721020c010b203520066a21062004210303402006200341706a2204200141706a2209200141786a290300200341786a2903005422021b2220290300370300200641086a202041086a2903003703002001200920021b2101024020212004200320021b2203490d00200721020c020b200641706a21062007210220072001490d000b0b20032002200120026b41707110e9081a2017201120166a360200201a201d360200201c201c41086a201e201b417f736a41037410ea081a4101211e201941014d0d050c010b0b201b201e4184d2cc00103c000b2003201e4194d2cc00103c000b201d200341a4d2cc001057000b2003200f41a4d2cc00104d000b2018450d060c000b0b2003450d0f0c0e0b410120026b202041d4d1cc00103c000b2001200f41c4d1cc001056000b200341786a2103200820022903007c220a2008542101200241086a2102200a21082001450d000b0240202d450d00202c102e0b411e212041b4d2cc0021030c030b0240201041ffffffff0171450d002014102e0b2034450d002012102e0b0240024002400240024002400240024002400240200842ff93ebdc03560d00428094ebdc032030802123410021030240202f2030540d004100210320132102034020152003490d09201f20034104746a2201290308220a20257c2208200a540d08200141086a2008370300024020082023540d00200341016a20137021030b2002417f6a22020d000b0b2024500d01034020152003490d06201f20034104746a2202290308220a42017c2208200a540d05200241086a2008370300024020082023540d00200341016a20137021030b2024427f7c222450450d000c020b0b201f29030821232013417f6a220121030240202f2030540d00034020152003490d04201f20034104746a220242002002290308220820257d220a200a20085622021b200a20021b220a370308200320012003417f6a2204200420034b1b200a2023561b21032024202520087d420020021b7c21242013417f6a22130d000b0b2024500d00034020152003490d0202400240201f20034104746a22022903082208427f7c220a2008580d0020012003417f6a2202200220034b1b21030c010b200241086a200a370300200320012003417f6a2202200220034b1b200a2023561b21032024427f7c21240b20244200520d000b0b02400240024020330d002032450d0a200f410474201f6a41706a2107410021040340200f20152203417f6a2215490d030240200f20156b22204102490d00201f20034104746a2203280200201f20154104746a220228020022064f0d0020022903082108200241086a200341086a29030037030020022003290300370300024020204103490d002004417f6a210941002101200721030340200341106a220228020020064f0d0120092001460d05200341086a200341186a290300370300200320022903003703002002210320042001417f6a2201470d000b200221030b20032008370308200320063602000b200741706a21072004417f6a210420150d000c0b0b0b200f410176220341ffffffff00712003470d1320034104742235417f4c0d132035102c2215450d12201f41706a2113201f41506a211041002112410421144100211e200f211803400240024020182209417f6a22030d0041012107410021180c010b0240024002400240024002400240201f20034104746a28020020094104742220201f6a41606a2802002202490d002009417e6a2107201020206a210141002118410021030340024020072003470d00200921070c090b200341016a21032002200128020022044f2106200141706a21012004210220060d000b200341016a21072003417f7320096a21030c010b201020206a210102400340024020034101470d00410021030c020b2003417f6a2103200220012802002204492106200141706a21012004210220060d000b0b20092003490d012009200f4b0d02200920036b22074101762204450d00201f20034104746a2102201320206a21010340200541e0026a41086a2206200241086a2220290300370300200520022903003703e002200141086a22212903002108200220012903003703002020200837030020212006290300370300200120052903e002370300200241106a2102200141706a21012004417f6a22040d000b0b024020030d00200321180c060b0240200741094d0d00200321180c060b2009200f4b0d03200320096b2104201f20034104746a2120034020092003417f6a2218490d050240200920186b22074102490d00201f20034104746a2203280200201f20184104746a220228020022064f0d0020022903082108200241086a200341086a29030037030020022003290300370300024020074103490d0041012102202021030340200341106a220128020020064f0d01200420026a4101460d06200341086a200341186a29030037030020032001290300370300200121032004200241016a22026a0d000b200121030b20032008370308200320063602000b2018450d06202041706a21202004417f6a2104201821032007410a4f0d060c000b0b2003200941e4d1cc001057000b2009200f41e4d1cc00104d000b2002200741d4d1cc00103c000b20092003417f6a2218490d002009200f41f4d1cc00104d000b2018200941f4d1cc001057000b02400240024002400240201e2012460d00201e21030c010b201241016a22032012490d18201241017422022003200220034b1b22034104200341044b1b220341ffffffff01712003464102742102200341037421030240024020120d00200541003602e0020c010b200541043602e802200520143602e002200520124103743602e4020b20054180026a20032002200541e0026a107d20052802880221022005280280024101460d01200528028402211420122103200241037621120b201420034103746a2203200736020420032018360200201e41016a2219211e201941024f0d010c020b2002450d160c150b0240024002400340024002400240024020142019221e417f6a22194103746a2203280200450d00201e41037420146a220641746a2802002204200328020422024d0d00201e41024d0d082014201e417d6a22034103746a2802042201200220046a4d0d01201e41034d0d08200641646a280200200120046a4b0d080c010b201e4103490d01200328020421022014201e417d6a22034103746a28020421010b20012002490d010b201e417e6a21030b0240201e200341016a221b4d0d00201e20034d0d02201420034103746a221a2802042211201a2802006a22032014201b4103746a221c280200221d490d032003200f4b0d04201a41046a2117201f201d4104746a2221201c280204221641047422026a210120034104742106024002402003201d6b220720166b22032016490d0020152021200210e908220320026a21040240024020164101480d00200720164a0d010b20212102200321030c020b201f20066a210920032103202121020340200220012003200128020020032802004922061b2207290300370300200241086a200741086a2903003703002003200341106a20061b2103200241106a2102200141106a200120061b220120094f0d02200420034b0d000c020b0b201520012003410474220210e908220920026a21040240024020164101480d00200341014e0d010b20012102200921030c010b201320066a21062001210203402006200241706a2203200441706a2201200128020020032802004922071b2220290300370300200641086a202041086a2903003703002004200120071b2104024020212003200220071b2202490d00200921030c020b200641706a21062009210320092004490d000b0b20022003200420036b41707110e9081a2017201120166a360200201a201d360200201c201c41086a201e201b417f736a41037410ea081a4101211e201941014d0d050c010b0b201b201e4184d2cc00103c000b2003201e4194d2cc00103c000b201d200341a4d2cc001057000b2003200f41a4d2cc00104d000b2018450d090c000b0b410120016b202041d4d1cc00103c000b2015200f41c4d1cc001056000b2003200f419cd4cc00103c000b2003200f418cd4cc00103c000b41b4d3cc00412641fcd3cc00105d000b2003200f41ecd3cc00103c000b41b4d3cc00412641dcd3cc00105d000b2003200f41a4d3cc00103c000b0240201241ffffffff0171450d002014102e0b2035450d002015102e0b200f4104742201410475220341ffffffff01712003470d0920034103742202417f4c0d090240024020020d00410821070c010b2002102c2207450d090b02402002410376222020034f0d00200241027622042003200420034b1b22034104200341044b1b220341ffffffff01712003464103742104200341037421030240024020020d00200541003602e0020c010b200541083602e802200520023602e402200520073602e0020b20054180026a20032004200541e0026a107d20052802880221032005280280024101460d082005280284022107200341037621200b201f41086a2103200141706a410476210420072102034020022003290300370300200341106a2103200241086a2102200141706a22010d000b200441016a21132031450d00201f102e0b20134103742201410375220341ffffffff03712003470d0820034102742202417f4c0d080240024020020d00410421090c010b2002102c2209450d080b02400240024002402002410276222120034f0d00200241017622042003200420034b1b22034104200341044b1b220341ffffffff03712003464102742104200341027421030240024020020d00200541003602e0020c010b200541043602e802200520023602e402200520093602e0020b20054180026a20032004200541e0026a107d20052802880221032005280280024101460d012005280284022109200341027621210b200720016a22062007470d01410021010c020b2003450d0a0c090b4100210120092103200721020340200320022903002208a7417f2008428080808010541b2204418094ebdc032004418094ebdc03491b360200200141016a2101200341046a21032006200241086a2202470d000b0b02402020450d002007102e0b0240202d450d00202c102e0b02402001410274410275220320292802082202200220034b1b2201450d00202928020041206a210320092102034020032002280200360200200241046a2102200341246a21032001417f6a22010d000b0b410021032021450d002009102e0b0240202b450d00202a102e0b202e21292003450d000b200541033602b00220052020ad4220862003ad843702b4020b024020052802b00222034105470d00200e4102752203ad42307e2208422088a70d062008a72202417f4c0d060240024020020d004108211f0c010b2002102c221f450d060b0240024002400240200241306e221420034f0d00201441017422012003200120034b1b22014104200141044b1bad42307e2208422088a74541037421012008a72104024002402002412f4b0d00200541003602e0020c010b200541e0026a41086a41083602002005201f3602e0022005201441306c3602e4020b20054180026a20042001200541e0026a107d20054188026a28020021022005280280024101460d01200528028402211f200241306e21140b200c200d470d014100211a200c21020c020b2002450d080c070b200e417c6a41027641016a211a200541e0026a41086a2107200541e0026a41106a2109200541e0026a41186a212041002106201f2101200c2102024003402002220341046a21020240200328020022030d002006211a0c020b2003280208220441016a222141004c0d05200320213602082007200341dc006a2900003703002009200341e4006a2900003703002020200341ec006a2900003703002005200341d4006a2900003703e002200441026a41004c0d062003200436020820054180026a41086a2204200729030037030020054180026a41106a2221200929030037030020054180026a41186a221e2020290300370300200520052903e00237038002200341c8006a29030021082003290340210a20032003280200417f6a2216360200024020160d00200341046a22162016280200417f6a221636020020160d002003102e0b20012005290380023703002004290300212320212903002124201e2903002125200141286a2008370300200141206a200a370300200141186a2025370300200141106a2024370300200141086a2023370300200141306a2101200641016a2106200d2002470d000b200d21020b200d20026b220e41027521030b0240200e450d00200341027421030340200228020022012001280200417f6a3602000240200228020022012802000d00200141046a22012001280200417f6a3602002002280200220141046a2802000d002001102e0b200241046a21022003417c6a22030d000b0b0240200b41ffffffff0371450d00200c102e0b2000201f36020420004100360200200041186a2027360200200041146a2026360200200041106a20223602002000410c6a201a360200200041086a20143602000c010b200041086a20052902b402370200200020033602042000410136020002402027450d002027412c6c21022022210303400240200341046a2802002201450d00200141246c450d002003280200102e0b2003412c6a2103200241546a22020d000b0b02402026450d002026412c6c450d002022102e0b0240200e450d00200c210203402002220328020022022002280200417f6a360200200341046a21020240200328020022012802000d00200141046a22012001280200417f6a3602002003280200220341046a2802000d002003102e0b200d2002470d000b0b200b41ffffffff0371450d00200c102e0b200541c0036a24000f0b41bcd9cc00411820054180026a41f09cc50041c09dc500103e000b41bcd9cc00411820054180026a41f09cc50041d09dc500103e000b2003450d010b1036000b1038000bad0f07167f017e017f017e017f017e027f230041306b220224000240024002400240024002400240200141144b0d00200141014d0d0620002001417e6a22034105746a2104410221050340200320014b0d022004200510fa07200541016a2105200441606a21042003417f6a2203417f470d000c070b0b2001410176220341ffffff3f712003470d0220034105742206417f4c0d022006102c2207450d01200041606a2108200041a07f6a21094104210a4100210b4100210c2001210d0340200d210e4100210d410121050240200e417f6a220f450d000240024002400240024002402000200f4105746a200e410574221020006a41406a412010ec084100480d00200e417e6a210f200920106a21034100210d4100210403400240200f2004470d00200e21050c080b200441016a2104200341206a2003412010ec082105200341606a21032005417f4a0d000b200441016a21052004417f73200e6a210f0c010b200920106a2103024003400240200f4101470d004100210f0c020b200f417f6a210f200341206a2003412010ec082104200341606a210320044100480d000b0b200e200f490d01200e20014b0d02200e200f6b22054101762211450d00200820106a21032000200f4105746a21040340200241186a2210200441186a2212290000370300200241106a2213200441106a2214290000370300200241086a2215200441086a221629000037030020022004290000370300200341086a22172900002118200341106a2219290000211a200341186a221b290000211c200420032900003700002012201c3700002014201a37000020162018370000201b2010290300370000201920132903003700002017201529030037000020032002290300370000200341606a2103200441206a21042011417f6a22110d000b0b0240200f0d00200f210d0c050b0240200541094d0d00200f210d0c050b200e20014b0d02200e200f6b2105200f417f6a21032008200f4105746a21040340200e2003490d0a2004200541016a220510fa072003417f6a220f20034f0d04200441606a2104200f21032005410a490d000c040b0b200f200e41e4d1cc001057000b200e200141e4d1cc00104d000b200e200f417f6a2203490d06200e200141f4d1cc00104d000b200f41016a210d0b02400240024002400240200c200b460d00200c21030c010b200b41016a2203200b490d07200b41017422042003200420034b1b22034104200341044b1b220341ffffffff017120034641027421042003410374210302400240200b0d00200241003602000c010b200241043602082002200a3602002002200b4103743602040b200241206a200320042002107d2002280228210420022802204101460d012002280224210a200b21032004410376210b0b200a20034103746a220320053602042003200d360200200c41016a221b210c201b41024f0d010c020b20040d040c050b02400240024003400240024002400240200a201b220c417f6a221b4103746a2203280200450d00200c410374200a6a221141746a280200220f200328020422044d0d00200c41024d0d08200a200c417d6a22034103746a28020422052004200f6a4d0d01200c41034d0d08201141646a2802002005200f6a4b0d080c010b200c4103490d0120032802042104200a200c417d6a22034103746a28020421050b20052004490d010b200c417e6a21030b0240200c200341016a220e4d0d00200c20034d0d02200a20034103746a2216280204221d20162802006a2203200a200e4103746a22172802002219490d03200320014b0d04201641046a211e200020194105746a22142017280204221541057422046a210f2003410574210502400240200320196b221020156b22032015490d0020072014200410e908221320046a21110240024020154101480d00201020154a0d010b20142103201321040c020b200020056a2112201321042014210303402003200f2004200f2004412010ec0841004822101b2205290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a2900003700002004200441206a20101b2104200341206a2103200f41206a200f20101b220f20124f0d02201120044b0d000c020b0b2007200f2003410574220410e908221320046a21110240024020154101480d00200341014e0d010b200f2103201321040c010b200820056a2105200f21030340200341606a2104201141606a210f20052004200f200f2004412010ec0841004822121b2210290000370000200541186a201041186a290000370000200541106a201041106a290000370000200541086a201041086a2900003700002011200f20121b2111024020142004200320121b2203490d00201321040c020b200541606a21052013210420132011490d000b0b20032004201120046b41607110e9081a201e201d20156a360200201620193602002017201741086a200c200e417f736a41037410ea081a4101210c201b41014d0d050c010b0b200e200c4184d2cc00103c000b2003200c4194d2cc00103c000b2019200341a4d2cc001057000b2003200141a4d2cc00104d000b200d450d050c000b0b2003200141c4d1cc001056000b1036000b1038000b2003200e41f4d1cc001057000b0240200b41ffffffff0171450d00200a102e0b2006450d002007102e0b200241306a24000b840403027f017e097f230041306b220224000240024020014102490d00200041306a22032000412010ec08417f4a0d002000290300210420002003290300370300200241286a2205200041286a2206290300370300200241206a200041206a2207290300370300200241186a2208200041186a2209290300370300200241106a220a200041106a220b290300370300200241086a220c200041086a220d290300370300200d200341086a290300370300200b200341106a2903003703002009200341186a2903003703002007200341206a2903003703002006200341286a2903003703002002200437030041012107024020014103490d00410020016b2109200041e0006a210341012107034020032002412010ec08417f4a0d0120012007460d03200341506a22062003290300370300200641286a200341286a290300370300200641206a200341206a290300370300200641186a200341186a290300370300200641106a200341106a290300370300200641086a200341086a290300370300200341306a21032009200741016a22076a417f470d000b0b2000200741306c6a22032002290300370300200341286a2005290300370300200341206a200241206a290300370300200341186a2008290300370300200341106a200a290300370300200341086a200c2903003703000b200241306a24000f0b2001200141d4d1cc00103c000bd809010c7f230041c0006b220524002003410020041b21062001410020021b2107200341206a200320041b2108200141206a200120021b2109200120024105746a210a200320044105746a210b410021034100210c4101210d410021014100210e4101210f0240024003400240024020060d0020070d012000200d36020c200020013602082000200e3602042000200f360200200041146a2003360200200041106a200c360200200541c0006a24000f0b02402007450d00024020062007412010ec0822020d00410020092009200a4622021b2107410020082008200b4622041b21062009200941206a20021b21092008200841206a20041b21080c030b2002417f4a0d01200541186a2202200641186a290000370300200541106a2204200641106a290000370300200541086a2210200641086a29000037030020052006290000370300024002402003200c470d00200341016a22062003490d062003410174220c2006200c20064b1b22064104200641044b1b220641ffffff3f71200646210c200641057421060240024020030d00200541003602300c010b200541013602382005200d360230200520034105743602340b200541206a2006200c200541306a107d2005280228210620052802204101460d012005280224210d2006410576210c0b200d20034105746a22062005290300370000200641186a2002290300370000200641106a2004290300370000200641086a2010290300370000410020082008200b4622021b2106200341016a21032008200841206a20021b21080c030b20060d030c040b200541186a2202200641186a290000370300200541106a2204200641106a290000370300200541086a2210200641086a29000037030020052006290000370300024002402003200c470d00200341016a22072003490d05200341017422062007200620074b1b22074104200741044b1b220741ffffff3f712007462106200741057421070240024020030d00200541003602300c010b200541013602382005200d360230200520034105743602340b200541206a20072006200541306a107d2005280228210720052802204101460d012005280224210d2007410576210c0b200d20034105746a22072005290300370000200741186a2002290300370000200741106a2004290300370000200741086a201029030037000041002107410020082008200b4622021b2106200341016a21032008200841206a20021b21080c020b20070d020c030b200541186a2202200741186a290000370300200541106a2204200741106a290000370300200541086a2210200741086a29000037030020052007290000370300024002402001200e470d00200141016a22072001490d042001410174220e2007200e20074b1b22074104200741044b1b220741ffffff3f71200746210e200741057421070240024020010d00200541003602300c010b200541013602382005200f360230200520014105743602340b200541206a2007200e200541306a107d2005280228210720052802204101460d012005280224210f2007410576210e0b200f20014105746a22072005290300370000200741186a2002290300370000200741106a2004290300370000200741086a2010290300370000410020092009200a4622021b2107200141016a21012009200941206a20021b21090c010b0b2007450d010b1036000b1038000b810202047f017e230041206b2202240002400240200128020822034106744104722204417f4c0d00200128020021012004102c2205450d0120024100360208200220043602042002200536020020032002107602402003450d002003410674210303402002200141206a41201074200129030021062002200141086a290300370318200220063703102002200241106a41101074200141106a29030021062002200141186a290300370318200220063703102002200241106a41101074200141c0006a2101200341406a22030d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241206a24000f0b1038000b1036000bc30402057f027e230041f0006b2203240002400240024020022802004113470d00200241086a2d00004104470d00200341c8006a2001108103200341306a200328024822042003280250108203200341d8006a41086a2003413b6a290000370300200341d8006a41106a2205200341c3006a2f00003b0100200320032900333703584101210120032d0032210620032d003121070240024020032d00304101460d00410021010c010b200341186a41106a20052f01003b0100200341186a41086a200341d8006a41086a290300370300200320032903583703180b0240200328024c450d002004102e0b2001450d01200341106a200341186a41106a2f010022013b0100200341086a200341186a41086a29030022083703002003200329031822093703002003413a6a2008370100200341c2006a20013b0100200320063a0031200320073a003020032009370132200341d8006a200341306a10e30220032802582204200328026010e40241ff017121010240200328025c450d002004102e0b20014102460d000240200241146a280200220441c40141c70120011b470d00200228020c41abcecc0041efcfcc0020011b200410ec08450d010b200041800e3b0001200041013a0000200041036a41033a00000c020b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a42003703000c010b200041800e3b0001200041013a0000200041036a41013a00000b200341f0006a24000bf50101047f230041306b22022400200241b6d1cc004106108102200241106a41d6f9c0004109108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bc20602027f027e23004180016b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041003a00000c010b200341106a2802002102200328020c2104200341003a007c024002402002450d00200320012d00003a0068200341013a007c024020024101460d00200320012d00013a0069200341023a007c20024102460d00200320012d00023a006a200341033a007c20024103460d00200320012d00033a006b200341043a007c20024104460d00200320012d00043a006c200341053a007c20024105460d00200320012d00053a006d200341063a007c20024106460d00200320012d00063a006e200341073a007c20024107460d00200320012d00073a006f200341083a007c20024108460d00200320012d00083a0070200341093a007c20024109460d00200320012d00093a00712003410a3a007c2002410a460d00200320012d000a3a00722003410b3a007c2002410b460d00200320012d000b3a00732003410c3a007c2002410c460d00200320012d000c3a00742003410d3a007c2002410d460d00200320012d000d3a00752003410e3a007c2002410e460d00200320012d000e3a00762003410f3a007c2002410f460d00200320012d000f3a0077200341103a007c20024110460d00200320012d00103a0078200341113a007c20024111460d00200320012d00113a0079200341123a007c20024112460d00200320012d00123a007a200341133a007c20024113460d00200341186a41086a200341e8006a41086a2903002205370300200320012d00133a007b200341186a41106a200341e8006a41106a2802002202360200200341143a007c200320032903682206370318200041116a2002360000200041096a200537000020002006370001410121020c020b200341003a007c0b20034100360220200342013703182003410a360234200320033602302003200341186a360264200341fc006a41013602002003420137026c200341909dc5003602682003200341306a360278200341e4006a419cebc000200341e8006a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b410021020b200020023a00002004450d002001102e0b20034180016a24000bd7c40108017f017e057f017e057f017e217f077e230041e00e6b2201240010840342002102024002400240024020004101460d00200141b0046a41186a22034200370300200141b0046a41106a22044200370300200141b0046a41086a22054200370300200142003703b004200141b8076a41a8f8c60041041081022005200141b8076a41086a2206290000370300200120012900b8073703b00420014198096a41c98bc500410b108102200320014198096a41086a22072900003703002004200129009809370300200141a0046a200141b0046a10850320012903a804210820012802a0042109200141d0046a41186a220a4200370300200141d0046a41106a220b4200370300200141d0046a41086a220c4200370300200142003703d004200141800d6a41a8f8c6004104108102200c200141800d6a41086a220d290000370300200120012900800d3703d004200141800d6a41fa8bc500410a108102200a200d290000370300200b20012900800d37030020014190046a200141d0046a10850320014180046a20012903980442002001280290041b420042e012420010e8080240024002400240024020012903880450450d002001290380042102200342003703002004420037030020054200370300200142003703b004200141b8076a41a8f8c600410410810220052006290000370300200120012900b8073703b00420014198096a41e38bc500410b108102200441086a20072900003700002004200129009809370000200141f0036a200141b0046a108503200220012903f803420020012802f0031b7c220e2002540d014200210242002008420020091b2208200e7d220e200e2008561b42e012540d05200141b0046a41186a22034200370300200141b0046a41106a220f420037030041082107200141b0046a41086a22064200370300200142003703b004200141800d6a41a081ca0041071081022006200141800d6a41086a2205290000370300200120012900800d3703b004200141800d6a41e4d1c100410c10810220032005290000370300200f20012900800d370300200141e8036a200141b0046a4120108e0220012802ec03211020012802e803211120034200370300200f420037030020064200370300200142003703b004200141800d6a41a081ca00410710810220062005290000370300200120012900800d3703b004200141800d6a4188d2c100410d10810220032005290000370300200f20012900800d370300200141b0046a1086032112200141c00c6a41186a22034200370300200141c00c6a41106a220c4200370300200141c00c6a41086a22064200370300200142003703c00c200141800d6a41a081ca00410710810220062005290000370300200120012900800d3703c00c200141800d6a41e4d1c100410c10810220032005290000370300200c20012900800d370300200141e0036a200141c00c6a4120108e0220012802e403210d20012802e0032113200141f0046a10870320034200370300200c420037030020064200370300200142003703c00c200141800d6a41a081ca00410710810220062005290000370300200120012900800d3703c00c200141800d6a41f09dc500410a10810220032005290000370300200c20012900800d370300200141800d6a200141c00c6a10880320012902840d2102200120012802800d2205410120051b22033602e005200120033602d80520012002420020051b22023e02dc05200120032002422088a74105746a3602e405200141003602e805200141800d6a200141d8056a10bd0102400240200141c00d6a280200450d0041d000102c2207450d0a2007200141800d6a41d00010e9081a200141b8076a41106a200141d8056a41106a280200360200200141b8076a41086a200141d8056a41086a290300370300200120012903d8053703b80720014198096a200141b8076a10bd01024002400240200141d8096a2802000d0041012105410121030c010b41d000210641012105410121030340200141800d6a20014198096a41d00010e9081a024020032005470d00200541016a22092005490d0d2005410174220a2009200a20094b1b22094104200941044b1bad42d0007e2202422088a74541037421092002a7210a0240024020050d00200141003602f80a0c010b200141083602800b200120073602f80a2001200541d0006c3602fc0a0b200141e00c6a200a2009200141f80a6a107d20012802e80c210520012802e00c4101460d0320012802e40c2107200541d0006e21050b200720066a200141800d6a41d00010e9081a200641d0006a2106200341016a210320014198096a200141b8076a10bd0120012802d8090d000b0b024020012802bc0741ffffff3f71450d0020012802b807102e0b2001200336028805200120053602840520012007360280050c020b2005450d090c0a0b20014100360288052001420837038005024020012802dc0541ffffff3f71450d0020012802d805102e0b41002105410021030b200141d80c6a4200370300200141d00c6a4200370300200141c00c6a41086a22064200370300200142003703c00c200141800d6a41a081ca0041071081022006200141800d6a41086a2209290000370300200120012900800d3703c00c200141800d6a41e4d1c100410c108102200c41086a2009290000370000200c20012900800d370000200141d8036a200141c00c6a4120108e0220012802dc03210620012802d8032109200141b8076a41bed8c800410810810220014198096a41a4fcc800411210810220012006410020091b3602e00c2001200141e00c6a410410a3013703f80a200141800d6a410c6a200141e00c6a41046a3602002001200141f80a6a41086a3602840d2001200141e00c6a3602880d2001200141f80a6a3602800d200141d8056a200141800d6a107c20012802e005220941206a2206417f4c0d070240024020060d004101210a0c010b2006102c220a450d090b200141003602880d200120063602840d2001200a3602800d200141800d6a200141b8076a41101074200141800d6a20014198096a41101074200141800d6a20012802d805220620091074024020012802dc05450d002006102e0b20012802800d220620012802880d108903024020012802840d450d002006102e0b200141d80c6a4200370300200141d00c6a4200370300200141c00c6a41086a22064200370300200142003703c00c200141800d6a41a081ca0041071081022006200141800d6a41086a2209290000370300200120012900800d3703c00c200141800d6a41e4d1c100410c108102200c41086a2009290000370000200c20012900800d370000200141d0036a200141c00c6a4120108e0220012802d403210620012802d0032109200141b8076a41bed8c800410810810220014198096a41edd8c800410e10810220012006410020091b3602e00c2001200141e00c6a410410a3013703f80a200141800d6a410c6a200141e00c6a41046a3602002001200141f80a6a41086a3602840d2001200141e00c6a3602880d2001200141f80a6a3602800d200141d8056a200141800d6a107c20012802e005220941206a2206417f4c0d070240024020060d004101210a0c010b2006102c220a450d090b200141003602880d200120063602840d2001200a3602800d200141800d6a200141b8076a41101074200141800d6a20014198096a41101074200141800d6a20012802d805220620091074024020012802dc05450d002006102e0b20012802800d220620012802880d108903024020012802840d450d002006102e0b024020030d00200141013a00840d200141083a00800d200141800d6a10fe012005450d05200541d0006c450d052007102e0c050b200141800d6a20014180056a10c601200141a3096a200141800d6a41086a280200360000200120012903800d37009b092001418c0d6a2001419f096a290000370000200141023a00840d200141083a00800d20012001290098093700850d200141800d6a10fe0120012802f8042114200141a0056a20014180056a41086a28020036020020012014360294052001200d410020131b220a36029005200120012903800537039805200141b8056a20014190056a41086a10c601200141003602d005200142013703c80520012802b805211520012802bc05211620012802c00521134104102c2205450d08200142043702d404200120053602d0042001200a3602800d200141d0046a200141800d6a41041074200141800d6a41f996c500108a0320014198096a20012802800d220320012802880d108b03200129029c09420020012802980922051b21022005410120051b2117024020012802840d450d002003102e0b200120024220883e02b404200120173602b004200141c8036a200141b0046a10ab01024020012802c803450d00410021184104210c4100210d0c040b20012802cc03220c20012802b40441246e22052005200c4b1bad42247e2208422088a70d072008a72205417f4c0d070240024020050d00410421190c010b2005102c2219450d090b200541246e211a0240200c0d004100210c0c030b4100210d034002400240024020012802b40422034104490d00200d41016a211820012802b0042207280000211b20012003417c6a22093602b4042001200741046a3602b00441002105200141003a00a00d2003417b6a210302400340200141003a00a80520092005460d01200141800d6a20056a200720056a220641046a2d00003a00002001200641056a3602b0042001200541016a22063a00a00d200120033602b4042003417f6a21032006210520064120470d000b20014198096a41186a2205200141800d6a41186a29030037030020014198096a41106a2203200141800d6a41106a29030037030020014198096a41086a2207200141800d6a41086a290300370300200120012903800d37039809200641ff01714120490d01200141d8056a41086a20072903002208370300200141f80a6a41186a22062005290300370300200141f80a6a41106a22052003290300370300200141f80a6a41086a22032008370300200120012903980922083703d805200120083703f80a200141e00c6a41186a22072006290300370300200141e00c6a41106a22062005290300370300200141e00c6a41086a22092003290300370300200120012903f80a3703e00c200d201a470d03201a41016a2205201a4f0d020c0c0b200541ff0171450d00200141003a00a00d0b410021184104210c0240201a450d00201a41246c450d002019102e0b4100210d0c060b201a41017422032005200320054b1b22054104200541044b1bad42247e2208422088a74541027421052008a7210302400240201a0d00200141003602800d0c010b200141043602880d200120193602800d2001201a41246c3602840d0b20014198096a20032005200141800d6a107d20012802a009210502402001280298094101470d0020050d0b0c0a0b200128029c092119200541246e211a0b2019200d41246c6a2205201b360200200520012903e00c3702042005410c6a2009290300370200200541146a20062903003702002005411c6a20072903003702002018210d2018200c460d030c000b0b41e8b2c40041fa0041e4b3c400105d000b41e8b2c40041fa0041f4b3c400105d000b200c410020191b210d201a410020191b21182019410420191b210c0b200141800d6a41f996c500200141d0046a108c0320014198096a20012802800d220320012802880d108d032001280298092105200129029c092108024020012802840d450d002003102e0b2008420020051b210820012802d804211c20012802d404211d20012802d004211e02402002a7450d002017102e0b2005410120051b211f2008a72119024002400240024002402013450d002008422088a7211a2015201341d0006c6a2117200141800d6a41d0006a2120200141800d6a410c6a211b200141b8076a41c4006a21212015210941002122024002400340200141d8056a41386a22232009220541386a290300370300200141d8056a41306a2224200541306a290300370300200141d8056a41286a2225200541286a290300370300200141d8056a41206a2226200541206a290300370300200141d8056a41186a2206200541186a290300370300200141d8056a41106a2207200541106a290300370300200141d8056a41086a2213200541086a290300370300200141b8076a41086a2203200541cc006a280200360200200120052903003703d8052001200541c4006a2902003703b807200541d0006a2109200541c0006a2802002205450d04200141f80a6a41386a22272023290300370300200141f80a6a41306a22232024290300370300200141f80a6a41286a22242025290300370300200141f80a6a41206a22252026290300370300200141f80a6a41186a22262006290300370300200141f80a6a41106a22282007290300370300200141f80a6a41086a22292013290300370300200141a8056a41086a222a2003280200360200200120012903d8053703f80a200120012903b8073703a805200141b8076a41386a2027290300370300200141b8076a41306a2023290300370300200141b8076a41286a2024290300370300200141b8076a41206a2025290300370300200141b8076a41186a2026290300370300200141b8076a41106a202829030037030020032029290300370300200120012903f80a3703b807200120053602f807202120012903a805370200202141086a202a2802003602004104102c2205450d0c200142043702840d200120053602800d2001200a36029809200141800d6a20014198096a41041074201b41086a41002900819745370000201b41002900f996453700002001200141b8076a36029c0d200141d8056a200141800d6a10ae01024020012802840d450d0020012802800d102e0b200141800d6a200141d8056a108e0320012802800d220320012802880d108f022105024020012802840d450d002003102e0b024002400240024020050d0020014198096a200141b8076a41d00010e9081a200141e00c6a200141c8056a10c801200141800d6a20014198096a41d00010e9081a202041086a200141e00c6a41086a280200360200202020012903e00c37020020014198096a200141d8056a108e03200128029809220520012802a009200141800d6a108f030240200128029c09450d002005102e0b024020012802c40d2205450d00200541306c450d0020012802c00d102e0b024020012802d40d41ffffff3f71450d0020012802d00d102e0b200141b0046a41186a22232006290300370300200141b0046a41106a22242007290300370300200141b0046a41086a22252013290300370300200120012903d8053703b004410021050240200d0e020302000b41002105200d2103034020052003410176220620056a2207200c200741246c6a280200200a4b1b2105200320066b220341014b0d000c020b0b20012802fc072205450d02200541306c450d0220012802f807102e0c020b200c200541246c6a2802002203200a460d0020052003200a496a21050b200141800d6a41186a22062023290300370300200141800d6a41106a22072024290300370300200141800d6a41086a22132025290300370300200120012903b0043703800d200d2005490d020240200d2018470d00201841016a22032018490d0d201841017422262003202620034b1b22034104200341044b1bad42247e2202422088a74541027421032002a721260240024020180d0020014100360298090c010b200141043602a0092001200c360298092001201841246c36029c090b200141e00c6a2026200320014198096a107d20012802e80c210320012802e00c4101460d0420012802e40c210c200341246e21180b200c200541246c6a220341246a2003200d20056b41246c10ea081a2003200a3602002003411c6a2006290300370200200341146a20072903003702002003410c6a2013290300370200200320012903800d370204200141d0046a41186a22032023290300370300200141d0046a41106a22062024290300370300200141d0046a41086a22072025290300370300200120012903b0043703d0040240201a2019470d00201941016a22052019490d0d201941017422132005201320054b1b22054104200541044b1b220541ffffff3f712005462113200541057421050240024020190d00200141003602800d0c010b200141013602880d2001201f3602800d200120194105743602840d0b20014198096a20052013200141800d6a107d20012802a009210502402001280298094101470d0020050d0f0c0e0b200128029c09211f200541057621190b200d41016a210d201f201a4105746a220520012903d004370000200541186a2003290300370000200541106a2006290300370000200541086a200729030037000041012122201a41016a211a0b20092017470d000b201721090c030b2005200d1045000b20030d090c080b2016450d01201641d0006c450d012015102e0c010b024020172009460d0003402009220541d0006a21090240200541c4006a2802002203450d00200341306c450d00200541c0006a280200102e0b20172009470d000b0b02402016450d00201641d0006c450d002015102e0b2022410171450d00024002400240201a450d00201a4105742107200141c40d6a2105201f21030340200141d0046a2003108e03200141800d6a20012802d004220920012802d80410900320014198096a41086a2213200141800d6a41086a29030037030020014198096a41106a2217200141800d6a41106a29030037030020014198096a41186a221b200141800d6a41186a29030037030020014198096a41206a2221200141800d6a41206a29030037030020014198096a41286a2223200141800d6a41286a29030037030020014198096a41306a2224200141800d6a41306a29030037030020014198096a41386a2225200141800d6a41386a290300370300200141e00c6a41086a2226200541086a290200370300200141e00c6a41106a2227200541106a290200370300200141e00c6a41186a2228200541186a280200360200200120012903800d37039809200120052902003703e00c024020012802c00d2206450d00200141b8076a41386a2025290300370300200141b8076a41306a2024290300370300200141b8076a41286a2023290300370300200141b8076a41206a2021290300370300200141b8076a41186a201b290300370300200141b8076a41106a2017290300370300200141b8076a41086a2013290300370300200141d8056a41086a2026290300370300200141d8056a41106a2027290300370300200141d8056a41186a202828020036020020012001290398093703b807200120012903e00c3703d8050b024020012802d404450d002009102e0b20060d02200341206a2103200741606a22070d000b0b42002102410821090c010b200141f80a6a41386a2205200141b8076a41386a290300370300200141f80a6a41306a2213200141b8076a41306a290300370300200141f80a6a41286a2217200141b8076a41286a290300370300200141f80a6a41206a221b200141b8076a41206a290300370300200141f80a6a41186a2221200141b8076a41186a290300370300200141f80a6a41106a2223200141b8076a41106a290300370300200141f80a6a41086a2224200141b8076a41086a290300370300200141c00c6a41086a2225200141d8056a41086a290300370300200141c00c6a41106a2226200141d8056a41106a290300370300200141c00c6a41186a2227200141d8056a41186a280200360200200120012903b8073703f80a200120012903d8053703c00c41e000102c2209450d08200920012903f80a37030020092006360240200920012903c00c370244200941386a2005290300370300200941306a2013290300370300200941286a2017290300370300200941206a201b290300370300200941186a2021290300370300200941106a2023290300370300200941086a2024290300370300200941cc006a2025290300370200200941d4006a2026290300370200200941dc006a2027280200360200024020074120470d0042818080801021020c010b200341206a2113201f201a4105746a222241606a2115200141800d6a41c4006a210542818080801021020340201321030340200141d0046a2003108e03200141800d6a20012802d004220720012802d80410900320014198096a41086a2213200141800d6a41086a222929030037030020014198096a41106a2217200141800d6a41106a222a29030037030020014198096a41186a221b200141800d6a41186a222029030037030020014198096a41206a2221200141800d6a41206a29030037030020014198096a41286a2223200141800d6a41286a29030037030020014198096a41306a2224200141800d6a41306a29030037030020014198096a41386a2225200141800d6a41386a290300370300200141e00c6a41086a2226200541086a290200370300200141e00c6a41106a2227200541106a290200370300200141e00c6a41186a2228200541186a280200360200200120012903800d37039809200120052902003703e00c024020012802c00d2206450d00200141b8076a41386a2025290300370300200141b8076a41306a2024290300370300200141b8076a41286a2023290300370300200141b8076a41206a2021290300370300200141b8076a41186a201b290300370300200141b8076a41106a2017290300370300200141b8076a41086a2013290300370300200141f80a6a41086a2026290300370300200141f80a6a41106a2027290300370300200141f80a6a41186a202828020036020020012001290398093703b807200120012903e00c3703f80a0b024020012802d404450d002007102e0b024020060d002022200341206a2203470d010c030b0b200141d8056a41386a2207200141b8076a41386a2217290300370300200141d8056a41306a2213200141b8076a41306a221b290300370300200141d8056a41286a2227200141b8076a41286a2221290300370300200141d8056a41206a2228200141b8076a41206a2223290300370300200141d8056a41186a2216200141b8076a41186a2224290300370300200141d8056a41106a222b200141b8076a41106a2225290300370300200141d8056a41086a222c200141b8076a41086a2226290300370300200141c00c6a41086a222d200141f80a6a41086a290300370300200141c00c6a41106a222e200141f80a6a41106a290300370300200141c00c6a41186a222f200141f80a6a41186a280200360200200120012903b8073703d805200120012903f80a3703c00c2026202c2903003703002025202b290300370300202420162903003703002023202829030037030020212027290300370300201b201329030037030020172007290300370300200120012903d8053703b8072029202d290300370300202a202e2903003703002020202f280200360200200120012903c00c3703800d024002402002422088a722072002a7460d00200221080c010b200741016a22132007490d0920074101742227201320132027491b22134104201341044b1bad42e0007e2208422088a74541037421132008a721270240024020070d0020014100360298090c010b200141083602a00920012009360298092001200741e0006c36029c090b200141f80a6a2027201320014198096a107d20012802800b211320012802f80a4101460d0420012802fc0a2109201341e0006ead21080b200341206a21132009200741e0006c6a220720012903b807370300200741106a2025290300370300200741086a2026290300370300201b290300210e20172903002130202129030021312023290300213220242903002133200741c0006a2006360200200741186a2033370300200741206a2032370300200741286a2031370300200741386a2030370300200741306a200e370300200741c4006a20012903800d370200200741cc006a2029290300370200200741d4006a202a290300370200200741dc006a2020280200360200200842ffffffff0f8320024280808080107c4280808080708384210220152003470d000b0b200141a00d6a200d3602002001419c0d6a2018360200200141940d6a201a360200200141900d6a20193602002001200c3602980d2001201f36028c0d2001201c3602880d2001201d3602840d2001201e3602800d200d41246c41046a2205417f4c0d060240024020050d00410121030c010b2005102c2203450d080b200141003602c007200120053602bc07200120033602b807200d200141b8076a10760240200d450d00200c200d41246c6a2106200c210503402001200528020036029809200141b8076a20014198096a410410744120102c2203450d092001422037029c09200120033602980920014198096a200541046a220541201074200141b8076a200128029809220320012802a00910740240200128029c09450d002003102e0b200541206a22052006470d000b0b20014198096a41f996c500108a03200128029809220520012802a009200141b8076a10c5020240200128029c09450d002005102e0b024020012802bc07450d0020012802b807102e0b20014198096a41f996c500200141800d6a108c03200128029809220520012802a0092001418c0d6a1091030240200128029c09450d002005102e0b0240201d450d00201e102e0b0240201941ffffff3f71450d00201f102e0b2018450d02201841246c450d02200c102e0c020b0240201d450d00201e102e0b0240201941ffffff3f71450d00201f102e0b4100210902402018450d00201841246c450d00200c102e0b0c010b20130d050c040b024020012802cc0541ffffff3f71450d0020012802c805102e0b024020090d0020012802980521070240200141a0056a2802002205450d00200541d0006c2103200741c4006a21050340024020052802002206450d00200641306c450d002005417c6a280200102e0b200541d0006a2105200341b07f6a22030d000b0b024020014190056a410c6a2802002205450d00200541d0006c450d002007102e0b41bceacc00410c10ef0241adeacc00410f10ef020c010b4100210602400240024002402014410a6e417f732002422088a722076a220320074b0d0020144101201441014b1b2205418094ebdc036e2005418094ebdc03704100476a22064101200641014b1b220620054b0d012005200341036c220320052003491b20066ead428094ebdc037e200520066ead8042ffffffff0f834280bbb0217e428094ebdc0380a721060b200741ffffffff03712007470d0620074102742205417f4c0d060240024020050d004104210c0c010b2005102c220c450d080b02402005410276220d20074f0d00200541017622032007200320074b1b22034104200341044b1b220341ffffffff0371200346410274210d200341027421030240024020050d00200141003602800d0c010b200141880d6a4104360200200120053602840d2001200c3602800d0b20014198096a2003200d200141800d6a107d200141a0096a280200210502402001280298094101460d00200128029c09210c2005410276210d0c030b20050d080c070b20070d01410021050c020b41d0d8c800411941bcd7cc001039000b20072103200c2105034020052006360200200541046a21052003417f6a22030d000b200721050b200141b8036a20092007200c20052001280290051092034104102c2205450d04200142043702bc07200120053602b8072001200a3602800d200141b8076a200141800d6a41041074200141cc076a41002900819745370200200141002900f996453702c407200141b3096a200141b8076a41186a280200360000200141ab096a200141b8076a41106a290300370000200141a3096a20012903c007370000200120012903b80737009b09200141890d6a200141a0096a290000370000200141910d6a20014198096a41106a290000370000200141800d6a41186a200141af096a290000370000200141a00d6a41013a0000200141053a00800d20012001290098093700810d200141800d6a10fe010240200d450d00200c102e0b02402007450d00200741e0006c2103200941d4006a210503400240200541706a2802002206450d00200641306c450d002005416c6a280200102e0b0240200528020041ffffff3f71450d002005417c6a280200102e0b200541e0006a2105200341a07f6a22030d000b0b02402002a72205450d00200541e0006c450d002009102e0b20012802980521070240200141a0056a2802002205450d00200541d0006c2103200741c4006a21050340024020052802002206450d00200641306c450d002005417c6a280200102e0b200541d0006a2105200341b07f6a22030d000b0b2001419c056a2802002205450d00200541d0006c450d002007102e0b024020012802f40441ffffff3f71450d0020012802f004102e0b200141b0046a41186a22184200370300200141b0046a41106a221a4200370300200141b0046a41086a22174200370300200142003703b004200141800d6a41a081ca0041071081022017200141800d6a41086a2205290000370300200120012900800d3703b004200141800d6a41f09dc500410a108102200441086a2005290000370000200420012900800d370000200141800d6a200141b0046a10880320012802800d2205410120051b212920012902840d420020051b2202a7211f0240024002402002422088a72205450d002029200541057422076a2119200141b8076a41206a212a2001419c0b6a2103202921050340200141c00c6a41186a2206200541186a2209290000370300200141c00c6a41106a220a200541106a220c290000370300200141c00c6a41086a220d200541086a2213290000370300200120052900003703c00c20132900002102200c29000021082005290000210e200141d0046a41186a220c2009290000370300200141d0046a41106a22092008370300200141d0046a41086a221320023703002001200e3703d004200141b8076a41186a2006290300370300200141b8076a41106a200a290300370300200141b8076a41086a200d290300370300200120012903c00c3703b807200141f80a6a200141b8076a10bf01200141e00c6a41086a200141f80a6a41086a290300370300200141e00c6a41106a200141f80a6a41106a290300370300200141e00c6a41186a200141f80a6a41186a29030037030020014190056a41086a200341086a280200360200200120012903f80a3703e00c200120032902003703900520012802980b21062018200c290300370300201a200929030037030020172013290300370300200120012903d0043703b00402402006450d00202a20012903e00c370300202a41086a200141e00c6a41086a290300370300202a41106a200141e00c6a41106a290300370300202a41186a200141e00c6a41186a290300370300200141b8076a41186a200141b0046a41186a2903002202370300200141b8076a41106a200141b0046a41106a2903002208370300200141b8076a41086a200141b0046a41086a290300220e370300200141800d6a41086a2203200e370300200141800d6a41106a22092008370300200141800d6a41186a220a2002370300200141800d6a41206a220c200141b8076a41206a290300370300200141800d6a41286a220d200141b8076a41286a290300370300200141800d6a41306a2213200141b8076a41306a290300370300200141800d6a41386a2217200141b8076a41386a290300370300200120012903b00422023703b807200120023703800d200141c8056a41086a221820014190056a41086a28020036020020014198096a41386a221a201729030037030020014198096a41306a2217201329030037030020014198096a41286a2213200d29030037030020014198096a41206a220d200c29030037030020014198096a41186a220c200a29030037030020014198096a41106a220a200929030037030020014198096a41086a2209200329030037030020012001290390053703c805200120012903800d37039809200141b8056a41086a22032018280200360200200120012903c8053703b805200141d8056a41386a2218201a290300370300200141d8056a41306a221a2017290300370300200141d8056a41286a221b2013290300370300200141d8056a41206a2213200d290300370300200141d8056a41186a220d200c290300370300200141d8056a41106a220c200a290300370300200141d8056a41086a220a200929030037030020012001290398093703d805200141a8056a41086a22092003280200360200200120012903b8053703a80541d000102c2217450d08201720012903d80537030020172006360240201720012903a805370244201741386a2018290300370300201741306a201a290300370300201741286a201b290300370300201741206a2013290300370300201741186a200d290300370300201741106a200c290300370300201741086a200a290300370300201741cc006a2009280200360200024020074120470d0041012128410121270c040b200541206a210a201941606a2120200141fc056a210341012128410121270340200a21050340200141c00c6a41186a2206200541186a2207290000370300200141c00c6a41106a2209200541106a220a290000370300200141c00c6a41086a220c200541086a220d290000370300200120052900003703c00c200141d0046a41186a22132007290000370300200141d0046a41106a2207200a290000370300200141d0046a41086a220a200d290000370300200120052900003703d004200141b8076a41186a221a2006290300370300200141b8076a41106a221b2009290300370300200141b8076a41086a2209200c290300370300200120012903c00c3703b807200141d8056a200141b8076a10bf01200141e00c6a41086a2221200141d8056a41086a220c290300370300200141e00c6a41106a2223200141d8056a41106a220d290300370300200141e00c6a41186a2224200141d8056a41186a221829030037030020014190056a41086a2225200341086a280200360200200120012903d8053703e00c200120032902003703900520012802f8052106200141b0046a41186a22262013290300370300200141b0046a41106a22132007290300370300200141b0046a41086a2207200a290300370300200120012903d0043703b00402402006450d00202a20012903e00c370300202a41086a2021290300370300202a41106a2023290300370300202a41186a2024290300370300201a20262903002202370300201b2013290300220837030020092007290300220e370300200141800d6a41086a2207200e370300200141800d6a41106a220a2008370300200141800d6a41186a22132002370300200141800d6a41206a221a200141b8076a41206a290300370300200141800d6a41286a221b200141b8076a41286a290300370300200141800d6a41306a2221200141b8076a41306a290300370300200141800d6a41386a2223200141b8076a41386a290300370300200120012903b00422023703b807200120023703800d200141c8056a41086a2224202528020036020020014198096a41386a2225202329030037030020014198096a41306a2223202129030037030020014198096a41286a2221201b29030037030020014198096a41206a221b201a29030037030020014198096a41186a221a201329030037030020014198096a41106a2213200a29030037030020014198096a41086a220a200729030037030020012001290390053703c805200120012903800d37039809200141b8056a41086a22072024280200360200200120012903c8053703b805200141f80a6a41386a22242025290300370300200141f80a6a41306a22252023290300370300200141f80a6a41286a22232021290300370300200141f80a6a41206a2221201b290300370300200141f80a6a41186a221b201a290300370300200141f80a6a41106a221a2013290300370300200141f80a6a41086a2213200a29030037030020012001290398093703f80a200141a8056a41086a220a2007280200360200200120012903b8053703a805200c2013290300370300200d201a2903003703002018201b290300370300200141d8056a41206a22132021290300370300200141d8056a41286a221a2023290300370300200141d8056a41306a221b2025290300370300200141d8056a41386a22212024290300370300200120012903f80a3703d8052009200a280200360200200120012903a8053703b8070240024020272028470d00202841016a22072028490d0c2028410174220a2007200a20074b1b22074104200741044b1bad42d0007e2202422088a74541037421072002a7210a0240024020280d00200141003602800d0c010b200141083602880d200120173602800d2001202841d0006c3602840d0b20014198096a200a2007200141800d6a107d20012802a00921072001280298094101460d01200128029c092117200741d0006e21280b200541206a210a2017202741d0006c6a220720012903d805370300200d2903002102201829030021082013290300210e201a2903002130201b290300213120212903002132200c290300213320072006360240200741086a2033370300200741386a2032370300200741306a2031370300200741286a2030370300200741206a200e370300200741186a2008370300200741106a2002370300200720012903b807370244200741cc006a2009280200360200202741016a212720202005470d030c070b20070d0b0c0a0b2019200541206a2205470d000c050b0b0b200541206a2105200741606a22070d000b0b0240201f41ffffff3f71450d002029102e0b410821174100212741042105410021280c010b0240201f41ffffff3f71450d002029102e0b202741d0006c4104722205417f4c0d030b2005102c2203450d032010410020111b2107200141003602880d200120053602840d200120033602800d2027200141800d6a10760240202741d0006c2205450d00201720056a21032017210503402005200141800d6a10a1012003200541d0006a2205470d000b0b20012802880d210320012802800d210620012007360298094117102c2205450d032005412f3a0012200541e1d8013b0010200542e8d2cda3f7cddcb4e300370008200542f3cacd9b97ed9bb7df00370000200520012802980936001320054117200620031093032005102e024020012802840d450d0020012802800d102e0b02402027450d00202741d0006c2103201741c4006a21050340024020052802002206450d00200641306c450d002005417c6a280200102e0b200541d0006a2105200341b07f6a22030d000b0b02402028450d00202841d0006c450d002017102e0b200141b8076a109403024020012903b80722024202510d0020012903c0072108200141800d6a200141c8076a280200220641016a109503200141b0036a20012802800d220320012802880d108e0220012802b403210920012802b0032105024020012802840d450d002003102e0b20054101470d002009200741016a470d0020024201520d00200141e8046a22094200370300200141d0046a41106a220a4200370300200141d0046a41086a22054200370300200142003703d004200141800d6a41e8fcc60041091081022005200141800d6a41086a2203290000370300200120012900800d3703d004200141800d6a41b08ec9004103108102200b41086a220c2003290000370000200b20012900800d370000200141a0036a200141d0046a108503200141f8026a20012903a803420020012802a0031b220242e80780420042e807420010e808200141800d6a200610960320014188036a20012802800d221320012802880d10f80220012903f802220e200242e807827c2202427f200141f8026a41086a2903002002200e54ad7c501b20087d213020014188036a41106a2903004200200128028803220d1b21082001290390034200200d1b2131024020012802840d450d002013102e0b20094200370300200a420037030020054200370300200142003703d004200141800d6a41f8fcc600410810810220052003290000370300200120012900800d3703d004200141800d6a41a8aac800410d108102200c2003290000370000200b20012900800d370000200141e0026a200141d0046a412010f802200141d0026a20012903e802420020012802e00222051b220e200141e0026a41106a290300420020051b2202428094ebdc03420010e608200141c0026a200e2002428094ebdc03420010e708200220082031200e56200820025620082002511b22051b2108200e203120051b21332030428086ebc7f5002030428086ebc7f500541b420588428094ebdc037e4298ac9fd603802134200141c0026a41086a29030021314100210341b0fac600210520012903c002213220012903d0022130024002400340200141b0026a2032203120053502002202420010e808203320012903b002220e203020027e2202428094ebdc0380a7417f2002428080808080c0b2cd3b541b2002428094ebdc03824280cab5ee01566aad7c2202542008200141b0026a41086a2903002002200e54ad7c22025420082002511b0d01200541086a2105200341016a22034121470d000b200141a0026a203220314298f1840d420010e808200141a8026a29030020012903a002220820304298f1840d7e2202428094ebdc0380a72002428094ebdc03824280cab5ee01566aad7c2202200854ad7c21080c010b02402003417f6a220920034d0d00200141b0016a2032203142c0f0f50b420010e808200141b8016a29030020012903b00122082030422880a7203042c0f0f50b7e428094ebdc03824280cab5ee01566aad7c2202200854ad7c21080c010b02400240200941204b0d0020014190026a203220312009410374220a41b0fac6006a2802002209ad2202420010e808200141f0016a2033200129039002220e203020027e2202428094ebdc0380a7417f2002428080808080c0b2cd3b541b220341016a20032002428094ebdc03824280cab5ee01561bad7c22022033200256200820014190026a41086a2903002002200e54ad7c220e562008200e511b22031b22352002203320031b22027d22332008200e20031b200e200820031b7d2035200254ad7d220e41002005280200220c20096b22092009200c4b1b22094101200941014b1bad2202420010e708200141c0016a200141f0016a41086a2903004200200541046a2802002209200a41b4fac6006a2802002205200920054b220a1b20052009200a1b6bad2208420010e808200141d0016a20012903f00142002008420010e808200141e0016a2033200e2002420010e60820014180026a203220312005ad2233420010e808427f427f200141d0016a41086a290300220e20012903c0017c223520012903c8014200522035200e5472220a1b2235427f20012903d001200a1b220e20012903e00120087e2002807c2202200e54220aad7c2208200a20082035542002200e5a1b220a1b2135427f2002200a1b210e20014180026a41086a2903002001290380022236203020337e2202428094ebdc0380a7417f2002428080808080c0b2cd3b541b2002428094ebdc03824280cab5ee01566aad7c2208203654ad7c21022003200920054d460d01427f200220357c2008200e7c220e2008542205ad7c22082005200820025420082002511b22051b2108427f200e20051b21020c020b2009412141f889c500103c000b4200200220357d2008200e54ad7d22332008200e7d220e200856203320025620332002511b22051b21084200200e20051b21020b200141a0016a20022008428094ebdc03420010e60820014190016a20022008428094ebdc03420010e70820014180016a20012903900120014190016a41086a2903002034420010e808200141f0006a203220314280c2d72f420010e808200141e0006a200129037022082030420a80a720304280c2d72f7e428094ebdc03824280cab5ee01566aad7c2202200141f0006a41086a2903002002200854ad7c2208428094ebdc03420010e608200141d0006a20022008428094ebdc03420010e708200141c0006a2001290350200141d0006a41086a2903002034420010e8082001418c0d6a2006360200200141800d6a41086a41003a0000200141800d6a41106a2001290380012208203420012903a0017e2202428094ebdc0380a72002428094ebdc03824280cab5ee01566aad7c2202370300200141980d6a20014180016a41086a2903002002200854ad7c2208370300200141a80d6a4200200141c0006a41086a29030020012903402230203420012903607e220e428094ebdc0380a7200e428094ebdc03824280cab5ee01566aad7c220e203054ad7c223020087d200e200254ad7d2231200e20027d2232200e56203120305620312030511b22051b2231370300200141a00d6a4200203220051b2232370300200141043a00800d200141800d6a10fe0120014198096a200610970320012802a00921032001280298092105200120083703880d200120023703800d20052003200141800d6a411010b2010240200128029c09450d002005102e0b200120313703880d200120323703800d024002400240200e200256203020085620302008511b0d00200142003703880d200142003703800d0c010b200141800d6a10980320012903800d21022001200141800d6a41086a29030022083703880d200120023703800d20022008844200520d010b2001200141800d6a3602980920014198096a10cc020c010b200142f0f2bda1a7ee9cb9f90037039809200141800d6a20014198096a10cd02200141306a200141800d6a2002200810fd01200141a8096a200141306a41086a290300223020087d2001290330220e200254ad7d200820307d2002200e54ad7d200e200256203020085620302008511b22051b3703002001200e20027d2002200e7d20051b3703a00920012005ad3703980920014198096a41086a21030240024020050d00200120033602d805200141d8056a10cc020c010b200120033602d805200141d8056a10ce020b200141980d6a2008370300200141900d6a2002370300200141880d6a41063a00002001410e3a00800d200141800d6a10fe010b200141c8046a4200370300200141c0046a4200370300200141b0046a41086a22054200370300200142003703b004200141800d6a41a081ca0041071081022005200141800d6a41086a2203290000370300200120012900800d3703b004200141800d6a41dff9c000410a108102200f41086a2003290000370000200f20012900800d370000200141203602bc052001200141b0046a3602b80520014190056a200141b0046a412010ed0202400240200128029005220a0d00410021090c010b200128029405210c200120014190056a41086a2802003602cc052001200a3602c805200141286a200141c8056a10ab010240024020012802280d00200128022c220d20012802cc0541e0016e22052005200d4b1bad42e0017e2202422088a70d052002a72205417f4c0d050240024020050d00410121090c010b2005102c2209450d070b200541e0016ead210202400240200d450d00200141800d6a41206a2117200141f80a6a4101722118410021130340200141003a00980b20012802cc05417f6a2105201341016a211341002103024002400240024002400340200141003a00a8052005417f460d01200141f80a6a20036a20012802c80522062d00003a00002001200641016a3602c8052001200341016a22063a00980b200120053602cc052005417f6a21052006210320064120470d000b200141e00c6a41186a2205200141f80a6a41186a290300370300200141e00c6a41106a2203200141f80a6a41106a290300370300200141e00c6a41086a221a200141f80a6a41086a290300370300200120012903f80a3703e00c200641ff01714120490d01200141d0046a41086a2206201a290300370300200141d0046a41106a221a2003290300370300200141d0046a41186a22032005290300370300200120012903e00c3703d004200141f80a6a200141c8056a10990320012d00f80a4101460d01200141800d6a41186a2003290300370300200141800d6a41106a201a290300370300200141800d6a41086a2006290300370300200120012903d0043703800d2017201841c00110e9081a20014198096a200141800d6a41e00110e9081a200141b8076a20014198096a41e00110e9081a200141d8056a200141b8076a41e00110e9081a2002422088a722052002a7470d04200541016a22032005490d0d20054101742206200320032006491b22034104200341044b1bad42e0017e2202a721032002422088a745210620050d02200141003602800d0c030b200341ff0171450d00200141003a00980b0b2002a721052005450d06200541e0016c450d062009102e0c060b200141013602880d200120093602800d2001200541e0016c3602840d0b20014198096a20032006200141800d6a107d20012802a00921032001280298094101460d03200128029c092109200341e0016ead21020b2009200541e0016c6a200141d8056a41e00110e9081a200242ffffffff0f83200541016aad4220868421022013200d470d000b0b2009450d010c020b20030d060c050b41002109200141003602a00920014201370398092001410a3602bc072001200141b8056a3602b807200120014198096a3602d805200141940d6a4101360200200142013702840d200141909dc5003602800d2001200141b8076a3602900d200141d8056a419cebc000200141800d6a103d1a20012802980920012802a00910ef02200128029c09450d00200128029809102e0b200c450d00200a102e0b2002420020091b2208422088a7222141ffffff3f712021470d0241012123024020214105742205450d002005102c2223450d040b2009410120091b2124410021032001410036029805200120233602900520012005410576222736029405024002400240202720214f0d00200541047622032021200320214b1b22034104200341044b1b220341ffffff3f712003462106200341057421030240024020050d00200141003602800d0c010b200141880d6a4101360200200120053602840d200120233602800d0b20014198096a20032006200141800d6a107d200141a0096a280200210502402001280298094101460d002001200128029c09222336029005200120054105762227360294050c020b20050d060c050b2021450d010b202141e0016c220641a07e6a41e0016e21092023210520242103034020052003290000370000200541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a290000370000200541206a2105200341e0016a2103200641a07e6a22060d000b200941016a21030b2001200336029805200141c8046a22064200370300200141c0046a22094200370300200141b0046a41086a22054200370300200142003703b004200141800d6a41a081ca0041071081022005200141800d6a41086a2203290000370300200120012900800d3703b004200141800d6a41f09dc500410a108102200f41086a220a2003290000370000200f20012900800d370000200141b0046a20014190056a109a0302402012201241ff0171410247712220450d00200642003703002009420037030020054200370300200142003703b004200141800d6a41a081ca00410710810220052003290000370300200120012900800d3703b004200141800d6a41f8d2c1004112108102200a2003290000370000200f20012900800d370000200141800d6a200141b0046a109b0320012802800d220c450d00200141b0046a412010ff0120012902840d42ffffffff0383500d00200c102e0b200642003703002009420037030020054200370300200142003703b004200141800d6a41a081ca00410710810220052003290000370300200120012900800d3703b004200141800d6a41e4d1c100410c108102200a2003290000370000200f20012900800d3700002001200741016a22283602800d200141b0046a4120200141800d6a410410b201200141800d6a1094030240024020012903800d4202510d00200141900d6a28020041016a21050c010b410021050b200141800d6a2005109503200141206a20012802800d220620012802880d108e022001280224210320012802202105024020012802840d450d002006102e0b024020054101470d00024020032028460d00200320284f0d0141c3ebc600413010ef020b2028109c030b200141c8046a4200370300200141c0046a4200370300200141b0046a41086a22054200370300200142003703b004200141b8076a41a081ca0041071081022005200141b8076a41086a290000370300200120012900b8073703b00420014198096a41bfadc000410b108102200441086a20014198096a41086a2900003700002004200129009809370000200141800d6a200141b0046a4120109d03200741026a211b0240024020012802800d4101470d0020013502840d21020c010b201bad220242208620028421020b2001200242ffffffff0f83200741036aad422086843702840d200141013602800d200141b0046a41186a4200370300200141b0046a41106a4200370300200141b0046a41086a22054200370300200142003703b004200141b8076a41a081ca0041071081022005200141b8076a41086a290000370300200120012900b8073703b00420014198096a41bfadc000410b108102200441086a20014198096a41086a2900003700002004200129009809370000200141b0046a4120200141800d6a410472109e03200141d0046a41186a22064200370300200141d0046a41106a22074200370300200141d0046a41086a22054200370300200142003703d004200141800d6a4192fdc60041071081022005200141800d6a41086a2203290000370300200120012900800d3703d004200141800d6a4198b7c6004115108102200b41086a22092003290000370000200b20012900800d3700002001201b3602800d200141d0046a4120200141800d6a410410b201200642003703002007420037030020054200370300200142003703d004200141800d6a4192fdc600410710810220052003290000370300200120012900800d3703d004200141800d6a4194adc600410a10810220092003290000370000200b20012900800d370000200141186a200141d0046a4120108e020240024020012802184101460d00200141c00c6a201b109f030c010b200141800d6a200128021c109503200141106a20012802800d220620012802880d108e022001280214210320012802102105024020012802840d450d002006102e0b024020050d00418debc600413610ef02410021030b024002400240024010a00341ff01710e0401000302030b200141e8046a4200370300200141e0046a4200370300200141d0046a41086a22054200370300200142003703d004200141800d6a4192fdc60041071081022005200141800d6a41086a2203290000370300200120012900800d3703d004200141800d6a41b8b2c6004108108102200b41086a2003290000370000200b20012900800d370000200141d0046a412010ff010c010b4100201b20036b22052005201b4b1b4106490d010b200141c00c6a201b109f030c010b200141003602c00c0b024002400240024002400240024020012802c00c2226450d00200141e8046a4200370300200141e0046a4200370300200141d0046a41086a22054200370300200142003703d004200141800d6a4192fdc60041071081022005200141800d6a41086a2203290000370300200120012900800d3703d004200141800d6a4194adc600410a108102200b41086a2003290000370000200b20012900800d370000200141086a200141d0046a4120108e02200141c00c6a41086a2802002205ad42d0007e2202422088a70d092002a72203417f4c0d0920012802082106200128020c210720012802c40c21290240024020030d00410821250c010b2003102c2225450d0b0b024002400240200341d0006e222a20054f0d00202a41017422092005200920054b1b22094104200941044b1bad42d0007e2202422088a74541037421092002a7210a02400240200341cf004b0d00200141003602800d0c010b200141800d6a41086a4108360200200120253602800d2001202a41d0006c3602840d0b20014198096a200a2009200141800d6a107d200141a0096a280200210302402001280298094101460d00200128029c092125200341d0006e212a0c020b20030d0d0c0c0b20050d00410021090c010b2007410020061b21192005410574220941606a410576211f200141b8076a41206a210620252105202621030340200141d8056a41186a220a200341186a290000370300200141d8056a41106a220c200341106a290000370300200141d8056a41086a220d200341086a290000370300200120032900003703d805200141f80a6a2019200141d8056a10a103200141800d6a20012802f80a220420012802800b10a203200141e00c6a41186a2217200141800d6a41186a290300370300200141e00c6a41106a2218200141800d6a41106a290300370300200141e00c6a41086a221a200141800d6a41086a290300370300200120012903800d3703e00c20012802ac0d21130240024020012802a00d22070d004200210220014198096a41186a420037030020014198096a41106a42003703004108210720014198096a41086a420037030020014200370398090c010b20014198096a41086a201a29030037030020014198096a41106a201829030037030020014198096a41186a2017290300370300200120012903e00c3703980920012902a40d21020b024020012802fc0a450d002004102e0b200341206a21032006200129039809370300200141b8076a41086a2204200d290300370300200141b8076a41106a220d200c290300370300200141b8076a41186a220c200a290300370300200641186a20014198096a41186a290300370300200641106a20014198096a41106a290300370300200641086a20014198096a41086a290300370300200120012903d8053703b807200541386a200141b8076a41386a290300370300200541306a200141b8076a41306a290300370300200541286a200141b8076a41286a290300370300200541206a2006290300370300200541186a200c290300370300200541106a200d290300370300200541086a2004290300370300200520012903b807370300200541cc006a2013360200200541c4006a2002370200200541c0006a2007360200200541d0006a2105200941606a22090d000b201f41016a21090b0240202941ffffff3f71450d002026102e0b2025450d00200941ffffff3f712009470d0920094105742205417f4c0d090240024020050d00410121290c010b2005102c2229450d0b0b02400240024002402005410576221f20094f0d00200541047622032009200320094b1b22034104200341044b1b220341ffffff3f712003462106200341057421030240024020050d00200141003602800d0c010b200141880d6a4101360200200120053602840d200120293602800d0b20014198096a20032006200141800d6a107d200141a0096a28020021052001280298094101460d01200128029c0921292005410576211f0b20252025200941d0006c6a470d01410021060c020b20050d0c0c0b0b2025200941d0006c6a2107410021062029210520252103034020052003290000370000200541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a290000370000200641016a2106200541206a21052007200341d0006a2203470d000b0b200120093602a0092001202a36029c092001202536029809200141800d6a20014198096a10a30320012802800d4101470d0120012802880d210520012802840d21034188accb00413710ef022003200510ef020c020b200141b8076a4100201b417f6a22052005201b4b1b10a403200141800d6a20012802b807220520012802c00710a503200141f80a6a41086a2203200141800d6a41106a290300370300200141f80a6a41106a2206200141800d6a41186a290300370300200141f80a6a41186a2207200141a00d6a2903003703002001200141800d6a41086a2903003703f80a20012802800d4101470d0220012802840d210920014198096a41186a200729030037030020014198096a41106a200629030037030020014198096a41086a2003290300370300200120012903f80a37039809024020012802bc07450d002005102e0b2001418c0d6a200141a0096a290300370200200141940d6a200141a8096a2903003702002001419c0d6a200141b0096a290300370200200120093602800d20012001290398093702840d200141f80a6a201b10a40320012802800b210320012802f80a21054104102c2206450d09200142043702dc05200120063602d8054120102c2206450d09200142203702bc07200120063602b807200141b8076a200141800d6a41201074200141d8056a20012802b807220620012802c0071074024020012802bc07450d002006102e0b200120012802a00d3602b807200141d8056a200141b8076a410410742005200320012802d805220620012802e00510b201024020012802dc05450d002006102e0b20012802fc0a450d032005102e0c030b20014198096a200141800d6a41086a41800110e9081a200141d0076a200141900a6a290300370300200141c8076a200141880a6a290300370300200141b8076a41086a200141800a6a290300370300200120012903f8093703b807200120093602d807200141e00c6a201b10a40320012802e80c210320012802e00c21054104102c2207450d08200142043702fc0a200120073602f80a4120102c2207450d08200142203702dc05200120073602d805200141d8056a200141b8076a41201074200141f80a6a20012802d805220720012802e0051074024020012802dc05450d002007102e0b200120093602d805200141f80a6a200141d8056a410410742005200320012802f80a220720012802800b10b201024020012802fc0a450d002007102e0b024020012802e40c450d002005102e0b20014198096a10b8020b20294521222029450d022006ad422086201fad8421024101212a2029210b0c030b20012802bc07450d002005102e0b41002129410121220b200141e8046a4200370300200141e0046a4200370300200141d0046a41086a22054200370300200142003703d004200141800d6a41a081ca0041071081022005200141800d6a41086a2203290000370300200120012900800d3703d004200141800d6a41f09dc500410a108102200b41086a2003290000370000200b20012900800d370000200141800d6a200141d0046a10880320012902840d420020012802800d22051b21022005410120051b210b4100212a0b2002422088a722064105744105752203ad42e0017e220e422088a70d02200ea72205417f4c0d020240024020050d00410121250c010b2005102c2225450d040b0240024002400240200541e0016e222620034f0d00202641017422072003200720034b1b22034104200341044b1bad42e0017e220ea72103200e422088a745210702400240200541df014b0d00200141003602800d0c010b200141880d6a4101360200200120253602800d2001202641e0016c3602840d0b20014198096a20032007200141800d6a107d200141a0096a28020021052001280298094101460d01200128029c092125200541e0016e21260b20060d0141002118202a21040c020b20050d050c040b2024202141e0016c6a211b2006410574220741606a4105762114200141800d6a41206a2118200141f80a6a41a0016a2115200141f80a6a4180016a2111200141f80a6a41e0006a2110200141f80a6a41c0006a2112200141f80a6a41206a211920014198096a410172211a202a21042024210620252109200b2105034020062103200141e00c6a41186a220a200541186a290000370300200141e00c6a41106a220c200541106a290000370300200141e00c6a41086a220d200541086a290000370300200120052900003703e00c200141c00c6a200141e00c6a10a60320014198096a20012802c00c221720012802c80c10a70320012d0098092113200141b8076a201a41c00110e9081a41002106024020134101470d00200141d8056a200141b8076a41c00110e9081a410121060b024020012802c40c450d002017102e0b0240024020060d00200141f80a6a41186a4200370300200141f80a6a41106a4200370300200141f80a6a41086a4200370300200142003703f80a2019410041a00110eb081a0c010b200141f80a6a200141d8056a41c00110e9081a0b02400240200441ff0171450d00200321060c010b4100210402402003201b470d00200321060c010b200341e0016a21060240200341206a200141f80a6a412010ec080d00200341c0006a2019412010ec080d00200341e0006a2012412010ec080d0020034180016a2010412010ec080d00200341a0016a2011412010ec080d00200341c0016a2015412010ec08450d010b410121040b200541206a2105200141800d6a41186a200a290300370300200141800d6a41106a200c290300370300200141800d6a41086a200d290300370300200120012903e00c3703800d2018200141f80a6a41c00110e9081a2009200141800d6a41e00110e90841e0016a2109200741606a22070d000b201441016a21180b0240200242ffffff3f83500d00200b102e0b2018ad42e0017e2202422088a70d022002a72219417f4c0d020240024020190d00410121174100211b0c010b2019102c2217450d04201941e0016e211b201941e001490d002025201841e0016c6a211a200141c00e6a2103200141a00e6a2106200141800e6a2107200141e00d6a2109200141c00d6a210a200141a00d6a210c4100210d20252105201b21130340201a2005460d012013450d03200141800d6a41186a200541186a290000370300200141800d6a41106a200541106a290000370300200141800d6a41086a200541086a29000037030020052900002102200c2005290020370000200c41086a200541286a290000370000200c41106a200541306a290000370000200c41186a200541386a290000370000200a41186a200541d8006a290000370000200a41106a200541d0006a290000370000200a41086a200541c8006a290000370000200a2005290040370000200120023703800d200941186a200541f8006a290000370000200941106a200541f0006a290000370000200941086a200541e8006a29000037000020092005290060370000200741186a20054198016a290000370000200741106a20054190016a290000370000200741086a20054188016a2900003700002007200529008001370000200620052900a001370000200641086a200541a8016a290000370000200641106a200541b0016a290000370000200641186a200541b8016a290000370000200320052900c001370000200341086a200541c8016a290000370000200341186a200541d8016a290000370000200341106a200541d0016a2900003700002017200d6a200141800d6a41e00110e9081a200d41e0016a210d200541e0016a21052013417f6a22130d000b0b200141c8046a4200370300200141c0046a4200370300200141b0046a41086a22054200370300200142003703b004200141800d6a41a081ca0041071081022005200141800d6a41086a2203290000370300200120012900800d3703b004200141800d6a41dff9c000410a108102200f41086a2003290000370000200f20012900800d370000201841e0016c4104722205417f4c0d022005102c2203450d03200141003602880d200120053602840d200120033602800d2018200141800d6a107620172018200141800d6a109c01200141b0046a412020012802800d220520012802880d10b201024020012802840d450d002005102e0b0240201941e001490d00201b41e0016c450d002017102e0b200141c8046a4200370300200141c0046a4200370300200141b0046a41086a22054200370300200142003703b004200141800d6a41a081ca0041071081022005200141800d6a41086a2203290000370300200120012900800d3703b004200141800d6a4188d2c100410d108102200f41086a2003290000370000200f20012900800d370000200120043a00a805200141b0046a4120200141a8056a410110b201200120283602840d200141063a00800d200141800d6a10fe012020202420212025201810a80302402026450d00202641e0016c450d002025102e0b0240202a2022720d00201f41ffffff3f71450d002029102e0b02402027450d002023102e0b02402008a72205450d00200541e0016c450d002024102e0b200141800d6a10a90320012903880d21020b200010aa032108200141e00e6a2400427f200220087c220820082002541b0f0b201b201b4188decc00103c000b1038000b1036000bdd2107067f017e037f017e017f067e017f230041900e6b22002400200041a0036a2201420037030020004198036a2202420037030020004188036a41086a220342003703002000420037038803200041b00c6a41a8f8c60041041081022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41978cc500410b10810220012004290000370300200220002900b00c370300200041a8096a20004188036a10a004024020002d00a8094102470d002001420037030020024200370300200342003703002000420037038803200041b00c6a41d9fcc600410610810220032004290000370300200020002900b00c37038803200041b00c6a41b4f4cb004106108102200241086a2004290000370000200220002900b00c370000200041a8096a20004188036a10a10420002802a8092203410420031b21050240024020002902ac09420020031b2206422088a7220741246c2203450d00200520036a2104200041a8096a41086a2108200521030340024020032d00004101470d00200341016a2800002101200341086a28020021092000200341106a2802003602cc07200020093602c8070240200141c28289aa04470d00200041a8096a200041c8076a10930220002903a809220a4203510d0020004188036a200841f00010e9081a200041c00c6a20004188036a41f00010e9081a200041306a200041c00c6a41f00010e9081a0c040b200041c00c6a41e8b1c40041f00010e9081a0b2004200341246a2203470d000b0b4203210a0b02402007450d00200741246c21042005210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a280200102e0c030b2003410c6a280200450d02200341086a280200102e0c020b2003410c6a280200450d01200341086a280200102e0c010b200341086a280200450d00200341046a280200102e0b200341246a21032004415c6a22040d000b0b02402006a72203450d00200341246c450d002005102e0b200041a0016a200041306a41f00010e9081a41002109410021010240200a4203510d002000200a3703900220004190026a41086a200041a0016a41f00010e908210b200041a0036a2201420037030020004198036a2205420037030020004188036a41086a220342003703002000420037038803200041b00c6a41a8f8c60041041081022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41e38bc500410b108102200241086a22072004290000370000200220002900b00c370000200041206a20004188036a1085032000290398022106024002402000280220450d0020002903284200520d010b2001420037030020054200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41e38bc500410b10810220072004290000370000200220002900b00c370000200020063703a80920004188036a4120200041a8096a410810b2012001420037030020054200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41a58bc500410b10810220072004290000370000200220002900b00c370000200041a8096a20004188036a10a20420002802a809210720002902ac09210c2001420037030020054200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41c28cc500410a10810220012004290000370300200520002900b00c370300200041a8096a20004188036a10a30420002d00a80921042001200041c1096a2900003703002005200041b9096a2900003703002003200041b1096a290000370300200020002900a90937038803200c420020071b210d200c42808080807083420020071b210c2007410820071b21030240024020044101460d00200041d80c6a4200370300200041d00c6a4200370300200041c80c6a4200370300200042003703c00c0c010b200041c00c6a41186a20004188036a41186a290300370300200041c00c6a41106a20004188036a41106a290300370300200041c00c6a41086a20004188036a41086a29030037030020002000290388033703c00c0b200041c8076a41086a200041c00c6a41086a290300220e370300200041c8076a41106a200041c00c6a41106a290300220f370300200041c8076a41186a200041c00c6a41186a2903002210370300200020002903c00c22113703c807200041a8096a41086a200c200d42ffffffff0f8384370300200041a8096a41106a2011370300200041a8096a41186a200e370300200041c8096a200f370300200041a8096a41286a2010370300200020033602ac09200041003602a80920004188036a200041a8096a10a404200041cb0c6a20004188036a41086a28020036000020002000290388033700c30c20004194036a200041c70c6a290000370000200041c28289aa0436008903200041023a008803200020002900c00c37008d0320004188036a10a504200da72204450d00200441286c450d002003102e0b200041a0036a2205420037030020004188036a41106a2207420037030020004188036a41086a220342003703002000420037038803200041b00c6a41a8f8c60041041081022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41c98bc500410b108102200241086a22082004290000370000200220002900b00c370000200041106a20004188036a108503200028021021012000290318210c2005420037030020074200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41a28cc500410810810220082004290000370000200220002900b00c370000200042002006200c42017c420120011b7d220c200c2006561b3e02a80920004188036a4120200041a8096a410410b2012005420037030020074200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41c98bc500410b10810220082004290000370000200220002900b00c370000200020063703a80920004188036a4120200041a8096a410810b20141002101200a4201510d0020004190026a41106a28020021012005420037030020074200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41a58bc500410b10810220082004290000370000200220002900b00c370000200041a8096a20004188036a10a20420002802a8092203410820031b210402400240200120002902ac09420020031b220c422088a74f0d00200041c8076a41186a2004200141286c6a220341186a290000370300200041c8076a41106a200341106a290000370300200041c8076a41086a200341086a290000370300200020032900003703c807200041a8096a200041c8076a10f40120002802a809210320004188036a200041a8096a41047241c40110e9081a20034101460d00200b410c6a210720004188066a200041c00c6a41046a20004188036a41046a41c00110e90841c00110e9081a200041c8076a20004188066a41c00110e9081a20004188036a41186a2203420037030020004188036a41106a2201420037030020004188036a41086a220542003703002000420037038803200041b00c6a41a8f8c60041041081022005200041b00c6a41086a2208290000370300200020002900b00c37038803200041b00c6a41c28cc500410a10810220032008290000370300200120002900b00c370300200041a8096a20004188036a10a30420002d00a80921082003200041c1096a2900003703002001200041b9096a2900003703002005200041b1096a290000370300200020002900a909370388030240024020084101460d00200041a0096a420037030020004198096a420037030020004190096a420037030020004200370388090c010b20004188096a41186a20004188036a41186a29030037030020004188096a41106a20004188036a41106a29030037030020004188096a41086a20004188036a41086a2903003703002000200029038803370388090b20004188036a41186a420037030020004188036a41106a420037030020004188036a41086a220342003703002000420037038803200041b00c6a41a8f8c60041041081022003200041b00c6a41086a2201290000370300200020002900b00c37038803200041b00c6a41fa8bc500410a108102200241086a2001290000370000200220002900b00c370000200020004188036a1085032000290308210d20002802002103200041c00c6a41dcddcc004104108101200041c00c6a41e0ddcc00410b2006108501200041c00c6a41ebddcc00410d200d420020031b108501200041c00c6a41f8ddcc00411020004188096a412010840120004188036a200041c00c6a41d00110e9081a200041a8096a2007200041c8076a20004188036a10f30120002802a8094101460d0020004188036a200041a8096a41086a41800310e9081a200041a8096a20004188036a41800310e9081a200041c00c6a41b7b7c0004109108101200041c00c6a41d4e2cc00410041c9ddcc004113108401200041c00c6a41c0b7c0004106200041c80a6a4120108401200041c00c6a41c6b7c0004107200041880c6a412010840120004188096a41186a420037030020004188096a41106a420037030020004188096a41086a42003703002000420037038809200041c00c6a41d4e2cc00410020004188096a4120108601410021030340200041c00c6a20036a41003a0000200341016a220341c801470d000b200041c8076a41086a20004188096a41086a290300370300200041c8076a41106a20004188096a41106a290300370300200041c8076a41186a20004188096a41186a29030037030020002000290388093703c807410121010c010b410021010b200ca72203450d00200341286c450d002004102e0b0240200a4200520d00200041c00c6a41186a200041c8076a41186a290300370300200041c00c6a41106a200041c8076a41106a290300370300200041c00c6a41086a200041c8076a41086a290300370300200020002903c8073703c00c200121090b200041b1096a2205200041c00c6a41086a290300370000200041b9096a2207200041c00c6a41106a290300370000200041c1096a2208200041c00c6a41186a290300370000200020093a00a809200020002903c00c3700a90920004188036a41186a2209420037030020004188036a41106a220b420037030020004188036a41086a220342003703002000420037038803200041b00c6a41a8f8c60041041081022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41978cc500410b108102200241086a22122004290000370000200220002900b00c37000020004188036a200041a8096a10a6042005200041c8076a41086a2903003700002007200041c8076a41106a2903003700002008200041c8076a41186a290300370000200020013a00a809200020002903c8073700a90920094200370300200b4200370300200342003703002000420037038803200041b00c6a41a8f8c600410410810220032004290000370300200020002900b00c37038803200041b00c6a41848cc500411310810220122004290000370000200220002900b00c37000020004188036a200041a8096a10a6040b200041900e6a24000b8d0204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001412010ed0202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241909dc5003602382002200241286a360248200241346a419cebc000200241386a103d1a2002280218200228022010ef020240200228021c450d002002280218102e0b420021030b2004450d002001102e0b2000200537030820002003370300200241d0006a24000b800201037f230041d0006b220124002001412036020420012000360200200141086a2000412010ed0202400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0041002100024020022d00000e020200010b410121000c010b20014100360220200142013703182001410a36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141909dc5003602382001200141286a360248200141346a419cebc000200141386a103d1a2001280218200128022010ef020240200128021c450d002001280218102e0b410221000b2003450d002002102e0b200141d0006a240020000ba70905077f017e037f037e027f23004190026b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41bed8c8004108108102200141a8016a41e9d8c80041041081022002200141a8016a41086a290000370300200320012900a8013703002001412036022c2001200141086a360228200141306a200141086a412010ed020240024002400240024002400240200128023022040d00410021050c010b200128023421062001200141306a41086a280200360244200120043602402001200141c0006a10ab010240024020012802000d002001280204220720012802444105762202200220074b1b22024105742203417f4c0d070240024020020d00410121050c010b2003102c2205450d050b2002ad210802402007450d00410021090340200141003a00c8012001280244417f6a2102200941016a210941002103024002400240024003402002417f460d01200141a8016a20036a2001280240220a2d00003a00002001200a41016a3602402001200341016a220a3a00c801200120023602442002417f6a2102200a2103200a4120470d000b200141f0016a41186a2202200141a8016a41186a290300370300200141f0016a41106a2203200141a8016a41106a290300370300200141f0016a41086a220b200141a8016a41086a290300370300200120012903a8013703f001200a41ff01714120490d01200141e8006a41086a200b290300220c370300200141e8006a41106a2003290300220d370300200141e8006a41186a2002290300220e370300200141c8006a41186a220a200e370300200141c8006a41106a220b200d370300200141c8006a41086a220f200c370300200120012903f001220c370388012001200c3703682001200c3703482008422088220ca722022008a7470d03200241016a220320024f0d020c0d0b200341ff0171450d00200141003a00c8010b0240200842ffffff3f83500d002005102e0b0c040b20024101742210200320032010491b22034104200341044b1b220341ffffff3f712003462110200341057421030240024020020d00200141003602a8010c010b200141013602b001200120053602a8012001200c4205863e02ac010b200141f0016a20032010200141a8016a107d20012802f801210320012802f0014101460d0620012802f40121052003410576ad21080b200520024105746a22032001290348370000200341186a200a290300370000200341106a200b290300370000200341086a200f290300370000200842ffffffff0f83200241016aad42208684210820092007470d000b0b20050d010b41002105200141003602f801200142013703f0012001410a3602d4012001200141286a3602d0012001200141f0016a36028801200141bc016a4101360200200142013702ac01200141909dc5003602a8012001200141d0016a3602b80120014188016a419cebc000200141a8016a103d1a20012802f00120012802f80110ef0220012802f401450d0020012802f001102e0b2006450d002004102e0b20050d0220004100360208200042013702000c030b2003450d030b1036000b20002008370204200020053602000b20014190026a24000f0b1038000bd60201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041003602000c010b200228021421032002200241186a280200360224200220013602202002200241206a10ab0102400240024002402002280200450d00200241003602480c010b200241c8006a200241206a200228020410920120022802480d010b20024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241909dc5003602482002200241386a360258200241c4006a419cebc000200241c8006a103d1a2002280228200228023010ef020240200228022c450d002002280228102e0b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d002001102e0b200241e0006a24000b0e002001ad4220862000ad8410220bb40201037f230041e0006b22022400200241086a4199fdc6004108108102200241186a418092c5004112108102024002404110102c2203450d002002421037023c20022003360238200241386a2001411010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bba0302047f017e230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10ab010240024020032802000d002003280224220420032802042205490d002005417f4c0d030240024020050d00410121060c010b200510322206450d05200328022421040b024020042005490d0020062003280220200510e9082104200328022422062005490d0620002005ad2207422086200784370204200020043602002003200620056b3602242003200328022020056a3602200c020b2006102e0b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b200041003602000b2002450d002001102e0b200341e0006a24000f0b1038000b1036000b2005200641b8b2c0001056000beb0201037f230041e0006b22032400200341086a4199fdc6004108108102200341186a41ac91c5004116108102024002404110102c2204450d002003421037023c20032004360238200341386a2001411010742003200328023822012003280240220410a301370348200341dc006a200120046a360200200320013602582003200341c8006a41086a3602542003200341c8006a360250200341286a200341d0006a107c0240200328023c450d002001102e0b200341d0006a2002280200200228020810a20120032802302202200328025822046a41206a2201417f4c0d010240024020010d00410121050c010b2001102c2205450d010b2000410036020820002001360204200020053602002000200341086a411010742000200341186a41101074200020032802282201200210742000200328025022022004107402402003280254450d002002102e0b0240200328022c450d002001102e0b200341e0006a24000f0b1036000b1038000bb10805057f017e037f037e027f230041f0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ab010240024020032802000d00024002402003280204220620032802244105762201200120064b1b22014105742202417f4c0d000240024020010d00410121070c010b2002102c2207450d020b2001ad2108024002402006450d00410021090340200341003a00a8012003280224417f6a2101200941016a2109410021020240024002400240024003402001417f460d0120034188016a20026a2003280220220a2d00003a00002003200a41016a3602202003200241016a220a3a00a801200320013602242001417f6a2101200a2102200a4120470d000b200341d0016a41186a220120034188016a41186a290300370300200341d0016a41106a220220034188016a41106a290300370300200341d0016a41086a220b20034188016a41086a29030037030020032003290388013703d001200a41ff01714120490d01200341c8006a41086a200b290300220c370300200341c8006a41106a2002290300220d370300200341c8006a41186a2001290300220e370300200341286a41186a220a200e370300200341286a41106a220b200d370300200341286a41086a220f200c370300200320032903d001220c3703682003200c3703482003200c3703282008422088220ca722012008a7470d04200141016a22022001490d0820014101742210200220022010491b22024104200241044b1b220241ffffff3f7120024621102002410574210220010d0220034100360288010c030b200241ff0171450d00200341003a00a8010b200341c8006a41186a200341e8006a41186a290300370300200842ffffff3f83500d082007102e0c080b200341013602900120032007360288012003200c4205863e028c010b200341d0016a2002201020034188016a107d20032802d801210220032802d0014101460d0320032802d40121072002410576ad21080b200720014105746a22022003290328370000200241186a200a290300370000200241106a200b290300370000200241086a200f290300370000200842ffffffff0f83200141016aad42208684210820092006470d000b0b2007450d0320002008370204200020073602000c040b20020d010b1038000b1036000b200341003602d801200342013703d0012003410a3602b4012003200341086a3602b0012003200341d0016a3602682003419c016a41013602002003420137028c01200341909dc500360288012003200341b0016a36029801200341e8006a419cebc00020034188016a103d1a20032802d00120032802d80110ef02024020032802d401450d0020032802d001102e0b200041003602000b2005450d002004102e0b200341f0016a24000bb40201037f230041e0006b22022400200241086a4199fdc6004108108102200241186a419090c5004107108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000b8b0101027f230041106b2203240020034100360208200342013703002002200310a10120022802502104200241d8006a28020022022003107602402002450d002002410574210203402003200441201074200441206a2104200241606a22020d000b0b2000200120032802002204200328020810b20102402003280204450d002004102e0b200341106a24000ba60201017f230041a0016b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041003602400c010b200328020c21022003200341106a28020036027c20032001360278200341186a200341f8006a10e0040240024020032802580d00200341003602880120034201370380012003410a360294012003200336029001200320034180016a36029c012003412c6a41013602002003420137021c200341909dc500360218200320034190016a3602282003419c016a419cebc000200341186a103d1a20032802800120032802880110ef020240200328028401450d00200328028001102e0b200041003602400c010b2000200341186a41e00010e9081a0b2002450d002001102e0b200341a0016a24000be50101047f230041206b2203240002400240200228020822044105744104722205417f4c0d00200228020021022005102c2206450d0120034100360208200320053602042003200636020020042003107602402004450d002004410574210403404120102c2205450d032003422037021420032005360210200341106a2002412010742003200328021022052003280218107402402003280214450d002005102e0b200241206a2102200441606a22040d000b0b2000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000f0b1038000b1036000bf63608077f017e097f017e067f067e077f027e230041c0036b22062400200641d8026a22074200370300200641d0026a22084200370300200641c0026a41086a22094200370300200642003703c002200641b0026a4192fdc60041071081022009200641b0026a41086a290000370300200620062900b0023703c00220064180036a41e0b2c6004113108102200720064180036a41086a22092900003703002008200629008003370300200641203602a4022006200641c0026a3602a00220064180036a200641c0026a412010ed020240024020062802800322070d004100210a0c010b200628028403210b0240024020092802004104490d004101210a2007280000220c418194ebdc03490d010b4100210a200641003602e801200642013703e0012006410a3602b4022006200641a0026a3602b0022006200641e0016a36029002200641ac036a41013602002006420137029c03200641909dc500360298032006200641b0026a3602a80320064190026a419cebc00020064198036a103d1a20062802e00120062802e80110ef0220062802e401450d0020062802e001102e0b200b450d002007102e0b200641c0026a1094030240024020062903c0024202520d0042c0f0f50b210d0c010b200641c0026a200641d0026a280200220e109503200641d8016a20062802c002220920062802c802108e0220062802dc01210b20062802d8012107024020062802c402450d002009102e0b02400240024020070d00418debc600413610ef024100200e41646a22072007200e4b1b210f428084afdf00210d200e21100c010b4100200e41646a22072007200e4b1b210f428084afdf00210d0240200b20054b0d00200e21100c010b200641c0026a10f10520062802c002221120062802c80241037422076a210903402007450d02200741786a21072009417c6a210b200941786a2109200b28020020054b0d000b201120076a2802002110024020062802c40241ffffffff0171450d002011102e0b42c0f4a4eb00210d0b200c4100200a1b2112200641c0026a41186a22134200370300200641c0026a41106a22144200370300200641c0026a41086a220c4200370300200642003703c002200641b0026a4192fdc6004107108102200c200641b0026a41086a2215290000370300200620062900b0023703c00220064180036a41e8b6c6004116108102200841086a220720064180036a41086a22162900003700002008200629008003370000200641d0016a200641c0026a4120108e0220062802d401210920062802d001210b2013420037030020144200370300200c4200370300200642003703c002200641b0026a4192fdc6004107108102200c2015290000370300200620062900b0023703c00220064180036a41e8b6c600411610810220072016290000370000200820062900800337000020062009200e200b4101461b36029803200641c0026a412020064198036a410410b2012013420037030020144200370300200c4200370300200642003703c002200641b0026a4192fdc6004107108102200c2015290000370300200620062900b0023703c00220064180036a418cabc600410d10810220072016290000370000200820062900800337000020064198036a200641c0026a108803200629029c03420020062802980322071b2217422088a7410574211820042002200220044b1b21192007410120071b211a20064198036a41106a210220064180026a41046a211b20064190026a41086a211c4100210802400240034020082019200820194b1b21040340024020082004470d00201742ffffff3f83500d06201a102e0c060b200841016a211d2001200841e0006c6a210520182107201a2109024003402007450d01200741606a210720092005412010ec08210b200941206a2109200b0d000b201d21080c010b0b200320084102746a2802002107200642003703880220064200370380022006420037039802200642003703900220064190016a2005290330221e200541386a290300221f428094ebdc03420010e608200641a0016a201e201f428094ebdc03420010e70820064180016a20062903a001200641a0016a41086a2903002007ad221f420010e808200641b0016a2005290320221e200541286a2903002220428094ebdc03420010e608200641c0016a201e2020428094ebdc03420010e708200641f0006a20062903c001200641c0016a41086a290300201f420010e808200629039001201f7e2220428094ebdc038021212020428094ebdc038221220240024002402006290370420020062903b001201f7e221e428094ebdc0380a7417f201e428080808080c0b2cd3b541b201e428094ebdc03824280cab5ee01566a2209ad7d85200641f0006a41086a29030042002009410047ad7d85844200520d00200642003703a802200642003703a002200642003703b802200642003703b00220064198036a200510ce050240024020062802a4030d00200642003703900320064280808080c000370388032006200f360284032006410036028003200520064180036a10d0050c010b20064180036a41106a2002290300370300201620064198036a41086a2903003703002006200629039803370380030b200c200629038003370200200c41086a2016290300370200200c41106a20064180036a41106a290300370200200641003a00ec02200620053602c4022006200f3602c002200620123602e8022006200641b0026a3602e4022006200641a0026a3602e00220064198036a200641c0026a201010f205024020062802a0034102460d0020062802980320062802c802470d002006200c200e108c0120062d00ec024100477222073a00ec0220064198036a2005108605200628029803220920062802a00310ff010240200628029c03450d002009102e0b20064198036a200510d105200628029803220920062802a00310ff010240200628029c03450d002009102e0b0240200510f30541ff017122094102460d002009410171450d00024010a00341ff0171417f6a0e03010001000b20064198036a41186a42003703002002420037030020064198036a41086a22094200370300200642003703980320064180036a4192fdc60041071081022009201629000037030020062006290080033703980320064180036a41b8b2c6004108108102200241086a2016290000370000200220062900800337000020064100360288032006420137038003200641013a00f00220064180036a200641f0026a4101107420064198036a4120200628028003220920062802880310b201200628028403450d002009102e0b2007450d00200641f0026a200c20062802c002108d01024020062802f0024101470d0020062802f402220720062802f80222054f0d0020062802c4022109034020064198036a41186a200941186a2900003703002002200941106a29000037030020064198036a41086a200941086a2900003703002006200929000037039803200620073602b80320064180036a20064198036a10cd05200628028003220b20062802880310ff01200741016a21070240200628028403450d00200b102e0b20052007470d000b0b20062802c402200c10d0050b20062802d80241ffffffff0371450d0120062802d402102e0c010b200629038001211e20064180016a41086a2903002123200641b0026a2010200510cc0520062802b0022109200620062802b802220b3602f402200620093602f00220064180036a2009200b10ed0202400240200628028003220b0d0041002104200a21240c010b20062802840321080240024020062802880322114104490d00200b2800002224418094ebdc034b0d00202421042011417c6a410f4b0d010b200641003602a00320064201370398032006410a3602a4022006200641f0026a3602a002200620064198036a3602bc03200641013602d402200642013702c402200641909dc5003602c0022006200641a0026a3602d002200641bc036a419cebc000200641c0026a103d1a20062802980320062802a00310ef020240200628029c03450d00200628029803102e0b41002104200a21240b2008450d00200b102e0b024020062802b402450d002009102e0b0240200720044d0d0020064180036a2010200510cc05200628028803210b20062802800321094110102c2208450d052006421037029c032006200836029803200620073602c00220064198036a200641c0026a4104107420062023201e2021a7417f2020428080808080c0b2cd3b541b20224280cab5ee01566aad7c2220201e54ad7c221e3703c802200620203703c00220064198036a200641c0026a411010742009200b200628029803220720062802a00310b2010240200628029c03450d002007102e0b0240200628028403450d002009102e0b20064198036a200510ce050240024020062802a4030d00200642003703900320064280808080c000370388032006200f360284032006410036028003200520064180036a10d0050c010b20064180036a41106a2002290300370300201620064198036a41086a2903003703002006200629039803370380030b200c200629038003370200200c41086a22252016290300370200200c41106a222620064180036a41106a2227290300370200200641003a00ec02200620053602c4022006200f3602c002200620123602e802200620064190026a3602e402200620064180026a3602e002200641e8006a200641c0026a20102020201e10f40502400240024020062802684101470d00200628026c20062802c802460d010b20062d00ec0221070c010b2006200c200e108c0120062d00ec024100477222073a00ec0220064198036a2005108605200628029803220920062802a00310ff010240200628029c03450d002009102e0b20064198036a200510d105200628029803220920062802a00310ff010240200628029c03450d002009102e0b200510f30541ff017122094102460d002009410171450d00024010a00341ff0171417f6a0e03010001000b20064198036a41186a42003703002002420037030020064198036a41086a22094200370300200642003703980320064180036a4192fdc60041071081022009201629000037030020062006290080033703980320064180036a41b8b2c6004108108102200241086a2016290000370000200220062900800337000020064100360288032006420137038003200641013a00b00220064180036a200641b0026a4101107420064198036a4120200628028003220920062802880310b201200628028403450d002009102e0b0240200741ff0171450d00200641b0026a200c20062802c002108d01024020062802b0024101470d0020062802b402220720062802b80222084f0d0020062802c4022109034020064198036a41186a200941186a2900003703002002200941106a29000037030020064198036a41086a200941086a2900003703002006200929000037039803200620073602b80320064180036a20064198036a10cd05200628028003220b20062802880310ff01200741016a21070240200628028403450d00200b102e0b20082007470d000b0b20062802c402200c10d0050b024020062802d80241ffffffff0371450d0020062802d402102e0b42002120200642003703a802200642003703a0024100211102400240200541c8006a220928020022070d004108212841002129420021210c010b200641003602c00220064198036a20074104200741044b1bad42307e221ea7201e422088a745410374200641c0026a107d20062802a003210702402006280298034101470d002007450d060c070b200628029c032128200741306e21290240200928020022070d0042002120420021210c010b200541c0006a280200220a200741306c6a212a2004ad2123410021110340200642003703b802200642003703b002200641c0006a200a290300221e200a41086a2903002220428094ebdc03420010e608200641306a201e2020428094ebdc03420010e708200641206a2006290330221e200641306a41086a29030022202023420010e808200641106a201e2020201f420010e808200641c0026a2010200a41106a220b10cb05200641d0006a20062802c002220920062802c80210f8024200200641106a41086a2903002006290310222020062903402221201f7e221e428094ebdc0380a7417f201e428080808080c0b2cd3b541b201e428094ebdc03824280cab5ee01566aad7c221e202054ad7c2220200641206a41086a29030020062903202222202120237e2221428094ebdc0380a7417f2021428080808080c0b2cd3b541b2021428094ebdc03824280cab5ee01566aad7c2221202254ad7c7d201e202154ad7d2222201e20217d2221201e56202220205620222020511b22071b21204200202120071b211e200641d0006a41106a29030021212006290358212220062802502107024020062802c402450d002009102e0b20064198036a2010200b10cb0520062802a0032108200628029803210920062022420020071b2222201e7c221e3703c00220062021420020071b20207c201e202254ad7c22203703c80220092008200641c0026a411010b2010240200628029c03450d002009102e0b20064198036a200b10ce050240024020062802a4030d00200642003703900320064280808080c000370388032006200f360284032006410036028003200b20064180036a10d0050c010b20272002290300370300201620064198036a41086a2903003703002006200629039803370380030b200c2006290380033702002025201629030037020020262027290300370200200641003a00ec022006200b3602c4022006200f3602c002200620123602e8022006200641b0026a3602e4022006200641a0026a3602e002200641086a200641c0026a2010201e202010f4050240024020062802084101470d00200628020c20062802c802470d002006200c200e108c0120062d00ec024100477222073a00ec020c010b20062d00ec0221070b0240200741ff0171450d00200641f0026a200c20062802c002108d01024020062802f0024101470d0020062802f402220720062802f80222044f0d0020062802c4022109034020064198036a41186a200941186a2900003703002002200941106a29000037030020064198036a41086a200941086a2900003703002006200929000037039803200620073602b80320064180036a20064198036a10cd05200628028003220820062802880310ff01200741016a21070240200628028403450d002008102e0b20042007470d000b0b20062802c402200c10d0050b024020062802d80241ffffffff0371450d0020062802d402102e0b200b41086a290000211e200b29000021202013200b41186a2900003703002014200b41106a290000370300200c201e370300200620203703c0022015290300211e20062903b0022120024020112029470d00202941016a22072029490d07202941017422092007200920074b1b22074104200741044b1bad42307e2221422088a74541037421072021a721090240024020290d0020064100360298030c010b200641083602a00320062028360298032006202941306c36029c030b20064180036a2009200720064198036a107d200628028803210702402006280280034101470d0020070d090c080b2006280284032128200741306e21290b200c2903002121201429030021222013290300212b20062903c002212c2028201141306c6a220720203703202007202c370300200741286a201e370300200741186a202b370300200741106a2022370300200741086a2021370300201141016a2111200a41306a220a202a470d000b200641a0026a41086a290300212120062903a00221200b200641e0016a41086a2207200541086a290300370300200641e0016a41106a2209200541106a290300370300200641e0016a41186a220b200541186a290300370300200620052903003703e00120280d020b2024210a0b200d42808c8d9e027c210d201d21080c010b20064180026a41086a2903002122200629038002211f201c2903002123200629039002212b200641c0026a200541d0006a10c80120062802c802210820062802c402210420062802c002210a20064198036a41186a2227200b2903003703002002200929030037030020064198036a41086a220b2007290300370300200620062903e00137039803200641b0026a4192fdc600410710810220064180036a41d0b3c60041101081022006200e36028002200620064180026a410410a301370390022006201b3602cc022006201c3602c402200620064180026a3602c802200620064190026a3602c002200641a0026a200641c0026a107c20062802a802220941206a2207417f4c0d010240024020070d00410121050c010b2007102c2205450d030b20064100360298022006200736029402200620053602900220064190026a200641b0026a4110107420064190026a20064180036a4110107420064190026a20062802a002220720091074024020062802a402450d002007102e0b200641c0026a20062802900220062802980210f5050240024020062802c00222050d00410021094200211e41082105410021070c010b20062902c402221e422088a72109201ea721070b2013202729030037030020142002290300370300200c200b29030037030020062006290398033703c0020240024020092007470d00201ea7201e422088a72209470d00200941016a22072009490d032009410174220b20072007200b491b22074104200741044b1bad42d8007e221e422088a7454103742107201ea7210b0240024020090d0020064100360280030c010b200641083602880320062005360280032006200941d8006c360284030b200641b0026a200b200720064180036a107d20062802b802210720062802b0024101460d0120062802b4022105200741d8006ead211e0b2011ad42c097e8b2017e200d7c212c2005200941d8006c220b6a2207201f20207c2220370310200720233703082007202b3703002007200a36022c20072028360220200741186a202220217c2020201f54ad7c370300200741346a2008360200200741306a2004360200200741286a2011360200200741246a2029360200200720062903c002370338200741c0006a200c290300370300200741c8006a2014290300370300200741d0006a20132903003703002006201e42ffffffff0f83200941016a2209ad422086843702c402200620053602c002200628029802210720062802900221080240024020050d002008200710ff010c010b201ea7210420062007360284032006200836028003200641c0026a20064180036a10b10102402009450d00200541306a2107200b41d8006a210903400240200741746a280200220b450d00200b41306c450d00200741706a280200102e0b0240200728020041ffffff3f71450d002007417c6a280200102e0b200741d8006a2107200941a87f6a22090d000b0b2004450d00200441d8006c450d002005102e0b202c42c097e8b2017c211e0240200628029402450d002008102e0b201e42c0b2cd3b7c210d201d21082024210a0c010b0b20070d010b1038000b1036000b024020062802c40241ffffffff0171450d002011102e0b42c0d1e123210d0b2000200d37030820004200370300200641c0036a24000b18002001ad4220862000ad842003ad4220862002ad8410000bbe0304037f017e027f017e230041f0006b22012400200141186a22024200370300200141106a22034200370300200141086a42003703002001420037030020014192fdc6004107108102200141d8006a41d0adc60041091081022002200141d8006a41086a290000370300200320012900583703002001412036022420012001360220200141286a2001412010ed0202400240200128022822020d00420221040c010b200128022c210502400240200141286a41086a28020022064104490d002002280000210320064104460d0042002104024020022d00040e020200010b2006417b6a4108490d0020022900052107420121040c010b20014100360240200142013703382001410a36024c2001200141206a3602482001200141386a360254200141ec006a41013602002001420137025c200141909dc5003602582001200141c8006a360268200141d4006a419cebc000200141d8006a103d1a2001280238200128024010ef020240200128023c450d002001280238102e0b420221040b2005450d002002102e0b0240024020044202520d00200042023703000c010b2000200737030820002004370300200041106a20033602000b200141f0006a24000b850201037f230041d0006b22022400200241086a4192fdc6004107108102200241186a4198aec6004115108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b850201037f230041d0006b22022400200241086a4192fdc6004107108102200241186a4188b2c600410e108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b850201037f230041d0006b22022400200241086a4192fdc6004107108102200241186a418cb1c6004113108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000ba00304067f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a41f8fcc60041081081022004200141c0006a41086a220529000037030020012001290040370320200141c0006a41a8aac800410d1081022002200529000037030020032001290040370300200141086a200141206a412010f802024020012903104200200128020822061b220720002903007c22082007542209200141086a41106a290300420020061b220a200041086a2903007c2009ad7c220b200a54200b200a511b4101470d00427f210820002007427f853703002000200a427f85370308427f210b0b20024200370300200342003703002004420037030020014200370320200141c0006a41f8fcc60041081081022004200529000037030020012001290040370320200141c0006a41a8aac800410d108102200341086a2005290000370000200320012900403700002001200b37034820012008370340200141206a4120200141c0006a411010b201200141d0006a24000bcc1202067f017e230041f0056b2202240041002103200241003a00a8052001280204417f6a2104024002400240024002400240024002400240024002400240024003402004417f460d0120024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220320024188056a41086a290300370300200241b0056a41106a220620024188056a41106a290300370300200241b0056a41186a220720024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0120024188036a41086a20032903002208370300200241c8016a41186a2007290300370300200241c8016a41106a2006290300370300200241c8016a41086a2008370300200220022903b005220837038803200220083703c80141002103200241003a00a80503402004417f460d0320024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220320024188056a41086a290300370300200241b0056a41106a220620024188056a41106a290300370300200241b0056a41186a220720024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0320024188036a41086a20032903002208370300200241e8016a41186a2007290300370300200241e8016a41106a2006290300370300200241e8016a41086a2008370300200220022903b005220837038803200220083703e80141002103200241003a00a80503402004417f460d0520024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220320024188056a41086a290300370300200241b0056a41106a220620024188056a41106a290300370300200241b0056a41186a220720024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0520024188036a41086a2003290300220837030020024188026a41186a200729030037030020024188026a41106a200629030037030020024188026a41086a2008370300200220022903b005220837038803200220083703880241002103200241003a00a80503402004417f460d0720024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220320024188056a41086a290300370300200241b0056a41106a220620024188056a41106a290300370300200241b0056a41186a220720024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0720024188036a41086a20032903002208370300200241a8026a41186a2007290300370300200241a8026a41106a2006290300370300200241a8026a41086a2008370300200220022903b005220837038803200220083703a80241002103200241003a00a80503402004417f460d0920024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220320024188056a41086a290300370300200241b0056a41106a220620024188056a41106a290300370300200241b0056a41186a220720024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0920024188036a41086a20032903002208370300200241c8026a41186a2007290300370300200241c8026a41106a2006290300370300200241c8026a41086a2008370300200220022903b005220837038803200220083703c80241002103200241003a00a80503402004417f460d0b20024188056a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a8052004417f6a21042005210320054120470d000b200241b0056a41086a220420024188056a41086a290300370300200241b0056a41106a220120024188056a41106a290300370300200241b0056a41186a220320024188056a41186a29030037030020022002290388053703b005200541ff0171411f4d0d0b20024188036a41086a20042903002208370300200241e8026a41186a22042003290300370300200241e8026a41106a22032001290300370300200241e8026a41086a22012008370300200220022903b005220837038803200220083703e802200241086a41186a200241c8016a41186a290300370300200241086a41106a200241c8016a41106a290300370300200241086a41086a200241c8016a41086a290300370300200220022903c801370308200241c0006a200241e8016a41186a290300370300200241386a200241e8016a41106a290300370300200241306a200241e8016a41086a290300370300200220022903e801370328200241e0006a20024188026a41186a290300370300200241d8006a20024188026a41106a290300370300200241d0006a20024188026a41086a290300370300200220022903880237034820024180016a200241a8026a41186a290300370300200241f8006a200241a8026a41106a290300370300200241f0006a200241a8026a41086a290300370300200220022903a802370368200241a0016a200241c8026a41186a29030037030020024198016a200241c8026a41106a29030037030020024190016a200241c8026a41086a290300370300200220022903c80237038801200241c0016a2004290300370300200241b8016a2003290300370300200241b0016a2001290300370300200220022903e8023703a801200041016a200241086a41c00110e9081a200041003a00000c0c0b200341ff0171450d00200241003a00a8050b200041013a00000c0a0b200341ff0171450d00200241003a00a8050b200041013a00000c080b200341ff0171450d00200241003a00a8050b200041013a00000c060b200341ff0171450d00200241003a00a8050b200041013a00000c040b200341ff0171450d00200241003a00a8050b200041013a00000c020b200341ff0171450d00200241003a00a8050b200041013a00000b200241f0056a24000bac0101047f230041106b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102c2205450d0120024100360208200220043602042002200536020020032002107602402003450d002003410574210303402002200141201074200141206a2101200341606a22030d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241106a24000f0b1038000b1036000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10e7010240024020022802480d0020024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241909dc5003602482002200241386a360258200241c4006a419cebc000200241c8006a103d1a2002280228200228023010ef020240200228022c450d002002280228102e0b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d002001102e0b200241e0006a24000b961c03017f017e167f23004180026b22012400200141206a109403200129032021022001420037032020014100200128023041016a20024202511b2203360230200141b0016a22044200370300200141a8016a2205420037030020014198016a41086a220642003703002001420037039801200141f8006a4192fdc60041071081022006200141f8006a41086a22072900003703002001200129007837039801200141f8006a41d0adc6004109108102200420072900003703002005200129007837030020014100360280012001420137037820012003360258200141f8006a200141d8006a41041074200141003a0058200141f8006a200141d8006a4101107420014198016a41202001280278220420012802800110b2010240200128027c450d002004102e0b200141106a10f10502400240024002400240024002402001280218220420012802142208470d00200441016a22062004490d04200441017422072006200720064b1b22064104200641044b1b220641ffffffff01712006464102742107200641037421060240024020040d0020014100360298010c010b200141a0016a410436020020012001280210360298012001200441037436029c010b200141206a2006200720014198016a107d200141286a280200210620012802204101460d01200120012802243602102001200641037622083602140b2001280210220920044103746a22062000360204200620033602002001200441016a220a3602182003411d490d024100210b200a450d01200341646a2100200441ffffffff017141016a21064100210b2009210402400340200428020020004f0d01200441086a21042006200b41016a220b470d000b2006210b0b200a200b4f0d01200b200a41b4b3c000104d000b2006450d020c040b200141003602180240200b4103742207450d00200141f4016a41046a210c200141f8016a41086a210d20092100034020002802002106200141f8006a4192fdc6004107108102200141206a41fd9fc5004113108102200120063602f4012001200141f4016a410410a3013703f8012001200c3602a4012001200d36029c012001200141f4016a3602a0012001200141f8016a36029801200141d8006a20014198016a107c2001280260220e41206a2204417f4c0d030240024020040d004101210f0c010b2004102c220f450d060b200141003602a0012001200436029c012001200f3602980120014198016a200141f8006a4110107420014198016a200141206a4110107420014198016a20012802582204200e10740240200128025c450d002004102e0b200128029801220420012802a0011089030240200128029c01450d002004102e0b200141f8006a4192fdc6004107108102200141206a4190a0c5004113108102200120063602f4012001200141f4016a410410a3013703f8012001200c3602a4012001200d36029c012001200141f4016a3602a0012001200141f8016a36029801200141d8006a20014198016a107c2001280260220641206a2204417f4c0d030240024020040d004101210e0c010b2004102c220e450d060b200141003602a0012001200436029c012001200e3602980120014198016a200141f8006a4110107420014198016a200141206a4110107420014198016a20012802582204200610740240200128025c450d002004102e0b200128029801220420012802a0011089030240200128029c01450d002004102e0b200041086a2100200741786a22070d000b0b0240200a200b6b220a0d004100210a0c010b0240200b450d0020092009200b4103746a200a41037410ea081a0b2001200a3602182009280204210c200141b0016a22044200370300200141a8016a2207420037030020014198016a41086a220042003703002001420037039801200141f8006a41a081ca0041071081022000200141f8006a41086a2900003703002001200129007837039801200141206a41bfadc000410b1081022004200141206a41086a29000037030020072001290020370300200141206a20014198016a4120109d032001290224210241002104024020012802204101470d0002402002422088a7220d200c200c200d4b1b22062002a722044f0d00410121040c010b0240200620044d0d00034020014198016a200410a403200128029801220020012802a00110ff01200441016a21040240200128029c01450d002000102e0b20062004470d000b0b200c200d4921042002428080808070832006ad8421020b2001200237025c20012004360258024020040d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220442003703002001420037039801200141f8006a41a081ca0041071081022004200141f8006a41086a2900003703002001200129007837039801200141206a41bfadc000410b108102200741086a200141206a41086a2900003700002007200129002037000020014198016a412010ff010c010b200141b0016a4200370300200141a8016a420037030020014198016a41086a220442003703002001420037039801200141f8006a41a081ca0041071081022004200141f8006a41086a2900003703002001200129007837039801200141206a41bfadc000410b108102200741086a200141206a41086a2900003700002007200129002037000020014198016a4120200141d8006a410472109e030b200141b0016a4200370300200141a8016a420037030020014198016a41086a220442003703002001420037039801200141f8006a4192fdc60041071081022004200141f8006a41086a22002900003703002001200129007837039801200141f8006a41a8b4c600410a108102200541086a200029000037000020052001290078370000200a4103744104722204417f4c0d002004102c2200450d02200141003602282001200436022420012000360220200a200141206a10760240200a450d002009200a4103746a210020092104034020012004280200360278200141206a200141f8006a410410742001200441046a280200360278200141206a200141f8006a41041074200441086a22042000470d000b0b20014198016a412020012802202204200128022810b20102402001280224450d002004102e0b0240200841ffffffff0171450d002009102e0b200141b0016a4200370300200141a8016a420037030020014198016a41086a220442003703002001420037039801200141f8006a4192fdc60041071081022004200141f8006a41086a22002900003703002001200129007837039801200141f8006a41e8b6c6004116108102200541086a200029000037000020052001290078370000200141086a20014198016a4120108e02200128020c2110024020012802084101460d00410021040c020b024020104100200341656a2204200420034b1b22114f0d0020014198016a41246a210020014198016a41286a210f201021120340200141206a201210f90520014198016a200128022022042001280228220610f5050240024020012802980122130d0042002102410821130c010b2004200610ff01200129029c0121020b02402001280224450d002004102e0b20132002422088a7220441d8006c6a21070240024020040d00201321040c010b201321040340200141f8006a41186a220b200441186a290300370300200141f8006a41106a220a200441106a290300370300200141f8006a41086a2203200441086a29030037030020012004290300370378200441206a280200210620014198016a41086a220c2004412c6a29020037030020014198016a41106a220d200441346a29020037030020014198016a41186a220e2004413c6a29020037030020014198016a41206a2209200441c4006a290200370300200f200441cc006a29020037030020014198016a41306a2208200441d4006a2802003602002001200441246a29020037039801024020060d00200441d8006a21040c020b200141d8006a41186a2214200b290300370300200141d8006a41106a220b200a290300370300200141d8006a41086a220a2003290300370300200141206a41086a2203200c290300370300200141206a41106a2215200d290300370300200141206a41186a2216200e290300370300200141206a41206a22172009290300370300200141206a41286a2209200f290300370300200141206a41306a22182008280200360200200120012903783703582001200129039801370320200e2014290300370300200d200b290300370300200c200a29030037030020002001290320370200200041086a2003290300370200200041106a2015290300370200200041186a2016290300370200200041206a2017290300370200200041286a2009290300370200200041306a20182802003602002001200129035837039801200120063602b80120014198016a10fa05200441d8006a22042007470d000b200721040b2002a7210c024020072004460d0003400240200441246a2802002206450d00200641306c450d00200441206a280200102e0b200441d8006a21060240200441306a28020041ffffff3f71450d002004412c6a280200102e0b2006210420072006470d000b0b201241016a21120240200c450d00200c41d8006c450d002013102e0b20122011470d000b0b20102011201020114b1b2110410121040c010b1038000b2001200436022020012010360224200141b0016a4200370300200141a8016a420037030020014198016a41086a220042003703002001420037039801200141f8006a4192fdc60041071081022000200141f8006a41086a22062900003703002001200129007837039801200141f8006a41e8b6c6004116108102200541086a2006290000370000200520012900783700000240024020040d0020014198016a412010ff010c010b2001201036027820014198016a4120200141f8006a410410b2010b20014180026a24000f0b1036000b8f0201027f230041d0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041003602000c010b200328020c2102024002400240200341106a28020022044104490d002004417c714104470d010b4100210420034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341909dc5003602382003200341286a360248200341346a419cebc000200341386a103d1a2003280218200328022010ef02200328021c450d012003280218102e0c010b20002001290000370204410121040b200020043602002002450d002001102e0b200341d0006a24000b7e01027f230041106b2203240002404108102c2204450d0020034208370204200320043602002003200228020036020c20032003410c6a410410742003200228020436020c20032003410c6a410410742000200120032802002202200328020810b20102402003280204450d002002102e0b200341106a24000f0b1036000bd67b070a7f027e127f027e0c7f097e057f230041f0056b2202240020024180046a22034200370300200241f8036a22044200370300200241e8036a41086a22054200370300200242003703e803200241d8016a4192fdc60041071081022005200241d8016a41086a2206290000370300200220022900d8013703e80320024198026a4194adc600410a108102200320024198026a41086a22072900003703002004200229009802370300200241c0016a200241e8036a4120108e0220022802c001210820022802c4012109200342003703002004420037030020054200370300200242003703e803200241d8016a4192fdc600410710810220052006290000370300200220022900d8013703e80320024198026a4194adc600410a108102200320072900003703002004200229009802370300410121052002200941016a410020081b220a36029802200241e8036a412020024198026a410410b201200241d8016a4192fdc600410710810220024198026a4198aec60041151081022002200a3602d0052002200241d0056a410410a3013703f802200241f4036a200241d0056a41046a3602002002200241f8026a41086a3602ec032002200241d0056a3602f0032002200241f8026a3602e803200241a8036a200241e8036a107c024020022802b003220641206a2203417f4c0d00024002402003450d002003102c2205450d010b200241003602f003200220033602ec03200220053602e803200241e8036a200241d8016a41101074200241e8036a20024198026a41101074200241e8036a20022802a803220320061074024020022802ac03450d002003102e0b20022802e803210320022802f003210520022001360298022003200520024198026a410410b201024020022802ec03450d002003102e0b200241e8036a41186a4200370300200241e8036a41106a4200370300200241e8036a41086a22034200370300200242003703e803200241d8016a4192fdc60041071081022003200241d8016a41086a290000370300200220022900d8013703e80320024198026a41e0a9c600410c108102200441086a20024198026a41086a2900003700002004200229009802370000200241b8016a200241e8036a4120108e020240200a20022802bc0141016a41d50020022802b8011b6b2205200a4b0d00200510f6050b200241f8026a41186a22054200370300200241f8026a41106a220b4200370300200241f8026a41086a22014200370300200242003703f802200241e8036a41a5fec600411a10810220012003290000370300200220022900e8033703f802200241e8036a4184c4c800410e10810220052003290000370300200b20022900e803370300200241e8036a200241f8026a10ab05024020022d00a40422034103460d00200241f8026a412010ff010b024002400240024002400240024020034103460d0020022802a0042105200229039804210c429896c78220210d0c010b200241e8036a4100200310e9054101210320022802e8034101460d01200241e8036a41106a2205280200210e200241f4036a2201280200210f200241e8036a41086a22032802002110200241e8036a4100200310ef0520022802e8034101460d02200528020021112001280200211220032802002113200241a0056a41186a22144200370300200241a0056a41106a22054200370300200241a0056a41086a22014200370300200242003703a005200241e8036a4192fdc600410710810220012003290000370300200220022900e8033703a005200241e8036a41b4aac600410e10810220142003290000370300200520022900e803370300200241b0016a200241a0056a4120108e0220022802b401211520022802b0012116200242003702dc030240200e450d002010200e41386c6a2117200241f8026a41086a2118200241a0056a41086a2119200241e8036a41086a211a410021072010210903402009290300210c2009290208210d201a200941106a290200370300200241e8036a41106a221b200941186a290200370300200241e8036a41186a221c200941206a2902003703002002200d3703e803024002402007450d0020022802d803211d0c010b41c003102c2207450d094100211d200741003b015e20074100360258200220073602dc03200241003602d8030b200941386a21090240024002400240024002400240024002400240024002400340200741e0006a211e20072f015e221f410574210841002101417f21054100210302400340024020082003470d00201f21050c020b200241e8036a200720036a41e0006a412010ec082206450d03200541016a2105200141086a2101200341206a21032006417f4a0d000b0b0240201d450d00201d417f6a211d200720054102746a41c0036a28020021070c010b0b200241c0056a41086a201a41086a290200220d3703002002201a29020022203703c00520022802ec03210820022802e803211d200229038004212120024198026a41086a2222200d37030020022020370398020240201f410a4b0d00200241d0056a41086a2206202229030037030020022002290398023703d005200541016a211b201f41016a210102402005201f4f221f0d00201e201b4105746a201e20054105746a20012005417f736a41057410ea081a0b201e20054105746a220320083600042003201d360000200320022903d005370008200341106a2006290300370000200320213700180240201f0d002007201b4103746a200720054103746a20012005417f736a41037410ea081a0b200720054103746a200c370300200720013b015e0c0b0b410021234104210302400240200541054f0d00200521010c010b4105210341052101024002402005417b6a0e020201000b200541796a210141012123410621030c010b41002101410121230b41c003102c221f450d14201f41003b015e201f4100360258201f20072f015e22242003417f736a22053b015e201e20034105746a2206280004212520062800002126200241d0056a41086a2227200641106a290000370300200220062900083703d0052005410c4f0d012024200341016a22286b2005470d02200720034103746a290300210d20062900182120201f41e0006a201e20284105746a200541057410e9081a201f200720284103746a200541037410e9082129200720033b015e201a2027290300370300200220022903d0053703e8032029200720231b22032f015e21052027202229030037030020022002290398023703d005200341e0006a2106200541016a211e0240200141016a222820054b22230d00200620284105746a200620014105746a201e2001417f736a41057410ea081a0b200620014105746a220520083600042005201d360000200520022903d005370008200541106a202729030037000020052021370018024020230d00200320284103746a200320014103746a201e2001417f736a41037410ea081a0b200320014103746a200c3703002003201e3b015e200241d8016a41086a2224201a290300220c370300200220022903e80322213703d801200241a8036a41086a2223200c370300200220213703a8030240024002402007280258221d0d00410021280c010b4100212820202121200d210c202921292025212a2026212b034020072f015c210720222023290300370300200220022903a80337039802201d2f015e221e410b490d024100210841042103024020074105490d0020072103024002402007417b6a0e020201000b200741796a210741012108410621030c010b4100210741012108410521030b41f003102c221f450d17201f41003b015e201f4100360258201f201d2f015e222c2003417f736a22053b015e201d41e0006a222d20034105746a22012800042125200128000021262027200141106a290000370300200220012900083703d0052005410c4f0d06202c200341016a22066b2005470d0720012900182120201d20034103746a290300210d201f41e0006a202d20064105746a200541057410e9081a201f201d20064103746a200541037410e9082105201d20033b015e201a2027290300370300200220022903d0053703e80320052f015e220141016a212c2001410c4f0d08201e20036b2203202c470d09202841016a2128200541c0036a201d20064102746a41c0036a200341027410e9081a4100210302400340200520034102746a41c0036a280200220620033b015c200620053602582003200320014922066a220320014b0d0120060d000b0b2024201a290300370300200220022903e8033703d8012005201d20081b22062f015e21012019200229039802370000201941086a20222903003700002002202a3602a4052002202b3602a005200220213703b805200641e0006a211e200141016a210802400240200741016a220320014b0d00201e20034105746a201e20074105746a221e2007417f7320086a222a41057410ea081a201e41186a2014290300370000201e41106a200241a0056a41106a290300370000201e41086a2019290300370000201e20022903a005370000200620034103746a200620074103746a202a41037410ea081a0c010b201e20074105746a221e20022903a005370000201e41186a2014290300370000201e41106a200241a0056a41106a290300370000201e41086a20192903003700000b200620074103746a200c370300200641c0036a211e0240200741026a222a200141026a22014f0d00201e202a4102746a201e20034102746a2003417f7320016a41027410ea081a0b201e20034102746a2029360200200620083b015e0240200320014f0d00200620074102746a41c4036a2103034020032802002201200741016a22073b015c20012006360258200341046a210320082007470d000b0b20232024290300370300200220022903d8013703a803201d210720202121201d2802582203211d200d210c200521292025212a2026212b20030d000b0b200241d8026a41086a2023290300220c370300200220022903a80322213703d80220182021370300201841086a200c370300200220253602fc02200220263602f802200220203703900320022802dc032205450d0820022802d803210141f003102c2203450d15200320053602c003200341003b015e20034100360258200541003b015c20052003360258200220033602dc032002200141016a3602d803201c200241f8026a41186a290300370300201b200241f8026a41106a290300370300201a2018290300370300200220022903f8023703e80320012028470d0920032f015e2205410b4f0d0a2003200541016a22063b015e200320054105746a220141e0006a20022903e803370000200141e8006a201a290300370000200141f0006a201b290300370000200141f8006a201c290300370000200320054103746a200d370300200341c0036a20064102746a201f360200201f20063b015c201f2003360258200220022802e00341016a3602e003200d1a20071a20281a201f1a20201a0c0c0b2019200229039802370000201941086a20222903003700002002202a3602a4052002202b3602a005200220213703b805201d41e0006a2103201e41016a210502402007201e4f0d00200320074105746a220141206a20012007417f7320056a41057410ea081a0b200320074105746a220320022903a005370000200341186a2014290300370000200341106a200241a0056a41106a290300370000200341086a2019290300370000200741016a2103201d20074103746a2101024002402007201e490d002001200c370300201d41c0036a2101201e41026a21060c010b201d20034103746a20012007417f7320056a41037410ea081a2001200c3703002007410274201d41c0036a22016a41086a200120034102746a2003417f73201e41026a22066a41027410ea081a0b2001200341027422076a2029360200201d20053b015e200320064f0d0a2007201d6a41c0036a210503402005280200220120033b015c2001201d360258200541046a21052006200341016a2203470d000c0b0b0b200720016a200c3703000c0a0b2005410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2005410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b202c410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b200220022802e00341016a3602e0030b20092017460d0120022802dc0321070c000b0b200220113602b003200220123602ac03200220133602a8032002200e3602e0012002200f3602dc01200220103602d801200242003703e80320024198026a2015410020161b200241a8036a200241d8016a200241e8036a10fb020240024002402002280298024101470d00200229029c02220c422088a72101200241a4026a2802002107200ca721060c010b20024198026a41106a2222280200220f20024198026a41146a290200222e422088a72203412c6c6a212c20024198026a41086a2227290300212f200228029c0221120240024020030d00200f211d200f21090c010b200241e8036a410c6a211f200241e8036a410472211e20024198026a41186a212820024198026a41206a2125200f211d03402027201d2209410c6a2902003703002022200941146a222629020037030020282009411c6a22232902003703002025200941246a222429020037030020022009290204370398022009412c6a211d2009280200221b450d01201e200229039802370200201e41086a2027290300370200201e41106a2022290300370200201e41186a2028290300370200201e41206a20252903003702002002201b3602e80302400240200241d8036a201f10a20222030d00420021210c010b200329030021210b200241d0056a41086a2229201f41086a290200370300200241d0056a41106a222a201f41106a290200370300200241d0056a41186a222b201f41186a2902003703002002201f2902003703d00520022802ec0321190240024020022802f0032203450d00200341246c221c2101201b21030340200341206a2802002105200341086a290200210c200341106a290200210d20032902002120200241a0056a41186a2206200341186a290200370300200241a0056a41106a2207200d370300200241a0056a41086a2208200c370300200220203703a00502402005450d00200241d8016a41086a222d2008290300370300200241d8016a41106a22142007290300370300200241d8016a41186a220e2006290300370300200220022903a005220c3703f8022002200c3703d8012021428094ebdc0380210d2021428094ebdc038221204130102c221a450d0e200241a0016a200d42002005ad220c420010e808201a20022903d801370300201a41186a200e290300370300201a41106a2014290300370300201a41086a202d290300370300201a20022903a00122212020200c7e220c428094ebdc0380a7417f200c428080808080c0b2cd3b541b200c428094ebdc03824280cab5ee01566aad7c220c370320201a41286a200241a0016a41086a290300200c202154ad7c37030002400240024020014124470d00410121174101211c0c010b200341246a2110201b201c6a2201415c6a2111410121174101211c034020102103024002400340200341206a28020021052006200341186a2902003703002007200341106a2902003703002008200341086a290200370300200220032902003703a00502402005450d0020024190016a200d42002005ad220c420010e808200241f8026a41086a20082903002221370300200241f8026a41106a20072903002230370300200241f8026a41186a20062903002231370300200220022903a00522323703f802200e203137030020142030370300202d2021370300200220323703d8012020200c7e220c428094ebdc03802130200c428094ebdc03822131200229039001212120024190016a41086a2903002132201c2017470d03201741016a220520174f0d020c160b2001200341246a2203470d000c040b0b201741017422102005201020054b1b22054104200541044b1bad42307e2233422088a74541037421052033a721100240024020170d00200241003602a8030c010b200241083602b0032002201a3602a8032002201741306c3602ac030b200241a0056a20102005200241a8036a107d20022802a805210520022802a0054101460d0320022802a405211a200541306e21170b200341246a2110202d290300213320142903002134200e290300213520022903d8012136201a201c41306c6a220520212030a7417f200c428080808080c0b2cd3b541b20314280cab5ee01566aad7c220c37032020052036370300200541286a2032200c202154ad7c370300200541186a2035370300200541106a2034370300200541086a2033370300201c41016a211c20112003470d000b0b2019450d04201941246c450d04201b102e0c040b2005450d0f0c0e0b200341246a21032001415c6a22010d000b0b410021174108211a02402019450d00201941246c450d00201b102e0b4100211c0b200241d8016a41186a2203202b290300370300200241d8016a41106a2205202a290300370300200241d8016a41086a22012029290300370300200220022903d0053703d801200920173602042009201c3602082009201a360200200920022903d80137020c202620012903003702002023200529030037020020242003290300370200201d202c470d000b201d2109202c211d0b202f422088210c202c201d6b2203412c6d210502402003450d002005412c6c210303400240201d41046a2802002205450d00200541246c450d00201d280200102e0b201d412c6a211d200341546a22030d000b0b200ca72107202ea72108202fa7211d200f2009200f6b221f412c6d2209412c6c6a2106200f2103034020032006460d0202400240200241d8036a2003410c6a220310a20222050d004200210c0c010b2005290300210c0b20024188016a200341746a200c420010bf04200341206a21032002280288012201450d000b200228028c0121070240201f450d002009412c6c2105200f210303400240200341046a2802002206450d00200641306c450d002003280200102e0b2003412c6a2103200541546a22050d000b0b02402008450d002008412c6c450d00200f102e0b41032106201d450d00201d41306c450d002012102e0b200241d8036a10be022007ad2120410021030c050b200220123602f0032002201d3602ec03200220123602e80320022012200741306c6a3602f403200241d8016a200241e8036a10c201200241e8036a20022802d801220320022802e001200f200910b704410121060240024020022802e8034101470d00200241f4036a350200212020022902ec03210c0c010b20022802ec0321052002200241f0036a29030037029c022002200536029802200241e8036a10a90320022903f003210d200229039802210c20022903a0022120410021060b024020022802dc0141ffffff3f71450d002003102e0b0240201f450d002009412c6c2105200f210303400240200341046a2802002201450d00200141306c450d002003280200102e0b2003412c6a2103200541546a22050d000b0b02402008450d002008412c6c450d00200f102e0b200241d8036a10be0202402006450d00200c422088a72101200ca72106410021030c050b2020a72105410021030b200220033a00ed03200241013a00ec03200241173a00e803200241e8036a10fe0120024190036a420037030020024188036a4200370300200241f8026a41086a22034200370300200242003703f802200241e8036a41a5fec600411a1081022003200241e8036a41086a2201290000370300200220022900e8033703f802200241e8036a4180c3c8004105108102200b41086a2001290000370000200b20022900e80337000020024180016a200241f8026a4120108e0220022005ad3703d0012002200c3703c801200ca72126410021080c040b200241f0036a280200210120022802ec0321060c010b2003280200210120022802ec0321060240200e450d00200e41386c21052010412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200541486a22050d000b0b41012103200f450d00200f41386c450d002010102e0b0b200241f4036a20203e020020022001ad4220862006ad843702ec03200220033602e803200241e8036a41086a2203290300210d20022903e803210c20024181063b01ec03200241173a00e803200241e8036a10fe0120024190036a420037030020024188036a4200370300200241f8026a41086a22054200370300200242003703f802200241e8036a41a5fec600411a10810220052003290000370300200220022900e8033703f802200241e8036a4180c3c8004105108102200b41086a2003290000370000200b20022900e803370000200241f8006a200241f8026a4120108e022002200d3703d0012002200c4220883e02cc012002200ca722263602c801410121080b20024190036a22014200370300200241f8026a41106a22064200370300200241f8026a41086a22034200370300200242003703f802200241e8036a41a5fec600411a1081022003200241e8036a41086a2205290000370300200220022900e8033703f802200241e8036a4180c3c8004105108102200b41086a22072005290000370000200b20022900e803370000200241f0006a200241f8026a4120108e02200228027021092002280274211d200142003703002006420037030020034200370300200242003703f802200241e8036a41a5fec600411a10810220032005290000370300200220022900e8033703f802200241e8036a4180c3c800410510810220072005290000370000200b20022900e8033700002002201d41016a410220091b3602e803200241f8026a4120200241e8036a410410b2014102200310ec04200142003703002006420037030020034200370300200242003703f802200241e8036a41a5fec600411a10810220032005290000370300200220022900e8033703f802200241e8036a41c8c4c800410810810220072005290000370000200b20022900e803370000200241f8026a412010ff01200142003703002006420037030020034200370300200242003703f802200241e8036a41a5fec600411a10810220032005290000370300200220022900e8033703f802200241e8036a41ccc5c800411010810220072005290000370000200b20022900e803370000200241f8026a412010ff01200142003703002006420037030020034200370300200242003703f802200241e8036a41a5fec600411a10810220032005290000370300200220022900e8033703f802200241e8036a4194c5c800410e10810220072005290000370000200b20022900e803370000200241f8026a412010ff010240024020080d002026450d0020022902cc012136200d410210f104200241b8056a22034200370300200241a0056a41106a22054200370300200241a0056a41086a22014200370300200242003703a005200241e8036a41f8fcc60041081081022001200241e8036a41086a2206290000370300200220022900e8033703a005200241e8036a41a8aac800410d10810220032006290000370300200520022900e803370300200241d8006a200241a0056a412010f8022036422088a7220641067422014106752203ad42d0007e220c422088a70d03200ca72205417f4c0d03200241d8006a41106a290300210c2002290360210d200228025821070240024020050d00410821180c010b2005102c2218450d030b0240024002400240200541d0006e223720034f0d00203741017422082003200820034b1b22084104200841044b1bad42d0007e2220422088a74541037421082020a7210902400240200541cf004b0d00200241003602e8030c010b200241e8036a41086a4108360200200220183602e8032002203741d0006c3602ec030b20024198026a20092008200241e8036a107d200241a0026a28020021052002280298024101460d01200228029c022118200541d0006e21370b20060d01410021172026211a0c020b2005450d050c040b202620016a2125200241c8006a200d200c427f420010e708200241c8006a41086a290300420020071b220c42002002290348420020071b220d420156200c420052200c501b22031b2130200d420120031b2131200641067441406a41067641016a2123200241e8036a41206a211b2018211e410021172026211a0240034020024198026a41286a2201201a220341286a29030037030020024198026a41206a2206200341206a29030037030020024198026a41186a2207200341186a29030037030020024198026a41106a2208200341106a29030037030020024198026a41086a2209200341086a2903003703002002200329030037039802200341c0006a211a200341306a2802002219450d01200341386a2802002105200341346a280200211c200241e8036a41286a2001290300370300201b2006290300370300200241e8036a41186a2007290300220c370300200241e8036a41106a2008290300220d370300200241e8036a41086a20092903002220370300200220022903980222213703e803200241a8036a41186a2222200c370300200241a8036a41106a2227200d370300200241a8036a41086a22282020370300200220213703a803200241d0056a41086a201b41086a2903003703002002201b2903003703d0052005ad42307e220c422088a70d06200ca72203417f4c0d060240024020030d004108211f0c010b2003102c221f450d060b200341306e21060240024020050d004200210d410021014200210c42002134420021330c010b200541306c21074200210d410021014200210c4200213442002133201921030340200341206a2903002120200341286a2903002121200241f8026a41186a200341186a2205290300370300200241f8026a41106a200341106a2208290300370300200241f8026a41086a200341086a2209290300370300200220032903003703f802200241186a202142002031420010e808200241286a203042002020420010e808200241386a202042002031420010e808200241d8016a41186a221d2005290000370300200241d8016a41106a220b2008290000370300200241d8016a41086a22082009290000370300200220032900003703d801427f200241386a41086a2903002220200229031820022903287c7c2232202142005220304200527120022903204200527220022903304200527220322020547222051b2120427f200229033820051b212102400240200241d8016a200241a8036a412010ec080d00427f203320207c203420217c22352034542205ad7c22322005203220335420322033511b22051b2133427f203520051b21340c010b200241a0056a41186a2209201d290300370300200241a0056a41106a221d200b290300370300200241a0056a41086a220b2008290300370300200220022903d8013703a005024020012006470d00200641016a22052006490d0a200641017422082005200820054b1b22054104200541044b1bad42307e2232422088a74541037421052032a721080240024020060d00200241003602d8020c010b200241083602e0022002201f3602d8022002200641306c3602dc020b200241c0056a20082005200241d8026a107d20022802c8052105024020022802c0054101470d002005450d0b0c0a0b20022802c405211f200541306e21060b201f200141306c6a2205202037030820052021370300200520022903a005370310200541186a200b290300370300200541206a201d290300370300200541286a2009290300370300200141016a21010b200341306a2103427f200c20207c200d20217c2220200d542205ad7c220d2005200d200c54200d200c511b22051b210c427f202020051b210d200741506a22070d000b0b0240201c450d00201c41306c450d002019102e0b200241d8016a41186a20222903002220370300200241d8016a41106a20272903002221370300200241d8016a41086a20282903002232370300200220022903a80322353703d801201e41386a2033370300201e41306a2034370300201e41286a200c370300201e200d370320201e41186a2020370300201e41106a2021370300201e41086a2032370300201e2035370300201e41c8006a2001360200201e41c4006a2006360200201e41c0006a201f360200201741016a2117201e41d0006a211e201a2025470d000b2025211a202321170b2025201a6b220141067521030b02402001450d0020034106742105201a41346a21030340024020032802002201450d00200141306c450d002003417c6a280200102e0b200341c0006a2103200541406a22050d000b0b0240203642ffffff1f83500d002026102e0b201741d0006c221d41d0006e213802400240201d0d00410121390c010b2038410574102c2239450d030b4100212b024020182018201d6a2209460d004100212b20392103201821050340200241a0056a41086a2201200541086a290300370300200241a0056a41106a2206200541106a290300370300200241a0056a41186a2207200541186a290300370300200220052903003703a005200241e8036a200541c0006a220510c501024020022802ec032208450d00200841306c450d0020022802e803102e0b200320022903a005370000200341186a2007290300370000200341106a2006290300370000200341086a2001290300370000202b41016a212b200341206a2103200541106a22052009470d000b0b4200213320024180046a4200370300200241e8036a41106a4200370300200241e8036a41086a22034200370300200242003703e803200241d8016a4192fdc60041071081022003200241d8016a41086a290000370300200220022900d8013703e80320024198026a41dcaac6004115108102200441086a20024198026a41086a2900003700002004200229009802370000200241106a200241e8036a4120108e02024002400240202b2002280214410020022802101b22034101200341014b1b490d002018201741d0006c6a210e024020170d002018212c420021320c020b200241a8036a41106a213a200241f8026a41106a213b2002419c036a210f200241e8036a41206a211442002133420021322018212c0340200241d8016a41386a2205202c220341386a290300370300200241d8016a41306a2201200341306a290300370300200241d8016a41286a2206200341286a290300370300200241d8016a41206a2207200341206a290300370300200241d8016a41186a2208200341186a290300370300200241d8016a41106a2209200341106a290300370300200241d8016a41086a221d200341086a2903003703002003290300210c200241c8016a41086a220b200341cc006a2802003602002002200c3703d8012002200341c4006a2902003703c801200341d0006a212c200341c0006a2802002203450d0220024198026a41386a200529030037030020024198026a41306a200129030037030020024198026a41286a200629030037030020024198026a41206a200729030037030020024198026a41186a221f200829030037030020024198026a41106a221e200929030037030020024198026a41086a221a201d290300370300200220022903d80137039802200241e8036a41386a2005290300370300200241e8036a41306a2001290300370300200241e8036a41286a200629030037030020142007290300370300200241e8036a41186a2008290300370300200241e8036a41106a2009290300370300200241e8036a41086a201d290300370300200220022903d8013703e803200241d8026a41186a201f290300370300200241d8026a41106a201e290300370300200241d8026a41086a201a29030037030020022002290398023703d802200241f8026a41186a2206201441186a290300370300200241f8026a41106a2207201441106a290300370300200241f8026a41086a2208201441086a290300223437030020022003360298032002201429030022353703f802200f20022903c801370200200f41086a200b280200360200200241d0056a200a200241d8026a10a10320022802d805210920022802d0052101200241003602b003200242013703a8032002200241f8026a3602a005200241a0056a200241a8036a10af012002203b3602a005200241a0056a200241a8036a10af01200228029803210320022802a0032205200241a8036a107602402005450d00200541306c21050340200241a8036a200341106a41201074200220033602a005200341306a2103200241a0056a200241a8036a10af01200541506a22050d000b0b2001200920022802a803220320022802b00310b201024020022802ac03450d002003102e0b024020022802d405450d002001102e0b200241d0056a41186a22112006290300370300200241d0056a41106a22122007290300370300200241d0056a41086a22132008290300370300200220022903f8023703d00520022802a4032115200228029c0321162002280298032127024020022802a0032226418102490d002026410176ad42307e220c422088a70d08200ca72210417f4c0d082010102c2223450d07202741506a2129202741f07e6a212d410021244104211a4100211f202621190340024002402019221d417f6a22010d0041012109410021190c010b02400240024002400240024002402027200141306c6a2203290300201d41306c222a20276a41a07f6a2205290300220d56200341086a2903002220200541086a290300220c562020200c511b0d00201d417e6a2108202d202a6a210341002119410021050340024020082005470d00201d21090c090b200d20032903002221582101200c200341086a2903002220512106200c2020582107200341506a2103200541016a21052021210d2020210c2001200720061b0d000b200541016a21092005417f73201d6a21010c010b202d202a6a210302400340024020014101470d00410021010c020b200d20032903002221562105200c200341086a2903002220512106200c2020562107200341506a21032001417f6a21012021210d2020210c2005200720061b0d000b0b201d2001490d01201d20264b0d02201d20016b22094101762206450d002029202a6a21032027200141306c6a21050340200241a8036a41186a2207200541186a2208290300370300200241a8036a41106a220b200541106a221e290300370300200241a8036a41086a221b200541086a221c290300370300200220052903003703a803200541206a2217290300210c200341286a2219290300210d200341086a22042903002120200341106a22222903002121200341186a22282903002130200329030021312017200341206a222529030037030020082030370300201e2021370300201c202037030020052031370300200541286a220829030021202008200d3703002022200b290300370300202820072903003703002004201b290300370300200320022903a803370300201920203703002025200c370300200341506a2103200541306a21052006417f6a22060d000b0b024020010d00200121190c060b0240200941094d0d00200121190c060b201d20264b0d03201d20016b21062027200141306c6a210b2029202a6a21220340201d2001417f6a2219490d050240201d20196b22094102490d002027200141306c6a22032903002027201941306c6a2208290300222058200341086a2205290300220d200841086a2201290300220c58200d200c511b0d00200241a0056a41186a221b200841286a2207290300370300200241a0056a41106a221c200841206a221e290300370300200241a0056a41086a2217200841186a2204290300370300200220082903103703a0052008200329030037030020012005290300370300200841106a200341106a2903003703002004200341186a290300370300201e200341206a2903003703002007200341286a29030037030041012105024020094103490d002006417f6a211e41002105200b210302400340200341306a2201290300202058200341386a2207290300220d200c58200d200c511b0d0120062005460d07200341286a200341d8006a290300370300200341206a200341d0006a290300370300200341186a200341c8006a290300370300200341106a200341c0006a290300370300200341086a20072903003703002003200129030037030020012103201e200541016a2205470d000b200541016a2105202221030c010b200541016a21050b200320203703002003200c3703082008200541306c6a220341286a201b290300370300200341206a201c290300370300200341186a2017290300370300200320022903a0053703100b2019450d06200641016a2106200b41506a210b201921012009410a4f0d060c000b0b2001201d41e4d1cc001057000b201d202641e4d1cc00104d000b200541016a200941d4d1cc00103c000b201d2001417f6a2219490d00201d202641f4d1cc00104d000b2019201d41f4d1cc001057000b0240201f2024470d00202441016a22032024490d0a202441017422052003200520034b1b22034104200341044b1b220341ffffffff01712003464102742105200341037421030240024020240d00200241003602a8030c010b200241043602b0032002201a3602a803200220244103743602ac030b200241a0056a20032005200241a8036a107d20022802a8052103024020022802a0054101470d002003450d0b0c0a0b20022802a405211a200341037621240b201a201f4103746a2203200936020420032019360200201f41016a2204211f024020044102490d0002400240024003400240024002400240201a2004221f417f6a22044103746a2203280200450d00201f410374201a6a220741746a2802002206200328020422054d0d00201f41024d0d08201a201f417d6a22034103746a2802042201200520066a4d0d01201f41034d0d08200741646a280200200120066a4b0d080c010b201f4103490d0120032802042105201a201f417d6a22034103746a28020421010b20012005490d010b201f417e6a21030b0240201f200341016a22224d0d00201f20034d0d02201a20034103746a221b2802042228201b2802006a2203201a20224103746a221c2802002217490d03200320264b0d04201b41046a21252027201741306c6a220b201c280204221e41306c22056a2106200341306c210102400240200320176b2208201e6b2203201e490d002023200b200510e908221d20056a210702400240201e4101480d002008201e4a0d010b200b2103201d21050c020b202720016a2109201d2105200b210303402003200620052006290300200529030056200641086a290300220c200541086a290300220d56200c200d511b22081b2201290300370300200341086a200141086a290300370300200341106a200141106a290300370300200341186a200141186a290300370300200341206a200141206a290300370300200341286a200141286a2903003703002005200541306a20081b2105200341306a2103200641306a200620081b220620094f0d02200720054b0d000c020b0b20232006200341306c220510e908221d20056a210702400240201e4101480d00200341014e0d010b20062103201d21050c010b202920016a21012006210303402001200341506a2206200741506a22082008290300200629030056200841086a290300220c200641086a290300220d56200c200d511b22091b2205290300370300200141086a200541086a290300370300200141106a200541106a290300370300200141186a200541186a290300370300200141206a200541206a290300370300200141286a200541286a2903003703002007200820091b21070240200b2006200320091b2203490d00201d21050c020b200141506a2101201d2105201d2007490d000b0b20032005200720056b220120014130706b10e9081a20252028201e6a360200201b2017360200201c201c41086a201f2022417f736a41037410ea081a4101211f200441014d0d050c010b0b2022201f4184d2cc00103c000b2003201f4194d2cc00103c000b2017200341a4d2cc001057000b2003202641a4d2cc00104d000b20190d000b0240202441ffffffff0171450d00201a102e0b20104130702103024020104130490d0020102003460d002023102e0b20264180022026418002491b21260b203220347c210c203320357c220d2033542206ad2120200241a8036a41186a2011290300370300200241a8036a41106a2012290300370300200241a8036a41086a2013290300370300200220022903d0053703a803200220153602d403200220263602d003200220163602cc03200220273602c803200241c0056a200a200241d8026a10f70520022802c805210720022802c0052101200241003602a805200242013703a0052002200241a8036a3602d803200241d8036a200241a0056a10af012002203a3602d803200241d8036a200241a0056a10af0120022802c803210320022802d0032205200241a0056a107602402005450d00200541306c21050340200241a0056a200341106a41201074200220033602d803200341306a2103200241d8036a200241a0056a10af01200541506a22050d000b0b200c20207c210c2001200720022802a005220320022802a80510b201024020022802a405450d002003102e0b200c2032512103200c2032542105024020022802c405450d002001102e0b2006200520031b2103024020022802cc032205450d00200541306c450d0020022802c803102e0b427f200c20031b2132427f200d20031b2133202c200e470d000c030b0b0240201d450d002039102e0b02402017450d00201741d0006c2105201841c4006a21030340024020032802002201450d00200141306c450d002003417c6a280200102e0b200341d0006a2103200541b07f6a22050d000b0b2037450d02203741d0006c450d022018102e0c020b200e202c460d000340202c220341d0006a212c0240200341c4006a2802002205450d00200541306c450d00200341c0006a280200102e0b200e202c470d000b0b02402037450d00203741d0006c450d002018102e0b20024198026a200a10960320022802a00221052002280298022103200220323703f003200220333703e80320032005200241e8036a411010b2010240200228029c02450d002003102e0b0240202b450d00202b4105742106203921030340200241e8036a2003108605200241086a20022802e803220720022802f0031087054100200228020820022d000c22054102461b210120054101712105024020022802ec03450d002007102e0b200220053a00dc01200220013602d80120024198026a200a200310f80520022802a00221072002280298022101200241003602f003200242013703e803200241d8016a200241e8036a109102200220053a00a803200241e8036a200241a8036a410110742001200720022802e803220520022802f00310b201024020022802ec03450d002005102e0b0240200228029c02450d002001102e0b200341206a2103200641606a22060d000b0b200241f0036a41043a0000200241043a00e803200241e8036a10fe012039450d002000202bad4220862038ad84370204200020393602000c010b200041003602000b200241f0056a24000f0b1036000b1038000b810301047f230041f0006b22002400200041186a22014200370300200041106a22024200370300200041086a42003703002000420037030020004192fdc6004107108102200041d8006a41b8b2c60041081081022001200041d8006a41086a290000370300200220002900583703002000412036022420002000360220200041286a2000412010ed0241042101024020002802282202450d00200028022c210302400240200041286a41086a280200450d004100210102400240024020022d00000e0404000102030b410121010c030b410221010c020b410321010c010b20004100360240200042013703382000410a36024c2000200041206a3602482000200041386a360254200041ec006a41013602002000420137025c200041909dc5003602582000200041c8006a360268200041d4006a419cebc000200041d8006a103d1a2000280238200028024010ef020240200028023c450d002000280238102e0b410421010b2003450d002002102e0b200041f0006a24004100200120014104461b0bae0301037f230041f0006b22032400200341086a4192fdc6004107108102200341186a41b29dc500410b108102200320013602382003200341386a410410a301370348200341ec006a2201200341386a41046a3602002003200341c8006a41086a3602642003200341386a3602682003200341c8006a360260200341286a200341e0006a107c024002404120102c2204450d002003422037024c20032004360248200341c8006a2002412010742003200328024822022003280250220410a3013703582001200220046a360200200320023602682003200341d8006a41086a3602642003200341d8006a360260200341386a200341e0006a107c0240200328024c450d002002102e0b20032802302201200328024022046a41206a2202417f4c0d010240024020020d00410121050c010b2002102c2205450d010b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341f0006a24000f0b1036000b1038000bfb0201017f230041f0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041003602200c010b200328020c21022003200341086a41086a28020036024c20032001360248200341186a200341c8006a1085050240024020032802380d0020034100360258200342013703502003410a360264200320033602602003200341d0006a36026c2003412c6a41013602002003420137021c200341909dc5003602182003200341e0006a360228200341ec006a419cebc000200341186a103d1a2003280250200328025810ef0202402003280254450d002003280250102e0b200041003602200c010b20002003290318370300200041286a200341186a41286a290300370300200041206a200341186a41206a290300370300200041186a200341186a41186a290300370300200041106a200341186a41106a290300370300200041086a200341186a41086a2903003703000b2002450d002001102e0b200341f0006a24000b921c030a7f037e137f230041800a6b22022400200241d8006a10ab02200241b8016a41186a22034200370300200241b8016a41106a22044200370300200241b8016a41086a22054200370300200242003703b801200241e0066a41aad3c800410110b0012003200241e0066a41186a22062900003703002004200241e0066a41106a22072900003703002005200241e0066a41086a2208290000370300200220022900e0063703b801200241e0066a41aad3c800410110b001200241b8086a41186a22092006290000370300200241b8086a41106a220a2007290000370300200241b8086a41086a220b2008290000370300200220022900e0063703b80802400240024002404120102c2203450d002008200b2903003703002007200a29030037030020062009290300370300410041003502e8f54c200241a0056aad7c42adfed5e4d485fda8d8007e422189220c3e02e8f54c200241c8006a41e8f5cc00ad220d42a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010e808200241286a200c42a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010e808200241386a200d42c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010e808200241186a200c42c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010e808200241086a200c200d85420042adfed5e4d485fda8d800420010e8082002418c026a420037020020024194026a4200370200200220022903b8083703e0062002410436028802200241d8016a41d0006a41d081ca00360200200241d8016a41c8006a4108360200200241d8016a41c4006a20033602002002200241b8016a3602ac022002200241d8006a3602a402200241013a00b002200241c9026a2006290300370000200241c1026a2007290300370000200241b9026a2008290300370000200241b1026a20022903e006370000200241d3026a200241a2056a2d00003a0000200241d1026a20022f00a0053b0000200241d8016a41286a4200370300200241d8016a41246a41d0a1c000360200200241003602d402200241003602f8012002200241186a41086a290300200229031885200d7c200241086a41086a29030020022903088542cf829ebbefefde82147c220e423088893703f0012002200c200241386a41086a2903002002290338857c200e422088893703e8012002200241286a41086a290300200229032885200d7c200e421088893703e0012002200c200241c8006a41086a2903002002290348857c200e893703d8012001280200220f2001280208221041d0006c6a2111200241e0066a41306a2112200241e0066a41206a2113200241b8086a41246a2104200241f8026a41046a2105200241e0066a41046a2103200241e0066a410172211420012802042115200f2116410021170340201621012017211802400240034002400240024020112001470d00200241e0066a41386a200241a0056a41386a290300370300200241e0066a41306a200241a0056a41306a290300370300200241e0066a41286a200241a0056a41286a290300370300200241e0066a41206a200241a0056a41206a290300370300200241e0066a41186a200241a0056a41186a290300370300200241e0066a41106a200241a0056a41106a290300370300200241e0066a41086a200241a0056a41086a290300370300200220022903a0053703e006201121010c010b200241a0056a41386a200141386a2219290300370300200241a0056a41306a200141306a221a290300370300200241a0056a41286a200141286a221b290300370300200241a0056a41206a200141206a221c290300370300200241a0056a41186a200141186a2216290300370300200241a0056a41106a200141106a2217290300370300200241a0056a41086a200141086a221d290300370300200220012903003703a005200141c0006a280200211e200141c4006a280200211f200141c8006a290200210c200241e0066a41386a222020192903003703002012201a290300370300200241e0066a41286a2219201b2903003703002013201c29030037030020062016290300370300200720172903003703002008201d290300370300200220012903003703e006201e0d01200141d0006a21010b024020112001460d0003402001220341d0006a21010240200341c4006a2802002204450d00200441306c450d00200341c0006a280200102e0b20112001470d000b0b02402015450d00201541d0006c450d00200f102e0b200241d8016a109b08200241e0066a200241d8006a41e00010e9081a200241d8076a200241d0016a290300370300200241d0076a200241c8016a290300370300200241c8076a200241b8016a41086a290300370300200220022903b8013703c007200041086a200241e0066a41800110e9081a200041003602000c080b200241e0036a41386a221a2020290300370300200241e0036a41306a221b2012290300370300200241e0036a41286a221c2019290300370300200241e0036a41206a22192013290300370300200241e0036a41186a22162006290300370300200241e0036a41106a22172007290300370300200241e0036a41086a221d2008290300370300200220022903e0063703e003200341386a201a290300370200200341306a201b290300370200200341286a201c290300370200200341206a2019290300370200200341186a2016290300370200200341106a2017290300370200200341086a201d290300370200200320022903e003370200200241b8086a200241e0066a41c40010e9081a200241f8026a41086a200b290200370300200241f8026a41106a200a290200370300200241f8026a41186a2009290200370300200241f8026a41206a200241b8086a41206a280200360200200241d8026a41086a2219200441086a290200370300200241d8026a41106a221a200441106a290200370300200241d8026a41186a221b200441186a290200370300200220022902b8083703f802200220042902003703d802200241a0036a41186a221c200541186a290000370300200241a0036a41106a2216200541106a290000370300200241a0036a41086a2217200541086a290000370300200220052900003703a003200241c0036a41186a221d201b290300370300200241c0036a41106a2220201a290300370300200241c0036a41086a22212019290300370300200220022903d8023703c003200241a8086a200241a0036a10a603200241e0066a20022802a808221b20022802b00810a70320022d00e006211a200241b8086a201441c00110e9081a410021190240201a4101470d00200241a0056a200241b8086a41c00110e9081a410121190b024020022802ac08450d00201b102e0b024002402019450d00200241e0036a200241a0056a41c00110e9081a2006201c2903003703002007201629030037030020082017290300370300201320022903c003370300201341086a2021290300370300201341106a2020290300370300201341186a201d290300370300200220022903a0033703e0062002200c3703a8072002201f3602a4072002201e3602a007201841016a2117200141d0006a21164100211903402002200241e0036a20194198fac6006a221a28000010d1032002280204221e41046a221f417f4c0d022002280200211b02400240201f0d004101211c0c010b201f102c221c450d080b200241003602a8052002201f3602a4052002201c3602a005200241a0056a201a41041074201e200241a0056a1076200241a0056a201b201e107420022802a805211e20022802a005211f200220183602a808200241b8086a200241d8016a201f201e200241a8086a4104109c08024020022802a405450d00201f102e0b20022802bc08211f024020022802b8084101470d0002400240201f2d00000e0407070007010b201f41086a280200450d06201f41046a280200102e0c060b201f41286a280200450d05201f41246a280200102e0c050b0240201f450d0020022802c008450d00201f102e0b201941046a22194118460d050c000b0b0240201f450d00201f41306c450d00201e102e0b200141d0006a2101201841016a21180c010b0b1038000b201f102e200041086a411a360200200041f881ca00360204200041013602000c040b200220183602fc09200241003602a805200242013703a005200241a0056a200241e0066a41201074200220133602a808200241a8086a200241a0056a10af01200220123602a808200241a8086a200241a0056a10af0120022802a007211f20022802a8072218200241a0056a107602402018450d00201841306c21180340200241a0056a201f41106a412010742002201f3602a808201f41306a211f200241a8086a200241a0056a10af01201841506a22180d000b0b200241b8086a200241d8016a200241fc096a410420022802a005221f20022802a805109c08024020022802a405450d00201f102e0b024020022802b8084101470d000240024020022802bc0822032d00000e0405050005010b200341086a280200450d04200341046a280200102e0c040b200341286a280200450d03200341246a280200102e0c030b024020022802bc082201450d0020022802c008450d002001102e0b20022802a4072201450d00200141306c450d0020022802a007102e0c000b0b1036000b2003102e200041086a411a360200200041f881ca00360204200041013602000b201141b07f6a2103024020022802a4072204450d00200441306c450d0020022802a007102e0b024020032001460d00201041d0006c200f6a41b07f6a21040340024020014194016a2802002203450d00200341306c450d0020014190016a280200102e0b2004200141d0006a2201470d000b0b02402015450d00201541d0006c450d00200f102e0b200241d8016a109b08200241d8006a10b8020b200241800a6a24000b850201037f230041d0006b22022400200241086a41a081ca004107108102200241186a41a781ca004112108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bdf0902087f047e230041b0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602000c010b200341186a280200210220032802142104200341003a0060024002402002450d00200320012d00003a0040200341013a0060024020024101460d00200320012d00013a0041200341023a006020024102460d00200320012d00023a0042200341033a006020024103460d00200320012d00033a0043200341043a006020024104460d00200320012d00043a0044200341053a006020024105460d00200320012d00053a0045200341063a006020024106460d00200320012d00063a0046200341073a006020024107460d00200320012d00073a0047200341083a006020024108460d00200320012d00083a0048200341093a006020024109460d00200320012d00093a00492003410a3a00602002410a460d00200320012d000a3a004a2003410b3a00602002410b460d00200320012d000b3a004b2003410c3a00602002410c460d00200320012d000c3a004c2003410d3a00602002410d460d00200320012d000d3a004d2003410e3a00602002410e460d00200320012d000e3a004e2003410f3a00602002410f460d00200320012d000f3a004f200341103a006020024110460d00200320012d00103a0050200341113a006020024111460d00200320012d00113a0051200341123a006020024112460d00200320012d00123a0052200341133a006020024113460d00200320012d00133a0053200341143a006020024114460d00200320012d00143a0054200341153a006020024115460d00200320012d00153a0055200341163a006020024116460d00200320012d00163a0056200341173a006020024117460d00200320012d00173a0057200341183a006020024118460d00200320012d00183a0058200341193a006020024119460d00200320012d00193a00592003411a3a00602002411a460d00200320012d001a3a005a2003411b3a00602002411b460d00200320012d001b3a005b2003411c3a00602002411c460d00200320012d001c3a005c2003411d3a00602002411d460d00200320012d001d3a005d2003411e3a00602002411e460d00200320012d001e3a005e2003411f3a00602002411f460d00200341206a41106a2205200341c0006a41106a2206290300370300200341206a41086a2207200341c0006a41086a2208290300370300200320012d001f3a005f200341206a41186a2209200341c0006a41186a220a290300370300200341203a006020032003290340220b3703682003200b3703202002417c714120460d0120082007290300220b37030020062005290300220c370300200a2009290300220d37030020032003290320220e370340200128002021022000411c6a200d370200200041146a200c3702002000410c6a200b3702002000200e370204200041246a2002360200410121020c020b200341003a00600b4100210220034100360270200342013703682003410a3602242003200341086a3602202003200341e8006a3602ac01200341d4006a410136020020034201370244200341909dc5003602402003200341206a360250200341ac016a419cebc000200341c0006a103d1a2003280268200328027010ef02200328026c450d002003280268102e0b200020023602002004450d002001102e0b200341b0016a24000bb40201037f230041e0006b22022400200241086a41a081ca004107108102200241186a41b4d3c1004108108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bcb0201027f230041c0036b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003a00000c010b200328021421042003200341186a2802003602ac03200320013602a803200341e0016a200341a8036a109903410121020240024020032d00e0014101470d004100210220034100360228200342013703202003410a3602b4032003200341086a3602b0032003200341206a3602bc03200341f4016a4101360200200342013702e401200341909dc5003602e0012003200341b0036a3602f001200341bc036a419cebc000200341e0016a103d1a2003280220200328022810ef022003280224450d012003280220102e0c010b200341206a200341e0016a41017241c00110e9081a200041016a200341206a41c00110e9081a0b200020023a00002004450d002001102e0b200341c0036a24000b986905087f017e097f027e017f230041d0026b2205240002404108102c2206450d0020062001200241e0016c6a2207360204200620013602004108102c2208450d0020082003200441e0016c6a22093602042008200336020002400240024002400240024002402000450d00200541c0016a210a0c010b200541d8016a220b4200370300200541d0016a22044200370300200541c0016a41086a22024200370300200542003703c001200541a8026a41a0dac800410f1081022002200541a8026a41086a220c290000370300200520052900a8023703c001200541a8026a41a0eec8004107108102200b200c290000370300200420052900a802370300200541c0016a210a200541c0016a4120108f02450d010b200541a8026a200610a9070240024020052802a802450d00200541c0016a41106a200541a8026a41106a290300370300200541c0016a41086a200541a8026a41086a290300370300200541c0016a41186a200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a280200360200200541a0016a41086a200541cc016a290200370300200541a0016a41106a200541d4016a290200370300200541a0016a41186a200541dc016a290200370300200520052903a8023703c001200520052902c4013703a001200541c0016a200610aa07417f20052802c001220441016a220220022004491bad42287e220d422088a70d06200da72204417f4c0d062004102c220e450d07200e20052903a001370300200e4201370320200e41186a200541a0016a41186a220f290300370300200e41106a200541a0016a41106a2210290300370300200e41086a200541a0016a41086a2211290300370300200541a8026a200610a907200441286e2112024020052802a8020d00410121022006102e0c020b200541c0016a410472210b4128210c410221134101210202400340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2214200541a8026a41186a290300370300200541c0016a41106a2215200541a8026a41106a290300370300200541c0016a41086a2216200541a8026a41086a290300370300200520052903a8023703c0012011200b41086a2902003703002010200b41106a290200370300200f200b41186a2902003703002005200b2902003703a0012014200f2903003703002015201029030037030020162011290300370300200520052903a0013703c001024020022012470d00200541a8026a200610aa072002417f20052802a802220441016a221220122004491b6a22042002490d0920132004201320044b1b22044104200441044b1bad42287e220d422088a7454103742104200da721120240024020020d00200541003602a8020c010b200541083602b0022005200c3602ac022005200e3602a8020b20054180016a20122004200541a8026a107d20052802880121042005280280014101460d02200528028401210e200441286e21120b200e200c6a220420052903c001370300200441186a2014290300370300200441106a2015290300370300200441086a2016290300370300200441206a4201370300200541a8026a200610a907200c41286a210c201341026a2113200241016a210220052802a8020d000b2006102e0c020b2004450d060c070b2006102e4108210e41002102410021120b200541d8016a220b4200370300200541d0016a22044200370300200541c0016a41086a4200370300200542003703c001200541a8026a41a0dac800410f108102200a41086a200541a8026a41086a220c290000370000200a20052900a802370000200541a8026a41a0eec8004107108102200b200c290000370300200420052900a802370300200541a8026a200a4120109d0320052802a8024101460d01200520023602c801200520123602c4012005200e3602c001200541a0016a200541c0016a41004100200510ab070c020b200b42003703002004420037030020024200370300200542003703c001200541a8026a41a0dac800410f1081022002200c290000370300200520052900a8023703c001200541a8026a41e0eec800410c108102200441086a200c290000370000200420052900a802370000200541d0006a200541c0016a1085032005290358210d20052802502113200b42003703002004420037030020024200370300200542003703c001200541a8026a41a081ca0041071081022002200c290000370300200520052900a8023703c001200541e0006a41e4d1c100410c108102200b200541e0006a41086a29000037030020042005290060370300200541c8006a200541c0016a4120108e02200528024c21022005280248210b200541c0016a200d420020131b10ac0720052802c801210c20052802c0012104200520024100200b1b3602a8022004200c200541a8026a410410b201024020052802c401450d002004102e0b2008102e2006102e0c020b200a412010ff0120052902ac02210d200520023602c801200520123602c4012005200e3602c001200541a0016a200541c0016a200da74101200d422088a710ab070b20052d00a0012114200541d8016a220b4200370300200541d0016a220c4200370300200541c0016a41086a22134200370300200542003703c001200541a8026a41a0dac800410f108102200a41086a2215200541a8026a41086a2202290000370000200a20052900a802370000200541a8026a41e0eec800410c108102200441086a22162002290000370000200420052900a802370000200541386a200a1085032005290340420020052802381b210d024020144106470d00200b4200370300200c420037030020134200370300200542003703c001200541a8026a41a0dac800410f10810220152002290000370000200a20052900a802370000200541a8026a41e0eec800410c10810220162002290000370000200420052900a8023700002005200d42017c220d3703a802200a4120200541a8026a410810b2010b200b4200370300200c420037030020134200370300200542003703c001200541a8026a41a081ca00410710810220132002290000370300200520052900a8023703c001200541e0006a41e4d1c100410c108102200b200541e0006a41086a290000370300200c2005290060370300200541306a200541c0016a4120108e02200528023421022005280230210b200541c0016a200d10ac0720052802c801210c20052802c0012104200520024100200b1b3602a8022004200c200541a8026a410410b201024020052802c401450d002004102e0b2008102e0b4108102c2211450d0120112007360204201120013602004108102c2208450d012008200936020420082003360200200541a8026a201110ad070240024020052802a802450d00200541c0016a41106a200541a8026a41106a290300370300200541c0016a41086a200541a8026a41086a290300370300200541c0016a41186a200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a280200360200200541a0016a41086a200541cc016a290200370300200541a0016a41106a200541d4016a290200370300200541a0016a41186a200541dc016a290200370300200520052903a8023703c001200520052902c4013703a001200541c0016a201110aa07417f20052802c001220441016a220220022004491bad42287e220d422088a70d02200da72204417f4c0d022004102c2210450d03201020052903a00137030020104201370320201041186a200541a0016a41186a220e290300370300201041106a200541a0016a41106a2206290300370300201041086a200541a0016a41086a220f290300370300200541a8026a201110ad07200441286e2102024020052802a8020d004101210c2011102e0c020b200541c0016a410472210441c80021134101210c02400340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2214200541a8026a41186a290300370300200541c0016a41106a2215200541a8026a41106a290300370300200541c0016a41086a2216200541a8026a41086a290300370300200520052903a8023703c001200f200441086a2902003703002006200441106a290200370300200e200441186a290200370300200520042902003703a0012014200e290300370300201520062903003703002016200f290300370300200520052903a0013703c0010240200c2002470d00200541a8026a201110aa072002417f20052802a802220b41016a22122012200b491b6a220b2002490d0520024101742212200b2012200b4b1b220b4104200b41044b1bad42287e220d422088a745410374210b200da721120240024020020d00200541003602a8020c010b200541083602b002200520103602a8022005200241286c3602ac020b20054180016a2012200b200541a8026a107d20052802880121022005280280014101460d022005280284012110200241286e21020b201020136a221241606a220b20052903c0013703002016290300210d201529030021172014290300211820124201370300200b41186a2018370300200b41106a2017370300200b41086a200d370300200541a8026a201110ad07201341286a2113200c41016a210c20052802a8020d000b2011102e0c020b20020d030c020b2011102e410821104100210c410021020b200541a8026a200810ad070240024020052802a802450d00200541c0016a41106a200541a8026a41106a290300370300200541c0016a41086a200541a8026a41086a290300370300200541c0016a41186a200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a280200360200200541a0016a41086a200541cc016a290200370300200541a0016a41106a200541d4016a290200370300200541a0016a41186a200541dc016a290200370300200520052903a8023703c001200520052902c4013703a001200541c0016a200810aa07417f20052802c001220441016a220b200b2004491bad42287e220d422088a70d02200da72204417f4c0d022004102c220f450d03200f20052903a001370300200f4201370320200f41186a200541a0016a41186a2211290300370300200f41106a200541a0016a41106a2212290300370300200f41086a200541a0016a41086a220a290300370300200541a8026a200810ad07200441286e2114024020052802a8020d00410121152008102e0c020b200541c0016a410472210441c80021134101211502400340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2216200541a8026a41186a290300370300200541c0016a41106a220e200541a8026a41106a290300370300200541c0016a41086a2206200541a8026a41086a290300370300200520052903a8023703c001200a200441086a2902003703002012200441106a2902003703002011200441186a290200370300200520042902003703a00120162011290300370300200e20122903003703002006200a290300370300200520052903a0013703c001024020152014470d00200541a8026a200810aa072014417f20052802a802220b41016a22192019200b491b6a220b2014490d0520144101742219200b2019200b4b1b220b4104200b41044b1bad42287e220d422088a745410374210b200da721190240024020140d00200541003602a8020c010b200541083602b0022005200f3602a8022005201441286c3602ac020b20054180016a2019200b200541a8026a107d200528028801210b2005280280014101460d02200528028401210f200b41286e21140b200f20136a221941606a220b20052903c0013703002006290300210d200e29030021172016290300211820194201370300200b41186a2018370300200b41106a2017370300200b41086a200d370300200541a8026a200810ad07201341286a2113201541016a211520052802a8020d000b2008102e0c020b200b0d030c020b2008102e410021144108210f410021150b200541f8006a22134200370300200541f0006a220e4200370300200541e0006a41086a2204420037030020054200370360200541a8026a41a8f8c60041041081022004200541a8026a41086a220b290000370300200520052900a802370360200541a8026a41fa8bc500410a1081022013200b290000370300200e20052900a802370300200541206a200541e0006a10850302402005290328420020052802201b221742017c220d2017540d0020134200370300200e42003703002004420037030020054200370360200541a8026a41a8f8c60041041081022004200b290000370300200520052900a802370360200541a8026a41fa8bc500410a108102200e41086a2216200b290000370000200e20052900a8023700002005200d3703c001200541e0006a4120200541c0016a410810b20120134200370300200e42003703002004420037030020054200370360200541a8026a41a8f8c60041041081022004200b290000370300200520052900a802370360200541a8026a41a58bc500410b1081022016200b290000370000200e20052900a802370000200c41286c4104722204417f4c0d012004102c220b450d02200541003602c801200520043602c4012005200b3602c001200c200541c0016a10760240200c41286c2204450d00201020046a210b201021040340200541c0016a2004412010742005200441206a2903003703a802200541c0016a200541a8026a41081074200441286a2204200b470d000b0b200541e0006a412020052802c001220420052802c80110b201024020052802c401450d002004102e0b02402002450d00200241286c450d002010102e0b0240200d42017c2217200d540d00200541a0016a41186a22044200370300200541a0016a41106a22064200370300200541a0016a41086a22024200370300200542003703a001200541a8026a41a8f8c60041041081022002200541a8026a41086a220b290000370300200520052900a8023703a001200541a8026a41978bc500410e1081022004200b290000370300200620052900a802370300200541c0016a200541a0016a10a30420052d00c0012104200541e0006a41186a2202200541d9016a290000370300200541e0006a41106a220b200541d1016a290000370300200541e0006a41086a220c200541c9016a290000370300200520052900c1013703600240024020044101460d0020054180016a41186a420037030020054180016a41106a420037030020054180016a41086a420037030020054200370380010c010b20054180016a41186a200229030037030020054180016a41106a200b29030037030020054180016a41086a200c29030037030020052005290360370380010b200541e0006a41186a220b4200370300200541e0006a41106a220c4200370300200541e0006a41086a2202420037030020054200370360200541a8026a41a8f8c60041041081022002200541a8026a41086a2204290000370300200520052900a802370360200541a8026a41ee8bc500410c108102200e41086a22132004290000370000200e20052900a802370000200541186a200541e0006a4120108e02200528021c211620052802182110200b4200370300200c42003703002002420037030020054200370360200541a8026a41a8f8c600410410810220022004290000370300200520052900a802370360200541a8026a41ee8bc500410c10810220132004290000370000200e20052900a802370000200541003602c001200541e0006a4120200541c0016a410410b201200541a8026a41186a20054180016a41186a290300370300200541a8026a41106a20054180016a41106a290300370300200420054180016a41086a29030037030020052005290380013703a802417f2016410020101b221041016a220420042010491b410d744128722204417f4c0d022004102c220b450d0341002102200541003602f801200520043602f4012005200b3602f001200541f0016a200541a8026a41201074200520173703c001200541f0016a200541c0016a4108107441002104034020022010200220104b1b21160240034002402004450d00200b200c470d02201341ffffff3f71450d002004102e0b024020162002460d0020054188026a200210db06200541e0006a200528028802220b200528029002220c10b60502400240200528026022040d004200210d410121040c010b200b200c10ff012005290264210d0b0240200528028c02450d00200b102e0b200241016a21022004200d422088a74105746a210c200da721132004210b0c010b0b200541c0016a20052802f001220420052802f80110b001024020052802f401450d002004102e0b200541f8006a4200370300200541f0006a4200370300200541e0006a41086a2204420037030020054200370360200541a8026a41a8f8c60041041081022004200541a8026a41086a2202290000370300200520052900a802370360200541a8026a41978bc500410e108102200e41086a2002290000370000200e20052900a8023700004120102c2204450d05200542203702ac02200520043602a802200541a8026a200541c0016a41201074200541e0006a412020052802a802220420052802b00210b201024020052802ac02450d002004102e0b200541a0016a41186a20054180016a41186a290300370300200541a0016a41106a20054180016a41106a290300370300200541a0016a41086a20054180016a41086a29030037030020052005290380013703a001200541e0006a41186a4200370300200541e0006a41106a4200370300200541e0006a41086a2204420037030020054200370360200541a8026a41a8f8c60041041081022004200541a8026a41086a2202290000370300200520052900a802370360200541a8026a41c28cc500410a108102200e41086a2002290000370000200e20052900a8023700004120102c2204450d05200542203702c401200520043602c001200541c0016a200541a0016a41201074200541e0006a412020052802c001220420052802c80110b201024020052802c401450d002004102e0b200541f8006a4200370300200541f0006a4200370300200541e0006a41086a2204420037030020054200370360200541a8026a41a8f8c60041041081022004200541a8026a41086a2202290000370300200520052900a802370360200541a8026a41ba8bc500410f108102200e41086a2002290000370000200e20052900a802370000201541286c4104722204417f4c0d042004102c2202450d05200541003602c801200520043602c401200520023602c0012015200541c0016a10760240201541286c2204450d00200f20046a2102200f21040340200541c0016a2004412010742005200441206a2903003703a802200541c0016a200541a8026a41081074200441286a22042002470d000b0b200541e0006a412020052802c001220420052802c80110b201024020052802c401450d002004102e0b200541a0016a41186a220c4200370300200541a0016a41106a22134200370300200541a0016a41086a22044200370300200542003703a001200541a8026a41a8f8c60041041081022004200541a8026a41086a2202290000370300200520052900a8023703a001200541e0006a41b08bc500410a108102200641086a2216200541e0006a41086a220b29000037000020062005290060370000200541c0016a200541a0016a4120109d03200541c0016a41086a2212280200210a20052802c0012108200541e0006a41186a22104200370300200541e0006a41106a22114200370300200b420037030020054200370360200541a8026a41d9fcc6004106108102200b2002290000370300200520052900a802370360200541a8026a4180f4cb004106108102200e41086a2002290000370000200e20052900a802370000200541106a200541e0006a4120108e0220122005280214410020052802101b360200200541013602c0012005200a410020084101461b3602c401200c42003703002013420037030020044200370300200542003703a001200541a8026a41a8f8c600410410810220042002290000370300200520052900a8023703a001200541e0006a41b08bc500410a1081022016200b29000037000020062005290060370000200541a0016a4120200541c0016a410472109e03200c42003703002013420037030020044200370300200542003703a001200541a8026a41a8f8c600410410810220042002290000370300200520052900a8023703a001200541a8026a41978bc500410e10810220162002290000370000200620052900a802370000200541c0016a200541a0016a10a30420052d00c00121022010200541d9016a2900003703002011200541d1016a290000370300200b200541c9016a290000370300200520052900c1013703600240024020024101460d00200c42003703002013420037030020044200370300200542003703a0010c010b200c2010290300370300201320112903003703002004200b290300370300200520052903603703a0010b200541c0016a410c6a2015360200200541c0016a41086a2014360200200541c0016a41106a20052903a001370300200541c0016a41186a200541a0016a41086a290300370300200541e0016a200541a0016a41106a290300370300200541c0016a41286a200541a0016a41186a2903003703002005200f3602c401200541003602c001200541a8026a200541c0016a10a404200541eb006a200541a8026a41086a2204280200360000200520052903a802370063200541a8026a410c6a200541e7006a290000370000200541c28289aa043600a902200541023a00a802200520052900603700ad02200541a8026a10a50402402014450d00201441286c450d00200f102e0b200541e0006a41186a4200370300200541e0006a41106a4200370300200541e0006a41086a2202420037030020054200370360200541a8026a41a8f8c600410410810220022004290000370300200520052900a802370360200541a8026a41d48bc500410f108102200e41086a2004290000370000200e20052900a802370000200541c0016a200541e0006a10b005024020052d00d00122044103460d0020052903c001210d20052903c8012117200541f8006a4200370300200541f0006a4200370300200541e0006a41086a2202420037030020054200370360200541a8026a41a8f8c60041041081022002200541a8026a41086a220b290000370300200520052900a802370360200541a8026a418c8bc500410b108102200e41086a200b290000370000200e20052900a802370000200541e0006a200d2017200410c2050b200541e0006a41186a4200370300200541f0006a4200370300200541e0006a41086a2204420037030020054200370360200541a8026a41a8f8c60041041081022004200541a8026a41086a2202290000370300200520052900a802370360200541a8026a41aa8cc5004118108102200e41086a2002290000370000200e20052900a80237000020054120360284022005200541e0006a3602800220054188026a200541e0006a412010ed020240024020052802880222020d00410321040c010b200528028c02210b200520054188026a41086a28020036029c022005200236029802200541c0016a20054198026a1095020240024020052d00d00122044103470d00200541003602b002200542013703a8022005410a3602f401200520054180026a3602f0012005200541a8026a3602a402200541d4016a4101360200200542013702c401200541909dc5003602c0012005200541f0016a3602d001200541a4026a419cebc000200541c0016a103d1a20052802a80220052802b00210ef02024020052802ac02450d0020052802a802102e0b0c010b200520052800d1013602a8022005200541d4016a2800003600ab0220052903c801210d20052903c00121170b0240200b450d002002102e0b024020044103470d00410321040c010b200541e0006a412010ff010b200520052800ab0236008b02200520052802a80236028802024020044103460d00200541e0006a41186a4200370300200541e0006a41106a4200370300200541e0006a41086a220b420037030020054200370360200541a8026a41a8f8c6004104108102200b200541a8026a41086a2202290000370300200520052900a802370360200541a8026a41d48bc500410f108102200e41086a2002290000370000200e20052900a802370000200541e0006a2017200d200410c205200541c0016a41186a20043a0000200541c0016a41106a200d370300200541c0016a41086a2017370300200541dc016a200528008b0236000020052005280288023600d901200541023602c001200541a8026a200541c0016a10a404200541e0006a41036a220441086a2002280200360000200420052903a802370000200541b4026a200541e7006a290000370000200541c28289aa043600a902200541023a00a802200520052900603700ad02200541a8026a10a5040b4108102c2206450d0520062007360204200620013602004108102c2212450d052012200936020420122003360200200541c0016a41186a22044200370300200541c0016a41106a22114200370300200541c0016a41086a22024200370300200542003703c001200541a8026a41d9fcc60041061081022002200541a8026a41086a220b290000370300200520052900a8023703c001200541e0006a4180f4cb0041061081022004200541e0006a41086a221429000037030020112005290060370300200541086a200541c0016a4120108e022005280208210c200528020c2113200442003703002011420037030020024200370300200542003703c001200541a8026a41bed8c80041081081022002200b290000370300200520052900a8023703c001200541a8026a41dbdac800410e1081022004200b290000370300201120052900a8023703002005201341b0096a41b009200c1b3602a802200541c0016a4120200541a8026a410410b201200541a8026a200610ae070240024020052802a802450d002011200541a8026a41106a2903003703002002200b2903003703002004200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a2802003602002014200541cc016a290200370300200541e0006a41106a200541d4016a290200370300200541e0006a41186a200541dc016a290200370300200520052903a8023703c001200520052902c401370360200541c0016a200610aa07417f20052802c001220441016a220220022004491b220441ffffff3f712004470d0620044105742204417f4c0d062004102c220e450d07200541e0006a41086a290300210d200541e0006a41106a290300211720052903602118200e41186a200541e0006a41186a290300370000200e41106a2017370000200e41086a200d370000200e2018370000200541a8026a200610ae072004410576210b024020052802a8020d004101210c2006102e0c020b200541c0016a4104722104412021134101210c02400340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2214200541a8026a41186a290300370300200541c0016a41106a2215200541a8026a41106a290300370300200541c0016a41086a2216200541a8026a41086a290300370300200520052903a8023703c001200541a0016a41086a2202200441086a290000370300200541a0016a41106a220f200441106a290000370300200541a0016a41186a2210200441186a290000370300200520042900003703a001201420102903003703002015200f29030037030020162002290300370300200520052903a0013703c0010240200c200b470d00200541a8026a200610aa07200b417f20052802a802220241016a220f200f2002491b6a2202200b490d09200b410174220f2002200f20024b1b22024104200241044b1b220241ffffff3f71200246210f2002410574210202400240200b0d00200541003602a8020c010b200541013602b0022005200e3602a8022005200b4105743602ac020b20054180016a2002200f200541a8026a107d20052802880121022005280280014101460d02200528028401210e2002410576210b0b200e20136a220220052903c001370000200241186a2014290300370000200241106a2015290300370000200241086a2016290300370000200541a8026a200610ae07201341206a2113200c41016a210c20052802a8020d000b2006102e0c020b20020d070c060b2006102e4101210e4100210c4100210b0b200541d8016a4200370300200541d0016a4200370300200541c0016a41086a22044200370300200542003703c001200541a8026a41bed8c80041081081022004200541a8026a41086a2202290000370300200520052900a8023703c001200541a8026a41e9d8c8004104108102201141086a2002290000370000201120052900a802370000200c4105744104722204417f4c0d042004102c2202450d05200541003602b002200520043602ac02200520023602a802200c200541a8026a10760240200c450d00200c4105742102200e21040340200541a8026a200441201074200441206a2104200241606a22020d000b0b200541c0016a412020052802a802220420052802b00210b201024020052802ac02450d002004102e0b0240200b41ffffff3f71450d00200e102e0b2012102e4108102c2204450d0520042007360204200420013602004108102c2202450d0520022009360204200220033602002002102e2004102e4108102c2204450d0520042007360204200420013602004108102c2202450d0520022009360204200220033602002002102e2004102e4108102c220e450d05200e2007360204200e20013602004108102c2206450d052006200936020420062003360200024002402000450d00200541a8026a200e10af070240024020052802a802450d00200541c0016a41106a200541a8026a41106a290300370300200541c0016a41086a200541a8026a41086a290300370300200541c0016a41186a200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a280200360200200541e0006a41086a200541cc016a290200370300200541e0006a41106a200541d4016a290200370300200541e0006a41186a200541dc016a290200370300200520052903a8023703c001200520052902c401370360200541c0016a200e10aa07417f20052802c001220441016a220220022004491b220441ffffff3f712004470d0820044105742204417f4c0d082004102c220f450d09200541e0006a41086a290300210d200541e0006a41106a290300211720052903602118200f41186a200541e0006a41186a290300370000200f41106a2017370000200f41086a200d370000200f2018370000200541a8026a200e10af072004410576211202400240024020052802a8020d00410121040c010b200541c0016a41047221024120210c41022113410121040340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2214200541a8026a41186a290300370300200541c0016a41106a2215200541a8026a41106a290300370300200541c0016a41086a2216200541a8026a41086a290300370300200520052903a8023703c001200541a0016a41086a220b200241086a290000370300200541a0016a41106a2210200241106a290000370300200541a0016a41186a2211200241186a290000370300200520022900003703a00120142011290300370300201520102903003703002016200b290300370300200520052903a0013703c001024020042012470d00200541a8026a200e10aa072004417f20052802a802220b41016a22102010200b491b6a220b2004490d0c2013200b2013200b4b1b220b4104200b41044b1b220b41ffffff3f71200b462110200b410574210b0240024020040d00200541003602a8020c010b200541013602b0022005200c3602ac022005200f3602a8020b20054180016a200b2010200541a8026a107d200528028801210b2005280280014101460d03200528028401210f200b41057621120b200f200c6a220b20052903c001370000200b41186a2014290300370000200b41106a2015290300370000200b41086a2016290300370000200541a8026a200e10af07200c41206a210c201341026a2113200441016a210420052802a8020d000b0b200e102e200520043602c801200520123602c4012005200f3602c0010c020b200b0d090c080b41002112200541003602c801200542013703c001200e102e4101210f0b200541c0026a22044200370300200541b8026a220a4200370300200541a8026a41086a4200370300200542003703a802200541a8026a41b2fdc6004112108102200541e0006a41e9d8c80041041081022004200541e0006a41086a290000370300200a2005290060370300200541a8026a200541c0016a10c1050240201241ffffff3f71450d00200f102e0b200541a8026a200610af070240024020052802a802450d00200541c0016a41106a200541a8026a41106a290300370300200541c0016a41086a200541a8026a41086a290300370300200541c0016a41186a200541a8026a41186a290300370300200541c0016a41206a200541a8026a41206a280200360200200541e0006a41086a200541cc016a290200370300200541e0006a41106a200541d4016a290200370300200541e0006a41186a200541dc016a290200370300200520052903a8023703c001200520052902c401370360200541c0016a200610aa07417f20052802c001220441016a220220022004491b220441ffffff3f712004470d0820044105742204417f4c0d082004102c220e450d09200541e0006a41086a290300210d200541e0006a41106a290300211720052903602118200e41186a200541e0006a41186a290300370000200e41106a2017370000200e41086a200d370000200e2018370000200541a8026a200610af072004410576211102400240024020052802a8020d00410121040c010b200541c0016a41047221024120210c41022113410121040340200541c0016a41206a200541a8026a41206a280200360200200541c0016a41186a2214200541a8026a41186a290300370300200541c0016a41106a2215200541a8026a41106a290300370300200541c0016a41086a2216200541a8026a41086a290300370300200520052903a8023703c001200541a0016a41086a220b200241086a290000370300200541a0016a41106a220f200241106a290000370300200541a0016a41186a2210200241186a290000370300200520022900003703a001201420102903003703002015200f2903003703002016200b290300370300200520052903a0013703c001024020042011470d00200541a8026a200610aa072004417f20052802a802220b41016a220f200f200b491b6a220b2004490d0c2013200b2013200b4b1b220b4104200b41044b1b220b41ffffff3f71200b46210f200b410574210b0240024020040d00200541003602a8020c010b200541013602b0022005200c3602ac022005200e3602a8020b20054180016a200b200f200541a8026a107d200528028801210b2005280280014101460d03200528028401210e200b41057621110b200e200c6a220b20052903c001370000200b41186a2014290300370000200b41106a2015290300370000200b41086a2016290300370000200541a8026a200610af07200c41206a210c201341026a2113200441016a210420052802a8020d000b0b2006102e200520043602c801200520113602c4012005200e3602c0010c020b200b0d090c080b41002111200541003602c801200542013703c0012006102e4101210e0b200541c0026a4200370300200541b8026a4200370300200541a8026a41086a4200370300200542003703a802200541a8026a41b2fdc6004112108102200541e0006a41b4d3c1004108108102200a41086a200541e0006a41086a290000370000200a2005290060370000200541a8026a200541c0016a10c105201141ffffff3f71450d01200e102e0c010b2006102e200e102e0b200541d0026a24000f0b200541a0016a41186a200b41186a2216290000370300200541a0016a41106a200b41106a2211290000370300200541a0016a41086a200b41086a22122900003703002005200b2900003703a0012012290000210d20112900002117200b2900002118200541c0016a41186a22112016290000370300200541c0016a41106a22162017370300200541c0016a41086a2212200d370300200520183703c001200541e0006a41186a2011290300370300200541e0006a41106a2016290300370300200541e0006a41086a2012290300370300200520052903c001370360200541f0016a200541e0006a41201074200b41206a210b0c000b0b41bcb4c40041c9004198b5c400105d000b41bcb4c40041c9004188b5c400105d000b1038000b1036000b930501047f230041a0036b22012400200141106a4200370300200141186a4200370300200141206a4200370300200141286a4200370300200120012903c801370308200142c0b2cd3b37039803200142c0b2cd3b37039003200142c0b2cd3b370388034100210241012103034020014188036a2104024002400240200241ff01710e03010002010b20014190036a21040c010b20014198036a21040b200442c0b2cd3b370300024020034103460d00200341e99fc0006a2104200341016a210320042d000022024103470d010b0b20014188026a420037030020014180026a4201370300200141f8016a22034200370300200141f0016a22044201370300200141c8016a41186a4200370300200141c8016a41f8006a4200370300200141c8016a41f0006a4201370300200141c8016a41e8006a4200370300200141c8016a41e0006a420137030020014198026a420037030020014190026a200129039003370300200141d0026a4200370300200141c8026a200129038803370300200142003703d00120014280e497d0123703c80120012001290398033703d801200141f8026a200141286a290300370300200141f0026a200141086a41186a290300370300200141e8026a200141186a290300370300200141e0026a200141106a290300370300200141d8026a20012903083703002004420137030020034280b0def7d32b3703002001410036028003200141086a200141c8016a41c00110e9081a200141086a41f8006a428090cad2c60e370300200141086a41f0006a4201370300200141086a41e8006a4280c0a8ca9a3a370300200141086a41e0006a4201370300200141c8016a200141086a41b80110e9081a2001428180808080d0a5cc00370380032000200141c8016a107f200141a0036a24000bc88d0109017f027e047f047e057f017e117f037e287f230041d01a6b22012400200141d0176a10df0420012903d81721024200210320014190046a22044200370300200141f8036a41106a22054200370300200141f8036a41086a22064200370300200142003703f803200141d0176a4199fdc60041081081022006200141d0176a41086a2207290000370300200120012900d0173703f803200141d0176a41fc8ac500411010810220042007290000370300200520012900d017370300200141203602dc142001200141f8036a3602d814200141f0066a200141f8036a412010ed022002428094ebdc038242808c8d9e027e2208428094ebdc038021092008428094ebdc0382210a2002428094ebdc0380210b4100210c024002400240024020012802f006220d0d004100210e0c010b20012802f406210f2001200141f0066a41086a280200360294152001200d36029015200141c0006a20014190156a10ab010240024002402001280240450d000c010b20012802442210200128029415411c6e2204200420104b1bad421c7e2202422088a70d042002a72204417f4c0d040240024020040d004104210e0c010b2004102c220e450d040b2004411c6ead21110240024002400240024020100d000c010b200141d0176a41c4006a2106410021120340200141386a20014190156a10ab0120012802380d04200128023c221320012802941541e0006e2204200420134b1bad42e0007e2202422088a70d092002a72204417f4c0d090240024020040d00410821140c010b2004102c2214450d090b200441e0006e21150240024020130d00410021130c010b41002116410021054100210702400340200141d0176a20014190156a10e004200141c8006a41386a2204200141d0176a41386a290300370300200141c8006a41306a2217200141d0176a41306a290300370300200141c8006a41286a2218200141d0176a41286a290300370300200141c8006a41206a2219200141d0176a41206a290300370300200141c8006a41186a221a200141d0176a41186a290300370300200141c8006a41106a221b200141d0176a41106a290300370300200141c8006a41086a221c200141d0176a41086a290300370300200141a00f6a41086a221d200641086a290200370300200141a00f6a41106a221e200641106a290200370300200141a00f6a41186a221f200641186a280200360200200120012903d017370348200120062902003703a00f2001280290182220450d0120014198126a41386a2221200429030037030020014198126a41306a2222201729030037030020014198126a41286a2217201829030037030020014198126a41206a2218201929030037030020014198126a41186a2219201a29030037030020014198126a41106a221a201b29030037030020014198126a41086a221b201c290300370300200141e00c6a41086a221c201d290300370300200141e00c6a41106a221d201e290300370300200141e00c6a41186a221e201f2802003602002001200129034837039812200120012903a00f3703e00c024020072015470d002016200741016a2204201620044b1b22044104200441044b1bad42e0007e2202422088a74541037421042002a7211f0240024020070d00200141003602d0170c010b200141083602d817200120053602d417200120143602d0170b200141e8096a201f2004200141d0176a107d20012802f0092104024020012802e8094101470d0020040d0d0c0e0b20012802ec092114200441e0006e21150b201420056a2204200129039812370300200441106a201a290300370300200441086a201b2903003703002022290300210220212903002108201729030021232018290300212420192903002125200441c0006a2020360200200441186a2025370300200441206a2024370300200441286a2023370300200441386a2008370300200441306a2002370300200441c4006a20012903e00c370200200441cc006a201c290300370200200441d4006a201d290300370200200441dc006a201e280200360200201641026a2116200541e0006a21052013200741016a2207460d020c000b0b02402007450d00201441d4006a210403400240200441706a2802002206450d00200641306c450d002004416c6a280200102e0b0240200428020041ffffff3f71450d002004417c6a280200102e0b200441e0006a2104200541a07f6a22050d000b0b2015450d05201541e0006c450d050c040b2014450d04200141306a20014190156a10ab010240024020012802300d00200128023422262001280294154102762204200420264b1b22274102742204417f4c0d0b0240024020270d00410421280c010b2004102c2228450d0b0b0240024020260d00410021260c010b4100210541002107410021040240034020012802941522174104490d012001280290152218280000211620012017417c6a360294152001201841046a360290152016418094ebdc034b0d01024020042027470d002007200441016a2217200720174b1b22174104201741044b1b221741ffffffff03712017464102742118201741027421170240024020040d00200141003602d0170c010b200141043602d817200120053602d417200120283602d0170b200141c8006a20172018200141d0176a107d20012802502117024020012802484101470d002017450d100c0f0b200128024c2128201741027621270b202820056a2016360200200541046a2105200741026a21072026200441016a2204460d020c000b0b202741ffffffff0371450d012028102e0c010b2028450d00200128029415220441034b0d010240202741ffffffff0371450d002028102e0b02402013450d002014201341e0006c6a21062014210403400240200441c4006a2802002205450d00200541306c450d00200441c0006a280200102e0b200441e0006a21050240200441d4006a28020041ffffff3f71450d00200441d0006a280200102e0b2005210420062005470d000b0b2015450d06201541e0006c0d050c060b02402013450d002014201341e0006c6a21062014210403400240200441c4006a2802002205450d00200541306c450d00200441c0006a280200102e0b200441e0006a21050240200441d4006a28020041ffffff3f71450d00200441d0006a280200102e0b2005210420062005470d000b0b2015450d05201541e0006c0d040c050b2001280290152205280000212920012004417c6a360294152001200541046a3602901502402011422088a722042011a7470d00200441016a22052004490d0a20044101742207200520052007491b22054104200541044b1bad421c7e2202422088a74541027421052002a721070240024020040d00200141003602d0170c010b200141043602d8172001200e3602d01720012004411c6c3602d4170b200141c8006a20072005200141d0176a107d2001280250210520012802484101460d03200128024c210e2011428080808070832005411c6ead8421110b200e2004411c6c6a2204201536020420042014360200200441186a2029360200200441146a2026360200200441106a20273602002004410c6a2028360200200441086a201336020020114280808080107c21112026212a2027212b2028212c2013212d2015212e201241016a22122010470d000b0b200e0d040c030b2005450d060c050b2014102e0b02402011422088a72204450d00200e2004411c6c6a2116200e21070340024020072802082204450d00200441e0006c2105200728020041d4006a210403400240200441706a2802002206450d00200641306c450d002004416c6a280200102e0b0240200428020041ffffff3f71450d002004417c6a280200102e0b200441e0006a2104200541a07f6a22050d000b0b0240200741046a2802002204450d00200441e0006c450d002007280200102e0b2007411c6a21040240200741106a28020041ffffffff0371450d00200728020c102e0b2004210720042016470d000b0b02402011a72204450d002004411c6c450d00200e102e0b202e2115202d2113202c2128202b2127202a21260b4100210e20014100360250200142013703482001410a36029c122001200141d8146a360298122001200141c8006a3602a00f200141e4176a4101360200200142013702d417200141909dc5003602d017200120014198126a3602e017200141a00f6a419cebc000200141d0176a103d1a2001280248200128025010ef02200128024c450d002001280248102e0b200f450d00200d102e0b200e4104200e1b2114024020114200200e1b2208422088a72207450d00200b42808c8d9e027e2009200a4280cab5ee0156ad7c7c210242002103410021164100210c0240034002400240200c450d0020142104200c210603400240200320025a0d00200141206a200420166a220e2802002014200c411c6c6a2204280208200428020c200441146a2802002004280218109203200129032821230c030b2004200420166a2205290200370200200441186a200541186a280200360200200441106a200541106a290200370200200441086a200541086a2902003702002004411c6a2104200641016a22062007490d000c040b0b200c210403400240200320025a0d00200141106a2014200c411c6c6a220e280200200e280208200e28020c200e41146a280200200e280218109203200129031821230c020b200441016a22042007490d000b4100210c0c030b02402014200c411c6c6a22172802082204450d00200441e0006c2105200e28020041d4006a210403400240200441706a2802002206450d00200641306c450d002004416c6a280200102e0b0240200428020041ffffff3f71450d002004417c6a280200102e0b200441e0006a2104200541a07f6a22050d000b0b0240200e41046a2802002204450d00200441e0006c450d00200e280200102e0b200c41016a210c0240201741106a28020041ffffffff0371450d00201728020c102e0b200320237c21032016411c6a2116200c2106200c2007490d000b0b0240200c0d004100210c0c010b20142006200c6b411c6c6a20142006411c6c6a200720066b411c6c10ea081a0b200141e8176a22044200370300200141d0176a41106a22054200370300200141d0176a41086a22064200370300200142003703d017200141c8006a4199fdc60041081081022006200141c8006a41086a2216290000370300200120012900483703d017200141c8006a41fc8ac500411010810220042016290000370300200520012900483703002007200c6b2204411c6c41046a2205417f4c0d010240024020050d00410121060c010b2005102c2206450d010b200141003602502001200536024c200120063602482004200141c8006a107620142004200141c8006a10a001200141d0176a412020012802482205200128025010b2010240200128024c450d002005102e0b02402004450d0020142004411c6c6a2116201421070340024020072802082204450d00200441e0006c2105200728020041d4006a210403400240200441706a2802002206450d00200641306c450d002004416c6a280200102e0b0240200428020041ffffff3f71450d002004417c6a280200102e0b200441e0006a2104200541a07f6a22050d000b0b0240200741046a2802002204450d00200441e0006c450d002007280200102e0b2007411c6a21040240200741106a28020041ffffffff0371450d00200728020c102e0b2004210720042016470d000b0b02402008a72204450d002004411c6c450d002014102e0b20014198126a10e1044100210520012802981221164100210602400240024002400240024020012802a012220c450d00200c41c4006c2107200c410274417c6a41027641016a2114410021062016210402400340024020042d00004101460d00200441046a28020020004f0d020b200441c4006a2104200641016a2106200741bc7f6a22070d000b201421060b200c2006490d010b200141003602a012200c20066b210e2016200641c4006c220c6a210402400340200c2005460d01201620056a2107200541c4006a2214210520072d00004102470d000b201620146a21040b2016200641c4006c6a21070240034020072004460d0120042d00002105200441c4006a210420054102470d000b0b02400240200e0d004100210e0c010b02402006450d0020162016200641c4006c6a200e41c4006c10ea081a0b2001200e3602a0120b200128029c122106200141e8176a22054200370300200141e0176a22044200370300200141d0176a41086a22074200370300200142003703d017200141c8006a4190dac800410a1081022007200141c8006a41086a220c290000370300200120012900483703d017200141c8006a41d5dac80041061081022005200c29000037030020042001290048370300200e41c4006c41046a2205417f4c0d060240024020050d00410121070c010b2005102c2207450d060b200141003602502001200536024c20012007360248200e200141c8006a10762016200e200141c8006a109f01200141d0176a412020012802482205200128025010b2010240200128024c450d002005102e0b02402006450d00200641c4006c450d002016102e0b42002102200141d0176a41186a22074200370300200141d0176a41106a221642003703004108212a200141d0176a41086a22064200370300200142003703d017200141c8006a4190dac800410a1081022006200141c8006a41086a2205290000370300200120012900483703d017200141c8006a41d097c900410c108102200441086a200529000037000020042001290048370000200141003a0048200141d0176a4120200141c8006a410110b201200141c8006a10e204200141f8036a41186a220c200141c8006a41186a2214290300370300200141f8036a41106a220e200141c8006a41106a2217290300370300200141f8036a41086a22182005290300370300200120012903483703f8034124102c2204450d05200420012903f80337010020044114360220200441186a200c290300370100200441106a200e290300370100200441086a201829030037010020014281808080103702d417200120043602d017200141d0176a10e304200720142903003703002016201729030037030020062005290300370300200120012903483703d017200141d0176a10e404108403200141d0176a10df0420012903d8172108200141c8006a200010a704200141d0176a200128024822042001280250220510c5042008428094ebdc0382428090bcfd027e2223428094ebdc038021242023428094ebdc038221232008428094ebdc03802108024020012802d0172206450d002004200510ff0120012902d41721022006212a0b0240200128024c450d002004102e0b202a2002422088a7220441f8026c22056a21062002a7212b024020040d00202a21040c030b200541887d6a2119200141d0176a41046a2110200141c8006a41046a2121200141a00f6a41046a210d41002107200141c0036a41306a2116200141c0036a41286a210c200141c0036a41206a2114200141c0036a41186a210e200141c0036a41106a2117200141c0036a41086a2118202a210402400340200141f8036a200441bc0210e9081a200441bc026a28020021052016200441f0026a290300370300200c200441e8026a2903003703002014200441e0026a290300370300200e200441d8026a2903003703002017200441d0026a2903003703002018200441c8026a2903003703002001200441c0026a2903003703c00320054103460d03200d200141f8036a41bc0210e9082122200141c8006a200141a00f6a41c00210e9081a20014190156a202141bc0210e9081a200141d8146a41306a221b2016290300370300200141d8146a41286a221c200c290300370300200141d8146a41206a221d2014290300370300200141d8146a41186a221e200e290300370300200141d8146a41106a221f2017290300370300200141d8146a41086a22202018290300370300200120012903c0033703d814024002402005410247221a0d00200141e00c6a4194b4c00041c00210e9081a4100211b200141a80c6a41306a4100290388b740370300200141a80c6a41286a4100290380b740370300200141a80c6a41206a41002903f8b640370300200141a80c6a41186a41002903f0b640370300200141a80c6a41106a41002903e8b640370300200141a80c6a41086a41002903e0b640370300200141002903d8b6403703a80c0c010b201020014190156a41bc0210e9081a20014198126a200141d0176a41c00210e9081a200141e0116a41306a220f201b290300370300200141e0116a41286a221b201c290300370300200141e0116a41206a221c201d290300370300200141e0116a41186a221d201e290300370300200141e0116a41106a221e201f290300370300200141e0116a41086a221f2020290300370300200120012903d8143703e011200141e00c6a20014198126a41c00210e9081a200141a80c6a41306a200f290300370300200141a80c6a41286a201b290300370300200141a80c6a41206a201c290300370300200141a80c6a41186a201d290300370300200141a80c6a41106a201e290300370300200141a80c6a41086a201f290300370300200120012903e0113703a80c2007211b0b201a0d01200741016a2107201941887d6a2119200441f8026a22042006470d000b200621040c030b200141f0066a200141e00c6a41c00210e9081a200141b8066a41306a2216200141a80c6a41306a290300370300200141b8066a41286a220c200141a80c6a41286a290300370300200141b8066a41206a2214200141a80c6a41206a290300370300200141b8066a41186a220e200141a80c6a41186a290300370300200141b8066a41106a2217200141a80c6a41106a290300370300200141b8066a41086a2218200141a80c6a41086a290300370300200120012903a80c3703b806200141e8096a200141f0066a41c00210e9081a200141b0096a41306a221a2016290300370300200141b0096a41286a2216200c290300370300200141b0096a41206a220c2014290300370300200141b0096a41186a2214200e290300370300200141b0096a41106a220e2017290300370300200141b0096a41086a22172018290300370300200120012903b8063703b009418003102c2220450d052020201b360200202041046a200141e8096a41c00210e9081a202020053602c402202020012903b0093703c802202041d0026a2017290300370300202041d8026a200e290300370300202041e0026a2014290300370300202041e8026a200c290300370300202041f0026a2016290300370300202041f8026a201a29030037030020062105024002402019450d00200441f8026a2104200741016a2107200141a00f6a41046a210d200141a80c6a41306a2116200141a80c6a41286a210c200141a80c6a41206a2114200141a80c6a41186a210e200141a80c6a41106a2117200141a80c6a41086a211802400340200141f0066a200441bc0210e9081a200441bc026a28020021052016200441f0026a290300370300200c200441e8026a2903003703002014200441e0026a290300370300200e200441d8026a2903003703002017200441d0026a2903003703002018200441c8026a2903003703002001200441c0026a2903003703a80c20054103460d01200d200141f0066a41bc0210e9081a200141c8006a200141a00f6a41c00210e9081a20014190156a202141bc0210e9081a200141d8146a41306a221a2016290300370300200141d8146a41286a221b200c290300370300200141d8146a41206a221c2014290300370300200141d8146a41186a221d200e290300370300200141d8146a41106a221e2017290300370300200141d8146a41086a221f2018290300370300200120012903a80c3703d81402400240200541024722190d00200141e00c6a4194b4c00041c00210e9081a4100211a200141e0116a41306a4100290388b740370300200141e0116a41286a4100290380b740370300200141e0116a41206a41002903f8b640370300200141e0116a41186a41002903f0b640370300200141e0116a41106a41002903e8b640370300200141e0116a41086a41002903e0b640370300200141002903d8b6403703e0110c010b201020014190156a41bc0210e9081a20014198126a200141d0176a41c00210e9081a200141f8036a41306a220f201a290300370300200141f8036a41286a221a201b290300370300200141f8036a41206a221b201c290300370300200141f8036a41186a221c201d290300370300200141f8036a41106a221d201e290300370300200141f8036a41086a221e201f290300370300200120012903d8143703f803200141e00c6a20014198126a41c00210e9081a200141e0116a41306a200f290300370300200141e0116a41286a201a290300370300200141e0116a41206a201b290300370300200141e0116a41186a201c290300370300200141e0116a41106a201d290300370300200141e0116a41086a201e290300370300200120012903f8033703e0112007211a0b20190d03200741016a2107200441f8026a22042006470d000b200621050c010b200441f8026a21050b4101212f4101210d0c040b200141e8096a200141e00c6a41c00210e9081a200141b0096a41306a222c200141e0116a41306a221b290300370300200141b0096a41286a222d200141e0116a41286a221c290300370300200141b0096a41206a222e200141e0116a41206a221d290300370300200141b0096a41186a2212200141e0116a41186a221e290300370300200141b0096a41106a2230200141e0116a41106a221f290300370300200141b0096a41086a2231200141e0116a41086a220f290300370300200120012903e0113703b009200441f8026a2104200741016a21074101212f4101210d0340200141d0176a200141e8096a41c00210e9081a200141c8006a41306a220c202c290300370300200141c8006a41286a2214202d290300370300200141c8006a41206a220e202e290300370300200141c8006a41186a22172012290300370300200141c8006a41106a22182030290300370300200141c8006a41086a22192031290300370300200120012903b009370348024002400240200d202f470d00202f41016a2216202f490d0a202f41017422322016203220164b1b22164104201641044b1bad4280037e2202422088a74541037421162002a7213202400240202f0d0020014100360298120c010b200141083602a01220012020360298122001202f4180036c36029c120b200141a00f6a2032201620014198126a107d20012802a80f211620012802a00f4101460d0120012802a40f212020164180036e212f0b2020200d4180036c6a2216201a360200201641046a200141d0176a41c00210e9081a201641c4026a2005360200201641c8026a2001290348370300201641d0026a2019290300370300201641d8026a2018290300370300201641e0026a2017290300370300201641e8026a200e290300370300201641f0026a2014290300370300201641f8026a200c290300370300200d41016a210d20042006470d01200621050c060b2016450d080c070b024002400340200141f8036a200441bc0210e9081a200441bc026a2802002105200141c0036a41306a2216200441f0026a290300370300200141c0036a41286a220c200441e8026a290300370300200141c0036a41206a2214200441e0026a290300370300200141c0036a41186a220e200441d8026a290300370300200141c0036a41106a2217200441d0026a290300370300200141c0036a41086a2218200441c8026a2903003703002001200441c0026a2903003703c00320054103460d012022200141f8036a41bc0210e9081a200141c8006a200141a00f6a41c00210e9081a20014190156a202141bc0210e9081a200141d8146a41306a22192016290300370300200141d8146a41286a221a200c290300370300200141d8146a41206a220c2014290300370300200141d8146a41186a2214200e290300370300200141d8146a41106a220e2017290300370300200141d8146a41086a22172018290300370300200120012903c0033703d81402400240200541024722160d00200141e00c6a4194b4c00041c00210e9081a4100211a200141a80c6a41306a4100290388b740370300200141a80c6a41286a4100290380b740370300200141a80c6a41206a41002903f8b640370300200141a80c6a41186a41002903f0b640370300200141a80c6a41106a41002903e8b640370300200141a80c6a41086a41002903e0b640370300200141002903d8b6403703a80c0c010b201020014190156a41bc0210e9081a20014198126a200141d0176a41c00210e9081a201b2019290300370300201c201a290300370300201d200c290300370300201e2014290300370300201f200e290300370300200f2017290300370300200120012903d8143703e011200141e00c6a20014198126a41c00210e9081a200141a80c6a41306a201b290300370300200141a80c6a41286a201c290300370300200141a80c6a41206a201d290300370300200141a80c6a41186a201e290300370300200141a80c6a41106a201f290300370300200141a80c6a41086a200f290300370300200120012903e0113703a80c2007211a0b20160d02200741016a2107200441f8026a22042006470d000b200621050c060b200441f8026a21050c050b200141f0066a200141e00c6a41c00210e9081a200141b8066a41306a2216200141a80c6a41306a290300370300200141b8066a41286a220c200141a80c6a41286a290300370300200141b8066a41206a2214200141a80c6a41206a290300370300200141b8066a41186a220e200141a80c6a41186a290300370300200141b8066a41106a2217200141a80c6a41106a290300370300200141b8066a41086a2218200141a80c6a41086a290300370300200120012903a80c3703b806200141e8096a200141f0066a41c00210e9081a202c2016290300370300202d200c290300370300202e20142903003703002012200e2903003703002030201729030037030020312018290300370300200120012903b8063703b009200441f8026a2104200741016a21070c000b0b2006200c41b4b3c000104d000b200441f8026a21040b024020062004460d000340200441f8026a21050240200441bc026a2802004102460d000240200441b0026a2802002207450d00200441b4026a280200450d002007102e0b2004108b020b2005210420062005470d000b0b4100212f410821200240202b450d00202b41f8026c450d00202a102e0b4100210d0c010b024020062005460d000340200541f8026a21040240200541bc026a2802004102460d000240200541b0026a2802002207450d00200541b4026a280200450d002007102e0b2005108b020b2004210520062004470d000b0b0240202b450d00202b41f8026c450d00202a102e0b0240024002400240200d41144b0d00200d41014d0d042020200d417f6a22064180036c6a2114410021070340200d20062204417f6a2206490d030240200d20066b22174102490d00202020044180036c6a220441f8026a2d0000202020064180036c6a220541f8026a2d0000220c4f0d00200141d0176a200541f80210e9081a2001200541fc026a28000036004b2001200541f9026a2800003602482005200441800310e9081a024020174103490d002007417f6a210e41002105201421040340200441f8056a2d0000200c4f0d01200e2005460d05200420044180036a221641800310e9081a2016210420072005417f6a2205470d000b201621040b2004200141d0176a41f80210e908220441f8026a200c3a0000200441f9026a2001280248360000200441fc026a200128004b3600000b201441807d6a21142007417f6a210720060d000c050b0b200d410176ad4280037e2202422088a70d052002a7222c417f4c0d05202c102c220f450d04202041807d6a212a202041f8796a212b410421194100211041002117200d211d0340201d21144100211d4101210c02402014417f6a2204450d000240024002400240024002400240202020044180036c6a41f8026a2d000020144180036c220e20206a41f87c6a2d00002205490d002014417e6a2116202b200e6a21064100211d410021040340024020162004470d002014210c0c090b200441016a2104200541ff0171210720062d00002105200641807d6a2106200720054f0d000b200441016a210c2004417f7320146a21040c010b202b200e6a210602400340024020044101470d00410021040c020b2004417f6a2104200541ff0171210720062d00002105200641807d6a210620072005490d000b0b20142004490d012014200d4b0d02201420046b220c4101762207450d00202020044180036c6a2105202a200e6a21060340200141d0176a200541800310e9081a2005200641800310ea084180036a21052006200141d0176a41800310e90841807d6a21062007417f6a22070d000b0b024020040d002004211d0c060b0240200c41094d0d002004211d0c060b2014200d4b0d03200420146b2106202020044180036c6a210e034020142004417f6a221d490d0502402014201d6b220c4102490d00202020044180036c6a220441f8026a2d00002020201d4180036c6a220541f8026a2d000022164f0d00200141d0176a200541f80210e9081a2001200541fc026a28000036004b2001200541f9026a2800003602482005200441800310e9081a0240200c4103490d0041012105200e21040340200441f8056a2d000020164f0d01200620056a4101460d06200420044180036a220741800310e9081a200721042006200541016a22056a0d000b200721040b2004200141d0176a41f80210e908220441f8026a20163a0000200441f9026a2001280248360000200441fc026a200128004b3600000b201d450d06200e41807d6a210e2006417f6a2106201d2104200c410a4f0d060c000b0b2004201441e4d1cc001057000b2014200d41e4d1cc00104d000b2005200c41d4d1cc00103c000b20142004417f6a221d490d002014200d41f4d1cc00104d000b201d201441f4d1cc001057000b024020172010470d00201041016a22042010490d07201041017422052004200520044b1b22044104200441044b1b220441ffffffff01712004464102742105200441037421040240024020100d00200141003602d0170c010b200141043602d817200120193602d017200120104103743602d4170b200141c8006a20042005200141d0176a107d20012802502104024020012802484101470d002004450d080c070b200128024c2119200441037621100b201920174103746a2204200c3602042004201d360200201741016a221e21170240201e4102490d00024002400240034002400240024002402019201e2217417f6a221e4103746a2204280200450d00201741037420196a221641746a2802002207200428020422054d0d00201741024d0d0820192017417d6a22044103746a2802042206200520076a4d0d01201741034d0d08201641646a280200200620076a4b0d080c010b20174103490d012004280204210520192017417d6a22044103746a28020421060b20062005490d010b2017417e6a21040b02402017200441016a221f4d0d00201720044d0d02201920044103746a221a2802042221201a2802006a22042019201f4103746a221b280200221c490d032004200d4b0d04201a41046a21222020201c4180036c6a220e201b28020422184180036c22056a210720044180036c210c024002402004201c6b221620186b22042018490d00200f200e200510e908220420056a21060240024020184101480d00201620184a0d010b200e2105200421040c020b2020200c6a211420042104200e2105034020072004200741f8026a2d0000200441f8026a2d00004922161b210c200420044180036a20161b21042005200c41800310e9084180036a210520074180036a200720161b220720144f0d02200620044b0d000c020b0b200f200720044180036c220510e908221620056a21060240024020184101480d00200441014e0d010b20072105201621040c010b202a200c6a210c200721050340200c200541807d6a2207200641807d6a2214200641786a2d0000200541786a2d00004922041b41800310e908210c2006201420041b21060240200e2007200520041b2205490d00201621040c020b200c41807d6a210c2016210420162006490d000b0b20052004200620046b22062006418003706b10e9081a2022202120186a360200201a201c360200201b201b41086a2017201f417f736a41037410ea081a41012117201e41014d0d050c010b0b201f20174184d2cc00103c000b200420174194d2cc00103c000b201c200441a4d2cc001057000b2004200d41a4d2cc00104d000b201d450d030c000b0b410120056b201741d4d1cc00103c000b2006200d41c4d1cc001056000b0240201041ffffffff0171450d002019102e0b202c418003702104202c418003490d00202c2004460d00200f102e0b2020200d4180036c6a210c02400240200d0d0042002123202021050c010b2008428090bcfd027e202420234280cab5ee0156ad7c7c2124200141c8006a41b0026a2133200141d0176a41c0026a2105200141c8006a41c0026a2106200041016a2134200141ed176a2135200141f8036a4105722136200141c8006a41ca026a2137200141c8006a41cd026a2138200141a00f6a410572212d200141f8036a4103722139200141d0176a41ca026a213a200141d0176a41cd026a213b200141c8006a41046a213c42c0f4a4eb00210220014190156a41306a211c20014190156a41286a211d20014190156a41206a211e20014190156a41186a211f20014190156a41106a212120014190156a41086a2122200141890a6a223d41076a213e410021174200212320202104024003402004280200213f20014198126a200441046a41c00210e9081a200441c4026a2802002107201c200441f8026a290300370300201d200441f0026a290300370300201e200441e8026a290300370300201f200441e0026a2903003703002021200441d8026a2903003703002022200441d0026a2903003703002001200441c8026a29030037039015024020074102470d0020044180036a21050c030b200141c8006a20014198126a41c00210e9081a200141d0176a203c41bc0210e9081a2005200129039015370300200541086a220d2022290300370300200541106a220f2021290300370300200541186a2210201f290300370300200541206a222a201e290300370300200541286a222b201d290300370300200541306a222c201c2903003703002001200736028c1a200141a00f6a200141d0176a10970420012903a00f2108024002400240024020012d00981a0e03000102000b4102210e02400240024020012d00991a0e03000102000b4100210e0c010b200141f8036a41186a203a41186a290000370300200141f8036a41106a203a41106a290000370300200141f8036a41086a203a41086a2900003703002001203a29000022253703f8032025a721404101210e0b200141a00f6a41026a203941026a2d00003a0000200120392f00003b01a00f201b4180807c7120012f01960472211b20012d00fa03211820012801fe032119200128018204211a200128018604212e200128018a042112200128018e042130200128019204213141002132410121160c020b41022118024002400240024020012d009c1a0e03000103000b410021180c010b200141f8036a41026a203b41026a2d00003a00002001203b2f00003b01f803204141807e7120012d00bc1a7221414101211820012802b81a214220012802b41a214320012802b01a214420012802ac1a214520012802a81a21460b20012802a41a211a20012802a01a21190b200141a00f6a41026a200141f8036a41026a2d00003a0000200120012f01f8033b01a00f41012132410021162046212e204521122044213020432131204121472042211b0c010b4102213241022118024002400240024020012d009c1a0e03000103000b410021180c010b200141f8036a41026a203b41026a2d00003a00002001203b2f00003b01f803202941807e7120012d00bc1a7221294101211820012802b81a212620012802b41a212720012802b01a212820012802ac1a211320012802a81a21150b20012802a41a211a20012802a01a21190b200141a00f6a41026a200141f8036a41026a2d00003a0000200120012f01f8033b01a00f410021162015212e201321122028213020272131202921472026211b0b4110102c2207450d03200741f8f7c60036020c200741013602082007428180808010370200200141e8096a41026a2248200141a00f6a41026a2d00003a0000200120012f01a00f3b01e809024002402016200e41ff01714571450d00200721160c010b4110102c2216450d0420164190f8c60036020c20164101360208201642818080801037020020072007280200417f6a224936020020490d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22492049280200417f6a224936020020490d002007102e0b200141f8036a41026a224920482d000022073a0000200120012f01e80922483b01f803202d20483b0000202d41026a20073a0000200120183a00a40f200120403b01a20f2001200e3a00a10f200120323a00a00f200120163602c80f200120473602c40f2001201b3602c00f200120313602bc0f200120303602b80f200120123602b40f2001202e3602b00f2001201a3602ac0f200120193602a80f200141e8096a200141a00f6a10c10220012d00e8092116200128028c1a210720012802801a2118200141e00c6a200141d0176a41bc0210e9081a200141f0066a41306a2219202c290300370300200141f0066a41286a221a202b290300370300200141f0066a41206a222e202a290300370300200141f0066a41186a22122010290300370300200141f0066a41106a2230200f290300370300200141f0066a41086a2231200d290300370300200120052903003703f00620074102460d01427f427f427f200220087c220820082002541b2202427f200242c0b2cd3b7c220820082002541b20161b22024280c2d72f7c220820082002541b200220181b220242c0b2cd3b7c220820082002541b200220074101461b2102200141c8006a200141e00c6a41bc0210e9081a200641306a22162019290300370300200620012903f006370300200641086a22182031290300370300200641106a22192030290300370300200641186a22302012290300370300200641206a2212202e290300370300200641286a222e201a290300370300200120073602840302400240024020012d00b80341c000490d002017450d0020022024560d010b200141a00f6a200141c8006a10a804024002400240024020012d0090030e03000102000b4102214a02400240024020012d0091030e03000102000b4100214a0c010b200141f8036a41186a203741186a290000370300200141f8036a41106a203741106a290000370300200141f8036a41086a203741086a2900003703002001203729000022083703f8032008a7214b4101214a0b200141d0176a41026a203941026a2d00003a0000200120392f00003b01d017204c4180807c7120012f01960472214c20012d00fa03211820012801fe032119200128018204211a200128018604210f200128018a042110200128018e04212a200128019204212b4100212c410121160c020b41022118024002400240024020012d0094030e03000103000b410021180c010b2049203841026a2d00003a0000200120382f00003b01f803204141807e7120012d00b4037221414101211820012802b003214220012802ac03214320012802a803214420012802a403214520012802a00321460b200128029c03211a20012802980321190b200141d0176a41026a20492d00003a0000200120012f01f8033b01d0174101212c410021162046210f204521102044212a2043212b2041214d2042214c0c010b4102212c41022118024002400240024020012d0094030e03000103000b410021180c010b2049203841026a2d00003a0000200120382f00003b01f803202941807e7120012d00b4037221294101211820012802b003212620012802ac03212720012802a803212820012802a403211320012802a00321150b200128029c03211a20012802980321190b200141d0176a41026a200141f8036a41026a2d00003a0000200120012f01f8033b01d017410021162015210f201321102028212a2027212b2029214d2026214c0b200141d8146a41026a222e200141d0176a41026a2d00003a0000200120012f01d0173b01d8144110102c2207450d05200741f8f7c60036020c200741013602082007428180808010370200200741086a210d024002402016204a41ff01714571450d00200d2112200721160c010b4110102c2216450d0620164190f8c60036020c20164101360208201642818080801037020020072007280200417f6a2230360200201641086a211220300d002007280208200728020c2802001103000240200728020c280204450d00200d280200102e0b200741046a220d200d280200417f6a220d360200200d0d002007102e0b024002402016280208200141a00f6a201628020c28020c1101000d0020162016280200417f6a2207360200200141023a00880a200141003a00800a200142003703f009200142013703e809024020070d002012280200201628020c2802001103000240201628020c280204450d002016280208102e0b201641046a22072007280200417f6a220736020020070d002016102e0b200141a00f6a10dc020c010b200141d0176a200141a00f6a41b00210e9081a203620012f01d8143b0000203641026a202e2d00003a0000200120183a00fc032001204b3b01fa032001204a3a00f9032001202c3a00f803200120163602a0042001204d36029c042001204c360298042001202b360294042001202a360290042001201036028c042001200f360288042001201a360284042001201936028004200141e8096a200141d0176a200141f8036a10dd020b0240024020012802f80222160d00410021070c010b2001280280032214417f4c0d070240024020140d00410121070c010b2014102c2207450d070b20072016201410e9081a0b024002402001280284034101460d004101211820012802f802450d01200141d0176a203310a90420012802d017221620012802d81710ff0120012802d417450d012016102e0c010b200128028803211602400240200128028c0322184102490d00200141013602840320012018417f6a36028c030c010b20014100360284030b201620006a2116024020012802f802450d00200141d0176a201610a70420012802d817211920012802d0172118200141f8036a41046a41003a0000200141003602f803200141086a20182019200141f8036a4105410010ca04024002402001280208450d002001200128020c2219410520194105491b3602a40f2001200141f8036a3602a00f2001200141a00f6a10ab0120012802042119200128020045211a0c010b4100211a0b024020012802d417450d002018102e0b200141d0176a203310a90420012802d017221820012802d817201620194100201a1b10e50420012802d417450d002018102e0b200141d0176a200141c8006a41f80210e9081a2016200141d0176a10aa04410021180b2001203d2900003703d0172001203e2800003600d7170240024020012903e8094201510d00410621160c010b20012d00880a211920012903f0092108200120012800d7173600a70f200120012903d0173703a00f4106211620084202510d00200120012800a70f3600d717200120012903a00f3703d017201921160b200120012903d0173703f803200120012800d7173600ff03203520012903f803370000203541076a20012800ff03360000200120163a00ec17200120143602e817200120143602e417200120073602e0172001203f3602dc17200120003602d817200141023602d417200141013a00d017200141d0176a10fe0102402018450d00024020012802f8022207450d0020012802fc02450d002007102e0b200141c8006a108b020b200221230c010b200141a00f6a200141c8006a41bc0210e9081a200141e8096a41306a221a2016290300370300200141e8096a41286a2216202e290300370300200141e8096a41206a222e2012290300370300200141e8096a41186a22122030290300370300200141e8096a41106a22302019290300370300200141e8096a41086a22192018290300370300200120062903003703e80920074103460d00200141d0176a200141a00f6a41bc0210e9081a200520012903e809370300200d2019290300370300200f203029030037030020102012290300370300202a202e290300370300202b2016290300370300202c201a2903003703002001200736028c1a2034200141d0176a10aa040b2017417f6a211720044180036a2204200c470d000b200c21050c010b20044180036a21050b0240200c2005460d000340200522044180036a21050240200441b8026a2802002206450d00200441bc026a280200450d002006102e0b200441086a108b02200c2005470d000b0b0240202f450d00202f4180036c450d002020102e0b200141c8006a41186a22044200370300200141c8006a41106a22054200370300200141c8006a41086a2206420037030020014200370348200141d0176a41d9fcc60041061081022006200141d0176a41086a2207290000370300200120012900d017370348200141d0176a41a0f4cb00410a10810220042007290000370300200520012900d017370300200141d0176a200141c8006a4120108d0220012d00d0172107200141f8036a41186a2216200141e9176a290000370300200141f8036a41106a220c200141e1176a290000370300200141f8036a41086a2214200141d9176a290000370300200120012900d1173703f8030240024020074101460d00200442003703002005420037030020064200370300200142003703480c010b200420162903003703002005200c29030037030020062014290300370300200120012903f8033703480b200141d0176a41186a22054200370300200141d0176a41106a22074200370300200141d0176a41086a22064200370300200142003703d01720014198126a41f4c2cc004118108102200620014198126a41086a220429000037030020012001290098123703d01720014198126a41e4c3cc00410e108102200520042900003703002007200129009812370300200141a00f6a200141d0176a4120108d03024002400240024002400240024020012802a00f22040d002005200141c8006a41186a2903003703002007200141c8006a41106a2903003703002006200141c8006a41086a290300370300200120012903483703d0174100210641012104200141d0176a21160c010b20012802a40f2106200141a00f6a41086a280200220541d0004b0d03200141d0176a41186a200141c8006a41186a290300370300200141d0176a41106a200141c8006a41106a290300370300200141d0176a41086a200141c8006a41086a290300370300200120012903483703d017024020052006472214450d00200141d0176a21162006210c0c020b200141d0176a21162006210c20140d010b200641016a22052006490d062006410174220c2005200c20054b1b22054104200541044b1b220541ffffff3f71200546210c200541057421050240024020060d0020014100360298120c010b200141a0126a410136020020012004360298122001200641057436029c120b200141a00f6a2005200c20014198126a107d200141a80f6a280200210520012802a00f4101460d0120012802a40f21042005410576210c200621050b200420054105746a22062016290000370000200641186a201641186a290000370000200641106a201641106a290000370000200641086a201641086a290000370000200541016a21050c020b2005450d040c030b200141d0176a41186a220c200141c8006a41186a290300370300200141d0176a41106a2214200141c8006a41106a290300370300200141d0176a41086a220e200141c8006a41086a290300370300200120012903483703d01720052000417f6a41d1007022164d0d01200420164105746a221620012903d017370000201641186a200c290300370000201641106a2014290300370000201641086a200e2903003700002006210c0b200141a00f6a41086a20053602002001200c3602a40f200120043602a00f0240024020040d00200141d0176a41186a4200370300200141e0176a4200370300200141d0176a41086a22044200370300200142003703d01720014198126a41f4c2cc004118108102200420014198126a41086a220529000037030020012001290098123703d01720014198126a41e4c3cc00410e108102200741086a20052900003700002007200129009812370000200141d0176a412010ff010c010b200141d0176a41186a4200370300200141e0176a4200370300200141d0176a41086a22054200370300200142003703d01720014198126a41f4c2cc004118108102200520014198126a41086a220629000037030020012001290098123703d01720014198126a41e4c3cc00410e108102200741086a20062900003700002007200129009812370000200141d0176a200141a00f6a10e6042004450d00200c41ffffff3f71450d002004102e0b200141d01a6a2400427f2003427f20234290f796027c220220022023541b7c220220022003541b0f0b2016200541b4cccc00103c000b1036000b1038000bf50101047f230041306b22022400200241b6d1cc004106108102200241106a41bcd1cc004107108102024002404114102c2203450d002002421437022420022003360220200241206a20014114107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bdf0b04027f027e037f077e230041a0026b22032400200341e0006a200110e202200341c8006a20032802602204200328026810f802200341d8006a2903002105200329035021062003280248210702402003280264450d002004102e0b0240024002402007450d00200341f8006a22044200370300200341e0006a41106a22074200370300200341e0006a41086a2208420037030020034200370360200341e0016a41b6d1cc0041061081022008200341e0016a41086a2209290000370300200320032900e001370360200341e0016a41e9f9c000410510810220042009290000370300200720032900e001370300200341306a200341e0006a412010f80220032903384200200328023022081b220a20067d220b200a56200341306a41106a290300420020081b220c20057d200a200654ad7d220a200c56200a200c511b0d01200341e0016a200110ad03200341e0006a20032802e001220820032802e80110ae03200341e0006a41206a290300210d2004290300210e2007290300210f20034188016a2802002104200329036821102003290360210c024020032802e401450d002008102e0b02400240200c4201520d00200341e0016a200210af03024020032903e0014201520d00200341f8006a22014200370300200341f0006a22074200370300200341e0006a41086a420037030020034200370360200341e0006a41d9fcc600410610810220034190026a4180f4cb004106108102200120034190026a41086a2900003703002007200329009002370300200341086a200341e0006a4120108e0220034190026a200210c802200341e0006a200328029002220120032802980210c9020240200328029402450d002001102e0b2000410610b0030c050b200341106a20022006200510fd012003200341186a290300370368200320032903103703602003200341e0006a3602e001200341e0016a10ce022010200f84500d01200341e0006a200210b103200328026022092003280268108f02210802402003280264450d002009102e0b024020080d00200341e0006a41186a2208200d3703002003200e3703702003201037036020032004360280012003200f3703682002200341e0006a10b2032008200241186a290000370300200341e0006a41106a200241106a290000370300200341e0006a41086a200241086a29000037030020032002290000370360200341e0016a200341e0006a10b3030c020b200341e8006a411736020020034194a4c700360264200341013a006220034183323b016041eef9c0004137200341e0006a41a8fac00041b8fac000103e000b200341206a20022006200510fd012003200341286a290300370368200320032903203703602003200341e0006a3602e001200341e0016a10ce020b200341f8006a4200370300200341e0006a41106a4200370300200341e0006a41086a2204420037030020034200370360200341e0016a41b6d1cc0041061081022004200341e0016a41086a2208290000370300200320032900e001370360200341e0016a41e9f9c0004105108102200741086a2008290000370000200720032900e0013700002003200a3703e8012003200b3703e001200341e0006a4120200341e0016a411010b201200341e0006a200110e20220032802602207200328026810ff0102402003280264450d002007102e0b200341e0006a200110ad0320032802602207200328026810ff0102402003280264450d002007102e0b200341e0006a200110ab0320032802602207200328026810ff0102402003280264450d002007102e0b200341e0006a41106a2005370300200341e0006a41086a2006370300200341e0006a41186a200229000037030020034180016a200241086a29000037030020034188016a200241106a29000037030020034190016a200241186a29000037030020034198016a2001290000370300200341a0016a200141086a290000370300200341a8016a200141106a2800003602002003410f3a0060200341e0006a10fe01200041063a00000c020b2000410210b0030c010b2000410410b0030b200341a0026a24000bf50101047f230041306b22022400200241b6d1cc004106108102200241106a41bcdbc8004107108102024002404114102c2203450d002002421437022420022003360220200241206a20014114107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bd80202027f017e230041d0006b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044110490d0020044170714110460d002004417c714120470d010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341909dc5003602382003200341286a360248200341346a419cebc000200341386a103d1a2003280218200328022010ef020240200328021c450d002003280218102e0b420021050c010b200041186a200129001037030020002001290000370308200041286a2001280020360200200041206a200141186a290000370300200041106a200141086a290000370300420121050b200020053703002002450d002001102e0b200341d0006a24000b940304027f017e027f047e230041e0006b220224002002200110b1032002280200210120022002280208220336021420022001360210200241186a2001200310ed0202400240200228021822030d00420021040c010b200228021c2105024002400240200241206a28020022064110490d0020064170714110460d002006417c714120470d010b20024100360230200242013703282002410a36023c2002200241106a3602382002200241286a360244200241dc006a41013602002002420137024c200241909dc5003602482002200241386a360258200241c4006a419cebc000200241c8006a103d1a2002280228200228023010ef020240200228022c450d002002280228102e0b420021040c010b200341186a2900002107200341086a2900002108200329001021092003290000210a20032800202106420121040b2005450d002003102e0b200041206a2007370300200041186a2009370300200041106a20083703002000200a370308200041286a20063602002000200437030002402002280204450d002001102e0b200241e0006a24000b860201047f230041c0006b2202240041c4f6c000210341132104410521050240024002400240024002400240200141ff01710e0700010203040506000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41d0c1cc001044000b41c0f5c000210341182104410021050c040b41e0f5c000210341102104410121050c030b41f8f5c000210341102104410221050c020b4190f6c0002103410c2104410321050c010b41acf6c000210341102104410421050b20004183303b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bac0201037f230041e0006b22022400200241bcdbc8004107108102200241106a41bcdbc8004107108102024002404120102c2203450d002002422037023420022003360230200241306a200141201074200241c0006a200228023022012002280238220310d803200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a107c02402002280234450d002001102e0b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241e0006a24000f0b1036000b1038000be40104017f027e017f027e230041306b22022400200141186a2903002103200141086a29030021042001280220210520012903102106200129030021072002200010b103200228020821002002280200210120024100360218200242013703102002200437032820022007370320200241106a200241206a411010742002200337032820022006370320200241106a200241206a4110107420022005360220200241106a200241206a410410742001200020022802102205200228021810b20102402002280214450d002005102e0b02402002280204450d002001102e0b200241306a24000bc00807027f017e017f027e017f027e067f230041c0016b22022400200241c0006a200110af03024002400240024020022903404201520d00200241d0006a22032903002104200241d8006a22052903002106200241c0006a41206a2903002107200241e8006a2802002108200229034821092005420037030020034200370300200241c0006a41086a420037030020024200370340200241c0006a41d9fcc6004106108102200241306a4180f4cb0041061081022005200241306a41086a29000037030020032002290030370300200241286a200241c0006a4120108e02200241086a200742004100200228022c410020022802281b220320086b2205200520034b1bad220a420010e808200241186a200a42002006420010e80802402002290310420052200241186a41086a290300220720022903087c2206200754720d0020092002290318220756200420065620042006511b0d020b200242f6cacda397cddbb320370330200241c0006a200110d4062002280248210b2002410036024802400240200b0d004100210c2002280240210d0c010b2002280240220d41106a210e4100210f4100210c410021080240034002400240200c450d00200d20084105746a2103200d2008200f6a4105746a21050340200341106a22102900002002290330510d0220052003290300370300200541186a200341186a290300370300200541106a2010290300370300200541086a200341086a290300370300200541206a2105200341206a2103200b200841016a22084b0d000c040b0b200e20084105746a2103034020032900002002290330510d01200341206a2103200b200841016a22084b0d000b4100210c0c030b200f417f6a210f200c41016a210c200b200841016a22084b0d000b0b0240200c0d004100210c0c010b200d2008200c6b4105746a200d20084105746a200b20086b41057410ea081a0b2002200b200c6b22033602482001200d200310d5060240200228024441ffffff3f71450d00200d102e0b200241c0006a200110b10320022802402203200228024810ff0102402002280244450d002003102e0b200241c0006a41086a41013a0000200241c9006a2001290000370000200241d1006a200141086a290000370000200241e1006a200141186a290000370000200241103a0040200241d9006a200141106a290000370000200241c0006a10fe010c020b2000410110d6060c020b42f6cacda397cddbb32020014200200920077d220a200a200956200420067d2009200754ad7d220620045620062004511b22031b22044200200620031b22064106108506200241f8006a2006370300200241f0006a2004370300200241c0006a41086a41003a0000200241c9006a2001290000370000200241d1006a200141086a290000370000200241e1006a200141186a290000370000200241103a0040200241d9006a200141106a290000370000200241c0006a10fe010b200041063a00000b200241c0016a24000b13002000410a360204200041c4ffc0003602000b340020004190fec60036020420004100360200200041146a4102360200200041106a4188b2c100360200200041086a42053702000b130020004106360204200041d8b6c1003602000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002412036020c20002002410c6a41041074200241106a24000b4201027f230041106b2202240002404102102c22030d001036000b2000420237020420002003360200200241203b010e20002002410e6a41021074200241106a24000b4a01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280cdad9d013703002000200241101074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b2000421037020420002003360200200242003703082002428088caade9053703002000200241101074200241106a24000be22505027f017e027f017e037f230041b0046b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b200241086a200141386a10ca0120024180026a41286a200141306a29030037030020024180026a41206a200141286a29030037030020024180026a41186a200141206a29030037030020024180026a41106a200141186a29030037030020024180026a41086a200141106a2903003703002002200141086a29030037038002200141f8016a280200210320024180026a41306a200241086a41c00110e9081a20014180026a2903002104200241086a20024180026a41f00110e9081a200041086a200241086a41f00110e9081a20004180026a2004370300200041f8016a20033602002000411b3602000c1b0b20024180026a200141086a10cb0120004100360200200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c1a0b20024180026a200141046a10cc0120004101360200200041246a200241a0026a2802003602002000411c6a20024198026a290300370200200041146a20024190026a2903003702002000410c6a20024188026a29030037020020002002290380023702040c190b20024180026a200141086a10cd01200041086a20024180026a41a00210e9081a200041023602000c180b20004103360200200041086a200141086a2903003703000c170b41042103200141046a210502400240024002400240024002400240024020012d0004417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002105410121030c040b41022103200241086a41026a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a29020037038002200141086a2802002105200141286a28020021010c040b200141086a2802002105410321030c020b2002410a6a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a2902003703800220012d00254100472106200141086a2802002105200141286a28020021010c030b200141086a2802002105410521030b0b0b200020033a0004200020022f01083b0005200020063a0025200020022f01fc013b0126200041086a20053602002000410c6a200229038002370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a20024180026a41086a2903003702002000411c6a20024190026a290300370200200041246a20024198026a2d00003a0000200041043602000c160b20024180026a200141086a10ce01200041086a20024180026a41e00010e9081a200041053602000c150b20024180026a200141046a10cf01200041063602002000410c6a20024188026a28020036020020002002290380023702040c140b20024180026a200141086a10d001200041086a20024180026a41d80010e9081a200041073602000c130b10d101000b02400240200128020422050d00410021030c010b20024180026a41186a200141286a29000037030020024180026a41106a200141206a29000037030020024188026a200141186a29000037030020024180026a41286a200141386a29000037030020024180026a41306a200141c0006a29000037030020024180026a41386a200141c8006a29000037030020024180026a41c8006a200141d8006a29000037030020024180026a41d0006a200141e0006a29000037030020024180026a41d8006a200141e8006a2900003703002002200141106a290000370380022002200141306a2900003703a0022002200141d0006a2900003703c00220024180026a41f8006a20014188016a29000037030020024180026a41f0006a20014180016a29000037030020024180026a41e8006a200141f8006a29000037030020024180026a4198016a200141a8016a29000037030020024180026a4190016a200141a0016a29000037030020024180026a4188016a20014198016a29000037030020024180026a41b8016a200141c8016a29000037030020024180026a41b0016a200141c0016a29000037030020024180026a41a8016a200141b8016a2900003703002002200141f0006a2900003703e002200220014190016a290000370380032002200141b0016a2900003703a0032001410c6a2802002201417f4c0d130240024020010d00410121030c010b2001102c2203450d150b20032005200110e9081a200241086a20024180026a41c00110e9081a0b200020033602042000410c6a2001360200200041086a2001360200200041106a200241086a41c00110e9081a200041093602000c110b20024180026a200141086a10d201200041086a20024180026a41980210e9081a2000410a3602000c100b20024180026a200141046a10d301200041046a20024180026a41e80010e9081a2000410b3602000c0f0b10d401000b20024180026a200141086a10d5012000410d360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0d0b20024180026a200141086a10d6012000410e360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0c0b20024180026a200141086a10d6012000410f360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0b0b20024180026a200141086a10d70120004110360200200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0a0b200141046a2103410721050240024002400240024002400240024020012d0004417f6a0e0701020304050607000b41e2a0cc00412841a4c3cb001039000b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410121050c050b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410221050c040b20024180026a41186a200341196a29000037030020024180026a41106a200341116a29000037030020024180026a41086a200341096a290000370300200241086a41086a200341296a290000370300200241086a41106a200341316a290000370300200241086a41186a200341396a29000037030020022003290001370380022002200341216a290000370308410321050c030b200241086a200141086a10c8012002418b026a200241086a41086a2802003600002002200229030837008302410421050c020b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410521050c010b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410621050b200020053a0004200020022903800237000520002002290308370025200020022f00fc013b00452000410d6a20024180026a41086a290300370000200041156a20024180026a41106a2903003700002000411d6a20024180026a41186a2903003700002000412d6a200241086a41086a290300370000200041356a200241086a41106a2903003700002000413d6a200241086a41186a290300370000200041c7006a200241fe016a2d00003a0000200041113602000c090b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a2903002104200141306a29030021074101210841012109024002400240024002402001410c6a2d00000e050104020300010b4104210920024180026a41046a200141206a2d00003a000020022001411c6a2800003602800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a28020021050c030b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410021090c020b200141186a2802002203417f4c0d0f200141106a28020021010240024020030d00410121050c010b2003102c2205450d110b20052001200310e9081a410221092003210a0c010b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410321090b200241086a41106a20024180026a41106a2d00003a0000200241086a41086a20024180026a41086a290300370300200241046a41026a200241fc016a41026a2d00003a00002002200229038002370308200220022f00fc013b01040c030b2001410c6a28020022094108762106410221080c010b2001410c6a28020022094108762106410321080b0b200020022f01043b002d20004112360200200041386a2004370300200041306a2007370300200041186a200a360200200041146a2003360200200041106a2005360200200041086a20083602002000411c6a20022903083702002000410c6a2006410874200941ff017172360200200041246a200241086a41086a2903003702002000412c6a200241086a41106a2d00003a00002000412f6a200241066a2d00003a00000c080b20024180026a200141086a10d801200041086a20024180026a41f00010e9081a200041133602000c070b20024180026a200141086a10d901200041086a20024180026a41f80010e9081a200041143602000c060b024002400240024020012f0104417f6a0e03010200010b20024180026a200141086a10c90120022902840221042002280280022103410321010c020b20024180026a200141086a10c90120022902840221042002280280022103410121010c010b20012f0106210541b002102c2203450d0820024180026a200141086a28020010da01200320024180026a41b00210e9081a410221010b200020013b0104200041153602002000410c6a2004370200200041086a2003360200200041066a20053b01000c050b20024180026a200141086a10db01200041086a20024180026a41a80210e9081a200041163602000c040b20024180026a200141046a10dc01200041046a20024180026a41c80010e9081a200041173602000c030b20024180026a200141086a10dd01200041086a20024180026a41c80010e9081a200041183602000c020b20024180026a200141086a10de0120004119360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c010b20024180026a200141086a10df012000411a360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000b200241b0046a24000f0b1038000b1036000bec3703057f047e047f230041900c6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0a0102030405060708090a0b0b2000410b3a00000c130b41002104200241003a0080040240024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a20032903003703002002200229039001370370200128020022032802042204450d12200328020022052d0000210620032004417f6a3602042003200541016a3602004107210320060e020201120b0240200441ff0171450d00200241003a0080040b2000410b3a00000c140b200128020022032802042204450d10200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024002400240024020060e0705040001150203150b410221030c040b410321030c030b410521030c020b410621030c010b410121030b2001200128020441016a22043602040240200420012802084b0d00200241e0036a200110950120022802e0032104200241b0016a200241e0036a41047241ac0210e9081a2004411c460d00200241e0036a200241b0016a41ac0210e9081a41b002102c2205450d1220052004360200200541046a200241e0036a41ac0210e9081a200241d0006a41186a200241f0006a41186a2903002207370300200241d0006a41106a200241f0006a41106a2903002208370300200241d0006a41086a200241f0006a41086a290300220937030020012001280204417f6a36020420022002290370220a370350200041013a00002000200a370001200041096a2009370000200041116a2008370000200041196a2007370000200041246a2005360200200041216a20033a0000200041286a2002290230370200200041306a200241306a41086a290200370200200041386a200241306a41106a290200370200200041c0006a200241306a41186a2902003702000c130b2000410b3a00000c120b41002104200241003a0080040240024002400240024002400240024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a20032903003703002002200229039001370370200128020022032802042204450d07200328020022052d0000210620032004417f6a3602042003200541016a3602004100210320060e0706050102070304070b0240200441ff0171450d00200241003a0080040b2000410b3a00000c190b410221030c040b410321030c030b410521030c020b410621030c010b410121030b2001280200220128020422044104490d0120012802002205280000210620012004417c6a3602042001200541046a360200200241d0006a41086a200241f0006a41086a2903002207370300200241d0006a41106a200241f0006a41106a2903002208370300200241d0006a41186a200241f0006a41186a290300220937030020022002290370220a370350200041023a00002000200a370001200041096a2007370000200041116a2008370000200041196a2009370000200041246a2006360200200041216a20033a0000200041286a2002290230370200200041306a200241306a41086a290200370200200041386a200241306a41106a290200370200200041c0006a200241306a41186a2902003702000c130b2000410b3a00000c120b2000410b3a00000c110b41002104200241003a0080040240024002400240024002400240024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a20032903003703002002200229039001370370200128020022032802042204450d07200328020022052d0000210620032004417f6a3602042003200541016a3602004100210320060e0706050102070304070b0240200441ff0171450d00200241003a0080040b2000410b3a00000c180b410221030c040b410321030c030b410521030c020b410621030c010b410121030b2001280200220128020422044104490d0120012802002205280000210620012004417c6a3602042001200541046a360200200241d0006a41086a200241f0006a41086a2903002207370300200241d0006a41106a200241f0006a41106a2903002208370300200241d0006a41186a200241f0006a41186a290300220937030020022002290370220a370350200041033a00002000200a370001200041096a2007370000200041116a2008370000200041196a2009370000200041246a2006360200200041216a20033a0000200041286a2002290230370200200041306a200241306a41086a290200370200200041386a200241306a41106a290200370200200041c0006a200241306a41186a2902003702000c120b2000410b3a00000c110b2000410b3a00000c100b200041043a00000c0f0b200128020022032802042204450d0c200328020022052d0000210620032004417f6a3602042003200541016a3602004100210402400240024002400240024020060e0705000102120304120b410121040c040b410221040c030b410321040c020b410521040c010b410621040b024002402001280200220328020422054104490d0020032802002206280000210b20032005417c6a3602042003200641046a3602002001280200220128020422034102490d01200128020022052f0000210620012003417e6a3602042001200541026a360200200041046a200b360200200041026a20063b0100200020043a0001200041053a0000200041086a20022902e003370200200041106a200241e0036a41086a290200370200200041186a200241e0036a41106a290200370200200041206a200241e0036a41186a290200370200200041286a200241e0036a41206a290200370200200041306a200241e0036a41286a290200370200200041386a200241e0036a41306a290200370200200041c0006a200241e0036a41386a2902003702000c100b2000410b3a00000c0f0b2000410b3a00000c0e0b41002104200241003a008004024002400240024002400240024002400240024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a20032903003703002002200229039001370370200128020022032802042204450d07200328020022052d0000210620032004417f6a3602042003200541016a3602004100210420060e0706050102070304070b0240200441ff0171450d00200241003a0080040b2000410b3a00000c170b410221040c040b410321040c030b410521040c020b410621040c010b410121040b2001280200220328020422054102490d01200328020022062f0000210b20032005417e6a3602042003200641026a360200200241086a200110ad0120022802080d02200228020c21032002200110ad0120022802000d0320022802042101200241d0006a41186a200241f0006a41186a2903002207370300200241d0006a41106a200241f0006a41106a2903002208370300200241d0006a41086a200241f0006a41086a290300220937030020022002290370220a370350200041063a00002000200a370001200041096a2009370000200041116a2008370000200041196a2007370000200041286a2001360200200041246a2003360200200041226a200b3b0100200041216a20043a00002000412c6a2002290230370200200041346a200241306a41086a2902003702002000413c6a200241306a41106a290200370200200041c4006a200241306a41186a2802003602000c110b2000410b3a00000c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b41002104200241003a008004024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a2003290300370300200220022903900137037041002104200241003a0080040340200128020022032802042205450d02200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a2903002207370300200241306a41086a2201200241e0036a41086a290300370300200241306a41106a2203200241e0036a41106a290300370300200241306a41186a22042007370300200220022903e003370330200241d0006a41186a2205200241f0006a41186a290300370300200241d0006a41106a2206200241f0006a41106a290300370300200241d0006a41086a220b200241f0006a41086a29030037030020022002290370370350200041073a000020002002290350370001200041096a200b290300370000200041116a2006290300370000200041196a2005290300370000200041216a2002290330370000200041296a2001290300370000200041316a2003290300370000200041396a2004290300370000200041c1006a2002280010360000200041c4006a200241136a2800003600000c0e0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0d0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0c0b41002104200241003a008004024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a2003290300370300200220022903900137037041002104200241003a0080040340200128020022032802042205450d02200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a2903002207370300200241306a41086a2201200241e0036a41086a290300370300200241306a41106a2203200241e0036a41106a290300370300200241306a41186a22042007370300200220022903e003370330200241d0006a41186a2205200241f0006a41186a290300370300200241d0006a41106a2206200241f0006a41106a290300370300200241d0006a41086a220b200241f0006a41086a29030037030020022002290370370350200041083a000020002002290350370001200041096a200b290300370000200041116a2006290300370000200041196a2005290300370000200041216a2002290330370000200041296a2001290300370000200041316a2003290300370000200041396a2004290300370000200041c1006a2002280010360000200041c4006a200241136a2800003600000c0d0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0c0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0b0b41002104200241003a008004024002400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a2003290300370300200220022903900137037041002104200241003a0080040340200128020022032802042205450d02200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a2903002207370300200241306a41086a2201200241e0036a41086a290300370300200241306a41106a2203200241e0036a41106a290300370300200241306a41186a22042007370300200220022903e003370330200241d0006a41186a2205200241f0006a41186a290300370300200241d0006a41106a2206200241f0006a41106a290300370300200241d0006a41086a220b200241f0006a41086a29030037030020022002290370370350200041093a000020002002290350370001200041096a200b290300370000200041116a2006290300370000200041196a2005290300370000200041216a2002290330370000200041296a2001290300370000200041316a2003290300370000200041396a2004290300370000200041c1006a2002280010360000200041c4006a200241136a2800003600000c0c0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0b0b0240200441ff0171450d00200241003a0080040b2000410b3a00000c0a0b41002104200241003a00800402400340200128020022032802042205450d01200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241d0006a41186a2005290300370300200241d0006a41106a2004290300370300200241d0006a41086a2003290300370300200220022903900137035041002104200241003a0080040340200128020022032802042205450d03200241e0036a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a0080042003210420034120470d000b200241b0016a41186a200241e0036a41186a290300220737030020024190016a41086a2203200241e0036a41086a29030037030020024190016a41106a2204200241e0036a41106a29030037030020024190016a41186a22052007370300200220022903e00337039001200241f0006a41186a2005290300370300200241f0006a41106a2004290300370300200241f0006a41086a20032903003703002002200229039001370370200128020022032802042204450d05200328020022052d0000210620032004417f6a3602042003200541016a3602004107210320060e020403050b0240200441ff0171450d00200241003a0080040b2000410b3a00000c090b2000410b3a00000c080b0240200441ff0171450d00200241003a0080040b2000410b3a00000c070b200128020022032802042204450d01200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024002400240024020060e0705040001060203060b410221030c040b410321030c030b410521030c020b410621030c010b410121030b2001200128020441016a2204360204200420012802084b0d01200241e0036a200110950120022802e0032104200241b0016a200241e0036a41047241ac0210e9081a2004411c460d01200241e0036a200241b0016a41ac0210e9081a41b002102c2205450d0420052004360200200541046a200241e0036a41ac0210e9081a200241306a41086a2204200241d0006a41086a290300370300200241306a41106a2206200241d0006a41106a290300370300200241306a41186a220b200241d0006a41186a290300370300200241106a41086a220c200241f0006a41086a290300370300200241106a41106a220d200241f0006a41106a290300370300200241106a41186a220e200241f0006a41186a29030037030020012001280204417f6a36020420022002290350370330200220022903703703102000410a3a000020002002290330370001200041096a2004290300370000200041116a2006290300370000200041196a200b290300370000200041216a2002290310370000200041296a200c290300370000200041316a200d290300370000200041396a200e290300370000200041c4006a2005360200200041c1006a20033a00000c050b2000410b3a00000c040b2000410b3a00000c030b2000410b3a00000c020b2000410b3a00000c010b1036000b200241900c6a24000bad2a03067f047e027f230041e0066b22022400024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0a0102030405060708090b0a0b2000410b3a00000c100b200241d0036a200110930120022d00d0034101460d0a20024198016a200241e9036a29000037030020024190016a200241e1036a29000037030020024188016a200241d9036a290000370300200220022900d10337038001024020012802042203450d00200128020022042d0000210520012003417f6a22073602042001200441016a360200410721060240024020050e020100020b2007450d0120042d0001210520012003417e6a3602042001200441026a360200410021060240024002400240024020050e0705040001060203060b410221060c040b410321060c030b410521060c020b410621060c010b410121060b200241d0036a200110980120022802d0032101200241a0016a200241d0036a41047241ac0210e9081a024002402001411c460d00200241d0036a200241a0016a41ac0210e9081a41b002102c22030d010c130b2000410b3a00000c110b20032001360200200341046a200241d0036a41ac0210e9081a200241e0006a41186a20024180016a41186a2903002208370300200241e0006a41106a20024180016a41106a2903002209370300200241e0006a41086a20024180016a41086a290300220a3703002002200229038001220b370360200041013a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041246a2003360200200041216a20063a0000200041286a2002290240370200200041306a200241c0006a41086a290200370200200041386a200241c0006a41106a290200370200200041c0006a200241c0006a41186a2902003702000c100b2000410b3a00000c0f0b200241d0036a200110930102400240024020022d00d0034101460d00200241b8016a200241e9036a290000370300200241b0016a200241e1036a290000370300200241a8016a200241d9036a290000370300200220022900d1033703a00120012802042203450d0d200128020022042d0000210620012003417f6a22073602042001200441016a36020041002105024002400240024020060e0706050001110203110b410221050c050b410321050c040b410521050c030b410621050c020b2000410b3a00000c100b410121050b024020074104490d002004280001210620012003417b6a3602042001200441056a36020020024180016a41086a200241a0016a41086a290300220837030020024180016a41106a200241a0016a41106a290300220937030020024180016a41186a200241a0016a41186a290300220a370300200220022903a001220b37038001200041023a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041246a2006360200200041216a20053a0000200041286a2002290260370200200041306a200241e0006a41086a290200370200200041386a200241e0006a41106a290200370200200041c0006a200241e0006a41186a2902003702000c0f0b2000410b3a00000c0e0b200241d0036a200110930102400240024020022d00d0034101460d00200241b8016a200241e9036a290000370300200241b0016a200241e1036a290000370300200241a8016a200241d9036a290000370300200220022900d1033703a00120012802042203450d0d200128020022042d0000210620012003417f6a22073602042001200441016a36020041002105024002400240024020060e0706050001110203110b410221050c050b410321050c040b410521050c030b410621050c020b2000410b3a00000c0f0b410121050b024020074104490d002004280001210620012003417b6a3602042001200441056a36020020024180016a41086a200241a0016a41086a290300220837030020024180016a41106a200241a0016a41106a290300220937030020024180016a41186a200241a0016a41186a290300220a370300200220022903a001220b37038001200041033a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041246a2006360200200041216a20053a0000200041286a2002290260370200200041306a200241e0006a41086a290200370200200041386a200241e0006a41106a290200370200200041c0006a200241e0006a41186a2902003702000c0e0b2000410b3a00000c0d0b200041043a00000c0c0b0240024002402006450d0020042d0001210620012003417e6a22073602042001200441026a3602004100210502400240024002400240024020060e0705000102060304060b410121050c040b410221050c030b410321050c020b410521050c010b410621050b20074104490d012004280002210720012003417a6a22063602042001200441066a36020020064102490d0220042f000621062001200341786a3602042001200441086a360200200041046a2007360200200041026a20063b0100200020053a0001200041053a0000200041086a20022902d003370200200041106a200241d0036a41086a290200370200200041186a200241d0036a41106a290200370200200041206a200241d0036a41186a290200370200200041286a200241d0036a41206a290200370200200041306a200241d0036a41286a290200370200200041386a200241d0036a41306a290200370200200041c0006a200241d0036a41386a2902003702000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b200241d0036a2001109301024002400240024002400240024020022d00d0034101460d00200241b8016a200241e9036a290000370300200241b0016a200241e1036a290000370300200241a8016a200241d9036a290000370300200220022900d1033703a00120012802042203450d03200128020022042d0000210520012003417f6a22063602042001200441016a36020041002107024002400240024020050e0706050001070203070b410221070c050b410321070c040b410521070c030b410621070c020b2000410b3a00000c100b410121070b20064102490d0120042f0001210520012003417d6a3602042001200441036a360200200241106a200110ab0120022802100d0220022802142103200241086a200110ab0120022802080d03200228020c210120024180016a41186a200241a0016a41186a290300220837030020024180016a41106a200241a0016a41106a290300220937030020024180016a41086a200241a0016a41086a290300220a370300200220022903a001220b37038001200041063a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041286a2001360200200041246a2003360200200041226a20053b0100200041216a20073a00002000412c6a2002290260370200200041346a200241e0006a41086a2902003702002000413c6a200241e0006a41106a290200370200200041c4006a200241e0006a41186a2802003602000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b200241d0036a2001109301024020022d00d0034101460d00200241f8006a200241e9036a290000370300200241f0006a200241e1036a290000370300200241e8006a200241d9036a290000370300200220022900d10337036041002104200241003a00f0032001280204417f6a21030240024003402003417f460d01200241d0036a20046a200128020022052d00003a0000200120033602042001200541016a3602002002200441016a22053a00f0032003417f6a21032005210420054120470d000b200241a0016a41086a2201200241d0036a41086a290300370300200241a0016a41106a2203200241d0036a41106a290300370300200241a0016a41186a2204200241d0036a41186a290300370300200220022903d0033703a001200541ff0171411f4d0d01200241206a41086a22052001290300370300200241206a41106a22012003290300370300200241206a41186a22032004290300370300200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a2206200241e0006a41106a290300370300200241c0006a41186a2207200241e0006a41186a290300370300200220022903a00137032020022002290360370340200041073a000020002002290340370001200041096a2004290300370000200041116a2006290300370000200041196a2007290300370000200041216a2002290320370000200041296a2005290300370000200041316a2001290300370000200041396a2003290300370000200041c1006a2002280019360000200041c4006a2002411c6a2800003600000c0c0b200441ff0171450d00200241003a00f0030b2000410b3a00000c0a0b2000410b3a00000c090b200241d0036a2001109301024020022d00d0034101460d00200241f8006a200241e9036a290000370300200241f0006a200241e1036a290000370300200241e8006a200241d9036a290000370300200220022900d10337036041002104200241003a00f0032001280204417f6a21030240024003402003417f460d01200241d0036a20046a200128020022052d00003a0000200120033602042001200541016a3602002002200441016a22053a00f0032003417f6a21032005210420054120470d000b200241a0016a41086a2201200241d0036a41086a290300370300200241a0016a41106a2203200241d0036a41106a290300370300200241a0016a41186a2204200241d0036a41186a290300370300200220022903d0033703a001200541ff0171411f4d0d01200241206a41086a22052001290300370300200241206a41106a22012003290300370300200241206a41186a22032004290300370300200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a2206200241e0006a41106a290300370300200241c0006a41186a2207200241e0006a41186a290300370300200220022903a00137032020022002290360370340200041083a000020002002290340370001200041096a2004290300370000200041116a2006290300370000200041196a2007290300370000200041216a2002290320370000200041296a2005290300370000200041316a2001290300370000200041396a2003290300370000200041c1006a2002280019360000200041c4006a2002411c6a2800003600000c0b0b200441ff0171450d00200241003a00f0030b2000410b3a00000c090b2000410b3a00000c080b200241d0036a2001109301024020022d00d0034101460d00200241f8006a200241e9036a290000370300200241f0006a200241e1036a290000370300200241e8006a200241d9036a290000370300200220022900d10337036041002104200241003a00f0032001280204417f6a21030240024003402003417f460d01200241d0036a20046a200128020022052d00003a0000200120033602042001200541016a3602002002200441016a22053a00f0032003417f6a21032005210420054120470d000b200241a0016a41086a2201200241d0036a41086a290300370300200241a0016a41106a2203200241d0036a41106a290300370300200241a0016a41186a2204200241d0036a41186a290300370300200220022903d0033703a001200541ff0171411f4d0d01200241206a41086a22052001290300370300200241206a41106a22012003290300370300200241206a41186a22032004290300370300200241c0006a41086a2204200241e0006a41086a290300370300200241c0006a41106a2206200241e0006a41106a290300370300200241c0006a41186a2207200241e0006a41186a290300370300200220022903a00137032020022002290360370340200041093a000020002002290340370001200041096a2004290300370000200041116a2006290300370000200041196a2007290300370000200041216a2002290320370000200041296a2005290300370000200041316a2001290300370000200041396a2003290300370000200041c1006a2002280019360000200041c4006a2002411c6a2800003600000c0a0b200441ff0171450d00200241003a00f0030b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b200241d0036a200110930120022d00d0034101460d03200241e0006a41186a200241e9036a2203290000370300200241e0006a41106a200241e1036a2204290000370300200241e0006a41086a200241d9036a2205290000370300200220022900d103370360200241d0036a2001109301024002400240024020022d00d0034101460d0020024180016a41186a200329000037030020024180016a41106a200429000037030020024180016a41086a2005290000370300200220022900d1033703800120012802042203450d03200128020022042d0000210520012003417f6a22073602042001200441016a36020041072106024020050e020300040b2007450d0320042d0001210520012003417e6a3602042001200441026a36020041002106024002400240024020050e0706050001070203070b410221060c050b410321060c040b410521060c030b410621060c020b2000410b3a00000c080b410121060b200241d0036a200110980120022802d0032101200241a0016a200241d0036a41047241ac0210e9081a2001411c460d05200241d0036a200241a0016a41ac0210e9081a41b002102c2203450d0720032001360200200341046a200241d0036a41ac0210e9081a200241c0006a41086a2201200241e0006a41086a290300370300200241c0006a41106a2204200241e0006a41106a290300370300200241c0006a41186a2205200241e0006a41186a290300370300200241206a41086a220720024180016a41086a290300370300200241206a41106a220c20024180016a41106a290300370300200241206a41186a220d20024180016a41186a2903003703002002200229036037034020022002290380013703202000410a3a000020002002290340370001200041096a2001290300370000200041116a2004290300370000200041196a2005290300370000200041216a2002290320370000200041296a2007290300370000200041316a200c290300370000200041396a200d290300370000200041c4006a2003360200200041c1006a20063a00000c060b2000410b3a00000c050b2000410b3a00000c040b2000410b3a00000c030b2000410b3a00000c020b2000410b3a00000c010b2000410b3a00000b200241e0066a24000f0b1036000baf0101017f230041106b22042400200420003703082003200441086a410810740240024002400240200141ff01710e03000102030b200441003a00072003200441076a410110740c020b200441013a00072003200441076a410110740c010b200441023a00072003200441076a410110740b02400240200241ff01714101460d00200441003a00072003200441076a410110740c010b200441013a00072003200441076a410110740b200441106a24000b13002000410236020420004188c4c1003602000b3400200041a081ca0036020420004100360200200041146a4107360200200041106a41d0ccc100360200200041086a42073702000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410141002000109c010bf70201047f230041e0006b22022400200241086a41a081ca004107108102200241186a41e4d3c100410810810202400240200141086a280200220341046a2204417f4c0d000240024020040d00410121050c010b2004102c2205450d020b200241003602402002200436023c20022005360238200241386a200141041074200128020421012003200241386a1076200241386a2001200310742002200228023822012002280240220410a301370348200241dc006a200120046a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220441206a2201417f4c0d000240024020010d00410121030c010b2001102c2203450d020b2000410036020820002001360204200020033602002000200241086a411010742000200241186a41101074200020022802282201200410740240200228022c450d002001102e0b200241e0006a24000f0b1038000b1036000b960203047f017e027f230041306b22012400200141186a22024200370300200141106a22034200370300200141086a4200370300200142003703002001418ef9c0004110108102200141206a41c7c3cb0041071081022002200141206a41086a29000037030020032001290020370300200141206a200110f10220012802202203410820031b2104410021020240024002402001290224420020031b2205422088a722030e020201000b4100210203402003410176220620026a210720072002200420074106746a41206a2000412010ec084101481b2102200320066b220341014b0d000b0b200420024106746a41206a2000412010ec084521020b0240200542ffffff1f83500d002004102e0b200141306a240020020b130020004105360204200041acd8c1003602000b3400200041b6d1cc0036020420004100360200200041146a4105360200200041106a41b8f0c100360200200041086a42063702000b130020004101360204200041f4f7c1003602000b3101017f02404125102c22020d001036000b2000422537020420002002360200412120001076200041b8fcc600412110740b13002000410636020420004194fcc1003602000b34002000418ef9c00036020420004100360200200041146a4105360200200041106a41c09ec200360200200041086a42103702000b5401017f230041106b2202240020004100360208200042013702004100200010762002420037030820024200370300200020024110107420024200370308200242003703002000200241101074200241106a24000b2901017f230041106b2202240020024100360208200242083703002000200210b401200241106a24000b130020004107360204200041a0a9c2003602000b4b01027f230041106b22022400200242f0d0c9abc6add9b1f40037030802404108102c22030d001036000b20004208370204200020033602002000200241086a41081074200241106a24000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002410d36020c20002002410c6a41041074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280e0cdb8eb053703002000200241101074200241106a24000ba30302057f017e230041b0016b220224002002200141206a41e7e485f30610d103200228020421032002280200210441002105200241003a0068024002400240034020032005460d01200241c8006a20056a200420056a2d00003a00002002200541016a22063a00682006210520064120470d000b200241f0006a41086a2205200241c8006a41086a290300370300200241f0006a41106a2203200241c8006a41106a290300370300200241f0006a41186a2204200241c8006a41186a29030037030020022002290348370370200641ff0171411f4d0d01200241286a41186a20042903002207370300200241086a41086a2005290300370300200241086a41106a2003290300370300200241086a41186a2007370300200220022903703703080c020b200541ff0171450d00200241003a00680b200241106a4200370300200241186a4200370300200241206a4200370300200242003703080b20002001360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a290300370000200241b0016a24000bc00101027f4100210341d4e2cc0021040240024002400240024002400240200241e6e485f3064a0d00200241f0c2c98b06460d03200241e2c289ab06460d01200241e1ea91cb06470d06200141a0016a21040c050b200241e9dabdf306460d01200241e1e69df306460d03200241e7e485f306470d0541202103200121040c050b41202103200141206a21040c040b200141c0006a21040c020b200141e0006a21040c010b20014180016a21040b412021030b20002003360204200020043602000ba30302057f017e230041b0016b220224002002200141206a41e9dabdf30610d103200228020421032002280200210441002105200241003a0068024002400240034020032005460d01200241c8006a20056a200420056a2d00003a00002002200541016a22063a00682006210520064120470d000b200241f0006a41086a2205200241c8006a41086a290300370300200241f0006a41106a2203200241c8006a41106a290300370300200241f0006a41186a2204200241c8006a41186a29030037030020022002290348370370200641ff0171411f4d0d01200241286a41186a20042903002207370300200241086a41086a2005290300370300200241086a41106a2003290300370300200241086a41186a2007370300200220022903703703080c020b200541ff0171450d00200241003a00680b200241106a4200370300200241186a4200370300200241206a4200370300200242003703080b20002001360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a290300370000200241b0016a24000b130020004105360204200041c8b9c2003602000b130020004108360204200041c8bcc2003602000b13002000411136020420004180c2c2003602000b870201037f230041d0006b22022400200241086a41bad7c7004108108102200241186a41dbafc9004109108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bac0201037f230041e0006b2202240020024188fec6004108108102200241106a41e7ccc2004107108102024002404120102c2203450d002002422037023420022003360230200241306a200141201074200241c0006a200228023022012002280238220310d803200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a107c02402002280234450d002001102e0b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241e0006a24000f0b1036000b1038000b2c0020002002ad4220862001ad84100f2201290000370000200041086a200141086a2900003700002001102e0b1300200041053602042000419ccdc2003602000b3400200041f1fcc60036020420004100360200200041146a4101360200200041106a41b4e4c200360200200041086a42073702000b130020004101360204200041f4e5c2003602000b4b01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280d0dbc3f4023703002000200241101074200241106a24000b13002000410f360204200041c4ebc2003602000b340020004188fec60036020420004100360200200041146a4104360200200041106a41f0aac300360200200041086a42083702000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410841002000109a010b4c01027f230041106b2202240002404114102c22030d001036000b200042143702042000200336020020024200370308200242003703002000200241101074410020001076200241106a24000b7001027f230041d0006b22022400200241063a002802404101102c2203450d002000420137020420002003360200200241003a004f2000200241cf006a41011074024020022d00284101470d00200241306a280200450d002002412c6a280200102e0b200241d0006a24000f0b1036000b840101027f230041d0026b22022400200241ac026a41023a000002404101102c2203450d002000420137020420002003360200200241003a00cf022000200241cf026a41011074024020022d00ac024102460d0002402002411c6a28020041ffffff3f71450d002002280218102e0b200241246a10e3030b200241d0026a24000f0b1036000b930301027f024020002802082201450d0020002802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a280200102e0b0240200241246a2d00004101470d002002412c6a280200450d00200241286a280200102e0b200241c8006a22022001470d000b0b0240200041046a2802002202450d00200241c8006c450d002000280200102e0b024020002d000c4101470d00200041146a280200450d00200041106a280200102e0b024020002d00304101470d00200041386a280200450d00200041346a280200102e0b024020002d00544101470d00200041dc006a280200450d00200041d8006a280200102e0b024020002d00784101470d0020004180016a280200450d00200041fc006a280200102e0b024020002d009c014101470d00200041a4016a280200450d00200041a0016a280200102e0b024020002d00c0014101470d00200041c8016a280200450d00200041c4016a280200102e0b024020002d00e4014101470d00200041ec016a280200450d00200041e8016a280200102e0b0b130020004106360204200041d0b4c3003602000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002411436020c20002002410c6a41041074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280f19384eb053703002000200241101074200241106a24000b4a01027f230041106b2202240002404110102c22030d001036000b200042103702042000200336020020024200370308200242809adbba023703002000200241101074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280fad5d5f2053703002000200241101074200241106a24000bfc0302037f017e230041106b2202240020002802102103200041186a280200220420011076024020044105742204450d00200320046a21040340200220032802003602002001200241041074200341086a200110ea03200341206a22032004470d000b0b200029030021052002200041086a2903003703082002200537030020012002411010742000411c6a200110b7012002200041286a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041cc006a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041f0006a108a012001200228020022032002280208107402402002280204450d002003102e0b200220004194016a108a012001200228020022032002280208107402402002280204450d002003102e0b2002200041b8016a108a012001200228020022032002280208107402402002280204450d002003102e0b02400240200041a4026a2d00004101460d00200241003a000020012002410110740c010b200241013a000020012002410110742001200041a5026a411410740b2002200041dc016a108a012001200228020022032002280208107402402002280204450d002003102e0b200220004180026a108a012001200228020022032002280208107402402002280204450d002003102e0b200241106a24000bd50102017f017e230041106b220224000240024002400240024002400240024020002802000e0700010203040506070b200241003a000020012002410110740c060b200241013a00002001200241011074200029030821032002200041106a2903003703082002200337030020012002411010740c050b200241023a000020012002410110740c040b200241033a000020012002410110740c030b200241043a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b200241106a24000baa0b010a7f230041e0006b22022400200241003a00380240024002400240024002400240024002400240024020012802002203280204220420044100472205490d00200241386a20032802002206200510e9081a2003200420056b3602042003200620056a360200024020040d0041002107200241056a2103200241086a21042002411c6a21050c0a0b41002107200241056a2103200241086a21042002411c6a210520022d003822080e260901010101010101010101010101010101010101010101010101010101010101010102030405010b200041063a00000c090b02402008417f6a220641ff01714121490d00200041063a00000c090b0240024020060d00410121090c010b200610322209450d060b20092001280200220128020020012802042208200620082006491b220a10e908210b20012802042207200a490d0620012007200a6b36020420012001280200200a6a360200410121070240200820064f0d00200b200a6a22014100200b20066a20016b10eb081a0b2006210a0c070b200241386a200110a60141022107200241346a41026a220120022d003b3a0000200241206a41086a2208200241d0006a290300370300200241206a41106a220b200241d8006a2d00003a0000200220022f00393b01342002200241386a41106a29030037032020022d00384101460d03200241386a41086a2802002106200241c4006a280200210a200228023c21092002411c6a41026a20012d00003a0000200241086a41086a2008290300370300200241086a41106a200b2d00003a0000200220022f01343b011c200220022903203703080c060b200241386a200110a601200241346a41026a220120022d003b3a0000200241206a41086a2207200241d0006a290300370300200241206a41106a2208200241d8006a2d00003a0000200220022f00393b01342002200241386a41106a290300370320024020022d00384101460d00200241386a41086a2802002106200241c4006a280200210a200228023c21092002411c6a41026a20012d00003a0000200241086a41086a2007290300370300200241086a41106a20082d00003a0000200220022f01343b011c20022002290320370308410321070c060b200041063a00000c060b200241386a200110a601200241346a41026a220120022d003b3a0000200241206a41086a2207200241d0006a290300370300200241206a41106a2208200241d8006a2d00003a0000200220022f00393b01342002200241386a41106a290300370320024020022d00384101460d00200241386a41086a2802002106200241c4006a280200210a200228023c21092002411c6a41026a20012d00003a0000200241086a41086a2007290300370300200241086a41106a20082d00003a0000200220022f01343b011c20022002290320370308410421070c050b200041063a00000c050b200241386a200110a601200241346a41026a220120022d003b3a0000200241206a41086a2207200241d0006a290300370300200241206a41106a2208200241d8006a2d00003a0000200220022f00393b01342002200241386a41106a290300370320024020022d00384101460d00200241386a41086a2802002106200241c4006a280200210a200228023c21092002411c6a41026a20012d00003a0000200241086a41086a2007290300370300200241086a41106a20082d00003a0000200220022f01343b011c20022002290320370308410521070c040b200041063a00000c040b200041063a00000c030b1036000b200a200741b8b2c0001056000b200020073a0000200020052f00003b00012000410c6a200a360000200041086a2006360000200041046a2009360000200041106a2004290000370000200041216a20032f00003b0000200041036a200541026a2d00003a0000200041186a200441086a290000370000200041206a200441106a2d00003a0000200041236a200341026a2d00003a00000b200241e0006a24000bbe1503097f027e027f23004190016b2202240002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e260601010101010101010101010101010101010101010101010101010101010101010102030405010b200041063a00000c0a0b02402005417f6a41ff01714121490d00200041063a00000c0a0b024002402005417f6a22080d00410121090c010b200810322209450d07200128020421060b20062008490d0520092001280200200810e9081a200128020422042008490d072001200420086b3602042001200128020020086a360200410121072008210a0c040b41002108200241003a00582003417f6a21092003417e6a210302400240034020092008460d01200241386a20086a200420086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00582003417f6a21032005210820054120470d000b200241f4006a41026a220420022d003a22013a00002002418c016a41026a220320013a0000200241f8006a41086a2207200241cf006a290000220b370300200241f8006a41106a2206200241d7006a2d000022013a0000200220022f013822083b0174200220083b018c0120022002290047220c370378200228003b2109200228003f210a20022800432108200241e0006a41106a220d20013a0000200241e0006a41086a220e200b3703002002200c37036041012101200541ff01714120490d01200320042d00003a00002007200e2903003703002006200d2d00003a0000200220022f01743b018c0120022002290360370378410021010c010b0240200841ff0171450d00200241003a00580b410121010b41022107200241346a41026a22042002418c016a41026a2d00003a0000200241206a41086a2203200241f8006a41086a290300370300200241206a41106a2205200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20042d00003a0000200241086a41086a2003290300370300200241086a41106a20052d00003a0000200220022f01343b011c200220022903203703080c040b200041063a00000c080b41002108200241003a00582003417f6a21092003417e6a210302400240034020092008460d01200241386a20086a200420086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00582003417f6a21032005210820054120470d000b200241f4006a41026a220420022d003a22013a00002002418c016a41026a220320013a0000200241f8006a41086a2207200241cf006a290000220b370300200241f8006a41106a2206200241d7006a2d000022013a0000200220022f013822083b0174200220083b018c0120022002290047220c370378200228003b2109200228003f210a20022800432108200241e0006a41106a220d20013a0000200241e0006a41086a220e200b3703002002200c37036041012101200541ff01714120490d01200320042d00003a00002007200e2903003703002006200d2d00003a0000200220022f01743b018c0120022002290360370378410021010c010b0240200841ff0171450d00200241003a00580b410121010b200241346a41026a22042002418c016a41026a2d00003a0000200241206a41086a2203200241f8006a41086a290300370300200241206a41106a2205200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20042d00003a0000200241086a41086a2003290300370300200241086a41106a20052d00003a0000200220022f01343b011c20022002290320370308410321070c030b200041063a00000c070b41002108200241003a00582003417f6a21092003417e6a210302400240034020092008460d01200241386a20086a200420086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00582003417f6a21032005210820054120470d000b200241f4006a41026a220420022d003a22013a00002002418c016a41026a220320013a0000200241f8006a41086a2207200241cf006a290000220b370300200241f8006a41106a2206200241d7006a2d000022013a0000200220022f013822083b0174200220083b018c0120022002290047220c370378200228003b2109200228003f210a20022800432108200241e0006a41106a220d20013a0000200241e0006a41086a220e200b3703002002200c37036041012101200541ff01714120490d01200320042d00003a00002007200e2903003703002006200d2d00003a0000200220022f01743b018c0120022002290360370378410021010c010b0240200841ff0171450d00200241003a00580b410121010b200241346a41026a22042002418c016a41026a2d00003a0000200241206a41086a2203200241f8006a41086a290300370300200241206a41106a2205200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20042d00003a0000200241086a41086a2003290300370300200241086a41106a20052d00003a0000200220022f01343b011c20022002290320370308410421070c020b200041063a00000c060b41002108200241003a00582003417f6a21092003417e6a210302400240034020092008460d01200241386a20086a200420086a220541016a2d00003a0000200120033602042001200541026a3602002002200841016a22053a00582003417f6a21032005210820054120470d000b200241f4006a41026a220420022d003a22013a00002002418c016a41026a220320013a0000200241f8006a41086a2207200241cf006a290000220b370300200241f8006a41106a2206200241d7006a2d000022013a0000200220022f013822083b0174200220083b018c0120022002290047220c370378200228003b2109200228003f210a20022800432108200241e0006a41106a220d20013a0000200241e0006a41086a220e200b3703002002200c37036041012101200541ff01714120490d01200320042d00003a00002007200e2903003703002006200d2d00003a0000200220022f01743b018c0120022002290360370378410021010c010b0240200841ff0171450d00200241003a00580b410121010b200241346a41026a22042002418c016a41026a2d00003a0000200241206a41086a2203200241f8006a41086a290300370300200241206a41106a2205200241f8006a41106a2d00003a0000200220022f018c013b01342002200229037837032020010d042002411c6a41026a20042d00003a0000200241086a41086a2003290300370300200241086a41106a20052d00003a0000200220022f01343b011c20022002290320370308410521070b200020073a0000200020022f011c3b00012000410c6a2008360000200041086a200a360000200041046a2009360000200041106a2002290308370000200041216a20022f00053b0000200041036a2002411c6a41026a2d00003a0000200041186a200241086a41086a290300370000200041206a200241086a41106a2d00003a0000200041236a200241056a41026a2d00003a00000c040b200041063a00002009102e0c030b1036000b2008200441b8b2c0001056000b200041063a00000b20024190016a24000bd61405067f017e027f017e017f23004190016b22022400024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004100210720060e260601010101010101010101010101010101010101010101010101010101010101010102030405010b200041063a00000c0a0b02402006417f6a41ff01714121490d00200041063a00000c0a0b024002402006417f6a22030d00410121040c010b200310322204450d070b200128020022012802042003490d0520042001280200200310e9081a200128020422052003490d072001200520036b3602042001200128020020036a36020041012107200321050c040b41002104200241003a0058024002400340200128020022032802042205450d01200241386a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00582003210420034120470d000b200241f4006a41026a220120022d003a22033a00002002418c016a41026a220620033a0000200241f8006a41086a2207200241cf006a2900002208370300200241f8006a41106a2209200241d7006a2d0000220a3a0000200220022f013822033b0174200220033b018c0120022002290047220b370378200228003b2104200228003f210520022800432103200241e0006a41106a220c200a3a0000200241e0006a41086a220a20083703002002200b370360200620012d00003a0000200220022f01743b018c012009200c2d00003a00002007200a29030037030020022002290360370378410021010c010b0240200441ff0171450d00200241003a00580b410121010b41022107200241346a41026a22062002418c016a41026a2d00003a0000200241206a41086a2209200241f8006a41086a290300370300200241206a41106a220a200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20062d00003a0000200241086a41086a2009290300370300200241086a41106a200a2d00003a0000200220022f01343b011c200220022903203703080c040b200041063a00000c080b41002104200241003a0058024002400340200128020022032802042205450d01200241386a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00582003210420034120470d000b200241f4006a41026a220120022d003a22033a00002002418c016a41026a220620033a0000200241f8006a41086a2207200241cf006a2900002208370300200241f8006a41106a2209200241d7006a2d0000220a3a0000200220022f013822033b0174200220033b018c0120022002290047220b370378200228003b2104200228003f210520022800432103200241e0006a41106a220c200a3a0000200241e0006a41086a220a20083703002002200b370360200620012d00003a0000200220022f01743b018c012009200c2d00003a00002007200a29030037030020022002290360370378410021010c010b0240200441ff0171450d00200241003a00580b410121010b200241346a41026a22062002418c016a41026a2d00003a0000200241206a41086a2207200241f8006a41086a290300370300200241206a41106a2209200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20062d00003a0000200241086a41086a2007290300370300200241086a41106a20092d00003a0000200220022f01343b011c20022002290320370308410321070c030b200041063a00000c070b41002104200241003a0058024002400340200128020022032802042205450d01200241386a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00582003210420034120470d000b200241f4006a41026a220120022d003a22033a00002002418c016a41026a220620033a0000200241f8006a41086a2207200241cf006a2900002208370300200241f8006a41106a2209200241d7006a2d0000220a3a0000200220022f013822033b0174200220033b018c0120022002290047220b370378200228003b2104200228003f210520022800432103200241e0006a41106a220c200a3a0000200241e0006a41086a220a20083703002002200b370360200620012d00003a0000200220022f01743b018c012009200c2d00003a00002007200a29030037030020022002290360370378410021010c010b0240200441ff0171450d00200241003a00580b410121010b200241346a41026a22062002418c016a41026a2d00003a0000200241206a41086a2207200241f8006a41086a290300370300200241206a41106a2209200241f8006a41106a2d00003a0000200220022f018c013b013420022002290378370320024020010d002002411c6a41026a20062d00003a0000200241086a41086a2007290300370300200241086a41106a20092d00003a0000200220022f01343b011c20022002290320370308410421070c020b200041063a00000c060b41002104200241003a0058024002400340200128020022032802042205450d01200241386a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00582003210420034120470d000b200241f4006a41026a220120022d003a22033a00002002418c016a41026a220620033a0000200241f8006a41086a2207200241cf006a2900002208370300200241f8006a41106a2209200241d7006a2d0000220a3a0000200220022f013822033b0174200220033b018c0120022002290047220b370378200228003b2104200228003f210520022800432103200241e0006a41106a220c200a3a0000200241e0006a41086a220a20083703002002200b370360200620012d00003a0000200220022f01743b018c012009200c2d00003a00002007200a29030037030020022002290360370378410021010c010b0240200441ff0171450d00200241003a00580b410121010b200241346a41026a22062002418c016a41026a2d00003a0000200241206a41086a2207200241f8006a41086a290300370300200241206a41106a2209200241f8006a41106a2d00003a0000200220022f018c013b01342002200229037837032020010d042002411c6a41026a20062d00003a0000200241086a41086a2007290300370300200241086a41106a20092d00003a0000200220022f01343b011c20022002290320370308410521070b200020073a0000200020022f011c3b00012000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2002290308370000200041216a20022f00053b0000200041036a2002411c6a41026a2d00003a0000200041186a200241086a41086a290300370000200041206a200241086a41106a2d00003a0000200041236a200241056a41026a2d00003a00000c040b200041063a00002004102e0c030b1036000b2003200541b8b2c0001056000b200041063a00000b20024190016a24000b13002000410436020420004180ccc3003602000b340020004195fec60036020420004100360200200041146a4102360200200041106a41c4f2c300360200200041086a42083702000b130020004103360204200041b4f5c3003602000b4301027f230041106b2202240002404102102c22030d001036000b2000420237020420002003360200200241e4003b010e20002002410e6a41021074200241106a24000b4a01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280a0cb98013703002000200241101074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b200042103702042000200336020020024200370308200242809886abec053703002000200241101074200241106a24000b130020004103360204200041ecffc3003602000b3400200041bad7c70036020420004100360200200041146a4103360200200041106a41c489c400360200200041086a42083702000b2e01017f02404104102c22020d001036000b200042043702042000200236020041002000107620004104410010740b130020004105360204200041d88dc4003602000b4b01027f230041106b22022400200242f0f2bda1a7ee9cb9f90037030802404108102c22030d001036000b20004208370204200020033602002000200241086a41081074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b200042043702042000200336020020024190ce0036020c20002002410c6a41041074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241808c1536020c20002002410c6a41041074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241d0860336020c20002002410c6a41041074200241106a24000b130020004110360204200041989cc4003602000b13002000410e360204200041e4a3c4003602000b130020004102360204200041e4adc4003602000bff0101037f230041d0006b22022400200241f1fcc6004107108102200241106a418ce5c20041081081022002200136022c200241306a2002412c6a410410d803200241cc006a2002412c6a41046a3602002002200241c0006a36024420022002412c6a3602482002200241306a360240200241206a200241c0006a107c024002402002280228220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241d0006a24000f0b1038000b1036000be4810203097f097e187f230041e0116b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e100001020f0e0d0c0b0a09080706050403000b200341940f6a4101360200200342013702840f2003419cc3cb003602800f200341043602c40c20034194c3cb003602c00c2003200341c00c6a3602900f200341800f6a41f89bc4001044000b41022104200341f0046a41026a200141036a2d00003a0000200341c00c6a41086a2205200141146a290000370300200341c00c6a410d6a2206200141196a290000370000200320012f00013b01f00420032001410c6a2900003703c00c200141086a2800002107200141046a280000210820022802282101024002400240024020022d00000e0400010203020b20022d0001210220012001280200417f6a2209360200024020090d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22092009280200417f6a220936020020090d002001102e0b200241ff0171450d024110102c2202450d1a200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1a20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220536020020050d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22052005280200417f6a220536020020050d012002102e0c010b200241046a2d00002109200241086a280200210a2002410c6a280200210b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200941ff01710d00200a410174200b4b0d020b4110102c2202450d19200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1920014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220536020020050d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22052005280200417f6a220536020020050d002002102e0b20012001280200417f6a220236020020020d192001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d192001102e0c1a0b20034190056a108104200341e8016a41086a2005290300370300200341e8016a410d6a2006290000370000200320032f01f0043b0184022003200341f2046a2d00003a008602200320032903c00c3703e8010240200328029805220241134b0d00200341800f6a41086a2204200341e8016a41086a290300370300200341800f6a410d6a2205200341e8016a410d6a290000370000200320032f0184023b01a00c200320032d0086023a00a20c200320032903e8013703800f02400240024002402002200328029405470d00200241016a22012002490d13200241017422062001200620014b1b22014104200141044b1b220141ffffff1f712001464103742106200141067421010240024020020d00200341003602f0090c010b200341f0096a41086a410836020020032003280290053602f009200320024106743602f4090b200341c0076a20012006200341f0096a107d200341c8076a280200210120032802c0074101460d01200320032802c4073602900520032001410676360294050b20032802900520024106746a2201420037030820014201370300200141106a4200370300200141186a4200370300200141206a20032f01a00c3b0100200141226a20032d00a20c3a0000200141276a2007360000200141236a20083600002001412b6a20032903800f370000200141336a2004290300370000200141386a20052900003700002003200241016a220136029805200341f0096a41086a20013602002003200329039005220c3703f009200ca722040d0120034188026a41186a2204420037030020034188026a41106a2205420037030020034188026a41086a220642003703002003420037038802200341800f6a4188fec60041081081022006200341800f6a41086a2207290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220042007290000370300200520032900800f37030020034188026a412010ff010c020b2001450d110c1a0b20034188026a41186a2205420037030020034188026a41106a2206420037030020034188026a41086a220742003703002003420037038802200341800f6a4188fec60041081081022007200341800f6a41086a2208290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220052008290000370300200620032900800f37030020034188026a200341f0096a10820420032802f40941ffffff1f71450d002004102e0b2003418c0f6a2002360200200341880f6a41063a0000200341123a00800f200341800f6a10fe01200320032800c8023602c0112003200341cb026a2800003600c311200041186a41003a0000200041106a2001ad42b0ae157e42c896efc5007c37030020004201370308200020032802c0113600192000411c6a20032800c311360000200042003703000c1b0b200341800f6a410d108304200341880f6a280200210120032802840f210220032802800f210420032802940541ffffff1f71450d19200328029005102e0c190b200341f0096a200141046a41a00210e9081a200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c10220034188026a41086a2201200341c90c6a29000037030020034188026a41106a2202200341d10c6a29000037030020034188026a41186a2204200341d90c6a290000370300200320032900c10c3703880220032d00c00c4101460d11200341c0076a41186a2004290300370300200341c0076a41106a2002290300370300200341c0076a41086a200129030037030020032003290388023703c007024020032802f809220141e4004d0d00200341800f6a410c10830420032f00810f20032d00830f41107472210120032902840f210c20032d00800f21020c130b200341106a2001ad220d420042809adbba02420010e808200341c0116a200341c0076a108404200341800f6a20032802c011220120032802c81110850420034190056a200341800f6a41a40210e9081a200341f0046a41086a2202200341ad116a290000370300200341f0046a41106a2204200341b5116a290000370300200341f0046a41176a2205200341bc116a280000360000200320032900a5113703f004200341106a41086a290300210e2003290310210f20032d00a41122064102460d13200341c8026a20034190056a41a40210e9081a200341a8026a41176a2005280000360000200341a8026a41106a2004290300370300200341a8026a41086a2002290300370300200320032903f0043703a802024020032802c411450d002001102e0b200341800f6a200341c8026a41a40210e9081a200341800f6a41a4026a20063a0000200341a5116a20032903a802370000200341ad116a200341a8026a41086a290300370000200341b5116a200341a8026a41106a290300370000200341bc116a200341bf026a280000360000200341800f6a41186a22012802002106410021072001410036020002402006450d0020032802900f220841086a210a41002109410021074100210402400340024002402007450d00200820044105746a21012008200420096a4105746a210203400240200141086a2205280200417f6a0e06000303030300030b20022001290300370300200241186a200141186a290300370300200241106a200141106a290300370300200241086a2005290300370300200241206a2102200141206a21012006200441016a22044b0d000c040b0b200a20044105746a2101034002402001280200417f6a0e06000202020200020b200141206a21012006200441016a22044b0d000b410021070c030b2009417f6a2109200741016a21072006200441016a22044b0d000b0b024020070d00410021070c010b2008200420076b4105746a200820044105746a200620046b41057410ea081a0b2003200620076b3602980f2003419c0f6a220110e3032001200341f0096a41a00210e9081a200341c00c6a200341800f6a41c00210e9081a200341c00c6a41086a290300211020032903c00c21110c140b200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341c0076a41086a2201200341c90c6a290000370300200341c0076a41106a2202200341d10c6a290000370300200341c0076a41186a2204200341d90c6a290000370300200320032900c10c3703c00702400240024002400240024020032d00c00c4101460d0020034190056a41186a200429030037030020034190056a41106a200229030037030020034190056a41086a2001290300370300200320032903c00737039005200341c0076a20034190056a10d703200341800f6a20032802c007220120032802c8072204108604024020032d00a00f220541064622020d002001200410ff010b20034188026a41086a200341800f6a41086a29030037030020034188026a41106a200341800f6a41106a29030037030020034188026a41186a2204200341800f6a41186a290300370300200341bc076a41026a2206200341a30f6a2d00003a0000200341a00c6a41086a2207200341b40f6a290200370300200341a00c6a41106a2208200341bc0f6a290200370300200320032903800f37038802200320032f00a10f3b01bc072003200341ac0f6a2902003703a00c024020020d00200341a80f6a2802002109200341a40f6a280200210a200341b8016a41086a20034188026a41136a290000370300200341b8016a410d6a22022004290000370000200341b8076a41026a20062d00003a0000200341f0046a41106a2008290300370300200341f0046a41086a2007290300370300200320032d008a023a00ea01200320032f0188023b01e80120032003290093023703b801200320032f01bc073b01b807200320032903a00c3703f004200328008b022104200328008f022106024020032802c407450d002001102e0b200341c00c6a410d6a22012002290000370000200341c00c6a41086a2202200341b8016a41086a290300370300200341b4016a220720032d00ea013a0000200341f0096a41086a22082002290300370300200341f0096a410d6a22022001290000370000200320032f01e8013b01d201200320032903b8013703f009200320032801d0013602b001200320063600c707200320043600c307200320072d00003a00c207200320032f01b2013b01c007200341c0076a41136a2008290300370000200341c0076a41186a2002290000370000200320032903f0093700cb0741012108024020054101470d002009450d00200a102e0b200341e8016a41086a200341a3056a290000370300200341f5016a220120034190056a41186a290000370000200320032f0190053b018402200320032d0092053a0086022003200329009b053703e80120032800930521022003280097052104200341c8026a200341c0076a108704200341800f6a20032802c80220032802d0021088044100210720032802900f22050d024200210e410021064200210c4200210f0c030b024020032802c407450d002001102e0b200341c0116a410f10830420032d00c0114106460d0320032902c411210c0c040b200341023a00c0110c030b20032902940f220c42ffffffff0f83210e200c422088a72106200341880f6a290300210f2003419c0f6a280200210a20032903800f210c200521080b200341cb0c6a2004360000200341cf0c6a20032903e801370000200341d70c6a200341e8016a41086a290300370000200341dc0c6a2001290000370000200320032f0184023b01c40c200320032d0086023a00c60c200320023600c70c2003200341c0076a3602c00c200341c00c6a410472210502402006450d0041002109410021074100210402400340024002402007450d00200820044105746a21012008200420096a4105746a2102034020012005412010ec08450d0220022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a290000370000200241206a2102200141206a21012006200441016a22044b0d000c040b0b200820044105746a2101034020012005412010ec08450d01200141206a21012006200441016a22044b0d000b410021070c030b2009417f6a2109200741016a21072006200441016a22044b0d000b0b024020070d00410021070c010b2008200420076b4105746a200820044105746a200620046b41057410ea081a0b200341800f6a20032802c00c2005200c4280f19384eb05200c4280f19384eb05544100200f501b22011b2210200f420020011b2211410010890420032802c00c2101200341f0096a41186a200541186a290000220d370300200341f0096a41106a200541106a2900002212370300200341f0096a41086a200541086a29000022133703002003200529000022143703f009200341d80f6a2011370300200341d00f6a2010370300200341800f6a41086a41093a0000200341800f6a41096a2014370000200341910f6a2013370000200341990f6a2012370000200341a10f6a200d370000200341a90f6a2001290000370000200341b10f6a200141086a290000370000200341b90f6a200141106a290000370000200341c10f6a200141186a290000370000200341123a00800f200341800f6a10fe01200341940f6a200620076bad422086200e843702002003200f20117d200c201054ad7d3703880f2003200c20107d3703800f2003200a36029c0f200320083602900f20032802c802220120032802d002200341800f6a108a040240200e42ffffff3f83500d002008102e0b024020032802cc02450d002001102e0b200341063a00c0110b4200210c20004200370308200020032800800f360019200041186a41003a00002000411c6a200341830f6a2800003600000c010b20032802c01121012000200c370024200041206a2001360000200041186a41003a0000200042003703084201210c0b2000200c3703000c180b200341e4016a41026a200141076a2d00003a0000200341a8026a41086a200141186a290200370300200341a8026a41106a200141206a2902003703002003200141056a2f00003b01e4012003200141106a2902003703a802200141046a2d00002104200141086a28020021052001410c6a2802002101200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341c0076a41086a2202200341c90c6a290000370300200341c0076a41106a2206200341d10c6a290000370300200341c0076a41186a2207200341d90c6a290000370300200320032900c10c3703c007024002400240024020032d00c00c4101460d00200341c0116a41186a2007290300370300200341c0116a41106a2006290300370300200341c0116a41086a2002290300370300200320032903c0073703c011200341800f6a200341c0116a10840420032802800f220620032802880f108f022102024020032802840f450d002006102e0b024020020d00200341d8016a41061083040c020b200341f0096a41026a2206200341e4016a41026a2d00003a0000200341800f6a41086a2202200341a8026a41086a290300370300200341800f6a41106a2207200341a8026a41106a290300370300200320032f01e4013b01f009200320032903a8023703800f02400240024020040e03020100010b2001450d002005102e0b200320032903c00c3703b801200341013a00d8010c030b200341c00c6a410d6a2204200341800f6a410d6a290000370000200341c00c6a41086a22082002290300370300200341b8016a41086a22092008290300370300200341b8016a410d6a22082004290000370000200320032f01f0093b01e801200320032903800f3703b801200320062d00003a00ea01200320032d00ea013a00ca02200320032f01e8013b01c802200320013600cf02200320053600cb02200341c8026a41186a2008290000370000200341c8026a41136a2009290300370000200320032903b8013700d302200341c0076a200341c8026a10d703200341800f6a20032802c007220120032802c80710860420034188026a41086a200229030037030020034188026a41106a200729030037030020034188026a41186a2202200341800f6a41186a290300370300200341bc076a41026a200341a30f6a2d00003a0000200341a00c6a41086a200341b40f6a290200370300200341a00c6a41106a200341bc0f6a290200370300200320032903800f37038802200320032f00a10f3b01bc072003200341ac0f6a2902003703a00c0240024020032d00a00f22044106460d00200341a80f6a2802002109200341a40f6a280200210a200341e8016a41086a220520034188026a41136a290000370300200341e8016a410d6a2002290000370000200341b8076a41026a200341bc076a41026a2d00003a0000200341f0046a41106a200341a00c6a41106a290300370300200341f0046a41086a200341a00c6a41086a290300370300200320032d008a023a008602200320032f0188023b01840220032003290093023703e801200320032f01bc073b01b807200320032903a00c3703f004200328008b022102200328008f022106024020032802c407450d002001102e0b200341c00c6a410d6a2201200341e8016a410d6a290000370000200341c00c6a41086a22072005290300370300200341b4016a220520032d0086023a0000200341f0096a41086a22082007290300370300200341f0096a410d6a22072001290000370000200320032f0184023b01d201200320032903e8013703f009200320032801d0013602b00120032006360097052003200236009305200320052d00003a009205200320032f01b2013b019005200341a3056a2008290300370000200341a8056a2007290000370000200320032903f00937009b05024020044101470d002009450d00200a102e0b20034190056a200341c0116a412010ec08450d01200341d8016a41101083040c040b024020032802c407450d002001102e0b200341d8016a410f1083040c030b200341800f6a200341c8026a10d70320032802800f220120032802880f10ff01024020032802840f450d002001102e0b200341c0076a41186a200341c8026a41186a290300220c370300200341c0076a41106a200341c8026a41106a2903002210370300200341c0076a41086a200341c8026a41086a290300220f370300200341c0076a41286a200341c0116a41086a2903002211370300200341c0076a41306a200341c0116a41106a290300220e370300200341c0076a41386a200341c0116a41186a290300220d370300200320032903c80222123703c007200320032903c01122133703e007200341f0096a41386a2201200d370300200341f0096a41306a2202200e370300200341f0096a41286a22042011370300200341f0096a41206a22082013370300200341f0096a41186a220a200c370300200341f0096a41106a220b2010370300200341f0096a41086a2215200f370300200320123703f009200341a00c6a20034190056a108704200341800f6a20032802a00c220920032802a80c2216108804410021060240024020032802900f22070d004200211141012107410021054200210c420021100c010b20032902940f220c42ffffffff0f832111200c422088a72105200341800f6a41086a29030021102003419c0f6a280200211720032903800f210c0b200341c00c6a41386a2001290300370300200341c00c6a41306a2002290300370300200341c00c6a41286a2004290300370300200341c00c6a41206a2008290300370300200341c00c6a41186a200a290300370300200341c00c6a41106a200b290300370300200341c00c6a41086a2015290300370300200320032903f0093703c00c02402005450d0041002108410021064100210402400340024002402006450d00200720044105746a21012007200420086a4105746a210203402001200341c00c6a412010ec08450d0220022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a290000370000200241206a2102200141206a21012005200441016a22044b0d000c040b0b200720044105746a210103402001200341c00c6a412010ec08450d01200141206a21012005200441016a22044b0d000b410021060c030b2008417f6a2108200641016a21062005200441016a22044b0d000b0b024020060d00410021060c010b2007200420066b4105746a200720044105746a200520046b41057410ea081a0b20034190016a200341e00c6a200c4280f19384eb05200c4280f19384eb055441002010501b22011b220f2010420020011b220e10fb01200341d80f6a200e370300200341d00f6a200f370300200341800f6a41086a41083a0000200341890f6a20032903c00c370000200341910f6a200341c00c6a41086a290300370000200341990f6a200341d00c6a290300370000200341a10f6a200341d80c6a290300370000200341a90f6a20032903e00c370000200341b10f6a200341e80c6a290300370000200341b90f6a200341f00c6a290300370000200341c10f6a200341f80c6a290300370000200341123a00800f200341800f6a10fe01200341940f6a200520066bad42208620118437020020032010200e7d200c200f54ad7d3703880f2003200c200f7d3703800f2003201736029c0f200320073602900f20092016200341800f6a108a040240201142ffffff3f83500d002007102e0b024020032802a40c450d002009102e0b200341063a00d8010c030b200341023a00d8010b20044102470d002001450d002005102e0b20032d00d8014106460d0020032802d8012101200020032902dc01370024200041206a2001360000200041186a41003a000020004200370308200042013703000c180b20004200370308200020032800a001360019200041186a41003a00002000411c6a200341a3016a280000360000200042003703000c170b200341a0016a41026a2209200141076a2d00003a0000200341c8026a41086a220a200141186a290200370300200341c8026a41106a220b200141206a2902003703002003200141056a2f00003b01a0012003200141106a2902003703c802200141046a2d00002104200141086a28020021072001410c6a2802002106200341d8016a41026a2001412b6a2d00003a000020034190056a41086a2001413c6a29020037030020034190056a41106a200141c4006a2902003703002003200141296a2f00003b01d8012003200141346a29020037039005200141286a2d000021052001412c6a2802002108200141306a2802002101200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a2215200241106a290200370300200341800f6a41086a2216200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341c0076a41086a2202200341c90c6a290000370300200341c0076a41106a2217200341d10c6a290000370300200341c0076a41186a2218200341d90c6a290000370300200320032900c10c3703c0070240024002400240024020032d00c00c4101460d00200341f0096a41186a2018290300370300200341f0096a41106a2017290300370300200341f0096a41086a2002290300370300200320032903c0073703f009200341a00c6a41026a20092d00003a0000200320032f01a0013b01a00c2016200a2903003703002015200b290300370300200320032903c8023703800f0240024020040e03030100010b2006450d002007102e0b200320032903c0073703b801200341013a00c0110c020b200341023a00c0110240200541ff01714101470d002001450d002008102e0b20044102470d022006450d022007102e0c020b200341c0076a410d6a2202200341800f6a410d6a290000370000200341c0076a41086a2204200341800f6a41086a290300370300200341b8016a41086a22092004290300370300200341b8016a410d6a22042002290000370000200320032f01a00c3b01e801200320032903800f3703b8012003200341a20c6a2d00003a00ea01200320032d00ea013a00c20c200320032f01e8013b01c00c200320063600c70c200320073600c30c200341d80c6a2004290000370000200341d30c6a2009290300370000200320032903b8013700cb0c200341800f6a200341f0096a10840420032802800f220420032802880f108f022102024020032802840f450d002004102e0b024020020d00200341c0116a41061083040c010b200341c0076a200341c00c6a10d703200341800f6a20032802c007220420032802c80710860420034188026a41086a200341800f6a41086a29030037030020034188026a41106a200341800f6a41106a29030037030020034188026a41186a2206200341800f6a41186a290300370300200341bc076a41026a2207200341a30f6a2d00003a0000200341a00c6a41086a2209200341b40f6a290200370300200341a00c6a41106a220a200341bc0f6a290200370300200320032903800f37038802200320032f00a10f3b01bc072003200341ac0f6a2902003703a00c0240024020032d00a00f22024106460d00200341a80f6a280200210b200341a40f6a2802002115200341e8016a41086a20034188026a41136a290000370300200341f5016a22162006290000370000200341b8076a41026a20072d00003a0000200341f0046a41106a200a290300370300200341f0046a41086a2009290300370300200320032d008a023a008602200320032f0188023b01840220032003290093023703e801200320032f01bc073b01b807200320032903a00c3703f004200328008b022106200328008f022107024020032802c407450d002004102e0b200341a10f6a20032f01b8073b0000200341800f6a41136a200341e8016a41086a290300370000200341980f6a2016290000370000200341a30f6a200341ba076a2d00003a0000200320032d0086023a00820f200320032f0184023b01800f200320073600870f200320063600830f200320032903e80137008b0f200320023a00a00f200341a80f6a200b360200200341a40f6a2015360200200341ac0f6a20032903f004370200200341b40f6a200341f0046a41086a290300370200200341bc0f6a20034180056a290300370200200341800f6a200341f0096a412010ec082104024020024101470d00200b450d002015102e0b20040d01200341a10f6a20032f01d8013b0000200341a80f6a2001360200200341a40f6a2008360200200341ac0f6a200329039005370200200341800f6a41186a200341f0096a41186a290300370300200341800f6a41106a200341f0096a41106a290300370300200341800f6a41086a200341f0096a41086a290300370300200341a30f6a200341da016a2d00003a0000200341b40f6a20034190056a41086a290300370200200341bc0f6a20034190056a41106a290300370200200320032903f0093703800f200320053a00a00f200341c0076a200341c00c6a10d70320032802c007220120032802c807200341800f6a108b04024020032802c407450d002001102e0b024020032d00a00f4101470d0020032802a80f450d0020032802a40f102e0b200341063a00c0110c040b20032802c407450d002004102e0b200341c0116a41101083040b200541ff01714101470d002001450d002008102e0b20032d00c0114106460d0020032802c0112101200020032902c411370024200041206a2001360000200041186a41003a000020004200370308200042013703000c170b20004200370308200020032800a802360019200041186a41003a00002000411c6a200341ab026a280000360000200042003703000c160b200341b0016a41026a2209200141076a2d00003a0000200341c0116a41086a220a200141186a290200370300200341c0116a41106a220b200141206a2902003703002003200141056a2f00003b01b0012003200141106a2902003703c011200141046a2d00002105200141086a28020021072001410c6a2802002106200341d0016a41026a2001412b6a2d00003a0000200341c8026a41086a2001413c6a290200370300200341c8026a41106a200141c4006a2902003703002003200141296a2f00003b01d0012003200141346a2902003703c802200141286a2d000021042001412c6a2802002108200141306a2802002101200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a2215200241106a290200370300200341800f6a41086a2216200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341c0076a41086a2202200341c90c6a290000370300200341c0076a41106a2217200341d10c6a290000370300200341c0076a41186a2218200341d90c6a290000370300200320032900c10c3703c007024002400240024020032d00c00c4101460d0020034190056a41186a201829030037030020034190056a41106a201729030037030020034190056a41086a2002290300370300200320032903c00737039005200341c0076a41026a20092d00003a0000200320032f01b0013b01c0072016200a2903003703002015200b290300370300200320032903c0113703800f0240024020050e03030100010b2006450d002007102e0b200320032903c00c3703b801200341013a00d8010c020b200341023a00d8010240200441ff01714101470d002001450d002008102e0b20054102470d022006450d022007102e0c020b200341c00c6a410d6a2202200341800f6a410d6a290000370000200341c00c6a41086a2205200341800f6a41086a290300370300200341b8016a41086a22092005290300370300200341b8016a410d6a22052002290000370000200320032f01c0073b01e801200320032903800f3703b8012003200341c2076a2d00003a00ea01200320032d00ea013a00f209200320032f01e8013b01f009200320063600f709200320073600f309200341880a6a2005290000370000200341830a6a2009290300370000200320032903b8013700fb09200341800f6a20034190056a10840420032802800f220520032802880f108f022102024020032802840f450d002005102e0b024020020d00200341d8016a41061083040c010b200341800f6a200341f0096a10d70320032802800f220520032802880f108f022102024020032802840f450d002005102e0b02402002450d00200341d8016a410e1083040c010b200341b8016a41026a220b200341d0016a41026a2d00003a0000200341e8016a41086a2215200341fb096a220241086a290000370300200341e8016a410d6a22162002410d6a290000370000200320032f01d0013b01b801200320032f01f0093b018402200320032d00f2093a008602200320022900003703e801200341c0076a41086a2217200341c8026a41086a290300370300200341c0076a41106a2218200341c8026a41106a290300370300200320032903c8023703c007200341a8026a20034190056a108704200341800f6a20032802a802220a20032802b00222191088040240024020032802900f22020d004200210c410021094101210241002105420021100c010b20032902940f220c422088a72105200ca72109200341800f6a41086a29030021102003419c0f6a280200211a20032903800f210c0b200341cc0c6a2001360200200341c00c6a41086a2008360200200341c00c6a41106a20032903c007370300200341d80c6a2017290300370300200341e00c6a2018290300370300200341ea0c6a20032d0086023a0000200320043a00c40c200320032f01b8013b00c50c2003200b2d00003a00c70c200320032f0184023b01e80c200320034190056a3602c00c200341ef0c6a2006360000200341eb0c6a2007360000200341f30c6a20032903e801370000200341fb0c6a2015290300370000200341800d6a201629000037000002400240024002400240200541e400490d00200341f0046a41011083040c010b200341800f6a20034190056a4280f19384eb05420010c302024020032d00800f22064106470d00200341800f6a41186a20034190056a41186a290300370300200341800f6a41106a20034190056a41106a290300370300200341800f6a41086a20034190056a41086a290300370300200341800f6a41286a200341c00c6a410472220141086a290200370300200341b00f6a200141106a290200370300200341b80f6a200141186a290200370300200341c00f6a200141206a28020036020020032003290390053703800f200320012902003703a00f200341a00c6a200341c00c6a41286a10d70320032802a00c220120032802a80c200341800f6a108b04024020032802a40c450d002001102e0b200341e80c6a2101024020032d00a00f4101470d00200341a80f6a280200450d00200341a40f6a280200102e0b20034188026a41186a2206200141186a220729020037030020034188026a41106a2208200141106a220b29020037030020034188026a41086a2215200141086a22162902003703002003200129020037038802024020052009470d00200941016a22042009490d11200941017422172004201720044b1b22044104200441044b1b220441ffffff3f712004462117200441057421040240024020090d00200341003602800f0c010b200341880f6a4101360200200320023602800f200320094105743602840f0b200341a00c6a20042017200341800f6a107d200341a80c6a2802002104024020032802a00c4101470d0020040d1b0c120b20032802a40c2102200441057621090b200220054105746a2204200329038802370000200441186a2006290300370000200441106a2008290300370000200441086a201529030037000020032802c00c2104200341d80f6a4200370300200341d00f6a4280f19384eb05370300200341800f6a41086a41073a0000200341890f6a2001290000370000200341910f6a2016290000370000200341990f6a200b290000370000200341a10f6a2007290000370000200341a90f6a2004290000370000200341b10f6a200441086a290000370000200341b90f6a200441106a290000370000200341c10f6a200441186a290000370000200341123a00800f200341800f6a10fe01200341063a00f004427f2010200c4280f19384eb057c220f200c542201ad7c221120012011201054200f200c5a1b22011b2110427f200f20011b210c200541016a21050c020b20032d00830f210720032f00810f210b200320032902840f3702f404200320063a00f0042003200b20074110747222063b00f104200320064110763a00f3040b0240200441ff01714101470d002001450d002008102e0b20032d00f0044106470d010b200341940f6a2005ad4220862009ad843702002003200c3703800f2003201a36029c0f200320023602900f200320103703880f0240024020020d00200a201910ff010c010b200a2019200341800f6a108a042002450d00200941ffffff3f71450d002002102e0b200341d8016a41086a200341f0046a41086a280200360200200320032903f0043703d8010c010b200341d8016a41086a200341f0046a41086a280200360200200320032903f0043703d801200941ffffff3f71450d002002102e0b20032802ac02450d01200a102e0c010b200441ff01714101470d002001450d002008102e0b024020032d00d8014106460d0020032802d8012101200020032902dc01370024200041206a2001360000200041186a41003a000020004200370308200042013703000c160b20004200370308200020032800a001360019200041186a41003a00002000411c6a200341a3016a280000360000200042003703000c150b200341b0016a41026a2207200141076a2d00003a0000200341a00c6a41086a2208200141186a290200370300200341a00c6a41106a2209200141206a2902003703002003200141056a2f00003b01b0012003200141106a2902003703a00c2001410c6a2802002104200141086a2802002106200141046a2d0000210520022802282101024002400240024002400240024020022d00000e0400010203020b20022d0001210220012001280200417f6a220a3602000240200a0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a220a200a280200417f6a220a360200200a0d002001102e0b200241ff0171450d024110102c2202450d17200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1720014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d012002102e0c010b200241046a2d0000210a200241086a280200210b2002410c6a280200211520012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200b41017420154b0d020b4110102c2202450d16200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1620014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b4102210120054102470d012004450d012006102e0c010b200341f0096a41026a20072d00003a0000200341800f6a41086a2008290300370300200341800f6a41106a2009290300370300200320032f01b0013b01f009200320032903a00c3703800f4101210102400240024020050e03000201020b200341c0076a41026a200341f0096a41026a2d00003a0000200341c00c6a41086a200341800f6a41086a290300370300200341c00c6a410d6a200341800f6a410d6a290000370000200320032f01f0093b01c007200320032903800f3703c00c410021010c010b2004450d002006102e0b2003419b026a200341c00c6a41086a29030037000020034188026a41186a2202200341cd0c6a290000370000200320032f01c0073b0188022003200436008f022003200636008b02200320032903c00c370093022003200341c2076a2d00003a008a02024020010d00200341c0116a41186a2002290300370300200341c0116a41106a20034188026a41106a290300370300200341c0116a41086a20034188026a41086a29030037030020032003290388023703c011200341c00c6a200341c0116a108704200341800f6a20032802c00c220220032802c80c22041088040240024020032802900f22010d00410121050c010b2002200410ff01200121050b20032903800f211020032902940f210c200341880f6a2903002111024020032802c40c450d002002102e0b200341b8016a200341c0116a108404200341800f6a20032802b801220220032802c0012206108504024020032d00a411220741024622040d002002200610ff010b200c420020011b210f20034190056a200341800f6a41a40210e9081a200341f0046a41176a2206200341bc116a280000360000200341f0046a41106a2208200341b5116a290000370300200341f0046a41086a2209200341ad116a290000370300200320032900a5113703f004024020040d00200341c8026a20034190056a41a40210e9081a200341a8026a41176a2006280000360000200341a8026a41106a2008290300370300200341a8026a41086a2009290300370300200320032903f0043703a802024020032802bc01450d002002102e0b2010420020011b210e2011420020011b210d200341f0096a41066a200341c8026a41a40210e9081a200341c0076a200341f0096a41aa0210e9081a20034188026a41176a2201200341a8026a41176a28000036000020034188026a41106a2202200341a8026a41106a29030037030020034188026a41086a2204200341a8026a41086a290300370300200320032903a80237038802200341c00c6a200341c0076a41066a41a40210e9081a200341c00c6a41a4026a20073a0000200341e50e6a200329038802370000200341ed0e6a2004290300370000200341f50e6a2002290300370000200341fc0e6a2001280000360000200341c00c6a41086a290300211220032903c00c211120032802d00c210602400240200341d80c6a280200220741057422020d004200210c420021100c010b200641106a21014200210c420021100340200141086a2903004200200141786a29030042015122041b20107c2001290300420020041b2210200c7c220c201054ad7c2110200141206a2101200241606a22020d000b0b2012200d7c2011200e7c220e201154ad7c20107c200e200c7c220d200e54ad7c210e0240200f4220882212a72201450d0020014105742102200521010340200341800f6a200110d70320032802800f220420032802880f10ff01024020032802840f450d002004102e0b200141206a2101200241606a22020d000b0b200341f0006a200341c0116a200d200e10cb022003290370210c2003200341f0006a41086a29030022103703880f2003200c3703800f200c2010844200520d032003200341800f6a3602f009200341f0096a10cc020c040b024020032802bc01450d002002102e0b200341800f6a4103108304200320032900810f3703e8012003200341880f6a2800003600ef0120032d00800f2101200f42ffffff3f83500d012005102e0c010b410121010b200320032800a0013602d001200320032903e8013703d801200320032800ef013600df012003200341a3016a2800003600d301200041186a41003a000020004200370308200020032802d0013600192000411c6a20032800d301360000200041206a20013a0000200020032903d801370021200041286a20032800df01360000200042013703000c160b200342f0f2bda1a7ee9cb9f9003703f009200341800f6a200341f0096a10cd02200341e0006a200341800f6a200c201010fd01200341800a6a200341e0006a41086a290300221320107d20032903602211200c54ad7d201020137d200c201154ad7d2011200c56201320105620132010511b22011b37030020032011200c7d200c20117d20011b3703f80920032001ad3703f009200341f0096a41086a21020240024020010d00200320023602c007200341c0076a10cc020c010b200320023602c007200341c0076a10ce020b200341980f6a2010370300200341900f6a200c370300200341880f6a41063a00002003410e3a00800f200341800f6a10fe010b200341b80f6a200e370300200341b00f6a200d370300200341800f6a41086a41023a0000200341890f6a20032903c011370000200341910f6a200341c0116a41086a290300370000200341990f6a200341d0116a290300370000200341a10f6a200341d8116a290300370000200341123a00800f200341800f6a10fe012007ad42e0d4037e201242f0fb8d017e7c200341e40c6a35020042e8077e7c20124280c2d72f7e7c210c200341dc0c6a21010240200341d40c6a28020041ffffff3f71450d002006102e0b200c4288babcd6017c210c200110e3030240200f42ffffff3f83500d002005102e0b200320032800a0013602d0012003200341a3016a2800003600d301200041186a41003a0000200041106a200c37030020004201370308200020032802d0013600192000411c6a20032800d301360000200042003703000c140b200141c0006a2903002110200141386a290300210f200141306a290300210c200141046a280200211741022104200341bc076a41026a22072001410b6a2d00003a0000200341b8016a41086a22082001411c6a290200370300200341b8016a41106a2209200141246a2902003703002003200141096a2f00003b01bc072003200141146a2902003703b801200141086a2d000021052001410c6a2802002106200141106a2802002101200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a220a200241106a290200370300200341800f6a41086a220b200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341e8016a41086a2215200341c00c6a41146a290200370300200341f5016a2216200341d90c6a290000370000200320032f00c10c3b018402200320032d00c30c3a0086022003200341c00c6a410c6a2902003703e80141012102024002400240024002400240024002400240024020032d00c00c4101460d00200341c00c6a41086a280200210420032802c40c2118200341a00c6a41136a2015290300370000200341a00c6a41186a2016290000370000200320032d0086023a00a20c200320032f0184023b01a00c200320043600a70c200320183600a30c200320032903e8013700ab0c200341f0096a41026a20072d00003a0000200320032f01bc073b01f009200b2008290300370300200a2009290300370300200320032903b8013703800f02400240024020050e03000201020b200341c0076a41026a200341f0096a41026a2d00003a0000200341c00c6a41086a200341800f6a41086a290300370300200341c00c6a410d6a200341800f6a410d6a290000370000200320032f01f0093b01c007200320032903800f3703c00c410021020c010b2001450d002006102e0b20034188026a41136a200341c00c6a41086a29030037000020034188026a41186a2204200341cd0c6a290000370000200320032f01c0073b0188022003200136008f022003200636008b02200320032903c00c370093022003200341c2076a2d00003a008a0220020d02200341c0116a41186a2004290300370300200341c0116a41106a20034188026a41106a290300370300200341c0116a41086a20034188026a41086a29030037030020032003290388023703c011200c4201520d01200341800f6a4109108304200320032900810f3703d8012003200341880f6a2800003600df0120032d00800f21040c030b20054102470d022001450d022006102e0c020b200341c00c6a10810420032802c00c210102400240024020032802c80c20174d0d00200120174106746a22022903004201520d00200241206a200341a00c6a412010ec080d00024020032802c40c41ffffff1f71450d002001102e0b200341e8016a200341c0116a108404200341800f6a20032802e801220120032802f00110850420034190056a200341800f6a41a40210e9081a200341f0046a41086a2202200341ad116a290000370300200341f0046a41106a2204200341b5116a290000370300200341f0046a41176a2205200341bc116a280000360000200320032900a5113703f004024020032d00a41122064102460d00200341c8026a20034190056a41a40210e9081a200341a8026a41176a2005280000360000200341a8026a41106a2004290300370300200341a8026a41086a2002290300370300200320032903f0043703a802024020032802ec01450d002001102e0b200341f0096a41066a200341c8026a41a40210e9081a200341c0076a200341f0096a41aa0210e9081a20034188026a41176a2201200341a8026a41176a28000036000020034188026a41106a2202200341a8026a41106a29030037030020034188026a41086a2204200341a8026a41086a290300370300200320032903a80237038802200341c00c6a200341c0076a41066a41a40210e9081a200341c00c6a41a4026a20063a0000200341e50e6a200329038802370000200341ed0e6a2004290300370000200341f50e6a2002290300370000200341fc0e6a20012800003600004100210120032802d00c2106200341c00c6a41186a28020022070e020803020b024020032802ec01450d002001102e0b200341800f6a410b108304200320032900810f3703d8012003200341880f6a2800003600df0120032d00800f21040c040b200341800f6a410a108304200320032900810f3703d8012003200341880f6a2800003600df0120032d00800f210420032802c40c41ffffff1f71450d032001102e0c030b4100210120072102034020012002410176220420016a2205200620054105746a28020020174b1b2101200220046b220241014b0d000c040b0b4100210120062102200628020022042017470d030c060b410121040b200320032800d0013602b001200320032903d8013703a001200320032800df013600a7012003200341d3016a2800003600b301200041186a41003a000020004200370308200020032802b0013600192000411c6a20032800b301360000200041206a20043a0000200020032903a001370021200041286a20032800a701360000200042013703000c190b200620014105746a220228020022042017460d020b200120042017496a21010b200341800f6a41186a2010370300200341800f6a41106a200f3703002003200c3703880f200320173602800f200341c00c6a41106a2001200341800f6a10ba0120032802d80c21070c020b200720014b0d00200120074180afc400103c000b200620014105746a220141086a2104024020012903084201520d00200341800f6a200341c0116a200341a00c6a200141106a290300200141186a29030041001089040b2004200c37030020022017360200200141186a2010370300200141106a200f3703000b200341e40c6a350200210c200341800f6a200341c00c6a41c00210e9081a200341c0076a200341c0116a10840420032802c807210220032802c0072101200341003602f809200342013703f009200341800f6a200341f0096a10e9032001200220032802f009220420032802f80910b201024020032802f409450d002004102e0b024020032802c407450d002001102e0b0240200341940f6a28020041ffffff3f71450d0020032802900f102e0b200341800f6a411c6a10e303200341800f6a41086a41053a0000200341890f6a20032903c011370000200341910f6a200341c0116a41086a290300370000200341990f6a200341c0116a41106a290300370000200341a10f6a200341c0116a41186a290300370000200341ac0f6a2017360200200341123a00800f200341800f6a10fe01200320032800d0013602b0012003200341d3016a2800003600b301200041186a41003a0000200041106a2007ad42c08b117e200c42e8fcd6007e7c42a8d793d9007c37030020004201370308200020032802b0013600192000411c6a20032800b301360000200042003703000c130b200141086a290300210c200141046a2802002104200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341e8016a41086a2201200341d40c6a290200370300200341f5016a2202200341d90c6a290000370000200320032f00c10c3b018402200320032d00c30c3a0086022003200341cc0c6a2902003703e8010240024020032d00c00c4101460d00200341c00c6a41086a280200210520032802c40c2106200341830a6a2001290300370000200341f0096a41186a2002290000370000200320032d0086023a00f209200320032f0184023b01f009200320053600f709200320063600f309200320032903e8013700fb09200341c0076a1081040240024020032802c807220120044d0d0020032802c007220520044106746a22022903004201520d00200241206a200341f0096a412010ec080d00200520044106746a200c370318410021020c010b200341800f6a410a108304024020032d00800f22024106470d00410021020c010b20032902840f210c20032f00810f20032d00830f411074724108742002722101410121020b200341c00c6a41086a200341c0076a41086a280200360200200320032903c00722103703c00c024002402010a722040d00200341a0026a2204420037030020034198026a2205420037030020034188026a41086a220642003703002003420037038802200341800f6a4188fec60041081081022006200341800f6a41086a2207290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220042007290000370300200520032900800f37030020034188026a412010ff010c010b200341a0026a2205420037030020034198026a2206420037030020034188026a41086a220742003703002003420037038802200341800f6a4188fec60041081081022007200341800f6a41086a2208290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220052008290000370300200620032900800f37030020034188026a200341c00c6a10820420032802c40c41ffffff1f71450d002004102e0b20020d0120032003280090053602c802200320034193056a2800003600cb02200041186a41003a0000200041106a2001ad42f0f5127e4290ddb83f7c37030020004201370308200020032802c8023600192000411c6a20032800cb02360000200042003703000c140b410221010b20032003280090053602c802200320034193056a2800003600cb02200041186a41003a000020004200370308200020032802c8023600192000411c6a20032800cb02360000200041246a200c370200200041206a2001360200200042013703000c120b200141246a280200210541022104200341a00c6a41026a2206200141036a2d00003a0000200341c0076a41086a2207200141146a290000370300200341c0076a410d6a2208200141196a290000370000200320012f00013b01a00c20032001410c6a2900003703c007200141046a2800002109200141086a280000210a200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341b8016a41086a2201200341c00c6a41146a290200370300200341b8016a410d6a2202200341c00c6a41196a290000370000200320032f00c10c3b01e801200320032d00c30c3a00ea012003200341c00c6a410c6a2902003703b8010240024020032d00c00c4101460d00200341c00c6a41086a280200210420032802c40c210b200341830a6a2001290300370000200341f0096a41186a2002290000370000200320032d00ea013a00f209200320032f01e8013b01f009200320043600f7092003200b3600f309200320032903b8013700fb0920034190056a108104200341e8016a41086a2007290300370300200341e8016a410d6a2008290000370000200320032f01a00c3b018402200320062d00003a008602200320032903c0073703e80102400240200328029805220420054d0d0020032802900520054106746a22012903004201520d002003419b026a200341e8016a41086a29030037000020034188026a41186a2202200341f5016a290000370000200320032d0086023a008a02200320032f0184023b0188022003200a36008f022003200936008b02200320032903e80137009302200141206a2201200341f0096a412010ec080d002001200329038802370200200141186a2002290300370200200141106a20034188026a41106a290300370200200141086a20034188026a41086a290300370200410021010c010b200341800f6a410a108304024020032d00800f22014106470d00410021010c010b20032902840f210c20032f00810f20032d00830f411074724108742001722104410121010b200341c00c6a41086a20034190056a41086a280200360200200320032903900522103703c00c024002402010a722020d00200341a0026a2202420037030020034198026a2205420037030020034188026a41086a220642003703002003420037038802200341800f6a4188fec60041081081022006200341800f6a41086a2207290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220022007290000370300200520032900800f37030020034188026a412010ff010c010b200341a0026a2205420037030020034198026a2206420037030020034188026a41086a220742003703002003420037038802200341800f6a4188fec60041081081022007200341800f6a41086a2208290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220052008290000370300200620032900800f37030020034188026a200341c00c6a10820420032802c40c41ffffff1f71450d002002102e0b20010d01200320032800c8023602c0112003200341cb026a2800003600c311200041186a41003a0000200041106a2004ad42f89c137e42a8adef3f7c37030020004201370308200020032802c0113600192000411c6a20032800c311360000200042003703000c130b0b200320032800c8023602c0112003200341cb026a2800003600c311200041186a41003a000020004200370308200020032802c0113600192000411c6a20032800c311360000200041246a200c370200200041206a2004360200200042013703000c110b200141106a290300210c200141086a2903002110200141046a2802002104200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341e8016a41086a2201200341d40c6a290200370300200341f5016a2202200341d90c6a290000370000200320032f00c10c3b018402200320032d00c30c3a0086022003200341cc0c6a2902003703e8010240024020032d00c00c4101460d00200341c00c6a41086a280200210520032802c40c2106200341830a6a2001290300370000200341f0096a41186a2002290000370000200320032d0086023a00f209200320032f0184023b01f009200320053600f709200320063600f309200320032903e8013700fb09200341c0076a1081040240024020032802c807220120044d0d0020032802c00720044106746a22022903004201520d00200241206a200341f0096a412010ec080d00200241086a220220103703002002200c370308410021020c010b200341800f6a410a108304024020032d00800f22024106470d00410021020c010b20032902840f210c20032f00810f20032d00830f411074724108742002722101410121020b200341c00c6a41086a200341c0076a41086a280200360200200320032903c00722103703c00c024002402010a722040d00200341a0026a2204420037030020034198026a2205420037030020034188026a41086a220642003703002003420037038802200341800f6a4188fec60041081081022006200341800f6a41086a2207290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220042007290000370300200520032900800f37030020034188026a412010ff010c010b200341a0026a2205420037030020034198026a2206420037030020034188026a41086a220742003703002003420037038802200341800f6a4188fec60041081081022007200341800f6a41086a2208290000370300200320032900800f37038802200341800f6a41b0afc300410a10810220052008290000370300200620032900800f37030020034188026a200341c00c6a10820420032802c40c41ffffff1f71450d002004102e0b20020d0120032003280090053602c802200320034193056a2800003600cb02200041186a41003a0000200041106a2001ad42a0e6127e42e0efb73f7c37030020004201370308200020032802c8023600192000411c6a20032800cb02360000200042003703000c120b410221010b20032003280090053602c802200320034193056a2800003600cb02200041186a41003a000020004200370308200020032802c8023600192000411c6a20032800cb02360000200041246a200c370200200041206a2001360200200042013703000c100b200141046a2802002106200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c10220034188026a41086a2201200341c90c6a29000037030020034188026a41106a2202200341d10c6a29000037030020034188026a41186a2204200341d90c6a290000370300200320032900c10c3703880202400240024002400240024002400240024020032d00c00c4101460d00200341c0116a41186a2004290300370300200341c0116a41106a2002290300370300200341c0116a41086a200129030037030020032003290388023703c011200341a00c6a200341c0116a108404200341800f6a20032802a00c220120032802a80c10850420034190056a200341800f6a41a40210e9081a200341f0046a41086a200341ad116a290000370300200341f0046a41106a200341b5116a290000370300200341f0046a41176a2202200341bc116a280000360000200320032900a5113703f004024020032d00a41122044102460d00200341c8026a20034190056a41a40210e9081a200341a8026a41176a2002280000360000200341a8026a41106a2202200341f0046a41106a290300370300200341a8026a41086a2205200341f0046a41086a290300370300200320032903f0043703a802024020032802a40c450d002001102e0b200341f0096a41066a200341c8026a41a40210e9081a200341c0076a200341f0096a41aa0210e9081a20034188026a41176a2201200341a8026a41176a28000036000020034188026a41106a2207200229030037030020034188026a41086a22022005290300370300200320032903a80237038802200341c00c6a200341c0076a41066a41a40210e9081a200341c00c6a41a4026a20043a0000200341e50e6a200329038802370000200341ed0e6a2002290300370000200341f50e6a2007290300370000200341fc0e6a200128000036000020032802d00c2107200341d80c6a28020022080e020403020b024020032802a40c450d002001102e0b200341800f6a4106108304200320032900810f3703b8012003200341880f6a2800003600bf0120032d00800f21010c070b410221010c060b4100210120082102034020012002410176220420016a2205200720054105746a28020020064b1b2101200220046b220241014b0d000b200720014105746a2802002006470d01200820014d0d020c030b4100210120072802002006460d020b200341800f6a4102108304200320032900810f3703b8012003200341880f6a2800003600bf010c020b200120081046000b200720014105746a220241186a2903002110200241106a290300210f2002290308210c2002200241206a20082001417f736a41057410ea081a20032008417f6a22013602d80c200c4201510d02200341800f6a4108108304200320032900810f3703b8012003200341800f6a41086a2800003600bf010b20032d00800f21010240200341d40c6a28020041ffffff3f71450d002007102e0b200341dc0c6a10e3030b200320032800d8013602a001200320032903b8013703e801200320032800bf013600ef012003200341db016a2800003600a301200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200041206a20013a0000200020032903e801370021200041286a20032800ef01360000200042013703000c100b200341d0006a200341c0116a200f201010fb01200341e40c6a350200210c200341800f6a200341c00c6a41c00210e9081a200341c0076a200341c0116a10840420032802c807210420032802c0072102200341003602f809200342013703f009200341800f6a200341f0096a10e9032002200420032802f009220520032802f80910b201024020032802f409450d002005102e0b024020032802c407450d002002102e0b0240200341940f6a28020041ffffff3f71450d0020032802900f102e0b200341800f6a411c6a10e303200341800f6a41086a41043a0000200341890f6a20032903c011370000200341910f6a200341c0116a41086a290300370000200341990f6a200341c0116a41106a290300370000200341a10f6a200341c0116a41186a290300370000200341ac0f6a2006360200200341123a00800f200341800f6a10fe01200320032800d8013602a0012003200341db016a2800003600a301200041186a41003a0000200041106a2001ad4288800d7e200c42c0b6d6007e7c42e8dfb4d4007c37030020004201370308200020032802a0013600192000411c6a20032800a301360000200042003703000c0f0b200141106a290300210c200141086a2903002110200141046a2802002101200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c10220034188026a41086a2202200341c90c6a29000037030020034188026a41106a2204200341d10c6a29000037030020034188026a41186a2205200341d90c6a290000370300200320032900c10c37038802024002400240024002400240024002400240024002400240024020032d00c00c4101460d00200341c0116a41186a2005290300370300200341c0116a41106a2004290300370300200341c0116a41086a200229030037030020032003290388023703c011200341b8016a10810420032802b801210420032802c00120014d0d01200420014106746a22022903004201520d0102402002290308201056200241106a2903002210200c562010200c511b450d00200341800f6a410510830420032f00810f20032d00830f4110747221010c0b0b200341a00c6a200341c0116a108404200341800f6a20032802a00c220520032802a80c10850420034190056a200341800f6a41a40210e9081a200341f0046a41086a200341ad116a290000370300200341f0046a41106a200341b5116a290000370300200341f0046a41176a2206200341bc116a280000360000200320032900a5113703f00402400240024020032d00a41122074102460d00200241086a2109200341c8026a20034190056a41a40210e9081a200341a8026a41176a2006280000360000200341a8026a41106a2202200341f0046a41106a290300370300200341a8026a41086a2206200341f0046a41086a290300370300200320032903f0043703a802024020032802a40c450d002005102e0b200341f0096a41066a200341c8026a41a40210e9081a200341c0076a200341f0096a41aa0210e9081a20034188026a41176a2205200341a8026a41176a28000036000020034188026a41106a2208200229030037030020034188026a41086a22022006290300370300200320032903a80237038802200341c00c6a200341c0076a41066a41a40210e9081a200341c00c6a41a4026a20073a0000200341e50e6a200329038802370000200341ed0e6a2002290300370000200341f50e6a2008290300370000200341fc0e6a2005280000360000200941086a290300210c200929030021104100210220032802d00c2108200341c00c6a41186a280200220a0e020702010b024020032802a40c450d002005102e0b200341800f6a410610830420032f00810f20032d00830f4110747221010c0c0b41002102200a2105034020022005410176220620026a2207200820074105746a28020020014b1b2102200520066b220541014b0d000c040b0b4100210220082106200828020022052001470d030c060b410221020c0b0b200341800f6a410410830420032f00810f20032d00830f4110747221010c080b200820024105746a220628020022052001460d020b200220052001496a21020b200341800f6a41186a200c370300200341900f6a2010370300200342013703880f200320013602800f200341c00c6a41106a2002200341800f6a10ba010c020b200a20024b0d002002200a41f0aec400103c000b02400240200820024105746a2202280208417f6a0e06000101010100010b200341800f6a410710830420032f00810f20032d00830f41107472210120032902840f210c20032d00800f21020c020b200241086a420137030020062001360200200241186a200c370300200241106a20103703000b200341800f6a200341c0116a2009290300200941086a29030010c30220032d00800f22024106460d0120032f00810f20032d00830f41107472210120032902840f210c0b0240200341d40c6a28020041ffffff3f71450d0020032802d00c102e0b200341dc0c6a10e3030c020b200341e40c6a350200210c20033502d80c2110200341800f6a200341c00c6a41c00210e9081a200341c0076a200341c0116a10840420032802c807210520032802c0072102200341003602f809200342013703f009200341800f6a200341f0096a10e9032002200520032802f009220620032802f80910b201024020032802f409450d002006102e0b024020032802c407450d002002102e0b0240200341940f6a28020041ffffff3f71450d0020032802900f102e0b200341800f6a411c6a10e303200341800f6a41086a41033a0000200341890f6a20032903c011370000200341910f6a200341c0116a41086a290300370000200341990f6a200341c0116a41106a290300370000200341a10f6a200341c0116a41186a290300370000200341ac0f6a2001360200200341123a00800f201042e0a4137e200c4290c3d7007e7c42c8a3e7e2007c210c200341800f6a10fe01024020032802bc0141ffffff1f71450d002004102e0b200320032800e8013602d8012003200341e8016a41036a2800003600db01200041186a41003a0000200041106a200c37030020004201370308200020032802d8013600192000411c6a20032800db01360000200042003703000c110b20032902840f210c20032d00800f21020b20032802bc0141ffffff1f71450d002004102e0b200320032800e8013602d8012003200341eb016a2800003600db01200041236a20014110763a0000200020013b0021200041186a41003a000020004200370308200020032802d8013600192000411c6a20032800db013600002000200c370024200041206a20023a0000200042013703000c0e0b200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c10220034188026a41086a2201200341c90c6a29000037030020034188026a41106a2202200341d10c6a29000037030020034188026a41186a2204200341d90c6a290000370300200320032900c10c37038802410121050240024020032d00c00c4101460d00200341c0116a41186a2004290300370300200341c0116a41106a2002290300370300200341c0116a41086a200129030037030020032003290388023703c011200341c00c6a200341c0116a108704200341800f6a20032802c00c220220032802c80c2204108804024020032802900f2201450d002002200410ff01200121050b20032903800f211020032902940f210c200341880f6a2903002111024020032802c40c450d002002102e0b200341a00c6a200341c0116a108404200341800f6a20032802a00c220220032802a80c2206108504024020032d00a411220741024622040d002002200610ff010b200c420020011b210f20034190056a200341800f6a41a40210e9081a200341f0046a41176a2206200341bc116a280000360000200341f0046a41106a2208200341b5116a290000370300200341f0046a41086a2209200341ad116a290000370300200320032900a5113703f004024020040d00200341c8026a20034190056a41a40210e9081a200341a8026a41176a2006280000360000200341a8026a41106a2008290300370300200341a8026a41086a2009290300370300200320032903f0043703a802024020032802a40c450d002002102e0b2010420020011b210e2011420020011b210d200341f0096a41066a200341c8026a41a40210e9081a200341c0076a200341f0096a41aa0210e9081a20034188026a41176a2201200341a8026a41176a28000036000020034188026a41106a2202200341a8026a41106a29030037030020034188026a41086a2204200341a8026a41086a290300370300200320032903a80237038802200341c00c6a200341c0076a41066a41a40210e9081a200341c00c6a41a4026a20073a0000200341e50e6a200329038802370000200341ed0e6a2004290300370000200341f50e6a2002290300370000200341fc0e6a2001280000360000200341c00c6a41086a290300211220032903c00c211120032802d00c210602400240200341d80c6a280200220741057422020d004200210c420021100c010b200641106a21014200210c420021100340200141086a2903004200200141786a29030042015122041b20107c2001290300420020041b2210200c7c220c201054ad7c2110200141206a2101200241606a22020d000b0b2012200d7c2011200e7c220e201154ad7c20107c200e200c7c220c200e54ad7c21100240200f4220882211a72201450d0020014105742102200521010340200341800f6a200110d70320032802800f220420032802880f10ff01024020032802840f450d002004102e0b200141206a2101200241606a22020d000b0b200341c0006a200341c0116a200c201010fb01200341b80f6a2010370300200341b00f6a200c370300200341800f6a41086a41013a0000200341890f6a20032903c011370000200341910f6a200341c0116a41086a290300370000200341990f6a200341d0116a290300370000200341a10f6a200341d8116a290300370000200341123a00800f200341800f6a10fe012007ad42a084097e201142b0ba8e017e7c200341e40c6a35020042d8ac2d7e7c20114280c2d72f7e7c210c200341dc0c6a21010240200341d40c6a28020041ffffff3f71450d002006102e0b200c42d0faca90017c210c200110e3030240200f42ffffff3f83500d002005102e0b200320032800d8013602a0012003200341db016a2800003600a301200041186a41003a0000200041106a200c37030020004201370308200020032802a0013600192000411c6a20032800a301360000200042003703000c100b024020032802a40c450d002002102e0b200341800f6a4103108304200320032900810f3703b8012003200341880f6a2800003600bf0120032d00800f2101200f42ffffff3f83500d012005102e0c010b410221010b200320032800d8013602a001200320032903b8013703e801200320032800bf013600ef012003200341db016a2800003600a301200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200041206a20013a0000200020032903e801370021200041286a20032800ef01360000200042013703000c0d0b2001410c6a2802002107200141086a2802002108200141046a280200211b200341800f6a41286a200241286a280200360200200341800f6a41206a200241206a290200370300200341800f6a41186a200241186a290200370300200341800f6a41106a200241106a290200370300200341800f6a41086a200241086a290200370300200320022902003703800f200341c00c6a200341800f6a10c102200341b8016a41086a2201200341d40c6a290200370300200341c5016a2202200341d90c6a290000370000200320032f00c10c3b01e801200320032d00c30c3a00ea012003200341c00c6a410c6a2902003703b801024020032d00c00c4101460d00200341c00c6a41086a280200210420032802c40c2105200341d3076a2001290300370000200341c0076a41186a2002290000370000200320032d00ea013a00c207200320032f01e8013b01c007200320043600c707200320053600c307200320032903b8013700cb07200341800f6a200341c0076a10840420032802800f220220032802880f108f022101024020032802840f450d002002102e0b024020010d00200341800f6a410210830420032f00810f20032d00830f4110747221040c040b0240200741e500490d00200341800f6a410110830420032f00810f20032d00830f4110747221040c040b200341c00c6a200341c0076a108704200341800f6a20032802c00c220120032802c80c108804200341800f6a41086a290300210f20032802900f211c20032903800f211020032902940f210c024020032802c40c450d002001102e0b200c4200201c1b210d201c4101201c1b211d200341306a2007ad42004280f19384eb05420010e808200341306a41086a29030021112003290330210e0240200741c4006c2205450d00200341ac0f6a2101200341a10f6a2104200341800f6a410b6a210a20034188026a410b6a210b201b21020340200341c00c6a200210d703200341800f6a20032802c00c220920032802c80c10860420034188026a41086a200341800f6a41086a29030037030020034188026a41106a200341800f6a41106a29030037030020034188026a41186a200341800f6a41186a290300370300200341bc076a41026a2215200441026a22162d00003a0000200341a00c6a41086a2217200141086a2218290000370300200341a00c6a41106a2219200141106a221a290000370300200320032903800f37038802200320042f00003b01bc07200320012900003703a00c0240024020032d00a00f22064106460d0020032802a80f211e20032802a40f211f200341e8016a41086a2220200b41086a290000370300200341e8016a410d6a2221200b410d6a290000370000200341b8076a41026a222220152d00003a0000200341f0046a41106a22152019290300370300200341f0046a41086a22192017290300370300200320032d008a023a008602200320032f0188023b018402200320032f01bc073b01b807200320032903a00c3703f0042003200b2900003703e801200328008b022117200328008f022123024020032802c40c450d002009102e0b200a20032903e801370000200420032f01b8073b0000200a41086a2020290300370000200a410d6a2021290000370000201620222d00003a0000200320032d0086023a00820f200320032f0184023b01800f200320233600870f200320173600830f200320063a00a00f200120032903f00437000020182019290300370000201a20152903003700002003201e3602a80f2003201f3602a40f200341800f6a200341c0076a412010ec082109024020064101470d00201e450d00201f102e0b2009450d01200341800f6a410e10830420032f00810f20032d00830f41107472210420032902840f210c20032d00800f21050c060b20032802c40c450d002009102e0b200241c4006a2102200541bc7f6a22050d000b0b0240024020104200201c1b2210200e5a200f4200201c1b220c20115a200c20115122011b0d00200341800f6a200341c0076a200e20107d2011200c7d200e201054ad7d10c30220032d00800f22054106460d0120032f00810f20032d00830f41107472210420032902840f210c0c040b2010200e58200c20115820011b0d00200341206a200341c0076a2010200e7d200c20117d2010200e54ad7d10fb010b0240200d4220882212a72201450d0020014105742102201d21010340200341800f6a200110d70320032802800f220420032802880f10ff01024020032802840f450d002004102e0b200141206a2101200241606a22020d000b0b200741c4006c220441c4006d220141ffffff3f712001470d0120014105742202417f4c0d010240024020020d00410121240c010b2002102c2224450d0b0b02400240024002402002410576222520014f0d00200241047622052001200520014b1b22054104200541044b1b220541ffffff3f712005462106200541057421050240024020020d00200341003602800f0c010b200341880f6a4101360200200320023602840f200320243602800f0b200341c00c6a20052006200341800f6a107d200341c80c6a280200210220032802c00c4101460d0120032802c40c2124200241057621250b201b20046a2226201b470d0141002106201b21050c020b20020d0c0c030b2007410274417c6a41027641016a2127200341800f6a41216a210441002106200341c00c6a411f6a2107201b21012024210202400340200141186a290200210c200141176a2d00002109200141166a2d0000210a200141146a2f0100210b200141136a2d00002115200141126a2d00002116200141106a2f010021172001410f6a2d000021182001410e6a2d000021192001410c6a2f0100211a2001410b6a2d0000211e2001410a6a2d0000211f200141086a2f01002120200141076a2d00002121200141066a2d00002122200141046a2f01002123200141036a2d0000211c200141026a2d00002128200141206a2d0000210520012f010021292007200141c0006a280000360000200341c00c6a41186a222a200141396a290000370300200341c00c6a41106a222b200141316a290000370300200341c00c6a41086a222c200141296a2900003703002003200141216a2900003703c00c024020054106470d00200141c4006a21050c020b2003200c3703880a200320093a00870a2003200a3a00860a2003200b3b01840a200320153a00830a200320163a00820a200320173b01800a200320183a00ff09200320193a00fe092003201a3b01fc092003201e3a00fb092003201f3a00fa09200320203b01f809200320213a00f709200320223a00f609200320233b01f4092003201c3a00f309200320283a00f209200320293b01f009200341800f6a41186a200341c0076a41186a290300370300200341800f6a41106a200341c0076a41106a290300370300200341800f6a41086a200341c0076a41086a290300370300200420032903c00c370000200441086a202c290300370000200441106a202b290300370000200441186a202a2903003700002004411f6a2007280000360000200320032903c0073703800f200320053a00a00f20034190056a200341f0096a10d7032003280290052205200328029805200341800f6a108b040240200328029405450d002005102e0b024020032d00a00f4101470d0020032802a80f450d0020032802a40f102e0b200341f0096a41086a290300210c200341f0096a41106a290300211020032903f009210f200241186a200341f0096a41186a290300370000200241106a2010370000200241086a200c3700002002200f370000200641016a2106200241206a2102200141c4006a22012026470d000b20262105202721060b202620056b220441c4006d21010b02402004450d00200141c4006c2102200541286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102e0b200141c4006a2101200241bc7f6a22020d000b0b02402008450d00200841c4006c450d00201b102e0b0240024020060d00200341800f6a200341c0076a10870420032802800f220120032802880f10ff01024020032802840f450d002001102e0b201242e0aa8e017e20124280c2d72f7e7c4290cf9fb8017c210c2025450d012024102e0c010b200341f0096a200341c0076a10870420064105744114722201417f4c0d0220032802f809210520032802f00921042001102c2202450d0b200341003602c80c200320013602c40c200320023602c00c200320113703880f2003200e3703800f200341c00c6a200341800f6a411010742006200341c00c6a107620064105742102202421010340200341c00c6a200141201074200141206a2101200241606a22020d000b2004200520032802c00c220120032802c80c10b201024020032802c40c450d002001102e0b024020032802f409450d002004102e0b02402025450d002024102e0b201242e0aa8e017e20124280c2d72f7e7c2006ad220c42b8fea8037e200c42c0f0f50b7e7c200c4280c2d72f7e7c7c4290cf9fb8017c210c0b0240200d42ffffff3f83500d00201d102e0b200320032800c8023602c0112003200341cb026a2800003600c311200041186a41003a0000200041106a200c37030020004201370308200020032802c0113600192000411c6a20032800c311360000200042003703000c0d0b410221050c030b1038000b200d42ffffff3f83500d01201d102e0c010b20032902840f210c20032d00800f21050b02402007450d00200741c4006c2102201b41286a210103400240200141786a2d00004101470d002001280200450d002001417c6a280200102e0b200141c4006a2101200241bc7f6a22020d000b0b02402008450d00200841c4006c450d00201b102e0b200320032800c8023602c0112003200341cb026a2800003600c311200041236a20044110763a0000200020043b0021200041186a41003a000020004200370308200020032802c0113600192000411c6a20032800c3113600002000200c370024200041206a20053a0000200042013703000c080b410221020b200341f0096a10e3030c020b024020032802c411450d002001102e0b200341d80c6a410036020042002111200342003703c80c200342003703c00c200342083703d00c200341dc0c6a200341f0096a41a00210e9081a420021100b2003200f4280fad5d5f2057c220c3703c00c2003200e200c200f54ad7c220f3703c80c0240200c201158200f201058200f20105122011b0d00200341800f6a200341c0076a200c20117d200f20107d200c201154ad7d10c30220032d00800f22024106460d0020032d00830f411074210120032f00810f210420032902840f210c0240200341d40c6a28020041ffffff3f71450d0020032802d00c102e0b20042001722101200341dc0c6a10e3030c010b02402011200c582010200f5820011b0d002003200341c0076a2011200c7d2010200f7d2011200c54ad7d10fb010b200341d80c6a350200210c200341800f6a200341c00c6a41c00210e9081a200341c8026a200341c0076a10840420032802d002210220032802c802210120034100360298052003420137039005200341800f6a20034190056a10e90320012002200328029005220420032802980510b2010240200328029405450d002004102e0b024020032802cc02450d002001102e0b0240200341940f6a28020041ffffff3f71450d0020032802900f102e0b200341800f6a411c6a10e303200341800f6a41086a41003a0000200341890f6a20032903c007370000200341910f6a200341c0076a41086a290300370000200341990f6a200341c0076a41106a290300370000200341a10f6a200341c0076a41186a290300370000200341123a00800f200341800f6a10fe01200320032800a00c3602b8012003200341a30c6a2800003600bb01200041186a41003a0000200041106a200c4288f70f7e200d4280aec4007e7c4280e7a9d6007c37030020004201370308200020032802b8013600192000411c6a20032800bb01360000200042003703000c040b200320032800a00c3602b8012003200341a30c6a2800003600bb01200041236a20014110763a0000200020013b0021200041186a41003a000020004200370308200020032802b8013600192000411c6a20032800bb013600002000200c370024200041206a20023a0000200042013703000c030b1036000b0b200320032800c8023602c0112003200341cb026a2800003600c311200041186a41003a000020004200370308200020032802c0113600192000411c6a20032800c311360000200041286a2001360200200041246a2002360200200041206a2004360200200042013703000b200341e0116a24000bca0a06067f017e037f017e047f067e230041f0016b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a4188fec6004108108102200141c8016a41b0afc300410a1081022002200141c8016a41086a290000370300200320012900c8013703002001412036022c2001200141086a360228200141306a200141086a412010ed02024002400240200128023022040d00410021030c010b200128023421052001200141306a41086a280200360244200120043602402001200141c0006a10ab010240024020012802000d00024002402001280204220620012802444106762202200220064b1b22024106742203417f4c0d000240024020020d00410821030c010b2003102c2203450d060b2002ad2107024002402006450d00200141c8016a4101722108034020012802442202450d04200128024022092d0000210a20012002417f6a3602442001200941016a3602404200210b02400240200a0e020100060b200141c8016a200141c0006a10930120012d00c8014101460d05200141a8016a41186a220c200841186a290000370300200141a8016a41106a220d200841106a290000370300200141a8016a41086a220e200841086a290000370300200120082900003703a801200128024422024110490d0520012001280240220941106a220a3602402001200241706a220f360244200f4108490d05200941086a2900002110200929000021112001200241686a3602442001200a41086a360240200a290000220b4280025a0d0520014188016a41186a200c29030037030020014188016a41106a200d29030037030020014188016a41086a200e290300370300200120012903a80137038801200b42ff018321124201210b0b200141e8006a41186a20014188016a41186a2903002213370300200141e8006a41106a20014188016a41106a2903002214370300200141e8006a41086a20014188016a41086a2903002215370300200141c8006a41086a22092015370300200141c8006a41106a220a2014370300200141c8006a41186a220f20133703002001200129038801221337036820012013370348024020074220882213a722022007a7470d00200241016a220c2002490d042002410174220d200c200c200d491b220c4104200c41044b1b220c41ffffff1f71200c46410374210d200c410674210c0240024020020d00200141003602c8010c010b200141083602d001200120033602c801200120134206863e02cc010b200141a8016a200c200d200141c8016a107d20012802b001210c20012802a8014101460d0320012802ac012103200742808080807083200c410676ad8421070b200320024106746a220220113703082002200b370300200241106a2010370300200241186a2012370300200241206a2001290348370300200241286a2009290300370300200241306a200a290300370300200241386a200f29030037030020074280808080107c21072006417f6a22060d000b0b2003450d030c040b200c0d050b1038000b0240200742ffffff1f83500d002003102e0b0b41002103200141003602b001200142013703a8012001410a36028c012001200141286a360288012001200141a8016a360268200141dc016a4101360200200142013702cc01200141909dc5003602c801200120014188016a3602d801200141e8006a419cebc000200141c8016a103d1a20012802a80120012802b00110ef0220012802ac01450d0020012802a801102e0b2005450d002004102e0b0240024020030d0020004100360208200042083702000c010b20002007370204200020033602000b200141f0016a24000f0b1036000b8b0101047f230041106b2202240002400240200128020822034106744104722204417f4c0d00200128020021012004102c2205450d01200241003602082002200436020420022005360200200320021076200120032002109a012000412020022802002201200228020810b20102402002280204450d002001102e0b200241106a24000f0b1038000b1036000bd80301047f230041c0006b2202240041bbebc2002103410f21044108210502400240024002400240024002400240024002400240024002400240024002400240200141ff01710e11000102030405060708090a0b0c0d0e0f10000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a4198a6cc001044000b41a9ebc200210341122105410021040c0e0b418be7c400210341012104410821050c0d0b41a1ebc200210341022104410821050c0c0b4197ebc2002103410a2105410321040c0b0b418debc2002103410a2105410421040c0a0b4183ebc2002103410a2105410521040c090b41f4eac2002103410f2105410621040c080b41e6eac2002103410e2105410721040c070b41d6eac200210341102105410821040c060b41caeac2002103410c2105410921040c050b41bdeac2002103410d2105410a21040c040b41b0eac2002103410d2105410b21040c030b419feac200210341112105410c21040c020b41faa0c5002103410e2105410d21040c010b4199eac200210341062105410e21040b20004183383b0100200041086a2005360200200041046a2003360200200041026a20043a0000200241c0006a24000bb40201037f230041e0006b22022400200241086a4188fec6004108108102200241186a41d0adc300410a108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000baa37050e7f027e017f027e247f230041f0086b220324002003200236021c20032001360218200341206a2001200210ed0202400240200328022022040d00200041023a00a4020c010b200328022421052003200341206a41086a2802003602bc02200320043602b8022003200341b8026a3602e805200341106a200341e8056a10d8040240024020032802100d004108210602400240200328021422074180012007418001491b2208450d002008410574102c2206450d010b024002400240024002400240024020070d00410021070c010b20034198086a41106a210920034198086a41046a210a20034198086a41086a210b4100210c4100210d4100210e0340200341003602980820034198086a20032802b802220f20032802bc022201410420014104491b220210e9081a2003200120026b22013602bc022003200f20026a220f3602b802024020034198086a20026a2210200a460d0020104100410420026b10eb081a0b2003350298082111200341003a0098070240200120014100472202490d0020034198076a200f200210e9081a2003200120026b22103602bc022003200f20026a22023602b80202400240024020010d00420021120c010b4200211202400240024002400240024020032d0098070e0707000102030405080b20034198086a2010411020104110491b22016a41004100411020016b22132001410f4b1b10eb08210f20034198086a2002200110e9081a2003201020016b3602bc022003200220016a3602b8020240200f2009460d00200f4100201310eb081a0b200b29030021142003290398082115420121120c060b420221120c040b420321120c030b420421120c020b420521120c010b420621120b0b0240200e2008470d00200d200e41016a2201200d20014b1b22014104200141044b1b220141ffffff3f7120014641037421022001410574210102400240200e0d0020034100360298080c010b200341083602a0082003200c36029c0820032006360298080b200341f0076a2001200220034198086a107d20032802f8072101024020032802f0074101470d002001450d050c0a0b20032802f4072106200141057621080b2006200c6a22012011370300200141186a2014370300200141106a2015370300200141086a2012370300200c41206a210c200d41026a210d2007200e41016a220e460d020c010b0b410221010240200841ffffff3f710d000c090b2006102e0c080b2006450d06200341a0086a220e4200370300200342003703980820034198086a20032802b802220c20032802bc022202411020024110491b220110e9081a2003200220016b3602bc022003200c20016a3602b802024020014110460d0020034198086a20016a4100411020016b10eb081a0b200e29030021152003290398082112200341086a200341e8056a10d80420032802080d0302400240200328020c220c4138200c4138491b22020d004104210e0c010b200241c8006c102c220e450d060b0240200c0d004100210c0c020b200341f0076a410c6a2116200341f0076a4101722117410021104100210d0340200341f0076a200341e8056a10eb0302400240024020032d00f007220f4106460d00200341c8056a41026a2209201741026a2d00003a0000200341d8076a41086a220b201641086a290200370300200341d8076a41106a2213201641106a290200370300200320172f00003b01c805200320162902003703d80720032802f407210a20032802f807210120034198086a200341e8056a10eb0320032d0098084106470d01200f4101470d002001450d00200a102e0b4106210f0c010b200341a8056a41026a20092d00003a0000200341c0076a41086a200b290300370300200341c0076a41106a201329030037030020034198076a41086a20034198086a41086a29030037030020034198076a41106a20034198086a41106a29030037030020034198076a41186a20034198086a41186a29030037030020034198076a41206a20034198086a41206a280200360200200320032f01c8053b01a805200320032903d8073703c007200320032903980837039807200a2118200121190b20034188056a41026a2201200341a8056a41026a2d00003a000020034180076a41086a220a200341c0076a41086a29030037030020034180076a41106a2209200341c0076a41106a290300370300200341d8066a41086a220b20034198076a41086a290300370300200341d8066a41106a221320034198076a41106a290300370300200341d8066a41186a221a20034198076a41186a290300370300200341d8066a41206a221b20034198076a41206a280200360200200320032f01a8053b018805200320032903c0073703800720032003290398073703d8060240200f4106460d00200341e8046a41026a221c20012d00003a0000200341c0066a41086a221d200a290300370300200341c0066a41106a220a200929030037030020034198066a41086a2209200b29030037030020034198066a41106a220b201329030037030020034198066a41186a2213201a29030037030020034198066a41206a221a201b280200360200200320032f0188053b01e80420032003290380073703c006200320032903d806370398060240200d2002470d00200241016a22012002490d032002410174221b2001201b20014b1b22014104200141044b1bad42c8007e2214422088a74541027421012014a7211b0240024020020d0020034100360298080c010b200341043602a0082003200e360298082003200241c8006c36029c080b200341f0076a201b200120034198086a107d20032802f8072101024020032802f0074101470d0020010d090c040b20032802f407210e200141c8006e21020b200e20106a2201200f3a0000200141086a2019360000200141046a2018360000200141036a201c2d00003a0000200141016a20032f01e8043b00002001410c6a20032903c006370000200141146a201d2903003700002001411c6a200a290300370000200141346a200b2903003700002001412c6a20092903003700002001413c6a2013290300370000200141246a200329039806370000200141c4006a201a280200360000201041c8006a2110200c200d41016a220d460d030c010b0b0240200d450d00200e20106a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200c200141c8006a2201470d000b0b2002450d03200241c8006c0d020c030b1038000b200e450d0120034198086a200341e8056a10eb03024020032d00980822104106460d00200341ec056a41026a20032d009b083a000020034180076a41086a200341ac086a220129020037030020034180076a41106a200341b4086a220f290200370300200320032f0099083b01ec052003200341a4086a220d2902003703800720034198086a41086a2213280200210a200328029c08210920034198086a200341e8056a10eb03024020032d009808220b4106460d00200341f0056a41026a20032d009b083a0000200341c0076a41086a2001290200370300200341c0076a41106a200f290200370300200320032f0099083b01f0052003200d2902003703c00720132802002113200328029c08211a20034198086a200341e8056a10eb03024020032d009808221b4106460d00200341f4056a41026a20032d009b083a0000200341d8076a41086a200341ac086a2201290200370300200341d8076a41106a200341b4086a220f290200370300200320032f0099083b01f4052003200341a4086a220d2902003703d80720034198086a41086a2218280200211c200328029c08211d20034198086a200341e8056a10eb03024020032d00980822164106460d00200341f8056a41026a20032d009b083a000020034198066a41086a200129020037030020034198066a41106a200f290200370300200320032f0099083b01f8052003200d2902003703980620182802002118200328029c08211920034198086a200341e8056a10eb03024020032d00980822174106460d00200341fe056a20032d009b083a0000200341d8066a41086a200341ac086a290200370300200341e8066a200341b4086a290200370300200320032f0099083b01fc052003200341a4086a2902003703d80620034198086a41086a280200211e200328029c08211f200341003a009808024020032802e805222028020422012001410047220d490d0020034198086a20202802002221200d10e9081a20202001200d6b220f36020420202021200d6a22213602000240024020010d00410021010c010b41002101024020032d0098080e020100020b200341003a00ac084100212202400340200341003a009807200f200f4100472201490d01202241016a210d20034198076a2021200110e9081a2020200f20016b22233602042020202120016a22213602000240200f0d00200341003a0098070b20034198086a20226a20032d0098073a00002003200d3a00ac082023210f200d2122200d4114470d000b200341f0076a41086a20034198086a41086a290300370300200341f0076a41106a20034198086a41106a28020036020020032003290398083703f007410121010c010b202241ff0171450d01200341003a00ac080c010b20034180066a41106a200341f0076a41106a28020036020020034180066a41086a200341f0076a41086a290300370300200320032903f0073703800620034198086a200341e8056a10eb0320032d00980822204106460d0020034194066a41026a220f20032d009b083a000020034198076a41086a200341ac086a29020037030020034198076a41106a200341b4086a290200370300200320032f0099083b0194062003200341a4086a2902003703980720034198086a41086a2802002121200328029c08212220034198086a200341e8056a10eb0320032d0098084106470d0820204101470d002021450d002022102e0b20174101470d00201e450d00201f102e0b20164101470d002018450d002019102e0b201b4101470d00201c450d00201d102e0b200b4101470d002013450d00201a102e0b20104101470d00200a450d002009102e0b0240200c450d00200e200c41c8006c6a210c200e21010340024020012d00004101470d00200141086a280200450d00200141046a280200102e0b0240200141246a2d00004101470d002001412c6a280200450d00200141286a280200102e0b200141c8006a2201200c470d000b0b2002450d01200241c8006c450d010b200e102e0b200841ffffff3f71450d022006102e410221010c030b200341f0076a41206a20034198086a41206a280200360200200341f0076a41186a20034198086a41186a290300370300200341f0076a41106a20034198086a41106a220d290300370300200341f0076a41086a20034198086a41086a2223290300370300200341e4056a41026a200341ec056a41026a2d00003a0000200341c0066a41086a20034180076a41086a290300370300200341c0066a41106a20034180076a41106a29030037030020032003290398083703f007200320032f01ec053b01e40520032003290380073703c006200341e0056a41026a200341f0056a41026a2d00003a0000200320032f01f0053b01e005200341c8056a41106a200341c0076a41106a290300370300200341c8056a41086a200341c0076a41086a290300370300200320032903c0073703c805200341c4056a41026a200341f4056a41026a2d00003a0000200320032f01f4053b01c405200341a8056a41106a200341d8076a41106a290300370300200341a8056a41086a200341d8076a41086a290300370300200320032903d8073703a805200341a4056a41026a200341f8056a41026a2d00003a0000200320032f01f8053b01a40520034188056a41106a20034198066a41106a29030037030020034188056a41086a20034198066a41086a29030037030020032003290398063703880520034184056a41026a200341fc056a41026a2d00003a0000200320032f01fc053b018405200341e8046a41106a200341d8066a41106a290300370300200341e8046a41086a200341d8066a41086a290300370300200320032903d8063703e804200d20034180066a41106a280200360200202320034180066a41086a290300370300200320032903800637039808200341e4046a41026a200f2d00003a0000200320032f0194063b01e404200341c8046a41106a20034198076a41106a290300370300200341c8046a41086a20034198076a41086a29030037030020032003290398073703c8040c020b1036000b410221010b200341c4046a41026a200341e4056a41026a2d00003a0000200341a8046a41086a200341c0066a41086a290300370300200341a8046a41106a2223200341c0066a41106a290300370300200341a4046a41026a200341e0056a41026a2d00003a000020034188046a41086a200341c8056a41086a29030037030020034188046a41106a2224200341c8056a41106a290300370300200320032f01e4053b01c404200320032903c0063703a804200320032f01e0053b01a404200320032903c8053703880420034184046a41026a200341c4056a41026a2d00003a0000200341e8036a41086a200341a8056a41086a290300370300200341e8036a41106a2225200341a8056a41106a290300370300200341e4036a41026a200341a4056a41026a2d00003a0000200341c8036a41086a20034188056a41086a290300370300200341c8036a41106a222620034188056a41106a290300370300200320032f01c4053b018404200320032903a8053703e803200320032f01a4053b01e40320032003290388053703c803200341c4036a41026a20034184056a41026a2d00003a0000200341a8036a41106a2227200341e8046a41106a290300370300200341a8036a41086a200341e8046a41086a290300370300200341a4036a41026a200341e4046a41026a2d00003a000020034188036a41106a2228200341c8046a41106a29030037030020034188036a41086a200341c8046a41086a290300370300200320032f0184053b01c403200320032903e8043703a803200320032f01e4043b01a403200320032903c80437038803200341e0026a41206a2229200341f0076a41206a280200360200200341e0026a41186a222a200341f0076a41186a290300370300200341e0026a41106a222b200341f0076a41106a290300370300200341e0026a41086a200341f0076a41086a290300370300200320032903f0073703e002200341c0026a41176a20034198086a41176a220f280000360000200341c0026a41106a20034198086a41106a220d290300370300200341c0026a41086a20034198086a41086a29030037030020032003290398083703c0020240024020014102470d00200341003602f807200342013703f0072003410a36029c072003200341186a360298072003200341f0076a3602d806200341ac086a41013602002003420137029c08200341909dc50036029808200320034198076a3602a808200341d8066a419cebc00020034198086a103d1a20032802f00720032802f80710ef0220032802f407450d0120032802f007102e0c010b200341b4026a41026a222c200341c4046a41026a2d00003a000020034198026a41086a222d200341a8046a41086a29030037030020034198026a41106a222e202329030037030020034194026a41026a2223200341a4046a41026a2d00003a0000200341f8016a41086a222f20034188046a41086a290300370300200341f8016a41106a22302024290300370300200320032f01c4043b01b402200320032903a80437039802200320032f01a4043b01940220032003290388043703f801200341f4016a41026a222420034184046a41026a2d00003a0000200341d8016a41086a2231200341e8036a41086a290300370300200341d8016a41106a22322025290300370300200341d4016a41026a2225200341e4036a41026a2d00003a0000200341b8016a41086a2233200341c8036a41086a290300370300200341b8016a41106a22342026290300370300200320032f0184043b01f401200320032903e8033703d801200320032f01e4033b01d401200320032903c8033703b801200341b4016a41026a2226200341c4036a41026a2d00003a000020034198016a41106a2235202729030037030020034198016a41086a2227200341a8036a41086a29030037030020034194016a41026a2236200341a4036a41026a2d00003a0000200341f8006a41106a22372028290300370300200341f8006a41086a222820034188036a41086a290300370300200320032f01c4033b01b401200320032903a80337039801200320032f01a4033b0194012003200329038803370378200341d0006a41206a22382029280200360200200341d0006a41186a2229202a290300370300200341d0006a41106a222a202b290300370300200341d0006a41086a222b200341e0026a41086a290300370300200320032903e002370350200341306a410f6a200341c0026a410f6a290000370000200341306a41086a2239200341c0026a41086a290300370300200320032903c0023703302000201537030820002012370300200020103a00282000200c360224200020023602202000200e36021c2000200736021820002008360214200020063602102000200a3602302000200936022c200020032f01b4023b00292000412b6a202c2d00003a000020002003290398023702342000413c6a202d290300370200200041c4006a202e2903003702002000200b3a004c200041cf006a20232d00003a0000200020032f0194023b004d200020133602542000201a360250200041e8006a2030290300370200200041e0006a202f290300370200200020032903f8013702582000201b3a0070200041f3006a20242d00003a0000200020032f01f4013b00712000201c3602782000201d3602742000418c016a203229030037020020004184016a2031290300370200200020032903d80137027c200020163a00940120004197016a20252d00003a0000200020032f01d4013b0095012000201836029c012000201936029801200041b0016a2034290300370200200041a8016a2033290300370200200020032903b8013702a001200020173a00b801200041bb016a20262d00003a0000200020032f01b4013b00b9012000201e3602c0012000201f3602bc01200041d4016a2035290300370200200041cc016a202729030037020020002003290398013702c401200020203a00dc01200041df016a20362d00003a0000200020032f0194013b00dd01200020213602e401200020223602e001200041f8016a2037290300370200200041f0016a2028290300370200200020032903783702e801200041a0026a203828020036020020004198026a202929030037020020004190026a202a29030037020020004188026a202b2903003702002000200329035037028002200f200341306a41176a280000360000200d200341306a41106a29030037030020034198086a41086a220220392903003703002003200329033037039808200041bc026a200f280000360000200041b5026a200d290300370000200041ad026a200229030037000020002003290398083700a5020b200020013a00a4022005450d002004102e0b200341f0086a24000bbd07010a7f23004180026b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022040d00200041063a00200c010b200328021421052003200341186a280200220636029401200320043602900141002101200341003a00d801024002400240034020062001460d01200341b8016a20016a200420016a22022d00003a00002003200241016a360290012003200141016a22023a00d8012002210120024120470d000b2003200620026b36029401200341206a41186a2201200341b8016a41186a290300370300200341206a41106a2206200341b8016a41106a290300370300200341206a41086a2207200341b8016a41086a290300370300200320032903b801370320200241ff01714120490d0120034198016a41086a200729030037030020034198016a41106a200629030037030020034198016a41186a20012903003703002003200329032037039801200341b8016a20034190016a10ec0320032d00b80122014106460d01200341f0006a41186a220220034198016a41186a290300370300200341f0006a41106a220620034198016a41106a290300370300200341f0006a41086a220720034198016a41086a290300370300200341c8006a41086a2208200341c1016a290000370300200341c8006a41106a2209200341c9016a290000370300200341c8006a41186a220a200341d1016a290000370300200341c8006a411f6a220b200341d8016a2800003600002003200329039801370370200320032900b901370348200341206a411f6a220c200b280000360000200341206a41186a220b200a290300370300200341206a41106a220a2009290300370300200341206a41086a22092008290300370300200041186a2002290300370200200041106a2006290300370200200041086a20072903003702002000200329037037020020032003290348370320200041c0006a200c280000360000200041396a200b290300370000200041316a200a290300370000200041296a2009290300370000200020032903203700210c020b2003410036029401200141ff0171450d00200341003a00d8010b20034100360250200342013703482003410a3602242003200341086a3602202003200341c8006a3602e001200341cc016a4101360200200342013702bc01200341909dc5003602b8012003200341206a3602c801200341e0016a419cebc000200341b8016a103d1a2003280248200328025010ef020240200328024c450d002003280248102e0b410621010b200020013a00202005450d002004102e0b20034180026a24000bb40201037f230041e0006b22022400200241086a4188fec6004108108102200241186a41d0aec3004106108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000b8e0302027f037e230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602100c010b200328021421042003200341106a41086a2802002202360224200320013602200240024020024110490d002003200241706a3602242003200141106a360220200141086a2900002105200129000021062003200341206a10ab0102402003280200450d00200341003602480c010b200341c8006a200341206a200328020410920120032802482202450d00200329024c2107200020053703082000200637030020002007370214200020023602100c010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b200041003602100b2004450d002001102e0b200341e0006a24000ba43809017f0a7e027f077e017f017e037f037e047f230041f0056b22062400200620043703202006200337031820062001360214200620053a002f0240024020032004844200520d0020004100360200200041106a4200370300200041086a42003703000c010b024002400240024002400240024002400240024020012002412010ec080d002005450d01200641d0016a200110c802200641f0046a20062802d001220220062802d80110c90220064190056a290300420020062903f00442015122011b210720064188056a290300420020011b2108024020062802d401450d002002102e0b20004100360200200041106a4200200420077d2003200854ad7d2207200320087d2208200356200720045620072004511b22011b370300200041086a4200200820011b3703000c0a0b2006200236028c01200641d0016a200210c802200641f0046a20062802d001220520062802d80110c902200641f0046a41386a2903002109200641f0046a41306a2903002107200641f0046a41286a290300210a200641f0046a41206a290300210b200641f0046a41186a290300210c200641f0046a41106a2903002103200641b0056a290300210d20062903f804210420062903f0042108200641c8036a41086a200641c0056a2903003703002006200641b8056a2903003703c8030240024020084201510d004200210d20064190016a41386a420037030020064190016a41306a420037030020064190016a41286a4200370300200641b0016a420037030020064190016a41186a420037030020064190016a41106a420037030020064190016a41086a420037030020064200370390014200210b4200210a420021074200210942002104420021034200210c4200210e4200210f42002108420021100c010b200641b0016a200a37030020064190016a41286a200737030020064190016a41106a200c37030020064190016a41306a20093703002006200b3703a80120062004370390012006200d3703c8012006200337039801200a210e2007210f20042108200321100b024020062802d401450d002005102e0b0240024020082010844200520d00200e20062903a00184200f200641a8016a29030084844200520d0020062903c001200641c8016a2903008450450d0042002108410021110c010b42012108410121110b0240024020084201510d0042002104200641c0036a4200370300200641b8036a4200370300200641b0036a4200370300200641a8036a4200370300200641a0036a420037030020064198036a420037030020064190036a42003703002006420037038803420021030c010b200641a8036a200a370300200641b0036a2007370300200641b8036a200937030020064198036a200c3703002006200b3703a0032006200d3703c003200620043703880320062003370390030b024020084201510d00200641a0046a41206a200641b8036a290300370300200641a0046a41186a200641b0036a290300370300200641b0046a20064188036a41206a290300370300200641a8046a20064188036a41186a29030037030020062006290398033703a00441838a1c211241b4a4c7002101410b21050c070b200620013602dc03200641a0046a200110c802200641f0046a20062802a004220520062802a80410c902200641f0046a41386a2903002113200641f0046a41306a290300210f200641f0046a41286a2903002114200641f0046a41206a2903002104200641f0046a41186a290300210c200641f0046a41106a2903002103200641b0056a290300211520062903f804211020062903f004210e200641c8036a41086a200641c0056a2903003703002006200641b8056a2903003703c80302400240200e4201510d0042002115200641e0036a41386a4200370300200641e0036a41306a4200370300200641e0036a41286a4200370300200641e0036a41206a4200370300200641e0036a41186a4200370300200641e0036a41106a4200370300200641e0036a41086a4200370300200642003703e00342002104420021144200210f4200211342002110420021034200210c42002116420021174200210e420021180c010b200641e0036a41206a2014370300200641e0036a41286a200f370300200641e0036a41106a200c370300200641e0036a41306a2013370300200620043703f803200620103703e0032006201537039804200620033703e80320142116200f21172010210e200321180b024020062802a404450d002005102e0b02400240200e2018844200520d00201620062903f003842017200641f8036a29030084844200520d0020062903900420064198046a2903008450450d0042002117410021120c010b42012117410121120b024020174201510d00420021044200210c42002115420021144200210f4200211342002110420021030b200641186a41086a290300220e2004200c20062903182218562004200e562004200e511b22051b21162018200c20051b210e02400240024020062d002f4101470d002006290398032218200e7c22192018542205200641a0036a221a290300221820167c2005ad7c221b201854201b2018511b450d010c060b2006290388032218200e7c2219201854220520064188036a41086a290300221820167c2005ad7c221b201854201b2018511b0d0520062019370388032006201b370390030c010b201a201b37030020062019370398030b20064198056a221c200f370300200641a0056a221d201337030020064188056a200420167d200c200e54ad7d220f37030020062014370390052006200c200e7d221437038005200620103703f004200620033703f80442002104200e422088a72105200ea7211a02400240427f201020147c220c200c201054221e2003200f7c201ead7c220c200354200c2003511b221e1b221842ffc7afa02556427f200c201e1b22134200522013501b0d0020102014842003200f8484220450211e4200210c2004420052ad21040c010b201d290300211f201c290300212020064190056a290300212120064180056a290300211b200629038805211920062903f804211420062903f004210e4201210c4101211e0b200641c8046a2013370300200641c0046a221c2018370300200641b0046a2003370300200620103703a804200620163703d804200620053602d4042006201a3602d004200620043703b80420062017420152ad220f3703a0040240024002402012200c420152720d00200620013602f0042001200641f0046a10bd060c010b024020124101732205200c420151720d00200620013602f0042001200641f0046a10be0641ff017122054103460d01024020050e03030200030b41002105410421120240201e0d002006201c3602f004200641f0046a10cc020b410021010c070b200c4201522005710d030b200641e0046a200110c802200641f0046a20062802e004221220062802e804221a10c90220062903f0042103200641c8036a41086a2205200641c0056a2903003703002006200641b8056a2903003703c8030240024020034201510d00200641e8026a41086a4200370300200642003703e8020c010b200641e8026a41086a2005290300370300200620062903c8033703e8020b200641b8056a20062903e802370300200641c0056a200641e8026a41086a290300370300200642013703f004200641f0046a41386a201f4200200c42015122051b370300200641a0056a2020420020051b370300200641f0046a41286a2021420020051b37030020064190056a2019420020051b37030020064188056a201b420020051b370300200641f0046a41106a2014420020051b370300200641b0056a2015420020051b3703002006200e420020051b3703f8042012201a200641f0046a41086a10c805024020062802e404450d002012102e0b200641a0046a41106a2903002103200641a0046a41286a2903002113200641a0046a41386a290300210c20062903a804211020062903c004211820062903d004210e20062903a004210f20062903b80421040c030b200641c8046a2903002113200641b0046a2903002103200641d8046a290300210c20062903c004211820062903a804211020062903d004210e20062903b804210420062903a004210f0c020b200620012003200410fb0120062903002103200041106a200641086a290300370300200041086a2003370300200041003602000c080b200641d8046a290300210c20062903d004210e0b0240200f4201520d00200641a8056a2003370300200641a0056a2010370300200641f0046a41086a41003a0000200641f9046a200129000037000020064181056a200141086a29000037000020064189056a200141106a29000037000020064191056a200141186a290000370000200641033a00f004200641f0046a10fe010b02400240200450450d00420021150c010b200641f0046a41086a20062802dc03220141086a290000370300200641f0046a41106a200141106a290000370300200641f0046a41186a200141186a290000370300200620012900003703f004420121150b200641e0036a41186a200641f0046a41186a290300370300200641e0036a41106a200641f0046a41106a290300370300200641e0036a41086a200641f0046a41086a290300370300200620062903f0043703e0034100211a0c020b41808008210141800a2105410321120b20014180800c71200541800e7172201272211241a984ca00ad4280808080800184210e4101211a4200210c0b20064188036a41086a2903002103200641c0036a29030021212006290388032104200641a0046a41206a221e20064188036a41306a290300370300200641a0046a41186a221c20064188036a41286a290300370300200641b0046a221d20064188036a41206a290300370300200641a0046a41086a222220064188036a41186a29030037030020062006290398033703a004200e422088a72105200ea72101201a450d010b2005ad4220862001ad8421084200210f410121010c010b200641f0046a41186a20222903002207370300200641f0046a41206a201d290300370300200641f0046a41286a201c290300370300200641f0046a41306a201e290300370300200620062903a004220a37038005200620043703f004200620033703f804420021104201210f2008420152211a02400240427f2004200a7c22082008200454221e200320077c201ead7c220820035420082003511b221e1b221442ffc7afa02556427f2008201e1b220e420052200e501b0d004200210f2004200a84200320078484420052ad21100c010b200641a0056a290300210920064198056a290300210720064190056a290300210a20064180056a2903002119200629038805210b20062903f804211b20062903f00421170b201aad2108200641e8026a41086a200641e0036a41086a290300370300200641e8026a41106a200641e0036a41106a290300370300200641e8026a41186a200641e0036a41186a290300370300200620062903e0033703e8022005ad4220862001ad842116410021012021210d0b200641c8026a41086a2205200641e8026a41086a290300370300200641c8026a41106a221a200641e8026a41106a290300370300200641c8026a41186a221e200641e8026a41186a290300370300200620062903e8023703c8020240024002400240024020010d0020064188026a200c370300200641f8016a200e370300200641f0016a22012014370300200641d0016a41106a2003370300200641c0026a2013370300200641b8026a221c201837030020064190026a201537030020064198026a20062903c802370300200641a0026a2005290300370300200641a8026a201a290300370300200641b0026a201e2903003703002006201637038002200620043703d801200620103703e801200620083703d001024002402011200f420152720d00200620023602f0042002200641f0046a10bd060c010b024020114101732205200f420151720d00200620023602f0042002200641f0046a10be0641ff017122054103460d010240024020050e03010300010b02402010500d00200620013602f004200641f0046a10cc020b20064190026a220510d20441012101410421122005290300500d052006201c3602f004200641f0046a10cc020c050b20064190046a200641c0026a29030037030020064188046a200641b8026a29030037030020064180046a200641b0026a290300370300200641f8036a200641a8026a290300370300200641f0036a200641a0026a290300370300200641e8036a20064198026a290300370300200620064190026a2903003703e003410021010c040b200f4201522005710d020b20064188036a200210c802200641f0046a2006280288032205200628029003221210c90220062903f0042103200641c8036a41086a2201200641c0056a2903003703002006200641b8056a2903003703c8030240024020034201510d00200641a0046a41086a4200370300200642003703a0040c010b200641a0046a41086a2001290300370300200620062903c8033703a0040b200641f0046a41c8006a20062903a004370300200641f0046a41d0006a200641a0046a41086a2211290300370300200642013703f004200641f0046a41386a20094200200f42015122011b370300200641f0046a41306a2007420020011b370300200641f0046a41286a200a420020011b370300200641f0046a41206a200b420020011b370300200641f0046a41186a2019420020011b370300200641f0046a41106a201b420020011b370300200641f0046a41c0006a200d420020011b37030020062017420020011b3703f80420052012200641f0046a41086a10c8050240200628028c03450d002005102e0b200641e0036a41086a2201200641d0016a41c8006a290300370300200641e0036a41106a2205200641d0016a41d0006a290300370300200641e0036a41186a2212200641a8026a290300370300200641e0036a41206a221a200641b0026a290300370300200641e0036a41286a221e200641b8026a290300370300200641e0036a41306a221c200641c0026a2903003703002006200641d0016a41c0006a2903003703e003200641d0016a41106a2903002103200641d0016a41286a290300210e200641d0016a41386a290300210c20062903d801210420062903f0012114200629038002210820062903d001210720062903e8012110200641a0046a41306a201c290300370300200641a0046a41286a201e290300370300200641a0046a41206a201a290300370300200641a0046a41186a2012290300370300200641a0046a41106a200529030037030020112001290300370300200620062903e0033703a004200641a0046a21010c030b410121010c010b20064190046a200641c0026a29030037030020064188046a200641b8026a29030037030020064180046a200641b0026a290300370300200641f8036a200641a8026a290300370300200641f0036a200641a0026a290300370300200641e8036a20064198026a290300370300200620064190026a2903003703e003410021010b200641a0046a41306a200641e0036a41306a290300370300200641a0046a41286a200641e0036a41286a290300370300200641a0046a41206a200641e0036a41206a290300370300200641a0046a41186a200641e0036a41186a290300370300200641a0046a41106a200641e0036a41106a290300370300200641a0046a41086a200641e0036a41086a290300370300200620062903e0033703a00402402001450d00410121010c020b200641a0046a210120082107201621080b200641d0016a41306a200141306a290300370300200641d0016a41286a200141286a290300370300200641d0016a41206a200141206a290300370300200641d0016a41186a200141186a290300370300200641d0016a41106a200141106a290300370300200641d0016a41086a200141086a290300370300200620012903003703d001024020074201520d00200628028c012101200641a8056a2003370300200641f0046a41306a2004370300200641f0046a41086a41003a0000200641f9046a200129000037000020064181056a200141086a29000037000020064189056a200141106a29000037000020064191056a200141186a290000370000200641033a00f004200641f0046a10fe010b02400240201050450d00420021030c010b20064188036a41086a200628028c01220141086a29000037030020064188036a41106a200141106a29000037030020064188036a41186a200141186a2900003703002006200129000037038803420121030b20064190016a41186a20064188036a41186a29030037030020064190016a41106a20064188036a41106a29030037030020064190016a41086a20064188036a41086a290300370300200641f0046a41086a200641d0016a41086a290300370300200641f0046a41106a200641d0016a41106a290300370300200641f0046a41186a200641d0016a41186a290300370300200641f0046a41206a200641d0016a41206a290300370300200641f0046a41286a200641d0016a41286a290300370300200641f0046a41306a200641d0016a41306a290300370300200620062903880337039001200620062903d0013703f004410021010b200641d0006a41086a2205200641f0046a41086a2211290300370300200641d0006a41106a221a200641f0046a41106a290300370300200641d0006a41186a221e200641f0046a41186a290300370300200641d0006a41206a221c200641f0046a41206a290300370300200641d0006a41286a221d200641f0046a41286a290300370300200641d0006a41306a2222200641f0046a41306a290300370300200641306a41086a222320064190016a41086a290300370300200641306a41106a222420064190016a41106a290300370300200641306a41186a222520064190016a41186a290300370300200620062903f0043703502006200629039001370330024020010d00200641a0046a41306a2022290300370300200641a0046a41286a201d290300370300200641a0046a41206a201c290300370300200641a0046a41186a201e290300370300200641a0046a41106a201a290300370300200641a0046a41086a2005290300370300200620062903503703a004200641d0016a41306a200e370300200641d0016a41286a22122014370300200641d0016a41106a2023290300370300200641d0016a41186a2024290300370300200641d0016a41206a2025290300370300200620033703d001200620062903303703d80120062d002f2105200641e0036a41186a2006280214220141186a2900002203370300200641e0036a41106a200141106a2900002204370300200641e0036a41086a200141086a290000220737030020062001290000220a3703e003200641c8056a200c370300200641c0056a2008370300201141073a0000200641f9046a200a37000020064181056a200737000020064189056a200437000020064191056a2003370000200641b9056a20053a000020064199056a2002290000370000200641a1056a200241086a290000370000200641a9056a200241106a290000370000200641b1056a200241186a290000370000200641033a00f004200641f0046a10fe01200041086a2006290318220320087d37030020004100360200200041106a200641186a41086a290300200c7d2003200854ad7d370300200641d0016a10d204024020062903d001500d00200620123602f004200641f0046a10cc020b200641a0046a10d20420062903a004500d012006200641c8046a3602f004200641f0046a10cc020c010b2000201236020420004101360200200041086a20083702000b200641f0056a24000bda0102037f017e230041206b2203240002400240200241186a2802004105744114722204417f4c0d002004102c2205450d01200341003602082003200436020420032005360200200229030021062003200241086a290300370318200320063703102003200341106a4110107420022802102104200228021822022003107602402002450d002002410574210203402003200441201074200441206a2104200241606a22020d000b0b2000200120032802002204200328020810b20102402003280204450d002004102e0b200341206a24000f0b1038000b1036000b7801017f230041206b2203240020034100360208200342013703002003200241201074200341106a200241206a108a012003200328021022022003280218107402402003280214450d002002102e0b2000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000b832501047f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1b00010218180304051806070818090a0b0c0d0e0f10111213141516170b0240024002400240024002400240200041086a2802000e0a1e1e001e01021e030405060b200041106a280200450d1d2000410c6a280200102e0f0b200041106a280200450d1c2000410c6a280200102e0f0b200041106a280200450d1b2000410c6a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d002002280200102e0b0240200241106a280200450d002002410c6a280200102e0b200241186a2102200141686a22010d000b0b200041106a2802002202450d1a200241186c450d1a200028020c102e0f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d192002410c6c450d19200028020c102e0f0b200041106a280200450d182000410c6a280200102e0f0b200041106a280200450d172000410c6a280200102e0f0b0240024002400240024020002d00040e061b001b010203040b200041186a2202280200108c042002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a2202280200108c042002280200102e0f0b2000410c6a280200450d18200041086a280200102e0f0b200041186a2202280200108c042002280200102e0f0b02402000410c6a280200450d00200041086a280200102e0b200041246a2202280200108c042002280200102e0f0b02400240200041086a280200417f6a0e020001170b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d162002410c6c450d162000280210102e0f0b2000412c6a220110e1010240200041306a2802002202450d00200241246c450d002001280200102e0b2000419c016a220110e1010240200041a0016a2802002202450d00200241246c450d002001280200102e0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d152000280210102e0f0b0240024002400240200041086a2802000e0418000102030b2000410c6a2d00004102470d17200041146a280200450d17200041106a280200102e0f0b2000410c6a2d00004102470d16200041146a280200450d16200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d15200041386a280200450d15200041346a280200102e0f0b2000410c6a2d00004102470d14200041146a280200450d14200041106a280200102e0f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d002004280204102e0b20022003470d000b0b200041086a2802002202450d13200241f0006c450d132000280204102e0f0b024002400240024002400240200041086a2d00000e171800181818180118180218181818180318180418181818050b2000412c6a2d00004102470d17200041346a280200450d17200041306a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d16200241246c450d16200028020c102e0f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a280200102e0f0b200041106a28020041ffffff3f71450d142000410c6a280200102e0f0b200041146a28020041ffffffff0371450d13200041106a280200102e0f0b0240200041146a2802002201450d002000410c6a2802002102200141246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b200041106a2802002202450d12200241246c450d12200028020c102e0f0b20002802042202450d11200041086a280200450d112002102e0f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d112000280210102e0f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d102000280210102e0f0b02402000410c6a280200450d00200041086a280200102e0b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d002002280200102e0b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f2000280214102e0f0b0240024002400240200041086a2d000041716a0e0400010203120b200041106a280200450d112000410c6a280200102e0f0b200041106a280200450d102000410c6a280200102e0f0b200041106a280200450d0f2000410c6a280200102e0f0b200041106a280200450d0e2000410c6a280200102e0f0b024002400240200041086a2d0000417f6a0e03000102100b200041306a28020041ffffff3f71450d0f2000412c6a280200102e0f0b2000410c6a2202280200108c042002280200102e0f0b200041106a2202280200108c042002280200102e0f0b024002400240200041086a2d0000417f6a0e030001020f0b200041306a28020041ffffff3f71450d0e2000412c6a280200102e0f0b2000410c6a2202280200108c042002280200102e0f0b200041106a2202280200108c042002280200102e0f0b02400240200041086a2d0000417f6a0e05000d0d0d010d0b200041106a28020041ffffff3f71450d0c2000410c6a280200102e0f0b2000410c6a2d00004102470d0b200041146a280200450d0b200041106a280200102e0f0b20002d00044104470d0a2000410c6a28020041ffffff3f71450d0a200041086a280200102e0f0b200041086a2802004101470d092000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b02400240200041086a2d0000417d6a0e0200010a0b200041f0006a280200450d09200041ec006a280200102e0f0b200041106a280200450d082000410c6a280200102e0f0b024002400240200041086a2802000e040a0a0001020b2000410c6a2d00004102470d09200041146a280200450d09200041106a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004102470d07200041386a280200450d07200041346a280200102e0f0b02400240024020002f01040e03090001020b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d08200241b0026c450d082000280208102e0f0b200041086a2202280200108c042002280200102e0f0b0240200041106a2802002201450d00200041086a2802002102200141b0026c210103402002109601200241b0026a2102200141d07d6a22010d000b0b2000410c6a2802002202450d06200241b0026c450d062000280208102e0f0b0240024002400240024002400240200041086a2d0000417e6a0e0d00010c0c0c0c0c0c02030405060c0b2000410c6a10e3030f0b0240200041146a2802002202450d00200241c4006c21012000410c6a28020041286a210203400240200241786a2d00004101470d002002280200450d002002417c6a280200102e0b200241c4006a2102200141bc7f6a22010d000b0b200041106a2802002202450d0a200241c4006c450d0a200028020c102e0f0b200041106a2d00004102470d09200041186a280200450d09200041146a280200102e0f0b2000410c6a2d00004102470d08200041146a280200450d08200041106a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d07200041386a280200450d07200041346a280200102e0f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a280200102e0b200041306a2d00004101470d06200041386a280200450d06200041346a280200102e0f0b2000410c6a2d00004102470d05200041146a280200450d05200041106a280200102e0f0b20002d00042202417e6a4108490d040240024020020e020600010b200041286a2202280200108c042002280200102e0f0b200041c8006a2202280200108c042002280200102e0f0b0240024002400240200041086a2d00000e0407000102030b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041186a2202280200108c042002280200102e0f0b0240200041106a28020041ffffff3f71450d002000410c6a280200102e0b200041286a280200450d05200041246a280200102e0f0b200041306a28020041ffffff3f71450d042000412c6a280200102e0f0b200041306a28020041ffffff3f71450d032000412c6a280200102e0f0b0240024002400240200041086a2802000e09060006010606020606030b200041106a280200450d052000410c6a280200102e0f0b200041106a2d00004102470d04200041186a280200450d04200041146a280200102e0f0b200041106a2d00004102470d03200041186a280200450d03200041146a280200102e0f0b200041146a280200450d02200041106a280200102e0f0b02400240200041086a2d0000417f6a0e03000301030b200041306a280200450d022000412c6a280200102e0c020b200041306a280200450d012000412c6a280200102e0f0b02402000413c6a28020041ffffffff0171450d00200041386a280200102e0b0240200041c8006a2802002202450d002002410c6c450d00200041c4006a280200102e0b0240200041d4006a28020041ffffffff0071450d00200041d0006a280200102e0b0240200041e0006a2802002202450d00200241146c450d00200041dc006a280200102e0b0240200041ec006a2802002202450d00200241186c450d00200041e8006a280200102e0b0240200041f8006a2802002202450d002002411c6c450d00200041f4006a280200102e0b024020004184016a28020041ffffff3f71450d0020004180016a280200102e0b024020004190016a2802002202450d00200241246c450d002000418c016a280200102e0b02402000419c016a2802002202450d00200241286c450d0020004198016a280200102e0b0240200041a8016a2802002202450d002002412c6c450d00200041a4016a280200102e0b0240200041b4016a2802002202450d00200241306c450d00200041b0016a280200102e0b0240200041c0016a2802002202450d00200241346c450d00200041bc016a280200102e0b0240200041cc016a2802002202450d00200241386c450d00200041c8016a280200102e0b0240200041d8016a2802002202450d002002413c6c450d00200041d4016a280200102e0b0240200041e4016a28020041ffffff1f71450d00200041e0016a280200102e0b200041f0016a2802002202450d00200241c4006c450d00200041ec016a280200102e0f0b0b830501077f230041c0006b220324002001280204210420012802002105024002400240200128020822060d00410021070c010b200641057421084100210941002107200521010240034002402009450d0020092001412010ec084100480d0020034106108e04200041013602002000410c6a200341086a280200360200200020032903003702040c020b024020012002412010ec08220941004a0d00024020090d0020034107108e04200041013602002000410c6a200341086a280200360200200020032903003702040c030b200741016a21070b20012109200141206a2101200841606a2208450d020c000b0b200441ffffff3f71450d012005102e0c010b200341186a200241186a290000370300200341106a200241106a290000370300200341086a200241086a290000370300200320022900003703000240024020062007490d000240024020062004470d00200441016a22012004490d03200441017422092001200920014b1b22014104200141044b1b220141ffffff3f712001462109200141057421010240024020040d00200341003602300c010b200341386a410136020020032005360230200320044105743602340b200341206a20012009200341306a107d200341286a280200210120032802204101460d0120032802242105200141057621040b200520074105746a220141206a2001200620076b41057410ea081a200141186a200341186a290300370000200141106a200341106a290300370000200141086a200341086a290300370000200120032903003700002000410c6a200641016a360200200041086a200436020020002005360204200041003602000c030b2001450d011036000b200720061045000b1038000b200341c0006a24000bae0301047f230041c0006b2202240041f0cbc3002103410d2104410d2105024002400240024002400240024002400240024002400240024002400240200141ff01710e0f000102030405060708090a0b0c0d0e000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a4180a7cc001044000b41e0cbc300210341102105410021040c0c0b41d1cbc3002103410f2105410121040c0b0b41c0cbc300210341112105410221040c0a0b41afcbc300210341112105410321040c090b419dcbc300210341122105410421040c080b4188cbc300210341152105410521040c070b41f5cac300210341132105410621040c060b418be7c400210341082105410721040c050b41feccc200210341082104410821050c040b41eacac3002103410b2105410921040c030b41dccac3002103410e2105410a21040c020b41c9cac300210341132105410b21040c010b41bacac3002103410f2105410c21040b200041833c3b0100200041086a2005360200200041046a2003360200200041026a20043a0000200241c0006a24000b9d3e07077f017e027f037e017f027e067f230041b00d6b220924004101210a02400240200241ffff037141014b0d00200941d00a6a4101108e042009418f026a200941d00a6a41086a2802002202360000200920092903d00a37008702200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a200236000020004201370300410121020c010b02400240200341086a280200220b0d00200941d00a6a4104108e042009418f026a200941d00a6a41086a280200220a360000200920092903d00a37008702200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a200a360000200042013703000c010b0240200b41e400490d00200941d00a6a4105108e042009418f026a200941d00a6a41086a280200220a360000200920092903d00a37008702200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a200a360000200042013703000c010b20094198076a41086a200341086a280200360200200920032902003703980720094180026a41186a200141186a29000037030020094180026a41106a200141106a29000037030020094180026a41086a220c200141086a2900003703002009200129000037038002200941d00a6a20094198076a20094180026a108d044101210a200941d00a6a41086a280200210d200941dc0a6a280200210e20092802d40a210f024002400240024002400240024002400240024002400240024002400240024020092802d00a4101460d00200c200e360200200920023b018c022009200f36028402200941b1c5cb003602800220094198076a20094180026a109004200941203602d40a200920094198076a3602d00a20094180026a200941d00a6a1093010240024020092d0080024101470d00200941d0006a4200370300200941c8006a4200370300200941c0006a4200370300200942003703380c010b200941d0006a20094199026a290000370300200941c8006a20094191026a290000370300200941c0006a20094189026a29000037030020092009290081023703380b4101210a0240024020072d00004101470d0020094198026a200741196a29000037030020094190026a200741116a29000037030020094188026a200741096a29000037030020092007290001370380024200211041002111410021120c010b20072d0001210e20094180026a200741046a2802002211200741086a29020022134220882210a710b0014100210a200e41004721120b200941d8006a41186a20094180026a41186a2903002214370300200941d8006a41106a20094180026a41106a220e2903002215370300200941d8006a41086a20094180026a41086a221629030022173703002009200929038002221837035820094198076a41186a201437030020094198076a41106a220c201537030020094198076a41086a221920173703002009201837039807200941b8046a200941386a20094198076a10910420094180026a20092802b804221a20092802c00410920420192016290300370300200c200e290300370300200941d00a6a41086a2216200941a8026a290300370300200941d00a6a41106a221b200941b0026a290300370300200941d00a6a41186a221c200941b8026a290300370300200941d00a6a41206a221d200941c0026a290300370300200920092903800237039807200920094180026a41206a2903003703d00a200928029c02211e0240200928029802220e450d00200941a0016a41106a200c290300370300200941a0016a41086a2019290300370300200941f8006a41086a2016290300370300200941f8006a41106a201b290300370300200941f8006a41186a201c290300370300200941f8006a41206a201d29030037030020092009290398073703a001200920092903d00a3703780b024020092802bc04450d00201a102e0b02400240200e0d004101210520044101470d01200941d00a6a410c108e042009418f026a200941d00a6a41086a2802002202360000200920092903d00a37008702200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a2002360000200042013703000c100b200941d4016a201e360200200941b8016a41206a2009290378370300200941b8016a41106a200941a0016a41106a290300370300200941b8016a41086a200941a0016a41086a290300370300200941b8016a41286a200941f8006a41086a290300370300200941e8016a200941f8006a41106a290300370300200941f0016a200941f8006a41186a290300370300200941f8016a200941f8006a41206a290300370300200920092903a0013703b8012009200e3602d0010240024020044101470d00024020092802c8012005470d00200941cc016a2802002006460d020b200941d00a6a410b108e042009418f026a200941d00a6a41086a2802002202360000200920092903d00a3700870241002105200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a20023600002000420137030020092802d40141ffffff3f71450d1120092802d001102e0c110b200941d00a6a410a108e042009418f026a200941d00a6a41086a2802002202360000200920092903d00a3700870241002105200041186a41003a0000200042003703082000200929008002370019200041216a20094180026a41086a290000370000200041286a20023600002000420137030020092802d40141ffffff3f71450d1020092802d001102e0c100b4101211b410021044100210c024020092802d801221a0e020605000b41002104201a210c0340200c410176221620046a211920192004200e20194105746a2001412010ec084101481b2104200c20166b220c41014b0d000c050b0b200941186a2002ad42ffff038342004280a0cb9801420010e808200941186a41086a2903002009290318221442809886abec057c2208201454ad7c21140240024002400240024002402011450d002013a7210220120d012002450d002011102e0b20094180026a20012008201410c30220092009290081023703d00a200920094180026a41086a2800003600d70a20092d00800222024106470d044100211d0c010b20094180026a41186a200141186a29000037030020094180026a41106a200141106a29000037030020094180026a41086a200141086a2900003703002009200129000037038002200920134220883e02d80a200920023602d40a200920113602d00a20094198076a20094180026a200941d8006a200941d00a6a2008201410930420092009290099073703b804200920094198076a41086a2800003600bf0420092d00980722024106470d014101211d0b200941b8046a41186a220a200941d8006a41186a290300370300200941b8046a41106a2202200941d8006a41106a290300370300200941b8046a41086a2204200941d8006a41086a290300370300200920092903583703b80420094180026a41186a2207420037030020094180026a41106a2205420037030020094180026a41086a4200370300200942003703800220094180026a41d9fcc6004106108102200941d00a6a4180f4cb0041061081022007200941d00a6a41086a2203290000370300200520092900d00a370300200941106a20094180026a4120108e022009280214210520092802102106200941086a41fcc6cb004110108e02200928020c210c20092802082119200941d00a6a41186a2211200141186a2216290000370300200941d00a6a41106a221a200141106a221b2900003703002003200141086a221c290000370300200920012900003703d00a4120102c2207450d0820072001290000370000200741186a2016290000370000200741106a201b290000370000200741086a201c29000037000020094180026a41146a200c410020191b360200200941ac026a2003290300370200200941b4026a201a290300370200200941bc026a20112903003702002009200837038002200920092903d00a3702a402200920143703880220092005410020061b360290022009419c026a428180808010370200200920073602980220094198076a41186a200a29030037030020094198076a41106a200229030037030020094198076a41086a2004290300370300200920092903b80437039807200941d00a6a200941386a20094198076a10910420092802d00a220320092802d80a20094180026a109404024020092802d40a450d002003102e0b2007102e200941a5026a2009290338370000200941ad026a200941386a41086a290300370000200941b5026a200941386a41106a290300370000200941bd026a200941386a41186a2903003700002009418d026a200141086a29000037000020094195026a200141106a2900003700002009419d026a200141186a290000370000200941003a008402200941143a0080022009200129000037008502200941dd026a200941d8006a41186a290300370000200941d5026a200941d8006a41106a290300370000200941cd026a200941d8006a41086a290300370000200941c5026a200929035837000020094180026a10fe01200bad2108201d0d01200842a08a077e201042e8077e7c42e0ff9fe1007c21080c050b20004200370308200020092903b80437002120004201370300200041206a20023a0000200041186a41003a0000200041286a20092800bf043600000c030b200842d8a1077e201042b8177e7c428093e49f017c21080c030b20004200370308200020092903d00a37002120004201370300200041206a20023a0000200041186a41003a0000200041286a20092800d70a3600000c010b2000200d3600242000420037030820004201370300200041286a200e360000200041206a200f36000041002102200041186a41003a00000c100b410121050c0d0b200042013703082000420037030041002107200041186a41003a0000200041106a20083703000c0a0b0240200e20044105746a2001412010ec08220c0d002004210c4100211b0c010b2004200c411f766a210c0b02400240024002400240201a41ffff0371200241ffff0371220249201b712204201a6a41ffff03712002490d000240024020110d0020094198076a200941d8006a109504200941d00a6a200928029807220220092802a007109604024020092802d00a2219450d0020092902d40a21140240200928029c07450d002002102e0b20092014422088a722163602bc04200920193602b804200941d00a6a200941b8046a109801024020092802d00a2202411c460d0020094198076a200941d00a6a41047241ac0210e9081a20094180026a41047220094198076a41ac0210e9081a200920163602b0040b20092002360280022014a7450d022019102e20092802800221020c020b0240200928029c07450d002002102e0b2009411c360280020c040b20092013422088a722193602bc04200920113602b804200941d00a6a200941b8046a109801024020092802d00a2202411c460d0020094198076a200941d00a6a41047241ac0210e9081a20094180026a41047220094198076a41ac0210e9081a200920193602b0040b20092002360280020b2002411c460d01200941b8046a20094180026a41b00210e9081a20093502b0042114200941d00a6a200941b8046a109704024020092903d00a2008580d0020094198076a410d108e04200941df0a6a20094198076a41086a280200220236000020092009290398073700d70a41002105200041186a41003a000020004200370308200020092900d00a370019200041216a200941d00a6a41086a290000370000200041286a200236000020004201370300200941b8046a108c0420092802d40141ffffff3f71450d0f20092802d001102e0c0f0b20094198076a41186a200941d8006a41186a29030037030020094198076a41106a200941d8006a41106a29030037030020094198076a41086a200941d8006a41086a2903003703002009200929035837039807200941d00a6a200941386a20094198076a10910420092802d00a220720092802d80a10ff01024020092802d40a450d002007102e0b200941d8006a109804200941286a200941dc016a20092903b801200941b8016a41086a29030010fb0120094198076a200941b8046a41b00210e9081a200941c8096a41186a200941386a41186a290300370300200941c8096a41106a200941386a41106a290300370300200941c8096a41086a200941386a41086a290300370300200920092903383703c8094110102c2203450d05200341f8f7c60036020c2003410136020820034281808080103702004110102c2207450d0520074190f8c60036020c20074101360208200742818080801037020020032003280200417f6a220a3602000240200a0d002003280208200328020c2802001103000240200328020c280204450d002003280208102e0b200341046a220a200a280200417f6a220a360200200a0d002003102e0b02400240200728020820094198076a200728020c28020c1101000d004102210320094188076a41023a000020094180076a41003a000020072007280200417f6a220a36020042002108200942003703f006200942013703e8060240200a0d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a220a200a280200417f6a220a360200200a0d002007102e0b20094198076a10dc02410121070c010b200941d00a6a20094198076a41b00210e9081a2009418a0d6a200941d0096a290300370100200941920d6a200941d8096a2903003701002009419a0d6a200941e0096a290300370100200941800d6a41206a200941e6096a29010037010020094180023b01800d200920092903c8093701820d200920073602a80d200941e8066a200941d00a6a200941800d6a10dd0220092903e8064201512107200941e8066a41206a2d0000210320092903f00621080b200941800d6a41186a200141186a290000370300200941800d6a41106a200141106a290000370300200941800d6a41086a200141086a290000370300200920012900003703800d20094198076a41186a200941386a41186a29030037030020094198076a41106a200941386a41106a29030037030020094198076a41086a200941386a41086a2903003703002009200929033837039807200941d00a6a41186a200941d8006a41186a290300370300200941d00a6a41106a200941d8006a41106a290300370300200941d00a6a41086a200941d8006a41086a290300370300200920092903583703d00a200920094190076a2800003600cf0920092009290089073703c8090240024020070d00410621070c010b200920092800cf093600c70a200920092903c8093703c00a4106210720084202510d00200920092800c70a3600b70a200920092903c00a3703b00a200321070b200941c8096a41086a2203200941800d6a41086a290300370300200941c8096a41106a220a200941800d6a41106a290300370300200941c8096a41186a2202200941800d6a41186a290300370300200941900a6a41086a220120094198076a41086a290300370300200941900a6a41106a220420094198076a41106a290300370300200941900a6a41186a220c20094198076a41186a290300370300200941f0096a41186a2219200941d00a6a41186a290300370300200941f0096a41106a2216200941d00a6a41106a290300370300200941f0096a41086a221a200941d00a6a41086a290300370300200920092903800d3703c80920092009290398073703900a200920092903d00a3703f009200920092800b70a3600c70a200920092903b00a3703c00a200941dd0a6a2003290300370000200941e50a6a200a290300370000200941ed0a6a2002290300370000200941143a00d00a200920092903c8093700d50a200941023a00d40a200941f50a6a20092903900a370000200941fd0a6a2001290300370000200941850b6a20042903003700002009418d0b6a200c290300370000200941ad0b6a2019290300370000200941a50b6a20162903003700002009419d0b6a201a290300370000200941950b6a20092903f009370000200941b70b6a20094198076a41026a2d00003a0000200941b50b6a20092f0098073b0000200941c00b6a20073a0000200941bc0b6a2006360200200941b80b6a2005360200200941c80b6a20092800c70a360000200941c10b6a20092903c00a370000200941d00a6a10fe010240024020092802f0060d00420021080c010b427f200bad42d886107e20144288277e7c42c0c995d6017c2208200941e8066a41106a2903007c221420142008541b2114420121080b20002008370308200020092800d00a36001920004200370300200041186a41003a0000200041106a20143703002000411c6a200941d30a6a280000360000024020092802d40141ffffff3f71450d0020092802d001102e0b410121072011450d0d2013a7450d0d2011102e0c0d0b2009411c360280020b2011450d00024020120d002013a7450d012011102e0c010b200941d00a6a41186a200141186a290000370300200941d00a6a41106a200141106a290000370300200941d00a6a41086a200141086a290000370300200920012900003703d00a2009201337029c072009201136029807200941b8046a200941d00a6a200941d8006a20094198076a42004200109304200920092900b9043703e8062009200941b8046a41086a2800003600ef06024020092d00b80422024106460d0020004200370308200020092903e80637002120004201370300200041206a20023a0000200041186a41003a0000200041286a20092800ef063600000c020b410121024101210720040d020c040b4100210220040d0120094198076a4102108e04200941df0a6a20094198076a41086a280200220236000020092009290398073700d70a200041186a41003a000020004200370308200020092900d00a370019200041216a200941d00a6a41086a290000370000200041286a2002360000200042013703000b0240200928028002411c460d0020094180026a108c040b024020092802d40141ffffff3f71450d0020092802d001102e0b410021050c0b0b200941d00a6a41186a200141186a290000370300200941d00a6a41106a200141106a290000370300200941d00a6a41086a200141086a290000370300200920012900003703d00a20092802d8012207200c490d0302400240200720092802d401470d00200741016a22032007490d062007410174220a2003200a20034b1b22034104200341044b1b220341ffffff3f71200346210a200341057421030240024020070d0020094100360298070c010b200941a0076a4101360200200920092802d001360298072009200741057436029c070b200941b8046a2003200a20094198076a107d200941c0046a280200210320092802b8044101460d01200920092802bc043602d001200920034105763602d4010b20092802d001200c4105746a220341206a20032007200c6b41057410ea081a200341186a200941d00a6a41186a290300370000200341106a200941d00a6a41106a290300370000200341086a200941d00a6a41086a290300370000200320092903d00a3700002009200741016a3602d801200941d00a6a200941b8016a41c80010e9081a20094198076a41186a200941d8006a41186a29030037030020094198076a41106a200941d8006a41106a29030037030020094198076a41086a200941d8006a41086a2903003703002009200929035837039807200941b8046a200941386a20094198076a10910420092802b804220720092802c004200941d00a6a109404024020092802bc04450d002007102e0b0240200941ec0a6a28020041ffffff3f71450d0020092802e80a102e0b200941f50a6a2009290338370000200941dd0a6a200141086a290000370000200941e50a6a200141106a290000370000200941ed0a6a200141186a290000370000200941fd0a6a200941386a41086a290300370000200941850b6a200941386a41106a2903003700002009418d0b6a200941386a41186a290300370000200941013a00d40a200941143a00d00a200920012900003700d50a200941b80b6a2005360200200941bc0b6a2006360200200941ad0b6a200941d8006a41186a290300370000200941a50b6a200941d8006a41106a2903003700002009419d0b6a200941d8006a41086a290300370000200941950b6a2009290358370000200941d00a6a10fe014100210720020d02200bad42c0a6087e201042e8077e7c42b090bbca007c2108410021070c030b2003450d040b1036000b200bad42f093097e201042b8177e7c42d086c192017c21080b2000420137030820004200370300200041186a41003a0000200041106a2008370300200928028002411c470d0220070d030c040b200c20071045000b1038000b20094180026a108c042007450d010b20092802d40141ffffff3f71450d0020092802d001102e0b410121070b0240200d41ffffff3f71450d00200f102e0b02402007200e45720d00201e41ffffff3f71450d00200e102e0b200941b00d6a24000f0b2011450d002013a7450d002011102e0b0240200d41ffffff3f71450d00200f102e0b02400240200e450d0020054101730d00201e41ffffff3f710d010b410021020c020b200e102e410021020c010b4101210a410121020b024020072d00000d00200a450d00200741086a280200450d00200741046a280200102e0b02402002450d00200341046a28020041ffffff3f71450d002003280200102e0b200941b00d6a24000bcd0101047f230041106b2202240002400240200141086a28020022034105744116722204417f4c0d002004102c2205450d0120024100360208200220043602042002200536020020022001280200411010742001280204210420032002107602402003450d002003410574210303402002200441201074200441206a2104200341606a22030d000b0b200220012f010c3b010e20022002410e6a41021074200020022802002204200228020810b00102402002280204450d002004102e0b200241106a24000f0b1038000b1036000bd40301037f230041f0006b2203240020034195fec6004108108102200341106a41f4f3c3004109108102024002404120102c2204450d002003422037025420032004360250200341d0006a2001412010742003200328025022012003280258220410a301370340200341ec006a200120046a360200200320013602682003200341c0006a41086a3602642003200341c0006a360260200341206a200341e0006a107c02402003280254450d002001102e0b4120102c2201450d002003422037024420032001360240200341c0006a200241201074200341d0006a200328024022012003280248220210d803200341ec006a200120026a360200200320013602682003200341e0006a3602642003200341d0006a360260200341306a200341e0006a107c02402003280244450d002001102e0b20032802282202200328023822046a41206a2201417f4c0d010240024020010d00410121050c010b2001102c2205450d010b20004100360208200020013602042000200536020020002003411010742000200341106a41101074200020032802202201200210742000200328023022022004107402402003280234450d002002102e0b02402003280224450d002001102e0b200341f0006a24000f0b1036000b1038000bc00502057f077e23004190016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602180c010b200328021421042003200341186a2802002202360244200320013602400240024020024104490d00200128000021052003200141046a36024020032002417c6a220636024420064104490d002003200141086a360240200128000421072003200241786a220636024420064110490d002003200241686a3602442003200141186a360240200141106a290000210820012900082109200341e8006a200341c0006a10930120032d00684101460d00200341c8006a41186a20034181016a290000370300200341d8006a200341f9006a290000370300200341d0006a200341f1006a290000370300200320032900693703482003200341c0006a10ab0102402003280200450d00200341003602680c010b200341e8006a200341c0006a200328020410920120032802682202450d00200341206a41086a200341c8006a41086a290300220a370300200341206a41106a200341c8006a41106a290300220b370300200341206a41186a200341c8006a41186a290300220c37030020032003290348220d370320200329026c210e20002008370308200020093703002000200e37021c200020023602182000200736021420002005360210200041246a200d3702002000412c6a200a370200200041346a200b3702002000413c6a200c3702000c010b20034100360250200342013703482003410a3602242003200341086a3602202003200341c8006a36028c01200341fc006a41013602002003420137026c200341909dc5003602682003200341206a3602782003418c016a419cebc000200341e8006a103d1a2003280248200328025010ef020240200328024c450d002003280248102e0b200041003602180b2004450d002001102e0b20034190016a24000bc70603037f027e017f23004180016b22062400200641106a2002109504200628021022072006280218108f02210802402006280214450d002007102e0b024002400240024002402008450d002000410e108e040c010b2006200341086a2208280200411f6a410576ad42004280a0cb9801420010e808200641106a2001200420062903007c220942809886abec057c220a2005200641086a2903007c2009200454ad7c200a200954ad7c220410c302200620062900113703702006200641106a41086a2207280000360077024020062d0010220b4106470d00200641c8006a200437030020072008280200360200200641246a200141086a2900003702002006412c6a200141106a290000370200200641346a200141186a2900003702002006200a370340200620032902003703102006200129000037021c200641d0006a4195fec6004108108102200641f0006a41ccf4c30041051081024120102c2203450d032006422037026420062003360260200641e0006a20024120107420062802682203417f4c0d04200628026021010240024020030d00410121020c010b2003102c2202450d040b20022001200310e908210202402006280264450d002001102e0b200341206a2201417f4c0d042001102c2208450d03200641003602682006200136026420062008360260200641e0006a200641d0006a41101074200641e0006a200641f0006a41101074200641e0006a20022003107402402003450d002002102e0b2006280218220141146a2203417f4c0d0420062802602102200628026821080240024020030d00410121070c010b2003102c2207450d040b200641003602582006200336025420062007360250200628021021032001200641d0006a1076200641d0006a200320011074200641d0006a2006411c6a41201074200620043703782006200a370370200641d0006a200641f0006a411010742002200820062802502201200628025810b20102402006280254450d002001102e0b02402006280264450d002002102e0b02402006280214450d002003102e0b200041063a00000c020b2000200b3a000020002006290370370001200041086a20062800773600000b200341046a280200450d002003280200102e0b20064180016a24000f0b1036000b1038000be50103017f017e017f230041206b220324002003410036020820034201370300200320022802103602102003200341106a410410742003200241146a2802003602102003200341106a41041074200229030021042003200241086a290300370318200320043703102003200341106a411010742003200241246a4120107420022802182105200241206a28020022022003107602402002450d002002410574210203402003200541201074200541206a2105200241606a22020d000b0b2000200120032802002205200328020810b20102402003280204450d002005102e0b200341206a24000bf50101047f230041306b2202240020024195fec6004108108102200241106a41ccf4c3004105108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bee0502087f057e23004190016b220324002003200236020c20032001360208200341106a2001200210ed0202400240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360244200320013602402003200341c0006a10ab0102400240024020032802000d002003280244220420032802042205490d002005417f4c0d040240024020050d00410121060c010b200510322206450d06200328024421040b024020042005490d0020062003280240200510e9082107200328024422042005490d072003200420056b3602442003200328024020056a360240200341e8006a200341c0006a109301024020032d00684101470d0020050d010c020b200341c8006a41186a220420034181016a290000370300200341c8006a41106a2208200341f9006a290000370300200341c8006a41086a2209200341f1006a290000370300200320032900693703482003280244220a410f4b0d022005450d010b2006102e0b20034100360250200342013703482003410a3602242003200341086a3602202003200341c8006a36028c01200341fc006a41013602002003420137026c200341909dc5003602682003200341206a3602782003418c016a419cebc000200341e8006a103d1a2003280248200328025010ef020240200328024c450d002003280248102e0b200041003602000c010b200341206a41086a2009290300220b370300200341206a41106a2008290300220c370300200341206a41186a2206200429030037030020032003290348220d3703202003200a41706a36024420032003280240220441106a360240200441086a290000210e2004290000210f200041086a20053602002000200536020420002007360200200041386a200e370300200041306a200f3703002000410c6a200d370200200041146a200b3702002000411c6a200c370200200041246a20062903003702000b2002450d002001102e0b20034190016a24000f0b1038000b1036000b2005200441b8b2c0001056000bd34804017f027e107f037e230041d0016b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b20014184026a350200210320014180026a3502002104200141f4016a2802002105200141e8016a2802002106200141dc016a2802002107200141d0016a2802002108200141c4016a2802002109200141b8016a280200210a200141ac016a280200210b200141a0016a280200210c20014194016a280200210d20014188016a280200210e200141fc006a280200210f200141f0006a2802002110200141e4006a2802002111200141d8006a2802002112200141cc006a2802002113200141c0006a2802002114200241086a200141386a109706200342889b047e200442f0aefa017e7c417f2005417f2006417f2007417f2008417f2009417f200a417f200b417f200c417f200d417f200e417f200f417f2010417f2011417f2012417f201420136a220120012014491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491b22016a221420142001491bad42e8aede067e7c200235021042a0ede0017e7c4280e59af7007c21030240200228020c41808080807872418080808078460d002002280208102e0b200041003b0108200020033703000c1b0b02400240024002400240024002400240024002400240200141086a2802000e0b000102030405060708090a000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a41ecc5cc001044000b2001410c6a3502002103200241086a10a90320022903102104200041003b0108200020032004428094ebdc03807e20032004428094ebdc03827e2203428094ebdc038042ffffffff0f2003428080808080c0b2cd3b541b2003428094ebdc03824280cab5ee0156ad7c42ffffffff0f837c3703000c230b200041003b0108200042b0f7d0003703000c220b200041013b0108200042a8afc8303703000c210b200241086a10a90320022903102103200041013b0108200020033703000c200b200241086a10a90320022903102103200041013b0108200020033703000c1f0b200041013b0108200042e8f084f0003703000c1e0b200041013b01082000200141146a3502004290a7fa2f7e3703000c1d0b200041013b01082000200141146a3502004280f4f02f7e3703000c1c0b200041013b01082000417f200141186a280200220141016a221420142001491bad42f8f88b307e3703000c1b0b200041003b01082000200141146a35020042e8077e3703000c1a0b024002400240024002400240024020012d00040e0700010203040506000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41ecb0c4001044000b200041003b0108200042d8c4c7c8003703000c1e0b200041003b010820004290cf93bc013703000c1d0b200041003b0108200042f8a8ee87013703000c1c0b200041003b010820004288b68eca013703000c1b0b200041003b0108200042d8c4c7c8003703000c1a0b200041003b0108200042f8a8ee87013703000c190b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a4190afc4001044000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c1a0b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c190b200041003b010820004280c2d72f3703000c180b200041023b0108200042a0bebbd8003703000c170b02400240024002400240024020012d00040e06000102030405000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41e89bc4001044000b200041003b0108200042a887a2cf003703000c1a0b200041003b0108200042c8f8978f013703000c190b200041003b0108200042e8e398cf003703000c180b200041003b010820004280c6928b013703000c170b200041003b0108200042b8a8b4ce003703000c160b02400240024002400240200141086a2802000e050001020304000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a4194a7c7001044000b200041003b0108200042e8dae8df003703000c180b200041003b0108200042f085f7cc003703000c170b200041003b0108200042988ef29a013703000c160b200041003b0108200042d0e0dad6003703000c150b200041023b0108200042003703000c140b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2d00000e18000102030405060708090a0b0c0d0e0f1011121314151617000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41f4ebc6001044000b200041003b0108200042f0a8939e023703000c290b200041003b0108200042c8c6ce9e013703000c280b200041003b0108200042b8f4cad7013703000c270b200041003b010820002001410c6a350200220342f8ef9e017e20034280c2d72f7e7c4290fb86ed037c3703000c260b200041003b010820004280e5a9f2003703000c250b200041003b01082000200141146a350200220342f094d6027e200342c0f0f50b7e7c4280d0d98e017c3703000c240b200041003b010820004298e7fcf1003703000c230b200041003b0108200042f0dba8c1003703000c220b200041003b010820004280f7b6bf013703000c210b200041003b0108200042c8b6d0303703000c200b200041003b0108200042c8b6d0303703000c1f0b200041003b0108200042c8b6d0303703000c1e0b200041003b0108200042808fe5303703000c1d0b200041003b0108200042d0a1e4303703000c1c0b200041003b01082000200141146a35020042b891027e428086e8307c3703000c1b0b200041003b010820002001412c6a350200220342c0db9d017e20034280c2d72f7e7c42c0abb4c9037c3703000c1a0b200041003b0108200042a0bde0303703000c190b200041003b01082000200141186a35020042a8edc0107e42d8c8e8c0167c3703000c180b200041003b0108200042c88dfff4d5033703000c170b200041003b0108200042f8b3dac4013703000c160b200041003b01082000200141106a35020022034298bfe50e7e20034280cee4cd027e7c4280e9c9d6017c3703000c150b200041003b010820002001412c6a350200220342b08a9e017e20034280c2d72f7e7c428091a2cb037c3703000c140b200041003b01082000200141146a350200220342b0b2cf087e200342c0f0f50b7e7c20034280c2d72f7e7c42b0fbf2107c3703000c130b108405000b200041003b0108200042b08ee2d00342b0a1bafa0220012802041b3703000c110b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41c499c9001044000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c120b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c110b200041003b0108200042c0cf8e313703000c100b200041003b01082000200141286a35020042d0e50d7e2001411c6a35020042e092197e7c42c0b7828b017c3703000c0f0b109f04000b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2d00000e1a000102030405060708090a0b0c0d0e0f10111213141516171819000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41c0accb001044000b200041003b0108200042a8cad6cf013703000c250b200041003b01082000200141106a35020042a0f80c7e42f89f9fcf007c3703000c240b200041003b010820004288dbaed7013703000c230b200041013b0108200042d0ed9c85013703000c220b200041003b010820004280ac9cd3003703000c210b200041003b010820004288dc82313703000c200b200041003b010820004280b582313703000c1f0b200041003b0108200042b0d0b5b4013703000c1e0b200041003b0108200042d89afd8e013703000c1d0b200041003b01082000429080ef373703000c1c0b200041013b0108200042f899c995013703000c1b0b200041003b01082000429887abd1333703000c1a0b200041003b010820004290fbc2c9323703000c190b200041003b0108200042d09be6303703000c180b200041003b01082000200141146a35020042a01f7e42f0ae87d1007c3703000c170b200041013b01082000200141146a35020042a01f7e42f0ae87d1007c3703000c160b200041003b01082000200141146a35020042b8177e4298d7a9c9007c3703000c150b200041013b01082000200141146a35020042b8177e4298d7a9c9007c3703000c140b200041003b010820002001412c6a35020042b8177e42c0cae5da007c3703000c130b200041003b0108200042b880d9d1013703000c120b200041003b01082000428881b08d013703000c110b200041003b010820004298c3b48d013703000c100b200241086a10a90320022903102103200041003b0108200020033703000c0f0b200041013b0108200042c88892a5033703000c0e0b200041003b010820004290848df0013703000c0d0b0240024002400240024002400240200141086a2d00000e0700010203040506000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41b8afc9001044000b200041013b01082000200141346a35020042b882077e200141386a35020042c0b5e5097e7c42a0c0b291397c3703000c110b200141106a3502002103200241086a2001410c6a28020010970420022903082104200041013b01082000427f2004200342a01f7e42d8878f1c7c22037c220420042003541b3703000c100b200141146a2802002114024002402001410c6a28020041014b0d00200241086a200141106a280200109704427f2014ad42a01f7e42f8f3e32f7c220320022903087c220420042003541b21030c010b2014ad4288277e4280d997a0027c21030b200041013b0108200020033703000c0f0b200041013b0108200042a0949fe6003703000c0e0b200041013b01082000427f200141306a35020042b8177e42e090bd8a027c2203200141386a2903007c220420042003541b3703000c0d0b200041003b010820004290d591bc013703000c0c0b0240024002400240024002400240200141086a2d00000e0700010203040506000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41b8afc9001044000b200041013b01082000200141346a35020042b882077e200141386a35020042c0b5e5097e7c42a0c0b291397c3703000c100b200141106a3502002103200241086a2001410c6a28020010970420022903082104200041013b01082000427f2004200342a01f7e42d8878f1c7c22037c220420042003541b3703000c0f0b200141146a2802002114024002402001410c6a28020041014b0d00200241086a200141106a280200109704427f2014ad42a01f7e42f8f3e32f7c220320022903087c220420042003541b21030c010b2014ad4288277e4280d997a0027c21030b200041013b0108200020033703000c0e0b200041013b0108200042a0949fe6003703000c0d0b200041013b01082000427f200141306a35020042b8177e42e090bd8a027c2203200141386a2903007c220420042003541b3703000c0c0b200041003b010820004290d591bc013703000c0b0b0240024002400240024002400240200141086a2d00000e0700010203040506000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a4188f3c0001044000b200041003b01082000200141146a35020022034288f1117e42d0ef9dbc017c2204200342c8ac137e42c0da8abc017c221520042015561b2204200342c082147e4290faffaf017c220320042003561b3703000c0f0b200041003b0108200042f8a1f095013703000c0e0b200041003b010820002001410c6a35020042e08f1a7e42f0e2efee007c3703000c0d0b4288e3e7d40021030240024002402001410c6a2802000e03010200010b200141106a35020042e0b30e7e42c089ecd1007c21030c010b42f0f7f0920221030b200041003b0108200020033703000c0c0b42e0fca3da022103024020012d00090d00200241086a10a903200229031021030b200041003b0108200020033703000c0b0b200041003b010820002001410c6a350200220342a0838b377e200342c0d1e1237e7c20034280c6868f017e7c4280c2d72f7c3703000c0a0b0240024002400240024002400240024020012d00040e080001020304050607000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41a4c3cb001044000b200041003b010820004280e1eb173703000c0f0b200041003b010820004280e1eb173703000c0e0b200041003b010820004280e1eb173703000c0d0b200041003b010820004280e1eb173703000c0c0b200041003b010820004280e1eb173703000c0b0b200041003b010820004280e1eb173703000c0a0b200041003b010820004280e1eb173703000c090b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a4184ccc2001044000b200041003b0108200042c88b98ff003703000c0a0b200041013b0108200042f8b59f92013703000c090b200041013b0108200042c0b4c6cb003703000c080b024002400240024002400240200141086a2d00000e06000102030405000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41e0f3c0001044000b200041003b0108200042e8b0efff043703000c0b0b200041003b0108200042b8e5dbd3013703000c0a0b200041003b0108200042b895a182053703000c090b20004180023b0108200042a8a0c4a7043703000c080b200041003b0108200042e0ecad90033703000c070b02400240024002400240200141086a2802000e050001020304000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a41aca7c7001044000b200041003b0108200042f0ee8291013703000c090b200041003b0108200042a8aac0cc013703000c080b200041003b010820004288b0b6e7013703000c070b200041003b010820004280c2eca2023703000c060b024002400240024002400240024020012f01040e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a41fcc5cc001044000b200141106a280200220741ffffffff00712007470d0b41082106200141086a2802002114024020074104742201450d002001102c2206450d030b02400240024002402001410476220820074f0d00200141037622052007200520074b1b22054104200541044b1b220541ffffffff00712005464103742108200541047421050240024020010d00200241003602080c010b200241086a41086a41083602002002200136020c200220063602080b200241c0016a20052008200241086a107d200241c8016a280200210120022802c0014101460d0120022802c4012106200141047621080b20142014200741b0026c6a470d0142002103200621050c020b20010d040c0d0b200741b0026c2105200741047441706a4104762109200621010340200241086a2014109704200141086a200241086a41086a29030037030020012002290308370300200141106a2101201441b0026a2114200541d07d6a22050d000b2006200941016a41047422146a2105420021034100210141000d000340427f2003200620016a2903007c220420042003541b21032014200141106a2201470d000b0b427f2007ad4288b0fa007e20037c42c8b8fa067c220420042003541b21032005200622146b210141012107024003402001450d01200141706a2101201441086a2105201441106a211420052d00004101460d000b410021070b02402008450d002006102e0b200041003a0009200020073a0008200020033703000c0a0b200241086a200141086a2802001097042002290308210320022d00102101200041003a0009200020013a00082000427f200342d0ceae3d7c220420042003541b3703000c090b200141106a280200220741ffffffff00712007470d0941082106200141086a2802002114024020074104742201450d002001102c2206450d010b024002402001410476220820074f0d00200141037622052007200520074b1b22054104200541044b1b220541ffffffff00712005464103742108200541047421050240024020010d00200241003602080c010b200241086a41086a41083602002002200136020c200220063602080b200241c0016a20052008200241086a107d200241c8016a280200210120022802c0014101460d0120022802c4012106200141047621080b20142014200741b0026c6a470d0242002103200621050c030b2001450d090b1036000b200741b0026c2105200741047441706a4104762109200621010340200241086a2014109704200141086a200241086a41086a29030037030020012002290308370300200141106a2101201441b0026a2114200541d07d6a22050d000b2006200941016a41047422146a2105420021034100210141000d000340427f2003200620016a2903007c220420042003541b21032014200141106a2201470d000b0b427f2007ad42e88dfb007e20037c42e0b8a1077c220420042003541b21032005200622146b210141012107024003402001450d01200141706a2101201441086a2105201441106a211420052d00004101460d000b410021070b02402008450d002006102e0b200041003a0009200020073a0008200020033703000c050b0240024002400240024002400240024002400240024002400240024002400240200141086a2d00000e10000102030405060708090a0b0c0d0e0f000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41f89bc4001044000b200041003b010820004288b69ac9003703000c120b200041003b0108200042a0ac9c8e013703000c110b200041003b01082000200141146a350200220342b8fea8037e200342c0f0f50b7e7c20034280c2d72f7e7c4290cae8c7277c3703000c100b200041003b0108200042f0d98bc5273703000c0f0b200041003b010820004288bb99aa013703000c0e0b200041003b010820004288abfb99013703000c0d0b200041003b0108200042e0ecafc2003703000c0c0b200041003b010820004288f0efc2003703000c0b0b200041003b0108200042d092b3c2003703000c0a0b200041003b0108200042c8fee29f013703000c090b200041003b0108200042e891b0e6273703000c080b200041003b0108200042e099e6a8013703000c070b200041003b0108200042889e8ad1003703000c060b200041003b010820004288ee8ea8013703000c050b200041003b0108200042e8dcfb90013703000c040b0240024002400240024002400240024002400240024020012d00040e0b000102030405060708090a000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194cccc003602c0012002200241c0016a360218200241086a4198f3c0001044000b200241086a200141286a2802001097042002290308210320022d00102101200041003a0009200020013a00082000427f200342f0f6e0d5007c220420042003541b3703000c0c0b200041003b0108200042f097e5d0003703000c0b0b200041003b0108200042a0fe91d1003703000c0a0b200041003b010820004298b0a4cf003703000c090b200041003b0108200042e0cedfdf003703000c080b200041003b0108200042b0b19ed0003703000c070b200041003b0108200042c0ff90a8013703000c060b200041003b0108200042a0a68f93013703000c050b200041003b0108200042c8e69193013703000c040b200241086a200141c8006a2802001097042002290308210320022d00102101200041003a0009200020013a00082000427f200342b0c1a4e5017c220420042003541b3703000c030b02400240024002400240200141086a2d00000e050001020304000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41889cc4001044000b200241086a200141186a2802002201109704200241003602c801200242013703c0012001200241c0016a10900220023502c8012103024020022802c401450d0020022802c001102e0b2002290308210420022d00102101200041003a0009200020013a00082000427f427f2004200342e8077e42b0b182067c22037c220420042003541b220342c0b2cd3b7c220420042003541b3703000c050b200041003b01082000427f200141146a350200220342a08a077e2001412c6a350200220442e8077e22157c42e0ff9fe1007c2216200342d8a1077e200442b8177e7c428093e49f017c221720162017561b2216200342c0a6087e20157c42b090bbca007c221520162015561b2215200342d886107e20044288277e7c42c0c995d6017c220320152003561b2203200141306a2903007c220420042003541b3703000c040b200041003b01082000427f200141346a350200220342a08a077e42f8c287e1007c2204200342f096087e42b8f9a5ca007c221520042015561b220420034298c5107e4288b6fef8017c220320042003561b2203200141c8006a2903007c220420042003541b3703000c030b200041003b01082000200141346a35020042f8c0077e42b8dfe7a6017c3703000c020b0240024002400240024002400240024002400240200141086a2802000e0a00010203040506070809000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41e0ecc0001044000b200041003b01082000200141146a35020042e8077e42a0a080ec017c3703000c090b200041003b0108200042c0bcd7fc003703000c080b200041003b0108200042c8e4e73f3703000c070b200041003b0108200042b08ddb93013703000c060b200041003b010820004298c6bf89013703000c050b200041003b0108200042d8cac8c7003703000c040b200041003b0108200042b897cedd023703000c030b200041003b01082000428887a88c023703000c020b200041003b0108200042c89596c7003703000c010b0240024002400240024002400240200141086a2d00000e0700010203040506000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602c40120024194c3cb003602c0012002200241c0016a360218200241086a41d4cec8001044000b200041003b01082000200141346a35020042d00f7e42a096ca8f017c3703000c050b200041003b0108200042a0cfe181013703000c040b200041003b01082000200141346a35020042d00f7e42a0899387017c3703000c030b200041003b0108200042c0c1f7d5003703000c020b200041003b010820004288fbb8de013703000c010b200041003b010820004280e4c4f7003703000b200241d0016a24000f0b1038000baa0303067f027e017f230041b0016b22012400200141386a2000109504200141c8006a2001280238220220012802402203109604024020012802482200450d002002200310ff010b20014188016a41086a2203200141c8006a41106a29030037030020014188016a41106a2204200141c8006a41186a29030037030020014188016a41186a2205200141c8006a41206a29030037030020014188016a41206a2206200141f0006a2802003602002001200141c8006a41086a290300370388010240024020000d00200128023c450d012002102e0c010b20014180016a2903002107200141f8006a2903002108200128024c2109200141106a41206a2006280200360200200141106a41186a2005290300370300200141106a41106a2004290300370300200141106a41086a200329030037030020012001290388013703100240200128023c450d002002102e0b200141e0006a2001412c6a290200370300200141d8006a200141246a290200370300200141d0006a2001411c6a290200370300200120012902143703482001200141c8006a2008200710fb012009450d002000102e0b200141b0016a24000bc64b0a017f017e047f017e017f037e087f017e147f027e230041d0076b22042400200441c0006a20024180026a290000370300200441386a200241f8016a290000370300200441286a41086a200241f0016a290000370300200420022900e80137032820022903002105200441e8016a200241880210e9081a200420044180056a3602f403200420044180056a3602f003200441d0056a200441e8016a41086a2206109a04200441f8036a200441e0026a2207109a0402400240024002400240200441d0056a200441f8036a412010ec08450d00200441fc016a2802002208450d00200441f4016a2802002102200841246c21080340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602d4052004200241086a2802003602d005200441f8036a200441d0056a10930220042903f8034203510d00200441ec026a2802002208450d022004280288042109200429038004210a200441e4026a2802002102200841246c2108024002400240024002400340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602d4052004200241086a2802003602d005200441f8036a200441d0056a10930220042903f8034203510d0020042903e801200a520d09200a200429038004520d092009200428028804470d09200441f8036a200641f00010e9081a2004200441d0036a22023602e804200441f8036a2002109b04450d0a200441f8036a200741f00010e9081a200420023602e804200441f8036a2002109b04450d0b2003280210210b20032802002107200441e8016a41186a22024200370300200441e8016a41106a22084200370300200441e8016a41086a22064200370300200442003703e801200441f8036a41a8f8c60041041081022006200441f8036a41086a2209290000370300200420042900f8033703e801200441f8036a41e38bc500410b10810220022009290000370300200820042900f803370300200441186a200441e8016a10850302402007420020052004290320420020042802181b7d220a200a2005561b220a42e01280a7417f200a428080808080ac02541b460d00200441e8016a4102109c0420004201370300200041286a200441e8016a41206a290300370300200041206a2002290300370300200041186a2008290300370300200041106a2006290300370300200020042903e8013703080c0d0b2004418c056a200441286a41086a29030037020020044194056a200441286a41106a2903003702002004419c056a200441286a41186a290300370200200441e2c289ab0636028005200420042903283702840520044198016a41106a200341106a28020036020020044198016a41086a200341086a2902003703002004200329020037039801200441d0056a20044180056a20044198016a109d04200428029006450d02200441e8016a41066a200441d0056a41d00010e9081a200441f8036a200441e8016a41d60010e9081a200441c8006a200441f8036a41066a41d00010e9081a20044198016a200441c8006a41d00010e9081a4101210841002103024020012d00004101470d00200441e8016a41186a2202200141196a290000370300200441e8016a41106a2203200141116a290000370300200441e8016a41086a2206200141096a290000370300200420012900013703e8014120102c2208450d06200820042903e801370000200841186a2002290300370000200841106a2003290300370000200841086a2006290300370000410121030b200420053703f803200441f8036a41086a20044198016a41d00010e90821022004200b3602d404200420073602d00441d000102c2206450d05200441e8016a41086a2207200241086a290300370300200441e8016a41106a2201200241106a290300370300200441e8016a41186a2209200241186a290300370300200420022903003703e801200441f8036a41286a290300210a200441a8046a290300210c200441f8036a41386a290300210d200441b8046a290300210e200441d0056a200441f8036a41c8006a10c501200641386a200e3703002006200d370330200641286a200c3703002006200a370320200641186a2009290300370300200641106a2001290300370300200641086a2007290300370300200620042903e801370300200620042903d005370340200641c8006a200441d0056a41086a280200360200200420033602f804200420033602f404200420083602f0044108102c2202450d05200442083702e406200420023602e006200420053703e8014108210f200441e0066a200441e8016a41081074200441e8016a419997c500108a03200441d0056a20042802e801220820042802f001108b0320042902d405420020042802d00522021b210a2002410120021b2109024020042802ec01450d002008102e0b2004200a4220883e02c407200420093602c007200441106a200441c0076a10ab01410021104100211120042802100d042004280214221220042802c40741286e2202200220124b1bad42287e220c422088a70d06200ca72202417f4c0d060240024020020d00410821130c010b2002102c2213450d060b200241286e2114024020120d00410021120c040b41002115034002400240024020042802c40722084108490d00201541016a211620042802c0072207290000210c2004200841786a22013602c4072004200741086a3602c00741002102200441003a008802200841776a21080240034020012002460d01200441e8016a20026a200720026a220341086a2d00003a00002004200341096a3602c0072004200241016a22033a008802200420083602c4072008417f6a21082003210220034120470d000b200441d0056a41186a2202200441e8016a41186a290300370300200441d0056a41106a2208200441e8016a41106a290300370300200441d0056a41086a2207200441e8016a41086a290300370300200420042903e8013703d005200341ff01714120490d01200441c0066a41086a2007290300220d370300200441c0066a41106a2008290300220e370300200441c0066a41186a20022903002217370300200441a0066a41186a22082017370300200441a0066a41106a2203200e370300200441a0066a41086a2207200d370300200420042903d005220d370380072004200d3703c0062004200d3703a00620152014470d03201441016a220220144f0d020c0b0b200241ff0171450d00200441003a0088020b410021104108210f02402014450d00201441286c450d002013102e0b410021110c070b201441017422012002200120024b1b22024104200241044b1bad42287e220d422088a7454103742102200da721010240024020140d00200441003602e8010c010b200441083602f001200420133602e8012004201441286c3602ec010b200441d0056a20012002200441e8016a107d20042802d8052102024020042802d0054101470d002002450d090c080b20042802d4052113200241286e21140b2013201541286c6a2202200c370300200220042903a006370308200241106a2007290300370300200241186a2003290300370300200241206a20082903003703002016211520162012460d040c000b0b200241246a21022008415c6a22080d000c080b0b200441e8016a4102109c0420004201370300200041286a200441e8016a41206a290300370300200041206a200441e8016a41186a290300370300200041186a200441e8016a41106a290300370300200041106a200441f0016a290300370300200020042903e8013703080c0a0b2012410020131b21112014410020131b21102013410820131b210f0b200441e8016a419997c500200441e0066a108c03200441d0056a20042802e801220820042802f001108d0320042902d405420020042802d00522021b210c024020042802ec01450d002008102e0b200c422088210d20042802e806211820042802e406211920042802e006211a0240200aa7450d002009102e0b2002410120021b211b200da7211c200ca7211d200441e8016a41086a2202200641086a290300370300200441e8016a41106a2208200641106a290300370300200441e8016a41186a2203200641186a290300370300200441e8016a41206a2207200641206a290300370300200441e8016a41286a2201200641286a290300370300200441e8016a41306a2209200641306a290300370300200441e8016a41386a2214200641386a290300370300200441d0056a41086a2212200641cc006a280200360200200420062903003703e801200420062902443703d00502400240200628024022130d00410021070c010b20044180076a41386a2215201429030037030020044180076a41306a2214200929030037030020044180076a41286a2209200129030037030020044180076a41206a2201200729030037030020044180076a41186a2207200329030037030020044180076a41106a2203200829030037030020044180076a41086a22082002290300370300200441c0076a41086a22022012280200360200200420042903e80137038007200420042903d0053703c00720044180056a41386a201529030037030020044180056a41306a201429030037030020044180056a41286a200929030037030020044180056a41206a200129030037030020044180056a41186a200729030037030020044180056a41106a200329030037030020044180056a41086a2008290300370300200420042903800737038005200420133602c005200441c4056a220820042903c007370200200841086a20022802003602004108102c2202450d01200442083702ec01200420023602e801200420053703d005200441e8016a200441d0056a41081074200441f4016a220241086a41002900a19745370000200241002900999745370000200420044180056a36028402200441c0066a200441e8016a10ae01024020042802ec01450d0020042802e801102e0b200441e8016a200441c0066a108e0320042802e801220820042802f001108f022102024020042802ec01450d002008102e0b02400240024020020d00200441d0056a20044180056a41d00010e9081a200441a0066a200441f0046a10c801200441e8016a200441d0056a41d00010e9081a200441e8016a41d0006a220241086a200441a0066a41086a280200360200200220042903a006370200200441d0056a200441c0066a108e0320042802d005220220042802d805200441e8016a108f03024020042802d405450d002002102e0b024020042802ac022202450d00200241306c450d0020042802a802102e0b024020042802bc0241ffffff3f71450d0020042802b802102e0b200441d0056a41186a2201200441c0066a41186a290300370300200441d0056a41106a2209200441c0066a41106a290300370300200441d0056a41086a2214200441c0066a41086a290300370300200420042903c0063703d00541002102024020110e020302000b4100210220112108034020022008410176220320026a2207200f200741286c6a2903002005561b2102200820036b220841014b0d000c020b0b4100210720042802c4052202450d02200241306c450d0220042802c005102e0c020b200f200241286c6a290300220a2005510d002002200a2005546a21020b200441e8016a41186a2001290300370300200441e8016a41106a2009290300370300200441e8016a41086a2014290300370300200420042903d0053703e8010240024020112002490d00024020112010470d00201041016a22082010490d05201041017422032008200320084b1b22084104200841044b1bad42287e220a422088a7454103742108200aa721030240024020100d00200441003602a0060c010b200441083602a8062004200f3602a0062004201041286c3602a4060b200441e0066a20032008200441a0066a107d20042802e806210820042802e0064101460d0220042802e406210f200841286e21100b200f200241286c6a220841286a2008201120026b41286c10ea081a20082005370300200841206a200441e8016a41186a2203290300370300200841186a200441e8016a41106a2201290300370300200841106a200441e8016a41086a2209290300370300200820042903e8013703082003200441d0056a41186a2903003703002001200441d0056a41106a2903003703002009200441d0056a41086a290300370300200420042903d0053703e8010240201c201d470d00201d41016a2202201d490d05201d41017422082002200820024b1b22024104200241044b1b220241ffffff3f7120024621082002410574210202400240201d0d00200441003602a0060c010b200441013602a8062004201b3602a0062004201d4105743602a4060b200441e0066a20022008200441a0066a107d20042802e8062102024020042802e0064101470d002002450d060c050b20042802e406211b2002410576211d0b41012107201141016a2111201b201c4105746a220220042903e801370000200241186a2003290300370000200241106a2001290300370000200241086a2009290300370000201c41016a211c0c020b200220111045000b2008450d020c010b200641d0006a220220026b220841d0006d210302402008450d00200341d0006c2108200241c4006a21020340024020022802002203450d00200341306c450d002002417c6a280200102e0b200241d0006a2102200841b07f6a22080d000b0b2006102e0240024002402007450d00024002400240201c450d00201c4105742106200441ac026a2102201b21080340200441c0076a2008108e03200441e8016a20042802c007220720042802c807109003200441d0056a41086a2201200441e8016a41086a290300370300200441d0056a41106a2209200441e8016a41106a290300370300200441d0056a41186a2214200441e8016a41186a290300370300200441d0056a41206a2212200441e8016a41206a290300370300200441d0056a41286a2213200441e8016a41286a290300370300200441d0056a41306a2215200441e8016a41306a290300370300200441d0056a41386a2216200441e8016a41386a290300370300200441c0066a41086a221e200241086a290200370300200441c0066a41106a221f200241106a290200370300200441c0066a41186a2220200241186a280200360200200420042903e8013703d005200420022902003703c006024020042802a8022203450d0020044180056a41386a201629030037030020044180056a41306a201529030037030020044180056a41286a201329030037030020044180056a41206a201229030037030020044180056a41186a201429030037030020044180056a41106a200929030037030020044180056a41086a2001290300370300200441a0066a41086a201e290300370300200441a0066a41106a201f290300370300200441a0066a41186a2020280200360200200420042903d00537038005200420042903c0063703a0060b024020042802c407450d002007102e0b20030d02200841206a2108200641606a22060d000b0b4200210a410821070c010b20044180076a41386a220220044180056a41386a29030037030020044180076a41306a220120044180056a41306a29030037030020044180076a41286a220920044180056a41286a29030037030020044180076a41206a221420044180056a41206a29030037030020044180076a41186a221220044180056a41186a29030037030020044180076a41106a221320044180056a41106a29030037030020044180076a41086a221520044180056a41086a290300370300200441e0066a41086a2216200441a0066a41086a290300370300200441e0066a41106a221e200441a0066a41106a290300370300200441e0066a41186a221f200441a0066a41186a280200360200200420042903800537038007200420042903a0063703e00641e000102c2207450d04200720042903800737030020072003360240200720042903e006370244200741386a2002290300370300200741306a2001290300370300200741286a2009290300370300200741206a2014290300370300200741186a2012290300370300200741106a2013290300370300200741086a2015290300370300200741cc006a2016290300370200200741d4006a201e290300370200200741dc006a201f280200360200024020064120470d00428180808010210a0c010b200841206a2112201b201c4105746a222141606a2122200441e8016a41c4006a2102428180808010210a0340201221080340200441c0076a2008108e03200441e8016a20042802c007221420042802c807109003200441d0056a41086a2206200441e8016a41086a2223290300370300200441d0056a41106a2201200441e8016a41106a2224290300370300200441d0056a41186a2209200441e8016a41186a2225290300370300200441d0056a41206a2212200441e8016a41206a2226290300370300200441d0056a41286a2213200441e8016a41286a2227290300370300200441d0056a41306a2215200441e8016a41306a2228290300370300200441d0056a41386a2216200441e8016a41386a2229290300370300200441c0066a41086a221e200241086a290200370300200441c0066a41106a221f200241106a290200370300200441c0066a41186a2220200241186a280200360200200420042903e8013703d005200420022902003703c006024020042802a8022203450d0020044180056a41386a201629030037030020044180056a41306a201529030037030020044180056a41286a201329030037030020044180056a41206a201229030037030020044180056a41186a200929030037030020044180056a41106a200129030037030020044180056a41086a2006290300370300200441a0066a41086a201e290300370300200441a0066a41106a201f290300370300200441a0066a41186a2020280200360200200420042903d00537038005200420042903c0063703a0060b024020042802c407450d002014102e0b024020030d002021200841206a2208470d010c030b0b20044180076a41386a221420044180056a41386a29030037030020044180076a41306a221220044180056a41306a29030037030020044180076a41286a221320044180056a41286a29030037030020044180076a41206a221520044180056a41206a29030037030020044180076a41186a221620044180056a41186a29030037030020044180076a41106a221e20044180056a41106a29030037030020044180076a41086a221f20044180056a41086a290300370300200441e0066a41086a2220200441a0066a41086a290300370300200441e0066a41106a222a200441a0066a41106a290300370300200441e0066a41186a222b200441a0066a41186a280200360200200420042903800537038007200420042903a0063703e0062023201f2903003703002024201e290300370300202520162903003703002026201529030037030020272013290300370300202820122903003703002029201429030037030020042004290380073703e801200620202903003703002001202a2903003703002009202b280200360200200420042903e0063703d00502400240200a422088a72214200aa7460d00200a210c0c010b201441016a22122014490d0720144101742213201220122013491b22124104201241044b1bad42e0007e220c422088a7454103742112200ca721130240024020140d0020044100360280050c010b200441083602880520042007360280052004201441e0006c360284050b200441c0066a2013201220044180056a107d20042802c806211220042802c0064101460d0420042802c4062107201241e0006ead210c0b200841206a21122007201441e0006c6a221420042903e801370300201441106a2024290300370300201441086a20232903003703002028290300210d2029290300210e202729030021172026290300212c2025290300212d201441c0006a2003360200201441186a202d370300201441206a202c370300201441286a2017370300201441386a200e370300201441306a200d370300201441c4006a20042903d005370200201441cc006a2006290300370200201441d4006a2001290300370200201441dc006a2009280200360200200c42ffffffff0f83200a4280808080107c4280808080708384210a20222008470d000b0b20044188026a201136020020044184026a2010360200200441fc016a201c360200200441f8016a201d3602002004200f360280022004201b3602f401200420183602f001200420193602ec012004201a3602e801201141286c4104722202417f4c0d042002102c2208450d03200441003602880520042002360284052004200836028005201120044180056a107602402011450d00200f201141286c6a2103200f21020340200420022903003703d00520044180056a200441d0056a410810744120102c2208450d05200442203702d405200420083602d005200441d0056a200241086a22024120107420044180056a20042802d005220820042802d8051074024020042802d405450d002008102e0b200241206a22022003470d000b0b200441d0056a419997c500108a0320042802d005220220042802d80520044180056a10c502024020042802d405450d002002102e0b0240200428028405450d00200428028005102e0b200441d0056a419997c500200441e8016a108c0320042802d005220220042802d805200441f4016a109103024020042802d405450d002002102e0b02402019450d00201a102e0b0240201d41ffffff3f71450d00201b102e0b2010450d02201041286c450d02200f102e0c020b02402019450d00201a102e0b0240201d41ffffff3f71450d00201b102e0b4100210702402010450d00201041286c450d00200f102e0b0c010b2012450d020c010b024020042802f40441ffffff3f71450d0020042802f004102e0b024020070d000240200441c4046a2802002202450d00200241306c450d0020042802c004102e0b200441e8016a4103109c0420004201370300200041286a200441e8016a41206a290300370300200041206a200441e8016a41186a290300370300200041186a200441e8016a41106a290300370300200041106a200441f0016a290300370300200020042903e8013703080c090b024002400240200b4101200b41014b1b2202418094ebdc036e2002418094ebdc03704100476a22084101200841014b1b220820024b0d002002200a422088a7220641036c220320022003491b20086ead428094ebdc037e200220086ead80a7109e042103200641ffffffff03712006470d0420064102742202417f4c0d040240024020020d00410421010c010b2002102c2201450d040b02402002410276220920064f0d00200241017622082006200820064b1b22084104200841044b1b220841ffffffff03712008464102742109200841027421080240024020020d00200441003602e8010c010b200441f0016a4104360200200420023602ec01200420013602e8010b200441d0056a20082009200441e8016a107d200441d8056a2802002102024020042802d0054101460d0020042802d4052101200241027621090c030b2002450d050c040b20060d01410021020c020b41d0d8c800411941bcd7cc001039000b2006210820012102034020022003360200200241046a21022008417f6a22080d000b200621020b2004200720062001200220042802d0041092034108102c2202450d0020044208370284052004200236028005200420053703e80120044180056a200441e8016a4108107420044194056a41002900a1974537020020044100290099974537028c05200441eb056a20044180056a41186a280200360000200441e3056a20044180056a41106a290300370000200441db056a20042903880537000020042004290380053700d305200441f1016a200441d0056a41086a290000370000200441f9016a200441d0056a41106a290000370000200441e8016a41186a200441e7056a29000037000020044188026a41013a0000200441053a00e801200420042900d0053700e901200441e8016a10fe0102402009450d002001102e0b02402006450d00200641e0006c2108200741d4006a210203400240200241706a2802002203450d00200341306c450d002002416c6a280200102e0b0240200228020041ffffff3f71450d002002417c6a280200102e0b200241e0006a2102200841a07f6a22080d000b0b0240200aa72202450d00200241e0006c450d002007102e0b0240200441c4046a2802002202450d00200241306c450d0020042802c004102e0b2000420037030820004200370300200041186a41013a0000200441d0076a24000f0b1036000b1038000b200241246a21022008415c6a22080d000b0b0240200441fc016a2802002208450d00200441e8016a410c6a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022008415c6a22080d000b0b200441f8016a2802002202450d00200241246c450d0020042802f401102e0b0240200441ec026a2802002208450d00200441e4026a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a280200102e0c030b2002410c6a280200450d02200241086a280200102e0c020b2002410c6a280200450d01200241086a280200102e0c010b200241086a280200450d00200241046a280200102e0b200241246a21022008415c6a22080d000b0b200441e8026a2802002202450d00200241246c450d0020042802e402102e0b200441e8016a4101109c0420004201370300200041286a200441e8016a41206a290300370300200041206a200441e8016a41186a290300370300200041186a200441e8016a41106a290300370300200041106a200441f0016a290300370300200020042903e8013703080b2003280204210002402003410c6a2802002202450d002002410c6c21082000210203400240200241046a280200450d002002280200102e0b2002410c6a2102200841746a22080d000b0b200341086a2802002202450d002002410c6c450d002000102e0b200441d0076a24000bfb0201037f230041206b22022400200241003602082002420137030002404120102c2203450d002002422037021420022003360210200241106a200141106a412010742002200228021022032002280218107402402002280214450d002003102e0b200120021091024120102c2203450d002002422037021420022003360210200241106a200141306a412010742002200228021022032002280218107402402002280214450d002003102e0b4120102c2203450d002002422037021420022003360210200241106a200141d0006a412010742002200228021022032002280218107402402002280214450d002003102e0b200128020421032001410c6a2802002201200210760240200141246c2201450d000340200241106a200310ef042002200228021022042002280218107402402002280214450d002004102e0b200341246a21032001415c6a22010d000b0b200020022802002203200228020810b00102402002280204450d002003102e0b200241206a24000f0b1036000bc90a03047f037e057f230041c0026b220224000240024002402000410c6a28020022030d00200241f8016a411f6a200241d0016a411f6a280000360000200241f8016a41186a200241d0016a41186a290300370300200241f8016a41106a200241d0016a41106a290300370300200241f8016a41086a200241d0016a41086a290300370300200220022903d0013703f8010c010b20002003417f6a220336020c200241d0016a411f6a22042000280204200341246c6a220341206a280000360000200241d0016a41186a2205200341196a290000370300200241d0016a41086a200341096a2900002206370300200241d0016a41106a200341116a29000022073703002002200329000122083703d00120032d00002103200241f8016a411f6a22092004280000360000200241f8016a41186a22042005290300370300200241f8016a41106a22052007370300200241f8016a41086a220a2006370300200220083703f80120034106460d00200241a8016a411f6a220b2009280000360000200241a8016a41186a22092004290300370300200241a8016a41106a20052903002206370300200241a8016a41086a200a290300220737030020024180016a41096a200737000020024180016a41116a200637000020024180016a41196a200929030037000020024180016a41206a200b280000360000200220022903f80122063703a8012002200637008101200220033a00800102400240024020034103470d0020024180016a41017228000041c28289aa04470d01200220024180016a41106a2802003602d401200220024180016a41086a2802003602d001200241f8016a200241d0016a10a701410121030240024020022d00f8014101470d00410021030c010b200241f8006a200241b1026a290000370300200241f0006a200241a9026a290000370300200241e8006a200241a1026a290000370300200241e0006a20024199026a290000370300200241d8006a20024191026a290000370300200241c0006a41106a20024189026a290000370300200241c0006a41086a20024181026a290000370300200220022900f9013703400b200241f8016a41386a2204200241c0006a41386a290300370300200241f8016a41306a2205200241c0006a41306a290300370300200241f8016a41286a2209200241c0006a41286a290300370300200241f8016a41206a220a200241c0006a41206a290300370300200241f8016a41186a220b200241c0006a41186a290300370300200241f8016a41106a220c200241c0006a41106a290300370300200241f8016a41086a220d200241c0006a41086a290300370300200220022903403703f8012003450d01200241386a2004290300370300200241306a2005290300370300200241286a2009290300370300200241206a200a290300370300200241186a200b290300370300200241106a200c290300370300200241086a200d290300370300200220022903f80137030002402002418c016a280200450d0020024188016a280200102e0b200241f8016a2000109a042002200241f8016a4120200110fa04450d03200041046a220410e10141012103200041086a2802002200450d04200041246c450d042004280200102e0c040b0240024020030e050400010304030b2002418c016a280200450d0320024188016a280200102e0c030b2002418c016a280200450d0220024188016a280200102e0c020b2002418c016a280200450d0120024188016a280200102e0c010b20024188016a280200450d00200228028401102e0b200041046a220410e10141002103200041086a2802002200450d00200041246c450d002004280200102e0b200241c0026a240020030bd50101047f230041c0006b220224004116210341baddc8002104410221050240024002400240200141ff01710e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602242002418883ca003602202002200241206a360218200241086a4190b7c4001044000b4118210341dfdcc8002104410021050c010b4118210341f7dcc8002104410121050b20004183043b0118200041003a001020004200370300200041206a20033602002000411c6a20043602002000411a6a20053a0000200241c0006a24000baa1404077f047e017f057e230041e0036b2203240020012800002104200341106a41186a2001411c6a290000370300200341106a41106a200141146a290000370300200341106a41086a2001410c6a2900003703002003200129000437031020022802002105200341b0036a41186a22064200370300200341b0036a41106a22014200370300200341b0036a41086a22074200370300200342003703b003200341d0006a41a081ca0041071081022007200341d0006a41086a2208290000370300200320032900503703b003200341d0006a41e4d1c100410c1081022006200829000037030020012003290050370300200341086a200341b0036a4120108e0241002109024002402005200328020c410020032802081b470d0020084120360200200320043602502003200341106a360254200341d0026a200341d0006a10c203200341d0006a20032802d002220520032802d80210f4022007200341d9006a2900003703002001200341e1006a2900003703002006200341e9006a290000370300200320032900513703b003024020032d00504101470d00200341306a41186a200341b0036a41186a290300370300200341306a41106a200341b0036a41106a290300370300200341306a41086a200341b0036a41086a290300370300200320032903b003370330410121090b024020032802d402450d002005102e0b2002410c6a2802002106200241086a280200210520022802042107024020090d002000410036024002402006450d002006410c6c21002007210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2005450d022005410c6c450d022007102e0c020b20022802102104200341d0016a41186a2202200341306a41186a290300220a370300200341d0016a41106a2208200341306a41106a290300220b370300200341d0016a41086a2209200341306a41086a290300220c37030020032003290330220d3703d001200341d0006a41186a200a370300200341d0006a41106a200b370300200341d0006a41086a200c3703002003200d370350200341d0026a200341d0006a10bf01200341f0016a41186a220e2002290300370300200341f0016a41106a22022008290300370300200341f0016a41086a2009290300370300200320032903d0013703f001024020032802f00222080d002000410036024002402006450d002006410c6c21002007210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2005450d022005410c6c450d022007102e0c020b20034190026a41186a200e29030037030020034190026a41106a200229030037030020034190026a41086a200341f0016a41086a290300370300200320032903f00137039002200341b0026a41186a200341d0026a41186a290300370300200341b0026a41106a200341d0026a41106a290300370300200341b0026a41086a200341d0026a41086a290300370300200320032903d0023703b002200341f8026a290300210a20032802f4022102200341b0036a41186a4200370300200341b0036a41106a4200370300200341b0036a41086a22094200370300200342003703b003200341d0006a41a081ca0041071081022009200341d0006a41086a220e290000370300200320032900503703b003200341d0006a41f09dc500410a108102200141086a200e29000037000020012003290050370000200341d0036a200341b0036a1088030240024020032802d00322090d00410021010c010b20032902d403220b422088a72101200b42ffffff3f83500d002009102e0b0240024020042001460d002000410036024002402002450d00200241306c450d002008102e0b02402006450d002006410c6c21002007210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2005450d032005410c6c0d010c030b2000200329039002220b370300200041206a20032903b002220c370300200341d0006a41186a20034190026a41186a290300220d370300200341d0006a41106a20034190026a41106a290300220f370300200341d0006a41086a20034190026a41086a2903002210370300200341d0006a41286a200341b0026a41086a2903002211370300200341d0006a41306a200341b0026a41106a2903002212370300200341d0006a41386a200341b0026a41186a2903002213370300200041086a2010370300200041106a200f370300200041186a200d370300200041286a2011370300200041306a2012370300200041386a20133703002003200b3703502003200c370370200041c8006a200a370300200020023602442000200836024002402006450d002006410c6c21002007210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2005450d022005410c6c450d020b2007102e0c010b200341d0006a2005109908200341d0026a41086a200341d0006a410c6a290200370300200341d0026a41106a200341d0006a41146a290200370300200341d0026a41186a200341d0006a411c6a290200370300200320032902543703d0020240024020032802504101470d00200341b0036a41086a2205200341d0026a41086a290300220a370300200341b0036a41106a2206200341d0026a41106a290300220b370300200341b0036a41186a2207200341d0026a41186a290300220c370300200320032903d002220d3703b003200341f4006a2802002101200341b0026a41186a2208200c370300200341b0026a41106a2209200b370300200341b0026a41086a220e200a3703002003200d3703b002024020012002280210460d00200041003602400c020b20072008290300370300200620092903003703002005200e290300370300200320032903b0023703b0032002410c6a280200210720022802042108200341d0026a10ab0202402007450d0020082007410c6c6a210541002802cca140210641002902c4a140210a20082101034020034190026a41086a20063602002003200a37039002200341d0006a200341d0026a20034190026a2001280200200141086a28020010b0022001410c6a22012005470d000b0b200341d0006a200341d0026a41e00010e9081a200341c8016a200341c8036a290300370300200341c0016a200341c0036a290300370300200341b8016a200341b0036a41086a290300370300200320032903b0033703b0012000200341d0006a2004200341106a109a08200341d0006a10b80202402007450d002007410c6c21002008210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241086a2802002201450d022001410c6c450d022008102e0c020b200041003602400b2002280204210502402002410c6a2802002201450d002001410c6c21002005210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241086a2802002201450d002001410c6c450d002005102e0b200341e0036a24000b2e01017e2000ad220120017e220142808090bbbad6adf00d200142808090bbbad6adf00d541b428094ebdc0380a70b4d01017f230041206b22002400200041146a4101360200200042013702042000419cc3cb003602002000410436021c20004194c3cb003602182000200041186a360210200041f4afc4001044000bfa0a02047f047e230041b0016b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041023a00000c010b2002280214210302400240200241186a2802002204450d004100210502400240024020012d00000e020100030b200241003a006020044101460d0220012d00012105200241013a0060200220053a004020044102460d0120012d00022105200241023a0060200220053a004120044103460d0120012d00032105200241033a0060200220053a004220044104460d0120012d00042105200241043a0060200220053a004320044105460d0120012d00052105200241053a0060200220053a004420044106460d0120012d00062105200241063a0060200220053a004520044107460d0120012d00072105200241073a0060200220053a004620044108460d0120012d00082105200241083a0060200220053a004720044109460d0120012d00092105200241093a0060200220053a00482004410a460d0120012d000a21052002410a3a0060200220053a00492004410b460d0120012d000b21052002410b3a0060200220053a004a2004410c460d0120012d000c21052002410c3a0060200220053a004b2004410d460d0120012d000d21052002410d3a0060200220053a004c2004410e460d0120012d000e21052002410e3a0060200220053a004d2004410f460d0120012d000f21052002410f3a0060200220053a004e20044110460d0120012d00102105200241103a0060200220053a004f20044111460d0120012d00112105200241113a0060200220053a005020044112460d0120012d00122105200241123a0060200220053a005120044113460d0120012d00132105200241133a0060200220053a005220044114460d0120012d00142105200241143a0060200220053a005320044115460d0120012d00152105200241153a0060200220053a005420044116460d0120012d00162105200241163a0060200220053a005520044117460d0120012d00172105200241173a0060200220053a005620044118460d0120012d00182105200241183a0060200220053a005720044119460d0120012d00192105200241193a0060200220053a00582004411a460d0120012d001a21052002411a3a0060200220053a00592004411b460d0120012d001b21052002411b3a0060200220053a005a2004411c460d0120012d001c21052002411c3a0060200220053a005b2004411d460d0120012d001d21052002411d3a0060200220053a005c2004411e460d0120012d001e21052002411e3a0060200220053a005d2004411f460d0120012d001f21052002411f3a0060200220053a005e20044120460d01200241206a41106a200241c0006a41106a290300370300200241206a41086a200241c0006a41086a290300370300200220012d00203a005f200241206a41186a200241c0006a41186a290300370300200241203a006020022002290340220637036820022006370320410121050b200241c0006a41186a200241206a41186a2903002206370300200241c0006a41106a200241206a41106a2903002207370300200241c0006a41086a200241206a41086a2903002208370300200220022903202209370340200020053a000020002009370001200041096a2008370000200041116a2007370000200041196a20063700000c020b200241003a00600b20024100360270200242013703682002410a3602242002200241086a3602202002200241e8006a3602ac01200241d4006a410136020020024201370244200241909dc5003602402002200241206a360250200241ac016a419cebc000200241c0006a103d1a2002280268200228027010ef020240200228026c450d002002280268102e0b200041023a00000b2003450d002001102e0b200241b0016a24000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10b5050240024020022802480d0020024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241909dc5003602482002200241386a360258200241c4006a419cebc000200241c8006a103d1a2002280228200228023010ef020240200228022c450d002002280228102e0b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d002001102e0b200241e0006a24000ba50904047f017e087f047e23004190026b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ab010240024020022802000d000240024020022802042205200228022441286e2201200120054b1bad42287e2206422088a70d002006a72201417f4c0d000240024020010d00410821070c010b2001102c2207450d020b200141286ead2106024002402005450d00410021080340200241003a00c801200841016a210820022802242109417f210a4100210102400240024002400240034020092001460d01200241a8016a20016a2002280220220b2d00003a000020022009200a6a3602242002200b41016a3602202002200141016a220c3a00c801200a417f6a210a200c2101200c4120470d000b200241f0016a41186a2201200241a8016a41186a290300370300200241f0016a41106a220a200241a8016a41106a290300370300200241f0016a41086a220d200241a8016a41086a290300370300200220022903a8013703f001200c41ff01714120490d0120024188016a41086a220e200d29030037030020024188016a41106a220d200a29030037030020024188016a41186a220a2001290300370300200220022903f001370388012009200c6b22014108490d01200241c8006a41086a200e290300220f370300200241c8006a41106a200d2903002210370300200241c8006a41186a200a2903002211370300200241286a41086a220c200f370300200241286a41106a22092010370300200241286a41186a220d2011370300200b290001210f2002200b41096a3602202002200141786a36022420022002290388012210370348200220103703282006422088a722012006a7470d04200141016a220a2001490d082001410174220b200a200a200b491b220a4104200a41044b1bad42287e2206422088a745410374210a2006a7210b20010d02200241003602a8010c030b200141ff0171450d00200241003a00c8010b2006a72201450d08200141286c450d082007102e0c080b200241083602b001200220073602a8012002200141286c3602ac010b200241f0016a200b200a200241a8016a107d20022802f801210a20022802f0014101460d0320022802f4012107200a41286ead21060b2007200141286c6a220a2002290328370300200c290300211020092903002111200d2903002112200a200f370320200a41186a2012370300200a41106a2011370300200a41086a2010370300200642ffffffff0f83200141016aad42208684210620082005470d000b0b2007450d0320002006370204200020073602000c040b200a0d010b1038000b1036000b200241003602f801200242013703f0012002410a3602d4012002200241086a3602d0012002200241f0016a36028801200241bc016a4101360200200242013702ac01200241909dc5003602a8012002200241d0016a3602b80120024188016a419cebc000200241a8016a103d1a20022802f00120022802f80110ef02024020022802f401450d0020022802f001102e0b200041003602000b2004450d002003102e0b20024190026a24000b9d0902057f017e230041b0016b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041003a00000c010b200241186a280200210320022802142104200241003a0060024002402003450d00200220012d00003a0040200241013a0060024020034101460d00200220012d00013a0041200241023a006020034102460d00200220012d00023a0042200241033a006020034103460d00200220012d00033a0043200241043a006020034104460d00200220012d00043a0044200241053a006020034105460d00200220012d00053a0045200241063a006020034106460d00200220012d00063a0046200241073a006020034107460d00200220012d00073a0047200241083a006020034108460d00200220012d00083a0048200241093a006020034109460d00200220012d00093a00492002410a3a00602003410a460d00200220012d000a3a004a2002410b3a00602003410b460d00200220012d000b3a004b2002410c3a00602003410c460d00200220012d000c3a004c2002410d3a00602003410d460d00200220012d000d3a004d2002410e3a00602003410e460d00200220012d000e3a004e2002410f3a00602003410f460d00200220012d000f3a004f200241103a006020034110460d00200220012d00103a0050200241113a006020034111460d00200220012d00113a0051200241123a006020034112460d00200220012d00123a0052200241133a006020034113460d00200220012d00133a0053200241143a006020034114460d00200220012d00143a0054200241153a006020034115460d00200220012d00153a0055200241163a006020034116460d00200220012d00163a0056200241173a006020034117460d00200220012d00173a0057200241183a006020034118460d00200220012d00183a0058200241193a006020034119460d00200220012d00193a00592002411a3a00602003411a460d00200220012d001a3a005a2002411b3a00602003411b460d00200220012d001b3a005b2002411c3a00602003411c460d00200220012d001c3a005c2002411d3a00602003411d460d00200220012d001d3a005d2002411e3a00602003411e460d00200220012d001e3a005e2002411f3a00602003411f460d00200241206a41106a2203200241c0006a41106a290300370300200241206a41086a2205200241c0006a41086a290300370300200220012d001f3a005f200241206a41186a2206200241c0006a41186a290300370300200241203a006020022002290340220737036820022007370320200041196a2006290300370000200041116a2003290300370000200041096a200529030037000020002002290320370001410121030c020b200241003a00600b20024100360270200242013703682002410a3602242002200241086a3602202002200241e8006a3602ac01200241d4006a410136020020024201370244200241909dc5003602402002200241206a360250200241ac016a419cebc000200241c0006a103d1a2002280268200228027010ef020240200228026c450d002002280268102e0b410021030b200020033a00002004450d002001102e0b200241b0016a24000bf50101037f230041206b220224002000410036020820004201370200024002400240024020012802000e03000102030b200241013a000f20002002410f6a41011074200128020421032001410c6a2802002204200010760240200441286c2204450d00200320046a2104034020002003412010742002200341206a2903003703102000200241106a41081074200341286a22032004470d000b0b2000200141106a412010740c020b200241023a000f20002002410f6a410110742002200128020436021c20002002411c6a410410740c010b200241033a000f20002002410f6a41011074200141086a20001096020b200241206a24000b850301047f230041f0006b22012400200141086a41206a200041206a280200360200200141086a41186a200041186a290200370300200141086a41106a200041106a290200370300200141086a41086a2202200041086a29020037030020012000290200370308200141306a41186a22004200370300200141306a41106a22034200370300200141306a41086a420037030020014200370330200141306a41d9fcc6004106108102200141e0006a41b4f4cb0041061081022000200141e0006a41086a220429000037030020032001290060370300200141d0006a200141086a10ef042004200141d0006a41086a28020036020020012001290350370360200141306a4120200141e0006a10c7020240024002400240024020012d00080e050400010204030b200141146a280200450d03200141106a280200102e0c030b200141146a280200450d02200141106a280200102e0c020b200141146a280200450d01200141106a280200102e0c010b2002280200450d00200128020c102e0b200141f0006a24000ba50101047f230041106b2202240002404121410120012d000041014622031b2204102c2205450d002002410036020820022004360204200220053602000240024020030d00200241003a000f20022002410f6a410110740c010b200241013a000f20022002410f6a410110742002200141016a412010740b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241106a24000f0b1036000b850201037f230041d0006b22022400200241086a41dffcc6004109108102200241186a41d3b1c4004106108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000be22505027f017e027f017e037f230041b0046b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b200241086a200141386a10ca0120024180026a41286a200141306a29030037030020024180026a41206a200141286a29030037030020024180026a41186a200141206a29030037030020024180026a41106a200141186a29030037030020024180026a41086a200141106a2903003703002002200141086a29030037038002200141f8016a280200210320024180026a41306a200241086a41c00110e9081a20014180026a2903002104200241086a20024180026a41f00110e9081a200041086a200241086a41f00110e9081a20004180026a2004370300200041f8016a20033602002000411b3602000c1b0b20024180026a200141086a10cb0120004100360200200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c1a0b20024180026a200141046a10cc0120004101360200200041246a200241a0026a2802003602002000411c6a20024198026a290300370200200041146a20024190026a2903003702002000410c6a20024188026a29030037020020002002290380023702040c190b20024180026a200141086a10cd01200041086a20024180026a41a00210e9081a200041023602000c180b20004103360200200041086a200141086a2903003703000c170b41042103200141046a210502400240024002400240024002400240024020012d0004417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002105410121030c040b41022103200241086a41026a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a29020037038002200141086a2802002105200141286a28020021010c040b200141086a2802002105410321030c020b2002410a6a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a2902003703800220012d00254100472106200141086a2802002105200141286a28020021010c030b200141086a2802002105410521030b0b0b200020033a0004200020022f01083b0005200020063a0025200020022f01fc013b0126200041086a20053602002000410c6a200229038002370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a20024180026a41086a2903003702002000411c6a20024190026a290300370200200041246a20024198026a2d00003a0000200041043602000c160b20024180026a200141086a10ce01200041086a20024180026a41e00010e9081a200041053602000c150b20024180026a200141046a10cf01200041063602002000410c6a20024188026a28020036020020002002290380023702040c140b20024180026a200141086a10d001200041086a20024180026a41d80010e9081a200041073602000c130b10d101000b02400240200128020422050d00410021030c010b20024180026a41186a200141286a29000037030020024180026a41106a200141206a29000037030020024188026a200141186a29000037030020024180026a41286a200141386a29000037030020024180026a41306a200141c0006a29000037030020024180026a41386a200141c8006a29000037030020024180026a41c8006a200141d8006a29000037030020024180026a41d0006a200141e0006a29000037030020024180026a41d8006a200141e8006a2900003703002002200141106a290000370380022002200141306a2900003703a0022002200141d0006a2900003703c00220024180026a41f8006a20014188016a29000037030020024180026a41f0006a20014180016a29000037030020024180026a41e8006a200141f8006a29000037030020024180026a4198016a200141a8016a29000037030020024180026a4190016a200141a0016a29000037030020024180026a4188016a20014198016a29000037030020024180026a41b8016a200141c8016a29000037030020024180026a41b0016a200141c0016a29000037030020024180026a41a8016a200141b8016a2900003703002002200141f0006a2900003703e002200220014190016a290000370380032002200141b0016a2900003703a0032001410c6a2802002201417f4c0d130240024020010d00410121030c010b2001102c2203450d150b20032005200110e9081a200241086a20024180026a41c00110e9081a0b200020033602042000410c6a2001360200200041086a2001360200200041106a200241086a41c00110e9081a200041093602000c110b20024180026a200141086a10d201200041086a20024180026a41980210e9081a2000410a3602000c100b20024180026a200141046a10d301200041046a20024180026a41e80010e9081a2000410b3602000c0f0b10d401000b20024180026a200141086a10d5012000410d360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0d0b20024180026a200141086a10d6012000410e360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0c0b20024180026a200141086a10d6012000410f360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0b0b20024180026a200141086a10d70120004110360200200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0a0b200141046a2103410721050240024002400240024002400240024020012d0004417f6a0e0701020304050607000b41e2a0cc00412841a4c3cb001039000b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410121050c050b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410221050c040b20024180026a41186a200341196a29000037030020024180026a41106a200341116a29000037030020024180026a41086a200341096a290000370300200241086a41086a200341296a290000370300200241086a41106a200341316a290000370300200241086a41186a200341396a29000037030020022003290001370380022002200341216a290000370308410321050c030b200241086a200141086a10c8012002418b026a200241086a41086a2802003600002002200229030837008302410421050c020b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410521050c010b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410621050b200020053a0004200020022903800237000520002002290308370025200020022f00fc013b00452000410d6a20024180026a41086a290300370000200041156a20024180026a41106a2903003700002000411d6a20024180026a41186a2903003700002000412d6a200241086a41086a290300370000200041356a200241086a41106a2903003700002000413d6a200241086a41186a290300370000200041c7006a200241fe016a2d00003a0000200041113602000c090b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a2903002104200141306a29030021074101210841012109024002400240024002402001410c6a2d00000e050104020300010b4104210920024180026a41046a200141206a2d00003a000020022001411c6a2800003602800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a28020021050c030b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410021090c020b200141186a2802002203417f4c0d0f200141106a28020021010240024020030d00410121050c010b2003102c2205450d110b20052001200310e9081a410221092003210a0c010b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410321090b200241086a41106a20024180026a41106a2d00003a0000200241086a41086a20024180026a41086a290300370300200241046a41026a200241fc016a41026a2d00003a00002002200229038002370308200220022f00fc013b01040c030b2001410c6a28020022094108762106410221080c010b2001410c6a28020022094108762106410321080b0b200020022f01043b002d20004112360200200041386a2004370300200041306a2007370300200041186a200a360200200041146a2003360200200041106a2005360200200041086a20083602002000411c6a20022903083702002000410c6a2006410874200941ff017172360200200041246a200241086a41086a2903003702002000412c6a200241086a41106a2d00003a00002000412f6a200241066a2d00003a00000c080b20024180026a200141086a10d801200041086a20024180026a41f00010e9081a200041133602000c070b20024180026a200141086a10d901200041086a20024180026a41f80010e9081a200041143602000c060b024002400240024020012f0104417f6a0e03010200010b20024180026a200141086a10c90120022902840221042002280280022103410321010c020b20024180026a200141086a10c90120022902840221042002280280022103410121010c010b20012f0106210541b002102c2203450d0820024180026a200141086a28020010da01200320024180026a41b00210e9081a410221010b200020013b0104200041153602002000410c6a2004370200200041086a2003360200200041066a20053b01000c050b20024180026a200141086a10db01200041086a20024180026a41a80210e9081a200041163602000c040b20024180026a200141046a10dc01200041046a20024180026a41c80010e9081a200041173602000c030b20024180026a200141086a10dd01200041086a20024180026a41c80010e9081a200041183602000c020b20024180026a200141086a10de0120004119360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c010b20024180026a200141086a10df012000411a360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000b200241b0046a24000f0b1038000b1036000bbc0101037f230041306b22022400200241dffcc6004109108102200241106a41e5b0c4004106108102200241206a2001280200200128020810a201024002402002280228220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241306a24000f0b1038000b1036000bfa0101037f230041306b220224002002200010a704200228020821032002280200210002404101102c2204450d0020024201370214200220043602100240024020012802bc024102470d00200241003a0020200241106a200241206a410110740c010b200241013a0020200241106a200241206a410110742001200241106a10ab040b200241206a41086a200241106a41086a2802003602002002200229031037032020002003200241206a10c70202402002280204450d002000102e0b024020012802bc024102460d00024020012802b0022200450d00200141b4026a280200450d002000102e0b2001108b020b200241306a24000f0b1036000bb20501037f230041106b220224000240024020002802b00222030d00200241003a000c20012002410c6a410110742002410c6a21030c010b200241013a000c20012002410c6a41011074200041b8026a28020022042001107620012003200410742002410c6a21030b200220002d00f0023a000c2001200341011074200020011090020240024020002802bc024101460d00200241003a000c20012003410110740c010b200241013a000c20012003410110742002200041c0026a28020036020c20012002410c6a410410742002200041c4026a28020036020c20012002410c6a410410740b0240024002400240024020002d00c8020e0400010203000b200241003a000c2001200341011074024002400240200041c9026a2d00000e03000102060b200241003a000c20012003410110740c050b200241013a000c20012003410110742001200041ca026a412010740c040b200241023a000c20012003410110740c030b2002410f3a000c2001200341011074024002400240200041cc026a2d00000e03000102050b200241003a000c20012003410110742002200041d0026a28020036020c20012002410c6a410410742002200041d4026a28020036020c20012002410c6a410410740c040b200241013a000c20012003410110742001200041cd026a412010740c030b200241023a000c20012003410110740c020b200241103a000c2001200341011074024002400240200041cc026a2d00000e03000102040b200241003a000c20012003410110742002200041d0026a28020036020c20012002410c6a410410742002200041d4026a28020036020c20012002410c6a410410740c030b200241013a000c20012003410110742001200041cd026a412010740c020b200241023a000c20012003410110740c010b200241033a000c2001200341011074200110b6040b200241106a24000b130020004103360204200041a0b7c4003602000b3400200041a8f8c60036020420004100360200200041146a4110360200200041106a41a8bec400360200200041086a42043702000b130020004102360204200041f4e0c4003602000b4301027f230041106b2202240002404108102c22030d001036000b2000420837020420002003360200200242f02e3703082000200241086a41081074200241106a24000b4301027f230041106b2202240002404108102c22030d001036000b2000420837020420002003360200200242e0123703082000200241086a41081074200241106a24000ba10402067f027e230041206b2102024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e020102030b200041023a00000f0b2006450d0420042d0001210520012003417e6a22073602042001200441026a360200410021060240024002400240024002400240200541ff00710e07060001020304050b0b410121060c050b410221060c040b410321060c030b410421060c020b410521060c010b410621060b024020074110490d00200041003a0000200041086a2004290002370300200041026a20063a0000200020054107763a0001200041036a200228001b360000200041186a2002290308370300200041106a2004410a6a29000037030020012003416e6a3602042001200441126a360200200041076a2002411f6a2d00003a0000200041206a200241086a41086a2903003703000f0b200041023a00000f0b20064110490d01200441096a29000021082004290001210920012003416f6a22053602042001200441116a36020020054110490d02200041013a000020002002280008360001200041186a2004290011370300200041106a2008370300200041086a2009370300200041206a200441196a29000037030020012003415f6a3602042001200441216a360200200041046a2002410b6a2800003600000f0b200041023a00000f0b200041023a00000f0b200041023a00000f0b200041023a00000ba20202037f017e230041106b220224000240024020002d00004101460d00200241003a0000200120024101107420002d00012103410621040240024002400240024002400240200041026a2d00000e0700010203040506000b410021040c050b410121040c040b410221040c030b410321040c020b410421040c010b410521040b20022004200341ff0171410047410774723a00002001200241011074200029030821052002200041106a2903003703082002200537030020012002411010740c010b200241013a00002001200241011074200029030821052002200041106a290300370308200220053703002001200241101074200041186a29030021052002200041206a2903003703082002200537030020012002411010740b200241106a24000b130020004106360204200041b8e7c4003602000b3400200041dffcc60036020420004100360200200041146a4103360200200041106a41f0f7c400360200200041086a42093702000b3401017f230041106b220224002000410036020820004201370200200241003a000f20002002410f6a41011074200241106a24000b4601027f230041106b220124002001410036020820014201370300200110b6042000200128020022022001280208107402402001280204450d002002102e0b200141106a24000bef43050e7f037e1c7f047e0a7f230041f0026b220524000240024002400240024002400240024002400240024002400240024002400240024020020d0041002106410021070c010b200120024105746a2108200541b0026a41186a2109200541386a41186a210a200541b0026a41086a210b410021064100210703402009200141186a290000370300200541b0026a41106a220c200141106a290000370300200b200141086a290000370300200520012900003703b002024020070d0041c805102c2207450d0e4100210d200741003b01e602200741003602e0020b200141206a21012007210e200d210f024002400340200e41e8026a2110200e2f01e6022111410021020240034020112002460d01200541b0026a2010412010ec082212450d03200241016a2102201041206a21102012417f4a0d000b2002417f6a21110b0240200f450d00200f417f6a210f200e20114102746a41c8056a280200210e0c010b0b200541206a41086a200b41086a2902002213370300200541206a41106a200b41106a29020022143703002005200b290200221537032020052802b402210f20052802b0022116200541c0016a41106a22172014370300200541c0016a41086a22182013370300200520153703c00102400240200e2f01e6022202410a4b0d0020054198026a41106a2219201729030037030020054198026a41086a221a2018290300370300200520052903c00137039802200e41e8026a2110200241016a21120240201141016a221b20024b221c0d002010201b4105746a201020114105746a20122011417f736a41057410ea081a0b20102011410574220c6a2202200f360004200220163600002002200529039802370008200241106a201a290300370000200241186a20192903003700000240201c0d00200e201b4105746a200e200c6a20122011417f736a41057410ea081a0b200e200c6a22024200370308200242003703002002410036021820024208370310200e20123b01e6020c010b4100211a4104210202400240201141054f0d00201121120c010b4105210241052112024002402011417b6a0e020201000b201141796a21124101211a410621020c010b410021124101211a0b41c805102c2219450d10201941003b01e602201941003602e0022019200e2f01e602221b2002417f736a22113b01e602200e41e8026a221c2002410574221d6a2210280004211e2010280000211f20054198026a41106a2220201041186a29000037030020054198026a41086a2221201041106a2900003703002005201029000837039802200a200e201d6a221041186a290300370300200541386a41106a2222201041106a290300370300200541386a41086a2223201041086a290300370300200520102903003703382011410c4f0d0e201b200241016a22106b2011470d0d201941e8026a201c201041057422106a2011410574221110e9081a2019200e20106a201110e908211d20092005290338370300200941086a22242023290300370300200941106a22252022290300370300200941186a2226200a290300370300200e20023b01e602200c20202903002213370300200541e0016a41086a22272021290300370300200541e0016a41106a22282013370300200541e0016a41186a22292009290300370300200541e0016a41206a222a200541b0026a41206a222b290300370300200541e0016a41286a222c200541b0026a41286a222d290300370300200541e0016a41306a222e200541b0026a41306a222f29030037030020052005290398023703e001201d200e201a1b22022f01e60221102020201729030037030020212018290300370300200520052903c00137039802200241e8026a2111201041016a211a0240201241016a221c20104b22300d002011201c4105746a201120124105746a201a2012417f736a41057410ea081a0b20112012410574221b6a2210200f360004201020163600002010200529039802370008201041106a2021290300370000201041186a2020290300370000024020300d002002201c4105746a2002201b6a201a2012417f736a41057410ea081a0b2002201b6a22104200370308201042003703004100213120104100360218201042083703102002201a3b01e602200541f0006a41086a221a20272903002213370300200541f0006a41106a221b20282903002214370300200541f0006a41186a221c20292903002215370300200541f0006a41206a202a2903002232370300200541f0006a41286a202c2903002233370300200541f0006a41306a202e2903002234370300200520052903e0012235370370200541386a41306a22362034370300200541386a41286a22372033370300200541386a41206a22382032370300200a201537030020222014370300202320133703002005203537033802400240200e2802e0022216450d0041002131201d2139201e213a201f213b0340200e2f01e402210e200541a8016a41106a22302022290300370300200541a8016a41086a223c2023290300370300200520052903383703a801200541c0016a41186a221d200a41186a2903003703002017200a41106a2903003703002018200a41086a2903003703002005200a2903003703c0014101450d0f20162f01e602223d410b490d024100210f410421020240200e4105490d00200e210202400240200e417b6a0e020201000b200e41796a210e4101210f410621020c010b4100210e4101210f410521020b41f805102c2219450d13201941003b01e602201941003602e002201920162f01e602223e2002417f736a22123b01e602201641e8026a223f200241057422116a2210280004211e2010280000211f2020201041186a2900003703002021201041106a2900003703002005201029000837039802201c201620116a221041186a290300370300201b201041106a290300370300201a201041086a290300370300200520102903003703702012410c4f0d0e203e200241016a22116b2012470d0d201941e8026a203f201141057422106a2012410574221210e9081a2019201620106a201210e9082110201620023b01e602200b2021290300370300200c2020290300370300200920052903703703002024201a2903003703002025201b2903003703002026201c29030037030020052005290398023703b00220102f01e602221241016a213e2012410c4f0d0c203d20026b2202203e470d0b203141016a2131201041c8056a201620114102746a41c8056a200241027410e9081a4100210202400340201020024102746a41c8056a280200221120023b01e402201120103602e0022002200220124922116a220220124b0d0120110d000b0b202e202f290300370300202c202d290300370300202a202b290300370300202920092903003703002028200c2903003703002027200b290300370300200520052903b0023703e001201c201d290300370300201b2017290300370300201a2018290300370300200520052903c00137037020102016200f1b22112f01e602211d200c2030290300370300200b203c290300370300200520052903a8013703b002201141e8026a2112201d41016a210f0240200e41016a2202201d4b223c0d00201220024105746a2012200e4105746a200e417f73200f6a41057410ea081a0b2012200e41057422306a2212203a3600042012203b360000201241186a200c290300370000201241106a200b290300370000201220052903b0023700082009201c290300370300200c201b290300370300200b201a290300370300200520052903703703b0020240203c0d00201120024105746a201120306a200e417f73200f6a41057410ea081a0b201120306a221220052903b002370300201241186a2009290300370300201241106a200c290300370300201241086a200b290300370300201141c8056a21120240200e41026a2230201d41026a221d4f0d00201220304102746a201220024102746a2002417f73201d6a41027410ea081a0b201220024102746a20393602002011200f3b01e60202402002201d4f0d002011200e4102746a41cc056a2102034020022802002212200e41016a220e3b01e402201220113602e002200241046a2102200f200e470d000b0b2023202729030037030020222028290300370300200a20292903003703002038202a2903003703002037202c2903003703002036202e290300370300200520052903e0013703382016210e20162802e0022202211620102139201e213a201f213b20020d000b0b202e20362903002213370300202c20372903002214370300202a203829030022153703002029200a29030022323703002028202229030022333703002027202329030022343703002005200529033822353703e001202f2013370300202d2014370300202b201537030020092032370300200c2033370300200b2034370300200520353703b0022007450d0841f805102c2202450d11200220073602c805200241003b01e602200241003602e002200741003b01e402200720023602e0022022200c2903003703002023200b290300370300200520052903b002370338201c2026290300370300201b2025290300370300201a202429030037030020052009290300370370200d2031470d0720022f01e6022210410b4f0d06200d41016a210d2002201041016a22123b01e602200220104105746a22102005290370370300201041ec026a201e360000201041e8026a201f360000201041f0026a2005290338370000201041f8026a202329030037000020104180036a2022290300370000201041086a201a290300370300201041106a201b290300370300201041186a201c290300370300200220124102746a41c8056a2019360200201920123b01e402201920023602e002200221070c010b201c201d290300370300201b2017290300370300201a2018290300370300200520052903c00137037020162f01e6022112200c2030290300370300200b203c290300370300200520052903a8013703b002200e41016a2102201641e8026a2110201241016a21110240200e20124f220f0d00201020024105746a2010200e4105746a200e417f7320116a41057410ea081a0b2010200e41057422196a2210203a3600042010203b360000201041186a200c290300370000201041106a200b290300370000201020052903b0023700082009201c290300370300200c201b290300370300200b201a290300370300200520052903703703b0020240200f0d00201620024105746a201620196a200e417f7320116a41057410ea081a0b201620196a221020052903b002370300201041186a2009290300370300201041106a200c290300370300201041086a200b290300370300201641c8056a2110201241026a21120240200f0d00200e41027420106a41086a201020024102746a2002417f7320126a41027410ea081a0b201020024102746a2039360200201620113b01e602200220124f0d0020162002417f6a22024102746a41cc056a2110034020102802002212200241016a22023b01e402201220163602e002201041046a211020112002470d000b0b2005410036028001200641016a21060c010b200541003602c802200542083703c002200542003703b802200542003703b002200e20024105746a220229031021132002420837031020022903082114200242003703082002290300211520024200370300200241186a22022903002132200220052903c802370300200541f0006a41186a2032370300200520133703800120052014370378200520153703702013a72202450d002005280284012210450d00201041306c450d002002102e0b20012008470d000b0b02402004450d0020032004412c6c6a211903400240200328020841306c2202450d002003280200220e20026a21092003410c6a2116024003402007450d01200e41306a210b20072101200d210f02400340200141e8026a211020012f01e60221114100210202400240034020112002460d01200e2010412010ec082212450d02200241016a2102201041206a21102012417f4a0d000b2002417f6a21110b200f450d02200f417f6a210f200120114102746a41c8056a28020021010c010b0b200120024105746a2202427f20022903002213200e2903207c221420142013542210200241086a22122903002213200e41286a22112903007c2010ad7c221420135420142013511b22101b3703002012427f201420101b37030020162900002113200541b0026a41086a2201201641086a290000370300200541b0026a41106a220f201641106a290000370300200541b0026a41186a220c201641186a290000370300200520133703b00220112903002113200e2903202114200241186a2110200241106a2111024020022802182212200241146a280200470d0020112012410110b804201028020021120b2011280200201241306c6a220220052903b00237030020022014370320200241186a200c290300370300200241106a200f290300370300200241086a2001290300370300200241286a20133703002010201028020041016a360200200b210e200b2009460d030c010b0b0240200d450d00034020072802c8052107200d417f6a220d0d000b0b02402006450d0041002110200541c0026a2101200541b8026a210f03402006417f6a210641012102024002400340201020072f01e602490d01024020072802e00222120d002007102e410021070c030b20072f01e40221102007102e2002417f6a2102201221070c000b0b2001200720104105746a22124180036a290000370300200f201241f8026a2900003703002005201241f0026a2900003703b002201041016a2110201228021421112012280210210e20024101460d00200720104102746a41c8056a280200210702402002450d000340200241016a221020024f211220072802c80521072010210220120d000b0b410021100b200e450d0202402011450d00201141306c450d00200e102e0b20060d000b0b034020072802e00221022007102e2002210720020d000b0b20004104360204410121020c110b2003412c6a22032019470d000b0b024020070d0041002102410021060c0b0b200721020340200d450d0b200d417f6a210d200720072f01e6024102746a41c8056a280200210720022802c80521020c000b0b41a89ac700412041c89ac7001039000b41e899c700413041989ac7001039000b41e8aac700412b4194abc7001039000b41f49bc7004128419c9cc7001039000b203e410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b2012410b41e49bc700104d000b41ac9cc700413541e49cc7001039000b41f49bc7004128419c9cc7001039000b2011410b41e49bc700104d000b0240024002400240024002402006450d002002450d032006417f6a210741002110024002400340201020022f01e602490d01024020022802e00222120d002002102e410021020c030b20022f01e40221102002102e200d41016a210d201221020c000b0b200541f0006a41186a2201200220104105746a22114180036a290000370300200541f0006a41106a220f201141f8026a290000370300200541f0006a41086a2216201141f0026a2900003703002005201141e8026a2900003703702011280210210e200541c0016a41086a220b2011411c6a280200360200200520112902143703c001201041016a2112201141086a2903002114201129030021130240200d450d00200220124102746a41c8056a28020021020240200d4101460d0041012110034020022802c8052102200d201041016a2210470d000b0b410021120b200541bc026a2016290300370200200541c4026a200f290300370200200541b0026a411c6a200129030037020020054198026a41086a200b280200360200200520052903703702b402200541e0016a41086a200541b0026a41086a290200370300200541e0016a41106a200541b0026a41106a290200370300200541e0016a41186a200541b0026a41186a290200370300200541e0016a41206a200541b0026a41206a280200360200200520052903c00137039802200520052902b0023703e0010b200541b0026a41106a200541e0016a41106a290300370300200541b0026a41086a200541e0016a41086a290300370300200541b0026a41186a200541e0016a41186a290300370300200541b0026a41206a200541e0016a41206a280200360200200541a8016a41086a20054198026a41086a280200360200200541386a41086a200541bc026a290200370300200541386a41106a200541c4026a290200370300200541386a41186a200541cc026a290200370300200520052903e0013703b00220052005290398023703a801200520052902b402370338200e450d01417f200741016a221020102007491b221041ffffff1f712010470d0420104106742210417f4c0d042010102c220f450d06200f2013370320200f2005290338370300200f200e360230200f20052903a801370234200f41286a2014370300200f41186a200541386a41186a290300370300200f41106a200541386a41106a290300370300200f41086a200541386a41086a290300370300200f413c6a200541a8016a41086a2802003602002010410676210d024020070d004101210e0c080b2007417f6a210741012111024002400340201220022f01e602490d01024020022802e00222100d002002102e410021020c030b20022f01e40221122002102e2011417f6a2111201021020c000b0b200541f0006a41186a2201200220124105746a220e4180036a290000370300200541f0006a41106a2216200e41f8026a290000370300200541f0006a41086a220c200e41f0026a2900003703002005200e41e8026a290000370370200e280210210b200541386a41086a2209200e411c6a2802003602002005200e290214370338201241016a2110200e41086a2903002134200e2903002133024020114101460d00200220104102746a41c8056a280200210202402011450d000340201141016a221020114f211220022802c80521022010211120120d000b0b410021100b200541bc026a200c290300370200200541c4026a2016290300370200200541b0026a411c6a200129030037020020054198026a41086a2009280200360200200520052903703702b402200541e0016a41086a200541b0026a41086a290200370300200541e0016a41106a200541b0026a41106a290200370300200541e0016a41186a200541b0026a41186a290200370300200541e0016a41206a200541b0026a41206a2802003602002005200529033837039802200520052902b0023703e0010b200541b0026a41106a220c200541e0016a41106a2208290300370300200541b0026a41086a2209200541e0016a41086a2206290300370300200541b0026a41186a2219200541e0016a41186a2222290300370300200541b0026a41206a2220200541e0016a41206a2223280200360200200541206a41086a220a20054198026a41086a2230280200360200200541c0016a41086a221a200541bc026a290200370300200541c0016a41106a221b200541c4026a290200370300200541c0016a41186a221c200541b0026a411c6a290200370300200520052903e0013703b0022005200529039802370320200520052902b4023703c00102400240200b0d004101210e0c010b200541f0006a41046a2101200541b0026a41046a211d4101210e03402009201a290300370300200c201b2903003703002019201c290300370300200541386a41086a2216200a280200360200200520052903c0013703b00220052005290320370338024002400240200d200e470d00200d200e6b417f200741016a221220122007491b22124f0d00200e20126a2212200e490d09200d41017422112012201120124b1b22124104201241044b1b221241ffffff1f7120124641037421112012410674211202400240200d0d00200541003602e0010c010b200541083602e8012005200f3602e0012005200d4106743602e4010b200541f0006a20122011200541e0016a107d2005280278211220052802704101460d012005280274210f2012410676210d0b200c2903002113201929030021142009290300211520052903b0022132200f200e4106746a2212200b36023020122032370300201241086a201537030020122033370320201241286a2034370300201241186a2014370300201241106a2013370300201220052903383702342012413c6a2016280200360200200e41016a210e2007450d0b2007417f6a2107410121120c010b2012450d070c090b024002400340201020022f01e602490d01024020022802e0022211450d0020022f01e40221102002102e2012417f6a2112201121020c010b0b2002102e410021020c010b200541386a41186a2217200220104105746a22114180036a290000370300200541386a41106a2218201141f8026a2900003703002016201141f0026a2900003703002005201141e8026a2900003703382011280210210b20302011411c6a2802003602002005201129021437039802201041016a2110201141086a290300213420112903002133024020124101460d00200220104102746a41c8056a280200210202402012450d000340201241016a221020124f211120022802c80521022010211220110d000b0b410021100b201d2005290338370000201d41086a2016290300370000201d41106a2018290300370000201d41186a2017290300370000200541a8016a41086a2030280200360200200620092902003703002008200c290200370300202220192902003703002023202028020036020020052005290398023703a801200520052902b0023703e0010b200541f0006a41206a2023280200360200200541f0006a41186a2022290300370300200541f0006a41106a2008290300370300200541f0006a41086a2006290300370300200a200541a8016a41086a280200360200200520052903e001370370200520052903a801370320201a200141086a290200370300201b200141106a290200370300201c200141186a290200370300200520012902003703c001200b0d000b0b2007450d0703402007417f6a210741012112024002400340201020022f01e602490d01024020022802e00222110d002002102e410021020c030b20022f01e40221102002102e2012417f6a2112201121020c000b0b201041016a2111200220104105746a2210280214210120102802102116024020124101470d00201121100c010b200220114102746a41c8056a280200210202402012450d0041002110034020022802c805210220122010417f6a2210470d000b0b410021100b2016450d0902402001450d00200141306c450d002016102e0b2007450d080c000b0b20020d010c040b2007450d00200541c0026a210f200541b8026a210d03402007417f6a210741012110024002400340201220022f01e602490d01024020022802e0022211450d0020022f01e40221122002102e2010417f6a2110201121020c010b0b2002102e410021020c010b200f200220124105746a22114180036a290000370300200d201141f8026a2900003703002005201141f0026a2900003703b002201241016a21122011280214210e2011280210210120104101460d00200220124102746a41c8056a280200210202402010450d000340201041016a221220104f211120022802c80521022012211020110d000b0b410021120b2001450d040240200e450d00200e41306c450d002001102e0b20070d000b0b034020022802e00221102002102e2010210220100d000c030b0b41e8aac700412b41f8b7c0001039000b1038000b4108210f4100210e4100210d0c020b1036000b034020022802e00221102002102e2010210220100d000b0b2000200f3602042000410c6a200e360200200041086a200d360200410021020b20002002360200200541f0026a24000be30102027f017e230041206b22032400024002400240200041046a280200220420016b20024f0d00200120026a22022001490d02200441017422012002200120024b1b22014104200141044b1bad42307e2205422088a74541037421012005a721020240024020040d00200341003602100c010b200341106a41086a41083602002003200441306c360214200320002802003602100b200320022001200341106a107d200341086a280200210120032802004101460d0120002003280204360200200041046a200141306e3602000b200341206a24000f0b2001450d001036000b1038000be71e080a7f017e017f017e017f027e0e7f017e230041d0046b220324002003420037020c02400240024002400240024002402001280208220441ffffffff03712004470d0020044102742205417f4c0d0020012802042106200128020021070240024020050d00410421010c010b2005102c2201450d070b41002108200341003602202003200136021820032005410276220936021c024002400240200920044f0d00200541017622092004200920044b1b22094104200941044b1b220941ffffffff0371200946410274210a200941027421090240024020050d00200341003602e8030c010b200341f0036a4104360200200320053602ec03200320013602e8030b20034180036a2009200a200341e8036a107d20034188036a280200210502402003280280034101460d00200320032802840322013602182003200541027636021c200328022021080c020b2005450d030c090b2004450d010b2004410574210b200120084102746a210a200341e8036a41046a210c20034180036a41c4006a210141002109200721050340200341c8016a41186a200541186a2204290000220d370300200341c8016a41106a200541106a220e290000220f370300200341c8016a41086a200541086a221029000022113703002003200529000022123703c801200341a8026a41186a22132004290000370300200341a8026a41106a2204200e290000370300200341a8026a41086a220e2010290000370300200320052900003703a802200341e8036a41186a200d370300200341e8036a41106a200f370300200341e8036a41086a2011370300200320123703e803200341086a200341e8036a200910a402200141186a2013290300370200200141106a2004290300370200200141086a200e290300370200200120032903a80237020020034180036a410041c40010eb081a200c20034180036a41e40010e9081a41f800102c2204450d08200541206a21052004410036020820044281808080103703002004410c6a200341e8036a41e80010e9081a200441003a0074200420032f00f8013b0075200441f7006a200341f8016a41026a2d00003a0000200a2004360200200941016a2109200a41046a210a200b41606a220b0d000b200820096a21080b200320083602200240200641ffffff3f71450d002007102e0b2002280208210420022802042107200228020021022003413c6a200341186a360200200320023602302003200736022c2003200236022820032002200441386c220a6a22143602342003200341086a360238200221012004450d04200341e8036a41346a2106200341286a41106a210820034180036a412c6a2109200221010340200341d8026a41086a220b2001220441086a290300370300200341d8026a41106a220e200441106a290300370300200341d8026a41186a2210200441186a290300370300200341d8026a41206a2213200441206a290300370300200320042903003703d8022003200441386a2201360230200441286a2802002105200341c0006a41086a220c200441346a28020036020020032004412c6a2902003703402005450d0420034180036a41206a201329030037030020034180036a41186a201029030037030020034180036a41106a200e29030037030020034180036a41086a200b29030037030020092003290340370200200941086a200c280200360200200320032903d80237038003200320053602a803200341e8036a200820034180036a10ba04024020032802980422050d00200a41486a220a0d010c050b0b200341a8026a41286a2204200341e8036a41286a290300370300200341a8026a41206a2201200341e8036a41206a290300370300200341a8026a41186a2209200341e8036a41186a290300370300200341a8026a41106a220a200341e8036a41106a290300370300200341a8026a41086a220b200341e8036a41086a290300370300200341d0006a41086a220e200641086a290200370300200341d0006a41106a2210200641106a290200370300200341d0006a41186a2213200641186a290200370300200341d0006a41206a220c200641206a290200370300200341d0006a41286a2208200641286a280200360200200320032903e8033703a80220032006290200370350200341f8016a41086a2202200e290300370300200341f8016a41106a220e2010290300370300200341f8016a41186a22102013290300370300200341f8016a41206a2213200c290300370300200341f8016a41286a220c2008280200360200200341c8016a41086a2208200b290300370300200341c8016a41106a220b200a290300370300200341c8016a41186a220a2009290300370300200341c8016a41206a22072001290300370300200341c8016a41286a22012004290300370300200320032903503703f801200320032903a8023703c80120034198016a41286a2204200c28020036020020034198016a41206a220c201329030037030020034198016a41186a2213201029030037030020034198016a41106a2210200e29030037030020034198016a41086a220e2002290300370300200320032903f8013703980141e000102c2209450d06200920032903c801370300200920053602302009200329039801370234200941286a2001290300370300200941206a2007290300370300200941186a200a290300370300200941106a200b290300370300200941086a20082903003703002009413c6a200e290300370200200941c4006a2010290300370200200941cc006a2013290300370200200941d4006a200c290300370200200941dc006a200428020036020020034180016a41086a200341286a41086a290300220d37030020034180016a41106a2202200341286a41106a29030037030020032003290328370380010240200da72201200328028c012208470d0041012107410121060c030b20034180036a412c6a210a200341e8036a41346a211541012107410121060340200341d8026a41186a220b2001220441186a290300370300200341d8026a41206a220e200441206a2903003703002003200441386a220136028801200341d8026a41086a2210200441086a290300370300200341d8026a41106a2213200441106a290300370300200320042903003703d802200441286a2802002105200341c0006a41086a220c200441346a28020036020020032004412c6a2902003703402005450d0220034180036a41206a2214200e29030037030020034180036a41186a220e200b29030037030020034180036a41106a220b201329030037030020034180036a41086a22132010290300370300200a2003290340370200200a41086a200c280200360200200320032903d80237038003200320053602a803200341e8036a200220034180036a10ba04024020032802980422050d0020082001470d010c030b200341a8026a41286a2204200341e8036a41286a2201290300370300200341a8026a41206a2216200341e8036a41206a2210290300370300200341a8026a41186a2217200341e8036a41186a220c290300370300200341a8026a41106a2218200341e8036a41106a2208290300370300200341a8026a41086a2219200341e8036a41086a221a290300370300200341d0006a41086a221b201541086a290200370300200341d0006a41106a221c201541106a290200370300200341d0006a41186a221d201541186a290200370300200341d0006a41206a221e201541206a290200370300200341d0006a41286a221f201541286a280200360200200320032903e8033703a80220032015290200370350200341f8016a41086a2220201b290300370300200341f8016a41106a221b201c290300370300200341f8016a41186a221c201d290300370300200341f8016a41206a221d201e290300370300200341f8016a41286a221e201f280200360200200341c8016a41086a221f2019290300370300200341c8016a41106a22192018290300370300200341c8016a41186a22182017290300370300200341c8016a41206a22172016290300370300200341c8016a41286a22162004290300370300200320032903503703f801200320032903a8023703c80120034198016a41286a2204201e28020036020020034198016a41206a221e201d29030037030020034198016a41186a221d201c29030037030020034198016a41106a221c201b29030037030020034198016a41086a221b2020290300370300200320032903f80137039801201a201f29030037030020082019290300370300200c20182903003703002010201729030037030020012016290300370300200320032903c8013703e8032013201b290300370300200b201c290300370300200e201d2903003703002014201e29030037030020034180036a41286a221620042802003602002003200329039801370380030240024020062007470d00200741016a22042007490d03200741017422172004201720044b1b22044104200441044b1bad42e0007e220d422088a7454103742104200da721170240024020070d00200341003602a8020c010b200341083602b002200320093602a8022003200741e0006c3602ac020b200341f8016a20172004200341a8026a107d200328028002210420032802f8014101460d0120032802fc012109200441e0006e21070b2009200641e0006c6a220420032903e8033703002001290300210d201a290300210f20082903002111200c29030021122010290300212120042005360230200441206a2021370300200441186a2012370300200441106a2011370300200441086a200f370300200441286a200d370300200441346a2003290380033702002004413c6a2013290300370200200441c4006a200b290300370200200441cc006a200e290300370200200441d4006a2014290300370200200441dc006a2016280200360200200641016a21062003280288012201200328028c012208470d010c040b0b20040d060b1038000b200441386a21010b200820016b220441386d210502402004450d00200541386c21052001412c6a210403400240200428020041ffffff3f71450d002004417c6a280200102e0b200441386a2104200541486a22050d000b0b2003280284012204450d02200441386c450d02200328028001102e0c020b200441386a21010b201420016b220441386d210502402004450d00200541386c21052001412c6a210403400240200428020041ffffff3f71450d002004417c6a280200102e0b200441386a2104200541486a22050d000b0b410821094100210602402007450d00200741386c450d002002102e0b410021070b200020032903183702002000200936020c200041146a2006360200200041106a2007360200200041086a200341186a41086a280200360200200341086a10bc02200341d0046a24000f0b1036000ba10b05047f027e0b7f037e017f230041f0016b220324002002412c6a2802002104200241306a28020021052002280228210620022903002107200341186a200241206a290000370300200341106a200241186a290000370300200341086a200241106a2900003703002003200229000837030002400240024002400240024002402005ad42d8007e2208422088a70d002008a72202417f4c0d000240024020020d00410821090c010b2002102c2209450d020b200241d8006e210a024020050d004100210b0c070b200620054105746a210c20034188016a41046a210d4100210b2006210e0340200341206a41086a220f200e41086a290000370300200341206a41106a2210200e41106a290000370300200341206a41186a2211200e41186a2900003703002003200e290000370320200b41d8006c2102200e41206a210e2009210502400240024003402002450d01200241a87f6a2102200541346a2112200541d8006a21052012200341206a412010ec080d000c020b0b2001280200200341206a10a0022202450d00200128020422052802082213200228020022124d0d05200528020020124102746a28020022122802080d062012417f3602082012427f2012290330220820077c221420142008542205201241386a221329030022152005ad7c2216201554201420085a1b22051b3703302013427f201620051b370300200341e0006a41186a22132011290300370300200341e0006a41106a22112010290300370300200341e0006a41086a2210200f2903003703002003200329032037036020012802042205280208220f200228020022024d0d07200528020020024102746a280200220f28020041016a220241014d0d08200f2002360200200d410041e40010eb081a41f800102c2205450d042005410036020820054281808080103703002005410c6a20034188016a41e80010e9081a200541003a0074200520032f0085013b0075200541f7006a20034185016a41026a2d00003a0000200341c0006a41086a22172010290300370300200341c0006a41106a22102011290300370300200341c0006a41186a22112013290300370300200320032903603703400240200b200a470d00200b41016a2202200b490d04200b41017422132002201320024b1b22024104200241044b1bad42d8007e2208422088a74541037421022008a7211302400240200b0d0020034100360288010c010b200341083602900120032009360288012003200b41d8006c36028c010b200341e0006a2013200220034188016a107d2003280268210220032802604101460d0220032802642109200241d8006e210a0b2009200b41d8006c6a220242003703002002200f360230200241186a4200370300200241106a4200370300200241086a4200370300200241206a4200370300200241286a4200370300200220032903403702342002413c6a2017290300370200200241c4006a2010290300370200200241cc006a201129030037020020052005280200417f6a2202360200024020020d00200541046a22022002280200417f6a220236020020020d002005102e0b200b41016a210b2012201228020841016a3602080b200e200c460d080c010b0b20020d010b1038000b1036000b20122013418884c500103c000b4194dacc00411020034188016a41e4ffc400419884c500103e000b2002200f41a884c500103c000b00000b0240200441ffffff3f71450d002006102e0b02400240200b0d0020004100360230200a450d01200a41d8006c450d012009102e0c010b200042013703202000420037031020004200370308200020073703002000200a36023420002009360230200041286a4200370300200041186a4200370300200041386a200b3602002000413c6a2003290300370000200041c4006a200341086a290300370000200041cc006a200341106a290300370000200041d4006a200341186a2903003700000b200341f0016a24000bf60805077f027e047f037e027f230041306b2202240002400240024002400240024002400240200141386a2802002203450d002001280230220441d8006a21052004200341d8006c22066a21070340200541586a2802002203280208220441016a41004c0d04200541486a22082903002109200841086a290300210a20032004360208200341f4006a2d00004101460d02200541d8006a2105200641a87f6a22060d000b0b4100210620024100360220200242083703184108210b0c010b024002404110102c220b450d00200b2009370300200b200a3703084101210641012108034020052007460d02200541306a2802002203280208220441016a41004c0d05200541286a2903002109200541206a290300210a20032004360208200541d8006a22042105200341f4006a2d00004101470d000240024020082006470d00200641016a22052006490d08200641017422032005200320054b1b22054104200541044b1b220541ffffffff00712005464103742103200541047421050240024020060d00200241003602080c010b200241083602102002200b3602082002200641047436020c0b200241186a20052003200241086a107d2002280220210520022802184101460d01200228021c210b200541047621060b200b20084104746a220520093703082005200a370300200841016a2108200421050c010b0b2005450d050b1036000b200220083602202002200636021c2002200b3602180b200241086a200241186a2001290300200141086a29030010bc040240024020022802084101470d00200241086a41086a2802002105200228020c21030c010b20012802302204200128023841d8006c6a2108200228020c220c200241146a2802004104746a210d200241086a41086a280200210e200c210702400340200820042205460d01200541306a2802002203280208220441016a41004c0d0620032004360208200541d8006a2104200341f4006a2d0000450d002007200d460d01200541d8006a220441586a28020022052802080d07200741086a29030021092007290300210a2005417f360208200542002005290340220f200441486a220129030022107d22112011200f56200541c8006a22032903002211200141086a22122903007d200f201054ad7d220f201156200f2011511b22131b37034020034200200f20131b370300201220093703002001200a3703002005200528020841016a3602082005427f200a2005290340220f7c220a200a200f54220120092003290300220a7c2001ad7c2209200a542009200a511b22011b3703402003427f200920011b370300200741106a21070c000b0b410021030240200e41ffffffff0071450d00200c102e0b0b0240200641ffffffff0071450d00200b102e0b2000200536020420002003360200200241306a24000f0b41bcd9cc004118200241286a41c4ffc40041e883c500103e000b41bcd9cc004118200241286a41c4ffc40041e883c500103e000b1038000b41bcd9cc004118200241286a41c4ffc40041d4ffc400103e000b4194dacc004110200241286a41e4ffc40041f4ffc400103e000bdb3609057f027e017f027e037f067e0e7f017e077f230041e0006b22042400200128020022052001280208220641047422076a210842002109410021014200210a02400240024002400340024020072001470d0020060d02200042808080808001370200200041086a42003702000c030b200a200520016a220b41086a2903007c2009200b2903007c220c200954220bad7c220d200a51210e200d200a54210f200141106a2101200c2109200d210a200b200f200e1b4101470d000b200041b4d2cc0036020420004101360200200041086a411e3602000c010b0240200220092009200254200a200354200a200351220b1b22101b220d2009200220101b220c7d22112003200a20101b200a200320101b7d200d200c54ad7d2212844200520d00200641ffffffff00712006470d0320064104742201417f4c0d032001102c220b450d02200b2005200641047410e90821052000410c6a2006360200200041086a200141047636020020002005360204200041003602000c010b200441286a201120122006ad2213420010e708200441186a201120122013420010e608201342187e220d422088a70d02200da72201417f4c0d02200441186a41086a2903002114200441286a41086a29030021152004290318210c200429032821162001102c2217450d0102400240024002400240024002400240024002400240024002400240024002400240024002400240200141186e221820064f0d00200441386a41086a41083602002004201841186c36023c20042017360238200441d0006a201841017422012006200120064b1b22014104200141044b1bad42187e220da7200d422088a745410374200441386a107d200441d0006a41086a280200210120042802504101460d0120042802542117200141186e21180b20052008460d042006410474210b410021192017210103402005290300210a200141106a200541086a290300370300200141086a200a37030020012019360200200141186a2101201941016a2119200541106a2105200b41706a220b0d000b201941144b0d01201941014d0d0620172019417f6a220b41186c6a21084100210e03402019200b2201417f6a220b490d0402402019200b6b221a4102490d002017200141186c6a220141086a220f2903002017200b41186c6a220541086a2207290300220d5a200141106a221b2903002209200541106a221c290300220a5a2009200a511b0d002005280200211d200520012903003703002007200f290300370300201c201b2903003703000240201a4103490d00200e417f6a211b41002105200821010340200141206a220f290300200d5a200141286a22072903002209200a5a2009200a511b0d01201b2005460d06200141106a2007290300370300200141086a200f2903003703002001200141186a220f290300370300200f2101200e2005417f6a2205470d000b200f21010b2001200d3703082001201d360200200141106a200a3703000b200841686a2108200e417f6a210e200b0d000c070b0b20010d130c140b2019410176ad42187e220a422088a70d13200aa7221e417f4c0d13201e102c221f450d12201741686a2120201741406a212141042122410021234100211c20192124034020242108410021244101210702402008417f6a220e450d0002400240024002400240024002402017200e41186c6a220141086a290300200841186c221b20176a41586a2205290300220954200141106a290300220d200541086a290300220a54200d200a511b0d002008417e6a21072021201b6a210141002124410021050340024020072005470d00200821070c090b2009200129030022255a210b200a200141086a290300220d51210e200a200d5a210f200141686a2101200541016a210520252109200d210a200b200f200e1b0d000b200541016a21072005417f7320086a210e0c010b2021201b6a2101024003400240200e4101470d004100210e0c020b200920012903002225542105200a200141086a290300220d51210b200a200d54210f200141686a2101200e417f6a210e20252109200d210a2005200f200b1b0d000b0b2008200e490d01200820194b0d022008200e6b2207410176220b450d002017200e41186c6a21012020201b6a21050340200441386a41106a220f200141106a221b290300370300200441386a41086a221a200141086a221d29030037030020042001290300370338200541106a2226290300210a200541086a2227290300210920012005290300370300201d2009370300201b200a3703002026200f2903003703002027201a29030037030020052004290338370300200141186a2101200541686a2105200b417f6a220b0d000b0b0240200e0d00200e21240c060b0240200741094d0d00200e21240c060b200820194b0d03200e20086b210b2017200e41186c6a211b03402008200e417f6a2224490d050240200820246b22074102490d002017200e41186c6a220141086a220e2903002017202441186c6a220541086a220f290300220d5a200141106a221a2903002209200541106a221d290300220a5a2009200a511b0d002005280200212620052001290300370300200f200e290300370300201d201a290300370300024020074103490d0041012105201b21010340200141206a220e290300200d5a200141286a220f2903002209200a5a2009200a511b0d01200b20056a4101460d06200141106a200f290300370300200141086a200e2903003703002001200141186a220e290300370300200e2101200b200541016a22056a0d000b200e21010b2001200d37030820012026360200200141106a200a3703000b2024450d06201b41686a211b200b417f6a210b2024210e2007410a4f0d060c000b0b200e200841e4d1cc001057000b2008201941e4d1cc00104d000b2005200741d4d1cc00103c000b2008200e417f6a2224490d002008201941f4d1cc00104d000b2024200841f4d1cc001057000b02400240024002400240201c2023460d00201c21010c010b202341016a22012023490d18202341017422052001200520014b1b22014104200141044b1b220141ffffffff01712001464102742105200141037421010240024020230d00200441003602380c010b20044104360240200420223602382004202341037436023c0b200441d0006a20012005200441386a107d2004280258210520042802504101460d012004280254212220232101200541037621230b202220014103746a2201200736020420012024360200201c41016a2228211c202841024f0d010c020b2005450d160c150b0240024002400340024002400240024020222028221c417f6a22284103746a2201280200450d00201c41037420226a220f41746a280200220e200128020422054d0d00201c41024d0d082022201c417d6a22014103746a280204220b2005200e6a4d0d01201c41034d0d08200f41646a280200200b200e6a4b0d080c010b201c4103490d01200128020421052022201c417d6a22014103746a280204210b0b200b2005490d010b201c417e6a21010b0240201c200141016a22294d0d00201c20014d0d02202220014103746a2226280204222a20262802006a2201202220294103746a2227280200222b490d03200120194b0d04202641046a212c2017202b41186c6a221a2027280204221d41186c22056a210b200141186c210f024002402001202b6b2207201d6b2201201d490d00201f201a200510e908221b20056a210e02400240201d4101480d002007201d4a0d010b201a2101201b21050c020b2017200f6a2108201b2105201a210103402001200b2005200b41086a290300200541086a29030054200b41106a290300220a200541106a290300220954200a2009511b220f1b2207290300370300200141086a200741086a290300370300200141106a200741106a2903003703002005200541186a200f1b2105200141186a2101200b41186a200b200f1b220b20084f0d02200e20054b0d000c020b0b201f200b200141186c220510e908220720056a210e02400240201d4101480d00200141014e0d010b200b2101200721050c010b2020200f6a210f200b21010340200f200141686a2208200e41686a221b200e41706a2205290300200141706a220b29030054200541086a290300220a200b41086a290300220954200a2009511b22051b220b290300370300200f41086a200b41086a290300370300200f41106a200b41106a290300370300200e201b20051b210e0240201a2008200120051b2201490d00200721050c020b200f41686a210f200721052007200e490d000b0b20012005200e20056b220b200b4118706b10e9081a202c202a201d6a3602002026202b3602002027202741086a201c2029417f736a41037410ea081a4101211c202841014d0d050c010b0b2029201c4184d2cc00103c000b2001201c4194d2cc00103c000b202b200141a4d2cc001057000b2001201941a4d2cc00104d000b2024450d040c000b0b410120056b201a41d4d1cc00103c000b200b201941c4d1cc001056000b0240200920025a200a20035a200b1b0d004101210f410021190c030b41d2d2cc00413f4194d3cc00105d000b0240202341ffffffff0171450d002022102e0b201e4118702101201e4118490d00201e2001460d00201f102e0b2019411549210f20100d002006417f6a210b201741106a290300212520172903082102201120135441002012501b450d01200c2109200b21010c020b200441086a200220032013420010e70841002101200441086a41086a290300210d200429030821030240201120135441002012501b0d00410021012006210b0340201920014d0d0a2017200141186c6a2205290308220a20167c2209200a54220e200541106a290300222520157c200ead7c220a202554200a2025511b4101460d09200541086a220520093703002005200a37030802402009200354200a200d54200a200d511b0d00200141016a20067021010b200b417f6a220b0d000b0b200c201484500d020340201920014d0d072017200141186c6a2205290308222542017c220a202554220b200541106a2903002216200bad7c2209201654200a20255a1b4101460d06200541086a2205200a370300200520093703080240200a2003542009200d542009200d511b0d00200141016a20067021010b200c427f7c220a200c542105200a210c200a20142005ad7c427f7c22148450450d000c030b0b200b21010340201920014d0d042017200141186c6a220542002005290308220a20167d22032003200a56200541106a220e290300220920157d200a201654ad7d220d200956200d2009511b22051b200320051b2203370308200e4200200d20051b200d20051b220d3703002001200b2001417f6a220e200e20014b1b2003200256200d202556200d2025511b1b21012014201520097d2016200a54ad7d420020051b7c200c2016200a7d420020051b7c2209200c54ad7c21142009210c2006417f6a22060d000b0b2009201484500d002009210c0340201920014d0d02024002402017200141186c6a2205290308220a427f7c2216200a56200541106a2903002203200a50ad7d220d200356200a4200521b4101470d00200b2001417f6a2205200520014b1b21010c010b200541086a220520163703002005200d3703082001200b2001417f6a2205200520014b1b2016200256200d202556200d2025511b1b210120142009427f7c220c200954ad7c427f7c2114200c21090b200c2014844200520d000b0b024002400240200f450d00201941014d0d0a20172019417f6a220e41186c6a21084100210f03402019200e2201417f6a220e490d0302402019200e6b221a4102490d002017200141186c6a22012802002017200e41186c6a220528020022074f0d00200520012903003703002005290308210a200541086a200141086a290300370300200541106a220529030021092005200141106a2903003703000240201a4103490d00200f417f6a211b41002105200821010340200141186a220b28020020074f0d01201b2005460d05200141106a200141286a290300370300200141086a200141206a2903003703002001200b290300370300200b2101200f2005417f6a2205470d000b200b21010b2001200a37030820012007360200200141106a20093703000b200841686a2108200f417f6a210f200e0d000c0b0b0b2019410176ad42187e220a422088a70d0c200aa72210417f4c0d0c2010102c221f450d0b201741686a2123201741b87f6a212041042122410021064100211c20192124034020242108410021244101210702402008417f6a220b450d0002400240024002400240024002402017200b41186c6a280200200841186c221b20176a41506a2802002201490d002008417e6a21072020201b6a210b41002124410021050340024020072005470d00200821070c090b200541016a21052001200b280200220e4f210f200b41686a210b200e2101200f0d000b200541016a21072005417f7320086a210b0c010b2020201b6a2105024003400240200b4101470d004100210b0c020b200b417f6a210b20012005280200220e49210f200541686a2105200e2101200f0d000b0b2008200b490d01200820194b0d022008200b6b2207410176220e450d002017200b41186c6a21012023201b6a21050340200441386a41106a220f200141106a221b290300370300200441386a41086a221a200141086a221d29030037030020042001290300370338200541106a2226290300210a200541086a2227290300210920012005290300370300201d2009370300201b200a3703002026200f2903003703002027201a29030037030020052004290338370300200141186a2101200541686a2105200e417f6a220e0d000b0b0240200b0d00200b21240c060b0240200741094d0d00200b21240c060b200820194b0d03200b20086b210e2017200b41186c6a211b03402008200b417f6a2224490d050240200820246b22074102490d002017200b41186c6a22012802002017202441186c6a2205280200220f4f0d00200520012903003703002005290308210a200541086a200141086a290300370300200541106a220529030021092005200141106a290300370300024020074103490d0041012105201b21010340200141186a220b280200200f4f0d01200e20056a4101460d06200141106a200141286a290300370300200141086a200141206a2903003703002001200b290300370300200b2101200e200541016a22056a0d000b200b21010b2001200a3703082001200f360200200141106a20093703000b2024450d06201b41686a211b200e417f6a210e2024210b2007410a4f0d060c000b0b200b200841e4d1cc001057000b2008201941e4d1cc00104d000b2005200741d4d1cc00103c000b2008200b417f6a2224490d002008201941f4d1cc00104d000b2024200841f4d1cc001057000b02400240024002400240201c2006460d00201c21010c010b200641016a22012006490d11200641017422052001200520014b1b22014104200141044b1b220141ffffffff01712001464102742105200141037421010240024020060d00200441003602380c010b20044104360240200420223602382004200641037436023c0b200441d0006a20012005200441386a107d2004280258210520042802504101460d012004280254212220062101200541037621060b202220014103746a2201200736020420012024360200201c41016a2228211c202841024f0d010c020b2005450d0f0c0e0b0240024002400340024002400240024020222028221c417f6a22284103746a2201280200450d00201c41037420226a220f41746a280200220e200128020422054d0d00201c41024d0d082022201c417d6a22014103746a280204220b2005200e6a4d0d01201c41034d0d08200f41646a280200200b200e6a4b0d080c010b201c4103490d01200128020421052022201c417d6a22014103746a280204210b0b200b2005490d010b201c417e6a21010b0240201c200141016a22294d0d00201c20014d0d02202220014103746a2226280204222a20262802006a2201202220294103746a2227280200222b490d03200120194b0d04202641046a212c2017202b41186c6a221a2027280204221d41186c22056a210b200141186c210f024002402001202b6b2207201d6b2201201d490d00201f201a200510e908221b20056a210e02400240201d4101480d002007201d4a0d010b201a2101201b21050c020b2017200f6a2108201b2105201a210103402001200b2005200b280200200528020049220f1b2207290300370300200141106a200741106a290300370300200141086a200741086a2903003703002005200541186a200f1b2105200141186a2101200b41186a200b200f1b220b20084f0d02200e20054b0d000c020b0b201f200b200141186c220510e908221b20056a210e02400240201d4101480d00200141014e0d010b200b2101201b21050c010b2023200f6a210f200b21010340200f200141686a2205200e41686a220b200b28020020052802004922071b2208290300370300200f41106a200841106a290300370300200f41086a200841086a290300370300200e200b20071b210e0240201a2005200120071b2201490d00201b21050c020b200f41686a210f201b2105201b200e490d000b0b20012005200e20056b220b200b4118706b10e9081a202c202a201d6a3602002026202b3602002027202741086a201c2029417f736a41037410ea081a4101211c202841014d0d050c010b0b2029201c4184d2cc00103c000b2001201c4194d2cc00103c000b202b200141a4d2cc001057000b2001201941a4d2cc00104d000b2024450d090c000b0b410120056b201a41d4d1cc00103c000b200e201941c4d1cc001056000b20012019419cd4cc00103c000b20012019418cd4cc00103c000b41b4d3cc00412641fcd3cc00105d000b2001201941ecd3cc00103c000b41b4d3cc00412641dcd3cc00105d000b2001201941a4d3cc00103c000b0240200641ffffffff0171450d002022102e0b2010411870210120104118490d0020102001460d00201f102e0b201941186c41186d220141ffffffff00712001470d0220014104742205417f4c0d020240024020050d004108210e0c010b2005102c220e450d020b02400240024002402005410476220f20014f0d002005410376220b2001200b20014b1b22014104200141044b1b220141ffffffff0071200146410374210b200141047421010240024020050d00200441003602380c010b200441386a41086a41083602002004200536023c2004200e3602380b200441d0006a2001200b200441386a107d200441d8006a280200210120042802504101460d012004280254210e2001410476210f0b20190d01410021010c020b2001450d040c030b201741086a2101201941186c220b41686a41186e2107200e210503402001290300210a2005200141086a2903003703082005200a370300200141186a2101200541106a2105200b41686a220b0d000b200741016a21010b02402018450d00201841186c450d002017102e0b2000200e360204200041003602002000410c6a2001360200200041086a200f3602000b200441e0006a24000f0b1036000b1038000bb50b020d7f047e23004190026b220424002004200337036820042002370360200128020021052001280204210602400240024002400240024020012802082207450d002005200741226c22086a2109200441d0006a2002200342ffff03420010e608200441c0006a2002200342ffff03420010e708200441c0006a41086a2903002102200429034021032004280250210a200521070340200741206a2f0100210b200441f0016a41186a200741186a290000370300200441f0016a41106a200741106a290000370300200441f0016a41086a200741086a290000370300200420072900003703f001200b0d02200741226a21072008415e6a22080d000b0b20004100360208200042083702002006450d01200641226c450d012005102e0c010b200441306a20032002200bad420010e80820044190016a41086a200441f0016a41086a2903002202370300200441f0006a41186a220c200441f0016a41186a290300370300200441f0006a41106a220d200441f0016a41106a290300370300200441f0006a41086a220e2002370300200420042903f00122023703900120042002370370200a200b6c220b41ffff036e210a200b41ffff0370210f20042903302102200441306a41086a29030021034130102c2210450d0220102002200a417f200b4180807c491b200f41ffff014b6aad42ffff03837c221137032020102004290370370300201041286a20032011200254ad7c370300201041186a200c290300370300201041106a200d290300370300201041086a200e2903003703002004200936027c2004200741226a220736027820042006360274200420053602702004200441e0006a360280010240024020084122470d004101210d4101210c0c010b4101210d4101210c03402004200741226a220b360278200741206a2f01002108200441f0016a41186a2205200741186a290000370300200441f0016a41106a2206200741106a290000370300200441f0016a41086a220a200741086a290000370300200420072900003703f001024020080d00200b21072009200b470d010c020b200441206a20042802800122072903002202200741086a290300220342ffff03420010e608200441106a2002200342ffff03420010e70820042004290310200441106a41086a2903002008ad420010e80820044190016a41086a2207200a29030037030020044190016a41106a220b200629030037030020044190016a41186a22092005290300370300200420042903f00122023703b0012004200237039001200520092903003703002006200b290300370300200a200729030037030020042004290390013703f001200428022020086c220b41ffff036e2108200b41ffff0370210920042903002102200441086a29030021030240200c200d470d00200d41016a2207200d490d06200d410174220e2007200e20074b1b22074104200741044b1bad42307e2211422088a74541037421072011a7210e02400240200d0d00200441003602d0010c010b200441083602d801200420103602d0012004200d41306c3602d4010b200441b0016a200e2007200441d0016a107d20042802b801210720042802b0014101460d0420042802b4012110200741306e210d0b2010200c41306c6a220720042903f0013703002006290300211120052903002112200a2903002113200720022008417f200b4180807c491b200941ffff014b6aad42ffff03837c2214370320200741086a2013370300200741286a20032014200254ad7c370300200741186a2012370300200741106a2011370300200c41016a210c20042802782207200428027c2209470d000b0b024020042802742207450d00200741226c450d002004280270102e0b2000200c3602082000200d360204200020103602000b2000200129020c37020c200041246a200141246a2902003702002000411c6a2001411c6a290200370200200041146a200141146a29020037020020044190026a24000f0b2007450d010b1036000b1038000b9e3203187f017e0f7f230041206b2202240002402001280208220320036a22042003490d002001280200210502400240024020040d00410221060c010b2004102c2206450d010b02400240024002402004410176220720034f0d0020042003200420034b1b22084104200841044b1b220820086a220920084f41017421080240024020040d00200241003602100c010b200241186a410236020020022004360214200220063602100b200220092008200241106a107d200241086a280200210420022802004101460d0120022802042106200441017621070b20052005200341226c6a470d01410021040c020b20040d020c030b200541206a2104200341226c2205415e6a41226e2108200621030340200320042f01003b0100200441226a2104200341026a21032005415e6a22050d000b200841016a21040b4101450d0120044102742203417f4c0d010240024020030d004104210a0c010b2003102c220a450d010b0240024002402003410276220b20044f0d00200341017622052004200520044b1b22054104200541044b1b41027421050240024020030d00200241003602100c010b200241186a4104360200200220033602142002200a3602100b200220054104200241106a107d200241086a2802002103024020022802004101460d002002280204210a2003410276210b0c020b2003450d040c030b20040d004100210c0c010b20044101742205417e6a4101762108200a2104200621030340200420032f0100360200200441046a2104200341026a21032005417e6a22050d000b200841016a210c0b200a200c41027422046a21094100210d200a2103024002400240024002400340024020040d000240200c0d004100210e4104210f4100210c0c050b024041ffff03200d200d41ffff034922041b200d41ffff0320041b6b22100d00200c41ffffffff0371200c470d09200c4102742204417f4c0d092004102c220f450d08200f200a200c41027410e9081a2004410276210e0c050b2010200c7021112010200c6e21122009200a6b2204410276220341ffffffff01712003470d0820044101742204417f4c0d080240024020040d00410421130c010b2004102c2213450d080b02400240024002402004410376221420034f0d00200441027622052003200520034b1b22034104200341044b1b220341ffffffff01712003464102742105200341037421030240024020040d00200241003602100c010b200241186a410436020020022004360214200220133602100b200220032005200241106a107d200241086a280200210420022802004101460d0120022802042113200441037621140b200c4102742208417c6a221541027621164100210320132104200a21050340200441046a200528020036020020042003360200200441086a2104200341016a2103200541046a21052008417c6a22080d000b201641016a21170240201541cf004b0d002015450d07201320164103746a2118201741037420136a41786a210e41002108201621050340201720052204417f6a2205490d040240201720056b22194102490d00201320044103746a220441046a280200201320054103746a220341046a2802004f0d002003290200211a20032004290200370200024020194103490d00201a422088a7210f2008417f6a211b41002103200e210403402004410c6a280200200f4f0d01201b2003460d062004200441086a22092902003702002009210420082003417f6a2203470d000b201821040b2004201a3702000b2008417f6a2108200e41786a210e20050d000c080b0b2017410176220441ffffffff01712004470d0b2004410374221c417f4c0d0b201c102c221d450d0a201341786a211e2013416c6a211f4104212041002121410021192017212203402022210f41002122410121090240200f417f6a2204450d000240024002400240024002400240201320044103746a41046a280200200f410374221820136a41746a2802002203490d00200f417e6a210e201f20186a2105410021224100210403400240200e2004470d00200f21090c090b200441016a21042003200528020022084f2109200541786a21052008210320090d000b200441016a21092004417f73200f6a21040c010b201f20186a210502400340024020044101470d00410021040c020b2004417f6a2104200320052802002208492109200541786a21052008210320090d000b0b200f2004490d01200f20174b0d02200f20046b22094101762208450d00201320044103746a2103201e20186a210503402003290200211a200320052902003702002005201a370200200341086a2103200541786a21052008417f6a22080d000b0b024020040d00200421220c060b0240200941094d0d00200421220c060b200f20174b0d03200f20046b2105201320044103746a211b201e20186a21230340200f2004417f6a2222490d050240200f20226b22094102490d00201320044103746a220441046a280200201320224103746a220341046a2802004f0d002003290200211a20032004290200370200024020094103490d00201a422088a7210e2005417f6a211841002103201b210403402004410c6a280200200e4f0d0120052003460d062004200441086a2208290200370200200821042018200341016a2203470d000b202321040b2004201a3702000b2022450d06200541016a2105201b41786a211b202221042009410a4f0d060c000b0b2004200f41e4d1cc001057000b200f201741e4d1cc00104d000b200341016a200941d4d1cc00103c000b200f2004417f6a2222490d00200f201741f4d1cc00104d000b2022200f41f4d1cc001057000b0240024002400240024020192021460d00201921040c010b202141016a22042021490d10202141017422032004200320044b1b22044104200441044b1b220441ffffffff01712004464102742103200441037421040240024020210d00200241003602100c010b2002410436021820022020360210200220214103743602140b200220042003200241106a107d2002280208210320022802004101460d012002280204212020212104200341037621210b202020044103746a2204200936020420042022360200201941016a22242119202441024f0d010c020b2003450d0e0c0d0b02400240024003400240024002400240202020242219417f6a22244103746a2204280200450d00201941037420206a220941746a2802002208200428020422034d0d00201941024d0d0820202019417d6a22044103746a2802042205200320086a4d0d01201941034d0d08200941646a280200200520086a4b0d080c010b20194103490d012004280204210320202019417d6a22044103746a28020421050b20052003490d010b2019417e6a21040b02402019200441016a22254d0d00201920044d0d02202020044103746a2223280204222620232802006a2204202020254103746a22272802002228490d03200420174b0d04202341046a2129201320284103746a221b2027280204221841037422036a21082004410374210902400240200420286b220f20186b22042018490d00201d201b200310e908220420036a21050240024020184101480d00200f20184a0d010b201b2103200421040c020b201320096a210f20042104201b21030340200320082004200841046a280200200441046a2802004922091b2902003702002004200441086a20091b2104200341086a2103200841086a200820091b2208200f4f0d02200520044b0d000c020b0b201d20082004410374220310e908220f20036a21050240024020184101480d00200441014e0d010b20082103200f21040c010b201e20096a21092008210303402009200341786a2208200541786a220e2005417c6a2802002003417c6a2802004922041b2902003702002005200e20041b21050240201b2008200320041b2203490d00200f21040c020b200941786a2109200f2104200f2005490d000b0b20032004200520046b41787110e9081a2029202620186a360200202320283602002027202741086a20192025417f736a41037410ea081a41012119202441014d0d050c010b0b202520194184d2cc00103c000b200420194194d2cc00103c000b2028200441a4d2cc001057000b2004201741a4d2cc00104d000b2022450d060c000b0b2004450d0a0c090b410120036b201941d4d1cc00103c000b2005201741c4d1cc001056000b2004417c6a2104200d20032802006a2205200d492108200341046a21032005210d2008450d000b0240200b450d00200a102e0b411e210e41b4d2cc0021040c030b0240202141ffffffff0171450d002020102e0b201c450d00201d102e0b0240024002400240024002400240024002400240200d41feff034b0d0041ffff03200c6e2109410021040240200c20104b0d0041002104200c2105034020162004490d09201320044103746a2208280204220f20126a2203200f490d08200841046a2003360200024020032009490d00200441016a200c7021040b2005417f6a22050d000b0b2011450d01034020162004490d06201320044103746a2205280204220841016a22032008490d05200541046a2003360200024020032009490d00200441016a200c7021040b2011417f6a22110d000c020b0b200c417f6a21092013280204210e02400240200c20104d0d00200921040c010b20092104034020162004490d04201320044103746a220341002003280204220320126b2205200520034b22081b200520081b2205360204200420092004417f6a220f200f20044b1b2005200e4b1b21042011201220036b410020081b6a2111200c417f6a220c0d000b0b2011450d00034020162004490d0202400240201320044103746a22082802042203417f6a220520034d0d0020092004417f6a2203200320044b1b21040c010b200841046a2005360200200420092004417f6a2203200320044b1b2005200e4b1b21042011417f6a21110b20110d000b0b024002400240201541cf004b0d002015450d0a201320164103746a2119201741037420136a41786a210f410021080340201720162204417f6a2216490d030240201720166b221b4102490d00201320044103746a2204280200201320164103746a22032802004f0d002003290200211a200320042902003702000240201b4103490d00201aa721092008417f6a210e41002103200f21040340200441086a220528020020094f0d01200e2003460d05200420052902003702002005210420082003417f6a2203470d000b201921040b2004201a3702000b2008417f6a2108200f41786a210f20160d000c0b0b0b2017410176220441ffffffff01712004470d0e2004410374220c417f4c0d0e200c102c2229450d0d201341786a211d201341686a21114104212041002116410021192017212203402022210f41002122410121090240200f417f6a2204450d000240024002400240024002400240201320044103746a280200200f410374221820136a41706a2802002203490d00200f417e6a210e201120186a2105410021224100210403400240200e2004470d00200f21090c090b200441016a21042003200528020022084f2109200541786a21052008210320090d000b200441016a21092004417f73200f6a21040c010b201120186a210502400340024020044101470d00410021040c020b2004417f6a2104200320052802002208492109200541786a21052008210320090d000b0b200f2004490d01200f20174b0d02200f20046b22094101762208450d00201320044103746a2103201d20186a210503402003290200211a200320052902003702002005201a370200200341086a2103200541786a21052008417f6a22080d000b0b024020040d00200421220c060b0240200941094d0d00200421220c060b200f20174b0d03200f20046b2108201320044103746a211b201d20186a21230340200f2004417f6a2222490d050240200f20226b22094102490d00201320044103746a2204280200201320224103746a22032802004f0d002003290200211a20032004290200370200024020094103490d00201aa7210e2008417f6a211841002103201b21040340200441086a2205280200200e4f0d0120082003460d0620042005290200370200200521042018200341016a2203470d000b202321040b2004201a3702000b2022450d06200841016a2108201b41786a211b202221042009410a4f0d060c000b0b2004200f41e4d1cc001057000b200f201741e4d1cc00104d000b200341016a200941d4d1cc00103c000b200f2004417f6a2222490d00200f201741f4d1cc00104d000b2022200f41f4d1cc001057000b0240024002400240024020192016460d00201921040c010b201641016a22042016490d13201641017422032004200320044b1b22044104200441044b1b220441ffffffff01712004464102742103200441037421040240024020160d00200241003602100c010b2002410436021820022020360210200220164103743602140b200220042003200241106a107d2002280208210320022802004101460d012002280204212020162104200341037621160b202020044103746a2204200936020420042022360200201941016a22242119202441024f0d010c020b2003450d110c100b02400240024003400240024002400240202020242219417f6a22244103746a2204280200450d00201941037420206a220941746a2802002208200428020422034d0d00201941024d0d0820202019417d6a22044103746a2802042205200320086a4d0d01201941034d0d08200941646a280200200520086a4b0d080c010b20194103490d012004280204210320202019417d6a22044103746a28020421050b20052003490d010b2019417e6a21040b02402019200441016a220d4d0d00201920044d0d02202020044103746a2223280204222520232802006a22042020200d4103746a22272802002228490d03200420174b0d04202341046a2126201320284103746a221b2027280204221841037422036a21052004410374210902400240200420286b220f20186b22042018490d002029201b200310e908220420036a21080240024020184101480d00200f20184a0d010b201b2103200421040c020b201320096a210f20042104201b21030340200320052004200528020020042802004922091b2902003702002004200441086a20091b2104200341086a2103200541086a200520091b2205200f4f0d02200820044b0d000c020b0b202920052004410374220310e908220e20036a21080240024020184101480d00200441014e0d010b20052103200e21040c010b201d20096a210f200521030340200f200341786a2204200841786a2205200528020020042802004922091b2902003702002008200520091b21080240201b2004200320091b2203490d00200e21040c020b200f41786a210f200e2104200e2008490d000b0b20032004200820046b41787110e9081a2026202520186a360200202320283602002027202741086a2019200d417f736a41037410ea081a41012119202441014d0d050c010b0b200d20194184d2cc00103c000b200420194194d2cc00103c000b2028200441a4d2cc001057000b2004201741a4d2cc00104d000b2022450d090c000b0b410120036b201b41d4d1cc00103c000b2016201741c4d1cc001056000b20042017419cd4cc00103c000b20042017418cd4cc00103c000b41b4d3cc00412641fcd3cc00105d000b2004201741ecd3cc00103c000b41b4d3cc00412641dcd3cc00105d000b2004201741a4d3cc00103c000b0240201641ffffffff0171450d002020102e0b200c450d002029102e0b2017410374410375220441ffffffff03712004470d0420044102742203417f4c0d040240024020030d004104210f0c010b2003102c220f450d040b02402003410276220e20044f0d00200341017622052004200520044b1b22044104200441044b1b220441ffffffff03712004464102742105200441027421040240024020030d00200241003602100c010b200241186a4104360200200220033602142002200f3602100b200220042005200241106a107d200241086a280200210420022802004101460d032002280204210f2004410276210e0b2017410374220541786a4103762108200f2104201321030340200420033502043e0200200441046a2104200341086a2103200541786a22050d000b200841016a210c2014450d002013102e0b200c4102742205410275220320036a22042003490d032004417f4c0d030240024020040d004102211b0c010b2004102c221b450d030b02400240024002402004410176221920034f0d0020042003200420034b1b22034104200341044b1b220320036a220820034f41017421030240024020040d00200241003602100c010b200241186a4102360200200220043602142002201b3602100b200220082003200241106a107d200241086a280200210420022802004101460d012002280204211b200441017621190b200f20056a2209200f470d01410021050c020b2004450d050c040b41002105201b2104200f21030340200420032802002208417f200841808004491b3b0100200541016a2105200441026a21042009200341046a2203470d000b0b0240200e450d00200f102e0b0240200b450d00200a102e0b02402005410174410175220420012802082203200320044b1b2205450d00200128020041206a2104201b21030340200420032f01003b0100200341026a2103200441226a21042005417f6a22050d000b0b410021042019450d00201b102e0b02402007450d002006102e0b2000200e36020420002004360200200241206a24000f0b2004450d010b1036000b1038000be80402087f017e230041306b2204240002400240024002402001280208220541ffffffff00712005470d0020054104742206417f4c0d00200128020021070240024020060d00410821080c010b2006102c2208450d040b41002109200441003602182004200836021020042006410476220a36021402400240200a20054f0d002006410376220a2005200a20054b1b220a4104200a41044b1b220a41ffffffff0071200a46410374210b200a410474210a0240024020060d00200441003602000c010b200441086a410836020020042006360204200420083602000b200441206a200a200b2004107d200441286a280200210620042802204101460d0120042004280224220836021020042006410476220a3602140b024020072007200541306c6a460d00200741206a2106200541306c220741506a41306e21092008210503402006290300210c2005200641086a2903003703082005200c370300200641306a2106200541106a2105200741506a22070d000b200941016a21090b200420093602182004200441106a2002200310bc0420042802004101470d02200441086a2802002106200428020421050c030b20060d030b1038000b200441086a280200210b2004280204210902402004410c6a280200220620012802082205200520064b1b2207450d00200128020041206a21062009210503402005290300210c2006200541086a2903003703082006200c370300200541106a2105200641306a21062007417f6a22070d000b0b410021050240200b41ffffffff0071450d002009102e0b0b0240200a450d002008102e0b2000200636020420002005360200200441306a24000f0b1036000bee2e0a057f027e077f027e037f027e057f027e127f057e23004180016b2204240002402001450d0041002105034020002802082206450d0120002802002207200641e0006c6a2108420021094200210a0340024002402007280238220b450d00200b41d8006c210c2007280230220d210602400240024002400240024002400240024002400340200641306a280200220e280208220f41016a41004c0d01200641d8006a2110200e200f3602080240200e41f4006a2d00000d0020102106200c41a87f6a220c450d0c0c010b0b4104102c2211450d09201120063602000240200c41d800470d0042002112420021132011102e0c0c0b200d200b41d8006c6a220f41a87f6a210b4101211441012115024002400240024003402010210602400340200641306a280200220e280208220c41016a41004c0d08200e200c3602080240200e41f4006a2d00000d00200f200641d8006a2206470d010c020b0b024020152014470d00201441016a220e2014490d0f2014410174220c200e200c200e4b1b220e4104200e41044b1b220e41ffffffff0371200e46410274210c200e410274210e0240024020140d00200441003602680c010b20044104360270200420113602682004201441027436026c0b200441d8006a200e200c200441e8006a107d2004280260210e20042802584101460d03200428025c2111200e41027621140b200641d8006a2110201120154102746a2006360200201541016a2115200b2006470d010b0b420021124200211320154102490d0320112015410274220b6a2116200b0d0142002117420021180c020b200e450d0b0c0c0b4200211742002118201121060340427f20182006280200220e41286a2903007c2017200e41206a2903007c2213201754220ead7c2217200e201720185420172018511b220e1b2118427f2013200e1b21172016200641046a2206470d000b0b201541ffffffff00712015470d0920154104742206417f4c0d090240024020060d00410821190c010b2006102c2219450d0b0b0240024002402006410476221a20154f0d002006410376220e2015200e20154b1b220e4104200e41044b1b220e41ffffffff0071200e46410374210c200e410474210e0240024020060d00200441003602680c010b200441083602702004200636026c200420193602680b200441d8006a200e200c200441e8006a107d2004280260210620042802584101460d01200428025c21192006410476211a0b4108211b2011201646221c450d014100211d0c090b20060d0b0c0a0b41002110201921062011210c0340200c28020041306a280200220e280208220f41016a41004c0d04200e200f360208200e29034021132006200e41c8006a29030037030820062013370300201041016a2110200641106a21062016200c41046a220c470d000b4100211d201c0d07201121060240034002402006280200220e290320200e41286a29030084500d00200e280230220e280208220c41016a41004a0d0241bcd9cc004118200441f8006a41c4ffc40041f883c500103e000b200641046a2106200b417c6a220b450d090c000b0b200e200c360208200e41c8006a2903002113200e290340211e4110102c221b450d0a200641046a2106201b201e370300201b20133703084101211d4100210f4101210b0240034020162006460d012006280200210e200641046a220c2106200e290320200e41286a29030084500d00200e2802302206280208220e41016a41004c0d062006200e360208200641c8006a29030021132006290340211e02400240200b201d470d00201d41016a2206201d490d0d201d410174220e2006200e20064b1b22064104200641044b1b220641ffffffff0071200646410374210e2006410474210602400240201d0d00200441003602680c010b200441083602702004201b3602682004201d41047436026c0b200441d8006a2006200e200441e8006a107d2004280260210620042802584101460d01200428025c211b2006410476211d0b201b200b4104746a220620133703082006201e370300200f41106a210f200b41016a210b200c21060c010b0b20060d0b0c0a0b200b450d07200b410474450d0502400240200b4101470d00201b210e0c010b201b41106a2106201b210e0340200e2006200e290300200629030056200e41086a2903002213200641086a290300221e562013201e511b1b210e200641106a2106200f41706a220f0d000b0b2010410474220c450d060240024020104101470d002019210c0c010b201941106a2106200c41706a21102019210c03402006200c200c290300200629030056200c41086a2903002213200641086a290300221e562013201e511b1b210c200641106a2106201041706a22100d000b0b427f4200200e2903002213200c29030022127d221e201e201356200e41086a290300221e200c41086a2903007d2013201254ad7d2213201e562013201e511b22061b221f42002007290300221e20177d22122012201e56200741086a290300221220187d201e201754ad7d221820125620182012511b220e1b7c22172017201f54220c4200201320061b221742002018200e1b7c200cad7c221820175420182017511b22061b2212200254427f201820061b221320035420132003511b450d080240201d41ffffffff0071450d00201b102e0b201a450d002019102e0b201441ffffffff0371450d0b2011102e0c0b0b41bcd9cc004118200441f8006a41c4ffc40041d883c500103e000b41bcd9cc004118200441f8006a41c4ffc40041d883c500103e000b41bcd9cc004118200441f8006a41f09cc50041809dc500103e000b41bcd9cc004118200441f8006a41c4ffc40041f883c500103e000b41e580c5004130419881c500105d000b41a881c500413241dc81c500105d000b200741086a2903002113200729030021120b024002400240024002400240201c0d002011210e0340200e28020028023022062802080d022006417f3602082006420020062903402218200e280200220c290320221e7d22172017201856200641c8006a22102903002217200c41286a2903007d2018201e54ad7d221820175620182017511b220c1b370340201042002018200c1b370300200e280200220c4200370320200c41286a42003703002006200628020841016a3602082016200e41046a220e470d000b0b0240201541144b0d00201541014d0d052015417e6a21064102210e201120154102746a41786a210c034020152006490d03200c200e10c104200c417c6a210c200e41016a210e2006417f6a2206417f470d000c060b0b2015410176220641ffffffff03712006470d0520064102742220417f4c0d052020102c2221450d062011417c6a2122201141746a2123410021244104212541002126201521270340024002402027220b417f6a22270d004101210c410021270c010b024002400240024002400240024002400240024002400240201120274102746a28020041306a2802002206280208220e41016a41004c0d002006200e3602082011200b417e6a220d4102746a28020041306a280200220e280208220c41016a41004c0d01200641c8006a290300211820062903402117200e200c3602082017200e290340542018200e41c8006a29030022175420182017511b0d042023200b4102746a2106410021274100211003400240200d2010470d00200b210c0c0e0b200641046a28020041306a280200220e280208220c41016a41004c0d03200e200c360208200628020041306a280200220c280208220f41016a41004c0d04200e41c8006a2903002118200e2903402117200c200f3602082006417c6a2106201041016a21102017200c2903405a2018200c41c8006a29030022175a20182017511b0d000b201041016a210c2010417f73200b6a21270c050b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b2023200b410274220f6a210602400340024020274101470d00410021270c020b200641046a28020041306a280200220e280208220c41016a41004c0d03200e200c360208200628020041306a280200220c280208221041016a41004c0d04200e41c8006a2903002118200e2903402117200c20103602082006417c6a21062027417f6a21272017200c290340542018200c41c8006a29030022175420182017511b0d000b0b200b2027490d03200b20154b0d04200b20276b220c4101762210450d00201120274102746a21062022200f6a210e03402006280200210f2006200e280200360200200e200f360200200641046a2106200e417c6a210e2010417f6a22100d000b0b2027450d06200c41094b0d06200b20154b0d04200b20276b210c2027417f6a2106202220274102746a210e0340200b2006490d0b200e200c41016a220c10c1042006417f6a221020064f0d06200e417c6a210e20102106200c410a490d000c060b0b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b2027200b41e4d1cc001057000b200b201541e4d1cc00104d000b200b2027417f6a2206490d05200b201541f4d1cc00104d000b201041016a21270b0240024002400240024020262024460d00202621060c010b202441016a22062024490d0a2024410174220e2006200e20064b1b22064104200641044b1b220641ffffffff0171200646410274210e200641037421060240024020240d00200441003602680c010b20044104360270200420253602682004202441037436026c0b200441d8006a2006200e200441e8006a107d2004280260210e20042802584101460d01200428025c212520242106200e41037621240b202520064103746a2206200c36020420062027360200202641016a22282126202841024f0d010c020b200e0d090c080b024002400240024002400240024003400240024002400240202520282226417f6a22284103746a2206280200450d00202641037420256a220f41746a28020022102006280204220e4d0d00202641024d0d0c20252026417d6a22064103746a280204220c200e20106a4d0d01202641034d0d0c200f41646a280200200c20106a4b0d0c0c010b20264103490d012006280204210e20252026417d6a22064103746a280204210c0b200c200e490d010b2026417e6a21060b02402026200641016a22294d0d00202620064d0d02202520064103746a222a280204222b202a2802006a2206202520294103746a222c280200222d490d03200620154b0d042011202d4102746a222e202c280204222f410274220e6a210c2006410274210f024002402006202d6b220b202f6b2206202f490d002021202e200e10e9082206200e6a211002400240202f4101480d00200b202f4a0d010b202e210e200621060c020b2011200f6a213020062106202e210e0340200c28020041306a280200220f280208220b41016a41004c0d08200f200b360208200628020041306a280200220b280208220d41016a41004c0d09200f41c8006a2903002118200f2903402117200b200d360208200e200c20062017200b290340542018200b41c8006a29030022175420182017511b220f1b2802003602002006200641046a200f1b2106200e41046a210e200c41046a200c200f1b220c20304f0d02201020064b0d000c020b0b2021200c2006410274220e10e9082230200e6a211002400240202f4101480d00200641014e0d010b200c210e203021060c010b2022200f6a210f200c210e03402010417c6a220b28020041306a2802002206280208220c41016a41004c0d092006200c360208200e417c6a220d28020041306a280200220c280208223141016a41004c0d0a200641c8006a290300211820062903402117200c2031360208200f200d200b2017200c290340542018200c41c8006a29030022175420182017511b22061b2802003602002010200b20061b21100240202e200d200e20061b220e490d00203021060c020b200f417c6a210f2030210620302010490d000b0b200e2006201020066b417c7110e9081a202a41046a202b202f6a360200202a202d360200202c202c41086a20262029417f736a41037410ea081a41012126202841014d0d090c010b0b202920264184d2cc00103c000b200620264194d2cc00103c000b202d200641a4d2cc001057000b2006201541a4d2cc00104d000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b41bcd9cc004118200441f8006a41c4f8c90041ccf9c900103e000b2027450d040c000b0b4194dacc004110200441f8006a41e4ffc40041ec81c500103e000b2006201541c4d1cc001056000b2006200b41f4d1cc001057000b0240202441ffffffff0171450d002025102e0b2020450d002021102e0b2015417f6a210f02400240024002400240024002400240201c450d0042002118420021170c010b420021184100210e420021172011210c0340200c2802002802302206280208221041016a41004c0d0220062010360208200441386a200641c8006a29030022324200200ead2233420010e808200441c8006a2006290340223442002033420010e80802404200427f20042903482004290340420052200441c8006a41086a290300221e20042903387c221f201e547222061b221e20187d22352035201e56427f201f20061b221f20177d201e201854ad7d221e201f56201e201f511b22061b2007290300584200201e20061b221e200741086a290300221f58201e201f511b0d0042002033427f7c221e201e203356200e45200e1b1ba7210f0c020b200e41016a210e427f201720327c201820347c221e2018542206ad7c22182006201820175420182017511b22061b2117427f201e20061b21182016200c41046a220c470d000b0b2015200f4d0d012011200f4102746a2802002802302206280208220e41016a41004c0d022006200e360208200441186a200641c8006a29030022354200200f41016a220fad2233420010e808200441286a2006290340223242002033420010e8084200427f200741086a290300221e20177c2007290300221720187c221f2017542206ad7c221820062018201e542018201e511b22061b2218427f200441286a41086a290300221720042903187c221e2004290320420052201e20175472220e1b7d427f201f20061b2217427f2004290328200e1b221f54ad7d221e2017201f7d221f201756201e201856201e2018511b22061b21344200201f20061b21362015410274210c201121100340200c450d0620102802002206450d062006280230220e280208220b41016a41004c0d04200e200b360208200441086a203620342033420010e70820064200427f2004290308221820327c22172017201854220b200441086a41086a290300221820357c200bad7c221720185420172018511b220b1b2218200e290340221e7d221f201f201856427f2017200b1b2217200e41c8006a2903007d2018201e54ad7d221820175620182017511b220e1b2217370320200641286a42002018200e1b221e370300200628023022062802080d05201041046a2110200641003602082006427f2006290340221820177c22172017201854220e200641c8006a220b2903002218201e7c200ead7c221720185420172018511b220e1b370340200b427f2017200e1b370300200c417c6a210c200f417f6a220f0d000c060b0b41bcd9cc004118200441f8006a41c4ffc40041fc81c500103e000b418c82c500418a01419883c500105d000b41bcd9cc004118200441f8006a41c4ffc40041a883c500103e000b41bcd9cc004118200441f8006a41c4ffc40041b883c500103e000b4194dacc004110200441f8006a41e4ffc40041c883c500103e000b0240201441ffffffff0371450d002011102e0b2004200710bb040240201d41ffffffff0071450d00201b102e0b201a450d032019102e0c030b1038000b1036000b42002112420021130b2013200a20122009562013200a562013200a511b22061b210a2012200920061b2109200741e0006a22072008470d000b200541016a220520014f0d012009200258200a200358200a2003511b450d000b0b20044180016a24000bf00303047f027e037f230041106b2202240002400240024002400240024020014102490d00200028020441306a2802002203280208220441016a41004c0d0220032004360208200028020041306a2802002204280208220541016a41004c0d03200341c8006a29030021062003290340210720042005360208200720042903405a2006200441c8006a29030022075a20062007511b0d00200028020021082000200028020436020002400240200141034f0d00200041046a21040c010b200041046a21052001417f6a21090340200541046a220428020041306a2802002200280208220341016a41004c0d0620002003360208200841306a2802002203280208220a41016a41004c0d07200041c8006a2903002106200029034021072003200a3602080240200720032903405a2006200341c8006a29030022075a20062007511b450d00200521040c020b2009450d0320052004280200360200200421052009417f6a22094101470d000b0b200420083602000b200241106a24000f0b2001200141d4d1cc00103c000b41bcd9cc004118200241086a41c4f8c90041ccf9c900103e000b41bcd9cc004118200241086a41c4f8c90041ccf9c900103e000b41bcd9cc004118200241086a41c4f8c90041ccf9c900103e000b41bcd9cc004118200241086a41c4f8c90041ccf9c900103e000bf70302037f017e230041106b2202240020004100360208200042013702000240024020012d00004101460d00200241003a00002000200241011074200141046a28020021032001410c6a2802002204200010760240200441306c2204450d00200320046a21040340200220032802003602002000200241041074200341086a200010b204200341306a22032004470d000b0b200129031021052002200141186a290300370308200220053703002000200241101074200141206a29030021052002200141286a2903003703082002200537030020002002411010742002200141c0006a2802003602002000200241041074200129033021052002200141386a2903003703082002200537030020002002411010740c010b200241013a00002000200241011074200141286a29030021052002200141306a2903003703082002200537030020002002411010742000200141016a41201074200141216a2d000020001073200141386a29030021052002200141c0006a290300370308200220053703002000200241101074200141c8006a29030021052002200141d0006a2903003703082002200537030020002002411010742002200141e8006a2802003602002000200241041074200141d8006a29030021052002200141e0006a2903003703082002200537030020002002411010740b200241106a24000bb20b04057f017e037f017e230041c0046b2203240020034180026a41086a200241086a2802003602002003200229020037038002200341086a20034180026a10c404200341186a20032802082003280210109d03200341286a41206a2204200141206a290200370300200341286a41186a2205200141186a290200370300200341286a41106a2206200141106a290200370300200341286a41086a2207200141086a290200370300200328021821022003410036021820032001290200370328024002400240024020024101470d00200329021c2108200341e0006a41206a22022004290300370300200341e0006a41186a22092005290300370300200341e0006a41106a22052006290300370300200341e0006a41086a220a20072903003703002003200329032837036020034188016a2008a7220b10a70420034180026a2003280288012206200328029001220410c504200329028402210c2003280280022101200341a0016a41206a2002290300370300200341a0016a41186a2009290300370300200341a0016a41106a2005290300370300200341a0016a41086a200a290300370300200320032903603703a0012001410820011b2105024002400240200c420020011b220c422088a722022008422088a722074d0d0020034180026a41206a200341a0016a41206a29030037030020034180026a41186a200341a0016a41186a29030037030020034180026a41106a200341a0016a41106a29030037030020034180026a41086a200341a0016a41086a290300370300200320032903a00122083703800220032005200741f8026c6a22013602a80202402008a741ff01714103460d0020012802bc024102460d0020034180026a2005200741f8026c6a41c8026a10c6040d020b200141bc026a2104024020012802bc024102460d0002402005200741f8026c6a22062802b0022209450d00200641b4026a280200450d002009102e0b2001108b020b200120034180026a41bc0210e9081a200441023602002005200741f8026c6a220141f0026a200341f8016a290300370300200141e8026a200341f0016a290300370300200141e0026a200341e8016a290300370300200141d8026a200341e0016a290300370300200141d0026a200341d8016a290300370300200141c8026a200341d0016a290300370300200120032903c8013703c002200328028801210620032802900121040b20032005360280022003200c370284022006200420034180026a10c704200ca7210902402002450d00200241f8026c21022005210103400240200141bc026a2802004102460d000240200141b0026a2802002204450d00200141b4026a280200450d002004102e0b20011096010b200141f8026a2101200241887d6a22020d000b0b02402009450d00200941f8026c450d002005102e0b20032003290095013703c80120032003419c016a2800003600cf0141062101410121020c010b20032003290095013703c80120032003419c016a2800003600cf01200241f8026c21022005210103400240200141bc026a2802004102460d000240200141b0026a2802002204450d00200141b4026a280200450d002004102e0b20011096010b200141f8026a2101200241887d6a22020d000b4102210141002102200ca72204450d00200441f8026c450d002005102e0b0240200328028c01450d002006102e0b200320032903c801370350200320032800cf01360057024020020d00200020013a000020002003290350370001200041086a20032800573600000c020b2003418c026a200736020020034188026a200b3602002003410136028402200341013a00800220034180026a10fe01200041063a00000c020b2000410210c80420002d000021010b200141ff01714106470d010b2003280210210120032802082102024020032802184101460d002002200110ff010c010b20022001200341186a410472109e030b0240200328020c450d002003280208102e0b200341c0046a24000bd00101057f230041306b22022400200241dffcc6004109108102200241106a41e5b0c4004106108102200241206a20012802002203200128020810a201024002402002280228220441206a2205417f4c0d000240024020050d00410121060c010b2005102c2206450d020b20004100360208200020053602042000200636020020002002411010742000200241106a411010742000200228022022052004107402402002280224450d002005102e0b0240200141046a280200450d002003102e0b200241306a24000f0b1038000b1036000bb91f09047f017e0c7f027e047f037e167f017e087f230041a00e6b220324002003200236021c20032001360218200341206a2001200210ed020240024002400240200328022022040d00200041003602000c010b200328022421052003200341286a28020036023420032004360230200341106a200341306a10ab010240024020032802100d000240024020032802142206200328023441f8026e2201200120064b1bad42f8027e2207422088a70d002007a72201417f4c0d000240024020010d00410821080c010b2001102c2208450d060b200141f8026ead2107024002402006450d00200341870b6a2109200341c80d6a41126a210a200341f50d6a210b200341e00d6a410372210c200341e00d6a41126a210d200341900e6a41086a210e200341f80a6a410472220f41076a211003400240024020032802342201450d00200328023022112d0000211220032001417f6a22133602342003201141016a360230410321020240024020120e020001030b410221020c020b024002400240024002402013450d0020112d0001210220032001417e6a22013602342003201141026a22123602304100211102400240024020020e020100030b200341086a200341306a10ab0120032802080d0220032802342201200328020c2202490d022002417f4c0d0c0240024020020d00410121110c010b200210322211450d12200328023421010b20012002490d0120112003280230200210e9081a200328023422012002490d122002ad221442208620148421152003200120026b22013602342003200328023020026a22123602300b2015a7211302402001450d0020122d0000211620032001417f6a3602342003201241016a360230200341f80a6a200341306a10980120032802f80a411c460d00200341c8086a200341f80a6a41b00210e9081a024020032802342201450d00200328023022122d0000211720032001417f6a22183602342003201241016a2219360230410021020240024020170e020100020b20184104490d01201235000121142003201241056a36023020032001417b6a220236023420024104490d012012350005211a2003200141776a22183602342003201241096a2219360230201a422086201484211b410121020b2018450d0020192d0000210120032018417f6a22123602342003201941016a360230024002400240024020010e110004040304040404040404040404040102040b2012450d0320192d0001210120032018417e6a3602342003201941026a3602304100211741002118024020010e03090008040b200341f80a6a200341306a10930120032d00f80a4101460d03200341f80d6a41086a200941086a2900002214370300200341f80d6a41106a200941106a2f000022013b01002003200f290000221a3703900e20032009290000221c3703f80d200320102800003600970e20032d00fb0a211d20032f00f90a211e20032d00920e211f20032800930e212020032800970e2121200341e00d6a41106a20013b0100200341e00d6a41086a20143703002003201c3703e00d201aa72122410121180c080b2012450d0220192d0001210120032018417e6a2217360234410221122003201941026a36023002400240024020010e03000102050b20174104490d04201928000221172003201941066a36023020032018417a6a220136023420014104490d04200341e00d6a41086a200341f80a6a41086a290200370300200341e00d6a41106a200341f80a6a41106a290200370300200320032902f80a3703e00d201928000621232003201841766a36023420032019410a6a36023041002112201721240c010b200341f80a6a200341306a10930120032d00f80a4101460d03200341f80d6a41086a2201200941086a290000370300200341f80d6a41106a2212200941106a2f00003b01002003200f29000022143703900e200320092900003703f80d200320102800003600970e20032d00fb0a212520032f00f90a212620032802940e21232003200e41026a2d00003a00e20d2003200e2f01003b01e00d200c20032903f80d370000200c41086a2001290300370000200c41106a20122f01003b0000200b20032f009d0e3b0000200b41026a2003419d0e6a41026a2d00003a00002014a72124410121120b200341c80d6a41106a200341e00d6a41106a2903002214370300200341c80d6a41086a200341e00d6a41086a290300221a370300200341b00d6a41086a201a370300200341b00d6a41106a20143d0100200320032903e00d22143703c80d200341a80d6a41046a200a41046a2f01003b0100200320143703b00d2003200a2801003602a80d410121170c080b2012450d0120192d0001210120032018417e6a2227360234410221172003201941026a3602304102211202400240024020010e03000102040b20274104490d03201928000221272003201941066a36023020032018417a6a220136023420014104490d03200341e00d6a41086a200341f80a6a41086a290200370300200341e00d6a41106a200341f80a6a41106a290200370300200320032902f80a3703e00d201928000621232003201841766a36023420032019410a6a36023041002112202721240c010b200341f80a6a200341306a10930120032d00f80a4101460d02200341f80d6a41086a2201200941086a290000370300200341f80d6a41106a2212200941106a2f00003b01002003200f29000022143703900e200320092900003703f80d200320102800003600970e20032d00fb0a212520032f00f90a212620032802940e21232003200e41026a2d00003a00e20d2003200e2f01003b01e00d200c20032903f80d370000200c41086a2001290300370000200c41106a20122f01003b0000200b20032f009d0e3b0000200b41026a2003419d0e6a41026a2d00003a00002014a72124410121120b200341b00d6a41106a200341e00d6a41106a2f01003b0100200341b00d6a41086a200341e00d6a41086a290300370300200341a80d6a41046a200d41046a2f01003b0100200320032903e00d3703b00d2003200d2801003602a80d0c070b2012450d0020032018417e6a3602342003201941026a3602300b200341c8086a108b020b2011450d012013450d010b2011102e0b41022102410121010c030b410221180b200341b00d6a41106a200341e00d6a41106a2f01003b0100200341b00d6a41086a200341e00d6a41086a290300370300200341a80d6a41046a200341c80d6a41046a2f01003b0100200320032903e00d3703b00d200320032801c80d3602a80d20222126201d21122020212420212123201f21250b2015422088a72128200341e00d6a41106a200341b00d6a41106a2f01003b0100200341e00d6a41086a200341b00d6a41086a290300370300200341f80d6a41046a200341a80d6a41046a2f01003b0100200320032903b00d3703e00d200320032802a80d3602f80d200341f80a6a200341c8086a41b00210e9081a200320032800c1083602c80d2003200341c1086a41036a2800003600cb0d41002101201821292017212a201b211c2012212b2013212c2011212d2016212e0b20034190066a200341f80a6a41b00210e9081a200341f8056a41106a2211200341e00d6a41106a2f01003b0100200341f8056a41086a2212200341e00d6a41086a290300370300200341f0056a41046a2213200341f80d6a41046a2f01003b0100200320032903e00d3703f805200320032802f80d3602f005200320032802c80d3602e805200320032800cb0d3600eb0520010d00200341f80a6a20034190066a41b00210e9081a200341c8086a41106a20112f01003b0100200341c8086a41086a2012290300370300200341c80d6a41046a20132f01003b0100200320032903f8053703c808200320032802f0053602c80d200320032802e8053602e00d200320032800eb053600e30d201e212f2026213020292131202a2132201c2133202b2134202421352023213620282137202c2138202d2139202e213a2025213b0c010b410321020b200341b8036a200341f80a6a41b00210e9081a200341a0036a41106a2201200341c8086a41106a2f01003b0100200341a0036a41086a2211200341c8086a41086a29030037030020034198036a41046a2212200341c80d6a41046a2f01003b0100200320032903c8083703a003200320032802c80d36029803200320032802e00d36029003200320032800e30d3600930320024103460d04200341e0006a200341b8036a41b00210e9081a200341c8006a41106a221320012f01003b0100200341c8006a41086a22162011290300370300200341c0006a41046a221120122f01003b0100200320032903a00337034820032003280298033602402003200328029003360238200320032800930336003b02402007422088a722012007a7470d00200141016a22122001490d0420014101742218201220122018491b22124104201241044b1bad42f8027e2214422088a74541037421122014a721180240024020010d00200341003602f80a0c010b200341083602800b200320083602f80a2003200141f8026c3602fc0a0b200341c8086a20182012200341f80a6a107d20032802d008211220032802c8084101460d0320032802cc082108200742808080807083201241f8026ead8421070b2008200141f8026c6a200341e0006a41b00210e908220141d4026a2036360000200141d0026a2035360000200141cf026a203b3a0000200141cd026a20303b0000200141cc026a20343a0000200141ca026a202f3b0000200141c9026a20313a0000200141c8026a20323a0000200120333703c002200120023602bc02200120373602b802200120383602b402200120393602b00220132f010021022016290300211420112f010021112003290348211a20032802402112200141f0026a203a3a0000200141ea026a2012360000200141ee026a20113b0000200141d8026a201a370000200141e0026a2014370000200141e8026a20023b0000200141f1026a2003280238360000200141f4026a200328003b36000020074280808080107c21072006417f6a22060d000b0b2008450d0320002007370204200020083602000c040b20120d050b1038000b02402007422088a72201450d00200141f8026c21022008210103400240200141bc026a2802004102460d000240200141b0026a2802002206450d00200141b4026a280200450d002006102e0b20011096010b200141f8026a2101200241887d6a22020d000b0b2007a72201450d00200141f8026c450d002008102e0b200341003602d008200342013703c8082003410a360294062003200341186a360290062003200341c8086a3602b8032003418c0b6a4101360200200342013702fc0a200341909dc5003602f80a200320034190066a3602880b200341b8036a419cebc000200341f80a6a103d1a20032802c80820032802d00810ef02024020032802cc08450d0020032802c808102e0b200041003602000b2005450d002004102e0b200341a00e6a24000f0b1036000b2002200141b8b2c0001056000ba50201027f41012102024020002d0000220320012d0000470d0002400240024020030e03000102000b4101210220002d0001220320012d0001470d024100210220034101470d02200041026a200141026a412010ec084100470f0b200041046a2d00002203200141046a2d0000470d01410021020240024020030e03010003010b200041056a200141056a412010ec084100470f0b41012102200041086a280200200141086a280200470d012000410c6a2802002001410c6a280200470f0b200041046a2d00002203200141046a2d0000470d00410021020240024020030e03010002010b200041056a200141056a412010ec084100470f0b41012102200041086a280200200141086a280200470d002000410c6a2802002001410c6a2802004721020b20020be80101047f230041106b22032400024002402002280208220441f8026c4104722205417f4c0d00200228020021022005102c2206450d012003410036020820032005360204200320063602002004200310760240200441f8026c2204450d00034002400240200241bc026a2802004102470d00200341003a000f20032003410f6a410110740c010b200341013a000f20032003410f6a410110742002200310ab040b200241f8026a2102200441887d6a22040d000b0b200020012003280200200328020810b20102402003280204450d002003280200102e0b200341106a24000f0b1038000b1036000bdc0101047f230041c0006b2202240041a3e7c4002103411221044103210502400240024002400240200141ff01710e050001020304000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602242002418883ca003602202002200241206a360218200241086a41e4e6c4001044000b4193e7c400210341102104410021050c020b418be7c400210341082104410121050c010b41f4e6c400210341172104410221050b20004183023b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bb80701057f230041b0036b220a2400200a41206a200110a904200a280220220b200a280228108f02210c0240200a280224450d00200b102e0b02400240024002400240200c0d00200a41386a220c4200370300200a41306a220b4200370300200a41206a41086a4200370300200a4200370320200a41206a41d9fcc6004106108102200a4198036a4180f4cb004106108102200c200a4198036a41086a290000370300200b200a29009803370300200a41186a200a41206a4120108e024100210d0240417f417f200a28021c4100200a2802181b220c20036a220b200b200c491b220b41016a220e200e200b491b200320021b2203200c4d0d00024020044101470d002005410047200641014b71210d2006417f6a21020b2001280208220c417f4c0d042001280200210b02400240200c0d00410121040c010b200c102c2204450d060b2004200b200c10e9082104200a41206a200941b00210e9081a200a41e4026a2002360200200a41e0026a2005360200200a41d8026a200c360200200a41d4026a200c360200200a41f0026a200841086a290200370300200a41f8026a200841106a290200370300200a4180036a200841186a290200370300200a4188036a200841206a290200370300200a200d3602dc02200a20043602d002200a20073a009003200a20082902003703e8022003200a41206a10aa04200a41206a200310a704200a280228210c200a280220210841002109200a41ac036a41003a0000200a41003602a803200a41106a2008200c200a41a8036a4105410010ca0402400240200a280210450d00200a200a2802142209410520094105491b36029c03200a200a41a8036a36029803200a41086a200a4198036a10ab01200a28020c417f6a210c200a2802084521090c010b0b0240200a280224450d002008102e0b200a200c410020091b220836029c03200a200336029803200a41206a200110a904200a2802202209200a280228200a4198036a109e030240200a280224450d002009102e0b200a412c6a2008360200200a41206a41086a2003360200200a4100360224200a41013a0020200a41206a10fe01200041086a20083602002000200336020420004100360200200141046a280200450d03200b102e0c030b20004281808080b0a08001370200200041086a41f4e6c400ad4280808080f002843702000c010b200041003a000620004183023b0104200041013602002000410c6a4110360200200041086a4193e7c4003602000b2009108b02200141046a280200450d002001280200102e0b200a41b0036a24000f0b1038000b1036000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510272207422088a72203450d0041002105024002402007a722022d00000e020100020b2003417f6a4104490d0120022800012101410121050b2002102e2000200136020420002005360200200641106a24000f0b41cae0cc00412e200641086a41f8e0cc004188e1cc00103e000b8f0101027f230041e0046b22012400200141b0026a200010980120012802b0022102200141046a200141b0026a41047241ac0210e9081a0240024002402002411c460d00200141b0026a200141046a41ac0210e9081a41b002102c2200450d0220002002360200200041046a200141b0026a41ac0210e9081a0c010b410021000b200141e0046a240020000f0b1036000bb00101037f230041e0046b220124002000200028020441016a22023602044100210302400240200220002802084b0d00200141b0026a200010950120012802b0022102200141046a200141b0026a41047241ac0210e9081a2002411c460d00200141b0026a200141046a41ac0210e9081a41b002102c2203450d0120032002360200200341046a200141b0026a41ac0210e9081a20002000280204417f6a3602040b200141e0046a240020030f0b1036000b5a01017f024020002802002201450d0020012001280200417f6a360200200028020022012802000d002001410c6a10cd04200028020041046a22012001280200417f6a3602002000280200220041046a2802000d002000102e0b0b950102027f027e230041106b2201240002404101102c2202450d00200142013702042001200236020002400240200028020022020d00200141003a000f20012001410f6a410110740c010b200141013a000f20012001410f6a41011074200041086a28020022002001107620012002200010740b2001350208210320013502002104200141106a240020042003422086840f0b1036000b810302037f027e230041206b22012400200141003602102001420137030820012000290300370318200141086a200141186a4108107420012000290308370318200141086a200141186a4108107420012000290310370318200141086a200141186a4108107420002802302102200041386a2802002203200141086a10760240200341286c2203450d00200220036a21030340200141086a2002412010742001200241206a290300370318200141086a200141186a41081074200241286a22022003470d000b0b200141086a2000413c6a4120107420012000290318370318200141086a200141186a410810742001200041206a290300370318200141086a200141186a410810740240024002400240200041286a2d00000e03000102030b200141003a0018200141086a200141186a410110740c020b200141013a0018200141086a200141186a410110740c010b200141023a0018200141086a200141186a410110740b2001350210210420013502082105200141206a240020052004422086840bce0202057f017e230041b0016b22022400200241003a006820012802002103200128020421044100210502400340200241003a0028200241286a20032004410047220610e9081a024020040d00200241003a00280b20042006490d01200241c8006a20056a20022d00283a00002001200420066b22043602042001200320066a22033602002002200541016a22063a00682006210520064120470d000b200241286a41186a200241c8006a41186a2903002207370300200241086a41086a2204200241c8006a41086a290300370300200241086a41106a2206200241c8006a41106a290300370300200241086a41186a2203200737030020022002290348370308200041196a2003290300370000200041116a2006290300370000200041096a200429030037000020002002290308370001200041003a0000200241b0016a24000f0b2006200441cce9cc001056000bbb010002400240024002402002450d0020014100480d01024002400240200328020022020d0020010d01410121020c020b0240200328020422030d0020010d01410121020c020b200220032001103022020d010c040b2001102c2202450d030b20002002360204410021020c030b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2000200136020441012101410121020b20002002360200200041086a20013602000b8c0202017f067e23004190016b220124002000290300210220004200370300024020024201520d00200041286a2903002102200041186a29030021032000290310210420002903082105200041206a2903002106200141c8006a200041306a2903002207370300200141106a41306a2002370300200141296a2003370000200141216a2004370000200141196a2005370000200141316a2006370000200141186a41013a0000200141033a0010200141106a10fe012001200737031820012002370310024020022007844200520d002001200141106a36020c2001410c6a10cc020c010b20012007370318200120023703102001200141106a36020c2001410c6a10cc020b20014190016a24000b130020004104360204200041b884c5003602000b130020004103360204200041ec86c5003602000ba56d031a7f2d7e037f230022032104200341a0056b41607122032400024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010203040506000b200341ac016a41013602002003420137029c012003419cc3cb0036029801200341043602a40420034194c3cb003602a0042003200341a0046a3602a80120034198016a41ecb0c4001044000b200141146a2802002105200141046a280200210620012d0001210741022108200341206a41026a200241246a2d00003a00002003200241226a2f01003b0120200141106a28020021092001410c6a280200210a200141086a280200210b200241206a2f0100210c2002411c6a280200210d200241186a280200210e200241146a280200210f200241106a28020021102002410c6a2802002111200241086a2802002112200241066a2f00002113200241056a2d00002114200241046a2d00002115200241026a2f010021162002280228210120022d0001211702400240024002400240024020022d000022180e03000102000b20174521194101211a201521080c040b410221080240024020150e03000104000b410021080c030b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010c010b0240024020150e03000103000b410021080c020b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010b410121080b4100211a0b2001280200221b41016a221c41014d0d052001201c36020020012102024002400240201a450d002001201b36020020194101710d014110102c221c450d09201c41f8f7c60036020c201c4101360208201c4281808080103702004110102c2202450d0920024190f8c60036020c200241013602082002428180808010370200201c201c280200417f6a2208360200024020080d00201c280208201c28020c2802001103000240201c28020c280204450d00201c280208102e0b201c41046a22082008280200417f6a220836020020080d00201c102e0b2002280200211c0b2002201c417f6a221c3602000240201c0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a221c201c280200417f6a221c360200201c0d002002102e0b2005108b022005102e20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b41022102200341386a41026a200341206a41026a2d00003a0000200320032f01203b0138024002400240024020180e03000102000b4102210202400240024020170e03000102000b410021020c010b41012102201521080b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200320133b01a604200320143a00a504200320083a00a404200320163b01a204200320023a00a104200341003a00a0040c020b4102210202400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320133b01a604200320143a00a504200320023a00a404200341013a00a0040c010b02400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320133b01a604200320143a00a504200320023a00a404200341023a00a0040b20034198016a200541b00210e9081a20034180016a41002006200b200a20092007200341a0046a20034198016a10d604200341f0006a41026a221c20032d0087013a0000200320032f0085013b017002402003280280014101460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b2005102e0c120b20034188016a290300211d20032d0084012102200341086a41026a201c2d00003a0000200320032f01703b010820012001280200417f6a221c3602000240201c0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a221c201c280200417f6a221c360200201c0d002001102e0b2005102e200241ff01714106460d110b20034198046a41026a200341086a41026a2d000022013a0000200320032f010822053b019804200041206a20023a0000200041186a41003a000020004200370308200020053b0021200041236a20013a00002000201d37002420004201370300200424000f0b200141086a280200211b200141046a280200210c4102211c200341106a41026a200241246a2d00003a00002003200241226a2f01003b0110200241206a2f0100210e2002411c6a280200210f200241186a2802002110200241146a2802002111200241106a28020021122002410c6a2802002113200241086a2802002114200241066a2f00002106200241056a2d00002107200241046a2d00002108200241026a2f010021092002280228210520022d0001211702400240024002400240024020022d0000220d0e03000102000b201745211a410121152008211c0c040b4102211c0240024020080e03000104000b4100211c0c030b20034180016a41026a200341106a41026a2d00003a0000200320032f01103b0180010c010b0240024020080e03000103000b4100211c0c020b20034180016a41026a200341106a41026a2d00003a0000200320032f01103b0180010b4101211c0b410021150b2005280200221941016a220141014d0d042005200136020020052102024002402015450d0020052019360200201a4101710d014110102c2203450d07200341f8f7c60036020c2003410136020820034281808080103702004110102c2202450d0720024190f8c60036020c20024101360208200242818080801037020020032003280200417f6a2201360200024020010d002003280208200328020c2802001103000240200328020c280204450d002003280208102e0b200341046a22012001280200417f6a220136020020010d002003102e0b200228020021010b20022001417f6a2203360200024020030d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22032003280200417f6a220336020020030d002002102e0b20052005280200417f6a22033602004102210820030d0e2005280208200528020c2802001103000240200528020c280204450d002005280208102e0b200541046a22032003280200417f6a220336020020030d0e2005102e0c0f0b41022102200341146a41026a200341106a41026a2d00003a0000200320032f01103b011402400240024002400240200d0e03000102000b4100210a4102210d0240024020170e03000105000b4100210d4100210a0c040b4101210d2008211c0c030b4102211c02400240024020080e03000102000b4100211c0c010b20034180016a41026a200341146a41026a2d00003a0000200320032f01143b0180014101211c0b200341186a41046a20034180016a41046a2f01003b010020032003280180013602184101210a0c010b02400240024020080e03000102000b410021020c010b20034180016a41026a200341146a41026a2d00003a0000200320032f01143b018001410121020b200341186a41046a20034180016a41046a2f01003b010020032003280180013602184102210a2002211c0b0b200341e8006a41046a2201200341186a41046a2f01003b010020032003280218360268200341f0006a200c10a70420034198016a2003280270221a2003280278221910c504200329029c01211d2003280298012102200341dc036a4102360200200341003602980120034198046a41046a220820012f01003b010020032003280268360298042002410820021b21150240024002400240201b201d420020021b221d422088a72201490d0020034180016a41086a20034188046a29030037030020034180016a41106a20034190046a290300370300200320034180046a29030037038001200341f8036a290300211e200341f0036a290300211f200341e8036a2903002120200341e0036a2903002121200341d8036a2903002122200341d0036a2903002123200341c8036a2903002124200341c0036a2903002125200341b8036a2903002126200341b0036a2903002127200341a8036a2903002128200341a0036a290300212920034198036a290300212a20034190036a290300212b20034188036a290300212c20034180036a290300212d200341f8026a290300212e200341f0026a290300212f200341e8026a2903002130200341e0026a2903002131200341d8026a2903002132200341d0026a2903002133200341c8026a2903002134200341c0026a2903002135200341b8026a2903002136200341b0026a2903002137200341a8026a2903002138200341a0026a290300213920034198026a290300213a20034190026a290300213b20034188026a290300213c20034180026a290300213d200341f8016a290300213e200341f0016a290300213f200341e8016a2903002140200341e0016a2903002141200341d8016a2903002142200341d0016a2903002143200341c8016a2903002144200341c0016a2903002145200341b8016a2903002146200341b0016a290300214720034198016a41106a290300214820032903a0012149200328029c0121080c010b200341c2046a200328029804360100200341c0046a200e3b0100200341bc046a200f360200200341a0046a41186a2010360200200341b4046a2011360200200341a0046a41106a2012360200200341ac046a2013360200200341a0046a41086a2014360200200341c6046a20082f01003b0100200320063b01a604200320073a00a5042003201c3a00a404200320093b01a2042003200d3a00a1042003200a3a00a00420032015201b41f8026c6a22023602c804024020022802bc024102460d00200341a0046a200241c8026a10c6040d020b41022108200341023602bc0420022903a0022125200241186a290300214620022903102147200229030821482002290300214920032903b004211e20032903a804212320032903b804211f200220032903a0043703a002200241b8026a221c2903002122201c201f370300200241a8026a221c2903002124201c2023370300200241b0026a221c2903002123201c201e370300200229038002212920022903e001212d20022903c001213120022903a001213520022903800121392002290360213d200229034021412002290320214520022903c002212120024198026a290300212620024190026a290300212720024188026a2903002128200241f8016a290300212a200241f0016a290300212b200241e8016a290300212c200241d8016a290300212e200241d0016a290300212f200241c8016a2903002130200241b8016a2903002132200241b0016a2903002133200241a8016a290300213420024198016a290300213620024190016a290300213720024188016a2903002138200241f8006a290300213a200241f0006a290300213b200241e8006a290300213c200241d8006a290300213e200241d0006a290300213f200241c8006a2903002140200241386a2903002142200241306a2903002143200241286a2903002144200241d8026a290300211e200241d0026a290300211f200241c8026a290300212020034188016a200241e8026a29030037030020034180016a41106a200241f0026a2903003703002003200241e0026a290300370380012003280298010d0020032802dc034102460d0020034198016a41086a21020240200341d0036a280200221c450d00200341d4036a280200450d00201c102e0b2002108b020b20032015360298012003201d37029c01201a201920034198016a10c704201da7211902402001450d00200141f8026c21012015210203400240200241bc026a2802004102460d000240200241b0026a280200221c450d00200241b4026a280200450d00201c102e0b20021096010b200241f8026a2102200141887d6a22010d000b0b02402019450d00201941f8026c450d002015102e0b200341d0006a41086a20034180016a41086a290300370300200341d0006a41106a20034180016a41106a2903003703002003200329038001370350410021020c010b200341d0006a41086a20034180016a41086a290300370300200341d0006a41106a20034180016a41106a2903003703002003200329038001370350200141f8026c21012015210203400240200241bc026a2802004102460d000240200241b0026a280200221c450d00200241b4026a280200450d00201c102e0b20021096010b200241f8026a2102200141887d6a22010d000b41012102410221080240201da72201450d00200141f8026c450d002015102e0b0b02402003280274450d00201a102e0b200341386a41086a2201200341d0006a41086a290300370300200341386a41106a221c200341d0006a41106a290300370300200320032903503703380240024020020d00200341206a41106a201c290300370300200341206a41086a2001290300370300200320032903383703200240202242808080807083428080808020854200520d0041082103418be7c400210241012115410321084101211c0c020b200341e0036a2020370300200341d8036a2021370300200341c0036a2024370300200341b8036a2025370300200341a0036a202837030020034198036a202937030020034180036a202c370300200341f8026a202d370300200341e0026a2030370300200341d8026a2031370300200341c0026a2034370300200341b8026a2035370300200341a0026a203837030020034198026a203937030020034180026a203c370300200341f8016a203d370300200341e0016a2040370300200341d8016a2041370300200341c0016a2044370300200341b8016a2045370300200341f8036a2003290320370300200341e8036a201f370300200341c8036a2023370300200341a8036a202737030020034188036a202b370300200341e8026a202f370300200341c8026a2033370300200341a8026a203737030020034188026a203b370300200341e8016a203f370300200341c8016a204337030020034180046a200341206a41086a29030037030020034188046a200341306a290300370300200341f0036a201e370300200341d0036a22022022370300200341b0036a202637030020034190036a202a370300200341f0026a202e370300200341d0026a2032370300200341b0026a203637030020034190026a203a370300200341f0016a203e370300200341d0016a2042370300200341b0016a20463703002003204937039801200320483703a001200320473703a8010240202342ffffffff0f83500d00200341a0046a41086a2002280200360200200320032903c8033703a00420034180016a200341a0046a10c404200328028001220220032802880110ff01200328028401450d002002102e0b200341ac046a201b360200200341a0046a41086a200c360200200341013602a404200341013a00a004200341a0046a10fe0120034198016a108b020c0e0b200841ff01714106460d0d200841187621012008411076211c200841087621152049422088a721032049a721020b20052005280200417f6a221a360200201a0d0e2005280208200528020c2802001103000240200528020c280204450d002005280208102e0b200541046a221a201a280200417f6a221a360200201a0d0e2005102e0c0e0b200141206a2802002105200141106a280200210920012d0001210a41022108200341086a41026a200241246a2d00003a00002003200241226a2f01003b01082001411c6a280200210b200141186a2802002118200141146a28020021162001410c6a280200214a200141086a280200211a200141046a280200211b200241206a2f0100210e2002411c6a280200210f200241186a2802002110200241146a2802002111200241106a28020021122002410c6a2802002113200241086a2802002114200241066a2f00002106200241056a2d00002107200241046a2d00002115200241026a2f0100214b2002280228210120022d0001210d02400240024002400240024020022d0000224c0e03000102000b200d45211741012119201521080c040b410221080240024020150e03000104000b410021080c030b20034180016a41026a200341086a41026a2d00003a0000200320032f01083b0180010c010b0240024020150e03000103000b410021080c020b20034180016a41026a200341086a41026a2d00003a0000200320032f01083b0180010b410121080b410021190b2001280200220c41016a221c41014d0d032001201c360200200121020240024002402019450d002001200c36020020174101710d014110102c221c450d07201c41f8f7c60036020c201c4101360208201c4281808080103702004110102c2202450d0720024190f8c60036020c200241013602082002428180808010370200201c201c280200417f6a2208360200024020080d00201c280208201c28020c2802001103000240201c28020c280204450d00201c280208102e0b201c41046a22082008280200417f6a220836020020080d00201c102e0b2002280200211c0b2002201c417f6a221c3602000240201c0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a221c201c280200417f6a221c360200201c0d002002102e0b2005108b022005102e0240201a450d00201b102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b41022102200341206a41026a200341086a41026a2d00003a0000200320032f01083b01202003204a3602582003201a3602542003201b3602500240024002400240204c0e03000102000b41022102024002400240200d0e03000102000b410021020c010b41012102201521080b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200320063b01a604200320073a00a504200320083a00a4042003204b3b01a204200320023a00a104200341003a00a0040c020b4102210202400240024020150e03000102000b410021020c010b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b018001410121020b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320063b01a604200320073a00a504200320023a00a404200341013a00a0040c010b02400240024020150e03000102000b410021020c010b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b018001410121020b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320063b01a604200320073a00a504200320023a00a404200341023a00a0040b20034198016a200541b00210e9081a20034180016a200341d0006a4100200920162018200b200a200341a0046a20034198016a10c904200341f0006a41026a221c20032d0087013a0000200320032f0085013b017002402003280280014101460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b2005102e0c0c0b20034188016a290300211d20032d008401210220034198046a41026a201c2d00003a0000200320032f01703b01980420012001280200417f6a221c3602000240201c0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a221c201c280200417f6a221c360200201c0d002001102e0b2005102e200241ff01714106460d0b0b200341e8006a41026a20034198046a41026a2d000022013a0000200320032f01980422053b0168200041206a20023a0000200041186a41003a000020004200370308200020053b0021200041236a20013a00002000201d37002420004201370300200424000f0b4102211c200341206a41026a200241246a2d00003a00002003200241226a2f01003b01202001410c6a2802002107200141086a2802002115200141046a2802002119200241206a2f0100210d2002411c6a280200210e200241186a280200210f200241146a2802002110200241106a28020021112002410c6a2802002112200241086a2802002113200241066a2f00002114200241056a2d00002106200241046a2d00002108200241026a2f0100210a2002280228210120022d0001210c02400240024002400240024020022d000022090e03000102000b200c45211b4101211a2008211c0c040b4102211c0240024020080e03000104000b4100211c0c030b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010c010b0240024020080e03000103000b4100211c0c020b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010b4101211c0b4100211a0b2001280200221741016a220541014d0d02200120053602002001210202400240201a450d0020012017360200201b4101710d014110102c2203450d05200341f8f7c60036020c2003410136020820034281808080103702004110102c2202450d0520024190f8c60036020c20024101360208200242818080801037020020032003280200417f6a2205360200024020050d002003280208200328020c2802001103000240200328020c280204450d002003280208102e0b200341046a22052005280200417f6a220536020020050d002003102e0b200228020021050b20022005417f6a2203360200024020030d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22032003280200417f6a220336020020030d002002102e0b02402015450d002019102e0b20012001280200417f6a22033602004102210220030d082001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22032003280200417f6a220336020020030d082001102e0c090b41022102200341386a41026a200341206a41026a2d00003a0000200320032f01203b0138024002400240024020090e03000102000b41022102024002400240200c0e03000102000b410021020c010b410121022008211c0b200341b8016a200d3b0100200341b4016a200e360200200341b0016a200f360200200341ac016a2010360200200341a8016a2011360200200341a4016a2012360200200341a0016a2013360200200320143b019e01200320063a009d012003201c3a009c012003200a3b019a01200320023a009901200341003a0098010c020b4102210202400240024020080e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341b8016a200d3b0100200341b4016a200e360200200341b0016a200f360200200341ac016a2010360200200341a8016a2011360200200341a4016a2012360200200341a0016a2013360200200341ba016a200328018001360100200341be016a20034184016a2f01003b0100200320143b019e01200320063a009d01200320023a009c01200341013a0098010c010b02400240024020080e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341b8016a200d3b0100200341b4016a200e360200200341b0016a200f360200200341ac016a2010360200200341a8016a2011360200200341a4016a2012360200200341a0016a2013360200200341ba016a200328018001360100200341be016a20034184016a2f01003b0100200320143b019e01200320063a009d01200320023a009c01200341023a0098010b200320073602a804200320153602a404200320193602a00420034180016a20034198016a200341a0046a10c30420034188016a280200210520032d008101211a20032d008201211520032d0083012108200328028401211c20032d008001210220012001280200417f6a2219360200024020024106470d00024020190d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200041186a41003a000020004200370308200020032800503600192000411c6a200341d3006a28000036000020004200370300200424000f0b20190d082001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22032003280200417f6a220336020020030d082001102e0c080b200141146a2802002105200141046a280200210620012d0001210741022108200341206a41026a200241246a2d00003a00002003200241226a2f01003b0120200141106a28020021092001410c6a280200210a200141086a280200210b200241206a2f0100210c2002411c6a280200210d200241186a280200210e200241146a280200210f200241106a28020021102002410c6a2802002111200241086a2802002112200241066a2f00002113200241056a2d00002114200241046a2d00002115200241026a2f010021162002280228210120022d0001211702400240024002400240024020022d000022180e03000102000b20174521194101211a201521080c040b410221080240024020150e03000104000b410021080c030b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010c010b0240024020150e03000103000b410021080c020b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010b410121080b4100211a0b2001280200221b41016a221c41014d0d012001201c36020020012102024002400240201a450d002001201b36020020194101710d014110102c221c450d05201c41f8f7c60036020c201c4101360208201c4281808080103702004110102c2202450d0520024190f8c60036020c200241013602082002428180808010370200201c201c280200417f6a2208360200024020080d00201c280208201c28020c2802001103000240201c28020c280204450d00201c280208102e0b201c41046a22082008280200417f6a220836020020080d00201c102e0b2002280200211c0b2002201c417f6a221c3602000240201c0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a221c201c280200417f6a221c360200201c0d002002102e0b2005108b022005102e20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b41022102200341386a41026a200341206a41026a2d00003a0000200320032f01203b0138024002400240024020180e03000102000b4102210202400240024020170e03000102000b410021020c010b41012102201521080b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200320133b01a604200320143a00a504200320083a00a404200320163b01a204200320023a00a104200341003a00a0040c020b4102210202400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320133b01a604200320143a00a504200320023a00a404200341013a00a0040c010b02400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200c3b0100200341bc046a200d360200200341b8046a200e360200200341b4046a200f360200200341b0046a2010360200200341ac046a2011360200200341a8046a2012360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320133b01a604200320143a00a504200320023a00a404200341023a00a0040b20034198016a200541b00210e9081a20034180016a41012006200b200a20092007200341a0046a20034198016a10d604200341f0006a41026a221c20032d0087013a0000200320032f0085013b017002402003280280014101460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b2005102e0c070b20034188016a290300211d20032d0084012102200341086a41026a201c2d00003a0000200320032f01703b010820012001280200417f6a221c3602000240201c0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a221c201c280200417f6a221c360200201c0d002001102e0b2005102e200241ff01714106460d060b20034198046a41026a200341086a41026a2d000022013a0000200320032f010822053b019804200041206a20023a0000200041186a41003a000020004200370308200020053b0021200041236a20013a00002000201d37002420004201370300200424000f0b200141206a2802002105200141106a280200210920012d0001210a41022108200341206a41026a200241246a2d00003a00002003200241226a2f01003b01202001411c6a280200210b200141186a2802002118200141146a28020021162001410c6a280200214a200141086a280200211a200141046a280200211b200241206a2f0100210e2002411c6a280200210f200241186a2802002110200241146a2802002111200241106a28020021122002410c6a2802002113200241086a2802002114200241066a2f00002106200241056a2d00002107200241046a2d00002115200241026a2f0100214b2002280228210120022d0001210d02400240024002400240024020022d0000224c0e03000102000b200d45211741012119201521080c040b410221080240024020150e03000104000b410021080c030b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010c010b0240024020150e03000103000b410021080c020b20034180016a41026a200341206a41026a2d00003a0000200320032f01203b0180010b410121080b410021190b2001280200220c41016a221c41014d0d002001201c360200200121020240024002402019450d002001200c36020020174101710d014110102c221c450d04201c41f8f7c60036020c201c4101360208201c4281808080103702004110102c2202450d0420024190f8c60036020c200241013602082002428180808010370200201c201c280200417f6a2208360200024020080d00201c280208201c28020c2802001103000240201c28020c280204450d00201c280208102e0b201c41046a22082008280200417f6a220836020020080d00201c102e0b2002280200211c0b2002201c417f6a221c3602000240201c0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a221c201c280200417f6a221c360200201c0d002002102e0b2005108b022005102e0240201a450d00201b102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b41022102200341386a41026a200341206a41026a2d00003a0000200320032f01203b01382003204a3602582003201a3602542003201b3602500240024002400240204c0e03000102000b41022102024002400240200d0e03000102000b410021020c010b41012102201521080b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200320063b01a604200320073a00a504200320083a00a4042003204b3b01a204200320023a00a104200341003a00a0040c020b4102210202400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320063b01a604200320073a00a504200320023a00a404200341013a00a0040c010b02400240024020150e03000102000b410021020c010b20034180016a41026a200341386a41026a2d00003a0000200320032f01383b018001410121020b200341c0046a200e3b0100200341bc046a200f360200200341b8046a2010360200200341b4046a2011360200200341b0046a2012360200200341ac046a2013360200200341a8046a2014360200200341c2046a200328018001360100200341c6046a20034184016a2f01003b0100200320063b01a604200320073a00a504200320023a00a404200341023a00a0040b20034198016a200541b00210e9081a20034180016a200341d0006a4101200920162018200b200a200341a0046a20034198016a10c904200341f0006a41026a221c20032d0087013a0000200320032f0085013b017002402003280280014101460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b2005102e0c040b20034188016a290300211d20032d0084012102200341086a41026a201c2d00003a0000200320032f01703b010820012001280200417f6a221c3602000240201c0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a221c201c280200417f6a221c360200201c0d002001102e0b2005102e200241ff01714106460d030b20034198016a41026a200341086a41026a2d000022013a0000200320032f010822053b019801200041206a20023a0000200041186a41003a000020004200370308200020053b0021200041236a20013a00002000201d3700244201211d0c030b00000b1036000b4200211d200042003703082000200328009801360019200041186a41003a00002000411c6a2003419b016a2800003600000b2000201d370300200424000f0b2000420037030820002003280050360019200041186a41003a00002000411c6a200341d3006a28000036000020004200370300200424000f0b0b2000201c360024200020083a0023200020153a00222000201a3a002120004200370308200041286a2005360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b2000420037030820002003280038360019200041186a41003a00002000411c6a2003413b6a28000036000020004200370300200424000f0b20052005280200417f6a2202360200024020020d002005280208200528020c2802001103000240200528020c280204450d002005280208102e0b200541046a22022002280200417f6a220236020020020d002005102e0b200041186a41003a000020004200370308200020032800083600192000411c6a2003410b6a28000036000020004200370300200424000f0b0b20002002360024200020013a00232000201c3a0022200020153a002120004200370308200041286a2003360000200041206a20083a0000200041186a41003a000020004201370300200424000f0b2000420037030820002003280050360019200041186a41003a00002000411c6a200341d3006a28000036000020004200370300200424000b9f0501057f230041b0036b22092400200941386a220a4200370300200941306a220b4200370300200941206a41086a420037030020094200370320200941206a41d9fcc600410610810220094198036a4180f4cb004106108102200a20094198036a41086a290000370300200b200929009803370300200941186a200941206a4120108e024100210c02400240417f417f200928021c410020092802181b220a20026a220b200b200a491b220b41016a220d200d200b491b200220011b2202200a4d0d00024020034101470d002004410047200541014b71210c2005417f6a210a0b200941206a200841b00210e9081a200941e4026a200a36020020094190036a20063a0000200941e8026a2007290200370300200941f0026a200741086a290200370300200941f8026a200741106a29020037030020094180036a200741186a29020037030020094188036a200741206a290200370300200920043602e0022009200c3602dc0241002107200941003602d0022002200941206a10aa04200941206a200210a704200928022821082009280220210a200941ac036a41003a0000200941003602a803200941106a200a2008200941a8036a4105410010ca04024002402009280210450d00200920092802142207410520074105491b36029c032009200941a8036a36029803200941086a20094198036a10ab01200928020c417f6a210820092802084521070c010b0b02402009280224450d00200a102e0b2009412c6a2008410020071b2207360200200941206a41086a200236020020094100360224200941013a0020200941206a10fe01200041086a200736020020002002360204200041003602000c010b20004281808080b0a08001370200200041086a41f4e6c400ad4280808080f002843702002008108b020b200941b0036a24000b880301077f410121020240024002400240024002402001280208220341016a2204200128020422054d0d000c010b200320054f0d012001280200220620036a2d00002107200120043602080240200741037122084103460d0002400240024020080e03000102000b20074102762108410021020c030b0240200341026a220320054d0d000c030b200120033602082004417f460d04200620046a2d0000410874200772220141ffff0371418002490d02200141fcff03714102762108410021020c020b200341046a220320054b0d01200120033602082004417d4f0d04200620046a22012f0000200141026a2d000041107472410874200772220141808004492102200141027621080c010b0240200741034d0d000c010b200341056a220320054b0d00200120033602082004417c4f0d04200620046a28000022084180808080044921020b20002008360204200020023602000f0b200320054188eccc00103c000b417f20034198ebcc001057000b200420034198ebcc001057000b200420034198ebcc001057000bdf0401057f230041106b22022400200241003a0005024002400240024002400240024020012802002203280204220420044100472205490d00200241056a20032802002206200510e9081a2003200420056b3602042003200620056a360200024020040d00410021040c060b024020022d0005220441037122034103460d000240024020030e03080001080b200241003b0106200220043a00064101210420012802002201280204220320034100472205490d04200241066a41017220012802002204200510e90821062001200320056b3602042001200420056a360200024020030d00200620056a41003a00000b20022f0106220441ff014d0d0220044102762103410021040c080b20024100360208200220043a0008200241086a4101722001280200220428020020042802042203410320034103491b220310e9082101200428020422052003490d042004200520036b3602042004200428020020036a360200024020034103732204450d00200120036a4100200410eb081a0b2002280208220341808004492104200341027621030c070b200441034d0d010b410121040c050b2002410036020c2002410c6a2001280200220328020020032802042204410420044104491b220410e9081a200328020422052004490d022003200520046b3602042003200328020020046a360200024020044104460d002002410c6a20046a4100410420046b10eb081a0b200228020c22034180808080044921040c040b0c030b2003200541b8b2c0001056000b2004200541b8b2c0001056000b20044102762103410021040b2000200336020420002004360200200241106a24000bb40404057f017e027f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a360200024002400240200441037122064103460d000240024020060e03030001030b41012106024020050d000c060b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d05200141fcff0371410276ad21070c030b410121060240200541034f0d000c050b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d042001410276ad21070c020b024002400240200441027622090e050002020201020b20054104490d042003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c050b20054108490d03200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c040b200441134b0d02200941046a21082002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c050b2003417f6a310000210a20012002360204200120033602002002417f6a2102200341016a2103200a2004410374413871ad862007842107200441016a22052104200541ff01712008490d000b2007427f412820094103746b413871ad885821060c030b2004410276ad21070b410021060c010b410121060b2000200737030820002006ad3703000be70404047f017e037f017e02400240200128020022022802042203450d00200228020022042d0000210520022003417f6a3602042002200441016a3602000240200541037122024103460d0002400240024020020e03000102000b2005410276ad2106410021020c040b200128020022012802042202450d02200128020022032d0000210420012002417f6a360204410121022001200341016a3602002004410874200572220141ffff0371418002490d03200141fcff0371410276ad2106410021020c030b41012102024020012802002201280204220341034f0d000c030b2001280200220441026a2d0000210720042f000021082001200441036a36020020012003417d6a3602042008200741107472410874200572220141808004490d022001410276ad2106410021020c020b024002400240200541027622090e050002020201020b2001280200220228020422014104490d0220022802002205350000210620022001417c6a3602042002200541046a36020020064280808080045421020c030b2001280200220228020422014108490d012002280200220529000021062002200141786a3602042002200541086a3602002006428080808080808080015421020c020b200541134b0d00200941046a2108410021034200210641012102034002402001280200220528020422040d000c030b20052802002207310000210a20052004417f6a3602042005200741016a360200200a2003410374413871ad862006842106200341016a22052103200541ff01712008490d000b2006427f412820094103746b413871ad885821020c010b410121020b2000200637030820002002ad3703000be10506067f017e027f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b02400240024002402005410276220a0e0d00030303010303030303030302030b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210b0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210b0c050b20064110490d03200441096a290000210b2004290001210820012003416f6a3602042001200441116a360200200b428080808080808080015421070c040b200541334b0d02200a41046a21092003417e6a2103200441026a21044100210541012107200241186a210c420021084200210b03402003417f460d012004417f6a310000210d2001200336020420012004360200200241106a200d4200200541037441f8007110ed082003417f6a2103200441016a2104200c290300200b84210b20022903102008842108200541016a22062105200641ff01712009490d000b2002427f427f41e800200a4103746b41f8007110e4082008200229030058200b200241086a290300220d58200b200d511b21070c030b0c020b4200210b410021070c010b410121070b20002008370308200041106a200b37030020002007ad370300200241206a24000bd60203017f017e027f230041206b220224000240024002400240024002402000290300220342c000540d00200342808001540d012003428080808004540d024108200379a741037622046b41044f0d0341c087c500413641f887c5001039000b20022003a74102743a00082001200241086a410110740c030b20022003a74102744101723b01082001200241086a410210740c020b20022003a74102744102723602082001200241086a410410740c010b2002411320044102746b3a00082001200241086a41011074200220002903002203370300200441786a21000340200220033c00082001200241086a4101107420034208882103200041016a22042000492105200421002005450d000b20022003370300200350450d010b200241206a24000f0b2002411c6a4100360200200241186a41d4e2cc003602002002420137020c2002418888c5003602082002200241086a10dd04000b6c01017f230041206b220224002002419088c50036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241c4cec800200241046a41c4cec800200241086a419888c5001058000b6c01017f230041206b22022400200241d889c50036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241b4cec800200241046a41b4cec800200241086a41e889c5001058000b930501047f230041a0036b22012400200141106a4200370300200141186a4200370300200141206a4200370300200141286a4200370300200120012903c801370308200142c0b2cd3b37039803200142c0b2cd3b37039003200142c0b2cd3b370388034100210241012103034020014188036a2104024002400240200241ff01710e03010002010b20014190036a21040c010b20014198036a21040b200442c0b2cd3b370300024020034103460d00200341e99fc0006a2104200341016a210320042d000022024103470d010b0b20014188026a420037030020014180026a4201370300200141f8016a22034200370300200141f0016a22044201370300200141c8016a41186a4200370300200141c8016a41f8006a4200370300200141c8016a41f0006a4201370300200141c8016a41e8006a4200370300200141c8016a41e0006a420137030020014198026a420037030020014190026a200129039003370300200141d0026a4200370300200141c8026a200129038803370300200142003703d00120014280e497d0123703c80120012001290398033703d801200141f8026a200141286a290300370300200141f0026a200141086a41186a290300370300200141e8026a200141186a290300370300200141e0026a200141106a290300370300200141d8026a20012903083703002004420137030020034280b0def7d32b3703002001410036028003200141086a200141c8016a41c00110e9081a200141086a41f8006a428090cad2c60e370300200141086a41f0006a4201370300200141086a41e8006a4280c0a8ca9a3a370300200141086a41e0006a4201370300200141c8016a200141086a41b80110e9081a2001428180808080d0a5cc00370380032000200141c8016a107f200141a0036a24000b800903097f017e027f23004190036b2202240041002103200241003a00a0022001280204417f6a2104024002400240024003402004417f460d0120024180026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a0022004417f6a21042005210320054120470d000b200241d0026a41086a220420024180026a41086a290300370300200241d0026a41106a220320024180026a41106a290300370300200241d0026a41186a220620024180026a41186a29030037030020022002290380023703d002200541ff0171411f4b0d010c020b200341ff0171450d01200241003a00a0020c010b200241e0016a41086a2004290300370300200241e0016a41106a2003290300370300200241e0016a41186a2006290300370300200220022903d0023703e00120024180026a200110850520022802a0022204450d00200241a0016a41186a2203200241e0016a41186a290300370300200241a0016a41106a2205200241e0016a41106a290300370300200241a0016a41086a2206200241e0016a41086a290300370300200241a0016a41286a220720024180026a41086a290300370300200241a0016a41306a220820024180026a41106a290300370300200241a0016a41386a220920024180026a41186a290300370300200220022903e0013703a00120022002290380023703c001200241a4026a280200210a20024180026a41286a290300210b200241e0006a41086a220c2006290300370300200241e0006a41106a22062005290300370300200241e0006a41186a22052003290300370300200241e0006a41206a220320022903c001370300200241e0006a41286a220d2007290300370300200241e0006a41306a22072008290300370300200241e0006a41386a22082009290300370300200220022903a0013703602004450d00200241206a41386a2008290300370300200241206a41306a2007290300370300200241206a41286a200d290300370300200241206a41206a2003290300370300200241206a41186a2005290300370300200241206a41106a2006290300370300200241206a41086a200c29030037030020022002290360370320200241086a200110ab010240024002402002280208450d00200241003602a0010c010b200241a0016a2001200228020c10920120022802a0010d010b20004100360240200a450d02200a41306c450d022004102e0c020b200241106a41086a2201200241a0016a41086a280200360200200220022903a001370310200041386a200241206a41386a290300370300200041306a200241206a41306a290300370300200041286a200241206a41286a290300370300200041206a200241206a41206a290300370300200041186a200241206a41186a290300370300200041106a200241206a41106a290300370300200041086a200241206a41086a29030037030020002002290320370300200041c8006a200b3703002000200a36024420002004360240200041d0006a2002290310370300200041d8006a20012802003602000c010b200041003602400b20024190036a24000bc01509077f017e097f017e017f017e027f017e047f230041c0036b22012400200141286a22024200370300200141206a22034200370300200141106a41086a420037030020014200370310200141106a4190dac800410a10810220014198036a41d5dac8004106108102200220014198036a41086a2900003703002003200129009803370300200141203602342001200141106a360230200141386a200141106a412010ed02024002400240200128023822040d00410021050c010b200128023c21062001200141386a41086a28020036024c20012004360248200141086a200141c8006a10ab010240024020012802080d0002400240200128020c2207200128024c41c4006e2202200220074b1bad42c4007e2208422088a70d002008a72202417f4c0d000240024020020d00410421050c010b2002102c2205450d060b200241c4006ead2108024002402007450d0020014198036a410172210920014198036a410772210a4100210b03400240024002400240200128024c2203450d002001280248220c2d0000210220012003417f6a220d36024c2001200c41016a3602480240024020020e020001020b200d4104490d012001418c026a41026a200141f0026a41026a2d00003a0000200141f0016a41086a200141b0026a41086a290200370300200141f0016a41106a200141b0026a41106a290200370300200141f0016a41186a200141b0026a41186a2d00003a0000200141d0016a41086a20014198036a41086a290100370300200141d0016a41106a20014198036a41106a290100370300200141d0016a41186a20014198036a41186a290100370300200120012f00f0023b018c02200120012902b0023703f00120012001290198033703d001200c280001210e20012003417b6a36024c2001200c41056a36024841002102410021030c040b41002102200141003a00b8032003417e6a210302400340200d2002460d0120014198036a20026a200c20026a220f41016a2d00003a00002001200f41026a3602482001200241016a220f3a00b8032001200336024c2003417f6a2103200f2102200f4120460d030c000b0b200241ff0171450d02200141003a00b8030c020b200141cc016a41026a2001418c026a41026a2d00003a0000200141b0016a41086a200141f0016a41086a290300370300200141b0016a41106a200141f0016a41106a290300370300200141b0016a41186a200141f0016a41186a2d00003a000020014190016a41086a200141d0016a41086a29030037030020014190016a41106a200141d0016a41106a29030037030020014190016a41186a200141d0016a41186a290300370300200120012f018c023b01cc01200120012903f0013703b001200120012903d001370390010c070b20014190036a41026a221020012d009a0322023a000020014194036a41026a20023a0000200141b0026a41086a2211200a41086a2900002212370300200141b0026a41106a2213200a41106a2900002214370300200141b0026a41186a2215200a41186a2d000022023a0000200120012f01980322163b019003200120163b0194032001200a29000022173703b002200128009b032118200141f0026a41186a221620023a0000200141f0026a41106a22022014370300200141f0026a41086a22192012370300200120173703f002200f41ff0171411f4d0d00200141ec026a41026a20102d000022103a0000200141d0026a41086a20192903002212370300200141d0026a41106a20022903002214370300200141d0026a41186a20162d000022023a0000200141ac026a41026a221920103a0000200120012f01900322163b01ec02200120012903f00222173703d002200120163b01ac0220014190026a41186a221620023a000020014190026a41106a2210201437030020014190026a41086a221a20123703002001201737039002200d200f460d00200c200f6a220241016a2d0000210f2001200336024c2001200241026a360248410021024100210c02400240200f0e020100020b20014198036a200141c8006a10930120012d0098034101460d012015200941186a2900003703002013200941106a2900003703002011200941086a290000370300200120092900003703b0024101210c0b200141d0016a41186a2015290300370300200141d0016a41106a2013290300370300200141d0016a41086a20112903003703002001418c026a41026a20192d00003a0000200141f0016a41086a201a290300370300200141f0016a41106a2010290300370300200141f0016a41186a20162d00003a0000200120012903b0023703d001200120012f01ac023b018c0220012001290390023703f00141012103200c211b2018210e0c010b41022103410121020b200141cc016a41026a220f2001418c026a41026a2d00003a0000200141b0016a41086a220c200141f0016a41086a290300370300200141b0016a41106a220d200141f0016a41106a290300370300200141b0016a41186a2216200141f0016a41186a2d00003a000020014190016a41086a2210200141d0016a41086a29030037030020014190016a41106a2219200141d0016a41106a29030037030020014190016a41186a2211200141d0016a41186a290300370300200120012f018c023b01cc01200120012903f0013703b001200120012903d0013703900120020d042001418c016a41026a2213200f2d00003a0000200141f0006a41086a220f200c290300370300200141f0006a41106a220c200d290300370300200141f0006a41186a220d20162d00003a0000200141d0006a41086a22162010290300370300200141d0006a41106a22102019290300370300200141d0006a41186a22192011290300370300200120012f01cc013b018c01200120012903b001370370200120012903900137035002402008422088a722022008a7470d00200241016a22112002490d0420024101742215201120112015491b22114104201141044b1bad42c4007e2212422088a74541027421112012a721150240024020020d0020014100360298030c010b200141043602a00320012005360298032001200241c4006c36029c030b200141b0026a2015201120014198036a107d20012802b802211120012802b0024101460d0320012802b4022105200842808080807083201141c4006ead8421080b2005200241c4006c6a220220033a00002002200e360004200241036a20132d00003a0000200220012f018c013b0001200d2d00002103200c2903002112200f2903002114200129037021172002201b3a002120022017370008200241106a2014370000200241186a2012370000200241206a20033a00002002413a6a2019290300370000200241326a20102903003700002002412a6a20162903003700002002200129035037002220084280808080107c2108200b41016a220b2007470d000b0b2005450d030c040b20110d050b1038000b2008a721022002450d00200241c4006c450d002005102e0b41002105200141003602b802200142013703b0022001410a3602d4012001200141306a3602d0012001200141b0026a36029001200141ac036a41013602002001420137029c03200141909dc500360298032001200141d0016a3602a80320014190016a419cebc00020014198036a103d1a20012802b00220012802b80210ef0220012802b402450d0020012802b002102e0b2006450d002004102e0b0240024020050d0020004100360208200042043702000c010b20002008370204200020053602000b200141c0036a24000f0b1036000bdc0b04067f017e037f017e230041d0016b22012400200141386a41186a22024200370300200141386a41106a22034200370300200141386a41086a2204420037030020014200370338200141286a4190dac800410a1081022004200141286a41086a220529000037030020012001290028370338200141286a419adac80041061081022002200529000037030020032001290028370300200141d8006a200141386a412010f40220012d005821052002200141f1006a2900003703002003200141e9006a2900003703002004200141e1006a290000370300200120012900593703380240024020054101470d0020002001290338370000200041186a2002290300370000200041106a2003290300370000200041086a20042903003700000c010b200141d8006a41186a22024200370300200141d8006a41106a22064200370300200141d8006a41086a2203420037030020014200370358200141386a41d9fcc60041061081022003200429000037030020012001290038370358200141386a41b4f4cb0041061081022002200429000037030020062001290038370300200141386a200141d8006a10a10420012802382204410420041b210302400240200129023c420020041b2207422088a7220541246c2204450d00200320046a2202415c6a2108200321040340024020042d00004101460d002002200441246a2204470d010c020b200441016a2800002109200441086a280200210a2001200441106a28020036023c2001200a36023802400240200941c28289aa04470d00200141d8006a200141386a10930220012903584203510d03200141d8006a41106a22042802002102200141d8006a41186a420037030020044200370300200141d8006a41086a2204420037030020014200370358200141386a41a081ca0041071081022004200141386a41086a220929000037030020012001290038370358200141386a41f09dc500410a108102200641086a200929000037000020062001290038370000200141386a200141d8006a1088034101210620012802382204410120041b210902402002200129023c420020041b220b422088a74f0d00200141086a41186a200920024105746a220441186a290000370300200141086a41106a200441106a290000370300200141086a41086a200441086a29000037030020012004290000370308410021060b0240200b42ffffff3f83500d002009102e0b20060d03200141d8006a41186a200141086a41186a290300370300200141d8006a41106a200141086a41106a290300370300200141d8006a41086a200141086a41086a29030037030020012001290308370358200141386a41186a22044200370300200141386a41106a22024200370300200141386a41086a2206420037030020014200370338200141286a4190dac800410a1081022006200141286a41086a220929000037030020012001290028370338200141286a419adac800410610810220042009290000370300200220012900283703004120102c2204450d012001422037022c20012004360228200141286a200141d8006a41201074200141386a412020012802282204200128023010b2010240200128022c450d002004102e0b20002001290358370000200041186a200141d8006a41186a290300370000200041106a200141d8006a41106a290300370000200041086a200141d8006a41086a2903003700000c040b20082004462109200441246a21042009450d010c020b0b1036000b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402005450d00200541246c21022003210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a280200102e0c030b2004410c6a280200450d02200441086a280200102e0c020b2004410c6a280200450d01200441086a280200102e0c010b200441086a280200450d00200441046a280200102e0b200441246a21042002415c6a22020d000b0b2007a72204450d00200441246c450d002003102e0b200141d0016a24000ba70702117f047e23004190016b22012400200110940302400240024020012903004202510d00200028020821022000280204210320002802002104200141186a200141106a28020010a105200141d8006a2001280218200128022010a205200141386a41086a2200200141e4006a2902003703002001200129025c3703380240024020012802584101460d00200141286a41086a4200370300200141003602280c010b200141286a41086a2000290300370300200120012903383703280b02402002450d002004200241246c6a2105200141d8006a41106a2106200141286a410472210720042108034020082802202109200141d8006a41186a220a200841186a2900003703002006200841106a290000370300200141d8006a41086a220b200841086a29000037030020012008290000370358024002402001280230220c450d00200128022c210d0c010b419403102c220c450d054100210d200c4100360200200c41003b01322001200c3602302001410036022c0b200841246a2108024002400340200c2f0132220e410574210f41002100417c2110417f2102024003400240200f2000470d00200e21020c020b200141d8006a200c20006a41346a412010ec082211450d03200241016a21022010417c6a2110200041206a21002011417f4a0d000b0b0240200d450d00200d417f6a210d200c20024102746a4194036a280200210c0c010b0b200141386a41186a200a2903002212370300200141386a41106a20062903002213370300200141386a41086a200b290300221437030020012001290358221537033820062015370200200641086a2014370200200641106a2013370200200641186a201237020020012007360264200120023602602001200c36025c20014100360258200141d8006a410010a30521000c010b200c20106b21000b2000200028020020096a3602002001200128022820096a36022820082005470d000b0b02402003450d00200341246c450d002004102e0b200141e4006a200141286a41086a29030037020020012001290328221237025c2001410136025820012802182100200128022021022001410036024020014201370338200120123e028c01200141386a2001418c016a41041074200141d8006a41086a2210200141386a10f2012000200220012802382211200128024010b2010240200128023c450d002011102e0b201010bc02200128021c450d012000102e0c010b200041046a2802002202450d00200241246c450d002000280200102e0b20014190016a24000f0b1036000be70501067f230041a0016b22012400200141d8006a41186a22024200370300200141d8006a41106a22034200370300200141d8006a41086a2204420037030020014200370358200141d8006a41a081ca00410710810220014190016a41e4d1c100410c108102200220014190016a41086a2900003703002003200129009001370300200141106a200141d8006a4120108e0220012802142105200128021021062002200041186a2900003703002003200041106a2900003703002004200041086a29000037030020012000290000370358200141186a41bed8c8004108108102200141286a41edd8c800410e10810220012005410020061b3602482001200141c8006a410410a30137037820014190016a410c6a2202200141c8006a41046a3602002001200141f8006a41086a360294012001200141c8006a360298012001200141f8006a36029001200141386a20014190016a107c024002404120102c2200450d002001422037027c20012000360278200141f8006a200141d8006a41201074200120012802782200200128028001220310a301370388012002200020036a3602002001200036029801200120014188016a41086a36029401200120014188016a36029001200141c8006a20014190016a107c0240200128027c450d002000102e0b20012802402202200128025022036a41206a2200417f4c0d010240024020000d00410121040c010b2000102c2204450d010b20014100360298012001200036029401200120043602900120014190016a200141186a4110107420014190016a200141286a4110107420014190016a200128023822002002107420014190016a20012802482202200310740240200128024c450d002002102e0b0240200128023c450d002000102e0b200141086a20012802900122002001280298012202108e022001200128020c41016a410120012802081b36025820002002200141d8006a410410b2010240200128029401450d002000102e0b200141a0016a24000f0b1036000b1038000b7801027f230041106b2204240002404108102c2205450d0020044208370204200420053602002004200236020c20042004410c6a410410742004200336020c20042004410c6a410410742000200120042802002202200428020810b20102402004280204450d002002102e0b200441106a24000f0b1036000be50101047f230041206b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102c2205450d0120024100360208200220043602042002200536020020032002107602402003450d002003410574210303404120102c2204450d032002422037021420022004360210200241106a2001412010742002200228021022042002280218107402402002280214450d002004102e0b200141206a2101200341606a22030d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241206a24000f0b1038000b1036000bb80404017f017e017f047e230041c0036b2207240042002108024020050d00200741186a2001ad420042c0843d420010e80820074188026a10a903200741c0006a2007290390022208200220082002541b10e804200741c0006a41086a290300210820072903402102200741a0026a2201420037030020074188026a41106a2205420037030020074188026a41086a22094200370300200742003703880220074188026a4180fdc6004112108102200741d0006a41dc98c50041111081022001200741d0006a41086a29000037030020052007290050370300200741286a20074188026a10e90420074188026a200729033042808090bbbad6adf00d200728022822011b200741286a41106a290300420020011b2002200842808090bbbad6adf00d420010ea04200741186a41086a29030021022007290318210a024002402007280288024101470d00427f210b427f210c0c010b2005290300210c2009290300210b0b200741d0006a10a9030240024002400240200641ff01710e03010200010b200741d0016a21050c020b200741e0006a21050c010b20074198016a21050b2005290300210820074188026a10a903200741086a200729039002220d2008200d2008541b10e804200741106a29030021082007290308210d200041306a200c370300200041286a200b370300200041206a2002370300200041186a200a370300200041106a20083703002000200d370308420121080b2000200337033820002008370300200041c0006a2004370300200741c0036a24000bdd0706017f017e047f037e037f067e230041c0026b22022400420021034280c2d72f42004280f985d40442001082052104200241e0016a22054200370300200241d0016a41086a4200370300200241ec016a22064180023b0100200241e8016a22072004360200200242003703d00141012104200241013602b802024002404100450d0042012108420021090c010b0240024002404101450d004200210a0c010b200241c8016a210b4101210c420021080340200241b0016a200842002001420010e808200241c0016a200142002001420010e808200820022903b801220184200184420052200b290300220120022903b001220a200a7c7c220a200154720d0220022903c0012101200c410271210d200c4101762204210c200a2108200d450d000b0b0240200441024f0d0020012108200a21090c020b200241a0016a41086a210d20012108200a2109034020024190016a200a42002001420010e808200241a0016a200142002001420010e808200a200229039801220184200184420052200d2903002201200229039001220a200a7c7c220a200154720d0120022903a001210102402004410271450d00200241e0006a200942002001420010e808200241f0006a200a42002008420010e80820024180016a200842002001420010e8082009420052200a4200527120022903684200527220022903784200527220024180016a41086a2903002208200229036020022903707c7c2209200854720d0220022903800121080b200441034b210c20044101762104200a210a200c0d000c020b0b427f2108427f21090b200241d0006a20082009428094ebdc03420010e608200241306a2005290300220a42002008420010e808200241206a2009420020022903d8012201420010e808200241c0006a200142002008420010e8080240024020062d0000450d00420021010c010b2002290338210e2002290328210f2002290320211020022903302111200241c0006a41086a2903002101200728020021042002290350210320022903402112200241106a20082009428094ebdc03420010e70820022002290310200241106a41086a2903002004ad2208420010e808427f200241086a29030020022903002213200320087e2208428094ebdc0380a7417f2008428080808080c0b2cd3b541b2008428094ebdc03824280cab5ee01566aad7c2208201354ad7c2203427f2001201120107c7c2210200a420052200942005271200e42005272200f4200527220102001547222041b7c2008427f201220041b7c220a2008542204ad7c22012004200120035420012003511b22041b2101427f200a20041b21030b2000200337030020002001370308200241c0026a24000ba10204017f017e017f027e230041d0006b220224002002412036020420022001360200200241086a2001412010ed0202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004110490d00200141086a290000210520012900002106420121030c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241909dc5003602382002200241286a360248200241346a419cebc000200241386a103d1a2002280218200228022010ef020240200228021c450d002002280218102e0b420021030b2004450d002001102e0b2000200637030820002003370300200041106a2005370300200241d0006a24000bcd3607017f017e017f027e017f017e1b7f230041e0026b220724000240024002402001200284500d0020032004844200520d010b20004100360200200041106a4200370300200041086a42003703000c010b42012108200741f0006a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220d20064200200c1b220510e6082002200420091b21022001200320091b21040240024002402007290370200741f0006a41086a29030084500d00200741e0006a20042002200d200510e6082007290360200741e0006a41086a29030084500d01200d21080c020b200741c0006a200a200b200d200510e708200741c0006a41086a290300210b420021052007290340210a0c010b200741d0006a20042002200d200510e708200741d8006a29030021024200210542012108200729035021040b200741106a200b42002004420010e808200741206a20024200200a420010e808200741306a200a42002004420010e8080240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729031842005272200729032842005272200741306a41086a2903002201200729031020072903207c7c2203200154724101470d004110102c2209450d192009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037028401200720093602800120074180016a10bb074110102c2209450d19200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029401200720093602900120074190016a10bb074110102c2209450d1920092008a7220e36020c200920084220883e0208200920053e0204200920054220883e020020074284808080c0003702a401200720093602a001200741a0016a10bb07200741f0016a41086a20074190016a41086a28020036020020072007290390013703f00120074180026a41086a20074180016a41086a280200360200200720072903800137038002200741b0016a20074180026a200741f0016a10bc07024020072802f40141ffffffff0371450d0020072802f001102e0b200741b0016a10bb0720072802b801210920072802b401210f20072802b001211020072802a80122110e020501020b2007200729033020032008200510e70820004100360200200041106a200741086a290300370300200041086a20072903003703000c1b0b20094101200941014b1b221141ffffffff03712011470d162011410274220c417f4c0d1602400240200c0d00410421120c010b200c10322212450d180b200720113602d802200720123602d0022007200c4102763602d4022009450d182012201141027420094102746b6a210c410020096b2109200e4101200e41014b1bad2102420021042010210e03402011201120096a22124d0d02200c2004422086200e3502008422042002803e02002009417f460d19200e41046a210e200c41046a210c200941016a2109200420028221040c000b0b20072802a00122132802000d010c020b2012201141ecd8cc00103c000b2009450d032010280200450d00200920114d0d00200720113602bc01200920116b221441016a22154101201541014b1b221641ffffffff03712016470d1320164102742217417f4c0d1320170d01410421180c020b410021180240200f41ffffffff03710d000c070b2010102e0c060b201710322218450d120b20114101201141014b1b221941ffffffff03712019470d102019410274221a417f4c0d10201a1032221b450d11410121124102210c024002400240201328020067221c0e020201000b4102210c201c210e410121120340200c4101200e4101711b20126c2112200e41034b211d200c200c6c210c200e410176210e201d0d000b0b200c20126c21120b200720093602f8012007200f3602f401200720103602f0014104102c2209450d11200920123602002007428180808010370284022007200936028002200741c0016a200741f0016a20074180026a10bc072009102e201141ffffffff03712011470d1020114102742209417f4c0d104104210c02402009450d002009102c220c450d120b2007200c3602f001200720094102763602f401200c2013201141027410e9081a200720113602f8014104102c2209450d11200920123602002007428180808010370284022007200936028002200741d0016a200741f0016a20074180026a10bc072009102e201520072802bc016a220920072802c801220c4d0d032009200c6b220941ffffffff03712009470d1020094102742211417f4c0d100240024020110d004104210c0c010b2011102c220c450d120b02402011410276220e20094f0d002011410176220e2009200e20094b1b220e4104200e41044b1b220e41ffffffff0371200e464102742112200e410274210e0240024020110d0020074100360280020c010b20074188026a410436020020072011360284022007200c360280020b200741f0016a200e201220074180026a107d200741f8016a280200210e024020072802f0014101460d0020072802f401210c200e410276210e0c030b200e450d110c120b20090d01410021090c020b4100410041fcd8cc00103c000b200c4100200941027410eb081a0b20072802c001211002400240200e20096b20072802c8012211490d00200920116a21120c010b200920116a22122009490d0e200e410174220f2012200f20124b1b220f4104200f41044b1b220f41ffffffff0371200f46410274211d200f410274210f02400240200e0d0020074100360280020c010b20074188026a41043602002007200c360280022007200e410274360284020b200741f0016a200f201d20074180026a107d200741f8016a280200210e024020072802f0014101460d0020072802f401210c200e410276210e0c010b200e0d0f0c0e0b200c20094102746a2010201141027410e9081a024020072802c40141ffffffff0371450d0020072802c001102e0b200720123602c8012007200e3602c4012007200c3602c0010b2017410276211e201a410276211f200741d0016a10bb0703402007201422203602dc01024020072802c801220920072802bc01220c20206a220e417f736a22112009490d002011200941ccd7cc00103c000b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020092009200e6b220e4d0d0020072802d80122092009200c6b220c4d0d0120072802d001200c4102746a35020022024200510d02202020204100476b211420072802c001220920114102746a35020021042009200e4102746a3502002101200741003602e0012007200120044220868422042002803703e801200720042002823703f801200741003602f0012007200741dc016a360294022007200741c0016a360290022007200741bc016a36028c022007200741d0016a360288022007200741f0016a360284022007200741e0016a3602800220074180026a10d7081a034020072802f001220941016a41004c0d04200720093602f001024020072903f80142ffffffff0f560d0020074180026a10d7080d010b0b20072903e80121024100210c02400240024020072802bc01221220072802dc01220e6a22092012490d00201241016a220c20124f0d00410421102007410436029802410021130c010b200c41ffffffff0371200c470d2b200c4102742211417f4c0d2b0240024020110d00410421100c010b2011102c2210450d2d0b2007201036029802201141027621134100210c2009200e490d0b201241016a220c20124f0d010b41002111410021124100210c034020072802c801220f2009417f736a221d200f4f0d06200e20094f210f2009200e2009496b210920072802c001201d4102746a280200211d02400240200c2013470d00200c417f41004100417f2009200e6b221341016a221720172013491b200f1b2009200e491b221341016a221720172013491b6a2213200c490d2d20122013201220134b1b22134104201341044b1b221341ffffffff037120134641027421172013410274211302400240200c0d00200741003602d0020c010b200741043602d802200720113602d402200720103602d0020b200741c0026a20132017200741d0026a107d20072802c802211320072802c0024101460d01200720072802c402221036029802201341027621130b201020116a201d360200201141046a2111201241026a2112200c41016a210c2009200e49200f72450d010c0c0b0b20130d2b0c2a0b02402013200c4f0d002011410176220f200c200f200c4b1b220c4104200c41044b1b220c41ffffffff0371200c46410274210f200c410274210c0240024020110d00200741003602d0020c010b200741043602d802200720113602d402200720103602d0020b200741c0026a200c200f200741d0026a107d20072802c802210c20072802c0024101460d07200720072802c402221036029802200c41027621130b200e20094f0d072009417f73210c0340200c20072802c801220f6a2211200c4f0d06201020072802c00120114102746a280200360200200c41016a210c201041046a2110200e2009417f6a2209490d000b2012210c0c080b200e200941ccd7cc00103c000b200c200941ccd7cc00103c000b4190d9cc00411941acd9cc001039000b41bcd9cc004118200741d0026a41d4d9cc0041e4d9cc00103e000b201d200f41ccd7cc00103c000b2011200f41ccd7cc00103c000b200c0d230c220b4100210c20120d010b20072802c8012209200e417f736a220e20094f0d01201020072802c001200e4102746a280200360200200c41016a210c0b20072802d801220e41ffffffff0371200e470d1f200e4102742209417f4c0d1f20072802d00121120240024020090d00410421110c010b2009102c2211450d210b200720113602c002200720094102763602c40220112012200910e9081a2007200e3602c8024108102c2209450d2020092002a72221360204200920024220883e020020074282808080203702d402200720093602d002200741a0026a200741c0026a200741d0026a10bc072009102e200c20072802a8022222200c20224b1b220f4101200f41014b1b221041ffffffff03712010470d1f20104102742223417f4c0d1f20072802980221240240024020230d00410421250c010b202310322225450d210b02400240200f0d004100211d0c010b2010417f6a210e2022417f6a222620224b2117200c417f6a2227200c4b2115202520236a417c6a2111410021124200210420072802a0022128034041002109024020150d0041002109200c202720126b221d4d0d0041002109201d20274b0d002024201d4102746a28020021090b2009ad210241002109024020170d002022202620126b221d4d0d00201d20264b0d002028201d4102746a28020021090b0240024020022009ad22067d22032002560d00200320047d22012003560d00420021044100211d0c010b20024280808080108420047d20067d2101420121044101211d0b2010200e4d0d03201120013e02002011417c6a2111200e417f6a210e200f201241016a2212470d000b0b0240201341ffffffff0371450d002024102e0b20072802bc01220e20072802dc01220c6a2213200e490d06200c20134f0d04200c417f732109034020102010200c6a20096a22114d0d03200920072802c80122126a220c20094f0d0420072802c001200c4102746a202520114102746a2802003602002009417f6a210920072802dc01210c200e417f6a220e0d000c060b0b200e200941ccd7cc00103c000b200e201041ecd8cc00103c000b200f4101200f41014b1b200c6a20096a201041ccd7cc00103c000b200c201241ecd8cc00103c000b200e0d010b200c2013417f7322096a220c20106a220e200c4f0d0120072802c801220c20096a2209200c4f0d0220072802c00120094102746a2025200e4102746a28020036020020072802dc01210c0b2016200c417f736a220920164f0d02201820094102746a2021360200201d450d0a201620072802dc01417f736a220920164f0d03201820094102746a22092009280200417f6a3602004100210c02400240024020072802bc01221220072802dc01220e6a22092012490d00201241016a220c20124f0d0041042110200741043602bc02410021130c010b200c41ffffffff0371200c470d1a200c410274220c417f4c0d1a02400240200c0d00410421100c010b200c102c2210450d1c0b200720103602bc02200c410276211302402009200e4f0d004100210c0c0c0b201241016a221120124f0d010b41002111410021124100210c034020072802c801220f2009417f736a221d200f4f0d06200e20094f210f2009200e2009496b210920072802c001201d4102746a280200211d02400240200c2013470d00200c417f41004100417f2009200e6b221341016a221720172013491b200f1b2009200e491b221341016a221720172013491b6a2213200c490d1c20122013201220134b1b22134104201341044b1b221341ffffffff037120134641027421172013410274211302400240200c0d00200741003602d0020c010b200741043602d802200720113602d402200720103602d0020b200741c0026a20132017200741d0026a107d20072802c802211320072802c0024101460d01200720072802c40222103602bc02201341027621130b201020116a201d360200201141046a2111201241026a2112200c41016a210c2009200e49200f72450d010c0c0b0b20130d1a0c190b0240201320114f0d00200c410176220f2011200f20114b1b22114104201141044b1b221141ffffffff0371201146410274210f2011410274211102400240200c0d00200741003602d0020c010b200741043602d8022007200c3602d402200720103602d0020b200741c0026a2011200f200741d0026a107d20072802c802210c20072802c0024101460d07200720072802c40222103602bc02200c41027621130b200e20094f0d072009417f73210c0340200c20072802c801220f6a2211200c4f0d06201020072802c00120114102746a280200360200200c41016a210c201041046a2110200e2009417f6a2209490d000b2012210c0c080b200e201041ccd7cc00103c000b2009200c41ecd8cc00103c000b2009201641ecd8cc00103c000b2009201641ccd7cc00103c000b201d200f41ccd7cc00103c000b2011200f41ccd7cc00103c000b200c0d120c110b4100210c20120d010b20072802c8012209200e417f736a220e20094f0d04201020072802c001200e4102746a280200360200200c41016a210c20072802bc0221100b2007200c3602b802200720133602b402200720103602b00220072802d801220c41ffffffff0371200c470d0e200c4102742209417f4c0d0e20072802d00121110240024020090d004104210e0c010b2009102c220e450d100b2007200e3602d002200720094102763602d402200e2011200910e9081a2007200c3602d802200741c0026a200741d0026a200741b0026a10d608024020072802bc01220920072802dc01220f6a220c2009490d0002400240200f200c4f0d00200c417f73210920072802c002211d20072802c802210e200f21110340200e200e20116a20096a22114d0d08200920072802c80122176a221220094f0d0920072802c00120124102746a201d20114102746a280200360200200941016a210920072802dc012111200f200c417f6a220c490d000c020b0b20090d0120072802c802210e200f21110b200e2011200f417f7322096a6a220c200e4f0d0720072802c801220e20096a2209200e4f0d0820072802c00120094102746a20072802c002200c4102746a2802003602000b024020072802c40241ffffffff0371450d0020072802c002102e0b201341ffffffff0371450d002010102e0b02402023450d002025102e0b024020072802a40241ffffffff0371450d0020072802a002102e0b20200d000b02400240201c450d00024020072802bc0122094101460d00410020096b2110201c411f71210f4100201c6b411f71211d2019410274201b6a417c6a210c417f21090340200920072802c80122116a220e20094f0d0c2011200e417f6a22124d0d0d2019201920096a22114d0d0e200c20072802c001221120124102746a280200201d742011200e4102746a280200200f7672360200200c417c6a210c20102009417f6a2209470d000b20072802bc0121090b20072802c801220c200c20096b220e4d0d082019201920096b22094d0d09201b20094102746a20072802c001200e4102746a280200201c411f717636020041012109201b210e0c010b4100210920072802c801211920072802c401211f20072802c001210e201a450d00201b102e0b024020072802d40141ffffffff0371450d0020072802d001102e0b2009450d0020072802c40141ffffffff0371450d0020072802c001102e0b4104102c2209450d0c200941003602004104102c220c450d0c200c41003602000240024020180d00410121194101211f410121164101211e0c010b2009102e200c102e200e210c201821090b200720163602e8012007201e3602e401200720093602e001200720193602f8012007201f3602f4012007200c3602f00120074180026a200741f0016a10d5082007280280024101460d0a024020074180026a41086a29030020084201882005423f86845820074180026a41106a2903002202200542018822045820022004511b0d00200741f0016a41086a200741e0016a41086a280200360200200720072903e0013703f0014110102c2209450d0d20094280808080103702082009420037020020074284808080c00037028402200720093602800220074180026a10bb07200741e0016a200741f0016a20074180026a10d60820072802840241ffffffff0371450d00200728028002102e0b200741d0026a41086a200741e0016a41086a280200360200200720072903e0013703d0020c0e0b200e200941ccd7cc00103c000b2011200e41ccd7cc00103c000b2012201741ecd8cc00103c000b200c200e41ccd7cc00103c000b2009200e41ecd8cc00103c000b200e200c41ccd7cc00103c000b2009201941ecd8cc00103c000b200e201141ccd7cc00103c000b200e417f6a201141ccd7cc00103c000b2011201941ecd8cc00103c000b20072007290284023703f00141f8dbcc00412f200741f0016a41a8dccc0041b8dccc00103e000b1038000b1036000b200f41ffffffff0371450d002010102e0b200741d0026a10bb07200741f0016a41086a200741d0026a41086a280200360200200720072903d0023703f00120074180026a200741f0016a10d50841012109024002402007280280024101470d00200041c8dccc00360204200041086a41193602000c010b200041106a20074180026a41106a290300370300200041086a20074180026a41086a290300370300410021090b2000200936020020072802a40141ffffffff0371450d0020072802a001102e0b200741e0026a24000ba40201037f230041c0006b22022400200241206a22034200370300200241186a22044200370300200241086a41086a420037030020024200370308200241086a41d9fcc6004106108102200241286a41e8f7cb00410e1081022003200241286a41086a290000370300200420022900283703004100210320024100360230200242013703280240024002400240024020000e03000102040b200241003a003c200241286a2002413c6a410110742002200136023c200241286a2002413c6a410410740c020b200241013a003c200241286a2002413c6a410110740c010b200241023a003c200241286a2002413c6a410110740b200228022c21030b200241086a412020022802282200200228023010b20102402003450d002000102e0b200241c0006a24000bc30201037f230041c0006b22022400200241206a22034200370300200241186a22044200370300200241086a41086a420037030020024200370308200241086a41a5fec600411a108102200241286a41c8c3c800410c1081022003200241286a41086a29000037030020042002290028370300200241003602302002420137032802400240024002402000417e6a22034102200341ff01714102491b41ff01710e03000102030b200241003a003c200241286a2002413c6a410110740c020b200241013a003c200241286a2002413c6a410110740c010b200241023a003c200241286a2002413c6a41011074200220003a003c200241286a2002413c6a410110742002200136023c200241286a2002413c6a410410740b200241086a412020022802282200200228023010b2010240200228022c450d002000102e0b200241c0006a24000bdf0203027f027e017f230041c0006b2201240020002d001021022000290308210320002903002104200141086a41186a22004200370300200141186a22054200370300200141086a41086a420037030020014200370308200141086a41a8f8c6004104108102200141286a41aa8cc50041181081022000200141286a41086a290000370300200520012900283703002001410036023020014201370328200141013a0038200141286a200141386a4101107420012004370338200141286a200141386a4108107420012003370338200141286a200141386a41081074024002400240024020020e03000102030b200141003a0038200141286a200141386a410110740c020b200141013a0038200141286a200141386a410110740c010b200141023a0038200141286a200141386a410110740b200141086a412020012802282200200128023010b2010240200128022c450d002000102e0b200141c0006a24000bc10201047f230041c0006b22012400200141186a22024200370300200141106a22034200370300200141086a420037030020014200370300200141d9fcc6004106108102200141206a41b4f4cb0041061081022002200141206a41086a29000037030020032001290020370300024002402000280208220341246c41046a2202417f4c0d00200028020021000240024020020d00410121040c010b2002102c2204450d020b2001410036023820012002360234200120043602302003200141306a10760240200341246c2202450d000340200141206a200010ef04200141306a200128022022032001280228107402402001280224450d002003102e0b200041246a21002002415c6a22020d000b0b2001412020012802302200200128023810b20102402001280234450d002000102e0b200141c0006a24000f0b1038000b1036000bbe0401027f230041106b220224000240024002400240024002400240024020012d00000e06010402030500010b2000410036020820004201370200200241003a00002000200241011074200141046a28020021032001410c6a28020022012000107620002003200110740c050b2000410036020820004201370200200241023a000020002002410110744120102c2203450d0520024220370204200220033602002002200141016a41201074200020022802002201200228020810742002280204450d042001102e0c040b2000410036020820004201370200200241043a000020002002410110742000200141016a41041074200141086a2802002103200141106a28020022012000107620002003200110740c030b2000410036020820004201370200200241053a000020002002410110742000200141016a41041074200141086a2802002103200141106a28020022012000107620002003200110740c020b2000410036020820004201370200200241063a000020002002410110742000200141016a41041074200141086a2802002103200141106a28020022012000107620002003200110740c010b2000410036020820004201370200200241073a00002000200241011074200241003a000020002002410110740240200141046a2802004101460d00200241003a000020002002410110740c010b200241013a000020002002410110742002200141086a280200360200200020024104107420022001410c6a28020036020020002002410410740b200241106a24000f0b1036000bbd0101037f230041306b22012400200141186a22024200370300200141106a22034200370300200141086a420037030020014200370300200141d9fcc6004106108102200141206a41a0f4cb00410a1081022002200141206a41086a2900003703002003200129002037030002404120102c2202450d002001422037022420012002360220200141206a2000412010742001412020012802202200200128022810b20102402001280224450d002000102e0b200141306a24000f0b1036000bd50302087f017e230041f0006b22022400200241c0006a41186a22034200370300200241c0006a41106a22044200370300200241c0006a41086a2205420037030020024200370340200241e0006a41d9fcc60041061081022005200241e0006a41086a220629000037030020022002290060370340200241e0006a41d4f2cb00410b1081022003200629000037030020042002290060370300200241206a200241c0006a10f204200220022903284200200229032042015122071b3703182002200241206a41106a2208290300420020071b3703102002200241206a41186a2209290300420020071b370308200241086a2107024002400240200141ff01710e03010002010b200241106a21070c010b200241186a21070b2007427f2007290300220a20007c22002000200a541b3703002009200229030837030020082002290310370300200220022903183703282002420137032020034200370300200442003703002005420037030020024200370340200241e0006a41d9fcc60041061081022005200629000037030020022002290060370340200241e0006a41d4f2cb00410b108102200441086a200629000037000020042002290060370000200241c0006a200241206a41086a10f304200241f0006a24000bbb0202037f017e230041d0006b220224002002412036020420022001360200200241086a2001412010ed0202400240200228020822010d00200042003703000c010b200228020c2103024002400240200241086a41086a28020022044108490d00200441787141786a0e09000101010101010100010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241909dc5003602382002200241286a360248200241346a419cebc000200241386a103d1a2002280218200228022010ef020240200228021c450d002002280218102e0b420021050c010b200041186a2001290010370300200041106a200129000837030020002001290000370308420121050b200020053703002003450d002001102e0b200241d0006a24000b8c0101017f230041206b22022400200241003602102002420137030820022001290300370318200241086a200241186a4108107420022001290308370318200241086a200241186a4108107420022001290310370318200241086a200241186a410810742000412020022802082201200228021010b2010240200228020c450d002001102e0b200241206a24000bb80301067f230041f0006b22012400200141186a22024200370300200141106a22034200370300200141086a420037030020014200370300200141a5fec600411a108102200141d8006a41c8c3c800410c1081022002200141d8006a41086a290000370300200320012900583703002001412036022420012001360220200141286a2001412010ed0202400240200128022822040d00410421020c010b200128022c2105024002400240200141286a41086a2802002206450d00410221020240024020042d00000e03040001020b410321020c020b20064101460d00410021020240024020042d00010e020100020b410121020b2006417e6a4104490d00200428000221030c020b20014100360240200142013703382001410a36024c2001200141206a3602482001200141386a360254200141ec006a41013602002001420137025c200141909dc5003602582001200141c8006a360268200141d4006a419cebc000200141d8006a103d1a2001280238200128024010ef020240200128023c450d002001280238102e0b410421020b0b2005450d002004102e0b2000200336020420004102200220024104461b3a0000200141f0006a24000bc50d04077f017e097f037e230041c0026b22012400200141306a22024200370300200141286a22034200370300200141186a41086a420037030020014200370318200141186a41a5fec600411a108102200141d8016a41c8c4c80041081081022002200141d8016a41086a290000370300200320012900d8013703002001412036023c2001200141186a360238200141c0006a200141186a412010ed0202400240200128024022040d00410021050c010b200128024421062001200141c0006a41086a28020036025420012004360250200141106a200141d0006a10ab010240024020012802100d000240024020012802142207200128025441386e2202200220074b1bad42387e2208422088a70d002008a72202417f4c0d0002400240024020020d00410821050c010b2002102c2205450d010b200241386e21090240024020070d00410021070c010b4100210a4100210b0340200141003a00f801200b220c41016a210b2001280254210d417f210341002102024002400340200d2002460d01200141d8016a20026a2001280250220e2d00003a00002001200d20036a3602542001200e41016a3602502001200241016a220f3a00f8012003417f6a2103200f2102200f4120470d000b200141a0026a41186a2202200141d8016a41186a290300370300200141a0026a41106a2203200141d8016a41106a290300370300200141a0026a41086a2210200141d8016a41086a290300370300200120012903d8013703a002200f41ff01714120490d06200141b8016a41086a22112010290300370300200141b8016a41106a22102003290300370300200141b8016a41186a22032002290300370300200120012903a0023703b801200d200f6b22024108490d06200e29000121122001200e41096a3602502001200241786a360254200141086a200141d0006a10ab012001280208450d01200141003602d8010c060b200241ff0171450d05200141003a00f8010c050b200141d8016a200141d0006a200128020c10920120012802d801220f450d0420014198016a41186a2003290300220837030020014198016a41106a20102903002213370300200141f8006a41086a20112903002214370300200141f8006a41106a2013370300200141f8006a41186a2008370300200141d8006a41186a22032008370300200141d8006a41106a220d2013370300200141d8006a41086a220e2014370300200120012903b80122083703782001200837035820012902dc0121080240200c2009470d00200941016a22022009490d04200941017422102002201020024b1b22024104200241044b1bad42387e2213422088a74541037421022013a721100240024020090d00200141003602d8010c010b200141083602e001200120053602d8012001200941386c3602dc010b200141a0026a20102002200141d8016a107d20012802a8022102024020012802a0024101470d0020020d040c050b20012802a4022105200241386e21090b2005200c41386c6a2202201237030020022001290358370308200241106a200e290300370300200241186a200d290300370300200241206a20032903003703002002412c6a20083702002002200f360228200a41386a210a200b2007470d000b0b2005450d032001200141d0006a10ab010240024002402001280200450d00200141003602d8010c010b200141d8016a200141d0006a200128020410920120012802d8010d010b02402007450d002005200741386c6a210f200521020340200241386a210302402002412c6a28020041ffffff3f71450d00200241286a280200102e0b20032102200f2003470d000b0b024020090d00410021090c050b200941386c450d042005102e0c040b200141a0026a41086a200141d8016a41086a280200360200200120012903d8013703a0020c040b1036000b1038000b200141f8006a41186a20014198016a41186a2903003703000240200c450d002005412c6a210203400240200228020041ffffff3f71450d002002417c6a280200102e0b200241386a2102200a41486a220a0d000b0b2009450d00200941386c21022002450d002005102e0b41002105200141003602a802200142013703a0022001410a360284022001200141386a360280022001200141a0026a3602b801200141ec016a4101360200200142013702dc01200141909dc5003602d801200120014180026a3602e801200141b8016a419cebc000200141d8016a103d1a20012802a00220012802a80210ef0220012802a402450d0020012802a002102e0b2006450d002004102e0b200041086a200736020020002009360204200020053602002000410c6a20012903a002370200200041146a200141a0026a41086a280200360200200141c0026a24000b340020004199fdc60036020420004100360200200041146a4104360200200041106a41b08dc500360200200041086a42083702000b2e01017f02404104102c22020d001036000b200042043702042000200236020041002000107620004101410010740b2f01017f02404104102c22020d001036000b200042043702042000200236020041002000107641044100200010a0010b950101027f230041f0006b22022400200241c8006a410036020002404101102c2203450d002000420137020420002003360200200241003a006f2000200241ef006a41011074024020022802482200450d000240200241cc006a2802002203450d00200341306c450d002000102e0b200241dc006a28020041ffffff3f71450d002002280258102e0b200241f0006a24000f0b1036000b150020002002ad4220862001ad842003100a4101460bb60201067f024002402001280200220228020422030d00410121030c010b200228020022042d0000210520022003417f6a360204410121032002200441016a3602000240200541037122024103470d000c010b024002400240024020020e03000102000b200541027621020c020b02402001280200220228020422010d000c030b200228020022032d0000210420022001417f6a3602042002200341016a360200200441087420057241ffff03712202418002492103200241027621020c020b024020012802002202280204220141034f0d000c020b2002280200220441026a2d0000210620042f000021072002200441036a36020020022001417d6a360204200720064110747241087420057222014180807c6a41ffff0b4b0d01200141027621020b410021030b200020023b0102200020033b01000b950201067f02400240200128020422020d00410121030c010b200128020022042d0000210520012002417f6a2206360204410121032001200441016a3602000240200541037122074103470d000c010b024002400240024020070e03000102000b200541027621010c020b024020060d000c030b20042d0001210320012002417e6a3602042001200441026a360200200341087420057241ffff03712201418002492103200141027621010c020b0240200641034f0d000c020b200441036a2d0000210720042f0001210620012002417c6a3602042001200441046a360200200620074110747241087420057222024180807c6a41ffff0b4b0d01200241027621010b410021030b200020013b0102200020033b01000be10101027f230041106b2202240002400240024020002f0100220341c000490d00200341808001490d012002200341027441027236020020012002410410740c020b200220034102743a00052001200241056a410110740c010b200220034102744101723b01062001200241066a410210740b02400240024020002f0102220041c000490d00200041808001490d01200220004102744102723602082001200241086a410410740c020b200220004102743a00052001200241056a410110740c010b200220004102744101723b010e20012002410e6a410210740b200241106a24000b340020004180fdc60036020420004100360200200041146a4102360200200041106a41ac97c500360200200041086a42123702000b4e01027f230041106b2202240002404110102c22030d001036000b200042103702042000200336020020024200370308200242808090bbbad6adf00d3703002000200241101074200241106a24000b1300200041023602042000419899c5003602000bc60202057f017e230041f0006b220224004280c2d72f42004280f985d40442001082052103200241106a22044200370300200241086a42003703002002411c6a22054180023b0100200241186a22062003360200200242003703002002410136026802404118102c2203450d0020032002290308370300200320022d001d3a00152003200429030037030820032006280200360210200320052d00004100473a00140240200228026822044105490d00200441186c450d002002280204102e0b411c102c2204450d002000421c37020420002004360200410120001076200329030021072002200341086a290300370308200220073703002000200241101074200220032802103602002000200241041074200220032d00143a00002000200241011074200220032d00153a000020002002410110742003102e200241f0006a24000f0b1036000bb10302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b2203428094ebdc03420010e708200441286a20022003428094ebdc03420010e608200441186a20022003200429033822062004290328200441286a41086a29030084420052ad7c220742012007420156200441386a41086a2903002007200654ad7c22074200522007501b22051b22062007420020051b220810e70802400240024020042903182207428080808010544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2006200810e70820042903082203428080808010544100200441086a41086a290300501b450d012007a70d0241d0d8c800411941bcd7cc001039000b2004411136024c2004419cd5cc0036024841add5cc0041de00200441c8006a41bcdcc80041bcd7cc00103e000b2004411136024c2004419cd5cc0036024841add5cc0041de00200441c8006a41bcdcc80041bcd7cc00103e000b200441d0006a2400200342ffffffff0f83428094ebdc037e200742ffffffff0f8380a70b4801027f230041106b2202240002404110102c22030d001036000b200042103702042000200336020020024200370308200242c0843d3703002000200241101074200241106a24000b4d01017f230041206b22002400200041146a4101360200200042013702042000419cc3cb003602002000410436021c20004194c3cb003602182000200041186a360210200041889cc5001044000b840707017f047e027f017e047f057e037f23004180026b22022400200241c0006a200110db040240024002402002290340a70d00200241c0006a41106a290300210320022903482104200241286a200110db0402402002290328a70d00200241286a41106a290300210520022903302106200241206a200110ab01024020022802200d000240024020022802242207200128020441306e2208200820074b1bad42307e2209422088a70d002009a72208417f4c0d000240024020080d004108210a0c010b2008102c220a450d060b200841306ead2109024002402007450d00200241d8016a410172210b0340200241d8016a200110930120022d00d8014101460d04200241b8016a41186a2208200b41186a290000370300200241b8016a41106a220c200b41106a290000370300200241b8016a41086a220d200b41086a2900003703002002200b2900003703b801200241086a200110db042002290308a70d04200241086a41106a290300210e2002290310210f200241f8006a41086a200d2903002210370300200241f8006a41106a200c2903002211370300200241f8006a41186a20082903002212370300200241d8006a41086a220d2010370300200241d8006a41106a22132011370300200241d8006a41186a22142012370300200220022903b80122103703782002201037035802402009422088a7220c2009a7470d00200c41016a2208200c490d04200c4101742215200820082015491b22084104200841044b1bad42307e2209422088a74541037421082009a7211502400240200c0d00200241003602d8010c010b200241083602e0012002200a3602d8012002200c41306c3602dc010b200241b8016a20152008200241d8016a107d20022802c001210820022802b8014101460d0320022802bc01210a200841306ead21090b200a200c41306c6a2208200e3703082008200f37030020082002290358370310200841186a200d290300370300200841206a2013290300370300200841286a2014290300370300200942ffffffff0f83200c41016aad4220868421092007417f6a22070d000b0b200a450d0320002004370300200020093702242000200a3602202000200637031020002003370308200041186a20053703000c070b20080d050b1038000b2009a72201450d00200141306c450d00200a102e0b200041003602200c030b200041003602200c020b200041003602200c010b1036000b20024180026a24000bb10201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41f09dc500410a108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000b830301057f230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022040d00410221010c010b200328021421052003200341186a280200360224200320043602202003200341206a10ab010240024020032802000d00200328020421012003418094ebdc0336024c2003200136024820032802242206450d00200341c8006a2001418094ebdc034b4102746a2802002102200328022022012d0000210720032006417f6a3602242003200141016a36022041002101024020070e020200010b410121010c010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b410221010b2005450d002004102e0b200020013a000420002002360200200341e0006a24000b801301267f23004190046b220424000240024002402001280200220520012802044f0d00200441f7026a2106200441a4016a2107200441ac036a2108200441f0026a4101722109200441d1036a220a41036a210b03402001200541016a360200200441e0016a2005108905200441f0026a20042802e001220c20042802e801108a05200441d8036a41086a220d200941086a290000370300200441d8036a41106a220e200941106a290000370300200441d8036a41186a220f200941186a290000370300200441d8036a41206a2210200941206a290000370300200441d8036a41286a2211200941286a290000370300200441d8036a412f6a22122009412f6a29000037000020044188026a41086a2213200841086a29000037030020044188026a41106a2214200841106a29000037030020044188026a41186a2215200841186a29000037030020044188026a41206a2216200841206a280000360200200420092900003703d803200420082900003703880220042802a803211720042d00f00221182004200a2800003602782004200b28000036007b41022119024020184102460d0020042d00d003211a200441a0016a412f6a2012290000370000200441a0016a41286a2011290300370300200441a0016a41206a2010290300370300200441a0016a41186a200f290300370300200441a0016a41106a200e290300370300200441a0016a41086a200d290300370300200441c8026a41086a2013290300370300200441c8026a41106a2014290300370300200441c8026a41186a2015290300370300200441c8026a41206a2016280200360200200420042903d8033703a00120042004290388023703c8022004200428007b3600c302200420042802783602c002201821192017211b0b024020042802e401450d00200c102e0b200d200441a0016a41086a221c290300370300200e200441a0016a41106a221d290300370300200f200441a0016a41186a221e2903003703002010200441a0016a41206a221f2903003703002011200441a0016a41286a22202903003703002012200441a0016a412f6a290000370000200441f8006a41086a2221200441c8026a41086a2218290300370300200441f8006a41106a2222200441c8026a41106a220c290300370300200441f8006a41186a2223200441c8026a41186a2217290300370300200441f8006a41206a2224200441c8026a41206a2225280200360200200420042903a0013703d803200420042903c802370378200420042800c302360073200420042802c002360270200441f0026a41086a2226200d290300370300200441f0026a41106a2227200e290300370300200441f0026a41186a220e200f290300370300200441f0026a41206a220f2010290300370300200441f0026a41286a22102011290300370300200441f0026a412f6a2012290000370000200420042903d8033703f00220182021290300370300200c20222903003703002017202329030037030020252024280200360200200420042903783703c802200420042800733600c302200420042802703602c00202400240024020194102460d002019410171450d010b4103210d0c010b20072006290000370000200741286a200641286a290000370000200741206a200641206a290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a290000370000200441e0016a41086a22112018290300370300200441e0016a41106a2212200c290300370300200441e0016a41186a22192017290300370300200441e0016a41206a22182025280200360200200420042903c8023703e0012013201c2902003703002014201d2902003703002015201e2902003703002016201f29020037030020044188026a41286a220c202029020037030020044188026a41306a2217200441a0016a41306a280200360200200420042800c3023600db01200420042802c0023602d801200420042902a001370388024103210d201a41ff01714103460d002026201329030037030020272014290300370300200e2015290300370300200f20162903003703002010200c290300370300200441f0026a41306a220d2017280200360200201c2011290300370300201d2012290300370300201e2019290300370300201f201828020036020020042004290388023703f002200420042903e0013703a001200420042800db013600cb02200420042802d8013602c8020240201b2003280200280200470d00200441386a41306a200d280200360200200441386a41286a2010290300370300200441386a41206a200f290300370300200441386a41186a200e290300370300200441386a41106a2027290300370300200441386a41086a2026290300370300200441106a41086a201c290300370300200441106a41106a201d290300370300200441106a41186a201e290300370300200441106a41206a201f280200360200200420042903f002370338200420042903a001370310200420042800cb0236000b200420042802c80236020820052128201b2129201a210d0c010b41002128200441386a41306a41002802b49e45360200200441386a41286a41002902ac9e45370300200441386a41206a41002902a49e45370300200441386a41186a410029029c9e45370300200441386a41106a41002902949e45370300200441386a41086a410029028c9e45370300200441106a41086a41002902c49e45370300200441106a41106a41002902cc9e45370300200441106a41186a41002902d49e45370300200441106a41206a41002802dc9e45360200200441002902849e45370338200441002902bc9e45370310200441002800e49e4536000b200441002800e19e453602084103210d410021290b200d41ff01714103470d02200128020022052001280204490d000b0b200041033a00600c010b2000202836020020002004290338370204200020293602382000200429031037023c2000410c6a200441386a41086a290300370200200041146a200441386a41106a2903003702002000411c6a200441386a41186a290300370200200041246a200441386a41206a2903003702002000412c6a200441e0006a290300370200200041346a200441e8006a280200360200200041c4006a200441106a41086a290300370200200041cc006a200441106a41106a290300370200200041d4006a200441106a41186a290300370200200041dc006a200441106a41206a2802003602002004200428000b360003200420042802083602002000200d3a006020002004280200360061200041e4006a20042800033600000b20044190046a24000b850201037f230041d0006b22022400200241086a41de80ca004109108102200241186a41e780ca004110108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bfc0f05057f017e027f057e037f230041d0016b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d00200041023a00000c010b200328020c210202400240200341106a2802002204450d002004417f6a21050240024002400240024020012d00000e020001050b20054104490d0420012800012106200341003a00880120044105460d0420012d00052105200341013a008801200320053a006820044106470d010c030b2005450d03410021050240024020012d00010e020100050b410121050b2004417e6a4104490d03200341206a41086a200341e8006a41086a290300370300200341206a41106a200341e8006a41106a290300370300200341206a41186a200341e8006a41186a290300370300200320032903683703202003200328009001360218200320034193016a28000036001b20012800022107410121040c010b20012d00062105200341023a008801200320053a006920044107460d0120012d00072105200341033a008801200320053a006a20044108460d0120012d00082105200341043a008801200320053a006b20044109460d0120012d00092105200341053a008801200320053a006c2004410a460d0120012d000a2105200341063a008801200320053a006d2004410b460d0120012d000b2105200341073a008801200320053a006e2004410c460d0120012d000c2105200341083a008801200320053a006f2004410d460d0120012d000d2105200341093a008801200320053a00702004410e460d0120012d000e21052003410a3a008801200320053a00712004410f460d0120012d000f21052003410b3a008801200320053a007220044110460d0120012d001021052003410c3a008801200320053a007320044111460d0120012d001121052003410d3a008801200320053a007420044112460d0120012d001221052003410e3a008801200320053a007520044113460d0120012d001321052003410f3a008801200320053a007620044114460d0120012d00142105200341103a008801200320053a007720044115460d0120012d00152105200341113a008801200320053a007820044116460d0120012d00162105200341123a008801200320053a007920044117460d0120012d00172105200341133a008801200320053a007a20044118460d0120012d00182105200341143a008801200320053a007b20044119460d0120012d00192105200341153a008801200320053a007c2004411a460d0120012d001a2105200341163a008801200320053a007d2004411b460d0120012d001b2105200341173a008801200320053a007e2004411c460d0120012d001c2105200341183a008801200320053a007f2004411d460d0120012d001d2105200341193a008801200320053a0080012004411e460d0120012d001e21052003411a3a008801200320053a0081012004411f460d0120012d001f21052003411b3a008801200320053a00820120044120460d0120012d002021052003411c3a008801200320053a00830120044121460d012003411d3a008801200320012d00213a00840120044122460d012003411e3a008801200320012d00223a00850120044123460d012003411f3a008801200320012d00233a00860120044124460d01200341c8006a41106a200341e8006a41106a290300370300200341c8006a41086a200341e8006a41086a290300370300200320012d00243a008701200341c8006a41186a200341e8006a41186a290300370300200341203a008801200320032903682208370390012003200837034820044125460d024100210902400240024020012d00250e03020100050b410221090c010b410121090b2004415a6a4104490d02200441566a4110490d02200441466a4110490d02200441b67f6a410f4d0d022001280026210a200341206a41086a200341c8006a41086a290300370300200341206a41106a200341c8006a41106a290300370300200341206a41186a200341c8006a41186a29030037030020032003290348370320200320032800413602182003200341c4006a28000036001b200141d2006a2900002108200141c2006a290000210b200141326a290000210c200129004a210d200129003a210e200129002a210f410021040b200341e8006a41186a2210200341206a41186a290300370300200341e8006a41106a2211200341206a41106a290300370300200341e8006a41086a2212200341206a41086a2903003703002003200329032037036820032003280218360290012003200328001b36009301200041306a2008370000200041286a200d370000200041206a200b370000200041186a200e370000200041106a200c370000200041086a200f3700002000413c6a200a360000200041386a2006360000200041046a2007360000200020053a0001200041e0006a20093a0000200041c0006a2003290368370000200041c8006a2012290300370000200041d0006a2011290300370000200041d8006a2010290300370000200041e1006a200328029001360000200041e4006a2003280093013600000c020b200341003a0088010b200341003602980120034201370390012003410a36024c20032003360248200320034190016a360220200341fc006a41013602002003420137026c200341909dc5003602682003200341c8006a360278200341206a419cebc000200341e8006a103d1a20032802900120032802980110ef020240200328029401450d00200328029001102e0b410221040b200020043a00002002450d002001102e0b200341d0016a24000b130020002002ad4220862001ad84102610da080bbe0303057f017e037f230041306b22022400200241086a200128020c200141146a280200108b050240024020022802082203450d00200141086a2104200141106a2105024003400240024020042802002206200229020c2207422088a722084b0d0020012802002003200610ec08450d010b2007a7450d032003102e0c030b02402005280200450d00200128020c102e0b2001200336020c20052007370200200241086a2003200810ed020240024020022802082203450d0020022802102109200228020c2108024020012d001c450d00200128020c200128021410ff010b2001280214220a20042802002206490d03200241086a200128020c20066a200a20066b20032009200128021811050020022d002c4102470d012008450d002003102e0b200241086a200128020c2001280214108b05200228020822030d010c030b0b20002002290308370200200041206a200241086a41206a290300370200200041186a200241086a41186a290300370200200041106a200241086a41106a290300370200200041086a200241086a41086a2903003702002008450d022003102e0c020b2006200a41e89ec5001056000b200041023a00240b200241306a24000be30303057f017e037f230041c0006b22022400200241086a200128020c200141146a280200108b050240024020022802082203450d00200141086a2104200141106a2105024003400240024020042802002206200229020c2207422088a722084b0d0020012802002003200610ec08450d010b2007a7450d032003102e0c030b02402005280200450d00200128020c102e0b2001200336020c20052007370200200241086a2003200810ed020240024020022802082203450d0020022802102109200228020c2108024020012d001c450d00200128020c200128021410ff010b2001280214220a20042802002206490d03200241086a200128020c20066a200a20066b20032009200128021811050020022802340d012008450d002003102e0b200241086a200128020c2001280214108b05200228020822030d010c030b0b20002002290308370200200041306a200241086a41306a290300370200200041286a200241086a41286a290300370200200041206a200241086a41206a290300370200200041186a200241086a41186a290300370200200041106a200241086a41106a290300370200200041086a200241086a41086a2903003702002008450d022003102e0c020b2006200a41e89ec5001056000b2000410036022c0b200241c0006a24000bbe0301017f230041106b220224000240024020002d00004101460d00200241003a000f20012002410f6a41011074024002400240024002400240024002400240024020002d00010e0a000102030405060708090b0b200241003a000f20012002410f6a410110740c0a0b200241013a000f20012002410f6a410110740c090b200241023a000f20012002410f6a410110740c080b200241033a000f20012002410f6a410110740c070b200241043a000f20012002410f6a410110740c060b200241053a000f20012002410f6a410110740c050b200241063a000f20012002410f6a410110740c040b200241073a000f20012002410f6a410110742002200041026a2d00003a000f20012002410f6a410110740c030b200241083a000f20012002410f6a410110740c020b200241093a000f20012002410f6a410110740c010b200241013a000f20012002410f6a4101107402400240024020002d00010e03000102030b200241003a000f20012002410f6a410110740c020b200241013a000f20012002410f6a410110740c010b200241023a000f20012002410f6a410110742002200041026a2d00003a000f20012002410f6a410110740b200241106a24000b9c0101037f230041206b2202240020024100360208200242013703002001280200210302404120102c2204450d002002422037021420022004360210200241106a2003412010742002200228021022032002280218107402402002280214450d002003102e0b2002200128020441201074200020022802002201200228020810b00102402002280204450d002001102e0b200241206a24000f0b1036000baa0a01067f230041c0006b22022400024041ca03102c2203450d0020002003360200200041046a220442ca03370200200341003b000041022105200041086a4102360200024002400240200128020022032903684202520d00410221010240024020042802004102470d00200242828080801037021420022000280200360210200241306a41084101200241106a107d200241306a41086a280200210120022802304101460d0120002002280234360200200041046a2001360200200041086a28020021010b200028020020016a41043a0000200041086a2201200128020041016a3602000c020b2001450d020c030b02400240024002400240024020042802004102470d00200242828080801037021420022000280200360210200241306a41084101200241106a107d200241306a41086a280200210120022802304101460d0120002002280234360200200041046a2001360200200041086a28020021050b200341e8006a2101200028020020056a4184013a0000200041086a2204200428020041016a3602002003200010f50120032d00240e03010203040b20010d060c050b200241003a00102000200241106a410110742000200341256a41c00010740c020b200241013a00102000200241106a410110742000200341256a41c00010740c010b200241023a00102000200241106a410110742000200341256a41c10010740b200120001091050b20034198016a2000109002200041086a220128020021034104102c2204450d01200242043702042002200436020041012003417e6a220320034101461b410020031b2002107602402001280200220141014d0d00200241286a2002280200220320022802086a220436020020022000360220200041086a4100360200200241023602102002411c6a2000280200220541026a22063602002002200336022420022001417e6a220136021420022006360218200241246a21060240024020010d002000200610ee010c010b41002101034020032004460d012002200341016a360224200520016a20032d00003a00002000200028020841016a360208024020014101460d00200141016a210120022802242103200228022821040c010b0b0240200228022820022802246b2203450d00200241106a200310920520022802202200280208220320022802102201460d00200120036b2104200028020020036a21030340200228022422012002280228460d022002200141016a360224200320012d00003a00002000200028020841016a360208200341016a21032004417f6a22040d000b0b200228022820022802246b2203417f4c0d020240024020030d00410121010c010b2003102c2201450d040b200241003602382002200336023420022001360230200241306a200610ee012002280234210620022802302107024020022802382203450d00200241106a200310920520022802202204280208220120022802102200460d00200020016b2105200428020020016a21012007210003402003450d01200120002d00003a00002004200428020841016a3602082003417f6a2103200041016a2100200141016a21012005417f6a22050d000b0b2006450d002007102e0b02402002280218200228021c2203460d00200220033602180b024020022802142203450d000240200228021022042002280220220541086a22002802002201460d002005280200220520016a200520046a200310ea081a200228021421030b2000200320016a3602000b02402002280204450d002002280200102e0b200241c0006a24000f0b4102200141b4b3c000104d000b1038000b1036000baa0103017f027e017f230041106b220224000240024020002903004201520d002002200041106a290300200041086a2903002203420c882204420120044201561b80a741047420037aa7417f6a22054101200541014b1b2205410f2005410f491b723b01082001200241086a410210740c010b200241003a000b20012002410b6a410110740b200041286a20011091022002200041186a36020c2002410c6a200110af01200241106a24000b950201067f230041206b22022400024002402000280210220341046a280200220420002802042205200028020022066a22076b2001490d00200328020021040c010b0240200720016a22062007490d00200441017422052006200520064b1b22064108200641084b1b21060240024020040d00200241003602100c010b200241106a41086a410136020020022004360214200220032802003602100b200220064101200241106a107d200241086a2802002106024020022802004101460d00200320022802042204360200200341046a200636020020002802042105200028020021060c020b2006450d001036000b1038000b2004200620016a22016a200420066a200510ea081a20002001360200200241206a24000b5401027f230041106b2202240002404108102c22030d001036000b2000420837020420002003360200200241003602082000200241086a410410742002410036020c20002002410c6a41041074200241106a24000b4f01027f230041106b2202240002404114102c22030d001036000b200042143702042000200336020041044100200010950520024200370308200242003703002000200241101074200241106a24000ba40101027f230041106b22032400200120021076024002402001450d00200141c4006c210103402002200041046a412010744120102c2204450d0220034220370204200320043602002003200041246a412010742002200328020022042003280208107402402003280204450d002004102e0b200320002802003602002002200341041074200041c4006a2100200141bc7f6a22010d000b0b200341106a24000f0b1036000b5d01027f230041206b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030002404120102c22030d001036000b20004220370204200020033602002000200241201074200241206a24000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410841002000109e010b4f01027f230041106b2202240002404114102c22030d001036000b200042143702042000200336020041044100200010d80220024200370308200242003703002000200241101074200241106a24000b5801017f230041106b220224002000410036020820004201370200200242003703082000200241086a41081074200242003703082000200241086a41081074200242003703082000200241086a41081074200241106a24000b7a01017f230041106b22022400200041003602082000420137020020024200370308200242003703002000200241101074200242003703082002420037030020002002411010742002420037030820024200370300200020024110107420024200370308200242003703002000200241101074200241106a24000b8f0101027f230041306b220224002000410036020820004201370200200241186a4200370300200241106a4200370300200241086a42003703002002420037030002404120102c2203450d002002422037022420022003360220200241206a2002412010742000200228022022032002280228107402402002280224450d002003102e0b200241306a24000f0b1036000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002410136020c20002002410c6a41041074200241106a24000bb60101017f230041106b22022400200041003602082000420137020020024100360200200020024104107420024100360200200020024104107420024100360200200020024104107420024100360200200020024104107420024200370308200242003703002000200241101074200242003703082002420037030020002002411010742002420037030820024200370300200020024110107420024200370308200242003703002000200241101074200241106a24000b2901017f230041106b2202240020024100360208200242043703002000200210b501200241106a24000ba40b02087f067e230041b0036b2203240020034190036a41186a2204420037030020034190036a41106a2205420037030020034190036a41086a22064200370300200342003703900341062107200341d8016a41d9fcc60041061081022006200341d8016a41086a2208290000370300200320032900d80137039003200341d8016a4188f3cb00411010810220042008290000370300200520032900d801370300200341086a20034190036a4120108e02410021090240417f200328020c410020032802081b220a20026a22022002200a491b220a418080c002418080f001200141ff017122021b4b0d00200341106a10a9032004420037030020054200370300200642003703002003420037039003200341d8016a41d9fcc600410610810220062008290000370300200320032900d80137039003200341d8016a41d4f2cb00410b108102200541086a2008290000370000200520032900d801370000200341d8016a20034190036a10f204200341d8016a41186a290300210b200341d8016a41106a290300210c20032903e001210d20032903d801210e200341d8016a200341106a41b80110e9081a2003200d4200200e42015122061b370390032003200c420020061b3703d0012003200b420020061b3703c801024002400240024020020e03010200010b427f2000200341d8026a22062903007c220b200b2000541b210b0c020b427f200020032903e8017c220b200b2000541b210b200341e8016a21060c010b427f2000200341a0026a22062903007c220b200b2000541b210b0b02400240024002402006290318220c4201510d0020062903284201510d00200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008427f2008290300220d200b7c220b200b200d541b3703000c010b200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008290300220d200b7c220b200d540d012008200b3703000b200341c8016a2108024002400240200141ff01710e03000102000b20034190036a21080c010b200341d0016a21080b2008290300210e0240200c4201520d00200e200641206a290300560d010b0240427f427f200329039003220b20032903d001220c7c220d200d200b541b220f20032903c801220d7c22102010200f541b20032903e001580d0020062903284201520d00200e200641306a290300560d010b41002106410021070c010b41062107410121060b20060d00200341d8016a10a9030240024002400240200141ff01710e03010200010b200341d8026a21010c020b200341e8016a21010c010b200341a0026a21010b024020012903084201520d0041062107200141106a2903002000540d010b200341a8036a2208420037030020034190036a41106a2207420037030020034190036a41086a220142003703002003420037039003200341d8016a41d9fcc60041061081022001200341d8016a41086a2206290000370300200320032900d80137039003200341d8016a4188f3cb004110108102200541086a22042006290000370000200520032900d8013700002003200a3602d80120034190036a4120200341d8016a410410b2012008420037030020074200370300200142003703002003420037039003200341d8016a41d9fcc600410610810220012006290000370300200320032900d80137039003200341d8016a41d4f2cb00410b10810220042006290000370000200520032900d801370000200341003602e001200342013703d8012003200b370310200341d8016a200341106a410810742003200c370310200341d8016a200341106a410810742003200d370310200341d8016a200341106a4108107420034190036a412020032802d801220520032802e00110b201024020032802dc01450d002005102e0b410221090b200341b0036a240020074108742009720bee0302037f017e230041d0016b22042400200441206a22054200370300200441086a41106a22064200370300200441086a41086a420037030020044200370308200441086a41d9fcc6004106108102200441c0016a4188f3cb0041101081022005200441c0016a41086a290000370300200620042900c0013703002004200441086a4120108e0202400240417f2004280204410020042802001b220520036a220320032005491b418080c002418080f001200241ff017122031b4b0d00200441086a10a903024002400240024020030e03010200010b20044188016a21030c020b200441186a21030c010b200441d0006a21030b0240024020032903084201520d00200341106a2903002001540d010b42002107024002400240200241ff01710e03000102000b200121070c010b427f200142ffffffffffffffffbf7f7c220720072001541b21070b200041003a0000200041306a41013a0000200041286a4200370200200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a2007370300200041316a2004280008360000200041346a2004410b6a2800003600000c020b200041800c3b0001200041013a0000200041036a41003a00000c010b200041800c3b0001200041013a0000200041036a41003a00000b200441d0016a24000b850201037f230041d0006b22022400200241086a4192fdc6004107108102200241186a41ed9fc5004110108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b8c0a03107f047e037f23004180026b220324002003200236021420032001360210200341186a2001200210ed0202400240200328021822040d00200041003602000c010b200328021c21052003200341206a280200220136022c200320043602280240024020014104490d002004280000210620032001417c6a36022c2003200441046a360228200341086a200341286a10ab0120032802080d00200328020c210720034200370244024002402007450d00200341d0016a41106a2108410021090340200341003a00f001200941016a2109200328022c210a417f21024100210102400240024002400340200a2001460d01200341d0016a20016a2003280228220b2d00003a00002003200a20026a36022c2003200b41016a3602282003200141016a220c3a00f0012002417f6a2102200c2101200c4120470d000b200341b0016a41186a220d200341d0016a41186a220e290300370300200341b0016a41106a220f2008290300370300200341b0016a41086a2210200341d0016a41086a2211290300370300200320032903d0013703b001200c41ff01714120490d01200341f0006a41086a22012010290300370300200341f0006a41106a2202200f290300370300200341f0006a41186a2212200d290300370300200320032903b001370370200a200c6b220c4104490d01200341d0006a41086a20012903002213370300200341d0006a41106a20022903002214370300200341d0006a41186a20122903002215370300200320032903702216370350200b28000121172003200b41056a3602282003200c417c6a36022c200e20153703002008201437030020112013370300200320163703d0012003280244220b450d02200328024021180c030b200141ff0171450d00200341003a00f0010b200341d0016a41086a200341c0006a41086a280200360200200320032903403703d001200341d0016a10bc020c050b419403102c220b450d0341002118200b4100360200200b41003b01322003200b360244200341003602400b024002400340200b2f013222194105742112410021014104210c417f210202400340024020122001470d00201921020c020b200341d0016a200b20016a41346a412010ec08220a450d03200241016a2102200c41046a210c200141206a2101200a417f4a0d000b0b02402018450d002018417f6a2118200b20024102746a4194036a280200210b0c010b0b200d200e2903002213370300200f20082903002214370300201020112903002215370300200320032903d00122163703b00120082016370200200841086a2015370200200841106a2014370200200841186a2013370200200320023602d8012003200b3602d401200341003602d0012003200341c0006a3602dc01200341d0016a201710a3051a0c010b200b200c6a20173602000b20092007470d000b0b200341b0016a41086a200341c0006a41086a28020022013602002003200329034022133703b0012000200636020420004101360200200041086a2013370200200041106a20013602000c020b1036000b200341003602b801200342013703b0012003410a360294012003200341106a360290012003200341b0016a360270200341e4016a4101360200200342013702d401200341909dc5003602d001200320034190016a3602e001200341f0006a419cebc000200341d0016a103d1a20032802b00120032802b80110ef02024020032802b401450d0020032802b001102e0b200041003602000b2005450d002004102e0b20034180026a24000bc51a07147f017e027f017e027f017e087f230041a0016b2202240020002802102103200028020821042000280200210520002802042106200241c0006a41186a22072000412c6a280000360200200241c0006a41106a2208200041246a290000370300200241c0006a41086a22092000411c6a2900003703002002200041146a29000037034002400240024020062f0132220a410a4b0d0020024180016a41186a200728020036020020024180016a41106a200829030037030020024180016a41086a20092903003703002002200229034037038001200641346a2107200a41016a21080240200441016a2209200a4b22050d00200720094105746a200720044105746a20082004417f736a41057410ea081a0b200720044105746a220a2003360000200a200229038001370004200a410c6a20024188016a290300370000200a41146a20024190016a290300370000200a411c6a20024198016a280200360000200641046a210a024020050d00200a20094102746a200a20044102746a20082004417f736a41027410ea081a0b200a20044102746a220b2001360200200620083b01320c010b4105210a4100210c02400240200441054f0d004104210a200421070c010b41052107024002402004417b6a0e020201000b200441796a21074101210c4106210a0c010b410021074101210c0b02400240024002400240024002400240024002400240419403102c2204450d00200441003b013220044100360200200420062f0132220d200a417f736a22083b013220024188016a200641346a220e200a4105746a2209410c6a29000037030020024190016a200941146a29000037030020024198016a2009411c6a28000036020020022009290004370380012008410c4f0d01200d200a41016a220f6b2008470d02200641046a220d200a4102746a280200211020092800002111200441346a200e200f4105746a200841057410e9081a200441046a200d200f4102746a200841027410e9081a2006200a3b0132200241e0006a41086a20024180016a41086a2209290300370300200241e0006a41106a20024180016a41106a220f290300370300200241e0006a41186a20024180016a41186a220d280200360200200220022903800137036020042006200c1b22082f0132210a200d200241c0006a41186a280200360200200f200241c0006a41106a2903003703002009200241c0006a41086a2903003703002002200229034037038001200841346a210c200a41016a210e0240200741016a2212200a4b22130d00200c20124105746a200c20074105746a200e2007417f736a41057410ea081a0b200c20074105746a220a2003360000200a200229038001370004200a410c6a2009290300370000200a41146a200f290300370000200a411c6a200d280200360000200841046a210a024020130d00200a20124102746a200a20074102746a200e2007417f736a41027410ea081a0b200a20074102746a220b2001360200200241206a41086a2214200241e0006a41086a22152903002216370300200241206a41106a2217200241e0006a41106a22182903002219370300200241206a41186a221a200241e0006a41186a221b280200220a3602002008200e3b013220022002290360221c370320200241186a220e200a360200200241106a22122019370300200241086a221320163703002002201c370300024002400240200628020022010d00410021050c010b2010211d4100210a2004211e2011211f034020062f01302108200241c0006a41186a2220200e280200360200200241c0006a41106a22212012290300370300200241c0006a41086a22222013290300370300200220022903003703402005200a470d0620012f0132220c410b490d024100210941042106024020084105490d0020082106024002402008417b6a0e020201000b200841796a210841012109410621060c010b4100210841012109410521060b41c403102c2204450d03200441003b013220044100360200200420012f013222102006417f736a220a3b0132200141346a222320064105746a2207280000211120024180016a41186a22032007411c6a28000036020020024180016a41106a220f200741146a29000037030020024180016a41086a220d2007410c6a2900003703002002200729000437038001200a410c4f0d072010200641016a22076b200a470d08200141046a222420064102746a2802002110200441346a202320074105746a200a41057410e9081a200441046a2024200741027422076a200a41027410e9081a200120063b01322015200d2903003703002018200f290300370300201b2003280200360200200220022903800137036020042f0132220a41016a2123200a410c4f0d09200c20066b22062023470d0a200541016a210520044194036a200120076a4194036a200641027410e9081a4100210602400340200420064102746a4194036a280200220720063b01302007200436020020062006200a4922076a2206200a4b0d0120070d000b0b201a201b2802003602002017201829030037030020142015290300370300200220022903603703202004200120091b22072f0132210c20032020280200360200200f2021290300370300200d20222903003703002002200229034037038001200741346a210a200c41016a21090240200841016a2206200c4b22200d00200a20064105746a200a20084105746a2008417f7320096a41057410ea081a0b200a20084105746a220a201f360000200a200229038001370004200a410c6a200d290300370000200a41146a200f290300370000200a411c6a2003280200360000200741046a210a024020200d00200a20064102746a200a20084102746a2008417f7320096a41027410ea081a0b200a2008410274220f6a201d36020020074194036a210a0240200841026a220d200c41026a22034f0d00200a200d4102746a200a20064102746a2006417f7320036a41027410ea081a0b200a20064102746a201e360200200720093b01320240200620034f0d002007200f6a4198036a210603402006280200220a200841016a22083b0130200a2007360200200641046a210620092008470d000b0b2013201429030037030020122017290300370300200e201a28020036020020022002290320370300200121062001280200220721012010211d2005210a2004211e2011211f20070d000b0b200241c0006a41186a200e2802002206360200200241c0006a41106a20122903002216370300200241c0006a41086a2013290300221937030020022002290300221c370340201b200636020020182016370300201520193703002002201c370360200028020c220a2802042207450d09200a280200210841c403102c2206450d012006200736029403200641003b013220064100360200200741003b013020072006360200200a2006360204200a200841016a36020020024180016a41186a200241e0006a41186a28020036020020024180016a41106a200241e0006a41106a29030037030020024180016a41086a200241e0006a41086a290300370300200220022903603703800120082005470d0a20062f01322208410b4f0d0b200620084105746a220741346a2011360000200741386a200229038001370000200741c0006a20024188016a290300370000200741c8006a20024190016a290300370000200741d0006a20024198016a2802003600002006200841016a22073b0132200620074102746a4194036a2004360200200620084102746a41046a2010360200200420073b013020042006360200200a200a28020841016a3602080c0d0b20012f0132210a20024180016a41186a2205200241c0006a41186a28020036020020024180016a41106a2203200241c0006a41106a29030037030020024180016a41086a220f200241c0006a41086a2903003703002002200229034037038001200841016a2106200141346a2104200a41016a210902402008200a4f22070d00200420064105746a200420084105746a2008417f7320096a41057410ea081a0b200420084105746a2204201f36000020042002290380013700042004410c6a200f290300370000200441146a20032903003700002004411c6a2005280200360000200141046a2104024020070d00200420064102746a200420084102746a2008417f7320096a41027410ea081a0b2004200841027422056a201d36020020014194036a2104200a41026a2108024020070d00200520046a41086a200420064102746a2006417f7320086a41027410ea081a0b200420064102746a201e360200200120093b0132200620084f0d0b200a41016a210720012006417f6a22064102746a4198036a210403402004280200220a200641016a22063b0130200a2001360200200441046a210420072006470d000c0c0b0b1036000b2008410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b200a410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2023410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b200028020c2206200628020841016a3602080b200241a0016a2400200b0bf60d04067f017e057f027e230041800d6b2202240010a505200141086a28020021032001410c6a280200210420012802042105200241a00a6a2001280200220610a6052005200441b0026c6a2107200241a00a6a10a7052101024002400240024002400240024020040d0042002108200521010c010b20024180056a41047221090240024020010d00200241e9026a210a420021084100210b20052101024003402001280200210c200241c0076a200141046a220d41ac0210e9081a200241a00a6a200d41ac0210e9081a200c411c460d0120024180056a200241a00a6a41ac0210e9081a200241d0026a20024180056a41ac0210e9081a200241246a200241d0026a41ac0210e9081a2002200c360280052009200241246a41ac0210e9081a200241b0076a20024180056a109704200241a00a6a20024180056a41b00210e9081a200241c0076a200610a605200241d0026a200241a00a6a200241c0076a10dd020240024020022903d8024201510d0020022903b007210e0c010b20022903b007220e20022903e002220f200f200e561b210e0b200241a00a6a41086a200a41086a290000370300200241a00a6a410f6a200a410f6a2900003700002002200a2900003703a00a427f2008200e7c220e200e2008541b2108024020022903d0024201510d00200b41016a210b200141b0026a22012007470d010c040b0b200141b0026a21010c050b200141b0026a21010c060b200241e9026a210c4100210b200521014200210803402001280200210a200241c0076a200141046a220d41ac0210e9081a200241a00a6a200d41ac0210e9081a200a411c460d0520024180056a200241a00a6a41ac0210e9081a200241d0026a20024180056a41ac0210e9081a200241246a200241d0026a41ac0210e9081a2002200a360280052009200241246a41ac0210e9081a200241b0076a20024180056a109704200241c0076a20024180056a41b00210e9081a200241f0096a200610a6050240024020022802980a220a280208200241c0076a200a28020c28020c1101000d00200a200a280200417f6a220d360200200241023a00f002200241003a00e802200242003703d802200242013703d0020240200d0d00200a280208200a28020c2802001103000240200a28020c280204450d00200a280208102e0b200a41046a220d200d280200417f6a220d360200200d0d00200a102e0b200241c0076a10dc0220022903b007210e0c010b200241a00a6a200241c0076a41b00210e9081a200241d00c6a41286a200241f0096a41286a280200360200200241d00c6a41206a200241f0096a41206a290300370300200241d00c6a41186a200241f0096a41186a290300370300200241d00c6a41106a200241f0096a41106a290300370300200241d00c6a41086a200241f0096a41086a290300370300200220022903f0093703d00c200241d0026a200241a00a6a200241d00c6a10dd02024020022903d8024201510d0020022903b007210e0c010b20022903b007220e20022903e002220f200f200e561b210e0b200241a00a6a41086a200c41086a290000370300200241a00a6a410f6a200c410f6a2900003700002002200c2900003703a00a427f2008200e7c220e200e2008541b210820022903d0024201510d03200b41016a210b200141b0026a22012007470d000b0b200721010b200241a00a6a200241c0076a41ac0210e9081a0c030b200141b0026a21010b200241086a410f6a200241a00a6a410f6a290000370000200241086a41086a200241a00a6a41086a290300370300200220022903a00a370308200b41016aad42e88dfb007e20087c2108024020072001460d0003402001108b022007200141b0026a2201470d000b0b200842e0b8a1077c210802402003450d00200341b0026c450d002005102e0b200241c0076a410f6a2201200241086a410f6a290000370000200241c0076a41086a2207200241086a41086a290300370300200220022903083703c00710a805200041186a41003a0000200041106a20083703002000420137030820004201370300200020022903c007370019200041216a2007290300370000200041286a20012900003700000c020b200141b0026a21010b024020072001460d0003402001108b022007200141b0026a2201470d000b0b02402003450d00200341b0026c450d002005102e0b200241a00a6a41086a41063a0000200241113a00a00a200241a00a6a10fe01200241c0076a41086a2201200241086a41086a290300370300200241c0076a410f6a2207200241086a410f6a290000370000200220022903083703c00710a905200041186a41003a0000200041106a2004ad42e88dfb007e20087c42e0b8a1077c3703002000420137030820004200370300200020022903c007370019200041216a2001290300370000200041286a20072900003700000b200241800d6a24000b0400102b0ba10701087f230041c0006b21020240024002400240024020012d00000e03000102000b4102210302400240024020012d00010e03000102000b410021030c010b2002413c6a41026a200141076a2d00003a0000200241206a41086a200141186a290000370300200241206a41106a200141206a2f00003b01002002200141056a2f00003b013c2002200141106a2900003703202001410c6a2800002104200141086a2800002105200141046a2d00002106200141026a2f00002107410121030b2002411c6a41026a2002413c6a41026a2d00003a0000200241086a200241206a41086a290300370300200241106a200241206a41106a2f01003b0100200220022f013c3b011c20022002290320370300410021080c030b41022106024002400240200141046a2d00000e03000102000b2001410c6a2802002104200141086a2802002105410021060c010b2002413e6a200141076a2d00003a0000200241206a41086a200141186a2900003703002002412d6a2001411d6a2900003700002002200141056a2f00003b013c2002200141106a2900003703202001410c6a2800002104200141086a2800002105410121060b2002411c6a41026a2002413c6a41026a2d00003a0000200241086a200241206a41086a290300370300200241106a200241206a41106a290300370300200220022f013c3b011c20022002290320370300410121080c010b4102210841022106024002400240200141046a2d00000e03000102000b2001410c6a2802002104200141086a2802002105410021060c010b2002413e6a200141076a2d00003a0000200241206a41086a200141186a2900003703002002412d6a2001411d6a2900003700002002200141056a2f00003b013c2002200141106a2900003703202001410c6a2800002104200141086a2800002105410121060b2002411c6a41026a2002413c6a41026a2d00003a0000200241086a200241206a41086a290300370300200241106a200241206a41106a290300370300200220022f013c3b011c200220022903203703000b0b02402001280228220128020041016a220941014b0d0000000b200020033a0001200020083a000020002001360228200041046a20063a0000200041026a20073b010020012009360200200041056a20022f011c3b00002000410c6a2004360200200041086a2005360200200041106a2002290300370200200041076a2002411c6a41026a2d00003a0000200041186a200241086a290300370200200041206a200241106a2903003702000bcc0101037f200028022822012001280200417f6a220236020020002d0001210302400240024020002d00000d004100210020020d022001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a22023602002002450d010c020b4101210020020d012001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d010b2001102e0b200341ff01714100472000720b040010280b040010230bce0902037f017e230041b0016b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022010d00200041033a00200c010b200241186a280200210320022802142104200241003a0060024002402003450d00200220012d00003a0040200241013a0060024020034101460d00200220012d00013a0041200241023a006020034102460d00200220012d00023a0042200241033a006020034103460d00200220012d00033a0043200241043a006020034104460d00200220012d00043a0044200241053a006020034105460d00200220012d00053a0045200241063a006020034106460d00200220012d00063a0046200241073a006020034107460d00200220012d00073a0047200241083a006020034108460d00200220012d00083a0048200241093a006020034109460d00200220012d00093a00492002410a3a00602003410a460d00200220012d000a3a004a2002410b3a00602003410b460d00200220012d000b3a004b2002410c3a00602003410c460d00200220012d000c3a004c2002410d3a00602003410d460d00200220012d000d3a004d2002410e3a00602003410e460d00200220012d000e3a004e2002410f3a00602003410f460d00200220012d000f3a004f200241103a006020034110460d00200220012d00103a0050200241113a006020034111460d00200220012d00113a0051200241123a006020034112460d00200220012d00123a0052200241133a006020034113460d00200220012d00133a0053200241143a006020034114460d00200220012d00143a0054200241153a006020034115460d00200220012d00153a0055200241163a006020034116460d00200220012d00163a0056200241173a006020034117460d00200220012d00173a0057200241183a006020034118460d00200220012d00183a0058200241193a006020034119460d00200220012d00193a00592002411a3a00602003411a460d00200220012d001a3a005a2002411b3a00602003411b460d00200220012d001b3a005b2002411c3a00602003411c460d00200220012d001c3a005c2002411d3a00602003411d460d00200220012d001d3a005d2002411e3a00602003411e460d00200220012d001e3a005e2002411f3a00602003411f460d00200241206a41106a200241c0006a41106a290300370300200241206a41086a200241c0006a41086a290300370300200220012d001f3a005f200241206a41186a200241c0006a41186a290300370300200241203a00602002200229034022053703682002200537032020034120460d014100210302400240024020012d00200e03020001040b410121030c010b410221030b20002002290320370000200041186a200241206a41186a290300370000200041106a200241206a41106a290300370000200041086a200241206a41086a2903003700000c020b200241003a00600b20024100360270200242013703682002410a3602242002200241086a3602202002200241e8006a3602ac01200241d4006a410136020020024201370244200241909dc5003602402002200241206a360250200241ac016a419cebc000200241c0006a103d1a2002280268200228027010ef020240200228026c450d002002280268102e0b410321030b200020033a00202004450d002001102e0b200241b0016a24000be30d020f7f077e230041c0026b220224002002412036021420022001360210200241186a2001412010ed020240024002400240200228021822030d00200041033a003c0c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10ab01024002400240024020022802080d00200228020c2205200228022c4106762201200120054b1b22064106742201417f4c0d060240024020060d00410821070c010b2001102c2207450d060b02400240024020050d00410021050c010b41002108410021090340200241003a0088012009220a41016a2109200228022c210b417f210c41002101024002400240024002400340200b2001460d01200241e8006a20016a2002280228220d2d00003a00002002200b200c6a36022c2002200d41016a3602282002200141016a220e3a008801200c417f6a210c200e2101200e4120470d000b200241386a41186a2201200241e8006a41186a290300370300200241386a41106a220c200241e8006a41106a290300370300200241386a41086a220f200241e8006a41086a29030037030020022002290368370338200e41ff01714120490d0120024180026a41086a2210200f29030037030020024180026a41106a220f200c29030037030020024180026a41186a220c20012903003703002002200229033837038002200b200e6b22014110490d012002200d41116a3602282002200141706a36022c200d41096a2900002111200d2900012112200241e8006a200241286a10e9012002280268220e450d01200241c0016a41086a20102903002213370300200241c0016a41106a200f2903002214370300200241c0016a41186a200c2903002215370300200241a0016a41086a22012013370300200241a0016a41106a220c2014370300200241a0016a41186a220b2015370300200220022903800222133703c001200220133703a001200229026c2113200a2006470d04200641016a220d2006490d0e2006410174220f200d200f200d4b1b220d4104200d41044b1b220d41ffffff1f71200d46410374210f200d410674210d20060d02200241003602680c030b200141ff0171450d00200241003a0088010b0240200a450d00200741346a2101034002402001280200220c450d00200c41306c450d002001417c6a280200102e0b200141c0006a2101200841406a22080d000b0b200641ffffff1f710d050c060b20024108360270200220073602682002200641067436026c0b200241386a200d200f200241e8006a107d2002280240210d024020022802384101470d00200d0d0a0c0b0b200228023c2107200d41067621060b20012903002114200c2903002115200b290300211620022903a00121172007200a4106746a2201201237032020012017370300200120133702342001200e360230200141286a2011370300200141186a2016370300200141106a2015370300200141086a2014370300200841c0006a210820092005470d000b0b2007450d01200241e8006a200241286a10a401024020022903684201510d00200241386a41286a20024198016a290300370300200241386a41206a200241e8006a41286a290300370300200241386a41186a200241e8006a41206a290300370300200241386a41106a200241e8006a41186a290300370300200241c0006a200241e8006a41106a29030037030020022002290370370338200228022c2201450d002002280228220c2d0000210e20022001417f6a36022c2002200c41016a360228410021010240200e0e03050400010b410221010c040b02402005450d00200720054106746a210b2007210103402001220c41c0006a21010240200c41346a280200220e450d00200e41306c450d00200c41306a280200102e0b200b2001470d000b0b200641ffffff1f71450d010b2007102e0b20024100360240200242013703382002410a3602a4022002200241106a3602a0022002200241386a36028002200241fc006a41013602002002420137026c200241909dc5003602682002200241a0026a36027820024180026a419cebc000200241e8006a103d1a2002280238200228024010ef020240200228023c450d002002280238102e0b410321010c020b410121010b20002002290338370300200041286a200241386a41286a290300370300200041206a200241386a41206a290300370300200041186a200241386a41186a290300370300200041106a200241386a41106a290300370300200041086a200241386a41086a290300370300200241e8006a41026a220c200241356a41026a2d00003a0000200220022f00353b0168200020053602382000200636023420002007360230200020022f01683b003d2000413f6a200c2d00003a00000b200020013a003c2004450d002003102e0b200241c0026a24000f0b1036000b1038000b990805067f017e037f037e027f230041f0016b220224002002412036020c20022001360208200241106a2001412010ed0202400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ab010240024020022802000d00024002402002280204220520022802244105762201200120054b1b22014105742206417f4c0d000240024020010d00410121070c010b2006102c2207450d020b2001ad2108024002402005450d00410021090340200241003a00a8012002280224417f6a2101200941016a2109410021060240024002400240024003402001417f460d0120024188016a20066a2002280220220a2d00003a00002002200a41016a3602202002200641016a220a3a00a801200220013602242001417f6a2101200a2106200a4120470d000b200241d0016a41186a220120024188016a41186a290300370300200241d0016a41106a220620024188016a41106a290300370300200241d0016a41086a220b20024188016a41086a29030037030020022002290388013703d001200a41ff01714120490d01200241c8006a41086a200b290300220c370300200241c8006a41106a2006290300220d370300200241c8006a41186a2001290300220e370300200241286a41186a220a200e370300200241286a41106a220b200d370300200241286a41086a220f200c370300200220022903d001220c3703682002200c3703482002200c3703282008422088220ca722012008a7470d04200141016a22062001490d0820014101742210200620062010491b22064104200641044b1b220641ffffff3f7120064621102006410574210620010d0220024100360288010c030b200641ff0171450d00200241003a00a8010b200842ffffff3f83500d082007102e0c080b200241013602900120022007360288012002200c4205863e028c010b200241d0016a2006201020024188016a107d20022802d801210620022802d0014101460d0320022802d40121072006410576ad21080b200720014105746a22062002290328370000200641186a200a290300370000200641106a200b290300370000200641086a200f290300370000200842ffffffff0f83200141016aad42208684210820092005470d000b0b2007450d0320002008370204200020073602000c040b20060d010b1038000b1036000b200241003602d801200242013703d0012002410a3602b4012002200241086a3602b0012002200241d0016a3602682002419c016a41013602002002420137028c01200241909dc500360288012002200241b0016a36029801200241e8006a419cebc00020024188016a103d1a20022802d00120022802d80110ef02024020022802d401450d0020022802d001102e0b200041003602000b2004450d002003102e0b200241f0016a24000bf30a06087f027e027f027e017f017e230041a0016b220324002003200236021420032001360210200341186a2001200210ed0202400240024002400240200328021822010d00200041023a00000c010b200328021c21042003200341206a280200220236024c20032001360248024002402002450d0020012d0000210520032002417f6a220636024c2003200141016a3602480240024002400240024020050e020001050b20064104490d04200341c4006a41026a200341d8006a41026a2d00003a0000200341286a41086a200341f8006a41086a290300370300200341286a41106a200341f8006a41106a290300370300200341286a41186a200341f8006a41186a280200360200200320032f00583b0144200320032903783703282001280001210720032002417b6a36024c2003200141056a360248410021020c010b200341086a200341c8006a10ab0120032802080d03200328024c2202200328020c2205490d032005417f4c0d060240024020050d00410121060c010b200510322206450d08200328024c21020b20022005490d0220062003280248200510e9081a200328024c22022005490d082003200220056b36024c2003200328024820056a360248200341f8006a200341c8006a10930120032d00784101460d012003419e016a20032d007b3a0000200341d8006a41086a200341f8006a41106a290300370300200341d8006a41106a200341f8006a41186a290300370300200341d8006a41186a20034198016a2d00003a0000200320032f00793b019c012003200341f8006a41086a290300370358200328024c22024110490d01200328027c210720032003280248220841106a22093602482003200241706a220a36024c200a4104490d01200841086a290000210b2008290000210c20032002416c6a220836024c2003200941046a3602482008450d012009280000210d20032002416b6a220e36024c2003200941056a3602484100210a0240024020092d00040e020100030b200e4104490d022003200241676a36024c2003200941096a360248200928000521084101210a0b200341c4006a41026a2003419c016a41026a2d00003a0000200341286a41086a200341d8006a41086a290300370300200341286a41106a200341d8006a41106a290300370300200341286a41186a200341d8006a41186a2d00003a0000200341c3006a200341d5006a41026a2d00003a0000200320032f019c013b014420032003290358370328200320032f00553b0041410121020b200341d8006a41026a200341c4006a41026a2d000022093a0000200341f8006a41086a200341286a41086a290300220f370300200341f8006a41106a200341286a41106a2903002210370300200341f8006a41186a200341286a41186a280200220e360200200320032f014422113b0158200320032903282212370378200041036a20093a0000200020113b0001200041046a2007360000200041c8006a200b370000200041c0006a200c370000200041086a2012370000200041106a200f370000200041186a2010370000200041206a200e360000200041386a2008360000200041346a200a360000200041306a200d3600002000412c6a2005360000200041286a2005360000200041246a20063600000c030b2005450d010b2006102e0b20034100360230200342013703282003410a36025c2003200341106a3602582003200341286a36029c012003418c016a41013602002003420137027c200341909dc5003602782003200341d8006a360288012003419c016a419cebc000200341f8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b410221020b200020023a00002004450d002001102e0b200341a0016a24000f0b1038000b1036000b2005200241b8b2c0001056000bbf0302057f017e230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10ab0102400240024002402003280200450d00200341003602480c010b200341c8006a200341206a200328020410920120032802482204450d00200328024c210520032802242206410f4b0d01200541ffffff3f71450d002004102e0b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b200041003602000c010b2003200641706a36022420032003280220220641106a360220200341c8006a41086a280200210720062900002108200041186a200641086a290000370300200041106a2008370300200041086a200736020020002005360204200020043602000b2002450d002001102e0b200341e0006a24000bc20201027f23004190056b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822010d002000411c3602000c010b200328020c21022003200341106a2802003602fc04200320013602f804200341c8026a200341f8046a1098010240024020032802c8022204411c470d0020034100360220200342013703182003410a3602840520032003360280052003200341186a36028c05200341dc026a4101360200200342013702cc02200341909dc5003602c802200320034180056a3602d8022003418c056a419cebc000200341c8026a103d1a2003280218200328022010ef02200328021c450d012003280218102e0c010b200341186a200341c8026a41047241ac0210e9081a200041046a200341186a41ac0210e9081a0b200020043602002002450d002001102e0b20034190056a24000bf90202037f027e230041d0006b220224002002412036020420022001360200200241086a2001412010ed0202400240200228020822010d00200041033a00100c010b200228020c21030240024002400240200241086a41086a28020022044108490d0020044178714108460d0020044110460d00200129000021052001290008210641002104024020012d00100e03030200010b410221040c020b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241909dc5003602382002200241286a360248200241346a419cebc000200241386a103d1a2002280218200228022010ef020240200228021c450d002002280218102e0b410321040c020b410121040b2002200228003836021820022002413b6a28000036001b200020063703082000200537030020002002280218360011200041146a200228001b3600000b200020043a00102003450d002001102e0b200241d0006a24000b901308057f017e057f027e017f017e037f047e23004180026b220324002003200236020c20032001360208200341106a2001200210ed020240024002400240200328021022020d00200041023a00000c010b200328021421042003200341186a280200220536025420032002360250024002402005450d0020022d0000210120032005417f6a22063602542003200241016a3602500240024002400240024020010e020001050b2003200341d0006a10ab0120032802000d0420032802042207200328025441306e2201200120074b1bad42307e2208422088a70d082008a72201417f4c0d080240024020010d00410821090c010b2001102c2209450d080b200141306e210a0240024020070d00410021070c010b200341d8016a41017221064100210b41002105034002400240200328025422014104490d002003280250220c350000210820032001417c6a3602542003200c41046a360250200341d8016a200341d0006a10b10420032d00d801220c4102470d010b20034188016a411f6a200341b0016a411f6a29000037000020034188016a41186a200341b0016a41186a290300370300200a450d07200a41306c0d060c070b200341b0016a411f6a22012006411f6a290000370000200341b0016a41186a220d200641186a29000037030020034188016a41086a200641086a290000220e37030020034188016a41106a200641106a290000220f37030020034188016a41186a2210200d29030037030020034188016a411f6a220d200129000037000020032006290000221137038801200341e0006a411f6a2212200d290000370000200341e0006a41186a220d2010290300370300200341e0006a41106a2210200f370300200341e0006a41086a2213200e3703002003201137036002402005200a470d00200a41016a2201200a490d0b200a41017422142001201420014b1b22014104200141044b1bad42307e220e422088a7454103742101200ea7211402400240200a0d00200341003602d8010c010b200341083602e001200320093602d8012003200a41306c3602dc010b200341b0016a20142001200341d8016a107d20032802b8012101024020032802b0014101470d0020010d0b0c0c0b20032802b4012109200141306e210a0b2009200b6a22012008370300200141086a200c3a0000200141096a2003290360370000200141116a2013290300370000200141196a2010290300370000200141216a200d290300370000200141286a2012290000370000200b41306a210b2007200541016a2205470d000b0b2009450d04200328025422014110490d0220032003280250220641106a3602502003200141706a220b360254200b4110490d02200641086a290000210f200629000021112003200641206a220b3602502003200141606a220536025420054104490d02200641186a29000021082006290010210e2003200b41046a36025020032001415c6a220636025420064110490d02200b2800002106200341386a200b410c6a290000370300200341cc006a41026a200341dc006a41026a2d00003a00002003200e370320200320032f005c3b014c200320063602402003200b2900043703302003200837032820032001414c6a3602542003200b41146a360250410021010c010b20064110490d0320032005416f6a220a3602542003200241116a360250200241096a29000021082002290001210e41002101200341003a00f801416e2106024002400240024002400240024002400340200a2001460d01200341d8016a20016a200220016a220b41116a2d00003a00002003200520066a3602542003200b41126a3602502003200141016a220b3a00f8012006417f6a2106200b2101200b4120470d000b20034188016a41026a220120032d00da013a0000200320032f01d8013b018801200b41ff01714120490d0b200341ef016a290000210f20032900e701211120032d00f701210c20032800e301210720032800df01210a20032800db012109200341dc006a41026a20012d00003a0000200320032f0188013b015c2005416f6a200b460d0b2002200b6a220141116a2d0000210d2003200520066a22063602542003200141126a36025041002110200d0e07070102030405060b0b200141ff0171450d0a200341003a00f8010c0a0b410121100c050b410221100c040b410321100c030b410421100c020b410521100c010b410621100b20064110490d032003200141226a220d36025020032005200b6b220b415e6a220636025420064110490d032001411a6a2900002115200141126a29000021162003200141326a22053602502003200b414e6a220636025420064104490d032001412a6a2900002117200d2900002118200528000021062003200141366a220d3602502003200b414a6a220536025420054110490d03200341cc006a41026a200341dc006a41026a2d00003a0000200341c0006a2015370300200341206a41106a2008370300200320032f015c3b014c2003200b41ba7f6a3602542003200141c6006a360250200320163703382003200e370328200320103a00212003200c3a0020200320032801b0013601222003200341b4016a2f01003b01262001413e6a290000210e200d2900002108410121010b200341b0016a41026a200341cc006a41026a2d0000220b3a0000200341d8016a41086a2205200341206a41086a290300370300200341d8016a41106a220c200341206a41106a290300370300200341d8016a41186a220d200341206a41186a290300370300200341d8016a41206a2210200341206a41206a290300370300200320032f014c22123b01b001200320032903203703d801200041186a200f370000200041106a2011370000200041036a200b3a0000200020123b00012000410c6a2007360000200041086a200a360000200041046a2009360000200041e8006a2006360000200041e0006a200e370000200041d8006a2008370000200041d0006a2017370000200041c8006a2018370000200041206a20032903d801370000200041286a2005290300370000200041306a200c290300370000200041386a200d290300370000200041c0006a20102903003700000c030b200a450d01200a41306c450d010b2009102e0b20034100360228200342013703202003410a3602b4012003200341086a3602b0012003200341206a36028801200341ec016a4101360200200342013702dc01200341909dc5003602d8012003200341b0016a3602e80120034188016a419cebc000200341d8016a103d1a2003280220200328022810ef0202402003280224450d002003280220102e0b410221010b200020013a00002004450d002002102e0b20034180026a24000f0b1036000b1038000b8a0b02027f067e230041d0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041023a00300c010b200341186a280200210220032802142104200341003a008801024002402002450d00200320012d00003a0068200341013a008801024020024101460d00200320012d00013a0069200341023a00880120024102460d00200320012d00023a006a200341033a00880120024103460d00200320012d00033a006b200341043a00880120024104460d00200320012d00043a006c200341053a00880120024105460d00200320012d00053a006d200341063a00880120024106460d00200320012d00063a006e200341073a00880120024107460d00200320012d00073a006f200341083a00880120024108460d00200320012d00083a0070200341093a00880120024109460d00200320012d00093a00712003410a3a0088012002410a460d00200320012d000a3a00722003410b3a0088012002410b460d00200320012d000b3a00732003410c3a0088012002410c460d00200320012d000c3a00742003410d3a0088012002410d460d00200320012d000d3a00752003410e3a0088012002410e460d00200320012d000e3a00762003410f3a0088012002410f460d00200320012d000f3a0077200341103a00880120024110460d00200320012d00103a0078200341113a00880120024111460d00200320012d00113a0079200341123a00880120024112460d00200320012d00123a007a200341133a00880120024113460d00200320012d00133a007b200341143a00880120024114460d00200320012d00143a007c200341153a00880120024115460d00200320012d00153a007d200341163a00880120024116460d00200320012d00163a007e200341173a00880120024117460d00200320012d00173a007f200341183a00880120024118460d00200320012d00183a008001200341193a00880120024119460d00200320012d00193a0081012003411a3a0088012002411a460d00200320012d001a3a0082012003411b3a0088012002411b460d00200320012d001b3a0083012003411c3a0088012002411c460d00200320012d001c3a0084012003411d3a0088012002411d460d00200320012d001d3a0085012003411e3a0088012002411e460d00200320012d001e3a0086012003411f3a0088012002411f460d00200341c8006a41106a200341e8006a41106a290300370300200341c8006a41086a200341e8006a41086a290300370300200320012d001f3a008701200341c8006a41186a200341e8006a41186a290300370300200341203a0088012003200329036822053703900120032005370348200241606a22024110490d0120024110460d01200141286a290000210520012900202106410021020240024020012d00300e020100030b410121020b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200320032800413602682003200341c4006a28000036006b20002005370308200020063703002000200a370310200041186a2009370300200041206a2008370300200041286a2007370300200041346a200328006b360000200020032802683600310c020b200341003a0088010b200341003602980120034201370390012003410a36024c2003200341086a360248200320034190016a360220200341fc006a41013602002003420137026c200341909dc5003602682003200341c8006a360278200341206a419cebc000200341e8006a103d1a20032802900120032802980110ef020240200328029401450d00200328029001102e0b410221020b200020023a00302004450d002001102e0b200341d0016a24000bf80403047f017e067f230041f0006b220324002003200236021c20032001360218200341206a2001200210ed0202400240200328022022010d00200041003602080c010b200328022421042003200341286a2802002202360234200320013602300240024020024104490d00200128000021052003200141046a36023020032002417c6a220636023420064104490d00200128000421062003200241786a3602342003200141086a360230200341106a200341306a10ab0102402003280210450d00200341003602580c010b200341d8006a200341306a200328021410920120032802582202450d00200329025c2107200341086a200341306a10ab01024002402003280208450d00200341003602580c010b200341d8006a200341306a200328020c10920120032802582208450d00200328025c210902402003280234220a4104490d00200341e0006a280200210b2003280230220c280000210d2003200a417c6a3602342003200c41046a3602302002450d022000200737020c200020023602082000200636020420002005360200200041206a200d3602002000411c6a200b360200200041186a2009360200200041146a20083602000c030b200941ffffff3f71450d002008102e0b200742ffffff3f83500d002002102e0b20034100360240200342013703382003410a36024c2003200341186a3602482003200341386a360254200341ec006a41013602002003420137025c200341909dc5003602582003200341c8006a360268200341d4006a419cebc000200341d8006a103d1a2003280238200328024010ef020240200328023c450d002003280238102e0b200041003602080b2004450d002001102e0b200341f0006a24000ba40c03057f027e0c7f230041f0016b220324002003200236020420032001360200200341086a2001200210ed0202400240200328020822040d00200041023602100c010b200328020c21052003200341106a280200220636025c2003200436025841002101200341003a00a8012006417f6a21020240024002400240024002400240034020062001460d0120034188016a20016a200420016a22072d00003a00002003200741016a3602582003200141016a22073a00a8012003200236025c2002417f6a21022007210120074120470d000b200341d0016a41186a220120034188016a41186a290300370300200341d0016a41106a220220034188016a41106a290300370300200341d0016a41086a220620034188016a41086a29030037030020032003290388013703d001200741ff01714120490d03200341e8006a41086a2006290300370300200341e8006a41106a2002290300370300200341e8006a41186a2001290300370300200320032903d00137036820034188016a200341d8006a10930120032d0088014101460d03200341b0016a41186a200341a1016a2201290000370300200341b0016a41106a20034199016a2202290000370300200341b0016a41086a20034191016a220729000037030020032003290089013703b00120034188016a200341d8006a10930120032d0088014101460d03200341d0016a41186a2001290000370300200341d0016a41106a2002290000370300200341d0016a41086a200729000037030020032003290089013703d001200328025c22024110490d032003200241706a220636025c20032003280258220141106a22073602582006450d03200141086a29000021082001290000210920032002416f6a220636025c2003200741016a3602584100210120072d00000e020201030b200141ff0171450d02200341003a00a8010c020b20064104490d0120032002416b6a36025c2003200741056a3602582007280001210a410121010b20034188016a200341d8006a10e9012003280288012207450d00200328028c0121020240200328025c2206450d0020034190016a280200210b2003280258220c2d0000210d20032006417f6a36025c2003200c41016a36025841002106200d0e020302000b2002450d00200241306c450d002007102e0b200341003602d801200342013703d0012003410a3602b401200320033602b0012003200341d0016a3602682003419c016a41013602002003420137028c01200341909dc500360288012003200341b0016a36029801200341e8006a419cebc00020034188016a103d1a20032802d00120032802d80110ef02024020032802d401450d0020032802d001102e0b410221010c020b410121060b20034188016a41186a220c200341e8006a41186a29030037030020034188016a41106a220d200341e8006a41106a29030037030020034188016a41086a220e200341e8006a41086a290300370300200341386a41086a220f200341b0016a41086a290300370300200341386a41106a2210200341b0016a41106a290300370300200341386a41186a2211200341b0016a41186a290300370300200341186a41086a2212200341d0016a41086a290300370300200341186a41106a2213200341d0016a41106a290300370300200341186a41186a2214200341d0016a41186a2903003703002003200329036837038801200320032903b001370338200320032903d001370318200341146a41026a2215200341e5006a41026a2d00003a0000200320032f00653b01142000200837030820002009370300200041206a200b3602002000411c6a2002360200200041186a20073602002000200a360214200041246a2003290388013702002000412c6a200e290300370200200041346a200d2903003702002000413c6a200c290300370200200041c4006a2003290338370200200041cc006a200f290300370200200041d4006a2010290300370200200041dc006a2011290300370200200041fc006a2014290300370200200041f4006a2013290300370200200041ec006a2012290300370200200041e4006a200329031837020020004184016a20063a000020004187016a20152d00003a0000200020032f01143b0085010b200020013602102005450d002004102e0b200341f0016a24000bfc0d05037f017e097f027e057f230041c0016b22022400200241086a200110ab0102400240024020022802080d00200228020c2203200128020441246e2204200420034b1bad42247e2205422088a70d022005a72204417f4c0d0202400240024020040d00410421060c010b2004102c2206450d010b200441246ead2105024002402003450d002002413d6a21072002418b016a220841056a21094100210a03400240024002402001280204220b450d002001280200220c2d000021042001200b417f6a220d3602042001200c41016a3602000240024002400240024002400240024002400240024020040e08000b010b030402050b0b2002200110ab0120022802000d0a2001280204220b20022802042204490d0a2004417f4c0d130240024020040d004101210e0c010b20041032220e450d112001280204210b0b200b2004490d06200e2001280200200410e908210b2001280204220c20044f0d052004200c41b8b2c0001056000b41002104200241003a009801200b417e6a210b02400340200d2004460d01200241f8006a20046a200c20046a220e41016a2d00003a00002001200b3602042001200e41026a3602002002200441016a220e3a009801200b417f6a210b200e2104200e4120460d090c000b0b200441ff0171450d09200241003a0098010c090b200241f8006a200110aa01200228027c220c450d0820022f017820022d007a41107472210b20022d007b210e200229038001220f428080808070832110200fa7210d410121110c070b200241f8006a200110aa01200228027c220c450d0720022f017820022d007a41107472210b20022d007b210e200229038001220f428080808070832110200fa7210d410221110c060b200241f8006a200110aa01200228027c220c450d0620022f017820022d007a41107472210b20022d007b210e200229038001220f428080808070832110200fa7210d410321110c050b200d450d05200c2d000121042001200b417e6a3602042001200c41026a36020020040d05200241b0016a200110fe0520022802b001220e4102460d05200241306a41086a200241f8006a41086a2902003703002002200229027837033020022802b801210d20022802b401210c4104211142002110410021120c020b2001200c20046b3602042001200128020020046a360200200b450d04200241306a41086a200241f8006a41086a29020037030020022002290278370330200b41087621122004ad220f422086200f84220f422088a7210d200fa7210c41052111420021100c010b200e102e0c030b0c010b200220082900003703b001200220092900003700b501200220022903b0013703a001200220022900b5013700a501200e41ff0171411f4d0d0120022f017820022d007a41107472210b200228007b210e200228007f210c200229008301210f200220022900a50137006d200220022903a0013703682002200229006d37005d20022002290368370358200220022903583703482002200229005d37004d2002200229004d37003520022002290348370330200720022f00453b0000200741026a200241c5006a41026a2d00003a0000200f428080808070832110200e4108762112200fa7210d410021110b200241206a41086a200241306a41086a290300220f370300200241106a41086a2213200f37030020022002290330220f3703202002200f3703102005422088220fa722042005a7470d02200441016a221420044f0d010c090b02402005422088a72201450d00200141246c21042006210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012004415c6a22040d000b0b2005a72201450d06200141246c450d062006102e0c060b20044101742215201420142015491b22144104201441044b1bad42247e220f422088a7454102742114200fa721150240024020040d00200241003602780c010b2002410436028001200220063602782002200441246c36027c0b200241306a20152014200241f8006a107d2002280238211420022802304101460d03200228023421062005422088220fa72104201441246ead21050b2006200441246c6a22042010200dad8437000c2004200c36000820042012410874200e41ff0171723600042004200b3b0001200420113a0000200441036a200b4110763a0000200420022903103700142004411c6a2013290300370000200f422086200542ffffffff0f83844280808080107c2105200a41016a220a2003470d000b0b2006450d0220002005370204200020063602000c030b2014450d030b1036000b200041003602000b200241c0016a24000f0b1038000bd00905057f017e047f017e017f230041f0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ab010240024020032802000d00024002402003280204220620032802244105762201200120064b1b22014105742202417f4c0d000240024020010d00410121070c010b2002102c2207450d020b2001ad2108024002402006450d00410021090340200341003a00a8012003280224417f6a2101200941016a2109410021020240024002400240024003402001417f460d0120034188016a20026a2003280220220a2d00003a00002003200a41016a3602202003200241016a220a3a00a801200320013602242001417f6a2101200a2102200a4120470d000b200341b0016a41086a220220034188016a41086a290300370300200341b0016a41106a220b20034188016a41106a290300370300200341b0016a41186a220c20034188016a41186a29030037030020032003290388013703b001410121010240200a41ff01714120490d00200341e8006a41186a200c290300370300200341e8006a41106a200b290300370300200341e8006a41086a2002290300370300200320032903b001370368410021010b200341c8006a41086a2202200341e8006a41086a290300370300200341c8006a41106a220a200341e8006a41106a290300370300200341c8006a41186a220b200341e8006a41186a2903003703002003200329036837034820010d01200341286a41186a220c200b290300370300200341286a41106a220b200a290300370300200341286a41086a220a2002290300370300200320032903483703282008422088220da722012008a7470d04200141016a22022001490d082001410174220e20022002200e491b22024104200241044b1b220241ffffff3f71200246210e2002410574210220010d0220034100360288010c030b0240200241ff0171450d00200341003a00a8010b200341c8006a41086a200341e8006a41086a290300370300200341c8006a41106a200341e8006a41106a290300370300200341c8006a41186a200341e8006a41186a290300370300200320032903683703480b200842ffffff3f83500d082007102e0c080b200341013602900120032007360288012003200d4205863e028c010b200341b0016a2002200e20034188016a107d20032802b801210220032802b0014101460d0320032802b40121072002410576ad21080b200720014105746a22022003290328370000200241186a200c290300370000200241106a200b290300370000200241086a200a290300370000200842ffffffff0f83200141016aad42208684210820092006470d000b0b2007450d0320002008370204200020073602000c040b20020d010b1038000b1036000b200341003602b801200342013703b0012003410a36026c2003200341086a3602682003200341b0016a3602482003419c016a41013602002003420137028c01200341909dc500360288012003200341e8006a36029801200341c8006a419cebc00020034188016a103d1a20032802b00120032802b80110ef02024020032802b401450d0020032802b001102e0b200041003602000b2005450d002004102e0b200341f0016a24000bf40201037f230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041003602040c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d002001280000210520032002417c6a3602242003200141046a3602202003200341206a10ab0102402003280200450d00200341003602480c010b200341c8006a200341206a200328020410920120032802482202450d002000200329024c37020820002002360204200020053602000c010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b200041003602040b2004450d002001102e0b200341e0006a24000bf90604027f027e077f017e230041b0016b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200042003703000c010b200328021421022003200341106a41086a2802003602442003200136024020034188016a200341c0006a10930102400240024020032d0088014101460d00200341e0006a200341a1016a290000370300200341c8006a41106a20034199016a290000370300200341c8006a41086a20034191016a2900003703002003200329008901370348200328024422044110490d002003200441706a36024420032003280240220441106a360240200441086a29000021052004290000210620034188016a200341c0006a10930120032d0088014101460d00200341e8006a41186a2204200341a1016a290000370300200341e8006a41106a220720034199016a290000370300200341e8006a41086a20034191016a29000037030020032003290089013703682003280244220841104f0d010b20034100360270200342013703682003410a36024c2003200341086a3602482003200341e8006a3602202003419c016a41013602002003420137028c01200341909dc500360288012003200341c8006a36029801200341206a419cebc00020034188016a103d1a2003280268200328027010ef020240200328026c450d002003280268102e0b420021050c010b20034188016a41086a2209200341c8006a41086a29030037030020034188016a41106a220a200341c8006a41106a29030037030020034188016a41186a220b200341c8006a41186a290300370300200341206a41086a220c200341e8006a41086a290300370300200341206a41106a220d2007290300370300200341206a41186a220720042903003703002003200329034837038801200320032903683703202003200841706a36024420032003280240220441106a3602402004290000210e200041206a200441086a290000370300200041186a200e370300200041106a200537030020002006370308200041286a200329038801370300200041306a2009290300370300200041386a200a290300370300200041c0006a200b290300370300200041c8006a2003290320370300200041d0006a200c290300370300200041d8006a200d290300370300200041e0006a2007290300370300420121050b200020053703002002450d002001102e0b200341b0016a24000bd10102037f017e230041206b22032400200341003602082003420137030020022802202104200241286a28020022052003107602402005450d002005410574210503402003200441201074200441206a2104200541606a22050d000b0b200229030021062003200241086a290300370318200320063703102003200341106a41101074200229031021062003200241186a290300370318200320063703102003200341106a411010742000200120032802002204200328020810b20102402003280204450d002004102e0b200341206a24000bb70102027f017e230041206b2203240002404124102c2204450d002003422437020420032004360200200229030021052003200241086a290300370318200320053703102003200341106a41101074200229031021052003200241186a290300370318200320053703102003200341106a41101074200320022802203602102003200341106a410410742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000f0b1036000b9e0303027f017e017f230041206b22032400200341003602082003420137030002404120102c2204450d002003422037021420032004360210200341106a200241246a412010742003200328021022042003280218107402402003280214450d002004102e0b2003200241c4006a412010742003200241e4006a41201074200229030021052003200241086a290300370318200320053703102003200341106a411010740240024020022802104101460d00200341003a00102003200341106a410110740c010b200341013a00102003200341106a410110742003200241146a2802003602102003200341106a410410740b20022802182104200241206a2802002206200310760240200641306c2206450d00200420066a210603402003200441201074200441206a29030021052003200441286a290300370318200320053703102003200341106a41101074200441306a22042006470d000b0b200320022d0084013a00102003200341106a410110742000200120032802002204200328020810b20102402003280204450d002004102e0b200341206a24000f0b1036000b9b0302027f017e230041106b2202240002400240024020002d00004101460d00200241003a000020012002410110742002200041386a28020036020020012002410410744120102c2203450d0220024220370204200220033602002002200041c0006a412010742001200228020022032002280208107402402002280204450d002003102e0b0240024002400240200041e0006a2d00000e03000102030b200241003a000020012002410110740c020b200241013a000020012002410110740c010b200241023a000020012002410110740b20022000413c6a2802003602002001200241041074200029030821042002200041106a290300370308200220043703002001200241101074200041186a29030021042002200041206a290300370308200220043703002001200241101074200041286a29030021042002200041306a2903003703082002200437030020012002411010740c010b200241013a00002001200241011074200220002d00013a000020012002410110742002200041046a28020036020020012002410410740b200241106a24000f0b1036000bd80102047f017e230041206b22022400024002402001280208220341306c4104722204417f4c0d00200128020021012004102c2205450d012002410036020820022004360204200220053602002003200210760240200341306c2203450d00200120036a210303402002200141201074200141206a29030021062002200141286a290300370318200220063703102002200241106a41101074200141306a22012003470d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241206a24000f0b1038000b1036000b810201037f230041106b2203240020034100360208200342013703002003200228020036020c20032003410c6a410410742003200228020436020c20032003410c6a4104107420022802082104200241106a28020022052003107602402005450d002005410574210503402003200441201074200441206a2104200541606a22050d000b0b200228021421042002411c6a28020022052003107602402005450d002005410574210503402003200441201074200441206a2104200541606a22050d000b0b2003200228022036020c20032003410c6a410410742000200120032802002204200328020810b20102402003280204450d002004102e0b200341106a24000bc90101047f230041106b22032400024002402002410c6a28020022044105742205410472417b4c0d0020054108722205102c2206450d012003410036020820032005360204200320063602002003200228020036020c20032003410c6a410410742002280204210220042003107602402004450d002004410574210403402003200241201074200241206a2102200441606a22040d000b0b2000200120032802002202200328020810b20102402003280204450d002002102e0b200341106a24000f0b1038000b1036000b810201037f230041106b2203240020034100360208200342013703002003200228020036020c20032003410c6a410410742003200228020436020c20032003410c6a4104107420022802082104200241106a28020022052003107602402005450d002005410574210503402003200441201074200441206a2104200541606a22050d000b0b200228021421042002411c6a28020022052003107602402005450d002005410574210503402003200441201074200441206a2104200541606a22050d000b0b2003200228022036020c20032003410c6a410410742000200120032802002204200328020810b20102402003280204450d002004102e0b200341106a24000bac0101047f230041106b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102c2205450d0120024100360208200220043602042002200536020020032002107602402003450d002003410574210303402002200141201074200141206a2101200341606a22030d000b0b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241106a24000f0b1038000b1036000bc90101017f230041206b22042400200441003602102004420137030820042001370318200441086a200441186a4108107420042002370318200441086a200441186a410810740240024002400240200341ff01710e03000102030b200441003a0018200441086a200441186a410110740c020b200441013a0018200441086a200441186a410110740c010b200441023a0018200441086a200441186a410110740b2000412020042802082203200428021010b2010240200428020c450d002003102e0b200441206a24000b970101047f230041106b22032400024002402002280208220441046a2205417f4c0d00200228020021020240024020050d00410121060c010b2005102c2206450d020b20034100360208200320053602042003200636020020042003107620032002200410742000200120032802002205200328020810b20102402003280204450d002005102e0b200341106a24000f0b1038000b1036000b9c0101047f230041106b22022400024002402001280208220341c4006c41046a2204417f4c0d00200128020021010240024020040d00410121050c010b2004102c2205450d020b200241003602082002200436020420022005360200200320021076200120032002109b012000412020022802002204200228020810b20102402002280204450d002004102e0b200241106a24000f0b1038000b1036000ba00101037f230041106b220324000240024020024105744104722204417f4c0d002004102c2205450d0120034100360208200320043602042003200536020020022003107602402002450d002002410574210203402003200141201074200141206a2101200241606a22020d000b0b2000412020032802002201200328020810b20102402003280204450d002001102e0b200341106a24000f0b1038000b1036000b9c0102027f017e230041206b2203240002404111102c2204450d0020034211370204200320043602002003200241106a41201074200229030021052003200241086a290300370318200320053703102003200341106a41101074200320022d00303a00102003200341106a410110742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000f0b1036000b9c0101057f230041106b220224000240024020012802082203410274220441046a2205417f4c0d00200128020021010240024020050d00410121060c010b2005102c2206450d020b20024100360208200220053602042002200636020020032002107620022001200410742000412020022802002205200228020810b20102402002280204450d002005102e0b200241106a24000f0b1038000b1036000bb20202017f017e230041206b220324002003410036020820034201370300200320022802403602102003200341106a41041074200320022802443602102003200341106a41041074200320022802483602102003200341106a410410742003200228024c3602102003200341106a41041074200229030021042003200241086a290300370318200320043703102003200341106a41101074200229031021042003200241186a290300370318200320043703102003200341106a41101074200229032021042003200241286a290300370318200320043703102003200341106a41101074200229033021042003200241386a290300370318200320043703102003200341106a411010742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000bb20202017f017e230041206b220324002003410036020820034201370300200320022802403602102003200341106a41041074200320022802443602102003200341106a41041074200320022802483602102003200341106a410410742003200228024c3602102003200341106a41041074200229030021042003200241086a290300370318200320043703102003200341106a41101074200229031021042003200241186a290300370318200320043703102003200341106a41101074200229032021042003200241286a290300370318200320043703102003200341106a41101074200229033021042003200241386a290300370318200320043703102003200341106a411010742000200120032802002202200328020810b20102402003280204450d002002102e0b200341206a24000bdd0101027f230041206b22022400200241003602082002420137030002404120102c2203450d002002422037021420022003360210200241106a2001412010742002200228021022032002280218107402402002280214450d002003102e0b024002400240024020012d00200e03000102030b200241003a00102002200241106a410110740c020b200241013a00102002200241106a410110740c010b200241023a00102002200241106a410110740b2000412020022802002201200228020810b20102402002280204450d002001102e0b200241206a24000f0b1036000bae0301037f230041f0006b22032400200341086a4192fdc6004107108102200341186a4190a0c5004113108102200320013602382003200341386a410410a301370348200341ec006a2201200341386a41046a3602002003200341c8006a41086a3602642003200341386a3602682003200341c8006a360260200341286a200341e0006a107c024002404120102c2204450d002003422037024c20032004360248200341c8006a2002412010742003200328024822022003280250220410a3013703582001200220046a360200200320023602682003200341d8006a41086a3602642003200341d8006a360260200341386a200341e0006a107c0240200328024c450d002002102e0b20032802302201200328024022046a41206a2202417f4c0d010240024020020d00410121050c010b2002102c2205450d010b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341f0006a24000f0b1036000b1038000bae0301037f230041f0006b22032400200341086a4192fdc6004107108102200341186a41fd9fc5004113108102200320013602382003200341386a410410a301370348200341ec006a2201200341386a41046a3602002003200341c8006a41086a3602642003200341386a3602682003200341c8006a360260200341286a200341e0006a107c024002404120102c2204450d002003422037024c20032004360248200341c8006a2002412010742003200328024822022003280250220410a3013703582001200220046a360200200320023602682003200341d8006a41086a3602642003200341d8006a360260200341386a200341e0006a107c0240200328024c450d002002102e0b20032802302201200328024022046a41206a2202417f4c0d010240024020020d00410121050c010b2002102c2205450d010b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341f0006a24000f0b1036000b1038000bca0201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41a3a0c5004109108102024002404104102c2203450d002002420437023c20022003360238200241386a20014120107420022001280220360250200241386a200241d0006a410410742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bdd0302077f017e230041f0006b22022400200241086a200110cf052002280208210120022002280210220336021c20022001360218200241206a2001200310ed0202400240200228022022030d00410021040c010b200228022421052002200241286a2802002204360234200220033602300240024020044104490d00200328000021062002200341046a36023020022004417c6a220736023420074104490d002002200341086a360230200328000421072002200441786a220836023420084104490d002002200441746a36023420022003410c6a36023020032800082108200241d8006a200241306a10e70120022802582204450d00200229025c21090c010b4100210420024100360240200242013703382002410a36024c2002200241186a3602482002200241386a360254200241ec006a41013602002002420137025c200241909dc5003602582002200241c8006a360268200241d4006a419cebc000200241d8006a103d1a2002280238200228024010ef020240200228023c450d002002280238102e0b0b02402005450d002003102e0b024020040d00410021040c010b200020093702102000200836020820002007360204200020063602000b2000200436020c0240200228020c450d002001102e0b200241f0006a24000bb10201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41aca0c500410d108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bd60101037f230041206b220224002002200010cf05200228020821032002280200210020024100360218200242013703102002200128020036021c200241106a2002411c6a410410742002200128020436021c200241106a2002411c6a410410742002200128020836021c200241106a2002411c6a41041074200128020c2104200141146a2802002201200241106a1076200241106a2004200141027410742000200320022802102201200228021810b20102402002280214450d002001102e0b02402002280204450d002000102e0b200241206a24000bb10201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41dfa2c500410a108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000ba30201047f230041206b220224002002200010d30520022802082103200228020021042002410036021820024201370310200241106a200141386a412010742002200136021c2002411c6a200241106a10af012002200141106a36021c2002411c6a200241106a10af0120012802202100200141286a2802002205200241106a10760240200541186c2205450d00200020056a210503402002200036021c2002411c6a200241106a10af01200041106a200241106a109102200041186a22002005470d000b0b200128022c2100200141346a2802002205200241106a1076200241106a2000200541027410742004200320022802102200200228021810b20102402002280214450d002000102e0b02402002280204450d002004102e0b200241206a24000bac0201037f230041e0006b2202240020024192fdc6004107108102200241106a41e9a2c5004106108102024002404120102c2203450d002002422037023420022003360230200241306a200141201074200241c0006a200228023022012002280238220310d803200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a107c02402002280234450d002001102e0b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241e0006a24000f0b1036000b1038000b130020004117360204200041f0a2c5003602000b340020004192fdc60036020420004100360200200041146a411e360200200041106a419095c600360200200041086a42073702000b3401017f230041106b220224002000410036020820004201370200200241053a000f20002002410f6a41011074200241106a24000b4e01017f230041106b2202240020004100360208200042013702002002420037030820024200370300200020024110107420024200370308200242003703002000200241101074200241106a24000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410841002000109d010b4601027f230041106b2202240002404110102c22030d001036000b200042103702042000200336020020024200370308200242003703002000200241101074200241106a24000b5901027f230041206b220224002000410036020820004201370200200241106a4200370300200241003602082002410036021c20002002411c6a41041074200241086a4104722203200010f201200310bc02200241206a24000b4901017f230041106b220224002000410036020820004201370200200241003a00042002410036020020022000109102200241003a000f20002002410f6a41011074200241106a24000bf20101037f230041c0006b220224002000410036020820004201370200200241206a4200370300200241086a41106a22034200370300200241106a4200370300200241306a2204410036020020024200370308200242083703282002200241086a36023c2002413c6a200010af012002200336023c2002413c6a200010af0120022802282103200428020022042000107602402004450d00200441306c210403402000200341106a412010742002200336023c2002413c6a200010af01200341306a2103200441506a22040d000b0b0240200228022c2203450d00200341306c450d002002280228102e0b200241c0006a24000b2601017f02404104102c22020d001036000b20004204370204200020023602004100200010760b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241d40036020c20002002410c6a41041074200241106a24000b130020004105360204200041c4d5c6003602000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002411036020c20002002410c6a41041074200241106a24000b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241800236020c20002002410c6a41041074200241106a24000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002411b36020c20002002410c6a41041074200241106a24000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002411c36020c20002002410c6a41041074200241106a24000b4201027f230041106b2202240002404104102c22030d001036000b20004204370204200020033602002002410636020c20002002410c6a41041074200241106a24000bb10201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41c4abc6004106108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bd30908017f047e027f017e027f027e047f017e230041e0016b220324002003200236025c20032001360258200341e0006a2001200210ed02024002400240200328026022010d00200041003602200c010b200328026421022003200341e0006a41086a280200360284012003200136028001200341a8016a20034180016a10930102400240024020032d00a8014101460d00200341a0016a200341c1016a29000037030020034188016a41106a200341b9016a29000037030020034188016a41086a200341b1016a290000370300200320032900a90137038801200341c0006a20034180016a10db042003290340a70d00200341c0006a41106a290300210420032903482105200341286a20034180016a10db042003290328a70d00200341286a41106a290300210620032903302107200341206a20034180016a10ab0120032802200d000240024002402003280224220820032802840141186e2209200920084b1bad42187e220a422088a70d00200aa72209417f4c0d000240024020090d004108210b0c010b2009102c220b450d080b200941186ead210a024002402008450d00200341186a210c0340200341086a20034180016a10db042003290308a70d04200c290300210d2003290310210e200320034180016a10ab0120032802000d042003280204210f0240200a422088a72210200aa72209470d00200941016a22112009490d04200941017422122011201220114b1b22114104201141044b1bad42187e2213422088a74541037421112013a721120240024020090d00200341003602a8010c010b200341083602b0012003200b3602a8012003200941186c3602ac010b200341d0016a20122011200341a8016a107d20032802d801210920032802d0014101460d0320032802d401210b200a42808080807083200941186ead84210a0b200b201041186c6a2209200d3703082009200e3703002009200f360210200a4280808080107c210a2008417f6a22080d000b0b200b450d04200341d0016a20034180016a10e70120032802d0010d05200aa72209450d04200941186c0d030c040b20090d070b1038000b200aa72209450d01200941186c450d010b200b102e0b200341003602900120034201370388012003410a3602d4012003200341d8006a3602d001200320034188016a360270200341bc016a4101360200200342013702ac01200341909dc5003602a8012003200341d0016a3602b801200341f0006a419cebc000200341a8016a103d1a20032802880120032802900110ef020240200328028c01450d00200328028801102e0b200041003602200c010b200341f0006a41086a2209200341d0016a41086a280200360200200341a8016a41086a220820034188016a41086a290300370300200341a8016a41106a220f20034188016a41106a290300370300200341a8016a41186a221020034188016a41186a290300370300200320032903d00137037020032003290388013703a801200041186a20063703002000200737031020002004370308200020053703002000200a3702242000200b3602202000412c6a2003290370370200200041346a2009280200360200200041386a20032903a801370300200041c0006a2008290300370300200041c8006a200f290300370300200041d0006a20102903003703000b2002450d002001102e0b200341e0016a24000f0b1036000ba20201037f230041106b220224002001280208210302404101102c2204450d0020004201370204200020043602000240024020030d00200241003a00032000200241036a410110740c010b200241013a00032000200241036a41011074200220012802003602042000200241046a41041074200220012802043602082000200241086a41041074200128021022042000107602402004450d002004410574210403402000200341201074200341206a2103200441606a22040d000b0b200141146a28020021032001411c6a28020022042000107602402004450d002004410574210403402000200341201074200341206a2103200441606a22040d000b0b2002200141206a28020036020c20002002410c6a410410740b200241106a24000f0b1036000bbd0401047f230041106b2202240020002802042103024002400240024020002802004101470d002000410c6a280200220041046a2204417f4c0d020240024002400240024020040d002002410036020820022004360204200241013602000c010b2004102c2205450d07200241003602082002200436020420022005360200200041c000490d01200041808001490d022000418080808004490d030b200241033a000c20022002410c6a410110742002200036020c20022002410c6a4104107420022003200010740c040b200220004102743a000c20022002410c6a4101107420022003200010740c030b200220004102744101723b010c20022002410c6a4102107420022003200010740c020b2002200041027441027236020c20022002410c6a4104107420022003200010740c010b200041086a280200220041046a2204417f4c0d0102400240024002400240024020040d002002410036020820022004360204200241013602000c010b2004102c2205450d07200241003602082002200436020420022005360200200041c000490d01200041808001490d022000418080808004490d030b200241031091012002200036020c20022002410c6a410410740c030b200220004102741091010c020b200220004102744101723b010c20022002410c6a410210740c010b2002200041027441027236020c20022002410c6a410410740b20022003200010740b200120022802002002280208107402402002280204450d002002280200102e0b200241106a24000f0b1038000b1036000b884c09047f017e037f027e077f017e037f017e2a7f23004190056b22032400200341d8006a4192fdc600410710810220034190016a41dfa2c500410a10810202404120102c2204450d00200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107402400240024020032802c8042204417f4c0d0020032802c00421050240024020040d00410121060c010b2004102c2206450d040b20062005200410e9082105200341e8036a41086a200341c0046a41086a2802002206360200200320032903c00422073703e803200341ec006a2006360200200341f7006a200341c0046a41026a2d00003a0000200320043602602003200436025c200320053602582003200737026441002108200341003a00742003410c360270200320032f00c0043b007520034190016a200341d8006a10eb050240200341c0016a2d00004102460d00410021080340024020032802b40141ffffff3f71450d0020032802b001102e0b200841016a210820034190016a200341d8006a10eb0520032d00c0014102470d000b0b0240200328025c450d002003280258102e0b0240200341e8006a280200450d002003280264102e0b200341d8006a4192fdc600410710810220034190016a41f09dc500410a1081024120102c2204450d03200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107420032802c8042204417f4c0d0020032802c00421050240024020040d00410121060c010b2004102c2206450d040b20062005200410e9082105200341e8036a41086a200341c0046a41086a2802002206360200200320032903c00422073703e803200341ec006a2006360200200341f7006a200341c0046a41026a2d00003a0000200320043602602003200436025c200320053602582003200737026441002109200341003a00742003410d360270200320032f00c0043b007520034190016a200341d8006a108c050240200341b4016a2d00004102460d00410021090340200941016a210920034190016a200341d8006a108c0520032d00b4014102470d000b0b0240200328025c450d002003280258102e0b0240200341e8006a280200450d002003280264102e0b02402001450d00417f200820096a220420042008491b20024d0d00200041e0eac60036020420004101360200200041086a41163602000c030b200341d8006a4192fdc600410710810220034190016a41aca0c500410d1081024120102c2204450d03200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107420032802c8042204417f4c0d0020032802c00421010240024020040d00410121050c010b2004102c2205450d040b20052001200410e9082101200341e8036a41086a200341c0046a41086a2802002205360200200320032903c00422073703e803200341ec006a2005360200200341f7006a200341c2046a2d00003a0000200320043602602003200436025c20032001360258200320073702644100210a200341003a00742003410e360270200320032f00c0043b007520034190016a200341d8006a108d05024020032802bc012204450d004100210a0340024020032802c00141ffffffff0371450d002004102e0b200a41016a210a20034190016a200341d8006a108d0520032802bc0122040d000b0b0240200328025c450d002003280258102e0b0240200341d8006a41106a280200450d002003280264102e0b200341d8046a22044200370300200341c0046a41106a22014200370300200341c0046a41086a22054200370300200342003703c00420034190016a41f8fcc6004108108102200520034190016a41086a220629000037030020032003290090013703c00420034190016a41a8aac800410d1081022004200629000037030020012003290090013703002003200341c0046a412010f802200341106a29030021072003290308210b2003290300210c4110102c220d450d03200d200b4200200ca722041b370300200d2007420020041b370308200341d8006a4192fdc600410710810220034190016a41f09dc500410a1081024120102c2204450d03200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107420032802c8042204417f4c0d0020032802c00421010240024020040d00410121050c010b2004102c2205450d040b20052001200410e90821014108210e200341c8016a41086a200341c0046a41086a2802002205360200200341386a41026a220620034190016a41026a2d00003a0000200320032903c00422073703c801200320032f0090013b0138200341ac036a2005360200200320043602a0032003200436029c032003200136029803200320073702a4034100210f200341003a00b4032003410d3602b003200341b7036a20062d00003a0000200320032f01383b00b50320034190016a20034198036a108c05410021100240200341b4016a2d00004102460d0041002111410021124100210f410021104108210e0340200341d8006a41206a20034190016a41206a290300370300200341d8006a41186a220420034190016a41186a22052903002207370300200341d8006a41106a220120034190016a41106a2206290300220b370300200341d8006a41086a221320034190016a41086a2202290300220c37030020032003290390012214370358200341e8036a41186a22152007370300200341e8036a41106a2216200b370300200341e8036a41086a2217200c370300200320143703e8032005200429030037030020062001290300370300200220132903003703002003200329035837039001200d200341e8036a10ee0521074120102c2201450d05200120032903e803370000200141186a2015290300370000200141106a2016290300370000200141086a2017290300370000200341c0046a41086a2002290300220b370300200341c0046a41106a2006290300220c370300200341c0046a41186a20052903002214370300200320032903900122183703c004200520143703002006200c3703002002200b37030020032018370390010240200f2010470d00200f41016a2204200f490d0320122004201220044b1b22044104200441044b1bad42387e220b422088a7454103742104200ba7211302400240200f0d00200341003602e0020c010b200341083602e802200320113602e4022003200e3602e0020b200341a8026a20132004200341e0026a107d20032802b0022104024020032802a8024101470d002004450d040c070b20032802ac02210e200441386e21100b200e20116a22042007370300200441086a200329039001370300200441106a2002290300370300200441186a2006290300370300200441206a20052903003703002004412c6a428180808010370200200441286a2001360200201141386a2111201241026a2112200f41016a210f20034190016a20034198036a108c0520032d00b4014102470d000b0b0240200328029c03450d00200328029803102e0b0240200341a8036a280200450d0020032802a403102e0b200341d8006a4192fdc600410710810220034190016a41aca0c500410d1081024120102c2204450d03200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107420032802c8042204417f4c0d0020032802c00421010240024020040d00410121050c010b2004102c2205450d040b20052001200410e9082101200341286a41086a200341c0046a41086a22172802002205360200200320032903c00422073703282003420037021c200341386a41146a2005360200200341d7006a200341256a41026a2d00003a0000200320043602402003200436023c2003200136023820032007370244200341003a00542003410e360250200320032f00253b0055200341d8006a200341386a108d0502402003280284012219450d00200341a8026a411c6a211a200341c0046a410472211b200341c0046a411c6a211c200341e0026a411c6a211d200341c8016a41206a211641002112034020034190016a41306a200341d8006a41306a220429030037030020034190016a41286a200341d8006a41286a220129030037030020034190016a41206a200341d8006a41206a290300220737030020034190016a41186a2205200341d8006a41186a290300220b37030020034190016a41106a2206200341d8006a41106a290300220c37030020034190016a41086a2202200341d8006a41086a290300221437030020032003290358221837039001200341c8016a41286a200128020036020020162007370300200341c8016a41186a200b370300200341c8016a41106a200c370300200341c8016a41086a2014370300200320183703c8012004280200211e200328028c01211f200341f8016a41086a2220201641086a280200360200200320162903003703f801200341c0046a41186a22212005290300370300200341c0046a41106a222220062903003703002017200229030037030020032003290390013703c004024002402012450d00200328021821130c010b41f004102c2212450d0641002113201241003b018e02201241003602002003201236021c200341003602180b0240024002400240024002400240024002400240024002400340201241186a210120124190026a211120122f018e022215410574210241002104417f210502400340024020022004470d00201521050c020b200341c0046a201120046a412010ec082206450d03200541016a2105200141186a2101200441206a21042006417f4a0d000b0b02402013450d002013417f6a2113201220054102746a41f0046a28020021120c010b0b20034188026a41086a201b41086a2223290200220737030020034188026a41106a201b41106a2224290200220b37030020034188026a41186a201b41186a222528020022043602002003201b290200220c3703880220032802c0042113200341e0026a41186a22262004360200200341e0026a41106a2227200b370300200341e0026a41086a222820073703002003200c3703e002200341d0036a41086a22292020280200360200200320032903f8013703d00302402015410a4b0d00200341e8036a41086a22062029280200360200200320032903d0033703e803200341a0046a41186a22022026280200360200200341a0046a41106a22222027290300370300200341a0046a41086a22202028290300370300200320032903e0023703a004200541016a2121201541016a21010240200520154f22270d00201120214105746a201120054105746a20012005417f736a41057410ea081a0b201120054105746a22042013360000200441146a20222903003700002004410c6a2020290300370000200420032903a0043700042004411c6a200228020036000020172006280200360200200320032903e8033703c004201241046a2104024020270d002004202141186c6a2004200541186c6a201520056b41186c10ea081a0b2004200541186c6a220420032903c004370200201728020021052004201f3602142004201e3602102004201936020c200441086a2005360200201220013b018e020c0b0b4100212a4104210402400240200541054f0d00200521060c010b4105210441052106024002402005417b6a0e020201000b200541796a21064101212a410621040c010b410021064101212a0b41f004102c2201450d11200141003b018e0220014100360200200120122f018e02222b2004417f736a22053b018e02201120044105746a2202280000212c200341a0046a41186a222d2002411c6a280000360200200341a0046a41106a2215200241146a290000370300200341a0046a41086a22202002410c6a290000370300200320022900043703a004200341f8046a41106a222e201241046a222f200441186c6a220241106a290200370300200341f8046a41086a2230200241086a290200370300200320022902003703f8042005410c4f0d01202b200441016a22026b2005470d0220014190026a201120024105746a200541057410e9081a200141046a202f200241186c6a200541186c10e9081a201c20032903f8043702002021202d280200360200201c41086a22312030290300370200201c41106a2232202e290300370200201220043b018e02202220152903002207370300200341e8036a41086a222b2020290300370300200341e8036a41106a222f2007370300200341e8036a41186a22332021290300370300200341e8036a41206a2234200341c0046a41206a2235290300370300200341e8036a41286a2236200341c0046a41286a2237290300370300200341e8036a41306a2238200341c0046a41306a2239280200360200200320032903a0043703e80320302029280200360200200320032903d0033703f80420012012202a1b22052f018e022102202d20262802003602002015202729030037030020202028290300370300200320032903e0023703a00420054190026a2104200241016a21110240200641016a222a20024b223a0d002004202a4105746a200420064105746a20112006417f736a41057410ea081a0b200420064105746a22042013360000200441146a20152903003700002004410c6a2020290300370000200420032903a0043700042004411c6a202d28020036000020172030280200360200200320032903f8043703c004200541046a21040240203a0d002004202a41186c6a2004200641186c6a200220066b41186c10ea081a0b2004200641186c6a220420032903c004370200201728020021062004201f3602142004201e3602102004201936020c200441086a2006360200200520113b018e0220034198036a41306a2204203828020036020020034198036a41286a2205203629030037030020034198036a41206a2206203429030037030020034198036a41186a221f203329030037030020034198036a41106a2219202f29030037030020034198036a41086a221e202b290300370300200320032903e80337039803200341e0026a41306a223b2004280200360200200341e0026a41286a223c2005290300370300200341e0026a41206a223d20062903003703002026201f290300370300202720192903003703002028201e29030037030020032003290398033703e002024002400240201228020022130d004100212a0c010b4100212a2001213a202c213e034020122f018c022102201f202628020036020020192027290300370300201e2028290300370300200320032903e00237039803200341d0036a41106a223f201d41106a2902003703002029201d41086a2902003703002003201d2902003703d00320132f018e022212410b490d024100211141042104024020024105490d0020022104024002402002417b6a0e020201000b200241796a210241012111410621040c010b4100210241012111410521040b41a005102c2201450d14200141003b018e0220014100360200200120132f018e0222402004417f736a22053b018e0220134190026a224120044105746a2206280000212c202d2006411c6a2800003602002015200641146a29000037030020202006410c6a290000370300200320062900043703a004202e201341046a2242200441186c6a220641106a2902003703002030200641086a290200370300200320062902003703f8042005410c4f0d062040200441016a22066b2005470d0720014190026a204120064105746a200541057410e9081a200141046a2042200641186c6a200541186c10e9081a201320043b018e0220172020290300370300202220152903003703002021202d280200360200201c20032903f804370200203120302903003702002032202e290300370200200320032903a0043703c00420012f018e02220541016a21402005410c4f0d08201220046b22042040470d09202a41016a212a200141f0046a201320064102746a41f0046a200441027410e9081a4100210402400340200120044102746a41f0046a280200220620043b018c02200620013602002004200420054922066a220420054b0d0120060d000b0b20382039280200360200203620372903003703002034203529030037030020332021290300370300202f2022290300370300202b2017290300370300200320032903c0043703e8032015203f29030037030020202029290300370300200320032903d0033703a0042001201320111b22062f018e0221052003203e3602c004201b2003290398033700002023201e290300370000202420192903003700002025201f28020036000020064190026a2112200541016a21110240200241016a220420054b223e0d00201220044105746a201220024105746a2002417f7320116a41057410ea081a0b201220024105746a221220032903c004370000201241186a2021290300370000201241106a2022290300370000201241086a20172903003700002022201529030037030020172020290300370300200320032903a0043703c004200641046a21120240203e0d002012200441186c6a2012200241186c6a200520026b41186c10ea081a0b2012200241186c6a221220032903c004370200201241106a2022290300370200201241086a2017290300370200200641f0046a21120240200241026a223e200541026a22054f0d002012203e4102746a201220044102746a2004417f7320056a41027410ea081a0b201220044102746a203a360200200620113b018e020240200420054f0d00200620024102746a41f4046a2104034020042802002205200241016a22023b018c0220052006360200200441046a210420112002470d000b0b2028202b2903003703002027202f29030037030020262033290300370300203d2034290300370300203c2036290300370300203b2038280200360200200320032903e8033703e002201321122013280200220421132001213a202c213e20040d000b0b200341a8026a41306a203b280200360200200341a8026a41286a203c290300370300200341a8026a41206a203d290300370300200341a8026a41186a20262903002207370300200341a8026a41106a2027290300220b370300200341a8026a41086a2028290300220c370300200320032903e00222143703a802202b200c370300202f200b370300203320073e02002028201a41086a2902003703002027201a41106a290200370300200320143703e8032003201a2902003703e002200328021c2205450d082003280218210641a005102c2204450d12200420053602f004200441003b018e0220044100360200200541003b018c02200520043602002003200436021c2003200641016a360218202120332802003602002022202f2903003703002017202b290300370300200320032903e8033703c00420192027290300370300201e2028290300370300200320032903e002370398032006202a470d0920042f018e022206410b4f0d0a2004200641016a22023b018e02200420064105746a22054190026a202c36000020054194026a20032903c0043700002005419c026a2017290300370000200541a4026a2022290300370000200541ac026a20212802003600002004200641186c6a220541046a2003290398033702002005410c6a201e290300370200200541146a2019290300370200200441f0046a20024102746a2001360200200120023b018c02200120043602002003200328022041016a360220202a1a20011a0c0c0b2015203f29030037030020202029290300370300200320032903d0033703a004201b2003290398033700002023201e290300370000202420192903003700002025201f2802003600002003203e3602c00420134190026a2104201241016a21060240201220024d22010d00200420024105746a220541206a20052002417f7320066a41057410ea081a0b200420024105746a220420032903c004370000200441186a2021290300370000200441106a2022290300370000200441086a20172903003700002022201529030037030020172020290300370300200320032903a0043703c004200241016a2104201341046a2105024020010d002005200441186c6a2005200241186c6a201220026b41186c10ea081a0b2005200241186c6a220520032903c004370200200541106a2022290300370200200541086a2017290300370200201341f0046a2105201241026a2111024020010d00200241027420056a41086a200520044102746a2004417f7320116a41027410ea081a0b200520044102746a203a360200201320063b018e02200420114f0d0a20132004417f6a22044102746a41f4046a2101034020012802002205200441016a22043b018c0220052013360200200141046a210120062004470d000c0b0b0b2001416c6a220520032903f801370200200141786a2206280200210420202802002102200620193602002001417c6a220628020021112006201e3602002001201f360200200541086a20023602002004450d0a201141ffffffff0371450d0a2004102e0c0a0b2005410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2005410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2040410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b2003200328022041016a3602200b200341d8006a200341386a108d052003280284012219450d01200328021c21120c000b0b0240200328023c450d002003280238102e0b0240200341c8006a280200450d002003280244102e0b200341d8006a4192fdc600410710810220034190016a41dfa2c500410a1081024120102c2204450d03200342203702c404200320043602c004200341c0046a200341d8006a41101074200341c0046a20034190016a4110107420032802c8042204417f4c0d0020032802c00421010240024020040d00410121050c010b2004102c2205450d040b20052001200410e9082101200341a8026a41086a200341c0046a41086a22212802002205360200200341c8016a41026a220620034190016a41026a2d00003a0000200320032903c00422073703a802200320032f0090013b01c801200341fc036a2005360200200320043602f003200320043602ec03200320013602e803200320073702f403200341003a0084042003410c3602800420034187046a20062d00003a0000200320032f01c8013b00850420034190016a200341e8036a10eb0520034190016a41306a2d00004102460d010340202120034190016a41086a22152903002207370300200341c0046a41106a20034190016a41106a2216290300220b370300200341c0046a41186a20034190016a41186a2217290300220c370300200320032903900122143703c00420032802bc01211120032802b001211320032802b401211920032802b8012106200341d8006a41186a221e200c370300200341d8006a41106a221f200b370300200341d8006a41086a22202007370300200320143703580240024020060d00410021120c010b41002122410021124100210502400340024002402012450d00201320054105746a21042013200520226a4105746a210103400240200341186a200410a1022202450d00200228020820114b0d030b20012004290000370000200141186a200441186a290000370000200141106a200441106a290000370000200141086a200441086a290000370000200441206a2104200141206a21012006200541016a22054b0d000c040b0b201320054105746a210403400240200341186a200410a1022201450d00200128020820114b0d020b200441206a21042006200541016a22054b0d000b410021120c030b2022417f6a2122201241016a21122006200541016a22054b0d000b0b024020120d00410021120c010b2013200520126b4105746a201320054105746a200620056b41057410ea081a0b200d200341d8006a10ee0521072017201e2903003703002016201f2903003703002015202029030037030020032003290358370390010240200f2010470d00200f41016a2204200f490d02200f41017422012004200120044b1b22044104200441044b1bad42387e220b422088a7454103742104200ba7210102400240200f0d0020034100360298030c010b200341083602a0032003200e360298032003200f41386c36029c030b200341e0026a2001200420034198036a107d20032802e8022104024020032802e0024101470d0020040d060c030b20032802e402210e200441386e21100b200e200f41386c6a220420073703002004200329039001370308200441106a2015290300370300200441186a2016290300370300200441206a2017290300370300200441306a200620126b3602002004412c6a201936020020042013360228200f41016a210f20034190016a200341e8036a10eb0520032d00c0014102470d000c020b0b1038000b2009ad220742f8cdaf0d7e2008ad220b42c8acef0b7e7c200aad220c42d8e5f90a7e7c200b42c0d1e1237e7c200742c0d1e1237e7c42c0d1e1237c220b200c42c0f0f50b7e7c2107024020032802ec03450d0020032802e803102e0b2007200b5421040240200341f8036a280200450d0020032802f403102e0b427f200720041b210b200328021c21042003410036021c02402004450d00024020032802182201450d002001417f6a2101034020042802f00421042001450d012001417f6a21010c000b0b024020032802202202450d0041002105200341c8046a211203402002417f6a210241012101024002400340200520042f018e02490d010240200428020022060d002004102e410021040c030b20042f018c0221052004102e2001417f6a2101200621040c000b0b200341c0046a41186a200420054105746a220641a8026a290000370300200341c0046a41106a200641a0026a290000370300201220064198026a290000370300200320064190026a2900003703c004200541016a21062004200541186c6a220541146a2902002107200541106a2802002111024020014101470d00200621050c010b200420064102746a41f0046a280200210402402001450d000340200141016a220520014f210620042802f00421042005210120060d000b0b410021050b2011450d020240200742ffffffff0383500d002011102e0b20020d000b0b0340200428020021012004102e2001210420010d000b0b200d102e200041186a200b370300200041106a200f3602002000410c6a2010360200200041086a200e360200200041003602000b20034190056a24000f0b1036000b980501047f23004190016b220524002005200436021420052003360210200541d4e2cc00200141086a20024108491b36021820054100200241786a2201200120024b1b36021c200541e0006a200541186a109301200541c0006a41086a2202200541e9006a290000370300200541c0006a41106a2201200541f1006a290000370300200541c0006a41186a2203200541f9006a29000037030020052005290061370340024002400240024020052d00604101460d00200541206a41186a2003290300370300200541206a41106a2001290300370300200541206a41086a200229030037030020052005290340370320200541086a200541106a10ab01024002402005280208450d00200541003602600c010b200541e0006a200541106a200528020c10920120052802602202450d00200528026421010240200528021422034104490d00200541e8006a280200210620052802102204280000210720052003417c6a22083602142005200441046a22043602102008450d0020042d0000210820052003417b6a3602142005200441016a3602104100210320080e020403000b200141ffffff3f71450d002002102e0b20054186016a41026a2005418a016a41026a2d00003a0000200520052f018a013b018601200041023a00300c030b200041023a00300c020b410121030b20054186016a41026a22042005418d016a41026a2d00003a0000200520052f008d013b018601200041186a200541206a41186a290300370000200041106a200541206a41106a290300370000200041086a200541206a41086a29030037000020002005290320370000200020033a00302000200736022c200020063602282000200136022420002002360220200020052f0186013b0031200041336a20042d00003a00000b20054190016a24000be60303057f017e037f230041c0006b22022400200241086a200128020c200141146a280200108b050240024020022802082203450d00200141086a2104200141106a2105024003400240024020042802002206200229020c2207422088a722084b0d0020012802002003200610ec08450d010b2007a7450d032003102e0c030b02402005280200450d00200128020c102e0b2001200336020c20052007370200200241086a2003200810ed020240024020022802082203450d0020022802102109200228020c2108024020012d001c450d00200128020c200128021410ff010b2001280214220a20042802002206490d03200241086a200128020c20066a200a20066b20032009200128021811050020022d00384102470d012008450d002003102e0b200241086a200128020c2001280214108b05200228020822030d010c030b0b20002002290308370200200041306a200241086a41306a280200360200200041286a200241086a41286a290300370200200041206a200241086a41206a290300370200200041186a200241086a41186a290300370200200041106a200241086a41106a290300370200200041086a200241086a41086a2903003702002008450d022003102e0c020b2006200a41e89ec5001056000b200041023a00300b200241c0006a24000bf80301017f23004190016b220524002005200436021420052003360210200541d4e2cc00200141086a20024108491b36021820054100200241786a2201200120024b1b36021c200541e8006a200541186a109301200541c8006a41086a2202200541f1006a290000370300200541c8006a41106a2201200541f9006a290000370300200541c8006a41186a220320054181016a290000370300200520052900693703480240024002400240024020052d00684101460d00200541286a41186a2003290300370300200541286a41106a2001290300370300200541286a41086a200229030037030020052005290348370328200541086a200541106a10ab0120052802080d03200528020c21022005418094ebdc0336026c2005200236026820052802142201450d03200541e8006a2002418094ebdc034b4102746a2802002104200528021022022d0000210320052001417f6a3602142005200241016a3602104100210220030e020201030b200041023a00240c030b410121020b20002005290328370000200041186a200541286a41186a290300370000200041106a200541286a41106a290300370000200041086a200541286a41086a290300370000200020023a002420002004360220200020052f00253b0025200041276a200541276a2d00003a00000c010b200041023a00240b20054190016a24000bf70302027f017e23004180016b220524002005200436020c20052003360208200541d4e2cc00200141086a20024108491b36021020054100200241786a2201200120024b1b360214200541d8006a200541106a109301200541386a41086a2202200541e1006a290000370300200541386a41106a2201200541e9006a290000370300200541386a41186a2206200541f1006a290000370300200520052900593703380240024020052d00584101460d00200541186a41186a2006290300370300200541186a41106a2001290300370300200541186a41086a200229030037030020052005290338370318024020044104490d002005200341046a36020820052004417c6a220236020c20024104490d00200328000021012005200341086a3602082005200441786a220236020c20024104490d00200328000421022005200441746a36020c20052003410c6a36020820032800082104200541d8006a200541086a10e70120052802582203450d00200529025c210720002005290318370000200041186a200541186a41186a290300370000200041106a200541186a41106a290300370000200041086a200541186a41086a290300370000200020073702302000200336022c2000200436022820002002360224200020013602200c020b2000410036022c0c010b2000410036022c0b20054180016a24000ba10706017f027e027f017e027f017e230041a0026b22022400200041086a29030021032000290300210420024190026a200110e505200241e8006a200228029002220020022802980210f402200241c8006a41086a2201200241f1006a290000370300200241c8006a41106a2205200241f9006a290000370300200241c8006a41186a220620024181016a2900003703002002200229006937034802400240024002400240024020022d00684101470d00200241286a41186a2006290300370300200241286a41106a2005290300370300200241286a41086a2001290300370300200220022903483703280240200228029402450d002000102e0b200241e8006a41186a200241286a41186a290300370300200241e8006a41106a200241286a41106a290300370300200241e8006a41086a200241286a41086a29030037030020022002290328370368200241d0016a4192fdc6004107108102200241e0016a41e9a2c50041061081024120102c2200450d042002422037028402200220003602800220024180026a200241e8006a4120107420024190026a2002280280022200200228028802220110d803200241d4006a200020016a36020020022000360250200220024190026a41106a36024c200220024190026a360248200241f0016a200241c8006a107c0240200228028402450d002000102e0b20022802f801220141206a2200417f4c0d050240024020000d00410121050c010b2000102c2205450d050b200241003602c801200220003602c401200220053602c001200241c0016a200241d0016a41101074200241c0016a200241e0016a41101074200241c0016a20022802f001220020011074024020022802f401450d002000102e0b200241e8006a20022802c001220520022802c80110e60520022802c40121002002280288012206450d0120024180016a290300210720024198016a280200210820024194016a28020021092002290378210a200228028c01210102402000450d002005102e0b02402001450d00200141186c450d002006102e0b200841ffffffff0371450d032009102e0c030b200228029402450d012000102e0c010b2000450d002005102e0b4200210a420021070b200241186a20042003427f420010e708200241086a200a20072002290318220342012003420156200241186a41086a29030022034200522003501b22001b2003420020001b10e708200241086a41086a290300210320022903082104200241a0026a24002004427f2003501b0f0b1036000b1038000bc00c07047f017e047f017e017f027e017f230041c0016b22032400200341d8006a4192fdc6004107108102200341f8006a41f09dc500410a108102024002400240024002404120102c2204450d002003422037023c20032004360238200341386a200341d8006a41101074200341386a200341f8006a4110107420032802402204417f4c0d04200328023821050240024020040d00410121060c010b2004102c2206450d010b20062005200410e9082105200341186a41086a200341386a41086a2802002206360200200320032903382207370318200341ec006a2006360200200341f7006a200341386a41026a2d00003a0000200320043602602003200436025c200320053602582003200737026441002104200341003a00742003410d360270200320032f00383b0075200341f8006a200341d8006a108c0502402003419c016a2d00004102460d00410021040340200441016a2104200341f8006a200341d8006a108c0520032d009c014102470d000b0b0240200328025c450d002003280258102e0b0240200341e8006a280200450d002003280264102e0b02402001450d00200420024d0d00200041f6eac600360204200041086a4117360200410121040c040b200341d8006a4192fdc6004107108102200341f8006a41f09dc500410a1081024120102c2201450d002003422037023c20032001360238200341386a200341d8006a41101074200341386a200341f8006a4110107420032802402201417f4c0d04200328023821050240024020010d00410121060c010b2001102c2206450d010b20062005200110e9082105200341086a41086a200341386a41086a2802002206360200200341046a41026a2202200341f8006a41026a2d00003a0000200320032903382207370308200320032f00783b01042003412c6a2006360200200320013602202003200136021c2003200536021820032007370224200341003a00342003410d360230200341376a20022d00003a0000200320032f01043b0035200341f8006a200341186a108c0520032d009c014102460d01200341d8006a41186a2201200341f8006a41186a290300370300200341d8006a41106a2205200341f8006a41106a290300370300200341d8006a41086a200341f8006a41086a290300370300200320032903783703584120102c2208450d0020082003290358370000200841186a2001290300370000200841106a2005290300370000200841086a200341d8006a41086a2209290300370000200341386a41186a200341186a41186a290300370300200341386a41106a200341186a41106a290300370300200341386a41086a200341186a41086a29030037030020032003290318370338200341f8006a200341386a108c0502400240024020032d009c014102470d0041012101410121060c010b4120210241012101410121060340200341d8006a41186a200341f8006a41186a220a2903002207370300200341d8006a41106a200341f8006a41106a220b290300220c3703002009200341f8006a41086a220d290300220e37030020032003290378220f370358200a2007370300200b200c370300200d200e3703002003200f370378024020062001470d00200141016a22052001490d08200141017422102005201020054b1b22054104200541044b1b220541ffffff3f712005462110200541057421050240024020010d00200341003602b0010c010b200341013602b801200320083602b001200320014105743602b4010b200341a0016a20052010200341b0016a107d20032802a801210120032802a0014101460d0320032802a4012108200141057621010b200820026a22052003290378370000200541186a200a290300370000200541106a200b290300370000200541086a200d290300370000200241206a2102200641016a2106200341f8006a200341386a108c0520032d009c014102470d000b0b0240200328023c450d002003280238102e0b200341c8006a280200450d032003280244102e0c030b2001450d040b1036000b0240200328021c450d002003280218102e0b41002101410121080240200341286a280200450d002003280224102e0b410021060b200041186a2004ad42c0f0f50b7e370300200041106a20063602002000410c6a2001360200200041086a2008360200410021040b20002004360200200341c0016a24000f0b1038000bdb0401097f230041c0016b2202240020024188016a200110d305200241306a200228028801220320022802900110e60520024198016a41086a2204200241ec006a29020037030020024198016a41106a2205200241f4006a29020037030020024198016a41186a2206200241fc006a29020037030020024198016a41206a220720024184016a2802003602002002200241e4006a290200370398010240024020022802502208450d00200241e0006a2802002109200241dc006a280200210a20022802542101200241086a41206a2007280200360200200241086a41186a2006290300370300200241086a41106a2005290300370300200241086a41086a200429030037030020022002290398013703080240200228028c01450d002003102e0b200241306a41106a200241086a41106a290300370300200241306a41086a200241086a41086a290300370300200241306a41186a200241086a41186a290300370300200241306a41206a200241086a41206a28020036020020024198016a41086a2002413c6a29020037030020024198016a41106a200241c4006a29020037030020024198016a41186a200241cc006a29020037030020022002290308370330200220022902343703980102402001450d00200141186c450d002008102e0b0240200941ffffffff0371450d00200a102e0b2000200229039801370001200041196a200241b0016a290300370000200041116a200241a8016a290300370000200041096a200241a0016a290300370000410121010c010b0240200228028c01450d002003102e0b410021010b200020013a0000200241c0016a24000bd60605067f017e037f017e017f23004180016b22012400200141286a22024200370300200141206a22034200370300200141106a41086a420037030020014200370310200141106a4192fdc6004107108102200141e8006a41a8b4c600410a1081022002200141e8006a41086a29000037030020032001290068370300200141203602342001200141106a360230200141386a200141106a412010ed02024002400240200128023822040d00410021030c010b200128023c21052001200141386a41086a28020036024c20012004360248200141086a200141c8006a10ab010240024020012802080d0002400240200128020c2206200128024c4103762202200220064b1b22024103742203417f4c0d000240024020020d00410421030c010b2003102c2203450d060b2002ad2107024002402006450d000340200128024c22084104490d042001280248220228000021092001200241046a36024820012008417c6a220a36024c200a4104490d042002280004210a2001200841786a36024c2001200241086a36024802402007422088220ba722022007a7470d00200241016a22082002490d042002410174220c20082008200c491b22084104200841044b1b220841ffffffff0171200846410274210c200841037421080240024020020d00200141003602680c010b20014104360270200120033602682001200b4203863e026c0b200141d8006a2008200c200141e8006a107d2001280260210820012802584101460d03200128025c21032007428080808070832008410376ad8421070b200320024103746a2202200a3602042002200936020020074280808080107c21072006417f6a22060d000b0b2003450d030c040b20080d050b1038000b0240200742ffffffff0183500d002003102e0b0b4100210320014100360260200142013703582001410a3602542001200141306a3602502001200141d8006a360264200141fc006a41013602002001420137026c200141909dc5003602682001200141d0006a360278200141e4006a419cebc000200141e8006a103d1a2001280258200128026010ef02200128025c450d002001280258102e0b2005450d002004102e0b0240024020030d0020004100360208200042043702000c010b20002007370204200020033602000b20014180016a24000f0b1036000bc40101057f2001280208210302402001410c6a280200220420024b0d002000410036020820002004ad4220862003ad843702000f0b02402001411c6a28020022050d00200041023602080f0b200141146a2802002101200541027421052003417f6a21030240034002402004200128020022066b220720024b0d00200420024b0d020b200141046a21012003417f6a2103200721042005417c6a22050d000b200041023602080f0b2000200636020c20002007ad4220862003ad84370200200041013602080bd80c08017f017e047f017e067f027e027f027e23004180016b2201240042002102200141306a22034200370300200141286a22044200370300200141186a41086a420037030020014200370318200141186a41a081ca004107108102200141d8006a41f09dc500410a1081022003200141d8006a41086a29000037030020042001290058370300200141d8006a200141186a10880320012802582203410120031b210541022106024002400240200129025c420020031b2207422088a72203450d00200341057441606a41057641016a210841002104200521030240034020032000412010ec08450d01200242017c2102200341206a21032008200441016a2204470d000c020b0b200141306a22094200370300200141286a220a4200370300200141186a41086a220b420037030020014200370318200141d8006a41a081ca004107108102200b200141d8006a41086a220c29000037030020012001290058370318200141d8006a41f8d2c10041121081022009200c290000370300200a2001290058370300200141d8006a200141186a109b0320012802582208410420081b210d4100210641002103410021000240024002400240024002400240200129025c420020081b220e422088220fa722100e020201000b4100210320102100034020032000410176220820036a22112004200d20114102746a280200491b2103200020086b220041014b0d000b0b41012100200d20034102746a28020022082004460d012003200420084b6a21000b20094200370300200a4200370300200b420037030020014200370318200141d8006a41a081ca004107108102200b200c29000037030020012001290058370318200141d8006a41f09dc500410a108102200a41086a200c290000370000200a2001290058370000200141c8006a41046a41003a000020014100360248200141106a200141186a4120200141c8006a4105410010ca040240024002402001280210450d00200120012802142203410520034105491b36025c2001200141c8006a360258200141086a200141d8006a10ab012001280208450d010b410021030c010b200128020c21030b2003418094ebdc0370ad4280fd87d1007e2212428094ebdc038221132012428094ebdc038021122003418094ebdc036e2108200020104b0d0502402010200ea7470d00201041016a22032010490d0720104101742211200320032011491b22034104200341044b1b220341ffffffff03712003464102742111200341027421030240024020100d00200141003602180c010b200141206a41043602002001200d3602182001200f4202863e021c0b200141d8006a20032011200141186a107d200141e0006a280200210320012802584101460d02200128025c210d2003410276ad210e0b200d20004102746a220341046a2003201020006b41027410ea081a20032004360200200e42ffffffff0f83201041016a2203ad42208684210e200320084180fd87d1006c2012a720134280cab5ee01566a6a4b2106410021000b2001200e37024c2001200d360248200d0d01200141306a4200370300200141286a4200370300200141186a41086a2203420037030020014200370318200141d8006a41a081ca0041071081022003200141d8006a41086a220829000037030020012001290058370318200141d8006a41f8d2c1004112108102200a41086a2008290000370000200a2001290058370000200141186a412010ff010c020b2003450d041036000b200141306a4200370300200141286a4200370300200141186a41086a2203420037030020014200370318200141d8006a41a081ca0041071081022003200141d8006a41086a220829000037030020012001290058370318200141d8006a41f8d2c1004112108102200a41086a2008290000370000200a2001290058370000200141186a200141c8006a10c705200d450d00200e42ffffffff0383500d00200d102e0b20000d00200141186a41086a200237030020014102360218200141186a108c06200141013602182001200436021c200141d8006a200141186a10a404200141d3006a200141d8006a41086a2802003600002001200129035837004b200141e4006a200141cf006a290000370000200141c28289aa04360059200141023a00582001200129004837005d200141d8006a10a5040b0240200742ffffff3f83500d002005102e0b20014180016a240020060f0b200020101045000b1038000bd90c04047f017e027f067e230041d0026b22052400200541c8016a2001200210f2050240024002400240024020052802d0014102460d0020052802c8012106200541c8016a41086a2001280204220741086a290000370300200541c8016a41106a200741106a290000370300200541c8016a41186a200741186a290000370300200520063602e801200520072900003703c801200541f0016a200541c8016a10cd0520052802f0012108200520052802f8012207360284022005200836028002200541b0026a2008200710ed020240024020052802b00222070d00420021090c010b20052802b402210a024002400240200541b0026a41086a280200220b4110490d00200b4170714110470d010b200541003602c802200542013703c0022005410a36028c02200520054180026a360288022005200541c0026a36029402200541ac026a41013602002005420137029c02200541909dc50036029802200520054188026a3602a80220054194026a419cebc00020054198026a103d1a20052802c00220052802c80210ef02024020052802c402450d0020052802c002102e0b420021090c010b200741186a290000210c200741086a290000210d2007290010210e2007290000210f420121090b200a450d002007102e0b200d4200200942005222071b210d200f420020071b210f024020052802f401450d002008102e0b200c420020071b210c200e420020071b210e0240200f200354200d200454200d2004511b0d00200f200385200d2004858450450d04200541b8016a20032004428094ebdc03420010e608200541a8016a20032004428094ebdc03420010e70820054198016a20052903a801200541a8016a41086a2903002001350228220d420010e80820054188016a4200200529039801220f200d20052903b8017e220d428094ebdc0380a7417f200d428080808080c0b2cd3b541b200d428094ebdc03824280cab5ee01566aad7c220d200e7d22092009200d5620054198016a41086a290300200d200f54ad7c220f200c7d200d200e54ad7d220d200f56200d200f511b22021b220f4200200d20021b220d428094ebdc03420010e608200541f8006a200f200d428094ebdc03420010e708200541e8006a2005290378200541f8006a41086a2903004280cab5ee01420010e8082005290368220f200529038801220d420188a7200d4280cab5ee017e428094ebdc03824280cab5ee01566aad7c220d200541e8006a41086a290300200d200f54ad7c220f84500d040c020b200541d8006a20032004428094ebdc03420010e608200541c8006a20032004428094ebdc03420010e708200541386a2005290348200541c8006a41086a29030020013502282209420010e808200541286a420020052903382210200920052903587e2209428094ebdc0380a7417f2009428080808080c0b2cd3b541b2009428094ebdc03824280cab5ee01566aad7c2209200e7d22112011200956200541386a41086a2903002009201054ad7c2210200c7d2009200e54ad7d220920105620092010511b22071b22104200200920071b2209428094ebdc03420010e608200541186a20102009428094ebdc03420010e708200541086a2005290318200541186a41086a2903004280cab5ee01420010e808200128022422072003200f7d220920072903007c2210370300200741086a22072004200d7d2003200f54ad7d20072903007c2010200954ad7c370300200141106a2207200728020022072002200720024b1b3602002005290308220f2005290328220d420188a7200d4280cab5ee017e428094ebdc03824280cab5ee01566aad7c220d200541086a41086a290300200d200f54ad7c220f8450450d01200e210d0c020b410021010c030b2001280220220220022903002209200d7c2210370300200241086a22022002290300200f7c2010200954ad7c370300200c200f7c200e200d7c220d200e54ad7c210c0b200141013a002c200541b0026a200541c8016a10cd0520052802b802210220052802b0022101200541003602c802200542013703c002200520043703a0022005200337039802200541c0026a20054198026a411010742005200c3703a0022005200d37039802200541c0026a20054198026a411010742001200220052802c002220720052802c80210b201024020052802c402450d002007102e0b20052802b402450d002001102e0b410121010b2000200636020420002001360200200541d0026a24000b9c0b09047f017e047f027e017f017e037f037e027f230041e0016b220324002003200236021c20032001360218200341206a2001200210ed0202400240200328022022040d00200041003602000c010b200328022421052003200341286a28020036023420032004360230200341106a200341306a10ab010240024020032802100d000240024002400240024020032802142206200328023441d8006e2201200120064b1bad42d8007e2207422088a70d002007a72201417f4c0d000240024020010d00410821080c010b2001102c2208450d020b200141d8006ead2107024002402006450d00200341b8016a41017221020340200341b8016a200341306a10930120032d00b8014101460d0720034198016a41186a2209200241186a29000037030020034198016a41106a220a200241106a29000037030020034198016a41086a220b200241086a2900003703002003200229000037039801200328023422014110490d072003200141706a36023420032003280230220141106a360230200141086a290000210c2001290000210d200341b8016a200341306a10e90120032802b801220e450d0720032902bc01210f200341086a200341306a10ab0102402003280208450d00200341003602b8010c070b200341b8016a200341306a200328020c10920120032802b8012210450d0620032802bc012111200328023422014110490d0520032802c0012112200341d8006a41086a200b2903002213370300200341d8006a41106a200a2903002214370300200341d8006a41186a20092903002215370300200341386a41186a22092015370300200341386a41106a220a2014370300200341386a41086a220b20133703002003200141706a36023420032003280230220141106a3602302003200329039801221337035820032013370338200141086a29000021132001290000211402402007422088a722012007a7470d00200141016a22162001490d0420014101742217201620162017491b22164104201641044b1bad42d8007e2215422088a74541037421162015a721170240024020010d00200341003602b8010c010b200341083602c001200320083602b8012003200141d8006c3602bc010b20034198016a20172016200341b8016a107d20032802a00121162003280298014101460d03200328029c012108200742808080807083201641d8006ead8421070b2008200141d8006c6a220120143703102001200c3703082001200d3703002001200e360220200141186a2013370300200141346a2012360200200141306a20113602002001412c6a2010360200200141246a200f370200200141386a2003290338370200200141c0006a200b290300370200200141c8006a200a290300370200200141d0006a200929030037020020074280808080107c21072006417f6a22060d000b0b2008450d0620002007370204200020083602000c070b20160d010b1038000b1036000b201141ffffff3f71450d002010102e0b200fa72201450d00200141306c450d00200e102e0b200341d8006a41086a200341f8006a41086a29030037030002402007422088a72201450d00200141d8006c2102200841306a210103400240200141746a2802002206450d00200641306c450d00200141706a280200102e0b0240200128020041ffffff3f71450d002001417c6a280200102e0b200141d8006a2101200241a87f6a22020d000b0b2007a72201450d00200141d8006c450d002008102e0b200341003602a00120034201370398012003410a36027c2003200341186a360278200320034198016a360258200341cc016a4101360200200342013702bc01200341909dc5003602b8012003200341f8006a3602c801200341d8006a419cebc000200341b8016a103d1a20032802980120032802a00110ef020240200328029c01450d00200328029801102e0b200041003602000b2005450d002004102e0b200341e0016a24000bb10b01047f230041d0006b22012400200141086a4192fdc6004107108102200141186a41b29dc500410b108102200120003602342001200141346a410410a301370338200141cc006a200141346a41046a3602002001200141c0006a3602442001200141346a3602482001200141386a360240200141286a200141c0006a107c024002402001280230220241206a2203417f4c0d000240024020030d00410121040c010b2003102c2204450d020b200141003602482001200336024420012004360240200141c0006a200141086a41101074200141c0006a200141186a41101074200141c0006a20012802282203200210740240200128022c450d002003102e0b20012802402203200128024810890302402001280244450d002003102e0b200141086a4192fdc6004107108102200141186a41c4afc6004112108102200120003602342001200141346a410410a301370338200141cc006a200141346a41046a3602002001200141c0006a3602442001200141346a3602482001200141386a360240200141286a200141c0006a107c2001280230220241206a2203417f4c0d000240024020030d00410121040c010b2003102c2204450d020b200141003602482001200336024420012004360240200141c0006a200141086a41101074200141c0006a200141186a41101074200141c0006a20012802282203200210740240200128022c450d002003102e0b20012802402203200128024810890302402001280244450d002003102e0b200141086a4192fdc6004107108102200141186a41c0b0c6004112108102200120003602342001200141346a410410a301370338200141cc006a200141346a41046a3602002001200141c0006a3602442001200141346a3602482001200141386a360240200141286a200141c0006a107c2001280230220241206a2203417f4c0d000240024020030d00410121040c010b2003102c2204450d020b200141003602482001200336024420012004360240200141c0006a200141086a41101074200141c0006a200141186a41101074200141c0006a20012802282203200210740240200128022c450d002003102e0b20012802402203200128024810890302402001280244450d002003102e0b200141086a4192fdc6004107108102200141186a418cb1c6004113108102200120003602342001200141346a410410a301370338200141cc006a200141346a41046a3602002001200141c0006a3602442001200141346a3602482001200141386a360240200141286a200141c0006a107c2001280230220241206a2203417f4c0d000240024020030d00410121040c010b2003102c2204450d020b200141003602482001200336024420012004360240200141c0006a200141086a41101074200141c0006a200141186a41101074200141c0006a20012802282203200210740240200128022c450d002003102e0b20012802402203200128024810ff0102402001280244450d002003102e0b200141c0006a200010a10520012802402203200128024810ff0102402001280244450d002003102e0b200141086a4192fdc6004107108102200141186a4188b2c600410e108102200120003602342001200141346a410410a301370338200141cc006a200141346a41046a3602002001200141c0006a3602442001200141346a3602482001200141386a360240200141286a200141c0006a107c2001280230220241206a2203417f4c0d000240024020030d00410121040c010b2003102c2204450d020b200141003602482001200336024420012004360240200141c0006a200141086a41101074200141c0006a200141186a41101074200141c0006a20012802282203200210740240200128022c450d002003102e0b20012802402203200128024810ff0102402001280244450d002003102e0b200141c0006a200010950320012802402200200128024810ff0102402001280244450d002000102e0b200141d0006a24000f0b1038000b1036000bae0301037f230041f0006b22032400200341086a4192fdc6004107108102200341186a41c4afc6004112108102200320013602382003200341386a410410a301370348200341ec006a2201200341386a41046a3602002003200341c8006a41086a3602642003200341386a3602682003200341c8006a360260200341286a200341e0006a107c024002404120102c2204450d002003422037024c20032004360248200341c8006a2002412010742003200328024822022003280250220410a3013703582001200220046a360200200320023602682003200341d8006a41086a3602642003200341d8006a360260200341386a200341e0006a107c0240200328024c450d002002102e0b20032802302201200328024022046a41206a2202417f4c0d010240024020020d00410121050c010b2002102c2205450d010b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341f0006a24000f0b1036000b1038000bae0301037f230041f0006b22032400200341086a4192fdc6004107108102200341186a41c0b0c6004112108102200320013602382003200341386a410410a301370348200341ec006a2201200341386a41046a3602002003200341c8006a41086a3602642003200341386a3602682003200341c8006a360260200341286a200341e0006a107c024002404120102c2204450d002003422037024c20032004360248200341c8006a2002412010742003200328024822022003280250220410a3013703582001200220046a360200200320023602682003200341d8006a41086a3602642003200341d8006a360260200341386a200341e0006a107c0240200328024c450d002002102e0b20032802302201200328024022046a41206a2202417f4c0d010240024020020d00410121050c010b2002102c2205450d010b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341f0006a24000f0b1036000b1038000b850201037f230041d0006b22022400200241086a4192fdc6004107108102200241186a41d0b3c6004110108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000ba20a08037f047e017f027e017f027e017f047e23004180026b2201240020014200370348200142003703402001200041186a29030037035820012000290310370350200041386a2000290300200041086a290300200141d0006a200141c0006a10ca080240200041286a28020041306c2202450d002000280220210303402003200341206a290300200341286a290300200141d0006a200141c0006a10ca08200341306a2103200241506a22020d000b0b200141c0006a41086a29030021042001290340210502400240024020012903502206200141d0006a41086a290300220784500d00200041346a28020022030d010b2001200537036020012004370368024020052004844200520d002001200141e0006a3602e001200141e0016a10cc020c020b200142f0f2bda1a7ee9cb9f9003703e001200141e0006a200141e0016a10cd022001200141e0006a2005200410fd01200141f0016a200141086a290300220620047d20012903002207200554ad7d200420067d2005200754ad7d2007200556200620045620062004511b22031b3703002001200720057d200520077d20031b3703e80120012003ad3703e001200141e0016a41086a21020240024020030d00200120023602fc01200141fc016a10cc020c010b200120023602fc01200141fc016a10ce020b200141f8006a2004370300200141f0006a2005370300200141e8006a41063a00002001410e3a0060200141e0006a10fe010c010b200028022c2102200141306a200520062005200654200420075420042007511b22081b22092004200720081b220a2003ad420010e70820034105742108200141e0006a41086a210b200141306a41086a290300210c2001290330210d200141f0006a210e2009210f200a21100340200141206a2002200d200f200f200d562010200c562010200c511b22031b2207200c201020031b220610fd01200e200141206a41086a290300221120067d20012903202212200754ad7d200620117d2007201254ad7d2012200756201120065620112006511b22031b3703002001201220077d200720127d20031b37036820012003ad370360201020067d2106200f200754ad21100240024020030d002001200b3602e001200141e0016a10cc020c010b2001200b3602e001200141e0016a10ce020b200620107d2110200f20077d210f200241206a2102200841606a22080d000b2001427f2004200a7d2005200954ad7d221220107c200520097d2211200f7c220c2011542203ad7c22072003200720125420072012511b22031b22063703682001427f200c20031b220737036002402011200f842012201084844200520d002001200141e0006a3602e001200141e0016a10cc020c010b200142f0f2bda1a7ee9cb9f9003703e001200141e0006a200141e0016a10cd02200141106a200141e0006a2007200610fd01200141f0016a200141106a41086a290300221020067d2001290310220f200754ad7d200620107d2007200f54ad7d200f200756201020065620102006511b22031b3703002001200f20077d2007200f7d20031b3703e80120012003ad3703e001200141e0016a41086a21020240024020030d00200120023602fc01200141fc016a10cc020c010b200120023602fc01200141fc016a10ce020b200141f8006a2006370300200141f0006a2007370300200141e8006a41063a00002001410e3a0060200141e0006a10fe010b0240200041246a2802002203450d00200341306c450d002000280220102e0b0240200041306a28020041ffffff3f71450d00200028022c102e0b20014180026a24000b8f0201027f20014180feff07714108762102024002402001410171450d00411f210341aae7cc00210102400240200241ff01710e03000103000b41c100210341e9e6cc0021010c020b41c100210341a8e6cc0021010c010b411f21034189e6cc002101024002400240024002400240024002400240200241ff01710e0a00060102030405090708000b4120210341e9e5cc0021010c080b412721034189e5cc0021010c070b4117210341f2e4cc0021010c060b41d3e4cc0021010c050b4126210341ade4cc0021010c040b412a21034183e4cc0021010c030b4139210341b0e5cc0021010c020b413b210341c8e3cc0021010c010b41d200210341f6e2cc0021010b20002003360204200020013602000b4201027f41032102024020014105490d004100210302400240024020002d00040e03020001030b410121030c010b410221030b2003410320014105461b21020b20020be30101047f0240024002400240200128020022022802042203450d00200228020022042d0000210520022003417f6a3602042002200441016a36020020050e020203010b200041023602000f0b200041023602000f0b200041003602000f0b02402001280200220228020422034104490d0020022802002204280000210520022003417c6a3602042002200441046a3602002001280200220228020422014104490d00200020053602042000410136020020022802002203280000210420022001417c6a3602042002200341046a360200200041086a20043602000f0b200041023602000bc40101047f024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a36020020040e020203010b200041023602000f0b200041023602000f0b200041003602000f0b024020054104490d002003280001210520012002417b6a22043602042001200341056a36020020044104490d002000200536020420004101360200200328000521042001200241776a3602042001200341096a360200200041086a20043602000f0b200041023602000bc60401047f230041106b22022400024002400240024020002d00000e03010200010b200041046a280200220041ffff03200041ffff03491b220341c0006a41ff0020032000413e2003413e491b2204461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d0402400240200341ff014b0d002003417f6a2100410021030c010b200341817e6a210341ff0121000b410221040b200220003a000f20012002410f6a41011074200521000c000b0b200241003a000f20012002410f6a410110740c010b200041046a2802002203413e200341ffff03200341ffff03491b2203413e491b2104024020002d0001450d00200341406a417f20032004461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d0302400240200341ff014b0d002003417f6a2100410021030c010b200341817e6a210341ff0121000b410221040b200220003a000f20012002410f6a41011074200521000c000b0b200341807f7341bf7f20032004461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d0202400240200341ff014b0d002003417f6a2100410021030c010b200341817e6a210341ff0121000b410221040b200220003a000f20012002410f6a41011074200521000c000b0b200241106a24000b13002000411436020420004184ecc6003602000bd5b1020a017f027e057f027e027f057e107f017e047f027e230041e0066b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e18000102030405060708090a0b0c0d0e0f10111213201f1e1d000b200341f4056a4101360200200342013702e4052003419cc3cb003602e005200341043602840520034194c3cb0036028005200320034180056a3602f005200341e0056a41f4ebc6001044000b200141d0006a2903002104200141c8006a2903002105200341d8026a41026a200141276a2d00003a0000200341b0036a41086a200141386a290200370300200341b0036a41106a200141c0006a2902003703002003200141256a2f00003b01d8022003200141306a2902003703b003200141246a2d00002106200141286a28020021072001412c6a2802002108200341b8046a41206a200141216a2d00003a0000200341b8046a41186a200141196a290000370300200341b8046a41106a200141116a290000370300200341b8046a41086a200141096a290000370300200320012900013703b804200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034180056a41096a29000037030020034180046a41106a220120034180056a41116a29000037030020034180046a41186a220920034180056a41196a29000037030020032003290081053703800402400240024020032d0080054101460d00200341d8036a41186a2009290300370300200341d8036a41106a2001290300370300200341d8036a41086a200229030037030020032003290380043703d803200341e0056a200341d8036a10e50520032802e005220120032802e805108f022102024020032802e405450d002001102e0b02402002450d00200341a8046a41031082060c020b20034180046a41026a2202200341d8026a41026a2d00003a0000200341e0056a41086a2201200341b0036a41086a290300370300200341e0056a41106a200341b0036a41106a290300370300200320032f01d8023b018004200320032903b0033703e0050240024002400240024020064107710e03000201020b200341f0026a410d6a2206200341e0056a410d6a290000370000200341f0026a41086a22092001290300370300200341d8056a41026a220120022d00003a000020034190036a41086a2202200929030037030020034190036a410d6a22092006290000370000200320032f0180043b01d805200320032903e00537039003200320012d00003a008205200320032f01d8053b0180052003200836008705200320073600830520034198056a200929000037000020034193056a2002290300370000200320032903900337008b05200341e0056a20034180056a10d30520032802e005220120032802e805108f022102024020032802e405450d002001102e0b2002450d03200341a8046a41041082060c060b02402008450d002007102e0b200341d8056a41026a2003418c036a41026a2d00003a000020034190036a41086a200341f0026a41086a29030037030020034190036a410d6a200341f0026a410d6a290000370000200320032f018c033b01d805200320032903f002370390030c010b200341d8056a41026a2003418c036a41026a2d00003a000020034190036a41086a200341f0026a41086a29030037030020034190036a410d6a200341f0026a410d6a290000370000200320032f018c033b01d805200320032903f002370390030b200341013a00a8040c030b0240200542ffc7afa0255620044200522004501b0d00200341a8046a41081082060c030b0240200341d8036a1083060d0020034180046a200341d8036a10e505200328028804210120032802800421024120102c2206450d41200342203702e405200320063602e005200341e0056a20034180056a412010742002200120032802e005220620032802e80510b201024020032802e405450d002006102e0b0240200328028404450d002002102e0b200341e0056a41206a200341b8046a41206a2d00003a0000200341e0056a41186a200341b8046a41186a290300370300200341e0056a41106a200341b8046a41106a290300370300200341e0056a41086a200341b8046a41086a290300370300200320032903b8043703e005200341e0046a200341d8036a10840620032802e804210120032802e00421022003410036028804200342013703800402400240024002400240024020032d00e0050e050001020304050b200341003a00900320034180046a20034190036a410110740c040b200341013a00900320034180046a20034190036a410110740c030b200341023a00900320034180046a20034190036a410110740c020b200341033a00900320034180046a20034190036a4101107420034180046a200341e0056a410172412010740c010b200341043a00900320034180046a20034190036a410110740b20022001200328028004220620032802880410b2010240200328028404450d002006102e0b024020032802e404450d002002102e0b20034180046a41186a2202420037030020034180046a41106a2201420037030020034180046a41086a220642003703002003420037038004200341f0026a4192fdc60041071081022006200341f0026a41086a2207290300370300200320032903f0023703800420034190036a4194adc600410a108102200220034190036a41086a22082903003703002001200329039003370300200341106a20034180046a4120108e02200328021421092003280210210a2002420037030020014200370300200642003703002003420037038004200341f0026a4192fdc600410710810220062007290300370300200320032903f0023703800420034190036a41e0a9c600410c108102200220082903003703002001200329039003370300200341086a20034180046a4120108e02200328020c21022003280208210120034180046a200341d8036a10c802200341e0056a200328028004220720032802880410c902410020094100200a1b2206200241d40020011b6b2202200220064b1b2102200341e0056a41106a290300420020032903e00542015122011b210b20032903e805420020011b210c0240200328028404450d002007102e0b200341e0056a41086a41053a0000200341e9056a20032903d803370000200341f1056a200341d8036a41086a290300370000200341f9056a200341d8036a41106a29030037000020034181066a200341d8036a41186a220129030037000020034198066a200b2004200c200554200b200454200b2004511b22071b220437030020034190066a200c200520071b2205370300200341043a00e005200341e0056a10fe012008200341eb036a2900003703002003419d036a2001290000370000200320032f01d8033b01d805200320032d00da033a00da05200320032900e303370390034100200620026b2209200920064b1b220141ffffffff03712001470d3b20014102742208417f4c0d3b20032800df03210d20032800db03210e0240024020080d00410421070c010b2008102c2207450d420b024002402008410276220a20014f0d002008410176220a2001200a20014b1b22014104200141044b1b220141ffffffff0371200146410274210a200141027421010240024020080d00200341003602e0050c010b200341e8056a4104360200200320083602e405200320073602e0050b20034180046a2001200a200341e0056a107d20034188046a28020021012003280280044101460d0120032802840421072001410276210a0b410021010240200620024d0d0020072101034020012002360200200141046a21012006200241016a2202470d000b200921010b200341e0056a41186a20043703002003419a066a20032d00da053a00002003419f066a200d3600002003419b066a200e360000200341a3066a20032903900337000020034194066a200136020020034190066a200a36020020034188066a4100360200200341ab066a20034198036a290300370000200341b0066a2003419d036a290000370000200320053703f005200320053703e005200320032f01d8053b0198062003200736028c062003420837038006200320043703e80542f3e885db96cddbb32020034198066a20052004411f10850620034180056a200341e0056a10d205024020034184066a2802002202450d00200241186c450d00200328028006102e0b024020032802900641ffffffff0371450d00200328028c06102e0b200341063a00a8040c430b2001450d3b0c410b200341a8046a41121082060c020b200341023a00a8040b200641ff01714102470d002008450d002007102e0b20032d00a8044106460d3e20032802a8042102200020032902ac04370024200041206a2002360000200041186a41003a000020004200370308200042013703000c3f0b200141106a2903002104200141086a2903002105200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034189056a29000037030020034180046a41106a220120034191056a29000037030020034180046a41186a220620034180056a41196a29000037030020032003290081053703800420032d0080054101460d19200341e0046a41186a2006290300370300200341e0046a41106a2001290300370300200341e0046a41086a200229030037030020032003290380043703e004200341d8036a200341e0046a10e505200341e0056a20032802d803220220032802e00310f40220034180056a41086a200341ea056a29010037030020034180056a41106a200341f2056a29010037030020034180056a41176a2201200341e0056a41196a290000370000200320032901e2053703800502400240024020032d00e0054101470d0020032d00e105210620034190036a41176a200129000037000020034190036a41106a220120034180056a41106a29030037030020034190036a41086a220820034180056a41086a290300370300200320032903800537039003024020032802dc03450d002002102e0b20034180046a41176a220720034190036a41176a29000037000020034180046a41106a22022001290300370300200341c1046a2008290300370000200341c9046a2002290300370000200341b8046a41186a2007290000370000200320063a00b80420032003290390033700b90420034190036a200341b8046a10d305200341e0056a200328029003220120032802980310e60520034180046a41086a2003419c066a2902003703002002200341a4066a29020037030020034180046a41186a2202200341ac066a29020037030020034180046a41206a2206200341b4066a280200360200200320034194066a2902003703800402402003280280062208450d00200341e0056a41186a290300210f200341e0056a41086a290300210c20034190066a28020021072003418c066a280200210920034188066a280200210a20032903f005211020032903e005210b200328028406210d200341d8036a41206a2006280200360200200341d8036a41186a2002290300370300200341d8036a41106a220220034180046a41106a290300370300200341d8036a41086a220620034180046a41086a29030037030020032003290380043703d8030240200328029403450d002001102e0b200341b0036a41086a22012006290300370300200341b0036a41106a22062002290300370300200341b0036a41186a2202200341d8036a41186a290300370300200341b0036a41206a220e200341d8036a41206a28020036020020034180056a41186a200f370300200341b0056a2007360200200341a8056a200a360200200341a4056a200d360200200320032903d8033703b00320032010370390052003200b37038005200320093602ac05200320083602a0052003200c37038805200341d4056a200e280200360200200341cc056a2002290300370200200341c4056a2006290300370200200341bc056a2001290300370200200341b4056a20032903b00337020020034180046a200341e0046a10c802200341e0056a200328028004220120032802880410c902200341e0056a41106a290300420020032903e00542015122021b210f20032903e805420020021b21100240200328028404450d002001102e20034188056a290300210c200329038005210b0b2010200b7d2211201056200f200c7d2010200b54ad7d2210200f562010200f511b0d0320034180056a41186a2202290300211220032003290390052213200520112011200556201020045620102004511b22011b22057c220f37039005200220122004201020011b22107c200f201354ad7c220437030020032005200b7c220b3703800520032010200c7c200b200554ad7c220c37038805200f42ffc7afa0255620044200522004501b0d02200341f0026a4108108206024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d3e20032802ac05102e0c3e0b0240200328029403450d002001102e0b200341f0026a41011082060c3d0b024020032802dc03450d002002102e0b200341f0026a41021082060c3c0b200341e0056a41386a201037030020034190066a2005370300200341e0056a41086a41053a0000200341e9056a20032903e004370000200341f1056a200341e0046a41086a290300370000200341f9056a200341f0046a29030037000020034181066a200341e0046a41186a290300370000200341043a00e005200341e0056a10fe0142f3e885db96cddbb32020034180056a41386a200b200c411f108506200341b8046a20034180056a10d2050b024020032802a4052202450d00200241186c450d0020032802a005102e0b024020032802b00541ffffffff0371450d0020032802ac05102e0b200341063a00f0020c3b0b200141106a2903002104200141086a2903002105200341e0056a41286a2206200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a2208200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2207200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034190036a41086a220220034194056a2902003703002003419d036a220120034199056a290000370000200320032f0081053b01d805200320032d0083053a00da0520032003418c056a290200370390030240024020032d0080054101460d0020034180056a41086a2802002109200328028405210a200341cb046a2002290300370000200341b8046a41186a2001290000370000200320032d00da053a00ba04200320032f01d8053b01b804200320093600bf042003200a3600bb0420032003290390033700c304200341e0046a200341b8046a10d305200341e0056a20032802e004220920032802e80410e60520034180046a41086a2003419c066a29020037030020034180046a41106a200341a4066a29020037030020034180046a41186a200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062201450d002008290300210b2007290300210f20034190066a28020021082003418c066a28020021072006280200210620032903f005210c20032903e00521102003280284062102200341d8036a41206a220a20034180046a41206a280200360200200341d8036a41186a220d20034180046a41186a290300370300200341d8036a41106a220e20034180046a41106a290300370300200341d8036a41086a221420034180046a41086a29030037030020032003290380043703d803024020032802e404450d002009102e0b200341b0036a41086a22092014290300370300200341b0036a41106a2214200e290300370300200341b0036a41186a220e200d290300370300200341b0036a41206a220d200a28020036020020034180056a41186a200b370300200341b0056a2008360200200341a8056a2006360200200341a4056a2002360200200320032903d8033703b0032003200c370390052003201037038005200320073602ac05200320013602a0052003200f37038805200341d4056a200d280200360200200341cc056a200e290300370200200341c4056a2014290300370200200341bc056a2009290300370200200341b4056a20032903b0033702002006411f4d0d02200341a8046a4109108206024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d3920032802ac05102e0c390b024020032802e404450d002009102e0b200341a8046a41011082060c380b200341023a00a8040c380b02400240200c2005200c200554200b200454200b2004511b22061b2205200b200420061b220484500d0020034180056a41186a4200200b20047d200c200554ad7d220f200c20057d22104280c8afa025544100200f501b22061b37030020034200201020061b3703900520034180046a41186a2202420037030020034190046a2208420037030020034180046a41086a220742003703002003420037038004200341f0026a4192fdc60041071081022007200341f0026a41086a290300370300200320032903f0023703800420034190036a4194adc600410a108102200220034190036a41086a2903003703002008200329039003370300200341186a20034180046a4120108e02200328021c210820032802182107024020032802a805220220032802a405470d00200241016a22092002490d382002410174220a2009200a20094b1b22094104200941044b1bad42187e220f422088a7454103742109200fa7210a0240024020020d00200341003602e0050c010b200341e0056a41086a4108360200200320013602e0052003200241186c3602e4050b20034180046a200a2009200341e0056a107d20034188046a28020021022003280280044101460d02200320032802840422013602a0052003200241186e3602a40520032802a80521020b2001200241186c6a2202200b200420061b22043703082002200c200520061b220537030020022008411c6a411c20071b360210200320032802a80541016a3602a80542f3e885db96cddbb32020034180056a41386a20032903800520034180056a41086a290300411f108506200341b8046a20034180056a10d205200341e0056a41386a200437030020034190066a2005370300200341e0056a41086a41063a0000200341e9056a20032903b805370000200341f1056a200341c0056a290300370000200341f9056a200341c8056a29030037000020034181066a200341d0056a290300370000200341043a00e005200341e0056a10fe0120032802a40521020b02402002450d00200241186c450d0020032802a005102e0b024020032802b00541ffffffff0371450d0020032802ac05102e0b200341063a00a8040c390b20020d3b0c350b200141046a280200210e200341e0056a41286a2207200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a220a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a220d200241086a290200370300200320022902003703e00520034180056a200341e0056a10c102410221022003418c036a41026a220120032d0083053a0000200341f0026a41086a220620034194056a290200370300200341fd026a220820034199056a290000370000200320032f0081053b018c0320032003418c056a2902003703f002024002400240024020032d0080054101460d0020034180056a41086a28020021022003280284052109200341f3046a2006290300370000200341e0046a41186a2008290000370000200320032f018c033b01e004200320023600e704200320093600e304200320032903f0023700eb04200320012d00003a00e204200341b8046a200341e0046a10d305200341e0056a20032802b804221420032802c00410e60520034180046a41086a2003419c066a29020037030020034180046a41106a200341a4066a29020037030020034180046a41186a200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062209450d00200a2903002104200d290300210f20034190066a280200210d2003418c066a28020021152007280200210220032903f005210520032903e0052110200328028406210a200341d8036a41206a220720034180046a41206a280200360200200341d8036a41186a221620034180046a41186a2201290300370300200341d8036a41106a221720034180046a41106a2206290300370300200341d8036a41086a221820034180046a41086a220829030037030020032003290380043703d803024020032802bc04450d002014102e0b200341b0036a41086a22142018290300370300200341b0036a41106a22182017290300370300200341b0036a41186a22172016290300370300200341b0036a41206a2216200728020036020020034180056a41186a2004370300200341b0056a200d360200200341a8056a2002360200200341a4056a200a360200200320032903d8033703b00320032005370390052003201037038005200320153602ac05200320093602a0052003200f37038805200341d4056a2016280200360200200341cc056a2017290300370200200341c4056a2018290300370200200341bc056a2014290300370200200341b4056a220720032903b003370200200341b8046a41186a200341d0056a220d290300370300200341b8046a41106a200341c8056a290300370300200341b8046a41086a200341c0056a290300370300200320032903b8053703b8042001420037030020064200370300200842003703002003420037038004200341f0026a4192fdc60041071081022008200341f0026a41086a290300370300200320032903f0023703800420034190036a4194adc600410a108102200120034190036a41086a2903003703002006200329039003370300200341206a20034180046a4120108e0220032802204101460d0220102105200f210b0c030b024020032802bc04450d002014102e0b200341e0056a4101108206200341da026a20032d00e3053a0000200320032f00e1053b01d80220032d00e005210220032902e40521040c030b0c020b20032802242108200341e0056a41086a2216200728020036020020034190036a41086a2217200341cb056a29000037030020034190036a410d6a2218200d290000370000200320032902ac053703e0052003200341c3056a220d290000370390032003200341b8056a22142f01003b01d8052003201441026a22192d00003a00da05200341ac056a211520034180056a41186a221a2903002111200341bf056a280000211b200341bb056a280000211c20032903900521120240024020020d0020102105200f210b200921010c010b2009200241186c6a210720102105200f210b20092102200921010340200241086a290300210c20022903002104024002402008200241106a28020022064f0d0020012004370300200120063602102001200c370308200141186a21010c010b4200200b200c7d2005200454ad7d220c200520047d2204200556200c200b56200c200b511b22061b210b4200200420061b21050b200241186a22022007470d000b0b201520032903e005370200201420032f01d8053b0100200d200329039003370000201a2011370300201920032d00da053a0000201541086a2016280200360200200d41086a2017290300370000200d410d6a2018290000370000200320123703900520032005370380052003200a3602a4052003201b3600bf052003201c3600bb052003200b37038805200320093602a0052003200120096b41186d22023602a8050b0240024020020d002003290390054280c8afa02554410020034198056a290300501b0d010b42f3e885db96cddbb320200341b8056a2005200b411f108506200ead42f8d2017e4288ca87d8017c2105200341e0046a20034180056a10d2054201210b0c350b200341e0056a200341b8046a200e108606200341b0036a41026a220120032d00e3053a0000200320032f00e1053b01b003024020032d00e00522024106470d0042f3e885db96cddbb320200341b8046a10ea024200210b0c350b20032902e4052104200341d8026a41026a20012d00003a0000200320032f01b0033b01d802024020032802a4052201450d00200141186c450d0020032802a005102e0b20032802b00541ffffffff0371450d0020032802ac05102e0b200341d4026a41026a2201200341d8026a41026a2d00003a0000200320032800a8043602e002200320032f01d8023b01d4022003200341ab046a2800003600e302200041186a41003a000020004200370308200020032802e0023600192000411c6a20032800e302360000200041206a20023a000020002004370024200020032f01d4023b0021200041236a20012d00003a0000200042013703000c3c0b200141086a2d00002108200141046a2802002107200341e0056a41286a2209200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a220a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a220d200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034189056a29000037030020034180046a41106a220120034191056a29000037030020034180046a41186a220620034199056a29000037030020032003290081053703800420032d0080054101460d15200341b8046a41186a2006290300370300200341b8046a41106a2001290300370300200341b8046a41086a200229030037030020032003290380043703b804200341e0046a200341b8046a10d305200341e0056a20032802e004220e20032802e80410e60520022003419c066a2902003703002001200341a4066a2902003703002006200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062201450d00200a2903002104200d290300210520034190066a28020021062003418c066a280200210a2009280200210920032903f005210b20032903e005210c2003280284062102200341d8036a41206a220d20034180046a41206a280200360200200341d8036a41186a221420034180046a41186a290300370300200341d8036a41106a221520034180046a41106a290300370300200341d8036a41086a221620034180046a41086a29030037030020032003290380043703d803024020032802e404450d00200e102e0b200341b0036a41086a220e2016290300370300200341b0036a41106a22162015290300370300200341b0036a41186a22152014290300370300200341b0036a41206a2214200d28020036020020034180056a41186a2004370300200341b0056a2006360200200341a8056a2009360200200341a4056a2002360200200320032903d8033703b0032003200b370390052003200c370380052003200a3602ac05200320013602a0052003200537038805200341d4056a2014280200360200200341cc056a2015290300370200200341c4056a2016290300370200200341bc056a200e290300370200200341b4056a20032903b003370200200341e0056a200341b8056a220910d10520032802e005220d20032802e80510ff01024020032802e405450d00200d102e0b200320083a00dc03200320073602d80320034180046a200910860520032802880421092003280280042107200341003602e805200342013703e005200341d8036a200341e0056a109102200320083a00b003200341e0056a200341b0036a410110742007200920032802e005220820032802e80510b201024020032802e405450d002008102e0b0240200328028404450d002007102e0b02402002450d00200241186c450d002001102e0b0240200641ffffffff0371450d00200a102e0b200341063a0090030c320b024020032802e404450d00200e102e0b20034190036a410110820620032d0090034106460d3120032902940321040c300b2001410c6a2802002106200141086a2802002108200141046a2802002107200341e0056a41286a2209200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a220a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a220d200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034190036a41086a220220034194056a2902003703002003419d036a220120034199056a290000370000200320032f0081053b01d805200320032d0083053a00da05200320034180056a410c6a290200370390030240024002400240024020032d0080054101460d0020034180056a41086a280200210e2003280284052114200341f3046a2002290300370000200341e0046a41186a2001290000370000200320032d00da053a00e204200320032f01d8053b01e0042003200e3600e704200320143600e30420032003290390033700eb04200341b8046a200341e0046a10d305200341e0056a20032802b804220e20032802c00410e60520034180046a41086a2003419c066a29020037030020034180046a41106a200341a4066a29020037030020034180046a41186a200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a29020037038004024002402003280280062201450d00200a2903002104200d290300210520034190066a280200210a2003418c066a280200210d2009280200210920032903f005210b20032903e005210c2003280284062102200341d8036a41206a221420034180046a41206a280200360200200341d8036a41186a221520034180046a41186a290300370300200341d8036a41106a221620034180046a41106a290300370300200341d8036a41086a221720034180046a41086a29030037030020032003290380043703d803024020032802bc04450d00200e102e0b200341b0036a41086a220e2017290300370300200341b0036a41106a22172016290300370300200341b0036a41186a22162015290300370300200341b0036a41206a2215201428020036020020034180056a41186a2004370300200341b0056a200a360200200341a8056a2009360200200341a4056a2002360200200320032903d8033703b0032003200b370390052003200c370380052003200d3602ac05200320013602a0052003200537038805200341d4056a2015280200360200200341cc056a2016290300370200200341c4056a2017290300370200200341bc056a200e290300370200200341b4056a20032903b00337020020060d01200341e0026a410510820602402002450d00200241186c450d002001102e0b200a41ffffffff0371450d05200d102e0c050b024020032802bc04450d00200e102e0b200341e0026a41011082060c020b024020064111490d00200341e0026a411310820602402002450d00200241186c450d002001102e0b200a41ffffffff0371450d03200d102e0c030b20034180046a200341b8056a221510d105200341e0056a2003280280042202200328028804108706200341f0026a41086a2201200341e0056a41086a290300370300200320032903e0053703f0020240024020032d00f0054102460d00200341b8046a41086a2001290300370300200320032903f0023703b8040240200328028404450d002002102e0b200341a8046a41086a200341b8046a41086a280200360200200320032903b8043703a8040c010b0240200328028404450d002002102e0b200341003602b004200342013703a8040b200341063a00f00220032007200641246c6a3602e403200320073602e003200320083602dc03200320073602d8032003200341f0026a3602ec032003200341a8046a3602e803200341e0056a200341d8036a1088060240024020032d00e0054101470d004120102c2209450d3f200920032900e105370000200941186a200341f9056a290000370000200941106a200341f1056a290000370000200941086a200341e9056a29000037000020034180046a41106a200341d8036a41106a29030037030020034180046a41086a200341d8036a41086a290300370300200320032903d80337038004200341e0056a20034180046a10880602400240024020032d00e0050d0041012101410121080c010b200341e0056a41017221024120210741012101410121080340200341b8046a41186a220a200241186a290000370300200341b8046a41106a220d200241106a290000370300200341b8046a41086a220e200241086a290000370300200320022900003703b804024020082001470d00200141016a22062001490d3d200141017422142006201420064b1b22064104200641044b1b220641ffffff3f712006462114200641057421060240024020010d00200341003602b0030c010b200341013602b803200320093602b003200320014105743602b4030b20034190036a20062014200341b0036a107d20032802980321012003280290034101460d032003280294032109200141057621010b200920076a220620032903b804370000200641186a200a290300370000200641106a200d290300370000200641086a200e290300370000200741206a2107200841016a2108200341e0056a20034180046a10880620032d00e0050d000b0b200328028c0420032802880422026b220641246d210702402006450d00200741246c21060340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022006415c6a22060d000b0b2003280284042202450d02200241246c450d02200328028004102e0c020b20010d3f0c390b20032802e40320032802e00322026b220141246d210602402001450d00200641246c21010340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b4100210141012109024020032802dc032202450d00200241246c450d0020032802d803102e0b410021080b200341f0026a41086a2102024020032d00f00222064106460d0020032f00f10220032d00f3024110747221082002280200210220032802f40221070240200141ffffff3f71450d002009102e0b200341e8026a2002360200200320073602e402200320063a00e002200320083b00e102200320084110763a00e302024020032802ac0441ffffff3f71450d0020032802a804102e0b024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d0520032802ac05102e0c050b20034198046a2206420037030020034180046a41106a2207420037030020034180046a41086a220a4200370300200342003703800420034190036a4192fdc6004107108102200a20034190036a41086a290300370300200320032903900337038004200341f0026a4194adc600410a10810220062002290300370300200720032903f002370300200341286a20034180046a4120108e02200328022c210220032802282106200341e0056a201510860520032802e005220720032802e80510ff01024020032802e405450d002007102e0b2002410020061b210a200341b8046a201510d10520032802c004210d20032802b8042107200341003602e805200342013703e0052008200341e0056a107602402008450d0020084105742106200921020340200341e0056a200241201074200241206a2102200641606a22060d000b0b2003200a36028004200341e0056a20034180046a41041074200341003a00b003200341e0056a200341b0036a410110742007200d20032802e005220220032802e80510b201024020032802e405450d002002102e0b024020032802bc04450d002007102e0b0240200141ffffff3f71450d002009102e0b024020032802ac0441ffffff3f71450d0020032802a804102e0b024020032802a4052202450d00200241186c450d0020032802a005102e0b024020032802b00541ffffffff0371450d0020032802ac05102e0b200341063a00e0020c330b200341023a00e0020b2006450d010b200641246c2101200721020340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b2008450d00200841246c450d002007102e0b20032d00e0024106460d2e20032802e0022102200020032902e402370024200041206a2002360000200041186a41003a000020004200370308200042013703000c3a0b200341e0056a41286a2208200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a2207200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2209200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034189056a29000037030020034180046a41106a220120034191056a29000037030020034180046a41186a220620034199056a29000037030020032003290081053703800420032d0080054101460d12200341b8046a41186a2006290300370300200341b8046a41106a2001290300370300200341b8046a41086a200229030037030020032003290380043703b804200341e0046a200341b8046a10d305200341e0056a20032802e004220a20032802e80410e60520022003419c066a2902003703002001200341a4066a2902003703002006200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062201450d00200729030021042009290300210520034190066a28020021062003418c066a28020021072008280200210820032903f005210b20032903e005210c2003280284062102200341d8036a41206a220920034180046a41206a280200360200200341d8036a41186a220d20034180046a41186a290300370300200341d8036a41106a220e20034180046a41106a290300370300200341d8036a41086a221420034180046a41086a29030037030020032003290380043703d803024020032802e404450d00200a102e0b200341b0036a41086a220a2014290300370300200341b0036a41106a2214200e290300370300200341b0036a41186a220e200d290300370300200341b0036a41206a220d200928020036020020034180056a41186a2004370300200341b0056a2006360200200341a8056a2008360200200341a4056a2002360200200320032903d8033703b0032003200b370390052003200c37038005200320073602ac05200320013602a0052003200537038805200341d4056a200d280200360200200341cc056a200e290300370200200341c4056a2014290300370200200341bc056a200a290300370200200341b4056a20032903b003370200200341e0056a200341b8056a220810860520032802e005220920032802e80510ff01024020032802e405450d002009102e0b200341e0056a200810d10520032802e005220820032802e80510ff01024020032802e405450d002008102e0b02402002450d00200241186c450d002001102e0b0240200641ffffffff0371450d002007102e0b200341063a0090030c2d0b024020032802e404450d00200a102e0b20034190036a410110820620032d0090034106460d2c20032902940321040c2b0b200341b8046a41206a200141216a2d00003a0000200341b8046a41186a200141196a290000370300200341b8046a41106a200141116a290000370300200341b8046a41086a200141096a290000370300200320012900013703b804200341e0056a41286a2208200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a2207200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2209200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034180056a41096a29000037030020034180046a41106a220120034180056a41116a29000037030020034180046a41186a220620034180056a41196a29000037030020032003290081053703800420032d0080054101460d10200341e0046a41186a2006290300370300200341e0046a41106a2001290300370300200341e0046a41086a200229030037030020032003290380043703e00420034190036a200341e0046a10d305200341e0056a200328029003220a20032802980310e60520022003419c066a2902003703002001200341a4066a2902003703002006200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062201450d00200729030021042009290300210520034190066a28020021062003418c066a28020021072008280200210820032903f005210b20032903e005210c2003280284062102200341d8036a41206a220920034180046a41206a280200360200200341d8036a41186a220d20034180046a41186a290300370300200341d8036a41106a220e20034180046a41106a290300370300200341d8036a41086a221420034180046a41086a29030037030020032003290380043703d8030240200328029403450d00200a102e0b200341b0036a41086a220a2014290300370300200341b0036a41106a2214200e290300370300200341b0036a41186a220e200d290300370300200341b0036a41206a220d200928020036020020034180056a41186a2004370300200341b0056a2006360200200341a8056a2008360200200341a4056a2002360200200320032903d8033703b0032003200b370390052003200c37038005200320073602ac05200320013602a0052003200537038805200341d4056a200d280200360200200341cc056a200e290300370200200341c4056a2014290300370200200341bc056a200a290300370200200341b4056a20032903b003370200200341e0056a41206a200341b8046a41206a2d00003a0000200341e0056a41186a200341b8046a41186a290300370300200341e0056a41106a200341b8046a41106a290300370300200341e0056a41086a200341b8046a41086a290300370300200320032903b8043703e005200341d8036a200341b8056a10840620032802e003210920032802d80321082003410036028804200342013703800402400240024002400240024020032d00e0050e050001020304050b200341003a00b00320034180046a200341b0036a410110740c040b200341013a00b00320034180046a200341b0036a410110740c030b200341023a00b00320034180046a200341b0036a410110740c020b200341033a00b00320034180046a200341b0036a4101107420034180046a200341e0056a410172412010740c010b200341043a00b00320034180046a200341b0036a410110740b20082009200328028004220a20032802880410b2010240200328028404450d00200a102e0b024020032802dc03450d002008102e0b02402002450d00200241186c450d002001102e0b0240200641ffffffff0371450d002007102e0b200341063a00f0020c2a0b0240200328029403450d00200a102e0b200341f0026a410110820620032d00f0024106460d2920032902f40221040c280b200341d8026a41026a200141076a2d00003a0000200341e0046a41086a200141186a290200370300200341e0046a41106a200141206a2902003703002003200141056a2f00003b01d8022003200141106a2902003703e004200141046a2d00002106200141086a28020021082001410c6a2802002101200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e00520034180056a200341e0056a10c1022003418c036a41026a220220032d0083053a0000200341f0026a41086a220720034194056a290200370300200341fd026a220920034180056a41196a290000370000200320032f0081053b018c03200320034180056a410c6a2902003703f00202400240024020032d0080054101460d0020034180056a41086a220a280200210d200328028405210e200341c3036a2007290300370000200341b0036a41186a2009290000370000200320032f018c033b01b0032003200d3600b7032003200e3600b303200320032903f0023700bb03200320022d00003a00b203200341b8046a200341b0036a10e505200341e0056a20032802b804220220032802c00410f402200a200341ea056a29010037030020034180056a41106a200341f2056a29010037030020034180056a41176a2207200341e0056a41196a290000370000200320032901e20537038005024002400240024020032d00e0054101470d0020032d00e105210920034190036a41176a200729000037000020034190036a41106a220720034180056a41106a29030037030020034190036a41086a220a20034180056a41086a290300370300200320032903800537039003024020032802bc04450d002002102e0b20034180046a41176a220220034190036a41176a29000037000020034180046a41106a220d2007290300370300200341e1036a200a290300370000200341e9036a200d290300370000200341d8036a41186a2002290000370000200320093a00d80320032003290390033700d90320034180056a41026a2202200341d8026a41026a2d00003a0000200320032f01d8023b018005200341e0056a41086a200341e0046a41086a290300370300200341e0056a41106a200341e0046a41106a290300370300200320032903e0043703e0050240024020064107710e03000301030b20034180046a41186a2206200341e0056a410d6a29000037000020034180046a41136a2207200341e0056a41086a29030037000020034190036a41086a2209200729000037030020034190036a410d6a22072006290000370000200320032f01800522063b0180042003200136008704200320022d000022023a008204200320063b01d805200320032903e00537039003200320023a00da05200320032d00da053a00ba04200320032f01d8053b01b804200320013600bf04200320083600bb04200341b8046a41186a2007290000370000200341b8046a41136a200929030037000020032003290390033700c304200341e0056a200341b8046a10d30520032802e005220120032802e805108f022102024020032802e405450d002001102e0b2002450d04200341a8046a41041082060c070b02402001450d002008102e0b20034198036a20034193046a2900003703002003419d036a20034198046a290000370000200320032f0180043b01d805200320032d0082043a00da052003200329008b04370390030c020b024020032802bc04450d002002102e0b200341a8046a41021082060c040b20034198036a20034193046a2900003703002003419d036a20034180046a41186a290000370000200320032f0180043b01d805200320032d0082043a00da052003200329008b04370390030b200341013a00a8040c030b200341b8046a200341d8036a412010ec08450d2820034180056a200341b0036a10e505200328028805210120032802800521024120102c2206450d38200342203702e405200320063602e005200341e0056a200341b8046a412010742002200120032802e005220620032802e80510b201024020032802e405450d002006102e0b0240200328028405450d002002102e0b20034190036a200341d8036a10d305200341e0056a2003280290032201200328029803220610e60502402003280280062202450d002001200610ff010b20034180046a41086a22062003419c066a29020037030020034180046a41106a2208200341a4066a29020037030020034180046a41186a2207200341ac066a29020037030020034180046a41206a2209200341b4066a280200360200200320034194066a2902003703800402402002450d00200341e0056a41186a2903002104200341e0056a41086a290300210520034190066a280200210a2003418c066a280200210d20034188066a280200210e20032903f005210b20032903e005210c200328028406211420034180056a41206a200928020036020020034180056a41186a200729030037030020034180056a41106a200829030037030020034180056a41086a20062903003703002003200329038004370380050240200328029403450d002001102e0b200341e0056a41186a200437030020034190066a200a36020020034188066a2201200e36020020034184066a201436020020034194066a2003290380053702002003419c066a20034188056a290300370200200341a4066a20034180056a41106a290300370200200341ac066a20034180056a41186a290300370200200341b4066a20034180056a41206a2802003602002003200b3703f005200320053703e8052003200c3703e0052003200d36028c06200320023602800620034190036a200341b8046a10d305200328029803210820032802900321062003410036028804200342013703800420034180046a20034198066a412010742003200341e0056a3602f002200341f0026a20034180046a10af012003200341e0056a41106a3602f002200341f0026a20034180046a10af0120032802800621022001280200220120034180046a10760240200141186c2201450d00200220016a21010340200320023602f002200341f0026a20034180046a10af01200241106a20034180046a109102200241186a22022001470d000b0b200328028c062102200328029406220120034180046a107620034180046a20022001410274107420062008200328028004220220032802880410b2010240200328028404450d002002102e0b0240200328029403450d002006102e0b02402003280284062202450d00200241186c450d00200328028006102e0b20032802900641ffffffff0371450d29200328028c06102e0c290b200328029403450d282001102e0c280b200341023a00a8040b200641ff01714102470d002001450d002008102e0b20032d00a8044106460d2620032802a8042102200020032902ac04370024200041206a2002360000200041186a41003a000020004200370308200042013703000c370b200141046a2802002101200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e0050240200341e0056a10a705450d00200341d8036a41026a200341b8046a41026a2d000022023a0000200320032f00b80422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c370b20034180046a41186a2202420037030020034180046a41106a2206420037030020034180046a41086a220842003703002003420037038004200341f0026a4192fdc60041071081022008200341f0026a41086a290200370300200320032902f0023703800420034190036a41b4aac600410e108102200220034190036a41086a2903003703002006200329039003370300200320013602e00520034180046a4120200341e0056a410410b201200041186a41003a00002000420037030820002003280080053600192000411c6a20034183056a280000360000200042003703000c360b200141046a2802002108200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e0050240200341e0056a10a705450d00200341d8036a41026a200341b8046a41026a2d000022023a0000200320032f00b80422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c360b20034180046a41186a2202420037030020034180046a41106a2201420037030020034180046a41086a220642003703002003420037038004200341f0026a4192fdc60041071081022006200341f0026a41086a2207290200370300200320032902f0023703800420034190036a41b4aac600410e108102200220034190036a41086a22092903003703002001200329039003370300200341306a20034180046a4120108e022003280234210a2003280230210d2002420037030020014200370300200642003703002003420037038004200341f0026a4192fdc600410710810220062007290200370300200320032902f0023703800420034190036a41b4aac600410e1081022002200929030037030020012003290390033703002003200a4100200d1b20086a3602e00520034180046a4120200341e0056a410410b201200041186a41003a00002000420037030820002003280080053600192000411c6a20034183056a280000360000200042003703000c350b20012d00012101200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e0050240200341e0056a10a7050d0020034180046a41186a2202420037030020034180046a41106a2206420037030020034180046a41086a220842003703002003420037038004200341f0026a4192fdc60041071081022008200341f0026a41086a2207290200370300200320032902f0023703800420034190036a41b4aac600410e108102200220034190036a41086a22092903003703002006200329039003370300200341386a20034180046a4120108e02200328023c210a2003280238210d2002420037030020064200370300200842003703002003420037038004200341f0026a4192fdc600410710810220082007290200370300200320032902f0023703800420034190036a41b4aac600410e1081022002200929030037030020062003290390033703002003200a4100200d1b220241e4006e20016c200241e4007020016c220141e4006e41ff0120014180c801491b200141e4007041324b6a41ff01716a20026a3602e00520034180046a4120200341e0056a410410b201200041186a41003a00002000420037030820002003280080053600192000411c6a20034183056a280000360000200042003703000c350b200341d8036a41026a200341b8046a41026a2d000022023a0000200320032f00b80422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c340b200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2201200241086a290200370300200320022902003703e005200341e0056a10a7050d0a200341b8046a41186a22024200370300200341b8046a41106a22064200370300200341b8046a41086a22084200370300200342003703b804200341e0056a4192fdc600410710810220082001290000370300200320032900e0053703b804200341e0056a41b8b2c600410810810220022001290000370300200620032900e005370300200341003602e805200342013703e005200341023a00b003200341e0056a200341b0036a41011074200341b8046a412020032802e005220220032802e80510b201024020032802e405450d002002102e0b200041186a41003a00002000420037030820002003280080053600192000411c6a20034183056a280000360000200042003703000c330b200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2201200241086a290200370300200320022902003703e005200341e0056a10a7050d08200341b8046a41186a22024200370300200341b8046a41106a22064200370300200341b8046a41086a22084200370300200342003703b804200341e0056a4192fdc600410710810220082001290000370300200320032900e0053703b804200341e0056a41b8b2c600410810810220022001290000370300200620032900e005370300200341003602e805200342013703e005200341013a00b003200341e0056a200341b0036a41011074200341b8046a412020032802e005220220032802e80510b201024020032802e405450d002002102e0b200041186a41003a00002000420037030820002003280080053600192000411c6a20034183056a280000360000200042003703000c320b2001410c6a2802002106200141086a2802002108200141046a2802002107200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e0050240200341e0056a10a7050d0020034180046a41186a2202420037030020034180046a41106a2201420037030020034180046a41086a220942003703002003420037038004200341f0026a4192fdc60041071081022009200341f0026a41086a290200370300200320032902f0023703800420034190036a418cabc600410d108102200220034190036a41086a290300370300200120032903900337030020064105744104722202417f4c0d2a2002102c2201450d30200341003602e805200320023602e405200320013602e0052006200341e0056a107602402006450d0020064105742101200721020340200341e0056a200241201074200241206a2102200141606a22010d000b0b20034180046a412020032802e005220220032802e80510b201024020032802e405450d002002102e0b0240200841ffffff3f71450d002007102e0b200042003703082000200328008005360019200041186a41003a00002000411c6a20034183056a280000360000200042003703000c320b0240200841ffffff3f71450d002007102e0b200341d8036a41026a200341b8046a41026a2d000022023a0000200320032f00b80422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c310b200141246a280200210620034180056a41186a200141196a29000037030020034180056a41106a200141116a29000037030020034180056a41086a200141096a2900003703002003200129000137038005200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e005200341e0056a10a7050d05200341e0056a20034180056a2006108606200341b0036a41026a220120032d00e3053a0000200320032f00e1053b01b003024020032d00e00522024106460d0020032902e405210420034180046a41026a20012d00003a0000200320032f01b0033b0180040c1e0b42f3e885db96cddbb32020034180056a10ea02200041186a41003a000020004200370308200020032800b8043600192000411c6a200341bb046a280000360000200042003703000c300b200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2201200241086a290200370300200320022902003703e005200341e0056a10a7050d03200341b8046a41186a22024200370300200341b8046a41106a22064200370300200341b8046a41086a22084200370300200342003703b804200341e0056a4192fdc600410710810220082001290000370300200320032900e0053703b804200341e0056a41b8b2c600410810810220022001290000370300200620032900e005370300200341003602e805200342013703e005200341033a00b003200341e0056a200341b0036a41011074200341b8046a412020032802e005220220032802e80510b201024020032802e405450d002002102e0b200041186a41003a00002000420037030820002003280080053600192000411c6a20034180056a41036a280000360000200042003703000c2f0b200141046a280200211b2002410e6a2f010021092002410d6a2d0000210a2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d00002114200241086a2d00002115200241046a2d00002108200141106a28020021072001410c6a280200211a200141086a280200211920022802282101024020022d000022060d002002411a6a2901002104200241196a2d00002106200241186a2d00002116200241166a2f01002117200241156a2d00002118200241146a2d0000211c200241126a2f0100211d200241116a2d0000211e200241106a2d0000211f200241066a2f01002120200241056a2d00002121200241026a2f0100212220022d0001210220012001280200417f6a2223360200024020230d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22232023280200417f6a222336020020230d002001102e0b200320043701d004200320063a00cf04200320163a00ce04200320173b01cc04200320183a00cb042003201c3a00ca042003201d3b01c8042003201e3a00c7042003201f3a00c604200320093b01c4042003200a3a00c3042003200d3a00c2042003200e3b01c004200320143a00bf04200320153a00be04200320203b01bc04200320213a00bb04200320083a00ba04200320223b01b8040240200241ff01710d00410321060c010b4110102c2202450d2d200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d2d20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a22163602004100210620160d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22162016280200417f6a221636020020160d002002102e0b024002402006417f6a0e03001a011a0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200841ff01710d18200e4110742014410874722015724102742009411074200a41087472200d7241036c490d180b024020070d0020034180046a41051082060c1a0b200741016a210120192102024003402001417f6a22014102490d01200241046a210620022802002108200241046a210220082006280200490d000b20034180046a410e1082060c1a0b200341e0056a201b10f90520034180056a20032802e005220220032802e80510f5050240024020032802800522180d004100211c200341003602c004200342083703b80441082118410021170c010b200320032902840522043702bc04200320183602b8042004422088a721172004a7211c0b024020032802e405450d002002102e0b02402007410274220d20196a417c6a2802002017490d0020034180046a410710820602402017450d00201741d8006c2101201841306a210203400240200241746a2802002206450d00200641306c450d00200241706a280200102e0b0240200228020041ffffff3f71450d002002417c6a280200102e0b200241d8006a2102200141a87f6a22010d000b0b201c450d1a201c41d8006c450d1a2018102e0c1a0b201741d8006c210641002101417f2108201921070340201720016a220920012007280200220e6a22024d0d022018200241d8006c6a220228022c211520022802202116200241306a2802002114200241246a280200210a2002200241d8006a20092008200e6b6a41d8006c10ea081a20032009417f6a3602c0040240200a450d00200a41306c450d002016102e0b0240201441ffffff3f71450d002015102e0b200741046a2107200841016a21082001417f6a2101200641a87f6a2106200d417c6a220d450d170c000b0b200141246a2802002106200341e0046a41186a2208200141196a290000370300200341e0046a41106a2207200141116a290000370300200341e0046a41086a2209200141096a290000370300200320012900013703e004200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220032d0080054101460d0e200341b0036a41186a2008290300370300200341b0036a41106a2007290300370300200341b0036a41086a2009290300370300200320032903e0043703b00320034180046a41186a2201420037030020034180046a41106a2202420037030020034180046a41086a220842003703002003420037038004200341f0026a4192fdc60041071081022008200341f0026a41086a290200370300200320032902f0023703800420034190036a4194adc600410a108102200120034190036a41086a2903003703002002200329039003370300200341b8026a20034180046a4120108e0220032802b802450d0d024020032802bc02220120064f0d00200341e0026a410c1082060c130b20034198046a420037030020034180046a41106a420037030020034180046a41086a220842003703002003420037038004200341f0026a4192fdc60041071081022008200341f0026a41086a290200370300200320032902f0023703800420034190036a41e0a9c600410c108102200241086a20034190036a41086a2903003700002002200329039003370000200341b0026a20034180046a4120108e02024020064100200120032802b40241d40020032802b0021b6b2202200220014b1b22074f0d00200341e0026a410c1082060c130b200341e0056a200610970320034198026a20032802e005220120032802e80510f80220034198026a41106a290300210420032903a00221052003280298022102024020032802e405450d002001102e0b02402002450d00200341d8036a200341b0036a10e505200341e0056a20032802d803220120032802e00310f40220034180046a41086a200341e0056a41096a29000037030020034180046a41106a200341e0056a41116a29000037030020034198046a2208200341f9056a290000370300200320032900e10537038004410121020240024020032d00e0054101460d00410021020c010b20034180056a41086a20034180046a41096a29000037030020034180056a41106a20034180046a41116a29000037030020034197056a200829000037000020032003290081043703800520032d00800421080b024020032802dc03450d002001102e0b2002450d1120034190036a41176a220220034180056a41176a29000037000020034190036a41106a220120034180056a41106a290300370300200341c1046a20034180056a41086a290300370000200341c9046a2001290300370000200341b8046a41186a2002290000370000200320083a00b80420032003290380053700b90420034190036a200341b8046a10d305200341e0056a200328029003220e20032802980310e60520034180046a41086a22022003419c066a29020037030020034180046a41106a2201200341a4066a29020037030020034180046a41186a2209200341ac066a29020037030020034180046a41206a220a200341b4066a280200360200200320034194066a29020037038004200328028006220d450d12200341e0056a41186a290300210b200341e0056a41086a290300210c20034190066a28020021142003418c066a280200210820034188066a280200211520032903f005210f20032903e00521102003280284062116200341d8036a41206a200a280200360200200341d8036a41186a2009290300370300200341d8036a41106a2001290300370300200341d8036a41086a200229030037030020032003290380043703d8030240200328029403450d00200e102e0b20034180056a41186a200b370300200341b0056a2014360200200341a8056a2015360200200341a4056a2016360200200341b4056a220220032903d803370200200341bc056a200341e0036a290300370200200341c4056a200341e8036a290300370200200341cc056a200341d8036a41186a290300370200200341d4056a200341f8036a2802003602002003200f370390052003201037038005200320083602ac052003200d3602a0052003200c370388052002280200210d4100210920024100360200410021140240200d450d004100210e410021144100210102400340024002402014450d002001410274210203402007200820026a280200220a4b0d022008200e6a20026a200a3602000240200d200141016a220a4d0d00200241046a210220032802ac052108200a21010c010b0b200141016a21010c030b200820014102746a21020340200720022802004b0d01200241046a2102200d200141016a22014b0d000b410021140c030b200e417c6a210e201441016a2114200d200141016a22014b0d000b0b024020140d00410021140c010b20032802ac052202200120146b4102746a200220014102746a200d20016b41027410ea081a0b2003200d20146b220a3602b40520032802ac0521070240024002400240024002400240200a0e020201000b41002109200a2102034020092002410176220120096a22082006200720084102746a280200491b2109200220016b220241014b0d000b0b02402006200720094102746a2802002202470d00200341e0026a410f1082060c020b200a2009200620024b6a2209490d030b0240024002400240200a20032802b005470d00200a41016a2202200a490d2e200a41017422012002200120024b1b22024104200241044b1b220241ffffffff037120024641027421012002410274210202400240200a0d00200341003602e0050c010b200341e8056a4104360200200320073602e0052003200a4102743602e4050b20034180046a20022001200341e0056a107d20034188046a28020021022003280280044101460d01200320032802840422073602ac05200320024102763602b0050b200720094102746a220241046a2002200a20096b41027410ea081a200220063602002003200a41016a3602b40520034180046a2006200341b8056a220a10f705200341e0056a200328028004220220032802880410a20320032802800622150d01420021104100211a410821154100211641002117420021114200210c4200210f0c020b20020d320c2c0b20032f00850620034187066a2d0000411074724108742117200341e0056a41086a290300210f200341f8056a290300211120034188066a280200211a20032903e005210c20032903f005211020032d00840621160b0240200328028404450d002002102e0b200341b8046a20034180056a10d205200341f0026a4192fdc600410710810220034190036a41ed9fc5004110108102200320063602d8052003200341d8056a410410a3013703d803200341ec056a200341d8056a41046a3602002003200341e0036a3602e4052003200341d8056a3602e8052003200341d8036a3602e00520034180046a200341e0056a107c200328028804220141206a2202417f4c0d2a0240024020020d00410121080c010b2002102c2208450d310b200341003602e003200320023602dc03200320083602d803200341d8036a200341f0026a41101074200341d8036a20034190036a41101074200341d8036a2003280280042202200110740240200328028404450d002002102e0b200341e0056a20032802d803220220032802e00310a20520034180046a41086a2201200341ec056a290200370300200320032902e405370380040240024020032802e0054101460d00200341a8046a41086a420037030041002119200341003602a8040c010b200341a8046a41086a20012903003703002003200329038004220b3703a804200ba721190b024020032802dc03450d002002102e0b200341a8046a41047221180240200341b0046a280200220d450d0020032802ac04210e0340200d41046a2107200d41346a2101200d2f013222144105742102417f2108024002400340024020020d00201421080c020b200a2001412010ec082209450d02200841016a2108200741046a2107200241606a2102200141206a21012009417f4a0d000b0b200e450d02200e417f6a210e200d20084102746a4194036a280200210d0c010b0b200728020022010d020b200341063a00e002201810bc0220172016722202450d00200241306c450d002015102e0b024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d1620032802ac05102e0c160b20194101201941014b1b2202418094ebdc036e2002418094ebdc03704100476a22084101200841014b1b220820024b0d0120034180026a20052004428094ebdc03420010e608200341f0016a20052004428094ebdc03420010e708200341e0016a20032903f001200341f0016a41086a2903002002200120022001491b20086ead428094ebdc037e200220086ead8042ffffffff0f832204420010e808200341e0056a2006200341b0036a10f80520034190026a20032802e005220120032802e805108705200341e0016a41086a29030020032903e001220520042003290380027e2204428094ebdc0380a72004428094ebdc03824280cab5ee01566aad7c2204200554ad7c2105410020032802900220032d0094024102461b2102024020032802e405450d002001102e0b200341b8016a20042005428094ebdc03420010e608200341a8016a20042005428094ebdc03420010e70820034198016a20032903a801200341a8016a41086a2903002002ad220b420010e80820034188016a2004200329039801221220032903b801200b7e220b428094ebdc0380a7417f200b428080808080c0b2cd3b541b200b428094ebdc03824280cab5ee01566aad7c220b7d2213200520034198016a41086a290300200b201254ad7c22247d2004200b54ad7d2204428094ebdc03420010e608200341f8006a20132004428094ebdc03420010e70820102011200c200f1082052102200341e8006a20032903782210200341f8006a41086a29030022112002ad2204420010e808200341c8016a200a20032903682205200329038801221220047e2204428094ebdc0380a7417f2004428080808080c0b2cd3b541b2004428094ebdc03824280cab5ee01566aad7c2204200b7c220b200341e8006a41086a2903002004200554ad7c20247c200b200454ad7c10890620034180046a41106a200341c8016a41106a2903002205370300200320032903d001220b37038804200320032903c80122043703800402402004a74101470d002003200b3703d803200320053703e003200341bb056a290000210420034198066a200537030020034190066a200b370300200341e8056a41013a0000200341e9056a20032f01b8053b0000200341eb056a200341ba056a2d00003a0000200341ec056a2004370200200341f4056a200341c3056a290000370200200341fc056a200341cb056a29000037020020034181066a200341d0056a290000370000200341043a00e005200341e0056a10fe012003200341d8036a3602e005200341e0056a10ce020c130b20044201520d12200320034180046a41086a3602e005200341e0056a10ce020c120b2009200a1045000b41d0d8c800411941bcd7cc001039000b200341e0026a410c1082060c120b200220091046000b200341d8036a41026a20034180046a41026a2d000022023a0000200320032f00800422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c2b0b410221020c170b200341d8036a41026a20034180046a41026a2d000022023a0000200320032f00800422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c290b200341d8036a41026a20034180046a41026a2d000022023a0000200320032f00800422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c280b200341023a00f0020c170b200341023a0090030c180b200341023a0090030c1a0b200341023a00f0020c200b2001410c6a2802002106200141086a2802002107200141046a2802002108200341e0056a41286a220a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a220d200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a220e200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034189056a29000037030020034180046a41106a220120034191056a29000037030020034180046a41186a220920034199056a290000370300200320032900810537038004024002400240024002400240024020032d0080054101460d00200341e0046a41186a2009290300370300200341e0046a41106a2001290300370300200341e0046a41086a200229030037030020032003290380043703e004200341b8046a200341e0046a10d305200341e0056a20032802b804221420032802c00410e60520022003419c066a2902003703002001200341a4066a2902003703002009200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a2902003703800402402003280280062202450d00200d2903002104200e290300210520034190066a28020021012003418c066a2802002109200a280200210a20032903f005210b20032903e005210c200328028406210d200341d8036a41206a220e20034180046a41206a280200360200200341d8036a41186a221520034180046a41186a290300370300200341d8036a41106a221620034180046a41106a290300370300200341d8036a41086a221720034180046a41086a29030037030020032003290380043703d803024020032802bc04450d002014102e0b200341b0036a41086a22142017290300370300200341b0036a41106a22172016290300370300200341b0036a41186a22162015290300370300200341b0036a41206a2215200e28020036020020034180056a41186a2004370300200341b0056a2001360200200341a8056a200a36020020034180056a41246a200d360200200320032903d8033703b0032003200b370390052003200c37038005200320093602ac05200320023602a0052003200537038805200341d4056a2015280200360200200341cc056a2016290300370200200341c4056a2017290300370200200341bc056a2014290300370200200341b4056a20032903b0033702002008200641246c22026a2109024020020d00200821020c050b200341e0026a41026a2201200841036a2d00003a000020034190036a41086a220a200841146a29000037030020034190036a41106a220d2008411c6a290000370300200320082f00013b01e0022003200829000c37039003200841246a210220082d0000220e4105460d042008280008211420082800042115200341a8046a41026a20012d00003a0000200341b0036a41086a200a290300370300200341b0036a41106a200d290300370300200320032f01e0023b01a80420032003290390033703b0030240024002400240200e4107710e03000201020b200341b8046a41026a200341a8046a41026a2d00003a0000200341cb046a200341b8036a290300370000200341d0046a200341bd036a290000370000200320032f01a8043b01b804200320143600bf04200320153600bb04200320032903b0033700c304410121014100210a0c020b2014450d002015102e0b410021014101210a0b20034180046a41086a220d200341b8046a41086a29010037030020034180046a41106a220e200341b8046a41106a29010037030020034180046a41186a2214200341b8046a41186a290100370300200320032901b804370380042001450d05200341d8036a41186a2014290300370300200341d8036a41106a200e290300370300200341d8036a41086a200d29030037030020032003290380043703d8034120102c221c450d29201c20032903d803370000201c41186a200341d8036a41186a290300370000201c41106a200341d8036a41106a290300370000201c41086a200341d8036a41086a290300370000200921010240024020092002460d00200341e0026a41026a2201200241036a2d00003a000020034190036a41086a200841386a29000037030020034190036a41106a200841c0006a290000370300200320022f00013b01e0022003200829003037039003200841c8006a2102024020082d0024220d4105460d00200828002c210e20082800282114200341a8046a41026a20012d00003a0000200341b0036a41086a220120034190036a41086a290300370300200341b0036a41106a20034190036a41106a290300370300200320032f01e0023b01a80420032003290390033703b0030240024002400240200d4107710e03000201020b200341b8046a41026a200341a8046a41026a2d00003a0000200341cb046a2001290300370000200341d0046a200341bd036a290000370000200320032f01a8043b01b8042003200e3600bf04200320143600bb04200320032903b0033700c304410121010c020b200e450d002014102e0b410021014101210a0b20034180046a41086a2216200341b8046a41086a222529010037030020034180046a41106a2217200341b8046a41106a222629010037030020034180046a41186a2218200341b8046a41186a2227290100370300200320032901b8043703800420010d020b200221010b4101211f4101210d0c040b200341d8036a41186a22192018290300370300200341d8036a41106a221a2017290300370300200341d8036a41086a221b201629030037030020032003290380043703d803200841ec006a2101200641246c41b87f6a2114200341c3046a2128412021154102210d4101211f0340200341e0056a41186a221d2019290300370300200341e0056a41106a221e201a290300370300200341e0056a41086a2220201b290300370300200320032903d8033703e005024002400240200d417f6a201f470d00201f41016a220e201f490d27201f4101742221200e2021200e4b1b220e4104200e41044b1b220e41ffffff3f71200e462121200e410574210e02400240201f0d00200341003602b8040c010b200341013602c0042003201c3602b8042003201f4105743602bc040b20034180046a200e2021200341b8046a107d200328028804210e2003280280044101460d01200328028404211c200e410576211f0b201c20156a220e20032903e005370000200e41186a201d290300370000200e41106a201e290300370000200e41086a202029030037000020140d01200921010c060b200e0d2b0c250b200241086a2800002122200241046a2800002123200241036a2d0000210e20022f0001211d20034190036a41086a221e200241146a29000037030020034190036a41106a22202002411c6a290000370300200341e0026a41026a2221200e3a00002003201d3b01e00220032002410c6a2900003703900320022d0000220e4105460d04200341a8046a41026a221d20212d00003a0000200341b0036a41086a2221201e290300370300200341b0036a41106a2020290300370300200320032f01e0023b01a80420032003290390033703b0030240024002400240200e4107710e03000201020b202820032903b003370000200341b8046a41026a201d2d00003a0000202841086a20212903003700002028410d6a200341b0036a410d6a290000370000200320032f01a8043b01b804200320223600bf04200320233600bb044101210e0c020b2022450d002023102e0b4100210e4101210a0b201620252901003703002017202629010037030020182027290100370300200320032901b80437038004200e450d04200241246a210220192018290300370300201a2017290300370300201b201629030037030020032003290380043703d803201541206a2115200d41016a210d2014415c6a2114200141246a21010c000b0b024020032802bc04450d002014102e0b200341f0026a41011082060c010b200341023a00f0020b02402006450d00200641246c2101200821020340024020022d00004102470d00200241086a280200450d00200241046a280200102e0b200241246a21022001415c6a22010d000b0b2007450d04200741246c450d042008102e0c040b024020092001460d002008200641246c6a210603402001220241246a2101024020022d00004102470d00200241086a280200450d00200241046a280200102e0b20062001470d000b0b2007450d02200741246c450d022008102e0c020b4100210a0b024020092002460d002008200641246c6a210603402002220141246a2102024020012d00004102470d00200141086a280200450d00200141046a280200102e0b20062002470d000b0b4100211f4101211c02402007450d00200741246c450d002008102e0b4100210d0b024002400240200a41ff0171450d00201f41ffffff3f71450d01201c102e0c010b201c0d010b200341013a00f002024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d0120032802ac05102e0c010b0240200d450d00201c200d4105746a211920034189066a211d200341e9056a211e200341b8056a2107201c21060340200641086a2900002104200641106a29000021052006290000210b200341b8046a41186a2216200641186a290000370300200341b8046a41106a22172005370300200341b8046a41086a221820043703002003200b3703b80420034180046a200341b8046a10d105200341e0056a200328028004220e200328028804221410870620034190036a41086a200341e0056a41086a290300370300200320032903e00537039003024002400240024020032d00f00522154102460d00200328029c03211a200328029403211b20032802900321080240200328029803220d0d004100210d0c030b200d41057441606a41057641016a210a41002102410021010340200820026a22092007412010ec08450d02200241206a2102200a200141016a2201470d000c030b0b200e201410ff010c020b2008200d417f6a220d4105746a22022900002104200229000821052002290010210b200941186a200241186a2900003700002009200b3700102009200537000820092004370000201e20032903b804370000201e41106a2017290300370000201e41186a2016290300370000201d2007290000370000201d41106a200741106a290000370000201d41186a200741186a290000370000200341083a00e805201e41086a2018290300370000201d41086a200741086a290000370000200341043a00e005200341e0056a10fe010b200341003602e805200342013703e005200d200341e0056a10760240200d450d00200d4105742101200821020340200341e0056a200241201074200241206a2102200141606a22010d000b0b2003201a3602d803200341e0056a200341d8036a41041074200320153a00b003200341e0056a200341b0036a41011074200e201420032802e005220220032802e80510b201024020032802e405450d002002102e0b201b41ffffff3f71450d002008102e0b200641206a21060240200328028404450d00200e102e0b20062019470d000b0b0240201f41ffffff3f71450d00201c102e0b200341063a00f002024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d0020032802ac05102e0b0240024020032d00f0024106460d0020032802f0022102200020032902f402370024200041206a2002360000200041186a41003a000020004200370308420121040c010b4200210420004200370308200020032800e005360019200041186a41003a00002000411c6a200341e3056a2800003600000b200020043703000c230b200141246a28020021082002280228210220034180056a41186a200141196a29000037030020034180056a41106a200141116a29000037030020034188056a200141096a2900003703002003200129000137038005200341b8046a20034180056a10c802200341e0056a20032802b804220620032802c00410c902200341e0056a41106a290300420020032903e00542015122011b210420032903e805420020011b210520034180066a290300420020011b210b200341e0056a41186a290300420020011b210c024020032802bc04450d002006102e0b024002400240427f2005200c7c220c200c20055422012004200b7c2001ad7c220520045420052004511b22011b4280c8afa02585427f200520011b84500d0020034180046a410b1082060c010b200341e0056a20034180056a2008108606200341b2036a220120032d00e3053a0000200320032f00e1053b01b003024020032d00e00522064106470d0042f3e885db96cddbb32020034180056a10ea0220022002280200417f6a2201360200200341063a00800420010d022002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d022002102e0c020b20032902e4052104200320063a008004200320032f01b0033b0081042003200437028404200320012d00003a0083040b20022002280200417f6a2201360200024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b20032d0080044106460d0020032802800421022000200329028404370024200041206a2002360000200041186a41003a000020004200370308200042013703000c230b20004200370308200020032800d803360019200041186a41003a00002000411c6a200341db036a280000360000200042003703000c220b200141046a2802002108200341e0056a41286a200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a200241086a290200370300200320022902003703e0050240200341e0056a10a7050d0020034180046a41186a2202420037030020034180046a41106a2206420037030020034180046a41086a220142003703002003420037038004200341f0026a4192fdc60041071081022001200341f0026a41086a290200370300200320032902f0023703800420034190036a4194adc600410a108102200220034190036a41086a2903003703002006200329039003370300200341c8026a20034180046a4120108e02024020032802c8024101470d0020032802cc02210120034198046a2209420037030020034190046a220a420037030020034180046a41086a220742003703002003420037038004200341f0026a4192fdc60041071081022007200341f0026a41086a220d290200370300200320032902f0023703800420034190036a41e0a9c600410c108102200641086a220e20034190036a41086a22142903003700002006200329039003370000200341c0026a20034180046a4120108e0202404100200120032802c40241d40020032802c0021b6b2202200220014b1b22024100200120086b2215201520014b1b22014f0d000340200210f6052001200241016a2202470d000b0b20094200370300200a4200370300200742003703002003420037038004200341f0026a4192fdc60041071081022007200d290200370300200320032902f0023703800420034190036a41e0a9c600410c108102200e20142903003700002006200329039003370000200320083602e00520034180046a4120200341e0056a410410b2010b200042003703082000200328008005360019200041186a41003a00002000411c6a20034183056a280000360000200042003703000c220b200341d8036a41026a200341b8046a41026a2d000022023a0000200320032f00b80422013b01d803200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c210b200141106a290300210b200141086a2903002110200341e0056a41286a2208200241286a280200360200200341e0056a41206a200241206a290200370300200341e0056a41186a2207200241186a290200370300200341e0056a41106a200241106a290200370300200341e0056a41086a2209200241086a290200370300200320022902003703e00520034180056a200341e0056a10c10220034180046a41086a220220034189056a29000037030020034180046a41106a220120034191056a29000037030020034180046a41186a220620034199056a290000370300200320032900810537038004024002400240024020032d0080054101460d00200341e0046a41186a2006290300370300200341e0046a41106a2001290300370300200341e0046a41086a200229030037030020032003290380043703e00420034180056a200341e0046a10d305200341e0056a200328028005220d20032802880510e60520022003419c066a2902003703002001200341a4066a2902003703002006200341ac066a29020037030020034180046a41206a200341b4066a280200360200200320034194066a290200370380040240200328028006220a450d00200729030021112009290300212920034190066a28020021072003418c066a28020021142008280200210120032903f005210c20032903e005212a2003280284062108200341d8036a41206a220220034180046a41206a280200360200200341d8036a41186a220620034180046a41186a290300370300200341d8036a41106a220920034180046a41106a290300370300200341d8036a41086a220e20034180046a41086a29030037030020032003290380043703d8030240200328028405450d00200d102e0b200341b0036a41106a20092903002204370300200341b8046a41086a200e290300370300200341b8046a41106a2004370300200341b8046a41186a2006290300370300200341b8046a41206a2002280200360200200320032903d8033703b80420010d02200341e0056a410a108206200320032900e105370390032003200341e8056a2800003600970320032d00e005210202402008450d00200841186c450d00200a102e0b200741ffffffff0371450d032014102e0c030b0240200328028405450d00200d102e0b200341e0056a4101108206200320032900e105370390032003200341e8056a2800003600970320032d00e00521020c020b410221020c010b20034180056a41206a200341b8046a41206a28020036020020034180056a41186a200341b8046a41186a29030037030020034180056a41106a200341b8046a41106a29030037030020034180056a41086a200341b8046a41086a290300370300200320032903b80437038005200141186c200a6a41686a2102420021124200211302400340024020010d0041002101200c210f0c020b02402002290300220f20127c2204201058200241086a290300222420137c2004200f54ad7c2205200b582005200b5122061b0d002002200f201020127d22047d37030020022024200b20137d2010201254ad7d22057d200f200454ad7d370308201120057c200c20047c220f200c54ad7c21110c020b2001417f6a2101201120247c200c200f7c220f200c54ad7c2111200241686a2102200f210c200421122005211320042010542005200b5420061b0d000b0b20034190066a200736020020034188066a200136020020034184066a200836020020034194066a2003290380053702002003200f3703f005200341e0056a41186a20113703002003419c066a20034180056a41086a2202290300370200200341a4066a20034190056a290300370200200341ac066a20034180056a41186a290300370200200341b4066a200341a0056a2802003602002003202a3703e0052003201436028c062003200a36028006200320293703e805200f42ffc7afa0255620114200522011501b0d0120034180056a4108108206200320032900810537039003200320022800003600970320032d008005210202402003280284062201450d00200141186c450d00200328028006102e0b20032802900641ffffffff0371450d00200328028c06102e0b200320032800a8043602e00220032003290390033703f00220032003280097033600f7022003200341ab046a2800003600e302200041186a41003a000020004200370308200020032802e0023600192000411c6a20032800e302360000200041206a20023a0000200020032903f002370021200041286a20032800f702360000200042013703000c210b42f3e885db96cddbb32020034198066a202a2029411f108506200341e0046a200341e0056a10d20520033502880642d086037e210402402003280284062202450d00200241186c450d00200328028006102e0b20044280f3e893017c2104024020032802900641ffffffff0371450d00200328028c06102e0b200320032800a8043602e0022003200341ab046a2800003600e302200041186a41003a0000200041106a200437030020004201370308200020032802e0023600192000411c6a20032800e302360000200042003703000c200b200341e0026a410c1082060c040b200341023a00e0020c040b0240201a450d002015201a41306c6a2109200341e0056a41146a2106200341e9056a210a20034180046a41086a210e20034198066a210d201521020340200341c0006a201020112002290300200241086a290300200c200f108205ad2204420010e808200341d0006a200241106a220120032903402205201220047e2204428094ebdc0380a7417f2004428080808080c0b2cd3b541b2004428094ebdc03824280cab5ee01566aad7c2204200341c0006a41086a2903002004200554ad7c10890620034180046a41106a200341d0006a41106a290300220537030020032003290358220b3703880420032003290350220437038004024002402004a74101470d002003200b3703d803200320053703e00320012f000021082003418c036a41026a200241126a2d000022073a0000200320083b01d805200320073a00da05200320083b018c03200241136a2900002104200a20083b0000200a41026a20073a0000200341013a00e805200341043a00e005200320043702ec052002412b6a28000021082002412f6a2d00002107200241236a290000210420062002411b6a290000370000200641086a2004370000200d2005370300200641146a20073a0000200641106a20083600002003200b37039006200341e0056a10fe012003200341d8036a3602e005200341e0056a10ce020c010b20044201520d002003200e3602e005200341e0056a10ce020b200141206a22022009470d000b0b200341063a00e002201810bc02024020172016722202450d00200241306c450d002015102e0b024020032802a4052202450d00200241186c450d0020032802a005102e0b20032802b00541ffffffff0371450d0220032802ac05102e0c020b200341e0026a41021082060c010b0240200328029403450d00200e102e0b200341e0026a41011082060b20032d00e0024106460d0120032902e40221040b20032802e002210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c190b20004200370308200020032800d802360019200041186a41003a00002000411c6a200341db026a280000360000200042003703000c180b0240201a41ffffffff0371450d002019102e0b201720016a2101200341e0056a201b10f90520032802e0052102200320032802e805360284052003200236028005200341b8046a20034180056a10b101024020032802e405450d002002102e0b02402001450d00201841306a210203400240200241746a2802002201450d00200141306c450d00200241706a280200102e0b0240200228020041ffffff3f71450d002002417c6a280200102e0b200241d8006a2102200641a87f6a22060d000b0b0240201c450d00201c41d8006c450d002018102e0b200341063a0080040c030b4110102c2202450d14200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1420014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220636020020060d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22062006280200417f6a220636020020060d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341023a0080040b0240201a41ffffffff0371450d002019102e0b20032d0080044106460d0020032802800421022000200329028404370024200041206a2002360000200041186a41003a000020004200370308200042013703000c140b20004200370308200020032800d803360019200041186a41003a00002000411c6a200341db036a280000360000200042003703000c130b200341d8036a41026a20034180046a41026a2d000022013a0000200320032f01800422063b01d803200041206a20023a0000200041186a41003a000020004200370308200020063b0021200041236a20013a000020002004370024200042013703000c120b200341063a00a8040b20004200370308200020032800e002360019200041186a41003a00002000411c6a200341e3026a280000360000200042003703000c100b20032802f002210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c0f0b20004200370308200020032800a804360019200041186a41003a00002000411c6a200341ab046a280000360000200042003703000c0e0b200328029003210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c0d0b20004200370308200020032800f002360019200041186a41003a00002000411c6a200341f3026a280000360000200042003703000c0c0b20004200370308200020032800d802360019200041186a41003a00002000411c6a200341db026a280000360000200042003703000c0b0b200328029003210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c0a0b20004200370308200020032800f002360019200041186a41003a00002000411c6a200341f3026a280000360000200042003703000c090b02402010200329038005220c58200f20034180056a41086a290300220458200f2004511b0d0020034190066a2010200c7d370300200341e0056a41086a41073a0000200341e9056a20032903b804370000200341f1056a200341b8046a41086a290300370000200341f9056a200341c8046a29030037000020034181066a200341d0046a29030037000020034198066a200f20047d2010200c54ad7d370300200341043a00e005200341e0056a10fe010b024020032802a4052202450d00200241186c450d0020032802a005102e0b024020032802b00541ffffffff0371450d0020032802ac05102e0b200320032800a8043602e0022003200341ab046a2800003600e302200041186a41003a0000200041106a20053703002000200b370308200020032802e0023600192000411c6a20032800e302360000200042003703000c080b1038000b20032d00a8044106460d0120032902ac0421040b20032802a804210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c050b20004200370308200020032800e002360019200041186a41003a00002000411c6a200341e3026a280000360000200042003703000c040b20032d00f0024106460d0020032802f0022102200020032902f402370024200041206a2002360000200041186a41003a000020004200370308200042013703000c030b20004200370308200020032800a804360019200041186a41003a00002000411c6a200341ab046a280000360000200042003703000c020b1036000b20004200370308200020032800e002360019200041186a41003a00002000411c6a200341e3026a280000360000200042003703000b200341e0066a24000bac0401047f230041c0006b2202240041d6a2c50021034109210441132105024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff01710e15000102030405060708090a0b0c0d0e0f1011121314000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41ec8fcc001044000b41c9a2c5002103410d2104410021050c120b41c1a2c500210341082104410121050c110b41b4a2c5002103410d2104410221050c100b41a7a2c5002103410d2104410321050c0f0b419ba2c5002103410c2104410421050c0e0b418da2c5002103410e2104410521050c0d0b41fca1c500210341112104410621050c0c0b41eba1c500210341112104410721050c0b0b41dfa1c5002103410c2104410821050c0a0b41d2a1c5002103410d2104410921050c090b41c6a1c5002103410c2104410a21050c080b41b4a1c500210341122104410b21050c070b419aa1c5002103411a2104410c21050c060b4188a1c500210341122104410d21050c050b41faa0c5002103410e2105410e21040c040b41e5a0c500210341152104410f21050c030b41cfa0c500210341162104411021050c020b41c7a0c500210341082104411121050c010b41b9a0c5002103410e2104411221050b200041830e3b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b9c0203057f017e017f23004180026b22012400200141086a200010c802200141e0006a200128020822022001280210220310c902200141b4016a2802002104200141b0016a2802002100200141ac016a280200210520012903602106200141b8016a200141e8006a41c40010e9081a0240024020064201510d00200141186a410041c40010eb081a410121000c010b200141186a200141b8016a41c40010e9081a024020000d00410121000c010b200141e8006a200141186a41c40010e9082107200141b4016a2004360200200141b0016a2000360200200141ac016a417f200541016a220020002005491b3602002001420137036020022003200710c805410021000b0240200128020c450d002002102e0b20014180026a240020000bb10201037f230041e0006b22022400200241086a4192fdc6004107108102200241186a41a8acc6004105108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bee06020a7f017e230022052106200541a0016b41607122052400200520003703180240024002402002200384500d00200520023703202005200037033020052003370328200541004102410120044101711b200441ff01714101461b3a003820054180016a200110d40620052802840121072005280280012208210902402005280288012204450d00200820044105746a210a200541e0006a41196a210b20082104200821090340200541c8006a41106a220c200441106a290300370300200541c8006a41086a220d200441086a29030037030020052004290300370348200441186a2d0000210e2005200441196a28000036024020052004411c6a280000360043200e4103460d01200b2005280240360000200b41036a2005280043360000200541e0006a41106a200c2903002202370300200520052903483703602005200e3a00782005200d2903003703680240024020022005290318520d00200541033a0098012005290330210320052005290390013703302005290328210020052005290388013703282005290320210f20052005290380013703202005290338210220052005290398013703382002a7210e0c010b200541e0006a41186a2903002202a7210e20052903702103200529036821002005290360210f0b0240200e41ff01714103460d002009200f3703002009200037030820092003370310200941186a2002370300200941206a21090b200441206a2204200a470d000b0b200920086b41057521040240024020052d00384103470d00200721050c010b2005290338210220052903302103200529032821002005290320210f0240024020042007460d0020072105200421070c010b200741016a22042007490d04200741017422092004200920044b1b22044104200441044b1b220441ffffff3f712004464103742109200441057421040240024020070d0020054100360280010c010b20054180016a41086a4108360200200520083602800120052007410574360284010b200541e0006a2004200920054180016a107d200541e8006a280200210420052802604101460d0320052802642108200441057621050b200820074105746a22042003370310200420003703082004200f370300200441186a2002370300200741016a21040b20012008200410d506200541ffffff3f71450d002008102e0b200624000f0b2004450d001036000b1038000bd20801087f230041c0016b22032400200341e8006a200110e50520034198016a20032802682204200328027010f402200341f8006a41086a2205200341a2016a290100370300200341f8006a41106a2206200341aa016a290100370300200341f8006a41176a2207200341b1016a2900003700002003200329019a01370378024002400240024020032d0098014101470d0020032d0099012108200341c8006a41176a2007290000370000200341c8006a41106a2006290300370300200341c8006a41086a2005290300370300200320032903783703480240200328026c450d002004102e0b200341286a41176a2204200341c8006a41176a290000370000200341286a41106a2205200341c8006a41106a290300370300200341116a200341d0006a290300370000200341196a2005290300370000200341206a2004290000370000200320083a00082003200329034837000920034198016a200110ce050240024020032802a4012209450d0020032802a801210a024002400240200341ac016a28020022044102742205417c6a41027641026a410120041b20024d0d00200341c8006a4111108206200a41ffffffff03710d010c020b200328029801210220034198016a200110cf05200328029801220420032802a00110ff010240200328029c01450d002004102e0b200920056a2108410021042009210620022107024003402004417e712105410221040240024020054102460d00200221050c010b2006450d0220082006460d02200641046a2106410321042007417f6a220721050b20034198016a41186a200141186a29000037030020034198016a41106a200141106a29000037030020034198016a41086a200141086a290000370300200320053602b8012003200129000037039801200341f8006a20034198016a10cd052003280278220520032802800110ff01200328027c450d002005102e0c000b0b200341063a0048200a41ffffffff0371450d030b2009102e0b200320032900493703282003200341c8006a41086a28000036002f20032d004822044106470d030c040b200341063a00480b200320032900493703282003200341d0006a28000036002f0c020b0240200328026c450d002004102e0b200041021082060c020b200020043a000020002003290328370001200041086a200328002f3600000c010b20034198016a200110e505200328029801220420032802a00110ff010240200328029c01450d002004102e0b20034198016a200341086a10d305200328029801220420032802a00110ff010240200328029c01450d002004102e0b20034198016a2001108406200328029801220420032802a00110ff010240200328029c01450d002004102e0b20034198016a2001108605200328029801220420032802a00110ff010240200328029c01450d002004102e0b20034198016a200110d105200328029801220420032802a00110ff010240200328029c01450d002004102e0b2001108a06200041063a00000b200341c0016a24000b970401087f230041e0006b220324002003200236020c20032001360208200341106a2001200210ed0202400240200328021022010d00200041023a00100c010b200328021421042003200341186a280200360224200320013602202003200341206a10ab01024002400240024002402003280200450d00200341003602480c010b200341c8006a200341206a200328020410920120032802482205450d00200328024c21060240200328022422024104490d00200341d0006a280200210720032802202208280000210920032002417c6a220a3602242003200841046a2208360220200a450d0020082d0000210a20032002417b6a3602242003200841016a36022041002102200a0e020302000b200641ffffff3f71450d002005102e0b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341909dc5003602482003200341386a360258200341c4006a419cebc000200341c8006a103d1a2003280228200328023010ef020240200328022c450d002003280228102e0b410221020c020b410121020b200341c8006a41026a200341286a41026a2d000022083a0000200320032f0028220a3b01482000200936020c2000200736020820002006360204200020053602002000200a3b0011200041136a20083a00000b200020023a00102004450d002001102e0b200341e0006a24000bbd0a020a7f017e230041c0016b2202240002400240024020012802082203200128020c460d00200128021421042001200341246a3602082002413c6a41026a2205200341036a2d00003a0000200241286a41086a2206200341186a290000370300200241286a41106a2207200341206a2d00003a0000200220032f00013b013c2002200341106a29000037032820032d000022084105470d010b410021030c010b2003410c6a2800002109200341086a280000210a200341046a280000210b20024188016a41026a20052d00003a0000200241a0016a41086a2006290300370300200241a0016a41106a20072d00003a0000200220022f013c3b018801200220022903283703a001024002400240024020084107710e03020100010b200a450d00200b102e0b4101210b410121030c010b20024184016a41026a20024188016a41026a2d000022033a0000200241f0006a41086a200241a0016a41086a290300220c370300200241f0006a41106a200241a0016a41106a2d000022053a0000200241ec006a41026a20033a0000200241d8006a41086a200c370300200241d8006a41106a20053a0000200220022f01880122033b018401200220022903a001220c370370200220033b016c2002200c370358410021030b2001280210210120024184016a41026a2205200241ec006a41026a2d00003a0000200241f0006a41086a2206200241d8006a41086a290300370300200241f0006a41106a2207200241d8006a41106a2d00003a0000200220022f016c3b0184012002200229035837037002400240024002402003450d00200b2103200a2101200921050c010b200241b7016a2006290300370000200241bf016a20072d00003a0000200220022f0184013b01a001200220093600ab012002200a3600a7012002200b3600a301200220022903703700af01200220052d00003a00a2012001280208410574210320012802002101200241af016a2106024003402003450d01200341606a21032001200241a0016a412010ec082105200141206a210120050d000c030b0b20024188016a200241a0016a108605200241086a200228028801220120022802900110870520022d000c41017121030240200228028c01450d002001102e0b2003450d0120024188016a411410820620024190016a2802002105200228028c01210120022802880121030b200420053602082004200136020420042003360200410021060c010b2002419c016a41026a20022d00a20122033a000020024188016a41086a200641086a290000220c37030020024188016a41106a200641106a2d000022013a0000200241d4006a41026a20033a0000200241c0006a41086a200c370300200241c0006a41106a20013a0000200220022f01a00122033b019c0120022006290000220c37038801200220033b01542002200c370340410121060b200241246a41026a200241d4006a41026a2d000022033a0000200241106a41086a2201200241c0006a41086a290300370300200241106a41106a2205200241c0006a41106a2d00003a0000200220022f015422043b01242002200229034037031020024188016a41026a220720033a0000200220043b018801200241a0016a41106a220420052d00003a0000200241a0016a41086a22052001290300370300200220022903103703a001410021032006450d00200020022f0188013b00012000410c6a2009360000200041086a200a360000200041046a200b360000200041106a20022903a001370000200041036a20072d00003a0000200041186a2005290300370000200041206a20042d00003a0000410121030b200020033a0000200241c0016a24000bfb1904057f037e077f057e230041d0036b22042400200441c0006a2001108406200428024021052004200428024822063602bc01200420053602b801200441f8006a2005200610ed0241052106024020042802782207450d00200428027c2108200420044180016a28020022063602fc01200420073602f80102400240024002402006450d0020042006417f6a3602fc012004200741016a3602f8014100210602400240024020072d00000e050504000102030b410221060c040b200441f8026a200441f8016a10930120042d00f8024101460d01200441b0026a20044191036a290000370300200441a8026a20044189036a290000370300200441a0026a20044181036a290000370300200420042900f90237039802410321060c030b410421060c020b200441003602a00220044201370398022004410a3602dc022004200441b8016a3602d802200420044198026a3602202004418c036a4101360200200442013702fc02200441909dc5003602f8022004200441d8026a36028803200441206a419cebc000200441f8026a103d1a20042802980220042802a00210ef020240200428029c02450d00200428029802102e0b410521060c020b410121060b200441d8016a41186a20044198026a41186a2903002209370300200441d8016a41106a20044198026a41106a290300220a370300200441d8016a41086a20044198026a41086a290300220b370300200441f8026a41086a200b370300200441f8026a41106a200a370300200441f8026a41186a2009370300200420042903980222093703d801200420093703f8020b2008450d002007102e0b200441d8016a41186a2208200441f8026a41186a290300370300200441d8016a41106a220c200441f8026a41106a290300370300200441d8016a41086a220d200441f8026a41086a290300370300200420042903f8023703d80141002107024020064105460d00200441206a41186a2008290300370300200441206a41106a200c290300370300200441206a41086a200d290300370300200420042903d801370320200621070b02402004280244450d002005102e0b4200210b024002400240024002400240024020070e050201000306020b200441f8006a200110e505200441f8026a2004280278220520042802800110f402200441d8016a41086a220620044181036a290000370300200441d8016a41106a220720044189036a290000370300200441d8016a41186a220120044191036a290000370300200420042900f9023703d801024020042d00f8024101470d0020044198026a41186a200129030037030020044198026a41106a200729030037030020044198026a41086a2006290300370300200420042903d801370398020240200428027c450d002005102e0b200441f8026a41186a20044198026a41186a290300370300200441f8026a41106a20044198026a41106a290300370300200441f8026a41086a20044198026a41086a29030037030020042004290398023703f8022004200441f8026a2002200310fd01200441086a290300210a200429030021090c040b0240200428027c450d002005102e0b0c050b200441f8026a200120022003108b0620043502f802420185210b20044188036a290300210a20044180036a29030021090c040b20044198026a200110e505200441f8026a200428029802220520042802a00210f402200441d8016a41086a220620044181036a290000370300200441d8016a41106a220720044189036a290000370300200441d8016a41186a220820044191036a290000370300200420042900f9023703d80102400240024020042d00f8024101470d00200441b8016a41186a2008290300370300200441b8016a41106a2007290300370300200441b8016a41086a2006290300370300200420042903d8013703b8010240200428029c02450d002005102e0b200441f8016a41186a200441b8016a41186a290300370300200441f8016a41106a200441b8016a41106a290300370300200441f8016a41086a200441b8016a41086a290300370300200420042903b8013703f801200441d8016a200441f8016a10d305200441f8026a20042802d801220620042802e00110e605200441f8006a41086a2207200441f8026a41086a290300370300200441f8006a41106a2208200441f8026a41106a290300370300200441f8006a41186a220c200441f8026a41186a29030037030020044198026a41086a220d200441a4036a29020037030020044198026a41106a220e200441ac036a29020037030020044198026a41186a220f200441b4036a29020037030020044198026a41206a2210200441bc036a29020037030020044198026a41286a2211200441c4036a29020037030020044198026a41306a2212200441cc036a280200360200200420042903f8023703782004200429029c03370398022004280298032205450d01200441d8026a41186a200c290300370300200441d8026a41106a2008290300370300200441d8026a41086a2007290300370300200441c0006a41086a200d290300370300200441c0006a41106a200e290300370300200441c0006a41186a200f290300370300200441c0006a41206a2010290300370300200441c0006a41286a2011290300370300200441c0006a41306a2012280200360200200420042903783703d8022004200429039802370340024020042802dc01450d002006102e0b200441d8016a41186a200441f8016a41186a2903002209370300200441d8016a41106a200441f8016a41106a290300220a370300200441d8016a41086a200441f8016a41086a290300220b370300200420042903f80122133703d801200441f8026a41186a2009370300200441f8026a41106a200a370300200441f8026a41086a200b370300200441f8026a41286a200441d8026a41086a2903002214370300200441f8026a41306a200441d8026a41106a2903002215370300200441f8026a41386a200441d8026a41186a2903002216370300200420133703f802200420042903d802221737039803200441f8006a41386a2016370300200441f8006a41306a2015370300200441f8006a41286a201437030020044198016a2017370300200441f8006a41186a2009370300200441f8006a41106a200a370300200441f8006a41086a200b370300200420133703780c020b200428029c02450d042005102e0c040b024020042802dc01450d002006102e0b200441d8016a41186a200441f8016a41186a290300370300200441d8016a41106a200441f8016a41106a290300370300200441d8016a41086a200441f8016a41086a290300370300200420042903f8013703d8010b2005450d0220044198026a41386a2207200441f8006a41386a29030037030020044198026a41306a2208200441f8006a41306a29030037030020044198026a41286a220c200441f8006a41286a29030037030020044198026a41206a220d200441f8006a41206a29030037030020044198026a41186a200441f8006a41186a220629030037030020044198026a41106a200441f8006a41106a220e29030037030020044198026a41086a200441f8006a41086a220f2903003703002004200429037837039802200441d8026a41186a2006290300370300200441d8026a41106a200e290300370300200441d8026a41086a200f290300370300200420042903783703d802200441f8026a41186a22062007290300370300200441f8026a41106a22072008290300370300200441f8026a41086a2208200c29030037030020042005360298032004200d2903003703f8022004419c036a22052004290340370200200441a4036a200441c0006a41086a290300370200200441ac036a200441c0006a41106a290300370200200441b4036a200441c0006a41186a290300370200200441bc036a200441c0006a41206a290300370200200441c4036a200441c0006a41286a290300370200200441cc036a200441c0006a41306a2802003602002006290300210920072007290300220a20027c220b3703002006200920037c200b200a54ad7c3703002008200829030020037c20042903f802220920027c220b200954ad7c22133703002004200b3703f802200441f8016a200120022003108b06200441f8016a41106a290300210a200441f8016a41086a290300210920043502f801210242f3e885db96cddbb320200441f8026a41386a200b2013411f108506200441d8026a200441f8026a10d205024020052802002205450d00200541186c450d00200428029803102e0b0240200441f8026a41306a28020041ffffffff0371450d0020042802a403102e0b2002420185210b0c030b200441f8026a41186a200441206a41186a290300370300200441f8026a41106a200441206a41106a290300370300200441f8026a41086a200441206a41086a290300370300200420042903203703f802200441106a200441f8026a2002200310fd01200441106a41086a290300210a200429031021090b4201210b0c010b4200210b0b200020093703082000200b370300200041106a200a370300200441d0036a24000bff0105027f017e017f017e017f23004180026b22012400200141086a200010c802200141e0006a200128020822002001280210220210c902200141b0016a2903002103200141ac016a280200210420012903602105200141b8016a200141e8006a41c40010e9081a02400240024020054201510d00200141186a410041c40010eb081a420021030c010b200141186a200141b8016a41c40010e9081a2004450d002004417f6a21040c010b410021040b200141e8006a200141186a41c40010e9082106200141b0016a2003370300200141ac016a20043602002001420137036020002002200610c8050240200128020c450d002000102e0b20014180026a24000bc21005027f0c7e037f017e017f230041b0026b220424000240024020022003844200520d0020004100360200200041106a4200370300200041086a42003703000c010b200441c0006a200110c802200441b0016a20042802402205200428024810c902200441b0016a41386a2903002106200441b0016a41306a2903002107200441b0016a41286a2903002108200441b0016a41206a2903002109200441b0016a41186a290300210a200441b0016a41106a290300210b200441f0016a290300210c20042903b801210d20042903b001210e20044180016a41086a20044180026a2903003703002004200441f8016a2903003703800102400240200e4201510d004200210c200441386a4200370300200441306a4200370300200441286a4200370300200441206a4200370300200441186a4200370300200441106a4200370300200441086a420037030020044200370300420021094200210842002107420021064200210d4200210b4200210a4200210f420021104200210e420021110c010b200441206a2008370300200441286a2007370300200441106a200a370300200441306a2006370300200420093703182004200d3703002004200c3703382004200b3703082008210f20072110200d210e200b21110b02402004280244450d002005102e0b02400240200e2011844200520d00200f2004290310842010200441186a29030084844200520d002004290330200441386a2903008450450d004200210e410021050c010b4201210e410121050b024002400240200e4201510d004280808080b001210241b4a4c70021054180801c21010c010b0240200d20027c220e200d542212200b20037c2012ad7c220d200b54200d200b511b450d0042808080808001210241a984ca0021054180800821010c010b200441d0016a2008370300200441d8016a2007370300200441e0016a2006370300200420093703c8012004200e3703b0012004200d3703b8012004200a3703c0014200210b2002422088a721122002a7211302400240427f200e200a7c22022002200e542214200d20097c2014ad7c2202200d542002200d511b22141b221142ffc7afa02556427f200220141b22024200522002501b0d00200e200a84200d20098484220b5021144200210a200b420052ad210b0c010b200441c0016a290300211520042903b801211020042903b001210f4201210a410121140b200441e8006a2002370300200441e0006a22162011370300200441d0006a200d3703002004200e3703482004200337037820042012360274200420133602702004200b3703582004420037034002400240024002402005200a420152720d00200420013602b0012001200441b0016a10bd060c010b024020054101732205200a420151720d00200420013602b0012001200441b0016a10be0641ff017122054103460d010240024020050e03010300010b200441f0006a2101024020140d00200420163602b001200441b0016a10cc020b200420013602b001200441b0016a10ce024104210541002101410021120c060b200441f8006a29030021092004290370210a0c030b200a4201522005710d010b20044190016a200110c802200441b0016a2004280290012212200428029801221310c90220042903b001210220044180016a41086a220520044180026a2903003703002004200441f8016a290300370380010240024020024201510d00200441a0016a41086a4200370300200442003703a0010c010b200441a0016a41086a200529030037030020042004290380013703a0010b200441f8016a20042903a00137030020044180026a200441a0016a41086a290300370300200442013703b001200441b0016a41386a20064200200a42015122051b370300200441e0016a2007420020051b370300200441b0016a41286a2008420020051b370300200441d0016a2009420020051b370300200441c8016a2015420020051b370300200441b0016a41106a2010420020051b370300200441f0016a200c420020051b3703002004200f420020051b3703b80120122013200441b0016a41086a10c8050240200428029401450d002012102e0b200441c0006a41286a2903002102200441c0006a41386a2903002109200429036021112004290370210a2004290358210b20042903404201520d0120042903482103200441e8016a200441c0006a41106a290300370300200441e0016a2003370300200441b0016a41086a41003a0000200441b9016a2001290000370000200441c1016a200141086a290000370000200441c9016a200141106a290000370000200441d1016a200141186a290000370000200441033a00b001200441b0016a10fe010c010b200441f8006a29030021092004290370210a0b02400240200b50450d004200210b0c010b200441b0016a41186a200141186a290000370300200441b0016a41106a200141106a290000370300200441b0016a41086a200141086a290000370300200420012900003703b0014201210b0b200441c0006a41186a200441b0016a41186a22012903002203370300200441c0006a41106a200441b0016a41106a2205290300220d370300200441c0006a41086a200441b0016a41086a2903002207370300200420042903b0012208370340200441e0016a2002370300200441d8016a22122011370300200520073703002001200d370300200441d0016a20033703002004200b3703b001200420083703b801200441b0016a10d204024020042903b001500d0020042012360200200410cc020b20004100360200200041106a2009370300200041086a200a3703000c020b20022005ad8421024103210541800a21120b200041086a200237020020004101360200200020014180801c71201241800e71722005723602040b200441b0026a24000bb50501047f230041c0006b220124002001410036022020014201370318024002400240024002400240200028020022020e050001020304050b200141013a0008200141186a200141086a41011074200028020421032000410c6a2802002204200141186a10760240200441286c2204450d00200320046a21040340200141186a2003412010742001200341206a290300370308200141186a200141086a41081074200341286a22032004470d000b0b2001200041106a280200360208200141186a200141086a410410740c040b200141023a0008200141186a200141086a4101107420012000280204360208200141186a200141086a41041074200041086a2802002103200041106a2802002204200141186a10760240200441286c2204450d00200320046a21040340200141186a2003412010742001200341206a290300370308200141186a200141086a41081074200341286a22032004470d000b0b2001200041146a280200360208200141186a200141086a410410740c030b200141033a0008200141186a200141086a410110742001200041086a290300370308200141186a200141086a410810740c020b200141043a0008200141186a200141086a4101107420012000280204360208200141186a200141086a410410740c010b200141053a0008200141186a200141086a4101107420012000280204360208200141186a200141086a410410740b200141136a200141186a41086a2802003600002001200129031837000b200141186a410c6a2001410f6a290000370000200141c6a4b9da04360019200141023a00182001200129000837001d200141186a10a50402400240024020020e020001020b200041086a2802002203450d01200341286c450d012000280204102e0c010b2000410c6a2802002203450d00200341286c450d00200041086a280200102e0b200141c0006a24000b9dc602140c7f017e017f017e057f017e087f017e017f017e087f017e017f027e017f017e017f017e017f017e230041c0026b220424002004200336020420012802042105200128020021060240024002400240024002400240200128020822030d004104210741002108410021090c010b2003410374210a20044198026a41026a210b200441e0006a41106a210c4100210d411b210e4100210841002109410421072006210f02400240024003404100210302402002280208200f2902002210a722114d0d00200b2002280200201141386c6a2203410a6a2d00003a0000200441e0006a41086a2003411f6a290000370300200c200341276a2d00003a0000200420032f00083b0198022004200341176a2900003703602003410f6a29000021122003410b6a2800002113410121030b41022114200441bc016a41026a20044198026a41026a2d00003a0000200441d8016a41086a2215200441e0006a41086a2216290300370300200441d8016a41106a2217200c2d00003a0000200420042f0198023b01bc01200420042903603703d8014101211102402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a2015290300370300200441f0016a41106a20172d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211120122118201321140b200441dc006a41026a2203200441206a41026a22192d00003a0000200441c0016a41086a221a200441f0016a41086a221b290300370300200441c0016a41106a221c200441f0016a41106a221d2d00003a0000200420042f01203b015c200420042903f0013703c00120110d02200441d8006a41026a221e20032d00003a0000200441a0016a41086a221f201a290300370300200441a0016a41106a2220201c2d00003a0000200420042f015c3b0158200420042903c0013703a0014122102c2203450d094100211102402004280204221a2802082010422088a741ffff0371221c4d0d002019201a280200201c4105746a221141026a2d00003a00002016201141176a290000370300200c2011411f6a2d00003a0000200420112f00003b01202004201129000f3703602011290007212120112800032122410121110b4102211a200441bc016a41026a200441206a41026a2d00003a0000201520162903003703002017200c2d00003a0000200420042f01203b01bc01200420042903603703d8014101211602402011450d00200441086a41026a200441bc016a41026a2d00003a0000201b2015290300370300201d20172d00003a0000200420042f01bc013b0108200420042903d8013703f00141002116202121232022211a0b200441b8016a41026a2211200441086a41026a2d00003a000020044198026a41086a2215201b29030037030020044198026a41106a2217201d2d00003a0000200420042f01083b01b801200420042903f0013703980220160d01200320042f01b8013b0000200320233700072003201a360003200320042903980237000f200341ffff033b0120200341026a20112d00003a0000200341176a20152903003700002003411f6a20172d00003a0000200420042f01583b01542004201e2d00003a0056200441386a41106a221520202d00003a0000200441386a41086a2217201f290300370300200420042903a0013703380240024020082009470d00200d200841016a2211200d20114b1b22114104201141044b1bad422c7e2210422088a74541027421112010a7210902400240200e411b470d00200441003602600c010b20044104360268200420073602602004200e41656a3602640b200441f0016a20092011200441e0006a107d20042802f801211120042802f0014101460d0120042802f40121072011412c6e21090b200f41086a210f2007200e6a221141656a2003360200201141696a428180808010370200201141786a201837000020042d0056210320042f01542116201141746a2014360000201141716a221420163b0100201441026a20033a000020112004290338370000201141086a2017290300370000201141106a20152d00003a0000200d41026a210d200e412c6a210e200841016a2108200a41786a220a450d050c010b0b2011450d070c080b2000201a36020420004101360200200041086a20233702002003102e0c010b2000201436020420004101360200200041086a20183702000b4101210c0240200541ffffffff0171450d002006102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a410121174101210d410121144101210e4101211e0c010b0240200541ffffffff0171450d002006102e0b200141106a2802002124200128020c21250240200141146a2802002203450d002003410c6c21262008410174211b2008412c6c411b6a211420044198026a41026a2127200441e0006a41106a210e41002116024002400240024003400240202520166a220341066a2f0100221d41ffff03470d00200042013702000c050b200341086a2f0100210a200341046a2f0100210d4100211502402002280208200328020022034d0d0020272002280200200341386c6a2203410a6a2d00003a0000200441e0006a41086a2003411f6a290000370300200e200341276a2d00003a0000200420032f00083b0198022004200341176a2900003703602003410f6a29000021122003410b6a2800002128410121150b4102211a200441bc016a41026a20044198026a41026a2d00003a0000200441d8016a41086a2211200441e0006a41086a220f290300370300200441d8016a41106a220c200e2d00003a0000200420042f0198023b01bc01200420042903603703d8014101210302402015450d00200441c0016a41026a200441bc016a41026a2d00003a0000200441f0016a41086a2011290300370300200441f0016a41106a200c2d00003a0000200420042f01bc013b01c001200420042903d8013703f00141002103201221102028211a0b200441cc006a41026a221c200441c0016a41026a2d00003a0000200441386a41086a221e200441f0016a41086a2215290300370300200441386a41106a221f200441f0016a41106a22172d00003a0000200420042f01c0013b014c200420042903f00137033820030d02200441346a41026a2222201c2d00003a0000200441206a41086a220b201e290300370300200441206a41106a2206201f2d00003a0000200420042f014c3b01342004200429033837032041c400102c2203450d0a4100211c02402004280204221f2802082220200d4d0d002027201f280200200d4105746a220d41026a2d00003a0000200f200d41176a290000370300200e200d411f6a2d00003a00002004200d2f00003b0198022004200d29000f370360200d2900072121200d28000321294101211c0b4102211e200441bc016a41026a20044198026a41026a2d00003a00002011200f290300370300200c200e2d00003a0000200420042f0198023b01bc01200420042903603703d8014101210d0240201c450d00200441b8016a41026a200441bc016a41026a2d00003a0000201520112903003703002017200c2d00003a0000200420042f01bc013b01b801200420042903d8013703f0014100210d202121182029211e0b200441d4006a41026a221c200441b8016a41026a222a2d00003a0000200441c0016a41086a22192015290300370300200441c0016a41106a221320172d00003a0000200420042f01b8013b0154200420042903f0013703c001200d0d03200441d0006a41026a2205201c2d00003a0000200441a0016a41086a222b2019290300370300200441a0016a41106a221920132d00003a0000200420042f01543b0150200420042903c0013703a0014100210d02402020200a4d0d00202a201f280200200a4105746a220d41026a2d00003a0000200f200d41176a290000370300200e200d411f6a2d00003a00002004200d2f00003b01b8012004200d29000f370360200d290007212c200d280003212d4101210d0b4102211c200441bc016a41026a200441b8016a41026a2d00003a00002011200f290300370300200c200e2d00003a0000200420042f01b8013b01bc01200420042903603703d8014101210f0240200d450d00200441dc006a41026a200441bc016a41026a2d00003a0000201520112903003703002017200c2d00003a0000200420042f01bc013b015c200420042903d8013703f0014100210f202c2123202d211c0b200441d8006a41026a2211200441dc006a41026a2d00003a000020044198026a41086a220c201529030037030020044198026a41106a221520172d00003a0000200420042f015c3b0158200420042903f00137039802200f0d01200320042f01503b0100200320183700072003201e360003200320042903a00137000f2003201d3b0120200320042f01583b0022200341026a20052d00003a0000200341176a202b2903003700002003411f6a20192d00003a0000200341246a20112d00003a0000200320233700292003201c3600252003201d417f733b01422003200429039802370031200341396a200c290300370000200341c1006a20152d00003a0000200441086a41086a220c200b290300370300200441086a41106a220f20062d00003a0000200420042f01343b011c200420222d00003a001e200420042903203703080240024020082009470d00201b200841016a2211201b20114b1b22114104201141044b1bad422c7e222e422088a7454102742111202ea721150240024020080d00200441003602600c010b20044104360268200420073602602004201441656a3602640b200441f0016a20152011200441e0006a107d20042802f801211120042802f0014101460d0120042802f40121072011412c6e21090b200720146a221141656a2003360200201141696a428280808020370200201141786a201037000020042d001e210320042f011c2115201141746a201a360000201141716a221720153b0100201741026a20033a000020112004290308370000201141086a200c290300370000201141106a200f2d00003a0000201b41026a211b2014412c6a2114200841016a210820262016410c6a2216470d010c060b0b20110d090c080b2000201c36020420004101360200200041086a20233702002003102e0c020b2000201a36020420004101360200200041086a20103702000c010b2000201e36020420004101360200200041086a20183702002003102e0b4100211e4101210c02402024450d002024410c6c450d002025102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a410121174101210d410121144101210e0c010b02402024450d002024410c6c450d002025102e0b200128021821282001411c6a28020021270240200141206a2802002203450d00202820034104746a2125200441e0006a4102722116200441206a41086a21052028211e02400240024002400340201e2f010c211f201e28020021202004201e290204370320200441003b015c20044105360238200420053602dc012004200441386a3602e8012004200441046a3602e4012004200441dc006a3602e0012004200441206a3602d801200441e0006a200441d8016a108e060240024020042f01604101470d004122102c220f450d0c200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c29010037010020044198026a41106a200441d8016a41106a28020036020020044198026a41086a200441d8016a41086a290300370300200420042903d80137039802200441e0006a20044198026a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d0e2011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602c0010c010b200441023602c8012004200f3602c0012004201141226c3602c4010b200441a0016a200a2003200441c0016a107d20042802a801210320042802a0014101460d0220042802a401210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a20044198026a108e0620042f01604101460d000c030b0b20030d0c0c0b0b410021114102210f4100210e0b0240200428023822034105460d00200429023c211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441a0016a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01a0012004200329000f370360200329000721122003280003212b410121030b4102211a200441bc016a41026a200441a0016a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01a0013b01bc01200420042903603703d8014101210d02402003450d00200441386a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0138200420042903d8013703f0014100210d20122118202b211a0b200441086a41026a220c200441386a41026a221f2d00003a000020044198026a41086a2215200441f0016a41086a221929030037030020044198026a41106a2217200441f0016a41106a22132d00003a0000200420042f01383b0108200420042903f0013703980202400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441c0016a41086a220d2015290300370300200441c0016a41106a221420172d00003a0000200420042f01083b01b80120042004290398023703c001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d10201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032018370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903c00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441a0016a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01a0012004200341176a2900003703602003410f6a29000021212003410b6a280000212a410121030b4102211a200441bc016a41026a200441a0016a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01a0013b01bc01200420042903603703d8014101211102402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0138200420042903d8013703f0014100211120212123202a211a0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01383b0108200420042903f0013703980220110d07200d2015290300370300201420172d00003a0000200420042f01083b01b80120042004290398023703c0012004200c2d00003a00ba0120082009470d0420084101742203200841016a2211200320114b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7211120080d02200441003602600c030b20030d0f0c0e0b2000201a36020420004101360200200041086a20183702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a20112003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2023370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a201a3600002003411b6a20042903c001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41106a221e2025470d010c060b0b20030d090c080b2000201a36020420004101360200200041086a2023370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100210e4101210c0240202741ffffffff0071450d002028102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a410121174101210d410121144100211e0c010b0240202741ffffffff0071450d002028102e0b20012802242127200141286a2802002129024002402001412c6a2802002203450d002027200341146c6a2128200441e0006a4102722116200441206a410c6a2105200441206a41086a212b2027211e02400240024002400340201e2f0110211f201e2802002120201e2901042110202b201e410c6a28010036020020042010370320200441003b015c20044105360238200420053602dc012004200441386a3602e8012004200441046a3602e4012004200441dc006a3602e0012004200441206a3602d801200441e0006a200441d8016a108e060240024020042f01604101470d004122102c220f450d0d200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c29010037010020044198026a41106a200441d8016a41106a28020036020020044198026a41086a200441d8016a41086a290300370300200420042903d80137039802200441e0006a20044198026a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d0f2011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602c0010c010b200441023602c8012004200f3602c0012004201141226c3602c4010b200441a0016a200a2003200441c0016a107d20042802a801210320042802a0014101460d0220042802a401210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a20044198026a108e0620042f01604101460d000c030b0b20030d0d0c0c0b410021114102210f4100210e0b0240200428023822034105460d00200429023c211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441a0016a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01a0012004200329000f370360200329000721122003280003212a410121030b4102211a200441bc016a41026a200441a0016a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01a0013b01bc01200420042903603703d8014101210d02402003450d00200441386a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0138200420042903d8013703f0014100210d20122118202a211a0b200441086a41026a220c200441386a41026a221f2d00003a000020044198026a41086a2215200441f0016a41086a221929030037030020044198026a41106a2217200441f0016a41106a22132d00003a0000200420042f01383b0108200420042903f0013703980202400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441c0016a41086a220d2015290300370300200441c0016a41106a221420172d00003a0000200420042f01083b01b80120042004290398023703c001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d11201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032018370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903c00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441a0016a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01a0012004200341176a2900003703602003410f6a29000021212003410b6a2800002125410121030b41022111200441bc016a41026a200441a0016a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01a0013b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0138200420042903d8013703f0014100211a20212123202521110b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01383b0108200420042903f00137039802201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b80120042004290398023703c0012004200c2d00003a00ba0120082009470d0420084101742203200841016a220c2003200c4b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d100c0f0b2000201a36020420004101360200200041086a20183702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2023370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903c001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41146a221e2028470d010c060b0b20030d0a0c090b2000201136020420004101360200200041086a2023370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b410021144101210c02402029450d00202941146c450d002027102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a410121174101210d0c010b02402029450d00202941146c450d002027102e0b20012802302127200141346a280200212902400240200141386a2802002203450d002027200341186c6a2128200441e0006a4102722116200441a0016a41106a2105200441a0016a41086a212b2027211e02400240024002400340201e2f0114211f201e2802002120201e2901042110202b201e410c6a290100370300200420103703a001200441003b015c20044105360220200420053602dc012004200441206a3602e8012004200441046a3602e4012004200441dc006a3602e0012004200441a0016a3602d801200441e0006a200441d8016a108e060240024020042f01604101470d004122102c220f450d0e200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c29010037010020044198026a41106a200441d8016a41106a28020036020020044198026a41086a200441d8016a41086a290300370300200420042903d80137039802200441e0006a20044198026a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d102011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602c0010c010b200441023602c8012004200f3602c0012004201141226c3602c4010b200441386a200a2003200441c0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a20044198026a108e0620042f01604101460d000c030b0b20030d0e0c0d0b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f370360200329000721122003280003212a410121030b4102211a200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100210d20122118202a211a0b200441086a41026a220c200441206a41026a221f2d00003a000020044198026a41086a2215200441f0016a41086a221929030037030020044198026a41106a2217200441f0016a41106a22132d00003a0000200420042f01203b0108200420042903f0013703980202400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441c0016a41086a220d2015290300370300200441c0016a41106a221420172d00003a0000200420042f01083b01b80120042004290398023703c001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d12201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032018370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903c00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a29000021212003410b6a2800002125410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01383b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211a20212123202521110b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b0108200420042903f00137039802201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b80120042004290398023703c0012004200c2d00003a00ba0120082009470d0420084101742203200841016a220c2003200c4b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d110c100b2000201a36020420004101360200200041086a20183702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2023370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903c001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41186a221e2028470d010c060b0b20030d0b0c0a0b2000201136020420004101360200200041086a2023370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100210d4101210c02402029450d00202941186c450d002027102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a410121170c010b02402029450d00202941186c450d002027102e0b200128023c2129200141c0006a280200212d02400240200141c4006a2802002203450d0020292003411c6c6a2127200441e0006a4102722116200441c0016a41146a2105200441c0016a41106a212b200441c0016a41086a212a2029211e02400240024002400340201e2f0118211f201e2802002120201e410c6a2901002110201e2901042118202b201e41146a280100360200202a2010370300200420183703c001200441003b015c20044105360220200420053602dc012004200441206a3602e8012004200441046a3602e4012004200441dc006a3602e0012004200441c0016a3602d801200441e0006a200441d8016a108e060240024020042f01604101470d004122102c220f450d0f200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c29010037010020044198026a41106a200441d8016a41106a28020036020020044198026a41086a200441d8016a41086a290300370300200420042903d80137039802200441e0006a20044198026a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d112011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a200a2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a20044198026a108e0620042f01604101460d000c030b0b20030d0f0c0e0b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703602003290007212120032800032125410121030b4102211a200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100210d202121232025211a0b200441086a41026a220c200441206a41026a221f2d00003a000020044198026a41086a2215200441f0016a41086a221929030037030020044198026a41106a2217200441f0016a41106a22132d00003a0000200420042f01203b0108200420042903f0013703980202400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b80120042004290398023703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d13201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032023370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a290000212c2003410b6a2800002128410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01383b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211a202c2112202821110b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b0108200420042903f00137039802201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b80120042004290398023703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d122008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d120c110b2000201a36020420004101360200200041086a20233702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2012370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e411c6a221e2027470d010c060b0b20030d0c0c0b0b2000201136020420004101360200200041086a2012370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b410021174101210c0240202d450d00202d411c6c450d002029102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c4101210a0c010b0240202d450d00202d411c6c450d002029102e0b20012802482129200141cc006a280200212d02400240200141d0006a2802002203450d00202920034105746a2127200441e0006a410272211620044198026a41186a210520044198026a41106a212b20044198026a41086a212a2029211e02400240024002400340201e2f011c211f201e2802002120201e410c6a2901002110201e2901042118202b201e41146a290100370300202a20103703002004201837039802200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c801200420044198026a3602c001200441e0006a200441c0016a108e060240024020042f01604101470d004122102c220f450d10200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441e0006a200441d8016a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d122011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a200a2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a200441d8016a108e0620042f01604101460d000c030b0b20030d100c0f0b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703602003290007212120032800032125410121030b4102211a200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100210d202121232025211a0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a2215200441f0016a41086a2219290300370300200441c0016a41106a2217200441f0016a41106a22132d00003a0000200420042f01203b0108200420042903f0013703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d14201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032023370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a290000212c2003410b6a2800002128410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01383b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211a20282111202c21120b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b0108200420042903f0013703c001201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d132008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d130c120b2000201a36020420004101360200200041086a20233702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2012370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41206a221e2027470d010c060b0b20030d0d0c0c0b2000201136020420004101360200200041086a2012370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100210a4101210c0240202d41ffffff3f71450d002029102e0b41012102410121164101211b4101211d4101211a4101210f410121154101211c0c010b0240202d41ffffff3f71450d002029102e0b2001280254212d200141d8006a280200212602400240200141dc006a2802002203450d00202d200341246c6a2129200441e0006a410272211620044198026a411c6a210520044198026a41186a212b20044198026a41106a212a20044198026a41086a2125202d211e02400240024002400340201e2f0120211f201e2802002120201e410c6a2901002110201e41146a2901002118201e2901042123202b201e411c6a280100360200202a2018370300202520103703002004202337039802200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c801200420044198026a3602c001200441e0006a200441c0016a108e060240024020042f01604101470d004122102c220f450d11200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441e0006a200441d8016a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d132011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a200a2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a200441d8016a108e0620042f01604101460d000c030b0b20030d110c100b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703602003290007212c20032800032128410121030b4102211a200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100210d2028211a202c21120b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a2215200441f0016a41086a2219290300370300200441c0016a41106a2217200441f0016a41106a22132d00003a0000200420042f01203b0108200420042903f0013703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d15201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032012370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a290000212e2003410b6a2800002127410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01383b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211a20272111202e21210b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b0108200420042903f0013703c001201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d142008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d140c130b2000201a36020420004101360200200041086a20123702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2021370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41246a221e2029470d010c060b0b20030d0e0c0d0b2000201136020420004101360200200041086a2021370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100211c4101210c02402026450d00202641246c450d00202d102e0b41012102410121164101211b4101211d4101211a4101210f410121150c010b02402026450d00202641246c450d00202d102e0b2001280260212d200141e4006a280200212602400240200141e8006a2802002203450d00202d200341286c6a2129200441e0006a410272211620044198026a41206a210520044198026a41186a212b20044198026a41106a212a20044198026a41086a2125202d211e02400240024002400340201e2f0124211f201e2802002120201e410c6a2901002110201e41146a2901002118201e2901042123202b201e411c6a290100370300202a2018370300202520103703002004202337039802200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c801200420044198026a3602c001200441e0006a200441c0016a108e060240024020042f01604101470d004122102c220f450d12200f2016290100370100200f41206a201641206a221b2f01003b0100200f41186a201641186a221d290100370100200f41106a201641106a221a290100370100200f41086a201641086a221c290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441e0006a200441d8016a108e06410121114101210e20042f01604101470d01410121114122210c4101210e02400340200441f0016a41206a2215201b2f01003b0100200441f0016a41186a2217201d290100370300200441f0016a41106a220d201a290100370300200441f0016a41086a2214201c290100370300200420162901003703f0010240200e2011470d00201141016a22032011490d142011410174220a2003200a20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210a0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a200a2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a220320042903f001370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a200441d8016a108e0620042f01604101460d000c030b0b20030d120c110b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703602003290007212c20032800032128410121030b4102211a200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221b200441e0006a41086a221c290300370300200441d8016a41106a221d200441e0006a41106a220a2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a0000200441f0016a41086a201b290300370300200441f0016a41106a201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100210d2028211a202c21120b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a2215200441f0016a41086a2219290300370300200441c0016a41106a2217200441f0016a41106a22132d00003a0000200420042f01203b0108200420042903f0013703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d16201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b200441f0016a20062003200441e0006a107d20042802f801210320042802f0014101460d0120042802f401210f200341226e21060b200f201141226c6a22032012370007200b2d0000211120042f01b801210b2003201a3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000201c2003411f6a290000370300200a200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a290000212e2003410b6a2800002127410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201b201c290300370300201d200a2d00003a0000200420042f01383b01bc01200420042903603703d8014101211a02402003450d00201f200441bc016a41026a2d00003a00002019201b2903003703002013201d2d00003a0000200420042f01bc013b0120200420042903d8013703f0014100211a20272111202e21210b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b0108200420042903f0013703c001201a0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d152008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602600c030b20030d150c140b2000201a36020420004101360200200041086a20123702000c070b200441043602682004200736026020042008412c6c3602640b200441f0016a200c2003200441e0006a107d20042802f801210320042802f0014101460d0120042802f40121072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2021370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201e41286a221e2029470d010c060b0b20030d0f0c0e0b2000201136020420004101360200200041086a2021370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b410021154101210c02402026450d00202641286c450d00202d102e0b41012102410121164101211b4101211d4101211a4101210f0c010b02402026450d00202641286c450d00202d102e0b200128026c2126200141f0006a280200212402400240200141f4006a2802002203450d0020262003412c6c6a212d200441e0006a4102722116200441f0016a41246a2105200441f0016a41206a212b200441f0016a41186a212a200441f0016a41106a2125200441f0016a41086a21282026211b02400240024002400340201b2f0128211f201b2802002120201b410c6a2901002110201b41146a2901002118201b411c6a2901002123201b2901042112202b201b41246a280100360200202a20233703002025201837030020282010370300200420123703f001200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441f0016a3602c001200441e0006a200441c0016a108e060240024020042f01604101470d004122102c220f450d13200f2016290100370100200f41206a201641206a221d2f01003b0100200f41186a201641186a221a290100370100200f41106a201641106a221c290100370100200f41086a201641086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441e0006a200441d8016a108e06410121114101210e20042f01604101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a29010037030020042016290100370398020240200e2011470d00201141016a22032011490d152011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441e0006a200441d8016a108e0620042f01604101460d000c030b0b20030d130c120b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441e0006a41086a200341176a290000370300200441e0006a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703602003290007212e20032800032127410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441e0006a41086a220a290300370300200441d8016a41106a221a200441e0006a41106a221e2d00003a0000200420042f01383b01bc01200420042903603703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d2027211c202e21210b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a2206200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d002011210b200e21110c010b201141016a22032011490d172011410174220b2003200b20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210b0240024020110d00200441003602600c010b200441023602682004200f3602602004201141226c3602640b20044198026a200b2003200441e0006a107d20042802a00221032004280298024101460d01200428029c02210f200341226e210b0b200f201141226c6a2203202137000720062d0000211120042f01b80121062003201c360003200320063b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703602003410f6a290000212f2003410b6a2800002129410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903603703d8014101211102402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d80137039802410021112029211c202f212c0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c00120110d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d16200841017422112003201120034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7211120080d02200441003602600c030b20030d160c150b2000201c36020420004101360200200041086a20213702000c070b200441043602682004200736026020042008412c6c3602640b20044198026a20112003200441e0006a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a3602082003200b3602042003200f360200200341136a202c370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a201c3600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201b412c6a221b202d470d010c060b0b20030d100c0f0b2000201c36020420004101360200200041086a202c370200200b21110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100210f4101210c02402024450d002024412c6c450d002026102e0b41012102410121164101211b4101211d4101211a0c010b02402024450d002024412c6c450d002026102e0b20012802782126200141fc006a28020021240240024020014180016a2802002203450d002026200341306c6a212d200441f0016a410272211620044188016a2105200441e0006a41206a212b200441e0006a41186a212a200441e0006a41106a2125200441e0006a41086a21282026211b02400240024002400340201b2f012c211f201b2802002120201b410c6a2901002110201b41146a2901002118201b411c6a2901002123201b2901042112202b201b41246a290100370300202a2023370300202520183703002028201037030020042012370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d14200f2016290100370100200f41206a201641206a221d2f01003b0100200f41186a201641186a221a290100370100200f41106a201641106a221c290100370100200f41086a201641086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a29010037030020042016290100370398020240200e2011470d00201141016a22032011490d162011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d140c130b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f0012003290007212e20032800032127410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d2027211c202e21210b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d18201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a20062003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e21060b200f201141226c6a22032021370007200b2d0000211120042f01b801210b2003201c3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a290000212f2003410b6a2800002129410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211c02402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100211c20292111202f212c0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c001201c0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d172008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602f0010c030b20030d170c160b2000201c36020420004101360200200041086a20213702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a200c2003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a202c370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201b41306a221b202d470d010c060b0b20030d110c100b2000201136020420004101360200200041086a202c370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100211a4101210c02402024450d00202441306c450d002026102e0b41012102410121164101211b4101211d0c010b02402024450d00202441306c450d002026102e0b200128028401212420014188016a2802002130024002402001418c016a2802002203450d002024200341346c6a2126200441f0016a4102722116200441e0006a412c6a210520044188016a212b200441e0006a41206a212a200441e0006a41186a2125200441e0006a41106a2128200441e0006a41086a21272024211b02400240024002400340201b2f0130211f201b2802002120201b410c6a2901002110201b41146a2901002118201b411c6a2901002123201b41246a2901002112201b2901042121202b201b412c6a280100360200202a201237030020252023370300202820183703002027201037030020042021370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d15200f2016290100370100200f41206a201641206a221d2f01003b0100200f41186a201641186a221a290100370100200f41106a201641106a221c290100370100200f41086a201641086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a29010037030020042016290100370398020240200e2011470d00201141016a22032011490d172011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d150c140b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f0012003290007212f20032800032129410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d2029211c202f212c0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d19201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a20062003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e21060b200f201141226c6a2203202c370007200b2d0000211120042f01b801210b2003201c3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a29000021312003410b6a280000212d410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211102402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d8013703980241002111202d211c2031212e0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c00120110d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d18200841017422112003201120034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7211120080d02200441003602f0010c030b20030d180c170b2000201c36020420004101360200200041086a202c3702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a20112003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a202e370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a201c3600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201b41346a221b2026470d010c060b0b20030d120c110b2000201c36020420004101360200200041086a202e370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100211d4101210c02402030450d00203041346c450d002024102e0b41012102410121164101211b0c010b02402030450d00203041346c450d002024102e0b200128029001212420014194016a28020021300240024020014198016a2802002203450d002024200341386c6a2126200441f0016a410272211620044190016a210520044188016a212b200441e0006a41206a212a200441e0006a41186a2125200441e0006a41106a2128200441e0006a41086a21272024211b02400240024002400340201b2f0134211f201b2802002120201b410c6a2901002110201b41146a2901002118201b411c6a2901002123201b41246a2901002112201b2901042121202b201b412c6a290100370300202a201237030020252023370300202820183703002027201037030020042021370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d16200f2016290100370100200f41206a201641206a221d2f01003b0100200f41186a201641186a221a290100370100200f41106a201641106a221c290100370100200f41086a201641086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a29010037030020042016290100370398020240200e2011470d00201141016a22032011490d182011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d160c150b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f0012003290007212f20032800032129410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d2029211c202f212c0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d1a201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a20062003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e21060b200f201141226c6a2203202c370007200b2d0000211120042f01b801210b2003201c3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a29000021312003410b6a280000212d410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211c02402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100211c202d21112031212e0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c001201c0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d192008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602f0010c030b20030d190c180b2000201c36020420004101360200200041086a202c3702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a200c2003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a202e370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201b41386a221b2026470d010c060b0b20030d130c120b2000201136020420004101360200200041086a202e370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100211b4101210c02402030450d00203041386c450d002024102e0b41012102410121160c010b02402030450d00203041386c450d002024102e0b200128029c012130200141a0016a280200213202400240200141a4016a2802002203450d0020302003413c6c6a2124200441f0016a410272211b200441e0006a41346a210520044190016a212b20044188016a212a200441e0006a41206a2125200441e0006a41186a2128200441e0006a41106a2127200441e0006a41086a2129203021160240024002400240034020162f0138211f201628020021202016410c6a2901002110201641146a29010021182016411c6a2901002123201641246a29010021122016412c6a29010021212016290104212c202b201641346a280100360200202a2021370300202520123703002028202337030020272018370300202920103703002004202c370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d17200f201b290100370100200f41206a201b41206a221d2f01003b0100200f41186a201b41186a221a290100370100200f41106a201b41106a221c290100370100200f41086a201b41086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a2901003703002004201b290100370398020240200e2011470d00201141016a22032011490d192011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d170c160b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f001200329000721312003280003212d410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d202d211c2031212e0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d1b201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a20062003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e21060b200f201141226c6a2203202e370007200b2d0000211120042f01b801210b2003201c3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a29000021332003410b6a2800002126410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211102402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d80137039802410021112026211c2033212f0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c00120110d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d1a200841017422112003201120034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7211120080d02200441003602f0010c030b20030d1a0c190b2000201c36020420004101360200200041086a202e3702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a20112003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a202f370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a201c3600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a21082016413c6a22162024470d010c060b0b20030d140c130b2000201c36020420004101360200200041086a202f370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b410021164101210c02402032450d002032413c6c450d002030102e0b410121020c010b02402032450d002032413c6c450d002030102e0b20012802a8012130200141ac016a28020021320240200141b0016a2802002203450d00203020034106746a2124200441f0016a410272211b200441e0006a41386a210520044190016a212b20044188016a212a200441e0006a41206a2125200441e0006a41186a2128200441e0006a41106a2127200441e0006a41086a2129203021160240024002400240034020162f013c211f201628020021202016410c6a2901002110201641146a29010021182016411c6a2901002123201641246a29010021122016412c6a29010021212016290104212c202b201641346a290100370300202a2021370300202520123703002028202337030020272018370300202920103703002004202c370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d17200f201b290100370100200f41206a201b41206a221d2f01003b0100200f41186a201b41186a221a290100370100200f41106a201b41106a221c290100370100200f41086a201b41086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a2901003703002004201b290100370398020240200e2011470d00201141016a22032011490d192011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d170c160b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f001200329000721312003280003212d410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d202d211c2031212e0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a2206200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d002011210b200e21110c010b201141016a22032011490d1b2011410174220b2003200b20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7210b0240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a200b2003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e210b0b200f201141226c6a2203202e37000720062d0000211120042f01b80121062003201c360003200320063b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a29000021332003410b6a2800002126410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211c02402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100211c202621112033212f0b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c001201c0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d1a2008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602f0010c030b20030d1a0c190b2000201c36020420004101360200200041086a202e3702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a200c2003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a3602082003200b3602042003200f360200200341136a202f370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201641c0006a22162024470d010c060b0b20030d140c130b2000201136020420004101360200200041086a202f370200200b21110c010b200042013702000b2011450d00201141226c450d00200f102e0b410021024101210c0240203241ffffff1f710d00410021160c020b2030102e410021160c010b0240203241ffffff1f71450d002030102e0b20012802b4012132200141b8016a2802002134200141bc016a2802002203450d0c2032200341c4006c6a2130200441f0016a410272211b200441e0006a413c6a2105200441e0006a41386a212b20044190016a212a20044188016a2125200441e0006a41206a2128200441e0006a41186a2127200441e0006a41106a2129200441e0006a41086a212d203221160240024002400240034020162f0140211f201628020021202016410c6a2901002110201641146a29010021182016411c6a2901002123201641246a29010021122016412c6a2901002121201641346a290100212c2016290104212e202b2016413c6a280100360200202a202c37030020252021370300202820123703002027202337030020292018370300202d20103703002004202e370360200441003b015c20044105360220200420053602c4012004200441206a3602d0012004200441046a3602cc012004200441dc006a3602c8012004200441e0006a3602c001200441f0016a200441c0016a108e060240024020042f01f0014101470d004122102c220f450d16200f201b290100370100200f41206a201b41206a221d2f01003b0100200f41186a201b41186a221a290100370100200f41106a201b41106a221c290100370100200f41086a201b41086a220a290100370100200441d8016a41106a200441c0016a41106a280200360200200441d8016a41086a200441c0016a41086a290300370300200420042903c0013703d801200441f0016a200441d8016a108e06410121114101210e20042f01f0014101470d01410121114122210c4101210e0240034020044198026a41206a2215201d2f01003b010020044198026a41186a2217201a29010037030020044198026a41106a220d201c29010037030020044198026a41086a2214200a2901003703002004201b290100370398020240200e2011470d00201141016a22032011490d182011410174221e2003201e20034b1b22034104200341044b1bad42227e2210422088a74541017421032010a7211e0240024020110d00200441003602a0010c010b200441023602a8012004200f3602a0012004201141226c3602a4010b200441386a201e2003200441a0016a107d2004280240210320042802384101460d02200428023c210f200341226e21110b200f200c6a2203200429039802370100200341206a20152f01003b0100200341186a2017290300370100200341106a200d290300370100200341086a2014290300370100200c41226a210c200e41016a210e200441f0016a200441d8016a108e0620042f01f0014101460d000c030b0b20030d160c150b410021114102210f4100210e0b0240200428022022034105460d002004290224211002402011450d00201141226c450d00200f102e0b20002003360204200041013602002000410c6a20104220883e0200200041086a20103e02000c050b20042f015c222241ffff03460d024100210302402004280204220c280208201f4d0d00200441386a41026a200c280200201f4105746a220341026a2d00003a0000200441f0016a41086a200341176a290000370300200441f0016a41106a2003411f6a2d00003a0000200420032f00003b01382004200329000f3703f0012003290007213320032800032126410121030b4102211c200441bc016a41026a200441386a41026a2d00003a0000200441d8016a41086a221d200441f0016a41086a220a290300370300200441d8016a41106a221a200441f0016a41106a221e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101210d02402003450d00200441206a41026a200441bc016a41026a2d00003a000020044198026a41086a201d29030037030020044198026a41106a201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100210d2026211c2033212f0b200441086a41026a220c200441206a41026a221f2d00003a0000200441c0016a41086a221520044198026a41086a2219290300370300200441c0016a41106a221720044198026a41106a22132d00003a0000200420042f01203b010820042004290398023703c00102400240024002400240200d0d00200441b8016a41026a220b200c2d00003a0000200441a0016a41086a220d2015290300370300200441a0016a41106a221420172d00003a0000200420042f01083b01b801200420042903c0013703a001024002400240200e2011460d0020112106200e21110c010b201141016a22032011490d1a201141017422062003200620034b1b22034104200341044b1bad42227e2210422088a74541017421032010a721060240024020110d00200441003602f0010c010b200441023602f8012004200f3602f0012004201141226c3602f4010b20044198026a20062003200441f0016a107d20042802a00221032004280298024101460d01200428029c02210f200341226e21060b200f201141226c6a2203202f370007200b2d0000211120042f01b801210b2003201c3600032003200b3b0100200341026a20113a0000200320042903a00137000f200341176a200d2903003700002003411f6a20142d00003a000020032022417f733b0120410021030240200228020820204d0d00200441386a41026a2002280200202041386c6a2203410a6a2d00003a0000200a2003411f6a290000370300201e200341276a2d00003a0000200420032f00083b01382004200341176a2900003703f0012003410f6a29000021352003410b6a2800002124410121030b41022111200441bc016a41026a200441386a41026a2d00003a0000201d200a290300370300201a201e2d00003a0000200420042f01383b01bc01200420042903f0013703d8014101211c02402003450d00201f200441bc016a41026a2d00003a00002019201d2903003703002013201a2d00003a0000200420042f01bc013b0120200420042903d801370398024100211c20242111203521310b200c201f2d00003a000020152019290300370300201720132d00003a0000200420042f01203b010820042004290398023703c001201c0d07200d2015290300370300201420172d00003a0000200420042f01083b01b801200420042903c0013703a0012004200c2d00003a00ba0120082009470d04200841016a22032008490d192008410174220c2003200c20034b1b22034104200341044b1bad422c7e2210422088a74541027421032010a7210c20080d02200441003602f0010c030b20030d190c180b2000201c36020420004101360200200041086a202f3702000c070b200441043602f801200420073602f00120042008412c6c3602f4010b20044198026a200c2003200441f0016a107d20042802a00221032004280298024101460d01200428029c0221072003412c6e21090b20072008412c6c6a2203200e41016a360208200320063602042003200f360200200341136a2031370000200320042f01b8013b010c2003410e6a20042d00ba013a00002003410f6a20113600002003411b6a20042903a001370000200341236a200d2903003700002003412b6a20142d00003a0000200841016a2108201641c4006a22162030470d010c120b0b20030d130c120b2000201136020420004101360200200041086a2031370200200621110c010b200042013702000b2011450d00201141226c450d00200f102e0b4100210c02402034450d00203441c4006c450d002032102e41002102410021160c010b41002102410021160b4100211b0b4100211d0b4100211a0b4100210f0b410021150b4100211c0b4100210a0b410021170b4100210d0b410021140b4100210e4100211e0b02402008450d002008412c6c21112007210303400240200341046a2802002208450d00200841226c450d002003280200102e0b2003412c6a2103201141546a22110d000b0b02402009450d002009412c6c450d002007102e0b0240201e450d00200141106a2802002203450d002003410c6c450d00200128020c102e0b0240200e450d002001411c6a28020041ffffffff0071450d002001280218102e0b02402014450d00200141286a2802002203450d00200341146c450d002001280224102e0b0240200d450d00200141346a2802002203450d00200341186c450d002001280230102e0b02402017450d00200141c0006a2802002203450d002003411c6c450d00200128023c102e0b0240200a450d00200141cc006a28020041ffffff3f71450d002001280248102e0b0240201c450d00200141d8006a2802002203450d00200341246c450d002001280254102e0b02402015450d00200141e4006a2802002203450d00200341286c450d002001280260102e0b0240200f450d00200141f0006a2802002203450d002003412c6c450d00200128026c102e0b0240201a450d00200141fc006a2802002203450d00200341306c450d002001280278102e0b0240201d450d0020014188016a2802002203450d00200341346c450d00200128028401102e0b0240201b450d0020014194016a2802002203450d00200341386c450d00200128029001102e0b02402016450d00200141a0016a2802002203450d002003413c6c450d00200128029c01102e0b02402002450d00200141ac016a28020041ffffff1f71450d0020012802a801102e0b200c450d01200141b8016a2802002203450d01200341c4006c450d0120012802b401102e0c010b02402034450d00203441c4006c450d002032102e0b20002007360204200041003602002000410c6a2008360200200041086a20093602000b200441c0026a24000f0b1038000b1036000be90504077f017e017f027e23004180016b210202400240200128020022032001280204460d00200128021021042001200341046a3602004102210520032f010021062001280208220720072f0100200341026a2f010022076a220341ffff03200341ffff03491b3b0100024002402001410c6a280200280200220128020820064b0d00200241e8006a41106a200241d0006a41106a2d00003a0000200241e8006a41086a200241d0006a41086a29000037030020022002290050370368410121010c010b200241d0006a41086a200128020020064105746a220141176a2203290000370300200241d0006a41106a2001411f6a22082d00003a00002002200129000f370350200129000721092001280003210520012d0002210620012f0000210a200241e8006a41106a20082d000022083a0000200241e8006a41086a2003290000220b3703002002200129000f220c370368200241386a41106a20083a0000200241386a41086a200b3703002002200c370338410021010b200241206a41086a2203200241386a41086a290300370300200241206a41106a2208200241386a41106a2d00003a000020022002290338370320024002402001450d00200220053602682002200937026c200228006921012004410b6a20094238883c0000200441096a20094228883d0000200420094208883e000520042001360001200420053a0000410021030c010b200241e8006a41106a20082d00003a0000200241e8006a41086a200329030037030020022002290320370368410121030b200241d0006a41086a2204200241e8006a41086a290300370300200241d0006a41106a2208200241e8006a41106a2d00003a000020022002290368370350410021012003450d012000200a3b010220002002290350370011200041096a2009370000200041056a2005360000200041046a20063a0000200041226a20073b0100200041196a2004290300370000200041216a20082d00003a0000200041013b01000f0b410021010b200020013b01000bc10201037f230041106b2202240002404120102c2203450d0020024220370204200220033602002002200041106a412010742001200228020022032002280208107402402002280204450d002003102e0b200020011091024120102c2203450d0020024220370204200220033602002002200041306a412010742001200228020022032002280208107402402002280204450d002003102e0b4120102c2203450d0020024220370204200220033602002002200041d0006a412010742001200228020022032002280208107402402002280204450d002003102e0b200028020421032000410c6a2802002200200110760240200041246c2200450d0003402002200310ef042001200228020022042002280208107402402002280204450d002004102e0b200341246a21032000415c6a22000d000b0b200241106a24000f0b1036000bae0401047f230041106b22022400200220002903003703002001200241081074200041106a210302400240024020002903084201510d00200241003a000020012002410110742002200029031037030020012002410810742001200041e0016a412010744120102c2204450d02200242203702042002200436020020022003410c6a412010742001200228020022042002280208107402402002280204450d002004102e0b2002200041186a280200360200200120024104107420012003412c6a41c00010744120102c2204450d02200041a0016a21052002422037020420022004360200200220004180016a412010742001200228020022002002280208107402402002280204450d002000102e0b2002200328026c36020020012002410410742001200541c00010740c010b200241013a000020012002410110742002200029031037030020012002410810742001200041e0016a412010744120102c2204450d01200242203702042002200436020020022003410c6a412010742001200228020022042002280208107402402002280204450d002004102e0b2002200041186a280200360200200120024104107420012003412c6a41c00010744120102c2204450d01200041a0016a21052002422037020420022004360200200220004180016a412010742001200228020022002002280208107402402002280204450d002000102e0b2002200328026c36020020012002410410742001200541c00010740b200241106a24000f0b1036000b84660b087f017e107f037e047f017e047f017e047f017e027f230041206b22022400200041003602082000420137020002402001280208220341ffffffff01712003470d0020034103742204417f4c0d002001280200210502400240024020040d00410421060c010b2004102c2206450d010b0240024002402004410376220720034f0d00200441027622082003200820034b1b22084104200841044b1b220841ffffffff01712008464102742109200841037421080240024020040d00200241003602100c010b200241186a410436020020022004360214200220063602100b200220082009200241106a107d200241086a2802002108024020022802004101460d0020022802042106200841037621070c020b20080d030c040b20030d00410021050c010b200520046a2108200341037441786a410376210920062103034020052802002104200341046a200541046a2f01003b010020032004360200200341086a2103200541086a22052008470d000b200941016a21050b20052000107602402005450d00200620054103746a210420062105034002400240024002402005280200220341c000490d00200341808001490d012003418080808004490d02200241033a00102000200241106a41011074200220033602102000200241106a410410740c030b200220034102743a00102000200241106a410110740c020b200220034102744101723b01102000200241106a410210740c010b200220034102744102723602102000200241106a410410740b024002400240200541046a2f0100220341c000490d00200341808001490d01200220034102744102723602102000200241106a410410740c020b200220034102743a00102000200241106a410110740c010b200220034102744101723b01102000200241106a410210740b200541086a22052004470d000b0b200141146a2802002203ad420c7e220a422088a70d01200aa72204417f4c0d01200128020c21050240024020040d004104210b0c010b2004102c220b450d010b0240024002402004410c6e220c20034f0d00200c41017422082003200820034b1b22084104200841044b1bad420c7e220a422088a7454102742108200aa72109024002402004410b4b0d00200241003602100c010b200241186a41043602002002200b3602102002200c410c6c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d002002280204210b2004410c6e210c0c020b2004450d040c030b20030d00410021050c010b20052003410c6c6a21042003410c6c41746a410c6e2108200b2103034020032005290200370200200341086a200541086a2f01003b01002003410c6a21032005410c6a22052004470d000b200841016a21050b20052000107602402005450d002005410c6c2104200b21050340200541046a210802400240024002402005280200220341c000490d00200341808001490d012003418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220034102743a00102000200241106a410110740c020b200220034102744101723b01102000200241106a410210740c010b200220034102744102723602102000200241106a410410740b2008200010fd04024002400240200541086a2f0100220341c000490d00200341808001490d01200220034102744102723602102000200241106a410410740c020b200220034102743a00102000200241106a410110740c010b200220034102744101723b01102000200241106a410210740b2005410c6a2105200441746a22040d000b0b200141206a280200220341ffffffff00712003470d0120034104742204417f4c0d01200128021821054104210d02402004450d002004102c220d450d010b0240024002402004410476220e20034f0d00200441037622082003200820034b1b22084104200841044b1b220841ffffffff00712008464102742109200841047421080240024020040d00200241003602100c010b200241186a4104360200200220043602142002200d3602100b200220082009200241106a107d200241086a2802002108024020022802004101460d002002280204210d2008410476210e0c020b2008450d040c030b20030d00410021050c010b200520046a2104200341047441706a4104762108200d21030340200320052802003602002003410c6a2005410c6a2f01003b0100200341046a200541046a290200370200200341106a2103200541106a22052004470d000b200841016a21050b20052000107602402005450d0020054104742104200d2105034002400240024002402005280200220341c000490d00200341808001490d012003418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220034102743a00102000200241106a410110740c020b200220034102744101723b01102000200241106a410210740c010b200220034102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd040240024002402005410c6a2f0100220341c000490d00200341808001490d01200220034102744102723602102000200241106a410410740c020b200220034102743a00102000200241106a410110740c010b200220034102744101723b01102000200241106a410210740b200541106a2105200441706a22040d000b0b2001412c6a2802002203ad42147e220a422088a70d01200aa72204417f4c0d01200128022421050240024020040d004104210f0c010b2004102c220f450d010b024002400240200441146e221020034f0d00201041017422082003200820034b1b22084104200841044b1bad42147e220a422088a7454102742108200aa7210902400240200441134b0d00200241003602100c010b200241186a41043602002002200f3602102002201041146c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d002002280204210f200441146e21100c020b2004450d040c030b20030d00410021050c010b2005200341146c6a2104200341146c416c6a41146e2108200f2103034020032005280200360200200341106a200541106a2f01003b01002003410c6a2005410c6a280200360200200341046a200541046a290200370200200341146a2103200541146a22052004470d000b200841016a21050b20052000107602402005450d00200541146c2104200f2105034002400240024002402005280200220341c000490d00200341808001490d012003418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220034102743a00102000200241106a410110740c020b200220034102744101723b01102000200241106a410210740c010b200220034102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04024002400240200541106a2f0100220341c000490d00200341808001490d01200220034102744102723602102000200241106a410410740c020b200220034102743a00102000200241106a410110740c010b200220034102744101723b01102000200241106a410210740b200541146a21052004416c6a22040d000b0b200141386a2802002203ad42187e220a422088a70d01200aa72204417f4c0d01200128023021050240024020040d00410421110c010b2004102c2211450d010b024002400240200441186e221220034f0d00201241017422082003200820034b1b22084104200841044b1bad42187e220a422088a7454102742108200aa7210902400240200441174b0d00200241003602100c010b200241186a4104360200200220113602102002201241186c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042111200441186e21120c020b2004450d040c030b20030d00410021050c010b2005200341186c6a2104200341186c41686a41186e210820112103034020032005280200360200200341146a200541146a2f01003b01002003410c6a2005410c6a290200370200200341046a200541046a290200370200200341186a2103200541186a22052004470d000b200841016a21050b20052000107602402005450d00200541186c21084100210303400240024002400240201120036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04024002400240200541146a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341186a2203470d000b0b200141c4006a2802002203ad421c7e220a422088a70d01200aa72204417f4c0d01200128023c21050240024020040d00410421130c010b2004102c2213450d010b0240024002402004411c6e221420034f0d00201441017422082003200820034b1b22084104200841044b1bad421c7e220a422088a7454102742108200aa72109024002402004411b4b0d00200241003602100c010b200241186a41043602002002201336021020022014411c6c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d00200228020421132004411c6e21140c020b2004450d040c030b20030d00410021050c010b20052003411c6c6a21042003411c6c41646a411c6e210820132103034020032005280200360200200341186a200541186a2f01003b0100200341146a200541146a2802003602002003410c6a2005410c6a290200370200200341046a200541046a2902003702002003411c6a21032005411c6a22052004470d000b200841016a21050b20052000107602402005450d002005411c6c21084100210303400240024002400240201320036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04024002400240200541186a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b20082003411c6a2203470d000b0b200141d0006a280200220341ffffff3f712003470d0120034105742204417f4c0d01200128024821050240024020040d00410421150c010b2004102c2215450d010b0240024002402004410576221620034f0d00200441047622082003200820034b1b22084104200841044b1b220841ffffff3f712008464102742109200841057421080240024020040d00200241003602100c010b200241186a410436020020022004360214200220153602100b200220082009200241106a107d200241086a2802002108024020022802004101460d0020022802042115200841057621160c020b2008450d040c030b20030d00410021050c010b200520046a2104200341057441606a4105762108201521030340200320052802003602002003411c6a2005411c6a2f01003b0100200341146a200541146a2902003702002003410c6a2005410c6a290200370200200341046a200541046a290200370200200341206a2103200541206a22052004470d000b200841016a21050b20052000107602402005450d00200541057421084100210303400240024002400240201520036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd040240024002402005411c6a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341206a2203470d000b0b200141dc006a2802002203ad42247e220a422088a70d01200aa72204417f4c0d01200128025421050240024020040d00410421170c010b2004102c2217450d010b024002400240200441246e221820034f0d00201841017422082003200820034b1b22084104200841044b1bad42247e220a422088a7454102742108200aa7210902400240200441234b0d00200241003602100c010b200241186a4104360200200220173602102002201841246c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042117200441246e21180c020b2004450d040c030b20030d00410021050c010b2005200341246c6a2104200341246c415c6a41246e210820172103034020032005280200360200200341206a200541206a2f01003b01002003411c6a2005411c6a280200360200200341146a200541146a2902003702002003410c6a2005410c6a290200370200200341046a200541046a290200370200200341246a2103200541246a22052004470d000b200841016a21050b20052000107602402005450d00200541246c21084100210303400240024002400240201720036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04024002400240200541206a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341246a2203470d000b0b200141e8006a2802002203ad42287e220a422088a70d01200aa72204417f4c0d01200128026021050240024020040d00410421190c010b2004102c2219450d010b024002400240200441286e221a20034f0d00201a41017422082003200820034b1b22084104200841044b1bad42287e220a422088a7454102742108200aa7210902400240200441274b0d00200241003602100c010b200241186a4104360200200220193602102002201a41286c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042119200441286e211a0c020b2004450d040c030b20030d00410021050c010b2005200341286c6a2104200341286c41586a41286e2108201921030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d20032005280200360200200341246a200541246a2f01003b01002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a370200200341286a2103200541286a22052004470d000b200841016a21050b20052000107602402005450d00200541286c21084100210303400240024002400240201920036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04024002400240200541246a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341286a2203470d000b0b200141f4006a2802002203ad422c7e220a422088a70d01200aa72204417f4c0d01200128026c21050240024020040d004104211e0c010b2004102c221e450d010b0240024002402004412c6e221f20034f0d00201f41017422082003200820034b1b22084104200841044b1bad422c7e220a422088a7454102742108200aa72109024002402004412b4b0d00200241003602100c010b200241186a41043602002002201e3602102002201f412c6c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d002002280204211e2004412c6e211f0c020b2004450d040c030b20030d00410021050c010b20052003412c6c6a21082003412c6c41546a412c6e2109201e21030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a280200210420032005280200360200200341286a200541286a2f01003b0100200341246a20043602002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a3702002003412c6a21032005412c6a22052008470d000b200941016a21050b20052000107602402005450d002005412c6c21084100210303400240024002400240201e20036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04024002400240200541286a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b20082003412c6a2203470d000b0b20014180016a2802002203ad42307e220a422088a70d01200aa72204417f4c0d01200128027821050240024020040d00410421200c010b2004102c2220450d010b024002400240200441306e222120034f0d00202141017422082003200820034b1b22084104200841044b1bad42307e220a422088a7454102742108200aa72109024002402004412f4b0d00200241003602100c010b200241186a4104360200200220203602102002202141306c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042120200441306e21210c020b2004450d040c030b20030d00410021050c010b2005200341306c6a2108200341306c41506a41306e2109202021030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a2902002122200528020021042003412c6a2005412c6a2f01003b0100200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a37020020032004360200200341306a2103200541306a22052008470d000b200941016a21050b20052000107602402005450d00200541306c21084100210303400240024002400240202020036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd040240024002402005412c6a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341306a2203470d000b0b2001418c016a2802002203ad42347e220a422088a70d01200aa72204417f4c0d0120012802840121050240024020040d00410421230c010b2004102c2223450d010b024002400240200441346e222420034f0d00202441017422082003200820034b1b22084104200841044b1bad42347e220a422088a7454102742108200aa7210902400240200441334b0d00200241003602100c010b200241186a4104360200200220233602102002202441346c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042123200441346e21240c020b2004450d040c030b20030d00410021050c010b2005200341346c6a2109200341346c414c6a41346e2125202321030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a29020021222005412c6a280200210420052802002108200341306a200541306a2f01003b01002003412c6a2004360200200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a37020020032008360200200341346a2103200541346a22052009470d000b202541016a21050b20052000107602402005450d00200541346c21084100210303400240024002400240202320036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd042005412c6a200010fd04024002400240200541306a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341346a2203470d000b0b20014198016a2802002203ad42387e220a422088a70d01200aa72204417f4c0d0120012802900121050240024020040d00410421250c010b2004102c2225450d010b024002400240200441386e222620034f0d00202641017422082003200820034b1b22084104200841044b1bad42387e220a422088a7454102742108200aa7210902400240200441374b0d00200241003602100c010b200241186a4104360200200220253602102002202641386c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d0020022802042125200441386e21260c020b2004450d040c030b20030d00410021050c010b2005200341386c6a2108200341386c41486a41386e2109202521030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a29020021222005412c6a290200212720052802002104200341346a200541346a2f01003b01002003412c6a2027370200200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a37020020032004360200200341386a2103200541386a22052008470d000b200941016a21050b20052000107602402005450d00200541386c21084100210303400240024002400240202520036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd042005412c6a200010fd04200541306a200010fd04024002400240200541346a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341386a2203470d000b0b200141a4016a2802002203ad423c7e220a422088a70d01200aa72204417f4c0d01200128029c0121050240024020040d00410421280c010b2004102c2228450d010b0240024002402004413c6e222920034f0d00202941017422082003200820034b1b22084104200841044b1bad423c7e220a422088a7454102742108200aa72109024002402004413b4b0d00200241003602100c010b200241186a41043602002002202836021020022029413c6c3602140b200220092008200241106a107d200241086a2802002104024020022802004101460d00200228020421282004413c6e21290c020b2004450d040c030b20030d00410021050c010b20052003413c6c6a21092003413c6c41446a413c6e212a202821030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a29020021222005412c6a2902002127200541346a280200210420052802002108200341386a200541386a2f01003b0100200341346a20043602002003412c6a2027370200200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a370200200320083602002003413c6a21032005413c6a22052009470d000b202a41016a21050b20052000107602402005450d002005413c6c21084100210303400240024002400240202820036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd042005412c6a200010fd04200541306a200010fd04200541346a200010fd04024002400240200541386a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b20082003413c6a2203470d000b0b200141b0016a280200220341ffffff1f712003470d0120034106742204417f4c0d0120012802a80121050240024020040d00410421090c010b2004102c2209450d010b0240024002402004410676222b20034f0d00200441057622082003200820034b1b22084104200841044b1b220841ffffff1f71200846410274212a200841067421080240024020040d00200241003602100c010b200241186a410436020020022004360214200220093602100b20022008202a200241106a107d200241086a2802002108024020022802004101460d00200228020421092008410676212b0c020b2008450d040c030b20030d00410021050c010b200520046a2108200341067441406a410676212a200921030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a29020021222005412c6a2902002127200541346a290200212c200528020021042003413c6a2005413c6a2f01003b0100200341346a202c3702002003412c6a2027370200200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a37020020032004360200200341c0006a2103200541c0006a22052008470d000b202a41016a21050b20052000107602402005450d00200541067421084100210303400240024002400240200920036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd042005412c6a200010fd04200541306a200010fd04200541346a200010fd04200541386a200010fd040240024002402005413c6a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341c0006a2203470d000b0b200141bc016a2802002203ad42c4007e220a422088a70d01200aa72204417f4c0d0120012802b40121050240024020040d004104212a0c010b2004102c222a450d010b024002400240200441c4006e222d20034f0d00202d41017422082003200820034b1b22084104200841044b1bad42c4007e220a422088a7454102742108200aa7210102400240200441c3004b0d00200241003602100c010b200241186a41043602002002202a3602102002202d41c4006c3602140b200220012008200241106a107d200241086a2802002104024020022802004101460d002002280204212a200441c4006e212d0c020b2004450d040c030b20030d00410021050c010b2005200341c4006c6a2101200341c4006c41bc7f6a41c4006e212e202a21030340200541046a290200210a2005410c6a290200211b200541146a290200211c2005411c6a290200211d200541246a29020021222005412c6a2902002127200541346a290200212c2005413c6a280200210420052802002108200341c0006a200541c0006a2f01003b01002003413c6a2004360200200341346a202c3702002003412c6a2027370200200341246a20223702002003411c6a201d370200200341146a201c3702002003410c6a201b370200200341046a200a37020020032008360200200341c4006a2103200541c4006a22052001470d000b202e41016a21050b20052000107602402005450d00200541c4006c21084100210303400240024002400240202a20036a2205280200220441c000490d00200441808001490d012004418080808004490d02200241033a00102000200241106a41011074200220052802003602102000200241106a410410740c030b200220044102743a00102000200241106a410110740c020b200220044102744101723b01102000200241106a410210740c010b200220044102744102723602102000200241106a410410740b200541046a200010fd04200541086a200010fd042005410c6a200010fd04200541106a200010fd04200541146a200010fd04200541186a200010fd042005411c6a200010fd04200541206a200010fd04200541246a200010fd04200541286a200010fd042005412c6a200010fd04200541306a200010fd04200541346a200010fd04200541386a200010fd042005413c6a200010fd04024002400240200541c0006a2f0100220541c000490d00200541808001490d01200220054102744102723602102000200241106a410410740c020b200220054102743a00102000200241106a410110740c010b200220054102744101723b01102000200241106a410210740b2008200341c4006a2203470d000b0b0240202d450d00202d41c4006c450d00202a102e0b0240202b450d002009102e0b02402029450d002029413c6c450d002028102e0b02402026450d00202641386c450d002025102e0b02402024450d00202441346c450d002023102e0b02402021450d00202141306c450d002020102e0b0240201f450d00201f412c6c450d00201e102e0b0240201a450d00201a41286c450d002019102e0b02402018450d00201841246c450d002017102e0b02402016450d002015102e0b02402014450d002014411c6c450d002013102e0b02402012450d00201241186c450d002011102e0b02402010450d00201041146c450d00200f102e0b0240200e450d00200d102e0b0240200c450d00200c410c6c450d00200b102e0b02402007450d002006102e0b200241206a24000f0b1036000b1038000b040041010b040041010b040041010bf5be010f057f017e017f017e077f017e147f017e027f017e047f017e077f017e0e7f230041c0196b22022400200241f8116a200110ad0102400240024002400240024020022802f8110d0020022802fc11220320012802002802044103762204200420034b1b22044103742205417f4c0d050240024020040d00410421050c010b2005102c2205450d050b2001200128020441016a22063602042004ad21070240200620012802084b0d00024002402003450d000340200241f0116a200110ad0120022802f0110d0320022802f4112106200241e8116a200110fb0420022f01e8110d0320022f01ea112108024020074220882209a722042007a7470d00200441016a220a2004490d0a2004410174220b200a200a200b491b220a4104200a41044b1b220a41ffffffff0171200a46410274210b200a410374210a0240024020040d0020024100360280180c010b20024104360288182002200536028018200220094203863e0284180b200241c0186a200a200b20024180186a107d20022802c818210a20022802c0184101460d0320022802c418210520074220882209a72104200a410376ad21070b200520044103746a220420083b0104200420063602002009422086200742ffffffff0f83844280808080107c21072003417f6a22030d000b200128020421060b20012006417f6a3602042005450d022007422088a741037422040d03200521040c040b200a0d050c060b200742ffffffff0183500d002005102e0b200041003602000c020b200520046a21032005210403402004200429020022093e0200200441046a20094220883d0100200441086a22042003470d000b0b2007a7210a200241e0116a200110ad01024002400240024020022802e0110d0020022802e41122062001280200280204410c6e2203200320064b1bad420c7e2207422088a70d062007a72203417f4c0d060240024020030d00410421080c010b2003102c2208450d060b2001200128020441016a220b3602042003410c6ead21070240200b20012802084b0d00024002402006450d000340200241d8116a200110ad0120022802d8110d0320022802dc11210b200241d0116a200110fb0420022f01d0110d0320022f01d211210c200241c8116a200110fb0420022f01c8110d0320022f01ca11210d200241c0116a200110fb0420022f01c0110d0320022f01c211210e024020074220882209a722032007a7470d00200341016a220f2003490d0b20034101742210200f200f2010491b220f4104200f41044b1bad420c7e2209422088a745410274210f2009a721100240024020030d0020024100360280180c010b2002410436028818200220083602801820022003410c6c360284180b200241c0186a2010200f20024180186a107d20022802c818210f20022802c0184101460d0320022802c418210820074220882209a72103200f410c6ead21070b20082003410c6c6a2203200e3b01082003200c3b01042003200b360200200341066a200d3b01002009422086200742ffffffff0f83844280808080107c21072006417f6a22060d000b2001280204210b0b2001200b417f6a3602042008450d022007422088a7410c6c22030d03200821030c040b200f450d070c060b2007a72204450d002004410c6c450d002008102e0b200041003602000c020b200820036a21062008210303402003410c6a22032006470d000b0b2007a72106200241b8116a200110ad01200320086b410c6d210f0240024020022802b8110d004104210c20022802bc11220b200128020028020441047622032003200b4b1b2203410474220d417f4c0d0502402003450d00200d102c220c450d050b2001200128020441016a220d3602042003ad21070240200d20012802084b0d0002400240024002400240200b450d000340200241b0116a200110ad0120022802b0110d0620022802b411210e200241003a008818200241a8116a200110fb0420022f01a8110d0620022f01aa112103200241a0116a200110fb0420022f01a0110d0620022f01a211210d200241013a0088182002200d3b018218200220033b01801820024198116a200110fb0420022f0198110d0520022f019a11210320024190116a200110fb0420022f0190110d05200220022f0192113b018618200220033b018418200229038018210920024188116a200110fb0420022f0188110d0620022f018a112110024020074220882211a722032007a7470d00200341016a220d2003490d0d20034101742212200d200d2012491b220d4104200d41044b1b220d41ffffffff0071200d464102742112200d410474210d0240024020030d0020024100360280180c010b20024104360288182002200c36028018200220114204863e0284180b200241c0186a200d201220024180186a107d20022802c818210d20022802c0184101460d0320022802c418210c200d410476ad21070b200c20034104746a220d20103b010c200d2009370204200d200e360200200742ffffffff0f83200341016aad422086842107200b417f6a220b0d000b2001280204210d0b2001200d417f6a360204200c450d052007422088a741047422030d01200c21030c020b200d450d090c080b200c20036a210b200c21030340200341106a2203200b470d000b0b2007a7210d20024180116a200110ad01024002402002280280110d00200228028411220e200128020028020441146e220b200b200e4b1bad42147e2207422088a70d092007a7220b417f4c0d0902400240200b0d00410421120c010b200b102c2212450d090b2001200128020441016a2210360204200b41146ead21070240201020012802084b0d0002400240024002400240200e450d00200241c0186a41086a21130340200241f8106a200110ad0120022802f8100d0620022802fc102114200241003a008c18200241f0106a200110fb0420022f01f0100d0620022f01f210210b200241e8106a200110fb0420022f01e8100d0620022f01ea102110200241013a008c18200220103b0182182002200b3b018018200241e0106a200110fb0420022f01e0100d0520022f01e210210b200241d8106a200110fb0420022f01d8100d0520022f01da102110200241023a008c18200220103b0186182002200b3b018418200241d0106a200110fb0420022f01d0100d0520022f01d210210b200241c8106a200110fb0420022f01c8100d05200220022f01ca103b018a182002200b3b018818201320022802881836020020022002290380183703c018200241c0106a200110fb0420022f01c0100d0620022f01c210211520024180176a41086a2013280200220b360200200241c0166a41086a2216200b360200200220022903c018220937038017200220093703c01602402007422088a7220b2007a7470d00200b41016a2210200b490d11200b4101742217201020102017491b22104104201041044b1bad42147e2207422088a74541027421102007a7211702400240200b0d0020024100360280180c010b200241043602881820022012360280182002200b41146c360284180b200241c0186a2017201020024180186a107d20022802c818211020022802c0184101460d0320022802c4182112201041146ead21070b2012200b41146c6a22102014360200201020022903c0163702042010410c6a2016280200360200201020153b0110200742ffffffff0f83200b41016aad422086842107200e417f6a220e0d000b200128020421100b20012010417f6a3602042012450d052007422088a741146c220b0d012012210b0c020b2010450d0d0c0c0b2012200b6a210e2012210b0340200b41146a220b200e470d000b0b2007a7210e200241b8106a200110ad01200b20126b41146d21150240024020022802b8100d0020022802bc102210200128020028020441186e220b200b20104b1bad42187e2207422088a70d0d2007a7220b417f4c0d0d02400240200b0d00410421130c010b200b102c2213450d0d0b2001200128020441016a2214360204200b41186ead21070240201420012802084b0d00024002400240024002402010450d000340200241b0106a200110ad0120022802b0100d0620022802b4102116200241003a009018200241a8106a200110fb0420022f01a8100d0620022f01aa10210b200241a0106a200110fb0420022f01a0100d0620022f01a2102114200241013a009018200220143b0182182002200b3b01801820024198106a200110fb0420022f0198100d0520022f019a10210b20024190106a200110fb0420022f0190100d0520022f0192102114200241023a009018200220143b0186182002200b3b01841820024188106a200110fb0420022f0188100d0520022f018a10210b20024180106a200110fb0420022f0180100d0520022f0182102114200241033a009018200220143b018a182002200b3b018818200241f80f6a200110fb0420022f01f80f0d0520022f01fa0f210b200241f00f6a200110fb0420022f01f00f0d05200220022f01f20f3b018e182002200b3b018c18200241c0186a41086a220b20024180186a41086a29030037030020022002290380183703c018200241e80f6a200110fb0420022f01e80f0d0620022f01ea0f211720024180176a41086a200b2903002209370300200241c0166a41086a22182009370300200220022903c018220937038017200220093703c01602402007422088a7220b2007a7470d00200b41016a2214200b490d15200b4101742219201420142019491b22144104201441044b1bad42187e2207422088a74541027421142007a7211902400240200b0d0020024100360280180c010b200241043602881820022013360280182002200b41186c360284180b200241c0186a2019201420024180186a107d20022802c818211420022802c0184101460d0320022802c4182113201441186ead21070b2013200b41186c6a22142016360200201420022903c0163702042014410c6a2018290300370200201420173b0114200742ffffffff0f83200b41016aad4220868421072010417f6a22100d000b200128020421140b20012014417f6a3602042013450d052007422088a741186c220b0d012013210b0c020b2014450d110c100b2013200b6a21102013210b0340200b41186a220b2010470d000b0b2007a72110200241e00f6a200110ad01200b20136b41186d21180240024020022802e00f0d0020022802e40f220b2001280200280204411c6e22142014200b4b1bad421c7e2207422088a70d112007a72214417f4c0d110240024020140d00410421170c010b2014102c2217450d110b2001200128020441016a22163602042014411c6ead21070240201620012802084b0d0002400240024002400240200b450d00200241c0186a41106a21190340200241d80f6a200110ad0120022802d80f0d0620022802dc0f211a200241003a009418200241d00f6a200110fb0420022f01d00f0d0620022f01d20f2114200241c80f6a200110fb0420022f01c80f0d0620022f01ca0f2116200241013a009418200220163b018218200220143b018018200241c00f6a200110fb0420022f01c00f0d0520022f01c20f2114200241b80f6a200110fb0420022f01b80f0d0520022f01ba0f2116200241023a009418200220163b018618200220143b018418200241b00f6a200110fb0420022f01b00f0d0520022f01b20f2114200241a80f6a200110fb0420022f01a80f0d0520022f01aa0f2116200241033a009418200220163b018a18200220143b018818200241a00f6a200110fb0420022f01a00f0d0520022f01a20f2114200241980f6a200110fb0420022f01980f0d0520022f019a0f2116200241043a009418200220163b018e18200220143b018c18200241900f6a200110fb0420022f01900f0d0520022f01920f2114200241880f6a200110fb0420022f01880f0d0520022f018a0f2116200241c0186a41086a221b20024180186a41086a290300370300200220163b019218200220143b0190182019200228029018360200200241053a00941820022002290380183703c018200241800f6a200110fb0420022f01800f0d0620022f01820f211c20024180176a41086a201b290300220937030020024180176a41106a20192802002214360200200241c0166a41086a221b2009370300200241c0166a41106a221d2014360200200220022903c018220937038017200220093703c01602402007422088a722142007a7470d00201441016a22162014490d192014410174221e20162016201e491b22164104201641044b1bad421c7e2207422088a74541027421162007a7211e0240024020140d0020024100360280180c010b2002410436028818200220173602801820022014411c6c360284180b200241c0186a201e201620024180186a107d20022802c818211620022802c0184101460d0320022802c41821172016411c6ead21070b20172014411c6c6a2216201a360200201620022903c0163702042016410c6a201b290300370200201641146a201d2802003602002016201c3b0118200742ffffffff0f83201441016aad422086842107200b417f6a220b0d000b200128020421160b20012016417f6a3602042017450d052007422088a7411c6c220b0d012017210b0c020b2016450d150c140b2017200b6a21142017210b0340200b411c6a220b2014470d000b0b2007a72114200241f80e6a200110ad01200b20176b411c6d211a0240024020022802f80e0d0020022802fc0e220b200128020028020441057622162016200b4b1b22164105742219417f4c0d150240024020160d00410421190c010b2019102c2219450d150b2001200128020441016a221b3602042016ad21070240201b20012802084b0d0002400240024002400240200b450d000340200241f00e6a200110ad0120022802f00e0d0620022802f40e211c200241003a009818200241e80e6a200110fb0420022f01e80e0d0620022f01ea0e2116200241e00e6a200110fb0420022f01e00e0d0620022f01e20e211b200241013a0098182002201b3b018218200220163b018018200241d80e6a200110fb0420022f01d80e0d0520022f01da0e2116200241d00e6a200110fb0420022f01d00e0d0520022f01d20e211b200241023a0098182002201b3b018618200220163b018418200241c80e6a200110fb0420022f01c80e0d0520022f01ca0e2116200241c00e6a200110fb0420022f01c00e0d0520022f01c20e211b200241033a0098182002201b3b018a18200220163b018818200241b80e6a200110fb0420022f01b80e0d0520022f01ba0e2116200241b00e6a200110fb0420022f01b00e0d0520022f01b20e211b200241043a0098182002201b3b018e18200220163b018c18200241a80e6a200110fb0420022f01a80e0d0520022f01aa0e2116200241a00e6a200110fb0420022f01a00e0d0520022f01a20e211b200241053a0098182002201b3b019218200220163b019018200241980e6a200110fb0420022f01980e0d0520022f019a0e2116200241900e6a200110fb0420022f01900e0d0520022f01920e211b200241c0186a41086a221d20024180186a41086a2903003703002002201b3b019618200220163b019418200241c0186a41106a221620024180186a41106a290300370300200241063a00981820022002290380183703c018200241880e6a200110fb0420022f01880e0d0620022f018a0e211e20024180176a41086a201d290300220937030020024180176a41106a20162903002211370300200241c0166a41086a221d2009370300200241c0166a41106a221f2011370300200220022903c018220937038017200220093703c016024020074220882209a7221b2007a7470d00201b41016a2216201b490d1d201b4101742220201620162020491b22164104201641044b1b221641ffffff3f7120164641027421202016410574211602400240201b0d0020024100360280180c010b20024104360288182002201936028018200220094205863e0284180b200241c0186a2016202020024180186a107d20022802c818211620022802c0184101460d0320022802c41821192016410576ad21070b2019201b4105746a2216201c360200201620022903c0163702042016410c6a201d290300370200201641146a201f2903003702002016201e3b011c200742ffffffff0f83201b41016aad422086842107200b417f6a220b0d000b2001280204211b0b2001201b417f6a3602042019450d052007422088a7410574220b0d012019210b0c020b2016450d190c180b2019200b6a21162019210b0340200b41206a220b2016470d000b0b2007a72116200241800e6a200110ad010240024020022802800e0d0020022802840e221c200128020028020441246e221b201b201c4b1bad42247e2207422088a70d192007a7221b417f4c0d1902400240201b0d004104211d0c010b201b102c221d450d190b2001200128020441016a221e360204201b41246ead21070240201e20012802084b0d0002400240024002400240201c450d00200241c0176a41186a211f0340200241f80d6a200110ad0120022802f80d0d0620022802fc0d2120200241003a009c18200241f00d6a200110fb0420022f01f00d0d0620022f01f20d211b200241e80d6a200110fb0420022f01e80d0d0620022f01ea0d211e200241013a009c182002201e3b0182182002201b3b018018200241e00d6a200110fb0420022f01e00d0d0520022f01e20d211b200241d80d6a200110fb0420022f01d80d0d0520022f01da0d211e200241023a009c182002201e3b0186182002201b3b018418200241d00d6a200110fb0420022f01d00d0d0520022f01d20d211b200241c80d6a200110fb0420022f01c80d0d0520022f01ca0d211e200241033a009c182002201e3b018a182002201b3b018818200241c00d6a200110fb0420022f01c00d0d0520022f01c20d211b200241b80d6a200110fb0420022f01b80d0d0520022f01ba0d211e200241043a009c182002201e3b018e182002201b3b018c18200241b00d6a200110fb0420022f01b00d0d0520022f01b20d211b200241a80d6a200110fb0420022f01a80d0d0520022f01aa0d211e200241053a009c182002201e3b0192182002201b3b019018200241a00d6a200110fb0420022f01a00d0d0520022f01a20d211b200241980d6a200110fb0420022f01980d0d0520022f019a0d211e200241063a009c182002201e3b0196182002201b3b019418200241900d6a200110fb0420022f01900d0d0520022f01920d211b200241880d6a200110fb0420022f01880d0d0520022f018a0d211e200241c0176a41106a222120024180186a41106a290300370300200241c0176a41086a222220024180186a41086a2903003703002002201e3b019a182002201b3b019818201f200228029818360200200241073a009c18200220022903801822093703c018200220093703c017200241800d6a200110fb0420022f01800d0d0620022f01820d2123200241c0166a41086a20222903002209370300200241c0166a41106a20212903002211370300200241c0166a41186a201f280200221b36020020024180166a41086a2221200937030020024180166a41106a2222201137030020024180166a41186a2224201b360200200220022903c01722093703c016200220093703801602402007422088a7221e2007a7470d00201e41016a221b201e490d21201e4101742225201b201b2025491b221b4104201b41044b1bad42247e2207422088a745410274211b2007a7212502400240201e0d0020024100360280180c010b20024104360288182002201d360280182002201e41246c360284180b200241c0186a2025201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c418211d201b41246ead21070b201d201e41246c6a221b2020360200201b200229038016370204201b410c6a2021290300370200201b41146a2022290300370200201b411c6a2024280200360200201b20233b0120200742ffffffff0f83201e41016aad422086842107201c417f6a221c0d000b2001280204211e0b2001201e417f6a360204201d450d052007422088a741246c221b0d01201d211b0c020b201b450d1d0c1c0b201d201b6a211c201d211b0340201b41246a221b201c470d000b0b2007a7211c200241f80c6a200110ad01201b201d6b41246d21200240024020022802f80c0d0020022802fc0c221e200128020028020441286e221b201b201e4b1bad42287e2207422088a70d1d2007a7221b417f4c0d1d02400240201b0d004104211f0c010b201b102c221f450d1d0b2001200128020441016a2221360204201b41286ead21070240202120012802084b0d0002400240024002400240201e450d000340200241f00c6a200110ad0120022802f00c0d0620022802f40c2122200241003a00a018200241e80c6a200110fb0420022f01e80c0d0620022f01ea0c211b200241e00c6a200110fb0420022f01e00c0d0620022f01e20c2121200241013a00a018200220213b0182182002201b3b018018200241d80c6a200110fb0420022f01d80c0d0520022f01da0c211b200241d00c6a200110fb0420022f01d00c0d0520022f01d20c2121200241023a00a018200220213b0186182002201b3b018418200241c80c6a200110fb0420022f01c80c0d0520022f01ca0c211b200241c00c6a200110fb0420022f01c00c0d0520022f01c20c2121200241033a00a018200220213b018a182002201b3b018818200241b80c6a200110fb0420022f01b80c0d0520022f01ba0c211b200241b00c6a200110fb0420022f01b00c0d0520022f01b20c2121200241043a00a018200220213b018e182002201b3b018c18200241a80c6a200110fb0420022f01a80c0d0520022f01aa0c211b200241a00c6a200110fb0420022f01a00c0d0520022f01a20c2121200241053a00a018200220213b0192182002201b3b019018200241980c6a200110fb0420022f01980c0d0520022f019a0c211b200241900c6a200110fb0420022f01900c0d0520022f01920c2121200241063a00a018200220213b0196182002201b3b019418200241880c6a200110fb0420022f01880c0d0520022f018a0c211b200241800c6a200110fb0420022f01800c0d0520022f01820c2121200241073a00a018200220213b019a182002201b3b019818200241f80b6a200110fb0420022f01f80b0d0520022f01fa0b211b200241f00b6a200110fb0420022f01f00b0d0520022f01f20b2121200241c0176a41106a222320024180186a41106a290300370300200220213b019e182002201b3b019c18200241c0176a41186a221b20024180186a41186a290300370300200241083a00a018200241c0176a41086a222120024180186a41086a290300370300200220022903801822093703c018200220093703c017200241e80b6a200110fb0420022f01e80b0d0620022f01ea0b2124200241c0166a41086a20212903002209370300200241c0166a41106a20232903002211370300200241c0166a41186a201b290300222637030020024180166a41086a2223200937030020024180166a41106a2225201137030020024180166a41186a22272026370300200220022903c01722093703c016200220093703801602402007422088a722212007a7470d00202141016a221b2021490d2520214101742228201b201b2028491b221b4104201b41044b1bad42287e2207422088a745410274211b2007a721280240024020210d0020024100360280180c010b20024104360288182002201f360280182002202141286c360284180b200241c0186a2028201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c418211f201b41286ead21070b201f202141286c6a221b2022360200201b200229038016370204201b410c6a2023290300370200201b41146a2025290300370200201b411c6a2027290300370200201b20243b0124200742ffffffff0f83202141016aad422086842107201e417f6a221e0d000b200128020421210b20012021417f6a360204201f450d052007422088a741286c221b0d01201f211b0c020b201b450d210c200b201f201b6a211e201f211b0340201b41286a221b201e470d000b0b2007a7211e200241e00b6a200110ad01201b201f6b41286d21220240024020022802e00b0d0020022802e40b22212001280200280204412c6e221b201b20214b1bad422c7e2207422088a70d212007a7221b417f4c0d2102400240201b0d00410421230c010b201b102c2223450d210b2001200128020441016a2224360204201b412c6ead21070240202420012802084b0d00024002400240024002402021450d000340200241d80b6a200110ad0120022802d80b0d0620022802dc0b2125200241003a00a418200241d00b6a200110fb0420022f01d00b0d0620022f01d20b211b200241c80b6a200110fb0420022f01c80b0d0620022f01ca0b2124200241013a00a418200220243b0182182002201b3b018018200241c00b6a200110fb0420022f01c00b0d0520022f01c20b211b200241b80b6a200110fb0420022f01b80b0d0520022f01ba0b2124200241023a00a418200220243b0186182002201b3b018418200241b00b6a200110fb0420022f01b00b0d0520022f01b20b211b200241a80b6a200110fb0420022f01a80b0d0520022f01aa0b2124200241033a00a418200220243b018a182002201b3b018818200241a00b6a200110fb0420022f01a00b0d0520022f01a20b211b200241980b6a200110fb0420022f01980b0d0520022f019a0b2124200241043a00a418200220243b018e182002201b3b018c18200241900b6a200110fb0420022f01900b0d0520022f01920b211b200241880b6a200110fb0420022f01880b0d0520022f018a0b2124200241053a00a418200220243b0192182002201b3b019018200241800b6a200110fb0420022f01800b0d0520022f01820b211b200241f80a6a200110fb0420022f01f80a0d0520022f01fa0a2124200241063a00a418200220243b0196182002201b3b019418200241f00a6a200110fb0420022f01f00a0d0520022f01f20a211b200241e80a6a200110fb0420022f01e80a0d0520022f01ea0a2124200241073a00a418200220243b019a182002201b3b019818200241e00a6a200110fb0420022f01e00a0d0520022f01e20a211b200241d80a6a200110fb0420022f01d80a0d0520022f01da0a2124200241083a00a418200220243b019e182002201b3b019c18200241d00a6a200110fb0420022f01d00a0d0520022f01d20a211b200241c80a6a200110fb0420022f01c80a0d05200220022f01ca0a3b01a2182002201b3b01a018200241093a00a418200241c0186a41086a20024180186a41086a2903002209370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20022802a018221b360200200220022903801822293703c018200241c0176a41206a2224201b360200200241c0176a41186a22272026370300200241c0176a41106a22282011370300200241c0176a41086a222a2009370300200220293703c017200241c00a6a200110fb0420022f01c00a0d0620022f01c20a212b20024180176a41206a2024280200221b360200200241c0166a41086a202a2903002209370300200241c0166a41106a20282903002211370300200241c0166a41186a20272903002226370300200241c0166a41206a201b36020020024180166a41086a2227200937030020024180166a41106a2228201137030020024180166a41186a222a202637030020024180166a41206a222c201b360200200220022903c01722093703c016200220093703801602402007422088a722242007a7470d00202441016a221b2024490d292024410174222d201b201b202d491b221b4104201b41044b1bad422c7e2207422088a745410274211b2007a7212d0240024020240d0020024100360280180c010b2002410436028818200220233602801820022024412c6c360284180b200241c0186a202d201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c4182123201b412c6ead21070b20232024412c6c6a221b2025360200201b200229038016370204201b410c6a2027290300370200201b41146a2028290300370200201b411c6a202a290300370200201b41246a202c280200360200201b202b3b0128200742ffffffff0f83202441016aad4220868421072021417f6a22210d000b200128020421240b20012024417f6a3602042023450d052007422088a7412c6c221b0d012023211b0c020b201b450d250c240b2023201b6a21212023211b0340201b412c6a221b2021470d000b0b2007a72121200241b80a6a200110ad01201b20236b412c6d21250240024020022802b80a0d0020022802bc0a2224200128020028020441306e221b201b20244b1bad42307e2207422088a70d252007a7221b417f4c0d2502400240201b0d00410421270c010b201b102c2227450d250b2001200128020441016a2228360204201b41306ead21070240202820012802084b0d00024002400240024002402024450d000340200241b00a6a200110ad0120022802b00a0d0620022802b40a212a200241003a00a818200241a80a6a200110fb0420022f01a80a0d0620022f01aa0a211b200241a00a6a200110fb0420022f01a00a0d0620022f01a20a2128200241013a00a818200220283b0182182002201b3b018018200241980a6a200110fb0420022f01980a0d0520022f019a0a211b200241900a6a200110fb0420022f01900a0d0520022f01920a2128200241023a00a818200220283b0186182002201b3b018418200241880a6a200110fb0420022f01880a0d0520022f018a0a211b200241800a6a200110fb0420022f01800a0d0520022f01820a2128200241033a00a818200220283b018a182002201b3b018818200241f8096a200110fb0420022f01f8090d0520022f01fa09211b200241f0096a200110fb0420022f01f0090d0520022f01f2092128200241043a00a818200220283b018e182002201b3b018c18200241e8096a200110fb0420022f01e8090d0520022f01ea09211b200241e0096a200110fb0420022f01e0090d0520022f01e2092128200241053a00a818200220283b0192182002201b3b019018200241d8096a200110fb0420022f01d8090d0520022f01da09211b200241d0096a200110fb0420022f01d0090d0520022f01d2092128200241063a00a818200220283b0196182002201b3b019418200241c8096a200110fb0420022f01c8090d0520022f01ca09211b200241c0096a200110fb0420022f01c0090d0520022f01c2092128200241073a00a818200220283b019a182002201b3b019818200241b8096a200110fb0420022f01b8090d0520022f01ba09211b200241b0096a200110fb0420022f01b0090d0520022f01b2092128200241083a00a818200220283b019e182002201b3b019c18200241a8096a200110fb0420022f01a8090d0520022f01aa09211b200241a0096a200110fb0420022f01a0090d0520022f01a2092128200241093a00a818200220283b01a2182002201b3b01a01820024198096a200110fb0420022f0198090d0520022f019a09211b20024190096a200110fb0420022f0190090d05200220022f0192093b01a6182002201b3b01a4182002410a3a00a818200241c0186a41086a20024180186a41086a2903002209370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a29030022293703002002200229038018222e3703c018200241c0176a41206a221b2029370300200241c0176a41186a22282026370300200241c0176a41106a222b2011370300200241c0176a41086a222c20093703002002202e3703c01720024188096a200110fb0420022f0188090d0620022f018a09212d20024180176a41206a201b2903002209370300200241c0166a41086a202c2903002211370300200241c0166a41106a202b2903002226370300200241c0166a41186a20282903002229370300200241c0166a41206a200937030020024180166a41086a222b201137030020024180166a41106a222c202637030020024180166a41186a222f202937030020024180166a41206a22302009370300200220022903c01722093703c016200220093703801602402007422088a722282007a7470d00202841016a221b2028490d2d20284101742231201b201b2031491b221b4104201b41044b1bad42307e2207422088a745410274211b2007a721310240024020280d0020024100360280180c010b200241043602881820022027360280182002202841306c360284180b200241c0186a2031201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c4182127201b41306ead21070b2027202841306c6a221b202a360200201b200229038016370204201b410c6a202b290300370200201b41146a202c290300370200201b411c6a202f290300370200201b41246a2030290300370200201b202d3b012c200742ffffffff0f83202841016aad4220868421072024417f6a22240d000b200128020421280b20012028417f6a3602042027450d052007422088a741306c221b0d012027211b0c020b201b450d290c280b2027201b6a21242027211b0340201b41306a221b2024470d000b0b2007a7212420024180096a200110ad01201b20276b41306d212a024002402002280280090d002002280284092228200128020028020441346e221b201b20284b1bad42347e2207422088a70d292007a7221b417f4c0d2902400240201b0d004104212b0c010b201b102c222b450d290b2001200128020441016a222c360204201b41346ead21070240202c20012802084b0d00024002400240024002402028450d000340200241f8086a200110ad0120022802f8080d0620022802fc08212d200241003a00ac18200241f0086a200110fb0420022f01f0080d0620022f01f208211b200241e8086a200110fb0420022f01e8080d0620022f01ea08212c200241013a00ac182002202c3b0182182002201b3b018018200241e0086a200110fb0420022f01e0080d0520022f01e208211b200241d8086a200110fb0420022f01d8080d0520022f01da08212c200241023a00ac182002202c3b0186182002201b3b018418200241d0086a200110fb0420022f01d0080d0520022f01d208211b200241c8086a200110fb0420022f01c8080d0520022f01ca08212c200241033a00ac182002202c3b018a182002201b3b018818200241c0086a200110fb0420022f01c0080d0520022f01c208211b200241b8086a200110fb0420022f01b8080d0520022f01ba08212c200241043a00ac182002202c3b018e182002201b3b018c18200241b0086a200110fb0420022f01b0080d0520022f01b208211b200241a8086a200110fb0420022f01a8080d0520022f01aa08212c200241053a00ac182002202c3b0192182002201b3b019018200241a0086a200110fb0420022f01a0080d0520022f01a208211b20024198086a200110fb0420022f0198080d0520022f019a08212c200241063a00ac182002202c3b0196182002201b3b01941820024190086a200110fb0420022f0190080d0520022f019208211b20024188086a200110fb0420022f0188080d0520022f018a08212c200241073a00ac182002202c3b019a182002201b3b01981820024180086a200110fb0420022f0180080d0520022f018208211b200241f8076a200110fb0420022f01f8070d0520022f01fa07212c200241083a00ac182002202c3b019e182002201b3b019c18200241f0076a200110fb0420022f01f0070d0520022f01f207211b200241e8076a200110fb0420022f01e8070d0520022f01ea07212c200241093a00ac182002202c3b01a2182002201b3b01a018200241e0076a200110fb0420022f01e0070d0520022f01e207211b200241d8076a200110fb0420022f01d8070d0520022f01da07212c2002410a3a00ac182002202c3b01a6182002201b3b01a418200241d0076a200110fb0420022f01d0070d0520022f01d207211b200241c8076a200110fb0420022f01c8070d05200220022f01ca073b01aa182002201b3b01a8182002410b3a00ac18200241c0186a41086a20024180186a41086a2903002209370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a2903002229370300200241c0186a41286a20022802a818221b3602002002200229038018222e3703c018200241c0176a41286a222c201b360200200241c0176a41206a222f2029370300200241c0176a41186a22302026370300200241c0176a41106a22312011370300200241c0176a41086a223220093703002002202e3703c017200241c0076a200110fb0420022f01c0070d0620022f01c207213320024180176a41286a202c280200221b36020020024180176a41206a202f2903002209370300200241c0166a41086a20322903002211370300200241c0166a41106a20312903002226370300200241c0166a41186a20302903002229370300200241c0166a41206a2009370300200241c0166a41286a201b360200200220022903c017222e3703c01620024180166a41286a222f201b36020020024180166a41206a2230200937030020024180166a41186a2231202937030020024180166a41106a2232202637030020024180166a41086a223420113703002002202e3703801602402007422088a7222c2007a7470d00202c41016a221b202c490d31202c4101742235201b201b2035491b221b4104201b41044b1bad42347e2207422088a745410274211b2007a7213502400240202c0d0020024100360280180c010b20024104360288182002202b360280182002202c41346c360284180b200241c0186a2035201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c418212b201b41346ead21070b202b202c41346c6a221b202d360200201b200229038016370204201b410c6a2034290300370200201b41146a2032290300370200201b411c6a2031290300370200201b41246a2030290300370200201b412c6a202f280200360200201b20333b0130200742ffffffff0f83202c41016aad4220868421072028417f6a22280d000b2001280204212c0b2001202c417f6a360204202b450d052007422088a741346c221b0d01202b211b0c020b201b450d2d0c2c0b202b201b6a2128202b211b0340201b41346a221b2028470d000b0b2007a72128200241b8076a200110ad01201b202b6b41346d212d0240024020022802b8070d0020022802bc07222c200128020028020441386e221b201b202c4b1bad42387e2207422088a70d2d2007a7221b417f4c0d2d02400240201b0d004104212f0c010b201b102c222f450d2d0b2001200128020441016a2230360204201b41386ead21070240203020012802084b0d0002400240024002400240202c450d000340200241b0076a200110ad0120022802b0070d0620022802b4072131200241003a00b018200241a8076a200110fb0420022f01a8070d0620022f01aa07211b200241a0076a200110fb0420022f01a0070d0620022f01a2072130200241013a00b018200220303b0182182002201b3b01801820024198076a200110fb0420022f0198070d0520022f019a07211b20024190076a200110fb0420022f0190070d0520022f0192072130200241023a00b018200220303b0186182002201b3b01841820024188076a200110fb0420022f0188070d0520022f018a07211b20024180076a200110fb0420022f0180070d0520022f0182072130200241033a00b018200220303b018a182002201b3b018818200241f8066a200110fb0420022f01f8060d0520022f01fa06211b200241f0066a200110fb0420022f01f0060d0520022f01f2062130200241043a00b018200220303b018e182002201b3b018c18200241e8066a200110fb0420022f01e8060d0520022f01ea06211b200241e0066a200110fb0420022f01e0060d0520022f01e2062130200241053a00b018200220303b0192182002201b3b019018200241d8066a200110fb0420022f01d8060d0520022f01da06211b200241d0066a200110fb0420022f01d0060d0520022f01d2062130200241063a00b018200220303b0196182002201b3b019418200241c8066a200110fb0420022f01c8060d0520022f01ca06211b200241c0066a200110fb0420022f01c0060d0520022f01c2062130200241073a00b018200220303b019a182002201b3b019818200241b8066a200110fb0420022f01b8060d0520022f01ba06211b200241b0066a200110fb0420022f01b0060d0520022f01b2062130200241083a00b018200220303b019e182002201b3b019c18200241a8066a200110fb0420022f01a8060d0520022f01aa06211b200241a0066a200110fb0420022f01a0060d0520022f01a2062130200241093a00b018200220303b01a2182002201b3b01a01820024198066a200110fb0420022f0198060d0520022f019a06211b20024190066a200110fb0420022f0190060d0520022f01920621302002410a3a00b018200220303b01a6182002201b3b01a41820024188066a200110fb0420022f0188060d0520022f018a06211b20024180066a200110fb0420022f0180060d0520022f01820621302002410b3a00b018200220303b01aa182002201b3b01a818200241f8056a200110fb0420022f01f8050d0520022f01fa05211b200241f0056a200110fb0420022f01f0050d05200220022f01f2053b01ae182002201b3b01ac182002410c3a00b018200241c0186a41086a20024180186a41086a2903002209370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a2903002229370300200241c0186a41286a20024180186a41286a290300222e370300200220022903801822363703c018200241c0176a41286a221b202e370300200241c0176a41206a22302029370300200241c0176a41186a22322026370300200241c0176a41106a22332011370300200241c0176a41086a22342009370300200220363703c017200241e8056a200110fb0420022f01e8050d0620022f01ea05213520024180176a41286a201b290300220937030020024180176a41206a20302903002211370300200241c0166a41086a20342903002226370300200241c0166a41106a20332903002229370300200241c0166a41186a2032290300222e370300200241c0166a41206a2011370300200241c0166a41286a2009370300200220022903c01722363703c01620024180166a41286a2232200937030020024180166a41206a2233201137030020024180166a41186a2234202e37030020024180166a41106a2237202937030020024180166a41086a22382026370300200220363703801602402007422088a722302007a7470d00203041016a221b2030490d3520304101742239201b201b2039491b221b4104201b41044b1bad42387e2207422088a745410274211b2007a721390240024020300d0020024100360280180c010b20024104360288182002202f360280182002203041386c360284180b200241c0186a2039201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c418212f201b41386ead21070b202f203041386c6a221b2031360200201b200229038016370204201b410c6a2038290300370200201b41146a2037290300370200201b411c6a2034290300370200201b41246a2033290300370200201b412c6a2032290300370200201b20353b0134200742ffffffff0f83203041016aad422086842107202c417f6a222c0d000b200128020421300b20012030417f6a360204202f450d052007422088a741386c221b0d01202f211b0c020b201b450d310c300b202f201b6a212c202f211b0340201b41386a221b202c470d000b0b2007a7212c200241e0056a200110ad01201b202f6b41386d21310240024020022802e0050d0020022802e40522302001280200280204413c6e221b201b20304b1bad423c7e2207422088a70d312007a7221b417f4c0d3102400240201b0d00410421320c010b201b102c2232450d310b2001200128020441016a2233360204201b413c6ead21070240203320012802084b0d00024002400240024002402030450d000340200241d8056a200110ad0120022802d8050d0620022802dc052134200241003a00b418200241d0056a200110fb0420022f01d0050d0620022f01d205211b200241c8056a200110fb0420022f01c8050d0620022f01ca052133200241013a00b418200220333b0182182002201b3b018018200241c0056a200110fb0420022f01c0050d0520022f01c205211b200241b8056a200110fb0420022f01b8050d0520022f01ba052133200241023a00b418200220333b0186182002201b3b018418200241b0056a200110fb0420022f01b0050d0520022f01b205211b200241a8056a200110fb0420022f01a8050d0520022f01aa052133200241033a00b418200220333b018a182002201b3b018818200241a0056a200110fb0420022f01a0050d0520022f01a205211b20024198056a200110fb0420022f0198050d0520022f019a052133200241043a00b418200220333b018e182002201b3b018c1820024190056a200110fb0420022f0190050d0520022f019205211b20024188056a200110fb0420022f0188050d0520022f018a052133200241053a00b418200220333b0192182002201b3b01901820024180056a200110fb0420022f0180050d0520022f018205211b200241f8046a200110fb0420022f01f8040d0520022f01fa042133200241063a00b418200220333b0196182002201b3b019418200241f0046a200110fb0420022f01f0040d0520022f01f204211b200241e8046a200110fb0420022f01e8040d0520022f01ea042133200241073a00b418200220333b019a182002201b3b019818200241e0046a200110fb0420022f01e0040d0520022f01e204211b200241d8046a200110fb0420022f01d8040d0520022f01da042133200241083a00b418200220333b019e182002201b3b019c18200241d0046a200110fb0420022f01d0040d0520022f01d204211b200241c8046a200110fb0420022f01c8040d0520022f01ca042133200241093a00b418200220333b01a2182002201b3b01a018200241c0046a200110fb0420022f01c0040d0520022f01c204211b200241b8046a200110fb0420022f01b8040d0520022f01ba0421332002410a3a00b418200220333b01a6182002201b3b01a418200241b0046a200110fb0420022f01b0040d0520022f01b204211b200241a8046a200110fb0420022f01a8040d0520022f01aa0421332002410b3a00b418200220333b01aa182002201b3b01a818200241a0046a200110fb0420022f01a0040d0520022f01a204211b20024198046a200110fb0420022f0198040d0520022f019a0421332002410c3a00b418200220333b01ae182002201b3b01ac1820024190046a200110fb0420022f0190040d0520022f019204211b20024188046a200110fb0420022f0188040d05200220022f018a043b01b2182002201b3b01b0182002410d3a00b418200241c0186a41086a223a20024180186a41086a290300370300200241c0186a41106a223920024180186a41106a290300370300200241c0186a41186a223820024180186a41186a290300370300200241c0186a41206a223720024180186a41206a290300370300200241c0186a41286a223520024180186a41286a290300370300200241c0186a41306a223320022802b01836020020022002290380183703c018200241c0176a41306a221b2033280200360200200241c0176a41286a22332035290300370300200241c0176a41206a22352037290300370300200241c0176a41186a22372038290300370300200241c0176a41106a22382039290300370300200241c0176a41086a2239203a290300370300200220022903c0183703c01720024180046a200110fb0420022f0180040d0620022f018204213a20024180176a41306a201b280200221b36020020024180176a41286a2033290300220937030020024180176a41206a20352903002211370300200241c0166a41086a22332039290300370300200241c0166a41106a22352038290300370300200241c0166a41186a22382037290300370300200241c0166a41206a22372011370300200241c0166a41286a22392009370300200241c0166a41306a223b201b360200200220022903c0173703c01620024180166a41306a223c203b28020036020020024180166a41286a223b203929030037030020024180166a41206a2239203729030037030020024180166a41186a2237203829030037030020024180166a41106a2238203529030037030020024180166a41086a22352033290300370300200220022903c0163703801602402007422088a722332007a7470d00203341016a221b2033490d392033410174223d201b201b203d491b221b4104201b41044b1bad423c7e2207422088a745410274211b2007a7213d0240024020330d0020024100360280180c010b2002410436028818200220323602801820022033413c6c360284180b200241c0186a203d201b20024180186a107d20022802c818211b20022802c0184101460d0320022802c4182132201b413c6ead21070b20322033413c6c6a221b2034360200201b200229038016370204201b410c6a2035290300370200201b41146a2038290300370200201b411c6a2037290300370200201b41246a2039290300370200201b412c6a203b290300370200201b41346a203c280200360200201b203a3b0138200742ffffffff0f83203341016aad4220868421072030417f6a22300d000b200128020421330b20012033417f6a3602042032450d052007422088a7413c6c221b0d012032211b0c020b201b450d350c340b2032201b6a21302032211b0340201b413c6a221b2030470d000b0b2007a72133200241f8036a200110ad01201b20326b413c6d21370240024020022802f8030d0020022802fc0322302001280200280204410676221b201b20304b1b221b4106742234417f4c0d3502400240201b0d00410421340c010b2034102c2234450d350b2001200128020441016a2235360204201bad21070240203520012802084b0d00024002400240024002402030450d000340200241f0036a200110ad0120022802f0030d0620022802f4032138200241003a00b818200241e8036a200110fb0420022f01e8030d0620022f01ea03211b200241e0036a200110fb0420022f01e0030d0620022f01e2032135200241013a00b818200220353b0182182002201b3b018018200241d8036a200110fb0420022f01d8030d0520022f01da03211b200241d0036a200110fb0420022f01d0030d0520022f01d2032135200241023a00b818200220353b0186182002201b3b018418200241c8036a200110fb0420022f01c8030d0520022f01ca03211b200241c0036a200110fb0420022f01c0030d0520022f01c2032135200241033a00b818200220353b018a182002201b3b018818200241b8036a200110fb0420022f01b8030d0520022f01ba03211b200241b0036a200110fb0420022f01b0030d0520022f01b2032135200241043a00b818200220353b018e182002201b3b018c18200241a8036a200110fb0420022f01a8030d0520022f01aa03211b200241a0036a200110fb0420022f01a0030d0520022f01a2032135200241053a00b818200220353b0192182002201b3b01901820024198036a200110fb0420022f0198030d0520022f019a03211b20024190036a200110fb0420022f0190030d0520022f0192032135200241063a00b818200220353b0196182002201b3b01941820024188036a200110fb0420022f0188030d0520022f018a03211b20024180036a200110fb0420022f0180030d0520022f0182032135200241073a00b818200220353b019a182002201b3b019818200241f8026a200110fb0420022f01f8020d0520022f01fa02211b200241f0026a200110fb0420022f01f0020d0520022f01f2022135200241083a00b818200220353b019e182002201b3b019c18200241e8026a200110fb0420022f01e8020d0520022f01ea02211b200241e0026a200110fb0420022f01e0020d0520022f01e2022135200241093a00b818200220353b01a2182002201b3b01a018200241d8026a200110fb0420022f01d8020d0520022f01da02211b200241d0026a200110fb0420022f01d0020d0520022f01d20221352002410a3a00b818200220353b01a6182002201b3b01a418200241c8026a200110fb0420022f01c8020d0520022f01ca02211b200241c0026a200110fb0420022f01c0020d0520022f01c20221352002410b3a00b818200220353b01aa182002201b3b01a818200241b8026a200110fb0420022f01b8020d0520022f01ba02211b200241b0026a200110fb0420022f01b0020d0520022f01b20221352002410c3a00b818200220353b01ae182002201b3b01ac18200241a8026a200110fb0420022f01a8020d0520022f01aa02211b200241a0026a200110fb0420022f01a0020d0520022f01a20221352002410d3a00b818200220353b01b2182002201b3b01b01820024198026a200110fb0420022f0198020d0520022f019a02211b20024190026a200110fb0420022f0190020d05200220022f0192023b01b6182002201b3b01b4182002410e3a00b818200241c0186a41086a223d20024180186a41086a290300370300200241c0186a41106a223c20024180186a41106a290300370300200241c0186a41186a223b20024180186a41186a290300370300200241c0186a41206a223a20024180186a41206a290300370300200241c0186a41286a223920024180186a41286a290300370300200241c0186a41306a223520024180186a41306a29030037030020022002290380183703c018200241c0176a41306a221b2035290300370300200241c0176a41286a22352039290300370300200241c0176a41206a2239203a290300370300200241c0176a41186a223a203b290300370300200241c0176a41106a223b203c290300370300200241c0176a41086a223c203d290300370300200220022903c0183703c01720024188026a200110fb0420022f0188020d0620022f018a02213d20024180176a41306a201b290300220937030020024180176a41286a2035290300221137030020024180176a41206a20392903002226370300200241c0166a41086a221b203c290300370300200241c0166a41106a2235203b290300370300200241c0166a41186a2239203a290300370300200241c0166a41206a223a2026370300200241c0166a41286a223b2011370300200241c0166a41306a223c2009370300200220022903c0173703c01620024180166a41306a223e203c29030037030020024180166a41286a223c203b29030037030020024180166a41206a223b203a29030037030020024180166a41186a223a203929030037030020024180166a41106a2239203529030037030020024180166a41086a223f201b290300370300200220022903c01637038016024020074220882209a722352007a7470d00203541016a221b2035490d3d20354101742240201b201b2040491b221b4104201b41044b1b221b41ffffff1f71201b464102742140201b410674211b0240024020350d0020024100360280180c010b20024104360288182002203436028018200220094206863e0284180b200241c0186a201b204020024180186a107d20022802c818211b20022802c0184101460d0320022802c4182134201b410676ad21070b203420354106746a221b2038360200201b200229038016370204201b410c6a203f290300370200201b41146a2039290300370200201b411c6a203a290300370200201b41246a203b290300370200201b412c6a203c290300370200201b41346a203e290300370200201b203d3b013c200742ffffffff0f83203541016aad4220868421072030417f6a22300d000b200128020421350b20012035417f6a3602042034450d052007422088a7410674221b0d012034211b0c020b201b450d390c380b2034201b6a21302034211b0340201b41c0006a221b2030470d000b0b2007a7213a20024180026a200110ad0102402002280280020d002002280284022239200128020028020441c4006e2230203020394b1bad42c4007e2207422088a70d382007a72235417f4c0d380240024020350d00410421300c010b2035102c2230450d380b2001200128020441016a2238360204203541c4006ead21070240203820012802084b0d00024002400240024002402039450d000340200241f8016a200110ad0120022802f8010d0620022802fc01213b200241003a00bc18200241f0016a200110fb0420022f01f0010d0620022f01f2012135200241e8016a200110fb0420022f01e8010d0620022f01ea012138200241013a00bc18200220383b018218200220353b018018200241e0016a200110fb0420022f01e0010d0520022f01e2012135200241d8016a200110fb0420022f01d8010d0520022f01da012138200241023a00bc18200220383b018618200220353b018418200241d0016a200110fb0420022f01d0010d0520022f01d2012135200241c8016a200110fb0420022f01c8010d0520022f01ca012138200241033a00bc18200220383b018a18200220353b018818200241c0016a200110fb0420022f01c0010d0520022f01c2012135200241b8016a200110fb0420022f01b8010d0520022f01ba012138200241043a00bc18200220383b018e18200220353b018c18200241b0016a200110fb0420022f01b0010d0520022f01b2012135200241a8016a200110fb0420022f01a8010d0520022f01aa012138200241053a00bc18200220383b019218200220353b019018200241a0016a200110fb0420022f01a0010d0520022f01a201213520024198016a200110fb0420022f0198010d0520022f019a012138200241063a00bc18200220383b019618200220353b01941820024190016a200110fb0420022f0190010d0520022f019201213520024188016a200110fb0420022f0188010d0520022f018a012138200241073a00bc18200220383b019a18200220353b01981820024180016a200110fb0420022f0180010d0520022f0182012135200241f8006a200110fb0420022f01780d0520022f017a2138200241083a00bc18200220383b019e18200220353b019c18200241f0006a200110fb0420022f01700d0520022f01722135200241e8006a200110fb0420022f01680d0520022f016a2138200241093a00bc18200220383b01a218200220353b01a018200241e0006a200110fb0420022f01600d0520022f01622135200241d8006a200110fb0420022f01580d0520022f015a21382002410a3a00bc18200220383b01a618200220353b01a418200241d0006a200110fb0420022f01500d0520022f01522135200241c8006a200110fb0420022f01480d0520022f014a21382002410b3a00bc18200220383b01aa18200220353b01a818200241c0006a200110fb0420022f01400d0520022f01422135200241386a200110fb0420022f01380d0520022f013a21382002410c3a00bc18200220383b01ae18200220353b01ac18200241306a200110fb0420022f01300d0520022f01322135200241286a200110fb0420022f01280d0520022f012a21382002410d3a00bc18200220383b01b218200220353b01b018200241206a200110fb0420022f01200d0520022f01222135200241186a200110fb0420022f01180d0520022f011a21382002410e3a00bc18200220383b01b618200220353b01b418200241106a200110fb0420022f01100d0520022f01122135200241086a200110fb0420022f01080d05200220022f010a3b01ba18200220353b01b8182002410f3a00bc18200241c0186a41086a223820024180186a41086a290300370300200241c0186a41106a223c20024180186a41106a290300370300200241c0186a41186a223d20024180186a41186a290300370300200241c0186a41206a223e20024180186a41206a290300370300200241c0186a41286a223f20024180186a41286a290300370300200241c0186a41306a224020024180186a41306a290300370300200241c0186a41386a224120022802b81836020020022002290380183703c018200241c0176a41086a22352038290300370300200241c0176a41106a2238203c290300370300200241c0176a41186a223c203d290300370300200241c0176a41206a223d203e290300370300200241c0176a41286a223e203f290300370300200241c0176a41306a223f2040290300370300200241c0176a41386a22402041280200360200200220022903c0183703c0172002200110fb0420022f01000d0620022f0102214120024180176a41386a2040280200224036020020024180176a41306a203f290300220937030020024180176a41286a203e290300221137030020024180176a41206a203d2903002226370300200241c0166a41086a223d2035290300370300200241c0166a41106a22352038290300370300200241c0166a41186a2238203c290300370300200241c0166a41206a223c2026370300200241c0166a41286a223e2011370300200241c0166a41306a223f2009370300200241c0166a41386a22422040360200200220022903c0173703c01620024180166a41386a2240204228020036020020024180166a41306a2242203f29030037030020024180166a41286a223f203e29030037030020024180166a41206a223e203c29030037030020024180166a41186a223c203829030037030020024180166a41106a2243203529030037030020024180166a41086a2244203d290300370300200220022903c0163703801602402007422088a722382007a7470d00203841016a22352038490d402038410174223d20352035203d491b22354104203541044b1bad42c4007e2207422088a74541027421352007a7213d0240024020380d0020024100360280180c010b200241043602881820022030360280182002203841c4006c360284180b200241c0186a203d203520024180186a107d20022802c818213520022802c0184101460d0320022802c4182130203541c4006ead21070b2030203841c4006c6a2235203b36020020352002290380163702042035410c6a2044290300370200203541146a20432903003702002035411c6a203c290300370200203541246a203e2903003702002035412c6a203f290300370200203541346a20422903003702002035413c6a2040280200360200203520413b0140200742ffffffff0f83203841016aad4220868421072039417f6a22390d000b200128020421380b20012038417f6a3602042030450d05200420056b41037521352003200c6b4104752103200b20196b410575210b201b20346b410675211b2007a721382007422088a741c4006c22040d01203021040c020b2035450d3c0c3b0b203020046a2101203021040340200441c4006a22042001470d000b0b2000200a36020420002005360200200041b8016a2038360200200041b4016a2030360200200041b0016a201b360200200041ac016a203a360200200041a8016a2034360200200041a4016a2037360200200041a0016a20333602002000419c016a203236020020004198016a203136020020004194016a202c36020020004190016a202f3602002000418c016a202d36020020004188016a202836020020004184016a202b36020020004180016a202a360200200041fc006a2024360200200041f8006a2027360200200041f4006a2025360200200041f0006a2021360200200041ec006a2023360200200041e8006a2022360200200041e4006a201e360200200041e0006a201f360200200041dc006a2020360200200041d8006a201c360200200041d4006a201d360200200041d0006a200b360200200041cc006a2016360200200041c8006a2019360200200041c4006a201a360200200041c0006a20143602002000413c6a2017360200200041386a2018360200200041346a2010360200200041306a20133602002000412c6a2015360200200041286a200e360200200041246a2012360200200041206a20033602002000411c6a200d360200200041186a200c360200200041146a200f360200200041106a20063602002000410c6a2008360200200041086a2035360200200041bc016a200420306b41c4006d3602000c380b200241003a00bc180b2007a72204450d00200441c4006c450d002030102e0b20004100360200203a41ffffff1f71450d032034102e0c030b200241003a00b8180b200742ffffff1f83500d002034102e0b200041003602000b2033450d032033413c6c450d032032102e0c030b200241003a00b4180b2007a72204450d002004413c6c450d002032102e0b200041003602000b202c450d03202c41386c450d03202f102e0c030b200241003a00b0180b2007a72204450d00200441386c450d00202f102e0b200041003602000b2028450d03202841346c450d03202b102e0c030b200241003a00ac180b2007a72204450d00200441346c450d00202b102e0b200041003602000b2024450d03202441306c450d032027102e0c030b200241003a00a8180b2007a72204450d00200441306c450d002027102e0b200041003602000b2021450d032021412c6c450d032023102e0c030b200241003a00a4180b2007a72204450d002004412c6c450d002023102e0b200041003602000b201e450d03201e41286c450d03201f102e0c030b200241003a00a0180b2007a72204450d00200441286c450d00201f102e0b200041003602000b201c450d03201c41246c450d03201d102e0c030b200241003a009c180b2007a72204450d00200441246c450d00201d102e0b200041003602000b201641ffffff3f71450d032019102e0c030b200241003a0098180b200742ffffff3f83500d002019102e0b200041003602000b2014450d032014411c6c450d032017102e0c030b200241003a0094180b2007a72204450d002004411c6c450d002017102e0b200041003602000b2010450d03201041186c450d032013102e0c030b200241003a0090180b2007a72204450d00200441186c450d002013102e0b200041003602000b200e450d03200e41146c450d032012102e0c030b200241003a008c180b2007a72204450d00200441146c450d002012102e0b200041003602000b200d41ffffffff0071450d03200c102e0c030b200241003a0088180b200742ffffffff0083500d00200c102e0b200041003602000b2006450d002006410c6c450d002008102e0b200a41ffffffff0171450d002005102e0b200241c0196a24000f0b1036000b1038000ba9b9010f057f017e027f017e067f017e147f017e027f017e047f017e077f017e0e7f230041c0196b22022400200241f8116a200110ab0102400240024002400240024020022802f8110d0020022802fc11220320012802044103762204200420034b1b22044103742205417f4c0d050240024020040d00410421060c010b2005102c2206450d050b2004ad21070240024002402003450d000340200241f0116a200110ab0120022802f0110d0320022802f4112108200241e8116a200110fc0420022f01e8110d0320022f01ea11210902402007422088220aa722052007a72204470d00200441016a22052004490d0a2004410174220b2005200b20054b1b22054104200541044b1b220541ffffffff0171200546410274210b200541037421050240024020040d0020024100360280180c010b2002410436028818200220063602801820022004410374360284180b200241c0186a2005200b20024180186a107d20022802c818210420022802c0184101460d0320022802c41821062007422088220aa721052004410376ad21070b200620054103746a220420093b010420042008360200200a422086200742ffffffff0f83844280808080107c21072003417f6a22030d000b0b2006450d022007422088a741037422040d03200621040c040b20040d050c060b200742ffffffff0183500d002006102e0b200041003602000c020b200620046a210520062104034020042004290200220a3e0200200441046a200a4220883d0100200441086a22042005470d000b0b2007a7210c200241e0116a200110ab01024002400240024020022802e0110d0020022802e41122032001280204410c6e2205200520034b1bad420c7e2207422088a70d062007a72205417f4c0d060240024020050d00410421080c010b2005102c2208450d060b2005410c6ead21070240024002402003450d000340200241d8116a200110ab0120022802d8110d0320022802dc11210b200241d0116a200110fc0420022f01d0110d0320022f01d211210d200241c8116a200110fc0420022f01c8110d0320022f01ca11210e200241c0116a200110fc0420022f01c0110d0320022f01c211210f02402007422088220aa722092007a72205470d00200541016a22092005490d0b200541017422102009201020094b1b22094104200941044b1bad420c7e220a422088a7454102742109200aa721100240024020050d0020024100360280180c010b2002410436028818200220083602801820022005410c6c360284180b200241c0186a2010200920024180186a107d20022802c818210520022802c0184101460d0320022802c41821082007422088220aa721092005410c6ead21070b20082009410c6c6a2205200f3b01082005200d3b01042005200b360200200541066a200e3b0100200a422086200742ffffffff0f83844280808080107c21072003417f6a22030d000b0b2008450d022007422088a7410c6c22050d03200821050c040b2005450d070c060b2007a72204450d002004410c6c450d002008102e0b200041003602000c020b200820056a21032008210503402005410c6a22052003470d000b0b2007a7210d200241b8116a200110ab01200520086b410c6d21100240024020022802b8110d004104210b20022802bc11220320012802044104762205200520034b1b22054104742209417f4c0d0502402005450d002009102c220b450d050b2005ad21070240024002400240024002402003450d000340200241b0116a200110ab0120022802b0110d0620022802b411210e200241003a008818200241a8116a200110fc0420022f01a8110d0620022f01aa112105200241a0116a200110fc0420022f01a0110d0620022f01a2112109200241013a008818200220093b018218200220053b01801820024198116a200110fc0420022f0198110d0520022f019a11210520024190116a200110fc0420022f0190110d05200220022f0192113b018618200220053b018418200229038018210a20024188116a200110fc0420022f0188110d0620022f018a11210f024020074220882211a722052007a7470d00200541016a22092005490d0d20054101742212200920092012491b22094104200941044b1b220941ffffffff00712009464102742112200941047421090240024020050d0020024100360280180c010b20024104360288182002200b36028018200220114204863e0284180b200241c0186a2009201220024180186a107d20022802c818210920022802c0184101460d0320022802c418210b2009410476ad21070b200b20054104746a2209200f3b010c2009200a3702042009200e360200200742ffffffff0f83200541016aad4220868421072003417f6a22030d000b0b200b450d052007422088a741047422050d01200b21050c020b2009450d090c080b200b20056a2103200b21050340200541106a22052003470d000b0b2007a7211220024180116a200110ab01024002402002280280110d00200228028411220e200128020441146e22032003200e4b1bad42147e2207422088a70d092007a72203417f4c0d090240024020030d004104210f0c010b2003102c220f450d090b200341146ead2107024002400240024002400240200e450d00200241c0186a41086a21130340200241f8106a200110ab0120022802f8100d0620022802fc102114200241003a008c18200241f0106a200110fc0420022f01f0100d0620022f01f2102103200241e8106a200110fc0420022f01e8100d0620022f01ea102109200241013a008c18200220093b018218200220033b018018200241e0106a200110fc0420022f01e0100d0520022f01e2102103200241d8106a200110fc0420022f01d8100d0520022f01da102109200241023a008c18200220093b018618200220033b018418200241d0106a200110fc0420022f01d0100d0520022f01d2102103200241c8106a200110fc0420022f01c8100d05200220022f01ca103b018a18200220033b018818201320022802881836020020022002290380183703c018200241c0106a200110fc0420022f01c0100d0620022f01c210211520024180176a41086a20132802002203360200200241c0166a41086a22162003360200200220022903c018220a370380172002200a3703c01602402007422088a722032007a7470d00200341016a22092003490d1120034101742217200920092017491b22094104200941044b1bad42147e2207422088a74541027421092007a721170240024020030d0020024100360280180c010b20024104360288182002200f360280182002200341146c360284180b200241c0186a2017200920024180186a107d20022802c818210920022802c0184101460d0320022802c418210f200941146ead21070b200f200341146c6a22092014360200200920022903c0163702042009410c6a2016280200360200200920153b0110200742ffffffff0f83200341016aad422086842107200e417f6a220e0d000b0b200f450d052007422088a741146c22030d01200f21030c020b2009450d0d0c0c0b200f20036a2109200f21030340200341146a22032009470d000b0b2007a72109200241b8106a200110ab012003200f6b41146d21180240024020022802b8100d0020022802bc102213200128020441186e2203200320134b1bad42187e2207422088a70d0d2007a72203417f4c0d0d0240024020030d00410421140c010b2003102c2214450d0d0b200341186ead21070240024002400240024002402013450d000340200241b0106a200110ab0120022802b0100d0620022802b4102115200241003a009018200241a8106a200110fc0420022f01a8100d0620022f01aa102103200241a0106a200110fc0420022f01a0100d0620022f01a210210e200241013a0090182002200e3b018218200220033b01801820024198106a200110fc0420022f0198100d0520022f019a10210320024190106a200110fc0420022f0190100d0520022f019210210e200241023a0090182002200e3b018618200220033b01841820024188106a200110fc0420022f0188100d0520022f018a10210320024180106a200110fc0420022f0180100d0520022f018210210e200241033a0090182002200e3b018a18200220033b018818200241f80f6a200110fc0420022f01f80f0d0520022f01fa0f2103200241f00f6a200110fc0420022f01f00f0d05200220022f01f20f3b018e18200220033b018c18200241c0186a41086a220320024180186a41086a29030037030020022002290380183703c018200241e80f6a200110fc0420022f01e80f0d0620022f01ea0f211620024180176a41086a2003290300220a370300200241c0166a41086a2217200a370300200220022903c018220a370380172002200a3703c01602402007422088a722032007a7470d00200341016a220e2003490d1520034101742219200e200e2019491b220e4104200e41044b1bad42187e2207422088a745410274210e2007a721190240024020030d0020024100360280180c010b200241043602881820022014360280182002200341186c360284180b200241c0186a2019200e20024180186a107d20022802c818210e20022802c0184101460d0320022802c4182114200e41186ead21070b2014200341186c6a220e2015360200200e20022903c016370204200e410c6a2017290300370200200e20163b0114200742ffffffff0f83200341016aad4220868421072013417f6a22130d000b0b2014450d052007422088a741186c22030d01201421030c020b200e450d110c100b201420036a210e201421030340200341186a2203200e470d000b0b2007a7210e200241e00f6a200110ab01200320146b41186d211a0240024020022802e00f0d0020022802e40f22152001280204411c6e2203200320154b1bad421c7e2207422088a70d112007a72203417f4c0d110240024020030d00410421160c010b2003102c2216450d110b2003411c6ead21070240024002400240024002402015450d00200241c0186a41106a21170340200241d80f6a200110ab0120022802d80f0d0620022802dc0f2119200241003a009418200241d00f6a200110fc0420022f01d00f0d0620022f01d20f2103200241c80f6a200110fc0420022f01c80f0d0620022f01ca0f2113200241013a009418200220133b018218200220033b018018200241c00f6a200110fc0420022f01c00f0d0520022f01c20f2103200241b80f6a200110fc0420022f01b80f0d0520022f01ba0f2113200241023a009418200220133b018618200220033b018418200241b00f6a200110fc0420022f01b00f0d0520022f01b20f2103200241a80f6a200110fc0420022f01a80f0d0520022f01aa0f2113200241033a009418200220133b018a18200220033b018818200241a00f6a200110fc0420022f01a00f0d0520022f01a20f2103200241980f6a200110fc0420022f01980f0d0520022f019a0f2113200241043a009418200220133b018e18200220033b018c18200241900f6a200110fc0420022f01900f0d0520022f01920f2103200241880f6a200110fc0420022f01880f0d0520022f018a0f2113200241c0186a41086a221b20024180186a41086a290300370300200220133b019218200220033b0190182017200228029018360200200241053a00941820022002290380183703c018200241800f6a200110fc0420022f01800f0d0620022f01820f211c20024180176a41086a201b290300220a37030020024180176a41106a20172802002203360200200241c0166a41086a221b200a370300200241c0166a41106a221d2003360200200220022903c018220a370380172002200a3703c01602402007422088a722032007a7470d00200341016a22132003490d192003410174221e20132013201e491b22134104201341044b1bad421c7e2207422088a74541027421132007a7211e0240024020030d0020024100360280180c010b2002410436028818200220163602801820022003411c6c360284180b200241c0186a201e201320024180186a107d20022802c818211320022802c0184101460d0320022802c41821162013411c6ead21070b20162003411c6c6a22132019360200201320022903c0163702042013410c6a201b290300370200201341146a201d2802003602002013201c3b0118200742ffffffff0f83200341016aad4220868421072015417f6a22150d000b0b2016450d052007422088a7411c6c22030d01201621030c020b2013450d150c140b201620036a21132016210303402003411c6a22032013470d000b0b2007a72113200241f80e6a200110ab01200320166b411c6d211b0240024020022802f80e0d0020022802fc0e221720012802044105762203200320174b1b22034105742215417f4c0d150240024020030d00410421190c010b2015102c2219450d150b2003ad21070240024002400240024002402017450d000340200241f00e6a200110ab0120022802f00e0d0620022802f40e211c200241003a009818200241e80e6a200110fc0420022f01e80e0d0620022f01ea0e2103200241e00e6a200110fc0420022f01e00e0d0620022f01e20e2115200241013a009818200220153b018218200220033b018018200241d80e6a200110fc0420022f01d80e0d0520022f01da0e2103200241d00e6a200110fc0420022f01d00e0d0520022f01d20e2115200241023a009818200220153b018618200220033b018418200241c80e6a200110fc0420022f01c80e0d0520022f01ca0e2103200241c00e6a200110fc0420022f01c00e0d0520022f01c20e2115200241033a009818200220153b018a18200220033b018818200241b80e6a200110fc0420022f01b80e0d0520022f01ba0e2103200241b00e6a200110fc0420022f01b00e0d0520022f01b20e2115200241043a009818200220153b018e18200220033b018c18200241a80e6a200110fc0420022f01a80e0d0520022f01aa0e2103200241a00e6a200110fc0420022f01a00e0d0520022f01a20e2115200241053a009818200220153b019218200220033b019018200241980e6a200110fc0420022f01980e0d0520022f019a0e2103200241900e6a200110fc0420022f01900e0d0520022f01920e2115200241c0186a41086a221d20024180186a41086a290300370300200220153b019618200220033b019418200241c0186a41106a220320024180186a41106a290300370300200241063a00981820022002290380183703c018200241880e6a200110fc0420022f01880e0d0620022f018a0e211e20024180176a41086a201d290300220a37030020024180176a41106a20032903002211370300200241c0166a41086a221d200a370300200241c0166a41106a221f2011370300200220022903c018220a370380172002200a3703c01602402007422088220aa722152007a7470d00201541016a22032015490d1d20154101742220200320032020491b22034104200341044b1b220341ffffff3f712003464102742120200341057421030240024020150d0020024100360280180c010b200241043602881820022019360280182002200a4205863e0284180b200241c0186a2003202020024180186a107d20022802c818210320022802c0184101460d0320022802c41821192003410576ad21070b201920154105746a2203201c360200200320022903c0163702042003410c6a201d290300370200200341146a201f2903003702002003201e3b011c200742ffffffff0f83201541016aad4220868421072017417f6a22170d000b0b2019450d052007422088a741057422030d01201921030c020b2003450d190c180b201920036a2115201921030340200341206a22032015470d000b0b2007a72117200241800e6a200110ab010240024020022802800e0d0020022802840e221c200128020441246e22152015201c4b1bad42247e2207422088a70d192007a72215417f4c0d190240024020150d004104211e0c010b2015102c221e450d190b201541246ead2107024002400240024002400240201c450d00200241c0176a41186a211f0340200241f80d6a200110ab0120022802f80d0d0620022802fc0d2120200241003a009c18200241f00d6a200110fc0420022f01f00d0d0620022f01f20d2115200241e80d6a200110fc0420022f01e80d0d0620022f01ea0d211d200241013a009c182002201d3b018218200220153b018018200241e00d6a200110fc0420022f01e00d0d0520022f01e20d2115200241d80d6a200110fc0420022f01d80d0d0520022f01da0d211d200241023a009c182002201d3b018618200220153b018418200241d00d6a200110fc0420022f01d00d0d0520022f01d20d2115200241c80d6a200110fc0420022f01c80d0d0520022f01ca0d211d200241033a009c182002201d3b018a18200220153b018818200241c00d6a200110fc0420022f01c00d0d0520022f01c20d2115200241b80d6a200110fc0420022f01b80d0d0520022f01ba0d211d200241043a009c182002201d3b018e18200220153b018c18200241b00d6a200110fc0420022f01b00d0d0520022f01b20d2115200241a80d6a200110fc0420022f01a80d0d0520022f01aa0d211d200241053a009c182002201d3b019218200220153b019018200241a00d6a200110fc0420022f01a00d0d0520022f01a20d2115200241980d6a200110fc0420022f01980d0d0520022f019a0d211d200241063a009c182002201d3b019618200220153b019418200241900d6a200110fc0420022f01900d0d0520022f01920d2115200241880d6a200110fc0420022f01880d0d0520022f018a0d211d200241c0176a41106a222120024180186a41106a290300370300200241c0176a41086a222220024180186a41086a2903003703002002201d3b019a18200220153b019818201f200228029818360200200241073a009c182002200229038018220a3703c0182002200a3703c017200241800d6a200110fc0420022f01800d0d0620022f01820d2123200241c0166a41086a2022290300220a370300200241c0166a41106a20212903002211370300200241c0166a41186a201f280200221536020020024180166a41086a2221200a37030020024180166a41106a2222201137030020024180166a41186a22242015360200200220022903c017220a3703c0162002200a3703801602402007422088a7221d2007a7470d00201d41016a2215201d490d21201d4101742225201520152025491b22154104201541044b1bad42247e2207422088a74541027421152007a7212502400240201d0d0020024100360280180c010b20024104360288182002201e360280182002201d41246c360284180b200241c0186a2025201520024180186a107d20022802c818211520022802c0184101460d0320022802c418211e201541246ead21070b201e201d41246c6a2215202036020020152002290380163702042015410c6a2021290300370200201541146a20222903003702002015411c6a2024280200360200201520233b0120200742ffffffff0f83201d41016aad422086842107201c417f6a221c0d000b0b201e450d052007422088a741246c22150d01201e21150c020b2015450d1d0c1c0b201e20156a211c201e21150340201541246a2215201c470d000b0b2007a7211c200241f80c6a200110ab012015201e6b41246d21210240024020022802f80c0d0020022802fc0c221d200128020441286e22152015201d4b1bad42287e2207422088a70d1d2007a72215417f4c0d1d0240024020150d00410421200c010b2015102c2220450d1d0b201541286ead2107024002400240024002400240201d450d000340200241f00c6a200110ab0120022802f00c0d0620022802f40c2122200241003a00a018200241e80c6a200110fc0420022f01e80c0d0620022f01ea0c2115200241e00c6a200110fc0420022f01e00c0d0620022f01e20c211f200241013a00a0182002201f3b018218200220153b018018200241d80c6a200110fc0420022f01d80c0d0520022f01da0c2115200241d00c6a200110fc0420022f01d00c0d0520022f01d20c211f200241023a00a0182002201f3b018618200220153b018418200241c80c6a200110fc0420022f01c80c0d0520022f01ca0c2115200241c00c6a200110fc0420022f01c00c0d0520022f01c20c211f200241033a00a0182002201f3b018a18200220153b018818200241b80c6a200110fc0420022f01b80c0d0520022f01ba0c2115200241b00c6a200110fc0420022f01b00c0d0520022f01b20c211f200241043a00a0182002201f3b018e18200220153b018c18200241a80c6a200110fc0420022f01a80c0d0520022f01aa0c2115200241a00c6a200110fc0420022f01a00c0d0520022f01a20c211f200241053a00a0182002201f3b019218200220153b019018200241980c6a200110fc0420022f01980c0d0520022f019a0c2115200241900c6a200110fc0420022f01900c0d0520022f01920c211f200241063a00a0182002201f3b019618200220153b019418200241880c6a200110fc0420022f01880c0d0520022f018a0c2115200241800c6a200110fc0420022f01800c0d0520022f01820c211f200241073a00a0182002201f3b019a18200220153b019818200241f80b6a200110fc0420022f01f80b0d0520022f01fa0b2115200241f00b6a200110fc0420022f01f00b0d0520022f01f20b211f200241c0176a41106a222320024180186a41106a2903003703002002201f3b019e18200220153b019c18200241c0176a41186a221520024180186a41186a290300370300200241083a00a018200241c0176a41086a221f20024180186a41086a2903003703002002200229038018220a3703c0182002200a3703c017200241e80b6a200110fc0420022f01e80b0d0620022f01ea0b2124200241c0166a41086a201f290300220a370300200241c0166a41106a20232903002211370300200241c0166a41186a2015290300222637030020024180166a41086a2223200a37030020024180166a41106a2225201137030020024180166a41186a22272026370300200220022903c017220a3703c0162002200a3703801602402007422088a7221f2007a7470d00201f41016a2215201f490d25201f4101742228201520152028491b22154104201541044b1bad42287e2207422088a74541027421152007a7212802400240201f0d0020024100360280180c010b200241043602881820022020360280182002201f41286c360284180b200241c0186a2028201520024180186a107d20022802c818211520022802c0184101460d0320022802c4182120201541286ead21070b2020201f41286c6a2215202236020020152002290380163702042015410c6a2023290300370200201541146a20252903003702002015411c6a2027290300370200201520243b0124200742ffffffff0f83201f41016aad422086842107201d417f6a221d0d000b0b2020450d052007422088a741286c22150d01202021150c020b2015450d210c200b202020156a211d202021150340201541286a2215201d470d000b0b2007a7211d200241e00b6a200110ab01201520206b41286d21240240024020022802e00b0d0020022802e40b221f2001280204412c6e22152015201f4b1bad422c7e2207422088a70d212007a72215417f4c0d210240024020150d00410421220c010b2015102c2222450d210b2015412c6ead2107024002400240024002400240201f450d000340200241d80b6a200110ab0120022802d80b0d0620022802dc0b2125200241003a00a418200241d00b6a200110fc0420022f01d00b0d0620022f01d20b2115200241c80b6a200110fc0420022f01c80b0d0620022f01ca0b2123200241013a00a418200220233b018218200220153b018018200241c00b6a200110fc0420022f01c00b0d0520022f01c20b2115200241b80b6a200110fc0420022f01b80b0d0520022f01ba0b2123200241023a00a418200220233b018618200220153b018418200241b00b6a200110fc0420022f01b00b0d0520022f01b20b2115200241a80b6a200110fc0420022f01a80b0d0520022f01aa0b2123200241033a00a418200220233b018a18200220153b018818200241a00b6a200110fc0420022f01a00b0d0520022f01a20b2115200241980b6a200110fc0420022f01980b0d0520022f019a0b2123200241043a00a418200220233b018e18200220153b018c18200241900b6a200110fc0420022f01900b0d0520022f01920b2115200241880b6a200110fc0420022f01880b0d0520022f018a0b2123200241053a00a418200220233b019218200220153b019018200241800b6a200110fc0420022f01800b0d0520022f01820b2115200241f80a6a200110fc0420022f01f80a0d0520022f01fa0a2123200241063a00a418200220233b019618200220153b019418200241f00a6a200110fc0420022f01f00a0d0520022f01f20a2115200241e80a6a200110fc0420022f01e80a0d0520022f01ea0a2123200241073a00a418200220233b019a18200220153b019818200241e00a6a200110fc0420022f01e00a0d0520022f01e20a2115200241d80a6a200110fc0420022f01d80a0d0520022f01da0a2123200241083a00a418200220233b019e18200220153b019c18200241d00a6a200110fc0420022f01d00a0d0520022f01d20a2115200241c80a6a200110fc0420022f01c80a0d05200220022f01ca0a3b01a218200220153b01a018200241093a00a418200241c0186a41086a20024180186a41086a290300220a370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20022802a0182215360200200220022903801822293703c018200241c0176a41206a22232015360200200241c0176a41186a22272026370300200241c0176a41106a22282011370300200241c0176a41086a222a200a370300200220293703c017200241c00a6a200110fc0420022f01c00a0d0620022f01c20a212b20024180176a41206a20232802002215360200200241c0166a41086a202a290300220a370300200241c0166a41106a20282903002211370300200241c0166a41186a20272903002226370300200241c0166a41206a201536020020024180166a41086a2227200a37030020024180166a41106a2228201137030020024180166a41186a222a202637030020024180166a41206a222c2015360200200220022903c017220a3703c0162002200a3703801602402007422088a722232007a7470d00202341016a22152023490d292023410174222d20152015202d491b22154104201541044b1bad422c7e2207422088a74541027421152007a7212d0240024020230d0020024100360280180c010b2002410436028818200220223602801820022023412c6c360284180b200241c0186a202d201520024180186a107d20022802c818211520022802c0184101460d0320022802c41821222015412c6ead21070b20222023412c6c6a2215202536020020152002290380163702042015410c6a2027290300370200201541146a20282903003702002015411c6a202a290300370200201541246a202c2802003602002015202b3b0128200742ffffffff0f83202341016aad422086842107201f417f6a221f0d000b0b2022450d052007422088a7412c6c22150d01202221150c020b2015450d250c240b202220156a211f2022211503402015412c6a2215201f470d000b0b2007a7211f200241b80a6a200110ab01201520226b412c6d21280240024020022802b80a0d0020022802bc0a2215200128020441306e2223202320154b1bad42307e2207422088a70d252007a72223417f4c0d250240024020230d00410421250c010b2023102c2225450d250b202341306ead21070240024002400240024002402015450d000340200241b00a6a200110ab0120022802b00a0d0620022802b40a212a200241003a00a818200241a80a6a200110fc0420022f01a80a0d0620022f01aa0a2123200241a00a6a200110fc0420022f01a00a0d0620022f01a20a2127200241013a00a818200220273b018218200220233b018018200241980a6a200110fc0420022f01980a0d0520022f019a0a2123200241900a6a200110fc0420022f01900a0d0520022f01920a2127200241023a00a818200220273b018618200220233b018418200241880a6a200110fc0420022f01880a0d0520022f018a0a2123200241800a6a200110fc0420022f01800a0d0520022f01820a2127200241033a00a818200220273b018a18200220233b018818200241f8096a200110fc0420022f01f8090d0520022f01fa092123200241f0096a200110fc0420022f01f0090d0520022f01f2092127200241043a00a818200220273b018e18200220233b018c18200241e8096a200110fc0420022f01e8090d0520022f01ea092123200241e0096a200110fc0420022f01e0090d0520022f01e2092127200241053a00a818200220273b019218200220233b019018200241d8096a200110fc0420022f01d8090d0520022f01da092123200241d0096a200110fc0420022f01d0090d0520022f01d2092127200241063a00a818200220273b019618200220233b019418200241c8096a200110fc0420022f01c8090d0520022f01ca092123200241c0096a200110fc0420022f01c0090d0520022f01c2092127200241073a00a818200220273b019a18200220233b019818200241b8096a200110fc0420022f01b8090d0520022f01ba092123200241b0096a200110fc0420022f01b0090d0520022f01b2092127200241083a00a818200220273b019e18200220233b019c18200241a8096a200110fc0420022f01a8090d0520022f01aa092123200241a0096a200110fc0420022f01a0090d0520022f01a2092127200241093a00a818200220273b01a218200220233b01a01820024198096a200110fc0420022f0198090d0520022f019a09212320024190096a200110fc0420022f0190090d05200220022f0192093b01a618200220233b01a4182002410a3a00a818200241c0186a41086a20024180186a41086a290300220a370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a29030022293703002002200229038018222e3703c018200241c0176a41206a22232029370300200241c0176a41186a22272026370300200241c0176a41106a222b2011370300200241c0176a41086a222c200a3703002002202e3703c01720024188096a200110fc0420022f0188090d0620022f018a09212d20024180176a41206a2023290300220a370300200241c0166a41086a202c2903002211370300200241c0166a41106a202b2903002226370300200241c0166a41186a20272903002229370300200241c0166a41206a200a37030020024180166a41086a222b201137030020024180166a41106a222c202637030020024180166a41186a222f202937030020024180166a41206a2230200a370300200220022903c017220a3703c0162002200a3703801602402007422088a722272007a7470d00202741016a22232027490d2d20274101742231202320232031491b22234104202341044b1bad42307e2207422088a74541027421232007a721310240024020270d0020024100360280180c010b200241043602881820022025360280182002202741306c360284180b200241c0186a2031202320024180186a107d20022802c818212320022802c0184101460d0320022802c4182125202341306ead21070b2025202741306c6a2223202a36020020232002290380163702042023410c6a202b290300370200202341146a202c2903003702002023411c6a202f290300370200202341246a20302903003702002023202d3b012c200742ffffffff0f83202741016aad4220868421072015417f6a22150d000b0b2025450d052007422088a741306c22150d01202521150c020b2023450d290c280b202520156a2123202521150340201541306a22152023470d000b0b2007a7212320024180096a200110ab01201520256b41306d212c024002402002280280090d002002280284092227200128020441346e2215201520274b1bad42347e2207422088a70d292007a72215417f4c0d290240024020150d004104212a0c010b2015102c222a450d290b201541346ead21070240024002400240024002402027450d000340200241f8086a200110ab0120022802f8080d0620022802fc08212d200241003a00ac18200241f0086a200110fc0420022f01f0080d0620022f01f2082115200241e8086a200110fc0420022f01e8080d0620022f01ea08212b200241013a00ac182002202b3b018218200220153b018018200241e0086a200110fc0420022f01e0080d0520022f01e2082115200241d8086a200110fc0420022f01d8080d0520022f01da08212b200241023a00ac182002202b3b018618200220153b018418200241d0086a200110fc0420022f01d0080d0520022f01d2082115200241c8086a200110fc0420022f01c8080d0520022f01ca08212b200241033a00ac182002202b3b018a18200220153b018818200241c0086a200110fc0420022f01c0080d0520022f01c2082115200241b8086a200110fc0420022f01b8080d0520022f01ba08212b200241043a00ac182002202b3b018e18200220153b018c18200241b0086a200110fc0420022f01b0080d0520022f01b2082115200241a8086a200110fc0420022f01a8080d0520022f01aa08212b200241053a00ac182002202b3b019218200220153b019018200241a0086a200110fc0420022f01a0080d0520022f01a208211520024198086a200110fc0420022f0198080d0520022f019a08212b200241063a00ac182002202b3b019618200220153b01941820024190086a200110fc0420022f0190080d0520022f019208211520024188086a200110fc0420022f0188080d0520022f018a08212b200241073a00ac182002202b3b019a18200220153b01981820024180086a200110fc0420022f0180080d0520022f0182082115200241f8076a200110fc0420022f01f8070d0520022f01fa07212b200241083a00ac182002202b3b019e18200220153b019c18200241f0076a200110fc0420022f01f0070d0520022f01f2072115200241e8076a200110fc0420022f01e8070d0520022f01ea07212b200241093a00ac182002202b3b01a218200220153b01a018200241e0076a200110fc0420022f01e0070d0520022f01e2072115200241d8076a200110fc0420022f01d8070d0520022f01da07212b2002410a3a00ac182002202b3b01a618200220153b01a418200241d0076a200110fc0420022f01d0070d0520022f01d2072115200241c8076a200110fc0420022f01c8070d05200220022f01ca073b01aa18200220153b01a8182002410b3a00ac18200241c0186a41086a20024180186a41086a290300220a370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a2903002229370300200241c0186a41286a20022802a81822153602002002200229038018222e3703c018200241c0176a41286a222b2015360200200241c0176a41206a222f2029370300200241c0176a41186a22302026370300200241c0176a41106a22312011370300200241c0176a41086a2232200a3703002002202e3703c017200241c0076a200110fc0420022f01c0070d0620022f01c207213320024180176a41286a202b280200221536020020024180176a41206a202f290300220a370300200241c0166a41086a20322903002211370300200241c0166a41106a20312903002226370300200241c0166a41186a20302903002229370300200241c0166a41206a200a370300200241c0166a41286a2015360200200220022903c017222e3703c01620024180166a41286a222f201536020020024180166a41206a2230200a37030020024180166a41186a2231202937030020024180166a41106a2232202637030020024180166a41086a223420113703002002202e3703801602402007422088a7222b2007a7470d00202b41016a2215202b490d31202b4101742235201520152035491b22154104201541044b1bad42347e2207422088a74541027421152007a7213502400240202b0d0020024100360280180c010b20024104360288182002202a360280182002202b41346c360284180b200241c0186a2035201520024180186a107d20022802c818211520022802c0184101460d0320022802c418212a201541346ead21070b202a202b41346c6a2215202d36020020152002290380163702042015410c6a2034290300370200201541146a20322903003702002015411c6a2031290300370200201541246a20302903003702002015412c6a202f280200360200201520333b0130200742ffffffff0f83202b41016aad4220868421072027417f6a22270d000b0b202a450d052007422088a741346c22150d01202a21150c020b2015450d2d0c2c0b202a20156a2127202a21150340201541346a22152027470d000b0b2007a72127200241b8076a200110ab012015202a6b41346d212f0240024020022802b8070d0020022802bc072215200128020441386e222b202b20154b1bad42387e2207422088a70d2d2007a7222b417f4c0d2d02400240202b0d004104212d0c010b202b102c222d450d2d0b202b41386ead21070240024002400240024002402015450d000340200241b0076a200110ab0120022802b0070d0620022802b4072131200241003a00b018200241a8076a200110fc0420022f01a8070d0620022f01aa07212b200241a0076a200110fc0420022f01a0070d0620022f01a2072130200241013a00b018200220303b0182182002202b3b01801820024198076a200110fc0420022f0198070d0520022f019a07212b20024190076a200110fc0420022f0190070d0520022f0192072130200241023a00b018200220303b0186182002202b3b01841820024188076a200110fc0420022f0188070d0520022f018a07212b20024180076a200110fc0420022f0180070d0520022f0182072130200241033a00b018200220303b018a182002202b3b018818200241f8066a200110fc0420022f01f8060d0520022f01fa06212b200241f0066a200110fc0420022f01f0060d0520022f01f2062130200241043a00b018200220303b018e182002202b3b018c18200241e8066a200110fc0420022f01e8060d0520022f01ea06212b200241e0066a200110fc0420022f01e0060d0520022f01e2062130200241053a00b018200220303b0192182002202b3b019018200241d8066a200110fc0420022f01d8060d0520022f01da06212b200241d0066a200110fc0420022f01d0060d0520022f01d2062130200241063a00b018200220303b0196182002202b3b019418200241c8066a200110fc0420022f01c8060d0520022f01ca06212b200241c0066a200110fc0420022f01c0060d0520022f01c2062130200241073a00b018200220303b019a182002202b3b019818200241b8066a200110fc0420022f01b8060d0520022f01ba06212b200241b0066a200110fc0420022f01b0060d0520022f01b2062130200241083a00b018200220303b019e182002202b3b019c18200241a8066a200110fc0420022f01a8060d0520022f01aa06212b200241a0066a200110fc0420022f01a0060d0520022f01a2062130200241093a00b018200220303b01a2182002202b3b01a01820024198066a200110fc0420022f0198060d0520022f019a06212b20024190066a200110fc0420022f0190060d0520022f01920621302002410a3a00b018200220303b01a6182002202b3b01a41820024188066a200110fc0420022f0188060d0520022f018a06212b20024180066a200110fc0420022f0180060d0520022f01820621302002410b3a00b018200220303b01aa182002202b3b01a818200241f8056a200110fc0420022f01f8050d0520022f01fa05212b200241f0056a200110fc0420022f01f0050d05200220022f01f2053b01ae182002202b3b01ac182002410c3a00b018200241c0186a41086a20024180186a41086a290300220a370300200241c0186a41106a20024180186a41106a2903002211370300200241c0186a41186a20024180186a41186a2903002226370300200241c0186a41206a20024180186a41206a2903002229370300200241c0186a41286a20024180186a41286a290300222e370300200220022903801822363703c018200241c0176a41286a222b202e370300200241c0176a41206a22302029370300200241c0176a41186a22322026370300200241c0176a41106a22332011370300200241c0176a41086a2234200a370300200220363703c017200241e8056a200110fc0420022f01e8050d0620022f01ea05213520024180176a41286a202b290300220a37030020024180176a41206a20302903002211370300200241c0166a41086a20342903002226370300200241c0166a41106a20332903002229370300200241c0166a41186a2032290300222e370300200241c0166a41206a2011370300200241c0166a41286a200a370300200220022903c01722363703c01620024180166a41286a2232200a37030020024180166a41206a2233201137030020024180166a41186a2234202e37030020024180166a41106a2237202937030020024180166a41086a22382026370300200220363703801602402007422088a722302007a7470d00203041016a222b2030490d3520304101742239202b202b2039491b222b4104202b41044b1bad42387e2207422088a745410274212b2007a721390240024020300d0020024100360280180c010b20024104360288182002202d360280182002203041386c360284180b200241c0186a2039202b20024180186a107d20022802c818212b20022802c0184101460d0320022802c418212d202b41386ead21070b202d203041386c6a222b2031360200202b200229038016370204202b410c6a2038290300370200202b41146a2037290300370200202b411c6a2034290300370200202b41246a2033290300370200202b412c6a2032290300370200202b20353b0134200742ffffffff0f83203041016aad4220868421072015417f6a22150d000b0b202d450d052007422088a741386c22150d01202d21150c020b202b450d310c300b202d20156a212b202d21150340201541386a2215202b470d000b0b2007a7212b200241e0056a200110ab012015202d6b41386d21320240024020022802e0050d0020022802e40522152001280204413c6e2230203020154b1bad423c7e2207422088a70d312007a72230417f4c0d310240024020300d00410421310c010b2030102c2231450d310b2030413c6ead21070240024002400240024002402015450d000340200241d8056a200110ab0120022802d8050d0620022802dc052134200241003a00b418200241d0056a200110fc0420022f01d0050d0620022f01d2052130200241c8056a200110fc0420022f01c8050d0620022f01ca052133200241013a00b418200220333b018218200220303b018018200241c0056a200110fc0420022f01c0050d0520022f01c2052130200241b8056a200110fc0420022f01b8050d0520022f01ba052133200241023a00b418200220333b018618200220303b018418200241b0056a200110fc0420022f01b0050d0520022f01b2052130200241a8056a200110fc0420022f01a8050d0520022f01aa052133200241033a00b418200220333b018a18200220303b018818200241a0056a200110fc0420022f01a0050d0520022f01a205213020024198056a200110fc0420022f0198050d0520022f019a052133200241043a00b418200220333b018e18200220303b018c1820024190056a200110fc0420022f0190050d0520022f019205213020024188056a200110fc0420022f0188050d0520022f018a052133200241053a00b418200220333b019218200220303b01901820024180056a200110fc0420022f0180050d0520022f0182052130200241f8046a200110fc0420022f01f8040d0520022f01fa042133200241063a00b418200220333b019618200220303b019418200241f0046a200110fc0420022f01f0040d0520022f01f2042130200241e8046a200110fc0420022f01e8040d0520022f01ea042133200241073a00b418200220333b019a18200220303b019818200241e0046a200110fc0420022f01e0040d0520022f01e2042130200241d8046a200110fc0420022f01d8040d0520022f01da042133200241083a00b418200220333b019e18200220303b019c18200241d0046a200110fc0420022f01d0040d0520022f01d2042130200241c8046a200110fc0420022f01c8040d0520022f01ca042133200241093a00b418200220333b01a218200220303b01a018200241c0046a200110fc0420022f01c0040d0520022f01c2042130200241b8046a200110fc0420022f01b8040d0520022f01ba0421332002410a3a00b418200220333b01a618200220303b01a418200241b0046a200110fc0420022f01b0040d0520022f01b2042130200241a8046a200110fc0420022f01a8040d0520022f01aa0421332002410b3a00b418200220333b01aa18200220303b01a818200241a0046a200110fc0420022f01a0040d0520022f01a204213020024198046a200110fc0420022f0198040d0520022f019a0421332002410c3a00b418200220333b01ae18200220303b01ac1820024190046a200110fc0420022f0190040d0520022f019204213020024188046a200110fc0420022f0188040d05200220022f018a043b01b218200220303b01b0182002410d3a00b418200241c0186a41086a223020024180186a41086a290300370300200241c0186a41106a223320024180186a41106a290300370300200241c0186a41186a223520024180186a41186a290300370300200241c0186a41206a223720024180186a41206a290300370300200241c0186a41286a223820024180186a41286a290300370300200241c0186a41306a223920022802b01836020020022002290380183703c018200241c0176a41306a223a2039280200360200200241c0176a41286a22392038290300370300200241c0176a41206a22382037290300370300200241c0176a41186a22372035290300370300200241c0176a41106a22352033290300370300200241c0176a41086a22332030290300370300200220022903c0183703c01720024180046a200110fc0420022f0180040d0620022f018204213b20024180176a41306a203a280200223036020020024180176a41286a2039290300220a37030020024180176a41206a20382903002211370300200241c0166a41086a22382033290300370300200241c0166a41106a22332035290300370300200241c0166a41186a22352037290300370300200241c0166a41206a22372011370300200241c0166a41286a2239200a370300200241c0166a41306a223a2030360200200220022903c0173703c01620024180166a41306a223c203a28020036020020024180166a41286a223a203929030037030020024180166a41206a2239203729030037030020024180166a41186a2237203529030037030020024180166a41106a2235203329030037030020024180166a41086a223d2038290300370300200220022903c0163703801602402007422088a722332007a7470d00203341016a22302033490d3920334101742238203020302038491b22304104203041044b1bad423c7e2207422088a74541027421302007a721380240024020330d0020024100360280180c010b2002410436028818200220313602801820022033413c6c360284180b200241c0186a2038203020024180186a107d20022802c818213020022802c0184101460d0320022802c41821312030413c6ead21070b20312033413c6c6a2230203436020020302002290380163702042030410c6a203d290300370200203041146a20352903003702002030411c6a2037290300370200203041246a20392903003702002030412c6a203a290300370200203041346a203c2802003602002030203b3b0138200742ffffffff0f83203341016aad4220868421072015417f6a22150d000b0b2031450d052007422088a7413c6c22150d01203121150c020b2030450d350c340b203120156a21302031211503402015413c6a22152030470d000b0b2007a72130200241f8036a200110ab01201520316b413c6d21350240024020022802f8030d0020022802fc03221520012802044106762233203320154b1b22334106742234417f4c0d350240024020330d00410421340c010b2034102c2234450d350b2033ad21070240024002400240024002402015450d000340200241f0036a200110ab0120022802f0030d0620022802f4032138200241003a00b818200241e8036a200110fc0420022f01e8030d0620022f01ea032133200241e0036a200110fc0420022f01e0030d0620022f01e2032137200241013a00b818200220373b018218200220333b018018200241d8036a200110fc0420022f01d8030d0520022f01da032133200241d0036a200110fc0420022f01d0030d0520022f01d2032137200241023a00b818200220373b018618200220333b018418200241c8036a200110fc0420022f01c8030d0520022f01ca032133200241c0036a200110fc0420022f01c0030d0520022f01c2032137200241033a00b818200220373b018a18200220333b018818200241b8036a200110fc0420022f01b8030d0520022f01ba032133200241b0036a200110fc0420022f01b0030d0520022f01b2032137200241043a00b818200220373b018e18200220333b018c18200241a8036a200110fc0420022f01a8030d0520022f01aa032133200241a0036a200110fc0420022f01a0030d0520022f01a2032137200241053a00b818200220373b019218200220333b01901820024198036a200110fc0420022f0198030d0520022f019a03213320024190036a200110fc0420022f0190030d0520022f0192032137200241063a00b818200220373b019618200220333b01941820024188036a200110fc0420022f0188030d0520022f018a03213320024180036a200110fc0420022f0180030d0520022f0182032137200241073a00b818200220373b019a18200220333b019818200241f8026a200110fc0420022f01f8020d0520022f01fa022133200241f0026a200110fc0420022f01f0020d0520022f01f2022137200241083a00b818200220373b019e18200220333b019c18200241e8026a200110fc0420022f01e8020d0520022f01ea022133200241e0026a200110fc0420022f01e0020d0520022f01e2022137200241093a00b818200220373b01a218200220333b01a018200241d8026a200110fc0420022f01d8020d0520022f01da022133200241d0026a200110fc0420022f01d0020d0520022f01d20221372002410a3a00b818200220373b01a618200220333b01a418200241c8026a200110fc0420022f01c8020d0520022f01ca022133200241c0026a200110fc0420022f01c0020d0520022f01c20221372002410b3a00b818200220373b01aa18200220333b01a818200241b8026a200110fc0420022f01b8020d0520022f01ba022133200241b0026a200110fc0420022f01b0020d0520022f01b20221372002410c3a00b818200220373b01ae18200220333b01ac18200241a8026a200110fc0420022f01a8020d0520022f01aa022133200241a0026a200110fc0420022f01a0020d0520022f01a20221372002410d3a00b818200220373b01b218200220333b01b01820024198026a200110fc0420022f0198020d0520022f019a02213320024190026a200110fc0420022f0190020d05200220022f0192023b01b618200220333b01b4182002410e3a00b818200241c0186a41086a223320024180186a41086a290300370300200241c0186a41106a223720024180186a41106a290300370300200241c0186a41186a223920024180186a41186a290300370300200241c0186a41206a223a20024180186a41206a290300370300200241c0186a41286a223b20024180186a41286a290300370300200241c0186a41306a223c20024180186a41306a29030037030020022002290380183703c018200241c0176a41306a223d203c290300370300200241c0176a41286a223c203b290300370300200241c0176a41206a223b203a290300370300200241c0176a41186a223a2039290300370300200241c0176a41106a22392037290300370300200241c0176a41086a22372033290300370300200220022903c0183703c01720024188026a200110fc0420022f0188020d0620022f018a02213e20024180176a41306a203d290300220a37030020024180176a41286a203c290300221137030020024180176a41206a203b2903002226370300200241c0166a41086a22332037290300370300200241c0166a41106a22372039290300370300200241c0166a41186a2239203a290300370300200241c0166a41206a223a2026370300200241c0166a41286a223b2011370300200241c0166a41306a223c200a370300200220022903c0173703c01620024180166a41306a223d203c29030037030020024180166a41286a223c203b29030037030020024180166a41206a223b203a29030037030020024180166a41186a223a203929030037030020024180166a41106a2239203729030037030020024180166a41086a223f2033290300370300200220022903c0163703801602402007422088220aa722372007a7470d00203741016a22332037490d3d20374101742240203320332040491b22334104203341044b1b223341ffffff1f712033464102742140203341067421330240024020370d0020024100360280180c010b200241043602881820022034360280182002200a4206863e0284180b200241c0186a2033204020024180186a107d20022802c818213320022802c0184101460d0320022802c41821342033410676ad21070b203420374106746a2233203836020020332002290380163702042033410c6a203f290300370200203341146a20392903003702002033411c6a203a290300370200203341246a203b2903003702002033412c6a203c290300370200203341346a203d2903003702002033203e3b013c200742ffffffff0f83203741016aad4220868421072015417f6a22150d000b0b2034450d052007422088a741067422150d01203421150c020b2033450d390c380b203420156a2133203421150340201541c0006a22152033470d000b0b2007a7213320024180026a200110ab0102402002280280020d002002280284022237200128020441c4006e2238203820374b1bad42c4007e2207422088a70d382007a72238417f4c0d380240024020380d00410421390c010b2038102c2239450d380b203841c4006ead21070240024002400240024002402037450d000340200241f8016a200110ab0120022802f8010d0620022802fc01213b200241003a00bc18200241f0016a200110fc0420022f01f0010d0620022f01f2012138200241e8016a200110fc0420022f01e8010d0620022f01ea01213a200241013a00bc182002203a3b018218200220383b018018200241e0016a200110fc0420022f01e0010d0520022f01e2012138200241d8016a200110fc0420022f01d8010d0520022f01da01213a200241023a00bc182002203a3b018618200220383b018418200241d0016a200110fc0420022f01d0010d0520022f01d2012138200241c8016a200110fc0420022f01c8010d0520022f01ca01213a200241033a00bc182002203a3b018a18200220383b018818200241c0016a200110fc0420022f01c0010d0520022f01c2012138200241b8016a200110fc0420022f01b8010d0520022f01ba01213a200241043a00bc182002203a3b018e18200220383b018c18200241b0016a200110fc0420022f01b0010d0520022f01b2012138200241a8016a200110fc0420022f01a8010d0520022f01aa01213a200241053a00bc182002203a3b019218200220383b019018200241a0016a200110fc0420022f01a0010d0520022f01a201213820024198016a200110fc0420022f0198010d0520022f019a01213a200241063a00bc182002203a3b019618200220383b01941820024190016a200110fc0420022f0190010d0520022f019201213820024188016a200110fc0420022f0188010d0520022f018a01213a200241073a00bc182002203a3b019a18200220383b01981820024180016a200110fc0420022f0180010d0520022f0182012138200241f8006a200110fc0420022f01780d0520022f017a213a200241083a00bc182002203a3b019e18200220383b019c18200241f0006a200110fc0420022f01700d0520022f01722138200241e8006a200110fc0420022f01680d0520022f016a213a200241093a00bc182002203a3b01a218200220383b01a018200241e0006a200110fc0420022f01600d0520022f01622138200241d8006a200110fc0420022f01580d0520022f015a213a2002410a3a00bc182002203a3b01a618200220383b01a418200241d0006a200110fc0420022f01500d0520022f01522138200241c8006a200110fc0420022f01480d0520022f014a213a2002410b3a00bc182002203a3b01aa18200220383b01a818200241c0006a200110fc0420022f01400d0520022f01422138200241386a200110fc0420022f01380d0520022f013a213a2002410c3a00bc182002203a3b01ae18200220383b01ac18200241306a200110fc0420022f01300d0520022f01322138200241286a200110fc0420022f01280d0520022f012a213a2002410d3a00bc182002203a3b01b218200220383b01b018200241206a200110fc0420022f01200d0520022f01222138200241186a200110fc0420022f01180d0520022f011a213a2002410e3a00bc182002203a3b01b618200220383b01b418200241106a200110fc0420022f01100d0520022f01122138200241086a200110fc0420022f01080d05200220022f010a3b01ba18200220383b01b8182002410f3a00bc18200241c0186a41086a223820024180186a41086a290300370300200241c0186a41106a223a20024180186a41106a290300370300200241c0186a41186a223c20024180186a41186a290300370300200241c0186a41206a223d20024180186a41206a290300370300200241c0186a41286a223e20024180186a41286a290300370300200241c0186a41306a223f20024180186a41306a290300370300200241c0186a41386a224020022802b81836020020022002290380183703c018200241c0176a41086a22412038290300370300200241c0176a41106a2238203a290300370300200241c0176a41186a223a203c290300370300200241c0176a41206a223c203d290300370300200241c0176a41286a223d203e290300370300200241c0176a41306a223e203f290300370300200241c0176a41386a223f2040280200360200200220022903c0183703c0172002200110fc0420022f01000d0620022f0102214020024180176a41386a203f280200223f36020020024180176a41306a203e290300220a37030020024180176a41286a203d290300221137030020024180176a41206a203c2903002226370300200241c0166a41086a223c2041290300370300200241c0166a41106a223d2038290300370300200241c0166a41186a2238203a290300370300200241c0166a41206a223a2026370300200241c0166a41286a223e2011370300200241c0166a41306a2241200a370300200241c0166a41386a2242203f360200200220022903c0173703c01620024180166a41386a223f204228020036020020024180166a41306a2242204129030037030020024180166a41286a2241203e29030037030020024180166a41206a223e203a29030037030020024180166a41186a2243203829030037030020024180166a41106a2244203d29030037030020024180166a41086a223d203c290300370300200220022903c0163703801602402007422088a7223a2007a7470d00203a41016a2238203a490d40203a410174223c20382038203c491b22384104203841044b1bad42c4007e2207422088a74541027421382007a7213c02400240203a0d0020024100360280180c010b200241043602881820022039360280182002203a41c4006c360284180b200241c0186a203c203820024180186a107d20022802c818213820022802c0184101460d0320022802c4182139203841c4006ead21070b2039203a41c4006c6a2238203b36020020382002290380163702042038410c6a203d290300370200203841146a20442903003702002038411c6a2043290300370200203841246a203e2903003702002038412c6a2041290300370200203841346a20422903003702002038413c6a203f280200360200203820403b0140200742ffffffff0f83203a41016aad4220868421072037417f6a22370d000b0b2039450d05200420066b41037521372005200b6b4104752105200320196b4105752103201520346b41067521152007a721382007422088a741c4006c22040d01203921040c020b2038450d3c0c3b0b203920046a2101203921040340200441c4006a22042001470d000b0b2000200c36020420002006360200200041b8016a2038360200200041b4016a2039360200200041b0016a2015360200200041ac016a2033360200200041a8016a2034360200200041a4016a2035360200200041a0016a20303602002000419c016a203136020020004198016a203236020020004194016a202b36020020004190016a202d3602002000418c016a202f36020020004188016a202736020020004184016a202a36020020004180016a202c360200200041fc006a2023360200200041f8006a2025360200200041f4006a2028360200200041f0006a201f360200200041ec006a2022360200200041e8006a2024360200200041e4006a201d360200200041e0006a2020360200200041dc006a2021360200200041d8006a201c360200200041d4006a201e360200200041d0006a2003360200200041cc006a2017360200200041c8006a2019360200200041c4006a201b360200200041c0006a20133602002000413c6a2016360200200041386a201a360200200041346a200e360200200041306a20143602002000412c6a2018360200200041286a2009360200200041246a200f360200200041206a20053602002000411c6a2012360200200041186a200b360200200041146a2010360200200041106a200d3602002000410c6a2008360200200041086a2037360200200041bc016a200420396b41c4006d3602000c380b200241003a00bc180b2007a72204450d00200441c4006c450d002039102e0b20004100360200203341ffffff1f71450d032034102e0c030b200241003a00b8180b200742ffffff1f83500d002034102e0b200041003602000b2030450d032030413c6c450d032031102e0c030b200241003a00b4180b2007a72204450d002004413c6c450d002031102e0b200041003602000b202b450d03202b41386c450d03202d102e0c030b200241003a00b0180b2007a72204450d00200441386c450d00202d102e0b200041003602000b2027450d03202741346c450d03202a102e0c030b200241003a00ac180b2007a72204450d00200441346c450d00202a102e0b200041003602000b2023450d03202341306c450d032025102e0c030b200241003a00a8180b2007a72204450d00200441306c450d002025102e0b200041003602000b201f450d03201f412c6c450d032022102e0c030b200241003a00a4180b2007a72204450d002004412c6c450d002022102e0b200041003602000b201d450d03201d41286c450d032020102e0c030b200241003a00a0180b2007a72204450d00200441286c450d002020102e0b200041003602000b201c450d03201c41246c450d03201e102e0c030b200241003a009c180b2007a72204450d00200441246c450d00201e102e0b200041003602000b201741ffffff3f71450d032019102e0c030b200241003a0098180b200742ffffff3f83500d002019102e0b200041003602000b2013450d032013411c6c450d032016102e0c030b200241003a0094180b2007a72204450d002004411c6c450d002016102e0b200041003602000b200e450d03200e41186c450d032014102e0c030b200241003a0090180b2007a72204450d00200441186c450d002014102e0b200041003602000b2009450d03200941146c450d03200f102e0c030b200241003a008c180b2007a72204450d00200441146c450d00200f102e0b200041003602000b201241ffffffff0071450d03200b102e0c030b200241003a0088180b200742ffffffff0083500d00200b102e0b200041003602000b200d450d00200d410c6c450d002008102e0b200c41ffffffff0171450d002006102e0b200241c0196a24000f0b1036000b1038000bc61e01097f230041f0006b2202240020024200370204024020012802082203450d0020034103742104200128020041046a21030340200220032f0100109806200341086a2103200441786a22040d000b0b0240200141146a2802002203450d002003410c6c2104200128020c41086a2103034020032f0100210520022003417c6a2f0100109806200220051098062003410c6a2103200441746a22040d000b0b0240200141206a2802002203450d00200341047421042001280218410c6a210303402002200341786a2f010010980620022003417c6a2f0100109806200220032f0100109806200341106a2103200441706a22040d000b0b02402001412c6a2802002203450d00200341146c2104200128022441106a210303402002200341746a2f01001098062002200341786a2f010010980620022003417c6a2f0100109806200220032f0100109806200341146a21032004416c6a22040d000b0b0240200141386a2802002203450d00200341186c2104200128023041146a210303402002200341706a2f01001098062002200341746a2f01001098062002200341786a2f010010980620022003417c6a2f0100109806200220032f0100109806200341186a2103200441686a22040d000b0b0240200141c4006a2802002203450d00200128023c21052003411c6c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620062004411c6a2204470d000b0b0240200141d0006a2802002203450d0020012802482105200341057421064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062006200441206a2204470d000b0b0240200141dc006a2802002203450d0020012802542105200341246c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062006200441246a2204470d000b0b0240200141e8006a2802002203450d0020012802602105200341286c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062006200441286a2204470d000b0b0240200141f4006a2802002203450d00200128026c21052003412c6c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620062004412c6a2204470d000b0b024020014180016a2802002203450d0020012802782105200341306c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062006200441306a2204470d000b0b02402001418c016a2802002203450d002001280284012105200341346c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062002200341306a2f01001098062006200441346a2204470d000b0b024020014198016a2802002203450d002001280290012105200341386c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062002200341306a2f01001098062002200341346a2f01001098062006200441386a2204470d000b0b0240200141a4016a2802002203450d00200128029c0121052003413c6c21064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062002200341306a2f01001098062002200341346a2f01001098062002200341386a2f010010980620062004413c6a2204470d000b0b0240200141b0016a2802002203450d0020012802a8012105200341067421064100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062002200341306a2f01001098062002200341346a2f01001098062002200341386a2f010010980620022003413c6a2f01001098062006200441c0006a2204470d000b0b0240200141bc016a2802002203450d0020012802b4012105200341c4006c21014100210403402002200520046a220341046a2f01001098062002200341086a2f010010980620022003410c6a2f01001098062002200341106a2f01001098062002200341146a2f01001098062002200341186a2f010010980620022003411c6a2f01001098062002200341206a2f01001098062002200341246a2f01001098062002200341286a2f010010980620022003412c6a2f01001098062002200341306a2f01001098062002200341346a2f01001098062002200341386a2f010010980620022003413c6a2f01001098062002200341c0006a2f01001098062001200441c4006a2204470d000b0b02400240200228020422050d004100210541002103410021060c010b200228020821062002280200210420052103034020052f010621012004450d012004417f6a2104200520014102746a41206a2802002105200328022021030c000b0b200241246a2001360200200241206a200536020020022006360228200242003703182002200336021420022004360210024002400240024002400240024002402006450d0020022006417f6a22063602282003450d0141002105024002400340200520032f0106490d010240200328020022010d002003102e410021030c030b20032f010421052003102e200441016a2104200121030c000b0b200541016a2101200320054101746a41086a2f010021072004450d00200320014102746a41206a2802002103024020044101460d00410121050340200328022021032004200541016a2205470d000b0b410021010b200220013602182002200336021420024100360210417f200641016a220320032006491b220420046a22032004490d052003417f4c0d052003102c2208450d02200820073b0100200241306a41186a200241106a41186a2802002204360200200241306a41106a200241106a41106a290300370300200241306a41086a200241106a41086a2903003703002002200229031037033041012106200341017621072004450d0620022004417f6a220936024820022802342203450d032002280238210520022802302104024002400340200520032f0106490d010240200328020022010d002003102e410021030c030b20032f010421052003102e200441016a2104200121030c000b0b200541016a2101200320054101746a41086a2f0100210a2004450d00200320014102746a41206a2802002103024020044101460d00410121050340200328022021032004200541016a2205470d000b0b410021010b20022001360238200220033602342002410036023041012106034002400240024020072006470d00200720066b417f200941016a220320032009491b22034f0d00200620036a22032006490d09200741017422042003200420034b1b22034104200341044b1b220320036a220520034f41017421030240024020070d00200241003602600c010b2002410236026820022004360264200220083602600b200241d0006a20052003200241e0006a107d2002280258210320022802504101460d0120022802542108200341017621070b200820064101746a200a3b0100200641016a2106200228024822030d010c090b20030d040c070b20022003417f6a220936024820022802342203450d05410120022802306b210420022802382105024002400340200520032f0106490d010240200328020022010d002003102e410021030c030b20032f010421052003102e2004417f6a2104200121030c000b0b200541016a2101200320054101746a41086a2f0100210a20044101460d00200320014102746a41206a280200210302402004450d004100210503402003280220210320042005417f6a2205470d000b0b410021010b2002200136023820022003360234200241003602300c000b0b2000410036020820004202370200200241106a10bf020c060b41e8aac700412b41f8b7c0001039000b1036000b41e8aac700412b41f8b7c0001039000b41e8aac700412b41f8b7c0001039000b1038000b200241306a10bf022000200636020820002007360204200020083602000b200241f0006a24000b870e010c7f024002400240024002400240024002400240024002400240024020002802042202450d00200028020021030c010b4120102c2202450d0141002103200241003b01062002410036020020002002360204200041003602000b200141ffff037121040240034020022f01062205410174210641002107417f210802400340024020062007470d00200521080c020b200220076a2109200841016a2108200741026a2107417f200941086a2f01002209200447200920044b1b41016a0e03010300010b0b02402003450d002003417f6a2103200220084102746a41206a28020021020c010b0b0240024020022f01062207410a4b0d00200241086a2104200741016a21090240200841016a220620074b0d00200420064101746a200420084101746a20092008417f736a41017410ea081a0b200420084101746a20013b0100200220093b01060c010b410521074100210602400240200841054f0d0041042107200821040c010b41052104024002402008417b6a0e020201000b200841796a210441012106410621070c010b41002104410121060b4120102c2208450d02200841003b010620084100360200200820022f010622032007417f736a22093b01062009410c4f0d032003200741016a22056b2009470d04200241086a220320074101746a2f0100210a200841086a200320054101746a200941017410e9081a200220073b01062008200220061b220741086a210920072f0106220341016a21060240200441016a220520034b0d00200920054101746a200920044101746a20062004417f736a41017410ea081a0b200920044101746a20013b0100200720063b0106024002400240200228020022030d00410021010c010b410021012008210b200a210c03404101450d0820022f0104210920032f01062205410b490d024100210641042107024020094105490d0020092107024002402009417b6a0e020201000b200941796a210941012106410621070c010b4100210941012106410521070b41d000102c2208450d05200841003b010620084100360200200820032f0106220a2007417f736a22023b01062002410c4f0d09200a200741016a22046b2002470d0a200341086a220d20074101746a2f0100210a200841086a200d20044101746a200241017410e9081a200320073b010620082f0106220241016a210d2002410c4f0d0b200520076b2207200d470d0c200141016a2101200841206a200320044102746a41206a200741027410e9081a4100210702400340200820074102746a41206a280200220420073b0104200420083602002007200720024922046a220720024b0d0120040d000b0b2008200320061b220441086a210220042f0106220541016a21060240200941016a220720054b0d00200220074101746a200220094101746a2009417f7320066a41017410ea081a0b200220094101746a200c3b0100200441206a21020240200941026a220c200541026a22054f0d002002200c4102746a200220074102746a2007417f7320056a41027410ea081a0b200220074102746a200b360200200420063b01060240200720054f0d00200420094102746a41246a2107034020072802002202200941016a22093b010420022004360200200741046a210720062009470d000b0b200321022003280200220721032008210b200a210c20070d000b0b20002802042202450d0b2000280200210441d000102c2207450d0320072002360220200741003b010620074100360200200241003b010420022007360200200020073602042000200441016a36020020042001470d0c20072f01062202410b4f0d0d2007200241016a22043b0106200720024101746a41086a200a3b0100200720044102746a41206a2008360200200820043b0104200820073602002000200028020841016a3602080f0b200941016a2107200341086a210220032f0106220841016a21040240200920084f22050d00200220074101746a200220094101746a2009417f7320046a41017410ea081a0b200220094101746a200c3b0100200341206a2102200841026a2106024020050d00200941027420026a41086a200220074102746a2007417f7320066a41027410ea081a0b200220074102746a200b360200200320043b0106200720064f0d00200841016a210420032007417f6a22074102746a41246a2108034020082802002202200741016a22073b010420022003360200200841046a210820042007470d000b0b2000200028020841016a3602080b0f0b1036000b2009410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b2002410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b200d410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000bfd8c0103087f057ebb017f230041e00a6b22042400200420033602bc08200441f8096a4200370300200441f0096a4280808080c000370300200441e0096a4200370300200441d8096a4280808080c000370300200441c0086a4188016a4200370300200441c0096a4280808080c000370300200441b0096a4200370300200441a8096a4280808080c00037030020044198096a420037030020044190096a4280808080c00037030020044180096a4200370300200441c0086a41386a4280808080c000370300200441c0086a41286a4200370300200441c0086a41206a4280808080c000370300200441c0086a41106a4200370300200442043703e809200442043703d009200442043703b809200442043703a0092004420437038809200442043703f008200442043703d80820044280808080c0003703c808200442043703c0082001280200220520012802082203412c6c22066a210720012802042108200521010240024002402003450d00200641546a2103200441a00a6a41186a2109200441a00a6a41106a210a200441a00a6a41086a210b2005210602400340200641046a290200210c200628020021012009200641246a290200370300200a2006411c6a290200370300200b200641146a29020037030020042006410c6a2902003703a00a024020010d002006412c6a21010c030b200441800a6a41186a2009290300220d370300200441800a6a41106a200a290300220e370300200441800a6a41086a200b290300220f370300200420042903a00a22103703800a2009200d370300200a200e370300200b200f370300200420103703a00a02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200c422088a70e1113000102030405060708090a0b0c0d0e0f140b2002280200200441a00a6a10a0022211450d14201128020021122004200441bc086a2001109a06024020042f01002213450d0020042f010221140240024020042802c808221120042802c408470d00201141016a22152011490da201201141017422162015201620154b1b22154104201541044b1b221541ffffffff01712015464102742116201541037421150240024020110d00200441003602d00a0c010b200441043602d80a200420042802c0083602d00a200420114103743602d40a0b200441c00a6a20152016200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602c008200420114103763602c40820042802c80821110b20042802c00820114103746a22112014201720131b22173b010420112012360200200420042802c80841016a3602c8080c110b2011450da0010ca2010b20004281808080203702000c9c010b2002280200200441a00a6a10a0022211450d1420112802002112200441106a200441bc086a2001109a0620042f01102213450d1520042f0112211420012f01202115200441086a200441bc086a200141226a109a06024020042f01082216450d0020042f010a21180240024020042802d408221120042802d008470d00201141016a22192011490da1012011410174221a2019201a20194b1b22194104201941044b1bad420c7e220d422088a7454102742119200da7211a0240024020110d00200441003602d00a0c010b200441043602d80a200420042802cc083602d00a20042011410c6c3602d40a0b200441c00a6a201a2019200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602cc0820042011410c6e3602d00820042802d40821110b20042802cc082011410c6c6a22112018201b20161b221b3b010820112014201c20131b221c3b010420112012360200201141066a20153b0100200420042802d40841016a3602d4080c100b20110da1010c9f010b20004281808080203702000c9b010b2002280200200441a00a6a10a0022211450d1520112802002112200441286a200441bc086a2001109a0620042f01282213450d1620042f012a211420012f01202115200441206a200441bc086a200141226a109a0620042f01202216450d1720042f01222118200141c2006a2f01002119200441186a200441bc086a200141c4006a109a06024020042f0118221a450d0020042f011a211d0240024020042802e008221120042802dc08470d00201141016a221e2011490da0012011410174221f201e201f201e4b1b221e4104201e41044b1b221e41ffffffff0071201e46410274211f201e410474211e0240024020110d00200441003602d00a0c010b200420042802d8083602d00a200441043602d80a200420114104743602d40a0b200441c00a6a201e201f200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602d808200420114104763602dc0820042802e00821110b20042802d80820114104746a2211201d2020201a1b22203b010c20112014202120131b22213b0104201120123602002011410a6a20193b0100201141086a2018202220161b22223b0100201141066a20153b0100200420042802e00841016a3602e0080c0f0b20110da0010c9e010b20004281808080203702000c9a010b2002280200200441a00a6a10a0022211450d1720112802002112200441c8006a200441bc086a2001109a0620042f01482213450d1820042f014a211420012f01202115200441c0006a200441bc086a200141226a109a0620042f01402216450d1920042f01422118200141c2006a2f01002119200441386a200441bc086a200141c4006a109a0620042f0138221a450d1a20042f013a211d200141e4006a2f0100211e200441306a200441bc086a200141e6006a109a06024020042f0130221f450d0020042f013221230240024020042802ec08221120042802e808470d00201141016a22242011490d9f01201141017422252024202520244b1b22244104202441044b1bad42147e220d422088a7454102742124200da721250240024020110d00200441003602d00a0c010b200441043602d80a200420042802e4083602d00a2004201141146c3602d40a0b200441c00a6a20252024200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602e4082004201141146e3602e80820042802ec0821110b20042802e408201141146c6a221120232026201f1b22263b011020112014202720131b22273b0104201120123602002011410e6a201e3b01002011410c6a201d2028201a1b22283b01002011410a6a20193b0100201141086a2018202920161b22293b0100201141066a20153b0100200420042802ec0841016a3602ec080c0e0b20110d9f010c9d010b20004281808080203702000c99010b2002280200200441a00a6a10a0022211450d1a20112802002112200441f0006a200441bc086a2001109a0620042f01702213450d1b20042f0172211420012f01202115200441e8006a200441bc086a200141226a109a0620042f01682216450d1c20042f016a2118200141c2006a2f01002119200441e0006a200441bc086a200141c4006a109a0620042f0160221a450d1d20042f0162211d200141e4006a2f0100211e200441d8006a200441bc086a200141e6006a109a0620042f0158221f450d1e20042f015a212320014186016a2f01002124200441d0006a200441bc086a20014188016a109a06024020042f01502225450d0020042f0152212a0240024020042802f808221120042802f408470d00201141016a222b2011490d9e012011410174222c202b202c202b4b1b222b4104202b41044b1bad42187e220d422088a745410274212b200da7212c0240024020110d00200441003602d00a0c010b200441043602d80a200420042802f0083602d00a2004201141186c3602d40a0b200441c00a6a202c202b200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602f0082004201141186e3602f40820042802f80821110b20042802f008201141186c6a2211202a202d20251b222d3b011420112014202e20131b222e3b010420112012360200201141126a20243b0100201141106a2023202f201f1b222f3b01002011410e6a201e3b01002011410c6a201d2030201a1b22303b01002011410a6a20193b0100201141086a2018203120161b22313b0100201141066a20153b0100200420042802f80841016a3602f8080c0d0b20110d9e010c9c010b20004281808080203702000c98010b2002280200200441a00a6a10a0022211450d1e20112802002112200441a0016a200441bc086a2001109a0620042f01a0012213450d1f20042f01a201211420012f0120211520044198016a200441bc086a200141226a109a0620042f0198012216450d2020042f019a012118200141c2006a2f0100211920044190016a200441bc086a200141c4006a109a0620042f019001221a450d2120042f019201211d200141e4006a2f0100211e20044188016a200441bc086a200141e6006a109a0620042f018801221f450d2220042f018a01212320014186016a2f0100212420044180016a200441bc086a20014188016a109a0620042f0180012225450d2320042f018201212a200141a8016a2f0100212b200441f8006a200441bc086a200141aa016a109a06024020042f0178222c450d0020042f017a2132024002402004280284092211200428028009470d00201141016a22332011490d9d01201141017422342033203420334b1b22334104203341044b1bad421c7e220d422088a7454102742133200da721340240024020110d00200441003602d00a0c010b200441043602d80a200420042802fc083602d00a20042011411c6c3602d40a0b200441c00a6a20342033200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602fc0820042011411c6e3602800920042802840921110b20042802fc082011411c6c6a221120322035202c1b22353b011820112014203620131b22363b010420112012360200201141166a202b3b0100201141146a202a203720251b22373b0100201141126a20243b0100201141106a20232038201f1b22383b01002011410e6a201e3b01002011410c6a201d2039201a1b22393b01002011410a6a20193b0100201141086a2018203a20161b223a3b0100201141066a20153b0100200420042802840941016a360284090c0c0b20110d9d010c9b010b20004281808080203702000c97010b2002280200200441a00a6a10a0022211450d2320112802002112200441d8016a200441bc086a2001109a0620042f01d8012213450d2420042f01da01211420012f01202115200441d0016a200441bc086a200141226a109a0620042f01d0012216450d2520042f01d2012118200141c2006a2f01002119200441c8016a200441bc086a200141c4006a109a0620042f01c801221a450d2620042f01ca01211d200141e4006a2f0100211e200441c0016a200441bc086a200141e6006a109a0620042f01c001221f450d2720042f01c201212320014186016a2f01002124200441b8016a200441bc086a20014188016a109a0620042f01b8012225450d2820042f01ba01212a200141a8016a2f0100212b200441b0016a200441bc086a200141aa016a109a0620042f01b001222c450d2920042f01b2012132200141ca016a2f01002133200441a8016a200441bc086a200141cc016a109a06024020042f01a8012234450d0020042f01aa01213b024002402004280290092211200428028c09470d00201141016a223c2011490d9c012011410174223d203c203d203c4b1b223c4104203c41044b1b223c41ffffff3f71203c46410274213d203c410574213c0240024020110d00200441003602d00a0c010b200441043602d80a20042004280288093602d00a200420114105743602d40a0b200441c00a6a203c203d200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a360288092004201141057636028c0920042802900921110b20042802880920114105746a2211203b203e20341b223e3b011c20112014203f20131b223f3b0104201120123602002011411a6a20333b0100201141186a20322040202c1b22403b0100201141166a202b3b0100201141146a202a204120251b22413b0100201141126a20243b0100201141106a20232042201f1b22423b01002011410e6a201e3b01002011410c6a201d2043201a1b22433b01002011410a6a20193b0100201141086a2018204420161b22443b0100201141066a20153b0100200420042802900941016a360290090c0b0b20110d9c010c9a010b20004281808080203702000c96010b2002280200200441a00a6a10a0022211450d292011280200211220044198026a200441bc086a2001109a0620042f0198022213450d2a20042f019a02211420012f0120211520044190026a200441bc086a200141226a109a0620042f0190022216450d2b20042f0192022118200141c2006a2f0100211920044188026a200441bc086a200141c4006a109a0620042f018802221a450d2c20042f018a02211d200141e4006a2f0100211e20044180026a200441bc086a200141e6006a109a0620042f018002221f450d2d20042f018202212320014186016a2f01002124200441f8016a200441bc086a20014188016a109a0620042f01f8012225450d2e20042f01fa01212a200141a8016a2f0100212b200441f0016a200441bc086a200141aa016a109a0620042f01f001222c450d2f20042f01f2012132200141ca016a2f01002133200441e8016a200441bc086a200141cc016a109a0620042f01e8012234450d3020042f01ea01213b200141ec016a2f0100213c200441e0016a200441bc086a200141ee016a109a06024020042f01e001223d450d0020042f01e201214502400240200428029c092211200428029809470d00201141016a22462011490d9b01201141017422472046204720464b1b22464104204641044b1bad42247e220d422088a7454102742146200da721470240024020110d00200441003602d00a0c010b200441043602d80a20042004280294093602d00a2004201141246c3602d40a0b200441c00a6a20472046200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a360294092004201141246e36029809200428029c0921110b200428029409201141246c6a221120452048203d1b22483b012020112014204920131b22493b0104201120123602002011411e6a203c3b01002011411c6a203b204a20341b224a3b01002011411a6a20333b0100201141186a2032204b202c1b224b3b0100201141166a202b3b0100201141146a202a204c20251b224c3b0100201141126a20243b0100201141106a2023204d201f1b224d3b01002011410e6a201e3b01002011410c6a201d204e201a1b224e3b01002011410a6a20193b0100201141086a2018204f20161b224f3b0100201141066a20153b01002004200428029c0941016a36029c090c0a0b20110d9b010c99010b20004281808080203702000c95010b2002280200200441a00a6a10a0022211450d3020112802002112200441e0026a200441bc086a2001109a0620042f01e0022213450d3120042f01e202211420012f01202115200441d8026a200441bc086a200141226a109a0620042f01d8022216450d3220042f01da022118200141c2006a2f01002119200441d0026a200441bc086a200141c4006a109a0620042f01d002221a450d3320042f01d202211d200141e4006a2f0100211e200441c8026a200441bc086a200141e6006a109a0620042f01c802221f450d3420042f01ca02212320014186016a2f01002124200441c0026a200441bc086a20014188016a109a0620042f01c0022225450d3520042f01c202212a200141a8016a2f0100212b200441b8026a200441bc086a200141aa016a109a0620042f01b802222c450d3620042f01ba022132200141ca016a2f01002133200441b0026a200441bc086a200141cc016a109a0620042f01b0022234450d3720042f01b202213b200141ec016a2f0100213c200441a8026a200441bc086a200141ee016a109a0620042f01a802223d450d3820042f01aa0221452001418e026a2f01002146200441a0026a200441bc086a20014190026a109a06024020042f01a0022247450d0020042f01a20221500240024020042802a809221120042802a409470d00201141016a22512011490d9a01201141017422522051205220514b1b22514104205141044b1bad42287e220d422088a7454102742151200da721520240024020110d00200441003602d00a0c010b200441043602d80a200420042802a0093602d00a2004201141286c3602d40a0b200441c00a6a20522051200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602a0092004201141286e3602a40920042802a80921110b20042802a009201141286c6a22112050205320471b22533b012420112014205420131b22543b010420112012360200201141226a20463b0100201141206a20452055203d1b22553b01002011411e6a203c3b01002011411c6a203b205620341b22563b01002011411a6a20333b0100201141186a20322057202c1b22573b0100201141166a202b3b0100201141146a202a205820251b22583b0100201141126a20243b0100201141106a20232059201f1b22593b01002011410e6a201e3b01002011410c6a201d205a201a1b225a3b01002011410a6a20193b0100201141086a2018205b20161b225b3b0100201141066a20153b0100200420042802a80941016a3602a8090c090b20110d9a010c98010b20004281808080203702000c94010b2002280200200441a00a6a10a0022211450d3820112802002112200441b0036a200441bc086a2001109a0620042f01b0032213450d3920042f01b203211420012f01202115200441a8036a200441bc086a200141226a109a0620042f01a8032216450d3a20042f01aa032118200141c2006a2f01002119200441a0036a200441bc086a200141c4006a109a0620042f01a003221a450d3b20042f01a203211d200141e4006a2f0100211e20044198036a200441bc086a200141e6006a109a0620042f019803221f450d3c20042f019a03212320014186016a2f0100212420044190036a200441bc086a20014188016a109a0620042f0190032225450d3d20042f019203212a200141a8016a2f0100212b20044188036a200441bc086a200141aa016a109a0620042f018803222c450d3e20042f018a032132200141ca016a2f0100213320044180036a200441bc086a200141cc016a109a0620042f0180032234450d3f20042f018203213b200141ec016a2f0100213c200441f8026a200441bc086a200141ee016a109a0620042f01f802223d450d4020042f01fa0221452001418e026a2f01002146200441f0026a200441bc086a20014190026a109a0620042f01f0022247450d4120042f01f2022150200141b0026a2f01002151200441e8026a200441bc086a200141b2026a109a06024020042f01e8022252450d0020042f01ea02215c0240024020042802b409221120042802b009470d00201141016a225d2011490d99012011410174225e205d205e205d4b1b225d4104205d41044b1bad422c7e220d422088a745410274215d200da7215e0240024020110d00200441003602d00a0c010b200441043602d80a200420042802ac093602d00a20042011412c6c3602d40a0b200441c00a6a205e205d200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602ac0920042011412c6e3602b00920042802b40921110b20042802ac092011412c6c6a2211205c205f20521b225f3b012820112014206020131b22603b010420112012360200201141266a20513b0100201141246a2050206120471b22613b0100201141226a20463b0100201141206a20452062203d1b22623b01002011411e6a203c3b01002011411c6a203b206320341b22633b01002011411a6a20333b0100201141186a20322064202c1b22643b0100201141166a202b3b0100201141146a202a206520251b22653b0100201141126a20243b0100201141106a20232066201f1b22663b01002011410e6a201e3b01002011410c6a201d2067201a1b22673b01002011410a6a20193b0100201141086a2018206820161b22683b0100201141066a20153b0100200420042802b40941016a3602b4090c080b20110d99010c97010b20004281808080203702000c93010b2002280200200441a00a6a10a0022211450d412011280200211220044188046a200441bc086a2001109a0620042f0188042213450d4220042f018a04211420012f0120211520044180046a200441bc086a200141226a109a0620042f0180042216450d4320042f0182042118200141c2006a2f01002119200441f8036a200441bc086a200141c4006a109a0620042f01f803221a450d4420042f01fa03211d200141e4006a2f0100211e200441f0036a200441bc086a200141e6006a109a0620042f01f003221f450d4520042f01f203212320014186016a2f01002124200441e8036a200441bc086a20014188016a109a0620042f01e8032225450d4620042f01ea03212a200141a8016a2f0100212b200441e0036a200441bc086a200141aa016a109a0620042f01e003222c450d4720042f01e2032132200141ca016a2f01002133200441d8036a200441bc086a200141cc016a109a0620042f01d8032234450d4820042f01da03213b200141ec016a2f0100213c200441d0036a200441bc086a200141ee016a109a0620042f01d003223d450d4920042f01d20321452001418e026a2f01002146200441c8036a200441bc086a20014190026a109a0620042f01c8032247450d4a20042f01ca032150200141b0026a2f01002151200441c0036a200441bc086a200141b2026a109a0620042f01c0032252450d4b20042f01c203215c200141d2026a2f0100215d200441b8036a200441bc086a200141d4026a109a06024020042f01b803225e450d0020042f01ba0321690240024020042802c009221120042802bc09470d00201141016a226a2011490d98012011410174226b206a206b206a4b1b226a4104206a41044b1bad42307e220d422088a745410274216a200da7216b0240024020110d00200441003602d00a0c010b200441043602d80a200420042802b8093602d00a2004201141306c3602d40a0b200441c00a6a206b206a200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602b8092004201141306e3602bc0920042802c00921110b20042802b809201141306c6a22112069206c205e1b226c3b012c20112014206d20131b226d3b0104201120123602002011412a6a205d3b0100201141286a205c206e20521b226e3b0100201141266a20513b0100201141246a2050206f20471b226f3b0100201141226a20463b0100201141206a20452070203d1b22703b01002011411e6a203c3b01002011411c6a203b207120341b22713b01002011411a6a20333b0100201141186a20322072202c1b22723b0100201141166a202b3b0100201141146a202a207320251b22733b0100201141126a20243b0100201141106a20232074201f1b22743b01002011410e6a201e3b01002011410c6a201d2075201a1b22753b01002011410a6a20193b0100201141086a2018207620161b22763b0100201141066a20153b0100200420042802c00941016a3602c0090c070b20110d98010c96010b20004281808080203702000c92010b2002280200200441a00a6a10a0022211450d4b20112802002112200441e8046a200441bc086a2001109a0620042f01e8042213450d4c20042f01ea04211420012f01202115200441e0046a200441bc086a200141226a109a0620042f01e0042216450d4d20042f01e2042118200141c2006a2f01002119200441d8046a200441bc086a200141c4006a109a0620042f01d804221a450d4e20042f01da04211d200141e4006a2f0100211e200441d0046a200441bc086a200141e6006a109a0620042f01d004221f450d4f20042f01d204212320014186016a2f01002124200441c8046a200441bc086a20014188016a109a0620042f01c8042225450d5020042f01ca04212a200141a8016a2f0100212b200441c0046a200441bc086a200141aa016a109a0620042f01c004222c450d5120042f01c2042132200141ca016a2f01002133200441b8046a200441bc086a200141cc016a109a0620042f01b8042234450d5220042f01ba04213b200141ec016a2f0100213c200441b0046a200441bc086a200141ee016a109a0620042f01b004223d450d5320042f01b20421452001418e026a2f01002146200441a8046a200441bc086a20014190026a109a0620042f01a8042247450d5420042f01aa042150200141b0026a2f01002151200441a0046a200441bc086a200141b2026a109a0620042f01a0042252450d5520042f01a204215c200141d2026a2f0100215d20044198046a200441bc086a200141d4026a109a0620042f019804225e450d5620042f019a042169200141f4026a2f0100216a20044190046a200441bc086a200141f6026a109a06024020042f019004226b450d0020042f01920421770240024020042802cc09221120042802c809470d00201141016a22782011490d9701201141017422792078207920784b1b22784104207841044b1bad42347e220d422088a7454102742178200da721790240024020110d00200441003602d00a0c010b200441043602d80a200420042802c4093602d00a2004201141346c3602d40a0b200441c00a6a20792078200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602c4092004201141346e3602c80920042802cc0921110b20042802c409201141346c6a22112077207a206b1b227a3b013020112014207b20131b227b3b0104201120123602002011412e6a206a3b01002011412c6a2069207c205e1b227c3b01002011412a6a205d3b0100201141286a205c207d20521b227d3b0100201141266a20513b0100201141246a2050207e20471b227e3b0100201141226a20463b0100201141206a2045207f203d1b227f3b01002011411e6a203c3b01002011411c6a203b20800120341b2280013b01002011411a6a20333b0100201141186a2032208101202c1b2281013b0100201141166a202b3b0100201141146a202a20820120251b2282013b0100201141126a20243b0100201141106a2023208301201f1b2283013b01002011410e6a201e3b01002011410c6a201d208401201a1b2284013b01002011410a6a20193b0100201141086a201820850120161b2285013b0100201141066a20153b0100200420042802cc0941016a3602cc090c060b20110d97010c95010b20004281808080203702000c91010b2002280200200441a00a6a10a0022211450d5620112802002112200441d0056a200441bc086a2001109a0620042f01d0052213450d5720042f01d205211420012f01202115200441c8056a200441bc086a200141226a109a0620042f01c8052216450d5820042f01ca052118200141c2006a2f01002119200441c0056a200441bc086a200141c4006a109a0620042f01c005221a450d5920042f01c205211d200141e4006a2f0100211e200441b8056a200441bc086a200141e6006a109a0620042f01b805221f450d5a20042f01ba05212320014186016a2f01002124200441b0056a200441bc086a20014188016a109a0620042f01b0052225450d5b20042f01b205212a200141a8016a2f0100212b200441a8056a200441bc086a200141aa016a109a0620042f01a805222c450d5c20042f01aa052132200141ca016a2f01002133200441a0056a200441bc086a200141cc016a109a0620042f01a0052234450d5d20042f01a205213b200141ec016a2f0100213c20044198056a200441bc086a200141ee016a109a0620042f019805223d450d5e20042f019a0521452001418e026a2f0100214620044190056a200441bc086a20014190026a109a0620042f0190052247450d5f20042f0192052150200141b0026a2f0100215120044188056a200441bc086a200141b2026a109a0620042f0188052252450d6020042f018a05215c200141d2026a2f0100215d20044180056a200441bc086a200141d4026a109a0620042f018005225e450d6120042f0182052169200141f4026a2f0100216a200441f8046a200441bc086a200141f6026a109a0620042f01f804226b450d6220042f01fa04217720014196036a2f01002178200441f0046a200441bc086a20014198036a109a06024020042f01f0042279450d0020042f01f2042186010240024020042802d809221120042802d409470d00201141016a2287012011490d960120114101742288012087012088012087014b1b228701410420870141044b1bad42387e220d422088a745410274218701200da72188010240024020110d00200441003602d00a0c010b200441043602d80a200420042802d0093602d00a2004201141386c3602d40a0b200441c00a6a208801208701200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602d0092004201141386e3602d40920042802d80921110b20042802d009201141386c6a221120860120890120791b2289013b013420112014208a0120131b228a013b010420112012360200201141326a20783b0100201141306a2077208b01206b1b228b013b01002011412e6a206a3b01002011412c6a2069208c01205e1b228c013b01002011412a6a205d3b0100201141286a205c208d0120521b228d013b0100201141266a20513b0100201141246a2050208e0120471b228e013b0100201141226a20463b0100201141206a2045208f01203d1b228f013b01002011411e6a203c3b01002011411c6a203b20900120341b2290013b01002011411a6a20333b0100201141186a2032209101202c1b2291013b0100201141166a202b3b0100201141146a202a20920120251b2292013b0100201141126a20243b0100201141106a2023209301201f1b2293013b01002011410e6a201e3b01002011410c6a201d209401201a1b2294013b01002011410a6a20193b0100201141086a201820950120161b2295013b0100201141066a20153b0100200420042802d80941016a3602d8090c050b20110d96010c94010b20004281808080203702000c90010b2002280200200441a00a6a10a0022211450d6220112802002112200441c0066a200441bc086a2001109a0620042f01c0062213450d6320042f01c206211420012f01202115200441b8066a200441bc086a200141226a109a0620042f01b8062216450d6420042f01ba062118200141c2006a2f01002119200441b0066a200441bc086a200141c4006a109a0620042f01b006221a450d6520042f01b206211d200141e4006a2f0100211e200441a8066a200441bc086a200141e6006a109a0620042f01a806221f450d6620042f01aa06212320014186016a2f01002124200441a0066a200441bc086a20014188016a109a0620042f01a0062225450d6720042f01a206212a200141a8016a2f0100212b20044198066a200441bc086a200141aa016a109a0620042f019806222c450d6820042f019a062132200141ca016a2f0100213320044190066a200441bc086a200141cc016a109a0620042f0190062234450d6920042f019206213b200141ec016a2f0100213c20044188066a200441bc086a200141ee016a109a0620042f018806223d450d6a20042f018a0621452001418e026a2f0100214620044180066a200441bc086a20014190026a109a0620042f0180062247450d6b20042f0182062150200141b0026a2f01002151200441f8056a200441bc086a200141b2026a109a0620042f01f8052252450d6c20042f01fa05215c200141d2026a2f0100215d200441f0056a200441bc086a200141d4026a109a0620042f01f005225e450d6d20042f01f2052169200141f4026a2f0100216a200441e8056a200441bc086a200141f6026a109a0620042f01e805226b450d6e20042f01ea05217720014196036a2f01002178200441e0056a200441bc086a20014198036a109a0620042f01e0052279450d6f20042f01e205218601200141b8036a2f0100218701200441d8056a200441bc086a200141ba036a109a06024020042f01d805228801450d0020042f01da052196010240024020042802e409221120042802e009470d00201141016a2297012011490d950120114101742298012097012098012097014b1b229701410420970141044b1bad423c7e220d422088a745410274219701200da72198010240024020110d00200441003602d00a0c010b200441043602d80a200420042802dc093602d00a20042011413c6c3602d40a0b200441c00a6a209801209701200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602dc0920042011413c6e3602e00920042802e40921110b20042802dc092011413c6c6a22112096012099012088011b2299013b013820112014209a0120131b229a013b010420112012360200201141366a2087013b0100201141346a208601209b0120791b229b013b0100201141326a20783b0100201141306a2077209c01206b1b229c013b01002011412e6a206a3b01002011412c6a2069209d01205e1b229d013b01002011412a6a205d3b0100201141286a205c209e0120521b229e013b0100201141266a20513b0100201141246a2050209f0120471b229f013b0100201141226a20463b0100201141206a204520a001203d1b22a0013b01002011411e6a203c3b01002011411c6a203b20a10120341b22a1013b01002011411a6a20333b0100201141186a203220a201202c1b22a2013b0100201141166a202b3b0100201141146a202a20a30120251b22a3013b0100201141126a20243b0100201141106a202320a401201f1b22a4013b01002011410e6a201e3b01002011410c6a201d20a501201a1b22a5013b01002011410a6a20193b0100201141086a201820a60120161b22a6013b0100201141066a20153b0100200420042802e40941016a3602e4090c040b20110d95010c93010b20004281808080203702000c8f010b2002280200200441a00a6a10a0022211450d6f20112802002112200441b8076a200441bc086a2001109a0620042f01b8072213450d7020042f01ba07211420012f01202115200441b0076a200441bc086a200141226a109a0620042f01b0072216450d7120042f01b2072118200141c2006a2f01002119200441a8076a200441bc086a200141c4006a109a0620042f01a807221a450d7220042f01aa07211d200141e4006a2f0100211e200441a0076a200441bc086a200141e6006a109a0620042f01a007221f450d7320042f01a207212320014186016a2f0100212420044198076a200441bc086a20014188016a109a0620042f0198072225450d7420042f019a07212a200141a8016a2f0100212b20044190076a200441bc086a200141aa016a109a0620042f019007222c450d7520042f0192072132200141ca016a2f0100213320044188076a200441bc086a200141cc016a109a0620042f0188072234450d7620042f018a07213b200141ec016a2f0100213c20044180076a200441bc086a200141ee016a109a0620042f018007223d450d7720042f01820721452001418e026a2f01002146200441f8066a200441bc086a20014190026a109a0620042f01f8062247450d7820042f01fa062150200141b0026a2f01002151200441f0066a200441bc086a200141b2026a109a0620042f01f0062252450d7920042f01f206215c200141d2026a2f0100215d200441e8066a200441bc086a200141d4026a109a0620042f01e806225e450d7a20042f01ea062169200141f4026a2f0100216a200441e0066a200441bc086a200141f6026a109a0620042f01e006226b450d7b20042f01e206217720014196036a2f01002178200441d8066a200441bc086a20014198036a109a0620042f01d8062279450d7c20042f01da06218601200141b8036a2f0100218701200441d0066a200441bc086a200141ba036a109a0620042f01d006228801450d7d20042f01d206219601200141da036a2f0100219701200441c8066a200441bc086a200141dc036a109a06024020042f01c806229801450d0020042f01ca0621a7010240024020042802f009221120042802ec09470d00201141016a22a8012011490d9401201141017422a90120a80120a90120a8014b1b22a801410420a80141044b1b22a80141ffffff1f7120a8014641027421a90120a80141067421a8010240024020110d00200441003602d00a0c010b200441043602d80a200420042802e8093602d00a200420114106743602d40a0b200441c00a6a20a80120a901200441d00a6a107d20042802c80a211120042802c00a4101460d01200420042802c40a3602e809200420114106763602ec0920042802f00921110b20042802e80920114106746a221120a70120aa012098011b22aa013b013c2011201420ab0120131b22ab013b0104201120123602002011413a6a2097013b0100201141386a20960120ac012088011b22ac013b0100201141366a2087013b0100201141346a20860120ad0120791b22ad013b0100201141326a20783b0100201141306a207720ae01206b1b22ae013b01002011412e6a206a3b01002011412c6a206920af01205e1b22af013b01002011412a6a205d3b0100201141286a205c20b00120521b22b0013b0100201141266a20513b0100201141246a205020b10120471b22b1013b0100201141226a20463b0100201141206a204520b201203d1b22b2013b01002011411e6a203c3b01002011411c6a203b20b30120341b22b3013b01002011411a6a20333b0100201141186a203220b401202c1b22b4013b0100201141166a202b3b0100201141146a202a20b50120251b22b5013b0100201141126a20243b0100201141106a202320b601201f1b22b6013b01002011410e6a201e3b01002011410c6a201d20b701201a1b22b7013b01002011410a6a20193b0100201141086a201820b80120161b22b8013b0100201141066a20153b0100200420042802f00941016a3602f0090c030b20110d94010c92010b20004281808080203702000c8e010b2002280200200441a00a6a10a0022211450d7d20112802002112200441b8086a200441bc086a2001109a0620042f01b8082213450d7e20042f01ba08211420012f01202115200441b0086a200441bc086a200141226a109a0620042f01b0082216450d7f20042f01b2082118200141c2006a2f01002119200441a8086a200441bc086a200141c4006a109a0620042f01a808221a450d800120042f01aa08211d200141e4006a2f0100211e200441a0086a200441bc086a200141e6006a109a0620042f01a008221f450d810120042f01a208212320014186016a2f0100212420044198086a200441bc086a20014188016a109a0620042f0198082225450d820120042f019a08212a200141a8016a2f0100212b20044190086a200441bc086a200141aa016a109a0620042f019008222c450d830120042f0192082132200141ca016a2f0100213320044188086a200441bc086a200141cc016a109a0620042f0188082234450d840120042f018a08213b200141ec016a2f0100213c20044180086a200441bc086a200141ee016a109a0620042f018008223d450d850120042f01820821452001418e026a2f01002146200441f8076a200441bc086a20014190026a109a0620042f01f8072247450d860120042f01fa072150200141b0026a2f01002151200441f0076a200441bc086a200141b2026a109a0620042f01f0072252450d870120042f01f207215c200141d2026a2f0100215d200441e8076a200441bc086a200141d4026a109a0620042f01e807225e450d880120042f01ea072169200141f4026a2f0100216a200441e0076a200441bc086a200141f6026a109a0620042f01e007226b450d890120042f01e207217720014196036a2f01002178200441d8076a200441bc086a20014198036a109a0620042f01d8072279450d8a0120042f01da07218601200141b8036a2f0100218701200441d0076a200441bc086a200141ba036a109a0620042f01d007228801450d8b0120042f01d207219601200141da036a2f0100219701200441c8076a200441bc086a200141dc036a109a0620042f01c807229801450d8c0120042f01ca0721a701200141fc036a2f010021a801200441c0076a200441bc086a200141fe036a109a0620042f01c00722a901450d0220042f01c20721b901024020042802fc09221120042802f809470d00201141016a22ba012011490d9101201141017422bb0120ba0120bb0120ba014b1b22ba01410420ba0141044b1bad42c4007e220d422088a74541027421ba01200da721bb010240024020110d00200441003602d00a0c010b200441043602d80a200420042802f4093602d00a2004201141c4006c3602d40a0b200441c00a6a20bb0120ba01200441d00a6a107d20042802c80a211120042802c00a4101460d02200420042802c40a3602f4092004201141c4006e3602f80920042802fc0921110b20042802f409201141c4006c6a221120b90120bc0120a9011b22bc013b01402011201420bd0120131b22bd013b0104201120123602002011413e6a20a8013b01002011413c6a20a70120be012098011b22be013b01002011413a6a2097013b0100201141386a20960120bf012088011b22bf013b0100201141366a2087013b0100201141346a20860120c00120791b22c0013b0100201141326a20783b0100201141306a207720c101206b1b22c1013b01002011412e6a206a3b01002011412c6a206920c201205e1b22c2013b01002011412a6a205d3b0100201141286a205c20c30120521b22c3013b0100201141266a20513b0100201141246a205020c40120471b22c4013b0100201141226a20463b0100201141206a204520c501203d1b22c5013b01002011411e6a203c3b01002011411c6a203b20c60120341b22c6013b01002011411a6a20333b0100201141186a203220c701202c1b22c7013b0100201141166a202b3b0100201141146a202a20c80120251b22c8013b0100201141126a20243b0100201141106a202320c901201f1b22c9013b01002011410e6a201e3b01002011410c6a201d20ca01201a1b22ca013b01002011410a6a20193b0100201141086a201820cb0120161b22cb013b0100201141066a20153b0100200420042802fc0941016a3602fc090b200ca72211450d8e01201141226c450d8e010c8d010b20110d90010c8e010b20004281808080203702000c8a010b200ca72211450d8b01201141226c0d8a010c8b010b20004281808080103702000c88010b20004281808080203702000c87010b20004281808080203702000c86010b20004281808080203702000c85010b20004281808080203702000c84010b20004281808080203702000c83010b20004281808080203702000c82010b20004281808080203702000c81010b20004281808080203702000c80010b20004281808080203702000c7f0b20004281808080203702000c7e0b20004281808080203702000c7d0b20004281808080203702000c7c0b20004281808080203702000c7b0b20004281808080203702000c7a0b20004281808080203702000c790b20004281808080203702000c780b20004281808080203702000c770b20004281808080203702000c760b20004281808080203702000c750b20004281808080203702000c740b20004281808080203702000c730b20004281808080203702000c720b20004281808080203702000c710b20004281808080203702000c700b20004281808080203702000c6f0b20004281808080203702000c6e0b20004281808080203702000c6d0b20004281808080203702000c6c0b20004281808080203702000c6b0b20004281808080203702000c6a0b20004281808080203702000c690b20004281808080203702000c680b20004281808080203702000c670b20004281808080203702000c660b20004281808080203702000c650b20004281808080203702000c640b20004281808080203702000c630b20004281808080203702000c620b20004281808080203702000c610b20004281808080203702000c600b20004281808080203702000c5f0b20004281808080203702000c5e0b20004281808080203702000c5d0b20004281808080203702000c5c0b20004281808080203702000c5b0b20004281808080203702000c5a0b20004281808080203702000c590b20004281808080203702000c580b20004281808080203702000c570b20004281808080203702000c560b20004281808080203702000c550b20004281808080203702000c540b20004281808080203702000c530b20004281808080203702000c520b20004281808080203702000c510b20004281808080203702000c500b20004281808080203702000c4f0b20004281808080203702000c4e0b20004281808080203702000c4d0b20004281808080203702000c4c0b20004281808080203702000c4b0b20004281808080203702000c4a0b20004281808080203702000c490b20004281808080203702000c480b20004281808080203702000c470b20004281808080203702000c460b20004281808080203702000c450b20004281808080203702000c440b20004281808080203702000c430b20004281808080203702000c420b20004281808080203702000c410b20004281808080203702000c400b20004281808080203702000c3f0b20004281808080203702000c3e0b20004281808080203702000c3d0b20004281808080203702000c3c0b20004281808080203702000c3b0b20004281808080203702000c3a0b20004281808080203702000c390b20004281808080203702000c380b20004281808080203702000c370b20004281808080203702000c360b20004281808080203702000c350b20004281808080203702000c340b20004281808080203702000c330b20004281808080203702000c320b20004281808080203702000c310b20004281808080203702000c300b20004281808080203702000c2f0b20004281808080203702000c2e0b20004281808080203702000c2d0b20004281808080203702000c2c0b20004281808080203702000c2b0b20004281808080203702000c2a0b20004281808080203702000c290b20004281808080203702000c280b20004281808080203702000c270b20004281808080203702000c260b20004281808080203702000c250b20004281808080203702000c240b20004281808080203702000c230b20004281808080203702000c220b20004281808080203702000c210b20004281808080203702000c200b20004281808080203702000c1f0b20004281808080203702000c1e0b20004281808080203702000c1d0b20004281808080203702000c1c0b20004281808080203702000c1b0b20004281808080203702000c1a0b20004281808080203702000c190b20004281808080203702000c180b20004281808080203702000c170b20004281808080203702000c160b20004281808080203702000c150b20004281808080203702000c140b20004281808080203702000c130b20004281808080203702000c120b20004281808080203702000c110b20004281808080203702000c100b20004281808080203702000c0f0b20004281808080203702000c0e0b20004281808080203702000c0d0b20004281808080203702000c0c0b20004281808080203702000c0b0b20004281808080203702000c0a0b20004281808080203702000c090b20004281808080203702000c080b20004281808080203702000c070b20004281808080203702000c060b20004281808080203702000c050b20004281808080203702000c040b20004281808080203702000c030b20004281808080203702000c020b20004281808080203702000c010b20004281808080203702000b0240200ca72207450d00200741226c450d002001102e0b02402003450d002006412c6a210103400240200141046a2802002206450d00200641226c450d002001280200102e0b2001412c6a2101200341546a22030d000b0b02402008450d002008412c6c450d002005102e0b200441c0086a109b060c070b2001102e0b200341546a21032006412c6a22062007470d010c040b0b1038000b1036000b20072001460d00034020012203412c6a21010240200341046a2802002206450d00200641226c450d002003280200102e0b20072001470d000b0b02402008450d002008412c6c450d002005102e0b200041046a200441c0086a41c00110e9081a200041003602000b200441e00a6a24000bc60101067f02400240200128020022012802042203450d00200128020021040340200341046a210520032f015e22064102742101410021070240024003402001450d0120022005280200412010ec082208450d022001417c6a2101200741016a2107200541046a21052008417f4a0d000b2007417f6a21060b2004450d022004417f6a2104200320064102746a41e0006a28020021030c010b0b200320074102746a41306a2802002205418080044921010c010b410021010b200020053b0102200020013b01000bf70301017f0240200041046a28020041ffffffff0171450d002000280200102e0b0240200041106a2802002201450d002001410c6c450d00200028020c102e0b02402000411c6a28020041ffffffff0071450d002000280218102e0b0240200041286a2802002201450d00200141146c450d002000280224102e0b0240200041346a2802002201450d00200141186c450d002000280230102e0b0240200041c0006a2802002201450d002001411c6c450d00200028023c102e0b0240200041cc006a28020041ffffff3f71450d002000280248102e0b0240200041d8006a2802002201450d00200141246c450d002000280254102e0b0240200041e4006a2802002201450d00200141286c450d002000280260102e0b0240200041f0006a2802002201450d002001412c6c450d00200028026c102e0b0240200041fc006a2802002201450d00200141306c450d002000280278102e0b024020004188016a2802002201450d00200141346c450d00200028028401102e0b024020004194016a2802002201450d00200141386c450d00200028029001102e0b0240200041a0016a2802002201450d002001413c6c450d00200028029c01102e0b0240200041ac016a28020041ffffff1f71450d0020002802a801102e0b0240200041b8016a2802002201450d00200141c4006c450d0020002802b401102e0b0b8c5103037f017e017f230041106b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000e18000102030405060708090a0b0c0d0e0f1011121314151617180b200241003a00002001200241011074024002400240024002400240200041086a2d00000e060001020304051d0b200241003a00002001200241011074200041106a290300200041186a2d0000200041196a2d0000200110be030c1c0b200241013a000020012002410110742000410c6a2d00002000410d6a2d00002000410e6a2d00002001109d06200041186a290300200041206a2d0000200041216a2d0000200110be030c1b0b200241023a000020012002410110740c1a0b200241033a000020012002410110742001200041096a412010740c190b200241043a000020012002410110742001200041096a412010740c180b200241053a000020012002410110742001200041096a412010744120102c2203450d1820024220370204200220033602002002200041296a41201074200120022802002200200228020810742002280204450d172000102e0c170b200241013a00002001200241011074024002400240200041046a2802000e03000102190b200241003a000020012002410110742002200041086a280200360200200120024104107420022000410c6a28020036020020012002410410740c180b200241013a000020012002410110742002200041086a280200360200200120024104107420022000410c6a28020036020020012002410410740c170b200241023a000020012002410110742002200041086a280200360200200120024104107420022000410c6a280200360200200120024104107402400240200041106a28020022030d00200241003a000020012002410110740c010b200241013a00002001200241011074200041186a28020022042001107620012003200410740b024020002d001c4106460d00200241013a0000200120024101107420002d001c2000411d6a2d00002000411e6a2d00002001109d060c170b200241003a000020012002410110740c160b200241043a00002001200241011074024002400240200041046a2d00000e03000102180b200241003a000020012002410110742001200041056a412010742002200041286a28020036020020012002410410740c170b200241013a000020012002410110742002200041086a28020036020020012002410410740c160b200241023a000020012002410110742002200041286a28020036020020012002410410742001200041056a412010740c150b200241053a0000200120024101107402400240024002400240024002400240200041086a2d00000e080001020304050607000b200241003a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c1b0b200241013a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c1a0b200241023a000020012002410110742001200041096a412010742001200041296a41201074200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010740c190b200241033a000020012002410110742001200041096a41201074200041306a29030021052002200041386a290300370308200220053703002001200241101074200041c0006a29030021052002200041c8006a2903003703082002200537030020012002411010740c180b200241043a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c170b200241053a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c160b200241063a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c150b200241073a000020012002410110742001200041096a412010742001200041296a41201074200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010740240200041c9006a2d00004101460d00200241003a000020012002410110740c150b200241013a000020012002410110740c140b200241073a00002001200241011074024002400240024002400240024002400240200041086a2d00000e090001020304050607081c0b200241003a0000200120024101107420022000410c6a2802003602002001200241041074200041106a29030021052002200041186a290300370308200220053703002001200241101074200041206a29030021052002200041286a2903003703082002200537030020012002411010740c1b0b200241013a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c1a0b200241023a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c190b200241033a0000200120024101107420022000410c6a28020036020020012002410410740c180b200241043a000020012002410110740c170b200241053a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c160b200241063a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c150b200241073a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c140b200241083a000020012002410110742001200041096a412010742001200041296a412010740c130b200241083a00002001200241011074200241003a000020012002410110742001200041106a41101074200041046a28020021032000410c6a28020022042001107620012003200410742002200041206a2d00003a000020012002410110740c120b200241093a00002001200241011074200241003a000020012002410110742002200041046a28020036020020012002410410740c110b2002410b3a00002001200241011074024002400240200041046a2802000e03000102130b200241003a00002001200241011074200041086a2802002103200041106a280200220020011076200041286c2200450d12200320006a2100034020012003412010742002200341206a2903003703002001200241081074200341286a22032000470d000c130b0b200241013a000020012002410110740c110b200241023a000020012002410110740c100b2002410c3a00002001200241011074024002400240200041046a2d00000e03000102120b200241003a000020012002410110742001200041056a412010740c110b200241013a000020012002410110740c100b200241023a00002001200241011074200041086a2802002103200041106a280200220020011076200041d0006c2200450d0f03402003200110a101200341d0006a2103200041b07f6a22000d000c100b0b2002410e3a00002001200241011074024002400240024002400240024002400240024002400240024002400240024002400240200041086a2d00000e12000102030405060708090a0b0c0d0e0f1011200b200241003a0000200120024101107420022000410c6a2802003602002001200241041074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c1f0b200241013a0000200120024101107420022000410c6a2802003602002001200241041074200041206a29030021052002200041286a290300370308200220053703002001200241101074200041106a2802002103200041186a2802002200200110762000450d1e2000410574210003402001200341201074200341206a2103200041606a22000d000c1f0b0b200241023a000020012002410110740c1d0b200241033a0000200120024101107420022000410c6a2802003602002001200241041074024002400240200041096a2d00000e030001021f0b200241003a000020012002410110740c1e0b200241013a000020012002410110740c1d0b200241023a000020012002410110740c1c0b200241043a0000200120024101107420022000410c6a28020036020020012002410410740c1b0b200241053a0000200120024101107420022000410c6a28020036020020012002410410740c1a0b200241063a0000200120024101107420022000410c6a28020036020020012002410410740c190b200241073a0000200120024101107420022000410c6a28020036020020012002410410742002200041096a2d00003a000020012002410110740c180b200241083a000020012002410110742001200041096a412010742001200041296a412010740c170b200241093a000020012002410110742001200041096a412010740c160b2002410a3a000020012002410110742001200041096a412010744120102c2203450d1620024220370204200220033602002002200041296a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028024c36020020012002410410740c150b2002410b3a000020012002410110744120102c2203450d15200041296a210420024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2001200441201074200029035021052002200041d8006a2903003703082002200537030020012002411010740c140b2002410c3a000020012002410110744120102c2203450d14200041296a210420024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2001200441201074200029035021052002200041d8006a2903003703082002200537030020012002411010740c130b2002410d3a000020012002410110744120102c2203450d1320024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022c36020020012002410410740c120b2002410e3a000020012002410110744120102c2203450d1220024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022c36020020012002410410740c110b2002410f3a000020012002410110744120102c2203450d11200041c9006a2104200041296a210620024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2001200641201074200029037021052002200041f8006a29030037030820022005370300200120024110107420012004412010740c100b200241103a000020012002410110742001200041096a412010740c0f0b200241113a000020012002410110744120102c2203450d0f20024220370204200220033602002002200041096a41201074200120022802002200200228020810742002280204450d0e2000102e0c0e0b2002410f3a000020012002410110740240024002400240024002400240200041046a2d00000e0700010203040506140b200241003a000020012002410110742001200041056a412010742002200041c8006a28020036020020012002410410744120102c2203450d1420024220370204200220033602002002200041256a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028024c36020020012002410410740c130b200241013a000020012002410110742001200041056a412010744120102c2203450d1320024220370204200220033602002002200041256a412010742001200228020022032002280208107402402002280204450d002003102e0b200220002d00453a000020012002410110742002200028024836020020012002410410742002200028024c36020020012002410410740c120b200241023a000020012002410110744120102c2203450d1220024220370204200220033602002002200041056a41201074200120022802002200200228020810742002280204450d112000102e0c110b200241033a000020012002410110744120102c2203450d1120024220370204200220033602002002200041056a41201074200120022802002200200228020810742002280204450d102000102e0c100b200241043a000020012002410110744120102c2203450d1020024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b024020002d00284106460d00200241013a0000200120024101107420002d0028200041296a2d00002000412a6a2d00002001109d060c100b200241003a000020012002410110740c0f0b200241053a000020012002410110744120102c2203450d0f20024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b024020002d00284106460d00200241013a0000200120024101107420002d0028200041296a2d00002000412a6a2d00002001109d060c0f0b200241003a000020012002410110740c0e0b200241063a000020012002410110744120102c2203450d0e20024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022836020020012002410410742002200028022c36020020012002410410740c0d0b200241103a000020012002410110740240024002400240024002400240200041046a2d00000e0700010203040506130b200241003a000020012002410110742001200041056a412010742002200041c8006a28020036020020012002410410744120102c2203450d1320024220370204200220033602002002200041256a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028024c36020020012002410410740c120b200241013a000020012002410110742001200041056a412010744120102c2203450d1220024220370204200220033602002002200041256a412010742001200228020022032002280208107402402002280204450d002003102e0b200220002d00453a000020012002410110742002200028024836020020012002410410742002200028024c36020020012002410410740c110b200241023a000020012002410110744120102c2203450d1120024220370204200220033602002002200041056a41201074200120022802002200200228020810742002280204450d102000102e0c100b200241033a000020012002410110744120102c2203450d1020024220370204200220033602002002200041056a41201074200120022802002200200228020810742002280204450d0f2000102e0c0f0b200241043a000020012002410110744120102c2203450d0f20024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b024020002d00284106460d00200241013a0000200120024101107420002d0028200041296a2d00002000412a6a2d00002001109d060c0f0b200241003a000020012002410110740c0e0b200241053a000020012002410110744120102c2203450d0e20024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b024020002d00284106460d00200241013a0000200120024101107420002d0028200041296a2d00002000412a6a2d00002001109d060c0e0b200241003a000020012002410110740c0d0b200241063a000020012002410110744120102c2203450d0d20024220370204200220033602002002200041056a412010742001200228020022032002280208107402402002280204450d002003102e0b2002200028022836020020012002410410742002200028022c36020020012002410410740c0c0b200241113a000020012002410110740240024002400240024002400240200041086a2d00000e0700010203040506120b200241003a000020012002410110742000410c6a2802002103200041146a280200220020011076200041306c2200450d11200320006a210003402001200341201074200341206a29030021052002200341286a290300370308200220053703002001200241101074200341306a22032000470d000c120b0b200241013a000020012002410110740c100b200241023a000020012002410110740c0f0b200241033a000020012002410110742001200041096a412010740c0e0b200241043a000020012002410110742001200041096a412010740c0d0b200241053a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c0c0b200241063a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c0b0b200241123a0000200120024101107402400240024002400240024020002d00010e06000102030405100b200241003a000020012002410110740c0f0b200241013a000020012002410110740c0e0b200241023a000020012002410110740c0d0b200241033a000020012002410110740c0c0b200241043a000020012002410110740c0b0b200241053a000020012002410110740c0a0b200241133a000020012002410110740240024002400240024002400240200041086a2d00000e0700010203040506100b200241003a0000200120024101107420022000410c6a28020036020020012002410410740c0f0b200241013a00002001200241011074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c0e0b200241023a0000200120024101107420022000412c6a2802003602002001200241041074200041306a29030021052002200041386a2903003703082002200537030020012002411010742001200041096a412010740c0d0b200241033a0000200120024101107420022000410c6a2802003602002001200241041074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c0c0b200241043a00002001200241011074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c0b0b200241053a00002001200241011074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c0a0b200241063a00002001200241011074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c090b200241183a00002001200241011074200241003a000020012002410110742001200041186a412010742001200041386a41141074200041086a29030021052002200041106a2903003703082002200537030020012002411010740c080b200241193a00002001200241011074200041096a21030240200041086a2d00004101460d00200241003a000020012002410110742001200341201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c080b200241013a0000200120024101107420012003412010740c070b2002411a3a000020012002410110740240200041086a2d00004106460d00200241003a000020012002410110742002200041046a280200360200200120024104107420002d0008200041096a2d00002000410a6a2d00002001109d060c070b200241013a000020012002410110740c060b2002411c3a000020012002410110740240024002400240024002400240024002400240200041086a2d00000e0a000102030405060708090f0b200241003a000020012002410110742001200041096a412010740c0e0b200241013a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c0d0b200241023a000020012002410110742001200041096a41201074200041306a29030021052002200041386a2903003703082002200537030020012002411010740c0c0b200241033a000020012002410110742001200041096a4120107420022000412c6a28020036020020012002410410740c0b0b200241043a000020012002410110742001200041096a4120107420022000412c6a28020036020020012002410410740c0a0b200241053a000020012002410110742001200041096a4120107420022000412c6a28020036020020012002410410740c090b200241063a0000200120024101107420022000410c6a28020036020020012002410410740c080b200241073a000020012002410110742001200041096a412010742001200041296a41201074200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010740c070b200241083a000020012002410110742001200041096a412010742001200041296a41201074200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010740c060b200241093a000020012002410110742001200041096a412010742001200041296a41201074200041d0006a29030021052002200041d8006a2903003703082002200537030020012002411010740c050b2002411d3a00002001200241011074024002400240200041046a2d00000e03000102070b200241003a000020012002410110740240200041086a2d00004106460d00200241013a0000200120024101107420002d0008200041096a2d00002000410a6a2d00002001109d060c070b200241003a000020012002410110740c060b200241013a000020012002410110742001200041056a412010742001200041256a412010740240024002400240024002400240200041c5006a2d00000e0700010203060405060b200241003a000020012002410110740c050b200241013a000020012002410110740c040b200241023a000020012002410110740c030b200241033a000020012002410110740c020b200241053a000020012002410110740c010b200241063a000020012002410110740b200220002f01463b010020012002410210740c050b200241023a000020012002410110742001200041056a412010742001200041256a412010744120102c2203450d0520024220370204200220033602002002200041c5006a41201074200120022802002200200228020810742002280204450d042000102e0c040b2002411e3a000020012002410110740240024002400240200041046a2d00000e0400010203000b200241003a000020012002410110742001200041056a412010742001200041256a412010742001200041c5006a412010740c060b200241013a000020012002410110742001200041056a412010742002200041e8006a28020036020020012002410410742002200041ec006a28020036020020012002410410742001200041256a412010742001200041c5006a412010740c050b200241023a000020012002410110742001200041056a412010742002200041e8006a28020036020020012002410410742002200041ec006a28020036020020012002410410742001200041256a412010742001200041c5006a412010740240200041f0006a2d00004106460d00200241013a0000200120024101107420002d0070200041f1006a2d0000200041f2006a2d00002001109d060c050b200241003a000020012002410110740c040b200241033a000020012002410110742001200041056a412010742002200041e8006a28020036020020012002410410742002200041ec006a28020036020020012002410410742001200041256a412010742001200041c5006a412010740c030b200241223a000020012002410110740240024002400240024002400240200041086a2d00000e0700010203040506090b200241003a0000200120024101107420022000410c6a28020036020020012002410410740c080b200241013a0000200120024101107420022000410c6a2802003602002001200241041074200041106a29030021052002200041186a2903003703082002200537030020012002411010740c070b200241023a0000200120024101107420022000410c6a28020036020020012002410410740c060b200241033a0000200120024101107420022000412c6a28020036020020012002410410742001200041096a412010740c050b200241043a0000200120024101107420022000412c6a2802003602002001200241041074200041306a29030021052002200041386a2903003703082002200537030020012002411010742001200041096a412010740c040b200241053a0000200120024101107420022000410c6a28020036020020012002410410740c030b200241063a0000200120024101107420022000410c6a28020036020020012002410410740c020b200241233a0000200120024101107402400240024002400240200041086a2d00000e050001020304060b200241003a000020012002410110744120102c2203450d0620024220370204200220033602002002200041096a41201074200120022802002200200228020810742002280204450d052000102e0c050b200241013a000020012002410110744120102c2203450d0520024220370204200220033602002002200041096a41201074200120022802002200200228020810742002280204450d042000102e0c040b200241023a000020012002410110744120102c2203450d04200041296a210420024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2001200441201074200029035021052002200041d8006a2903003703082002200537030020012002411010740c030b200241033a000020012002410110744120102c2203450d0320024220370204200220033602002002200041096a41201074200120022802002200200228020810742002280204450d022000102e0c020b200241043a000020012002410110744120102c2203450d02200041296a210420024220370204200220033602002002200041096a412010742001200228020022032002280208107402402002280204450d002003102e0b2001200441201074200029035021052002200041d8006a2903003703082002200537030020012002411010740c010b200241243a000020012002410110740240024002400240024002400240200041046a2d00000e06000102030405070b200241003a00002001200241011074024002400240200041056a2d00000e03000102090b200241003a000020012002410110740c080b200241013a000020012002410110740c070b200241023a000020012002410110740c060b200241013a000020012002410110740240200041056a2d000022004103470d00200241003a000020012002410110740c060b200241013a0000200120024101107402400240024020000e03000102080b200241003a000020012002410110740c070b200241013a000020012002410110740c060b200241023a000020012002410110740c050b200241023a000020012002410110742001200041056a412010740c040b200241033a000020012002410110742001200041056a412010740c030b200241043a000020012002410110742002200041086a2802003602000c010b200241053a000020012002410110742002200041086a2802003602000b20012002410410740b200241106a24000f0b1036000bd20101017f230041106b220424000240024002400240024002400240200041ff01710e06000102030405060b200441003a000f20032004410f6a410110740c050b200441013a000f20032004410f6a410110740c040b200441023a000f20032004410f6a410110740c030b200441033a000f20032004410f6a41011074200420013a000f20032004410f6a41011074200420023a000f20032004410f6a410110740c020b200441043a000f20032004410f6a410110740c010b200441053a000f20032004410f6a410110740b200441106a24000b1300200041063602042000418cc7cb003602000b130020004103360204200041c4fcc4003602000b130020004103360204200041f0e6c2003602000b130020004108360204200041ec82c8003602000b1300200041093602042000419cdec6003602000b130020004101360204200041c8aac0003602000b130020004101360204200041ccadc0003602000b130020004103360204200041e0a7c0003602000b130020004103360204200041c883c9003602000b130020004112360204200041b897cb003602000b130020004107360204200041e4edc9003602000b13002000410736020420004184aec2003602000b130020004106360204200041b8b9cc003602000b130020004107360204200041d894c4003602000b13002000410136020420004198f9c1003602000b130020004102360204200041d8eac7003602000b130020004102360204200041e8afc0003602000b13002000410a360204200041f8bec3003602000b13002000410336020420004184fbc0003602000b130020004104360204200041e4f9c3003602000b13002000410736020420004198e4c0003602000b1300200041053602042000419ce3c7003602000b130020004106360204200041d4afc8003602000b7201017f200028020022012001280200417f6a3602000240200028020022012802000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200028020041046a22012001280200417f6a3602002000280200220041046a2802000d002000102e0b0b980301037f0240200028020022022802082001200228020c28020c110100450d00200041286a2d0000210002400240200128020022024117470d00024002400240024020012d0004417e6a0e050001020403040b2000450d0320012d0025220341ff01712000460d034101210420004101470d05200341ff0171450d050c040b2000450d0220012d0025220341ff01712000460d024101210420004101470d04200341ff0171450d040c030b20000d0341010f0b20000d0241010f0b4101210402400240024002400240024020000e0706010203000405060b000b2002411a4b0d05410120027441cfffbf3f710d04024020024104460d0020024114470d0641012104200141086a280200417f6a41024f0d060c050b20012d0004220141054b0d05410121044101200174412a71450d050c040b2002411a4b0d0441012002744180c0973171450d040c030b200241154b0d034101200274418085800171450d030c020b02402002416b6a0e020200030b200141086a2d0000410a470d020c010b20024117470d0120012d00044109470d010b20040f0b41000b7d01017f2000200110b6062102200028020022012001280200417f6a3602000240200028020022012802000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200028020041046a22012001280200417f6a3602002000280200220041046a2802000d002000102e0b20020bb51302117f097e230041c0026b2202240020024198016a10f4040240024020022d0098014101460d002000410110f0060c010b200241e8016a22034200370300200241e0016a22044200370300200241d0016a41086a22054200370300200242003703d00120024180026a41a5fec600411a108102200520024180026a41086a220629000037030020022002290080023703d00120024180026a4194c5c800410e10810220032006290000370300200420022900800237030020024190016a200241d0016a4120108e022002280294012103200228029001210520024180026a200141306a1097062003410020051b21032002280288022105024020022802840241808080807872418080808078460d00200228028002102e0b024020032005460d002000410210f0060c010b200241d0016a41186a22064200370300200241d0016a41106a22074200370300200241d0016a41086a22054200370300200242003703d00120024180026a41a5fec600411a108102200520024180026a41086a220329000037030020022002290080023703d00120024180026a4184c4c800410e108102200441086a2003290000370000200420022900800237000020024180026a200241d0016a10ab05200241a0016a41086a22042003290300370300200241a0016a41106a220820024180026a41106a2209290300370300200241a0016a41186a220a20024180026a41186a220b290300370300200241a0016a41206a220c20024180026a41206a220d290300370300200241a0016a41286a220e20024180026a41286a220f29030037030020022002290380023703a001024020022d00bc024103460d0020022802b002211020022802b402211120022802b8022112200241d0016a41286a200141286a290300370300200241d0016a41206a200141206a2903003703002006200141186a2903003703002007200141106a2903003703002005200141086a290300370300200220012903003703d001200f200e290300370300200d200c290300370300200b200a2903003703002009200829030037030020032004290300370300200220022903a0013703800202400240024002404106102c2201450d0020024180016a200229038002221320024180026a41086a2903002214428094ebdc03420010e608200241f0006a20132014428094ebdc03420010e708200241e0006a2002290370200241f0006a41086a29030042a0c21e420010e808200241d0016a41086a290300211520022903d00121160240024020022903602217200229038001221842d00f80a7201842a0c21e7e428094ebdc03824200526aad7c2218200241e0006a41086a2903002018201754ad7c2217844200520d00417f20162013852015201485844200522016201354201520145420152014511b1b21040c010b0240427f201320187c221920192013542204201420177c2004ad7c221920145420192014511b22041b221a4200201320187d221b201b201356201420177d2013201854ad7d221820145620182014511b22031b221b56427f201920041b22174200201820031b22185620172018511b0d00417f20162013852015201485844200522016201354201520145420152014511b1b21040c010b4100210402400240417f2016201b852015201885844200522016201b54201520185420152018511b1b41016a0e03000201020b417f41002016201a54201520175420152017511b1b21040c010b2016201a56201520175620152017511b21040b200120043a00012001201620135a201520145a20152014511b3a0000200241306a200229039002221320024180026a41186a2903002214428094ebdc03420010e608200241d0006a20132014428094ebdc03420010e708200241c0006a2002290350200241d0006a41086a29030042a0c21e420010e808200241d0016a41186a290300211520022903e001211602400240200229034022172002290330221842d00f80a7201842a0c21e7e428094ebdc03824200526aad7c2218200241c0006a41086a2903002018201754ad7c22178450450d00417f20162013852015201485844200522016201354201520145420152014511b1b21040c010b0240427f201320187c221920192013542204201420177c2004ad7c221920145420192014511b22041b221a4200201320187d221b201b201356201420177d2013201854ad7d221820145620182014511b22031b221b56427f201920041b22174200201820031b22185620172018511b0d00417f20162013852015201485844200522016201354201520145420152014511b1b21040c010b4100210402400240417f2016201b852015201885844200522016201b54201520185420152018511b1b41016a0e03010200020b2016201a56201520175620152017511b21040c010b417f41002016201a54201520175420152017511b1b21040b200120043a00032001201620135a201520145a20152014511b3a0002200220022903a002221320024180026a41286a2903002214428094ebdc03420010e608200241206a20132014428094ebdc03420010e708200241106a2002290320200241206a41086a29030042a0c21e420010e808200241d0016a41286a290300211520022903f001211602400240200229031022172002290300221842d00f80a7201842a0c21e7e428094ebdc03824200526aad7c2218200241106a41086a2903002018201754ad7c221784500d000240427f201320187c221920192013542204201420177c2004ad7c221920145420192014511b22041b221a4200201320187d221b201b201356201420177d2013201854ad7d221820145620182014511b22031b221b56427f201920041b22174200201820031b22185620172018511b0d00417f20162013852015201485844200522016201354201520145420152014511b1b21040c020b4100210402400240417f2016201b852015201885844200522016201b54201520185420152018511b1b41016a0e03010300030b2016201a56201520175620152017511b21040c020b417f41002016201a54201520175420152017511b1b21040c010b417f20162013852015201485844200522016201354201520145420152014511b1b21040b200120043a00052001201620135a201520145a20152014511b3a00044100210520012c00010e020102030b1036000b20012d0000450d01024020012c00030e020001020b20012d0002450d0120012d000541ff014621050c010b410121050b2001102e02402012450d0020124106742104201041346a21010340024020012802002203450d00200341306c450d002001417c6a280200102e0b200141c0006a2101200441406a22040d000b0b0240201141ffffff1f71450d002010102e0b20050d002000410310f0060c010b200041063a00000b200241c0026a24000bdc2204057f027e157f097e23004190056b22022400200241306a200141306a41c00110e9081a200241f0016a41286a200141286a290300370300200241f0016a41206a200141206a290300370300200241f0016a41186a200141186a290300370300200241f0016a41106a200141106a290300370300200241f0016a41086a200141086a290300370300200220012903003703f00120012802f0012103200241a0046a41186a22044200370300200241a0046a41106a22014200370300200241a0046a41086a22054200370300200242003703a004200241e0026a41a5fec600411a1081022005200241e0026a41086a2206290000370300200220022900e0023703a004200241e0026a4180c3c800410510810220042006290000370300200120022900e002370300200241286a200241a0046a4120108e020240024002402003200228022c410120022802281b460d0020004281808080c0013703000c010b200241a0026a200241306a109706200442003703002001420037030020054200370300200242003703a004200241e0026a41a5fec600411a10810220052006290000370300200220022900e0023703a004200241e0026a4194c5c800410e108102200141086a2006290000370000200120022900e002370000200241206a200241a0046a4120108e020240024002400240024002402002280220450d00024020022802a80220022802242204460d0020004281808080d0003703000c020b200241e0026a10f504024020022802e0022201450d00200241c0046a41086a200241f4026a28020022053602002002200241ec026a29020022073703c004200220022902e40222083702b402200220013602b002200241c0026a41086a2005360200200220073703c002200242003702d40202402008422088a72205450d00200541386c2106200141086a2101410021050340200241e0026a41186a200141186a290000370300200241e0026a41106a200141106a290000370300200241e0026a41086a200141086a290000370300200220012900003703e002200141386a2101200241d0026a200241e0026a200510a402200541016a2105200641486a22060d000b0b20022802a402210920022802a002210a024002402004450d000240024020022802c802200a2f010022014b0d0041002101410a210b0c010b2002418c056a41026a20022802c00220014105746a220141026a2d00003a000020024180056a200141176a29000037030020024188056a2001411f6a2d00003a0000200220012f00003b018c052002200129000f3703f804200129000721072001280003210541012101410d210b0b200241c0046a41086a2206200241f8046a41086a290300370300200241c0046a41106a2203200241f8046a41106a2d00003a0000200220022903f80422083703e004200220022f018c053b01a004200220083703c00420022002418e056a2d00003a00a204200220073700a704200220053600a304200241bf046a20032d00003a0000200241b7046a2006290300370000200220022903c0043700af042001450d01200241e0026a41186a2201200241a0046a41186a290300370300200241e0026a41106a200241a0046a41106a290300370300200241e0026a41086a200241a0046a41086a290300370300200220022903a0043703e0024120102c220c450d06200c20022903e002370000200c41186a2001290300370000200c41106a200241e0026a41106a290300370000200c41086a200241e0026a41086a2903003700000240024020044101460d00200241af046a210d0240024020022802c802200a2f010222014b0d0041002106410a210b0c010b2002418c056a41026a20022802c00220014105746a220141026a2d00003a000020024180056a200141176a29000037030020024188056a2001411f6a2d00003a0000200220012f00003b018c052002200129000f3703f8042001290007210720012800032103410121060b200241e0026a41086a2201200241f8046a41086a220e290300370300200241e0026a41106a2205200241f8046a41106a220f2d00003a0000200220022903f80422083703e004200220022f018c053b01a004200220083703e00220022002418c056a41026a22102d00003a00a204200220073700a704200220033600a304200d20022903e002370000200d41086a22112001290300370000200d41106a221220052d00003a000020060d010b41012104410121130c080b200a41046a2114200241c0046a41186a2215200241a0046a41186a2216290300370300200241c0046a41106a2217200241a0046a41106a2218290300370300200241c0046a41086a2219200241a0046a41086a221a290300370300200220022903a0043703c0042004410174417c6a21034120211b41022113410121040340200241e0026a41186a221c20152903003703002005201729030037030020012019290300370300200220022903c0043703e00202400240024002402013417f6a2004470d00200441016a22062004490d0a2004410174221d2006201d20064b1b22064104200641044b1b220641ffffff3f71200646211d200641057421060240024020040d00200241003602a0040c010b200241013602a8042002200c3602a004200220044105743602a4040b200241f8046a2006201d200241a0046a107d200228028005210620022802f8044101460d0120022802fc04210c200641057621040b200c201b6a220620022903e002370000200641186a201c290300370000200641106a2005290300370000200641086a20012903003700002003450d0b20022802c80220142f010022064b0d0141002106410a210b0c020b2006450d080c090b201020022802c00220064105746a220641026a2d00003a0000200e200641176a290000370300200f2006411f6a2d00003a0000200220062f00003b018c052002200629000f3703f804200629000721072006280003211c410121060b2001200e2903003703002005200f2d00003a0000200220022903f80422083703e004200220022f018c053b01a004200220083703e002200220102d00003a00a204200220073700a7042002201c3600a304200d20022903e00237000020112001290300370000201220052d00003a00002006450d08201441026a211420152016290300370300201720182903003703002019201a290300370300200220022903a0043703c004201b41206a211b201341016a21132003417e6a21030c000b0b410d210b0b410021044101210c0240200941808080807872418080808078460d00200a102e0b410021130c060b20004281808080e0003703000c010b20004281808080e0003703000b20022802a40241808080807872418080808078460d0420022802a002102e0c040b1038000b1036000b200941808080807872418080808078460d00200a102e0b02400240200b410d460d000240200441ffffff3f71450d00200c102e0b2000200b36020441012106200041013602002000410c6a41003602000c010b200241e0026a200241306a41c00110e9081a200241c0046a200241e0026a200241b0026a200241c0026a108d060240024020022802c0044101470d0020022902c40421072000410c6a200241c0046a410c6a28020036020020002007370204200041013602000c010b20022802c404211b200241c8046a280200211402400240200241c0046a410c6a280200220b412c6c2201450d00201b20016a210e201b2101034041092105200241d0026a2001410c6a10a0022206450d0220022802b802200628020022064d0d022001412c6a210a20022802b002200641386c6a220541306a211720012802002203200128020841226c6a2115200541286a21190240034020152003460d01200341226a211c20172802004105742101201928020021050340024020010d00410821050c060b200141606a210120052003412010ec082106200541206a210520060d000b201c21030c000b0b200a2101200a200e470d000b0b2002200b3602c804200220143602c4042002201b3602c004200241e0026a200241c0046a200241d0026a200241b0026a10e706024020022802e0024101470d0020022902e40221072000410c6a200241e0026a410c6a28020036020020002007370204200041013602000c020b200241e8026a22052802002103200241e0026a200c201320022802e4022214200241e0026a410c6a2201280200221b10b7040240024020022802e0024101460d002005280200211520022802e402210b02400240200128020022130d00427f211e4200211f420021204200212142002122427f21230c010b20134106742105200b41206a2101427f211e427f212342002121420021224200211f4200212003402002200141086a2903002207420020012903002208420010e808200241106a200842002008420010e808427f2020427f200241106a41086a29030022242002290300222520257c7c22252007200229030822268420268442005220252024547222061b7c201f427f200229031020061b7c2224201f542206ad7c221f2006201f202054201f2020511b22061b2120427f202420061b211f200720232008201e54200720235420072023511b22061b21232008201e20061b211e427f202220077c202120087c22082021542206ad7c22072006200720225420072022511b22061b2122427f200820061b2121200141c0006a2101200541406a22050d000b0b200241e0026a41286a2020370300200241e0026a41186a20223703002002201f37038003200220213703f0022002201e3703e002200220233703e8020240200241e0026a200241f0016a413010ec08450d0020004281808080b00137030002402013450d0020134106742105200b41346a21010340024020012802002206450d00200641306c450d002001417c6a280200102e0b200141c0006a2101200541406a22050d000b0b201541ffffff1f71450d02200b102e0c020b20004100360200200041086a20022903f001370300200041c4006a41023a0000200041c0006a20133602002000413c6a2015360200200041386a200b360200200041306a200241f0016a41286a290300370300200041286a200241f0016a41206a290300370300200041206a200241f0016a41186a290300370300200041186a200241f0016a41106a290300370300200041106a200241f0016a41086a2903003703000240201b450d00201b412c6c21052014210103400240200141046a2802002206450d00200641306c450d002001280200102e0b2001412c6a2101200541546a22050d000b0b02402003450d002003412c6c450d002014102e0b0240200441ffffff3f71450d00200c102e0b200241d0026a10bc02024020022802c40241ffffff3f71450d0020022802c002102e0b024020022802b8022201450d00200141386c210520022802b002412c6a210103400240200128020041ffffff3f71450d002001417c6a280200102e0b200141386a2101200541486a22050d000b0b20022802b4022201450d06200141386c450d0620022802b002102e0c060b20022902e40221072000410c6a200128020036020020002007370204200041013602000b0240201b450d00201b412c6c21052014210103400240200141046a2802002206450d00200641306c450d002001280200102e0b2001412c6a2101200541546a22050d000b0b2003450d012003412c6c450d012014102e0c010b20004101360200200020053602040240200b450d00200b412c6c2105201b210103400240200141046a2802002206450d00200641226c450d002001280200102e0b2001412c6a2101200541546a22050d000b0b2014450d002014412c6c450d00201b102e0b41002106200441ffffff3f71450d00200c102e0b200241d0026a10bc02024020022802c40241ffffff3f71450d0020022802c002102e0b024020022802b8022201450d00200141386c210520022802b002412c6a210103400240200128020041ffffff3f71450d002001417c6a280200102e0b200141386a2101200541486a22050d000b0b024020022802b4022201450d00200141386c450d0020022802b002102e0b2006450d010b200241306a109b060b20024190056a24000b130020002002ad4220862001ad84101710da080bcc0101037f200028022822012001280200417f6a220236020020002d0001210302400240024020002d00000d004100210020020d022001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a22023602002002450d010c020b4101210020020d012001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d010b2001102e0b200341ff01714102472000720bf10101047f230041c0006b220224004191cdc20021034109210441042105024002400240024002400240200141ff01710e06000102030405000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a419c8ecc001044000b4186cdc2002103410b2104410021050c030b41feccc200210341082104410121050c020b41f9ccc200210341052104410221050c010b41eeccc2002103410b2104410321050b20004183083b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bf30202047f017e230041a0026b220224002002200010c802200241a0016a200228020022032002280208220410c902200241f4016a2802002105200241f0016a280200210020022903a0012106200241d8006a200241a8016a41c80010e9081a0240024020064201510d0041002100200241106a410041c80010eb081a410021050c010b200241106a200241d8006a41c80010e9081a0b024002402000200572450d00417f200041016a220120012000491b21000c010b20012802002100200241a0016a41086a41033a0000200241a9016a2000290000370000200241b1016a200041086a290000370000200241b9016a200041106a290000370000200241c1016a200041186a290000370000200241003a00a001200241a0016a10fe01410121000b200241a8016a200241106a41c80010e9082101200241f4016a2005360200200241f0016a2000360200200242013703a00120032004200110c80502402002280204450d002003102e0b200241a0026a24000bf20304037f017e047f027e23004190026b22022400200241086a200010c802200241186a200228020822002002280210220310c902200241f0006a41086a2204200241e0006a28020036020020022903182105200242003703182002200241d8006a22062903003703700240024020054201520d00200241306a2903002105200241ec006a2802002107200241e8006a2802002108200241e4006a28020021092002290328210a2002290320210b20024180016a41086a2004280200360200200220022903703703800141012104024002400240200841014b0d002007200972450d0220090d01410121080b2006200229038001370300200241286a200a370300200241ec006a2007360200200241e4006a2009360200200241306a2005370300200641086a20024180016a41086a2802003602002002200b3703202002420137031820022008417f6a36026820002003200241186a41086a10c8050c030b410221040c020b2001280200210420024190016a41086a41043a000020024199016a2004290000370000200241a1016a200441086a290000370000200241a9016a200441106a290000370000200241b1016a200441186a290000370000200241003a00900120024190016a10fe010b2000200310ff01410021040b0240200228020c450d002000102e0b20024190026a240020040b9b0201047f230041c0006b2202240041c893c9002103410621044108210502400240024002400240024002400240200141ff01710e080001020304050607000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41a4a9cc001044000b41b693c900210341122105410021040c050b41a693c900210341102105410121040c040b419993c9002103410d2105410221040c030b418d93c9002103410c2105410321040c020b418193c9002103410c2105410421040c010b41ed92c900210341142105410521040b200041830c3b0100200041086a2005360200200041046a2003360200200041026a20043a0000200241c0006a24000bf10101047f230041c0006b2202240041fdc3c10021034109210441042105024002400240024002400240200141ff01710e06000102030405000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41848fcc001044000b41f1c3c1002103410c2104410021050c030b41dac3c100210341172104410121050c020b41cdc3c1002103410d2104410221050c010b41c7c3c100210341062104410321050b20004183123b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b935608027f017e027f017e017f027e237f057e230041c0076b22042400200241106a2205290300210620032802102107200328020021082002290300210920044184036a200241e8016a2900003702002004418c036a200241f0016a29000037020020044194036a200241f8016a290000370200200441e7e485f3063602f8022004200241e0016a2900003702fc0220044180056a41106a200328021036020020044180056a41086a200341086a2902003703002004200329020037038005200441d0056a200441f8026a20044180056a109d040240024002400240200428029006220a450d00200441f8006a413e6a200441d0056a41386a290300370100200441f8006a41366a200441d0056a41306a290300370100200441f8006a412e6a200441d0056a41286a290300370100200441f8006a41266a200441d0056a41206a290300370100200441f8006a411e6a200441d0056a41186a290300370100200441f8006a41166a200441d0056a41106a290300370100200441f8006a410e6a200441d0056a41086a290300370100200420042903d00537017e20044198066a290300210b2004280294062103200441c8036a200441f8006a41c60010e9081a200441386a41086a200441c8036a410e6a290100370300200441386a41106a200441c8036a41166a290100370300200441386a41186a200441c8036a411e6a290100370300200441386a41206a200441c8036a41266a290100370300200441386a41286a200441c8036a412e6a290100370300200441386a41306a200441c8036a41366a290100370300200441386a41386a200441c8036a413e6a290100370300200420042901ce033703382002290308210c200441f8006a200541f00110e9081a02400240200c4201520d00200441d0056a200441f8006a41f00110e9081a0240200441d0056a410c6a200441c0066a412010ec080d0020042802d80520042802bc06460d020b200441ec036a2205200441d0056a41086a220241206a280200360200200441e4036a220d200241186a290200370200200441dc036a220e200241106a290200370200200441c8036a410c6a220f200241086a290200370200200441013602c803200420022902003702cc03200441c8036a200441a0076a2210200441fc056a20042903d005200910880721112005200441bc066a220241206a280200360200200d200241186a290200370200200e200241106a290200370200200f200241086a290200370200200441013602c803200420022902003702cc03200441c8036a2010200441e0066a20042903d005200910880721022011450d012002450d010c030b200441d0056a200441f8006a41f00110e9081a0240200441d0056a410c6a200441c0066a412010ec080d0020042802d80520042802bc06460d010b200441ec036a2205200441d0056a41086a220241206a280200360200200441e4036a220d200241186a290200370200200441dc036a220e200241106a290200370200200441c8036a410c6a220f200241086a290200370200200441003602c803200420022902003702cc03200441c8036a200441a0076a2210200441fc056a20042903d005200910880721112005200441bc066a220241206a280200360200200d200241186a290200370200200e200241106a290200370200200f200241086a290200370200200441003602c803200420022902003702cc03200441c8036a2010200441e0066a20042903d005200910880721022011450d0020020d020b200441f8006a410610b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c020b200441f8006a410510b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c020b0240024020094200520d00200441d0056a420010ac07200441206a20042802d005220520042802d805108e022004280224210d20042802202102024020042802d405450d002005102e0b4101210e0c010b200441d0056a2009427f7c10ac07200441306a20042802d005220d20042802d805108e022004280234210520042802302102024020042802d405450d00200d102e0b024020024101460d00200441f8006a410610b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c020b200441d0056a200910ac07200441286a20042802d005220e20042802d805108e02200428022c210d20042802282102024020042802d405450d00200e102e0b4100210e0b024020024101460d00200441f8006a410610b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c010b024002402008200d4b0d00410121124102200820054d200e1b22024102460d012002410171450d010b200441f8006a410610b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c010b20012d00002202410146221341057421142001411f6a2d000021052001411e6a2d0000210d2001411d6a2d0000210e2001411c6a2d0000210f2001411b6a2d000021102001411a6a2d00002111200141196a2d00002115200141186a2d00002116200141176a2d00002117200141166a2d00002118200141156a2d00002119200141146a2d0000211a200141136a2d0000211b200141126a2d0000211c200141116a2d0000211d2001410f6a2d0000211e2001410e6a2d0000211f2001410d6a2d000021202001410c6a2d000021212001410b6a2d000021222001410a6a2d00002123200141096a2d00002124200141076a2d00002125200141066a2d00002126200141056a2d00002127200141036a2d00002128200141206a2d0000212920012d0010212a20012d0008212b20012d0004212c20012d0002212d20012d0001212e0240024020024101470d002014102c2212450d010b024002400240024002402014410576222f20134f0d00201441047622012013200120134b1b22014104200141044b1b41057421010240024020024101460d00200441003602d0050c010b200441d8056a4101360200200420143602d405200420123602d0050b200441f8006a20014101200441d0056a107d20044180016a280200210120042802784101460d01200428027c21122001410576212f0b20020d01410021010c020b2001450d020c030b410021012012210203402002411f6a20293a00002002202e41ff0171202d4108747241ffff0371202841ff0171202c4108747241107472ad202741ff017120264108747241ffff0371202541ff0171202b4108747241107472ad422086843700002002202441ff017120234108747241ffff0371202241ff017120214108747241107472ad202041ff0171201f4108747241ffff0371201e41ff0171202a4108747241107472ad422086843700082002411e6a20053a0000200241106a201d41ff0171201c4108747241ffff0371201b41ff0171201a4108747241107472ad201941ff017120184108747241ffff0371201741ff017120164108747241107472ad422086843700002002411c6a200e41ff0171200d410874723b0000200241186a201541ff017120114108747241ffff0371201041ff0171200f4108747241107472360000200241206a2102200141016a2101410041ff01710d000b0b200441d0016a200b370300200441cc016a2003360200200441f8006a41d0006a2203200a360200200441f8006a41186a200441386a41086a290300370300200441f8006a41206a200441386a41106a290300370300200441f8006a41286a200441386a41186a290300370300200441f8006a41306a220a200441386a41206a290300370300200441f8006a41386a220d200441386a41286a290300370300200441b8016a220e200441386a41306a290300370300200441f8006a41c8006a220f200441386a41386a2903003703002004200637038001200420093703782004200429033837038801200420073602dc01200420083602d80141d000102c2205450d01200441a0046a41086a2208200441f8006a41106a220241086a290300370300200441a0046a41106a2210200241106a290300370300200441a0046a41186a2211200241186a290300370300200420022903003703a004200a290300210c200d290300210b200e2903002130200f2903002131200441d0056a200310c501200541386a203137030020052030370330200541286a200b3703002005200c370320200541186a2011290300370300200541106a2010290300370300200541086a2008290300370300200520042903a004370300200520042903d005370340200541c8006a200441d0056a41086a280200360200200420013602f0022004202f3602ec02200420123602e8024100211b200441003602c805200442013703c005200420093703d005200441c0056a200441d0056a41081074200420063703d005200441c0056a200441d0056a41081074200441d0056a418997c500108a03200441c8036a20042802d005220320042802d805108b0320042902cc03420020042802c80322021b210c2002410120021b210d024020042802d405450d002003102e0b2004200c4220883e029c042004200d36029804200441186a20044198046a10ab01410821194100211a024020042802180d00200428021c220f200428029c0441306e22022002200f4b1bad42307e220b422088a70d01200ba72202417f4c0d010240024020020d00410821100c010b2002102c2210450d030b200241306e210e02400240200f0d004100210f0c010b410021110340024002400240200428029c0422034108490d00200428029804220a290000210b2004200a41086a360298042004200341786a220236029c0420024108490d00201141016a21152004200341706a220836029c042004200a41106a36029804200a290008213041002102200441003a00f0052003416f6a21030240034020082002460d01200441d0056a20026a200a20026a220141106a2d00003a00002004200141116a360298042004200241016a22013a00f0052004200336029c042003417f6a21032001210220014120470d000b200441c8036a41186a2202200441d0056a41186a290300370300200441c8036a41106a2203200441d0056a41106a290300370300200441c8036a41086a220a200441d0056a41086a290300370300200420042903d0053703c803200141ff01714120490d0120044180056a41086a200a2903002231370300200441e0046a41186a22012002290300370300200441e0046a41106a22022003290300370300200441e0046a41086a22032031370300200420042903c803223137038005200420313703e004200441c0046a41186a220a2001290300370300200441c0046a41106a22012002290300370300200441c0046a41086a22082003290300370300200420042903e0043703c0042011200e470d03200e41016a2202200e4f0d020c070b200241ff0171450d00200441003a00f0050b4100211b410821190240200e450d00200e41306c450d002010102e0b4100211a0c040b200e41017422032002200320024b1b22024104200241044b1bad42307e2231422088a74541037421022031a7210302400240200e0d00200441003602d0050c010b200441083602d805200420103602d0052004200e41306c3602d4050b200441c8036a20032002200441d0056a107d20042802d0032102024020042802c8034101470d0020020d060c050b20042802cc032110200241306e210e0b2010201141306c6a220220303703082002200b370300200220042903c004370310200241186a2008290300370300200241206a2001290300370300200241286a200a290300370300201521112015200f470d000b0b200f410020101b211a200e410020101b211b2010410820101b21190b200441d0056a418997c500200441c0056a108c03200441c8036a20042802d005220320042802d805108d0320042902cc03420020042802c80322021b210b024020042802d405450d002003102e0b200b422088213020042802c805212a20042802c405212720042802c00521280240200ca7450d00200d102e0b2002410120021b21262030a7211d200ba7211c200441d0056a41086a2202200541086a290300370300200441d0056a41106a2203200541106a290300370300200441d0056a41186a2201200541186a290300370300200441d0056a41206a220a200541206a290300370300200441d0056a41286a2208200541286a290300370300200441d0056a41306a220d200541306a290300370300200441d0056a41386a220e200541386a290300370300200441c8036a41086a220f200541cc006a280200360200200420052903003703d005200420052902443703c80302400240200528024022100d004100210a0c010b20044180056a41386a2211200e29030037030020044180056a41306a220e200d29030037030020044180056a41286a220d200829030037030020044180056a41206a2208200a29030037030020044180056a41186a220a200129030037030020044180056a41106a2201200329030037030020044180056a41086a22032002290300370300200441c0056a41086a2202200f280200360200200420042903d00537038005200420042903c8033703c005200441f8026a41386a2011290300370300200441f8026a41306a200e290300370300200441f8026a41286a200d290300370300200441f8026a41206a2008290300370300200441f8026a41186a200a290300370300200441f8026a41106a2001290300370300200441f8026a41086a200329030037030020042004290380053703f802200420103602b803200441bc036a220320042903c005370200200341086a2002280200360200200442013703d005200441003602d805200420093703c803200441d0056a200441c8036a41081074200420063703c803200441d0056a200441c8036a41081074200441e4056a410029009197453702002004410029008997453702dc052004200441f8026a3602ec05200441e0046a200441d0056a10ae01024020042802d405450d0020042802d005102e0b200441d0056a200441e0046a108e0320042802d005220320042802d805108f022102024020042802d405450d002003102e0b02400240024020020d00200441c8036a200441f8026a41d00010e9081a200441c0046a200441e8026a10c801200441d0056a200441c8036a41d00010e9081a200441d0056a41d0006a220241086a200441c0046a41086a280200360200200220042903c004370200200441c8036a200441e0046a108e0320042802c803220220042802d003200441d0056a108f03024020042802cc03450d002002102e0b02402004280294062202450d00200241306c450d00200428029006102e0b024020042802a40641ffffff3f71450d0020042802a006102e0b200441c8036a41186a220e200441e0046a41186a290300370300200441c8036a41106a220f200441e0046a41106a290300370300200441c8036a41086a2210200441e0046a41086a290300370300200420042903e0043703c803410021020240201a0e020302000b41002102201a210303400240417f20192003410176220a20026a220841306c6a220d290300220c200952200c2009541b22010d00417f200d290308220c200652200c2006541b21010b2002200820014101461b21022003200a6b220341014d0d020c000b0b4100210a20042802bc032202450d02200241306c450d0220042802b803102e0c020b02400240417f2019200241306c6a2201290300220c200952200c2009541b22030d0041ff0121032001290308220c2006540d01200c20065221030b2003450d010b2002200341ff017141ff01466a21020b200441d0056a41186a200e290300370300200441d0056a41106a200f290300370300200441d0056a41086a2010290300370300200420042903c8033703d00502400240201a2002490d000240201a201b470d00201b41016a2203201b490d04201b41017422012003200120034b1b22034104200341044b1bad42307e220c422088a7454103742103200ca7210102400240201b0d00200441003602c0040c010b200441083602c804200420193602c0042004201b41306c3602c4040b200441a0046a20012003200441c0046a107d20042802a804210320042802a0044101460d0220042802a4042119200341306e211b0b2019200241306c6a220341306a2003201a20026b41306c10ea081a2003200637030820032009370300200341286a200441d0056a41186a2201290300370300200341206a200441d0056a41106a2208290300370300200341186a200441d0056a41086a220d290300370300200320042903d0053703102001200441c8036a41186a2903003703002008200441c8036a41106a290300370300200d200441c8036a41086a290300370300200420042903c8033703d0050240201d201c470d00201c41016a2202201c490d04201c41017422032002200320024b1b22024104200241044b1b220241ffffff3f7120024621032002410574210202400240201c0d00200441003602c0040c010b200441013602c804200420263602c0042004201c4105743602c4040b200441a0046a20022003200441c0046a107d20042802a8042102024020042802a0044101470d0020020d060c050b20042802a40421262002410576211c0b4101210a201a41016a211a2026201d4105746a220220042903d005370000200241186a2001290300370000200241106a2008290300370000200241086a200d290300370000201d41016a211d0c020b2002201a1045000b20030d020c010b200541d0006a220220026b220341d0006d210102402003450d00200141d0006c2103200241c4006a21020340024020022802002201450d00200141306c450d002002417c6a280200102e0b200241d0006a2102200341b07f6a22030d000b0b2005102e024002400240200a450d00024002400240201d450d00201d410574210520044194066a2102202621030340200441c0056a2003108e03200441d0056a20042802c005220a20042802c805109003200441c8036a41086a2208200441d0056a41086a290300370300200441c8036a41106a220d200441d0056a41106a290300370300200441c8036a41186a220e200441d0056a41186a290300370300200441c8036a41206a220f200441d0056a41206a290300370300200441c8036a41286a2210200441d0056a41286a290300370300200441c8036a41306a2211200441d0056a41306a290300370300200441c8036a41386a2215200441d0056a41386a290300370300200441e0046a41086a2216200241086a290200370300200441e0046a41106a2217200241106a290200370300200441e0046a41186a2218200241186a280200360200200420042903d0053703c803200420022902003703e00402402004280290062201450d00200441f8026a41386a2015290300370300200441f8026a41306a2011290300370300200441f8026a41286a2010290300370300200441f8026a41206a200f290300370300200441f8026a41186a200e290300370300200441f8026a41106a200d290300370300200441f8026a41086a2008290300370300200441c0046a41086a2016290300370300200441c0046a41106a2017290300370300200441c0046a41186a2018280200360200200420042903c8033703f802200420042903e0043703c0040b024020042802c405450d00200a102e0b20010d02200341206a2103200541606a22050d000b0b4200210c4108210a0c010b20044180056a41386a2202200441f8026a41386a29030037030020044180056a41306a2208200441f8026a41306a29030037030020044180056a41286a220d200441f8026a41286a29030037030020044180056a41206a220e200441f8026a41206a29030037030020044180056a41186a220f200441f8026a41186a29030037030020044180056a41106a2210200441f8026a41106a29030037030020044180056a41086a2211200441f8026a41086a290300370300200441a0046a41086a2215200441c0046a41086a290300370300200441a0046a41106a2216200441c0046a41106a290300370300200441a0046a41186a2217200441c0046a41186a280200360200200420042903f80237038005200420042903c0043703a00441e000102c220a450d05200a200429038005370300200a2001360240200a20042903a004370244200a41386a2002290300370300200a41306a2008290300370300200a41286a200d290300370300200a41206a200e290300370300200a41186a200f290300370300200a41106a2010290300370300200a41086a2011290300370300200a41cc006a2015290300370200200a41d4006a2016290300370200200a41dc006a2017280200360200024020054120470d00428180808010210c0c010b200341206a210f2026201d4105746a222541606a212b200441d0056a41c4006a2102428180808010210c0340200f21030340200441c0056a2003108e03200441d0056a20042802c005220e20042802c805109003200441c8036a41086a2205200441d0056a41086a221e290300370300200441c8036a41106a2208200441d0056a41106a221f290300370300200441c8036a41186a220d200441d0056a41186a2220290300370300200441c8036a41206a220f200441d0056a41206a2221290300370300200441c8036a41286a2210200441d0056a41286a2222290300370300200441c8036a41306a2211200441d0056a41306a2223290300370300200441c8036a41386a2215200441d0056a41386a2224290300370300200441e0046a41086a2216200241086a290200370300200441e0046a41106a2217200241106a290200370300200441e0046a41186a2218200241186a280200360200200420042903d0053703c803200420022902003703e00402402004280290062201450d00200441f8026a41386a2015290300370300200441f8026a41306a2011290300370300200441f8026a41286a2010290300370300200441f8026a41206a200f290300370300200441f8026a41186a200d290300370300200441f8026a41106a2008290300370300200441f8026a41086a2005290300370300200441c0046a41086a2016290300370300200441c0046a41106a2017290300370300200441c0046a41186a2018280200360200200420042903c8033703f802200420042903e0043703c0040b024020042802c405450d00200e102e0b024020010d002025200341206a2203470d010c030b0b20044180056a41386a220e200441f8026a41386a29030037030020044180056a41306a220f200441f8026a41306a29030037030020044180056a41286a2210200441f8026a41286a29030037030020044180056a41206a2211200441f8026a41206a29030037030020044180056a41186a2215200441f8026a41186a29030037030020044180056a41106a2216200441f8026a41106a29030037030020044180056a41086a2217200441f8026a41086a290300370300200441a0046a41086a2218200441c0046a41086a290300370300200441a0046a41106a222c200441c0046a41106a290300370300200441a0046a41186a222d200441c0046a41186a280200360200200420042903f80237038005200420042903c0043703a004201e2017290300370300201f20162903003703002020201529030037030020212011290300370300202220102903003703002023200f2903003703002024200e29030037030020042004290380053703d005200520182903003703002008202c290300370300200d202d280200360200200420042903a0043703c80302400240200c422088a7220e200ca7460d00200c210b0c010b200e41016a220f200e490d06200e4101742210200f200f2010491b220f4104200f41044b1bad42e0007e220b422088a745410374210f200ba7211002400240200e0d00200441003602f8020c010b20044108360280032004200a3602f8022004200e41e0006c3602fc020b200441e0046a2010200f200441f8026a107d20042802e804210f20042802e0044101460d0420042802e404210a200f41e0006ead210b0b200341206a210f200a200e41e0006c6a220e20042903d005370300200e41106a201f290300370300200e41086a201e2903003703002023290300213020242903002131202229030021322021290300213320202903002134200e41c0006a2001360200200e41186a2034370300200e41206a2033370300200e41286a2032370300200e41386a2031370300200e41306a2030370300200e41c4006a20042903c803370200200e41cc006a2005290300370200200e41d4006a2008290300370200200e41dc006a200d280200360200200b42ffffffff0f83200c4280808080107c4280808080708384210c202b2003470d000b0b200441f0056a201a360200200441ec056a201b360200200441e4056a201d360200200441e0056a201c360200200420193602e805200420263602dc052004202a3602d805200420273602d405200420283602d005201a41306c4104722202417f4c0d032002102c2203450d042004410036028003200420023602fc02200420033602f802201a200441f8026a10760240201a450d002019201a41306c6a2101201921020340200420022903003703c803200441f8026a200441c8036a410810742004200241086a2903003703c803200441f8026a200441c8036a410810744120102c2203450d06200442203702cc03200420033602c803200441c8036a200241106a220241201074200441f8026a20042802c803220320042802d0031074024020042802cc03450d002003102e0b200241206a22022001470d000b0b200441c8036a418997c500108a0320042802c803220220042802d003200441f8026a10c502024020042802cc03450d002002102e0b024020042802fc02450d0020042802f802102e0b200441c8036a418997c500200441d0056a108c0320042802c803220220042802d003200441dc056a109103024020042802cc03450d002002102e0b02402027450d002028102e0b0240201c41ffffff3f71450d002026102e0b201b450d02201b41306c450d022019102e0c020b02402027450d002028102e0b0240201c41ffffff3f71450d002026102e0b4100210a0240201b450d00201b41306c450d002019102e0b0c010b200f0d020c010b024020042802ec0241ffffff3f71450d0020042802e802102e0b0240200a0d00024020042802cc012202450d00200241306c450d0020042802c801102e0b200441f8006a410710b007200441df056a200441f8006a41086a2802002202360000200420042903783700d705200041186a41003a000020004200370308200020042900d005370019200041216a200441d0056a41086a290000370000200041286a2002360000200042013703000c040b02400240024020074101200741014b1b2202418094ebdc036e2002418094ebdc03704100476a22034101200341014b1b220320024b0d002002200c422088a7220541036c220120022001491b20036ead428094ebdc037e200220036ead80a7109e042101200541ffffffff03712005470d0320054102742202417f4c0d030240024020020d00410421080c010b2002102c2208450d050b02402002410276220720054f0d00200241017622032005200320054b1b22034104200341044b1b220341ffffffff03712003464102742107200341027421030240024020020d00200441003602d0050c010b200441d8056a4104360200200420023602d405200420083602d0050b200441c8036a20032007200441d0056a107d200441d0036a2802002102024020042802c8034101460d0020042802cc032108200241027621070c030b20020d050c040b20050d01410021020c020b41d0d8c800411941bcd7cc001039000b2005210320082102034020022001360200200241046a21022003417f6a22030d000b200521020b200441086a200a20052008200220042802d801109203200442013703f8022004410036028003200420093703d005200441f8026a200441d0056a41081074200420063703d005200441f8026a200441d0056a410810742004418c036a4100290091974537020020044100290089974537028403200441e3036a200441f8026a41186a280200360000200441db036a200441f8026a41106a290300370000200441d3036a200429038003370000200420042903f8023700cb03200441d9056a200441c8036a41086a290000370000200441e1056a200441c8036a41106a290000370000200441d0056a41186a200441df036a290000370000200441f0056a41013a0000200441053a00d005200420042900c8033700d105200441d0056a10fe0102402007450d002008102e0b02402005450d00200541e0006c2103200a41d4006a210203400240200241706a2802002201450d00200141306c450d002002416c6a280200102e0b0240200228020041ffffff3f71450d002002417c6a280200102e0b200241e0006a2102200341a07f6a22030d000b0b0240200ca72202450d00200241e0006c450d00200a102e0b024020042802cc012202450d00200241306c450d0020042802c801102e0b2000420037030820004200370300200041186a41013a00000c030b1038000b1036000b2003450d00200341306c450d00200a102e0b200441c0076a24000b860301037f230041e0006b22032400200341086a41bed8c8004108108102200341186a41a4fcc8004112108102200320013602482003200341c8006a410410a301370338200341dc006a2201200341c8006a41046a3602002003200341386a41086a3602542003200341c8006a3602582003200341386a360250200341286a200341d0006a107c200320023602442003200341c4006a410410a3013703482001200341c4006a41046a3602002003200341c8006a41086a3602542003200341c4006a3602582003200341c8006a360250200341386a200341d0006a107c0240024020032802302201200328024022046a41206a2202417f4c0d000240024020020d00410121050c010b2002102c2205450d020b2000410036020820002002360204200020053602002000200341086a411010742000200341186a4110107420002003280228220220011074200020032802382201200410740240200328023c450d002001102e0b0240200328022c450d002002102e0b200341e0006a24000f0b1038000b1036000baff4020b027f027e077f027e047f0e7e027f057e047f047e0e7f230022032104200341c00b6b41607122032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e1a000102030405060708090a0b0c0d0e0f10111213141516171819000b200341d40a6a4101360200200342013702c40a2003419cc3cb003602c00a200341043602940920034194c3cb0036029009200320034190096a3602d00a200341c00a6a41c0accb001044000b200141306a2903002105200141286a2903002106200341e0066a41186a200141196a290000370300200341e0066a41106a200141116a290000370300200341e0066a41086a200141096a290000370300200320012900013703e006200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c102200341b8046a41086a220220034190096a41096a290000370300200341b8046a41106a220120034190096a41116a290000370300200341b8046a41186a220720034190096a41196a29000037030020032003290091093703b80420032d0090094101460d25200341d8046a41186a2007290300370300200341d8046a41106a2001290300370300200341d8046a41086a2002290300370300200320032903b8043703d8040240024020064280a094a58d1d5441002005501b450d00200341c0056a41011093080c010b20034198066a2201420037030020034190066a2202420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a41b4f6ca00410f10810220012008290000370300200220032900c007370300200341286a20034180066a4120108e02200328022c21092003280228210a2001420037030020024200370300200742003703002003420037038006200341c0076a41de80ca00410910810220072008290000370300200320032900c00737038006200341c0076a418c81ca00410b10810220012008290000370300200220032900c00737030020034194096a41003a00002003410036029009200341206a20034180066a412020034190096a4105410010ca0402402003280220450d00200320032802242201410520014105491b3602c40a200320034190096a3602c00a200341186a200341c00a6a10ab0120032802180d00200328021c41e400490d00200341c0056a41231093080c010b200341c00a6a41186a2201200341e0066a41186a290300370300200341c00a6a41106a2207200341e0066a41106a290300370300200341c00a6a41086a2208200341e0066a41086a290300370300200320032903e0063703c00a20034190096a200341c00a6a10b7080240200328029409220b450d00200328029009210c200142003703002007420037030020084200370300200342003703c00a20034188086a41d9fcc6004106108102200820034188086a41086a220d29000037030020032003290088083703c00a20034188086a4180f4cb0041061081022001200d2900003703002007200329008808370300200341106a200341c00a6a4120108e0202402003280214410020032802101b200c4f0d00200341c0056a410610930820032802980941ffffff3f71450d02200b102e0c020b20032802980941ffffff3f71450d00200b102e0b200341c00a6a200341d8046a2006200510c302200341ca066a220120032d00c30a3a0000200320032f00c10a3b01c806024020032d00c00a22074106470d0020034180066a41186a420037030020034180066a41106a420037030020034180066a41086a220142003703002003420037038006200341c0076a41de80ca0041091081022001200341c0076a41086a2207290000370300200320032900c00737038006200341c0076a41b4f6ca00410f108102200241086a2007290000370000200220032900c007370000200320094100200a1b220141016a3602c00a20034180066a4120200341c00a6a410410b2012003200341d8046a36028006200341c0076a200110940820032802c807210820032802c00721074118102c2209450d6020034218370294092003200936029009410120034190096a107620034190096a20032802800641201074200320053703c80a200320063703c00a20034190096a200341c00a6a4110107420072008200328029009220920032802980910b2010240200328029409450d002009102e0b024020032802c407450d002007102e0b200341cc0a6a200341e0066a41086a290300370200200341d40a6a200341e0066a41106a290300370200200341dc0a6a200341e0066a41186a290300370200200341ec0a6a200341d8046a41086a290300370200200341f40a6a200341d8046a41106a290300370200200341fc0a6a200341d8046a41186a290300370200200320013602c00a200320032903e0063702c40a200320032903d8043702e40a20034180066a41186a420037030020034180066a41106a420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418c81ca00410b108102200241086a2008290000370000200220032900c0073700004104102c2202450d60200342043702c407200320023602c0072003200136029009200341c0076a20034190096a410410744120102c2202450d602003422037029409200320023602900920034190096a200341c00a6a41047241201074200341c0076a200328029009220220032802980910740240200328029409450d002002102e0b200341c0076a200341e40a6a4120107420034190096a41086a200341c0076a41086a280200360200200320032903c0073703900920034180066a412020034190096a10c702200341d80a6a2005370300200341d00a6a2006370300200341cc0a6a2001360200200341c00a6a41086a41003a0000200341093a00c00a200341c00a6a10fe01200341063a00c0050c630b20032902c40a2105200320073a00c005200320032f01c8063b00c105200320053702c405200320012d00003a00c3050b20032d00c0054106460d6120032902c40521050c600b200141086a2802002109200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c102200341b8046a41086a220220034199096a290000370300200341b8046a41106a2207200341a1096a290000370300200341b8046a41186a2208200341a9096a29000037030020032003290091093703b80420032d0090094101460d23200341d8046a41186a2008290300370300200341d8046a41106a2007290300370300200341d8046a41086a2002290300370300200320032903b8043703d804200341c00a6a200110940820032802c80a210820032802c00a21024100210720034190096a41046a41003a00002003410036029009200341306a2002200820034190096a4105410010ca04024002402003280230450d0020032802342107200341003a00f00802402007410520074105491b2207450d002007417f6a210b024020032d0090092207410371220a4103460d00024002400240200a0e03000102000b2007410276210a410121070c050b200b450d0220032d009109410874200772220741ffff0371418002490d02200741fcff0371410276210a410121070c040b200b4103490d0120032f00910920032d00930941107472410874200772220741ffff034d0d012007410276210a410121070c030b200741034b0d00200b4104490d0041012107200328009109220a41ffffffff034b0d020b41c4a6c000412010ef022002200810c907410021070b0b024020032802c40a450d002002102e0b2007450d220240200a20094d0d00200341c0076a41201093080c5b0b20034190096a2001109408200341c00a6a200328029009220a20032802980910ae052003280294092102024002400240024020032802c00a2208450d00200341d80a6a2903002105200341d00a6a2903002106200341c80a6a280200210920032802c40a210702402002450d00200a102e0b200341c00a6a200341d8046a2006200510c302200341ca066a220220032d00c30a3a0000200320032f00c10a3b01c80620032d00c00a220a4106470d0320034180066a41186a220a200341d8046a41186a29030037030020034180066a41106a220b200341d8046a41106a29030037030020034180066a41086a220c200341d8046a41086a290300370300200320032903d8043703800620092007470d02200741016a220220074f0d010c620b02402002450d00200a102e0b200341c0076a41021093080c5d0b2007410174220d2002200d20024b1b22024104200241044b1b220241ffffff3f71200246210d200241057421020240024020070d00200341003602c00a0c010b200341c80a6a4101360200200320083602c00a200320074105743602c40a0b20034190096a2002200d200341c00a6a107d20034198096a280200210202402003280290094101470d002002450d610c600b2003280294092108200241057621070b200820094105746a2202200329038006370000200241186a200a290300370000200241106a200b290300370000200241086a200c290300370000200341e0066a2001109408200941016a22024105744114722201417f4c0d5f20032802e806210b20032802e006210a2001102c220c450d5e200341003602980920032001360294092003200c36029009200220034190096a107602402002450d00200941057441206a210120082102034020034190096a200241201074200241206a2102200141606a22010d000b0b200320063703c00a200320053703c80a20034190096a200341c00a6a41101074200a200b200328029009220220032802980910b2010240200328029409450d002002102e0b024020032802e406450d00200a102e0b0240200741ffffff3f71450d002008102e0b200341063a00c0070c5d0b20032902c40a21052003200a3a00c007200320032f01c8063b00c107200320053702c407200320022d00003a00c307200741ffffff3f71450d5a2008102e0c5a0b200141046a2802002108200341d0086a41046a22092001410f6a2d00003a000020032001410b6a2800003602d008200141186a2903002105200141106a2903002106200141286a290300210e200141206a290300210f2001410a6a2d00002110200141096a2d00002111200141086a2d00002112200341c00a6a41286a220a200241286a280200360200200341c00a6a41206a220b200241206a290200370300200341c00a6a41186a220c200241186a290200370300200341c00a6a41106a220d200241106a290200370300200341c00a6a41086a2213200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034190096a41096a29000037030020034180066a41106a2201200341a1096a29000037030020034180066a41186a2207200341a9096a29000037030020032003290091093703800620032d0090094101460d1e200341c0076a41186a2007290300370300200341c0076a41106a2001290300370300200341c0076a41086a200229030037030020032003290380063703c00720034198046a41046a20092d00003a0000200320032802d00836029804200341f0086a2008108905200341c00a6a20032802f008220920032802f808108a052002200341800b6a2903003703002001200341880b6a2903003703002007200341900b6a29030037030020034180066a41206a200341980b6a29030037030020034180066a41286a200341a00b6a290300370300200320032800c10a3602c806200320032800c40a3600cb062003200341f80a6a2903003703800602400240024020032d00c00a22024102460d00200341f00a6a2903002114200a2903002115200b2903002116200c2903002117200d290300211820132903002119200341c0056a41286a220120034180066a41286a290300370300200341c0056a41206a220720034180066a41206a290300370300200341c0056a41186a220a20034180066a41186a290300370300200341c0056a41106a220b20034180066a41106a290300370300200341c0056a41086a220c20034180066a41086a29030037030020032003290380063703c005024020032802f408450d002009102e0b200341c00a6a41286a2001290300370300200341c00a6a41206a2007290300370300200341c00a6a41186a200a290300370300200341c00a6a41106a200b290300370300200341c00a6a41086a200c290300370300200320032903c0053703c00a02402002450d0020034190096a4111109308200341d8046a20034190096a41e40010e9081a0c020b20034190096a412c6a201437020020034190096a411c6a201637020020034190096a410c6a201837020020034190096a413c6a200341c00a6a41086a29030037020020034190096a41c4006a200341c00a6a41106a220229030037020020034190096a41cc006a200341c00a6a41186a29030037020020034190096a41d4006a200341c00a6a41206a29030037020020034190096a41dc006a200341c00a6a41286a290300370200200320153702b409200320173702a4092003201937029409200320032903c00a3702c409200341d8046a20034190096a41e40010e9081a200341e0066a41086a200341d8046a413c6a290200370300200341e0066a41106a200341d8046a41c4006a290200370300200341e0066a41186a200341d8046a41cc006a290200370300200341e0066a41206a200341d8046a41d4006a290200370300200341e0066a41286a200341d8046a41dc006a2902003703002003200329028c053703e006200341d8046a410c6a290200211a200341d8046a411c6a290200211b200341d8046a412c6a290200211820032902dc04211c20032902ec04211d20032902fc04211e20034190096a200341c0076a10c802200341c00a6a200328029009220720032802980910c902427f2005200e7c2006200f7c22172006542201ad7c22142001201420055420142005511b220b1b2005201241ff017141014622011b2115427f2017200b1b200620011b21192002290300420020032903c00a42015122021b211620032903c80a420020021b211f0240200328029409450d002007102e0b2019201f56201520165620152016511b450d0220034188086a411b1093080c590b024020032802f408450d002009102e0b20034190096a4111109308200341d8046a20034190096a41e40010e9081a0b20034188086a41086a200341d8046a41086a280200360200200320032902d804370388080c570b200341c0056a200341c0076a10b808200341c00a6a20032802c00520032802c80510b105200341e8086a41026a220220032d00c30a3a000041082107200341d0066a41086a200341a00b6a290300370300200320032f00c10a3b01e8082003200341980b6a2903003703d006200341900b6a2903002120200341880b6a2903002121200341ac0b6a2802002122200341a80b6a28020021230240024020032d00c00a220c4102470d00420021244100210d42002125420021264100211342002119420021274200211f420021284100210c0c010b200341d80a6a2903002127200341d00a6a2903002119200341e80a6a2903002128200341e00a6a290300211f200341800b6a2903002126200341f80a6a2903002125200341c00a6a41086a280200210d200341cc0a6a2802002113200341f00a6a290300212420032802c40a2107200341c0086a41026a20022d00003a000020034190096a41086a200341d0066a41086a290300370300200320032f01e8083b01c008200320032903d006370390090b0240200c450d0020034180066a41181093080c4f0b41002101024002400240024020130e025000010b41002102200728020022012008460d01200120084921010c4f0b4100210220132101034020022001410176220920026a220a2007200a41306c6a28020020084b1b2102200120096b220141014b0d000b02402007200241306c6a28020022012008460d00201341e4004b0d02200220012008496a21010c4f0b201320024d0d220b2007200241306c6a220141206a2109200141186a2903002116200141106a222929030021152001410a6a210a200141096a222a2d0000212b0240024002400240024020012d0008222c4101470d00200141286a290300212d2009290300212e20034198016a20152016420a420010e70820034188016a202e202d420a420010e708201e20157d222f201e56201820167d201e201554ad7d221620185620162018511b0d02202f202e7d2230202f562016202d7d202f202e54ad7d221520165620152016511b0d02201c20032903980122167d222f201c56201a20034198016a41086a2903007d201c201654ad7d2216201a562016201a511b0d01201d20032903880122187d221e201d56201b20034188016a41086a2903007d201d201854ad7d2218201b562018201b511b450d032030211e20152118202f211c2016211a0c020b02400240200a2d0000223141ff0171450d0041062132024002400240024002400240024020314107710e0700010203040506000b410021320c050b410121320c040b410221320c030b410321320c020b410421320c010b410521320b200341b8016a201642002032ad222e420010e808200341c8016a20154200202e420010e808427f200341d0016a290300222e20032903b8017c223020032903c0014200522030202e547222321b212d427f20032903c80120321b212e0c010b200341a8016a20152016420a420010e708200341b0016a290300212d20032903a801212e0b201e20157d2230201e56201820167d201e201554ad7d221520185620152018511b0d010240202b41ff01710d00201d202e7d2218201d56201b202d7d201d202e54ad7d2216201b562016201b511b0d012018211d2016211b201c212f201a21160c040b201c202e7d222f201c56201a202d7d201c202e54ad7d2216201a562016201a511b450d030b2030211e201521180b20034180066a411a1093080c510b201e211d2018211b0b201320024d0d20200141086a2101202c0d4a202b41ff0171222b4102460d4a4200201520287d2030201f54ad7d22182030201f7d221e203056201820155620182015511b222c1b21184200201e202c1b211e0240202b0d004200201b20277d201d201954ad7d2215201d20197d221a201d562015201b562015201b511b222b1b211b4200201a202b1b211d0c4c0b4200201620277d202f201954ad7d2215202f20197d221c202f56201520165620152016511b222b1b211a4200201c202b1b211c0c4c0b20034180066a41211093080c4e0b200141046a280200210b200241196a2d0000210c200241186a2d0000210d200241166a2f01002113200241156a2d00002112200241146a2d00002110200241126a2f01002111200241116a2d00002122200241106a2d000021232002410c6a2802002109200241086a280200210a200241046a2802002108200241026a2f0100212b2002280228210120022d0001212920022d00002107200341c00a6a41086a200241226a28010036020020032002411a6a2901003703c00a02400240024020074101470d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200841ff0171450d010c480b20074103460d0120070d482008410876210220084110762107200a411076212a200a410876212c200941107621322009410876213120032903c00a210520012001280200417f6a22333602002003200537039009024020330d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22332033280200417f6a223336020020330d002001102e0b2003200c3a00d70a2003200d3a00d60a200320133b01d40a200320123a00d30a200320103a00d20a200320113b01d00a200320223a00cf0a200320233a00ce0a200320323b01cc0a200320313a00cb0a200320093a00ca0a2003202a3b01c80a2003202c3a00c70a2003200a3a00c60a200320073b01c40a200320023a00c30a200320083a00c20a2003202b3b01c00a20032003290390093703d80a202941ff0171450d014110102c2202450d5d200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5d20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d482002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d482002102e0c480b200a41036c2009410174490d460b200341f0086a200b108905200341c00a6a20032802f008220220032802f808108a0520034180066a41086a2201200341800b6a29030037030020034180066a41106a2207200341880b6a29030037030020034180066a41186a2208200341900b6a29030037030020034180066a41206a2209200341980b6a29030037030020034180066a41286a220a200341a00b6a290300370300200320032800c10a3602c806200320032800c40a3600cb062003200341f80a6a2903003703800602400240024020032d00c00a220c4102460d00200341f00a6a2903002116200341c00a6a41286a2903002117200341c00a6a41206a2903002118200341c00a6a41186a2903002119200341c00a6a41106a290300211f200341c00a6a41086a290300211e200341c0056a41286a200a290300370300200341c0056a41206a2009290300370300200341c0056a41186a2008290300370300200341c0056a41106a2007290300370300200341c0056a41086a200129030037030020032003290380063703c005024020032802f408450d002002102e0b200341c0076a41086a200341c0056a41086a2903002205370300200341c0076a41106a200341c0056a41106a2903002206370300200341c0076a41186a200341c0056a41186a290300220e370300200341c0076a41206a200341c0056a41206a290300220f370300200341c0076a41286a200341c0056a41286a2903002214370300200320032903c00522153703c007200341c00a6a41286a22082014370300200341c00a6a41206a2209200f370300200341c00a6a41186a2202200e370300200341c00a6a41106a22012006370300200341c00a6a41086a22072005370300200320153703c00a0240200c450d0020034190096a4111109308200341d8046a20034190096a41e40010e9081a0c020b200341bc096a2016370200200341ac096a20183702002003419c096a201f370200200341cc096a2007290300370200200341d4096a2001290300370200200341dc096a2002290300370200200341e4096a2009290300370200200341ec096a2008290300370200200320173702b409200320193702a4092003201e37029409200320032903c00a3702c409200341d8046a20034190096a41e40010e9081a200341e0066a200341dc046a41e00010e9081a20034180066a41186a200341b0076a290300220537030020034180066a41106a200341a8076a290300220637030020034180066a41086a200341a0076a290300220e3703002003200329039807220f3703800620022005370300200120063703002007200e3703002003200f3703c00a20034190096a200341c00a6a10b9082003280290092201200328029809108f0221020240200328029409450d002001102e0b2002450d0220034188086a41041093080c460b024020032802f408450d002002102e0b20034190096a4111109308200341d8046a20034190096a41e40010e9081a0b20034188086a41086a200341d8046a41086a280200360200200320032902d804370388080c440b200341c00a6a41186a20034180066a41186a290300370300200341c00a6a41106a20034180066a41106a290300370300200341c00a6a41086a220120034180066a41086a29030037030020032003290380063703c00a20034190096a200341c00a6a10b90820032802900921022003280298092107200341013a00f00820022007200341f0086a410110b2010240200328029409450d002002102e0b200341cc0a6a200b360200200141063a0000200341093a00c00a200341c00a6a10fe01200341c00a6a200b10890520032802c00a220220032802c80a10ff01024020032802c40a450d002002102e0b200341063a0088080c440b20034190096a41186a200141196a29000037030020034190096a41106a200141116a29000037030020034190096a41086a200141096a2900003703002003200129000137039009200241026a2f0100210b200241046a2802002108200241086a28020021092002410c6a280200210a200241106a2d0000210c200241116a2d0000210d200241126a2f01002113200241146a2d00002112200241156a2d00002110200241166a2f01002111200241186a2d00002122200241196a2d0000212320022d0001212b2002280228210120022d00002107200341c00a6a41086a200241226a28010036020020032002411a6a2901003703c00a024002400240024020074101470d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200841ff01710d002009410174200a4f0d030b4110102c2202450d5e200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5e20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d012002102e0c010b20074103460d0120070d002008410876210220084110762107200941107621292009410876212a200a411076212c200a410876213220032903c00a210520012001280200417f6a2231360200200320053703d804024020310d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22312031280200417f6a223136020020310d002001102e0b200320233a00d70a200320223a00d60a200320113b01d40a200320103a00d30a200320123a00d20a200320133b01d00a2003200d3a00cf0a2003200c3a00ce0a2003202c3b01cc0a200320323a00cb0a2003200a3a00ca0a200320293b01c80a2003202a3a00c70a200320093a00c60a200320073b01c40a200320023a00c30a200320083a00c20a2003200b3b01c00a200320032903d8043703d80a202b41ff0171450d014110102c2202450d5d200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5d20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341023a00e0060c010b20034180066a41186a2201420037030020034180066a41106a2202420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418081ca00410c10810220012008290000370300200220032900c0073703000240024020034180066a4120108f020d00200341c00a6a41186a20034190096a41186a290300370300200341c00a6a41106a20034190096a41106a290300370300200341c00a6a41086a20034190096a41086a29030037030020032003290390093703c00a200341d8046a200341c00a6a10b708024020032802dc042201450d0020032802d8042107200341d80a6a22084200370300200341d00a6a22094200370300200341c00a6a41086a220a4200370300200342003703c00a20034188086a41d9fcc6004106108102200a20034188086a41086a220b29000037030020032003290088083703c00a20034188086a4180f4cb0041061081022008200b2900003703002009200329008808370300200341d8016a200341c00a6a4120108e02024020032802dc01410020032802d8011b20074f0d00200341e0066a410610930820032802e00441ffffff3f71450d032001102e0c030b20032802e00441ffffff3f71450d002001102e0b200341c00a6a41186a20034190096a41186a290300370300200341c00a6a41106a20034190096a41106a290300370300200341c00a6a41086a20034190096a41086a29030037030020032003290390093703c00a200341003a00e00a20034180066a41186a420037030020034180066a41106a420037030020034180066a41086a220142003703002003420037038006200341c0076a41de80ca0041091081022001200341c0076a41086a2207290000370300200320032900c00737038006200341c0076a418081ca00410c108102200241086a2007290000370000200220032900c00737000020034180066a200341c00a6a10ca05200341063a00e0060c440b200341e0066a41051093080b20032d00e0064106460d420b20032802e0062102200020032902e406370024200041206a2002360000200041186a41003a00002000420037030820004201370300200424000f0b20034190096a41186a200141196a29000037030020034190096a41106a200141116a29000037030020034190096a41086a200141096a2900003703002003200129000137039009200241026a2f0100210b200241046a2802002108200241086a28020021092002410c6a280200210a200241106a2d0000210c200241116a2d0000210d200241126a2f01002113200241146a2d00002112200241156a2d00002110200241166a2f01002111200241186a2d00002122200241196a2d0000212320022d0001212b2002280228210120022d00002107200341c00a6a41086a200241226a28010036020020032002411a6a2901003703c00a02400240024020074101470d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200841ff0171450d010c410b20074103460d0120070d412008410876210220084110762107200941107621292009410876212a200a411076212c200a410876213220032903c00a210520012001280200417f6a2231360200200320053703d804024020310d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22312031280200417f6a223136020020310d002001102e0b200320233a00d70a200320223a00d60a200320113b01d40a200320103a00d30a200320123a00d20a200320133b01d00a2003200d3a00cf0a2003200c3a00ce0a2003202c3b01cc0a200320323a00cb0a2003200a3a00ca0a200320293b01c80a2003202a3a00c70a200320093a00c60a200320073b01c40a200320023a00c30a200320083a00c20a2003200b3b01c00a200320032903d8043703d80a202b41ff0171450d014110102c2202450d5b200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5b20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d412002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d412002102e0c410b200941056c200a41036c490d3f0b200341c00a6a41186a20034190096a41186a290300370300200341c00a6a41106a20034190096a41106a290300370300200341c00a6a41086a20034190096a41086a29030037030020032003290390093703c00a200341023a00e00a20034180066a41186a2202420037030020034180066a41106a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418081ca00410c10810220022008290000370300200120032900c00737030020034180066a200341c00a6a10ca05200041186a41003a000020004200370308200020032800e0063600192000411c6a200341e3066a28000036000020004200370300200424000f0b20034190096a41186a200141196a29000037030020034190096a41106a200141116a29000037030020034190096a41086a200141096a2900003703002003200129000137039009200241026a2f0100210b200241046a2802002108200241086a28020021092002410c6a280200210a200241106a2d0000210c200241116a2d0000210d200241126a2f01002113200241146a2d00002112200241156a2d00002110200241166a2f01002111200241186a2d00002122200241196a2d0000212320022d0001212b2002280228210120022d00002107200341c00a6a41086a200241226a28010036020020032002411a6a2901003703c00a02400240024020074101470d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200841ff01710d002009200a4f0d030b4110102c2202450d5b200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5b20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d012002102e0c010b20074103460d0120070d002008410876210220084110762107200941107621292009410876212a200a411076212c200a410876213220032903c00a210520012001280200417f6a2231360200200320053703d804024020310d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22312031280200417f6a223136020020310d002001102e0b200320233a00d70a200320223a00d60a200320113b01d40a200320103a00d30a200320123a00d20a200320133b01d00a2003200d3a00cf0a2003200c3a00ce0a2003202c3b01cc0a200320323a00cb0a2003200a3a00ca0a200320293b01c80a2003202a3a00c70a200320093a00c60a200320073b01c40a200320023a00c30a200320083a00c20a2003200b3b01c00a200320032903d8043703d80a202b41ff0171450d014110102c2202450d5a200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5a20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341f0086a41026a200341c0056a41026a2d000022023a0000200320032f00c00522013b01f008200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341c00a6a41186a20034190096a41186a290300370300200341c00a6a41106a20034190096a41106a290300370300200341c00a6a41086a20034190096a41086a29030037030020032003290390093703c00a200341013a00e00a20034180066a41186a2202420037030020034180066a41106a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418081ca00410c10810220022008290000370300200120032900c00737030020034180066a200341c00a6a10ca05200041186a41003a000020004200370308200020032800e0063600192000411c6a200341e3066a28000036000020004200370300200424000f0b200141286a2802002134200141246a2802002109200241266a2f00002135200241226a28000021082002411a6a2900002105200241196a2d0000210b200241186a2d0000210c200241166a2f0000210d200241156a2d00002129200241146a2d0000212a200241126a2f0000212c200241116a2d00002132200241106a2d000021312002410e6a2f000021122002410d6a2d000021102002410c6a2d000021112002410a6a2f00002122200241096a2d00002123200241086a2d0000212b200241066a2f00002133200241056a2d00002136200241046a2d00002113200241026a2f000021372002280228210720022d0001213820022d00002102200341d8046a41186a200141196a290000370300200341d8046a41106a200141116a290000370300200341d8046a41086a200141096a290000370300200320012900013703d804200941880e490d37200320083602c80a200320053703c00a0240200241ff017122014102470d0020072007280200417f6a220236020020032902c40a2106024020020d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b201341ff01710d364101210a2022411074202341087472202b7241036c2012411074201041087472201172410174490d36410021010c350b024020014103470d00410021014101210a0c350b200241ff01710d3620072007280200417f6a22023602002003200537039009024020020d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b2003200b3a00d70a2003200c3a00d60a2003200d3b01d40a200320293a00d30a2003202a3a00d20a2003202c3b01d00a200320323a00cf0a200320313a00ce0a200320123b01cc0a200320103a00cb0a200320113a00ca0a200320223b01c80a200320233a00c70a2003202b3a00c60a200320333b01c40a200320363a00c30a200320133a00c20a200320373b01c00a200320032903900922053703d80a0240203841ff01710d00410321020c380b4110102c2201450d57200141f8f7c60036020c2001410136020820014281808080103702004110102c2207450d5720074190f8c60036020c20074101360208200742818080801037020020012001280200417f6a220a36020041002102200a0d372001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a220a200a280200417f6a220a360200200a0d372001102e0c370b200341f8066a200141196a290000370300200341e0066a41106a200141116a290000370300200341e0066a41086a200141096a290000370300200320012900013703e0062002280228210102400240024020022d00004102470d00200241246a2802002107200241226a2f01002108200241216a2d00002109200241206a2d0000210a2002411e6a2f0100210b2002411d6a2d0000210c2002411c6a2d0000212b2002411a6a2f01002129200241196a2d0000212a200241116a2900002105200241106a2d0000210d2002410e6a2f000021132002410d6a2d000021122002410c6a2d000021102002410a6a2f00002111200241096a2d00002122200241086a2d00002123200241066a2f0000212c200241056a2d00002132200241046a2d0000210220012001280200417f6a2231360200024020310d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22312031280200417f6a223136020020310d002001102e0b200320073a00df0a200320083b00dd0a200320093a00dc0a2003200a3a00db0a2003200b3b00d90a2003200c3a00d80a2003202b3a00d70a200320293b00d50a2003202a3a00d40a200320053702cc0a2003200d3a00cb0a200320133b00c90a200320123a00c80a200320103a00c70a200320113b00c50a200320223a00c40a200320233a00c30a2003202c3b00c10a200320323a00c00a200241ff01714101460d014110102c2202450d59200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5920014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341023a00c0050c010b200320032d00c20a3a00da04200320032f01c00a3b01d804200320073a00f704200320083b00f504200320093a00f4042003200a3a00f3042003200b3b00f1042003200c3a00f0042003200d3a00e304200320133b00e104200320123a00e004200320103a00df04200320113b00dd04200320223a00dc04200320233a00db04200320032903d00a3703e804200320053c00e404200320054218883c00e704200320054208883d00e504200341b8046a41186a22024200370300200341b8046a41106a22014200370300200341b8046a41086a22074200370300200342003703b804200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c0073703b804200341c0076a418081ca00410c10810220022008290000370300200120032900c007370300200341c00a6a200341b8046a10aa0520032d00e00a210220034180066a41186a2201200341c00a6a41186a220729030037030020034180066a41106a2208200341c00a6a41106a220929030037030020034180066a41086a220a200341c00a6a41086a220b290300370300200320032903c00a370380060240024020024103460d0020034190096a41186a2001290300220537030020034190096a41106a2008290300220637030020034190096a41086a200a290300220e3703002003200329038006220f370390092007200537030020092006370300200b200e3703002003200f3703c00a0240200341e0066a200341c00a6a412010ec08450d00200341c0056a41021093080c020b20034190096a200341e0066a10ba08200341c00a6a200328029009220220032802980910b70520032903c80a210520032802c40a21010240200328029409450d002002102e0b2001410120011b210941002102024002400240024002402005420020011b22054220882206a7220a0e020201000b41002102200a210103402001410176220820026a210720072002200920074105746a200341d8046a412010ec084101481b2102200120086b220141014b0d000b0b200920024105746a200341d8046a412010ec082207450d02200341c00a6a41186a200341d8046a41186a290300370300200341c00a6a41106a200341d8046a41106a290300370300200341c00a6a41086a200341d8046a41086a290300370300200320032903d8043703c00a200341c00a6a210120022007411f766a2207200a4d0d012007200a1045000b200341c00a6a41186a200341d8046a41186a290300370300200341c00a6a41106a200341d8046a41106a290300370300200341c00a6a41086a200341d8046a41086a290300370300200320032903d8043703c00a41002107200341c00a6a21010b024002400240200a2005a7460d00200521060c010b200a41016a2202200a490d5d200a4101742208200220022008491b22024104200241044b1b220241ffffff3f7120024621082002410574210202400240200a0d0020034100360290090c010b20034198096a41013602002003200936029009200320064205863e0294090b200341c0076a2002200820034190096a107d200341c8076a280200210220032802c0074101460d0120032802c40721092002410576ad21060b200920074105746a220241206a2002200a20076b41057410ea081a200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a29000037000020022001290000370000200341c00a6a41186a22014200370300200341c00a6a41106a22074200370300200341c00a6a41086a22024200370300200342003703c00a20034188086a41d9fcc6004106108102200220034188086a41086a220829000037030020032003290088083703c00a20034188086a4180f4cb004106108102200120082900003703002007200329008808370300200341e8016a200341c00a6a4120108e0220032802e801210120032802ec0121072002200642ffffffff0f8320054280808080107c4280808080708384370300200320093602c40a2003200741c093066a41c0930620011b22023602c00a20034190096a200341e0066a10ba082003280290092201200328029809200341c00a6a10bf050240200328029409450d002001102e0b0240200642ffffff3f83500d002009102e0b200341c00a6a41086a410a3a0000200341c00a6a41096a20032903d804370000200341e90a6a20032903e006370000200341d10a6a200341d8046a41086a290300370000200341d90a6a200341d8046a41106a290300370000200341e10a6a200341d8046a41186a290300370000200341f10a6a200341e0066a41086a290300370000200341f90a6a200341e0066a41106a290300370000200341810b6a200341e0066a41186a290300370000200341093a00c00a2003418c0b6a2002360200200341c00a6a10fe0120034180066a41186a2202420037030020034180066a41106a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418081ca00410c10810220022008290000370300200120032900c00737030020034180066a412010ff01200341063a00c0050c370b2002450d5b0c5a0b200341c0056a410a109308200542ffffff3f83500d012009102e0c010b200341c0056a41091093080b20032d00c0054106460d330b20032802c0052102200020032902c405370024200041206a2002360000200041186a41003a00002000420037030820004201370300200424000f0b200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a2207200241086a290200370300200320022902003703c00a200341c00a6a10a7050d16200341cc0a6a2001360200200741063a0000200341093a00c00a200341c00a6a10fe01200341c00a6a200110890520032802c00a220220032802c80a10ff01024020032802c40a450d002002102e0b200041186a41003a00002000420037030820002003280090093600192000411c6a20034193096a28000036000020004200370300200424000f0b200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a200341c00a6a10a7050d14200320013602e806200342e4cab5fbb6ccdcb0e3003703e006410c102c2202450d542003420c3702c407200320023602c007200341c0076a200341e0066a41081074200320013602c00a200341c0076a200341c00a6a41041074200341033a00c00a20034190096a41086a20032802c807360200200320032903c00737039009200341d8046a200341c00a6a20034190096a10c304024020032d00d8044106470d00200341063a0080060c300b20034180066a410210930820032d0080064106460d2f20032902840621050c2e0b200141306a2903002105200141286a2903002106200141216a2d0000210b20034198046a41186a2207200141196a29000037030020034198046a41106a2208200141116a29000037030020034198046a41086a2209200141096a2900003703002003200129000137039804200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034190096a41096a29000037030020034180066a41106a220120034190096a41116a29000037030020034180066a41186a220a20034190096a41196a29000037030020032003290091093703800620032d0090094101460d11200341b8046a41186a200a290300220e370300200341b8046a41106a2001290300220f370300200341b8046a41086a20022903002214370300200320032903800622153703b80420034188086a41186a200e37030020034188086a41106a200f37030020034188086a41086a20143703002003201537038808200341f0086a41186a2007290300370300200341f0086a41106a2008290300370300200341f0086a41086a200929030037030020032003290398043703f008024020034188086a200341f0086a412010ec080d00200341c00a6a411f1093080c2c0b20034190096a20034188086a10c802200341c00a6a200328029009220120032802980910c902200341d00a6a290300420020032903c00a42015122021b210e20032903c80a420020021b210f0240200328029409450d002001102e0b0240200f20065a200e20055a200e2005511b0d00200341c00a6a411b1093080c2c0b200341a8086a20034188086a10b808200341c00a6a20032802a808223720032802b008223910b105200341e8086a41026a220220032d00c30a3a0000200341d0066a41086a2201200341a00b6a290300370300200320032f00c10a3b01e8082003200341980b6a2903003703d006200341ac0b6a280200213a0240024020032d00c00a22074102470d0020034190096a41206a220241003602004200211420034190096a41106a420037030020034190096a41186a4200370300200341083602c40520034190096a41086a4200370300200342003703c805200341003a00c005200342003703d005200342003703d805200342003703900920034190096a41306a29030021192002290300211b20032903b809211f4200210e4200210f420021150c010b200341c00a6a41186a2903002116200341c00a6a41106a2903002117200341e80a6a290300210e200341c00a6a41206a2903002114200341f80a6a2903002115200341900b6a2903002119200341880b6a290300211f200341c00a6a41086a2802002108200341cc0a6a2802002109200341c00a6a41306a290300210f20032802c40a210a20034190096a41206a200341c00a6a41c0006a290300221b37030020034190096a41306a201937030020034190096a41c0006a2001290300370300200320173703d005200320153703a80920032014370390092003201f3703b809200320073a00c005200320032f01e8083b00c105200320093602cc05200320083602c8052003200a3602c4052003200f3703a009200320032903d0063703c809200320163703d8052003200e37039809200320022d00003a00c3052003200341a80b6a280200220a3602b8080b200342003703d807200320053703d007200320063703c807200320032903f0083700e1062003200341f0086a41086a2903003700e9062003200341f0086a41106a2903003700f1062003200341f0086a41176a2900003700f8062003200b3a00c107200320032d008f093a00c007200320153703d8072003200f3703d0072003200e3703c807200341013a00e00620032903e006211620032903e806211820032903f006211e20032903f806211a200320032903d805221d3703f806200320032903d00522273703f006200320032903c805221c3703e806200320032903c00522173703e0062003201a3703d8052003201e3703d005200320183703c805200320163703c00520032903c007211e200320143703c007200341a8096a4200370300200320053703a00920032006370398092003201e3703900920032903c809211e200341c0096a4200370300200342003703c809200342003703b809200342003703b00920032903d009211a200342003703d009200341003602b808200341c8096a2108200341b8096a2109200341b0096a21012016a721070240024002402017a741ff01714101460d002017422088a7210c201ca7210a201c422088a70d02200920034190096a200741ff017141014622021b2207200e37030820072014370300200341a8096a200341c0056a41107220021b2207201d37030820072027370300200820034190096a41106a20021b220720153703082007200f370300200341b8086a200120021b201ba7360200200a450d01200a41306c450d01200c102e0c010b200341c00a6a41176a200341e0066a410172220241176a290000370000200341c00a6a41106a200241106a290000370300200341c00a6a41086a200241086a290000370300200320022900003703c00a20032014a7220c3a00df0a4106210202400240024002400240024002400240200c41087641ff01710e0706000102030405060b410121020c040b410221020c030b410321020c020b410421020c010b410521020b200341b0026a200f42002002ad2214420010e808200341c0026a200e42002014420010e808427f200341c8026a290300221420032903b0027c221620032903b80242005220162014547222021b2114427f20032903c00220021b21160c010b200341a0026a200e200f420a420010e708200341a8026a290300211420032903a00221160b200341c00a6a20162014200e200f10bb081a200920034190096a200741ff017141014622021b220720193703082007201f370300200820034190096a41106a20021b2207201a3703082007201e3703002001200341c0056a41187220021b201b37030020034190096a41186a200341c0056a41107220021b2015370300200341b8086a200120021b200a3602000b02400240200b41ff0171450d00410621020240024002400240024002400240200b4107710e0700010203040506000b410021020c050b410121020c040b410221020c030b410321020c020b410421020c010b410521020b20034180026a200542002002ad220e420010e80820034190026a20064200200e420010e808427f20034198026a290300220e2003290380027c220f200329038802420052200f200e547222021b211a427f20032903900220021b211c0c010b200341f0016a20062005420a420010e708200341f8016a290300211a20032903f001211c0b200341c0086a200341f0086a10b808200341c00a6a20032802c008223b20032802c808223c10b105200341e8086a41026a220220032d00c30a3a000041082138200341d0066a41086a2201200341a00b6a290300370300200320032f00c10a3b01e8082003200341980b6a2903003703d006200341900b6a290300211b200341880b6a2903002128200341ac0b6a280200213d200341a80b6a280200213e0240024020032d00c00a22344102470d004200211f4100213541002136420021184200211e4200211942002121420021204200211d410021340c010b200341d80a6a2903002118200341d00a6a290300211f200341e80a6a2903002119200341e00a6a290300211e200341800b6a290300211d200341f80a6a2903002120200341c00a6a41086a2802002135200341cc0a6a2802002136200341f00a6a290300212120032802c40a2107200341e4086a41026a20022d00003a0000200341d0086a41086a2001290300370300200320032f01e8083b01e408200320032903d0063703d0084101210120344101460d14200721380b427f201920057c201e20067c220f201e542202ad7c220e2002200e201954200e2019511b22021b2119427f200f20021b211e427f2018201a7c201f201c7c220f201f542202ad7c220e2002200e201854200e2018511b22021b2118427f200f20021b211f0240203641306c2202450d00203820026a210c200341f80a6a2101200341c00a6a410172220d41036a2113203821020340200241306a21070240200241086a2d00004101710d00200241096a2d00002133200341d0066a2002280200108905200341c00a6a20032802d006220820032802d8062212108a0520034180066a41086a2229200141086a221029000037030020034180066a41106a222a200141106a221129000037030020034180066a41186a222c200141186a222229000037030020034180066a41206a2232200141206a222329000037030020034180066a41286a2231200141286a222b2900003703002003200d2800003602c806200320132800003600cb062003200129000037038006200341c00a6a41306a2109200341c00a6a41206a210a200341c00a6a41106a210b0240024020032d00c00a22024102470d00410221020c010b2009290300210e200a2903002114200b290300211520032903e80a210f20032903d80a211620032903c80a2117200341d8046a41086a2029290300370300200341d8046a41106a202a290300370300200341d8046a41186a202c290300370300200341d8046a41206a2032290300370300200341d8046a41286a2031290300370300200320032800cb063600eb08200320032802c8063602e80820032003290380063703d80420020d00427f200e20057c200f20067c2227200f542202ad7c220f2002200f200e54200f200e511b22021b210e427f202720021b210f0240024020334101710d00427f2014201a7c2016201c7c22272016542202ad7c22162002201620145420162014511b22021b2114427f202720021b21160c010b427f2015201a7c2017201c7c22272017542202ad7c22172002201720155420172015511b22021b2115427f202720021b21170b410021020b200d20032802e808360000200120032903d8043703002009200e370300200a2014370300200b2015370300201320032800eb083600002010200341d8046a41086a2903003703002011200341d8046a41106a2903003703002022200341d8046a41186a2903003703002023200341d8046a41206a290300370300202b200341d8046a41286a2903003703002003200f3703e80a200320163703d80a200320173703c80a200320023a00c00a0240024020024102470d002008201210ff010c010b20034100360288062003420137038006200341c00a6a20034180066a10bc0520082012200328028006220220032802880610b201200328028406450d002002102e0b20032802d406450d002008102e0b20072102200c2007470d000b0b2038210720342101203621020c2a0b200341c00a6a411d10930820032902c40a210520032802c00a21020240200a450d00200a41306c450d00200c102e0b41012101200741ff01710d2a2018a72207450d2a200741306c450d2a2016422088a7102e0c2a0b200341c00a6a41286a2208200241286a280200360200200341c00a6a41206a2209200241206a290200370300200341c00a6a41186a220a200241186a290200370300200341c00a6a41106a220b200241106a290200370300200341c00a6a41086a220c200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034199096a29000037030020034180066a41106a2201200341a1096a29000037030020034180066a41186a2207200341a9096a29000037030020032003290091093703800620032d0090094101460d0f200341b8046a41186a20072903002205370300200341b8046a41106a20012903002206370300200341b8046a41086a2002290300220e3703002003200329038006220f3703b804200341f0086a41186a2005370300200341f0086a41106a2006370300200341f0086a41086a200e3703002003200f3703f00820034198046a200341f0086a10b808200341c00a6a200328029804220720032802a004220d10b105200341e8086a41026a220220032d00c30a3a0000200341d0066a41086a200341a00b6a290300370300200320032f00c10a3b01e8082003200341980b6a2903003703d0060240024020032d00c00a22014102470d0042002106200342003703d805200342003703d005200342003703c805200342003703c00520034200370388064100210a200341003a00800620034108360284062003420037039006200342003703980620034100360290094100210142002105420021150c010b200341880b6a290300210f200341800b6a2903002114200341f80a6a2903002115200829030021062009290300210e200a2903002116200b2903002117200341f00a6a2903002105200341cc0a6a2802002108200c280200210920032802c40a210a200341a0096a200341900b6a290300370300200341b0096a200341d8066a29030037030020032017370390062003200f37039809200320013a008006200320032f01e8083b0081062003200836028c0620032009360288062003200a36028406200320153703d805200320053703d005200320032903d0063703a809200320163703980620032014370390092003200e3703c005200320063703c805200320022d00003a0083062003200341a80b6a28020022083602a808200e420888a72101200ea7210a0b200341083602e406200341003a00e006200341003602c007200329039806210e200342003703980620032903900621142003420037039006200329038806210f2003420037038806200342003703d805200342003703d005200342003703c805200342003703c0052003200e3703f806200320143703f0062003200f3703e80620032903d80721162003200341a8096a220229030022173703d80720032903d0072118200320032903a009221e3703d00720032903c80721192003200329039809221a3703c80720032903e006210e200320032903800622143703e0062003200e3703800620032903c007211f2003200329039009221c3703c00720022016370300200320183703a00920032019370398092003201f37039009200ea7210902400240024002402014a741ff0171220b4101470d0020032903b009210e200341ef046a20032900f806370000200341e8046a20032900f106370300200341d8046a41086a20032900e906370300200320032900e1063703d8042003200a3a00f70402400240200141ff0171450d0041062102024002400240024002400240024020014107710e0700010203040506000b410021020c050b410121020c040b410221020c030b410321020c020b410421020c010b410521020b200341e8026a200542002002ad220f420010e808200341f8026a20064200200f420010e808427f20034180036a290300220f20032903e8027c221420032903f0024200522014200f547222021b210f427f20032903f80220021b21140c010b200341d8026a20062005420a420010e708200341e0026a290300210f20032903d80221140b200341d8046a2014200f2006200510bb082102200341c00a6a41186a220a4200370300200341c00a6a41106a220b4200370300200341c00a6a41086a220c4200370300200342003703c00a20034188086a41d9fcc6004106108102200c20034188086a41086a221329000037030020032003290088083703c00a20034188086a4180f4cb004106108102200a2013290000370300200b200329008808370300200341d0026a200341c00a6a4120108e0220032802d402410020032802d0021b210c4180c09306210b0240024002400240024020014107710e0706000102030407060b4180ce18210b0c060b41809c31210b0c050b4180b8e200210b0c040b4180f0c401210b0c030b4180e08903210b0c020b200341c00a6a411c10930820032902c40a210520032802c00a21020240200b0d00200fa72201450d00200141306c450d002014422088a7102e0b41012101200941ff01710d0241010d0241010d02200e422088a7102e410121010c020b4100210b0b20034190096a41086a200341c0056a200941ff017141014622011b2209201e3703082009201a37030020034190096a20034180066a41187220011b201c370300200341c0056a41187220034180066a41107220011b2015370300200341a8086a20034190096a20011b2008200b200c6a2209200820094b1b36020020034190096a41186a200341c0056a41107220011b2201200e20052017200656200e200556200e2005511b22081b37030820012017200620081b370300200a200329039806370300200341f80a6a20032903d805370300200341f00a6a20032903d005370300200341e80a6a20032903c805370300200341c00a6a41206a20032903c005370300200341800b6a200329039009370300200341880b6a200329039809370300200341900b6a20034190096a41106a290300370300200341980b6a20032903a809370300200341a00b6a20034190096a41206a290300370300200341a80b6a20032802a80836020020032003290390063703d00a200320032903880622063703c80a200320032903800622053703c00a024002402005a7220141ff01714102470d002007200d10ff010c010b200341d8046a200341c00a6a10c2042007200d20032802d804220820032802e00410b201024020032802dc04450d002008102e0b200141ff01710d002006a72201450d00200141306c450d002005422088a7102e0b410021010b0240200328029c04450d002007102e0b20010d27200341c00a6a41086a41093a0000200341c00a6a41096a20032903f008370000200341d10a6a200341f0086a41086a290300370000200341d90a6a200341f0086a41106a290300370000200341e10a6a200341f0086a41186a290300370000200341093a00c00a200341c00a6a10fe01200320032800d0083602c0082003200341d3086a2800003600c308200041186a41003a0000200041106a2002ad220542f0cfe9037e200542c0f0f50b7e7c20054280c2d72f7e7c42d08dc582017c37030020004201370308200020032802c0083600192000411c6a20032800c30836000020004200370300200424000f0b200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a0240200341c00a6a10a705450d00200341e0066a41026a200341d8046a41026a2d000022023a0000200320032f00d80422013b01e006200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b20034180066a41186a2202420037030020034180066a41106a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418c81ca00410b10810220022008290000370300200120032900c00737030020034180066a412010ff01200041186a41003a00002000420037030820002003280090093600192000411c6a20034193096a28000036000020004200370300200424000f0b2001410c6a2802002108200141086a2802002107200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034199096a29000037030020034180066a41106a2209200341a1096a29000037030020034180066a41186a220a200341a9096a29000037030020032003290091093703800602400240024020032d0090094101460d00200341d8046a41186a200a290300370300200341d8046a41106a2009290300370300200341d8046a41086a200229030037030020032003290380063703d804200320083602c80a200320073602c40a200320013602c00a200341e0066a200341d8046a200341c00a6a10bc08200341c8066a41026a220120032d00e3063a0000200320032f00e1063b01c80620032d00e00622024106460d0220032902e4062105200341c0056a41026a20012d00003a0000200320032f01c8063b01c0050c010b4102210202402007450d002001102e0b0b200341f0086a41026a200341c0056a41026a2d000022013a0000200320032f01c00522073b01f008200041206a20023a0000200041186a41003a000020004200370308200020073b0021200041236a20013a00002000200537002420004201370300200424000f0b200041186a41003a000020004200370308200020032800c0073600192000411c6a200341c3076a28000036000020004200370300200424000f0b2001410c6a2802002132200141086a2802002129200141046a280200212c4101212b200241246a2802002107200241226a2f01002108200241216a2d00002109200241206a2d0000210a2002411e6a2f0100210b2002411d6a2d0000210c200241106a2d0000210d2002410e6a2f000021132002410d6a2d000021122002410c6a2d000021102002410a6a2f01002111200241096a2d00002122200241086a2d0000212320022802282101024020022d00004101470d002002411c6a2d0000212a2002411a6a2f01002131200241196a2d00002133200241116a2900002106200241066a2f01002136200241056a2d00002137200241046a2d0000210220012001280200417f6a2238360200024020380d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22382038280200417f6a223836020020380d002001102e0b200320073a00df0a200320083b00dd0a200320093a00dc0a2003200a3a00db0a2003200b3b00d90a2003200c3a00d80a2003202a3a00d70a200320313b00d50a200320333a00d40a200320063702cc0a2003200d3a00cb0a200320133b00c90a200320123a00c80a200320103a00c70a200320113b00c50a200320223a00c40a200320233a00c30a200320363b00c10a200320373a00c00a200241ff01714101460d0c4110102c2202450d50200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d5020014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a222a360200202a0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a222a202a280200417f6a222a360200202a0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0c230b2001410c6a2802002108200141086a2802002107200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034199096a29000037030020034180066a41106a2209200341a1096a29000037030020034180066a41186a220a200341a9096a29000037030020032003290091093703800602400240024020032d0090094101460d00200341d8046a41186a200a290300370300200341d8046a41106a2009290300370300200341d8046a41086a200229030037030020032003290380063703d804200320083602c80a200320073602c40a200320013602c00a200341e0066a200341d8046a200341c00a6a10bd08200341c8066a41026a220120032d00e3063a0000200320032f00e1063b01c80620032d00e00622024106460d0220032902e4062105200341f0086a41026a20012d00003a0000200320032f01c8063b01f0080c010b4102210202402007450d002001102e0b0b20034188086a41026a2201200341f0086a41026a2d00003a0000200320032800c0073602c005200320032f01f0083b0188082003200341c3076a2800003600c305200041186a41003a000020004200370308200020032802c0053600192000411c6a20032800c305360000200041206a20023a0000200041246a2005370200200020032f0188083b0021200041236a20012d00003a000020004201370300200424000f0b200320032800c0073602c0052003200341c3076a2800003600c305200041186a41013a000020004200370308200020032802c0053600192000411c6a20032800c30536000020004200370300200424000f0b2001410c6a2802002132200141086a2802002129200141046a280200212c4101212b200241246a2802002107200241226a2f01002108200241216a2d00002109200241206a2d0000210a2002411e6a2f0100210b2002411d6a2d0000210c200241106a2d0000210d2002410e6a2f000021132002410d6a2d000021122002410c6a2d000021102002410a6a2f01002111200241096a2d00002122200241086a2d0000212320022802282101024020022d00004101470d002002411c6a2d0000212a2002411a6a2f01002131200241196a2d00002133200241116a2900002106200241066a2f01002136200241056a2d00002137200241046a2d0000210220012001280200417f6a2238360200024020380d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22382038280200417f6a223836020020380d002001102e0b200320073a00df0a200320083b00dd0a200320093a00dc0a2003200a3a00db0a2003200b3b00d90a2003200c3a00d80a2003202a3a00d70a200320313b00d50a200320333a00d40a200320063702cc0a2003200d3a00cb0a200320133b00c90a200320123a00c80a200320103a00c70a200320113b00c50a200320223a00c40a200320233a00c30a200320363b00c10a200320373a00c00a200241ff01714101460d094110102c2202450d4e200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d4e20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a222a360200202a0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a222a202a280200417f6a222a360200202a0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0c200b200141246a2802002113200341c0056a41186a2207200141196a290000370300200341c0056a41106a2208200141116a290000370300200341c0056a41086a2209200141096a290000370300200320012900013703c005200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a2201200241186a290200370300200341c00a6a41106a220a200241106a290200370300200341c00a6a41086a220b200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c102200341b8046a41086a220220034190096a41096a290000370300200341b8046a41106a220c20034190096a41116a290000370300200341b8046a41186a220d20034190096a41196a29000037030020032003290091093703b8040240024020032d0090094101460d00200341c0076a41186a200d290300370300200341c0076a41106a200c290300370300200341c0076a41086a2002290300370300200320032903b8043703c007200341e4066a41003b0100200341003602e00620012007290300370300200a2008290300370300200b2009290300370300200320032903c0053703c00a20034190096a200341c00a6a10be0820034198036a2003280290092201200328029809200341e0066a4106410010ca0402402003280298030d00200341c00a6a41101093080c1e0b2003200328029c032202410620024106491b22023602dc042003200341e0066a3602d804200341003a00f0080240024002402002450d0020032002417f6a3602dc042003200341e0066a4101723602d80420032d00e0060e020102000b4190c1cb00412910ef02200341c00a6a41101093080c1f0b200341c00a6a41101093080c1e0b20034190036a200341d8046a10ab01200328029003450d014190c1cb00412910ef02200341c00a6a41101093080c1d0b200341023a0098040c1e0b20032802940321020240200328029409450d002001102e0b0240200220134d0d0020034198046a41201093080c1d0b200341f0086a200341c0056a109808200341c00a6a20032802f008220220032802f80810ad0520034190096a41086a2201200341c90a6a29000037030020034190096a41106a2207200341d10a6a29000037030020034190096a41186a2208200341d90a6a29000037030020034190096a411f6a2209200341e00a6a280000360000200320032900c10a3703900902400240024020032d00c00a220a4102460d00200341880b6a2903002105200341800b6a2903002106200341f80a6a2802002112200341f40a6a2802002113200341f00a6a280200210b200341e80a6a280200210c200341e40a6a280200210d200341d8046a411f6a2009280000360000200341d8046a41186a2008290300370300200341d8046a41106a2007290300370300200341d8046a41086a200129030037030020032003290390093703d804024020032802f408450d002002102e0b200341c00a6a411f6a200341d8046a411f6a280000360000200341c00a6a41186a2202200341d8046a41186a290300370300200341c00a6a41106a2201200341d8046a41106a290300370300200341c00a6a41086a2207200341d8046a41086a290300370300200320032903d8043703c00a200a450d01200341e0066a41186a2002290300370300200341e0066a41106a2001290300370300200341e0066a41086a2007290300370300200320032903c00a3703e0060240200c450d00200d102e0b20034180066a41086a200341e0066a41086a290300220e37030020034180066a41106a200341e0066a41106a290300220f37030020034180066a41186a200341e0066a41186a2903002214370300200320032903e00622153703800620034190096a41186a201437030020034190096a41106a200f37030020034190096a41086a200e3703002003201537039009200341c00a6a41186a22024200370300200341c00a6a41106a22014200370300200341c00a6a41086a22074200370300200342003703c00a20034188086a41d9fcc6004106108102200720034188086a41086a220829000037030020032003290088083703c00a20034188086a4180f4cb00410610810220022008290000370300200120032900880837030020034188036a200341c00a6a4120108e02200328028c0341002003280288031b2202200b4180ce184100200341c0076a20034190096a412010ec081b6a4180ce186a4f0d0220034198046a410e1093080c1f0b20032802f408450d002002102e0b20034198046a41101093080c1d0b02402013450d00200220124b0d0020034198046a410f1093080c1d0b200341d8046a20034190096a200341c0076a200620054100108904200341c00a6a200341c0056a10980820032802c00a220220032802c80a10ff01024020032802c40a450d002002102e0b200341c00a6a41086a410f3a0000200341e90a6a200329039009370000200341d10a6a200341c0056a41086a290300370000200341d90a6a200341c0056a41106a290300370000200341e10a6a200341c0056a41186a290300370000200341f10a6a20034190096a41086a290300370000200341f90a6a20034190096a41106a290300370000200341810b6a20034190096a41186a290300370000200341093a00c00a200341c00a6a41096a20032903c005370000200341b00b6a2006370300200341b80b6a2005370300200341a10b6a200341c0076a41186a290300370000200341990b6a200341c0076a41106a290300370000200341910b6a200341c0076a41086a290300370000200341890b6a20032903c007370000200341c00a6a10fe01200341063a0098040c1e0b200341d8046a41186a200141196a290000370300200341d8046a41106a200141116a290000370300200341d8046a41086a200141096a290000370300200320012900013703d804200341c00a6a41286a2201200241286a280200360200200341c00a6a41206a2207200241206a290200370300200341c00a6a41186a2209200241186a290200370300200341c00a6a41106a220a200241106a290200370300200341c00a6a41086a220b200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10202400240024020032d0090094101460d00200341c0076a200341d8046a10b808200341c00a6a20032802c007220820032802c807220c10b105200341e8086a41026a220220032d00c30a3a0000200341d0066a41086a200341c00a6a41e0006a290300370300200320032f00c10a3b01e8082003200341c00a6a41d8006a2903003703d0060240024020032d00c00a220d4102470d00200341a0096a4200370300200341a8096a4200370300200341b0096a4200370300200341b8096a420037030020034190096a41306a420037030020034190096a41386a420037030020034190096a41c0006a4100360200200341083602940920034190096a41086a4200370300200341003a0090090c010b200341c00a6a41c8006a2903002105200341c00a6a41c0006a2903002106200341c00a6a41386a290300210e2001290300210f2007290300211420092903002115200a2903002116200341c00a6a41306a2903002117200341c00a6a410c6a2802002101200b280200210720032802c40a210920034190096a41d0006a200341c00a6a41d0006a29030037030020034190096a41c8006a200537030020034190096a41c0006a200637030020034190096a41386a200e370300200341b8096a200f370300200341b0096a2014370300200341a8096a2015370300200341a0096a201637030020034190096a41306a201737030020034190096a410c6a200136020020034190096a41086a200736020020034190096a41d8006a20032903d00637030020034190096a41e0006a200341d0066a41086a2903003703002003200d3a009009200320032f01e8083b0091092003200936029409200320022d00003a00930920034190096a41e8006a200341c00a6a41e8006a2903003703000b200341d80a6a22024200370300200341c00a6a41106a22014200370300200341c00a6a41086a22074200370300200342003703c00a20034188086a41d9fcc6004106108102200720034188086a41086a220929000037030020032003290088083703c00a20034188086a4180f4cb004106108102200220092900003703002001200329008808370300200341a0036a200341c00a6a4120108e020240200341f8096a200341d0096a20032d009009220241014622011b28020020032802a403410020032802a0031b4b0d00200341e8096a200341c0096a20011b22014200370300200141106a4100360200200141086a42003703000b0240024020024101470d00200341c0096a290300210e200341b8096a290300210f0c010b200341c8096a290300210e20034190096a41306a290300210f2003419c096a28020041306c2201450d0020032802940941206a21020340200241706a22072903002106200741086a29030021050240200241686a2d00004101470d00427f2005200241086a2903007c200620022903007c22142006542207ad7c22062007200620055420062005511b22071b2105427f201420071b21060b200e20052006200f542005200e542005200e511b22071b210e200f200620071b210f200241306a2102200141506a22010d000b0b200341c00a6a20034190096a41f00010e9081a0240024020032d00c00a22024102470d002008200c10ff010c010b200341e0066a200341c00a6a10c2042008200c20032802e006220120032802e80610b201024020032802e406450d002001102e0b20020d00200341c80a6a2802002202450d00200241306c450d0020032802c40a102e0b024020032802c407450d002008102e0b200f200e844200520d0142e4cab5fbb6ccdcb0e300200341d8046a10ea020c020b200341f0086a41026a200341c0056a41026a2d000022023a0000200320032f00c00522013b01f008200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b42e4cab5fbb6ccdcb0e300200341d8046a200f200e41021085060b200041186a41003a00002000420037030820002003280080063600192000411c6a20034183066a28000036000020004200370300200424000f0b200141046a2802002101200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034199096a29000037030020034180066a41106a2207200341a1096a29000037030020034180066a41186a2208200341a9096a29000037030020032003290091093703800602400240024020032d0090094101470d00200341023a00e0060c010b200341d8046a41186a2008290300370300200341d8046a41106a2007290300370300200341d8046a41086a200229030037030020032003290380063703d804200341e0066a200341d8046a2001410010bf0820032d00e0064106460d0120032902e40621050b20032802e006210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800c007360019200041186a41003a00002000411c6a200341c3076a28000036000020004200370300200424000f0b200141246a2802002107200341e0066a41186a200141196a290000370300200341e0066a41106a200141116a290000370300200341e0066a41086a200141096a290000370300200320012900013703e006200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a20034190096a200341c00a6a10c10220034180066a41086a220220034190096a41096a29000037030020034180066a41106a220120034190096a41116a29000037030020034180066a41186a220820034190096a41196a29000037030020032003290091093703800620032d0090094101460d03200341d8046a41186a2008290300370300200341d8046a41106a2001290300370300200341d8046a41086a200229030037030020032003290380063703d804200341c00a6a200341e0066a2007200341e0066a200341d8046a412010ec0841004710bf08200341c8066a41026a220120032d00c30a3a0000200320032f00c10a3b01c806024020032d00c00a22024106460d0020032902c40a2105200341c0056a41026a20012d00003a0000200320032f01c8063b01c0050c180b200041186a41003a000020004200370308200020032800c0073600192000411c6a200341c3076a28000036000020004200370300200424000f0b200141246a280200210720034190096a41186a2208200141196a29000037030020034190096a41106a2209200141116a29000037030020034190096a41086a220a200141096a2900003703002003200129000137039009200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a2201200241186a290200370300200341c00a6a41106a220b200241106a290200370300200341c00a6a41086a220c200241086a290200370300200320022902003703c00a024002400240200341c00a6a10a705450d00200341023a00d8040c010b20012008290300370300200b2009290300370300200c200a29030037030020032003290390093703c00a200341d8046a200341c00a6a200710970820032d00d8044106460d0120032902dc0421050b20032802d804210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800e006360019200041186a41003a00002000411c6a200341e3066a28000036000020004200370300200424000f0b200141286a280200210a200141246a2802002109200341e0066a41186a200141196a290000370300200341e0066a41106a200141116a290000370300200341e0066a41086a200141096a290000370300200320012900013703e00620022802282101024020022d000022070d002002411a6a2901002105200241196a2d00002107200241186a2d00002108200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f01002113200241116a2d00002112200241106a2d000021102002410e6a2f010021112002410d6a2d000021222002410c6a2d000021232002410a6a2f0100212b200241096a2d00002129200241086a2d0000212a200241066a2f0100212c200241056a2d00002132200241046a2d00002131200241026a2f0100213320022d0001210220012001280200417f6a2236360200024020360d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22362036280200417f6a223636020020360d002001102e0b200320053701d80a200320073a00d70a200320083a00d60a2003200b3b01d40a2003200c3a00d30a2003200d3a00d20a200320133b01d00a200320123a00cf0a200320103a00ce0a200320113b01cc0a200320223a00cb0a200320233a00ca0a2003202b3b01c80a200320293a00c70a2003202a3a00c60a2003202c3b01c40a200320323a00c30a200320313a00c20a200320333b01c00a0240200241ff01710d00410321070c010b4110102c2202450d48200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d4820014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a22083602004100210720080d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22082008280200417f6a220836020020080d002002102e0b024020074103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b20034198046a41026a20034188086a41026a2d000022023a0000200320032f00880822013b019804200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341c80a6a4200370300200342ffffffff1f3703c00a20034190096a200341e0066a10ba082003280290092202200328029809200341c00a6a10bf050240200328029409450d002002102e0b20034180066a109108200328028806220b450d14200b41c4006c41bc7f6a2101200b410274417c6a41027641016a210841002107200328028006210202400340200241046a200341e0066a412010ec08450d01200141bc7f6a2101200241c4006a21022008200741016a2207470d000c160b0b200228020021072002200241c4006a200110ea081a2003200b417f6a3602880620034190096a2007109408200341c00a6a2003280290092202200328029809220110ae05024020032802c00a220b450d002002200110ff010b200341d80a6a2903002114200341d00a6a290300211520032902c40a21160240200328029409450d002002102e0b200b450d142016422088a74105742207450d13200341d8046a41086a2108200b21020340200241086a2900002105200241106a29000021062002290000210e20034190096a41186a200241186a29000037030020034190096a41106a200637030020034190096a41086a20053703002003200e37039009200341b8036a20034190096a2015201410cb0220032903b80321052003200341b8036a41086a29030022063703c80a200320053703c00a0240024020052006844200520d002003200341c00a6a3602d804200341d8046a10cc020c010b200342f0f2bda1a7ee9cb9f9003703d804200341c00a6a200341d8046a10cd02200341a8036a200341c00a6a2005200610fd01200341d8046a41106a200341a8036a41086a290300220f20067d20032903a803220e200554ad7d2006200f7d2005200e54ad7d200e200556200f200656200f2006511b22011b3703002003200e20057d2005200e7d20011b3703e00420032001ad3703d8040240024020010d00200320083602c007200341c0076a10cc020c010b200320083602c007200341c0076a10ce020b200341c00a6a41186a2006370300200320053703d00a200341063a00c80a2003410e3a00c00a200341c00a6a10fe010b200241206a2102200741606a22070d000c140b0b200141046a2802002109200341c00a6a41286a200241286a280200360200200341c00a6a41206a200241206a290200370300200341c00a6a41186a200241186a290200370300200341c00a6a41106a200241106a290200370300200341c00a6a41086a200241086a290200370300200320022902003703c00a200341c00a6a10fd0641ff01714102460d0e20034190096a10910820032802980921084100210a200341003602980902402008450d004100210c200328029009210b4100210a410021010240034002400240200a450d00200b200141c4006c6a2102200b2001200c6a41c4006c6a2107034020022802002009460d022007200241c40010e9082107200241c4006a2102200741c4006a21072008200141016a22014b0d000c040b0b200b200141c4006c6a2102034020022802002009460d01200241c4006a21022008200141016a22014b0d000b4100210a0c030b200c417f6a210c200a41016a210a2008200141016a22014b0d000b0b0240200a0d004100210a0c010b200b2001200a6b41c4006c6a200b200141c4006c6a200820016b41c4006c10ea081a0b20032008200a6b220236029809200341c00a6a41086a2002360200200320032903900922053703c00a024002402005a722020d0020034198066a2202420037030020034190066a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418c81ca00410b10810220022008290000370300200120032900c00737030020034180066a412010ff010c010b20034198066a2201420037030020034190066a2207420037030020034180066a41086a220842003703002003420037038006200341c0076a41de80ca0041091081022008200341c0076a41086a220a290000370300200320032900c00737038006200341c0076a418c81ca00410b1081022001200a290000370300200720032900c00737030020034180066a200341c00a6a10c40520032802c40a2201450d00200141c4006c450d002002102e0b20034190096a2009109408200341c00a6a2003280290092202200328029809220110ae05024020032802c00a2209450d002002200110ff010b2003280294092101024020090d002001450d112002102e0c110b200341d80a6a2903002114200341d00a6a2903002115200341c80a6a280200210720032802c40a210a02402001450d002002102e0b20074105742207450d0f200341d8046a41086a2108200921020340200241086a2900002105200241106a29000021062002290000210e20034190096a41186a200241186a29000037030020034190096a41106a200637030020034190096a41086a20053703002003200e37039009200341e8036a20034190096a2015201410cb0220032903e80321052003200341e8036a41086a29030022063703c80a200320053703c00a0240024020052006844200520d002003200341c00a6a3602d804200341d8046a10cc020c010b200342f0f2bda1a7ee9cb9f9003703d804200341c00a6a200341d8046a10cd02200341d8036a200341c00a6a2005200610fd01200341d8046a41106a200341d8036a41086a290300220f20067d20032903d803220e200554ad7d2006200f7d2005200e54ad7d200e200556200f200656200f2006511b22011b3703002003200e20057d2005200e7d20011b3703e00420032001ad3703d8040240024020010d00200320083602e006200341e0066a10cc020c010b200320083602e006200341e0066a10ce020b200341c00a6a41186a2006370300200320053703d00a200341063a00c80a2003410e3a00c00a200341c00a6a10fe010b200241206a2102200741606a22070d000c100b0b410221020c130b20034190096a41026a20032d00c20a22023a0000200341d8046a41026a20023a0000200320032f01c00a22023b019009200320023b01d8042006420888a721022006421888a7210120032903d00a21052006a7212a4100212b0c170b20034190096a41026a20032d00c20a22023a0000200341d8046a41026a20023a0000200320032f01c00a22023b019009200320023b01d8042006420888a721022006421888a7210120032903d00a21052006a7212a4100212b0c170b410221020c170b410221020c1a0b427f201b20057c202820067c220f2028542202ad7c220e2002200e201b54200e201b511b22021b211b427f200f20021b2128427f201d201a7c2020201c7c220f2020542202ad7c220e2002200e201d54200e201d511b22021b211d427f200f20021b2120410121020c160b200341023a0080060c190b200341e0066a41026a200341d8046a41026a2d000022023a0000200320032f00d80422013b01e006200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341023a0088080c380b200220134180c1cb00103c000b2002201341f0c0cb00103c000b200341c0076a41021093080c370b200341023a00c0070c370b200341023a00c0050c3a0b200341c00a6a41026a200341c0056a41026a2d000022023a0000200320032f00c00522013b01c00a200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000420121050c020b200a41ffffff3f71450d002009102e0b4200210520004200370308200020032800c00a360019200041186a41003a00002000411c6a200341c30a6a2800003600000b20002005370300200424000f0b201642ffffff3f83500d00200b102e0b200341c00a6a41086a20034180066a41086a280200360200200320032903800622053703c00a024002402005a722020d00200341d0046a22024200370300200341c8046a22014200370300200341b8046a41086a22074200370300200342003703b804200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c0073703b804200341c0076a418c81ca00410b10810220022008290000370300200120032900c007370300200341b8046a412010ff010c010b200341d0046a22014200370300200341c8046a22074200370300200341b8046a41086a22084200370300200342003703b804200341c0076a41de80ca0041091081022008200341c0076a41086a220b290000370300200320032900c0073703b804200341c0076a418c81ca00410b1081022001200b290000370300200720032900c007370300200341b8046a200341c00a6a10c40520032802c40a2201450d00200141c4006c450d002002102e0b20034180066a41186a2202420037030020034180066a41106a2201420037030020034180066a41086a220742003703002003420037038006200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c00737038006200341c0076a418081ca00410c10810220022008290000370300200120032900c007370300200341c00a6a20034180066a10aa0520032d00e00a2102200341b8046a41186a2201200341c00a6a41186a290300370300200341b8046a41106a2207200341c00a6a41106a290300370300200341b8046a41086a2208200341c00a6a41086a290300370300200320032903c00a3703b804024020024103460d0020034190096a41186a200129030037030020034190096a41106a200729030037030020034190096a41086a2008290300370300200320032903b80437039009200320023a00b00920034190096a200341e0066a412010ec080d00200341d0046a22024200370300200341c8046a22014200370300200341b8046a41086a22074200370300200342003703b804200341c0076a41de80ca0041091081022007200341c0076a41086a2208290000370300200320032900c0073703b804200341c0076a418081ca00410c10810220022008290000370300200120032900c007370300200341b8046a412010ff010b02402009450d0020034190096a200a108905200341c00a6a2003280290092202200328029809108a0520034180066a41086a2201200341800b6a29030037030020034180066a41106a2207200341880b6a29030037030020034180066a41186a2208200341900b6a29030037030020034180066a41206a2209200341980b6a29030037030020034180066a41286a220b200341a00b6a290300370300200320032800c10a3602c806200320032800c40a3600cb062003200341f80a6a290300370380060240024020032d00c00a220c4102460d00200341f00a6a2903002116200341c00a6a41286a2903002117200341c00a6a41206a2903002118200341c00a6a41186a2903002119200341c00a6a41106a290300211f200341c00a6a41086a290300211e200341c0056a41286a200b290300370300200341c0056a41206a2009290300370300200341c0056a41186a2008290300370300200341c0056a41106a2007290300370300200341c0056a41086a200129030037030020032003290380063703c0050240200328029409450d002002102e0b200341c0076a41086a200341c0056a41086a2903002205370300200341c0076a41106a200341c0056a41106a2903002206370300200341c0076a41186a200341c0056a41186a290300220e370300200341c0076a41206a200341c0056a41206a290300220f370300200341c0076a41286a200341c0056a41286a2903002214370300200320032903c00522153703c007200341c00a6a41286a22022014370300200341c00a6a41206a2201200f370300200341c00a6a41186a2207200e370300200341c00a6a41106a22082006370300200341c00a6a41086a22092005370300200320153703c00a200c450d01200341d8046a41111093080c020b0240200328029409450d002002102e0b200341d8046a41111093080c010b20034184056a2016370200200341f4046a2018370200200341d8046a410c6a201f37020020034194056a20092903003702002003419c056a2008290300370200200341a4056a2007290300370200200341ac056a2001290300370200200341b4056a2002290300370200200320173702fc04200320193702ec042003201e3702dc04200320032903c00a37028c0520034190096a200341dc046a41e00010e9081a200341c8096a200341e0066a412010ec080d00200341c00a6a410c6a200a360200200341c80a6a41063a0000200341093a00c00a200341c00a6a10fe01200341c00a6a200a10890520032802c00a220220032802c80a10ff0120032802c40a450d002002102e0b200341c00a6a41086a41113a0000200341093a00c00a200341c00a6a41096a20032903e006370000200341c00a6a41116a200341e0066a41086a290300370000200341d90a6a200341f0066a290300370000200341e10a6a200341e0066a41186a290300370000200341c00a6a10fe01200041186a41003a000020004200370308200020032800f0083600192000411c6a200341f3086a28000036000020004200370300200424000f0b200341f0086a41026a200341c0056a41026a2d000022013a0000200320032f01c00522073b01f008200041206a20023a0000200041186a41003a000020004200370308200020073b0021200041236a20013a00002000200537002420004201370300200424000f0b20032902c40a210520032802c00a21020240200328029409450d002001102e0b2003200537029c0420032002360298040b20032d0098044106460d01200329029c0421050b200328029804210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800d008360019200041186a41003a00002000411c6a200341d3086a28000036000020004200370300200424000f0b200320032f01d8043b018006200320073a009f06200320083b009d06200320093a009c062003200a3a009b062003200b3b0099062003200c3a0098062003200537039006200320013a008f06200320023b008d062003202a3a008c062003200d3a008b06200320133b008906200320123a008806200320103a008706200320113b008506200320223a008406200320233a008306410221022003200341d8046a41026a2d00003a008206024002400240202b0d00200341b8046a41186a20034180066a41186a2903002205370300200341b8046a41106a20034180066a41106a2903002206370300200341b8046a41086a20034180066a41086a290300220e3703002003200329038006220f3703b804200341c00a6a41186a2005370300200341c00a6a41106a2006370300200341c00a6a41086a200e3703002003200f3703c00a200320323602980920032029360294092003202c36029009200341d8046a200341c00a6a20034190096a10bd08200341c8066a41026a20032d00db043a0000200320032f00d9043b01c80620032d00d80422024106460d0220032902dc042105200341c0056a41026a200341c8066a41026a2d00003a0000200320032f01c8063b01c0050c010b02402029450d00202c102e0b0b200341f0086a41026a2201200341c0056a41026a2d00003a0000200320032800e0063602c007200320032f01c0053b01f0082003200341e3066a2800003600c307200041186a41003a000020004200370308200020032802c0073600192000411c6a20032800c307360000200041206a20023a0000200041246a2005370200200020032f01f0083b0021200041236a20012d00003a000020004201370300200424000f0b200320032800e0063602c0072003200341e3066a2800003600c307200041186a41013a000020004200370308200020032802c0073600192000411c6a20032800c30736000020004200370300200424000f0b200320032f01d8043b018006200320073a009f06200320083b009d06200320093a009c062003200a3a009b062003200b3b0099062003200c3a0098062003200537039006200320013a008f06200320023b008d062003202a3a008c062003200d3a008b06200320133b008906200320123a008806200320103a008706200320113b008506200320223a008406200320233a008306410221022003200341d8046a41026a2d00003a008206024002400240202b0d00200341b8046a41186a20034180066a41186a2903002205370300200341b8046a41106a20034180066a41106a2903002206370300200341b8046a41086a20034180066a41086a290300220e3703002003200329038006220f3703b804200341c00a6a41186a2005370300200341c00a6a41106a2006370300200341c00a6a41086a200e3703002003200f3703c00a200320323602980920032029360294092003202c36029009200341d8046a200341c00a6a20034190096a10bc08200341c8066a41026a20032d00db043a0000200320032f00d9043b01c80620032d00d80422024106460d0220032902dc042105200341c0076a41026a200341c8066a41026a2d00003a0000200320032f01c8063b01c0070c010b02402029450d00202c102e0b0b200341c0056a41026a200341c0076a41026a2d000022013a0000200320032f01c00722073b01c005200041206a20023a0000200041186a41003a000020004200370308200020073b0021200041236a20013a00002000200537002420004201370300200424000f0b200041186a41003a000020004200370308200020032800e0063600192000411c6a200341e3066a28000036000020004200370300200424000f0b200320032800d0083602c0082003200341d3086a2800003600c308200041186a41003a000020004200370308200020032802c0083600192000411c6a20032800c308360000200041246a2005370200200041206a200236020020004201370300200424000f0b200341900b6a201b370300200341880b6a2028370300200341800b6a201d370300200341f80a6a2020370300200341e80a6a2019370300200341e00a6a201e370300200341d80a6a2018370300200341d00a6a201f370300200341f00a6a2021370300200341cc0a6a2036360200200341c00a6a41086a2035360200200341980b6a20032903d008370300200341ac0b6a203d360200200341a80b6a203e360200200341a00b6a200341d0086a41086a290300370300200320032f01e4083b00c10a200320073602c40a2003200341e4086a41026a2d00003a00c30a200320013a00c00a0240024020014102470d00203b203c10ff010c010b200341d8046a200341c00a6a10c204203b203c20032802d804220820032802e00410b201024020032802dc04450d002008102e0b20010d002035450d00203541306c450d002007102e0b024020032802c408450d00203b102e0b20034188086a20062005108307200341d80a6a20032903d805370300200320032903d0053703d00a200320032903c80522063703c80a200320032903c00522053703c00a200341e00a6a20034190096a41c80010e9081a200341ac0b6a203a360200200341a80b6a20032802b80836020002402005a7220141ff01714102470d002037203910ff01410021010c010b200341d8046a200341c00a6a10c2042037203920032802d804220720032802e00410b201024020032802dc04450d002007102e0b0240200141ff01710d002006a72201450d00200141306c450d002005422088a7102e0b410021010b024020032802ac08450d002037102e0b20010d01200341c00a6a41086a41083a0000200341e90a6a20032903f008370000200341093a00c00a200341c00a6a41096a200329038808370000200341d10a6a20034188086a41086a290300370000200341d90a6a20034188086a41106a290300370000200341e10a6a20034188086a41186a290300370000200341f10a6a200341f0086a41086a290300370000200341f90a6a200341f0086a41106a290300370000200341810b6a200341f0086a41186a290300370000200341c00a6a10fe01200320032800910436028804200320034194046a28000036008b04200041186a41003a0000200041106a2002ad220542d8d4ea037e200542c0f0f50b7e7c20054280c2d72f7e7c42b8b8c589027c3703002000420137030820002003280288043600192000411c6a200328008b0436000020004200370300200424000f0b20032902c40a210520032802c00a21020b200320032800910436028804200320034194046a28000036008b04200041186a41003a00002000420037030820002003280288043600192000411c6a200328008b04360000200041246a2005370200200041206a200236020020004201370300200424000f0b200328028006210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800c005360019200041186a41003a00002000411c6a200341c3056a28000036000020004200370300200424000f0b20004200370308200020032800f008360019200041186a41003a00002000411c6a200341f3086a28000036000020004200370300200424000f0b0c030b20032005421888a73a00c30a20032005421088a73a00c20a20032005a73b01c00a200320063702c40a20032903c00a21054110102c2202450d21200241f8f7c60036020c2002410136020820024281808080103702004110102c2207450d212006422088210620074190f8c60036020c20074101360208200742818080801037020020022002280200417f6a2201360200024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b2006a72108410221020b20032005370294092003200b3a0093092003200c3a0092092003200d3b0190090b41002101200241ff0171410346220a0d00200341e60a6a20353b0100200341e20a6a2008360100200341da0a6a2005370100200341d90a6a200b3a0000200341d80a6a200c3a0000200341d60a6a200d3b0100200341d50a6a20293a0000200341d40a6a202a3a0000200341d20a6a202c3b0100200341d10a6a20323a0000200341d00a6a20313a0000200341ce0a6a20123b0100200341cd0a6a20103a0000200341cc0a6a20113a0000200341ca0a6a20223b0100200341c90a6a20233a0000200341c80a6a202b3a0000200320073602e80a200320333b01c60a200320363a00c50a200320133a00c40a200320373b01c20a200320383a00c10a200320023a00c00a41012101200341c00a6a10fd0641ff01714102470d00200341023a00c0050c010b200341b8046a41186a22024200370300200341b8046a41106a22084200370300200341b8046a41086a220b4200370300200342003703b804200341c0076a41de80ca004109108102200b200341c0076a41086a220c290000370300200320032900c0073703b804200341c0076a418081ca00410c1081022002200c290000370300200820032900c007370300200341c00a6a200341b8046a10aa0520032d00e00a210220034180066a41186a2208200341c00a6a41186a29030037030020034180066a41106a200341c00a6a41106a29030037030020034180066a41086a200341c00a6a41086a290300370300200320032903c00a370380060240024020024103460d00200341f7066a220b2008290000370000200341e0066a41106a220820034180066a41116a290000370300200341e0066a41086a20034180066a41096a2900002205370300200320032900810622063703e00620032d008006210c20034190096a41096a200537000020034190096a41116a200829030037000020034190096a41186a200b2900003700002003200c3a0090092003200637009109024020020d00200341c0056a41071093080c020b0240200341d8046a20034190096a412010ec08450d00200341c0056a41081093080c020b20034180066a41186a2208420037030020034180066a41106a220b420037030020034180066a41086a220c42003703002003420037038006200341c0076a41de80ca004109108102200c200341c0076a41086a220d290000370300200320032900c00737038006200341c0076a418081ca00410c1081022008200d290000370300200b20032900c00737030020034180066a412010ff01200341c00a6a41186a22084200370300200341c00a6a41106a220b4200370300200341c00a6a41086a220c4200370300200342003703c00a20034188086a41d9fcc6004106108102200c20034188086a41086a220d29000037030020032003290088083703c00a20034188086a4180f4cb0041061081022008200d290000370300200b200329008808370300200341e0016a200341c00a6a4120108e0220032802e401210d20032802e00121132008200341d8046a41186a290300370300200b200341d8046a41106a290300370300200c200341d8046a41086a290300370300200320032903d8043703c00a200d410020131b20096a200341c00a6a200220341095082001200a720d0320072007280200417f6a220236020020020d032007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d032007102e0c030b200341c0056a41021093080b02402001200a724101460d0020072007280200417f6a220236020020020d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22022002280200417f6a220236020020020d002007102e0b20032d00c0054106460d020b20032802c0052102200020032902c405370024200041206a2002360000200041186a41003a00002000420037030820004201370300200424000f0b200341063a00c0050b20004200370308200020032800f008360019200041186a41003a00002000411c6a200341f3086a28000036000020004200370300200424000f0b4110102c2202450d1a200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1a20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341f0086a41026a200341c0056a41026a2d000022023a0000200320032f00c00522013b01f008200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b20004200370308200020032800c005360019200041186a41003a00002000411c6a200341c3056a28000036000020004200370300200424000f0b20032d0088084106470d030b20004200370308200020032800b804360019200041186a41003a00002000411c6a200341bb046a28000036000020004200370300200424000f0b4110102c2202450d15200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1520014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220736020020070d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22072007280200417f6a220736020020070d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341023a0088080b20032802880821022000200329028c08370024200041206a2002360000200041186a41003a00002000420037030820004201370300200424000f0b2030211e201521180b202f211c2016211a0b200341c00a6a41046a222b20034198046a41046a2d00003a000020032003280298043602c00a202a20113a0000200120123a0000200a20103a00002007200241306c6a2202410f6a202b2d00003a00002002410b6a20032802c00a36000020292005370308202920063703002009200e3703082009200f3703000c010b200341f0086a41046a20034198046a41046a2d00003a000020032003280298043602f00820132001490d0202402013200d470d00200d41016a2202200d490d11200d41017422092002200920024b1b22024104200241044b1bad42307e2215422088a74541037421022015a7210902400240200d0d00200341003602c00a0c010b200341c00a6a41086a4108360200200320073602c00a2003200d41306c3602c40a0b200341d8046a20092002200341c00a6a107d200341e0046a280200210220032802d8044101460d0520032802dc042107200241306e210d0b2007200141306c6a220241306a2002201320016b41306c10ea081a2002410a6a20103a0000200241096a20113a0000200220123a000820022008360200200241286a200e370300200241206a200f370300200241186a2005370300200241106a20063703002002410b6a20032802f0083600002002410f6a200341f4086a2d00003a0000201341016a21130b0240024002400240201241ff01714101470d00200341c8006a20062005420a420010e708200341386a200f200e420a420010e708201e20067c2216201e542202201820057c2002ad7c221520185420152018511b0d022016200f7c220f20165422022015200e7c2002ad7c220e201554200e2015511b0d02201c20032903487c2216201c542202201a200341c8006a41086a2903007c2002ad7c2215201a542015201a511b0d01201d20032903387c221e201d542202201b200341386a41086a2903007c2002ad7c2218201b542018201b511b450d09200f211e200e21182016211c2015211a0c020b02400240201041ff0171450d0041062102024002400240024002400240024020104107710e0700010203040506000b410021020c050b410121020c040b410221020c030b410321020c020b410421020c010b410521020b200341e8006a200542002002ad220e420010e808200341f8006a20064200200e420010e808427f20034180016a290300220e20032903687c220f2003290370420052200f200e547222021b2115427f200329037820021b21160c010b200341d8006a20062005420a420010e708200341e0006a2903002115200329035821160b201e20067c220f201e542202201820057c2002ad7c220e201854200e2018511b0d010240201141ff01710d00201d20167c221e201d542202201b20157c2002ad7c2218201b542018201b511b0d01201241ff0171450d060c080b201c20167c2216201c542202201a20157c2002ad7c2215201a542015201a511b450d020b200f211e200e21180b20034180066a41191093080c010b0240201241ff01710d00201141ff01714102460d00427f201520277c201620197c22182016542202ad7c22162002201620155420162015511b22021b2115427f201820021b2116427f200e20287c200f201f7c2218200f542202ad7c220f2002200f200e54200f200e511b22021b210e427f201820021b210f0b201d211e201b21180c050b024020032d00800622024106470d00201e210f2018210e201d211e201b2118201c2116201a21150c060b200341ca066a20032d0083063a0000200320032f0081063b01c80620032902840621190240200c0d00200d450d00200d41306c450d002007102e0b201e210f2018210e201d211e201b2118201c2116201a21150c060b200120131045000b427f201820277c201e20197c2216201e542202ad7c22152002201520185420152018511b22021b2118427f201620021b211e427f200e20287c200f201f7c2215200f542202ad7c220f2002200f200e54200f200e511b22021b210e427f201520021b210f0c010b2002450d0b0c0a0b201c2116201a21150b200341063a0080060b200341900b6a2020370300200341880b6a2021370300200341800b6a2026370300200341f80a6a2025370300200341e80a6a2028370300200341e00a6a201f370300200341d80a6a2027370300200341d00a6a2019370300200341f00a6a2024370300200341cc0a6a2013360200200341c00a6a41086a200d360200200341980b6a200329039009370300200341ac0b6a2022360200200341a80b6a2023360200200341a00b6a20034190096a41086a290300370300200320032f01c0083b00c10a200320073602c40a2003200341c0086a41026a2d00003a00c30a2003200c3a00c00a20032802c805210220032802c005210102400240200c4102470d002001200210ff010c010b200341d8046a200341c00a6a10c2042001200220032802d804220920032802e00410b201024020032802dc04450d002009102e0b200c0d00200d450d00200d41306c450d002007102e0b200341ca066a20032d0083063a0000200320032f0081063b01c8062003290284062119410621020b024020032802c405450d0020032802c005102e0b200341a8086a41026a2201200341c8066a41026a2d00003a0000200320032f01c8063b01a808024020024106470d00200341c0076a427f2017200b1b2006201241ff017141014622021b427f2014200b1b200520021b108307200341f00a6a200e370300200341c00a6a41286a200f370300200341c00a6a41206a2018370300200341c00a6a41186a201e370300200341c00a6a41106a2015370300200341f80a6a20032903e006370300200341800b6a200341e8066a290300370300200341880b6a200341e0066a41106a290300370300200341900b6a200341e0066a41186a290300370300200341980b6a200341e0066a41206a290300370300200341a00b6a200341e0066a41286a290300370300200320163703c80a200341003a00c00a200341d8046a200810890520032802e004210120032802d804210220034100360298092003420137039009200341c00a6a20034190096a10bc0520022001200328029009220720032802980910b2010240200328029409450d002007102e0b024020032802dc04450d002002102e0b200341063a0088080c030b200320023a008808200320032f01a8083b0089082003201937028c08200320012d00003a008b080b20032d0088084106460d01200329028c0821050b200328028808210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800b804360019200041186a41003a00002000411c6a200341bb046a28000036000020004200370300200424000f0b20032d00c0074106460d0120032902c40721050b20032802c007210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800c005360019200041186a41003a00002000411c6a200341c3056a28000036000020004200370300200424000f0b1036000b1038000b20032802c005210320002005370024200041206a2003360000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800f008360019200041186a41003a00002000411c6a200341f3086a28000036000020004200370300200424000bec7a08077f027e017f017e027f017e067f037e230041a00a6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010203040506000b200341c4076a4101360200200342013702b4072003419cc3cb003602b007200341043602fc0420034194c3cb003602f8042003200341f8046a3602c007200341b0076a41b8afc9001044000b20012d000121042001412c6a2802002105200141286a2802002106200141246a2802002107200341c8026a41186a2001411a6a290000370300200341c8026a41106a200141126a290000370300200341c8026a41086a2001410a6a2900003703002003200141026a2900003703c802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2208200241186a290200370300200341b0076a41106a2201200241106a290200370300200341b0076a41086a2209200241086a290200370300200320022902003703b007024002400240200341b0076a10a7050d00200842003703002001420037030020094200370300200342003703b007200341f8046a41c8afc90041131081022009200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220082002290000370300200120032900f804370300200341f8046a200341b0076a10880320032802f804210220032902fc04210a2007200510fc02200341b0076a200720052002410120021b2208200a420020021b220a422088220ba710fe022001280200210120032802b407210220032802b007210920032802bc07220c200341c4076a2802002007200510f5020240200141ffffff3f71450d00200c102e0b0240200241ffffff3f71450d002009102e0b200341f8006a41186a2201200341c8026a41186a290300370300200341f8006a41106a2202200341c8026a41106a290300370300200341f8006a41086a2209200341c8026a41086a290300370300200320032903c802370378200441ff01710d01200341f8046a41186a22014200370300200341f8046a41106a22024200370300200341f8046a41086a22094200370300200342003703f80420034198016a41c8afc9004113108102200920034198016a41086a220429000037030020032003290098013703f80420034198016a41dbc3cb004105108102200120042900003703002002200329009801370300200341f8046a412010ff010c020b0240200641ffffff3f71450d002007102e0b200320032800b8013602f801200320032900a802370388022003200341bb016a2800003600fb012003200341af026a28000036008f02200041186a41003a000020004200370308200020032802f8013600192000411c6a20032800fb01360000200041206a41023a00002000200329038802370021200041286a200328008f02360000200042013703000c200b200341b0076a41186a2001290300370300200341b0076a41106a2002290300370300200341b0076a41086a2009290300370300200320032903783703b007200341f0096a41186a22014200370300200341f0096a41106a22024200370300200341f0096a41086a22094200370300200342003703f009200341f8046a41c8afc90041131081022009200341f8046a41086a2204290000370300200320032900f8043703f009200341f8046a41dbc3cb00410510810220012004290000370300200220032900f8043703004120102c2201450d1a200342203702fc04200320013602f804200341f8046a200341b0076a41201074200341f0096a412020032802f804220120032802800510b20120032802fc04450d002001102e0b2005ad42b882077e200b42c0b5e5097e7c210b0240200641ffffff3f71450d002007102e0b200b42a0c0b291397c210b0240200a42ffffff3f83500d002008102e0b200320032800b8013602f8012003200341bb016a2800003600fb01200041186a41003a0000200041106a200b37030020004201370308200020032802f8013600192000411c6a20032800fb01360000200042003703000c1e0b200141086a2802002104200141046a2802002105200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2207200241106a290200370300200341b0076a41086a2206200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341f8006a41086a220220034181056a290000370300200341f8006a41106a220820034189056a290000370300200341f8006a41186a220920034191056a290000370300200320032900f90437037820032d00f8044101460d0820034198016a41186a200929030037030020034198016a41106a200829030037030020034198016a41086a20022903003703002003200329037837039801200142003703002007420037030020064200370300200342003703b007200341f8046a41c8afc90041131081022006200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200720032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220a422088220ba741057421012002410120021b22062102024002400240024003402001450d01200141606a2101200220034198016a412010ec082107200241206a210220070d000b200341003602b807200342013703b0072005200341b0076a10900220032802b8072107024020032802b407450d0020032802b007102e0b0240200720044d0d00200341b0076a410a10f307200320032900b1073703602003200341b8076a2800003600670c020b2003410036028005200342013703f8042005200341f8046a109002200341b0076a20032802f80420032802800510b00120034188026a41186a200341b0076a41186a29030037030020034188026a41106a200341b0076a41106a29030037030020034188026a41086a200341b0076a41086a290300370300200320032903b00737038802024020032802fc04450d0020032802f804102e0b200341f8046a200541b00210e9081a200341a8026a41086a20034198016a41086a290300370300200341a8026a41106a20034198016a41106a290300370300200341a8026a41186a20034198016a41186a29030037030020032003290398013703a8024110102c2202450d1c200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1c20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a2208360200024020080d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22082008280200417f6a220836020020080d002002102e0b024002402001280208200341f8046a200128020c28020c1101000d0041022102200341e8026a41023a0000200341e0026a41003a000020012001280200417f6a22083602004200210d200342003703d002200342013703c802024020080d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22082008280200417f6a220836020020080d002001102e0b200341f8046a10dc02410121010c010b200341b0076a200341f8046a41b00210e9081a200341fd096a200341b0026a290300370000200341850a6a200341b8026a2903003700002003418d0a6a200341c0026a290300370000200341950a6a20032f00783b0000200341970a6a200341fa006a2d00003a0000200341013a00f409200341013a00f009200320032903a8023700f509200320013602980a200341c8026a200341b0076a200341f0096a10dd0220032903c8024201512101200341e8026a2d0000210220032903d002210d0b200341f8046a41186a20034188026a41186a290300370300200341f8046a41106a20034188026a41106a290300370300200341f8046a41086a20034188026a41086a29030037030020032003290388023703f8042003200341f0026a2800003600b707200320032900e9023703b0070240024020010d00410621010c010b200320032800b7073600ff01200320032903b0073703f80141062101200d4202510d00200320032800ff013600ef01200320032903f8013703e801200221010b200341f0096a41086a2202200341f8046a41086a290300370300200341f0096a41106a2208200341f8046a41106a290300370300200341f0096a41186a2209200341f8046a41186a290300370300200320032903f8043703f009200320032903e8013703d801200320032800ef013600df01200341053a00b4072003410a3a00b007200341bd076a2002290300370000200341c5076a2008290300370000200341cd076a2009290300370000200341d8076a20013a0000200320032903f0093700b507200341d5076a20032f00e5013b0000200341d7076a200341e7016a2d00003a0000200341d9076a20032903d801370000200341e0076a20032800df01360000200341fc076a200341b8016a41186a280200360200200341f4076a200341b8016a41106a290200370200200341ec076a200341b8016a41086a290200370200200341e4076a20032902b801370200200341b0076a10fe01200da70d024200210b0c030b200341b0076a410110f307200320032900b1073703602003200341b8076a2800003600670b20032d00b0072101200a42ffffff3f83500d1e2006102e0c1e0b427f2007ad42a01f7e200b4280eb067e7c42d8bbe3167c220b200341c8026a41106a2903007c220d200d200b541b210d4201210b0b0240200a42ffffff3f83500d002006102e0b2005102e2003200341f4006a28000036005b20032003280071360258200041186a41003a0000200041106a200d3703002000200b370308200020032802583600192000411c6a200328005b360000200042003703000c1d0b2001410c6a2802002104200141086a2802002105200141046a280200210c200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2206200241106a290200370300200341b0076a41086a2207200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341c8026a41086a220220034181056a290000370300200341c8026a41106a220820034189056a290000370300200341c8026a41186a220920034191056a290000370300200320032900f9043703c80202400240024020032d00f8044101460d0020034188026a41186a200929030037030020034188026a41106a200829030037030020034188026a41086a2002290300370300200320032903c80237038802200142003703002006420037030020074200370300200342003703b007200341f8046a41c8afc90041131081022007200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200620032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220b422088220aa741057421012002410120021b2208210203402001450d02200141606a2101200220034188026a412010ec082107200241206a210220070d000b200341003602b807200342013703b0072005200341b0076a10900220032802b8072101024020032802b407450d0020032802b007102e0b200120044d0d02200341b0076a410a10f3070c1b0b410221010c1c0b200341b0076a410110f3070c190b2003410036028005200342013703f8042005200341f8046a109002200341b0076a20032802f80420032802800510b001200341a8026a41186a2202200341b0076a41186a2207290300370300200341a8026a41106a2209200341b0076a41106a2204290300370300200341a8026a41086a220e200341b0076a41086a220f290300370300200320032903b0073703a802024020032802fc04450d0020032802f804102e0b2007200229030037030020042009290300370300200f200e290300370300200320032903a8023703b007200341f8046a200341b0076a10f40720032802f8042207200328028005108f022102024020032802fc04450d002007102e0b02402002450d00200341b0076a410210f3070c190b024002400240200c41014b0d00200341c8076a4200370300200341c0076a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a41c8afc90041131081022002200341f8046a41086a2207290000370300200320032900f8043703b007200341f8046a41c7c3cb004107108102200641086a2007290000370000200620032900f804370000200341c8026a200341b0076a1088030240024020032802c80222020d00410021090c010b20032902cc02220d422088a72109200d42ffffff3f83500d002002102e0b200341f8046a200541b00210e9081a4110102c2207450d1a200741f8f7c60036020c2007410136020820074281808080103702004110102c2202450d1a20024190f8c60036020c20024101360208200242818080801037020020072007280200417f6a2206360200024020060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22062006280200417f6a220636020020060d002007102e0b024002402002280208200341f8046a200228020c28020c1101000d0041022107200341e8026a41023a0000200341e0026a41003a000020022002280200417f6a22063602004200210d200342003703d002200342013703c802024020060d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22062006280200417f6a220636020020060d002002102e0b200341f8046a10dc02410121020c010b200341b0076a200341f8046a41b00210e9081a200341fc096a2009360200200341f0096a41086a4101360200200341f0096a41106a200329019801370300200341880a6a20034198016a41086a290100370300200341f0096a41206a20034198016a41106a290100370300200341003a00f409200341013a00f009200320032f00783b00f5092003200341fa006a2d00003a00f709200320023602980a200341c8026a200341b0076a200341f0096a10dd0220032903c8024201512102200341c8026a41206a2d0000210720032903d002210d0b200341f0096a41186a200341a8026a41186a290300370300200341f0096a41106a200341a8026a41106a290300370300200341f0096a41086a200341a8026a41086a290300370300200320032903a8023703f0092003200341f0026a2800003600b707200320032900e9023703b0070240024020020d00410621020c010b200320032800b7073600ff01200320032903b0073703f80141062102200d4202510d00200320032800ff013600ef01200320032903f8013703e801200721020b200341f8006a41086a2207200341f0096a41086a290300370300200341f8006a41106a2206200341f0096a41106a290300370300200341f8006a41186a2209200341f0096a41186a290300370300200320032903f009370378200320032903e8013703d801200320032800ef013600df01200341043a00b4072003410a3a00b007200341bd076a2007290300370000200341c5076a2006290300370000200341cd076a2009290300370000200341d8076a20023a0000200320032903783700b507200341d5076a20032f00e5013b0000200341d7076a200341e7016a2d00003a0000200341d9076a20032903d801370000200341e0076a20032800df01360000200341fc076a200341b8016a41186a280200360200200341f4076a200341b8016a41106a290200370200200341ec076a200341b8016a41086a290200370200200341e4076a20032902b801370200200341b0076a10fe010240200da70d004200210d0c020b427f2001ad42a01f7e200a42e8dd0d7e7c42d8ce86257c220a200341c8026a41106a2903007c220d200d200a541b210a4201210d0c010b200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a41c8afc90041131081022002200341f8046a41086a2209290000370300200320032900f8043703b007200341f8046a41dbafc9004109108102200641086a2009290000370000200620032900f804370000200341f8046a200341b0076a4120108d0320032802f804210220032902fc04210d200341f8046a41186a220e200341a8026a41186a290300370300200341f8046a41106a220f200341a8026a41106a2903003703002009200341a8026a41086a290300370300200320032903a8023703f8042002410120021b21070240024002400240200d420020021b220d4220882210a72202200da7470d00200241016a22042002490d1820024101742211200420042011491b22044104200441044b1b220441ffffff3f712004462111200441057421040240024020020d00200341003602b0070c010b200341b8076a4101360200200320073602b007200320104205863e02b4070b200341c8026a20042011200341b0076a107d200341d0026a280200210420032802c8024101460d0120032802cc022107200d422088a721022004410576ad210d0b200720024105746a220420032903f804370000200441186a200e290300370000200441106a200f290300370000200441086a2009290300370000200241016a220241e4004b0d04200320073602b0072003200d42ffffffff0f832002ad2210422086843702b40720070d0120034190056a2202420037030020034188056a22074200370300200341f8046a41086a22094200370300200342003703f80420034198016a41c8afc9004113108102200920034198016a41086a220429000037030020032003290098013703f80420034198016a41dbafc9004109108102200220042900003703002007200329009801370300200341f8046a412010ff010c020b2004450d160c1b0b20034190056a2202420037030020034188056a22094200370300200341f8046a41086a22044200370300200342003703f80420034198016a41c8afc9004113108102200420034198016a41086a220e29000037030020032003290098013703f80420034198016a41dbafc90041091081022002200e2900003703002009200329009801370300200341f8046a200341b0076a10e6042007450d00200d42ffffff3f83500d002007102e0b200341f8046a41186a22024200370300200341f8046a41106a22074200370300200341f8046a41086a22094200370300200342003703f80420034198016a41c8afc9004113108102200920034198016a41086a220429000037030020032003290098013703f80420034198016a41e4afc900410d108102200220042900003703002007200329009801370300200341186a200341f8046a4120108e02200328021c210e2003280218210f200242003703002007420037030020094200370300200342003703f80420034198016a41c8afc90041131081022009200429000037030020032003290098013703f80420034198016a41e4afc900410d108102200220042900003703002007200329009801370300200341106a200341f8046a4120108e022003280210211120032802142112200242003703002007420037030020094200370300200342003703f80420034198016a41c8afc90041131081022009200429000037030020032003290098013703f80420034198016a41e4afc900410d1081022002200429000037030020072003290098013703002003201241016a410120111b3602b007200341f8046a4120200341b0076a410410b201200341b0076a200541b00210e9081a2002200341a8026a41186a2903003703002007200341a8026a41106a2903003703002009200341a8026a41086a290300370300200320032903a8023703f804200341c8026a200341f8046a10f40720032802c802210220032802d0022107200342013703f8042003410036028005200341b0076a200341f8046a1090022002200720032802f80420032802800510b201024020032802fc04450d0020032802f804102e0b024020032802cc02450d002002102e0b200341b0076a108b02200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a41d9fcc60041061081022002200341f8046a41086a2207290000370300200320032900f8043703b007200341f8046a4180f4cb004106108102200641086a2007290000370000200620032900f804370000200341086a200341b0076a4120108e02200328020c2106200328020821094120102c2202450d192002200329038802370000200241186a20034188026a41186a290300370000200241106a20034188026a41106a290300370000200241086a20034188026a41086a290300370000200341cc076a4100360200200341bc076a4281808080103702002003200641c093066a41c0930620091b3602d0074201210d200342013702c407200320023602b8072003200c3602b4072003200e4100200f1b22063602b007200341f8046a41186a200341a8026a41186a290300370300200341f8046a41106a200341a8026a41106a2903003703002007200341a8026a41086a290300370300200320032903a8023703f804200341c8026a200341f8046a10f50720032802c802220720032802d002200341b0076a10be05024020032802cc02450d002007102e0b2002102e200341bd076a20034188026a41086a290300370000200341c5076a20034188026a41106a290300370000200341cd076a20034188026a41186a290300370000200341d5076a20032903a802370000200341dd076a200341a8026a41086a290300370000200341e5076a200341a8026a41106a290300370000200341ed076a200341a8026a41186a290300370000200341fc076a200c360200200341f8076a2006360200200341003a00b4072003410a3a00b00720032003290388023700b5072001ad4288277e200a42a08a077e7c201042f8fe1c7e7c42a0c28084027c210a200341b0076a10fe010b0240200b42ffffff3f83500d002008102e0b2005102e2003200341e3006a28000036004b20032003280060360248200041186a41003a0000200041106a200a3703002000200d370308200020032802483600192000411c6a200328004b360000200042003703000c1d0b200341b0076a410810f30720032902b407210a20032802b0072101200d42ffffff3f83500d192007102e0c190b200141216a2d00002104200141246a2802002109200341a8026a41186a200141196a290000370300200341a8026a41106a200141116a290000370300200341a8026a41086a200141096a290000370300200320012900013703a802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2207200241106a290200370300200341b0076a41086a2205200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341f8006a41086a2202200341f8046a41096a290000370300200341f8006a41106a2206200341f8046a41116a290000370300200341f8006a41186a2208200341f8046a41196a290000370300200320032900f904370378024002400240024020032d00f8044101460d00200341c8026a41186a2008290300370300200341c8026a41106a2006290300370300200341c8026a41086a2002290300370300200320032903783703c802200142003703002007420037030020054200370300200342003703b007200341f8046a41c8afc90041131081022005200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200720032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220a422088220ba741057421012002410120021b2208210203402001450d02200141606a21012002200341c8026a412010ec082107200241206a210220070d000b200341f8046a200341a8026a10f607200341b0076a20032802f804220220032802800510b30520032802fc04210120032802b807220c450d02200341d0076a2802002113200341cc076a280200210f200341c8076a2802002112200341c4076a2802002114200341c0076a280200210e20032802bc07211120032903b007210d02402001450d002002102e0b2009200da7460d03200341b0076a410410f307200320032900b107370388022003200341b8076a28000036008f020c110b410221010c120b200341b0076a410110f307200320032900b107370388022003200341b8076a28000036008f0220032d00b00721010c100b02402001450d002002102e0b200341b0076a410310f307200320032900b107370388022003200341b8076a28000036008f0220032d00b00721010c0f0b4100210202400240200e0d004101210641002107410021090c010b200e41057441606a41057641016a210541002107200c2101034002402001200341c8026a412010ec080d0041002106410121090c020b200141206a2101410121062005200741016a2207470d000b41002109200521070b02400240024002400240200f450d00200f41057441606a41057641016a2105410021022014210103402001200341c8026a412010ec08450d02200141206a21012005200241016a2202470d000b200521020b2009450d01200441ff01710d03410021050c020b200441ff0171450d052006450d0241002105410121060c130b4100210641012105200441ff01710d120b200341f8046a41186a2202200341c8026a41186a290300370300200341f8046a41106a2206200341c8026a41106a290300370300200341f8046a41086a2215200341c8026a41086a290300370300200320032903c8023703f8040240200f2012470d00201241016a22012012490d13201241017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020120d00200341003602b0070c010b200341b8076a4101360200200320143602b007200320124105743602b4070b200341f0096a20012016200341b0076a107d200341f8096a2802002101024020032802f0094101470d0020010d190c140b20032802f4092114200141057621120b2014200f4105746a220120032903f804370000200141186a2002290300370000200141106a2006290300370000200141086a2015290300370000200f41016a210f2009450d15200e20074d0d04200c200e417f6a220e4105746a220129000021102001290008211720012900102118200c20074105746a220241186a200141186a2900003700002002201837001020022017370008200220103700000c150b200341b0076a410510f307200320032900b107370388022003200341b8076a28000036008f020c0d0b200141286a2802002108200141306a290300210b200141246a2802002107200341a8026a41186a200141196a290000370300200341a8026a41106a200141116a290000370300200341a8026a41086a200141096a290000370300200320012900013703a802200341b0076a41286a200241286a280200360200200341b0076a41206a2201200241206a290200370300200341b0076a41186a2205200241186a290200370300200341b0076a41106a2206200241106a290200370300200341b0076a41086a200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c10202400240024020032d00f8044101460d00200341f8046a200341a8026a10f607200341b0076a20032802f804220920032802800510b30520032802fc042102024020032802b8072204450d002001280200210f200341cc076a280200210c20052802002105200341c4076a280200210e2006280200210120032802bc07210620032903b007210d02402002450d002009102e0b2007200da7460d03200341b0076a410410f307200320032900b107370388022003200341b8076a28000036008f0220032d00b0072102410121070c0c0b02402002450d002009102e0b200341b0076a410310f307200320032900b107370388022003200341b8076a28000036008f0220032d00b00721020c010b410221020b4200210a410021010c0b0b200d422088a7210942002110200341c8076a22074200370300200341c0076a22024200370300200341b0076a41086a22114200370300200342003703b007200341f8046a41c8afc90041131081022011200341f8046a41086a2212290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220072012290000370300200220032900f804370300200341c8026a200341b0076a1088030240024020032802c80222070d00410021110c010b20032902cc02220a4220882210a72111200a42ffffff3f83500d002007102e0b0240024020012009490d00200341b0076a200341a8026a2008200b10f70720032d00b407210220032802b0072108200341f8046a200341b0076a41057241b30210e9081a41012107024020084101460d00200341e8096a350200210a200341c8026a200341fb046a41b00210e9081a200341bd076a200341a8026a41086a2202290300370000200341c5076a200341a8026a41106a2207290300370000200341cd076a200341a8026a41186a2208290300370000200341dc076a200c360200200341d8076a2001360200200341063a00b4072003410a3a00b007200320032903a8023700b507200341b0076a10fe0120034194056a200c360200200341f8046a41186a2005360200200341f8046a41106a200136020020034184056a20063602002003200f360298052003200e36028c0520032004360280052003200d3703f804200341f0096a41186a2008290300370300200341f0096a41106a2007290300370300200341f0096a41086a2002290300370300200320032903a8023703f009200341b0076a200341c8026a41b00210e9081a200341386a2011200341f8046a200341f0096a200341b0076a10f807427f200a42b8177e201042b0c60d7e7c200335024042b09c1b7e7c42e0c3b9dc017c220a20032903387c220b200b200a541b210b0c020b200320032900f804370388022003200341ff046a28000036008f020c0a0b4100210741002011200c6b2212201220114b1b2009490d074200210a200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22074200370300200342003703b007200341f8046a41d9fcc60041061081022007200341f8046a41086a2212290000370300200320032900f8043703b007200341f8046a4180f4cb004106108102200241086a2012290000370000200220032900f804370000200341306a200341b0076a4120108e0202402003280234410020032802301b200f4f0d00200341b0076a410710f307200320032900b107370388022003200728000036008f0220032d00b007210241012107410021010c0b0b200341f0096a41186a22024200370300200341f0096a41106a22074200370300200341f0096a41086a22144200370300200342003703f00920034198016a41c8afc9004113108102201420034198016a41086a221329000037030020032003290098013703f00920034198016a41dbc3cb004105108102200220132900003703002007200329009801370300200341b0076a200341f0096a412010f40220032d00b0072102200341f8046a41186a200341c9076a290000370300200341f8046a41106a200341c1076a2900003703002012200341b9076a290000370300200320032900b1073703f8040240024020024101460d00410221020c010b200341c8026a41186a200341f8046a41186a290300220a370300200341c8026a41106a200341f8046a41106a2903002217370300200341c8026a41086a200341f8046a41086a2903002218370300200320032903f80422193703c802200341b0076a41186a200a370300200341b0076a41106a2017370300200341b0076a41086a2018370300200320193703b00720014105742102200421070340024020020d00410021020c020b200241606a21022007200341b0076a412010ec082112200741206a210720120d000b410121020b41002107410020112001200c6a6b2212200220024102477122021b200c6a21142012410020021b20016a22122009490d04200341b0076a200341a8026a2008200b10f70720032d00b407210220032802b0072108200341f8046a200341b0076a41057241b30210e9081a4101210720084101460d05200341e8096a350200210a200341c8026a200341fb046a41b00210e9081a200341bd076a200341a8026a41086a2202290300370000200341c5076a200341a8026a41106a2207290300370000200341cd076a200341a8026a41186a2208290300370000200341dc076a2014360200200341d8076a2012360200200341063a00b4072003410a3a00b007200320032903a8023700b507200341b0076a10fe0120034194056a200c360200200341f8046a41186a2005360200200341f8046a41106a200136020020034184056a20063602002003200f360298052003200e36028c0520032004360280052003200d3703f804200341f0096a41186a2008290300370300200341f0096a41106a2007290300370300200341f0096a41086a2002290300370300200320032903a8023703f009200341b0076a200341c8026a41b00210e9081a200341206a2011200341f8046a200341f0096a200341b0076a10f807427f200a42b8177e201042e0b60d7e7c20033502284280ac1b7e7c42e0fdcfea017c220a20032903207c220b200b200a541b210b0b4201210a410021010c0b0b200341c8026a41186a2207200141196a290000370300200341c8026a41106a2205200141116a290000370300200341c8026a41086a2206200141096a290000370300200320012900013703c802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2208200241106a290200370300200341b0076a41086a2209200241086a290200370300200320022902003703b00702400240200341b0076a10a705450d00200320032800a80236028802200320032900f0093703b0072003200341ab026a28000036008b022003200341f7096a2800003600b707200041186a41003a00002000420037030820002003280288023600192000411c6a200328008b02360000200041206a41023a0000200020032903b007370021200041286a20032800b7073600004201210a0c010b200341f8046a41186a22022007290300220a370300200341f8046a41106a22072005290300220b370300200341f8046a41086a22052006290300220d370300200320032903c80222103703f804200341bd076a200d370000200341c5076a200b370000200341cd076a200a3700002003410a3a00b007200320103700b507200341033a00b407200341b0076a10fe01200120022903003703002008200729030037030020092005290300370300200320032903f8043703b007200341b0076a10f9072101200320032800a802360288022003200341a8026a41036a28000036008b02200041186a41003a0000200041106a2001ad42d0be1a7e42d0deb8a7017c3703002000420137030820002003280288023600192000411c6a200328008b023600004200210a0b2000200a3703000c190b200341b0076a410510f307200320032900b107370388022003200341b8076a28000036008f020c0a0b2007200e1042000b200341dc076a2014360200200341d8076a2012360200200341bd076a2201200341a8026a41086a2202290300370000200341c5076a2208200341a8026a41106a2209290300370000200341cd076a220c200341a8026a41186a220f290300370000200341063a00b4072003410a3a00b007200320032903a8023700b507200341b0076a10fe01200341f8006a41186a2211200f290300220a370300200341f8006a41106a220f2009290300220b370300200341f8006a41086a22092002290300220d370300200320032903a80222173703782001200d3700002008200b370000200c200a370000200341033a00b4072003410a3a00b007200320173700b507200341b0076a10fe01200341b0076a41186a2011290300370300200341b0076a41106a200f290300370300200341b0076a41086a2009290300370300200320032903783703b007201042c8be0d7e200341b0076a10f907ad42a0ce1a7e7c42c8b9d4d5017c210b0c030b200320032900f804370388022003200341ff046a28000036008f020c030b410221010c130b200341dc076a200c360200200341d8076a2001360200200341bd076a2201200341a8026a41086a2202290300370000200341c5076a2208200341a8026a41106a2209290300370000200341cd076a220c200341a8026a41186a220f290300370000200341063a00b4072003410a3a00b007200320032903a8023700b507200341b0076a10fe01200341f8046a41186a2211200f290300220a370300200341f8046a41106a220f2009290300220b370300200341f8046a41086a22092002290300220d370300200320032903a80222173703f8042001200d3700002008200b370000200c200a370000200341033a00b4072003410a3a00b007200320173700b507200341b0076a10fe01200341b0076a41186a2011290300370300200341b0076a41106a200f290300370300200341b0076a41086a2009290300370300200320032903f8043703b007201042a89f0d7e200341b0076a10f907ad42e8b61a7e7c42a0adc1c7017c210b0b4201210a410121010c010b4200210a410021010b0240200641ffffff3f71450d002004102e0b0240200541ffffff3f71450d00200e102e0b2007450d010b200320032800f8013602e80120032003290388023703b8012003200328008f023600bf012003200341fb016a2800003600eb01200041186a20013a0000200041106a200b3703002000200a370308200020032802e8013600192000411c6a20032800eb01360000200041206a20023a0000200020032903b801370021200041286a20032800bf01360000200042013703000c0f0b200320032800f8013602e8012003200341fb016a2800003600eb01200041186a20013a0000200041106a200b3703002000200a370308200020032802e8013600192000411c6a20032800eb01360000200042003703000c0e0b20032d00b00721010240201141ffffff3f71450d00200c102e0b201241ffffff3f71450d002014102e0b200a42ffffff3f83500d002008102e0b200320032800b8013602f8012003200329038802370398012003200328008f0236009f012003200341bb016a2800003600fb01200041186a41003a000020004200370308200020032802f8013600192000411c6a20032800fb01360000200041206a20013a00002000200329039801370021200041286a200328009f01360000200042013703000c0b0b200341f0096a41186a2207200341c8026a41186a290300370300200341f0096a41106a2209200341c8026a41106a290300370300200341f0096a41086a2215200341c8026a41086a290300370300200320032903c8023703f009200e2011470d02201141016a22012011490d00201141017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020110d00200341003602b0070c010b200341b8076a41013602002003200c3602b007200320114105743602b4070b200341f8046a20012016200341b0076a107d20034180056a280200210120032802f8044101470d0120010d050b1038000b20032802fc04210c200141057621110b200c200e4105746a220120032903f009370000200141186a2007290300370000200141106a2009290300370000200141086a2015290300370000200e41016a210e2006450d00200f20024d0d012014200f417f6a220f4105746a220129000021102001290008211720012900102118201420024105746a220241186a200141186a2900003700002002201837001020022017370008200220103700000b200341d5076a20032903a802370000200341bd076a200341c8026a41086a290300370000200341c5076a200341c8026a41106a290300370000200341cd076a200341c8026a41186a290300370000200341dd076a200341a8026a41086a290300370000200341e5076a200341a8026a41106a290300370000200341ed076a200341a8026a41186a290300370000200341013a00b4072003410a3a00b007200320032903c8023700b507200341fc076a200f360200200341f8076a200e360200200341f5076a20043a0000200341b0076a10fe01200341cc076a200f360200200341b0076a41186a2012360200200341b0076a41106a200e360200200341bc076a2011360200200320133602d007200320143602c4072003200c3602b8072003200d3703b007200341f8046a200341a8026a10f60720032802f8042201200328028005200341b0076a10be05024020032802fc04450d002001102e0b0240201141ffffff3f71450d00200c102e0b0240201241ffffff3f71450d002014102e0b200b42e8ce127e4280cbd9d7007c210b0240200a42ffffff3f83500d002008102e0b200320032800b8013602f8012003200341bb016a2800003600fb01200041186a20053a0000200041106a200b37030020004201370308200020032802f8013600192000411c6a20032800fb01360000200042003703000c060b2002200f1042000b1036000b20032902b407210a20032802b00721010b200b42ffffff3f83500d002008102e0b2005108b022005102e2003200341e3006a28000036004b20032003280060360248200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041246a200a370200200041206a2001360200200042013703000c010b2005108b022005102e2003200341f4006a28000036005b20032003280071360258200320032903603703482003200328006736004f200041186a41003a000020004200370308200020032802583600192000411c6a200328005b360000200041206a20013a000020002003290348370021200041286a200328004f360000200042013703000b200341a00a6a24000b8b7a040a7f047e067f037e230041a00a6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010203040506000b200341c4076a4101360200200342013702b4072003419cc3cb003602b007200341043602fc0420034194c3cb003602f8042003200341f8046a3602c007200341b0076a41b8afc9001044000b20012d000121042001412c6a2802002105200141286a2802002106200141246a2802002107200341c8026a41186a22082001411a6a290000370300200341c8026a41106a2209200141126a290000370300200341c8026a41086a220a2001410a6a2900003703002003200141026a2900003703c802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a220b200241106a290200370300200341b0076a41086a220c200241086a290200370300200320022902003703b007024002400240200341b0076a10a7050d0020014200370300200b4200370300200c4200370300200342003703b007200341f8046a4181b0c9004113108102200c200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200b20032900f804370300200341f8046a200341b0076a10880320032802f804210120032902fc04210d2007200510fc02200720052001410120011b2202200d420020011b220d422088220ea710fc07200341f8006a41186a2008290300370300200341f8006a41106a2009290300370300200341f8006a41086a200a290300370300200320032903c802370378200441ff01710d0120034190056a2201420037030020034188056a220b4200370300200341f8046a41086a220c4200370300200342003703f80420034198016a4181b0c9004113108102200c20034198016a41086a220429000037030020032003290098013703f80420034198016a41dbc3cb00410510810220012004290000370300200b200329009801370300200341f8046a412010ff010c020b0240200641ffffff3f71450d002007102e0b200320032800b8013602f801200320032900a802370388022003200341bb016a2800003600fb012003200341af026a28000036008f02200041186a41003a000020004200370308200020032802f8013600192000411c6a20032800fb01360000200041206a41023a00002000200329038802370021200041286a200328008f02360000200042013703000c200b200341b0076a41186a200341f8006a41186a290300370300200341b0076a41106a200341f8006a41106a290300370300200341b0076a41086a200341f8006a41086a290300370300200320032903783703b007200341f0096a41186a22014200370300200341f0096a41106a220b4200370300200341f0096a41086a220c4200370300200342003703f009200341f8046a4181b0c9004113108102200c200341f8046a41086a2204290000370300200320032900f8043703f009200341f8046a41dbc3cb00410510810220012004290000370300200b20032900f8043703004120102c2201450d1a200342203702fc04200320013602f804200341f8046a200341b0076a41201074200341f0096a412020032802f804220120032802800510b20120032802fc04450d002001102e0b2005ad42b882077e200e42c0b5e5097e7c210e0240200641ffffff3f71450d002007102e0b200e42a0c0b291397c210e0240200d42ffffff3f83500d002002102e0b200320032800b8013602f8012003200341bb016a2800003600fb01200041186a41003a0000200041106a200e37030020004201370308200020032802f8013600192000411c6a20032800fb01360000200042003703000c1e0b200141086a2802002104200141046a2802002105200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2207200241106a290200370300200341b0076a41086a2206200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341f8006a41086a220220034181056a290000370300200341f8006a41106a220b20034189056a290000370300200341f8006a41186a220c20034191056a290000370300200320032900f90437037820032d00f8044101460d0820034198016a41186a200c29030037030020034198016a41106a200b29030037030020034198016a41086a20022903003703002003200329037837039801200142003703002007420037030020064200370300200342003703b007200341f8046a4181b0c90041131081022006200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200720032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220d422088220ea741057421012002410120021b22062102024002400240024003402001450d01200141606a2101200220034198016a412010ec082107200241206a210220070d000b200341003602b807200342013703b0072005200341b0076a10900220032802b8072107024020032802b407450d0020032802b007102e0b0240200720044d0d00200341b0076a410a10fd07200320032900b1073703602003200341b8076a2800003600670c020b2003410036028005200342013703f8042005200341f8046a109002200341b0076a20032802f80420032802800510b00120034188026a41186a200341b0076a41186a29030037030020034188026a41106a200341b0076a41106a29030037030020034188026a41086a200341b0076a41086a290300370300200320032903b00737038802024020032802fc04450d0020032802f804102e0b200341f8046a200541b00210e9081a200341a8026a41086a20034198016a41086a290300370300200341a8026a41106a20034198016a41106a290300370300200341a8026a41186a20034198016a41186a29030037030020032003290398013703a8024110102c2202450d1c200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1c20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b3602000240200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b024002402001280208200341f8046a200128020c28020c1101000d0041022102200341e8026a41023a0000200341e0026a41003a000020012001280200417f6a220b3602004200210f200342003703d002200342013703c8020240200b0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a220b200b280200417f6a220b360200200b0d002001102e0b200341f8046a10dc02410121010c010b200341b0076a200341f8046a41b00210e9081a200341fd096a200341b0026a290300370000200341850a6a200341b8026a2903003700002003418d0a6a200341c0026a290300370000200341950a6a20032f00783b0000200341023a00f009200341970a6a200341f8006a41026a2d00003a0000200341013a00f409200320032903a8023700f509200320013602980a200341c8026a200341b0076a200341f0096a10dd0220032903c8024201512101200341e8026a2d0000210220032903d002210f0b200341f8046a41186a20034188026a41186a290300370300200341f8046a41106a20034188026a41106a290300370300200341f8046a41086a20034188026a41086a29030037030020032003290388023703f8042003200341f0026a2800003600b707200320032900e9023703b0070240024020010d00410621010c010b200320032800b7073600ff01200320032903b0073703f80141062101200f4202510d00200320032800ff013600ef01200320032903f8013703e801200221010b200341f0096a41086a2202200341f8046a41086a290300370300200341f0096a41106a220b200341f8046a41106a290300370300200341f0096a41186a220c200341f8046a41186a290300370300200320032903f8043703f009200320032903e8013703d801200320032800ef013600df01200341053a00b4072003410b3a00b007200341bd076a2002290300370000200341c5076a200b290300370000200341cd076a200c290300370000200341d8076a20013a0000200320032903f0093700b507200341d5076a20032f00e5013b0000200341d7076a200341e7016a2d00003a0000200341d9076a20032903d801370000200341e0076a20032800df01360000200341fc076a200341b8016a41186a280200360200200341f4076a200341b8016a41106a290200370200200341ec076a200341b8016a41086a290200370200200341e4076a20032902b801370200200341b0076a10fe01200fa70d024200210e0c030b200341b0076a410110fd07200320032900b1073703602003200341b8076a2800003600670b20032d00b0072101200d42ffffff3f83500d1e2006102e0c1e0b427f2007ad42a01f7e200e4280eb067e7c42d8bbe3167c220e200341c8026a41106a2903007c220f200f200e541b210f4201210e0b0240200d42ffffff3f83500d002006102e0b2005102e2003200341f4006a28000036005b20032003280071360258200041186a41003a0000200041106a200f3703002000200e370308200020032802583600192000411c6a200328005b360000200042003703000c1d0b2001410c6a2802002104200141086a2802002105200141046a2802002108200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2206200241106a290200370300200341b0076a41086a2207200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341c8026a41086a220220034181056a290000370300200341c8026a41106a220b20034189056a290000370300200341c8026a41186a220c20034191056a290000370300200320032900f9043703c80202400240024020032d00f8044101460d0020034188026a41186a200c29030037030020034188026a41106a200b29030037030020034188026a41086a2002290300370300200320032903c80237038802200142003703002006420037030020074200370300200342003703b007200341f8046a4181b0c90041131081022007200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200620032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220e422088220da741057421012002410120021b220b210203402001450d02200141606a2101200220034188026a412010ec082107200241206a210220070d000b200341003602b807200342013703b0072005200341b0076a10900220032802b8072101024020032802b407450d0020032802b007102e0b200120044d0d02200341b0076a410a10fd070c1b0b410221010c1c0b200341b0076a410110fd070c190b2003410036028005200342013703f8042005200341f8046a109002200341b0076a20032802f80420032802800510b001200341a8026a41186a2202200341b0076a41186a2207290300370300200341a8026a41106a220c200341b0076a41106a2204290300370300200341a8026a41086a2209200341b0076a41086a220a290300370300200320032903b0073703a802024020032802fc04450d0020032802f804102e0b200720022903003703002004200c290300370300200a2009290300370300200320032903a8023703b007200341f8046a200341b0076a10fe0720032802f8042207200328028005108f022102024020032802fc04450d002007102e0b02402002450d00200341b0076a410210fd070c190b024002400240200841014b0d00200341c8076a4200370300200341c0076a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a4181b0c90041131081022002200341f8046a41086a2207290000370300200320032900f8043703b007200341f8046a41c7c3cb004107108102200641086a2007290000370000200620032900f804370000200341c8026a200341b0076a1088030240024020032802c80222020d004100210c0c010b20032902cc02220f422088a7210c200f42ffffff3f83500d002002102e0b200341f8046a200541b00210e9081a4110102c2207450d1a200741f8f7c60036020c2007410136020820074281808080103702004110102c2202450d1a20024190f8c60036020c20024101360208200242818080801037020020072007280200417f6a2206360200024020060d002007280208200728020c2802001103000240200728020c280204450d002007280208102e0b200741046a22062006280200417f6a220636020020060d002007102e0b024002402002280208200341f8046a200228020c28020c1101000d0041022107200341e8026a41023a0000200341e0026a41003a000020022002280200417f6a22063602004200210f200342003703d002200342013703c802024020060d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22062006280200417f6a220636020020060d002002102e0b200341f8046a10dc02410121020c010b200341b0076a200341f8046a41b00210e9081a200341fc096a200c360200200341f0096a41086a4101360200200341f0096a41106a200329019801370300200341880a6a20034198016a41086a290100370300200341f0096a41206a20034198016a41106a290100370300200341003a00f409200320032f00783b00f509200320023602980a200341023a00f0092003200341f8006a41026a2d00003a00f709200341c8026a200341b0076a200341f0096a10dd0220032903c8024201512102200341c8026a41206a2d0000210720032903d002210f0b200341f0096a41186a200341a8026a41186a290300370300200341f0096a41106a200341a8026a41106a290300370300200341f0096a41086a200341a8026a41086a290300370300200320032903a8023703f0092003200341f0026a2800003600b707200320032900e9023703b0070240024020020d00410621020c010b200320032800b7073600ff01200320032903b0073703f80141062102200f4202510d00200320032800ff013600ef01200320032903f8013703e801200721020b200341f8006a41086a2207200341f0096a41086a290300370300200341f8006a41106a2206200341f0096a41106a290300370300200341f8006a41186a220c200341f0096a41186a290300370300200320032903f009370378200320032903e8013703d801200320032800ef013600df01200341043a00b4072003410b3a00b007200341bd076a2007290300370000200341c5076a2006290300370000200341cd076a200c290300370000200341d8076a20023a0000200320032903783700b507200341d5076a20032f00e5013b0000200341d7076a200341e7016a2d00003a0000200341d9076a20032903d801370000200341e0076a20032800df01360000200341fc076a200341b8016a41186a280200360200200341f4076a200341b8016a41106a290200370200200341ec076a200341b8016a41086a290200370200200341e4076a20032902b801370200200341b0076a10fe010240200fa70d004200210f0c020b427f2001ad42a01f7e200d42e8dd0d7e7c42d8ce86257c220d200341c8026a41106a2903007c220f200f200d541b210d4201210f0c010b200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a4181b0c90041131081022002200341f8046a41086a220c290000370300200320032900f8043703b007200341f8046a41dbafc9004109108102200641086a200c290000370000200620032900f804370000200341f8046a200341b0076a4120108d0320032802f804210220032902fc04210f200341f8046a41186a2209200341a8026a41186a290300370300200341f8046a41106a220a200341a8026a41106a290300370300200c200341a8026a41086a290300370300200320032903a8023703f8042002410120021b21070240024002400240200f420020021b220f4220882210a72202200fa7470d00200241016a22042002490d1820024101742211200420042011491b22044104200441044b1b220441ffffff3f712004462111200441057421040240024020020d00200341003602b0070c010b200341b8076a4101360200200320073602b007200320104205863e02b4070b200341c8026a20042011200341b0076a107d200341d0026a280200210420032802c8024101460d0120032802cc022107200f422088a721022004410576ad210f0b200720024105746a220420032903f804370000200441186a2009290300370000200441106a200a290300370000200441086a200c290300370000200241016a220241e4004b0d04200320073602b0072003200f42ffffffff0f832002ad2210422086843702b40720070d0120034190056a2202420037030020034188056a22074200370300200341f8046a41086a220c4200370300200342003703f80420034198016a4181b0c9004113108102200c20034198016a41086a220429000037030020032003290098013703f80420034198016a41dbafc9004109108102200220042900003703002007200329009801370300200341f8046a412010ff010c020b2004450d160c1b0b20034190056a2202420037030020034188056a220c4200370300200341f8046a41086a22044200370300200342003703f80420034198016a4181b0c9004113108102200420034198016a41086a220929000037030020032003290098013703f80420034198016a41dbafc900410910810220022009290000370300200c200329009801370300200341f8046a200341b0076a10e6042007450d00200f42ffffff3f83500d002007102e0b200341f8046a41186a22024200370300200341f8046a41106a22074200370300200341f8046a41086a220c4200370300200342003703f80420034198016a4181b0c9004113108102200c20034198016a41086a220429000037030020032003290098013703f80420034198016a41e4afc900410d108102200220042900003703002007200329009801370300200341186a200341f8046a4120108e02200328021c21092003280218210a2002420037030020074200370300200c4200370300200342003703f80420034198016a4181b0c9004113108102200c200429000037030020032003290098013703f80420034198016a41e4afc900410d108102200220042900003703002007200329009801370300200341106a200341f8046a4120108e0220032802102111200328021421122002420037030020074200370300200c4200370300200342003703f80420034198016a4181b0c9004113108102200c200429000037030020032003290098013703f80420034198016a41e4afc900410d1081022002200429000037030020072003290098013703002003201241016a410120111b3602b007200341f8046a4120200341b0076a410410b201200341b0076a200541b00210e9081a2002200341a8026a41186a2903003703002007200341a8026a41106a290300370300200c200341a8026a41086a290300370300200320032903a8023703f804200341c8026a200341f8046a10fe0720032802c802210220032802d0022107200342013703f8042003410036028005200341b0076a200341f8046a1090022002200720032802f80420032802800510b201024020032802fc04450d0020032802f804102e0b024020032802cc02450d002002102e0b200341b0076a108b02200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22024200370300200342003703b007200341f8046a41d9fcc60041061081022002200341f8046a41086a2207290000370300200320032900f8043703b007200341f8046a4180f4cb004106108102200641086a2007290000370000200620032900f804370000200341086a200341b0076a4120108e02200328020c21062003280208210c4120102c2202450d192002200329038802370000200241186a20034188026a41186a290300370000200241106a20034188026a41106a290300370000200241086a20034188026a41086a290300370000200341cc076a4100360200200341bc076a4281808080103702002003200641c093066a41c09306200c1b3602d0074201210f200342013702c407200320023602b807200320083602b407200320094100200a1b22063602b007200341f8046a41186a200341a8026a41186a290300370300200341f8046a41106a200341a8026a41106a2903003703002007200341a8026a41086a290300370300200320032903a8023703f804200341c8026a200341f8046a10ff0720032802c802220720032802d002200341b0076a10be05024020032802cc02450d002007102e0b2002102e200341bd076a20034188026a41086a290300370000200341c5076a20034188026a41106a290300370000200341cd076a20034188026a41186a290300370000200341d5076a20032903a802370000200341dd076a200341a8026a41086a290300370000200341e5076a200341a8026a41106a290300370000200341ed076a200341a8026a41186a290300370000200341fc076a2008360200200341f8076a2006360200200341003a00b4072003410b3a00b00720032003290388023700b5072001ad4288277e200d42a08a077e7c201042f8fe1c7e7c42a0c28084027c210d200341b0076a10fe010b0240200e42ffffff3f83500d00200b102e0b2005102e2003200341e3006a28000036004b20032003280060360248200041186a41003a0000200041106a200d3703002000200f370308200020032802483600192000411c6a200328004b360000200042003703000c1d0b200341b0076a410810fd0720032902b407210d20032802b0072101200f42ffffff3f83500d192007102e0c190b200141216a2d00002104200141246a280200210c200341a8026a41186a200141196a290000370300200341a8026a41106a200141116a290000370300200341a8026a41086a200141096a290000370300200320012900013703a802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a2207200241106a290200370300200341b0076a41086a2205200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c102200341f8006a41086a2202200341f8046a41096a290000370300200341f8006a41106a2206200341f8046a41116a290000370300200341f8006a41186a220b200341f8046a41196a290000370300200320032900f904370378024002400240024020032d00f8044101460d00200341c8026a41186a200b290300370300200341c8026a41106a2006290300370300200341c8026a41086a2002290300370300200320032903783703c802200142003703002007420037030020054200370300200342003703b007200341f8046a4181b0c90041131081022005200341f8046a41086a2202290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220012002290000370300200720032900f804370300200341f8046a200341b0076a10880320032902fc04420020032802f80422021b220d422088220ea741057421012002410120021b220b210203402001450d02200141606a21012002200341c8026a412010ec082107200241206a210220070d000b200341f8046a200341a8026a108008200341b0076a20032802f804220220032802800510b30520032802fc04210120032802b8072208450d02200341d0076a2802002113200341cc076a280200210a200341c8076a2802002112200341c4076a2802002114200341c0076a280200210920032802bc07211120032903b007210f02402001450d002002102e0b200c200fa7460d03200341b0076a410410fd07200320032900b107370388022003200341b8076a28000036008f020c110b410221010c120b200341b0076a410110fd07200320032900b107370388022003200341b8076a28000036008f0220032d00b00721010c100b02402001450d002002102e0b200341b0076a410310fd07200320032900b107370388022003200341b8076a28000036008f0220032d00b00721010c0f0b410021020240024020090d0041012106410021074100210c0c010b200941057441606a41057641016a21054100210720082101034002402001200341c8026a412010ec080d00410021064101210c0c020b200141206a2101410121062005200741016a2207470d000b4100210c200521070b02400240024002400240200a450d00200a41057441606a41057641016a2105410021022014210103402001200341c8026a412010ec08450d02200141206a21012005200241016a2202470d000b200521020b200c450d01200441ff01710d03410021050c020b200441ff0171450d052006450d0241002105410121060c130b4100210641012105200441ff01710d120b200341f8046a41186a2202200341c8026a41186a290300370300200341f8046a41106a2206200341c8026a41106a290300370300200341f8046a41086a2215200341c8026a41086a290300370300200320032903c8023703f8040240200a2012470d00201241016a22012012490d13201241017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020120d00200341003602b0070c010b200341b8076a4101360200200320143602b007200320124105743602b4070b200341f0096a20012016200341b0076a107d200341f8096a2802002101024020032802f0094101470d0020010d190c140b20032802f4092114200141057621120b2014200a4105746a220120032903f804370000200141186a2002290300370000200141106a2006290300370000200141086a2015290300370000200a41016a210a200c450d15200920074d0d0420082009417f6a22094105746a220129000021102001290008211720012900102118200820074105746a220241186a200141186a2900003700002002201837001020022017370008200220103700000c150b200341b0076a410510fd07200320032900b107370388022003200341b8076a28000036008f020c0d0b200141286a280200210b200141306a290300210e200141246a2802002107200341a8026a41186a200141196a290000370300200341a8026a41106a200141116a290000370300200341a8026a41086a200141096a290000370300200320012900013703a802200341b0076a41286a200241286a280200360200200341b0076a41206a2201200241206a290200370300200341b0076a41186a2205200241186a290200370300200341b0076a41106a2206200241106a290200370300200341b0076a41086a200241086a290200370300200320022902003703b007200341f8046a200341b0076a10c10202400240024020032d00f8044101460d00200341f8046a200341a8026a108008200341b0076a20032802f804220c20032802800510b30520032802fc042102024020032802b8072204450d002001280200210a200341cc076a280200210820052802002105200341c4076a28020021092006280200210120032802bc07210620032903b007210f02402002450d00200c102e0b2007200fa7460d03200341b0076a410410fd07200320032900b107370388022003200341b8076a28000036008f0220032d00b0072102410121070c0c0b02402002450d00200c102e0b200341b0076a410310fd07200320032900b107370388022003200341b8076a28000036008f0220032d00b00721020c010b410221020b4200210d410021010c0b0b200f422088a7210c42002110200341c8076a22074200370300200341c0076a22024200370300200341b0076a41086a22114200370300200342003703b007200341f8046a4181b0c90041131081022011200341f8046a41086a2212290000370300200320032900f8043703b007200341f8046a41c7c3cb00410710810220072012290000370300200220032900f804370300200341c8026a200341b0076a1088030240024020032802c80222070d00410021110c010b20032902cc02220d4220882210a72111200d42ffffff3f83500d002007102e0b024002402001200c490d00200341b0076a200341a8026a200b200e10810820032d00b407210220032802b007210b200341f8046a200341b0076a41057241b30210e9081a410121070240200b4101460d00200341e8096a350200210d200341c8026a200341fb046a41b00210e9081a200341bd076a200341a8026a41086a2202290300370000200341c5076a200341a8026a41106a2207290300370000200341cd076a200341a8026a41186a220b290300370000200341dc076a2008360200200341d8076a2001360200200341063a00b4072003410b3a00b007200320032903a8023700b507200341b0076a10fe0120034194056a2008360200200341f8046a41186a2005360200200341f8046a41106a200136020020034184056a20063602002003200a360298052003200936028c0520032004360280052003200f3703f804200341f0096a41186a200b290300370300200341f0096a41106a2007290300370300200341f0096a41086a2002290300370300200320032903a8023703f009200341b0076a200341c8026a41b00210e9081a200341386a2011200341f8046a200341f0096a200341b0076a108208427f200d42b8177e201042b0c60d7e7c200335024042b09c1b7e7c42e0c3b9dc017c220d20032903387c220e200e200d541b210e0c020b200320032900f804370388022003200341ff046a28000036008f020c0a0b410021074100201120086b2212201220114b1b200c490d074200210d200341b0076a41186a4200370300200341b0076a41106a4200370300200341b0076a41086a22074200370300200342003703b007200341f8046a41d9fcc60041061081022007200341f8046a41086a2212290000370300200320032900f8043703b007200341f8046a4180f4cb004106108102200241086a2012290000370000200220032900f804370000200341306a200341b0076a4120108e0202402003280234410020032802301b200a4f0d00200341b0076a410710fd07200320032900b107370388022003200728000036008f0220032d00b007210241012107410021010c0b0b200341f0096a41186a22024200370300200341f0096a41106a22074200370300200341f0096a41086a22144200370300200342003703f00920034198016a4181b0c9004113108102201420034198016a41086a221329000037030020032003290098013703f00920034198016a41dbc3cb004105108102200220132900003703002007200329009801370300200341b0076a200341f0096a412010f40220032d00b0072102200341f8046a41186a200341c9076a290000370300200341f8046a41106a200341c1076a2900003703002012200341b9076a290000370300200320032900b1073703f8040240024020024101460d00410221020c010b200341c8026a41186a200341f8046a41186a290300220d370300200341c8026a41106a200341f8046a41106a2903002217370300200341c8026a41086a200341f8046a41086a2903002218370300200320032903f80422193703c802200341b0076a41186a200d370300200341b0076a41106a2017370300200341b0076a41086a2018370300200320193703b00720014105742102200421070340024020020d00410021020c020b200241606a21022007200341b0076a412010ec082112200741206a210720120d000b410121020b4100210741002011200120086a6b2212200220024102477122021b20086a21142012410020021b20016a2212200c490d04200341b0076a200341a8026a200b200e10810820032d00b407210220032802b007210b200341f8046a200341b0076a41057241b30210e9081a41012107200b4101460d05200341e8096a350200210d200341c8026a200341fb046a41b00210e9081a200341bd076a200341a8026a41086a2202290300370000200341c5076a200341a8026a41106a2207290300370000200341cd076a200341a8026a41186a220b290300370000200341dc076a2014360200200341d8076a2012360200200341063a00b4072003410b3a00b007200320032903a8023700b507200341b0076a10fe0120034194056a2008360200200341f8046a41186a2005360200200341f8046a41106a200136020020034184056a20063602002003200a360298052003200936028c0520032004360280052003200f3703f804200341f0096a41186a200b290300370300200341f0096a41106a2007290300370300200341f0096a41086a2002290300370300200320032903a8023703f009200341b0076a200341c8026a41b00210e9081a200341206a2011200341f8046a200341f0096a200341b0076a108208427f200d42b8177e201042e0b60d7e7c20033502284280ac1b7e7c42e0fdcfea017c220d20032903207c220e200e200d541b210e0b4201210d410021010c0b0b200341c8026a41186a2207200141196a290000370300200341c8026a41106a2205200141116a290000370300200341c8026a41086a2206200141096a290000370300200320012900013703c802200341b0076a41286a200241286a280200360200200341b0076a41206a200241206a290200370300200341b0076a41186a2201200241186a290200370300200341b0076a41106a220b200241106a290200370300200341b0076a41086a220c200241086a290200370300200320022902003703b00702400240200341b0076a10a705450d00200320032800a80236028802200320032900f0093703b0072003200341ab026a28000036008b022003200341f7096a2800003600b707200041186a41003a00002000420037030820002003280288023600192000411c6a200328008b02360000200041206a41023a0000200020032903b007370021200041286a20032800b7073600004201210d0c010b200341f8046a41186a22022007290300220d370300200341f8046a41106a22072005290300220e370300200341f8046a41086a22052006290300220f370300200320032903c80222103703f804200341bd076a200f370000200341c5076a200e370000200341cd076a200d3700002003410b3a00b007200320103700b507200341033a00b407200341b0076a10fe0120012002290300370300200b2007290300370300200c2005290300370300200320032903f8043703b007200341b0076a1083082101200320032800a802360288022003200341a8026a41036a28000036008b02200041186a41003a0000200041106a2001ad42d0be1a7e42d0deb8a7017c3703002000420137030820002003280288023600192000411c6a200328008b023600004200210d0b2000200d3703000c190b200341b0076a410510fd07200320032900b107370388022003200341b8076a28000036008f020c0a0b200720091042000b200341dc076a2014360200200341d8076a2012360200200341bd076a2201200341a8026a41086a2202290300370000200341c5076a220b200341a8026a41106a220c290300370000200341cd076a2208200341a8026a41186a220a290300370000200341063a00b4072003410b3a00b007200320032903a8023700b507200341b0076a10fe01200341f8006a41186a2211200a290300220d370300200341f8006a41106a220a200c290300220e370300200341f8006a41086a220c2002290300220f370300200320032903a80222173703782001200f370000200b200e3700002008200d370000200341033a00b4072003410b3a00b007200320173700b507200341b0076a10fe01200341b0076a41186a2011290300370300200341b0076a41106a200a290300370300200341b0076a41086a200c290300370300200320032903783703b007201042c8be0d7e200341b0076a108308ad42a0ce1a7e7c42c8b9d4d5017c210e0c030b200320032900f804370388022003200341ff046a28000036008f020c030b410221010c130b200341dc076a2008360200200341d8076a2001360200200341bd076a2201200341a8026a41086a2202290300370000200341c5076a220b200341a8026a41106a220c290300370000200341cd076a2208200341a8026a41186a220a290300370000200341063a00b4072003410b3a00b007200320032903a8023700b507200341b0076a10fe01200341f8046a41186a2211200a290300220d370300200341f8046a41106a220a200c290300220e370300200341f8046a41086a220c2002290300220f370300200320032903a80222173703f8042001200f370000200b200e3700002008200d370000200341033a00b4072003410b3a00b007200320173700b507200341b0076a10fe01200341b0076a41186a2011290300370300200341b0076a41106a200a290300370300200341b0076a41086a200c290300370300200320032903f8043703b007201042a89f0d7e200341b0076a108308ad42e8b61a7e7c42a0adc1c7017c210e0b4201210d410121010c010b4200210d410021010b0240200641ffffff3f71450d002004102e0b0240200541ffffff3f71450d002009102e0b2007450d010b200320032800f8013602e80120032003290388023703b8012003200328008f023600bf012003200341fb016a2800003600eb01200041186a20013a0000200041106a200e3703002000200d370308200020032802e8013600192000411c6a20032800eb01360000200041206a20023a0000200020032903b801370021200041286a20032800bf01360000200042013703000c0f0b200320032800f8013602e8012003200341fb016a2800003600eb01200041186a20013a0000200041106a200e3703002000200d370308200020032802e8013600192000411c6a20032800eb01360000200042003703000c0e0b20032d00b00721010240201141ffffff3f71450d002008102e0b201241ffffff3f71450d002014102e0b200d42ffffff3f83500d00200b102e0b200320032800b8013602f8012003200329038802370398012003200328008f0236009f012003200341bb016a2800003600fb01200041186a41003a000020004200370308200020032802f8013600192000411c6a20032800fb01360000200041206a20013a00002000200329039801370021200041286a200328009f01360000200042013703000c0b0b200341f0096a41186a2207200341c8026a41186a290300370300200341f0096a41106a220c200341c8026a41106a290300370300200341f0096a41086a2215200341c8026a41086a290300370300200320032903c8023703f00920092011470d02201141016a22012011490d00201141017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020110d00200341003602b0070c010b200341b8076a4101360200200320083602b007200320114105743602b4070b200341f8046a20012016200341b0076a107d20034180056a280200210120032802f8044101470d0120010d050b1038000b20032802fc042108200141057621110b200820094105746a220120032903f009370000200141186a2007290300370000200141106a200c290300370000200141086a2015290300370000200941016a21092006450d00200a20024d0d012014200a417f6a220a4105746a220129000021102001290008211720012900102118201420024105746a220241186a200141186a2900003700002002201837001020022017370008200220103700000b200341d5076a20032903a802370000200341bd076a200341c8026a41086a290300370000200341c5076a200341c8026a41106a290300370000200341cd076a200341c8026a41186a290300370000200341dd076a200341a8026a41086a290300370000200341e5076a200341a8026a41106a290300370000200341ed076a200341a8026a41186a290300370000200341013a00b4072003410b3a00b007200320032903c8023700b507200341fc076a200a360200200341f8076a2009360200200341f5076a20043a0000200341b0076a10fe01200341cc076a200a360200200341b0076a41186a2012360200200341b0076a41106a2009360200200341bc076a2011360200200320133602d007200320143602c407200320083602b8072003200f3703b007200341f8046a200341a8026a10800820032802f8042201200328028005200341b0076a10be05024020032802fc04450d002001102e0b0240201141ffffff3f71450d002008102e0b0240201241ffffff3f71450d002014102e0b200e42e8ce127e4280cbd9d7007c210e0240200d42ffffff3f83500d00200b102e0b200320032800b8013602f8012003200341bb016a2800003600fb01200041186a20053a0000200041106a200e37030020004201370308200020032802f8013600192000411c6a20032800fb01360000200042003703000c060b2002200a1042000b1036000b20032902b407210d20032802b00721010b200e42ffffff3f83500d00200b102e0b2005108b022005102e2003200341e3006a28000036004b20032003280060360248200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041246a200d370200200041206a2001360200200042013703000c010b2005108b022005102e2003200341f4006a28000036005b20032003280071360258200320032903603703482003200328006736004f200041186a41003a000020004200370308200020032802583600192000411c6a200328005b360000200041206a20013a000020002003290348370021200041286a200328004f360000200042013703000b200341a00a6a24000bec7b06017f017e147f057e1a7f017e23004190076b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010203040507000b2003419c056a41013602002003420137028c052003419cc3cb0036028805200341043602840420034194c3cb0036028004200320034180046a3602980520034188056a41d4cec8001044000b200341c0016a41086a2001412c6a2802003602002003200141246a2902003703c001200341d0036a41186a200141196a290000370300200341d0036a41106a200141116a290000370300200341d0036a41086a200141096a290000370300200320012900013703d0032002411a6a2901002104200241196a2d00002105200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211720022d00002101200228022822022002280200417f6a2218360200024002400240024020010d00024020180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201741ff01714101470d01200320043703f801200320053a00f701200320063a00f601200320073b01f401200320083a00f301200320093a00f2012003200a3b01f0012003200b3a00ef012003200c3a00ee012003200d3b01ec012003200e3a00eb012003200f3a00ea01200320103b01e801200320113a00e701200320123a00e601200320133b01e401200320143a00e301200320153a00e201200320163b01e00120032802c8012202418080014d0d02200341f0036a41011098070c030b20180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341023a00f0030c010b20034190066a20032802c0012217200210b001200341d8026a41186a20034190066a41186a290300370300200341d8026a41106a20034190066a41106a290300370300200341d8026a41086a20034190066a41086a29030037030020032003290390063703d80220034188056a200341d8026a1099072003280288052218200328029005108f0221010240200328028c05450d002018102e0b02402001450d00200341f0036a41021098070c010b2003200341d0036a36028c052003200341d8026a3602880520034180046a20034188056a108f0520034188056a20034180046a109a072003280288052218200328029005108f0221010240200328028c05450d002018102e0b02402001450d00200341f0036a41021098070c010b200341086a2002ad42004280c2d72f420010e80820034188056a200341e0016a200329030822194280c8afa0257c2204200341086a41086a2903002004201954ad7c221910c302200320032900890537039006200320034188056a41086a28000036009706024020032d00880522024106470d0020034188056a200341d8026a1099072003280288052202200328029005200341c0016a10c3050240200328028c05450d002002102e0b200341a8056a4100360200200341b4056a200341d8026a41086a290300370200200341bc056a200341d8026a41106a290300370200200341c4056a200341d8026a41186a290300370200200341d4056a200341d0036a41086a290300370200200341dc056a200341d0036a41106a290300370200200341e4056a200341d0036a41186a29030037020020032019370390052003200437038805200342083703a0052003410036029805200320032903d8023702ac05200320032903d0033702cc0520034184066a200341e0016a41186a290300370200200341fc056a200341e0016a41106a290300370200200341f4056a200341e0016a41086a290300370200200341013a008c06200320032903e0013702ec0520034190066a20034180046a109a07200328029006220220032802980620034188056a10bb050240200328029406450d002002102e0b20034188056a41086a41003a000020034191056a20032903800437000020034199056a20034180046a41086a290300370000200341a1056a20034180046a41106a290300370000200341a9056a20034180046a41186a290300370000200341163a00880520034188056a10fe01200341063a00f00320032802c401450d182017102e0c180b200341f0036a41086a200328009706360000200320023a00f00320032003290390063700f1030b024020032802c401450d0020032802c001102e0b20032d00f0034106460d1620032802f0032102200020032902f403370024200041206a2002360000200041186a41003a000020004200370308200042013703000c170b200341c0016a41186a200141196a290000370300200341c0016a41106a200141116a290000370300200341c0016a41086a200141096a290000370300200320012900013703c0012002411a6a2901002104200241196a2d00002105200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211720022d00002101200228022822022002280200417f6a2218360200024002400240024020010d00024020180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201741ff01714101470d01200320043703e803200320053a00e703200320063a00e603200320073b01e403200320083a00e303200320093a00e2032003200a3b01e0032003200b3a00df032003200c3a00de032003200d3b01dc032003200e3a00db032003200f3a00da03200320103b01d803200320113a00d703200320123a00d603200320133b01d403200320143a00d303200320153a00d203200320163b01d003200341f0036a200341c0016a109a0720034188056a20032802f003220120032802f80310b40520034190056a29030021042003290388052119200328029805210220034190066a2003419c056a41f40010e9081a20024102460d02200341d8026a20034190066a41f40010e9081a024020032802f403450d002001102e0b200341e0016a200341d8026a41f40010e9081a20032004370388042003201937038004200320023602900420034194046a200341e0016a41f40010e9081a200341e4046a200341d0036a412010ec08450d03200341b0016a41041098072003419c046a2802002202450d16200241306c450d16200328029804102e0c160b20180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341023a00b0010c150b024020032802f403450d002001102e0b200341b0016a41031098070c130b20034188056a200341a4046a109907200328028805220220032802900510ff010240200328028c05450d002002102e0b20034188056a200341c0016a109a07200328028805220220032802900510ff010240200328028c05450d002002102e0b02402019200484500d00200341186a200341d0036a2019200410fb010b20034188056a41086a41033a000020034191056a20032903c00137000020034199056a200341c0016a41086a290300370000200341a1056a200341d0016a290300370000200341a9056a200341d8016a290300370000200341163a00880520034188056a10fe0102402003419c046a2802002202450d00200241306c450d00200328029804102e0b200341063a00b0010c140b200141386a2903002119200141306a290300211a200341c0016a41086a2001412c6a2802003602002003200141246a2902003703c001200341d0036a41186a200141196a290000370300200341d0036a41106a200141116a290000370300200341d0036a41086a200141096a290000370300200320012900013703d0032002411a6a2901002104200241196a2d00002105200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211720022d00002101200228022822022002280200417f6a221836020002400240024020010d00024020180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201741ff01714101470d01200320043703f801200320053a00f701200320063a00f601200320073b01f401200320083a00f301200320093a00f2012003200a3b01f0012003200b3a00ef012003200c3a00ee012003200d3b01ec012003200e3a00eb012003200f3a00ea01200320103b01e801200320113a00e701200320123a00e601200320133b01e401200320143a00e301200320153a00e201200320163b01e001200341e0016a10c3030d02200341023a00f0030c120b20180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341023a00f0030c100b20034190066a20032802c00120032802c80110b001200341d8026a41186a20034190066a41186a290300370300200341d8026a41106a20034190066a41106a290300370300200341d8026a41086a20034190066a41086a29030037030020032003290390063703d80220034188056a200341d8026a1099072003280288052201200328029005108f0221020240200328028c05450d002001102e0b02402002450d00200341f0036a41021098070c100b2003200341d0036a36028c052003200341d8026a3602880520034180046a20034188056a108f0520034188056a200341d8026a1099072003280288052202200328029005200341c0016a10c3050240200328028c05450d002002102e0b2003290380042104200329038804211b200329039004211c200341a9056a200329039804370000200341a1056a201c37000020034199056a201b37000020034191056a200437000020034188056a41086a220141003a0000200341163a00880520034188056a10fe014130102c2202450d0d2002201a370320200220032903e001370100200241286a2019370300200241186a200341e0016a41186a2218290300370100200241106a200341e0016a41106a2217290300370100200241086a200341e0016a41086a220529030037010020034188056a41106a410036020020014200370300200341a4056a428180808010370200200341b4056a200341d8026a41086a290300370200200341bc056a200341d8026a41106a290300370200200341c4056a200341d8026a41186a2903003702002003420037038805200320023602a005200320032903d8023702ac05200341d4056a200341d0036a41086a290300370200200341dc056a200341d0036a41106a290300370200200341e4056a200341d0036a41186a290300370200200320032903d0033702cc0520034184066a2018290300370200200341fc056a2017290300370200200341f4056a2005290300370200200320032903e0013702ec05200341003a008c0620034190066a20034180046a109a07200328029006220120032802980620034188056a10bb050240200328029406450d002001102e0b2002102e200341063a00f00320032802c401450d1020032802c001102e0c100b200141306a2903002119200141286a290300211a200341c0016a41186a200141196a290000370300200341c0016a41106a200141116a290000370300200341c0016a41086a200141096a290000370300200320012900013703c0012002411a6a2901002104200241196a2d00002105200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211720022d00002101200228022822022002280200417f6a2218360200024002400240024002400240024002400240024020010d00024020180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201741ff01714101470d01200320043703e803200320053a00e703200320063a00e603200320073b01e403200320083a00e303200320093a00e2032003200a3b01e0032003200b3a00df032003200c3a00de032003200d3b01dc032003200e3a00db032003200f3a00da03200320103b01d803200320113a00d703200320123a00d603200320133b01d403200320143a00d303200320153a00d203200320163b01d003200341d0036a10c303450d0120034190066a41186a200341c0016a41186a29030037030020034190066a41106a200341c0016a41106a29030037030020034190066a41086a200341c0016a41086a290300370300200320032903c00137039006200341f0036a20034190066a109b0720034188056a20032802f003220120032802f80310b40520034188056a41086a2903002104200329038805211b200328029805210220034190066a2003419c056a41f40010e9081a20024102460d02200341d8026a20034190066a41f40010e9081a024020032802f403450d002001102e0b200341e0016a200341d8026a41f40010e9081a20032004370388042003201b37038004200320023602900420034194046a200341e0016a41f40010e9081a200341d8026a41186a2201200341d0036a41186a290300370300200341d8026a41106a2218200341d0036a41106a290300370300200341d8026a41086a2217200341d0036a41086a290300370300200320032903d0033703d80241002102200328029804210520034180046a41206a28020022060e020504030b20180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341023a00b0010c150b024020032802f403450d002001102e0b200341b0016a410310980720032d00b0014106460d0620032902b40121040c140b410021022006210103402001410176221720026a2118201820022005201841306c6a200341d8026a412010ec084101481b2102200120176b220141014b0d000b0b2005200241306c6a2201200341d8026a412010ec082218450d0220034188056a41186a200341d8026a41186a29030037030020034188056a41106a200341d8026a41106a29030037030020034188056a41086a200341d8026a41086a290300370300200320032903d8023703880520034188056a2101200620022018411f766a22184f0d01201820061045000b20034188056a41186a200129030037030020034188056a41106a201829030037030020034188056a41086a2017290300370300200320032903d802370388054100211820034188056a21010b0240024020062003419c046a280200470d00200641016a22022006490d10200641017422172002201720024b1b22024104200241044b1bad42307e2204422088a74541037421022004a721170240024020060d0020034100360290060c010b20034190066a41086a410836020020032005360290062003200641306c360294060b200341e0016a2017200220034190066a107d200341e8016a280200210220032802e0014101460d01200320032802e4012205360298042003200241306e36029c040b2005201841306c6a220241306a2002200620186b41306c10ea081a200141086a2903002104200141106a290300211b200141186a290300211c2001290300211d200241286a20193703002002201a370320200241186a201c370300200241106a201b370300200241086a20043703002002201d3703002003200641016a3602a0040c020b2002450d0e0c0f0b200620024d0d0320032901da02210420032901e202211b20032801ea02211820032f01ee02211720032903f002211c200120032f01d8023b01002005200241306c6a2202201a3703202002201c370318200220173b0116200220183601122002201b37010a20022004370102200241286a20193703000b20034180046a41186a2117200341a8066a2201420037030020034190066a41106a2202420037030020034190066a41086a221842003703002003420037039006200341e0016a418ef9c00041101081022018200341e0016a41086a2205290000370300200320032900e00137039006200341e0016a41c7c3cb00410710810220012005290000370300200220032900e00137030020034188056a20034190066a10f102200329028c05210420032003280288052201410820011b221836029005200320183602880520032004420020011b22043e028c05200320182004422088a74106746a3602940520034190066a20034188056a10c00120032003280290062201360288052003200120032802980622184105746a36028c050240024020180d00410021180c010b2003200141206a36028805200121180b200320183602e0012017200341e0016a20034188056a10bb01024020032802940641ffffff3f71450d002001102e0b200341a8066a420037030020034190066a41106a420037030020034190066a41086a220142003703002003420037039006200341e0016a418ef9c00041101081022001200341e0016a41086a2218290000370300200320032900e00137039006200341e0016a41c7c3cb004107108102200241086a2018290000370000200220032900e00137000020034188056a20034190066a10f102200329028c05210420032003280288052201410820011b221836029005200320183602880520032004420020011b22043e028c05200320182004422088a74106746a3602940520034190066a20034188056a10c0012003280298062101024020032802940641ffffff3f71450d00200328029006102e0b024020032802a004200141016a410176490d002003280290044101460d00200341a8066a4200370300200341a0066a420037030020034190066a41086a220142003703002003420037039006200341e0016a41d9fcc60041061081022001200341e0016a41086a2218290000370300200320032900e00137039006200341e0016a4180f4cb004106108102200241086a2018290000370000200220032900e001370000200341286a20034190066a4120108e0220034101360290042003200328022c41c0f0006a41c0f00020032802281b3602940420032903c001210420032903c801211920032903d001211a200341a9056a20032903d801370000200341a1056a201a37000020034199056a201937000020034191056a200437000020034188056a41086a41013a0000200341163a00880520034188056a10fe010b20034188056a20034180046a41880110e9081a20034190066a200341c0016a109a07200328029006220220032802980620034188056a10bb050240200328029406450d002002102e0b0240200341a4056a2802002202450d00200241306c450d0020032802a005102e0b200341063a00b0010b20004200370308200020032800a901360019200041186a41003a00002000411c6a200341ac016a280000360000200042003703000c140b200141196a290000211d200141186a2d0000211e200141176a2d0000211f200141156a2f00002120200141146a2d00002121200141136a2d00002122200141116a2f00002123200141106a2d000021242001410f6a2d000021252001410d6a2f000021262001410c6a2d000021272001410b6a2d00002128200141096a2f00002129200141086a2d0000212a200141076a2d0000212b200141056a2f0000212c200141046a2d0000212d200141036a2d0000212e20022d0001211720022d0000211820012f0001212f200228022822022002280200417f6a2201360200024002400240024020180d00024020010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b201741ff01714101470d012003201d3703a8062003201e3a00a7062003201f3a00a606200320203b01a406200320213a00a306200320223a00a206200320233b01a006200320243a009f06200320253a009e06200320263b019c06200320273a009b06200320283a009a06200320293b0198062003202a3a0097062003202b3a0096062003202c3b0194062003202d3a0093062003202e3a0092062003202f3b019006200341d0036a20034190066a109b0720034188056a20032802d003220120032802d80310b40520034190056a29030021042003290388052119200328029805210220034190066a2003419c056a41f40010e9081a20024102460d02200341d8026a20034190066a41f40010e9081a024020032802d403450d002001102e0b200341e0016a200341d8026a41f40010e9081a20032004370388042003201937038004200320023602900420034194046a200341e0016a41f40010e9081a20024101470d06200341a8066a22014200370300200341a0066a2202420037030020034190066a41086a221842003703002003420037039006200341e0016a41d9fcc60041061081022018200341e0016a41086a2217290000370300200320032900e00137039006200341e0016a4180f4cb00410610810220012017290000370300200220032900e001370300200341f0006a20034190066a4120108e022003280274410020032802701b2003280294044f0d03200341f0036a41061098070c070b20010d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22012001280200417f6a220136020020010d002002102e0b200341023a00f0030c070b024020032802d403450d002001102e0b200341f0036a41031098070c050b20034188056a200341a4046a109907200328028805220120032802900510ff010240200328028c05450d002001102e0b2003201d3703a0052003201e3a009f052003201f3a009e05200320203b019c05200320213a009b05200320223a009a05200320233b019805200320243a009705200320253a009605200320263b019405200320273a009305200320283a009205200320293b0190052003202a3a008f052003202b3a008e052003202c3b018c052003202d3a008b052003202e3a008a052003202f3b01880520034190066a20034188056a109b07200328029006220120032802980610ff010240200328029406450d002001102e0b20034188056a20034180046a41880110e9081a200341c0016a41086a20034188056a41206a280200360200200320032903a0053703c001200341a8066a420037030020034190066a41106a420037030020034190066a41086a220142003703002003420037039006200341e0016a418ef9c00041101081022001200341e0016a41086a2218290000370300200320032900e00137039006200341e0016a41c7c3cb004107108102200241086a2018290000370000200220032900e001370000200341d8026a20034190066a10f10220032902dc022104200320032802d8022202410820021b220136029806200320013602900620032004420020021b22043e029406200320012004422088a74106746a36029c06200341d8026a20034190066a10c001200320032802d8022202360290062003200220032802e00222014105746a360294060240024020010d00410021010c010b2003200241206a36029006200221010b200320013602e001200341c0016a200341e0016a20034190066a10bb01024020032802dc0241ffffff3f71450d002002102e0b20032802c001211302400240024020032802c801221641144b0d00201641014d0d0a20132016417f6a221841306c6a2107410021170340201620182202417f6a2218490d030240201620186b22094102490d002013200241306c6a220241206a22052903002013201841306c6a220141206a2206290300221a5a200241286a22082903002219200141286a220a29030022045a20192004511b0d0020034190066a41186a220b200141186a220c29030037030020034190066a41106a220d200141106a220e29030037030020034190066a41086a220f200141086a22102903003703002003200129030037039006200120022903003703002010200241086a290300370300200e200241106a290300370300200c200241186a29030037030020062005290300370300200a2008290300370300024020094103490d002017417f6a210841002101200721020340200241d0006a2205290300201a5a200241d8006a2206290300221920045a20192004511b0d0120082001460d05200241286a2006290300370300200241206a2005290300370300200241186a200241c8006a290300370300200241106a200241c0006a290300370300200241086a200241386a2903003703002002200241306a22052903003703002005210220172001417f6a2201470d000b200521020b2002201a3703202002200329039006370300200241286a2004370300200241186a200b290300370300200241106a200d290300370300200241086a200f2903003703000b200741506a21072017417f6a211720180d000c0b0b0b2016410176ad42307e2204422088a70d0c2004a72230417f4c0d0c2030102c2231450d0d201341506a2132201341907f6a21334104210c410021344100210a20162110034020102107410021104101210602402007417f6a2217450d0002400240024002400240024002402013201741306c6a220241206a290300200741306c220820136a41406a2201290300221954200241286a290300221a200141086a290300220454201a2004511b0d002007417e6a2106203320086a210241002110410021010340024020062001470d00200721060c090b20192002290300221b5a21182004200241086a290300221a5121172004201a5a2105200241506a2102200141016a2101201b2119201a21042018200520171b0d000b200141016a21062001417f7320076a21170c010b203320086a210202400340024020174101470d00410021170c020b20192002290300221b5421012004200241086a290300221a5121182004201a542105200241506a21022017417f6a2117201b2119201a21042001200520181b0d000b0b20072017490d01200720164b0d02200720176b22064101762218450d00203220086a21022013201741306c6a2101034020034190066a41286a2205200141286a220829030037030020034190066a41206a2209200141206a220b29030037030020034190066a41186a220d200141186a220e29030037030020034190066a41106a220f200141106a221029030037030020034190066a41086a2211200141086a22122903003703002003200129030037039006200241086a22142903002104200241106a22152903002119200241186a2235290300211a200241206a2236290300211b200241286a2237290300211c200120022903003703002008201c370300200b201b370300200e201a370300201020193703002012200437030020372005290300370300203620092903003703002035200d2903003703002015200f290300370300201420112903003703002002200329039006370300200241506a2102200141306a21012018417f6a22180d000b0b024020170d00201721100c060b0240200641094d0d00201721100c060b200720164b0d03201720076b21182013201741306c6a2108034020072017417f6a2210490d050240200720106b22064102490d002013201741306c6a220241206a22172903002013201041306c6a220141206a2205290300221a5a200241286a22092903002219200141286a220b29030022045a20192004511b0d0020034190066a41186a220d200141186a220e29030037030020034190066a41106a220f200141106a221129030037030020034190066a41086a2212200141086a22142903003703002003200129030037039006200120022903003703002014200241086a2903003703002011200241106a290300370300200e200241186a29030037030020052017290300370300200b2009290300370300024020064103490d0041012101200821020340200241d0006a2217290300201a5a200241d8006a2205290300221920045a20192004511b0d01201820016a4101460d06200241286a2005290300370300200241206a2017290300370300200241186a200241c8006a290300370300200241106a200241c0006a290300370300200241086a200241386a2903003703002002200241306a2217290300370300201721022018200141016a22016a0d000b201721020b2002201a3703202002200329039006370300200241286a2004370300200241186a200d290300370300200241106a200f290300370300200241086a20122903003703000b2010450d06200841506a21082018417f6a2118201021172006410a4f0d060c000b0b2017200741e4d1cc001057000b2007201641e4d1cc00104d000b2001200641d4d1cc00103c000b20072017417f6a2210490d002007201641f4d1cc00104d000b2010200741f4d1cc001057000b0240200a2034470d00203441016a22022034490d0e203441017422012002200120024b1b22024104200241044b1b220241ffffffff01712002464102742101200241037421020240024020340d0020034100360290060c010b20034104360298062003200c3602900620032034410374360294060b200341d8026a2002200120034190066a107d20032802e0022102024020032802d8024101470d0020020d100c0f0b20032802dc02210c200241037621340b200c200a4103746a2202200636020420022010360200200a41016a2211210a024020114102490d0002400240024003400240024002400240200c2011220a417f6a22114103746a2202280200450d00200a410374200c6a220541746a2802002217200228020422014d0d00200a41024d0d08200c200a417d6a22024103746a2802042218200120176a4d0d01200a41034d0d08200541646a280200201820176a4b0d080c010b200a4103490d0120022802042101200c200a417d6a22024103746a28020421180b20182001490d010b200a417e6a21020b0240200a200241016a22124d0d00200a20024d0d02200c20024103746a220d2802042214200d2802006a2202200c20124103746a220e280200220f490d03200220164b0d04200d41046a21152013200f41306c6a2209200e280204220b41306c22016a2117200241306c2118024002402002200f6b2206200b6b2202200b490d0020312009200110e908220820016a210502400240200b4101480d002006200b4a0d010b20092102200821010c020b201320186a210720082101200921020340200220172001201741206a290300200141206a29030054201741286a2903002204200141286a29030022195420042019511b22061b2218290300370300200241086a201841086a290300370300200241106a201841106a290300370300200241186a201841186a290300370300200241206a201841206a290300370300200241286a201841286a2903003703002001200141306a20061b2101200241306a2102201741306a201720061b221720074f0d02200520014b0d000c020b0b20312017200241306c220110e908220620016a210502400240200b4101480d00200241014e0d010b20172102200621010c010b203220186a21182017210203402018200241506a2207200541506a2208200541706a2201290300200241706a221729030054200141086a2903002204201741086a29030022195420042019511b22171b2201290300370300201841086a200141086a290300370300201841106a200141106a290300370300201841186a200141186a290300370300201841206a200141206a290300370300201841286a200141286a2903003703002005200820171b2105024020092007200220171b2202490d00200621010c020b201841506a21182006210120062005490d000b0b20022001200520016b221820184130706b10e9081a20152014200b6a360200200d200f360200200e200e41086a200a2012417f736a41037410ea081a4101210a201141014d0d050c010b0b2012200a4184d2cc00103c000b2002200a4194d2cc00103c000b200f200241a4d2cc001057000b2002201641a4d2cc00104d000b2010450d090c000b0b410120016b200941d4d1cc00103c000b2018201641c4d1cc001056000b2002200641ecd3c800103c000b200341d0036a41186a2218200141196a290000370300200341d0036a41106a2217200141116a290000370300200341d0036a41086a2205200141096a290000370300200320012900013703d0032002280228210102400240024002400240024002400240024020022d00000e0400010203020b20022d0001210220012001280200417f6a2206360200024020060d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22062006280200417f6a220636020020060d002001102e0b200241ff0171450d024110102c2202450d11200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1120014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a221836020020180d012002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22182018280200417f6a221836020020180d012002102e0c010b200241046a2d00002106200241086a28020021072002410c6a280200210820012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200641ff01710d00200741017420084b0d020b4110102c2202450d10200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1020014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a221836020020180d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22182018280200417f6a221836020020180d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b200341023a00f0030c010b20034188056a41186a201829030037030020034188056a41106a201729030037030020034188056a41086a2005290300370300200320032903d00337038805200341c0016a20034188056a109b0720034188056a20032802c001220220032802c801220110b405024020032802980522184102460d002002200110ff0120034190056a2903002104200329038805211920034190066a20034188056a41146a41f40010e9081a200341d8026a20034190066a41f40010e9081a024020032802c401450d002002102e0b200341e0016a200341d8026a41f40010e9081a20032018360290042003201937038004200320043703880420034180046a41146a200341e0016a41f40010e9081a2019200484500d0320034188016a200341e4046a2019200410cb022003290388012104200320034188016a41086a290300221937039005200320043703880520042019844200520d02200320034188056a3602900620034190066a10cc020c030b20034190066a2003419c056a41f40010e9081a024020032802c401450d002002102e0b200341f0036a410310980720032d00f0034106460d0320032902f40321040b20032802f003210220002004370024200041206a2002360000200041186a41003a000020004200370308420121040c030b200342f0f2bda1a7ee9cb9f9003703900620034188056a20034190066a10cd02200341f8006a20034188056a2004201910fd01200341a0066a200341f8006a41086a290300221b20197d2003290378221a200454ad7d2019201b7d2004201a54ad7d201a200456201b201956201b2019511b22021b3703002003201a20047d2004201a7d20021b3703980620032002ad3703900620034190066a41086a21010240024020020d00200320013602d802200341d8026a10cc020c010b200320013602d802200341d8026a10ce020b200341a0056a201937030020034198056a200437030020034190056a41063a00002003410e3a00880520034188056a10fe010b20034188056a200341a4046a109907200328028805220220032802900510ff010240200328028c05450d002002102e0b20034180046a41086a2903002104200329038004211920034188056a41086a41043a000020034191056a20032903d00337000020034199056a200341d0036a41086a290300370000200341a1056a200341e0036a290300370000200341a9056a200341e8036a290300370000200341b1056a20032902e404370000200341b9056a200341ec046a290200370000200341c1056a200341f4046a290200370000200341c9056a200341fc046a290200370000200341163a008805200341e0056a2004370300200341d8056a201937030020034188056a10fe0102402003419c046a2802002202450d00200241306c450d00200328029804102e0b200341063a00f0030b42002104200042003703082000200328008805360019200041186a41003a00002000411c6a2003418b056a2800003600000b200020043703000c110b200341f0036a41051098070b2003419c046a2802002202450d00200241306c450d00200328029804102e0b20032d00f0034106460d0320032902f40321040b20032802f003210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c0d0b0240203441ffffffff0171450d00200c102e0b2030413070210220304130490d0020302002460d002031102e0b200342f0f2bda1a7ee9cb9f90037039006200341e0016a20034190066a10cd02200342f0f2bda1a7ee9cb9f90037039006200341d8026a20034190066a10cd02200341d0036a200341d8026a10c80220034190066a20032802d003220220032802d80310c9022003290390062104200341a0066a2903002119200329039806211a024020032802d403450d002002102e0b20032802c8012202200241017622014d0d0120032802c001200141306c6a2202290320221b4200201a4200200442015122011b22044280b8d0df5a7c221a201a2004562019420020011b221920044280c8afa02554ad7d221a201956200442ffc7afa025561b22011b221c56200241286a29030022044200201a20011b22195620042019511b21020240200329038805221a20034190056a290300223884500d00200341e0006a200341ec056a201a203810fb010b2019200420021b2119201c201b20021b2104024020032d008c06450d0020034188056a41e4006a2202200341cc056a412010ec08450d00200341d0006a2004201942e400420010e608200341c0006a2004201942e400420010e708200341306a2003290340200341c0006a41086a2903004214420010e80820034190066a200341e0016a20022003290330221b2003280250220141ffff037141056e200141146c41fcff037141e4007041324b6aad42ff01837c221a200341306a41086a290300201a201b54ad7c221b410010ca022019201b7d2004201a54ad7d21192004201a7d21040b200341d8026a200341e0016a200341cc056a20042019410010ca02200341b1066a201d370000200341b0066a201e3a0000200341af066a201f3a0000200341ad066a20203b0000200341ac066a20213a0000200341ab066a20223a0000200341a9066a20233b0000200341a8066a20243a0000200341a7066a20253a0000200341a5066a20263b0000200341a4066a20273a0000200341a3066a20283a0000200341a1066a20293b0000200341a0066a202a3a00002003419f066a202b3a00002003419d066a202c3b00002003419c066a202d3a00002003419b066a202e3a000020034199066a202f3b000020034198066a41023a0000200341163a009006200341e0066a2004370300200341e8066a2019370300200341d1066a200341e4056a290200370000200341c9066a200341dc056a290200370000200341c1066a200341d4056a290200370000200341b9066a20032902cc0537000020034190066a10fe01024020032802c4012202450d00200241306c450d0020032802c001102e0b200341063a00f0030b20004200370308200020032800b001360019200041186a41003a00002000411c6a200341b3016a280000360000200042003703000c0a0b2001200241fcd3c800103c000b1038000b1036000b20032802b001210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c060b024020032802c401450d0020032802c001102e0b20032d00f0034106460d0020032802f0032102200020032902f403370024200041206a2002360000200041186a41003a000020004200370308200042013703000c050b20004200370308200020032800b001360019200041186a41003a00002000411c6a200341b3016a280000360000200042003703000c040b20032d00b0014106460d0120032902b40121040b20032802b001210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c020b20004200370308200020032800a901360019200041186a41003a00002000411c6a200341ac016a280000360000200042003703000c010b20004200370308200020032800b001360019200041186a41003a00002000411c6a200341b3016a280000360000200042003703000b20034190076a24000b8e7906097f017e0b7f037e037f017e230041c0026b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e080001020304050607000b200341d4016a4101360200200342013702c4012003419cc3cb003602c0012003410436029c0120034194c3cb0036029801200320034198016a3602d001200341c0016a41a4c3cb001044000b20034198016a41186a200141196a29000037030020034198016a41106a200141116a29000037030020034198016a41086a200141096a29000037030020032001290001370398012002410e6a2f010021042002410d6a2d000021052002410c6a2d000021062002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241046a2d0000210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d00002113200241066a2f01002114200241056a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22172017280200417f6a221736020020170d002001102e0b2003200c3703d8012003200b3a00d7012003200d3a00d6012003200e3b01d4012003200f3a00d301200320103a00d201200320113b01d001200320123a00cf01200320133a00ce01200320043b01cc01200320053a00cb01200320063a00ca01200320073b01c801200320083a00c701200320093a00c601200320143b01c401200320153a00c3012003200a3a00c201200320163b01c0010240200241ff01710d004103210b0c010b4110102c2202450d18200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1820014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220d3602004100210b200d0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220d200d280200417f6a220d360200200d0d002002102e0b0240024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200741107420084108747220097241017420044110742005410874722006724b0d020b4110102c2202450d1a200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1a20014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b200341d8016a22024200370300200341d0016a22014200370300200341c0016a41086a220b4200370300200342003703c001200341c8006a41b4c3cb004113108102200b200341c8006a41086a220a290000370300200320032900483703c001200341c8006a41c7c3cb0041071081022002200a29000037030020012003290048370300200341f8006a200341c0016a1088030240200328027822040d0041002106200341003602302003420137032841012104410021050c170b2003200329027c220c37022c20032004360228200ca721054100210202400240200c422088a722060e021801000b410021022006210103402001410176220a20026a210b200b20022004200b4105746a20034198016a412010ec084101481b21022001200a6b220141014b0d000b0b0240200420024105746a20034198016a412010ec082201450d00200341c0016a41186a20034198016a41186a290300370300200341c0016a41106a20034198016a41106a290300370300200341c0016a41086a20034198016a41086a29030037030020032003290398013703c001200620022001411f766a220b490d08200341c0016a21010c180b0240200541ffffff3f71450d002004102e0b410321020b200041cec3cb00360024200041123b002120004200370308200041286a410d360000200041206a20023a0000200041186a41003a0000200042013703000c180b200341f8006a41186a200141196a290000370300200341f8006a41106a200141116a290000370300200341f8006a41086a200141096a290000370300200320012900013703782002410e6a2f010021042002410d6a2d000021052002410c6a2d000021062002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241046a2d0000210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d00002113200241066a2f01002114200241056a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22172017280200417f6a221736020020170d002001102e0b2003200c3703d8012003200b3a00d7012003200d3a00d6012003200e3b01d4012003200f3a00d301200320103a00d201200320113b01d001200320123a00cf01200320133a00ce01200320043b01cc01200320053a00cb01200320063a00ca01200320073b01c801200320083a00c701200320093a00c601200320143b01c401200320153a00c3012003200a3a00c201200320163b01c0010240200241ff01710d004103210b0c010b4110102c2202450d17200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1720014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220d3602004100210b200d0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220d200d280200417f6a220d360200200d0d002002102e0b0240024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200741107420084108747220097241017420044110742005410874722006724b0d020b4110102c2202450d19200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1920014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b200341d8016a22024200370300200341d0016a22014200370300200341c0016a41086a220b4200370300200342003703c001200341c8006a41b4c3cb004113108102200b200341c8006a41086a220a290000370300200320032900483703c001200341c8006a41c7c3cb0041071081022002200a2900003703002001200329004837030020034198016a200341c0016a1088030240024020032802980122040d0020034100360210200342013703080c010b2003200329029c01220c37020c20032004360208200ca741ffffff3f71210641002102024002400240200c422088a722050e020201000b410021022005210103402001410176220a20026a210b200b20022004200b4105746a200341f8006a412010ec084101481b21022001200a6b220141014b0d000b0b200420024105746a200341f8006a412010ec080d00200520024d0d09200420024105746a2201200141206a20052002417f736a41057410ea081a20032005417f6a2202360210200341c0016a41186a220b4200370300200341c0016a41106a220a4200370300200341c0016a41086a22074200370300200342003703c00120034198016a41b4c3cb004113108102200720034198016a41086a220129000037030020032003290098013703c00120034198016a41c7c3cb004107108102200b2001290000370300200a200329009801370300200341c0016a200341086a109a03200b200341f8006a41186a290300370300200a200341f8006a41106a2903003703002007200341f8006a41086a290300370300200320032903783703c001200341c0016a41012004200210840820034198016a41186a220a420037030020034198016a41106a22074200370300200142003703002003420037039801200341c8006a41b4c3cb0041131081022001200341c8006a41086a220b2900003703002003200329004837039801200341c8006a41dbc3cb004105108102200a200b29000037030020072003290048370300200341c0016a20034198016a412010f40220032d00c0012108200341c8006a41186a2209200341d9016a290000370300200341c8006a41106a220d200341d1016a290000370300200b200341c9016a290000370300200320032900c101370348024020084101470d00200341286a41186a2009290300220c370300200341286a41106a200d2903002218370300200341286a41086a200b290300221937030020032003290348221a370328200a200c37030020072018370300200120193703002003201a370398014100210102400240024002402005417f6a0e020201000b4100210103402002410176220a20016a210b200b20012004200b4105746a20034198016a412010ec084101481b21012002200a6b220241014b0d000b0b200420014105746a20034198016a412010ec08450d010b200341e0006a22024200370300200341d8006a22014200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a220a290000370300200320032900c001370348200341c0016a41dbc3cb0041051081022002200a290000370300200120032900c001370300200341c8006a412010ff010c010b200341d9016a200341b0016a290300370000200341d1016a200341a8016a290300370000200341c9016a200341a0016a29030037000020032003290398013700c101200341013a00c001200341c0016a1086080b2003418d023b01c001200341c0016a10fe0102402006450d002004102e0b200041186a41003a000020004200370308200020032800683600192000411c6a200341eb006a280000360000200042003703000c1a0b2006450d002004102e0b410321020b200041e0c3cb0036002420004192023b002120004200370308200041286a4109360000200041206a20023a0000200041186a41003a0000200042013703000c170b200341086a41186a200141196a290000370300200341086a41106a200141116a290000370300200341086a41086a200141096a29000037030020032001290001370308200341f8006a41186a200141396a290000370300200341f8006a41106a200141316a290000370300200341f8006a41086a200141296a2900003703002003200141216a2900003703782002410e6a2f010021042002410d6a2d000021052002410c6a2d000021062002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241046a2d0000210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d00002113200241066a2f01002114200241056a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22172017280200417f6a221736020020170d002001102e0b2003200c3703d8012003200b3a00d7012003200d3a00d6012003200e3b01d4012003200f3a00d301200320103a00d201200320113b01d001200320123a00cf01200320133a00ce01200320043b01cc01200320053a00cb01200320063a00ca01200320073b01c801200320083a00c701200320093a00c601200320143b01c401200320153a00c3012003200a3a00c201200320163b01c0010240200241ff01710d004103210b0c010b4110102c2202450d16200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1620014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220d3602004100210b200d0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220d200d280200417f6a220d360200200d0d002002102e0b024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200741107420084108747220097241017420044110742005410874722006724b0d020b4110102c2202450d17200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1720014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c100b200341086a200341f8006a412010ec08450d11200341d8016a22024200370300200341d0016a22014200370300200341c0016a41086a220b4200370300200342003703c001200341c8006a41b4c3cb004113108102200b200341c8006a41086a220a290000370300200320032900483703c001200341c8006a41c7c3cb0041071081022002200a2900003703002001200329004837030020034198016a200341c0016a108803024020032802980122040d0020034100360270200342013703684109210641e0c3cb002107410121050c0f0b2003200329029c01220c37026c2003200436026841012105200ca741ffffff3f7121094100210241e0c3cb0021074109210602400240200c422088a722080e020f01000b410021022008210103402001410176220a20026a210b200b20022004200b4105746a200341086a412010ec084101481b21022001200a6b220141014b0d000b0b200420024105746a200341086a412010ec080d0d4100210541002101024020080e02110d000b410021012008210b0340200b410176220620016a210a200a20012004200a4105746a200341f8006a412010ec084101481b2101200b20066b220b41014b0d000c0d0b0b2002410e6a2f010021072002410d6a2d000021082002410c6a2d000021092002410a6a2f0100210d200241096a2d0000210e200241086a2d0000210f200241046a2d000021042001410c6a2802002105200141086a2802002106200141046a280200210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d00002110200241166a2f01002111200241156a2d00002112200241146a2d00002113200241126a2f01002114200241116a2d00002115200241106a2d00002116200241066a2f01002117200241056a2d0000211b200241026a2f0100211c20022d0001210220012001280200417f6a221d3602000240201d0d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a221d201d280200417f6a221d360200201d0d002001102e0b2003200c3703d8012003200b3a00d701200320103a00d601200320113b01d401200320123a00d301200320133a00d201200320143b01d001200320153a00cf01200320163a00ce01200320073b01cc01200320083a00cb01200320093a00ca012003200d3b01c8012003200e3a00c7012003200f3a00c601200320173b01c4012003201b3a00c301200320043a00c2012003201c3b01c0010240200241ff01710d004103210b0c010b4110102c2202450d15200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1520014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a22103602004100210b20100d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a22102010280200417f6a221036020020100d002002102e0b024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200441ff01710d00200d411074200e41087472200f7241017420074110742008410874722009724b0d020b4110102c2202450d16200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1620014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200641ffffff3f71450d00200a102e0b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c160b200a200510fc02200341c0016a41186a22014200370300200341c0016a41106a220b4200370300200341c0016a41086a22044200370300200342003703c001200341c8006a41b4c3cb0041131081022004200341c8006a41086a2202290000370300200320032900483703c001200341c8006a41c7c3cb00410710810220012002290000370300200b200329004837030020034198016a200341c0016a108803200a20052003280298012201410120011b2208200329029c01420020011b220c422088a710fc0720034198016a41186a2201420037030020034198016a41106a220b420037030020034198016a41086a220442003703002003420037039801200341c8006a41b4c3cb004113108102200420022900003703002003200329004837039801200341c8006a41dbc3cb00410510810220012002290000370300200b2003290048370300200341c0016a20034198016a412010f40220032d00c0012107200341c8006a41186a2209200341d9016a290000370300200341c8006a41106a220d200341d1016a2900003703002002200341c9016a290000370300200320032900c101370348024020074101470d00200341286a41186a20092903002218370300200341286a41106a200d2903002219370300200341286a41086a2002290300221a37030020032003290348221e37032820012018370300200b20193703002004201a3703002003201e3703980141002102024002400240024020050e020201000b410021022005210103402001410176220420026a210b200b2002200a200b4105746a20034198016a412010ec084101481b2102200120046b220141014b0d000b0b200a20024105746a20034198016a412010ec08450d010b200341e0006a22024200370300200341d8006a22014200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a2204290000370300200320032900c001370348200341c0016a41dbc3cb00410510810220022004290000370300200120032900c001370300200341c8006a412010ff010c010b200341d9016a200341b0016a290300370000200341d1016a200341a8016a290300370000200341c9016a200341a0016a29030037000020032003290398013700c101200341013a00c001200341c0016a1086080b2005ad4220862006ad8421180240200c42ffffff3f83500d002008102e0b2003201837029c012003200a36029801200341c8006a41186a22024200370300200341d8006a22014200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a2204290000370300200320032900c001370348200341c0016a41c7c3cb00410710810220022004290000370300200120032900c001370300200341c8006a20034198016a109a030240200641ffffff3f71450d00200a102e0b2003418d063b01c001200341c0016a10fe01200041186a41003a000020004200370308200020032800783600192000411c6a200341fb006a280000360000200042003703000c150b200341086a41186a200141196a290000370300200341086a41106a200141116a290000370300200341086a41086a200141096a29000037030020032001290001370308200341c0016a41286a200241286a280200360200200341c0016a41206a200241206a290200370300200341c0016a41186a200241186a290200370300200341c0016a41106a200241106a290200370300200341c0016a41086a200241086a290200370300200320022902003703c00120034198016a200341c0016a10c102200341286a41086a220220034198016a41096a290000370300200341286a41106a220120034198016a41116a290000370300200341286a41186a220b20034198016a41196a2900003703002003200329009901370328024020032d0098014101460d00200341f8006a41186a200b290300370300200341f8006a41106a2001290300370300200341f8006a41086a200229030037030020032003290328370378200341f8006a200341086a412010ec08450d08200341d8016a22024200370300200341d0016a22014200370300200341c0016a41086a220b4200370300200342003703c001200341c8006a41b4c3cb004113108102200b200341c8006a41086a220a290000370300200320032900483703c001200341c8006a41c7c3cb0041071081022002200a2900003703002001200329004837030020034198016a200341c0016a108803024020032802980122040d0020034100360230200342013703284109210641e0c3cb00210741012105410321020c0a0b2003200329029c01220c37022c2003200436022841012105200ca741ffffff3f7121094100210241e0c3cb0021074109210602400240200c422088a722080e020801000b410021022008210103402001410176220a20026a210b200b20022004200b4105746a200341f8006a412010ec084101481b21022001200a6b220141014b0d000b0b200420024105746a200341f8006a412010ec080d064100210541002101024020080e020806000b410021012008210b0340200b410176220620016a210a200a20012004200a4105746a200341086a412010ec084101481b2101200b20066b220b41014b0d000c060b0b410221020c080b20034198016a41186a200141196a29000037030020034198016a41106a200141116a29000037030020034198016a41086a200141096a29000037030020032001290001370398012002410e6a2f010021042002410d6a2d000021052002410c6a2d000021062002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241046a2d0000210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d00002113200241066a2f01002114200241056a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22172017280200417f6a221736020020170d002001102e0b2003200c3701d8012003200b3a00d7012003200d3a00d6012003200e3b01d4012003200f3a00d301200320103a00d201200320113b01d001200320123a00cf01200320133a00ce01200320043b01cc01200320053a00cb01200320063a00ca01200320073b01c801200320083a00c701200320093a00c601200320143b01c401200320153a00c3012003200a3a00c201200320163b01c0010240200241ff01710d004103210b0c010b4110102c2202450d13200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1320014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220d3602004100210b200d0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220d200d280200417f6a220d360200200d0d002002102e0b0240024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200741107420084108747220097241017420044110742005410874722006724b0d020b4110102c2202450d15200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1520014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b410221020c010b200341d8016a22024200370300200341d0016a22014200370300200341c0016a41086a220b4200370300200342003703c001200341c8006a41b4c3cb004113108102200b200341c8006a41086a220a290000370300200320032900483703c001200341c8006a41c7c3cb0041071081022002200a29000037030020012003290048370300200341f8006a200341c0016a10880320032802782201410120011b210441002102024002400240200329027c420020011b220c422088a722010e020201000b4100210203402001410176220a20026a210b200b20022004200b4105746a20034198016a412010ec084101481b21022001200a6b220141014b0d000b0b200420024105746a20034198016a412010ec080d000240200c42ffffff3f83500d002004102e0b200341e0006a22024200370300200341d8006a22014200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a220a290000370300200320032900c001370348200341c0016a41dbc3cb0041051081022002200a290000370300200120032900c0013703004120102c2202450d14200342203702c401200320023602c001200341c0016a20034198016a41201074200341c8006a412020032802c001220220032802c80110b201024020032802c401450d002002102e0b200341d9016a20034198016a41186a290300370000200341d1016a200341a8016a290300370000200341c9016a200341a0016a29030037000020032003290398013700c101200341013a00c001200341c0016a108608200041186a41003a000020004200370308200020032800283600192000411c6a2003412b6a280000360000200042003703000c150b0240200c42ffffff3f83500d002004102e0b410321020b200041e0c3cb0036002420004192023b002120004200370308200041286a4109360000200041206a20023a0000200041186a41003a0000200042013703000c130b2002410e6a2f010021042002410d6a2d000021052002410c6a2d000021062002410a6a2f01002107200241096a2d00002108200241086a2d00002109200241046a2d0000210a20022802282101024020022d0000220b0d002002411a6a290100210c200241196a2d0000210b200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d00002113200241066a2f01002114200241056a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22172017280200417f6a221736020020170d002001102e0b2003200c3701d8012003200b3a00d7012003200d3a00d6012003200e3b01d4012003200f3a00d301200320103a00d201200320113b01d001200320123a00cf01200320133a00ce01200320043b01cc01200320053a00cb01200320063a00ca01200320073b01c801200320083a00c701200320093a00c601200320143b01c401200320153a00c3012003200a3a00c201200320163b01c0010240200241ff01710d004103210b0c010b4110102c2202450d12200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1220014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220d3602004100210b200d0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220d200d280200417f6a220d360200200d0d002002102e0b0240024002400240200b417f6a0e03000102010b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b0240200a41ff01710d00200741107420084108747220097241017420044110742005410874722006724b0d020b4110102c2202450d14200241f8f7c60036020c2002410136020820024281808080103702004110102c2201450d1420014190f8c60036020c20014101360208200142818080801037020020022002280200417f6a220b360200200b0d002002280208200228020c2802001103000240200228020c280204450d002002280208102e0b200241046a220b200b280200417f6a220b360200200b0d002002102e0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22022002280200417f6a220236020020020d002001102e0b20004200370308200041206a41023a0000200041186a41003a00004201210c0c010b4200210c200341c8006a41186a22024200370300200341d8006a22014200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a220a290000370300200320032900c001370348200341c0016a41dbc3cb0041051081022002200a290000370300200120032900c001370300200341c8006a412010ff01200341003a00c001200341c0016a108608200041186a41003a000020004200370308200020032800c0013600192000411c6a200341c3016a2800003600000b2000200c3703000c120b200b20061045000b200220051046000b200420014105746a200341086a412010ec080d0141cec3cb002107410d21060b02402009450d002004102e0b410321020c020b20034198016a41186a2201200341086a41186a29030037030020034198016a41106a220b200341086a41106a29030037030020034198016a41086a220a200341086a41086a2903003703002003200329030837039801200820024d0d02200420024105746a2202200329039801370000200241186a2001290300370000200241106a200b290300370000200241086a200a2903003700002004200810fc02200341c8006a41186a22014200370300200341c8006a41106a22024200370300200341c8006a41086a220b420037030020034200370348200341c0016a41b4c3cb004113108102200b200341c0016a41086a220a290000370300200320032900c001370348200341c0016a41c7c3cb0041071081022001200a290000370300200220032900c001370300200341c8006a200341286a109a03200341c0016a41186a200341f8006a41186a290300370300200341c0016a41106a200341f8006a41106a290300370300200a200341f8006a41086a290300370300200320032903783703c00141012105200341c0016a4101200420081084082001420037030020024200370300200b420037030020034200370348200341c0016a41b4c3cb004113108102200b200a290000370300200320032900c001370348200341c0016a41dbc3cb0041051081022001200a290000370300200220032900c001370300200341c0016a200341c8006a412010f40220032d00c001210a2001200341c0016a41196a2900003703002002200341c0016a41116a290000370300200b200341c0016a41096a290000370300200320032900c10137034802400240200a4101460d0041002105200341003a0098010c010b20034198016a41096a200341d0006a29030037000020034198016a41116a200341d8006a29030037000020034198016a41196a200341e0006a290300370000200341013a00980120032003290348370099010b200341d9016a20034190016a290300370000200341d1016a20034188016a290300370000200341c9016a20034180016a290300370000200320032903783700c101200341013a00c00102402005450d0020034198016a410172200341c0016a410172412010ec080d00200341e0006a4200370300200341d8006a4200370300200341c8006a41086a2201420037030020034200370348200341c0016a41b4c3cb0041131081022001200341c0016a41086a220b290000370300200320032900c001370348200341c0016a41dbc3cb004105108102200241086a200b290000370000200220032900c0013700004120102c2202450d0d200342203702c401200320023602c001200341c0016a200341086a41201074200341c8006a412020032802c001220220032802c80110b201024020032802c401450d002002102e0b200341d9016a200341206a290300370000200341d1016a200341186a290300370000200341c9016a200341106a290300370000200320032903083700c101200341013a00c001200341c0016a1086080b2009450d002004102e0b2003418d083b01c001200341c0016a10fe01200041186a41003a000020004200370308200020032800683600192000411c6a200341eb006a280000360000200042003703000c0c0b20002007360024200020053a0022200041123a002120004200370308200041286a2006360000200041206a20023a0000200041186a41003a0000200042013703000c0b0b2002200841fcc3cb00103c000b200420014105746a200341f8006a412010ec080d0341cec3cb002107410d21060b2009450d002004102e0b410321020b20002007360024200020053a0022200041123a002120004200370308200041286a2006360000200041206a20023a0000200041186a41003a0000200042013703000c060b200341c0016a41186a2201200341f8006a41186a290300370300200341c0016a41106a220b200341f8006a41106a290300370300200341c0016a41086a220a200341f8006a41086a290300370300200320032903783703c001200820024d0d01200420024105746a220220032903c001370000200241186a2001290300370000200241106a200b290300370000200241086a200a2903003700002004200810fc0220014200370300200b4200370300200a4200370300200342003703c00120034198016a41b4c3cb004113108102200a20034198016a41086a220229000037030020032003290098013703c00120034198016a41c7c3cb00410710810220012002290000370300200b200329009801370300200341c0016a200341e8006a109a032001200341086a41186a290300370300200b200341086a41106a290300370300200a200341086a41086a290300370300200320032903083703c001200341c0016a41012004200810840820034198016a41186a220b420037030020034198016a41106a220a4200370300200242003703002003420037039801200341c8006a41b4c3cb0041131081022002200341c8006a41086a22012900003703002003200329004837039801200341c8006a41dbc3cb004105108102200b2001290000370300200a2003290048370300200341c0016a20034198016a412010f40220032d00c0012102200341c8006a41186a200341d9016a290000370300200341c8006a41106a200341d1016a2900003703002001200341c9016a290000370300200320032900c101370348024020024101470d00200341286a41186a200341c8006a41186a220a290300220c370300200341286a41106a200341c8006a41106a22052903002218370300200341286a41086a200341c8006a41086a2206290300221937030020032003290348221a37032820034198016a41186a200c37030020034198016a41106a201837030020034198016a41086a20193703002003201a3703980141002102024002400240024020080e020201000b4100210203402008410176220b20026a210120012002200420014105746a20034198016a412010ec084101481b21022008200b6b220841014b0d000b0b200420024105746a20034198016a412010ec08450d010b200a4200370300200542003703002006420037030020034200370348200341c0016a41b4c3cb0041131081022006200341c0016a41086a2202290000370300200320032900c001370348200341c0016a41dbc3cb004105108102200a2002290000370300200520032900c001370300200341c8006a412010ff010c010b200341d9016a200341b0016a290300370000200341d1016a200341a8016a290300370000200341c9016a200341a0016a29030037000020032003290398013700c101200341013a00c001200341c0016a1086080b2003418d043b01c001200341c0016a10fe012009450d002004102e0b2000420037030820002003280001360019200041186a41003a00002000411c6a200341046a280000360000200042003703000c040b2002200841ecc3cb00103c000b200341c0016a41186a20034198016a41186a290300370300200341c0016a41106a20034198016a41106a290300370300200341c0016a41086a20034198016a41086a29030037030020032003290398013703c0014100210b200341c0016a21010b0240024020062005470d00200541016a22022005490d042005410174220a2002200a20024b1b22024104200241044b1b220241ffffff3f71200246210a200241057421020240024020050d00200341003602780c010b20034180016a4101360200200320043602782003200541057436027c0b200341c8006a2002200a200341f8006a107d200341d0006a280200210220032802484101460d012003200328024c22043602282003200241057636022c0b2004200b4105746a220241206a20022006200b6b41057410ea081a20022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002003200641016a2201360230200341c8006a41186a220b4200370300200341c8006a41106a220a4200370300200341c8006a41086a2204420037030020034200370348200341c0016a41b4c3cb0041131081022004200341c0016a41086a2202290000370300200320032900c001370348200341c0016a41c7c3cb004107108102200b2002290000370300200a20032900c001370300200341c8006a200341286a109a03200341c0016a41186a20034198016a41186a290300370300200341c0016a41106a20034198016a41106a290300370300200220034198016a41086a29030037030020032003290398013703c00141d4e2cc0041002003280228220220011084082003410d3b01c001200341c0016a10fe010240200328022c41ffffff3f71450d002002102e0b200041186a41003a000020004200370308200020032800083600192000411c6a2003410b6a280000360000200042003703000c020b2002450d020b1036000b200341c0026a24000f0b1038000be33a0b037f017e037f017e047f017e017f037e027f017e0c7f230041d0096b22022400024002400240200128020422034108490d002001280200220429000021052001200341786a22063602042001200441086a22073602002006450d0120072d000021062001200341776a22083602042001200741016a36020002400240024002400240024020060e020001070b20084108490d062007290001210920012003416f6a220a3602042001200741096a36020041002107200241003a00a80820032106200a210b0240024002400340200a2007460d0120024188086a20076a200420076a220841116a2d00003a000020012006416e6a3602042001200841126a3602002002200741016a22083a00a8082006417f6a2106200b417f6a210b2008210720084120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220a20024188086a41106a29030037030020024188076a41186a220c20024188086a41186a290300370300200220022903880837038807200841ff0171411f4d0d09200320086b416f6a210d200241e8036a41086a2007290300370300200241e8036a41106a200a290300370300200241e8036a41186a200c2903003703002002200229038807220e3703c8052002200e3703e80341002107200241003a00a808200420086a210f2006416e6a210a0340200d2007460d0220024188086a20076a200f20076a220c41116a2d00003a00002001200a3602042001200c41126a3602002002200741016a220c3a00a808200a417f6a210a2003417f6a2103200c2107200c4120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220320024188086a41106a29030037030020024188076a41186a220a20024188086a41186a290300370300200220022903880837038807200c41ff0171411f4d0d09200241c8056a41086a2007290300370300200241c8056a41106a2003290300370300200241c8056a41186a200a29030037030020022002290388073703c8052006200c6b2207416f6a4104490d092004200b411f200b411f491b6a20086a41126a280000210820012007416b6a360204200241e8066a41086a2207200241c8056a41086a290300370300200241e8066a41106a2203200241c8056a41106a290300370300200241e8066a41186a2204200241c8056a41186a2903003703002001200f200c6a41156a360200200220022903c8053703e80620024188086a200110a70120022d0088084101460d0920024188076a41386a200241c1086a290000220e37030020024188076a41306a200241b9086a290000221037030020024188076a41286a200241b1086a290000221137030020024188076a41206a200241a9086a290000221237030020024188066a41086a220620024191086a29000037030020024188066a41106a220b20024199086a29000037030020024188066a41186a220a200241a1086a29000037030020024188066a41206a220c201237030020024188066a41286a220d201137030020024188066a41306a220f201037030020024188066a41386a2213200e370300200220022900890837038806200241c8066a41186a22142004290300370300200241c8066a41106a22042003290300370300200241c8066a41086a22032007290300370300200220022903e8063703c806200241a8056a41186a22072014290300370300200241a8056a41106a22142004290300370300200241a8056a41086a22042003290300370300200220022903c8063703a805200241e8046a41386a22032013290300370300200241e8046a41306a2213200f290300370300200241e8046a41286a220f200d290300370300200241e8046a41206a220d200c290300370300200241e8046a41186a220c200a290300370300200241e8046a41106a220a200b290300370300200241e8046a41086a220b200629030037030020022002290388063703e804200241c8046a41186a2007290300370300200241c8046a41106a2014290300370300200241c8046a41086a2004290300370300200220022903a8053703c80420024188046a41386a200329030037030020024188046a41306a201329030037030020024188046a41286a200f29030037030020024188046a41206a200d29030037030020024188046a41186a200c29030037030020024188046a41106a200a29030037030020024188046a41086a200b290300370300200220022903e8043703880441002107200241003a00a80820012802042106417f2103034020062007460d0320024188086a20076a200128020022042d00003a00002001200620036a3602042001200441016a3602002002200741016a22043a00a8082003417f6a21032004210720044120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220320024188086a41106a29030037030020024188076a41186a220b20024188086a41186a290300370300200220022903880837038807200441ff0171411f4d0d09200241c8056a41086a2007290300370300200241c8056a41106a2003290300370300200241c8056a41186a200b29030037030020022002290388073703c805200620046b22074104490d0920012802002204280000210320012007417c6a3602042001200441046a360200200241e8066a41086a2207200241c8056a41086a290300370300200241e8066a41106a2204200241c8056a41106a290300370300200241e8066a41186a2206200241c8056a41186a290300370300200220022903c8053703e80620024188086a200110a70120022d0088084101460d0920024188076a41386a200241c1086a290000220e37030020024188076a41306a200241b9086a290000221037030020024188076a41286a200241b1086a290000221137030020024188076a41206a200241a9086a290000221237030020024188076a41186a200241a1086a290000221537030020024188066a41086a220120024191086a29000037030020024188066a41106a220b20024199086a29000037030020024188066a41186a220a201537030020024188066a41206a220c201237030020024188066a41286a220d201137030020024188066a41306a220f201037030020024188066a41386a2213200e370300200220022900890837038806200241c8066a41186a22142006290300370300200241c8066a41106a22062004290300370300200241c8066a41086a22042007290300370300200220022903e8063703c806200241a8056a41186a22072014290300370300200241a8056a41106a22142006290300370300200241a8056a41086a22062004290300370300200220022903c8063703a805200241e8046a41386a22042013290300370300200241e8046a41306a2213200f290300370300200241e8046a41286a220f200d290300370300200241e8046a41206a220d200c290300370300200241e8046a41186a220c200a290300370300200241e8046a41106a220a200b290300370300200241e8046a41086a220b200129030037030020022002290388063703e804200241c8026a41186a2007290300370300200241c8026a41106a2014290300370300200241c8026a41086a2006290300370300200220022903a8053703c80220024188026a41386a200429030037030020024188026a41306a201329030037030020024188026a41286a200f29030037030020024188026a41206a200d29030037030020024188026a41186a200c29030037030020024188026a41106a200a29030037030020024188026a41086a200b290300370300200220022903e80437038802200241c8036a41186a2201200241e8036a41186a290300370300200241c8036a41106a2207200241e8036a41106a290300370300200241c8036a41086a2204200241e8036a41086a290300370300200220022903e8033703c803200241a8036a41186a200241c8046a41186a290300370300200241a8036a41106a200241c8046a41106a290300370300200241a8036a41086a200241c8046a41086a290300370300200220022903c8043703a803200241e8026a41386a20024188046a41386a290300370300200241e8026a41306a20024188046a41306a290300370300200241e8026a41286a20024188046a41286a290300370300200241e8026a41206a20024188046a41206a290300370300200241e8026a41186a20024188046a41186a290300370300200241e8026a41106a20024188046a41106a290300370300200241e8026a41086a20024188046a41086a29030037030020022002290388043703e802200241e8016a41186a2001290300370300200241e8016a41106a2007290300370300200241e8016a41086a2004290300370300200220022903c8033703e8014200210e0c040b200741ff0171450d08200241003a00a8080c080b200741ff0171450d07200241003a00a8080c070b200741ff0171450d06200241003a00a8080c060b20084108490d052007290001210920012003416f6a220a3602042001200741096a36020041002107200241003a00a80820032106200a210b0340200a2007460d0220024188086a20076a200420076a220841116a2d00003a000020012006416e6a3602042001200841126a3602002002200741016a22083a00a8082006417f6a2106200b417f6a210b2008210720084120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220a20024188086a41106a29030037030020024188076a41186a220c20024188086a41186a290300370300200220022903880837038807200841ff0171411f4d0d05200320086b416f6a210d200241e8036a41086a2007290300370300200241e8036a41106a200a290300370300200241e8036a41186a200c2903003703002002200229038807220e3703c8052002200e3703e80341002107200241003a00a808200420086a210f2006416e6a210a0340200d2007460d0320024188086a20076a200f20076a220c41116a2d00003a00002001200a3602042001200c41126a3602002002200741016a220c3a00a808200a417f6a210a2003417f6a2103200c2107200c4120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220320024188086a41106a29030037030020024188076a41186a220a20024188086a41186a290300370300200220022903880837038807200c41ff0171411f4d0d05200241c8056a41086a2007290300370300200241c8056a41106a2003290300370300200241c8056a41186a200a29030037030020022002290388073703c8052006200c6b2207416f6a4104490d052004200b411f200b411f491b6a20086a41126a280000210820012007416b6a360204200241e8066a41086a2207200241c8056a41086a290300370300200241e8066a41106a2203200241c8056a41106a290300370300200241e8066a41186a2204200241c8056a41186a2903003703002001200f200c6a41156a360200200220022903c8053703e80620024188086a200110a70120022d0088084101460d0520024188076a41386a200241c1086a290000220e37030020024188076a41306a200241b9086a290000221037030020024188076a41286a200241b1086a290000221137030020024188076a41206a200241a9086a290000221237030020024188066a41086a220620024191086a29000037030020024188066a41106a220b20024199086a29000037030020024188066a41186a220a200241a1086a29000037030020024188066a41206a220c201237030020024188066a41286a220d201137030020024188066a41306a220f201037030020024188066a41386a2213200e370300200220022900890837038806200241c8066a41186a22142004290300370300200241c8066a41106a22042003290300370300200241c8066a41086a22032007290300370300200220022903e8063703c806200241a8056a41186a22072014290300370300200241a8056a41106a22142004290300370300200241a8056a41086a22042003290300370300200220022903c8063703a805200241e8046a41386a22032013290300370300200241e8046a41306a2213200f290300370300200241e8046a41286a220f200d290300370300200241e8046a41206a220d200c290300370300200241e8046a41186a220c200a290300370300200241e8046a41106a220a200b290300370300200241e8046a41086a220b200629030037030020022002290388063703e804200241c8046a41186a2007290300370300200241c8046a41106a2014290300370300200241c8046a41086a2004290300370300200220022903a8053703c80420024188046a41386a200329030037030020024188046a41306a201329030037030020024188046a41286a200f29030037030020024188046a41206a200d29030037030020024188046a41186a200c29030037030020024188046a41106a200a29030037030020024188046a41086a200b290300370300200220022903e8043703880441002107200241003a00a80820012802042106417f2103034020062007460d0420024188086a20076a200128020022042d00003a00002001200620036a3602042001200441016a3602002002200741016a22043a00a8082003417f6a21032004210720044120470d000b20024188076a41086a220720024188086a41086a29030037030020024188076a41106a220320024188086a41106a29030037030020024188076a41186a220b20024188086a41186a290300370300200220022903880837038807200441ff0171411f4d0d05200241c8056a41086a2007290300370300200241c8056a41106a2003290300370300200241c8056a41186a200b29030037030020022002290388073703c805200620046b22074104490d0520012802002204280000210320012007417c6a3602042001200441046a360200200241e8066a41086a2207200241c8056a41086a290300370300200241e8066a41106a2204200241c8056a41106a290300370300200241e8066a41186a2206200241c8056a41186a290300370300200220022903c8053703e80620024188086a200110a70120022d0088084101460d0520024188076a41386a200241c1086a290000220e37030020024188076a41306a200241b9086a290000221037030020024188076a41286a200241b1086a290000221137030020024188076a41206a200241a9086a290000221237030020024188076a41186a200241a1086a290000221537030020024188066a41086a220120024191086a29000037030020024188066a41106a220b20024199086a29000037030020024188066a41186a220a201537030020024188066a41206a220c201237030020024188066a41286a220d201137030020024188066a41306a220f201037030020024188066a41386a2213200e370300200220022900890837038806200241c8066a41186a22142006290300370300200241c8066a41106a22062004290300370300200241c8066a41086a22042007290300370300200220022903e8063703c806200241a8056a41186a22072014290300370300200241a8056a41106a22142006290300370300200241a8056a41086a22062004290300370300200220022903c8063703a805200241e8046a41386a22042013290300370300200241e8046a41306a2213200f290300370300200241e8046a41286a220f200d290300370300200241e8046a41206a220d200c290300370300200241e8046a41186a220c200a290300370300200241e8046a41106a220a200b290300370300200241e8046a41086a220b200129030037030020022002290388063703e804200241c8026a41186a2007290300370300200241c8026a41106a2014290300370300200241c8026a41086a2006290300370300200220022903a8053703c80220024188026a41386a200429030037030020024188026a41306a201329030037030020024188026a41286a200f29030037030020024188026a41206a200d29030037030020024188026a41186a200c29030037030020024188026a41106a200a29030037030020024188026a41086a200b290300370300200220022903e80437038802200241c8036a41186a2201200241e8036a41186a290300370300200241c8036a41106a2207200241e8036a41106a290300370300200241c8036a41086a2204200241e8036a41086a290300370300200220022903e8033703c803200241a8036a41186a200241c8046a41186a290300370300200241a8036a41106a200241c8046a41106a290300370300200241a8036a41086a200241c8046a41086a290300370300200220022903c8043703a803200241e8026a41386a20024188046a41386a290300370300200241e8026a41306a20024188046a41306a290300370300200241e8026a41286a20024188046a41286a290300370300200241e8026a41206a20024188046a41206a290300370300200241e8026a41186a20024188046a41186a290300370300200241e8026a41106a20024188046a41106a290300370300200241e8026a41086a20024188046a41086a29030037030020022002290388043703e802200241e8016a41186a2001290300370300200241e8016a41106a2007290300370300200241e8016a41086a2004290300370300200220022903c8033703e8014201210e0b200241c8016a41186a2201200241a8036a41186a290300370300200241c8016a41106a2207200241a8036a41106a290300370300200241c8016a41086a2204200241a8036a41086a29030037030020024188016a41086a2206200241e8026a41086a29030037030020024188016a41106a220b200241e8026a41106a29030037030020024188016a41186a220a200241e8026a41186a29030037030020024188016a41206a220c200241e8026a41206a29030037030020024188016a41286a220d200241e8026a41286a29030037030020024188016a41306a220f200241e8026a41306a29030037030020024188016a41386a2213200241e8026a41386a290300370300200220022903a8033703c801200220022903e80237038801200241e8006a41186a2214200241c8026a41186a290300370300200241e8006a41106a2216200241c8026a41106a290300370300200241e8006a41086a2217200241c8026a41086a290300370300200241286a41386a221820024188026a41386a290300370300200241286a41306a221920024188026a41306a290300370300200241286a41286a221a20024188026a41286a290300370300200241286a41206a221b20024188026a41206a290300370300200241286a41186a221c20024188026a41186a290300370300200241286a41106a221d20024188026a41106a290300370300200241286a41086a221e20024188026a41086a290300370300200220022903c8023703682002200229038802370328200241086a41186a221f200241e8016a41186a290300370300200241086a41106a2220200241e8016a41106a290300370300200241086a41086a2221200241e8016a41086a290300370300200220022903e801370308200041186a2008360200200020093703102000200e37030820002005370300200020022903c80137021c200041246a20042903003702002000412c6a2007290300370200200041346a2001290300370200200020022903880137023c200041c4006a2006290300370200200041cc006a200b290300370200200041d4006a200a290300370200200041dc006a200c290300370200200041e4006a200d290300370200200041ec006a200f290300370200200041f4006a20132903003702002000200336027c20004198016a201429030037020020004190016a201629030037020020004188016a201729030037020020004180016a2002290368370200200041d8016a2018290300370200200041d0016a2019290300370200200041c8016a201a290300370200200041c0016a201b290300370200200041b8016a201c290300370200200041b0016a201d290300370200200041a8016a201e290300370200200041a0016a2002290328370200200041f8016a201f290300370300200041f0016a2020290300370300200041e8016a2021290300370300200041e0016a20022903083703000c050b200741ff0171450d03200241003a00a8080c030b200741ff0171450d02200241003a00a8080c020b200741ff0171450d01200241003a00a8080c010b200042023703080c010b200042023703080b200241d0096a24000bde17020b7f057e23004190076b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e06010203040506070b200041073a00000c1a0b200241086a200110ab0102402002280208450d0020024100360280040c190b20024180046a2001200228020c1092012002280280042205450d18200228028404210420012802042206450d0620024188046a2802002107200128020022032d0000210820012006417f6a22063602042001200341016a360200410021030240024020080e020100080b20024180046a200110930120022d0080044101460d07200241e8016a20024199046a290000370300200241e0016a20024191046a290000370300200241d8016a20024189046a29000037030020022002290081043703d00120012802042106410121030b200241d0006a41186a2208200241d0016a41186a290300370300200241d0006a41106a2209200241d0016a41106a290300370300200241d0006a41086a220a200241d0016a41086a290300370300200220022903d001370350024020064104490d002001280200220b280000210c20012006417c6a3602042001200b41046a360200200241b0016a41086a200a290300220d370300200241b0016a41106a2009290300220e370300200241b0016a41186a2008290300220f3703002002200229035022103703b001200020033a0001200041013a0000200041026a20103700002000410a6a200d370000200041126a200e3700002000411a6a200f370000200041306a200c3602002000412c6a2007360100200041286a2004360100200041246a2005360100200041226a20022f0190013b01000c1a0b200041073a00000c070b20024180046a20011098012002280280042105200241d0016a20024180046a41047241ac0210e9081a024002402005411c460d0020024180046a200241d0016a41ac0210e9081a41b002102c22040d010c180b200041073a00000c190b20042005360200200441046a20024180046a41ac0210e9081a200241106a200110ab01024020022802100d0020022802142101200041023a0000200020022f00b0013b0001200041086a2001360200200041046a20043602002000410c6a2002290250370200200041036a200241b0016a41026a2d00003a0000200041146a200241d0006a41086a2902003702002000411c6a200241e0006a290200370200200041246a200241e8006a2902003702002000412c6a200241f0006a290200370200200041346a200241f8006a2802003602000c190b200041073a00002004108b022004102e0c180b200241206a200110ab0120022802200d072002280224210620024180046a20011098012002280280042105200241d0016a20024180046a41047241ac0210e9081a2005411c460d0620024180046a200241d0016a41ac0210e9081a41b002102c2204450d1520042005360200200441046a20024180046a41ac0210e9081a200241186a200110ab01024020022802180d00200228021c2101200041033a0000200020022f00b0013b00012000410c6a2001360200200041086a2004360200200041046a2006360200200041106a2002290350370300200041036a200241b2016a2d00003a0000200041186a200241d0006a41086a290300370300200041206a200241d0006a41106a290300370300200041286a200241d0006a41186a290300370300200041306a200241d0006a41206a2903003703000c180b200041073a00002004108b022004102e0c170b41002105200241003a00a0042003417e6a21030240034020062005460d0120024180046a20056a200420056a220841016a2d00003a0000200120033602042001200841026a3602002002200541016a22083a00a0042003417f6a21032008210520084120460d100c000b0b200541ff0171450d0f200241003a00a0040c0f0b41002105200241003a00a0042003417e6a21030240034020062005460d0120024180046a20056a200420056a220841016a2d00003a0000200120033602042001200841026a3602002002200541016a22083a00a0042003417f6a21032008210520084120460d0a0c000b0b200541ff0171450d09200241003a00a0040c090b41002105200241003a00a0042003417e6a21030240034020062005460d0120024180046a20056a200420056a220841016a2d00003a0000200120033602042001200841026a3602002002200541016a22083a00a0042003417f6a21032008210520084120460d070c000b0b200541ff0171450d06200241003a00a0040c060b200041073a00000c130b200041073a00000b200441ffffff3f71450d112005102e0c110b200041073a00000c100b200041073a00000c0f0b200241d0016a41086a220120024180046a41086a290300370300200241d0016a41106a220520024180046a41106a290300370300200241d0016a41186a220420024180046a41186a29030037030020022002290380043703d001200841ff0171411f4d0d00200241b0016a41086a2001290300220d370300200241b0016a41106a2005290300220e370300200241b0016a41186a2004290300220f370300200220022903d00122103703b001200041063a000020002010370001200041096a200d370000200041116a200e370000200041196a200f370000200041216a200229009001370000200041296a20024190016a41086a290000370000200041306a2002419f016a2900003700000c0e0b200041073a00000c0d0b200241d0016a41086a220520024180046a41086a290300370300200241d0016a41106a220420024180046a41106a290300370300200241d0016a41186a220620024180046a41186a29030037030020022002290380043703d001200841ff0171411f4d0d00200241b0016a41086a2005290300370300200241b0016a41106a2004290300370300200241b0016a41186a2006290300370300200220022903d0013703b001200241c8006a200110ab0120022802480d01200228024c2105200241386a200110d9042002290338a70d022002290340210d200241306a200110ab0120022802300d032002280234210120024190016a41186a200241b0016a41186a290300220e37030020024190016a41106a200241b0016a41106a290300220f37030020024190016a41086a200241b0016a41086a2903002210370300200220022903b001221137039001200041053a000020002011370001200041096a2010370000200041116a200f370000200041196a200e370000200041216a20022f0080013b0000200041236a20024182016a2d00003a0000200041306a200d370300200041286a2001360200200041246a20053602000c0c0b200041073a00000c0b0b200041073a00000c0a0b200041073a00000c090b200041073a00000c080b200241d0016a41086a220520024180046a41086a290300370300200241d0016a41106a220420024180046a41106a290300370300200241d0016a41186a220620024180046a41186a29030037030020022002290380043703d001200841ff0171411f4d0d00200241b0016a41086a2005290300370300200241b0016a41106a2004290300370300200241b0016a41186a2006290300370300200220022903d0013703b001200241286a200110ab0120022802280d0120012802042205450d04200228022c2103200128020022042d0000210620012005417f6a3602042001200441016a3602004100210120060e020302040b200041073a00000c060b200041073a00000c050b410121010b20024190016a41186a200241b0016a41186a290300220d37030020024190016a41106a200241b0016a41106a290300220e37030020024190016a41086a200241b0016a41086a290300220f370300200220022903b001221037039001200041043a000020002010370001200041096a200f370000200041116a200e370000200041196a200d370000200041246a2003360200200041216a20013a0000200041286a200229038001370300200041306a20024180016a41086a2903003703000c030b200041073a00000c020b1036000b200041073a00000b20024190076a24000bb20401057f23004180056b22022400024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e03010203040b200041043b01000c080b2002200110ab0102402002280200450d00200241003602200c070b200241206a200120022802041097012002280220450d06200241da026a200241206a41086a280200360100200220022903203701d202200041013b0100200020022901d002370102200041086a200241d6026a2901003701000c070b024020064102490d0020042f0001210520012003417d6a3602042001200441036a360200200241d0026a200110980120022802d0022101200241206a200241d0026a41047241ac0210e9081a024002402001411c460d00200241d0026a200241206a41ac0210e9081a41b002102c22030d011036000b200041043b01000c080b20032001360200200341046a200241d0026a41ac0210e9081a200041046a2003360200200020053b0102200041023b01000c070b200041043b01000c060b200241086a200110ab012002280208450d01200241003602200c020b200041043b01000c040b200241206a2001200228020c10970120022802200d010b200041043b01000c020b200241da026a200241206a41086a280200360100200220022903203701d202200041033b0100200020022901d002370102200041086a200241d6026a2901003701000c010b200041043b01000b20024180056a24000bb54507047f017e017f027e047f077e107f230041d00d6b220224000240024002402001280200220328020422044108490d002003280200220529000021062003200441786a3602042003200541086a360200200128020022032802042204450d01200328020022052d0000210720032004417f6a3602042003200541016a3602000240024002400240024002400240024020070e020001090b2001280200220328020422044108490d082003280200220529000021082003200441786a3602042003200541086a36020041002104200241003a00a80a024002400240024002400340200128020022032802042205450d01200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2203200241880a6a41086a290300370300200241c8096a41106a2204200241880a6a41106a290300370300200241c8096a41186a22052009370300200220022903880a3703c809200241e8036a41186a2005290300370300200241e8036a41106a2004290300370300200241e8036a41086a2003290300370300200220022903c8093703e80341002104200241003a00a80a0340200128020022032802042205450d02200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2204200241880a6a41086a290300370300200241c8096a41106a2205200241880a6a41106a290300370300200241c8096a41186a22072009370300200220022903880a3703c80920012802002203280204220a4104490d0d2003280200220b280000210c2003200a417c6a3602042003200b41046a360200200241e8066a41086a2004290300370300200241e8066a41106a2005290300370300200241e8066a41186a2007290300370300200220022903c8093703e80641002104200241003a00c80a0340200128020022032802042205450d03200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00c80a20032104200341c000470d000b200241d00a6a41086a2203200241880a6a41086a290300370300200241d00a6a41106a2204200241880a6a41106a290300370300200241d00a6a41186a2205200241880a6a41186a290300370300200241d00a6a41206a2207200241880a6a41206a290300370300200241d00a6a41286a220a200241880a6a41286a290300370300200241d00a6a41306a220b200241880a6a41306a290300370300200241d00a6a41386a220d200241880a6a41386a290300370300200220022903880a3703d00a200241c8096a41086a2003290300220e370300200241c8096a41106a20042903002209370300200241c8096a41186a2005290300220f370300200241c8096a41206a20072903002210370300200241c8096a41286a200a2903002211370300200241c8096a41306a200b2903002212370300200241c8096a41386a2203200d290300370300200220022903d00a22133703c80920024188076a41306a201237030020024188076a41286a201137030020024188076a41206a201037030020024188076a41186a200f37030020024188076a41106a200937030020024188076a41386a2003290300221437030020024188066a41306a2203201237030020024188066a41286a2204201137030020024188066a41206a2205201037030020024188066a41186a2207200f37030020024188066a41106a220a200937030020024188066a41086a220b200e37030020024188066a41386a220d20143703002002201337038806200241c8066a41186a2215200241e8066a41186a290300370300200241c8066a41106a2216200241e8066a41106a290300370300200241c8066a41086a2217200241e8066a41086a290300370300200220022903e8063703c806200241a8056a41186a22182015290300370300200241a8056a41106a22152016290300370300200241a8056a41086a22162017290300370300200220022903c8063703a805200241e8046a41386a2217200d290300370300200241e8046a41306a220d2003290300370300200241e8046a41286a22032004290300370300200241e8046a41206a22042005290300370300200241e8046a41186a22052007290300370300200241e8046a41106a2207200a290300370300200241e8046a41086a220a200b29030037030020022002290388063703e804200241c8046a41186a2018290300370300200241c8046a41106a2015290300370300200241c8046a41086a2016290300370300200220022903a8053703c80420024188046a41386a201729030037030020024188046a41306a200d29030037030020024188046a41286a200329030037030020024188046a41206a200429030037030020024188046a41186a200529030037030020024188046a41106a200729030037030020024188046a41086a200a290300370300200220022903e8043703880441002104200241003a00a80a0340200128020022032802042205450d04200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2204200241880a6a41086a290300370300200241c8096a41106a2205200241880a6a41106a290300370300200241c8096a41186a22072009370300200220022903880a3703c80920012802002203280204220a4104490d0d2003280200220d280000210b2003200a417c6a3602042003200d41046a360200200241e8066a41086a2004290300370300200241e8066a41106a2005290300370300200241e8066a41186a2007290300370300200220022903c8093703e80641002104200241003a00c80a0340200128020022032802042205450d05200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00c80a20032104200341c000470d000b200241d00a6a41086a2201200241880a6a41086a290300370300200241d00a6a41106a2203200241880a6a41106a290300370300200241d00a6a41186a2204200241880a6a41186a290300370300200241d00a6a41206a2205200241880a6a41206a290300370300200241d00a6a41286a2207200241880a6a41286a290300370300200241d00a6a41306a220a200241880a6a41306a290300370300200241d00a6a41386a220d200241880a6a41386a290300370300200220022903880a3703d00a200241c8096a41386a2215200d290300370300200241c8096a41306a200a2903002209370300200241c8096a41286a2007290300220f370300200241c8096a41206a20052903002210370300200241c8096a41186a20042903002211370300200241c8096a41106a20032903002212370300200241c8096a41086a2001290300220e370300200220022903d00a22133703c80920024188076a41306a2201200937030020024188076a41286a2203200f37030020024188076a41206a2204201037030020024188076a41186a2205201137030020024188076a41106a2207201237030020024188076a41086a220a200e37030020024188076a41386a220d2015290300370300200220133703880720024188066a41386a2215200d29030037030020024188066a41306a220d200129030037030020024188066a41286a2201200329030037030020024188066a41206a2203200429030037030020024188066a41186a2204200529030037030020024188066a41106a2205200729030037030020024188066a41086a2207200a290300370300200220022903880737038806200241c8066a41186a220a200241e8066a41186a290300370300200241c8066a41106a2216200241e8066a41106a290300370300200241c8066a41086a2217200241e8066a41086a290300370300200220022903e8063703c806200241a8056a41186a2218200a290300370300200241a8056a41106a220a2016290300370300200241a8056a41086a22162017290300370300200220022903c8063703a805200241e8046a41386a22172015290300370300200241e8046a41306a2215200d290300370300200241e8046a41286a220d2001290300370300200241e8046a41206a22012003290300370300200241e8046a41186a22032004290300370300200241e8046a41106a22042005290300370300200241e8046a41086a2205200729030037030020022002290388063703e804200241c8026a41186a2018290300370300200241c8026a41106a200a290300370300200241c8026a41086a2016290300370300200220022903a8053703c80220024188026a41386a201729030037030020024188026a41306a201529030037030020024188026a41286a200d29030037030020024188026a41206a200129030037030020024188026a41186a200329030037030020024188026a41106a200429030037030020024188026a41086a2005290300370300200220022903e80437038802200241c8036a41186a2201200241e8036a41186a290300370300200241c8036a41106a2203200241e8036a41106a290300370300200241c8036a41086a2204200241e8036a41086a290300370300200220022903e8033703c803200241a8036a41186a200241c8046a41186a290300370300200241a8036a41106a200241c8046a41106a290300370300200241a8036a41086a200241c8046a41086a290300370300200220022903c8043703a803200241e8026a41386a20024188046a41386a290300370300200241e8026a41306a20024188046a41306a290300370300200241e8026a41286a20024188046a41286a290300370300200241e8026a41206a20024188046a41206a290300370300200241e8026a41186a20024188046a41186a290300370300200241e8026a41106a20024188046a41106a290300370300200241e8026a41086a20024188046a41086a29030037030020022002290388043703e802200241e8016a41186a2001290300370300200241e8016a41106a2003290300370300200241e8016a41086a2004290300370300200220022903c8033703e801420021090c060b200441ff0171450d0c200241003a00a80a0c0c0b200441ff0171450d0b200241003a00a80a0c0b0b200441ff0171450d0a200241003a00c80a0c0a0b200441ff0171450d09200241003a00a80a0c090b200441ff0171450d08200241003a00c80a0c080b2001280200220328020422044108490d072003280200220529000021082003200441786a3602042003200541086a36020041002104200241003a00a80a0340200128020022032802042205450d02200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2203200241880a6a41086a290300370300200241c8096a41106a2204200241880a6a41106a290300370300200241c8096a41186a22052009370300200220022903880a3703c809200241e8036a41186a2005290300370300200241e8036a41106a2004290300370300200241e8036a41086a2003290300370300200220022903c8093703e80341002104200241003a00a80a0340200128020022032802042205450d03200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2204200241880a6a41086a290300370300200241c8096a41106a2205200241880a6a41106a290300370300200241c8096a41186a22072009370300200220022903880a3703c80920012802002203280204220a4104490d072003280200220b280000210c2003200a417c6a3602042003200b41046a360200200241e8066a41086a2004290300370300200241e8066a41106a2005290300370300200241e8066a41186a2007290300370300200220022903c8093703e80641002104200241003a00c80a0340200128020022032802042205450d04200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00c80a20032104200341c000470d000b200241d00a6a41086a2203200241880a6a41086a290300370300200241d00a6a41106a2204200241880a6a41106a290300370300200241d00a6a41186a2205200241880a6a41186a290300370300200241d00a6a41206a2207200241880a6a41206a290300370300200241d00a6a41286a220a200241880a6a41286a290300370300200241d00a6a41306a220b200241880a6a41306a290300370300200241d00a6a41386a220d200241880a6a41386a290300370300200220022903880a3703d00a200241c8096a41086a2003290300220e370300200241c8096a41106a20042903002209370300200241c8096a41186a2005290300220f370300200241c8096a41206a20072903002210370300200241c8096a41286a200a2903002211370300200241c8096a41306a200b2903002212370300200241c8096a41386a2203200d290300370300200220022903d00a22133703c80920024188076a41306a201237030020024188076a41286a201137030020024188076a41206a201037030020024188076a41186a200f37030020024188076a41106a200937030020024188076a41386a2003290300221437030020024188066a41306a2203201237030020024188066a41286a2204201137030020024188066a41206a2205201037030020024188066a41186a2207200f37030020024188066a41106a220a200937030020024188066a41086a220b200e37030020024188066a41386a220d20143703002002201337038806200241c8066a41186a2215200241e8066a41186a290300370300200241c8066a41106a2216200241e8066a41106a290300370300200241c8066a41086a2217200241e8066a41086a290300370300200220022903e8063703c806200241a8056a41186a22182015290300370300200241a8056a41106a22152016290300370300200241a8056a41086a22162017290300370300200220022903c8063703a805200241e8046a41386a2217200d290300370300200241e8046a41306a220d2003290300370300200241e8046a41286a22032004290300370300200241e8046a41206a22042005290300370300200241e8046a41186a22052007290300370300200241e8046a41106a2207200a290300370300200241e8046a41086a220a200b29030037030020022002290388063703e804200241c8046a41186a2018290300370300200241c8046a41106a2015290300370300200241c8046a41086a2016290300370300200220022903a8053703c80420024188046a41386a201729030037030020024188046a41306a200d29030037030020024188046a41286a200329030037030020024188046a41206a200429030037030020024188046a41186a200529030037030020024188046a41106a200729030037030020024188046a41086a200a290300370300200220022903e8043703880441002104200241003a00a80a0340200128020022032802042205450d05200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00a80a2003210420034120470d000b200241d00a6a41186a200241880a6a41186a2903002209370300200241c8096a41086a2204200241880a6a41086a290300370300200241c8096a41106a2205200241880a6a41106a290300370300200241c8096a41186a22072009370300200220022903880a3703c80920012802002203280204220a4104490d072003280200220d280000210b2003200a417c6a3602042003200d41046a360200200241e8066a41086a2004290300370300200241e8066a41106a2005290300370300200241e8066a41186a2007290300370300200220022903c8093703e80641002104200241003a00c80a0340200128020022032802042205450d06200241880a6a20046a200328020022072d00003a000020032005417f6a3602042003200741016a3602002002200441016a22033a00c80a20032104200341c000470d000b200241d00a6a41086a2201200241880a6a41086a290300370300200241d00a6a41106a2203200241880a6a41106a290300370300200241d00a6a41186a2204200241880a6a41186a290300370300200241d00a6a41206a2205200241880a6a41206a290300370300200241d00a6a41286a2207200241880a6a41286a290300370300200241d00a6a41306a220a200241880a6a41306a290300370300200241d00a6a41386a220d200241880a6a41386a290300370300200220022903880a3703d00a200241c8096a41386a2215200d290300370300200241c8096a41306a200a2903002209370300200241c8096a41286a2007290300220f370300200241c8096a41206a20052903002210370300200241c8096a41186a20042903002211370300200241c8096a41106a20032903002212370300200241c8096a41086a2001290300220e370300200220022903d00a22133703c80920024188076a41306a2201200937030020024188076a41286a2203200f37030020024188076a41206a2204201037030020024188076a41186a2205201137030020024188076a41106a2207201237030020024188076a41086a220a200e37030020024188076a41386a220d2015290300370300200220133703880720024188066a41386a2215200d29030037030020024188066a41306a220d200129030037030020024188066a41286a2201200329030037030020024188066a41206a2203200429030037030020024188066a41186a2204200529030037030020024188066a41106a2205200729030037030020024188066a41086a2207200a290300370300200220022903880737038806200241c8066a41186a220a200241e8066a41186a290300370300200241c8066a41106a2216200241e8066a41106a290300370300200241c8066a41086a2217200241e8066a41086a290300370300200220022903e8063703c806200241a8056a41186a2218200a290300370300200241a8056a41106a220a2016290300370300200241a8056a41086a22162017290300370300200220022903c8063703a805200241e8046a41386a22172015290300370300200241e8046a41306a2215200d290300370300200241e8046a41286a220d2001290300370300200241e8046a41206a22012003290300370300200241e8046a41186a22032004290300370300200241e8046a41106a22042005290300370300200241e8046a41086a2205200729030037030020022002290388063703e804200241c8026a41186a2018290300370300200241c8026a41106a200a290300370300200241c8026a41086a2016290300370300200220022903a8053703c80220024188026a41386a201729030037030020024188026a41306a201529030037030020024188026a41286a200d29030037030020024188026a41206a200129030037030020024188026a41186a200329030037030020024188026a41106a200429030037030020024188026a41086a2005290300370300200220022903e80437038802200241c8036a41186a2201200241e8036a41186a290300370300200241c8036a41106a2203200241e8036a41106a290300370300200241c8036a41086a2204200241e8036a41086a290300370300200220022903e8033703c803200241a8036a41186a200241c8046a41186a290300370300200241a8036a41106a200241c8046a41106a290300370300200241a8036a41086a200241c8046a41086a290300370300200220022903c8043703a803200241e8026a41386a20024188046a41386a290300370300200241e8026a41306a20024188046a41306a290300370300200241e8026a41286a20024188046a41286a290300370300200241e8026a41206a20024188046a41206a290300370300200241e8026a41186a20024188046a41186a290300370300200241e8026a41106a20024188046a41106a290300370300200241e8026a41086a20024188046a41086a29030037030020022002290388043703e802200241e8016a41186a2001290300370300200241e8016a41106a2003290300370300200241e8016a41086a2004290300370300200220022903c8033703e801420121090b200241c8016a41186a2201200241a8036a41186a290300370300200241c8016a41106a2203200241a8036a41106a290300370300200241c8016a41086a2204200241a8036a41086a29030037030020024188016a41086a2205200241e8026a41086a29030037030020024188016a41106a2207200241e8026a41106a29030037030020024188016a41186a220a200241e8026a41186a29030037030020024188016a41206a220d200241e8026a41206a29030037030020024188016a41286a2215200241e8026a41286a29030037030020024188016a41306a2216200241e8026a41306a29030037030020024188016a41386a2217200241e8026a41386a290300370300200220022903a8033703c801200220022903e80237038801200241e8006a41186a2218200241c8026a41186a290300370300200241e8006a41106a2219200241c8026a41106a290300370300200241e8006a41086a221a200241c8026a41086a290300370300200241286a41386a221b20024188026a41386a290300370300200241286a41306a221c20024188026a41306a290300370300200241286a41286a221d20024188026a41286a290300370300200241286a41206a221e20024188026a41206a290300370300200241286a41186a221f20024188026a41186a290300370300200241286a41106a222020024188026a41106a290300370300200241286a41086a222120024188026a41086a290300370300200220022903c8023703682002200229038802370328200241086a41186a2222200241e8016a41186a290300370300200241086a41106a2223200241e8016a41106a290300370300200241086a41086a2224200241e8016a41086a290300370300200220022903e801370308200041186a200c360200200020083703102000200937030820002006370300200020022903c80137021c200041246a20042903003702002000412c6a2003290300370200200041346a2001290300370200200020022903880137023c200041c4006a2005290300370200200041cc006a2007290300370200200041d4006a200a290300370200200041dc006a200d290300370200200041e4006a2015290300370200200041ec006a2016290300370200200041f4006a20172903003702002000200b36027c20004198016a201829030037020020004190016a201929030037020020004188016a201a29030037020020004180016a2002290368370200200041d8016a201b290300370200200041d0016a201c290300370200200041c8016a201d290300370200200041c0016a201e290300370200200041b8016a201f290300370200200041b0016a2020290300370200200041a8016a2021290300370200200041a0016a2002290328370200200041f8016a2022290300370300200041f0016a2023290300370300200041e8016a2024290300370300200041e0016a20022903083703000c070b200441ff0171450d05200241003a00a80a0c050b200441ff0171450d04200241003a00a80a0c040b200441ff0171450d03200241003a00c80a0c030b200441ff0171450d02200241003a00a80a0c020b200441ff0171450d01200241003a00c80a0c010b200042023703080c010b200042023703080b200241d00d6a24000bdc1704087f037e037f027e230041a0086b220224000240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e06010203040506070b200041073a00000c0a0b20024190046a200110e40102402002280290042207450d0020022802940421080240200128020022032802042204450d0020024198046a2802002109200328020022052d0000210620032004417f6a3602042003200541016a3602004100210302400240024020060e020100030b41002104200241003a00b0040340200128020022032802042205450d0220024190046a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b0042003210420034120470d000b200241e0016a41086a20024190046a41086a290300220a37030020024190016a41186a20024190046a41186a290300220b37030020024190016a41106a20024190046a41106a290300220c370300200241c0016a41186a200b370300200241c0016a41106a200c370300200241c0016a41086a200a37030020022002290390043703c001410121030b200241f0006a41186a2204200241c0016a41186a290300370300200241f0006a41106a2205200241c0016a41106a290300370300200241f0006a41086a2206200241c0016a41086a290300370300200220022903c00137037020012802002201280204220d4104490d092001280200220e280000210f2001200d417c6a3602042001200e41046a360200200241d0006a41086a2006290300220a370300200241d0006a41106a2005290300220b370300200241d0006a41186a2004290300220c370300200220022903702210370350200020033a0001200041013a0000200041026a20103700002000410a6a200a370000200041126a200b3700002000411a6a200c370000200041306a200f3602002000412c6a2009360100200041286a2008360100200041246a2007360100200041226a20022f014e3b01000c0c0b200441ff0171450d00200241003a00b0040b200041073a00000c080b200041073a00000c090b2001200128020441016a220336020402400240200320012802084b0d0020024190046a20011095012002280290042103200241e0016a20024190046a41047241ac0210e9081a2003411c460d0020024190046a200241e0016a41ac0210e9081a41b002102c22040d010c0b0b200041073a00000c090b20042003360200200441046a20024190046a41ac0210e9081a20012001280204417f6a360204200241086a200110ad012002280208450d07200041073a00002004108b022004102e0c080b200241186a200110ad0102400240024020022802180d00200228021c21052001200128020441016a2203360204200320012802084b0d0120024190046a20011095012002280290042103200241e0016a20024190046a41047241ac0210e9081a2003411c460d0120024190046a200241e0016a41ac0210e9081a41b002102c2204450d0b20042003360200200441046a20024190046a41ac0210e9081a20012001280204417f6a360204200241106a200110ad0120022802100d0220022802142101200041033a0000200020022f00c0013b00012000410c6a2001360200200041086a2004360200200041046a2005360200200041106a200229039001370300200041036a200241c2016a2d00003a0000200041186a20024190016a41086a290300370300200041206a20024190016a41106a290300370300200041286a20024190016a41186a290300370300200041306a20024190016a41206a2903003703000c0a0b200041073a00000c090b200041073a00000c080b200041073a00002004108b022004102e0c070b41002104200241003a00b004024002400240024002400340200128020022032802042205450d0120024190046a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b0042003210420034120470d000b200241e0016a41186a20024190046a41186a290300220a37030020024190016a41086a20024190046a41086a29030037030020024190016a41106a20024190046a41106a29030037030020024190016a41186a200a370300200220022903900437039001200241206a200110ad0120022802200d01200128020022012802042203450d0420022802242106200128020022042d0000210520012003417f6a3602042001200441016a3602004100210120050e020302040b0240200441ff0171450d00200241003a00b0040b200041073a00000c0a0b200041073a00000c090b410121010b200241c0016a41186a20024190016a41186a290300220a370300200241c0016a41106a20024190016a41106a290300220b370300200241c0016a41086a20024190016a41086a290300220c370300200220022903900122103703c001200041043a000020002010370001200041096a200c370000200041116a200b370000200041196a200a370000200041246a2006360200200041216a20013a0000200041286a2002290370370300200041306a200241f0006a41086a2903003703000c070b200041073a00000c060b41002104200241003a00b00402400240024002400340200128020022032802042205450d0120024190046a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b0042003210420034120470d000b200241e0016a41186a20024190046a41186a290300220a37030020024190016a41086a20024190046a41086a29030037030020024190016a41106a20024190046a41106a29030037030020024190016a41186a200a370300200220022903900437039001200241c0006a200110ad0120022802400d0120022802442103200241306a200110da042002290330a70d022002290338210a200241286a200110ad0120022802280d03200228022c2101200241c0016a41186a20024190016a41186a290300220b370300200241c0016a41106a20024190016a41106a290300220c370300200241c0016a41086a20024190016a41086a2903002210370300200220022903900122113703c001200041053a000020002011370001200041096a2010370000200041116a200c370000200041196a200b370000200041216a20022f00703b0000200041236a200241f2006a2d00003a0000200041306a200a370300200041286a2001360200200041246a20033602000c090b0240200441ff0171450d00200241003a00b0040b200041073a00000c080b200041073a00000c070b200041073a00000c060b200041073a00000c050b41002104200241003a00b00402400340200128020022032802042205450d0120024190046a20046a200328020022062d00003a000020032005417f6a3602042003200641016a3602002002200441016a22033a00b0042003210420034120470d000b200241e0016a41186a20024190046a41186a290300220a37030020024190016a41086a220120024190046a41086a29030037030020024190016a41106a220320024190046a41106a29030037030020024190016a41186a2204200a370300200220022903900437039001200041063a00002000200229039001370001200041096a2001290300370000200041116a2003290300370000200041196a2004290300370000200041216a20022900c001370000200041296a200241c0016a41086a290000370000200041306a200241cf016a2900003700000c050b0240200441ff0171450d00200241003a00b0040b200041073a00000c040b200041073a00000c030b200041073a00000b200841ffffff3f71450d012007102e0c010b200228020c2101200041023a0000200020022f00c0013b0001200041086a2001360200200041046a20043602002000410c6a200229029001370200200041036a200241c0016a41026a2d00003a0000200041146a20024190016a41086a2902003702002000411c6a200241a0016a290200370200200041246a200241a8016a2902003702002000412c6a200241b0016a290200370200200041346a200241b8016a2802003602000b200241a0086a24000f0b1036000beb0401057f23004180056b2202240002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e03010203040b200041043b01000c090b2002200110ad0102402002280200450d00200241003602200c080b200241206a200120022802041094012002280220450d07200241da026a200241206a41086a280200360100200220022903203701d202200041013b0100200020022901d002370102200041086a200241d6026a2901003701000c080b024002402001280200220328020422044102490d00200328020022052f0000210620032004417e6a3602042003200541026a3602002001200128020441016a2203360204200320012802084b0d01200241d0026a200110950120022802d0022103200241206a200241d0026a41047241ac0210e9081a2003411c460d01200241d0026a200241206a41ac0210e9081a41b002102c2204450d0620042003360200200441046a200241d0026a41ac0210e9081a200041046a2004360200200020063b0102200041023b010020012001280204417f6a3602040c090b200041043b01000c080b200041043b01000c070b200241086a200110ad012002280208450d01200241003602200c020b200041043b01000c050b200241206a2001200228020c10940120022802200d020b200041043b01000c030b1036000b200241da026a200241206a41086a280200360100200220022903203701d202200041033b0100200020022901d002370102200041086a200241d6026a2901003701000c010b200041043b01000b20024180056a24000ba40e01127f230041b0026b2203240020012802002104200128020422052f01062106200341f0006a41386a2207200541086a2208200128020822094106746a220141386a290000370300200341f0006a41306a220a200141306a290000370300200341f0006a41286a220b200141286a290000370300200341f0006a41206a220c200141206a290000370300200341f0006a41186a220d200141186a290000370300200341f0006a41106a220e200141106a290000370300200341f0006a41086a220f200141086a2900003703002003200129000037037020012008200941016a22104106746a20062009417f736a220841067410ea081a200341b0016a41186a2211200541c8056a221220094105746a220141186a290000370300200341b0016a41106a2213200141106a290000370300200341b0016a41086a2214200141086a290000370300200320012900003703b0012001201220104105746a200841057410ea081a20052006417f6a22013b0106200341d0016a41386a2007290300370300200341d0016a41306a200a290300370300200341d0016a41286a200b290300370300200341d0016a41206a200c290300370300200341d0016a41186a200d290300370300200341d0016a41106a200e290300370300200341d0016a41086a200f29030037030020034198026a2014290300370300200341a0026a2013290300370300200341a8026a2011290300370300200320032903703703d001200320032903b00137039002200341106a200341d0016a41e00010e9081a200341d0016a200341106a41e00010e9081a0240200141ffff037141044b0d0002400240024020052802002206450d00200441016a21080240024020052f010422070d0020062f01060d01200341246a4101360200200342013702142003419cc3cb0036021020034104360274200341849dc7003602702003200341f0006a360220200341106a418c9dc7001044000b024020062007417f6a22074102746a41a8086a280200220a2f0106200141ffff03716a41016a410b4b0d00200341286a2005360200200341206a200a360200200320043602242003200436021c200320073602182003200636021420032008360210200341b0016a200341106a4101200910cf060c040b200341286a2005360200200341206a200a360200200320043602242003200436021c200320073602182003200636021420032008360210200341106a410110d006200320103602b8010c020b0240200141ffff0371200741027420066a41ac086a28020022012f01066a41016a410b4b0d00200341286a2001360200200341206a2005360200200320043602242003200436021c200320073602182003200636021420032008360210200341b0016a200341106a4100200910cf060c030b200341286a2001360200200341206a2005360200200320043602242003200436021c200320073602182003200636021420032008360210200341106a410110d1060b200320093602b8010b200320053602b401200320043602b0010b20032802b801210920032802b001210420032802b40122052802002201450d0020012f0106220741044b0d00200141066a2108200441016a21060240034020012802002210450d01200741ffff0371210b200641016a210a024002400240024020012f010422070d0020102f01060d01200341246a4101360200200342013702142003419cc3cb0036021020034104360274200341849dc7003602702003200341f0006a360220200341106a418c9dc7001044000b20102007417f6a220c4102746a41a8086a28020021072003200136028801200320063602840120032007360280012003200636027c2003200c360278200320103602742003200a360270024020072f010620082f01006a41016a410b4b0d00200341106a41186a200341f0006a41186a280200360200200341106a41106a200341f0006a41106a290300370300200341106a41086a200341f0006a41086a29030037030020032003290370370310200341086a200341106a10d206200328020c2101200328020821060c030b200341f0006a4105200b6b10d0060c010b2003200741027420106a41ac086a280200220c36028801200320063602840120032001360280012003200636027c20032007360278200320103602742003200a360270024020082f0100200c2f01066a41016a410b4b0d00200341106a41186a200341f0006a41186a280200360200200341106a41106a200341f0006a41106a290300370300200341106a41086a200341f0006a41086a290300370300200320032903703703102003200341106a10d20620032802042101200328020021060c020b200341f0006a4105200b6b10d1060b410021010b2001450d02200141066a210820012f0106220741044d0d000c020b0b200741ffff03710d00200241013a00000b2000200341d0016a41e00010e908220141e8006a2009360200200141e4006a200536020020012004360260200341b0026a24000bc50701167f230041e0006b22042400024002400240200141186a28020022052f01062206200141106a28020022072f0106220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f0106210f2007200a3b0106200441386a2210200e41086a2211200c4106746a221241386a290000370300200441306a2213201241306a290000370300200441286a2214201241286a290000370300200441206a2215201241206a290000370300200441186a2216201241186a290000370300200441106a2217201241106a290000370300200441086a2218201241086a2900003703002004201229000037030020122011200c41016a22014106746a200f200c417f736a221141067410ea081a200741086a221920084106746a221241386a2010290300370000201241306a2013290300370000201241286a2014290300370000201241206a2015290300370000201241186a2016290300370000201241106a2017290300370000201241086a201829030037000020122004290300370000201920094106746a200541086a200641067410e9081a200441c0006a41186a2210200e41c8056a2213200c4105746a221241186a290000370300200441c0006a41106a2214201241106a290000370300200441c0006a41086a2215201241086a290000370300200420122900003703402012201320014105746a201141057410ea081a200741c8056a221120084105746a221241186a2010290300370000201241106a2014290300370000201241086a201529030037000020122004290340370000201120094105746a200541c8056a200641057410e9081a200e41a8086a221220014102746a200c410274220c20126a41086a200f2001417f736a41027441046a10ea081a02402001200f4f0d00200c200e6a41ac086a211203402012280200220c20013b0104200c200e360200201241046a2112200f200141016a2201470d000b0b200e200e2f0106417f6a3b01060240200d4102490d002006200a20096b470d03200720094102746a41a8086a200541a8086a200641016a41027410e9081a200a20084d0d00200641016a210c200720084102746a41ac086a21012009211203402001280200220e20123b0104200e2007360200200141046a2101201241016a2112200c417f6a220c0d000b0b2005102e200020073602042000200b36020020002009410020021b20036a360208200441e0006a24000f0b41f09fc7004191014184a1c7001039000b419c9dc700412a41c89dc7001039000b41f49bc7004128419c9cc7001039000be307040c7f017e017f0c7e0240024002400240200041186a2802002f0106220220016a2203410c4f0d00200041106a28020022042f010622052001490d012004200520016b22063b0106200041186a220428020020033b0106200428020041086a220720014106746a2007200241067410ea081a200428020041c8056a220720014105746a2007200241057410ea081a2005200641016a22076b22022001417f6a470d02200428020041086a200041106a220828020020074106746a41086a2002410674220910e9081a200428020041c8056a200828020020074105746a41c8056a2002410574220a10e9081a200041046a280200220b2000280208220c4106746a220241c0006a220d290000210e2008280200220f20064105746a220541e0056a2900002110200541c8056a2900002111200541d0056a2900002112200541d8056a2900002113200f20064106746a220641086a2900002114200641106a2900002115200641186a2900002116200641206a2900002117200641286a2900002118200641306a2900002119200641386a290000211a200d200641c0006a290000370000200241386a2206290000211b2006201a370000200241306a2206290000211a20062019370000200241286a2206290000211920062018370000200241206a2206290000211820062017370000200241186a2206290000211720062016370000200241106a2206290000211620062015370000200241086a2202290000211520022014370000200b200c4105746a220241d8056a2206290000211420062013370000200241d0056a2206290000211320062012370000200241c8056a2206290000211220062011370000200241e0056a2202290000211120022010370000200428020020096a220241c0006a200e370000200241386a201b370000200241306a201a370000200241286a2019370000200241206a2018370000200241186a2017370000200241106a2016370000200241086a20153700002004280200200a6a220241e0056a2011370000200241d8056a2014370000200241d0056a2013370000200241c8056a2012370000200028020c21020240024020002802140d002002450d010c050b2002450d04200828020021022004280200220641a8086a2200200141027422046a2000200320016b41027441046a10ea081a2000200220074102746a41a8086a200410e9081a200341016a21044100210103402000280200220220013b010420022006360200200041046a21002004200141016a2201470d000b0b0f0b41e49ec700413341989fc7001039000b41a89fc700412741d09fc7001039000b41f49bc7004128419c9cc7001039000b41e2a0cc00412841e09fc7001039000bb60806097f017e037f047e017f087e0240024002400240200041106a28020022022f0106220320016a2204410c4f0d00200041186a2802002f010622052001490d01200220043b0106200041186a2206280200200520016b22073b0106200041046a2802002208200028020822094106746a220241206a220a290000210b2006280200220c2001417f6a220d410574220e6a220541e0056a290000210f200541c8056a2900002110200541d0056a2900002111200541d8056a2900002112200c200d41067422136a220541286a2900002114200541306a2900002115200541386a2900002116200541c0006a2900002117200541086a2900002118200541106a2900002119200541186a290000211a200a200541206a290000370000200241186a2205290000211b2005201a370000200241106a2205290000211a20052019370000200241086a2205290000211920052018370000200241c0006a2205290000211820052017370000200241386a2205290000211720052016370000200241306a2205290000211620052015370000200241286a2202290000211520022014370000200820094105746a220241d8056a2205290000211420052012370000200241d0056a2205290000211220052011370000200241c8056a2205290000211120052010370000200241e0056a220229000021102002200f370000200041106a220528020020034106746a220241c0006a2018370000200241386a2017370000200241306a2016370000200241286a2015370000200241206a200b370000200241186a201b370000200241106a201a370000200241086a2019370000200528020020034105746a220241e0056a2010370000200241d8056a2014370000200241d0056a2012370000200241c8056a2011370000200d2004200341016a22026b470d02200528020020024106746a41086a200628020041086a201310e9081a200528020020024105746a41c8056a200628020041c8056a200e10e9081a200628020041086a220d200d20014106746a200741067410ea081a200628020041c8056a220d200d20014105746a200741057410ea081a200028020c210d0240024020002802140d00200d450d010c050b200d450d042005280200220d20024102746a41a8086a2006280200220641a8086a22002001410274220510e9081a2000200020056a200741027441046a10ea081a0240200420034d0d002003410274200d6a41ac086a210003402000280200220520023b01042005200d360200200041046a2100200241016a21022001417f6a22010d000b0b2007417f460d00200641a8086a2102200741016a21054100210003402002280200220120003b010420012006360200200241046a21022005200041016a2200470d000b0b0f0b41d89dc7004132418c9ec7001039000b419c9ec700412841c49ec7001039000b41f49bc7004128419c9cc7001039000b41e2a0cc00412841d49ec7001039000b8c0701157f230041e0006b2202240002400240200141106a28020022032f0106220441016a2205200141186a28020022062f010622076a2208410c4f0d00200128020821092001280200210a2001280204220b2f0106210c200320083b0106200241386a220d200b41086a220e20094106746a220f41386a290000370300200241306a2210200f41306a290000370300200241286a2211200f41286a290000370300200241206a2212200f41206a290000370300200241186a2213200f41186a290000370300200241106a2214200f41106a290000370300200241086a2215200f41086a2900003703002002200f290000370300200f200e200941016a22014106746a200c2009417f736a220e41067410ea081a200341086a221620044106746a220f41386a200d290300370000200f41306a2010290300370000200f41286a2011290300370000200f41206a2012290300370000200f41186a2013290300370000200f41106a2014290300370000200f41086a2015290300370000200f2002290300370000201620054106746a200641086a200741067410e9081a200241c0006a41186a220d200b41c8056a221020094105746a220f41186a290000370300200241c0006a41106a2211200f41106a290000370300200241c0006a41086a2212200f41086a2900003703002002200f290000370340200f201020014105746a200e41057410ea081a200341c8056a220e20044105746a220f41186a200d290300370000200f41106a2011290300370000200f41086a2012290300370000200f2002290340370000200e20054105746a200641c8056a200741057410e9081a200b41a8086a220f20014102746a20094102742209200f6a41086a200c2001417f736a41027441046a10ea081a02402001200c4f0d002009200b6a41ac086a210f0340200f280200220920013b01042009200b360200200f41046a210f200c200141016a2201470d000b0b200b200b2f0106417f6a3b01060240200a4102490d002007200820056b470d02200320054102746a41a8086a200641a8086a200741016a41027410e9081a200820044d0d00200741016a210f200441027420036a41ac086a210103402001280200220920053b010420092003360200200141046a2101200541016a2105200f417f6a220f0d000b0b2006102e2000200b3602042000200a360200200241e0006a24000f0b419c9dc700412a41c89dc7001039000b41f49bc7004128419c9cc7001039000b130020004108360204200041a8a1c7003602000bb90706057f017e017f017e037f037e23004180016b22022400200241106a200110d8062002280210210120022002280218220336022420022001360220200241286a2001200310ed02024002400240024020022802282204450d00200228022c21052002200241306a28020036023c20022004360238200241086a200241386a10ab010240024020022802080d0002400240200228020c2206200228023c4105762201200120064b1b22014105742203417f4c0d000240024020010d00410821030c010b2003102c2203450d080b2001ad2107024002402006450d00200241d8006a41036a21080340200241e8006a200241386a10a50120022d00684101460d04200228023c22014110490d04200229006921092002200141706a220a36023c20022002280238220b41106a220c360238200a450d04200b41086a290000210d200b290000210e20022001416f6a36023c2002200c41016a3602384100210b024002400240200c2d00000e03020001070b4101210b0c010b4102210b0b20022002280058360240200220082800003600432002200228004336005320022002280240360250200220022802503602482002200228005336004b02402007422088220fa722012007a7470d00200141016a220c2001490d042001410174220a200c200c200a491b220c4104200c41044b1b220c41ffffff3f71200c46410374210a200c410574210c0240024020010d00200241003602680c010b20024108360270200220033602682002200f4205863e026c0b200241d8006a200c200a200241e8006a107d2002280260210c20022802584101460d03200228025c2103200742808080807083200c410576ad8421070b200320014105746a2201200b3a00182001200d3703082001200e37030020012009370310200120022802483600192001411c6a200228004b36000020074280808080107c21072006417f6a22060d000b0b2003450d030c040b200c0d070b1038000b0240200742ffffff3f83500d002003102e0b0b4100210320024100360260200242013703582002410a3602442002200241206a3602402002200241d8006a360250200241fc006a41013602002002420137026c200241909dc5003602682002200241c0006a360278200241d0006a419cebc000200241e8006a103d1a2002280258200228026010ef02200228025c450d002002280258102e0b02402005450d002004102e0b20030d010b20004100360208200042083702000c010b20002007370204200020033602000b02402002280214450d002002280210102e0b20024180016a24000f0b1036000bf91106027f0a7e017f017e037f047e230041a0026b22032400200341c0006a200010c802200341a0016a20032802402204200328024810c902200341a0016a41386a2903002105200341a0016a41306a2903002106200341a0016a41286a2903002107200341a0016a41206a2903002108200341a0016a41186a2903002109200341a0016a41106a290300210a200341e0016a290300210b20032903a801210c20032903a001210d200341f0006a41086a200341f0016a2903003703002003200341e8016a29030037037002400240200d4201510d0042002108200341386a4200370300200341306a4200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a4200370300200341086a4200370300200342003703004200210c4200210a4200210942002107420021064200210d420021050c010b200341206a2007370300200341286a2006370300200341106a2009370300200341306a2005370300200320083703182003200c3703002003200b3703382003200a370308200c210d200a21050b02402003280244450d002004102e0b02400240200d2005844200520d0020072003290310842006200341186a29030084844200520d002003290330200341386a2903008450450d004200210e4100210f0c010b4201210e4101210f0b420021100240200e4201510d004200210c4200210a42002109420021080b0240024020020d00420021054200210b420021070c010b2002410574211142002110420021054200210b42002107200121040340024002400240200441186a2d00002212417f6a41ff017141014b0d002007200441086a2903002206200b2004290300220d56200720065620072006511b22131b2107200b200d20131b210b201241ff01714102460d010c020b201241ff01710d01200441086a29030021062004290300210d0b200520062010200d56200520065620052006511b22121b21052010200d20121b21100b200441206a2104201141606a22110d000b0b200341d8016a2005370300200341c8016a221120073703002003200c3703a001200320103703d0012003200b3703c001200320083703b8012003200a3703a801200320093703b001420021074201210d200e420152ad210b02400240427f200c20097c22062006200c542204200a20087c2004ad7c2206200a542006200a511b22041b221042ffc7afa02556427f200620041b22064200522006501b0d002009200c842008200a848422075021044200210d2007420052ad21070c010b200341d0016a290300211420112903002115200341c0016a2903002116200341b0016a290300210e20032903b801211720032903a801210820032903a0012109410121040b200341e8006a2006370300200341e0006a22112010370300200341d0006a200a3703002003200c370348200320073703582003200b3703400240024002400240200f200d420152720d00200320003602a0012000200341a0016a10bd060c010b0240200f4101732212200d420151720d00200320003602a0012000200341a0016a10be0641ff017122124103460d01024020120e03030200030b20040d03200320113602a001200341a0016a10cc020c030b200d4201522012710d010b20034180016a200010c802200341a0016a2003280280012211200328028801221210c90220032903a0012106200341f0006a41086a2204200341f0016a2903003703002003200341e8016a2903003703700240024020064201510d0020034190016a41086a420037030020034200370390010c010b20034190016a41086a200429030037030020032003290370370390010b200341e8016a200329039001370300200341f0016a20034190016a41086a290300370300200342013703a001200341d8016a20144200200d42015122041b370300200341d0016a2015420020041b370300200341a0016a41286a2016420020041b370300200341c0016a2017420020041b370300200341b8016a200e420020041b370300200341a0016a41106a2008420020041b370300200341e0016a2005420020041b37030020032009420020041b3703a80120112012200341a0016a41086a10c8050240200328028401450d002011102e0b200341c0006a41106a290300210a200341c0006a41286a29030021062003290348210c200329036021102003290340210b200329035821070b0240200b4201520d00200341d8016a200a370300200341d0016a200c370300200341a0016a41086a41003a0000200341a9016a2000290000370000200341b1016a200041086a290000370000200341b9016a200041106a290000370000200341c1016a200041186a290000370000200341033a00a001200341a0016a10fe010b02400240200750450d00420021070c010b200341a0016a41186a200041186a290000370300200341a0016a41106a200041106a290000370300200341a0016a41086a200041086a290000370300200320002900003703a001420121070b200341186a200341a0016a41186a2204290300220d370300200341106a200341a0016a41106a22112903002205370300200341086a200341a0016a41086a290300220b370300200320032903a001220a370300200341d0016a2006370300200341c8016a221220103703002011200b37030020042005370300200341c0016a200d370300200320073703a0012003200a3703a801200341a0016a10d20420032903a001500d0020032012360240200341c0006a10cc020b200341a0016a200010d80620032802a001221120032802a801108f022104024020032802a401450d002011102e0b024002400240024020020d00200341a0016a200010d80620032802a001221120032802a80110ff01024020032802a401450d002011102e0b2004450d012000108a060c010b2003200010d80620024105744104722211417f4c0d0120032802082113200328020021122011102c220f450d02200341003602a801200320113602a4012003200f3602a0012002200341a0016a107620012002200341a0016a109e012012201320032802a001221120032802a80110b201024020032802a401450d002011102e0b02402003280204450d002012102e0b20040d0020001083061a0b200341a0026a24000f0b1038000b1036000bc70101047f230041c0006b220224004109210341ceeac7002104410221050240024002400240200141ff01710e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602242002418883ca003602202002200241206a360218200241086a41b4eac7001044000b410a210341c4eac7002104410021050c010b411721034194a4c7002104410121050b20004183323b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000bcf0202027f047e230041f0006b220724000240024020022003844200520d00200041063a00000c010b200741e0006a200110c802200741086a20072802602208200728026810c90220072903084201512101200741386a2903002102200741306a2903002103200741c8006a2903002109200741c0006a290300210a02402007280264450d002008102e0b2002420020011b210b2003420020011b210c2009420020011b2102200a420020011b210302400240024041004102410120044101711b200441ff01714101461b0e03020100020b200b2002200c200356200b200256200b2002511b22011b2102200c200320011b21030c010b200c2103200b21020b02402003200558200220065820022006511b0d00200041830a3b0100200041086a4115360200200041046a41a0a3c700360200200041026a41013a00000c010b200041063a00000b200741f0006a24000bac0201037f230041e0006b22022400200241f8fcc6004108108102200241106a41f0faca004105108102024002404120102c2203450d002002422037023420022003360230200241306a200141201074200241c0006a200228023022012002280238220310d803200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a107c02402002280234450d002001102e0b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b20004100360208200020013602042000200436020020002002411010742000200241106a411010742000200228022022012003107402402002280224450d002001102e0b200241e0006a24000f0b1036000b1038000b8e3504087f017e047f0d7e230041a0036b2201240020014190016a2202420037030020014188016a22034200370300200141f8006a41086a2204420037030020014200370378200141b0026a41a0dac800410f1081022004200141b0026a41086a2205290000370300200120012900b002370378200141b0026a41afdac800410d10810220022005290000370300200320012900b00237030020014120360294032001200141f8006a36029003200141e8006a200141f8006a412010ed0202400240200128026822020d00410221040c010b200128026c21062001200141e8006a41086a28020022043602e402200120023602e0020240024020044104490d00200228000021052001200241046a3602e00220012004417c6a22073602e40220074104490d00200228000421072001200441786a3602e4022001200241086a3602e002200141e0006a200141e0026a10ab0102402001280260450d00200141003602f0020c010b200141f0026a200141e0026a200128026410990120012802f0022208450d0020012902f402210941002104200141003a00d0020240024020012802e402220a450d0020012802e002220b2d0000210c2001200a417f6a220d3602e4022001200b41016a3602e0020240200c4101460d000c040b200d41044f0d010b0c020b200b280001210c2001200a417b6a3602e4022001200b41056a3602e002410121040c010b200141003602b802200142013703b0022001410a3602d402200120014190036a3602d0022001200141b0026a36029c0320014184036a4101360200200142013702f402200141909dc5003602f0022001200141d0026a360280032001419c036a419cebc000200141f0026a103d1a20012802b00220012802b80210ef02024020012802b402450d0020012802b002102e0b410221040b2006450d002002102e0b0240024002400240024002400240024020044102460d0020014188036a200c360200200141fc026a20093702002001200436028403200120083602f802200120073602f402200120053602f002200141f8026a2108024020052000470d00024020044101460d00200141b0026a200810e00120014188016a200736020020014184016a200141b8026a28020036020020014100360278200120012903b00237027c200141f8006a108c060c010b200141b0026a200810e0012001418c016a2007360200200141f8006a41086a20012903b00237030020014188016a200141b0026a41086a2802003602002001200c36027c20014101360278200141f8006a108c060b024020012802f40220012802f0026a2000470d0020014180036a28020041286c4105722202417f4c0d022002102c2204450d0620014100360280012001200236027c20012004360278200141013a00d002200141f8006a200141d0026a4101107420012802f80221022001280280032204200141f8006a10760240200441286c2204450d00200220046a21040340200141f8006a2002412010742001200241206a2903003703b002200141f8006a200141b0026a41081074200241286a22022004470d000b0b41bcdac80041142001280278220220012802800110b2010240200128027c450d002002102e0b200141f8006a41086a2202200829020037030020014188016a2204200841086a2802003602002001410036027c200141073a0078200141f8006a10fe0120014190016a4200370300200442003703002002420037030020014200370378200141b0026a41a0dac800410f1081022002200141b0026a41086a2204290000370300200120012900b002370378200141b0026a41afdac800410d108102200341086a2004290000370000200320012900b002370000200141f8006a412010ff010c010b20012802fc022202450d00200241286c450d0020012802f802102e0b20014190016a420037030020014188016a4200370300200141f8006a41086a2202420037030020014200370378200141b0026a41a0dac800410f1081022002200141b0026a41086a2204290000370300200120012900b002370378200141b0026a41d0dac8004105108102200341086a2004290000370000200320012900b002370000200141203602e4022001200141f8006a3602e002200141e8006a200141f8006a412010ed02024020012802682202450d00200141e8006a41086a2802002105200128026c210741002104200141003a00d0020240024002402005450d0002400240024020022d00000e0405000102030b2005417f6a4108490d0220022900012109410121040c040b410221040c020b2005417f6a4108490d0020022900012109410321040c020b200141003602b802200142013703b0022001410a3602d4022001200141e0026a3602d0022001200141b0026a3602900320014184036a4101360200200142013702f402200141909dc5003602f0022001200141d0026a3602800320014190036a419cebc000200141f0026a103d1a20012802b00220012802b80210ef02024020012802b402450d0020012802b002102e0b410421040b0b02402007450d002002102e0b024002402004417f6a0e03010200020b2009422088a7210202402009a722042000470d00200141043602782001200236027c200141f8006a108c060b200220046a2000470d0120014190016a420037030020014188016a4200370300200141f8006a41086a2202420037030020014200370378200141b0026a41a0dac800410f1081022002200141b0026a41086a2204290000370300200120012900b002370378200141b0026a41d0dac8004105108102200341086a2004290000370000200320012900b002370000200141f0026a41002001200110da06200141f8006a412020012802f002220220012802f80210b201024020012802f402450d002002102e0b2001410236027c200141073a0078200141f8006a10fe010c010b2009422088a7210202402009a722042000470d00200141033602782001200236027c200141f8006a108c060b200220046a2000470d0020014190016a420037030020014188016a4200370300200141f8006a41086a2202420037030020014200370378200141b0026a41a0dac800410f1081022002200141b0026a41086a2204290000370300200120012900b002370378200141b0026a41d0dac8004105108102200341086a2004290000370000200320012900b002370000200141f0026a41022001200110da06200141f8006a412020012802f002220220012802f80210b201024020012802f402450d002002102e0b2001410136027c200141073a0078200141f8006a10fe010b200141f0026a109403024020012903f002427f7c4202540d00200141f0026a41106a2903002109200141b0026a41186a22044200370300200141b0026a41106a22034200370300200141b0026a41086a22024200370300200142003703b002200141e8006a41e8fcc60041091081022002200141e8006a41086a2200290000370300200120012900683703b002200141e8006a41b08ec90041031081022004200029000037030020032001290068370300200141d0006a200141b0026a108503200141c0006a2001290358420020012802501b220e42e80780420042e807420010e808200141f8006a41186a22044200370300200141f8006a41106a22034200370300200141f8006a41086a2200420037030020014200370378200141b0026a4192fdc600410710810220002002290000370300200120012900b002370378200141b0026a41d0adc600410910810220042002290000370300200320012900b002370300200141003602b802200142013703b002200120093e0268200141b0026a200141e8006a41041074200141013a00d002200141b0026a200141d0026a41011074200120012903402209200e42e807827c220e427f200141c0006a41086a290300200e200954ad7c501b370368200141b0026a200141e8006a41081074200141f8006a412020012802b002220220012802b80210b20120012802b402450d002002102e0b20014190016a22034200370300200141f8006a41106a22024200370300200141f8006a41086a2204420037030020014200370378200141f0026a4190dac800410a1081022004200141f0026a41086a2200290000370300200120012900f002370378200141f0026a419adac800410610810220032000290000370300200220012900f002370300200141f8006a412010ff0120034200370300200242003703002004420037030020014200370378200141f0026a4190dac800410a10810220042000290000370300200120012900f002370378200141f0026a41d097c900410c10810220032000290000370300200220012900f002370300200141f8006a412010ff0120034200370300200242003703002004420037030020014200370378200141f0026a4180fdc600411210810220042000290000370300200120012900f002370378200141f0026a41dc98c500411110810220032000290000370300200220012900f002370300200141286a200141f8006a10e904200141286a41106a290300210f2001290330211020012802282103200141f8006a4201420042808090bbbad6adf00d420042c0843d420010ea040240024020012802784101470d00427f2111427f21090c010b20022903002109200429030021110b200141f8006a10a903200141f8006a41086a200141a8016a200141a0016a290300501b290300210e200141c8026a22044200370300200141b0026a41106a22004200370300200141b0026a41086a22054200370300200142003703b002200141e8006a41d9fcc60041061081022005200141e8006a41086a2207290000370300200120012900683703b002200141e8006a41d4f2cb00410b1081022004200729000037030020002001290068370300200141f0026a200141b0026a10f20420012903f802211220012903f0022113200141f0026a4203420042808090bbbad6adf00d420042a08d06420010ea04200e2012420020134201511b22122012200e561b21120240024020012802f0024101470d00427f2113427f21140c010b200141f0026a41106a2903002114200141f0026a41086a29030021130b200141186a200e42808090bbbad6adf00d8222154200428080e4ceceb58bbc03420010e808200141086a2001290318200141186a41086a29030042808090bbbad6adf00d420010e608200141f0026a2012200e42808090bbbad6adf00d80428080e4ceceb58bbc037e20154202882001290308428080c89d9deb96f80656200141086a41086a29030022154200522015501bad7c7c2215201220155622041b22162015201220041b22177d42002016201754ad7d42808090bbbad6adf00d4200200e4201200e4201561b420010ea040240024020012802f0024101470d00427f210e427f21160c010b20014180036a2903002116200141f0026a41086a290300210e0b200141f0026a200e2016200e201642808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f2117427f21180c010b20014180036a2903002118200141f8026a29030021170b200141f0026a201320142013201442808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f2119427f211a0c010b20014180036a290300211a200141f8026a29030021190b200141f0026a2019201a42808090bbbad6adf00d4200428080a0f6f4acdbe01b420010ea0420012802f0024101460d052011201042808090bbbad6adf00d20031b22195421042009200f420020031b220f5121032009200f54210020014180036a22052903002110200141f8026a2207290300211a200141f0026a20132014200e201642808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f2116427f21140c010b20052903002114200729030021160b2004200020031b2104200141f0026a201a20102017201842808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f2110427f21170c010b20014180036a2903002117200141f8026a29030021100b200f200920041b210e2019201120041b21130240024020122015540d00427f2115200141f0026a427f201620107c221220122016542204201420177c2004ad7c221220145420122014511b22041b427f201220041b2013200e42808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f21120c010b20014180036a2903002112200141f8026a29030021150b427f200e20127c201320157c22142013542204ad7c221220042012200e542012200e511b22041b220e2009427f201420041b2212201156200e200956200e2009511b22041b21092012201120041b210e0c010b200141f0026a4200201620107d22122012201656201420177d2016201054ad7d221220145620122014511b22041b4200201220041b2013200e42808090bbbad6adf00d420010ea040240024020012802f0024101470d00427f2112427f21140c010b20014180036a2903002114200141f8026a29030021120b4200200e20147d2013201254ad7d2214201320127d22122013562014200e562014200e511b22041b220e20094200201220041b2212201156200e200956200e2009511b22041b21092012201120041b210e0b200141f8006a41186a4200370300200141f8006a41106a4200370300200141f8006a41086a2204420037030020014200370378200141f0026a4180fdc60041121081022004200141f0026a41086a2203290000370300200120012900f002370378200141f0026a41dc98c5004111108102200241086a2003290000370000200220012900f002370000200120093703f8022001200e3703f002200141f8006a4120200141f0026a411010b201200141b0026a41186a22044200370300200141b0026a41106a22024200370300200141b0026a41086a22034200370300200142003703b002200141e8006a41e8fcc60041091081022003200141e8006a41086a2200290000370300200120012900683703b002200141e8006a41d48ec90041091081022004200029000037030020022001290068370300200141b0026a108603220441ff01714102460d06200141b0026a412010ff012004410171450d06200141b0026a41186a4200370300200141b0026a41106a4200370300200141b0026a41086a22044200370300200142003703b002200141e8006a41a8f8c60041041081022004200141e8006a41086a2203290000370300200120012900683703b002200141e8006a41978cc500410b108102200241086a200329000037000020022001290068370000200141f8006a200141b0026a10a004024020012d007822044102460d00200141b0026a412010ff010b200141f0026a41186a20014191016a290000370300200141f0026a41106a20014189016a290000370300200141f0026a41086a20014181016a290000370300200120012900793703f0020240200441037122044103460d0020040e03040004040b200141f8006a41186a200141f0026a41186a290300370300200141f8006a41106a200141f0026a41106a290300370300200141f8006a41086a200141f0026a41086a290300370300200120012903f002370378200141b0026a41186a4200370300200141b0026a41106a4200370300200141b0026a41086a22044200370300200142003703b002200141e8006a41a8f8c60041041081022004200141e8006a41086a2203290000370300200120012900683703b002200141e8006a41ee8bc500410c108102200241086a2003290000370000200220012900683700002001200141b0026a4120108e0241002104200141b0026a2001280204410020012802001b220510db06200141e8006a20012802b002220720012802b80210b60502400240200128026822030d00200141003602d802200142013703d00241012103410021000c010b2001200129026c22093702d402200120033602d0022009422088a721002009a721040b024020012802b402450d002007102e0b200041ff014b0d01200141b0026a41186a220c200141f8006a41186a290300370300200141b0026a41106a2208200141f8006a41106a290300370300200141b0026a41086a2206200141f8006a41086a290300370300200120012903783703b0020240024020002004470d00200441016a22072004490d022004410174220a2007200a20074b1b22074104200741044b1b220741ffffff3f71200746210a200741057421070240024020040d00200141003602680c010b200141f0006a4101360200200120033602682001200441057436026c0b200141e0026a2007200a200141e8006a107d200141e8026a280200210420012802e0024101460d01200120012802e40222033602d0022001200441057622043602d4020b200320004105746a220720012903b002370000200741186a200c290300370000200741106a2008290300370000200741086a20062903003700002001200041016a3602d8022005200141d0026a10dc060c030b20040d040b1038000b4120102c2200450d0220002001290378370000200041186a200141f8006a41186a290300370000200041106a200141f8006a41106a290300370000200041086a200141f8006a41086a29030037000020014281808080103702b402200120003602b002200541016a2205200141b0026a10dc062000102e200141b0026a41186a4200370300200141b0026a41106a4200370300200141b0026a41086a22004200370300200142003703b002200141e8006a41a8f8c60041041081022000200141e8006a41086a2207290000370300200120012900683703b002200141e8006a41ee8bc500410c108102200241086a20072900003700002002200129006837000020012005360268200141b0026a4120200141e8006a410410b2010b200441ffffff3f71450d002003102e0b200141c8026a22004200370300200141c0026a22054200370300200141b0026a41086a22044200370300200142003703b002200141e8006a41a8f8c60041041081022004200141e8006a41086a2203290000370300200120012900683703b002200141e8006a41848cc5004113108102200241086a2207200329000037000020022001290068370000200141b0026a412010ff01200042003703002005420037030020044200370300200142003703b002200141e8006a41a8f8c600410410810220042003290000370300200120012900683703b002200141e8006a41a28cc50041081081022007200329000037000020022001290068370000200141b0026a412010ff01200141a0036a24000f0b1036000b10dd06000b41d2d9c800412b4180dac8001039000bd00101017f230041106b2204240020004100360208200042013702000240024002400240024020010e0400010203000b200441003a000c20002004410c6a410110740c030b200441013a000c20002004410c6a410110742004200236020c20002004410c6a410410742004200336020c20002004410c6a410410740c020b200441023a000c20002004410c6a410110740c010b200441033a000c20002004410c6a410110742004200236020c20002004410c6a410410742004200336020c20002004410c6a410410740b200441106a24000b850201037f230041d0006b22022400200241086a41a8f8c6004104108102200241186a4197dbc8004111108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bd60101057f230041206b220224002002200010db0602400240200128020822004105744104722203417f4c0d002001280200210120022802082104200228020021052003102c2206450d012002410036021820022003360214200220063602102000200241106a107602402000450d00200041057421000340200241106a200141201074200141206a2101200041606a22000d000b0b2005200420022802102201200228021810b20102402002280214450d002001102e0b02402002280204450d002005102e0b200241206a24000f0b1038000b1036000b110041c9dbcc00411f41e8dbcc001039000ba7cc010a077f017e027f017e177f037e0b7f027e067f037e230022012102200141a0136b41607122012400200141b8016a10f40402400240024020012d00b8014101470d0020012802bc012000470d00200141a0056a41014196a9c700412410df0602400240024020012802a0052203450d00200141a8056a28020041034d0d0002402003280000220420004b0d00200441056a2000490d010b20012802a405450d012003102e0c030b200120003602c001200120003602b003200141d80f6a41086a200141a0056a41086a280200360200200120012903a0053703d80f41014196a9c7004124200141d80f6a200141b0036a410410e0060d010b0c010b200141d80f6a10e10620012802d80f410b702105200141d80f6a10f5040240024002400240024020012802d80f2206450d00200141d80f6a41106a22072903002108200141e40f6a2209280200210a20012902dc0f210b200141d00e6a41186a22044200370300200141d00e6a41106a220c4200370300200141d00e6a41086a220d4200370300200142003703d00e200141d80f6a41a5fec600411a108102200d200141d80f6a41086a2203290000370300200120012900d80f3703d00e200141d80f6a4194c5c800410e10810220042003290000370300200c20012900d80f370300200141b0016a200141d00e6a4120108e02024020012802b001450d0020012802b401210e200120083702940d2001200a3602900d2001200b3702a405200120063602a005200141d80f6a200141900d6a200141a0056a10b904200141f00e6a41086a20032802002204360200200120012903d80f220b3703f00e200141800f6a41086a200141ec0f6a2802002206360200200120012902e40f22083703800f200141900d6a41086a20043602002001200b3703900d200141a0056a41086a2006360200200120083703a005200141d80f6a200e200141900d6a200141a0056a10e206200141a80a6a41086a200141d80f6a41186a280200360200200120072903003703a80a024020012802d80f4101470d000c060b2003280200210f2009280200210420012802dc0f2110200141900f6a41086a200141a80a6a41086a280200360200200120012903a80a3703900f200141900f6a20054200420010c004201020044102746a2107024002400240200e0d00201021032010210d0c010b201021032010210d2004450d0020044102742105201021032010210d024003402003220641046a210320062802002204450d022004280208220a41016a41004c0d032004200a36020802400240200441f4006a2d00000d0020042004280200417f6a220636020020060d01200441046a22062006280200417f6a220636020020060d012004102e0c010b200d2004360200200d41046a210d200e417f6a220e450d020b2005417c6a22050d000b200721030c010b200641046a21030b0240200720036b2204450d00200441027541027421040340200328020022062006280200417f6a3602000240200328020022062802000d00200641046a22062006280200417f6a3602002003280200220641046a2802000d002006102e0b200341046a21032004417c6a22040d000b0b02400240200d20106b2211410275221241144b0d00201241014d0d074102210320102012417e6a22044102746a2106034020122004490d022006200310e3062006417c6a2106200341016a21032004417f6a2204417f470d000c080b0b2012410176220341ffffffff03712003470d0a20034102742213417f4c0d0a2013102c2214450d092010417c6a2115201041746a21164104211741002118410021192012211a0340201a210a4100211a410121040240200a417f6a220d450d000240024002400240024002400240024002400240024002402010200d4102746a2802002203280208220441016a41004c0d00200320043602082010200a417e6a22054102746a2802002204280208220641016a41004c0d01200328025021032004200636020820032004280250490d042016200a4102746a21034100211a410021060340024020052006470d00200a21040c0e0b200341046a2802002204280208220d41016a41004c0d032004200d3602082003280200220d280208220e41016a41004c0d0420042802502104200d200e3602082003417c6a2103200641016a21062004200d2802504f0d000b200641016a21042006417f73200a6a210d0c050b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b2016200a41027422056a2103024003400240200d4101470d004100210d0c020b200341046a2802002204280208220641016a41004c0d032004200636020820032802002206280208220e41016a41004c0d04200428025021042006200e3602082003417c6a2103200d417f6a210d20042006280250490d000b0b200a200d490d03200a20124b0d04200a200d6b2204410176220e450d002010200d4102746a2103201520056a21060340200328020021052003200628020036020020062005360200200341046a21032006417c6a2106200e417f6a220e0d000b0b0240200d0d00200d211a0c070b0240200441094d0d00200d211a0c070b200a20124b0d04200a200d6b2104200d417f6a21032015200d4102746a21060340200a2003490d0d2006200441016a220410e3062003417f6a220d20034f0d062006417c6a2106200d21032004410a490d000c060b0b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b200d200a41e4d1cc001057000b200a201241e4d1cc00104d000b200a200d417f6a2203490d07200a201241f4d1cc00104d000b200d41016a211a0b024020192018470d00201841016a22032018490d0c201841017422062003200620034b1b22034104200341044b1b220341ffffffff01712003464102742106200341037421030240024020180d00200141003602d80f0c010b200141043602e00f200120173602d80f200120184103743602dc0f0b200141a0056a20032006200141d80f6a107d20012802a8052103024020012802a0054101470d0020030d0c0c0d0b20012802a4052117200341037621180b201720194103746a220320043602042003201a360200201941016a221b21190240201b4102490d000240024002400240024002400240034002400240024002402017201b2219417f6a221b4103746a2203280200450d00201941037420176a220e41746a280200220d200328020422044d0d00201941024d0d0c20172019417d6a22034103746a28020422062004200d6a4d0d01201941034d0d0c200e41646a2802002006200d6a4b0d0c0c010b20194103490d012003280204210420172019417d6a22034103746a28020421060b20062004490d010b2019417e6a21030b02402019200341016a221c4d0d00201920034d0d02201720034103746a221d280204221e201d2802006a22032017201c4103746a221f2802002220490d03200320124b0d04201020204102746a2221201f280204222241027422046a21062003410274210e02400240200320206b220520226b22032022490d0020142021200410e908220320046a210d0240024020224101480d00200520224a0d010b20212104200321030c020b2010200e6a2107200321032021210403402006280200220e280208220541016a41004c0d08200e200536020820032802002205280208220a41016a41004c0d09200e280250210e2005200a360208200420062003200e200528025049220e1b2802003602002003200341046a200e1b2103200441046a2104200641046a2006200e1b220620074f0d02200d20034b0d000c020b0b201420062003410274220410e908220720046a210d0240024020224101480d00200341014e0d010b20062104200721030c010b2015200e6a210a200621040340200d417c6a22032802002206280208220e41016a41004c0d092006200e3602082004417c6a220e2802002205280208220941016a41004c0d0a2006280250210620052009360208200a200e2003200620052802504922061b280200360200200d200320061b210d02402021200e200420061b2204490d00200721030c020b200a417c6a210a200721032007200d490d000b0b20042003200d20036b417c7110e9081a201d41046a201e20226a360200201d2020360200201f201f41086a2019201c417f736a41037410ea081a41012119201b41014d0d090c010b0b201c20194184d2cc00103c000b200320194194d2cc00103c000b2020200341a4d2cc001057000b2003201241a4d2cc00104d000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b41bcd9cc004118200141d80f6a41c4f8c90041d4f8c900103e000b201a450d060c000b0b2004201241c4d1cc001056000b41bcd9cc004118200141d80f6a4190b7c00041a0b7c000103e000b0240200842ffffff3f83500d00200a102e0b0240200b422088a72203450d00200341386c21042006412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200441486a22040d000b0b200ba72203450d00200341386c450d002006102e0b20014198076a200141d8086a41c00110e9081a0c040b2003200a41f4d1cc001057000b0240201841ffffffff0171450d002017102e0b2013450d002014102e0b20012802980f210420012802940f2106200120012802900f22033602a80f200120063602a40f200120033602a00f20012003200441e0006c6a221d3602ac0f4104211e024002402004450d00200141900d6a410472211f200141d80f6a41346a2104024002400340200141a0056a41286a220d200341286a290300370300200141a0056a41206a220e200341206a290300370300200141a0056a41186a2205200341186a290300370300200141a0056a41106a220a200341106a290300370300200141a0056a41086a2207200341086a290300370300200120032903003703a005200341306a2802002106200141a80a6a41086a22092003413c6a290200370300200141a80a6a41106a2221200341c4006a290200370300200141a80a6a41186a2219200341cc006a290200370300200141a80a6a41206a2222200341d4006a290200370300200141a80a6a41286a2217200341dc006a2802003602002001200341346a2902003703a80a2006450d01200141d80f6a41286a200d290300370300200141d80f6a41206a200e290300370300200141d80f6a41186a2005290300370300200141d80f6a41106a200a290300370300200141d80f6a41086a2007290300370300200420012903a80a370200200441086a2009290300370200200441106a2021290300370200200441186a2019290300370200200441206a2022290300370200200441286a2017280200360200200120012903a0053703d80f2001200636028810200141900d6a200141d80f6a10e406024020012802900d22060d00200341e0006a2203201d470d010c030b0b200141b00f6a41206a201f41206a290200220b370300200141b00f6a41186a201f41186a2902002208370300200141b00f6a41106a201f41106a2902002223370300200141b00f6a41086a201f41086a29020022243703002001200341e0006a3602a80f2001201f29020022253703b00f20012802b40f210720012802d40f212220012802cc0f211920012802c40f212120012802bc0f2109412c102c221e450d06201e2022360228201e200ba7221b360224201e2019360220201e2008a7222036021c201e2021360218201e2023a7221f360214201e2009360210201e2024a7221d36020c201e2007360208201e2025a72217360204201e2006360200200141d00e6a41086a200141a00f6a41086a290300220b370300200120012903a00f3703d00e024002400240200ba7220620012802dc0e2226470d0041012127410121130c010b200141d80f6a41346a2104200141900d6a410472212841012127410121130340200141a0056a41286a220d2006220341286a290300370300200141a0056a41206a220e200341206a290300370300200141a0056a41186a2205200341186a290300370300200141a0056a41106a220a200341106a290300370300200141a0056a41086a221c200341086a290300370300200120032903003703a005200341306a2802002106200141a80a6a41086a22142003413c6a290200370300200141a80a6a41106a221a200341c4006a290200370300200141a80a6a41186a2218200341cc006a290200370300200141a80a6a41206a2215200341d4006a290200370300200141a80a6a41286a2216200341dc006a2802003602002001200341346a2902003703a80a024002402006450d00200141d80f6a41286a200d290300370300200141d80f6a41206a220d200e290300370300200141d80f6a41186a220e2005290300370300200141d80f6a41106a2205200a290300370300200141d80f6a41086a220a201c290300370300200420012903a80a370200200441086a2014290300370200200441106a201a290300370200200441186a2018290300370200200441206a2015290300370200200441286a2016280200360200200120012903a0053703d80f2001200636028810200141900d6a200141d80f6a10e40620012802900d22060d01200341e0006a22062026470d020b2001200341e0006a3602d80e0c020b200141b00f6a41106a202841106a290200220b370300200141e00b6a41086a221c202841086a290200370300200141e00b6a41106a2214200b370300200141e00b6a41186a221a202841186a290200370300200141e00b6a41206a2218202841206a2902003703002001200341e0006a3602d80e200120282902003703e00b200d2018290300370300200e201a29030037030020052014290300370300200a201c290300370300200120012903e00b3703d80f024020132027470d00202741016a22032027490d0b2027410174221c2003201c20034b1b22034104200341044b1bad422c7e220b422088a7454102742103200ba7211c0240024020270d00200141003602a0050c010b200141043602a8052001201e3602a00520012027412c6c3602a4050b200141900d6a201c2003200141a0056a107d20012802980d210320012802900d4101460d0320012802940d211e2003412c6e21270b201e2013412c6c6a220320063602002003410c6a200a290300370200200320012903d80f370204200341146a20052903003702002003411c6a200e290300370200200341246a200d290300370200201341016a211320012802d80e220620012802dc0e2226470d000b0b200141d00e6a10ac020c040b2003450d070c060b200341e0006a211d0b2001201d3602a80f0b200141a00f6a10ac0241002127410021130b2013412c6c2104410021030240034020042003460d01200141a8016a201e20036a10be042003412c6a210320012802a801450d000b02402013450d002013412c6c2104201e210303400240200341046a2802002206450d00200641226c450d002003280200102e0b2003412c6a2103200441546a22040d000b0b02402027450d002027412c6c450d00201e102e0b02402011450d0020124102742104201021030340200328020022062006280200417f6a3602000240200328020022062802000d00200641046a22062006280200417f6a3602002003280200220641046a2802000d002006102e0b200341046a21032004417c6a22040d000b0b200f41ffffffff0371450d012010102e0c010b2012ad42307e220b422088a70d03200ba72203417f4c0d030240024020030d00410821290c010b2003102c2229450d030b0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200341306e222a20124f0d00202a41017422042012200420124b1b22044104200441044b1bad42307e220b422088a7454103742104200ba72106024002402003412f4b0d00200141003602d80f0c010b200141d80f6a41086a4108360200200120293602d80f2001202a41306c3602dc0f0b200141a0056a20062004200141d80f6a107d200141a8056a280200210320012802a0054101460d0120012802a4052129200341306e212a0b2012410274210420110d0141002118201021030c020b2003450d170c160b201020046a21152012410274210d2011417c6a41027641016a2116200141d00e6a41186a210e200141d00e6a41106a2105200141d00e6a41086a210a410021182029210420102106024003400240200628020022030d00200641046a21030c020b200328020841016a221c41004c0d032003201c360208200e200341ec006a2900003703002005200341e4006a290000370300200a200341dc006a2900003703002001200341d4006a2900003703d00e2003280208221c41016a221241004c0d0420032012360208200e290300210b20052903002108200a29030021232003201c417f6a360208200141d80f6a41086a221c2023370300200141d80f6a41106a22122008370300200141d80f6a41186a2214200b370300200120012903d00e3703d80f200341c8006a290300210b2003290340210820032003280200417f6a221a3602000240201a0d00200341046a221a201a280200417f6a221a360200201a0d002003102e0b200641046a2106200420012903d80f370300201c29030021232012290300212420142903002125200441286a200b370300200441206a2008370300200441186a2025370300200441106a2024370300200441086a2023370300200441306a2104201841016a2118200d417c6a220d0d000b20152103201621180b201520036b220441027521120b02402004450d00201241027421040340200328020022062006280200417f6a3602000240200328020022062802000d00200641046a22062006280200417f6a3602002003280200220641046a2802000d002006102e0b200341046a21032004417c6a22040d000b0b0240200f41ffffffff0371450d002010102e0b200141d80f6a10f504024020012802d80f2203450d00200141e40f6a2802002104200141d80f6a41106a290300210b200120012902dc0f37029c0a200120033602980a2001200b3702f40e200120043602f00e200141e80e6a4200370300200141d00e6a41106a4200370300200141d00e6a41086a22034200370300200142003703d00e200141d80f6a41a5fec600411a1081022003200141d80f6a41086a2204290000370300200120012900d80f3703d00e200141d80f6a4194c5c800410e108102200c41086a2004290000370000200c20012900d80f370000200141a0016a200141d00e6a4120108e02024020012802a001450d0020012802a401212b200142003702840f024020012802a00a2203450d00200341386c210620012802980a41086a2103410021040340200141d80f6a41186a200341186a290000370300200141d80f6a41106a200341106a290000370300200141d80f6a41086a200341086a290000370300200120032900003703d80f200341386a2103200141800f6a200141d80f6a200410a402200441016a2104200641486a22060d000b0b2001200141800f6a3602a40a200142003702940f024020012802f80e2203450d0020012802f00e220520034105746a21154100210d41002112034002400240200d450d0020012802900f211c0c010b41e000102c220d450d194100211c200d4100360200200d41003b015e2001200d3602940f200141003602900f0b200541206a2114024002400340200d41046a211a200d2f015e2210410274210e41002103417f2104024003400240200e2003470d00201021040c020b2005200d20036a220a41046a280200412010ec082206450d03200441016a2104200341046a21032006417f4a0d000b0b0240201c450d00201c417f6a211c200d20044102746a41e0006a280200210d0c010b0b024002402010410a4b0d00201041016a21030240200420104f0d00201a200441016a41027422066a201a2004410274220e6a20032004417f736a410274220a10ea081a200d41306a221c20066a201c200e6a200a10ea081a0b201a200441027422046a2005360200200d20046a41306a2012360200200d20033b015e0c010b4100210a4104210302400240200441054f0d00200421060c010b4105210341052106024002402004417b6a0e020201000b200441796a21064101210a410621030c010b410021064101210a0b41e000102c2204450d1b200441003b015e200441003602002004200d2f015e221c2003417f736a220e3b015e200e410c4f0d09201c200341016a22106b200e470d0a200d41306a221c200341027422116a2802002116201a20116a2802002111200441046a201a201041027422106a200e410274220e10e9081a200441306a201c20106a200e10e9081a200d20033b015e2004200d200a1b220341046a210e20032f015e221c41016a210a0240200641016a2210201c4b0d00200e2010410274221c6a200e200641027422106a200a2006417f736a410274221a10ea081a200341306a2226201c6a202620106a201a10ea081a0b200e200641027422066a2005360200200320066a41306a20123602002003200a3b015e024002400240200d280200220a0d004100211a0c010b4100211a201121262016210f200421280340200d2f015c210e200a2f015e221c410b490d0241002105410421030240200e4105490d00200e210302400240200e417b6a0e020201000b200e41796a210e41012105410621030c010b4100210e41012105410521030b419001102c2204450d1e200441003b015e200441003602002004200a2f015e220d2003417f736a22063b015e2006410c4f0d0e200d200341016a22106b2006470d0f200a41306a222c2003410274220d6a2802002116200a41046a222d200d6a2802002111200441046a202d2010410274220d6a2006410274220610e9081a200441306a202c200d6a200610e9081a200a20033b015e20042f015e220641016a21102006410c4f0d10201c20036b22032010470d11201a41016a211a200441e0006a200a200d6a41e0006a200341027410e9081a4100210302400340200420034102746a41e0006a280200220d20033b015c200d200436020020032003200649220d6a220320064b0d01200d0d000b0b2004200a20051b220d41046a222c200e410274221c6a2110200d2f015e220641016a210502400240200e41016a220320064d0d0020102026360200200d41306a21100c010b202c2003410274222d6a2010200e417f7320056a410274222c10ea081a20102026360200200d41306a2210202d6a2010201c6a202c10ea081a0b2010201c6a200f360200200d41e0006a21100240200e41026a2226200641026a22064f0d00201020264102746a201020034102746a2003417f7320066a41027410ea081a0b201020034102746a2028360200200d20053b015e0240200320064f0d00200d201c6a41e4006a2103034020032802002206200e41016a220e3b015c2006200d360200200341046a21032005200e470d000b0b200a210d200a2802002203210a201121262016210f2004212820030d000b0b20012802940f2206450d1020012802900f210d419001102c2203450d1c20032006360260200341003b015e2003410036020020062003360200200641003b015c200120033602940f2001200d41016a3602900f200d201a470d1120032f015e2206410b4f0d122003200641016a220d3b015e200320064102746a220641306a2016360200200641046a2011360200200341e0006a200d4102746a2004360200200420033602002004200d3b015c200120012802980f41016a3602980f0c030b200a41046a2104201c41016a210602400240200e201c490d002004200e41027422036a2026360200200a20036a41306a200f360200200a41e0006a2104201c41026a210d200e41016a21030c010b2004200e41016a2203410274220d6a2004200e41027422056a2204200e417f7320066a410274220e10ea081a20042026360200200a41306a2204200d6a200420056a2204200e10ea081a2004200f3602002005200a41e0006a22046a41086a2004200d6a2003417f73201c41026a220d6a41027410ea081a0b20042003410274220e6a2028360200200a20063b015e2003200d4f0d00200a200e6a41e0006a210403402004280200220620033b015c2006200a360200200441046a2104200d200341016a2203470d000b0b200120012802980f41016a3602980f0c010b200a41306a20123602000b20142015460d01201241016a211220012802940f210d201421050c000b0b201e2013412c6c6a211c0240024020130d00201e2104201e21030c010b200141a0056a410c6a2110200141a0056a4104722104200141e00b6a41206a210d200141e00b6a41186a210e200141e00b6a41106a2105200141e00b6a41086a210a201e21060340200622032802002106200d200341246a290200370300200e2003411c6a2902003703002005200341146a290200370300200a2003410c6a2902003703002001200341046a2902003703e00b024020060d002003412c6a21040c020b200420012903e00b370200200441086a200a290300370200200441106a2005290300370200200441186a200e290300370200200441206a200d290300370200200120063602a0054200210b0240200141800f6a201010a0022206450d0020012802a00a200628020022064d0d0020012802980a200641386c6a290300210b0b200141d80f6a41286a200141a0056a41286a280200360200200141d80f6a41206a200141a0056a41206a290300370300200141d80f6a41186a200141a0056a41186a290300370300200141d80f6a41106a200141a0056a41106a290300370300200141d80f6a41086a200141a0056a41086a290300370300200120012903a0053703d80f200141900d6a200141d80f6a200b420010bd04200341286a200141900d6a41286a280200360200200341206a200141900d6a41206a290300370200200341186a200141900d6a41186a290300370200200341106a200141900d6a41106a290300370200200341086a200141900d6a41086a290300370200200320012903900d3702002003412c6a2206201c470d000b2003412c6a2103201c21040b2027ad210b201c20046b2206412c6d210d02402006450d00200d412c6c210603400240200441046a280200220d450d00200d41226c450d002004280200102e0b2004412c6a2104200641546a22060d000b0b2003201e6b220e412c6d220d412c6c2104200dad422086200b842108201e210602400340200621032004450d014200210b0240200141800f6a2003410c6a10a0022206450d0020012802a00a200628020022064d0d0020012802980a200641386c6a290300210b0b2003412c6a210620014198016a2003200b420010bf04200441546a2104200128029801450d000b0240200e450d00201e200d412c6c6a210d201e2103034020032204412c6a21030240200441046a2802002206450d00200641306c450d002004280200102e0b200d2003470d000b0b2027450d0f2027412c6c450d0f201e102e0c0f0b200120083702a40f2001201e3602a00f201e200d412c6c6a212d200141a00f6a10e5060240200e0d00201e211c201e21050c0e0b200141e00b6a41086a2112200141e00b6a41206a212e200141e00b6a41186a212f200141e00b6a41106a2130201e211c02400340201c22052802002114202e200541246a2213290200370300202f2005411c6a22112902003703002030200541146a222629020037030020122005410c6a290200370300200120052902043703e00b2005412c6a211c2014450d0f200141a80a6a41086a220f201241086a290200370300200141a80a6a41106a2228201241106a290200370300200141a80a6a41186a222c201241186a290200370300200120122902003703a80a20012802e00b21160240024020012802e40b220e41306c220d0d00420021084200210b0c010b201441206a210342002108200d21044200210b0340427f200b200341086a2903007c200820032903007c22232008542206ad7c220820062008200b542008200b511b22061b210b427f202320061b2108200341306a2103200441506a22040d000b0b024002400240200e41306c2204450d002014200d6a2110201421030340200341286a2903002123200341206a2903002124200341086a2903002125200341106a290300213120032903002132200141d00e6a41186a2206200341186a290300370300200141d00e6a41106a220d2031370300200141d00e6a41086a220e2025370300200120323703d00e202420232008200b10e606220a41ffff03710d02200341306a2103200441506a22040d000b0b410021154102211a02402016450d00201641306c450d002014102e0b4100210a0c010b200141900d6a41086a2215200e290300370300200141900d6a41106a2233200d290300370300200141900d6a41186a22342006290300370300200120012903d00e22233703a005200120233703900d4122102c221a450d19201a20012903900d370100201a200a3b0120201a41186a2034290300370100201a41106a2033290300370100201a41086a20152903003701000240024020044130470d00410121154101210a0c010b200341306a2134201041506a2135410121154101210a03402034210302400340200341286a2903002123200341206a29030021242006200341186a290300370300200d200341106a290300370300200e200341086a290300370300200120032903003703d00e202420232008200b10e606220441ffff03710d012010200341306a2203470d000c030b0b200141a0056a41086a200e2903002223370300200141a0056a41106a200d2903002224370300200141a0056a41186a20062903002225370300200120012903d00e22313703a005200141d80f6a41186a22362025370300200141d80f6a41106a22372024370300200141d80f6a41086a22382023370300200120313703d80f0240200a2015470d00201541016a22332015490d1d201541017422342033203420334b1b22334104203341044b1bad42227e2223422088a74541017421332023a721340240024020150d00200141003602900d0c010b200141023602980d2001201a3602900d2001201541226c3602940d0b200141b00f6a20342033200141900d6a107d20012802b80f211520012802b00f4101460d0520012802b40f211a201541226e21150b200341306a2134201a200a41226c6a223320012903d80f370100203829030021232037290300212420362903002125203320043b0120203341186a2025370100203341106a2024370100203341086a2023370100200a41016a210a20352003470d000b0b2016450d00201641306c450d002014102e0b200141d80f6a41186a2203202c290300370300200141d80f6a41106a22042028290300370300200141d80f6a41086a2206200f290300370300200120012903a80a3703d80f200520153602042005201a3602002005200a360208200520012903d80f37020c202620062903003702002011200429030037020020132003290300370200201c202d470d000b201c2105202d211c0c0e0b2015450d170c160b024020012802f40e41ffffff3f71450d0020012802f00e102e0b024020012802a00a2203450d00200341386c210420012802980a412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200441486a22040d000b0b200128029c0a2203450d00200341386c450d0020012802980a102e0b0240202a450d00202a41306c450d002029102e0b02402013450d00201e2013412c6c6a210d201e2103034020032204412c6a21030240200441046a2802002206450d00200641226c450d002004280200102e0b200d2003470d000b0b2027450d122027412c6c450d12201e102e0c120b41bcd9cc004118200141d80f6a41f09cc50041c09dc500103e000b41bcd9cc004118200141d80f6a41f09cc50041d09dc500103e000b200e410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2006410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2010410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b202d201c6b2203412c6d210402402003450d002004412c6c210303400240201c41046a2802002204450d00200441306c450d00201c280200102e0b201c412c6a211c200341546a22030d000b0b201e2005201e6b220d412c6d2206412c6c6a2104201e21030240034020042003460d0120014190016a200310be042003412c6a2103200128029001450d000b0240200d450d00201e2006412c6c6a210d201e2103034020032204412c6a21030240200441046a2802002206450d00200641226c450d002004280200102e0b200d2003470d000b0b2027450d012027412c6c450d01201e102e0c010b200120063602980d200120273602940d2001201e3602900d200141d80f6a200141900d6a200141a40a6a200141900f6a109906200141e00f6a280200210e200141e40f6a280200210620012802dc0f210520012802d80f2103200141a0056a200141e80f6a41b40110e9081a20034101460d00200141a80a6a200141a0056a41b40110e9081a20012802a00a212f20012802f80e2135200141d80f6a10df040240024002400240200141f00f6a2903004200510d00200141f80f6a210a02400240202f0d00410021040c010b4200200a290300220b42809ce8af6d7c22082008200b561b210b2035ad42889b047e202fad222442f0aefa017e7c2108202bad42a0ede0017e2123202f21030240202f410176220d450d00202f21040340024002400240417f2008202442e8aede067e7c20237c4280e59af7007c2224200b522024200b541b41016a0e03000501000b02402004200d6a220320044f0d00200421030c040b2003202f490d01200421030c030b2004200d6b220320044d0d00200421030c020b20032004460d022003ad212420032104200d410176220d0d000b0b024003402003220441016a2203202f4b0d0120082003ad42e8aede067e7c20237c4280e59af7007c200b540d000b0b4100211c02402004417f6a20044b0d000340024020082004ad42e8aede067e7c20237c4280e59af7007c200b560d002004211c0c020b2004417e6a21032004417f6a220d21042003200d4d0d000b0b202f201c201c202f4b1b21040b2001200e3602dc0f200120053602d80f200120063602e00f200141e40f6a200141a80a6a41b40110e9081a02400240417f417f417f417f417f417f417f417f417f417f417f417f417f417f417f2006200141ec0f6a2802006a220320032006491b2203200a2802006a220d200d2003491b220320014184106a2802006a220d200d2003491b220320014190106a2802006a220d200d2003491b22032001419c106a2802006a220d200d2003491b2203200141a8106a2802006a220d200d2003491b2203200141b4106a2802006a220d200d2003491b2203200141c0106a2802006a220d200d2003491b2203200141cc106a2802006a220d200d2003491b2203200141d8106a2802006a220d200d2003491b2203200141e4106a2802006a220d200d2003491b2203200141f0106a2802006a220d200d2003491b2203200141fc106a2802006a220d200d2003491b2203200141d80f6a41b0016a2802006a220d200d2003491b220320014194116a2802006a220d200d2003491b220320046b223320034b0d0020330d010b20012802e40f2103200141a0056a200141e80f6a41b00110e9081a200141e00b6a200141a0056a41b00110e9081a0c070b200141b00f6a10f50420012802b00f2210450d0320012902b40f21080240200141c00f6a29030042ffffff3f83500d00200141bc0f6a280200102e0b2008422088a7220d41386c220641386d2203ad42287e220b422088a70d0d200ba72204417f4c0d0d0240024020040d00410821260c010b2004102c2226450d0d0b0240024002400240200441286e223620034f0d002036410174220e2003200e20034b1b220e4104200e41044b1bad42287e220b422088a745410374210e200ba7210502400240200441274b0d00200141003602b00f0c010b200141b00f6a41086a4108360200200120263602b00f2001203641286c3602b40f0b200141d00e6a2005200e200141b00f6a107d200141d80e6a280200210420012802d00e4101460d0120012802d40e2126200441286e21360b201020066a221e2010470d014100212c2010210e0c020b2004450d0f0c0e0b200d41037441786a41037641016a21124100212c2010210320262104024003402003290300210b200141b00f6a41186a2206200341206a290300370300200141b00f6a41106a220d200341186a290300370300200141b00f6a41086a220e200341106a2903003703002001200341086a2903003703b00f0240200341286a280200221c0d00200341386a210e0c020b2003412c6a2802002105200141d00e6a41186a220a2006290300370300200141d00e6a41106a2206200d290300370300200141d00e6a41086a220d200e290300370300200120012903b00f3703d00e0240200541ffffff3f71450d00201c102e0b200420012903d00e370300200441186a200a290300370300200441106a2006290300370300200441086a200d290300370300200441206a200b370300200441286a2104202c41016a212c200341386a2203201e470d000b201e210e2012212c0b201e200e6b220641386d21030b2008a7210d02402006450d00200341386c2104200e412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200441486a22040d000b0b0240200d450d00200d41386c450d002010102e0b024002400240202c41144b0d00202c41014d0d052026202c417f6a220641286c6a21054100210d0340202c20062203417f6a2206490d030240202c20066b221c4102490d002026200341286c6a220341206a220e2903002026200641286c6a220441206a220a290300220b5a0d00200141d00e6a41186a221e200441186a2210290300370300200141d00e6a41106a2212200441106a2214290300370300200141d00e6a41086a221a200441086a2215290300370300200120042903003703d00e200420032903003703002015200341086a2903003703002014200341106a2903003703002010200341186a290300370300200a200e2903003703000240201c4103490d00200d417f6a210a41002104200521030340200341c8006a220e290300200b5a0d01200a2004460d05200341206a200e290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a2903003703002003200341286a220e290300370300200e2103200d2004417f6a2204470d000b200e21030b200320012903d00e3703002003200b370320200341186a201e290300370300200341106a2012290300370300200341086a201a2903003703000b200541586a2105200d417f6a210d20060d000c060b0b202c410176ad42287e220b422088a70d0f200ba72237417f4c0d0f2037102c222d450d0e202641586a2130202641a87f6a2134410421144100212e41002110202c2113034020132105410021134101210e02402005417f6a220d450d0002400240024002400240024002402026200d41286c6a41206a290300200541286c220a20266a41506a290300220b540d002005417e6a210d2034200a6a2104410021134100210303400240200d2003470d002005210e0c090b200341016a2103200b200429030022085a2106200441586a21042008210b20060d000b200341016a210e2003417f7320056a210d0c010b2034200a6a2103024003400240200d4101470d004100210d0c020b200d417f6a210d200b20032903002208542104200341586a21032008210b20040d000b0b2005200d490d012005202c4b0d022005200d6b220e4101762206450d002030200a6a21032026200d41286c6a21040340200141b00f6a41206a220a200441206a221c290300370300200141b00f6a41186a221e200441186a2212290300370300200141b00f6a41106a221a200441106a2215290300370300200141b00f6a41086a2216200441086a2213290300370300200120042903003703b00f200341206a2227290300210b200341186a22112903002108200341106a220f2903002123200341086a2228290300212420042003290300370300201320243703002015202337030020122008370300201c200b3703002027200a2903003703002011201e290300370300200f201a29030037030020282016290300370300200320012903b00f370300200341586a2103200441286a21042006417f6a22060d000b0b0240200d0d00200d21130c060b0240200e41094d0d00200d21130c060b2005202c4b0d03200d20056b21062026200d41286c6a210a03402005200d417f6a2213490d050240200520136b220e4102490d002026200d41286c6a220341206a220d2903002026201341286c6a220441206a221c290300220b5a0d00200141d00e6a41186a221e200441186a2212290300370300200141d00e6a41106a221a200441106a2215290300370300200141d00e6a41086a2216200441086a2227290300370300200120042903003703d00e200420032903003703002027200341086a2903003703002015200341106a2903003703002012200341186a290300370300201c200d2903003703000240200e4103490d0041012104200a21030340200341c8006a220d290300200b5a0d01200620046a4101460d06200341206a200d290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a2903003703002003200341286a220d290300370300200d21032006200441016a22046a0d000b200d21030b200320012903d00e3703002003200b370320200341186a201e290300370300200341106a201a290300370300200341086a20162903003703000b2013450d06200a41586a210a2006417f6a21062013210d200e410a4f0d060c000b0b200d200541e4d1cc001057000b2005202c41e4d1cc00104d000b2004200e41d4d1cc00103c000b2005200d417f6a2213490d002005202c41f4d1cc00104d000b2013200541f4d1cc001057000b02402010202e470d00202e41016a2203202e490d11202e41017422042003200420034b1b22034104200341044b1b220341ffffffff017120034641027421042003410374210302400240202e0d00200141003602b00f0c010b200141043602b80f200120143602b00f2001202e4103743602b40f0b200141d00e6a20032004200141b00f6a107d20012802d80e2103024020012802d00e4101470d002003450d120c110b20012802d40e21142003410376212e0b201420104103746a2203200e36020420032013360200201041016a22272110024020274102490d0002400240024003400240024002400240201420272210417f6a22274103746a2203280200450d00201041037420146a220e41746a280200220d200328020422044d0d00201041024d0d0820142010417d6a22034103746a28020422062004200d6a4d0d01201041034d0d08200e41646a2802002006200d6a4b0d080c010b20104103490d012003280204210420142010417d6a22034103746a28020421060b20062004490d010b2010417e6a21030b02402010200341016a22114d0d00201020034d0d02201420034103746a221a280204220f201a2802006a2203201420114103746a22152802002216490d032003202c4b0d04201a41046a21282026201641286c6a221e2015280204221241286c22046a210e200341286c210602400240200320166b220520126b22032012490d00202d201e200410e908221c20046a210d0240024020124101480d00200520124a0d010b201e2103201c21040c020b202620066a210a201c2104201e210303402003200e2004200e41206a290300200441206a2903005422051b2206290300370300200341206a200641206a290300370300200341186a200641186a290300370300200341106a200641106a290300370300200341086a200641086a2903003703002004200441286a20051b2104200341286a2103200e41286a200e20051b220e200a4f0d02200d20044b0d000c020b0b202d200e200341286c220410e908220520046a210d0240024020124101480d00200341014e0d010b200e2103200521040c010b203020066a2106200e210303402006200341586a220a200d41586a221c200d41786a290300200341786a29030054220e1b2204290300370300200641206a200441206a290300370300200641186a200441186a290300370300200641106a200441106a290300370300200641086a200441086a290300370300200d201c200e1b210d0240201e200a2003200e1b2203490d00200521040c020b200641586a2106200521042005200d490d000b0b20032004200d20046b220620064128706b10e9081a2028200f20126a360200201a20163602002015201541086a20102011417f736a41037410ea081a41012110202741014d0d050c010b0b201120104184d2cc00103c000b200320104194d2cc00103c000b2016200341a4d2cc001057000b2003202c41a4d2cc00104d000b2013450d040c000b0b410120046b201c41d4d1cc00103c000b2006202c41c4d1cc001056000b41baa9c700413e41f8a9c700105d000b0240202e41ffffffff0171450d002014102e0b2037412870210320374128490d0020372003460d00202d102e0b2026202c41286c6a211e4100210a20012802a40a2110202621050340201e2005460d03024002400240024002400240024002400240024002400240024002400240024002402010200510a0022203450d0020032802002103024020012802e00f220e450d00200e41037441786a41037641016a210d4100210620012802d80f2104034020042802002003460d03200441086a2104200d200641016a2206470d000b0b024020012802ec0f221c450d00201c410c6c41746a2106201c410274417c6a41027641016a210e4100210d20012802e40f2104034020042802002003460d04200641746a21062004410c6a2104200e200d41016a220d470d000b0b024020012802f80f220e450d00200e41047441706a41047641016a210d4100210620012802f00f2104034020042802002003460d05200441106a2104200d200641016a2206470d000b0b0240200128028410221c450d00201c41146c416c6a2106201c410274417c6a41027641016a210e4100210d20012802fc0f2104034020042802002003460d062006416c6a2106200441146a2104200e200d41016a220d470d000b0b0240200128029010221c450d00201c41186c41686a2106201c41037441786a41037641016a210e4100210d2001280288102104034020042802002003460d07200641686a2106200441186a2104200e200d41016a220d470d000b0b0240200128029c10221c450d00201c411c6c41646a2106201c410274417c6a41027641016a210e4100210d2001280294102104034020042802002003460d08200641646a21062004411c6a2104200e200d41016a220d470d000b0b024020012802a810220e450d00200e41057441606a41057641016a210d4100210620012802a0102104034020042802002003460d09200441206a2104200d200641016a2206470d000b0b024020012802b410221c450d00201c41246c415c6a2106201c410274417c6a41027641016a210e4100210d20012802ac102104034020042802002003460d0a2006415c6a2106200441246a2104200e200d41016a220d470d000b0b024020012802c010221c450d00201c41286c41586a2106201c41037441786a41037641016a210e4100210d20012802b8102104034020042802002003460d0b200641586a2106200441286a2104200e200d41016a220d470d000b0b024020012802cc10221c450d00201c412c6c41546a2106201c410274417c6a41027641016a210e4100210d20012802c4102104034020042802002003460d0c200641546a21062004412c6a2104200e200d41016a220d470d000b0b024020012802d810221c450d00201c41306c41506a2106201c41047441706a41047641016a210e4100210d20012802d0102104034020042802002003460d0d200641506a2106200441306a2104200e200d41016a220d470d000b0b024020012802e410221c450d00201c41346c414c6a2106201c410274417c6a41027641016a210e4100210d20012802dc102104034020042802002003460d0e2006414c6a2106200441346a2104200e200d41016a220d470d000b0b024020012802f010221c450d00201c41386c41486a2106201c41037441786a41037641016a210e4100210d20012802e8102104034020042802002003460d0f200641486a2106200441386a2104200e200d41016a220d470d000b0b024020012802fc10221c450d00201c413c6c41446a2106201c410274417c6a41027641016a210e4100210d20012802f4102104034020042802002003460d10200641446a21062004413c6a2104200e200d41016a220d470d000b0b024002400240200128028811220e450d00200e41067441406a41067641016a210d410021062001280280112104034020042802002003460d02200441c0006a2104200d200641016a2206470d000b0b024020012802941122120d00410021040c130b201241c4006c41bc7f6a210d2012410274417c6a41027641016a211c4100210e200128028c112106034020062802002003460d02200d41bc7f6a210d200641c4006a210641002104201c200e41016a220e470d000c130b0b2004200441c0006a200e2006417f736a41067410ea081a2001200e417f6a360288110c100b2006200641c4006a200d10ea081a20012012417f6a360294110c0f0b2036450d11203641286c450d112026102e0c110b2004200441086a200e2006417f736a41037410ea081a2001200e417f6a3602e00f0c0d0b20042004410c6a200610ea081a2001201c417f6a3602ec0f0c0c0b2004200441106a200e2006417f736a41047410ea081a2001200e417f6a3602f80f0c0b0b2004200441146a200610ea081a2001201c417f6a360284100c0a0b2004200441186a200610ea081a2001201c417f6a360290100c090b20042004411c6a200610ea081a2001201c417f6a36029c100c080b2004200441206a200e2006417f736a41057410ea081a2001200e417f6a3602a8100c070b2004200441246a200610ea081a2001201c417f6a3602b4100c060b2004200441286a200610ea081a2001201c417f6a3602c0100c050b20042004412c6a200610ea081a2001201c417f6a3602cc100c040b2004200441306a200610ea081a2001201c417f6a3602d8100c030b2004200441346a200610ea081a2001201c417f6a3602e4100c020b2004200441386a200610ea081a2001201c417f6a3602f0100c010b20042004413c6a200610ea081a2001201c417f6a3602fc100b410121040b200541286a2105200a20046a220a2033490d000c030b0b200141d80f6a109b060b202a450d02202a41306c450d022029102e0c020b20012802e40f210320012802e00f210620012802dc0f210e20012802d80f2105200141a0056a200141e80f6a41b00110e9081a02402036450d00203641286c450d002026102e0b200141e00b6a200141a0056a41b00110e9081a0b2001200336029c0d200120063602980d2001200e3602940d200120053602900d200141a00d6a200141e00b6a41b00110e9081a20012029201841306c6a3602e40f200120293602e00f2001202a3602dc0f200120293602d80f200141b00f6a200141d80f6a10c201200141a0056a200141900d6a10ca0120012802b80f210320012802b00f211c200141d80f6a200141a0056a41c00110e9081a200141e00b6a200141d80f6a200141980a6a200141f00e6a108d06024020012802e00b4101460d00200141e00b6a41086a280200210420012802e40b21062001200141e00b6a410c6a2802003602e80b200120043602e40b200120063602e00b200141d80f6a200141e00b6a200141800f6a200141980a6a10e70620012802d80f4101460d00200141d80f6a41086a280200211e200141d80f6a201c200320012802dc0f2212200141d80f6a410c6a280200221010b704024020012802d80f4101460d00200141e00f6a280200211820012802dc0f2114200141e40f6a2802002203410674211a024020030d0042002131417f210e20142103420021234200213242002124417f2105417f210a417f21150c040b201441206a2103201a2105427f2139427f21254200213242002124420021314200212303400240200341106a280200220a0d00200341206a21032039422088a721052025422088a721152039a7210e2025a7210a0c050b200341146a280200210e200141f0006a200341086a290300220b420020032903002208420010e80820014180016a200842002008420010e8082031427f200129038001200b2001290378223a84203a8442005220014180016a41086a290300223a2001290370223b203b7c7c223b203a547222041b7c223a20315422062023427f203b20041b7c2006ad7c223120235420312023511b21042008203954200b202554200b2025511b2106203220087c223b203254220d2024200b7c200dad7c223220245420322024511b210d0240200e450d00200e41306c450d00200a102e0b427f203120041b2123427f203a20041b2131200b202520061b21252008203920061b2139427f2032200d1b2124427f203b200d1b2132200341c0006a2103200541406a22050d000b2039422088a721052025422088a721152039a7210e2025a7210a0c040b02402010450d002010412c6c21042012210303400240200341046a2802002206450d00200641306c450d002003280200102e0b2003412c6a2103200441546a22040d000b0b201e450d00201e412c6c450d002012102e0b024020012802b40f41ffffff3f71450d00201c102e0b200141900d6a109b060b200141900f6a10bd02200141800f6a10bc02024020012802f40e41ffffff3f71450d0020012802f00e102e0b024020012802a00a2203450d00200341386c210420012802980a412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200441486a22040d000b0b200128029c0a2203450d02200341386c450d0220012802980a102e0c020b2014201a6a220d2003460d0003402003220441c0006a21030240200441346a2802002206450d00200641306c450d00200441306a280200102e0b200d2003470d000b0b0240201841ffffff1f71450d002014102e0b02402010450d002010412c6c21042012210303400240200341046a2802002206450d00200641306c450d002003280200102e0b2003412c6a2103200441546a22040d000b0b0240201e450d00201e412c6c450d002012102e0b200141e80e6a4200370300200141e00e6a4200370300200141d00e6a41086a22034200370300200142003703d00e200141d80f6a41a5fec600411a1081022003200141d80f6a41086a2204290000370300200120012900d80f3703d00e200141d80f6a4180c3c8004105108102200c41086a2004290000370000200c20012900d80f370000200141e8006a200141d00e6a4120108e02200128026c21062001280268210d200141d8086a200141900d6a41c00110e9081a024020012802b40f41ffffff3f71450d00201c102e0b200141900f6a10bd02200141800f6a10bc02024020012802f40e41ffffff3f71450d0020012802f00e102e0b024020012802a00a2203450d00200341386c210420012802980a412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200441486a22040d000b0b20064101200d1b21040240200128029c0a2203450d00200341386c450d0020012802980a102e0b20014198076a200141d8086a41c00110e9081a200141a0056a41286a22062023370300200141a0056a41186a220d2024370300200120313703c005200120323703b005200120153602ac052001200a3602a805200120053602a4052001200e3602a005200141a0056a41306a20014198076a41c00110e90821032001200436029007200141d80f6a200141a0056a10b8060240024020012d00d80f4106470d00200141900d6a200310ca01200141d80f6a41286a2006290300370300200141d80f6a41206a200141a0056a41206a290300370300200141d80f6a41186a200d290300370300200141d80f6a41106a200141a0056a41106a290300370300200141d80f6a41086a200141a0056a41086a290300370300200120012903a0053703d80f2001280290072104200141d80f6a41306a200141900d6a41c00110e9081a200120043602c811200141d8086a200141d80f6a10b90620012802d8084101470d010b2003109b060c020b20014194096a280200210e20014190096a280200210d0240200141d8086a41c0006a2802002203450d0020034106742104200d41346a21030340024020032802002206450d00200641306c450d002003417c6a280200102e0b200341c0006a2103200441406a22040d000b0b200141ac056a21030240200e41ffffff1f71450d00200d102e0b20012903a005210b20012802a8052104200141b0036a200341ec0110e9081a200141c0016a200141b0036a41ec0110e9081a200141a0056a200141c0016a41ec0110e9081a20014180116a2004360200200141f8106a200b3703002001411b3602f010200142023703c01020014184116a200141a0056a41ec0110e9081a200141f4126a2035360200200141f0126a202f3602002001200141d80f6a3602b003200141c0016a200141b0036a109005200141b0036a41086a200141c0016a41086a280200360200200120012903c0013703b003200141b0036a10e8061a024020012903c0104202510d0020012d00d80f41ff01714102470d0020012802e00f450d0020012802dc0f102e0b200141f0106a108b020c010b20014198076a200141d8086a41c00110e9081a0b024010e906450d00200141d80f6a41186a220e4200370300200141d80f6a41106a22044200370300200141d80f6a41086a22034200370300200142003703d80f200141a0056a41a8f8c60041041081022003200141a0056a41086a2206290000370300200120012900a0053703d80f200141a0056a41c98bc500410b108102200e2006290000370300200420012900a005370300200141d8006a200141d80f6a1085032001290360210820012802582105200141d00e6a41186a220a4200370300200141d00e6a41106a220d4200370300200141d00e6a41086a221c4200370300200142003703d00e200141d80f6a41a8f8c6004104108102201c2003290000370300200120012900d80f3703d00e200141d80f6a41fa8bc500410a108102200a2003290000370300200d20012900d80f370300200141c8006a200141d00e6a108503200141386a2001290350420020012802481b420042e012420010e80802400240024002400240200129034050450d002001290338210b200e42003703002004420037030020034200370300200142003703d80f200141a0056a41a8f8c600410410810220032006290000370300200120012900a0053703d80f200141a0056a41e38bc500410b108102200441086a2006290000370000200420012900a005370000200141286a200141d80f6a1085030240200b2001290330420020012802281b7c2223200b540d00024042002008420020051b220b20237d22082008200b561b42017c220b42e012200b42e012541b421880a741ff017141314b0d00200120223602840c2001201b3602800c200120193602fc0b200120203602f80b200120213602f40b2001201f3602f00b200120093602ec0b2001201d3602e80b200120073602e40b200120173602e00b41002103200141e00b6a211e200141b00f6a21170c060b200141d00e6a41186a4200370300200141d00e6a41106a4200370300200141d00e6a41086a22044200370300200142003703d00e200141d80f6a41a081ca0041071081022004200141d80f6a41086a2203290000370300200120012900d80f3703d00e200141d80f6a41e4d1c100410c108102200d41086a2003290000370000200d20012900d80f370000200141206a200141d00e6a4120108e022001280224212720012802202111200141d80f6a41186a22044200370300200141d80f6a41106a2206420037030020034200370300200142003703d80f200141a0056a41bed8c80041081081022003200141a0056a41086a220d290000370300200120012900a0053703d80f200141a0056a41e9d8c80041041081022004200d290000370300200620012900a005370300200141b0036a41046a41003a0000200141003602b003200141186a200141d80f6a4120200141b0036a4105410010ca040240024002402001280218450d002001200128021c2203410520034105491b3602a4052001200141b0036a3602a005200141106a200141a0056a10ab012001280210450d010b410021160c010b200128021421160b200141b0036a108703200141d80f6a41e9dabdf30610ea0620012802dc0f211320012802d80f22102103024020012802e00f2204450d0020044105742104201021030340200341206a2103200441606a22040d000b0b02400240200320106b410575221241144b0d00201241014d0d0620102012417e6a22034105746a210441022106034020122003490d022004200610eb06200441606a2104200641016a21062003417f6a2203417f470d000c070b0b2012410176220341ffffff3f712003470d0920034105742226417f4c0d092026102c2214450d08201041606a2115201041a07f6a210c4104212241002118410021212012211a0340201a211b4100211a410121060240201b417f6a220d450d000240024002400240024002402010200d4105746a201b410574220520106a41406a412010ec084100480d00201b417e6a210d200c20056a21034100211a4100210403400240200d2004470d00201b21060c080b200441016a2104200341206a2003412010ec082106200341606a21032006417f4a0d000b200441016a21062004417f73201b6a210d0c010b200c20056a2103024003400240200d4101470d004100210d0c020b200d417f6a210d200341206a2003412010ec082104200341606a210320044100480d000b0b201b200d490d01201b20124b0d02201b200d6b2206410176220e450d00201520056a21032010200d4105746a21040340200141d00e6a41186a2205200441186a220a290000370300200141d00e6a41106a2207200441106a2209290000370300200141d00e6a41086a2219200441086a2217290000370300200120042900003703d00e200341086a221d290000210b200341106a221f2900002108200341186a2220290000212320042003290000370000200a2023370000200920083700002017200b37000020202005290300370000201f2007290300370000201d2019290300370000200320012903d00e370000200341606a2103200441206a2104200e417f6a220e0d000b0b0240200d0d00200d211a0c050b0240200641094d0d00200d211a0c050b201b20124b0d02201b200d6b2106200d417f6a21032015200d4105746a21040340201b2003490d0a2004200641016a220610eb062003417f6a220d20034f0d04200441606a2104200d21032006410a490d000c040b0b200d201b41e4d1cc001057000b201b201241e4d1cc00104d000b201b200d417f6a2203490d06201b201241f4d1cc00104d000b200d41016a211a0b024020212018470d00201841016a22032018490d0b201841017422042003200420034b1b22034104200341044b1b220341ffffffff01712003464102742104200341037421030240024020180d00200141003602d80f0c010b200141043602e00f200120223602d80f200120184103743602dc0f0b200141a0056a20032004200141d80f6a107d20012802a8052103024020012802a0054101470d002003450d0c0c0b0b20012802a4052122200341037621180b202220214103746a220320063602042003201a360200202141016a22202121024020204102490d0002400240024003400240024002400240202220202221417f6a22204103746a2203280200450d00202141037420226a220e41746a280200220d200328020422044d0d00202141024d0d0820222021417d6a22034103746a28020422062004200d6a4d0d01202141034d0d08200e41646a2802002006200d6a4b0d080c010b20214103490d012003280204210420222021417d6a22034103746a28020421060b20062004490d010b2021417e6a21030b02402021200341016a221b4d0d00202120034d0d02202220034103746a2217280204221c20172802006a22032022201b4103746a221d280200221f490d03200320124b0d04201741046a211e2010201f4105746a2209201d280204221941057422046a210d20034105742106024002402003201f6b220520196b22032019490d0020142009200410e908220720046a210e0240024020194101480d00200520194a0d010b20092103200721040c020b201020066a210a200721042009210303402003200d2004200d2004412010ec0841004822051b2206290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002004200441206a20051b2104200341206a2103200d41206a200d20051b220d200a4f0d02200e20044b0d000c020b0b2014200d2003410574220410e908220720046a210e0240024020194101480d00200341014e0d010b200d2103200721040c010b201520066a2106200d21030340200341606a2104200e41606a210d20062004200d200d2004412010ec08410048220a1b2205290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000200e200d200a1b210e0240200920042003200a1b2203490d00200721040c020b200641606a2106200721042007200e490d000b0b20032004200e20046b41607110e9081a201e201c20196a3602002017201f360200201d201d41086a2021201b417f736a41037410ea081a41012121202041014d0d050c010b0b201b20214184d2cc00103c000b200320214194d2cc00103c000b201f200341a4d2cc001057000b2003201241a4d2cc00104d000b201a450d050c000b0b2003201241c4d1cc001056000b41e8b2c40041fa0041f4b3c400105d000b41e8b2c40041fa0041e4b3c400105d000b2003201b41f4d1cc001057000b0240201841ffffffff0171450d002022102e0b2026450d002014102e0b20012802b403210420012802b003210320012802b8032106200120163602d40f200120003602d00f20012027410020111b220d3602cc0f200120123602c80f200120133602c40f200120103602c00f200141003602bc0f2001200320064105746a22063602b80f200120033602b40f200120043602b00f200120163602840c200120003602800c2001200d3602fc0b200120123602f80b200120133602f40b200120103602f00b200141003602ec0b200120063602e80b200120033602e40b200120043602e00b200141e00b6a211e200141b00f6a21170b200141d80f6a41106a2204201741106a221d290200220b370300200141d80f6a41186a2206201741186a221f2902002208370300200141b0036a41086a220d201741086a2220290200370300200141b0036a41106a220e200b370300200141b0036a41186a22052008370300200141b0036a41206a220a201741206a221b290200370300200141c0016a41206a2207200141a0056a41206a290200370300200141c0016a41186a2209200141a0056a41186a290200370300200141c0016a41106a2221200141a0056a41106a290200370300200141c0016a41086a2219200141a0056a41086a290200370300200120172902003703b003200120012902a0053703c001200141900d6a41206a2222200141d80f6a41206a221c290300370300200141900d6a41186a22102006290300370300200141900d6a41106a22122004290300370300200141900d6a41086a2214200141d80f6a41086a221a290300370300200120012903d80f3703900d200120033602dc0f200141013602d80f201a20012903b0033703002004200d2903003703002006200e290300370300201c200529030037030020014180106a200a29030037030020014100360288102001418c106a220320012903c00137020020014194106a20192903003702002001419c106a2021290300370200200141a4106a2009290300370200200141ac106a2007290300370200200141003602b410200141d8106a2022290300370300200141d0106a2010290300370300200141c8106a2012290300370300200141c0106a2014290300370300200141b8106a221020012903900d370300200141b4106a211c20014188106a2122200141f40f6a2106200141ec0f6a210d200141e40f6a210e20014190106a210920014198106a2121200141a0106a2119410021040340024002402004450d00202210ec064108470d0102402001280288102204450d000240200128028c1041ffffff3f71450d002004102e0b20012802a01041ffffff3f71450d00200128029c10102e0b20032017290200370200200341086a2020290200370200200341106a201d290200370200200341186a201f290200370200200341206a201b29020037020020014100360288100b20062902002108200620012903b805370200200d2902002123200d20012903b005370200200e2902002124200e20012903a805370200200141003602a00520012902dc0f210b200120012903a0053702dc0f0240200ba72204450d0020012802fc0f2105200128028010210a20012802841021072001200b37038810200920243703002021202337030020192008370300200120073602b0102001200a3602ac10200120053602a8100c020b024020012802b410450d00201c10ec064108470d01024020012802b4102203450d000240200141b8106a28020041ffffff3f71450d002003102e0b200141cc106a28020041ffffff3f71450d0020012802c810102e0b2010201e290200370200201041086a201e41086a290200370200201041106a201e41106a290200370200201041186a201e41186a290200370200201041206a201e41206a290200370200200141003602b4100b024020012802d80f450d0020012802dc0f2203450d00024020012802e00f41ffffff3f71450d002003102e0b200141f40f6a28020041ffffff3f71450d00200141f00f6a280200102e0b02402001280288102203450d000240200128028c1041ffffff3f71450d002003102e0b20012802a01041ffffff3f71450d00200128029c10102e0b20012802b4102203450d020240200141b8106a28020041ffffff3f71450d002003102e0b200141cc106a28020041ffffff3f71450d0220012802c810102e0c020b20012802881021040c000b0b200224000f0b1036000b1038000b1800200020014101472003ad4220862002ad84101a10da080b8d0101017f230041206b22062400200641086a200310dc0820004101472002ad4220862001ad84200641186a200641106a2200200628020822014101461b2903002005ad4220862004ad841019210202402001450d002000280200450d00200628020c102e0b024020032802002201450d00200341046a280200450d002001102e0b200641206a240020024101460b4401017f2000101d2201290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a2900003700002001102e0bc11d09097f027e057f017e027f017e017f047e037f230041f0006b220424000240200241086a22052802002206200120062001491b2207450d00410021080240024002400240024003402002280200210902402006410274220a450d00200a210b2009210c02400340200c28020022012802080d012001417f3602080240200141f4006a2d00000d0002402001290330220d200141386a290300220e844200520d00200142013703202001427f370310200141286a4200370300200141186a427f3703000c010b200441086a427f427f200d200e10e7082001427f370320200141286a427f370300200141186a200441086a41086a290300370300200120042903083703100b200c41046a210c20014100360208200b417c6a220b0d000c020b0b4194dacc004110200441186a41c498c90041d498c900103e000b2003280200220f2003280208221041e0006c6a211102402010450d00200f21120340024020122802382201450d00200141d8006c2113201228023041306a210c02400340200c28020022012802080d01417f210b2001417f3602080240200141f4006a2d00000d002001290330220d200141386a290300220e84500d00200441186a2012290310201241186a2903002012290300201241086a290300200d200e10ea0420012001290310220d427f200d427f20042903202004280218410146220b1b22147c220e200e200d542215200141186a2216290300220d427f200441186a41106a290300200b1b22177c2015ad7c220e200d54200e200d511b220b1b20142017845022151b3703102016200d427f200e200b1b20151b3703002001280208210b0b2001200b41016a360208200c41d8006a210c201341a87f6a2213450d020c000b0b4194dacc004110200441186a41c498c900418499c900103e000b201241e0006a22122011470d000b0b200841016a21182009200a6a2116200641027421012009417c6a210b03402001450d07200b41046a220b280200220c280208221341016a41004c0d06200c20133602082001417c6a2101200c41f4006a2d00000d000b200b2802002213280208220c41016a41004c0d042013200c36020802402001450d00200b41046a210c201341286a2903002114201341186a2903002119201329032021172013290310211a0340200c2802002201280208221341016a41004c0d05200120133602080240200141f4006a2d00000d0020012013360208200141186a290300210d2001290310210e02400240024020172001290320221b852014200141286a290300221c85844200520d00201a200e542019200d542019200d511b0d03201a200e852019200d858442005221120c010b2017201484500d01201b201c84500d024110102c2201450d072001201a3e020c2001201a4220883e0208200120193e0204200120194220883e020020044284808080c00037025420042001360250200441d0006a10bb074110102c2201450d072001201b3e020c2001201b4220883e02082001201c3e02042001201c4220883e020020044284808080c00037026420042001360260200441e0006a10bb07200441186a41086a2213200441d0006a41086a221228020036020020042004290350370318200441306a200441186a200441e0006a10bc070240200428026441ffffffff0371450d002004280260102e0b4110102c2201450d072001200e3e020c2001200e4220883e02082001200d3e02042001200d4220883e020020044284808080c00037025420042001360250200441d0006a10bb074110102c2201450d07200120173e020c200120174220883e0208200120143e0204200120144220883e020020044284808080c00037026420042001360260200441e0006a10bb072013201228020036020020042004290350370318200441c0006a200441186a200441e0006a10bc070240200428026441ffffffff0371450d002004280260102e0b2004280230211d024002402004280238221e0d0041012106410021130c010b201e4102742212417c6a41027641016a211541002113201d2101034002402001280200450d00410021060c020b200141046a210141012106201341016a21132012417c6a22120d000b201521130b2004280240210a024002400240024002402004280248221f450d00200a201f4102746a210941002112201f2115200a2101034020012802000d022015417f6a2115201241016a2112200141046a22012009470d000b0b410121124100210920060d010c030b410121092006450d010b410020096b21120c010b201e2013490d07417f201f20126b2212201e20136b22064720062012491b22120d00201d20134102746a21092015200620152006491b41016a211541002113034002402015417f6a22150d00410021120c020b200120136a2112200920136a2106201341046a2113417f20062802002206201228020022124720062012491b2212450d000b0b0240200428024441ffffffff0371450d00200a102e0b200428023441ffffffff0371450d00201d102e0b20124101470d010b200e211a200d2119201b2117201c2114200c210b0b200c41046a220c2016470d000b0b200b450d060240200b280200220c2802080d00417f2101200c417f360208200c2008360250200c41f4006a41013a000002402010450d00200c41106a41c4006a21120340200f221341e0006a210f02402013280238220b450d0020132802302101200b41d8006c210b03400240200141346a2012412010ec080d00201341186a22152903002117200c41186a2216290300210d20132903102114200c290310210e200c2903202119200141186a200c41286a2206290300370300200141106a20193703002001200d4200200d20177d200e201454ad7d2219200e20147d221b200e562019200d562019200d511b22091b201420178450220a1b3703082001200e4200201b20091b200a1b3703002016290300210d2006290300210e200c29031021142013200c290320370320201341286a200e370300201320143703102015200d3703000b200141d8006a2101200b41a87f6a220b0d000b0b200f2011470d000b200c28020821010b200c200141016a36020820182007460d0720052802002106201821080c010b0b4194dacc004110200441186a41c498c900419499c900103e000b2013201e41d4dacc001056000b1036000b41bcd9cc004118200441186a41f09cc50041f498c900103e000b41bcd9cc004118200441186a41b4ebc00041e09dc500103e000b41bcd9cc004118200441186a41e498c90041f498c900103e000b20032802002201200328020841e0006c6a2111200441286a2116024003400240024002402001220b2011460d00200b41386a220a280200220c0d0141002115200a4100360200410021090c020b200441186a41086a2201200241086a280200360200200441186a41146a200341086a2802003602002000410036020020002002290200370204200420032902003702242000410c6a2001290300370200200041146a200441286a2903003702000c030b200b2802302101200c41d8006c2113024003400240200141306a2212280200220c280208221541016a41004a0d0041bcd9cc004118200441186a41e498c90041a499c900103e000b200c201536020802400240200c41f4006a2d0000450d00200441186a200b290300200b41086a2903002001290300200141086a290300200b290310200b41186a29030010ea042004290320210d200141286a427f20162903002004280218410146220c1b370300200141206a427f200d200c1b3703000c010b200141286a4200370300200141206a42003703000b02402012280200220c2802080d00200c417f360208200141206a290300210d200141286a290300210e200c4100360208200c427f200d200c29034022147c220d200d2014542212200e200c41c8006a2215290300220d7c2012ad7c220e200d54200e200d511b22121b3703402015427f200e20121b370300200141d8006a2101201341a87f6a2213450d020c010b0b4194dacc004110200441186a41c498c90041b499c900103e000b200a280200211541002109200a41003602002015450d0041002106410021094100210c02400340024002402009450d00200c41d8006c21010340200b280230221220016a221341206a290300201341286a290300844200510d02201220066a20016a201341d80010e9081a200141d8006a21012015200c41016a220c4b0d000c040b0b200b2802302212200c41d8006c6a41206a210103402001290300200141086a29030084500d01200141d8006a21012015200c41016a220c4b0d000b410021090c030b2012200c41d8006c6a220128023022132013280200417f6a360200200c41016a210c0240200128023022132802000d00201341046a22132013280200417f6a360200200141306a280200220141046a2802000d002001102e0b200941016a2109200641a87f6a21062015200c4b0d000b0b024020090d00410021090c010b200b2802302201200c20096b41d8006c6a2001200c41d8006c6a2015200c6b41d8006c10ea081a0b200b41e0006a2101200a201520096b3602002004200b10bb042004280200220c450d000b200428020421012000428180808030370200200041086a2001ad422086200cad8437020020032802002115024020032802082201450d002015200141e0006c6a211220152101034002402001221341386a2802002201450d00200141d8006c210c201328023041306a210103402001280200220b200b280200417f6a36020002402001280200220b2802000d00200b41046a220b200b280200417f6a3602002001280200220b41046a2802000d00200b102e0b200141d8006a2101200c41a87f6a220c0d000b0b201341e0006a21010240201341346a280200220c450d00200c41d8006c450d002013280230102e0b20012012470d000b0b0240200341046a2802002201450d00200141e0006c450d002015102e0b200228020021130240200241086a2802002201450d002001410274210c2013210103402001280200220b200b280200417f6a36020002402001280200220b2802000d00200b41046a220b200b280200417f6a3602002001280200220b41046a2802000d00200b102e0b200141046a2101200c417c6a220c0d000b0b200241046a28020041ffffffff0371450d002013102e0b200441f0006a24000b930301067f230041106b2202240002400240024002400240024020014102490d0020002802042203280208220441016a41004c0d022003200436020820002802002204280208220541016a41004c0d032003280250210320042005360208200320042802504f0d00200028020021032000200028020436020002400240200141034f0d00200041046a21000c010b200041046a21042001417f6a21060340200441046a22002802002205280208220741016a41004c0d06200520073602082003280208220741016a41004c0d072005280250210520032007360208024020052003280250490d00200421000c020b2006450d0320042000280200360200200021042006417f6a22064101470d000b0b200020033602000b200241106a24000f0b2001200141d4d1cc00103c000b41bcd9cc004118200241086a41c4f8c90041d4f8c900103e000b41bcd9cc004118200241086a41c4f8c90041d4f8c900103e000b41bcd9cc004118200241086a41c4f8c90041d4f8c900103e000b41bcd9cc004118200241086a41c4f8c90041d4f8c900103e000bb51006037f017e017f017e0c7f027e23004180026b22022400200141346a2802002103200141386a2802002104200141086a29030021052001280230210620012903002107200241086a41186a200141d4006a290000370300200241086a41106a200141cc006a290000370300200241086a41086a200141c4006a2900003703002002200129003c37030820022005370330200220073703282006200441d8006c22086a21092006210102400240024002402004450d004100210a20024198016a41086a210b20024198016a41106a210c20024198016a41186a210d024002400340200b2006200a6a2201413c6a290200370300200c200141c4006a290200370300200d200141cc006a29020037030020024198016a41206a200141d4006a2802003602002002200141346a29020037039801200141306a280200220e450d02200141286a2903002105200141206a2903002107200241e0016a41186a220f200d290300370300200241e0016a41106a2210200c290300370300200241e0016a41086a2211200b29030037030020022002290398013703e00102400240200720052002290328200241286a41086a29030010e606221241ffff03710d004100210f0c010b200241c0016a41186a200f290300370300200241c0016a41106a2010290300370300200241c0016a41086a2011290300370300200220022903e0013703c0014101210f201221130b200e200e280200417f6a2210360200024020100d00200e41046a22102010280200417f6a221036020020100d00200e102e0b200f0d012008200a41d8006a220a470d000b200921010c020b200241386a41086a220e200241c0016a41086a290300370300200241386a41106a220b200241c0016a41106a290300370300200241386a41186a220c200241c0016a41186a290300370300200220022903c00122053703582002200537033802404122102c2208450d0020082002290338370100200820133b0120200841186a200c290300370100200841106a200b290300370100200841086a200e290300370100200220093602442002200141d8006a220b3602402002200336023c200220063602382002200241286a360248024002400240200441d8006c41a87f6a200a470d0041012103410121040c010b20024198016a41086a210a20024198016a41106a210c20024198016a41186a210d410121034101210403402002200b220141d8006a220b360240200141306a280200210e200141286a2903002105200141206a2903002107200a2001413c6a290200370300200c200141c4006a290200370300200d200141cc006a29020037030020024198016a41206a200141d4006a2802003602002002200141346a2902003703980102400240200e450d00200241e0016a41186a2210200d290300370300200241e0016a41106a2211200c290300370300200241e0016a41086a2212200a29030037030020022002290398013703e00102400240200720052002280248220f290300200f41086a29030010e606220641ffff03710d004100210f0c010b200241c0016a41186a2010290300370300200241c0016a41106a2011290300370300200241c0016a41086a2012290300370300200220022903e0013703c0014101210f200621130b200e200e280200417f6a2210360200024020100d00200e41046a22102010280200417f6a221036020020100d00200e102e0b200f0d012009200b470d020b200141d8006a210b0c020b200241d8006a41086a200241c0016a41086a2903002205370300200241d8006a41106a200241c0016a41106a2903002207370300200241d8006a41186a200241c0016a41186a2903002214370300200220022903c0012215370358200d2014370300200c2007370300200a20053703002002201537039801024020042003470d00200341016a22012003490d092003410174220e2001200e20014b1b22014104200141044b1bad42227e2205422088a74541017421012005a7210e0240024020030d00200241003602e0010c010b200241023602e801200220083602e0012002200341226c3602e4010b200241c0016a200e2001200241e0016a107d20022802c801210120022802c0014101460d0320022802c4012108200141226e21030b2008200441226c6a2201200229039801370100200c2903002105200d2903002107200a2903002114200120133b0120200141086a2014370100200141186a2007370100200141106a2005370100200441016a21042002280240220b20022802442209470d000b0b2009200b6b220141d8006d210e02402001450d00200e41d8006c210e200b41306a210103402001280200220a200a280200417f6a36020002402001280200220a2802000d00200a41046a220a200a280200417f6a3602002001280200220a41046a2802000d00200a102e0b200141d8006a2101200e41a87f6a220e0d000b0b0240200228023c2201450d00200141d8006c450d002002280238102e0b2004450d042000200336020420002008360200200041086a20043602002000410c6a2002290308370000200041146a200241086a41086a2903003700002000411c6a200241186a290300370000200041246a200241206a2903003700000c050b2001450d050b1036000b200141d8006a21010b024020092001460d000340200141306a220e280200220a200a280200417f6a360200200141d8006a21010240200e280200220a2802000d00200a41046a220a200a280200417f6a360200200e280200220e41046a2802000d00200e102e0b20092001470d000b0b02402003450d00200341d8006c450d002006102e0b200041003602000c010b200041003602002003450d00200341226c450d002008102e0b20024180026a24000f0b1038000bd6d20102517f0d7e230041c0076b22012400200141003602e4022001420037020c0240024002400240200041086a220228020022030d002001410036020c0c010b200141f8016a41c0006a2104200141c8066a41c0006a2105200141a8036a41c0006a2106200141c8066a41206a2107200141386a41206a2108200141186a41106a2109200141186a41186a210a200141c8066a41d8006a210b200141c8066a41d0006a210c200141c8066a41c8006a210d4100210e03400240024002402002280200220f200e4d0d00200141186a41086a22102000280200200e412c6c22116a220f41146a2900003703002009200f411c6a290000370300200a200f41246a2900003703002001200f29000c370318200f280208221241ffffff3f712012470d0620124105742213417f4c0d06200f280200210f0240024020130d00410121140c010b2013102c2214450d060b0240024002402013410576221520124f0d00201341047622162012201620124b1b22164104201641044b1b221641ffffff3f712016462117201641057421160240024020130d00200141003602c8060c010b200141013602d006200120133602cc06200120143602c8060b200141c8056a20162017200141c8066a107d20012802d005211320012802c8054101460d0120012802cc052114201341057621150b200f200f201241306c22136a460d03201341506a41306e21182014211203402012200f290000370000201241186a200f41186a290000370000201241106a200f41106a290000370000201241086a200f41086a290000370000201241206a2112200f41306a210f201341506a22130d000b201841016a22194102490d032019417f6a20196c410176220f41ffffff1f71200f470d08200f410674220f417f4c0d084101211a4101211b0240200f450d00200f102c221b450d080b201441206a211c200f410676211d410021134100211e0c010b20130d060c070b03400240201e220f41016a221e20194f0d0002400240200f20194f0d00201a201a2019201a20194b1b6b211f2014200f4105746a2116201e2019201e20194b1b2120201341017421212013410674211720182122201c21120340200141a8066a41186a220f201641186a290000370300200141a8066a41106a2223201641106a290000370300200141a8066a41086a2224201641086a290000370300200120162900003703a806201f450d02200141c8066a41186a2225200f290300370300200141c8066a41106a22262023290300370300200141c8066a41086a22232024290300370300200120012903a8063703c80620072012290000370000200741086a201241086a290000370000200741106a201241106a290000370000200741186a201241186a290000370000024002402013201d470d00201341016a220f2013490d0d2021200f2021200f4b1b220f4104200f41044b1b220f41ffffff1f71200f462124200f410674210f0240024020130d00200141003602c8050c010b200141013602d005200120173602cc052001201b3602c8050b20014188046a200f2024200141c8056a107d200128029004210f2001280288044101460d01200128028c04211b200f410676211d0b201b20176a220f20012903c806370000200f41386a200141c8066a41386a290300370000200f41306a200141c8066a41306a290300370000200f41286a200141c8066a41286a290300370000200f41206a2007290300370000200f41186a2025290300370000200f41106a2026290300370000200f41086a2023290300370000201f41016a211f201241206a2112202141026a2121201741c0006a2117201341016a21132022417f6a2222450d040c010b0b200f450d0a0c090b200f201941b8aac700103c000b2020201941c8aac700103c000b2018417f6a2118201a41016a211a201c41206a211c201e2019470d000b2013450d02201b20134106746a2127201b21230340200141386a41386a202341386a290000370300200141386a41306a202341306a290000370300200141386a41286a202341286a2900003703002008202341206a290000370300200141386a41186a202341186a220f290000370300200141386a41106a202341106a2212290000370300200141386a41086a202341086a221329000037030020012023290000370338200141f8006a41186a2216200f290000370300200141f8006a41106a220f2012290000370300200141f8006a41086a221220132900003703002001202329000037037820014198016a41186a200841186a221329000037030020014198016a41106a200841106a221729000037030020014198016a41086a200841086a221f2900003703002001200829000037039801200141c8066a41186a22252016290300370300200141c8066a41106a2226200f290300370300200141c8066a41086a2219201229030037030020072008290000370000200741086a201f290000370000200741106a2017290000370000200741186a2013290000370000200120012903783703c80602400240200128020c221f450d00200128020821210c010b41a808102c221f450d0741002121201f41003b0106201f41003602002001201f36020c200141003602080b202341c0006a21230340201f41286a210f201f2f010621164100211203400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020162012460d0002400240200141c8066a200f41606a412010ec082213450d002013417f4c0d010c270b2007200f412010ec082213450d02201341004e0d260b201221160b2021450d012021417f6a2121201f20164102746a41a8086a280200211f0c260b2002280200221e200e4d0d022000280200222220116a220f28020841306c2216450d22201f20124105746a41c8056a2124200f280200210f41002113034002400240200f200141f8006a412010ec080d00410121170c010b200f20014198016a412010ec084521170b200f41306a210f201720136a2113201641506a22160d000b20134102470d22201e412c6c210f202241546a21130340200f450d23200f41546a210f2013412c6a21132022410c6a21162022412c6a212220162024412010ec080d000b0240201341086a280200220f450d0020132802002217200f41306c22226a2116410021130340201720136a220f200141f8006a412010ec08450d03200f20014198016a412010ec08450d032022201341306a2213470d000b0b4108211e4100211a0c0f0b200141b8016a41386a220f200141c8066a41386a2228290300370300200141b8016a41306a2212200141c8066a41306a2229290300370300200141b8016a41286a2213200141c8066a41286a222a290300370300200141b8016a41206a22172007290300370300200141b8016a41186a22212025290300370300200141b8016a41106a22222026290300370300200141b8016a41086a22242019290300370300200120012903c8063703b801200141a8036a41386a222b200f290300370300200141a8036a41306a222c2012290300370300200141a8036a41286a222d2013290300370300200141a8036a41206a222e2017290300370300200141a8036a41186a222f2021290300370300200141a8036a41106a22302022290300370300200141a8036a41086a22312024290300370300200120012903b8013703a803200141a8066a41186a2232200a290300370300200141a8066a41106a22332009290300370300200141a8066a41086a22342010290300370300200120012903183703a8060240201f2f0106220f410a4b0d00200141c8056a41186a22172032290300370300200141c8056a41106a22212033290300370300200141c8056a41086a22222034290300370300200120012903a8063703c8052028202b2903003703002029202c290300370300202a202d2903003703002007202e2903003703002025202f2903003703002026203029030037030020192031290300370300200120012903a8033703c806201f41086a2113200f41016a21120240201641016a2224200f4b221e0d00201320244106746a201320164106746a20122016417f736a41067410ea081a0b201320164106746a220f20012903c806370000200f41386a2028290300370000200f41306a2029290300370000200f41286a202a290300370000200f41206a2007290300370000200f41186a2025290300370000200f41106a2026290300370000200f41086a2019290300370000200141e8026a41186a22132017290300370300200141e8026a41106a22172021290300370300200141e8026a41086a22212022290300370300200120012903c8053703e802201f41c8056a210f0240201e0d00200f20244105746a200f20164105746a20122016417f736a41057410ea081a0b200f20164105746a220f20012903e802370000200f41186a2013290300370000200f41106a2017290300370000200f41086a2021290300370000201f20123b01060c210b410021214104211302400240201641054f0d00201621170c010b4105211341052117024002402016417b6a0e020201000b201641796a211741012121410621130c010b41002117410121210b41a808102c2212450d2b201241003b0106201241003602002012201f2f010622222013417f736a22163b0106200141c8056a41386a2235201f41086a222420134106746a220f41386a290000370300200141c8056a41306a2236200f41306a290000370300200141c8056a41286a2237200f41286a290000370300200141c8056a41206a2238200f41206a290000370300200141c8056a41186a2239200f41186a290000370300200141c8056a41106a223a200f41106a290000370300200141c8056a41086a223b200f41086a2900003703002001200f2900003703c805200141e8026a41186a223c201f41c8056a221e20134105746a220f41186a290000370300200141e8026a41106a223d200f41106a290000370300200141e8026a41086a223e200f41086a2900003703002001200f2900003703e8022016410c4f0d022022201341016a220f6b2016470d03201241086a2024200f4106746a201641067410e9081a201241c8056a201e200f4105746a201641057410e9081a201f20133b01062028203529030037030020292036290300370300202a203729030037030020072038290300370300202520392903003703002026203a2903003703002019203b290300370300200520012903e802370000200541086a223f203e290300370000200541106a2240203d290300370000200541186a2241203c290300370000200120012903c8053703c806200141c8056a200141c8066a41e00010e9081a200141e8046a41186a22422032290300370300200141e8046a41106a22432033290300370300200141e8046a41086a22442034290300370300200120012903a8063703e8042012201f20211b22132f0106210f2028202b2903003703002029202c290300370300202a202d2903003703002007202e2903003703002025202f2903003703002026203029030037030020192031290300370300200120012903a8033703c806201341086a2121200f41016a21160240201741016a2222200f4b22240d00202120224106746a202120174106746a20162017417f736a41067410ea081a0b202120174106746a220f20012903c806370000200f41386a2028290300370000200f41306a2029290300370000200f41286a202a290300370000200f41206a2007290300370000200f41186a2025290300370000200f41106a2026290300370000200f41086a2019290300370000203c2042290300370300203d2043290300370300203e2044290300370300200120012903e8043703e802201341c8056a210f024020240d00200f20224105746a200f20174105746a20162017417f736a41057410ea081a0b200f20174105746a220f20012903e802370000200f41186a203c290300370000200f41106a203d290300370000200f41086a203e290300370000201320163b010620014188046a200141c8056a41e00010e9081a200141a8036a20014188046a41e00010e9081a024002400240201f28020022210d00410021450c010b41002145201221460340201f2f01042117200141e8046a41386a2247202b290300370300200141e8046a41306a2248202c290300370300200141e8046a41286a2249202d290300370300200141e8046a41206a224a202e2903003703002042202f2903003703002043203029030037030020442031290300370300200120012903a8033703e804200141a8056a41186a224b200641186a290000370300200141a8056a41106a224c200641106a290000370300200141a8056a41086a224d200641086a290000370300200120062900003703a8054101450d0720212f0106224e410b490d024100212041042116024020174105490d0020172116024002402017417b6a0e020201000b201741796a211741012120410621160c010b4100211741012120410521160b41d808102c2212450d2e201241003b010620124100360200201220212f0106224f2016417f736a22133b010620014188046a41386a221f202141086a225020164106746a220f41386a29000037030020014188046a41306a2222200f41306a29000037030020014188046a41286a2224200f41286a29000037030020014188046a41206a221e200f41206a29000037030020014188046a41186a221a200f41186a29000037030020014188046a41106a2218200f41106a29000037030020014188046a41086a221c200f41086a2900003703002001200f29000037038804203c202141c8056a225120164105746a220f41186a290000370300203d200f41106a290000370300203e200f41086a2900003703002001200f2900003703e8022013410c4f0d08204f201641016a220f6b2013470d09201241086a2050200f4106746a201341067410e9081a201241c8056a2051200f4105746a201341057410e9081a202120163b01062028201f29030037030020292022290300370300202a20242903003703002007201e2903003703002025201a290300370300202620182903003703002019201c290300370300200520012903e802370000203f203e2903003700002040203d2903003700002041203c29030037000020012001290388043703c80620122f0106221341016a214f2013410c4f0d0a204e20166b2216204f470d0b204541016a2145201241a8086a2021200f4102746a41a8086a201641027410e9081a4100210f024003402012200f4102746a41a8086a2802002216200f3b010420162012360200200f200f20134922166a220f20134b0d0120160d000b0b200141c8056a200141c8066a41e00010e9081a201f20472903003703002022204829030037030020242049290300370300201e204a290300370300201a204229030037030020182043290300370300201c2044290300370300200120012903e804370388042032204b2903003703002033204c2903003703002034204d290300370300200120012903a8053703a8062012202120201b22162f010621202028201f29030037030020292022290300370300202a20242903003703002007201e2903003703002025201a290300370300202620182903003703002019201c29030037030020012001290388043703c806201641086a210f202041016a211f0240201741016a221320204b22220d00200f20134106746a200f20174106746a2017417f73201f6a41067410ea081a0b200f20174106746a220f20012903c806370000200f41386a2028290300370000200f41306a2029290300370000200f41286a202a290300370000200f41206a2007290300370000200f41186a2025290300370000200f41106a2026290300370000200f41086a201929030037000020014188036a41186a2224203229030037030020014188036a41106a221e203329030037030020014188036a41086a221a2034290300370300200120012903a80637038803201641c8056a210f024020220d00200f20134105746a200f20174105746a2017417f73201f6a41057410ea081a0b200f20174105746a220f200129038803370000200f41186a2024290300370000200f41106a201e290300370000200f41086a201a290300370000201641a8086a210f0240201741026a2224202041026a22224f0d00200f20244102746a200f20134102746a2013417f7320226a41027410ea081a0b200f20134102746a20463602002016201f3b01060240201320224f0d00201620174102746a41ac086a210f0340200f2802002213201741016a22173b010420132016360200200f41046a210f201f2017470d000b0b200141a8036a200141c8056a41e00010e9081a2021211f2021280200220f212120122146200f0d000b0b200141f8016a200141a8036a41e00010e9081a203b200141f8016a41086a290200370300203a200141f8016a41106a2902003703002039200141f8016a41186a2902003703002038200141f8016a41206a2902003703002037200141f8016a41286a2902003703002036200141f8016a41306a2902003703002035200141f8016a41386a2902003703002034200441086a2902003703002033200441106a2902003703002032200441186a290200370300200120012902f8013703c805200120042902003703a806200128020c2213450d0a2001280208211641d808102c220f450d2c200f20133602a808200f41003b0106200f4100360200201341003b01042013200f3602002001200f36020c2001201641016a3602082028203529030037030020292036290300370300202a203729030037030020072038290300370300202520392903003703002026203a2903003703002019203b290300370300200120012903c8053703c80620014188046a41186a2217203229030037030020014188046a41106a221f203329030037030020014188046a41086a22212034290300370300200120012903a8063703880420162045470d0b200f2f01062216410b4f0d0c200f20164106746a221341086a20012903c806370000201341106a2019290300370000201341186a2026290300370000201341206a2025290300370000201341286a2007290300370000201341306a202a290300370000201341386a2029290300370000201341c0006a2028290300370000200f20164105746a221341c8056a200129038804370000201341d0056a2021290300370000201341d8056a201f290300370000201341e0056a2017290300370000200f201641016a22133b0106200f20134102746a41a8086a2012360200201220133b01042012200f3602002001200128021041016a36021020121a0c220b20014188046a41386a220f204729030037030020014188046a41306a2212204829030037030020014188046a41286a2216204929030037030020014188046a41206a221f204a29030037030020014188046a41186a2222204229030037030020014188046a41106a2224204329030037030020014188046a41086a221e2044290300370300200120012903e804370388042032204b2903003703002033204c2903003703002034204d290300370300200120012903a8053703a80620212f010621132028200f29030037030020292012290300370300202a20162903003703002007201f29030037030020252022290300370300202620242903003703002019201e29030037030020012001290388043703c806201741016a2112202141086a210f201341016a21160240201720134f221f0d00200f20124106746a200f20174106746a2017417f7320166a41067410ea081a0b200f20174106746a220f20012903c806370000200f41386a2028290300370000200f41306a2029290300370000200f41286a202a290300370000200f41206a2007290300370000200f41186a2025290300370000200f41106a2026290300370000200f41086a201929030037000020014188036a41186a2222203229030037030020014188036a41106a2224203329030037030020014188036a41086a22252034290300370300200120012903a80637038803202141c8056a210f0240201f0d00200f20124105746a200f20174105746a2017417f7320166a41057410ea081a0b200f20174105746a220f200129038803370000200f41186a2022290300370000200f41106a2024290300370000200f41086a2025290300370000202141a8086a210f201341026a21130240201f0d002017410274200f6a41086a200f20124102746a2012417f7320136a41027410ea081a0b200f20124102746a2046360200202120163b0106201220134f0d2020212012417f6a220f4102746a41ac086a2112034020122802002213200f41016a220f3b010420132021360200201241046a21122016200f470d000c210b0b2019200f41086a2903003703002026200f41106a2903003703002025200f41186a2903003703002001200f2903003703c806200f41286a2903002152200f41206a29030021534130102c221e450d2a201e2053370320201e20012903c806370300201e41286a2052370300201e41186a2025290300370300201e41106a2026290300370300201e41086a2019290300370300200120163602cc052001200f41306a220f3602c805200120014198016a3602d4052001200141f8006a3602d005202241506a2013460d0b4101211a200141f8006a211720014198016a21224101211803402001200f41306a22133602c8050240200f2017412010ec08450d00200f2022412010ec08450d002013210f20162013470d010c0e0b200f41286a2903002152200f41206a29030021532025200f41186a2903003703002026200f41106a2903003703002019200f41086a2903003703002001200f2903003703c806024002402018201a470d00201a41016a220f201a490d2e201a4101742213200f2013200f4b1b220f4104200f41044b1bad42307e2254422088a745410374210f2054a7211302400240201a0d0020014100360288040c010b20014108360290042001201e360288042001201a41306c36028c040b200141a8036a2013200f20014188046a107d20012802b003210f20012802a8034101460d0120012802ac03211e200f41306e211a0b201e201841306c6a220f20012903c806370300202629030021542025290300215520192903002156200f2053370320200f41086a2056370300200f41286a2052370300200f41186a2055370300200f41106a2054370300201841016a211820012802c805220f20012802cc052216460d0e20012802d405212220012802d00521170c010b0b200f450d2b0c2a0b200e201e41d8aac700103c000b2016410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b2013410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b204f410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b4101211a0c010b201841014d0d0020184102470d0b41e000102c2218450d1d2002280200220f200e4d0d010240200028020020116a220f28020841306c22170d00410221200c100b200f280200210f4102212041002113024002400240034002400240200f200141f8006a412010ec08450d00200f20014198016a412010ec080d010b200141a8066a41186a2216200f41186a290300370300200141a8066a41106a2222200f41106a290300370300200141a8066a41086a221c200f41086a2903003703002001200f2903003703a806200f41286a2903002152200f41206a2903002153024020132020470d00201341016a22202013490d24201341017422282020202820204b1b22204104202041044b1bad42307e2254422088a74541037421202054a721280240024020130d00200141003602c8060c010b200141083602d006200120183602c8062001201341306c3602cc060b200141c8056a20282020200141c8066a107d20012802d005212020012802c8054101460d0320012802cc052118202041306e21200b201c2903002154202229030021552016290300215620012903a80621572018201341306c6a2216205337032020162057370300201641286a2052370300201641186a2056370300201641106a2055370300201641086a2054370300201341016a21130b200f41306a210f201741506a22170d000b20134102470d120240201e2018412010ec08450d00200141c8066a41286a220f201e41286a22132903003703002007201e41206a22162903003703002025201e41186a22172903003703002026201e41106a22222903003703002019201e41086a221c2903003703002001201e2903003703c8062013201e41d8006a22282903003703002016201e41d0006a22132903003703002017201e41c8006a22162903003703002022201e41c0006a2217290300370300201c201e41386a2222290300370300201e201e2903303703002028200f29030037030020132007290300370300201620252903003703002017202629030037030020222019290300370300201e20012903c8063703300b2001427f3703d0052001427f3703c805200141003602a80641c00141e000201e1b41e0004100201e1b20181b21132018201e72221c0d014108210f0c020b2020450d200c1f0b2013102c220f450d1e0b200141003602f0042001200f3602e8042001201341306e22173602ec0402400240024020180d0041022113201e0d01410021220c020b41044102201e1b21130b41002116410021220240201720134f0d00201741017422222013202220134b1b22134104201341044b1b41306c211302400240201c0d00200141003602c8060c010b200141083602d0062001200f3602c8062001201741306c3602cc060b20014188046a20134108200141c8066a107d20012802900421132001280288044101460d052001200128028c04220f3602e8042001201341306e3602ec0420012802f00421220b200f202241306c6a210f02402018450d00201841e0006a221c2018460d00200141c8056a41086a290300215420012903c805215841002116201821130340201341306a21170240201341206a2903002253205856201341286a290300225220545620522054511b0d00200120533703c805200120163602a806200120523703d00520532158205221540b200f2013290300370300201341086a2903002155201341106a2903002156201341186a2903002157200f41286a2052370300200f41206a2053370300200f41186a2057370300200f41106a2056370300200f41086a2055370300200f41306a210f201641016a211620172113201c2017470d000b202220166a21220b201e450d00201e41e0006a221c201e460d00200141c8056a41086a290300215420012903c8052158201e21130340201341306a21170240201341206a2903002253205856201341286a290300225220545620522054511b0d00200120533703c805200120163602a806200120523703d00520532158205221540b200f2013290300370300201341086a2903002155201341106a2903002156201341186a2903002157200f41286a2052370300200f41206a2053370300200f41186a2057370300200f41106a2056370300200f41086a2055370300200f41306a210f201641016a2116202241016a212220172113201c2017470d000b0b200120223602f00420012802a806210f200141003602c80620014188046a41104104200141c8066a107d200128029004211302402001280288044101470d002013450d1f0c1e0b200128028c042232200f360200201341027621330240024020012802a806220f41014b0d00200141003602c80620014188046a41104104200141c8066a107d20012802900421132001280288044101460d06200128028c0422294101200f6b360200024020334101470d0020014284808080c0003702cc06200120323602c80620014188046a41104104200141c8066a107d20012802900421162001280288044101460d08200128028c042132201641027621330b20324103200f6b36020420012802a806210f024002402013410276222a4101470d0020014284808080c0003702cc06200120293602c80620014188046a41104104200141c8066a107d20012802900421132001280288044101460d01200128028c0421292013410276212a0b2029200f41026a3602040c020b2013450d200c1f0b200141003602c80620014188046a41104104200141c8066a107d20012802900421132001280288044101460d07200128028c042229200f410171410373220f360200024020334101470d0020014284808080c0003702cc06200120323602c80620014188046a41104104200141c8066a107d20012802900421162001280288044101460d09200128028c042132201641027621330b2032200f417e6a36020420012802a806210f02402013410276222a4101470d0020014284808080c0003702cc06200120293602c80620014188046a41104104200141c8066a107d20012802900421132001280288044101460d0a200128028c0421292013410276212a0b2029200f417e6a3602040b4104102c220f450d1d200142013702fc012001200f3602f801024002402029280200220f41014b0d002025200a2903003703002026200929030037030020192010290300370300200120012903183703c8060c010b2025202441186a2900003703002026202441106a2900003703002019202441086a290000370300200120242900003703c8060b024020022802002213450d002000280200221c2013412c6c6a212803400240201c410c6a200141c8066a412010ec080d00201c2802082216450d00201c2802002113201641306c21174100212220012802f004211603402016200f4d0d060240201320012802e804200f41306c6a412010ec08450d00201341306a2113202241016a2122201741506a22170d010c020b0b201341206a2216427f2016290300225220012903c8057c225320532052542216201341286a22132903002252200141c8056a41086a2903007c2016ad7c225320525420532052511b22161b3703002013427f205320161b3703000b201c412c6a221c2028470d000b0b024002402029280204220f4102490d002025202441186a2900003703002026202441106a2900003703002019202441086a290000370300200120242900003703c8060c010b2025200a2903003703002026200929030037030020192010290300370300200120012903183703c8060b024020022802002213450d002000280200221c2013412c6c6a212803400240201c410c6a200141c8066a412010ec080d00201c2802082216450d00201c2802002113201641306c21174100212220012802f004211603402016200f4d0d060240201320012802e804200f41306c6a412010ec08450d00201341306a2113202241016a2122201741506a22170d010c020b0b201341206a2216427f2016290300225220012903c8057c225320532052542216201341286a22132903002252200141c8056a41086a2903007c2016ad7c225320525420532052511b22161b3703002013427f205320161b3703000b201c412c6a221c2028470d000b0b202a0d090c0a0b20242001290318370000202441186a200a290300370000202441106a2009290300370000202441086a20102903003700000c0f0b200e200f41a4abc700103c000b200f201641b4abc700103c000b2013450d1a0c190b2013450d190c180b2016450d180c170b2013450d170c160b2016450d160c150b2013450d150c140b2029102e0b024002402032280200220f41014b0d002025200a2903003703002026200929030037030020192010290300370300200120012903183703c8060c010b2025202441186a2900003703002026202441106a2900003703002019202441086a290000370300200120242900003703c8060b024002400240024020022802002213450d002000280200221c2013412c6c6a212803400240201c410c6a200141c8066a412010ec080d00201c41086a222a2802002229450d00201c2802002113202941306c41506a21174100212220012802f004211603402016200f4d0d040240201320012802e804200f41306c6a412010ec08450d00201341306a2113202241016a2122201741506a22174150470d010c020b0b0240201341206a2216290300225320012903c805225556201341286a22222903002252200141c8056a41086a29030022545620522054511b0d002013201341306a201710ea081a202a2029417f6a3602000240200128028002221320012802fc01470d00201341016a22162013490d1b201341017422172016201720164b1b22164104201641044b1b221641ffffffff03712016464102742117201641027421160240024020130d0020014100360288040c010b2001410436029004200120012802f801360288042001201341027436028c040b200141a8036a2016201720014188046a107d20012802b003211320012802a8034101460d0b200120012802ac033602f801200120134102763602fc0120012802800221130b20012802f80120134102746a200f360200200120012802e40241016a3602e402200120012802800241016a360280020c010b20224200205220547d2053205554ad7d2254205320557d2255205356205420525620542052511b22131b37030020164200205520131b3703000b201c412c6a221c2028470d000b0b024002402032280204220f4102490d002025202441186a2900003703002026202441106a2900003703002019202441086a290000370300200120242900003703c8060c010b2025200a2903003703002026200929030037030020192010290300370300200120012903183703c8060b024020022802002213450d00200028020022262013412c6c6a2119034002402026410c6a200141c8066a412010ec080d00202641086a2228280200221c450d0020262802002113201c41306c41506a21174100212220012802f004211603402016200f4d0d040240201320012802e804200f41306c6a412010ec08450d00201341306a2113202241016a2122201741506a22174150470d010c020b0b0240201341206a2216290300225320012903c805225556201341286a22222903002252200141c8056a41086a29030022545620522054511b0d002013201341306a201710ea081a2028201c417f6a3602000240200128028002221320012802fc01470d00201341016a22162013490d1b201341017422172016201720164b1b22164104201641044b1b221641ffffffff0371201646410274211720164102742116024002402013450d002001410436029004200120012802f801360288042001201341027436028c040c010b20014100360288040b200141a8036a2016201720014188046a107d20012802b003211320012802a8034101460d0b200120012802ac033602f801200120134102763602fc0120012802800221130b20012802f80120134102746a200f360200200120012802e40241016a3602e402200120012802800241016a360280020c010b20224200205220547d2053205554ad7d2254205320557d2255205356205420525620542052511b22131b37030020164200205520131b3703000b2026412c6a22262019470d000b0b20330d010c020b200f201641c4abc700103c000b2032102e0b20012802f8012222417c6a2116200128028002410274220f211302400340024020130d00410021160c020b2013417c6a2113201641046a221628020041014b0d000b0b20012802fc012126202221130240024002400340200f450d01200f417c6a210f20132802002117201341046a211320174102490d000b0240202641ffffffff0371450d002022102e0b20160d0120242001290318370000202441186a200a290300370000202441106a2009290300370000202441086a20102903003700000c020b0240202641ffffffff0371450d002022102e0b20160d0141d4abc70041294180acc7001039000b200141003a00a803024002402021450d002021417f6a2113201f20124102746a41a8086a280200210f02400340200f2f010621122013450d012013417f6a2113200f20124102746a41a8086a280200210f0c000b0b200141003602880420012012417f6a410020121b360290042001200f410020121b36028c04200141c8066a20014188046a200141a8036a10ce0620252903002152200141c8066a41386a22172903002153200141c8066a41306a221f2903002154200141c8066a41286a22212903002155200b2903002156200c2903002157200d290300215820012903d806215920012903d006215a20012903c806215b20012903e806215c200129038807215d20012802a80721160240024020012802b007221320012802ac0722122f01064f0d002012210f0c010b034002402012280200220f0d004100210f0c020b201641016a211620122f01042113200f21122013200f2f01064f0d000b0b200f20134106746a221241206a2222290000215e20222052370000201241186a2222290000215220222059370000201241106a222229000021592022205a370000201241086a2222290000215a2022205b370000201241c0006a2222290000215b20222053370000201241386a2222290000215320222054370000201241306a2222290000215420222055370000201241286a221229000021552012205c370000200f20134105746a221241d8056a2222290000215c20222057370000201241d0056a2222290000215720222058370000201241c8056a222229000021582022205d370000201241e0056a2212290000215d20122056370000201341016a211202402016450d00200f20124102746a41a8086a280200210f02402016417f6a2212450d000340200f2802a808210f2012417f6a22120d000b0b410021120b200d205737030020212054370300200c205c370300201f2053370300200b205d3703002017205b3703002025205e3703002001205837038807200120553703e8062001205a3703c806200120123602b0072001200f3602ac07200141003602a807200120593703d006200120523703d8060c010b20012012360290042001201f36028c042001410036028804200141c8066a20014188046a200141a8036a10ce060b20012001280210417f6a36021020012d00a803450d00200128020c220f450d0220012802082212450d032001200f2802a808221336020c20012012417f6a36020820134100360200200f102e0b024020012802ec04220f450d00200f41306c450d0020012802e804102e0b2020450d00202041306c450d002018102e0b201a450d07201a41306c0d050c070b41e8aac700412b4190acc7001039000b41b39bc700412141d49bc7001039000b2013450d0f0c0e0b2020450d00202041306c450d002018102e0b201a450d02201a41306c450d020b201e102e0c010b2001200128021041016a3602100b20232027470d030c060b201241016a2112200f41c0006a210f0c000b0b0b0b200e200f41a8aac700103c000b4100211d4101211b0b0240201d41ffffff1f71450d00201b102e0b200e41016a210e02402015450d002014102e0b200e2003470d000b200128020c210f2001410036020c200f450d00024020012802082212450d002012417f6a21120340200f2802a808210f2012450d012012417f6a21120c000b0b024020012802102216450d00200141c8066a41c0006a21174100210703402016417f6a2116410121120240024003402007200f2f0106490d010240200f28020022130d00200f102e4100210f0c030b200f2f01042107200f102e2012417f6a21122013210f0c000b0b20014188046a41386a221f200f20074106746a221341c0006a29000037030020014188046a41306a2221201341386a29000037030020014188046a41286a2222201341306a29000037030020014188046a41206a2223201341286a29000037030020014188046a41186a2224201341206a29000037030020014188046a41106a2225201341186a29000037030020014188046a41086a2226201341106a2900003703002001201341086a2900003703880420014188036a41186a221b200f20074105746a221341e0056a29000037030020014188036a41106a221d201341d8056a29000037030020014188036a41086a2219201341d0056a2900003703002001201341c8056a29000037038803200741016a2107024020124101460d00200f20074102746a41a8086a280200210f02402012450d000340201241016a220720124f2113200f2802a808210f2007211220130d000b0b410021070b2017200129038803370000200141c8066a41386a201f290300370300200141c8066a41306a2021290300370300200141c8066a41286a2022290300370300200141c8066a41206a2023290300370300200141c8066a41186a2024290300370300200141c8066a41106a2025290300370300200141c8066a41086a2026290300370300201741086a2019290300370000201741106a201d290300370000201741186a201b29030037000020012001290388043703c806200141c8056a200141c8066a41e00010e9081a0b20160d000b0b0340200f2802002112200f102e2012210f20120d000b0b200141003602d8022001420037029c0102400240200041086a222828020022020d002001410036029c010c010b20282802002112200141c8066a410472211d200141386a41106a2142200141386a41186a2143200141a8036a41206a213d4100211602400340200120163602dc02201220164d0d01201641016a2114200141386a41086a22442000280200220f2016412c6c6a220741146a29000037030020422007411c6a2900003703002043200741246a2900003703002001200729000c3703384100212003400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200f2016412c6c6a220f28020820204b0d002014211620142002470d2c200128029c01210f2001410036029c01200f450d2e2001280298012212450d012012417f6a21120340200f2802a003210f2012450d022012417f6a21120c000b0b200141a8066a41186a200f280200202041306c6a220f41186a2207290300370300200141a8066a41106a200f41106a2213290300370300200141a8066a41086a200f41086a22172903003703002001200f2903003703a806200141e8046a41186a221f2043290300370300200141e8046a41106a22212042290300370300200141e8046a41086a22222044290300370300200120012903383703e804200141003a008805200141f8016a41186a22122007290000370300200141f8016a41106a22072013290000370300200141f8016a41086a221320172900003703002001200f2900003703f801200141013a00980220014198016a200141e8046a109f02211720014198016a200141f8016a109f022125200141c8056a41186a221a2043290300370300200141c8056a41106a22182042290300370300200141c8056a41086a221c2044290300370300200120012903383703c805200141003a00e805200141c8066a20014198016a200141c8056a10a302203d20012d0088053a0000200141a8036a41186a222a201f290300370300200141a8036a41106a22322021290300370300200141a8036a41086a22332022290300370300200120012903e8043703a8030240024020012802c8064101460d00200141c8056a41306a201d41306a280200360200200141c8056a41286a201d41286a290200370300200141c8056a41206a201d41206a290200370300201a201d41186a2902003703002018201d41106a290200370300201c201d41086a2902003703002001201d2902003703c80520014188046a41086a221f203329030037030020014188046a41106a2221203229030037030020014188046a41186a2222202a29030037030020014188046a41206a2223203d2d00003a0000200120012903a803370388044134102c220f450d30200f4200370208200f428180808010370200200f200129038804370210200f20012f00b8013b0031200f41186a201f290300370200200f41206a2021290300370200200f41286a2022290300370200200f41306a20232d00003a0000200f41336a200141b8016a41026a2d00003a0000200141c8056a200f10ed06210f0c010b20012802d00620012802d4064102746a41046a210f0b200f280200222428020041016a220f41014d0d1e2024200f360200201a201229030037030020182007290300370300201c2013290300370300200120012903f8013703c805200141013a00e805200141c8066a20014198016a200141c8056a10a302203d200141f8016a41206a2d00003a0000202a20122903003703002032200729030037030020332013290300370300200120012903f8013703a8030240024020012802c8064101460d00200141c8056a41306a201d41306a280200360200200141c8056a41286a201d41286a290200370300200141c8056a41206a201d41206a290200370300201a201d41186a2902003703002018201d41106a290200370300201c201d41086a2902003703002001201d2902003703c80520014188046a41086a2212203329030037030020014188046a41106a2207203229030037030020014188046a41186a2213202a29030037030020014188046a41206a221f203d2d00003a0000200120012903a803370388044134102c220f450d30200f4200370208200f428180808010370200200f200129038804370210200f20012f00b8013b0031200f41186a2012290300370200200f41206a2007290300370200200f41286a2013290300370200200f41306a201f2d00003a0000200f41336a200141b8016a41026a2d00003a0000200141c8056a200f10ed06210f0c010b20012802d00620012802d4064102746a41046a210f0b200f2802002223280200221241016a220f41014d0d1e2023200f360200024002400240024002400240024020170d0020250d01202428020041016a220f41014d0d252024200f36020020232802080d0a2023417f3602080240202328020c220f450d00200f200f280200417f6a360200202328020c220f2802000d00200f410c6a10cd04202328020c41046a220f200f280200417f6a360200202328020c220f41046a2802000d00200f102e0b2023202436020c2023202328020841016a3602080c2f0b2025450d01200141c8066a202410ee0620012802d406214720012802d006214c20012802cc06213c20012802c806210e200141c8066a202310ee0620012802d406214620012802d006214d20012802cc06213e0240200e20012802c8062245460d00200e28020841016a220f41004c0d08200e200f3602082045280208220f41016a221241004c0d0920452012360208200e41106a204541106a412010ec080d03200e2d003020452d0030470d032045200f360208200e200e280208417f6a3602080b203e2046410274221e6a2122203c204741027422196a211220190d03410021170c040b2012417e4f0d232023201241026a36020020242802080d092024417f3602080240202428020c220f450d00200f200f280200417f6a360200202428020c220f2802000d00200f410c6a10cd04202428020c41046a220f200f280200417f6a360200202428020c220f41046a2802000d00200f102e0b2024202336020c2024202428020841016a3602080c2d0b202428020041016a220f41014d0d222024200f36020020232802080d092023417f3602080240202328020c220f450d00200f200f280200417f6a360200202328020c220f2802000d00200f410c6a10cd04202328020c41046a220f200f280200417f6a360200202328020c220f41046a2802000d00200f102e0b2023202436020c2023202328020841016a3602080c2c0b2045200f360208200e200e280208417f6a360208204dad422086203ead842252204cad422086203cad842253204720464b220f1b2254a72116024020462047200f1b22074102742212450d00201620126a21254101211341002121201621172016211f0340024020214101710d00202520176b4102762013417f6a4d0d02201720134102746a21170b20172025460d012017450d01201f280200222128020041016a221341014d0d2320212013360200201728020022132802080d0b201f41046a211f2013417f3602080240201328020c2222450d0020222022280200417f6a360200201328020c22222802000d002022410c6a10cd04201328020c41046a22222022280200417f6a360200201328020c222241046a2802000d002022102e0b201741046a21172013202136020c410121212013201328020841016a360208410021132025201f470d000b0b2007450d0a20472046200f1b221f0d024100410041e0acc700103c000b204641ffffffff0371212541002117202221132012211603400240203e2013470d00202521170c020b024002402016417c6a2216280200220f2013417c6a22132802002207460d00200f28020841016a221f41004c0d0d200f201f3602082007280208221f41016a222141004c0d0e20072021360208200f41106a200741106a412010ec080d01200f2d003020072d0030470d012007201f360208200f200f280208417f6a3602080b201741016a2117203c2016470d010c020b0b2007201f360208200f200f280208417f6a3602080b204720176b211f204620176b225141016a210702400240203e450d0020072022203e6b410276220f200f20074b1b410020071b201f2012203c6b410276220f200f201f4b1b4100201f1b6a210f0c010b201f2012203c6b410276220f200f201f4b1b4100201f1b210f0b200f41ffffffff0371200f470d30200f4102742213417f4c0d300240024020130d004104210f0c010b2013102c220f450d300b20014100360290032001200f3602880320012013410276221336028c0302400240203e450d0020072022203e6b4102762216201620074b1b410020071b201f2012203c6b41027622162016201f4b1b4100201f1b6a21160c010b201f2012203c6b41027622162016201f4b1b4100201f1b21160b0240024020132016490d00410021260c010b201341017422212016202120164b1b22164104201641044b1b221641ffffffff03712016464102742121201641027421160240024020130d00200141003602c8060c010b200141043602d0062001200f3602c806200120134102743602cc060b200141c8056a20162021200141c8066a107d20012802d005211320012802c8054101460d1d200120012802cc05220f360288032001201341027636028c0320012802900321260b200f20264102746a210f0240203e450d002007450d00203e201e6a21212046417f7320176a2113202620466a20176b41016a2122203e2107034020212007460d012007280200221628020041016a221741014d0d2120162017360200200f2016360200202641016a2126200f41046a210f200741046a2107201341016a221620134f21172016211320170d000b202221260b0240201f450d0002402012203c6b4102762207201f4d0d002007201f417f736a221320074f0d01201220134102746b417c6a203c20132007491b21120b2012203c460d0003402012417c6a2212280200220728020041016a221341014d0d2120072013360200200f2007360200202641016a2126200f41046a210f203c2012470d000b0b20012026360290032001427f3703b0052001427f3703a805200141b8016a41186a224e4200370300200141b8016a41106a224f4200370300200141b8016a41086a22504200370300200142003703b801202a42003703002032420037030020334200370300200142003703a80341002106200141003602e002200141003602e402200120014188036a360208200120014188036a360218410021254100214b4100213402402026450d00427f21534100214b200128028803211b41002134427f215220262125410021210340202520214d0d0d201b20214102746a280200220f280208221241016a41004c0d0e202141016a21220240200f2d00300d00200f201236020820014188046a41186a2225200f41286a29000037030020014188046a41106a2208200f41206a29000037030020014188046a41086a2229200f41186a2900003703002001200f29001037038804200128029003220f20224100200f417f6a20214b1b22124d0d10201b20124102746a280200220f280208221241016a41004c0d11200f2012360208201a200f41286a2900003703002018200f41206a290000370300201c200f41186a2900003703002001200f2900103703c805200128029003220f2021200f20211b417f6a22124d0d12201b20124102746a280200220f280208221241016a41004c0d13200f2012360208200141c8066a41186a2248200f41286a290000370300200141c8066a41106a2249200f41206a290000370300200141c8066a41086a224a200f41186a2900003703002001200f2900103703c8062028280200412c6c221221072000280200220f41546a22162117200f2113024003402007450d01200741546a21072017412c6a21172013410c6a211f2013412c6a2113201f20014188046a412010ec080d000b201741086a28020041306c21072017280200211303402007450d01200741506a21072013200141c8056a412010ec082117201341306a221f211320170d000b2053201f41706a22072903002255582052200741086a29030022545820522054511b0d002050201c290300370300204f2018290300370300204e201a2903003703002033202929030037030020322008290300370300202a2025290300370300200120553703a805200120012903c8053703b80120012001290388043703a803200120213602e002200120543703b0054101214b200141013602e4022021213420552153205421520b03402012450d01201241546a21122016412c6a2116200f410c6a2107200f412c6a210f200720014188046a412010ec080d000b201641086a28020041306c210f201628020021120340200f450d01200f41506a210f2012200141c8066a412010ec082107201241306a2213211220070d000b2053201341706a220f2903002255582052200f41086a29030022545820522054511b0d002050204a290300370300204f2049290300370300204e20482903003703002033202929030037030020322008290300370300202a2025290300370300200120553703a805200120012903c8063703b80120012001290388043703a803200120213602e002200120543703b0054100214b200141003602e4022021213420552153205421520b20012802900321252022212120222026470d000b0b20014100360290042001420437038804204b20346a214941012129024020250d004100210f0c1f0b20494101712108410021062025210f4100211f03402001201f360278200f201f4d0d122001280288032213201f4102746a280200220f28020841016a221241004c0d13201f41016a211b200f20123602082001200f41086a22073602ec022001200f410c6a3602e8020240200f2d00300d00201f210f0240201f0d00200128021841086a280200210f0b2001280290032212200f417f6a220f4d0d152013200f4102746a280200220f28020841016a221241004c0d16200f20123602082001200f41086a3602cc052001200f410c6a3602c805024002402028280200220f0d00201b210f0c010b20002802002216200f412c6c6a212141002117034002402016410c6a20012802e80241046a412010ec080d00201641086a22262802002222450d002016280200210f20012802c80541046a2113202241306c41506a21124100210702400340200f2013412010ec08450d01200f41306a210f200741016a2107201241506a22124150470d000c020b0b200f41286a22072903002152200f41206a22132903002153200141a8056a41086a290300215520012903a805215402400240201f4101710d0002402008450d00427f205220557c205320547c22542053542248ad7c22532048205320525420532052511b22481b2152427f205420481b21530c020b4200205220557d2053205454ad7d2255205320547d2254205356205520525620552052511b22481b21524200205420481b21530c010b02402008450d004200205220557d2053205454ad7d2255205320547d2254205356205520525620552052511b22481b21524200205420481b21530c010b427f205220557c205320547c22542053542248ad7c22532048205320525420532052511b22481b2152427f205420481b21530b0240024020532052844200520d0020012802dc022107200f200f41306a201210ea081a20262022417f6a360200200120012802d80241016a3602d8024100202920072017461b21292001280278221f20012802e0022234470d0120012802e4020d01201f21340c020b20072052370300201320533703000c010b200128029003220f201f4d0d1a200128028803201f4102746a280200220f28020041016a221241014d0d24200f2012360200201f21120240201f0d00200128021841086a28020021120b20012802900322072012417f6a22124d0d1b20012802880320124102746a280200221228020041016a220741014d0d242012200736020002402006200128028c04470d0020014188046a10bc0120012802900421060b20012802880420064103746a220720123602042007200f3602002001200641016a2206360290040b201741016a21172016412c6a22162021470d000b201f41016a210f0b2001280290032212200f4100200128020841086a280200417f6a201f4b1b220f4d0d19200128028803200f4102746a280200220f28020841016a221241004c0d1a200f20123602082001200f41086a22073602cc062001200f410c6a3602c80602402028280200220f450d0020002802002216200f412c6c6a212141002117034002402016410c6a20012802e80241046a412010ec080d00201641086a22262802002222450d002016280200210f20012802c80641046a2113202241306c41506a21124100210702400340200f2013412010ec08450d01200f41306a210f200741016a2107201241506a22124150470d000c020b0b200f41286a22072903002152200f41206a22132903002153200141a8056a41086a290300215520012903a805215402400240201f4101710d0002402008450d004200205220557d2053205454ad7d2255205320547d2254205356205520525620552052511b22481b21524200205420481b21530c020b427f205220557c205320547c22542053542248ad7c22532048205320525420532052511b22481b2152427f205420481b21530c010b02402008450d00427f205220557c205320547c22542053542248ad7c22532048205320525420532052511b22481b2152427f205420481b21530c010b4200205220557d2053205454ad7d2255205320547d2254205356205520525620552052511b22481b21524200205420481b21530b0240024020532052844200520d0020012802dc022107200f200f41306a201210ea081a20262022417f6a360200200120012802d80241016a3602d8024100202920072017461b21292001280278221f20012802e0022234470d0120012802e4024101470d01201f21340c020b20072052370300201320533703000c010b200128029003220f201f4d0d1e200128028803201f4102746a280200220f28020041016a221241014d0d24200f20123602002001280290032207201f41016a4100200128020841086a280200417f6a201f4b1b22124d0d1f20012802880320124102746a280200221228020041016a220741014d0d242012200736020002402006200128028c04470d0020014188046a10bc0120012802900421060b20012802880420064103746a220720123602042007200f3602002001200641016a2206360290040b201741016a21172016412c6a22162021470d000b20012802cc06220728020021120b20072012417f6a36020020012802cc05220f200f280200417f6a36020020012802ec02220728020021120b20072012417f6a360200200128029003210f201b211f201b2025460d1e0c000b0b20532052200f1b2252a72217280200220728020041016a220f41014d0d1e2007200f3602002016280200220f2802080d1a200f417f3602080240200f28020c2213450d0020132013280200417f6a360200200f28020c22132802000d002013410c6a10cd04200f28020c41046a22132013280200417f6a360200200f28020c221341046a2802000d002013102e0b200f200736020c200f200f28020841016a360208201f41027421072017210f0340200f28020022132013280200417f6a3602000240200f28020022132802000d002013410c6a10cd04200f28020041046a22132013280200417f6a360200200f280200221341046a2802000d002013102e0b200f41046a210f2007417c6a22070d000b024020524280808080f0ffffff3f83500d002017102e0b2016210f0340200f28020022072007280200417f6a3602000240200f28020022072802000d002007410c6a10cd04200f28020041046a22072007280200417f6a360200200f280200220741046a2802000d002007102e0b200f41046a210f2012417c6a22120d000b024020544280808080f0ffffff3f83500d002016102e0b20452045280200417f6a220f360200202041016a2120200f0d272045410c6a10cd04204541046a220f200f280200417f6a220f360200200f0d272045102e0c270b024020012802a0012217450d004100210720014188036a41186a211f20014188036a41106a212120014188036a41086a212203402017417f6a2117410121120240024003402007200f2f0132490d010240200f28020022130d00200f102e0c030b200f2f01302107200f102e2012417f6a21122013210f0c000b0b201f200f200741216c6a221341cc006a2900003703002021201341c4006a29000037030020222013413c6a2900003703002001201341346a29000037038803200741016a2113200f20074102746a41046a28020021160240024020124101470d00201321070c010b200f20134102746a41a0036a280200210f02402012450d000340201241016a220720124f2113200f2802a003210f2007211220130d000b0b410021070b200141e8026a41186a201f290300370300200141e8026a41106a2021290300370300200141e8026a41086a202229030037030020012001290388033703e8020b20162016280200417f6a2212360200024020120d002016410c6a10cd04201641046a22122012280200417f6a221236020020120d002016102e0b20170d000b0b0340200f2802002112200f102e2012210f20120d000c2d0b0b41bcd9cc004118200141b8076a41c0acc70041c4bfcc00103e000b41bcd9cc004118200141b8076a41c0acc70041d4bfcc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4100410041d0acc700103c000b41bcd9cc004118200141b8076a41c0acc70041c4bfcc00103e000b41bcd9cc004118200141b8076a41c0acc70041d4bfcc00103e000b2021202541f0acc700103c000b41bcd9cc004118200141b8076a41c0acc7004180adc700103e000b2012200f4190adc700103c000b41bcd9cc004118200141b8076a41c0acc70041a0adc700103e000b2012200f41b0adc700103c000b41bcd9cc004118200141b8076a41c0acc70041c0adc700103e000b201f200f41d0adc700103c000b41bcd9cc004118200141b8076a41c0acc70041e0adc700103e000b200f201241f0adc700103c000b41bcd9cc004118200141b8076a41c0acc7004180aec700103e000b201f200f4190aec700103c000b2012200741a0aec700103c000b200f201241b0aec700103c000b41bcd9cc004118200141b8076a41c0acc70041c0aec700103e000b201f200f41d0aec700103c000b2012200741e0aec700103c000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b2013450d130c120b20012802e402214b0b024002402034200f417f6a470d00204b4101460d010b41c000102c2212450d11201220012903a803370000201220012903b801370020201241186a202a290300370000201241106a2032290300370000201241086a2033290300370000201241286a2050290300370000201241306a204f290300370000201241386a204e29030037000002400240204920514d0d0002400240024002400240024002402047417f6a2222450d0020474101204741014b1b417f6a2121410021130340201322072047460d02203c20074102746a221f280200220f280200221641016a221341014d0d0b200f2013360200200f280208221741016a41004c0d03200741016a2113200f2017360208200f2016360200201a200f41286a2900003703002018200f41206a290000370300201c200f41186a2900003703002001200f2900103703c80520072021460d04203c20134102746a2217280200220f280200220741016a221641014d0d0b200f2016360200200f280208221641016a41004c0d05200f2016360208200f2007360200200141c8066a41186a200f41286a290000370300200141c8066a41106a200f41206a290000370300200141c8066a41086a200f41186a2900003703002001200f2900103703c8064100210f02400340200f41c000460d012012200f6a2107200f41206a210f2007200141c8056a412010ec080d000b4100210f0340200f41c000460d012012200f6a2107200f41206a210f2007200141c8066a412010ec080d000c030b0b201f280200220728020041016a220f41014d0d0b2007200f3602002017280200220f2802080d06200f417f3602080240200f28020c2216450d0020162016280200417f6a360200200f28020c22162802000d002016410c6a10cd04200f28020c41046a22162016280200417f6a360200200f28020c221641046a2802000d002016102e0b200f200736020c200f200f28020841016a36020820132022470d000b0b202328020041016a220f41014d0d092023200f36020020242802080d052024417f3602080240202428020c220f450d00200f200f280200417f6a360200202428020c220f2802000d00200f410c6a10cd04202428020c41046a220f200f280200417f6a360200202428020c220f41046a2802000d00200f102e0b2024202336020c2024202428020841016a3602080c070b2047204741f0aec700103c000b41bcd9cc004118200141b8076a41c0acc7004180afc700103e000b201320474190afc700103c000b41bcd9cc004118200141b8076a41c0acc70041a0afc700103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b02402046417f6a2222450d0020464101204641014b1b417f6a2121410021130340201322072046460d05203e20074102746a221f280200220f280200221641016a221341014d0d04200f2013360200200f280208221741016a41004c0d06200741016a2113200f2017360208200f2016360200201a200f41286a2900003703002018200f41206a290000370300201c200f41186a2900003703002001200f2900103703c80520072021460d07203e20134102746a2217280200220f280200220741016a221641014d0d04200f2016360200200f280208221641016a41004c0d08200f2016360208200f2007360200200141c8066a41186a200f41286a290000370300200141c8066a41106a200f41206a290000370300200141c8066a41086a200f41186a2900003703002001200f2900103703c8064100210f02400340200f41c000460d012012200f6a2107200f41206a210f2007200141c8056a412010ec080d000b4100210f0340200f41c000460d012012200f6a2107200f41206a210f2007200141c8066a412010ec080d000c030b0b201f280200220728020041016a220f41014d0d042007200f3602002017280200220f2802080d09200f417f3602080240200f28020c2216450d0020162016280200417f6a360200200f28020c22162802000d002016410c6a10cd04200f28020c41046a22162016280200417f6a360200200f28020c221641046a2802000d002016102e0b200f200736020c200f200f28020841016a36020820132022470d000b0b202428020041016a220f41014d0d022024200f36020020232802080d082023417f3602080240202328020c220f450d00200f200f280200417f6a360200202328020c220f2802000d00200f410c6a10cd04202328020c41046a220f200f280200417f6a360200202328020c220f41046a2802000d00200f102e0b2023202436020c2023202328020841016a3602080b2012102e0b200128028804221720064103746a2113200128028c04211f20172112024002402006450d0020172107024003402007280200220f450d0102400240200f200741046a280200221210ef06450d00200f2802080d0d200f417f3602080240200f28020c2216450d0020162016280200417f6a360200200f28020c22162802000d002016410c6a10cd04200f28020c41046a22162016280200417f6a360200200f28020c221641046a2802000d002016102e0b200f410036020c200f200f28020841016a3602080c010b2012200f10ef06450d0020122802080d0d2012417f3602080240201228020c2216450d0020162016280200417f6a360200201228020c22162802000d002016410c6a10cd04201228020c41046a22162016280200417f6a360200201228020c221641046a2802000d002016102e0b2012410036020c2012201228020841016a3602080b20122012280200417f6a2216360200024020160d002012410c6a10cd04201241046a22162016280200417f6a221636020020160d002012102e0b200f200f280200417f6a2212360200024020120d00200f410c6a10cd04200f41046a22122012280200417f6a221236020020120d00200f102e0b200741086a22072013470d000c030b0b200741086a21120b20132012460d0003402012220f28020022122012280200417f6a3602000240200f28020022122802000d002012410c6a10cd04200f28020041046a22122012280200417f6a360200200f280200221241046a2802000d002012102e0b200f41086a2112200f41046a220f28020022072007280200417f6a3602000240200f28020022072802000d002007410c6a10cd04200f28020041046a22072007280200417f6a360200200f280200220f41046a2802000d00200f102e0b20132012470d000b0b0240201f41ffffffff0171450d002017102e0b02402001280290032212450d00200128028803210f201241027421120340200f28020022072007280200417f6a3602000240200f28020022072802000d002007410c6a10cd04200f28020041046a22072007280200417f6a360200200f280200220741046a2802000d002007102e0b200f41046a210f2012417c6a22120d000b0b0240200128028c0341ffffffff0371450d00200128028803102e0b02402046450d00203e210f0340200f28020022122012280200417f6a3602000240200f28020022122802000d002012410c6a10cd04200f28020041046a22122012280200417f6a360200200f280200221241046a2802000d002012102e0b200f41046a210f201e417c6a221e0d000b0b0240204d41ffffffff0371450d00203e102e0b20452045280200417f6a220f3602000240200f0d002045410c6a10cd04204541046a220f200f280200417f6a220f360200200f0d002045102e0b202941ff0171210702402047450d00203c210f0340200f28020022122012280200417f6a3602000240200f28020022122802000d002012410c6a10cd04200f28020041046a22122012280200417f6a360200200f280200221241046a2802000d002012102e0b200f41046a210f2019417c6a22190d000b0b202020076a2120204c41ffffffff0371450d09203c102e0c090b00000b2046204641b0afc700103c000b41bcd9cc004118200141b8076a41c0acc70041c0afc700103e000b2013204641d0afc700103c000b41bcd9cc004118200141b8076a41c0acc70041e0afc700103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041b0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041a0c1cc00103e000b4194dacc004110200141b8076a4190c1cc0041a0c1cc00103e000b200e200e280200417f6a220f3602000240200f0d00200e410c6a10cd04200e41046a220f200f280200417f6a220f360200200f0d00200e102e0b20232023280200417f6a220f3602000240200f0d002023410c6a10cd04202341046a220f200f280200417f6a220f360200200f0d002023102e0b20242024280200417f6a220f3602000240200f0d002024410c6a10cd04202441046a220f200f280200417f6a220f360200200f0d002024102e0b20012802dc0221160c010b20232023280200417f6a220f3602000240200f0d002023410c6a10cd04202341046a220f200f280200417f6a220f360200200f0d002023102e0b20242024280200417f6a220f3602000240200f0d002024410c6a10cd04202441046a220f200f280200417f6a220f360200200f0d002024102e0b202041016a21200b2000280200210f2028280200221220164b0d000b0b2016201241b0acc700103c000b2016201241a0acc700103c000b200141c0076a24000f0b1036000b1038000ba50302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b220342ffff03420010e708200441286a2002200342ffff03420010e608200441186a20022003200429033822062004290328200441286a41086a29030084420052ad7c220742012007420156200441386a41086a2903002007200654ad7c22074200522007501b22051b22062007420020051b220710e7080240024002402004290318220842808004544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2006200710e7082004290308220342808004544100200441086a41086a290300501b450d012008a741ffff037122050d0241d0d8c80041194180a1c9001039000b2004411136024c2004419cd5cc0036024841add5cc0041de00200441c8006a41bcdcc8004180a1c900103e000b2004411136024c2004419cd5cc0036024841add5cc0041de00200441c8006a41bcdcc8004180a1c900103e000b200441d0006a24002003a741ffff037141ffff036c20056e0baf08030b7f017e017f230041d0016b2204240020042003360214200420023602102001280200220520012802082202412c6c22066a2107200128020421080240024020020d0020052102200521010c010b200441f0006a410c6a2109200441f0006a4104722103200441186a41086a210a200441186a41106a210b200441186a41186a210c200441186a41206a210d200521020340200a20022201410c6a290200370300200b200141146a290200370300200c2001411c6a290200370300200d200141246a2902003703002004200141046a2902003703182001412c6a21022001280200220e450d0120032004290318370200200341086a200a290300370200200341106a200b290300370200200341186a200c290300370200200341206a200d2903003702002004200e3602704200210f02402004280210200910a002220e450d0020042802142210280208200e280200220e4d0d002010280200200e41386c6a290300210f0b200441a0016a41286a200441f0006a41286a280200360200200441a0016a41206a200441f0006a41206a290300370300200441a0016a41186a200441f0006a41186a290300370300200441a0016a41106a200441f0006a41106a290300370300200441a0016a41086a200441f0006a41086a290300370300200420042903703703a001200441c0006a200441a0016a200f420010bd04200141286a200441c0006a41286a280200360200200141206a200441c0006a41206a290300370200200141186a200441c0006a41186a290300370200200141106a200441c0006a41106a290300370200200141086a200441c0006a41086a29030037020020012004290340370200200641546a22060d000b20022101200721020b200720026b2203412c6d210602402003450d002006412c6c210303400240200241046a2802002206450d00200641226c450d002002280200102e0b2002412c6a2102200341546a22030d000b0b200441053602a001200120056b220b412c6d220a412c6c21022005210302400340200321012002450d014200210f024020042802102001410c6a10a0022203450d0020042802142206280208200328020022034d0d002006280200200341386c6a290300210f0b2001412c6a2103200441086a2001200f420010bf04200241546a210220042802082201450d000b200428020c2102200441033602a00120042002ad4220862001ad843702a4010b0240024020042802a00122014105470d00200020053602042000410c6a200a360200200041086a2008360200410021010c010b20042902a401210f20002001360204200041086a200f3702000240200b450d00200a412c6c21022005210103400240200141046a2802002203450d00200341306c450d002001280200102e0b2001412c6a2101200241546a22020d000b0b410121012008450d002008412c6c450d002005102e0b20002001360200200441d0016a24000b850103027f017e027f230041106b22012400024002400240200035020842208620002802002202ad84101e2203428080808010540d00410021042003a722052d00000e020201000b41cae0cc00412e200141086a41f8e0cc004188e1cc00103e000b410121040b2005102e0240200041046a280200450d002002102e0b200141106a240020040b070010184101460b8b0705017f017e077f037e027f23004180026b220224002002200136020c0240024002402002410c6a10082203422088a722010d0020004100360208200042013702000c010b2002200136021420022003a722043602102002200241106a10ab01024002400240024020022802000d002002280204220520022802144105762201200120054b1b22014105742206417f4c0d050240024020010d00410121070c010b2006102c2207450d030b2001ad210302402005450d00410021080340200241003a00b8012002280214417f6a2101200841016a210841002106024002400240024003402001417f460d0120024198016a20066a200228021022092d00003a00002002200941016a3602102002200641016a22093a00b801200220013602142001417f6a21012009210620094120470d000b200241c0016a41086a220120024198016a41086a290300370300200241c0016a41106a220620024198016a41106a290300370300200241c0016a41186a220a20024198016a41186a29030037030020022002290398013703c001200941ff0171411f4d0d01200241386a41086a2001290300220b370300200241386a41106a2006290300220c370300200241386a41186a200a290300220d370300200241186a41186a2209200d370300200241186a41106a220a200c370300200241186a41086a220e200b370300200220022903c001220b3703582002200b3703382002200b3703182003422088220ba722012003a7470d03200141016a220620014f0d020c0b0b200641ff0171450d00200241003a00b8010b200342ffffff3f83500d042007102e0c040b2001410174220f20062006200f491b22064104200641044b1b220641ffffff3f71200646210f200641057421060240024020010d0020024100360298010c010b200241013602a00120022007360298012002200b4205863e029c010b200241c0016a2006200f20024198016a107d20022802c801210620022802c0014101460d0420022802c40121072006410576ad21030b200720014105746a22062002290318370000200641186a2009290300370000200641106a200a290300370000200641086a200e290300370000200342ffffffff0f83200141016aad42208684210320082005470d000b0b20070d030b41cae0cc00412e20024198016a41c4dfcc0041d4dfcc00103e000b2006450d030b1036000b20002003370204200020073602002004102e0b20024180026a24000f0b1038000bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010ec08417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010ec08417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b2001200141d4d1cc00103c000bb719030a7f047e0d7f230041a0076b220124000240024020002802082202200028020c2203470d00410821020c010b2000200241206a22043602082000280210210520014190026a41186a200241186a29000037030020014190026a41106a200241106a29000037030020014190026a41086a200241086a2900003703002001200229000037039002200028021421064100210202400240024002402000411c6a28020022070e020201000b410021022007210803402008410176220920026a210a200a20022006200a4105746a20014190026a412010ec084101481b2102200820096b220841014b0d000b0b200620024105746a20014190026a412010ec08450d010b03402000200541016a2205360210024020042003470d00410821020c030b2000200441206a220936020820014190026a41186a200441186a29000037030020014190026a41106a200441106a29000037030020014190026a41086a200441086a290000370300200120042900003703900241002102200921040240024020070e020201000b410021022007210403402004410176220a20026a210820082002200620084105746a20014190026a412010ec084101481b21022004200a6b220441014b0d000b0b20092104200620024105746a20014190026a412010ec080d000b0b02400240200720024d0d00200141186a200620024105746a220241186a290000220b370300200141106a200241106a290000220c370300200141086a200241086a290000220d37030020012002290000220e3703002000200541016a360210200041246a2802002109200041286a280200210320002802202107200141206a41186a200b370300200141206a41106a200c370300200141206a41086a200d3703002001200e370320410221022005109e070d0202400240411b102c220a450d00200a41176a4100280093db48360000200a41106a410029008cdb48370000200a41086a4100290084db48370000200a41002900fcda483700004104102c2202450d00200142043702c401200120023602c0012001200536029002200141c0016a20014190026a4104107420012802c401210820012802c0012104024020012802c80122020d00411b210f2002411b6a21000c040b2002411b6a22002002490d012001429b80808010370294022001200a36029002200141d8056a20004136200041364b1b410120014190026a107d200141e0056a280200210f024020012802d8054101460d0020012802dc05210a0c040b200f450d010b1036000b1038000b2002200741ecdac800103c000b200a411b6a2004200210e9081a02402008450d002004102e0b200141c0016a4101200a200010df0602400240024002400240024002400240024020012802c0012202450d00200141c8016a28020022044104490d002004417c714104460d0020022800002007470d00200228000441036a20094b0d010b200141003602e005200142013703d805200120073602900241042102200141d8056a20014190026a410410742001200936029002200141d8056a20014190026a4104107420012802d805210420012802e005210820014190026a41086a200141c0016a41086a280200360200200120012903c001370390024101200a200020014190026a2004200810e0062108024020012802dc05450d002004102e0b2008450d0120014190026a109f072001280290022210450d04200141a0026a280200211120014190026a410c6a2802002112200141a4026a280200211320014190026a41086a2802002114200128029402211520014100360288022001420137038002200120093602900220014180026a20014190026a41041074201420014180026a107620014180026a201020141074201320014180026a107602402013450d0020122013410c6c6a210620122102034020022802002104200241086a280200220820014180026a107620014180026a2004200810742002410c6a22022006470d000b0b200120073602900220014180026a20014190026a41041074200120053602900220014180026a20014190026a41041074200120033602900220014180026a20014190026a4104107420014190026a41e9dabdf306200141206a200128028002220420012802880210a0074101210220012d0090024101460d02410321080c030b024020012802c401450d002002102e0b410121020b200f0d050c060b200141fe016a20012d0093023a0000200141d8056a41086a200141a4026a290200370300200141e8056a200141ac026a290200370300200141f0056a200141b4026a290200370300200141f8056a200141bc026a29020037030020014180066a200141c4026a29020037030020014185066a200141c9026a290000370000200120012f0091023b01fc0120012001419c026a2902003703d80520014190026a41086a28020021062001280294022108410021020b200141f8016a41026a2216200141fc016a41026a2d00003a0000200141c0016a41086a2217200141d8056a41086a290300370300200141c0016a41106a2218200141d8056a41106a290300370300200141c0016a41186a2219200141d8056a41186a290300370300200141c0016a41206a221a200141d8056a41206a290300370300200141c0016a41286a221b200141d8056a41286a290300370300200141c0016a41306a200141d8056a41306a290300370300200120012f01fc013b01f801200120012903d8053703c001024020020d00200141bc016a41026a20162d00003a000020014190026a41086a201729030037030020014190026a41106a201829030037030020014190026a41186a201929030037030020014190026a41206a201a29030037030020014190026a41286a201b29030037030020014190026a412d6a200141c0016a412d6a290000370000200120012f01f8013b01bc01200120012903c001370390020240200128028402450d002004102e0b200120012f01bc013b01d8052001200141be016a2d00003a00da05410021020c030b0240200128028402450d002004102e0b02402015450d002010102e0b02402013450d002013410c6c21042012210203400240200241046a280200450d002002280200102e0b2002410c6a2102200441746a22040d000b0b4101210202402011450d002011410c6c450d002012102e0b20082109200621100c010b41012102410521090b0b20014180016a41086a220420014190026a41086a29030037030020014180016a41106a221620014190026a41106a29030037030020014180016a41186a221720014190026a41186a29030037030020014180016a41206a221820014190026a41206a29030037030020014180016a41286a221920014190026a41286a29030037030020014180016a412d6a221a20014190026a412d6a290000370000200120012d00da053a00ba01200120012f01d8053b01b80120012001290390023703800102400240024020020d00200141c0006a41086a22022004290300370300200141c0006a41106a22042016290300370300200141c0006a41186a22162017290300370300200141c0006a41206a22172018290300370300200141c0006a41286a22182019290300370300200141c0006a412d6a2219201a290000370000200120012d00ba013a007e200120012f01b8013b017c2001200129038001370340200141d0036a2003360200200141cc036a2005360200200141c8036a2007360200200141c4036a2013360200200141c0036a2011360200200141bc036a2012360200200141b8036a2014360200200141b4036a2015360200200141b0036a2010360200200141ac036a200936020020014190026a41c4016a20012f017c3b0100200141d6036a20012d007e3a0000200141db036a2006360000200141d7036a20083600002001410b3602a803200142023703f8022001418c046a201929000037000020014187046a2018290300370000200141ff036a2017290300370000200141f7036a2016290300370000200141ef036a2004290300370000200141e7036a2002290300370000200120012903403700df0320014194046a200141d8056a41c40110e9081a200120014190026a3602d805200141c0016a200141d8056a109005200141d8056a41086a200141c0016a41086a280200360200200120012903c0013703d805200141d8056a10e8062104024020012903f8024202510d0020012d00900241ff01714102470d00200128029802450d00200128029402102e0b200141a8036a108b02410721024106210920040d010c020b4107210220094107460d010b20014100360298022001420137039002200120073602d80520014190026a200141d8056a41041074200141003602d80520014190026a200141d8056a410410744101200a2000200128029002220220012802980210a1070240200128029402450d002002102e0b200921020b200f450d010b200a102e0b200141a0076a240020020bc41c07127f017e017f017e017f027e097f230041b0016b22022400200028020821032000280200210420002802042105200241206a41206a2206200041306a2d00003a0000200241206a41186a2207200041286a290000370300200241206a41106a2208200041206a290000370300200241206a41086a2209200041186a29000037030020022000290010370320024002400240024002400240024002400240024002400240024002400240024002400240024020052f0132220a410a4b0d0020024188016a41206a20062d00003a000020024188016a41186a200729030037030020024188016a41106a200829030037030020024188016a41086a20092903003703002002200229032037038801200541346a2106200a41016a2107200341016a2208200a4d0d012006200341216c6a220a200229038801370000200a41206a20024188016a41206a2d00003a0000200a41186a20024188016a41186a290300370000200a41106a20024188016a41106a290300370000200a41086a20024188016a41086a290300370000200541046a210a0c020b4105210a4100210b02400240200341054f0d004104210a200321060c010b41052106024002402003417b6a0e020201000b200341796a21064101210b4106210a0c010b410021064101210b0b41a003102c2203450d05200341003b013220034100360200200320052f0132220c200a417f736a22073b013220024190016a200541346a220d200a41216c6a2208410c6a29000037030020024198016a200841146a2900003703002002419d016a200841196a29000037000020022008290004370388012007410c4f0d06200c200a41016a22096b2007470d07200541046a220c200a4102746a280200210e2008280000210f200341346a200d200941216c6a200741216c10e9081a200341046a200c20094102746a200741027410e9081a2005200a3b0132200241e8006a41086a20024188016a41086a2208290300370300200241e8006a41106a20024188016a41106a2209290300370300200241e8006a41156a20024188016a41156a290000370000200220022903880137036820032005200b1b220a2f0132210720024188016a41206a220d200241206a41206a2d00003a000020024188016a41186a2210200241206a41186a2903003703002009200241206a41106a2903003703002008200241206a41086a2903003703002002200229032037038801200a41346a210b200741016a210c02400240200641016a221120074d0d00200b200641216c6a2207200229038801370000200741206a200d2d00003a0000200741186a2010290300370000200741106a2009290300370000200741086a2008290300370000200a41046a21070c010b200b201141216c6a200b200641216c6a220b200720066b41216c10ea081a200b41206a200d2d00003a0000200b41186a2010290300370000200b41106a2009290300370000200b41086a2008290300370000200b200229038801370000200a41046a220720114102746a200720064102746a200c2006417f736a41027410ea081a0b200720064102746a22122001360200200a200c3b0132200241086a2213200241e8006a41086a22102903002214370300200241106a2215200241e8006a41106a22112903002216370300200241186a200241e8006a41186a2217290300221837030020022002290368221937030020172018370300201120163703002010201437030020022019370368200528020022010d02410021040c030b2006200841216c6a2006200341216c6a2206200a20036b41216c10ea081a200641206a20024188016a41206a2d00003a0000200641186a20024188016a41186a290300370000200641106a20024188016a41106a290300370000200641086a20024188016a41086a2903003700002006200229038801370000200541046a220a20084102746a200a20034102746a20072003417f736a41027410ea081a0b200a20034102746a22122001360200200520073b01320c0e0b200e211a4100210a2003211b200f211c034020052f01302107200241c8006a41156a221d200241e8006a41156a290000370000200241c8006a41106a221e2011290300370300200241c8006a41086a221f2010290300370300200220022903683703482004200a470d0620012f01322209410b490d024100210841042105024020074105490d0020072105024002402007417b6a0e020201000b200741796a210741012108410621050c010b4100210741012108410521050b41d003102c2203450d03200341003b013220034100360200200320012f0132220b2005417f736a220a3b0132200141346a220c200541216c6a2206280000210f200241156a2220200641196a2900003700002015200641146a29000037030020132006410c6a29000037030020022006290004370300200a410c4f0d07200b200541016a22066b200a470d08200141046a220b20054102746a280200210e200341346a200c200641216c6a200a41216c10e9081a200341046a200b200641027422066a200a41027410e9081a200120053b013220024188016a41086a220b201329030037030020024188016a41106a220c201529030037030020024188016a41156a220d2020290000370000200220022903003703880120032f0132220a41016a2120200a410c4f0d09200920056b22052020470d0a200441016a2104200341a0036a200120066a41a0036a200541027410e9081a4100210502400340200320054102746a41a0036a280200220620053b01302006200336020020052005200a4922066a2205200a4b0d0120060d000b0b200241206a41186a222020024188016a41186a290300370300200241206a41106a2221200c290300370300200241206a41086a2222200b29030037030020022002290388013703202003200120081b22062f01322109200d201d290000370000200c201e290300370300200b201f2903003703002002200229034837038801200641346a210a0240200741016a220520094b221d0d00200a200541216c6a200a200741216c6a200920076b41216c10ea081a0b200941016a2108200a200741216c6a220a201c360000200a200229038801370004200a410c6a200b290300370000200a41146a200c290300370000200a41196a200d290000370000200641046a210a0240201d0d00200a20054102746a200a20074102746a2007417f7320086a41027410ea081a0b200a2007410274220b6a201a360200200641a0036a210a0240200741026a220c200941026a22094f0d00200a200c4102746a200a20054102746a2005417f7320096a41027410ea081a0b200a20054102746a201b360200200620083b01320240200520094f0d002006200b6a41a4036a210503402005280200220a200741016a22073b0130200a2006360200200541046a210520082007470d000b0b2010202229030037030020112021290300370300201720202903003703002002200229032037036820012105200128020022062101200e211a2004210a2003211b200f211c20060d000b0b20024188016a41186a201729030037030020024188016a41106a2011290300221437030020024188016a41086a2010290300221637030020022002290368221837038801200241e8006a41156a20024188016a41156a290000370000201120143703002010201637030020022018370368200028020c220a2802042206450d09200a280200210741d003102c2205450d01200520063602a003200541003b013220054100360200200641003b013020062005360200200a2005360204200a200741016a360200200241206a41156a200241e8006a41156a290000370000200241206a41106a200241e8006a41106a290300370300200241206a41086a200241e8006a41086a2903003703002002200229036837032020072004470d0a20052f01322207410b4f0d0b2005200741216c6a220641346a200f360000200641386a2002290320370000200641c0006a200241286a290300370000200641c8006a200241306a290300370000200641cd006a200241356a2900003700002005200741016a22063b0132200520064102746a41a0036a2003360200200520074102746a41046a200e360200200320063b013020032005360200200a200a28020841016a3602080c0d0b20012f0132210320024188016a41156a2209200241c8006a41156a29000037000020024188016a41106a2204200241c8006a41106a29030037030020024188016a41086a220b200241c8006a41086a2903003703002002200229034837038801200741016a2105200141346a210a0240200320074d22060d00200a200541216c6a200a200741216c6a200320076b41216c10ea081a0b200341016a2108200a200741216c6a220a201c360000200a200229038801370004200a410c6a200b290300370000200a41146a2004290300370000200a41196a2009290000370000200141046a210a024020060d00200a20054102746a200a20074102746a2007417f7320086a41027410ea081a0b200a200741027422096a201a360200200141a0036a210a200341026a2107024020060d002009200a6a41086a200a20054102746a2005417f7320076a41027410ea081a0b200a20054102746a201b360200200120083b0132200520074f0d0b200341016a210620012005417f6a22054102746a41a4036a210303402003280200220a200541016a22053b0130200a2001360200200341046a210320062005470d000c0c0b0b1036000b2007410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b41ac9cc700413541e49cc7001039000b200a410b41e49bc700104d000b41f49bc7004128419c9cc7001039000b2020410c41f49cc700104d000b41f49bc7004128419c9cc7001039000b41e8aac700412b4194abc7001039000b41e899c700413041989ac7001039000b41a89ac700412041c89ac7001039000b200028020c2205200528020841016a3602080b200241b0016a240020120be80a010f7f230041206b220224000240200128020041016a220341014d0d002001200336020020024100360210200241104104200241106a107d200241086a28020021030240024002400240024020022802004101460d00200228020422042001360200200128020041016a220541024f0d010c050b2003450d010c030b2001200536020020024100360210200241104104200241106a107d200241086a28020021060240024020022802004101460d00200228020422072001360200200128020041016a22054102490d052003410276210820012005360200200641027621094104210a4101210b0240024002400340200541016a220341014d0d0920012003360200200128020841016a220341004c0d0120012003360208200128020c2205450d07200541106a210c2007200b410274220d6a210e2007210602400340200e2006460d01200628020022032005460d09200328020841016a220f41004c0d042003200f3602082005280208220f41016a221041004c0d05200520103602080240200341106a200c412010ec080d0020032d003020052d0030470d002005200f36020820032003280208417f6a3602080c0a0b200641046a21062005200f36020820032003280208417f6a3602080c000b0b200128020c220328020041016a220541014d0d09200320053602000240200b2008470d00200b41016a2205200b490d07200b41017422062005200620054b1b22054104200541044b1b220541ffffffff037120054641027421062005410274210502400240200b0d00200241003602100c010b20024104360218200220043602102002200d3602140b200220052006200241106a107d2002280208210520022802004101460d0620022802042104200541027621080b2004200d6a2003360200200128020c220328020041016a220541014d0d092003200536020020012001280200417f6a2205360200024020050d002001410c6a10cd04200141046a22052005280200417f6a220536020020050d002001102e0b200328020041016a220541014d0d092003200536020002400240200b2009470d00200b41016a2205200b490d08200b41017422062005200620054b1b22054104200541044b1b220541ffffffff037120054641027421062005410274210502400240200b0d00200241003602100c010b20024104360218200220073602102002200d3602140b200220052006200241106a107d2002280208210520022802004101460d0120022802042107200541027621090b2007200d6a200336020020012001280208417f6a36020820012001280200417f6a2205360200024020050d002001410c6a10cd04200141046a22052005280200417f6a220536020020050d002001102e0b200b41016a210b200a41046a210a20032802002105200321010c010b0b20050d070c050b41bcd9cc004118200241106a41a4bfcc0041c0c1cc00103e000b41bcd9cc004118200241106a41c4ffc40041c4bfcc00103e000b41bcd9cc004118200241106a41c4ffc40041d4bfcc00103e000b20060d030c010b20050d020b1038000b20012001280208417f6a36020820012001280200417f6a2203360200024020030d002001410c6a10cd04200141046a22032003280200417f6a220336020020030d002001102e0b20002004360204200020013602002000410c6a200b360200200041086a20083602000240200b450d00200721030340200328020022052005280200417f6a3602000240200328020022052802000d002005410c6a10cd04200328020041046a22052005280200417f6a3602002003280200220541046a2802000d002005102e0b200341046a2103200a417c6a220a0d000b0b0240200941ffffffff0371450d002007102e0b200241206a24000f0b1036000b00000bae0201047f230041106b220224004100210302400240024002400240024002402000280208220441016a220541004c0d0020002004360208200028020c2204450d0620002005360208024020042001470d00410121030c060b200428020841016a220341004c0d01200420033602082001280208220541016a220341004c0d0220012003360208200441106a200141106a412010ec080d034101210320042d003020012d0030470d030c040b41bcd9cc004118200241086a41a4bfcc0041b4bfcc00103e000b41bcd9cc004118200241086a41a4bfcc0041c4bfcc00103e000b41bcd9cc004118200241086a41a4bfcc0041d4bfcc00103e000b410021030b2001200536020820042004280208417f6a360208200028020821050b20002005417f6a3602080b200241106a240020030bc80101047f230041c0006b220224004119210341e0b2c7002104410221050240024002400240200141ff01710e0400010203000b2002411c6a41013602002002420137020c2002419cc3cb00360208200241043602242002418883ca003602202002200241206a360218200241086a41c4afc8001044000b411a21034198b2c7002104410021050c010b411b210341bcb2c7002104410121050b20004183c8003b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000b130020004103360204200041c4b1c7003602000bc40403027f017e037f230041a0036b22022400200241d0026a410c6a200041f0016a290200370200200241e4026a200041f8016a290200370200200241ec026a20004180026a290200370200200241e2c289ab063602d002200220002902e8013702d4022001280200210320024190036a200141046a10c301200241f8026a410c6a20024190036a41086a280200360200200220033602f80220022002290390033702fc02200220012802103602880320024180026a200241d0026a200241f8026a109d0402400240024020022802c002450d00200241a8016a41056a20024180026a41d00010e9081a200241d0006a200241a8016a41d50010e9081a2002200241d0006a41056a41d00010e908220141a8016a200141d00010e9081a200141d0006a410c6a210320002903002104410021054100210002400340200041d000460d014108102c2206450d0420014208370254200120063602502001200437038002200141d0006a20014180026a41081074200341086a41002900a197453700002003410029009997453700002001200141a8016a20006a36026c20014180026a200141d0006a10ae0102402001280254450d002001280250102e0b200141d0006a20014180026a108e03200128025022072001280258108f02210602402001280254450d002007102e0b200041d0006a210020060d000b410221050b0240200141ec016a2802002200450d00200041306c450d00200141e8016a280200102e0b41800621010c010b4100210541800821010b200241a0036a240020012005720f0b1036000b130020004106360204200041b4b4c7003602000b3400200041bad7c70036020420004100360200200041146a4102360200200041106a41c4d7c700360200200041086a42083702000b130020004105360204200041f8dcc7003602000b4401027f230041106b2202240002404104102c22030d001036000b200042043702042000200336020020024180800136020c20002002410c6a41041074200241106a24000b4901027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280c2d72f3703002000200241101074200241106a24000b4a01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280c8afa0253703002000200241101074200241106a24000b4201027f230041106b2202240002404101102c22030d001036000b2000420137020420002003360200200241143a000f20002002410f6a41011074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241c0f00036020c20002002410c6a41041074200241106a24000bab0301087f230041106b2203240020032000200220016b10fc060240024020032802004101470d00200341086a2802000d0141d0f0cc00411141e4f0cc001039000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b024002400240200620044f0d00034020022001460d02200720066a20012d00003a0000200141016a21012004200641016a2206470d000b200421060b2005200636020020012002460d01200141016a21062000410c6a2108200041056a210920012d0000210a034002400240200028020022074125490d00200028020c210120002802082105200821040c010b200721012000210420092105412421070b024020012007470d0020032000410110fc06024020032802004101470d00200341086a2802000d0541d0f0cc00411141e4f0cc001039000b200028020c210120002802082105200821040b200520016a200a3a00002004200428020041016a36020020022006460d0220062d0000210a200641016a21060c000b0b200520063602000b200341106a24000f0b1036000baa0301047f02400240200128020022034125490d002001410c6a2802002104200321050c010b41242105200321040b0240200520046b2002490d00200041003602000f0b0240024002400240200420026a22022004490d004100417f2002417f6a677620024102491b220441016a22052004490d000240024020034125490d002001410c6a2802002104200141086a2802002102200321060c010b200141056a210241242106200321040b200420054b0d010240200541244b0d000240200341244b0d00200041003602000f0b200141003a0004200141056a2002200410e9081a200120043602002002102e0c040b20062005460d030240200341244b0d0002402005102c2203450d0020032002200410e9081a0c040b2000200536020420004101360200200041086a41013602000f0b200220062005103022030d022000200536020420004101360200200041086a41013602000f0b2000200536020420004101360200200041086a41003602000f0b41c2f1cc00412041e4f1cc001039000b200141013a0004200120053602002001410c6a2004360200200141086a20033602000b200041003602000bd60501047f20002802282101024002400240024020002d000022024102470d002000410c6a2802002102200041086a2802002103200041046a280200210020012001280200417f6a2204360200024020040d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22042004280200417f6a220436020020040d002001102e0b0240200041ff01710d0041002104200320024f0d030b4110102c2200450d03200041f8f7c60036020c2000410136020820004281808080103702004110102c2201450d0320014190f8c60036020c20014101360208200142818080801037020020002000280200417f6a220436020020040d012000280208200028020c2802001103000240200028020c280204450d002000280208102e0b200041046a22042004280200417f6a220436020020040d012000102e0c010b410021040240024020020e0400010103010b20002d0001210020012001280200417f6a2204360200024020040d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22042004280200417f6a220436020020040d002001102e0b0240200041ff01710d0041010f0b4110102c2200450d03200041f8f7c60036020c2000410136020820004281808080103702004110102c2201450d0320014190f8c60036020c20014101360208200142818080801037020020002000280200417f6a220436020020040d012000280208200028020c2802001103000240200028020c280204450d002000280208102e0b200041046a22042004280200417f6a220436020020040d012000102e0c010b4101210420024103460d010b20012001280200417f6a22003602004102210420000d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22002000280200417f6a220036020020000d002001102e0b20040f0b1036000be21205027f0c7e037f027e017f230041c0026b220524000240024020022003844200520d0020004100360200200041106a4200370300200041086a42003703000c010b2005200136020c200541d0006a200110c802200541c0016a20052802502206200528025810c902200541c0016a41386a2903002107200541c0016a41306a2903002108200541c0016a41286a2903002109200541c0016a41206a290300210a200541c0016a41186a290300210b200541c0016a41106a290300210c20054180026a290300210d20052903c801210e20052903c001210f20054190016a41086a20054190026a290300370300200520054188026a2903003703900102400240200f4201510d004200210d200541106a41386a4200370300200541106a41306a4200370300200541106a41286a4200370300200541106a41206a4200370300200541106a41186a4200370300200541106a41106a4200370300200541106a41086a4200370300200542003703104200210a4200210942002108420021074200210e4200210c4200210b42002110420021114200210f420021120c010b200541106a41206a2009370300200541106a41286a2008370300200541106a41106a200b370300200541106a41306a20073703002005200a3703282005200e3703102005200d3703482005200c3703182009211020082111200e210f200c21120b02402005280254450d002006102e0b02400240200f2012844200520d0020102005290320842011200541286a29030084844200520d002005290340200541c8006a2903008450450d0042002110410021130c010b42012110410121130b024020104201510d004200210a4200210b4200210d4200210942002108420021074200210e4200210c0b41032106024002400240200e20027d2212200e56200c20037d200e200254ad7d220f200c56200f200c511b450d004113211441c8a3c700211541052101410321130c010b02402012200b7c221642ffc7afa02556200f200a7c20162012542214ad7c22114200522011501b0d00200e200b7c221742ffc7afa02556200c200a7c2017200e54ad7c220e420052200e501b450d00410921144180a4c700211541052113410521010c010b200541c0016a20012002200320042012200f10d706024020052d00c00122064106460d00200541c8016a280200211420052802c401211520052d00c301210420052d00c201211320052d00c10121010c010b200541e8016a22152008370300200541f0016a221820073703002005200b3703d001200541d8016a200a370300200520093703e001200520123703c0012005200f3703c8014200210c2002422088a721062002a7210402400240427f201620142011200f542011200f511b22141b220242ffc7afa02556427f201120141b220e420052200e501b0d002012200b84200f200a8484220c5021144200210b200c420052ad210c0c010b2018290300211720152903002116200541e0016a2903002111200541d0016a290300210920052903d801210720052903c801210820052903c001210a4201210b410121140b200541f8006a200e370300200541f0006a22152002370300200541e0006a200f370300200520123703582005200337038801200520063602840120052004360280012005200c37036820052010420152ad22033703500240024002400240024002402013200b420152720d00200520013602c0012001200541c0016a10bd060c010b024020134101732206200b420151720d00200520013602c0012001200541c0016a10be0641ff017122064103460d01024020060e03030200030b20054180016a2101024020140d00200520153602c001200541c0016a10cc020b200520013602c001200541c0016a10cc02410421064100210441002113410021010c070b200b4201522006710d020b200541a0016a200110c802200541c0016a20052802a001220420052802a801221310c90220052903c001210e20054190016a41086a220620054190026a290300370300200520054188026a2903003703900102400240200e4201510d00200541b0016a41086a4200370300200542003703b0010c010b200541b0016a41086a200629030037030020052005290390013703b0010b20054188026a20052903b00137030020054190026a200541b0016a41086a290300370300200542013703c001200541c0016a41386a20174200200b42015122061b370300200541f0016a2016420020061b370300200541c0016a41286a2011420020061b370300200541e0016a2007420020061b370300200541d8016a2009420020061b370300200541c0016a41106a2008420020061b37030020054180026a200d420020061b3703002005200a420020061b3703c80120042013200541c0016a41086a10c805024020052802a401450d002004102e0b200541d0006a41106a290300210f200541d0006a41286a290300210e200541d0006a41386a290300210920052903582112200529037021022005290380012108200529035021032005290368210c0c030b20054188016a29030021090c010b20054188016a29030021090b20052903800121080b024020034201520d00200541f8016a200f370300200541f0016a2012370300200541c0016a41086a41003a0000200541c9016a2001290000370000200541d1016a200141086a290000370000200541d9016a200141106a290000370000200541e1016a200141186a290000370000200541033a00c001200541c0016a10fe010b02400240200c50450d004200210c0c010b200541c0016a41086a200528020c220141086a290000370300200541c0016a41106a200141106a290000370300200541c0016a41186a200141186a290000370300200520012900003703c0014201210c0b200541d0006a41186a200541c0016a41186a22012903002203370300200541d0006a41106a200541c0016a41106a2206290300220b370300200541d0006a41086a200541c0016a41086a290300220a370300200520052903c001220f370350200541f0016a200e370300200541e8016a220420023703002006200a3703002001200b370300200541e0016a20033703002005200c3703c0012005200f3703c801200541c0016a10d204024020052903c001500d0020052004360210200541106a10cc020b20004100360200200041106a2009370300200041086a20083703000c020b2014ad4220862015ad84210e0b200041086a200e3702002000410136020020002004411874201341ff017141107472200141ff0171410874722006723602040b200541c0026a24000bdb0403027f027e037f230041a0036b22022400200241d0026a410c6a200041e8016a290200370200200241e4026a200041f0016a290200370200200241ec026a200041f8016a290200370200200241e7e485f3063602d0022002200041e0016a2902003702d4022001280200210320024190036a200141046a10c301200241f8026a410c6a20024190036a41086a280200360200200220033602f80220022002290390033702fc02200220012802103602880320024180026a200241d0026a200241f8026a109d040240024020022802c002450d00200241a8016a41056a20024180026a41d00010e9081a200241d0006a200241a8016a41d50010e9081a2002200241d0006a41056a41d00010e9082101200041106a290300210420002903002105200141a8016a200141d00010e9081a200141d0006a410c6a2103410021064100210002400340200041d000460d0120014201370350200141003602582001200537038002200141d0006a20014180026a410810742001200437038002200141d0006a20014180026a41081074200341086a410029009197453700002003410029008997453700002001200141a8016a20006a36026c20014180026a200141d0006a10ae0102402001280254450d002001280250102e0b200141d0006a20014180026a108e03200128025022072001280258108f02210802402001280254450d002007102e0b200041d0006a210020080d000b410221060b0240200141ec016a2802002200450d00200041306c450d00200141e8016a280200102e0b41800621010c010b4100210641800821010b200241a0036a240020012006720b130020004104360204200041fcedc7003602000b3400200041bcdbc80036020420004100360200200041146a4101360200200041106a41a480c800360200200041086a42073702000b130020004101360204200041cc81c8003602000b900706027f017e027f017e087f057e23002203210420034180016b4160712203240042e4cab5fbb6ccdcb0e3002105200342e4cab5fbb6ccdcb0e3003703180240024002402001200284500d00200341e0006a200010d40620032802602106200328026421074201210802400240200328026822090d002006210a0c010b200620094105746a210b200341c0006a41196a210c200621092006210a0340200341286a41106a220d200941106a290300370300200341286a41086a220e200941086a29030037030020032009290300370328200941186a2d0000210f2003200941196a28000036022020032009411c6a280000360023200f4103460d01200c2003280220360000200c41036a22102003280023360000200341c0006a41106a200d2903002211370300200341c0006a41086a220d200e290300370300200320032903283703402003200f3a005802400240024020112003290318520d002008a7210e200341033a0078200329037021052003290360211220032903682113200329037821080240200e41ff0171220e4103470d0020122101201321020c030b200d2903002211200220032903402214200156201120025620112002511b220d1b211120142001200d1b2114200f4102200f200e461b210f2003290350211520122101201321020c010b2003200c28000036026020032010280000360063200d290300211120032903402114200329035021150b200a2014370300200a200f3a0018200a2015370310200a2003280260360019200a2011370308200a411c6a2003280063360000200a41206a210a0b200941206a2209200b470d000b0b200a20066b410575210902400240200842ff018342038550450d00200721030c010b0240024020092007460d0020072103200921070c010b200741016a22092007490d042007410174220a2009200a20094b1b22094104200941044b1b220941ffffff3f71200946410374210a200941057421090240024020070d00200341003602600c010b200341e0006a41086a410836020020032006360260200320074105743602640b200341c0006a2009200a200341e0006a107d200341c8006a280200210920032802404101460d0320032802442106200941057621030b200620074105746a220920053703102009200237030820092001370300200941186a2008370300200741016a21090b20002006200910d506200341ffffff3f71450d002006102e0b200424000f0b2009450d001036000b1038000b130020004104360204200041888dc8003602000b3400200041f8fcc60036020420004100360200200041146a4104360200200041106a41c8a7c800360200200041086a42083702000b130020004101360204200041acaec8003602000bf00101037f230041106b2202240020004100360208200042013702002001200010e805200141106a200010e8052002200128022036020c20002002410c6a410410742002200128022436020c20002002410c6a410410742002200128022836020c20002002410c6a41041074200141306a2802002103200141386a200141346a200128022c4101461b28020022042000107602402004410c6c2204450d00200320046a2104034020002003410810742002200341086a28020036020c20002002410c6a410410742003410c6a22032004470d000b0b2002200128023c36020c20002002410c6a41041074200241106a24000bcf0301027f230041206b2205240020054100360208200542013703000240024002400240024020002802000e03000102030b200541003a00102005200541106a410110744120102c2206450d032005422037021420052006360210200541106a200041086a412010742005200528021022062005280218107402402005280214450d002006102e0b200520002802043602102005200541106a410410740c020b200541013a00102005200541106a410110744120102c2206450d022005422037021420052006360210200541106a200041086a412010742005200528021022062005280218107402402005280214450d002006102e0b200520002802043602102005200541106a410410740c010b200541023a00102005200541106a410110744120102c2206450d012005422037021420052006360210200541106a200041086a412010742005200528021022062005280218107402402005280214450d002006102e0b200520002802043602102005200541106a410410740b200520033703102005200541106a41081074200520043703102005200541106a4108107420022005280200220620052802082001108907210002402005280204450d002006102e0b200541206a240020000f0b1036000b150020002002ad4220862001ad84200310034101460b130020004101360204200041ecb7c8003602000b3400200041a5fec60036020420004100360200200041146a4106360200200041106a41f0bec800360200200041086a421a3702000b130020004103360204200041c8cac8003602000b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241d80436020c20002002410c6a41041074200241106a24000b100020002802002000280204200110680bbc0201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141ac88c0004102200220006a4180016a410020006b104b21000c010b2000280200210402402003412071450d00410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d03200141ac88c0004102200220006a4180016a410020006b104b21000c010b2004ad2001104821000b20024180016a240020000f0b2004418001419c88c0001056000b2004418001419c88c0001056000b8a0702027f047e230041f0016b2202240020002802002100024002400240024020012802002203411071450d00200041086a290300210420002903002105418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d030b200141ac88c0004102200241f0006a20006a41800120006b104b21000c010b200041086a29030021042000290300210502402003412071450d00418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d040b200141ac88c0004102200241f0006a20006a41800120006b104b21000c010b2002412736026c02400240200442ffff1f560d0020054213882004422d868442bda282a38eab04802104420021060c010b200241386a2005420042f3b2d8c19e9ebdcc957f420010e808200241286a2005420042d2e1aadaeda7c987f600420010e808200241d8006a2004420042f3b2d8c19e9ebdcc957f420010e808200241c8006a2004420042d2e1aadaeda7c987f600420010e808200241c8006a41086a290300200241286a41086a290300200241386a41086a290300220620022903287c2204200654ad7c220720022903487c2206200754ad7c2006200241d8006a41086a290300200420022903587c200454ad7c7c2204200654ad7c2207423e8821062004423e8820074202868421040b200241186a20042006428080e0b0b79fb79cf500427f10e808200229031820057c200241f0006a200241ec006a106702402004200684500d00200241f0006a41146a4130200228026c416c6a10eb081a2002411436026c200241086a20044213882006422d8684220542bda282a38eab048022062004428080e0b0b79fb79cf500427f10e808200229030820047c200241f0006a200241ec006a1067200542bda282a38eab04540d00200241f1006a4130200228026c417f6a10eb081a20022006a74130723a00702002410036026c0b200141d4e2cc004100200241f0006a200228026c22006a412720006b104b21000b200241f0016a240020000f0b2000418001419c88c0001056000b2000418001419c88c0001056000ba90705017f047e027f017e017f230041c0016b22022400200241b0016a200141186a2903002203200041186a29020085420020012903102204200029021085420010e808200241a0016a2003200041086a2902008542002004200029020085420010e8082001200141086a2903002205200241a0016a41086a29030020022903a001857c2005200241b0016a41086a29030020022903b001857c200129030042adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c8542178985421789220637030002400240200028022022074125490d002000412c6a2802002107200041286a28020021080c010b200041256a21080b20024190016a20062007ad220985420042adfed5e4d485fda8d800420010e808200120024198016a2903002002290390018520097c42adfed5e4d485fda8d8007e22063703000240024002400240024020074109490d00200741104d0d01200241c0006a2003200720086a41706a220a41086a2900008542002004200a29000085420010e80820012005200241c0006a41086a2903002002290340857c20068542178922063703000340200241306a2003200841086a2900008542002004200829000085420010e808200841106a21082005200241306a41086a2903002002290330857c2006854217892106200741706a220741104b0d000c040b0b0240200741014b0d002007450d0420024180016a2006200831000085420042adfed5e4d485fda8d800420010e80820024188016a2903002002290380018521060c030b200741034b0d01200241f0006a200720086a417f6a310000422086200833000084200685420042adfed5e4d485fda8d800420010e808200241f8006a29030020022903708521060c020b200241d0006a2003200720086a41786a2900008542002004200829000085420010e8082005200241d8006a2903002002290350857c20068542178921060c010b200241e0006a2003200720086a417c6a3500008542002004200835000085420010e8082005200241e8006a2903002002290360857c20068542178921060b200120063703000b02400240200041cc006a2d00000d0020022006420042adfed5e4d485fda8d800420010e808200241086a29030020022903008521060c010b200241206a2006420185420042adfed5e4d485fda8d800420010e808200241106a200241206a41086a290300200229032085200041cd006a31000085420042adfed5e4d485fda8d800420010e808200241106a41086a29030020022903108521060b20012006370300200241c0016a24000b6901017f230041206b220324002003200136020420032000360200200341086a41106a200241106a290200370300200341086a41086a200241086a29020037030020032002290200370308200341a4cec800200341046a41a4cec800200341086a4180a2cc001058000bd30202027f017e23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002903002104418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d030b200141ac88c0004102200220006a41800120006b104b21000c010b2000290300210402402003412071450d00418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d040b200141ac88c0004102200220006a41800120006b104b21000c010b20042001104821000b20024180016a240020000f0b2000418001419c88c0001056000b2000418001419c88c0001056000b13002000410636020420004194cfc8003602000b110041e2a0cc00412841acd3c8001039000b110041e2a0cc00412841bcd3c8001039000bfb0501087f230041206b22042400024002400240200141086a280200220541036a2206417f4c0d0020012d000021072001280204210820012d000121094101210102402006450d002006102c2201450d020b20002001360200200041086a4100360200200041046a2006360200200541017420076a220141ffff03200141ffff03491b220641c0006a41ff0020062006413e2006413e491b220a461b21012006200a6b21064101210a02400340024002400240200a41ff01714102470d002001210b0c010b4100210b200a410171450d004100210a0c010b2006450d020240200641ff014b0d002006417f6a21014102210a410021060c010b200641817e6a210641ff0121014102210a0b200420013a00102000200441106a41011074200b21010c000b0b024002400240024020070d00200041046a2802002106200041086a28020021010c010b0240200041086a220b280200220a200041046a2802002206470d00200a41016a2201200a490d04200a41017422062001200620014b1b22014108200141084b1b210102400240200a0d00200441003602100c010b200441106a41086a41013602002004200a360214200420002802003602100b200420014101200441106a10d104200441086a280200210620042802004101460d0220002004280204360200200041046a20063602000b200b200a41016a22013602002000280200200a6a2009410f713a00000b200620016b2005490d01200028020021060c040b2006450d010c020b200120056a220a2001490d002006410174220b200a200b200a4b1b220a4108200a41084b1b210a0240024020060d00200441003602100c010b200441106a41086a410136020020042006360214200420002802003602100b2004200a4101200441106a10d104200441086a280200210a024020042802004101460d00200020042802042206360200200041046a200a3602000c030b200a0d010b1038000b1036000b200620016a2008200510e9081a200041086a200120056a3602002003200010762000200220031074200441206a24000bff0101047f230041c0006b2202240041aab4c700210341092104410521050240024002400240024002400240200141ff01710e0700010203040506000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41c4c5cb001044000b419eb4c7002103410c2104410021050c040b4192b4c7002103410c2104410121050c030b4188b4c7002103410a2104410221050c020b41ffb3c7002103410321050c010b41f6b3c7002103410421050b20004183c6003b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bf50101047f230041306b22022400200241bad7c7004108108102200241106a41dcd9c7004107108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bb40201037f230041e0006b22022400200241086a41bad7c7004108108102200241186a41f4d8c7004104108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bb40201037f230041e0006b22022400200241086a41bad7c7004108108102200241186a41f4d8c7004104108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000b1300200041033602042000418cd4c8003602000b9a0801097f230041e0006b220224000240024020012802202203109e07450d0020004180063b0001200041013a0000200041036a410a3a00000c010b200241386a22044200370300200241306a22054200370300200241206a41086a420037030020024200370320200241206a41a081ca004107108102200241c0006a41e4d1c100410c1081022004200241c0006a41086a29000037030020052002290040370300200241086a200241206a4120108e020240200128021c200228020c410020022802081b2206460d0020004180063b0001200041013a0000200041036a410a3a00000c010b200241106a10870302400240200228021822052001280224460d00200041800e3b0001200041013a0000200041036a410a3a00000c010b0240200520034b0d0020004180083b0001200041013a0000200041036a410a3a00000c010b200141286a2107200228021020034105746a2108200241003602282002420137032020022001280200360240200241206a200241c0006a41041074200128020421042001410c6a2802002209200241206a1076200241206a200420091074200141106a2802002104200141186a2802002209200241206a10762006210a02402009450d0020042009410c6c6a2109034020042802002103200441086a2802002205200241206a1076200241206a2003200510742004410c6a22042009470d000b2001280224210520012802202103200128021c210a0b2002200a360240200241206a200241c0006a4104107420022003360240200241206a200241c0006a4104107420022005360240200241206a200241c0006a410410742007200228022022012002280228200810fa04210402402002280224450d002001102e0b024020040d0020004180083b0001200041013a0000200041036a410a3a00000c010b0240024002404110102c2204450d0020024210370254200220043602504108200241d0006a1076200241d0006a41bed8c8004108107420022006360220200241d0006a200241206a41041074200241d0006a20084120107420024100360220200241c0006a41304104200241206a107d200241c0006a41086a280200210120022802404101470d012001450d020b1036000b200228024422042002290350370200200441086a200241d0006a41086a280200360200200220022800203602402002200241236a280000360043200041306a41013a00002000412c6a4101360200200041286a2001410c6e360200200041246a2004360200200041206a4100360200200041186a4204370300200041106a42b009370300200041086a427f370300200041003a0000200041316a2002280240360000200041346a2002280043360000200228021441ffffff3f71450d022002280210102e0c020b1038000b200228021441ffffff3f71450d002002280210102e0b200241e0006a24000bdc0102037f017e230041306b22012400200141186a22024200370300200141106a22034200370300200141086a420037030020014200370300200141a081ca004107108102200141206a41f09dc500410a1081022002200141206a41086a29000037030020032001290020370300200141206a200110880320012802202202410120021b21030240024002402001290224420020021b2204422088a720004b0d0041002100200442ffffff3f8350450d010c020b2000200320004105746a10be012100200442ffffff3f83500d010b2003102e0b200141306a240020000bec0505017f017e097f027e027f230041306b2201240002400240101c2202422088a722030d002001200336020c200141013602080c010b2001200336020c20012002a7220436020820042d0000210520012003417f6a36020c2001200441016a3602080240024002400240024020050e020001050b200141206a200141086a10db0820012802202206450d04200141286a2802002107200128022421082001200141086a10ab0120012802000d03024020012802042209200128020c410c6e2205200520094b1bad420c7e2202422088a70d002002a72205417f4c0d000240024020050d004104210a0c010b2005102c220a450d040b2005410c6ead2102024002402009450d000340200141206a200141086a10db0802402001280220220b0d0002402002422088a72205450d002005410c6c2109200a210503400240200541046a280200450d002005280200102e0b2005410c6a2105200941746a22090d000b0b2002a72205450d082005410c6c450d08200a102e0c080b2001290224210c02402002422088220da722052002a7470d00200541016a220e2005490d042005410174220f200e200e200f491b220e4104200e41044b1bad420c7e220d422088a745410274210e200da7210f0240024020050d00200141003602200c010b200141043602282001200a36022020012005410c6c3602240b200141106a200f200e200141206a107d2001280218210e20012802104101460d032001280214210a2002422088220da72105200e410c6ead21020b200a2005410c6c6a2205200c3702042005200b360200200d422086200242ffffffff0f83844280808080107c21022009417f6a22090d000b0b200a450d0520060d030c060b200e0d030b1038000b410021060b2000200836020420002006360200200041106a20023702002000410c6a200a360200200041086a200736020002402003450d002004102e0b200141306a24000f0b1036000b2008450d002006102e0b41cae0cc00412e200141206a41f8e0cc004188e1cc00103e000bd10302017f017e230041a0016b220524002005200136020c024002402005410c6a20022004ad4220862003ad8410092206422088a722030d00410121020c010b2006a721020b200520033602542005200236025002402003450d0020022d0000210420052003417f6a3602542005200241016a360250410021030240024020040e020100020b200541d8006a200541d0006a10a70120052d00584101460d01200541c8006a20054191016a290000370300200541c0006a20054189016a290000370300200541386a20054181016a290000370300200541306a200541f9006a290000370300200541286a200541f1006a290000370300200541206a200541e9006a290000370300200541186a200541e1006a29000037030020052005290059370310410121030b200020033a000020002005290310370001200041096a200541186a290300370000200041116a200541206a290300370000200041196a200541286a290300370000200041216a200541306a290300370000200041296a200541386a290300370000200041316a200541c0006a290300370000200041396a200541c8006a2903003700002002102e200541a0016a24000f0b41cae0cc00412e200541d8006a41f8e0cc004188e1cc00103e000b1d0020004101472002ad4220862001ad842004ad4220862003ad84101b0b930201017f230041106b22022400200220002903003703082001200241086a410810740240024020002903084201510d00200241003a00082001200241086a410110740c010b200241013a00082001200241086a410110742002200041106a2903003703082001200241086a410810740b0240024020002903184201510d00200241003a00082001200241086a410110740c010b200241013a00082001200241086a410110742002200041206a2903003703082001200241086a410810740b0240024020002903284201510d00200241003a00082001200241086a410110740c010b200241013a00082001200241086a410110742002200041306a2903003703082001200241086a410810740b200241106a24000b850201037f230041d0006b22022400200241086a41d9fcc6004106108102200241186a41d8f3cb00410d108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000b830101037f230041206b2202240020022000108c02200228020821032002280200210002404120102c2204450d002002422037021420022004360210200241106a2001412010742000200320022802102201200228021810b20102402002280214450d002001102e0b02402002280204450d002000102e0b200241206a24000f0b1036000b130020004103360204200041d0ddc8003602000b3400200041a0dac80036020420004100360200200041146a4106360200200041106a41fce8c800360200200041086a420f3702000b4201027f230041106b2202240002404108102c22030d001036000b2000420837020420002003360200200242003703082000200241086a41081074200241106a24000b0d00200041002000200010da060b3001017f0240200128020022022001280204470d00200041003602000f0b2001200241e0016a3602002000200210d0030b290020004101360204200041086a200128020420012802006b41e0016e2201360200200020013602000ba20801087f230041d0006b22052400200541306a22064200370300200541286a22074200370300200541186a41086a2208420037030020054200370318200541386a41a0dac800410f1081022008200541386a41086a220929000037030020052005290038370318200541386a41afdac800410d1081022006200929000037030020072005290038370300024002400240200541186a4120108f020d0020064200370300200742003703002008420037030020054200370318200541186a41d9fcc6004106108102200541386a4180f4cb0041061081022006200929000037030020072005290038370300200541106a200541186a4120108e022005280214410020052802101b2106024020034101470d00200541306a220a4200370300200541286a220b4200370300200541186a41086a2208420037030020054200370318200541386a41a0dac800410f1081022008200541386a41086a220929000037030020052005290038370318200541386a41fcedc800410a108102200741086a220c200929000037000020072005290038370000200541086a200541186a4120108e0202402005280208450d00200528020c20064d0d002000410410b0070c030b200a4200370300200b42003703002008420037030020054200370318200541386a41a0dac800410f1081022008200929000037030020052005290038370318200541386a41fcedc800410a108102200c2009290000370000200720052900383700002005200241017420066a360238200541186a4120200541386a410410b2010b200128020421082001280200210920012802082101200541306a4200370300200541286a4200370300200541186a41086a220a420037030020054200370318200541386a41a0dac800410f108102200a200541386a41086a220b29000037030020052005290038370318200541386a41afdac800410d108102200741086a200b29000037000020072005290038370000200541003602402005420137033820052006360248200541386a200541c8006a4104107420052002360248200541386a200541c8006a410410742001200541386a10760240200141286c2207450d00200920076a2101200921070340200541386a2007412010742005200741206a290300370348200541386a200541c8006a41081074200741286a22072001470d000b0b0240024020034101460d00200541003a0048200541386a200541c8006a410110740c010b200541013a0048200541386a200541c8006a4101107420052004360248200541386a200541c8006a410410740b200541186a412020052802382207200528024010b2010240200528023c450d002007102e0b02402008450d00200841286c450d002009102e0b200041063a00000c020b2000410310b0070b200141046a2802002207450d00200741286c450d002001280200102e0b200541d0006a24000b840201047f230041d0006b22022400200241a0dac800410f108102200241106a4194efc800410c108102200220013703302002200241306a410810a301370338200241c0006a410c6a200241306a41086a3602002002200241386a41086a3602442002200241306a3602482002200241386a360240200241206a200241c0006a107c024002402002280228220341206a2204417f4c0d000240024020040d00410121050c010b2004102c2205450d020b20004100360208200020043602042000200536020020002002411010742000200241106a411010742000200228022022042003107402402002280224450d002004102e0b200241d0006a24000f0b1038000b1036000bd30302057f017e230041b0016b2202240002400240200128020022032001280204470d00200041003602000c010b2001200341e0016a3602002002200341206a41e2c289ab0610d103200228020421042002280200210541002101200241003a00680240024002400240034020042001460d01200241c8006a20016a200520016a2d00003a00002002200141016a22063a00682006210120064120460d020c000b0b200141ff0171450d01200241003a00680c010b200241f0006a41086a2201200241c8006a41086a290300370300200241f0006a41106a2204200241c8006a41106a290300370300200241f0006a41186a2205200241c8006a41186a29030037030020022002290348370370200641ff0171411f4d0d00200241286a41186a20052903002207370300200241086a41086a2001290300370300200241086a41106a2004290300370300200241086a41186a2007370300200220022903703703080c010b200241106a4200370300200241186a4200370300200241206a4200370300200242003703080b20002003360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a2903003700000b200241b0016a24000b3001017f0240200128020022022001280204470d00200041003602000f0b2001200241e0016a3602002000200210d2030bd30302057f017e230041b0016b2202240002400240200128020022032001280204470d00200041003602000c010b2001200341e0016a3602002002200341206a41e1ea91cb0610d103200228020421042002280200210541002101200241003a00680240024002400240034020042001460d01200241c8006a20016a200520016a2d00003a00002002200141016a22063a00682006210120064120460d020c000b0b200141ff0171450d01200241003a00680c010b200241f0006a41086a2201200241c8006a41086a290300370300200241f0006a41106a2204200241c8006a41106a290300370300200241f0006a41186a2205200241c8006a41186a29030037030020022002290348370370200641ff0171411f4d0d00200241286a41186a20052903002207370300200241086a41086a2001290300370300200241086a41106a2004290300370300200241086a41186a2007370300200220022903703703080c010b200241106a4200370300200241186a4200370300200241206a4200370300200242003703080b20002003360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a2903003700000b200241b0016a24000b9b0201047f230041c0006b2202240041baddc8002103411621044106210502400240024002400240024002400240200141ff01710e080001020304050607000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41b48dcc001044000b41afddc8002103410b2104410021050c050b41a3ddc8002103410c2104410121050c040b4196ddc8002103410d2104410221050c030b418fddc800210341072104410321050c020b41f7dcc800210341182104410421050c010b41dfdcc800210341182104410521050b20004183163b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b130020004101360204200041c8f3c8003602000b3400200041bed8c80036020420004100360200200041146a4104360200200041106a41b0f8c800360200200041086a42083702000b1300200041013602042000418487c9003602000b3400200041e8fcc60036020420004100360200200041146a4102360200200041106a41808dc900360200200041086a42093702000b130020004101360204200041cc8fc9003602000b4301027f230041106b2202240002404108102c22030d001036000b2000420837020420002003360200200242b8173703082000200241086a41081074200241106a24000b130020004101360204200041d093c9003602000b340020004190dac80036020420004100360200200041146a4103360200200041106a41dc94c900360200200041086a420a3702000b02000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410441002000109f010b810201057f0240024002400240200041086a2802002201450d0020014102742102410021032000280200220421050240034020052802000d01200541046a2105200341016a21032002417c6a22020d000b2001417f6a21030b2003450d0020012003490d01200120036b220541ffffffff03712005470d0220054102742202417f4c0d024104210102402002450d002002102c2201450d040b2001200420034102746a200541027410e9082103200241027621020240200041046a28020041ffffffff0371450d002000280200102e0b20002003360200200041086a2005360200200041046a20023602000b0f0b2003200141dcd8cc001056000b1038000b1036000b9c04030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b200510322207450d010b20002007360200200041086a2006360200200020054102763602042004450d022006417f6a2108200341027420022802006a417c6a2109200641027420076a417c6a210a4100210b200141086a210c2004210d0240034002400240024002400240024002402004200d200b417f736a220e4d0d002001280200200e4102746a220f280200450d06024020030d00410021000c060b420021104100210020092102200a21050340200d200e4d0d022003200320006a2211417f6a4d0d032006200820006a22114d0d0420052002350200200f3502007e20107c20053502007c22103e02002002417c6a21022005417c6a21052010422088211020032000417f6a22006a450d050c000b0b200e200441ccd7cc00103c000b200e200d41ccd7cc00103c000b2011417f6a200341ccd7cc00103c000b2011200641ccd7cc00103c000b2010a721000b2006200b20036a417f736a220520064f0d02200720054102746a20003602000b200b41016a220b2004460d04200a417c6a210a2008417f6a2108200c280200210d0c000b0b2005200641ecd8cc00103c000b1036000b1038000b0240200141046a28020041ffffffff0371450d002001280200102e0b0bab1006037f017e017f017e0c7f027e23004180026b22022400200141346a2802002103200141386a2802002104200141086a29030021052001280230210620012903002107200241086a41186a200141d4006a290000370300200241086a41106a200141cc006a290000370300200241086a41086a200141c4006a2900003703002002200129003c37030820022005370330200220073703282006200441d8006c22086a21092006210102400240024002402004450d004100210a20024198016a41086a210b20024198016a41106a210c20024198016a41186a210d024002400340200b2006200a6a2201413c6a290200370300200c200141c4006a290200370300200d200141cc006a29020037030020024198016a41206a200141d4006a2802003602002002200141346a29020037039801200141306a280200220e450d02200141286a2903002105200141206a2903002107200241e0016a41186a220f200d290300370300200241e0016a41106a2210200c290300370300200241e0016a41086a2211200b29030037030020022002290398013703e00102400240200720052002290328200241286a41086a29030010820522120d004100210f0c010b200241c0016a41186a200f290300370300200241c0016a41106a2010290300370300200241c0016a41086a2011290300370300200220022903e0013703c0014101210f201221130b200e200e280200417f6a2210360200024020100d00200e41046a22102010280200417f6a221036020020100d00200e102e0b200f0d012008200a41d8006a220a470d000b200921010c020b200241386a41086a220e200241c0016a41086a290300370300200241386a41106a220b200241c0016a41106a290300370300200241386a41186a220c200241c0016a41186a290300370300200220022903c00122053703582002200537033802404124102c2208450d002008200229033837020020082013360220200841186a200c290300370200200841106a200b290300370200200841086a200e290300370200200220093602442002200141d8006a220b3602402002200336023c200220063602382002200241286a360248024002400240200441d8006c41a87f6a200a470d0041012103410121040c010b20024198016a41086a210a20024198016a41106a210c20024198016a41186a210d410121034101210403402002200b220141d8006a220b360240200141306a280200210e200141286a2903002105200141206a2903002107200a2001413c6a290200370300200c200141c4006a290200370300200d200141cc006a29020037030020024198016a41206a200141d4006a2802003602002002200141346a2902003703980102400240200e450d00200241e0016a41186a2210200d290300370300200241e0016a41106a2211200c290300370300200241e0016a41086a2212200a29030037030020022002290398013703e00102400240200720052002280248220f290300200f41086a29030010820522060d004100210f0c010b200241c0016a41186a2010290300370300200241c0016a41106a2011290300370300200241c0016a41086a2012290300370300200220022903e0013703c0014101210f200621130b200e200e280200417f6a2210360200024020100d00200e41046a22102010280200417f6a221036020020100d00200e102e0b200f0d012009200b470d020b200141d8006a210b0c020b200241d8006a41086a200241c0016a41086a2903002205370300200241d8006a41106a200241c0016a41106a2903002207370300200241d8006a41186a200241c0016a41186a2903002214370300200220022903c0012215370358200d2014370300200c2007370300200a20053703002002201537039801024020042003470d00200341016a22012003490d092003410174220e2001200e20014b1b22014104200141044b1bad42247e2205422088a74541027421012005a7210e0240024020030d00200241003602e0010c010b200241043602e801200220083602e0012002200341246c3602e4010b200241c0016a200e2001200241e0016a107d20022802c801210120022802c0014101460d0320022802c4012108200141246e21030b2008200441246c6a2201200229039801370200200c2903002105200d2903002107200a290300211420012013360220200141086a2014370200200141186a2007370200200141106a2005370200200441016a21042002280240220b20022802442209470d000b0b2009200b6b220141d8006d210e02402001450d00200e41d8006c210e200b41306a210103402001280200220a200a280200417f6a36020002402001280200220a2802000d00200a41046a220a200a280200417f6a3602002001280200220a41046a2802000d00200a102e0b200141d8006a2101200e41a87f6a220e0d000b0b0240200228023c2201450d00200141d8006c450d002002280238102e0b2004450d042000200336020420002008360200200041086a20043602002000410c6a2002290308370000200041146a200241086a41086a2903003700002000411c6a200241186a290300370000200041246a200241206a2903003700000c050b2001450d050b1036000b200141d8006a21010b024020092001460d000340200141306a220e280200220a200a280200417f6a360200200141d8006a21010240200e280200220a2802000d00200a41046a220a200a280200417f6a360200200e280200220e41046a2802000d00200e102e0b20092001470d000b0b02402003450d00200341d8006c450d002006102e0b200041003602000c010b200041003602002003450d00200341246c450d002008102e0b20024180026a24000f0b1038000b130020004107360204200041d499c9003602000b13002000410236020420004188a0c9003602000b13002000410736020420004190a1c9003602000b1f0002402000280200450d00200041086a280200450d002000280204102e0b0b940202017f027e230041e0006b2202240002402001450d00200241d4006a410f3602002002411c6a41023602002002420237020c200241a0a7c9003602082002410436024c20024198a7c9003602482002200241c8006a3602182002200241d8006a360250200241086a41b0a7c9001044000b200241c0006a41002903e8f846370300200241386a41002903e0f846370300200241306a41002903d8f846370300200241286a41002903d0f846370300200241206a41002903c8f846370300200241186a41002903c0f846370300200241106a41002903b8f846370300200241002903b0f846370308200241c8006a200241086a1087072002350250210320023502482104200241e0006a240020042003422086840bfd1d02087f047e230041900a6b22022400200242808080808020370214200220013602a4062002200041d4e2cc0020011b3602a0062002200241a0066a360210200241b0066a200241106a10990202400240024020022802b4062203450d00200241bc066a280200210420022802b806210520022802b0062106200241e0026a200241c0066a41e00010e9081a200241b0066a200241106a10ec0120022802b00622070d0102402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b2005450d00200541246c450d002003102e0b200241f0016a200241f0006a41e00010e9081a0c010b200241b8066a280200210820022802b4062109200241f0006a200241e0026a41e00010e9081a200241f0016a200241f0006a41e00010e9081a200241b8056a200241f0016a41e00010e9081a0240024020022802102802040d00200241b0066a200241b8056a41e00010e9081a0c010b02402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402005450d00200541246c450d002003102e0b02402008450d00200841c8036c210020072103034002402003220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b200141c8036a210320014198016a109601200041b87c6a22000d000b0b410021032009450d00200941c8036c450d002007102e0b2003450d00200241106a200241b0066a41e00010e9081a200241fc006a2004360200200241f0006a41086a20053602002002200336027420022006360270200241f0006a41106a200241106a41e00010e9082101200241e8016a2008360200200241e4016a2009360200200220073602e001200241f0006a10c4070240024002400240024002402006450d00200241b8056a2006417f6a108c02200241b0066a20022802b805220320022802c005108d0220022d00b0062100200241e0026a41186a2206200241c9066a290000370300200241e0026a41106a200241c1066a290000370300200241e0026a41086a200241b9066a290000370300200220022900b1063703e0020240024020004101460d00200241f0016a41186a420037030020024180026a4200370300200241f8016a4200370300200242003703f0010c010b200241f0016a41186a2006290300370300200241f0016a41106a200241e0026a41106a290300370300200241f0016a41086a200241e0026a41086a290300370300200220022903e0023703f0010b024020022802bc05450d002003102e0b200241f0016a2001412010ec080d0010c507200241f0016a200241f0006a41f00010e9081a2007200841c8036c6a210320022802f001210602400240024020080d00200721000c010b200241b0066a41f0006a21002007210102400340200241b8056a200141e80010e9081a200141e8006a290300210a200241e0026a200141f0006a41d80210e9081a200a4203510d01200241b0066a200241b8056a41e80010e9081a2002200a370398072000200241e0026a41d80210e9081a200241a0066a200241b0066a10c60720022d00a0060d05200141c8036a22012003470d000c030b0b200141c8036a21000b20032000460d002007200841c8036c6a210303402000220141c8036a21000240200141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b20014198016a108b0220032000470d000b0b02402009450d00200941c8036c450d002007102e0b200241fcc6cb004110108e02200228020421080240200228020022094101470d0041fcc6cb00411010ff010b200241e0026a41186a22014200370300200241e0026a41106a22004200370300200241e0026a41086a22034200370300200242003703e002200241b0066a41d9fcc60041061081022003200241b0066a41086a2207290000370300200220022900b0063703e002200241b0066a41acf2cb00410e10810220012007290000370300200020022900b00637030020022008410020091b3602b006200241e0026a4120200241b0066a410410b2014101200210eb04200142003703002000420037030020034200370300200242003703e002200241b0066a41d9fcc600410610810220032007290000370300200220022900b0063703e002200241b0066a41d4f2cb00410b10810220012007290000370300200020022900b006370300200241b0066a200241e0026a10f20420022903b006210a200241b0066a41106a290300210b20022903b806210c200241b0066a41186a290300210d200241b0066a10a903024020022903b806427f427f200c4200200a42015122011b220a200b420020011b7c220b200b200a541b220a200d420020011b7c220b200b200a541b580d004200410210f1040b200610d90610c707450d02200241b0066a10c8072002200241f0016a410c6a28020022083602a0062002200241b0066a410c6a28020022013602b80520082001470d032008450d0520022802b406210920022802f401210641002103034002400240200620036a22012d00002207200920036a22002d0000470d0002400240024002400240024020070e06000304050102000b200141016a200041016a412010ec080d050c060b200141046a2802002205200041046a280200470d042005450d05200141086a280200200041086a280200470d042001410c6a2802002000410c6a280200470d040c050b2001410c6a28020022052000410c6a280200470d03200141046a280200200041046a280200200510ec080d030c040b200141016a280000200041016a280000470d02200141106a2802002205200041106a280200470d02200141086a280200200041086a280200200510ec080d020c030b200141016a280000200041016a280000470d01200141106a2802002205200041106a280200470d01200141086a280200200041086a280200200510ec080d010c020b200141016a280000200041016a280000470d00200141106a2802002205200041106a280200470d00200141086a280200200041086a280200200510ec08450d010b418ba4cc00411410ef02200241e0026a200110ef0420022802e002220720022802e80210c907024020022802e402450d002007102e0b200241e0026a200010ef0420022802e002220720022802e80210c907024020022802e402450d002007102e0b20012d000020002d00002207470d060b024002400240024002400240024020070e06050203040001050b200141046a2802002207200041046a280200470d0b2007450d05200141086a280200200041086a280200470d0b2001410c6a2802002000410c6a280200470d0b0c050b2001410c6a28020022072000410c6a280200470d0a200141046a280200200041046a280200200710ec080d0a0c040b200141016a280000200041016a280000470d09200141106a2802002207200041106a280200470d09200141086a280200200041086a280200200710ec080d090c030b200141016a280000200041016a280000470d08200141106a2802002207200041106a280200470d08200141086a280200200041086a280200200710ec080d080c020b200141016a280000200041016a280000470d07200141106a2802002207200041106a280200470d07200141086a280200200041086a280200200710ec08450d010c070b200141016a200041016a412010ec080d060b200341246a21032008417f6a22080d000c060b0b418aa1cc00411c41a8a1cc001039000b200241086a20022f00a10620022d00a3064110747210fb05200220022903083703f809200241c4066a4101360200200242013702b406200241c4e2cc003602b006200241043602840a2002200241800a6a3602c0062002200241f8096a3602800a200241b0066a41b8a1cc001044000b41c8a1cc00411e41e8a1cc001039000b200241f4026a4100360200200241f0026a41d4e2cc00360200200242013702e402200241f8a1cc003602e002200241a0066a200241b8056a200241e0026a109207000b4190a2cc00412741b8a2cc001039000b0240200241f0016a41306a2201200241b0066a41306a2200412010ec08450d0041dee8cc00410e10ef022001412010c9072000412010c9070b024020012000412010ec08450d0041c8a2cc00412841f0a2cc001039000b0240200241f0016a41d0006a200241b0066a41d0006a412010ec080d00024020022802bc062200450d0020022802b4062101200041246c210003400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b0240200241b8066a2802002201450d00200141246c450d0020022802b406102e0b024020022802fc012200450d0020022802f4012101200041246c210003400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b0240200241f8016a2802002201450d00200141246c450d0020022802f401102e0b200241900a6a240042010f0b4180a3cc00412441a4a3cc001039000b200241fc006a410f360200200241f4026a4102360200200242023702e402200241a0a7c9003602e00220024104360274200241e4a7c9003602702002200241f0006a3602f0022002200241880a6a360278200241e0026a41b0a7c9001044000b99cc010a0b7f027e047f017e017f097e037f027e087f047e230041f0096b2201240020014100360298042001420437039004024002400240024002400240024002400240024002402000410c6a28020041246c2202450d0020002802042103410421044104210541002106410021070340024020032d00004101470d00200341106a2802002208417f4c0d0c200341086a2802002109200341016a280000210a0240024020080d004101210b0c010b2008102c220b450d0c0b200b2009200810e90821092001200a3602a00520014190096a41086a220b200141b0086a41086a2902003703002001200a3602c004200120012800a3053600c304200120012902b00837039009024020072006470d0020062006470d00200641016a220a2006490d0d20064101742204200a2004200a4b1b220a4104200a41044b1bad42247e220c422088a745410274210a200ca721040240024020060d0020014100360280060c010b200141043602880620012005360280062001200641246c360284060b200141b8056a2004200a20014180066a107d20012802c005210620012802b8054101460d04200120012802bc052204360290042001200641246e2206360294040b2004200741246c6a220741013a000020012802c004210a20012800c3042105200720083602102007200836020c20072009360208200741046a20053600002007200a36000120072001290390093702142007411c6a200b290300370200200120012802980441016a220736029804200421050b200341246a21032002415c6a22020d000b0b200141d8046a22034200370300200141c0046a41106a22064200370300200141c0046a41086a22074200370300200142003703c004200141e0046a41d9fcc60041061081022007200141e0046a41086a290300370300200120012903e0043703c004200141f0046a41ccf6cb0041121081022003200141f0046a41086a290300370300200620012903f004370300200141203602a4052001200141c0046a3602a005200141b0086a200141c0046a412010ed0220012802b00822070d01410221080c020b20060d070c080b20012802b40821042001200141b0086a41086a2802003602bc05200120073602b80520014188046a200141b8056a10ab01200128028c04210a024002402001280288040d0020014180046a200141b8056a10ab012001280280040d0020012802bc0522082001280284042203490d002003417f4c0d090240024020030d00410121020c010b200310322202450d0920012802bc0521080b024020082003490d00200220012802b805200310e9081a20012802bc0522082003490d042001200820036b3602bc05200120012802b80520036a3602b805410121080c020b2002102e0b200141003602980920014201370390092001410a360294052001200141a0056a36029005200120014190096a3602f00420014194066a41013602002001420137028406200141909dc50036028006200120014190056a36029006200141f0046a419cebc00020014180066a103d1a20012802900920012802980910ef020240200128029409450d00200128029009102e0b410221080b2004450d002007102e0b024020084102460d00410121070240200a411e490d0041002107024020034108470d00200229000042f0deb1db968cd9b7f4005121070b200741017321070b02402003450d002002102e0b20070d004200210d20014190096a210e0c050b2001418c066a41002903b8f8463702002001411e36028006200141002903b0f84637028406200141c0046a41186a22074200370300200141d0046a22084200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41d9fcc60041061081022003200141e0046a41086a2202290300370300200120012903e0043703c004200141f0046a41ccf6cb004112108102200641086a220a200141f0046a41086a2204290300370000200620012903f00437000020014100360298092001420137039009411e20014190096a107620014180066a41047220014190096a10e805200141c0046a4120200128029009220920012802980910b2010240200128029409450d002009102e0b200742003703002008420037030020034200370300200142003703c004200141e0046a41d9fcc600410610810220032002290300370300200120012903e0043703c004200141f0046a41c0f7cb004118108102200a2004290300370000200620012903f0043700000240200141c0046a108603220341ff01714102460d002003410171450d004200210c20014190056a210f0c040b200141c0046a41186a4200370300200141c0046a41106a4200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41d9fcc60041061081022003200141e0046a41086a290300370300200120012903e0043703c004200141f0046a41c0f7cb004118108102200641086a200141f0046a41086a290300370000200620012903f004370000200141013a009005200141c0046a412020014190056a410110b201200141e0046a41d9fcc6004106108102200141f0046a41dcf1cb0041071081024120102c2203450d05200142203702bc05200120033602b805200141b8056a200141e0046a41101074200141b8056a200141f0046a4110107420012802c0052208417f4c0d0620012802b805210a0240024020080d00410121030c010b2008102c2203450d060b20014180066a2003200a200810e9082008108b052008ad220c422086200c84210c2001280280062207450d02200141b8066a210e200141a8066a211020014198066a2111034020032102200c211220072103024002402008200129028406220c422088a722074b0d00200a2003200810ec08450d010b200ca7450d032003102e0c030b02402012a7450d002002102e0b200120073602c404200120033602c004200141b0086a2003200710ed020240024020012802b0082202450d0020012802b408210402400240024020012802b80822094104490d002009417c71220b4104460d00200b4108460d00200941746a4110490d00200941646a4110490d00200941546a4110490d00200941446a410f4b0d010b200141003602980920014201370390092001410a360294052001200141c0046a36029005200120014190096a3602a00520014101360294062001420137028406200141909dc50036028006200120014190056a36029006200141a0056a419cebc00020014180066a103d1a20012802900920012802980910ef020240200128029409450d00200128029009102e0b410021090c010b2002280000210f2002280004211320022800082105200241146a2900002114200229000c2115200241c4006a2900002116200241346a2900002117200241246a2900002118200229003c2119200229002c211a200229001c211b410121090b02402004450d002002102e0b2009450d00200820074b0d01200141d4e2cc00200320086a41106a200720086b22024110491b3602900920014100200241706a2204200420024b1b3602940920014180066a20014190096a10930120012d0080064101460d00200e20163703002010201737030020112018370300200120193703b0062001201a3703a0062001201b370390062001201537038006200141003602cc06200120053602c806200120133602c4062001200f3602c00620012014370388062003200720014180066a10c9050b20014180066a20032007108b0520012802800622070d010c040b0b2008200741c4dbc8001056000b2003200841b8b2c0001056000b2012210c200221030b0240200ca7450d002003102e0b024020012802bc05450d00200a102e0b20014180066a10a903200129038806210c20014190056a210f0b200141b0086a41d9fcc600410610810220014190096a419f8dcc00411410810220014180066a41086a200141b0086a41086a220329020037030020014180066a41106a20012903900937030020014180066a41186a20014190096a41086a290300370300200120012902b0083703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00900520014190096a200f41011074200141003a00900520014190096a200f4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b200141c0046a41186a4200370300200141c0046a41106a4200370300200141c0046a41086a22074200370300200142003703c004200141b8056a41a8f8c60041041081022007200141b8056a41086a290000370300200120012900b8053703c004200141b0086a41d48bc500410f108102200641086a2003290000370000200620012900b008370000200141203602a4052001200141c0046a3602a005200141b0086a200141c0046a412010ed0241042103024020012802b0082207450d0020012802b40821082001200141b8086a28020022033602bc05200120073602b805200141003a009005024002402003450d0020012003417f6a3602bc052001200741016a3602b8054103210302400240024020072d00000e020100030b20014180066a200141b8056a10950220012d00900622034103460d01200141e0046a41086a20014180066a41086a290300221237030020014190096a41086a22022012370300200120012800910636028005200120014194066a28000036008305200120012903800637039009200120012802800536029005200120012800830536009305200141f0046a41086a200229030037030020012001290390093703f00420012001280093053600b30520012001280290053602b0050b20014180066a41086a200141f0046a41086a290300370300200120012800b30536008b05200120012802b00536028805200120012903f004370380062001200128028805360290052001200128008b05360093050c020b200120012903e004370390090b200141003602980920014201370390092001410a360294052001200141a0056a36029005200120014190096a3602f00420014194066a41013602002001420137028406200141909dc50036028006200120014190056a36029006200141f0046a419cebc00020014180066a103d1a20012802900920012802980910ef020240200128029409450d00200128029009102e0b410421030b2008450d002007102e0b200141e0046a41086a220820014180066a41086a29030037030020012001290380063703e00420012001280290053602800520012001280093053600830541032107024020034104460d0020014190096a41086a2008290300370300200120012903e0043703900920012001280280053602b00820012001280083053600b308200321070b42c0b6fc9a012117024020074103460d0020014194066a20012800b30836000020014180066a41086a20014190096a41086a290300370300200120012903900937038006200120073a009006200120012802b0083600910620014180066a10ed0442c0f8d3ca0121170b200141d8046a22074200370300200141c0046a41106a22084200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41a8f8c60041041081022003200141e0046a41086a2202290300370300200120012903e0043703c004200141f0046a41d48bc500410f108102200641086a220a200141f0046a41086a2204290300370000200620012903f004370000200141c0046a412010ff01200742003703002008420037030020034200370300200142003703c004200141e0046a41a8f8c600410410810220032002290300370300200120012903e0043703c004200141f0046a418c8bc500410b108102200a2004290300370000200620012903f004370000200141c0046a42014204410210c205200742003703002008420037030020034200370300200142003703c004200141e0046a41a8f8c600410410810220032002290300370300200120012903e0043703c004200141f0046a41d48bc500410f108102200a2004290300370000200620012903f004370000200141c0046a42014204410210c205200141e0046a418ef9c0004110108102200141f0046a41fbafc90041061081024120102c2203450d012001422037029409200120033602900920014190096a200141e0046a4110107420014190096a200141f0046a411010742001280298092208417f4c0d0220012802900921054101210202402008450d002008102c2202450d020b427f200c4280c2d72f7c22122012200c541b211920022005200810e9081a20014198066a21132008210a20082107034020014180066a20022007108b05024002400240024002402001280280062203450d002001280284062104024020012802880622072008490d0020052003200810ec08450d020b2004450d002003102e0b0240200a450d002002102e0b0240200128029409450d002005102e0b20014180066a10df04200129038806210c200141c0046a41a5fec600411a108102200141b8056a419f8dcc00411410810220014180066a41086a2207200141c0046a41086a220829000037030020014180066a41106a220220012900b80537030020014180066a41186a220a200141b8056a41086a2204290000370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220920012802980910b201200141b0086a41106a21030240200128029409450d002009102e0b200141c0046a41f4d8c7004104108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a20042900003700002007200829000037030020022003290300370300200a200141b0086a41186a290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b200141c0046a419dfec6004108108102200141b0086a419f8dcc00411410810220014190096a41086a2207200141c0046a41086a29000037030020014190096a41106a220820012900b008370300200141a8096a2202200141b0086a41086a220a290000370300200120012900c0043703900920014100360288062001420137038006200141033b01b00820014180066a200141b0086a41021074200141003a00b00820014180066a200141b0086a41011074200141003a00b00820014180066a200141b0086a4101107420014190096a4120200128028006220420012802880610b2010240200128028406450d002004102e0b200141b8056a4195fec6004108108102200141b0086a419f8dcc0041141081022007200141b8056a41086a290000370300200820012900b0083703002002200a290000370300200120012900b8053703900920014100360288062001420137038006200141033b01b00820014180066a200141b0086a41021074200141003a00b00820014180066a200141b0086a41011074200141003a00b00820014180066a200141b0086a4101107420014190096a4120200128028006220720012802880610b2010240200128028406450d002007102e0b200141e0046a4190fec6004105108102200141f0046a419f8dcc004114108102200141c0046a41086a2207200141e0046a41086a290300370300200141c0046a41106a20012903f004370300200141c0046a41186a200141f0046a41086a290300370300200120012903e0043703c00420014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900920014180066a20014190096a41011074200141003a00900920014180066a20014190096a41011074200141c0046a4120200128028006220820012802880610b2010240200128028406450d002008102e0b200141c0046a4188fec6004108108102200141b8056a419f8dcc004114108102200141b0086a41086a2007290000370300200141b0086a41106a20012900b805370300200141b0086a41186a200141b8056a41086a290000370300200120012900c0043703b00820014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900920014180066a20014190096a41011074200141003a00900920014180066a20014190096a41011074200141b0086a4120200128028006220720012802880610b2010240200128028406450d002007102e0b200141c0046a4181fec6004107108102200141b0086a419f8dcc00411410810220014180066a41086a2207200141c0046a41086a29000037030020014180066a41106a220820012900b00837030020014180066a41186a2202200141b0086a41086a220a290000370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00900520014190096a200f41011074200141003a00900520014190096a200f4101107420014180066a4120200128029009220420012802980910b2010240200128029409450d002004102e0b200141b8056a41bcdbc8004107108102200141b0086a419f8dcc004114108102200620012900b008370000200641086a200a2900003700002007200141b8056a41086a2900003703002008200141c0046a41106a2903003703002002200141c0046a41186a290300370300200120012900b8053703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b20014180066a41106a2108200141e0046a41b6d1cc004106108102200141f0046a419f8dcc004114108102200320012903f004370000200341086a200141f0046a41086a29030037000020014180066a41086a200141e0046a41086a29030037030020014180066a41106a2207200141b0086a41106a29030037030020014180066a41186a220a200141b0086a41186a290300370300200120012903e0043703800620014100360298092001420137039009200141003b01b00820014190096a200141b0086a41021074200141083a00b00820014190096a200141b0086a410110742001411e3a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220220012802980910b2010240200128029409450d002002102e0b20014180066a41106a2102200141c0046a41bad7c7004108108102200141b8056a419f8dcc004114108102200820012900b805370000200841086a200141b8056a41086a29000037000020014190096a41086a200141c0046a41086a29000037030020014190096a41106a200729030037030020014190096a41186a200a290300370300200120012900c0043703900920014100360288062001420137038006200141033b01b00820014180066a200141b0086a41021074200141003a00b00820014180066a200141b0086a41011074200141003a00b00820014180066a200141b0086a4101107420014190096a4120200128028006220720012802880610b2010240200128028406450d002007102e0b20014190096a41106a2107200141b8056a41eefdc6004113108102200141b0086a419f8dcc004114108102200220012900b008370000200241086a200141b0086a41086a2202290000370000200141c0046a41086a200141b8056a41086a290000370300200141c0046a41106a20014180066a41106a290300370300200141c0046a41186a20014180066a41186a290300370300200120012900b8053703c00420014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900520014180066a200f41011074200141003a00900520014180066a200f41011074200141c0046a4120200128028006220a20012802880610b2010240200128028406450d00200a102e0b200141e0046a41ddfdc6004111108102200141f0046a419f8dcc004114108102200720012903f004370000200741086a200141f0046a41086a2903003700002002200141e0046a41086a290300370300200141b0086a41106a20014190096a41106a290300370300200141b0086a41186a20014190096a41186a290300370300200120012903e0043703b00820014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900920014180066a20014190096a41011074200141003a00900920014180066a20014190096a41011074200141b0086a4120200128028006220220012802880610b2010240200128028406450d002002102e0b200141c0046a41cbfdc6004112108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a2202200141b8056a41086a220a29000037000020014180066a41086a2204200141c0046a41086a220929000037030020014180066a41106a220b200141b0086a41106a220529030037030020014180066a41186a2213200141b0086a41186a220e290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009221020012802980910b2010240200128029409450d002010102e0b200141c0046a41c4fdc6004107108102200141b8056a419f8dcc004114108102200320012900b8053700002002200a29000037000020042009290000370300200b20052903003703002013200e290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220220012802980910b2010240200128029409450d002002102e0b200141e0046a41de80ca004109108102200141f0046a419f8dcc004114108102200820012903f004370000200841086a200141f0046a41086a29030037000020014190096a41086a200141e0046a41086a29030037030020014190096a41106a220220014180066a41106a29030037030020014190096a41186a220a20014180066a41186a290300370300200120012903e0043703900920014100360288062001420137038006200141033b01b00820014180066a200141b0086a41021074200141003a00b00820014180066a200141b0086a41011074200141003a00b00820014180066a200141b0086a4101107420014190096a4120200128028006220420012802880610b2010240200128028406450d002004102e0b200141c0046a41b2fdc6004112108102200141b8056a419f8dcc004114108102200720012900b805370000200741086a200141b8056a41086a290000370000200141b0086a41086a200141c0046a41086a290000370300200141b0086a41106a2002290300370300200141b0086a41186a200a290300370300200120012900c0043703b00820014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900920014180066a20014190096a41011074200141003a00900920014180066a20014190096a41011074200141b0086a4120200128028006220220012802880610b2010240200128028406450d002002102e0b200141e0046a41bed8c8004108108102200141f0046a419f8dcc004114108102200320012903f004370000200341086a2202200141f0046a41086a220a29030037000020014180066a41086a2204200141e0046a41086a220929030037030020014180066a41106a220b200141b0086a41106a220529030037030020014180066a41186a2213200141b0086a41186a220e290300370300200120012903e0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009221020012802980910b2010240200128029409450d002010102e0b200141e0046a41abfdc6004107108102200141f0046a419f8dcc004114108102200320012903f0043700002002200a29030037000020042009290300370300200b20052903003703002013200e290300370300200120012903e0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220220012802980910b2010240200128029409450d002002102e0b200141c0046a41a081ca004107108102200141b8056a419f8dcc004114108102200820012900b805370000200841086a200141b8056a41086a29000037000020014190096a41086a200141c0046a41086a29000037030020014190096a41106a220820014180066a41106a29030037030020014190096a41186a220220014180066a41186a290300370300200120012900c0043703900920014100360288062001420137038006200141033b01b00820014180066a200141b0086a41021074200141003a00b00820014180066a200141b0086a41011074200141003a00b00820014180066a200141b0086a4101107420014190096a4120200128028006220a20012802880610b2010240200128028406450d00200a102e0b200141e0046a41a1fdc600410a108102200141f0046a419f8dcc004114108102200720012903f004370000200741086a200141f0046a41086a290300370000200141b0086a41086a200141e0046a41086a290300370300200141b0086a41106a2008290300370300200141b0086a41186a2002290300370300200120012903e0043703b00820014100360288062001420137038006200141033b01900920014180066a20014190096a41021074200141003a00900920014180066a20014190096a41011074200141003a00900920014180066a20014190096a41011074200141b0086a4120200128028006220820012802880610b2010240200128028406450d002008102e0b200141c0046a4199fdc6004108108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a200141b8056a41086a29000037000020014180066a41086a200141c0046a41086a29000037030020014180066a41106a200141b0086a41106a29030037030020014180066a41186a200141b0086a41186a290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220820012802980910b2010240200128029409450d002008102e0b20014190096a41186a420037030020014190096a41106a420037030020014190096a41086a220842003703002001420037039009200141e0046a4192fdc60041071081022008200141e0046a41086a290300370300200120012903e00437039009200141f0046a419cfdca00410e108102200741086a200141f0046a41086a290300370000200720012903f004370000200141203602c404200120014190096a3602c004200141b8056a20014190096a412010ed0220012802b80522080d01410621070c020b0240200a450d002002102e0b20014180066a2003200710e90220012802a0062209450d022013290300210c20014180066a41086a29030021152001290390062112200129038006211420012903a806211b20012802a406210b20014100200720086b220241786a220a200a20024b1b3602b408200141d4e2cc00200320086a41086a20024108491b3602b00820014180066a200141b0086a109301024020012d0080064101470d00200321022004210a200b41ffffff3f71450d042009102e0c030b420021184280e8eda1ba01211a024020124280cab5ee0185200c84500d0020124280e8eda1ba0185200c84500d002012211a200c21180b201320183703002001201a3703900620012014370380062001201b3703a806200120093602a00620012015370388062001200b3602a4062003200720014180066a10b905200b41ffffff3f71450d022009102e0c020b200141c0056a280200210220012802bc05210a41002107200141003a00a005024002402002450d000240024002400240024020082d00000e06060001020304050b410121070c050b410221070c040b410321070c030b410421070c020b410521070c010b200141003602b808200142013703b0082001410a360294052001200141c0046a360290052001200141b0086a3602a00520014194066a41013602002001420137028406200141909dc50036028006200120014190056a36029006200141a0056a419cebc00020014180066a103d1a20012802b00820012802b80810ef02024020012802b408450d0020012802b008102e0b410621070b200a450d002008102e0b42c0acb7a20b2112024020074104470d00200141c8086a22084200370300200141c0086a22024200370300200141b0086a41086a22074200370300200142003703b008200141c0046a4192fdc60041071081022007200141c0046a41086a220a290000370300200120012900c0043703b008200141b8056a41dd8cc5004112108102200341086a2204200141b8056a41086a2209290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a419c8dc500411210810220042009290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a41fa8cc500410d10810220042009290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a41ef8cc500410b10810220042009290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a41cc8cc500411110810220042009290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a41878dc500411510810220042009290000370000200320012900b805370000200141b0086a412010ff01200842003703002002420037030020074200370300200142003703b008200141c0046a4192fdc60041071081022007200a290000370300200120012900c0043703b008200141b8056a419cfdca00410e10810220042009290000370000200320012900b80537000020014100360288062001420137038006200141053a00a00520014180066a200141a0056a41011074200141b0086a4120200128028006220720012802880610b2010240200128028406450d002007102e0b42808aa6e40d21120b200141c0046a4192fdc6004107108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a2207200141b8056a41086a220829000037000020014180066a41086a2202200141c0046a41086a220a29000037030020014180066a41106a2204200141b0086a41106a220929030037030020014180066a41186a220b200141b0086a41186a2205290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00900520014190096a200f41011074200141003a00900520014190096a200f4101107420014180066a4120200128029009221320012802980910b2010240200128029409450d002013102e0b200141c0046a4190dac800410a108102200141b8056a419f8dcc004114108102200320012900b805370000200720082900003700002002200a29000037030020042009290300370300200b2005290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b200141c0046a4180fdc6004112108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a2207200141b8056a41086a220829000037000020014180066a41086a2202200141c0046a41086a220a29000037030020014180066a41106a2204200141b0086a41106a220929030037030020014180066a41186a220b200141b0086a41186a2205290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009221320012802980910b2010240200128029409450d002013102e0b2017200c7c210c200141c0046a41f8fcc6004108108102200141b8056a419f8dcc004114108102200320012900b805370000200720082900003700002002200a29000037030020042009290300370300200b2005290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b200c2017542107200141c0046a41f1fcc6004107108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a2208200141b8056a41086a220229000037000020014180066a41086a220a200141c0046a41086a220429000037030020014180066a41106a2209200141b0086a41106a220b29030037030020014180066a41186a2205200141b0086a41186a2213290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220f20012802980910b2010240200128029409450d00200f102e0b427f200c20071b210c200141c0046a41e8fcc6004109108102200141b8056a419f8dcc004114108102200320012900b80537000020082002290000370000200a20042900003703002009200b29030037030020052013290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b2019200c7c210c200141c0046a41a8f8c6004104108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a2207200141b8056a41086a220829000037000020014180066a41086a2202200141c0046a41086a220a29000037030020014180066a41106a2204200141b0086a41106a220929030037030020014180066a41186a220b200141b0086a41186a2205290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009221320012802980910b2010240200128029409450d002013102e0b200c2019542113200141c0046a41dffcc6004109108102200141b8056a419f8dcc004114108102200320012900b805370000200720082900003700002002200a29000037030020042009290300370300200b2005290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00b00820014190096a200141b0086a41011074200141003a00b00820014190096a200141b0086a4101107420014180066a4120200128029009220720012802980910b2010240200128029409450d002007102e0b427f200c20131b210c200141c0046a41f4c2cc004118108102200141b8056a419f8dcc004114108102200320012900b805370000200341086a200141b8056a41086a29000037000020014180066a41086a200141c0046a41086a29000037030020014180066a41106a200141b0086a41106a29030037030020014180066a41186a200141b0086a41186a290300370300200120012900c0043703800620014100360298092001420137039009200141033b01b00820014190096a200141b0086a41021074200141003a00a00520014190096a200141a0056a41011074200141003a00a00520014190096a200141a0056a4101107420014180066a4120200128029009220320012802980910b2010240200128029409450d002003102e0b427f200c20127c22122012200c541b210d20014190096a210e0c020b200321022004210a0c000b0b4102200110eb04200141003602800641fcc6cb00411020014180066a410410b201200141c0046a41186a22074200370300200141c0046a41106a22084200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41d9fcc60041061081022003200141e0046a41086a2202290300370300200120012903e0043703c004200141f0046a4180f4cb004106108102200641086a220a200141f0046a41086a2209290300370000200620012903f00437000020012000280200220436028006200141c0046a412020014180066a410410b20120014190046a10ee04200041106a220b10f0042004417f6a200b10a407200742003703002008420037030020034200370300200142003703c004200141e0046a41d9fcc600410610810220032002290300370300200120012903e0043703c004200141f0046a41d4f2cb00410b108102200a2009290300370000200620012903f004370000200141c0046a412010ff01200742003703002008420037030020034200370300200142003703c004200141e0046a41d9fcc600410610810220032002290300370300200120012903e0043703c004200141f0046a41e0f4cb004106108102200a2009290300370000200620012903f004370000200141c0046a412010ff01200742003703002008420037030020034200370300200142003703c004200141e0046a41d9fcc600410610810220032002290300370300200120012903e0043703c004200141f0046a41a4f5cb00410a108102200a2009290300370000200620012903f004370000200141c0046a412010ff01200742003703002008420037030020034200370300200142003703c004200141e0046a41d9fcc600410610810220032002290300370300200120012903e0043703c004200141f0046a41c0f5cb00410b108102200a2009290300370000200620012903f004370000200141c0046a412010890320014190096a41186a220b420037030020014190096a41106a2200420037030020014190096a41086a220542003703002001420037039009200141c0046a4192fdc600410710810220052003290000370300200120012900c00437039009200141b0086a4194adc600410a108102200b200141b0086a41086a2213290000370300200020012900b008370300200141f8036a200e4120108e0220012802fc03210f20012802f8032110200b420037030020004200370300200542003703002001420037039009200141c0046a4192fdc600410710810220052003290000370300200120012900c00437039009200141b0086a4198b7c6004115108102200b2013290000370300200020012900b008370300200141f0036a200e4120108e0220012802f403210b20012802f003210520014180066a200f410020101b109503200141e8036a2001280280062210200128028806108e0220012802ec03211320012802e803210f0240200128028406450d002010102e0b200742003703002008420037030020034200370300200142003703c004200141e0046a41a8f8c600410410810220032002290300370300200120012903e0043703c004200141f0046a41fa8bc500410a108102200a2009290300370000200620012903f004370000200141d8036a200141c0046a108503200141c8036a20012903e003420020012802d8031b420042e012420010e808024002400240024020012903d00350450d0020012903c803210c20014198066a2207420037030020014190066a2209420037030020014180066a41086a220342003703002001420037038006200141b8056a41a8f8c60041041081022003200141b8056a41086a2208290000370300200120012900b80537038006200141b0086a41e38bc500410b1081022007200141b0086a41086a2202290000370300200920012900b008370300200141b8036a20014180066a108503200c20012903c003420020012802b8031b7c2212200c540d012007420037030020094200370300200342003703002001420037038006200141b8056a41a8f8c600410410810220032008290000370300200120012900b80537038006200141b0086a41c98bc500410b108102200941086a2002290000370000200920012900b008370000200141a8036a20014180066a1085034100417f2004417f41004100417f2004427f201242e0127c220c200c2012541b221220012903b003420020012802a8031b7d220ca7417f200c428080808010541b6a220320032004491b200c2012561b220320046b2207200720034b1b22034100410041064100200b410020051b220720134100200f1b6b2208200820074b1b6b2207200741064b1b2207417f6a2208200820074b1b41e0126c6a220720072003491b6a220320032004491b220320046b2207200720034b1b2108200141a0036a10f40442a082c0dd00211c0240024020012d00a0032202417e6a22074102200741ff01714102491b41ff01710e020001050b200320044d0d04200841d8044b0d040c030b200320044d0d03200841d904490d020c030b41e8b2c40041fa0041e4b3c400105d000b41e8b2c40041fa0041f4b3c400105d000b4290cad9c400210c42002112024002400240200241ff01714103460d0020014180066a410141ffff0310ef052001280280064101460d0320014198066a2208290300210c20014190066a220328020021072001418c066a2213280200210a20014180066a41086a2202280200210b20014180066a4101417f10e9052001280280064101460d022008290300211220032802002105201328020021132002280200210f2008420037030020034200370300200242003703002001420037038006200141b0086a4192fdc60041071081022002200141b0086a41086a2210290000370300200120012900b00837038006200141b0086a41b4aac600410e10810220082010290000370300200320012900b00837030020014198036a20014180066a4120108e02200741ffff034b0d01200128029c0341002001280298031b211d200120073602bc05200120053602b80520014198066a2210420037030020014180066a41106a2211420037030020014180066a41086a220842003703002001420037038006200141b0086a41a5fec600411a1081022008200141b0086a41086a2202290000370300200120012900b00837038006200141b0086a41ccc5c8004110108102200341086a221e2002290000370000200320012900b00837000020014100360298092001420137039009200141b8056a20014190096a109102200141b8056a41047220014190096a10910220014180066a4120200128029009221f20012802980910b2010240200128029409450d00201f102e0b2010420037030020114200370300200842003703002001420037038006200141b0086a41a5fec600411a10810220082002290000370300200120012900b00837038006200141b0086a4194c5c800410e108102201e2002290000370000200320012900b0083700002001201d3602900920014180066a412020014190096a410410b201200141a4096a200736020020014190096a41106a200a3602002001200b36029c09200120053602980920012013360294092001200f360290092010420037030020114200370300200842003703002001420037038006200141b0086a41a5fec600411a10810220082002290000370300200120012900b00837038006200141b0086a41c8c4c8004108108102201e2002290000370000200320012900b008370000200141003602b808200142013703b00820014190096a200141b0086a10b6012007200141b0086a107602402007450d0020074105742107200b21030340200141b0086a200341201074200341206a2103200741606a22070d000b0b20014180066a412020012802b008220320012802b80810b201024020012802b408450d002003102e0b02402005450d00200541386c2107200f412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200741486a22070d000b0b02402013450d00201341386c450d00200f102e0b0240200a41ffffff3f71450d00200b102e0b427f427f200c20127c22122012200c541b220c42c0b6fc9a017c22122012200c541b21124290bad8ce02210c0b4101200410ec04200141d8046a4200370300200141d0046a4200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41a5fec600411a1081022003200141e0046a41086a290300370300200120012903e0043703c004200141f0046a4180c3c8004105108102200641086a200141f0046a41086a290300370000200620012903f00437000020014190036a200141c0046a4120108e0220014180066a41086a20012802940341012001280290031b360200200141053a008406200141173a008006427f200c427f20124280c2d72f7c221520152012541b7c22122012200c541b211c20014180066a10fe010c020b02402005450d00200541386c2107200f412c6a210303400240200328020041ffffff3f71450d002003417c6a280200102e0b200341386a2103200741486a22070d000b0b2013450d00201341386c450d00200f102e0b200a41ffffff3f71450d00200b102e0b42002120420021210240200441808c15700d00200142f0f2bda1a7ee9cb9f9003703800620014190096a20014180066a10cd02200141b0086a20014190096a10c80220014180066a20012802b008220a20012802b80810c9024100210341002107410021084100210202402001290380064201520d0020014190066a28020021072001280288062102200128028c06210820012802940621030b024020012802b408450d00200a102e0b200142002003ad4220862007ad8422122008ad4220862002ad84220c4280c8afa02554ad7d2215200c4280b8d0df5a7c2214200c562015201256200c42ffc7afa025561b22031b220c3703980520014200201420031b22123703900520014180066a41186a200c37030020014180066a41106a201237030020014180066a41086a221341013a00002001410e3a00800620014180066a10fe01200142f0f2bda1a7ee9cb9f90037038006200141b8056a20014180066a10cd0241002110200141003a008005200142003703a805200142003703a00520014190096a41186a2222420037030020014190096a41106a2223420037030020014190096a41086a220a42003703002001420037039009200141c0046a41bad7c7004108108102200a200141c0046a41086a2224290000370300200120012900c00437039009200141b0086a4194ccc2004109108102200041086a2225200141b0086a41086a2226290000370000200020012900b00837000020014180066a200e109b03200129028406220c4200200128028006221d1b221b42ffffffff0f832118200c422088211a201d4104201d1b21110240201b422088a7220b450d0020014180066a41096a2127200141d0096a211f200141b0096a21284100211e200141b8066a21294100211041002107024003400240024002402010450d00201120074102746a210320112007201e6a4102746a21080340200141c0046a2003280200220510d60320014180066a20012802c004220f20012802c80410b805200129038006210c20014190096a201341e00010e9081a410021020240200c4201520d00200141b0086a20014190096a41e00010e9081a410121020b024020012802c404450d00200f102e0b2002450d0320014190096a200141b0086a41e00010e9081a200129039005221520012903900922145420014190056a41086a290300220c200a290300221254200c2012511b450d02200141013a00800520082003280200360200200341046a2103200841046a2108200741016a2207200b490d000c050b0b201120074102746a21030340200141c0046a2003280200220510d60320014180066a20012802c004220220012802c80410b805200129038006210c20014190096a201341e00010e9081a410021080240200c4201520d00200141b0086a20014190096a41e00010e9081a410121080b024020012802c404450d002002102e0b2008450d0220014190096a200141b0086a41e00010e9081a200129039005221520012903900922145a20014190056a41086a290300220c200a29030022125a200c2012511b0d01200341046a2103200141013a008005200741016a2207200b490d000b410021100c040b2001201520147d370390052001200c20127d2015201454ad7d3703980520014180066a200510d603200128028006220320012802880610ff010240200128028406450d002003102e0b20014180036a202820012903a009202229030010fb01200141f0026a201f200129039009200a29030010fd01200141a0056a41086a2203427f2003290300220c200141f0026a41086a2903007c20012903a005221220012903f0027c22152012542203ad7c221220032012200c542012200c511b22031b3703002001427f201520031b3703a005200129039009210c2029200a2903003703002027201f290000370000202741086a201f41086a290000370000202741106a201f41106a290000370000202741186a201f41186a2900003700002001200c3703b006200141023a0088062001410e3a008006200120053602ac0620014180066a10fe010b201e417f6a211e201041016a2110200741016a2207200b490d000b0b024020100d00410021100c010b2011200720106b4102746a201120074102746a200b20076b41027410ea081a0b201a4200201d1b210c200120113602800620012018200b20106bad42208684370284062022420037030020234200370300200a42003703002001420037039009200141c0046a41bad7c7004108108102200a2024290000370300200120012900c00437039009200141b0086a4194ccc200410910810220252026290000370000200020012900b008370000200e20014180066a10c7050240201b42ffffffff0383500d002011102e0b200120014180056a3602b0082001200141a0056a3602b005200120014190056a36028805200141d8046a22004200370300200141d0046a220e4200370300200141c0046a41086a22134200370300200142003703c004200141e0046a41bad7c70041081081022013200141e0046a41086a2210290300370300200120012903e0043703c004200141f0046a41c0dac000410f108102200641086a2211200141f0046a41086a221e290300370000200620012903f004370000200c42f89fb81d7e200c42c0d1e1237e7c2115200c4280c6868f017e211420014180066a200141c0046a109b03200129028406420020012802800622031b221242ffffffff0f83211b2003410420031b2105024002402012422088220ca7220a0d004100210b0c010b4100210f4100210b410021070240034002400240200b450d00200520074102746a210320052007200f6a4102746a21080340200120032802002202360290092001200141b0086a36028c06200120014190096a360288062001200141b0056a36028406200120014188056a36028006200220014180066a10f801450d0220082003280200360200200341046a2103200841046a2108200741016a2207200a490d000c040b0b200520074102746a21030340200120032802002208360290092001200141b0086a36028c06200120014190096a360288062001200141b0056a36028406200120014188056a36028006200820014180066a10f801450d01200341046a2103200741016a2207200a490d000b4100210b0c030b200f417f6a210f200b41016a210b200741016a2207200a490d000b0b0240200b0d004100210b0c010b20052007200b6b4102746a200520074102746a200a20076b41027410ea081a0b201520147c211520012005360280062001201b200a200b6bad422086843702840620004200370300200e420037030020134200370300200142003703c004200141e0046a41bad7c700410810810220132010290300370300200120012903e0043703c004200141f0046a41c0dac000410f1081022011201e290300370000200620012903f004370000200141c0046a20014180066a10c7050240201242ffffffff0383500d002005102e0b201542f8a8df8c017c2115200c42c0b6fc1d7e200c42c0d1e1237e7c200c4280c6868f017e7c2114024020012d0080050d0042002117200141e0026a200129039005221220014190056a41086a2203290300220c42c0843d420010e608200141d0026a2012200c42c0843d420010e708200141c0026a20012903d002200141d0026a41086a2903004290ce00420010e8082003200c200c200141c0026a41086a29030020012903c002221b20012903e002221842e40080a720184290ce007e42c0843d8242a0c21e566aad7c2218201b54ad7c221b2018201256201b200c56201b200c511b22071b221b7d20122012201820071b220c54ad7d37030020012012200c7d3703900502400240200c201b844200520d00200142003703880620014200370380064200211942002112420021180c010b200141d8046a22084200370300200141c0046a41106a22024200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41f8fcc60041081081022003200141e0046a41086a220a290300370300200120012903e0043703c004200141f0046a41a8aac800410d108102200641086a220b200141f0046a41086a2205290300370000200620012903f004370000200141a8026a200141c0046a412010f802200141a8026a41106a290300211220012903b002211820012802a8022107200842003703002002420037030020034200370300200142003703c004200141e0046a41f8fcc60041081081022003200a290300370300200120012903e0043703c004200141f0046a41a8aac800410d108102200b2005290300370000200620012903f004370000200142002012420020071b2212201b7d2018420020071b2218200c54ad7d221a2018200c7d2217201856201a201256201a2012511b22031b3703880620014200201720031b37038006200141c0046a412020014180066a411010b2012001201b370388062001200c370380062012201b20031b21192018200c20031b211720014180066a109803200129038806211820012903800621120b200141a8056a2203427f2003290300221a20197c20012903a005221920177c22162019542203ad7c221720032017201a542017201a511b22031b3703002001427f201620031b3703a005200120123703800620012018370388060240024020122018844200520d00200120014180066a3602900920014190096a10cc020c010b20012018370388062001201237038006200120014180066a3602900920014190096a10cc020b20014198066a201b37030020014190066a200c37030020014188066a41043a00002001410e3a00800620014180066a10fe010b201420157c211520014190096a200141b8056a20012903a005220c200141a0056a41086a2903002212410210fe060240024002402001280290090d0020014180066a41106a20014190096a41106a290300221b20127d2001290398092214200c54ad7d2012201b7d200c201454ad7d2014200c56201b201256201b2012511b22031b37030020012014200c7d200c20147d20031b3703880620012003ad3703800620014180066a41086a210720030d01200120073602b008200141b0086a10ce020c020b419dccc20041ca0010ef0220012012370388062001200c37038006200120014180066a3602900920014190096a10ce020c010b200120073602b008200141b0086a10cc020b201542c0b2cd3b7c2121200129039005210c20014198066a20014190056a41086a29030037030020014190066a200c37030020014180066a41086a41053a00002001410e3a00800620014180066a10fe010b0240200441c09306700d0010f70221200b20014180066a10a903200129038806212a42002112024020044180ce18700d0020014198066a420037030020014190066a420037030020014180066a41086a220342003703002001420037038006200141b8056a41de80ca0041091081022003200141b8056a41086a290000370300200120012900b80537038006200141b0086a41a8fbca004115108102200941086a200141b0086a41086a290000370000200920012900b0083700000240024020014180066a108603220341ff01714102460d0020014180066a412010ff012003410171450d0020014180066a2004109008024020012d0080064106460d0020014190096a20041096080c020b200141063a0090090c010b20014180066a2004109608024020012d0080064106460d0020014190096a20041090080c010b200141063a0090090b0240024020012d0090094106460d0020014180066a41131093080c010b200141063a0080060b202a21120b20014198066a2207420037030020014190066a220842003703004108210a20014180066a41086a220342003703002001420037038006200141b8056a41de80ca0041091081022003200141b8056a41086a2202290000370300200120012900b80537038006200141b0086a41f4f8ca00410d108102200941086a220b200141b0086a41086a2205290000370000200920012900b008370000200141a0026a20014180066a4120108e0220012802a402211320012802a002210f2007420037030020084200370300200342003703002001420037038006200141b8056a41de80ca00410910810220032002290000370300200120012900b80537038006200141b0086a41ccf8ca00410f108102200b2005290000370000200920012900b00837000020014198026a20014180066a4120108e02200128029c0221032001280298022107200120043602f00420012003410020071b22003602a405200120134100200f1b220e3602a0052001200141f0046a3602a80520014180066a200141a0056a200141a0056a200141a0056a41086a1088050240024020012d00e00622034103460d0020014190096a20014180066a41e00010e9081a200120014180066a41e4006a28000036008b05200120012800e1063602880541e800102c220a450d02200a20014190096a41e00010e908220720033a00602007200128028805360061200741e4006a200128008b05360000200141c0046a41086a220b200141a0056a41086a280200360200200120012903a0053703c00420014180066a200141c0046a200141c0046a200b108805024020012d00e00622094103470d0041012102410121070c020b41c9012108200141e1066a220541036a211341012102410121070240034020014190096a20014180066a41e00010e9081a200120132800003600b305200120052800003602b00520014180066a20014190096a41e00010e9081a200120012800b30536009305200120012802b00536029005024020072002470d00200241016a22032002490d062002410174220f2003200f20034b1b22034104200341044b1bad42e8007e220c422088a7454103742103200ca7210f0240024020020d00200141003602b0080c010b200141083602b8082001200a3602b0082001200241e8006c3602b4080b200141b8056a200f2003200141b0086a107d20012802c005210320012802b8054101460d0220012802bc05210a200341e8006e21020b200a20086a2203419f7f6a20014180066a41e00010e9081a2003417f6a20093a00002003200128029005360000200341036a20012800930536000020014180066a200141c0046a200141c0046a200b108805200841e8006a2108200741016a210720012d00e00622094103470d000c030b0b2003450d030c020b41002102410021070b427f41002000200e6b2203200320004b1bad220c428899d2027e200c42c0f0f50b7e7c20127c42d0f4c53f7c220c200c2012541b210c02402007450d00200a280200210920014180066a200a41046a41dc0010e9081a2001200a41e1006a280000360280052001200a41e4006a28000036008305200a41e0006a2d000022054103460d00200a200741e8006c6a210f200141c8096a211320014180066a41086a212220014180066a4101722127200141b0086a41046a210020014180066a41096a211e200141e9096a220e41036a2110200141b8096a2111200a21080340200141b0086a20014180066a41dc0010e9081a20012001280083053600b30520012001280280053602b00520014190096a200041d80010e9081a200e20012802b005360000201020012800b305360000200120053a00e809200141c0046a41186a4200370300200141c0046a41106a4200370300200141c0046a41086a22034200370300200142003703c004200141e0046a41f8fcc60041081081022003200141e0046a41086a290300370300200120012903e0043703c004200141f0046a41a8aac800410d108102200641086a200141f0046a41086a290300370000200620012903f00437000020014180026a200141c0046a412010f80220014180026a41106a29030021152001280280022107200129038802211420014190096a41186a290300211620014190096a41086a290300212b20012903a009212c200129039009212d41002103024020012903b009221a42028820112903002218423e8684220c2018420288221284500d0041002103200c201a85201220188584500d00410021030340200141f0016a201a2018200341046a41fe007110e408200341026a210320012903f001220c200141f0016a41086a290300221284500d01200c201a8520122018858450450d000b0b2015420020071b21172014420020071b2119200841e8006a210b42002114420021120340200141d0016a20124201862014423f88842212420020144201862214420184220c420010e808200141e0016a200c4200200c420010e8080240201220012903d801221584201584420052200141e0016a41086a290300221520012903d001221b201b7c7c221b201554720d0020012903e0012115200141c0016a201a2018200341ff007110e40820122012201520012903c00156201b200141c0016a41086a290300221556201b2015511b22071b21122014200c20071b21140b02402003450d0041002003417e6a2207200720034b1b21030c010b0b41002103024020194202882017423e8684220c2017420288221584500d00200c201985201520178584500d00410021030340200141b0016a20192017200341046a41fe007110e408200341026a210320012903b001220c200141b0016a41086a290300221584500d01200c20198520152017858450450d000b0b420021154200210c034020014190016a200c4201862015423f8884220c420020154201862215420184221b420010e808200141a0016a201b4200201b420010e8080240200c200129039801221884201884420052200141a0016a41086a2903002218200129039001221a201a7c7c221a201854720d0020012903a001211820014180016a20192017200341ff007110e408200c200c201820012903800156201a20014180016a41086a290300221856201a2018511b22071b210c2015201b20071b21150b02402003450d0041002003417e6a2207200720034b1b21030c010b0b02400240024002402014201284500d00024002400240024002400240200541ff01710e03000102000b0340200141306a202c20162014201210e70820152215200c221b844200510d04200141306a41086a290300210c20012903302118200141206a202d202b2015201b10e70820182001290320221754200c200141206a41086a290300221a54200c201a5122031b0d032017201854201a200c5420031b0d06200141106a202c20162014201210e6082001202d202b2015201b10e6082001290300220c200141086a290300221884500d062014212d2012212b200c2114201821122015212c201b211620012903102215200141106a41086a290300220c8450450d000c030b0b034020122112201421142015200c844200510d04200141f0006a202c20162015200c10e708200141e0006a202d202b2014201210e7082001290370221a2001290360221754200141f0006a41086a290300221b200141e0006a41086a290300221854201b20185122031b0d022017201a542018201b5420031b0d05200141d0006a202c20162015200c10e608200141c0006a202d202b2014201210e6082001290340221b200141c0006a41086a290300221884500d052015212d200c212b201b21152018210c2014212c2012211620012903502214200141d0006a41086a29030022128450450d000c020b0b202d202c58202b201658202b2016511b0d030b2001200936028c06200141043a008806200141093a00800620014180066a10fe01024020012802c40922030d0020014180066a41186a201341186a29000037030020014180066a41106a201341106a2900003703002022201341086a2900003703002001201329000037038006200141b8056a20014180066a2009109708410121030c060b200141c0046a201310980820014180066a20012802c004220520012802c804221d10ad05200320046a2107024020012d00800622034103712223410346221f0d00024020030e03000100000b02400240201f0d0020230e03010001010b20012802a806450d0020012802a406102e0b202720012f00a0053b0000202741026a200141a0056a41026a2d00003a000041002103200141003a00800620012007360284062022200141b8056a41c80010e9081a0c040b200120073602b806200141013602b40620034102470d032005201d10ff010c040b41d0d8c8004119418cd5cc001039000b41d0d8c8004119418cd5cc001039000b2001200936028c06200141053a008806200141093a00800620014180066a10fe01410021030c020b200141003602c005200142013703b80520014180066a200141b8056a10ac082005201d20012802b805221f20012802c00510b201024020012802bc05450d00201f102e0b0240200341037122034103460d0020030e03010001010b20012802a806450d0020012802a406102e0b024020012802c404450d002005102e0b2001200936029805200142e4cab5fbb6ccdcb0e30037039005410c102c2203450d032001420c3702f404200120033602f004200141f0046a20014190056a410810742001200936028006200141f0046a20014180066a41041074200141a0056a41086a20012802f804360200200120012903f0043703a005200141003b01b805201e2013290000370000201e41086a201341086a290000370000201e41106a201341106a290000370000201e41186a201341186a290000370000200141173a0088062001410d36028006200120093602ac06200141c0046a200141a0056a41002007410020014100413f200141b8056a20014180066a10c9044101210320012802c0044101470d0041ac80ca00413210ef020b2001200436028406200120033a008106200141013a008006200141b8056a200910890520012802c005210720012802b80521032001410036029809200142013703900920014180066a20014190096a10bc0520032007200128029009220920012802980910b2010240200128029409450d002009102e0b024020012802bc05450d002003102e0b0240200b200f460d002008280268210920014180066a200841ec006a41dc0010e9081a2001200841c9016a280000360280052001200841cc016a28000036008305200841c8016a2103200b210820032d000022054103470d010b0b202a210c0b02402002450d00200241e8006c450d00200a102e0b2004108303211220014180066a10a903427f427f200d427f201c427f2021427f2020427f200c20127c22122012200c541b7c220c200c2020541b7c220c200c2021541b7c220c200c201c541b7c220c200c200d541b220c2001290380067c22122012200c541b410210f1044100410010eb04200128029004210802402001280298042203450d00200341246c21072008210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a280200102e0c030b2003410c6a280200450d02200341086a280200102e0c020b2003410c6a280200450d01200341086a280200102e0c010b200341086a280200450d00200341046a280200102e0b200341246a21032007415c6a22070d000b0b02402001280294042203450d00200341246c450d002008102e0b200141f0096a24000f0b1036000b1038000b0400100b0ba33f04067f087e057f027e230041b0126b22022400200220013602900a200241f0006a200241900a6a109005200228027821032002280270210420022802742105200241900a6a200141c80310e9081a20024188076a200241900a6a108a0220022d008807210120022f008907210620022d008b07210720024180046a20024188076a41047241840310e9081a02400240024002400240024002400240024020014101460d0020024180016a20024180046a41046a41800310e9081a200241e8006a41fcc6cb004110108e02200228026c21012002280268210620022003360290072002200536028c072002200436028807200241900a6a2001410020061b10a30720022802900a220120022802980a20024188076a10c502024020022802940a450d002001102e0b02402005450d002004102e0b200241d80d6a20024180016a41d0006a109704200241900a6a20024180016a41800310e9081a02400240024002400240024002400240024020022903b00a22084202520d0020022903d80d20022d00e00d2003109f05220141ff01714102470d08200241a0076a4200370300200241a8076a4200370300200241b0076a4200370300200242003703800f200242003703900720024200370388072002420037039807200242003703b80720022802e00a417e6a0e1a010b0b0b0b0b0b0b02040b0b0b0b0b0b0b050b0b0b0b0b0b0b060b0b200241980e6a41186a200241900a6a41186a290300370300200241980e6a41106a200241900a6a41106a290300370300200241980e6a41086a200241900a6a41086a290300370300200220022903900a3703980e200241900a6a41c0006a2903002109200241900a6a41386a290300210a200241900a6a41c8006a280200210120022903b80a210b200241f0116a41186a22054200370300200241f0116a41106a22044200370300200241f0116a41086a22064200370300200242003703f011200241d0116a41d9fcc60041061081022006200241d0116a41086a2207290000370300200220022900d0113703f011200241d0116a4180f4cb00410610810220052007290000370300200420022900d011370300200241e0006a200241f0116a4120108e02024020084201520d00200b4200510d0a0b200241d0116a200241980e6a10c80220024188076a20022802d011220420022802d81110c90220024188076a41c8006a2802002105200229038807210820024188116a41086a20024188076a41106a29030037030020024188116a41106a20024188076a41186a29030037030020024188116a41186a20024188076a41206a29030037030020024188116a41206a20024188076a41286a29030037030020024188116a41286a220620024188076a41306a29030037030020024188116a41306a220720024188076a41386a29030037030020024188116a41386a20024188076a41c0006a290300370300200220022903900737038811200241a0106a41086a200241dc076a280200360200200220022902d4073703a0100240024020084201510d00200241a8126a4200370300200241f0116a41306a4200370300200241f0116a41286a420037030020024190126a420037030020024188126a420037030020024180126a4200370300200241f0116a41086a420037030041002105200241e0116a41086a4100360200200242003703f011200242003703e0110c010b200241f0116a41386a20024188116a41386a290300370300200241f0116a41306a2007290300370300200241f0116a41286a2006290300370300200241f0116a41206a20024188116a41206a290300370300200241f0116a41186a20024188116a41186a290300370300200241f0116a41106a20024188116a41106a290300370300200241f0116a41086a20024188116a41086a290300370300200241e0116a41086a200241a0106a41086a28020036020020022002290388113703f011200220022903a0103703e0110b024020022802d411450d002004102e0b024020052001470d0020024188076a41386a200241f0116a41386a29030037030020024188076a41306a200241f0116a41306a29030037030020024188076a41286a200241f0116a41286a29030037030020024188076a41206a200241f0116a41206a29030037030020024188076a41186a200241f0116a41186a29030037030020024188076a41106a200241f0116a41106a29030037030020024188076a41086a200241f0116a41086a290300370300200220022903f011370388072002200141016a3602c807200241d4076a200241e0116a41086a280200360200200220022903e0113702cc0720024188116a200241980e6a10c802200228028811220120022802901120024188076a10c9050240200228028c11450d002001102e0b418012210120022d00e00d22054102460d0e20022903d80d220820052003109f05220141ff01714102470d0e20024188076a20032008200a200920022d00e10d410047200510e7044200210c4200210b4200210802402002290388074201520d00427f427f20024198076a2903002208200241a8076a2903007c200229039007220b200241a0076a2903007c220d200b542201ad7c220b2001200b200854200b2008511b22011b2208200241b8076a2903007c427f200d20011b220b200241b0076a2903007c220d200b542201ad7c220b2001200b200854200b2008511b22011b2108427f200d20011b210b0b02400240024002400240200b20022903c007220d84200820024188076a41c0006a290300220e848450450d000c010b20024188076a200241980e6a427f200b200d7c220c200c200b5422012008200e7c2001ad7c220b200854200b2008511b22011b427f200b20011b41014111200a200984501b10fe062002280288074101460d0120024198076a290300210f200229039007210e4201210c0b200241a0106a41086a200241980e6a41086a2903002208370300200241a0106a41106a200241980e6a41106a290300220b370300200241a0106a41186a200241980e6a41186a290300220d37030020024188116a41c0006a200f370300200241c0116a2201200e37030020024188116a41186a200837030020024188116a41206a200b37030020024188116a41286a200d370300200220022903980e22083703a0102002200a3703881120022008370398112002200c3703b811200220093703901120024188076a200241980e6a200241900a6a41d0006a10800320022d0088074101460d01200241b4076a280200210720024188076a41286a2802002104200241ac076a2802002110200241a4076a280200210620024188076a41186a2802002111024020024188076a41206a2802002201450d002001410c6c21052011210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b02402006450d002006410c6c450d002011102e0b02402007450d002007410c6c21052010210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2004450d022004410c6c450d022010102e0c020b200241a0106a41086a200241f0116a41086a290300370300200241a0106a41106a200241f0116a41106a290300370300200241a0106a41186a200241f0116a41186a290300370300200220022903f0113703a01041800221010c100b20022d00890722054102470d0e0b200241c0106a20024188116a41c80010e9081a200241d00f6a41046a200241c0106a41c80010e9081a200241800f6a200241d00f6a41cc0010e9081a200241b80e6a200241800f6a41046a41c80010e9081a200241f80d6a41086a200241980e6a41086a290300370300200241f80d6a41106a200241980e6a41106a290300370300200241f80d6a41186a200241980e6a41186a290300370300200220022903980e3703f80d20024187046a200241b80e6a41c80010e9081a410121010c0c0b418006418004200520014b1b21010c0d0b4100210141002105200241e80a6a2802004102470d05200241800b6a200241ec0a6a10f20622014180feff077141087621050c010b4100210141002105200241e80a6a2802004102470d04200241800b6a200241ec0a6a10ff0622014180feff077141087621050b200141ff01714102470d030c070b200241d00f6a200241e40a6a109d07024020022d00d00f4101460d00200241fc0f6a2802002107200241f80f6a2802002104200241f40f6a2802002110200241ec0f6a2802002106200241e80f6a28020021110240200241f00f6a2802002201450d002001410c6c21052011210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b02402006450d002006410c6c450d002011102e0b02402007450d002007410c6c21052010210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2004450d072004410c6c450d072010102e0c070b20022d00d10f22014102460d0620022f01d20f21050c020b200241d00f6a200241e80a6a10df02024020022d00d00f4101460d00200241fc0f6a2802002107200241f80f6a2802002104200241f40f6a2802002110200241ec0f6a2802002106200241e80f6a28020021110240200241f00f6a2802002201450d002001410c6c21052011210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b02402006450d002006410c6c450d002011102e0b02402007450d002007410c6c21052010210103400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b2004450d062004410c6c450d062010102e0c060b20022d00d10f22014102460d0520022f01d20f21050c010b200241d00f6a200241e80a6a10b80641002101410021050240024020022d00d00f417d6a0e0400010106010b20022d00d20f21050b200541087441077221050b2005410874200141ff017172210120022903b807500d072002200241c0076a3602d00f200241d00f6a10cc020c070b200241800f6a41186a200241d00f6a41186a290300370300200241800f6a41106a200241d00f6a41106a2903003703000c060b2000200620074110747222013b0001200041013a0000200041036a20014110763a00002005450d072004102e0c070b41d0e7cc00411941ece7cc001039000b20024187046a20024188076a41c80010e9081a410021010b200241a0106a41186a2205200241f80d6a41186a290300370300200241a0106a41106a2204200241f80d6a41106a290300370300200241a0106a41086a2206200241f80d6a41086a290300370300200220022903f80d3703a010200241d00f6a20024187046a41c80010e9081a20024180046a200241e00a6a41b00210e9081a20024188076a41186a2207200529030037030020024188076a41106a2205200429030037030020024188076a41086a22102006290300370300200220022903a010370388074102210402402001450d00200241800f6a41186a2007290300370300200241800f6a41106a2005290300370300200241800f6a41086a201029030037030020022002290388073703800f410121040b200241c0106a41086a200241800f6a41086a290300370300200241c0106a41106a200241800f6a41106a290300370300200241c0106a41186a200241800f6a41186a290300370300200220022903800f3703c01002404110102c2205450d00200541f8f7c60036020c2005410136020820054281808080103702004110102c2201450d0020014190f8c60036020c20014101360208200142818080801037020020052005280200417f6a2206360200024020060d002005280208200528020c2802001103000240200528020c280204450d002005280208102e0b200541046a22062006280200417f6a220636020020060d002005102e0b02400240200128020820024180046a200128020c28020c1101000d00200241a8116a41023a0000200241a0116a41003a000020012001280200417f6a22053602002002420037039011420121082002420137038811024020050d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22052005280200417f6a220536020020050d002001102e0b20024180046a10dc020c010b20024188076a20024180046a41b00210e9081a2002418a0f6a200241c8106a290300370100200241920f6a200241d0106a2903003701002002419a0f6a200241d8106a290300370100200241a00f6a200241de106a290100370100200220043a00810f200241003a00800f200220022903c0103701820f200220013602a80f20024188116a20024188076a200241800f6a10dd0220022903881121080b20024198116a2903002109200241a0116a2d00002106200229039011210a20024180046a200241d00f6a41c80010e9081a200241a8116a2d0000210520022d00e00d21010240024002400240024002402008500d00200a4202510d00200141ff01714102470d004102210120054106460d00200241b0116a2802002104200241ac116a280200210120023100aa11210820023100a911210b41e09fc500410d10ef024191eacc00410d10ef020240024002400240024020050e06000102030406000b2001200410ef020c060b41f8e9cc00410d10ef020c050b41eee9cc00410a10ef020c040b200b10cc08200810cc082001450d032001200410ef020c030b41dce9cc00411210ef020c020b20022903d80d21084200210e0240200a4201520d0020082009580d004200200820097d220b200b2008561b210b200241f0116a41186a22124200370300200241f0116a41106a22044200370300200241f0116a41086a22074200370300200242003703f011200241d0116a41d9fcc60041061081022007200241d0116a41086a2210290000370300200220022900d0113703f011200241d0116a41d4f2cb00410b10810220122010290000370300200420022900d01137030020024188076a200241f0116a10f2042002200229039007420020022903880742015122111b3703800f200220024188076a41106a2213290300420020111b3703c010200220024188076a41186a2214290300420020111b3703b80e200241b80e6a211102400240024020014103710e03010002010b200241c0106a21110c010b200241800f6a21110b201142002011290300220c200b7d220b200b200c561b370300201420022903b80e370300201320022903c010370300200220022903800f370390072002420137038807201242003703002004420037030020074200370300200242003703f011200241d0116a41d9fcc600410610810220072010290000370300200220022900d0113703f011200241d0116a41d4f2cb00410b108102200441086a2010290000370000200420022900d011370000200241f0116a20024188076a41086a10f3040b20024180046a41c0006a290300210c200241b8046a290300210b20024180046a41086a290300210d20022903b0042115200229038004210f200241b80e6a41186a20024180046a41286a290300370300200241b80e6a41106a20024180046a41206a290300370300200241b80e6a41086a20024180046a41186a29030037030020022002290390043703b80e20024188076a20032008200920092008561b2008200a4201511b200f200d20022d00e10d410146200641ff017141014672200110e7044200210802402002290388074201520d00427f427f20024188076a41106a290300220820024188076a41206a2903007c200229039007220920024188076a41186a2903007c220a2009542201ad7c22092001200920085420092008511b22011b2208200241b8076a2903007c427f200a20011b220920024188076a41286a2903007c220a2009542201ad7c22092001200920085420092008511b22011b2108427f200a20011b210e0b024020154201520d0020024188076a200241b80e6a4200200b427f200e20022903c0077c22092009200e542201200820024188076a41c0006a2903007c2001ad7c220920085420092008511b22011b22087d220a200a200b56200c427f200920011b7d200b200854ad7d2208200c562008200c511b22011b4200200820011b108b06420020024188076a41086a29030020022802880741014622011b2208200b7d200b20087d2008200b56420020024188076a41106a29030020011b220a200c56200a200c511b22011b2109200a200c7d2008200b54ad7d200c200a7d200b200854ad7d20011b210820010d05200241800f6a41106a200d20082009200f562008200d562008200d511b22011b220a370300200241a00f6a22042009200f200920011b220b7d2215370300200241a80f6a2008200a7d2009200b54ad7d220e370300200242003703980f200242023703800f2002200b3703880f200241c0006a200b420042d000420010e808200241306a200a420042d000420010e808200241d0006a2002290340200241c0006a41086a290300220820022903307c220c42e400420010e708200242dc9e8aae8f85d7c702200241d0006a41086a2903002002290338420052200c2008547222011b2208200a42c2eba3e1f5d1f0fa28200229035020011b220d200b542008200a542008200a511b22011b220c370390072002200d200b20011b220837038807427f200a200c7d200b200854ad7d220a200e7c200920087d220d200b20087d2216542201ad7c220b2001200b200a54200b200a511b22011b2109427f200d20011b210b024002402008200c844200520d00200220024188076a3602c010200241c0106a10cc020c010b200242f0f2bda1a7ee9cb9f9003703c01020024188076a200241c0106a10cd02200241206a20024188076a2008200c10fd01200241d0106a200241206a41086a290300220f200c7d2002290320220d200854ad7d200c200f7d2008200d54ad7d200d200856200f200c56200f200c511b22011b3703002002200d20087d2008200d7d20011b3703c81020022001ad3703c010200241c0106a41086a21030240024020010d00200220033602f011200241f0116a10cc020c010b200220033602f011200241f0116a10ce020b200241a0076a200c37030020024198076a200837030020024190076a41063a00002002410e3a00880720024188076a10fe010b2002200b370388072002200937039007024002402016201584200a200e84844200520d00200220024188076a3602c010200241c0106a10cc020c010b200241c0106a10e20420024188076a10e204200241106a20024188076a200b200910fd0120024180126a200241106a41086a290300220a20097d20022903102208200b54ad7d2009200a7d200b200854ad7d2008200b56200a200956200a2009511b22011b37030020022008200b7d200b20087d20011b3703f81120022001ad3703f011200241f0116a41086a21030240024020010d00200220033602980e200241980e6a10cc020c010b200220033602980e200241980e6a10ce020b200241c0076a2009370300200241b8076a200b37030020024188076a41086a41043a000020024191076a20022903c01037000020024199076a200241c0106a41086a290300370000200241a1076a200241d0106a290300370000200241a9076a200241d8106a290300370000200241033a00880720024188076a10fe010b0240024020022903800f22084202560d002008a70e03010001010b2002200241800f6a41086a3602880720024188076a10cc020b024020022903980f22084202560d002008a70e03010001010b200220043602880720024188076a10cc020b200241ec0d6a41026a2201200241a9116a220441026a2d00003a0000200220042f000022043b01f00d200220043b01ec0d20022902ac11210b20022903d80d2208200229039811220920092008561b2008200229039011220d4201511b210820022903e00d2109200229038811220a4201510d022009210c410021040c030b4185eacc00410c10ef020b418010210120022903b004500d072002200241b8046a3602880720024188076a10cc020c070b200241d00f6a41026a20012d00003a0000200220022f01ec0d3b01d00f410121042008210c200b21080b200241900a6a41086a20043a0000200241990a6a20022f0080043b00002002419c0a6a20053a00002002419d0a6a20022f01d00f3b0000200241900a6a41206a2009370300200241900a6a41186a200c370300200241900a6a41106a2008370300200241b80a6a2002290388073703002002419b0a6a20024180046a41026a2d00003a00002002419f0a6a200241d00f6a41026a2d00003a0000200241c00a6a20024188076a41086a290300370300200241c80a6a20024188076a41106a290300370300200241d00a6a20024188076a41186a290300370300200241d80a6a20024188076a41206a290300370300200241003a00900a200241900a6a10fe01200241086a41fcc6cb004110108e022002200228020c41016a410120022802081b22043602900a41fcc6cb004110200241900a6a410410b2014100200410eb04200241900a6a41026a20012d00003a0000200220022f01ec0d3b01900a02400240200a4201510d00410621010c010b20024188076a41026a2204200241900a6a41026a22032d00003a0000200220022f01900a3b01880741062101200d4202510d00200320042d00003a0000200220022f0188073b01900a200521010b200041003a0000200041046a20013a0000200041056a20022f01900a3b0000200041086a200b370000200041076a200241920a6a2d00003a00000c060b20022009370388072002200837039007200220024188076a3602800f200241800f6a10ce0241800221010c040b1036000b20022f018a074108742104024020022903b811500d00200220013602880720024188076a10cc020b200420057221010b200241800f6a200241d00f6a41cc0010e9081a0b200241e00a6a108b020b200241f00d6a41026a200241f40d6a41026a2d00003a0000200220022f01f40d3b01f00d200041036a20014110763a0000200020013b0001200041013a00000b200241b0126a24000b070010044101460ba922030a7f027e027f230041c0026b22012400200141f0016a41186a22024200370300200141f0016a41106a22034200370300200141f0016a41086a22044200370300200142003703f001200141c8016a41d9fcc60041061081022004200141c8016a41086a2205290000370300200120012900c8013703f001200141c8016a41e8f7cb00410e10810220022005290000370300200320012900c801370300200141f0016a412010ff01200242003703002003420037030020044200370300200142003703f001200141c8016a41d9fcc600410610810220042005290000370300200120012900c8013703f001200141c8016a4188f3cb00411010810220022005290000370300200320012900c801370300200141f0016a412010ff01200242003703002003420037030020044200370300200142003703f001200141c8016a41d9fcc600410610810220042005290000370300200120012900c8013703f001200141c8016a4180f4cb00410610810220022005290000370300200320012900c801370300200141086a200141f0016a4120108e02200128020c210620012802082107200242003703002003420037030020044200370300200142003703f001200141c8016a41d9fcc600410610810220042005290000370300200120012900c8013703f001200141c8016a41a0f4cb00410a10810220022005290000370300200320012900c801370300200141c8016a200141f0016a4120108d0220012d00c80121052002200141e1016a2900003703002003200141d9016a2900003703002004200141d1016a290000370300200120012900c9013703f0010240024020054101460d00200141106a41186a4200370300200141106a41106a4200370300200141106a41086a4200370300200142003703100c010b200141106a41186a2002290300370300200141106a41106a2003290300370300200141106a41086a2004290300370300200120012903f0013703100b20014188026a2205420037030020014180026a22084200370300200141f0016a41086a22024200370300200142003703f001200141c8016a41d9fcc60041061081022002200141c8016a41086a2204290000370300200120012900c8013703f001200141c8016a41b4f4cb004106108102200341086a22092004290000370000200320012900c801370000200141c8016a200141f0016a10a10420012802c801210a20012902cc01210b200542003703002008420037030020024200370300200142003703f001200141c8016a41d9fcc600410610810220022004290000370300200120012900c8013703f001200141c8016a41acf2cb00410e10810220092004290000370000200320012900c8013700002001200141f0016a4120108e0241012103200128020421020240024020012802004101460d00410021030c010b200141f0016a412010ff010b02402002410020031b2209ad420c7e220c422088a70d00200ca72203417f4c0d00024002400240024002400240024020030d004104210d0c010b2003102c220d450d010b0240024002402003410c6e220e20094f0d00200e41017422022009200220094b1b22024104200241044b1bad420c7e220c422088a7454102742102200ca72104024002402003410b4b0d00200141003602c8010c010b200141d0016a41043602002001200d3602c8012001200e410c6c3602cc010b200141f0016a20042002200141c8016a107d200141f8016a2802002103024020012802f0014101460d0020012802f401210d2003410c6e210e0c020b20030d030c080b20090d00410021090c010b41002103200d21020340200141f0016a200310a307200141c8016a20012802f001220520012802f8012208108b030240024020012802c80122040d004200210c410121040c010b2005200810ff0120012902cc01210c0b200341016a2103024020012802f401450d002005102e0b20022004360200200241046a200c3702002002410c6a210220092003470d000b0b200120093602d0012001200e3602cc012001200d3602c801200141306a200141c8016a10cd0802402006410020071b220541e212490d00200141c8016a41002005419f6d6a2203200320054b1b108c0220012802c801220320012802d00110ff0120012802cc01450d002003102e0b20014180016a10ce0820012802880121022001280280012103200141003a00e8012002450d04200120032d00003a00c801200141013a00e80120024101460d03200120032d00013a00c901200141023a00e80120024102460d03200120032d00023a00ca01200141033a00e80120024103460d03200120032d00033a00cb01200141043a00e80120024104460d03200120032d00043a00cc01200141053a00e80120024105460d03200120032d00053a00cd01200141063a00e80120024106460d03200120032d00063a00ce01200141073a00e80120024107460d03200120032d00073a00cf01200141083a00e80120024108460d03200120032d00083a00d001200141093a00e80120024109460d03200120032d00093a00d1012001410a3a00e8012002410a460d03200120032d000a3a00d2012001410b3a00e8012002410b460d03200120032d000b3a00d3012001410c3a00e8012002410c460d03200120032d000c3a00d4012001410d3a00e8012002410d460d03200120032d000d3a00d5012001410e3a00e8012002410e460d03200120032d000e3a00d6012001410f3a00e8012002410f460d03200120032d000f3a00d701200141103a00e80120024110460d03200120032d00103a00d801200141113a00e80120024111460d03200120032d00113a00d901200141123a00e80120024112460d03200120032d00123a00da01200141133a00e80120024113460d03200120032d00133a00db01200141143a00e80120024114460d03200120032d00143a00dc01200141153a00e80120024115460d03200120032d00153a00dd01200141163a00e80120024116460d03200120032d00163a00de01200141173a00e80120024117460d03200120032d00173a00df01200141183a00e80120024118460d03200120032d00183a00e001200141193a00e80120024119460d03200120032d00193a00e1012001411a3a00e8012002411a460d03200120032d001a3a00e2012001411b3a00e8012002411b460d03200120032d001b3a00e3012001411c3a00e8012002411c460d03200120032d001c3a00e4012001411d3a00e8012002411d460d03200120032d001d3a00e5012001411e3a00e8012002411e460d03200120032d001e3a00e6012001411f3a00e8012002411f460d03200141d0006a41106a200141c8016a41106a290300370300200141d0006a41086a200141c8016a41086a290300370300200120032d001f3a00e701200141d0006a41186a200141c8016a41186a290300370300200141203a00e801200120012903c801220c3703f0012001200c3703500240200128028401450d002003102e0b200141003602f801200142013703f0014120102c2203450d00200142203702cc01200120033602c801200141c8016a200141106a41201074200141f0016a20012802c801220320012802d0011074024020012802cc01450d002003102e0b200141f0006a20012802f001220320012802f80110cf08024020012802f401450d002003102e0b200b4200200a1b210c200a4104200a1b21040240024020012802702203450d00200141f8006a28020021022001280274210d200141003a00e8012002450d04200120032d00003a00c801200141013a00e80120024101460d03200120032d00013a00c901200141023a00e80120024102460d03200120032d00023a00ca01200141033a00e80120024103460d03200120032d00033a00cb01200141043a00e80120024104460d03200120032d00043a00cc01200141053a00e80120024105460d03200120032d00053a00cd01200141063a00e80120024106460d03200120032d00063a00ce01200141073a00e80120024107460d03200120032d00073a00cf01200141083a00e80120024108460d03200120032d00083a00d001200141093a00e80120024109460d03200120032d00093a00d1012001410a3a00e8012002410a460d03200120032d000a3a00d2012001410b3a00e8012002410b460d03200120032d000b3a00d3012001410c3a00e8012002410c460d03200120032d000c3a00d4012001410d3a00e8012002410d460d03200120032d000d3a00d5012001410e3a00e8012002410e460d03200120032d000e3a00d6012001410f3a00e8012002410f460d03200120032d000f3a00d701200141103a00e80120024110460d03200120032d00103a00d801200141113a00e80120024111460d03200120032d00113a00d901200141123a00e80120024112460d03200120032d00123a00da01200141133a00e80120024113460d03200120032d00133a00db01200141143a00e80120024114460d03200120032d00143a00dc01200141153a00e80120024115460d03200120032d00153a00dd01200141163a00e80120024116460d03200120032d00163a00de01200141173a00e80120024117460d03200120032d00173a00df01200141183a00e80120024118460d03200120032d00183a00e001200141193a00e80120024119460d03200120032d00193a00e1012001411a3a00e8012002411a460d03200120032d001a3a00e2012001411b3a00e8012002411b460d03200120032d001b3a00e3012001411c3a00e8012002411c460d03200120032d001c3a00e4012001411d3a00e8012002411d460d03200120032d001d3a00e5012001411e3a00e8012002411e460d03200120032d001e3a00e6012001411f3a00e8012002411f460d0320014180016a41106a2202200141c8016a41106a220829030037030020014180016a41086a220e200141c8016a41086a2209290300370300200120032d001f3a00e70120014180016a41186a2206200141c8016a41186a220a290300370300200141203a00e801200120012903c801220b3703f0012001200b370380012009200e29030037030020082002290300370300200a200629030037030020012001290380013703c801200141a4016a41026a220e200141fd006a41026a2d00003a0000200120012f007d3b01a40102400240200c422088a72202200ca7460d00200c210b0c010b200241016a22062002490d0820024101742207200620062007491b22064104200641044b1bad42247e220b422088a7454102742106200ba721070240024020020d00200141003602f0010c010b200141f8016a4104360200200120043602f0012001200241246c3602f4010b200141b0026a20072006200141f0016a107d200141b8026a280200210220012802b0024101460d0220012802b4022104200c42808080807083200241246ead84210b200c422088a721020b2004200241246c6a220241003a0000200220012903c801370001200241096a2009290300370000200241116a2008290300370000200241196a200a290300370000200220012f01a4013b0021200241236a200e2d00003a0000200b4280808080107c210c200d450d002003102e0b200020012903103700102000200536020020002001290350370030200041286a200141106a41186a290300370000200041206a200141106a41106a290300370000200041186a200141106a41086a290300370000200041386a200141d0006a41086a290300370000200041c0006a200141d0006a41106a290300370000200041c8006a200141d0006a41186a290300370000200041086a200c37020020002004360204200041e8006a200141306a41186a290300370000200041e0006a200141306a41106a290300370000200041d8006a200141306a41086a29030037000020002001290330370050200141c0026a24000f0b2002450d050b1036000b200141003a00e8010b41d1a4cc00412c200141c8016a4180a5cc0041a0a5cc00103e000b200141003a00e8010b41d1a4cc00412c200141c8016a4180a5cc004190a5cc00103e000b1038000b0e002001ad4220862000ad8410140bd20501057f230041d0026b22022400200242808080808020370204200220013602142002200041d4e2cc0020011b3602102002200241106a360200200241d8016a2002109902200241e4016a280200210320022802e001210420022802dc01210520022802d8012106200241f8006a200241e8016a41e00010e9081a02402005450d00200241186a200241f8006a41e00010e9081a0240024020022802002802040d00200241f8006a200241186a41e00010e9081a0c010b02402003450d00200341246c21002005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002005102e0b410021050b2005450d00200241d8016a410c6a2003360200200241d8016a41086a2004360200200220053602dc01200220063602d801200241e8016a200241f8006a41e00010e9081a200241d8016a10c40702402003450d00200341246c21002005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002005102e0b200241d0026a240042010f0b200241246a410f360200200241ec016a4102360200200242023702dc01200241a0a7c9003602d8012002410436021c200241fca7c9003602182002200241186a3602e8012002200241c8026a360220200241d8016a41b0a7c9001044000b840c04017f017e097f017e230041306b220224000240024002400240024020010d0020024100360220200242043703184108102c2201450d0420014110360204200141b1afc8003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d042001410e360204200141cdb7c0003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d042001410c360204200141dbb7c0003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d042001410e360204200141e7b7c0003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d042001410a360204200141b4d8c8003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d042001410b360204200141d59fc5003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d0420014118360204200141e48ac5003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a9014108102c2201450d0420014112360204200141c4f9c0003602002002200141086a36020c200220013602082002410136020420022001360200200241186a200210a90120022802202201ad420c7e2203422088a70d032003a72204417f4c0d0320022802182105200228021c21060240024020040d00410421070c010b2004102c2207450d050b02402004410c6e220820014f0d00200841017422092001200920014b1b22094104200941044b1bad420c7e2203422088a74541027421092003a7210a024002402004410b4b0d00200241003602000c010b200241086a41043602002002200736020020022008410c6c3602040b200241186a200a20092002107d200241206a2802002104024020022802184101460d00200228021c21072004410c6e21080c030b2004450d040c050b20010d01410021090c020b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c20024194a8c9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b200520014103746a210b200141037441786a41037641016a210c41002109200721012005210403402004280200220a450d01200141086a200441046a280200360200200141046a200a360200200141003602002001410c6a2101200941016a2109200441086a2204200b470d000b200c21090b0240200641ffffffff0171450d002005102e0b2002410036020820024201370300200241edcad18b063602182002200241186a410410742002410c3a00182002200241186a41011074411f2002107641d8fec600411f20021079200241043a00182002200241186a4101107420092002107602402009450d002009410c6c2104200741086a210103402001417c6a28020021092001280200220a2002107620022009200a10742001410c6a2101200441746a22040d000b0b200228020821012002280204210a2002280200210902402008450d002008410c6c450d002007102e0b200141046a2204417f4c0d0002400240024002400240024020040d002002410036020820022004360204200241013602000c010b2004102c220b450d0620024100360208200220043602042002200b360200200141c000490d01200141808001490d022001418080808004490d030b200241033a00182002200241186a41011074200220013602182002200241186a410410740c030b200220014102743a00182002200241186a410110740c020b200220014102744101723b01182002200241186a410210740c010b200220014102744102723602182002200241186a410410740b2002200920011074200235020821032002350200210d0240200a450d002009102e0b200241306a24002003422086200d840f0b1038000b1036000bde0504017f017e017f017e230041f00a6b22022400200242808080808020370204200220013602142002200041d4e2cc0020011b3602102002200241106a360200200241a0076a200210ed01200241b8066a200241a0076a41e80010e9081a2002290388082103200241e0036a200241a0076a41f0006a41d80210e9081a0240024020034203510d00200241186a200241b8066a41e80010e9081a2002200337038001200241186a41f0006a200241e0036a41d80210e90821010240024020022802002802040d00200241e0036a200241186a41e80010e9081a200241a0076a200141d80210e9081a0c010b024020034202510d0020022d001841ff01714102470d002002280220450d00200228021c102e0b200241b0016a108b02420321030b20034203510d00200241b8066a200241e0036a41e80010e9081a200241186a200241a0076a41d80210e9081a200241a0076a200241b8066a41e80010e9081a200220033703880820024190086a200241186a41d80210e9081a200241e0036a200241a0076a10c6074101410220022d00e00322014101461b2200102c2204450d01200241003602a807200220003602a407200220043602a0070240024020014101470d00200241013a0018200241a0076a200241186a41011074200241e0036a410172200241a0076a108e050c010b200241003a0018200241a0076a200241186a41011074024020022d00e40322014106460d00200241013a0018200241a0076a200241186a41011074200120022d00e50320022d00e603200241a0076a109d060c010b200241003a0018200241a0076a200241186a410110740b20023502a807210320023502a0072105200241f00a6a240020052003422086840f0b200241c4066a410f3602002002412c6a41023602002002420237021c200241a0a7c900360218200241043602bc06200241a4a8c9003602b8062002200241b8066a3602282002200241e80a6a3602c006200241186a41b0a7c9001044000b1036000ba30a02067f047e23004180026b220224000240024020010d00200241086a41fcc6cb004110108e02200228020c21030240200228020822044101470d0041fcc6cb00411010ff010b200241c8016a41186a22014200370300200241c8016a41106a22054200370300200241c8016a41086a22064200370300200242003703c801200241106a41d9fcc60041061081022006200241106a41086a2207290000370300200220022900103703c801200241106a41acf2cb00410e108102200120072900003703002005200229001037030020022003410020041b360210200241c8016a4120200241106a410410b2014101200210eb04200142003703002005420037030020064200370300200242003703c801200241106a41d9fcc600410610810220062007290000370300200220022900103703c801200241106a4180f4cb00410610810220012007290000370300200520022900103703002002200241c8016a4120108e022002280204210320022802002104200142003703002005420037030020064200370300200242003703c801200241106a41d9fcc600410610810220062007290000370300200220022900103703c801200241106a41d4f2cb00410b1081022001200729000037030020052002290010370300200241106a200241c8016a10f20420022903102108200241106a41106a29030021092002290318210a200241106a41186a290300210b200241106a10a9032003410020041b210502402002290318427f427f200a4200200842015122011b22082009420020011b7c220920092008541b2208200b420020011b7c220920092008541b580d004200410210f1040b200510d906200241106a10c807200241003602f001200242013703e8014120102c2201450d01200242203702cc01200220013602c801200241c8016a200241206a41201074200241e8016a20022802c801220120022802d0011074024020022802cc01450d002001102e0b200241106a200241e8016a1091024120102c2201450d01200242203702cc01200220013602c801200241c8016a200241c0006a41201074200241e8016a20022802c801220120022802d0011074024020022802cc01450d002001102e0b4120102c2201450d01200242203702cc01200220013602c801200241c8016a200241e0006a41201074200241e8016a20022802c801220120022802d0011074024020022802cc01450d002001102e0b200228021421032002411c6a2802002207200241e8016a10760240200741246c2205450d00200321010340200241c8016a200110ef04200241e8016a20022802c801220620022802d0011074024020022802cc01450d002006102e0b200141246a21012005415c6a22050d000b0b20023502f001210820023502e801210902402007450d00200741246c21052003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012005415c6a22050d000b0b0240200241186a2802002201450d00200141246c450d002003102e0b20024180026a240020084220862009840f0b200241d4016a410f360200200241246a410236020020024202370214200241a0a7c900360210200241043602cc01200241bca8c9003602c8012002200241c8016a3602202002200241f8016a3602d001200241106a41b0a7c9001044000b1036000bd40704017f017e017f017e230041f0036b220224002002428080808080203702dc022002200136022c2002200041d4e2cc0020011b3602282002200241286a3602d802200241386a200241d8026a10ef01024002400240024020022802384101460d0020024180036a41086a2201200241c4006a2802003602002002200229023c37038003024020022802d8022802040d00200241186a41086a2001280200220136020020022002290380032203370318200241286a41086a200136020020022003370328200241386a200241286a108e0120022802384101460d02200241386a41086a22012903002103200241386a41186a22004200370300200241386a41106a220442003703002001420037030020024200370338200241386a41e8fcc600410910810220024180036a41b08ec9004103108102200020024180036a41086a22012900003703002004200229008003370300200241086a200241386a10850320022802082104200229031021052002410036023820024180036a41a00e4108200241386a107d2001280200210002402002280280034101470d002000450d040c050b20022802840320024180036a41e80010e908220142023703682001410336029801200120022903d802370370200141f8006a200241d8026a41086a29030037030020014180016a200241d8026a41106a29030037030020014188016a200241d8026a41186a29030037030020014190016a200241f8026a290300370300200141a0016a2003200542b8177c42b81720041b220520032005561b370300200141a8016a200241386a41a00210e9081a200241286a10f10141cc03102c2204450d04200242cc03370284032002200436028003410120024180036a1076200220013602d802200241386a200241d8026a10900520024180036a20022802382204200228024010740240200228023c450d002004102e0b20023502800321032002350288032105024020012903684202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b20014198016a109601200041c8037021040240200041c803490d0020002004460d002001102e0b200241f0036a240020054220862003840f0b20024180036a10f1010b2002418c036a410f360200200241cc006a41023602002002420237023c200241a0a7c9003602382002410436028403200241d4a8c90036028003200220024180036a3602482002200241e8036a36028803200241386a41b0a7c9001044000b20024188036a200241c4006a2902003703002002200229023c3703800341e4a4c900412820024180036a418ca5c900419ca5c900103e000b1038000b1036000bfe1a070a7f017e057f027e037f027e057f230041c0056b2202240020024280808080802037021c2002200136022c2002200041d4e2cc0020011b3602282002200241286a360218200241c8046a200241186a109902024020022802cc042203450d00200241d4046a280200210420022802d004210520022802c8042101200241e8036a200241d8046a41e00010e9081a200241c8046a200241186a10ec01024020022802c80422060d0002402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b2005450d01200541246c450d012003102e0c010b200241c8046a41086a280200210720022802cc04210820024188036a200241e8036a41e00010e9081a200241a8026a20024188036a41e00010e9081a200241c8046a200241186a10ef01024020022802c8044101470d0002402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402005450d00200541246c450d002003102e0b02402007450d00200741c8036c210020062109034002402009220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b200141c8036a210920014198016a109601200041b87c6a22000d000b0b2008450d01200841c8036c450d012006102e0c010b200241b8016a41086a2200200241c8046a410c6a280200360200200220022902cc043703b801200241c8016a200241a8026a41e00010e9081a200241306a410c6a2004360200200241306a41086a20053602002002200336023420022001360230200241c0006a200241c8016a41e00010e9081a200241a8016a2007360200200241a4016a2008360200200241b4016a2000280200360200200220063602a001200220022903b8013702ac01200241ac016a210a0240024020022802182802040d00200241e8036a41086a200a41086a2802003602002002200a2902003703e8030c010b02402004450d00200441246c210103400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a280200102e0c030b2003410c6a280200450d02200341086a280200102e0c020b2003410c6a280200450d01200341086a280200102e0c010b200341086a280200450d00200341046a280200102e0b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d002002280234102e0b02402007450d00200741c8036c210020062109034002402009220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b200141c8036a210920014198016a109601200041b87c6a22000d000b0b02402008450d00200841c8036c450d002006102e0b200a10f101410021030b2003450d00200241c8016a41086a200241e8036a41086a220b2802002201360200200220022903e803220c3703c801200241a8026a41086a20013602002002200c3703a802200241013b01f403200242003702ec0302400240024002402007450d002006200741c8036c6a210d200241c8046a410472210e200241c0006a210f200241c8006a2110200621110340201141e8006a2903004202520d0102402011280298014103470d0020112903a0012112200241306a200241a8026a108e010240024020022802304101460d002002290338210c20104200370300200f4200370300200241306a41086a2201420037030020024200370330200241c8046a41e8fcc60041091081022001200241c8046a41086a2200290000370300200220022900c804370330200241c8046a41b08ec9004103108102200f41086a2000290000370000200f20022900c804370000200241086a200241306a10850302402012200c42b0ea017c580d00201342808080807083211341dea5c900ad210c4280808080d00421124100211441012115410021160c020b2012200229031042b8177c42b81720022802081b220c5a0d02200c42808080807083211241002115410121140c010b2002290338220c428080808070832112200228023421164101211541002114201742808080807083200235024084221721130b200220133703d804200220163602cc04200220153602c80420022012200c42ffffffff0f838422183703d004024002400240024020022d00f503450d004131210141b8a6c90021000c010b0240024002402015450d00200241e8036a10f101200242003702ec03200242f4d2b59bc7ae98b8303703300c010b20022802ec03210a200242f4d2b59bc7ae98b830370330200a450d0020022802e80321190c010b41e401102c220a450d0841002119200a4100360200200a41003b018a012002200a3602ec03200241003602e8030b2012422088a7211a200ca7211b02400340200a2f018a01221c410374211d41002101417f2100024003400240201d2001470d00201c21000c020b200241306a200a20016a418c016a410810ec082209450d03200041016a2100200141086a21012009417f4a0d000b0b02402019450d002019417f6a2119200a20004102746a41e4016a280200210a0c010b0b200242f4d2b59bc7ae98b830370340200220003602382002200a360234200241003602302002200241e8036a36023c2002410036029003200242013703880320150d02200241003a00b80120024188036a200241b8016a41011074200220183703b80120024188036a200241b8016a410810740c030b412d210141e9a6c90021000b20022001360234200220003602304183a6c9004122200241306a41a8a6c90041aca5c900103e000b200241013a00b80120024188036a200241b8016a41011074200e20024188036a10e8050b200241306a20024188036a10f001200220153a00f503200241003a00f40302402015450d0020024188036a41086a200241e8036a41086a290300370300200220022903e803370388032016450d04201a450d04201b102e0c040b2014201645720d00201a450d00201b102e0b201141c8036a2211200d470d000b0b20024188036a41086a200b290300370300200220022903e803370388030b200241a8026a10f10102402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402005450d00200541246c450d002003102e0b02402007450d00200741c8036c210020062109034002402009220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a280200102e0b200141c8036a210920014198016a109601200041b87c6a22000d000b0b02402008450d00200841c8036c450d002006102e0b200241003602d004200242013703c804200220022d0094033a00b801200241c8046a200241b8016a41011074200220022d0095033a00b801200241c8046a200241b8016a41011074200228029003220a200241c8046a10760240200228028c0322000d0041002101410021004100210a0c020b200228028803210920002101034020002f018a01211d2009450d022009417f6a21092000201d4102746a41e4016a280200210020012802e40121010c000b0b1036000b200241c4006a201d360200200241c0006a20003602002002200a3602482002420037033820022001360234200241003602300240200a450d0003402002200a417f6a360248200241306a410020011b221d280200210902400240201d280208220a201d28020422002f018a014f0d00200021010c010b03400240200028020022010d00410021010c020b200941016a210920002f018801210a20012100200a20012f018a014f0d000b0b200a41016a21190240024020090d00200121000c010b200120194102746a41e4016a280200210002402009417f6a2209450d00034020002802e40121002009417f6a22090d000b0b410021190b201d2000360204201d4100360200201d2019360208200241c8046a2001200a4103746a418c016a410810742001200a410c6c6a220141046a28020021002001410c6a2802002201200241c8046a1076200241c8046a2000200110742002280248220a450d01200228023421010c000b0b20023502d004210c20023502c804211220024188036a10f101200241c0056a24002012200c422086840f0b200241d4046a410f360200200241c4006a410236020020024202370234200241a0a7c900360230200241043602cc04200241f0a8c9003602c8042002200241c8046a3602402002200241b8056a3602d004200241306a41b0a7c9001044000bbd0702087f027e23004180016b2202240002400240024020010d00200241003602082002420137030020024100360230200241d8006a41204101200241306a107d200241d8006a41086a22012802002103024020022802584101470d002003450d020c030b200228025c21042002200336020420022004360200200241d8006a41186a22034200370300200241d8006a41106a220442003703002001420037030020024200370358200241106a41a8f8c60041041081022001200241106a41086a220529000037030020022002290010370358200241106a41978bc500410e1081022003200529000037030020042002290010370300200241306a200241d8006a10a30420022d003021052003200241c9006a2900003703002004200241c1006a2900003703002001200241396a290000370300200220022900313703580240024020054101460d00200241106a41186a4200370300200241106a41106a4200370300200241186a4200370300200242003703100c010b200241106a41186a2003290300370300200241106a41106a2004290300370300200241106a41086a200241d8006a41086a290300370300200220022903583703100b2002200241106a41201074200241d8006a20022802002206200228020810b001200241306a41186a2205200241d8006a41186a2201290300370300200241306a41106a2207200241d8006a41106a2203290300370300200241306a41086a2208200241d8006a41086a22042903003703002002200229035837033020014200370300200342003703002004420037030020024200370358200241106a41a8f8c60041041081022004200241106a41086a220929000037030020022002290010370358200241106a41b08bc500410a1081022001200929000037030020032002290010370300200241106a200241d8006a4120109d0302402002280204450d002006102e0b2004200829030037030020032007290300370300200120052903003703002002200229033037035820024100360218200242013703104120102c2201450d022002422037023420022001360230200241306a200241d8006a41201074200241106a200228023022012002280238107402402002280234450d002001102e0b2002350218210a2002350210210b20024180016a2400200b200a422086840f0b200241e4006a410f360200200241c4006a410236020020024202370234200241a0a7c9003602302002410436025c20024188a9c9003602582002200241d8006a3602402002200241f8006a360260200241306a41b0a7c9001044000b1038000b1036000bbf5d05027f027e0c7f077e027f230041e0176b220224002002428080808080203702ac17200220013602e4162002200041d4e2cc0020011b22033602e0162002200241e0166a3602a81741002100200241003a00901102400240024002402001450d0020022001417f6a3602e4162002200341016a3602e016024020032d00000e03030200010b410221000c020b420321040c020b410121000b200241c0076a200241a8176a10ed0142032104024020022903a80822054203520d000c010b2002418f0b6a200241c0076a41e80010e9081a20024190116a200241b0086a41d80210e9081a200241286a200241880b6a41ef0010e9081a200521040b200241d0066a200241286a41ef0010e9081a200241880e6a20024190116a41d80210e9081a02400240024002400240024002400240024020044203510d00200220003a00800320024180036a410172200241d0066a41ef0010e9082101200241f0036a2004370300200241f8036a200241880e6a41d80210e90821030240024020022802a8172802040d0020024190116a200141ef0010e9081a200241c0076a200341d80210e9081a0c010b024020044202510d0020022d0088034102470d0020024190036a280200450d00200228028c03102e0b200241a0046a108b02420321040b20044203510d0020024180036a20024190116a41ef0010e9081a200241d0066a20024187036a41e80010e9081a200241286a200241c0076a41d80210e9081a200241c0076a200241d0066a41e80010e9081a200220043703a808200241b0086a200241286a41d80210e9081a2002200241c0076a3602901120024180036a20024190116a10900520022802880321060240200228028403450d00200228028003102e0b20024180036a200241c0076a41c80310e9081a20024190116a20024180036a108a0220022d009011210120022f009111210320022d0093112107200241880e6a20024190116a41047241840310e9081a024020014101460d00200241880b6a200241880e6a41046a41800310e9081a20024198146a200241d80b6a22081097040240024020022903a80b4202520d0020024190116a41206a2201420037030020024190116a41186a22034280808080c000370300200241013a00b811200242043703a0112002427f37039811200242003703901120024180036a41206a2207420037030020024180036a41186a22094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241f0146a20024190116a20024180036a10d20720024190116a41286a220a200241f0146a41286a2903003703002001200241f0146a41206a2903003703002003200241f0146a41186a29030037030020024190116a41106a220b200241f0146a41106a29030037030020024190116a41086a220c200241f0146a41086a290300370300200220022903f014370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241a0156a20024190116a20024180036a10d207200a200241a0156a41286a2903003703002001200241a0156a41206a2903003703002003200241a0156a41186a290300370300200b200241a0156a41106a290300370300200c200241a0156a41086a290300370300200220022903a015370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241d0156a20024190116a20024180036a10d207200a200241d0156a41286a2903003703002001200241d0156a41206a2903003703002003200241d0156a41186a290300370300200b200241d0156a41106a290300370300200c200241d0156a41086a290300370300200220022903d015370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f37038803200242003703800320024180166a20024190116a20024180036a10d207200a20024180166a41286a290300370300200120024180166a41206a290300370300200320024180166a41186a290300370300200b20024180166a41106a290300370300200c20024180166a41086a2903003703002002200229038016370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241b0166a20024190116a20024180036a10d207200241a8176a41286a220d200241b0166a41286a290300370300200241a8176a41206a220e200241b0166a41206a290300370300200241a8176a41186a220f200241b0166a41186a290300370300200241a8176a41106a2210200241b0166a41106a290300370300200241a8176a41086a2211200241b0166a41086a290300370300200220022903b0163703a81720024180036a20022903981420022d00a014200610a005200c20024180036a410c6a290200370300200b20024180036a41146a290200370300200320024180036a411c6a290200370300200120024180036a41246a290200370300200a20024180036a412c6a290200370300200241c0116a200241b4036a28020036020020022002290284033703901120022d0080034101470d0120022d008303210720022f008103210920022802b81721030240200f2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b0240200241bc176a2802002201450d002001410c6c450d002003102e0b2007411074210720022802c41721030240200241cc176a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200920077221010240200241c8176a2802002200450d002000410c6c450d002003102e0b200241013a008003200220013b008103200220014110763a0083032008108b020c0a0b20024190116a41206a2200420037030020024190116a41186a22034280808080c000370300200241013a00b811200242043703a011427f21042002427f37039811200242003703901120024180036a41206a2207420037030020024180036a41186a22014280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241c0146a20024190116a20024180036a10d20720024190116a41286a2209200241c0146a41286a2903003703002000200241c0146a41206a2903003703002003200241c0146a41186a29030037030020024190116a41106a220a200241c0146a41106a29030037030020024190116a41086a220b200241c0146a41086a290300370300200220022903c014370390112007420037030020014280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241f0146a20024190116a20024180036a10d2072009200241f0146a41286a2903003703002000200241f0146a41206a2903003703002003200241f0146a41186a290300370300200a200241f0146a41106a290300370300200b200241f0146a41086a290300370300200220022903f014370390112007420037030020014280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241a0156a20024190116a20024180036a10d2072009200241a0156a41286a2903003703002000200241a0156a41206a2903003703002003200241a0156a41186a290300370300200a200241a0156a41106a290300370300200b200241a0156a41086a290300370300200220022903a015370390112001420037030020024180036a41106a2203420037030020024180036a41086a220942003703002002420037038003200241880e6a41d9fcc60041061081022009200241880e6a41086a2200290000370300200220022900880e37038003200241880e6a4180f4cb00410610810220012000290000370300200320022900880e370300200241206a20024180036a4120108e022002280224410020022802201bad2105024020022903a80b4201520d0020022903b00b22044200510d04200241b80b6a290300221220047c4200200520127d221220122005561b22127c20122004827d21040b2007420037030020014280808080c000370300200220022800880e3602a81720022002418b0e6a2800003600ab17200241ac036a20022800ab17360000200241013a00a8032002420437039003200242003703800320024200200420057d220520052004561b37038803200220022802a8173600a903200241d0156a20024190116a20024180036a10d207200241880e6a41286a200241d0156a41286a290300370300200241880e6a41206a200241d0156a41206a290300370300200241880e6a41186a200241d0156a41186a290300370300200241880e6a41106a200241d0156a41106a2903003703002000200241d0156a41086a290300370300200220022903d0153703880e200241a8176a200241880b6a10c80220024180036a20022802a817220020022802b01710c902200241c8036a28020041002002290380034201511b2101024020022802ac17450d002000102e0b0240024020022802d00b22002001490d00410c102c2203450d0c410421074104102c2209450d0c2002420437028403200220093602800320024180036a200241880b6a41201074200220003602a81720024180036a200241a8176a41041074200341086a2002280288033602002003200229038003370200410021090240200120004f0d00410c102c2207450d0d4104102c2201450d0d2002420437028403200220013602800320024180036a200241880b6a4120107420022000417f6a3602a81720024180036a200241a8176a41041074200741086a2002280288033602002007200229038003370200410121090b20024190116a41206a42818080801037030020024190116a41186a2201200936020020024190116a41146a2009360200200220022800e0163602b8142002200241e3166a2800003600bb1420024190116a412c6a20022800bb14360000200241013a00b811200220033602ac11200220073602a0112002427f370398112002420037039011200220022802b8143600b91120024180166a200241880e6a20024190116a10d207200241a8176a41286a20024180166a41286a290300370300200241a8176a41206a20024180166a41206a290300370300200241a8176a41186a20024180166a41186a290300370300200241a8176a41106a20024180166a41106a290300370300200241a8176a41086a20024180166a41086a29030037030020022002290380163703a817024020022d00a01422004102470d0020024198116a2002418c036a29020037030020024190116a41106a20024180036a41146a29020037030020012002419c036a290200370300200241b0116a200241a4036a29020037030020024190116a41286a20024180036a412c6a290200370300200241c0116a200241b4036a28020036020020022002290284033703901141801221010c0a0b20024180036a2002290398142000200610a00520024190116a41086a20024180036a410c6a29020037030020024190116a41106a20024180036a41146a290200370300200120024180036a411c6a29020037030020024190116a41206a20024180036a41246a29020037030020024190116a41286a20024180036a412c6a290200370300200241c0116a200241b4036a28020036020020022002290284033703901120022d0080034101470d0120022f00810320022d0083034110747221010c090b200220022800e0163602b8142002200241e3166a2800003600bb142002410a3a00830320024180063b008103200241013a00800320022802980e21030240200241a00e6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402002419c0e6a2802002201450d002001410c6c450d002003102e0b20022802a40e21030240200241ac0e6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241a80e6a2802002201450d092001410c6c450d092003102e2008108b020c0a0b200241880e6a41286a2201200241bc116a290200370300200241880e6a41206a220320024190116a41246a290200370300200241880e6a41186a220720024190116a411c6a290200370300200241880e6a41106a2209200241a4116a290200370300200241880e6a41086a220a20024190116a410c6a29020037030020022002290294113703880e200241b0166a200241a8176a200241880e6a10d2072001200241b0166a41286a2903003703002003200241b0166a41206a2903003703002007200241b0166a41186a2903003703002009200241b0166a41106a290300370300200a200241b0166a41086a290300370300200220022903b0163703880e20024180036a2006200229039814221320022903c00b2214200241880b6a41c0006a290300221520022d00a114410047200010e704420021054200210402402002290380034201520d00427f427f20024180036a41106a2903002204200241a0036a2903007c200229038803220520024180036a41186a2903007c22122005542201ad7c22052001200520045420052004511b22011b2204200241b0036a2903007c427f201220011b220520024180036a41286a2903007c22122005542201ad7c22052001200520045420052004511b22011b2104427f201220011b21050b427f200420024180036a41c0006a29030022167c200520022903b80322177c22182005542201ad7c22122001201220045420122004511b22011b2112427f201820011b2118024002400240024020052017842004201684844200520d00200220183703a817200242003703b817200220123703b0170c010b20024190176a200241880b6a20182012410141112014201584501b10fe062002280290174101460d01200241c0176a2201200229039817370300200241c8176a200241a0176a290300370300200220183703a817200242013703b817200220123703b017200220013602800320024180036a10cc020b20024180036a10a9032002290388032104200241013a00b811200220124200418080f00120064101200641014b1b6ead220520042013420120134201561b80220420042005561b2204420010e808200241106a201842002004420010e80820024190116a41206a2200420037030020024190116a41186a22034280808080c0003703002002200241ab146a2800003600bb14200220022800a8143602b81420024190116a412c6a220720022800bb14360000200242043703a011200220022802b8143600b91120022903082105200241106a41086a2903002104200229030021122002427f370398112002427f20022903102005420052200420127c22052004547222011b427f427f200520011b501b37039011200241e0166a200241880e6a20024190116a10d207200241880e6a41286a200241e0166a41286a290300370300200241880e6a41206a200241e0166a41206a290300370300200241880e6a41186a2201200241e0166a41186a290300370300200241880e6a41106a200241e0166a41106a290300370300200241880e6a41086a200241e0166a41086a290300370300200220022903e0163703880e20024180036a200241880b6a20081080032002200241b1036a2800003602b8142002200241b4036a2800003600bb1420022d0080034101460d01200241b0036a22012d0000210920024180036a41286a220a280200210b20024180036a41246a280200210c20024180036a41206a2206280200210f2002419c036a280200210d20024180036a41186a220e280200211020024180036a41106a2211290300210420024180036a41086a2219290300210520024190116a41246a20024180036a412c6a2802003602002000200b3602002003200f360200200241a4116a200d360200200720022800bb14360000200220093a00b8112002200c3602ac11200220103602a01120022004370398112002200537039011200220022802b8143600b911200241a8176a200241880e6a20024190116a10d207201920022903a8173703002011200241a8176a41086a290300370300200e200241a8176a41106a2903003703002006200241a8176a41186a290300370300200a200241a8176a41206a2903003703002001200241a8176a41286a290300370300200241003a0080032008108b020c0b0b200220022800a8143602b8142002200241ab146a2800003600bb14200241003a00830320024180023b008103200241013a00800320022802980e21030240200241a00e6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402002419c0e6a2802002201450d002001410c6c450d002003102e0b20022802a40e21030240200241ac0e6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241a80e6a2802002201450d092001410c6c450d092003102e2008108b020c0a0b20022d008303210020022f0081032103200241013a0080032002200320004110747222003b008103200220004110763a00830320022802980e2103024020012802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402002419c0e6a2802002201450d002001410c6c450d002003102e0b20022802a40e21030240200241ac0e6a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241a80e6a2802002201450d082001410c6c450d082003102e2008108b020c090b200241880e6a41286a20024190116a412c6a290200370300200241880e6a41206a220620024190116a41246a290200370300200241880e6a41186a221920024190116a411c6a290200370300200241880e6a41106a20024190116a41146a290200370300200241880e6a41086a221a20024190116a410c6a29020037030020022002290294113703880e200241e0166a200241a8176a200241880e6a10d207200a200241e0166a41286a2903003703002001200241e0166a41206a2903003703002003200241e0166a41186a290300370300200b200241e0166a41106a290300370300200c200241e0166a41086a290300370300200220022903e016370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241a8176a20024190116a20024180036a10d207200a200d2903003703002001200e2903003703002003200f290300370300200b2010290300370300200c2011290300370300200220022903a817370390112007420037030020094280808080c000370300200241013a00a80320024204370390032002427f370388032002420037038003200241880e6a20024190116a20024180036a10d207200241c0146a410c6a201a290300370200200220022903880e3702c414200241880e6a41146a28020021032019280200210120062802002107200241880e6a41246a280200210920022802980e210a20022802a40e210b20022903b00e210420024190176a41106a200241c0146a41106a28020036020020024190176a41086a200241c0146a41086a290200370300200220022902c01437039017200241a8146a41086a20024190176a410c6a29020037030020022002290294173703a814024002400240024002400240024020022802d80b417e6a0e1a0100000000000000020500000000000000030000000000000004000b200241003a00830320024181023b0081030c0a0b0240200241e00b6a2802004102460d002002410a3a008303200241003b0081030c0a0b0240200041ff01714102490d002002410a3a008303200241003b0081030c0a0b0240200241f80b6a200241e40b6a10f206220c41ff01714102470d0020024180036a41086a427f370300200241b4036a2200411036020020024180036a41206a420037030020024180036a41186a4280808080c0003703002002427f37038003200241d8b2c4003602b003200241013a00a8032002420437039003200241a8176a41186a200241f80d6a2903002205370300200241a8176a41106a200241f00d6a2903002212370300200241a8176a41086a200241e80d6a29030022183703002002200241e00d6a29030022133703a817200220022903f80b22163703c81720024190116a41106a201837030020024190116a41186a201237030020024190116a41206a2005370300200241b8116a220c20163703002002200241b0036a360290112002201337039811411c102c2206450d0f2002421c37028416200220063602801620022802b00321062000280200220020024180166a107620024180166a20062000107420024180166a20024190116a41086a412010742002200c2903003703b01620024180166a200241b0166a410810740240024020022802a403220c20022802a0032200470d00200041016a220c2000490d0b20004101742206200c2006200c4b1b220c4104200c41044b1bad420c7e2205422088a745410274210c2005a721060240024020000d0020024100360290110c010b20024198116a41043602002002200228029c033602901120022000410c6c360294110b200241b0166a2006200c20024190116a107d200241b8166a280200210020022802b0164101460d01200220022802b41636029c0320022000410c6e3602a00320022802a403210c0b200228029c03200c410c6c6a2200200229038016370200200041086a20024180166a41086a28020036020020024190116a41086a220020024198036a220c290300370300200220022802a40341016a3602a40320024190116a41106a2206200241a0036a220f2903003703002002200229039003370390112002200241a9036a220d2900003703b0162002200d41076a2900003700b716200229038003210520024180036a41106a4280ce1837030020024180036a41086a2005370300200241a8036a2006290300370300200f2000290300370300200c20022903901137030041002100200241b0036a41003a0000200241b4036a20022800b316360000200241b1036a20022802b016360000200241003a0080030c0c0b2000450d090c0f0b41012100200241013a0080032002200c3b0081032002200c4110763a0083030c0a0b0240200241e00b6a2802004102460d002002410a3a008303200241003b0081030c090b0240200041ff01714102490d002002410a3a008303200241003b0081030c090b0240200241f80b6a200241e40b6a10ff06220c41ff01714102470d0020024190116a41086a427f370300200241c4116a2200411336020020024190116a41206a420037030020024190116a41186a4280808080c0003703002002427f37039011200241ccdcc8003602c011200241013a00b811200242043703a011200241a8176a41106a200241e00d6a2903002205370300200241a8176a41186a200241e80d6a2903002212370300200241a8176a41206a200241f00d6a29030022183703002002200241d80d6a29030022133703b0172002200241880c6a29030022163703d017200220022903f80b22173703a81720024180036a41106a220c201337030020024180036a41186a200537030020024180036a41206a2012370300200241a8036a201837030020024180036a41306a22062016370300200220024190116a41306a3602800320022017370388034127102c220f450d0e20024227370284162002200f3602801620022802c011210f2000280200220020024180166a107620024180166a200f2000107420024180166a200c4120107420022002290388033703b01620024180166a200241b0166a41081074200220062903003703b01620024180166a200241b0166a410810740240024020022802b411220c20022802b0112200470d00200041016a220c2000490d0a20004101742206200c2006200c4b1b220c4104200c41044b1bad420c7e2205422088a745410274210c2005a721060240024020000d0020024100360280030c010b20024188036a4104360200200220022802ac113602800320022000410c6c360284030b200241b0166a2006200c20024180036a107d200241b8166a280200210020022802b0164101460d01200220022802b4163602ac1120022000410c6e3602b01120022802b411210c0b20022802ac11200c410c6c6a2200200229038016370200200041086a20024180166a41086a280200360200200241b0166a41086a220020024190116a41186a290300370300200220022802b41141016a3602b411200241b0166a41106a220c20024190116a41206a290300370300200220022903a0113703b0162002200241b9116a2206290000370380162002200641076a29000037008716200229039011210520024180036a41106a4280ce1837030020024180036a41086a2005370300200241a8036a200c29030037030020024180036a41206a200029030037030020024180036a41186a20022903b01637030041002100200241b0036a41003a0000200241b4036a200228008316360000200241b1036a200228028016360000200241003a0080030c0b0b20000d0e0c080b41012100200241013a0080032002200c3b0081032002200c4110763a0083030c090b20024180036a200241e00b6a10df020c020b0240200041ff01714102490d002002410a3a008303200241003b0081030c070b20024190116a200241e00b6a10b806024020022d009011220c4106460d00200241800e3b00810341012100200241013a008003200220022d0092114100200c4103461b3a0083030c080b200241e80b6a290300210520022903e00b2112200241d00d6a28020021004118102c220c450d0b200242183702ac172002200c3602a8174110200241a8176a1076200241a8176a41e6b3c700411010742002200036028003200241a8176a20024180036a4104107441002100200241003602800320024190116a4130410420024180036a107d20024190116a41086a280200210602402002280290114101470d0020060d0c0c060b200228029411220c20022903a817370200200c41086a200241a8176a41086a28020036020020024180036a41306a41003a0000200241ac036a4101360200200241a8036a2006410c6e360200200241a4036a200c360200200241a0036a410036020020024198036a420437030020024180036a41106a42d80437030020024180036a41086a427f2012427f2005501b220542e5cc99b3e6cc99b3667c221220122005541b37030020022002280090113602b016200220024193116a2800003600b316200241b4036a20022800b316360000200241b1036a20022802b016360000200241003a0080030c070b20024180036a200241dc0b6a109d070b20022d00800321000c050b200241013a0080032002200320074110747222013b008103200220014110763a0083030c070b200241940e6a410f36020020024194036a41023602002002420237028403200241a0a7c900360280032002410436028c0e2002419ca9c9003602880e2002200241880e6a360290032002200241d8176a3602900e20024180036a41b0a7c9001044000b41d0e7cc00411941ece7cc001039000b1038000b41012100200241013a0080030b200241880e6a41086a220c20024180036a410c6a290200370300200241880e6a41106a20024180036a41146a290200370300200241880e6a41186a220620024180036a411c6a290200370300200241880e6a41206a220f20024180036a41246a290200370300200241880e6a41286a20024180036a412c6a290200370300200241880e6a41306a200241b4036a28020036020020022002290284033703880e0240200041ff01714101460d00200241e0166a41286a2200200241880e6a412c6a290200370300200241e0166a41206a220d200241880e6a41246a220e290200370300200241e0166a41186a2210200241880e6a411c6a290200370300200241e0166a41106a2211200241880e6a41146a2219290200370300200241e0166a41086a221a200241880e6a410c6a2902003703002002200229028c0e3703e016200c200241a8146a41086a290300370300200e2009360200200f20073602002006200136020020192003360200200220022903a8143703880e200220043703b00e2002200b3602a40e2002200a3602980e20024190116a41286a200029030037030020024190116a41206a200d29030037030020024190116a41186a201029030037030020024190116a41106a201129030037030020024190116a41086a201a290300370300200220022903e01637039011200241a8176a200241880e6a20024190116a10d20720024180036a41086a20022903a81737030020024180036a41106a200241a8176a41086a29030037030020024180036a41186a200241a8176a41106a29030037030020024180036a41206a200241a8176a41186a29030037030020024180036a41286a200241a8176a41206a29030037030020024180036a41306a200241a8176a41286a290300370300200241003a0080032008108b020c030b20022d008303210020022f008103210c200241013a0080032002200c20004110747222003b008103200220004110763a00830302402001450d002001410c6c2100200a210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402003450d002003410c6c450d00200a102e0b02402009450d002009410c6c2100200b210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2007450d012007410c6c450d01200b102e0c010b200241013a008003200220013b008103200220014110763a00830320022802b81721030240200241c0176a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b0240200241bc176a2802002201450d002001410c6c450d002003102e0b20022802c41721030240200241cc176a2802002201450d002001410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241c8176a2802002201450d002001410c6c450d002003102e2008108b020c010b2008108b020b4101102c2201450d00200242013702c407200220013602c0070240024020022d0080034101470d00200241013a009011200241c0076a20024190116a4101107420024180036a410172200241c0076a108e050c010b200241003a009011200241c0076a20024190116a41011074200220024180036a41086a29030037039011200241c0076a20024190116a4108107420024198036a2802002101200241a0036a2802002200200241c0076a107602402000450d0020012000410c6c6a2107034020012802002100200141086a2802002203200241c0076a1076200241c0076a2000200310742001410c6a22012007470d000b0b200241a4036a2802002101200241ac036a2802002200200241c0076a107602402000450d0020012000410c6c6a2107034020012802002100200141086a2802002203200241c0076a1076200241c0076a2000200310742001410c6a22012007470d000b0b200220024190036a29030037039011200241c0076a20024190116a410810742002200241b0036a2d00003a009011200241c0076a20024190116a410110740b20023502c807210420023502c0072105024020022d0080030d000240200241a0036a2802002200450d0020024198036a28020021012000410c6c210003400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402002419c036a2802002201450d002001410c6c450d00200228029803102e0b0240200241ac036a2802002200450d00200241a4036a28020021012000410c6c210003400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b200241a8036a2802002201450d002001410c6c450d0020022802a403102e0b200241e0176a240020044220862005840f0b1036000bb30304017f027e067f027e230041206b22032400200229030021042001290300210520022802102106200141106a200241186a2207280200220810e0082001280210200141186a2209280200220a410c6c6a20062008410c6c10e9081a200741003602002009200a20086a2208360200200341086a200836020020032001290210370300200228021c21072001411c6a200241246a2209280200220810e008200128021c200141246a220a280200220b410c6c6a20072008410c6c10e9081a20094100360200200a200b20086a2208360200200341106a41086a20083602002003200129021c3703102002290308210c2001290308210d0240024020012d0028450d004101210120022d00280d010b410021010b200020032903003702102000200329031037021c200020013a0028200041186a200341086a280200360200200041246a200341106a41086a2802003602002000200c200d200d200c561b3703082000427f200520047c220c200c2005541b3703000240200241146a2802002201450d002001410c6c450d002006102e0b0240200241206a2802002201450d002001410c6c450d002007102e0b200341206a24000bb30b01087f230041f0026b220224002002428080808080203702dc02200220013602cc022002200041d4e2cc0020011b3602c8022002200241c8026a3602d802200241c8016a200241d8026a109902200241d4016a280200210320022802d001210420022802cc01210520022802c8012106200241e8006a200241d8016a41e00010e9081a024002402005450d00200241086a200241e8006a41e00010e9081a0240024020022802d8022802040d00200241e8006a200241086a41e00010e9081a0c010b02402003450d00200341246c21002005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002005102e0b410021050b2005450d00200241d4016a2003360200200241c8016a41086a2004360200200220053602cc01200220063602c801200241c8016a41106a200241e8006a41e00010e9082107200241b8026a200241c8016a41047210c7014102200110eb042002410036026841fcc6cb004110200241e8006a410410b201200241e8006a41186a22014200370300200241e8006a41106a22004200370300200241e8006a41086a2208420037030020024200370368200241086a41d9fcc60041061081022008200241086a41086a220929000037030020022002290008370368200241086a4180f4cb004106108102200120092900003703002000200229000837030020022006360208200241e8006a4120200241086a410410b201200241b8026a10ee04200710f0042006417f6a200710a40720014200370300200042003703002008420037030020024200370368200241086a41d9fcc60041061081022008200929000037030020022002290008370368200241086a41d4f2cb00410b1081022001200929000037030020002002290008370300200241e8006a412010ff01200241086a200241c8016a109a042001200241086a41186a2903003703002000200241086a41106a2903003703002008200929030037030020022002290308370368200241c8026a2006108c0220022802d002210020022802c80221014120102c2208450d01200242203702dc02200220083602d802200241d8026a200241e8006a412010742001200020022802d802220820022802e00210b201024020022802dc02450d002008102e0b024020022802cc02450d002001102e0b200610de0620022802b8022106024020022802c0022201450d00200141246c21002006210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b024020022802bc022201450d00200141246c450d002006102e0b02402003450d00200341246c21002005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002005102e0b200241f0026a240042010f0b200241146a410f360200200241dc016a4102360200200242023702cc01200241a0a7c9003602c8012002410436020c200241b8a9c9003602082002200241086a3602d8012002200241e8026a360210200241c8016a41b0a7c9001044000b1036000bab0102017f027e230041306b220224000240024020010d004104102c2201450d0120024204370204200220013602004100200210762002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241d0a9c9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000be10102017f027e230041306b220224000240024020010d004104102c2201450d012002420437020420022001360200410020021076200241003602182002200241186a41041074200241003602182002200241186a41041074200241003602182002200241186a410410742002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241e4a9c9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bab0102017f027e230041306b220224000240024020010d004104102c2201450d0120024204370204200220013602004100200210762002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241fca9c9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bcb0102017f027e230041306b2202240002400240200041d4e2cc0020011b200110fc0541ff01714103460d004101102c2201450d012002420137020420022001360200200241003a00182002200241186a410110742002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c20024198aac9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bb210040d7f017e017f017e230041f0006b22022400200242808080808020370254200220013602642002200041d4e2cc0020011b22003602602002200241e0006a3602500240024002400240024002400240024020014104490d0020022001417c6a3602642002200041046a360260200241286a200241d0006a10e80120022802282203450d00200241306a2802002104200228022c2105200241206a200241d0006a10ad010240024020022802200d004104210620022802242207200228025022012802044104762200200020074b1b22084104742200417f4c0d0902402008450d002000102c2206450d050b2002200228025441016a22003602540240024002400240200020022802584b0d00024020070d00410021070c030b2007417f6a21094100210a4100210b024002400340200128020422004104490d022001280200220c280000210d20012000417c6a3602042001200c41046a360200200241186a200241d0006a10ad0120022802180d022001280204220c200228021c2200490d022000417f4c0d100240024020000d004101210e0c010b20001032220e450d0c2001280204210c0b200c2000490d01200e2001280200200010e908210c2001280204220e2000490d0c2001200e20006b3602042001200128020020006a360200200c450d02024002400240200b2008460d002008210e200b21080c010b200841016a22012008490d122008410174220e2001200e20014b1b22014104200141044b1b220141ffffffff0071200146410274210e200141047421010240024020080d00200241003602280c010b20022006360228200241043602302002200841047436022c0b200241c0006a2001200e200241286a107d2002280248210120022802404101460d01200228024421062001410476210e0b200620084104746a2201200c3602042001200d360200200141086a2000ad220f422086200f843702002009200b460d05200b41016a210b200a41106a210a20022802502101200e21080c010b0b20010d0a0c0f0b200e102e0b200b450d00200641086a2101034002402001280200450d002001417c6a280200102e0b200141106a2101200a41706a220a0d000b0b200841ffffffff00710d020c030b20022802542100200e21080b20022000417f6a3602542006450d01200228025021014100210b200241003a0040024020012802042200450d002001280200220c2d0000210d20012000417f6a3602042001200c41016a360200024002400240200d0e020100030b200241106a200241d0006a10ad0120022802100d022001280204220c20022802142200490d022000417f4c0d0d0240024020000d004101210b0c010b20001032220b450d092001280204210c0b200c2000490d01200b2001280200200010e908210c2001280204220d2000490d0a2001200d20006b3602042001200128020020006a360200200c450d022000ad220f422086200f84210f0b200fa72110200241086a200241d0006a10ad01024020022802080d002001280204220c200228020c2200490d002000417f4c0d0d0240024020000d004101210d0c010b20001032220d450d092001280204210c0b0240200c2000490d00200d2001280200200010e908210c2001280204220e2000490d0c2001200e20006b3602042001200128020020006a360200200c450d012000ad220f422086200f84a7210e0240200128020422004104490d0020012000417c6a220a36020420012001280200220941046a360200200a41034b0d070b200e450d010b200d102e0b200b450d012010450d010b200b102e0b02402007450d00200741047421004100210103400240200620016a220b41086a280200450d00200b41046a280200102e0b2000200141106a2201470d000b0b200841ffffffff0071450d010b2006102e0b02402004450d002004410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b2005450d012005410c6c450d012003102e0c010b2001200041786a3602042001200941086a3602002003450d002002280250280204450d0102402004450d002004410c6c21004100210103400240200320016a220d41046a280200450d00200d280200102e0b20002001410c6a2201470d000b0b02402005450d002005410c6c450d002003102e0b02402007450d0020074104742100200641086a2101034002402001280200450d002001417c6a280200102e0b200141106a2101200041706a22000d000b0b0240200841ffffffff0071450d002006102e0b0240200b450d002010450d00200b102e0b200e450d00200c102e0b200241cc006a410f3602002002413c6a41023602002002420237022c200241a0a7c90036022820024104360244200241bcaac9003602402002200241c0006a3602382002200241e8006a360248200241286a41b0a7c9001044000b02402004450d002004410c6c21002003210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402005450d002005410c6c450d002003102e0b02402007450d0020074104742100200641086a2101034002402001280200450d002001417c6a280200102e0b200141106a2101200041706a22000d000b0b0240200841ffffffff0071450d002006102e0b0240200b450d002010450d00200b102e0b0240200e450d00200c102e0b4101102c22010d040b1036000b2000200e41b8b2c0001056000b2000200d41b8b2c0001056000b2000200e41b8b2c0001056000b2002420137022c20022001360228200241003a0040200241286a200241c0006a410110742002350230210f20023502282111200241f0006a24002011200f422086840f0b1038000bb70102017f027e230041306b220224000240024020010d004104102c2201450d012002420437020420022001360200200241003602182002200241186a410410742002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241dcaac9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bba0102017f027e230041306b220224000240024020014104470d004101102c2201450d012002420137020420022001360200200241003a00182002200241186a410110742002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241fcaac9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000b950102017f017e230041306b220224000240200041d4e2cc0020011b200110fc0541ff01714103470d00200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c20024190abc9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b20024100360200200210ce042103200241306a240020030b910102017f017e230041306b220224000240024020014108470d002001417c714104470d010b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241a8abc9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b20024100360200200210ce042103200241306a240020030be30303017f027e017f230041e0026b220224000240024020014104470d0020024100360284024101102c2201450d01200242013702c402200220013602c002200241003a00d702200241c0026a200241d7026a4101107420023502c002210320023502c802210402402002280284022201450d000240200228028c022205450d002005410c6c210503400240200141046a280200450d002001280200102e0b2001410c6a2101200541746a22050d000b0b02402002280288022201450d002001410c6c450d00200228028402102e0b024020024198026a2802002201450d002001410474210520024190026a28020041086a2101034002402001280200450d002001417c6a280200102e0b200141106a2101200541706a22050d000b0b024020024194026a28020041ffffffff0071450d00200228029002102e0b02402002419c026a2802002201450d00200241a0026a280200450d002001102e0b200241ac026a280200450d00200241a8026a280200102e0b200241e0026a240020044220862003840f0b200241cc026a410f360200200241146a410236020020024202370204200241a0a7c900360200200241043602c402200241ccabc9003602c0022002200241c0026a3602102002200241d8026a3602c802200241b0a7c9001044000b1036000bab0102017f027e230041306b220224000240024020010d004104102c2201450d0120024204370204200220013602004100200210762002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241f4abc9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bae0102017f027e230041306b220224000240024020014104470d004104102c2201450d0120024204370204200220013602004100200210762002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c2002418cacc9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bae0102017f027e230041306b220224000240024020014104470d004104102c2201450d0120024204370204200220013602004100200210762002350208210320023502002104200241306a240020042003422086840f0b200241246a410f360200200241146a410236020020024202370204200241a0a7c9003602002002410436021c200241a0acc9003602182002200241186a3602102002200241286a360220200241b0a7c9001044000b1036000bd30704067f017e017f037e230041f0006b22022400024002400240024020010d002002411436021c200241bcdac800360218200241206a41bcdac800411410ed0202400240024020022802202201450d00200228022421032002200241286a280200220436023c200220013602380240024002402004450d0020012d0000210520022004417f6a36023c2002200141016a3602382002200241386a10ab0102402002280200450d00200241003602500c010b200241d0006a200241386a200228020410990120022802502206450d004101210720022902542108200541ff01714101460d012008a72204450d00200441286c450d002006102e0b4100210720024100360210200242013703082002410a3602442002200241186a3602402002200241086a36024c41012104200241e4006a410136020020024201370254200241909dc5003602502002200241c0006a360260200241cc006a419cebc000200241d0006a103d1a2002280208200228021010ef020240200228020c450d002002280208102e0b0c010b2002200636022c200220083702302008422088a721052008a72109410021040b02402003450d002001102e0b2004450d010b200242003702304108210641002105410021090c010b20070d0020062802082205ad42287e2208422088a70d022008a72203417f4c0d02024020030d0041082106410021090c010b200628020021012003102c2206450d03200341286e210920034128490d00200621042009210703402003450d012007450d05200141086a2903002108200141106a290300210a2001290320210b2001290300210c200441186a200141186a290300370300200441106a200a370300200441086a20083703002004200c370300200441206a200b370300200441286a2104200341586a2103200141286a21012007417f6a22070d000b0b200541286c4104722201417f4c0d012001102c2204450d022002410036025820022001360254200220043602502005200241d0006a10760240200541286c2201450d00200620016a2104200621010340200241d0006a2001412010742002200141206a290300370308200241d0006a200241086a41081074200141286a22012004470d000b0b200235025821082002350250210a02402009450d00200941286c450d002006102e0b200241f0006a24002008422086200a840f0b200241146a410f360200200241e4006a410236020020024202370254200241a0a7c9003602502002410436020c200241c8acc9003602082002200241086a3602602002200241e8006a360210200241d0006a41b0a7c9001044000b1038000b1036000b200920094188decc00103c000bb80804017f027e027f017e230041f0076b220224002002428080808080203702cc07200220013602dc072002200041d4e2cc0020011b3602d8072002200241d8076a3602c80720024180046a200241c8076a10cb06024020022903880422034202510d00200229038004210420024180026a20024190046a41f00110e9081a200241086a200241c8076a10ad0120022802080d0020022802dc072200200228020c2201490d0002400240024002402001417f4c0d000240024020010d00410121050c010b200110322205450d0420022802dc0721000b0240024020002001490d00200520022802d807200110e908210020022802dc07220520014f0d012001200541b8b2c0001056000b2005102e0c050b2002200520016b22053602dc07200220022802d80720016a3602d807200241106a20024180026a41f00110e9081a2005450d01420221032001450d022000102e0c020b1038000b20024180046a200241106a41f00110e9081a0b20034202510d01200241106a20024180046a41f00110e9081a20024180026a200241106a41f00110e9081a200220013602dc07200220003602d80720024180046a200241d8076a10f7010240024020022802840422050d00410021050c010b200241d0076a20024190046a28020036020020022002290388043703c80720022802800421060b02402001450d002000102e0b20024180046a41086a2200200241c8076a41086a2201280200360200200220022903c80737038004024002402005450d00200241f0036a41086a20002802002200360200200220022903800422073703f003200241a8056a2005360200200241a4056a2006360200200241a0056a4102360200200241ac056a2007370200200241b4056a2000360200200241c0056a2003370300200241b8056a20043703002002410a36029805200242023703e804200241c8056a20024180026a41f00110e9081a200241c0076a2001290300370300200241b8076a20022903c807370300200220024180046a3602c807200241d8076a200241c8076a1090052001200241d8076a41086a280200360200200220022903d8073703c807200241c8076a10e8061a024020022903e8044202510d0020022d00800441ff01714102470d00200228028804450d00200228028404102e0b20024198056a108b02410121010c010b410021010b4101102c2200450d00200242013702840420022000360280040240024020010d00200241003a00800220024180046a20024180026a410110740c010b200241013a00800220024180046a20024180026a410110740b20023502880421032002350280042104200241f0076a240020042003422086840f0b1036000b2002411c6a410f36020020024194026a41023602002002420237028402200241a0a7c9003602800220024104360214200241e4acc9003602102002200241106a360290022002200241e8076a36021820024180026a41b0a7c9001044000b902508047f017e037f017e027f027e0f7f037e230041d0056b22022400024020014108490d00200241003a008004200041d4e2cc0020011b41086a2103200141786a2104410021010340200241003a008801024020042001470d00200141ff0171450d02200241003a0080040c020b200241e0036a20016a200320016a2d00003a00002002200141016a22003a0080042000210120004120470d000b20024188016a41186a2201200241e0036a41186a29030037030020024188016a41106a2203200241e0036a41106a29030037030020024188016a41086a2205200241e0036a41086a290300370300200220022903e00337038801200041ff01714120490d00200241286a41086a2005290300370300200241286a41106a2003290300370300200241286a41186a2001290300370300200220022903880122063703482002200637032820042000470d00200241e0036a41186a2205200241286a41186a22072903002206370300200241e0036a41106a2208200241286a41106a2209290300220a3703004108210b200241e0036a41086a2204200241286a41086a220c290300220d37030020022002290328220e3703e003200241086a41186a2006370300200241086a41106a200a370300200241086a41086a200d3703002002200e370308200241e8006a41186a2006370300200241e8006a41106a200a370300200241e8006a41086a200d3703002002200e3703682007420037030020094200370300200c420037030020024200370328200241e0036a41a081ca004107108102200c2004290000370300200220022900e003370328200241e0036a41e4d1c100410c10810220072004290000370300200920022900e0033703002002200241286a4120108e022002280204210f200228020021102007420037030020094200370300200c420037030020024200370328200241e0036a41a081ca004107108102200c2004290000370300200220022900e003370328200241e0036a41f09dc500410a10810220072004290000370300200920022900e003370300200241e0036a200241286a10880320022802e0032201410120011b211120022902e403420020011b2206a72112024002400240024002400240024002402006422088a72201450d002011200141057422136a2114200241bc056a2115200241e0036a41206a2100201121010340200241b8036a41186a2203200141186a2216290000370300200241b8036a41106a2217200141106a2218290000370300200241b8036a41086a2219200141086a221a290000370300200220012900003703b803200241c8006a41086a221b201a290000370300200241c8006a41106a221a2018290000370300200241c8006a41186a2218201629000037030020022001290000370348200520032903003703002008201729030037030020042019290300370300200220022903b8033703e00320024198056a200241e0036a10bf01200720182903003703002009201a290300370300200c201b290300370300200220022903483703280240024020022802b80522030d00410021030c010b2000200229039805370300200041186a20024198056a41186a290300370300200041106a20024198056a41106a290300370300200041086a20024198056a41086a29030037030020052007290300370300200820092903003703002004200c29030037030020024188056a41086a201541086a280200360200200220022903283703e003200220152902003703880520024188016a41386a200241e0036a41386a29030037030020024188016a41306a200241e0036a41306a29030037030020024188016a41286a200241e0036a41286a29030037030020024188016a41206a200029030037030020024188016a41186a200529030037030020024188016a41106a200829030037030020024188016a41086a2004290300370300200220022903e003370388010b20030d02200141206a2101201341606a22130d000b0b0240201241ffffff3f71450d002011102e0b41002118410021190c010b20024188026a41386a220020024188016a41386a29030037030020024188026a41306a220420024188016a41306a29030037030020024188026a41286a220520024188016a41286a29030037030020024188026a41206a220820024188016a41206a29030037030020024188026a41186a220720024188016a41186a29030037030020024188026a41106a220920024188016a41106a29030037030020024188026a41086a220c20024188016a41086a290300370300200241e8046a41086a221620024188056a41086a28020036020020022002290388013703880220022002290388053703e804200241e0026a41086a2217200c290300370300200241e0026a41106a220c2009290300370300200241e0026a41186a22092007290300370300200241e0026a41206a22072008290300370300200241e0026a41286a22082005290300370300200241e0026a41306a22052004290300370300200241e0026a41386a22042000290300370300200241f8046a41086a2200201628020036020020022002290388023703e002200220022903e8043703f80441d000102c220b450d05200b20022903e002370300200b2003360240200b20022903f804370244200b41386a2004290300370300200b41306a2005290300370300200b41286a2008290300370300200b41206a2007290300370300200b41186a2009290300370300200b41106a200c290300370300200b41086a2017290300370300200b41cc006a20002802003602000240024020134120470d0041012119410121180c010b200141206a2109201441606a211a200241bc056a2117200241e0036a41206a210041012119410121180340200921010340200241b8036a41186a2204200141186a2203290000370300200241b8036a41106a2208200141106a2205290000370300200241b8036a41086a2207200141086a2209290000370300200220012900003703b803200241c8006a41186a220c2003290000370300200241c8006a41106a22132005290000370300200241c8006a41086a2216200929000037030020022001290000370348200241e0036a41186a22032004290300370300200241e0036a41106a22052008290300370300200241e0036a41086a22082007290300370300200220022903b8033703e00320024198056a200241e0036a10bf01200241286a41186a2207200c290300370300200241286a41106a22092013290300370300200241286a41086a220c2016290300370300200220022903483703280240024020022802b80522040d00410021040c010b2000200229039805370300200041186a20024198056a41186a290300370300200041106a20024198056a41106a290300370300200041086a20024198056a41086a29030037030020032007290300370300200520092903003703002008200c29030037030020024188056a41086a201741086a280200360200200220022903283703e003200220172902003703880520024188016a41386a200241e0036a41386a29030037030020024188016a41306a200241e0036a41306a29030037030020024188016a41286a200241e0036a41286a29030037030020024188016a41206a200029030037030020024188016a41186a200329030037030020024188016a41106a200529030037030020024188016a41086a2008290300370300200220022903e003370388010b024020040d002014200141206a2201470d010c030b0b20024188026a41386a220720024188016a41386a29030037030020024188026a41306a220920024188016a41306a29030037030020024188026a41286a220c20024188016a41286a29030037030020024188026a41206a221320024188016a41206a29030037030020024188026a41186a221620024188016a41186a29030037030020024188026a41106a221b20024188016a41106a29030037030020024188026a41086a221520024188016a41086a290300370300200241e8046a41086a221c20024188056a41086a28020036020020022002290388013703880220022002290388053703e804200241e0026a41086a221d2015290300370300200241e0026a41106a2215201b290300370300200241e0026a41186a221b2016290300370300200241e0026a41206a22162013290300370300200241e0026a41286a2213200c290300370300200241e0026a41306a220c2009290300370300200241e0026a41386a22092007290300370300200241f8046a41086a2207201c28020036020020022002290388023703e002200220022903e8043703f8042008201d290300370300200520152903003703002003201b29030037030020002016290300370300200241e0036a41286a22162013290300370300200241e0036a41306a2213200c290300370300200241e0036a41386a220c2009290300370300200220022903e0023703e00320024198056a41086a221b2007280200360200200220022903f80437039805024020182019470d00201941016a22072019490d07201941017422092007200920074b1b22074104200741044b1bad42d0007e2206422088a74541037421072006a721090240024020190d0020024100360288010c010b20024108360290012002200b360288012002201941d0006c36028c010b20024188026a2009200720024188016a107d20022802900221072002280288024101460d04200228028c02210b200741d0006e21190b200141206a2109200b201841d0006c6a220720022903e003370300200529030021062003290300210a2000290300210d2016290300210e2013290300211e200c290300211f2008290300212020072004360240200741086a2020370300200741386a201f370300200741306a201e370300200741286a200e370300200741206a200d370300200741186a200a370300200741106a20063703002007200229039805370244200741cc006a201b280200360200201841016a2118201a2001470d000b0b201241ffffff3f71450d002011102e0b200220183602a0052002201936029c052002200b36029805200241e0036a20024198056a10a30341002101024020022802e0034101460d00200241b8036a41206a20024188046a280200360200200241b8036a41186a200241e0036a41206a290300370300200241b8036a41106a200241e0036a41186a290300370300200241b8036a41086a200241e0036a41106a2903003703002002200241e0036a41086a2903003703b8032002418c046a2802002101200241e0026a20024190046a41d80010e9081a0b20024198056a41086a2200200241b8036a41086a29030037030020024198056a41106a2204200241b8036a41106a29030037030020024198056a41186a2203200241b8036a41186a29030037030020024198056a41206a2205200241b8036a41206a280200360200200220022903b80337039805200241e0036a200241e0026a41d80010e9081a02402001450d0020024188016a41206a200528020036020020024188016a41186a200329030037030020024188016a41106a200429030037030020024188016a41086a200029030037030020022002290398053703880120024188026a200241e0036a41d80010e9081a200241ac016a2001360200200241b0016a20024188026a41d80010e9081a200241e0036a41186a200241e8006a41186a290300370300200241e0036a41106a200241e8006a41106a290300370300200241e0036a41086a200241e8006a41086a290300370300200220022903683703e003200241e0026a20024188016a41e7e485f306200241e0036a10e40720022902e402210620022802e002210420024188016a10b80220040d020b4100210120024100360288010c020b2007450d020c030b200241e8036a2006370300200220183602f003200220043602e4032002200f410020101b3602e00320024188016a200241e0036a1097022006a7210302402006422088a72201450d002001410c6c21002004210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402003450d002003410c6c450d002004102e0b024020022802880122010d00410021010c010b20024190016a2802002100200228028c0121030b4101102c2204450d01200242013702e403200220043602e0030240024020010d00200241003a008801200241e0036a20024188016a410110740c010b200241013a008801200241e0036a20024188016a410110742000200241e0036a1076200241e0036a2001200010740b20023502e803210620023502e003210a02402001450d002003450d002001102e0b200241d0056a24002006422086200a840f0b1038000b1036000b20024194016a410f360200200241f4036a4102360200200242023702e403200241a0a7c9003602e0032002410436028c012002419cadc90036028801200220024188016a3602f0032002200241c8056a36029001200241e0036a41b0a7c9001044000b891003037f017e067f230041e0016b220424000240024002400240024002400240024002400240200141e0006a22052001413c6a412010ec08450d00200441d0006a41186a200541186a290000370300200441d0006a41106a200541106a290000370300200441d0006a41086a200541086a2900003703002004200529000037035002402001200441d0006a10af022206450d00200628020c41004a0d010b200441206a41086a2201200541086a290000370300200441206a41106a2203200541106a290000370300200441206a41186a2202200541186a290000370300200420052900003703204130102c2205450d01200541003a00002005200429032037000120052004290050370021200541096a2001290300370000200541116a2003290300370000200541196a2002290300370000200541286a2201200441d7006a2900003700000240024020052d00000e040a0a000a010b200541086a280200450d09200541046a280200102e0c090b2001280200450d08200541246a280200102e0c080b2004410036020c20042005360208200441bc81ca0036020420042001360200200442003703182004420437031020044188016a4120360200200420033602840120042002360280014124102c2205450d00200442243702a401200420053602a001200441a0016a20044180016a410410744120200441a0016a1076200441a0016a200341201074200441d0006a200420042802a001220120042802a801200441106a10a702024002400240024020042802504101470d0002400240200428025422052d00000e0403030003010b200541086a280200450d02200541046a280200102e0c020b200541286a280200450d01200541246a280200102e0c010b20042802542202450d0102400240200441d8006a2903002207422088a741044f0d00410021050c010b20022800002103410121050b2007a7450d022002102e0c020b2005102e0b410021050b024020042802a401450d002001102e0b0240024002402005450d0020042003360244200441d0006a2004200441c4006a4104200441106a10a702024020042802504101470d0002400240200428025422052d00000e040a0a000a010b200541086a280200450d09200541046a280200102e0c090b200541286a280200450d08200541246a280200102e0c080b20042802542202450d08200441d8006a29030021072004200236024820042007422088a7220636024c41002105200441003a00702006417f6a210102400240034020062005460d01200441d0006a20056a200220056a22032d00003a00002004200341016a3602482004200541016a22033a00702004200136024c2001417f6a21012003210520034120470d000b200441a0016a41086a2205200441d0006a41086a290300370300200441a0016a41106a2201200441d0006a41106a290300370300200441a0016a41186a2206200441d0006a41186a290300370300200420042903503703a001200341ff0171411f4b0d010c030b200541ff0171450d02200441003a0070410021050c030b200441206a41086a2005290300370300200441206a41106a2001290300370300200441206a41186a2006290300370300200420042903a001370320200441d0006a200441c8006a10850520042802702205450d01200441f4006a28020021010c020b200041003602000c080b410021050b02402007a7450d002002102e0b2005450d0502402001450d00200141306c450d002005102e0b2004280214210820042802102109200442043703102004280218210620044100360218200641306c220a41306d2202ad420c7e2207422088a70d032007a72201417f4c0d034104210502402001450d002001102c2205450d010b2000200536020041002103200041086a4100360200200041046a2001410c6e220b36020002400240200b20024f0d00200b410174220c2002200c20024b1b220c4104200c41044b1bad420c7e2207422088a745410274210c2007a7210d024002402001410b4b0d00200441003602500c010b200441d8006a4104360200200420053602502004200b410c6c3602540b200441a0016a200d200c200441d0006a107d200441a8016a280200210120042802a0014101460d01200020042802a4012205360200200041046a2001410c6e3602000b20060d02200921010c030b2001450d030b1036000b2009200a6a210a200641306c2102200941306a2101200641047441706a41047641016a210b4100210302400340200141546a2802002206450d01200541046a200141586a290200370200200520063602002005410c6a2105200141306a2101200341016a2103200241506a22020d000b200a2101200b21030b200a20016b220a41306d21020b200041086a20033602000240200a450d00200241306c2103200141086a2105034002402005280200450d002005417c6a280200102e0b200541306a2105200341506a22030d000b0b02402008450d00200841306c450d002009102e0b20042802102103024020042802182205450d00200541306c2101200341086a2105034002402005280200450d002005417c6a280200102e0b200541306a2105200141506a22010d000b0b20042802142205450d05200541306c450d052003102e0c050b1038000b2005102e0b200041003602000b20042802102103024020042802182205450d00200541306c2101200341086a2105034002402005280200450d002005417c6a280200102e0b200541306a2105200141506a22010d000b0b20042802142205450d01200541306c450d012003102e0c010b2005102e200041003602000b200441e0016a24000b8c0804057f017e037f017e230041c0016b22022400024020010d0020024198016a41186a2203420037030020024198016a41106a2204420037030020024198016a41086a220542003703002002420037039801200241f0006a41a8f8c60041041081022005200241f0006a41086a22012900003703002002200229007037039801200241f0006a41a58bc500410b1081022003200129000037030020042002290070370300200220024198016a10a2042002280200210620022902042107200241186a22084200370300200241106a22094200370300200241086a220a420037030020024200370300200241f0006a41a8f8c6004104108102200a200129000037030020022002290070370300200241f0006a41c28cc500410a1081022008200129000037030020092002290070370300200241f0006a200210a30420022d00702101200320024189016a290000370300200420024181016a2900003703002005200241f9006a29000037030020022002290071370398012007420020061b21072006410820061b21080240024020014101460d00200241d0006a41186a4200370300200241d0006a41106a4200370300200241d0006a41086a4200370300200242003703500c010b200241d0006a41186a2003290300370300200241d0006a41106a2004290300370300200241d0006a41086a200529030037030020022002290398013703500b200241246a2007370200200241186a4204370300200241346a200241d0006a41086a2903003702002002413c6a200241e0006a290300370200200241c4006a200241d0006a41186a29030037020020024201370310200242e012370308200242f02e3703002002200229035037022c200241023a004c200220083602202002410036027820024201370370200242f02e37039801200241f0006a20024198016a41081074200242e01237039801200241f0006a20024198016a410810742002420137039801200241f0006a20024198016a410810742002420437039801200241f0006a20024198016a410810742007422088a72201200241f0006a10762007a721030240200141286c2201450d00200820016a2106200821010340200241f0006a2001412010742002200141206a29030037039801200241f0006a20024198016a41081074200141286a22012006470d000b0b200241f0006a2002412c6a41201074200241023a009801200241f0006a20024198016a41011074200235027021072002350278210b02402003450d00200341286c450d002008102e0b200241c0016a2400200b4220862007840f0b200241fc006a410f360200200241146a410236020020024202370204200241a0a7c90036020020024104360274200241c0adc9003602702002200241f0006a3602102002200241b8016a360278200241b0a7c9001044000b820402047f027e230041f0006b22022400024002400240024020010d00200241d0006a22014200370300200241c8006a22034200370300200241386a41086a2204420037030020024200370338200241386a41a8f8c6004104108102200241d8006a41fa8bc500410a1081022001200241d8006a41086a220529000037030020032002290058370300200241286a200241386a108503200241186a2002290330420020022802281b420042e012420010e808200229032050450d012002290318210620014200370300200342003703002004420037030020024200370338200241386a41a8f8c6004104108102200241d8006a41e38bc500410b1081022001200529000037030020032002290058370300200241086a200241386a10850320062002290310420020022802081b7c22072006540d024108102c2201450d032002420837023c2002200136023820022007370358200241386a200241d8006a410810742002350240210620023502382107200241f0006a240020072006422086840f0b200241e4006a410f360200200241cc006a41023602002002420237023c200241a0a7c9003602382002410436025c200241d8adc9003602582002200241d8006a3602482002200241e8006a360260200241386a41b0a7c9001044000b41e8b2c40041fa0041e4b3c400105d000b41e8b2c40041fa0041f4b3c400105d000b1036000be10c04047f017e037f027e23004190026b22022400024002400240024020010d00200241e8016a41186a22034200370300200241e8016a41106a22014200370300200241e8016a41086a22044200370300200242003703e801200241c8006a41a8f8c60041041081022004200241c8006a41086a2205290000370300200220022900483703e801200241c8006a41fa8bc500410a1081022003200529000037030020012002290048370300200241386a200241e8016a1085032002290340210620022802382107200241c8006a41186a22084200370300200241c8006a41106a220942003703002005420037030020024200370348200241c8006a41a8f8c6004104108102200241e8016a41fa8bc500410a10810220082004290000370300200920022900e801370300200241286a200241c8006a108503200241186a2002290330420020022802281b420042e012420010e808200229032050450d012002290318210a200342003703002001420037030020044200370300200242003703e801200241c8006a41a8f8c600410410810220042005290000370300200220022900483703e801200241c8006a41e38bc500410b108102200141086a200529000037000020012002290048370000200241086a200241e8016a108503200a2002290310420020022802081b7c220b200a540d02200241e8016a41186a22054200370300200241e8016a41106a22034200370300200241e8016a41086a22044200370300200242003703e801200241c8006a41a8f8c60041041081022004200241c8006a41086a2208290000370300200220022900483703e801200241c8006a41a58bc500410b108102200141086a200829000037000020012002290048370000200241c8006a200241e8016a10a20420022802482109200229024c210a200542003703002003420037030020044200370300200242003703e801200241c8006a41a8f8c600410410810220042008290000370300200220022900483703e801200241c8006a41c28cc500410a1081022005200829000037030020032002290048370300200241c8006a200241e8016a10a30420022d004821082005200241e1006a2900003703002003200241d9006a2900003703002004200241d1006a290000370300200220022900493703e8010240024020084101460d00200241a8016a41186a4200370300200241a8016a41106a4200370300200241a8016a41086a4200370300200242003703a8010c010b200241a8016a41186a2005290300370300200241a8016a41106a2003290300370300200241a8016a41086a2004290300370300200220022903e8013703a8010b200241e8016a41186a4200370300200241e8016a41106a4200370300200241e8016a41086a22044200370300200242003703e801200241c8006a41a8f8c60041041081022004200241c8006a41086a2205290000370300200220022900483703e801200241c8006a418c8bc500410b108102200141086a200529000037000020012002290048370000200241c8006a200241e8016a10b005200241d8016a41086a22012005290300370300200220022903483703d801200220022800593602d0012002200241dc006a2800003600d30120022d005822054103460d0320042001290300370300200241fc006a200a420020091b220a3702002002418c016a200241a8016a41086a29030037020020024194016a200241a8016a41106a2903003702002002419c016a200241a8016a41186a290300370200200220022903d8013703e801200220022802d0013602c801200220022800d3013600cb0120022009410820091b2203360278200242e0123703582002200b37035020022006420020071b370348200220022903a80137028401200241e8006a2004290300370300200220022903e801370360200241c8006a41286a20053a0000200241f4006a20022800cb01360000200241f1006a20022802c801360000200241c8006a10cf0421060240200aa72201450d00200141286c450d002003102e0b20024190026a240020060f0b200241f4016a410f360200200241dc006a41023602002002420237024c200241a0a7c900360248200241043602ec01200241f4adc9003602e8012002200241e8016a360258200220024188026a3602f001200241c8006a41b0a7c9001044000b41e8b2c40041fa0041e4b3c400105d000b41e8b2c40041fa0041f4b3c400105d000b41a8b6c40041c8004180b7c400105d000bde0d05047f027e027f017e047f23004190026b220224000240024002400240024020010d0020024180026a22034200370300200241f8016a22014200370300200241e8016a41086a22044200370300200242003703e801200241306a41a8f8c60041041081022004200241306a41086a2205290000370300200220022900303703e801200241306a41fa8bc500410a1081022003200529000037030020012002290030370300200241206a200241e8016a1085032002290328420020022802201b220642017c22072006540d01200241106a2007420042e012420010e808200229031850450d022002290310210620024180026a22054200370300200241f8016a22084200370300200241e8016a41086a22034200370300200242003703e801200241306a41a8f8c60041041081022003200241306a41086a2204290000370300200220022900303703e801200241306a41e38bc500410b108102200141086a22092004290000370000200120022900303700002002200241e8016a10850320062002290308420020022802001b7c220a2006540d03200542003703002008420037030020034200370300200242003703e801200241306a41a8f8c600410410810220032004290000370300200220022900303703e801200241306a41ba8bc500410f1081022009200429000037000020012002290030370000200241306a200241e8016a10a2042002280230210920022902342106200542003703002008420037030020034200370300200242003703e801200241306a41a8f8c600410410810220032004290000370300200220022900303703e801200241306a41978bc500410e1081022005200429000037030020082002290030370300200241306a200241e8016a10a30420022d003021042005200241c9006a2900003703002008200241c1006a2900003703002003200241396a290000370300200220022900313703e8010240024020044101460d00200241a8016a4200370300200241a0016a420037030020024198016a420037030020024200370390010c010b20024190016a41186a200241e8016a41186a29030037030020024190016a41106a200241e8016a41106a29030037030020024190016a41086a200241e8016a41086a290300370300200220022903e801370390010b20024180026a22084200370300200241f8016a220b4200370300200241e8016a41086a22044200370300200242003703e801200241306a41a8f8c60041041081022004200241306a41086a2203290000370300200220022900303703e801200241306a41d48bc500410f108102200141086a220c200329000037000020012002290030370000200241306a200241e8016a10b005200241c0016a41086a220d2003290300370300200220022903303703c001200220022800413602b8012002200241c4006a220e2800003600bb010240024020022d004022054103470d0020084200370300200b420037030020044200370300200242003703e801200241306a41a8f8c600410410810220042003290000370300200220022900303703e801200241306a418c8bc500410b108102200c200329000037000020012002290030370000200241306a200241e8016a10b005200241d8016a41086a2003290300370300200220022903303703d801200220022800413602d0012002200e2800003600d30120022d004022054103460d06200241e8016a41086a200241d8016a41086a290300370300200220022903d8013703e801200220022802d0013602b001200220022800d3013600b3010c010b2004200d290300370300200220022903c0013703e801200220022802b8013602b001200220022800bb013600b3010b200241e4006a2006420020091b2206370200200241f4006a20024190016a41086a290300370200200241fc006a200241a0016a29030037020020024184016a200241a8016a290300370200200241d0006a200241e8016a41086a29030037030020022009410820091b2203360260200242e0123703402002200a37033820022007370330200220022903900137026c200220022903e801370348200241306a41286a20053a0000200241d9006a20022802b001360000200241dc006a20022800b301360000200241306a10cf04210702402006a72201450d00200141286c450d002003102e0b20024190026a240020070f0b200241f4016a410f360200200241c4006a410236020020024202370234200241a0a7c900360230200241043602ec012002418caec9003602e8012002200241e8016a360240200220024188026a3602f001200241306a41b0a7c9001044000b41a8b5c40041ef004198b6c400105d000b41e8b2c40041fa0041e4b3c400105d000b41e8b2c40041fa0041f4b3c400105d000b41a8b6c40041c80041f0b6c400105d000b902508047f017e037f017e027f027e0f7f037e230041d0056b22022400024020014108490d00200241003a008004200041d4e2cc0020011b41086a2103200141786a2104410021010340200241003a008801024020042001470d00200141ff0171450d02200241003a0080040c020b200241e0036a20016a200320016a2d00003a00002002200141016a22003a0080042000210120004120470d000b20024188016a41186a2201200241e0036a41186a29030037030020024188016a41106a2203200241e0036a41106a29030037030020024188016a41086a2205200241e0036a41086a290300370300200220022903e00337038801200041ff01714120490d00200241286a41086a2005290300370300200241286a41106a2003290300370300200241286a41186a2001290300370300200220022903880122063703482002200637032820042000470d00200241e0036a41186a2205200241286a41186a22072903002206370300200241e0036a41106a2208200241286a41106a2209290300220a3703004108210b200241e0036a41086a2204200241286a41086a220c290300220d37030020022002290328220e3703e003200241086a41186a2006370300200241086a41106a200a370300200241086a41086a200d3703002002200e370308200241e8006a41186a2006370300200241e8006a41106a200a370300200241e8006a41086a200d3703002002200e3703682007420037030020094200370300200c420037030020024200370328200241e0036a41a081ca004107108102200c2004290000370300200220022900e003370328200241e0036a41e4d1c100410c10810220072004290000370300200920022900e0033703002002200241286a4120108e022002280204210f200228020021102007420037030020094200370300200c420037030020024200370328200241e0036a41a081ca004107108102200c2004290000370300200220022900e003370328200241e0036a41f09dc500410a10810220072004290000370300200920022900e003370300200241e0036a200241286a10880320022802e0032201410120011b211120022902e403420020011b2206a72112024002400240024002400240024002402006422088a72201450d002011200141057422136a2114200241bc056a2115200241e0036a41206a2100201121010340200241b8036a41186a2203200141186a2216290000370300200241b8036a41106a2217200141106a2218290000370300200241b8036a41086a2219200141086a221a290000370300200220012900003703b803200241c8006a41086a221b201a290000370300200241c8006a41106a221a2018290000370300200241c8006a41186a2218201629000037030020022001290000370348200520032903003703002008201729030037030020042019290300370300200220022903b8033703e00320024198056a200241e0036a10bf01200720182903003703002009201a290300370300200c201b290300370300200220022903483703280240024020022802b80522030d00410021030c010b2000200229039805370300200041186a20024198056a41186a290300370300200041106a20024198056a41106a290300370300200041086a20024198056a41086a29030037030020052007290300370300200820092903003703002004200c29030037030020024188056a41086a201541086a280200360200200220022903283703e003200220152902003703880520024188016a41386a200241e0036a41386a29030037030020024188016a41306a200241e0036a41306a29030037030020024188016a41286a200241e0036a41286a29030037030020024188016a41206a200029030037030020024188016a41186a200529030037030020024188016a41106a200829030037030020024188016a41086a2004290300370300200220022903e003370388010b20030d02200141206a2101201341606a22130d000b0b0240201241ffffff3f71450d002011102e0b41002118410021190c010b20024188026a41386a220020024188016a41386a29030037030020024188026a41306a220420024188016a41306a29030037030020024188026a41286a220520024188016a41286a29030037030020024188026a41206a220820024188016a41206a29030037030020024188026a41186a220720024188016a41186a29030037030020024188026a41106a220920024188016a41106a29030037030020024188026a41086a220c20024188016a41086a290300370300200241e8046a41086a221620024188056a41086a28020036020020022002290388013703880220022002290388053703e804200241e0026a41086a2217200c290300370300200241e0026a41106a220c2009290300370300200241e0026a41186a22092007290300370300200241e0026a41206a22072008290300370300200241e0026a41286a22082005290300370300200241e0026a41306a22052004290300370300200241e0026a41386a22042000290300370300200241f8046a41086a2200201628020036020020022002290388023703e002200220022903e8043703f80441d000102c220b450d05200b20022903e002370300200b2003360240200b20022903f804370244200b41386a2004290300370300200b41306a2005290300370300200b41286a2008290300370300200b41206a2007290300370300200b41186a2009290300370300200b41106a200c290300370300200b41086a2017290300370300200b41cc006a20002802003602000240024020134120470d0041012119410121180c010b200141206a2109201441606a211a200241bc056a2117200241e0036a41206a210041012119410121180340200921010340200241b8036a41186a2204200141186a2203290000370300200241b8036a41106a2208200141106a2205290000370300200241b8036a41086a2207200141086a2209290000370300200220012900003703b803200241c8006a41186a220c2003290000370300200241c8006a41106a22132005290000370300200241c8006a41086a2216200929000037030020022001290000370348200241e0036a41186a22032004290300370300200241e0036a41106a22052008290300370300200241e0036a41086a22082007290300370300200220022903b8033703e00320024198056a200241e0036a10bf01200241286a41186a2207200c290300370300200241286a41106a22092013290300370300200241286a41086a220c2016290300370300200220022903483703280240024020022802b80522040d00410021040c010b2000200229039805370300200041186a20024198056a41186a290300370300200041106a20024198056a41106a290300370300200041086a20024198056a41086a29030037030020032007290300370300200520092903003703002008200c29030037030020024188056a41086a201741086a280200360200200220022903283703e003200220172902003703880520024188016a41386a200241e0036a41386a29030037030020024188016a41306a200241e0036a41306a29030037030020024188016a41286a200241e0036a41286a29030037030020024188016a41206a200029030037030020024188016a41186a200329030037030020024188016a41106a200529030037030020024188016a41086a2008290300370300200220022903e003370388010b024020040d002014200141206a2201470d010c030b0b20024188026a41386a220720024188016a41386a29030037030020024188026a41306a220920024188016a41306a29030037030020024188026a41286a220c20024188016a41286a29030037030020024188026a41206a221320024188016a41206a29030037030020024188026a41186a221620024188016a41186a29030037030020024188026a41106a221b20024188016a41106a29030037030020024188026a41086a221520024188016a41086a290300370300200241e8046a41086a221c20024188056a41086a28020036020020022002290388013703880220022002290388053703e804200241e0026a41086a221d2015290300370300200241e0026a41106a2215201b290300370300200241e0026a41186a221b2016290300370300200241e0026a41206a22162013290300370300200241e0026a41286a2213200c290300370300200241e0026a41306a220c2009290300370300200241e0026a41386a22092007290300370300200241f8046a41086a2207201c28020036020020022002290388023703e002200220022903e8043703f8042008201d290300370300200520152903003703002003201b29030037030020002016290300370300200241e0036a41286a22162013290300370300200241e0036a41306a2213200c290300370300200241e0036a41386a220c2009290300370300200220022903e0023703e00320024198056a41086a221b2007280200360200200220022903f80437039805024020182019470d00201941016a22072019490d07201941017422092007200920074b1b22074104200741044b1bad42d0007e2206422088a74541037421072006a721090240024020190d0020024100360288010c010b20024108360290012002200b360288012002201941d0006c36028c010b20024188026a2009200720024188016a107d20022802900221072002280288024101460d04200228028c02210b200741d0006e21190b200141206a2109200b201841d0006c6a220720022903e003370300200529030021062003290300210a2000290300210d2016290300210e2013290300211e200c290300211f2008290300212020072004360240200741086a2020370300200741386a201f370300200741306a201e370300200741286a200e370300200741206a200d370300200741186a200a370300200741106a20063703002007200229039805370244200741cc006a201b280200360200201841016a2118201a2001470d000b0b201241ffffff3f71450d002011102e0b200220183602a0052002201936029c052002200b36029805200241e0036a20024198056a10a30341002101024020022802e0034101460d00200241b8036a41206a20024188046a280200360200200241b8036a41186a200241e0036a41206a290300370300200241b8036a41106a200241e0036a41186a290300370300200241b8036a41086a200241e0036a41106a2903003703002002200241e0036a41086a2903003703b8032002418c046a2802002101200241e0026a20024190046a41d80010e9081a0b20024198056a41086a2200200241b8036a41086a29030037030020024198056a41106a2204200241b8036a41106a29030037030020024198056a41186a2203200241b8036a41186a29030037030020024198056a41206a2205200241b8036a41206a280200360200200220022903b80337039805200241e0036a200241e0026a41d80010e9081a02402001450d0020024188016a41206a200528020036020020024188016a41186a200329030037030020024188016a41106a200429030037030020024188016a41086a200029030037030020022002290398053703880120024188026a200241e0036a41d80010e9081a200241ac016a2001360200200241b0016a20024188026a41d80010e9081a200241e0036a41186a200241e8006a41186a290300370300200241e0036a41106a200241e8006a41106a290300370300200241e0036a41086a200241e8006a41086a290300370300200220022903683703e003200241e0026a20024188016a41e2c289ab06200241e0036a10e40720022902e402210620022802e002210420024188016a10b80220040d020b4100210120024100360288010c020b2007450d020c030b200241e8036a2006370300200220183602f003200220043602e4032002200f410020101b3602e00320024188016a200241e0036a1097022006a7210302402006422088a72201450d002001410c6c21002004210103400240200141046a280200450d002001280200102e0b2001410c6a2101200041746a22000d000b0b02402003450d002003410c6c450d002004102e0b024020022802880122010d00410021010c010b20024190016a2802002100200228028c0121030b4101102c2204450d01200242013702e403200220043602e0030240024020010d00200241003a008801200241e0036a20024188016a410110740c010b200241013a008801200241e0036a20024188016a410110742000200241e0036a1076200241e0036a2001200010740b20023502e803210620023502e003210a02402001450d002003450d002001102e0b200241d0056a24002006422086200a840f0b1038000b1036000b20024194016a410f360200200241f4036a4102360200200242023702e403200241a0a7c9003602e0032002410436028c012002419cadc90036028801200220024188016a3602f0032002200241c8056a36029001200241e0036a41b0a7c9001044000be115020a7f027e230041d00b6b2202240020024280808080802037020c2002200136021c2002200041d4e2cc0020011b3602182002200241186a36020820024180086a200241086a1098020240024002400240024002402002418c086a2802002203450d00200241f0076a41086a20024180086a41086a28020036020020022002290380083703f00720024190086a280200210420024194086a280200210520024188076a20024198086a41e40010e9081a20024184096a280200210620024180086a4180016a2802002107200241fc086a280200210820024188066a20024188096a41800110e9081a2002200241086a10ad01024020022802000d0020022802082201280204220020022802042209490d002009417f4c0d030240024020090d004101210a0c010b20091032220a450d06200128020421000b024020002009490d00200a2001280200200910e9081a200128020422002009490d072001200020096b3602042001200128020020096a360200200241f8056a41086a200241f0076a41086a280200360200200220022903f0073703f80520024190056a20024188076a41e40010e9081a20024190046a20024188066a41800110e9081a0c030b200a102e0b02402005450d00200541246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002003102e0b02402006450d00200641246c21002008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b2007450d00200741246c450d002008102e0b410021030b20024180046a41086a2201200241f8056a41086a280200360200200220022903f8053703800420024198036a20024190056a41e40010e9081a20024198026a20024190046a41800110e9081a2003450d0120024188026a41086a2001280200360200200220022903800437038802200241a0016a20024198036a41e40010e9081a200241206a20024198026a41800110e9081a0240024020022802082802040d0020024190056a41086a20024188026a41086a28020036020020022002290388023703900520024188066a200241a0016a41e40010e9081a20024180086a200241206a41800110e9081a0c010b02402005450d00200541246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002003102e0b02402006450d00200641246c21002008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402007450d00200741246c450d002008102e0b410021032009450d00200a102e0b2003450d01200241f0076a41086a220120024190056a41086a28020036020020022002290390053703f00720024188076a20024188066a41e40010e9081a20024190046a20024180086a41800110e9081a200241a0016a41086a2001280200360200200220022903f0073703a001200241206a20024188076a41e40010e9081a20024188066a20024190046a41800110e9081a20022009360294052002200a3602900520024180086a20024190056a10f7010240024020022802840822010d00410021010c010b20024198026a41086a20024190086a28020036020020022002290388083703980220022802800821000b02402009450d00200a102e0b200241f8056a41086a220920024198026a41086a220a28020036020020022002290398023703f805024002402001450d0020024198036a41086a220b2009280200360200200220022903f8053703980320024180086a20024198026a41e80010e9081a200241a8096a2001360200200241a4096a2000360200200241a0096a4102360200200241f8086a20024190056a41086a220129030037030020024180086a4180016a200241a0056a29030037030020024188096a200241a8056a29030037030020024190096a200241b0056a290300370300200241ac096a200229039803370200200241b4096a200b280200360200200241023602980920022002290390053703f008200242023703e808200241c4096a2003360200200241c8096a2004360200200241cc096a2005360200200241c0096a200241a0016a41086a280200360200200241b8096a20022903a001370300200241d0096a200241206a41e40010e9081a200241bc0a6a2006360200200241b80a6a2007360200200241b40a6a2008360200200241c00a6a20024188066a41800110e9081a200220024180086a3602980220024190056a20024198026a109005200a200128020036020020022002290390053703980220024198026a10e8061a024020022903e8084202510d0020022d00800841ff01714102470d00200228028808450d00200228028408102e0b20024198096a108b02410121010c010b02402005450d00200541246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b02402004450d00200441246c450d002003102e0b02402006450d00200641246c21002008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a280200102e0c030b2001410c6a280200450d02200141086a280200102e0c020b2001410c6a280200450d01200141086a280200102e0c010b200141086a280200450d00200141046a280200102e0b200141246a21012000415c6a22000d000b0b410021012007450d00200741246c450d002008102e0b4101102c2200450d02200242013702840820022000360280080240024020010d00200241003a00880620024180086a20024188066a410110740c010b200241013a00880620024180086a20024188066a410110740b200235028808210c200235028008210d200241d00b6a2400200d200c422086840f0b1038000b200241a4026a410f360200200241a4046a41023602002002420237029404200241a0a7c900360290042002410436029c02200241e4acc90036029802200220024198026a3602a0042002200241c80b6a3602a00220024190046a41b0a7c9001044000b1036000b2009200041b8b2c0001056000b901706057f017e017f037e157f017e230041c0006b22022400024002400240024002400240024002400240024020010d00200241306a22014200370300200241286a22034200370300200241186a41086a2204420037030020024200370318200241186a41b2fdc6004112108102200241086a41e9d8c80041041081022001200241086a41086a220529000037030020032002290008370300200241086a200241186a10ac0520022802082106200229020c210720014200370300200342003703002004420037030020024200370318200241186a41b2fdc6004112108102200241086a41b4d3c10041081081022001200529000037030020032002290008370300200241086a200241186a10ac052006410120061b21080240024002402007420020061b2209a7220420094220882207a722016b200229020c4200200228020822031b220a422088220ba722064f0d00200120066a22052001490d0c200441017422012005200120054b1b22014104200141044b1b220141ffffff3f712001462105200141057421010240024020040d00200241003602180c010b200241206a4101360200200220083602182002200441057436021c0b200241086a20012005200241186a107d200241106a280200210420022802084101460d01200228020c210820094220882207a721012004410576ad21090b200820014105746a2003410120031b2201200641057410e9081a2007200b7c21070240200a42ffffff3f83500d002001102e0b2007a7220c41144b0d01200c41014b0d050c080b2004450d0a0c090b200c410176220141ffffff3f712001470d092001410574220d417f4c0d09200d102c220e450d08200841606a210f200841a07f6a2110410421114100211241002113200c2114034020142115410021144101210602402015417f6a2204450d00024002400240024002400240200820044105746a2015410574221620086a41406a412010ec084100480d002015417e6a2104201020166a210141002114410021030340024020042003470d00201521060c080b200341016a2103200141206a2001412010ec082106200141606a21012006417f4a0d000b200341016a21062003417f7320156a21040c010b201020166a210102400340024020044101470d00410021040c020b2004417f6a2104200141206a2001412010ec082103200141606a210120034100480d000b0b20152004490d012015200c4b0d02201520046b22064101762205450d00200f20166a2101200820044105746a21030340200241186a41186a2216200341186a2217290000370300200241186a41106a2218200341106a2219290000370300200241186a41086a221a200341086a221b29000037030020022003290000370318200141086a221c2900002107200141106a221d290000210a200141186a221e290000210b200320012900003700002017200b3700002019200a370000201b2007370000201e2016290300370000201d2018290300370000201c201a29030037000020012002290318370000200141606a2101200341206a21032005417f6a22050d000b0b024020040d00200421140c050b0240200641094d0d00200421140c050b2015200c4b0d02201520046b21062004417f6a2101200f20044105746a2103034020152001490d082003200641016a220610eb062001417f6a220420014f0d04200341606a2103200421012006410a490d000c040b0b2004201541e4d1cc001057000b2015200c41e4d1cc00104d000b20152004417f6a2201490d042015200c41f4d1cc00104d000b200441016a21140b024020132012470d00201241016a22012012490d0b201241017422032001200320014b1b22014104200141044b1b220141ffffffff01712001464102742103200141037421010240024020120d00200241003602180c010b20024104360220200220113602182002201241037436021c0b200241086a20012003200241186a107d20022802102101024020022802084101470d0020010d0b0c0c0b200228020c2111200141037621120b201120134103746a2201200636020420012014360200201341016a221e21130240201e4102490d00024002400240034002400240024002402011201e2213417f6a221e4103746a2201280200450d00201341037420116a220541746a2802002204200128020422034d0d00201341024d0d0820112013417d6a22014103746a2802042206200320046a4d0d01201341034d0d08200541646a280200200620046a4b0d080c010b20134103490d012001280204210320112013417d6a22014103746a28020421060b20062003490d010b2013417e6a21010b02402013200141016a22154d0d00201320014d0d02201120014103746a221b280204221f201b2802006a2201201120154103746a221c280200221d490d032001200c4b0d04201b41046a21202008201d4105746a2219201c280204221a41057422036a210420014105742106024002402001201d6b2216201a6b2201201a490d00200e2019200310e908221820036a210502400240201a4101480d002016201a4a0d010b20192101201821030c020b200820066a21172018210320192101034020012004200320042003412010ec0841004822161b2206290000370000200141186a200641186a290000370000200141106a200641106a290000370000200141086a200641086a2900003700002003200341206a20161b2103200141206a2101200441206a200420161b220420174f0d02200520034b0d000c020b0b200e20042001410574220310e908221820036a210502400240201a4101480d00200141014e0d010b20042101201821030c010b200f20066a2106200421010340200141606a2103200541606a210420062003200420042003412010ec0841004822171b2216290000370000200641186a201641186a290000370000200641106a201641106a290000370000200641086a201641086a2900003700002005200420171b2105024020192003200120171b2201490d00201821030c020b200641606a21062018210320182005490d000b0b20012003200520036b41607110e9081a2020201f201a6a360200201b201d360200201c201c41086a20132015417f736a41037410ea081a41012113201e41014d0d050c010b0b201520134184d2cc00103c000b200120134194d2cc00103c000b201d200141a4d2cc001057000b2001200c41a4d2cc00104d000b2014450d030c000b0b200241146a410f3602002002412c6a41023602002002420237021c200241a0a7c9003602182002410436020c200241a0aec9003602082002200241086a3602282002200241386a360210200241186a41b0a7c9001044000b2001201541f4d1cc001057000b0240201241ffffffff0171450d002011102e0b200d450d01200e102e0c010b2008200c417e6a22014105746a21034102210603402001200c4b0d022003200610eb06200341606a2103200641016a21062001417f6a2201417f470d000b0b200c4102490d01200841206a21014101210641012103034002402001200341057420086a220441606a412010ec08450d00024020062003460d002001290000210720012004290000370000200141186a2205290000210a2005200441186a2216290000370000200141106a2205290000210b2005200441106a2217290000370000200141086a220529000021212005200441086a2218290000370000201820213700002017200b3700002016200a370000200420073700000b200341016a21030b200141206a2101200c200641016a2206470d000b2003200c4d0d0241c4f1c000412341e8f1c0001039000b2001200c41c4d1cc001056000b200c21030b20034105744104722201417f4c0d012001102c2206450d00200241003602202002200136021c200220063602182003200241186a107602402003450d0020034105742103200821010340200241186a200141201074200141206a2101200341606a22030d000b0b200235022021072002350218210a0240200942ffffff3f83500d002008102e0b200241c0006a24002007422086200a840f0b1036000b1038000b890e04027f017e027f017e230041a0036b2202240020024280808080802037020c200220013602ec022002200041d4e2cc0020011b22003602e8022002200241e8026a360208024002400240024002402001450d0020022001417f6a22013602ec022002200041016a3602e802024002400240024020002d00000e020100040b2002200241086a10ad0120022802000d0320022802ec02220320022802042200490d032000417f4c0d060240024020000d00410121010c010b200010322201450d0820022802ec0221030b20032000490d02200120022802e802200010e9081a20022802ec0222032000490d042002200320006b22033602ec02200220022802e80220006a3602e80220030d012000ad220442208620048421040c050b20010d02410021010c040b2000450d010b2001102e0b200241f4026a410f3602002002411c6a41023602002002420237020c200241a0a7c900360208200241043602ec02200241b4aec9003602e8022002200241e8026a360218200220024198036a3602f002200241086a41b0a7c9001044000b2000200341b8b2c0001056000b410021030240024020010d00410021050c010b2004422088a72200417f4c0d010240024020000d00410121050c010b2000102c2205450d030b20052001200010e9081a0b200241106a220620003602002002200036020c20022005360208200241c8016a41e7e485f306200241086a10ed070240024020010d000c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102c2203450d030b20032001200010e9081a0b200620003602002002200036020c20022003360208200241e8016a41e2c289ab06200241086a10ee07410021030240024020010d00410021050c010b2004422088a72200417f4c0d010240024020000d00410121050c010b2000102c2205450d030b20052001200010e9081a0b200241106a220620003602002002200036020c2002200536020820024188026a41e9dabdf306200241086a10ee070240024020010d000c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102c2203450d030b20032001200010e9081a0b200620003602002002200036020c20022003360208200241a8026a41f0c2c98b06200241086a10ee07410021050240024020010d00410021030c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102c2203450d030b20032001200010e9081a0b200241086a41086a220620003602002002200036020c20022003360208200241c8026a41e1e69df306200241086a10ee070240024020010d00410021030c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102c2203450d030b20032001200010e9081a200121050b20024188036a41086a20003602002002200036028c032002200336028803200241e8026a41e1ea91cb0620024188036a10ee072006200241c8016a41086a290300370300200241086a41106a200241c8016a41106a290300370300200241086a41186a200241c8016a41186a290300370300200241306a200241e8016a41086a290300370300200241386a200241e8016a41106a290300370300200241c0006a200241e8016a41186a290300370300200241d0006a20024188026a41086a290300370300200241d8006a20024188026a41106a290300370300200241e0006a20024188026a41186a290300370300200220022903c801370308200220022903e801370328200220022903880237034820024180016a200241a8026a41186a290300370300200241f8006a200241a8026a41106a290300370300200241f0006a200241a8026a41086a29030037030020024190016a200241c8026a41086a29030037030020024198016a200241c8026a41106a290300370300200241a0016a200241c8026a41186a290300370300200241b0016a200241e8026a41086a290300370300200241b8016a200241e8026a41106a290300370300200241c0016a200241e8026a41186a290300370300200220022903a802370368200220022903c80237038801200220022903e8023703a8012002420137038803200241003602900320024188036a200241086a4120107420024188036a200241086a41206a4120107420024188036a200241c8006a4120107420024188036a200241e8006a4120107420024188036a20024188016a4120107420024188036a200241a8016a4120107402402001450d002004a7450d002005102e0b200228029003220041046a2201417f4c0d0020022802880321030240024020010d00410121050c010b2001102c2205450d020b200241003602102002200136020c200220053602082000200241086a1076200241086a20032000107420023502102104200235020821070240200228028c03450d002003102e0b200241a0036a240020044220862007840f0b1038000b1036000bff0101067f230041c0006b2203240020032001360204200341086a200210dc08200341206a41186a2204200341046a200341086a41106a200341086a41086a2205200328020822064101461b2903001002220141186a290000370300200341206a41106a2207200141106a290000370300200341206a41086a2208200141086a290000370300200320012900003703202001102e200041186a2004290300370000200041106a2007290300370000200041086a20082903003700002000200329032037000002402006450d002005280200450d00200328020c102e0b024020022802002200450d00200241046a280200450d002000102e0b200341c0006a24000bff0101067f230041c0006b2203240020032001360204200341086a200210dc08200341206a41186a2204200341046a200341086a41106a200341086a41086a2205200328020822064101461b2903001007220141186a290000370300200341206a41106a2207200141106a290000370300200341206a41086a2208200141086a290000370300200320012900003703202001102e200041186a2004290300370000200041106a2007290300370000200041086a20082903003700002000200329032037000002402006450d002005280200450d00200328020c102e0b024020022802002200450d00200241046a280200450d002000102e0b200341c0006a24000bef1103037f017e017f230041c0036b220224002002428080808080203702cc012002200136020c2002200041d4e2cc0020011b3602082002200241086a3602c8012002200241c8016a10ad010240024002400240024020022802000d00200228020c220020022802042201490d002001417f4c0d040240024020010d00410121030c010b200110322203450d04200228020c21000b024020002001490d0020032002280208200110e9082104200228020c22002001490d032002200020016b36020c2002200228020820016a3602082004450d012001ad22054220862005842105200228020c450d022005a7450d010b2003102e0b200241146a410f360200200241dc016a4102360200200242023702cc01200241a0a7c9003602c8012002410436020c200241d4aec9003602082002200241086a3602d8012002200241b8036a360210200241c8016a41b0a7c9001044000b200220054220883e0294032002200436029003200241c8016a20024190036a109903024002400240024002400240024002400240024020022d00c8014101470d00410021010c010b200241086a200241c8016a41017241c00110e9081a200241c8016a200241086a41c00110e9081a4120102c2200450d0a200020022903c801370000200041186a200241c8016a41186a290300370000200041106a200241c8016a41106a290300370000200041086a200241c8016a41086a290300370000200241003602a80320024198036a41c0004104200241a8036a107d20024198036a41086a28020021062002280298034101460d01200228029c03220141e7e485f30636020c200142a08080808004370204200120003602004120102c2203450d0a200320022903e801370000200341186a20024180026a290300370000200341106a200241f8016a290300370000200341086a200241f0016a2903003700000240200641047622004101470d0020024290808080c0003702ac03200220013602a80320024198036a41c0004104200241a8036a107d20024198036a41086a28020021002002280298034101460d03200228029c032101200041047621000b200120033602102001411c6a41e2c289ab06360200200141146a42a080808080043702004120102c2203450d0a2003200229038802370000200341186a200241a0026a290300370000200341106a20024198026a290300370000200341086a20024190026a290300370000024020004102470d00200242a0808080c0003702ac03200220013602a80320024198036a41c0004104200241a8036a107d20024198036a41086a28020021002002280298034101460d04200228029c032101200041047621000b200120033602202001412c6a41e9dabdf306360200200141246a42a080808080043702004120102c2203450d0a200320022903a802370000200341186a200241c0026a290300370000200341106a200241b8026a290300370000200341086a200241b0026a290300370000024020004103470d00200242b0808080c0003702ac03200220013602a80320024198036a41e0004104200241a8036a107d20024198036a41086a28020021002002280298034101460d05200228029c032101200041047621000b200120033602302001413c6a41f0c2c98b06360200200141346a42a080808080043702004120102c2203450d0a200320022903c802370000200341186a200241e0026a290300370000200341106a200241d8026a290300370000200341086a200241d0026a290300370000024020004104470d00200242c0808080c0003702ac03200220013602a80320024198036a4180014104200241a8036a107d20024198036a41086a28020021002002280298034101460d06200228029c032101200041047621000b20012003360240200141cc006a41e1e69df306360200200141c4006a42a080808080043702004120102c2203450d0a200320022903e802370000200341186a20024180036a290300370000200341106a200241f8026a290300370000200341086a200241f0026a290300370000024020004105470d00200242d0808080c0003702ac03200220013602a80320024198036a41a0014104200241a8036a107d20024198036a41086a28020021002002280298034101460d07200228029c032101200041047621000b20012003360250200141dc006a41e1ea91cb06360200200141d4006a42a080808080043702000b02402005a7450d002004102e0b41e500410120011b2204102c2203450d09200241003602d001200220043602cc01200220033602c80120010d06200241003a0008200241c8016a200241086a4101107420022802c801210420022802d00121030c070b20060d080c090b2000450d080c070b2000450d070c060b2000450d060c050b2000450d050c040b2000450d040c030b200241013a0008200241c8016a200241086a410110744106200241c8016a10762001280200210420012802082203200241c8016a1076200241c8016a200420031074200241c8016a2001410c6a410410742001280210210420012802182203200241c8016a1076200241c8016a200420031074200241c8016a2001411c6a410410742001280220210420012802282203200241c8016a1076200241c8016a200420031074200241c8016a2001412c6a410410742001280230210420012802382203200241c8016a1076200241c8016a200420031074200241c8016a2001413c6a410410742001280240210420012802482203200241c8016a1076200241c8016a200420031074200241c8016a200141cc006a410410742001280250210420012802582203200241c8016a1076200241c8016a200420031074200241c8016a200141dc006a4104107420022802d001210320022802c80121040240200141046a280200450d002001280200102e0b0240200141146a280200450d002001280210102e0b0240200141246a280200450d002001280220102e0b0240200141346a280200450d002001280230102e0b0240200141c4006a280200450d002001280240102e0b0240200141d4006a280200450d002001280250102e0b200041ffffffff0071450d002001102e0b200241c0036a24002003ad4220862004ad840f0b2001200041b8b2c0001056000b1036000b1038000b9a0c02067f047e23004190026b22022400200241003a00800102402001450d002002200041d4e2cc0020011b22002d00003a0060200241013a008001024020014101460d00200220002d00013a0061200241023a00800120014102460d00200220002d00023a0062200241033a00800120014103460d00200220002d00033a0063200241043a00800120014104460d00200220002d00043a0064200241053a00800120014105460d00200220002d00053a0065200241063a00800120014106460d00200220002d00063a0066200241073a00800120014107460d00200220002d00073a0067200241083a00800120014108460d00200220002d00083a0068200241093a00800120014109460d00200220002d00093a00692002410a3a0080012001410a460d00200220002d000a3a006a2002410b3a0080012001410b460d00200220002d000b3a006b2002410c3a0080012001410c460d00200220002d000c3a006c2002410d3a0080012001410d460d00200220002d000d3a006d2002410e3a0080012001410e460d00200220002d000e3a006e2002410f3a0080012001410f460d00200220002d000f3a006f200241103a00800120014110460d00200220002d00103a0070200241113a00800120014111460d00200220002d00113a0071200241123a00800120014112460d00200220002d00123a0072200241133a00800120014113460d00200220002d00133a0073200241143a00800120014114460d00200220002d00143a0074200241153a00800120014115460d00200220002d00153a0075200241163a00800120014116460d00200220002d00163a0076200241173a00800120014117460d00200220002d00173a0077200241183a00800120014118460d00200220002d00183a0078200241193a00800120014119460d00200220002d00193a00792002411a3a0080012001411a460d00200220002d001a3a007a2002411b3a0080012001411b460d00200220002d001b3a007b2002411c3a0080012001411c460d00200220002d001c3a007c2002411d3a0080012001411d460d00200220002d001d3a007d2002411e3a0080012001411e460d00200220002d001e3a007e2002411f3a0080012001411f460d00200241106a2203200241e0006a41106a2204290300370300200241086a2205200241e0006a41086a2206290300370300200220002d001f3a007f200241186a2200200241e0006a41186a2207290300370300200241203a0080012002200229036022083703202002200837030020014120470d01200241206a41186a20002903002208370300200241206a41106a20032903002209370300200241206a41086a2005290300220a37030020022002290300220b37032020072008370300200420093703002006200a3703002002200b370360200241b8016a41d9fcc6004106108102200241c8016a41dcf1cb004107108102024002404120102c2201450d00200242203702ec01200220013602e801200241e8016a200241e0006a41201074200241f8016a20022802e801220120022802f001220010d8032002410c6a200120006a36020020022001360208200220024188026a3602042002200241f8016a360200200241d8016a2002107c024020022802ec01450d002001102e0b20022802e001220041206a2201417f4c0d010240024020010d00410121030c010b2001102c2203450d010b2002410036020820022001360204200220033602002002200241b8016a411010742002200241c8016a41101074200220022802d801220120001074024020022802dc01450d002001102e0b200241e0006a20022802002200200228020810c902200241a8016a28020021012002290360210802402002280204450d002000102e0b4104102c2200450d00200242043702642002200036026020022001410020084201511b360220200241e0006a200241206a41041074200235026821082002350260210920024190026a240020092008422086840f0b1036000b1038000b200241003a0080010b2002412c6a410f360200200241f4006a410236020020024202370264200241a0a7c90036026020024104360224200241f0aec9003602202002200241206a360270200220024188026a360228200241e0006a41b0a7c9001044000bd10504017f027e017f037e23004180086b22022400200241d0036a200041d4e2cc0020011b200110a602024020022903b8044203510d00200241d0036a41c8036a2802002101200241086a200241d0036a41c80310e9081a200241d0036a200241086a41c80310e9081a200241a0076a200241e8046a220010970442002103200241b0076a200120022903a00722044200420020022d00a90741004720022d00a807220510e70442002106024020022903b0074201520d00427f427f200241c0076a2903002206200241d0076a2903007c20022903b8072203200241c8076a2903007c22072003542201ad7c22032001200320065420032006511b22011b2206200241e0076a2903007c427f200720011b2203200241d8076a2903007c22072003542201ad7c22032001200320065420032006511b22011b2106427f200720011b21030b200241f0076a290300210720022903e8072108024020022903b8044202510d0020022d00d00341ff01714102470d0020022802d803450d0020022802d403102e0b2000108b022002410036021020024201370308200220043703d003200241086a200241d0036a41081074024002400240024020050e03000102030b200241003a00d003200241086a200241d0036a410110740c020b200241013a00d003200241086a200241d0036a410110740c010b200241023a00d003200241086a200241d0036a410110740b2002427f200620077c200320087c22042003542201ad7c22032001200320065420032006511b22011b3703d8032002427f200420011b3703d003200241086a200241d0036a41101074200235021021062002350208210320024180086a240020032006422086840f0b200241bc076a410f3602002002411c6a41023602002002420237020c200241a0a7c900360208200241043602b40720024188afc9003602b0072002200241b0076a3602182002200241f8076a3602b807200241086a41b0a7c9001044000bd60402017f027e23004180086b2202240020024198046a200041d4e2cc0020011b200110a60202402002290380054203510d0020024198046a41c8036a2802002101200241d0006a20024198046a41c80310e9081a20024198046a200241d0006a41c80310e9081a200241e8076a200241b0056a2200109704200241086a200120022903e8074200420020022d00f10741004720022d00f00710e70402402002290380054202510d0020022d00980441ff01714102470d0020022802a004450d00200228029c04102e0b2000108b0220024100360258200242013703500240024020022903084201510d00200241003a009804200241d0006a20024198046a410110740c010b200241013a009804200241d0006a20024198046a41011074200229031021032002200241086a41106a2903003703a0042002200337039804200241d0006a20024198046a41101074200241206a29030021032002200241286a2903003703a0042002200337039804200241d0006a20024198046a41101074200241306a29030021032002200241386a2903003703a0042002200337039804200241d0006a20024198046a411010740b200229034021032002200241c8006a2903003703a0042002200337039804200241d0006a20024198046a41101074200235025821032002350250210420024180086a240020042003422086840f0b200241146a410f360200200241e4006a410236020020024202370254200241a0a7c9003602502002410436020c2002419cafc9003602082002200241086a3602602002200241f8076a360210200241d0006a41b0a7c9001044000bd60201047f230041c0006b2202240041d0b0c9002103411321044109210502400240024002400240024002400240024002400240200141ff01710e0b000102030405060708090a000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a418caacc001044000b41e0c3cb00210341092104410021050c080b41a186ca00210341112104410121050c070b41c986ca002103410f2104410221050c060b41c6b0c9002103410a2104410321050c050b41b9b0c9002103410d2104410421050c040b41a7b0c900210341122104410521050c030b41ab85ca00210341082104410621050c020b41e086ca00210341102104410721050c010b4194b0c9002103410821050b200041831e3b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bf50101047f230041306b22022400200241c8afc9004113108102200241106a41f1afc900410a108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b22022400200241c8afc9004113108102200241106a41fbafc9004106108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b22022400200241c8afc9004113108102200241106a41fbafc9004106108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000ba70401037f230041900c6b22042400200441106a200110fb07200441086a20042802102205200428021841d4e2cc004100410010ca0402400240024002402004280208450d000240200428020c220620024d0d00200441a8076a410a10f307200041013602002000410c6a200441b0076a280200360200200020042903a8073702040c020b200441d8096a200110fb07200441a8076a20042802d809220220042802e00910af0520042802a8072101200441e4096a200441a8076a41047241ac0210e9081a024002402001411c460d00200441fc046a200441e4096a41ac0210e9081a024020042802dc09450d002002102e0b200441d0026a200441fc046a41ac0210e9081a20042001360220200441206a410472200441d0026a41ac0210e9081a200441a8076a200441206a10970420042903a8072003580d01200441a8076a410910f307200041013602002000410c6a200441b0076a280200360200200020042903a807370204200441206a108b020c030b024020042802dc09450d002002102e0b200441a8076a410310f307200041013602002000410c6a200441b0076a280200360200200020042903a8073702040c020b200041086a200441206a41b00210e9081a20004100360200200041b8026a20063602002004280214450d030c020b200441a8076a410310f307200041013602002000410c6a200441b0076a280200360200200020042903a8073702040b2004280214450d010b2005102e0b200441900c6a24000bb40b06017f017e047f017e017f017e23004190066b22052400200541bd036a200341086a290000370000200541c5036a200341106a290000370000200541cd036a200341186a290000370000200541023a00b4032005410a3a00b003200520032900003700b503200541b0036a10fe01200541b0036a200410970420052903b00321062002280204210702404110102c2208450d00200841f8f7c60036020c2008410136020820084281808080103702004110102c2209450d0020094190f8c60036020c20094101360208200942818080801037020020082008280200417f6a220a3602000240200a0d002008280208200828020c2802001103000240200828020c280204450d002008280208102e0b200841046a220a200a280200417f6a220a360200200a0d002008102e0b200541d8006a200441b00210e9081a200541a0036a41026a2208200541256a41026a2d00003a000020054188036a41086a22042005410c6a41086a29010037030020054188036a41106a220a2005410c6a41106a290100370300200520052f00253b01a0032005200529010c37038803024002402009280208200541d8006a200928020c28020c1101000d00200541c8006a41023a0000200541c0006a41003a000020092009280200417f6a22083602004200210b2005420037033020054201370328024020080d002009280208200928020c2802001103000240200928020c280204450d002009280208102e0b200941046a22082008280200417f6a220836020020080d002009102e0b200541d8006a10dc0241012109410221080c010b200541b0036a200541d8006a41b00210e9081a200541ec056a2001360200200541e0056a41086a2007360200200541e0056a41106a200529038803370300200541f8056a2004290300370300200541e0056a41206a200a290300370300200541003a00e405200541013a00e005200520052f01a0033b00e505200520082d00003a00e7052005200936028806200541286a200541b0036a200541e0056a10dd0220052903284201512109200541286a41206a2d000021082005290330210b0b200541b0036a41186a200341186a290000370300200541b0036a41106a200341106a290000370300200541b0036a41086a200341086a290000370300200520032900003703b0032005200541d0006a28000036005f200520052900493703580240024020090d00410621090c010b2005200528005f3600e705200520052903583703e00541062109200b4202510d00200520052800e70536008f03200520052903e00537038803200821090b200541d8006a41086a2208200541b0036a41086a2204290300370300200541d8006a41106a220a200541b0036a41106a2201290300370300200541d8006a41186a2207200541b0036a41186a220c290300370300200520052903b00337035820052005290388033703a0032005200528008f033600a703200541043a00b4032005410a3a00b003200541bd036a2008290300370000200541c5036a200a290300370000200541cd036a2007290300370000200541d8036a20093a0000200520052903583700b503200541d5036a20052f0088033b0000200541d7036a2005418a036a2d00003a0000200541d9036a20052903a003370000200541e0036a20052800a703360000200541fc036a200541e0056a41186a280200360200200541f4036a200541e0056a41106a290200370200200541ec036a200541e0056a41086a290200370200200541e4036a20052902e005370200200541b0036a10fe01200541286a41106a290300210d200c200341186a2900003703002001200341106a2900003703002004200341086a290000370300200520032900003703b003200541b0036a10f907210302402002410c6a28020041ffffff3f71450d002002280208102e0b0240200241186a28020041ffffff3f71450d002002280214102e0b200020033602082000200d2006200ba71b37030020054190066a24000f0b1036000bba0503067f027e067f230041c0006b22012400200141106a200010fb0720012802102202200128021810ff0102402001280214450d002002102e0b200141106a200010f60720012802102202200128021810ff0102402001280214450d002002102e0b200141106a41186a22034200370300200141106a41106a22044200370300200141106a41086a2205420037030020014200370310200141106a41c8afc9004113108102200141306a41dbafc90041091081022003200141306a41086a220629000037030020042001290030370300200141306a200141106a4120108d0320012902344200200128023022021b220742ffffffff0f8321082002410120021b2109024002402007422088a7220a0d004100210b0c010b4100210c4100210b4100210d0240034002400240200b450d002009200d4105746a21022009200d200c6a4105746a210e034020022000412010ec08450d02200e2002290000370000200e41186a200241186a290000370000200e41106a200241106a290000370000200e41086a200241086a290000370000200e41206a210e200241206a2102200d41016a220d200a490d000c040b0b2009200d4105746a2102034020022000412010ec08450d01200241206a2102200d41016a220d200a490d000b4100210b0c030b200c417f6a210c200b41016a210b200d41016a220d200a490d000b0b0240200b0d004100210b0c010b2009200d200b6b4105746a2009200d4105746a200a200d6b41057410ea081a0b2001200936020020012008200a200b6b2202ad4220868437020420034200370300200442003703002005420037030020014200370310200141106a41c8afc9004113108102200141306a41dbafc90041091081022003200629000037030020042001290030370300200141106a200110e6040240200742ffffff3f83500d002009102e0b200141c0006a2400200241016a0bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010ec08417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010ec08417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b2001200141d4d1cc00103c000bf50101047f230041306b22022400200241c8afc9004113108102200241106a41f1afc900410a108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000be909010e7f230041c0006b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4101210b41002103410021024101210c4100210d4100210e02400240034002400240024020050d002006450d010c020b02402006450d00024020052006412010ec08220f0d00410020082008200946220f1b2106410020072007200a4622101b21052008200841206a200f1b21082007200741206a20101b21070c040b200f417f4a0d02200441186a220f200541186a290000370300200441106a2210200541106a290000370300200441086a2211200541086a2900003703002004200529000037030002400240200e200d470d00200d41016a2205200d490d07200d410174220e2005200e20054b1b22054104200541044b1b220541ffffff3f71200546210e2005410574210502400240200d0d00200441003602300c010b200441013602382004200c3602302004200d4105743602340b200441206a2005200e200441306a107d2004280228210520042802204101460d012004280224210c200d210e2005410576210d0b200c200e4105746a22052004290300370000200541186a200f290300370000200541106a2010290300370000200541086a2011290300370000410020072007200a46220f1b2105200e41016a210e2007200741206a200f1b21070c040b20050d040c050b200441186a220f200541186a290000370300200441106a2210200541106a290000370300200441086a2211200541086a2900003703002004200529000037030002400240200e200d470d00200d41016a2206200d490d06200d41017422052006200520064b1b22064104200641044b1b220641ffffff3f7120064621052006410574210602400240200d0d00200441003602300c010b200441013602382004200c3602302004200d4105743602340b200441206a20062005200441306a107d2004280228210620042802204101460d012004280224210c200d210e2006410576210d0b200c200e4105746a22062004290300370000200641186a200f290300370000200641106a2010290300370000200641086a201129030037000041002106410020072007200a46220f1b2105200e41016a210e2007200741206a200f1b21070c030b20060d030c040b200c200e200020011084080240200d41ffffff3f71450d00200c102e0b0240200341ffffff3f71450d00200b102e0b200441c0006a24000f0b200441186a220f200641186a290000370300200441106a2210200641106a290000370300200441086a2211200641086a290000370300200420062900003703000240024020022003470d00200341016a22062003490d04200341017422022006200220064b1b22064104200641044b1b220641ffffff3f712006462102200641057421060240024020030d00200441003602300c010b200441013602382004200b360230200420034105743602340b200441206a20062002200441306a107d2004280228210620042802204101460d012004280224210b20032102200641057621030b200b20024105746a22062004290300370000200641186a200f290300370000200641106a2010290300370000200641086a2011290300370000410020082008200946220f1b2106200241016a21022008200841206a200f1b21080c010b0b2006450d010b1036000b1038000bd60201047f230041c0006b2202240041d0b0c9002103411321044109210502400240024002400240024002400240024002400240200141ff01710e0b000102030405060708090a000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a418caacc001044000b41e0c3cb00210341092104410021050c080b41a186ca00210341112104410121050c070b41c986ca002103410f2104410221050c060b41c6b0c9002103410a2104410321050c050b41b9b0c9002103410d2104410421050c040b41a7b0c900210341122104410521050c030b41ab85ca00210341082104410621050c020b41e086ca00210341102104410721050c010b4194b0c9002103410821050b20004183203b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bf50101047f230041306b2202240020024181b0c9004113108102200241106a41f1afc900410a108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b2202240020024181b0c9004113108102200241106a41fbafc9004106108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b2202240020024181b0c9004113108102200241106a41fbafc9004106108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000ba70401037f230041900c6b22042400200441106a2001108508200441086a20042802102205200428021841d4e2cc004100410010ca0402400240024002402004280208450d000240200428020c220620024d0d00200441a8076a410a10fd07200041013602002000410c6a200441b0076a280200360200200020042903a8073702040c020b200441d8096a2001108508200441a8076a20042802d809220220042802e00910af0520042802a8072101200441e4096a200441a8076a41047241ac0210e9081a024002402001411c460d00200441fc046a200441e4096a41ac0210e9081a024020042802dc09450d002002102e0b200441d0026a200441fc046a41ac0210e9081a20042001360220200441206a410472200441d0026a41ac0210e9081a200441a8076a200441206a10970420042903a8072003580d01200441a8076a410910fd07200041013602002000410c6a200441b0076a280200360200200020042903a807370204200441206a108b020c030b024020042802dc09450d002002102e0b200441a8076a410310fd07200041013602002000410c6a200441b0076a280200360200200020042903a8073702040c020b200041086a200441206a41b00210e9081a20004100360200200041b8026a20063602002004280214450d030c020b200441a8076a410310fd07200041013602002000410c6a200441b0076a280200360200200020042903a8073702040b2004280214450d010b2005102e0b200441900c6a24000bb40b06017f017e047f017e017f017e23004190066b22052400200541bd036a200341086a290000370000200541c5036a200341106a290000370000200541cd036a200341186a290000370000200541023a00b4032005410b3a00b003200520032900003700b503200541b0036a10fe01200541b0036a200410970420052903b00321062002280204210702404110102c2208450d00200841f8f7c60036020c2008410136020820084281808080103702004110102c2209450d0020094190f8c60036020c20094101360208200942818080801037020020082008280200417f6a220a3602000240200a0d002008280208200828020c2802001103000240200828020c280204450d002008280208102e0b200841046a220a200a280200417f6a220a360200200a0d002008102e0b200541d8006a200441b00210e9081a200541a0036a41026a2208200541256a41026a2d00003a000020054188036a41086a22042005410c6a41086a29010037030020054188036a41106a220a2005410c6a41106a290100370300200520052f00253b01a0032005200529010c37038803024002402009280208200541d8006a200928020c28020c1101000d00200541c8006a41023a0000200541c0006a41003a000020092009280200417f6a22083602004200210b2005420037033020054201370328024020080d002009280208200928020c2802001103000240200928020c280204450d002009280208102e0b200941046a22082008280200417f6a220836020020080d002009102e0b200541d8006a10dc0241012109410221080c010b200541b0036a200541d8006a41b00210e9081a200541ec056a2001360200200541e0056a41086a2007360200200541e0056a41106a200529038803370300200541f8056a2004290300370300200541e0056a41206a200a290300370300200541003a00e405200520052f01a0033b00e5052005200936028806200541023a00e005200520082d00003a00e705200541286a200541b0036a200541e0056a10dd0220052903284201512109200541286a41206a2d000021082005290330210b0b200541b0036a41186a200341186a290000370300200541b0036a41106a200341106a290000370300200541b0036a41086a200341086a290000370300200520032900003703b0032005200541d0006a28000036005f200520052900493703580240024020090d00410621090c010b2005200528005f3600e705200520052903583703e00541062109200b4202510d00200520052800e70536008f03200520052903e00537038803200821090b200541d8006a41086a2208200541b0036a41086a2204290300370300200541d8006a41106a220a200541b0036a41106a2201290300370300200541d8006a41186a2207200541b0036a41186a220c290300370300200520052903b00337035820052005290388033703a0032005200528008f033600a703200541043a00b4032005410b3a00b003200541bd036a2008290300370000200541c5036a200a290300370000200541cd036a2007290300370000200541d8036a20093a0000200520052903583700b503200541d5036a20052f0088033b0000200541d7036a2005418a036a2d00003a0000200541d9036a20052903a003370000200541e0036a20052800a703360000200541fc036a200541e0056a41186a280200360200200541f4036a200541e0056a41106a290200370200200541ec036a200541e0056a41086a290200370200200541e4036a20052902e005370200200541b0036a10fe01200541286a41106a290300210d200c200341186a2900003703002001200341106a2900003703002004200341086a290000370300200520032900003703b003200541b0036a108308210302402002410c6a28020041ffffff3f71450d002002280208102e0b0240200241186a28020041ffffff3f71450d002002280214102e0b200020033602082000200d2006200ba71b37030020054190066a24000f0b1036000bba0503067f027e067f230041c0006b22012400200141106a200010850820012802102202200128021810ff0102402001280214450d002002102e0b200141106a200010800820012802102202200128021810ff0102402001280214450d002002102e0b200141106a41186a22034200370300200141106a41106a22044200370300200141106a41086a2205420037030020014200370310200141106a4181b0c9004113108102200141306a41dbafc90041091081022003200141306a41086a220629000037030020042001290030370300200141306a200141106a4120108d0320012902344200200128023022021b220742ffffffff0f8321082002410120021b2109024002402007422088a7220a0d004100210b0c010b4100210c4100210b4100210d0240034002400240200b450d002009200d4105746a21022009200d200c6a4105746a210e034020022000412010ec08450d02200e2002290000370000200e41186a200241186a290000370000200e41106a200241106a290000370000200e41086a200241086a290000370000200e41206a210e200241206a2102200d41016a220d200a490d000c040b0b2009200d4105746a2102034020022000412010ec08450d01200241206a2102200d41016a220d200a490d000b4100210b0c030b200c417f6a210c200b41016a210b200d41016a220d200a490d000b0b0240200b0d004100210b0c010b2009200d200b6b4105746a2009200d4105746a200a200d6b41057410ea081a0b2001200936020020012008200a200b6b2202ad4220868437020420034200370300200442003703002005420037030020014200370310200141106a4181b0c9004113108102200141306a41dbafc90041091081022003200629000037030020042001290030370300200141106a200110e6040240200742ffffff3f83500d002009102e0b200141c0006a2400200241016a0bc210050b7f017e087f087e0b7f230022042105200441c0016b4160712206240002400240200141ffffff3f712001470d0020014105742207417f4c0d0041012108024002402007450d002007102c2208450d0120074105762109200821042007210a0340200a450d0120042000290000370000200441086a200041086a290000370000200441106a200041106a290000370000200441186a200041186a290000370000200441206a2104200a41606a210a200041206a21002009417f6a22090d000b0b2008200110fc02200641e0006a41186a220b4200370300200641e0006a41106a220c4200370300200641e0006a41086a220d42003703002006420037036020064180016a4181b0c9004113108102200d20064180016a41086a2200290000370300200620062900800137036020064180016a41dbafc9004109108102200b2000290000370300200c20062900800137030020064180016a200641e0006a4120108d032006280280012204410120041b210e200629028401420020041b220f422088a72204450d02200e20044105746a2110200641206a410c72211120064180016a410c6a2112200e2113034020064180016a41186a2214201341186a29000037030020064180016a41106a201341106a2900003703002000201341086a2900003703002006201329000037038001200641106a20064180016a10ff0720064180016a200628021022152006280218221610b305200d201241086a290200370300200c201241106a2802003602002006201229020037036020062802a00121170240200628028801220a450d00200629038001211820112006290360370200201141086a200d290300370200201141106a200c28020036020020062018370320201721040b2006200a360228200641003602880120062903382119200620062903980122183703382006290330211a2006200629039001221b3703302006290320211c2006200629038001221d3703202006290328211e2006200629038801221f37032802400240201ea722200d00200421170c010b2006201c3703402006201e3703482006201a370350201e422088a721212006201937035802400240201aa722040d00201a422088a721222019422088a721042019a72123202021240c010b202020044105746a212220202125202021240340200b202541186a2900002218370300200c202541106a290000221b370300200d202541086a290000221d37030020002025290000221e370000200041086a2226201d370000200041106a2227201b370000200041186a222820183700002006201e37036020062024360284012006202036028001202541206a212541002104024002400240024020010e020201000b410021042001210a0340200a410176222920046a210920092004200820094105746a2000412010ec084101481b2104200a20296b220a41014b0d000b0b200820044105746a2000412010ec08450d010b20242000290000370000202441186a2028290000370000202441106a2027290000370000202441086a2026290000370000202441206a21240b20252022470d000b200628025c210420062802582123200628025421220b201fa7212a2006202136024c200620203602482006202420206b4105753602500240024020040d00202221240c010b202220044105746a212020222125202221240340200b202541186a2900002218370300200c202541106a290000221b370300200d202541086a290000221d37030020002025290000221e370000200041086a2226201d370000200041106a2227201b370000200041186a222820183700002006201e37036020062024360284012006202236028001202541206a212541002104024002400240024020010e020201000b410021042001210a0340200a410176222920046a210920092004200820094105746a2000412010ec084101481b2104200a20296b220a41014b0d000b0b200820044105746a2000412010ec08450d010b20242000290000370000202441186a2028290000370000202441106a2027290000370000202441086a2026290000370000202441206a21240b20252020470d000b0b20062023360258200620223602542006202420226b41057536025c2006290348211f2006290340211d2006290350211b200629035821180240202a450d000240200628022c41ffffff3f71450d002006280228102e0b200628023841ffffff3f71450d002006280234102e0b2006201d3703202006201f3703282006201b370330200620183703380b2006201f370388012006201b37039001201420183703002006201d37038001200620173602a00102400240201fa722040d002015201610ff010c010b2018a7210a2015201620064180016a10c0050240201f422088a741ffffff3f71450d002004102e0b200a41ffffff3f71450d00201b422088a7102e0b201341206a211302402006280214450d002015102e0b2017210420132010470d000c030b0b1036000b1038000b0240200f42ffffff3f83500d00200e102e0b20064198016a2200420037030020064190016a2204420037030020064180016a41086a220a42003703002006420037038001200641e0006a4181b0c9004113108102200a200641e0006a41086a22092900003703002006200629006037038001200641e0006a41c7c3cb004107108102200020092900003703002004200629006037030020064180016a2002200310c5052000420037030020044200370300200a42003703002006420037038001200641e0006a4181b0c9004113108102200a20092900003703002006200629006037038001200641e0006a41dbc3cb004105108102200020092900003703002004200629006037030020064180016a412010ff0102402007450d002008102e0b200524000bf50101047f230041306b2202240020024181b0c9004113108102200241106a41f1afc900410a108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bdc0301057f230041f0006b2201240020002d00002102200141186a2203200041196a290000370300200141106a2204200041116a290000370300200141086a2205200041096a2900003703002001200029000137030002400240024020020d00200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a4181b0c9004113108102200141206a41dbc3cb0041051081022000200141206a41086a29000037030020022001290020370300200141c0006a412010ff010c010b200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a200529030037030020012001290300370320200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a4181b0c9004113108102200141e0006a41dbc3cb0041051081022000200141e0006a41086a290000370300200220012900603703004120102c2200450d012001422037026420012000360260200141e0006a200141206a41201074200141c0006a412020012802602200200128026810b2012001280264450d002000102e0b200141f0006a24000f0b1036000b130020004106360204200041e4b0c9003602000b3400200041c8afc90036020420004100360200200041146a4106360200200041106a41d4e0c900360200200041086a42133702000b2501017f230041306b22022400200241003602102000200241086a10e705200241306a24000b2901017f230041106b2202240020024100360208200242013703002000200210b301200241106a24000b340020004181b0c90036020420004100360200200041146a4106360200200041106a41f4e8c900360200200041086a42133702000b4201027f230041106b2202240002404101102c22030d001036000b2000420137020420002003360200200241003a000f20002002410f6a41011074200241106a24000b6401027f230041c0026b220224002002411c36020802404101102c2203450d002000420137020420002003360200200241003a00bf022000200241bf026a4101107402402002280208411c460d00200241086a108b020b200241c0026a24000f0b1036000be22505027f017e027f017e037f230041b0046b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b00010b200241086a200141386a10ca0120024180026a41286a200141306a29030037030020024180026a41206a200141286a29030037030020024180026a41186a200141206a29030037030020024180026a41106a200141186a29030037030020024180026a41086a200141106a2903003703002002200141086a29030037038002200141f8016a280200210320024180026a41306a200241086a41c00110e9081a20014180026a2903002104200241086a20024180026a41f00110e9081a200041086a200241086a41f00110e9081a20004180026a2004370300200041f8016a20033602002000411b3602000c1b0b20024180026a200141086a10cb0120004100360200200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c1a0b20024180026a200141046a10cc0120004101360200200041246a200241a0026a2802003602002000411c6a20024198026a290300370200200041146a20024190026a2903003702002000410c6a20024188026a29030037020020002002290380023702040c190b20024180026a200141086a10cd01200041086a20024180026a41a00210e9081a200041023602000c180b20004103360200200041086a200141086a2903003703000c170b41042103200141046a210502400240024002400240024002400240024020012d0004417f6a0e050102030405000b41e2a0cc00412841e89bc4001039000b200141086a2802002105410121030c040b41022103200241086a41026a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a29020037038002200141086a2802002105200141286a28020021010c040b200141086a2802002105410321030c020b2002410a6a200541036a2d00003a000020024180026a41086a200141146a29020037030020024190026a2001411c6a29020037030020024198026a200141246a2d00003a0000200220052f00013b010820022001410c6a2902003703800220012d00254100472106200141086a2802002105200141286a28020021010c030b200141086a2802002105410521030b0b0b200020033a0004200020022f01083b0005200020063a0025200020022f01fc013b0126200041086a20053602002000410c6a200229038002370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a20024180026a41086a2903003702002000411c6a20024190026a290300370200200041246a20024198026a2d00003a0000200041043602000c160b20024180026a200141086a10ce01200041086a20024180026a41e00010e9081a200041053602000c150b20024180026a200141046a10cf01200041063602002000410c6a20024188026a28020036020020002002290380023702040c140b20024180026a200141086a10d001200041086a20024180026a41d80010e9081a200041073602000c130b10d101000b02400240200128020422050d00410021030c010b20024180026a41186a200141286a29000037030020024180026a41106a200141206a29000037030020024188026a200141186a29000037030020024180026a41286a200141386a29000037030020024180026a41306a200141c0006a29000037030020024180026a41386a200141c8006a29000037030020024180026a41c8006a200141d8006a29000037030020024180026a41d0006a200141e0006a29000037030020024180026a41d8006a200141e8006a2900003703002002200141106a290000370380022002200141306a2900003703a0022002200141d0006a2900003703c00220024180026a41f8006a20014188016a29000037030020024180026a41f0006a20014180016a29000037030020024180026a41e8006a200141f8006a29000037030020024180026a4198016a200141a8016a29000037030020024180026a4190016a200141a0016a29000037030020024180026a4188016a20014198016a29000037030020024180026a41b8016a200141c8016a29000037030020024180026a41b0016a200141c0016a29000037030020024180026a41a8016a200141b8016a2900003703002002200141f0006a2900003703e002200220014190016a290000370380032002200141b0016a2900003703a0032001410c6a2802002201417f4c0d130240024020010d00410121030c010b2001102c2203450d150b20032005200110e9081a200241086a20024180026a41c00110e9081a0b200020033602042000410c6a2001360200200041086a2001360200200041106a200241086a41c00110e9081a200041093602000c110b20024180026a200141086a10d201200041086a20024180026a41980210e9081a2000410a3602000c100b20024180026a200141046a10d301200041046a20024180026a41e80010e9081a2000410b3602000c0f0b10d401000b20024180026a200141086a10d5012000410d360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0d0b20024180026a200141086a10d6012000410e360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0c0b20024180026a200141086a10d6012000410f360200200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0b0b20024180026a200141086a10d70120004110360200200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c0a0b200141046a2103410721050240024002400240024002400240024020012d0004417f6a0e0701020304050607000b41e2a0cc00412841a4c3cb001039000b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410121050c050b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410221050c040b20024180026a41186a200341196a29000037030020024180026a41106a200341116a29000037030020024180026a41086a200341096a290000370300200241086a41086a200341296a290000370300200241086a41106a200341316a290000370300200241086a41186a200341396a29000037030020022003290001370380022002200341216a290000370308410321050c030b200241086a200141086a10c8012002418b026a200241086a41086a2802003600002002200229030837008302410421050c020b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410521050c010b20024198026a200341196a29000037030020024190026a200341116a29000037030020024188026a200341096a2900003703002002200329000137038002410621050b200020053a0004200020022903800237000520002002290308370025200020022f00fc013b00452000410d6a20024180026a41086a290300370000200041156a20024180026a41106a2903003700002000411d6a20024180026a41186a2903003700002000412d6a200241086a41086a290300370000200041356a200241086a41106a2903003700002000413d6a200241086a41186a290300370000200041c7006a200241fe016a2d00003a0000200041113602000c090b024002400240024002400240200141086a280200417f6a0e03010203000b41e2a0cc0041284184ccc2001039000b200141386a2903002104200141306a29030021074101210841012109024002400240024002402001410c6a2d00000e050104020300010b4104210920024180026a41046a200141206a2d00003a000020022001411c6a2800003602800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a28020021050c030b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410021090c020b200141186a2802002203417f4c0d0f200141106a28020021010240024020030d00410121050c010b2003102c2205450d110b20052001200310e9081a410221092003210a0c010b20024188026a200141246a29000037030020024180026a41106a2001412c6a2d00003a000020022001411c6a2900003703800220012f000d2001410f6a2d0000411074722106200141186a280200210a200141146a2802002103200141106a2802002105410321090b200241086a41106a20024180026a41106a2d00003a0000200241086a41086a20024180026a41086a290300370300200241046a41026a200241fc016a41026a2d00003a00002002200229038002370308200220022f00fc013b01040c030b2001410c6a28020022094108762106410221080c010b2001410c6a28020022094108762106410321080b0b200020022f01043b002d20004112360200200041386a2004370300200041306a2007370300200041186a200a360200200041146a2003360200200041106a2005360200200041086a20083602002000411c6a20022903083702002000410c6a2006410874200941ff017172360200200041246a200241086a41086a2903003702002000412c6a200241086a41106a2d00003a00002000412f6a200241066a2d00003a00000c080b20024180026a200141086a10d801200041086a20024180026a41f00010e9081a200041133602000c070b20024180026a200141086a10d901200041086a20024180026a41f80010e9081a200041143602000c060b024002400240024020012f0104417f6a0e03010200010b20024180026a200141086a10c90120022902840221042002280280022103410321010c020b20024180026a200141086a10c90120022902840221042002280280022103410121010c010b20012f0106210541b002102c2203450d0820024180026a200141086a28020010da01200320024180026a41b00210e9081a410221010b200020013b0104200041153602002000410c6a2004370200200041086a2003360200200041066a20053b01000c050b20024180026a200141086a10db01200041086a20024180026a41a80210e9081a200041163602000c040b20024180026a200141046a10dc01200041046a20024180026a41c80010e9081a200041173602000c030b20024180026a200141086a10dd01200041086a20024180026a41c80010e9081a200041183602000c020b20024180026a200141086a10de0120004119360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000c010b20024180026a200141086a10df012000411a360200200041c0006a20024180026a41386a290300370300200041386a20024180026a41306a290300370300200041306a20024180026a41286a290300370300200041286a20024180026a41206a290300370300200041206a20024180026a41186a290300370300200041186a20024180026a41106a290300370300200041106a20024180026a41086a290300370300200041086a2002290380023703000b200241b0046a24000f0b1038000b1036000b13002000410a360204200041c4fac9003602000bf30a04077f027e047f077e23002202210320024180026b41607122022400200241c0006a10910820022802402104024002400240024002400240024020022802482205450d00200241286a2004280200109208024020054101470d004100210620024180016a21070c030b200241286a41106a2903004200200228022822081b21092002290330420020081b210a200441c4006a2108200541c4006c41bc7f6a210b41002106200241106a41106a210c2004210d410121070340200241106a20082802001092082009200c29030042002002280210220e1b220f200a20022903184200200e1b2210562009200f562009200f511b220e1b2109200a2010200e1b210a20062007200e1b2106200d2008200e1b210d200741016a2107200841c4006a2108200b41bc7f6a220b0d000b2002200a3703800120022006360290012002200937038801200d0d010b2000411310930820022802442202450d02200241c4006c450d022004102e200324000f0b20024180016a2107200520064d0d020b2004200641c4006c6a220841186a220d290200210a20042005417f6a220641c4006c220b6a220e41c0006a280200210c200e41206a290200210f200e41286a2902002110200e41306a2902002111200e41386a2902002112200e2902002113200e2902082109200e2902102114200d200e41186a290200370200200829021021152008201437021020082902082114200820093702082008290200210920082013370200200841386a2012370200200841306a2011370200200841286a2010370200200841206a220e2802002105200e200f370200200841c0006a200c360200200220063602482002201537039001200220143703880120022009370380012002200a37039801200241d0006a41186a2007411c6a280000360200200241d0006a41106a200741146a290000370300200241d0006a41086a2007410c6a290000370300200220072900043703502002280244210e20024180016a41186a2208420037030020024180016a41106a2207420037030020024180016a41086a4200370300200242003703800120024180016a41de80ca004109108102200241f0006a418c81ca00410b1081022008200241f0006a41086a29000037030020072002290070370300200b41046a2208417f4c0d020240024020080d00410121070c010b2008102c2207450d040b2002410036027820022008360274200220073602702006200241f0006a107620042006200241f0006a109b0120024180016a412020022802702208200228027810b20102402002280274450d002008102e0b2009a721060240200e450d00200e41c4006c450d002004102e0b200241f0006a200610940820024180016a200228027022082002280278220e10ae0502402002280280012207450d002008200e10ff010b2002280274210e0240024020070d00200e450d012008102e0c010b20024198016a290300210920024190016a290300210a20024188016a280200210d200228028401210b0240200e450d002008102e0b0240200d450d00200d410574210e20072108034020022008200a200910fb01200841206a2108200e41606a220e0d000b0b200241a8016a2009370300200241a0016a200a37030020024180016a41186a2208200d36020020024194016a200b36020020024180016a41106a220e20073602002002418c016a200636020020024180016a41086a220741013a0000200241093a00800120024180016a10fe012008200241d0006a41186a280200360200200e200241d0006a41106a2903003703002007200241d0006a41086a29030037030020022002290350370380012002200536029c0120014180ce186a20024180016a41004180ce181095080b200041063a00000b200324000f0b200620051042000b1038000b1036000ba60d03077f017e0a7f23004190036b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41de80ca004109108102200141a8026a418c81ca00410b1081022002200141a8026a41086a290000370300200320012900a8023703002001412036022c2001200141086a360228200141306a200141086a412010ed0202400240200128023022040d00410021050c010b200128023421062001200141306a41086a280200360244200120043602402001200141c0006a10ab010240024020012802000d000240024020012802042207200128024441c4006e2202200220074b1bad42c4007e2208422088a70d002008a72202417f4c0d000240024020020d00410421050c010b2002102c2205450d020b200241c4006ead2108024002402007450d00200141a8026a41017221094100210a03400240024002400240200128024422034104490d00200a41016a210a2001280240220b280000210c20012003417c6a220d3602442001200b41046a36024041002102200141003a00c8022003417b6a210302400340200d2002460d01200141a8026a20026a200b20026a220e41046a2d00003a00002001200e41056a3602402001200241016a220e3a00c802200120033602442003417f6a2103200e2102200e4120470d000b200141f0026a41186a2202200141a8026a41186a290300370300200141f0026a41106a2203200141a8026a41106a290300370300200141f0026a41086a220b200141a8026a41086a290300370300200120012903a8023703f002200e41ff01714120490d0120014188026a41086a220e200b29030037030020014188026a41106a220b200329030037030020014188026a41186a22032002290300370300200120012903f00237038802200141a8026a200141c0006a10930120012d00a8024101460d01200141e8016a41186a22022003290300370300200141e8016a41106a2203200b290300370300200141e8016a41086a220b200e29030037030020012001290388023703e801200141c8016a41086a220e200941086a290000370300200141c8016a41106a220d200941106a290000370300200141c8016a41186a220f200941186a290000370300200120092900003703c801200141a8016a41186a22102002290300370300200141a8016a41106a22022003290300370300200141a8016a41086a2203200b290300370300200120012903e8013703a80120014188016a41186a220b200f29030037030020014188016a41106a220f200d29030037030020014188016a41086a220d200e290300370300200120012903c80137038801200141e8006a41186a220e2010290300370300200141e8006a41106a22102002290300370300200141e8006a41086a22112003290300370300200120012903a801370368200141c8006a41186a2212200b290300370300200141c8006a41106a220b200f290300370300200141c8006a41086a220f200d29030037030020012001290388013703482008422088a722032008a7470d04200341016a22022003490d082003410174220d20022002200d491b22024104200241044b1bad42c4007e2208422088a74541027421022008a7210d20030d02200141003602a8020c030b200241ff0171450d00200141003a00c8020b2008a721022002450d08200241c4006c450d082005102e0c080b200141043602b002200120053602a8022001200341c4006c3602ac020b200141f0026a200d2002200141a8026a107d20012802f802210220012802f0024101460d0320012802f4022105200241c4006ead21080b2005200341c4006c6a2202200c360200200220012903683702042002410c6a2011290300370200200241146a20102903003702002002411c6a200e290300370200200220012903483702242002412c6a200f290300370200200241346a200b2903003702002002413c6a2012290300370200200842ffffffff0f83200341016aad422086842108200a2007470d000b0b2005450d030c040b20020d010b1038000b1036000b41002105200141003602f802200142013703f0022001410a3602d4022001200141286a3602d0022001200141f0026a36028802200141bc026a4101360200200142013702ac02200141909dc5003602a8022001200141d0026a3602b80220014188026a419cebc000200141a8026a103d1a20012802f00220012802f80210ef0220012802f402450d0020012802f002102e0b2006450d002004102e0b0240024020050d0020004100360208200042043702000c010b20002008370204200020053602000b20014190036a24000bd10102027f047e230041c0006b22022400200241306a2001109408200241106a20022802302201200228023810ae050240024020022802102203450d0020022902142104200241286a2903002105200241206a290300210602402002280234450d002001102e0b2002200620052004422088420010e808200241086a29030021054201210620022903002107200442ffffff3f83500d012003102e0c010b02402002280234450d002001102e0b420021060b2000200737030820002006370300200041106a2005370300200241c0006a24000be70601047f230041c0006b2202240041e086ca0021034110210441222105024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff01710e24000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223000b2002413c6a41013602002002420137022c2002419cc3cb00360228200241043602242002418883ca003602202002200241206a360238200241286a41bca8cc001044000b41d886ca00210341082104410021050c210b41c986ca002103410f2104410121050c200b41c186ca00210341082104410221050c1f0b41b286ca002103410f2104410321050c1e0b41a186ca00210341112104410421050c1d0b418e86ca00210341132104410521050c1c0b41fd85ca00210341112104410621050c1b0b41f285ca002103410b2104410721050c1a0b41e885ca002103410a2104410821050c190b41db85ca002103410d2104410921050c180b41cf85ca002103410c2104410a21050c170b41be85ca00210341112104410b21050c160b41b385ca002103410b2104410c21050c150b41ab85ca00210341082104410d21050c140b41a385ca00210341082104410e21050c130b419485ca002103410f2105410f21040c120b418385ca00210341112104411021050c110b41f484ca002103410f2104411121050c100b41e984ca002103410b2104411221050c0f0b41e084ca00210341092104411321050c0e0b41d684ca002103410a2104411421050c0d0b41ce84ca00210341082104411521050c0c0b41c284ca002103410c2104411621050c0b0b41b184ca00210341112104411721050c0a0b41a984ca00210341082104411821050c090b41a084ca00210341092104411921050c080b418f84ca00210341112104411a21050c070b418284ca002103410d2104411b21050c060b41f883ca002103410a2104411c21050c050b41e783ca00210341112104411d21050c040b41df83ca00210341082104411e21050c030b41d083ca002103410f2104411f21050c020b41c183ca002103410f2104412021050c010b41b383ca002103410e2104412121050b200041831c3b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b850201037f230041d0006b22022400200241086a41de80ca004109108102200241186a419781ca004109108102200220013602342002200241346a410410a301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a107c024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241d0006a24000f0b1038000b1036000bf30501077f230041e0016b22042400200441d0006a41186a22054200370300200441d0006a41106a22064200370300200441d0006a41086a2207420037030020044200370350200441086a41de80ca0041091081022007200441086a41086a220829000037030020042004290008370350200441086a41ccf8ca00410f10810220052008290000370300200620042900083703002004200441d0006a4120108e02200428020421092004280200210a20054200370300200642003703002007420037030020044200370350200441086a41de80ca0041091081022007200829000037030020042004290008370350200441086a41ccf8ca00410f1081022005200829000037030020062004290008370300200420094100200a1b220541016a360208200441d0006a4120200441086a410410b201200441376a42003700002004412f6a4200370000200441276a42003700002004411f6a4200370000200441086a410f6a42003700002004420037000f200441d0006a41096a2008290000370000200441e1006a200441086a41106a290000370000200441e9006a200441086a41186a290000370000200441f1006a200441086a41206a290000370000200441f9006a200441306a29000037000020044180016a42003700002004418c016a200336020020044188016a200036020020044190016a200129000037030020044198016a200141086a290000370300200441a0016a200141106a290000370300200441a8016a200141186a290000370300200441003a005020042004290008370051200441b0016a20023a0000200441c0006a20051089052004280248210820042802402101200441003602d801200442013703d001200441d0006a200441d0016a10bc052001200820042802d001220620042802d80110b201024020042802d401450d002006102e0b02402004280244450d002001102e0b200441dc006a2005360200200441d8006a41033a0000200441093a0050200441d0006a41096a20023a0000200441d0006a10fe01200441e0016a24000b8d04010b7f230041e0016b22022400200241206a41186a22034200370300200241206a41106a22044200370300200241206a41086a2205420037030020024200370320200241e0006a41de80ca0041091081022005200241e0006a41086a220629000037030020022002290060370320200241e0006a418081ca00410c1081022003200629000037030020042002290060370300200241e0006a200241206a10aa050240024020022d00800122034103470d00200041131093080c010b200241206a412010ff01200241086a22042006290300370300200241106a2205200241e0006a41106a2207290300370300200241186a2208200241e0006a41186a220929030037030020022002290360370300200241c0006a41186a220a4200370300200241c0006a41106a220b4200370300200241c0006a41086a220c420037030020024200370340200241e0006a41de80ca004109108102200c200629000037030020022002290060370340200241e0006a41a8fbca004115108102200a2006290000370300200b2002290060370300200241013a0060200241c0006a4120200241e0006a410110b201200641023a0000200241093a0060200241e0006a10fe012009200829030037030020072005290300370300200620042903003703002002200229030037036020014180ce186a200241e0006a20034180ce18109508200041063a00000b200241e0016a24000bf60d040a7f027e027f027e230041b0096b2203240020034190016a2001109808200341d0066a2003280290012204200328029801220510ad0541022106024020032d00d006220741024622080d002004200510ff010b200341f8036a411f6a2209200341f0066a280000360000200341f8036a41186a220a200341e9066a290000370300200341f8036a41106a220b200341e1066a290000370300200341f8036a41086a220c200341d9066a290000370300200320032900d1063703f80320034198076a290300210d20034190076a290300210e200341fc066a280200210f200341f8066a2802002110200341f4066a2802002105024020080d00200341c8006a411f6a2009280000360000200341c8006a41186a200a290300370300200341c8006a41106a200b290300370300200341c8006a41086a200c290300370300200320032903f803370348200721060b0240200328029401450d002004102e0b024002400240024002400240200641037122044103460d0020040e03010001010b200341f0006a41186a2206200341c8006a41186a290300370300200341f0006a41106a2204200341c8006a41106a290300370300200341f0006a41086a2208200341c8006a41086a290300370300200320032903483703702003200f3602c403200320053602c00320034190016a200341c0036a1098010240200328029001411c460d00200341386a200341f0006a200e200d10fb01200341a8076a200d370300200341a0076a200e370300200341d0066a41086a410c3a0000200341f9066a200329037037000020034181076a200829030037000020034189076a200429030037000020034191076a2006290300370000200341e1066a200141086a290000370000200341e9066a200141106a290000370000200341f1066a200141186a2900003700002001290000210d200341093a00d006200341d0066a41096a200d370000200341d0066a10fe01200341f8036a20034190016a41b00210e9081a4110102c2201450d02200141f8f7c60036020c200141013602082001428180808010370200024002404101200341f8036a1093060d00200341e8036a41023a000041002106200341e0036a41003a000020012001280200417f6a2204360200200342003703d003200342013703c803024020040d002001280208200128020c2802001103000240200128020c280204450d002001280208102e0b200141046a22042004280200417f6a220436020020040d002001102e0b200341f8036a10dc020c010b200341d0066a200341f8036a41b00210e9081a2003418a096a200341b2066a29010037010020034192096a200341ba066a2901003701002003419a096a200341c2066a290100370100200341a0096a200341c8066a290100370100200341003b018009200320032901aa0637018209200320013602a809200341c8036a200341d0066a20034180096a10dd0220032903c8035021060b200341dc066a2002360200200341d8066a41073a0000200341093a00d006200341d0066a41096a20063a0000200341d0066a10fe01200041063a000020100d040c050b200341186a200341f0006a200e200d10cb022003290318210d2003200341186a41086a290300220e3703d8062003200d3703d00602400240200d200e844200520d002003200341d0066a3602f803200341f8036a10cc020c010b200342f0f2bda1a7ee9cb9f9003703f803200341d0066a200341f8036a10cd02200341086a200341d0066a200d200e10fd0120034188046a200341086a41086a2903002211200e7d20032903082212200d54ad7d200e20117d200d201254ad7d2012200d562011200e562011200e511b22061b37030020032012200d7d200d20127d20061b3703800420032006ad3703f803200341f8036a41086a21040240024020060d00200320043602c803200341c8036a10cc020c010b200320043602c803200341c8036a10ce020b200341e8066a200e370300200341e0066a200d370300200341d8066a41063a00002003410e3a00d006200341d0066a10fe010b200341d0066a41086a410d3a0000200341fc066a20023602002001290000210d200341093a00d006200341d0066a41096a200d370000200341e1066a200141086a290000370000200341e9066a200141106a290000370000200341f1066a200141186a290000370000200341d0066a10fe012000411210930820100d030c040b200341d0066a41086a410e3a0000200341fc066a20023602002001290000210d200341093a00d006200341d0066a41096a200d370000200341e1066a200141086a290000370000200341e9066a200141106a290000370000200341f1066a200141186a290000370000200341d0066a10fe0120004110109308200641037122014103460d0120010e03030103030b1036000b2010450d010b2005102e0b200341b0096a24000bf50101047f230041306b22022400200241de80ca004109108102200241106a41f780ca004109108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000be70301047f23004180016b22022400200241386a41a081ca004107108102200241d8006a41a781ca0041121081022002200136027c2002200241fc006a410410a3013703282002410c6a200241fc006a41046a3602002002200241306a3602042002200241fc006a3602082002200241286a360200200241c8006a2002107c024002402002280250220341206a2201417f4c0d000240024020010d00410121040c010b2001102c2204450d020b200241003602302002200136022c20022004360228200241286a200241386a41101074200241286a200241d8006a41101074200241286a20022802482201200310740240200228024c450d002001102e0b200220022802282201200228023010a503200241e0006a22032002410c6a290200370300200241d8006a41106a200241146a290200370300200241f0006a22042002411c6a290200370300200241f8006a2205200241246a280200360200200220022902043703580240024020022802004101460d00200041003602000c010b20004101360200200020022903583702042000410c6a2003290300370200200041146a200241e8006a2903003702002000411c6a2004290300370200200041246a20052802003602000b0240200228022c450d002001102e0b20024180016a24000f0b1038000b1036000bcc0d04037f017e057f077e230041b0026b220424000240024002400240024002400240200141e0006a22052001413c6a412010ec08450d0020044180016a41186a200541186a29000037030020044180016a41106a200541106a29000037030020044180016a41086a200541086a29000037030020042005290000370380010240200120044180016a10af022206450d00200628020c41004a0d010b200441e0006a41086a2201200541086a290000370300200441e0006a41106a2203200541106a290000370300200441e0006a41186a2202200541186a290000370300200420052900003703604130102c2205450d01200541003a0000200520042903603700012005200429008001370021200541096a2001290300370000200541116a2003290300370000200541196a2002290300370000200541286a220120044187016a29000037000002400240024020052d00000e0402020002010b200541086a280200450d01200541046a280200102e0c010b2001280200450d00200541246a280200102e0b2005102e200041003602400c060b2004410036021420042005360210200441bc81ca0036020c20042001360208200441c8016a4120360200200420033602c401200420023602c0014124102c2205450d002004422437021c20042005360218200441186a200441c0016a410410744120200441186a1076200441186a20034120107420044180016a200441086a20042802182205200428022010aa020240200428021c450d002005102e0b02402004280280014101470d000240024020042802840122052d00000e0407070007010b200541086a280200450d06200541046a280200102e0c060b200541286a280200450d05200541246a280200102e0c050b02402004280284012205450d000240024020044188016a2903002207422088a741044f0d00410021010c010b20052800002103410121010b02402007a7450d002005102e0b2001450d002004200336021820044180016a200441086a200441186a410410aa0202402004280280014101470d000240024020042802840122052d00000e0407070007010b200541086a280200450d06200541046a280200102e0c060b200541286a280200450d05200541246a280200102e0c050b024020042802840122020d00200041003602400c070b200420044188016a2903002207422088a7220636025c2004200236025841002105200441003a00382006417f6a21010240034020062005460d01200441186a20056a200220056a22032d00003a00002004200341016a3602582004200541016a22033a00382004200136025c2001417f6a21012003210520034120460d040c000b0b0240200541ff0171450d00200441003a00380b410021050c030b200041003602400c050b1036000b200441c0016a41086a2205200441186a41086a290300370300200441c0016a41106a2201200441186a41106a290300370300200441c0016a41186a2206200441186a41186a290300370300200420042903183703c0010240200341ff0171411f4b0d00410021050c010b200441e0006a41086a2005290300370300200441e0006a41106a2001290300370300200441e0006a41186a2006290300370300200420042903c001370360200441c0016a200441d8006a108505024020042802e00122050d00410021050c010b20044180016a41186a2201200441e0006a41186a29030037030020044180016a41106a2203200441e0006a41106a29030037030020044180016a41086a2206200441e0006a41086a29030037030020044180016a41286a2208200441c0016a41086a29030037030020044180016a41306a2209200441c0016a41106a29030037030020044180016a41386a220a200441c0016a41186a290300370300200441f0016a41086a220b200441ec016a2802003602002004200429036037038001200420042903c0013703a0012004200441e4016a2902003703f001200441186a41386a220c200a290300370300200441186a41306a2009290300220d370300200441186a41286a2008290300220e370300200441186a41206a20042903a001220f370300200441186a41186a20012903002210370300200441186a41106a20032903002211370300200441186a41086a2006290300221237030020042004290380012213370318200041306a200d370300200041286a200e370300200041206a200f370300200041186a2010370300200041106a2011370300200041086a201237030020002013370300200041386a200c290300370300200020042903f001370244200041cc006a200b2802003602000b200020053602402007a7450d022002102e0c020b2005102e200041003602400c010b2005102e200041003602400b200441b0026a24000bca32021a7f0c7e23002201210220014180056b41607122012400200041246a220328020022042802002105200341d0a1c00036020020002802202106200041003602202000412c6a2203280200210720034100360200200041286a41003602002001200036021c2004200641016a22086a2109200441046a21032005417f7341808182847871210a200141a0026a410572210b200141a0026a41276a210c200141a0026a41206a210d2004210502400240034002400240200a0d000340024020032009490d004100210e0c060b200541c07d6a21052003280200210e200341046a220f2103200e41808182847871220e418081828478460d000b200e41808182847873220a417f6a200a71210e0c010b200a417f6a200a71210e2005450d022003210f0b20014180046a41186a221020054100200a684103766b41d0006c6a221141b07f6a220341186a29020037030020014180046a41106a2212200341106a29020037030020014180046a41086a2213200341086a2902003703002001200329020037038004201141506a280200210a201141546a2d00002111200c200341cc006a280000360000200d200341c5006a290000370300200141a0026a41186a22142003413d6a290000370300200141a0026a41106a2215200341356a290000370300200141a0026a41086a22162003412d6a290000370300200120032900253703a0022007417f6a2107024020114102470d00200f21030c030b200141b8036a41186a22032010290300370300200141b8036a41106a22172012290300370300200141b8036a41086a22182013290300370300200141a8016a41086a22192016290300370300200141a8016a41106a22162015290300370300200141a8016a41186a22152014290300370300200141a8016a41206a2214200d290300370300200141a8016a41276a221a200c28000036000020012001290380043703b803200120012903a0023703a801201020032903003703002012201729030037030020132018290300370300200120012903b80337038004200b20012903a801370000200b41086a2019290300370000200b41106a2016290300370000200b41186a2015290300370000200b41206a2014290300370000200b41276a201a280000360000200120113a00a4022001200a3602a002200128021c220341d0006a2802002111200328024c210302400240200a4125490d0020012802ac02210a20012802a80221100c010b200b21100b200120012f01cc023b01c8042001200a3602c404200120103602c004200320014180046a200141c0046a201128021c110600024020012802a0024125490d0020012802a802102e0b200f2103200e210a0c000b0b410021050b02402007450d00034002400240200e0d000340200320094f0d04200541c07d6a21052003280200210e200341046a220f2103200e41808182847871220e418081828478460d000b200e41808182847873220e417f6a200e71210b200f21030c010b2005450d02200e417f6a200e71210b0b200e68210f200b210e20054100200f4103766b41d0006c6a220f41506a2802004125490d00200f41586a280200102e200b210e0c000b0b024002402006450d00200441ff01200641056a10eb081a200641074d0d00200841037641076c21030c010b200621030b200020063602202000412c6a4100360200200041286a2003360200200041246a2004360200024002400240024002400240200128021c22052d00584101460d00200541dc006a28020021030240200541c8006a220b280200220e200e417f6a2209200541c0006a220f280200220e2005413c6a220a2802006b716b4101470d00200a10a502200b280200417f6a2109200f280200210e0b200f2009200e41016a71360200200541c4006a280200200e4102746a200336020002400240024002400240024002400240024002400240200541386a280200220e20034d0d00200541306a2209280200200341fc006c6a2203290210211b200320012903b0023702102003290208211c200320012903a802370208200341186a220e290200211d200e20012903b802370200200141003a00a002200141003602a4022003290200211e200320012903a002370200200141206a41086a220e200341e8006a290200370300200141206a41106a220f200341f0006a290200370300200141206a41186a220b200341f8006a2802003602002001201b370390012001201c370388012001201e37038001200120032902603703202001201d370398012003290240211f200341c8006a2902002120200341d0006a2902002121200341d8006a290200212220032902202123200341286a2902002124200341306a29020021252001200341386a29020022263703782001202537037020012024370368200120233703602001202237035820012021370350200120203703482001201f3703400240201ea741ff01714101470d00200141a8016a41176a220a200129009801221e370000200141a8016a41106a2211200129009101221c370300200141a8016a41086a2210200129008901221b37030020052802542203200129008101221d37000020032023a722053a001f200341086a201b370000200341106a201c370000200341176a201e3700002001201d3703a801200141a0026a41d8006a2022370300200141a0026a41d0006a2021370300200141a0026a41c8006a2020370300200141e0026a201f370300200141dc026a200128027c360200200141d4026a2001290274370200200141cc026a200129026c370200200120012902643702c40220014180036a2001290320370300200141a0026a41e8006a200e290300370300200141a0026a41f0006a200f290300370300200141a0026a41f8006a200b280200360200200141a9026a2010290300370000200141b1026a2011290300370000200141a0026a41186a200a290000370000200120012903a8013700a102200141c0026a20053a0000200141013a00a0022009200141a0026a109d082103200128021c220141003a0058200141dc006a20033602000c0c0b201ca72105201c422088a72103200141003602d401200141003a00ac01200141003602a801200141e8016a41106a2001280258360200200141e8016a41086a2001290350370300200120012903483703e80102400240024002400240201e422088a70e050102030400010b200141c0026a2024370300200141b8026a2023370300200141b0026a201d370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a7210b201da721030c010b200141a9026a210b0b2005410176210f024002402005410171450d002003200f4d0d08200b200f6a2d0000410f71210e4100210a200f41016a210f0c010b2003200f490d064101210a4100210e0b200341017420056b220541ffff03200541ffff03491b220541017641036a2211102c2210450d142003200f6b2109200b200f6a210f200141003602e001200120113602dc01200120103602d80102402026422088a72218410020181b2211450d00200120053602840420014181023b01800420014180046a200141d8016a10ff0541002105200a450d0a410021030c0d0b2001200536028404200141013b01800420014180046a200141d8016a10ff0541002105200a450d0a410021030c0b0b4101102c2203450d13200141013602dc01200120033602d801200341003a0000200141013602e0010c0d0b200141c0026a2024370300200141b8026a2023370300200141b0026a201d370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a72109201da721030c010b200141a9026a21090b2005410176210e024002402005410171450d002003200e4d0d08200141013a00800420014188046a2003200e41016a22056b3602002001200920056a3602840420012009200e6a2d0000410f713a0081040c010b2003200e490d0620014188046a2003200e6b360200200141003b01800420012009200e6a360284040b200141d8016a20014180046a2026a72203201fa710970702402026422088a7450d002003102e0b20012802a4024125490d0c200141ac026a280200102e0c0c0b200141c0026a2024370300200141b8026a2023370300200141b0026a201d370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a7210e201da721030c010b200141a9026a210e0b200120053602e803200120033602e4032001200e3602e003200141c0046a200141e0036a109e08200141a8016a200141e0036a41002001109f082103200128021c2105200141b8036a41086a201f370300200141b8036a41106a20012903e801370300200141d0036a200141e8016a41086a290300370300200141d8036a200141e8016a41106a280200360200200120263703b80320014180046a2005200141b8036a200141a8016a10a008200141a8016a200310a108109607000b109507000b2003200e419482ca00103c000b200f200341e0eecc001056000b200f200341f0eecc00103c000b200e200341e0eecc001056000b200e200341f0eecc00103c000b410121030c020b410121030b03400240024020030e020001010b200520094f0d03200f20056a2d0000210e200541016a2105410121030c010b02400240024020012802e001220320012802dc01470d00200341016a220b2003490d0b2003410174220a200b200a200b4b1b220b4108200b41084b1b210b0240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a200b410120014180046a107d200141c0036a280200210b20012802b8034101460d0120012802bc03210a2001200b3602dc012001200a3602d8010b20012802d80120036a200e3a00002001200341016a3602e0010c010b200b0d0a0c090b410021030c000b0b03400240024020030e020001010b200520094f0d02200f20056a2d0000210e200541016a2105410121030c010b02400240024020012802e001220320012802dc01470d00200341016a220b2003490d0a2003410174220a200b200a200b4b1b220b4108200b41084b1b210b0240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a200b410120014180046a107d200141c0036a280200210b20012802b8034101460d0120012802bc03210a2001200b3602dc012001200a3602d8010b20012802d80120036a200e3a00002001200341016a3602e0010c010b200b450d080c090b410021030c000b0b20012802e00122162103024002400240024002400240201620012802dc01470d00201641016a22032016490d0b201641017422052003200520034b1b22034108200341084b1b21030240024020160d0020014100360280040c010b20014180046a41086a41013602002001201636028404200120012802d801360280040b200141b8036a2003410120014180046a107d200141c0036a280200210320012802b8034101460d0120012802bc032105200120033602dc01200120053602d80120012802e00121030b20012802d80120036a41003a0000200120012802e00141016a22033602e001024002400240200320012802dc01470d00200341016a22052003490d0d2003410174220e2005200e20054b1b22054108200541084b1b21050240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a2005410120014180046a107d200141c0036a280200210320012802b8034101460d0120012802bc032105200120033602dc01200120053602d80120012802e00121030b2026a7221741c0046a211420012802d80120036a41003a0000200120012802e00141016a3602e00102402011450d00201f422088a72203200141d8016a1076200141d8016a2011200310740b20142017470d0141002111410021030c040b20030d0c0c0b0b20014180046a410172210e200141a9026a2119200141c0046a41017221054100210a20172103410021114101210b02400340200141023a0080042003290200211e200129039804211c2001290390042123200129038804211b20032001290380043702002003290208211d2003201b3702082003290210211b20032023370210200341186a220929020021232009201c370200200120233703d8042001201b3703d0042001201d3703c8042001201e3703c004200341206a280200210720014180046a41176a2210200541176a29000037000020014180046a41106a2209200541106a29000037030020014180046a41086a220f200541086a29000037030020012005290000370380040240201ea7220c41ff017122124103470d0020114180fe037141087621030c060b200141e0036a41176a22132010290000370000200141e0036a41106a22102009290300370300200141e0036a41086a200f290300221e3703002001200129038004221c3703e003200141c0046a41176a220d2013290000370000200141c0046a41106a22132010290300370300200141c0046a41086a2210201e3703002001201c3703c00402400240024020124102470d00200141023a00b8030c010b0240024020012802a40222124125490d0020012802b002211220012802ac0221150c010b201921150b200120012802a0023602f804200120123602f404200120153602f004200141a8016a200141f0046a4101200a109f082112200128021c2115200e20012903c004370000200e41086a2010290300370000200e41106a2013290300370000200e41176a200d2900003700002001200c3a008004200120073602a004200141b8036a201520014180046a200141a8016a10a008200141a8016a201210a10820012d00b8034103460d010b20014180046a41206a200141b8036a41206a29030037030020014180046a41186a200141b8036a41186a2903003703002009200141b8036a41106a290300370300200f200141b8036a41086a290300370300200120012903b803221e37038004410021090240024002400240201ea741ff0171417f6a0e020103000b4120200141d8016a1076200141d8016a200e412010740c010b200141c0046a41186a200e41186a2900003703002013200e41106a2900003703002010200e41086a2900003703002001200e2900003703c00420012802a404220941214f0d042009200141d8016a1076200141d8016a200141c0046a200910740b200b21090b200a41016a210a200b410174210b20092011722111200341246a22032014460d040c010b0b20114180fe037141087621030c050b2009412041ccd3c800104d000b20030d0a0c090b20114180fe037141087621030b200141033a00c00420014197046a20012900d80437000020014190046a20012900d10437030020014188046a20012900c904370300200120012900c104370380040b200141033a00b8030b201641026a21052016417e4f0d0220012802e001220e2005490d0320012802d80120166a2003410874201141ff0171723b000002402018450d00201fa7450d002018102e0b2017102e20012802a4024125490d00200141ac026a280200102e0b200128021c220341d0006a2802002105200328024c210320014180046a41086a41002802cca140360200200141002902c4a14037038004200141a0026a200320014180046a20012802d80120012802e0012005280214110500200128021c2203280254220520012903a002370000200541086a200141a0026a41086a290300370000200541106a200141a0026a41106a290300370000200541186a200141a0026a41186a2903003700002003200328027c41016a36027c2003280254220541186a290000211e200541106a290000211c200541086a290000211f200341d9006a2005290000370000200341013a0058200341e1006a201f370000200341e9006a201c370000200341f1006a201e370000024020012802dc01450d0020012802d801102e0b20012802a8014125490d00200141b0016a280200102e0b0240200041386a2802002203450d0020002802302101200341fc006c210303400240024020012d00000d00200141046a10e2010c010b200141246a10e2010b200141fc006a2101200341847f6a22030d000b0b0240200041346a2802002201450d00200141fc006c450d002000280230102e0b200041c8006a280200210102400240200041c0006a28020022032000413c6a2802002205490d00200120034f0d012003200141b4f1c000104d000b20012005490d030b0240200141ffffffff0371450d00200041c4006a280200102e0b024020002802202205450d0002402000412c6a280200450d00200041246a280200220341046a2101200520036a41016a210e2003280200417f73418081828478712105024003400240024020050d0003402001200e4f0d04200341c07d6a210320012802002105200141046a220921012005418081828478712205418081828478460d000b2005418081828478732205417f6a200571210f200921010c010b2003450d022005417f6a200571210f0b2005682109200f21052003410020094103766b41d0006c6a220941506a2802004125490d00200941586a280200102e200f21050c000b0b200028022021050b200041246a280200200541016aad42d0007ea76b102e0b200224000f0b2016200541dcd3c8001057000b2005200e41dcd3c800104d000b41c4f1c000412341e8f1c0001039000b1038000b1036000b960401037f23004190016b2206240041002107200641003602080240024020012d00584101460d00200141dc006a28020021080c010b200641366a200141db006a2d00003a0000200641206a200141e8006a290000370300200641286a200141f0006a290000370300200641306a200141f8006a2d00003a00002006200141d9006a2f00003b01342006200141e0006a290000370318200141dc006a2800002108410121070b200641c8006a41086a2006290318370300200641c8006a41106a200641186a41086a290300370300200641c8006a41186a200641186a41106a290300370300200641e8006a200641186a41186a280200360200200620073a0048200620062f01343b00492006200836024c2006200641366a2d00003a004b200641003602782006200336027420062002360270024002402005417f4c0d004101210702402005450d002005102c2207450d020b2006200536028401200620073602800120072004200510e9081a2006200536028801200641386a2001200641c8006a200641f0006a20064180016a200641086a10ad08200628023c21050240024020062802384101460d00200141003a00582000200629030837020420004100360200200141dc006a20053602002000410c6a200641106a2802003602000c010b200041013602002000200536020420062802082201450d00200628020c450d002001102e0b20064190016a24000f0b1038000b1036000bdd0302047f017e230041a0016b220224000240024002400240200028020c2203200041106a280200470d002002200141fc0010e90821030240024020002802082201200041046a280200470d00200141016a22042001490d04200141017422052004200520044b1b22044104200441044b1bad42fc007e2206422088a74541027421042006a721050240024020010d0020034100360290010c010b20034198016a41043602002003200141fc006c3602940120032000280200360290010b20034180016a2005200420034190016a107d20034188016a28020021012003280280014101460d012000200328028401360200200041046a200141fc006e360200200028020821010b2000280200200141fc006c6a200341fc0010e9081a20002000280208220341016a3602080c020b2001450d021036000b2000410c6a200041186a280200417f6a200341016a71360200200041146a28020020034102746a28020021032002200141fc0010e90821012000280208220420034d0d020240024020002802002200200341fc006c6a22042d00000d002000200341fc006c6a41046a10e2010c010b2000200341fc006c6a41246a10e2010b2004200141fc0010e9081a0b200241a0016a240020030f0b1038000b2003200441f882ca00103c000bb80101057f2001280208220241017621032001280204210402400240024002402002410171450d00200420034d0d034101210220012802002205200341016a22066a2101200520036a2d0000410f712105200621030c010b20042003490d01200128020020036a210141002105410021020b200020023a000c20002001360204200041003602002000410d6a20053a0000200041086a200420036b3602000f0b2003200441e0eecc001056000b2003200441f0eecc00103c000b960a01127f230041106b2204240002400240024002400240024020010d00410021010c010b200141086a28020022054101762106200141046a2802002107024002400240024002400240024002402005410171450d00200720064b0d012006200741f0eecc00103c000b20072006490d02200720066b2108200128020020066a21090c010b20002001280200220120066a2d0000410f7110e3082007200641016a22066b2108200120066a21090b0240024002400240024002400240200028020022014125490d002000412c6a210a2000410c6a2206280200410174200028022c470d02200628020021010c010b2000412c6a210a2001410174200028022c470d020b20042000200810fc06024020042802004101470d00200441086a2802000d0c41d0f0cc00411141e4f0cc001039000b02400240200028020022064125490d002000410c6a28020022062001490d08200041086a280200210b0c010b20062001490d07200041056a210b0b200b20016a220b20086a200b200620016b10ea081a200b2009200810e9081a0240024020002802004125490d002000410c6a21010c010b200021010b2001200620086a3602000c090b20080d01410021080c080b20080d01410021080c070b2000410c6a280200220b2006280200417f6a22064b0d01200b21010c0b0b20012001417f6a22064d0d0a200041056a20066a2d0000417071210b0c030b200041086a28020020066a2d0000417071210b20014125490d022000410c6a2802002101200041086a280200210c0c030b2006200741e0eecc001056000b41f4f1cc00411e4194f2cc001039000b200041056a210c0b200120064d0d03200c20066a200b3a000020092d0000210b02400240200028020022014125490d002000410c6a2802002101200041086a280200210c0c010b200041056a210c0b200120064d0d04200c20066a220120012d0000200b410476723a0000024002402008417f6a220d0d004100210d0c010b2008417f6a210e20084101200841014b1b417f6a210f410021012000410c6a2110200041086a2111200041056a21120340024002400240024020082001460d00200f2001460d01200920016a22062d00002113200641016a2d00002114024002402000280200220c4125490d0020102802002106201128020021152010210b0c010b200c21062000210b201221154124210c0b2006200c470d0320042000410110fc0620042802004101470d02200441086a2802000d0841d0f0cc00411141e4f0cc001039000b2008200841c0eecc00103c000b200141016a200841d0eecc00103c000b2000410c6a220b2802002106201128020021150b201520066a201441f001714104762013410474723a0000200b200b28020041016a360200200e200141016a2201470d000b0b2009200d6a2d00002115024002402000280200220b4125490d002000410c6a22012802002106200041086a280200210c0c010b200041056a210c200b2106200021014124210b0b02402006200b470d0020042000410110fc06024020042802004101470d00200441086a2802000d0441d0f0cc00411141e4f0cc001039000b2000410c6a22012802002106200041086a280200210c0b200c20066a20154104743a00002001200128020041016a3602000b200a200a28020020084101746a360200200741017420056b21010b02402002450d002000200310e308200141016a21010b200441106a240020010f0b1036000b2006200141a0eecc00103c000b2006200141b0eecc00103c000b200620014190eecc00103c000bec2603067f067e0d7f230022042105200441e0036b416071220424002004200336021420042001360210024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00004101460d00200241046a28020021020240200141c8006a220628020022032003417f6a2207200141c0006a220828020022032001413c6a22092802006b716b4101470d00200910a5022006280200417f6a2107200828020021030b20082007200341016a71360200200141c4006a28020020034102746a2002360200200141386a280200220320024d0d022001280230200241fc006c6a2201290210210a200120042903f0013702102001290208210b200120042903e801370208200441d8006a2001290240220c370300200441386a22032001290220370300200441f8006a2001290260370300200141186a2202290200210d200220042903f801370200200441003a00e001200441003602e4012001290200210e200120042903e001370200200441186a41d8006a2207200141d8006a290200370300200441186a41d0006a2208200141d0006a290200370300200441186a41c8006a2206200141c8006a290200370300200441186a41386a200141386a290200220f370300200441186a41306a2209200141306a290200370300200441186a41286a2210200141286a290200370300200441186a41186a2211200d370300200441186a41e8006a200141e8006a290200370300200441186a41f0006a200141f0006a290200370300200441186a41f8006a200141f8006a2802003602002004200a3703282004200b3703202004200e370318200ea741ff01714101460d01200ba72102200b422088a72101200c422088a72112200fa72113200441c0016a41086a22142003290300370300200441c0016a41106a22032010290300370300200441c0016a41186a2009290300370300200441a8016a41086a2008290300370300200441a8016a41106a2007280200360200200420112903003703c001200420062903003703a801200441d4006a290200220fa7211502400240024002400240200e422088a70e050102030400010b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210620042802f00121010c010b200441e9016a21060b20024101762108024002402002410171450d00200120084d0d0a200620086a2d0000410f71210341002109200841016a21080c010b20012008490d0841012109410021030b200141017420026b220241ffff03200241ffff03491b220241017641036a2210102c2211450d19200120086b2107200620086a2108200441003602a0012004201036029c01200420113602980102402015410020151b2210450d00200420023602e40220044181023b01e002200441e0026a20044198016a10ff05410021022009450d0c410021010c0f0b200420023602e402200441013b01e002200441e0026a20044198016a10ff05410021022009450d0c410021010c0d0b4101102c2201450d182004410136029c012004200136029801200141003a0000200441013602a0010c0f0b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210720042802f00121010c010b200441e9016a21070b20024101762103024002402002410171450d00200120034d0d0a200441013a00e002200441e8026a2001200341016a22026b3602002004200720026a3602e4022004200720036a2d0000410f713a00e1020c010b20012003490d08200441e8026a200120036b360200200441003b01e0022004200720036a3602e4020b20044198016a200441e0026a2013200f422088a710970702402015450d002013102e0b20042802e4014125490d0e200441ec016a280200102e0c0e0b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210020042802f00121010c010b200441e9016a21000b200420023602c802200420013602c402200420003602c002200441a0036a200441c0026a109e082004280214200441c0026a41002004109f08210120042802102102200441a4026a201236020020044198026a41106a20042903a801370300200441b0026a200441b0016a290300370300200441b8026a200441a8016a41106a2802003602002004200f37029c022004201336029802200441e0026a200220044198026a2004280214220410a0082004200110a108109607000b109507000b200041003a000020002002290001370001200041196a200241196a290000370000200041116a200241116a290000370000200041096a200241096a2900003700000c120b20002004290019370001200041003a0000200041196a200441186a41196a290000370000200041116a200441186a41116a290000370000200041096a200441186a41096a2900003700000c0b0b20022003419482ca00103c000b2008200141e0eecc001056000b2008200141f0eecc00103c000b2003200141e0eecc001056000b2003200141f0eecc00103c000b410121010c020b410121010b03400240024020010e020001010b200220074f0d03200820026a2d00002103200241016a2102410121010c010b02400240024020042802a0012201200428029c01470d00200141016a22062001490d0e200141017422092006200920064b1b22064108200641084b1b21060240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20064101200441e0026a107d200441a0026a28020021062004280298024101460d01200428029c0221092004200636029c0120042009360298010b20042802980120016a20033a00002004200141016a3602a0010c010b20060d0d0c0c0b410021010c000b0b03400240024020010e020001010b200220074f0d02200820026a2d00002103200241016a2102410121010c010b02400240024020042802a0012201200428029c01470d00200141016a22062001490d0d200141017422092006200920064b1b22064108200641084b1b21060240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20064101200441e0026a107d200441a0026a28020021062004280298024101460d01200428029c0221092004200636029c0120042009360298010b20042802980120016a20033a00002004200141016a3602a0010c010b2006450d0b0c0c0b410021010c000b0b20042802a001221621010240024002400240024002402016200428029c01470d00201641016a22012016490d0e201641017422022001200220014b1b22014108200141084b1b21010240024020160d00200441003602e0020c010b200441e0026a41086a4101360200200420163602e40220042004280298013602e0020b20044198026a20014101200441e0026a107d200441a0026a28020021012004280298024101460d01200428029c0221022004200136029c01200420023602980120042802a00121010b20042802980120016a41003a0000200420042802a00141016a22013602a0010240024002402001200428029c01470d00200141016a22022001490d10200141017422032002200320024b1b22024108200241084b1b21020240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20024101200441e0026a107d200441a0026a28020021012004280298024101460d01200428029c0221022004200136029c01200420023602980120042802a00121010b201341c0046a211720042802980120016a41003a0000200420042802a00141016a3602a00102402010450d00201220044198016a107620044198016a2010201210740b20172013470d0141002110410021010c040b20010d0f0c0e0b200441e0026a4101722103200441e9016a2118200441a0036a41017221024100210920132101410021104101210602400340200441023a00e0022001290200210e20042903f802210b20042903f002210a20042903e802210d200120042903e0023702002001290208210c2001200d3702082001290210210d2001200a370210200141186a2207290200210a2007200b3702002004200a3703b8032004200d3703b0032004200c3703a8032004200e3703a003200141206a2802002119200441e0026a41176a2211200241176a290000370000200441e0026a41106a2207200241106a290000370300200441e0026a41086a2208200241086a290000370300200420022900003703e0020240200ea7221a41ff017122144103470d0020104180fe037141087621010c060b200441c0026a41176a22122011290000370000200441c0026a41106a22112007290300370300200441c0026a41086a2008290300220e370300200420042903e002220b3703c002200441a0036a41176a221b2012290000370000200441a0036a41106a22122011290300370300200441a0036a41086a2211200e3703002004200b3703a00302400240024020144102470d00200441023a0098020c010b0240024020042802e40122144125490d0020042802f001211420042802ec01211c0c010b2018211c0b200420042802e0013602d803200420143602d4032004201c3602d0032004280214200441d0036a41012009109f0821142004280210211c200320042903a003370000200341086a2011290300370000200341106a2012290300370000200341176a201b2900003700002004201a3a00e002200420193602800320044198026a201c200441e0026a2004280214221910a0082019201410a10820042d0098024103460d010b200441e0026a41206a20044198026a41206a290300370300200441e0026a41186a20044198026a41186a290300370300200720044198026a41106a290300370300200820044198026a41086a2903003703002004200429039802220e3703e002410021070240024002400240200ea741ff0171417f6a0e020103000b412020044198016a107620044198016a2003412010740c010b200441a0036a41186a200341186a2900003703002012200341106a2900003703002011200341086a290000370300200420032900003703a003200428028403220741214f0d04200720044198016a107620044198016a200441a0036a200710740b200621070b200941016a21092006410174210620072010722110200141246a22012017460d040c010b0b20104180fe037141087621010c050b2007412041ccd3c800104d000b20010d0d0c0c0b20104180fe037141087621010b200441033a00a003200441f7026a20042900b803370000200441f0026a20042900b103370300200441e8026a20042900a903370300200420042900a1033703e0020b200441033a0098020b201641026a21022016417e4f0d0220042802a00122032002490d0320042802980120166a2001410874201041ff0171723b000002402015450d00200f428080808010540d002015102e0b2013102e20042802e4014125490d00200441ec016a280200102e0b0240024020042802a00122014120490d002004280210220241d0006a2802002108200228024c21062004280214220728022c22094101762102200728020021030240024020094101710d000240024020034125490d002007410c6a2802002103200741086a28020021070c010b200741056a21070b20032002490d07200420073602e002410021030c010b0240024020034125490d002007410c6a220928020022032002490d0a200741086a2210280200210720092802002103201028020021090c010b20032002490d09200741056a220721090b200320024d0d07200441e9026a200920026a2d000041f001713a0000200420073602e002410121030b200420033a00e802200420023602e402200441e0016a2006200441e0026a20042802980120012008280214110500200020042903e001370001200041096a200441e8016a290300370000200041116a200441f0016a290300370000200041196a200441f8016a290300370000200041003a000020042802102201200128027c41016a36027c0c010b200441f8016a22024200370300200441f0016a22034200370300200441e8016a22074200370300200442003703e001200441e0016a200428029801200110e9081a200041246a2001360200200041013a0000200041196a2002290300370000200041116a2003290300370000200041096a2007290300370000200020042903e0013700010b0240200428029c01450d00200428029801102e0b20042d0018450d060b2004413c6a10e201200524000f0b2016200241dcd3c8001057000b2002200341dcd3c800104d000b2002200341e0edcc00104d000b200220034180eecc00103c000b2002200341f0edcc00104d000b200524000f0b1038000b1036000b960301057f0240024002402001450d000240200028022c220220014b0d0002400240200028020022014125490d002000410c6a220228020021010c010b200021020b02402001450d00200241003602000b2000410036022c0f0b200220016b2203410176200341017122046a210202400240200028020022014125490d002000410c6a28020021050c010b200121050b0240200220054f0d002000410c6a2106200220056b41016a210203400240024020014125490d0020062802002101200621050c010b200021050b02402001450d0020052001417f6a3602000b2002450d01200241016a2102200028020021010c000b0b2000200336022c2004450d0002400240200028020022014125490d002000410c6a220528020022012001417f6a22024d0d04200041086a220628020020026a2d0000417071210020052802002101200628020021050c010b2001417f6a220220014f0d03200041056a220520026a2d000041707121000b200120024d0d01200520026a20003a00000b0f0b2002200141d0edcc00103c000b2002200141c0edcc00103c000b130020004119360204200041f086ca003602000b3400200041de80ca0036020420004100360200200041146a410e360200200041106a41e4ecca00360200200041086a42093702000b7c01017f230041f0006b22022400200241106a4200370300200241186a4200370300200241206a4200370300200241286a4200370300200241306a4200370300200241386a4200370300200241c0006a410036020020024108360204200241086a4200370300200241003a00002000200210c204200241f0006a24000b2f01017f02404104102c22020d001036000b2000420437020420002002360200410020001076410441002000109b010b130020004108360204200041b48bcb003602000b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241e40036020c20002002410c6a41041074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241c0930636020c20002002410c6a41041074200241106a24000b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241880e36020c20002002410c6a41041074200241106a24000b4b01027f230041106b2202240002404110102c22030d001036000b20004210370204200020033602002002420037030820024280a094a58d1d3703002000200241101074200241106a24000b4401027f230041106b2202240002404104102c22030d001036000b200042043702042000200336020020024180ce1836020c20002002410c6a41041074200241106a24000b880202037f017e230041106b220224000240024020002d00004101460d00200241003a000020012002410110742002200041046a28020036020020012002410410740c010b200241013a00002001200241011074200041246a28020021032000412c6a28020022042001107620012003200410742001200041016a41201074200041c0006a29030021052002200041c8006a2903003703082002200537030020012002411010742002200041306a28020036020020012002410410740240200041346a2802004101460d00200241003a000020012002410110740c010b200241013a000020012002410110742002200041386a28020036020020012002410410740b200241106a24000bba3205077f017e017f0b7e0b7f230022062107200641e0086b416071220624000240024002400240024002400240024002400240024002400240024020022d00004101470d00200641b8036a200241196a290000370300200641b0036a200241116a290000370300200641a8036a200241096a290000370300200620022900013703a003200328020822084101762102200328020421092003280200210a0240024020084101710d00024020092002490d00410021090c020b2002200941a0f0cc00104d000b20092002490d03200220094f0d04200a20026a2d00004170712108410121090b200141d0006a280200210b200128024c210c200641e9046a20083a0000200620093a00e804200620023602e4042006200a3602e004200620062f01c8073b01ea0420064188086a200c200641a0036a200641e0046a200b28020c1104000240024020062802880822090d00200641f0056a2201200641ab036a290000370300200641e8056a41106a2203200641b3036a290000370300200641fd056a2209200641b8036a290000370000200620062900a3033703e80520062d00a203210520062f01a003210a4130102c22020d011036000b200629028c08210d200641c0046a41186a200641a0036a41186a2208290300370300200641c0046a41106a200641a0036a41106a220b290300370300200641c0046a41086a200641a0036a41086a220c290300370300200620062903a0033703c004200641e0046a200641c0046a2009200d422088a7200141306a220e10ae0820062802e404210220062802e004210a20064188086a200641e0046a41086a41d40010e9081a200a4101460d0c200641e0036a20064188086a41d40010e9081a200620023602840520064188056a200641e0036a41d40010e9081a200641f9046a2008290300370000200641f1046a200b290300370000200641e9046a200c290300370000200641013a00e004200620062903a0033700e104200e200641e0046a109d082102200da7450d022009102e0c020b2002200a20054110747222053b0001200241013a0000200220062903e805370004200220062900e004370021200241036a20054110763a00002002410c6a2001290300370000200241146a2003290300370000200241196a2009290000370000200241286a200641e7046a2900003700000c0c0b200241046a28020021020b0240200141c8006a220b28020022092009417f6a2208200141c0006a220a28020022092001413c6a220c2802006b716b4101470d00200c10a502200b280200417f6a2108200a28020021090b200a2008200941016a71360200200141c4006a28020020094102746a2002360200200141386a280200220920024d0d02200141306a220a280200200241fc006c6a2202290210210f200220062903f00437021020022902082110200220062903e804370208200241186a22092902002111200920062903f804370200200641003a00e004200641003602e4042002290200210d200220062903e00437020020022902402112200241c8006a2902002113200241d0006a2902002114200241d8006a290200211520022902202116200241286a2902002117200241306a2902002118200241386a290200211920064180036a41086a2209200241e8006a29020037030020064180036a41106a2208200241f0006a29020037030020064180036a41186a220b200241f8006a280200360200200620113703f8032006200f3703f003200620103703e8032006200d3703e003200620193703d804200620183703d004200620173703c804200620163703c004200620153703b803200620143703b003200620133703a803200620123703a0032006200229026037038003200641d0036a41086a2202200441086a280200360200200620042902003703d00302400240024002400240024002400240200da7220c41ff01714101470d002003280200211a2003280204211b2003280208210e20064188076a41186a20062802fc0336020020064188076a41106a20062902f40337030020064188076a41086a20062902ec03370300200620062902e40337038807200641bc086a2015370200200641b4086a201437020020064188086a41246a2013370200200641a4086a201237020020064188086a41186a20062802dc0436020020064188086a41106a20062902d40437030020064188086a41086a20062902cc04370300200620062902c4043703880820064188086a413c6a20062903800337020020064188086a41c4006a2009290300370200200641d4086a2008290300370200200641dc086a200b280200360200200641e8056a41086a2002280200360200200620062903d0033703e805200641e0046a200120064188086a2003200641e8056a200510af0820062802e404210220062802e0044101460d07200d420888a721092016a72103200641e8076a41186a220820064180056a280200360200200641e8076a41106a220b200641e0046a41186a290300370300200641e8076a41086a221c200641e0046a41106a221d290300370300200641c8076a41086a221e2006418d056a290000370300200641c8076a41106a221f20064195056a290000370300200641c8076a41176a2220200641e0046a413c6a29000037000020062006290085053703c8072006200641e0046a41086a22212903003703e807200641e0046a41246a2d00002104200641a8076a41086a2222200641ad056a290000370300200641a8076a41106a2223200641b5056a290000370300200641a8076a41176a2224200641bc056a280000360000200620062900a5053703a807200641e0046a41c4006a2d0000210520020e03020501020b200641bc086a2019370200200641b4086a201837020020064188086a41246a2017370200200641a4086a201637020020064188086a41186a20062802fc0336020020064188086a41106a20062902f40337030020064188086a41086a20062902ec0337030020064188086a413c6a20062903a00337020020064188086a41c4006a20062903a803370200200641d4086a20062903b003370200200641dc086a20062802b803360200200620062902e4033703880820064188076a41086a2002280200360200200620062903d00337038807200641e0046a200120064188086a200320064188076a200510af0820062802e404210220062802e0044101460d06200641e8056a41186a220520064180056a280200360200200641e8056a41106a2208200641e0046a41186a290300370300200641e8056a41086a220b200641e0046a41106a290300370300200641c8076a41086a220c2006418d056a290000370300200641c8076a41106a220e20064195056a290000370300200641c8076a41176a221a200641e0046a413c6a29000037000020062006290085053703c8072006200641e0046a41086a2903003703e805200641e0046a41246a2d00002103200641e8076a41086a221b200641ad056a290000370300200641e8076a41106a221c200641b5056a290000370300200641e8076a41176a221d200641bc056a280000360000200620062900a5053703e807200641e0046a41c4006a2d0000210441022101024020020e03000304000b200641e8066a41186a2005280200360200200641e8066a41106a2008290300370300200641e8066a41086a200b290300370300200641c8066a41086a200c290300370300200641c8066a41106a200e290300370300200641c8066a41176a201a290000370000200641a8066a41086a201b290300370300200641a8066a41106a201c290300370300200641a8066a41176a201d280000360000200620062903e8053703e806200620062903c8073703c806200620062903e8073703a80641002101410121090c030b200e410176210202400240200e4101710d000240201b2002490d00410021040c020b2002201b41a0f0cc00104d000b201b2002490d0a2002201b4f0d0b201a20026a2d00004170712108410121040b20064188086a201a200210b008200641b5086a20083a0000200641eb046a20064188076a41086a290300370000200641f3046a20064188076a41106a290300370000200641fb046a20064188076a41186a280200360000200641e0046a41286a20064188086a41086a29030037030020064190056a20064188086a41106a29030037030020064198056a20064188086a41186a290300370300200641a0056a200641a8086a290300370300200620043a00b408200641a8056a20064188086a41286a290300370300200620033a00ff0420062006290388073700e304200620062903880837038005200620093b01e004200620094110763a00e2042001200641e0046a10b108410221010c040b200e410176210202400240200e4101710d000240201b2002490d00410021080c020b2002201b41a0f0cc00104d000b201b2002490d0b2002201b4f0d0c201a20026a2d0000417071210b410121080b20064188086a201a200210b008200641b5086a200b3a0000200641eb046a20064188076a41086a290300370000200641f3046a20064188076a41106a290300370000200641fb046a20064188076a41186a280200360000200641e0046a41286a20064188086a41086a29030037030020064190056a20064188086a41106a29030037030020064198056a20064188086a41186a290300370300200641a0056a200641a8086a290300370300200620083a00b408200641a8056a20064188086a41286a290300370300200620033a00ff0420062006290388073700e304200620062903880837038005200620093b01e004200620094110763a00e2042001200641e0046a10b108200641e8066a41086a200641e8076a41086a290300370300200641e8066a41106a200641e8076a41106a290300370300200641e8066a41186a200641e8076a41186a280200360200200641c8066a41086a200641c8076a41086a290300370300200641c8066a41106a200641c8076a41106a290300370300200641c8066a41176a200641c8076a41176a290000370000200641a8066a41086a200641a8076a41086a290300370300200641a8066a41106a200641a8076a41106a290300370300200641a8066a41176a200641a8076a41176a280000360000200620062903e8073703e806200620062903c8073703c806200620062903a8073703a806410021014101210920042103200521040c030b200641e8066a41186a2005280200360200200641e8066a41106a2008290300370300200641e8066a41086a200b290300370300200641c8066a41086a200c290300370300200641c8066a41106a200e290300370300200641c8066a41176a201a290000370000200641a8066a41086a201b290300370300200641a8066a41106a201c290300370300200641a8066a41176a201d280000360000200620062903e8053703e806200620062903c8073703c806200620062903e8073703a80641002109410021010b410021020c0a0b200641e8066a41086a20064188076a41086a290300370300200641e8066a41106a20064188076a41106a290300370300200641e8066a41186a20064188076a41186a280200360200200641eb046a201c290300370000200641f3046a200b290300370000200641fb046a2008280200360000200641a8066a41176a2020290000370000200641a8066a41106a201f290300370300200641a8066a41086a201e29030037030020062006290388073703e806200620062903e8073700e304200620062903c8073703a80620064188066a41176a202428000036000020064188066a41106a202329030037030020064188066a41086a2022290300370300200641c8066a41176a200641e0046a41176a290000370000200641c8066a41106a201d290000370300200641c8066a41086a2021290000370300200620062903a80737038806200620062900e0043703c80641012101410021090b200c41807e7121020c080b410121010c080b2002200941b0f0cc00104d000b2002200941c0f0cc00103c000b20022009419482ca00103c000b2002201b41b0f0cc00104d000b2002201b41c0f0cc00103c000b2002201b41b0f0cc00104d000b2002201b41c0f0cc00103c000b200641c8076a41186a200641e8066a41186a280200360200200641c8076a41106a200641e8066a41106a290300370300200641c8076a41086a200641e8066a41086a290300370300200641e0046a41086a200641c8066a41086a290300370300200641e0046a41106a200641c8066a41106a290300370300200641e0046a41176a200641c8066a41176a29000037000020064188086a41086a200641a8066a41086a29030037030020064188086a41106a200641a8066a41106a29030037030020064188086a41176a200641a8066a41176a290000370000200620062903e8063703c807200620062903c8063703e004200620062903a80637038808200641e8056a41176a20064188066a41176a280000360000200641e8056a41106a20064188066a41106a290300370300200641e8056a41086a20064188066a41086a29030037030020062006290388063703e80520012002722102410021010b200641e0026a41086a2208200641c8076a41086a290300370300200641e0026a41106a220b200641c8076a41106a290300370300200641e0026a41186a220c200641c8076a41186a280200360200200641c0026a41086a220e200641e0046a41086a290300370300200641c0026a41106a221a200641e0046a41106a290300370300200641c0026a41176a221b200641e0046a41176a290000370000200620062903c8073703e002200620062903e0043703c002200641a0026a41176a221c20064188086a41176a290000370000200641a0026a41106a221d20064188086a41106a290300370300200641a0026a41086a221e20064188086a41086a29030037030020064180026a41086a221f200641e8056a41086a29030037030020064180026a41106a2220200641e8056a41106a29030037030020064180026a41176a2221200641e8056a41176a28000036000020062006290388083703a002200620062903e805370380020240024020010d00200641e0016a41186a200c280200360200200641e0016a41106a200b290300370300200641e0016a41086a2008290300370300200641c0016a41086a200e290300370300200641c0016a41106a201a290300370300200641c0016a41176a201b290000370000200641a0016a41086a201e290300370300200641a0016a41106a201d290300370300200641a0016a41176a201c290000370000200620062903e0023703e001200620062903c0023703c001200620062903a0023703a00120064180016a41176a202128000036000020064180016a41106a202029030037030020064180016a41086a201f290300370300200620062903800237038001200241ff01714102460d01200641e0006a41186a2201200641e0016a41186a280200360200200641e0006a41106a2208200641e0016a41106a290300370300200641e0006a41086a220b200641e0016a41086a290300370300200641c0006a41086a220c200641c0016a41086a290300370300200641c0006a41106a220e200641c0016a41106a290300370300200641c0006a41176a221a200641c0016a41176a290000370000200641206a41086a221b200641a0016a41086a290300370300200641206a41106a221c200641a0016a41106a290300370300200641206a41176a221d200641a0016a41176a290000370000200620062903e001370360200620062903c001370340200620062903a001370320200641176a221e20064180016a41176a280000360000200641106a221f20064180016a41106a290300370300200641086a222020064180016a41086a2903003703002006200629038001370300200641c0046a41086a2221200b290300370300200641c0046a41106a220b2008290300370300200641c0046a41186a22082001280200360200200620062903603703c00420064188086a41086a2201200c29030037030020064188086a41106a220c200e29030037030020064188086a41176a220e201a2900003700002006200629034037038808200641e0036a41086a221a201b290300370300200641e0036a41106a221b201c290300370300200641e0036a41176a221c201d290000370000200620062903203703e003200641a0036a41176a221d201e280000360000200641a0036a41106a221e201f290300370300200641a0036a41086a221f2020290300370300200620062903003703a00320064180056a20033a0000200620023a00e004200620024118763a00e304200620024108763b00e104200641ec046a2021290300370200200641f4046a200b290300370200200641fc046a2008280200360200200620062903c0043702e40420064181056a20062903880837000020064189056a200129030037000020064191056a200c29030037000020064198056a200e290000370000200641a0056a20043a0000200641b8056a201c290000370000200641b1056a201b290300370000200641a9056a201a290300370000200641a1056a20062903e003370000200641c0056a20053a0000200641d8056a201d280000360000200641d1056a201e290300370000200641c9056a201f290300370000200641c1056a20062903a003370000200a200641e0046a109d082106200041086a20093a00002000200636020420004100360200200724000f0b20004101360200200020023602040c030b41d0accb00411841e8accb00105d000b200da7450d002009102e0b2000410136020020002002360204200441046a280200450d002004280200102e200724000f0b200724000ba3a3011f047f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e027f017e087f017e087f230041b00e6b22052400200541086a2002200310a802024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d00084101470d0020052d00092102200541900e6a41086a2203200141086a290000370300200541900e6a41106a2204200141106a290000370300200541900e6a41186a2206200141186a290000370300200520012900003703900e4130102c22010d010c2a0b200541d4016a2802002107200541d0016a2802002108200541c8016a2903002109200541c4016a280200210a200541bc016a290200210b200541b8016a280200210c200541b0016a290300210d200541ac016a280200210e200541a4016a290200210f200541a0016a280200211020054198016a290300211120054194016a28020021122005418c016a290200211320054188016a280200211420054180016a2903002115200541fc006a2802002116200541f4006a2902002117200541f0006a2802002118200541e8006a2903002119200541e4006a280200211a200541dc006a290200211b200541086a41d0006a280200211c200541086a41c8006a290300211d200541086a41c4006a280200211e200541086a413c6a290200211f200541086a41386a2802002120200541386a2903002121200541086a412c6a2802002122200541086a41246a22232902002124200541286a22252802002126200541086a411c6a22272802002128200541086a41186a22292802002102200541086a41146a222a280200212b200541086a410c6a222c290200212d200541086a41086a222e280200212f41002130200528020c0e051502030401150b200141033a0000200120052903900e370001200120023a0021200120052901e00d370122200141096a2003290300370000200141116a2004290300370000200141196a2006290300370000200141286a200541e60d6a29010037010020004101360200200020013602040c270b200541e0016a2802002106200541dc016a2802002131200541d8016a28020021324102210302400240202b4102470d0041002102410021330c010b200541900e6a41186a2233200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e200541e00d6a41086a2028360200200520023602e40d2005202b3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012102024020052802084101460d002033200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e7121330b200541c0066a41186a2234200541900e6a41186a290300370300200541c0066a41106a2235200541900e6a41106a290300370300200541c0066a41086a222b200541900e6a41086a290300370300200520052903900e3703c0062033200341ff017172213320020d03200541a0066a41186a2034290300370300200541a0066a41106a2035290300370300200541a0066a41086a202b290300370300200520052903c0063703a006410221024100210341002134024020264102460d00200541900e6a41186a2234200141186a290000370300200541900e6a41106a2235200141106a290000370300200541900e6a41086a222b200141086a290000370300200520012900003703900e200520243702e40d200520263602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210241012103024020052802084101460d002034200541286a2903003703002035200541086a41186a290300370300202b200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b200241807e7121340b20054180076a41186a2235200541900e6a41186a29030037030020054180076a41106a222b200541900e6a41106a29030037030020054180076a41086a2230200541900e6a41086a290300370300200520052903900e370380072034200241ff017172210220030d04200541e0066a41186a2035290300370300200541e0066a41106a202b290300370300200541e0066a41086a203029030037030020052005290380073703e006410221034100213441002135024020224102460d00200541900e6a41186a2235200141186a290000370300200541900e6a41106a222b200141106a290000370300200541900e6a41086a2230200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002035200541286a290300370300202b200541086a41186a2903003703002030200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121350b200541c0076a41186a222b200541900e6a41186a290300370300200541c0076a41106a2230200541900e6a41106a290300370300200541c0076a41086a222e200541900e6a41086a290300370300200520052903900e3703c0072035200341ff017172213520340d05200541a0076a41186a202b290300370300200541a0076a41106a2030290300370300200541a0076a41086a202e290300370300200520052903c0073703a00741022103410021344100212b024020204102460d00200541900e6a41186a222b200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a222e200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d00202b200541286a2903003703002030200541086a41186a290300370300202e200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212b0b20054180086a41186a2230200541900e6a41186a29030037030020054180086a41106a222e200541900e6a41106a29030037030020054180086a41086a2225200541900e6a41086a290300370300200520052903900e37038008202b200341ff017172212b20340d06200541e0076a41186a2030290300370300200541e0076a41106a202e290300370300200541e0076a41086a202529030037030020052005290380083703e0074102210341002134410021300240201e4102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a222e200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002030200541286a290300370300202e200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121300b200541c0086a41186a222e200541900e6a41186a290300370300200541c0086a41106a2225200541900e6a41106a290300370300200541c0086a41086a2229200541900e6a41086a290300370300200520052903900e3703c0082030200341ff017172213020340d07200541a0086a41186a202e290300370300200541a0086a41106a2025290300370300200541a0086a41086a2029290300370300200520052903c0083703a00841022103410021344100212e0240201c4102460d00200541900e6a41186a222e200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2229200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d00202e200541286a2903003703002025200541086a41186a2903003703002029200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212e0b20054180096a41186a2225200541900e6a41186a29030037030020054180096a41106a2229200541900e6a41106a29030037030020054180096a41086a222c200541900e6a41086a290300370300200520052903900e37038009202e200341ff017172212e20340d08200541e0086a41186a2025290300370300200541e0086a41106a2029290300370300200541e0086a41086a202c29030037030020052005290380093703e0084102210341002134410021250240201a4102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002025200541286a2903003703002029200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121250b200541c0096a41186a2229200541900e6a41186a290300370300200541c0096a41106a222c200541900e6a41106a290300370300200541c0096a41086a2228200541900e6a41086a290300370300200520052903900e3703c0092025200341ff017172212520340d09200541a0096a41186a2029290300370300200541a0096a41106a202c290300370300200541a0096a41086a2028290300370300200520052903c0093703a009410221034100213441002129024020184102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002029200541286a290300370300202c200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121290b200541800a6a41186a222c200541900e6a41186a290300370300200541800a6a41106a2228200541900e6a41106a290300370300200541800a6a41086a2226200541900e6a41086a290300370300200520052903900e3703800a2029200341ff017172212920340d0a200541e0096a41186a202c290300370300200541e0096a41106a2028290300370300200541e0096a41086a2026290300370300200520052903800a3703e00941022103410021344100212c024020164102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d00202c200541286a2903003703002028200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212c0b200541c00a6a41186a2228200541900e6a41186a290300370300200541c00a6a41106a2226200541900e6a41106a290300370300200541c00a6a41086a2223200541900e6a41086a290300370300200520052903900e3703c00a202c200341ff017172212c20340d0b200541a00a6a41186a2028290300370300200541a00a6a41106a2026290300370300200541a00a6a41086a2023290300370300200520052903c00a3703a00a410221034100213441002128024020144102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2223200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002028200541286a2903003703002026200541086a41186a2903003703002023200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121280b200541800b6a41186a2226200541900e6a41186a290300370300200541800b6a41106a2223200541900e6a41106a290300370300200541800b6a41086a2227200541900e6a41086a290300370300200520052903900e3703800b2028200341ff017172212820340d0c200541e00a6a41186a2026290300370300200541e00a6a41106a2023290300370300200541e00a6a41086a2027290300370300200520052903800b3703e00a410221034100213441002126024020124102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121260b200541c00b6a41186a2223200541900e6a41186a290300370300200541c00b6a41106a2227200541900e6a41106a290300370300200541c00b6a41086a222a200541900e6a41086a290300370300200520052903900e3703c00b2026200341ff017172212620340d0d200541a00b6a41186a2023290300370300200541a00b6a41106a2027290300370300200541a00b6a41086a202a290300370300200520052903c00b3703a00b410221034100213441002123024020104102460d00200541900e6a41186a2223200141186a290000370300200541900e6a41106a2227200141106a290000370300200541900e6a41086a222a200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002023200541286a2903003703002027200541086a41186a290300370300202a200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121230b200541800c6a41186a2227200541900e6a41186a290300370300200541800c6a41106a222a200541900e6a41106a290300370300200541800c6a41086a2222200541900e6a41086a290300370300200520052903900e3703800c2023200341ff017172212320340d0e200541e00b6a41186a2027290300370300200541e00b6a41106a202a290300370300200541e00b6a41086a2022290300370300200520052903800c3703e00b4102210341002134410021270240200e4102460d00200541900e6a41186a2227200141186a290000370300200541900e6a41106a222a200141106a290000370300200541900e6a41086a2222200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d002027200541286a290300370300202a200541086a41186a2903003703002022200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121270b200541c00c6a41186a222a200541900e6a41186a290300370300200541c00c6a41106a2222200541900e6a41106a290300370300200541c00c6a41086a2220200541900e6a41086a290300370300200520052903900e3703c00c2027200341ff017172212720340d0f200541a00c6a41186a202a290300370300200541a00c6a41106a2022290300370300200541a00c6a41086a2020290300370300200520052903c00c3703a00c41022103410021344100212a0240200c4102460d00200541900e6a41186a222a200141186a290000370300200541900e6a41106a2222200141106a290000370300200541900e6a41086a2220200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012134024020052802084101460d00202a200541286a2903003703002022200541086a41186a2903003703002020200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212a0b200541800d6a41186a2222200541900e6a41186a290300370300200541800d6a41106a2220200541900e6a41106a290300370300200541800d6a41086a221e200541900e6a41086a290300370300200520052903900e3703800d202a200341ff017172212a20340d10200541e00c6a41186a2022290300370300200541e00c6a41106a2020290300370300200541e00c6a41086a201e290300370300200520052903800d3703e00c4102213441002103410021220240200a4102460d00200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200520093702e40d2005200a3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213441012103024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b203441807e712122203441ff017121340b200541c00d6a41186a2220200541900e6a41186a290300370300200541c00d6a41106a221e200541900e6a41106a290300370300200541c00d6a41086a221c200541900e6a41086a290300370300200520052903900e3703c00d2022203472213420030d24200541a00d6a41186a2020290300370300200541a00d6a41106a201e290300370300200541a00d6a41086a201c290300370300200520052903c00d3703a00d4102210320084102470d1141002101410021040c120b200541086a202f202da710b008200541900e6a41086a2029290300370300200541900e6a41106a2025290300370300200541900e6a41186a200541306a2802003602002005200541086a41106a2903003703900e2002417f4c0d14202c2802002135202e2802002134200528020c210720052802082133410121304101210302402002450d002002102c2203450d270b202d422088a721312003202b200210e9081a20054180026a41186a200541900e6a41186a28020036020020054180026a41106a200541900e6a41106a29030037030020054180026a41086a200541900e6a41086a290300370300200520052903900e37038002200221320c120b200541086a202f202da710b008200541e00d6a41086a2029290300370300200541e00d6a41106a22312025290300370300200541e00d6a41186a200541306a2802003602002005200541086a41106a22062903003703e00d202c2802002135202e2802002134200528020c210720052802082133200541900e6a41186a200141186a290000370300200541900e6a41106a200141106a290000370300200541900e6a41086a200141086a290000370300200520012900003703900e200541a00d6a41086a2028360200200520023602a40d2005202b3602a00d200541086a200541900e6a200541a00d6a200410b208200541c00d6a41086a2027290200370300200541c00d6a41106a220120232802003602002005202a2902003703c00d200528020c2103024020052802084101460d00202e290300212420062802002106200541e8016a41106a2001280200360200200541e8016a41086a200541c00d6a41086a29030037030020054180026a41086a200541e00d6a41086a29030037030020054180026a41106a203129030037030020054180026a41186a200541e00d6a41186a280200360200200520052903c00d3703e801200520052903e00d370380022024422088a72132202d422088a721312024a72102410221300c120b200041013602002000200336020420334125490d242034102e0c240b4102210341002133410021060240202f4102460d00200541900e6a41186a2233200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e2005202d3702e40d2005202f3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012106024020052802084101460d002033200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021060b200341807e7121330b200541c0066a41186a2234200541900e6a41186a290300370300200541c0066a41106a2235200541900e6a41106a290300370300200541c0066a41086a2231200541900e6a41086a290300370300200520052903900e3703c006200341ff0171203372213320060d11200541a0066a41186a2034290300370300200541a0066a41106a2035290300370300200541a0066a41086a2031290300370300200520052903c0063703a0064102210302400240202b4102470d0041002106410021020c010b200541900e6a41186a2206200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e200541e00d6a41086a2028360200200520023602e40d2005202b3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210341012102024020052802084101460d002006200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e7121060b20054180076a41186a2234200541900e6a41186a29030037030020054180076a41106a2235200541900e6a41106a29030037030020054180076a41086a222b200541900e6a41086a290300370300200520052903900e37038007200341ff0171200672210320020d13200541e0066a41186a2034290300370300200541e0066a41106a2035290300370300200541e0066a41086a202b29030037030020052005290380073703e006410221024100213441002106024020264102460d00200541900e6a41186a2234200141186a290000370300200541900e6a41106a2235200141106a290000370300200541900e6a41086a222b200141086a290000370300200520012900003703900e200520243702e40d200520263602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210241012106024020052802084101460d002034200541286a2903003703002035200541086a41186a290300370300202b200541086a41106a2903003703002005200541086a41086a2903003703900e410021060b200241807e7121340b200541c0076a41186a2235200541900e6a41186a290300370300200541c0076a41106a222b200541900e6a41106a290300370300200541c0076a41086a2231200541900e6a41086a290300370300200520052903900e3703c007200241ff0171203472210220060d14200541a0076a41186a2035290300370300200541a0076a41106a202b290300370300200541a0076a41086a2031290300370300200520052903c0073703a007410221064100213541002134024020224102460d00200541900e6a41186a2235200141186a290000370300200541900e6a41106a222b200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410b208200528020c210641012134024020052802084101460d002035200541286a290300370300202b200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200641807e7121350b20054180086a41186a222b200541900e6a41186a29030037030020054180086a41106a2231200541900e6a41106a29030037030020054180086a41086a2232200541900e6a41086a290300370300200520052903900e37038008200641ff0171203572210620340d15200541e0076a41186a202b290300370300200541e0076a41106a2031290300370300200541e0076a41086a203229030037030020052005290380083703e007410221344100212b41002135024020204102460d00200541900e6a41186a222b200141186a290000370300200541900e6a41106a2231200141106a290000370300200541900e6a41086a2232200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213441012135024020052802084101460d00202b200541286a2903003703002031200541086a41186a2903003703002032200541086a41106a2903003703002005200541086a41086a2903003703900e410021350b203441807e71212b0b200541c0086a41186a2231200541900e6a41186a290300370300200541c0086a41106a2232200541900e6a41106a290300370300200541c0086a41086a2230200541900e6a41086a290300370300200520052903900e3703c008203441ff0171202b72213420350d16200541a0086a41186a2031290300370300200541a0086a41106a2032290300370300200541a0086a41086a2030290300370300200520052903c0083703a00841022135410021314100212b0240201e4102460d00200541900e6a41186a2231200141186a290000370300200541900e6a41106a2232200141106a290000370300200541900e6a41086a2230200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c21354101212b024020052802084101460d002031200541286a2903003703002032200541086a41186a2903003703002030200541086a41106a2903003703002005200541086a41086a2903003703900e4100212b0b203541807e7121310b20054180096a41186a2232200541900e6a41186a29030037030020054180096a41106a2230200541900e6a41106a29030037030020054180096a41086a222f200541900e6a41086a290300370300200520052903900e37038009203541ff01712031722135202b0d17200541e0086a41186a2032290300370300200541e0086a41106a2030290300370300200541e0086a41086a202f29030037030020052005290380093703e0084102212b41002132410021310240201c4102460d00200541900e6a41186a2232200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a222f200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c212b41012131024020052802084101460d002032200541286a2903003703002030200541086a41186a290300370300202f200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202b41807e7121320b200541c0096a41186a2230200541900e6a41186a290300370300200541c0096a41106a222f200541900e6a41106a290300370300200541c0096a41086a222e200541900e6a41086a290300370300200520052903900e3703c009202b41ff0171203272212b20310d18200541a0096a41186a2030290300370300200541a0096a41106a202f290300370300200541a0096a41086a202e290300370300200520052903c0093703a0094102213141002130410021320240201a4102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a222f200141106a290000370300200541900e6a41086a222e200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d002030200541286a290300370300202f200541086a41186a290300370300202e200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121300b200541800a6a41186a222f200541900e6a41186a290300370300200541800a6a41106a222e200541900e6a41106a290300370300200541800a6a41086a2225200541900e6a41086a290300370300200520052903900e3703800a203141ff0171203072213020320d19200541e0096a41186a202f290300370300200541e0096a41106a202e290300370300200541e0096a41086a2025290300370300200520052903800a3703e009410221314100212f41002132024020184102460d00200541900e6a41186a222f200141186a290000370300200541900e6a41106a222e200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d00202f200541286a290300370300202e200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212f0b200541c00a6a41186a222e200541900e6a41186a290300370300200541c00a6a41106a2225200541900e6a41106a290300370300200541c00a6a41086a2229200541900e6a41086a290300370300200520052903900e3703c00a203141ff0171202f72212f20320d1a200541a00a6a41186a202e290300370300200541a00a6a41106a2025290300370300200541a00a6a41086a2029290300370300200520052903c00a3703a00a410221314100212e41002132024020164102460d00200541900e6a41186a222e200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2229200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d00202e200541286a2903003703002025200541086a41186a2903003703002029200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212e0b200541800b6a41186a2225200541900e6a41186a290300370300200541800b6a41106a2229200541900e6a41106a290300370300200541800b6a41086a222c200541900e6a41086a290300370300200520052903900e3703800b203141ff0171202e72212e20320d1b200541e00a6a41186a2025290300370300200541e00a6a41106a2029290300370300200541e00a6a41086a202c290300370300200520052903800b3703e00a410221314100212541002132024020144102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d002025200541286a2903003703002029200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121250b200541c00b6a41186a2229200541900e6a41186a290300370300200541c00b6a41106a222c200541900e6a41106a290300370300200541c00b6a41086a2228200541900e6a41086a290300370300200520052903900e3703c00b203141ff0171202572212520320d1c200541a00b6a41186a2029290300370300200541a00b6a41106a202c290300370300200541a00b6a41086a2028290300370300200520052903c00b3703a00b410221314100213241002129024020124102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d002029200541286a290300370300202c200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121290b200541800c6a41186a222c200541900e6a41186a290300370300200541800c6a41106a2228200541900e6a41106a290300370300200541800c6a41086a2226200541900e6a41086a290300370300200520052903900e3703800c2029203141ff017172212920320d1d200541e00b6a41186a202c290300370300200541e00b6a41106a2028290300370300200541e00b6a41086a2026290300370300200520052903800c3703e00b41022131410021324100212c024020104102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d00202c200541286a2903003703002028200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212c0b200541c00c6a41186a2228200541900e6a41186a290300370300200541c00c6a41106a2226200541900e6a41106a290300370300200541c00c6a41086a2223200541900e6a41086a290300370300200520052903900e3703c00c202c203141ff017172212c20320d1e200541a00c6a41186a2028290300370300200541a00c6a41106a2026290300370300200541a00c6a41086a2023290300370300200520052903c00c3703a00c4102213141002132410021280240200e4102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2223200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213141012132024020052802084101460d002028200541286a2903003703002026200541086a41186a2903003703002023200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121280b200541800d6a41186a2226200541900e6a41186a290300370300200541800d6a41106a2223200541900e6a41106a290300370300200541800d6a41086a2227200541900e6a41086a290300370300200520052903900e3703800d2028203141ff017172212820320d1f200541e00c6a41186a2026290300370300200541e00c6a41106a2023290300370300200541e00c6a41086a2027290300370300200520052903800d3703e00c4102213241002131410021260240200c4102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410b208200528020c213241012131024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b203241807e712126203241ff017121320b200541c00d6a41186a2223200541900e6a41186a290300370300200541c00d6a41106a2227200541900e6a41106a290300370300200541c00d6a41086a222a200541900e6a41086a290300370300200520052903900e3703c00d2026203272213220310d20200541a00d6a41186a2023290300370300200541a00d6a41106a2027290300370300200541a00d6a41086a202a290300370300200520052903c00d3703a00d4102212641002131410021230240200a4102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e200520093702840e2005200a3602800e200541086a200541900e6a200541800e6a200410b208200528020c210141012131024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b200141807e712123200141ff017121260b200541e00d6a41186a2204200541900e6a41186a290300370300200541e00d6a41106a2227200541900e6a41106a290300370300200541e00d6a41086a222a200541900e6a41086a290300370300200520052903900e3703e00d20232026722101024020310d00200541a0026a41186a2004290300370300200541a0026a41106a2027290300370300200541a0026a41086a202a29030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c004102c2231450d2520312033360200203120052903800637020420312003360224203120052903e0053702282031410c6a20054180066a41086a290300370200203141146a20054180066a41106a2903003702002031411c6a20054180066a41186a290300370200203141306a200541e0056a41086a290300370200203141386a200541e0056a41106a290300370200203141c0006a200541e0056a41186a290300370200203120023602482031200636026c203120052903c00537024c203141d4006a200541c0056a41086a290300370200203141dc006a200541c0056a41106a290300370200203141e4006a200541c0056a41186a290300370200203120052903a005370270203141f8006a200541a0056a41086a29030037020020314180016a200541a0056a41106a29030037020020314188016a200541a0056a41186a2903003702002031203436029001203120353602b401203141ac016a20054180056a41186a290300370200203141a4016a20054180056a41106a2903003702002031419c016a20054180056a41086a290300370200203120052903800537029401203141d0016a200541e0046a41186a290300370200203141c8016a200541e0046a41106a290300370200203141c0016a200541e0046a41086a290300370200203120052903e0043702b8012031202b3602d801203141f4016a200541c0046a41186a290300370200203141ec016a200541c0046a41106a290300370200203141e4016a200541c0046a41086a290300370200203120052903c0043702dc01203120303602fc0120314198026a200541a0046a41186a29030037020020314190026a200541a0046a41106a29030037020020314188026a200541a0046a41086a290300370200203120052903a004370280022031202f3602a002203141bc026a20054180046a41186a290300370200203141b4026a20054180046a41106a290300370200203141ac026a20054180046a41086a29030037020020312005290380043702a4022031202e3602c402203141e0026a200541e0036a41186a290300370200203141d8026a200541e0036a41106a290300370200203141d0026a200541e0036a41086a290300370200203120052903e0033702c802203120253602e80220314184036a200541c0036a41186a290300370200203141fc026a200541c0036a41106a290300370200203141f4026a200541c0036a41086a290300370200203120052903c0033702ec022031202936028c03203141a8036a200541a0036a41186a290300370200203141a0036a200541a0036a41106a29030037020020314198036a200541a0036a41086a290300370200203120052903a003370290032031202c3602b003203141cc036a20054180036a41186a290300370200203141c4036a20054180036a41106a290300370200203141bc036a20054180036a41086a29030037020020312005290380033702b403203120283602d403203141f0036a200541e0026a41186a290300370200203141e8036a200541e0026a41106a290300370200203141e0036a200541e0026a41086a290300370200203120052903e0023702d803203120323602f80320314194046a200541c0026a41186a2903003702002031418c046a200541c0026a41106a29030037020020314184046a200541c0026a41086a290300370200203120052903c0023702fc032031200136029c04203141b8046a200541a0026a41186a290300370200203141b0046a200541a0026a41106a290300370200203141a8046a200541a0026a41086a290300370200203120052903a0023702a00441032130024020080d0041002133200721340c120b2007417f4c0d130240024020070d00410121330c010b2007102c2233450d260b20332008200710e9081a200721340c110b20004101360200200020013602040c230b20004101360200200020333602040c220b20004101360200200020023602040c210b20004101360200200020353602040c200b200041013602002000202b3602040c1f0b20004101360200200020303602040c1e0b200041013602002000202e3602040c1d0b20004101360200200020253602040c1c0b20004101360200200020293602040c1b0b200041013602002000202c3602040c1a0b20004101360200200020283602040c190b20004101360200200020263602040c180b20004101360200200020233602040c170b20004101360200200020273602040c160b200041013602002000202a3602040c150b200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200541800e6a41086a2032360200200520073602840e200520083602800e200541086a200541900e6a200541800e6a200410b208200528020c210341012101024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021010b200341807e712104200341ff017121030b200541e00d6a41186a2207200541900e6a41186a290300370300200541e00d6a41106a2232200541900e6a41106a290300370300200541e00d6a41086a2222200541900e6a41086a290300370300200520052903900e3703e00d2004200372210420010d12200541a0026a41186a2007290300370300200541a0026a41106a2032290300370300200541a0026a41086a202229030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c004102c2203450d1420032033360200200320052903800637020420032002360224200320052903e0053702282003410c6a20054180066a41086a290300370200200341146a20054180066a41106a2903003702002003411c6a20054180066a41186a290300370200200341306a200541e0056a41086a290300370200200341386a200541e0056a41106a290300370200200341c0006a200541e0056a41186a290300370200200320353602482003202b36026c200320052903c00537024c200341d4006a200541c0056a41086a290300370200200341dc006a200541c0056a41106a290300370200200341e4006a200541c0056a41186a290300370200200320052903a005370270200341f8006a200541a0056a41086a29030037020020034180016a200541a0056a41106a29030037020020034188016a200541a0056a41186a29030037020020032030360290012003202e3602b401200341ac016a20054180056a41186a290300370200200341a4016a20054180056a41106a2903003702002003419c016a20054180056a41086a290300370200200320052903800537029401200341d0016a200541e0046a41186a290300370200200341c8016a200541e0046a41106a290300370200200341c0016a200541e0046a41086a290300370200200320052903e0043702b801200320253602d801200341f4016a200541c0046a41186a290300370200200341ec016a200541c0046a41106a290300370200200341e4016a200541c0046a41086a290300370200200320052903c0043702dc01200320293602fc0120034198026a200541a0046a41186a29030037020020034190026a200541a0046a41106a29030037020020034188026a200541a0046a41086a290300370200200320052903a004370280022003202c3602a002200341bc026a20054180046a41186a290300370200200341b4026a20054180046a41106a290300370200200341ac026a20054180046a41086a29030037020020032005290380043702a402200320283602c402200341e0026a200541e0036a41186a290300370200200341d8026a200541e0036a41106a290300370200200341d0026a200541e0036a41086a290300370200200320052903e0033702c802200320263602e80220034184036a200541c0036a41186a290300370200200341fc026a200541c0036a41106a290300370200200341f4026a200541c0036a41086a290300370200200320052903c0033702ec022003202336028c03200341a8036a200541a0036a41186a290300370200200341a0036a200541a0036a41106a29030037020020034198036a200541a0036a41086a290300370200200320052903a00337029003200320273602b003200341cc036a20054180036a41186a290300370200200341c4036a20054180036a41106a290300370200200341bc036a20054180036a41086a29030037020020032005290380033702b4032003202a3602d403200341f0036a200541e0026a41186a290300370200200341e8036a200541e0026a41106a290300370200200341e0036a200541e0026a41086a290300370200200320052903e0023702d803200320343602f80320034194046a200541c0026a41186a2903003702002003418c046a200541c0026a41106a29030037020020034184046a200541c0026a41086a290300370200200320052903c0023702fc032003200436029c04200341b8046a200541a0026a41186a290300370200200341b0046a200541a0026a41106a290300370200200341a8046a200541a0026a41086a290300370200200320052903a0023702a004200541086a202f202da710b008200541900e6a41086a2201200541086a41186a290300370300200541900e6a41106a2204200541286a290300370300200541900e6a41186a222b200541306a2802003602002005200541086a41106a2903003703900e200541086a410c6a2802002135200541086a41086a2802002134200528020c2107200528020821330240024020310d00410021020c010b2006417f4c0d030240024020060d00410121020c010b2006102c2202450d160b20022031200610e9081a0b202d422088a7213120054180026a41186a202b28020036020020054180026a41106a200429030037030020054180026a41086a2001290300370300200520052903900e3703800241042130200621320b20002030360204200041186a2035360200200041146a2034360200200041106a20073602002000410c6a2033360200200041086a20313602002000411c6a200529038002370200200041c4006a2006360200200041386a2003360200200041c8006a20052903e801370200200041246a20054180026a41086a2903003702002000412c6a20054180026a41106a290300370200200041346a20054180026a41186a280200360200200041d0006a200541e8016a41086a290300370200200041d8006a200541e8016a41106a2802003602002000413c6a2032ad4220862002ad84370200200041003602000c120b20004101360200200020333602040c110b1038000b20004101360200200020033602040c0f0b20004101360200200020023602040c0e0b20004101360200200020063602040c0d0b20004101360200200020343602040c0c0b20004101360200200020353602040c0b0b200041013602002000202b3602040c0a0b20004101360200200020303602040c090b200041013602002000202f3602040c080b200041013602002000202e3602040c070b20004101360200200020253602040c060b20004101360200200020293602040c050b200041013602002000202c3602040c040b20004101360200200020283602040c030b20004101360200200020323602040c020b20004101360200200020343602040c010b20004101360200200020043602040b200541b00e6a24000f0b1036000bae5303117f047e037f23002206210720064180056b41607122062400200641106a41086a200341086a280200360200200620032902003703100240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802000e050104000203010b20064180016a2002412c6a290200370300200641f8006a200241246a290200370300200641d8006a41186a2002411c6a290200370300200641d8006a41106a2208200241146a290200370300200641d8006a41086a2002410c6a29020037030020062002290204370358200641a6016a200241376a2d00003a000020064188016a41086a200241c4006a29020037030020064188016a41106a200241cc006a29020037030020064188016a41186a200241d4006a280200360200200620022f00353b01a40120062002413c6a29020037038801200241346a2d00002109200241386a280200210a02400240200628025c220b4125490d002008280200210b200641d8006a410c6a280200210c0c010b200641e1006a210c0b20062006280258220d3602b0012006200c3602a8012006280214210e2006280218210f2006200b3602ac010240200b4101742210200d6b2211200e410174200f6b2202200220114b1b2212450d00410021022006280210211302400340200f20026a22084101762214200e4f0d0c200d20026a22154101762216200b4f0d0d201320146a2d00002214410f71201441f0017141047620084101711b200c20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b20020d060b2010200d470d0441f8accb00412a41a4adcb001039000b4101211520062802142208200628021822144101762202490d0a20064180046a200628021020026a200820026b10b008200641386a41086a20064194046a290200370300200641c8006a2006419c046a290200370300200641d0006a200641a4046a29020037030020062006418c046a2902003703382014410171210220064180046a41086a2802002108200628028404211620062802800421032004290204211720042802002111410021140c280b200241106a280200210d2002410c6a280200210c200241086a280200210b2002280204210202402006280214221441017420062802182208470d0020042802082108410021140240200b450d00200d2008470d00200b2004280200200d10ec08452114200d21080b2004280204211620042802002103024020052802002215450d00200541046a280200450d002015102e0b2005200c3602042005200b360200200541086a200d360200200641386a41086a20064180046a41086a290200370300200641386a41106a20064180046a41106a290200370300200641386a41186a20064180046a41186a290200370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a28020036020020062006290280043703382006200629029803370320410321150c280b2008410176221520144f0d0a200628021020156a2d000021142003200328020841016a36020820022014410f71201441047620084101711b221541246c6a22082902102118200820062903900437021020082902082119200820062903880437020820082902002117200641023a0080042008200629038004370200200841186a2214290200211a201420062903980437020002400240024002402017a741ff01714102470d0020032802042216200328020822054101762214490d0f20064198036a200328020020146a201620146b10b0082006418c046a20062902980337020020064194046a20064198036a41086a2902003702002006419c046a200641a8036a29020037020020064180046a41246a200641b0036a290200370200200641ac046a200641b8036a290200370200200641b4046a200641c0036a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a200541017136020041002114200641003a0080042002201541246c6a41046a200141306a20064180046a109d08360200200841003a00000c010b200641a0046a200828022036020020064180046a41186a201a37030020062019370388042006201737038004200620183703900420064198036a41086a200441086a2802003602002006200429020037039803200641c0026a200120064180046a200320064198036a200510ad0820062802c402211620062802c0024101460d01200641c0026a41086a2d0000210341002114200841003a00002002201541246c6a41046a2016360200200341ff0171450d020b41032115200b2103200c2116200d21080c290b20004101360200200020163602040240200b450d00200c450d00200b102e0b2002102e200724000f0b2000428080808010370200200041186a200d360200200041146a200c360200200041106a200b3602002000410c6a2002360200200041086a4103360200200724000f0b200641c0036a2002412c6a290200370300200641b8036a200241246a290200370300200641b0036a2002411c6a290200370300200641a8036a2208200241146a29020037030020064198036a41086a2002410c6a2902003703002006200229020437039803200241346a2802002111200241386a28020021102002413c6a280200211b200241c0006a280200211c02400240200628029c03220b4125490d002008280200210b20064198036a410c6a280200210c0c010b200641a1036a210c0b2006200628029803220d360290012006200c360288012006280214210e2006280218210f2006200b36028c01410021020240200b410174200d6b2209200e410174200f6b220a200a20094b1b2212450d00200628021021130340200f20026a22084101762214200e4f0d0d200d20026a22154101762216200b4f0d0e201320146a2d00002214410f71201441f0017141047620084101711b200c20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b0240024002400240024020022009470d002009200a460d010b200220094f0d01200b200d200241016a22126a22144101762208490d12200641d8006a200c20086a200b20086b10b008200641e8016a41086a2216200641d8006a41086a290300370300200641e8016a41106a2203200641d8006a41106a290300370300200641e8016a41186a2205200641d8006a41186a290300370300200641e8016a41206a220e200641d8006a41206a290300370300200641e8016a41286a220f200641d8006a41286a280200360200200620062903583703e801200d20026a220d4101762208200b4f0d13200c20086a2d0000210810b308211520064180046a41086a20144101713602002006418c046a220b20062903e80137020020064194046a20162903003702002006419c046a200329030037020020064180046a41246a2005290300370200200641ac046a200e290300370200200641b4046a200f280200360200200641c4046a201c360200200641c0046a201b360200200641bc046a2010360200200641b8046a20113602002006410436028404200641c8046a20062902b801370300200641d0046a200641b8016a41086a290200370300200641d8046a200641b8016a41106a28020036020041002114200641003a00800420152008410f712008410476200d4101711b41246c6a2208200141306a220320064180046a109d08360204200841003a000020062802142208410174200628021822166b2002470d0220064180046a20064188016a200210b408200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200620064180046a41106a290300370338200b280200210820064180046a41086a28020021162004280208210b2004290200211720062802840421032006280280042102201521110c280b4100211402402010450d00201c2004280208470d0020102004280200201c10ec084521140b200b200d4101762202490d1020064180046a200c20026a200b20026b10b008200641c0026a41086a221520064194046a290200370300200641c0026a41106a220c2006419c046a290200370300200641c0026a41186a220e200641a4046a29020037030020062006418c046a2902003703c002200d410171210220064180046a41086a220d2802002108200628028404211620062802800421032004280208210b20042902002117024020052802002204450d00200541046a280200450d002004102e0b2005201b36020420052010360200200541086a201c360200200641386a41086a2015290300370300200641386a41106a200c290300370300200641386a41186a200e290300370300200641206a41086a200d290200370300200641206a41106a20064180046a41106a280200360200200620062903c00237033820062006290280043703200c270b200f20026a22144101762208200e4f0d12200628021020086a2d000021082003200220032802086a41016a36020820112008410f71200841047620144101711b221441246c6a22022902102118200220062903900437021020022902082119200220062903880437020820022902002117200641023a0080042002200629038004370200200241186a2208290200211a20082006290398043702002017a741ff01714102470d0120032802042215200328020822164101762208490d15200641c0026a200328020020086a201520086b10b0082006418c046a20062902c00237020020064194046a200641c0026a41086a2902003702002006419c046a200641d0026a29020037020020064180046a41246a200641d8026a290200370200200641ac046a200641e0026a290200370200200641b4046a200641e8026a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a2016410171360200200641003a0080042011201441246c6a41046a200141306a20064180046a109d08360200200241003a00000c250b201620026a220b410176220d20084f0d122008201620126a22054101762214490d132006280210220c200d6a2d00002116200641c0026a200c20146a200820146b10b0082006418c046a220820062902c00237020020064194046a200641c0026a41086a2902003702002006419c046a200641c0026a41106a29020037020020064180046a41246a200641c0026a41186a290200370200200641ac046a200641c0026a41206a290200370200200641b4046a200641c0026a41286a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a2204200541017136020041002114200641003a00800420152016410f71201641f00171410476200b4101711b41246c6a2216200320064180046a109d08360204201641003a000020064180046a20064188016a200210b408200641386a41086a20064180046a41186a290300370300200641386a41106a20064180046a41206a290300370300200641386a41186a20064180046a41286a290300370300200620064180046a41106a29030037033820082802002108200428020021162006280284042103200628028004210242002117201521110c250b200641a0046a200228022036020020064180046a41186a201a370300200620193703880420062017370380042006201837039004200641c0026a41086a200441086a280200360200200620042902003703c002200641e8016a200120064180046a2003200641c0026a200510ad0820062802ec012108024020062802e8014101460d00200641e8016a41086a2d00002115200241003a00002011201441246c6a41046a2008360200201541ff01710d24200b200d4101762202490d1520064180046a200c20026a200b20026b10b0082000410c6a200d41017136020020004281808080c000370204200041c8006a201c360200200041c4006a201b360200200041c0006a20103602002000413c6a2011360200200041106a200629028004370200200041186a20064188046a290200370200200041206a20064180046a41106a290200370200200041286a20064180046a41186a290200370200200041306a20064180046a41206a290200370200200041386a20064180046a41286a280200360200200041003602000c220b200041013602002000200836020402402010450d00201b450d002010102e0b2011102e0c210b200641e8026a2002412c6a290200370300200641e0026a200241246a290200370300200641d8026a2002411c6a290200370300200641d0026a2208200241146a290200370300200641c0026a41086a2002410c6a290200370300200620022902043703c0022002413c6a2802002109200241386a280200211c200241346a28020021100240024020062802c402220b4125490d002008280200210b200641c0026a410c6a280200210d0c010b200641c9026a210d0b410021020240200b41017420062802c002220c6b22112006280214220e4101742006280218220f6b220a200a20114b1b2212450d00200628021021130340200f20026a22084101762214200e4f0d16200c20026a22154101762216200b4f0d17201320146a2d00002214410f71201441f0017141047620084101711b200d20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b024002400240024020022011470d002011200a460d010b200220114f0d0110b3082108200c20026a22154101762216200b4f0d19200b201541016a220c4101762214490d1a200d20166a2d0000211620064198036a200d20146a200b20146b10b0082006418c046a220b20062902980337020020064180046a41146a220d20064198036a41086a220e29020037020020064180046a411c6a220f20064198036a41106a221229020037020020064180046a41246a221320064198036a41186a29020037020020064180046a412c6a221120064198036a41206a29020037020020064180046a41346a220a20064198036a41286a280200360200200641c0046a221b2009360200200641bc046a2209201c36020020064180046a41386a2010360200200641013602840420064180046a41086a2210200c41017136020041002114200641003a00800420082016410f71201641f0017141047620154101711b41246c6a2215200141306a20064180046a109d08360204201541003a000020064180046a200641106a200210b408200641a8016a41086a2202200b280200360200200641d8006a41086a221520064180046a41186a220c290300370300200641d8006a41106a221620064180046a41206a290300370300200641d8006a41186a221c20064180046a41286a29030037030020062006290284043703a801200620064180046a41106a221d290300370358200620062802800436029c032006410436029803200e20062903a8013703002012200228020036020020064198036a41386a410036020020064198036a41346a200836020020064198036a41146a200629035837020020064198036a411c6a201529030037020020064198036a41246a201629030037020020064198036a412c6a201c290300370200200641dc036a20062902880137020020064198036a41cc006a20064188016a41086a29020037020020064198036a41d4006a20064188016a41106a280200360200200641f0036a41086a200441086a280200360200200620042902003703f00320064180046a200120064198036a2003200641f0036a200510af08200641e8016a41086a22052013290200370300200641e8016a41106a220e2011290200370300200641e8016a41186a2212200a2902003703002006200f2902003703e80120102802002115200b2802002102201d2802002103200d2802002116200c280200210820092802002111201b2903002117200641c8046a280200210b200628028404210d2006280280042104200641b8016a41106a220c200641dc046a280200360200200641b8016a41086a220f20064180046a41d4006a290200370300200620064180046a41cc006a2902003703b80120044101460d07200641386a41186a2012290300370300200641386a41106a200e290300370300200641386a41086a2005290300370300200641206a41086a200f290300370300200641206a41106a200c280200360200200620062903e801370338200620062903b8013703200c020b41002102024020092004280208470d0020102004280200200910ec084521020b024020052802002208450d00200541046a280200450d002008102e0b2005201c36020420052010360200200541086a2009360200024020020d00200620062802c0023602800420064180046a41047221150240024020062802c40222084125490d00200641d0026a2802002108200641cc026a28020021020c010b200641c9026a21020b4100211420064180046a41086a221641003a0000200641003602840420152002200220086a10fb06200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a280200360200200620064180046a41106a29030037033820062006290298033703202006418c046a280200210820162802002116200429020421172004280200211120062802840421032006280280042102410121150c020b200620062802c0023602800420064180046a41047221140240024020062802c40222084125490d00200641d0026a2802002108200641cc026a28020021020c010b200641c9026a21020b20064180046a41086a221541003a0000200641003602840420142002200220086a10fb06200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a280200360200200620064180046a41106a29030037033820062006290298033703202006418c046a28020021082015280200211620042902042117200428020021112006280284042103200628028004210241012115410121140c010b200b200c4101762202490d19200641e8016a200d20026a200b20026b10b00810b308210220064198036a41086a20062902e80137030020064198036a41106a200641e8016a41086a29020037030020064198036a41186a200641e8016a41106a29020037030020064198036a41206a200641e8016a41186a29020037030020064198036a41286a200641e8016a41206a290200370300200641c8036a200641e8016a41286a28020036020020064198036a41c0006a200936020020064198036a413c6a201c360200200641d0036a201036020020064198036a41346a20023602002006200c41017136029c03200641043602980320064188016a41086a200441086a280200360200200620042902003703880120064180046a200120064198036a200320064188016a200510af08200641d8006a41086a2204200641a4046a290200370300200641d8006a41106a220d200641ac046a290200370300200641d8006a41186a220520064180046a41346a29020037030020062006419c046a29020037035820064180046a41086a28020021152006418c046a280200210220064180046a41106a280200210320064194046a280200211620064180046a41186a280200210820064180046a413c6a280200211120064180046a41c0006a2903002117200641c8046a280200210b200628028404210c2006280280042114200641b8016a41106a220e200641dc046a280200360200200641b8016a41086a220f200641d4046a2902003703002006200641cc046a2902003703b80120144101460d1a200641386a41186a2005290300370300200641386a41106a200d290300370300200641386a41086a2004290300370300200641206a41086a200f290300370300200641206a41106a200e28020036020020062006290358370338200620062903b801370320410021140b20062802c4024125490d26200641cc026a280200102e0c260b200d4101762202200b4f0d19200c20026a2d0000210210b30821080240024020114101470d0020064198036a41026a200641a4016a41026a2d00003a000020064180046a41086a20064188016a41086a29030037030020064180046a41106a20064188016a41106a29030037030020064180046a41186a20064188016a41186a280200360200200620062f01a4013b0198032006200629038801370380040c010b200b200d41016a22154101762214490d1b20064198036a200c20146a200b20146b10b00820064180046a41086a20154101713602002006418c046a20062902980337020020064194046a20064198036a41086a2902003702002006419c046a20064198036a41106a290200370200200641a4046a20064198036a41186a290200370200200641ac046a200641b8036a290200370200200641b4046a200641c0036a280200360200200641b8046a20093a0000200641b9046a20062f01a4013b00002006410236028404200641bb046a200641a4016a41026a2d00003a0000200641bc046a200a360200200641c0046a200629038801370300200641c8046a20064188016a41086a290300370300200641d0046a20064188016a41106a290300370300200641d8046a20064188016a41186a28020036020041002109200641003a008004200141306a20064180046a109d08210a0b20082002410f712002410476200d4101711b41246c6a220220093a0000200220062f0198033b00012002200a3602042002200629038004370208200241036a2006419a036a2d00003a0000200241106a20064180046a41086a2215290300370200200241186a20064180046a41106a2216290300370200200241206a20064180046a41186a220b2802003602004100211420064198036a41086a41003602002006200836029c032006410336029803200641b8016a41086a200441086a280200360200200620042902003703b80120064180046a200120064198036a2003200641b8016a200510af08200641c0026a41086a220d20064180046a41246a290200370300200641c0026a41106a2205200641ac046a290200370300200641c0026a41186a220c200641b4046a29020037030020062006419c046a2902003703c002201528020021152006418c046a28020021022016280200210320064194046a2802002116200b2802002108200641bc046a2802002111200641c0046a2903002117200641c8046a280200210b200628028404210e2006280280042104200641e8016a41106a220f200641dc046a280200360200200641e8016a41086a2212200641d4046a2902003703002006200641cc046a2902003703e80120044101460d01200641386a41186a200c290300370300200641386a41106a2005290300370300200641386a41086a200d290300370300200641206a41086a2012290300370300200641206a41106a200f280200360200200620062903c002370338200620062903e8013703200c1e0b0240024020022011460d00200b200d20026a22144101762208490d1c200641b8016a200c20086a200b20086b10b0082003200328020820026a36020820064198036a41086a221620062902b80137030020064198036a41106a220b200641b8016a41086a29020037030020064198036a41186a220d200641b8016a41106a29020037030020064198036a41206a220c200641b8016a41186a29020037030020064198036a41286a220e200641b8016a41206a29020037030020064198036a41306a200641b8016a41286a280200360200200641cc036a20093a00002006201441017136029c03410221152006410236029803200641cf036a200641a4016a41026a2d00003a0000200620062f01a4013b00cd03200641d0036a200a360200200641ec036a20064188016a41186a280200360200200641e4036a20064188016a41106a290300370200200641dc036a20064188016a41086a290300370200200641d4036a200629038801370200200641f0036a41086a200441086a280200360200200620042902003703f00320064180046a200120064198036a2003200641f0036a200510af0820062802840421142006280280042108200641c0026a20064180046a41086a41d80010e9081a20084101460d01200641e8016a200641c0026a41d80010e9081a20064198036a200641a8016a200210b40820064180046a410472200641e8016a41d80010e9081a41002111200641003a008004200141306a20064180046a109d082102200641386a41086a200d290300370300200641386a41106a200c290300370300200641386a41186a200e2903003703002006200b2903003703382002ad211720162802002116200641a4036a28020021082006280298032102200628029c032103410021140c1f0b2003200328020820116a36020820064180046a41086a20062903880137030020064180046a41106a20064188016a41086a29030037030020064180046a41186a20064188016a41106a290300370300200641a0046a20064188016a41186a280200360200200620093a008004200620062f01a4013b0081042006200641a6016a2d00003a0083042006200a3602840420064198036a41086a200441086a2802003602002006200429020037039803200641c0026a200120064180046a200320064198036a200510ad0820062802c4022115024020062802c0024101460d00200b200d4101762202490d1d200641c0026a41086a2d0000210820064180046a200c20026a200b20026b10b008200641386a41086a20064194046a290200370300200641386a41106a2006419c046a290200370300200641d0006a200641a4046a290200370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a28020036020020062006418c046a2902003703382006200629029803370320200d4101712102200841ff017145211420064180046a41086a2802002108200628028404211620062802800421032015ad211741022115410021110c1f0b20004101360200200020153602040c020b20004101360200200020143602040c010b200041013602002000200e3602040b200628025c4125490d1d200641e4006a280200102e200724000f0b200041013602002000200d3602040c190b2014200e41e0efcc00103c000b2016200b41e0efcc00103c000b2002200841f0efcc001056000b2015201441e0efcc00103c000b2014201641f0efcc001056000b2014200e41e0efcc00103c000b2016200b41e0efcc00103c000b2002200b41f0efcc001056000b2008200b41f0efcc001056000b2008200b41e0efcc00103c000b2008200e41e0efcc00103c000b200d200841e0efcc00103c000b2014200841f0efcc001056000b2008201541f0efcc001056000b2002200b41f0efcc001056000b2014200e41e0efcc00103c000b2016200b41e0efcc00103c000b2016200b41e0efcc00103c000b2014200b41f0efcc001056000b2002200b41f0efcc001056000b200041013602002000200c3602040c040b2002200b41e0efcc00103c000b2014200b41f0efcc001056000b2008200b41f0efcc001056000b2002200b41f0efcc001056000b20062802c4024125490d02200641cc026a280200102e0c020b200628025c4125490d06200641e4006a280200102e0c060b200628029c034125490d00200641a4036a280200102e200724000f0b200724000f0b200b200d4101762202490d0120064180046a200c20026a200b20026b10b008200641386a41086a20064194046a290200370300200641c8006a2006419c046a290200370300200641d0006a200641a4046a29020037030020062006418c046a290200370338200d4101712102201bad4220862010ad84211720064180046a41086a28020021082006280284042116200628028004210341002114201c210b0b0240200628029c034125490d00200641a4036a280200102e0b410421150c020b2002200b41f0efcc001056000b0b20002014360204200041186a2008360200200041146a2016360200200041106a20033602002000410c6a2002360200200041086a20153602002000411c6a2006290338370200200041c8006a200b360200200041c0006a20173702002000413c6a2011360200200041cc006a2006290320370200200041246a200641386a41086a2903003702002000412c6a200641386a41106a290300370200200041346a200641386a41186a290300370200200041d4006a200641206a41086a290300370200200041dc006a200641206a41106a28020036020020004100360200200724000bd50301087f230041106b22032400200041003a00042000410036020020032000200210fc060240024020032802004101470d00200341086a2802000d0141d0f0cc00411141e4f0cc001039000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b02400240024020062004490d00200121080c010b2002210920012108024003402009450d01200720066a20082d00003a00002009417f6a2109200841016a21082004200641016a2206470d000b200421060c010b200520063602000c010b20052006360200200120026a22012008460d00200841016a21062000410c6a2105200041056a210a20082d00002102034002400240200028020022044125490d00200028020c210820002802082107200521090c010b2004210820002109200a2107412421040b024020082004470d0020032000410110fc06024020032802004101470d00200341086a2802000d0441d0f0cc00411141e4f0cc001039000b200028020c210820002802082107200521090b200720086a20023a00002009200928020041016a36020020012006460d0120062d00002102200641016a21060c000b0b200341106a24000f0b1036000b880903017f027e177f230041d0016b22022400200241186a200141d00010e9081a20024188016a20002903182000290308853703002002200029031022033703782002200029030022043703702002200320048537038001200241186a200241f0006a109107200241086a2002290378420020022903702203420010e8084104210520002802202206200241106a290300200229030885200389a7220771220841046a200671210902400240024002400240200041246a280200220a20086a280000220b2007411976220c41818284086c220d732201417f73200141fffdfb776a7141808182847871220e0d004104210f200b21100340200921012010201041017471418081828478710d0320062001200f6a41046a712109200f41046a2205210f200d200a20016a280000221073220e417f73200e41fffdfb776a7141808182847871220e450d000c020b0b200b211020082101200a450d010b200e417f6a200e71210f2001200e684103766a210e200241186a41256a2111200241c4006a2802002112200241c0006a280200211320022802382114200241e4006a2d000041ff01712115200241186a41cd006a2d000041ff0171211603400240200241186a200a41002006200e716b41d0006c6a220e41b07f6a2217412010ec080d00200e41506a2118201321192012211a0240201441254f0d00201121192014211a0b024002402018280200221b4125490d00200e415c6a280200211b200e41586a28020021180c010b201841056a21180b201a201b470d0020192018201a10ec080d002015200e417c6a2d0000470d002015450d032016201741cd006a2d000041ff0171460d030b02400240200f450d00200f210e0c010b2005210f0340200921012010201041017471418081828478710d0320062001200f6a41046a712109200f41046a2205210f200d200a20016a280000221073220e417f73200e41fffdfb776a7141808182847871220e450d000b0b200e417f6a200e71210f2001200e684103766a210e0c000b0b200041206a210f2002200036026c200241f0006a200241186a41d00010e9081a4104210102400340200b4180818284787122100d01200820016a2110200141046a2101200a201020067122086a280000210b0c000b0b0240200a20106841037620086a20067122016a2c000022104100480d00200a200a280200418081828478716841037622016a2d000021100b200041286a280200210802402010410171220b450d0020080d00200241c0016a200f200241ec006a10b508200028022022062007712110200041246a280200210a4104210103402010220820016a2006712110200141046a2101200a20086a28000041808182847871220f450d000b0240200a200f6841037620086a20067122016a2c00004100480d00200a280200418081828478716841037621010b200028022821080b20002008200b6b360228200a20016a200c3a000020062001417c6a71200a6a41046a200c3a0000200a410020016b41d0006c6a41b07f6a200241f0006a41d00010e9081a2000412c6a2201200128020041016a3602000c010b20144125490d002013102e0b200241d0016a24000bc40801047f230041f0026b22042400024002400240024002400240024020022802004101470d00200241086a280200210520022802042102200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d001200441f0016a200441d0016a20022005200310ae0820042802f401210120042802f0012102200441f8006a200441f0016a41086a220541d40010e9081a20024101460d05200441206a200441f8006a41d40010e9081a200420013602f4012005200441206a41d40010e9081a41002102200441003a00f0012003200441f0016a109d0821010c010b2002280204210302400240200241086a28020022024120460d00200441f0016a41186a200141186a290000370300200441f0016a41106a200141106a290000370300200441f0016a41086a200141086a290000370300200420012900003703f0012002417f4c0d040240024020020d00410121010c010b2002102c2201450d060b20012003200210e9082103200441f8006a41186a2205200441f0016a41186a290300370300200441f8006a41106a2206200441f0016a41106a290300370300200441f8006a41086a2207200441f0016a41086a290300370300200420042903f0013703784130102c2201450d05200141043a000020012004290378370001200120042f00f0013b00212001200236002c2001200236002820012003360024200141096a2007290300370000200141116a2006290300370000200141196a2005290300370000200141236a200441f2016a2d00003a0000410121020c010b200441f8006a41026a200341026a2d00003a0000200441f0016a41086a2003410f6a29000037030020044180026a200341176a29000037030020044188026a2003411f6a2d00003a0000200420032f00003b0178200420032900073703f00120032800032101410021020b200441d0016a41026a2203200441f8006a41026a2d00003a0000200441206a41086a2205200441f0016a41086a290300370300200441206a41106a2206200441f0016a41106a290300370300200441206a41186a2207200441f0016a41186a2d00003a0000200420042f01783b01d001200420042903f00137032020020d012004411c6a41026a20032d00003a0000200441086a2005290300370300200441106a2006290300370300200441186a20072d00003a0000200420042f01d0013b011c20042004290320370300410121020b200020023a000420004100360200200041056a20042f011c3b0000200041086a20013602002000410c6a2004290300370200200041076a2004411e6a2d00003a0000200041146a200441086a2903003702002000411c6a200441106a290300370200200041246a200441186a2802003602000c040b20004101360200200020013602040c030b1038000b1036000b20004101360200200020013602040b200441f0026a24000b800d01027f230041b0046b22002400024041c004102c22010d001036000b200141023a00002001200029008d04370001200141023a0024200120002900ea03370025200141096a2000418d046a41086a290000370000200141116a2000418d046a41106a290000370000200141196a2000418d046a41186a290000370000200141206a2000418d046a411f6a2800003600002001412d6a200041ea036a41086a290000370000200141356a200041ea036a41106a2900003700002001413d6a200041ea036a41186a290000370000200141c4006a200041ea036a411f6a280000360000200141023a0048200141023a006c200120002900c703370049200141d1006a200041c7036a41086a290000370000200141d9006a200041c7036a41106a290000370000200141e1006a200041c7036a41186a290000370000200141e8006a200041c7036a411f6a280000360000200120002900a40337006d200141f5006a200041a4036a41086a290000370000200141fd006a200041a4036a41106a29000037000020014185016a200041a4036a41186a2900003700002001418c016a200041a4036a411f6a280000360000200141023a009001200141023a00b40120012000290081033700910120014199016a20004181036a41086a290000370000200141a1016a20004181036a41106a290000370000200141a9016a20004181036a41186a290000370000200141b0016a20004181036a411f6a280000360000200120002900de023700b501200141bd016a200041de026a41086a290000370000200141c5016a200041de026a41106a290000370000200141cd016a200041de026a41186a290000370000200141d4016a200041de026a411f6a280000360000200141023a00d801200141f8016a200041bb026a411f6a280000360000200141f1016a200041bb026a41186a290000370000200141e9016a200041bb026a41106a290000370000200141e1016a200041bb026a41086a290000370000200120002900bb023700d901200141023a00fc012001419c026a20004198026a411f6a28000036000020014195026a20004198026a41186a2900003700002001418d026a20004198026a41106a29000037000020014185026a20004198026a41086a29000037000020012000290098023700fd01200141023a00a002200141c0026a200041f5016a411f6a280000360000200141b9026a200041f5016a41186a290000370000200141b1026a200041f5016a41106a290000370000200141a9026a200041f5016a41086a290000370000200120002900f5013700a102200141023a00c402200141e4026a200041d2016a411f6a280000360000200141dd026a200041d2016a41186a290000370000200141d5026a200041d2016a41106a290000370000200141cd026a200041d2016a41086a290000370000200120002900d2013700c502200141023a00e80220014188036a200041af016a411f6a28000036000020014181036a200041af016a41186a290000370000200141f9026a200041af016a41106a290000370000200141f1026a200041af016a41086a290000370000200120002900af013700e902200141023a008c03200141ac036a2000418c016a411f6a280000360000200141a5036a2000418c016a41186a2900003700002001419d036a2000418c016a41106a29000037000020014195036a2000418c016a41086a2900003700002001200029008c0137008d03200141023a00b003200141d0036a200041e9006a411f6a280000360000200141c9036a200041e9006a41186a290000370000200141c1036a200041e9006a41106a290000370000200141b9036a200041e9006a41086a290000370000200120002900693700b103200141023a00d403200141f4036a200041c6006a411f6a280000360000200141ed036a200041c6006a41186a290000370000200141e5036a200041c6006a41106a290000370000200141dd036a200041c6006a41086a290000370000200120002900463700d503200141023a00f80320014198046a200041236a411f6a28000036000020014191046a200041236a41186a29000037000020014189046a200041236a41106a29000037000020014181046a200041236a41086a290000370000200120002900233700f903200141023a009c04200141bc046a2000411f6a280000360000200141b5046a200041186a290000370000200141ad046a200041106a290000370000200141a5046a200041086a2900003700002001200029000037009d04200041b0046a240020010bf310010a7f230041e0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2802002204410174200141086a28020022056b20024b0d00200420054101762202490d01200341206a200128020020026a200420026b10b00820002005410171360200200020032903203702042000410c6a200341286a290300370200200041146a200341306a2903003702002000411c6a200341386a290300370200200041246a200341c0006a2903003702002000412c6a200341c8006a2802003602000c150b20054101762106200520026a22074101762108024020074101710d0020082006490d0220042008490d03200128020020066a210202400240200820066b220141244b0d00200341206a2002200110e9081a200341d0006a41026a200341206a41026a2d00003a0000200341086a200341336a290000370300200341106a2003413b6a290000370300200341186a200341c3006a2d00003a0000200320032f00203b01502003200329002b3703002003280023210420032800272102410021060c010b2001417f4c0d052001102c2204450d0620042002200110e9081a41012106200121020b2000200136020420002005410171360200200041086a20063a0000200041096a20032f01503b0000200041106a20023602002000410c6a2004360200200041146a20032903003702002000410b6a200341d2006a2d00003a00002000411c6a200341086a290300370200200041246a200341106a2903003702002000412c6a200341186a2802003602000c150b200841016a22072006490d05200820044f0d06200128020020066a210802400240200720066b220441244b0d00200341206a2008200410e9081a2003411c6a41026a200341206a41026a2d00003a0000200341086a200341336a290000370300200341106a2003413b6a290000370300200341186a200341c3006a2d00003a0000200320032f00203b011c2003200329002b3703002003280023210120032800272106410021080c010b2004417f4c0d042004102c2201450d0520012008200410e9081a41012108200421060b200341206a4104722109200341296a220720032f011c3b0000200341206a41106a220a20063602002003412c6a2001360200200341346a20032903003702002003412b6a2003411e6a2d00003a00002003413c6a200341086a290300370200200341c4006a200341106a290300370200200341cc006a200341186a280200360200200320083a00282003200436022420032002410171220236022002402005410171220520024d0d000240024020044125490d002006417f6a220b0d0120012d000021040c150b2004417f6a220b450d090b200b417f6a210c410021010340200141016a21050240024020044125490d002003280230220420014d0d102003280230220420054d0d11200328022c20016a2d00004104742102200328022c20016a41016a2d0000410476210620032802302104200328022c21080c010b200420014d0d0f200420054d0d10200720016a22062d00004104742102200641016a2d00004104762106200721080b200420014d0d0a200820016a20062002723a00000240200c2001460d0020032802242104200521010c010b0b02400240200328022422014125490d0020032802302201200b4d0d11200328022c200b6a2d0000210420032802302101200328022c21070c010b2001200b4d0d102007200b6a2d000021040b2001200b4d0d0a2007200b6a21010c130b200520024f0d130240024020044125490d00200a21050c010b200421062009210520072101412421040b024020062004470d00200341d0006a2009410110fc06024020032802504101470d00200341d8006a2802000d0641d0f0cc00411141e4f0cc001039000b20032802302106200328022c2101200a21050b200120066a41003a00002005200528020041016a36020002400240200328022422044125490d00200328023021010c010b200421010b024020014102490d002001417e6a21010340200141016a21050240024020044125490d002003280230220420014d0d132003280230220420054d0d14200328022c20016a2d00004104742102200328022c20016a41016a2d0000410476210620032802302104200328022c21080c010b200420014d0d12200420054d0d13200720016a22062d00004104742102200641016a2d00004104762106200721080b200420054d0d0c200820016a41016a20062002723a00002001417f6a210120032802242104200541014b0d000b0b0240024020044125490d002003280230450d13200328022c2d0000210120032802302104200328022c21070c010b2004450d1220032d002921010b2004450d0b2007200141f001714104763a00000c130b2002200441f0efcc001056000b200620084180f0cc001057000b200820044180f0cc00104d000b1038000b1036000b200620074190f0cc001057000b200720044190f0cc00104d000b20032d00292104200721010c0a0b2001200441ecf4cc00103c000b200b2001418cf5cc00103c000b200141016a200441c4f2cc00103c000b4100410041acf5cc00103c000b2001200441ccf4cc00103c000b200141016a200441dcf4cc00103c000b200b200141fcf4cc00103c000b2001200441a4f2cc00103c000b200141016a200441b4f2cc00103c000b41004100419cf5cc00103c000b200120044104743a00000b02400240200328022422014125490d00200328023021010c010b2009210a0b02402001450d00200a2001417f6a3602000b20002003290320370200200041286a200341206a41286a290300370200200041206a200341206a41206a290300370200200041186a200341206a41186a290300370200200041106a200341206a41106a290300370200200041086a200341206a41086a2903003702000b200341e0006a24000bcc0f06087f017e077f017e017f027e230041e0006b220324000240024002400240024002400240200128020c220441016a22052004490d000240200520012802002206200641016a220741037641076c20064108491b22064101764b0d004100210641002105024003400240024020064101710d00200520074f0d0320052106200541016a21050c010b200541036a220620054922080d0220062007492209450d022007200541046a20081b200720091b21050b200141046a28020020066a220620062802002206410776417f73418182840871200641fffefdfb07726a360200410121060c000b0b200141046a2802002105200128020041016a22064104490d05200520066a20052800003600000c060b024002402005200641016a2206200520064b1b22050d0041d0a1c0002108410021094100210a0c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d03417f2005410374220541076e417f6a677641016a41012005410d4b1b21050b2005ad42d0007e220b422088a70d03200ba72206200541046a22096a22082006490d032008102c2208450d04200820066a220841ff01200910eb081a2005417f6a2209200541037641076c20094108491b210a0b200141046a280200220c41046a210d200c20076a210e200c280200417f734180818284787121072002280200210f200341d8006a2110200341086a211103400240024020070d0002400340200d200e4f0d01200c41c07d6a210c200d2802002105200d41046a2206210d2005418081828478712205418081828478460d000b2005418081828478732207417f6a20077121122006210d0c020b2001200436020c200041003602002001200a20046b3602082001280200210520012009360200200141046a22062802002107200620083602002005450d092007200541016aad42d0007ea76b102e0c090b2007417f6a20077121120b2010200f290318200f290308853703002003200f290310220b3703482003200f29030022133703402003200b20138537035041002105200c41002007684103766b41d0006c6a41b07f6a2214200341c0006a1091072003200329034842002003290340220b420010e8082011290300200329030085200b89220ba721060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b200820056a200ba741197622063a00002005417c6a20097120086a41046a20063a00002008410020056b41d0006c6a41b07f6a201441d00010e9081a201221070c000b0b41accdcc00411c41c8cdcc001039000b41accdcc00411c41c8cdcc001039000b41accdcc00411c41c8cdcc001039000b1036000b200541046a2005200610ea081a0b4100210502402001280200220a417f460d002002280200210c200141046a210e200341c0006a41186a2110200341106a41086a21114100210603400240200e2802002205200622146a2d0000418001470d00410020146b210403402010200c290318200c290308853703002003200c290310220b3703482003200c29030022133703402003200b2013853703502005200441d0006c6a220f41b07f6a220d200341c0006a109107200341106a200329034842002003290340220b420010e808200e280200210920012802002108410021052011290300200329031085200b89220ba7221221060340200541046a2205200620087122076a2106200920076a280000418081828478712202450d000b0240200920026841037620076a20087122056a2c00004100480d002009280200418081828478716841037621050b02402005200820127122066b201420066b7320087141034b0d00200920146a200ba741197622053a000020082014417c6a7120096a41046a20053a00000c020b200920056a22062d000021072006200ba741197622023a00002005417c6a20087120096a41046a20023a00000240200741ff01470d00200e280200220620146a41ff013a0000200620012802002014417c6a716a41046a41ff013a0000200e280200410020056b41d0006c6a41b07f6a200d41d00010e9081a0c020b200e280200410020056b41d0006c6a220741b07f6a2205290200210b2005200d290200370200200541186a220629020021132006200d41186a2208290200370200200541106a220629020021152006200d41106a2209290200370200200541086a220529020021162005200d41086a2206290200370200200d200b370200200620163702002009201537020020082013370200200741506a220541186a2208290200210b2008200f41506a220641186a2209290200370200200541106a220829020021132008200641106a2202290200370200200541086a220829020021152008200641086a220d2902003702002005290200211620052006290200370200200620163702002009200b37020020022013370200200d2015370200200741706a220541086a2207290000210b2007200f41706a220641086a22082900003700002005290000211320052006290000370000200620133700002008200b370000200e28020021050c000b0b201441016a21062014200a470d000b20012802002205200541016a41037641076c20054108491b21050b2000410036020020012005200128020c6b3602080b200341e0006a24000b130020004123360204200041b4adcb003602000b8c0301047f230041d0006b22022400200241186a200141186a290000370300200241106a200141106a290000370300200241086a200141086a29000037030020022001290000370300200241206a41de80ca004109108102200241306a41a8fcca004109108102024002404120102c2201450d002002422037024420022001360240200241c0006a20024120107420022802482201417f4c0d01200228024021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280244450d002003102e0b200141206a2203417f4c0d012003102c2205450d00200241003602482002200336024420022005360240200241c0006a200241206a41101074200241c0006a200241306a41101074200241c0006a20042001107402402001450d002004102e0b200220022802402203200228024810b705024020022802042201450d0020002002290308370208200020022802003602000b2000200136020402402002280244450d002003102e0b200241d0006a24000f0b1036000b1038000bb40201037f230041e0006b22022400200241086a41de80ca004109108102200241186a4184faca004108108102024002404120102c2203450d002002422037023c20022003360238200241386a2001412010742002200228023822012002280240220310a301370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a107c0240200228023c450d002001102e0b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102c2204450d010b2000410036020820002001360204200020043602002000200241086a411010742000200241186a41101074200020022802282201200310740240200228022c450d002001102e0b200241e0006a24000f0b1036000b1038000bf50101047f230041306b22022400200241de80ca004109108102200241106a41f4fcca00410d108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000bf50101047f230041306b22022400200241de80ca004109108102200241106a41a8fcca004109108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000b950f0a067f027e017f017e027f067e017f027e127f067e230041a0026b220524002005200010b808200541306a200528020022062005280208220710b105200541b0016a41026a220020052d00333a000041082108200541e8016a41086a220920054190016a290300370300200541e8016a41106a220a20054198016a290300370300200520052f00313b01b001200520054188016a2903003703e80120054180016a290300210b200541f8006a290300210c024002400240024020052d0030220d4102470d004200210e4100210f410021104200211142002112420021134200211442002115420021164100210d0c010b200541f0006a2903002116200541e8006a2903002115200541d8006a2903002113200541d0006a2903002112200541c8006a2903002111200541306a41106a290300210e200541e0006a29030021142005413c6a2802002110200541306a41086a280200210f200528023421172005412c6a41026a20002d00003a0000200541106a41086a2009290300370300200541106a41106a200a290300370300200520052f01b0013b012c200520052903e80137031041012100200d4101460d01201721080b4200201320047d2012200354ad7d2218201220037d2219201256201820135620182013511b22001b21134200201920001b21124200201120027d200e200154ad7d2218200e20017d2219200e56201820115620182011511b22001b21114200201920001b210e0240201041306c2200450d00200820006a211a200541e8006a2117200541306a410172221b41036a211c200821000340200041306a21090240200041086a2d00004101710d00200041096a2d0000211d200541a0016a2000280200108905200541306a20052802a001220a20052802a801221e108a05200541e8016a41086a221f201741086a2220290000370300200541e8016a41106a2221201741106a2222290000370300200541e8016a41186a2223201741186a2224290000370300200541e8016a41206a2225201741206a2226290000370300200541e8016a41286a2227201741286a22282900003703002005201b280000360298022005201c28000036009b02200520172900003703e801200541306a41306a2129200541306a41206a212a200541306a41106a212b0240024020052d003022004102470d00410221000c010b20292903002119202a290300212c202b290300212d200529035821182005290348212e2005290338212f200541b0016a41086a201f290300370300200541b0016a41106a2021290300370300200541b0016a41186a2023290300370300200541b0016a41206a2025290300370300200541b0016a41286a20272903003703002005200528009b023600e30120052005280298023602e001200520052903e8013703b00120000d004200201920047d2018200354ad7d2230201820037d2231201856203020195620302019511b22001b21194200203120001b211802400240201d4101710d004200202c20027d202e200154ad7d2230202e20017d2231202e562030202c562030202c511b22001b212c4200203120001b212e0c010b4200202d20027d202f200154ad7d2230202f20017d2231202f562030202d562030202d511b22001b212d4200203120001b212f0b410021000b201b20052802e001360000201720052903b00137030020292019370300202a202c370300202b202d370300201c20052800e3013600002020200541b0016a41086a2903003703002022200541b0016a41106a2903003703002024200541b0016a41186a2903003703002026200541b0016a41206a2903003703002028200541b0016a41286a290300370300200520183703582005202e3703482005202f370338200520003a00300240024020004102470d00200a201e10ff010c010b200541003602f001200542013703e801200541306a200541e8016a10bc05200a201e20052802e801220020052802f00110b20120052802ec01450d002000102e0b20052802a401450d00200a102e0b20092100201a2009470d000b0b20082117200d2100201021090c010b4200200b20047d200c200354ad7d2218200c20037d2219200c562018200b562018200b511b22091b210b4200201920091b210c4200201620027d2015200154ad7d2218201520017d2219201556201820165620182016511b22091b21164200201920091b2115410121090b20054180016a200b370300200541f8006a200c370300200541f0006a2016370300200541e8006a2015370300200541d8006a2013370300200541d0006a2012370300200541c8006a2011370300200541306a41106a200e370300200541e0006a20143703002005413c6a2010360200200541306a41086a200f36020020054188016a200529031037030020054190016a200541106a41086a29030037030020054198016a200541106a41106a290300370300200520052f012c3b00312005201736023420052005412c6a41026a2d00003a0033200520003a00300240024020004102470d002006200710ff010c010b200541e8016a200541306a10c2042006200720052802e801220a20052802f00110b201024020052802ec01450d00200a102e0b20000d00200f450d00200f41306c450d002017102e0b02402005280204450d002006102e0b200541a0026a240020090bad0802057f027e23004180026b2203240020034180016a20022802002204200241086a280200220510b001200341206a41186a20034180016a41186a290000370300200341206a41106a20034180016a41106a290000370300200341206a41086a20034180016a41086a290000370300200320032900800137032020034180016a200341206a1098082003280280012206200328028801108f0221070240200328028401450d002006102e0b0240024002402007450d002000410c1093080c010b200341106a2005ad42004280c2d72f420010e80820034180016a200120032903102208200341106a41086a290300220910c3022003200329008101370360200320034180016a41086a2207280000360067024020032d00800122064106470d0020034180016a41186a2206420037030020034180016a41106a2205420037030020074200370300200342003703800120034180016a41d9fcc6004106108102200341e0006a4180f4cb0041061081022006200341e0006a41086a220729000037030020052003290060370300200341086a20034180016a4120108e02200328020c210620032802082105200341cc006a200241086a28000036000020032002290000370044200341c8016a2009370300200341c0016a2008370300200341a1016a2003290041370000200341a8016a200341c8006a290000370000200341b4016a4100360200200341b0016a2006410020051b36020020034189016a200141086a29000037000020034191016a200141106a29000037000020034199016a200141186a290000370000200341013a0080012003200129000037008101200341e0006a41186a200341206a41186a290300370300200341e0006a41106a200341206a41106a2903003703002007200341206a41086a29030037030020032003290320370360200341d0006a200341e0006a10be082003280250210220032802582107200341003602682003420137036020034180016a200341e0006a10ac082002200720032802602206200328026810b20102402003280264450d002006102e0b02402003280254450d002002102e0b0240200341a8016a280200450d00200341a4016a280200102e0b200341d8016a2009370300200341d0016a200837030020034180016a41086a410b3a000020034191016a200341206a41086a29030037000020034199016a200341206a41106a290300370000200341a1016a200341206a41186a290300370000200341a9016a2001290000370000200341b1016a200141086a290000370000200341b9016a200141106a290000370000200341c1016a200141186a290000370000200341093a00800120034180016a41096a200329032037000020034180016a10fe01200041063a00000c020b200020063a000020002003290360370001200041086a20032800673600000b200241046a280200450d002004102e0b20034180026a24000bab0a07037f017e017f017e017f027e037f230041f0016b22032400200341f0006a20022802002204200228020810b001200341106a41186a200341f0006a41186a22052900002206370300200341106a41106a200341f0006a41106a22072900002208370300200341106a41086a200341f0006a41086a2209290000220a37030020032003290070220b370310200341003a004020052006370300200720083703002009200a3703002003200b370370200341d0006a200341f0006a10be08200341086a200328025022052003280258200341c0006a4101410010ca0402400240024020032802080d00200341f0006a410d10930820032802540d010c020b0240024002400240200328020c450d0020032d00400e020102000b4190c1cb00412910ef02200341f0006a410d1093080c020b200341063a00700c010b200341f0006a410c1093080b2003280254450d010b2005102e0b200320032900713703302003200341f0006a41086a2800003600370240024002400240024020032d007022054106470d00200341d0006a200341106a109808200341f0006a20032802502207200328025810ad052003280254210520032d007022094102460d0120034198016a280200210c20034194016a280200210d2003280274210e02402005450d002007102e0b20090d02200341f0006a41186a22054200370300200341f0006a41106a22074200370300200341f0006a41086a420037030020034200370370200341f0006a41d9fcc6004106108102200341d0006a4180f4cb0041061081022005200341d0006a41086a2209290000370300200720032900503703002003200341f0006a4120108e0220032802042105200328020021072003413b6a200241086a28000036000020032002290000370033200341b8016a4200370300200341b0016a420037030020034191016a200329003037000020034198016a200341376a290000370000200341a8016a200e360200200341a4016a4101360200200341a0016a2005410020071b360200200341f9006a200141086a29000037000020034181016a200141106a29000037000020034189016a200141186a290000370000200341013a007020032001290000370071200341d0006a41186a200341106a41186a290300370300200341d0006a41106a200341106a41106a2903003703002009200341106a41086a29030037030020032003290310370350200341c0006a200341d0006a10be0820032802402102200328024821052003410036025820034201370350200341f0006a200341d0006a10ac082002200520032802502207200328025810b20102402003280254450d002007102e0b02402003280244450d002002102e0b024020034198016a280200450d0020034194016a280200102e0b200341c8016a4200370300200341c0016a4200370300200341f0006a41086a410b3a000020034181016a200341106a41086a29030037000020034189016a200341106a41106a29030037000020034191016a200341106a41186a29030037000020034199016a2001290000370000200341a1016a200141086a290000370000200341a9016a200141106a290000370000200341b1016a200141186a290000370000200341093a0070200341f0006a41096a2003290310370000200341f0006a10fe01200041063a00000c040b200020053a000020002003290330370001200041086a20032800373600000c020b02402005450d002007102e0b2000410d1093080c010b0240200c450d00200d102e0b2000410c1093080b200241046a280200450d002004102e0b200341f0016a24000bf50101047f230041306b22022400200241de80ca004109108102200241106a41f780ca004109108102024002404120102c2203450d002002422037022420022003360220200241206a20014120107420022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102c2204450d010b20042003200110e908210402402002280224450d002003102e0b200141206a2203417f4c0d012003102c2205450d0020004100360208200020033602042000200536020020002002411010742000200241106a41101074200020042001107402402001450d002004102e0b200241306a24000f0b1036000b1038000b8e1d08077f067e0a7f017e017f057e017f067e23004190046b22042400200441a0026a2002108905200441d0026a20042802a002220520042802a802108a05200441d0036a41086a220620044190036a290300370300200441d0036a41106a220720044198036a290300370300200441d0036a41186a2208200441a0036a290300370300200441d0036a41206a2209200441a8036a290300370300200441d0036a41286a220a200441b0036a290300370300200420044188036a2903003703d00320044180036a290300210b200441d0026a41286a290300210c200441d0026a41206a290300210d200441d0026a41186a290300210e200441d0026a41106a290300210f200441d0026a41086a290300211020042802d402211120042d00d1022112024020042d00d00222134102460d00200441e0006a41286a200a290300370300200441e0006a41206a2009290300370300200441e0006a41186a2008290300370300200441e0006a41106a2007290300370300200441e0006a41086a2006290300370300200420042903d0033703600b024020042802a402450d002005102e0b200441a0016a41286a2205200441e0006a41286a290300370300200441a0016a41206a2206200441e0006a41206a290300370300200441a0016a41186a2207200441e0006a41186a290300370300200441a0016a41106a2214200441e0006a41106a290300370300200441a0016a41086a2215200441e0006a41086a290300370300200420042903603703a001200441d0016a200110b808200441d0026a20042802d001221620042802d80110b105200441a0026a41026a220120042d00d3023a0000200441d0036a41086a2004419c036a290200370300200441d0036a41106a2217200441a4036a290200370300200441d0036a41186a2218200441ac036a290200370300200441d0036a41206a2219200441b4036a290200370300200441d0036a41286a221a200441bc036a280200360200200420042f00d1023b01a002200420044194036a2902003703d0030240024020042d00d00222094102470d004200211b4100210a4100211c4200211d4200211e4200211f42002120420021214100212241082108410021090c010b20044188036a290300212120044180036a2903002120200441d0026a41286a290300211f200441d0026a41206a290300211e200441d0026a41186a290300211d200441d0026a41106a290300211b20044190036a2802002122200441dc026a280200211c200441d0026a41086a280200210a20042802d40221082004418c026a41026a20012d00003a0000200441e0016a41086a200441d0036a41086a290300370300200441e0016a41106a2017290300370300200441e0016a41186a2018290300370300200441e0016a41206a2019290300370300200441e0016a41286a201a280200360200200420042f01a0023b018c02200420042903d0033703e0010b200441a0026a41286a2005290300370300200441a0026a41206a2006290300370300200441a0026a41186a2007290300370300200441a0026a41106a2014290300370300200441a0026a41086a2015290300370300200420042903a0013703a0020240024002400240024020090d004100210102400240024002400240024002400240024002400240201c0e020201000b41002101201c2105034020012005410176220620016a22072008200741306c6a28020020024b1b2101200520066b220541014b0d000b0b2008200141306c6a2802002002470d002013410371417f6a0e020208010b20044190026a41161093080c0a0b200441d0036a41286a200441a0026a41286a290300370300200441d0036a41206a200441a0026a41206a290300370300200441d0036a41186a200441a0026a41186a290300370300200441d0036a41106a200441a0026a41106a290300370300200441d0036a41086a200441a0026a41086a290300370300200420042903a0023703d00302402003450d0020044190026a41171093080c0a0b201c20014d0d012008200141306c6a220541186a2903002123200541106a29030021240240024020052d000822064101470d00200541286a2903002125200541206a2903002126200441186a20242023420a420010e708200441086a20262025420a420010e708200c20247d2227200c56200b20237d200c202454ad7d2224200b562024200b511b0d01202720267d2228202756202420257d2027202654ad7d220c202456200c2024511b0d0120102004290318220b7d2224201056200f200441186a41086a2903007d2010200b54ad7d220b200f56200b200f511b0d01200e2004290308220f7d2223200e56200d200441086a41086a2903007d200e200f54ad7d220e200d56200e200d511b450d070c010b200541096a2d00002107024002402005410a6a2d0000221441ff0171450d0041062105024002400240024002400240024020144107710e0700010203040506000b410021050c050b410121050c040b410221050c030b410321050c020b410421050c010b410521050b200441386a202342002005ad2226420010e808200441c8006a202442002026420010e808427f200441d0006a290300222620042903387c2225200429034042005220252026547222051b2125427f200429034820051b21260c010b200441286a20242023420a420010e708200441306a2903002125200429032821260b200c20247d2228200c56200b20237d200c202454ad7d220c200b56200c200b511b0d000240200741ff01710d00200e20267d2223200e56200d20257d200e202654ad7d220e200d56200e200d511b0d0120060d06200741ff01714102460d064200200e201d7d2023201b54ad7d220b2023201b7d220d202356200b200e56200b200e511b22051b210e4200200d20051b21234200200c201f7d2028201e54ad7d220b2028201e7d220d202856200b200c56200b200c511b22051b210c4200200d20051b21280c060b201020267d2224201056200f20257d2010202654ad7d220b200f56200b200f511b450d040b20044190026a411a1093080c090b201c20014d0d012008200141306c6a22052d00080d05200541096a2d000045201241ff0171410047460d05200541186a290300210b200541106a290300210c4180c09306210602400240024002400240024002402005410a6a2d00004107710e0700010203040506000b410021060c050b4180ce1821060c040b41809c3121060c030b4180b8e20021060c020b4180f0c40121060c010b4180e0890321060b200441e8026a22054200370300200441e0026a22074200370300200441d0026a41086a4200370300200442003703d002200441d0026a41d9fcc6004106108102200441d0036a4180f4cb0041061081022005200441d0036a41086a290000370300200720042900d003370300200441d8006a200441d0026a4120108e02200428025c410020042802581b200620116a22054f0d0502402003450d0020044190026a41171093080c090b2021200b2020200c562021200b562021200b511b22061b21212020200c20061b212020222005202220054b1b21220c050b2001201c41bcc1cb00103c000b2001201c41ccc1cb00103c000b024020060d00200741ff01714102460d004200200b201d7d2024201b54ad7d220f2024201b7d2210202456200f200b56200f200b511b22051b210b4200201020051b21244200200c201f7d2028201e54ad7d220f2028201e7d2210202856200f200c56200f200c511b22051b210c4200201020051b21280b200e2123200d210e0c010b20102124200f210b0b20044180036a200c370300200441d0026a41286a2028370300200441d0026a41206a200e370300200441d0026a41186a2023370300200441d0026a41106a200b37030020044188036a20042903d00337030020044190036a200441d8036a29030037030020044198036a200441d0036a41106a290300370300200441a0036a200441d0036a41186a290300370300200441a8036a200441d0036a41206a290300370300200441b0036a200441d0036a41286a290300370300200420243703d802200441003a00d002200441c0036a200210890520042802c803210620042802c003210520044100360288042004420137038004200441d0026a20044180046a10bc0520052006200428028004220720042802880410b2010240200428028404450d002007102e0b20042802c403450d002005102e0b201c20014d0d012008200141306c6a2205200541306a201c2001417f736a41306c10ea081a201c417f6a211c0b200441063a0090020c020b2001201c1046000b20042d00900222014106460d0020042004290091023703d003200420044198026a2800003600d70320090d01200a450d01200a41306c450d012008102e0c010b20044188036a202137030020044180036a2020370300200441d0026a41286a201f370300200441d0026a41206a201e370300200441d0026a41186a201d370300200441d0026a41106a201b37030020044190036a2022360200200441dc026a201c360200200441d0026a41086a200a36020020044194036a20042903e0013702002004419c036a200441e0016a41086a290300370200200441a4036a200441e0016a41106a290300370200200441ac036a200441e0016a41186a290300370200200441b4036a200441e0016a41206a290300370200200441bc036a200441e0016a41286a280200360200200420042f018c023b00d102200420083602d40220042004418c026a41026a2d00003a00d302200420093a00d00220042802d801210120042802d00121160240024020094102470d002016200110ff010c010b200441d0036a200441d0026a10c2042016200120042802d003220520042802d80310b20120042802d403450d002005102e0b024020090d00200a450d00200a41306c450d002008102e0b20042004290091023703d003200420044198026a2800003600d703410621010b024020042802d401450d002016102e0b200420042903d00337039001200420042800d7033600970141062105024020014106460d002000200429039001370001200041086a200428009701360000200121050b200020053a000020044190046a24000bf30201037f024002400240024002400240024020002d0000417f6a0e0c000606060106020304060605060b200041046a2802004102490d05200041106a2802002201450d05200041146a280200450d052001102e0f0b200041086a280200450d04200041046a280200102e0c040b200041046a2802000d032000410c6a2802002201450d03200141286c450d03200041086a280200102e0f0b200041046a2d00004102490d020240200041106a2802002201450d00200141d0006c2102200041086a28020041c4006a21010340024020012802002203450d00200341306c450d002001417c6a280200102e0b200141d0006a2101200241b07f6a22020d000b0b2000410c6a2802002201450d02200141d0006c450d022000280208102e0f0b200041086a2d00004101470d01200041146a28020041ffffff3f71450d01200041106a280200102e0f0b200041086a2d00000d00200041106a2802002201450d00200141306c450d002000410c6a280200102e0f0b0b130020004100360204200041d4e2cc003602000b13002000410a360204200041b4cccb003602000b3400200041d9fcc60036020420004100360200200041146a4110360200200041106a41dce6cb00360200200041086a42063702000b130020004106360204200041b883cc003602000b920101017f230041c0006b22022400200241386a41002903e8f846370300200241306a41002903e0f846370300200241286a41002903d8f846370300200241206a41002903d0f846370300200241186a41002903c8f846370300200241106a41002903c0f846370300200241086a41002903b8f846370300200241002903b0f84637030020002002108707200241c0006a24000b4c01017f230041106b220224002000410036020820004201370200200242c0f0f50b3703082000200241086a4108107420024280c2d72f3703082000200241086a41081074200241106a24000b4301027f230041106b2202240002404104102c22030d001036000b2000420437020420002003360200200241e01236020c20002002410c6a41041074200241106a24000b6101017f230041106b2202240020004100360208200042013702002002418080f0013602082000200241086a410410742002418080c00236020c20002002410c6a410410742002418080c0023602042000200241046a41041074200241106a24000b7701017f230041c0016b22022400200210a9032000410036020820004201370200200220022903003703b8012000200241b8016a41081074200220022903083703b8012000200241b8016a41081074200241106a200010a207200241c8006a200010a20720024180016a200010a207200241c0016a24000b8726040c7f0a7e037f0e7e230041f0036b22052400200541d0016a200010e505200541f0026a20052802d001220620052802d80110f402200541206a41086a2207200541f9026a290000370300200541206a41106a220820054181036a290000370300200541206a41186a220920054189036a290000370300200520052900f1023703204100210a024020052d00f0024101470d0020054190026a41186a200929030037030020054190026a41106a200829030037030020054190026a41086a200729030037030020052005290320370390024101210a0b024020052802d401450d002006102e0b0240200a450d00200541186a20054190026a41186a2206290300370300200541106a20054190026a41106a2207290300370300200541086a20054190026a41086a22082903003703002005200529039002370300200541c0016a200510d305200541f0026a20052802c001220920052802c80110e60520054198016a41086a220b200541f0026a41086a29030037030020054198016a41106a220c200541f0026a41106a29030037030020054198016a41186a220d200541f0026a41186a29030037030020082005419c036a2902003703002007200541a4036a2902003703002006200541ac036a29020037030020054190026a41206a220e200541b4036a29020037030020054190026a41286a220f200541bc036a29020037030020054190026a41306a2210200541c4036a280200360200200520052903f002370398012005200529029403370390020240200528029003220a450d00200541f8006a41186a200d290300370300200541f8006a41106a200c290300370300200541f8006a41086a200b290300370300200541d0016a41086a2008290300370300200541d0016a41106a2007290300370300200541d0016a41186a2006290300370300200541d0016a41206a200e290300370300200541d0016a41286a200f290300370300200541d0016a41306a2010280200360200200520052903980137037820052005290390023703d0010b024020052802c401450d002009102e0b200a450d00200541c4006a20052903d001370200200541206a41186a2206200541f8006a41186a290300370300200541206a41106a2207200541f8006a41106a290300370300200541206a41086a2208200541f8006a41086a290300370300200541cc006a200541d0016a41086a290300370200200541d4006a200541d0016a41106a290300370200200541dc006a200541d0016a41186a290300370200200541e4006a200541f0016a290300370200200541ec006a200541d0016a41286a290300370200200541f4006a20054180026a280200360200200520052903783703202005200a360240200542003703f80220054280c8afa0253703f00220082903002111200529032021120240024020072903002213200120132001542006290300221420025420142002511b22071b22152014200220071b22168450450d0020122117201121180c010b2006201420167d2013201554ad7d22193703002005201320157d22173703300240024020174280c8afa0255620194200522019501b450d0020152113201621140c010b200541386a420037030020054200370330201920027c201720017c2201201754ad7c21020b20054200201120147d2012201354ad7d2215201220137d2219201256201520115620152011511b22061b221837032820054200201920061b2217370320200220147d2001201354ad7d2102200120137d21010b02400240024002400240024002400240200541206a41286a280200220641186c0d00410021062005280248210a0c010b200641186c2108200641037441786a41037641016a210b41002106024003400240200a2903002213200120012013562002200a41086a220929030022145620022014511b22071b22152014200220071b221684500d00200a201320157d2217370300200a201420167d2013201554ad7d221937030802400240201720052903f002562019200541f0026a41086a29030022185620192018511b450d002001211920152113201621140c010b200a4200370308200a4200370300200220197c200120177c2219200154ad7c21020b200541206a41086a220742002007290300220120147d20052903202215201354ad7d2216201520137d2217201556201620015620162001511b22071b221837030020054200201720071b2217370320200220147d2019201354ad7d2102201920137d210120092903002114200a29030021130b20132014844200520d01200a41186a210a200641016a2106200841686a22080d000b200b21060b2005280248220a2006490d010b200541003602480240200a20066b220a450d0002402006450d00200528024022072007200641186c6a200a41186c10ea081a200541286a2903002118200529032021170b2005200a3602480b2012201758201120185820112018511b0d05201220177d2214201256201120187d2012201754ad7d221320115620132011511b210a20054190026a200010c802200541f0026a200528029002220620052802980210c90220054190036a290300210120054188036a290300211520054180036a290300211620052903f802211220052903f00221020240200528029402450d002006102e0b42002013200a1b211142002014200a1b21184200211320024201520d0342002119201821172011211a2012201584201620018484500d04200541f0026a41c8006a2108200541f0026a41086a211b20054190026a41306a211020054190026a41206a211c41002106200541f0026a41386a210f200541f0026a41106a210d200541d0016a41286a210c200541d0016a41186a211d02400340200520003602bc0120054190026a200010c802200541f0026a200528029002220a20052802980210c902200f2903002119200541f0026a41306a22072903002102200541f0026a41206a220e2903002116200d29030021132005290398032101200529038803211720052903f802211420052903b003211220052903f0022115200541c0016a41086a200841086a290300370300200520082903003703c0010240024020154201510d0042002112200541d0016a41386a4200370300200541d0016a41306a4200370300200c4200370300200541d0016a41206a4200370300201d4200370300200541d0016a41106a4200370300200541d0016a41086a4200370300200542003703d001420021014200210242002114420021130c010b200c2002370300200541d0016a41306a2019370300200520013703f001200520143703d0012005201237038802200520173703e001200520133703d801200520163703e8010b0240200528029402450d00200a102e0b0240024020142013844200520d00200120052903e00184200529038002842002201d29030084200541d0016a41386a290300848450450d00420021014100210a0c010b200541d0016a41106a2903002114200541d0016a41306a290300211e200c290300211f200541d0016a41206a290300212020052903d801211320052903d00121154201210120052903e80121024101210a0b024020014201522209450d004200211442002112420021204200211f4200211e4200210242002115420021130b201821162011211702402006450d004200200220137c201420157c2201201454ad7c221920014280c8afa02554ad7d221620014280b8d0df5a7c22172001562016201956200142ffc7afa025561b220b1b22012011201842002017200b1b221956201120015620112001511b220b1b211720192018200b1b21160b2013201720132015201656201320175620132017511b220b1b22197d201520162015200b1b221354ad7d2101201520137d211502400240201620137d221a201720197d2016201354ad7d221684500d00201120197d2018201354ad7d201620022014201a56200220165620022016511b220b1b22177d201820137d2221201a2014200b1b221654ad7d211a200220177d2014201654ad7d2102201720197c201620137c2213201654ad7c2119202120167d2117201420167d21140c010b201120197d2018201354ad7d211a201820137d21170b200541f0026a41286a220b201f370300200541f0026a41186a20023703002007201e37030020052020370390032005201437038003200520153703f002200520013703f8022009ad212002400240427f201520147c221620162015542209200120027c2009ad7c221620015420162001511b22091b221f42ffc7afa02556427f201620091b22164200522016501b0d0020222016201520148420012002848422025022071b21222023201f20071b2123420021142002420052ad21020c010b20072903002124200b2903002125200e2903002126200d2903002127200529038803212820052903f802212920052903f002212a4201211442002102410121072012212b0b20054190026a41c8006a201a37030020054190026a41386a201937030020054190026a41286a202237030020054190026a41106a2001370300200520173703d002200520133703c002200520233703b0022005201537039802200520023703a80220052020370390020240200a2014420152720d00200520003602f0022000200541f0026a10bd060c040b200a410173220a2014420151720d01200520003602f00202402000200541f0026a10be0641ff0171220a4102460d00200a0d04200541d8026a290300211a200541c8026a2903002119200541b8026a2903002122200541a0026a290300210120052903d002211720052903c002211320052903b0022123200529039802211520052903a802210220052903900221200c050b024020070d002005201c3602f002200541f0026a10cc020b200520103602f002200541f0026a10cc02200641016a22064102470d000b420021130c040b2014420152200a71450d010c020b2006200a41b4b3c000104d000b200541e0026a200010c802200541f0026a20052802e002220a20052802e802220610c90220052903f0022113200541c0016a41086a2207200841086a290300370300200520082903003703c0010240024020134201510d00200541f8006a41086a4200370300200542003703780c010b200541f8006a41086a2007290300370300200520052903c0013703780b024020144201510d004200212a420021294200212642002125420021244200212b42002127420021280b20082005290378370300200541a0036a202537030020054190036a2028370300200541f0026a41106a2029370300200541f0026a41386a2024370300200841086a200541f8006a41086a290300370300200520263703980320052027370388032005202a3703f8022005202b3703b003200542013703f002200a2006201b10c805024020052802e402450d00200a102e0b20054190026a41106a2903002101200541b8026a290300212220054190026a41386a2903002119200541d8026a290300211a200529039802211520052903b002212320052903c002211320052903d0022117200529039002212020052903a80221020b024020204201520d00200541a8036a2001370300200541a0036a2015370300200541f0026a41086a41003a0000200541f9026a200029000037000020054181036a200041086a29000037000020054189036a200041106a29000037000020054191036a200041186a290000370000200541033a00f002200541f0026a10fe010b02400240200250450d00420021140c010b200541f0026a41086a20052802bc01220a41086a290000370300200541f0026a41106a200a41106a290000370300200541f0026a41186a200a41186a2900003703002005200a2900003703f002420121140b20054198016a41186a200541f0026a41186a220a290300220237030020054198016a41106a200541f0026a41106a2206290300220137030020054198016a41086a200541f0026a41086a2903002215370300200520052903f002221637039801200541a0036a202237030020054198036a2207202337030020062015370300200a200137030020054190036a2002370300200520143703f002200520163703f802200541f0026a10d20420052903f002500d01200520073602900220054190026a10cc020c010b42002119201821172011211a0b2004427f2004290300221420137c22132013201454220a200441086a2206290300221320197c200aad7c221420135420142013511b220a1b3703002006427f2014200a1b37030002402017201a84500d00200342002003290300221320177d22142014201356200341086a220a2903002214201a7d2013201754ad7d221320145620132014511b22061b370300200a4200201320061b3703000b42f3e885db96cddbb320200541206a41386a2005290320200541206a41086a290300411f1085062005200541206a10d205200541f0026a41386a2011370300200541a0036a2018370300200541f0026a41086a41023a0000200541f9026a200029000037000020054181036a200041086a29000037000020054189036a200041106a29000037000020054191036a200041186a290000370000200541043a00f002200541f0026a10fe010b02402005280244220a450d00200a41186c450d002005280240102e0b200541d0006a28020041ffffffff0371450d00200528024c102e0b200541f0036a24000b130020004103360204200041d490cc003602000b0600200010150ba40301097f230041206b220224000240024020012802082203410c6c41046a2204417f4c0d00200128020021050240024020040d00410121060c010b2004102c2206450d020b20024100360208200220043602042002200636020020032002107602402003450d0020052003410c6c6a210720052104034020042802002106200441086a28020022082002107620022006200810742004410c6a22042007470d000b0b20022802042106200241186a2208200235020842208620022802002209ad84100c220441186a290000370300200241106a2207200441106a290000370300200241086a220a200441086a290000370300200220042900003703002004102e200041186a2008290300370000200041106a2007290300370000200041086a200a2903003700002000200229030037000002402006450d002009102e0b02402003450d002003410c6c21062005210403400240200441046a280200450d002004280200102e0b2004410c6a2104200641746a22060d000b0b0240200141046a2802002204450d002004410c6c450d002005102e0b200241206a24000f0b1038000b1036000b3b02017e017f0240024010292201422088a722020d0020004101360200410021020c010b20002001a73602000b20002002360208200020023602040b130020002002ad4220862001ad84102010da080b130020004107360204200041f4aacc003602000b3400200041b4c3cb0036020420004100360200200041146a4102360200200041106a41fcb6cc00360200200041086a42133702000b3400200041f4c2cc0036020420004100360200200041146a4101360200200041106a418cc3cc00360200200041086a42183702000bcf0403017f017e037f230041b0016b22032400024002402001200210062204422088a72201450d002001417f6a21050240024002402004a722062d00000e020001030b41002101200341003a0069200641016a21070240034020052001460d01200341c8006a20016a200720016a2d00003a00002003200141016a22023a00692002210120024121460d030c000b0b200141ff0171450d02200341003a00690c020b2005450d014100210202400240024020062d00010e03020100040b410221020c010b410121020b200341086a41186a200341c8006a41186a290000370300200341086a41106a200341c8006a41106a290000370300200341086a41086a200341c8006a41086a2900003703002003200329004837030841012105200341086a21010c020b200341f0006a41086a2201200341d1006a290000370300200341f0006a41106a2205200341d9006a290000370300200341f0006a41186a2207200341e1006a29000037030020032003290049370370200241ff017141204d0d0020032d00482102200341286a41186a20072903002204370300200341086a41086a2001290300370300200341086a41106a2005290300370300200341086a41186a20043703002003200329037037030841002105200341086a21010c010b41cae0cc00412e200341c8006a41f8e0cc004188e1cc00103e000b200020023a0001200020053a0000200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a2900003700002006102e200341b0016a24000b130020004105360204200041e4c6cc003602000bba0203027f027e037f230041206b22022400200241106a41086a2203200141086a28020036020020022001290200370310200241106a10bb070240024020032802002201410574418101490d00200041bdd8cc0036020420004101360200200041086a411d3602000c010b0240024020010d0042002104420021050c010b2002280210220341786a21062003200141027422016a417c6a280200210741002103200241086a21084200210442002105034020022007ad4200200341e0007110ed08200829030020057c2002290300220520047c2204200554ad7c210520014104460d01200341206a2103200620016a28020021072001417c6a21010c000b0b20004100360200200041106a2005370300200041086a20043703000b0240200228021441ffffffff0371450d002002280210102e0b200241206a24000bd003030a7f017e027f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b200610322208450d020b20002008360200200041086a200736020020002006410276360204024020050d00410021000c050b2007417f6a21062004417f6a220920044b210a200741027420086a417c6a210b2002280200210c410021024200210d03404100210002402003417f6a220e20034b0d00410021002003200e20026b220f4d0d0041002100200f200e4b0d002001280200200f4102746a28020021000b4100210e0240200a0d002004200920026b220f4d0d00200f20094b0d00200c200f4102746a280200210e0b200720064d0d03200b200d2000ad7c200ead7c220d3e0200200b417c6a210b2006417f6a2106200d422088210d2005200241016a2202460d040c000b0b1038000b1036000b2006200741ecd8cc00103c000b200da721000b024020072005417f736a220620074f0d00200820064102746a20003602000240200141046a28020041ffffffff0371450d002001280200102e0b0f0b2006200741ecd8cc00103c000be30303047f017e057f230041106b22012400024002400240024002400240024020002802002202280200220341016a41004c0d002002200336020020002802042203280200220441016a41004c0d0120022903082105200320043602002000280208220441086a2802002206200028020c220728020022086b41016a220920064f0d024101200028021428020020086a6b22062000280210220841086a28020022006a220a20064f0d0302400240200542ffffffff0f560d00410021002005200428020020094102746a3502007e20032903084220862008280200200a4102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020072802006b22024d0d0620032802000d07200428020020024102746a3502002105200341003602002003200520032903087c370308410121000b200141106a240020000f0b41bcd9cc004118200141086a41d4d9cc0041f4d9cc00103e000b41bcd9cc004118200141086a41d4d9cc004184dacc00103e000b2009200641ccd7cc00103c000b200a200041ccd7cc00103c000b4194dacc004110200141086a41a4dacc0041b4dacc00103e000b2002200041ccd7cc00103c000b4194dacc004110200141086a41a4dacc0041c4dacc00103e000b1c002001280218419eeacc00410f2001411c6a28020028020c1100000b5601017f4104210502400240024002400240200041ff0171417f6a0e050001020304000b410021050c030b410121050c020b410221050c010b410321050b20052002ad4220862001ad842004ad4220862003ad8410010bbb0101047f230041206b22022400024002402001422088a722030d002002200336020c200241013602080c010b2002200336020c20022001a7220436020820042d0000210520022003417f6a36020c2002200441016a360208410021030240024020050e020100020b200241106a200241086a10db0820022802102203450d01200229021421010b20002001370204200020033602002004102e200241206a24000f0b41cae0cc00412e200241106a41f8e0cc004188e1cc00103e000bed0102047f017e230041106b22022400200241086a200110ab01024002400240024002402002280208450d00200041003602000c010b024020012802042203200228020c2204490d002004417f4c0d020240024020040d00410121050c010b200410322205450d04200128020421030b024020032004490d0020052001280200200410e9082103200128020422052004490d0520002004ad2206422086200684370204200020033602002001200520046b3602042001200128020020046a3602000c020b2005102e0b200041003602000b200241106a24000f0b1038000b1036000b2004200541b8b2c0001056000bec0101047f230041106b22022400024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0141012105410021040c020b1038000b2004102c22050d001036000b2002410036020820022004360204200220053602000240024020030d00200241003a000f20022002410f6a410110740c010b200241013a000f20022002410f6a41011074200141086a28020022042002107620022003200410740b20002002290300370204200041013602002000410c6a20022802082204360200200041106a2004ad422086200235020084370300200241106a24000bb10301047f230041c0006b22022400200028020021034101210002402001280218418c9dc000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042f4f99ee6eea3aaf9fe00520d012002200036020c2002411036021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241989dc0003602282002200241106a36023820042005200241286a103d0d020c010b2002200036020c2002411136021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241989dc0003602282002200241106a36023820042005200241286a103d0d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241a89dc0003602282002200241106a36023820002001200241286a103d21000b200241c0006a240020000b06002000100d0b06002000100e0be50102037f017e230041206b22022400024002400240200041046a2802002203200028020822046b20014f0d00200420016a22012004490d02200341017422042001200420014b1b22014104200141044b1bad420c7e2205422088a74541027421012005a721040240024020030d00200241003602100c010b200241186a410436020020022003410c6c360214200220002802003602100b200220042001200241106a107d200241086a280200210120022802004101460d0120002002280204360200200041046a2001410c6e3602000b200241206a24000f0b2001450d001036000b1038000b1c002001280218419eeacc00410f2001411c6a28020028020c1100000b1c002001280218419eeacc00410f2001411c6a28020028020c1100000bc00201057f230041106b22022400024002400240024020002d002c4101710d0002400240200028020022034125490d002000410c6a22042802002105200041086a28020021060c010b200041056a21062003210520002104412421030b024020052003470d0020022000410110fc06024020022802004101470d00200241086a2802000d0441d0f0cc00411141e4f0cc001039000b2000410c6a22042802002105200041086a28020021060b200620056a20014104743a00002004200428020041016a3602000c010b02400240200028020022044125490d002000410c6a2802002104200041086a28020021050c010b200041056a21050b2005450d022004450d02200420056a417f6a220420042d00002001723a00000b2000200028022c41016a36022c200241106a24000f0b1036000b4198eccc00413a41d4eccc00105d000b5801017e02400240200341c00071450d0020022003413f71ad882101420021020c010b2003450d002002410020036b413f71ad8620012003413f71ad220488842101200220048821020b20002001370300200020023703080baa0604017f017e017f057e230041206b22052400024002400240024002400240024002402004500d00420021062001200354200220045420022004511b0d052002500d05200541106a20032004200479a7200279a76b220741ff007110ed0842012007413f71ad862108200541186a29030021092005290310210a4200210603402001200a7d210b0240200220097d2001200a54ad7d220c4200530d0020062008842106200b20035a200c20045a200c2004511b450d03200b2101200c21020b200a4201882009423f8684210a20084201882108200942018821090c000b0b4200210c024020024200520d0020012001200380220620037e7d21010c060b0240200220035a0d0020052003200441c000200279a7200379a76b22076b413f20071b220741ff007110ed0842012007413f71ad86210c200541086a290300210a200529030021094200210b034002402002200a7d2001200954ad7d22084200530d00200120097d2101200c200b84210b20084200510d04200821020b2009420188200a423f86842109200c420188210c200a420188210a0c000b0b20022003510d0320022002200380220820037e7d210c0240200342ffffffff0f560d00200c422086200142208884220a200a200380220a20037e7d422086200142ffffffff0f838422092009200380220920037e7d2101200a4220862009842106200a42208820088421084200210c0c070b0240200120035a200c20045a200c2004511b0d00420021060c070b2004423f86200342018884210a2003423f862109428080808080808080807f21024200210403400240200c200a7d2001200954ad7d220b4200530d00200120097d210120022004842104200b4200510d04200b210c0b2009420188200a423f8684210920024201882102200a420188210a0c000b0b42002108200b21010c050b2001200380220a200b8421062001200a20037e7d21014200210c0c030b2001200380220a20048421062001200a20037e7d21014200210c0c030b20012001200280220620027e7d21014200210c420121080c020b2002210c0b420021080b2000200137031020002006370300200041186a200c37030020002008370308200541206a24000b3c01017f230041206b220524002005200120022003200410e508200529031021012000200541186a29030037030820002001370300200541206a24000b3c01017f230041206b220524002005200120022003200410e508200529030021012000200541086a29030037030820002001370300200541206a24000b6e01077e2000200342ffffffff0f832205200142208822067e220720034220882208200142ffffffff0f8322097e7c220a422086220b200520097e7c22053703002000200a200754ad422086200a42208884200820067e7c2005200b54ad7c200420017e200320027e7c7c3703080b3601017f02402002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b6f01017f02400240200020016b20024f0d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000c020b0b2002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5801017e02400240200341c00071450d0020012003413f71ad862102420021010c010b2003450d0020022003413f71ad2204862001410020036b413f71ad88842102200120048621010b20002001370300200020023703080b0bfef50c0200418080c0000be7f50c100010001c00000018020000050000006c6962726172792f616c6c6f632f7372632f7261775f7665632e7273c00010004b0000005a010000130000001200000004000000040000001300000014000000150000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f720012000000000000000100000016000000a800100018000000420200001c0000006c6962726172792f616c6c6f632f7372632f666d742e72732f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730050011000160000006601100016000000780f100001000000340110001c000000ee0400000d0000006c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273737761705f72656d6f766520696e6465782028697320292073686f756c64206265203c206c656e2028697320a401100014000000b801100017000000780f100001000000340110001c000000150500000d000000696e73657274696f6e20696e6465782028697320292073686f756c64206265203c3d206c656e202869732000f8011000120000006601100016000000780f100001000000340110001c000000450500000d00000072656d6f76616c20696e646578202869732000002c021000200000004c0210001200000012000000000000000100000017000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900003803100010000000480310002200000072616e676520656e6420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468205b2e2e2e5d00d00310000b000000da0d1000160000000f04100001000000b80d10000e000000c60d100004000000ca0d1000100000000f04100001000000d00310000b000000db03100026000000010410000800000009041000060000000f041000010000006279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620606018041000020000002e2e0000520410001b0000006500000014000000307800004004100012000000480310002200000072616e676520737461727420696e646578206c6962726172792f636f72652f7372632f666d742f6e756d2e727300010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff0900d6091000250000000a0000001c000000ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d00d6091000250000001a000000360000000006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a84066c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e7273000c0a100016000000220a10000d000000736c69636520696e64657820737461727473206174202062757420656e647320617420000003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf55900d100028000000520000003e00000000700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f000000000900d1000280000004b00000028000000900d10002800000057000000160000006c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f6620603d3d00003c0e100019000000550e100012000000670e10000c0000000f041000010000003c0e100019000000550e100012000000670e10000c00000020311300020000000f04100001000000617373657274696f6e206661696c65643a2060286c6566742020726967687429600a20206c6566743a2060602c0a2072696768743a2060426f72726f774572726f72426f72726f774d75744572726f7270616e69636b656420617420c10e100001000000c20e1000030000005431130000000000c00e100001000000c00e1000010000003a27272c2020202020000000ec0e1000200000003200000021000000ec0e10002000000033000000120000006c6962726172792f636f72652f7372632f666d742f6275696c646572732e72731c0f1000200000005a000000050000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72732c200000120000000c0000000400000018000000190000001a0000002c0a00001200000004000000040000001b0000001c0000001d00000028280a2c290a5d617373657274696f6e206661696c65643a202a63757272203e20313900520410001b000000e6010000050000005b000000cc0f10001b0000001308000016000000cc0f10001b0000000c0800001e0000006c6962726172792f636f72652f7372632f666d742f6d6f642e727330620001021200000001000000010000001e0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f73797374656d2f7372632f6c696d6974732e72734275696c6465722066696e6973686564207769746820606275696c645f6f725f70616e6963603b205468652070616e69632069732065787065637465642069662072756e74696d65207765696768747320617265206e6f7420636f727265637400fc0f100057000000aa01000016000000543113000000000000000000ffffffff00000000010000000000000082800000000000008a8000000000008000800080000000808b800000000000000100008000000000818000800000008009800000000000808a00000000000000880000000000000009800080000000000a000080000000008b800080000000008b0000000000008089800000000000800380000000000080028000000000008080000000000000800a800000000000000a0000800000008081800080000000808080000000000080010000800000000008800080000000801200000004000000040000001f00000001a8010001605354524f424576312e302e320000cc1110004f000000680000000d0000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6d65726c696e2d322e302e302f7372632f7374726f62652e727300f2121000190000000b1310001600000000000000200000000400000002000000000000000200000000000000030000000100000020000000040000000200000000000000020000000000000003000000cc1110004f000000880000000d000000b41210003e000000cc1110004f0000009100000009000000cc1110004f0000005e00000009000000cc1110004f0000005f00000009000000596f75207573656420746865205420666c61672c207768696368207468697320696d706c656d656e746174696f6e20646f65736e277420737570706f7274596f7520747269656420746f20636f6e74696e7565206f702020627574206368616e67656420666c61677320746f20000000cc1110004f0000007c00000015000000cc1110004f0000007d0000000d0000004661696c656420746f206465636f646520636f6d70616374207533322061743a496e76616c6964526f756e6457726f6e6757696e6e6572436f756e74536e617073686f74556e617661696c61626c654e706f73456c656374696f6e0012000000040000000400000020000000496e76616c6964566f7465496e76616c6964566f746572496e76616c696457696e6e6572496e76616c696453636f726500000000641410000e00000000000000741410000100000000000000000000007c141000010000000000000000000000841410000600000000000000543113000000000000000000000000008c141000010000000000000000000000941410000700000000000000543113000000000000000000000000009c14100001000000000000004e6577417574686f7269746965730000291510000d000000f3141000360000005061757365640000cc14100027000000526573756d656400a4141000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d417574686f726974794c69737400002813130056000000bd0000002e000000000000007415100007000000000000007c1510000300000000000000000000009415100004000000000000004f6666656e636500c248110004000000c64811000e000000a1fb120004000000b41510005500000009161000530000005c16100046000000a21610001d00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c61737420656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c736529205c5b6b696e642c2074696d65736c6f742c206170706c6965645c5d2e53746f72656452616e6765000000000000f81610000a0000000000000028b111000100000000000000000000000417100002000000000000004e657753657373696f6e000014171000590000006d17100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e74696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e000000004018100010000000000000005018100002000000000000000000000060181000020000000000000000000000701810000e00000000000000543113000000000000000000000000008018100001000000000000004261746368496e746572727570746564cbed120003000000113513000d000000bb1810005600000011191000240000004261746368436f6d706c6574656400008818100033000000204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e205c5b696e6465782c206572726f725c5d000000481910005a00000067000000120000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e302e302f7372632f636f6465632e7273436f646563206572726f724572726f720000c41910004c00000076060000240000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000000000000000100000021000000647c1200660000005c0000001f00000056524648617368565246526573756c747672662d696e7672662d6f7574436865636b547856657273696f6e436865636b47656e65736973436865636b4d6f7274616c697479000000081c10005a000000af050000350000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702e7273627450656e64696e675061796f7574496e76616c6964466565496e76616c696456616c75655265717569726543757261746f72556e657870656374656453746174757300000000000000341e10000e00000000000000441e1000020000000000000000000000741e10000c0000000000000000000000d41e10000e00000000000000e41e1000010000000000000000000000fc1e10000800000000000000000000003c1f10000f000000000000004c1f1000030000000000000000000000941f1000070000000000000000000000cc1f10001000000000000000e41e1000010000000000000000000000dc1f10001200000000000000000000006c2010000e00000000000000e41e10000100000000000000000000007c201000080000000000000000000000bc2010000c00000000000000c8201000020000000000000000000000f82010000a0000000000000000000000482110000c00000000000000e41e1000010000000000000000000000542110000900000000000000000000009c2110000c00000000000000e41e1000010000000000000000000000a82110000a0000000000000000000000f821100014000000000000000c2210000200000000000000000000003c2210000a0000000000000070726f706f73655f626f756e747900000000000048b6120005000000000000004db6120015000000000000002d2b10000b0000000000000042ec120007000000d42910001600000054311300000000006c0e1300340000005431130000000000c0ea110055000000ea291000550000003f2a10001a0000005431130000000000592a10003f000000982a10001a000000b22a10004a000000fc2a100031000000617070726f76655f626f756e74790000000000004623100009000000000000004f231000140000007c291000580000001f0211002b00000054311300000000004a0211002c0000005431130000000000f2eb12000b000000638711000800000036ec12000c00000070726f706f73655f63757261746f7200000000004623100009000000000000004f231000140000000000000075291000070000000000000085fc11002300000000000000e5ca100003000000000000004db6120015000000502910002500000054311300000000004a0211002c0000005431130000000000f2eb12000b000000638711000800000036ec12000c000000756e61737369676e5f63757261746f724c2610002000000054311300000000006c261000480000005431130000000000b42610005a0000000e2710004300000054311300000000005127100059000000aa27100058000000022810004e00000054311300000000005028100058000000a828100059000000012910004f0000005431130000000000f2eb12000b000000638711000800000036ec12000c0000006163636570745f63757261746f720000b625100026000000dc2510004b000000543113000000000027261000250000005431130000000000f2eb12000b000000638711000800000036ec12000c00000061776172645f626f756e7479000000004623100009000000000000004f2310001400000000000000b80411000b0000000000000085fc110023000000e6241000660000005431130000000000b82210004600000054311300000000004c251000230000006f251000470000005431130000000000f2eb12000b000000638711000800000036ec12000c000000636c61696d5f626f756e74793d2410003c0000005431130000000000792410004a0000005431130000000000c3241000230000005431130000000000f2eb12000b000000638711000800000036ec12000c000000636c6f73655f626f756e7479632310004f000000b2231000340000005431130000000000e623100033000000543113000000000019241000240000005431130000000000f2eb12000b000000638711000800000036ec12000c000000657874656e645f626f756e74795f657870697279000000004623100009000000000000004f231000140000000000000006f31200070000000000000042ec1200070000008c2210002c0000005431130000000000b8221000460000005431130000000000fe2210002400000022231000240000005431130000000000f2eb12000b000000638711000800000036ec12000c00000020457874656e6420746865206578706972792074696d65206f6620616e2061637469766520626f756e74792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265207468652063757261746f72206f66207468697320626f756e74792e202d2060626f756e74795f6964603a20426f756e747920494420746f20657874656e642e202d206072656d61726b603a206164646974696f6e616c20696e666f726d6174696f6e2e626f756e74795f6964436f6d706163743c426f756e7479496e6465783e2043616e63656c20612070726f706f736564206f722061637469766520626f756e74792e20416c6c207468652066756e64732077696c6c2062652073656e7420746f20747265617375727920616e64207468652063757261746f72206465706f7369742077696c6c20626520756e726573657276656420696620706f737369626c652e204f6e6c792060543a3a52656a6563744f726967696e602069732061626c6520746f2063616e63656c206120626f756e74792e202d2060626f756e74795f6964603a20426f756e747920494420746f2063616e63656c2e20436c61696d20746865207061796f75742066726f6d20616e206177617264656420626f756e7479206166746572207061796f75742064656c61792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265207468652062656e6566696369617279206f66207468697320626f756e74792e202d2060626f756e74795f6964603a20426f756e747920494420746f20636c61696d2e20417761726420626f756e747920746f20612062656e6566696369617279206163636f756e742e205468652062656e65666963696172792077696c6c2062652061626c6520746f20636c61696d207468652066756e647320616674657220612064656c61792e202d2060626f756e74795f6964603a20426f756e747920494420746f2061776172642e202d206062656e6566696369617279603a205468652062656e6566696369617279206163636f756e742077686f6d2077696c6c207265636569766520746865207061796f75742e20416363657074207468652063757261746f7220726f6c6520666f72206120626f756e74792e2041206465706f7369742077696c6c2062652072657365727665642066726f6d2063757261746f7220616e6420726566756e642075706f6e207375636365737366756c207061796f75742e204d6179206f6e6c792062652063616c6c65642066726f6d207468652063757261746f722e20556e61737369676e2063757261746f722066726f6d206120626f756e74792e20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865206052656a6563744f726967696e602061207369676e6564206f726967696e2e20496620746869732066756e6374696f6e2069732063616c6c656420627920746865206052656a6563744f726967696e602c20776520617373756d652074686174207468652063757261746f72206973206d616c6963696f7573206f7220696e6163746976652e204173206120726573756c742c2077652077696c6c20736c617368207468652063757261746f72207768656e20706f737369626c652e20496620746865206f726967696e206973207468652063757261746f722c2077652074616b6520746869732061732061207369676e20746865792061726520756e61626c6520746f20646f207468656972206a6f6220616e6420746865792077696c6c696e676c7920676976652075702e20576520636f756c6420736c617368207468656d2c2062757420666f72206e6f7720776520616c6c6f77207468656d20746f207265636f766572207468656972206465706f73697420616e64206578697420776974686f75742069737375652e20285765206d61792077616e7420746f206368616e67652074686973206966206974206973206162757365642e292046696e616c6c792c20746865206f726967696e2063616e20626520616e796f6e6520696620616e64206f6e6c79206966207468652063757261746f722069732022696e616374697665222e205468697320616c6c6f777320616e796f6e6520696e2074686520636f6d6d756e69747920746f2063616c6c206f7574207468617420612063757261746f72206973206e6f7420646f696e67207468656972206475652064696c6967656e63652c20616e642077652073686f756c64207069636b2061206e65772063757261746f722e20496e20746869732063617365207468652063757261746f722073686f756c6420616c736f20626520736c61736865642e2041737369676e20612063757261746f7220746f20612066756e64656420626f756e74792e63757261746f7220417070726f7665206120626f756e74792070726f706f73616c2e2041742061206c617465722074696d652c2074686520626f756e74792077696c6c2062652066756e64656420616e64206265636f6d65206163746976652050726f706f73652061206e657720626f756e74792e2060446174614465706f736974506572427974656020666f722065616368206279746520696e2060726561736f6e602e2049742077696c6c20626520756e72657365727665642075706f6e20617070726f76616c2c206f7220736c6173686564207768656e2072656a65637465642e202d206063757261746f72603a205468652063757261746f72206163636f756e742077686f6d2077696c6c206d616e616765207468697320626f756e74792e202d2060666565603a205468652063757261746f72206665652e202d206076616c7565603a2054686520746f74616c207061796d656e7420616d6f756e74206f66207468697320626f756e74792c2063757261746f722066656520696e636c756465642e202d20606465736372697074696f6e603a20546865206465736372697074696f6e206f66207468697320626f756e74792e6465736372697074696f6e00000000982c10000b0000000000000000000000a32c10000b0000000000000000000000000000000000000000000000000000000000000054311300b02c10000000000000000000c02c1000010000000000000001000000000000001dbf1100080000000105000000000000a32c10000b00000000000000c82c1000320000000000000000000000000000000000000054311300fc2c100000000000000000000c2d100001000000000000000000000000000000142d1000120000000105000000000000a32c10000b0000000000000042ec1200070000000000000000000000000000000000000054311300282d10000000000000000000382d100001000000000000000000000000000000402d10000f00000000000000000000004f2d1000100000000000000000000000000000000000000000000000000000000000000054311300602d10000000000000000000702d1000010000000000000001000000426f756e7479436f756e74426f756e7479496e646578000012000000000000000100000022000000f12d100030000000426f756e74793c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e000012000000000000000100000023000000d32d10001e000000426f756e74794465736372697074696f6e73000012000000000000000100000023000000b32d100020000000426f756e7479417070726f76616c735665633c426f756e7479496e6465783e0012000000000000000100000024000000782d10003b00000020426f756e747920696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f74207965742066756e6465642e20546865206465736372697074696f6e206f66206561636820626f756e74792e20426f756e7469657320746861742068617665206265656e206d6164652e204e756d626572206f6620626f756e74792070726f706f73616c7320746861742068617665206265656e206d6164652e000000000000000cf01100120000000000000057a912000c0000000000000054311300ac2f10000000000000000000bc2f1000010000000000000000000000c42f1000110000000000000057a912000c0000000000000054311300d82f10000000000000000000e82f1000010000000000000000000000f02f10001800000000000000a9f912000e000000000000005431130008301000000000000000000018301000010000000000000000000000203010001200000000000000a9f912000e0000000000000054311300343010000000000000000000443010000100000000000000000000004c3010001400000000000000fc0711000700000000000000543113006030100000000000000000007030100001000000000000000000000078301000120000000000000057a912000c00000000000000543113008c30100000000000000000009c30100001000000000000000000000038f011001300000000000000cbed1200030000000000000054311300a430100000000000000000005cf01100010000000000000012000000000000000100000025000000d63110003f000000426f756e74794465706f73697442617365000000120000000000000001000000260000009c3110003a000000426f756e74794465706f7369745061796f757444656c6179120000000000000001000000270000004631100056000000426f756e7479557064617465506572696f640000120000000000000001000000280000002b3110001b000000426f756e747943757261746f724465706f73697412000000000000000100000029000000d03010005b000000426f756e747956616c75654d696e696d756d00001200000000000000010000002a000000b43010001c0000001200000000000000010000002b000000204d696e696d756d2076616c756520666f72206120626f756e74792e2050657263656e74616765206f66207468652063757261746f722066656520746861742077696c6c20626520726573657276656420757066726f6e74206173206465706f73697420666f7220626f756e74792063757261746f722e20426f756e7479206475726174696f6e20696e20626c6f636b732e205468652064656c617920706572696f6420666f72207768696368206120626f756e74792062656e6566696369617279206e65656420746f2077616974206265666f726520636c61696d20746865207061796f75742e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120626f756e74792070726f706f73616c2e2054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e20626f756e7479206465736372697074696f6e2e000000000000004c3310000e000000000000005c331000010000000000000000000000643310000100000000000000000000006c3310000e000000000000007c3310000200000000000000000000008c3310000100000000000000000000009433100012000000000000005c331000010000000000000000000000a8331000010000000000000000000000b03310000d00000000000000c0331000020000000000000000000000d0331000010000000000000000000000d83310000d00000000000000e833100003000000000000000000000000341000010000000000000000000000083410000e000000000000005c33100001000000000000000000000018341000010000000000000000000000203410000e000000000000005c331000010000000000000000000000303410000100000000000000426f756e747950726f706f7365640000a32c10000b0000007d3510001f000000426f756e747952656a65637465640000a32c10000b000000d5d11200070000003935100044000000426f756e7479426563616d6541637469766500000035100039000000426f756e747941776172646564000000a32c10000b00000079e5120009000000c33410003d000000426f756e7479436c61696d6564000000a32c10000b000000d5d112000700000079e51200090000008034100043000000426f756e747943616e63656c656400005f34100021000000426f756e7479457874656e64656400003834100027000000204120626f756e74792065787069727920697320657874656e6465642e205c5b696e6465785c5d204120626f756e74792069732063616e63656c6c65642e205c5b696e6465785c5d204120626f756e747920697320636c61696d65642062792062656e65666963696172792e205c5b696e6465782c207061796f75742c2062656e65666963696172795c5d204120626f756e7479206973206177617264656420746f20612062656e65666963696172792e205c5b696e6465782c2062656e65666963696172795c5d204120626f756e74792070726f706f73616c2069732066756e64656420616e6420626563616d65206163746976652e205c5b696e6465785c5d204120626f756e74792070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e205c5b696e6465782c20626f6e645c5d204e657720626f756e74792070726f706f73616c2e205c5b696e6465785c5d1200000004000000040000002c0000002d0000002e00000012000000000000000100000021000000617373657274696f6e206661696c65643a2073656c662e6361702829203d3d206f6c645f636170202a203200003610005e0000002d0800000d0000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f6d6f642e72730000c012130056000000030100000100000000000000d0ff10001c000000000000001c1711000100000000000000000000004ab510000c00000000000000241711000100000000000000000000001eda11000c000000000000003c281200010000000000000000000000951c100010000000000000006c371000010000000000000000000000871c10000e00000000000000743710000100000000000000000000007b1c10000c000000000000007c371000010000000000000000000000711c10000a0000000000000084371000010000000000000000000000641c10000d000000000000008c3710000200000000000000000000002ada110009000000000000009c371000010000000000000093381000210000007b3810001800000065381000160000005138100014000000f63710001c000000123810003f000000a4371000520000002054686520626f756e746965732063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e204120626f756e7479207061796f75742069732070656e64696e672e20546f2063616e63656c2074686520626f756e74792c20796f75206d75737420756e61737369676e20616e6420736c617368207468652063757261746f722e20496e76616c696420626f756e7479206665652e20496e76616c696420626f756e74792076616c75652e205265717569726520626f756e74792063757261746f722e2054686520626f756e74792073746174757320697320756e65787065637465642ef838100066000000200000000e000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282900483513004d000000ff050000090000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f72696e675f736c696365732e727300002f00000060000000080000003000000031000000320000003300000034000000350000003600000014211300600000006f010000010000004c06130053000000a00000000f0000006d6f646c70792f70726f78795f5f5f5f00000000000000000000000000000000000000000000000000000000000000000000000007000000e020130023000000d8000000010000006d6f76655f636c61696d617474657374636c61696d5f6174746573746d696e745f636c61696d000000000000c03a10001800000000000000d83a1000010000000000000000000000e03a10001000000000000000f03a1000010000000000000000000000f83a10001000000000000000083b1000010000000000000000000000103b10000c000000000000001c3b10000200000000000000000000002c3b100010000000000000003c3b1000010000000000000000000000443b10001300000000000000583b10000100000000000000496e76616c6964457468657265756d5369676e6174757265523c10001c0000005369676e65724861734e6f436c61696d333c10001f00000053656e6465724861734e6f436c61696d0f3c100024000000506f74556e646572666c6f77af3b100059000000083c100007000000496e76616c696453746174656d656e748a3b10002500000056657374656442616c616e636545786973747300603b10002a00000020546865206163636f756e7420616c7265616479206861732061207665737465642062616c616e63652e2041206e65656465642073746174656d656e7420776173206e6f7420696e636c756465642e2054686572652773206e6f7420656e6f75676820696e2074686520706f7420746f20706179206f757420736f6d6520756e76657374656420616d6f756e742e2047656e6572616c6c7920696d706c6965732061206c6f676963206572726f722e204163636f756e742049442073656e64696e6720747820686173206e6f20636c61696d2e20457468657265756d206164647265737320686173206e6f20636c61696d2e20496e76616c696420457468657265756d207369676e61747572652e636c61696d7319457468657265756d205369676e6564204d6573736167653a0a50687261676d656e456c656374696f6e43616e6469646174657352756e6e65727355700000001421130060000000990300002c00000050726576616c696461746541747465737473507265636c61696d735175657565644b657973546f74616c4e6f206f746865722076657374696e67207363686564756c65206578697374732c20617320636865636b65642061626f76653b20716564000000120000000c0000000400000037000000e020130023000000bf01000012000000556e616e6e6f756e6365644475706c6963617465556e70726f787961626c654e6f7450726f7879546f6f4d616e794e6f53656c6650726f787900000000000000083e10000d00000000000000183e1000010000000000000000000000203e1000010000000000000000000000283e10001000000000000000383e1000040000000000000000000000583e1000020000000000000000000000683e10000900000000000000743e10000300000000000000000000008c3e1000010000000000000050726f78794578656375746564000000637a12000e000000863f10003b000000416e6f6e796d6f75734372656174656479e512000900000079e51200090000007d3f100009000000a50e130003000000e83e10003b000000233f10005a000000416e6e6f756e63656400000079e512000900000079e512000900000082e5120004000000943e10005400000020416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e205c5b7265616c2c2070726f78792c2063616c6c5f686173685c5d20416e6f6e796d6f7573206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e20646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e205c5b616e6f6e796d6f75732c2077686f2c2070726f78795f747970652c20646973616d626967756174696f6e5f696e6465785c5d50726f78795479706520412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e205c5b726573756c745c5d2e000000000000007c411000050000000000000084411000030000000000000000000000cc4110000f000000000000000000000044421000090000000000000050421000030000000000000000000000984210000d0000000000000000000000004310000c00000000000000504210000300000000000000000000000c4310000b0000000000000000000000644310000e0000000000000054311300000000000000000000000000744310000a0000000000000000000000c44310000900000000000000d043100003000000000000000000000018441000170000000000000000000000d04410000e00000000000000e044100005000000000000000000000058451000140000000000000000000000f845100008000000000000000046100002000000000000000000000030461000150000000000000000000000d8461000130000000000000000461000020000000000000000000000ec4610001000000000000000000000006c471000130000000000000080471000020000000000000000000000b0471000100000000000000000000000304810000f0000000000000040481000040000000000000000000000a0481000110000000000000070726f787900000000000000ef4a10000400000000000000e3f812000c00000000000000f34a10001000000000000000034b10001400000000000000a80e13000400000000000000ac0e130018000000b3581000540000007c4910000d0000005431130000000000894910002b00000054311300000000006c0e1300340000005431130000000000355f12000c000000b449100044000000f849100059000000514a1000350000005431130000000000f2eb12000b000000535210004000000036ec12000c0000006164645f70726f787900000000000000f48c12000800000000000000e3f812000c000000000000009a5210000a00000000000000a45210000c000000000000001fae12000500000000000000a9f912000e000000dc5710005200000054311300000000006c0e1300340000005431130000000000355f12000c0000002e58100045000000735810004000000007551000540000005b551000060000005431130000000000f2eb12000b000000535210004000000036ec12000c00000072656d6f76655f70726f7879165710002b00000054311300000000006c0e1300340000005431130000000000355f12000c000000415710004a0000008b571000510000005431130000000000f2eb12000b000000535210004000000036ec12000c00000072656d6f76655f70726f7869657300003b5610002e00000054311300000000006c0e13003400000054311300000000006956100056000000bf561000570000005431130000000000f2eb12000b000000535210004000000036ec12000c000000616e6f6e796d6f7573000000000000009a5210000a00000000000000a45210000c000000000000001fae12000500000000000000a9f912000e00000000000000a00e13000500000000000000a50e130003000000d65210004f00000025531000400000005431130000000000655310001c00000054311300000000008153100055000000d6531000540000002a5410001f00000049541000550000009e54100058000000f65410001100000007551000540000005b5510000600000054311300000000006155100055000000b6551000270000005431130000000000dd5510003a0000005431130000000000f2eb12000b000000535210004000000036ec12000c00000017561000240000006b696c6c5f616e6f6e796d6f7573000000000000935210000700000000000000e3f812000c000000000000009a5210000a00000000000000a45210000c00000000000000a00e13000500000000000000a50e13000300000000000000b05210000600000000000000b65210001700000000000000cd5210000900000000000000d2a012000c000000264f10002e0000005431130000000000544f100053000000a74f10000e0000005431130000000000b54f1000570000000c5010002b000000543113000000000037501000540000008b50100054000000df50100041000000205110005000000070511000530000005431130000000000c351100053000000165210003d0000005431130000000000f2eb12000b000000535210004000000036ec12000c000000616e6e6f756e636500000000ef4a10000400000000000000e3f812000c000000000000008cf010000900000000000000554c10000d000000294d10004200000054311300000000006b4d100058000000c34d10004a00000054311300000000000d4e1000450000005431130000000000524e100043000000954e1000470000005431130000000000dc4e10004a0000005431130000000000355f12000c000000b449100044000000e34c1000460000005431130000000000f2eb12000b000000864a1000190000009f4a100027000000c64a10002900000036ec12000c00000072656d6f76655f616e6e6f756e63656d656e7400624c10001d00000054311300000000007f4c100057000000d64c10000d00000054311300000000006c0e1300340000005431130000000000355f12000c000000b449100044000000e34c1000460000005431130000000000f2eb12000b000000864a1000190000009f4a100027000000c64a10002900000036ec12000c00000072656a6563745f616e6e6f756e63656d656e740000000000f48c12000800000000000000e3f812000c000000000000008cf010000900000000000000554c10000d000000174b10002d0000005431130000000000444b1000590000009d4b10004a00000054311300000000006c0e1300340000005431130000000000355f12000c000000e74b10003e000000254c1000300000005431130000000000f2eb12000b000000864a1000190000009f4a100027000000c64a10002900000036ec12000c00000070726f78795f616e6e6f756e6365640000000000f48c12000800000000000000e3f812000c00000000000000ef4a10000400000000000000e3f812000c00000000000000f34a10001000000000000000034b10001400000000000000a80e13000400000000000000ac0e13001800000028491000540000007c4910000d0000005431130000000000894910002b00000054311300000000006c0e1300340000005431130000000000355f12000c000000b449100044000000f849100059000000514a1000350000005431130000000000f2eb12000b000000864a1000190000009f4a100027000000c64a10002900000036ec12000c0000002044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676820606164645f70726f7879602e2052656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e202d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e202d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2e202d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e2057656967687420697320612066756e6374696f6e206f663a202d20413a20746865206e756d626572206f6620616e6e6f756e63656d656e7473206d6164652e202d20503a20746865206e756d626572206f662070726f78696573207468652075736572206861732e7265616c666f7263655f70726f78795f747970654f7074696f6e3c543a3a50726f7879547970653e2052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e204d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c65676174657320286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e202d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e43616c6c486173684f663c543e2052656d6f7665206120676976656e20616e6e6f756e63656d656e742e204d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e20746865206465706f7369742e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e205075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e2054686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d70746564206966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e204e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e20546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c2061732060416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e2052656d6f76657320612070726576696f75736c7920737061776e656420616e6f6e796d6f75732070726f78792e205741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626520696e61636365737369626c652e205265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746f2060616e6f6e796d6f757360207769746820636f72726573706f6e64696e6720706172616d65746572732e202d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c65642060616e6f6e796d6f75736020746f206372656174652074686973206163636f756e742e202d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e2050726f6261626c79206030602e202d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e202d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e202d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e204661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c79206372656174656420616e6f6e796d6f7573206163636f756e742077686f73652060616e6f6e796d6f7573602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e2057656967687420697320612066756e6374696f6e206f6620746865206e756d626572206f662070726f7869657320746865207573657220686173202850292e737061776e657270726f78795f74797065543a3a50726f787954797065686569676874436f6d706163743c543a3a426c6f636b4e756d6265723e6578745f696e64657820537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e6420696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e205265717569726573206120605369676e656460206f726967696e2e202d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f76657220746865206e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f20616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e202d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d65207472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573742077616e7420746f20757365206030602e202d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265207a65726f2e204661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468652073616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e204661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e20544f444f3a204d69676874206265206f76657220636f756e74696e672031207265616420556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e205741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e747320637265617465642062792060616e6f6e796d6f7573602c20686f776576657220696620646f6e652c207468656e2074686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e20526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e2044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f7567680000000000a82d1200070000000105000000000000e3f812000c00000000000000b85910005100000000000000000000000000000000000000543113000c5a100000000000000000001c5a100002000000000000000100000000000000af2d12000d0000000105000000000000e3f812000c000000000000002c5a10004f00000000000000000000000000000000000000543113007c5a100000000000000000008c5a1000010000000000000001000000285665633c50726f7879446566696e6974696f6e3c543a3a4163636f756e7449642c20543a3a50726f7879547970652c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e2900000012000000000000000100000038000000bf5a100051000000105b100048000000285665633c416e6e6f756e63656d656e743c543a3a4163636f756e7449642c2043616c6c486173684f663c543e2c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e290012000000000000000100000039000000945a10002b0000002054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e2054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e747320776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e00000000a85c1000100000000000000057a912000c0000000000000054311300b85c10000000000000000000c85c1000040000000000000000000000e85c1000120000000000000057a912000c0000000000000054311300fc5c100000000000000000000c5d1000050000000000000000000000345d10000a00000000000000a50e1300030000000000000054311300405d10000000000000000000505d1000010000000000000000000000585d10000a00000000000000cbed1200030000000000000054311300645d10000000000000000000745d10000100000000000000000000007c5d1000170000000000000057a912000c0000000000000054311300945d10000000000000000000a45d1000030000000000000000000000bc5d1000190000000000000057a912000c0000000000000054311300d85d10000000000000000000e85d1000040000000000000050726f78794465706f736974426173651200000000000000010000003a000000fa6010004400000054311300000000003e611000400000007e6110004900000050726f78794465706f736974466163746f7200001200000000000000010000003b000000e95f10002f0000005431130000000000186010005a0000007260100058000000ca601000300000004d617850726f7869657300001200000000000000010000003c000000ad5f10003c0000004d617850656e64696e6700001200000000000000010000003d0000005c5f100051000000416e6e6f756e63656d656e744465706f73697442617365001200000000000000010000003a000000b65e10004c0000005431130000000000025f10005a000000416e6e6f756e63656d656e744465706f736974466163746f720000001200000000000000010000003e000000085e10003500000054311300000000003d5e100056000000935e1000230000002054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e20546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c792036382062797465732920696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e20546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c79203136206279746573292e20546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e20546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e20546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b6520696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e20546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a65206973206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4e6f4b6579734475706c6963617465644b65794e6f4173736f63696174656456616c696461746f724964496e76616c696450726f6f664e6f4163636f756e7400000000000060621000080000000000000068621000020000000000000000000000986210000e0000000000000000000000086310000a0000000000000054311300000000000000000000000000146310000c000000000000007365745f6b657973000000007aee1200040000000000000042661000070000000000000049661000050000000000000042ec120007000000186510003a0000005265100048000000a7631000310000005431130000000000d8631000350000005431130000000000f2eb12000b000000c9e91100150000003a641000560000009a6510003c000000d665100029000000ff65100021000000206610002200000036ec12000c00000070757267655f6b65797300007463100033000000a7631000310000005431130000000000d8631000350000005431130000000000f2eb12000b0000000d6410002d0000003a64100056000000906410003c000000cc64100029000000f56410002300000036ec12000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e20202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460202d20446257726974657320706572206b65792069643a20604b65794f776e646572602053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360202d204462526561647320706572206b65792069643a20604b65794f776e657260202d20446257726974657320706572206b65792069643a20604b65794f776e657260543a3a4b65797370726f6f66000000000000f04e11000a0000000000000000000000b8681000130000000000000000000000000000000000000000000000000000000000000054311300cc6810000000000000000000dc68100001000000000000000100000000000000e46810000c0000000000000000000000a03712000c0000000000000000000000000000000000000000000000000000000000000054311300f068100000000000000000000069100001000000000000000100000000000000086910000d0000000000000000000000a1fb12000400000000000000000000000000000000000000000000000000000000000000543113001869100000000000000000002869100002000000000000000100000000000000df3c10000a0000000000000000000000386910001e0000000000000000000000000000000000000000000000000000000000000054311300586910000000000000000000686910000200000000000000010000000000000078691000120000000000000000000000e47311000800000000000000000000000000000000000000000000000000000000000000543113008c69100000000000000000009c69100003000000000000000100000000000000b4691000080000000105000000000000bc6910000e0000000000000042661000070000000000000000000000000000000000000054311300cc6910000000000000000000dc69100001000000000000000000000000000000e4691000080000000105000000000000ec6910001400000000000000bc6910000e0000000000000000000000000000000000000054311300006a10000000000000000000106a10000100000000000000000000005665633c543a3a56616c696461746f7249643e001200000000000000010000003f0000000a6c10001f00000043757272656e74496e64657812000000000000000100000022000000ec6b10001e0000005175657565644368616e67656400000012000000000000000100000023000000756b10004e000000c36b1000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e000012000000000000000100000040000000ee6a10004f0000003d6b10003800000044697361626c656456616c696461746f7273000012000000000000000100000024000000816a1000200000005431130000000000a16a10004d0000004e6578744b657973543a3a56616c696461746f7249640000120000000000000001000000230000005a6a1000270000004b65794f776e6572284b65795479706549642c205665633c75383e2912000000000000000100000023000000186a10004200000020546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e0000000000000078a710000500000000000000086d1000020000000000000000000000386d10001800000000000000000000000c3a10000a00000000000000f86d1000040000000000000000000000586e10000f0000000000000000000000003a10000c00000000000000d06e1000030000000000000000000000186f10001a0000000000000000000000fa3910000600000000000000e86f100001000000000000000000000000701000110000000000000000000000f03910000a0000000000000088701000030000000000000000000000543113000000000000000000000000005b0c12000400000000000000e3f812000c00000000000000b07510001200000000000000c27510000e000000477710002300000054311300000000006073100032000000543113000000000088711000150000006a77100042000000dd731000200000005431130000000000fd7310001b000000ac771000260000005431130000000000d27710002a0000005431130000000000355f12000c000000cd7410003700000004751000440000004875100028000000543113000000000080721000090000008972100040000000fc77100039000000543113000000000006731000170000008d8511000a00000000000000791b13000300000000000000d37010000f0000000000000048b61200050000000000000057a912000c00000000000000ee7610001000000000000000fe76100034000000000000001d73100009000000000000003277100015000000d075100022000000543113000000000075fa1100320000005431130000000000355f12000c000000f27510003d0000002f761000340000006376100043000000543113000000000080721000090000008972100040000000a676100048000000543113000000000006731000170000008d8511000a000000000000005b0c12000400000000000000e3f812000c00000000000000b07510001200000000000000c27510000e000000000000001d731000090000000000000042ec120007000000267310003a0000005431130000000000607310003200000054311300000000008871100015000000927310004b000000dd731000200000005431130000000000fd7310001b0000001874100031000000543113000000000049741000530000009c741000310000005431130000000000355f12000c000000cd7410003700000004751000440000004875100028000000267210005a0000005431130000000000807210000900000089721000400000007075100040000000543113000000000006731000170000008d8511000a000000000000001d731000090000000000000042ec120007000000f07010003e00000054311300000000002e7110005a000000543113000000000088711000150000009d7110004b000000e87110003e0000005431130000000000355f12000c000000267210005a000000543113000000000080721000090000008972100040000000c97210003d000000543113000000000006731000170000008d8511000a00000000000000d07010000300000000000000d37010000f00000000000000871913000300000000000000d37010000f00000000000000e27010000e000000000000002c701200140000006f6c64457468657265756d416464726573736d617962655f707265636c61696d2041747465737420746f20612073746174656d656e742c206e656564656420746f2066696e616c697a652074686520636c61696d732070726f636573732e205741524e494e473a20496e73656375726520756e6c65737320796f757220636861696e20696e636c75646573206050726576616c69646174654174746573747360206173206120605369676e6564457874656e73696f6e602e20556e7369676e65642056616c69646174696f6e3a20412063616c6c20746f20617474657374206973206465656d65642076616c6964206966207468652073656e6465722068617320612060507265636c61696d60207265676973746572656420616e642070726f76696465732061206073746174656d656e746020776869636820697320657870656374656420666f7220746865206163636f756e742e202d206073746174656d656e74603a20546865206964656e74697479206f66207468652073746174656d656e74207768696368206973206265696e6720617474657374656420746f20696e20746865207369676e61747572652e203c7765696768743e2054686520776569676874206f6620746869732063616c6c20697320696e76617269616e74206f7665722074686520696e70757420706172616d65746572732e2057656967687420696e636c75646573206c6f67696320746f20646f207072652d76616c69646174696f6e206f6e2060617474657374602063616c6c2e20546f74616c20436f6d706c65786974793a204f28312973746174656d656e74204d616b65206120636c61696d20746f20636f6c6c65637420796f757220444f5473206279207369676e696e6720612073746174656d656e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e20412063616c6c20746f2060636c61696d5f61747465737460206973206465656d65642076616c696420696620746865207369676e61747572652070726f7669646564206d61746368657320746865206578706563746564207369676e6564206d657373616765206f663a203e20457468657265756d205369676e6564204d6573736167653a203e2028636f6e666967757265642070726566697820737472696e67292861646472657373292873746174656d656e742920616e6420606164647265737360206d6174636865732074686520606465737460206163636f756e743b20746865206073746174656d656e7460206d757374206d617463682074686174207768696368206973206578706563746564206163636f7264696e6720746f20796f757220707572636861736520617272616e67656d656e742e202d206064657374603a205468652064657374696e6174696f6e206163636f756e7420746f207061796f75742074686520636c61696d2e202d2060657468657265756d5f7369676e6174757265603a20546865207369676e6174757265206f6620616e20657468657265756d207369676e6564206d657373616765202020206d61746368696e672074686520666f726d6174206465736372696265642061626f76652e2057656967687420696e636c75646573206c6f67696320746f2076616c696461746520756e7369676e65642060636c61696d5f617474657374602063616c6c2e657468657265756d5f7369676e617475726545636473615369676e6174757265204d696e742061206e657720636c61696d20746f20636f6c6c65637420444f54732e202d206077686f603a2054686520457468657265756d206164647265737320616c6c6f77656420746f20636f6c6c656374207468697320636c61696d2e202d206076616c7565603a20546865206e756d626572206f6620444f547320746861742077696c6c20626520636c61696d65642e202d206076657374696e675f7363686564756c65603a20416e206f7074696f6e616c2076657374696e67207363686564756c6520666f7220746865736520444f54732e20576520617373756d6520776f7273742063617365207468617420626f74682076657374696e6720616e642073746174656d656e74206973206265696e6720696e7365727465642e76657374696e675f7363686564756c654f7074696f6e3c2842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d626572293e4f7074696f6e3c53746174656d656e744b696e643e204d616b65206120636c61696d20746f20636f6c6c65637420796f757220444f54732e20412063616c6c20746f20636c61696d206973206465656d65642076616c696420696620746865207369676e61747572652070726f7669646564206d617463686573203e2028636f6e666967757265642070726566697820737472696e672928616464726573732920616e6420606164647265737360206d6174636865732074686520606465737460206163636f756e742e2057656967687420696e636c75646573206c6f67696320746f2076616c696461746520756e7369676e65642060636c61696d602063616c6c2e00000000000000b6281300060000000106000000000000d37010000f0000000000000057a912000c0000000000000000000000000000000000000054311300f079100000000000000000005431130000000000000000000000000000000000e93c100005000000000000000000000057a912000c0000000000000000000000000000000000000000000000000000000000000054311300007a100000000000000000005431130000000000000000000100000000000000bc2d1200070000000106000000000000d37010000f00000000000000107a10002c00000000000000000000000000000000000000543113003c7a100000000000000000004c7a100004000000000000000000000000000000bc281300070000000106000000000000d37010000f000000000000006c7a10000d00000000000000000000000000000000000000543113007c7a100000000000000000008c7a100001000000000000000000000000000000d63c1000090000000106000000000000e3f812000c00000000000000d37010000f0000000000000000000000000000000000000054311300947a10000000000000000000a47a100001000000000000000000000012000000000000000100000023000000120000000000000001000000410000002842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722912000000000000000100000023000000277b10001e000000457b100043000000887b100039000000c17b10003300000053746174656d656e744b696e6400000012000000000000000100000023000000f77a10003000000012000000000000000100000023000000ac7a10004b000000205072652d636c61696d656420457468657265756d206163636f756e74732c20627920746865204163636f756e74204944207468617420746865792061726520636c61696d656420746f2e205468652073746174656d656e74206b696e642074686174206d757374206265207369676e65642c20696620616e792e2056657374696e67207363686564756c6520666f72206120636c61696d2e2046697273742062616c616e63652069732074686520746f74616c20616d6f756e7420746861742073686f756c642062652068656c6420666f722076657374696e672e205365636f6e642062616c616e636520697320686f77206d7563682073686f756c6420626520756e6c6f636b65642070657220626c6f636b2e2054686520626c6f636b206e756d626572206973207768656e207468652076657374696e672073686f756c642073746172742e000000002c7c10000600000000000000327c1000050000000000000054311300387c10000000000000000000487c10000100000000000000507265666978265b75385d0012000000000000000100000042000000507c10004500000020546865205072656669782074686174206973207573656420696e207369676e656420457468657265756d206d6573736167657320666f722074686973206e6574776f726b00000000000000c47c10000700000000000000cc7c1000030000000000000000000000e47c10000100000000000000436c61696d65640079e5120009000000d37010000f000000d5d1120007000000ec7c10003b00000020536f6d656f6e6520636c61696d656420736f6d6520444f54732e205b77686f2c20657468657265756d5f616464726573732c20616d6f756e745d496e76616c696452656e6f756e63696e67496e76616c6964566f7465436f756e74496e76616c69645769746e65737344617461496e73756666696369656e7443616e64696461746546756e647352756e6e657255705375626d69744d656d6265725375626d69744475706c69636174656443616e6469646174655265706f727453656c664d7573744265566f746572556e61626c65546f506179426f6e644c6f7742616c616e63654d6178696d756d566f7465734578636565646564546f6f4d616e79566f7465734e6f566f746573556e61626c65546f566f7465496e76616c69645265706c6163656d656e7400000000d488120004000000000000001c7f10000200000000000000000000004c7f1000170000000000000000000000048010000c00000000000000543113000000000000000000000000001080100005000000000000000000000038801000100000000000000048801000010000000000000000000000608010000f0000000000000000000000d88010001200000000000000ec80100001000000000000000000000004811000110000000000000000000000e41613000d000000000000008c811000020000000000000000000000bc8110000e00000000000000000000002c821000140000000000000040821000020000000000000000000000708210000a0000000000000000000000398f100005000000000000002c1a1300110000000000000048b6120005000000000000004db6120015000000128c100057000000698c1000390000005431130000000000a28c100058000000fa8c10005400000054311300000000004e8d100014000000628d100012000000748d100056000000ca8d10004500000054311300000000000f8e1000540000005431130000000000498a10003100000054311300000000007a8a10000c0000005431130000000000638e100056000000b98e10002b0000005431130000000000f2eb12000b000000e48e10005500000036ec12000c00000072656d6f76655f766f746572878b10001c0000005431130000000000a38b10002f0000005431130000000000d28b1000400000007375626d69745f63616e64696461637900000000788b10000f00000000000000d2a012000c00000078891000450000005431130000000000bd89100058000000158a1000340000005431130000000000498a10003100000054311300000000007a8a10000c0000005431130000000000868a100058000000de8a1000570000005431130000000000f2eb12000b000000358b10004300000036ec12000c00000072656e6f756e63655f63616e646964616379000000000000648910000a000000000000006e8910000a0000001486100054000000688610001000000054311300000000007886100053000000cb8610003d000000088710005900000061871000240000008587100056000000db87100056000000318810005b0000008c8810004d0000005431130000000000d9881000520000005431130000000000f2eb12000b0000002b8910003900000036ec12000c00000000000000791b1300030000000000000085fc11002300000000000000058610000f00000000000000a1fb1200040000001d84100057000000748410002000000054311300000000009484100056000000ea8410004000000054311300000000007f8310002f00000054311300000000002a851000510000005431130000000000f2eb12000b0000007b85100055000000d08510003500000036ec12000c000000636c65616e5f646566756e63745f766f7465727300000000068410000b00000000000000cbed12000300000000000000118410000c00000000000000cbed120003000000c082100052000000128310002c00000054311300000000003e8310004100000054311300000000007f8310002f0000005431130000000000f2eb12000b000000ae8310005800000036ec12000c00000020436c65616e20616c6c20766f746572732077686f2061726520646566756e63742028692e652e207468657920646f206e6f7420736572766520616e7920707572706f736520617420616c6c292e20546865206465706f736974206f66207468652072656d6f76656420766f74657273206172652072657475726e65642e205468697320697320616e20726f6f742066756e6374696f6e20746f2062652075736564206f6e6c7920666f7220636c65616e696e67207468652073746174652e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d75737420626520726f6f742e2054686520746f74616c206e756d626572206f6620766f7465727320616e642074686f736520746861742061726520646566756e6374206d7573742062652070726f7669646564206173207769746e65737320646174612e5f6e756d5f766f746572735f6e756d5f646566756e63742052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f6620746865206f7574676f696e67206d656d62657220697320736c61736865642e20496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20656c656374696f6e20697320737461727465642e204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e20496620776520686176652061207265706c6163656d656e742c20776520757365206120736d616c6c207765696768742e20456c73652c2073696e63652074686973206973206120726f6f742063616c6c20616e642077696c6c20676f20696e746f2070687261676d656e2c20776520617373756d652066756c6c20626c6f636b20666f72206e6f772e6861735f7265706c6163656d656e742052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c206f7574636f6d65732065786973743a202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c20746865206465706f736974206973202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e202d20606f726967696e6020697320612063757272656e742072756e6e65722d75702e20496e207468697320636173652c20746865206465706f73697420697320756e72657365727665642c2072657475726e656420616e642020206f726967696e2069732072656d6f76656420617320612072756e6e65722d75702e202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c20746865206465706f73697420697320756e726573657276656420616e64206f726967696e20697320202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e20202053696d696c617220746f205b6072656d6f76655f6d656d62657273605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e202020496620746865207072696d652069732072656e6f756e63696e672c207468656e206e6f207072696d652077696c6c20657869737420756e74696c20746865206e65787420726f756e642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265207369676e65642c20616e642068617665206f6e65206f66207468652061626f766520726f6c65732e205468652074797065206f662072656e6f756e63696e67206d7573742062652070726f7669646564206173207769746e65737320646174612e72656e6f756e63696e6752656e6f756e63696e67205375626d6974206f6e6573656c6620666f722063616e6469646163792e204120666978656420616d6f756e74206f66206465706f736974206973207265636f726465642e20416c6c2063616e64696461746573206172652077697065642061742074686520656e64206f6620746865207465726d2e205468657920656974686572206265636f6d652061206d656d6265722f72756e6e65722d75702c206f72206c65617665207468652073797374656d207768696c65207468656972206465706f73697420697320736c61736865642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265207369676e65642e20232323205761726e696e67204576656e20696620612063616e64696461746520656e6473207570206265696e672061206d656d6265722c2074686579206d7573742063616c6c205b6043616c6c3a3a72656e6f756e63655f63616e646964616379605d20746f20676574207468656972206465706f736974206261636b2e204c6f73696e67207468652073706f7420696e20616e20656c656374696f6e2077696c6c20616c77617973206c65616420746f206120736c6173682e20546865206e756d626572206f662063757272656e742063616e64696461746573206d7573742062652070726f7669646564206173207769746e65737320646174612e63616e6469646174655f636f756e742052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e7320746865206465706f7369742e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265207369676e656420616e64206265206120766f7465722e20566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e20546869732063616e2062652063616c6c656420746f207365742074686520696e697469616c20766f7465732c206f722075706461746520616c7265616479206578697374696e6720766f7465732e2055706f6e20696e697469616c20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e642061206465706f73697420616d6f756e742069732072657365727665642e20546865206465706f736974206973206261736564206f6e20746865206e756d626572206f6620766f74657320616e642063616e2062652075706461746564206f7665722074696d652e205468652060766f746573602073686f756c643a2020202d206e6f7420626520656d7074792e2020202d206265206c657373207468616e20746865206e756d626572206f6620706f737369626c652063616e646964617465732e204e6f7465207468617420616c6c2063757272656e74206d656d6265727320616e64202020202072756e6e6572732d75702061726520616c736f206175746f6d61746963616c6c792063616e6469646174657320666f7220746865206e65787420726f756e642e204966206076616c756560206973206d6f7265207468616e206077686f60277320746f74616c2062616c616e63652c207468656e20746865206d6178696d756d206f66207468652074776f20697320757365642e2049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f202a2a4e4f542a2a20706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636b20616e64206b65657020736f6d6520666f722066757274686572206f7065726174696f6e732e20576520617373756d6520746865206d6178696d756d2077656967687420616d6f6e6720616c6c20332063617365733a20766f74655f657175616c2c20766f74655f6d6f726520616e6420766f74655f6c6573732e766f746573000000000000c7e11200070000000000000000000000f89010002b00000000000000000000000000000000000000000000000000000000000000543113002491100000000000000000003491100003000000000000000100000000000000a83c1000090000000000000000000000f89010002b00000000000000000000000000000000000000000000000000000000000000543113004c91100000000000000000005c911000040000000000000001000000000000009e3c10000a00000000000000000000007c911000210000000000000000000000000000000000000000000000000000000000000054311300a09110000000000000000000b091100006000000000000000100000000000000e09110000e0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300f091100000000000000000000092100001000000000000000100000000000000fb571200060000000105000000000000e3f812000c00000000000000089210002100000000000000000000000000000000000000543113002c92100000000000000000003c9210000300000000000000010000005665633c53656174486f6c6465723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e0012000000000000000100000043000000809410001d0000005431130000000000ac9310002e00000012000000000000000100000043000000da931000210000005431130000000000fb93100056000000519410002f0000005665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e0000001200000000000000010000003f0000000393100056000000599310003400000054311300000000008d9310001f0000005431130000000000ac9310002e000000456c656374696f6e526f756e6473000012000000000000000100000022000000b392100050000000566f7465723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e00000012000000000000000100000044000000549210002e0000005431130000000000829210003100000020566f74657320616e64206c6f636b6564207374616b65206f66206120706172746963756c617220766f7465722e2054574f582d4e4f54453a205341464520617320604163636f756e7449646020697320612063727970746f20686173682e2054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e205468652070726573656e742063616e646964617465206c6973742e20412063757272656e74206d656d626572206f722072756e6e65722d75702063616e206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e205365636f6e6420656c656d656e7420697320746865206465706f7369742e20496e76617269616e743a20416c7761797320736f72746564206261736564206f6e206163636f756e742069642e205468652063757272656e742072657365727665642072756e6e6572732d75702e20496e76617269616e743a20416c7761797320736f72746564206261736564206f6e2072616e6b2028776f72736520746f2062657374292e2055706f6e2072656d6f76616c206f662061206d656d6265722c20746865206c6173742028692e652e205f626573745f292072756e6e65722d75702077696c6c206265207265706c616365642e205468652063757272656e7420656c6563746564206d656d626572732e00000000000000289610000d0000000000000057a912000c000000000000005431130038961000000000000000000054311300000000000000000000000000489610000e0000000000000057a912000c00000000000000543113005896100000000000000000005431130000000000000000000000000068961000100000000000000057a912000c000000000000005431130078961000000000000000000054311300000000000000000000000000889610000e00000000000000cbed120003000000000000005431130098961000000000000000000054311300000000000000000000000000a89610001000000000000000cbed1200030000000000000054311300b8961000000000000000000054311300000000000000000000000000c89610000c00000000000000a9f912000e0000000000000054311300d4961000000000000000000054311300000000000000000000000000a00811000800000000000000e49610000e0000000000000054311300f4961000000000000000000054311300000000000000000043616e646964616379426f6e6400000012000000000000000100000045000000566f74696e67426f6e6442617365000012000000000000000100000046000000566f74696e67426f6e64466163746f7212000000000000000100000047000000446573697265644d656d626572730000120000000000000001000000480000004465736972656452756e6e6572735570120000000000000001000000490000005465726d4475726174696f6e1200000000000000010000004a0000004c6f636b4964656e74696669657200001200000000000000010000004b0000000000000038981000070000000000000040981000010000000000000000000000489810000400000000000000000000006898100009000000000000005431130000000000000000000000000074981000020000000000000000000000849810000d0000000000000054311300000000000000000000000000949810000100000000000000000000009c9810000c00000000000000fce41200010000000000000000000000a8981000020000000000000000000000b89810000900000000000000fce41200010000000000000000000000c4981000010000000000000000000000cc9810001000000000000000c0f51100020000000000000000000000dc981000040000000000000000000000fc9810001100000000000000c0f511000200000000000000000000001099100001000000000000004e65775465726d00ad9c1000190000004d9b10005a000000a79b100056000000fd9b10005a000000579c100056000000456d7074795465726d000000cd9a10004d0000001a9b100033000000456c656374696f6e4572726f72000000939a10003a0000004d656d6265724b69636b6564319a100055000000869a10000d00000052656e6f756e6365640000000a9a10002700000043616e646964617465536c61736865646e99100057000000c59910000b0000005431130000000000d09910003a00000053656174486f6c646572536c617368656400000018991000560000002041205c5b7365617420686f6c6465725c5d2077617320736c6173686564206279205c5b616d6f756e745c5d206279206265696e6720666f72636566756c6c792072656d6f7665642066726f6d20746865207365742e2041205c5b63616e6469646174655c5d2077617320736c6173686564206279205c5b616d6f756e745c5d2064756520746f206661696c696e6720746f206f627461696e20612073656174206173206d656d626572206f722072756e6e65722d75702e204e6f74652074686174206f6c64206d656d6265727320616e642072756e6e6572732d75702061726520616c736f2063616e646964617465732e20536f6d656f6e65206861732072656e6f756e6365642074686569722063616e6469646163792e2041205c5b6d656d6265725c5d20686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f722060456d7074795465726d602e20496e7465726e616c206572726f722068617070656e6564207768696c6520747279696e6720746f20706572666f726d20656c656374696f6e2e204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e205468697320697320646966666572656e742066726f6d20604e65775465726d285c5b5c5d29602e2053656520746865206465736372697074696f6e206f6620604e65775465726d602e2041206e6577207465726d2077697468205c5b6e65775f6d656d626572735c5d2e205468697320696e64696361746573207468617420656e6f7567682063616e64696461746573206578697374656420746f2072756e2074686520656c656374696f6e2c206e6f74207468617420656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e204120604e65775465726d285c5b5c5d296020696e64696361746573207468617420736f6d652063616e6469646174657320676f7420746865697220626f6e6420736c617368656420616e64206e6f6e65207765726520656c65637465642c207768696c73742060456d7074795465726d60206d65616e732074686174206e6f2063616e64696461746573206578697374656420746f20626567696e20776974682e5665633c284163636f756e7449642c2042616c616e6365293e000000000000f16110000c00000000000000549d1000010000000000000000000000da61100017000000000000005c9d1000010000000000000000000000cd6110000d00000000000000649d1000010000000000000000000000c761100006000000000000006c9d1000010000000000000000000000fd6110000900000000000000749d100001000000000000002f9e100019000000079e100028000000ed9d10001a000000c39d10002a0000007c9d100047000000204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e000000006f3d10000700000000000000289f10000100000000000000000000008b3311000800000000000000309f1000010000000000000000000000673d10000800000000000000389f10000100000000000000000000005c3d10000b00000000000000409f1000010000000000000000000000533d10000900000000000000489f1000010000000000000000000000428212000c00000000000000509f1000010000000000000000000000483d10000b00000000000000589f1000010000000000000000000000763d10000b00000000000000609f10000100000000000000b4a010004900000096a010001e00000062a010003400000019a0100049000000fd9f10001c000000b79f100046000000829f100035000000689f10001a0000002043616e6e6f74206164642073656c662061732070726f78792e20416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2043616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e204163636f756e7420697320616c726561647920612070726f78792e20412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e2053656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2050726f787920726567697374726174696f6e206e6f7420666f756e642e2054686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e00000000000000f67d10000c00000000000000dca21000010000000000000000000000ef7d10000700000000000000e4a21000010000000000000000000000e37d10000c00000000000000eca21000010000000000000000000000cf7d10001400000000000000f4a21000010000000000000000000000c57d10000a00000000000000fca21000010000000000000000000000b67d10000f0000000000000004a31000010000000000000000000000ab7d10000b000000000000000ca31000010000000000000000000000a17d10000a0000000000000014a310000100000000000000000000008e7d100013000000000000001ca31000010000000000000000000000827d10000c0000000000000024a31000010000000000000000000000747d10000e000000000000002ca310000100000000000000000000005a7d10001a0000000000000034a31000010000000000000000000000e0e1120009000000000000003ca31000010000000000000000000000487d1000120000000000000044a31000010000000000000000000000387d100010000000000000004ca31000010000000000000000000000277d1000110000000000000054a31000010000000000000000000000027e100012000000000000005ca310000100000000000000d1a5100031000000aba510002600000089a510002200000062a510002700000030a510003200000011a510001f00000000a5100011000000eca4100014000000cba4100021000000a8a410002300000085a41000230000005fa410002600000051a410000e00000018a4100039000000e4a3100034000000a4a310004000000064a31000400000002050726564696374696f6e20726567617264696e67207265706c6163656d656e74206166746572206d656d6265722072656d6f76616c2069732077726f6e672e205468652072656e6f756e63696e67206f726967696e2070726573656e74656420612077726f6e67206052656e6f756e63696e676020706172616d657465722e205468652070726f766964656420636f756e74206f66206e756d626572206f6620766f74657320697320696e636f72726563742e205468652070726f766964656420636f756e74206f66206e756d626572206f662063616e6469646174657320697320696e636f72726563742e204e6f742061206d656d6265722e2043616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64732e2052756e6e65722063616e6e6f742072652d7375626d69742063616e6469646163792e204d656d6265722063616e6e6f742072652d7375626d69742063616e6469646163792e204475706c6963617465642063616e646964617465207375626d697373696f6e2e2043616e6e6f74207265706f72742073656c662e204d757374206265206120766f7465722e20566f7465722063616e206e6f742070617920766f74696e6720626f6e642e2043616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e63652e2043616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765642e2043616e6e6f7420766f7465206d6f7265207468616e2063616e646964617465732e204d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e2043616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d626572732065786973742e0000e613130056000000e900000001000000417070726f76616c73496e636f6e73697374656e74207374617465202d20636f756c646e277420736574746c6520696d62616c616e636520666f722066756e6473207370656e7420627920747265617375727953757065724f664e6f745472616e73666572496e5573654e6f744f776e65724e6f7441737369676e65645065726d616e656e7400000000000078a71000050000000000000080a7100001000000000000000000000098a7100012000000000000000000000038071200080000000000000028a8100002000000000000000000000058a81000140000000000000000000000f8a81000040000000000000080a71000010000000000000000000000fca810001200000000000000000000002c0912000e000000000000008ca91000030000000000000000000000d4a910001500000000000000000000007caa1000060000000000000080a7100001000000000000000000000084aa10001100000000000000636c61696d00000000000000a00e13000500000000000000d7ae10000f00000097b11000270000005431130000000000beb110003800000054311300000000006c0e1300340000005431130000000000f6b110003d000000543113000000000016ae1000250000005431130000000000f2eb12000b000000bcfb11000a00000028ac10002700000020b01000190000006cac10000d00000079ac1000140000008dac10002500000036ec12000c00000000000000871913000300000000000000e3f812000c00000000000000a00e13000500000000000000d7ae10000f00000039b010005800000091b010002f00000054311300000000006c0e1300340000005431130000000000c0b010004a0000006dad100058000000543113000000000016ae1000250000005431130000000000f2eb12000b000000bcfb11000a00000028ac1000270000000ab110001a0000006cac10000d00000079ac100014000000c0ef12000d00000024b11000390000005db110003a00000036ec12000c00000066726565e6ae10002600000054311300000000000caf100058000000543113000000000064af1000560000005431130000000000baaf1000440000005431130000000000feaf1000220000005431130000000000f2eb12000b000000bcfb11000a00000028ac10002700000020b01000190000006cac10000d00000079ac1000140000008dac10002500000036ec12000c00000000000000871913000300000000000000e3f812000c00000000000000a00e13000500000000000000d7ae10000f000000000000007caa10000600000000000000a1fb120004000000b2ac10005600000008ad10003b000000543113000000000075fa110032000000543113000000000043ad10002a0000006dad100058000000c5ad100051000000543113000000000016ae1000250000005431130000000000f2eb12000b000000bcfb11000a00000028ac1000270000003bae10001f0000006cac10000d00000079ac100014000000c0ef12000d0000005aae10003e00000098ae10003f00000036ec12000c000000667265657a6500000cab10005a000000543113000000000066ab100057000000bdab10001c0000005431130000000000d9ab10002c000000543113000000000005ac1000230000005431130000000000f2eb12000b000000bcfb11000a00000028ac1000270000004fac10001d0000006cac10000d00000079ac1000140000008dac10002500000036ec12000c00000020467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d75737420686176652061206e6f6e2d66726f7a656e206163636f756e742060696e646578602e202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e6520736c617368206f7065726174696f6e2e202d204f6e65206576656e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d204442205765696768743a203120526561642f577269746520284163636f756e74732920466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229543a3a4163636f756e74496e646578204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e00000000008cb21000080000000102000000000000d7ae10000f0000000000000094b21000220000000000000000000000000000000000000054311300b8b210000000000000000000c8b210000100000000000000000000004163636f756e747328543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c29000012000000000000000100000023000000d0b210002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e00000000000048031200070000000000000057a912000c00000000000000543113002cb3100000000000000000003cb3100001000000000000001200000000000000010000002a00000044b310002b00000020546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0000000000f4b310000d0000000000000004b4100002000000000000000000000014b410000100000000000000000000001cb410000a0000000000000028b4100001000000000000000000000030b4100001000000000000000000000038b410000b0000000000000044b4100002000000000000000000000054b410000100000000000000496e64657841737369676e656400000079e5120009000000a6b410000c000000ecb410002d000000496e64657846726565640000a6b410000c000000b2b410003a000000496e64657846726f7a656e00a6b410000c00000079e51200090000005cb410004a0000002041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d4163636f756e74496e6465782041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d4e6f74537562546f6f4d616e7952656769737472617273546f6f4d616e794669656c6473496e76616c6964546172676574496e76616c6964496e646578496e76616c69644a756467656d656e744a756467656d656e74476976656e537469636b794a756467656d656e744e6f4964656e746974794665654368616e676564456d707479496e6465784e6f744e616d6564546f6f4d616e795375624163636f756e74734e6f744f776e6564000000000058b810000d0000000000000068b8100001000000000000000000000080b810000d0000000000000000000000e8b810000c00000000000000f4b810000100000000000000000000000cb91000130000000000000000000000a4b910000800000000000000acb91000010000000000000000000000c4b910001500000000000000000000006cba10000e00000000000000543113000000000000000000000000007cba10001200000000000000000000000cbb1000110000000000000020bb100002000000000000000000000050bb100017000000000000000000000008bc10000e0000000000000018bc100001000000000000000000000030bc1000110000000000000000000000b8bc10000700000000000000c0bc1000020000000000000000000000f0bc10000d000000000000000000000058bd10000e0000000000000068bd100002000000000000000000000098bd10000d000000000000000000000000be10000a000000000000000cbe10000200000000000000000000003cbe10000d0000000000000000000000a4be10001100000000000000b8be100003000000000000000000000000bf100013000000000000000000000098bf10000d0000000000000024f81100010000000000000000000000a8bf100013000000000000000000000040c01000070000000000000048c0100002000000000000000000000078c01000070000000000000000000000b0c010000a0000000000000048c01000020000000000000000000000bcc01000040000000000000000000000dcc010000a00000000000000e8c0100001000000000000000000000000c1100007000000000000000000000038c1100008000000000000005431130000000000000000000000000040c110000a000000000000006164645f7265676973747261720000000000000069d510000700000000000000e3f812000c00000048d410001f000000543113000000000067d41000400000005431130000000000a7d410002b0000005431130000000000d2d41000260000005431130000000000f2eb12000b000000f8d410004a00000042d51000270000006cac10000d00000036ec12000c0000007365745f6964656e746974790000000038d4100004000000000000003cd410000c0000003ed210004b000000543113000000000089d2100056000000dfd210001500000054311300000000006c0e1300340000005431130000000000f4d2100024000000543113000000000018d31000230000005431130000000000f2eb12000b0000003bd31000120000004dd310004800000095d3100039000000ced3100021000000efd31000490000006cac10000d00000036ec12000c0000007365745f737562730000000021d21000040000000000000025d2100019000000f7cf10002400000054311300000000001bd010005600000071d010004c00000054311300000000003ac2100059000000acce10000a0000005431130000000000bdd010002d0000005431130000000000f2eb12000b000000ead010000d000000f7d010003a00000022cf10003600000031d1100022000000946412000600000053d11000380000008bd1100030000000bbd1100031000000ecd110003500000036ec12000c000000636c6561725f6964656e74697479000021ce10004f000000543113000000000070ce10003c00000054311300000000003ac2100059000000acce10000a0000005431130000000000b6ce1000270000005431130000000000f2eb12000b000000ddce100011000000eece10003400000022cf10003600000058cf100049000000a1cf100023000000c4cf1000330000006cac10000d00000036ec12000c000000726571756573745f6a756467656d656e74000000000000003bc81000090000000000000044c8100017000000000000001ace100007000000000000004db612001500000060cc100026000000543113000000000086cc100056000000dccc100007000000543113000000000042cb10004e00000090cb1000150000005431130000000000e3cc1000480000002bcd100056000000543113000000000081cd10000d0000008ecd10002f000000bdcd1000040000005431130000000000c1cd10002a0000005431130000000000f2eb12000b000000b6c710000e00000004c6100021000000ebcd10002f0000006cac10000d00000036ec12000c00000063616e63656c5f726571756573740000000000003bc81000090000000000000052cc10000e000000e8ca10001b000000543113000000000003cb10003f000000543113000000000042cb10004e00000090cb1000150000005431130000000000a5cb1000520000005431130000000000f7cb10002c0000005431130000000000f2eb12000b000000b6c710000e00000004c610002100000023cc10002300000046cc10000c00000036ec12000c0000007365745f6665650000000000a00e1300050000000000000044c810001700000000000000e5ca100003000000000000004db61200150000004eca100047000000543113000000000071c6100056000000a6c81000290000005431130000000000cfc810003e00000095ca1000160000005431130000000000f2eb12000b00000051c910000a0000005bc910001f000000abca10003a00000036ec12000c0000007365745f6163636f756e745f6964000000000000a00e1300050000000000000044c810001700000000000000871913000300000000000000e3f812000c000000c8c9100030000000543113000000000071c6100056000000a6c81000290000005431130000000000cfc810003e000000f8c910001d0000005431130000000000f2eb12000b00000051c910000a0000005bc910001f00000015ca10003900000036ec12000c0000007365745f6669656c6473000000000000a00e1300050000000000000044c810001700000000000000b4c910000600000000000000bac910000e0000007bc810002b000000543113000000000071c6100056000000a6c81000290000005431130000000000cfc810003e0000000dc91000440000005431130000000000f2eb12000b00000051c910000a0000005bc910001f0000007ac910003a00000036ec12000c00000070726f766964655f6a756467656d656e74000000000000003bc81000090000000000000044c810001700000000000000739a1200060000000000000085fc110023000000000000005bc81000090000000000000064c810001700000042c610002f000000543113000000000071c6100056000000c7c610002d0000005431130000000000f4c610004900000058c5100056000000aec510001e0000003dc7100053000000543113000000000090c71000260000005431130000000000f2eb12000b000000b6c710000e000000c4c7100022000000e6c71000260000000cc810002f0000006cac10000d00000036ec12000c0000006b696c6c5f6964656e74697479000000fcc310005100000054311300000000004dc4100059000000a6c4100052000000f8c4100021000000543113000000000019c510003f000000543113000000000058c5100056000000aec510001e0000005431130000000000ccc51000260000005431130000000000f2eb12000b000000f2c510001200000004c610002100000025c610001d0000006cac10000d00000036ec12000c0000006164645f737562000000000091c31000030000000000000085fc11002300000000000000f4c310000400000000000000f8c3100004000000c8c310002c0000005431130000000000b4c11000580000006bc310000f00000054311300000000003ac21000590000007ac310001700000072656e616d655f737562000094c310003400000054311300000000003ac21000590000007ac310001700000072656d6f76655f73756200000000000091c31000030000000000000085fc1100230000003ac31000310000005431130000000000b4c11000580000006bc310000f00000054311300000000003ac21000590000007ac3100017000000717569745f73756290c11000240000005431130000000000b4c11000580000000cc210002e00000054311300000000003ac210005900000093c21000100000005431130000000000a3c2100052000000f5c21000450000002052656d6f7665207468652073656e6465722061732061207375622d6163636f756e742e205061796d656e743a2042616c616e636520726573657276656420627920612070726576696f757320607365745f73756273602063616c6c20666f72206f6e65207375622077696c6c20626520726570617472696174656420746f207468652073656e64657220282a6e6f742a20746865206f726967696e616c206465706f7369746f72292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d7573742068617665206120726567697374657265642073757065722d6964656e746974792e204e4f54453a20546869732073686f756c64206e6f74206e6f726d616c6c7920626520757365642c206275742069732070726f766964656420696e207468652063617365207468617420746865206e6f6e2d20636f6e74726f6c6c6572206f6620616e206163636f756e74206973206d616c6963696f75736c7920726567697374657265642061732061207375622d6163636f756e742e2052656d6f76652074686520676976656e206163636f756e742066726f6d207468652073656e646572277320737562732e20746f207468652073656e6465722e20737562206964656e74697479206f662060737562602e73756220416c74657220746865206173736f636961746564206e616d65206f662074686520676976656e207375622d6163636f756e742e204164642074686520676976656e206163636f756e7420746f207468652073656e646572277320737562732e64617461446174612052656d6f766520616e206163636f756e742773206964656e7469747920616e64207375622d6163636f756e7420696e666f726d6174696f6e20616e6420736c61736820746865206465706f736974732e205061796d656e743a2052657365727665642062616c616e6365732066726f6d20607365745f737562736020616e6420607365745f6964656e74697479602061726520736c617368656420616e642068616e646c65642062792060536c617368602e20566572696669636174696f6e2072657175657374206465706f7369747320617265206e6f742072657475726e65643b20746865792073686f756c642062652063616e63656c6c6564206d616e75616c6c79207573696e67206063616e63656c5f72657175657374602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206d617463682060543a3a466f7263654f726967696e602e202d2060746172676574603a20746865206163636f756e742077686f7365206964656e7469747920746865206a756467656d656e742069732075706f6e2e2054686973206d75737420626520616e206163636f756e742020207769746820612072656769737465726564206964656e746974792e20456d69747320604964656e746974794b696c6c656460206966207375636365737366756c2e202d20604f2852202b2053202b205829602e202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e202d206053202b2032602073746f72616765206d75746174696f6e732e2050726f766964652061206a756467656d656e7420666f7220616e206163636f756e742773206964656e746974792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74206f6620746865207265676973747261722077686f736520696e64657820697320607265675f696e646578602e202d20607265675f696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206265696e67206d6164652e202d20606a756467656d656e74603a20746865206a756467656d656e74206f662074686520726567697374726172206f6620696e64657820607265675f696e646578602061626f75742060746172676574602e20456d69747320604a756467656d656e74476976656e60206966207375636365737366756c2e202d20604f2852202b205829602e202d204f6e652062616c616e63652d7472616e73666572206f7065726174696f6e2e202d20557020746f206f6e65206163636f756e742d6c6f6f6b7570206f7065726174696f6e2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2852202b205829602e7265675f696e646578436f6d706163743c526567697374726172496e6465783e6a756467656d656e744a756467656d656e743c42616c616e63654f663c543e3e2053657420746865206669656c6420696e666f726d6174696f6e20666f722061207265676973747261722e206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e202d20606669656c6473603a20746865206669656c64732074686174207468652072656769737472617220636f6e6365726e73207468656d73656c76657320776974682e202d20604f285229602e202d204f6e652073746f72616765206d75746174696f6e20604f285229602e202d2042656e63686d61726b3a20372e343634202b2052202a20302e33323520c2b57320286d696e207371756172657320616e616c79736973296669656c64734964656e746974794669656c6473204368616e676520746865206163636f756e74206173736f63696174656420776974682061207265676973747261722e202d20606e6577603a20746865206e6577206163636f756e742049442e202d2042656e63686d61726b3a20382e383233202b2052202a20302e333220c2b57320286d696e207371756172657320616e616c797369732920536574207468652066656520726571756972656420666f722061206a756467656d656e7420746f206265207265717565737465642066726f6d2061207265676973747261722e202d2060666565603a20746865206e6577206665652e202d2042656e63686d61726b3a20372e333135202b2052202a20302e33323920c2b57320286d696e207371756172657320616e616c79736973296665652043616e63656c20612070726576696f757320726571756573742e205061796d656e743a20412070726576696f75736c79207265736572766564206465706f7369742069732072657475726e6564206f6e20737563636573732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206861766520612072656769737465726564206964656e746974792e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206e6f206c6f6e676572207265717565737465642e20456d69747320604a756467656d656e74556e72657175657374656460206966207375636365737366756c2e202d204f6e652073746f72616765206d75746174696f6e20604f2852202b205829602e202d204f6e65206576656e74526567697374726172496e64657820526571756573742061206a756467656d656e742066726f6d2061207265676973747261722e205061796d656e743a204174206d6f737420606d61785f666565602077696c6c20626520726573657276656420666f72207061796d656e7420746f2074686520726567697374726172206966206a756467656d656e7420676976656e2e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973207265717565737465642e202d20606d61785f666565603a20546865206d6178696d756d206665652074686174206d617920626520706169642e20546869732073686f756c64206a757374206265206175746f2d706f70756c617465642061733a206060606e6f636f6d70696c652053656c663a3a7265676973747261727328292e676574287265675f696e646578292e756e7772617028292e6665652060606020456d69747320604a756467656d656e7452657175657374656460206966207375636365737366756c2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2858202b205229602e6d61785f66656520436c65617220616e206163636f756e742773206964656e7469747920696e666f20616e6420616c6c207375622d6163636f756e747320616e642072657475726e20616c6c206465706f736974732e205061796d656e743a20416c6c2072657365727665642062616c616e636573206f6e20746865206163636f756e74206172652072657475726e65642e206964656e746974792e20456d69747320604964656e74697479436c656172656460206966207375636365737366756c2e202d20604f2852202b2053202b205829602020202d20776865726520605260207265676973747261722d636f756e742028676f7665726e616e63652d626f756e646564292e2020202d2077686572652060536020737562732d636f756e742028686172642d20616e64206465706f7369742d626f756e646564292e2020202d20776865726520605860206164646974696f6e616c2d6669656c642d636f756e7420286465706f7369742d626f756e64656420616e6420636f64652d626f756e646564292e202d204f6e652062616c616e63652d756e72657365727665206f7065726174696f6e2e202d206032602073746f7261676520726561647320616e64206053202b2032602073746f726167652064656c6574696f6e732e2053657420746865207375622d6163636f756e7473206f66207468652073656e6465722e205061796d656e743a20416e79206167677265676174652062616c616e63652072657365727665642062792070726576696f757320607365745f73756273602063616c6c732077696c6c2062652072657475726e656420616e6420616e20616d6f756e7420605375624163636f756e744465706f736974602077696c6c20626520726573657276656420666f722065616368206974656d20696e206073756273602e202d206073756273603a20546865206964656e74697479277320286e657729207375622d6163636f756e74732e202d20604f2850202b205329602020202d20776865726520605060206f6c642d737562732d636f756e742028686172642d20616e64206465706f7369742d626f756e646564292e202d204174206d6f7374206f6e652062616c616e6365206f7065726174696f6e732e2020202d206050202b2053602073746f72616765206d75746174696f6e732028636f64656320636f6d706c657869747920604f28312960292020202d204f6e652073746f7261676520726561642028636f64656320636f6d706c657869747920604f28502960292e2020202d204f6e652073746f726167652077726974652028636f64656320636f6d706c657869747920604f28532960292e2020202d204f6e652073746f726167652d6578697374732028604964656e746974794f663a3a636f6e7461696e735f6b657960292e737562735665633c28543a3a4163636f756e7449642c2044617461293e2053657420616e206163636f756e742773206964656e7469747920696e666f726d6174696f6e20616e6420726573657276652074686520617070726f707269617465206465706f7369742e20496620746865206163636f756e7420616c726561647920686173206964656e7469747920696e666f726d6174696f6e2c20746865206465706f7369742069732074616b656e2061732070617274207061796d656e7420666f7220746865206e6577206465706f7369742e202d2060696e666f603a20546865206964656e7469747920696e666f726d6174696f6e2e20456d69747320604964656e7469747953657460206966207375636365737366756c2e202d20604f2858202b205827202b205229602020202d20776865726520605860206164646974696f6e616c2d6669656c642d636f756e7420286465706f7369742d626f756e64656420616e6420636f64652d626f756e646564292020202d20776865726520605260206a756467656d656e74732d636f756e7420287265676973747261722d636f756e742d626f756e64656429202d204f6e652062616c616e63652072657365727665206f7065726174696f6e2e202d204f6e652073746f72616765206d75746174696f6e2028636f6465632d7265616420604f285827202b205229602c20636f6465632d777269746520604f2858202b20522960292e696e666f4964656e74697479496e666f2041646420612072656769737472617220746f207468652073797374656d2e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060543a3a5265676973747261724f726967696e602e202d20606163636f756e74603a20746865206163636f756e74206f6620746865207265676973747261722e20456d6974732060526567697374726172416464656460206966207375636365737366756c2e202d20604f2852296020776865726520605260207265676973747261722d636f756e742028676f7665726e616e63652d626f756e64656420616e6420636f64652d626f756e646564292e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28522960292e6163636f756e7400000000d0d610000a0000000105000000000000e3f812000c00000000000000dad610001a0000000000000000000000000000000000000054311300f4d61000000000000000000004d710000300000000000000000000000000000067a61000070000000102000000000000e3f812000c000000000000001cd7100014000000000000000000000000000000000000005431130030d71000000000000000000040d710000200000000000000000000000000000050d71000060000000105000000000000e3f812000c0000000000000056d7100021000000000000000000000000000000000000005431130078d71000000000000000000088d7100005000000000000000100000000000000b0d710000a0000000000000000000000bad71000360000000000000000000000000000000000000000000000000000000000000054311300f0d71000000000000000000000d810000400000000000000010000004964656e746974794f66526567697374726174696f6e3c42616c616e63654f663c543e3e1200000000000000010000004c00000008da1000480000005431130000000000f2c112003000000028543a3a4163636f756e7449642c2044617461291200000000000000010000004d0000005cd9100058000000b4d9100054000000537562734f662842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e29001200000000000000010000004e000000e7d810002e000000543113000000000015d91000470000005431130000000000f2c1120030000000526567697374726172735665633c4f7074696f6e3c526567697374726172496e666f3c42616c616e63654f663c543e2c20543a3a4163636f756e7449643e3e3e1200000000000000010000004f00000020d810005300000073d810002a00000054311300000000009dd810004a0000002054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e2054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e20416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e20546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e207468617420636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e20496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e00000000a0db10000c0000000000000057a912000c0000000000000054311300acdb10000000000000000000bcdb1000010000000000000000000000c4db10000c0000000000000057a912000c0000000000000054311300d0db10000000000000000000e0db1000010000000000000000000000e8db1000110000000000000057a912000c0000000000000054311300fcdb100000000000000000000cdc100003000000000000000000000024dc10000e00000000000000cbed120003000000000000005431130034dc1000000000000000000044dc10000100000000000000000000004cdc10001300000000000000cbed120003000000000000005431130060dc1000000000000000000070dc100002000000000000000000000080dc10000d00000000000000cbed120003000000000000005431130090dc10000000000000000000a0dc1000020000000000000042617369634465706f7369741200000000000000010000005000000041df1000360000004669656c644465706f7369741200000000000000010000003e000000f6de10004b0000005375624163636f756e744465706f73697400000012000000000000000100000051000000f7dd10005900000050de10005c000000acde10004a0000004d61785375624163636f756e7473000012000000000000000100000052000000b4dd1000430000004d61784164646974696f6e616c4669656c6473001200000000000000010000005200000023dd1000590000007cdd1000380000004d61785265676973747261727300000012000000000000000100000049000000b0dc10005400000004dd10001f000000204d61786d696d756d206e756d626572206f66207265676973747261727320616c6c6f77656420696e207468652073797374656d2e204e656564656420746f20626f756e642074686520636f6d706c6578697479206f662c20652e672e2c207570646174696e67206a756467656d656e74732e204d6178696d756d206e756d626572206f66206164646974696f6e616c206669656c64732074686174206d61792062652073746f72656420696e20616e2049442e204e656564656420746f20626f756e642074686520492f4f20726571756972656420746f2061636365737320616e206964656e746974792c206275742063616e2062652070726574747920686967682e20546865206d6178696d756d206e756d626572206f66207375622d6163636f756e747320616c6c6f77656420706572206964656e746966696564206163636f756e742e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564207375626163636f756e742e20546869732073686f756c64206163636f756e7420666f722074686520666163742074686174206f6e652073746f72616765206974656d27732076616c75652077696c6c20696e637265617365206279207468652073697a65206f6620616e206163636f756e742049442c20616e642074686572652077696c6c20626520616e6f746865722074726965206974656d2077686f73652076616c7565206973207468652073697a65206f6620616e206163636f756e7420494420706c75732033322062797465732e2054686520616d6f756e742068656c64206f6e206465706f73697420706572206164646974696f6e616c206669656c6420666f7220612072656769737465726564206964656e746974792e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564206964656e746974792e000000000030e110000b00000000000000fce412000100000000000000000000003ce1100001000000000000000000000044e110000f00000000000000c0f5110002000000000000000000000054e110000100000000000000000000005ce110000e00000000000000c0f511000200000000000000000000006ce1100001000000000000000000000074e11000120000000000000088e1100002000000000000000000000098e11000010000000000000000000000a0e11000140000000000000088e11000020000000000000000000000b4e1100001000000000000000000000066b510000e0000000000000088e11000020000000000000000000000bce11000010000000000000000000000c4e110000e00000000000000d4e11000010000000000000000000000dce11000010000000000000000000000e4e110001000000000000000fc021200030000000000000000000000f4e11000010000000000000000000000fce110001200000000000000fc02120003000000000000000000000010e2100002000000000000000000000020e210001200000000000000fc02120003000000000000000000000034e2100002000000000000004964656e7469747953657400f6e41000440000004964656e74697479436c656172656400b1e41000450000004964656e746974794b696c6c656400006ee41000430000004a756467656d656e74526571756573746564000079e512000900000052cc10000e0000002de41000410000004a756467656d656e74556e726571756573746564f1e310003c000000afe31000420000005265676973747261724164646564000052cc10000e00000084e310002b0000005375624964656e7469747941646465642fe31000550000005375624964656e7469747952656d6f7665640000d5e210004300000018e31000170000005375624964656e746974795265766f6b6564000044e21000470000008be210004a0000002041207375622d6964656e746974792077617320636c65617265642c20616e642074686520676976656e206465706f7369742072657061747269617465642066726f6d20746865206d61696e206964656e74697479206163636f756e7420746f20746865207375622d6964656e74697479206163636f756e742e205c5b7375622c206d61696e2c206465706f7369745c5d2041207375622d6964656e74697479207761732072656d6f7665642066726f6d20616e206964656e7469747920616e6420746865206465706f7369742066726565642e205c5b7375622c206d61696e2c206465706f7369745c5d2041207375622d6964656e746974792077617320616464656420746f20616e206964656e7469747920616e6420746865206465706f73697420706169642e205c5b7375622c206d61696e2c206465706f7369745c5d204120726567697374726172207761732061646465642e205c5b7265676973747261725f696e6465785c5d2041206a756467656d656e742077617320676976656e2062792061207265676973747261722e205c5b7461726765742c207265676973747261725f696e6465785c5d2041206a756467656d656e74207265717565737420776173207265747261637465642e205c5b77686f2c207265676973747261725f696e6465785c5d2041206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e205c5b77686f2c207265676973747261725f696e6465785c5d2041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e205c5b77686f2c206465706f7369745c5d2041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e205c5b77686f2c206465706f7369745c5d2041206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e205c5b77686f5c5d4d6178576569676874546f6f4c6f77556e657870656374656454696d65706f696e7457726f6e6754696d65706f696e744e6f54696d65706f696e7453656e646572496e5369676e61746f726965735369676e61746f726965734f75744f664f72646572546f6f4d616e795369676e61746f72696573546f6f4665775369676e61746f726965734e6f417070726f76616c734e6565646564416c7265616479417070726f7665644d696e696d756d5468726573686f6c64416c726561647953746f72656400000000000000b0e610001400000000000000c4e61000020000000000000000000000f4e6100010000000000000000000000074e7100008000000000000007ce710000600000000000000000000000ce810002e00000000000000000000007ce9100010000000000000008ce9100005000000000000000000000004ea100024000000000000000000000024eb10000f0000000000000034eb100004000000000000000000000094eb10001a0000000000000061735f6d756c74695f7468726573686f6c645f310000000059f0100011000000000000002c1a13001100000000000000a80e13000400000000000000ac0e130018000000d5f710005500000054311300000000006c0e13003400000054311300000000002af81000500000007af8100041000000eaf41000230000005431130000000000bbf810002f0000005431130000000000f2eb12000b000000eaf8100047000000fbf610002000000031f9100012000000aef710001300000036ec12000c00000061735f6d756c746900000000176b12000900000000000000a50e1300030000000000000059f0100011000000000000002c1a130011000000000000007df410000f000000000000008cf410002100000000000000a80e13000400000000000000c1f710000a00000000000000cbf710000a00000000000000a1fb12000400000000000000adf410000a00000000000000b7f41000060000009df0100056000000f3f010003f0000005431130000000000bdf410002d000000543113000000000032f110004c0000007ef1100050000000cef110000e00000054311300000000006c0e1300340000005431130000000000ecec10005600000042ed10005100000093ed10001c000000dcf110005700000033f210005500000088f2100036000000eaf410002300000054311300000000000df510004800000055f510004700000054311300000000009cf5100057000000f3f510005600000049f61000380000005431130000000000f2eb12000b00000081f610001500000064ee10003400000098ee100050000000e8ee10005200000096f61000490000003aef1000300000000cf310003600000042f310003f0000006cac10000d000000dff610001c00000081f310004c000000cdf3100024000000f1f310002d000000fbf6100020000000c0ef12000d0000001bf710004900000064f710004a000000aef710001300000036ec12000c000000617070726f76655f61735f6d756c746900000000176b12000900000000000000a50e1300030000000000000059f0100011000000000000002c1a130011000000000000007df410000f000000000000008cf4100021000000000000008cf01000090000000000000095f010000800000000000000adf410000a00000000000000b7f41000060000009df0100056000000f3f010003f000000543113000000000032f110004c0000007ef1100050000000cef110000e00000054311300000000006c0e1300340000005431130000000000ecec10005600000042ed10005100000093ed10001c000000dcf110005700000033f210005500000088f210003600000026ee1000340000005431130000000000bef210004e0000005431130000000000f2eb12000b0000005aee10000a00000064ee10003400000098ee100050000000e8ee1000520000003aef1000300000000cf310003600000042f310003f0000006cac10000d00000081f310004c000000cdf3100024000000f1f310002d000000a9ef100023000000c0ef12000d0000001ef410002f0000004df410003000000036ec12000c00000063616e63656c5f61735f6d756c74690000000000176b12000900000000000000a50e1300030000000000000059f0100011000000000000002c1a130011000000000000006af01000090000000000000073f0100019000000000000008cf01000090000000000000095f010000800000064ec100056000000baec10003200000054311300000000006c0e1300340000005431130000000000ecec10005600000042ed10005100000093ed10001c000000afed10005800000007ee10001f00000026ee1000340000005431130000000000f2eb12000b0000005aee10000a00000064ee10003400000098ee100050000000e8ee1000520000003aef1000300000006cac10000d0000006aef1000220000008cef10001d000000a9ef100023000000c0ef12000d000000ccef10004600000012f010004700000036ec12000c0000002043616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c7920666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869732064697370617463682e204d6179206e6f7420626520656d7074792e202d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e20666f7220746869732064697370617463682e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e202d20604f285329602e202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f662020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e202d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e202d2053746f726167653a2072656d6f766573206f6e65206974656d2e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20202020202d20526561643a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d2c20526566756e64204163636f756e742c2043616c6c7320202020202d2057726974653a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d2c20526566756e64204163636f756e742c2043616c6c736f746865725f7369676e61746f7269657374696d65706f696e7454696d65706f696e743c543a3a426c6f636b4e756d6265723e63616c6c5f686173685b75383b2033325d20526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e7420696620617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e205061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c757320607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f722069732063616e63656c6c65642e202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e204966206974206973206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e204e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292e202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c207769746820612020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66202020604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e20202020202d20526561643a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d20202020202d2057726974653a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d6d617962655f74696d65706f696e744f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e6d61785f7765696768745765696768742049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e202d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e204e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f207573652060617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e20526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f7468657277697365206f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642c206d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e202d20604f2853202b205a202b2043616c6c29602e202d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2e202d2054686520776569676874206f6620746865206063616c6c602e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20202020202d2052656164733a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d2c2043616c6c7320286966206073746f72655f63616c6c602920202020202d205772697465733a204d756c74697369672053746f726167652c205b43616c6c6572204163636f756e745d2c2043616c6c7320286966206073746f72655f63616c6c6029202d20506c75732043616c6c205765696768744f706171756543616c6c73746f72655f63616c6c20496d6d6564696174656c792064697370617463682061206d756c74692d7369676e61747572652063616c6c207573696e6720612073696e676c6520617070726f76616c2066726f6d207468652063616c6c65722e202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f6620746865206d756c74692d7369676e61747572652c2062757420646f206e6f7420706172746963697061746520696e2074686520617070726f76616c2070726f636573732e20526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c742e204f285a202b204329207768657265205a20697320746865206c656e677468206f66207468652063616c6c20616e6420432069747320657865637574696f6e207765696768742e202d204442205765696768743a204e6f6e650000000000f4f91000090000000205020000000000e3f812000c0000000000000095f010000800000000000000fdf9100034000000000000005431130034fa1000000000000000000044fa1000010000000000000000000000000000004cfa100005000000010600000000000095f01000080000000000000051fa10002800000000000000000000000000000000000000543113007cfa10000000000000000000543113000000000000000000000000004d756c7469736967734d756c74697369673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e000000120000000000000001000000230000008cfa10002500000043616c6c73284f706171756543616c6c2c20543a3a4163636f756e7449642c2042616c616e63654f663c543e29000000120000000000000001000000230000002054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e000000000000005cfb10000b0000000000000057a912000c000000000000005431130068fb1000000000000000000078fb100002000000000000000000000088fb10000d0000000000000057a912000c000000000000005431130098fb10000000000000000000a8fb1000010000000000000000000000b0fb10000e00000000000000a50e1300030000000000000054311300c0fb10000000000000000000d0fb100001000000000000004465706f7369744261736500120000000000000001000000530000006dfc10005c000000c9fc10001b0000004465706f736974466163746f720000001200000000000000010000004700000018fc1000550000004d61785369676e61746f72696573000012000000000000000100000054000000d8fb10004000000020546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420666f72206120676976656e206d756c74697369672e2054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f2073746f726520612064697370617463682063616c6c20666f72206c617465722e0000000094fd10000b00000000000000a0fd1000030000000000000000000000b8fd1000010000000000000000000000c0fd10001000000000000000d0fd1000040000000000000000000000f0fd100002000000000000000000000000fe1000100000000000000010fe100005000000000000000000000038fe100001000000000000000000000040fe10001100000000000000d0fd100004000000000000000000000054fe100001000000000000004e65774d756c74697369670079e512000900000079e512000900000020ff10000800000089ff1000470000004d756c7469736967417070726f76616c79e51200090000000aff10001600000079e512000900000020ff10000800000028ff1000330000005bff10002e0000004d756c7469736967457865637574656479e51200090000000aff10001600000079e512000900000020ff100008000000637a12000e000000b4fe1000560000004d756c746973696743616e63656c6c65640000005cfe1000580000002041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e205c5b63616e63656c6c696e672c2074696d65706f696e742c206d756c74697369672c2063616c6c5f686173685c5d2041206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e205c5b617070726f76696e672c2074696d65706f696e742c206d756c74697369672c2063616c6c5f686173685c5d54696d65706f696e743c426c6f636b4e756d6265723e43616c6c486173682041206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e205c5b617070726f76696e672c2074696d65706f696e742c206d756c74697369672c2063616c6c5f686173685c5d2041206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e205c5b617070726f76696e672c206d756c74697369672c2063616c6c5f686173685c5d496e73756666696369656e7450726f706f7365727342616c616e636500000000700011000d0000000000000080001100020000000000000000000000b0001100090000000000000000000000f80011000f00000000000000080111000100000000000000000000002001110009000000000000000000000068011100100000000000000008011100010000000000000000000000780111000a0000000000000070726f706f73655f7370656e640000000000000048b612000500000000000000a00411001800000000000000b80411000b0000000000000085fc1100230000008b0311004b000000d60311004d00000023041100150000005431130000000000f2eb12000b0000000403110013000000380411002d000000650411003b00000036ec12000c00000072656a6563745f70726f706f73616c0000000000800311000b000000000000008765120016000000c50211003f0000005431130000000000f2df11002b0000005431130000000000f2eb12000b000000040311001300000017031100340000004b0311003500000036ec12000c000000617070726f76655f70726f706f73616cc8011100570000001f0211002b00000054311300000000004a0211002c0000005431130000000000f2eb12000b00000076021100140000008a02110024000000ae0211001700000036ec12000c00000020417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e656669636961727920616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a417070726f76654f726967696e602e202d20436f6d706c65786974793a204f2831292e202d20446252656164733a206050726f706f73616c73602c2060417070726f76616c7360202d20446257726974653a2060417070726f76616c73602052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e202d20436f6d706c65786974793a204f283129202d20446252656164733a206050726f706f73616c73602c206072656a65637465642070726f706f736572206163636f756e7460202d2044625772697465733a206050726f706f73616c73602c206072656a65637465642070726f706f736572206163636f756e746070726f706f73616c5f69642050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c756520697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e6365207468652070726f706f73616c20697320617761726465642e202d20446252656164733a206050726f706f73616c436f756e74602c20606f726967696e206163636f756e7460202d2044625772697465733a206050726f706f73616c436f756e74602c206050726f706f73616c73602c20606f726967696e206163636f756e7460436f6d706163743c42616c616e63654f663c542c20493e3e62656e65666963696172790000000000e45712000d0000000000000000000000357c12000d0000000000000000000000000000000000000000000000000000000000000054311300cc0511000000000000000000dc05110001000000000000000100000000000000db571200090000000105000000000000357c12000d00000000000000e40511002700000000000000000000000000000000000000543113000c06110000000000000000001c0611000100000000000000000000000000000014a61000090000000000000000000000240611001200000000000000000000000000000000000000000000000000000000000000543113003806110000000000000000004806110001000000000000000100000012000000000000000100000022000000ad0611002900000050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c542c20493e3e00120000000000000001000000230000008e0611001f0000005665633c50726f706f73616c496e6465783e000012000000000000000100000024000000500611003e0000002050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e2050726f706f73616c7320746861742068617665206265656e206d6164652e204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e000000000000f00711000c00000000000000fc07110007000000000000005431130004081100000000000000000014081100020000000000000000000000240811001300000000000000370811000f000000000000005431130048081100000000000000000058081100010000000000000000000000600811000b00000000000000a9f912000e00000000000000543113006c08110000000000000000007c081100010000000000000000000000840811000400000000000000fc07110007000000000000005431130088081100000000000000000098081100010000000000000000000000a00811000800000000000000a0081100080000000000000054311300a80811000000000000000000b8081100010000000000000050726f706f73616c426f6e645065726d696c6c0012000000000000000100000055000000be09110055000000130a11004400000050726f706f73616c426f6e644d696e696d756d42616c616e63654f663c542c20493e0000120000000000000001000000450000006c091100520000005370656e64506572696f6400120000000000000001000000560000004a091100220000004275726e1200000000000000010000005700000006091100440000004d6f64756c65496412000000000000000100000058000000c008110046000000205468652074726561737572792773206d6f64756c652069642c207573656420666f72206465726976696e672069747320736f7665726569676e206163636f756e742049442e2050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e20506572696f64206265747765656e2073756363657373697665207370656e64732e204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e20416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e0000000000d0ce120008000000000000008c0b1100010000000000000000000000940b11000100000000000000000000009c0b11000800000000000000a40b1100010000000000000000000000ac0b1100010000000000000000000000b40b11000700000000000000bc0b1100030000000000000000000000d40b1100010000000000000000000000dc0b11000800000000000000e40b1100020000000000000000000000f40b1100010000000000000000000000fc0b11000500000000000000a40b1100010000000000000000000000040c11000100000000000000000000000c0c11000800000000000000a40b1100010000000000000000000000140c1100020000000000000000000000480312000700000000000000a40b1100010000000000000000000000240c11000100000000000000357c12000d000000c40d1100210000005370656e64696e67d5d1120007000000750d11004f0000004177617264656400357c12000d000000d5d112000700000079e51200090000002e0d11004700000052656a6563746564357c12000d000000d5d1120007000000e50c1100490000004275726e74000000b90c11002c000000526f6c6c6f766572580c11004c000000a40c1100150000002c0c11002c00000020536f6d652066756e64732068617665206265656e206465706f73697465642e205c5b6465706f7369745c5d205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e205c5b6275646765745f72656d61696e696e675c5d20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e205c5b6275726e5c5d20412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e205c5b70726f706f73616c5f696e6465782c20736c61736865645c5d20536f6d652066756e64732068617665206265656e20616c6c6f63617465642e205c5b70726f706f73616c5f696e6465782c2061776172642c2062656e65666963696172795c5d205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e205c5b6275646765745f72656d61696e696e675c5d204e65772070726f706f73616c2e205c5b70726f706f73616c5f696e6465785c5d0000002c0713005500000069000000010000002813130056000000ef010000010000009013130056000000c10000000100000000000000a9b510001200000000000000d80f11000100000000000000000000008b3311000800000000000000e00f1100010000000000000000000000a1b510000800000000000000e80f110001000000000000000000000097b510000a00000000000000f00f11000100000000000000000000008db510000a00000000000000f80f110001000000000000000000000083b510000a000000000000000010110001000000000000000000000074b510000f000000000000000810110001000000000000000000000066b510000e000000000000001010110001000000000000000000000056b510001000000000000000181011000100000000000000000000004ab510000c00000000000000201011000100000000000000000000003db510000d000000000000002810110001000000000000000000000030b510000d00000000000000301011000100000000000000000000001fb510001100000000000000381011000100000000000000000000007a5011000e000000000000004010110001000000000000000000000019b51000060000000000000048101100010000000000000000000000bbb510000800000000000000501011000100000000000000c911110018000000b4111100150000009f11110015000000921111000d00000082111100100000006f111100130000005d111100120000004c11110011000000391111001300000023111100160000000c11110017000000f01011001c000000b51011003b000000981011001d0000007b1011001d0000005810110023000000205375622d6163636f756e742069736e2774206f776e65642062792073656e6465722e2053656e646572206973206e6f742061207375622d6163636f756e742e204163636f756e7420494420697320616c7265616479206e616d65642e204d6178696d756d20616d6f756e74206f66207265676973747261727320726561636865642e2043616e6e6f742061646420616e79206d6f72652e20546f6f206d616e79206164646974696f6e616c206669656c64732e205468652074617267657420697320696e76616c69642e2054686520696e64657820697320696e76616c69642e20496e76616c6964206a756467656d656e742e204a756467656d656e7420676976656e2e20537469636b79206a756467656d656e742e204e6f206964656e7469747920666f756e642e20466565206973206368616e6765642e20456d70747920696e6465782e204163636f756e742069736e2774206e616d65642e204163636f756e742069736e277420666f756e642e20546f6f206d616e7920737562732d6163636f756e74732e00000000000000e0e5100010000000000000006c131100010000000000000000000000d1e510000f0000000000000074131100010000000000000000000000c0e5100011000000000000007c131100010000000000000000000000afe510001100000000000000841311000100000000000000000000009de5100012000000000000008c13110001000000000000000000000088e5100015000000000000009413110001000000000000000000000075e5100013000000000000009c1311000100000000000000000000008b3311000800000000000000a41311000100000000000000000000007ea610000800000000000000ac1311000100000000000000000000006ae510000b00000000000000b41311000100000000000000000000005ce510000e00000000000000bc13110001000000000000000000000049e510001300000000000000c41311000100000000000000000000003ae510000f00000000000000cc131100010000000000000000000000f0e510000d00000000000000d41311000100000000000000c316110020000000971611002c0000006f16110028000000441611002b000000181611002c000000d415110044000000901511004400000058151100380000000c1511004c000000c414110048000000781411004c0000003a1411003e0000000514110035000000dc1311002900000020546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e20546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e20412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e204120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e204e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e204f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e204d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e205468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e20546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e2054686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e2054686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e2043616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e2043616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e205468726573686f6c64206d7573742062652032206f7220677265617465722e0000000000d0ff10001c000000000000001c1711000100000000000000000000004ab510000c00000000000000241711000100000000000000511711001f0000002c17110025000000204e6f2070726f706f73616c206f7220626f756e7479206174207468617420696e6465782e2050726f706f73657227732062616c616e636520697320746f6f206c6f772e2813130056000000020300001d0000002813130056000000cc03000036000000a0171100520000005c0100000f0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f626162652f7372632f6c69622e7273000004181100610000002e000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f617574686f726974792d646973636f766572792f7372632f6c69622e72734c6f6f6b7570007c18110057000000c0000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f7363686564756c65722f7372632f6c69622e72734167656e6461000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004261626545717569766f636174696f6e736c6f74206e756d626572206973207536343b2069742073686f756c642072656c61746520696e20736f6d652077617920746f2077616c6c20636c6f636b2074696d653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e0000a017110052000000640200000e000000a017110052000000660200003b00000054696d657374616d7020736c6f74206d757374206d61746368206043757272656e74536c6f746000a0171100520000003e0300000900000065706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b20716564000000a017110052000000060200000e000000a0171100520000000e0200000e00000065706f636820696e646578206973207536343b20697420697320616c77617973206f6e6c7920696e6372656d656e746564206279206f6e653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e00a0171100520000004b0200004600000045706f6368436f6e66696720697320696e697469616c697a656420696e2067656e657369733b207765206e65766572206074616b6560206f7220606b696c6c602069743b20716564a0171100520000005702000029000000a017110052000000440200002d000000a017110052000000a70000000f00000000000000542f12001300000000000000241c1100020000000000000000000000541c1100040000000000000000000000b82f12001c00000000000000241c1100020000000000000000000000741c1100080000000000000000000000b41c11001200000000000000c81c1100010000000000000000000000e01c11000400000000000000000000002034120012000000000000000a1f11001c000000000000005c3412000f000000000000006b34120010000000341e110043000000771e110042000000b91e110044000000fd1e11000d000000341e110043000000771e110042000000b91e110044000000fd1e11000d00000046331200440000008a33120046000000d033120046000000163412000a000000706c616e5f636f6e6669675f6368616e67650000000000001a1e11000600000000000000201e110014000000001d110058000000581d110055000000ad1d110057000000041e11001600000020506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e20746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e204d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164206e6f74206265656e20656e6163746564207965742e636f6e6669674e657874436f6e66696744657363726970746f72205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e45717569766f636174696f6e50726f6f663c543a3a4865616465723e000000000000fa4511000a0000000000000000000000e8f21200030000000000000000000000000000000000000000000000000000000000000054311300a82411000000000000000000b824110001000000000000000100000000000000a54511000b0000000000000000000000c0241100270000000000000000000000000000000000000000000000000000000000000054311300e82411000000000000000000f824110001000000000000000100000000000000e34511000b0000000000000000000000002511000400000000000000000000000000000000000000000000000000000000000000543113000425110000000000000000001425110002000000000000000100000000000000c94511000b0000000000000000000000002511000400000000000000000000000000000000000000000000000000000000000000543113000425110000000000000000002425110001000000000000000100000000000000424611000a00000000000000000000002c251100160000000000000000000000000000000000000000000000000000000000000054311300442511000000000000000000542511000a0000000000000001000000000000002a461100180000000000000000000000201e1100140000000000000000000000000000000000000000000000000000000000000054311300a42511000000000000000000b425110001000000000000000000000000000000974511000e00000000000000000000002c251100160000000000000000000000000000000000000000000000000000000000000054311300442511000000000000000000bc25110001000000000000000100000000000000ba4511000f0000000000000000000000c0241100270000000000000000000000000000000000000000000000000000000000000054311300e82411000000000000000000c425110001000000000000000100000000000000ee4511000c0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300cc2511000000000000000000dc25110009000000000000000100000000000000972d1200110000000105000000000000cbed12000300000000000000242611001b00000000000000000000000000000000000000543113004026110000000000000000005026110001000000000000000100000000000000174611000b0000000000000000000000582611000f0000000000000000000000000000000000000000000000000000000000000054311300682611000000000000000000782611000200000000000000000000000000000004461100130000000000000000000000582611000f00000000000000000000000000000000000000000000000000000000000000543113008826110000000000000000009826110003000000000000000100000000000000b04511000a000000000000000000000027371200200000000000000000000000000000000000000000000000000000000000000054311300b02611000000000000000000c02611000500000000000000010000000000000022461100080000000000000000000000a9f912000e0000000000000000000000000000000000000000000000000000000000000054311300cc2511000000000000000000e8261100050000000000000001000000000000008c4511000b0000000000000000000000102711001600000000000000000000000000000000000000000000000000000000000000543113002827110000000000000000003827110001000000000000000000000000000000d44511000f00000000000000000000001027110016000000000000000000000000000000000000000000000000000000000000005431130028271100000000000000000040271100020000000000000000000000120000000000000001000000590000005c301100150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e001200000000000000010000003f000000413011001b000000536c6f7412000000000000000100000059000000df2f11003e0000001d30110024000000ca2f1100150000007363686e6f72726b656c3a3a52616e646f6d6e65737300001200000000000000010000005a000000042e11002e0000005431130000000000322e11000b00000054311300000000003d2e1100410000007e2e11003e000000bc2e110045000000012f110045000000462f110041000000872f11004300000012000000000000000100000023000000ac2d110058000000952d1100170000007d2d11001800000012000000000000000100000022000000382c11001f0000005431130000000000572c11003d000000942c110040000000d42c1100250000005431130000000000f92c11003b000000342d110042000000762d1100070000005665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e001200000000000000010000003f000000f32b1100450000004d6179626552616e646f6d6e65737300120000000000000001000000230000006c2b110040000000ac2b110047000000120000000000000001000000230000007b2a110057000000d22a110054000000262b1100460000001200000000000000010000005b000000212911005700000078291100050000007d29110052000000cf29110056000000252a110056000000362811003600000054311300000000006c28110045000000b128110044000000f52811002c0000004261626545706f6368436f6e66696775726174696f6e000012000000000000000100000023000000d527110061000000502711004b0000009b2711003a0000002054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e67652028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e2054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e2067656e657369732e20486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e6564207570206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636b20657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e6420604e602e204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f6620656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e20736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e657261746564206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c657373207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f636820617574686f7269746965732e204e6578742065706f63682072616e646f6d6e6573732e2050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e00000000000000e43011000d00000000000000e8f21200030000000000000054311300f43011000000000000000000043111000300000000000000000000001c31110011000000000000003347120009000000000000005431130030311100000000000000000040311100050000000000000045706f63684475726174696f6e0000001200000000000000010000005c000000983211003b000000d33211004600000019331100480000004578706563746564426c6f636b54696d650000001200000000000000010000005d0000006831110041000000a931110044000000ed311100410000002e32110042000000703211002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e2061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e0000007c18110057000000b300000001000000546172676574426c6f636b4e756d626572496e506173744e6f74466f756e644661696c6564546f5363686564756c6552657363686564756c654e6f4368616e676500000000000000a8fc11000800000000000000c0341100040000000000000000000000203511000a000000000000000000000070351100060000000000000078351100020000000000000000000000a83511000a0000000000000000000000f83511000e0000000000000008361100050000000000000000000000803611000a0000000000000000000000d03611000c00000000000000dc361100010000000000000000000000f43611000a0000000000000000000000443711000e0000000000000054371100040000000000000000000000b4371100050000000000000000000000dc3711001400000000000000f037110005000000000000000000000068381100050000000000000000000000e93a11000400000000000000a9f912000e00000000000000d83811000e00000000000000e638110028000000000000000e3911000800000000000000163911001200000000000000a80e13000400000000000000ac0e1300180000004b3b11001d0000005431130000000000f2eb12000b0000008839110028000000683b110024000000c0ef12000d000000383b1100130000008c3b110014000000a03b11004f00000036ec12000c00000063616e63656c000000000000e93a11000400000000000000a9f912000e00000000000000a00e13000500000000000000cbed120003000000ed3a1100260000005431130000000000f2eb12000b0000008839110028000000133b110025000000c0ef12000d000000383b110013000000f03911001c0000000c3a11005000000036ec12000c0000007363686564756c655f6e616d6564000000000000d1381100020000000000000042ec12000700000000000000e93a11000400000000000000a9f912000e00000000000000d83811000e00000000000000e638110028000000000000000e3911000800000000000000163911001200000000000000a80e13000400000000000000ac0e1300180000005c3a1100170000005431130000000000f2eb12000b0000008839110028000000733a110023000000c0ef12000d000000d53911001b000000f03911001c000000963a11005300000036ec12000c00000063616e63656c5f6e616d656400000000d1381100020000000000000042ec120007000000693911001f0000005431130000000000f2eb12000b0000008839110028000000b039110025000000c0ef12000d000000d53911001b000000f03911001c0000000c3a11005000000036ec12000c0000007363686564756c655f6166746572000000000000d33811000500000000000000a9f912000e00000000000000d83811000e00000000000000e638110028000000000000000e3911000800000000000000163911001200000000000000a80e13000400000000000000ac0e130018000000283911002b0000005431130000000000f2eb12000b000000533911001600000036ec12000c0000007363686564756c655f6e616d65645f616674657200000000d1381100020000000000000042ec12000700000000000000d33811000500000000000000a9f912000e00000000000000d83811000e00000000000000e638110028000000000000000e3911000800000000000000163911001200000000000000a80e13000400000000000000ac0e13001800000090381100250000005431130000000000f2eb12000b000000b53811001c00000036ec12000c000000205363686564756c652061206e616d6564207461736b20616674657220612064656c61792e2053616d65206173205b607363686564756c655f6e616d6564605d2e696461667465726d617962655f706572696f6469634f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e7072696f726974797363686564756c653a3a5072696f7269747920416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e2053616d65206173205b607363686564756c65605d2e2043616e63656c2061206e616d6564207363686564756c6564207461736b2e202d2053203d204e756d626572206f6620616c7265616479207363686564756c65642063616c6c73202d2042617365205765696768743a2032342e3931202b20322e393037202a205320c2b57320202020202d20526561643a204167656e64612c204c6f6f6b757020202020202d2057726974653a204167656e64612c204c6f6f6b7570202d2057696c6c20757365206261736520776569676874206f66203130302077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c73205363686564756c652061206e616d6564207461736b2e202d2042617365205765696768743a2032392e36202b202e313539202a205320c2b573202d2057696c6c20757365206261736520776569676874206f662033352077686963682073686f756c6420626520676f6f6420666f72206d6f7265207468616e203330207363686564756c65642063616c6c737768656e2043616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e202d2042617365205765696768743a2032322e3135202b20322e383639202a205320c2b57320202020202d20526561643a204167656e646120416e6f6e796d6f75736c79207363686564756c652061207461736b2e202d2042617365205765696768743a2032322e3239202b202e313236202a205320c2b57320202020202d2057726974653a204167656e6461202d2057696c6c20757365206261736520776569676874206f662032352077686963682073686f756c6420626520676f6f6420666f7220757020746f203330207363686564756c65642063616c6c730000000000d3181100060000000105000000000000a9f912000e00000000000000f83c11005c0000000000000000000000000000000000000054311300543d11000000000000000000643d1100010000000000000001000000000000006518110006000000010500000000000042ec120007000000000000006c3d11001b0000000000000000000000000000000000000054311300883d11000000000000000000983d1100010000000000000000000000000000009cbe12000e0000000000000000000000aabe1200080000000000000000000000000000000000000000000000000000000000000054311300a03d11000000000000000000c4be12000300000000000000010000005665633c4f7074696f6e3c5363686564756c65643c3c5420617320436f6e6669673e3a3a43616c6c2c20543a3a426c6f636b4e756d6265722c20543a3a0a50616c6c6574734f726967696e2c20543a3a4163636f756e7449643e3e3e1200000000000000010000003f000000f03d1100530000005461736b416464726573733c543a3a426c6f636b4e756d6265723e0012000000000000000100000023000000b03d1100400000001200000000000000010000005e000000204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e0000000000c83e11000900000000000000d43e1100020000000000000000000000e43e1100010000000000000000000000ec3e11000800000000000000d43e1100020000000000000000000000f43e1100010000000000000000000000fc3e11000a00000000000000083f1100030000000000000000000000203f110001000000000000005363686564756c656400000085d312000b000000cbed1200030000009e3f11002500000043616e63656c65647a3f110024000000446973706174636865640000533f1100180000006b3f11000f000000637a12000e000000283f11002b000000204469737061746368656420736f6d65207461736b2e205c5b7461736b2c2069642c20726573756c745c5d5461736b416464726573733c426c6f636b4e756d6265723e4f7074696f6e3c5665633c75383e3e2043616e63656c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d205363686564756c656420736f6d65207461736b2e205c5b7768656e2c20696e6465785c5d00120000000000000001000000210000000440110061000000ab010000290000001200000000000000010000005f0000000440110061000000ae010000340000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f6e706f732d656c656374696f6e732f7372632f6c69622e7273766563746f72207769746820706f736974697665206c656e6774682077696c6c20686176652061206d61783b20716564000000dc7c120067000000780000000e0000006974657261746f72207769746820706f736974697665206c656e6774682077696c6c20686176652061206d696e3b207165640000dc7c1200670000007c0000000e000000dc7c120067000000890000002c000000dc7c120067000000950000002b0000006c656e677468206f6620656c65637465645f65646765732069732067726561746572207468616e206f7220657175616c20323b206c6173745f696e64657820696e64657820697320617420746865206d696e696d756d20656c65637465645f65646765732e6c656e2829202d20313b20696e6465782069732077697468696e2072616e67653b207165640000dc7c1200670000009f00000034000000dc7c120067000000a200000011000000dc7c120067000000ac0000002c000000dc7c120067000000b80000002c000000dc7c12006700000055000000210000000440110061000000a30100002c000000dc7c1200670000006d0000002200000004401100610000002303000025000000044011006100000023030000360000000440110061000000290300002f00000000000000933311001000000000000000a84211000100000000000000000000008b3311000800000000000000b0421100010000000000000000000000743311001700000000000000b8421100010000000000000000000000a33311001200000000000000c042110001000000000000004f4311001a0000002f43110020000000054311002a000000c84211003d0000002052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e20476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e2043616e6e6f742066696e6420746865207363686564756c65642063616c6c2e204661696c656420746f207363686564756c6520612063616c6c000000000000005f2e12001800000000000000d04d1200010000000000000000000000772e12001800000000000000c84d1200010000000000000000000000ba2e12001600000000000000d84d1200010000000000000050726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b207165640000284411005c0000005701000011000000844411003d0000000000000000000000284411005c0000005e010000110000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e302e302f7372632f636f6d706163742e7273736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b20716564000000284411005c00000083010000110000000000000000000000000000000000000000000000284411005c0000008a01000011000000084511005c00000034000000120000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f72756e74696d652f7372632f63757276652e72734368617267655472616e73616374696f6e5061796d656e7444656665727265644f6666656e63657345706f6368436f6e6669674e65787452616e646f6d6e657373417574686f72697469657345706f636853746172744e657874417574686f72697469657343757272656e74536c6f744e65787445706f6368436f6e66696747656e65736973536c6f745365676d656e74496e64657845706f6368496e646578417574686f7256726652616e646f6d6e657373496e697469616c697a65644c6174656e65737350656e64696e6745706f6368436f6e6669674368616e676552616e646f6d6e657373457261456c656374696f6e537461747573536e617073686f7456616c696461746f727351756575656453636f7265517565756564456c6563746564497343757272656e7453657373696f6e46696e616c536e617073686f744e6f6d696e61746f727300000000000010481100070000000105000000000000174811000d000000000000002448110034000000000000000000000000000000000000005431130058481100000000000000000068481100010000000000000000000000000000007c451100100000000000000000000000704811001900000000000000000000000000000000000000000000000000000000000000543113008c48110000000000000000009c48110002000000000000000100000000000000ac481100160000000205050000000000c24811000400000000000000c64811000e00000000000000d4481100120000000000000054311300e84811000000000000000000f84811000100000000000000010000000000000000491100120000000105000000000000c2481100040000000000000042ec1200070000000000000000000000000000000000000054311300144911000000000000000000244911000600000000000000010000005265706f7274735265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e12000000000000000100000060000000274b1100520000005665633c44656665727265644f6666656e63654f663c543e3e00000012000000000000000100000061000000bd4a110059000000164b110011000000436f6e63757272656e745265706f727473496e6465784b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e000012000000000000000100000062000000734a11004a0000005265706f72747342794b696e64496e64657800001200000000000000010000006300000054491100440000005431130000000000984911002f0000005431130000000000c749110052000000194a11005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d69747465642061742061206c617465722074696d652e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e696d2d6f6e6c696e653a6f66666c696e6772616e6470613a65717569766f6361626162653a65717569766f636174696f000000000000005c4c11001100000000000000000000006d4c11000a0000000000000000000000000000000000000000000000000000000000000054311300784c1100000000000000000054311300000000000000000001000000000000009cbe12000e0000000000000000000000aabe1200080000000000000000000000000000000000000000000000000000000000000054311300884c11000000000000000000543113000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c69657200120000000000000001000000640000001200000000000000010000005e00000000000000084d1100120000000000000057a912000c00000000000000543113001c4d110000000000000000002c4d1100010000000000000000000000344d11000b000000000000003f4d1100290000000000000054311300684d11000000000000000000784d110001000000000000005472616e73616374696f6e42797465466565000012000000000000000100000065000000c34d110043000000576569676874546f4665655665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e12000000000000000100000066000000804d1100430000002054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e0000184e11005600000074000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6f6666656e6365732f7372632f6c69622e7273000012000000000000000100000021000000dc7c120067000000650000001e000000984e11001a0000004552524f523a20436f7272757074656420737461746520617420457261735374616b657273000000647c1200660000006c0000001d000000647c1200660000006c00000039000000647c120066000000a70000001f00000056616c696461746f72730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000784f11005d00000021020000330000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f737570706f72742f7372632f73746f726167652f6d6f642e7273436865636b576569676874426164206d616e6461746f727945726173526577617264506f696e747356616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e4572615370616e536c617368536c617368696e675370616e73546f6f4d616e79546172676574734261645374617465496e636f7272656374536c617368696e675370616e73496e636f7272656374486973746f72794465707468416c7265616479436c61696d65644e6f74536f72746564416e64556e69717565496e76616c69644e756d6265724f664e6f6d696e6174696f6e73496e76616c6964457261546f52657761726446756e6465645461726765744e6f556e6c6f636b4368756e6b4e6f4d6f72654368756e6b73496e73756666696369656e7456616c7565496e76616c6964536c617368496e6465784475706c6963617465496e646578456d70747954617267657473416c7265616479506169726564416c7265616479426f6e6465644e6f7453746173684e6f74436f6e74726f6c6c65724261645461726765744e6f6d696e61746f72734c6564676572000000000064551100040000000000000068551100030000000000000000000000b0551100160000000000000000000000605611000a000000000000006c561100010000000000000000000000845611001500000000000000000000002c5711000600000000000000345711000100000000000000000000004c5711002000000000000000000000004c581100110000000000000060581100010000000000000000000000785811001f00000000000000000000007059110008000000000000007859110001000000000000000000000090591100110000000000000000000000185a11000800000000000000205a1100010000000000000000000000385a1100130000000000000000000000d05a1100050000000000000054311300000000000000000000000000d85a1100110000000000000000000000605b110009000000000000006c5b1100010000000000000000000000845b1100100000000000000000000000045c11000e00000000000000145c11000100000000000000000000002c5c1100100000000000000000000000ac5c11001300000000000000c05c1100010000000000000000000000d85c1100080000000000000000000000185d11001800000000000000305d1100010000000000000000000000485d1100070000000000000000000000805d11001500000000000000985d1100010000000000000000000000b05d1100070000000000000000000000e85d11000d0000000000000054311300000000000000000000000000f85d1100090000000000000000000000405e11000d0000000000000054311300000000000000000000000000505e11000a0000000000000000000000a05e11001100000000000000b45e1100010000000000000000000000cc5e11000800000000000000000000000c5f11000d000000000000001c5f11000200000000000000000000004c5f11000a00000000000000000000009c5f1100140000000000000054311300000000000000000000000000b05f1100080000000000000000000000f05f1100150000000000000008601100020000000000000000000000386011000d0000000000000000000000a06011000e00000000000000b0601100020000000000000000000000e06011001c0000000000000000000000c0611100060000000000000034571100010000000000000000000000c86111000e00000000000000000000003862110011000000000000004c6211000200000000000000000000007c621100150000000000000000000000246311000a000000000000001c5f1100020000000000000000000000306311000f0000000000000000000000a86311000400000000000000ac631100010000000000000000000000c46311000d00000000000000626f6e6400000000407911000a0000000000000085fc1100230000000000000048b6120005000000000000004db612001500000000000000a87911000500000000000000ad7911001f000000f4871100590000004d8811002100000054311300000000006e8811004c0000005431130000000000ba88110049000000543113000000000053871100100000005431130000000000f2eb12000b00000003891100350000006387110008000000388911001a00000054311300000000005289110054000000a689110050000000f6891100130000008b7711000d000000c15f12000b000000098a11004c000000558a11003800000036ec12000c000000626f6e645f6578747261000000000000e68711000e000000000000004db61200150000009785110059000000f08511000d0000005431130000000000fd851100540000005186110059000000aa861100130000005431130000000000bd86110058000000158711003e000000543113000000000053871100100000005431130000000000f2eb12000b000000287811003a00000063871100080000000d851100100000006b8711000d000000c15f12000b0000007887110045000000bd8711002900000036ec12000c000000756e626f6e6400000000000048b6120005000000000000004db612001500000028811100550000007d81110040000000bd811100490000005431130000000000068211005200000058821100300000005431130000000000888211004f000000d78211004f000000268311003f00000054311300000000009c64110055000000fe7911004300000054311300000000006583110012000000543113000000000077831100260000005431130000000000f2eb12000b0000009d831100500000006278110026000000ed83110059000000468411005c000000a284110054000000f6841100170000000d85110010000000ba7811000b0000008b7711000d000000c15f12000b0000001d8511004700000064851100290000008d8511000a00000077697468647261775f756e626f6e646564000000000000009d7511001200000000000000cbed120003000000147d11004b00000054311300000000005f7d11004d000000ac7d11001300000054311300000000009c64110055000000fe791100430000005431130000000000bf7d1100130000005431130000000000d27d11001b0000005431130000000000f2eb12000b000000ed7d110055000000427e110051000000937e11003d000000d07e11005e0000008878110032000000756d1100100000002e7f110042000000707f110008000000787f110049000000c17f11002a000000eb7f110006000000f17f11005100000042801100230000006580110054000000b98011002c000000c56811001d000000e58011004300000036ec12000c00000076616c696461746500000000017d11000500000000000000067d11000e000000837c11003a0000005431130000000000656411003700000054311300000000009c64110055000000fe791100430000005431130000000000f2eb12000b000000287811003a00000062781100260000008878110032000000157011000c0000008b7711000d000000c15f12000b000000bd7c110024000000e17c11002000000036ec12000c0000006e6f6d696e617465000000007c7c110007000000000000006366110028000000a17a1100440000005431130000000000e57a110054000000bb6c11002300000054311300000000009c64110055000000fe791100430000005431130000000000f2eb12000b000000397b11004c000000857b110040000000c57b110036000000787911000a000000fb7b11000d000000087c110021000000c15f12000b000000297c1100320000005b7c11002100000036ec12000c0000006368696c6c000000cc791100320000005431130000000000656411003700000054311300000000009c64110055000000fe791100430000005431130000000000f2eb12000b000000287811003a000000417a1100150000008878110032000000567a1100090000008b7711000d000000c15f12000b0000005f7a110022000000817a11002000000036ec12000c0000007365745f706179656500000000000000a87911000500000000000000ad7911001f0000004a7911002e0000005431130000000000656411003700000054311300000000009c641100550000005431130000000000f2eb12000b000000287811003a00000062781100260000008878110032000000787911000a0000004f7411000f000000c0ef12000d0000008279110013000000957911001300000036ec12000c0000007365745f636f6e74726f6c6c6572000000000000407911000a0000000000000085fc110023000000af77110024000000543113000000000065641100370000005431130000000000d3771100550000005431130000000000f2eb12000b000000287811003a00000062781100260000008878110032000000ba7811000b0000008b7711000d000000c15f12000b000000c57811003d000000027911003e00000036ec12000c0000007365745f76616c696461746f725f636f756e740000000000871913000300000000000000d2a012000c000000667711002500000054311300000000002d741100220000005431130000000000f2eb12000b0000008b7711000d000000987711001700000036ec12000c000000696e6372656173655f76616c696461746f725f636f756e74000000005c7711000a00000000000000d2a012000c000000317711002b00000054311300000000002d741100220000005431130000000000f2eb12000b0000000a7711002100000036ec12000c0000007363616c655f76616c696461746f725f636f756e74000000000000002b7711000600000000000000c1ef110007000000d57611003500000054311300000000002d741100220000005431130000000000f2eb12000b0000000a7711002100000036ec12000c000000666f7263655f6e6f5f65726173000000a97611002c00000054311300000000002d741100220000005431130000000000f2eb12000b00000088761100100000004f7411000f0000005e7411001200000036ec12000c000000666f7263655f6e65775f6572610000000d76110053000000607611002800000054311300000000002d741100220000005431130000000000f2eb12000b00000088761100100000004f7411000f000000987611001100000036ec12000c0000007365745f696e76756c6e657261626c657300000000000000007611000d000000000000002c1a130011000000af7511003300000054311300000000002d741100220000005431130000000000f2eb12000b000000e275110007000000e97511001700000036ec12000c000000666f7263655f756e7374616b6500000000000000987511000500000000000000e3f812000c000000000000009d7511001200000000000000cbed120003000000707411004300000054311300000000002d741100220000005431130000000000f2eb12000b000000b37411003b000000ee7411002e0000001c751100610000007d7511001b00000036ec12000c000000666f7263655f6e65775f6572615f616c77617973ec7311004100000054311300000000002d741100220000005431130000000000f2eb12000b0000004f7411000f0000005e7411001200000036ec12000c00000063616e63656c5f64656665727265645f736c617368000000000000008b72110003000000000000008e7211000800000000000000d77311000d00000000000000e47311000800000096721100260000005431130000000000bc7211002d0000005431130000000000e9721100410000005431130000000000f2eb12000b0000002a731100150000003f7311002e0000006d73110035000000a27311001a000000bc7311001b00000036ec12000c0000007061796f75745f7374616b6572730000000000007c7211000f00000000000000e3f812000c000000000000008b72110003000000000000008e72110008000000f36d1100440000005431130000000000376e1100530000008a6e11004a000000d46e11004d0000005431130000000000216f110056000000776f11001e0000005431130000000000956f1100400000005431130000000000f2eb12000b000000d56f110040000000f40d120031000000157011000c0000002170110047000000687011000800000070701100220000009270110031000000c15f12000b000000c37011004a0000000d7111004b00000058711100440000009c711100360000005431130000000000d271110054000000267211005600000036ec12000c0000007265626f6e6400002e6c1100380000005431130000000000666c110055000000bb6c1100230000005431130000000000f2eb12000b000000de6c110035000000136d110025000000386d11003d000000756d110010000000c0ef12000d000000856d110040000000c56d11002e00000036ec12000c0000007365745f686973746f72795f646570746800000000000000fa6b110011000000000000000b6c110011000000000000001c6c11001200000000000000d2a012000c000000e26811004c0000002e691100200000005431130000000000355f12000c0000004e691100440000009269110052000000e469110051000000356a110051000000866a1100280000005431130000000000ae6a1100150000005431130000000000f2eb12000b000000c36a110038000000fb6a11000f000000c0ef12000d0000000a6b110028000000326b11001c0000004e6b11004c0000009a6b11006000000036ec12000c000000726561705f737461736800008b66110058000000e3661100580000003b6711003e0000005431130000000000796711002400000054311300000000009d671100400000005431130000000000f2eb12000b000000dd67110049000000c15f12000b00000026681100360000005c68110069000000c56811001d00000036ec12000c0000006b69636b00000000791b1300030000000000000063661100280000002c641100390000005431130000000000656411003700000054311300000000009c64110055000000f164110052000000436511002600000054311300000000006965110054000000bd651100310000005431130000000000ee65110056000000446611001f0000002052656d6f76652074686520676976656e206e6f6d696e6174696f6e732066726f6d207468652063616c6c696e672076616c696461746f722e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e20416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e2054686520636f6e74726f6c6c6572206163636f756e742073686f756c6420726570726573656e7420612076616c696461746f722e202d206077686f603a2041206c697374206f66206e6f6d696e61746f72207374617368206163636f756e74732077686f20617265206e6f6d696e6174696e6720746869732076616c696461746f7220776869636820202073686f756c64206e6f206c6f6e676572206265206e6f6d696e6174696e6720746869732076616c696461746f722e204e6f74653a204d616b696e6720746869732063616c6c206f6e6c79206d616b65732073656e736520696620796f7520666972737420736574207468652076616c696461746f7220707265666572656e63657320746f20626c6f636b20616e792066757274686572206e6f6d696e6174696f6e732e5665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e2052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e6520616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e20546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e20436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e202d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73202d2057726974657320456163683a205370616e536c617368202a2053205365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e207768656e2060486973746f727944657074686020697320726564756365642e202d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e202d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e20202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c642020202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062792020202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e204f726967696e206d75737420626520726f6f742e202d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033202d205765696768743a204f28452920202020202d2052656164733a2043757272656e74204572612c20486973746f727920446570746820202020202d205772697465733a20486973746f727920446570746820202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f72507265667320202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465786e65775f686973746f72795f6465707468436f6d706163743c457261496e6465783e5f6572615f6974656d735f64656c65746564205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e20546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73202d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602e202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d20202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745d20202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657220506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f20202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e20546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966206974206973206e6f74206f6e65206f6620746865207374616b6572732e20546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292e202d2d2d2d2d2d2d2d2d2d2d204e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f7229205765696768743a202d205265776172642044657374696e6174696f6e205374616b65643a204f284e29202d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29202d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c202020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d7329202d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329202d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292020204e4f54453a20776569676874732061726520617373756d696e672074686174207061796f75747320617265206d61646520746f20616c697665207374617368206163636f756e7420285374616b6564292e202020506179696e67206576656e2061206465616420636f6e74726f6c6c65722069732063686561706572207765696768742d776973652e20576520646f6e277420646f20616e7920726566756e647320686572652e76616c696461746f725f7374617368657261457261496e6465782043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e20506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e20436f6d706c65786974793a204f2855202b2053292077697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d3130303020616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e202d20526561643a20556e6170706c69656420536c6173686573202d2057726974653a20556e6170706c69656420536c6173686573736c6173685f696e64696365735665633c7533323e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e20546865206469737061746368206f726967696e206d75737420626520526f6f742e202d205765696768743a204f283129202d2057726974653a20466f72636545726120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f7665642052656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b73205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b732057726974657320456163683a205370616e536c617368202a205373746173686e756d5f736c617368696e675f7370616e7320536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e202d204f285629202d2057726974653a20496e76756c6e657261626c6573696e76756c6e657261626c657320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e202d20577269746520466f72636545726120466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e205363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e2053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e666163746f7220496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e6164646974696f6e616c20536574732074686520696465616c206e756d626572206f662076616c696461746f72732e205765696768743a204f2831292057726974653a2056616c696461746f7220436f756e74202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d2d2d202d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572202d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572636f6e74726f6c6c6572202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e202d2d2d2d2d2d2d2d2d20202020202d20526561643a204c656467657220202020202d2057726974653a205061796565706179656552657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e20416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e202d20436f6e7461696e73206f6e6520726561642e202d2d2d2d2d2d2d2d202d20526561643a20457261456c656374696f6e5374617475732c204c6564676572202d2057726974653a2056616c696461746f72732c204e6f6d696e61746f7273204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e292077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e205765696768743a204f284e29207768657265204e20697320746865206e756d626572206f662074617267657473202d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261202d205772697465733a2056616c696461746f72732c204e6f6d696e61746f727374617267657473204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20526561643a2045726120456c656374696f6e205374617475732c204c6564676572202d2057726974653a204e6f6d696e61746f72732c2056616c696461746f7273707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e20456d697473206057697468647261776e602e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e20436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f7665205570646174653a202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745d202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572204b696c6c3a202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e2020204163636f756e745d2c204c6f636b732c2042616c616e63654f66207374617368202d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c2020205b4f726967696e204163636f756e745d2c204c6f636b732c2042616c616e63654f662073746173682e204e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e20456d6974732060556e626f6e646564602e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669612020206077697468647261775f756e626f6e646564602e202d204f6e6520444220656e7472792e202d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c2042616c616e63654f662053746173682c202d2057726974653a204c6f636b732c204c65646765722c2042616c616e63654f662053746173682c203c2f7765696768743e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e642069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e20456d6974732060426f6e646564602e202d204f2831292e202d2d2d2d2d2d2d2d2d2d2d2d202d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73202d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765726d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73202d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c656467657200000000000000e09411000c0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300ec9411000000000000000000fc94110007000000000000000100000000000000349511000e0000000000000000000000cbed120003000000000000000000000000000000000000000000000000000000000000005431130044951100000000000000000054951100010000000000000001000000000000005c951100150000000000000000000000cbed120003000000000000000000000000000000000000000000000000000000000000005431130074951100000000000000000084951100010000000000000001000000000000008c9511000d00000000000000000000002c1a13001100000000000000000000000000000000000000000000000000000000000000543113009c9511000000000000000000ac95110003000000000000000100000000000000c4951100060000000105000000000000e3f812000c00000000000000e3f812000c0000000000000000000000000000000000000054311300cc9511000000000000000000dc9511000100000000000000000000000000000069511100060000000102000000000000e3f812000c00000000000000e4951100290000000000000000000000000000000000000054311300109611000000000000000000209611000100000000000000000000000000000028961100050000000105000000000000e3f812000c00000000000000ad7911001f00000000000000000000000000000000000000543113003096110000000000000000004096110001000000000000000100000000000000f04e11000a0000000105000000000000e3f812000c00000000000000067d11000e000000000000000000000000000000000000005431130048961100000000000000000058961100010000000000000001000000000000005f5111000a0000000105000000000000e3f812000c00000000000000609611001900000000000000000000000000000000000000543113007c96110000000000000000008c96110001000000000000000000000000000000949611000a00000000000000000000008e721100080000000000000000000000000000000000000000000000000000000000000054311300a09611000000000000000000b096110004000000000000000000000000000000d0961100090000000000000000000000d99611000d0000000000000000000000000000000000000000000000000000000000000054311300e89611000000000000000000f896110004000000000000000000000000000000189711001500000001050000000000008e7211000800000000000000a03712000c00000000000000000000000000000000000000543113003097110000000000000000004097110004000000000000000000000000000000b24e11000b00000002050500000000008e7211000800000000000000e3f812000c00000000000000609711002400000000000000543113008497110000000000000000009497110006000000000000000100000000000000c49711001200000002050500000000008e7211000800000000000000e3f812000c0000000000000060971100240000000000000054311300d89711000000000000000000e89711000b000000000000000100000000000000409811001200000002050500000000008e7211000800000000000000e3f812000c00000000000000067d11000e000000000000005431130054981100000000000000000064981100050000000000000001000000000000008c9811001300000001050000000000008e721100080000000000000057a912000c0000000000000000000000000000000000000054311300a09811000000000000000000b098110003000000000000000000000000000000ed4f11001000000001050000000000008e7211000800000000000000c89811001d0000000000000000000000000000000000000054311300e89811000000000000000000f898110002000000000000000100000000000000089911000e00000001050000000000008e721100080000000000000057a912000c00000000000000000000000000000000000000543113001899110000000000000000002899110002000000000000000100000000000000389911000800000000000000000000004099110007000000000000000000000000000000000000000000000000000000000000005431130048991100000000000000000058991100010000000000000001000000000000006099110013000000000000000000000055f3120007000000000000000000000000000000000000000000000000000000000000005431130074991100000000000000000084991100030000000000000001000000000000009c99110013000000000000000000000057a912000c0000000000000000000000000000000000000000000000000000000000000054311300b09911000000000000000000c099110002000000000000000100000000000000d09911001000000001050000000000008e7211000800000000000000e09911002f0000000000000000000000000000000000000054311300109a11000000000000000000209a110001000000000000000100000000000000289a11000a0000000000000000000000329a11001d0000000000000000000000000000000000000000000000000000000000000054311300509a11000000000000000000609a110004000000000000000100000000000000fd4f11001300000002050500000000008e7211000800000000000000e3f812000c00000000000000809a1100170000000000000054311300989a11000000000000000000a89a110002000000000000000000000000000000105011001300000002050500000000008e7211000800000000000000e3f812000c0000000000000057a912000c0000000000000054311300b89a11000000000000000000c89a1100010000000000000000000000000000002c5011000d0000000105000000000000e3f812000c00000000000000d09a1100170000000000000000000000000000000000000054311300e89a11000000000000000000f89a11000100000000000000000000000000000023501100090000000105000000000000009b11002300000000000000239b1100220000000000000000000000000000000000000054311300489b11000000000000000000589b110002000000000000000100000000000000689b11001600000000000000000000008e721100080000000000000000000000000000000000000000000000000000000000000054311300809b11000000000000000000909b110001000000000000000000000000000000989b1100150000000000000000000000a03712000c0000000000000000000000000000000000000000000000000000000000000054311300b09b11000000000000000000c09b1100030000000000000001000000000000009cbe12000e0000000000000000000000aabe1200080000000000000000000000000000000000000000000000000000000000000054311300d89b11000000000000000000e89b1100040000000000000001000000486973746f72794465707468120000000000000001000000670000009fa91100230000005431130000000000c2a911004e000000543113000000000010aa11005800000068aa11004e000000b6aa11000c00000056616c696461746f72436f756e7400001200000000000000010000002200000075a911002a0000004d696e696d756d56616c696461746f72436f756e740000001200000000000000010000002200000025a9110050000000496e76756c6e657261626c65730000001200000000000000010000003f00000051a8110056000000a7a8110053000000faa811002b000000426f6e64656400001200000000000000010000002300000011a81100400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e00000012000000000000000100000023000000c0a711005100000050617965650000001200000000000000010000005e00000087a71100390000001200000000000000010000006800000036a71100510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e00000012000000000000000100000023000000dda611005900000043757272656e744572610000120000000000000001000000230000004da6110017000000543113000000000064a6110059000000bda6110020000000416374697665457261416374697665457261496e666f00001200000000000000010000002300000096a51100360000005431130000000000cca511005600000022a611002b00000045726173537461727453657373696f6e496e64657800000012000000000000000100000023000000b6a411004c000000543113000000000002a51100580000005aa511003c0000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e1200000000000000010000006900000098a411001e000000543113000000000038a2110058000000543113000000000090a211002a00000048a4110050000000457261735374616b657273436c6970706564000012000000000000000100000069000000baa21100260000005431130000000000e0a211005600000036a31100370000006da3110047000000b4a311003d0000005431130000000000f1a3110057000000543113000000000090a211002a00000048a41100500000004572617356616c696461746f725072656673000012000000000000000100000068000000f4a1110044000000543113000000000038a2110058000000543113000000000090a211002a0000004572617356616c696461746f7252657761726400120000000000000001000000230000006aa11100420000005431130000000000aca1110048000000457261526577617264506f696e74733c543a3a4163636f756e7449643e0000001200000000000000010000006a000000f6a011002b00000021a111004900000045726173546f74616c5374616b6500001200000000000000010000004100000074a011003b000000afa0110047000000466f726365457261466f7263696e67001200000000000000010000005e0000005fa0110015000000536c6173685265776172644672616374696f6e0012000000000000000100000022000000e89f11003e000000543113000000000026a011003900000043616e63656c6564536c6173685061796f75740012000000000000000100000041000000689f110045000000ad9f11003b000000556e6170706c696564536c61736865735665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e001200000000000000010000006b000000379f110031000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e001200000000000000010000006c0000008d9e1100490000005431130000000000d69e110032000000089f11002f0000002850657262696c6c2c2042616c616e63654f663c543e290012000000000000000100000023000000209e110051000000719e11001c00000012000000000000000100000023000000c89d110058000000736c617368696e673a3a536c617368696e675370616e730012000000000000000100000023000000a59d11002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e0000001200000000000000010000006d000000289d11004f000000779d11002e0000004561726c69657374556e6170706c696564536c617368000012000000000000000100000023000000e99c11003f00000043757272656e74506c616e6e656453657373696f6e00000012000000000000000100000022000000639c11003a00000054311300000000009d9c11004c0000001200000000000000010000006e000000089c110033000000dcbe12001f00000054311300000000003b9c1100280000002054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e20546869732069732073657420746f2076362e302e3020666f72206e6577206e6574776f726b732e20546865206c61737420706c616e6e65642073657373696f6e207363686564756c6564206279207468652073657373696f6e2070616c6c65742e2054686973206973206261736963616c6c7920696e2073796e632077697468207468652063616c6c20746f205b6053657373696f6e4d616e616765723a3a6e65775f73657373696f6e605d2e20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653a20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d6020416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e204d6f6465206f662065726120666f7263696e672e2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e2054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e2045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e2053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e2054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e2049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e20436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e20546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f207468652060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e20284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292e2054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e2054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e204578706f73757265206f662076616c696461746f72206174206572612e205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e67206163746976652920666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e20546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e2054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d75737420626520657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e205468652063757272656e742065726120696e6465782e205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f72207365742c206974206d6967687420626520616374697665206f72206e6f742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e20496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e000000000000dcab11000e00000000000000a03712000c0000000000000054311300ecab11000000000000000000fcab110001000000000000000000000004ac11000f000000000000008e72110008000000000000005431130014ac1100000000000000000024ac11000100000000000000000000002cac110012000000000000008e72110008000000000000005431130040ac1100000000000000000050ac110005000000000000000000000078ac11002000000000000000cbed120003000000000000005431130098ac11000000000000000000a8ac1100040000000000000000000000c8ac11000e00000000000000cbed1200030000000000000054311300d8ac11000000000000000000e8ac1100010000000000000053657373696f6e7350657245726100001200000000000000010000006f000000feae11001c000000426f6e64696e674475726174696f6e0012000000000000000100000070000000c5ae110039000000536c61736844656665724475726174696f6e000012000000000000000100000071000000fdad11004000000054311300000000003dae11002f0000006cae11004b000000b7ae11000e0000004d61784e6f6d696e61746f72526577617264656450657256616c696461746f72120000000000000001000000720000001dad11003e00000054311300000000005bad11005a000000b5ad1100480000004d61784e6f6d696e6174696f6e73000012000000000000000100000073000000f0ac11002d000000204d6178696d756d206e756d626572206f66206e6f6d696e6174696f6e7320706572206e6f6d696e61746f722e20546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e20466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f7220696e74657276656e74696f6e2e204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e000000000000a8b011000900000000000000b4b01100030000000000000000000000ccb01100030000000000000000000000e4b011000600000000000000c0f51100020000000000000000000000ecb01100010000000000000000000000f4b011000500000000000000c0f51100020000000000000000000000fcb011000200000000000000000000000cb111001a0000000000000028b1110001000000000000000000000030b1110002000000000000000000000040b111000f000000000000005431130000000000000000000000000050b11100010000000000000000000000c49511000600000000000000c0f5110002000000000000000000000058b1110004000000000000000000000078b111000800000000000000c0f5110002000000000000000000000080b1110001000000000000000000000088b111000900000000000000c0f5110002000000000000000000000094b11100020000000000000000000000a4b111000600000000000000bccf1200020000000000000000000000acb1110001000000000000004572615061796f75740000008e72110008000000d5d1120007000000d5d1120007000000aeb411005600000004b511003100000035b511002b00000052657761726400006fb411003f000000536c61736800000010b411004900000059b41100160000004f6c64536c617368696e675265706f72744469736361726465640000a03712000c000000a5b3110047000000ecb31100240000005374616b696e67456c656374696f6e0083b3110022000000b1b21100350000005431130000000000e6b21100540000003ab3110049000000556e626f6e6465647ab211003700000057697468647261776e000000f7b11100570000004eb211002c0000004b69636b65640000b4b11100430000002041206e6f6d696e61746f7220686173206265656e206b69636b65642066726f6d20612076616c696461746f722e205c5b6e6f6d696e61746f722c2073746173685c5d20416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365602066726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d20416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d20416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c2069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e2041206e657720736574206f66207374616b6572732077617320656c65637465642e20416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e205c5b76616c696461746f722c20616d6f756e745c5d20546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d2054686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973207468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e205c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d566f74657220736e617073686f7420746f6f2062696754617267657420736e617073686f7420746f6f206269674572726f723a2073746172745f73657373696f6e5f696e646578206d7573742062652073657420666f722063757272656e745f6572615761726e696e673a20412073657373696f6e206170706561727320746f2068617665206265656e20736b69707065642e00fc07130055000000940400000100000000000000495111000d0000000000000034b811000100000000000000000000004151110008000000000000003cb81100010000000000000000000000345111000d0000000000000044b81100010000000000000000000000275111000d000000000000004cb811000100000000000000000000001b5111000c0000000000000054b811000100000000000000000000000d5111000e000000000000005cb81100010000000000000000000000fc501100110000000000000064b81100010000000000000000000000eb50110011000000000000006cb81100010000000000000000000000df5011000c0000000000000074b81100010000000000000000000000d25011000d000000000000007cb81100010000000000000000000000c65011000c0000000000000084b81100010000000000000000000000b450110012000000000000008cb811000100000000000000000000009a5011001a0000000000000094b811000100000000000000000000008850110012000000000000009cb811000100000000000000000000007a5011000e00000000000000a4b81100010000000000000000000000655011001500000000000000acb811000100000000000000000000004f5011001600000000000000b4b81100010000000000000000000000475011000800000000000000bcb81100010000000000000000000000395011000e00000000000000c4b81100010000000000000000000000565111000900000000000000ccb811000100000000000000ddbb11001a000000c8bb110015000000afbb11001900000091bb11001e00000078bb11001900000067bb11001100000045bb11002200000012bb110033000000edba110025000000c4ba11002900000091ba1100330000007aba1100170000005bba11001f0000003aba110021000000f7b9110043000000c6b911003100000099b911002d0000004ab911004f00000024b9110026000000d4b81100500000002041206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e20546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e20496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e20496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e20496e636f72726563742070726576696f757320686973746f727920646570746820696e7075742070726f76696465642e205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e20496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e20496e76616c69642065726120746f207265776172642e20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e2043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e2043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e20536c617368207265636f726420696e646578206f7574206f6620626f756e64732e204475706c696361746520696e6465782e20546172676574732063616e6e6f7420626520656d7074792e20436f6e74726f6c6c657220697320616c7265616479207061697265642e20537461736820697320616c726561647920626f6e6465642e204e6f742061207374617368206163636f756e742e204e6f74206120636f6e74726f6c6c6572206163636f756e742e0012000000000000000100000074000000740000007500000012000000000000000100000074000000760000007500000042616265000000000000000070bc110008000000000000000000000078bc11000f00000000000000000000001e000000000000000000000088bc11000c0000000000000007000000706f6c6b61646f747061726974792d706f6c6b61646f7400df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d01000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a8010000006772616e62616265696d6f6e706172616173676e617564690000000040787d018017b42c00e1f505483e332d280479051065b22d80cb0905d88b312e68b0a604b8aeb02ec06a4e0498d12f2ff0c5ff0360f8ae2f70b4b903401b2e30f8477b030842ad30b0a94303e8642c31181e1203c887ab3150f9e502c0a62a32e8a6be02a0c9a932289e9b0268f02833f8657c02780ba833c89860024032273408d147026849a63498c031023070253570151e02408ba43510910c0220ae2336f8f4fc0160c1a236600eef0140e4213780aae20198f3a03748a2d70138f71f38a8cecd0190069f38780cc501a8f61d396040bd01701d9d39204bb601c82c1c3a3019b00190539b3a2093aa0190471a3b50a9a501783f993b3848a10100ca9a3b9838a10150617920444f547320746f2074686520506f6c6b61646f74206163636f756e743a53797374656d5363686564756c657254696d657374616d70496e646963657342616c616e6365735472616e73616374696f6e5061796d656e745374616b696e674f6666656e636573486973746f726963616c4772616e647061417574686f72697479446973636f76657279436f756e63696c546563686e6963616c436f6d6d6974746565456c656374696f6e7350687261676d656e546563686e6963616c4d656d626572736869705574696c6974794964656e7469747950726f78794d756c7469736967426f756e74696573456c656374696f6e50726f76696465724d756c7469506861736500770000002c000000040000007800000078000000790000000000000059be110006000000000000007a000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000007c0000000000000000000000000000007d0000000000000000000000000000007e000000000000000000000000000000000000007421130018000000000000007f000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000800000000000000000000000000000008000000000000000000000001f000000000000005fbe110009000000000000008100000000000000000000000000000000000000000000000000000000000000820000000000000000000000000000008300000000000000000000000000000080000000000000000000000000000000840000000000000000000000010000000000000028bc110004000000000000008500000000000000000000000000000000000000000000000000000000000000860000000000000000000000020000000000000000000000000000000000000087000000000000000000000000000000880000000000000000000000020000000000000068be1100090000000000000089000000000000000000000000000000000000000000000000000000000000008a000000000000000000000002000000000000000000000000000000000000008b000000000000000000000000000000800000000000000000000000030000000000000071be110007000000000000008c000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000008e0000000000000000000000000000008f000000000000000000000000000000800000000000000000000000040000000000000078be110008000000000000009000000000000000000000000000000000000000000000000000000000000000910000000000000000000000000000009200000000000000000000000000000093000000000000000000000000000000940000000000000000000000050000000000000080be1100120000000000000095000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000960000000000000000000000000000008000000000000000000000002000000000000000102d12000a000000000000009700000000000000000000000000000000000000000000000000000000000000980000000000000000000000020000000000000000000000000000000000000080000000000000000000000000000000990000000000000000000000060000000000000092be110007000000000000009a000000000000000000000000000000000000000000000000000000000000009b0000000000000000000000000000009c0000000000000000000000000000009d0000000000000000000000000000009e0000000000000000000000070000000000000099be110008000000000000009f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000a0000000000000000000000000000000800000000000000000000000000000008000000000000000000000000800000000000000a1be11000a0000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000800000000000000000000000000000008000000000000000000000002100000000000000a08012000700000000000000a100000000000000000000000000000000000000000000000000000000000000a2000000000000000000000000000000a300000000000000000000000000000080000000000000000000000000000000a400000000000000000000000900000000000000abbe11000700000000000000a500000000000000000000000000000000000000000000000000000000000000a6000000000000000000000000000000a700000000000000000000000000000080000000000000000000000000000000a800000000000000000000000b000000000000003e2c12000800000000000000a900000000000000000000000000000000000000000000000000000000000000aa000000000000000000000000000000ab00000000000000000000000000000080000000000000000000000000000000ac00000000000000000000000c00000000000000b2be1100120000000200000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000200000000000000000000000000000000000000800000000000000000000000000000008000000000000000000000000d000000000000005e8012000900000000000000ad00000000000000000000000000000000000000000000000000000000000000ae000000000000000000000000000000af000000000000000000000000000000b0000000000000000000000000000000b100000000000000000000000e00000000000000c4be11000700000000000000b200000000000000000000000000000000000000000000000000000000000000b3000000000000000000000000000000b400000000000000000000000000000080000000000000000000000000000000b500000000000000000000000f00000000000000cbbe11001200000000000000b600000000000000000000000000000000000000000000000000000000000000b3000000000000000000000000000000b400000000000000000000000000000080000000000000000000000000000000b500000000000000000000001000000000000000ddbe11001100000000000000b700000000000000000000000000000000000000000000000000000000000000b8000000000000000000000000000000b9000000000000000000000000000000ba000000000000000000000000000000bb00000000000000000000001100000000000000eebe11001300000000000000bc00000000000000000000000000000000000000000000000000000000000000bd000000000000000000000000000000be000000000000000000000000000000800000000000000000000000000000008000000000000000000000001200000000000000baeb11000800000000000000bf00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000c1000000000000000000000000000000c2000000000000000000000000000000c300000000000000000000001300000000000000b62813000600000000000000c400000000000000000000000000000000000000000000000000000000000000c5000000000000000000000000000000c6000000000000000000000000000000c7000000000000000000000000000000c800000000000000000000001800000000000000bc2d12000700000000000000c900000000000000000000000000000000000000000000000000000000000000ca000000000000000000000000000000cb000000000000000000000000000000cc000000000000000000000000000000cd0000000000000000000000190000000000000001bf110007000000020000000000000000000000000000000000000000000000000000000000000000000000ce000000000000000000000000000000cf000000000000000000000000000000800000000000000000000000000000008000000000000000000000001a0000000000000008bf11000800000000000000d000000000000000000000000000000000000000000000000000000000000000d1000000000000000000000000000000d2000000000000000000000000000000d3000000000000000000000000000000d400000000000000000000001c0000000000000010bf11000500000000000000d500000000000000000000000000000000000000000000000000000000000000d6000000000000000000000000000000d7000000000000000000000000000000d8000000000000000000000000000000d900000000000000000000001d0000000000000015bf11000800000000000000da00000000000000000000000000000000000000000000000000000000000000db000000000000000000000000000000dc000000000000000000000000000000dd000000000000000000000000000000de00000000000000000000001e000000000000001dbf11000800000000000000df00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000e1000000000000000000000000000000e2000000000000000000000000000000e30000000000000000000000220000000000000074ec11000400000000000000e400000000000000000000000000000000000000000000000000000000000000e5000000000000000000000000000000e6000000000000000000000000000000e7000000000000000000000000000000e80000000000000000000000230000000000000025bf11001a00000000000000e900000000000000000000000000000000000000000000000000000000000000ea000000000000000000000000000000eb000000000000000000000000000000ec000000000000000000000000000000ed000000000000000000000024000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d203158cd11005b0000007702000009000000617373657274696f6e206661696c65643a20696478203c20434150414349545958cd11005b0000007b020000090000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6e6f64652e7273617373657274696f6e206661696c65643a2073656c662e686569676874203e203058cd11005b000000d40000000900000058cd11005b0000002b04000016000000617373657274696f6e206661696c65643a207372632e6c656e2829203d3d206473742e6c656e282958cd11005b000000b006000005000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d203100000058cd11005b000000990300000900000058cd11005b0000006a0400001600000094d011001300000058cd11005b000000a60400001f000000617373657274696f6e206661696c65643a206e65775f6c6566745f6c656e203c3d204341504143495459000058cd11005b000000da04000009000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e202b20636f756e74203c3d204341504143495459000058cd11005b0000008d0500000d000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e203e3d20636f756e7458cd11005b0000008e0500000d00000058cd11005b000000be05000016000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e202b20636f756e74203c3d2043415041434954590058cd11005b0000004e0500000d000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e203e3d20636f756e740058cd11005b0000004f0500000d00000058cd11005b0000007e05000016000000617373657274696f6e206661696c65643a206d6174636820747261636b5f656467655f696478207b5c6e202020204c6566744f7252696768743a3a4c6566742869647829203d3e20696478203c3d206f6c645f6c6566745f6c656e2c5c6e202020204c6566744f7252696768743a3a52696768742869647829203d3e20696478203c3d2072696768745f6c656e2c5c6e7d00000058cd11005b0000002005000009000000656d70747920696e7465726e616c206e6f6465000000000088d111000e0000000000000098d11100010000000000000000000000a0d111001500000000000000b8d11100010000000000000000000000298212000800000000000000c0d11100010000000000000000000000c8d111001300000000000000dcd11100010000000000000000000000e4d111001200000000000000f8d1110001000000000000000000000000d2110009000000000000000cd2110001000000000000000000000014d2110017000000000000002cd2110001000000000000000000000034d211000b0000000000000040d21100010000000000000056657374696e6742616c616e636500006ad31100270000004c69717569646974795265737472696374696f6e7300000038d31100320000001bd311001d000000496e73756666696369656e7442616c616e636500fdd211001e0000004578697374656e7469616c4465706f7369740000c2d211003b0000004b656570416c6976650000009ed21100240000004578697374696e6756657374696e675363686564756c65006bd2110033000000446561644163636f756e740048d21100230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c756520476f7420616e206f766572666c6f7720616674657220616464696e67204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c756500000026e3120056000000e20000000f00000079d411001d00000024d4110055000000d10000000f0000007573657220646f6573206e6f74206861766520616e206578697374696e672076657374696e67207363686564756c653b20712e652e642e00120000000c000000040000003700000024d41100550000001e0100001200000024d411005500000045010000120000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f76657374696e672f7372632f6c69622e72735f5f5068616e746f6d4974656d2063616e6e6f7420626520757365642e7061726974792f6d756c74692d70686173652d756e7369676e65642d656c656374696f6e4e6f726d616c2065787472696e73696373206861766520776569676874206c696d697420636f6e666967757265642062792064656661756c743b2071656408d5110020000000780000000a0000002f6275696c642f72756e74696d652f636f6d6d6f6e2f7372632f6c69622e7273f0d71100640000007300000013000000f0d71100640000004800000018000000f0d7110064000000480000002a000000f0d71100640000008a0000001800000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650054d8110060000000220100002e000000f0d7110064000000b600000019000000f0d71100640000000101000042000000f0d711006400000015010000420000004475706c696361746520766f74657220286f72206f7468657220636f727275707420696e707574292e000000f0d7110064000000360100002100000054d8110060000000d80100002a000000f0d71100640000005901000015000000f0d71100640000005e0100001e00000012000000000000000100000021000000f0d7110064000000610000001a000000f0d7110064000000610000002c000000f0d7110064000000cb01000018000000f0d7110064000000cb01000021000000f0d7110064000000ce01000024000000f0d7110064000000ce01000039000000f0d7110064000000cf01000024000000f0d7110064000000cf01000039000000f0d7110064000000f301000023000000f0d7110064000000f30100002c000000f0d7110064000000f501000024000000f0d7110064000000f501000039000000f0d71100640000001802000035000000f0d71100640000001902000035000000f0d71100640000002202000024000000f0d71100640000002202000039000000f0d71100640000004402000035000000f0d71100640000004502000035000000f0d71100640000005a0200002b000000f0d71100640000005a02000046000000f0d71100640000005b02000028000000f0d71100640000005b02000047000000f0d7110064000000650200002b000000f0d71100640000006502000047000000f0d71100640000006602000028000000f0d711006400000066020000480000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f6e706f732d656c656374696f6e732f7372632f7265647563652e72732f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702f656e7472792e72737375626d69745f756e7369676e6564000000000018d911001a0000000000000034d911000100000000000000000000003cd911001b0000000000000058d9110001000000000000000000000060d9110019000000000000007cd91100010000000000000050726544697370617463684561726c795375626d697373696f6e0000ccd911001a000000507265446973706174636857726f6e6757696e6e6572436f756e7400a9d911002300000050726544697370617463685765616b5375626d697373696f6e00000084d9110025000000205375626d697373696f6e2077617320746f6f207765616b2c2073636f72652d776973652e2057726f6e67206e756d626572206f662077696e6e6572732070726573656e7465642e205375626d697373696f6e2077617320746f6f206561726c792e4f6666636861696e456c656374696f6e5374696c6c4f70656e4e6f7446696e646572556e6b6e6f776e546970416c72656164794b6e6f776e526561736f6e546f6f4269675072656d617475726500000000003cdb11000e000000000000004cdb11000200000000000000000000007cdb110013000000000000000000000014dc11000b0000000000000020dc110001000000000000000000000038dc1100130000000000000000000000d0dc11000700000000000000d8dc110003000000000000000000000020dd1100160000000000000000000000d0dd11000300000000000000d4dd110002000000000000000000000004de1100190000000000000000000000ccde1100090000000000000020dc1100010000000000000000000000d8de110011000000000000000000000060df1100090000000000000020dc11000100000000000000000000006cdf11000c000000000000007265706f72745f617765736f6d6500000000000059e81100060000000000000042ec12000700000000000000791b13000300000000000000e3f812000c00000069ea11005700000054311300000000006c0e1300340000005431130000000000c0ea11005500000015eb110030000000543113000000000010e611005800000068e61100170000007fe611003b0000005431130000000000bae611001e0000005431130000000000f2eb12000b00000045eb11003300000078eb1100250000009deb11001d0000003be811001e00000036ec12000c000000726574726163745f7469700000000000c6e511000400000000000000b7f91200070000005fe81100550000005431130000000000b4e81100380000005431130000000000ece811005400000040e911005100000091e911001400000054311300000000005ce1110059000000b5e11100580000005431130000000000a5e91100240000005431130000000000f2eb12000b000000c9e9110015000000dee911003700000015ea11002400000039ea11003000000036ec12000c0000007469705f6e6577000000000059e81100060000000000000042ec12000700000000000000791b13000300000000000000e3f812000c00000000000000cae5110009000000000000004db6120015000000d3e511003d0000005431130000000000fce211005500000051e311001d000000543113000000000010e611005800000068e61100170000007fe611003b000000d4e311005400000028e41100360000005431130000000000bae611001e0000005431130000000000f2eb12000b000000d8e61100550000002de71100300000005de71100420000009fe7110043000000e2e71100390000001be81100200000003be811001e00000036ec12000c0000007469700000000000c6e511000400000000000000b7f912000700000000000000cae5110009000000000000004db6120015000000cfe211002d0000005431130000000000fce211005500000051e311001d00000054311300000000005ce11100590000006ee3110058000000c6e311000e000000d4e311005400000028e411003600000054311300000000005ee4110059000000b7e411000d0000005431130000000000f2eb12000b0000000de2110039000000c4e41100450000007de0110040000000bde0110041000000543113000000000009e511005800000061e511003500000096e511001d000000b3e511001300000036ec12000c000000636c6f73655f746970000000fee011001800000054311300000000006c0e130034000000543113000000000016e111004600000054311300000000005ce1110059000000b5e11100580000005431130000000000f2eb12000b0000000de211003900000046e21100270000007de0110040000000bde01100410000006de211002b00000098e211003700000036ec12000c000000736c6173685f746970000000ccdf1100260000005431130000000000f2df11002b00000054311300000000001de011003e00000054311300000000005be01100220000005431130000000000f2eb12000b0000007de0110040000000bde011004100000036ec12000c0000002052656d6f766520616e6420736c61736820616e20616c72656164792d6f70656e207469702e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52656a6563744f726967696e602e204173206120726573756c742c207468652066696e64657220697320736c617368656420616e6420746865206465706f7369747320617265206c6f73742e20456d6974732060546970536c617368656460206966207375636365737366756c2e202020605460206973206368617267656420617320757070657220626f756e6420676976656e2062792060436f6e7461696e734c656e677468426f756e64602e2020205468652061637475616c20636f737420646570656e6473206f6e2074686520696d706c656d656e746174696f6e206f662060543a3a54697070657273602e20436c6f736520616e64207061796f75742061207469702e2054686520746970206964656e74696669656420627920606861736860206d75737420686176652066696e69736865642069747320636f756e74646f776e20706572696f642e202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d65642020206173207468652068617368206f6620746865207475706c65206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279206163636f756e742049442e202d20436f6d706c65786974793a20604f285429602077686572652060546020697320746865206e756d626572206f6620746970706572732e2020206465636f64696e6720605469707065726020766563206f66206c656e677468206054602e202d20446252656164733a206054697073602c206054697070657273602c20607469702066696e64657260202d2044625772697465733a2060526561736f6e73602c206054697073602c206054697070657273602c20607469702066696e64657260204465636c6172652061207469702076616c756520666f7220616e20616c72656164792d6f70656e207469702e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742062652061206d656d626572206f662074686520605469707065727360207365742e2020206173207468652068617368206f6620746865207475706c65206f66207468652068617368206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e65666963696172792020206163636f756e742049442e202d20607469705f76616c7565603a2054686520616d6f756e74206f66207469702074686174207468652073656e64657220776f756c64206c696b6520746f20676976652e20546865206d656469616e2074697020202076616c7565206f662061637469766520746970706572732077696c6c20626520676976656e20746f20746865206077686f602e20456d6974732060546970436c6f73696e676020696620746865207468726573686f6c64206f66207469707065727320686173206265656e207265616368656420616e642074686520636f756e74646f776e20706572696f642068617320737461727465642e2020206465636f64696e6720605469707065726020766563206f66206c656e677468206054602c20696e736572742074697020616e6420636865636b20636c6f73696e672c20202041637475616c6c792077656967687420636f756c64206265206c6f77657220617320697420646570656e6473206f6e20686f77206d616e7920746970732061726520696e20604f70656e5469706020627574206974202020697320776569676874656420617320696620616c6d6f73742066756c6c20692e65206f66206c656e6774682060542d31602e202d20446252656164733a206054697070657273602c20605469707360202d2044625772697465733a20605469707360686173687469705f76616c7565204769766520612074697020666f7220736f6d657468696e67206e65773b206e6f2066696e6465722773206665652077696c6c2062652074616b656e2e202d2060726561736f6e603a2054686520726561736f6e20666f722c206f7220746865207468696e6720746861742064657365727665732c20746865207469703b2067656e6572616c6c7920746869732077696c6c20626520202061205554462d382d656e636f6465642055524c2e202d206077686f603a20546865206163636f756e742077686963682073686f756c6420626520637265646974656420666f7220746865207469702e20456d69747320604e657754697060206966207375636365737366756c2e202d20436f6d706c65786974793a20604f2852202b2054296020776865726520605260206c656e677468206f662060726561736f6e602c2060546020697320746865206e756d626572206f6620746970706572732e2020202d20604f285429603a206465636f64696e6720605469707065726020766563206f66206c656e677468206054602020202020605460206973206368617267656420617320757070657220626f756e6420676976656e2062792060436f6e7461696e734c656e677468426f756e64602e20202020205468652061637475616c20636f737420646570656e6473206f6e2074686520696d706c656d656e746174696f6e206f662060543a3a54697070657273602e2020202d20604f285229603a2068617368696e6720616e6420656e636f64696e67206f6620726561736f6e206f66206c656e67746820605260202d20446252656164733a206054697070657273602c2060526561736f6e7360202d2044625772697465733a2060526561736f6e73602c20605469707360726561736f6e20526574726163742061207072696f72207469702d7265706f72742066726f6d20607265706f72745f617765736f6d65602c20616e642063616e63656c207468652070726f63657373206f662074697070696e672e204966207375636365737366756c2c20746865206f726967696e616c206465706f7369742077696c6c20626520756e72657365727665642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642074686520746970206964656e74696669656420627920606861736860206d7573742068617665206265656e207265706f7274656420627920746865207369676e696e67206163636f756e74207468726f75676820607265706f72745f617765736f6d65602028616e64206e6f74207468726f75676820607469705f6e657760292e20456d697473206054697052657472616374656460206966207375636365737366756c2e202d20436f6d706c65786974793a20604f283129602020202d20446570656e6473206f6e20746865206c656e677468206f662060543a3a48617368602077686963682069732066697865642e202d20446252656164733a206054697073602c20606f726967696e206163636f756e7460202d2044625772697465733a2060526561736f6e73602c206054697073602c20606f726967696e206163636f756e7460205265706f727420736f6d657468696e672060726561736f6e60207468617420646573657276657320612074697020616e6420636c61696d20616e79206576656e7475616c207468652066696e6465722773206665652e205061796d656e743a20605469705265706f72744465706f73697442617365602077696c6c2062652072657365727665642066726f6d20746865206f726967696e206163636f756e742c2061732077656c6c2061732060446174614465706f736974506572427974656020666f722065616368206279746520696e2060726561736f6e602e202d20436f6d706c65786974793a20604f2852296020776865726520605260206c656e677468206f662060726561736f6e602e2020202d20656e636f64696e6720616e642068617368696e67206f662027726561736f6e27202d20446252656164733a2060526561736f6e73602c20605469707360547265617375727900000000000074ec1100040000000105000000000000b7f91200070000000000000078ec11003c0000000000000000000000000000000000000054311300b4ec11000000000000000000c4ec110003000000000000000000000000000000dcec1100070000000106000000000000b7f91200070000000000000042ec1200070000000000000000000000000000000000000054311300e4ec11000000000000000000f4ec1100020000000000000000000000546970734f70656e5469703c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c20543a3a486173683e12000000000000000100000023000000aeed11005900000007ee11004f00000056ee110020000000526561736f6e73001200000000000000010000002300000004ed11005200000056ed1100580000002053696d706c6520707265696d616765206c6f6f6b75702066726f6d2074686520726561736f6e2773206861736820746f20746865206f726967696e616c20646174612e20416761696e2c2068617320616e20696e73656375726520656e756d657261626c6520686173682073696e636520746865206b65792069732067756172616e7465656420746f2062652074686520726573756c74206f6620612073656375726520686173682e20546970734d6170207468617420617265206e6f742079657420636f6d706c657465642e204b65796564206279207468652068617368206f66206028726561736f6e2c2077686f29602066726f6d207468652076616c75652e2054686973206861732074686520696e73656375726520656e756d657261626c6520686173682066756e6374696f6e2073696e636520746865206b657920697473656c6620697320616c72656164792067756172616e7465656420746f20626520612073656375726520686173682e00000000000090ef11000c00000000000000a9f912000e00000000000000543113009cef11000000000000000000acef1100010000000000000000000000b4ef11000d00000000000000c1ef1100070000000000000054311300c8ef11000000000000000000d8ef1100010000000000000000000000e0ef1100140000000000000057a912000c0000000000000054311300f4ef1100000000000000000004f011000100000000000000000000000cf01100120000000000000057a912000c000000000000005431130020f01100000000000000000030f0110001000000000000000000000038f011001300000000000000cbed12000300000000000000543113004cf0110000000000000000005cf011000100000000000000546970436f756e74646f776e120000000000000001000000ee00000049f111005100000054697046696e6465727346656550657263656e74120000000000000001000000ef000000fdf011004c0000005469705265706f72744465706f7369744261736512000000000000000100000026000000c8f0110035000000446174614465706f7369745065724279746500001200000000000000010000002500000086f01100420000004d6178696d756d526561736f6e4c656e677468001200000000000000010000002b00000064f0110022000000204d6178696d756d2061636365707461626c6520726561736f6e206c656e6774682e2054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e2e2054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120746970207265706f72742e2054686520616d6f756e74206f66207468652066696e616c2074697020776869636820676f657320746f20746865206f726967696e616c207265706f72746572206f6620746865207469702e2054686520706572696f6420666f722077686963682061207469702072656d61696e73206f70656e20616674657220697320686173206163686965766564207468726573686f6c6420746970706572732e00000000000078f211000600000000000000e8d0120001000000000000000000000080f2110001000000000000000000000088f211000a00000000000000e8d0120001000000000000000000000094f211000100000000000000000000009cf21100090000000000000020d01200030000000000000000000000a8f21100010000000000000000000000b0f211000c00000000000000e8d01200010000000000000000000000bcf21100010000000000000000000000c4f211000a0000000000000020d01200030000000000000000000000d0f2110001000000000000004e65775469700000cbf3110033000000546970436c6f73696e67000087f3110044000000546970436c6f7365640000004bf311003c00000054697052657472616374656419f3110032000000546970536c61736865640000d8f21100410000002041207469702073756767657374696f6e20686173206265656e20736c61736865642e205c5b7469705f686173682c2066696e6465722c206465706f7369745c5d2041207469702073756767657374696f6e20686173206265656e207265747261637465642e205c5b7469705f686173685c5d2041207469702073756767657374696f6e20686173206265656e20636c6f7365642e205c5b7469705f686173682c2077686f2c207061796f75745c5d2041207469702073756767657374696f6e206861732072656163686564207468726573686f6c6420616e6420697320636c6f73696e672e205c5b7469705f686173685c5d2041206e6577207469702073756767657374696f6e20686173206265656e206f70656e65642e205c5b7469705f686173685c5d496e76616c696420756e7369676e6564207375626d697373696f6e206d7573742070726f6475636520696e76616c696420626c6f636b20616e6420646570726976652076616c696461746f722066726f6d20746865697220617574686f72696e67207265776172642e00c8f411006b000000d70200003b000000c8f411006b000000db0200002b000000c8f411006b000000de0200000d000000c8f411006b000000df0200000d000000120000000c00000004000000f0000000c8f411006b000000e20200004e0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f656c656374696f6e2d70726f76696465722d6d756c74692d70686173652f7372632f6c69622e72730024d4110055000000c40000000f0000004e6f7456657374696e67416d6f756e744c6f770000000000b0f511000e00000000000000c0f51100020000000000000000000000d0f51100030000000000000000000000e8f511001000000000000000fce41200010000000000000000000000f8f51100010000000000000056657374696e6755706461746564000079e5120009000000d5d112000700000047f61100560000009df6110046000000e3f611001600000056657374696e67436f6d706c6574656400f611004700000020416e205c5b6163636f756e745c5d20686173206265636f6d652066756c6c79207665737465642e204e6f20667572746865722076657374696e672063616e2068617070656e2e2054686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e646963617465206d6f72652066756e64732061726520617661696c61626c652e205468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e205c5b6163636f756e742c20756e7665737465645c5d00000000000000acf71100040000000000000054311300000000000000000000000000b0f711000d000000000000000000000018f811000a0000000000000024f811000100000000000000000000003cf811000f0000000000000000000000b4f811000f00000000000000c4f81100020000000000000000000000f4f8110010000000000000000000000074f9110015000000000000008cf91100030000000000000000000000d4f91100110000000000000076657374fefe11002f00000054311300000000002dff11005800000034fe11001a00000054311300000000004efe1100350000005431130000000000f2eb12000b000000bcfb11000a00000085ff11001e000000a3ff11003f000000e2ff11004000000036ec12000c000000766573745f6f74686572000000000000739a1200060000000000000085fc110023000000b0fd11002f00000054311300000000006c0e1300340000005431130000000000dffd11005500000034fe11001a00000054311300000000004efe1100350000005431130000000000f2eb12000b000000bcfb11000a000000f3fc11001e00000083fe11003d000000c0fe11003e00000036ec12000c0000007665737465645f7472616e736665720000000000739a1200060000000000000085fc11002300000000000000a8fc11000800000000000000b0fc110029000000d9fc11001a00000054311300000000006c0e1300340000005431130000000000e2fa11004500000027fb11004000000067fb11003d0000005431130000000000a4fb1100180000005431130000000000f2eb12000b000000bcfb11000a000000f3fc11001e00000011fd11004f00000060fd11005000000036ec12000c000000666f7263655f7665737465645f7472616e73666572000000000000007ffc1100060000000000000085fc11002300000000000000739a1200060000000000000085fc11002300000000000000a8fc11000800000000000000b0fc1100290000005cfa110019000000543113000000000075fa1100320000005431130000000000a7fa11003b000000e2fa11004500000027fb11004000000067fb11003d0000005431130000000000a4fb1100180000005431130000000000f2eb12000b000000bcfb11000a000000c6fb11001e000000e4fb11004d00000031fc11004e00000036ec12000c00000020466f726365206120766573746564207472616e736665722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060736f75726365603a20546865206163636f756e742077686f73652066756e64732073686f756c64206265207472616e736665727265642e202d2060746172676574603a20546865206163636f756e7420746861742073686f756c64206265207472616e7366657272656420746865207665737465642066756e64732e202d2060616d6f756e74603a2054686520616d6f756e74206f662066756e647320746f207472616e7366657220616e642077696c6c206265207665737465642e202d20607363686564756c65603a205468652076657374696e67207363686564756c6520617474616368656420746f20746865207472616e736665722e20456d697473206056657374696e6743726561746564602e202d20604f283129602e202d2044625765696768743a20342052656164732c20342057726974657320202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c20536f75726365204163636f756e7420202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c20536f75726365204163636f756e74736f757263653c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263657363686564756c6556657374696e67496e666f3c42616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e20437265617465206120766573746564207472616e736665722e202d2044625765696768743a20332052656164732c20332057726974657320202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c205b53656e646572204163636f756e745d20202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e742c205b53656e646572204163636f756e745d20556e6c6f636b20616e79207665737465642066756e6473206f662061206074617267657460206163636f756e742e202d2060746172676574603a20546865206163636f756e742077686f7365207665737465642066756e64732073686f756c6420626520756e6c6f636b65642e204d75737420686176652066756e6473207374696c6c206c6f636b656420756e64657220746869732070616c6c65742e20456d69747320656974686572206056657374696e67436f6d706c6574656460206f72206056657374696e6755706461746564602e20202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e7420202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c20546172676574204163636f756e7420556e6c6f636b20616e79207665737465642066756e6473206f66207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e6473207374696c6c202d2044625765696768743a20322052656164732c20322057726974657320202020202d2052656164733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c205b53656e646572204163636f756e745d20202020202d205772697465733a2056657374696e672053746f726167652c2042616c616e636573204c6f636b732c205b53656e646572204163636f756e745d000000000000bc2d1200070000000102000000000000e3f812000c00000000000000b0fc11002900000000000000000000000000000000000000543113007c00120000000000000000008c00120001000000000000000000000012000000000000000100000023000000940012003600000020496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e00000000000004011200110000000000000057a912000c00000000000000543113001801120000000000000000002801120001000000000000004d696e5665737465645472616e7366657200000012000000000000000100000045000000300112003a00000020546865206d696e696d756d20616d6f756e74207472616e7366657272656420746f2063616c6c20607665737465645f7472616e73666572602e000000000000cc0212000700000000000000c0f51100020000000000000000000000d4021200010000000000000000000000dc0212000800000000000000c0f51100020000000000000000000000e4021200020000000000000000000000f40212000800000000000000fc021200030000000000000000000000140312000100000000000000000000001c0312000a000000000000002803120003000000000000000000000040031200010000000000000000000000480312000700000000000000c0f5110002000000000000000000000050031200010000000000000000000000580312000800000000000000c0f5110002000000000000000000000060031200010000000000000000000000680312000a00000000000000c0f51100020000000000000000000000740312000100000000000000000000007c031200120000000000000090031200040000000000000000000000b00312000300000000000000456e646f776564003c06120049000000447573744c6f7374b80512005000000008061200340000005472616e7366657279e512000900000079e5120009000000d5d1120007000000900512002800000042616c616e6365536574000079e5120009000000d5d1120007000000d5d11200070000005d051200330000004465706f7369740015051200480000005265736572766564cd04120048000000556e72657365727665640000830412004a000000526573657276655265706174726961746564000079e512000900000079e5120009000000d5d11200070000007d04120006000000c8031200540000001c04120037000000530412002a00000020536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742e2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735c5d53746174757320536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655c5d20536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655c5d20536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e205c5b77686f2c206465706f7369745c5d20412062616c616e6365207761732073657420627920726f6f742e205c5b77686f2c20667265652c2072657365727665645c5d205472616e73666572207375636365656465642e205c5b66726f6d2c20746f2c2076616c75655c5d20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e205c5b6163636f756e742c2062616c616e63655c5d20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6163636f756e742c20667265655f62616c616e63655c5d0000000000000038071200080000000000000040071200020000000000000000000000700712001b0000000000000000000000480812000b00000000000000540812000300000000000000000000009c0812001200000000000000000000002c0912000e000000000000003c09120003000000000000000000000084091200060000000000000000000000b4091200130000000000000040071200020000000000000000000000c80912000b000000000000007472616e73666572000000005b0c1200040000000000000085fc1100230000000000000048b6120005000000000000005f0c120013000000b70e1200360000005431130000000000ed0e1200420000002f0f120048000000770f120045000000bc0f12002d0000005431130000000000e90f1200460000005431130000000000f2eb12000b0000002f1012004c0000007b10120033000000ae1012005a0000005431130000000000081112001300000054311300000000001b111200540000006f1112004b000000ba11120035000000ef111200580000004712120052000000991212003e000000d712120022000000f9121200510000004a13120037000000811312004500000036ec12000c0000007365745f62616c616e63650000000000791b1300030000000000000085fc11002300000000000000a30e120008000000000000005f0c12001300000000000000ab0e12000c000000000000005f0c120013000000720c1200250000005431130000000000970c120048000000df0c120042000000210d120046000000670d1200400000005431130000000000a70d12002d0000005431130000000000f2eb12000b000000d40d120020000000f40d120031000000250e1200160000003b0e12000f0000004a0e12001a000000640e1200190000007d0e12002600000036ec12000c000000666f7263655f7472616e736665720000000000007ffc1100060000000000000085fc110023000000000000005b0c1200040000000000000085fc1100230000000000000048b6120005000000000000005f0c120013000000880b120054000000dc0b12000b000000f2eb12000b000000e70b120050000000370c12002400000036ec12000c0000007472616e736665725f6b6565705f616c69766500200a120054000000740a1200100000005431130000000000840a12002f0000005431130000000000b30a120031000000f2eb12000b000000e40a12003a0000001e0b120018000000360b1200470000007d0b12000b0000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572202d2043686561706572207468616e207472616e736665722062656361757365206163636f756e742063616e6e6f74206265206b696c6c65642e202d2042617365205765696768743a2035312e3420c2b573202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374202873656e64657220697320696e206f7665726c617920616c72656164792920233c2f7765696768743e2045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069732020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e64657374436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a20202020202d204372656174696e673a2032372e353620c2b57320202020202d204b696c6c696e673a2033352e313120c2b573202d204442205765696768743a203120526561642c203120577269746520746f206077686f606e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e74202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e000000000000281512000d0000000000000000000000351512000a00000000000000000000000000000000000000000000000000000000000000543113004015120000000000000000005015120001000000000000000100000000000000dcf81200070000000102000000000000e3f812000c0000000000000058151200170000000000000000000000000000000000000054311300701512000000000000000000801512000300000000000000010000000000000070bd1200050000000102000000000000e3f812000c00000000000000981512001c0000000000000000000000000000000000000054311300b41512000000000000000000c4151200020000000000000001000000000000009cbe12000e0000000000000000000000aabe1200080000000000000000000000000000000000000000000000000000000000000054311300d41512000000000000000000e4151200030000000000000001000000546f74616c49737375616e6365543a3a42616c616e6365001200000000000000010000004100000006171200260000004163636f756e74446174613c543a3a42616c616e63653e00120000000000000001000000f10000009b1612001b0000005431130000000000b6161200500000005665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e120000000000000001000000f2000000241612002e00000052161200490000001200000000000000010000005e000000dcbe12001f0000005431130000000000fc1512002800000020546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e00000000e4d111001200000000000000351512000a0000000000000054311300641712000000000000000000741712000100000000000000120000000000000001000000260000007c1712003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e436865636b5370656356657273696f6e000000c8f411006b000000040300000f00000000000000dc1812000e00000000000000ec181200010000000000000000000000f41812000400000000000000000000001419120011000000000000002819120001000000000000000000000030191200020000000000000000000000401912000800000000000000fce4120001000000000000000000000048191200010000000000000000000000501912000700000000000000fce4120001000000000000000000000058191200010000000000000000000000601912001200000000000000741912000100000000000000000000007c19120001000000000000000000000084191200140000000000000074191200010000000000000000000000981912000100000000000000536f6c7574696f6e53746f7265640000dd1b12000f0000001d1b12002e00000054311300000000004b1b1200500000009b1b120042000000456c656374696f6e46696e616c697a6564000000061b120017000000971a120056000000ed1a12001900000052657761726465644d1a12004a000000536c617368656400041a1200490000005369676e65645068617365537461727465640000cbed120003000000d319120031000000556e7369676e6564506861736553746172746564a0191200330000002054686520756e7369676e6564207068617365206f662074686520676976656e20726f756e642068617320737461727465642e20546865207369676e6564207068617365206f662074686520676976656e20726f756e642068617320737461727465642e20416e206163636f756e7420686173206265656e20736c617368656420666f72207375626d697474696e6720616e20696e76616c6964207369676e6564207375626d697373696f6e2e20416e206163636f756e7420686173206265656e20726577617264656420666f72207468656972207369676e6564207375626d697373696f6e206265696e672066696e616c697a65642e2054686520656c656374696f6e20686173206265656e2066696e616c697a65642c20776974682060536f6d6560206f662074686520676976656e20636f6d7075746174696f6e2c206f7220656c73652069662074686520656c656374696f6e206661696c65642c20604e6f6e65602e4f7074696f6e3c456c656374696f6e436f6d707574653e204120736f6c7574696f6e207761732073746f72656420776974682074686520676976656e20636f6d707574652e2049662074686520736f6c7574696f6e206973207369676e65642c2074686973206d65616e732074686174206974206861736e277420796574206265656e2070726f6365737365642e2049662074686520736f6c7574696f6e20697320756e7369676e65642c2074686973206d65616e7320746861742069742068617320616c736f206265656e2070726f6365737365642e456c656374696f6e436f6d7075746500000000b4d811000f00000000000000181c1200020000000000000000000000481c12000e0000000000000000000000301f12000800000000000000381f12001900000000000000511f12000700000000000000581f120016000000b81c12002a0000005431130000000000e21c1200330000005431130000000000151d120050000000651d120056000000bb1d120058000000131e1200110000005431130000000000241e1200570000007b1e120054000000cf1e1200280000005431130000000000f71e120039000000205375626d6974206120736f6c7574696f6e20666f722074686520756e7369676e65642070686173652e20546865206469737061746368206f726967696e20666f20746869732063616c6c206d757374206265205f5f6e6f6e655f5f2e2054686973207375626d697373696f6e20697320636865636b6564206f6e2074686520666c792e204d6f72656f7665722c207468697320756e7369676e656420736f6c7574696f6e206973206f6e6c792076616c696461746564207768656e207375626d697474656420746f2074686520706f6f6c2066726f6d20746865202a2a6c6f63616c2a2a206e6f64652e204566666563746976656c792c2074686973206d65616e732074686174206f6e6c79206163746976652076616c696461746f72732063616e207375626d69742074686973207472616e73616374696f6e207768656e20617574686f72696e67206120626c6f636b202873696d696c617220746f20616e20696e686572656e74292e20546f2070726576656e7420616e7920696e636f727265637420736f6c7574696f6e2028616e642074687573207761737465642074696d652f776569676874292c2074686973207472616e73616374696f6e2077696c6c2070616e69632069662074686520736f6c7574696f6e207375626d6974746564206279207468652076616c696461746f7220697320696e76616c696420696e20616e79207761792c206566666563746976656c792070757474696e6720746865697220617574686f72696e6720726577617264206174207269736b2e204e6f206465706f736974206f7220726577617264206973206173736f63696174656420776974682074686973207375626d697373696f6e2e736f6c7574696f6e526177536f6c7574696f6e3c436f6d706163744f663c543e3e7769746e657373536f6c7574696f6e4f72536e617073686f7453697a6500000000000080211200050000000000000000000000cbed12000300000000000000000000000000000000000000000000000000000000000000543113008821120000000000000000009821120006000000000000000100000000000000c82112000c0000000000000000000000d4211200150000000000000000000000000000000000000000000000000000000000000054311300ec2112000000000000000000fc21120001000000000000000100000000000000042212000e0000000000000000000000122212001b0000000000000000000000000000000000000000000000000000000000000054311300302212000000000000000000402212000100000000000000000000000000000048221200080000000000000000000000502212001b00000000000000000000000000000000000000000000000000000000000000543113006c22120000000000000000007c22120003000000000000000000000000000000942212000e0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300a42212000000000000000000b422120003000000000000000000000000000000cc221200100000000000000000000000581f1200160000000000000000000000000000000000000000000000000000000000000054311300dc2212000000000000000000ec221200030000000000000000000000526f756e64000000120000000000000001000000f3000000582412002b00000054311300000000008324120055000000d82412001b0000005431130000000000f32412005300000043757272656e74506861736550686173653c543a3a426c6f636b4e756d6265723e0000001200000000000000010000005e000000492412000f000000517565756564536f6c7574696f6e5265616479536f6c7574696f6e3c543a3a4163636f756e7449643e00000012000000000000000100000023000000fa2312004f000000536e617073686f74526f756e64536e617073686f743c543a3a4163636f756e7449643e0012000000000000000100000023000000872312001c0000005431130000000000a3231200570000004465736972656454617267657473000012000000000000000100000023000000542312003300000054311300000000002a2312002a000000536e617073686f744d6574616461746112000000000000000100000023000000042312002600000054311300000000002a2312002a00000020546865206d65746164617461206f6620746865205b60526f756e64536e617073686f74605d204f6e6c7920657869737473207768656e205b60536e617073686f74605d2069732070726573656e742e2044657369726564206e756d626572206f66207461726765747320746f20656c65637420666f72207468697320726f756e642e20536e617073686f742064617461206f662074686520726f756e642e205468697320697320637265617465642061742074686520626567696e6e696e67206f6620746865207369676e656420706861736520616e6420636c65617265642075706f6e2063616c6c696e672060656c656374602e2043757272656e74206265737420736f6c7574696f6e2c207369676e6564206f7220756e7369676e65642c2071756575656420746f2062652072657475726e65642075706f6e2060656c656374602e2043757272656e742070686173652e20496e7465726e616c20636f756e74657220666f7220746865206e756d626572206f6620726f756e64732e20546869732069732075736566756c20666f722064652d6475706c69636174696f6e206f66207472616e73616374696f6e73207375626d697474656420746f2074686520706f6f6c2c20616e642067656e6572616c20646961676e6f7374696373206f66207468652070616c6c65742e2054686973206973206d6572656c7920696e6372656d656e746564206f6e6365207065722065766572792074696d65207468617420616e20757073747265616d2060656c656374602069732063616c6c65642e000000000000f02512000d00000000000000a9f912000e000000000000005431130000261200000000000000000010261200010000000000000000000000182612000b00000000000000a9f912000e0000000000000054311300242612000000000000000000342612000100000000000000000000003c2612001c0000000000000055f31200070000000000000054311300582612000000000000000000682612000200000000000000556e7369676e65645068617365000000120000000000000001000000f400000002271200200000005369676e656450686173650012000000000000000100000022000000e42612001e000000536f6c7574696f6e496d70726f76656d656e745468726573686f6c64120000000000000001000000290000007826120053000000cb2612001900000020546865206d696e696d756d20616d6f756e74206f6620696d70726f76656d656e7420746f2074686520736f6c7574696f6e2073636f7265207468617420646566696e6573206120736f6c7574696f6e2061732022626574746572222028696e20616e79207068617365292e204475726174696f6e206f6620746865207369676e65642070686173652e204475726174696f6e206f662074686520756e7369676e65642070686173652e0000120000000400000004000000f5000000120000000400000004000000f6000000120000000400000004000000f7000000d4e2120052000000c100000001000000a83513005e000000710000002e000000a83513005e0000009000000034000000a83513005e0000006900000034000000000000001eda11000c000000000000003c28120001000000000000000000000012da11000c000000000000004428120001000000000000000000000008da11000a000000000000004c281200010000000000000000000000ffd91100090000000000000054281200010000000000000000000000f6d9110009000000000000005c2812000100000000000000000000002ada11000900000000000000642812000100000000000000882912002200000065291200230000004c291200190000000429120048000000b92812004b0000006c2812004d00000020546865207469702063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e20546865207469702063616e6e6f7420626520636c61696d65642f636c6f736564206265636175736520746865726520617265206e6f7420656e6f7567682074697070657273207965742e20546865206163636f756e7420617474656d7074696e6720746f20726574726163742074686520746970206973206e6f74207468652066696e646572206f6620746865207469702e2054686520746970206861736820697320756e6b6e6f776e2e20546865207469702077617320616c726561647920666f756e642f737461727465642e2054686520726561736f6e20676976656e206973206a75737420746f6f206269672e0000a83513005e000000ba00000009000000a83513005e000000b300000009000000a83513005e000000d400000011000000a83513005e000000d900000009000000d4e2120052000000cd01000018000000d4e2120052000000fb0100001a0000000000000044f511000a00000000000000602a120001000000000000000000000014d211001700000000000000682a12000100000000000000000000004ef511000900000000000000702a12000100000000000000112b120022000000ba2a120057000000782a12004200000020416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e20416e206578697374696e672076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e7420746861742063616e6e6f7420626520636c6f6262657265642e20546865206163636f756e7420676976656e206973206e6f742076657374696e672e54696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b00d42b120057000000c20000000d00000054696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b730000d42b120057000000c40000000d0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f74696d657374616d702f7372632f6c69622e72737672662d6e6d2d706b436865636b4e6f6e6365496d4f6e6c696e6500000000000000000000617474656d707420746f20646976696465206279207a65726f4b657973417574686f726564426c6f636b732f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e727354696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b000000d42b120057000000a70000000d000000417574686f7273686970417574686f724772616e64706146696e616c69747950656e64696e674368616e67653a6772616e6470615f617574686f7269746965735374617465556e636c657348656172746265617441667465720000007b2c1200570000004e020000340000007061726974792f696d2d6f6e6c696e652d6865617274626561742f556e646572436f6e737472756374696f6e50726f78696573416e6e6f756e63656d656e747356657374696e6700d42d120067000000b4000000380000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f737570706f72742f7372632f73746f726167652f67656e657261746f722f6d61702e727300120000000800000004000000f80000004772616e64706145717569766f636174696f6e496e76616c696445717569766f636174696f6e50726f6f66496e76616c69644b65794f776e65727368697050726f6f66546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65644475706c69636174654f6666656e63655265706f727400000000542f12001300000000000000682f1200020000000000000000000000982f1200040000000000000000000000b82f12001c00000000000000682f1200020000000000000000000000d42f12000900000000000000000000001c3012000c00000000000000283012000200000000000000000000005830120007000000000000007265706f72745f65717569766f636174696f6e0000000000203412001200000000000000323412002a000000000000005c3412000f000000000000006b341200100000007432120043000000b73212003e000000f53212003f00000034331200120000007265706f72745f65717569766f636174696f6e5f756e7369676e65647432120043000000b73212003e000000f53212003f0000003433120012000000543113000000000046331200440000008a33120046000000d033120046000000163412000a0000006e6f74655f7374616c6c6564000000001fae12000500000000000000a9f912000e00000000000000593212001b00000000000000a9f912000e0000009030120047000000d73012004a00000021311200480000006931120045000000ae3112004a000000f83112004a0000004232120017000000204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c61792073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f746572732077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e204f6e6c792063616c6c61626c6520627920726f6f742e626573745f66696e616c697a65645f626c6f636b5f6e756d626572205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e20546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c7920626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c20617320737563682069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e207265706f727465722e65717569766f636174696f6e5f70726f6f6645717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e6b65795f6f776e65725f70726f6f66543a3a4b65794f776e657250726f6f660000000000502d12000500000000000000000000008c3612001b0000000000000000000000000000000000000000000000000000000000000054311300a83612000000000000000000b8361200010000000000000001000000000000002f2d12000d0000000000000000000000c0361200230000000000000000000000000000000000000000000000000000000000000054311300e43612000000000000000000f436120001000000000000000000000000000000fc3612000a0000000000000000000000a9f912000e0000000000000000000000000000000000000000000000000000000000000054311300083712000000000000000000183712000100000000000000000000000000000020371200070000000000000000000000273712002000000000000000000000000000000000000000000000000000000000000000543113004837120000000000000000005837120001000000000000000000000000000000603712000c00000000000000000000006c3712000500000000000000000000000000000000000000000000000000000000000000543113007437120000000000000000008437120002000000000000000100000000000000943712000c00000001050000000000006c3712000500000000000000a03712000c0000000000000000000000000000000000000054311300ac3712000000000000000000bc37120004000000000000000000000053746f72656453746174653c543a3a426c6f636b4e756d6265723e00120000000000000001000000f9000000863912002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e001200000000000000010000002300000055391200310000004e657874466f72636564000012000000000000000100000023000000263912002f0000005374616c6c656428543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290012000000000000000100000023000000023912002400000043757272656e7453657449645365744964000000120000000000000001000000590000007a38120057000000d138120031000000536574496453657373696f6e53657373696f6e496e64657812000000000000000100000023000000dc37120056000000323812001a00000054311300000000004c3812002e0000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e2054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e496e76616c69644b65794475706c6963617465644865617274626561740000000000f43912000900000000000000003a1200020000000000000000000000303a1200090000000000000068656172746265617400000000000000f43912000900000000000000de3b12001900000000000000f73b12000a00000000000000013c12002f000000f2eb12000b000000783a120050000000c83a120040000000083b1200230000002b3b12002c000000573b12004f000000a63b120017000000bd3b12002100000036ec12000c000000202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e29202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373602020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b602020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c2020206052656365697665644865617274626561747360202d2044625772697465733a2060526563656976656448656172746265617473604865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000005b2d12000e0000000000000000000000a9f912000e0000000000000000000000000000000000000000000000000000000000000054311300903d12000000000000000000a03d12000b000000000000000100000000000000692c1200040000000000000000000000f83d12001300000000000000000000000000000000000000000000000000000000000000543113000c3e120000000000000000001c3e120001000000000000000100000000000000243e1200120000000205050000000000a03712000c00000000000000363e1200090000000000000042ec1200070000000000000054311300403e12000000000000000000503e1200020000000000000000000000000000006d2c12000e0000000205050000000000a03712000c00000000000000603e12000e00000000000000cbed1200030000000000000054311300703e12000000000000000000803e120002000000000000000100000012000000000000000100000022000000973f120047000000de3f1200090000005431130000000000e73f120049000000304012004d0000007d40120046000000c34012002a0000005431130000000000ed4012004e0000003b4112004b00000086411200400000005665633c543a3a417574686f7269747949643e001200000000000000010000003f000000633f12003400000052656365697665644865617274626561747341757468496e6465780012000000000000000100000023000000073f12003c000000433f12002000000056616c696461746f7249643c543e000012000000000000000100000022000000903e120045000000d53e12003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e20546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c64206265206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e0000000000004c421200110000000000000060421200010000000000000000000000684212000100000000000000000000007042120007000000000000005431130000000000000000000000000078421200010000000000000000000000804212000b000000000000008c4212000100000000000000000000009442120001000000000000004865617274626561745265636569766564000000794312000b0000003843120041000000416c6c476f6f64000343120035000000536f6d654f66666c696e6500eb421200180000009c4212004f0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d417574686f72697479496400000000b04312000300000000000000b4431200010000000000000000000000cc4312000f0000000000000073657400000000006946120003000000000000006c46120012000000444412001600000054311300000000005a44120056000000b0441200360000005431130000000000e6441200510000003745120011000000543113000000000048451200360000005431130000000000f2eb12000b0000007e4512004d000000cb45120068000000334612003600000036ec12000c00000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e6e6f77436f6d706163743c543a3a4d6f6d656e743e00000000000030471200030000000000000000000000334712000900000000000000000000000000000000000000000000000000000000000000543113003c47120000000000000000004c4712000100000000000000010000000000000054471200090000000000000000000000a1fb1200040000000000000000000000000000000000000000000000000000000000000054311300604712000000000000000000704712000100000000000000010000004e6f77543a3a4d6f6d656e7412000000000000000100000059000000a54712002400000044696455706461746500000012000000000000000100000023000000784712002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000044812000d00000000000000334712000900000000000000543113001448120000000000000000002448120004000000000000004d696e696d756d506572696f64000000120000000000000001000000fa000000444812005a0000009e4812005a000000f848120059000000514912001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e556e636c65416c7265616479496e636c75646564546f6f48696768556e636c6547656e65736973556e636c65546f6f4d616e79556e636c6573556e636c6573416c7265616479536574496e76616c6964556e636c65506172656e744f6c64556e636c6500000000fc4912000a00000000000000084a1200010000000000000000000000204a120001000000000000007365745f756e636c6573000000000000414a12000a000000000000004b4a12000e000000284a1200190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e00000000000000552d1200060000000000000000000000644b12003a0000000000000000000000000000000000000000000000000000000000000054311300a04b12000000000000000000b04b1200010000000000000001000000000000001a2d1200060000000000000000000000e3f812000c0000000000000000000000000000000000000000000000000000000000000054311300b84b12000000000000000000c84b120001000000000000000000000000000000d04b12000c0000000000000000000000a1fb1200040000000000000000000000000000000000000000000000000000000000000054311300dc4b12000000000000000000ec4b12000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0000120000000000000001000000fb0000003c4c12000700000012000000000000000100000023000000234c120019000000446964536574556e636c657312000000000000000100000023000000f44b12002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c6573001200000000000000010000005f000000647c120066000000860000002700000012000000000000000100000021000000647c120066000000a60000001c000000647c1200660000009500000034000000647c120066000000a900000029000000647c120066000000bd0000001f000000647c120066000000c900000030000000c406130055000000f30000000100000000000000af2e12000b00000000000000984d1200020000000000000000000000a32e12000c00000000000000a84d1200020000000000000000000000962e12000d00000000000000b84d12000100000000000000000000008f2e12000700000000000000c04d1200010000000000000000000000772e12001800000000000000c84d12000100000000000000000000005f2e12001800000000000000d04d1200010000000000000000000000ba2e12001600000000000000d84d12000100000000000000994f120042000000db4f12002a0000002b4f120045000000704f120029000000f04e12003b000000c04e120030000000734e12004d000000264e12004d000000e04d120046000000204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e20416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e00000000000000aa3912000a0000000000000040501200010000000000000000000000b4391200130000000000000048501200010000000000000066501200190000005050120016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e000b2b1300640000003d0500000100000000000000b6491200120000000000000054511200010000000000000000000000a649120010000000000000005c511200010000000000000000000000994912000d00000000000000645112000100000000000000000000008d4912000c000000000000006c511200010000000000000000000000814912000c00000000000000745112000100000000000000000000006d49120014000000000000007c511200010000000000000000000000c84912000800000000000000845112000100000000000000415212002300000020521200210000000f52120011000000f951120016000000d951120020000000ba5112001f0000008c5112002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e4765747320616e64206465636f6465732074696d657374616d7020696e686572656e742064617461fc0000001000000004000000fd000000d42b120057000000d900000012000000bc52120022000000bc030000010000002f6275696c642f72756e74696d652f706f6c6b61646f742f7372632f6c69622e727354696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570745468657265206973206f6e6c79206f6e6520666174616c206572726f723b20716564000000120000000800000004000000fe0000004e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473210000db53120007000000c05312001b0000002031130002000000bc52120022000000620400000100000042616420696e70757420646174612070726f766964656420746f2076657273696f6e0000ec5312000d000000657865637574655f626c6f636b0000000454120010000000696e697469616c697a655f626c6f636b1c541200080000006d657461646174612c5412000f0000006170706c795f65787472696e73696300445412000e00000066696e616c697a655f626c6f636b00005c54120013000000696e686572656e745f65787472696e7369637300785412000f000000636865636b5f696e686572656e747300905412000b00000072616e646f6d5f7365656400a45412001400000076616c69646174655f7472616e73616374696f6ec05412000f0000006f6666636861696e5f776f726b657200d85412000a00000076616c696461746f72730000ec5412001000000076616c696461746f725f67726f7570730455120012000000617661696c6162696c6974795f636f726573000020551200190000007065727369737465645f76616c69646174696f6e5f646174610000004455120018000000636865636b5f76616c69646174696f6e5f6f757470757473645512001700000073657373696f6e5f696e6465785f666f725f6368696c6400845512000c00000073657373696f6e5f696e666f985512000f00000076616c69646174696f6e5f636f646500b05512001a000000686973746f726963616c5f76616c69646174696f6e5f636f64650000d45512001e00000063616e6469646174655f70656e64696e675f617661696c6162696c6974790000fc5512001000000063616e6469646174655f6576656e7473145612000c000000646d715f636f6e74656e7473285612001e000000696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e7473000050561200130000006772616e6470615f617574686f726974696573006c5612002d0000007375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963000000a45612001c00000067656e65726174655f6b65795f6f776e6572736869705f70726f6f66c85612000d000000636f6e66696775726174696f6e000000e05612001300000063757272656e745f65706f63685f737461727400fc5612000d00000063757272656e745f65706f6368000000145712000a0000006e6578745f65706f63680000285712000b000000617574686f726974696573003c5712001500000067656e65726174655f73657373696f6e5f6b6579730000005c571200130000006465636f64655f73657373696f6e5f6b65797300785712000d0000006163636f756e745f6e6f6e6365000000905712000a00000071756572795f696e666f0000a45712001100000071756572795f6665655f64657461696c730000001c151300580000001601000001000000496e7374616e636531436f6c6c65637469766550726f706f73616c7350726f706f73616c436f756e7450726f706f73616c4f66566f74696e67496e7374616e636532436f6c6c65637469766557726f6e6750726f706f73616c576569676874416c7265616479496e697469616c697a65644475706c6963617465566f746557726f6e67496e64657857726f6e6750726f706f73616c4c656e67746800000000006c5912000b0000000000000078591200030000000000000000000000c0591200180000000000000000000000805a12000700000000000000885a1200020000000000000000000000b85a12000a0000000000000000000000bc8712000700000000000000085b1200030000000000000000000000505b12001b0000000000000000000000d48812000400000000000000285c1200030000000000000000000000705c12000e0000000000000000000000e05c12000500000000000000e85c1200040000000000000000000000485d12001e0000000000000000000000385e12001300000000000000c88912000100000000000000000000004c5e12000d000000000000007365745f6d656d6265727300000000001c7012000b000000000000002c1a130011000000000000002770120005000000000000002c7012001400000000000000407012000900000000000000497012000b000000526c1200210000005431130000000000736c120052000000c56c120039000000fe6c12004e0000004c6d12002b0000005431130000000000776d12001600000054311300000000008d6d120055000000e26d1200490000005431130000000000f2eb12000b0000009e6312000a0000002b6e120015000000406e120039000000796e120039000000b26e1200270000009464120006000000d96e12005d000000366f12003c000000726f120052000000c46f12005800000036ec12000c00000065786563757465000000000001b512000800000000000000346b12001f00000000000000c16512000c00000000000000d2a012000c000000536b12003d0000005431130000000000906b12002b0000005431130000000000f2eb12000b0000009e6312000a000000bb6b1200610000001c6c120036000000796712000a00000036ec12000c00000000000000176b12000900000000000000206b1200140000000000000001b512000800000000000000346b12001f00000000000000c16512000c00000000000000d2a012000c0000008a6712003f0000005431130000000000c9671200220000005431130000000000eb671200510000003c681200160000005431130000000000f2eb12000b0000009e6312000a000000526812002c000000c663120039000000ff631200380000007e68120032000000b06812003e000000ee6812004000000094641200060000002e6912002e0000005c6912003d000000996912002b000000c469120043000000076a12002f000000366a1200370000006d6a12003a000000a76a120034000000db6a1200300000000b6b12000c00000036ec12000c0000000000000001b512000800000000000000b7f912000700000000000000a00e13000500000000000000876512001600000000000000836712000700000000000000a1fb120004000000cd6512003d00000054311300000000000a6612002400000054311300000000002e66120053000000816612005a000000f2eb12000b0000009e6312000a000000db6612004300000094641200060000001e6712002c0000004a6712002f000000796712000a00000036ec12000c000000636c6f736500000000000000389712000d00000000000000b7f912000700000000000000a00e130005000000000000008765120016000000000000009d6512001500000000000000b26512000f00000000000000c16512000c00000000000000d2a012000c000000076012005400000054311300000000005b601200560000005431130000000000b160120053000000046112003000000054311300000000003461120053000000876112004a0000005431130000000000d1611200590000002a6212005800000054311300000000008262120063000000e5621200590000003e631200600000005431130000000000f2eb12000b0000009e6312000a000000a86312001e000000c663120039000000ff6312003800000037641200330000006a6412002a00000094641200060000009a64120044000000de641200600000003e65120038000000766512001100000036ec12000c000000646973617070726f76655f70726f706f73616c00b45e12005e0000005431130000000000125f1200230000005431130000000000355f12000c000000415f1200480000005431130000000000f2eb12000b000000895f120038000000c15f12000b000000cc5f120013000000df5f12002800000036ec12000c00000020446973617070726f766520612070726f706f73616c2c20636c6f73652c20616e642072656d6f76652069742066726f6d207468652073797374656d2c207265676172646c657373206f66206974732063757272656e742073746174652e204d7573742062652063616c6c65642062792074686520526f6f74206f726967696e2e20506172616d65746572733a202a206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20746861742073686f756c6420626520646973617070726f7665642e20436f6d706c65786974793a204f285029207768657265205020697320746865206e756d626572206f66206d61782070726f706f73616c73204442205765696768743a202a2052656164733a2050726f706f73616c73202a205772697465733a20566f74696e672c2050726f706f73616c732c2050726f706f73616c4f6620436c6f7365206120766f746520746861742069732065697468657220617070726f7665642c20646973617070726f766564206f722077686f736520766f74696e6720706572696f642068617320656e6465642e204d61792062652063616c6c656420627920616e79207369676e6564206163636f756e7420696e206f7264657220746f2066696e69736820766f74696e6720616e6420636c6f7365207468652070726f706f73616c2e2049662063616c6c6564206265666f72652074686520656e64206f662074686520766f74696e6720706572696f642069742077696c6c206f6e6c7920636c6f73652074686520766f74652069662069742069732068617320656e6f75676820766f74657320746f20626520617070726f766564206f7220646973617070726f7665642e2049662063616c6c65642061667465722074686520656e64206f662074686520766f74696e6720706572696f642061627374656e74696f6e732061726520636f756e7465642061732072656a656374696f6e7320756e6c6573732074686572652069732061207072696d65206d656d6265722073657420616e6420746865207072696d65206d656d626572206361737420616e20617070726f76616c2e2049662074686520636c6f7365206f7065726174696f6e20636f6d706c65746573207375636365737366756c6c79207769746820646973617070726f76616c2c20746865207472616e73616374696f6e206665652077696c6c206265207761697665642e204f746865727769736520657865637574696f6e206f662074686520617070726f766564206f7065726174696f6e2077696c6c206265206368617267656420746f207468652063616c6c65722e202b206070726f706f73616c5f7765696768745f626f756e64603a20546865206d6178696d756d20616d6f756e74206f662077656967687420636f6e73756d656420627920657865637574696e672074686520636c6f7365642070726f706f73616c2e202b20606c656e6774685f626f756e64603a2054686520757070657220626f756e6420666f7220746865206c656e677468206f66207468652070726f706f73616c20696e2073746f726167652e20436865636b656420766961202020202020202020202020202020202020206073746f726167653a3a726561646020736f206974206973206073697a655f6f663a3a3c7533323e2829203d3d203460206c6172676572207468616e207468652070757265206c656e6774682e20232320576569676874202d20604f2842202b204d202b205031202b20503229602077686572653a2020202d20604260206973206070726f706f73616c602073697a6520696e20627974657320286c656e6774682d6665652d626f756e646564292020202d20604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20605031602069732074686520636f6d706c6578697479206f66206070726f706f73616c6020707265696d6167652e2020202d20605032602069732070726f706f73616c2d636f756e742028636f64652d626f756e64656429202d2044423a20202d20322073746f726167652072656164732028604d656d62657273603a20636f64656320604f284d29602c20605072696d65603a20636f64656320604f283129602920202d2033206d75746174696f6e73202860566f74696e67603a20636f64656320604f284d29602c206050726f706f73616c4f66603a20636f64656320604f284229602c206050726f706f73616c73603a20636f64656320604f28503229602920202d20616e79206d75746174696f6e7320646f6e65207768696c6520657865637574696e67206070726f706f73616c6020286050316029202d20757020746f2033206576656e7473436f6d706163743c50726f706f73616c496e6465783e70726f706f73616c5f7765696768745f626f756e64436f6d706163743c5765696768743e6c656e6774685f626f756e642041646420616e20617965206f72206e617920766f746520666f72207468652073656e64657220746f2074686520676976656e2070726f706f73616c2e205265717569726573207468652073656e64657220746f2062652061206d656d6265722e205472616e73616374696f6e20666565732077696c6c2062652077616976656420696620746865206d656d62657220697320766f74696e67206f6e20616e7920706172746963756c61722070726f706f73616c20666f72207468652066697273742074696d6520616e64207468652063616c6c206973207375636365737366756c2e2053756273657175656e7420766f7465206368616e6765732077696c6c206368617267652061206665652e202d20604f284d296020776865726520604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20312073746f72616765207265616420604d656d62657273602028636f64656320604f284d2960292020202d20312073746f72616765206d75746174696f6e2060566f74696e67602028636f64656320604f284d296029202d2031206576656e74617070726f7665204164642061206e65772070726f706f73616c20746f2065697468657220626520766f746564206f6e206f72206578656375746564206469726563746c792e205265717569726573207468652073656e64657220746f206265206d656d6265722e20607468726573686f6c64602064657465726d696e65732077686574686572206070726f706f73616c60206973206578656375746564206469726563746c792028607468726573686f6c64203c20326029206f722070757420757020666f7220766f74696e672e202d20604f2842202b204d202b2050312960206f7220604f2842202b204d202b20503229602077686572653a2020202d206272616e6368696e6720697320696e666c75656e63656420627920607468726573686f6c64602077686572653a20202020202d20605031602069732070726f706f73616c20657865637574696f6e20636f6d706c65786974792028607468726573686f6c64203c2032602920202020202d20605032602069732070726f706f73616c732d636f756e742028636f64652d626f756e646564292028607468726573686f6c64203e3d203260292020202d20312073746f726167652072656164206069735f6d656d626572602028636f64656320604f284d2960292020202d20312073746f726167652072656164206050726f706f73616c4f663a3a636f6e7461696e735f6b6579602028636f64656320604f28312960292020202d20444220616363657373657320696e666c75656e63656420627920607468726573686f6c64603a20202020202d204549544845522073746f7261676520616363657373657320646f6e65206279206070726f706f73616c602028607468726573686f6c64203c2032602920202020202d204f522070726f706f73616c20696e73657274696f6e2028607468726573686f6c64203c3d20326029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c73602028636f64656320604f285032296029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c436f756e74602028636f64656320604f2831296029202020202020202d20312073746f72616765207772697465206050726f706f73616c4f66602028636f64656320604f2842296029202020202020202d20312073746f726167652077726974652060566f74696e67602028636f64656320604f284d2960292020202d2031206576656e747468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e202d20604f284d202b2050296020776865726520604d60206d656d626572732d636f756e742028636f64652d626f756e6465642920616e642060506020636f6d706c6578697479206f66206469737061746368696e67206070726f706f73616c60202d2044423a203120726561642028636f64656320604f284d296029202b20444220616363657373206f66206070726f706f73616c60205365742074686520636f6c6c6563746976652773206d656d626572736869702e202d20606e65775f6d656d62657273603a20546865206e6577206d656d626572206c6973742e204265206e69636520746f2074686520636861696e20616e642070726f7669646520697420736f727465642e202d20607072696d65603a20546865207072696d65206d656d6265722077686f736520766f74652073657473207468652064656661756c742e202d20606f6c645f636f756e74603a2054686520757070657220626f756e6420666f72207468652070726576696f7573206e756d626572206f66206d656d6265727320696e2073746f726167652e202020202020202020202020202020205573656420666f722077656967687420657374696d6174696f6e2e20526571756972657320726f6f74206f726967696e2e204e4f54453a20446f6573206e6f7420656e666f7263652074686520657870656374656420604d61784d656d6265727360206c696d6974206f6e2074686520616d6f756e74206f66206d656d626572732c20627574202020202020207468652077656967687420657374696d6174696f6e732072656c79206f6e20697420746f20657374696d61746520646973706174636861626c65207765696768742e202d20604f284d50202b204e29602077686572653a2020202d20604d60206f6c642d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20604e60206e65772d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d206050602070726f706f73616c732d636f756e742028636f64652d626f756e646564292020202d20312073746f72616765206d75746174696f6e2028636f64656320604f284d296020726561642c20604f284e29602077726974652920666f722072656164696e6720616e642077726974696e6720746865206d656d626572732020202d20312073746f7261676520726561642028636f64656320604f285029602920666f722072656164696e67207468652070726f706f73616c732020202d206050602073746f72616765206d75746174696f6e732028636f64656320604f284d29602920666f72207570646174696e672074686520766f74657320666f7220656163682070726f706f73616c2020202d20312073746f726167652077726974652028636f64656320604f283129602920666f722064656c6574696e6720746865206f6c6420607072696d656020616e642073657474696e6720746865206e6577206f6e656e65775f6d656d626572737072696d654f7074696f6e3c543a3a4163636f756e7449643e6f6c645f636f756e744d656d626572436f756e7400000000db571200090000000000000000000000f22113000c00000000000000000000000000000000000000000000000000000000000000543113006472120000000000000000007472120001000000000000000100000000000000f15712000a0000000106000000000000b7f9120007000000000000007c7212001a0000000000000000000000000000000000000054311300987212000000000000000000a872120001000000000000000000000000000000fb571200060000000106000000000000b7f912000700000000000000b0721200230000000000000000000000000000000000000054311300d47212000000000000000000e472120001000000000000000000000000000000e45712000d0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300ec7212000000000000000000fc72120001000000000000000100000000000000c7e112000700000000000000000000002c1a13001100000000000000000000000000000000000000000000000000000000000000543113000473120000000000000000001473120001000000000000000100000000000000dbe11200050000000000000000000000e3f812000c00000000000000000000000000000000000000000000000000000000000000543113001c73120000000000000000002c731200010000000000000000000000120000000000000001000000620000004d741200240000003c5420617320436f6e6669673c493e3e3a3a50726f706f73616c0000120000000000000001000000ff0000001a74120033000000566f7465733c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e0012000000000000000100000000010000ed7312002d00000012000000000000000100000022000000db731200120000001200000000000000010000003f0000008d7312004e00000012000000000000000100000023000000347312005900000020546865207072696d65206d656d62657220746861742068656c70732064657465726d696e65207468652064656661756c7420766f7465206265686176696f7220696e2063617365206f6620616273656e746174696f6e732e205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e00000000000000db571200090000000000000000000000f22113000c00000000000000000000000000000000000000000000000000000000000000543113008476120000000000000000007472120001000000000000000100000000000000f15712000a0000000106000000000000b7f9120007000000000000007c7212001a0000000000000000000000000000000000000054311300947612000000000000000000a872120001000000000000000000000000000000fb571200060000000106000000000000b7f912000700000000000000b0721200230000000000000000000000000000000000000054311300a47612000000000000000000e472120001000000000000000000000000000000e45712000d0000000000000000000000cbed1200030000000000000000000000000000000000000000000000000000000000000054311300b47612000000000000000000fc72120001000000000000000100000000000000c7e112000700000000000000000000002c1a1300110000000000000000000000000000000000000000000000000000000000000054311300c476120000000000000000001473120001000000000000000100000000000000dbe11200050000000000000000000000e3f812000c0000000000000000000000000000000000000000000000000000000000000054311300d476120000000000000000002c73120001000000000000000000000012000000000000000100000062000000120000000000000001000000ff00000012000000000000000100000000010000120000000000000001000000220000001200000000000000010000003f0000001200000000000000010000002300000000000000d0ce1200080000000000000018781200040000000000000000000000387812000300000000000000000000005078120005000000000000005878120005000000000000000000000080781200030000000000000000000000987812000800000000000000e8d01200010000000000000000000000a0781200020000000000000000000000b07812000b00000000000000e8d01200010000000000000000000000bc78120002000000000000000000000090cf12000800000000000000cc781200020000000000000000000000dc781200020000000000000000000000ec7812000e00000000000000cc781200020000000000000000000000fc7812000200000000000000000000000c7912000600000000000000147912000300000000000000000000002c791200020000000000000079e5120009000000357c12000d00000082e5120004000000497012000b0000009c7b120053000000ef7b120010000000ff7b120036000000566f74656400000079e512000900000082e5120004000000a1fb120004000000497012000b000000497012000b000000e97a1200420000002b7b120046000000717b12002b000000417070726f766564b87a120031000000a67a120012000000446973617070726f76656400717a120035000000a67a12001200000082e5120004000000637a12000e0000001a7a120049000000007a12001a0000004d656d62657245786563757465640000ad79120053000000007a12001a000000436c6f736564000082e5120004000000497012000b000000497012000b0000003c79120056000000927912001b00000020412070726f706f73616c2077617320636c6f736564206265636175736520697473207468726573686f6c64207761732072656163686564206f7220616674657220697473206475726174696f6e207761732075702e205c5b70726f706f73616c5f686173682c207965732c206e6f5c5d20412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e205c5b70726f706f73616c5f686173682c20726573756c745c5d2041206d6f74696f6e207761732065786563757465643b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e4469737061746368526573756c742041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e205c5b70726f706f73616c5f686173685c5d2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f686173682c20766f7465642c207965732c206e6f5c5d2041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f696e6465782c2070726f706f73616c5f686173682c207468726573686f6c645c5d50726f706f73616c496e646578000012000000000000000100000021000000647c12006600000062000000270000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f6e706f732d656c656374696f6e732f7372632f70687261676d656e2e72730000dc7c1200670000008e0000002f0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f6e706f732d656c656374696f6e732f7372632f62616c616e63696e672e72730000000000e0e1120009000000000000005c7e1200010000000000000000000000218312001100000000000000647e1200010000000000000000000000498312000f000000000000006c7e1200010000000000000000000000465812000a00000000000000747e1200010000000000000000000000395812000d000000000000007c7e1200010000000000000000000000275812001200000000000000847e1200010000000000000000000000ab82120008000000000000008c7e1200010000000000000000000000608312001000000000000000947e12000100000000000000000000001458120013000000000000009c7e1200010000000000000000000000505812001300000000000000a47e120001000000000000001480120018000000f47f120020000000e07f120014000000cf7f120011000000b87f120017000000977f120021000000567f120041000000167f120040000000e17e120035000000ac7e1200350000002054686520676976656e206c656e67746820626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686520676976656e2077656967687420626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686572652063616e206f6e6c792062652061206d6178696d756d206f6620604d617850726f706f73616c7360206163746976652070726f706f73616c732e2054686520636c6f73652063616c6c20776173206d61646520746f6f206561726c792c206265666f72652074686520656e64206f662074686520766f74696e672e204d656d626572732061726520616c726561647920696e697469616c697a656421204475706c696361746520766f74652069676e6f726564204d69736d61746368656420696e6465782050726f706f73616c206d757374206578697374204475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564204163636f756e74206973206e6f742061206d656d6265724c4f474943204552524f523a2062616b655f7265666572656e64756d2f7363686564756c655f6e616d6564206661696c656444656d6f63726163795265666572656e64756d496e666f4f66507265696d616765734e65787445787465726e616c5075626c696350726f70734465706f7369744f6653657373696f6e486973746f726963616c53657373696f6e730000002f000000600000000800000001010000020100002f0000006000000008000000300000003100000032000000330000003400000035000000360000006661696c656420746f20696e7365727420696e746f207472696500002481120054000000740100001b0000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f7472696564626d75742e72732481120054000000670100000d0000009081120023000000605f5f49676e6f7265602063616e206e6576657220626520636f6e7374727563746564496e76616c69645769746e6573734d6178566f7465735265616368656457726f6e675570706572426f756e644e6f6e73656e7365496e7374616e744e6f74416c6c6f776564566f74657345786973744e6f7444656c65676174696e67496e73756666696369656e7446756e6473556e646572666c6f774f766572666c6f77416c726561647944656c65676174696e674e6f5065726d697373696f6e4e6f74566f7465724e6f74457870697265644e6f744c6f636b65644e6f6e6557616974696e67507265696d616765496e76616c69645265666572656e64756d496e76616c6964507265696d6167654d697373696e67496d6d696e656e74546f6f4561726c794e6f74496d6d696e656e744475706c6963617465507265696d6167654e6f7444656c656761746564416c72656164795665746f65644e6f50726f706f73616c496e76616c6964486173684e6f7453696d706c654d616a6f7269747950726f706f73616c426c61636b6c69737465644475706c696361746550726f706f73616c416c726561647943616e63656c6564426164496e64657850726f706f73616c4d697373696e6756616c75654c6f77546f6f4d616e7950726f706f73616c7300000000bc8712000700000000000000c4871200020000000000000000000000f48712000b00000000000000000000004c881200060000000000000054881200020000000000000000000000848812000a0000000000000000000000d48812000400000000000000d8881200020000000000000000000000088912000900000000000000000000005089120010000000000000006089120001000000000000000000000078891200080000000000000000000000b88912001000000000000000c8891200010000000000000000000000e0891200090000000000000000000000288a12001900000000000000c8891200010000000000000000000000448a12000b00000000000000000000009c8a12001800000000000000c8891200010000000000000000000000b48a12000b00000000000000000000000c8b12000a00000000000000188b1200030000000000000000000000608b12000f0000000000000000000000d88b12000d00000000000000c8891200010000000000000000000000e88b1200090000000000000000000000308c12001100000000000000448c12000100000000000000000000005c8c1200070000000000000000000000948c12000d00000000000000a48c1200010000000000000000000000bc8c1200070000000000000000000000f48c12000800000000000000fc8c1200030000000000000000000000448d1200140000000000000000000000e48d12000a0000000000000054311300000000000000000000000000f08d12000c0000000000000000000000508e1200160000000000000054311300000000000000000000000000688e1200050000000000000000000000908e12000d00000000000000a08e1200010000000000000000000000b88e12000a0000000000000000000000088f12001900000000000000a08e1200010000000000000000000000248f12000100000000000000000000002c8f12001600000000000000a08e1200010000000000000000000000448f12000c0000000000000000000000a48f12002200000000000000a08e1200010000000000000000000000c88f1200010000000000000000000000d08f12000d00000000000000e08f1200020000000000000000000000109012000f000000000000000000000088901200060000000000000090901200010000000000000000000000a8901200070000000000000000000000e09012000b00000000000000ec901200010000000000000000000000049112001b0000000000000000000000dc9112001100000000000000f0911200020000000000000000000000209212000f0000000000000000000000989212000e00000000000000a8921200020000000000000000000000d8921200010000000000000000000000e09212000900000000000000ec9212000200000000000000000000001c9312000f0000000000000000000000949312000f00000000000000a4931200010000000000000000000000bc931200070000000000000070726f706f73650000000000389712000d00000000000000b7f91200070000000000000048b6120005000000000000004db61200150000001cb5120028000000543113000000000044b51200460000008ab51200210000005431130000000000abb5120036000000e1b5120046000000543113000000000027b6120012000000543113000000000039b612000f0000007365636f6e6400000000000001b512000800000000000000c1941200120000000000000009b512001300000000000000d2a012000c00000037b312002e000000543113000000000065b3120041000000a6b31200450000005431130000000000ebb31200330000001eb41200510000006fb412004a0000005431130000000000b9b4120048000000766f74650000000072aa120009000000000000007baa12001800000000000000d488120004000000000000001eb3120019000000fcb112004d00000049b212002f00000054311300000000000b99120033000000543113000000000078b2120038000000b0b21200220000005431130000000000d2b212004c000000656d657267656e63795f63616e63656c0000000072aa12000900000000000000bf9712000f00000034b112005400000078b012000c000000543113000000000088b112003f0000005431130000000000c7b1120035000000543113000000000008a412001000000065787465726e616c5f70726f706f736500000000389712000d00000000000000b7f91200070000002cb012004c00000078b012000c000000543113000000000084b012003b0000005431130000000000d2ae1200360000005431130000000000bfb012004600000005b112002f00000065787465726e616c5f70726f706f73655f6d616a6f7269747900000082af120056000000d8af1200180000005431130000000000f0af12003c0000005431130000000000d2ae120036000000543113000000000008af1200530000005baf120027000000543113000000000003ae12000f00000065787465726e616c5f70726f706f73655f64656661756c7424ae12005200000076ae120021000000543113000000000097ae12003b0000005431130000000000d2ae120036000000543113000000000008af1200530000005baf120027000000543113000000000003ae12000f000000666173745f747261636b000000000000389712000d00000000000000b7f91200070000000000000012ae12000d00000000000000a9f912000e000000000000001fae12000500000000000000a9f912000e00000095ab120054000000e9ab12005900000042ac12003b00000054311300000000007dac1200350000005431130000000000b2ac12003e000000f0ac12005800000048ad1200260000006ead120055000000c3ad12002f0000005431130000000000f2ad120011000000543113000000000003ae12000f0000007665746f5f65787465726e616c00000093aa12002f0000005431130000000000c2aa1200370000005431130000000000f9aa12004c000000543113000000000045ab120010000000543113000000000055ab12004000000063616e63656c5f7265666572656e64756d0000000000000072aa120009000000000000007baa12001800000015aa1200150000005431130000000000d7a312003100000054311300000000002aaa120036000000543113000000000060aa12001200000063616e63656c5f7175657565640000000000000010aa12000500000000000000bf9712000f00000063a91200280000005431130000000000d7a312003100000054311300000000008ba91200320000005431130000000000bda912005300000064656c6567617465000000003aa912000200000000000000e3f812000c000000000000003ca912000a0000000000000046a912000a0000000000000050a91200070000000000000057a912000c000000dca512004f00000054311300000000002ba612005600000081a61200330000005431130000000000b4a61200580000000ca712001e0000002aa712005700000081a71200260000005431130000000000a7a7120052000000f9a71200560000004fa8120051000000a0a8120055000000f5a8120032000000543113000000000027a9120013000000543113000000000059a5120050000000a9a5120033000000756e64656c6567617465000018a412003400000054311300000000004ca4120058000000a4a41200380000005431130000000000dca41200520000002ea5120016000000543113000000000044a5120015000000543113000000000059a5120050000000a9a5120033000000636c6561725f7075626c69635f70726f706f73616c730000baa312001d0000005431130000000000d7a3120031000000543113000000000008a41200100000006e6f74655f707265696d61676500000000000000aaa31200100000000000000042ec12000700000009a312005800000061a312004900000054311300000000000b99120033000000543113000000000029a212003200000054311300000000005ba2120017000000543113000000000072a21200540000006e6f74655f707265696d6167655f6f7065726174696f6e616c000000c6a21200430000006e6f74655f696d6d696e656e745f707265696d61676500002aa11200510000007ba1120050000000cba112004e00000019a212001000000054311300000000000b99120033000000543113000000000029a212003200000054311300000000005ba2120017000000543113000000000072a21200540000006e6f74655f696d6d696e656e745f707265696d6167655f6f7065726174696f6e616c0000dea012004c000000726561705f707265696d61676500000000000000389712000d00000000000000b7f912000700000000000000baa012001800000000000000d2a012000c000000a19e12003d00000054311300000000000b991200330000005431130000000000de9e120034000000129f12004b0000005d9f12004000000054311300000000009d9f120054000000f19f12005700000048a012002c000000543113000000000074a012001800000054311300000000008ca012002e000000756e6c6f636b000000000000739a12000600000000000000e3f812000c000000199e12002900000054311300000000000b991200330000005431130000000000429e12002f0000005431130000000000719e12003000000072656d6f76655f766f74650000000000a00e13000500000000000000bf9712000f000000ce971200200000005431130000000000799a1200040000007d9a120023000000a09a120020000000c09a120025000000e59a120040000000259b1200360000005b9b1200220000007d9b120058000000d59b1200170000005431130000000000ec9b12002b000000179c12003c000000539c1200380000008b9c120030000000bb9c120057000000129d120057000000699d12003a0000005431130000000000a39d120053000000f69d1200230000005431130000000000a89912003e0000005431130000000000e6991200560000003c9a12003700000072656d6f76655f6f746865725f766f746500000000000000739a12000600000000000000e3f812000c00000000000000a00e13000500000000000000bf9712000f000000ce971200200000005431130000000000ee97120054000000429812004c0000008e98120056000000e49812002700000054311300000000000b9912003300000054311300000000003e991200540000009299120016000000a89912003e0000005431130000000000e6991200560000003c9a120037000000656e6163745f70726f706f73616c000000000000389712000d00000000000000b7f912000700000000000000a00e13000500000000000000bf9712000f0000006b97120054000000626c61636b6c69737400000000000000389712000d00000000000000b7f912000700000000000000459712000f000000000000005497120017000000d3941200520000002595120010000000543113000000000035951200550000008a95120055000000df9512001b0000005431130000000000fa9512003c0000005431130000000000369612003f0000007596120052000000c79612000b0000005431130000000000d296120051000000239712001500000063616e63656c5f70726f706f73616c0000000000b79412000a00000000000000c194120012000000f493120013000000543113000000000007941200410000005431130000000000489412003500000054311300000000007d9412003a0000002052656d6f766520612070726f706f73616c2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206043616e63656c50726f706f73616c4f726967696e602e202d206070726f705f696e646578603a2054686520696e646578206f66207468652070726f706f73616c20746f2063616e63656c2e205765696768743a20604f28702960207768657265206070203d205075626c696350726f70733a3a3c543e3a3a6465636f64655f6c656e28296070726f705f696e646578436f6d706163743c50726f70496e6465783e205065726d616e656e746c7920706c61636520612070726f706f73616c20696e746f2074686520626c61636b6c6973742e20546869732070726576656e74732069742066726f6d2065766572206265696e672070726f706f73656420616761696e2e2049662063616c6c6564206f6e206120717565756564207075626c6963206f722065787465726e616c2070726f706f73616c2c207468656e20746869732077696c6c20726573756c7420696e206974206265696e672072656d6f7665642e2049662074686520607265665f696e6465786020737570706c69656420697320616e20616374697665207265666572656e64756d2077697468207468652070726f706f73616c20686173682c207468656e2069742077696c6c2062652063616e63656c6c65642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d7573742062652060426c61636b6c6973744f726967696e602e202d206070726f706f73616c5f68617368603a205468652070726f706f73616c206861736820746f20626c61636b6c697374207065726d616e656e746c792e202d20607265665f696e646578603a20416e206f6e676f696e67207265666572656e64756d2077686f73652068617368206973206070726f706f73616c5f68617368602c2077686963682077696c6c2062652063616e63656c6c65642e205765696768743a20604f28702960202874686f756768206173207468697320697320616e20686967682d70726976696c6567652064697370617463682c20776520617373756d65206974206861732061202020726561736f6e61626c652076616c7565292e70726f706f73616c5f686173686d617962655f7265665f696e6465784f7074696f6e3c5265666572656e64756d496e6465783e20456e61637420612070726f706f73616c2066726f6d2061207265666572656e64756d2e20466f72206e6f77207765206a757374206d616b65207468652077656967687420626520746865206d6178696d756d2e5265666572656e64756d496e6465782052656d6f7665206120766f746520666f722061207265666572656e64756d2e2049662074686520607461726765746020697320657175616c20746f20746865207369676e65722c207468656e20746869732066756e6374696f6e2069732065786163746c79206571756976616c656e7420746f206072656d6f76655f766f7465602e204966206e6f7420657175616c20746f20746865207369676e65722c207468656e2074686520766f7465206d757374206861766520657870697265642c20656974686572206265636175736520746865207265666572656e64756d207761732063616e63656c6c65642c20626563617573652074686520766f746572206c6f737420746865207265666572656e64756d206f7220626563617573652074686520636f6e76696374696f6e20706572696f64206973206f7665722e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e202d2060746172676574603a20546865206163636f756e74206f662074686520766f746520746f2062652072656d6f7665643b2074686973206163636f756e74206d757374206861766520766f74656420666f722020207265666572656e64756d2060696e646578602e202d2060696e646578603a2054686520696e646578206f66207265666572656e64756d206f662074686520766f746520746f2062652072656d6f7665642e205765696768743a20604f2852202b206c6f6720522960207768657265205220697320746865206e756d626572206f66207265666572656e646120746861742060746172676574602068617320766f746564206f6e2e2020205765696768742069732063616c63756c6174656420666f7220746865206d6178696d756d206e756d626572206f6620766f74652e7461726765742049663a202d20746865207265666572656e64756d207761732063616e63656c6c65642c206f72202d20746865207265666572656e64756d206973206f6e676f696e672c206f72202d20746865207265666572656e64756d2068617320656e646564207375636820746861742020202d2074686520766f7465206f6620746865206163636f756e742077617320696e206f70706f736974696f6e20746f2074686520726573756c743b206f722020202d20746865726520776173206e6f20636f6e76696374696f6e20746f20746865206163636f756e74277320766f74653b206f722020202d20746865206163636f756e74206d61646520612073706c697420766f7465202e2e2e7468656e2074686520766f74652069732072656d6f76656420636c65616e6c7920616e64206120666f6c6c6f77696e672063616c6c20746f2060756e6c6f636b60206d617920726573756c7420696e206d6f72652066756e6473206265696e6720617661696c61626c652e2049662c20686f77657665722c20746865207265666572656e64756d2068617320656e64656420616e643a202d2069742066696e697368656420636f72726573706f6e64696e6720746f2074686520766f7465206f6620746865206163636f756e742c20616e64202d20746865206163636f756e74206d6164652061207374616e6461726420766f7465207769746820636f6e76696374696f6e2c20616e64202d20746865206c6f636b20706572696f64206f662074686520636f6e76696374696f6e206973206e6f74206f766572202e2e2e7468656e20746865206c6f636b2077696c6c206265206167677265676174656420696e746f20746865206f766572616c6c206163636f756e742773206c6f636b2c207768696368206d617920696e766f6c7665202a6f7665726c6f636b696e672a20287768657265207468652074776f206c6f636b732061726520636f6d62696e656420696e746f20612073696e676c65206c6f636b207468617420697320746865206d6178696d756d206f6620626f74682074686520616d6f756e74206c6f636b656420616e64207468652074696d65206973206974206c6f636b656420666f72292e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2c20616e6420746865207369676e6572206d7573742068617665206120766f7465207265676973746572656420666f72207265666572656e64756d2060696e646578602e20556e6c6f636b20746f6b656e732074686174206861766520616e2065787069726564206c6f636b2e202d2060746172676574603a20546865206163636f756e7420746f2072656d6f766520746865206c6f636b206f6e2e205765696768743a20604f2852296020776974682052206e756d626572206f6620766f7465206f66207461726765742e2052656d6f766520616e20657870697265642070726f706f73616c20707265696d61676520616e6420636f6c6c65637420746865206465706f7369742e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f6620612070726f706f73616c2e202d206070726f706f73616c5f6c656e6774685f75707065725f626f756e64603a20616e20757070657220626f756e64206f6e206c656e677468206f66207468652070726f706f73616c2e20202045787472696e736963206973207765696768746564206163636f7264696e6720746f20746869732076616c75652077697468206e6f20726566756e642e20546869732077696c6c206f6e6c7920776f726b2061667465722060566f74696e67506572696f646020626c6f636b732066726f6d207468652074696d6520746861742074686520707265696d61676520776173206e6f7465642c2069662069742773207468652073616d65206163636f756e7420646f696e672069742e2049662069742773206120646966666572656e74206163636f756e742c207468656e206974276c6c206f6e6c7920776f726b20616e206164646974696f6e616c2060456e6163746d656e74506572696f6460206c617465722e20456d6974732060507265696d616765526561706564602e205765696768743a20604f284429602077686572652044206973206c656e677468206f662070726f706f73616c2e70726f706f73616c5f6c656e5f75707065725f626f756e64436f6d706163743c7533323e2053616d6520617320606e6f74655f696d6d696e656e745f707265696d6167656020627574206f726967696e20697320604f7065726174696f6e616c507265696d6167654f726967696e602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e2054686973207265717569726573207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652e204e6f206465706f736974206973206e65656465642e205768656e20746869732063616c6c206973207375636365737366756c2c20692e652e2074686520707265696d61676520686173206e6f74206265656e2075706c6f61646564206265666f726520616e64206d61746368657320736f6d6520696d6d696e656e742070726f706f73616c2c206e6f2066656520697320706169642e202d2060656e636f6465645f70726f706f73616c603a2054686520707265696d616765206f6620612070726f706f73616c2e20456d6974732060507265696d6167654e6f746564602e205765696768743a20604f28452960207769746820452073697a65206f662060656e636f6465645f70726f706f73616c60202870726f7465637465642062792061207265717569726564206465706f736974292e2053616d6520617320606e6f74655f707265696d6167656020627574206f726967696e20697320604f7065726174696f6e616c507265696d6167654f726967696e602e2052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e205468697320646f65736e27742072657175697265207468652070726f706f73616c20746f20626520696e207468652064697370617463682071756575652062757420646f657320726571756972652061206465706f7369742c2072657475726e6564206f6e636520656e61637465642e656e636f6465645f70726f706f73616c20436c6561727320616c6c207075626c69632070726f706f73616c732e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f526f6f745f2e205765696768743a20604f283129602e20556e64656c65676174652074686520766f74696e6720706f776572206f66207468652073656e64696e67206163636f756e742e20546f6b656e73206d617920626520756e6c6f636b656420666f6c6c6f77696e67206f6e636520616e20616d6f756e74206f662074696d6520636f6e73697374656e74207769746820746865206c6f636b20706572696f64206f662074686520636f6e76696374696f6e2077697468207768696368207468652064656c65676174696f6e20776173206973737565642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d7573742062652063757272656e746c792064656c65676174696e672e20456d6974732060556e64656c656761746564602e205765696768743a20604f28522960207768657265205220697320746865206e756d626572206f66207265666572656e64756d732074686520766f7465722064656c65676174696e6720746f20686173202020766f746564206f6e2e205765696768742069732063686172676564206173206966206d6178696d756d20766f7465732e2044656c65676174652074686520766f74696e6720706f77657220287769746820736f6d6520676976656e20636f6e76696374696f6e29206f66207468652073656e64696e67206163636f756e742e205468652062616c616e63652064656c656761746564206973206c6f636b656420666f72206173206c6f6e6720617320697427732064656c6567617465642c20616e64207468657265616674657220666f72207468652074696d6520617070726f70726961746520666f722074686520636f6e76696374696f6e2773206c6f636b20706572696f642e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2c20616e6420746865207369676e696e67206163636f756e74206d757374206569746865723a2020202d2062652064656c65676174696e6720616c72656164793b206f722020202d2068617665206e6f20766f74696e67206163746976697479202869662074686572652069732c207468656e2069742077696c6c206e65656420746f2062652072656d6f7665642f636f6e736f6c69646174656420202020207468726f7567682060726561705f766f746560206f722060756e766f746560292e202d2060746f603a20546865206163636f756e742077686f736520766f74696e6720746865206074617267657460206163636f756e74277320766f74696e6720706f7765722077696c6c20666f6c6c6f772e202d2060636f6e76696374696f6e603a2054686520636f6e76696374696f6e20746861742077696c6c20626520617474616368656420746f207468652064656c65676174656420766f7465732e205768656e207468652020206163636f756e7420697320756e64656c6567617465642c207468652066756e64732077696c6c206265206c6f636b656420666f722074686520636f72726573706f6e64696e6720706572696f642e202d206062616c616e6365603a2054686520616d6f756e74206f6620746865206163636f756e7427732062616c616e636520746f206265207573656420696e2064656c65676174696e672e2054686973206d7573742020206e6f74206265206d6f7265207468616e20746865206163636f756e7427732063757272656e742062616c616e63652e20456d697473206044656c656761746564602e746f636f6e76696374696f6e436f6e76696374696f6e62616c616e636542616c616e63654f663c543e2043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e202d20607768696368603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e205765696768743a20604f284429602077686572652060446020697320746865206974656d7320696e207468652064697370617463682071756575652e205765696768746564206173206044203d203130602e77686963682052656d6f76652061207265666572656e64756d2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e2023205765696768743a20604f283129602e7265665f696e646578436f6d706163743c5265666572656e64756d496e6465783e205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d75737420626520605665746f4f726967696e602e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c20746f207665746f20616e6420626c61636b6c6973742e20456d69747320605665746f6564602e205765696768743a20604f2856202b206c6f6728562929602077686572652056206973206e756d626572206f6620606578697374696e67207665746f65727360205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c656420696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e6520627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e20546865206469737061746368206f6620746869732063616c6c206d757374206265206046617374547261636b4f726967696e602e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f2020206046617374547261636b566f74696e67506572696f646020696620746f6f206c6f772e202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e20456d697473206053746172746564602e205765696768743a20604f28312960766f74696e675f706572696f6464656c6179205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c44656661756c744f726967696e602e202d206070726f706f73616c5f68617368603a2054686520707265696d6167652068617368206f66207468652070726f706f73616c2e20556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c6163652061207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f6620746869732063616c6c206d757374206265206045787465726e616c4d616a6f726974794f726967696e602e205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c207265666572656e64756d2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206045787465726e616c4f726967696e602e205765696768743a20604f2856296020776974682056206e756d626572206f66207665746f65727320696e2074686520626c61636b6c697374206f662070726f706f73616c2e2020204465636f64696e6720766563206f66206c656e67746820562e2043686172676564206173206d6178696d756d205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6520546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265206043616e63656c6c6174696f6e4f726967696e602e202d607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f2063616e63656c2e20566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e202d20607265665f696e646578603a2054686520696e646578206f6620746865207265666572656e64756d20746f20766f746520666f722e202d2060766f7465603a2054686520766f746520636f6e66696775726174696f6e2e205765696768743a20604f28522960207768657265205220697320746865206e756d626572206f66207265666572656e64756d732074686520766f7465722068617320766f746564206f6e2e4163636f756e74566f74653c42616c616e63654f663c543e3e205369676e616c732061677265656d656e742077697468206120706172746963756c61722070726f706f73616c2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742c20657175616c20746f20746865206f726967696e616c206465706f7369742e202d206070726f706f73616c603a2054686520696e646578206f66207468652070726f706f73616c20746f207365636f6e642e202d20607365636f6e64735f75707065725f626f756e64603a20616e20757070657220626f756e64206f6e207468652063757272656e74206e756d626572206f66207365636f6e6473206f6e207468697320202070726f706f73616c2e2045787472696e736963206973207765696768746564206163636f7264696e6720746f20746869732076616c75652077697468206e6f20726566756e642e205765696768743a20604f28532960207768657265205320697320746865206e756d626572206f66207365636f6e647320612070726f706f73616c20616c7265616479206861732e70726f706f73616c7365636f6e64735f75707065725f626f756e642050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e20546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e647320746f20636f76657220746865206465706f7369742e202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20707265696d6167652e202d206076616c7565603a2054686520616d6f756e74206f66206465706f73697420286d757374206265206174206c6561737420604d696e696d756d4465706f73697460292e20456d697473206050726f706f736564602e205765696768743a20604f2870296076616c7565436f6d706163743c42616c616e63654f663c543e3e00000000000034bb12000f000000000000000000000043bb12000900000000000000000000000000000000000000000000000000000000000000543113004cbb120000000000000000005cbb1200010000000000000001000000000000008c8012000b000000000000000000000064bb12002700000000000000000000000000000000000000000000000000000000000000543113008cbb120000000000000000009cbb1200010000000000000001000000000000009780120009000000010500000000000043bb12000900000000000000a4bb1200210000000000000000000000000000000000000054311300c8bb12000000000000000000d8bb12000300000000000000000000000000000077801200090000000106000000000000b7f912000700000000000000f0bb12003a00000000000000000000000000000000000000543113002cbc120000000000000000003cbc1200020000000000000000000000000000004cbc12000f0000000000000000000000bf9712000f00000000000000000000000000000000000000000000000000000000000000543113005cbc120000000000000000006cbc12000100000000000000010000000000000074bc12000d0000000000000000000000bf9712000f000000000000000000000000000000000000000000000000000000000000005431130084bc1200000000000000000094bc12000200000000000000010000000000000067801200100000000105000000000000bf9712000f00000000000000a4bc1200350000000000000000000000000000000000000054311300dcbc12000000000000000000ecbc12000300000000000000000000000000000004bd1200080000000105000000000000e3f812000c000000000000000cbd120032000000000000000000000000000000000000005431130040bd1200000000000000000050bd12000400000000000000010000000000000070bd1200050000000105000000000000e3f812000c00000000000000a9f912000e000000000000000000000000000000000000005431130078bd1200000000000000000088bd120004000000000000000000000000000000a8bd1200150000000000000000000000a1fb1200040000000000000000000000000000000000000000000000000000000000000054311300c0bd12000000000000000000d0bd120002000000000000000100000000000000808012000c0000000000000000000000e0bd1200180000000000000000000000000000000000000000000000000000000000000054311300f8bd1200000000000000000008be12000400000000000000000000000000000028be1200090000000106000000000000b7f91200070000000000000031be120023000000000000000000000000000000000000005431130054be1200000000000000000064be12000200000000000000000000000000000074be12000d0000000106000000000000b7f912000700000000000000a1fb120004000000000000000000000000000000000000005431130084be1200000000000000000094be1200010000000000000001000000000000009cbe12000e0000000000000000000000aabe1200080000000000000000000000000000000000000000000000000000000000000054311300b4be12000000000000000000c4be12000300000000000000000000005075626c696350726f70436f756e7450726f70496e6465781200000000000000010000002200000075c512003d0000005665633c2850726f70496e6465782c20543a3a486173682c20543a3a4163636f756e744964293e00120000000000000001000000030100002dc5120048000000285665633c543a3a4163636f756e7449643e2c2042616c616e63654f663c543e2900000012000000000000000100000023000000d6c41200210000005431130000000000f7c4120036000000507265696d6167655374617475733c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e00001200000000000000010000002300000045c41200580000009dc41200390000005265666572656e64756d436f756e740012000000000000000100000022000000f9c312004c0000004c6f77657374556e62616b65640000001200000000000000010000002200000079c3120049000000c2c31200370000005265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a486173682c2042616c616e63654f663c543e3e000000120000000000000001000000230000000ac312002d000000543113000000000037c3120042000000566f74696e674f66566f74696e673c42616c616e63654f663c543e2c20543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e00001200000000000000010000000401000022c212005700000079c21200570000005431130000000000d0c212003a0000004c6f636b730000001200000000000000010000002300000047c11200570000009ec11200540000005431130000000000f2c11200300000004c6173745461626c656457617345787465726e616c00000012000000000000000100000023000000e7c01200560000003dc112000a00000028543a3a486173682c20566f74655468726573686f6c642912000000000000000100000023000000f9bf1200560000004fc0120055000000a4c0120029000000cdc012001a000000426c61636b6c69737428543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e29120000000000000001000000230000006bbf120054000000bfbf12003a00000043616e63656c6c6174696f6e730000001200000000000000010000002300000021bf12004a00000053746f7261676556657273696f6e52656c6561736573000012000000000000000100000023000000dcbe12001f0000005431130000000000fbbe1200260000002053746f726167652076657273696f6e206f66207468652070616c6c65742e204e6577206e6574776f726b732073746172742077697468206c6173742076657273696f6e2e205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e2041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d6265722028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e20546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e20546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743a202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f72202d20605075626c696350726f70736020697320656d7074792e205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c69632070726f706f73616c2e204163636f756e747320666f7220776869636820746865726520617265206c6f636b7320696e20616374696f6e207768696368206d61792062652072656d6f76656420617420736f6d6520706f696e7420696e20746865206675747572652e205468652076616c75652069732074686520626c6f636b206e756d62657220617420776869636820746865206c6f636b206578706972657320616e64206d61792062652072656d6f7665642e2054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e20416c6c20766f74657320666f72206120706172746963756c617220766f7465722e2057652073746f7265207468652062616c616e636520666f7220746865206e756d626572206f6620766f74657320746861742077652068617665207265636f726465642e20546865207365636f6e64206974656d2069732074686520746f74616c20616d6f756e74206f662064656c65676174696f6e732c20746861742077696c6c2062652061646465642e2054574f582d4e4f54453a205341464520617320604163636f756e7449646073206172652063727970746f2068617368657320616e797761792e20496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e2054574f582d4e4f54453a205341464520617320696e646578657320617265206e6f7420756e64657220616e2061747461636b6572e280997320636f6e74726f6c2e20546865206c6f77657374207265666572656e64756d20696e64657820726570726573656e74696e6720616e20756e62616b6564207265666572656e64756d2e20457175616c20746f20605265666572656e64756d436f756e74602069662074686572652069736e2774206120756e62616b6564207265666572656e64756d2e20546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e204d6170206f662068617368657320746f207468652070726f706f73616c20707265696d6167652c20616c6f6e6720776974682077686f207265676973746572656420697420616e64207468656972206465706f7369742e2054686520626c6f636b206e756d6265722069732074686520626c6f636b20617420776869636820697420776173206465706f73697465642e2054686f73652077686f2068617665206c6f636b65642061206465706f7369742e2054574f582d4e4f54453a20536166652c20617320696e6372656173696e6720696e7465676572206b6579732061726520736166652e20546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865207365636f6e64206974656d206973207468652070726f706f73616c277320686173682e20546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e00000000000074c712000f00000000000000a9f912000e000000000000005431130084c71200000000000000000094c71200050000000000000000000000bcc712000c00000000000000a9f912000e0000000000000054311300c8c712000000000000000000d8c71200010000000000000000000000e0c712000c00000000000000a9f912000e0000000000000054311300ecc712000000000000000000fcc7120001000000000000000000000004c812000e0000000000000057a912000c000000000000005431130014c81200000000000000000024c812000100000000000000000000002cc812001500000000000000a9f912000e000000000000005431130044c81200000000000000000054c812000100000000000000000000005cc812000d00000000000000a9f912000e00000000000000543113006cc8120000000000000000007cc8120001000000000000000000000084c81200130000000000000057a912000c000000000000005431130098c812000000000000000000a8c81200010000000000000000000000b0c812000800000000000000cbed1200030000000000000054311300b8c812000000000000000000c8c812000100000000000000456e6163746d656e74506572696f6400120000000000000001000000050100008dca12005c0000005431130000000000e9ca12004c00000035cb12005a0000008fcb1200270000004c61756e6368506572696f641200000000000000010000000501000054ca120039000000566f74696e67506572696f641200000000000000010000000501000026ca12002e0000004d696e696d756d4465706f736974000012000000000000000100000045000000d9c912004d00000046617374547261636b566f74696e67506572696f64000000120000000000000001000000060100009ec912003b000000436f6f6c6f6666506572696f640000001200000000000000010000004a00000046c9120058000000507265696d616765427974654465706f7369740012000000000000000100000025000000fcc812004a0000004d6178566f74657312000000000000000100000052000000d0c812002c00000020546865206d6178696d756d206e756d626572206f6620766f74657320666f7220616e206163636f756e742e2054686520616d6f756e74206f662062616c616e63652074686174206d757374206265206465706f7369746564207065722062797465206f6620707265696d6167652073746f7265642e20506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e20546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e20486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e20486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e20546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e2049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e73757265207468617420766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e207468652063617365207768657265207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e000000000000d0ce12000800000000000000d8ce1200020000000000000000000000e8ce1200010000000000000000000000f0ce12000600000000000000f8ce120003000000000000000000000010cf120001000000000000000000000018cf12000e000000000000005431130000000000000000000000000028cf120001000000000000000000000030cf1200070000000000000038cf120002000000000000000000000048cf120001000000000000000000000050cf1200060000000000000058cf120001000000000000000000000060cf120001000000000000000000000068cf1200090000000000000058cf120001000000000000000000000074cf12000100000000000000000000007ccf1200090000000000000058cf120001000000000000000000000088cf120001000000000000000000000090cf1200080000000000000098cf1200020000000000000000000000a8cf1200010000000000000000000000b0cf12000900000000000000bccf1200020000000000000000000000cccf1200010000000000000000000000d4cf12000b00000000000000fce41200010000000000000000000000e0cf1200010000000000000000000000e8cf12000600000000000000f0cf120003000000000000000000000008d0120001000000000000000000000010d012000d0000000000000020d0120003000000000000000000000038d0120001000000000000000000000040d012000c0000000000000020d012000300000000000000000000004cd01200020000000000000000000000748212000f000000000000005cd012000200000000000000000000006cd01200020000000000000000000000948212000f000000000000005cd012000200000000000000000000007cd012000200000000000000000000008cd012000e000000000000009cd01200040000000000000000000000bcd01200020000000000000000000000ccd012000800000000000000fce41200010000000000000000000000d4d01200010000000000000000000000dcd012000b00000000000000e8d01200010000000000000000000000f0d01200010000000000000050726f706f73656443bb120009000000d5d1120007000000bcd512004c0000005461626c6564000043bb120009000000d5d1120007000000aed512000e0000004fd512005f00000045787465726e616c5461626c6564000029d51200260000005374617274656400bf9712000f0000001cd512000d000000ebd41200310000005061737365640000bf9712000f000000b1d412003a0000004e6f7450617373656400000077d412003a00000043616e63656c6c656400000048d412002f0000004578656375746564bf9712000f000000a1fb12000400000016d412003200000044656c65676174656400000079e512000900000079e5120009000000ced3120048000000556e64656c6567617465640090d312003e0000005665746f6564000079e512000900000082e512000400000085d312000b00000041d3120044000000507265696d6167654e6f74656400000082e512000400000079e5120009000000d5d1120007000000e9d2120058000000507265696d616765557365647fd2120045000000c4d212002500000082e5120004000000bf9712000f0000003cd21200430000001fd212001d000000dcd11200430000001fd212001d000000507265696d616765526561706564000082e512000400000079e5120009000000d5d112000700000079e51200090000005dd112004b000000a8d112002d000000556e6c6f636b65642ed112002f000000426c61636b6c69737465640082e5120004000000f8d012003600000020412070726f706f73616c205c5b686173685c5d20686173206265656e20626c61636b6c6973746564207065726d616e656e746c792e20416e205c5b6163636f756e745c5d20686173206265656e20756e6c6f636b6564207375636365737366756c6c792e2041207265676973746572656420707265696d616765207761732072656d6f76656420616e6420746865206465706f73697420636f6c6c656374656420627920746865207265617065722e205c5b70726f706f73616c5f686173682c2070726f76696465722c206465706f7369742c207265617065725c5d42616c616e636520412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d61676520776173206d697373696e672e205c5b70726f706f73616c5f686173682c207265665f696e6465785c5d20412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d6167652077617320696e76616c69642e20412070726f706f73616c20707265696d616765207761732072656d6f76656420616e6420757365642028746865206465706f736974207761732072657475726e6564292e205c5b70726f706f73616c5f686173682c2070726f76696465722c206465706f7369745c5d20412070726f706f73616c277320707265696d61676520776173206e6f7465642c20616e6420746865206465706f7369742074616b656e2e205c5b70726f706f73616c5f686173682c2077686f2c206465706f7369745c5d20416e2065787465726e616c2070726f706f73616c20686173206265656e207665746f65642e205c5b77686f2c2070726f706f73616c5f686173682c20756e74696c5c5d426c6f636b4e756d62657220416e205c5b6163636f756e745c5d206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e20416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e205c5b77686f2c207461726765745c5d20412070726f706f73616c20686173206265656e20656e61637465642e205c5b7265665f696e6465782c2069735f6f6b5c5d2041207265666572656e64756d20686173206265656e2063616e63656c6c65642e205c5b7265665f696e6465785c5d20412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e205c5b7265665f696e6465785c5d20412070726f706f73616c20686173206265656e20617070726f766564206279207265666572656e64756d2e205c5b7265665f696e6465785c5d2041207265666572656e64756d2068617320626567756e2e205c5b7265665f696e6465782c207468726573686f6c645c5d566f74655468726573686f6c6420416e2065787465726e616c2070726f706f73616c20686173206265656e207461626c65642e2041207075626c69632070726f706f73616c20686173206265656e207461626c656420666f72207265666572656e64756d20766f74652e205c5b70726f706f73616c5f696e6465782c206465706f7369742c206465706f7369746f72735c5d5665633c4163636f756e7449643e2041206d6f74696f6e20686173206265656e2070726f706f7365642062792061207075626c6963206163636f756e742e205c5b70726f706f73616c5f696e6465782c206465706f7369745c5d4661696c656420746f2067656e657261746520686973746f726963616c20616e6365737472792d696e636c7573696f6e2070726f6f662e004c141300570000001b02000001000000496e73657274696f6e206e657665722064656c657465732e2481120054000000640200000d000000617373657274696f6e206661696c65643a20216578697374696e675f6b65792e69735f656d70747928290000248112005400000080030000150000000000000058831200080000000000000088da1200010000000000000000000000498312000f0000000000000090da120001000000000000000000000041831200080000000000000098da1200010000000000000000000000328312000f00000000000000a0da1200010000000000000000000000218312001100000000000000a8da12000100000000000000000000000e8312001300000000000000b0da1200010000000000000000000000fd8212001100000000000000b8da1200010000000000000000000000f28212000b00000000000000c0da1200010000000000000000000000e88212000a00000000000000c8da1200010000000000000000000000db8212000d00000000000000d0da1200010000000000000000000000cf8212000c00000000000000d8da1200010000000000000000000000be8212001100000000000000e0da1200010000000000000000000000b38212000b00000000000000e8da1200010000000000000000000000ab8212000800000000000000f0da1200010000000000000000000000a38212000800000000000000f8da1200010000000000000000000000948212000f0000000000000000db120001000000000000000000000083821200110000000000000008db1200010000000000000000000000748212000f0000000000000010db1200010000000000000000000000698212000b0000000000000018db120001000000000000000000000060821200090000000000000020db1200010000000000000000000000568212000a0000000000000028db12000100000000000000000000004e821200080000000000000030db1200010000000000000000000000428212000c0000000000000038db120001000000000000000000000031821200110000000000000040db120001000000000000000000000029821200080000000000000048db120001000000000000000000000020821200090000000000000050db12000100000000000000000000000f821200110000000000000058db1200010000000000000000000000028212000d0000000000000060db1200010000000000000000000000f88112000a0000000000000068db1200020000000000000000000000e7811200110000000000000078db1200010000000000000000000000df811200080000000000000080db1200010000000000000000000000d08112000f0000000000000088db1200010000000000000000000000c18112000f0000000000000090db1200010000000000000000000000b38112000e0000000000000098db1200010000000000000000000000608312001000000000000000a0db120001000000000000004fe012000e00000037e012001800000029e012000e00000003e0120026000000eddf120016000000d2df12001b000000a7df12002b0000009adf12000d00000085df1200150000005edf12002700000050df12000e00000039df1200170000002cdf12000d00000022df12000a00000019df12000900000006df120013000000e4de120022000000d3de120011000000bede12001500000095de12002900000059de12003c00000027de120032000000f4dd120033000000d1dd120023000000a8dd1200290000007edd12002a0000003edd12004000000015dd12002900000084dc120056000000dadc12003b0000004ddc12003700000027dc12002600000012dc120015000000f1db120021000000cddb120024000000a8db120025000000204d6178696d756d206e756d626572206f662070726f706f73616c7320726561636865642e205468652070726f7669646564207769746e65737320646174612069732077726f6e672e204d6178696d756d206e756d626572206f6620766f74657320726561636865642e20496e76616c696420757070657220626f756e642e2044656c65676174696f6e20746f206f6e6573656c66206d616b6573206e6f2073656e73652e2054686520696e7374616e74207265666572656e64756d206f726967696e2069732063757272656e746c7920646973616c6c6f7765642e20546865206163636f756e742063757272656e746c792068617320766f74657320617474616368656420746f20697420616e6420746865206f7065726174696f6e2063616e6e6f74207375636365656420756e74696c207468657365206172652072656d6f7665642c20656974686572207468726f7567682060756e766f746560206f722060726561705f766f7465602e20546865206163636f756e74206973206e6f742063757272656e746c792064656c65676174696e672e20546f6f206869676820612062616c616e6365207761732070726f7669646564207468617420746865206163636f756e742063616e6e6f74206166666f72642e20416e20756e657870656374656420696e746567657220756e646572666c6f77206f636375727265642e20416e20756e657870656374656420696e7465676572206f766572666c6f77206f636375727265642e20546865206163636f756e7420697320616c72656164792064656c65676174696e672e20546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e2e2054686520676976656e206163636f756e7420646964206e6f7420766f7465206f6e20746865207265666572656e64756d2e20546865206c6f636b206f6e20746865206163636f756e7420746f20626520756e6c6f636b656420686173206e6f742079657420657870697265642e2054686520746172676574206163636f756e7420646f6573206e6f7420686176652061206c6f636b2e204e6f2070726f706f73616c732077616974696e6720496e76616c696420707265696d61676520566f746520676976656e20666f7220696e76616c6964207265666572656e64756d20507265696d616765206e6f7420666f756e6420496d6d696e656e7420546f6f206561726c79204e6f7420696d6d696e656e7420507265696d61676520616c7265616479206e6f746564204e6f742064656c656761746564204964656e74697479206d6179206e6f74207665746f20612070726f706f73616c207477696365204e6f2065787465726e616c2070726f706f73616c20496e76616c69642068617368204e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974792050726f706f73616c207374696c6c20626c61636b6c69737465642050726f706f73616c20616c7265616479206d6164652043616e6e6f742063616e63656c207468652073616d652070726f706f73616c20747769636520556e6b6e6f776e20696e6465782050726f706f73616c20646f6573206e6f742065786973742056616c756520746f6f206c6f77000000120000000100000001000000070100004c14130057000000e70400002d0000004c14130057000000e8040000300000004661696c656420746f206465636f64652060507265696d616765537461747573602076617269616e740000004c14130057000000170500002d0000004c141300570000001e050000400000003a6865617070616765735370656356657273696f6e4e65656473546f496e637265617365496e76616c6964537065634e616d654661696c6564546f4578747261637452756e74696d6556657273696f6e3a636f64653a6368616e6765735f747269652f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f73797374656d2f7372632f6c69622e727300008ee212002300000064e212002a0000000ce21200580000006f00000001000000496e7374616e6365314d656d626572736869704d656d62657273416c72656164794d656d6265725072696d654e6f744d656d6265720000000ce2120058000000a70000000d0000000ce2120058000000d6000000110000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6d656d626572736869702f7372632f6c69622e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a205f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e6d6f646c70792f7574696c6973756261000000d4e2120052000000af000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f746970732f7372632f6c69622e72732f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f62616c616e6365732f7372632f6c69622e72733a65787472696e7369635f696e6465780000000094e412001000000000000000a4e41200010000000000000000000000ace41200010000000000000000000000b4e412000f00000000000000c4e41200020000000000000000000000d4e41200010000000000000000000000dce412000b0000000000000054311300000000000000000000000000e8e41200010000000000000000000000f0e412000a00000000000000fce4120001000000000000000000000004e512000100000000000000000000000ce512000d00000000000000fce412000100000000000000000000001ce5120001000000000000000000000024e5120008000000000000002ce512000200000000000000000000003ce51200010000000000000045787472696e73696353756363657373fae512000c00000006e612002e00000045787472696e7369634661696c656400113513000d000000fae512000c000000d5e5120025000000436f64655570646174656400c0e51200150000004e65774163636f756e74000079e5120009000000a1e512001f0000004b696c6c65644163636f756e7400000086e512001b00000052656d61726b656479e512000900000082e512000400000044e5120035000000204f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d4163636f756e7449644861736820416e205c5b6163636f756e745c5d20776173207265617065642e2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e20603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d00000000ece712000a00000000000000f8e7120001000000000000000000000010e8120001000000000000000000000018e81200060000000000000020e8120001000000000000000000000038e8120005000000000000000000000060e812000e0000000000000070e8120001000000000000000000000088e81200080000000000000000000000c8e812000800000000000000d0e81200010000000000000000000000e8e812000a000000000000000000000038e912001700000000000000d0e8120001000000000000000000000050e9120008000000000000000000000090e912001700000000000000a8e91200010000000000000000000000c0e912000a000000000000000000000010ea12000b000000000000001cea120001000000000000000000000034ea120008000000000000000000000074ea12000c0000000000000080ea120001000000000000000000000098ea1200080000000000000000000000d8ea12000b00000000000000e4ea120002000000000000000000000014eb12000b00000000000000000000006ceb1200110000000000000080eb120001000000000000000000000098eb1200060000000000000066696c6c5f626c6f636b0000000000004ff31200060000000000000055f31200070000000df312004200000072656d61726b00000000000006f31200070000000000000042ec120007000000ebf212001b0000005431130000000000f2eb12000b0000003cef12000900000036ec12000c0000007365745f686561705f7061676573000000000000e3f212000500000000000000e8f212000300000060f212003f0000005431130000000000f2eb12000b0000003cef1200090000009ff2120013000000b2f2120019000000cbf212001800000036ec12000c0000007365745f636f6465000000005cf21200040000000000000042ec12000700000014f112001a0000005431130000000000f2eb12000b0000002ef112004d00000095f01200220000007bf112005e0000002bec12000b000000d9f112005f00000038f212002400000036ec12000c0000007365745f636f64655f776974686f75745f636865636b73002af01200470000005431130000000000f2eb12000b00000071f012002400000095f01200220000002bec12000b000000b7f012005d00000036ec12000c0000007365745f6368616e6765735f747269655f636f6e6669670000000000f7ef120013000000000000000af012002000000014ef1200280000005431130000000000f2eb12000b0000003cef12000900000045ef12002c00000071ef120036000000a7ef120019000000c0ef12000d000000cdef12002a00000036ec12000c0000007365745f73746f72616765000000000002ef1200050000000000000007ef12000d00000086ee12001b0000005431130000000000f2eb12000b000000a1ee120025000000c6ee12001f000000e5ee12001d00000060ee12001a00000036ec12000c0000006b696c6c5f73746f72616765000000007aee120004000000000000007eee120008000000ceed12001e0000005431130000000000f2eb12000b000000eced12003f0000002bee12001900000044ee12001c00000060ee12001a00000036ec12000c0000006b696c6c5f7072656669780000000000baed12000600000000000000c0ed12000300000000000000c3ed12000800000000000000cbed12000300000049ec12004500000054311300000000008eec12004f000000ddec1200500000005431130000000000f2eb12000b0000002ded12003700000064ed1200190000007ded12001d0000009aed12002000000036ec12000c00000072656d61726b5f776974685f6576656e740000000000000018e81200060000000000000042ec120007000000c8eb12002a0000005431130000000000f2eb12000b000000fdeb12002e0000002bec12000b00000036ec12000c000000204d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e2023203c7765696768743e202d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e202d2031206576656e742e2023203c2f7765696768743e5665633c75383e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465722074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e202d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860202d206050602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a20302e383334202a205020c2b573202d205772697465733a204e756d626572206f66207375626b657973202b20317072656669784b65795f7375626b657973753332204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579202d206049602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a202e333738202a206920c2b573202d205772697465733a204e756d626572206f66206974656d736b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e202d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360202d206049602073746f72616765207772697465732028604f28312960292e202d2042617365205765696768743a20302e353638202a206920c2b5736974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e202d20604f28312960202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292e202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129202d2042617365205765696768743a20372e32313820c2b573202d204442205765696768743a20202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573746368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e202d20604f2843296020776865726520604360206c656e677468206f662060636f646560202d20312073746f726167652077726974652028636f64656320604f28432960292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2053657420746865206e65772072756e74696d6520636f64652e202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f646560202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e636f64652053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e202d20312073746f726167652077726974652e202d2042617365205765696768743a20312e34303520c2b573202d203120777269746520746f20484541505f50414745537061676573753634204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f50657262696c6c00000000dcf81200070000000102000000000000e3f812000c00000000000000eff8120025000000000000000000000000000000000000005431130014f91200000000000000000024f91200010000000000000001000000000000002cf912000e0000000000000000000000cbed12000300000000000000000000000000000000000000000000000000000000000000543113003cf9120000000000000000004cf912000100000000000000000000000000000054f912000b00000000000000000000005ff912000e000000000000000000000000000000000000000000000000000000000000005431130070f91200000000000000000080f912000100000000000000010000000000000088f91200100000000000000000000000cbed12000300000000000000000000000000000000000000000000000000000000000000543113003cf91200000000000000000098f9120001000000000000000000000000000000a0f91200090000000105000000000000a9f912000e00000000000000b7f91200070000000000000000000000000000000000000054311300c0f912000000000000000000d0f9120001000000000000000100000000000000d8f912000d0000000105000000000000cbed1200030000000000000042ec1200070000000000000000000000000000000000000054311300e8f912000000000000000000f8f912000100000000000000010000000000000000fa1200060000000000000000000000a9f912000e000000000000000000000000000000000000000000000000000000000000005431130008fa1200000000000000000018fa12000100000000000000010000000000000020fa12000a0000000000000000000000b7f91200070000000000000000000000000000000000000000000000000000000000000054311300c0f9120000000000000000002cfa12000100000000000000010000000000000034fa12000600000000000000000000003afa12000b000000000000000000000000000000000000000000000000000000000000005431130048fa1200000000000000000058fa12000100000000000000010000000000000060fa120006000000000000000000000066fa12002300000000000000000000000000000000000000000000000000000000000000543113008cfa120000000000000000009cfa120001000000000000000100000000000000a4fa12000a0000000000000000000000aefa12000a000000000000000000000000000000000000000000000000000000000000005431130008fa12000000000000000000b8fa120001000000000000000100000000000000c0fa12000b0000000102000000000000b7f912000700000000000000cbfa1200210000000000000000000000000000000000000054311300ecfa12000000000000000000fcfa12000a0000000000000001000000000000004cfb12001200000000000000000000005efb120016000000000000000000000000000000000000000000000000000000000000005431130074fb1200000000000000000084fb1200010000000000000000000000000000008cfb1200150000000000000000000000a1fb1200040000000000000000000000000000000000000000000000000000000000000054311300a8fb12000000000000000000b8fb120001000000000000000100000000000000c0fb1200180000000000000000000000a1fb1200040000000000000000000000000000000000000000000000000000000000000054311300a8fb12000000000000000000d8fb120002000000000000000100000000000000e8fb12000e0000000000000000000000f6fb1200050000000000000000000000000000000000000000000000000000000000000054311300fcfb120000000000000000000cfc12000100000000000000000000004163636f756e74543a3a4163636f756e7449644163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e120000000000000001000000080100007e0113003a00000045787472696e736963436f756e74000012000000000000000100000023000000500113002e000000426c6f636b576569676874436f6e73756d6564576569676874000000120000000000000001000000090100002e01130022000000416c6c45787472696e736963734c656ede00130050000000426c6f636b48617368543a3a426c6f636b4e756d626572543a3a4861736800001200000000000000010000000a010000b80013002600000045787472696e7369634461746100000012000000000000000100000063000000690013004f0000004e756d6265720000120000000000000001000000220000002700130042000000506172656e744861736800000b0013001c0000004469676573744469676573744f663c543e0000001200000000000000010000003f000000cfff12003c0000004576656e74735665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e0000001200000000000000010000003f000000a7ff1200280000004576656e74436f756e744576656e74496e64657879ff12002e0000004576656e74546f706963735665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e1200000000000000010000006c00000047fd12004900000090fd1200250000005431130000000000b5fd12005400000009fe1200510000005afe120039000000543113000000000093fe120053000000e6fe12005300000039ff1200400000004c61737452756e74696d65557067726164654c61737452756e74696d6555706772616465496e666f12000000000000000100000023000000f2fc1200550000005570677261646564546f553332526566436f756e74626f6f6c000000120000000000000001000000230000009ffc1200530000005570677261646564546f547269706c65526566436f756e7436fc1200570000008dfc120012000000457865637574696f6e50686173655068617365001200000000000000010000002300000014fc1200220000002054686520657865637574696f6e207068617365206f662074686520626c6f636b2e2054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c7365202864656661756c7429206966206e6f742e2054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e2053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e205468652063757272656e742077656967687420666f722074686520626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e00000000080313000c000000000000001403130014000000000000005431130028031300000000000000000038031300010000000000000000000000400313000b000000000000004b03130013000000000000005431130060031300000000000000000070031300010000000000000000000000780313000e00000000000000a9f912000e000000000000005431130088031300000000000000000098031300010000000000000000000000a00313000800000000000000a80313000f0000000000000054311300b80313000000000000000000c8031300010000000000000000000000d00313000700000000000000d70313000e0000000000000054311300e80313000000000000000000f8031300010000000000000000000000000413000a000000000000000a0413000200000000000000543113000c04130000000000000000001c0413000500000000000000426c6f636b576569676874736c696d6974733a3a426c6f636b576569676874731200000000000000010000000b0100000606130034000000426c6f636b4c656e6774686c696d6974733a3a426c6f636b4c656e67746800001200000000000000010000000c010000dc0513002a000000426c6f636b48617368436f756e7400001200000000000000010000000d0100008705130055000000446257656967687452756e74696d654462576569676874001200000000000000010000000e010000450513004200000056657273696f6e52756e74696d6556657273696f6e0000001200000000000000010000000f010000240513002100000053533538507265666978753812000000000000000100000023000000440413002a00000054311300000000006e0413004e000000bc0413004c000000080513001c000000205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e2054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e2069732074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f6620697420617320616e206964656e746966696572206f662074686520636861696e2e204765742074686520636861696e27732063757272656e742076657273696f6e2e2054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e20426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e00004c0613005300000015020000100000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f70726f78792f7372632f6c69622e72733a5f5f50414c4c45545f56455253494f4e5f5f3a00c406130055000000be000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6772616e6470612f7372632f6c69622e72730000002c071300550000005a000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f696e64696365732f7372632f6c69622e72730000009407130055000000ec010000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f73657373696f6e2f7372632f6c69622e7273000000fc0713005500000066040000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f7374616b696e672f7372632f6c69622e727300000000000000d80813000500000000000000e0081300010000000000000000000000f8081300120000000000000000000000880913000d0000000000000098091300020000000000000000000000c80913000d0000000000000000000000300a13000900000000000000e00813000100000000000000000000003c0a13000d000000000000006261746368000000000000004510130005000000000000004a10130018000000c40e1300200000005431130000000000290b13001f0000005431130000000000480b13003c0000005431130000000000840b130058000000dc0b1300330000005431130000000000f2eb12000b0000000f0c13004100000036ec12000c0000005431130000000000e40e1300560000003a0f13004d000000870f130056000000dd0f130054000000311013001400000061735f6465726976617469766500000000000000a00e13000500000000000000a50e13000300000000000000a80e13000400000000000000ac0e130018000000500c1300380000005431130000000000880c130056000000de0c13003000000054311300000000000e0d130052000000600d130059000000b90d1300550000000e0e13002000000054311300000000002e0e13003e00000054311300000000006c0e13003400000062617463685f616c6c000000a40a13003c000000e00a1300490000005431130000000000290b13001f0000005431130000000000480b13003c0000005431130000000000840b130058000000dc0b1300330000005431130000000000f2eb12000b0000000f0c13004100000036ec12000c0000002053656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e205468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e204966206f726967696e20697320726f6f74207468656e2063616c6c2061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e20285468697320696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e202d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e2046696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e20776869636820757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e204e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e206265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e74207468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f316020696e20746865204d756c74697369672070616c6c657420696e73746561642e204e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e696e64657875313663616c6c426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c5420617320436f6e6669673e3a3a43616c6c3e696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f6465506172656e7420686173682073686f756c642062652076616c69642e0000b4111300570000003501000009000000b4111300570000005d0100000d0000005369676e617475726520766572696669636174696f6e206661696c65642e0000b4111300570000004e010000110000001f12130032000000b411130057000000b901000009000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e00b411130057000000c10100000d00000053746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642eb411130057000000c7010000090000005472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642eb411130057000000c9010000090000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6578656375746976652f7372632f6c69622e72734469676573744974656d206e6f7420657175616c4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b20716564000000120000000000000001000000100100003ee1120054000000430500000e0000003ee11200540000004b05000016000000c012130056000000ea000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f626f756e746965732f7372632f6c69622e727300002813130056000000c9010000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6964656e746974792f7372632f6c69622e72730000901313005600000088000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f6d756c74697369672f7372632f6c69622e72732f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f74726561737572792f7372632f6c69622e72734c14130057000000cf010000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f64656d6f63726163792f7372632f6c69622e727300b414130058000000a5000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f617574686f72736869702f7372632f6c69622e72731c15130058000000f1000000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f636f6c6c6563746976652f7372632f6c69622e727300000000a81613000a00000000000000b4161300010000000000000000000000cc161300030000000000000000000000e41613000d00000000000000b4161300010000000000000000000000f41613000300000000000000000000000c1713000b000000000000001817130002000000000000000000000048171300050000000000000000000000701713000d000000000000008017130001000000000000000000000098171300040000000000000000000000b81713000a00000000000000c4171300010000000000000000000000dc171300050000000000000000000000041813000900000000000000b416130001000000000000000000000010181300030000000000000000000000281813000b00000000000000543113000000000000000000000000003418130003000000000000006164645f6d656d626572000000000000791b13000300000000000000e3f812000c000000321b13001f0000005431130000000000511b13002800000072656d6f76655f6d656d626572000000e31a1300240000005431130000000000071b13002b000000737761705f6d656d6265720000000000da1a13000600000000000000e3f812000c00000000000000e01a13000300000000000000e3f812000c0000003d1a13003000000054311300000000006d1a1300290000005431130000000000961a13004400000072657365745f6d656d6265727300000000000000251a130007000000000000002c1a1300110000008a19130056000000e01913001b0000005431130000000000fb1913002a0000006368616e67655f6b6579000000000000871913000300000000000000e3f812000c000000cc181300360000005431130000000000021913003d00000054311300000000003f191300480000007365745f7072696d650000009c181300300000005431130000000000721813002a000000636c6561725f7072696d65004c181300260000005431130000000000721813002a0000002052656d6f766520746865207072696d65206d656d626572206966206974206578697374732e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a5072696d654f726967696e602e2053657420746865207072696d65206d656d6265722e204d75737420626520612063757272656e74206d656d6265722e2053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e205072696d65206d656d62657273686970206973207061737365642066726f6d20746865206f726967696e206163636f756e7420746f20606e6577602c20696620657874616e742e6e6577204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52657365744f726967696e602e6d656d626572735665633c543a3a4163636f756e7449643e2053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a537761704f726967696e602e205072696d65206d656d62657273686970206973202a6e6f742a207061737365642066726f6d206072656d6f76656020746f2060616464602c20696620657874616e742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52656d6f76654f726967696e602e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a4164644f726967696e602e77686f00000000c7e112000700000000000000000000002c1a13001100000000000000000000000000000000000000000000000000000000000000543113002c1c130000000000000000003c1c130001000000000000000100000000000000dbe11200050000000000000000000000e3f812000c0000000000000000000000000000000000000000000000000000000000000054311300441c13000000000000000000541c13000100000000000000000000001200000000000000010000003f000000851c130032000000120000000000000001000000230000005c1c130029000000205468652063757272656e74207072696d65206d656d6265722c206966206f6e65206578697374732e205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e0000000000c01d13000b0000000000000054311300000000000000000000000000cc1d1300010000000000000000000000d41d13000d0000000000000054311300000000000000000000000000e41d1300010000000000000000000000ec1d13000e0000000000000054311300000000000000000000000000fc1d1300010000000000000000000000041e13000c0000000000000054311300000000000000000000000000101e1300010000000000000000000000181e13000a0000000000000054311300000000000000000000000000241e13000100000000000000000000002c1e13000500000000000000341e13000100000000000000000000003c1e130001000000000000004d656d626572416464656400691f1300390000004d656d62657252656d6f7665640000002e1f13003b0000004d656d62657273537761707065640000f71e1300370000004d656d626572735265736574b11e1300460000004b65794368616e67656400008f1e13002200000044756d6d79000000601e13002f000000441e13001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e0000120000000000000001000000210000002c201300620000006800000010000000e41f1300480000003a0400000f000000e41f1300480000003a040000220000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f636f72652f7372632f63656c6c2e72732f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f6e706f732d656c656374696f6e732f7372632f6e6f64652e727300001200000000000000010000005f0000002c20130062000000700000000d0000002c20130062000000750000000d0000002c20130062000000890000003b000000e020130023000000a0000000010000002f6275696c642f72756e74696d652f636f6d6d6f6e2f7372632f636c61696d732e72730014211300600000002d010000010000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f656c656374696f6e732d70687261676d656e2f7372632f6c69622e727352616e646f6d6e657373436f6c6c656374697665466c697000000000e42113000e0000000000000000000000f22113000c00000000000000000000000000000000000000000000000000000000000000543113000022130000000000000000001022130003000000000000000100000052616e646f6d4d6174657269616c5665633c543a3a486173683e00001200000000000000010000006200000028221300580000008022130058000000d82213001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e0000003ee1120054000000180100000f0000000c23130055000000710000000f0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f7574696c6974792f7372632f6c69622e72730000000000000000e112000f00000000000000f0231300020000000000000000000000e6e012001a00000000000000002413000200000000000000000000000fe112001d00000000000000102413000300000000000000000000002824130013000000000000003c241300010000000000000000000000442413000f00000000000000542413000100000000000000cf25130045000000ba251300150000006925130051000000ba25130015000000ea2413003c000000543113000000000026251300430000004e6f6e44656661756c74436f6d706f7369746500aa241300400000004e6f6e5a65726f526566436f756e74005c2413004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e20546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d651c261300170000005f5f49676e6f72652063616e6e6f74206265207573656400442613006800000055000000110000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f6672616d652f72616e646f6d6e6573732d636f6c6c6563746976652d666c69702f7372632f6c69622e727348617368207461626c65206361706163697479206f766572666c6f77d8261300530000004f000000280000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6861736862726f776e2d302e392e312f7372632f7261772f6d6f642e7273492068657265627920616772656520746f20746865207465726d73206f66207468652073746174656d656e742077686f7365205348412d323536206d756c74696861736820697320516d58456b4d61686668484a507a5433526a6b58695a56466937375a655665757874416a686f6a47524e59636b7a2e202854686973206d617920626520666f756e64206174207468652055524c3a2068747470733a2f2f73746174656d656e742e706f6c6b61646f742e6e6574776f726b2f736166742e68746d6c29492068657265627920616772656520746f20746865207465726d73206f66207468652073746174656d656e742077686f7365205348412d323536206d756c74696861736820697320516d63315859715436533339574e70325565695255725a6963685557555070474554684445366441623366364e792e202854686973206d617920626520666f756e64206174207468652055524c3a2068747470733a2f2f73746174656d656e742e706f6c6b61646f742e6e6574776f726b2f726567756c61722e68746d6c29436c61696d735369676e696e6700182f13004a0000001a04000022000000182f13004a0000007103000036000000182f13004a0000003604000015000000182f13004a000000440400001e000000182f13004a0000004d04000018000000182f13004a0000004e04000019000000182f13004a000000510400001a00000073756d206f6620696e7075742063616e6e6f742066697420696e206054606c656e677468206f6620696e7075742069732067726561746572207468616e207a65726f3b206974206d757374206861766520612066697273743b207165640000002c2a13005d000000e60000000e0000002c2a13005d000000c90000003000000050726f6f662070726f766964656420696e20746865206d6f64756c6520646f633b207165642e00002c2a13005d000000cb000000160000002c2a13005d000000d50000002c0000002c2a13005d000000d7000000120000002c2a13005d000000eb000000300000002c2a13005d000000fa000000210000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f61726974686d657469632f7372632f6c69622e72730000006f2b13004d000000da010000010000004661696c656420746f20636f6e7665727471202f206365696c28712f246d617829203c20246d61782e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165642f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e72732f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f636f72652f7372632f6f70732f61726974682e72730b2b1300640000005105000001000000dc2b1300610000006f000000090000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e727363616e6e6f74206669742061206e756d62657220696e746f20753132380000dc2b1300610000009e0000001b000000dc2b1300610000008000000009000000dc2b130061000000920000000900000000000000617474656d707420746f20646976696465206279207a65726f000000dc2b130061000000460000000d000000616c7265616479206d757461626c7920626f72726f77656412000000000000000100000021000000dc2b1300610000007a0100001a000000dc2b1300610000006801000028000000dc2b1300610000006901000028000000616c726561647920626f72726f7765641200000000000000010000005f000000dc2b130061000000710100001b000000dc2b130061000000720100001b000000dc2b130061000000d60100001c0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f61726974686d657469632f7372632f66697865645f706f696e742e7273617474656d707420746f206469766964652077697468206f766572666c6f77642d1300650000004b0600000100000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b2071656400120000000800000004000000f8000000612e1300680000006a00000012000000726573756c742063616e6e6f742066697420696e20753132382f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e727342616265565246496e4f7574436f6e7465787442414245736c6f74206e756d62657263757272656e742065706f6368636861696e2072616e646f6d6e657373182f13004a000000c4000000110000002f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f616c6c6f632f7372632f736c6963652e72730000742f13004e000000cd000000200000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f61727261797665632d302e352e322f7372632f6c69622e7273000012000000000000000100000010010000e42f130066000000ce0000002a0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e7273486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b2071656412000000000000000100000010010000983013006800000009010000260000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e7273373113000d0000002231130015000000543113000000000020311300020000003a20696e73756666696369656e7420636170616369747943617061636974794572726f72543113000000000072756e74696d650052756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e675472616e73616374696f6e206469737061746368206973206d616e6461746f72793b207472616e73616374696f6e73206d6179206e6f742068617665206d616e6461746f727920646973706174636865732e412063616c6c20776173206c6162656c6c6564206173206d616e6461746f72792c2062757420726573756c74656420696e20616e204572726f722e5472616e73616374696f6e20776f756c6420657868617573742074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f7200000000000000617474656d707420746f20646976696465206279207a65726f000000fc33130062000000600000002b0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e727348617368206e6f7420657175616c2f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f72756e74696d652f7372632f7472616974732e72730000006c3413005d0000005904000013000000436f6e73756d65722072656d61696e696e67426164206f726967696e43616e6e6f74206c6f6f6b75704e6f2070726f76696465727344697370617463684572726f723c7761736d3a73747269707065643e4475706c69636174655265706f72744f6666656e63654572726f722f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273000000a83513005e000000470000001f0000002f636172676f2d686f6d652f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333635356639622f7072696d6974697665732f747269652f7372632f6e6f64655f636f6465632e72730000a83513005e00000050000000140000006c656e20213d20302073696e6365206c656e2025203220213d20303b20696e6e6572206861732061206c61737420656c656d656e743b207165640000643613005b0000003d000000120000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c657665632e727300643613005b0000006000000033000000643613005b000000600000000d000000643613005b000000690000000f000000643613005b0000006b0000000f000000643613005b0000006b0000003e000000643613005b0000009100000039000000643613005b0000009100000011000000643613005b0000009300000011000000643613005b0000009400000040000000643613005b000000940000004e000000803713005d0000009800000017000000803713005d00000096000000290000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c65736c6963652e7273000000f4391300550000004d0000001c000000803713005d0000004000000012000000803713005d0000004f0000002d000000803713005d0000005500000032000000803713005d000000dd0000000f000000803713005d000000df0000000f000000803713005d000000df0000003d0000006361706163697479206f766572666c6f77000000743813004e000000fb000000360000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f736d616c6c7665632d312e362e312f7372632f6c69622e7273617373657274696f6e206661696c65643a206e65775f636170203e3d206c656e0000743813004e000000320300000d000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e0000743813004e0000005f05000009000000f4391300550000008d0000003c000000f4391300550000008d00000051000000f4391300550000008d00000031000000743913004f0000004b00000042000000743913004f0000004a0000003e0000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6f64652e727300743913004f0000006b00000022000000743913004f0000009a00000032000000743913004f000000aa0000003e0000002f636172676f2d686f6d652f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6d6f642e7273000000f4391300550000008600000031000000f4391300550000008600000042000000f4391300550000008600000026000000f439130055000000870000001d000000f439130055000000870000000d000000f4391300550000008e00000018000000f4391300550000008e0000000d00000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c75650041e8f5cc000b044f8167f700a98706046e616d6501a08706ee0800206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f3101196578745f6c6f6767696e675f6c6f675f76657273696f6e5f3102256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3103236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f3104286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f31052c6578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f76657273696f6e5f3106376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f3107256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f3108286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3109216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f310a236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f320b276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f310c2a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f310d1c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f310e1e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f310f206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f3110206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3111206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31121e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31131d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31141c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31151c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31161d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3117226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f3118236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f3119346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f311a286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f311b286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f311c246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f311d226578745f6f6666636861696e5f72616e646f6d5f736565645f76657273696f6e5f311e296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f311f1c6578745f73746f726167655f617070656e645f76657273696f6e5f3120226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31211b6578745f73746f726167655f636c6561725f76657273696f6e5f3122226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3123286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31241c6578745f73746f726167655f6578697374735f76657273696f6e5f3125196578745f73746f726167655f6765745f76657273696f6e5f31261e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31271a6578745f73746f726167655f726561645f76657273696f6e5f31282a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f31291a6578745f73746f726167655f726f6f745f76657273696f6e5f312a196578745f73746f726167655f7365745f76657273696f6e5f312b276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f312c0c5f5f727573745f616c6c6f632d0a5f5f72675f616c6c6f632e0e5f5f727573745f6465616c6c6f632f0c5f5f72675f6465616c6c6f63300e5f5f727573745f7265616c6c6f63310c5f5f72675f7265616c6c6f6332135f5f727573745f616c6c6f635f7a65726f656433115f5f72675f616c6c6f635f7a65726f6564341a5f5f727573745f616c6c6f635f6572726f725f68616e646c657235085f5f72675f6f6f6d3633616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68396233356666353366373862336237323708727573745f6f6f6d3834616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68643334613339623261323062343861613929636f72653a3a70616e69636b696e673a3a70616e69633a3a68353931663938323162363132633033313a2e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68393363643365663835616537633939663b25616c6c6f633a3a666d743a3a666f726d61743a3a68363637613739353430383938353533383c36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68363764373564386363303561366261643d23636f72653a3a666d743a3a77726974653a3a68333133363666353338663366656331343e33636f72653a3a6f7074696f6e3a3a6578706563745f6e6f6e655f6661696c65643a3a68343335616366613232373730646637323f3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6833663662333835306339386135636265403b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6830336366666363666263313264333165413a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68303036356465623766386363306231344243616c6c6f633a3a7665633a3a5665633c542c413e3a3a737761705f72656d6f76653a3a6173736572745f6661696c65643a3a6864303363393639353330646266643136434e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6837626136613033376164623563643230442d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6830346365373030363561383039666238453e616c6c6f633a3a7665633a3a5665633c542c413e3a3a696e736572743a3a6173736572745f6661696c65643a3a6835623134346337343862643833363930463e616c6c6f633a3a7665633a3a5665633c542c413e3a3a72656d6f76653a3a6173736572745f6661696c65643a3a68666632366462653536343266386664624739636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6830393437373039326132383231633461482f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68353833323565656365316333313739374911727573745f626567696e5f756e77696e644a313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68353933346235316230646562653930614b35636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68343636326361636365353764666465384c43636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68356536643061626130396633326235324d3f636f72653a3a736c6963653a3a696e6465783a3a736c6963655f656e645f696e6465785f6c656e5f6661696c3a3a68366334396438333039613035633366324e2c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a68336264306663356131363761396636344f2e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a683036366638383363343461393435306350323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6834616263393066366631306163663061514a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686338363461636433656463666534326652323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68626661316230393363356565656336385347636f72653a3a756e69636f64653a3a756e69636f64655f646174613a3a6772617068656d655f657874656e643a3a6c6f6f6b75703a3a68663135356233306366366635633062655439636f72653a3a756e69636f64653a3a7072696e7461626c653a3a69735f7072696e7461626c653a3a6839396635326564306263383232343831554c636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68373232653131323836353764373364302e33385641636f72653a3a736c6963653a3a696e6465783a3a736c6963655f73746172745f696e6465785f6c656e5f6661696c3a3a6838376139393138343461356136613264573d636f72653a3a736c6963653a3a696e6465783a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68663065623763363063366164626633345838636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a696e6e65723a3a683961613437343833393465613936323859303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68373630353135393538663833323238625a443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68616461363265643536366238623237615b453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68333961633465323730636264613361655c483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68396364363938613032303366376637655d2e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a68313238646263363361373762363462335e323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68653164623931393231326131373863655f323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683334393932343863336163653936613960533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6833636330623732656235383131376131612f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a6861663264376134626331363838373132622e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a6832336431393265383735306239363134633a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6863396239323564376434343463386336643b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6834336661353362343232643664383637653a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68326132353136316331386631363162376639636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68663934343663353338336538346530666731636f72653a3a666d743a3a6e756d3a3a70617273655f7536345f696e746f3a3a683836356665636331363439653662386668313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68636166353765616336643835636166376947636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a42696e61727920666f722069383e3a3a666d743a3a68393534666231363062643530303465346a3e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68303461626364316137336361656135626b5a637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a746f5f62797465733a3a68376437393064393161666331616134356c9201637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20737562746c653a3a436f6e7374616e7454696d65457120666f7220637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a63745f65713a3a68396364656461363836373161653962666d24737562746c653a3a626c61636b5f626f783a3a68643538663262386531326262666438636e57637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a706f77326b3a3a68663236333730613433323836636163336f7e637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a737172745f726174696f5f693a3a6835363363396339363265323062373362705c637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a66726f6d5f62797465733a3a6832616238363561393631373334363633715a637572766532353531395f64616c656b3a3a72697374726574746f3a3a52697374726574746f506f696e743a3a656c6c696761746f725f72697374726574746f5f666c61766f723a3a68646461343666623535616233393161667249637572766532353531395f64616c656b3a3a7363616c61723a3a5363616c61723a3a66726f6d5f63616e6f6e6963616c5f62797465733a3a6839653365336238643333303431333564737b6672616d655f6d657461646174613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f6d657461646174613a3a53746f726167654861736865723e3a3a656e636f64655f746f3a3a683162656163376433656139313636306274423c73705f7374643a3a57726974657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a683363633661343561353130333135336375417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6831636432373064666631313861613763766c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683563616634656137383534663333653777417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a683538303330336534653561396266326478417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a683637333262303539623133663935393579417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68366466653838653631316263313030307a417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68373364323466643532356561656535617b417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68396561313134623133303139396634327c633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a68373565373763666662363932356332627d2e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68323639383637313236343665326136667e543c6672616d655f73797374656d3a3a6c696d6974733a3a56616c69646174696f6e4572726f727320617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68303564386661663138656538646536617f4c6672616d655f73797374656d3a3a6c696d6974733a3a426c6f636b576569676874734275696c6465723a3a6275696c645f6f725f70616e69633a3a68326463313939646664376530366331378001206b656363616b3a3a66313630303a3a68643136653639383530623363363336348101366d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6e65773a3a68663937363338316633643532623636308201366d65726c696e3a3a7374726f62653a3a5374726f62653132383a3a626567696e5f6f703a3a6834393265303662376564646166353330830131636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a68353165396237626139333239313435378401416d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f6d6573736167653a3a683832386436623530666233383133386185013d6d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f7536343a3a68633365386666383661313861373738328601426d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6368616c6c656e67655f62797465733a3a68313833653739663961616235383637398701303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68316334646132633061303238396231668801643c70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a466561736962696c6974794572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68356639353562323537383963303132628901303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68656632323534336265633130646631348a01573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68393563343662346135636139623633318b01633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a68306264653266643331303639363735368c014470616c6c65745f7374616b696e673a3a736c617368696e673a3a536c617368696e675370616e733a3a656e645f7370616e3a3a68343665356663366630336239626165618d014170616c6c65745f7374616b696e673a3a736c617368696e673a3a536c617368696e675370616e733a3a7072756e653a3a68396461336662633239336538376636628e013a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a68303534383936373432303432306536618f01503c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683464303838633264376634643433323490014e3c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686263323663363266356563326365633891013f7061726974795f7363616c655f636f6465633a3a636f6465633a3a4f75747075743a3a707573685f627974653a3a68646535356531343739363262616232369201417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a683137326236353437366635353032356593017873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a68343434323965343630393164333930619401417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6838663036663234333538316330343764950173706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6866333132353766373030613764323632960143636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a68323931336639633538376534623864329701417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6865666161663031646263306131393837980173706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a68623461303361656462343538393566379901417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a68666263373066313237623664313738319a01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68326431613761636333306632303331659b01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68333465323539333162346531636436639c01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68336561663130383731353339303430349d01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68346165376234343061616363373966649e01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68373663633033393565653930663335389f01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6838626231363161623938393934393263a001417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6839343435623732353264366531656437a1017f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6866613131656361613263343663353034a201437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836633266613633383763613136303466a3014673705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f36343a3a6862666666623834363238363136323839a401483c5b543b20335d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838313536336661333561653762326136a501483c5b543b20385d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831396132646534623066383332363739a601493c5b543b2033325d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863623661636139343162313336393138a701493c5b543b2036345d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838303933396439656231303661383563a801493c5b543b2036355d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863383263363163623836653938303562a90183013c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c543e3e3e3a3a737065635f657874656e643a3a6834333433623739616665303932333864aa017c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6835376539633762336138623139633366ab016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830333032626636346534653237353864ac017c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6835623230663231363165303530636137ad016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866303535343637373665303230366363ae01437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6862663364636463663734333139353536af01723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6833333331313533346166363863323539b0014973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235363a3a6832313066356631633064313636643162b1014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6839383566636366333564323132633461b2014273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a6864326433663631373330386337633833b301433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6831386466333633666639376330326663b401433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6836623163333939616130323131633837b501433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6862316237633535636335393331633438b601463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6831356366376132373661656236306439b701463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6831393433366263323536323035633439b801463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6839386532353430376132336634383739b901463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864366238393961663663623862623565ba012f616c6c6f633a3a7665633a3a5665633c542c413e3a3a696e736572743a3a6862313463363838616531366339623262bb012f616c6c6f633a3a7665633a3a5665633c542c413e3a3a72657461696e3a3a6864303139346364376564376632653738bc0130616c6c6f633a3a7665633a3a5665633c542c413e3a3a726573657276653a3a6862633437373533393538393931366631bd01753c636f72653a3a697465723a3a61646170746572733a3a66696c7465725f6d61703a3a46696c7465724d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834303462643035383132356562386236be013d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6864343637623435636430623230393830bf01ef023c70616c6c65745f7374616b696e673a3a4578706f737572654f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c70616c6c65745f7374616b696e673a3a4578706f737572653c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c3c3c542061732070616c6c65745f7374616b696e673a3a436f6e6669673e3a3a43757272656e6379206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a42616c616e63653e3e3e3e3a3a636f6e766572743a3a6865303165636431646561633832386130c0018901616c6c6f633a3a7665633a3a736f757263655f697465725f6d61726b65723a3a3c696d706c20616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e20666f7220616c6c6f633a3a7665633a3a5665633c543e3e3a3a66726f6d5f697465723a3a6834363866663161336634646662653265c10137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6864613239663237353833366134393731c2018901616c6c6f633a3a7665633a3a736f757263655f697465725f6d61726b65723a3a3c696d706c20616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e20666f7220616c6c6f633a3a7665633a3a5665633c543e3e3a3a66726f6d5f697465723a3a6865613730666433376438633331646166c301463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831346533613663623564663536666133c401463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834613933633464303834333065643936c501463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836303537393062333330306164356637c601463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836356137396265346564383636373961c701463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837313931373435626662633434323366c801463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837643465373234323262363634313861c901463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837643839626330393337326466386362ca01593c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e313620617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837333664376631306164343464663161cb016e6672616d655f73797374656d3a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f72206672616d655f73797374656d3a3a70616c6c65743a3a43616c6c3c543e3e3a3a636c6f6e653a3a6831323638366561316134663633343835cc014b3c70616c6c65745f7363686564756c65723a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6864623866366639643663633431383265cd016c70616c6c65745f626162653a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f722070616c6c65745f626162653a3a70616c6c65743a3a43616c6c3c543e3e3a3a636c6f6e653a3a6837383361613533666636313562646361ce017670616c6c65745f62616c616e6365733a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a43616c6c3c542c493e3e3a3a636c6f6e653a3a6832363164653063313634666635363162cf014c3c70616c6c65745f617574686f72736869703a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865653466643830656361663864633265d001493c70616c6c65745f7374616b696e673a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838666433303361643661323836343566d1014a3c70616c6c65745f6f6666656e6365733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831663061313664386462333362636338d201493c70616c6c65745f6772616e6470613a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833376165643665316663643739303161d3014b3c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835343831313631613336386534353337d401553c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837313034663531313462333966646661d5014b3c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6839666530363334663366393230333034d6014e3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830653536616134646335643235646137d701543c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838313437393230313536316437303734d8015a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830336430613931656339373162303366d9017270616c6c65745f76657374696e673a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f722070616c6c65745f76657374696e673a3a70616c6c65743a3a43616c6c3c543e3e3a3a636c6f6e653a3a6865633234666532306563376234343334da014d3c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68346635346532643136633036353534392e37393131db014a3c70616c6c65745f6964656e746974793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830643932653066343137613861643839dc016e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a636c6f6e653a3a6834613966316330373064656234363832dd014a3c70616c6c65745f6d756c74697369673a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6839313735663538626235363334363836de014a3c70616c6c65745f626f756e746965733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831656462306664313263653864316266df01463c70616c6c65745f746970733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6862613164376164343261313264326466e001463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865613535616363646537613037386539e101483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6838303265616436643865666533353761e2015c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a4e6f64653c7072696d69746976655f74797065733a3a483235363e3e3a3a6865363831383635643166643564323865e301543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834383261343630393333326134326266e401543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6835356239373466663865663336636665e501543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836383964306330643238303636323565e601a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a6837373966626133363039643039633130e701543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837643539393962306662626634663963e801543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839396138643766363633353339373038e901543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862303830613235616131623864373537ea01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863316366336538323838306431313134eb01a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a6862316637393732636333366234616539ec01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863633864643930663538363632356235ed019c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839346666333763376364373037646262ee01623c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6833333437303064656532633961353763ef016f3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830623534306634353365383133623065f00152616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6835363337656364623930343331326231f101613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6832363133633830663161376437393065f201723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6837646237386237343839393362373631f301407363686e6f72726b656c3a3a7672663a3a5652464f75747075743a3a6174746163685f696e7075745f686173683a3a6833623437323866663336313532616233f401457363686e6f72726b656c3a3a706f696e74733a3a52697374726574746f426f74683a3a66726f6d5f636f6d707265737365643a3a6836623232303364313364656139386139f501a60173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a656e636f64655f746f3a3a6830323861626262393936346364313439f6017273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6836653432643666363338623138656535f7017273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6839343863376230663337363533613733f801776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6d75746174653a3a6837323536646466373939663761393636f9015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862323066383061383637646331343662fa01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834333936376332633132393964646638fb01b80170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a756e726573657276653a3a6834316330613832386262346332313663fc01573c49642061732073705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3c543e3e3a3a696e746f5f7375625f6163636f756e743a3a6839386431656634393434363831303630fd01b50170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a6465706f7369745f6372656174696e673a3a6835666133383763306132623164326139fe015e6672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6465706f7369745f6576656e745f696e64657865643a3a6835626334326665303936353434373961ff014473705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561723a3a68346134363733353037653435373239368002950170616c6c65745f626f756e746965733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f626f756e746965733a3a426f756e74793c4163636f756e7449642c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a683836323732623763633739373164653381024773705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f3132383a3a686233633163373235303031363932636482026c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a686332666438616232643963643236623883023d70616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686137653033376266306337336539323684023f70616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68373736383462363133633365306339308502703c70616c6c65745f626f756e746965733a3a5f5f47657442797465537472756374426f756e7479436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686161633861616139356362633466643186024870616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68313166383733393161316536393835328702a1013c70616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f756e747943757261746f724465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686261323764323161396437643264353588029f013c70616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f756e7479557064617465506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68646131336231653366663965626337318902a5013c70616c6c65745f626f756e746965733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f756e74794465706f7369745061796f757444656c617944656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68616263393661646633646638376363618a029f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a68346639326161646435363062373164648b0248636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a68323931336639633538376534623864322e313432358c025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68333939373138323566613065396463388d02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68653562653633373365646164633831398e02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68303134383831383335653235316462648f024573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6578697374733a3a6839376131343563396531323964633665900276706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a686361393330626465623166386435306291026f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68633461656239623633353630633063329202553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a686237316635333161643164613262656193028c0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5072654469676573743e3a3a6465636f64653a3a68616635386165363233633966653764319402683c73705f636f6e73656e7375735f7672663a3a7363686e6f72726b656c3a3a56524650726f6f66206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68656636326139663434306438653364369502970173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a4e657874436f6e66696744657363726970746f723e3a3a6465636f64653a3a686162663463613866346436393435616296029a0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a4e657874436f6e66696744657363726970746f723e3a3a656e636f64655f746f3a3a683939383236366265356137643030313297023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683164343665666133393136303264326198028f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a68333135346336303035323866333031329902723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68623231666632396164616331653838649a028f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a68623566303733383937623663383465349b02723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613332623433393933313031653361629c023a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68313966616163363634303864623934669d023b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68363763306632616666393765366234629e023a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68666363356433616135306235396631329f024e616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a636f6e7461696e735f6b65793a3a6838376533363161653833333837656238a00245616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a6765743a3a6833646530326462666133613238363739a10245616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a6765743a3a6861333765623834336637643765326537a20245616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a6765743a3a6864383238373766343238663833313338a30247616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a656e7472793a3a6831383231633937386265376630353764a40248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6863653637343566353364303332326632a50243616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6834366165333765353832353364353264a602633c54206173207061726974795f7363616c655f636f6465633a3a64657074685f6c696d69743a3a4465636f64654c696d69743e3a3a6465636f64655f616c6c5f776974685f64657074685f6c696d69743a3a6831626665303966343531373238393166a7024d3c747269655f64623a3a7472696564623a3a5472696544423c4c3e20617320747269655f64623a3a547269653c4c3e3e3a3a6765745f776974683a3a6864356339653839303865303166386234a80239747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633a3a6465636f64653a3a6862383639363639626634646539366230a902503c61727261797665633a3a6572726f72733a3a43617061636974794572726f723c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837393632333430663930373534656332aa0225747269655f64623a3a547269653a3a6765743a3a6866356631613264326561623833396537ab02553c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320636f72653a3a64656661756c743a3a44656661756c743e3a3a64656661756c743a3a6865366635633032326130396239613338ac02583c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862333533653566623136316432346166ad02603c70616c6c65745f626f756e746965733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863643063343637366665323465363736ae024f3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a6765743a3a6862333438336234343239643938366136af02366861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a6765743a3a6836383163343836306161303736623932b002523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a696e736572743a3a6862353066336439303265626363366361b102533c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a656d706c6163653a3a6836396266313934303966653233633661b202386861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a656e7472793a3a6861633566643236653362313731346564b3023d6861736862726f776e3a3a6d61703a3a566163616e74456e7472793c4b2c562c533e3a3a696e736572743a3a6832663430376337386336316663386234b4023e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6836393838383263396365666231343762b502523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a72656d6f76653a3a6834343961373437343133653934373134b602543c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a636f6e7461696e733a3a6836613232666166626466643133653064b702583c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64623a3a6831303435346136373839353264626566b802a901636f72653a3a7074723a3a64726f705f696e5f706c6163653c6d656d6f72795f64623a3a4d656d6f727944423c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235362c6d656d6f72795f64623a3a486173684b65793c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c616c6c6f633a3a7665633a3a5665633c75383e3e3e3a3a6830313666303233366232343132373036b9025c3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64625f6d75743a3a6862353561343564316233626532616638ba02523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a6765743a3a6833666134393265626263313234643331bb02573c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a636f6e7461696e733a3a6832353132323963613832383432363161bc02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6835356538336166333663326664663035bd02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836366136613134663532333430396563be02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836656237306566616438356130326136bf02613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830653166636430626666306463643362c002763c70616c6c65745f626f756e746965733a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6837333134666566333966323865373037c1022e6672616d655f73797374656d3a3a656e737572655f7369676e65643a3a6839343964386432313865623034363961c2027d70616c6c65745f626f756e746965733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f626f756e746965733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6830316431626334633937303137663333c302b60170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a726573657276653a3a6864633331623132306161326533656433c4025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865636133326566366233613338363261c502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6866656538323763633632613763386363c602456672616d655f737570706f72743a3a7472616974733a3a456e737572654f726967696e3a3a656e737572655f6f726967696e3a3a6832613563363731373162363064633563c7024573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a617070656e643a3a6836363166386537346163613530663636c8025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835333133343234393238633635316166c902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861636633653336613230613037376439ca02ad0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a7472616e736665723a3a6865396164326362343735366132323265cb02bd0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a736c6173685f72657365727665643a3a6834326431633664613265613535356166cc026d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6865303635646432626431333966613665cd024873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6864613330323036363463316562626164ce026d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6866373065393061653031306163623163cf027b3c70616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6863323436633639653065323733663230d0025370616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e645f70726f78793a3a6836643264353862306537313934316562d102870170616c6c65745f70726f78793a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f70726f78793a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6833613734306530326565636236353064d2025170616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f70726f78793a3a6861626666386330363533623131643365d3025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864663863313664333937366561663565d402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830313536623363663230626436303530d50239636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a62696e6172795f7365617263683a3a6864656233663764633761666130346633d602386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836363332326262393633366466346238d702437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6838343739323633656631306665336536d802483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6862656566353337386265376665623366d9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838633632623463383365333765343632da02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862616538653038373033623734343136db02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6862633935623837613635623363323666dc0248636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a68323931336639633538376534623864322e33373630dd02743c706f6c6b61646f745f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6866376339643565333066316637366539de02703c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838383431316236383566343135386235df027a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6866313835343566303438646230356434e0027f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6834646261363539653937333039303266e1024a706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6574685f7265636f7665723a3a6837393037393133346164616130393932e2025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864363861396235313731643365393731e3025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834353966663333393336303734636463e402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866633037643535393132366639303334e5024973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6b656363616b5f3235363a3a6864616135626130643861616139646232e6025573705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665723a3a6864636565653466323033633166623335e7025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861373938656635346334393466316334e8024870616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f72656d6f76655f766f7465723a3a6837613534613936326538626338313738e902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836663265636539333735653538626434ea02b80170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a72656d6f76655f6c6f636b3a3a6866353463643063333039303236396433eb024570616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a69735f63616e6469646174653a3a6861376664643039656332306164643332ec02766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6839393961666664333765366238666335ed024273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6765743a3a6831363732623435356437613030613832ee02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861386633346532343837656333623162ef024673705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f757466383a3a6832303234666164356461343966643938f0025270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a72656d6f76655f616e645f7265706c6163655f6d656d6265723a3a6839336539653134363262316565623731f102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832626263616635393132643937623365f202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6835346161376630656365626266353932f302910170616c6c65745f656c656374696f6e735f70687261676d656e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6831646263383135343261336565623361f402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831633739396334366139386635363639f502a2013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6863333430376532623132663963313036f60296013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a7365745f7072696d653a3a6833653861373335306333393533366464f7024470616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a646f5f70687261676d656e3a3a6839333534373134303735366363633234f802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839646134353138643739373663656438f90239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6833316464633234363330386135626331fa026e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839306636323863363234323766353731fb023c73705f6e706f735f656c656374696f6e733a3a70687261676d656e3a3a7365715f70687261676d656e3a3a6866653763663162343763383161613737fc022b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6832373766356437373265383862363166fd022c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6839353035626533656131336430376139fe02546672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a636f6d707574655f6d656d626572735f646966665f736f727465643a3a6864373639333235343237623535383661ff02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683931343463366132343662386133306180037c3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a50726576616c6964617465417474657374733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a686631623730353566656361646332643581035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68396262336162323333376464316366348203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68653266656339393830336566663932308303753c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a683863366563343733643565666262323384035470616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f696e697469616c697a653a3a68393031313835393863386331343736398503386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68346464386337303732326363373361378603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68666665373861346335363539303865308703766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a68616333363936303163616465336262358803386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683839343062383635373837343838396389034b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561725f7072656669783a3a68636634393736343337343039336533378a035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68383231643532353261656439636466398b03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68616130323337666437356664323533338c03706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68633363396264323135316637346238378d03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68386335616564636663316638646336348e035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68646364383632626661303034663633378f03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68653165303339313735323330313334629003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68643931303533376433363038393336379103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6837663964633738333231383962666231920382023c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073705f7374616b696e673a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a436f6e6669673e3a3a56616c696461746f7249642c3c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a436f6e6669673e3a3a46756c6c4964656e74696669636174696f6e292c7536343e3e3a3a6f6e5f6f6666656e63653a3a683837653765363039393930313364383293034973705f696f3a3a6f6666636861696e5f696e6465783a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a68636561653863643562313830613534319403766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a686331383037313533356633646338326495035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683933386336343338383963373230663696035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683063626564653761313532393438336497035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683630616630313838373337396132343198036d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a686633613361393035353865333365313999037a706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a68656534346165336165636465343638329a03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68373333306132393265643230383130399b03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68393166363235366561623235373236659c033770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746172745f6572613a3a68303064666132633662303936613639669d03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363662663036373735633136383533379e03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68343835373832323630633236306662359f033570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f6572613a3a6831343033303131653062646464626462a003766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6830616364373330383063346464383766a103706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6835306437333539646535353961646534a203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836353132613637363566313839353639a3034b70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a67656e65726174655f666f723a3a6866613062373062353833656639636238a4035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839373836663833313834623966356537a503386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836666563336566656234323238366436a6035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865383832613836623933623138313534a703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862343966623735346136353530383765a803a1013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e74332c5475706c65456c656d656e74342c5475706c65456c656d656e7435292061732070616c6c65745f73657373696f6e3a3a53657373696f6e48616e646c65723c4149643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6864376661636132313263636566333234a903603c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a426c6f636b57656967687473206173206672616d655f737570706f72743a3a7472616974733a3a4765743c493e3e3a3a6765743a3a6835396263393435653263373465313736aa03753c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6831666133666564653833383234353232ab035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836373932393537613630613139303139ac034c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a70726f636573735f636c61696d3a3a6830643834343264333366626634343639ad035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839303163353866646466353433383031ae03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830373636366630623133336137666566af03746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6837633366623861306633373432376130b0039d01706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6834613130373535623232396531663134b1035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863383930363461363366316465363234b203746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a696e736572743a3a6839373061383763393135386465323031b3035870616c6c65745f76657374696e673a3a3c696d706c2070616c6c65745f76657374696e673a3a70616c6c65743a3a50616c6c65743c543e3e3a3a7570646174655f6c6f636b3a3a6865356538333531313866306234633261b4034270616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6836353133613337623862353530303463b5034470616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6830303933313366303666306264326362b6034d70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6834626432386134346437613463333534b7039c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850656e64696e6744656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839636666316631353330663537373634b8039c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850726f7869657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861363264626165653234336537663065b903a4013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f78794465706f736974466163746f7244656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835633736363432366363383639653833ba03a2013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f78794465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832313336633039653537383934656233bb03483c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834663534653264313663303635353439bc037e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6861323533316463633835653737373333bd037e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6862346162346162366366336432316364be038a016672616d655f737570706f72743a3a776569676874733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a776569676874733a3a4469737061746368496e666f3e3a3a656e636f64655f746f3a3a6835653130633433366633656665336235bf033c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863616437373135646331623130633936c0033e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861396461363365363765616363333036c1036e3c70616c6c65745f73657373696f6e3a3a5f5f476574427974655374727563745175657565644b6579733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831363538333962626465366135333039c2035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834386637303037336261396437616439c30396013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a436f6e7461696e733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a636f6e7461696e733a3a6863366532336563353362646431336332c4034d706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839323431346233346432306361633731c5034f706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832636366396435396336623439366530c60358706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6865313136353432626239663234363332c703a3013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a636c61696d733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726566697844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833633365626638613162646562656530c8034770616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865386561343536333461363033333634c9034970616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866346233323761663365326135363232ca03753c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a5f5f47657442797465537472756374566f74696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865366462353566333565313933326431cb03763c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a5f5f476574427974655374727563744d656d626572733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832383763343539326366393239646566cc035270616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836353761323739313431373934363265cd039f013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6f64756c65496444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863626365613235613233663838363839ce03a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446573697265644d656d6265727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864663737643336383337613332306562cf03a5013c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a566f74696e67426f6e644261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836323262653630653339343430323731d0036a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6861636135363437333366376435383836d1035d3c706f6c6b61646f745f72756e74696d653a3a53657373696f6e4b6579732061732073705f72756e74696d653a3a7472616974733a3a4f70617175654b6579733e3a3a6765745f7261773a3a6837663863666435666561356439303937d2036a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6866363962626435656663366537383631d3035f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833626666356136303962326266313764d403653c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833356639626233643038346339393834d5036a3c70616c6c65745f656c656374696f6e735f70687261676d656e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866636132313639646637383334303638d6035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862653066643335623339626330643838d7035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837343438343531353165646336646335d8034973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3132383a3a6836373938353364663563393861396532d9033c70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833306639303937393364613637366535da033e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838643939323762633730323536663137db034770616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861323133336262373065356537353038dc0393013c70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863353763626532623966633061363964dd033d70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831336536643533656436303837613538de033f70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833663462383563643138323533363666df036f3c70616c6c65745f6964656e746974793a3a5f5f47657442797465537472756374526567697374726172733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863393234396361643063626564613932e0036b3c70616c6c65745f6964656e746974793a3a5f5f47657442797465537472756374537562734f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864356538356631626131363838333132e1036c3c70616c6c65745f6964656e746974793a3a5f5f4765744279746553747275637453757065724f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836633661613966626134376434626562e2036f3c70616c6c65745f6964656e746974793a3a5f5f476574427974655374727563744964656e746974794f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835356638333534346532663037656164e3034a636f72653a3a7074723a3a64726f705f696e5f706c6163653c70616c6c65745f6964656e746974793a3a4964656e74697479496e666f3e3a3a6835363532633932383730616537363761e4034870616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832306633653532663330306463343135e5039a013c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61785265676973747261727344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834313435633435646337336563646338e6039e013c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5375624163636f756e744465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861623366383532396636653366336464e70399013c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4669656c644465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864636637366133386663636364353630e80399013c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a42617369634465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830663531393062393861653838643666e903850170616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a526567697374726174696f6e3c42616c616e63653e3e3a3a656e636f64655f746f3a3a6865333837336532643536343666613861ea03820170616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a4a756467656d656e743c42616c616e63653e3e3a3a656e636f64655f746f3a3a6836313661346630333738383731633432eb03573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839346437366261643037623237653735ec03573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862333836386437353330343962656362ed03573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832303736366165333465373666616163ee033d70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864306566633638646636366233643930ef033f70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839663835323535366665376264323335f0034870616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6835636338613863653034386235653135f1039b013c70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61785369676e61746f7269657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832303365363332613866646430396362f2039a013c70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465706f736974466163746f7244656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864396231386162303333656133313730f30398013c70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838643436663732383137323037366138f4033f70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6838326165393938666630636331353861f5034170616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6835666538313231366365396362663362f603703c70616c6c65745f74726561737572793a3a5f5f47657442797465537472756374417070726f76616c733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862383932643864333533313934663438f7034a70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839643936633239303039666331396661f80399013c70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6f64756c65496444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863306238616364646261363865323239f90395013c70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4275726e44656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865633262653666653539663761653333fa039c013c70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5370656e64506572696f6444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861646630373639353636333831653061fb039d013c70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f706f73616c426f6e6444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839643539366538343762393066393362fc03603c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6831643331336231336334666138643065fd03603c70616c6c65745f6d756c74697369673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861333432313564643131373737303232fe03623c70616c6c65745f74726561737572793a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6837633863353133336365643263626230ff035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68336439633230316464653065333135318004763c70616c6c65745f6964656e746974793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a68343834306132656462303138313331308104766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a68626564663437333565326366373265348204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683962396637383936356238653836303383047d70616c6c65745f6964656e746974793a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f6964656e746974793a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a683130643133663937396631343638623484045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68653063663231626531393462383464328504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68646537643636636364656530373735308604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686463363165393636616564323834313587045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68653131643263386135343964343839348804386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68313334306262333666323966326562378904c20170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a726570617472696174655f72657365727665643a3a68616462666635313762333464663866618a04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68366364363233303036396533373834658b04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68373231663730343165363035663865618c0448636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a43616c6c3e3a3a68323931336639633538376534623864322e313936368d044770616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a656e737572655f736f727465645f616e645f696e736572743a3a68343335333836303531366237323937348e047d70616c6c65745f6d756c74697369673a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f6d756c74697369673a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a68323237653366396337616534383335348f043670616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a6f7065726174653a3a68616463633732353463656637653537349004437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68376361303836333334393736623535399104706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68343061396537663831636236326632619204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683633623765646561343538636333333093044570616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a73746f72655f63616c6c5f616e645f726573657276653a3a68323430386535656565666339343063669404386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a686566643932633663623038613836366595045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68323032383837323661363461666436389604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333131656566626538653064373865399704693c706f6c6b61646f745f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a683462393330303139653165316662623898043970616c6c65745f6d756c74697369673a3a4d6f64756c653c543e3a3a636c6561725f63616c6c3a3a686538346231626332646434613538343499045d70616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a68613132646131633262386639373930639a043473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a68616230333232646265626164393335359b044b73705f636f6e73656e7375735f626162653a3a636865636b5f65717569766f636174696f6e5f70726f6f663a3a7b7b636c6f737572657d7d3a3a68616362316438626136393136623965309c045d3c73705f72756e74696d653a3a44697370617463684572726f7257697468506f7374496e666f3c543e20617320636f72653a3a636f6e766572743a3a46726f6d3c453e3e3a3a66726f6d3a3a68306431663965353836643261306238649d0495013c70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a4b65794f776e657250726f6f6653797374656d3c2873705f636f72653a3a63727970746f3a3a4b65795479706549642c44293e3e3a3a636865636b5f70726f6f663a3a68323730653566616534363162306534629e043d73705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3a3a7371756172653a3a68613435383139626232663061646631369f04763c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6865626466643235336163643433393530a004386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861393962303137326439373231663330a104386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864653331393230386662366432346235a204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865343363353732613638383430363436a304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832656465363336313862363431626363a4043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834336434353863643363326339653332a5046d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a617070656e643a3a6830386461383561386636303133313438a604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6864346436613861386633396238643038a7045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839346462326262323766323730333833a8044d3c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68346635346532643136633036353534392e31393734a9045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836636535656131383561353736636634aa04776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a617070656e643a3a6835636131613035303530356235343434ab04a70170616c6c65745f7363686564756c65723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f7363686564756c65723a3a5363686564756c656456323c43616c6c2c426c6f636b4e756d6265722c50616c6c6574734f726967696e2c4163636f756e7449643e3e3a3a656e636f64655f746f3a3a6832326166356638373438666136333132ac044170616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6836333839303937316532626565666261ad044370616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6864623934656133363064393565313530ae044c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833323335323762663566633439643335af04a2013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835376365393532636533626636323130b0049e013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834336337333932323031383333613036b1048f0170616c6c65745f64656d6f63726163793a3a766f74653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f64656d6f63726163793a3a766f74653a3a4163636f756e74566f74653c42616c616e63653e3e3a3a6465636f64653a3a6862323037393738343931626230316262b204920170616c6c65745f64656d6f63726163793a3a766f74653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a766f74653a3a4163636f756e74566f74653c42616c616e63653e3e3a3a656e636f64655f746f3a3a6836623835616336316263393232313361b3043e70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6834613261623933666330363330633631b4044070616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836636632666533343364346461373734b504743c70616c6c65745f7363686564756c65723a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864323633666330323330333033626436b6043f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6833616463366263363537346437313436b7043173705f6e706f735f656c656374696f6e733a3a746f5f737570706f7274733a3a6861666439373331643136633831316439b80437616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6837653863323639363931353362363861b9043273705f6e706f735f656c656374696f6e733a3a73657475705f696e707574733a3a6837656238313935316432393166323736ba0468636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6864363661356139383836363239653032bb044d73705f6e706f735f656c656374696f6e733a3a566f7465723c4163636f756e7449643e3a3a7472795f6e6f726d616c697a655f656c65637465643a3a6862653563363137363963393538356463bc045a3c616c6c6f633a3a7665633a3a5665633c753132383e2061732073705f61726974686d657469633a3a4e6f726d616c697a61626c653c753132383e3e3a3a6e6f726d616c697a653a3a6839303136313262656538323130313339bd044a73705f6e706f735f656c656374696f6e733a3a41737369676e6d656e743c4163636f756e7449642c503e3a3a696e746f5f7374616b65643a3a6833633237383735663837336439383439be044c73705f6e706f735f656c656374696f6e733a3a41737369676e6d656e743c4163636f756e7449642c503e3a3a7472795f6e6f726d616c697a653a3a6864306632373462636138386433636534bf045073705f6e706f735f656c656374696f6e733a3a5374616b656441737369676e6d656e743c4163636f756e7449643e3a3a7472795f6e6f726d616c697a653a3a6838393566656563623433653033623266c0043873705f6e706f735f656c656374696f6e733a3a62616c616e63696e673a3a62616c616e63653a3a6865653666636530363964346438663566c1042c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6833386661393063363663633439663732c2043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6839623564343334343237623536333236c3043f70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a646f5f63616e63656c5f6e616d65643a3a6830646634316432383231353463363938c4045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836306633616134616634663532316234c504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834363936613138316330633037626238c6044f3c706f6c6b61646f745f72756e74696d653a3a4f726967696e43616c6c657220617320636f72653a3a636d703a3a5061727469616c45713e3a3a6e653a3a6861353539633235333930353666633537c704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836646634616365623336623264343462c8047f70616c6c65745f7363686564756c65723a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f7363686564756c65723a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6832653238613266313864373332313135c9044170616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a646f5f7363686564756c655f6e616d65643a3a6837386236343764333735336132633966ca044373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6831613263386662613833353065656134cb04433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832303430316436366632336562393734cc04433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864323062653836376362326563383664cd04a201636f72653a3a7074723a3a64726f705f696e5f706c6163653c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c616c6c6f633a3a72633a3a52633c636f72653a3a63656c6c3a3a52656643656c6c3c73705f6e706f735f656c656374696f6e733a3a6e6f64653a3a4e6f64653c73705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3e3e3e3e3a3a6837363339396666656266653065656630ce043d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6862323164393930633331366331653238cf043d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6864613162393666633238333736316235d0047873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a6839653731326130306137363933643834d1042e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a6838636564306562626163616539663337d204553c70616c6c65745f62616c616e6365733a3a44757374436c65616e65723c542c493e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6831393635353932326232643331663061d304613c70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830643665333666343930383536653763d404643c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864323534363337313136316339346264d504773c70616c6c65745f7363686564756c65723a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6838333861376663303063633431663265d6043b70616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a646f5f7363686564756c653a3a6866323966343436646662376466373666d7046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830643630363462633439636166353032d8046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861356438653733353039373863343265d9046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834383032623466376565646238316231da046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865346463656637306165656164633965db046c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866333633353564336365303233666139dc04713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6837383339636535356637343265343164dd0431636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6866323565313332343861393263626530de0431636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6834643763613939306565626363626661df043d706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a426c6f636b576569676874733a3a6765743a3a6839336264306338383566663261346531e004960173705f7374616b696e673a3a6f6666656e63653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f7374616b696e673a3a6f6666656e63653a3a4f6666656e636544657461696c733c5265706f727465722c4f6666656e6465723e3e3a3a6465636f64653a3a6835643836663139373036633835393739e104766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6837633634353565626638336465343134e2043770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a6838386434346435343262333762663130e3043b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6833613233366363376165393766373839e4043f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6862656335633264633061643630396338e504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6865373630323731363931666466336637e604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836613936376334333532623439653034e7044970616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a636f6d707574655f6665655f7261773a3a6833313031393864326262626331316266e804466672616d655f737570706f72743a3a776569676874733a3a576569676874546f466565506f6c796e6f6d69616c3a3a63616c633a3a6865373736303062323863386331366232e904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839336333623635346562636164666565ea044673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a6836323434636635306439633764393262eb046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6832313162326636663932336336663534ec046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6832333463393638646133323561613739ed046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6838303130323133373864313238393238ee046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6862376561653564663330316439393734ef046f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6832626337626565653336326334336162f0046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6863303061626262333264383135303233f1046d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6863666364363534303031613462356464f204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830326436653762386232393466663866f304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6865303732613930666335646532396335f404766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6834386465396533616565656337346163f504766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6865313039633563643564363934653166f6043f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832326533616338643335626530323932f704773c70616c6c65745f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866343532663030373334383733316630f804753c70616c6c65745f6f6666656e6365733a3a5f5f4765744279746553747275637444656665727265644f6666656e6365733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861356461326230653532363737636462f9046c3c70616c6c65745f6f6666656e6365733a3a5f5f476574427974655374727563745265706f7274733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838313236373063623331663966383931fa044c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7665726966793a3a6830613965313635396366646564303966fb046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7531363e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832653266643130383536646633363061fc046b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7531363e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839343765653431363262323061613237fd047f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6865373061616163386239666130363838fe044a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830393632663566333561323836306233ff0481013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a5f5f476574427974655374727563744e6578744665654d756c7469706c6965723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683331323734323632373466396464306180055370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68303761656332643535353339393662658105a3013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a576569676874546f46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686466393631616138663536343965313782056d3c73705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c2061732073705f61726974686d657469633a3a7065725f7468696e67733a3a5065725468696e673e3a3a66726f6d5f726174696f6e616c3a3a68383663353535316139383136366332658305aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686637306535626133336433333937313384056b3c70616c6c65745f6f6666656e6365733a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68383863306366663831316637316639658505860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a686331383030646435646334643637613086055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68663262386133633435316564373834348705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683966363261303166333530653539376688056c3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a683265393663626364336636313832623389055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68313262333364613838313462333930318a05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68643763383630303539346561306131328b054773705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6578745f6b65793a3a68313461663835393261663033343962308c056e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68393763346161356563383833653037328d056e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68643561393230653530363430303762388e05aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a68333733393737303633633263373539328f053473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a683562323837343836313038356464333490053e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6865313839373563656665383534623036910591017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220284b302c4c302c4d302c4e302c4f302c50302c51302c5230293e3a3a656e636f64655f746f3a3a6836313165353933613362643063666566920556616c6c6f633a3a7665633a3a73706c6963653a3a3c696d706c20616c6c6f633a3a7665633a3a647261696e3a3a447261696e3c542c413e3e3a3a6d6f76655f7461696c3a3a683230316331323265376166613434316193057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683064313361386638656634663465356194057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333537373339303165376334353334379505483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683339613336303035363632613033653796057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683436363230653539666334613733303297057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683861643761303761393437333532643598057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683933373561386462396163306136636299057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68613531623630613964323164643464669a057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68613934383166663564333230643134669b057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643266346534643665346335393534629c057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643332623666633033313831643832349d057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68653266306466316236316335346162389e057d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68653938356566663732356331313734399f055a6672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6862613239353437326664666130663865a005566672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f76616c69646174653a3a6836346530343863656535626261613033a1055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864323337336331306362393638323834a205386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836353338613935353563323364323263a30552616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6837653236653931393464303138396139a4053b6672616d655f737570706f72743a3a73746f726167653a3a776974685f7472616e73616374696f6e3a3a6862333062653837363832313266366661a5055073705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f7472616e73616374696f6e3a3a6837353866333538383836366262313833a6054a3c706f6c6b61646f745f72756e74696d653a3a4f726967696e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830316439303835303930643336646266a7052c6672616d655f73797374656d3a3a656e737572655f726f6f743a3a6862393135316334303165306664316163a8055373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6c6c6261636b5f7472616e73616374696f6e3a3a6831613238343538616562323333623365a9055173705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636f6d6d69745f7472616e73616374696f6e3a3a6865366663303539313834383933383230aa05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831643937633731653330323337633762ab05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832643961383431353139353338653735ac05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834373637326331373635326364666137ad05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835383234346161313063306332663761ae05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835393565626236303631393766363431af05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835623730313937313632333432333932b005386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835633265386438666234383431343835b105386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836613939653831643238323934356462b205386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836623961626330303432363963353738b305386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837356131316635626461616532333934b405386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838346337303766323939666337666165b505910173705f72756e74696d653a3a67656e657269633a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573743c486173683e3e3a3a6465636f64653a3a6866666336666134643839666262333835b605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864663336393061613039396331623435b705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866323063323866616466663064373537b805386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866366239393637393833333632396137b905386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6830316136386237323036336239633663ba05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6830643638343464326239303732323166bb05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6830663565303730346330626235653361bc05a80170616c6c65745f64656d6f63726163793a3a74797065733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a74797065733a3a5265666572656e64756d496e666f3c426c6f636b4e756d6265722c486173682c42616c616e63653e3e3a3a656e636f64655f746f3a3a6833393132613565306130396636393732bd05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832343739386131613963336566386332be05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832363339643130326162623731343763bf05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832366263653762613239363739393930c005386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832376531366333376562353033343765c105386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832656230313163333037663435396531c205386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6834643235363165353934383638396537c305386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836306331653766613032373836613262c405386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836653639353430666537393530633838c505386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6838363836393238386266666238313865c605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6839326638653363346263393337653339c705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6839366337303361393739623433363232c805386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6863303235313133316334333266626566c905386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6863326461626430396566656437343665ca05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6863616539373034656664623065633761cb05706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6833653836366563376335633738386664cc05706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6866376137383338643362313433613164cd055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862386636626264613439633538303738ce05746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6837333564613637336162323864636436cf055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862623638393463303330663962663533d005776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6833616664303937343536316235653066d1055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832616531656461653438336631336333d205776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6838376165303239623432383536346539d3055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831336432646263346231336162303132d4053c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863396137663838326432336334333939d5053e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832303863386262643862623133393935d605723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835366430613662623731386566376637d7056d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836623764343038353064363961333834d805743c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374556e6170706c696564536c61736865733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830353866643664613931386235616134d905723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173546f74616c5374616b653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830393732306461303364366661303734da05743c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173526577617264506f696e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830313730626366343634353064313732db05763c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744572617356616c696461746f7250726566733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866323537386534666539396561646666dc05763c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261735374616b657273436c69707065643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837396262346565386539666132613537dd05713c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374496e76756c6e657261626c65733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864373564656237393562663337356534de05703c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374486973746f727944657074683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862393438633139346433393264303231df054770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6864333731303266376631656233626462e0059a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784e6f6d696e6174696f6e7344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862316563666466336362353732636634e105ac013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f7244656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835366432366438313262626561373339e2059e013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a536c61736844656665724475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864366363633532663232303464303266e3059b013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866383436366565316631636661613531e4059a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833633864336336663064643236656437e5055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831613962636330343532353134396239e605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838623130303734623563643737623936e7053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6866346262366538363138313361393064e8053f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6839396539393962343666316539663831e905d0013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f656c656374696f6e5f70726f76696465725f737570706f72743a3a456c656374696f6e4461746150726f76696465723c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a426c6f636b4e756d6265723e3e3a3a766f746572733a3a6861613465663133393363346436366538ea0539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6830616136646231633364343130616636eb056e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6861383361306561303339653736323336ec0539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6839613363303536613561633134353838ed0539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6835363937353737356631643834343931ee055270616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f665f666e3a3a7b7b636c6f737572657d7d3a3a6832656162393334393363636135636163ef05d1013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f656c656374696f6e5f70726f76696465725f737570706f72743a3a456c656374696f6e4461746150726f76696465723c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a426c6f636b4e756d6265723e3e3a3a746172676574733a3a6833373539653864663034336232303035f005cc013c70616c6c65745f7374616b696e673a3a53746173684f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3e3a3a636f6e766572743a3a6833333639353361653765356138333730f105766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6832313230346639623837663461353834f2054970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a6833353231613262323063323434653335f3057d3c542061732070616c6c65745f7374616b696e673a3a53657373696f6e496e746572666163653c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a64697361626c655f76616c696461746f723a3a6865313636356666353965663735656635f4055e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a6862326431313064646332393230633263f505386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864306137353530333533356338386336f6054370616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636c6561725f6572615f696e666f726d6174696f6e3a3a6835366537623239626234643366313734f705706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6831373762373438633364363031303364f805706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6837316635336364323239333131663934f9055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861376666363138303133663662613333fa053870616c6c65745f7374616b696e673a3a736c617368696e673a3a6170706c795f736c6173683a3a6865396138653035383033373036363936fb05363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6831376533363964343461323066633165fc05633c54206173207061726974795f7363616c655f636f6465633a3a64657074685f6c696d69743a3a4465636f64654c696d69743e3a3a6465636f64655f616c6c5f776974685f64657074685f6c696d69743a3a6866313931336463333735633731643032fd05593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836366231633538313031306538666335fe05593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861316164323531636364396565643633ff05653c73705f747269653a3a6e6f64655f6865616465723a3a4e6f6465486561646572206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683739303464376339343638306565336180065f3c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68383132653264383139316437363663668106753c70616c6c65745f7374616b696e673a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a683066363038653139616363383838396582067b70616c6c65745f7374616b696e673a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f7374616b696e673a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a68666132613161363532643639346335358306566672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a696e635f636f6e73756d6572733a3a683935616432666537343033363537643984065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68336638313234363166356261656134308506b50170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a7365745f6c6f636b3a3a683132343765663161663238623839663686063870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a68616361383233333830336231373834358706386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683433623430353133663736656534663688066b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a686538663162333530633139393962663589063970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a68616466396639623663313633313636648a06566672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6465635f636f6e73756d6572733a3a68653130613938326666366230323637398b06ba0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a6465706f7369745f696e746f5f6578697374696e673a3a68353564396361386662633731346566668c063970616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a68653036386231613066313364316639398d06733c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e31362061732073705f6e706f735f656c656374696f6e733a3a436f6d70616374536f6c7574696f6e3e3a3a696e746f5f61737369676e6d656e743a3a68383662656637653638616137393934358e066b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68303439363935306666643166343161348f06753c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a686434613438666561653964313739346590068e0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a656e636f64655f746f3a3a68326336633638653366333463383831379106693c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e3136206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6833376233626338346637333131316562920637636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743a3a63616c6c5f6d75743a3a68306163316662333937636132363265639306773c706f6c6b61646f745f72756e74696d653a3a4f726967696e20617320636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d653a3a4f726967696e43616c6c65723e3e3a3a66726f6d3a3a7b7b636c6f737572657d7d3a3a6864353432643866363432373837353136940648636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a68373561353066643937393262346164649506693c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e3136206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68336666643431633331376139313436339606693c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e3136206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68356534653061306461343764373239629706723c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e31362061732073705f6e706f735f656c656374696f6e733a3a436f6d70616374536f6c7574696f6e3e3a3a756e697175655f746172676574733a3a6865386439303736323031383930613532980646616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a68373830363234353663656366626435659906733c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e31362061732073705f6e706f735f656c656374696f6e733a3a436f6d70616374536f6c7574696f6e3e3a3a66726f6d5f61737369676e6d656e743a3a68323861626238346565343235633038619a065d636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e3c413e20666f722026463e3a3a63616c6c3a3a68316431306565363665383137303163649b0654636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a4e706f73436f6d70616374536f6c7574696f6e31363e3a3a68373239643065616231303334343434649c0677706f6c6b61646f745f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a68343037663536306235326365623031319d067373705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a656e636f64655f746f3a3a68383332353664653833633230623434349e064a706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6672616d655f73797374656d3a3a68633533306532643962323361356432329f064e706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7363686564756c65723a3a6830343563623461633633616633326532a0064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696e64696365733a3a6836363263636437316231393864633661a1064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f62616c616e6365733a3a6834643537343163373334653762353235a2064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7374616b696e673a3a6863366363363534326164313330383764a3064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6f6666656e6365733a3a6865653236326230333833363332313837a4064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f73657373696f6e3a3a6832383136353735303865316336386130a5064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6772616e6470613a3a6864643434393862306234306465613630a6064e706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696d5f6f6e6c696e653a3a6830396239663264316464666363366366a7064e706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f64656d6f63726163793a3a6863383939333330653036343133636338a80659706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6c6c6563746976655f496e7374616e6365313a3a6830663736633337636262633466623766a90657706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f656c656374696f6e735f70687261676d656e3a3a6833316566313062376164653065643930aa0659706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d656d626572736869705f496e7374616e6365313a3a6864393739616531376563313166363633ab064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f74726561737572793a3a6839373430313532346666616632383537ac0644706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f636c61696d733a3a6833633236623266643062646136343637ad064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f76657374696e673a3a6837306133653037343936393464343732ae064c706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7574696c6974793a3a6863613261393336373431333365393038af064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6964656e746974793a3a6835343436376138376564343435336165b0064a706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f70726f78793a3a6866346565396162613464333736636138b1064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d756c74697369673a3a6835313237353862393831666339386533b2064d706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f626f756e746965733a3a6863383165663062323734326364663161b30649706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f746970733a3a6838613230663464626366393935333833b40662706f6c6b61646f745f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a6830333665383266366133646635623532b506eb01636f72653a3a7074723a3a64726f705f696e5f706c6163653c3c706f6c6b61646f745f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a4f726967696e54726169743e3a3a6164645f66696c7465723c70616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e3e3a3a646f5f70726f78793a3a7b7b636c6f737572657d7d3e3a3a7b7b636c6f737572657d7d3e3a3a6835653732376263343238633233386536b6066c3c706f6c6b61646f745f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a4f726967696e54726169743e3a3a6164645f66696c7465723a3a7b7b636c6f737572657d7d3a3a6833663166663730393666313564653234b70648636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a6861386533653264643231363530323735b8069f0170616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a756e7369676e65643a3a3c696d706c2070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a756e7369676e65645f7072655f64697370617463685f636865636b733a3a6838353734646366663966393261353232b9068a0170616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a3c696d706c2070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a666561736962696c6974795f636865636b3a3a6839666265626461343831626234663530ba064b73705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a72756e74696d655f76657273696f6e3a3a6863393133363666363361356239393737bb062c6672616d655f73797374656d3a3a656e737572655f6e6f6e653a3a6838666165653839613434383838393631bc067b70616c6c65745f696e64696365733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f696e64696365733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6839636665643530373033653237643538bd06746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6861636534633130646463376238343565be067f6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7472795f6d75746174655f6578697374733a3a6837633334313964376563323739653062bf06810170616c6c65745f617574686f72736869703a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f617574686f72736869703a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6863636331393630363137353164623866c0067b70616c6c65745f73657373696f6e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f73657373696f6e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6831643266363066313230343139616235c1064470616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a6834633531326432636333643438623334c206706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6866666530636335643365353938343235c306773c70616c6c65745f64656d6f63726163793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6833316537376466316466336237366465c4067a3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6861346366646165313636653465313362c5067a3c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6862636137306562356438353963643832c606723c70616c6c65745f746970733a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6834656439643435616462366261393364c7067a3c70616c6c65745f6d656d626572736869703a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6838383664383761393533303662363932c8068b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a6834663162393161383030666132333133c9067a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6862373233643533353561376434613365ca06820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6839313231626235656464613035323664cb068b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a6862363265666136613065656162303061cc067a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6834313734613634613561363034333835cd06820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6866393632313564363330306139316663ce06aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6831326231626237366633613265643166cf0664616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6834613135623035366339373064663466d0065a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6839373631616434366137666633663038d1065b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6833623236626563373231363965336138d20660616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6832396434643637313235613766616333d3066a3c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838623336303130376562623263643733d406746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6866636233386232326539336533383834d5065d70616c6c65745f62616c616e6365733a3a3c696d706c2070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a7570646174655f6c6f636b733a3a6834613766636634393833666561656530d6068b0170616c6c65745f76657374696e673a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f76657374696e673a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6861653739363863613338343432656438d706b80170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a656e737572655f63616e5f77697468647261773a3a6861363633313632636362303766363562d8065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830653531663865323337316366303162d906713c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6839313333616264623863313661653734da063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6866633038643266646333373838653065db065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836353862316235363864666330316264dc06746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a696e736572743a3a6861306631376465613164376234356366dd06653c73705f61726974686d657469633a3a66697865645f706f696e743a3a46697865645531323820617320636f72653a3a6f70733a3a61726974683a3a4469763e3a3a6469763a3a7b7b636c6f737572657d7d3a3a6836646264376163336466616536346330de06793c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6666636861696e576f726b65723c426c6f636b4e756d6265723e3e3a3a6f6666636861696e5f776f726b65723a3a6862356566323264353830663737626461df065173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f6765743a3a6831663133626331643463393964333062e0065d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365743a3a6836343435643638623563666537326366e1064b73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a72616e646f6d5f736565643a3a6837363461653665316561386261306666e2064173705f6e706f735f656c656374696f6e733a3a70687261676d656e3a3a7365715f70687261676d656e5f636f72653a3a6864656165626337636562623464356238e3062c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6835363033663238376535366635643132e40668636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6838646230373634623032363235643965e5063473705f6e706f735f656c656374696f6e733a3a7265647563653a3a7265647563653a3a6863623362313762393064376632646566e6066c3c73705f61726974686d657469633a3a7065725f7468696e67733a3a5065725531362061732073705f61726974686d657469633a3a7065725f7468696e67733a3a5065725468696e673e3a3a66726f6d5f726174696f6e616c3a3a6839633136396230663230626265313230e7065473705f6e706f735f656c656374696f6e733a3a68656c706572733a3a61737369676e6d656e745f726174696f5f746f5f7374616b65645f6e6f726d616c697a65643a3a6863396330346266316531333338633530e8065273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6833393331636537313666306666626631e9064c73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a69735f76616c696461746f723a3a6831313939326437643965646234323365ea065173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6831396162613737386265343636386630eb062c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6837646662396631373438333433643361ec06683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6837666139653366323631663166346137ed0652616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6834363766373065653562313664333265ee063973705f6e706f735f656c656374696f6e733a3a6e6f64653a3a4e6f64653c413e3a3a726f6f743a3a6836353762643739356162663838333132ef064173705f6e706f735f656c656374696f6e733a3a6e6f64653a3a4e6f64653c413e3a3a69735f706172656e745f6f663a3a6862373337326162336335323434353838f006b70170616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6830623133326664326435626239636231f1067d3c70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833643230393638366537613839643032f2063e70616c6c65745f626162653a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a6835393139376165383938386535393633f3063970616c6c65745f746970733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865653939373134313561373134633238f4063b70616c6c65745f746970733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6864373531303166393166636539626663f5064470616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6865646336393635343532386562363733f6069c013c70616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178696d756d526561736f6e4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839333432336131373765653335373836f7069b013c70616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446174614465706f7369745065724279746544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863313065383237386539666665366433f8069d013c70616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5469705265706f72744465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833313438343239623934343731306630f90696013c70616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a54697046696e6465727346656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831313866366661326264363766306638fa0695013c70616c6c65745f746970733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a546970436f756e74646f776e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830623634333663333230373430353530fb06773c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a457874656e643c3c4120617320736d616c6c7665633a3a41727261793e3a3a4974656d3e3e3a3a657874656e643a3a6831303732383530353835363063336439fc0635736d616c6c7665633a3a536d616c6c5665633c413e3a3a7472795f726573657276653a3a6833396535633963356162343336383137fd06456672616d655f737570706f72743a3a7472616974733a3a456e737572654f726967696e3a3a656e737572655f6f726967696e3a3a6864303364343161333339636632666339fe06ad0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a77697468647261773a3a6862396136656138366162616538653863ff064170616c6c65745f6772616e6470613a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a683939393638636662383564613461646480074470616c6c65745f76657374696e673a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a683934313731376134633138386330383981074670616c6c65745f76657374696e673a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a683939633866306463323936633939356682074f70616c6c65745f76657374696e673a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68393631633832383033393835323764328307b80170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a657874656e645f6c6f636b3a3a683066386430656265323534343066613384074770616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a63616c6c5f66756e6374696f6e733a3a683538386261303939323333323638316685074970616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a73746f726167655f6d657461646174613a3a683535646638323962393638313964393386075270616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a686234643039613832376261363833386287073c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a686337383330306365343165643839656388073f73705f66696e616c6974795f6772616e6470613a3a636865636b5f6d6573736167655f7369676e61747572653a3a683838666661633330363066353037313489074c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f7665726966793a3a68306566363730336231636563376535628a075a70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a68653861633666363634353936306663358b075c70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a68326438346366363330653935613831658c076570616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68303330363838626366316161373034648d07b7013c70616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a556e7369676e6564506861736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68653330653662313434663931333766668e07303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68303766643431353838616530343835348f07303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68363563666361303461643365383230369007303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683834313834653361326539356262376391074d636f72653a3a686173683a3a696d706c733a3a3c696d706c20636f72653a3a686173683a3a4861736820666f722028412c42293e3a3a686173683a3a6833366162666661326664313765373432920731636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a68326230343036313238656364623736629307303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683839313332316231613035373332333494075c3c70616c6c65745f746970733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68623334616537623135666134616535619507653c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6272616e63685f6e6f64653a3a68316432343166346161396165353165359607683c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a657874656e73696f6e5f6e6f64653a3a68666163353931376334663230626131329707633c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6c6561665f6e6f64653a3a683637396435643435653538346539633598077570616c6c65745f746970733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f746970733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a683062353935316364383239613864306199075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68393565653830363537366133666339649a075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68393637346265636432336263323731619b075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68376461383761633531396136366635329c07673c70616c6c65745f76657374696e673a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68323733333634386365333064373365359d076b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a68633666373263666436316633346430359e073970616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e653a3a68643531366230633230316536643861639f074d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6837366633656261633635313664653936a0074a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6839343039653237363331643733643462a1075173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f7365743a3a6865646535616139353838393332656239a20789016672616d655f73797374656d3a3a6c696d6974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f73797374656d3a3a6c696d6974733a3a57656967687473506572436c6173733e3a3a656e636f64655f746f3a3a6862636134306238366437396463386536a3075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866316539636235663166363735666464a407746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a696e736572743a3a6863333663393065356636616135386639a5073c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831633739343534383165643434656439a6073e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865343136643566613662363639366139a707703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837386230633231333864343164663632a807693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831373062383564383464623064336333a907683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6833393361613437373062326535343834aa076d3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6836663536633966373939373337376563ab073d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6866336265333233646139653737343964ac075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863323932666135316334623838333331ad07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832343934393637653333383464626533ae07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865656333626230383165636166623433af07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6830353361376663373932363861613436b0077b70616c6c65745f6772616e6470613a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f6772616e6470613a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6835313464323165636637376662323464b1073e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6834666334663666303636323736616661b2074070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6837623833616162616162323461376361b3074670616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6866303739613931373161326662363464b4074870616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6861353765316366333361366333633063b5075170616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836633066663635353532643130613463b607a3013c70616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835616262373535383462626330336162b7073f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836333265646131653835656164306535b8074170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835316630616631643533306164363337b90776636f72653a3a7074723a3a64726f705f696e5f706c6163653c70616c6c65745f617574686f72736869703a3a5f5f47657442797465537472756374446964536574556e636c65733c706f6c6b61646f745f72756e74696d653a3a52756e74696d653e3e3a3a6834393363313239663536613264613531ba076d3c70616c6c65745f617574686f72736869703a3a5f5f47657442797465537472756374556e636c65733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833396462353861613365393162646334bb073a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a6837376366303362363038396365653739bc073773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a6833646639636462376665356132393865bd0768636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743c413e20666f7220266d757420463e3a3a63616c6c5f6d75743a3a6861666635343962323737363430653163be075f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6865656261323637653632663034333335bf07613c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830373261633761343532623137303830c007623c70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839653935346131356639623933656465c10756636f72653a3a7074723a3a64726f705f696e5f706c6163653c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e673e3a3a6837393664306338396333386437396133c2070c436f72655f76657273696f6ec30712436f72655f657865637574655f626c6f636bc40784016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a696e697469616c697a655f626c6f636b3a3a6834336538626164326166376465326438c5075073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f62617463685f7665726966793a3a6835313338376262656362313437306265c60783016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a6170706c795f65787472696e7369633a3a6861653661663038313261636237646263c7075173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a66696e6973685f62617463685f7665726966793a3a6863363232353331336166663764663032c807516672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e616c697a653a3a6834303430326133633966333064633461c9074573705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f6865783a3a6862386435623830303863633162396663ca0715436f72655f696e697469616c697a655f626c6f636bcb07114d657461646174615f6d65746164617461cc071c426c6f636b4275696c6465725f6170706c795f65787472696e736963cd071b426c6f636b4275696c6465725f66696e616c697a655f626c6f636bce0720426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373cf071c426c6f636b4275696c6465725f636865636b5f696e686572656e7473d00718426c6f636b4275696c6465725f72616e646f6d5f73656564d1072b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6ed2075373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6836633731633462363732346364653561d307214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572d4071850617261636861696e486f73745f76616c696461746f7273d5071e50617261636861696e486f73745f76616c696461746f725f67726f757073d6072050617261636861696e486f73745f617661696c6162696c6974795f636f726573d7072750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f64617461d8072650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f757470757473d9072550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c64da071a50617261636861696e486f73745f73657373696f6e5f696e666fdb071d50617261636861696e486f73745f76616c69646174696f6e5f636f6465dc072850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f6465dd072c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c697479de071e50617261636861696e486f73745f63616e6469646174655f6576656e7473df071a50617261636861696e486f73745f646d715f636f6e74656e7473e0072c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e7473e1071e4772616e6470614170695f6772616e6470615f617574686f726974696573e207384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963e307274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66e4074470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a70726f76653a3a6862353563613736306565303739663864e50715426162654170695f636f6e66696775726174696f6ee6071b426162654170695f63757272656e745f65706f63685f7374617274e70715426162654170695f63757272656e745f65706f6368e80712426162654170695f6e6578745f65706f6368e90724426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66ea0735426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963eb0721417574686f72697479446973636f766572794170695f617574686f726974696573ec072153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973ed074e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f67656e65726174653a3a6863316664303463336532393065383031ee074e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f67656e65726174653a3a6830313637663336366230613437643830ef071f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b657973f0071d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365f107205472616e73616374696f6e5061796d656e744170695f71756572795f696e666ff207275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c73f307830170616c6c65745f636f6c6c6563746976653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f636f6c6c6563746976653a3a4572726f723c542c493e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6837366366306236343239633336346133f4075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838323564643865386538326634636137f5075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835646635343932306635313230396635f6075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839623866663838306462356462366633f7074c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a6835383738633938646139636463383363f8074670616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a646f5f617070726f76655f70726f706f73616c3a3a6838653139343831643130326339306638f9074270616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a72656d6f76655f70726f706f73616c3a3a6865303531363937393766396365393461fa072c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6864343766383466303632386139386262fb075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837663362303763353866343366666461fc074b6672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6863383931636133346333653565313438fd07830170616c6c65745f636f6c6c6563746976653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f636f6c6c6563746976653a3a4572726f723c542c493e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6833343662323764346164313939386465fe075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866666531316339363163666533383837ff075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683436303235633831373737643065306480085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683061653464613831333762613265323881084c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a683066386131616664366164376537323382084670616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a646f5f617070726f76655f70726f706f73616c3a3a683062373262663362306536303635616583084270616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a72656d6f76655f70726f706f73616c3a3a68396335383162363865316262663662348408a2013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a686131333432636236633538333033626285085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866306131636265626437386138336561860896013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a7365745f7072696d653a3a683561303064343761363034353233336687084170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a683139386339666561356130613965366388084370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a686131316338626234366439366163306589086f3c70616c6c65745f636f6c6c6563746976653a3a5f5f47657442797465537472756374566f74696e673c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333436313139666638363463346633388a08723c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68326163316338343739373230326563378b084370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a68626233626332356262373738636234308c086e3c70616c6c65745f636f6c6c6563746976653a3a5f5f476574427974655374727563745072696d653c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333738613237356232326266373862628d08733c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c4f663c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68383939653138373865333633323838668e084d3c706f6c6b61646f745f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68346635346532643136633036353534392e363937328f08643c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683665326539326334656339383738303690083d70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f7075626c69633a3a68343565346563316566663739383464659108766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a683433396565613161396532623065363992083b70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6261636b696e675f666f723a3a683336636231396430393338623133383693087f70616c6c65745f64656d6f63726163793a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f64656d6f63726163793a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a686366613838626465313465613938636594085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683137653066643032383435373265656395084170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a696e6a6563745f7265666572656e64756d3a3a683235333066646533623766313861313596083f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6c61756e63685f65787465726e616c3a3a683831636464306133346563613035636497084170616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a646f5f656e6163745f70726f706f73616c3a3a686631343139626261653835626136663198085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68383937653834613432613437396661339908746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68323861656363306435656436313465359a084470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a71756572793a3a68633666616435613335656264623861319b087c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c73705f747269653a3a4c61796f75743c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e3e3e3a3a68623036343462396563343165383362349c08543c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e20617320747269655f64623a3a547269654d75743c4c3e3e3a3a696e736572743a3a68303064623137386465633734336631659d083c747269655f64623a3a7472696564626d75743a3a4e6f646553746f726167653c483e3a3a616c6c6f633a3a68393864623333663535313233366138329e0860747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a72696768745f697465723a3a68616238393463313266656332346637319f0872747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a617070656e645f6f7074696f6e616c5f736c6963655f616e645f6e6962626c653a3a6836653736666533383834643761313239a00841747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a636f6d6d69745f6368696c643a3a6839653238373934313839323633326237a1085c747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a64726f705f6c617374733a3a6833323163613533323735333564343337a2083e70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830343832343138376665383763653430a3084070616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831643935653165343136663162303161a4086e3c70616c6c65745f64656d6f63726163793a3a5f5f47657442797465537472756374566f74696e674f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832643462356236373332373237316463a508713c70616c6c65745f64656d6f63726163793a3a5f5f476574427974655374727563745075626c696350726f70733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861333236303938373931393338386337a6084970616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836343035316338316565616332373862a70896013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178566f74657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830313333636361373338303238323064a8089b013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a436f6f6c6f6666506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836616232356135633538313336343532a908a3013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a46617374547261636b566f74696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834656635643263636136636536636534aa089c013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831323837323963353639616336303935ab089a013c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c61756e6368506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863616336353031653831646635323936ac089f0170616c6c65745f64656d6f63726163793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f64656d6f63726163793a3a507265696d6167655374617475733c4163636f756e7449642c42616c616e63652c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6838333237653339333564346164663135ad083e747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f61743a3a6832643664353862306532313263386564ae083c747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a66726f6d5f656e636f6465643a3a6865343062323736383762663765313037af0845747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f696e73706563746f723a3a6837393432366333356233616362323162b008363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6837646562303534633066303162313865b108376861736862726f776e3a3a7365743a3a486173685365743c542c533e3a3a696e736572743a3a6866333364323638623538366661306235b2083e747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a696e6c696e655f6f725f686173683a3a6861366133313430376230646333353037b30835747269655f64623a3a7472696564626d75743a3a656d7074795f6368696c6472656e3a3a6835626562303166386464643235656631b40865747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a746f5f73746f7265645f72616e67653a3a6864396463663637383466636331636465b5083e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6832636234393366356435393163626233b608613c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861653239386236663234623935653462b708746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6833363039663237306637383536363065b8085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830323631656634626633323963623736b9085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862323761343537616337343939323230ba085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830363663383638633766336134336562bb084a70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7265647563655f757073747265616d5f64656c65676174696f6e3a3a6835336239336431666330376435633136bc084370616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6e6f74655f707265696d6167655f696e6e65723a3a6864336336646661373232343834383165bd084c70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a6e6f74655f696d6d696e656e745f707265696d6167655f696e6e65723a3a6832626130643239626263616437363364be085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862346565313361383234636332306133bf083f70616c6c65745f64656d6f63726163793a3a4d6f64756c653c543e3a3a7472795f72656d6f76655f766f74653a3a6861346562643962366133653032613635c00844636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d653a3a4576656e743e3a3a6836303961353238303039633736633937c108723c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861333432383834623135346138336439c208426672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6839626431643765366561363131396464c308446672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6865366366316461646338633236313635c4084d6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6830393934343264396266616462353166c50899013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a56657273696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864643535663730653463633739626439c6089a013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446257656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833343233623861666163366636633539c708a0013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b48617368436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861303838663336396165656430336164c8089d013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830303437613765363533353462343462c9089e013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b5765696768747344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866323738396566366239353234653861ca083570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a6861306535393762633130323039313466cb084470616c6c65745f7574696c6974793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6837376230396663383066666662383562cc084573705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f6e756d3a3a6837663964343033643738623936343163cd085373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a6831383334336639663463383961363534ce084373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6f743a3a6865373734303961613634313366316635cf084b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6368616e6765735f726f6f743a3a6861313365373864363132663964373063d0084170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6834626630666562363565346335356635d1084370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6832656262643239623937666239643561d2085170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833653263393930613663303034306132d3086073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6862326437663338623634366537343762d408653c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6831316330663165316463613862623066d5083d3c5420617320636f72653a3a636f6e766572743a3a547279496e746f3c553e3e3a3a7472795f696e746f3a3a6837343439376331393031616237353061d6083773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6839313462303231323362636235353463d7084473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a6834353636623433636231353966383365d808413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833386136323834363330313937393864d9084273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6865663666663431653361616162396435da087773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a46726f6d46464956616c756520666f7220543e3a3a66726f6d5f6666695f76616c75653a3a6837666662626535633239343833356365db08543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832363831323331623561376363343334dc087773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a496e746f46464956616c756520666f7220543e3a3a696e746f5f6666695f76616c75653a3a6865336635623032656337336461316337dd08323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6831383161396339356337373439376137de084573705f696f3a3a616c6c6f6361746f723a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a667265653a3a6834613665353738343364633938366265df084773705f696f3a3a616c6c6f6361746f723a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6d616c6c6f633a3a6839386165653164666364396236386334e00830616c6c6f633a3a7665633a3a5665633c542c413e3a3a726573657276653a3a6833666437333332326536333036393532e108473c73705f72756e74696d653a3a44697370617463684572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832623636363136623332626131336165e208573c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833313066316330396365373161616361e30856747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a707573683a3a6833656264343631643335346637366166e408095f5f6c736872746933e5084c636f6d70696c65725f6275696c74696e733a3a696e743a3a7370656369616c697a65645f6469765f72656d3a3a753132385f6469765f72656d3a3a6866353635306232313761613464643134e608095f5f756d6f64746933e708095f5f75646976746933e808085f5f6d756c746933e908066d656d637079ea08076d656d6d6f7665eb08066d656d736574ec080462636d70ed08095f5f6173686c74693300550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e35322e302d6e696768746c79202865333761313363633320323032312d30322d323829" - } -} diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json deleted file mode 100644 index 3c7d44a3c866..000000000000 --- a/node/service/res/rococo.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "name": "Rococo", - "id": "rococo_v1_6", - "chainType": "Live", - "bootNodes": [ - "/ip4/34.90.151.124/tcp/30333/p2p/12D3KooWF7BUbG5ErMZ47ZdarRwtpZamgcZqxwpnFzkhjc1spHnP", - "/ip4/34.90.137.14/tcp/30333/p2p/12D3KooWLcpkpvjr5ccgtUdTSYtNDjEdsDcPNrt2Rb7yXuAf7bUE", - "/ip4/35.204.67.254/tcp/30333/p2p/12D3KooWGjEEDmNbBkXLM1uKMseK9iYD3osKA4JGdGKMZDCusjd6", - "/ip4/34.90.121.39/tcp/30333/p2p/12D3KooWBhkZQydNHDR3XSehnrfj1KNFCdpwgDrYpX54FrUR1FRS", - "/ip4/34.91.145.35/tcp/30333/p2p/12D3KooWBuLAMevZexnFKCgTyoz3AnHQn98D9cfe1Mg3kPoCjkwf", - "/ip4/34.91.77.80/tcp/30333/p2p/12D3KooWA5BAM71y9NtV5NH6EjANgYKRZ8jNLJ5z8GJ5RPdjt63n", - "/ip4/34.91.84.25/tcp/30333/p2p/12D3KooWSV4VqhBHZKKBsZKmVU462qRW9PmXTSuYvuajt1P93djA", - "/ip4/34.91.97.19/tcp/30333/p2p/12D3KooWD6wC88atMMyVeP6ZKg9sK7QmUL8x8m1RxMW8rhv2vWyg" - ], - "telemetryEndpoints": [ - [ - "/dns/telemetry.polkadot.io/tcp/443/x-parity-wss/%2Fsubmit%2F", - 0 - ] - ], - "protocolId": "rococo", - "properties": { - "ss58Format": 42, - "tokenDecimals": 12, - "tokenSymbol": "ROC" - }, - "forkBlocks": null, - "badBlocks": null, - "consensusEngine": null, - "lightSyncState": null, - "genesis": { - "raw": { - "top": { - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2371e21684d2fae99bcb4d579242f74ad47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2762c81376aaa894b6f64c67e58cc650878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0x1405f2411d0af5a7ff397e7c9dc68d19878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0xd84ad3579da5beed16cea616d20c3c89878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0x2099d7f109d6e535fb000bba623fd440878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x63f78c98723ddc9073523ef3beefda0c878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x3a636f6465": "0x0061736d010000000187033760037f7f7f017f60027f7f017f60017f0060027f7f0060057f7f7f7f7f0060047f7f7f7f0060037f7f7f0060017f017e60027e7e006000017f60027f7e017f60037f7e7f017f60027f7f017e60037f7f7e017e60000060017f017f60027e7e017e60037e7e7e0060017e017f60017e0060017e017e60047f7e7e7e017f60027f7e017e60037f7e7e006000017e60037e7e7f017e60027f7e0060027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f0060037e7f7f0060047f7f7f7e0060067f7f7e7e7f7f017f60047f7f7e7e0060087f7f7f7f7f7f7e7e0060047f7e7f7f017f60037f7f7e0060057f7f7f7e7e0060037e7f7f017f60047f7e7f7f0060077f7f7e7e7e7f7f0060077f7e7e7e7e7e7e00600b7f7f7f7f7f7f7f7f7f7f7f0060067f7f7e7e7f7f0060097f7f7e7e7e7f7f7f7f0060037e7e7f0060047f7f7f7f017e60067f7f7f7e7e7f0060047f7e7e7f0060087f7f7f7f7f7e7e7f0060047e7f7e7f0060067f7f7f7f7f7f017f60037f7e7e017f60057f7e7e7e7e0002e80f3103656e76066d656d6f727902001303656e76206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f31000803656e761f6578745f6c6f6767696e675f6d61785f6c6576656c5f76657273696f6e5f31000903656e76236578745f63727970746f5f65636473615f67656e65726174655f76657273696f6e5f31000a03656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31000a03656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31000b03656e76286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f31000903656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31000c03656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31000a03656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31000d03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f32000b03656e76276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f31000e03656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000203656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31000f03656e76296578745f64656661756c745f6368696c645f73746f726167655f636c6561725f76657273696f6e5f31000803656e76276578745f64656661756c745f6368696c645f73746f726167655f6765745f76657273696f6e5f31001003656e762c6578745f64656661756c745f6368696c645f73746f726167655f6e6578745f6b65795f76657273696f6e5f31001003656e76276578745f64656661756c745f6368696c645f73746f726167655f7365745f76657273696f6e5f31001103656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31001203656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31001203656e76206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31001203656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31001203656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31001203656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31001203656e762a6578745f747269655f6b656363616b5f3235365f6f7264657265645f726f6f745f76657273696f6e5f31001203656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31001303656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31001303656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31001403656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31000903656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001503656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001603656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31001703656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001803656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31001403656e761c6578745f73746f726167655f617070656e645f76657273696f6e5f31000803656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31001403656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31001303656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31001303656e76286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31000e03656e761c6578745f73746f726167655f6578697374735f76657273696f6e5f31001203656e76196578745f73746f726167655f6765745f76657273696f6e5f31001403656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31001403656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001903656e762a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f31000e03656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001803656e76196578745f73746f726167655f7365745f76657273696f6e5f31000803656e76276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f31000e03656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f310017039c0a9a0a0e0e0e0e0e0606060f020300060400010103010303030301030501001a0100011b02071c1d0600040101010f0f0106061e01010101060101001c0101000101001f0101010103010f060603030301060303060603060606060606010305030201030206060504200401010103060f010101010106030302060306030302030602030303020606060306030303030306020303020603030206030606030606060606060306060306030703060503030306050303030605030303010101060202060306060c2106062203010f02020306030303030306030303030303030303030203030303030306030303030706040317030f0605030606230103030603020305030306020306060201030606030703060f0301030603032402050303060303060301060103060603030303030603030301060603060301030303030304030303031e0305050601050103020c0c03030302020302020302020203020303030303030303010103030303030303030303020103030303030303030303030302020303030303060303030303030303060603030303030303030303030302020303250e030202020202060506060303060306030602060206030604030003060306020e0303030603030202020302050306032602030202020303030303030e0203031d030303030303030303020203020300030306060306010306040306050202060606030e020203030305032701280203030e03020103060606030603030306060304020202020203030302020303060303030103020303030303010306030102021d1d0602010202080603030302030503020703050106030f020e291a032a02020203030202030302251a1a02030302030305021e0603060606060306060603030302020303030103030303062b0103031e04030403030503030107070707020302030505020e0202020301010106030303030303030302030203030303030301030101032222030503030306030606020202020202020c030c020e03030209020303030c0c06030c050c030c0c0c020306022c020101030c0509030301030c0c030c030303030c020c0c0c030c030c0c030302030c0c0c030c0c0c030f02010c05030c0c0c030c0c0c0c030c0606060c0c030c01020c0302010c0602020c0c0c0c0c0c0c0303030303030302020202020202020202020202020202020202020202010101010103030e0e0e0e0e030203060f06060f0503030506010f040606062d06060303030306022e0e030c2f06030202020202020202020202020202020202020202020202020202130202020202020202020202020206053002060603030303030303030303030303030203021805031a020202070303060203030202060603220603060606060303033106030603063206030305030103030601060406050306060303220303010302020202030202030203030303020202030303030203010103030203030e0e050602331a030f03020534020401040f0203030206020203030503030202030304030303060303030203030302010201020202030202030320040f020306030303030303030303020202030202030303030303020203030202030303010101010103031e0305060402030603030e0e0e02030404020203130e02020203051d0303011e1e041e060305060602020202030405010202020302020203030203060203030602020203030303030303010102020302020305050603060003020302050002060f06030101011a0303030104010101030001010101030f0106050302352605062206313636000000003136360407017001b502b5020619037f01418080c0000b7f0041b0feca000b7f0041b0feca000b07a20d320c436f72655f76657273696f6e00870612436f72655f657865637574655f626c6f636b00890615436f72655f696e697469616c697a655f626c6f636b009406114d657461646174615f6d657461646174610095061c426c6f636b4275696c6465725f6170706c795f65787472696e7369630098061b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b009a0620426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373009c061c426c6f636b4275696c6465725f636865636b5f696e686572656e7473009d062b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e009e06214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200a8061850617261636861696e486f73745f76616c696461746f727300af061e50617261636861696e486f73745f76616c696461746f725f67726f75707300b0062050617261636861696e486f73745f617661696c6162696c6974795f636f72657300b2062750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f6461746100b7062650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f75747075747300b9062550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c6400ba061d50617261636861696e486f73745f76616c69646174696f6e5f636f646500bb062850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f646500bd062c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c69747900bf061e50617261636861696e486f73745f63616e6469646174655f6576656e747300c0061a50617261636861696e486f73745f73657373696f6e5f696e666f00c5061a50617261636861696e486f73745f646d715f636f6e74656e747300c6062c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e747300c7062550617261636861696e486f73745f76616c69646174696f6e5f636f64655f62795f6861736800c9061e4772616e6470614170695f6772616e6470615f617574686f72697469657300ca06384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300cb06274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600d00615426162654170695f636f6e66696775726174696f6e00d3061b426162654170695f63757272656e745f65706f63685f737461727400d40615426162654170695f63757272656e745f65706f636800d50612426162654170695f6e6578745f65706f636800d70624426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600d80635426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300d90621417574686f72697479446973636f766572794170695f617574686f72697469657300da062153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300dc061f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797300e0061642656566794170695f76616c696461746f725f73657400e106154d6d724170695f67656e65726174655f70726f6f6600e306134d6d724170695f7665726966795f70726f6f6600e6061d4d6d724170695f7665726966795f70726f6f665f73746174656c65737300ea0620526f636f636f46696e616c6974794170695f626573745f66696e616c697a656400ee0621526f636f636f46696e616c6974794170695f69735f6b6e6f776e5f68656164657200ef0620576f636f636f46696e616c6974794170695f626573745f66696e616c697a656400f00621576f636f636f46696e616c6974794170695f69735f6b6e6f776e5f68656164657200f1061d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500f206205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00f306275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c7300f406195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000a5f5f646174615f656e6403010b5f5f686561705f62617365030209d304010041010bb4024f426158a80a595a6273a001a101e6029d02b802a0039a01ec02c20298019f014772d102d3029403e803be057199018a01bc04ea04ad06f5049303e808a201cf06e4064ae906f205ce09c205c4059e016766d6043e3f40744d52686a6b6c6d6e8f0190019101aa0ad9049702a8098203d804840a850389038b0383029502880487048604930299029e04a909d7049202f2088d0285028902aa099802930592059e059d05a105a005bb09a604d308b909da05ea05ba09f005910792079307940795079607ff09fe09fc06800a990a90058f059105cf05a309a209a409e709d805d705fd06d9058606be08bd08fe06bf08ff079c059f05db04da04f7048d04ff06d504d4048007f604f108f00881078909f808f70882078b098e0a8d0afa09d609b205830789059b049a04e4038309b309b20984078d098b0a8a0a9d04d008af09ae0985078c09e905c208c1088607c4088508ca08c9088707cb088608f309f2098807f409e8098803870389078a03ed01e705d5058f088e088a07dd088408e909f009810380038603ee0183038403b404b5048b07a709a6098c07c309d509d4098d07e609d0098e07840483048f078504ae04d603d5039007ad04860287028a029002c008c308c808c708c608c508cf08ce08cd08cc08d108b609b709b809f3088609850984098809d2088a09a20aa509ac09ab09b109b009b509b409d709ee099a0a9b0a900a950aeb09910a940a960a980af1098b02f609f5099402910288028e02860a850a830a820a810aae0a880a890a8c0a8f0a970a6364a30aa10aac0aad0aaf0ab10aab0ab20ab00a0acbb6729a0a05001031000b05001032000b05001033000b1700410141b4d6ca00410741bbd6ca00412210a90a00000b11004180eaca004111418080c0001035000b4701017f230041206b22032400200341146a4100360200200341f4ddca00360210200342013702042003200136021c200320003602182003200341186a360200200320021043000bb90101027f230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024108200241084b1b21020240024020010d00200341003602100c010b200341106a41086a410136020020032001360214200320002802003602100b20032002200341106a1037200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001360200200341206a24000f0b1034000ba90101027f4100210302400240200141004e0d00410121010c010b0240024002400240024002400240200228020022030d0020010d010c050b200228020422040d012001450d040b2001103822020d010c020b200110382202450d0120022003200410c30a1a200310390b200121030c020b2000200136020441012103410121010c020b41012102410021030b20002002360204410021010b20002001360200200041086a20033602000b06002000100d0b06002000100c0be00201067f230041206b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b0240024002400240024002400240200141146a2802000d00200621070c010b2004450d02410021054101210402402006410f4b0d00200341046a280200450d020b200620066a22072006490d010b2007417f4c0d02024020070d0041002105410121040c010b20072105200710382204450d030b20004100360208200020043602002000200536020420022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41bc80c000200241086a103b0d03200241206a24000f0b4100410041ac80c000103c000b1034000b1030000b41d480c0004133200241086a418881c000419881c000103d000bcc0501097f230041306b22032400200341246a2001360200200341033a002820034280808080800437030820032000360220410021042003410036021820034100360210024002400240024020022802082205450d0020022802002106200228020422072002410c6a2802002208200820074b1b2209450d01200020062802002006280204200128020c1100000d02200641086a21002002280210210a20092108034020032005411c6a2d00003a00282003200541046a290200422089370308200541186a28020021024100210441002101024002400240200541146a2802000e03010002010b2002410374210b41002101200a200b6a220b2802044101470d01200b28020028020021020b410121010b2003200236021420032001360210200541106a28020021020240024002402005410c6a2802000e03010002010b20024103742101200a20016a22012802044101470d01200128020028020021020b410121040b2003200236021c20032004360218200a20052802004103746a2202280200200341086a20022802041101000d0302402008417f6a22080d00200921040c030b200541206a2105200041046a210220002802002101200041086a2100200328022020012002280200200328022428020c110000450d000c030b0b2002280200210620022802042207200241146a2802002205200520074b1b2208450d0020022802102104200020062802002006280204200128020c1100000d0141002105200821020340200420056a2200280200200341086a200041046a2802001101000d0202402002417f6a22020d00200821040c020b200620056a2100200541086a21052003280220200041086a2802002000410c6a280200200328022428020c110000450d000c020b0b0240200720044d0d002003280220200620044103746a22052802002005280204200328022428020c1100000d010b410021050c010b410121050b200341306a240020050b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41023602002003420237020c200341ac85c000360208200341023602242003200341206a360218200320033602282003200341046a360220200341086a20021043000b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c20054180d6ca00360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041043000b5101027f02402000280200220341046a280200200341086a220428020022006b20024f0d002003200020021036200428020021000b200328020020006a2001200210c30a1a2004200020026a36020041000be90201037f230041106b220224002000280200210002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c020b024020002802082203200041046a280200470d002000200341011036200028020821030b2000200341016a360208200028020020036a20013a00000c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010b0240200041046a280200200041086a220428020022036b20014f0d002000200320011036200428020021030b200028020020036a2002410c6a200110c30a1a2004200320016a3602000b200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41bc80c000200241086a103b2101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41023602002002420337020c2002418c82c000360208200241023602242002200241206a3602182002200241046a36022820022002360220200241086a41a482c0001043000b0b002000350200200110500b3401017f230041106b220224002002200136020c20022000360208200241bc85c000360204200241f4ddca0036020020021051000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41023602002002420337020c200241fc82c000360208200241023602242002200241206a3602182002200241046a36022820022002360220200241086a419483c0001043000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41023602002002420337020c200241d083c000360208200241023602242002200241206a3602182002200241046a36022820022002360220200241086a41e883c0001043000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41023602002002420337020c2002418c84c000360208200241023602242002200241206a3602182002200241046a36022820022002360220200241086a41a484c0001043000b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000bd70101037f230041206b220224000240200141016a22032001490d00200041046a280200220441017422012003200120034b1b22014104200141044b1b220141ffffffff01712001464103742103200141037421010240024020040d00200241003602100c010b200241106a41086a410836020020022004410374360214200220002802003602100b200220012003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410376360200200241206a24000f0b1034000bc70101027f0240024002400240024002402002450d0020014100480d01024002400240200328020022040d002001450d010c050b200328020422050d0120010d040b200221030c050b200110382203450d0320032004200510c30a1a200410390c040b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2001103822030d010b2000200136020441012103200221010c010b20002003360204410021030b20002003360200200041086a20013602000b880301027f230041106b2202240002400240024002400240024020002802000e050102030400010b200128021841c984c00041182001411c6a28020028020c11000021010c040b200128021841e184c000410e2001411c6a28020028020c11000021010c030b200128021841ef84c00041112001411c6a28020028020c11000021010c020b20022001280218418085c000410a2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a418c85c000104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b2001280218419c85c000410e2001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bee0202057f027e230041c0006b220324000240024020002d0008450d0020002802042104410121050c010b20002802042104024002400240200028020022062802002207410471450d0020040d0220062802184194a0c00041022006411c6a28020028020c110000450d0141012105410021040c030b41012105200628021841d79fc0004193a0c00020041b4102410120041b2006411c6a28020028020c1100000d0220012006200228020c11010021050c020b200628020021070b41012105200341013a0017200341346a41dc9fc00036020020032007360218200320062902183703082003200341176a3602102006290208210820062902102109200320062d00203a00382003200628020436021c20032009370328200320083703202003200341086a3602302001200341186a200228020c1101000d00200328023041f49fc0004102200328023428020c11000021050b200020053a00082000200441016a360204200341c0006a240020000ba00204017e017f017e037f42002102200041046a4200370200200041002802fcad4936020041002103024020014203540d004202210441002105034020042102200541036a2106200541016a2203210542012006413f71ad86427e7c22042001540d000b0b20004100104820002000280208220741016a22053602082000280200220620074103746a200237030002402003450d002001427f7c2104200041046a210703400240200242022003413f71ad867c427f7c22022004580d0003402003450d03427e2003417f6a2203413f71ad8620027c22022004560d000b0b024020052007280200470d0020002005104820002802002106200028020821050b200620054103746a20023703002000200028020841016a220536020820030d000b0b0b15002000280200220028020020002802082001104e0bc108020d7f017e41012103024002402002280218220441222002411c6a280200220528021022061101000d000240024020010d00410021070c010b200020016a210820002109410021072000210a4100210b02400340200a41016a210c024002400240200a2c000022024100480d00200241ff0171210d0c010b02400240200c2008470d00410021032008210c0c010b200a41026a210c200a2d0001413f7121030b2002411f71210e0240200241ff0171220241e0014f0d002003200e41067472210d0c010b02400240200c2008470d004100210f2008210a0c010b200c41016a210a200c2d0000413f71210f0b200f20034106747221030240200241f0014f0d002003200e410c7472210d200a210c0c020b02400240200a2008470d00410021022008210c0c010b200a2d0000413f712102200a41016a220c210a0b2003410674200e411274418080f0007172200272220d418080c400470d010c030b200c210a0b41f400210f4102210202400240024002400240024002400240200d41776a0e1a0601040400040404040404040404040404040404040404040402030b41f200210f0c050b41ee00210f0c040b4122210f0c030b200d41dc00460d010b0240200d105b0d00200d105c0d030b200d41017267410276410773ad4280808080d00084211041032102200d210f0c010b41dc00210f0b02400240200b2007490d0002402007450d0020072001460d00200720014f0d01200020076a2c000041bf7f4c0d010b0240200b450d00200b2001460d00200b20014f0d012000200b6a2c000041bf7f4c0d010b2004200020076a200b20076b200528020c110000450d0141010f0b200020012007200b41d8a0c0001057000b03402002210e4101210341dc00210741012102024002400240024002400240200e0e0402010500020b02400240024002402010422088a741ff01710e06050302010006050b201042ffffffff8f60834280808080308421104103210241f50021070c070b201042ffffffff8f60834280808080208421104103210241fb0021070c060b413041d700200f2010a72202410274411c7176410f712207410a491b20076a2107024020020d00201042ffffffff8f60834280808080108421100c050b2010427f7c42ffffffff0f832010428080808070838421100c040b201042ffffffff8f608321104103210241fd0021070c040b41002102200f21070c030b410121020240200d418001490d0041022102200d418010490d0041034104200d41808004491b21020b2002200b6a21070c040b201042ffffffff8f60834280808080c0008421100b410321020b2004200720061101000d050c000b0b200b20096b200c6a210b200a2109200a2008470d000b0b2007450d0020072001460d00200720014f0d02200020076a2c000041bf7f4c0d020b410121032004200020076a200120076b200528020c1100000d0020044122200611010021030b20030f0b200020012007200141c8a0c0001057000b0d0020002802001a037f0c000b0bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a20004290ce0080220442f0b17f7e20007ca7220641ffff037141e4006e220741017441fe85c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441fe85c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441fe85c0006a2f00003b00000b02400240200541094a0d00200241096a2003417f6a22036a200541306a3a00000c010b200241096a2003417e6a22036a200541017441fe85c0006a2f00003b00000b200141f4ddca004100200241096a20036a412720036b10532103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141ecddca003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a103a410141b4d6ca0041072001280210200128021810a90a00000b0c0042c0bda29dd583dac54a0bf50401077f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001476a2108200a41016a210a2009417f6a22090d000b0b200820076a21070b412b418080c40020061b21060240024020002802084101460d004101210a200020062001200210540d012000280218200320042000411c6a28020028020c1100000f0b02402000410c6a280200220820074b0d004101210a200020062001200210540d012000280218200320042000411c6a28020028020c1100000f0b024002402005410871450d00200028020421052000413036020420002d0020210b4101210a200041013a0020200020062001200210540d02200820076b41016a210a2000411c6a2802002108200028021821090340200a417f6a220a450d02200941302008280210110100450d000b41010f0b4100210a200820076b22092105024002400240410120002d0020220820084103461b4103710e03020100020b2009410176210a200941016a41017621050c010b410021052009210a0b200a41016a210a2000411c6a2802002109200028020421082000280218210702400340200a417f6a220a450d01200720082009280210110100450d000b41010f0b4101210a2008418080c400460d01200020062001200210540d01200720032004200928020c1100000d014100210a0240034002402005200a470d002005210a0c020b200a41016a210a200720082009280210110100450d000b200a417f6a210a0b200a200549210a0c010b4101210a200920032004200828020c1100000d002000200b3a00202000200536020441000f0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41023602002003420237020c200341c887c000360208200341023602242003200341206a3602182003200341046a36022820032003360220200341086a20021043000b9d08010a7f20002802102103024002400240200028020822044101460d0020034101460d012000280218200120022000411c6a28020028020c1100000f0b20034101470d010b200120026a2105024002400240200041146a28020022060d0041002107200121030c010b41002107200121030340200322082005460d02200841016a2103024020082c00002209417f4a0d00200941ff017121090240024020032005470d004100210a200521030c010b200841026a210320082d0001413f71210a0b200941e001490d000240024020032005470d004100210b2005210c0c010b200341016a210c20032d0000413f71210b0b0240200941f0014f0d00200c21030c010b02400240200c2005470d004100210c200521030c010b200c41016a2103200c2d0000413f71210c0b200a410c742009411274418080f0007172200b41067472200c72418080c400460d030b200720086b20036a21072006417f6a22060d000b0b20032005460d00024020032c00002208417f4a0d0002400240200341016a2005470d0041002103200521060c010b200341026a210620032d0001413f7141067421030b200841ff017141e001490d000240024020062005470d0041002106200521090c010b200641016a210920062d0000413f7121060b200841ff017141f001490d00200841ff01712108200620037221030240024020092005470d00410021050c010b20092d0000413f7121050b20034106742008411274418080f0007172200572418080c400460d010b024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b0240024002402002450d004100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000b2008200028020c22054f0d014100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000c030b0b41002108200028020c22050d010b2000280218200120022000411c6a28020028020c1100000f0b41002103200520086b22082106024002400240410020002d0020220720074103461b4103710e03020100020b20084101762103200841016a41017621060c010b41002106200821030b200341016a21032000411c6a28020021072000280204210820002802182105024003402003417f6a2203450d01200520082007280210110100450d000b41010f0b4101210302402008418080c400460d00200520012002200728020c1100000d004100210302400340024020062003470d00200621030c020b200341016a2103200520082007280210110100450d000b2003417f6a21030b200320064921030b20030bc80801057f230041f0006b220524002005200336020c20052002360208024002402001418102490d00410020016b21064180022107024003400240200720014f0d00200020076a2c000041bf7f4c0d00200721080c020b2007417f6a210820074101460d01200620076a21092008210720094101470d000b0b20052008360214200520003602102005418a88c000360218410521070c010b2005200136021420052000360210200541f4ddca00360218410021070b2005200736021c0240024002400240200220014b22070d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200520023602202002450d0220022001460d02200141016a210903400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210720024101460d0420092002462108200721022008450d000c040b0b20052002200320071b360228200541306a41146a4103360200200541c8006a41146a4104360200200541d4006a4104360200200542033702342005419088c0003602302005410236024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a20041043000b200541e4006a4104360200200541c8006a41146a4104360200200541d4006a4102360200200541306a41146a410436020020054204370234200541a888c0003602302005410236024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a20041043000b200221070b024020072001460d00410121094100210602400240200020076a22022c000022084100480d002005200841ff01713602240c010b200020016a220921010240200241016a2009460d00200241026a210120022d0001413f7121060b2008411f71210202400240200841ff017141e0014f0d00200620024106747221080c010b4100210020092103024020012009460d00200141016a210320012d0000413f7121000b200020064106747221010240200841ff017141f0014f0d0020012002410c747221080c010b41002108024020032009460d0020032d0000413f7121080b20014106742002411274418080f00071722008722208418080c400460d020b20052008360224410121092008418001490d00410221092008418010490d0041034104200841808004491b21090b200520073602282005200920076a36022c200541306a41146a4105360200200541ec006a4104360200200541e4006a4104360200200541c8006a41146a4106360200200541d4006a410736020020054205370234200541c888c0003602302005410236024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541286a3602582005200541246a3602502005200541206a360248200541306a20041043000b41b4fcca00412b20041035000b100020012000280200200028020410560b7c01037f230041206b22022400024020002802002001105d0d002001411c6a2802002103200128021821042002411c6a4100360200200241f4ddca003602182002420137020c200241b089c00036020820042003200241086a103b0d0020002802042001105d2101200241206a240020010f0b200241206a240041010ba20403047f017e017f4101210202402001280218220341272001411c6a28020028021022041101000d0041f40021054102210102400240024002400240024002402000280200220041776a0e1f06010404000404040404040404040404040404040404040404040404040402030b41f2002105410221010c050b41ee0021050c030b41272105410221010c030b41dc002105200041dc00460d010b024002402000105b450d00200041017267410276410773ad4280808080d0008421060c010b02402000105c450d0041012101200021050c030b200041017267410276410773ad4280808080d0008421060b41032101200021050c010b410221010b03402001210741dc002100410121024101210102400240024002400240024020070e0402010500020b02400240024002402006422088a741ff01710e06050302010006050b200642ffffffff8f608342808080803084210641f50021000c060b200642ffffffff8f608342808080802084210641fb0021000c050b413041d70020052006a72201410274411c7176410f712200410a491b20006a2100024020010d00200642ffffffff8f60834280808080108421060c050b2006427f7c42ffffffff0f832006428080808070838421060c040b200642ffffffff8f6083210641fd0021000c030b41002101200521000c030b2003412720041101000f0b200642ffffffff8f60834280808080c0008421060b410321010b200320002004110100450d000b0b20020bec0201057f2000410b74210141002102411f2103411f210402400240034002400240200341017620026a220341027441cc95c0006a280200410b74220520014f0d00200341016a21020c010b20052001460d02200321040b200420026b2103200420024b0d000c020b0b200341016a21020b0240024002402002411e4b0d002002410274210341b105210402402002411e460d00200341d095c0006a28020041157621040b4100210502402002417f6a220120024b0d002001411f4f0d03200141027441cc95c0006a28020041ffffff007121050b02402004200341cc95c0006a280200411576220241016a460d00200020056b2101200241b105200241b1054b1b21032004417f6a210541002104034020032002460d032004200241d896c0006a2d00006a220420014b0d012005200241016a2202470d000b200521020b20024101710f0b2002411f418c9cc000103c000b200341b105419c9cc000103c000b2001411f41c896c000103c000bd70601067f024002400240024002400240024002400240200041ffff034b0d0041898ac000210141002102200041087641ff0171210302400340200141026a2104200220012d000122056a21060240024020012d000022012003470d0020062002490d06200641a3024f0d07200241ec8ac0006a210103402005450d022005417f6a210520012d00002102200141016a21012002200041ff0171470d000b410021050c050b200120034b0d022006210220042101200441db8ac000470d010c020b2006210220042101200441db8ac000470d000b0b200041ffff03712100418e8dc0002101410121050340200141016a21060240024020012d000022024118744118752204417f4a0d00200641c38fc000460d07200441ff007141087420012d0001722102200141026a21010c010b200621010b200020026b22004100480d0220054101732105200141c38fc000470d000c020b0b0240200041ffff074b0d0041d48fc000210141002102200041087641ff0171210302400340200141026a2104200220012d000122056a21060240024020012d000022012003470d0020062002490d09200641b0014f0d0a200241a090c0006a210103402005450d022005417f6a210520012d00002102200141016a21012002200041ff0171470d000b410021050c050b200120034b0d022006210220042101200441a090c000470d010c020b2006210220042101200441a090c000470d000b0b200041ffff0371210041cf91c0002101410121050340200141016a21060240024020012d000022024118744118752204417f4a0d00200641f294c000460d0a200441ff007141087420012d0001722102200141026a21010c010b200621010b200020026b22004100480d0220054101732105200141f294c000470d000c020b0b41002105200041e28b746a41e20b490d002000419fa8746a419f18490d00200041dee2746a410e490d00200041feffff0071419ef00a460d00200041a2b2756a4122490d00200041cb91756a410b4f0d070b20054101710f0b2002200641dc8ac000105f000b200641a20241dc8ac0001055000b41b4fcca00412b41c48fc0001035000b2002200641dc8ac000105f000b200641af0141dc8ac0001055000b41b4fcca00412b41c48fc0001035000b200041f0833849200041b5d9736a41b4db2b4b710ba70201037f23004180016b22022400024002400240024020012802002203411071450d00410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141d1c5c0004102200220036a4180016a410020036b105321000c010b02402003412071450d00410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d03200141d1c5c0004102200220036a4180016a410020036b105321000c010b2000ad2001105021000b20024180016a240020000f0b200041800141bc89c000105e000b200041800141bc89c000105e000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41023602002003420237020c200341cc89c000360208200341023602242003200341206a3602182003200341046a36022820032003360220200341086a20021043000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41023602002003420237020c2003419895c000360208200341023602242003200341206a3602182003200341046a36022820032003360220200341086a20021043000bec0201017f230041f0006b220624002006200136020c2006200036020820062003360214200620023602102006410236021c2006418c9dc000360218024020042802000d00200641386a41146a4103360200200641c4006a4103360200200641d8006a41146a41033602002006420437025c200641909dc0003602582006410436023c2006200641386a3602682006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051043000b200641206a41106a200441106a290200370300200641206a41086a200441086a29020037030020062004290200370320200641d8006a41146a4104360200200641d4006a4108360200200641386a41146a4103360200200641c4006a41033602002006420437025c200641b09dc0003602582006410436023c2006200641386a3602682006200641206a3602502006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051043000b140020002802002001200028020428020c1101000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a103b2100200241206a240020000b1c002001280218418a9ec000410b2001411c6a28020028020c1100000b1c00200128021841959ec000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a410136020020034201370214200341ecddca003602102003410436022c2003200341286a3602202003200341086a360228200341106a20021043000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a103b2101200241206a240020010b1500200120002802002200280200200028020410560bfe0401097f0240024002402002450d002000280204210320002802002104200028020821050340024020052d0000450d00200441dd9ec0004104200328020c110000450d0041010f0b4100210620022107024002400340200120066a210802400240200741074b0d002007450d03410021000340200820006a2d0000410a460d022007200041016a2200470d000c040b0b024002400240200841036a417c7120086b2200450d0020072000200020074b1b2109410021000340200820006a2d0000410a460d042009200041016a2200470d000b2009200741786a220a4b0d020c010b200741786a210a410021090b02400340200820096a220041046a280200220b417f73200b418a94a8d0007341fffdfb776a7120002802002200417f732000418a94a8d0007341fffdfb776a7172418081828478710d01200941086a2209200a4d0d000b0b200920074b0d070b20092007460d02200720096b21072001200920066a6a21084100210002400340200820006a2d0000410a460d012007200041016a2200470d000c040b0b200920006a21000b200020066a220041016a21060240200020024f0d00200120006a2d0000410a470d00410121000c030b200220066b2107200220064f0d000b0b41002100200221060b200520003a000002400240024020022006460d000240200220064d0d00200120066a22002c000041bf7f4a0d020b200120024100200641e49ec0001057000b200420012002200328020c110000450d0141010f0b0240200420012006200328020c110000450d0041010f0b20002c000041bf7f4c0d040b200120066a2101200220066b22020d000b0b41000f0b2009200741a49fc000105e000b200120022006200241f49ec0001057000bb20302057f027e230041c0006b2205240041012106024020002d00040d0020002d000521070240200028020022082802002209410471450d000240200741ff01710d0041012106200828021841d99fc00041032008411c6a28020028020c1100000d02200828020021090b41012106200541013a0017200541346a41dc9fc00036020020052009360218200520082902183703082005200541176a3602102008290208210a2008290210210b200520082d00203a00382005200828020436021c2005200b3703282005200a3703202005200541086a360230200541086a2001200210680d01200541086a4190d6ca00410210680d012003200541186a200428020c1101000d01200528023041f49fc0004102200528023428020c11000021060c010b41012106200828021841d79fc00041d49fc000200741ff017122071b4102410320071b2008411c6a28020028020c1100000d0041012106200828021820012002200828021c28020c1100000d004101210620082802184190d6ca004102200828021c28020c1100000d0020032008200428020c11010021060b200041013a0005200020063a0004200541c0006a240020000bf30101017f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110682101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f89fc000200241086a103b2101200241206a240020010b0d0020002802002001200210680bfa0101017f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a200110682101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f89fc000200241086a103b2101200241206a240020010bd70202047f027e230041c0006b2203240041012104024020002d00040d0020002d000521040240200028020022052802002206410471450d000240200441ff01710d004101210420052802184197a0c00041012005411c6a28020028020c1100000d02200528020021060b41012104200341013a0017200341346a41dc9fc00036020020032006360218200320052902183703082003200341176a3602102005290208210720052902102108200320052d00203a00382003200528020436021c20032008370328200320073703202003200341086a3602302001200341186a200228020c1101000d01200328023041f49fc0004102200328023428020c11000021040c010b0240200441ff0171450d0041012104200528021841d79fc00041022005411c6a28020028020c1100000d010b20012005200228020c11010021040b200041013a0005200020043a0004200341c0006a240020000bc30603037f027e027f02402002280200220341134c0d00024002400240200042808084fea6dee111540d002002200341706a2204360200200320016a2205417c6a200042808084fea6dee111802206428080fc81d9a19e6e7e20007c220042e40080220742e40082a741017441fe85c0006a2f00003b00002005417a6a20004290ce008042e40082a741017441fe85c0006a2f00003b0000200541786a200042c0843d8042e40082a741017441fe85c0006a2f00003b0000200541766a20004280c2d72f80a741e4007041017441fe85c0006a2f00003b0000200541746a20004280c8afa02580a741e4007041017441fe85c0006a2f00003b0000200541726a20004280a094a58d1d80a741ffff037141e4007041017441fe85c0006a2f00003b0000200120046a2000428080e983b1de1680a741ff017141e4007041017441fe85c0006a2f00003b00002007429c7f7e20007ca721050c010b024020004280c2d72f5a0d0020032104200021060c020b2002200341786a2204360200200320016a2208417c6a20004280c2d72f8022064280bea8507e20007ca7220541e4006e220941e4007041017441fe85c0006a2f00003b00002008417a6a20054190ce006e41ffff037141e4007041017441fe85c0006a2f00003b0000200120046a200541c0843d6e41ff017141e4007041017441fe85c0006a2f00003b00002009419c7f6c20056a21050b200320016a417e6a200541017441fe85c0006a2f00003b00000b024002402006a722084190ce004f0d0020042103200821050c010b20012004417c6a22036a20084190ce006e220541f0b17f6c20086a220841ffff037141e4006e220941017441fe85c0006a2f00003b0000200420016a417e6a2009419c7f6c20086a41ffff037141017441fe85c0006a2f00003b00000b02400240200541ffff0371220441e4004f0d00200521040c010b20012003417e6a22036a200441e4006e2204419c7f6c20056a41ffff037141017441fe85c0006a2f00003b00000b0240200441ffff037141094b0d0020022003417f6a2203360200200120036a200441306a3a00000f0b20022003417e6a2203360200200120036a200441ffff037141017441fe85c0006a2f00003b00000f0b4199a0c000411c41b8a0c0001035000b0b002000310000200110500b0b002000290300200110500b870101027f23004180016b2202240020002d00002103410021000340200220006a41ff006a20034101714130723a00002000417f6a2100200341017641ff007122030d000b024020004180016a2203418101490d00200341800141bc89c000105e000b20014183a1c0004102200220006a4180016a410020006b1053210020024180016a240020000b1c0020012802184188b4c00041052001411c6a28020028020c1100000bc80401067e20002001290320220242338842137e2001290300220342ffffffffffffff03837c220442137c4233882001290308220542ffffffffffffff038320034233887c22037c4233882001290310220642ffffffffffffff038320054233887c22057c4233882001290318220742ffffffffffffff038320064233887c22067c423388200242ffffffffffffff038320074233887c22077c42338842137e20047c22023c0000200020024228883c0005200020024220883c0004200020024218883c0003200020024210883c0002200020024208883c00012000200242338820037c22044225883c000b20002004421d883c000a200020044215883c000920002004420d883c0008200020044205883c00072000200442338820057c2203422a883c0012200020034222883c001120002003421a883c0010200020034212883c000f20002003420a883c000e200020034202883c000d2000200442ffffffffffffff038322044203862002423088420783843c00062000200342338820067c22024227883c001820002002421f883c0017200020024217883c001620002002420f883c0015200020024207883c00142000200342ffffffffffffff038322054206862004422d88843c000c2000200242338820077c22034224883c001e20002003421c883c001d200020034214883c001c20002003420c883c001b200020034204883c001a2000200242ffffffffffffff038322024201862005423288843c00132000200342ffffffffffffff03832203422c883c001f200020034204862002422f88843c00190b7101027f230041c0006b22022400200220001075200241206a2001107541002101410121000340200241206a20016a2d0000200220016a2d0000732203410020036b72417f734180017141077610772000712100200141016a22014120470d000b200010772101200241c0006a240020010b1501017f230041106b220120003a000f20012d000f0bd00702017f147e230041f0016b2203240020012903202104200129031821052001290310210620012903082107200129030021080340200341b0016a200842002008420010c20a20034180016a20074200200442137e2209420010c20a200341c0006a200542137e220a42002006420010c20a200341e0016a200a42002005420010c20a200341f0006a200842002007420010c20a200341306a200642002009420010c20a200341e0006a200742002007420010c20a200341206a200842002006420010c20a200341d0016a200a42002004420010c20a200341c0016a200942002004420010c20a200341a0016a200842002005420010c20a200341106a200742002006420010c20a2003200642002006420010c20a20034190016a200842002004420010c20a200341d0006a200742002005420010c20a200329039001220b20032903507c2206420186220c20032903007c220720032903a001220d20032903107c2208420186220e20032903c0017c22042003290320220f20032903d0017c2205420186221020032903607c22092003290370221120032903307c220a420186221220032903e0017c2213200329038001221420032903407c2215420186221620032903b0017c221742338820034180016a41086a290300200341c0006a41086a2903007c2015201454ad7c4201862015423f8884200341b0016a41086a2903007c2017201654ad7c420d86847c2215423388200341f0006a41086a290300200341306a41086a2903007c200a201154ad7c420186200a423f8884200341e0016a41086a2903007c2013201254ad7c2015201354ad7c420d86847c220a423388200341206a41086a290300200341d0016a41086a2903007c2005200f54ad7c4201862005423f8884200341e0006a41086a2903007c2009201054ad7c200a200954ad7c420d86847c2205423388200341a0016a41086a290300200341106a41086a2903007c2008200d54ad7c4201862008423f8884200341c0016a41086a2903007c2004200e54ad7c2005200454ad7c420d86847c220442338820034190016a41086a290300200341d0006a41086a2903007c2006200b54ad7c4201862006423f8884200341086a2903007c2007200c54ad7c2004200754ad7c420d868442137e201742ffffffffffffff03837c220642ffffffffffffff038321082006423388201542ffffffffffffff03837c2107200442ffffffffffffff03832104200542ffffffffffffff03832105200a42ffffffffffffff038321062002417f6a22020d000b2000200437032020002005370318200020063703102000200737030820002008370300200341f0016a24000bb1d50103017f297e057f230041d0c1006b22032400200341a8c1006a200241011078200341a0386a20022903002204420020032903a8412205420010c20a200341b0396a20032903c841220642002002290308220742137e2208420010c20a200341f0396a20032903c041220942002002290310220a42137e220b420010c20a200341b03a6a20032903b841220c42002002290318220d42137e220e420010c20a200341f03a6a20032903b041220f42002002290320221042137e2211420010c20a200341f0386a200f42002004420010c20a200341b0386a200542002007420010c20a200341c0396a20064200200b420010c20a200341803a6a20094200200e420010c20a200341c03a6a200c42002011420010c20a20034180396a200c42002004420010c20a200341803b6a200f42002007420010c20a200341c0386a20054200200a420010c20a200341d0396a20064200200e420010c20a200341903a6a200942002011420010c20a20034190396a200942002004420010c20a200341d03a6a200c42002007420010c20a200341903b6a200f4200200a420010c20a200341d0386a20054200200d420010c20a200341e0396a200642002011420010c20a200341a0396a200642002004420010c20a200341a03a6a200942002007420010c20a200341e03a6a200c4200200a420010c20a200341a03b6a200f4200200d420010c20a200341e0386a200542002010420010c20a200320032903d039221220032903c0387c220520032903903a7c22062003290380397c220920032903803b7c220c20032903c039221320032903b0387c220f20032903803a7c221420032903c03a7c221520032903f0387c221620032903b039221720032903a0387c221820032903f0397c221920032903b03a7c221a20032903f03a7c221b423388200341b0396a41086a290300200341a0386a41086a2903007c2018201754ad7c200341f0396a41086a2903007c2019201854ad7c200341b03a6a41086a2903007c201a201954ad7c200341f03a6a41086a2903007c201b201a54ad7c420d86847c2219423388200341c0396a41086a290300200341b0386a41086a2903007c200f201354ad7c200341803a6a41086a2903007c2014200f54ad7c200341c03a6a41086a2903007c2015201454ad7c200341f0386a41086a2903007c2016201554ad7c2019201654ad7c420d86847c220f42ffffffffffffff038322143703c03b200320032903e039221720032903d0387c22152003290390397c221620032903d03a7c221a20032903903b7c2213200f423388200341d0396a41086a290300200341c0386a41086a2903007c2005201254ad7c200341903a6a41086a2903007c2006200554ad7c20034180396a41086a2903007c2009200654ad7c200341803b6a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c220542ffffffffffffff038322183703c83b200320032903a039221220032903e0387c220620032903a03a7c220920032903e03a7c220c20032903a03b7c220f2005423388200341e0396a41086a290300200341d0386a41086a2903007c2015201754ad7c20034190396a41086a2903007c2016201554ad7c200341d03a6a41086a2903007c201a201654ad7c200341903b6a41086a2903007c2013201a54ad7c2005201354ad7c420d86847c220542ffffffffffffff0383221a3703d03b20032005423388200341a0396a41086a290300200341e0386a41086a2903007c2006201254ad7c200341a03a6a41086a2903007c2009200654ad7c200341e03a6a41086a2903007c200c200954ad7c200341a03b6a41086a2903007c200f200c54ad7c2005200f54ad7c420d868442137e201b42ffffffffffffff03837c220542ffffffffffffff0383220c3703b03b20032005423388201942ffffffffffffff03837c220f3703b83b200341a8c1006a200341b03b6a4101107820034190356a20032903a841220542002004420010c20a200341e0356a20032903c841220642002008420010c20a200341b0366a20032903c04122094200200b420010c20a20034180376a20032903b84122154200200e420010c20a200341d0376a20032903b041221642002011420010c20a200341e0376a201642002004420010c20a200341a0356a200542002007420010c20a200341f0356a20064200200b420010c20a200341c0366a20094200200e420010c20a20034190376a201542002011420010c20a200341a0376a201542002004420010c20a200341f0376a201642002007420010c20a200341b0356a20054200200a420010c20a20034180366a20064200200e420010c20a200341d0366a200942002011420010c20a200341e0366a200942002004420010c20a200341b0376a201542002007420010c20a20034180386a20164200200a420010c20a200341c0356a20054200200d420010c20a20034190366a200642002011420010c20a200341a0366a200642002004420010c20a200341f0366a200942002007420010c20a200341c0376a20154200200a420010c20a20034190386a20164200200d420010c20a200341d0356a200542002010420010c20a200341800d6a200c420020012903002211420010c20a20034190346a200f42137e42002001290320220e420010c20a200341d0336a200129031822054200201442137e220b420010c20a20034190336a200129031022064200201842137e2216420010c20a200341c0326a200129030822094200201a42137e2215420010c20a200341f00c6a20094200200c420010c20a20034180356a200f42002011420010c20a20034180346a200e4200200b420010c20a200341c0336a200542002016420010c20a20034180336a200642002015420010c20a200341e00c6a200c42002006420010c20a200341b0326a200f42002009420010c20a200341f0346a201142002014420010c20a200341f0336a200e42002016420010c20a200341b0336a200542002015420010c20a200341800c6a200c42002005420010c20a200341f0326a200f42002006420010c20a200341a0326a200942002014420010c20a200341e0346a201142002018420010c20a200341e0336a20154200200e420010c20a200341a00b6a200c4200200e420010c20a200341a0336a200f42002005420010c20a200341e0326a200642002014420010c20a20034190326a200942002018420010c20a200341d0346a201a42002011420010c20a20034180306a20032903a036221c20032903d0357c220c20032903f0367c220f20032903c0377c22142003290390387c2215200329039036221d20032903c0357c221620032903e0367c220b20032903b0377c22182003290380387c2219200329038036221e20032903b0357c221a20032903d0367c221b20032903a0377c221320032903f0377c220820032903f035221f20032903a0357c221220032903c0367c22172003290390377c222020032903e0377c222120032903e03522222003290390357c222320032903b0367c22242003290380377c222520032903d0377c2226423388200341e0356a41086a29030020034190356a41086a2903007c2023202254ad7c200341b0366a41086a2903007c2024202354ad7c20034180376a41086a2903007c2025202454ad7c200341d0376a41086a2903007c2026202554ad7c420d86847c2223423388200341f0356a41086a290300200341a0356a41086a2903007c2012201f54ad7c200341c0366a41086a2903007c2017201254ad7c20034190376a41086a2903007c2020201754ad7c200341e0376a41086a2903007c2021202054ad7c2023202154ad7c420d86847c221242338820034180366a41086a290300200341b0356a41086a2903007c201a201e54ad7c200341d0366a41086a2903007c201b201a54ad7c200341a0376a41086a2903007c2013201b54ad7c200341f0376a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a42338820034190366a41086a290300200341c0356a41086a2903007c2016201d54ad7c200341e0366a41086a2903007c200b201654ad7c200341b0376a41086a2903007c2018200b54ad7c20034180386a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2216423388200341a0366a41086a290300200341d0356a41086a2903007c200c201c54ad7c200341f0366a41086a2903007c200f200c54ad7c200341c0376a41086a2903007c2014200f54ad7c20034190386a41086a2903007c2015201454ad7c2016201554ad7c420d868442137e202642ffffffffffffff03837c220f42ffffffffffffff0383220c42002011420010c20a200341d0306a200f423388202342ffffffffffffff03837c220f42137e4200200e420010c20a200341f0306a201242ffffffffffffff0383221442137e221942002005420010c20a200341a0316a201a42ffffffffffffff0383220b42137e221842002006420010c20a200341e0316a201642ffffffffffffff0383221642137e221542002009420010c20a200341f02f6a200c42002009420010c20a200341c0306a200f42002011420010c20a200341e0306a20194200200e420010c20a20034190316a201842002005420010c20a200341d0316a201542002006420010c20a200341e02f6a200c42002006420010c20a200341b0306a200f42002009420010c20a200341c0346a201442002011420010c20a20034180316a20184200200e420010c20a200341c0316a201542002005420010c20a200341d02f6a200c42002005420010c20a200341a0306a200f42002006420010c20a20034180326a201442002009420010c20a200341b0346a200b42002011420010c20a200341b0316a20154200200e420010c20a200341c02f6a200c4200200e420010c20a20034190306a200f42002005420010c20a200341d0326a201442002006420010c20a200341f0316a200b42002009420010c20a200341a0346a201642002011420010c20a2003200329038031221220032903c0347c220f20032903c0317c221420032903e02f7c221520032903b0307c2216200329039031221720032903e0307c220c20032903d0317c220b20032903f02f7c221820032903c0307c221920032903a031222020032903f0307c221a20032903e0317c221b2003290380307c221320032903d0307c2208423388200341a0316a41086a290300200341f0306a41086a2903007c201a202054ad7c200341e0316a41086a2903007c201b201a54ad7c20034180306a41086a2903007c2013201b54ad7c200341d0306a41086a2903007c2008201354ad7c420d86847c221a42338820034190316a41086a290300200341e0306a41086a2903007c200c201754ad7c200341d0316a41086a2903007c200b200c54ad7c200341f02f6a41086a2903007c2018200b54ad7c200341c0306a41086a2903007c2019201854ad7c201a201954ad7c420d86847c220b42ffffffffffffff0383220c3703e83b200320032903b03422172003290380327c221820032903b0317c221920032903d02f7c221b20032903a0307c2213200b42338820034180316a41086a290300200341c0346a41086a2903007c200f201254ad7c200341c0316a41086a2903007c2014200f54ad7c200341e02f6a41086a2903007c2015201454ad7c200341b0306a41086a2903007c2016201554ad7c200b201654ad7c420d86847c221442ffffffffffffff0383220f3703f03b200320032903f031222020032903d0327c221520032903a0347c221620032903c02f7c220b2003290390307c22122014423388200341b0346a41086a29030020034180326a41086a2903007c2018201754ad7c200341b0316a41086a2903007c2019201854ad7c200341d02f6a41086a2903007c201b201954ad7c200341a0306a41086a2903007c2013201b54ad7c2014201354ad7c420d86847c221842ffffffffffffff038322143703f83b20032018423388200341f0316a41086a290300200341d0326a41086a2903007c2015202054ad7c200341a0346a41086a2903007c2016201554ad7c200341c02f6a41086a2903007c200b201654ad7c20034190306a41086a2903007c2012200b54ad7c2018201254ad7c420d868442137e200842ffffffffffffff03837c221642ffffffffffffff038322153703d83b20032016423388201a42ffffffffffffff03837c22163703e03b200341803c6a200341d83b6a41011078200341a8c1006a200341803c6a41011078200341a83c6a200341a8c1006a41011078200341b02f6a20032903a83c220b42002015420010c20a200341b02c6a2014420020032903b03c221842137e420010c20a200341902d6a200f420020032903b83c221942137e2208420010c20a200341f02d6a200c420020032903c03c221b42137e2213420010c20a200341d02e6a2016420020032903c83c221242137e221a420010c20a200341a02f6a20164200200b420010c20a200341f02c6a201542002018420010c20a200341802d6a201442002008420010c20a200341e02d6a200f42002013420010c20a200341c02e6a200c4200201a420010c20a200341902f6a200c4200200b420010c20a200341e02c6a201642002018420010c20a200341c02d6a201542002019420010c20a200341d02d6a201442002013420010c20a200341b02e6a200f4200201a420010c20a200341802f6a200f4200200b420010c20a200341d02c6a200c42002018420010c20a200341b02d6a201642002019420010c20a200341902e6a20154200201b420010c20a200341a02e6a20144200201a420010c20a200341f02e6a20144200200b420010c20a200341c02c6a200f42002018420010c20a200341a02d6a200c42002019420010c20a200341802e6a20164200201b420010c20a200341e02e6a201542002012420010c20a200341e0296a20032903f02e222720032903e02e7c220b20032903c02c7c221820032903a02d7c221920032903802e7c221a20032903a02e222820032903902e7c221b20032903802f7c221320032903d02c7c220820032903b02d7c221220032903d02d222920032903c02d7c221720032903b02e7c222020032903902f7c222120032903e02c7c222320032903802d222a20032903f02c7c222420032903e02d7c222520032903c02e7c222620032903a02f7c221c20032903b02c222b20032903b02f7c221d20032903902d7c221e20032903f02d7c221f20032903d02e7c2222423388200341b02c6a41086a290300200341b02f6a41086a2903007c201d202b54ad7c200341902d6a41086a2903007c201e201d54ad7c200341f02d6a41086a2903007c201f201e54ad7c200341d02e6a41086a2903007c2022201f54ad7c420d86847c221d423388200341802d6a41086a290300200341f02c6a41086a2903007c2024202a54ad7c200341e02d6a41086a2903007c2025202454ad7c200341c02e6a41086a2903007c2026202554ad7c200341a02f6a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341d02d6a41086a290300200341c02d6a41086a2903007c2017202954ad7c200341b02e6a41086a2903007c2020201754ad7c200341902f6a41086a2903007c2021202054ad7c200341e02c6a41086a2903007c2023202154ad7c2024202354ad7c420d86847c2217423388200341a02e6a41086a290300200341902e6a41086a2903007c201b202854ad7c200341802f6a41086a2903007c2013201b54ad7c200341d02c6a41086a2903007c2008201354ad7c200341b02d6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b423388200341f02e6a41086a290300200341e02e6a41086a2903007c200b202754ad7c200341c02c6a41086a2903007c2018200b54ad7c200341a02d6a41086a2903007c2019201854ad7c200341802e6a41086a2903007c201a201954ad7c201b201a54ad7c420d868442137e202242ffffffffffffff03837c221842ffffffffffffff0383220b420020032903803c2213420010c20a200341b02a6a2018423388201d42ffffffffffffff03837c221842137e420020032903a03c2208420010c20a200341d02a6a202442ffffffffffffff0383221942137e2224420020032903983c2212420010c20a200341802b6a201742ffffffffffffff0383221a42137e2223420020032903903c2217420010c20a200341c02b6a201b42ffffffffffffff0383221b42137e2221420020032903883c2220420010c20a200341d0296a200b42002020420010c20a200341a02a6a201842002013420010c20a200341c02a6a202442002008420010c20a200341f02a6a202342002012420010c20a200341b02b6a202142002017420010c20a200341c0296a200b42002017420010c20a200341902a6a201842002020420010c20a200341d02b6a201942002013420010c20a200341e02a6a202342002008420010c20a200341a02b6a202142002012420010c20a200341b0296a200b42002012420010c20a200341802a6a201842002017420010c20a200341e02b6a201942002020420010c20a200341802c6a201a42002013420010c20a200341902b6a202142002008420010c20a200341a0296a200b42002008420010c20a200341f0296a201842002012420010c20a200341f02b6a201942002017420010c20a200341902c6a201a42002020420010c20a200341a02c6a201b42002013420010c20a200320032903e02a221e20032903d02b7c221320032903a02b7c220820032903c0297c221220032903902a7c221720032903f02a221f20032903c02a7c222020032903b02b7c222120032903d0297c222320032903a02a7c222420032903802b222220032903d02a7c222520032903c02b7c222620032903e0297c221c20032903b02a7c221d423388200341802b6a41086a290300200341d02a6a41086a2903007c2025202254ad7c200341c02b6a41086a2903007c2026202554ad7c200341e0296a41086a2903007c201c202654ad7c200341b02a6a41086a2903007c201d201c54ad7c420d86847c2225423388200341f02a6a41086a290300200341c02a6a41086a2903007c2020201f54ad7c200341b02b6a41086a2903007c2021202054ad7c200341d0296a41086a2903007c2023202154ad7c200341a02a6a41086a2903007c2024202354ad7c2025202454ad7c420d86847c222042ffffffffffffff03833703e03c200320032903802c221c20032903e02b7c222120032903902b7c222320032903b0297c222420032903802a7c22262020423388200341e02a6a41086a290300200341d02b6a41086a2903007c2013201e54ad7c200341a02b6a41086a2903007c2008201354ad7c200341c0296a41086a2903007c2012200854ad7c200341902a6a41086a2903007c2017201254ad7c2020201754ad7c420d86847c221342ffffffffffffff03833703e83c200320032903902c221e20032903f02b7c220820032903a02c7c221220032903a0297c221720032903f0297c22202013423388200341802c6a41086a290300200341e02b6a41086a2903007c2021201c54ad7c200341902b6a41086a2903007c2023202154ad7c200341b0296a41086a2903007c2024202354ad7c200341802a6a41086a2903007c2026202454ad7c2013202654ad7c420d86847c221342ffffffffffffff03833703f03c20032013423388200341902c6a41086a290300200341f02b6a41086a2903007c2008201e54ad7c200341a02c6a41086a2903007c2012200854ad7c200341a0296a41086a2903007c2017201254ad7c200341f0296a41086a2903007c2020201754ad7c2013202054ad7c420d868442137e201d42ffffffffffffff03837c221342ffffffffffffff03833703d03c20032013423388202542ffffffffffffff03837c3703d83c200341f83c6a200341d03c6a4101107820034190296a20032903f83c22134200200b420010c20a20034190266a20032903803d220842137e4200201b420010c20a200341f0266a20032903883d221242137e22234200201a420010c20a200341d0276a20032903903d222042137e222142002019420010c20a200341b0286a20032903983d222442137e221742002018420010c20a20034180296a201342002018420010c20a200341d0266a200b42002008420010c20a200341e0266a20234200201b420010c20a200341c0276a20214200201a420010c20a200341a0286a201742002019420010c20a200341f0286a201342002019420010c20a200341c0266a201842002008420010c20a200341a0276a200b42002012420010c20a200341b0276a20214200201b420010c20a20034190286a20174200201a420010c20a200341e0286a20134200201a420010c20a200341b0266a200842002019420010c20a20034190276a201842002012420010c20a200341f0276a20204200200b420010c20a20034180286a20174200201b420010c20a200341d0286a20134200201b420010c20a200341a0266a20084200201a420010c20a20034180276a201242002019420010c20a200341e0276a201842002020420010c20a200341c0286a20244200200b420010c20a200320032903c026222520032903a0277c220b20032903b0277c22182003290390287c221a20032903f0287c221b20032903e026222420032903d0267c221920032903c0277c221320032903a0287c22082003290380297c221220032903f02622262003290390267c221720032903d0277c22202003290390297c222120032903b0287c2223423388200341f0266a41086a29030020034190266a41086a2903007c2017202654ad7c200341d0276a41086a2903007c2020201754ad7c20034190296a41086a2903007c2021202054ad7c200341b0286a41086a2903007c2023202154ad7c420d86847c2220423388200341e0266a41086a290300200341d0266a41086a2903007c2019202454ad7c200341c0276a41086a2903007c2013201954ad7c200341a0286a41086a2903007c2008201354ad7c20034180296a41086a2903007c2012200854ad7c2020201254ad7c420d86847c221342ffffffffffffff038322193703b03d200320032903f027222620032903b0267c22082003290390277c22122003290380287c222120032903e0287c22242013423388200341c0266a41086a290300200341a0276a41086a2903007c200b202554ad7c200341b0276a41086a2903007c2018200b54ad7c20034190286a41086a2903007c201a201854ad7c200341f0286a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff038322173703b83d2003200329038027222520032903a0267c221820032903e0277c221a20032903c0287c221b20032903d0287c2213200b423388200341f0276a41086a290300200341b0266a41086a2903007c2008202654ad7c20034190276a41086a2903007c2012200854ad7c20034180286a41086a2903007c2021201254ad7c200341e0286a41086a2903007c2024202154ad7c200b202454ad7c420d86847c220b42ffffffffffffff038322213703c03d2003200b42338820034180276a41086a290300200341a0266a41086a2903007c2018202554ad7c200341e0276a41086a2903007c201a201854ad7c200341c0286a41086a2903007c201b201a54ad7c200341d0286a41086a2903007c2013201b54ad7c200b201354ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703a03d20032018423388202042ffffffffffffff03837c22183703a83d200341c83d6a200341a03d6a41051078200341c0236a200b420020032903c83d221a420010c20a200341c0246a201842137e420020032903e83d221b420010c20a20034180256a201942137e2224420020032903e03d2213420010c20a200341c0256a201742137e2223420020032903d83d2208420010c20a20034180266a202142137e2220420020032903d03d2212420010c20a200341b0236a200b42002012420010c20a20034180246a20184200201a420010c20a200341b0246a20244200201b420010c20a200341f0246a202342002013420010c20a200341b0256a202042002008420010c20a200341a0236a200b42002008420010c20a200341f0256a201842002012420010c20a200341f0236a20194200201a420010c20a200341a0246a20234200201b420010c20a200341e0246a202042002013420010c20a20034190236a200b42002013420010c20a200341a0256a201842002008420010c20a200341e0256a201242002019420010c20a200341e0236a20174200201a420010c20a20034190246a20204200201b420010c20a20034180236a200b4200201b420010c20a200341d0246a201842002013420010c20a20034190256a200842002019420010c20a200341d0256a201742002012420010c20a200341d0236a20214200201a420010c20a200320032903a024222420032903f0237c220b20032903e0247c221820032903a0237c221a20032903f0257c221b20032903f024222520032903b0247c221920032903b0257c221320032903b0237c22082003290380247c221220032903c02522262003290380257c22172003290380267c222020032903c0237c222120032903c0247c2223423388200341c0256a41086a29030020034180256a41086a2903007c2017202654ad7c20034180266a41086a2903007c2020201754ad7c200341c0236a41086a2903007c2021202054ad7c200341c0246a41086a2903007c2023202154ad7c420d86847c2217423388200341f0246a41086a290300200341b0246a41086a2903007c2019202554ad7c200341b0256a41086a2903007c2013201954ad7c200341b0236a41086a2903007c2008201354ad7c20034180246a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703803e200320032903e023222520032903e0257c22082003290390247c22122003290390237c222020032903a0257c22212013423388200341a0246a41086a290300200341f0236a41086a2903007c200b202454ad7c200341e0246a41086a2903007c2018200b54ad7c200341a0236a41086a2903007c201a201854ad7c200341f0256a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703883e200320032903d025221c2003290390257c221820032903d0237c221a2003290380237c221320032903d0247c2224200b423388200341e0236a41086a290300200341e0256a41086a2903007c2008202554ad7c20034190246a41086a2903007c2012200854ad7c20034190236a41086a2903007c2020201254ad7c200341a0256a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff038322263703903e2003200b423388200341d0256a41086a29030020034190256a41086a2903007c2018201c54ad7c200341d0236a41086a2903007c201a201854ad7c20034180236a41086a2903007c2013201a54ad7c200341d0246a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703f03d20032018423388201742ffffffffffffff03837c22183703f83d200341983e6a200341f03d6a410a1078200341b0206a200b420020032903983e2208420010c20a20034180216a201842137e2228420020032903b83e2212420010c20a200341d0216a201942137e221c420020032903b03e2217420010c20a200341a0226a201b42137e2213420020032903a83e2220420010c20a200341f0226a202642137e221a420020032903a03e2221420010c20a200341e0226a200b42002021420010c20a200341a0206a201842002008420010c20a200341f0206a201c42002012420010c20a200341c0216a201342002017420010c20a20034190226a201a42002020420010c20a20034180226a200b42002020420010c20a200341d0226a201842002021420010c20a20034190206a201942002008420010c20a200341e0206a201342002012420010c20a200341b0216a201a42002017420010c20a200341a0216a200b42002017420010c20a200341f0216a201842002020420010c20a200341c0226a201942002021420010c20a20034180206a201b42002008420010c20a200341d0206a201a42002012420010c20a200341c0206a200b42002012420010c20a20034190216a201842002017420010c20a200341e0216a201942002020420010c20a200341b0226a201b42002021420010c20a200341f01f6a202642002008420010c20a200320032903e02022292003290390207c220820032903b0217c22122003290380227c222020032903d0227c222120032903c021222720032903f0207c22172003290390227c222320032903e0227c222420032903a0207c222520032903a022222a20032903d0217c221d20032903f0227c221e20032903b0207c221f2003290380217c2222423388200341a0226a41086a290300200341d0216a41086a2903007c201d202a54ad7c200341f0226a41086a2903007c201e201d54ad7c200341b0206a41086a2903007c201f201e54ad7c20034180216a41086a2903007c2022201f54ad7c420d86847c221e423388200341c0216a41086a290300200341f0206a41086a2903007c2017202754ad7c20034190226a41086a2903007c2023201754ad7c200341e0226a41086a2903007c2024202354ad7c200341a0206a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703d03e2003200329038020222a20032903c0227c222420032903d0207c222520032903a0217c221f20032903f0217c22272023423388200341e0206a41086a29030020034190206a41086a2903007c2008202954ad7c200341b0216a41086a2903007c2012200854ad7c20034180226a41086a2903007c2020201254ad7c200341d0226a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703d83e200320032903b022222920032903e0217c221220032903f01f7c222020032903c0207c22212003290390217c2223200842338820034180206a41086a290300200341c0226a41086a2903007c2024202a54ad7c200341d0206a41086a2903007c2025202454ad7c200341a0216a41086a2903007c201f202554ad7c200341f0216a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703e03e20032008423388200341b0226a41086a290300200341e0216a41086a2903007c2012202954ad7c200341f01f6a41086a2903007c2020201254ad7c200341c0206a41086a2903007c2021202054ad7c20034190216a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703c03e20032012423388201e42ffffffffffffff03837c22123703c83e200341e83e6a200341c03e6a41141078200341a01d6a2008420020032903e83e2220420010c20a200341f01d6a201242137e420020032903883f2221420010c20a200341c01e6a201742137e2227420020032903803f2223420010c20a200341901f6a201d42137e2222420020032903f83e2224420010c20a200341e01f6a201f42137e221e420020032903f03e2225420010c20a200341d01f6a200842002025420010c20a200341901d6a201242002020420010c20a200341e01d6a202742002021420010c20a200341b01e6a202242002023420010c20a200341801f6a201e42002024420010c20a200341f01e6a200842002024420010c20a200341c01f6a201242002025420010c20a200341801d6a201742002020420010c20a200341d01d6a202242002021420010c20a200341a01e6a201e42002023420010c20a200341901e6a200842002023420010c20a200341e01e6a201242002024420010c20a200341b01f6a201742002025420010c20a200341f01c6a201d42002020420010c20a200341c01d6a201e42002021420010c20a200341b01d6a200842002021420010c20a200341801e6a201242002023420010c20a200341d01e6a201742002024420010c20a200341a01f6a201d42002025420010c20a200341e01c6a201f42002020420010c20a200320032903d01d222720032903801d7c220820032903a01e7c221220032903f01e7c221720032903c01f7c222020032903b01e222920032903e01d7c222120032903801f7c222320032903d01f7c222420032903901d7c222520032903901f222a20032903c01e7c221d20032903e01f7c221e20032903a01d7c221f20032903f01d7c2222423388200341901f6a41086a290300200341c01e6a41086a2903007c201d202a54ad7c200341e01f6a41086a2903007c201e201d54ad7c200341a01d6a41086a2903007c201f201e54ad7c200341f01d6a41086a2903007c2022201f54ad7c420d86847c221d423388200341b01e6a41086a290300200341e01d6a41086a2903007c2021202954ad7c200341801f6a41086a2903007c2023202154ad7c200341d01f6a41086a2903007c2024202354ad7c200341901d6a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff03833703a03f200320032903f01c221f20032903b01f7c222320032903c01d7c222420032903901e7c222520032903e01e7c221e2021423388200341d01d6a41086a290300200341801d6a41086a2903007c2008202754ad7c200341a01e6a41086a2903007c2012200854ad7c200341f01e6a41086a2903007c2017201254ad7c200341c01f6a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff03833703a83f200320032903a01f222720032903d01e7c221220032903e01c7c221720032903b01d7c222020032903801e7c22212008423388200341f01c6a41086a290300200341b01f6a41086a2903007c2023201f54ad7c200341c01d6a41086a2903007c2024202354ad7c200341901e6a41086a2903007c2025202454ad7c200341e01e6a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703b03f20032008423388200341a01f6a41086a290300200341d01e6a41086a2903007c2012202754ad7c200341e01c6a41086a2903007c2017201254ad7c200341b01d6a41086a2903007c2020201754ad7c200341801e6a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703903f20032008423388201d42ffffffffffffff03837c3703983f200341b83f6a200341903f6a410a1078200341901a6a20032903b83f22084200200b420010c20a200341e01a6a20032903d83f221242002028420010c20a200341b01b6a20032903d03f22174200201c420010c20a200341801c6a20032903c83f222042002013420010c20a200341d01c6a20032903c03f22214200201a420010c20a200341c01c6a20214200200b420010c20a200341801a6a200842002018420010c20a200341d01a6a20124200201c420010c20a200341a01b6a201742002013420010c20a200341f01b6a20204200201a420010c20a200341e01b6a20204200200b420010c20a200341b01c6a202142002018420010c20a200341f0196a200842002019420010c20a200341c01a6a201242002013420010c20a200341901b6a20174200201a420010c20a200341801b6a20174200200b420010c20a200341d01b6a202042002018420010c20a200341a01c6a202142002019420010c20a200341e0196a20084200201b420010c20a200341b01a6a20124200201a420010c20a200341a01a6a20124200200b420010c20a200341f01a6a201742002018420010c20a200341c01b6a202042002019420010c20a200341901c6a20214200201b420010c20a200341d0196a200842002026420010c20a200320032903c01a222420032903f0197c220b20032903901b7c221820032903e01b7c221a20032903b01c7c221b20032903d01a222520032903801a7c221920032903a01b7c221320032903f01b7c220820032903c01c7c221220032903e01a222620032903901a7c221720032903b01b7c222020032903801c7c222120032903d01c7c2223423388200341e01a6a41086a290300200341901a6a41086a2903007c2017202654ad7c200341b01b6a41086a2903007c2020201754ad7c200341801c6a41086a2903007c2021202054ad7c200341d01c6a41086a2903007c2023202154ad7c420d86847c2217423388200341d01a6a41086a290300200341801a6a41086a2903007c2019202554ad7c200341a01b6a41086a2903007c2013201954ad7c200341f01b6a41086a2903007c2008201354ad7c200341c01c6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703f03f200320032903b01a222520032903e0197c220820032903801b7c221220032903d01b7c222020032903a01c7c22212013423388200341c01a6a41086a290300200341f0196a41086a2903007c200b202454ad7c200341901b6a41086a2903007c2018200b54ad7c200341e01b6a41086a2903007c201a201854ad7c200341b01c6a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703f83f200320032903a01a221c20032903d0197c221820032903f01a7c221a20032903c01b7c221320032903901c7c2224200b423388200341b01a6a41086a290300200341e0196a41086a2903007c2008202554ad7c200341801b6a41086a2903007c2012200854ad7c200341d01b6a41086a2903007c2020201254ad7c200341a01c6a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff03832226370380402003200b423388200341a01a6a41086a290300200341d0196a41086a2903007c2018201c54ad7c200341f01a6a41086a2903007c201a201854ad7c200341c01b6a41086a2903007c2013201a54ad7c200341901c6a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703e03f20032018423388201742ffffffffffffff03837c22183703e83f20034188c0006a200341e03f6a4132107820034180176a200b42002003290388402208420010c20a200341d0176a201842137e2228420020032903a8402212420010c20a200341a0186a20032903a04022174200201942137e221c420010c20a200341f0186a201b42137e221342002003290398402220420010c20a200341c0196a202642137e221a42002003290390402221420010c20a200341b0196a200b42002021420010c20a200341f0166a201842002008420010c20a200341c0176a20124200201c420010c20a20034190186a201342002017420010c20a200341e0186a201a42002020420010c20a200341d0186a200b42002020420010c20a200341a0196a201842002021420010c20a200341e0166a200842002019420010c20a200341b0176a201342002012420010c20a20034180186a201a42002017420010c20a200341f0176a200b42002017420010c20a200341c0186a201842002020420010c20a20034190196a202142002019420010c20a200341d0166a201b42002008420010c20a200341a0176a201a42002012420010c20a20034190176a200b42002012420010c20a200341e0176a201842002017420010c20a200341b0186a202042002019420010c20a20034180196a20214200201b420010c20a200341c0166a202642002008420010c20a200320032903b017222920032903e0167c22082003290380187c221220032903d0187c222020032903a0197c2221200329039018222720032903c0177c221720032903e0187c222320032903b0197c222420032903f0167c222520032903f018222a20032903a0187c221d20032903c0197c221e2003290380177c221f20032903d0177c2222423388200341f0186a41086a290300200341a0186a41086a2903007c201d202a54ad7c200341c0196a41086a2903007c201e201d54ad7c20034180176a41086a2903007c201f201e54ad7c200341d0176a41086a2903007c2022201f54ad7c420d86847c221e42338820034190186a41086a290300200341c0176a41086a2903007c2017202754ad7c200341e0186a41086a2903007c2023201754ad7c200341b0196a41086a2903007c2024202354ad7c200341f0166a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703c0402003200329039019222a20032903d0167c222420032903a0177c222520032903f0177c221f20032903c0187c22272023423388200341b0176a41086a290300200341e0166a41086a2903007c2008202954ad7c20034180186a41086a2903007c2012200854ad7c200341d0186a41086a2903007c2020201254ad7c200341a0196a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703c8402003200329038019222920032903b0187c221220032903c0167c22202003290390177c222120032903e0177c2223200842338820034190196a41086a290300200341d0166a41086a2903007c2024202a54ad7c200341a0176a41086a2903007c2025202454ad7c200341f0176a41086a2903007c201f202554ad7c200341c0186a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703d0402003200842338820034180196a41086a290300200341b0186a41086a2903007c2012202954ad7c200341c0166a41086a2903007c2020201254ad7c20034190176a41086a2903007c2021202054ad7c200341e0176a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703b04020032012423388201e42ffffffffffffff03837c22123703b840200341d8c0006a200341b0c0006a41e4001078200341f0136a2008420020032903d8402220420010c20a200341c0146a201242137e420020032903f8402221420010c20a20034190156a201742137e2227420020032903f0402223420010c20a200341e0156a201d42137e2222420020032903e8402224420010c20a200341b0166a201f42137e221e420020032903e0402225420010c20a200341a0166a200842002025420010c20a200341e0136a201242002020420010c20a200341b0146a202742002021420010c20a20034180156a202242002023420010c20a200341d0156a201e42002024420010c20a200341c0156a200842002024420010c20a20034190166a201242002025420010c20a200341d0136a201742002020420010c20a200341a0146a202242002021420010c20a200341f0146a201e42002023420010c20a200341e0146a200842002023420010c20a200341b0156a201242002024420010c20a20034180166a201742002025420010c20a200341c0136a201d42002020420010c20a20034190146a201e42002021420010c20a20034180146a200842002021420010c20a200341d0146a201242002023420010c20a200341a0156a201742002024420010c20a200341f0156a201d42002025420010c20a200341b0136a201f42002020420010c20a200320032903a014222720032903d0137c220820032903f0147c221220032903c0157c22172003290390167c2220200329038015222920032903b0147c222120032903d0157c222320032903a0167c222420032903e0137c222520032903e015222a2003290390157c221d20032903b0167c221e20032903f0137c221f20032903c0147c2222423388200341e0156a41086a29030020034190156a41086a2903007c201d202a54ad7c200341b0166a41086a2903007c201e201d54ad7c200341f0136a41086a2903007c201f201e54ad7c200341c0146a41086a2903007c2022201f54ad7c420d86847c221d42338820034180156a41086a290300200341b0146a41086a2903007c2021202954ad7c200341d0156a41086a2903007c2023202154ad7c200341a0166a41086a2903007c2024202354ad7c200341e0136a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff038337039041200320032903c013221f2003290380167c22232003290390147c222420032903e0147c222520032903b0157c221e2021423388200341a0146a41086a290300200341d0136a41086a2903007c2008202754ad7c200341f0146a41086a2903007c2012200854ad7c200341c0156a41086a2903007c2017201254ad7c20034190166a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff038337039841200320032903f015222720032903a0157c221220032903b0137c22172003290380147c222020032903d0147c22212008423388200341c0136a41086a29030020034180166a41086a2903007c2023201f54ad7c20034190146a41086a2903007c2024202354ad7c200341e0146a41086a2903007c2025202454ad7c200341b0156a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703a04120032008423388200341f0156a41086a290300200341a0156a41086a2903007c2012202754ad7c200341b0136a41086a2903007c2017201254ad7c20034180146a41086a2903007c2020201754ad7c200341d0146a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703804120032008423388201d42ffffffffffffff03837c37038841200341a8c1006a20034180c1006a41321078200341a0106a20032903a84122084200200b420010c20a200341f0106a20032903c841221242002028420010c20a200341c0116a20032903c04122174200201c420010c20a20034190126a20032903b841222042002013420010c20a200341e0126a20032903b04122214200201a420010c20a200341f0126a20214200200b420010c20a200341b0106a200842002018420010c20a20034180116a20124200201c420010c20a200341d0116a201742002013420010c20a200341a0126a20204200201a420010c20a200341b0126a20204200200b420010c20a20034180136a202142002018420010c20a200341c0106a200842002019420010c20a20034190116a201242002013420010c20a200341e0116a20174200201a420010c20a200341f0116a20174200200b420010c20a200341c0126a202042002018420010c20a20034190136a202142002019420010c20a200341d0106a20084200201b420010c20a200341a0116a20124200201a420010c20a200341b0116a20124200200b420010c20a20034180126a201742002018420010c20a200341d0126a202042002019420010c20a200341a0136a20214200201b420010c20a200341e0106a200842002026420010c20a2003200329039011222420032903c0107c220b20032903e0117c221820032903b0127c22192003290380137c221a200329038011222520032903b0107c221b20032903d0117c221320032903a0127c220820032903f0127c221220032903f010222620032903a0107c221720032903c0117c22202003290390127c222120032903e0127c2223423388200341f0106a41086a290300200341a0106a41086a2903007c2017202654ad7c200341c0116a41086a2903007c2020201754ad7c20034190126a41086a2903007c2021202054ad7c200341e0126a41086a2903007c2023202154ad7c420d86847c221742338820034180116a41086a290300200341b0106a41086a2903007c201b202554ad7c200341d0116a41086a2903007c2013201b54ad7c200341a0126a41086a2903007c2008201354ad7c200341f0126a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b42ffffffffffffff038337039041200320032903a011222120032903d0107c221320032903f0117c220820032903c0127c22122003290390137c2220201b42338820034190116a41086a290300200341c0106a41086a2903007c200b202454ad7c200341e0116a41086a2903007c2018200b54ad7c200341b0126a41086a2903007c2019201854ad7c20034180136a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c220b42ffffffffffffff038337039841200320032903b011222420032903e0107c22182003290380127c221920032903d0127c221a20032903a0137c221b200b423388200341a0116a41086a290300200341d0106a41086a2903007c2013202154ad7c200341f0116a41086a2903007c2008201354ad7c200341c0126a41086a2903007c2012200854ad7c20034190136a41086a2903007c2020201254ad7c200b202054ad7c420d86847c220b42ffffffffffffff03833703a0412003200b423388200341b0116a41086a290300200341e0106a41086a2903007c2018202454ad7c20034180126a41086a2903007c2019201854ad7c200341d0126a41086a2903007c201a201954ad7c200341a0136a41086a2903007c201b201a54ad7c200b201b54ad7c420d868442137e202342ffffffffffffff03837c220b42ffffffffffffff0383370380412003200b423388201742ffffffffffffff03837c37038841200341a8c1006a20034180c1006a41021078200341900d6a2015420020032903a841220b420010c20a20034190106a2014420020032903b041221842137e420010c20a200341c00f6a200f420020032903b841221942137e2208420010c20a200341f00e6a200c420020032903c041221b42137e2213420010c20a200341a00e6a2016420020032903c841221242137e221a420010c20a200341a00d6a20164200200b420010c20a20034180106a201542002018420010c20a200341b00f6a201442002008420010c20a200341e00e6a200f42002013420010c20a200341900e6a200c4200201a420010c20a200341b00d6a200c4200200b420010c20a200341f00f6a201642002018420010c20a200341a00f6a201542002019420010c20a200341d00e6a201442002013420010c20a200341800e6a200f4200201a420010c20a200341c00d6a200f4200200b420010c20a200341e00f6a200c42002018420010c20a200341900f6a201642002019420010c20a200341c00e6a20154200201b420010c20a200341f00d6a20144200201a420010c20a200341d00d6a20144200200b420010c20a200341d00f6a200f42002018420010c20a200341800f6a200c42002019420010c20a200341b00e6a20164200201b420010c20a200341e00d6a201542002012420010c20a200341f0096a20032903d00f221c20032903800f7c220c20032903d00d7c220f20032903e00d7c221420032903b00e7c221520032903c00d221d20032903e00f7c221620032903f00d7c220b20032903c00e7c221820032903900f7c221920032903800e221e20032903b00d7c221a20032903d00e7c221b20032903a00f7c221320032903f00f7c220820032903e00e221f20032903900e7c221220032903b00f7c22172003290380107c222020032903a00d7c222120032903c00f222220032903f00e7c22232003290390107c222420032903900d7c222520032903a00e7c2226423388200341c00f6a41086a290300200341f00e6a41086a2903007c2023202254ad7c20034190106a41086a2903007c2024202354ad7c200341900d6a41086a2903007c2025202454ad7c200341a00e6a41086a2903007c2026202554ad7c420d86847c2223423388200341e00e6a41086a290300200341900e6a41086a2903007c2012201f54ad7c200341b00f6a41086a2903007c2017201254ad7c20034180106a41086a2903007c2020201754ad7c200341a00d6a41086a2903007c2021202054ad7c2023202154ad7c420d86847c2212423388200341800e6a41086a290300200341b00d6a41086a2903007c201a201e54ad7c200341d00e6a41086a2903007c201b201a54ad7c200341a00f6a41086a2903007c2013201b54ad7c200341f00f6a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a423388200341c00d6a41086a290300200341e00f6a41086a2903007c2016201d54ad7c200341f00d6a41086a2903007c200b201654ad7c200341c00e6a41086a2903007c2018200b54ad7c200341900f6a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2218423388200341d00f6a41086a290300200341800f6a41086a2903007c200c201c54ad7c200341d00d6a41086a2903007c200f200c54ad7c200341e00d6a41086a2903007c2014200f54ad7c200341b00e6a41086a2903007c2015201454ad7c2018201554ad7c420d868442137e202642ffffffffffffff03837c222742ffffffffffffff0383220c420020032903e032222820032903d0347c220f20032903a00b7c22142003290390327c221520032903a0337c221620032903e033222920032903e0347c220b20032903800c7c221920032903a0327c221b20032903f0327c221320032903f033222a20032903f0347c220820032903b0337c221720032903e00c7c222020032903b0327c222120032903c033222b2003290380347c22242003290380337c222520032903f00c7c22262003290380357c221c200329039033222c20032903d0337c221d20032903800d7c221e20032903c0327c221f2003290390347c222242338820034190336a41086a290300200341d0336a41086a2903007c201d202c54ad7c200341800d6a41086a2903007c201e201d54ad7c200341c0326a41086a2903007c201f201e54ad7c20034190346a41086a2903007c2022201f54ad7c420d86847c221d423388200341c0336a41086a29030020034180346a41086a2903007c2024202b54ad7c20034180336a41086a2903007c2025202454ad7c200341f00c6a41086a2903007c2026202554ad7c20034180356a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341f0336a41086a290300200341f0346a41086a2903007c2008202a54ad7c200341b0336a41086a2903007c2017200854ad7c200341e00c6a41086a2903007c2020201754ad7c200341b0326a41086a2903007c2021202054ad7c2024202154ad7c420d86847c2208423388200341e0336a41086a290300200341e0346a41086a2903007c200b202954ad7c200341800c6a41086a2903007c2019200b54ad7c200341a0326a41086a2903007c201b201954ad7c200341f0326a41086a2903007c2013201b54ad7c2008201354ad7c420d86847c220b423388200341e0326a41086a290300200341d0346a41086a2903007c200f202854ad7c200341a00b6a41086a2903007c2014200f54ad7c20034190326a41086a2903007c2015201454ad7c200341a0336a41086a2903007c2016201554ad7c200b201654ad7c420d868442137e202242ffffffffffffff03837c221742ffffffffffffff0383220f420010c20a200341900b6a200b42ffffffffffffff0383221442002027423388202342ffffffffffffff03837c221542137e420010c20a200341f00b6a200842ffffffffffffff038322164200201242ffffffffffffff0383221942137e2208420010c20a200341d00c6a202442ffffffffffffff0383220b4200201a42ffffffffffffff0383221b42137e2213420010c20a200341c00a6a201842ffffffffffffff0383221242137e221a42002017423388201d42ffffffffffffff03837c2218420010c20a200341b00a6a200c42002018420010c20a200341e0096a20154200200f420010c20a200341800b6a201442002008420010c20a200341e00b6a201642002013420010c20a200341c00c6a200b4200201a420010c20a200341b00c6a200b4200200c420010c20a200341a00a6a201542002018420010c20a200341d0096a20194200200f420010c20a200341f00a6a201442002013420010c20a200341d00b6a20164200201a420010c20a200341c00b6a20164200200c420010c20a200341a00c6a200b42002015420010c20a200341900a6a201942002018420010c20a200341c0096a201b4200200f420010c20a200341e00a6a20144200201a420010c20a200341d00a6a20144200200c420010c20a200341b00b6a201642002015420010c20a200341900c6a200b42002019420010c20a200341800a6a201b42002018420010c20a200341b0096a20124200200f420010c20a200320032903f00a221220032903d0097c220c20032903d00b7c220f20032903b00c7c221420032903a00a7c221520032903e00b221720032903800b7c221620032903c00c7c220b20032903b00a7c221820032903e0097c221920032903d00c222020032903f00b7c221a20032903c00a7c221b20032903f0097c221320032903900b7c2208423388200341d00c6a41086a290300200341f00b6a41086a2903007c201a202054ad7c200341c00a6a41086a2903007c201b201a54ad7c200341f0096a41086a2903007c2013201b54ad7c200341900b6a41086a2903007c2008201354ad7c221b420d86847c221a423388200341e00b6a41086a290300200341800b6a41086a2903007c2016201754ad7c200341c00c6a41086a2903007c200b201654ad7c200341b00a6a41086a2903007c2018200b54ad7c200341e0096a41086a2903007c2019201854ad7c201b4233887c201a201954ad7c2213420d86847c221642ffffffffffffff03833703e840200320032903c009221720032903900a7c220b20032903e00a7c221820032903c00b7c221920032903a00c7c221b2016423388200341f00a6a41086a290300200341d0096a41086a2903007c200c201254ad7c200341d00b6a41086a2903007c200f200c54ad7c200341b00c6a41086a2903007c2014200f54ad7c200341a00a6a41086a2903007c2015201454ad7c20134233887c2016201554ad7c2213420d86847c220c42ffffffffffffff03833703f040200320032903800a221220032903900c7c220f20032903b0097c221420032903d00a7c221520032903b00b7c2216200c423388200341c0096a41086a290300200341900a6a41086a2903007c200b201754ad7c200341e00a6a41086a2903007c2018200b54ad7c200341c00b6a41086a2903007c2019201854ad7c200341a00c6a41086a2903007c201b201954ad7c20134233887c200c201b54ad7c220b420d86847c220c42ffffffffffffff03833703f8402003200c423388200341800a6a41086a290300200341900c6a41086a2903007c200f201254ad7c200341b0096a41086a2903007c2014200f54ad7c200341d00a6a41086a2903007c2015201454ad7c200341b00b6a41086a2903007c2016201554ad7c200b4233887c200c201654ad7c420d868442137e200842ffffffffffffff03837c220c42ffffffffffffff03833703d8402003200c423388201a42ffffffffffffff03837c3703e040200341a8c1006a200341d8c0006a41011078200341a0066a20032903a841220c42002004420010c20a200341a0096a20032903b041220f42137e42002010420010c20a200341d0086a20032903b841221442137e22184200200d420010c20a20034180086a20032903c041221642137e220b4200200a420010c20a200341b0076a20032903c841221942137e221542002007420010c20a200341b0066a200c42002007420010c20a20034190096a200f42002004420010c20a200341c0086a201842002010420010c20a200341f0076a200b4200200d420010c20a200341a0076a20154200200a420010c20a200341c0066a200c4200200a420010c20a20034180096a200f42002007420010c20a200341b0086a201442002004420010c20a200341e0076a200b42002010420010c20a20034190076a20154200200d420010c20a200341d0066a200c4200200d420010c20a200341f0086a200f4200200a420010c20a200341a0086a201442002007420010c20a200341d0076a201642002004420010c20a20034180076a201542002010420010c20a200341e0066a200c42002010420010c20a200341e0086a200f4200200d420010c20a20034190086a20144200200a420010c20a200341c0076a201642002007420010c20a200341f0066a201942002004420010c20a200320032903b00822102003290380097c220420032903e0077c22072003290390077c220a20032903c0067c220c20032903c008221a2003290390097c220f20032903f0077c221420032903a0077c221520032903b0067c221620032903d008221b20032903a0097c220b2003290380087c220d20032903a0067c221820032903b0077c2219423388200341d0086a41086a290300200341a0096a41086a2903007c200b201b54ad7c20034180086a41086a2903007c200d200b54ad7c200341a0066a41086a2903007c2018200d54ad7c200341b0076a41086a2903007c2019201854ad7c420d86847c220b423388200341c0086a41086a29030020034190096a41086a2903007c200f201a54ad7c200341f0076a41086a2903007c2014200f54ad7c200341a0076a41086a2903007c2015201454ad7c200341b0066a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220f42ffffffffffffff038337039041200320032903a008221820032903f0087c221420032903d0077c22152003290380077c221620032903d0067c220d200f423388200341b0086a41086a29030020034180096a41086a2903007c2004201054ad7c200341e0076a41086a2903007c2007200454ad7c20034190076a41086a2903007c200a200754ad7c200341c0066a41086a2903007c200c200a54ad7c200f200c54ad7c420d86847c220442ffffffffffffff0383370398412003200329039008221020032903e0087c220720032903c0077c220a20032903f0067c220c20032903e0067c220f2004423388200341a0086a41086a290300200341f0086a41086a2903007c2014201854ad7c200341d0076a41086a2903007c2015201454ad7c20034180076a41086a2903007c2016201554ad7c200341d0066a41086a2903007c200d201654ad7c2004200d54ad7c420d86847c220442ffffffffffffff03833703a0412003200442338820034190086a41086a290300200341e0086a41086a2903007c2007201054ad7c200341c0076a41086a2903007c200a200754ad7c200341f0066a41086a2903007c200c200a54ad7c200341e0066a41086a2903007c200f200c54ad7c2004200f54ad7c420d868442137e201942ffffffffffffff03837c220442ffffffffffffff03833703804120032004423388200b42ffffffffffffff03837c37038841200341b0c0006a20034180c1006a107520034188c0006a20011075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b202d1077212f200341a8c1006a41086a42f0ffffffffffff3f200141086a2903007d220442ffffffffffffff038342d0fdffffffffff3f20012903007d22074233887c370300200341a8c1006a41106a42f0ffffffffffff3f200141106a2903007d220a42ffffffffffffff038320044233887c370300200341a8c1006a41186a42f0ffffffffffff3f200141186a2903007d220442ffffffffffffff0383200a4233887c370300200341a8c1006a41206a42f0ffffffffffff3f200141206a2903007d220a42ffffffffffffff038320044233887c3703002003200a42338842137e200742ffffffffffffff03837c3703a841200341b0c0006a20034180c1006a107520034188c0006a200341a8c1006a1075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b200341a0046a42f0ffffffffffff3f200e7d220742338842137e42d0fdffffffffff3f20117d220e42ffffffffffffff03837c2204420042b0c1bad0f4e48603420010c20a200341d0036a42f0ffffffffffff3f20057d220a423388200742ffffffffffffff03837c2207420042a7a7fbf49beaf607420010c20a200341f0046a42f0ffffffffffff3f20067d2211423388200a42ffffffffffffff03837c220a420042a0d69f90da80b1cb00420010c20a200341c0056a42f0ffffffffffff3f20097d2205423388201142ffffffffffffff03837c2211420042badf96dcb5c3bac700420010c20a20034190066a200542ffffffffffffff0383200e4233887c220e420042a7ecfac2b5f7ea19420010c20a20034180066a200e420042b0c1bad0f4e48603420010c20a20034190046a20044200429db1bce4dfb435420010c20a200341c0036a2007420042a0d69f90da80b1cb00420010c20a200341e0046a200a420042badf96dcb5c3bac700420010c20a200341b0056a2011420042a7ecfac2b5f7ea19420010c20a200341a0056a2011420042b0c1bad0f4e48603420010c20a200341f0056a200e4200429db1bce4dfb435420010c20a20034180046a2004420042e098f4e5e9ebfb03420010c20a200341b0036a2007420042badf96dcb5c3bac700420010c20a200341d0046a200a420042a7ecfac2b5f7ea19420010c20a200341c0046a200a420042b0c1bad0f4e48603420010c20a20034190056a20114200429db1bce4dfb435420010c20a200341e0056a200e420042e098f4e5e9ebfb03420010c20a200341f0036a20044200429e9981b4dab2e103420010c20a200341a0036a2007420042a7ecfac2b5f7ea19420010c20a20034190036a2007420042b0c1bad0f4e48603420010c20a200341b0046a200a4200429db1bce4dfb435420010c20a20034180056a2011420042e098f4e5e9ebfb03420010c20a200341d0056a200e4200429e9981b4dab2e103420010c20a200341e0036a20044200429df893c0a486ae01420010c20a200341c0036a41086a290300211820034190046a41086a290300211920032903c00321042003290390042109200341e0046a41086a290300211020032903e004210c200341b0056a41086a290300211a20032903b005210f20034180066a41086a290300211b2003290380062114200341d0036a41086a2903002113200341a0046a41086a290300210820032903d003210720032903a0042115200341f0046a41086a290300211220032903f0042116200341c0056a41086a290300211720032903c005210b20034190066a41086a2903002120200329039006210d20032903b003210a200329038004211120032903d004210e20032903a005210520032903f0052106202d10772130200320062005200e200a20117c22117c220e7c22057c22062014200f200c200420097c22097c220c7c220f7c2214200d200b2016200720157c22157c22167c220b7c220d423388202020172012201320087c2015200754ad7c7c2016201554ad7c7c200b201654ad7c7c200d200b54ad7c2215420d86847c2207423388201b201a2010201820197c2009200454ad7c7c200c200954ad7c7c200f200c54ad7c7c2014200f54ad7c20154233887c2007201454ad7c2215420d86847c220442ffffffffffffff03833703b841200320032903a003221620032903f0037c220920032903c0047c220c2003290390057c220f20032903e0057c22142004423388200341b0036a41086a29030020034180046a41086a2903007c2011200a54ad7c200341d0046a41086a2903007c200e201154ad7c200341a0056a41086a2903007c2005200e54ad7c200341f0056a41086a2903007c2006200554ad7c20154233887c2004200654ad7c2206420d86847c220442ffffffffffffff03833703c0412003200329039003221520032903e0037c220a20032903b0047c22112003290380057c220e20032903d0057c22052004423388200341a0036a41086a290300200341f0036a41086a2903007c2009201654ad7c200341c0046a41086a2903007c200c200954ad7c20034190056a41086a2903007c200f200c54ad7c200341e0056a41086a2903007c2014200f54ad7c20064233887c2004201454ad7c2206420d86847c220442ffffffffffffff03833703c8412003200442338820034190036a41086a290300200341e0036a41086a2903007c200a201554ad7c200341b0046a41086a2903007c2011200a54ad7c20034180056a41086a2903007c200e201154ad7c200341d0056a41086a2903007c2005200e54ad7c20064233887c2004200554ad7c420d868442137e200d42ffffffffffffff03837c220442ffffffffffffff03833703a84120032004423388200742ffffffffffffff03837c3703b041200341b0c0006a20034180c1006a107520034188c0006a200341a8c1006a1075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b202d1077213120034180036a20032903d8402204420042b0c1bad0f4e48603420010c20a2003200341d8c0006a41086a2202290300220742137e4200429df893c0a486ae01420010c20a200341e0006a200341d8c0006a41106a222d290300220a42137e22064200429e9981b4dab2e103420010c20a200341c0016a200341d8c0006a41186a222e290300220e42137e2205420042e098f4e5e9ebfb03420010c20a200341a0026a200341d8c0006a41206a2201290300220942137e22114200429db1bce4dfb435420010c20a200341f0026a20044200429db1bce4dfb435420010c20a200341c0006a2007420042b0c1bad0f4e48603420010c20a200341d0006a20064200429df893c0a486ae01420010c20a200341b0016a20054200429e9981b4dab2e103420010c20a20034190026a2011420042e098f4e5e9ebfb03420010c20a200341e0026a2004420042e098f4e5e9ebfb03420010c20a200341306a20074200429db1bce4dfb435420010c20a20034190016a200a420042b0c1bad0f4e48603420010c20a200341a0016a20054200429df893c0a486ae01420010c20a20034180026a20114200429e9981b4dab2e103420010c20a200341d0026a20044200429e9981b4dab2e103420010c20a200341206a2007420042e098f4e5e9ebfb03420010c20a20034180016a200a4200429db1bce4dfb435420010c20a200341e0016a200e420042b0c1bad0f4e48603420010c20a200341f0016a20114200429df893c0a486ae01420010c20a200341c0026a20044200429df893c0a486ae01420010c20a200341106a20074200429e9981b4dab2e103420010c20a200341f0006a200a420042e098f4e5e9ebfb03420010c20a200341d0016a200e4200429db1bce4dfb435420010c20a200341b0026a2009420042b0c1bad0f4e48603420010c20a200341c0006a41086a2903002119200341d0006a41086a29030021102003290340210c20032903502107200341b0016a41086a290300211a20032903b001210f20034190026a41086a290300211b2003290390022114200341f0026a41086a290300211320032903f0022115200341086a2903002108200341e0006a41086a2903002112200329030021162003290360210a200341c0016a41086a290300211720032903c001210b20034180036a41086a2903002120200329038003210d200341a0026a41086a290300212120032903a00221182003290330210e200329039001211120032903a0012105200329038002210620032903e0022109203120307210772131202d2009200620052011200e7c220e7c22057c22067c220920152014200f2007200c7c220c7c220f7c22147c22152018200d200b200a20167c22167c220b7c220d7c2218423388202120202017201220087c2016200a54ad7c7c200b201654ad7c7c200d200b54ad7c7c2018200d54ad7c420d86847c22164233882013201b201a201020197c200c200754ad7c7c200f200c54ad7c7c2014200f54ad7c7c2015201454ad7c2016201554ad7c420d86847c220c42ffffffffffffff0383202d290300220a8542002031ad42ff01837d220783200a85220a370300202e200329038001220d20032903207c220f20032903e0017c221420032903f0017c221520032903d0027c220b200c42338820034190016a41086a290300200341306a41086a2903007c200e201154ad7c200341a0016a41086a2903007c2005200e54ad7c20034180026a41086a2903007c2006200554ad7c200341e0026a41086a2903007c2009200654ad7c200c200954ad7c420d86847c220e42ffffffffffffff0383202e290300221185200783201185221137030020012003290370221920032903107c220520032903d0017c220620032903b0027c220920032903c0027c220c200e42338820034180016a41086a290300200341206a41086a2903007c200f200d54ad7c200341e0016a41086a2903007c2014200f54ad7c200341f0016a41086a2903007c2015201454ad7c200341d0026a41086a2903007c200b201554ad7c200e200b54ad7c420d86847c220f42ffffffffffffff03832001290300220e85200783200e85220e3703002002200f423388200341f0006a41086a290300200341106a41086a2903007c2005201954ad7c200341d0016a41086a2903007c2006200554ad7c200341b0026a41086a2903007c2009200654ad7c200341c0026a41086a2903007c200c200954ad7c200f200c54ad7c420d868442137e201842ffffffffffffff03837c2206423388201642ffffffffffffff03837c20022903002205852007832005852205370300200320042004200642ffffffffffffff0383852007838522073703d84020034188c0006a200341d8c0006a1075200142f0ffffffffffff3f200e7d220642ffffffffffffff038342f0ffffffffffff3f20117d22094233887c200e85420020032d0088404101711077ad42ff01837d220483200e85370300202e200942ffffffffffffff038342f0ffffffffffff3f200a7d220e4233887c201185200483201185370300202d200e42ffffffffffffff038342f0ffffffffffff3f20057d22114233887c200a85200483200a853703002002201142ffffffffffffff038342d0fdffffffffff3f20077d220a4233887c2005852004832005853703002003200642338842137e200a42ffffffffffffff03837c2007852004832007853703d84020002030202f7210773a0000200041286a2001290300370300200041206a202e290300370300200041186a202d290300370300200041106a2002290300370300200020032903d840370308200341d0c1006a24000bd003011a7e200131001221022001310011210320013100102104200131000f2105200131000d2106200131000e2107200131001f2108200131001e2109200131001d210a200131001c210b200131001b210c200131001a210d200131000c210e200131000b210f200131000a21102001310009211120013100072112200131000821132001310019211420013100182115200131001721162001310016211720013100132118200131001421192001310015211a200020013500002001310004422086842001310005422886842001310006221b4230868442ffffffffffffff038337030020002018201942088684201a4210868420174218868420164220868420154228868420144230868442018842ffffffffffffff03833703182000201b201242088684201342108684201142188684201042208684200f42288684200e4230868442038842ffffffffffffff038337030820002015201442088684200d42108684200c42188684200b42208684200a42288684200942308684200842388684420c8842ffffffffffffff03833703202000200e20064208868420074210868420054218868420044220868420034228868420024230868420184238868442068842ffffffffffffff03833703100bdf9c0103047f237e087f230041e02c6b22022400200241d8286a41106a22034200370300200241d8286a41186a22044200370300200241d8286a41206a22054200370300200242003703e028200242013703d828200241982b6a200141011078200241c8256a20022903982b2206420042b0c1bad0f4e48603420010c20a200241c8286a20022903a02b220742137e4200429df893c0a486ae01420010c20a200241f8276a20022903a82b220842137e22094200429e9981b4dab2e103420010c20a200241a8276a20022903b02b220a42137e220b420042e098f4e5e9ebfb03420010c20a200241d8266a20022903b82b220c42137e220d4200429db1bce4dfb435420010c20a200241d8256a20064200429db1bce4dfb435420010c20a200241b8286a2007420042b0c1bad0f4e48603420010c20a200241e8276a20094200429df893c0a486ae01420010c20a20024198276a200b4200429e9981b4dab2e103420010c20a200241c8266a200d420042e098f4e5e9ebfb03420010c20a200241e8256a2006420042e098f4e5e9ebfb03420010c20a200241a8286a20074200429db1bce4dfb435420010c20a200241d8276a2008420042b0c1bad0f4e48603420010c20a20024188276a200b4200429df893c0a486ae01420010c20a200241b8266a200d4200429e9981b4dab2e103420010c20a200241f8256a20064200429e9981b4dab2e103420010c20a20024198286a2007420042e098f4e5e9ebfb03420010c20a200241c8276a20084200429db1bce4dfb435420010c20a200241f8266a200a420042b0c1bad0f4e48603420010c20a200241a8266a200d4200429df893c0a486ae01420010c20a20024188266a20064200429df893c0a486ae01420010c20a20024188286a20074200429e9981b4dab2e103420010c20a200241b8276a2008420042e098f4e5e9ebfb03420010c20a200241e8266a200a4200429db1bce4dfb435420010c20a20024198266a200c420042b0c1bad0f4e48603420010c20a200241b81d6a200229038826220e2002290398267c22062002290388287c220720022903b8277c220820022903e8267c220d20022903a826220f20022903f8267c220a20022903f8257c220b2002290398287c220920022903c8277c220c200229038827221020022903d8277c221120022903b8267c221220022903e8257c221320022903a8287c221420022903e827221520022903b8287c22162002290398277c221720022903c8267c221820022903d8257c221920022903c828221a20022903c8257c221b20022903f8277c221c20022903a8277c221d20022903d8267c221e423388200241c8286a41086a290300200241c8256a41086a2903007c201b201a54ad7c200241f8276a41086a2903007c201c201b54ad7c200241a8276a41086a2903007c201d201c54ad7c200241d8266a41086a2903007c201e201d54ad7c420d86847c221b423388200241e8276a41086a290300200241b8286a41086a2903007c2016201554ad7c20024198276a41086a2903007c2017201654ad7c200241c8266a41086a2903007c2018201754ad7c200241d8256a41086a2903007c2019201854ad7c201b201954ad7c420d86847c221642338820024188276a41086a290300200241d8276a41086a2903007c2011201054ad7c200241b8266a41086a2903007c2012201154ad7c200241e8256a41086a2903007c2013201254ad7c200241a8286a41086a2903007c2014201354ad7c2016201454ad7c420d86847c2211423388200241a8266a41086a290300200241f8266a41086a2903007c200a200f54ad7c200241f8256a41086a2903007c200b200a54ad7c20024198286a41086a2903007c2009200b54ad7c200241c8276a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a42338820024188266a41086a29030020024198266a41086a2903007c2006200e54ad7c20024188286a41086a2903007c2007200654ad7c200241b8276a41086a2903007c2008200754ad7c200241e8266a41086a2903007c200d200854ad7c200a200d54ad7c420d868442137e201e42ffffffffffffff03837c220742ffffffffffffff0383220620022903d8287c220b420042f682ffa299b88202420010c20a200241d81c6a200a42ffffffffffffff0383220a20052903007c2209420042ddf396f0fbf7b9c300420010c20a200241e81c6a201142ffffffffffffff0383220d20042903007c220c420042ccf7d9e9fbcee010420010c20a20024188236a201642ffffffffffffff0383220820032903007c22114200428df582a3b0868004420010c20a200241e8216a2007423388201b42ffffffffffffff03837c220720022903e0287c22124200429aebd0c282f1c201420010c20a200241f8216a2012420042f682ffa299b88202420010c20a200241c81d6a200b420042cff887b5bcb5c603420010c20a200241c81c6a2009420042ccf7d9e9fbcee010420010c20a200241f81c6a200c4200428df582a3b0868004420010c20a20024198236a20114200429aebd0c282f1c201420010c20a200241a8236a2011420042f682ffa299b88202420010c20a20024188226a2012420042cff887b5bcb5c603420010c20a200241d81d6a200b420042848dc885f9eff000420010c20a200241b81c6a20094200428df582a3b0868004420010c20a200241881d6a200c4200429aebd0c282f1c201420010c20a200241981d6a200c420042f682ffa299b88202420010c20a200241b8236a2011420042cff887b5bcb5c603420010c20a20024198226a2012420042848dc885f9eff000420010c20a200241e81d6a200b420042dfddd7d2ccf91a420010c20a200241a81c6a20094200429aebd0c282f1c201420010c20a200241981c6a2009420042f682ffa299b88202420010c20a200241a81d6a200c420042cff887b5bcb5c603420010c20a200241c8236a2011420042848dc885f9eff000420010c20a200241a8226a2012420042dfddd7d2ccf91a420010c20a200241f81d6a200b420042bed6acd4f2a00a420010c20a200220022903b81c221c20022903d81d7c220b20022903881d7c220920022903a8237c220c2002290388227c221120022903c81c221d20022903c81d7c221220022903f81c7c22132002290398237c221420022903f8217c221620022903d81c221e20022903b81d7c221720022903e81c7c22182002290388237c221920022903e8217c221b423388200241d81c6a41086a290300200241b81d6a41086a2903007c2017201e54ad7c200241e81c6a41086a2903007c2018201754ad7c20024188236a41086a2903007c2019201854ad7c200241e8216a41086a2903007c201b201954ad7c420d86847c2217423388200241c81c6a41086a290300200241c81d6a41086a2903007c2012201d54ad7c200241f81c6a41086a2903007c2013201254ad7c20024198236a41086a2903007c2014201354ad7c200241f8216a41086a2903007c2016201454ad7c2017201654ad7c420d86847c221242ffffffffffffff038337039029200220022903a81c221920022903e81d7c221320022903981d7c221420022903b8237c22162002290398227c22182012423388200241b81c6a41086a290300200241d81d6a41086a2903007c200b201c54ad7c200241881d6a41086a2903007c2009200b54ad7c200241a8236a41086a2903007c200c200954ad7c20024188226a41086a2903007c2011200c54ad7c2012201154ad7c420d86847c220b42ffffffffffffff038337039829200220022903981c221c20022903f81d7c220920022903a81d7c220c20022903c8237c221120022903a8227c2212200b423388200241a81c6a41086a290300200241e81d6a41086a2903007c2013201954ad7c200241981d6a41086a2903007c2014201354ad7c200241b8236a41086a2903007c2016201454ad7c20024198226a41086a2903007c2018201654ad7c200b201854ad7c420d86847c220b42ffffffffffffff03833703a0292002200b423388200241981c6a41086a290300200241f81d6a41086a2903007c2009201c54ad7c200241a81d6a41086a2903007c200c200954ad7c200241c8236a41086a2903007c2011200c54ad7c200241a8226a41086a2903007c2012201154ad7c200b201254ad7c420d868442137e201b42ffffffffffffff03837c220b42ffffffffffffff0383370380292002200b423388201742ffffffffffffff03837c37038829200241d8216a2006420042a3f1e59aa1b9d301420010c20a200241f8226a200742137e221f420042ffed8af7ec86c802420010c20a200241e8236a200842137e2213420042bbf9809de6b8ce03420010c20a20024198246a200d42137e2214420042a9808780a6f4f902420010c20a200241d8246a200a42137e220b420042bdddd5d88385ea00420010c20a200241c8216a2006420042bdddd5d88385ea00420010c20a200241e8226a2007420042a3f1e59aa1b9d301420010c20a200241d8236a2013420042ffed8af7ec86c802420010c20a20024188246a2014420042bbf9809de6b8ce03420010c20a200241c8246a200b420042a9808780a6f4f902420010c20a200241b8216a2006420042a9808780a6f4f902420010c20a200241d8226a2007420042bdddd5d88385ea00420010c20a200241e8246a2008420042a3f1e59aa1b9d301420010c20a200241f8236a2014420042ffed8af7ec86c802420010c20a200241b8246a200b420042bbf9809de6b8ce03420010c20a200241a8216a2006420042bbf9809de6b8ce03420010c20a200241c8226a2007420042a9808780a6f4f902420010c20a200241f8246a2008420042bdddd5d88385ea00420010c20a20024198256a200d420042a3f1e59aa1b9d301420010c20a200241a8246a200b420042ffed8af7ec86c802420010c20a200241d8206a2006420042ffed8af7ec86c802420010c20a200241b8226a2007420042bbf9809de6b8ce03420010c20a20024188256a2008420042a9808780a6f4f902420010c20a200241a8256a200d420042bdddd5d88385ea00420010c20a200241b8256a200a420042a3f1e59aa1b9d301420010c20a200241881e6a200642a3f1e59aa1b9d3017c2209420042efffffffffffffc30020022903d820222020022903b8257c220c20022903b8227c22112002290388257c221220022903a8257c221620022903a82422212002290398257c221720022903a8217c221820022903c8227c221920022903f8247c221b20022903f823222220022903e8247c221c20022903b8247c221d20022903b8217c221e20022903d8227c220e20022903d823222320022903e8227c220f2002290388247c221020022903c8247c221520022903c8217c221a20022903f822222420022903d8217c222520022903e8237c22262002290398247c222720022903d8247c2228423388200241f8226a41086a290300200241d8216a41086a2903007c2025202454ad7c200241e8236a41086a2903007c2026202554ad7c20024198246a41086a2903007c2027202654ad7c200241d8246a41086a2903007c2028202754ad7c420d86847c2225423388200241d8236a41086a290300200241e8226a41086a2903007c200f202354ad7c20024188246a41086a2903007c2010200f54ad7c200241c8246a41086a2903007c2015201054ad7c200241c8216a41086a2903007c201a201554ad7c2025201a54ad7c420d86847c220f423388200241f8236a41086a290300200241e8246a41086a2903007c201c202254ad7c200241b8246a41086a2903007c201d201c54ad7c200241b8216a41086a2903007c201e201d54ad7c200241d8226a41086a2903007c200e201e54ad7c200f200e54ad7c420d86847c221c423388200241a8246a41086a29030020024198256a41086a2903007c2017202154ad7c200241a8216a41086a2903007c2018201754ad7c200241c8226a41086a2903007c2019201854ad7c200241f8246a41086a2903007c201b201954ad7c201c201b54ad7c420d86847c221742ffffffffffffff03837d221842338842137e42bcfdffffffffffc3002017423388200241d8206a41086a290300200241b8256a41086a2903007c200c202054ad7c200241b8226a41086a2903007c2011200c54ad7c20024188256a41086a2903007c2012201154ad7c200241a8256a41086a2903007c2016201254ad7c2017201654ad7c420d868442137e202842ffffffffffffff03837c221642ffffffffffffff03837d221942ffffffffffffff03837c220c420010c20a200241881f6a201842ffffffffffffff038342efffffffffffffc300201c42ffffffffffffff03837d22124233887c22114200201f4287f0dc94c6dfde0f7c420010c20a20024198216a201242ffffffffffffff038342efffffffffffffc300200f42ffffffffffffff03837d22174233887c221242002013428b868581d2a18c387c2218420010c20a200241c8206a201742ffffffffffffff038342efffffffffffffc3002016423388202542ffffffffffffff03837c7d22164233887c22134200201442e18392a796b7d2c4007c2217420010c20a20024188206a201642ffffffffffffff038320194233887c22144200200b42eda9ced69582d9307c220b420010c20a200241981e6a201442002009420010c20a200241c81f6a200c4200200742bdddd5d88385ea007c2216420010c20a200241f81e6a201142002018420010c20a20024188216a201242002017420010c20a200241b8206a20134200200b420010c20a200241a81e6a201342002009420010c20a200241f81f6a201442002016420010c20a200241b81f6a200c4200200842a9808780a6f4f9027c2218420010c20a200241e81e6a201142002017420010c20a200241f8206a20124200200b420010c20a200241b81e6a201242002009420010c20a200241a8206a201342002016420010c20a200241e81f6a201442002018420010c20a200241a81f6a200c4200200d42bbf9809de6b8ce037c2217420010c20a200241d81e6a20114200200b420010c20a200241c81e6a201142002009420010c20a200241e8206a201242002016420010c20a20024198206a201342002018420010c20a200241d81f6a201442002017420010c20a200241981f6a200c4200200a42ffed8af7ec86c8027c420010c20a200220022903e81e221c20022903b81f7c220b20022903f8207c220920022903a81e7c220c20022903f81f7c221120022903f81e221d20022903c81f7c22122002290388217c221320022903b8207c221420022903981e7c221620022903881f221e20022903881e7c22172002290398217c221820022903c8207c22192002290388207c221b423388200241881f6a41086a290300200241881e6a41086a2903007c2017201e54ad7c20024198216a41086a2903007c2018201754ad7c200241c8206a41086a2903007c2019201854ad7c20024188206a41086a2903007c201b201954ad7c420d86847c2217423388200241f81e6a41086a290300200241c81f6a41086a2903007c2012201d54ad7c20024188216a41086a2903007c2013201254ad7c200241b8206a41086a2903007c2014201354ad7c200241981e6a41086a2903007c2016201454ad7c2017201654ad7c420d86847c221242ffffffffffffff03833703e029200220022903d81e221920022903a81f7c221320022903b81e7c221420022903a8207c221620022903e81f7c22182012423388200241e81e6a41086a290300200241b81f6a41086a2903007c200b201c54ad7c200241f8206a41086a2903007c2009200b54ad7c200241a81e6a41086a2903007c200c200954ad7c200241f81f6a41086a2903007c2011200c54ad7c2012201154ad7c420d86847c220b42ffffffffffffff03833703e829200220022903c81e221c20022903981f7c220920022903e8207c220c2002290398207c221120022903d81f7c2212200b423388200241d81e6a41086a290300200241a81f6a41086a2903007c2013201954ad7c200241b81e6a41086a2903007c2014201354ad7c200241a8206a41086a2903007c2016201454ad7c200241e81f6a41086a2903007c2018201654ad7c200b201854ad7c420d86847c220b42ffffffffffffff03833703f0292002200b423388200241c81e6a41086a290300200241981f6a41086a2903007c2009201c54ad7c200241e8206a41086a2903007c200c200954ad7c20024198206a41086a2903007c2011200c54ad7c200241d81f6a41086a2903007c2012201154ad7c200b201254ad7c420d868442137e201b42ffffffffffffff03837c220b42ffffffffffffff03833703d0292002200b423388201742ffffffffffffff03837c3703d829200241982b6a20024180296a200241d0296a107920022d00982b2129200241a02a6a41206a222a200241c02b6a290300220b370300200241a02a6a41186a222b200241982b6a41206a2903002209370300200241a02a6a41106a222c200241982b6a41186a290300220c370300200241a02a6a41086a222d200241982b6a41106a2903002211370300200220022903a02b22123703a02a20024188196a2001290300221342002012420010c20a200241881c6a200b42002001290308221442137e420010c20a200241b81b6a200942002001290310221642137e221b420010c20a200241e81a6a200c42002001290318221842137e2219420010c20a200241981a6a201142002001290320221c42137e2217420010c20a20024198196a201142002013420010c20a200241f81b6a201242002014420010c20a200241a81b6a200b4200201b420010c20a200241d81a6a200942002019420010c20a200241881a6a200c42002017420010c20a200241a8196a200c42002013420010c20a200241e81b6a201142002014420010c20a200241981b6a201242002016420010c20a200241c81a6a200b42002019420010c20a200241f8196a200942002017420010c20a200241b8196a200942002013420010c20a200241d81b6a200c42002014420010c20a200241881b6a201142002016420010c20a200241b81a6a201242002018420010c20a200241e8196a200b42002017420010c20a200241c8196a200b42002013420010c20a200241c81b6a200942002014420010c20a200241f81a6a200c42002016420010c20a200241a81a6a201142002018420010c20a200241d8196a20124200201c420010c20a200220022903c819222520022903d8197c220b20022903c81b7c220920022903f81a7c220c20022903a81a7c221120022903e819222620022903b81a7c221220022903b8197c221320022903d81b7c221420022903881b7c221620022903c81a222720022903981b7c221720022903f8197c221820022903a8197c221920022903e81b7c221b20022903a81b222820022903f81b7c221c20022903d81a7c221d20022903881a7c221e2002290398197c220e20022903881c221f2002290388197c220f20022903b81b7c221020022903e81a7c221520022903981a7c221a423388200241881c6a41086a29030020024188196a41086a2903007c200f201f54ad7c200241b81b6a41086a2903007c2010200f54ad7c200241e81a6a41086a2903007c2015201054ad7c200241981a6a41086a2903007c201a201554ad7c420d86847c220f423388200241a81b6a41086a290300200241f81b6a41086a2903007c201c202854ad7c200241d81a6a41086a2903007c201d201c54ad7c200241881a6a41086a2903007c201e201d54ad7c20024198196a41086a2903007c200e201e54ad7c200f200e54ad7c420d86847c221c423388200241c81a6a41086a290300200241981b6a41086a2903007c2017202754ad7c200241f8196a41086a2903007c2018201754ad7c200241a8196a41086a2903007c2019201854ad7c200241e81b6a41086a2903007c201b201954ad7c201c201b54ad7c420d86847c2217423388200241e8196a41086a290300200241b81a6a41086a2903007c2012202654ad7c200241b8196a41086a2903007c2013201254ad7c200241d81b6a41086a2903007c2014201354ad7c200241881b6a41086a2903007c2016201454ad7c2017201654ad7c420d86847c2212423388200241c8196a41086a290300200241d8196a41086a2903007c200b202554ad7c200241c81b6a41086a2903007c2009200b54ad7c200241f81a6a41086a2903007c200c200954ad7c200241a81a6a41086a2903007c2011200c54ad7c2012201154ad7c420d868442137e201a42ffffffffffffff03837c220b42ffffffffffffff03833703c82a2002200b423388200f42ffffffffffffff03837c22093703d02a2002201242ffffffffffffff0383220c3703e82a2002201742ffffffffffffff038322113703e02a2002201c42ffffffffffffff038322123703d82a200241982b6a200241c82a6a107520022d00982b4101711077417f73410171107721012002200942f0ffffffffffff3f20097d221442ffffffffffffff038342d0fdffffffffff3f20022903c82a22137d22164233887c8542002001ad42ff01837d220b8320098522093703d02a2002200c42f0ffffffffffff3f200c7d221742ffffffffffffff038342f0ffffffffffff3f20117d22184233887c85200b83200c85220c3703e82a2002201242f0ffffffffffff3f20127d221942ffffffffffffff038320144233887c85200b8320128522123703d82a200220132013201742338842137e201642ffffffffffffff03837c85200b838522133703c82a20022011201842ffffffffffffff038320194233887c85200b8320118522113703e02a2029417f73410171220110772129202d202d290300221420098542002029ad42ff01837d220b83201485370300202c202c2903002209201285200b83200985370300202b202b2903002209201185200b83200985370300202a202a2903002209200c85200b83200985370300200220022903a02a2209201385200b832009853703a02a200110772101200241c8146a200a20052903007d42f0ffffffffffff3f7c221442338842137e200620022903d8287d42d0fdffffffffff3f7c220c42ffffffffffffff03837c220b4200200642ecffffffffffff038542002001ad42ff01837d22068342ecffffffffffff03852209420010c20a20024188126a200a42ffffffffffffff038520068342ffffffffffffff0385220a4200200720022903e0287d42f0ffffffffffff3f7c221242ffffffffffffff0383200c4233887c220c42137e420010c20a200241d8126a200d42ffffffffffffff038520068342ffffffffffffff038522114200200820032903007d42f0ffffffffffff3f7c221342ffffffffffffff038320124233887c221242137e2216420010c20a200241a8136a200842ffffffffffffff038520068342ffffffffffffff038522084200200d20042903007d42f0ffffffffffff3f7c221742ffffffffffffff038320134233887c220d42137e2213420010c20a200241f8136a200742ffffffffffffff038520068342ffffffffffffff038522064200201442ffffffffffffff038320174233887c221442137e2207420010c20a200241e8136a20064200200b420010c20a200241b8146a20094200200c420010c20a200241f8116a200a42002016420010c20a200241c8126a201142002013420010c20a20024198136a200842002007420010c20a20024188136a20084200200b420010c20a200241d8136a20064200200c420010c20a200241a8146a200942002012420010c20a200241e8116a200a42002013420010c20a200241b8126a201142002007420010c20a200241a8126a20114200200b420010c20a200241f8126a20084200200c420010c20a200241c8136a200642002012420010c20a20024198146a20094200200d420010c20a20024188116a200a42002007420010c20a200241a8106a200a4200200b420010c20a20024198126a20114200200c420010c20a200241e8126a200842002012420010c20a200241b8136a20064200200d420010c20a20024188146a200942002014420010c20a200241f80e6a20022903a810220e2002290388147c22062002290398127c220720022903e8127c220820022903b8137c220d200229038811220f2002290398147c220a20022903a8127c220b20022903f8127c220920022903c8137c220c20022903e811221020022903a8147c221120022903b8127c22122002290388137c221320022903d8137c221420022903f811221520022903b8147c221620022903c8127c22172002290398137c221820022903e8137c2219200229038812221a20022903c8147c221b20022903d8127c221c20022903a8137c221d20022903f8137c221e42338820024188126a41086a290300200241c8146a41086a2903007c201b201a54ad7c200241d8126a41086a2903007c201c201b54ad7c200241a8136a41086a2903007c201d201c54ad7c200241f8136a41086a2903007c201e201d54ad7c420d86847c221b423388200241f8116a41086a290300200241b8146a41086a2903007c2016201554ad7c200241c8126a41086a2903007c2017201654ad7c20024198136a41086a2903007c2018201754ad7c200241e8136a41086a2903007c2019201854ad7c201b201954ad7c420d86847c2216423388200241e8116a41086a290300200241a8146a41086a2903007c2011201054ad7c200241b8126a41086a2903007c2012201154ad7c20024188136a41086a2903007c2013201254ad7c200241d8136a41086a2903007c2014201354ad7c2016201454ad7c420d86847c221142338820024188116a41086a29030020024198146a41086a2903007c200a200f54ad7c200241a8126a41086a2903007c200b200a54ad7c200241f8126a41086a2903007c2009200b54ad7c200241c8136a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a423388200241a8106a41086a29030020024188146a41086a2903007c2006200e54ad7c20024198126a41086a2903007c2007200654ad7c200241e8126a41086a2903007c2008200754ad7c200241b8136a41086a2903007c200d200854ad7c200a200d54ad7c420d868442137e201e42ffffffffffffff03837c220b42ffffffffffffff03832206420042a09ab5a7a4d5d602420010c20a20024198106a200a42ffffffffffffff03832207420042efabafe6f7c88835420010c20a200241f8106a201142ffffffffffffff03832208420042f8fb9b94e0ed8617420010c20a200241d8116a201642ffffffffffffff0383220d4200428b83d98ea38bdb0a420010c20a200241c80f6a200b423388201b42ffffffffffffff03837c220a420042e6c09290d28a8b35420010c20a200241b80f6a200a420042a09ab5a7a4d5d602420010c20a200241e80e6a2006420042b5cccc99bcc0e502420010c20a20024188106a2007420042f8fb9b94e0ed8617420010c20a200241e8106a20084200428b83d98ea38bdb0a420010c20a200241c8116a200d420042e6c09290d28a8b35420010c20a200241b8116a200d420042a09ab5a7a4d5d602420010c20a200241a80f6a200a420042b5cccc99bcc0e502420010c20a200241d80e6a2006420042a8f2a9fabaa79b01420010c20a200241f80f6a20074200428b83d98ea38bdb0a420010c20a200241d8106a2008420042e6c09290d28a8b35420010c20a200241c8106a2008420042a09ab5a7a4d5d602420010c20a200241a8116a200d420042b5cccc99bcc0e502420010c20a200241980f6a200a420042a8f2a9fabaa79b01420010c20a200241c80e6a2006420042a9afa6f3e694c800420010c20a200241e80f6a2007420042e6c09290d28a8b35420010c20a200241d80f6a2007420042a09ab5a7a4d5d602420010c20a200241b8106a2008420042b5cccc99bcc0e502420010c20a20024198116a200d420042a8f2a9fabaa79b01420010c20a200241880f6a200a420042a9afa6f3e694c800420010c20a200241b80e6a2006420042c2cdbdbdb3d1e502420010c20a20022903f029211220022903e829211120022903e029210820022903d829210620022903d0292107200241f02a6a200241a02a6a41011078200241b82c6a41086a2203202d290300220d370300200241b82c6a41106a222d202c290300220a370300200241b82c6a41186a2201202b290300220b370300200241b82c6a41206a222b202a2903003703002003200d200d7c220d370300202d200a200a7c220a3703002001200b20012903007c220b370300200220022903a02a220920097c22093703b82c202b202b290300202a2903007c220c37030020024188186a200742002009420010c20a200241f8166a200c4200200642137e420010c20a200241c8176a200b4200200842137e2216420010c20a20024188176a200a4200201142137e2214420010c20a200241b8166a200d4200201242137e2213420010c20a200241c8186a200d42002007420010c20a20024198186a200942002006420010c20a200241e8166a200c42002016420010c20a200241d8176a200b42002014420010c20a200241a8166a200a42002013420010c20a20024198176a200a42002007420010c20a200241d8186a200d42002006420010c20a200241a8186a200942002008420010c20a200241d8166a200c42002014420010c20a20024198166a200b42002013420010c20a200241e8176a200b42002007420010c20a200241a8176a200a42002006420010c20a200241e8186a200d42002008420010c20a200241b8186a200942002011420010c20a200241e8156a200c42002013420010c20a200241c8166a200c42002007420010c20a200241f8176a200b42002006420010c20a200241b8176a200a42002008420010c20a200241f8186a200d42002011420010c20a200241b8156a200942002012420010c20a200241e80b6a20022903d80f222520022903b80e7c220d20022903b8107c220a2002290398117c220b20022903880f7c220920022903e80f222620022903c80e7c220c20022903c8107c221320022903a8117c221420022903980f7c221620022903f80f222720022903d80e7c221720022903d8107c221820022903b8117c221920022903a80f7c221b200229038810222820022903e80e7c221c20022903e8107c221d20022903c8117c221e20022903b80f7c220e200229039810221f20022903f80e7c220f20022903f8107c221020022903d8117c221520022903c80f7c221a42338820024198106a41086a290300200241f80e6a41086a2903007c200f201f54ad7c200241f8106a41086a2903007c2010200f54ad7c200241d8116a41086a2903007c2015201054ad7c200241c80f6a41086a2903007c201a201554ad7c420d86847c220f42338820024188106a41086a290300200241e80e6a41086a2903007c201c202854ad7c200241e8106a41086a2903007c201d201c54ad7c200241c8116a41086a2903007c201e201d54ad7c200241b80f6a41086a2903007c200e201e54ad7c200f200e54ad7c420d86847c221c423388200241f80f6a41086a290300200241d80e6a41086a2903007c2017202754ad7c200241d8106a41086a2903007c2018201754ad7c200241b8116a41086a2903007c2019201854ad7c200241a80f6a41086a2903007c201b201954ad7c201c201b54ad7c420d86847c2217423388200241e80f6a41086a290300200241c80e6a41086a2903007c200c202654ad7c200241c8106a41086a2903007c2013200c54ad7c200241a8116a41086a2903007c2014201354ad7c200241980f6a41086a2903007c2016201454ad7c2017201654ad7c420d86847c220c42ffffffffffffff038320127d42f0ffffffffffff3f7c221242338842137e200c423388200241d80f6a41086a290300200241b80e6a41086a2903007c200d202554ad7c200241b8106a41086a2903007c200a200d54ad7c20024198116a41086a2903007c200b200a54ad7c200241880f6a41086a2903007c2009200b54ad7c200c200954ad7c420d868442137e201a42ffffffffffffff03837c220a42ffffffffffffff038320077d42d0fdffffffffff3f7c220b42ffffffffffffff03837c22074200429bdceccb84d4fd03420010c20a200241b80c6a201242ffffffffffffff0383201742ffffffffffffff038320117d42f0ffffffffffff3f7c22094233887c220d420042969988cadca7b00e420010c20a200241a80e6a200942ffffffffffffff0383201c42ffffffffffffff038320087d42f0ffffffffffff3f7c22094233887c2208420042a88c8b81f5cabeca00420010c20a200241d80d6a200942ffffffffffffff0383200a423388200f42ffffffffffffff03837c20067d42f0ffffffffffff3f7c220a4233887c2206420042c8ee859b8cd29829420010c20a200241880d6a200a42ffffffffffffff0383200b4233887c220a420042dcd78e98b19df320420010c20a200241f80c6a200a4200429bdceccb84d4fd03420010c20a200241d80b6a2007420042d2dfded4f0ede000420010c20a200241a80c6a200d420042a88c8b81f5cabeca00420010c20a200241980e6a2008420042c8ee859b8cd29829420010c20a200241c80d6a2006420042dcd78e98b19df320420010c20a200241b80d6a20064200429bdceccb84d4fd03420010c20a200241e80c6a200a420042d2dfded4f0ede000420010c20a200241c80b6a2007420042b8ecf9b5ffe8f503420010c20a200241980c6a200d420042c8ee859b8cd29829420010c20a200241880e6a2008420042dcd78e98b19df320420010c20a200241f80d6a20084200429bdceccb84d4fd03420010c20a200241a80d6a2006420042d2dfded4f0ede000420010c20a200241d80c6a200a420042b8ecf9b5ffe8f503420010c20a200241f80a6a200742004298c9f9f3f9c09502420010c20a200241880c6a200d420042dcd78e98b19df320420010c20a200241f80b6a200d4200429bdceccb84d4fd03420010c20a200241e80d6a2008420042d2dfded4f0ede000420010c20a200241980d6a2006420042b8ecf9b5ffe8f503420010c20a200241c80c6a200a42004298c9f9f3f9c09502420010c20a200241a80a6a2007420042b4f0cadfb1d2dd01420010c20a20022903f02a210d20022903f82a210820022903802b210720022903902b210620022903882b210a200241982b6a4198016a222b4200370300200241982b6a4190016a222c4200370300200241982b6a4188016a22014200370300200241982b6a4180016a222a4200370300200242013703902c200220022903f02a42017c3703902c202a202a29030020022903f82a7c3703002001200129030020022903802b7c370300202c202c29030020022903882b7c2218370300202b202b29030020022903902b7c221d370300200241982b6a41c8006a222d42f0ffffffffffff3f20067d220e42ffffffffffffff038342f0ffffffffffff3f200a7d220a4233887c2206370300200241982b6a41c0006a2203200a42ffffffffffffff038342f0ffffffffffff3f20077d220a4233887c2207370300200241982b6a41386a2204200a42ffffffffffffff038342f0ffffffffffff3f20087d220a4233887c2208370300200241982b6a41306a2205200a42ffffffffffffff038342d1fdffffffffff3f200d7d220f4233887c220d370300200241982b6a41e0006a222920022903980c221e20022903c80b7c220a20022903880e7c220b20022903b80d7c220920022903e80c7c220c20022903a80c221c20022903d80b7c221120022903980e7c221220022903c80d7c221320022903f80c7c221420022903b80c221020022903e80b7c221620022903a80e7c221720022903d80d7c221920022903880d7c221b423388200241b80c6a41086a290300200241e80b6a41086a2903007c2016201054ad7c200241a80e6a41086a2903007c2017201654ad7c200241d80d6a41086a2903007c2019201754ad7c200241880d6a41086a2903007c201b201954ad7c420d86847c2216423388200241a80c6a41086a290300200241d80b6a41086a2903007c2011201c54ad7c200241980e6a41086a2903007c2012201154ad7c200241c80d6a41086a2903007c2013201254ad7c200241f80c6a41086a2903007c2014201354ad7c2016201454ad7c420d86847c221142ffffffffffffff03832214370300200241982b6a41e8006a222e20022903880c221020022903f80a7c221220022903f80d7c221320022903a80d7c221720022903d80c7c221c2011423388200241980c6a41086a290300200241c80b6a41086a2903007c200a201e54ad7c200241880e6a41086a2903007c200b200a54ad7c200241b80d6a41086a2903007c2009200b54ad7c200241e80c6a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a42ffffffffffffff03832219370300200241982b6a41f0006a222f20022903f80b221520022903a80a7c220b20022903e80d7c220920022903980d7c220c20022903c80c7c2211200a423388200241880c6a41086a290300200241f80a6a41086a2903007c2012201054ad7c200241f80d6a41086a2903007c2013201254ad7c200241a80d6a41086a2903007c2017201354ad7c200241d80c6a41086a2903007c201c201754ad7c200a201c54ad7c420d86847c220a42ffffffffffffff0383221e370300200241982b6a41d8006a2230200a423388200241f80b6a41086a290300200241a80a6a41086a2903007c200b201554ad7c200241e80d6a41086a2903007c2009200b54ad7c200241980d6a41086a2903007c200c200954ad7c200241c80c6a41086a2903007c2011200c54ad7c200a201154ad7c420d868442137e201b42ffffffffffffff03837c2215423388201642ffffffffffffff03837c220a3703002002200e42338842137e200f42ffffffffffffff03837c3703c02b200220022903d816221020022903a8187c22092002290398167c220c2002290398177c221120022903d8187c221220022903e816221a2002290398187c220b20022903d8177c221320022903a8167c221620022903c8187c221720022903f81622252002290388187c221b20022903c8177c221c2002290388177c220e20022903b8167c220f423388200241f8166a41086a29030020024188186a41086a2903007c201b202554ad7c200241c8176a41086a2903007c201c201b54ad7c20024188176a41086a2903007c200e201c54ad7c200241b8166a41086a2903007c200f200e54ad7c420d86847c221b423388200241e8166a41086a29030020024198186a41086a2903007c200b201a54ad7c200241d8176a41086a2903007c2013200b54ad7c200241a8166a41086a2903007c2016201354ad7c200241c8186a41086a2903007c2017201654ad7c201b201754ad7c420d86847c221342ffffffffffffff0383220b3703a82b200220022903e815221a20022903b8187c221620022903e8177c221720022903a8177c221c20022903e8187c220e2013423388200241d8166a41086a290300200241a8186a41086a2903007c2009201054ad7c20024198166a41086a2903007c200c200954ad7c20024198176a41086a2903007c2011200c54ad7c200241d8186a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220c42ffffffffffffff038322093703b02b200220022903c816222520022903b8157c221120022903f8177c221220022903b8177c221320022903f8187c2210200c423388200241e8156a41086a290300200241b8186a41086a2903007c2016201a54ad7c200241e8176a41086a2903007c2017201654ad7c200241a8176a41086a2903007c201c201754ad7c200241e8186a41086a2903007c200e201c54ad7c200c200e54ad7c420d86847c221642ffffffffffffff0383220c3703b82b20022016423388200241c8166a41086a290300200241b8156a41086a2903007c2011202554ad7c200241f8176a41086a2903007c2012201154ad7c200241b8176a41086a2903007c2013201254ad7c200241f8186a41086a2903007c2010201354ad7c2016201054ad7c420d868442137e200f42ffffffffffffff03837c221242ffffffffffffff038322113703982b20022012423388201b42ffffffffffffff03837c22123703a02b2002201542ffffffffffffff038322133703e82b20024198086a20022903902c221642002011420010c20a200241b8076a200c4200202a290300221742137e420010c20a20024188086a200942002001290300221b42137e220f420010c20a200241f8156a200b4200201842137e220e420010c20a20024188156a20124200201d42137e221c420010c20a200241a8086a201242002016420010c20a200241a8076a201142002017420010c20a200241f8076a200c4200200f420010c20a200241c8156a20094200200e420010c20a20024188166a200b4200201c420010c20a200241b8086a200b42002016420010c20a20024198076a201242002017420010c20a200241e8076a20114200201b420010c20a20024198156a200c4200200e420010c20a200241d8156a20094200201c420010c20a200241c8086a200942002016420010c20a20024188076a200b42002017420010c20a200241d8076a20124200201b420010c20a200241e8146a201142002018420010c20a200241a8156a200c4200201c420010c20a200241d8086a200c42002016420010c20a200241f8066a200942002017420010c20a200241c8076a200b4200201b420010c20a200241f8146a201242002018420010c20a200241d8146a20114200201d420010c20a2000200229039815220f20022903e8077c220b20022903d8157c220920022903b8087c220c2002290398077c221120022903f807221020022903a8077c221220022903c8157c22162002290388167c221720022903a8087c221820022903b80722152002290398087c221b2002290388087c221c20022903f8157c221d2002290388157c220e423388200241b8076a41086a29030020024198086a41086a2903007c201b201554ad7c20024188086a41086a2903007c201c201b54ad7c200241f8156a41086a2903007c201d201c54ad7c20024188156a41086a2903007c200e201d54ad7c420d86847c221b423388200241f8076a41086a290300200241a8076a41086a2903007c2012201054ad7c200241c8156a41086a2903007c2016201254ad7c20024188166a41086a2903007c2017201654ad7c200241a8086a41086a2903007c2018201754ad7c201b201854ad7c420d86847c221242ffffffffffffff0383370310200020022903a815221d20022903e8147c221620022903c8087c22172002290388077c221820022903d8077c221c201242338820024198156a41086a290300200241e8076a41086a2903007c200b200f54ad7c200241d8156a41086a2903007c2009200b54ad7c200241b8086a41086a2903007c200c200954ad7c20024198076a41086a2903007c2011200c54ad7c2012201154ad7c420d86847c220b42ffffffffffffff0383370318200020022903d808220f20022903d8147c220920022903f8067c220c20022903c8077c221120022903f8147c2212200b423388200241a8156a41086a290300200241e8146a41086a2903007c2016201d54ad7c200241c8086a41086a2903007c2017201654ad7c20024188076a41086a2903007c2018201754ad7c200241d8076a41086a2903007c201c201854ad7c200b201c54ad7c420d86847c220b42ffffffffffffff03833703202000200b423388200241d8086a41086a290300200241d8146a41086a2903007c2009200f54ad7c200241f8066a41086a2903007c200c200954ad7c200241c8076a41086a2903007c2011200c54ad7c200241f8146a41086a2903007c2012201154ad7c200b201254ad7c420d868442137e200e42ffffffffffffff03837c220b42ffffffffffffff03833703002000200b423388201b42ffffffffffffff03837c370308200241a8066a2013420020022903c02b220b420010c20a200241980a6a20064200200a42137e420010c20a200241980b6a20074200201442137e2211420010c20a200241d80a6a20084200201942137e220c420010c20a20024198096a200d4200201e42137e2209420010c20a200241a8096a200d42002013420010c20a200241b8066a200b4200200a420010c20a200241880b6a200642002011420010c20a200241c80a6a20074200200c420010c20a20024188096a200842002009420010c20a200241b8096a200842002013420010c20a200241880a6a200d4200200a420010c20a200241c8066a200b42002014420010c20a200241b80a6a20064200200c420010c20a200241f8086a200742002009420010c20a200241c8096a200742002013420010c20a200241f8096a20084200200a420010c20a200241a80b6a200d42002014420010c20a200241d8066a200b42002019420010c20a200241e8086a200642002009420010c20a200241d8096a200642002013420010c20a200241e8096a20074200200a420010c20a200241b80b6a200842002014420010c20a200241e80a6a200d42002019420010c20a200241e8066a200b4200201e420010c20a200041386a20022903b80a221620022903c8067c220620022903f8087c220720022903b8097c220820022903880a7c220d20022903880b221720022903b8067c220a20022903c80a7c220b2002290388097c220920022903a8097c220c20022903980a221820022903a8067c221120022903980b7c221220022903d80a7c22132002290398097c2214423388200241980a6a41086a290300200241a8066a41086a2903007c2011201854ad7c200241980b6a41086a2903007c2012201154ad7c200241d80a6a41086a2903007c2013201254ad7c20024198096a41086a2903007c2014201354ad7c420d86847c2211423388200241880b6a41086a290300200241b8066a41086a2903007c200a201754ad7c200241c80a6a41086a2903007c200b200a54ad7c20024188096a41086a2903007c2009200b54ad7c200241a8096a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a42ffffffffffffff0383370300200041c0006a20022903e808221320022903d8067c220b20022903c8097c220920022903f8097c220c20022903a80b7c2212200a423388200241b80a6a41086a290300200241c8066a41086a2903007c2006201654ad7c200241f8086a41086a2903007c2007200654ad7c200241b8096a41086a2903007c2008200754ad7c200241880a6a41086a2903007c200d200854ad7c200a200d54ad7c420d86847c220642ffffffffffffff0383370300200041c8006a20022903d809221620022903e8067c220720022903e8097c220820022903b80b7c220d20022903e80a7c220a2006423388200241e8086a41086a290300200241d8066a41086a2903007c200b201354ad7c200241c8096a41086a2903007c2009200b54ad7c200241f8096a41086a2903007c200c200954ad7c200241a80b6a41086a2903007c2012200c54ad7c2006201254ad7c420d86847c220642ffffffffffffff038337030020002006423388200241d8096a41086a290300200241e8066a41086a2903007c2007201654ad7c200241e8096a41086a2903007c2008200754ad7c200241b80b6a41086a2903007c200d200854ad7c200241e80a6a41086a2903007c200a200d54ad7c2006200a54ad7c420d868442137e201442ffffffffffffff03837c220642ffffffffffffff0383370328200041306a2006423388201142ffffffffffffff03837c37030020024198066a20022903902c2206420020022903e82b2207420010c20a200241d8036a202f29030022084200202a290300220d42137e420010c20a200241a8046a202e290300220a42002001290300220c42137e2214420010c20a200241f8046a2029290300220b4200202c290300221242137e2213420010c20a200241c8056a203029030022094200202b290300221642137e2211420010c20a200241d8056a200942002006420010c20a200241c8036a20074200200d420010c20a20024198046a200842002014420010c20a200241e8046a200a42002013420010c20a200241b8056a200b42002011420010c20a200241e8056a200b42002006420010c20a200241b8036a20094200200d420010c20a20024188046a20074200200c420010c20a200241d8046a200842002013420010c20a200241a8056a200a42002011420010c20a200241f8056a200a42002006420010c20a200241a8036a200b4200200d420010c20a200241f8036a20094200200c420010c20a200241c8046a200742002012420010c20a20024198056a200842002011420010c20a20024188066a200842002006420010c20a20024198036a200a4200200d420010c20a200241e8036a200b4200200c420010c20a200241b8046a200942002012420010c20a20024188056a200742002016420010c20a200041e0006a20022903d80422162002290388047c220620022903a8057c220720022903e8057c220820022903b8037c220d200229039804221720022903c8037c220a20022903e8047c220b20022903b8057c220920022903d8057c220c20022903d80322182002290398067c221120022903a8047c221220022903f8047c221320022903c8057c2214423388200241d8036a41086a29030020024198066a41086a2903007c2011201854ad7c200241a8046a41086a2903007c2012201154ad7c200241f8046a41086a2903007c2013201254ad7c200241c8056a41086a2903007c2014201354ad7c420d86847c221142338820024198046a41086a290300200241c8036a41086a2903007c200a201754ad7c200241e8046a41086a2903007c200b200a54ad7c200241b8056a41086a2903007c2009200b54ad7c200241d8056a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a42ffffffffffffff0383370300200041e8006a200229039805221320022903c8047c220b20022903f8057c220920022903a8037c220c20022903f8037c2212200a423388200241d8046a41086a29030020024188046a41086a2903007c2006201654ad7c200241a8056a41086a2903007c2007200654ad7c200241e8056a41086a2903007c2008200754ad7c200241b8036a41086a2903007c200d200854ad7c200a200d54ad7c420d86847c220642ffffffffffffff0383370300200041f0006a20022903880622162002290388057c22072002290398037c220820022903e8037c220d20022903b8047c220a200642338820024198056a41086a290300200241c8046a41086a2903007c200b201354ad7c200241f8056a41086a2903007c2009200b54ad7c200241a8036a41086a2903007c200c200954ad7c200241f8036a41086a2903007c2012200c54ad7c2006201254ad7c420d86847c220642ffffffffffffff03833703002000200642338820024188066a41086a29030020024188056a41086a2903007c2007201654ad7c20024198036a41086a2903007c2008200754ad7c200241e8036a41086a2903007c200d200854ad7c200241b8046a41086a2903007c200a200d54ad7c2006200a54ad7c420d868442137e201442ffffffffffffff03837c220642ffffffffffffff0383370350200041d8006a2006423388201142ffffffffffffff03837c37030020024188036a20022903c02b2206420020022903982b2207420010c20a200241c8006a20022903b82b220842002005290300220d42137e420010c20a20024198016a20022903b02b220a42002004290300220c42137e2214420010c20a200241e8016a20022903a82b220b42002003290300221242137e2213420010c20a200241b8026a20022903a02b22094200202d290300221642137e2211420010c20a200241c8026a200942002006420010c20a200241386a20074200200d420010c20a20024188016a200842002014420010c20a200241d8016a200a42002013420010c20a200241a8026a200b42002011420010c20a200241d8026a200b42002006420010c20a200241286a20094200200d420010c20a200241f8006a20074200200c420010c20a200241c8016a200842002013420010c20a20024198026a200a42002011420010c20a200241e8026a200a42002006420010c20a200241186a200b4200200d420010c20a200241e8006a20094200200c420010c20a200241b8016a200742002012420010c20a20024188026a200842002011420010c20a200241f8026a200842002006420010c20a200241086a200a4200200d420010c20a200241d8006a200b4200200c420010c20a200241a8016a200942002012420010c20a200241f8016a200742002016420010c20a20004188016a20022903c801221620022903787c22062002290398027c220720022903d8027c220820022903287c220d200229038801221720022903387c220a20022903d8017c220b20022903a8027c220920022903c8027c220c200229034822182002290388037c22112002290398017c221220022903e8017c221320022903b8027c2214423388200241c8006a41086a29030020024188036a41086a2903007c2011201854ad7c20024198016a41086a2903007c2012201154ad7c200241e8016a41086a2903007c2013201254ad7c200241b8026a41086a2903007c2014201354ad7c420d86847c221142338820024188016a41086a290300200241386a41086a2903007c200a201754ad7c200241d8016a41086a2903007c200b200a54ad7c200241a8026a41086a2903007c2009200b54ad7c200241c8026a41086a2903007c200c200954ad7c2011200c54ad7c420d86847c220a42ffffffffffffff038337030020004190016a200229038802221320022903b8017c220b20022903e8027c220920022903187c220c20022903687c2212200a423388200241c8016a41086a290300200241f8006a41086a2903007c2006201654ad7c20024198026a41086a2903007c2007200654ad7c200241d8026a41086a2903007c2008200754ad7c200241286a41086a2903007c200d200854ad7c200a200d54ad7c420d86847c220642ffffffffffffff038337030020004198016a20022903f802221620022903f8017c220720022903087c220820022903587c220d20022903a8017c220a200642338820024188026a41086a290300200241b8016a41086a2903007c200b201354ad7c200241e8026a41086a2903007c2009200b54ad7c200241186a41086a2903007c200c200954ad7c200241e8006a41086a2903007c2012200c54ad7c2006201254ad7c420d86847c220642ffffffffffffff038337030020002006423388200241f8026a41086a290300200241f8016a41086a2903007c2007201654ad7c200241086a41086a2903007c2008200754ad7c200241d8006a41086a2903007c200d200854ad7c200241a8016a41086a2903007c200a200d54ad7c2006200a54ad7c420d868442137e201442ffffffffffffff03837c220642ffffffffffffff038337037820004180016a2006423388201142ffffffffffffff03837c370300200241e02c6a24000bd32004047f017e027f1c7e23004190066b220224000240024020012c001f417f4a0d00200041003a00000c010b20024180056a41186a2203200141186a29000037030020024180056a41106a2204200141106a29000037030020024180056a41086a2205200141086a29000037030020022001290000220637038005200220022d009f0541ff00713a009f05200241c0056a41186a22074200370300200241c0056a41106a22084200370300200241c0056a41086a220142003703002002200231008205421086200231008105420886200642ff0183848422063703c005200220023100830542188620068422063703c005200220023100840542208620068422063703c005200220023100850542288620068422063703c005200220023100860542308620068422063703c00520022002310087054238862006843703c005200120012903002005310000842206370300200120023100890542088620068422063703002001200231008a0542108620068422063703002001200231008b0542188620068422063703002001200231008c0542208620068422063703002001200231008d0542288620068422063703002001200231008e0542308620068422063703002001200231008f0542388620068437030020082008290300200431000084220637030020082002310091054208862006842206370300200820023100920542108620068422063703002008200231009305421886200684220637030020082002310094054220862006842206370300200820023100950542288620068422063703002008200231009605423086200684220637030020082002310097054238862006842209370300200720072903002003310000842206370300200720023100990542088620068422063703002007200231009a0542108620068422063703002007200231009b0542188620068422063703002007200231009c0542208620068422063703002007200231009d0542288620068422063703002007200231009e0542308620068422063703002007200231009f05423886200684220a37030020024180036a20022903c005220b42ffffffffffffff07832206420042edcd87b9d697d207420010c20a200241c0026a2006420042dac89fe3dad6ee01420010c20a20024180026a2001290300220c420c86200b4234888442ffffffffffffff0783220b420042edcd87b9d697d207420010c20a200241b0026a20064200429bcad7d9feffff07420010c20a200241c0016a200b420042dac89fe3dad6ee01420010c20a200241d0036a2009421886200c4228888442ffffffffffffff0783220c420042edcd87b9d697d207420010c20a200241a0026a2006420042ffffffffffffff07420010c20a20024180016a200b4200429bcad7d9feffff07420010c20a200241c0036a200c420042dac89fe3dad6ee01420010c20a200241a0046a200a4224862009421c888442ffffffffffffff07832209420042edcd87b9d697d207420010c20a20024190026a2006420042ffffffffffff03420010c20a200241c0006a200b420042ffffffffffffff07420010c20a200241b0036a200c4200429bcad7d9feffff07420010c20a20024190046a2009420042dac89fe3dad6ee01420010c20a200241f0046a200a4210882206420042edcd87b9d697d207420010c20a2002200b420042ffffffffffff03420010c20a200241a0036a200c420042ffffffffffffff07420010c20a20024180046a20094200429bcad7d9feffff07420010c20a200241e0046a2006420042dac89fe3dad6ee01420010c20a20024190036a200c420042ffffffffffff03420010c20a200241f0036a2009420042ffffffffffffff07420010c20a200241d0046a20064200429bcad7d9feffff07420010c20a200241e0036a2009420042ffffffffffff03420010c20a200241c0046a2006420042ffffffffffffff07420010c20a200241b0046a2006420042ffffffffffff03420010c20a200241f0026a200229038003220b429bfcd192b1b4c7027e42ffffffffffffff07832206420042eda7d7e7a5e39801420010c20a200241e0026a200642004281cbb5cef7c5fa06420010c20a200241f0016a200229038002220d20022903c0027c220c200b20022903f00222097c220b423488200241f0026a41086a29030020024180036a41086a2903007c200b200954ad7c220e420c86847c220920022903e0027c220a429bfcd192b1b4c7027e42ffffffffffffff0783220b420042eda7d7e7a5e39801420010c20a200241d0026a2006420042f9bdd300420010c20a200241e0016a200b42004281cbb5cef7c5fa06420010c20a200241b0016a20022903c001220f20022903b0027c221020022903d0037c221120022903d0027c221220022903e0017c221320022903f0012214200a7c2215423488200241f0016a41086a29030020024180026a41086a290300200241c0026a41086a2903007c200c200d54ad7c200e4234887c2009200c54ad7c200241e0026a41086a2903007c200a200954ad7c7c2015201454ad7c2216420c86847c2209429bfcd192b1b4c7027e42ffffffffffffff0783220c420042eda7d7e7a5e39801420010c20a200241d0016a200b420042f9bdd300420010c20a200241a0016a200c42004281cbb5cef7c5fa06420010c20a200241f0006a200229038001221720022903a0027c220a20022903c0037c220d20022903a0047c220e20022903d0017c221420022903a0017c221520022903b001221820097c2219423488200241b0016a41086a290300200241c0016a41086a290300200241b0026a41086a2903007c2010200f54ad7c200241d0036a41086a2903007c2011201054ad7c200241d0026a41086a2903007c2012201154ad7c200241e0016a41086a2903007c2013201254ad7c20164234887c2009201354ad7c7c2019201854ad7c221a420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff07832209420042eda7d7e7a5e39801420010c20a20024190016a200c420042f9bdd300420010c20a200241e0006a200942004281cbb5cef7c5fa06420010c20a200241306a2002290340221b2002290390027c221120022903b0037c22122002290390047c221320022903f0047c220f2006422c867c22162002290390017c221820022903607c22192002290370221c20107c221d423488200241f0006a41086a29030020024180016a41086a290300200241a0026a41086a2903007c200a201754ad7c200241c0036a41086a2903007c200d200a54ad7c200241a0046a41086a2903007c200e200d54ad7c200241d0016a41086a2903007c2014200e54ad7c200241a0016a41086a2903007c2015201454ad7c201a4234887c2010201554ad7c7c201d201c54ad7c221e420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff0783220a420042eda7d7e7a5e39801420010c20a200241d0006a2009420042f9bdd300420010c20a200241206a200a42004281cbb5cef7c5fa06420010c20a200241106a200a420042f9bdd300420010c20a200120022903f003221f2002290390037c220d20022903d0047c220e200c422c867c221420022903107c221520022903a003222020022903007c22172002290380047c221a20022903e0047c221c200b422c867c221d20022903507c222120022903207c22222002290330222320107c2224423488200241306a41086a290300200241c0006a41086a29030020024190026a41086a2903007c2011201b54ad7c200241b0036a41086a2903007c2012201154ad7c20024190046a41086a2903007c2013201254ad7c200241f0046a41086a2903007c200f201354ad7c20064214887c2016200f54ad7c20024190016a41086a2903007c2018201654ad7c200241e0006a41086a2903007c2019201854ad7c201e4234887c2010201954ad7c7c2024202354ad7c2210420c86847c2206423488200241a0036a41086a290300200241086a2903007c2017202054ad7c20024180046a41086a2903007c201a201754ad7c200241e0046a41086a2903007c201c201a54ad7c200b4214887c201d201c54ad7c200241d0006a41086a2903007c2021201d54ad7c200241206a41086a2903007c2022202154ad7c20104234887c2006202254ad7c2212420c86847c220b42ffffffffffffff0783200642ffffffffffffff07834293d8a898da9ce77e7c2206423f877c42ffb4cab188ba85797c221342ffffffffffffff0783200642ffffffffffffff0783200a422c86220f20022903b0047c220620022903c004221620022903e0037c22102009422c867c2211200b423488200241f0036a41086a29030020024190036a41086a2903007c200d201f54ad7c200241d0046a41086a2903007c200e200d54ad7c200c4214887c2014200e54ad7c200241106a41086a2903007c2015201454ad7c20124234887c200b201554ad7c220c420c86847c220b423488200241c0046a41086a290300200241e0036a41086a2903007c2010201654ad7c20094214887c2011201054ad7c200c4234887c200b201154ad7c2209420c86847c220c423488200a421488200241b0046a41086a2903007c2006200f54ad7c20094234887c200c200654ad7c420c8684200c42ffffffffffffff0783200b42ffffffffffffff07832013423f877c4287c2ac7f7c220c423f877c2209423f877c428080808080807c7c2210423f87220a42eda7d7e7a5e39801837c22064234887c200a4281cbb5cef7c5fa06837c220b42ffffffffffffff078322113703002008200c42ffffffffffffff0783200b4234887c200a42f9bdd300837c220c42ffffffffffffff078322123703002007200942ffffffffffffff0783200c4234887c220942ffffffffffffff07832213370300200241e0056a201042ffffffffffffff078320094234887c200a4280808080808004837c220a42ffffffffffffff07833703002002200642ffffffffffffff078322103703c0052002200a4228883c00bf052002200a4220883c00be052002200a4218883c00bd052002200a4210883c00bc052002200a4208883c00bb052002200a3c00ba0520022009422c883c00b905200220094224883c00b80520022009421c883c00b705200220094214883c00b60520022009420c883c00b505200220094204883c00b405200220134204862012423088843c00b3052002200c4228883c00b2052002200c4220883c00b1052002200c4218883c00b0052002200c4210883c00af052002200c4208883c00ae052002200c3c00ad052002200b422c883c00ac052002200b4224883c00ab052002200b421c883c00aa052002200b4214883c00a9052002200b420c883c00a8052002200b4204883c00a705200220114204862010423088843c00a605200220064228883c00a505200220064220883c00a405200220064218883c00a305200220064210883c00a205200220064208883c00a105200220063c00a0052006a72108200241a0056a4101722103410021014101210702400340200820024180056a20016a2d0000732208410020086b72417f7341800171410776107720077121072001411f460d01200320016a2d00002108200141016a21010c000b0b4100210102402007107741ff01714101470d002000200229038005370001200041196a20024198056a290300370000200041116a20024190056a290300370000200041096a20024188056a290300370000410121010b200020013a00000b20024190066a24000bdf0101057f024020014106762202200041086a2802002203490d000240200041046a28020020036b200220036b220441016a22054f0d00200020032005107e200041086a28020021030b200028020020034103746a2106024020054102490d00034020064200370300200641086a21062004417f6a22040d000b200520036a417f6a21030b02402005450d0020064200370300200341016a21030b200041086a20033602000b0240200320024b0d00200220034180a2c000103c000b200028020020024103746a2206200629030042012001417f73413f71ad868437030020000bd70101027f230041206b220324000240200120026a22022001490d00200041046a280200220441017422012002200120024b1b22014104200141044b1b220141ffffffff01712001464103742102200141037421010240024020040d00200341003602100c010b200341106a41086a410836020020032004410374360214200320002802003602100b200320012002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410376360200200341206a24000f0b1034000ba30201057f02400240200141086a2802002202200041086a28020022034b0d00200321040c010b200321040240200041046a28020020036b200220036b22054f0d00200020032005107e200041086a28020021040b200028020020044103746a2106024020054102490d002003417f7320026a2103034020064200370300200641086a21062003417f6a22030d000b200520046a417f6a21040b02402005450d0020064200370300200441016a21040b200041086a20043602000b024002402002450d0020012802002101200241037421022000280200210641002103034020042003460d0220062006290300200129030084370300200641086a2106200141086a2101200341016a2103200241786a22020d000b0b0f0b200320044188a1c000103c000bf90301017f02400240024002400240024002400240200041ff01710e0700010203040506070b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41003a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41013a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41023a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41033a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41043a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41053a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41063a00002002200041016a3602000b0bbb0101027f230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024108200241084b1b21020240024020010d00200341003602100c010b200341106a41086a410136020020032001360214200320002802003602100b200320024101200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001360200200341206a24000f0b1034000bdd0401077f02402001450d0020002001412c6c6a2103200241086a2101200241046a2104034002400240200022052802004101470d002005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070c010b2005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070b2001200736020002400240200528020c4101470d00200528021021072005280218220820021083012007200820021084010c010b20052802102107200541146a280200220820021083012007200820021084010b2005412c6a210002400240200528021c4101470d002005280220210720052802282205200210830120054103742205450d01200720056a2109034020072802002106200741046a2802002205200210830102402004280200200128020022086b20054f0d00200220082005108101200128020021080b200228020020086a2006200510c30a1a2001200820056a360200200741086a22072009470d000c020b0b2005280220210720052802242205200210830120054103742205450d00200720056a2109034020072802002106200741046a2802002205200210830102402004280200200128020022086b20054f0d00200220082005108101200128020021080b200228020020086a2006200510c30a1a2001200820056a360200200741086a22072009470d000b0b20002003470d000b0b0b9e0301047f024002400240200041c000490d00200041808001490d012000418080808004490d020240200141046a22022802002203200141086a22042802002205470d0020012005410110810120022802002103200428020021050b2001280200220220056a41033a00002004200541016a22053602000240200320056b41034b0d00200120054104108101200141086a2802002105200128020021020b200220056a2000360000200141086a200541046a3602000f0b200041027421030240200141046a280200200141086a22052802002200470d00200120004101108101200528020021000b200128020020006a20033a00002005200041016a3602000f0b200041027441017221030240200141046a280200200141086a220528020022006b41014b0d00200120004102108101200528020021000b200128020020006a20033b00002005200041026a3602000f0b200041027441027221030240200141046a280200200141086a220528020022006b41034b0d00200120004104108101200528020021000b200128020020006a20033600002005200041046a3602000bc90301047f02402001450d002000200141186c6a210303400240024020002802004101470d00200041046a2802002104200041086a280200220120021083010240200241046a280200200241086a220528020022066b20014f0d00200220062001108101200528020021060b200228020020066a2004200110c30a1a200620016a21060c010b200041046a2802002104200041086a280200220120021083010240200241046a280200200241086a220528020022066b20014f0d00200220062001108101200528020021060b200228020020066a2004200110c30a1a200620016a21060b200241086a22012006360200024002402000410c6a2802004101470d00200041106a2802002105200041146a280200220620021083010240200241046a280200200128020022046b20064f0d00200220042006108101200128020021040b200228020020046a2005200610c30a1a200420066a21060c010b200041106a2802002105200041146a280200220620021083010240200241046a280200200128020022046b20064f0d00200220042006108101200128020021040b200228020020046a2005200610c30a1a200420066a21060b20012006360200200041186a22002003470d000b0b0ba20e01077f230041c0006b2203240002402001450d002000200141f0006c6a2104200241086a2105200241046a210603400240024020002802004101470d002000280204210720002802082201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010c010b2000280204210720002802082201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010b200520013602002006280200210802400240200028020c4102470d00024020082001470d00200220014101108101200528020021010b200228020020016a41003a00002005200141016a3602000c010b024020082001470d00200220014101108101200528020021010b200228020020016a41013a00002005200141016a3602000240200028020c4101470d000240024020002802104101470d002000280214210720002802182201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010c010b2000280214210720002802182201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010b200520013602000240200028021c4101470d00200028022021012000280228220820021083012001200820021086010c020b20002802202101200041246a280200220820021083012001200820021086010c010b200341206a20002802101102000240024020032802204101470d002003280224210720032802282201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010c010b2003280224210720032802282201200210830102402006280200200528020022086b20014f0d00200220082001108101200528020021080b200228020020086a2007200110c30a1a200820016a21010b200520013602000240200328022c4101460d00200328023021012003280234220820021083012001200820021086010c010b20032802302107200328023822012002108301200720012002108601024020032802382201450d00200141e0006c21094100210803400240200720086a2201410c6a2d00004103470d000240200141106a280200450d00200141186a28020041ffffffff0171450d00200141146a28020010390b200141206a280200450d00200141286a280200450d00200141246a28020010390b02402001413c6a280200450d00200141c4006a280200450d00200141c0006a28020010390b0240200141cc006a280200450d00200141d4006a28020041ffffffff0171450d00200141d0006a28020010390b2009200841e0006a2208470d000b0b20032802342201450d00200141e0006c450d00200710390b200628020021082005280200210102400240200028022c4102470d00024020082001470d00200220014101108101200528020021010b200228020020016a41003a00002005200141016a3602000c010b024020082001470d00200220014101108101200528020021010b200228020020016a41013a00002005200141016a3602000240200028022c4101470d00200028023021012000280238220820021083012001200820021082010c010b200341186a200028023011020020032802182101200328021c220820021083012001200820021082010b200628020021082005280200210102400240200028023c4102470d00024020082001470d00200220014101108101200528020021010b200228020020016a41003a00002005200141016a3602000c010b024020082001470d00200220014101108101200528020021010b200228020020016a41013a00002005200141016a3602000240200028023c4101470d00200028024021012000280248220820021083012001200820021087010c010b200341106a2000280240110200200328021021012003280214220820021083012001200820021087010b02400240200028024c4101470d00200028025021012000280258220820021083012001200820021088010c010b200341086a200028025011020020032802082101200328020c220820021083012001200820021088010b02400240200028025c4101470d00200028026021012000280268220820021083012001200820021089010c010b20032000280260110200200328020021012003280204220820021083012001200820021089010b200041f0006a210120002d006c21080240200628020020052802002200470d00200220004101108101200528020021000b200228020020006a20083a00002005200041016a3602002001210020012004470d000b0b200341c0006a24000bc61601087f230041106b2203240002402001450d002000200141e0006c6a2104200241086a2101200241046a2105034002400240200022062802004101470d002006280204210720062802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280204210720062802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b20012008360200200528020021090240024020062d005c4101460d00024020092008470d00200220084101108101200128020021080b200228020020086a41003a00000c010b024020092008470d00200220084101108101200128020021080b200228020020086a41013a00000b2001200841016a22083602000240024002400240024020062d000c0e0400010203000b024020052802002008470d00200220084101108101200128020021080b200228020020086a41003a00002001200841016a360200024020062802104101470d002006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000c040b2006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000c030b024020052802002008470d00200220084101108101200128020021080b200228020020086a41013a00002001200841016a36020020062d000d20021080010240024020062802104101470d002006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b2001200836020002400240200628021c4101470d002006280220210720062802242208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280220210720062802242208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b2001200836020020062d000e2109024020052802002008470d00200220084101108101200128020021080b200228020020086a20093a00002001200841016a3602000c020b024020052802002008470d00200220084101108101200128020021080b200228020020086a41023a00002001200841016a36020020062d000d20021080010240024020062802104101470d002006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280214210720062802182208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b2001200836020002400240200628021c4101470d002006280220210720062802242208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280220210720062802242208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b200120083602000240024020062802284101470d00200628022c210720062802302208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b200628022c210720062802302208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b2001200836020020062d000e20021080010c010b024020052802002008470d00200220084101108101200128020021080b200228020020086a41033a00002001200841016a3602000240024020062802104101470d0020062802142108200628021c2209200210830120094103742209450d01200820096a210003402008280200210a200841046a2802002209200210830102402005280200200128020022076b20094f0d00200220072009108101200128020021070b200228020020076a200a200910c30a1a2001200720096a360200200841086a22082000470d000c020b0b2006280214210820062802182209200210830120094103742209450d00200820096a210003402008280200210a200841046a2802002209200210830102402005280200200128020022076b20094f0d00200220072009108101200128020021070b200228020020076a200a200910c30a1a2001200720096a360200200841086a22082000470d000b0b200628022421080240024020062802204101470d00200628022c220920021083012009450d01034020082d00002002108001200841016a21082009417f6a22090d000c020b0b200641286a280200220920021083012009450d00034020082d00002002108001200841016a21082009417f6a22090d000b0b024020062802304101470d002006280234210720062802382208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000c010b2006280234210720062802382208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000b02400240200628023c4101470d002006280240210720062802482208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000c010b20032006280240200628024428020c1103002003280200210720032802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602002003280204450d00200710390b200641e0006a210002400240200628024c4101470d002006280250210820062802582206200210830120064103742206450d01200820066a210a034020082802002107200841046a2802002206200210830102402005280200200128020022096b20064f0d00200220092006108101200128020021090b200228020020096a2007200610c30a1a2001200920066a360200200841086a2208200a470d000c020b0b2006280250210820062802542206200210830120064103742206450d00200820066a210a034020082802002107200841046a2802002206200210830102402005280200200128020022096b20064f0d00200220092006108101200128020021090b200228020020096a2007200610c30a1a2001200920066a360200200841086a2208200a470d000b0b20002004470d000b0b200341106a24000bb20601087f02402001450d0020002001412c6c6a2103200241086a2101200241046a2104034002400240200022052802004101470d002005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070c010b2005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070b2001200736020002400240200528020c4101470d002005280210210720052802182208200210830120084103742208450d01200720086a210903402007280200210a200741046a2802002208200210830102402004280200200128020022066b20084f0d00200220062008108101200128020021060b200228020020066a200a200810c30a1a2001200620086a360200200741086a22072009470d000c020b0b2005280210210720052802142208200210830120084103742208450d00200720086a210903402007280200210a200741046a2802002208200210830102402004280200200128020022066b20084f0d00200220062008108101200128020021060b200228020020066a200a200810c30a1a2001200620086a360200200741086a22072009470d000b0b2005412c6a210002400240200528021c4101470d002005280220210720052802282208200210830120084103742208450d01200720086a210903402007280200210a200741046a2802002208200210830102402004280200200128020022066b20084f0d00200220062008108101200128020021060b200228020020066a200a200810c30a1a2001200620086a360200200741086a22072009470d000c020b0b2005280220210720052802242208200210830120084103742208450d00200720086a210903402007280200210a200741046a2802002208200210830102402004280200200128020022066b20084f0d00200220062008108101200128020021060b200228020020066a200a200810c30a1a2001200620086a360200200741086a22072009470d000b0b20002003470d000b0b0bab0701087f230041106b2203240002402001450d002000200141386c6a2104200241086a2101200241046a2105034002400240200022062802004101470d002006280204210720062802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280204210720062802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b2001200836020002400240200628020c4101470d002006280210210720062802142208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080c010b2006280210210720062802142208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a200920086a21080b200120083602000240024020062802184101470d00200628021c210720062802242208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602000c010b2003200628021c200628022028020c1103002003280200210720032802082208200210830102402005280200200128020022096b20084f0d00200220092008108101200128020021090b200228020020096a2007200810c30a1a2001200920086a3602002003280204450d00200710390b200641386a21000240024020062802284101470d00200628022c210820062802342206200210830120064103742206450d01200820066a210a034020082802002107200841046a2802002206200210830102402005280200200128020022096b20064f0d00200220092006108101200128020021090b200228020020096a2007200610c30a1a2001200920066a360200200841086a2208200a470d000c020b0b200628022c210820062802302206200210830120064103742206450d00200820066a210a034020082802002107200841046a2802002206200210830102402005280200200128020022096b20064f0d00200220092006108101200128020021090b200228020020096a2007200610c30a1a2001200920066a360200200841086a2208200a470d000b0b20002004470d000b0b200341106a24000b900401077f02402001450d0020002001411c6c6a2103200241086a2101200241046a2104034002400240200022052802004101470d002005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070c010b2005280204210620052802082207200210830102402004280200200128020022086b20074f0d00200220082007108101200128020021080b200228020020086a2006200710c30a1a200820076a21070b2005411c6a21002001200736020002400240200528020c4101470d002005280210210720052802182205200210830120054103742205450d01200720056a2109034020072802002106200741046a2802002205200210830102402004280200200128020022086b20054f0d00200220082005108101200128020021080b200228020020086a2006200510c30a1a2001200820056a360200200741086a22072009470d000c020b0b2005280210210720052802142205200210830120054103742205450d00200720056a2109034020072802002106200741046a2802002205200210830102402004280200200128020022086b20054f0d00200220082005108101200128020021080b200228020020086a2006200510c30a1a2001200820056a360200200741086a22072009470d000b0b20002003470d000b0b0b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000bb00101037f230041206b22022400200041046a280200220341017422042001200420014b1b22014108200141084b1b21010240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220014101200241106a108c01200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a2001360200200241206a24000f0b1034000bc80101017f02400240024002402002450d0020014100480d01024002400240200328020022040d0020010d01410121020c020b0240200328020422030d0020010d01410121020c020b200110382202450d0420022004200310c30a1a200410390c010b200110382202450d030b20002002360204410021020c030b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2000200136020441012101410121020b20002002360200200041086a20013602000bd00301087f2001410c6a28020021022001280208210320012802042104024002400240200128020022050d0020030d0120004201370200200041086a22014100360200200141003602000f0b200420056b2106024020030d00200621010c020b2006200220036b6a220120064f0d014180eaca0041114188c8ca001035000b200220036b21010b024002402001417f4c0d000240024020010d0041012107410021010c010b200110382207450d020b20002007360200200041086a22084100360200200041046a200136020002400240024020050d0020030d01200841003602000f0b200420056b2106024020030d00200621090c020b2006200220036b6a220920064f0d014180eaca0041114198c8ca001035000b200220036b21090b410021060240200120094f0d0020002009108b01200041086a2802002106200028020021070b200720066a210102402005450d0020042005460d002004200620056b6a21060340200120052d00003a0000200141016a21012004200541016a2205470d000b0b02402003450d0020022003460d00200321050340200120052d00003a0000200141016a21012002200541016a2205470d000b2002200620036b6a21060b200820063602000f0b1034000b1030000ba90803197e017f147e20002903c0012101200029039801210220002903702103200029034821042000290320210520002903b8012106200029039001210720002903682108200029034021092000290318210a20002903b001210b200029038801210c2000290360210d2000290338210e2000290310210f20002903a8012110200029038001211120002903582112200029033021132000290308211420002903a00121152000290378211620002903502117200029032821182000290300211941c07e211a0340200b200c200d200e200f85858585221b4201892015201620172018201985858585221c85221d201385211e20012006200720082009200a85858585221f201c42018985221c85212020012002200320042005858585852221420189201b85221b2009854237892222201f4201892010201120122013201485858585220985221f200f85423e892223427f8583201d201085420289222485210120222021200942018985220f20168542298922212003201c854227892225427f8583852110201b2006854238892226201f200c85420f892227427f8583201d201285420a89222885210c2028200f2018854224892229427f85832005201c85421b89222a852116200f2015854212892215201f200e85420689222b201d201485420189222c427f85838521032002201c85420889222d201b200885421989222e427f8583202b8521122004201c85421489221c201b200a85421c89220a427f8583201f200b85423d89220e852104200a200e427f8583201d201185422d89221d852109200f2017854203892214200e201d427f858385210e201d2014427f8583201c852113200a2014201c427f8583852118201b200785421589221d200f201985221c2020420e89221b427f858385210a201b201d427f8583201f200d85422b89221f85210f201d201f427f8583201e422c89221d852114201a4198a7c0006a290300201c201f201d427f85838585211920262029202a427f858385221f2102201d201c427f8583201b85221d2105202120232024427f858385221c2106202a2026427f8583202785221b2107202c2015427f8583202d852226210820242021427f85832025852224210b202e2015202d427f8583852221210d202920272028427f8583852227211120252022427f858320238522222115202e202b427f8583202c8522232117201a41086a221a0d000b200020223703a00120002016370378200020233703502000201837032820002019370300200020103703a8012000202737038001200020123703582000201337033020002014370308200020243703b0012000200c37038801200020213703602000200e3703382000200f3703102000201c3703b8012000201b3703900120002026370368200020093703402000200a370318200020013703c0012000201f3703980120002003370370200020043703482000201d3703200b040041000b02000b02000b921901037f230041f0016b22032400200341106a41126a410041b60110c50a1a2003411e6a41002800d6a740360100200341002f00cca7403b0114200341002800c8a740360210200341002900cea740370116200341106a108e012000200341106a41c80110c30a220041003a00ca01200041003b01c801200041124100109301024020002d00c801220441c7014b0d00200020046a220420042d000041cd00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c8014f0d010b2000200441ff01716a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041f200733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041ec00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041e900733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041ee00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d00004120733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041f600733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d00004131733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d0000412e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d00004130733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b2003200236020c200041124100109301024020002d00c801220441c8014f0d00200020046a220420042d000041e400733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c8014f0d010b2000200441ff01716a220420042d000041ef00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041ed00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d0000412d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041f300733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b200041ca016a21052000200441ff01716a220420042d000041f000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010b200341123a00df01024020052d00004112460d00200341e0016a410c6a4109360200200341246a4102360200200341106a410c6a4102360200200341186a41d4a8c00036020020034102360214200341c4a8c000360210200341093602e401200320053602e001200341206a200341e0016a3602002003200341df016a3602e8012005200341df016a200341106a4194a9c000109401000b0240200441ff0171220541c7014b0d00200020056a220420042d000020032d000c733a0000200020002d00c80141016a22043a00c80102400240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200441ff017141c8014f0d010b2000200441ff01716a220420042d000020032d000d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000f733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b200041024100109301024002402002450d0020002d00c80121040340200441ff0171220441c7014b0d02200020046a220420042d000020012d0000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002104200041003b01c8010b200141016a21012002417f6a22020d000b0b200341f0016a24000f0b200441c80141dca7c000103c000b200441ff017141c80141dca7c000103c000b200441ff017141c80141dca7c000103c000b200441ff017141c80141dca7c000103c000bd30501027f230041306b22032400200320013a000702400240024002402002450d0020002d00ca01200141ff0171460d01200341086a410c6a41093602002003412c6a4102360200200341186a410c6a4102360200200341206a41d4a8c0003602002003410236021c200341c4a8c0003602182003410936020c2003200041ca016a2200360208200341286a200341086a3602002003200341076a3602102000200341076a200341186a4194a9c000109401000b2003200141087122023a00080240024020020d00200020013a00ca0120002d00c9012104200020002d00c801220241016a3a00c901200320013a0019200320043a00180240200241c7014b0d00200020026a220120012d000020032d0018733a0000200020002d00c80141016a22023a00c8010240200241ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002102200041003b01c8010c030b200141c801490d020b200241ff017141c80141dca7c000103c000b2003412c6a4100360200200341286a41f4ddca003602002003420137021c200341a4a9c000360218200341086a41f3bdca00200341186a41aca9c000109401000b2000200241ff01716a220120012d000020032d0019733a0000200020002d00c80141016a22013a00c8010240200141ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002101200041003b01c8010b20032d0007412471450d00200141ff01712201450d00200141c7014b0d01200020016a220120012d000020002d00c901733a000020002d00c80141016a41ff0171220141c8014f0d02200020016a220120012d00004104733a0000200020002d00a701418001733a00a7012000108e01200041003b01c8010b200341306a24000f0b200141c80141bca9c000103c000b200141c80141cca9c000103c000b6601017f230041206b220424002004200136020420042000360200200441086a41106a200241106a290200370300200441086a41086a200241086a29020037030020042002290200370308200441dcaac000200441046a41dcaac000200441086a20031060000b960801027f230041306b2205240020052004360200200041124100109301024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c030b200141c801490d020c030b200641c80141dca7c000103c000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41d4a8c0003602002005410236020c200541c4a8c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a4194a9c000109401000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b200041024100109301024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020032d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541306a24000f0b200641c80141dca7c000103c000b200641ff017141c80141dca7c000103c000be00e01027f230041c0006b220424002004200337030820044108360210200041124100109301024002400240024002402002450d0020002d00c80121050340200541ff0171220541c7014b0d02200020056a220520052d000020012d0000733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010b200141016a21012002417f6a22020d000b0b200441123a001720002d00ca014112470d0120002d00c801220541c7014b0d03200020056a220520052d000020042d0010733a0000200020002d00c80141016a22053a00c8010240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c030b200141c801490d020c030b200541c80141dca7c000103c000b200441306a410c6a41093602002004412c6a4102360200200441186a410c6a4102360200200441206a41d4a8c0003602002004410236021c200441c4a8c000360218200441093602342004200041ca016a2200360230200441286a200441306a3602002004200441176a3602382000200441176a200441186a4194a9c000109401000b2000200541ff01716a220520052d000020042d0011733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0012733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0013733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b200041024100109301024020002d00c801220541c8014f0d00200020056a220520052d000020042d0008733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c8014f0d010b2000200541ff01716a220520052d000020042d0009733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000a733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000b733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000c733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000d733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000e733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000f733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b200441c0006a24000f0b200541ff017141c80141dca7c000103c000b200541ff017141c80141dca7c000103c000b9b0801027f230041306b2205240020052004360200200041124100109301024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c030b200141c801490d020c030b200641c80141dca7c000103c000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41d4a8c0003602002005410236020c200541c4a8c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a4194a9c000109401000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e01200041003b01c8010b200041074100109301024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a22062d00002101200641003a0000200320013a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108e0141002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541306a24000f0b200641c80141ccaac000103c000b200641ff017141c80141dca7c000103c000b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000b1c00200128021841fdb3c000410b2001411c6a28020028020c1100000b1c0020012802184188b4c00041052001411c6a28020028020c1100000bd20601067f230041106b2202240020024100360208200242013703002001280200210320012802082204200210830102402004450d0020032004410c6c6a2105034020032802002106200341086a2802002204200210830102402002280204200228020822076b20044f0d00200220072004108101200228020821070b200228020020076a2006200410c30a1a2002200720046a3602082003410c6a22032005470d000b0b200128020c2103200141146a2802002204200210830102402004450d00200320044104746a2105200228020821040340200328020021070240200228020420046b41034b0d00200220044104108101200228020821040b200228020020046a20073600002002200441046a360208200341046a28020021062003410c6a2802002204200210830102402002280204200228020822076b20044f0d00200220072004108101200228020821070b200228020020076a2006200410c30a1a2002200720046a2204360208200341106a22032005470d000b0b200228020421042002280208210302400240200128021822070d00024020042003470d00200220034101108101200228020821030b200228020020036a41003a0000200341016a21030c010b024020042003470d00200220034101108101200228020821030b200228020020036a41013a00002002200341016a360208200141206a2802002203200210830102402002280204200228020822046b20034f0d00200220042003108101200228020821040b200228020020046a2007200310c30a1a200420036a21030b20022003360208200128022421052001412c6a28020022032002108301024020022802042207200228020822046b20034f0d0020022004200310810120022802042107200228020821040b2002280200220620046a2005200310c30a1a2002200420036a2203360208200128023021040240200720036b41034b0d0020022003410410810120022802002106200228020821030b200620036a20043600002002200341046a2203360208200128023421040240200228020420036b41034b0d00200220034104108101200228020821030b200228020020036a20043600002002200341046a2203360208200020022802002003109c0102402002280204450d00200228020010390b200241106a24000b7201027f2002ad4220862001ad8410132101200041186a22024200370000200041106a22034200370000200041086a2204420037000020004200370000200020012900003700002004200141086a2900003700002003200141106a2900003700002002200141186a290000370000200110390bbe0101017f41012101024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000413f710e2416150001020304051615060708090a16150b0c0d0e16150f101116151213161514161516160b41030f0b41040f0b41050f0b41060f0b41070f0b41080f0b41030f0b41040f0b41050f0b41060f0b41070f0b41030f0b41040f0b41050f0b41060f0b41030f0b41040f0b41050f0b41030f0b41040f0b41030f0b410221010b20010b0e002000280200350200200110500b850101017f230041306b220224002002200036020c2002410a3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a4101360200200241246a4101360200200241dcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012000200241186a103b2101200241306a240020010b850201037f230041306b220224002000280200210302400240024020012d00004104710d002001411c6a2802002100200128021821040c010b2001411c6a2802002100200128021821042002412c6a4100360200200241f4ddca003602282002420137021c200241d4c5c0003602184101210120042000200241186a103b0d010b41002101024003402002200320016a36020c2002410b36021420022002410c6a3602102002410136022c20024101360224200241fcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820042000200241186a103b0d01200141016a22014120470d000b410021010c010b410121010b200241306a240020010b970101037f23004180016b2202240020002802002d00002103410021000340200220006a41ff006a2003410f712204413072200441d7006a2004410a491b3a00002000417f6a21002003410476410f7122030d000b024020004180016a2203418101490d00200341800141bc89c000105e000b200141d1c5c0004102200220006a4180016a410020006b1053210020024180016a240020000b950401047f230041306b220224002001411c6a2802002103200128021821012002412c6a22044100360200200241f4ddca003602282002420137021c200241d4c5c00036021841012105024020012003200241186a103b0d002002200036020c2002410b36021420022002410c6a3602104101210520044101360200200241246a4101360200200241fcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012003200241186a103b0d002002200041016a36020c2002410b36021420022002410c6a3602102002410136022c20024101360224200241fcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012003200241186a103b0d002002412c6a22044100360200200241f4ddca003602282002420137021c2002419cc6c0003602184101210520012003200241186a103b0d0020022000411e6a36020c2002410b36021420022002410c6a3602104101210520044101360200200241246a4101360200200241fcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012003200241186a103b0d0020022000411f6a36020c2002410b36021420022002410c6a3602102002410136022c20024101360224200241fcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012003200241186a103b0d00410021050b200241306a240020050be00303027f017e037f230041b0176b22032400024002400240024002402002200128020028020441e0076e2204200420024b1bad42e0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b200410382206450d020b2001200128020441016a220736020420034100360208200320063602002003200441e0076e360204200720012802084b0d02024002402002450d00200341d00f6a4101722108410021040340200341d00f6a200110a40120032d00d00f2107200341f1076a200841df0710c30a1a2007410b460d02200341126a200341f1076a41df0710c30a1a024020042003280204470d002003200410a50120032802002106200328020821040b2006200441e0076c6a220420073a0000200441016a200341126a41df0710c30a1a2003200328020841016a22043602082002417f6a22020d000b200128020421070b2000200329030037020020012007417f6a360204200041086a200341086a2802003602000c050b20004100360200200328020021062004450d03200441e0076c2107200621040340200410a601200441e0076a2104200741a0786a22070d000c040b0b1034000b1030000b200041003602000b20032802042204450d00200441e0076c450d00200610390b200341b0176a24000bc91503057f027e017f23004180146b22022400024002402001280200220328020422040d002000410b3a00000c010b200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e0b000102030405060708090b0a0b200241a00c6a200110b90120022802a00c2204450d13200241a80c6a280200210320022802a40c21052002200110bb01024002402002280200450d00200241003602a00c0c010b200241a00c6a2001200228020410c90120022802a00c0d210b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d21200541f8036c450d21200410390c210b200241a00c6a200110b90120022802a00c2204450d11200241a80c6a280200210320022802a40c2105200241086a200110bb01024002402002280208450d00200241003602a00c0c010b200241a00c6a2001200228020c10c90120022802a00c0d1f0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d20200541f8036c450d20200410390c200b200241a00c6a200110b90120022802a00c2204450d0f200241a80c6a280200210320022802a40c2105200241106a200110bb01024002402002280210450d00200241003602a00c0c010b200241a00c6a2001200228021410c90120022802a00c0d1d0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d1f200541f8036c450d1f200410390c1f0b200241186a200110bc012002290318a70d110240200128020022032802042204450d0020022903202107200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241a00c6a200110b90120022802a00c2201450d0020022902a40c2108200041106a2007370300200041086a2008370000200041046a2001360000200041033a00000c1f0b2000410b3a00000c1e0b200241a00c6a200110b90120022802a00c2204450d11200241a00c6a41086a280200210320022802a40c2105200241a00c6a200110ba01024020022903a00c4209510d00200041106a200241a00c6a41c80310c30a1a2000410c6a2003360000200041086a2005360000200041046a2004360000200041043a00000c1e0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d1d200541f8036c450d1d200410390c1d0b200241c0046a200110b90120022802c0042204450d11200241c8046a280200210320022802c4042105200241c0046a200110ba0120022903c0044209510d0a200241f8006a200241c0046a41c80310c30a1a200241286a200110bb01024002402002280228450d00200241003602c0040c010b200241c0046a2001200228022c10b80120022802c0040d190b2000410b3a0000200241f8006a10af010c0b0b200128020022032802042204450d11200328020022052d0000210620032004417f6a3602042003200541016a36020041002104024002400240024020060e0403000102150b410121040c020b410221040c010b410321040b02402001280200220328020422054108490d002003280200220629000021072003200541786a3602042003200641086a360200200241306a200110bb010240024020022802300d0020012802002203280204220520022802342201490d002001417f4c0d150240024020010d00410121060c010b200110382206450d0920064100200110c50a1a200328020421050b200520014f0d01200610390b2000410b3a00000c1d0b200620032802002209200110c30a21062003200520016b3602042003200920016a360200200041d4076a2001ad2208422086200884370200200041d0076a2006360200200041106a4125360200200041086a2007370300200020043a0001200041063a00000c1c0b2000410b3a00000c1b0b200241c8006a200110bb0120022802480d12200228024c2103200241c0006a200110bb0120022802400d1320022802442104200241386a200110bb01024020022802380d00200228023c2101200041073a00002000410c6a2001360200200041086a2004360200200041046a20033602000c1b0b2000410b3a00000c1a0b200241d0006a200110bb01024020022802500d0020022802542101200041083a0000200041046a20013602000c1a0b2000410b3a00000c190b200241e8006a200110bb0120022802680d12200228026c2103200241e0006a200110bb0120022802600d1320022802642104200241d8006a200110bb01024020022802580d00200228025c2101200041093a00002000410c6a2001360200200041086a2004360200200041046a20033602000c190b2000410b3a00000c180b2000410b3a00000c170b200241a00c6a200110ba0120022903a00c4209510d01200241f8006a200241a00c6a41c80310c30a1a2001200128020441016a2203360204200320012802084b0d03200241a00c6a200110a40120022d00a00c2103200241c0046a200241a00c6a41017241df0710c30a1a2003410b460d0341e007103822040d020b1030000b2000410b3a00000c140b200420033a0000200441016a200241c0046a41df0710c30a1a20012001280204417f6a360204200041086a200241f8006a41c80310c30a1a200041046a20043602002000410a3a00000c130b2000410b3a0000200241f8006a10af010c120b2000410b3a00000b02402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d10200541f8036c450d10200410390c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b1034000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b200041106a20022903c004370200200041186a200241c0046a41086a280200360200200241a00c6a41046a200241f8006a41c80310c30a1a200041053a0000200020022f00753b0001200041036a200241f7006a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600002000411c6a200241a00c6a41cc0310c30a1a0c030b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041023a0000200020022f00c0043b0001200041036a200241c0046a41026a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000c020b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041013a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000c010b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041003a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000b20024180146a24000bd90102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42e0077e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141e0076c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141e0076e360200200241206a24000f0b1034000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210c6010b0f0b200041086a10af01200041046a220228020010a601200228020010390ba80303027f017e037f230041b0176b22032400024002402002200128020441e0076e2204200420024b1bad42e0077e2205422088a70d002005a72206417f4c0d000240024020060d00410821070c010b200610382207450d020b4100210420034100360208200320073602002003200641e0076e3602040240024002402002450d00200341d00f6a41017221080340200341d00f6a200110a80120032d00d00f2106200341f1076a200841df0710c30a1a2006410b460d02200341126a200341f1076a41df0710c30a1a024020042003280204470d002003200410a50120032802002107200328020821040b2007200441e0076c6a220420063a0000200441016a200341126a41df0710c30a1a2003200328020841016a22043602082002417f6a22020d000b0b20002003290300370200200041086a200341086a2802003602000c010b200041003602002003280200210202402004450d00200441e0076c2106200221040340200410a601200441e0076a2104200641a0786a22060d000b0b20032802042204450d00200441e0076c450d00200210390b200341b0176a24000f0b1034000b1030000be51403057f027e017f23004180146b2202240002400240200128020422030d002000410b3a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e0b000102030405060708090b0a0b200241a00c6a200110aa0120022802a00c2203450d13200241a80c6a280200210520022802a40c21042002200110ad01024002402002280200450d00200241003602a00c0c010b200241a00c6a2001200228020410a90120022802a00c0d210b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d21200441f8036c450d21200310390c210b200241a00c6a200110aa0120022802a00c2203450d11200241a80c6a280200210520022802a40c2104200241086a200110ad01024002402002280208450d00200241003602a00c0c010b200241a00c6a2001200228020c10a90120022802a00c0d1f0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d20200441f8036c450d20200310390c200b200241a00c6a200110aa0120022802a00c2203450d0f200241a80c6a280200210520022802a40c2104200241106a200110ad01024002402002280210450d00200241003602a00c0c010b200241a00c6a2001200228021410a90120022802a00c0d1d0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d1f200441f8036c450d1f200310390c1f0b200241186a200110b0012002290318a70d11024020012802042203450d0020022903202107200128020022042d0000210520012003417f6a3602042001200441016a36020020050d00200241a00c6a200110aa0120022802a00c2201450d0020022902a40c2108200041106a2007370300200041086a2008370000200041046a2001360000200041033a00000c1f0b2000410b3a00000c1e0b200241a00c6a200110aa0120022802a00c2203450d11200241a00c6a41086a280200210520022802a40c2104200241a00c6a200110ab01024020022903a00c4209510d00200041106a200241a00c6a41c80310c30a1a2000410c6a2005360000200041086a2004360000200041046a2003360000200041043a00000c1e0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d1d200441f8036c450d1d200310390c1d0b200241c0046a200110aa0120022802c0042203450d11200241c8046a280200210520022802c4042104200241c0046a200110ab0120022903c0044209510d0a200241f8006a200241c0046a41c80310c30a1a200241286a200110ad01024002402002280228450d00200241003602c0040c010b200241c0046a2001200228022c10ae0120022802c0040d190b2000410b3a0000200241f8006a10af010c0b0b2006450d1120042d0001210520012003417e6a22063602042001200441026a36020041002109024002400240024020050e0403000102150b410121090c020b410221090c010b410321090b0240024020064108490d00200429000221072001200341766a36020420012004410a6a360200200241306a200110ad0120022802300d012001280204220420022802342203490d012003417f4c0d140240024020030d00410121050c010b200310382205450d0820054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200041d0076a2005360200200041106a4125360200200041086a2007370300200020093a0001200041063a0000200041d4076a2003ad22074220862007843702000c1d0b2000410b3a00000c1c0b2000410b3a00000c1b0b200241c8006a200110ad0120022802480d12200228024c2103200241c0006a200110ad0120022802400d1320022802442104200241386a200110ad01024020022802380d00200228023c2101200041073a00002000410c6a2001360200200041086a2004360200200041046a20033602000c1b0b2000410b3a00000c1a0b200241d0006a200110ad01024020022802500d0020022802542101200041083a0000200041046a20013602000c1a0b2000410b3a00000c190b200241e8006a200110ad0120022802680d12200228026c2103200241e0006a200110ad0120022802600d1320022802642104200241d8006a200110ad01024020022802580d00200228025c2101200041093a00002000410c6a2001360200200041086a2004360200200041046a20033602000c190b2000410b3a00000c180b2000410b3a00000c170b200241a00c6a200110ab0120022903a00c4209510d01200241f8006a200241a00c6a41c80310c30a1a200241a00c6a200110a80120022d00a00c2101200241c0046a200241a00c6a41017241df0710c30a1a2001410b460d0341e007103822030d020b1030000b2000410b3a00000c140b200320013a0000200341016a200241c0046a41df0710c30a1a200041086a200241f8006a41c80310c30a1a200041046a20033602002000410a3a00000c130b2000410b3a0000200241f8006a10af010c120b2000410b3a00000b02402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d10200441f8036c450d10200310390c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b1034000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b200041106a20022903c004370200200041186a200241c0046a41086a280200360200200241a00c6a41046a200241f8006a41c80310c30a1a200041053a0000200020022f00753b0001200041036a200241f7006a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600002000411c6a200241a00c6a41cc0310c30a1a0c030b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041023a0000200020022f00c0043b0001200041036a200241c0046a41026a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000c020b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041013a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000c010b200041106a20022903a00c370200200041186a200241a00c6a41086a280200360200200041003a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000b20024180146a24000bbc1408027f017e0f7f017e017f037e017f027e230041d0176b220324000240200220012802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d0002400240024020040d00410821060c010b200410382206450d010b2003410036024020032006360238200320044198046e36023c0240024002402002450d00200341d8136a410c6a2107200341d8136a41046a2108200341e00f6a4104722109200341b8136a210a200341e00f6a410c6a210b4100210c4100210d034020012802042204450d022001280200220e2d0000210f20012004417f6a3602042001200e41016a3602004100210e02400240024002400240024002400240024002400240024002400240024002400240200f0e080300010205060708130b200341d8136a200110aa0120032802d813220f450d0820032802e013210420032802dc132110200341d8136a200110ab01024020032903d81322054209510d0020032802e0132111200341cc086a200741bc0310c30a1a4101210e200f21122010211320042114200521150c030b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0e201041f8036c450d0e200f10390c0e0b200341e00f6a200110aa0120032802e00f220f450d0720032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341086a200110ad01024002402003280208450d00200341003602e00f0c010b200341e00f6a2001200328020c10ae0120032802e00f0d0b0b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d07201041f8036c450d07200f10390c070b200341d8136a200110aa0120032802d813220f450d0620032802e013210420032802dc132110200341d8136a200110aa0120032802d813450d0120032802e013211120032903d81321154103210e200f211220102113200421140b200341dc046a200341cc086a41cc0310c30a1a0c0c0b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0a201041f8036c450d0a200f10390c0a0b200341e00f6a200110aa0120032802e00f220f450d0320032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341106a200110ad01024002402003280210450d00200341003602e00f0c010b200341e00f6a2001200328021410ae0120032802e00f0d090b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d03201041f8036c450d03200f10390c030b200341e00f6a200110aa0120032802e00f220f450d0220032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341186a200110ad01024002402003280218450d00200341003602e00f0c010b200341e00f6a2001200328021c10ae0120032802e00f0d070b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d02201041f8036c450d02200f10390c020b200341206a200110b0014108210e410121042003290320a70d0720032903282105200341d8136a200110ab0120032903d8134209510d07200341e00f6a200341d8136a41c80310c30a1a200341d8136a200110aa0120032802d813220f450d0220032802e013211420032802dc13211320032802e00f2111200341cc086a200941c40310c30a1a4106210e41002104200f2112200521150c060b200341d8136a200110b10120032802d813410c460d00200341e00f6a200341d8136a41f80310c30a1a0240200128020422044108490d002001280200220e29000021052001200441786a220f3602042001200e41086a360200200f4108490d00200e29000821172001200441706a220f3602042001200e41106a360200200f450d00200e2d0010210f20012004416f6a3602042001200e41116a3602004100211002400240200f0e020100020b410121100b200341306a200110ad0120032802300d00200341d8136a2001200328023410a70120032802d813220f450d0020032802e013211420032802dc13211320032903e00f211520032802e80f2111200341cc086a200b41cc0310c30a1a200341a8086a41186a200a41186a290300370300200341a8086a41106a200a41106a290300370300200341a8086a41086a200a41086a2903003703002003200a2903003703a8084107210e41002104200f211220172118200521192010211a0c070b200341e00f6a10ac010b4108210e410121040c050b200341e00f6a10af010c040b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4102210e41002104200f211220102113201621140c020b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4105210e41002104200f211220102113201621140c010b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4104210e41002104200f211220102113201621140b0b200341dc046a200341cc086a41cc0310c30a1a200341b8046a41186a200341a8086a41186a290300370300200341b8046a41106a200341a8086a41106a290300370300200341b8046a41086a200341a8086a41086a290300370300200320032903a8083703b80420040d030b200d41016a210d200341ec006a200341dc046a41cc0310c30a1a200341c8006a41186a220f200341b8046a41186a290300370300200341c8006a41106a2210200341b8046a41106a290300370300200341c8006a41086a2216200341b8046a41086a290300370300200320032903b8043703480240200c200328023c470d00200341386a200c10b201200328023821062003280240210c0b2006200c4198046c6a22042011360018200420153700102004201436000c20042013360008200420123600042004201a3a00012004200e3a00002004411c6a200341ec006a41cc0310c30a1a2016290300210520102903002117200f290300211b2003290348211c200420183700900420042019370088042004201c3700e80320044180046a201b370000200441f8036a2017370000200441f0036a20053700002003200328024041016a220c360240200d2002470d000b0b20002003290338370200200041086a200341386a41086a2802003602000c010b20004100360200200341386a10b301200328023c2204450d0020044198046c450d00200328023810390b200341d0176a24000f0b1030000b1034000bd30303037f017e037f230041800c6b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b200228020c2203200128020441f8036e2204200420034b1bad42f8037e2205422088a70d012005a72206417f4c0d010240024020060d00410821070c010b200610382207450d030b4100210420024100360218200220073602102002200641f8036e360214024002402003450d0020024188086a4104722108034020024188086a200110b101200228028808210620024194046a200841f40310c30a1a2006410c460d02200241206a20024194046a41f40310c30a1a024020042002280214470d00200241106a2004410110b40320022802102107200228021821040b2007200441f8036c6a22042006360200200441046a200241206a41f40310c30a1a2002200228021841016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b200041003602002002280210210302402004450d00200441f8036c2106200321040340200410ac01200441f8036a2104200641887c6a22060d000b0b20022802142204450d00200441f8036c450d00200310390b200241800c6a24000f0b1034000b1030000bfe6b1c087f017e0a7f017e057f017e017f017e047f017e0a7f017e057f017e017f017e047f017e0a7f017e057f017e017f017e047f017e0a7f017e230041e0006b2202240002400240200128020422030d00200042093703000c010b200128020022042d0000210520012003417f6a3602042001200441016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e09000102030405060709080b200042003703000c3a0b200241286a2001108c03024020022d0028410a460d0020002002290328370308200041386a200241286a41306a290300370300200041306a200241286a41286a290300370300200041286a200241286a41206a290300370300200041206a200241286a41186a290300370300200041186a200241286a41106a290300370300200041106a200241306a290300370300200042013703000c3a0b200042093703000c390b200241286a2001108c0320022d00282203410a460d11200241266a220620022d002b3a0000200220022f00293b0124200241306a22072802002105200241286a410c6a2802002108200241286a41106a2209290300210a200241286a41186a220b280200210c200241c4006a280200210d200241286a41206a220e280200210f200241286a41246a2802002110200241286a41286a22112802002112200241286a412c6a2802002113200241286a41306a22142903002115200228022c2104200241286a2001108c03024020022d0028410a460d00200041c0006a2002290328370300200041f0006a2014290300370300200041e8006a2011290300370300200041e0006a200e290300370300200041d8006a200b290300370300200041d0006a2009290300370300200041c8006a2007290300370300200020033a0008200020022f01243b00092000410b6a20062d00003a0000200041386a2015370300200041346a2013360200200041306a20123602002000412c6a2010360200200041286a200f360200200041246a200d360200200041206a200c360200200041186a200a370300200041146a2008360200200041106a20053602002000410c6a2004360200200042023703000c390b20004209370300024002400240024002402003410f710e093d3d0001023d3d033d040b20104101470d3c2013450d3c201210390c3c0b20044101470d3b2008450d3b200510390c3b0b200c4101470d3a200f450d3a200d10390c3a0b2005450d39200410390c390b20044101470d382008450d38200510390c380b200241286a2001108c0320022d00282203410a460d11200241206a41026a20022d002b3a0000200220022f00293b0120200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d0e200241246a41026a20022d002b3a0000200220022f00293b01242004280200211a200528020021052008290300211b200c28020021082010280200211c200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2104200241286a2001108c03024020022d0028410a460d00200041f8006a2002290328370300200041a8016a200241286a41306a290300370300200041a0016a200241286a41286a29030037030020004198016a200241286a41206a29030037030020004190016a200241286a41186a29030037030020004188016a200241286a41106a29030037030020004180016a200241306a290300370300200020033a0008200020022f01203b00092000410b6a200241206a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201c360200200041d8006a2008360200200041d0006a201b370300200041cc006a2005360200200041c8006a201a360200200041c4006a2004360200200020022f01243b0041200041c3006a200241246a41026a2d00003a0000200042033703000c380b20004209370300024002400240024002402007410f710e09141400010214140314040b200c4101470d13200f450d13201310390c130b20044101470d122005450d12201a10390c120b20084101470d112010450d11201c10390c110b201a450d10200410390c100b20044101470d0f2005450d0f201a10390c0f0b200241286a2001108c0320022d00282203410a460d112002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d12200241206a41026a20022d002b3a0000200220022f00293b01202004280200211a2005280200211c2008290300211b200c28020021082010280200211e200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2105200241286a2001108c0320022d00282204410a460d0b200241246a41026a221f20022d002b3a0000200220022f00293b0124200241306a22202802002112200241286a410c6a2802002106200241286a41106a22212903002122200241286a41186a22232802002124200241c4006a2802002125200241286a41206a22262802002127200241286a41246a2802002128200241286a41286a2229280200212a200241286a412c6a280200212b200241286a41306a222c290300212d200228022c210d200241286a2001108c03024020022d0028410a460d00200041b0016a2002290328370300200041e0016a202c290300370300200041d8016a2029290300370300200041d0016a2026290300370300200041c8016a2023290300370300200041c0016a2021290300370300200041b8016a2020290300370300200020033a0008200020022f011c3b00092000410b6a2002411c6a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2008360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01203b0041200041c3006a200241206a41026a2d00003a0000200020022f01243b0079200041fb006a201f2d00003a0000200041a8016a202d370300200041a4016a202b360200200041a0016a202a3602002000419c016a202836020020004198016a202736020020004194016a202536020020004190016a202436020020004188016a202237030020004184016a200636020020004180016a2012360200200041fc006a200d360200200042043703000c370b20004209370300024002400240024002402004410f710e09111100010211110311040b20284101470d10202b450d10202a10390c100b200d4101470d0f2006450d0f201210390c0f0b20244101470d0e2027450d0e202510390c0e0b2012450d0d200d10390c0d0b200d4101470d0c2006450d0c201210390c0c0b200241286a2001108c0320022d00282203410a460d12200241186a41026a20022d002b3a0000200220022f00293b0118200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d132002411c6a41026a20022d002b3a0000200220022f00293b011c2004280200211a2005280200211c2008290300211b200c28020021082010280200211e200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2105200241286a2001108c0320022d00282204410a460d14200241206a41026a20022d002b3a0000200220022f00293b0120200241306a220d2802002123200241346a22122802002126200241386a22062903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108c0320022d00282220410a460d08200241246a41026a20022d002b3a0000200220022f00293b0124200d28020021322012280200211220062903002133202428020021062028280200213420272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c210d200241286a2001108c03024020022d0028410a460d00200041e8016a200229032837030020004198026a200241286a41306a29030037030020004190026a200241286a41286a29030037030020004188026a200241286a41206a29030037030020004180026a200241286a41186a290300370300200041f8016a200241286a41106a290300370300200041f0016a200241306a290300370300200020033a0008200020022f01183b00092000410b6a200241186a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2008360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f011c3b0041200041c3006a2002411c6a41026a2d00003a0000200020022f01203b0079200041fb006a200241206a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241246a41026a2d00003a0000200020022f01243b00b101200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2034360200200041c8016a2006360200200041c0016a2033370300200041bc016a2012360200200041b8016a2032360200200041b4016a200d360200200042053703000c360b20004209370300024002400240024002402020410f710e090e0e0001020e0e030e040b20244101470d0d2027450d0d202b10390c0d0b200d4101470d0c2012450d0c203210390c0c0b20064101470d0b2028450d0b203410390c0b0b2032450d0a200d10390c0a0b200d4101470d092012450d09203210390c090b200241286a2001108c0320022d00282203410a460d14200241146a41026a20022d002b3a0000200220022f00293b0114200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d15200241186a41026a20022d002b3a0000200220022f00293b01182004280200211a2005280200211c2008290300211b200c28020021082010280200211e200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2105200241286a2001108c0320022d00282204410a460d162002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a220d2802002123200241346a22122802002126200241386a22062903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108c0320022d00282220410a460d17200241206a41026a20022d002b3a0000200220022f00293b0120200d28020021322012280200213420062903002133202428020021062028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108c0320022d0028220d410a460d05200241246a41026a223720022d002b3a0000200220022f00293b0124200241306a2238280200212a200241286a410c6a280200211f200241286a41106a2239290300213a200241286a41186a223b280200213c200241c4006a280200213d200241286a41206a223e280200213f200241286a41246a2802002140200241286a41286a22412802002142200241286a412c6a2802002143200241286a41306a22442903002145200228022c2125200241286a2001108c03024020022d0028410a460d00200041a0026a2002290328370300200041d0026a2044290300370300200041c8026a2041290300370300200041c0026a203e290300370300200041b8026a203b290300370300200041b0026a2039290300370300200041a8026a2038290300370300200020033a0008200020022f01143b00092000410b6a200241146a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2008360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01183b0041200041c3006a200241186a41026a2d00003a0000200020022f011c3b0079200041fb006a2002411c6a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241206a41026a2d00003a0000200020022f01203b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2006360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a20372d00003a0000200020022f01243b00e90120004198026a204537030020004194026a204336020020004190026a20423602002000418c026a204036020020004188026a203f36020020004184026a203d36020020004180026a203c360200200041f8016a203a370300200041f4016a201f360200200041f0016a202a360200200041ec016a2025360200200042063703000c350b2000420937030002400240024002400240200d410f710e090b0b0001020b0b030b040b20404101470d0a2043450d0a204210390c0a0b20254101470d09201f450d09202a10390c090b203c4101470d08203f450d08203d10390c080b202a450d07202510390c070b20254101470d06201f450d06202a10390c060b200241286a2001108c0320022d00282203410a460d17200241106a41026a20022d002b3a0000200220022f00293b0110200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d18200241146a41026a20022d002b3a0000200220022f00293b01142004280200211a2005280200211c2008290300211b200c28020021082010280200211e200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2105200241286a2001108c0320022d00282204410a460d19200241186a41026a20022d002b3a0000200220022f00293b0118200241306a220d2802002123200241346a22122802002126200241386a22062903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108c0320022d00282220410a460d1a2002411c6a41026a20022d002b3a0000200220022f00293b011c200d28020021322012280200213420062903002133202428020021062028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108c0320022d0028220d410a460d1b200241206a41026a20022d002b3a0000200220022f00293b0120200241306a2225280200213b200241346a222a280200213e200241386a221f290300213a200241c0006a223c2802002141200241c4006a22402802002146200241c8006a223f2802002147200241cc006a22432802002144200241d0006a223d2802002148200241d4006a22422802002149200241d8006a22372903002145200228022c2139200241286a2001108c0320022d00282238410a460d02200241246a41026a20022d002b3a0000200220022f00293b01242025280200214a202a280200212a201f290300214b203c280200211f2040280200214c203f28020021402043280200213c203d28020021432042280200213f2037290300214d200228022c2125200241286a2001108c03024020022d0028410a460d00200041d8026a200229032837030020004188036a200241286a41306a29030037030020004180036a200241286a41286a290300370300200041f8026a200241286a41206a290300370300200041f0026a200241286a41186a290300370300200041e8026a200241286a41106a290300370300200041e0026a200241306a290300370300200020033a0008200020022f01103b00092000410b6a200241106a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2008360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01143b0041200041c3006a200241146a41026a2d00003a0000200020022f01183b0079200041fb006a200241186a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a2002411c6a41026a2d00003a0000200020022f011c3b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2006360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a200241206a41026a2d00003a0000200020022f01203b00e901200041a0026a20383a000020004198026a204537030020004194026a204936020020004190026a20483602002000418c026a204436020020004188026a204736020020004184026a204636020020004180026a2041360200200041f8016a203a370300200041f4016a203e360200200041f0016a203b360200200041ec016a2039360200200041a3026a200241246a41026a2d00003a0000200020022f01243b00a102200041d0026a204d370300200041cc026a203f360200200041c8026a2043360200200041c4026a203c360200200041c0026a2040360200200041bc026a204c360200200041b8026a201f360200200041b0026a204b370300200041ac026a202a360200200041a8026a204a360200200041a4026a2025360200200042073703000c340b20004209370300024002400240024002402038410f710e09080800010208080308040b203c4101470d07203f450d07204310390c070b20254101470d06202a450d06204a10390c060b201f4101470d052040450d05204c10390c050b204a450d04202510390c040b20254101470d03202a450d03204a10390c030b200042093703000c320b200241286a2001108c0320022d00282203410a460d1a2002410c6a41026a20022d002b3a0000200220022f00293b010c200241306a2204280200210b200241346a2205280200210e200241386a2208290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22062903002115200228022c2109200241286a2001108c0320022d00282207410a460d1b200241106a41026a20022d002b3a0000200220022f00293b01102004280200211a2005280200211c2008290300211b200c28020021082010280200211e200f28020021102013280200210c200d28020021132012280200210f2006290300211d200228022c2105200241286a2001108c0320022d00282204410a460d1c200241146a41026a20022d002b3a0000200220022f00293b0114200241306a220d2802002123200241346a22122802002126200241386a22062903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108c0320022d00282220410a460d1d200241186a41026a20022d002b3a0000200220022f00293b0118200d28020021322012280200213420062903002133202428020021062028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108c0320022d0028220d410a460d1e2002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a2225280200213b200241346a222a280200213e200241386a221f290300213a200241c0006a223c2802002141200241c4006a22402802002146200241c8006a223f2802002147200241cc006a22432802002144200241d0006a223d2802002148200241d4006a22422802002149200241d8006a22372903002145200228022c2139200241286a2001108c0320022d00282238410a460d1f200241206a41026a20022d002b3a0000200220022f00293b01202025280200214a202a280200214c201f290300214b203c280200211f2040280200214e203f28020021402043280200213c203d28020021432042280200213f2037290300214d200228022c212a200241286a2001108c0320022d00282225410a460d20200241246a41026a224f20022d002b3a0000200220022f00293b0124200241306a22502802002142200241286a410c6a2802002137200241286a41106a22512903002152200241286a41186a22532802002154200241c4006a2802002155200241286a41206a22562802002157200241286a41246a2802002158200241286a41286a2259280200215a200241286a412c6a280200215b200241286a41306a225c290300215d200228022c213d200241286a2001108c03024020022d0028410a460d0020004190036a2002290328370300200041c0036a205c290300370300200041b8036a2059290300370300200041b0036a2056290300370300200041a8036a2053290300370300200041a0036a205129030037030020004198036a2050290300370300200020033a0008200020022f010c3b00092000410b6a2002410c6a41026a2d00003a0000200041c0006a20073a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2008360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01103b0041200041c3006a200241106a41026a2d00003a0000200020022f01143b0079200041fb006a200241146a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241186a41026a2d00003a0000200020022f01183b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2006360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a2002411c6a41026a2d00003a0000200020022f011c3b00e901200041a0026a20383a000020004198026a204537030020004194026a204936020020004190026a20483602002000418c026a204436020020004188026a204736020020004184026a204636020020004180026a2041360200200041f8016a203a370300200041f4016a203e360200200041f0016a203b360200200041ec016a2039360200200041a3026a200241206a41026a2d00003a0000200020022f01203b00a102200041d8026a20253a0000200041d0026a204d370300200041cc026a203f360200200041c8026a2043360200200041c4026a203c360200200041c0026a2040360200200041bc026a204e360200200041b8026a201f360200200041b0026a204b370300200041ac026a204c360200200041a8026a204a360200200041a4026a202a360200200041db026a204f2d00003a0000200020022f01243b00d90220004188036a205d37030020004184036a205b36020020004180036a205a360200200041fc026a2058360200200041f8026a2057360200200041f4026a2055360200200041f0026a2054360200200041e8026a2052370300200041e4026a2037360200200041e0026a2042360200200041dc026a203d360200200042083703000c320b200042093703000240024002400240024002402025410f710e09313100010231310331040b20584101470d30205b450d30205a10390c300b203d4101470d2f20370d030c2f0b20544101470d2e2057450d2e205510390c2e0b2042450d2d203d10390c2d0b203d4101470d2c2037450d2c0b204210390c2b0b200042093703000b024002400240024002400240200d410f710e092b2b0001022b2b032b040b20444101470d2a2049450d2a204810390c2a0b20394101470d29203e0d030c290b20414101470d282047450d28204610390c280b203b450d27203910390c270b20394101470d26203e450d260b203b10390c250b200042093703000b0240024002400240024002402020410f710e09262600010226260326040b20244101470d252027450d25202b10390c250b20124101470d2420340d030c240b20064101470d232028450d23203610390c230b2032450d22201210390c220b20124101470d212034450d210b203210390c200b200042093703000b0240024002400240024002402004410f710e09222200010222220322040b202c4101470d212031450d21203010390c210b20214101470d2020260d030c200b20294101470d1f202f450d1f202e10390c1f0b2023450d1e202110390c1e0b20214101470d1d2026450d1d0b202310390c1c0b200042093703000b0240024002400240024002402007410f710e091f1f0001021f1f031f040b200c4101470d1e200f450d1e201310390c1e0b20054101470d1d201c0d030c1d0b20084101470d1c2010450d1c201e10390c1c0b201a450d1b200510390c1b0b20054101470d1a201c450d1a0b201a10390c190b200042093703000b0240024002400240024002402003410f710e092d2d0001022d2d032d040b20144101470d2c2019450d2c201810390c2c0b20094101470d2b200e0d030c2b0b20114101470d2a2017450d2a201610390c2a0b200b450d29200910390c290b20094101470d28200e450d280b200b10390c270b200042093703000c260b200042093703000c250b200042093703000c240b200042093703000c130b200042093703000c220b200042093703000c130b200042093703000c110b200042093703000c1f0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c1b0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c0d0b200042093703000c160b200042093703000c140b200042093703000c120b200042093703000c100b200042093703000c0e0b200042093703000c0c0b200042093703000c0a0b0240024002400240024002402003410f710e09151500010215150315040b20144101470d142019450d14201810390c140b20094101470d13200e0d030c130b20114101470d122017450d12201610390c120b200b450d11200910390c110b20094101470d10200e450d100b200b10390c0f0b0240024002400240024002402007410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20084101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09131300010213130313040b20144101470d122019450d12201810390c120b20094101470d11200e0d030c110b20114101470d102017450d10201610390c100b200b450d0f200910390c0f0b20094101470d0e200e450d0e0b200b10390c0d0b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402007410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20084101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09101000010210100310040b20144101470d0f2019450d0f201810390c0f0b20094101470d0e200e0d030c0e0b20114101470d0d2017450d0d201610390c0d0b200b450d0c200910390c0c0b20094101470d0b200e450d0b0b200b10390c0a0b0240024002400240024002402020410f710e09060600010206060306040b20244101470d052027450d05202b10390c050b20124101470d0420340d030c040b20064101470d032028450d03203610390c030b2032450d02201210390c020b20124101470d012034450d010b203210390b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402007410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20084101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e090c0c0001020c0c030c040b20144101470d0b2019450d0b201810390c0b0b20094101470d0a200e0d030c0a0b20114101470d092017450d09201610390c090b200b450d08200910390c080b20094101470d07200e450d070b200b10390c060b0240024002400240024002402038410f710e09060600010206060306040b203c4101470d05203f450d05204310390c050b202a4101470d04204c0d030c040b201f4101470d032040450d03204e10390c030b204a450d02202a10390c020b202a4101470d01204c450d010b204a10390b024002400240024002400240200d410f710e09060600010206060306040b20444101470d052049450d05204810390c050b20394101470d04203e0d030c040b20414101470d032047450d03204610390c030b203b450d02203910390c020b20394101470d01203e450d010b203b10390b0240024002400240024002402020410f710e09060600010206060306040b20244101470d052027450d05202b10390c050b20124101470d0420340d030c040b20064101470d032028450d03203610390c030b2032450d02201210390c020b20124101470d012034450d010b203210390b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402007410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20084101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09060600010206060306040b20144101470d052019450d05201810390c050b20094101470d04200e0d030c040b20114101470d032017450d03201610390c030b200b450d02200910390c020b20094101470d01200e450d010b200b10390b200241e0006a24000beb010002400240024002400240024002400240024020002802000e0b0808080800010203040506070b200041086a280200450d07200028020410390f0b200041086a280200450d06200028020410390f0b200041086a10af010f0b200041086a10af010f0b200041086a280200450d03200028020410390f0b0240200041086a280200450d00200028020410390b200041106a2d00004106490d02200041186a280200450d02200041146a28020010390f0b200041086a10af010c010b200041086a10af01200041d0036a2d00004106490d00200041d8036a280200450d00200041d4036a28020010390f0b0bbf0201067f0240024020012802042202450d0020012002417f6a22033602044101210420012001280200220541016a360200024020052d0000220641037122074103460d0002400240024020070e03000102000b20064102762107410021040c040b41012104024020030d000c040b20012002417e6a3602042001200541026a36020020052d0001410874200672220141ffff0371418002490d03200141fcff03714102762107410021040c030b20034103490d0120012002417c6a3602042001200541046a36020020052f0001200541036a2d000041107472410874200672220141808004492104200141027621070c020b0240200641034d0d000c020b20034104490d0120012002417b6a3602042001200541056a360200200528000122074180808080044921040c010b410121040b20002007360204200020043602000be61408027f017e0f7f017e017f037e017f027e230041d0176b220324000240200220012802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d0002400240024020040d00410821060c010b200410382206450d010b2003410036024020032006360238200320044198046e36023c0240024002402002450d00200341d8136a410c6a2107200341d8136a41046a2108200341e00f6a4104722109200341b8136a210a200341e00f6a410c6a210b4100210c4100210d034020012802042204450d022001280200220e2d0000210f20012004417f6a3602042001200e41016a3602004100210e02400240024002400240024002400240024002400240024002400240024002400240200f0e080300010205060708130b200341d8136a200110aa0120032802d813220f450d0820032802e013210420032802dc132110200341d8136a200110ab01024020032903d81322054209510d0020032802e0132111200341cc086a200741bc0310c30a1a4101210e200f21122010211320042114200521150c030b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0e201041f8036c450d0e200f10390c0e0b200341e00f6a200110aa0120032802e00f220f450d0720032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341086a200110ad01024002402003280208450d00200341003602e00f0c010b200341e00f6a2001200328020c10ae0120032802e00f0d0b0b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d07201041f8036c450d07200f10390c070b200341d8136a200110aa0120032802d813220f450d0620032802e013210420032802dc132110200341d8136a200110aa0120032802d813450d0120032802e013211120032903d81321154103210e200f211220102113200421140b200341dc046a200341cc086a41cc0310c30a1a0c0c0b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0a201041f8036c450d0a200f10390c0a0b200341e00f6a200110aa0120032802e00f220f450d0320032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341106a200110ad01024002402003280210450d00200341003602e00f0c010b200341e00f6a2001200328021410ae0120032802e00f0d090b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d03201041f8036c450d03200f10390c030b200341e00f6a200110aa0120032802e00f220f450d0220032802e80f211620032802e40f2110200341e00f6a200110ab01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341186a200110ad01024002402003280218450d00200341003602e00f0c010b200341e00f6a2001200328021c10ae0120032802e00f0d070b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d02201041f8036c450d02200f10390c020b200341206a200110b0014108210e410121042003290320a70d0720032903282105200341d8136a200110ab0120032903d8134209510d07200341e00f6a200341d8136a41c80310c30a1a200341d8136a200110aa0120032802d813220f450d0220032802e013211420032802dc13211320032802e00f2111200341cc086a200941c40310c30a1a4106210e41002104200f2112200521150c060b200341d8136a200110b10120032802d813410c460d00200341e00f6a200341d8136a41f80310c30a1a0240200128020422044108490d002001280200220e29000021052001200441786a220f3602042001200e41086a360200200f4108490d00200e29000821172001200441706a220f3602042001200e41106a360200200f450d00200e2d0010210f20012004416f6a3602042001200e41116a3602004100211002400240200f0e020100020b410121100b200341306a200110ad0120032802300d00200341d8136a2001200328023410c70120032802d813220f450d0020032802e013211420032802dc13211320032903e00f211520032802e80f2111200341cc086a200b41cc0310c30a1a200341a8086a41186a200a41186a290300370300200341a8086a41106a200a41106a290300370300200341a8086a41086a200a41086a2903003703002003200a2903003703a8084107210e41002104200f211220172118200521192010211a0c070b200341e00f6a10ac010b4108210e410121040c050b200341e00f6a10af010c040b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4102210e41002104200f211220102113201621140c020b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4105210e41002104200f211220102113201621140c010b20032802e80f211120032903e00f21152008200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4104210e41002104200f211220102113201621140b0b200341dc046a200341cc086a41cc0310c30a1a200341b8046a41186a200341a8086a41186a290300370300200341b8046a41106a200341a8086a41106a290300370300200341b8046a41086a200341a8086a41086a290300370300200320032903a8083703b80420040d030b200d41016a210d200341ec006a200341dc046a41cc0310c30a1a200341c8006a41186a220f200341b8046a41186a290300370300200341c8006a41106a2210200341b8046a41106a290300370300200341c8006a41086a2216200341b8046a41086a290300370300200320032903b8043703480240200c200328023c470d00200341386a200c10b201200328023821062003280240210c0b2006200c4198046c6a22042011360018200420153700102004201436000c20042013360008200420123600042004201a3a00012004200e3a00002004411c6a200341ec006a41cc0310c30a1a2016290300210520102903002117200f290300211b2003290348211c200420183700900420042019370088042004201c3700e80320044180046a201b370000200441f8036a2017370000200441f0036a20053700002003200328024041016a220c360240200d2002470d000b0b20002003290338370200200041086a200341386a41086a2802003602000c010b200041003602002003280238210d0240200c450d00200c4198046c2101200d21040340200410bf0120044198046a2104200141e87b6a22010d000b0b200328023c2204450d0020044198046c450d00200d10390b200341d0176a24000f0b1030000b1034000bf0020002400240024002400240024002400240024020002802000e080700010203040506080b200041086a10ee080f0b200041086a10ee08200041c0006a10ee080f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee080f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee08200041b0016a10ee080f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee08200041b0016a10ee08200041e8016a10ee080f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee08200041b0016a10ee08200041e8016a10ee08200041a0026a10ee080f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee08200041b0016a10ee08200041e8016a10ee08200041a0026a10ee08200041d8026a10ee080b0f0b200041086a10ee08200041c0006a10ee08200041f8006a10ee08200041b0016a10ee08200041e8016a10ee08200041a0026a10ee08200041d8026a10ee0820004190036a10ee080b9c0403057f017e027f0240024020012802042202450d0020012002417f6a220336020420012001280200220441016a36020002400240024020042d0000220541037122064103460d000240024020060e03030001030b41012106024020030d000c060b20012002417e6a3602042001200441026a36020020042d0001410874200572220141ffff0371418002490d05200141fcff0371410276ad21070c030b410121060240200341034f0d000c050b20012002417c6a3602042001200441046a36020020042f0001200441036a2d000041107472410874200572220141808004490d042001410276ad21070c020b024002400240200541027622080e050002020201020b20034104490d0420012002417b6a3602042001200441056a360200200435000122074280808080045421060c050b20034108490d032001200241776a3602042001200441096a36020020042900012207428080808080808080015421060c040b200541134b0d02200841046a21092002417e6a2102200441026a2104410021054200210741012106034002402002417f470d000c050b2004417f6a210320012002360204200120043602002002417f6a2102200441016a210420033100002005410374413871ad862007842107200541016a220541ff01712009490d000b2007427f412820084103746b413871ad885821060c030b2005410276ad21070b410021060c010b410121060b2000200737030820002006ad3703000bf90c02057f027e230041b00b6b2202240002400240200128020422030d002000410c3602000c010b200128020022042d0000210520012003417f6a3602042001200441016a360200024002400240024002400240024002400240024002400240024002400240024002400240024020050e0c000102030405060708090a0c0b0b200041003602000c120b200041013602000c110b200041023602000c100b200041033602000c0f0b2002200110ad01024020022802000d002001280204220420022802042203490d002003417f4c0d0a0240024020030d00410121050c010b200310382205450d0d20054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a3602002000200536020420004104360200200041086a2003ad22074220862007843702000c0f0b2000410c3602000c0e0b200241086a200110ad01024020022802080d0020012802042204200228020c2203490d002003417f4c0d090240024020030d00410121050c010b200310382205450d0c20054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a3602002000200536020420004105360200200041086a2003ad22074220862007843702000c0e0b2000410c3602000c0d0b200241e8076a200110ab01024020022903e8074209510d00200241a0046a200241e8076a41c80310c30a1a200241d0006a41046a200241a0046a41c80310c30a1a20004106360200200041046a200241d0006a41cc0310c30a1a0c0d0b2000410c3602000c0c0b200241e8076a200110ab01024020022903e8074209510d00200241a0046a200241e8076a41c80310c30a1a200241d0006a41046a200241a0046a41c80310c30a1a20004107360200200041046a200241d0006a41cc0310c30a1a0c0c0b2000410c3602000c0b0b200241286a200110ad0120022802280d0620012802042204200228022c2203490d062003417f4c0d050240024020030d00410121050c010b200310382205450d0820054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200241106a2001108d0302402002290310a70d00200241106a41106a2903002107200229031821082000200536020420004108360200200041106a20083703002000410c6a2003360200200041086a2003360200200041186a20073703000c0b0b2000410c3602002003450d0a200510390c0a0b200241306a200110ad0120022802300d072001280204220420022802342203490d072003417f4c0d040240024020030d00410121050c010b200310382205450d0720054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200241d0006a200110ed05024020022d00504107460d00200041106a2002290350370300200041306a200241d0006a41206a290300370300200041286a200241d0006a41186a290300370300200041206a200241d0006a41106a290300370300200041186a200241d0006a41086a2903003703002000410c6a2003360200200041086a200336020020002005360204200041093602000c0a0b2000410c3602002003450d09200510390c090b200241e8076a200110ab0120022903e8074209510d02200241a0046a200241e8076a41c80310c30a1a200241386a2001108d0302402002290338a70d00200241c8006a290300210720022903402108200241d0006a41046a200241a0046a41c80310c30a1a2000410a360200200041046a200241d0006a41cc0310c30a1a200041d8036a2007370300200041d0036a20083703000c090b2000410c360200200241a0046a10af010c080b2000410c3602000c070b200241e8076a200110ab0120022903e8074209510d05200241a0046a200241e8076a41c80310c30a1a200241e8076a200110ed05024020022d00e8074107460d00200041d0036a20022903e807370300200041f0036a20024188086a290300370300200041e8036a20024180086a290300370300200041e0036a200241f8076a290300370300200041d8036a200241f0076a290300370300200241d0006a41046a200241a0046a41c80310c30a1a2000410b360200200041046a200241d0006a41cc0310c30a1a0c070b2000410c360200200241a0046a10af010c060b2000410c3602000c050b1034000b2000410c3602000c030b1030000b2000410c3602000c010b2000410c3602000b200241b00b6a24000bd90102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad4298047e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a4108360200200220014198046c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a20014198046e360200200241206a24000f0b1034000bfa0801047f024020002802082201450d002000280200220220014198046c6a21030340200222014198046a21020240024002400240024002400240024020012d00000e0707000102030405060b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410390b200141106a10af010c060b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410390b200141206a10af010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0520004198046c450d05200128021010390c050b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410390b0240200141186a2802002204450d00200141106a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b200141146a2802002200450d04200041f8036c450d04200128021010390c040b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410390b200141206a10af010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0320004198046c450d03200128021010390c030b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410390b200141206a10af010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0220004198046c450d02200128021010390c020b200141186a10af0102402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010ac01200041f8036a2100200441887c6a22040d000b0b200141086a2802002200450d01200041f8036c450d01200128020410390c010b200141106a10ac0102402001410c6a2802002204450d00200141046a2802002100200441e0076c21040340200010a601200041e0076a2100200441a0786a22040d000b0b200141086a2802002200450d00200041e0076c450d00200128020410390b20022003470d000b0b0bc90603037f017e117f230041e0006b220324000240024020022001280204220441286e2205200520024b1bad42287e2206422088a70d002006a72205417f4c0d000240024020050d00410821070c010b200510382207450d020b4100210820034100360210200320073602082003200541286e36020c0240024002402002450d00200341386a4104722109200341d1006a210a200341ca006a210b200341c3006a210c4100210d0340200d41016a210d41002105417f210e034020042005460d0320012004200e6a36020420012001280200220f41016a360200200920056a200f2d00003a00002003200541016a2210360238200e417f6a210e2010210520104120470d000b200341306a41026a2205200c41026a2d00003a00002003412c6a41026a220e200b41026a2d00003a0000200320092f01003b01342003200c2f00003b01302003200b2f00003b012c2003200941026a2d00003a00362003280258211120032802542112200328004d211320032801462114200328003f2115200341286a41026a2216200a41026a2d00003a00002003200a2f00003b0128200420106b22104108490d022001200f41096a3602002001201041786a22043602042003411c6a41026a221020052d00003a0000200341186a41026a2217200e2d00003a0000200341146a41026a220e20162d00003a0000200320032f01343b0120200320032d00363a0022200320032f01303b011c200320032f012c3b0118200320032f01283b0114200f290001210602402008200328020c470d00200341086a2008410110b50120032802082107200328021021080b2007200841286c6a220520032f01203b0100200541026a20032d00223a0000200541096a20102d00003a0000200520032f011c3b0007200541106a20172d00003a0000200520032f01183b000e200520153600032005201436000a20052013360011200541176a200e2d00003a0000200520032f01143b0015200520063703202005201136001c200520123600182003200841016a2208360210200d2002470d000b0b20002003290308370200200041086a200341086a41086a2802003602000c010b20004100360200200328020c2205450d00200541286c450d00200328020810390b200341e0006a24000f0b1034000b1030000bd60102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42287e2205422088a74541037421022005a721040240024020010d00200341003602100c010b200341106a41086a41083602002003200141286c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141286e360200200341206a24000f0b1034000bad0201057f230041106b22032400024002402002200128020422044102762205200520024b1b22064102742205417f4c0d000240024020060d00410421070c010b200510382207450d020b410021052003410036020820032006360204200320073602000240024002402002450d00034020044104490d0220012004417c6a220436020420012001280200220641046a36020020062800002106024020052003280204470d002003200510b70120032802002107200328020821050b200720054102746a20063602002003200328020841016a22053602082002417f6a22020d000b0b20002003290300370200200041086a200341086a2802003602000c010b20004100360200200328020441ffffffff0371450d00200328020010390b200341106a24000f0b1034000b1030000bd40101037f230041206b220224000240200141016a22032001490d00200041046a280200220441017422012003200120034b1b22014104200141044b1b220141ffffffff03712001464102742103200141027421010240024020040d00200241003602100c010b200241186a410436020020022004410274360214200220002802003602100b200220012003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410276360200200241206a24000f0b1034000bc71508027f017e0f7f017e017f037e017f027e230041d0176b22032400024002400240024002400240200220012802002802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d0002400240024020040d00410821060c010b200410382206450d010b2001200128020441016a22073602042003410036024020032006360238200320044198046e36023c200720012802084b0d042002450d03200341d8136a410c6a2108200341d8136a41046a2109200341e00f6a410472210a200341b8136a210b200341e00f6a410c6a210c410021074100210d0240034020012802002204280204220e450d012004280200220f2d000021102004200e417f6a3602042004200f41016a3602004100210e0240024002400240024002400240024002400240024002400240024002400240024020100e080300010205060708120b200341d8136a200110b90120032802d813220f450d0820032802e013210420032802dc132110200341d8136a200110ba01024020032903d81322054209510d0020032802e0132111200341cc086a200841bc0310c30a1a4101210e200f21122010211320042114200521150c030b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0e201041f8036c450d0e200f10390c0e0b200341e00f6a200110b90120032802e00f220f450d0720032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341086a200110bb01024002402003280208450d00200341003602e00f0c010b200341e00f6a2001200328020c10b80120032802e00f0d0b0b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d07201041f8036c450d07200f10390c070b200341d8136a200110b90120032802d813220f450d0620032802e013210420032802dc132110200341d8136a200110b90120032802d813450d0120032802e013211120032903d81321154103210e200f211220102113200421140b200341dc046a200341cc086a41cc0310c30a1a0c0c0b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0a201041f8036c450d0a200f10390c0a0b200341e00f6a200110b90120032802e00f220f450d0320032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341106a200110bb01024002402003280210450d00200341003602e00f0c010b200341e00f6a2001200328021410b80120032802e00f0d090b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d03201041f8036c450d03200f10390c030b200341e00f6a200110b90120032802e00f220f450d0220032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341186a200110bb01024002402003280218450d00200341003602e00f0c010b200341e00f6a2001200328021c10b80120032802e00f0d070b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d02201041f8036c450d02200f10390c020b200341206a200110bc014108210e410121042003290320a70d0720032903282105200341d8136a200110ba0120032903d8134209510d07200341e00f6a200341d8136a41c80310c30a1a200341d8136a200110b90120032802d813220f450d0220032802e013211420032802dc13211320032802e00f2111200341cc086a200a41c40310c30a1a4106210e41002104200f2112200521150c060b200341d8136a200110bd0120032802d813410c460d00200341e00f6a200341d8136a41f80310c30a1a024020012802002204280204220e4108490d002004280200220f29000021052004200e41786a3602042004200f41086a36020020012802002204280204220e4108490d002004280200220f29000021172004200e41786a3602042004200f41086a36020020012802002204280204220e450d002004280200220f2d000021102004200e417f6a3602042004200f41016a3602004100210f0240024020100e020100020b4101210f0b200341306a200110bb0120032802300d00200341d8136a2001200328023410be0120032802d8132210450d0020032802e013211420032802dc13211320032903e00f211520032802e80f2111200341cc086a200c41cc0310c30a1a200341a8086a41186a200b41186a290300370300200341a8086a41106a200b41106a290300370300200341a8086a41086a200b41086a2903003703002003200b2903003703a8084107210e41002104201021122017211820052119200f211a0c070b200341e00f6a10ac010b4108210e410121040c050b200341e00f6a10af010c040b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4102210e41002104200f211220102113201621140c020b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4105210e41002104200f211220102113201621140c010b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4104210e41002104200f211220102113201621140b0b200341dc046a200341cc086a41cc0310c30a1a200341b8046a41186a200341a8086a41186a290300370300200341b8046a41106a200341a8086a41106a290300370300200341b8046a41086a200341a8086a41086a290300370300200320032903a8083703b80420040d020b200d41016a210d200341ec006a200341dc046a41cc0310c30a1a200341c8006a41186a220f200341b8046a41186a290300370300200341c8006a41106a2210200341b8046a41106a290300370300200341c8006a41086a2216200341b8046a41086a290300370300200320032903b80437034802402007200328023c470d00200341386a200710b20120032802382106200328024021070b200620074198046c6a22042011360018200420153700102004201436000c20042013360008200420123600042004201a3a00012004200e3a00002004411c6a200341ec006a41cc0310c30a1a2016290300210520102903002117200f290300211b2003290348211c200420183700900420042019370088042004201c3700e80320044180046a201b370000200441f8036a2017370000200441f0036a20053700002003200328024041016a2207360240200d2002460d040c000b0b20004100360200200328023821062007450d0520074198046c2101200621040340200410bf0120044198046a2104200141e87b6a22010d000c060b0b1030000b1034000b200128020421070b2000200329033837020020012007417f6a360204200041086a200341386a41086a2802003602000c020b200041003602000b200328023c2204450d0020044198046c450d00200610390b200341d0176a24000b8b0403037f017e037f230041800c6b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240200228020c2203200128020028020441f8036e2204200420034b1bad42f8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b200410382206450d020b2001200128020441016a220736020420024100360218200220063602102002200441f8036e360214200720012802084b0d02024002402003450d0020024188086a410472210841002104034020024188086a200110bd01200228028808210720024194046a200841f40310c30a1a2007410c460d02200241206a20024194046a41f40310c30a1a024020042002280214470d00200241106a2004410110b40320022802102106200228021821040b2006200441f8036c6a22042007360200200441046a200241206a41f40310c30a1a2002200228021841016a22043602182003417f6a22030d000b200128020421070b2000200229031037020020012007417f6a360204200041086a200241106a41086a2802003602000c050b20004100360200200228021021062004450d03200441f8036c2107200621040340200410ac01200441f8036a2104200741887c6a22070d000c040b0b1034000b1030000b200041003602000b20022802142204450d00200441f8036c450d00200610390b200241800c6a24000b836c1c087f017e0a7f017e057f017e017f017e047f017e0a7f017e057f017e017f017e047f017e0a7f017e057f017e017f017e047f017e0a7f017e230041e0006b22022400024002402001280200220328020422040d00200042093703000c010b200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e09000102030405060709080b200042003703000c3a0b200241286a2001108e03024020022d0028410a460d0020002002290328370308200041386a200241286a41306a290300370300200041306a200241286a41286a290300370300200041286a200241286a41206a290300370300200041206a200241286a41186a290300370300200041186a200241286a41106a290300370300200041106a200241306a290300370300200042013703000c3a0b200042093703000c390b200241286a2001108e0320022d00282203410a460d11200241266a220720022d002b3a0000200220022f00293b0124200241306a22082802002105200241286a410c6a2802002106200241286a41106a2209290300210a200241286a41186a220b280200210c200241c4006a280200210d200241286a41206a220e280200210f200241286a41246a2802002110200241286a41286a22112802002112200241286a412c6a2802002113200241286a41306a22142903002115200228022c2104200241286a2001108e03024020022d0028410a460d00200041c0006a2002290328370300200041f0006a2014290300370300200041e8006a2011290300370300200041e0006a200e290300370300200041d8006a200b290300370300200041d0006a2009290300370300200041c8006a2008290300370300200020033a0008200020022f01243b00092000410b6a20072d00003a0000200041386a2015370300200041346a2013360200200041306a20123602002000412c6a2010360200200041286a200f360200200041246a200d360200200041206a200c360200200041186a200a370300200041146a2006360200200041106a20053602002000410c6a2004360200200042023703000c390b20004209370300024002400240024002402003410f710e093d3d0001023d3d033d040b20104101470d3c2013450d3c201210390c3c0b20044101470d3b2006450d3b200510390c3b0b200c4101470d3a200f450d3a200d10390c3a0b2005450d39200410390c390b20044101470d382006450d38200510390c380b200241286a2001108e0320022d00282203410a460d11200241206a41026a20022d002b3a0000200220022f00293b0120200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d0e200241246a41026a20022d002b3a0000200220022f00293b01242004280200211a200528020021052006290300211b200c28020021062010280200211c200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2104200241286a2001108e03024020022d0028410a460d00200041f8006a2002290328370300200041a8016a200241286a41306a290300370300200041a0016a200241286a41286a29030037030020004198016a200241286a41206a29030037030020004190016a200241286a41186a29030037030020004188016a200241286a41106a29030037030020004180016a200241306a290300370300200020033a0008200020022f01203b00092000410b6a200241206a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201c360200200041d8006a2006360200200041d0006a201b370300200041cc006a2005360200200041c8006a201a360200200041c4006a2004360200200020022f01243b0041200041c3006a200241246a41026a2d00003a0000200042033703000c380b20004209370300024002400240024002402008410f710e09141400010214140314040b200c4101470d13200f450d13201310390c130b20044101470d122005450d12201a10390c120b20064101470d112010450d11201c10390c110b201a450d10200410390c100b20044101470d0f2005450d0f201a10390c0f0b200241286a2001108e0320022d00282203410a460d112002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d12200241206a41026a20022d002b3a0000200220022f00293b01202004280200211a2005280200211c2006290300211b200c28020021062010280200211e200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2105200241286a2001108e0320022d00282204410a460d0b200241246a41026a221f20022d002b3a0000200220022f00293b0124200241306a22202802002112200241286a410c6a2802002107200241286a41106a22212903002122200241286a41186a22232802002124200241c4006a2802002125200241286a41206a22262802002127200241286a41246a2802002128200241286a41286a2229280200212a200241286a412c6a280200212b200241286a41306a222c290300212d200228022c210d200241286a2001108e03024020022d0028410a460d00200041b0016a2002290328370300200041e0016a202c290300370300200041d8016a2029290300370300200041d0016a2026290300370300200041c8016a2023290300370300200041c0016a2021290300370300200041b8016a2020290300370300200020033a0008200020022f011c3b00092000410b6a2002411c6a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2006360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01203b0041200041c3006a200241206a41026a2d00003a0000200020022f01243b0079200041fb006a201f2d00003a0000200041a8016a202d370300200041a4016a202b360200200041a0016a202a3602002000419c016a202836020020004198016a202736020020004194016a202536020020004190016a202436020020004188016a202237030020004184016a200736020020004180016a2012360200200041fc006a200d360200200042043703000c370b20004209370300024002400240024002402004410f710e09111100010211110311040b20284101470d10202b450d10202a10390c100b200d4101470d0f2007450d0f201210390c0f0b20244101470d0e2027450d0e202510390c0e0b2012450d0d200d10390c0d0b200d4101470d0c2007450d0c201210390c0c0b200241286a2001108e0320022d00282203410a460d12200241186a41026a20022d002b3a0000200220022f00293b0118200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d132002411c6a41026a20022d002b3a0000200220022f00293b011c2004280200211a2005280200211c2006290300211b200c28020021062010280200211e200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2105200241286a2001108e0320022d00282204410a460d14200241206a41026a20022d002b3a0000200220022f00293b0120200241306a220d2802002123200241346a22122802002126200241386a22072903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108e0320022d00282220410a460d08200241246a41026a20022d002b3a0000200220022f00293b0124200d28020021322012280200211220072903002133202428020021072028280200213420272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c210d200241286a2001108e03024020022d0028410a460d00200041e8016a200229032837030020004198026a200241286a41306a29030037030020004190026a200241286a41286a29030037030020004188026a200241286a41206a29030037030020004180026a200241286a41186a290300370300200041f8016a200241286a41106a290300370300200041f0016a200241306a290300370300200020033a0008200020022f01183b00092000410b6a200241186a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2006360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f011c3b0041200041c3006a2002411c6a41026a2d00003a0000200020022f01203b0079200041fb006a200241206a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241246a41026a2d00003a0000200020022f01243b00b101200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2034360200200041c8016a2007360200200041c0016a2033370300200041bc016a2012360200200041b8016a2032360200200041b4016a200d360200200042053703000c360b20004209370300024002400240024002402020410f710e090e0e0001020e0e030e040b20244101470d0d2027450d0d202b10390c0d0b200d4101470d0c2012450d0c203210390c0c0b20074101470d0b2028450d0b203410390c0b0b2032450d0a200d10390c0a0b200d4101470d092012450d09203210390c090b200241286a2001108e0320022d00282203410a460d14200241146a41026a20022d002b3a0000200220022f00293b0114200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d15200241186a41026a20022d002b3a0000200220022f00293b01182004280200211a2005280200211c2006290300211b200c28020021062010280200211e200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2105200241286a2001108e0320022d00282204410a460d162002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a220d2802002123200241346a22122802002126200241386a22072903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108e0320022d00282220410a460d17200241206a41026a20022d002b3a0000200220022f00293b0120200d28020021322012280200213420072903002133202428020021072028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108e0320022d0028220d410a460d05200241246a41026a223720022d002b3a0000200220022f00293b0124200241306a2238280200212a200241286a410c6a280200211f200241286a41106a2239290300213a200241286a41186a223b280200213c200241c4006a280200213d200241286a41206a223e280200213f200241286a41246a2802002140200241286a41286a22412802002142200241286a412c6a2802002143200241286a41306a22442903002145200228022c2125200241286a2001108e03024020022d0028410a460d00200041a0026a2002290328370300200041d0026a2044290300370300200041c8026a2041290300370300200041c0026a203e290300370300200041b8026a203b290300370300200041b0026a2039290300370300200041a8026a2038290300370300200020033a0008200020022f01143b00092000410b6a200241146a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2006360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01183b0041200041c3006a200241186a41026a2d00003a0000200020022f011c3b0079200041fb006a2002411c6a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241206a41026a2d00003a0000200020022f01203b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2007360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a20372d00003a0000200020022f01243b00e90120004198026a204537030020004194026a204336020020004190026a20423602002000418c026a204036020020004188026a203f36020020004184026a203d36020020004180026a203c360200200041f8016a203a370300200041f4016a201f360200200041f0016a202a360200200041ec016a2025360200200042063703000c350b2000420937030002400240024002400240200d410f710e090b0b0001020b0b030b040b20404101470d0a2043450d0a204210390c0a0b20254101470d09201f450d09202a10390c090b203c4101470d08203f450d08203d10390c080b202a450d07202510390c070b20254101470d06201f450d06202a10390c060b200241286a2001108e0320022d00282203410a460d17200241106a41026a20022d002b3a0000200220022f00293b0110200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d18200241146a41026a20022d002b3a0000200220022f00293b01142004280200211a2005280200211c2006290300211b200c28020021062010280200211e200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2105200241286a2001108e0320022d00282204410a460d19200241186a41026a20022d002b3a0000200220022f00293b0118200241306a220d2802002123200241346a22122802002126200241386a22072903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108e0320022d00282220410a460d1a2002411c6a41026a20022d002b3a0000200220022f00293b011c200d28020021322012280200213420072903002133202428020021072028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108e0320022d0028220d410a460d1b200241206a41026a20022d002b3a0000200220022f00293b0120200241306a2225280200213b200241346a222a280200213e200241386a221f290300213a200241c0006a223c2802002141200241c4006a22402802002146200241c8006a223f2802002147200241cc006a22432802002144200241d0006a223d2802002148200241d4006a22422802002149200241d8006a22372903002145200228022c2139200241286a2001108e0320022d00282238410a460d02200241246a41026a20022d002b3a0000200220022f00293b01242025280200214a202a280200212a201f290300214b203c280200211f2040280200214c203f28020021402043280200213c203d28020021432042280200213f2037290300214d200228022c2125200241286a2001108e03024020022d0028410a460d00200041d8026a200229032837030020004188036a200241286a41306a29030037030020004180036a200241286a41286a290300370300200041f8026a200241286a41206a290300370300200041f0026a200241286a41186a290300370300200041e8026a200241286a41106a290300370300200041e0026a200241306a290300370300200020033a0008200020022f01103b00092000410b6a200241106a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2006360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01143b0041200041c3006a200241146a41026a2d00003a0000200020022f01183b0079200041fb006a200241186a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a2002411c6a41026a2d00003a0000200020022f011c3b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2007360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a200241206a41026a2d00003a0000200020022f01203b00e901200041a0026a20383a000020004198026a204537030020004194026a204936020020004190026a20483602002000418c026a204436020020004188026a204736020020004184026a204636020020004180026a2041360200200041f8016a203a370300200041f4016a203e360200200041f0016a203b360200200041ec016a2039360200200041a3026a200241246a41026a2d00003a0000200020022f01243b00a102200041d0026a204d370300200041cc026a203f360200200041c8026a2043360200200041c4026a203c360200200041c0026a2040360200200041bc026a204c360200200041b8026a201f360200200041b0026a204b370300200041ac026a202a360200200041a8026a204a360200200041a4026a2025360200200042073703000c340b20004209370300024002400240024002402038410f710e09080800010208080308040b203c4101470d07203f450d07204310390c070b20254101470d06202a450d06204a10390c060b201f4101470d052040450d05204c10390c050b204a450d04202510390c040b20254101470d03202a450d03204a10390c030b200042093703000c320b200241286a2001108e0320022d00282203410a460d1a2002410c6a41026a20022d002b3a0000200220022f00293b010c200241306a2204280200210b200241346a2205280200210e200241386a2206290300210a200241c0006a220c2802002111200241c4006a22102802002116200241c8006a220f2802002117200241cc006a22132802002114200241d0006a220d2802002118200241d4006a22122802002119200241d8006a22072903002115200228022c2109200241286a2001108e0320022d00282208410a460d1b200241106a41026a20022d002b3a0000200220022f00293b01102004280200211a2005280200211c2006290300211b200c28020021062010280200211e200f28020021102013280200210c200d28020021132012280200210f2007290300211d200228022c2105200241286a2001108e0320022d00282204410a460d1c200241146a41026a20022d002b3a0000200220022f00293b0114200241306a220d2802002123200241346a22122802002126200241386a22072903002122200241c0006a22242802002129200241c4006a2228280200212e200241c8006a2227280200212f200241cc006a222b280200212c200241d0006a22252802002130200241d4006a222a2802002131200241d8006a221f290300212d200228022c2121200241286a2001108e0320022d00282220410a460d1d200241186a41026a20022d002b3a0000200220022f00293b0118200d28020021322012280200213420072903002133202428020021072028280200213620272802002128202b28020021242025280200212b202a2802002127201f2903002135200228022c2112200241286a2001108e0320022d0028220d410a460d1e2002411c6a41026a20022d002b3a0000200220022f00293b011c200241306a2225280200213b200241346a222a280200213e200241386a221f290300213a200241c0006a223c2802002141200241c4006a22402802002146200241c8006a223f2802002147200241cc006a22432802002144200241d0006a223d2802002148200241d4006a22422802002149200241d8006a22372903002145200228022c2139200241286a2001108e0320022d00282238410a460d1f200241206a41026a20022d002b3a0000200220022f00293b01202025280200214a202a280200214c201f290300214b203c280200211f2040280200214e203f28020021402043280200213c203d28020021432042280200213f2037290300214d200228022c212a200241286a2001108e0320022d00282225410a460d20200241246a41026a224f20022d002b3a0000200220022f00293b0124200241306a22502802002142200241286a410c6a2802002137200241286a41106a22512903002152200241286a41186a22532802002154200241c4006a2802002155200241286a41206a22562802002157200241286a41246a2802002158200241286a41286a2259280200215a200241286a412c6a280200215b200241286a41306a225c290300215d200228022c213d200241286a2001108e03024020022d0028410a460d0020004190036a2002290328370300200041c0036a205c290300370300200041b8036a2059290300370300200041b0036a2056290300370300200041a8036a2053290300370300200041a0036a205129030037030020004198036a2050290300370300200020033a0008200020022f010c3b00092000410b6a2002410c6a41026a2d00003a0000200041c0006a20083a0000200041386a2015370300200041346a2019360200200041306a20183602002000412c6a2014360200200041286a2017360200200041246a2016360200200041206a2011360200200041186a200a370300200041146a200e360200200041106a200b3602002000410c6a2009360200200041f8006a20043a0000200041f0006a201d370300200041ec006a200f360200200041e8006a2013360200200041e4006a200c360200200041e0006a2010360200200041dc006a201e360200200041d8006a2006360200200041d0006a201b370300200041cc006a201c360200200041c8006a201a360200200041c4006a2005360200200020022f01103b0041200041c3006a200241106a41026a2d00003a0000200020022f01143b0079200041fb006a200241146a41026a2d00003a0000200041b0016a20203a0000200041a8016a202d370300200041a4016a2031360200200041a0016a20303602002000419c016a202c36020020004198016a202f36020020004194016a202e36020020004190016a202936020020004188016a202237030020004184016a202636020020004180016a2023360200200041fc006a2021360200200041b3016a200241186a41026a2d00003a0000200020022f01183b00b101200041e8016a200d3a0000200041e0016a2035370300200041dc016a2027360200200041d8016a202b360200200041d4016a2024360200200041d0016a2028360200200041cc016a2036360200200041c8016a2007360200200041c0016a2033370300200041bc016a2034360200200041b8016a2032360200200041b4016a2012360200200041eb016a2002411c6a41026a2d00003a0000200020022f011c3b00e901200041a0026a20383a000020004198026a204537030020004194026a204936020020004190026a20483602002000418c026a204436020020004188026a204736020020004184026a204636020020004180026a2041360200200041f8016a203a370300200041f4016a203e360200200041f0016a203b360200200041ec016a2039360200200041a3026a200241206a41026a2d00003a0000200020022f01203b00a102200041d8026a20253a0000200041d0026a204d370300200041cc026a203f360200200041c8026a2043360200200041c4026a203c360200200041c0026a2040360200200041bc026a204e360200200041b8026a201f360200200041b0026a204b370300200041ac026a204c360200200041a8026a204a360200200041a4026a202a360200200041db026a204f2d00003a0000200020022f01243b00d90220004188036a205d37030020004184036a205b36020020004180036a205a360200200041fc026a2058360200200041f8026a2057360200200041f4026a2055360200200041f0026a2054360200200041e8026a2052370300200041e4026a2037360200200041e0026a2042360200200041dc026a203d360200200042083703000c320b200042093703000240024002400240024002402025410f710e09313100010231310331040b20584101470d30205b450d30205a10390c300b203d4101470d2f20370d030c2f0b20544101470d2e2057450d2e205510390c2e0b2042450d2d203d10390c2d0b203d4101470d2c2037450d2c0b204210390c2b0b200042093703000b024002400240024002400240200d410f710e092b2b0001022b2b032b040b20444101470d2a2049450d2a204810390c2a0b20394101470d29203e0d030c290b20414101470d282047450d28204610390c280b203b450d27203910390c270b20394101470d26203e450d260b203b10390c250b200042093703000b0240024002400240024002402020410f710e09262600010226260326040b20244101470d252027450d25202b10390c250b20124101470d2420340d030c240b20074101470d232028450d23203610390c230b2032450d22201210390c220b20124101470d212034450d210b203210390c200b200042093703000b0240024002400240024002402004410f710e09222200010222220322040b202c4101470d212031450d21203010390c210b20214101470d2020260d030c200b20294101470d1f202f450d1f202e10390c1f0b2023450d1e202110390c1e0b20214101470d1d2026450d1d0b202310390c1c0b200042093703000b0240024002400240024002402008410f710e091f1f0001021f1f031f040b200c4101470d1e200f450d1e201310390c1e0b20054101470d1d201c0d030c1d0b20064101470d1c2010450d1c201e10390c1c0b201a450d1b200510390c1b0b20054101470d1a201c450d1a0b201a10390c190b200042093703000b0240024002400240024002402003410f710e092d2d0001022d2d032d040b20144101470d2c2019450d2c201810390c2c0b20094101470d2b200e0d030c2b0b20114101470d2a2017450d2a201610390c2a0b200b450d29200910390c290b20094101470d28200e450d280b200b10390c270b200042093703000c260b200042093703000c250b200042093703000c240b200042093703000c130b200042093703000c220b200042093703000c130b200042093703000c110b200042093703000c1f0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c1b0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c0d0b200042093703000c160b200042093703000c140b200042093703000c120b200042093703000c100b200042093703000c0e0b200042093703000c0c0b200042093703000c0a0b0240024002400240024002402003410f710e09151500010215150315040b20144101470d142019450d14201810390c140b20094101470d13200e0d030c130b20114101470d122017450d12201610390c120b200b450d11200910390c110b20094101470d10200e450d100b200b10390c0f0b0240024002400240024002402008410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20064101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09131300010213130313040b20144101470d122019450d12201810390c120b20094101470d11200e0d030c110b20114101470d102017450d10201610390c100b200b450d0f200910390c0f0b20094101470d0e200e450d0e0b200b10390c0d0b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402008410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20064101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09101000010210100310040b20144101470d0f2019450d0f201810390c0f0b20094101470d0e200e0d030c0e0b20114101470d0d2017450d0d201610390c0d0b200b450d0c200910390c0c0b20094101470d0b200e450d0b0b200b10390c0a0b0240024002400240024002402020410f710e09060600010206060306040b20244101470d052027450d05202b10390c050b20124101470d0420340d030c040b20074101470d032028450d03203610390c030b2032450d02201210390c020b20124101470d012034450d010b203210390b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402008410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20064101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e090c0c0001020c0c030c040b20144101470d0b2019450d0b201810390c0b0b20094101470d0a200e0d030c0a0b20114101470d092017450d09201610390c090b200b450d08200910390c080b20094101470d07200e450d070b200b10390c060b0240024002400240024002402038410f710e09060600010206060306040b203c4101470d05203f450d05204310390c050b202a4101470d04204c0d030c040b201f4101470d032040450d03204e10390c030b204a450d02202a10390c020b202a4101470d01204c450d010b204a10390b024002400240024002400240200d410f710e09060600010206060306040b20444101470d052049450d05204810390c050b20394101470d04203e0d030c040b20414101470d032047450d03204610390c030b203b450d02203910390c020b20394101470d01203e450d010b203b10390b0240024002400240024002402020410f710e09060600010206060306040b20244101470d052027450d05202b10390c050b20124101470d0420340d030c040b20074101470d032028450d03203610390c030b2032450d02201210390c020b20124101470d012034450d010b203210390b0240024002400240024002402004410f710e09060600010206060306040b202c4101470d052031450d05203010390c050b20214101470d0420260d030c040b20294101470d03202f450d03202e10390c030b2023450d02202110390c020b20214101470d012026450d010b202310390b0240024002400240024002402008410f710e09060600010206060306040b200c4101470d05200f450d05201310390c050b20054101470d04201c0d030c040b20064101470d032010450d03201e10390c030b201a450d02200510390c020b20054101470d01201c450d010b201a10390b0240024002400240024002402003410f710e09060600010206060306040b20144101470d052019450d05201810390c050b20094101470d04200e0d030c040b20114101470d032017450d03201610390c030b200b450d02200910390c020b20094101470d01200e450d010b200b10390b200241e0006a24000bcc0201067f02400240200128020022012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d0120012002417c6a3602042001200341046a36020020032f0001200341036a2d000041107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000bad0404057f017e017f017e02400240200128020022012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a360200024002400240200441037122064103460d000240024020060e03030001030b41012106024020050d000c060b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d05200141fcff0371410276ad21070c030b410121060240200541034f0d000c050b20012002417c6a3602042001200341046a36020020032f0001200341036a2d000041107472410874200472220141808004490d042001410276ad21070c020b024002400240200441027622080e050002020201020b20054104490d042003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c050b20054108490d03200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c040b200441134b0d02200841046a21052002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c050b2003417f6a310000210920012002360204200120033602002002417f6a2102200341016a210320092004410374413871ad862007842107200441016a220441ff01712005490d000b2007427f412820084103746b413871ad885821060c030b2004410276ad21070b410021060c010b410121060b2000200737030820002006ad3703000be70d02067f027e230041b00b6b22022400024002402001280200220328020422040d002000410c3602000c010b200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024020060e0c000102030405060708090a0c0b0b200041003602000c130b200041013602000c120b200041023602000c110b200041033602000c100b2002200110bb01024020022802000d0020012802002201280204220420022802042203490d002003417f4c0d0a0240024020030d00410121050c010b200310382205450d0e20054100200310c50a1a200128020421040b200420034f0d0b200510390b2000410c3602000c0f0b200241086a200110bb01024020022802080d00200128020022012802042204200228020c2203490d002003417f4c0d090240024020030d00410121050c010b200310382205450d0d20054100200310c50a1a200128020421040b200420034f0d0b200510390b2000410c3602000c0e0b200241e8076a200110ba01024020022903e8074209510d00200241a0046a200241e8076a41c80310c30a1a200241d0006a41046a200241a0046a41c80310c30a1a20004106360200200041046a200241d0006a41cc0310c30a1a0c0e0b2000410c3602000c0d0b200241e8076a200110ba01024020022903e8074209510d00200241a0046a200241e8076a41c80310c30a1a200241d0006a41046a200241a0046a41c80310c30a1a20004107360200200041046a200241d0006a41cc0310c30a1a0c0d0b2000410c3602000c0c0b200241286a200110bb010240024020022802280d00200128020022042802042205200228022c2203490d002003417f4c0d070240024020030d00410121060c010b200310382206450d0b20064100200310c50a1a200428020421050b200520034f0d01200610390b2000410c3602000c0c0b200620042802002207200310c30a21062004200520036b3602042004200720036a360200200241106a2001108f032002290310a7450d0a2000410c3602002003450d0b200610390c0b0b200241306a200110bb010240024020022802300d0020012802002205280204220420022802342203490d002003417f4c0d060240024020030d00410121060c010b200310382206450d0a20064100200310c50a1a200528020421040b200420034f0d01200610390b2000410c3602000c0b0b200620052802002207200310c30a21062005200420036b3602042005200720036a360200200241d0006a200110ee05024020022d00504107460d00200041106a2002290350370300200041306a200241d0006a41206a290300370300200041286a200241d0006a41186a290300370300200041206a200241d0006a41106a290300370300200041186a200241d0006a41086a2903003703002000410c6a2003360200200041086a200336020020002006360204200041093602000c0b0b2000410c3602002003450d0a200610390c0a0b200241e8076a200110ba0120022903e8074209510d02200241a0046a200241e8076a41c80310c30a1a200241386a2001108f0302402002290338a70d00200241c8006a290300210820022903402109200241d0006a41046a200241a0046a41c80310c30a1a2000410a360200200041046a200241d0006a41cc0310c30a1a200041d8036a2008370300200041d0036a20093703000c0a0b2000410c360200200241a0046a10af010c090b2000410c3602000c080b200241e8076a200110ba0120022903e8074209510d05200241a0046a200241e8076a41c80310c30a1a200241e8076a200110ee05024020022d00e8074107460d00200041d0036a20022903e807370300200041f0036a20024188086a290300370300200041e8036a20024180086a290300370300200041e0036a200241f8076a290300370300200041d8036a200241f0076a290300370300200241d0006a41046a200241a0046a41c80310c30a1a2000410b360200200041046a200241d0006a41cc0310c30a1a0c080b2000410c360200200241a0046a10af010c070b2000410c3602000c060b1034000b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200041086a2003ad220842208620088437020020002005360204200041043602000c040b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200041086a2003ad220842208620088437020020002005360204200041053602000c030b1030000b2000410c3602000c010b200241106a41106a2903002108200229031821092000200636020420004108360200200041106a20093703002000410c6a2003360200200041086a2003360200200041186a20083703000b200241b00b6a24000be60303027f017e037f230041d00b6b22032400024002400240024002402002200128020028020441e8036e2204200420024b1bad42e8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b200410382206450d020b2001200128020441016a220736020420034100360210200320063602082003200441e8036e36020c200720012802084b0d02024002402002450d00200341e8076a4101722108410021040340200341e8076a200110c00120032d00e807210720034181046a200841e70310c30a1a2007410b460d022003411a6a20034181046a41e70310c30a1a02402004200328020c470d00200341086a200410c10120032802082106200328021021040b2006200441e8036c6a220420073a0000200441016a2003411a6a41e70310c30a1a2003200328021041016a22043602102002417f6a22020d000b200128020421070b2000200329030837020020012007417f6a360204200041086a200341086a41086a2802003602000c050b20004100360200200328020821062004450d03200441e8036c2107200621040340200410c201200441e8036a2104200741987c6a22070d000c040b0b1034000b1030000b200041003602000b200328020c2204450d00200441e8036c450d00200610390b200341d00b6a24000bc50801027f0240024002400240024002400240024020002d00000e0707000102030405060b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041146a2802002202450d04200241f8036c450d04200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0320024198046c450d03200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0220024198046c450d02200028021010390f0b200041186a10af0102402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d01200241f8036c450d01200028020410390c010b200041106a10ac0102402000410c6a2802002201450d00200041046a2802002102200141e8036c21010340200210c201200241e8036a2102200141987c6a22010d000b0b200041086a2802002202450d00200241e8036c450d00200028020410390f0b0bc71503057f027e017f230041900c6b22022400024002402001280200220328020422040d002000410b3a00000c010b200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e0b000102030405060708090b0a0b200241a8086a200110b90120022802a8082204450d13200241b0086a280200210320022802ac0821052002200110bb01024002402002280200450d00200241003602a8080c010b200241a8086a2001200228020410b80120022802a8080d210b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d21200541f8036c450d21200410390c210b200241a8086a200110b90120022802a8082204450d11200241b0086a280200210320022802ac082105200241086a200110bb01024002402002280208450d00200241003602a8080c010b200241a8086a2001200228020c10b80120022802a8080d1f0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d20200541f8036c450d20200410390c200b200241a8086a200110b90120022802a8082204450d0f200241b0086a280200210320022802ac082105200241106a200110bb01024002402002280210450d00200241003602a8080c010b200241a8086a2001200228021410b80120022802a8080d1d0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d1f200541f8036c450d1f200410390c1f0b200241186a200110bc012002290318a70d110240200128020022032802042204450d0020022903202107200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241a8086a200110b90120022802a8082201450d0020022902ac082108200041106a2007370300200041086a2008370000200041046a2001360000200041033a00000c1f0b2000410b3a00000c1e0b200241a8086a200110b90120022802a8082204450d11200241a8086a41086a280200210320022802ac082105200241a8086a200110ba01024020022903a8084209510d00200041106a200241a8086a41c80310c30a1a2000410c6a2003360000200041086a2005360000200041046a2004360000200041043a00000c1e0b2000410b3a000002402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d1d200541f8036c450d1d200410390c1d0b200241c0046a200110b90120022802c0042204450d11200241c8046a280200210320022802c4042105200241c0046a200110ba0120022903c0044209510d0a200241f8006a200241c0046a41c80310c30a1a200241286a200110bb01024002402002280228450d00200241003602c0040c010b200241c0046a2001200228022c10b80120022802c0040d190b2000410b3a0000200241f8006a10af010c0b0b200128020022032802042204450d11200328020022052d0000210620032004417f6a3602042003200541016a36020041002104024002400240024020060e0403000102150b410121040c020b410221040c010b410321040b02402001280200220328020422054108490d002003280200220629000021072003200541786a3602042003200641086a360200200241306a200110bb010240024020022802300d0020012802002203280204220520022802342201490d002001417f4c0d150240024020010d00410121060c010b200110382206450d0920064100200110c50a1a200328020421050b200520014f0d01200610390b2000410b3a00000c1d0b200620032802002209200110c30a21062003200520016b3602042003200920016a360200200041186a2007370300200041106a41003a0000200041086a2001ad2207422086200784370100200041046a2006360100200020043a0001200041063a00000c1c0b2000410b3a00000c1b0b200241c8006a200110bb0120022802480d12200228024c2103200241c0006a200110bb0120022802400d1320022802442104200241386a200110bb01024020022802380d00200228023c2101200041073a00002000410c6a2001360200200041086a2004360200200041046a20033602000c1b0b2000410b3a00000c1a0b200241d0006a200110bb01024020022802500d0020022802542101200041083a0000200041046a20013602000c1a0b2000410b3a00000c190b200241e8006a200110bb0120022802680d12200228026c2103200241e0006a200110bb0120022802600d1320022802642104200241d8006a200110bb01024020022802580d00200228025c2101200041093a00002000410c6a2001360200200041086a2004360200200041046a20033602000c190b2000410b3a00000c180b2000410b3a00000c170b200241a8086a200110ba0120022903a8084209510d01200241f8006a200241a8086a41c80310c30a1a2001200128020441016a2203360204200320012802084b0d03200241a8086a200110c00120022d00a8082103200241c0046a200241a8086a41017241e70310c30a1a2003410b460d0341e803103822040d020b1030000b2000410b3a00000c140b200420033a0000200441016a200241c0046a41e70310c30a1a20012001280204417f6a360204200041086a200241f8006a41c80310c30a1a200041046a20043602002000410a3a00000c130b2000410b3a0000200241f8006a10af010c120b2000410b3a00000b02402003450d00200341f8036c2103200421010340200110ac01200141f8036a2101200341887c6a22030d000b0b2005450d10200541f8036c450d10200410390c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b1034000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b200041106a20022903c004370200200041186a200241c0046a41086a280200360200200241a8086a41046a200241f8006a41c80310c30a1a200041053a0000200020022f00753b0001200041036a200241f7006a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600002000411c6a200241a8086a41cc0310c30a1a0c030b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041023a0000200020022f00c0043b0001200041036a200241c0046a41026a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000c020b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041013a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000c010b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041003a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2003360000200041086a2005360000200041046a20043600000b200241900c6a24000bd90102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42e8037e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141e8036c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141e8036e360200200241206a24000f0b1034000b820801027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0620024198046c450d06200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0420024198046c450d04200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041086a280200450d00200041046a28020010390b0f0b200041086a10af01200041046a220228020010c201200228020010390bae0303027f017e037f230041d0166b22032400024002402002200128020441c0076e2204200420024b1bad42c0077e2205422088a70d002005a72206417f4c0d000240024020060d00410821070c010b200610382207450d020b4100210420034100360210200320073602082003200641c0076e36020c0240024002402002450d00200341900f6a41047221080340200341900f6a200110c40120032802900f2106200341d4076a200841bc0710c30a1a20064125460d02200341186a200341d4076a41bc0710c30a1a02402004200328020c470d00200341086a200410c50120032802082107200328021021040b2007200441c0076c6a22042006360200200441046a200341186a41bc0710c30a1a2003200328021041016a22043602102002417f6a22020d000b0b20002003290308370200200041086a200341086a41086a2802003602000c010b200041003602002003280208210202402004450d00200441c0076c2106200221040340200410c601200441c0076a2104200641c0786a22060d000b0b200328020c2204450d00200441c0076c450d00200210390b200341d0166a24000f0b1034000b1030000b8dcd0106067f017e0c7f047e067f027e23004180276b2202240002400240200128020422030d00200041253602000c010b200141046a2104200128020022052d0000210620012003417f6a22073602042001200541016a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e640001020304250506250708090a250b0c0d0e0f101112131415161718191a1b1c25252525252525251d1e1f252525252525252525252525252525252525252525252525252525252525252525252525252021252525252525252522232525252525252524250b2007450d3120052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024002400240024020060e0a000102030405060708093d0b20074104490d3c2005280002210620012003417a6a3602042001200541066a3602002006418194ebdc034f0d3c410121010c0a0b200241086a200110ad0120022802080d3b20042802002205200228020c2203490d3b2003417f4c0d310240024020030d00410121060c010b200310382206450d3320064100200310c50a1a0b200620012802002207200310c30a1a2001200520036b3602042001200720036a3602002003ad22084220862008842108410221010c080b20074108490d3a200529000221082001200341766a36020420012005410a6a360200410321010c080b200241106a200110ad0120022802100d392004280200220520022802142203490d392003417f4c0d2f0240024020030d00410121060c010b200310382206450d3120064100200310c50a1a0b200620012802002207200310c30a1a2001200520036b3602042001200720036a3602002003ad22084220862008842108410421010c060b200241186a200110ad0120022802180d3820042802002205200228021c2203490d382003417f4c0d2e0240024020030d00410121060c010b200310382206450d3020064100200310c50a1a0b200620012802002207200310c30a1a2001200520036b3602042001200720036a3602002003ad22084220862008842108410521010c050b200241d81e6a200110ef0720022802d81e22064102460d3720022902dc1e2108410621010c040b200241306a200110ad0120022802300d3620022802342209200428020041186e2203200320094b1bad42187e2208422088a70d2c2008a72203417f4c0d2c0240024020030d00410421060c010b200310382206450d2e0b200241003602e01e200220063602d81e2002200341186e3602dc1e02402009450d004100210a0340200241286a200110ad010240024020022802280d0020042802002205200228022c2203490d002003417f4c0d300240024020030d004101210b0c010b20031038220b450d32200b4100200310c50a1a200428020021050b024020052003490d00200b20012802002207200310c30a210c2001200520036b3602042001200720036a360200200241206a200110ad01024020022802200d002004280200220720022802242205490d002005417f4c0d320240024020050d004101210d0c010b20051038220d450d34200d4100200510c50a1a200428020021070b200720054f0d03200d10390b2003450d010b200b10390b20022802d81e21050240200a450d00200a41186c21032005210103400240200141046a280200450d00200128020010390b0240200141106a280200450d002001410c6a28020010390b200141186a2101200341686a22030d000b0b20022802dc1e2201450d39200141186c450d39200510390c390b2005ad22084220862008842108200d2001280200220b200510c30a210d2001200720056b3602042001200b20056a3602000240200a20022802dc1e470d00200241d81e6a200a10f00720022802d81e210620022802e01e210a0b2006200a41186c6a220520033602042005200c360200200541106a20083702002005410c6a200d360200200541086a2003360200200220022802e01e41016a220a3602e01e2009417f6a22090d000b20022802d81e21060b2006450d3620022902dc1e2108410721010c030b200241d81e6a200110bf0320022802d81e2206450d3520022902dc1e2108410821010c020b200241386a200110ad0120022802380d3420042802002203200228023c2205490d342005417f4c0d2a0240024020050d00410121060c010b200510382206450d2c20064100200510c50a1a0b200620012802002204200510c30a210a2001200320056b22073602042001200420056a2204360200024020074104490d002004280000210320012007417c6a3602042001200441046a3602002005ad22084220862008842108410921010c030b2005450d34200a10390c340b200241c0006a200110ad0120022802400d332004280200220520022802442203490d332003417f4c0d290240024020030d00410121060c010b200310382206450d2b20064100200310c50a1a0b200620012802002207200310c30a1a2001200520036b3602042001200720036a3602002003ad22084220862008842108410a21010b0b20004100360200200041186a2003360200200041106a20083702002000410c6a2006360200200041086a20013602000c320b2007450d2f20052d0001210620012003417e6a3602042001200541026a3602000240024002400240024020060e03000103340b200241d81e6a2001109404200241e41e6a2802002205450d33200241b8266a41086a2209200241d81e6a41086a220b280200360200200220022903d81e3703b826200241d81e6a41106a220d2802002106200241ec1e6a280200210320024190056a200241f01e6a41e40010c30a1a200241dc1f6a2802002104200241d81e6a4180016a2802002107200241d41f6a280200210a200241f8166a200241e01f6a41800110c30a1a200241d81e6a200110cc06024020022802dc1e450d00200241c0046a41106a200d280200360200200241c0046a41086a200b290300370300200241dc046a2009280200360200200220022903d81e3703c004200220022903b8263702d404200241b0136a20024190056a41e40010c30a1a200241a00c6a200241f8166a41800110c30a1a410121010c040b02402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200510390b02402004450d00200441246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b2007450d33200741246c0d010c330b200241d81e6a2001109404200241e41e6a2802002205450d32200241b8266a41086a2209200241d81e6a41086a220b280200360200200220022903d81e3703b826200241d81e6a41106a220d2802002106200241ec1e6a280200210320024190056a200241f01e6a41e40010c30a1a200241dc1f6a2802002104200241d81e6a4180016a2802002107200241d41f6a280200210a200241f8166a200241e01f6a41800110c30a1a200241d81e6a200110cc06024020022802dc1e450d00200241c0046a41106a200d280200360200200241c0046a41086a200b290300370300200241dc046a2009280200360200200220022903d81e3703c004200220022903b8263702d404200241b0136a20024190056a41e40010c30a1a200241a00c6a200241f8166a41800110c30a1a410221010c030b02402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200510390b02402004450d00200441246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b2007450d32200741246c450d320b200a10390c310b200241f8166a20011093044103210120022d0088174103460d30200241e41e6a200241f8166a41086a290300370200200241ec1e6a200241f8166a41106a290300220837020020024190056a41106a2008370300200220022903f8163702dc1e200241c0046a41086a200241d81e6a41086a290200370300200241c0046a41106a200241d81e6a41106a290200370300200241c0046a41186a200241d81e6a41186a280200360200200220022902d81e3703c0040b2000410c6a20022903c004370200200041246a200241d8046a2903003702002000411c6a200241d0046a290300370200200041146a200241c0046a41086a290300370200200041386a200241b0136a41e40010c30a1a200041a8016a200241a00c6a41800110c30a1a200041a4016a2004360200200041a0016a20073602002000419c016a200a360200200041346a2003360200200041306a20063602002000412c6a2005360200200041086a2001360200200041013602000c310b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241c8006a200110b0012002290348a70d002002290350210820004102360200200041086a20083703000c310b200041253602000c300b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024020060e050001020304080b20074104490d072005280002210620012003417a6a3602042001200541066a3602004101210e0c040b200241d81e6a200110800220022d00d81e4101460d062004280200220e4104490d06200241f51e6a2f0000200241f71e6a2d0000411074722103200241ee1e6a2f0100200241f01e6a2d0000411074722105200241f81e6a2d00002107200241f31e6a2f00002104200241f21e6a2d0000210a200241f11e6a2d00002109200241ec1e6a2f0100210b200241e41e6a2902002108200241e01e6a280200210d20022802dc1e210620022f01da1e210c20022d00d91e210f2001280200221028000021112001200e417c6a3602042001201041046a3602004102210e0c040b20074104490d052005280002210620012003417a6a3602042001200541066a3602004103210e0c020b200241d81e6a200110800220022d00d81e4101460d042004280200220e4104490d04200241f71e6a2d00002105200241f51e6a2f00002112200241f01e6a2d00002113200241ee1e6a2f01002114200241f81e6a2d00002107200241f31e6a2f00002104200241f21e6a2d0000210a200241f11e6a2d00002109200241ec1e6a2f0100210b200241e41e6a2902002108200241e01e6a280200210d20022802dc1e210620022f01da1e210c20022d00d91e210f2001280200221028000021112001200e417c6a22033602042001201041046a3602002003450d04201220054110747221032014201341107472210520102d000421122001200e417b6a3602042001201041056a3602004104210e41002101024020120e020400050b410121010c030b20074104490d032005280002210620012003417a6a3602042001200541066a3602004105210e0b0b0b200020013a0025200020043b001f2000200a3a001e200020093a001d2000200c3b00062000200f3a00052000200e3a000420004103360200200041236a20034110763a0000200041216a20033b00002000411c6a20054110763a00002000411a6a20053b0100200041286a2011360200200041246a20073a0000200041186a200b3b0100200041106a20083702002000410c6a200d360200200041086a20063602000c300b200041253602000c2f0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024002400240024020060e0400010203060b200241d81e6a200110ff0120022d00d81e22034105460d0520024190056a41026a220720022d00db1e3a0000200241f8166a41086a2204200241ec1e6a290200370300200241f8166a41106a220a200241f41e6a290200370300200220022f00d91e3b0190052002200241e41e6a2902003703f816200241d81e6a41086a280200210520022802dc1e2106200241d8006a2001108d0302402002290358a70d00200241d8006a41106a290300210820022903602115200241b0136a41026a20072d00003a0000200241a00c6a41086a2004290300370300200241a00c6a41106a200a290300370300200220022f0190053b01b013200220022903f8163703a00c2015422088a7210a2008422088a721092015a721072008a721044101210d0c320b20034102470d0520050d040c050b200241d81e6a200110ff0120022d00d81e22034105460d0420024190056a41026a20022d00db1e3a0000200241f8166a41086a200241ec1e6a290200370300200241f8166a41106a200241f41e6a290200370300200220022f00d91e3b0190052002200241e41e6a2902003703f816200241d81e6a41086a280200210520022802dc1e210620024188016a2001108d03200229038801a70d0220024188016a41106a29030021082002290390012116200241f0006a2001108d032002290370a70d02200241f0006a41106a2903002117200229037821154102210d200241b0136a41026a20024190056a41026a2d00003a0000200241a00c6a41086a200241f8166a41086a290300370300200241a00c6a41106a200241f8166a41106a290300370300200220022f0190053b01b013200220022903f8163703a00c2016422088a7210a2008422088a721092016a721072008a721040c300b200241d81e6a200110ff0120022d00d81e22034105460d0320024192056a20022d00db1e3a0000200241f8166a41086a200241ec1e6a290200370300200241f8166a41106a200241f41e6a290200370300200220022f00d91e3b0190052002200241e41e6a22072902003703f816200241d81e6a41086a2204280200210520022802dc1e2106200241d81e6a200110ff01024020022d00d81e4105460d00200241f01e6a2903002117200241d81e6a41106a2903002115200241f81e6a3502002108200728020021092004280200210420022802dc1e210a20022802d81e2107200241a0016a2001108d03024020022903a001a70d00200241a0016a41106a290300211820022903a8012116200241b0136a41026a20024190056a41026a2d00003a0000200241a00c6a41086a200241f8166a41086a290300370300200241a00c6a41106a200241f8166a41106a290300370300200220022f0190053b01b013200220022903f8163703a00c4103210d0c310b200741ff01714102470d002004450d00200a10390b20034102470d0320050d020c030b200241d81e6a200110ff0120022d00d81e22034105460d0220024190056a41026a220720022d00db1e3a0000200241f8166a41086a2204200241ec1e6a290200370300200241f8166a41106a220a200241f41e6a290200370300200220022f00d91e3b0190052002200241e41e6a2902003703f816200241d81e6a41086a280200210520022802dc1e2106200241b8016a2001108d03024020022903b801a70d00200241b8016a41106a290300210820022903c0012115200241b0136a41026a20072d00003a0000200241a00c6a41086a2004290300370300200241a00c6a41106a200a290300370300200220022f0190053b01b013200220022903f8163703a00c2015422088a7210a2008422088a721092015a721072008a721044104210d0c2f0b20034102470d0220050d010c020b20034102470d012005450d010b200610390b200041253602000c2e0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241d81e6a200110af0320022802d81e2201450d00200041086a20022902dc1e37020020002001360204200041053602000c2e0b200041253602000c2d0b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c2c0b02402007450d0020052d0001210620012003417e6a360204410221072001200541026a3602000240024020060e020001020b200241d81e6a200110c90420022d00d81e4101460d01200241f8166a200241d81e6a41017241e10110c30a1a200241d0016a200110ad0120022802d0010d012004280200220620022802d4012205490d012005417f4c0d22410121074101210302402005450d00200510382203450d2420034100200510c50a1a0b200320012802002204200510c30a1a2001200620056b3602042001200420056a360200200241a00c6a200241f8166a41e10110c30a1a2005ad220842208620088421080b200020073a0004200041056a200241a00c6a41e10110c30a1a200041ec016a2008370100200041e8016a2003360100200041073602000c2c0b200041253602000c2b0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b200241f8166a20011096042002290380174202510d03200241a00c6a200241f8166a41800210c30a1a200241f8166a200110cc0620022802fc162206450d03200241e01e6a20024188176a28020036020020022002290380173703d81e20022802f8162107200241e41e6a200241a00c6a41800210c30a1a410121010c020b200241f8166a20011096042002290380174202510d02200241a00c6a200241f8166a41800210c30a1a200241f8166a200110cc0620022802fc162206450d02200241e01e6a20024188176a28020036020020022002290380173703d81e20022802f8162107200241e41e6a200241a00c6a41800210c30a1a410221010c010b20074104490d012005280002210720012003417a6a22063602042001200541066a36020020064104490d01200528000621062001200341766a36020420012005410a6a360200410321010b200041146a200241d81e6a418c0210c30a1a200041106a20063602002000410c6a2007360200200041086a2001360200200041083602000c2b0b200041253602000c2a0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d0020074104490d002005280002210a20012003417a6a3602042001200541066a360200200241e8016a200110ad0120022802e8010d002004280200220320022802ec012205490d002005417f4c0d1f0240024020050d00410121060c010b200510382206450d2120064100200510c50a1a0b200620012802002207200510c30a210f2001200320056b3602042001200720056a360200200241e0016a200110ad010240024020022802e0010d0020022802e401220b2004280200410c6e22032003200b4b1bad420c7e2208422088a70d212008a72203417f4c0d210240024020030d004104210c0c010b20031038220c450d230b200241003602e01e2002200c3602d81e20022003410c6e22093602dc1e02400240200b0d00410021070c010b410021070340200241d8016a200110ad010240024020022802d8010d002004280200220620022802dc012203490d002003417f4c0d250240024020030d00410121090c010b200310382209450d2720094100200310c50a1a200428020021060b200620034f0d01200910390b20022802d81e210602402007450d002007410c6c21032006210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b20022802dc1e2201450d032001410c6c450d03200610390c030b2003ad2208422086200884210820092001280200220d200310c30a21092001200620036b3602042001200d20036a3602000240200720022802dc1e470d00200241d81e6a200710b70320022802d81e210c20022802e01e21070b200c2007410c6c6a2203200837020420032009360200200220022802e01e41016a22073602e01e200b417f6a220b0d000b20022802dc1e210920022802d81e210c0b200c0d010b2005450d01200f10390c010b0240024002402004280200220d4104490d002001280200221128000021122001200d417c6a22033602042001201141046a36020020034104490d00201128000421132001200d41786a22033602042001201141086a360200200341034b0d010b02402005450d00200f10390b02402007450d002007410c6c2103200c210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b2009450d022009410c6c0d010c020b201128000821142001200d41746a220e36020420012011410c6a360200200241d81e6a4104722110410021034173210602400340200e2003460d01201120036a2204410c6a2d0000210b2001200d20066a36020420012004410d6a360200201020036a200b3a00002002200341016a22043602d81e2006417f6a210620042103200441c000470d000b200241a00c6a41026a2201200241e51e6a2d00003a0000200220022f01dc1e3b01f816200220022d00de1e3a00fa162002200241e31e6a2f00003b01a00c200241901f6a2802002103200241d81e6a413c6a2902002108200241891f6a2800002106200241821f6a2801002104200241fb1e6a280000210b200241d81e6a411c6a280200210d200241ed1e6a2800002111200241e61e6a280100210e20022800df1e211020024190056a41026a2219200241d81e6a41146a2d00003a0000200241b0136a41026a221a200241f31e6a2d00003a0000200241c0046a41026a221b200241fa1e6a2d00003a0000200241b8266a41026a221c200241811f6a2d00003a0000200241bc046a41026a221d200241881f6a2d00003a00002002200241ea1e6a2f01003b0190052002200241f11e6a2f00003b01b0132002200241d81e6a41206a2f01003b01c0042002200241ff1e6a2f00003b01b8262002200241d81e6a412e6a2f01003b01bc04200241b8046a41026a221e2002418f1f6a2d00003a00002002200241d81e6a41356a2f00003b01b804200041286a2014360200200041246a2013360200200041206a20123602002000411c6a2007360200200041186a2009360200200041146a200c360200200041106a20053602002000410c6a2005360200200041086a200f3602002000200a3602042000412c6a20022f01f8163b01002000412e6a20022d00fa163a00002000412f6a2010360000200020022f01a00c3b0033200041356a20012d00003a00002000200e3600362000413c6a20192d00003a0000200020022f0190053b003a2000201136003d200041c3006a201a2d00003a0000200020022f01b0133b0041200041c4006a200d360000200041ca006a201b2d00003a0000200041c8006a20022f01c0043b00002000200b36004b200041d1006a201c2d00003a0000200020022f01b8263b004f20002004360052200041d8006a201d2d00003a0000200020022f01bc043b005620002006360059200041df006a201e2d00003a0000200020022f01b8043b005d200041e4006a2008370000200041e0006a2003360000200041093602000c2c0b02402005450d00200f10390b02402007450d002007410c6c2103200c210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b2009450d012009410c6c450d010b200c10390b200041253602000c290b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c280b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272a0b20074104490d292005280002210620012003417a6a3602042001200541066a360200410121040c270b20074104490d282005280002210620012003417a6a3602042001200541066a360200410221040c260b20074104490d272005280002210620012003417a6a3602042001200541066a360200410321040c250b4104210420074104490d262005280002210620012003417a6a3602042001200541066a3602000c240b20074104490d252005280002210620012003417a6a3602042001200541066a360200410521040c230b20074104490d242005280002210620012003417a6a360204410621042001200541066a3602000c220b20074104490d232005280002210620012003417a6a3602042001200541066a360200410721040c210b20074104490d222005280002210620012003417a6a3602042001200541066a360200410821040c200b20074104490d212005280002210620012003417a6a3602042001200541066a360200410921040c1f0b20074104490d202005280002210620012003417a6a3602042001200541066a360200410a21040c1e0b20074104490d1f2005280002210620012003417a6a3602042001200541066a360200410b21040c1d0b20074104490d1e2005280002210620012003417a6a3602042001200541066a360200410c21040c1c0b2007450d1d20052d0002210720012003417d6a220a3602042001200541036a360200410021060240024020070e0201001f0b200a4104490d1e200528000321042001200341796a3602042001200541076a360200410121060b2004ad210842002115410d21040c1c0b2007450d1c20052d0002210720012003417d6a220a3602042001200541036a360200410021060240024020070e0201001e0b200a4104490d1d200528000321042001200341796a3602042001200541076a360200410121060b2004ad210842002115410e21040c1b0b20074104490d1b2005280002210620012003417a6a3602042001200541066a360200410f21040c190b20074104490d1a2005280002210620012003417a6a3602042001200541066a360200411021040c180b20074104490d192005280002210620012003417a6a3602042001200541066a360200411121040c170b20074104490d182005280002210620012003417a6a3602042001200541066a360200411221040c160b20074104490d172005280002210620012003417a6a3602042001200541066a360200411321040c150b20074104490d162005280002210620012003417a6a3602042001200541066a360200411421040c140b20074104490d152005280002210620012003417a6a3602042001200541066a360200411521040c130b20074104490d142005280002210620012003417a6a3602042001200541066a360200411621040c120b20074104490d132005280002210620012003417a6a3602042001200541066a360200411721040c110b20074104490d122005280002210620012003417a6a3602042001200541066a360200411821040c100b20074104490d112005280002210620012003417a6a3602042001200541066a360200411921040c0f0b20074104490d102005280002210620012003417a6a3602042001200541066a360200411a21040c0e0b20074108490d0f200529000221082001200341766a36020420012005410a6a36020042002115411b21040c0e0b20074104490d0e2005280002210620012003417a6a3602042001200541066a360200411c21040c0c0b20074104490d0d2005280002210620012003417a6a3602042001200541066a360200411d21040c0b0b20074104490d0c2005280002210620012003417a6a3602042001200541066a360200411e21040c0a0b20074110490d0b20012003416e6a3602042001200541126a3602002005410a6a290000211520052900022108411f21040c0a0b20074110490d0a20012003416e6a3602042001200541126a3602002005410a6a290000211520052900022108412021040c090b20074104490d092005280002210620012003417a6a3602042001200541066a360200412121040c070b20074104490d082005280002210620012003417a6a3602042001200541066a360200412221040c060b20074104490d072005280002210620012003417a6a3602042001200541066a360200412321040c050b20074104490d062005280002210620012003417a6a3602042001200541066a360200412421040c040b20074104490d052005280002210620012003417a6a3602042001200541066a360200412521040c030b20074104490d042005280002210620012003417a6a3602042001200541066a360200412621040c020b20074104490d032005280002210620012003417a6a3602042001200541066a360200412721040c010b20074104490d022005280002210620012003417a6a3602042001200541066a360200412821040b0b2000410b360200200041186a2015370200200041106a20083702002000410c6a2006360200200041086a20043602000c280b200041253602000c270b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c260b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c250b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241d81e6a200110e10520022802d81e2201450d00200241f8166a200241d81e6a41047241900110c30a1a200041086a200241f8166a41900110c30a1a200020013602042000410e3602000c250b200041253602000c240b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c230b2007450d1e20052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024020060e050001020304240b20074104490d232005280002210620012003417a6a3602042001200541066a360200200241f0016a200110ad0120022802f0010d232004280200220420022802f4012207490d232007417f4c0d1c410121054101210302402007450d00200710382203450d1e20034100200710c50a1a0b20032001280200220a200710c30a1a2001200420076b3602042001200a20076a3602002007ad220842208620088421080c040b20074104490d222005280002210620012003417a6a3602042001200541066a360200200241f8016a200110ad0120022802f8010d222004280200220720022802fc012205490d222005417f4c0d1b0240024020050d00410121030c010b200510382203450d1d20034100200510c50a1a0b200320012802002204200510c30a1a2001200720056b3602042001200420056a3602002005ad22084220862008842108410221050c030b20074104490d212005280002210620012003417a6a3602042001200541066a36020020024180026a200110ad012002280280020d21200428020022072002280284022205490d212005417f4c0d1a0240024020050d00410121030c010b200510382203450d1c20034100200510c50a1a0b20032001280200220a200510c30a21092001200720056b22043602042001200a20056a220a360200024020044104490d00200a280000210720012004417c6a3602042001200a41046a3602002005ad22084220862008842108410321050c030b2005450d21200910390c210b20074104490d202005280002210620012003417a6a3602042001200541066a36020020024188026a200110ad012002280288020d2020042802002207200228028c022205490d202005417f4c0d190240024020050d00410121030c010b200510382203450d1b20034100200510c50a1a0b200320012802002204200510c30a1a2001200720056b3602042001200420056a3602002005ad22084220862008842108410421050c010b20074104490d1f2005280002210620012003417a6a3602042001200541066a360200410521050b2000200536020420004110360200200041186a2007360200200041106a20083702002000410c6a2003360200200041086a20063602000c220b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d0020074104490d002005280002210620012003417a6a3602042001200541066a36020020002006360204200041113602000c220b200041253602000c210b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c200b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c1f0b02402007450d0020052d0001210620012003417e6a220b3602042001200541026a3602004105210402400240024002400240024020060e06000102030504060b200b4104490d052005280002210720012003417a6a22063602042001200541066a36020020064104490d052005280006210a2001200341766a220636020420012005410a6a36020020064104490d05200528000a21092001200341726a36020420012005410e6a360200410121040c040b200b4104490d042005280002210720012003417a6a3602042001200541066a360200410221040c030b200b4104490d032005280002210720012003417a6a22063602042001200541066a36020020064104490d032005280006210a2001200341766a36020420012005410a6a360200410321040c020b41042104200b4104490d022005280002210720012003417a6a3602042001200541066a3602000c010b410621040b2000200436020420004114360200200041106a20093602002000410c6a200a360200200041086a20073602000c1f0b200041253602000c1e0b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c1d0b2007450d1720052d0001210620012003417e6a220c3602042001200541026a3602004106211c024002400240024002400240024020060e060001020304061e0b200c4104490d1d2005280002210b20012003417a6a3602042001200541066a36020020024198026a200110ad012002280298020d1d20042802002205200228029c022203490d1d2003417f4c0d170240024020030d004101210d0c010b20031038220d450d19200d4100200310c50a1a0b200d20012802002206200310c30a21072001200520036b3602042001200620036a36020020024190026a200110ad0102402002280290020d00200428020022062002280294022205490d002005417f4c0d184101211c4101210f02402005450d0020051038220f450d1a200f4100200510c50a1a0b2003ad22084220862008842108200f20012802002203200510c30a21072001200620056b3602042001200320056a3602002005411074200741107672210a2005ad2215421088a721102015422086201584421888a721122015420888a72209210e0c060b2003450d1d200710390c1d0b200241d81e6a200110800220022d00d81e4101460d1c200428020022034110490d1c200241f71e6a2d0000210a200241f51e6a2f00002109200241f01e6a2d0000210c200241ee1e6a2f0100211c200241f81e6a2d00002114200241f31e6a2f00002112200241f21e6a2d00002110200241f11e6a2d0000210e200241ec1e6a2f0100210f200241e41e6a2902002108200241d81e6a41086a280200210d20022802dc1e210b20022f01da1e211120022d00d91e21132001200341706a220636020420012001280200220541106a36020020064104490d1c200541086a2900002117200529000021152005280010211920012003416c6a3602042001200541146a360200200241a8026a200110ad0120022802a8020d1c2004280200220320022802ac022207490d1c2007417f4c0d160240024020070d004101211a0c010b20071038221a450d18201a4100200710c50a1a0b201a20012802002205200710c30a21062001200320076b3602042001200520076a360200200241a0026a200110ad01024020022802a0020d002004280200220520022802a4022203490d002003417f4c0d170240024020030d004101211b0c010b20031038221b450d19201b4100200310c50a1a0b2009200a411074722109201c200c41107472210a201b20012802002206200310c30a1a2001200520036b3602042001200620036a3602002003ad221642208620168421164102211c0c050b2007450d1c200610390c1c0b200c4104490d1b2005280002210b20012003417a6a3602042001200541066a3602004103211c0c020b200c4104490d1a2005280002210b20012003417a6a22063602042001200541066a36020020064104490d1a2005280006210d2001200341766a36020420012005410a6a3602004104211c0c020b200c4104490d192005280002210b20012003417a6a3602042001200541066a3602004105211c0b0b200020123b0023200020103a00222000200e3a0021200020113b000a200020133a000920004116360200200041276a20094110763a0000200041256a20093b0000200041206a200a4110763a00002000411e6a200a3b0100200041d0006a2017370200200041c8006a2015370200200041c0006a20163702002000413c6a201b360200200041386a2007360200200041346a2007360200200041306a201a3602002000412c6a2019360200200041286a20143602002000411c6a200f3b0100200041146a2008370200200041106a200d3602002000410c6a200b360200200041086a201c3a00000c1c0b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004103210a02400240024020060e03000102030b200241b8026a200110ad0120022802b8020d0220022802bc022103200241b0026a200110ad0120022802b0020d0220022802b40221054101210a0c010b200241f0026a200110ad0120022802f0020d0120022802f4022103200241e8026a200110ad0120022802e8020d0120022802ec022105200241e0026a200110ad0120022802e0020d0120022802e4022107200241d8026a200110ad0120022802d8020d0120022802dc022104200241c0026a2001108d0320022903c002a70d01200241d0026a290300211520022903c80221084102210a0b20004117360200200041286a2015370200200041206a2008370200200041186a2004360200200041146a2007360200200041106a20053602002000410c6a2003360200200041086a200a3602000c1c0b200041253602000c1b0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024002400240024020060e0800010203040506070b0b200241a8036a200110ad0120022802a8030d0a20022802ac03210620024190036a2001108d03200229039003a70d0a200241a0036a2903002117200229039803211520024188036a200110ad012002280288030d0a200228028c03211020024180036a200110ad012002280280030d0a2002280284032112200241f8026a200110ad0120022802f8020d0a20022802fc022114200241d81e6a200110f10720022d00d81e220a4104460d0a200241f41e6a2f0100200241f61e6a2d0000411074722103200241ed1e6a2f0000200241ef1e6a2d00004110747221052017422088a7210e200241f91e6a2d00002119200241f81e6a2d00002113200241f71e6a2d00002109200241f21e6a2f0100210b200241f11e6a2d0000210d200241f01e6a2d0000210c200241eb1e6a2f0000210f200241e31e6a290000210820022800df1e210420022800db1e210720022f00d91e2111410121010c090b200241c8036a200110ad0120022802c8030d0920022802cc03210e200241b0036a2001108d0320022903b003a70d092004280200221b450d09200241c0036a290300211820022903b80321162001280200221c2d0000211d2001201b417f6a221e3602042001201c41016a3602004103210a02400240201d0e0201000b0b201e450d0a201c2d000121032001201b417e6a22053602042001201c41026a360200024002400240024020030e030001020e0b41002103200241003602d81e200241d81e6a410472210a417d2106034020052003460d0e201c20036a220741026a2d000021042001201b20066a3602042001200741036a360200200a20036a20043a00002002200341016a22073602d81e2006417f6a210620072103200741c000470d000b200241ee1e6a2f0100210f200241f31e6a2d0000210c200241f41e6a2d0000210d200241d81e6a411d6a2f0000210b200241d81e6a411f6a2800002103200241d81e6a41186a2f01002101200241f21e6a2d00002105200241fb1e6a2800002113200241ff1e6a2800002106200241831f6a29000021152002418b1f6a2900002108200241e71e6a2800002107200241ec1e6a2f01002104200241931f6a3300002117200241eb1e6a2d0000210a20022f01dc1e211120022d00de1e210920022900df1e211f200241f8166a411d6a200241981f6a280000360000200241ad0c6a200a3a0000200241f8166a41186a20173d0100200220043b01ae0c200220073600a90c2002201f3700a10c200220093a00a00c200220083702881720022015370280172002200241951f6a28000036019217200220063602fc16200220133602f816200120054110747221052008421888a7211a200241f8166a411f6a330000211720022902a80c210820022802a00c21072002280087172114200229008f17211520022800ff16211020022800fb16210620022800831721124100210a0c020b41002103200241003602d81e200241d81e6a410472210a417d2106034020052003460d0d201c20036a220741026a2d000021042001201b20066a3602042001200741036a360200200a20036a20043a00002002200341016a22073602d81e2006417f6a210620072103200741c000470d000b200241ee1e6a2f0100210f200241f31e6a2d0000210c200241f41e6a2d0000210d200241d81e6a411d6a2f0000210b200241d81e6a411f6a2800002103200241d81e6a41186a2f01002101200241f21e6a2d00002105200241fb1e6a2800002113200241ff1e6a2800002106200241831f6a29000021152002418b1f6a2900002108200241e71e6a2800002107200241ec1e6a2f01002104200241931f6a3300002117200241eb1e6a2d0000210a20022f01dc1e211120022d00de1e210920022900df1e211f200241f8166a411d6a200241981f6a280000360000200241ad0c6a200a3a0000200241f8166a41186a20173d0100200220043b01ae0c200220073600a90c2002201f3700a10c200220093a00a00c200220083702881720022015370280172002200241951f6a28000036019217200220063602fc16200220133602f816200120054110747221052008421888a7211a200241f8166a411f6a330000211720022902a80c210820022802a00c21072002280087172114200229008f17211520022800ff16211020022800fb16210620022800831721124101210a0c010b41002103200241003602d81e200241d81e6a410472210a417d2106034020052003460d0c201c20036a220741026a2d000021042001201b20066a3602042001200741036a360200200a20036a20043a00002002200341016a22073602d81e2006417f6a210620072103200741c100470d000b200241ee1e6a2f0100210f200241f31e6a2d0000210c200241f41e6a2d0000210d200241f51e6a2f0000210b200241d81e6a411f6a2800002103200241d81e6a41186a2f01002101200241d81e6a411a6a2d00002105200241fb1e6a2800002113200241ff1e6a2800002106200241831f6a29000021152002418b1f6a2900002108200241e71e6a2800002107200241ec1e6a2f01002104200241931f6a3300002117200241951f6a3100002120200241eb1e6a2d0000210a20022f01dc1e211120022d00de1e210920022900df1e211f20024196176a200241991f6a280000360000200241ad0c6a200a3a0000200241f8166a411a6a20203c0000200241f8166a41186a20173d0100200220043b01ae0c200220073600a90c2002201f3700a10c200220093a00a00c2002200241961f6a2801003600931720022008370288172002201537028017200220063602fc16200220133602f81620012005411074722105200241f8166a411f6a33000020024199176a3100004210868421172008421888a7211a20022902a80c210820022802a00c2107200229008f172115200228008717211420022800ff16211020022800fb16210620022800831721124102210a0b2013410876211920034118762109201f421888a721040b201742ffffff07832117410221010c080b200241d81e6a200110800220022d00d81e4101460d08200241f81e6a2d00002109200241f31e6a2f0000210b200241f21e6a2d0000210d200241f11e6a2d0000210c200241ec1e6a2f0100210f200241e41e6a2902002108200241e01e6a2802002104200241ee1e6a2f01002105200241f01e6a2d00002106200241f51e6a2f00002103200241f71e6a2d0000210e20022802dc1e210720022f01da1e211120022d00d91e210a200241d0036a200110ad0120022802d0030d082003200e4110747221032005200641107472210520022802d4032106410321010c070b200241d8036a200110ad0120022802d8030d0720022802dc032107410421010c040b200241e0036a200110ad0120022802e0030d0620022802e4032107410521010c030b20024198046a200110ad012002280298040d05200228029c04210620024180046a2001108d03200229038004a70d0520024190046a29030021172002290388042115200241f8036a200110ad0120022802f8030d0520022802fc032110200241f0036a200110ad0120022802f0030d0520022802f4032112200241e8036a200110ad0120022802e8030d0520022802ec032114200241d81e6a200110f10720022d00d81e220a4104460d05200241f41e6a2f0100200241f61e6a2d0000411074722103200241ed1e6a2f0000200241ef1e6a2d00004110747221052017422088a7210e200241f91e6a2d00002119200241f81e6a2d00002113200241f71e6a2d00002109200241f21e6a2f0100210b200241f11e6a2d0000210d200241f01e6a2d0000210c200241eb1e6a2f0000210f200241e31e6a290000210820022800df1e210420022800db1e210720022f00d91e2111410621010c040b20074104490d042005280002210720012003417a6a3602042001200541066a360200200241a0046a200110ad0120022802a0040d042004280200220520022802a4042203490d042003417f4c0d140240024020030d00410121040c010b200310382204450d1620044100200310c50a1a0b200420012802002206200310c30a1a2001200520036b3602042001200620036a3602002003ad22084220862008842108410721010c020b20074104490d032005280002210720012003417a6a3602042001200541066a360200410821010b0b0b200020193b002a200020133a00292000200b3b00232000200d3a00222000200c3a0021200020113b000a2000200a3a000920004118360200200041276a20034110763a0000200041256a20033b0000200041206a20054110763a00002000411e6a20053b0100200041d8006a2018370200200041d0006a2016370200200041c0006a20153702002000413c6a201a360200200041386a2014360200200041346a2012360200200041306a20103602002000412c6a2006360200200041286a20093a00002000411c6a200f3b0100200041146a2008370200200041106a20043602002000410c6a2007360200200041086a20013a0000200041c8006a200ead422086201742ffffffff0f83843702000c1b0b200041253602000c1a0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024020060e03000102030b20074104490d022005280002210620012003417a6a3602042001200541066a360200200241d81e6a200110800220022d00d81e4101460d02200428020022124110490d02200241f71e6a2d00002105200241f51e6a2f00002110200241f01e6a2d00002114200241ee1e6a2f01002119200241f81e6a2d00002107200241f31e6a2f00002104200241f21e6a2d0000210a200241f11e6a2d00002109200241ec1e6a2f0100210b200241e41e6a2902002108200241d81e6a41086a280200210d20022802dc1e210c20022f01da1e210f20022d00d91e21112001201241706a220336020420012001280200221341106a36020020034104490d02201341086a2900002115201329000021172013280010210e20012012416c6a22033602042001201341146a36020020034104490d022010200541107472210320192014411074722105201328001421102001201241686a3602042001201341186a360200410121010c160b20074104490d012005280002210c20012003417a6a3602042001200541066a360200410221010c150b20074104490d002005280002210c20012003417a6a3602042001200541066a360200410321010c140b200041253602000c190b2007450d1120052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024020060e06000102030405180b20074104490d172005280002210620012003417a6a3602042001200541066a360200200241b0046a200110ad0120022802b0040d172004280200220320022802b4042207490d172007417f4c0d130240024020070d004101210a0c010b20071038220a450d15200a4100200710c50a1a0b200a20012802002205200710c30a21092001200320076b3602042001200520076a360200200241a8046a200110ad0102400240024020022802a8040d002004280200220420022802ac042203490d002003417f4c0d160240024020030d00410121050c010b200310382205450d1820054100200310c50a1a0b20052001280200220b200310c30a210d2001200420036b22043602042001200b20036a220b36020002402004450d00200b2d0000210c20012004417f6a360204410121042001200b41016a36020041002101200c0e020302000b2003450d00200d10390b2007450d19200910390c190b410121010b2009410876210d2003210c200721090c050b20074104490d162005280002210620012003417a6a3602042001200541066a360200410221040c040b20074104490d152005280002210620012003417a6a3602042001200541066a360200410321040c030b4104210420074104490d142005280002210620012003417a6a3602042001200541066a3602000c020b20074104490d132005280002210620012003417a6a22073602042001200541066a3602002007450d1320052d000621072001200341796a3602042001200541076a36020020070d13200241d81e6a200110c80120022d00d81e220a410b460d13200241a20c6a200241f31e6a2d00003a00002002200241f11e6a2f00003b01a00c200241f01e6a2d00002101200241ec1e6a2802002103200241d81e6a41106a280200210c200241e41e6a2802002105200241e01e6a280200210720022802dc1e210920022f00d91e210420022d00db1e210b200241f8166a200241f41e6a41cc0310c30a1a2004200b41107472210d410521040c010b20074104490d122005280002210620012003417a6a22073602042001200541066a36020020074104490d122005280006210a2001200341766a220736020420012005410a6a36020020074104490d12200528000a21092001200341726a220736020420012005410e6a36020020074104490d12200528000e210720012003416e6a3602042001200541126a360200200a410876210d410621040b20024190056a41026a220b200241a00c6a41026a2d00003a0000200220022f01a00c3b0190052000412c6a200241f8166a41cc0310c30a1a200041286a20013a0000200041246a2003360200200041206a200c3602002000411c6a2005360200200041186a2007360200200041146a2009360200200041106a200d410874200a41ff0171723602002000410c6a2006360200200041086a20043602002000411a360200200020022f0190053b00292000412b6a200b2d00003a00000c180b02402007450d0020052d0001210620012003417e6a3602042001200541026a360200024002400240024002400240024020060e0400010203070b200241d81e6a200110c40120022802d81e2101200241f8166a200241d81e6a41047241bc0710c30a1a20014125460d0641c00710382203450d1420032001360200200341046a200241f8166a41bc0710c30a1a410121070c030b200241d81e6a200110c40120022802d81e2105200241f8166a200241d81e6a41047241bc0710c30a1a20054125460d0541c00710382203450d1320032005360200200341046a200241f8166a41bc0710c30a1a200428020022054108490d042001280200220629000021082001200541786a3602042001200641086a3602002008422088a721052008a72106410221070c020b200241d81e6a200110ff0120022d00d81e4105460d0420024198056a200241ec1e6a290200370300200241a0056a200241f41e6a2902003703002002200241e41e6a2902003703900520022902dc1e2208422088a7210520022802d81e21032008a72106410321070c010b200241d81e6a200110ff0120022d00d81e4105460d03200241a00c6a41086a200241ec1e6a290200370300200241b00c6a200241f41e6a2902003703002002200241e41e6a2902003703a00c200241d81e6a41086a280200210520022802dc1e210620022802d81e2103200241d81e6a200110c40120022802d81e2107200241f8166a200241d81e6a41047241bc0710c30a1a20074125460d0141c00710382201450d112001200736020041042107200141046a200241f8166a41bc0710c30a1a20024190056a41086a200241a00c6a41086a29030037030020024190056a41106a200241a00c6a41106a290300370300200220022903a00c370390050b200241b0136a41106a20024190056a41106a2903002208370300200241b0136a41086a20024190056a41086a2903002215370300200220022903900522173703b013200041106a2005ad4220862006ad843702002000410c6a2003360200200041086a20073602002000411b360200200041186a2017370200200041206a2015370200200041286a2008370200200041306a20013602000c1a0b200341ff01714102470d012005450d01200610390c010b2003109f06200310390b200041253602000c170b02402007450d0020012003417e6a3602042001200541026a3602000b200041253602000c160b2007450d0d20052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024020060e0400010203140b200241d81e6a200110b00320022802dc1e2205450d13200241e41e6a2204280200210320022802e01e210620022802d81e2107200241f8166a200241e81e6a41e00010c30a1a200241d81e6a200110f20720042802000d0302402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b2006450d13200641246c450d13200510390c130b200241d81e6a200110f30720022d00dc1f4102460d1220022802e01e210320022802dc1e210620022802d81e2105200241f8166a200241e41e6a41e00010c30a1a200241a00c6a41186a2201200241dc1f6a280200360200200241a00c6a41106a2207200241d41f6a290200370300200241a00c6a41086a2204200241cc1f6a2902003703002002200241c41f6a2902003703a00c20024190056a200241f8166a41e00010c30a1a200241c0046a41186a2001280200360200200241c0046a41106a2007290300370300200241c0046a41086a2004290300370300200220022903a00c3703c004410221090c030b2007450d1120052d0002210b20012003417d6a360204410321092001200541036a3602004100210402400240200b0e020100130b200241d81e6a20011080024101210420022d00d81e4101460d122002200241eb1e6a2900003703f8162002200241f11e6a2900003701fe16200241e71e6a2800002103200241e31e6a280000210620022800df1e210520022800db1e210720022f00d91e210a0b200220022901fe1637019605200220022903f816370390050c030b2007450d1020052d0002210b20012003417d6a3602042001200541036a36020041042109410021040240200b0e020300110b410121040c020b200241b8266a200241d81e6a41c80010c30a1a200241a00c6a200241f8166a41e00010c30a1a200241b4136a200241b8266a41c80010c30a1a20024190056a200241a00c6a41e00010c30a1a200241c0046a200241b0136a41cc0010c30a1a410121090b0b2000411c6a20024190056a41e00010c30a1a200041fc006a200241c0046a41cc0010c30a1a200041186a2003360100200041146a2006360100200041106a20053601002000410c6a20073601002000200a3b010a200020043a0009200041086a20093a00002000411d3602000c150b2007450d0b20052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024020060e0400010203120b200241d81e6a200110b00320022802dc1e2205450d11200241e41e6a2204280200210320022802e01e210620022802d81e2107200241f8166a200241e81e6a41e00010c30a1a200241d81e6a200110f20720042802000d0302402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b2006450d11200641246c450d11200510390c110b200241d81e6a200110f30720022d00dc1f4102460d1020022802e01e210320022802dc1e210620022802d81e2105200241f8166a200241e41e6a41e00010c30a1a200241a00c6a41186a2201200241dc1f6a280200360200200241a00c6a41106a2207200241d41f6a290200370300200241a00c6a41086a2204200241cc1f6a2902003703002002200241c41f6a2902003703a00c20024190056a200241f8166a41e00010c30a1a200241c0046a41186a2001280200360200200241c0046a41106a2007290300370300200241c0046a41086a2004290300370300200220022903a00c3703c004410221090c030b2007450d0f20052d0002210b20012003417d6a360204410321092001200541036a3602004100210402400240200b0e020100110b200241d81e6a20011080024101210420022d00d81e4101460d102002200241eb1e6a2900003703f8162002200241f11e6a2900003701fe16200241e71e6a2800002103200241e31e6a280000210620022800df1e210520022800db1e210720022f00d91e210a0b200220022901fe1637019605200220022903f816370390050c030b2007450d0e20052d0002210b20012003417d6a3602042001200541036a36020041042109410021040240200b0e0203000f0b410121040c020b200241b8266a200241d81e6a41c80010c30a1a200241a00c6a200241f8166a41e00010c30a1a200241b4136a200241b8266a41c80010c30a1a20024190056a200241a00c6a41e00010c30a1a200241c0046a200241b0136a41cc0010c30a1a410121090b0b2000411c6a20024190056a41e00010c30a1a200041fc006a200241c0046a41cc0010c30a1a200041186a2003360100200041146a2006360100200041106a20053601002000410c6a20073601002000200a3b010a200020043a0009200041086a20093a00002000411e3602000c140b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024020060e020001030b200241d81e6a200110e50220022802d81e450d02200241f8166a41086a200241d81e6a41086a280200360200200220022903d81e3703f816410121010c010b200241d81e6a200110e50220022802d81e450d01200241f8166a41086a200241d81e6a41086a280200360200200220022903d81e3703f816410221010b20002001360204200041086a20022903f816370200200041106a200241f8166a41086a2802003602002000411f3602000c140b200041253602000c130b200241f8166a200110f407024020022d00f8164107460d00200241a00c6a41306a200241f8166a41306a2903002208370300200241a00c6a41286a200241f8166a41286a2903002215370300200241a00c6a41206a200241f8166a41206a2903002217370300200241a00c6a41186a200241f8166a41186a2903002216370300200241d81e6a410c6a200241f8166a41086a290300370200200241d81e6a41146a200241f8166a41106a290300370200200241d81e6a411c6a2016370200200241d81e6a41246a2017370200200241d81e6a412c6a2015370200200241d81e6a41346a2008370200200220022903f8163702dc1e20004120360200200020022902d81e3702042000410c6a200241d81e6a41086a290200370200200041146a200241d81e6a41106a2902003702002000411c6a200241d81e6a41186a290200370200200041246a200241d81e6a41206a2902003702002000412c6a200241d81e6a41286a290200370200200041346a200241d81e6a41306a2902003702002000413c6a200241901f6a2802003602000c130b200041253602000c120b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020041072104024002400240024002400240024020060e0700010203040506070b200241d81e6a20011080024101210420022d00d81e4101460d06200241f51e6a2f0000200241f71e6a2d0000411074722105200241ee1e6a2f0100200241f01e6a2d0000411074722103200241f81e6a2d00002111200241f31e6a2f0000210c200241f21e6a2d0000210d200241f11e6a2d0000210b200241ec1e6a2f01002109200241e41e6a2902002108200241e01e6a280200210e20022802dc1e210720022f01da1e210a20022d00d91e210f0c050b200241d81e6a200110800220022d00d81e4101460d05200241f51e6a2f0000200241f71e6a2d0000411074722105200241ee1e6a2f0100200241f01e6a2d0000411074722103200241f81e6a2d00002111200241f31e6a2f0000210c200241f21e6a2d0000210d200241f11e6a2d0000210b200241ec1e6a2f01002109200241e41e6a2902002108200241e01e6a280200210e20022802dc1e210720022f01da1e210a20022d00d91e210f410221040c040b200241d81e6a200110800220022d00d81e4101460d04200241f81e6a2d00002111200241f31e6a2f0000210c200241f21e6a2d0000210d200241f11e6a22062d0000210b200241ec1e6a2f01002109200241e41e6a2902002108200241d81e6a41086a280200210e200241ee1e6a2f01002103200241d81e6a41186a2d00002104200241f51e6a2f00002105200241f71e6a2d0000211020022802dc1e210720022f01da1e210a20022d00d91e210f200241d81e6a200110800220022d00d81e4101460d042005201041107472210520032004411074722103200241f8166a41186a2006290000370300200241f8166a41106a200241e91e6a290000370300200241f8166a41086a200241e11e6a290000370300200220022900d91e3703f816410321040c030b200241d81e6a200110e50220022802d81e2207450d03200241e01e6a350200210820022802dc1e210e410421040c020b200241d81e6a200110800220022d00d81e4101460d02200241f51e6a2f0000200241f71e6a2d0000411074722105200241ee1e6a2f0100200241f01e6a2d0000411074722103200241f81e6a2d00002111200241f31e6a2f0000210c200241f21e6a2d0000210d200241f11e6a2d0000210b200241ec1e6a2f01002109200241e41e6a2902002108200241e01e6a280200210e20022802dc1e210720022f01da1e210a20022d00d91e210f410521040c010b200241d81e6a200110800220022d00d81e4101460d01200241f51e6a2f0000200241f71e6a2d0000411074722105200241ee1e6a2f0100200241f01e6a2d0000411074722103200241f81e6a2d00002111200241f31e6a2f0000210c200241f21e6a2d0000210d200241f11e6a2d0000210b200241ec1e6a2f01002109200241e41e6a2902002108200241e01e6a280200210e20022802dc1e210720022f01da1e210a20022d00d91e210f410621040b2000200c3b001f2000200d3a001e2000200b3a001d2000200a3b00062000200f3a0005200020043a0004200020022903f816370025200041236a20054110763a0000200041216a20053b00002000411c6a20034110763a00002000411a6a20033b0000200041246a20113a0000200041186a20093b0000200041106a20083700002000410c6a200e360000200041086a20073600002000412d6a200241f8166a41086a290300370000200041356a200241f8166a41106a2903003700002000413d6a200241f8166a41186a290300370000200041c7006a200241a00c6a41026a2d00003a0000200020022f00a00c3b0045200041213602000c120b200041253602000c110b200241d81e6a200110f507024020022f01d81e4104460d00200020022903d81e3702042000410c6a200241e01e6a290300370200200041223602000c110b200041253602000c100b200241d81e6a2001108904024020022d00d81e410b460d00200041046a200241d81e6a41c80010c30a1a200041233602000c100b200041253602000c0f0b2007450d0220052d0001210620012003417e6a3602042001200541026a36020002400240024002400240024020060e0400010203080b200241d81e6a200110ab0120022903d81e4209510d07200241f8166a200241d81e6a41c80310c30a1a200241d81e6a200110c80120022d00d81e410b460d06200241a00c6a41c0036a200241d81e6a41d00310c30a1a200241c0046a41086a200241b8226a2903003703002002200241b0226a2903003703c004200241d81e6a41d0036a290300211520022903f8162108200241a00c6a200241f8166a41086a41c00310c30a1a410121050c030b200241d81e6a200110ab0120022903d81e4209510d06200241b0136a200241d81e6a41c80310c30a1a200241d81e6a200110ab01024020022903d81e4209510d00200241f8166a200241d81e6a41c80310c30a1a200241d81e6a200110aa01024020022802d81e2203450d0020022902dc1e21080240200428020022054108490d002001280200220629000021152001200541786a3602042001200641086a360200200241a00c6a200241b0136a41c80310c30a1a200241a00c6a41c8036a200241f8166a41c80310c30a1a410221050c050b02402008422088a72201450d00200141f8036c2105200321010340200110ac01200141f8036a2101200541887c6a22050d000b0b2008a72201450d00200141f8036c450d00200310390b200241f8166a10af010b200241b0136a10af010c060b200241d81e6a200110ab0120022903d81e4209510d05200241b0136a200241d81e6a41c80310c30a1a200241d81e6a200110ab01024020022903d81e4209510d00200241f8166a200241d81e6a41c80310c30a1a200241d81e6a200110aa01024020022802d81e2203450d0020022902dc1e21080240200428020022054108490d002001280200220629000021152001200541786a3602042001200641086a360200200241a00c6a200241b0136a41c80310c30a1a200241a00c6a41c8036a200241f8166a41c80310c30a1a410321050c040b02402008422088a72201450d00200141f8036c2105200321010340200110ac01200141f8036a2101200541887c6a22050d000b0b2008a72201450d00200141f8036c450d00200310390b200241f8166a10af010b200241b0136a10af010c050b200241d81e6a200110a80120022d00d81e2105200241f8166a200241d81e6a41017241df0710c30a1a2005410b460d0441e00710382203450d06200320053a0000200341016a200241f8166a41df0710c30a1a200428020022054108490d012001280200220629000021082001200541786a3602042001200641086a360200410421050b20024190056a200241a00c6a41900710c30a1a200241b8266a41086a2201200241c0046a41086a290300370300200220022903c0043703b826200041106a20083702002000410c6a2003360200200041086a200536020020004124360200200041186a20024190056a41900710c30a1a200041a8076a2015370200200041b0076a20022903b826370200200041b8076a20012903003702000c0f0b200310d303200310390c020b200041253602000c0d0b200241f8166a10af010b200041253602000c0b0b1034000b1030000b200041253602000c080b200041253602000c070b200041253602000c060b200020043b00232000200a3a0022200020093a00212000200f3b000a200020113a000920004119360200200020022f00f8163b0029200041276a20034110763a0000200041256a20033b0000200041206a20054110763a00002000411e6a20053b0100200041286a20073a00002000411c6a200b3b0100200041146a2008370200200041106a200d3602002000410c6a200c360200200041086a20013a00002000412b6a200241fa166a2d00003a0000200041c0006a2015370200200041386a2017370200200041346a2010360200200041306a200e3602002000412c6a20063602000c050b200041253602000c040b200041253602000c030b200041186a20022903a00c370200200241c0046a41026a200241b0136a41026a2d000022013a0000200041206a200241a00c6a41086a290300370200200041286a200241a00c6a41106a290300370200200220022f01b013220b3b01c004200041e0006a2018370200200041d8006a2016370200200041c8006a2017370200200041c0006a2015370200200041386a2009ad4220862004ad84370200200041306a200aad4220862007ad843702002000410c6a20033a0000200041086a200d360200200041043602002000200b3b000d2000410f6a20013a0000200041d0006a2008370200200041146a2005360200200041106a20063602000c020b200041253602000c010b200041253602000b20024180276a24000bd90102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42c0077e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141c0076c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141c0076e360200200241206a24000f0b1034000be12601057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b200041046a10ad030f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21030340200228020021010240200241086a22042802002205450d00200110390b2002200136020020042005360200200241d0006a2102200341b07f6a22030d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002203450d00200341c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10c2010f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220028020010c601200028020010390f0b2000410c6a220028020010c601200028020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220028020010c601200028020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b200041b8016a10ad030f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b200041b8016a10ad030f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220028020010c601200028020010390f0b200041106a220028020010c601200028020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220028020010c601200028020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220028020010c601200028020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10c2010f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220028020010a601200028020010390f0b200041286a220028020010c601200028020010390f0b0bae0303027f017e037f230041d00b6b22032400024002402002200128020441e8036e2204200420024b1bad42e8037e2205422088a70d002005a72206417f4c0d000240024020060d00410821070c010b200610382207450d020b4100210420034100360210200320073602082003200641e8036e36020c0240024002402002450d00200341e8076a41017221080340200341e8076a200110c80120032d00e807210620034181046a200841e70310c30a1a2006410b460d022003411a6a20034181046a41e70310c30a1a02402004200328020c470d00200341086a200410c10120032802082107200328021021040b2007200441e8036c6a220420063a0000200441016a2003411a6a41e70310c30a1a2003200328021041016a22043602102002417f6a22020d000b0b20002003290308370200200041086a200341086a41086a2802003602000c010b200041003602002003280208210202402004450d00200441e8036c2106200221040340200410c201200441e8036a2104200641987c6a22060d000b0b200328020c2204450d00200441e8036c450d00200210390b200341d00b6a24000f0b1034000b1030000be31403057f027e017f230041900c6b2202240002400240200128020422030d002000410b3a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e0b000102030405060708090b0a0b200241a8086a200110aa0120022802a8082203450d13200241b0086a280200210520022802ac0821042002200110ad01024002402002280200450d00200241003602a8080c010b200241a8086a2001200228020410ae0120022802a8080d210b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d21200441f8036c450d21200310390c210b200241a8086a200110aa0120022802a8082203450d11200241b0086a280200210520022802ac082104200241086a200110ad01024002402002280208450d00200241003602a8080c010b200241a8086a2001200228020c10ae0120022802a8080d1f0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d20200441f8036c450d20200310390c200b200241a8086a200110aa0120022802a8082203450d0f200241b0086a280200210520022802ac082104200241106a200110ad01024002402002280210450d00200241003602a8080c010b200241a8086a2001200228021410ae0120022802a8080d1d0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d1f200441f8036c450d1f200310390c1f0b200241186a200110b0012002290318a70d11024020012802042203450d0020022903202107200128020022042d0000210520012003417f6a3602042001200441016a36020020050d00200241a8086a200110aa0120022802a8082201450d0020022902ac082108200041106a2007370300200041086a2008370000200041046a2001360000200041033a00000c1f0b2000410b3a00000c1e0b200241a8086a200110aa0120022802a8082203450d11200241a8086a41086a280200210520022802ac082104200241a8086a200110ab01024020022903a8084209510d00200041106a200241a8086a41c80310c30a1a2000410c6a2005360000200041086a2004360000200041046a2003360000200041043a00000c1e0b2000410b3a000002402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d1d200441f8036c450d1d200310390c1d0b200241c0046a200110aa0120022802c0042203450d11200241c8046a280200210520022802c4042104200241c0046a200110ab0120022903c0044209510d0a200241f8006a200241c0046a41c80310c30a1a200241286a200110ad01024002402002280228450d00200241003602c0040c010b200241c0046a2001200228022c10ae0120022802c0040d190b2000410b3a0000200241f8006a10af010c0b0b2006450d1120042d0001210520012003417e6a22063602042001200441026a36020041002109024002400240024020050e0403000102150b410121090c020b410221090c010b410321090b0240024020064108490d00200429000221072001200341766a36020420012004410a6a360200200241306a200110ad0120022802300d012001280204220420022802342203490d012003417f4c0d140240024020030d00410121050c010b200310382205450d0820054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200041186a2007370300200041106a41003a0000200041046a2005360100200020093a0001200041063a0000200041086a2003ad22074220862007843701000c1d0b2000410b3a00000c1c0b2000410b3a00000c1b0b200241c8006a200110ad0120022802480d12200228024c2103200241c0006a200110ad0120022802400d1320022802442104200241386a200110ad01024020022802380d00200228023c2101200041073a00002000410c6a2001360200200041086a2004360200200041046a20033602000c1b0b2000410b3a00000c1a0b200241d0006a200110ad01024020022802500d0020022802542101200041083a0000200041046a20013602000c1a0b2000410b3a00000c190b200241e8006a200110ad0120022802680d12200228026c2103200241e0006a200110ad0120022802600d1320022802642104200241d8006a200110ad01024020022802580d00200228025c2101200041093a00002000410c6a2001360200200041086a2004360200200041046a20033602000c190b2000410b3a00000c180b2000410b3a00000c170b200241a8086a200110ab0120022903a8084209510d01200241f8006a200241a8086a41c80310c30a1a200241a8086a200110c80120022d00a8082101200241c0046a200241a8086a41017241e70310c30a1a2001410b460d0341e803103822030d020b1030000b2000410b3a00000c140b200320013a0000200341016a200241c0046a41e70310c30a1a200041086a200241f8006a41c80310c30a1a200041046a20033602002000410a3a00000c130b2000410b3a0000200241f8006a10af010c120b2000410b3a00000b02402005450d00200541f8036c2100200321010340200110ac01200141f8036a2101200041887c6a22000d000b0b2004450d10200441f8036c450d10200310390c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b1034000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b200041106a20022903c004370200200041186a200241c0046a41086a280200360200200241a8086a41046a200241f8006a41c80310c30a1a200041053a0000200020022f00753b0001200041036a200241f7006a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600002000411c6a200241a8086a41cc0310c30a1a0c030b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041023a0000200020022f00c0043b0001200041036a200241c0046a41026a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000c020b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041013a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000c010b200041106a20022903a808370200200041186a200241a8086a41086a280200360200200041003a0000200020022f00c0043b0001200041036a200241c2046a2d00003a00002000410c6a2005360000200041086a2004360000200041046a20033600000b200241900c6a24000ba41508027f017e0f7f017e017f037e017f027e230041d0176b22032400024002400240024002400240200220012802002802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d0002400240024020040d00410821060c010b200410382206450d010b2001200128020441016a22073602042003410036024020032006360238200320044198046e220436023c200720012802084b0d042002450d03200341d8136a410c6a2108200341d8136a41046a2109200341e00f6a410472210a200341b8136a210b200341e00f6a410c6a210c410021074100210d0240034020012802002204280204220e450d012004280200220f2d000021102004200e417f6a3602042004200f41016a3602004100210e0240024002400240024002400240024002400240024002400240024002400240024020100e080300010205060708120b200341d8136a200110b90120032802d813220f450d0820032802e013210420032802dc132110200341d8136a200110ba01024020032903d81322054209510d0020032802e0132111200341cc086a200841bc0310c30a1a4101210e200f21122010211320042114200521150c030b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0e201041f8036c450d0e200f10390c0e0b200341e00f6a200110b90120032802e00f220f450d0720032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341086a200110bb01024002402003280208450d00200341003602e00f0c010b200341e00f6a2001200328020c10b80120032802e00f0d0b0b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d07201041f8036c450d07200f10390c070b200341d8136a200110b90120032802d813220f450d0620032802e013210420032802dc132110200341d8136a200110b90120032802d813450d0120032802e013211120032903d81321154103210e200f211220102113200421140b200341dc046a200341cc086a41cc0310c30a1a0c0c0b02402004450d00200441f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b4108210e410121042010450d0a201041f8036c450d0a200f10390c0a0b200341e00f6a200110b90120032802e00f220f450d0320032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341106a200110bb01024002402003280210450d00200341003602e00f0c010b200341e00f6a2001200328021410b80120032802e00f0d090b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d03201041f8036c450d03200f10390c030b200341e00f6a200110b90120032802e00f220f450d0220032802e80f211620032802e40f2110200341e00f6a200110ba01024020032903e00f4209510d00200341980c6a200341e00f6a41c80310c30a1a200341186a200110bb01024002402003280218450d00200341003602e00f0c010b200341e00f6a2001200328021c10b80120032802e00f0d070b200341980c6a10af010b02402016450d00201641f8036c210e200f21040340200410ac01200441f8036a2104200e41887c6a220e0d000b0b2010450d02201041f8036c450d02200f10390c020b200341206a200110bc014108210e410121042003290320a70d0720032903282105200341d8136a200110ba0120032903d8134209510d07200341e00f6a200341d8136a41c80310c30a1a200341d8136a200110b90120032802d813220f450d0220032802e013211420032802dc13211320032802e00f2111200341cc086a200a41c40310c30a1a4106210e41002104200f2112200521150c060b200341d8136a200110bd0120032802d813410c460d00200341e00f6a200341d8136a41f80310c30a1a024020012802002204280204220e4108490d002004280200220f29000021052004200e41786a3602042004200f41086a36020020012802002204280204220e4108490d002004280200220f29000021172004200e41786a3602042004200f41086a36020020012802002204280204220e450d002004280200220f2d000021102004200e417f6a3602042004200f41016a3602004100210f0240024020100e020100020b4101210f0b200341306a200110bb0120032802300d00200341d8136a2001200328023410a30120032802d8132210450d0020032802e013211420032802dc13211320032903e00f211520032802e80f2111200341cc086a200c41cc0310c30a1a200341a8086a41186a200b41186a290300370300200341a8086a41106a200b41106a290300370300200341a8086a41086a200b41086a2903003703002003200b2903003703a8084107210e41002104201021122017211820052119200f211a0c070b200341e00f6a10ac010b4108210e410121040c050b200341e00f6a10af010c040b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4102210e41002104200f211220102113201621140c020b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4105210e41002104200f211220102113201621140c010b20032802e80f211120032903e00f21152009200341980c6a41c80310c30a1a200341cc086a200341d8136a41cc0310c30a1a4104210e41002104200f211220102113201621140b0b200341dc046a200341cc086a41cc0310c30a1a200341b8046a41186a200341a8086a41186a290300370300200341b8046a41106a200341a8086a41106a290300370300200341b8046a41086a200341a8086a41086a290300370300200320032903a8083703b80420040d020b200d41016a210d200341ec006a200341dc046a41cc0310c30a1a200341c8006a41186a220f200341b8046a41186a290300370300200341c8006a41106a2210200341b8046a41106a290300370300200341c8006a41086a2216200341b8046a41086a290300370300200320032903b80437034802402007200328023c470d00200341386a200710b20120032802382106200328024021070b200620074198046c6a22042011360018200420153700102004201436000c20042013360008200420123600042004201a3a00012004200e3a00002004411c6a200341ec006a41cc0310c30a1a2016290300210520102903002117200f290300211b2003290348211c200420183700900420042019370088042004201c3700e80320044180046a201b370000200441f8036a2017370000200441f0036a20053700002003200328024041016a2207360240200d2002460d040c000b0b20004100360200200328023c21040c050b1030000b1034000b200128020421070b2000200329033837020020012007417f6a360204200041086a200341386a41086a2802003602000c020b200041003602000b200341386a10b3012004450d0020044198046c450d00200328023810390b200341d0176a24000be60303027f017e037f230041d0166b22032400024002400240024002402002200128020028020441c0076e2204200420024b1bad42c0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b200410382206450d020b2001200128020441016a220736020420034100360210200320063602082003200441c0076e36020c200720012802084b0d02024002402002450d00200341900f6a4104722108410021040340200341900f6a200110cb0120032802900f2107200341d4076a200841bc0710c30a1a20074125460d02200341186a200341d4076a41bc0710c30a1a02402004200328020c470d00200341086a200410c50120032802082106200328021021040b2006200441c0076c6a22042007360200200441046a200341186a41bc0710c30a1a2003200328021041016a22043602102002417f6a22020d000b200128020421070b2000200329030837020020012007417f6a360204200041086a200341086a41086a2802003602000c050b20004100360200200328020821062004450d03200441c0076c2107200621040340200410c601200441c0076a2104200741c0786a22070d000c040b0b1034000b1030000b200041003602000b200328020c2204450d00200441c0076c450d00200610390b200341d0166a24000bfc85030f057f017e067f017e027f027e027f017e1c7f017e2e7f047e1a7f027e757f230041c02a6b22022400024002402001280200220328020422040d00200041253602000c010b200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e640001020304250506250708090a250b0c0d0e0f101112131415161718191a1b1c25252525252525251d1e1f252525252525252525252525252525252525252525252525252525252525252525252525252021252525252525252522232525252525252524250b200128020022032802042204450d49200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024002400240024002400240024020060e0a00010203040506070809570b2001280200220128020422044104490d5620012802002205280000210320012004417c6a3602042001200541046a3602002003418194ebdc034f0d56410121010c0c0b2002200110bb0120022802000d5520012802002204280204220520022802042201490d552001417f4c0d330240024020010d00410121030c010b200110382203450d3d20034100200110c50a1a200428020421050b20052001490d08200320042802002206200110c30a1a2004200520016b3602042004200620016a3602002001ad22074220862007842107410221010c0a0b2001280200220328020422014108490d542003280200220429000021072003200141786a3602042003200441086a360200410321010c0a0b200241086a200110bb0120022802080d53200128020022042802042205200228020c2201490d532001417f4c0d310240024020010d00410121030c010b200110382203450d3b20034100200110c50a1a200428020421050b20052001490d06200320042802002206200110c30a1a2004200520016b3602042004200620016a3602002001ad22074220862007842107410421010c080b200241106a200110bb0120022802100d5220012802002204280204220520022802142201490d522001417f4c0d300240024020010d00410121030c010b200110382203450d3a20034100200110c50a1a200428020421050b20052001490d05200320042802002206200110c30a1a2004200520016b3602042004200620016a3602002001ad22074220862007842107410521010c070b200241c81e6a200110f60720022802c81e22034102460d5120022902cc1e2107410621010c060b200241286a200110bb0120022802280d50200228022c2208200128020028020441186e2203200320084b1bad42187e2207422088a70d2e2007a72204417f4c0d2e0240024020040d00410421030c010b200410382203450d380b2001200128020441016a2205360204200241003602d01e200220033602c81e2002200441186e3602cc1e0240200520012802084d0d0020022802c81e21040c500b02402008450d00410021090340200241206a200110bb010240024020022802200d0020012802002205280204220620022802242204490d002004417f4c0d320240024020040d004101210a0c010b20041038220a450d3c200a4100200410c50a1a2001280200220528020421060b024020062004490d00200a2005280200220b200410c30a210c2005200620046b3602042005200b20046a360200200241186a200110bb01024020022802180d0020012802002206280204220b200228021c2205490d002005417f4c0d340240024020050d004101210d0c010b20051038220d450d3e200d4100200510c50a1a20012802002206280204210b0b200b20054f0d03200d10390b2004450d010b200a10390b20022802c81e21042009450d52200941186c21012004210303400240200341046a280200450d00200328020010390b0240200341106a280200450d002003410c6a28020010390b200341186a2103200141686a2201450d530c000b0b2005ad22074220862007842107200d2006280200220a200510c30a210d2006200b20056b3602042006200a20056a3602000240200920022802cc1e470d00200241c81e6a200910f00720022802c81e210320022802d01e21090b2003200941186c6a220520043602042005200c360200200541106a20073702002005410c6a200d360200200541086a2004360200200220022802d01e41016a22093602d01e2008417f6a22080d000b2001280204210520022802c81e21030b20012005417f6a3602042003450d5020022902cc1e2107410721010c050b200241c81e6a200110bc0320022802c81e2203450d4f20022902cc1e2107410821010c040b200241306a200110bb0120022802300d4e20012802002205280204220620022802342204490d4e2004417f4c0d2c0240024020040d00410121030c010b200410382203450d3620034100200410c50a1a200528020421060b20062004490d01200320052802002208200410c30a1a2005200620046b3602042005200820046a36020002402001280200220128020422054104490d002004ad2207422086200784210720012802002206280000210420012005417c6a3602042001200641046a360200410921010c050b20040d010c4e0b200241386a200110bb0120022802380d4d200128020022042802042205200228023c2201490d4d2001417f4c0d2b0240024020010d00410121030c010b200110382203450d3520034100200110c50a1a200428020421050b200520014f0d010b200310390c4c0b200320042802002206200110c30a1a2004200520016b3602042004200620016a3602002001ad22074220862007842107410a21010b0b20004100360200200041186a2004360200200041106a20073702002000410c6a2003360200200041086a20013602000c4a0b200128020022032802042204450d45200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e03000103490b200241c81e6a2001109504200241d41e6a2802002204450d48200220022800c91e3602800c200220022800cc1e3600830c200241d81e6a2802002105200241dc1e6a280200210320022d00c81e210a20022802d01e2109200241f0046a200241e01e6a41e40010c30a1a200241cc1f6a2802002108200241c81e6a4180016a2802002106200241c41f6a280200210b200241e8166a200241d01f6a41800110c30a1a200241c81e6a200110f707024020022802cc1e450d00200220022802800c3602e004200220022800830c3600e304200241d41e6a290200210e20022902cc1e210720022802c81e2101200241a0136a200241f0046a41e40010c30a1a200241900c6a200241e8166a41800110c30a1a4101210d0c4a0b02402003450d00200341246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d00200410390b02402008450d00200841246c2101200b210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2006450d48200641246c0d010c480b200241c81e6a2001109504200241d41e6a2802002204450d47200220022800c91e3602800c200220022800cc1e3600830c200241d81e6a2802002105200241dc1e6a280200210320022d00c81e210a20022802d01e2109200241f0046a200241e01e6a41e40010c30a1a200241cc1f6a2802002108200241c81e6a4180016a2802002106200241c41f6a280200210b200241e8166a200241d01f6a41800110c30a1a200241c81e6a200110f707024020022802cc1e450d00200220022802800c3602e004200220022800830c3600e304200241d41e6a290200210e20022902cc1e210720022802c81e2101200241a0136a200241f0046a41e40010c30a1a200241900c6a200241e8166a41800110c30a1a4102210d0c490b02402003450d00200341246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d00200410390b02402008450d00200841246c2101200b210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2006450d47200641246c450d470b200b10390c460b200128020022032802042204450d45200328020022012d0000210520032004417f6a22063602042003200141016a36020020054101470d4520064108490d45200129000121072003200441776a22053602042003200141096a36020020054108490d452001290009210e20032004416f6a22053602042003200141116a3602002005450d4520012d0011210c20032004416e6a3602042003200141126a3602004103210d4100210a02400240200c0e03480001470b4101210a0c470b4102210a0c460b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241c0006a200110bc012002290340a70d002002290348210720004102360200200041086a20073703000c490b200041253602000c480b0240200128020022032802042204450d00200328020022062d0000210120032004417f6a22083602042003200641016a3602000240024002400240024002400240024020010e050001020304080b20084104490d072006280001210f20032004417b6a3602042003200641056a360200410121040c040b200241c81e6a410472210a41002101417e2105034020082001460d07200620016a220b41016a2d000021092003200420056a3602042003200b41026a360200200a20016a20093a00002005417f6a2105200141016a220b2101200b4120470d000b200241d81e6a2802002110200241dc1e6a3100002107200241dd1e6a3100002111200241de1e6a3100002112200241df1e6a2800002105200241e31e6a2d00002108200241e41e6a2d00002109200241e51e6a2d0000210a200241e61e6a280100210d200241ea1e6a2d0000210c200241eb1e6a2d0000211320022802cc1e21012002200241c81e6a41086a290300220e3702ec16200220013602e816200b417f7320046a4104490d0620022800eb16210f2006200b6a221441016a280000210620032004200b6b417b6a3602042003201441056a36020020124238862011423086842007422886842010ad42088684200e4238888421072001410876210b200e421888a72110410221040c040b20084104490d052006280001210f20032004417b6a3602042003200641056a360200410321040c020b200241c81e6a410472210a41002101417e2105034020082001460d05200620016a220b41016a2d000021092003200420056a3602042003200b41026a360200200a20016a20093a00002005417f6a2105200141016a220b2101200b4120470d000b200241df1e6a2800002105200241e31e6a2d00002108200241e41e6a2d00002109200241e51e6a2d0000210a200241e61e6a280100210d200241ea1e6a2d0000210c200241eb1e6a2d00002113200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21012002200241c81e6a41086a290300220e3702ec16200220013602e816200b417f7320046a4104490d0420022800eb16210f2006200b6a221441016a280000210620032004200b6b2216417b6a3602042003201441056a22173602002004417b6a200b460d042012423886201542308684201142288684200742088684200e4238888421072001410876210b200e421888a7211020172d0000211720032016417a6a3602042003201441066a3602004104210441002103024020170e020400050b410121030c030b20084104490d032006280001210f20032004417b6a360204410521042003200641056a3602000b0b0b200020033a00252000200c3a00232000200d36001f2000200a3a001e200020093a001d2000200b3b0006200020013a0005200020043a000420004103360200200041286a2006360200200041246a20133a00002000411c6a20083a0000200041186a2005360200200041106a20073702002000410c6a2010360200200041086a200f3602000c480b200041253602000c470b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024020060e0400010203060b200241c81e6a200110810220022d00c81e22034105460d05200241f0046a41026a220620022d00cb1e3a0000200241e8166a41086a2208200241dc1e6a290200370300200241e8166a41106a220b200241e41e6a290200370300200220022f00c91e3b01f0042002200241d41e6a2902003703e816200241c81e6a41086a280200210420022802cc1e2105200241d0006a2001108f0302402002290350a70d00200241d0006a41106a29030021072002290358210e200241a0136a41026a20062d00003a0000200241900c6a41086a2008290300370300200241900c6a41106a200b290300370300200220022f01f0043b01a013200220022903e8163703900c200e422088a7210b2007422088a72109200ea721062007a72108410121010c480b20034102470d0520040d040c050b200241c81e6a200110810220022d00c81e22034105460d04200241f0046a41026a20022d00cb1e3a0000200241e8166a41086a200241dc1e6a290200370300200241e8166a41106a200241e41e6a290200370300200220022f00c91e3b01f0042002200241d41e6a2902003703e816200241c81e6a41086a280200210420022802cc1e210520024180016a2001108f03200229038001a70d0220024180016a41106a29030021072002290388012112200241e8006a2001108f032002290368a70d02200241e8006a41106a29030021112002290370210e41022101200241a0136a41026a200241f0046a41026a2d00003a0000200241900c6a41086a200241e8166a41086a290300370300200241900c6a41106a200241e8166a41106a290300370300200220022f01f0043b01a013200220022903e8163703900c2012422088a7210b2007422088a721092012a721062007a721080c460b200241c81e6a200110810220022d00c81e22034105460d03200241f2046a20022d00cb1e3a0000200241e8166a41086a200241dc1e6a290200370300200241e8166a41106a200241e41e6a290200370300200220022f00c91e3b01f0042002200241d41e6a22062902003703e816200241c81e6a41086a2208280200210420022802cc1e2105200241c81e6a2001108102024020022d00c81e4105460d00200241e01e6a2903002111200241c81e6a41106a290300210e200241e81e6a3502002107200628020021092008280200210820022802cc1e210b20022802c81e210620024198016a2001108f030240200229039801a70d0020024198016a41106a290300211520022903a0012112200241a0136a41026a200241f0046a41026a2d00003a0000200241900c6a41086a200241e8166a41086a290300370300200241900c6a41106a200241e8166a41106a290300370300200220022f01f0043b01a013200220022903e8163703900c410321010c470b200641ff01714102470d002008450d00200b10390b20034102470d0320040d020c030b200241c81e6a200110810220022d00c81e22034105460d02200241f0046a41026a220620022d00cb1e3a0000200241e8166a41086a2208200241dc1e6a290200370300200241e8166a41106a220b200241e41e6a290200370300200220022f00c91e3b01f0042002200241d41e6a2902003703e816200241c81e6a41086a280200210420022802cc1e2105200241b0016a2001108f03024020022903b001a70d00200241b0016a41106a290300210720022903b801210e200241a0136a41026a20062d00003a0000200241900c6a41086a2008290300370300200241900c6a41106a200b290300370300200220022f01f0043b01a013200220022903e8163703900c200e422088a7210b2007422088a72109200ea721062007a72108410421010c450b20034102470d0220040d010c020b20034102470d012004450d010b200510390b200041253602000c460b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241c81e6a200110b80320022802c81e2203450d00200041086a20022902cc1e37020020002003360204200041053602000c460b200041253602000c450b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c440b024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020041022118024020060e020003010b200241c81e6a410472210b2001280200220328020421044100210503402004450d01200328020022082d0000210620032004417f6a22043602042003200841016a360200200b20056a20063a00002002200541016a22063602c81e2006210520064120470d000b200241b4266a41026a200241d51e6a2d00003a0000200241b0266a41026a200241dc1e6a2d00003a0000200220022f01cc1e3b01b826200220022d00ce1e3a00ba262002200241d31e6a2f00003b01b4262002200241da1e6a2f01003b01b026200241c81e6a41206a2802002110200241e41e6a280200210f200241dd1e6a2800002113200241d61e6a280100210c20022800cf1e210d200241ac266a41026a200241e31e6a2d00003a00002002200241e11e6a2f00003b01ac262004417f6a2105200241c81e6a410472210a41002106034020042006460d01200820066a220b41016a2d00002109200320053602042003200b41026a360200200a20066a20093a00002002200641016a220b3602c81e2005417f6a2105200b2106200b4120470d000b200241c4266a41026a200241d51e6a2d00003a0000200241c0266a41026a200241dc1e6a2d00003a0000200220022f01cc1e3b01c826200220022d00ce1e3a00ca262002200241d31e6a2f00003b01c4262002200241da1e6a2f01003b01c026200241c81e6a41206a2802002119200241e41e6a2802002117200241dd1e6a2800002116200241d61e6a280100211420022800cf1e210a200241bc266a41026a200241e31e6a2d00003a00002002200241e11e6a2f00003b01bc2641002104200241003602c81e2008200b6a210b200241c81e6a410472210903402005417f460d01200b20046a220641016a2d00002108200320053602042003200641026a360200200920046a20083a00002002200441016a22063602c81e2005417f6a21052006210420064120470d000b200241d4266a41026a200241d51e6a2d00003a0000200241d0266a41026a200241dc1e6a2d00003a0000200220022f01cc1e3b01d826200220022d00ce1e3a00da262002200241d31e6a2f00003b01d4262002200241da1e6a2f01003b01d026200241c81e6a41206a280200211a200241e41e6a280200211b200241dd1e6a280000211c200241d61e6a280100211d20022800cf1e2109200241cc266a41026a200241e31e6a2d00003a00002002200241e11e6a2f00003b01cc2641002108200241003602c81e200b20066a41016a2104200241c81e6a410472210b03402005417f460d0120042d00002106200320053602042003200441016a2204360200200b20086a20063a00002002200841016a22063602c81e2005417f6a21052006210820064120470d000b200241e4266a41026a200241d51e6a2d00003a0000200241e0266a41026a200241dc1e6a2d00003a0000200220022f01cc1e3b01e826200220022d00ce1e3a00ea262002200241d31e6a2f00003b01e4262002200241da1e6a2f01003b01e026200241c81e6a41206a280200211e200241e41e6a280200211f200241dd1e6a2800002120200241d61e6a280100212120022800cf1e210b200241dc266a41026a200241e31e6a2d00003a00002002200241e11e6a2f00003b01dc2641002106200241003602c81e200241c81e6a410472212203402005417f460d0120042d00002108200320053602042003200441016a2204360200202220066a20083a00002002200641016a22083602c81e2005417f6a21052008210620084120470d000b200241df1e6a2800002123200241e31e6a2d00002124200241e41e6a2d00002125200241e51e6a2d00002126200241e61e6a2801002127200241ea1e6a2d00002128200241eb1e6a2d00002129200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21082002200241c81e6a41086a290300220e3702f404200220083602f00420022800f304212a41002106200241003602c81e2012423886201542308684201142288684200742088684200e42388884210720084108762122200e421888a7212b200241c81e6a410472212c03402005417f460d0120042d0000212d200320053602042003200441016a2204360200202c20066a202d3a00002002200641016a222d3602c81e2005417f6a2105202d2106202d4120470d000b200241df1e6a2800002105200241e31e6a2d0000212d200241e41e6a2d0000212c200241e51e6a2d0000212e200241e61e6a280100212f200241ea1e6a2d00002130200241eb1e6a2d00002131200241c81e6a41106a3502002111200241dc1e6a3100002112200241de1e6a3100002115200241dd1e6a310000213220022802cc1e21032002200241c81e6a41086a290300220e3702f404200220033602f00420022800f3042104200241c81e6a200110f90520022d00c81e4101460d0020024188176a200241e91e6a2d00003a000020024180176a200241e11e6a290000370300200241e8166a41106a200241d91e6a290000370300200241e8166a41086a200241d11e6a290000370300200241800c6a41026a200241b4266a41026a2d00003a0000200220022900c91e3703e816200220022f01b8263b01a013200220022d00ba263a00a213200220022f01b4263b01800c200241e0046a41026a200241b0266a41026a2d00003a0000200220022f01b0263b01e004200241d8046a41026a200241ac266a41026a2d00003a0000200220022f01ac263b01d804200220022d00ca263a00ba2a200220022f01c8263b01b82a200241b42a6a41026a200241c4266a41026a2d00003a0000200220022f01c4263b01b42a200241b02a6a41026a200241c0266a41026a2d00003a0000200220022f01c0263b01b02a200241ac2a6a41026a200241bc266a41026a2d00003a0000200220022f01bc263b01ac2a200220022d00da263a00aa2a200220022f01d8263b01a82a200241a42a6a41026a200241d4266a41026a2d00003a0000200220022f01d4263b01a42a200241a02a6a41026a200241d0266a41026a2d00003a0000200220022f01d0263b01a02a2002419c2a6a41026a200241cc266a41026a2d00003a0000200220022f01cc263b019c2a200220022d00ea263a009a2a200220022f01e8263b01982a200241942a6a41026a200241e4266a41026a2d00003a0000200220022f01e4263b01942a200241902a6a41026a200241e0266a41026a2d00003a0000200220022f01e0263b01902a2002418c2a6a41026a200241dc266a41026a2d00003a0000200220022f01dc263b018c2a200241c8016a200110bb0120022802c8010d0020012802002206280204221820022802cc012201490d002001417f4c0d230240024020010d00410121330c010b200110382233450d2d20334100200110c50a1a200628020421180b201820014f0d01203310390b200041253602000c450b2015423886203242308684201242288684201142088684200e42388884211120034108762134200e421888a72135203320062802002236200110c30a1a2006201820016b3602042006203620016a360200200241882a6a41026a20022d00a2133a0000200241842a6a41026a200241800c6a41026a2d00003a0000200241802a6a41026a200241e0046a41026a2d00003a0000200241fc296a41026a200241d8046a41026a2d00003a0000200241f8296a41026a20022d00ba2a3a0000200220022f01a0133b01882a200220022f01800c3b01842a200220022f01e0043b01802a200220022f01d8043b01fc29200220022f01b82a3b01f829200241f4296a41026a200241b42a6a41026a2d00003a0000200241f0296a41026a200241b02a6a41026a2d00003a0000200241ec296a41026a200241ac2a6a41026a2d00003a0000200241e8296a41026a20022d00aa2a3a0000200241e4296a41026a200241a42a6a41026a2d00003a0000200220022f01b42a3b01f429200220022f01b02a3b01f029200220022f01ac2a3b01ec29200220022f01a82a3b01e829200220022f01a42a3b01e429200241e0296a41026a200241a02a6a41026a2d00003a0000200220022f01a02a3b01e029200241dc296a41026a2002419c2a6a41026a2d00003a0000200220022f019c2a3b01dc29200241d8296a41026a20022d009a2a3a0000200220022f01982a3b01d829200241d4296a41026a200241942a6a41026a2d00003a0000200220022f01942a3b01d429200241d0296a41026a200241902a6a41026a2d00003a0000200220022f01902a3b01d029200241cc296a41026a2002418c2a6a41026a2d00003a0000200220022f018c2a3b01cc29200241900c6a41206a200241e8166a41206a2d00003a0000200241900c6a41186a200241e8166a41186a290300370300200241900c6a41106a200241e8166a41106a290300370300200241900c6a41086a200241e8166a41086a290300370300200220022903e8163703900c2001ad220e422086200e84210e410121180b200020183a0004200020022f01882a3b0005200020022f01802a3b0013200020022f01fc293b001a200041086a200d3600002000410c6a20022f01842a3b00002000410f6a200c360000200041166a2013360000200041076a200241882a6a41026a2d00003a00002000410e6a200241842a6a41026a2d00003a0000200041156a200241802a6a41026a2d00003a00002000411c6a200241fc296a41026a2d00003a0000200041216a20103600002000411d6a200f360000200041286a200a3600002000412f6a2014360000200041366a2016360000200020022f01f8293b0025200041276a200241f8296a41026a2d00003a00002000412e6a200241f4296a41026a2d00003a00002000412c6a20022f01f4293b0000200041356a200241f0296a41026a2d00003a0000200020022f01f0293b0033200020022f01ec293b003a2000413c6a200241ec296a41026a2d00003a0000200041c1006a20193600002000413d6a2017360000200041c7006a200241e8296a41026a2d00003a0000200020022f01e8293b0045200041c8006a2009360000200041ce006a200241e4296a41026a2d00003a0000200041cc006a20022f01e4293b0000200041cf006a201d360000200041d5006a200241e0296a41026a2d00003a0000200020022f01e0293b0053200041d6006a201c360000200041dc006a200241dc296a41026a2d00003a0000200020022f01dc293b005a200041e1006a201a360000200041dd006a201b360000200041e7006a200241d8296a41026a2d00003a0000200020022f01d8293b0065200041e8006a200b360000200041ee006a200241d4296a41026a2d00003a0000200041ec006a20022f01d4293b0000200041ef006a2021360000200041f5006a200241d0296a41026a2d00003a0000200020022f01d0293b0073200041f6006a2020360000200041fc006a200241cc296a41026a2d00003a0000200020022f01cc293b007a200041c4016a20313a0000200020303a00c3012000202f3600bf012000202e3a00be012000202c3a00bd01200041bc016a202d3a0000200041b8016a2005360000200041b0016a2011370000200041ac016a2035360000200041a8016a2004360000200020343b00a601200020033a00a501200041a4016a20293a0000200020283a00a3012000202736009f01200020263a009e01200020253a009d012000419c016a20243a000020004198016a202336000020004190016a20073700002000418c016a202b36000020004188016a202a360000200020223b008601200020083a00850120004181016a201e360000200041fd006a201f360000200041ec016a200e370100200041e8016a2033360100200041e5016a200241b00c6a2d00003a0000200041dd016a200241a80c6a290300370000200041d5016a200241a00c6a290300370000200041cd016a200241900c6a41086a290300370000200020022903900c3700c501200041073602000c430b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e03000102040b200241e8166a200110970420022903f0164202510d03200241900c6a200241e8166a41800210c30a1a200241e8166a200110f70720022802ec162203450d03200241d01e6a200241f8166a280200360200200220022903f0163703c81e20022802e8162104200241d41e6a200241900c6a41800210c30a1a410121010c020b200241e8166a200110970420022903f0164202510d02200241900c6a200241e8166a41800210c30a1a200241e8166a200110f70720022802ec162203450d02200241d01e6a200241f8166a280200360200200220022903f0163703c81e20022802e8162104200241d41e6a200241900c6a41800210c30a1a410221010c010b2001280200220328020422054104490d0120032802002206280000210420032005417c6a3602042003200641046a3602002001280200220128020422054104490d0120012802002206280000210320012005417c6a3602042001200641046a360200410321010b200041146a200241c81e6a418c0210c30a1a200041106a20033602002000410c6a2004360200200041086a2001360200200041083602000c430b200041253602000c420b200128020022032802042204450d3b200328020022052d0000210620032004417f6a3602042003200541016a36020020060d3b2001280200220328020422044104490d3b20032802002205280000210620032004417c6a3602042003200541046a360200200241e0016a200110bb0120022802e0010d3b20012802002204280204220520022802e4012203490d3b2003417f4c0d1e0240024020030d00410121080c010b200310382208450d2820084100200310c50a1a200428020421050b0240200520034f0d00200810390c3c0b20082004280200220b200310c30a21132004200520036b3602042004200b20036a360200200241d8016a200110bb0120022802d8010d3a20022802dc0122092001280200280204410c6e2204200420094b1bad420c7e2207422088a70d1e2007a72204417f4c0d1e0240024020040d004104210d0c010b20041038220d450d280b2001200128020441016a220536020441002108200241003602d01e2002200d3602c81e20022004410c6e22043602cc1e0240200520012802084d0d0020022802c81e21050c3a0b02402009450d00410021080340200241d0016a200110bb010240024020022802d0010d0020012802002205280204220b20022802d4012204490d002004417f4c0d220240024020040d004101210a0c010b20041038220a450d2c200a4100200410c50a1a20012802002205280204210b0b200b20044f0d01200a10390b20022802c81e21052008450d3c2008410c6c21042005210103400240200141046a280200450d00200128020010390b2001410c6a2101200441746a2204450d3d0c000b0b2004ad22074220862007842107200a2005280200220c200410c30a210a2005200b20046b3602042005200c20046a3602000240200820022802cc1e470d00200241c81e6a200810b70320022802c81e210d20022802d01e21080b200d2008410c6c6a220420073702042004200a360200200220022802d01e41016a22083602d01e2009417f6a22090d000b2001280204210520022802cc1e210420022802c81e210d0b20012005417f6a360204200d450d3a0240024020012802002205280204220b4104490d0020052802002209280000210c2005200b417c6a3602042005200941046a36020020012802002205280204220b4104490d0020052802002209280000210f2005200b417c6a3602042005200941046a36020020012802002205280204220b41034b0d010b02402003450d00201310390b02402008450d002008410c6c2101200d210303400240200341046a280200450d00200328020010390b2003410c6a2103200141746a22010d000b0b2004450d3c2004410c6c0d390c3c0b2005280200220928000021102005200b417c6a3602042005200941046a360200200241003602c81e2001280200210141c000210b03400240200128020422050d0002402003450d00201310390b02402008450d002008410c6c2101200d210303400240200341046a280200450d00200328020010390b2003410c6a2103200141746a22010d000b0b2004450d3d2004410c6c450d3d0c3a0b200128020022092d0000210a2001200941016a36020020012005417f6a36020420022802c81e220541c0004f0d20200241c81e6a20056a41046a200a3a00002002200541016a3602c81e200b417f6a220b0d000b2005413f490d26200241900c6a41026a2201200241d51e6a2d00003a0000200220022f01cc1e3b01e816200220022d00ce1e3a00ea162002200241d31e6a2f00003b01900c200241801f6a2802002105200241c81e6a413c6a2902002107200241f91e6a280000210b200241f21e6a2801002109200241eb1e6a280000210a200241c81e6a411c6a2802002114200241dd1e6a2800002116200241d61e6a280100211720022800cf1e2119200241f0046a41026a221d200241c81e6a41146a2d00003a0000200241a0136a41026a221c200241e31e6a2d00003a0000200241800c6a41026a221b200241ea1e6a2d00003a0000200241e0046a41026a221a200241f11e6a2d00003a0000200241d8046a41026a2221200241f81e6a2d00003a00002002200241da1e6a2f01003b01f0042002200241e11e6a2f00003b01a0132002200241c81e6a41206a2f01003b01800c2002200241ef1e6a2f00003b01e0042002200241c81e6a412e6a2f01003b01d804200241b82a6a41026a2220200241ff1e6a2d00003a00002002200241c81e6a41356a2f00003b01b82a200041286a2010360200200041246a200f360200200041206a200c3602002000411c6a2008360200200041186a2004360200200041146a200d360200200041106a20033602002000410c6a2003360200200041086a2013360200200020063602042000412c6a20022f01e8163b01002000412e6a20022d00ea163a00002000412f6a2019360000200020022f01900c3b0033200041356a20012d00003a0000200020173600362000413c6a201d2d00003a0000200020022f01f0043b003a2000201636003d200041c3006a201c2d00003a0000200020022f01a0133b0041200041c4006a2014360000200041ca006a201b2d00003a0000200041c8006a20022f01800c3b00002000200a36004b200041d1006a201a2d00003a0000200020022f01e0043b004f20002009360052200041d8006a20212d00003a0000200020022f01d8043b00562000200b360059200041df006a20202d00003a0000200020022f01b82a3b005d200041e4006a2007370000200041e0006a2005360000200041093602000c410b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c400b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272a0b2001280200220128020422044104490d2920012802002205280000210320012004417c6a3602042001200541046a360200410121040c270b2001280200220128020422044104490d2820012802002205280000210320012004417c6a3602042001200541046a360200410221040c260b2001280200220128020422044104490d2720012802002205280000210320012004417c6a3602042001200541046a360200410321040c250b410421042001280200220128020422054104490d2620012802002206280000210320012005417c6a3602042001200641046a3602000c240b2001280200220128020422044104490d2520012802002205280000210320012004417c6a3602042001200541046a360200410521040c230b2001280200220128020422044104490d2420012802002205280000210320012004417c6a3602042001200541046a360200410621040c220b2001280200220128020422044104490d2320012802002205280000210320012004417c6a3602042001200541046a360200410721040c210b2001280200220128020422044104490d2220012802002205280000210320012004417c6a3602042001200541046a360200410821040c200b2001280200220128020422044104490d2120012802002205280000210320012004417c6a3602042001200541046a360200410921040c1f0b2001280200220128020422044104490d2020012802002205280000210320012004417c6a3602042001200541046a360200410a21040c1e0b2001280200220128020422044104490d1f20012802002205280000210320012004417c6a3602042001200541046a360200410b21040c1d0b2001280200220128020422044104490d1e20012802002205280000210320012004417c6a3602042001200541046a360200410c21040c1c0b200128020022012802042204450d1d200128020022052d0000210620012004417f6a220b3602042001200541016a360200410021030240024020060e0201001f0b200b4104490d1e2005280001210820012004417b6a3602042001200541056a360200410121030b2008ad21074200210e410d21040c1c0b200128020022012802042204450d1c200128020022052d0000210620012004417f6a220b3602042001200541016a360200410021030240024020060e0201001e0b200b4104490d1d2005280001210820012004417b6a3602042001200541056a360200410121030b2008ad21074200210e410e21040c1b0b2001280200220128020422044104490d1b20012802002205280000210320012004417c6a3602042001200541046a360200410f21040c190b2001280200220128020422044104490d1a20012802002205280000210320012004417c6a3602042001200541046a360200411021040c180b2001280200220128020422044104490d1920012802002205280000210320012004417c6a3602042001200541046a360200411121040c170b2001280200220128020422044104490d1820012802002205280000210320012004417c6a3602042001200541046a360200411221040c160b2001280200220128020422044104490d1720012802002205280000210320012004417c6a3602042001200541046a360200411321040c150b2001280200220128020422044104490d1620012802002205280000210320012004417c6a3602042001200541046a360200411421040c140b2001280200220128020422044104490d1520012802002205280000210320012004417c6a3602042001200541046a360200411521040c130b2001280200220128020422044104490d1420012802002205280000210320012004417c6a3602042001200541046a360200411621040c120b2001280200220128020422044104490d1320012802002205280000210320012004417c6a3602042001200541046a360200411721040c110b2001280200220128020422044104490d1220012802002205280000210320012004417c6a3602042001200541046a360200411821040c100b2001280200220128020422044104490d1120012802002205280000210320012004417c6a3602042001200541046a360200411921040c0f0b2001280200220128020422044104490d1020012802002205280000210320012004417c6a3602042001200541046a360200411a21040c0e0b2001280200220328020422014108490d0f2003280200220429000021072003200141786a3602042003200441086a3602004200210e411b21040c0e0b2001280200220128020422044104490d0e20012802002205280000210320012004417c6a3602042001200541046a360200411c21040c0c0b2001280200220128020422044104490d0d20012802002205280000210320012004417c6a3602042001200541046a360200411d21040c0b0b2001280200220128020422044104490d0c20012802002205280000210320012004417c6a3602042001200541046a360200411e21040c0a0b2001280200220328020422014110490d0b2003200141706a36020420032003280200220141106a360200200141086a290000210e20012900002107411f21040c0a0b2001280200220328020422014110490d0a2003200141706a36020420032003280200220141106a360200200141086a290000210e20012900002107412021040c090b2001280200220128020422044104490d0920012802002205280000210320012004417c6a3602042001200541046a360200412121040c070b2001280200220128020422044104490d0820012802002205280000210320012004417c6a3602042001200541046a360200412221040c060b2001280200220128020422044104490d0720012802002205280000210320012004417c6a3602042001200541046a360200412321040c050b2001280200220128020422044104490d0620012802002205280000210320012004417c6a3602042001200541046a360200412421040c040b2001280200220128020422044104490d0520012802002205280000210320012004417c6a3602042001200541046a360200412521040c030b2001280200220128020422044104490d0420012802002205280000210320012004417c6a3602042001200541046a360200412621040c020b2001280200220128020422044104490d0320012802002205280000210320012004417c6a3602042001200541046a360200412721040c010b2001280200220128020422044104490d0220012802002205280000210320012004417c6a3602042001200541046a360200412821040b0b2000410b360200200041186a200e370200200041106a20073702002000410c6a2003360200200041086a20043602000c400b200041253602000c3f0b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c3e0b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c3d0b200128020022032802042204450d32200328020022052d0000210620032004417f6a3602042003200541016a36020020060d3220024188026a200110bb012002280288020d32200228028c02220b200128020028020441d0006e22032003200b4b1bad42d0007e2207422088a70d192007a72203417f4c0d190240024020030d004104210d0c010b20031038220d450d230b2001200128020441016a22043602044100210a200241003602980c2002200d3602900c2002200341d0006e220c3602940c0240200420012802084d0d0020022802900c21080c320b0240200b450d00200241ff1e6a2117200241f81e6a2119200241f11e6a211d200241ea1e6a211c200241e31e6a211b200241dc1e6a211a200241d51e6a21214100210a410021090340200241c81e6a200110e0050240024020022802c81e220c450d0020022902cc1e210702402001280200220328020422044104490d00200941016a210920032802002205280000211320032004417c6a3602042003200541046a360200200241003602c81e2001280200210341c0002105034020032802042204450d01200328020022082d000021062003200841016a36020020032004417f6a36020420022802c81e220441c0004f0d21200241c81e6a20046a41046a20063a00002002200441016a3602c81e2005417f6a22050d000b2004413f4f0d02419fd2ca00411b41bcd2ca001035000b2007428080808010540d00200c10390b20022802900c2108200a450d34200a41d0006c2104200821030340200328020021010240200341086a22052802002206450d00200110390b2003200136020020052006360200200341d0006a2103200441b07f6a2204450d350c000b0b20022f01cc1e20022d00ce1e41107472210420022f00fd1e20172d000041107472210520022f01f61e20192d000041107472210620022f00ef1e201d2d000041107472210820022f01e81e201c2d000041107472210f20022f00e11e201b2d000041107472211020022f01da1e201a2d000041107472211420022f00d31e20212d000041107472211620022902841f210e20022802801f212020022800f91e211f20022801f21e211e20022800eb1e212220022802e41e212a20022800dd1e212b20022801d61e212320022800cf1e21240240200a20022802940c470d00200241900c6a200a10b80520022802900c210d20022802980c210a0b200d200a41d0006c6a220320053b0041200320063b003a200320083b00332003200f3b002c200320103b0025200320143b001e200320163b0017200320043b01102003200e370048200320203600442003201f36003d2003201e3600362003202236002f2003202a3600282003202b3600212003202336001a200320243600132003201336020c200320073702042003200c360200200341c3006a20054110763a00002003413c6a20064110763a0000200341356a20084110763a00002003412e6a200f4110763a0000200341276a20104110763a0000200341206a20144110763a0000200341196a20164110763a0000200341126a20044110763a0000200220022802980c41016a220a3602980c2009200b470d000b2001280204210420022802940c210c20022802900c210d0b20012004417f6a360204200d450d3220024180026a200110bb012002280280020d30200228028402222f200128020028020441f4026e22032003202f4b1bad42f4027e2207422088a70d192007a72204417f4c0d190240024020040d00410421050c010b200410382205450d230b2001200128020441016a220636020441002103200241003602a813200220053602a0132002200441f4026e22043602a413024002400240200620012802084b0d0002400240202f450d00200241c81e6a410472210b200241900c6a41086a2137200241851f6a2138200241f0046a4104722139200241c81e6a41196a213a200241c81e6a41126a213b200241c81e6a410b6a213c200241c81e6a41356a213d200241c81e6a412e6a213e200241c81e6a41276a213f200241c81e6a41206a2140200241900c6a41046a2141200241e51e6a2142200241eb1e6a2143200241f81e6a2144200241f11e6a2145200241ea1e6a2146410021130340024002402001280200220328020422044104490d0020032802002205280000211a20032004417c6a3602042003200541046a36020020012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800cf1e212420022801d61e212520022800dd1e212620022802e81e212720022800e11e2103204120422f00003b0000204141026a221e204241026a22222d00003a0000200220033602900c200241f0046a41026a221b20022d00920c3a0000200220033b01f0042002200b2f01003b01b8262002200b41026a22212d00003a00ba2620022800930c2128200241b4266a41026a222a203c41026a22202d00003a00002002203c2f00003b01b426200241b0266a41026a222b203b41026a221f2d00003a00002002203b2f00003b01b026200241ac266a41026a2223201b2d00003a0000200220022f01f0043b01ac2620012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800cf1e212e20022801d61e214720022800dd1e214820022802e81e214920022800e11e2103204120422f00003b0000201e20222d00003a0000200220033602900c201b20022d00920c3a0000200220033b01f0042002200b2f01003b01c826200220212d00003a00ca2620022800930c214a200241c4266a41026a222920202d00003a00002002203c2f00003b01c426200241c0266a41026a222d201f2d00003a00002002203b2f00003b01c026200241bc266a41026a222c201b2d00003a0000200220022f01f0043b01bc2620012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800cf1e214b20022801d61e214c20022800dd1e214d20022802e81e214e20022800e11e2103204120422f00003b0000201e20222d00003a0000200220033602900c201b20022d00920c3a0000200220033b01f0042002200b2f01003b01d826200220212d00003a00da2620022800930c214f200241d4266a41026a225020202d00003a00002002203c2f00003b01d426200241d0266a41026a2251201f2d00003a00002002203b2f00003b01d026200241cc266a41026a2252201b2d00003a0000200220022f01f0043b01cc2620012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800cf1e215320022801d61e215420022800dd1e215520022802e81e215620022800e11e2103204120422f00003b0000201e20222d00003a0000200220033602900c201b20022d00920c3a0000200220033b01f0042002200b2f01003b01e826200220212d00003a00ea2620022800930c2157200241e4266a41026a222220202d00003a00002002203c2f00003b01e426200241e0266a41026a2258201f2d00003a00002002203b2f00003b01e026200241dc266a41026a2259201b2d00003a0000200220022f01f0043b01dc2620012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800df1e215a20022d00e31e215b20022d00e41e215c20022d00e51e215d20022801e61e215e20022d00ea1e215f20022d00eb1e216020023502d81e216120023100dc1e216220023100de1e216320023100dd1e216420022802cc1e211e200220022903d01e22323702940c2002201e3602900c20634238862064423086842062422886842061420886842032423888842161201e41087621652032421888a7216620022800930c216720012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a210520062103200641c000470d000b200241800c6a41026a226820202d00003a00002002200b2f01003b01f0042002203c2f00003b01800c200220212d00003a00f20420022902841f216220022802801f216920022800f91e216a20022801f21e216b20022800eb1e216c20022802e41e216d20022800dd1e216e20022801d61e216f20022800cf1e2170200241e0046a41026a2271201f2d00003a0000200241d8046a41026a2272203a41026a22732d00003a0000200241b82a6a41026a2274204041026a2d00003a0000200241b42a6a41026a2275203f41026a2d00003a0000200241b02a6a41026a2276203e41026a2d00003a00002002203b2f00003b01e0042002203a2f00003b01d804200220402f00003b01b82a2002203f2f00003b01b42a2002203e2f00003b01b02a200241ac2a6a41026a2277203d41026a2d00003a00002002203d2f00003b01ac2a20012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b20022800df1e217820022d00e31e217920022d00e41e217a20022d00e51e217b20022801e61e217c20022d00ea1e217d20022d00eb1e217e20023502d81e216320023100dc1e216420023100de1e217f20023100dd1e21800120022802cc1e218101200220022903d01e22323702940c20022081013602900c207f4238862080014230868420644228868420634208868420324238888421632081014108762182012032421888a721830120022800930c21840120012802002204280204210841002103417f2105034020082003460d01200428020022062d000021092004200820056a3602042004200641016a360200200b20036a20093a00002002200341016a22063602c81e2005417f6a21052006210320064120470d000b200241c4296a41026a220320202d00003a0000200241c0296a41026a2205201f2d00003a00002002200b2f01003b01c8292002203c2f00003b01c4292002203b2f00003b01c029200220212d00003a00ca2920022802e81e21850120022802e41e21860120022800dd1e21870120022801d61e21880120022800cf1e218901200241bc296a41026a220620732d00003a0000200241a42a6a41026a2273202a2d00003a0000200241a02a6a41026a222a202b2d00003a00002002419c2a6a41026a220820232d00003a00002002203a2f00003b01bc29200220022f01b8263b01a82a200220022d00ba263a00aa2a200220022f01b4263b01a42a200220022f01b0263b01a02a200220022f01ac263b019c2a200241942a6a41026a222b20292d00003a0000200241902a6a41026a2223202d2d00003a00002002418c2a6a41026a2209202c2d00003a0000200220022d00ca263a009a2a200220022f01c8263b01982a200220022f01c4263b01942a200220022f01c0263b01902a200220022f01bc263b018c2a200220022d00da263a008a2a200220022f01d8263b01882a200241842a6a41026a222920502d00003a0000200220022f01d4263b01842a200241802a6a41026a222d20512d00003a0000200220022f01d0263b01802a200241fc296a41026a222c20522d00003a0000200220022f01cc263b01fc29200220022d00ea263a00fa29200220022f01e8263b01f829200241f4296a41026a225020222d00003a0000200220022f01e4263b01f429200241f0296a41026a222220582d00003a0000200220022f01e0263b01f029200241ec296a41026a222120592d00003a0000200220022f01dc263b01ec29200220022d00f2043a00ea29200220022f01f0043b01e829200241e4296a41026a225120682d00003a0000200220022f01800c3b01e429200241e0296a41026a225220712d00003a0000200220022f01e0043b01e029200241dc296a41026a222020722d00003a0000200220022f01d8043b01dc29200241d8296a41026a221f20742d00003a0000200220022f01b82a3b01d829200241d4296a41026a225820752d00003a0000200220022f01b42a3b01d429200241d0296a41026a225920762d00003a0000200220022f01b02a3b01d029200241cc296a41026a227120772d00003a0000200220022f01ac2a3b01cc29200241c81e6a200110e50520022802c81e2204450d00200220022f01a82a3b01b829200220022d00aa2a3a00ba2920432d0000218a01203e2d0000218b01203d2d0000218c0120022f01fe1e218d0120022800f71e218e0120022802f01e218f0120022802ec1e21900120022d00e81e21910120022802e01e217720022903d81e213220022802d41e21920120022902cc1e216420022f00e91e21930120022f01f41e21940120022f00fb1e21950120022802e41e219601200241b4296a41026a22970120732d00003a0000200220022f01a42a3b01b429200241b0296a41026a229801202a2d00003a0000200220022f01a02a3b01b029200241ac296a41026a22990120082d00003a0000200220022f019c2a3b01ac29200220022d009a2a3a00aa29200220022f01982a3b01a829200241a4296a41026a229a01202b2d00003a0000200220022f01942a3b01a429200241a0296a41026a229b0120232d00003a0000200220022f01902a3b01a0292002419c296a41026a229c0120092d00003a0000200220022f018c2a3b019c29200220022d008a2a3a009a29200220022f01882a3b01982920024194296a41026a229d0120292d00003a0000200220022f01842a3b01942920024190296a41026a229e01202d2d00003a0000200220022f01802a3b0190292002418c296a41026a229f01202c2d00003a0000200220022f01fc293b018c29200220022d00fa293a008a29200220022f01f8293b01882920024184296a41026a22a00120502d00003a0000200220022f01f4293b01842920024180296a41026a22a10120222d00003a0000200220022f01f0293b018029200241fc286a41026a22a20120212d00003a0000200220022f01ec293b01fc28200220022d00ea293a00fa28200220022f01e8293b01f828200241f4286a41026a22a30120512d00003a0000200220022f01e4293b01f428200241f0286a41026a22a40120522d00003a0000200220022f01e0293b01f028200241ec286a41026a22a50120202d00003a0000200220022f01dc293b01ec28200241e8286a41026a22a601201f2d00003a0000200220022f01d8293b01e828200241e4286a41026a22a70120582d00003a0000200220022f01d4293b01e428200241e0286a41026a22a80120592d00003a0000200220022f01d0293b01e028200241dc286a41026a225920712d00003a0000200220022f01cc293b01dc28200220022d00ca293a00da28200220022f01c8293b01d828200241d4286a41026a227120032d00003a0000200220022f01c4293b01d428200241d0286a41026a22a90120052d00003a0000200220022f01c0293b01d028200241cc286a41026a22aa0120062d00003a0000200220022f01bc293b01cc28200241f8016a200110bb01024020022802f8010d0020022802fc012258200128020028020441c1006e2203200320584b1bad42c1007e227f422088a70d22207fa72203417f4c0d220240024020030d00410121ab010c010b2003103822ab01450d2c0b2001200128020441016a2205360204200241003602f804200220ab013602f0042002200341c1006e3602f40402400240200520012802084b0d000240024020580d00410021060c010b20012802002105410021ac01410021ad01034020052802042209450d02200528020022212d0000210320052009417f6a22203602042005202141016a3602000240024002402003417f6a0e020001050b41002103417e2106034020202003460d05202120036a220841016a2d0000211f2005200920066a3602042005200841026a360200200b20036a201f3a00002002200341016a22083602c81e2006417f6a210620082103200841c000470d000b20442d0000210320452d0000210620462d0000211f200241c81e6a411b6a2d00002120200241c81e6a41146a2d00002121200241c81e6a410d6a2d0000210920022800f91e21ae0120022801f21e21af0120022800eb1e21b00120022802e41e21b10120022800dd1e21b20120022801d61e21b30120022800cf1e21b40120022f01f61e21b50120022f00ef1e21b60120022f01e81e21b70120022f00e11e21b80120022f01da1e21b90120022f00d31e21ba0120022f01cc1e210820022d00ce1e21bb0120022900fd1e217f20372038280000360000203741036a203841036a2800003600002002207f3703900c200820bb0141107472210820ba01200941107472210920b901202141107472212120b801202041107472212020b701201f41107472211f20b60120064110747221b60120b50120034110747221b50120022900970c218001410021b8010c010b41002103417e2106034020202003460d04202120036a220841016a2d0000211f2005200920066a3602042005200841026a360200200b20036a201f3a00002002200341016a22083602c81e2006417f6a210620082103200841c000470d000b20442d0000210320452d0000210620462d0000211f200241c81e6a411b6a2d00002120200241c81e6a41146a2d00002121200241c81e6a410d6a2d0000210920022800f91e21ae0120022801f21e21af0120022800eb1e21b00120022802e41e21b10120022800dd1e21b20120022801d61e21b30120022800cf1e21b40120022f01f61e21b50120022f00ef1e21b60120022f01e81e21b70120022f00e11e21b80120022f01da1e21b90120022f00d31e21ba0120022f01cc1e210820022d00ce1e21bb0120022900fd1e217f20372038280000360000203741036a203841036a2800003600002002207f3703900c200820bb0141107472210820ba01200941107472210920b901202141107472212120b801202041107472212020b701201f41107472211f20b60120064110747221b60120b50120034110747221b50120022900970c218001410121b8010b20ad0141016a21ad01207f421888a721b701207fa72106024020ac0120022802f404470d00200241f0046a20ac0110e20520022802f00421ab0120022802f80421ac010b20ab0120ac0141c1006c6a220320063b0032200320b5013b002b200320b6013b00242003201f3b001d200320203b0016200320213b000f200320093b0008200320083b00012003208001370039200320b701360035200320ae0136002e200320af01360027200320b001360020200320b101360019200320b201360012200320b30136000b200320b401360004200320b8013a0000200341346a20064110763a00002003412d6a20b5014110763a0000200341266a20b6014110763a00002003411f6a201f4110763a0000200341186a20204110763a0000200341116a20214110763a00002003410a6a20094110763a0000200341036a20084110763a0000200220022802f80441016a22ac013602f80420ad012058470d000b20ac0141087621062001280204210520022802f00421ab010b20012005417f6a360204200241800c6a41046a2203203941046a2d00003a0000200220392802003602800c20ab01450d02200241e0046a41046a20032d00003a0000200220022802800c3602e004200241c81e6a200110e00520022802c81e2203450d01209501208c01411074722114209401208b01411074722110201b2097012d00003a000020682098012d00003a000020722099012d00003a0000200220022f01b8293b01900c200220022d00ba293a00920c200220022f01b4293b01f004200220022f01b0293b01800c200220022f01ac293b01d80420022902cc1e210e2074209a012d00003a00002075209b012d00003a00002076209c012d00003a0000200220022d00aa293a00ca1e200220022f01a8293b01c81e200220022f01a4293b01b82a200220022f01a0293b01b42a200220022f019c293b01b02a200220022d009a293a00ae2a200220022f0198293b01ac2a200241a82a6a41026a209d012d00003a00002073209e012d00003a0000202a209f012d00003a0000200241982a6a41026a20a0012d00003a0000200220022f0194293b01a82a200220022f0190293b01a42a200220022f018c293b01a02a200220022d008a293a009e2a200220022f0188293b019c2a200220022f0184293b01982a202b20a1012d00003a0000200220022f0180293b01942a202320a2012d00003a0000200220022f01fc283b01902a200220022d00fa283a008e2a200220022f01f8283b018c2a200241882a6a41026a20a3012d00003a0000200220022f01f4283b01882a202920a4012d00003a0000200220022f01f0283b01842a202d20a5012d00003a0000200220022f01ec283b01802a202c20a6012d00003a0000200220022f01e8283b01fc29200241f8296a41026a20a7012d00003a0000200220022f01e4283b01f829205020a8012d00003a0000200220022f01e0283b01f429202220592d00003a0000200220022f01dc283b01f029200220022d00da283a00ee29200220022f01d8283b01ec29200241e8296a41026a20712d00003a0000200220022f01d4283b01e829205120a9012d00003a0000200220022f01d0283b01e429205220aa012d00003a0000200220022f01cc283b01e029209001411874209301208a014110747241ffffff0771722118209601411074207741107672213520774108742032423888a772211d20022d00e00441107420ab01411076722116209001410876210f20910141107420960141107672211920ab01411074208d017221bc012032421888a7213420022800e10421bd012032a7211c208201213020652131206421072092012133208f012136208e0121be01200321bf0120062117201a21c00120810121c10120840121c20120830121c30120632111207821c401207921c501207a21c601207b21c701207c21c801207d21c901207e21ca01201e21cb01206721cc01206621cd0120612112205a21ce01205b21cf01205c21d001205d21d101205e21d201205f21d301206021d401205321d501205421d601205521d701205721d801205621d901204b21da01204c21db01204d21dc01204f21dd01204e21de01202e21df01204721e001204821e101204a21e201204921e301202421e401202521e501202621e601202821e701202721e801207021e901206f21ea01206e21eb01206d21ec01206c21ed01206b21ee01206a21ef01206921f0012062211520890121f10120880121f20120870121f30120860121f40120850121f5010c040b20022802f4042203450d01200341c1006c450d0120022802f00410390c010b20022802e0042203450d00200341c1006c450d0020ab0110390b2064a7210602402064422088a72203450d002003410c6c21052004210303400240200341046a280200450d00200328020010390b2003410c6a2103200541746a22050d000b0b02402006450d002006410c6c450d00200410390b02402032422088a72203450d002003410474210420920141086a2103034002402003280200450d002003417c6a28020010390b200341106a2103200441706a22040d000b0b0240203242ffffffff0083500d0020920110390b02402077450d00209601450d00207710390b208f01450d0020900110390b410021040b200241c4286a41026a2203200241f0046a41026a2d00003a0000200241c0286a41026a2205200241800c6a41026a2d00003a0000200241bc286a41026a2206200241d8046a41026a2d00003a0000200220022d00920c3a00ca28200220022f01900c3b01c828200220022f01f0043b01c428200220022f01800c3b01c028200220022f01d8043b01bc28200220022d00ca1e3a00ba28200220022f01c81e3b01b828200241b4286a41026a2208200241b82a6a41026a2d00003a0000200241b0286a41026a2209200241b42a6a41026a2d00003a0000200241ac286a41026a221b200241b02a6a41026a2d00003a0000200241a4286a41026a221a200241a82a6a41026a2d00003a0000200220022f01b82a3b01b428200220022f01b42a3b01b028200220022f01b02a3b01ac28200220022f01ac2a3b01a828200220022d00ae2a3a00aa28200220022f01a82a3b01a428200241a0286a41026a2221200241a42a6a41026a2d00003a00002002419c286a41026a2220200241a02a6a41026a2d00003a000020024194286a41026a221f200241982a6a41026a2d00003a000020024190286a41026a221e200241942a6a41026a2d00003a0000200220022f01a42a3b01a028200220022f01a02a3b019c28200220022d009e2a3a009a28200220022f019c2a3b019828200220022f01982a3b019428200220022f01942a3b0190282002418c286a41026a2222200241902a6a41026a2d00003a0000200220022f01902a3b018c28200220022d008e2a3a008a28200220022f018c2a3b01882820024184286a41026a222a200241882a6a41026a2d00003a0000200220022f01882a3b01842820024180286a41026a222b200241842a6a41026a2d00003a0000200220022f01842a3b018028200241fc276a41026a2223200241802a6a41026a2d00003a0000200220022f01802a3b01fc27200241f8276a41026a2224200241fc296a41026a2d00003a0000200220022f01fc293b01f827200241f4276a41026a2225200241f8296a41026a2d00003a0000200220022f01f8293b01f427200241f0276a41026a2226200241f4296a41026a2d00003a0000200220022f01f4293b01f027200241ec276a41026a2227200241f0296a41026a2d00003a0000200220022f01f0293b01ec27200220022d00ee293a00ea27200220022f01ec293b01e827200241e4276a41026a2228200241e8296a41026a2d00003a0000200220022f01e8293b01e427200241e0276a41026a2229200241e4296a41026a2d00003a0000200220022f01e4293b01e027200241dc276a41026a222d200241e0296a41026a2d00003a0000200220022f01e0293b01dc272004450d02201341016a2113200241d4276a41026a222c20032d00003a0000200241d0276a41026a222e20052d00003a0000200241cc276a41026a220520062d00003a0000200220022d00ca283a00da27200220022f01c8283b01d827200220022f01c4283b01d427200220022f01c0283b01d027200220022f01bc283b01cc27200220022d00ba283a00ca27200220022f01b8283b01c827200241c4276a41026a220620082d00003a0000200241c0276a41026a220820092d00003a0000200241bc276a41026a2209201b2d00003a0000200241b4276a41026a221b201a2d00003a0000200220022f01b4283b01c427200220022f01b0283b01c027200220022f01ac283b01bc27200220022f01a8283b01b827200220022d00aa283a00ba27200220022f01a4283b01b427200241b0276a41026a221a20212d00003a0000200241ac276a41026a222120202d00003a0000200241a4276a41026a2220201f2d00003a0000200241a0276a41026a221f201e2d00003a0000200220022f01a0283b01b027200220022f019c283b01ac27200220022d009a283a00aa27200220022f0198283b01a827200220022f0194283b01a427200220022f0190283b01a0272002419c276a41026a221e20222d00003a0000200220022f018c283b019c27200220022d008a283a009a27200220022f0188283b01982720024194276a41026a2222202a2d00003a0000200220022f0184283b01942720024190276a41026a222a202b2d00003a0000200220022f0180283b0190272002418c276a41026a222b20232d00003a0000200220022f01fc273b018c2720024188276a41026a222320242d00003a0000200220022f01f8273b01882720024184276a41026a222420252d00003a0000200220022f01f4273b01842720024180276a41026a222520262d00003a0000200220022f01f0273b018027200241fc266a41026a222620272d00003a0000200220022f01ec273b01fc26200220022d00ea273a00fa26200220022f01e8273b01f826200241f4266a41026a222720282d00003a0000200220022f01e4273b01f426200241f0266a41026a222820292d00003a0000200220022f01e0273b01f026200241ec266a41026a2229202d2d00003a0000200220022f01dc273b01ec26024020022802a813220320022802a413470d00200241a0136a200310e30520022802a81321030b20022802a013200341f4026c6a220320c001360200200320022f01d8273b0104200341066a20022d00da273a0000200341076a20e4013600002003410b6a20022f01d4273b00002003410d6a202c2d00003a00002003410e6a20e501360100200341126a20022f01d0273b0100200341146a202e2d00003a0000200341156a20e601360000200341196a20022f01cc273b00002003411b6a20052d00003a0000200341206a20e8013602002003411c6a20e701360200200341276a20df013600002003412e6a20e001360100200341356a20e101360000200320022f01c8273b0124200341266a20022d00ca273a00002003412b6a20022f01c4273b00002003412d6a20062d00003a0000200341326a20022f01c0273b0100200341346a20082d00003a0000200341396a20022f01bc273b00002003413b6a20092d00003a0000200341c0006a20e3013602002003413c6a20e201360200200341c7006a20da01360000200341ce006a20db01360100200341d5006a20dc01360000200320022f01b8273b0144200341c6006a20022d00ba273a0000200341cd006a201b2d00003a0000200341cb006a20022f01b4273b0000200341d4006a201a2d00003a0000200341d2006a20022f01b0273b0100200341d9006a20022f01ac273b0000200341db006a20212d00003a0000200341e0006a20de01360200200341dc006a20dd01360200200341e6006a20022d00aa273a0000200320022f01a8273b0164200341e7006a20d501360000200341ed006a20202d00003a0000200341eb006a20022f01a4273b0000200341ee006a20d601360100200341f4006a201f2d00003a0000200341f2006a20022f01a0273b0100200341f5006a20d701360000200341fb006a201e2d00003a0000200341f9006a20022f019c273b0000200341a3016a20d4013a0000200341a2016a20d3013a00002003419e016a20d2013601002003419d016a20d1013a00002003419c016a20d0013a00002003419b016a20cf013a000020034197016a20ce013600002003418f016a20123700002003418b016a20cd0136000020034187016a20cc0136000020034185016a20313b0000200320cb013a00840120034180016a20d901360200200341fc006a20d801360200200341a6016a20022d009a273a0000200320022f0198273b01a401200341a7016a20e901360000200341ad016a20222d00003a0000200341ab016a20022f0194273b0000200341ae016a20ea01360000200341b4016a202a2d00003a0000200341b2016a20022f0190273b0000200341b5016a20eb01360000200341bb016a202b2d00003a0000200341b9016a20022f018c273b0000200341bc016a20ec01360000200341c2016a20232d00003a0000200341c0016a20022f0188273b0000200341c3016a20ed01360000200341c9016a20242d00003a0000200341c7016a20022f0184273b0000200341ca016a20ee01360000200341d0016a20252d00003a0000200341ce016a20022f0180273b0000200341d1016a20ef01360000200341d7016a20262d00003a0000200341d5016a20022f01fc263b000020034183026a20ca013a000020034182026a20c9013a0000200341fe016a20c801360100200341fd016a20c7013a0000200341fc016a20c6013a0000200341fb016a20c5013a0000200341f7016a20c401360000200341ef016a2011370000200341eb016a20c301360000200341e7016a20c201360000200341e5016a20303b0000200320c1013a00e401200341dc016a2015370000200341d8016a20f00136000020034186026a20022d00fa263a0000200320022f01f8263b01840220034187026a20f1013600002003418d026a20272d00003a00002003418b026a20022f01f4263b00002003418e026a20f20136000020034194026a20282d00003a000020034192026a20022f01f0263b000020034195026a20f3013600002003419b026a20292d00003a000020034199026a20022f01ec263b0000200341e7026a20174110763a0000200341e5026a20173b0000200341e0026a20164110763a0000200341de026a20163b0000200341d9026a20144110763a0000200341d7026a20143b0000200341d2026a20104110763a0000200341d0026a20103b0000200341cb026a200f4110763a0000200341c9026a200f3b0000200341c4026a20194110763a0000200341c2026a20193b0000200341bd026a201d4110763a0000200341bb026a201d3b0000200341b6026a201c4110763a0000200341b4026a201c3b0100200341ec026a200e370000200341e8026a20bf01360000200341e1026a20bd01360000200341da026a20bc01360000200341d3026a20be01360000200341cc026a2036360000200341c5026a2018360000200341be026a2035360000200341b7026a2034360000200341b0026a2033360200200341a8026a2007370200200320043602a402200341a0026a20f5013600002003419c026a20f401360000200220022802a81341016a22033602a8132013202f470d000b2001280204210620022802a413210420022802a01321050b20012006417f6a3602042005450d34200241f0016a200110bb0120022802f0010d3220022802f4012214200128020028020441306e2206200620144b1bad42307e2207422088a70d1d2007a72206417f4c0d1d20060d024104210b0c030b20022802a013210520022802a8132203450d00200341f4026c21012005210303402003109f03200341f4026a21032001418c7d6a22010d000b0b20022802a4132203450d32200341f4026c0d310c320b20061038220b450d230b2001200128020441016a2208360204200241003602f8042002200b3602f0042002200641306e22093602f404200820012802084b0d2c024002402014450d00200241c81e6a4104722117200241fd1e6a211b200241c81e6a412e6a211a200241c81e6a41276a2121200241e81e6a2120200241e11e6a211f200241da1e6a211e200241d31e6a2122410021160340201641016a2116200128020022082802042110417f21062017210b0340201020066a2209417f460d2f200828020022132d0000210f200820093602042008201341016a360200200b200f3a0000200b41016a210b2006417f6a2206415f470d000b20022800df1e212b20022d00e31e212320022d00e41e212420022d00e51e212520022801e61e212620022d00ea1e212720022d00eb1e212820023502d81e211120023100dc1e211220023100de1e211520023100dd1e213220022802cc1e211c200220022903d01e220e3702940c2002201c3602900c2001280200220628020422084104490d2e20022800930c21292006280200220b280000212d20062008417c6a3602042006200b41046a360200200241e8016a200110bb0120022802e8010d2e20022802ec012219200128020028020441c8006e2206200620194b1bad42c8007e2207422088a70d1c2007a72206417f4c0d1c0240024020060d00410421100c010b200610382210450d260b2001200128020441016a2208360204200241003602980c200220103602900c2002200641c8006e22063602940c024002400240200820012802084b0d002019450d014100211d0240034020012802002206280204220b450d01200628020022082d000021092006200b417f6a22133602042006200841016a36020002400240024020090e020001040b2013450d0320082d000121092006200b417e6a3602042006200841026a3602004100212a02400240024020090e0404000102060b4101212a0c030b4102212a0c020b4103212a0c010b2013450d0220082d000121092006200b417e6a3602042006200841026a3602004104212a20090d020b20012802002209280204220f4104490d01201d41016a211d20092802002206280000212c2009200f417c6a3602042009200641046a360200200241003602c81e200641056a210641c00021080340200f20086a220b41c400460d022006417f6a2d00002113200920063602002009200b41bb7f6a36020420022802c81e220b41c0004f0d25200241c81e6a200b6a41046a20133a00002002200b41016a3602c81e200641016a21062008417f6a22080d000b200b413f490d2520022902841f210720022802801f210b20022800f91e210920022801f21e211320022800eb1e210f20022802e41e212e20022800dd1e212f20022801d61e213020022800cf1e2131200241800c6a41026a2233202241026a2d00003a0000200241e0046a41026a2234201e41026a2d00003a0000200241d8046a41026a2235201f41026a2d00003a0000200241b82a6a41026a2218202041026a2d00003a0000200220172f01003b01a013200220222f00003b01800c2002201e2f00003b01e0042002201f2f00003b01d804200220202f00003b01b82a2002201741026a2d00003a00a213200241b42a6a41026a2236202141026a2d00003a0000200241b02a6a41026a22be01201a41026a2d00003a0000200241ac2a6a41026a22bc01201b41026a2d00003a0000200220212f00003b01b42a2002201a2f00003b01b02a2002201b2f00003b01ac2a024020022802980c220820022802940c470d00200241900c6a200810e40520022802980c21080b20022802900c2210200841c8006c6a2206202a3a00042006202c360200200620022f01a0133b0005200641076a20022d00a2133a0000200641086a20313600002006410c6a20022f01800c3b00002006410e6a20332d00003a00002006410f6a2030360000200641136a20022f01e0043b0000200641156a20342d00003a0000200641166a202f3600002006411d6a202e360000200641246a200f3600002006412b6a20133600002006411c6a20352d00003a00002006411a6a20022f01d8043b0000200641216a20022f01b82a3b0000200641236a20182d00003a0000200641286a20022f01b42a3b00002006412a6a20362d00003a00002006412f6a20022f01b02a3b0000200641316a20be012d00003a0000200641326a20093600002006413d6a2007370000200641396a200b360000200641386a20bc012d00003a0000200641366a20022f01ac2a3b0000200641c5006a20022f01a82a3b0000200641c7006a20022d00aa2a3a00002002200841016a3602980c201d2019470d000b20012001280204417f6a3602040c030b20022802940c21060b2006450d30200641c8006c450d30201010390c300b20012008417f6a3602042010450d2f0b20022902940c21072015423886203242308684201242288684201142088684200e423888842111201c4108762109200e421888a72113024020022802f804220820022802f404470d00200241f0046a200810aa0420022802f80421080b20022802f004220b200841306c6a220620103602042006202d3602002006412f6a20283a00002006412e6a20273a00002006412a6a2026360100200641296a20253a0000200641286a20243a0000200641276a20233a0000200641236a202b3600002006411b6a2011370000200641176a2013360000200641136a2029360000200641116a20093b0000200641106a201c3a0000200641086a20073702002002200841016a22063602f80420162014470d000b20012001280204417f6a36020420022802f40421090c010b20012008417f6a360204200b450d2f410021060b200241c81e6a200110b90320022802cc1e0d1e02402006450d00200641306c21134100210103400240200b20016a220841086a2802002206450d00200641c8006c450d00200841046a28020010390b2013200141306a2201470d000b0b2009450d2e200941306c450d2e0c2d0b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c3b0b200128020022032802042204450d28200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024020060e050001020306300b2001280200220428020422054104490d2f20042802002206280000210320042005417c6a3602042004200641046a36020020024190026a200110bb012002280290020d2f2001280200220528020422062002280294022201490d2f2001417f4c0d1e0240024020010d00410121040c010b200110382204450d2820044100200110c50a1a200528020421060b20062001490d03200420052802002208200110c30a1a2005200620016b3602042005200820016a3602002001ad22074220862007842107410121010c060b2001280200220428020422054104490d2e20042802002206280000210320042005417c6a3602042004200641046a36020020024198026a200110bb012002280298020d2e200128020022052802042206200228029c022201490d2e2001417f4c0d1d0240024020010d00410121040c010b200110382204450d2720044100200110c50a1a200528020421060b20062001490d02200420052802002208200110c30a1a2005200620016b3602042005200820016a3602002001ad22074220862007842107410221010c050b2001280200220428020422054104490d2d20042802002206280000210320042005417c6a3602042004200641046a360200200241a0026a200110bb0120022802a0020d2d20012802002206280204220820022802a4022205490d2d2005417f4c0d1c0240024020050d00410121040c010b200510382204450d2620044100200510c50a1a200628020421080b20082005490d0120042006280200220b200510c30a1a2006200820056b3602042006200b20056a36020002402001280200220128020422064104490d002005ad2207422086200784210720012802002208280000210520012006417c6a3602042001200841046a360200410321010c050b20050d010c2d0b2001280200220428020422054104490d2c20042802002206280000210320042005417c6a3602042004200641046a360200200241a8026a200110bb0120022802a8020d2c20012802002205280204220620022802ac022201490d2c2001417f4c0d1b0240024020010d00410121040c010b200110382204450d2520044100200110c50a1a200528020421060b200620014f0d010b200410390c2b0b200420052802002208200110c30a1a2005200620016b3602042005200820016a3602002001ad22074220862007842107410421010c010b2001280200220128020422044104490d2920012802002205280000210320012004417c6a3602042001200541046a360200410521010b2000200136020420004110360200200041186a2005360200200041106a20073702002000410c6a2004360200200041086a20033602000c3a0b0240200128020022032802042201450d00200328020022042d0000210520032001417f6a22063602042003200441016a36020020050d0020064104490d002004280001210520032001417b6a3602042003200441056a36020020002005360204200041113602000c3a0b200041253602000c390b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c380b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c370b0240200128020022032802042201450d00200328020022042d0000210520032001417f6a220a3602042003200441016a3602004105210802400240024002400240024020050e06000102030504060b200a4104490d052004280001210620032001417b6a22053602042003200441056a36020020054104490d052004280005210b2003200141776a22053602042003200441096a36020020054104490d05200428000921092003200141736a36020420032004410d6a360200410121080c040b200a4104490d042004280001210620032001417b6a3602042003200441056a360200410221080c030b200a4104490d032004280001210620032001417b6a22053602042003200441056a36020020054104490d032004280005210b2003200141776a3602042003200441096a360200410321080c020b41042108200a4104490d022004280001210620032001417b6a3602042003200441056a3602000c010b410621080b2000200836020420004114360200200041106a20093602002000410c6a200b360200200041086a20063602000c370b200041253602000c360b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c350b200128020022032802042204450d21200328020022052d0000210620032004417f6a3602042003200541016a3602004106211702400240024002400240024020060e06000102030426270b2001280200220328020422054104490d2620032802002206280000210420032005417c6a3602042003200641046a360200200241b8026a200110bb0120022802b8020d2620012802002205280204220620022802bc022203490d262003417f4c0d160240024020030d004101210f0c010b20031038220f450d20200f4100200310c50a1a200528020421060b0240200620034f0d00200f10390c270b200f20052802002208200310c30a21092005200620036b3602042005200820036a360200200241b0026a200110bb01024020022802b0020d0020012802002201280204220520022802b4022208490d002008417f4c0d170240024020080d004101210b0c010b20081038220b450d21200b4100200810c50a1a200128020421050b200220083602cc1e200220083602c81e200520084f0d1d200b10390b2003450d26200910390c260b200241c81e6a4104722104200128020022052802042109417f21030340200920036a2206417f460d26200528020022082d0000210b200520063602042005200841016a3602002004200b3a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210b200241e31e6a2d00002108200241e41e6a2d0000210c200241e51e6a2d0000210d200241e61e6a280100210a200241ea1e6a2d00002109200241eb1e6a2d00002113200241c81e6a41106a3502002112200241dc1e6a3100002115200241de1e6a3100002132200241dd1e6a310000216120022802cc1e21052002200241c81e6a41086a29030022113702ec16200220053602e8162001280200220328020422064110490d2520022800eb1621042003200641706a36020420032003280200220641106a36020020012802002203280204220f4104490d25200641086a290000210e200629000021072003280200220628000021102003200f417c6a3602042003200641046a360200200241c8026a200110bb0120022802c8020d2520012802002206280204220f20022802cc022203490d252003417f4c0d150240024020030d00410121140c010b200310382214450d1f20144100200310c50a1a2006280204210f0b0240200f2003490d00201420062802002216200310c30a1a2006200f20036b3602042006201620036a360200200241c0026a200110bb01024020022802c0020d0020012802002206280204221720022802c4022201490d002001417f4c0d170240024020010d00410121160c010b200110382216450d2120164100200110c50a1a200628020421170b201720014f0d1e201610390b2003450d260b201410390c250b2001280200220328020422014104490d2420032802002205280000210420032001417c6a3602042003200541046a360200410321170c020b2001280200220328020422054104490d2320032802002206280000210420032005417c6a3602042003200641046a3602002001280200220328020422014104490d2320032802002205280000210f20032001417c6a360204410421172003200541046a3602000c220b2001280200220328020422014104490d2220032802002205280000210420032001417c6a3602042003200541046a360200410521170b0c200b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004103210b02400240024020060e03000102030b200241d8026a200110bb0120022802d8020d0220022802dc022103200241d0026a200110bb0120022802d0020d0220022802d40221044101210b0c010b20024190036a200110bb012002280290030d01200228029403210320024188036a200110bb012002280288030d01200228028c03210420024180036a200110bb012002280280030d012002280284032105200241f8026a200110bb0120022802f8020d0120022802fc022108200241e0026a2001108f0320022903e002a70d01200241f0026a290300210e20022903e80221074102210b0b20004117360200200041286a200e370200200041206a2007370200200041186a2008360200200041146a2005360200200041106a20043602002000410c6a2003360200200041086a200b3602000c340b200041253602000c330b200128020022032802042204450d1d200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024002400240024020060e080001020304050607280b200241c8036a200110bb0120022802c8030d2720022802cc032105200241b0036a2001108f0320022903b003a70d27200241c0036a290300210e20022903b8032107200241a8036a200110bb0120022802a8030d2720022802ac032110200241a0036a200110bb0120022802a0030d2720022802a403211420024198036a200110bb012002280298030d27200228029c032116200241c81e6a200110f80720022d00c81e22034104460d27200e422088a72113200241e81e6a2f01002117200241e71e6a2d00002106200241e61e6a2d00002108200241e21e6a280100210b200241e11e6a2d00002109200241e01e6a2d0000210a200241df1e6a2d0000210d200241db1e6a280000210c200241d31e6a290000211120022800cf1e210f20022800cb1e210420022f00c91e211d410121010c090b200241e8036a200110bb0120022802e8030d2620022802ec032113200241d0036a2001108f0320022903d003a70d26200128020022032802042204450d26200241e0036a290300211520022903d8032112200328020022052d0000211b20032004417f6a3602042003200541016a3602004103210302400240201b0e020100280b200241c81e6a2001108b0420022d00c81e22034103460d27200241871f6a330000200241891f6a31000042108684210e200241ff1e6a2900002107200241fb1e6a2800002119200241f71e6a2800002116200241f31e6a2800002114200241ef1e6a2800002110200241eb1e6a2800002105200241ea1e6a2d0000211c200241e81e6a2f01002117200241e71e6a2d00002106200241e61e6a2d00002108200241e21e6a280100210b200241e11e6a2d00002109200241e01e6a2d0000210a200241df1e6a2d0000210d200241db1e6a280000210c200241d31e6a290000211120022800cf1e210f20022800cb1e210420022f00c91e211d0b200e42ffffff0783210e410221010c080b200241c81e6a4104722104200128020022052802042109417f21030340200920036a2206417f460d26200528020022082d0000210b200520063602042005200841016a3602002004200b3a0000200441016a21042003417f6a2203415f470d000b200241d81e6a2802002113200241dc1e6a310000210e200241dd1e6a3100002111200241de1e6a3100002112200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d0000210a200241e51e6a2d00002109200241e61e6a280100210b200241ea1e6a2d00002108200241eb1e6a2d0000210620022802cc1e21032002200241c81e6a41086a29030022073702ec16200220033602e81620022800eb162104200241f0036a200110bb0120022802f0030d2520022802f40321052012423886201142308684200e422886842013ad4208868420074238888421112003410876211d2007421888a7210f410321010c070b200241f8036a200110bb0120022802f8030d2420022802fc032104410421010c040b20024180046a200110bb012002280280040d232002280284042104410521010c030b200241b8046a200110bb0120022802b8040d2220022802bc042105200241a0046a2001108f0320022903a004a70d22200241b0046a290300210e20022903a804210720024198046a200110bb012002280298040d22200228029c04211020024190046a200110bb012002280290040d22200228029404211420024188046a200110bb012002280288040d22200228028c042116200241c81e6a200110f80720022d00c81e22034104460d22200e422088a72113200241e81e6a2f01002117200241e71e6a2d00002106200241e61e6a2d00002108200241e21e6a280100210b200241e11e6a2d00002109200241e01e6a2d0000210a200241df1e6a2d0000210d200241db1e6a280000210c200241d31e6a290000211120022800cf1e210f20022800cb1e210420022f00c91e211d410621010c040b2001280200220328020422054104490d2120032802002206280000210420032005417c6a3602042003200641046a360200200241c0046a200110bb0120022802c0040d2120012802002201280204220520022802c4042203490d212003417f4c0d130240024020030d004101210f0c010b20031038220f450d1d200f4100200310c50a1a200128020421050b0240200520034f0d00200f10390c220b200f20012802002206200310c30a1a2001200520036b3602042001200620036a3602002003ad22074220862007842111410721010c020b2001280200220328020422014104490d2020032802002205280000210420032001417c6a3602042003200541046a360200410821010b0b0b2000201c3a002b200020173b0029200020083a00272000200b360023200020093a00222000200a3a00212000201d3b000a200020033a000920004118360200200041d8006a2015370200200041d0006a2012370200200041c0006a20073702002000413c6a2019360200200041386a2016360200200041346a2014360200200041306a20103602002000412c6a2005360200200041286a20063a0000200041206a200d3a00002000411c6a200c360200200041146a2011370200200041106a200f3602002000410c6a2004360200200041086a20013a0000200041c8006a2013ad422086200e42ffffffff0f83843702000c320b0240200128020022012802042205450d00200128020022062d0000210320012005417f6a22043602042001200641016a36020002400240024020030e03000102030b20044104490d022006280001210d20012005417b6a22093602042001200641056a360200200241c81e6a410472210a41002103417a2104034020092003460d03200620036a220841056a2d0000210b2001200520046a3602042001200841066a360200200a20036a200b3a00002004417f6a2104200341016a2208210320084120470d000b200241df1e6a2800002104200241e31e6a2d0000210b200241e41e6a2d00002109200241e51e6a2d0000210a200241e61e6a280100210c200241ea1e6a2d00002113200241eb1e6a2d0000210f200241c81e6a41106a3502002111200241dc1e6a3100002115200241de1e6a3100002132200241c81e6a41156a310000216120022802cc1e21032002200241c81e6a41086a29030022123702ec16200220033602e816200520086b2216417b6a4110490d0220022800eb16211020012016416b6a22053602042001200620086a221741156a36020020054104490d022017410d6a2900002107201741056a290000210e201741156a28000021052001201641676a22063602042001201741196a221436020020064104490d0220324238862061423086842015422886842011420886842012423888842111200341087621062012421888a72108201428000021142001201641636a36020420012017411d6a360200410121010c1e0b20044104490d012006280001211020012005417b6a3602042001200641056a360200410221010c1d0b20044104490d002006280001211020012005417b6a3602042001200641056a360200410321010c1c0b200041253602000c310b200128020022032802042204450d19200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e06000102030405200b2001280200220428020422054104490d1f20042802002206280000210320042005417c6a3602042004200641046a360200200241d0046a200110bb0120022802d0040d1f20012802002206280204220820022802d4042204490d1f2004417f4c0d130240024020040d00410121050c010b200410382205450d1d20054100200410c50a1a200628020421080b02400240024020082004490d0020052006280200220b200410c30a210a2006200820046b3602042006200b20046a360200200241c8046a200110bb01024020022802c8040d0020012802002206280204220b20022802cc042208490d002008417f4c0d170240024020080d00410121090c010b200810382209450d2120094100200810c50a1a2006280204210b0b0240200b2008490d0020092006280200220d200810c30a1a2006200b20086b3602042006200d20086a3602000240200128020022012802042206450d002001280200220b2d0000210d20012006417f6a360204410121062001200b41016a36020041002101200d0e020504000b2008450d010b200910390b2004450d220b200510390c210b410121010b200a410876210d2008210c2004210b0c050b2001280200220128020422044104490d1e20012802002205280000210320012004417c6a3602042001200541046a360200410221060c040b2001280200220128020422044104490d1d20012802002205280000210320012004417c6a3602042001200541046a360200410321060c030b410421062001280200220128020422044104490d1c20012802002205280000210320012004417c6a3602042001200541046a3602000c020b2001280200220428020422054104490d1b20042802002206280000210320042005417c6a3602042004200641046a360200200128020022042802042205450d1b200428020022062d0000210820042005417f6a3602042004200641016a36020020080d1b200241c81e6a200110c00120022d00c81e2205410b460d1b200241920c6a200241e31e6a2d00003a00002002200241e11e6a2f00003b01900c200241e01e6a2d00002101200241dc1e6a2802002108200241c81e6a41106a280200210c200241d41e6a2802002109200241d01e6a280200210420022802cc1e210b20022f00c91e210620022d00cb1e210a200241e8166a200241e41e6a41cc0310c30a1a2006200a41107472210d410521060c010b2001280200220428020422054104490d1a20042802002206280000210320042005417c6a3602042004200641046a3602002001280200220428020422064104490d1a20042802002208280000210520042006417c6a3602042004200841046a3602002001280200220428020422064104490d1a20042802002208280000210b20042006417c6a3602042004200841046a3602002001280200220128020422064104490d1a20012802002208280000210420012006417c6a3602042001200841046a3602002005410876210d410621060b200241f0046a41026a220a200241900c6a41026a2d00003a0000200220022f01900c3b01f0042000412c6a200241e8166a41cc0310c30a1a200041286a20013a0000200041246a2008360200200041206a200c3602002000411c6a2009360200200041186a2004360200200041146a200b360200200041106a200d410874200541ff0171723602002000410c6a2003360200200041086a20063602002000411a360200200020022f01f0043b00292000412b6a200a2d00003a00000c300b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e0400010203070b2001200128020441016a2203360204200320012802084b0d06200241c81e6a200110cb0120022802c81e2104200241e8166a200241c81e6a41047241bc0710c30a1a20044125460d0641c00710382203450d1c20032004360200200341046a200241e8166a41bc0710c30a1a20012001280204417f6a360204410121080c030b2001200128020441016a2203360204200320012802084b0d05200241c81e6a200110cb0120022802c81e2104200241e8166a200241c81e6a41047241bc0710c30a1a20044125460d0541c00710382203450d1b20032004360200200341046a200241e8166a41bc0710c30a1a20012001280204417f6a3602042001280200220128020422044108490d042001280200220529000021072001200441786a3602042001200541086a3602002007422088a721042007a72105410221080c020b200241c81e6a200110810220022d00c81e4105460d04200241f8046a200241dc1e6a29020037030020024180056a200241e41e6a2902003703002002200241d41e6a2902003703f00420022902cc1e2207422088a7210420022802c81e21032007a72105410321080c010b200241c81e6a200110810220022d00c81e4105460d03200241900c6a41086a200241dc1e6a290200370300200241a00c6a200241e41e6a2902003703002002200241d41e6a2902003703900c200241c81e6a41086a280200210420022802cc1e210520022802c81e21032001200128020441016a2206360204200620012802084b0d01200241c81e6a200110cb0120022802c81e2108200241e8166a200241c81e6a41047241bc0710c30a1a20084125460d0141c00710382206450d192006200836020041042108200641046a200241e8166a41bc0710c30a1a200241f0046a41086a200241900c6a41086a290300370300200241f0046a41106a200241900c6a41106a29030037030020012001280204417f6a360204200220022903900c3703f0040b200241a0136a41106a200241f0046a41106a2903002207370300200241a0136a41086a200241f0046a41086a290300220e370300200220022903f00422113703a013200041106a2004ad4220862005ad843702002000410c6a2003360200200041086a20083602002000411b360200200041186a2011370200200041206a200e370200200041286a2007370200200041306a20063602000c320b200341ff01714102470d012004450d01200510390c010b2003109f06200310390b200041253602000c2f0b0240200128020022032802042201450d0020032001417f6a3602042003200328020041016a3602000b200041253602000c2e0b200128020022032802042204450d15200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e04000102031c0b200241c81e6a200110b90320022802cc1e220c450d1b200241d41e6a2203280200210f200241c81e6a41106a2f01002104200241da1e6a2d00002105200241e11e6a22062d0000210820022801e21e211020022800db1e211420022802d01e211320022802c81e211620022f00df1e210b200241e8166a200241e61e6a41d20010c30a1a200241c81e6a200110f90720032802000d030240200f450d00200f41246c2101200c210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2013450d1b201341246c450d1b200c10390c1b0b200241c81e6a200110fa074102211720022d00cc1f4102460d1a200241d41e6a2f01002101200241d61e6a2d00002104200241dd1e6a2d0000210320022801de1e211020022800d71e211420022802d01e210f20022802cc1e211320022802c81e210c20022f00db1e2105200241e8166a200241e21e6a41d20010c30a1a200241ce1f6a2f01002119200241c31f6a280000211d200241bc1f6a280200211c200241b41f6a2902002107200241c21f6a2d00002106200241c91f6a2d0000210820022801ca1f211b20022f01c01f210b20022f00c71f2109200241f0046a200241e8166a41d20010c30a1a200520034110747221032001200441107472210420092008411074722105200b20064110747221060c030b200128020022032802042204450d19200328020022052d0000212420032004417f6a3602042003200541016a3602004103211741002123024020240e0204001a0b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d1a200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241d31e6a280000220341087420022800cf1e220141187672210c200241d71e6a2f0000200241d91e6a2d0000411074724108742003411876722113200141087420022d00ce1e722116200241de1e6a2f0100200241c81e6a41186a2d0000411074722104200241e51e6a2f0000200241e71e6a2d0000411074722103200241da1e6a280100210f200241e11e6a2800002114200241e81e6a280200211020022f01cc1e211a410121230c030b200128020022032802042201450d18200328020022042d0000212420032001417f6a3602042003200441016a3602004104211741002123024020240e020300190b410121230c020b200b200841107472210320042005411074722104200241881f6a290300210e200241841f6a280200212a200241fd1e6a2800002122200241f61e6a280100211e200241ef1e6a280000211f200241e81e6a280200212020062800002121200241d31e6a280000211d200241e01e6a2d00002101200241d21e6a2d00002106200241d91e6a2d00002105200241e51e6a2f00002108200241e71e6a2d00002117200241ec1e6a2f0100210b200241ee1e6a2d00002119200241f31e6a2f00002109200241f51e6a2d0000211a200241fa1e6a2f0100210a200241fc1e6a2d0000212b200241831f6a2d0000210d20022801da1e211b20022802cc1e211c20022f01de1e212320022f01d01e212420022f00d71e212520022f00811f212620023502c81e2107200241900c6a200241e8166a41d20010c30a1a200241f0046a200241900c6a41d20010c30a1a200742208621072026200d41107472210d200a202b41107472210a2009201a411074722109200b201941107472210b20082017411074722108202520054110747221052024200641107472210620232001411074722219411076212b410121170b0b200241a0136a200241f0046a41d20010c30a1a200041256a20034110763a0000200041236a20033b00002000411e6a20044110763a00002000411c6a20043b0100200041266a20103601002000411f6a2014360000200041186a200f360100200041146a2013360100200041106a200c3601002000410c6a20163601002000201a3b010a200020233a0009200041086a20173a00002000411d3602002000412a6a200241a0136a41d20010c30a1a200041bb016a200d4110763a00002000200d3b00b901200041b4016a200a4110763a00002000200a3b00b201200041ad016a20094110763a0000200020093b00ab01200041a6016a200b4110763a0000200041a4016a200b3b00002000419f016a20084110763a0000200020083b009d0120004191016a20054110763a0000200020053b008f012000418a016a20064110763a000020004188016a20063b0100200041c0016a200e370000200041bc016a202a360000200020223600b5012000201e3600ae012000201f3600a701200041a0016a2020360000200020213600990120004198016a202b3a0000200020193b0096012000201b360092012000418b016a201d36000020004184016a201c360100200041fc006a20073701000c2d0b200128020022032802042204450d13200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e04000102031a0b200241c81e6a200110b90320022802cc1e2213450d19200241e21e6a2801002114200241db1e6a2800002116200241d41e6a22032802002110200241c81e6a41106a2f01002105200241da1e6a2d00002106200241df1e6a2f00002104200241e11e6a22082d0000210b20022802d01e210f20022802c81e2117200241e8166a200241e61e6a41d20010c30a1a200241c81e6a200110f90720032802000d0302402010450d00201041246c21012013210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b200f450d19200f41246c450d19201310390c190b200241c81e6a200110fa074102211920022d00cc1f4102460d18200241de1e6a2801002114200241d71e6a2800002116200241d41e6a2f01002101200241d61e6a2d00002105200241db1e6a2f00002104200241dd1e6a2d0000210620022802d01e211020022802cc1e210f20022802c81e2113200241e8166a200241e21e6a41d20010c30a1a200241ce1f6a2f01002103200241c31f6a280000211d200241bc1f6a280200211c200241b41f6a2902002107200241c21f6a2d00002108200241c91f6a2d0000210b20022801ca1f211b20022f01c01f210920022f00c71f210a200241f0046a200241e8166a41d20010c30a1a2004200641107472210420012005411074722105200a200b411074722106200920084110747221080c030b200128020022032802042204450d17200328020022052d0000212320032004417f6a3602042003200541016a360200410321194100212b024020230e020400180b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d18200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241d31e6a280000220341087420022800cf1e2201411876722113200241d71e6a2f0000200241d91e6a2d000041107472410874200341187672210f200141087420022d00ce1e722117200241de1e6a2f0100200241c81e6a41186a2d0000411074722105200241e51e6a2f0000200241e71e6a2d0000411074722104200241da1e6a2801002110200241e11e6a2800002116200241e81e6a280200211420022f01cc1e211a4101212b0c030b200128020022032802042201450d16200328020022042d0000212320032001417f6a3602042003200441016a360200410421194100212b024020230e020300170b4101212b0c020b2004200b41107472210420052006411074722105200241881f6a290300210e200241841f6a280200212a200241fd1e6a2800002122200241f61e6a280100211e200241ef1e6a280000211f200241e81e6a280200212020082800002121200241d31e6a280000211d200241d21e6a2d00002101200241d91e6a2d00002106200241e01e6a2d00002103200241e51e6a2f00002108200241e71e6a2d0000210b200241ec1e6a2f01002109200241ee1e6a2d00002119200241f31e6a2f0000210a200241f51e6a2d0000211a200241fa1e6a2f0100210d200241fc1e6a2d0000212b200241831f6a2d0000210c20022801da1e211b20022802cc1e211c20022f01d01e212320022f00d71e212420022f01de1e212520022f00811f212620023502c81e2107200241900c6a200241e8166a41d20010c30a1a200241f0046a200241900c6a41d20010c30a1a200742208621072026200c41107472210c200d202b41107472210d200a201a41107472210a200920194110747221092008200b41107472210b202520034110747221032024200641107472210620232001411074722108410121190b0b200241a0136a200241f0046a41d20010c30a1a200041256a20044110763a0000200041236a20043b00002000411e6a20054110763a00002000411c6a20053b0100200041266a20143601002000411f6a2016360000200041186a2010360100200041146a200f360100200041106a20133601002000410c6a20173601002000201a3b010a2000202b3a0009200041086a20193a00002000411e3602002000412a6a200241a0136a41d20010c30a1a200041bb016a200c4110763a00002000200c3b00b901200041b4016a200d4110763a00002000200d3b00b201200041ad016a200a4110763a00002000200a3b00ab01200041a6016a20094110763a0000200041a4016a20093b00002000419f016a200b4110763a00002000200b3b009d0120004198016a20034110763a0000200020033b00960120004191016a20064110763a0000200020063b008f012000418a016a20084110763a000020004188016a20083b0100200041c0016a200e370000200041bc016a202a360000200020223600b5012000201e3600ae012000201f3600a701200041a0016a202036000020002021360099012000201b360092012000418b016a201d36000020004184016a201c360100200041fc006a20073701000c2c0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024020060e020001030b200241c81e6a200110b20320022802c81e450d02200241e8166a41086a200241c81e6a41086a280200360200200220022903c81e3703e816410121030c010b200241c81e6a200110b20320022802c81e450d01200241e8166a41086a200241c81e6a41086a280200360200200220022903c81e3703e816410221030b20002003360204200041086a20022903e816370200200041106a200241e8166a41086a2802003602002000411f3602000c2c0b200041253602000c2b0b200241e8166a200110fb07024020022d00e8164107460d00200241900c6a41306a200241e8166a41306a2903002207370300200241900c6a41286a200241e8166a41286a290300220e370300200241900c6a41206a200241e8166a41206a2903002211370300200241900c6a41186a200241e8166a41186a2903002212370300200241c81e6a410c6a200241e8166a41086a290300370200200241c81e6a41146a200241e8166a41106a290300370200200241c81e6a411c6a2012370200200241c81e6a41246a2011370200200241c81e6a412c6a200e370200200241c81e6a41346a2007370200200220022903e8163702cc1e20004120360200200020022902c81e3702042000410c6a200241c81e6a41086a290200370200200041146a200241c81e6a41106a2902003702002000411c6a200241c81e6a41186a290200370200200041246a200241c81e6a41206a2902003702002000412c6a200241c81e6a41286a290200370200200041346a200241c81e6a41306a2902003702002000413c6a200241801f6a2802003602000c2b0b200041253602000c2a0b0240200128020022032802042204450d00200328020022052d0000210820032004417f6a3602042003200541016a360200410721030240024002400240024002400240024020080e0700010203040507080b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d08200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d00002114200241e51e6a2d00002110200241e61e6a280100210f200241ea1e6a2d00002113200241eb1e6a2d00002116200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21062002200241c81e6a41086a290300220e3702ec16200220063602e8162012423886201542308684201142288684200742088684200e4238888421072006410876210a200e421888a7211720022800eb162109410121030c050b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d07200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d00002114200241e51e6a2d00002110200241e61e6a280100210f200241ea1e6a2d00002113200241eb1e6a2d00002116200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21062002200241c81e6a41086a290300220e3702ec16200220063602e8162012423886201542308684201142288684200742088684200e4238888421072006410876210a200e421888a7211720022800eb162109410221030c040b200241c81e6a4104722104200128020022052802042109417f21030340200920036a2206417f460d06200528020022082d0000210b200520063602042005200841016a3602002004200b3a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d00002114200241e51e6a2d00002110200241e61e6a280100210f200241ea1e6a2d00002113200241eb1e6a2d00002116200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21062002200241c81e6a41086a290300220e3702ec16200220063602e8162012423886201542308684201142288684200742088684200e4238888421072006410876210a200e421888a7211720022800eb162109200241c81e6a410472211920012802002201280204210841002103417f2104034020082003460d06200128020022052d0000210b2001200820046a3602042001200541016a360200201920036a200b3a00002002200341016a22053602c81e2004417f6a21042005210320054120470d000b200241f0046a41026a200241d51e6a2d00003a0000200241a0136a41026a200241dc1e6a2d00003a0000200220022f01cc1e3b01900c200220022d00ce1e3a00920c2002200241d31e6a2f00003b01f0042002200241da1e6a2f01003b01a013200241d61e6a2801002119200241dd1e6a280000210b200241e41e6a2802002105200241e81e6a280200210420022800cf1e211d200241800c6a41026a200241e31e6a2d00003a00002002200241e11e6a2f00003b01800c410321030c040b200241c81e6a200110b20320022802c81e2209450d04200241d01e6a350200210720022802cc1e2117410421030c030b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d04200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d00002114200241e51e6a2d00002110200241e61e6a280100210f200241ea1e6a2d00002113200241eb1e6a2d00002116200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21062002200241c81e6a41086a290300220e3702ec16200220063602e8162012423886201542308684201142288684200742088684200e4238888421072006410876210a200e421888a7211720022800eb162109410521030c010b200241c81e6a410472210420012802002201280204210b417f21030340200b20036a2205417f460d03200128020022062d00002108200120053602042001200641016a360200200420083a0000200441016a21042003417f6a2203415f470d000b200241df1e6a280000210c200241e31e6a2d0000210d200241e41e6a2d00002114200241e51e6a2d00002110200241e61e6a280100210f200241ea1e6a2d00002113200241eb1e6a2d00002116200241d81e6a3502002107200241dc1e6a3100002111200241de1e6a3100002112200241dd1e6a310000211520022802cc1e21062002200241c81e6a41086a290300220e3702ec16200220063602e8162012423886201542308684201142288684200742088684200e4238888421072006410876210a200e421888a7211720022800eb162109410621030b0b200020133a00232000200f36001f200020103a001e200020143a001d2000200a3b0006200020063a0005200020033a0004200020022f01900c3b0025200041246a20163a00002000411c6a200d3a0000200041186a200c360000200041106a20073700002000410c6a2017360000200041086a2009360000200041276a20022d00920c3a0000200041286a201d3600002000412f6a2019360000200041366a200b360000200041c1006a20043600002000413d6a20053600002000412e6a200241f0046a41026a2d00003a00002000412c6a20022f01f0043b0000200041356a200241a0136a41026a2d00003a0000200020022f01a0133b00332000413c6a200241800c6a41026a2d00003a0000200020022f01800c3b003a200020022f00e0043b0045200041c7006a200241e0046a41026a2d00003a0000200041213602000c2a0b200041253602000c290b200241c81e6a200110fc07024020022f01c81e4104460d00200020022903c81e3702042000410c6a200241d01e6a290300370200200041223602000c290b200041253602000c280b200241c81e6a2001108a04024020022d00c81e410b460d00200041046a200241c81e6a41c80010c30a1a200041233602000c280b200041253602000c270b200128020022032802042204450d02200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024020060e0400010203080b200241c81e6a200110ba0120022903c81e4209510d07200241e8166a200241c81e6a41c80310c30a1a200241c81e6a200110c00120022d00c81e410b460d06200241900c6a41c0036a200241c81e6a41d00310c30a1a200241800c6a41086a200241a8226a2903003703002002200241a0226a2903003703800c200241c81e6a41d0036a290300210e20022903e8162107200241900c6a200241e8166a41086a41c00310c30a1a410121030c030b200241c81e6a200110ba0120022903c81e4209510d06200241a0136a200241c81e6a41c80310c30a1a200241c81e6a200110ba01024020022903c81e4209510d00200241e8166a200241c81e6a41c80310c30a1a200241c81e6a200110b901024020022802c81e2204450d0020022902cc1e210702402001280200220328020422014108490d0020032802002205290000210e2003200141786a3602042003200541086a360200200241900c6a200241a0136a41c80310c30a1a200241900c6a41c8036a200241e8166a41c80310c30a1a410221030c050b02402007422088a72203450d00200341f8036c2101200421030340200310ac01200341f8036a2103200141887c6a22010d000b0b2007a72203450d00200341f8036c450d00200410390b200241e8166a10af010b200241a0136a10af010c060b200241c81e6a200110ba0120022903c81e4209510d05200241a0136a200241c81e6a41c80310c30a1a200241c81e6a200110ba01024020022903c81e4209510d00200241e8166a200241c81e6a41c80310c30a1a200241c81e6a200110b901024020022802c81e2204450d0020022902cc1e210702402001280200220328020422014108490d0020032802002205290000210e2003200141786a3602042003200541086a360200200241900c6a200241a0136a41c80310c30a1a200241900c6a41c8036a200241e8166a41c80310c30a1a410321030c040b02402007422088a72203450d00200341f8036c2101200421030340200310ac01200341f8036a2103200141887c6a22010d000b0b2007a72203450d00200341f8036c450d00200410390b200241e8166a10af010b200241a0136a10af010c050b2001200128020441016a2203360204200320012802084b0d04200241c81e6a200110a40120022d00c81e2103200241e8166a200241c81e6a41017241df0710c30a1a2003410b460d0441e00710382204450d0e200420033a0000200441016a200241e8166a41df0710c30a1a20012001280204417f6a3602042001280200220328020422014108490d012003280200220529000021072003200141786a3602042003200541086a360200410421030b200241f0046a200241900c6a41900710c30a1a200241e0046a41086a2201200241800c6a41086a290300370300200220022903800c3703e004200041106a20073702002000410c6a2004360200200041086a200336020020004124360200200041186a200241f0046a41900710c30a1a200041a8076a200e370200200041b0076a20022903e004370200200041b8076a20012903003702000c270b200410d303200410390c020b200041253602000c250b200241e8166a10af010b200041253602000c230b1034000b2002200a3a00b42a4188faca00412b200241b42a6a418cd0c60041e0d6ca00103d000b200220063a00f0044188faca00412b200241f0046a418cd0c60041e0d6ca00103d000b200220133a00a42a4188faca00412b200241a42a6a418cd0c60041e0d6ca00103d000b419fd2ca00411b41bcd2ca001035000b200241e8166a200241c81e6a41f00010c30a1a200041286a200241e8166a41f00010c30a1a200041246a2006360200200041206a20093602002000411c6a200b360200200041186a2003360200200041146a2004360200200041106a20053602002000410c6a200a360200200041086a200c3602002000200d3602042000410e3602000c1d0b2003ad22074220862007842112200b20012802002203200810c30a1a2001200520086b3602042001200320086a3602002008410876210c2008411076210d2008411876210920022800cb1e210a410121170c080b20324238862061423086842015422886842012420886842011423888842112200541087621192011421888a7210f20162006280200221d200110c30a1a2006201720016b3602042006201d20016a3602002001ad22114220862011842111410221170c070b419fd2ca00411b41bcd2ca001035000b1030000b200041253602000c180b200041253602000c170b200041253602000c160b200020133a00272000200c3600232000200a3a0022200020093a0021200020063b000a200020033a000920004119360200200020022f00900c3b0029200041286a200f3a0000200041206a200b3a00002000411c6a2004360200200041146a2011370200200041106a20083602002000410c6a2010360200200041086a20013a00002000412b6a200241920c6a2d00003a0000200041c0006a2007370200200041386a200e370200200041346a2014360200200041306a20053602002000412c6a200d3602000c150b200041253602000c140b200020093a00272000200a3600232000200d3a00222000200c3a0021200020193b000a200020053a000920004116360200200041d0006a200e370200200041c8006a2007370200200041c0006a20113702002000413c6a2016360200200041386a2003360200200041346a2003360200200041306a20143602002000412c6a2010360200200041286a2013360200200041206a20083a00002000411c6a200b360200200041146a2012370200200041106a200f3602002000410c6a2004360200200041086a20173a00000c130b200041253602000c120b200041253602000c110b20022802f004210b20022802f8042201450d00200141306c2106200b41086a21010340024020012802002208450d00200841c8006c450d002001417c6a28020010390b200141306a2101200641506a22060d000b0b20022802f4042201450d01200141306c450d010b200b10390b02402003450d00200341f4026c21012005210303402003109f03200341f4026a21032001418c7d6a22010d000b0b2004450d01200441f4026c450d010b200510390b0240200a450d00200a41d0006c2104200d21030340200328020021010240200341086a22052802002206450d00200110390b2003200136020020052006360200200341d0006a2103200441b07f6a22040d000b0b200c450d01200c41d0006c450d01200d10390c010b20022802940c2203450d00200341d0006c450d00200810390b200041253602000c090b200d10390c020b20022802cc1e2201450d002001410c6c450d00200510390b2003450d00201310390b200041253602000c050b200041186a20022903900c370200200241800c6a41026a200241a0136a41026a2d0000220a3a0000200041206a200241900c6a41086a290300370200200041286a200241900c6a41106a290300370200200220022f01a013220d3b01800c200041e0006a2015370200200041d8006a2012370200200041c8006a2011370200200041c0006a200e370200200041386a2009ad4220862008ad84370200200041306a200bad4220862006ad843702002000410c6a20033a0000200041086a2001360200200041043602002000200d3b000d2000410f6a200a3a0000200041d0006a2007370200200041146a2004360200200041106a20053602000c040b200041253602000c030b200220022800e3043600db04200220022802e0043602d804200041386a200241a0136a41e40010c30a1a200041a8016a200241900c6a41800110c30a1a200041206a200a3a0000200041186a200e370200200041106a20073702002000410c6a2001360200200041086a200d36020020004101360200200020022802d804360021200041246a20022800db04360000200041a4016a2008360200200041a0016a20063602002000419c016a200b360200200041346a2003360200200041306a20053602002000412c6a2004360200200041286a20093602000c020b20022802cc1e2203450d00200341186c450d00200410390b200041253602000b200241c02a6a24000b960302067f027e02402001450d00200141386c2103200241086a2101200241046a210403400240024020002903004201510d000240200428020020012802002205470d00200220054101108101200128020021050b200228020020056a41003a0000200541016a21050c010b02402004280200220620012802002205470d0020022005410110810120042802002106200128020021050b2002280200220720056a41013a00002001200541016a22053602000240200620056b411f4b0d002002200541201081012004280200210620012802002105200228020021070b200720056a220841186a200041206a290000370000200841106a200041186a290000370000200841086a200041106a2900003700002008200041086a2900003700002001200541206a2205360200200041306a2903002109200041286a290300210a0240200620056b410f4b0d0020022005411010810120012802002105200228020021070b200720056a220820093700082008200a370000200541106a21050b200041386a210020012005360200200341486a22030d000b0b0bc70101077f02402001450d00200020014103746a2103200241086a22042802002101200241046a210503402000280200210602402005280200220720016b41034b0d0020022001410410810120052802002107200428020021010b2002280200220820016a20063600002004200141046a2206360200200041046a28020021090240200720066b41034b0d0020022006410410810120042802002106200228020021080b2004200641046a2201360200200820066a2009360000200041086a22002003470d000b0b0bc30501097f02400240200141c4006c2203450d00200241086a2101200241046a210403400240024020002d00004101460d0002402004280200220520012802002206470d0020022006410110810120042802002105200128020021060b2002280200220720066a41003a00002001200641016a2206360200200041046a28020021080240200520066b41034b0d0020022006410410810120012802002106200228020021070b200720066a20083600002001200641046a3602000c010b0240200428020020012802002206470d00200220064101108101200128020021060b2002280200220820066a41013a00002001200641016a2205360200412010382206450d03200641186a2209200041196a290000370000200641106a220a200041116a290000370000200641086a220b200041096a2900003700002006200041016a2900003700000240200428020020056b411f4b0d0020022005412010810120012802002105200228020021080b200820056a22072006290000370000200741186a2009290000370000200741106a200a290000370000200741086a200b2900003700002001200541206a2205360200200610390240200041216a2d00004101460d00024020042802002005470d0020022005410110810120012802002105200228020021080b200820056a41003a00002001200541016a3602000c010b024020042802002005470d0020022005410110810120012802002105200228020021080b200041226a2106200820056a41013a00002001200541016a22053602000240200428020020056b411f4b0d00200220054120108101200128020021050b200228020020056a22072006290000370000200741186a200641186a290000370000200741106a200641106a290000370000200741086a200641086a2900003700002001200541206a3602000b200041c4006a2100200341bc7f6a22030d000b0b0f0b1030000bc50401067f02402001450d002001412c6c2103200241046a2104200241086a2105034020042802002106200528020021010240024020002802004102470d00024020062001470d00200220014101108101200528020021010b200228020020016a41003a00002005200141016a3602000c010b024020062001470d00200220014101108101200528020021010b2002280200220620016a41013a00002005200141016a220136020020042802002107024020002802004101460d00024020072001470d002002200141011081012004280200210720052802002101200228020021060b200620016a41003a00002005200141016a2201360200200041046a28020021080240200720016b41034b0d0020022001410410810120052802002101200228020021060b200620016a20083600002005200141046a220136020002402004280200220720016b411f4b0d0020022001412010810120042802002107200528020021010b2002280200220820016a2206200041086a290000370000200641186a200041206a290000370000200641106a200041186a290000370000200641086a200041106a2900003700002005200141206a2201360200200041286a28020021060240200720016b41034b0d0020022001410410810120052802002101200228020021080b200820016a20063600002005200141046a3602000c010b024020072001470d0020022001410110810120052802002101200228020021060b200620016a41013a00002005200141016a3602000b2000412c6a2100200341546a22030d000b0b0bf90102067f017e0240200141286c2201450d00200020016a2103200241086a22042802002101200241046a2105034002402005280200220620016b411f4b0d0020022001412010810120052802002106200428020021010b2002280200220720016a22082000290000370000200841186a200041186a290000370000200841106a200041106a290000370000200841086a200041086a2900003700002004200141206a2208360200200041206a29030021090240200620086b41074b0d0020022008410810810120042802002108200228020021070b2004200841086a2201360200200720086a2009370000200041286a22002003470d000b0b0b810201077f02402001450d00200020014104746a2103200241086a2104200241046a210503402000280200210602402005280200200428020022016b41034b0d00200220014104108101200428020021010b200041106a2107200228020020016a20063600002004200141046a360200200028020421012002200028020c220010d20102402000450d00200041027421082004280200210003402001280200210902400240200528020020006b41034d0d00200021060c010b200220004104108101200428020021060b200141046a21012004200641046a2200360200200228020020066a20093600002008417c6a22080d000b0b2007210020072003470d000b0b0b9e0301047f024002400240200141c000490d00200141808001490d012001418080808004490d020240200041046a22022802002203200041086a22042802002205470d0020002005410110810120022802002103200428020021050b2000280200220220056a41033a00002004200541016a22053602000240200320056b41034b0d00200020054104108101200041086a2802002105200028020021020b200220056a2001360000200041086a200541046a3602000f0b200141027421030240200041046a280200200041086a22052802002201470d00200020014101108101200528020021010b200028020020016a20033a00002005200141016a3602000f0b200141027441017221030240200041046a280200200041086a220528020022016b41014b0d00200020014102108101200528020021010b200028020020016a20033b00002005200141026a3602000f0b200141027441027221030240200041046a280200200041086a220528020022016b41034b0d00200020014104108101200528020021010b200028020020016a20033600002005200141046a3602000be80301067f02402001450d0020002001411c6c6a2103200241086a2104200241046a210503402000280200210120022000280208220610d20102402006450d002006410574210720042802002108034002400240200528020020086b411f4d0d00200821060c010b200220084120108101200428020021060b2004200641206a2208360200200228020020066a22062001290000370000200641086a200141086a290000370000200641106a200141106a290000370000200641186a200141186a290000370000200141206a2101200741606a22070d000b0b200028020c210120022000280214220610d2010240024020060d00200428020021080c010b2006410574210720042802002108034002400240200528020020086b411f4d0d00200821060c010b200220084120108101200428020021060b2004200641206a2208360200200228020020066a22062001290000370000200641086a200141086a290000370000200641106a200141106a290000370000200641186a200141186a290000370000200141206a2101200741606a22070d000b0b2000411c6a2101200028021821060240200528020020086b41034b0d00200220084104108101200428020021080b2004200841046a360200200228020020086a20063600002001210020012003470d000b0b0bd40401077f02402001450d002000200141346c6a2103200241086a22012802002104200241046a210503402000280200210602402005280200220720046b41034b0d0020022004410410810120052802002107200128020021040b2002280200220820046a20063600002001200441046a2204360200200041046a28020021060240200720046b41034b0d0020022004410410810120012802002104200228020021080b200820046a20063600002001200441046a220436020002400240200041086a2d00004101460d00024020052802002004470d0020022004410110810120012802002104200228020021080b200820046a41003a0000200441016a21040c010b024020052802002004470d0020022004410110810120012802002104200228020021080b200820046a41013a00002001200441016a2208360200200041096a210402402005280200220620086b411f4b0d0020022008412010810120052802002106200128020021080b2002280200220920086a22072004290000370000200741186a200441186a290000370000200741106a200441106a290000370000200741086a200441086a2900003700002001200841206a22043602002000412c6a28020021080240200620046b41034b0d0020022004410410810120012802002104200228020021090b200920046a2008360000200441046a21040b20012004360200200041306a28020021080240200528020020046b41034b0d00200220044104108101200128020021040b200228020020046a20083600002001200441046a2204360200200041346a22002003470d000b0b0bd50302097f027e200141086a2102200141046a210341002104034002400240200020046a22052903004201510d000240200328020020022802002205470d00200120054101108101200228020021050b200128020020056a41003a0000200541016a21050c010b02402003280200220620022802002207470d0020012007410110810120032802002106200228020021070b2001280200220820076a41013a00002002200741016a22093602002005410c6a21070240200620096b411f4b0d002001200941201081012003280200210620022802002109200128020021080b200820096a220a2007290000370000200a41186a200741186a290000370000200a41106a200741106a290000370000200a41086a200741086a2900003700002002200941206a2207360200200541086a28020021090240200620076b41034b0d0020012007410410810120022802002107200128020021080b200820076a20093600002002200741046a2207360200200541386a290300210b200541306a290300210c0240200328020020076b410f4b0d00200120074110108101200228020021070b200128020020076a2205200b3700082005200c370000200741106a21050b20022005360200200441c0006a2204418012470d000b0be30301037f0240024002400240200141c000490d00200141808001490d012001418080808004490d020240200241046a2203280200200241086a22042802002205470d00200220054101108101200428020021050b200228020020056a41033a00002004200541016a22053602000240200328020020056b41034b0d00200220054104108101200241086a28020021050b200228020020056a2001360000200241086a200541046a22053602000c030b200141027421030240200241046a280200200241086a22042802002205470d00200220054101108101200428020021050b200228020020056a20033a00002004200541016a22053602000c020b200141027441017221030240200241046a280200200241086a220428020022056b41014b0d00200220054102108101200428020021050b200228020020056a20033b00002004200541026a22053602000c010b200141027441027221030240200241046a280200200241086a220428020022056b41034b0d00200220054104108101200428020021050b200228020020056a20033600002004200541046a22053602000b0240200241046a28020020056b20014f0d00200220052001108101200241086a28020021050b200228020020056a2000200110c30a1a200241086a200520016a3602000b9a0901057f230041206b21020240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013602082001200441016a360200200220053a000c20060d01200041013a00000f0b200041013a00000f0b200128020022042d0000210520012003417e6a22063602042001200441016a360200200220053a000d20024102360208024002400240024002400240024002400240024002400240024002402006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200220053a000e200241033602082006450d01200128020022042d0000210520012003417c6a22063602042001200441016a360200200220053a000f200241043602082006450d02200128020022042d0000210520012003417b6a22063602042001200441016a360200200241106a20053a0000200241053602082006450d03200128020022042d0000210520012003417a6a22063602042001200441016a360200200241116a20053a0000200241063602082006450d04200128020022042d000021052001200341796a22063602042001200441016a360200200241126a20053a0000200241073602082006450d05200128020022042d000021052001200341786a22063602042001200441016a360200200241136a20053a0000200241083602082006450d06200128020022042d000021052001200341776a22063602042001200441016a360200200241146a20053a0000200241093602082006450d07200128020022042d000021052001200341766a22063602042001200441016a360200200241156a20053a00002002410a3602082006450d08200128020022042d000021052001200341756a22063602042001200441016a360200200241166a20053a00002002410b3602082006450d09200128020022042d000021052001200341746a22063602042001200441016a360200200241176a20053a00002002410c3602082006450d0a200128020022042d000021052001200341736a22063602042001200441016a360200200241186a20053a00002002410d3602082006450d0b200128020022042d000021052001200341726a22063602042001200441016a360200200241196a20053a00002002410e3602082006450d0c200128020022042d000021052001200341716a22063602042001200441016a3602002002411a6a220420053a00002002410f3602082006450d0d2002411b6a200128020022052d00003a00002001200341706a3602042001200541016a360200200020022f010c3b0001200041036a20022d000e3a0000200041046a200228000f360000200041086a200241086a410b6a2f00003b00002000410a6a200241156a2d00003a00002000410b6a200241166a280100360000200241103602082000410f6a20042f01003b0000200041003a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000ba90202047f017e230041106b22012400200142003703080240024020002802042202450d0020002002417f6a22033602042001410136020820002000280200220441016a360200200120042d00003a000c2003450d0020002002417e6a220336020420002000280200220441016a36020020014102360208200120042d00003a000d2003450d0020002002417d6a220336020420002000280200220441016a36020020014103360208200120042d00003a000e2003450d0020002002417c6a36020420002000280200220241016a360200200120022d00003a000f20014104360208024020012903082205a741044f0d00419fd2ca00411b41bcd2ca001035000b2005422088a72102410021000c010b41012100410021020b200141106a24002002ad4208862000ad840bdd0b01057f230041206b21020240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013602082001200441016a360200200220053a000c20060d01200041013a00000f0b200041013a00000f0b200128020022042d0000210520012003417e6a22063602042001200441016a360200200220053a000d200241023602080240024002400240024002400240024002400240024002400240024002400240024002402006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200220053a000e200241033602082006450d01200128020022042d0000210520012003417c6a22063602042001200441016a360200200220053a000f200241043602082006450d02200128020022042d0000210520012003417b6a22063602042001200441016a360200200241106a20053a0000200241053602082006450d03200128020022042d0000210520012003417a6a22063602042001200441016a360200200241116a20053a0000200241063602082006450d04200128020022042d000021052001200341796a22063602042001200441016a360200200241126a20053a0000200241073602082006450d05200128020022042d000021052001200341786a22063602042001200441016a360200200241136a20053a0000200241083602082006450d06200128020022042d000021052001200341776a22063602042001200441016a360200200241146a20053a0000200241093602082006450d07200128020022042d000021052001200341766a22063602042001200441016a360200200241156a20053a00002002410a3602082006450d08200128020022042d000021052001200341756a22063602042001200441016a360200200241166a20053a00002002410b3602082006450d09200128020022042d000021052001200341746a22063602042001200441016a360200200241176a20053a00002002410c3602082006450d0a200128020022042d000021052001200341736a22063602042001200441016a360200200241186a20053a00002002410d3602082006450d0b200128020022042d000021052001200341726a22063602042001200441016a360200200241196a20053a00002002410e3602082006450d0c200128020022042d000021052001200341716a22063602042001200441016a3602002002411a6a20053a00002002410f3602082006450d0d200128020022042d000021052001200341706a22063602042001200441016a3602002002411b6a20053a0000200241103602082006450d0e200128020022042d0000210520012003416f6a22063602042001200441016a3602002002411c6a20053a0000200241113602082006450d0f200128020022042d0000210520012003416e6a22063602042001200441016a3602002002411d6a20053a0000200241123602082006450d10200128020022042d0000210520012003416d6a22063602042001200441016a3602002002411e6a20053a0000200241133602082006450d112002411f6a200128020022042d000022053a000020012003416c6a3602042001200441016a360200200020022f010c3b0001200041036a20022d000e3a0000200041046a200228000f360000200041086a200241086a410b6a2f00003b00002000410a6a200241156a2d00003a00002002411d6a2f00002101200241143602082000410b6a200241166a280100360000200041116a200241086a41146a2d00003a00002000410f6a200241086a41126a2f01003b0000200041146a20053a0000200041126a20013b0000200041003a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000f0b200041013a00000b8b0b010a7f230041b0086b2203240020012802002104200128020422052f01ae2b210620034188046a20052001280208220741f8036c6a220141f80310c30a1a2001200141f8036a20062007417f736a41f8036c10c40a1a20052006417f6a22013b01ae2b200341106a20034188046a41f80310c30a1a0240200141ffff037141044b0d0002400240024020052802a82b2206450d00200441016a21080240024020052f01ac2b22090d0020062f01ae2b0d012003419c046a41013602002003420137028c04200341bcfaca0036028804200341043602940820034198f4ca0036029008200320034190086a3602980420034188046a41a0f4ca001043000b024020062009417f6a22094102746a41b02b6a280200220a2f01ae2b200141ffff03716a41016a410b4b0d00200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4101200710db010c040b200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110dc012003200741016a360288080c020b0240200141ffff0371200941027420066a41b42b6a28020022012f01ae2b6a41016a410b4b0d00200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4100200710db010c030b200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110dd010b20032007360288080b200320053602840820032004360280080b2003280288082107200328028008210420032802840822052802a82b2201450d0020012f01ae2b220841044b0d00200441016a21060240034020012802a82b2209450d01200841ffff03712108200641016a210b024002400240024020012f01ac2b220a0d0020092f01ae2b0d012003419c046a41013602002003420137028c04200341bcfaca0036028804200341043602940820034198f4ca0036029008200320034190086a3602980420034188046a41a0f4ca001043000b2009200a417f6a220c4102746a41b02b6a280200210a200320013602a808200320063602a4082003200a3602a0082003200636029c082003200c3602980820032009360294082003200b3602900802402008200a2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200341086a20034188046a10de01200328020c2101200328020821060c030b20034190086a410520086b10dc010c010b2003200a41027420096a41b42b6a280200220c3602a808200320063602a408200320013602a0082003200636029c082003200a3602980820032009360294082003200b3602900802402008200c2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200320034188046a10de0120032802042101200328020021060c020b20034190086a410520086b10dd010b410021010b2001450d0220012f01ae2b220841044d0d000c020b0b200841ffff03710d00200241013a00000b2000200341106a41f80310c30a22014180046a2007360200200141fc036a2005360200200120043602f803200341b0086a24000ba104010e7f23004180046b22042400024002400240200141186a28020022052f01ae2b2206200141106a28020022072f01ae2b220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f01ae2b210f2007200a3b01ae2b200441086a200e200c41f8036c6a220141f80310c30a1a2001200141f8036a200f200c417f736a221041f8036c10c40a1a2007200841f8036c6a200441086a41f80310c30a1a2007200941f8036c6a2005200641f8036c10c30a1a200e41b02b6a2211200c41016a22014102746a200c410274220c20116a41086a201041027410c40a1a02402001200f4f0d00200c200e6a41b42b6a210c0340200c280200221020013b01ac2b2010200e3602a82b200c41046a210c200f200141016a2201470d000b0b200e200e2f01ae2b417f6a3b01ae2b0240200d4102490d002006200a20096b470d03200720094102746a41b02b6a200541b02b6a200641016a221041027410c30a1a200a20084d0d00200841027420076a41b42b6a21012009210c03402001280200220e200c3b01ac2b200e20073602a82b200141046a2101200c41016a210c2010417f6a22100d000b0b20051039200020073602042000200b36020020002009410020021b20036a36020820044180046a24000f0b41acf7ca0041910141c0f8ca001035000b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000bbe0301087f230041f0076b220224000240024002400240200041186a28020022032f01ae2b220420016a2205410c4f0d00200041106a28020022062f01ae2b22072001490d012006200720016b22083b01ae2b200320053b01ae2b2003200141f8036c6a2003200441f8036c10c40a1a2007200841016a22046b22072001417f6a470d0220032006200441f8036c6a200741f8036c220910c30a2107200241f8036a200041046a280200200028020841f8036c6a220341f80310c30a1a20032006200841f8036c6a41f80310c40a1a200720096a2002200241f8036a41f80310c30a220241f80310c30a1a200028020c21030240024020002802140d002003450d010c050b2003450d04200741b02b6a2200200141027422036a2000200520016b41027441046a10c40a1a2000200620044102746a41b02b6a200310c30a1a200541016a21064100210103402000280200220320013b01ac2b200320073602a82b200041046a21002006200141016a2201470d000b0b200241f0076a24000f0b41a0f6ca00413341d4f6ca001035000b41e4f6ca004127418cf7ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca004128419cf7ca001035000b9104010a7f230041f0076b220224000240024002400240200041106a28020022032f01ae2b220420016a2205410c4f0d00200041186a28020022062f01ae2b22072001490d01200320053b01ae2b2006200720016b22083b01ae2b200241f8036a200041046a280200200028020841f8036c6a220741f80310c30a1a200720062001417f6a220941f8036c220a6a41f80310c40a1a2003200441f8036c6a2002200241f8036a41f80310c30a220b41f80310c30a1a20092005200441016a22026b470d022003200241f8036c6a2006200a10c30a1a20062006200141f8036c6a200841f8036c10c40a2107200028020c21060240024020002802140d002006450d010c050b2006450d04200320024102746a41b02b6a200741b02b6a22002001410274220610c30a1a2000200020066a200841027441046a10c40a1a0240200520044d0d00200441027420036a41b42b6a210003402000280200220620023b01ac2b200620033602a82b200041046a2100200241016a21022001417f6a22010d000b0b2008417f460d00200741b02b6a2102200841016a21064100210003402002280200220120003b01ac2b200120073602a82b200241046a21022006200041016a2200470d000b0b200b41f0076a24000f0b41ecf4ca00413241a0f5ca001035000b41b0f5ca00412841d8f5ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca0041284190f6ca001035000be803010d7f23004180046b2202240002400240200141106a28020022032f01ae2b220441016a2205200141186a28020022062f01ae2b22076a2208410c4f0d00200128020821092001280200210a2001280204220b2f01ae2b210c200320083b01ae2b200241086a200b200941f8036c6a220141f80310c30a1a2001200141f8036a200c2009417f736a220d41f8036c10c40a1a2003200441f8036c6a200241086a41f80310c30a1a2003200541f8036c6a2006200741f8036c10c30a1a200b41b02b6a220e200941016a22014102746a20094102742209200e6a41086a200d41027410c40a1a02402001200c4f0d002009200b6a41b42b6a210903402009280200220d20013b01ac2b200d200b3602a82b200941046a2109200c200141016a2201470d000b0b200b200b2f01ae2b417f6a3b01ae2b0240200a4102490d002007200820056b470d02200320054102746a41b02b6a200641b02b6a200741016a220941027410c30a1a200820044d0d00200441027420036a41b42b6a210103402001280200220d20053b01ac2b200d20033602a82b200141046a2101200541016a21052009417f6a22090d000b0b200610392000200b3602042000200a36020020024180046a24000f0b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000bd80b03077f027e037f230041e0076b2203240020012802002104200128020422052f01a6292106200341e0036a20052001280208220741d0036c6a220141d00310c30a1a2001200141d0036a20062007417f736a220841d0036c10c40a1a200541f0276a220920074104746a220141086a290300210a2001290300210b20012009200741016a220c4104746a200841047410c40a1a20052006417f6a22013b01a629200341106a200341e0036a41d00310c30a1a0240200141ffff037141044b0d0002400240024020052802a0292206450d00200441016a21090240024020052f01a42922080d0020062f01a6290d01200341f4036a4101360200200342013702e403200341bcfaca003602e003200341043602c40720034198f4ca003602c0072003200341c0076a3602f003200341e0036a41a0f4ca001043000b024020062008417f6a22084102746a41a8296a280200220d2f01a629200141ffff03716a41016a410b4b0d00200341f8036a2005360200200341f0036a200d360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341b0076a200341e0036a4101200710e0010c040b200341f8036a2005360200200341f0036a200d360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341e0036a410110e1012003200c3602b8070c020b0240200141ffff0371200841027420066a41ac296a28020022012f01a6296a41016a410b4b0d00200341f8036a2001360200200341f0036a2005360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341b0076a200341e0036a4100200710e0010c030b200341f8036a2001360200200341f0036a2005360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341e0036a410110e2010b200320073602b8070b200320053602b407200320043602b0070b20032802b807210720032802b007210420032802b40722052802a0292201450d0020012f01a629220941044b0d00200441016a21060240034020012802a0292208450d01200941ffff03712109200641016a210d024002400240024020012f01a429220c0d0020082f01a6290d01200341f4036a4101360200200342013702e403200341bcfaca003602e003200341043602c40720034198f4ca003602c0072003200341c0076a3602f003200341e0036a41a0f4ca001043000b2008200c417f6a220e4102746a41a8296a280200210c200320013602d807200320063602d4072003200c3602d007200320063602cc072003200e3602c807200320083602c4072003200d3602c00702402009200c2f01a6296a41016a410b4b0d00200341e0036a41186a200341c0076a41186a280200360200200341e0036a41106a200341c0076a41106a290300370300200341e0036a41086a200341c0076a41086a290300370300200320032903c0073703e003200341086a200341e0036a10e301200328020c2101200328020821060c030b200341c0076a410520096b10e1010c010b2003200c41027420086a41ac296a280200220e3602d807200320063602d407200320013602d007200320063602cc072003200c3602c807200320083602c4072003200d3602c00702402009200e2f01a6296a41016a410b4b0d00200341e0036a41186a200341c0076a41186a280200360200200341e0036a41106a200341c0076a41106a290300370300200341e0036a41086a200341c0076a41086a290300370300200320032903c0073703e0032003200341e0036a10e30120032802042101200328020021060c020b200341c0076a410520096b10e2010b410021010b2001450d0220012f01a629220941044d0d000c020b0b200941ffff03710d00200241013a00000b2000200341106a41d00310c30a220141d8036a200a3703002001200b3703d003200141e8036a2007360200200141e4036a2005360200200120043602e003200341e0076a24000b8305020f7f027e230041d0036b22042400024002400240200141186a28020022052f01a6292206200141106a28020022072f01a629220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f01a629210f2007200a3b01a6292004200e200c41d0036c6a220141d00310c30a21102001200141d0036a200f200c417f736a220441d0036c10c40a1a2007200841d0036c6a201041d00310c30a1a2007200941d0036c6a2005200641d0036c10c30a1a200e41f0276a2211200c4104746a22122903002113201241086a290300211420122011200c41016a22014104746a200441047410c40a1a200741f0276a221220084104746a2211201437030820112013370300201220094104746a200541f0276a200641047410c30a1a200e41a8296a221220014102746a200c410274220c20126a41086a200441027410c40a1a02402001200f4f0d00200c200e6a41ac296a210c0340200c280200220420013b01a4292004200e3602a029200c41046a210c200f200141016a2201470d000b0b200e200e2f01a629417f6a3b01a6290240200d4102490d002006200a20096b470d03200720094102746a41a8296a200541a8296a200641016a220441027410c30a1a200a20084d0d00200841027420076a41ac296a21012009210c03402001280200220e200c3b01a429200e20073602a029200141046a2101200c41016a210c2004417f6a22040d000b0b20051039200020073602042000200b36020020002009410020021b20036a360208201041d0036a24000f0b41acf7ca0041910141c0f8ca001035000b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000be004040a7f027e017f017e230041a0076b220224000240024002400240200041186a28020022032f01a629220420016a2205410c4f0d00200041106a28020022062f01a62922072001490d012006200720016b22083b01a629200320053b01a6292003200141d0036c6a2003200441d0036c10c40a1a200341f0276a220920014104746a2009200441047410c40a1a2007200841016a220a6b22072001417f6a470d0220032006200a41d0036c6a200741d0036c220b10c30a21042009200641f0276a2203200a4104746a2007410474220710c30a1a200320084104746a220341086a290300210c2003290300210d200241d0036a200041046a28020022032000280208220941d0036c6a220e41d00310c30a1a200e2006200841d0036c6a41d00310c40a1a200320094104746a220341f0276a2208290300210f2008200d370300200341f8276a2203290300210d2003200c3703002004200b6a2002200241d0036a41d00310c30a220241d00310c30a1a200420076a220341f8276a200d370300200341f0276a200f370300200028020c21030240024020002802140d002003450d010c050b2003450d04200441a8296a2200200141027422036a2000200520016b41027441046a10c40a1a20002006200a4102746a41a8296a200310c30a1a200541016a21064100210103402000280200220320013b01a429200320043602a029200041046a21002006200141016a2201470d000b0b200241a0076a24000f0b41a0f6ca00413341d4f6ca001035000b41e4f6ca004127418cf7ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca004128419cf7ca001035000bab05040a7f027e037f017e230041a0076b220224000240024002400240200041106a28020022032f01a629220420016a2205410c4f0d00200041186a28020022062f01a62922072001490d01200320053b01a6292006200720016b22083b01a629200641f0276a22092001417f6a2207410474220a6a220b41086a290300210c200b290300210d200241d0036a200041046a280200220b2000280208220e41d0036c6a220f41d00310c30a1a200f2006200741d0036c22106a41d00310c40a1a200b200e4104746a220b41f0276a220e2903002111200e200d370300200b41f8276a220b290300210d200b200c3703002003200441d0036c6a2002200241d0036a41d00310c30a220e41d00310c30a1a200341f0276a220b20044104746a2202200d3703082002201137030020072005200441016a22026b470d022003200241d0036c6a2006201010c30a1a200b20024104746a2009200a10c30a1a20062006200141d0036c6a200841d0036c10c40a21072009200920014104746a200841047410c40a1a200028020c21060240024020002802140d002006450d010c050b2006450d04200320024102746a41a8296a200741a8296a22002001410274220610c30a1a2000200020066a200841027441046a10c40a1a0240200520044d0d00200441027420036a41ac296a210003402000280200220620023b01a429200620033602a029200041046a2100200241016a21022001417f6a22010d000b0b2008417f460d00200741a8296a2102200841016a21064100210003402002280200220120003b01a429200120073602a029200241046a21022006200041016a2200470d000b0b200e41a0076a24000f0b41ecf4ca00413241a0f5ca001035000b41b0f5ca00412841d8f5ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca0041284190f6ca001035000bca04020e7f027e230041d0036b2202240002400240200141106a28020022032f01a629220441016a2205200141186a28020022062f01a62922076a2208410c4f0d00200128020821092001280200210a2001280204220b2f01a629210c200320083b01a6292002200b200941d0036c6a220141d00310c30a210d2001200141d0036a200c2009417f736a220241d0036c10c40a1a2003200441d0036c6a200d41d00310c30a1a2003200541d0036c6a2006200741d0036c10c30a1a200b41f0276a220e20094104746a220f2903002110200f41086a2903002111200f200e200941016a22014104746a200241047410c40a1a200341f0276a220f20044104746a220e2011370308200e2010370300200f20054104746a200641f0276a200741047410c30a1a200b41a8296a220f20014102746a20094102742209200f6a41086a200241027410c40a1a02402001200c4f0d002009200b6a41ac296a210903402009280200220220013b01a4292002200b3602a029200941046a2109200c200141016a2201470d000b0b200b200b2f01a629417f6a3b01a6290240200a4102490d002007200820056b470d02200320054102746a41a8296a200641a8296a200741016a220941027410c30a1a200820044d0d00200441027420036a41ac296a210103402001280200220220053b01a429200220033602a029200141046a2101200541016a21052009417f6a22090d000b0b200610392000200b3602042000200a360200200d41d0036a24000f0b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000bc50b010d7f23004180016b22032400200341306a41086a22042001280204220541086a2206200128020822074105746a220841086a290000370300200341306a41106a2209200841106a290000370300200341306a41186a220a200841186a290000370300200320082900003703302001280200210b20082006200741016a220c4105746a20052f010622012007417f736a41057410c40a1a20052001417f6a22083b0106200341106a41186a220d200a290300370300200341106a41106a220e2009290300370300200341106a41086a220f2004290300370300200320032903303703100240200841ffff037141044b0d0002400240024020052802002201450d00200b41016a21060240024020052f010422040d0020012f01060d01200341c4006a410136020020034201370234200341bcfaca003602302003410436026420034198f4ca003602602003200341e0006a360240200341306a41a0f4ca001043000b024020012004417f6a22044102746a41e8026a28020022092f0106200841ffff03716a41016a410b4b0d00200341c8006a2005360200200341c0006a20093602002003200b3602442003200b36023c200320043602382003200136023420032006360230200341d0006a200341306a4101200710e5010c040b200341c8006a2005360200200341c0006a20093602002003200b3602442003200b36023c200320043602382003200136023420032006360230200341306a410110e6012003200c3602580c020b0240200841ffff0371200441027420016a41ec026a28020022082f01066a41016a410b4b0d00200341c8006a2008360200200341c0006a20053602002003200b3602442003200b36023c200320043602382003200136023420032006360230200341d0006a200341306a4100200710e5010c030b200341c8006a2008360200200341c0006a20053602002003200b3602442003200b36023c200320043602382003200136023420032006360230200341306a410110e7010b200320073602580b200320053602542003200b3602500b200328025821072003280250210b200328025422052802002208450d0020082f0106220641044b0d00200b41016a21010240034020082802002204450d01200641ffff03712106200141016a210a024002400240024020082f010422090d0020042f01060d01200341c4006a410136020020034201370234200341bcfaca003602302003410436026420034198f4ca003602602003200341e0006a360240200341306a41a0f4ca001043000b20042009417f6a220c4102746a41e8026a28020021092003200836027820032001360274200320093602702003200136026c2003200c360268200320043602642003200a3602600240200620092f01066a41016a410b4b0d00200341306a41186a200341e0006a41186a280200360200200341306a41106a200341e0006a41106a290300370300200341306a41086a200341e0006a41086a29030037030020032003290360370330200341086a200341306a10e801200328020c2108200328020821010c030b200341e0006a410520066b10e6010c010b2003200941027420046a41ec026a280200220c36027820032001360274200320083602702003200136026c20032009360268200320043602642003200a36026002402006200c2f01066a41016a410b4b0d00200341306a41186a200341e0006a41186a280200360200200341306a41106a200341e0006a41106a290300370300200341306a41086a200341e0006a41086a290300370300200320032903603703302003200341306a10e80120032802042108200328020021010c020b200341e0006a410520066b10e7010b410021080b2008450d0220082f0106220641044d0d000c020b0b200641ffff03710d00200241013a00000b200020032903103700002000200b360220200041286a2007360200200041246a2005360200200041186a200d290300370000200041106a200e290300370000200041086a200f29030037000020034180016a24000bf60401127f230041206b22042400024002400240200141186a28020022052f01062206200141106a28020022072f0106220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f0106210f2007200a3b0106200441186a2210200e41086a2211200c4105746a221241186a290000370300200441106a2213201241106a290000370300200441086a2214201241086a2900003703002004201229000037030020122011200c41016a22014105746a200f200c417f736a221141057410c40a1a200741086a221520084105746a221241186a2010290300370000201241106a2013290300370000201241086a201429030037000020122004290300370000201520094105746a200541086a200641057410c30a1a200e41e8026a221220014102746a200c410274220c20126a41086a201141027410c40a1a02402001200f4f0d00200c200e6a41ec026a210c0340200c280200221220013b01042012200e360200200c41046a210c200f200141016a2201470d000b0b200e200e2f0106417f6a3b01060240200d4102490d002006200a20096b470d03200720094102746a41e8026a200541e8026a200641016a221241027410c30a1a200a20084d0d00200720084102746a41ec026a21012009210c03402001280200220e200c3b0104200e2007360200200141046a2101200c41016a210c2012417f6a22120d000b0b20051039200020073602042000200b36020020002009410020021b20036a360208200441206a24000f0b41acf7ca0041910141c0f8ca001035000b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000b8e05020b7f057e230041c0006b220224000240024002400240200041186a28020022032f0106220420016a2205410c4f0d00200041106a28020022062f010622072001490d012006200720016b22083b0106200320053b0106200341086a220920014105746a2009200441057410c40a1a2007200841016a22046b22072001417f6a470d022009200641086a220a20044105746a2007410574220b10c30a2109200041046a28020020002802084105746a220741086a220c290000210d200a20084105746a220841186a290000210e200841106a290000210f200841086a2900002110200c2008290000370000200741106a2208290000211120082010370000200241206a41086a22082011370300200741186a220a2900002110200a200f370000200241206a41106a220a2010370300200741206a2207290000210f2007200e370000200241206a41186a2207200f3703002002200d370320200241186a2007290300220d370300200241106a200a290300220e370300200241086a2008290300220f3703002002200229032022103703002009200b6a220741186a200d370000200741106a200e370000200741086a200f37000020072010370000200028020c21070240024020002802140d002007450d010c050b2007450d04200341e8026a2200200141027422076a2000200520016b41027441046a10c40a1a2000200620044102746a41e8026a200710c30a1a200541016a21084100210103402000280200220720013b010420072003360200200041046a21002008200141016a2201470d000b0b200241c0006a24000f0b41a0f6ca00413341d4f6ca001035000b41e4f6ca004127418cf7ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca004128419cf7ca001035000be20504087f017e047f047e230041c0006b220224000240024002400240200041106a28020022032f0106220420016a2205410c4f0d00200041186a28020022062f010622072001490d01200320053b01062006200720016b22083b0106200041046a28020020002802084105746a220741086a2209290000210a200641086a220b2001417f6a220c410574220d6a220e41186a290000210f200e41106a2900002110200e41086a29000021112009200e290000370000200741106a220e2900002112200e2011370000200241206a41086a220e2012370300200741186a2209290000211120092010370000200241206a41106a22092011370300200741206a220729000021102007200f370000200241206a41186a220720103703002002200a370320200241186a2007290300220a370300200241106a2009290300220f370300200241086a200e2903002210370300200220022903202211370300200341086a220e20044105746a220741186a200a370000200741106a200f370000200741086a201037000020072011370000200c2005200441016a22076b470d02200e20074105746a200b200d10c30a1a200b200b20014105746a200841057410c40a1a200028020c210e0240024020002802140d00200e450d010c050b200e450d04200320074102746a41e8026a200641e8026a22002001410274220e10c30a1a20002000200e6a200841027441046a10c40a1a0240200520044d0d00200441027420036a41ec026a210003402000280200220e20073b0104200e2003360200200041046a2100200741016a21072001417f6a22010d000b0b2008417f460d00200641e8026a2107200841016a210e4100210003402007280200220120003b010420012006360200200741046a2107200e200041016a2200470d000b0b200241c0006a24000f0b41ecf4ca00413241a0f5ca001035000b41b0f5ca00412841d8f5ca001035000b4188f3ca00412841b0f3ca001035000b41e8f5ca0041284190f6ca001035000bbd0401117f230041206b2202240002400240200141106a28020022032f0106220441016a2205200141186a28020022062f010622076a2208410c4f0d00200128020821092001280200210a2001280204220b2f0106210c200320083b0106200241186a220d200b41086a220e20094105746a220f41186a290000370300200241106a2210200f41106a290000370300200241086a2211200f41086a2900003703002002200f290000370300200f200e200941016a22014105746a200c2009417f736a220e41057410c40a1a200341086a221220044105746a220f41186a200d290300370000200f41106a2010290300370000200f41086a2011290300370000200f2002290300370000201220054105746a200641086a200741057410c30a1a200b41e8026a220f20014102746a20094102742209200f6a41086a200e41027410c40a1a02402001200c4f0d002009200b6a41ec026a210903402009280200220f20013b0104200f200b360200200941046a2109200c200141016a2201470d000b0b200b200b2f0106417f6a3b01060240200a4102490d002007200820056b470d02200320054102746a41e8026a200641e8026a200741016a220941027410c30a1a200820044d0d00200441027420036a41ec026a210103402001280200220f20053b0104200f2003360200200141046a2101200541016a21052009417f6a22090d000b0b200610392000200b3602042000200a360200200241206a24000f0b41b0f4ca00412a41dcf4ca001035000b4188f3ca00412841b0f3ca001035000ba50302027f047e02402000200110ea01220241ff01710d00024002400240024002400240024020002d00d003220320012d00d0032202470d00410021022003417f6a0e06050102030406070b417f410120032002491b0f0b20034102470d05200041d1036a200141d1036a410410c60a2200450d05417f410120004100481b0f0b20034103470d04200041d1036a200141d1036a410810c60a2200450d04417f410120004100481b0f0b20034104470d03200041d1036a200141d1036a411010c60a2200450d03417f410120004100481b0f0b20034105470d02200041d1036a200141d1036a412010c60a2200450d02417f410120004100481b0f0b20034101470d01417f200041d8036a2903002204200141d8036a290300220585200041e0036a2903002206200141e0036a290300220785844200522004200554200620075420062007511b1b0f0b20034106470d000240200041d4036a280200200141d4036a280200200141dc036a2802002201200041dc036a2802002200200020014b1b10c60a22020d00417f200020014720002001491b0f0b417f410120024100481b21020b20020bf90702027f017e02402000280200220220012802002203470d000240024020020d00024002400240024002400240024002400240200041086a2802002203200141086a2903002204a72202470d00410021022003417f6a0e0801020304050607080a0b417f410120032002491b0f0b20044201520d08200041106a200141106a10eb010f0b20044202520d07200041106a200141106a10eb01220241ff01710d07200041c8006a200141c8006a10eb010f0b20044203520d06200041106a200141106a10eb01220241ff01710d06200041c8006a200141c8006a10eb01220241ff01710d0620004180016a20014180016a10eb010f0b20044204520d05200041106a200141106a10eb01220241ff01710d05200041c8006a200141c8006a10eb01220241ff01710d0520004180016a20014180016a10eb01220241ff01710d05200041b8016a200141b8016a10eb010f0b20044205520d04200041106a200141106a10eb01220241ff01710d04200041c8006a200141c8006a10eb01220241ff01710d0420004180016a20014180016a10eb01220241ff01710d04200041b8016a200141b8016a10eb01220241ff01710d04200041f0016a200141f0016a10eb010f0b20044206520d03200041106a200141106a10eb01220241ff01710d03200041c8006a200141c8006a10eb01220241ff01710d0320004180016a20014180016a10eb01220241ff01710d03200041b8016a200141b8016a10eb01220241ff01710d03200041f0016a200141f0016a10eb01220241ff01710d03200041a8026a200141a8026a10eb010f0b20044207520d02200041106a200141106a10eb01220241ff01710d02200041c8006a200141c8006a10eb01220241ff01710d0220004180016a20014180016a10eb01220241ff01710d02200041b8016a200141b8016a10eb01220241ff01710d02200041f0016a200141f0016a10eb01220241ff01710d02200041a8026a200141a8026a10eb01220241ff01710d02200041e0026a200141e0026a10eb010f0b20044208520d01200041106a200141106a10eb01220241ff01710d01200041c8006a200141c8006a10eb01220241ff01710d0120004180016a20014180016a10eb01220241ff01710d01200041b8016a200141b8016a10eb01220241ff01710d01200041f0016a200141f0016a10eb01220241ff01710d01200041a8026a200141a8026a10eb01220241ff01710d01200041e0026a200141e0026a10eb01220241ff01710d0120004198036a20014198036a10eb010f0b0240200028020420012802042001410c6a28020022012000410c6a2802002200200020014b1b10c60a22020d00417f200020014720002001491b0f0b417f410120024100481b21020b20020f0b417f410120022003491b0b860a03037f047e017f024002400240024002400240024002400240024002400240024002400240024002400240024020002d0000220220012d00002203470d00410021032002417f6a0e090401060208090a0c030c0b417f410120022003491b0f0b20024102460d0341000f0b20024104460d0441000f0b20024109460d0741000f0b4100210320024101470d07417f200041046a2802002202200141046a28020022004720022000491b0f0b200041246a2802002202200141246a2802002203470d07024020024101470d00200041286a280200200141286a280200200141306a2802002202200041306a2802002204200420024b1b10c60a22030d0941ff01210320042002490d07200420024722030d070b41002103200041016a200141016a412010c60a2202450d06417f410120024100481b0f0b4100210320024103470d05200041046a2802002202200141046a2802002203470d08024020024101470d00200041086a280200200141086a280200200141106a2802002202200041106a2802002204200420024b1b10c60a22030d0a41ff01210320042002490d06200420024722030d060b417f200041186a2903002205200141186a29030022065220052006541b0f0b200041186a2802002202200141186a2802002203470d09024020024101470d002000411c6a2802002001411c6a280200200141246a2802002202200041246a2802002204200420024b1b10c60a22030d0b41ff01210320042002490d05200420024722030d050b41002103200041016a200141016a411410c60a2202450d04417f410120024100481b0f0b4100210320024105470d03417f20002d0001220220012d000122004720022000491b0f0b4100210320024106470d02417f200041086a2903002207200141086a290300220885200041106a2903002205200141106a290300220685844200522007200854200520065420052006511b1b0f0b4100210320024107470d010240200041046a280200200141046a2802002001410c6a28020022022000410c6a2802002200200020024b1b10c60a22010d00417f200020024720002002491b0f0b417f410120014100481b0f0b02400240024002400240200041046a2802002202200141046a2802002203470d002002417f6a0e020102040b417f410120022003491b0f0b0240200041086a280200200141086a280200200141106a2802002202200041106a2802002204200420024b1b10c60a22030d0041ff01210320042002490d04200420024721030c020b417f410120034100481b0f0b41ff012103200041086a2802002202200141086a2802002204490d02200220044721030b20030d010b02400240024002400240200041146a2802002202200141146a2802002203470d002001411c6a2802002104200141186a28020021012000411c6a2802002109200041186a2802002100410021032002417f6a0e0401020304050b417f410120022003481b0f0b417f200020014720002001491b0f0b41ff01210320002001490d024101210320002001470d02417f200920044720092004491b0f0b41ff01210320002001490d014101210320002001470d01417f200920044720092004491b0f0b41ff01210320002001490d004101210320002001470d00417f200920044720092004491b21030b20030f0b417f410120022003491b0f0b417f410120034100481b0f0b417f410120022003491b0f0b417f410120034100481b0f0b417f410120022003491b0f0b417f410120034100481b0bce0101037f230041206b220324002002210402400240034020022f01062105024020010d002001450d020c030b2001450d022001417f6a2101200220054102746a41e8026a280200210220042802e80221040c000b0b2000200136020c200041003602082000200436020420002001360200200041146a2005360200200041106a2002360200200341206a24000f0b200341146a410136020020034201370204200341bcfaca003602002003410436021c200341b4faca003602182003200341186a360210200341c4faca001043000b130020004102360204200041b8c6c0003602000b13002000410a3602042000419cc9c0003602000bd60404027f017e037f047e230041306b22032400200341106a200110f001200320032802102204200328021810f10120032902044200200328020022011b210541002802fcad49210602402003280214450d00200410390b2001200620011b21072005a72108024002402005422088a7220641386c2201450d00024002402007290300427f7c22054201580d00420021094200210a0c010b02402005a70e020002000b200741306a29030021052007290328210b200341106a41186a200741206a290000370300200341106a41106a200741186a290000370300200341186a200741106a2900003703002003200729000837031042002005200341106a2002412010c60a22041b210a4200200b20041b21090b0240200720016a200741386a460d00200741e0006a2101200641386c41486a210603404200210b420021050240200141586a290300427f7c220c4201560d000240200ca70e020003000b200141086a29030021052001290300210b200341106a41186a200141606a220441186a290000370300200341106a41106a200441106a290000370300200341106a41086a200441086a2900003703002003200429000037031042002005200341106a2002412010c60a22041b21054200200b20041b210b0b200a20052009200b56200a200556200a2005511b22041b210a2009200b20041b2109200141386a2101200641486a22060d000b0b2008450d01200841386c450d01200710390c010b4200210902402008450d004200210a200841386c450d0120071039420021090b4200210a0b200020093703002000200a370308200341306a24000be90301067f230041d0006b22022400200241086a418d80c400410510f201200241186a41bfd2c000410610f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bb90201017f230041e0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a10be02024002402003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b2003420037022c2003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341c4006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b200041003602000b2002450d00200110390b200341e0006a24000b3e002002ad4220862001ad8410152101200041086a2202420037000020004200370000200020012900003700002002200141086a290000370000200110390b1d01017e2001ad4220862000ad841016220029000021022000103920020bab0b04077f017e037f017e230041c00b6b22062400200641d0006a4200370300200641c8006a22074200370300200641c0006a420037030020064200370338200641386a41b9fec300410610f201200741b0eec900410610f201200641106a200641386a412010f5014102210802402004200628021441c0f0006e410020062802101b22096b220720044b0d00200641186a200010f001200641386a2006280218200628022010f101024002402006280238220a0d002006420037022c4100210b200641002802fcad49220a3602284100210c0c010b200629023c210d2006200a3602282006200d37022c200d422088a7210c200da7210b0b024002402007200c4b0d00200c21080c010b200c21080240200b200c6b2007200c6b220e4f0d00200641286a200c200e10f601200628023021082006280228210a0b200a200841386c6a210a0240200e4102490d002009200c6a20046b41016a210c0340200a4200370300200a41386a210a200c41016a220b200c49210f200b210c200f450d000b200e20086a417f6a21080b0240200e450d00200a4200370300200841016a21080b200620083602300b024002400240024002402007200720056a4f0d00200441386c200941386c6b210c2005210b0340024002400240200820074d0d00200820074d0d052006280228200c6a220a290300500d01410121080c070b20072008470d01200641386a41186a220f200141186a290000370300200641386a41106a220e200141106a290000370300200641386a41086a2210200141086a2900003703002006200129000037033802402008200628022c470d0020082008470d00200641286a2008410110f601200628023021080b2006280228200841386c6a220a4201370300200a2006290338370308200a41306a2003370300200a41286a2002370300200a41106a2010290300370300200a41186a200e290300370300200a41206a200f2903003703002006200841016a22083602300c010b200641386a41186a220f200141186a290000370300200641386a41106a220e200141106a290000370300200641386a41086a2210200141086a29000037030020062001290000370338200820074d0d04200a4201370300200a41306a2003370300200a41286a2002370300200a41086a2006290338370300200a41106a2010290300370300200a41186a200e290300370300200a41206a200f2903003703000b200741016a2107200c41386a210c200b417f6a220b0d000b0b20062000200110ef01024020022006290300220d7d22112002562003200641086a2903007d2002200d54ad7d220d200356200d2003511b22070d00200641386a20012011200d10f7014100210820062d00384108470d030b4200200d20071b210d4200201120071b2111024020092004470d00200641386a200010f80120062802382208200628024010f90141ff017121070240200628023c450d00200810390b20074101470d00200010fa010d00200010fb010b20064188016a200337030020064180016a2002370300200641f8006a200d370300200641386a41386a2011370300200641c1006a2001290000370000200641ec006a2005360200200641e8006a2004360200200641e4006a2000360200200641386a41086a220741013a0000200641d9006a200141186a290000370000200641d1006a200141106a290000370000200641c9006a200141086a2900003700002006410d3a0038200641386a10fc012007200641286a41086a2802003602002006200629032822023703382006280220210720062802182108024002402002a7220a0d002008200710fd010c010b20082007200641386a10fe01200628023c2207450d00200741386c450d00200a10390b410321080c030b2007200841c8d2c000103c000b2007200841d8d2c000103c000b200628022c2207450d00200741386c450d00200628022810390b200628021c450d00200628021810390b200641c00b6a240020080b890201037f230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b2003420037021c410021012003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e7020240200328021c450d00200328021810390b0b2005450d00200410390b2000200236020420002001360200200341d0006a24000bd60102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42387e2205422088a74541037421022005a721040240024020010d00200341003602100c010b200341106a41086a41083602002003200141386c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141386e360200200341206a24000f0b1034000ba31305017f017e017f077e067f230041e00c6b22042400420021050240024020022003844200520d00200041083a00000c010b200441c8006a200110dd02200441d8016a20042802482206200428025010e1024200210742002108420021094200210a4200210b4200210c4200210d024020042903d8014201520d0020044198026a290300210720044190026a290300210520044188026a290300210920044180026a2903002108200441f8016a290300210b200441f0016a290300210a200441e8016a290300210d20042903e001210c0b0240200428024c450d00200610390b024002400240200c2008200a8484200d2009200b848484500d00200441286a21060c010b200441286a210620052007844200520d00200441d0016a4200370300200441c8016a4200370300200441c0016a4200370300200442003703b8014100210e4101210f200441286a21064200210c4200210d4200210a4200210b0c010b200441286a41186a2007370300200420053703382004200837032820042009370330200441b8016a41186a200641186a290300370300200441b8016a41106a200641106a290300370300200441b8016a41086a200641086a290300370300200420062903003703b8014101210e4100210f0b4104211041032111024002400240200c20027d2208200c56200d20037d200c200254ad7d220c200d56200c200d511b450d0041bcaac400ad210241800421064280808080b002210c0c010b0240200a20027c2209200a542212200b20037c2012ad7c220d200b54200d200b511b450d00410021064101211041072111420021024200210c0c010b200441f8006a200110dd02200441d8016a2004280278221320042802800110e10220044188026a290300420020042903d80142015122121b210b20044180026a290300420020121b210a0240200428027c450d00201310390b0240200a200856200b200c56200b200c511b450d00419caac400ad210241800221064280808080d002210c0c010b42002105200fad210702400240427f200820097c220b200b2008542211200c200d7c2011ad7c220b200c54200b200c511b22111b220a42ffc7afa02556427f200b20111b220b420052200b5022111b0d002008200984200c200d848422055021122005420052ad21050c010b200441d8016a41186a200441b8016a41186a290300370300200441d8016a41106a200441b8016a41106a290300370300200441d8016a41086a200441b8016a41086a290300370300200420042903b8013703d801410121120b200620042903d801370300200641186a200441d8016a41186a290300370300200641106a200441d8016a41106a290300370300200641086a200441d8016a41086a290300370300200441f0006a200b370300200441e8006a2213200a370300200441c8006a41106a200c370300200420083703502004200537036020042007370348024002400240024002400240200f200a42ffc7afa02556200b42005220111b221071450d00200420013602d8012001200441d8016a10f0020c010b0240200e4101732010720d00200420013602d8012001200441d8016a10e00241ff017122104103460d0120100e03020103020b200e2010724101470d010b200441f8006a41186a200641186a290300370300200441f8006a41106a200641106a290300370300200441f8006a41086a200641086a2903003703002004200629030037037820044198016a200110dd02200441d8016a200428029801220620042802a001221010e1020240024020042903d8014201510d00200441a8016a41086a4200370300200442003703a8010c010b200441a8016a41086a200441a8026a2903003703002004200441a0026a2903003703a8010b4200210502400240200a42ffc7afa02556200b42005220111b0d00200441f0016a4200370300200441e8016a4200370300200441e0016a4200370300200442003703d8014200210d420021084200210c0c010b200441d8016a41186a200441f8006a41186a290300370300200441d8016a41106a200441f8006a41106a290300370300200441d8016a41086a200441f8006a41086a290300370300200420042903783703d801200921050b200441b8016a41186a200441d8016a41186a2211290300220b370300200441b8016a41106a200441d8016a41106a220f290300220a370300200441b8016a41086a200441d8016a41086a220e2903002209370300200420042903d80122073703b801200441f8016a200d37030020112005370300200f200c370300200441d8016a41286a200737030020044188026a200937030020044190026a200a37030020044198026a200b370300200441a0026a20042903a801370300200441a8026a200441a8016a41086a290300370300200420083703e001200442013703d80120062010200e10e2020240200428029c01450d00200610390b200441c8006a41106a290300210c200441c8006a41286a290300210b200429035021082004290368210a20042903482107200429036021050b024020074201520d0020044190026a200c37030020044188026a2008370300200441e1016a2001290000370000200441d8016a41086a41003a0000200441f9016a200141186a290000370000200441f1016a200141106a290000370000200441e9016a200141086a290000370000200441023a00d801200441d8016a10fc010b200550450d014200210c0c020b4104211141002106024020120d00200420133602d801200441d8016a10a4060b0c030b200441d8016a41186a200141186a290000370300200441d8016a41106a200141106a290000370300200441d8016a41086a200141086a290000370300200420012900003703d8014201210c0b200441086a41186a200441d8016a41186a2206290300220d370300200441086a41106a200441d8016a41106a22112903002208370300200441086a41086a200441d8016a41086a22102903002209370300200420042903d801220537030820044188026a220f200b37030020044180026a220e200a3703002011200937030020062008370300200441f8016a200d3703002004200c3703d801200420053703e001200441d8016a10ec07024020042903d801500d002004200e360248200441c8006a10a4060b20044190026a2003370300200f2002370300201041053a0000200441f9016a200141186a290000370000200441f1016a200141106a290000370000200441e9016a200141086a290000370000200441e1016a2001290000370000200441023a00d801200441d8016a10fc01200041083a00000c020b200c2002842102200620107221060b200041036a41003a0000200020063b0001200041046a2002370200200020113a00000b200441e00c6a24000be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41d883c800410e10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bb70201027f230041d0006b220224002002200136020420022000360200200241086a2000200110e40202400240200228020822010d00410721000c010b200228020c210302400240200241106a280200450d004100210002400240024002400240024020012d00000e0707000102030405060b410121000c060b410221000c050b410321000c040b410421000c030b410521000c020b410621000c010b2002420037021c2002410028029cde4a3602182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241e4b4c4003602382002200241286a360248200241346a41fc86ca00200241386a103b1a2002280218200228022010e7020240200228021c450d00200228021810390b410721000b2003450d00200110390b200241d0006a240020000bd00502097f017e230041d0006b22012400200141c0006a4200370300200141386a22024200370300200141306a420037030020014200370328200141286a4192d1c800410b10f201200241c0d3c800411310f2012001200141286a412010f5012001280204210320012802002104200141286a200010f80120012802282205200128023010f90141ff017121020240200128022c450d00200510390b02400240200241014722060d002003410020041b220241026a22052002492103200141186a200010f801200128022021042001280218210220014100360230200142013703284103200141286a1080012002200420012802282207200128023010a3020240200128022c450d00200710390b417f200520031b21050240200128021c450d00200210390b200141086a200510c007200141286a20012802082001280210109c0202400240200128022822070d002001420037021c41002108200141002802ccdd4a2207360218410021090c010b200129022c210a200120073602182001200a37021c200a422088a72109200aa721080b41002102024002402009450d0020092103200921050340024002402007200341017620026a22034102746a280200220420004f0d00200341016a21020c010b2003210520042000460d030b200520026b2103200520024b0d000b20092002490d030b024020092008470d00200141186a200810b701200128021821070b200720024102746a220541046a2005200920026b41027410c40a1a200520003602002001200941016a3602200b200141286a41086a200141186a41086a28020036020020012001290318220a370328200128021021052001280208210202400240200aa722030d002002200510fd010c010b2001200536024c20012002360248200141286a200141c8006a109703200128022c41ffffffff0371450d00200310390b200128020c450d00200210390b200141d0006a240020060f0b200220091044000bc90405037f047e017f027e047f23004180016b22012400200141086a200010b607200141386a200128020822002001280210220210b3070240024020012d00684102470d00200141386a41186a200141186a41186a290300370300200141386a41106a200141186a41106a290300370300200141386a41086a200141186a41086a290300370300200120012903183703382000200210fd010c010b200141186a41086a200141386a41186a22032903002204370300200141186a41106a200141386a41206a2903002205370300200141186a41186a200141e0006a2903002206370300200120012903482207370318200141386a41086a220829030021092001290338210a20032006370300200141386a41106a220b200537030020082004370300200120073703382001410036027820014201370370200141f0006a410041201081012001280270220c2001280278220d6a220e2001290338370000200e41086a2008290300370000200e41106a200b290300370000200e41186a20032903003700002001200d41206a220e360278024020012802742203200e6b410f4b0d00200141f0006a200e4110108101200128027421032001280270210c2001280278210e0b200c200e6a220820093700082008200a3700002001200e41106a220e36027802402003200e470d00200141f0006a200341011081012001280270210c2001280278210e0b200c200e6a41013a000020002002200c200e41016a10a3022001280274450d00200128027010390b0240200128020c450d00200128020810390b20014180016a24000ba10c010c7f230041900c6b22012400200141d00b6a22024200370300200141c80b6a22034200370300200141b80b6a41086a22044200370300200142003703b80b200141d80b6a41b9fec300410610f2012004200141d80b6a41086a2205290000370300200120012900d80b3703b80b200141d80b6a41b0eec900410610f20120022005290000370300200320012900d80b370300200141106a200141b80b6a412010f501024002402001280210450d002001280214450d00200141d00b6a22064200370300200141c80b6a22074200370300200141b80b6a41086a22024200370300200142003703b80b200141d80b6a41b9fec300410610f2012002200141d80b6a41086a2204290000370300200120012900d80b3703b80b200141d80b6a4198f2c900410e10f201200341086a22082004290000370000200320012900d80b370000200141203602ec0b2001200141b80b6a3602e80b200141800c6a200141b80b6a412010e4020240024020012802800c22090d00410321050c010b20012802840c210a024002400240200141800c6a41086a280200220b450d00410121050240024020092d00000e03000401020b200b417f6a4104490d012009280001210c410021050c030b410221050c010b200142003702dc0b2001410028029cde4a3602d80b2001410c3602f40b2001200141e80b6a3602f00b2001200141d80b6a3602fc0b2001412c6a41013602002001420137021c200141e4b4c4003602182001200141f00b6a360228200141fc0b6a41fc86ca00200141186a103b1a20012802d80b20012802e00b10e702024020012802dc0b450d0020012802d80b10390b410321050b0b200a450d00200910390b200141186a200041880b10c30a1a200141ac0b6a4200370200200141a40b6a200c36020020014102200520054103461b3602a00b200141013602a80b200642003703002007420037030020024200370300200142003703b80b200141d80b6a41b9fec300410610f20120022004290000370300200120012900d80b3703b80b200141d80b6a41d4efc900410a10f20120082004290000370000200320012900d80b370000200141086a200141b80b6a412010f5010240200128020c410020012802081b220041016a22042000490d00200141d00b6a22054200370300200141c80b6a220c4200370300200141b80b6a41086a22004200370300200142003703b80b200141d80b6a41b9fec300410610f2012000200141d80b6a41086a2202290000370300200120012900d80b3703b80b200141d80b6a41d4efc900410a10f201200341086a22062002290000370000200320012900d80b370000200120043602d80b200141b80b6a4120200141d80b6a410410a30220054200370300200c420037030020004200370300200142003703b80b200141d80b6a41b9fec300410610f20120002002290000370300200120012900d80b3703b80b200141d80b6a4190efc900410610f20120062002290000370000200320012900d80b370000200141003602880c200142013703800c024002400240024020012802a00b0e03000102030b200141800c6a4100410110810120012802800c20012802880c22036a41003a00002001200341016a22033602880c20012802a40b2100024020012802840c20036b41034b0d00200141800c6a2003410410810120012802880c21030b20012802800c20036a20003600002001200341046a3602880c0c020b200141800c6a4100410110810120012802800c20012802880c22036a41013a00002001200341016a3602880c0c010b200141800c6a4100410110810120012802800c20012802880c22036a41023a00002001200341016a3602880c0b200141186a200141800c6a10fa0620012802a80b2103200141800c6a20012802b00b220010d20102402000450d002000410574210003402003200141800c6a10ff02200341206a2103200041606a22000d000b0b200141d80b6a41086a200141800c6a41086a280200360200200120012903800c3703d80b200141b80b6a4120200141d80b6a10ad05200141186a10c30620012802ac0b41ffffff3f71450d0220012802a80b10390c020b200141186a10c30620012802ac0b41ffffff3f71450d0120012802a80b10390c010b200010c3060b200141900c6a24000b0e002001ad4220862000ad8410240b8c0101047f230041106b22032400024002402002280208220441386c4104722205417f4c0d0020022802002102200510382206450d012003410036020820032005360204200320063602002003200410d20120022004200310cc012000200120032802002202200328020810a30202402003280204450d00200210390b200341106a24000f0b1034000b1030000bc80603077f017e017f230041c0006b2202240002400240200128020422030d00200041053a00000c010b20012003417f6a220436020420012001280200220541016a36020002400240024002400240024002400240024020052d00000e050001020305040b200241186a2001108002024020022d00184101460d0020002002290019370001200041196a200241186a41196a290000370000200041116a200241186a41116a290000370000200041096a200241186a41096a290000370000200041003a00000c090b200041053a00000c080b200041013a00000c070b200241086a200110ad01024020022802080d0020012802042206200228020c2207490d002007417f4c0d040240024020070d00410121080c010b200710382208450d0620084100200710c50a1a0b200820012802002203200710c30a21082001200620076b3602042001200320076a360200200041046a2008360000200041023a0000200041086a2007ad22094220862009843700000c070b200041053a00000c060b200241186a410472210a41002107417e2106034020042007460d052001200320066a3602042001200520076a220841026a360200200a20076a200841016a2d00003a00002002200741016a22083602182006417f6a21062008210720084120470d000b200041086a200241186a410b6a2f00003b00002000410a6a200241256a2d00003a00002000410f6a200241186a41126a2f01003b0000200041116a2002412c6a2d00003a0000200041186a200241336a2d00003a0000200041166a200241186a41196a2f00003b0000200220022f011c3b0114200220022d001e3a0016200241266a28010021072002412d6a2800002101200241346a2902002109200228001f2106200041036a20022d00163a0000200020022f01143b0001200041196a2009370000200041126a20013600002000410b6a2007360000200041046a2006360000200041033a00000c050b200041053a00000c040b200241186a200110d901024020022d00184101460d0020002002290019370001200041116a200241186a41116a280000360000200041096a200241186a41096a290000370000200041043a00000c040b200041053a00000c030b1034000b1030000b200041053a00000b200241c0006a24000bdf0301097f230041c0006b220241106a41047221032001280204210441002105417f21060240034020042005460d012001200420066a36020420012001280200220741016a360200200320056a20072d00003a00002002200541016a22073602102006417f6a21062007210520074120470d000b200241086a41026a22052002411d6a2d00003a00002002200241106a41196a220128000036023820022002412c6a28000036003b200220022f01143b010c200220022d00163a000e2002200241106a410b6a2f00003b0108200241306a2802002106200241256a28000021072002411e6a2801002104200228003b210320022800172108200241046a41026a2209200241246a2d00003a00002002200241106a41126a2f01003b0104200241026a220a2002412b6a2d00003a0000200220012f00003b0100200041046a2008360000200041036a20022d000e3a0000200020022f010c3b00012000410b6a2004360000200041086a20022f01083b00002000410a6a20052d00003a0000200041126a20073600002000410f6a20022f01043b0000200041116a20092d00003a0000200041166a20022f01003b0000200041186a200a2d00003a00002000411d6a2006360000200041196a2003360000200041003a00000f0b200041013a00000bb01102097f017e230041c0006b22022400024002402001280200220328020422040d00200041053a00000c010b200328020022052d0000210620032004417f6a22073602042003200541016a3602000240024002400240024002400240024002400240024020060e050001020304050b200241186a410472210841002101417e21060340024020072001470d00200041053a00000c0c0b200520016a220941016a2d0000210a2003200420066a3602042003200941026a360200200820016a200a3a00002002200141016a22093602182006417f6a21062009210120094120470d000b200041086a200241186a410b6a2f00003b00002000410a6a200241256a2d00003a00002000410f6a200241186a41126a2f01003b0000200041116a2002412c6a2d00003a0000200041186a200241336a2d00003a0000200041166a200241186a41196a2f00003b0000200220022f011c3b0114200220022d001e3a0016200241266a28010021032002412d6a2800002101200241346a290200210b200228001f2104200041036a20022d00163a0000200020022f01143b0001200041196a200b370000200041126a20013600002000410b6a2003360000200041046a2004360000200041003a00000c0a0b200041013a00000c090b200241086a200110bb01024020022802080d0020032802042204200228020c2201490d002001417f4c0d050240024020010d00410121060c010b200110382206450d0720064100200110c50a1a200328020421040b200420014f0d07200610390b200041053a00000c080b200241186a410472210841002101417e21060340024020072001470d00200041053a00000c090b200520016a220941016a2d0000210a2003200420066a3602042003200941026a360200200820016a200a3a00002002200141016a22093602182006417f6a21062009210120094120470d000b200041086a200241186a410b6a2f00003b00002000410a6a200241256a2d00003a00002000410f6a200241186a41126a2f01003b0000200041116a2002412c6a2d00003a0000200041186a200241336a2d00003a0000200041166a200241186a41196a2f00003b0000200220022f011c3b0114200220022d001e3a0016200241266a28010021032002412d6a2800002101200241346a290200210b200228001f2104200041036a20022d00163a0000200020022f01143b0001200041196a200b370000200041126a20013600002000410b6a2003360000200041046a2004360000200041033a00000c070b20070d010c050b200041053a00000c050b20052d000121012003200541026a36020020032004417e6a220636020420024101360218200220013a001c2006450d0320052d000221012003200541036a36020020032004417d6a220636020420024102360218200220013a001d2006450d0320052d000321012003200541046a36020020032004417c6a220636020420024103360218200220013a001e2006450d0320052d000421012003200541056a36020020032004417b6a220636020420024104360218200220013a001f2006450d0320052d0005210120032004417a6a22063602042003200541066a360200200241206a20013a0000200241053602182006450d0320052d000621012003200441796a22063602042003200541076a360200200241216a20013a0000200241063602182006450d0320052d000721012003200441786a22063602042003200541086a360200200241226a20013a0000200241073602182006450d0320052d000821012003200441776a22063602042003200541096a360200200241236a20013a0000200241083602182006450d0320052d000921012003200441766a220636020420032005410a6a360200200241246a20013a0000200241093602182006450d0320052d000a21012003200441756a220636020420032005410b6a360200200241256a20013a00002002410a3602182006450d0320052d000b21012003200441746a220636020420032005410c6a360200200241266a20013a00002002410b3602182006450d0320052d000c21012003200441736a220636020420032005410d6a360200200241276a20013a00002002410c3602182006450d0320052d000d21012003200441726a220636020420032005410e6a360200200241286a20013a00002002410d3602182006450d0320052d000e21012003200441716a220636020420032005410f6a360200200241296a20013a00002002410e3602182006450d0320052d000f21012003200441706a22063602042003200541106a3602002002412a6a20013a00002002410f3602182006450d0320052d0010210120032004416f6a22063602042003200541116a3602002002412b6a20013a0000200241103602182006450d0320052d0011210120032004416e6a22063602042003200541126a3602002002412c6a20013a0000200241113602182006450d0320052d0012210120032004416d6a22063602042003200541136a3602002002412d6a20013a0000200241123602182006450d0320052d0013210120032004416c6a22063602042003200541146a3602002002412e6a20013a0000200241133602182006450d0320052d0014210120032004416b6a3602042003200541156a360200200041086a200241186a410b6a2f00003b00002000410a6a200241256a2d00003a00002000410f6a200241186a41126a2f01003b0000200041116a200241186a41146a2d00003a0000200220022f011c3b0114200220022d001e3a0016200241266a2801002103200241186a41156a2f00002104200228001f2106200041146a20013a0000200041126a20043b00002000410b6a2003360000200041046a2006360000200041036a20022d00163a0000200020022f01143b0001200041043a00000c040b1034000b1030000b200620032802002209200110c30a21062003200420016b3602042003200920016a360200200041086a2001ad220b422086200b84370000200041046a2006360000200041023a00000c010b200041053a00000b200241c0006a24000be50501037f02400240024002400240024020002d00000e050001020304050b0240200141046a2202280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41003a00002003200441016a2204360200200041016a21000240200228020020046b411f4b0d00200120044120108101200141086a28020021040b200128020020046a22032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200141086a200441206a3602000f0b0240200141046a280200200141086a22042802002200470d00200120004101108101200428020021000b200128020020006a41013a00002004200041016a3602000f0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41023a00002003200441016a36020020002802042000410c6a280200200110d6010f0b0240200141046a2202280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41033a00002003200441016a2204360200200041016a21000240200228020020046b411f4b0d00200120044120108101200141086a28020021040b200128020020046a22032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200141086a200441206a3602000f0b0240200141046a2202280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41043a00002003200441016a2204360200200041016a21000240200228020020046b41134b0d00200120044114108101200141086a28020021040b200128020020046a22032000290000370000200341106a200041106a280000360000200341086a200041086a290000370000200141086a200441146a3602000b0b7f01027f0240411410382202450d0020002002360200200041046a2202421437020041002802ccdd4a4100200010840202402002280200200041086a220328020022026b410f4b0d00200020024110108101200328020021020b2003200241106a360200200028020020026a22004200370008200042003700000f0b1030000bf50201057f2002200110d20102402001450d00200141286c2103200241086a22042802002101200241046a210503400240200528020020016b411f4b0d00200220014120108101200428020021010b2004200141206a22063602002002280200220720016a2201200041046a290000370000200141086a2000410c6a290000370000200141106a200041146a290000370000200141186a2000411c6a2900003700002005280200210102400240200041246a2d00004101460d00024020012006470d0020022006410110810120042802002106200228020021070b200720066a41003a00000c010b024020012006470d0020022006410110810120042802002106200228020021070b200720066a41013a00000b2004200641016a2201360200200028020021060240200528020020016b41034b0d0020022001410410810120042802002101200228020021070b200041286a2100200720016a20063600002004200141046a2201360200200341586a22030d000b0b0b2c01017f02404108103822020d001030000b20002002360200200242003700002000428880808080013702040b4a01017f02404120103822020d001030000b2000200236020020024200370000200042a08080808004370204200241086a4200370000200241106a4200370000200241186a42003700000b3301017f02404110103822020d001030000b2002420037000820024200370000200020023602002000429080808080023702040b2701017f02404104103822020d001030000b20004204370204200020023602002000410010d2010b4a01017f02404120103822020d001030000b2000200236020020024200370000200042a08080808004370204200241086a4200370000200241106a4200370000200241186a42003700000bb30201057f20004201370200200041086a2202410036020020004100411010810120002802002203200228020022046a22054200370008200542003700002002200441106a22043602000240200041046a2206280200220520046b410f4b0d002000200441101081012006280200210520022802002104200028020021030b200320046a22064200370008200642003700002002200441106a22043602000240200520046b410f4b0d00200020044110108101200041046a2802002105200041086a2802002104200028020021030b200320046a2202420037000820024200370000200041086a2202200441106a22043602000240200520046b410f4b0d0020002004411010810120022802002104200028020021030b200320046a22004200370008200042003700002002200441106a3602000b2e01017f230041106b2202240020024200370204200241002802ccdd4a36020020002002108c02200241106a24000bdd0101067f024002402001280208220241027441046a2203417f4c0d00200128020021010240024020030d00410121040c010b200310382204450d020b20002004360200200041086a22054100360200200041046a220620033602002000200210d20102402002450d00200241027421042005280200210303402001280200210702400240200628020020036b41034d0d00200321020c010b200020034104108101200528020021020b200141046a21012005200241046a2203360200200028020020026a20073600002004417c6a22040d000b0b0f0b1034000b1030000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802fcad494100200010d0010b4f01027f230041106b2202240020024200370204200241002802fcad4936020002404104103822030d001030000b20004204370204200020033602002000410010d2012002108f02200241106a24000be20401037f024020002802082201450d0020002802002200200141a00b6c6a2102200041900b6a2100034002400240024002400240024002400240200041f0746a22012d00000e140707070007010203070707070407070507070707060b200041f8746a280200450d06200041f4746a28020010390c060b200041f4746a2802000d05200041fc746a2802002203450d05200341286c450d05200041f8746a28020010390c050b200041f4746a2d00004102470d04200041fc746a28020041ffffff3f71450d04200041f8746a28020010390c040b024002400240200041f4746a2802000e020001020b200041c0776a280200450d05200041bc776a28020010390c050b200041c0776a280200450d04200041bc776a28020010390c040b200041c0776a280200450d03200041bc776a28020010390c030b200041f8746a2d0000410a470d02200041a4756a280200450d02200041a0756a28020010390c020b0240200041f4746a2802000d00200041fc746a28020041ffffff3f71450d02200041f8746a28020010390c020b200041fc746a28020041ffffff3f71450d01200041f8746a28020010390c010b0240200041f8746a2903004201510d000240024020004180756a2802000e020300010b20004190756a280200410b470d0220004198756a10af01200041e0786a10c2010c020b20004188756a280200410b470d0120004190756a10af01200041d8786a10c2010c010b20004180756a10af01200041c8786a10af01200041907c6a10c2010b0240200141940b6a28020041ffffff3f71450d00200028020010390b200041a00b6a2100200141a00b6a2002470d000b0b0b3c01017f20004201370200200041086a220241003602002000410041011081012000280200200228020022006a41003a00002002200041016a3602000bbf0101057f20004201370200200041086a2202410036020020004100410810810120002802002203200228020022046a42003700002002200441086a22043602000240200041046a220528020020046b41074b0d0020002004410810810120022802002104200028020021030b2002200441086a2206360200200320046a42003700000240200528020020066b41074b0d00200020064108108101200041086a28020021060b200041086a200641086a360200200028020020066a42003700000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010ce010b2701017f02404104103822020d001030000b20004204370204200020023602002000410010d2010bc40401057f20004201370200200041086a2202410036020020004100410410810120002802002203200228020022046a41003600002002200441046a22043602000240200041046a220528020020046b41034b0d0020002004410410810120022802002104200028020021030b200320046a41003600002002200441046a22033602000240200528020020036b41034b0d00200020034104108101200041086a28020021030b2000280200220420036a4100360000200041086a2205200341046a22033602000240200041046a220628020020036b41034b0d0020002003410410810120052802002103200028020021040b200420036a41003600002005200341046a220236020002402006280200220320026b410f4b0d00200020024110108101200041046a2802002103200041086a2802002102200028020021040b200420026a2205420037000820054200370000200041086a2205200241106a22023602000240200320026b410f4b0d00200020024110108101200041046a280200210320052802002102200028020021040b200420026a22064200370008200642003700002005200241106a22023602000240200320026b410f4b0d00200020024110108101200041046a2802002103200041086a2802002102200028020021040b200420026a2205420037000820054200370000200041086a2205200241106a22023602000240200320026b410f4b0d0020002002411010810120052802002102200028020021040b200420026a22004200370008200042003700002005200241106a3602000b7f01027f0240411410382202450d0020002002360200200041046a2202421437020041002802ccdd4a4100200010960202402002280200200041086a220328020022026b410f4b0d00200020024110108101200328020021020b2003200241106a360200200028020020026a22004200370008200042003700000f0b1030000bc003010a7f2002200110d201024002402001450d00200141c4006c2103200241086a22042802002101200241046a210503400240200528020020016b411f4b0d00200220014120108101200428020021010b2004200141206a22063602002002280200220720016a2201200041046a290000370000200141086a2000410c6a290000370000200141106a200041146a290000370000200141186a2000411c6a290000370000412010382201450d02200141186a22082000413c6a290000370000200141106a2209200041346a290000370000200141086a220a2000412c6a2900003700002001200041246a29000037000002402005280200220b20066b411f4b0d002002200641201081012005280200210b20042802002106200228020021070b200720066a220c20012900003700002004200641206a2206360200200c41186a2008290000370000200c41106a2009290000370000200c41086a200a29000037000020011039200028020021010240200b20066b41034b0d0020022006410410810120042802002106200228020021070b200041c4006a2100200720066a20013600002004200641046a2201360200200341bc7f6a22030d000b0b0f0b1030000ba50101067f20004201370200200041086a2202410036020002404120103822030d001030000b20034200370000200341186a22044200370000200341106a22054200370000200341086a220642003700002000410041201081012000280200200228020022076a220020032900003700002002200741206a360200200041086a2006290000370000200041106a2005290000370000200041186a2004290000370000200310390b2f01017f02404108103822020d001030000b2000200236020020024200370000200041046a428880808080013702000b2e01017f230041106b22022400200242003702042002410028029cde4a36020020002002109a02200241106a24000bda0301057f024002402001280208220241046a2203417f4c0d00200128020021040240024002400240024002402003450d00200310382201450d0720002001360200200041086a22054100360200200041046a2003360200200241c000490d02200241808001490d032002418080808004490d04200041086a2105410021030c010b20004201370200200041086a2205410036020020004100410110810120052802002103200028020021010b200120036a41033a0000200041086a2201200341016a22033602000240200041046a28020020036b41034b0d00200020034104108101200128020021030b2000280200220120036a20023600002005200341046a22033602000c030b200120024102743a000041012103200541013602000c020b20024102744101722106410021050240200341014b0d00200041004102108101200041086a2802002105200028020021010b200120056a20063b0000200041086a200541026a22033602000c010b2001200241027441027236000041042103200041086a41043602000b0240200041046a28020020036b20024f0d00200020032002108101200041086a2802002103200028020021010b200120036a2004200210c30a1a200041086a200320026a3602000f0b1034000b1030000be46708077f017e017f017e077f037e0c7f057e230022012102200141c0276b416071220324000240024002400240024002400240200041c0f000700d00200341cc156a200041c0f0006e360200200341c0156a41086a220441003a00002003410d3a00c015200341c0156a10fc01200341c0136a41186a22014200370300200341d0136a22054200370300200341c0136a41086a22064200370300200342003703c013200341c0156a41f4eec600410510f20120062004290000370300200320032900c0153703c013200341c0156a41b483c800410a10f20120012004290000370300200520032900c015370300200341c0156a200341c0136a4120109c0220032802c015210720032902c41521082003420037029401200341002802ccdd4a220936029001200341a0016a418d80c400410510f201200341c0156a41bfd2c000410610f201412010382201450d01200120032900a001370000200120032900c015370010200141086a200341a0016a41086a290000370000200141186a2004290000370000200320013602c013200342a080808080043702c413412010382204450d0120042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200341e0006a41086a200341c0136a41086a2802002201360200200320032903c013220a370360200341d4136a2001360200200342a080808080043702c413200320043602c0132003200a3702cc134100210b200341003a00dc132003410d3602d813200341c0156a200341c0136a109e02024020032802c415450d00200341c0156a41047221054100210b2009210c0340200341f0006a41086a200541086a280200220136020020032005290200220a37037020032802c0152106200341a0136a41086a20013602002003200a3703a0130240024002400240024020010e020301000b200341a0016a41086a220d20032802a013220441106a290300370300200341a0016a41106a220e200441186a290300370300200341a0016a41186a220f200441206a290300370300200341a0016a41206a2210200441286a290300370300200341a0016a41286a2211200441306a290300370300200320042903083703a0012004290300210a2004200441386a200141386c41486a10c40a210420032001417f6a3602a813200341c0156a200610f00120032802c015220120032802c815200341a0136a10fe01024020032802c415450d00200110390b0240200a4201520d00200341c0156a41286a22012011290300370300200341c0156a41206a22112010290300370300200341c0156a41186a200f290300370300200341c0156a41106a200e290300370300200341c0156a41086a200d290300370300200320032903a0013703c015200341d0006a2006200341c0156a10ef012011290300220a200329035022127d2213200a5620012903002214200341d0006a41086a2903007d200a201254ad7d220a201456200a2014511b0d00200341c0156a2013200a109f020b20042903004201520d010240200b200328029401470d0020034190016a200b10b701200328029001210c200328029801210b0b200c200b4102746a2006360200200320032802980141016a220b360298010c010b024020032802a01322012903004201520d00200141086a200141286a290300200141306a290300109f020b200341c0156a200610f00120032802c015220120032802c81510fd0120032802c415450d00200110390b20032802a4132201450d01200141386c450d0120032802a01310390c010b20032802a4132201450d00200141386c450d0020032802a01310390b200341c0156a200341c0136a109e0220032802c4150d000b0b024020032802c413450d0020032802c01310390b0240200341d0136a280200450d0020032802cc1310390b200328029001211502400240024002400240200b41144b0d00200b41014b2216450d042015200b417f6a22054102746a211041002106034020052201417f6a21052016450d030240200b20056b220c4102490d00201520014102746a22012802002204201520054102746a220d280200220f4f0d00200d20043602000240200c4103490d002006417f6a211141002104201021010340200141046a220d280200220e200f4f0d0120112004460d052001200e360200200d210120062004417f6a2204470d000b200d21010b2001200f3602000b2010417c6a21102006417f6a210620050d000c050b0b200b410176220141ffffffff03712001470d0620014102742217417f4c0d06201710382218450d05200342003702c415200320093602c0152015417c6a2119201541746a211a4100210120092104200b211103404100211b4101210c02402011417f6a2205450d000240024002400240024002400240201520054102746a2802002011410274221620156a41786a2802002206490d002011417e6a2110201a20166a210d4100211b410021050340024020102005470d002011210c0c090b200541016a21052006200d280200220e4f210f200d417c6a210d200e2106200f0d000b200541016a210c2005417f7320116a21050c010b201a20166a210d02400340024020054101470d00410021050c020b2005417f6a21052006200d280200220e49210f200d417c6a210d200e2106200f0d000b0b20112005490d012011200b4b0d02201120056b220c410176220e450d00201520054102746a2106201920166a210d03402006280200210f2006200d280200360200200d200f360200200641046a2106200d417c6a210d200e417f6a220e0d000b0b024020050d002005211b0c060b0240200c41094d0d002005211b0c060b2011200b4b0d03200520116b210d201520054102746a2116034020112005417f6a221b490d0502402011201b6b220c4102490d00201520054102746a220528020022062015201b4102746a220e28020022104f0d00200e20063602000240200c4103490d0041012106201621050340200541046a220e280200220f20104f0d01200d20066a4101460d062005200f360200200e2105200d200641016a22066a0d000b200e21050b200520103602000b201b450d062016417c6a2116200d417f6a210d201b2105200c410a4f0d060c000b0b200520114194acc900105f000b2011200b4194acc9001055000b2006200c4184acc900103c000b20112005417f6a221b490d002011200b41a4acc9001055000b201b201141a4acc900105f000b02400240200120032802c415460d00200121050c010b0240200120032802c8152205470d00200341c0156a200110a00220032802c81521050b20032802c01521040b200420054103746a2201200c3602042001201b360200200320032802c81541016a22013602c815024020014102490d0020032802c0152104024003400240024002400240024020042001417f6a4103746a2205280200450d00200141037420046a220e41746a280200220d200528020422064b0d010b20014103490d022005280204210620042001417d6a220c4103746a28020421050c010b200141024d0d0520042001417d6a220c4103746a28020422052006200d6a4d0d00200141034d0d05200e41646a2802002005200d6a4b0d050b20052006490d010b2001417e6a210c0b02400240024002402001200c41016a221c4d0d0002402001200c4d0d0002402004200c410374221d6a2201280204221e20012802006a22052004201c410374221f6a22012802002220490d0002402005200b4b0d00201520204102746a22062001280204221641027422046a21012005410274210e0240200520206b220f20166b220d2016490d0020182006200410c30a220d20046a21050240201641014e0d00200d21040c080b200f20164a0d05200d21040c070b20182001200d410274220410c30a221120046a210520164101480d05200d4101480d052019200e6a2104034020042001417c6a220e280200220d2005417c6a220f28020022102010200d49220d1b3602002005200f200d1b21052006200e2001200d1b22014f0d062004417c6a2104200520114b0d000c060b0b2005200b41d4acc9001055000b2020200541d4acc900105f000b200c200141c4acc900103c000b201c200141b4acc900103c000b2015200e6a210f200d2104034020062001280200220d2004280200220e200d200e49220d1b3602002004200441046a200d1b2104200641046a2106200141046a2001200d1b2201200f4f0d0220042005490d000c020b0b20112104200121060b20062004200520046b417c7110c30a1a024020032802c8152201200c4d0d0020032802c0152204201d6a2205201e20166a360204200520203602002001201c4d0d022004201f6a2205200541086a2001200c6b41037441706a10c40a1a20032001417f6a22013602c815200141014b0d010c030b0b200c200141e4acc900103c000b201c20011045000b201b2111201b450d030c000b0b410120046b200c4184acc900103c000b2005200b41f4abc900105e000b024020032802c41541ffffffff0171450d0020032802c01510390b2017450d00201810390b2008420020071b210a2007200920071b210e200328029001210f0240024020032802980122160d00200a422088a7210c0c010b200f20164102746a2120200a422088a7210c200f211003402010221141046a211002400240200c450d002011280200210641002101200c2105200c21040340024002402006200e200541017620016a22054102746a280200220d4d0d00200541016a21010c010b200521042006200d460d030b200420016b2105200420014b0d000b0b200341c0156a2011280200220410f80120032802c015220520032802c81510f90141ff01712101024020032802c415450d00200510390b20014101470d00200410fa010d00200410fb010b20102020470d000b0b0240200c450d00200e200c4102746a210c200e211003402010221141046a2110024002402016450d00201128020021064100210120162105201621040340024002402006200f200541017620016a22054102746a280200220d4d0d00200541016a21010c010b200521042006200d460d030b200420016b2105200420014b0d000b0b200341c0156a2011280200220510f80120032802c015220420032802c81510f90141ff01712101024020032802c415450d00200410390b20014102470d00200510a1021a0b2010200c470d000b0b024020032802940141ffffffff0371450d00200f10390b200a42ffffffff0383500d00200e10390b200341b8136a220f4200370300200341b0136a220e4200370300200341a0136a41086a220d4200370300200342003703a013200341e0006a41fcffc300410810f201200d200341e0006a41086a2210290000370300200320032900603703a013200341f0006a41b5a7c800410b10f201200f200341f0006a41086a2211290000370300200e2003290070370300200341c0156a200341a0136a412010a202200341c0156a41086a210c42c0f0f50b210842c0f0f50b2113024020032802c0154101470d0042c0f0f50b21132000200c2802006b220120004b0d0042c0f0f50b2113200141d7044b0d00024020010d00200341b8136a22044200370300200341b0136a22054200370300200341a0136a41086a22014200370300200342003703a013200341e0006a418480c400410910f2012001200341e0006a41086a2206290000370300200320032900603703a013200341f0006a41d8a4c900410c10f201200e41086a2216200341f0006a41086a2220290000370000200e2003290070370000200341c8006a200341a0136a412010f5012003280248211b200328024c211c200442003703002005420037030020014200370300200342003703a013200341e0006a418480c400410910f20120012006290000370300200320032900603703a013200341f0006a41d8a4c900410c10f20120162020290000370000200e20032900703700002003201c41016a4101201b1b3602c015200341a0136a4120200341c0156a410410a3020b4200210a200341b8136a4200370300200341b0136a4200370300200341a0136a41086a22014200370300200342003703a013200341e0006a418480c400410910f2012001200341e0006a41086a290000370300200320032900603703a013200341f0006a41a4a4c900410810f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341c0156a200341a0136a4120109c020240024020032802c0152216450d00200341a0136a412010fd0120032902c415210a0c010b41002802ccdd4a21160b0240200a422088a72201450d00201620014102746a2206417c6a211b200341c0156a41106a2120201621010340200341a0016a2001280200220510a402200341c0156a20032802a001220420032802a80110a502024020032802a401450d00200410390b024020032802f4154103470d002006200141046a2201470d010c020b200341c0156a41186a2204290300211420032903d0152112200328028016211c20032802fc152115200342f0f2bd99e6ac9db7e4003703c015200341a0016a200341c0156a200510a6022004200341a0016a41186a2903003703002020200341a0016a41106a290300370300200341c0156a41086a200341a0016a41086a290300370300200320032903a0013703c015200341a0136a41186a4200370300200341a0136a41106a4200370300200341a0136a41086a22044200370300200342003703a013200341e0006a41fcffc300410810f2012004200341e0006a41086a290000370300200320032900603703a013200341f0006a41b9a6c800410e10f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341c0006a200341a0136a412010f501200341c0136a200341c0156a20052003280244410020032802401b2015201c2012201410a702202041086a200341c0136a41086a280200360200202020032903c013370200200320053602cc15200341083a00c8152003410c3a00c015201b2001462104200341c0156a10fc01200141046a21012004450d000b0b42002113200a42ffffffff0383500d00201610390b200f4200370300200e4200370300200d4200370300200342003703a013200341e0006a41fcffc300410810f201200d2010290000370300200320032900603703a013200341f0006a41b5a7c800410b10f201200e41086a2011290000370000200e2003290070370000200341c0156a200341a0136a412010a202024020032802c0154101470d002000200c2802006b220420004b0d00200441d7044b0d00200341e0006a41fcffc300410810f201200341f0006a418cd2c500410710f201200320043602a0132003200341a0136a410410f3013703c013200341cc156a200341a0136a41046a3602002003200341c0136a41086a3602c4152003200341a0136a3602c8152003200341c0136a3602c015200341a0016a200341c0156a108d0120032802a801220d41206a2201417f4c0d020240024020010d00410121050c010b200110382205450d020b41002106200341003602c815200320053602c015200320013602c41502402001410f4b0d00200341c0156a4100411010810120032802c415210120032802c015210520032802c81521060b200520066a220f2003290060370000200f41086a200341e0006a41086a2900003700002003200641106a22063602c8150240200120066b410f4b0d00200341c0156a2006411010810120032802c415210120032802c015210520032802c81521060b200520066a220f2003290070370000200f41086a200341f0006a41086a2900003700002003200641106a22063602c81520032802a001210f0240200120066b200d4f0d00200341c0156a2006200d10810120032802c015210520032802c81521060b200520066a200f200d10c30a1a2006200d6a2101024020032802a401450d0020032802a00110390b20032802c0152205200110a8022101024020032802c415450d00200510390b4280e1eb17210820010d000240024002402004417f6a220120044b0d00200341c0156a200110a90220032903c0154202520d010b200341a0016a410041801210c50a1a0c010b200341a0016a200341c0156a41801210c30a1a0b200341c0156a200341a0016a41801210c30a1a200341a0136a200410aa0220032802a813210420032802a013210141801210382205450d0120034280123702c413200320053602c013200341c0156a200341c0136a10d5012001200420032802c013220520032802c81310a302024020032802c413450d00200510390b024020032802a413450d00200110390b4280a3c3c70021080b200341b8136a221c4200370300200341b0136a22154200370300200341a0136a41086a22114200370300200342003703a013200341e0006a41fcffc300410810f2012011200341e0006a41086a221d290000370300200320032900603703a013200341f0006a41b5a7c800410b10f201200e41086a221e200341f0006a41086a221f290000370000200e2003290070370000200341c0156a200341a0136a412010a20220032802c0154101470d04417f200341c0156a41086a280200220141d8046a220420042001491b220120004b0d0420032802c4152119200341a0136a41186a4200370300200341a0136a41106a4200370300200341a0136a41086a22044200370300200342003703a013200341e0006a41b9fec300410610f2012004200341e0006a41086a290000370300200320032900603703a013200341f0006a41d0eec900410a10f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341c0156a200341a0136a412010ab020240024020032d00c0154101460d00200341a0016a41186a4200370300200341a0016a41106a4200370300200341a0016a41086a4200370300200342003703a0010c010b200341a0016a41186a200341d9156a290000370300200341a0016a41106a200341d1156a290000370300200341a0016a41086a200341c9156a290000370300200320032900c1153703a0010b411010382204450d00200342103702c415200320043602c015412010382204450d00200420032903a001370000200441186a220d200341a0016a41186a290300370000200441106a220f200341a0016a41106a290300370000200441086a2210200341a0016a41086a290300370000200341c0156a4100412010810120032802c015220620032802c815220c6a22052004290000370000200541086a2010290000370000200541106a200f290000370000200541186a200d2900003700002003200c41206a22053602c81520032802c415210d200410390240200d2005470d00200341c0156a200d410110810120032802c015210620032802c81521050b200620056a41303a00002003200541016a22043602c815024020032802c415220620046b410b4b0d00200341c0156a2004410c10810120032802c415210620032802c81521040b20032802c015220520046a220d4100290090cc44370000200d41086a4100280098cc44360000200341c0136a20052004410c6a109c0102402006450d00200510390b20032802c0132105200341b8136a4200370300200341b0136a4200370300200341a0136a41086a22044200370300200342003703a013200341e0006a41b9fec300410610f2012004200341e0006a41086a290000370300200320032900603703a013200341f0006a41b0eec900410610f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341386a200341a0136a412010f5012003280238450d042001200328023c4b0d0442002121200341b8136a4200370300200341a0136a41106a4200370300200341a0136a41086a22014200370300200342003703a013200341e0006a41fcffc300410810f2012001200341e0006a41086a290000370300200320032900603703a013200341f0006a41b9a6c800410e10f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341306a200341a0136a412010f5012003280234210120032802302104200341c0156a41106a200541d804702205360200200341cc156a2001410020041b360200200341c0156a41086a41083a00002003410b3a00c015200341c0156a10fc01200341c0156a200510a9020240024020032903c0154202520d00200341a0016a410041801210c50a1a0c010b200341a0016a200341c0156a41801210c30a1a20032903a00121210b200341a0136a41186a22044200370300200341a0136a41106a22054200370300200341a0136a41086a22014200370300200342003703a013200341e0006a41fcffc300410810f2012001200341e0006a41086a220d290000370300200320032900603703a013200341f0006a418cd2c500410710f201200e41086a220f200341f0006a41086a2206290000370000200e2003290070370000200341a0136a412010ac02200442003703002005420037030020014200370300200342003703a013200341e0006a41fcffc300410810f2012001200d290000370300200320032900603703a013200341f0006a41b5a7c800410b10f201200f2006290000370000200e2003290070370000200341a0136a412010fd01200341c0156a200341a0016a41086a220d41f81110c30a1a20214202510d04200341f0006a10ad022004200341f0006a41186a2903003703002005200341f0006a41106a29030037030020012006290300370300200320032903703703a013200341a0016a200341a0136a10ae02024020032903a0014201520d00200341a0016a41086a2101200341d8016a21040340200341c0136a41086a200141086a290300220a370300200341c0136a41106a200141106a2903002214370300200341c0136a41186a200141186a2903002212370300200341c0136a41206a200141206a2903003703002003200129030022223703c0132004290300212320032903d0012124200341a0016a41186a2012370300200341a0016a41106a20143703002001200a370300200320223703a001200341a0016a20242023109f02200341a0016a200341a0136a10ae0220032903a0014201510d000b0b024020032802a413450d0020032802a01310390b0240200341a0136a41106a280200450d0020032802ac1310390b200320213703a001200d200341c0156a41f81110c30a1a200341b8156a4200370300200341b0156a420037030020034198156a420037030020034190156a4200370300200341f8146a4200370300200341f0146a4200370300200341d8146a4200370300200341d0146a4200370300200341b8146a4200370300200341b0146a420037030020034198146a420037030020034190146a4200370300200341c0136a41386a4200370300200341c0136a41306a4200370300200341c0136a41186a4200370300200341a4156a420037020020034184156a4200370200200341e4146a4200370200200341c4146a4200370200200341a4146a420037020020034184146a4200370200200341e4136a4200370200200342003703d0132003410028029cde4a22013602a0152003200136028015200320013602e014200320013602c014200320013602a0142003200136028014200320013602e013200342003702c413200320013602c013200341206a41086a21184100210603404100210102400240024002400240024002400240024020060e080807000102030405060b410221010c070b410321010c060b410421010c050b410521010c040b410621010c030b410721010c020b200341093602a413200341cc97c3003602a013419cccc400410c200341a0136a41a8ccc40041b8ccc400103d000b410121010b0240200341a0016a20014106746a22042903004201520d00200341206a200441306a290300200441386a2903002001109d01ad420010c20a2018290300210a410110382204450d0220032903202114200420013a0000200341c0136a20064105746a2201410472210502402001280204450d00200128020010390b20054101360200200120043602002001201437031020014101360208200141186a200a3703000b02402006450d00200341c0136a20064105746a221641086a210b2016410472210c201641106a210541002104200341c0136a210102400340200341a0136a4100200441016a2204200610af0220032d00a0134101460d0102400240200341a0016a20032d00a113220f4106746a220d2903004201510d00200141106a220f290300200529030058200141186a2210290300220a200541086a290300221458200a2014511b0d01200141086a280200220d417f4c0d072001280200212002400240200d0d004101211b0c010b200d1038221b450d070b201b2020200d10c30a21202010290300210a200f29030021140240200c280200450d00201628020010390b20052014370300200c200d36020020162020360200200b200d3602002005200a3703080c010b200341106a200d41306a290300200d41386a290300200f109d01ad420010c20a200141106a290300221420032903107c220a200529030058200141186a290300200341106a41086a2903007c200a201454ad7c2214200541086a29030022125820142012511b0d00200141086a280200220d417f4c0d0620012802002120410121100240200d450d00200d10382210450d060b2003200d3602742003201036027020102020200d10c30a1a200341f0006a41086a2210200d360200200341f0006a200d10b00220032802702010280200220d6a200f3a00002010200d41016a220d360200200341a0136a41086a220f200d360200200320032903703703a0130240200c280200450d00201628020010390b2005200a370300201620032903a01337030020052014370308200b200f2903003703000b200141206a210120062004460d020c000b0b200320032902a41337037041c8ccc4004128200341f0006a41a8ccc40041f0ccc400103d000b200641016a22064108470d000b20032802a815220c417f4c0d0120032802a015210102400240200c0d00410121040c010b200c10382204450d010b20042001200c10c30a2116024020032802c413450d0020032802c01310390b024020032802e413450d0020032802e01310390b0240200328028414450d0020032802801410390b024020032802a414450d0020032802a01410390b024020032802c414450d0020032802c01410390b024020032802e414450d0020032802e01410390b0240200328028415450d0020032802801510390b024020032802a415450d0020032802a01510390b200cad42387e220a422088a70d01200aa72201417f4c0d010240024020010d00410821200c010b200110382220450d010b4100210b200341003602980120032020360290012003200141386e22013602940102402001200c4f0d0020034190016a200c10b1022003280290012120200328029801210b0c030b200c0d024100211b20034100360298010c030b1030000b1034000b200b200c6a211b2020200b41386c6a2101200341c0136a410472210541002106024002400340201620066a2d0000220d4124460d01200342003703d813200342003703d013200342003703c813200342003703c013200341a0016a200d4106746a22042903004201520d052004290308210a200420032903c013370308200441206a220f2903002122200f20032903d813370300200441186a220f2903002123200f20032903d013370300200441106a220f2903002124200f20032903c813370300200441306a220f2903002121200f4200370300200441386a220f2903002125200f4200370300200441286a2204290300211420042012428080808070833703002003200a3703c013200320223703d813200320233703d013200320243703c813200341a0136a41086a2204200541086a290200370300200341a0136a41106a220f200541106a290200370300200341a0136a41186a2210200541186a280200360200200320143e02bc13200320052902003703a0132001202537030820012021370300200141106a200a3e0200200141146a20032903a0133702002001411c6a2004290300370200200141246a200f2903003702002001412c6a2010290300370200200141346a200d3a0000200141386a210120142112200c200641016a2206470d000c020b0b200b20066a211b0b2003201b36029801200c450d00201610390b20032802940121100240201b450d002020201b41386c6a210d200341a9016a210f202021010340200141346a2d000022044124460d01200141086a290300210a200141106a280200210620012903002114200341a0136a41186a2001412c6a2902002212370300200341a0136a41106a200141246a2902002222370300200341a0136a41086a2001411c6a29020022233703002003200141146a29020022243703a013200341c0136a41186a2012370300200341c0136a41106a2022370300200341c0136a41086a2023370300200320243703c01341072105024002400240024002400240024002402004413f710e24000000000000000001010101010101020202020202030303030304040404050505060607000b410021050c060b410121050c050b410221050c040b410321050c030b410421050c020b410521050c010b410621050b02402006200341c0136a2014200a201920056a2004109d0110f40141ff01714101470d00200341a0016a200341c0136a2014200a10f70120032d00a0014108470d00200f20032903c013370000200341d8016a200a370300200f41186a200341c0136a41186a290300370000200f41106a200341c0136a41106a290300370000200f41086a200341c0136a41086a290300370000200320143703d001200320063602cc01200341063a00a8012003410b3a00a001200341a0016a10fc010b200141386a2201200d470d000b0b02402010450d00201041386c450d00202010390b200341b8136a4200370300200341b0136a4200370300200341a0136a41086a22014200370300200342003703a013200341e0006a41fcffc300410810f2012001200341e0006a41086a290000370300200320032900603703a013200341f0006a41b9a6c800410e10f201200e41086a200341f0006a41086a290000370000200e2003290070370000200341086a200341a0136a412010f501200341ac016a200328020c410020032802081b360200200341a0016a41086a41013a00002003410b3a00a001200341a0016a10fc010b201c42003703002015420037030020114200370300200342003703a013200341e0006a41f1b5c900410d10f2012011201d290000370300200320032900603703a013200341f0006a418bb6c900410c10f201201e201f290000370000200e2003290070370000200341c0156a200341a0136a412010b20242c0f0f50b210a02400240410020032802b41620032802d0164102461b220120004f0d00200341f0006a10b302024002402003280278220b0d0041002115200341003602780c010b2001417f7320006a21162003280270222041046a2101200b41037441786a41037641016a21044100211502400340200128020020164b0d01200141086a21012004201541016a2215470d000b200421150b200b2015490d022003410036027802402015450d00202020154103746a211e41002802ccdd4a211f200341a0016a4101722104200341c0156a410172210c0340200341a0136a2020280200221110b402200341c0156a20032802a01320032802a81310b50202400240024020032802cc15220e4102470d002003201f3602604100211b4100210e4100211c0c010b200320032802c015220536026020032802d015211d20032802c415211c20032802c815221b450d00200541046a2101201b41037441786a41037641016a210d4100210602400240024002400240024002400340200128020020164b0d01200141086a2101200d200641016a2206470d000b200d21060c010b2006450d010b201b2006417f6a22014d0d02201b2006490d03201b20066b211b200520014103746a280200211d2006410374220e0d010c040b41002105201b0d050c040b0340200341c0136a2011200528020010b602200341c0156a20032802c013220d20032802c813220f10ab0241002101024020032d00c0152210450d00200d200f10fd0120104101470d002004200c290000370000200441186a200c41186a290000370000200441106a200c41106a290000370000200441086a200c41086a290000370000410121010b200320013a00a001024020032802c413450d00200d103920032d00a00121010b02400240200141ff0171450d00200341c0156a41186a200441186a290000370300200341c0156a41106a200441106a290000370300200341c0156a41086a200441086a290000370300200320042900003703c015200341c0156a10b7020c010b41002802a8fe4a4102490d002003410e3602c4132003200341a0016a3602c01341002802a4fe4a210141002802a0fe4a210d41002802acfe4a210f200342013703d015200341a496c8003602cc1520034281808080e0cb003702fc15200341fad3c600ad4280808080f008843702f415200341003602f015200341d8d3c600ad4280808080a004843703e815200342013703e0152003410e3602c815200341ac96c8003602c415200341023602c015200141b0a7c000200f410246220f1b28021021012003200341c0136a3602dc15200d41f4ddca00200f1b200341c0156a20011103000b200541086a2105200e41786a220e450d030c000b0b2001201b419496c800103c000b2006201b418898c1001055000b0240201b0d004101210e4100211b0c010b02402006450d0020032802602201200120064103746a201b41037410c40a1a0b410021054101210e0c010b200341c0156a201110b902200341a0016a20032802c015220520032802c81510ba0220032802a001210120032902a4012114024020032802c415450d00200510390b2014200a20011b210a024020010d00410121050c010b41002105200aa7450d00200110390b2003201d3602d0152003201b3602c8152003201c3602c41520032003280260220d3602c0152003200e3602cc1520032802a813210620032802a013210102400240200e4102470d002001200610fd010c010b20012006200341c0156a10bb02200e4102460d00201c41ffffffff0171450d00200d10390b024020032802a413450d00200110390b202041086a212002402005450d00200341c0156a201110b40220032802c015220120032802c81510fd0120032802c415450d00200110390b2020201e470d000b0b200b20156b2201450d000240201520032802782204460d002003280270220520044103746a200520154103746a200141037410c40a1a0b2003200420016a3602780b200341a0016a41086a200341f0006a41086a28020036020020032003290370220a3703a00102400240200aa722010d00200341d8136a22014200370300200341d0136a22044200370300200341c0136a41086a22054200370300200342003703c013200341c0156a41f4eec600410510f2012005200341c0156a41086a2206290000370300200320032900c0153703c013200341c0156a418befc600410f10f20120012006290000370300200420032900c015370300200341c0136a412010fd010c010b200341d8136a22044200370300200341d0136a22054200370300200341c0136a41086a22064200370300200342003703c013200341c0156a41f4eec600410510f2012006200341c0156a41086a220d290000370300200320032900c0153703c013200341c0156a418befc600410f10f2012004200d290000370300200520032900c015370300200341c0136a200341a0016a10bc0220032802a40141ffffffff0171450d00200110390b2015ad220a42c0f0f50b7e200a428084afdf007e7c42c0f0f50b7c210a0b200341d8156a4200370300200341d0156a22014200370300200341c8156a4200370300200342003703c015200341c0156a41a98aca00410b10f201200141f48bca00410e10f201200341c0156a412041f4ddca00410010a302200010bd02211420022400427f2013427f2008427f200a427f201442c0b2cd3b7c221220122014541b7c22142014200a541b7c220a200a2008541b7c220a200a2013541b0f0b2015200b418898c1001055000b41f4eec500413341a8efc5001065000bd90201017f230041e0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10ad010240024002402003280200450d00200341003602480c010b200341c8006a200341206a200328020410b6012003280248450d0020002003290348370200200041086a200341c8006a41086a2802003602000c010b2003420037022c2003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341c4006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b200041003602000b2002450d00200110390b200341e0006a24000bd60201017f230041d0006b220524002005200436020420052003360200024002400240200241074b0d0041002802a8fe4a450d0141002802a4fe4a210241002802a0fe4a210341002802acfe4a2104200541246a41f4ddca00360200200541186a42013703002005413c6a41dba2c000ad4280808080f00b84370200200541286a4200370300200541106a4113360200200541c8a2c00036020c200541306a41c8a2c000ad4280808080b00284370300200541c0a2c00036021420054281808080b00e3702442005410036023820054101360208200341f4ddca00200441024622041b200541086a200241b0a7c00020041b2802101103000c010b2002417c714108460d0020012800082102200541086a200510be02024020052802082203450d002000200529020c37020820002003360204200020023602000c020b200041003602040c010b200041003602040b200541d0006a24000bbb0603067f017e037f230041f0006b22022400200241206a200128020c200141146a28020010c5090240024020022802202203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902242208422088a722094b0d0020012802002003200710c60a450d010b2008a7450d02200310390c020b02402006280200450d00200428020010390b2001200336020c20062008370200200241106a2003200910e402024002400240024020022802102203450d002002280218210a2002280214210b024020012d001c450d00200128020c200128021410fd010b2001280214220920052802002207490d032002200128020c20076a200920076b2003200a20012802181104002002280204450d0120002002290300370200200041086a200241086a290300370200200b450d06200310390c060b41002802a8fe4a450d012002410f3602042002200436020041002802a4fe4a210341002802a0fe4a210741002802acfe4a210920024201370330200241f4a1c80036022c20024281808080e0d70037025c200241b2a2c800ad4280808080e00c84370254200241003602502002420137034020024116360228200241013602202002419ca2c8003602242002419ca2c800ad4280808080e00284370348200341b0a7c000200941024622091b28021021032002200236023c200741f4ddca0020091b200241206a20031103000c010b024041002802a8fe4a450d002002411036021c2002410f360214200220043602102002200241e8006a36021841002802a4fe4a210741002802a0fe4a210941002802acfe4a210a200242023703302002418ca2c80036022c20024281808080c0d90037025c200241b2a2c800ad4280808080e00c84370254200241003602502002420237034020024116360228200241013602202002419ca2c8003602242002419ca2c800ad4280808080e00284370348200741b0a7c000200a410246220a1b28021021072002200241106a36023c200941f4ddca00200a1b200241206a20071103000b200b450d00200310390b200241206a200128020c200128021410c509200228022022030d010c020b0b2007200941fca1c800105e000b200041003602040b200241f0006a24000bc01203027f087e067f230041f00c6b2203240002402001200284500d00200341c8006a200010dd02200341e8016a20032802482204200328025010e10220034188026a290300210520034180026a2903002106200341f8016a290300210720032903f001210820032903e80121090240200328024c450d00200410390b20094201520d002008200684200720058484500d00200341c8006a200010dd02200341e8016a20032802482204200328025010e1024200210a4200210b420021074200210c42002109420021054200210842002106024020032903e8014201520d00200341a8026a290300210b200341a0026a290300210a20034198026a290300210c20034190026a290300210720034188026a290300210520034180026a2903002109200341f8016a290300210620032903f00121080b0240200328024c450d00200410390b02400240024020082007200984842006200c2005848484500d00200341286a21040c010b200341286a2104200a200b844200520d00200341e0016a4200370300200341d8016a4200370300200341d0016a4200370300200342003703c8014100210d4101210e200341c8016a210f200341286a2104420021084200210642002109420021050c010b200341286a41186a200b3703002003200a370338200320073703282003200c370330200341c8016a41186a200441186a290300370300200341c8016a41106a200441106a290300370300200341c8016a41086a200441086a290300370300200320042903003703c8014101210d4100210e200341c8016a210f0b4200210c200ead210a02400240427f427f2008200120092009200156200520025620052002511b22101b22077c22012001200854221120062002200520101b22087c2011ad7c220220065420022006511b22101b2206200920077d220b7c220120012006542211427f200220101b2202200520087d2009200754ad7d22057c2011ad7c220120025420012002511b22101b220942ffc7afa02556427f200120101b220142005220015022101b0d002006200b84200220058484220c502111200c420052ad210c0c010b200341e8016a41186a200f41186a290300370300200341e8016a41106a200f41106a290300370300200341e8016a41086a200f41086a2903003703002003200f2903003703e801410121110b200420032903e801370300200441186a200341e8016a41186a290300370300200441106a200341e8016a41106a290300370300200441086a200341e8016a41086a29030037030020034180016a2008370300200341f0006a2001370300200341e8006a22122009370300200341c8006a41106a200237030020032007370378200320063703502003200c3703602003200a370348024002400240024002400240200e200942ffc7afa02556200142005220101b220f714101470d00200320003602e8012000200341e8016a10f0020c010b0240200d410173200f720d00200320003602e8012000200341e8016a10e00241ff0171220f4103460d01200f0e03020103020b200d200f724101470d010b20034188016a41186a200441186a29030037030020034188016a41106a200441106a29030037030020034188016a41086a200441086a2903003703002003200429030037038801200341a8016a200010dd02200341e8016a20032802a801220420032802b001220f10e1020240024020032903e8014201510d00200341b8016a41086a4200370300200342003703b8010c010b200341b8016a41086a200341b8026a2903003703002003200341b0026a2903003703b8010b4200210702400240200942ffc7afa02556200142005220101b0d0020034180026a4200370300200341f8016a4200370300200341f0016a4200370300200342003703e8014200210542002106420021020c010b200341e8016a41186a20034188016a41186a290300370300200341e8016a41106a20034188016a41106a290300370300200341e8016a41086a20034188016a41086a29030037030020032003290388013703e801200b21070b200341c8016a41186a200341e8016a41186a220e2903002201370300200341c8016a41106a200341e8016a41106a22102903002209370300200341c8016a41086a200341e8016a41086a22112903002208370300200320032903e801220c3703c80120034188026a2005370300200e200737030020102002370300200341e8016a41286a200c37030020034198026a2008370300200341e8016a41386a2009370300200341a8026a2001370300200341b0026a20032903b801370300200341b8026a200341b8016a41086a290300370300200320063703f001200342013703e8012004200f201110e202024020032802ac01450d00200410390b200341c8006a41106a2903002102200341c8006a41286a2903002101200341c8006a41386a29030021082003290350210620032903682109200329037821072003290348210a2003290360210c0b0240200a4201520d00200341a0026a200237030020034198026a2006370300200341f1016a2000290000370000200341e8016a41086a41003a000020034189026a200041186a29000037000020034181026a200041106a290000370000200341f9016a200041086a290000370000200341023a00e801200341e8016a10fc010b200c50450d01420021020c020b20110d02200320123602e801200341e8016a10a4060c020b200341e8016a41186a200041186a290000370300200341e8016a41106a200041106a290000370300200341e8016a41086a200041086a290000370300200320002900003703e801420121020b200341086a41186a200341e8016a41186a22042903002205370300200341086a41106a200341e8016a41106a220f2903002206370300200341086a41086a200341e8016a41086a220e290300220c370300200320032903e801220a37030820034198026a2210200137030020034190026a22112009370300200f200c3703002004200637030020034188026a2005370300200320023703e8012003200a3703f001200341e8016a10ec07024020032903e801500d0020032011360248200341c8006a10a4060b200341a0026a200837030020102007370300200e41063a000020034189026a200041186a29000037000020034181026a200041106a290000370000200341f9016a200041086a290000370000200341f1016a2000290000370000200341023a00e801200341e8016a10fc010b200341f00c6a24000bd40101037f230041206b220224000240200141016a22032001490d00200041046a280200220441017422012003200120034b1b22014104200141044b1b220141ffffffff01712001464102742103200141037421010240024020040d00200241003602100c010b200241186a410436020020022004410374360214200220002802003602100b200220012003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410376360200200241206a24000f0b1034000bd10502097f017e230041d0006b22012400200141c0006a4200370300200141386a22024200370300200141306a420037030020014200370328200141286a4192d1c800410b10f201200241c0d3c800411310f2012001200141286a412010f5012001280204210320012802002104200141286a200010f80120012802282202200128023010f90141ff017121050240200128022c450d00200210390b0240024020054102470d002003410020041b220241026a22032002492104200141186a200010f801200128022021062001280218210220014100360230200142013703284104200141286a1080012002200620012802282207200128023010a3020240200128022c450d00200710390b417f200320041b21030240200128021c450d00200210390b200141086a200310c007200141286a20012802082001280210109c0202400240200128022822070d002001420037021c41002108200141002802ccdd4a2207360218410021090c010b200129022c210a200120073602182001200a37021c200a422088a72109200aa721080b41002102024002402009450d0020092104200921030340024002402007200441017620026a22044102746a280200220620004f0d00200441016a21020c010b2004210320062000460d030b200320026b2104200320024b0d000b20092002490d030b024020092008470d00200141186a200810b701200128021821070b200720024102746a220341046a2003200920026b41027410c40a1a200320003602002001200941016a3602200b200141286a41086a200141186a41086a28020036020020012001290318220a370328200128021021032001280208210202400240200aa722040d002002200310fd010c010b2001200336024c20012002360248200141286a200141c8006a109703200128022c41ffffffff0371450d00200410390b200128020c450d00200210390b200141d0006a240020054102470f0b200220091044000b940201027f230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041003602000c010b200328020c2102024002400240200341106a28020022044104490d002004417c714104470d010b2003420037021c410021042003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e702200328021c450d01200328021810390c010b20002001290000370204410121040b200020043602002002450d00200110390b200341d0006a24000b18002001ad4220862000ad842003ad4220862002ad84102d0be90301067f230041d0006b22022400200241086a418480c400410910f201200241186a41c0a3c900410510f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bf20906057f047e017f027e077f017e230041b0016b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041033602340c010b200328020c21042003200341086a41086a28020036023c2003200136023820034188016a200341386a10800202400240024020032d0088014101460d00200341c0006a41186a200341a1016a290000370300200341c0006a41106a20034199016a290000370300200341c0006a41086a20034191016a290000370300200320032900890137034020034188016a200341386a10f10720032d0088014104460d00200341e0006a41206a20034188016a41206a2f01003b0100200341e0006a41186a20034188016a41186a290300370300200341e0006a41106a20034188016a41106a290300370300200341e0006a41086a20034188016a41086a2903003703002003200329038801370360200328023c22054110490d0020032003280238220641106a22073602382003200541706a220236023c20024110490d002005417c714120460d002005415c6a4110490d0020054134460d00200641086a290000210820062900002109200741086a290000210a2007290000210b2006280020210c2006412c6a290000210d2006290024210e2005414b6a2107200641356a210f4100210202400240024020062d00340e03020001030b20074104490d022003200541476a220736023c2003200641396a220f36023820062800352110410121020c010b20074104490d012003200541476a220736023c2003200641396a220f36023820062800352110410221020b20074104490d002007417c7122054104460d0020054108470d010b200342003702642003410028029cde4a3602602003410c360244200320033602402003200341e0006a3602182003419c016a41013602002003420137028c01200341e4b4c400360288012003200341c0006a36029801200341186a41fc86ca0020034188016a103b1a2003280260200328026810e70202402003280264450d00200328026010390b410321020c010b200341186a41086a2205200341c0006a41086a290300370300200341186a41106a2206200341c0006a41106a290300370300200341186a41186a2211200341c0006a41186a29030037030020034188016a41086a2212200341e0006a41086a29030037030020034188016a41106a2213200341e0006a41106a29030037030020034188016a41186a2214200341e0006a41186a29030037030020034188016a41206a2215200341e0006a41206a2f01003b01002003200329034037031820032003290360370388012003200741746a36023c2003200f410c6a360238200f2900002116200f2800082107200041286a200d3703002000200e370320200041186a200a3703002000200b3703102000200837030820002009370300200041c4006a20073602002000413c6a2016370200200020103602382000200c360230200041c8006a2003290318370300200041d0006a2005290300370300200041d8006a2006290300370300200041e0006a2011290300370300200041e8006a200329038801370300200041f0006a2012290300370300200041f8006a201329030037030020004180016a201429030037030020004188016a20152f01003b01002000200328016036018a012000418e016a200341e4006a2f01003b01000b200020023602342004450d00200110390b200341b0016a24000bc90201037f230041c0006b220324000240410410382204450d00200441edde91e3063600002003200436022820034284808080c00037022c200341286a4104410810810120032802282205200328023022046a20012900003700002003200441086a22043602300240200328022c20046b41034b0d00200341286a2004410410810120032802282105200328023021040b200520046a2002360000200328022821052003200441046a36023c200320053602382003200341386a10fe070240200328022c450d00200510390b0240024020032d00004101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700000b200341c0006a24000f0b1030000b901a020a7f097e230022082109200841e0376b41607122082400200841d8246a200210f80120082802d824220a20082802e02410f90141ff0171210b024020082802dc24450d00200a10390b02400240200b4107460d00200b41054b0d004101200b74412a710d010b200841d8246a200210f80120082802d824220a20082802e02410f90141ff0171210b024020082802dc24450d00200a10390b0240200b4107460d00200b41064b0d004101200b7441d400710d010b20004183343b0100200041086a4111360200200041046a41ccc6c400360200200041026a41033a0000200924000f0b200841f0246a220c4200370300200841e8246a220b4200370300200841d8246a41086a220d4200370300200842003703d824200841d8126a41fcffc300410810f201200d200841d8126a41086a220a290000370300200820082900d8123703d824200841d8126a41b9a6c800410e10f201200c200a290000370300200b20082900d812370300200841d0006a200841d8246a412010f50102402008280254410020082802501b2003460d0020004183343b0100200041086a4111360200200041046a41c0c7c400360200200041026a41093a0000200924000f0b200c4200370300200b4200370300200d4200370300200842003703d824200841d8126a41fcffc300410810f201200d200a290000370300200820082900d8123703d824200841d8126a41b5a7c800410b10f201200b41086a200a290000370000200b20082900d812370000200841d8126a200841d8246a412010a2020240024002400240024020082802d8124101470d00200a280200210d20082802dc12210c200841f0246a4200370300200841e8246a4200370300200841d8246a41086a220a4200370300200842003703d824200841d8126a41b9fec300410610f201200a200841d8126a41086a2203290000370300200820082900d8123703d824200841d8126a41b0eec900410610f201200b41086a2003290000370000200b20082900d812370000200841c8006a200841d8246a412010f50102402008280248450d00200828024c417f200d41d8046a22032003200d491b490d0020004183343b0100200041086a410c360200200041046a4180c8c400360200200041026a410d3a0000200924000f0b200841d8246a200c2004200510af0202400240024020082d00d8244101460d0020082d00d9242103200841f0246a220c4200370300200841e8246a220e4200370300200841d8246a41086a220d4200370300200842003703d824200841d8126a41b9fec300410610f201200d200841d8126a41086a220a290000370300200820082900d8123703d824200841d8126a41b0eec900410610f201200b41086a220f200a290000370000200b20082900d812370000200841c0006a200841d8246a412010f5012008280244211020082802402111200c4200370300200e4200370300200d4200370300200842003703d824200841d8126a41fcffc300410810f201200d200a290000370300200820082900d8123703d824200841d8126a41b5a7c800410b10f201200f200a290000370000200b20082900d812370000200841d8126a200841d8246a412010a2020240024020082802d8124101470d002010410020111b220b200a2802006b220d200b4b0d004101210c200d41d804490d010b4100210c4100210d0b200841d8246a200d10a9020240024020082903d8244202520d000240200d417f6a220b200d4d0d00200842023703d8120c020b200841d8126a200b10a9020c010b200841d8126a200841d8246a41801210c30a1a0b20082903d8124202520d01200841d8006a410041801210c50a1a0c020b200a280200210b20082802dc242108200041003a0000200041086a200b360200200041046a2008360200200924000f0b200841d8006a200841d8126a41801210c30a1a0b200841d8006a20034106746a220b2903004201520d01200b41306a290300200654200b41386a290300221220075420122007511b0d010c020b20004183343b0100200041086a410a360200200041046a41dcc7c400360200200041026a410a3a0000200924000f0b200841306a2002200110ef01200841306a41086a290300211320082903302112200841d8366a41186a200141186a290000370300200841d8366a41106a200141106a290000370300200841d8366a41086a200141086a290000370300200820023602f836200820012900003703d836200841d8246a200841d8366a10e902200841186a20082802d824220e20082802e02410f9044200200720137d2006201254ad7d2213200620127d2214200656201320075620132007511b220a1b211242002014200a1b2113200841186a41106a29030021142008290320211520082903182116024020082802dc24450d00200e10390b02402013201542002016a7220a1b22157d2216201356201220144200200a1b7d2013201554ad7d221420125620142012511b0d00200841d8246a20012016201410f701200820082900d9243703d8122008200841d8246a41086a2800003600df1220082d00d824220a4108470d02200841d8126a200841d8366a10e90220082802e012210e20082802d812210a200820123703e024200820133703d824200a200e200841d8246a411010a302024020082802dc12450d00200a10390b200841a0256a201237030020084198256a201337030020084190256a201437030020084188256a2016370300200841d8246a41086a41043a0000200841f9246a200141186a290000370000200841f1246a200141106a290000370000200841e9246a200141086a290000370000200841e1246a20012900003700002008410b3a00d824200841d8246a10fc010b200841d8246a41186a200141186a290000370300200841d8246a41106a200141106a220a290000370300200841d8246a41086a200141086a2900002212370300200820023602a8372008200129000022133703d824200820133702ac37200820123702b4372008200a2800003602bc37200820082902ec24370380372008200841d8246a411c6a2802003602883720082007370398372008200637039037200842013703a037200b41186a220a2903002114200a20082903b837370300200b2903102115200b20082903b037370310200b2903082113200b20082903a837370308200b2903002112200b4201370300200820143703b837200820153703b037200820123703a037200820133703a837200841d8006a20034106746a220b41206a220a2903002114200b41286a22032903002115200b41306a220e2903002116200b41386a220b290300211720082903803721182008290388372119200829039037211a200b200829039837370300200e201a37030020032019370300200a20183703002008201737039837200820163703903720082015370388372008201437038037024020124201520d00200841c0376a411c6a200828028837360200200841c0376a41106a200841a0376a410c72220b41106a280000360200200841c0376a41086a200b41086a29000037030020082008290380373702d4372008200b2900003703c037200c0d002013a721034100210b03400240200841d8006a200b6a220a2903004201520d00200a410c6a200841c0376a412010c60a0d00200a41086a2802002003460d020b200b41c0006a220b418012470d000b200841d8126a41186a200841c0376a41186a290300370300200841d8126a41106a200841c0376a41106a290300370300200841d8126a41086a200841c0376a41086a290300370300200820082903c0373703d812200820033602f812200841d8246a200841d8126a10e902200820082802d824220b20082802e024220a10f904200841106a2903002112200829030821130240200829030022144201520d00200b200a10fd010b024020082802dc24450d00200b10390b2014a74101470d00200841c0376a20132012109f0220084190256a201237030020084188256a2013370300200841f9246a200841d8376a290300370000200841f1246a200841d0376a290300370000200841e9246a200841c0376a41086a290300370000200841e1246a20082903c037370000200841d8246a41086a41053a00002008410b3a00d824200841d8246a10fc010b200841d8126a200d10aa0220082802e012210a20082802d812210b4180121038220d450d0220084280123702dc242008200d3602d824200841d8006a200841d8246a10d501200b200a20082802d824220d20082802e02410a302024020082802dc24450d00200d10390b024020082802dc12450d00200b10390b20084198256a200737030020084190256a20063703002008418c256a200536020020084188256a200436020020084184256a2002360200200841d8246a41086a41073a0000200841f9246a200141186a290000370000200841f1246a200141106a290000370000200841e9246a200141086a290000370000200841e1246a20012900003700002008410b3a00d824200841d8246a10fc010b200041083a0000200924000f0b200020082903d8123700012000200a3a0000200041086a20082800df12360000200924000f0b1030000b11002001ad4220862000ad8410274101460bba11051a7f017e067f027e027f230041f0246b22022400200241086a200110aa022002280208210320022002280210220136021c20022003360218200241206a2003200110e40202400240200228022022040d00200042023703000c010b200241206a41086a280200210120022802242105200241003602a824200241306a41196a2106200241306a41126a2107200241306a410b6a2108200241306a4104722109200241306a41096a210a200241306a410a6a210b200241306a410d6a210c200241306a41106a210d200241306a41116a210e200241306a41146a210f200241306a41176a2110200241306a41186a2111200241306a411b6a2112200241306a411e6a2113200241306a411f6a2114200241306a41206a2115200241d2006a21164101211741002118200421190240024003402001450d012001417f6a211a201941016a211b4200211c0240024020192d00000e020100030b20024100360230201a450d02201b2d0000211a200241013602302002201a3a003420014102460d0220192d0002211a200241023602302002201a3a003520014103460d0220192d0003211a200241033602302002201a3a003620014104460d0220024104360230200220192d00043a003720014105460d02200241306a41086a20192d00053a00002002410536023020014106460d02200a20192d00063a00002002410636023020014107460d02200b20192d00073a00002002410736023020014108460d02200820192d00083a00002002410836023020014109460d02200241306a410c6a20192d00093a0000200241093602302001410a460d02200c20192d000a3a00002002410a3602302001410b460d02200241306a410e6a20192d000b3a00002002410b3602302001410c460d02200241306a410f6a20192d000c3a00002002410c3602302001410d460d02200d20192d000d3a00002002410d3602302001410e460d02200e20192d000e3a00002002410e3602302001410f460d02200720192d000f3a00002002410f36023020014110460d02200241306a41136a20192d00103a00002002411036023020014111460d02200f20192d00113a00002002411136023020014112460d02200241306a41156a20192d00123a00002002411236023020014113460d02200241306a41166a20192d00133a00002002411336023020014114460d02201020192d00143a00002002411436023020014115460d02201120192d00153a00002002411536023020014116460d02200620192d00163a00002002411636023020014117460d02200241306a411a6a20192d00173a00002002411736023020014118460d02201220192d00183a00002002411836023020014119460d02200241306a411c6a20192d00193a0000200241193602302001411a460d02200241306a411d6a20192d001a3a00002002411a3602302001411b460d02201320192d001b3a00002002411b3602302001411c460d02201420192d001c3a00002002411c3602302001411d460d02201520192d001d3a00002002411d3602302001411e460d02200241306a41216a20192d001e3a00002002411e3602302001411f460d02201620192d001f3a00002002411f36023020014120460d02200241306a41236a20192d00203a0000200241e0246a41026a221a200841026a2d00003a0000200241e8246a41026a221b200741026a2d00003a000020024120360230200220092f01003b01d024200220082f00003b01e024200220072f00003b01e8242002200941026a2d00003a00d2242002280037211d200228013e211e2002280045211f200228024c212020022802502121200241ec246a41026a2222200641026a2d00003a0000200220062f00003b01ec242001415f6a4104490d022001415b6a410f4d0d02200241c8246a41026a201a2d00003a0000200241c4246a41026a201b2d00003a0000200241c0246a41026a20222d00003a0000200220022f01d0243b01cc24200220022d00d2243a00ce24200220022f01e0243b01c824200220022f01e8243b01c424200220022f01ec243b01c0242001414b6a211a201941356a211b2019412d6a290000212320192900252124201928002121254201211c0b200241b8246a41026a2219200241c8246a41026a2d00003a0000200241b4246a41026a2222200241c4246a41026a2d00003a0000200241b0246a41026a2226200241c0246a41026a2d00003a0000200220022d00ce243a00be24200220022f01cc243b01bc24200220022f01c8243b01b824200220022f01c4243b01b424200220022f01c0243b01b024200241a8126a20186a220141086a20253602002001201c3703002001410e6a20022d00be243a00002001410c6a20022f01bc243b01002001410f6a201d360000200141156a20192d00003a0000200141136a20022f01b8243b0000200141166a201e3601002001411c6a20222d00003a00002001411a6a20022f01b4243b00002001411d6a201f360000200141236a20262d00003a0000200141216a20022f01b0243b0000200141386a2023370300200141306a2024370300200141286a2021360200200141246a2020360200200220173602a824201741016a2117201a2101201b2119201841c0006a2218418012470d000b024020022802a8244124490d0020022903a8122124200241306a200241b0126a41f81110c30a1a4203211c20244202510d02200241a8126a200241306a41f81110c30a1a2024211c0c020b419fd2ca00411b41bcd2ca001035000b4203211c0b02400240201c4203520d00200242003702d4242002410028029cde4a3602d0242002410c3602e4242002200241186a3602e0242002200241d0246a3602e824200241c4006a410136020020024201370234200241e4b4c4003602302002200241e0246a360240200241e8246a41fc86ca00200241306a103b1a20022802d02420022802d82410e702024020022802d424450d0020022802d02410390b4202211c0c010b200041086a200241a8126a41f81110c30a1a0b2000201c3703002005450d00200410390b0240200228020c450d00200310390b200241f0246a24000beb0301067f230041d0006b22022400200241086a41fcffc300410810f201200241186a418cd2c500410710f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bd30a03037f017e017f230041e0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003a00000c010b2003280214210402400240200341186a2802002202450d00200320012d00003a003c2003410136023820024101460d00200320012d00013a003d2003410236023820024102460d00200320012d00023a003e2003410336023820024103460d00200320012d00033a003f2003410436023820024104460d00200341c0006a20012d00043a00002003410536023820024105460d00200341c1006a20012d00053a00002003410636023820024106460d00200341c2006a20012d00063a00002003410736023820024107460d00200341c3006a20012d00073a00002003410836023820024108460d00200341c4006a20012d00083a00002003410936023820024109460d00200341c5006a20012d00093a00002003410a3602382002410a460d00200341c6006a20012d000a3a00002003410b3602382002410b460d00200341c7006a20012d000b3a00002003410c3602382002410c460d00200341c8006a20012d000c3a00002003410d3602382002410d460d00200341c9006a20012d000d3a00002003410e3602382002410e460d00200341ca006a20012d000e3a00002003410f3602382002410f460d00200341cb006a20012d000f3a00002003411036023820024110460d00200341cc006a20012d00103a00002003411136023820024111460d00200341cd006a20012d00113a00002003411236023820024112460d00200341ce006a20012d00123a00002003411336023820024113460d00200341cf006a20012d00133a00002003411436023820024114460d00200341d0006a20012d00143a00002003411536023820024115460d00200341d1006a20012d00153a00002003411636023820024116460d00200341d2006a20012d00163a00002003411736023820024117460d00200341d3006a20012d00173a00002003411836023820024118460d00200341d4006a20012d00183a00002003411936023820024119460d00200341d5006a20012d00193a00002003411a3602382002411a460d00200341d6006a20012d001a3a00002003411b3602382002411b460d00200341d7006a20012d001b3a00002003411c3602382002411c460d00200341d8006a20012d001c3a00002003411d3602382002411d460d00200341d9006a20012d001d3a00002003411e3602382002411e460d00200341da006a20012d001e3a00002003411f3602382002411f460d00200341db006a20012d001f3a0000200041086a200341386a410b6a2f00003b00002000410a6a200341c5006a2d00003a0000200041116a200341cc006a2d00003a00002000410f6a200341386a41126a2f01003b000020034120360238200320032f013c3b0120200320032d003e3a0022200341c6006a2801002102200341cd006a2800002105200341d4006a2902002106200328003f2107200041186a200341d3006a2d00003a0000200041166a200341386a41196a2f00003b0000200041036a20032d00223a0000200020032f01203b0001200041196a2006370000200041126a20053600002000410b6a2002360000200041046a2007360000410121020c010b20034200370224410021022003410028029cde4a3602202003410c3602342003200341086a3602302003200341206a36025c200341cc006a41013602002003420137023c200341e4b4c4003602382003200341306a360248200341dc006a41fc86ca00200341386a103b1a2003280220200328022810e7022003280224450d00200328022010390b200020023a00002004450d00200110390b200341e0006a24000b0e002001ad4220862000ad8410250b8c0201047f230041306b22012400200141106a41fcffc300410810f201200141206a41c4d1c500410f10f2010240412010382202450d002002200129001037000020022001290020370010200241086a200141106a41086a290000370000200241186a2203200141206a41086a29000037000020012002360200200142a08080808004370204412010382204450d0020002004360200200042a080808080043702042000200129030037020c2000411136021820042002290000370000200441086a200241086a290000370000200441106a200241106a290000370000200441186a2003290000370000200041146a200141086a280200360200200041013a001c200141306a24000f0b1030000ba00703067f017e037f230041a0016b22022400200241d0006a200128020c200141146a28020010c5090240024020022802502203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902542208422088a722094b0d0020012802002003200710c60a450d010b2008a7450d02200310390c020b02402006280200450d00200428020010390b2001200336020c2006200837020020022003200910e402024002400240024020022802002203450d002002280208210a2002280204210b024020012d001c450d00200128020c200128021410fd010b2001280214220920052802002207490d032002200128020c20076a200920076b2003200a200128021811040020022903004201510d0120002002290308370308200041386a200241386a290300370300200041306a200241306a290300370300200041286a200241286a290300370300200041206a200241206a290300370300200041186a200241186a290300370300200041106a200241106a29030037030020004201370300200b450d06200310390c060b41002802a8fe4a450d012002410f3602442002200436024041002802a4fe4a210341002802a0fe4a210741002802acfe4a210920024201370360200241f4a1c80036025c20024281808080e0d70037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420137037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200341b0a7c000200941024622091b28021021032002200241c0006a36026c200741f4ddca0020091b200241d0006a20031103000c010b024041002802a8fe4a450d002002411036024c2002410f36024420022004360240200220024198016a36024841002802a4fe4a210741002802a0fe4a210941002802acfe4a210a200242023703602002418ca2c80036025c20024281808080c0d90037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420237037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200741b0a7c000200a410246220a1b28021021072002200241c0006a36026c200941f4ddca00200a1b200241d0006a20071103000b200b450d00200310390b200241d0006a200128020c200128021410c509200228025022030d010c020b0b2007200941fca1c800105e000b200042003703000b200241a0016a24000bcf05000240024020022001490d0020032002490d00200141086a20034b0d010b200041013a0000200041086a411e360200200041046a41ae97c3003602000f0b0240200220016b220120024b0d002001200320026b6a210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020010e080001020304050607080b20020e0808090a0b0c0d0e0f070b2002417f6a0e070f101112131415060b2002417e6a0e0615161718191a050b2002417d6a0e051a1b1c1d1e040b2002417c6a0e041e1f2021030b2002417b6a0e03212223020b2002417a6a0e022324010b20024107460d240b200041013a0000200041086a4109360200200041046a41cc97c3003602000f0b200041003b01000f0b20004180023b01000f0b20004180043b01000f0b20004180063b01000f0b20004180083b01000f0b200041800a3b01000f0b200041800c3b01000f0b200041800e3b01000f0b20004180103b01000f0b20004180123b01000f0b20004180143b01000f0b20004180163b01000f0b20004180183b01000f0b200041801a3b01000f0b200041801c3b01000f0b200041801e3b01000f0b20004180203b01000f0b20004180223b01000f0b20004180243b01000f0b20004180263b01000f0b20004180283b01000f0b200041802a3b01000f0b200041802c3b01000f0b200041802e3b01000f0b20004180303b01000f0b20004180323b01000f0b20004180343b01000f0b20004180363b01000f0b20004180383b01000f0b200041803a3b01000f0b200041803c3b01000f0b200041803e3b01000f0b20004180c0003b01000f0b20004180c2003b01000f0b20004180c4003b01000f0b20004180c6003b01000f0b200041013a0000200041086a4116360200200041046a41d597c3003602000bbb0101037f230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034108200341084b1b21030240024020010d00200241003602100c010b200241106a41086a410136020020022001360214200220002802003602100b200220034101200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001360200200241206a24000f0b1034000bca0102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad42387e2205422088a74541037421012005a721040240024020030d00200241003602100c010b200241106a41086a41083602002002200341386c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a200141386e360200200241206a24000f0b1034000bbe0a060f7f017e037f047e157f017e230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d0020004102360290010c010b200328020c2102024002400240200341106a28020022044104490d002004417c7122054104460d0020054108460d002005410c460d0020054110460d0020054114460d0020054118460d002005411c460d0020054120460d0020054124460d0020054128460d00200441546a4108490d0020054134460d0020054138460d002005413c460d002004417071220641c000460d00200641d000460d00200541e000460d00200541e400460d00200541e800460d00200541ec00460d00200541f000460d00200541f400460d00200541f800460d00200541fc00460d002005418001460d002005418401460d002005418801460d002005418c01460d002004419001460d00200128000021072001280004210820012800082109200128000c210a2001280010210b2001280014210c2001280018210d200128001c210e2001280020210f2001280024211020012800282111200129002c21122001280034211320012800382114200128003c2115200141c8006a290000211620012900402117200141d8006a2900002118200129005021192001280060211a2001280064211b2001280068211c200128006c211d2001280070211e2001280074211f20012800782120200128007c2121200128008001212220012800840121232001280088012124200128008c012125200441ef7e6a210620014191016a2126410021050240024020012d0090010e020100020b20064104490d01200441eb7e6a210620014195016a21262001280091012127410121050b2006450d002006417f6a2104202641016a2128410021290240024020262d00000e020100020b20044104490d012006417b6a2104202641056a21282026280001212a410121290b20044104490d002004417c7122044104460d0020044108460d002004410c460d0020044110460d0020044114460d0020282800002106202828000421262028280008212b202828000c212c2028280010212d2028280014212e200441686a220441084b0d01410120047441910271450d010b2003420037021c2003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e7020240200328021c450d00200328021810390b410221050c010b2028290018212f20282800202104200041106a201637030020002017370308200041206a201837030020002019370318200020073602282000200836022c200020093602302000200a3602342000200b3602382000200c36023c2000200d3602402000200e3602442000200f3602482000201036024c2000201136025020002013360254200020143602582000201536025c2000201a3602602000201b3602642000201c3602682000201d36026c2000201e3602702000201f360274200020203602782000202136027c2000202236028001200020233602840120002024360288012000202536028c01200020273602940120004198016a20293602002000419c016a202a360200200041a0016a2006360200200041a4016a2026360200200041a8016a202b360200200041ac016a202c360200200041b0016a202d360200200041b4016a202e360200200041c0016a2004360200200041b8016a202f370200200020123703000b20002005360290012002450d00200110390b200341d0006a24000bc20502097f017e23004180016b22012400200141206a4200370300200141186a22024200370300200141086a41086a420037030020014200370308200141086a41f4eec600410510f2012002418befc600410f10f2012001412036022c2001200141086a360228200141306a200141086a412010e4020240024002400240200128023022030d00410021040c010b200128023421052001200141306a41086a280200360244200120033602402001200141c0006a10ad010240024020012802000d0020012802042206200128024422024103762207200720064b1b22084103742207417f4c0d030240024020080d00410421040c010b200710382204450d050b41002107200141003602702001200836026c200120043602680240024002402006450d00034020024104490d032002417c6a4104490d022001280240220828000021092001200841086a3602402008280004210802402007200128026c470d00200141e8006a200710a00220012802682104200128027021070b200241786a2102200420074103746a22072008360204200720093602002001200128027041016a22073602702006417f6a22060d000b200128026821040b200129026c210a2004450d020c030b2002417c6a21020b200120023602440240200128026c41ffffffff0171450d00200128026810390b0b2001420037024c410021042001410028029cde4a3602482001410c36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c200141e4b4c4003602682001200141d8006a360278200141e4006a41fc86ca00200141e8006a103b1a2001280248200128025010e702200128024c450d00200128024810390b2005450d00200310390b0240024020040d0020004200370204200041002802ccdd4a3602000c010b2000200a370204200020043602000b20014180016a24000f0b1034000b1030000bec0301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41a6efc600410c10f201200220013602342002200241346a410410f301370338200241c0006a410c6a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bd70501087f230041e0006b220324002003200236020c20032001360208200341106a2001200210e4020240024002400240200328021022040d002000410236020c0c010b200328021421052003200341186a280200360224200320043602202003200341206a10ad010240024020032802000d0020032802042206200328022422014103762202200220064b1b22074103742202417f4c0d030240024020070d00410421080c010b200210382208450d050b41002102200341003602502003200736024c20032008360248024002400240024002400240024020060d00410021020c010b200120064103746b2109034020014104490d032001417c6a4104490d022003280220220a28000021072003200a41086a360220200a280004210a02402002200328024c470d00200341c8006a200210a00220032802482108200328025021020b200141786a2101200820024103746a2202200a360204200220073602002003200328025041016a22023602502006417f6a22060d000b20032009360224200328024c210720032802482108200921010b2008450d052001450d044100210a200328022022092d00000e020302040b2001417c6a21010b20032001360224200328024c41ffffffff0171450d03200328024810390c030b2001417f6a4104490d012003200941056a360220200928000121064101210a0b200020063602102000200236020820002007360204200020083602000c020b200741ffffffff0171450d00200810390b2003420037022c2003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341c4006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b4102210a0b2000200a36020c2005450d00200410390b200341e0006a24000f0b1034000b1030000bb80401057f230041e0006b22032400200341086a41f4eec600410510f201200341186a419aefc600410c10f20102400240410410382204450d00200420013600002003200436023820034284808080c00037023c200341386a4104410410810120032802382204200328024022016a2002360000200328023c210220032004200141046a220110f301370348200341d0006a410c6a200420016a360200200320043602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a108d0102402002450d00200410390b2003280230220241206a2204417f4c0d010240024020040d00410121010c010b200410382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200436020002402004410f4b0d0020004100411010810120062802002105200028020021010b200120056a22042003290008370000200441086a200341086a41086a2900003700002006200541106a220436020002402007280200220520046b410f4b0d00200020044110108101200041046a2802002105200041086a28020021040b200041086a2206200441106a22013602002000280200220720046a22042003290018370000200441086a200341186a41086a290000370000200328022821040240200520016b20024f0d0020002001200210810120062802002101200028020021070b200720016a2004200210c30a1a2006200120026a3602000240200328022c450d00200410390b200341e0006a24000f0b1030000b1034000be80101037f230041206b22012400200141106a2000109e09200141086a20012802102202200128021810f501200128020c410020012802081b210302402001280214450d00200210390b02400240200341014b0d00200141106a200010be0620012802102203200128021810fd0102402001280214450d00200310390b200141106a2000109e0920012802102200200128021810fd012001280214450d01200010390c010b200141106a2000109e09200128021821022001280210210020012003417f6a36021c200020022001411c6a410410a3022001280214450d00200010390b200141206a24000b9f0201027f230041106b220224000240024020002d00004101470d002002200128021841f0e2ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041016a36020c20022002410c6a41a0edc500104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b20012802184184e3ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a418c84c800410510f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bfc0202037f017e230041e0006b220324002003200236020c20032001360208200341106a2001200210e4020240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10ad010240024020032802000d00200328022420032802042204490d002004417f4c0d030240024020040d00410121050c010b200410382205450d0520054100200410c50a1a0b200020052003280220200410c30a36020020002004ad22064220862006843702040c010b2003420037022c2003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341c4006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b200041003602000b2002450d00200110390b200341e0006a24000f0b1034000b1030000b8f0201047f230041106b22032400200341003602082003420137030020022003109e0302400240200228020c4101460d000240200328020420032802082202470d00200320024101108101200328020821020b2003280200220420026a41003a0000200241016a21020c010b02402003280204220520032802082206470d0020032006410110810120032802042105200328020821060b2003280200220420066a41013a00002003200641016a2206360208200228021021020240200520066b41034b0d0020032006410410810120032802002104200328020821060b200420066a2002360000200641046a21020b200020012004200210a30202402003280204450d00200410390b200341106a24000b8c0101047f230041106b2202240002400240200128020822034103744104722204417f4c0d0020012802002101200410382205450d012002410036020820022004360204200220053602002002200310d20120012003200210cd012000412020022802002201200228020810a30202402002280204450d00200110390b200241106a24000f0b1034000b1030000ba18a0108017f017e047f017e037f017e177f027e230041a0136b2201240010c104420021020240024002400240024020004101460d00200141a0026a41186a22034200370300200141a0026a41106a22044200370300200141a0026a41086a22054200370300200142003703a002200141a8046a41bffec300410410f2012005200141a8046a41086a2206290000370300200120012900a8043703a002200141a8046a41cda6c800410b10f20120032006290000370300200420012900a80437030020014180016a200141a0026a10c2042001290388012107200128028001210820014190016a41186a2203420037030020014190016a41106a2209420037030020014190016a41086a220542003703002001420037039001200141b0066a41bffec300410410f2012005200141b0066a41086a290000370300200120012900b00637039001200141a8046a4188a6c800410a10f20120032006290000370300200920012900a804370300200141f0006a20014190016a10c2042001290378210220012802702106200141a8046a41eb97c200411710f201200141e8006a200141a8046a411010f501200141d8006a2002420020061b4200200128026c41e40020012802681bad420010c20a0240024002400240024002400240024002400240200129036050450d002001290358210220014190066a41186a2206420037030020014190066a41106a220a420037030020014190066a41086a22034200370300200142003703900620014198086a41bffec300410410f201200320014198086a41086a220529000037030020012001290098083703900620014198086a41c0a7c800410b10f20120062005290000370300200a200129009808370300200141c8006a20014190066a10c20420022001290350420020012802481b7c220b2002540d01200141a8046a41eb97c200411710f201200141c0006a200141a8046a411010f5014200210242002007420020081b2207200b7d220b200b2007561b200128024441e40020012802401bad540d0a200141b0066a41186a22064200370300200141b0066a41106a220c4200370300200141b0066a41086a22034200370300200142003703b00620014198086a418cf9c800410710f201200320014198086a41086a220d29000037030020012001290098083703b00620014198086a4184b4c200410c10f2012006200d290000370300200c200129009808370300200141386a200141b0066a412010f501200128023c210e2001280238210f20064200370300200c420037030020034200370300200142003703b00620014198086a418cf9c800410710f2012003200d29000037030020012001290098083703b00620014198086a41a8b4c200410d10f2012006200d290000370300200c200129009808370300200141b0066a10c002211020014190016a41186a2211420037030020014190016a41106a2206420037030020014190016a41086a22124200370300200142003703900120014198086a418cf9c800410710f2012012200d29000037030020012001290098083703900120014198086a4184b4c200410c10f201200941086a2213200d2900003700002009200129009808370000200141306a20014190016a412010f5012001280234211420012802302115200141b0016a10c304201142003703002006420037030020124200370300200142003703900120014198086a418cf9c800410710f2012012200d29000037030020012001290098083703900120014198086a41e9a4c200410a10f2012013200d290000370000200920012900980837000020014198086a20014190016a10c004200129029c08420020012802980822061b2202a721162006410028029cde4a20061b2217210502402002422088a74105742218450d00200141a0026a410472211920014198086a410c6a21064100211a4100210820172105034020014190066a41186a2017201a6a220341186a221b29000037030020014190066a41106a200341106a221c29000037030020014190066a41086a200341086a221d2900003703002001200329000037039006200641186a201b290000370000200641106a201c290000370000200641086a201d29000037000020062003290000370000200120083602a0082001200536029c08200120173602980802402008200610c4040d00200141a0026a41206a200d41206a280200360200200141a0026a41186a200d41186a290200370300200141a0026a41106a200d41106a290200370300200141a0026a41086a200d41086a2902003703002001200d2902003703a0022012201941086a29000037030020014190016a41106a2203201941106a2900003703002011201941186a2900003703002001201929000037039001200541186a2011290300370000200541106a2003290300370000200541086a20122903003700002005200129039001370000200541206a21050b200841016a21082018201a41206a221a470d000b0b200120163602c401200120173602c0012001200520176b4105753602c80120114200370300200141a0016a420037030020124200370300200142003703900120014198086a418cf9c800410710f2012012200d29000037030020012001290098083703900120014198086a4184b4c200410c10f2012013200d2900003700002009200129009808370000200141286a20014190016a412010f501200128022c210620012802282103200141b0066a4198f9c500410810f201200141a8046a41aef9c500411210f20120012006410020031b36029001200120014190016a410410f3013703900620014198086a410c6a20014190016a41046a360200200120014190066a41086a36029c08200120014190016a3602a008200120014190066a36029808200141a0026a20014198086a108d0120012802a802220841206a2206417f4c0d0b0240024020060d00410121030c010b200610382203450d0d0b41002105200141003602a00820012003360298082001200636029c0802402006410f4b0d0020014198086a41004110108101200128029c082106200128029808210320012802a00821050b200320056a221a20012900b006370000201a41086a200141b0066a41086a2900003700002001200541106a22053602a0080240200620056b410f4b0d0020014198086a20054110108101200128029c082106200128029808210320012802a00821050b200320056a221a20012900a804370000201a41086a200141a8046a41086a2900003700002001200541106a22053602a00820012802a002211a0240200620056b20084f0d0020014198086a20052008108101200128029808210320012802a00821050b200320056a201a200810c30a1a200520086a2106024020012802a402450d0020012802a00210390b2001280298082203200610ac020240200128029c08450d00200310390b200141a8016a4200370300200141a0016a420037030020014190016a41086a22064200370300200142003703900120014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703900120014198086a4184b4c200410c10f201200941086a20032900003700002009200129009808370000200141206a20014190016a412010f5012001280224210620012802202103200141b0066a4198f9c500410810f201200141a8046a41a0f9c500410e10f20120012006410020031b36029001200120014190016a410410f3013703900620014198086a410c6a20014190016a41046a360200200120014190066a41086a36029c08200120014190016a3602a008200120014190066a36029808200141a0026a20014198086a108d0120012802a802220841206a2206417f4c0d0b0240024020060d00410121030c010b200610382203450d0d0b41002105200141003602a00820012003360298082001200636029c0802402006410f4b0d0020014198086a41004110108101200128029c082106200128029808210320012802a00821050b200320056a221a20012900b006370000201a41086a200141b0066a41086a2900003700002001200541106a22053602a0080240200620056b410f4b0d0020014198086a20054110108101200128029c082106200128029808210320012802a00821050b200320056a221a20012900a804370000201a41086a200141a8046a41086a2900003700002001200541106a22053602a00820012802a002211a0240200620056b20084f0d0020014198086a20052008108101200128029808210320012802a00821050b200320056a201a200810c30a1a200520086a2106024020012802a402450d0020012802a00210390b2001280298082203200610ac020240200128029c08450d00200310390b024020012802c801450d0020014198086a200141c0016a10a803200141ab026a20014198086a41086a28020036000020012001290398083700a302200141a4086a200141a7026a290000370000200120012900a00237009d08200141023a009c08200141063a00980820014198086a10fc0120012802b8012112200141e0016a200141c0016a41086a280200360200200120123602d40120012014410020151b221a3602d001200120012903c0013703d801200141e8016a200141d0016a41086a10a803200142003702fc012001410028029cde4a22033602f801410410382206450d0d2006201a360000200120063602b00620014284808080c0003702b40620014198086a41cd87ca0010e802200141a0026a200128029808220520012802a00810ba0220012902a402420020012802a00222061b21022006200320061b211b0240200128029c08450d00200510390b200120024220883e02ac042001201b3602a804200141186a200141a8046a10ad010240024020012802180d00200128021c221c20012802ac04220341246e22062006201c4b1bad42247e2207422088a70d0e2007a72206417f4c0d0e0240024020060d00410421190c010b200610382219450d100b200141003602a802200120193602a0022001200641246e22063602a4020240201c0d00410021172019450d010c020b20014198086a410472210820014198086a41196a211120014198086a41126a211820014198086a410b6a2109410021174100211d024002400240034020034104490d02201d41016a211d2003417c6a210520012802a804220d2800002113410021060340200141003a009f0220052006460d022001200d20066a220341056a3602a804200820066a200341046a2d00003a00002001200641016a2203360298082003210620034120470d000b2001419c026a41026a2206200941026a2d00003a000020014198026a41026a220d201841026a2d00003a0000200120082f01003b019001200120092f00003b019c02200120182f00003b0198022001200841026a2d00003a00920120012802b808211620012802b408211420012800ad08211520012801a608211e200128009f08211f20014194026a41026a201141026a2d000022203a000020014190026a41026a222120062d00003a00002001418c026a41026a2222200d2d00003a000020014188026a41026a220d20203a0000200120112f000022063b019402200120012f0190013b019006200120012d0092013a009206200120012f019c023b019002200120012f0198023b018c02200120063b0188020240201720012802a402470d00200141a0026a201710c50420012802a002211920012802a80221170b200520036b21032019201741246c6a22062013360200200641066a20012d0092063a0000200620012f0190063b01042006410d6a20212d00003a00002006410b6a20012f0190023b0000200641146a20222d00003a0000200641126a20012f018c023b0000200641076a201f3600002006410e6a201e360000200641156a20153600002006411b6a200d2d00003a0000200641196a20012f0188023b0000200641206a20163600002006411c6a20143600002001201741016a22173602a802201d201c470d000b20012802a402210620012802a0022219450d030c040b200141003602ac040c010b200120033602ac040b20012802a4022206450d00200641246c450d0020012802a00210390b4100210641002802ccdd4a2119410021170b200141b4046a41cd87ca00200141b0066a10c604200141c8046a2017360200200141c4046a2006360200200141a8046a41086a200141b0066a41086a280200360200200120193602c004200120012903b0063703a80402402002a7450d00201b10390b20012802e801211120012802ec012118024020012802f0012206450d00201120064105746a211c20014198086a410c6a2119201121174100211d034020014190066a41186a201741186a290000220237030020014190066a41106a201741106a290000220737030020014190066a41086a201741086a290000220b37030020012017290000222337039006200141b0066a41186a22052002370300200141b0066a41106a22082007370300200141b0066a41086a220d200b370300200120233703b006410410382206450d0f2006201a360000201941002900cd874a370000201941086a221b41002900d5874a37000020014284808080c00037029c0820012006360298082001200141b0066a3602b408200141a0026a20014198086a1095032006103920014198086a200141a0026a10df02200128029808220320012802a00810a80221060240200128029c08450d00200310390b024020060d00201920012903b006370000201941186a2005290300370000201941106a2008290300370000201b200d29030037000020014198086a200141f8016a10a103200141a0026a20014198086a10ee0220012802c004210d0240024020012802c804221b450d0041002106201b2108201b21050240034002400240200d200841017620066a220341246c6a2802002208201a4f0d00200341016a21060c010b200321052008201a460d020b200520066b210820062103200520064b0d000b0b201b20034f0d012003201b1044000b410021030b0240201b20012802c404470d00200141a8046a41186a201b10c50420012802c004210d0b200d200341246c6a220641246a2006201b20036b41246c10c40a1a200620012903a00222023700042006410c6a200141a0026a41086a2903002207370000200641146a200141a0026a41106a290300220b3700002006411c6a200141a0026a41186a29030022233700002006201a3602002001201b41016a3602c80420014190016a41186a2205202337030020014190016a41106a2208200b37030020014190016a41086a220d20073703002001200237039001024020012802bc04220320012802b804470d00200141a8046a410c6a2003410110f50220012802bc0421030b20012802b40420034105746a2206200129039001370000200641186a2005290300370000200641106a2008290300370000200641086a200d2903003700004101211d2001200341016a3602bc040b201741206a2217201c460d050c000b0b201841ffffff3f71450d04201110390c040b200141013a009c08200141063a00980820014198086a10fc0120012802c40141ffffff3f71450d0520012802c00110390c050b4198dfc20041fa004194e0c2001065000b4198dfc20041fa0041a4e0c2001065000b0240201841ffffff3f71450d00201110390b201d410171450d0002400240024020012802bc04220d450d00200d410574210320012802b40422192106034020014198086a200610e30220012802980822050d02200641206a2106200341606a22030d000b0b41002802ccdd4a211c420021020c010b200141a0026a41206a221720014198086a41246a290200370300200141b8026a221b20014198086a411c6a290200370300200141b0026a221c20014198086a41146a290200370300200141a8026a221d20014198086a410c6a2902003703002001200129029c083703a002412c10382208450d0a20082005360200200820012903a0023702042008410c6a201d290300370200200841146a201c2903003702002008411c6a201b290300370200200841246a201729030037020020014281808080103702b406200120083602b006024020034120460d00200641206a211b20014198086a41047221172019200d4105746a220541606a211c410121190340201b21060240034020014198086a200610e30220012802980822030d012005200641206a2206470d000c030b0b200141a0026a41206a221d201741206a290200370300200141a0026a41186a2211201741186a290200370300200141a0026a41106a2218201741106a290200370300200141a0026a41086a2209201741086a290200370300200120172902003703a0020240201920012802b406470d00200141b0066a201910fd0220012802b00621080b200641206a211b20082019412c6c6a220d2003360200200d20012903a002370204200d410c6a2009290300370200200d41146a2018290300370200200d411c6a2011290300370200200d41246a201d2903003702002001201941016a22193602b806201c2006470d000b0b20012802b006211c20012902b40621020b20014198086a41206a200141a8046a41206a280200220636020020014198086a41186a200141a8046a41186a290300220737030020014198086a41106a200141a8046a41106a29030037030020014198086a41086a200141a8046a41086a290300370300200120012903a80437039808200641246c41046a2203417f4c0d080240024020030d00410121050c010b200310382205450d0a0b2007a7211d20014100360298062001200336029406200120053602900620014190066a200610d20102402006450d00201d200641246c6a211b2001280298062105201d2106034020062802002103024020012802940620056b41034b0d0020014190066a2005410410810120012802980621050b200128029006220820056a20033600002001200541046a220536029806412010382203450d0b200341186a220d2006411c6a290000370000200341106a2217200641146a290000370000200341086a22192006410c6a2900003700002003200641046a290000370000024020012802940620056b411f4b0d0020014190066a20054120108101200128029006210820012802980621050b200820056a22082003290000370000200841186a200d290000370000200841106a2017290000370000200841086a20192900003700002001200541206a22053602980620031039200641246a2206201b470d000b0b200141b0066a41086a20014190066a41086a28020036020020012001290390063703b006200141a0026a41cd87ca0010e80220012802a002220620012802a802200141b0066a10c704024020012802a402450d00200610390b024020012802b406450d0020012802b00610390b41cd87ca0020014198086a200141a4086a10c8040240200128029c08450d0020012802980810390b0240200141a8086a28020041ffffff3f71450d0020012802a40810390b200141b4086a2802002206450d01200641246c450d01201d10390c010b024020012802ac04450d0020012802a80410390b0240200141b8046a28020041ffffff3f71450d0020012802b40410390b4100211c024020012802c4042206450d00200641246c450d0020012802c00410390b0b024020012802fc0141ffffff3f71450d0020012802f80110390b0240201c0d000240200141d0016a410c6a28020041ffffff3f71450d0020012802d80110390b419ce3ca00410c10e7024188e3ca00410f10e7020c010b4100210502402012410a6e417f732002422088a722086a220320084b0d0020124101201241014b1b2206418094ebdc036e2006418094ebdc03704100476a22054101200541014b1b220520064b0d022006200341036c220320062003491b20056ead428094ebdc037e200620056ead8042ffffffff0f834280bbb0217e428094ebdc0380a721050b200841ffffffff03712008470d0620084102742206417f4c0d060240024020060d00410421030c010b200610382203450d080b4100210d200141003602a802200120033602a0022001200641027622063602a402024002400240200620084f0d00200141a0026a4100200810be0320012802a002210320012802a802210d0c010b2008450d010b2003200d4102746a210620082103034020062005360200200641046a21062003417f6a22030d000b200d20086a210d0b2001200d3602a802410410382206450d072006201a360000200141b0086a41002900d5874a370300200141a8086a41002900cd874a370300200141a0086a4284808080c0003703002001200636029c08200141033a00980820014198086a10fc01024020012802a40241ffffffff0371450d0020012802a00210390b02402008450d002008412c6c2103201c210603400240200641046a28020041ffffff3f71450d00200628020010390b2006412c6a2106200341546a22030d000b0b02402002a72206450d002006412c6c450d00201c10390b200141dc016a28020041ffffff3f71450d0020012802d80110390b024020012802b40141ffffff3f71450d0020012802b00110390b200141a8066a4200370300200141a0066a420037030020014190066a41086a22064200370300200142003703900620014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703900620014198086a41e9a4c200410a10f201200a41086a2003290000370000200a20012900980837000020014198086a20014190066a10c0042001280298082203410028029cde4a20031b221721060240200129029c08420020031b2202422088a74105742203450d00201721060340200641206a2106200341606a22030d000b0b200620176b22034104722205417f4c0d05200510382208450d06200e4100200f1b210d200141003602a802200120053602a402200120083602a002200141a0026a200341057510d2010240024020030d0020012802a802210320012802a002211a0c010b2003417f2003417f4a1b2205410120054101481b201720066b22062003200620034a1b4105766c410574210820012802a8022103201721060340024020012802a40220036b411f4b0d00200141a0026a2003412010810120012802a80221030b20012802a002221a20036a22052006290000370000200541086a200641086a290000370000200541106a200641106a290000370000200541186a200641186a2900003700002001200341206a22033602a802200641206a2106200841606a22080d000b0b2001200d3602a804411710382206450d06200641f3003a0000200641ecde003b0011200642e9e6d1fba6aedab1e100370009200642e5e6cdcbf6cddbafe800370001200620012802a8043600132001421737029c0820012006360298082006ad4280808080f002842003ad422086201aad8410000240200128029c08450d00200610390b024020012802a402450d0020012802a00210390b0240200242ffffff3f83500d00201710390b200141c8066a4200370300200141c0066a4200370300200141b0066a41086a22064200370300200142003703b00620014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703b00620014198086a41f3a4c200410a10f201200c41086a2003290000370000200c200129009808370000200141203602c4012001200141b0066a3602c001200141d0016a200141b0066a412010e4020240024020012802d00122170d00410021080c010b20012802d40121192001200141d0016a41086a2802003602fc01200120173602f801200141106a200141f8016a10ad010240024020012802100d002001280214221b20012802fc0122054181026e22062006201b4b1bad4281027e2202422088a70d082002a72206417f4c0d080240024020060d00410121080c010b200610382208450d0a0b20014100360298012001200836029001200120064181026e360294010240201b450d00200141a8046a410472211a20014198086a41206a210e200141a8046a410172210f200141a5066a21122001419e066a211120014190066a4107722118200141c1046a2109200141ba046a2113200141b3046a21164100211d4100211c02400340201c41016a211c4100210602400340200141003a009f0220052006460d01200120012802f801220341016a3602f801201a20066a20032d00003a00002001200641016a22033602a8042003210620034120470d000b201820162f00003b0000201120132f01003b0100201220092f00003b0000201841026a201641026a2d00003a0000201141026a201341026a2d00003a0000201241026a200941026a2d00003a00002001200520036b3602fc012001201a2f01003b0190062001201a41026a2d00003a00920620012800af04210620012801b604210320012800bd042105200120012902c4043703a806200120053600a1062001200336019a062001200636009306200141a8046a200141f8016a10c90420012d00a8044101460d02200e200f41e10110c30a1a20014198086a41186a20014190066a41186a29030037030020014198086a41106a20014190066a41106a29030037030020014198086a41086a20014190066a41086a290300370300200120012903900637039808200141a0026a20014198086a41810210c30a1a0240201d200128029401470d0020014190016a201d410110ca042001280290012108200128029801211d0b2008201d4181026c6a200141a0026a41810210c30a1a2001201d41016a221d36029801201c201b460d0320012802fc0121050c010b0b200141003602fc010b02402001280294012206450d0020064181026c450d00200810390b0c010b200129029401210220080d010b200142003702a402410021082001410028029cde4a3602a0022001410c3602ec012001200141c0016a3602e8012001200141a0026a3602a804200141ac086a41013602002001420137029c08200141e4b4c400360298082001200141e8016a3602a808200141a8046a41fc86ca0020014198086a103b1a20012802a00220012802a80210e70220012802a402450d0020012802a00210390b2019450d00201710390b2002420020081b2223422088a7220941ffffff3f712009470d0502400240200941057422030d00410121060c010b200310382206450d070b2010201041ff01714102477121102008410028029cde4a20081b2113410021052001410036028002200120063602f8012001200341057622033602fc01024002400240200320094f0d00200141f8016a4100200910f502200128028002210520012802f80121060c010b2009450d010b20094181026c2108200620054105746a210620132103034020062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a290000370000200541016a2105200641206a210620034181026a2103200841ff7d6a22080d000b0b2001200536028002200141b0066a41186a22054200370300200141b0066a41106a22084200370300200141b0066a41086a22034200370300200142003703b00620014198086a418cf9c800410710f201200320014198086a41086a220629000037030020012001290098083703b00620014198086a41e9a4c200410a10f201200c41086a221a2006290000370000200c200129009808370000200141b0066a200141f8016a10cb042010450d03200542003703002008420037030020034200370300200142003703b00620014198086a418cf9c800410710f2012003200629000037030020012001290098083703b00620014198086a4198b5c200411210f201201a2006290000370000200c20012900980837000020014120360294012001200141b0066a36029001200141a8046a200141b0066a412010e40220012802a8042217450d0320012802ac04211b2001200141b0046a280200360294062001201736029006200141086a20014190066a10ad01024020012802080d00200128020c221c41ffffffff0371201c470d00201c410274221d20012802940622124b0d00201d417f4c0d060240201d450d00201d10382219450d0820194100201d10c50a21112012201c410274221c4f0d03201110390c010b410421192012201c410274221c4f0d020b200142003702a402410021192001410028029cde4a3602a0022001410c3602ec01200120014190016a3602e8012001200141a0026a3602d001200141ac086a41013602002001420137029c08200141e4b4c400360298082001200141e8016a3602a808200141d0016a41fc86ca0020014198086a103b1a20012802a00220012802a80210e702024020012802a402450d0020012802a00210390b0c020b41e0a8c800411941f8c7ca001035000b2019200128029006201c10c30a1a201d410276ad21020b0240201b450d00201710390b2019450d00200141b0066a412010fd01200242ffffffff0383500d00201910390b200542003703002008420037030020034200370300200142003703b00620014198086a418cf9c800410710f2012003200629000037030020012001290098083703b00620014198086a4184b4c200410c10f201201a2006290000370000200c2001290098083700002001200d41016a220e36029808200141b0066a412020014198086a410410a30220014198086a41186a2205420037030020014198086a41106a22034200370300200642003703002001420037039808200141a8046a418cf9c800410710f2012006200141a8046a41086a2208290000370300200120012900a80437039808200141a8046a41d7afc000410b10f20120052008290000370300200320012900a804370300200141a0026a20014198086a412010a202200d41026a211d0240024020012802a0024101470d0020012902a40221020c010b201dad21020b200141b0086a4200370300200141a8086a420037030020014198086a41086a220642003703002001420037039808200141a8046a418cf9c800410710f2012006200141a8046a41086a2205290000370300200120012900a80437039808200141a8046a41d7afc000410b10f201200341086a2005290000370000200320012900a804370000410810382206450d02200620023e00002006200d41036a36000420014198086a41202006410810a3022006103902400240024002400240200d417d4b0d00200141a8066a4200370300200141a0066a420037030020014190066a41086a22064200370300200142003703900620014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703900620014198086a41e9a4c200410a10f201200a41086a2003290000370000200a20012900980837000020014198086a20014190066a10c0040240024020012802980822080d002001420037029406410021172001410028029cde4a2208360290060c010b200129029c082102200120083602900620012002370294062002422088a721170b42002124200141b8026a4200370300200141b0026a4200370300200141a0026a41086a22064200370300200142003703a002200141b0066a41b997c200411110f2012006200141b0066a41086a290000370300200120012900b0063703a002200141a8046a41ca97c200411210f201200441086a200141a8046a41086a290000370000200420012900a80437000020014198086a200141a0026a10c00402400240200128029808221c0d00410028029cde4a211c0c010b200141a0026a412010fd01200129029c0821240b02402024422088a72206450d00201c20064105746a211b201c211903402019221a41206a21190240024020170d00410021170c010b201741057441606a41057641016a210d410021052008210320082106024003402006201a412010c60a450d01200341206a2103200641206a2106200d200541016a2205470d000c020b0b20082017417f6a22174105746a22062900002102200629000821072006290010210b200341186a200641186a2900003700002003200b37001020032007370008200320023700000b2019201b470d000b20012017360298060b0240202442ffffff3f83500d00201c10390b42002102200141b8026a4200370300200141b0026a4200370300200141a0026a41086a22064200370300200142003703a002200141b0066a41b997c200411110f2012006200141b0066a41086a290000370300200120012900b0063703a002200141a8046a41dc97c200410f10f201200441086a200141a8046a41086a290000370000200420012900a80437000020014198086a200141a0026a10c0040240024020012802980822120d00410028029cde4a21120c010b200141a0026a412010fd01200129029c0821020b02402002422088a72206450d00201220064105746a211c2012211a034020014190016a41186a201a41186a220629000037030020014190016a41106a201a41106a220329000037030020014190016a41086a201a41086a22052900003703002001201a2900003703900120014198086a41186a220d200629000037030020014198086a41106a2219200329000037030020014198086a41086a221b20052900003703002001201a2900003703980820174105742105201a41206a211a4100210602400240034020052006460d01200820066a2103200641206a2106200320014198086a412010c60a0d000c020b0b200141a0026a41186a2203200d290300370300200141a0026a41106a22052019290300370300200141a0026a41086a220d201b29030037030020012001290398083703a00202402017200128029406470d0020172017470d0020014190066a2017410110f502200128029006210820012802980621170b200820174105746a220620012903a002370000200641186a2003290300370000200641106a2005290300370000200641086a200d2903003700002001201741016a2217360298060b201a201c470d000b0b0240200242ffffff3f83500d00201210390b2008450d00024002402001290294062202422088a741057422030d00200821060c010b200821060340200641206a2106200341606a22030d000b0b200620086b2203410575220d41ffffff3f71200d470d062003417f4c0d060240024020030d00410121170c010b200310382217450d080b4100210520014198066a4100360200200120173602900620012003410576221a360294060240201a200d4f0d0020014190066a4100200d10f502200128029806210520012802900621170b2002a7211902402003450d002003417f2003417f4a1b221a4101201a4101481b200820066b22062003200620034a1b4105766c410574211a201720054105746a210620082103034020062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a290000370000200541016a2105200641206a2106200341206a2103201a41606a221a0d000b0b20012005360298062001200d3602a802200120193602a402200120083602a00220014198086a200141a0026a10cc0402402001280298084101470d0020012802a0082106200128029c08210341eaf9c800413710e7022003200610e7020c050b20014198086a41286a2802002105200141c4086a2802002117200141cc086a2802002118200141d0086a2802002104200141d4086a2802002119200141a0026a200141d8086a41c80010c30a1a200141b0066a201d10cd0420012802b806211a20012802b006211b410410382206450d07200142043702ac04200120063602a804412010382206450d072006200141a0026a41286a2203290000370000200641186a221c200341186a290000370000200641106a221d200341106a290000370000200641086a2212200341086a290000370000200141a8046a4100412010810120012802a804220820012802b00422116a22032006290000370000200341086a2012290000370000200341106a201d290000370000200341186a201c2900003700002001201141206a22033602b00420012802ac04211c200610390240201c20036b41034b0d00200141a8046a2003410410810120012802a804210820012802b00421030b200820036a200d3600002001200341046a22063602b004201b201a20012802a8042203200610a302024020012802ac04450d00200310390b024020012802b406450d0020012802b00610390b2005450d02024020180d00200541016a211b0c020b201741046a21062017200541016a221b6a21082017280200417f734180818284787121052017210303400240024020050d000340200620084f0d05200341c07e6a210320062802002105200641046a221a21062005418081828478712205418081828478460d000b2005418081828478732205417f6a200571210d201a21060c010b2005417f6a200571210d0b200568211a200d210520034100201a4103766b41306c6a221a41746a280200450d00201a41706a2802001039200d21050c000b0b2001410036029006200141a0026a4100201d417f6a22062006201d4b1b10cd0420014198086a20012802a002220620012802a80210ce042001280298084101460d0220012802a402450d03200610390c030b2017201bad42307ea76b10390b2019450d01200410390c010b2001419c026a41026a200141a9086a2d00003a000020014198026a41026a200141b0086a2d00003a000020014194026a41026a200141b7086a2d00003a0000200120012f00a7083b019c02200120012f01ae083b019802200120012f00b5083b0194022001200141a0086a2f01003b0190012001200141a2086a2d00003a009201200141a3086a2800002103200128029c08210520012801aa08210820012800b108211a200141bc086a280200210d200141b8086a2802002117024020012802a402450d00200610390b200141a0026a201d10cd0420012802a802211920012802a002211b410410382206450d032001420437029c082001200636029808412010382206450d0320062005360000200620012f0190013b000420062003360007200620012f019c023b000b2006200836000e200620012f0198023b00122006201a360015200620012f0194023b0019200641066a20012d0092013a00002006410d6a2001419c026a41026a2d00003a0000200641146a20014198026a41026a2d00003a00002006411b6a20014194026a41026a2d00003a00002006201736001c20014198086a41004120108101200128029808220520012802a00822086a22032006290000370000200341086a200641086a290000370000200341106a200641106a290000370000200341186a200641186a2900003700002001200841206a22033602a008200128029c082108200610390240200820036b41034b0d0020014198086a20034104108101200128029808210520012802a00821030b200520036a200d3600002001200341046a22063602a008201b20192001280298082203200610a3020240200128029c08450d00200310390b20012802a402450d0020012802a00210390b20014190066a41086a21060240024020012802900622030d00200141a8066a4200370300200141a0066a420037030020064200370300200142003703900620014198086a418cf9c800410710f201200620014198086a41086a220529000037030020012001290098083703900620014198086a41e9a4c200410a10f201200a41086a2005290000370000200a20012900980837000020014198086a20014190066a10c004200129029c08420020012802980822061b21022006410028029cde4a20061b210a0c010b20063502004220862001350294068421022003210a0b2002422088a7221741057422084105752205ad4281027e2207422088a70d012007a72206417f4c0d010240024020060d004101211a0c010b20061038221a450d030b200a20086a210d41002108200141003602d8012001201a3602d001200120064181026e22063602d4010240200620054f0d00200141d0016a4100200510ca0420012802d80121080b2003410047211c0240200d200a460d00201320094181026c6a21182017410574210520012802d00120084181026c6a211a20014198086a41206a2112200141b0066a41c0016a211e200141b0066a41a0016a2115200141b0066a4180016a2114200141b0066a41e0006a210f200141b0066a41c0006a2116200141b0066a41206a2104200141a0026a41017221112013210d200a21060340200d210320014190066a41186a2217200641186a29000037030020014190066a41106a2219200641106a29000037030020014190066a41086a221b200641086a290000370300200120062900003703900620014190016a20014190066a10b604200141a0026a200128029001221d20012802980110cf04024020012d00a002220d4101470d00200141a8046a201141e10110c30a1a0b0240200128029401450d00201d10390b02400240200d4101460d00200141b0066a410041e10110c50a1a0c010b200141b0066a200141a8046a41e10110c30a1a0b02400240201c41ff0171450d002003210d0c010b4100211c024020032018470d002003210d0c010b20034181026a210d0240200341206a200141b0066a412010c60a0d00200341c0006a2004412010c60a0d00200341e0006a2016412010c60a0d0020034180016a200f412010c60a0d00200341a0016a2014412010c60a0d00200341c0016a2015412010c60a0d00200341e0016a201e412110c60a450d010b4101211c0b200641206a210620014198086a41186a201729030037030020014198086a41106a201929030037030020014198086a41086a201b2903003703002001200129039006370398082012200141b0066a41e10110c30a1a200841016a2108201a20014198086a41810210c30a4181026a211a200541606a22050d000b0b0240200242ffffff3f83500d00200a10390b2008ad4281027e2202422088a70d012002a72211417f4c0d0120012802d401210420012802d001210a0240024020110d0041012118410021160c010b201110382218450d0320114181026e21162011418102490d00200141f8096a2103200141d8096a211a200141b8096a210d20014198096a2117200141f8086a2119200141d8086a211b20014198086a41206a211d41002105200a210620162112034020112005460d012012450d05201d2006290020370000201b200629004037000020014198086a41186a200641186a29000037030020014198086a41106a200641106a29000037030020014198086a41086a200641086a290000370300201d41086a200641286a290000370000201d41106a200641306a290000370000201d41186a200641386a290000370000201b41086a200641c8006a290000370000201b41106a200641d0006a290000370000201b41186a200641d8006a2900003700002001200629000037039808201941186a200641f8006a290000370000201941106a200641f0006a290000370000201941086a200641e8006a290000370000201920062900603700002017200629008001370000201741086a20064188016a290000370000201741106a20064190016a290000370000201741186a20064198016a290000370000200d20062900a001370000200d41086a200641a8016a290000370000200d41106a200641b0016a290000370000200d41186a200641b8016a290000370000201a41186a200641d8016a290000370000201a41106a200641d0016a290000370000201a41086a200641c8016a290000370000201a20062900c001370000200341206a20064180026a2d00003a0000200341186a200641f8016a290000370000200341106a200641f0016a290000370000200341086a200641e8016a290000370000200320062900e001370000201820056a20014198086a41810210c30a1a20054181026a210520064181026a21062012417f6a22120d000b0b200141c8066a4200370300200141c0066a4200370300200141b0066a41086a22064200370300200142003703b00620014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703b00620014198086a41f3a4c200410a10f201200c41086a2003290000370000200c20012900980837000020084181026c41046a2206417f4c0d010240024020060d00410121030c010b200610382203450d030b200141003602a0082001200636029c08200120033602980820014198086a200810d20102402008450d00201820084181026c6a211a2018210603400240200128029c0820012802a00822056b411f4b0d0020014198086a2005412010810120012802a00821050b20012802980820056a22032006290000370000200341086a200641086a290000370000200341106a200641106a290000370000200341186a200641186a2900003700002001200541206a3602a008200641206a20014198086a10d00420064181026a2206201a470d000b0b200141b0066a4120200128029808220620012802a00810a3020240200128029c08450d00200610390b02402011418102490d0020164181026c450d00201810390b200141c8066a4200370300200141c0066a4200370300200141b0066a41086a22064200370300200142003703b00620014198086a418cf9c800410710f201200620014198086a41086a220329000037030020012001290098083703b00620014198086a41a8b4c200410d10f201200c41086a2003290000370000200c2001290098083700002001201c3a009f02200141b0066a41202001419f026a410110a3022001200e36029c08200141043a00980820014198086a10fc01201020132009200a200810d10402402004450d0020044181026c450d00200a10390b024020012802fc0141ffffff3f71450d0020012802f80110390b02402023a72206450d0020064181026c450d00201310390b20014198086a10fb0320012903a00821020b200141a0026a10d2044100210320012802a002211a41002105024020012802a802220d450d00200d41c4006c2108200d410274417c6a41027641016a211741002105201a210602400340024020062d00004101460d00200641046a28020020004f0d020b200641c4006a2106200541016a2105200841bc7f6a22080d000b201721050b200d2005490d040b200141003602a802200d20056b2119201a200541c4006c220d6a210602400340200d2003460d01201a20036a2108200341c4006a2217210320082d00004102470d000b201a20176a21060b201a200541c4006c6a21080240034020082006460d0120062d00002103200641c4006a210620034102470d000b0b0240024020190d00410021190c010b02402005450d00201a201a200541c4006c6a201941c4006c10c40a1a0b200120193602a8020b20012802a4022105200141a8066a22034200370300200141a0066a2206420037030020014190066a41086a22084200370300200142003703900620014198086a41edfec300410a10f201200820014198086a41086a220d29000037030020012001290098083703900620014198086a41f7a5c800410610f2012003200d2900003703002006200129009808370300201941c4006c41046a2203417f4c0d000240024020030d00410121080c010b200310382208450d020b200141003602a0082001200336029c08200120083602980820014198086a201910d201201a201920014198086a10ce0120014190066a412020012802980820012802a00810a3020240200128029c08450d0020012802980810390b02402005450d00200541c4006c450d00201a10390b20014190066a41186a420037030020014190066a41106a420037030020014190066a41086a22054200370300200142003703900620014198086a41edfec300410a10f201200520014198086a41086a220329000037030020012001290098083703900620014198086a41d8a6c800410c10f201200641086a20032900003700002006200129009808370000200141003a009f0220014190066a41202001419f026a410110a302200141a0026a10be0420014198086a41186a200141a0026a41186a29030037030020014198086a41106a200141a0026a41106a2903003703002003200141a0026a41086a290300370300200120012903a0023703980820014198086a10d30410c104200141a0136a2400427f200242a8e397037c220720072002541b0f0b1034000b1030000b2016201641c4cfca00103c000b2005200d418898c1001055000bf50804047f017e127f027e230041f0006b220224002002200110ad0102400240024002402002280200450d00200041003602000c010b200228020422032001280204220441386e2205200520034b1bad42387e2206422088a70d012006a72205417f4c0d010240024020050d00410821070c010b200510382207450d030b4100210820024100360210200220073602082002200541386e36020c024002402003450d00200241c8006a4104722109200241c8006a41196a210a200241c8006a41126a210b200241c8006a410b6a210c4100210d03402004450d0220012004417f6a220e36020420012001280200220f41016a3602004200210602400240200f2d00000e020100040b2004417f6a211041002105417e210e034020102005460d0420012004200e6a3602042001200f20056a221141026a360200200920056a201141016a2d00003a00002002200541016a2211360248200e417f6a210e2011210520114120470d000b200241c0006a41026a2212200c41026a2d00003a00002002413c6a41026a2213200b41026a2d00003a0000200220092f01003b01442002200c2f00003b01402002200b2f00003b013c2002200941026a2d00003a00462002280268211420022802642115200228005d211620022801562110200228004f2117200241386a41026a2218200a41026a2d00003a00002002200a2f00003b01382011417f7320046a4110490d032001200420116b416f6a220e3602042001200f20116a220541116a3602002002412c6a41026a20122d00003a0000200241286a41026a20132d00003a0000200241246a41026a20182d00003a0000200220022f01443b0130200220022d00463a0032200220022f01403b012c200220022f013c3b0128200220022f01383b0124200541096a2900002119200541016a290000211a420121060b200d41016a210d2002411c6a41026a22112002412c6a41026a2d00003a0000200241186a41026a2204200241286a41026a2d00003a0000200241146a41026a220f200241246a41026a2d00003a0000200220022d00323a0022200220022f01303b0120200220022f012c3b011c200220022f01283b0118200220022f01243b011402402008200228020c470d00200241086a2008410110f60120022802082107200228021021080b2007200841386c6a220520063703002005410a6a20022d00223a0000200520022f01203b0108200541116a20112d00003a00002005410f6a20022f011c3b0000200541186a20042d00003a0000200541166a20022f01183b00002005410b6a2017360000200541126a2010360000200541196a20163600002005411f6a200f2d00003a00002005411d6a20022f01143b0000200541246a2014360000200541206a2015360000200541306a2019370300200541286a201a3703002002200228021041016a2208360210200e2104200d2003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b20004100360200200228020c2205450d00200541386c450d00200228020810390b200241f0006a24000f0b1034000b1030000b9f6905087f017e027f017e027f230041b0056b22032400024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e0400010203000b20022802282104200341206a200141046a41f00010c30a1a200341c0046a200141f8006a41c80010c30a1a200341a8026a22054200370300200341a0026a2201420037030020034190026a41086a220642003703002003420037039002200341c8016a41b080c400411310f2012006200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a419aa6c800410810f20120052007290000370300200120032900c801370300024020034190026a10c002220541ff01714102460d0020054101710d0b0b20042004280200417f6a220536020020022d00000d0b20022d00012102024020050d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22052005280200417f6a220536020020050d00200410390b200241ff01714101470d0c20034190026a41186a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41b080c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f201200141086a2005290000370000200120032900c801370000200341086a20034190026a412010f50102402003280208450d00200328020c41e012490d000240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410321024102210641eccbc0002107410f2108200341286a2802002201450d0e200141246c450d0e200328022410390c0e0b200341c8026a200341206a10c102200341a8016a41186a200341c8026a41186a290200370300200341a8016a41106a200341c8026a41106a290200370300200341a8016a41086a200341c8026a41086a290200370300200320032902c8023703a801024041002802a8fe4a4105490d00200341123602d4032003200341206a3602d00341002802a4fe4a210241002802a0fe4a210541002802acfe4a2106200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4201370300200341d0026a4117360200200341e4026a200341d0036a360200200341ccd3c0003602d40220034281808080801237028403200341003602f802200341c4d4c0003602cc02200341053602c802200541f4ddca00200641024622061b200341c8026a200241b0a7c00020061b2802101103000b200341a8026a22064200370300200341a0026a2204420037030020034190026a41086a220242003703002003420037039002200341c8016a41b080c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41a8a7c800410d10f201200141086a2005290000370000200120032900c801370000200341d0036a20034190026a412010ab020240024020032d00d0034101460d0020064200370300200442003703002002420037030020034200370390020c010b2006200341e9036a2900003703002004200341e1036a2900003703002002200341d9036a290000370300200320032900d103370390020b200341d0036a41186a20034190026a41186a290300370300200341d0036a41106a20034190026a41106a290300370300200341d0036a41086a20034190026a41086a29030037030020032003290390023703d003200341e8016a200341d0036a10c302200341c8026a20032802e801220220032802f00110c402024020032802ec01450d00200210390b0240024020032802cc022209450d00200341d4026a280200210a20032802d002210420032802c8022003280220490d01410321064184ccc0002107410921080c0a0b024041002802a8fe4a450d0020034112360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e0036a420237030020034184046a41d1c8c000ad4280808080a00984370200200341f8036a41b4c8c000ad4280808080d00384370300200341f0036a4201370300200341d8036a4117360200200341ec036a20034190026a360200200341d4d3c0003602dc0320034281808080d01237028c042003410036028004200341c4d4c0003602d403200341013602d003200141f4ddca00200541024622051b200341d0036a200241b0a7c00020051b2802101103000b4106210641e4ccc0002107410e21080c0a0b4200210b200341a8026a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41b080c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41e4a6c800411310f201200141086a2005290000370000200120032900c801370000200341c8026a20034190026a10c5020240024020032802d00222020d004100210541002802fcad492102410021060c010b200341c8026a41106a280200210620032903c802210b20032802d40221050b200341c8016a41186a2207200341a8016a41186a290300370300200341c8016a41106a2208200341a8016a41106a290300370300200341c8016a41086a220c200341a8016a41086a290300370300200320032903a8013703c8012003280220210d200320063602c002200320053602bc02200320023602b80220034190026a200341b8026a10c6020240200329039002500d00200341c8026a410e6a20034190026a41086a290300370100200341c8026a41166a20034190026a41106a290300370100200341c8026a411e6a20034190026a41186a290300370100200341c8026a41266a20034190026a41206a290300220e370100200341d0036a41266a2202200e37010020032003290390023701ce02200341d0036a41086a200341c8026a41086a2205290100370300200341d0036a41106a200341c8026a41106a2206290100370300200341d0036a41186a200341c8026a41186a220f290100370300200341d0036a41206a200341c8026a41206a290100370300200320032901c8023703d003200341e8016a41206a22102002290100370300200341e8016a41186a200341d0036a411e6a290100370300200341e8016a41106a200341d0036a41166a290100370300200341e8016a41086a200341d0036a410e6a290100370300200320032901d6033703e801200f2007290300370300200620082903003703002005200c2903003703002003200d3602e802200320032903c8013703c8020240200341c8026a200b200341e8016a200341c0046a10c70241ff017122024106460d00200320023a009002024041002802a8fe4a450d00200341dc036a4113360200200341143602d403200320034190026a3602d8032003200341c8016a3602d00341002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341d8026a4202370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4202370300200341d0026a4117360200200341e4026a200341d0036a360200200341e4d3c0003602d40220034281808080b03437028403200341003602f802200341c4d4c0003602cc02200341013602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200341f8016a10c802024020034188026a28020041ffffff3f71450d0020032802840210390b4114210841b4cbc0002107410021060c0a0b200341f8016a10c8020240201028020041ffffff3f71450d0020032802840210390b2003200b3703b80202402003412c6a2802002205450d0020032802242102200541246c21050340200341c8026a2002410141a4c1c70010c902024020032802c80222064105460d0020032802d00221070240024020060e020001020b2007450d01200741286c450d0120032802cc0210390c010b20070d0a0b200241246a21022005415c6a22050d000b200328022c21050b02402005450d0020032802242102200541246c210502400340200341c8026a2002410141a4c1c70010c902024020032802c80222064105460d0020032902d402220ea7210720032802d00221080240024020060e020100020b2007450d01200741286c450d01200810390c010b20032802cc0222060d020b200241246a21022005415c6a22050d000c020b0b0240200e428080808010540d002008450d0a200841286c450d0a200610390c0a0b200341e8016a41106a2007360200200341e8016a410c6a2008360200200320063602f0012003200b42017c220b3703e801200341a8026a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41b080c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41e4a6c800411310f201200141086a2005290000370000200120032900c80137000020034190026a200341e8016a10ca02024041002802a8fe4a4103490d00200341e4036a4115360200200341d0036a410c6a4116360200200341163602d4032003200b370390022003200341e8016a3602e003200320034190026a3602d8032003200341b8026a3602d00341002802a4fe4a210241002802a0fe4a210541002802acfe4a2106200341c8026a41106a4203370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4203370300200341c8026a41086a4117360200200341e4026a200341d0036a360200200341f4d3c0003602d40220034281808080b03037028403200341003602f802200341c4d4c0003602cc02200341033602c802200541f4ddca00200641024622061b200341c8026a200241b0a7c00020061b2802101103000b20032802f4012202450d00200241286c450d0020032802f00110390b20034190026a41186a2206420037030020034190026a41106a2207420037030020034190026a41086a220242003703002003420037039002200341c8016a41b080c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f201200141086a22082005290000370000200120032900c801370000200320034190026a412010f5012003280200210c2003280204210d2006420037030020074200370300200242003703002003420037039002200341c8016a41b080c400411310f20120022005290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f20120082005290000370000200120032900c8013700002003200d41016a4101200c1b3602c80220034190026a4120200341c8026a410410a302200341c8026a200341206a41f00010c30a1a200341d0036a41186a200341a8016a41186a290300370300200341d0036a41106a200341a8016a41106a290300370300200341d0036a41086a200341a8016a41086a290300370300200320032903a8013703d003200341c8026a200341d0036a10cb02024041002802a8fe4a4103490d0020034114360294022003200341a8016a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4202370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a3602002003418cd4c0003602d40220034281808080901537028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b0240200a450d00200a41246c21012009210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b02402004450d00200441246c450d00200910390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b2003200328001936021020032003411c6a280000360013200041186a41003a000020004200370308200020032802103600192000411c6a2003280013360000200042003703000c0f0b4113210841d0cbc0002107410121060c080b200341206a200141086a41880110c30a1a200241016a21012002280228210520022d000022020d02200341e9026a200141206a2d00003a0000200341e1026a200141186a290000370000200341d9026a200141106a290000370000200341d1026a200141086a29000037000020052005280200417f6a2202360200200320012900003700c902024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b02400240024020032d00c9020e020100060b200341a8026a22024200370300200341a0026a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41b080c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c801370300200341c0046a20034190026a412010cc0220032d00c0044101470d0541022105200341c8026a410272200341c0046a410172412010c60a0d0620034190026a21040c010b20034190026a21040b20034190026a41186a2207420037030020034190026a41106a2202420037030020034190026a41086a220142003703002003420037039002200341c8016a41b080c400411310f2012001200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41a8a7c800410d10f20120072006290000370300200220032900c801370300410321052004412010a8020d04200341c0046a41286a200341d0006a290300370300200341c0046a41206a200341206a41286a290300370300200341c0046a41186a2205200341206a41206a290300370300200341c0046a41386a200341206a41c0006a290300370300200341c0046a41c0006a200341206a41c8006a290300370300200341c0046a41c8006a200341f0006a2903003703002003200341206a41186a2903003703d0042003200341206a41386a2903003703f00420032802282108200341c0046a41d8006a200341206a41e0006a290300370300200341c0046a41e0006a200341206a41e8006a290300370300200341c0046a41e8006a200341206a41f0006a2903003703002003200341206a41d8006a29030037039005200341c0046a410472200341206a410c6a10cd02200320083602c004200341c8026a41f8006a200341206a41f8006a10ce0220032d00a40121082003290320210b200341d0036a200341c8026a41086a200341c0046a41f00010c30a220941f00010c30a1a200341e8016a200341d0036a10c1022005200341e8016a41186a220a290300370300200341c0046a41106a220c200341e8016a41106a220d290300370300200341c0046a41086a200341e8016a41086a220f290300370300200320032903e8013703c0042007420037030020024200370300200142003703002003420037039002200341c8016a41b080c400411310f20120012006290000370300200320032900c80137039002200341c8016a4195a8c800410b10f201200241086a22052006290000370000200220032900c80137000020044120200341c0046a10cf022007420037030020024200370300200142003703002003420037039002200341c8016a41b080c400411310f20120012006290000370300200320032900c80137039002200341c8016a4185a7c800411510f20120052006290000370000200220032900c801370000200341003602c00420044120200341c0046a410410a302200341c0046a200941f00010c30a1a2007200a2903003703002002200d2903003703002001200f290300370300200320032903e80137039002200341c0046a20034190026a10cb02200c200341c8036a2802003602002003200b3703c004200320032903c0033703c8042007420037030020024200370300200142003703002003420037039002200341c8016a41b080c400411310f20120012006290000370300200320032900c80137039002200341c8016a41e4a6c800411310f20120052006290000370000200220032900c8013700002004200341c0046a10d0020240200341c0046a410c6a2802002201450d00200141286c450d0020032802c80410390b200341a8026a420037030020034190026a41106a420037030020034190026a41086a220142003703002003420037039002200341c8016a41b080c400411310f2012001200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a419aa6c800410810f201200241086a2005290000370000200220032900c8013700002003200841ff01714100473a00c80120044120200341c8016a410110a302024041002802a8fe4a4103490d0020034117360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a3602002003419cd4c0003602d40220034281808080a01837028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b0240200341346a2802002201450d00200328022c2102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200341306a2802002202450d00200241246c450d00200328022c10390b02402003419c016a2802002202450d00200241286c450d0020032802980110390b200320032800a8013602b8022003200341ab016a2800003600bb02200041186a41003a000020004200370308200020032802b8023600192000411c6a20032800bb02360000200042003703000c0d0b200241016a210520022802282106024002400240024020022d000022020d0020012d00012104200341e9026a200541206a2d00003a0000200341e1026a200541186a290000370000200341d9026a200541106a290000370000200341d1026a200541086a29000037000020062006280200417f6a2202360200200320052900003700c902024020020d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b0240024020032d00c9020e020100030b200341a8026a22024200370300200341a0026a2205420037030020034190026a41086a220642003703002003420037039002200341c8016a41b080c400411310f2012006200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022007290000370300200520032900c801370300200341206a20034190026a412010cc0220032d00204101470d02200341c8026a410272200341206a410172412010c60a0d020b200441ff01714101470d02200341206a41186a200141026a220241186a290000370300200341206a41106a200241106a290000370300200341206a41086a200241086a2900003703002003200229000037032020034190026a41186a2202420037030020034190026a41106a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41b080c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c80137030020034190026a4120200341206a10d20241002802a8fe4a4103490d0320034118360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a360200200341a4d4c0003602d40220034281808080c01a37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000c030b200341d5026a200541086a290000370000200341dd026a200541106a290000370000200341e5026a200541186a290000370000200341ed026a200541206a2d00003a000020062006280200417f6a2201360200200320023a00cc02200320052900003700cd0220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b200320032800e8013602a801200320032900c0043703d0032003200341eb016a2800003600ab012003200341c7046a2900003700d703200041186a41003a000020004200370308200020032802a8013600192000411c6a20032800ab01360000200041206a41023a0000200020032903d003370021200041286a20032900d703370000200042013703000c0e0b200341a8026a2202420037030020034190026a41106a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41b080c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c80137030020034190026a412010fd0141002802a8fe4a4103490d0041002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4200370300200341c8026a41086a4117360200200341acd4c0003602d40220034281808080801b37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200320032800e8013602a8012003200341eb016a2800003600ab01200041186a41003a000020004200370308200020032802a8013600192000411c6a20032800ab01360000200042003703000c0c0b200241016a2105200228022821060240024002400240024020022d000022020d0020012d00012101200341e9026a200541206a2d00003a0000200341e1026a200541186a290000370000200341d9026a200541106a290000370000200341d1026a200541086a29000037000020062006280200417f6a2202360200200320052900003700c902024020020d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b02400240024020032d00c9020e020100040b200341a8026a22024200370300200341a0026a2205420037030020034190026a41086a220642003703002003420037039002200341c8016a41b080c400411310f2012006200341c8016a41086a2204290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022004290000370300200520032900c801370300200341206a20034190026a412010cc0220032d00204101470d03200341c8026a410272200341206a410172412010c60a0d0320034190026a21020c010b20034190026a21020b200341a8026a22054200370300200341a0026a2206420037030020034190026a41086a220442003703002003420037039002200341c8016a41b080c400411310f2012004200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a419aa6c800410810f20120052007290000370300200620032900c801370300200320013a00c80120024120200341c8016a410110a30241002802a8fe4a2102200141ff0171450d0220024103490d0341002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4200370300200341d0026a4117360200200341b4d4c0003602d40220034281808080801d37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000c030b200341d5026a200541086a290000370000200341dd026a200541106a290000370000200341e5026a200541186a290000370000200341ed026a200541206a2d00003a000020062006280200417f6a2201360200200320023a00cc02200320052900003700cd0220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b200320032800d003360220200320032900c0043703c8022003200341d3036a2800003600232003200341c7046a2900003700cf02200041186a41003a000020004200370308200020032802203600192000411c6a2003280023360000200041206a41023a0000200020032903c802370021200041286a20032900cf023700004201210b0c020b20024102490d0041002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4200370300200341d0026a4117360200200341bcd4c0003602d40220034281808080a01d37028403200341003602f802200341c4d4c0003602cc02200341023602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200320032800d0033602202003200341d3036a280000360023200041186a41003a00004200210b20004200370308200020032802203600192000411c6a20032800233600000b2000200b3703000c0b0b200341d5026a200141086a290000370000200341dd026a200141106a290000370000200341e5026a200141186a290000370000200341ed026a200141206a2d00003a000020052005280200417f6a2206360200200320023a00cc02200320012900003700cd0220060d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b410221050b0240200341346a2802002201450d00200341206a410c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200341306a2802002202450d00200241246c450d00200328022c10390b02402003419c016a2802002202450d00200241286c450d0020032802980110390b200320032800a8013602b8022003200341ab016a2800003600bb02200041186a41003a000020004200370308200020032802b8023600192000411c6a20032800bb02360000200041286a4112360200200041246a41f0fcc600360200200041a80e3b0021200041206a20053a0000200042013703000c080b20032802d4022202450d00200241286c450d00200710390b4105210641b0ccc0002107411a21080b0240200a450d00200a41246c21012009210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b2004450d00200441246c450d00200910390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21040340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022004470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b41032102200341286a2802002201450d03200141246c450d03200328022410390c030b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410821060240200341206a41086a2802002202450d00200241246c450d00200328022410390b20042004280200417f6a2201360200410321024184cdc00021074106210820010d022004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22012001280200417f6a220136020020010d02200410390c020b20050d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22022002280200417f6a220236020020020d00200410390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410221020240200341286a2802002201450d00200141246c450d00200328022410390c010b0b2003200328001936021020032003411c6a280000360013200041186a41003a000020004200370308200020032802103600192000411c6a2003280013360000200041286a2008360200200041246a2007360200200020063a0022200041283a0021200041206a20023a0000200042013703000b200341b0056a24000b850201037f230041d0006b220124002001412036020420012000360200200141086a2000412010e40202400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0041002100024020022d00000e020200010b410121000c010b2001420037021c2001410028029cde4a3602182001410c36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c200141e4b4c4003602382001200141286a360248200141346a41fc86ca00200141386a103b1a2001280218200128022010e7020240200128021c450d00200128021810390b410221000b2003450d00200210390b200141d0006a240020000be20301047f230041106b220224002002410036020820024201370300200141106a200210ff0202400240024002402001280200220341c000490d00200341808001490d012003418080808004490d020240200228020420022802082204470d00200220044101108101200228020821040b2002280200220520046a41033a00002002200441016a22043602080240200228020420046b41034b0d0020022004410410810120022802002105200228020821040b200520046a20033600002002200441046a3602080c030b200341027421040240200228020420022802082203470d00200220034101108101200228020821030b200228020020036a20043a00002002200341016a3602080c020b2003410274410172210402402002280204200228020822036b41014b0d00200220034102108101200228020821030b200228020020036a20043b00002002200341026a3602080c010b2003410274410272210402402002280204200228020822036b41034b0d00200220034104108101200228020821030b200228020020036a20043600002002200341046a3602080b200141306a200210ff02200141d0006a200210ff02200141046a2002109b062000200228020022012002280208109c0102402002280204450d00200110390b200241106a24000b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000bd20201057f230041206b22022400200241b080c400411310f201200241106a41fed7c000410f10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000bae0201017f230041b0016b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041003602040c010b200328020c21022003200341106a28020036028c012003200136028801200341186a20034188016a10b00302400240200328021c450d002000200341186a41f00010c30a1a0c010b20034200370294012003410028029cde4a360290012003410c3602a401200320033602a001200320034190016a3602ac012003412c6a41013602002003420137021c200341e4b4c4003602182003200341a0016a360228200341ac016a41fc86ca00200341186a103b1a20032802900120032802980110e7020240200328029401450d0020032802900110390b200041003602040b2002450d00200110390b200341b0016a24000ba10302067f017e230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003602080c010b200228021421032002200241186a280200360224200220013602202002200241206a10ad010240024020022802000d00200241c8006a200241206a200228020410b40120022802482204450d00200228024c21050240200228022441084f0d002005450d01200541286c450d01200410390c010b200241c8006a41086a280200210620022002280220220741086a3602202004450d00200729000021082000200536020c2000200436020820002008370300200041106a20063602000c010b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602080b2003450d00200110390b200241e0006a24000ba02807037f017e037f027e137f027e057f230041a0016b2202240020012802042103200128020021042001280208210142002105200242003702040240024002400240024002402001450d002004200141286c6a210620024180016a41086a210720042108420021050340024020082903202209500d000240024002400240024002400240024002400240024002400240024002400240200520097c220a2005540d0020024180016a41186a200841186a29020037030020024180016a41106a220b200841106a2902003703002007200841086a2902003703002002200829020037038001024002402002280204220c450d002002280200210d0c010b4198041038220c450d144100210d200c41003b01b601200c41003602b0012002200c360204200241003602000b0340200c41b8016a210e200c2f01b601220f410574211041002111417f21124100210102400340024020102001470d00200f21120c020b20024180016a200c20016a41b8016a412010c60a2213450d04201241016a2112201141106a2111200141206a21012013417f4a0d000b0b200d450d03200d417f6a210d200c20124102746a4198046a280200210c0c000b0b2000420037030002402003450d00200341286c450d00200410390b200210c8020c150b200c20116a220129030020097c22094200510d01200120093703000c0d0b200241106a41086a2210200741086a290200370300200241106a41106a220d200741106a29020037030020022007290200370310200228028401211420022802800121150240200f410a4b0d00200b200d290300370300200720102903003703002002200229031037038001201241016a211002402012200f4f22110d00200e20104105746a200e20124105746a200f20126b41057410c40a1a0b200f41016a2113200e20124105746a22012014360004200120153600002001200229038001370008200141106a2007290300370000200141186a200b290300370000024020110d00200c20104104746a200c20124104746a200f20126b41047410c40a1a0b200c20124104746a2201200937030020014100360208200c20133b01b6010c0b0b410021164104210102400240201241054f0d00201221110c010b4105210141052111024002402012417b6a0e020201000b201241796a211141012116410621010c010b41002111410121160b4198041038220f450d10200f41003b01b601200f41003602b001200f200c2f01b60122172001417f736a22133b01b601200e20014105746a2212280004211820122800002119200b201241186a2900003703002007201241106a29000037030020022012290008370380012013410c4f0d012017200141016a22126b2013470d02200c20014104746a221a41086a2802002117201a2903002105200f41b8016a200e20124105746a201341057410c30a1a200f200c20124104746a201341047410c30a210e200c20013b01b601200241c0006a41086a221a2007290300370300200241c0006a41106a221b200b2903003703002002200229038001370340200e200c20161b22012f01b6012113200b200d290300370300200720102903003703002002200229031037038001200141b8016a21120240201141016a221020134b220d0d00201220104105746a201220114105746a201320116b41057410c40a1a0b201341016a2116201220114105746a22122014360004201220153600002012200229038001370008201241106a2007290300370000201241186a200b2903003700000240200d0d00200120104104746a200120114104746a201320116b41047410c40a1a0b200120114104746a221220093703004100211420124100360208200120163b01b601200241e0006a41086a221c201a2903002209370300200241e0006a41106a221d201b290300221e37030020022002290340221f370360200241286a41106a2215201e370300200241286a41086a221620093703002002201f37032802400240200c2802b0012201450d00410021142005210920172120200c2112200e21212018212220192123034020122f01b40121102001220c2f01b601220e410b490d024100210d41042101024020104105490d0020102101024002402010417b6a0e020201000b201041796a21104101210d410621010c010b410021104101210d410521010b41c8041038220f450d13200f41003b01b601200f41003602b001200f200c2f01b60122172001417f736a22113b01b6012007200c41b8016a222420014105746a221241106a290000370300200b201241186a29000037030020022012290008370380012011410c4f0d062017200141016a22136b2011470d072012280004211820122800002119200c20014104746a221241086a280200211720122903002105200f41b8016a202420134105746a201141057410c30a1a200f200c20134104746a201141047410c30a2111200c20013b01b601201a2007290300370300201b200b290300370300200220022903800137034020112f01b601221241016a21242012410c4f0d08200e20016b22012024470d09201441016a211420114198046a200c20134102746a4198046a200141027410c30a1a4100210102400340201120014102746a4198046a280200221320013b01b401201320113602b001200120124f0d01200120012012496a220120124d0d000b0b201d201b290300370300201c201a290300370300200220022903403703602011200c200d1b22132f01b6012101200b2015290300370300200720162903003703002002200229032837038001201341b8016a21120240201041016a220e20014b220d0d002012200e4105746a201220104105746a200120106b41057410c40a1a0b201220104105746a22122022360004201220233600002012200229038001370008201241106a2007290300370000201241186a200b2903003700000240200d0d002013200e4104746a201320104104746a200120106b41047410c40a1a0b200141016a210d201320104104746a221220203602082012200937030020134198046a21120240201041026a2222200141026a22204f0d00201220224102746a2012200e4102746a200120106b41027410c40a1a0b2012200e4102746a20213602002013200d3b01b6010240200e20204f0d00201320104102746a419c046a2101034020012802002212201041016a22103b01b401201220133602b001200141046a2101200d2010470d000b0b2015201d2903003703002016201c290300370300200220022903603703282005210920172120200c2112201121212018212220192123200c2802b00122010d000b0b200b201529030037030020072016290300370300200220022903283703800120022802042212450d082002280200211141c80410382201450d112001201236029804200141003b01b601200141003602b001201241003b01b401201220013602b001200220013602042002201141016a36020020112014470d0920012f01b6012212410b4f0d0a2001201241016a22113b01b601200120124104746a22132005370300200120124105746a221241c8016a2007290300370000201241d0016a200b29030037000020132017360208201241bc016a2018360000201241b8016a2019360000201241c0016a20022903800137000020014198046a20114102746a200f360200200f20013602b001200f20113b01b40120022802082101200f1a20141a200c1a20171a20051a0c0c0b200b2015290300370300200720162903003703002002200229032837038001200c41b8016a21010240200e20104d0d00200120104105746a221241206a2012200e20106b41057410c40a1a0b200e41016a2111200120104105746a22012022360004200120233600002001200229038001370008200141106a2007290300370000200141186a200b290300370000201041016a210102400240200e20104b0d00200c20104104746a2212202036020820122009370300200c4198046a21120c010b200c20014104746a200c20104104746a2212200e20106b221341047410c40a1a20122020360208201220093703002010410274200c4198046a22126a41086a201220014102746a201341027410c40a1a0b2012200141027422106a2021360200200c20113b01b6012001200e41026a22134f0d0a2010200c6a4198046a211203402012280200221120013b01b4012011200c3602b001201241046a21122013200141016a2201470d000c0b0b0b4197d9c300411c41b4d9c3001065000b2013410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2011410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2024410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b200228020821010b2002200141016a3602080b200a21050b200841286a22082006470d000b0b02402003450d00200341286c450d00200410390b0240200228020822100d0020004200370300200210c8020c040b0240024020054200510d0002402002280204220c0d004100211141002101410021100c020b20022802002112200c2101200c2111034020012f01b60121132012450d022012417f6a2112200120134102746a4198046a280200210120112802980421110c000b0b41c4d9c300411441d8d9c3001065000b200241d4006a2013360200200241d0006a2001360200200242003703482002201136024420024100360240024002402010450d0020022010417f6a2208360258200241c0006a410020111b221028020021110240024020102802082213201028020422012f01b6014f0d00200121120c010b0340024020012802b00122120d00410021120c020b201141016a211120012f01b401211320122101201320122f01b6014f0d000b0b024002402011450d00201341027420126a419c046a280200210102402011417f6a2211450d00034020012802980421012011417f6a22110d000b0b410021110c010b201341016a2111201221010b20102001360204201041003602002010201136020820024188016a201220134105746a220141c0016a29000037030020024190016a200141c8016a29000037030020024198016a200141d0016a2900003703002002200141b8016a29000037038001417f200841016a220120012008491b220141ffffff3f712001470d0320014105742201417f4c0d03200110382218450d022018200229038001370000201841186a20024180016a41186a290300370000201841106a20024180016a41106a290300370000201841086a20024180016a41086a2903003700004101210b200241013602302002201836022820022001410576221736022c200241e0006a41186a200241c0006a41186a2802002201360200200241e0006a41106a200241c0006a41106a290300370300200241e0006a41086a200241c0006a41086a290300370300200220022903403703602001450d0120022001417f6a2208360278200241e0006a410020022802641b221028020021110240024020102802082213201028020422012f01b6014f0d00200121120c010b0340024020012802b00122120d00410021120c020b201141016a211120012f01b401211320122101201320122f01b6014f0d000b0b024002402011450d00201341027420126a419c046a280200210102402011417f6a2211450d00034020012802980421012011417f6a22110d000b0b410021110c010b201341016a2111201221010b20102001360204201041003602002010201136020820024180016a41086a220d201220134105746a220141c0016a29000037030020024180016a41106a220f200141c8016a29000037030020024180016a41186a220e200141d0016a2900003703002002200141b8016a290000370380014101210b03400240200b2017470d00200241286a2017417f200841016a220120012008491b10f50220022802282118200228027821080b2018200b4105746a2201200229038001370000200141186a200e290300370000200141106a200f290300370000200141086a200d2903003700002002200b41016a220b36023002402008450d0020022008417f6a2208360278200241e0006a410020022802641b221028020021110240024020102802082213201028020422012f01b6014f0d00200121120c010b0340024020012802b00122120d00410021120c020b201141016a211120012f01b401211320122101201320122f01b6014f0d000b0b024002402011450d00201341027420126a419c046a280200210102402011417f6a2211450d00034020012802980421012011417f6a22110d000b0b410021110c010b201341016a2111201221010b201020013602042010410036020020102011360208200d201220134105746a220141c0016a290000370300200f200141c8016a290000370300200e200141d0016a2900003703002002200141b8016a29000037038001200228022c21170c010b0b200228022c21170c010b4100210b410028029cde4a2118410021170b200b450d022018200b4105746a21144100210e20182108034002400240200c450d00200e41016a2106200841206a21072002280200210d0340200c2f01b601220f41057421104100210141082111417f211202400340024020102001470d00200f21120c020b2008200c20016a41b8016a412010c60a2213450d04201241016a2112201141106a2111200141206a21012013417f4a0d000b0b200d450d01200d417f6a210d200c20124102746a4198046a280200210c0c000b0b41e8d9c300411241fcd9c3001065000b200c20116a200e36020020142007460d032002280204210c2006210e200721080c000b0b1030000b1034000b200542002005427f7c220920092005561b4203807d22094200510d012000201836021c2000200537030820002009370300200041106a2002290300370200200041246a200b360200200041206a2017360200200041186a200241086a2802003602000b200241a0016a24000f0b4190a2c000411941aca2c0001065000bbf7705147f047e1a7f037e0b7f230041b0096b22042400200441f0036a41186a200341306a29020037030020044180046a200341286a290200370300200441f8036a200341206a2902003703002004200341186a22052902003703f00320032802082106410121070240200441f0036a2000412010c60a0d0020062000280220470d002004420037020402400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200341c0006a2802002200450d0020032802382208200041f0006c6a2109200441b0016a41206a210a200441f0036a41206a210b200441b0026a41206a210c200441d0006a41206a2107200441106a41206a210d4100210e0340200441106a200810c102200d2008290010370000200d41186a200841286a290000370000200d41106a200841206a290000370000200d41086a200841186a290000370000200441d0006a41386a200441106a41386a290300370300200441d0006a41306a200441106a41306a290300370300200441d0006a41286a200441106a41286a2903003703002007200d290300370300200441d0006a41186a200441106a41186a2200290300370300200441d0006a41106a200441106a41106a220f290300370300200441d0006a41086a200441106a41086a221029030037030020042004290310370350200441f0036a41186a22112000290300370300200441f0036a41106a2212200f290300370300200441f0036a41086a22132010290300370300200420042903103703f00302400240200e450d00200428020021060c010b41c8051038220e450d1741002106200e41003b0106200e41003602002004200e360204200441003602000b200841f0006a2108024002400240024002400240024002400240024002400340200e41086a2114200e2f01062215410574211641002100417f210f02400340024020162000470d002015210f0c020b200441f0036a200e20006a221741086a412010c60a2210450d03200f41016a210f200041206a21002010417f4a0d000b0b02402006450d002006417f6a2106200e200f4102746a41c8056a280200210e0c010b0b20044190016a41186a22102011290300221837030020044190016a41106a22162012290300221937030020044190016a41086a22172013290300221a370300200420042903f003221b37039001200441f0016a41186a221c2018370300200441f0016a41106a221d2019370300200441f0016a41086a221e201a3703002004201b3703f00120044190026a41186a221f200741186a220629000037030020044190026a41106a2220200741106a221529000037030020044190026a41086a2221200741086a222229000037030020042007290000370390020240200e2f01062200410a4b0d00201120062900003703002012201529000037030020132022290000370300200420072900003703f003200441d0036a41186a22062010290300370300200441d0036a41106a22152016290300370300200441d0036a41086a2222201729030037030020042004290390013703d003200f41016a21170240200f20004f22230d00201420174105746a2014200f4105746a2000200f6b41057410c40a1a0b2014200f41057422166a221020042903d003370000201041186a2006290300370000201041106a2015290300370000201041086a202229030037000020044190036a41186a2206201129030037030020044190036a41106a2215201229030037030020044190036a41086a22142013290300370300200420042903f00337039003200e41e8026a2110024020230d00201020174105746a201020166a2000200f6b41057410c40a1a0b201020166a220f200429039003370000200f41186a2006290300370000200f41106a2015290300370000200f41086a2014290300370000200e200041016a3b0106200428020821000c0a0b410021064104210002400240200f41054f0d00200f21160c010b410521004105211602400240200f417b6a0e020201000b200f41796a211641012106410621000c010b41002116410121060b41c80510382210450d21201041003b0106201041003602002010200e2f010622242000417f736a22173b0106200441d0036a41186a22152014200041057422256a220f41186a290000370300200441d0036a41106a2222200f41106a290000370300200441d0036a41086a2223200f41086a2900003703002004200f2900003703d00320044190036a41186a2226200e41e8026a222720256a220f41186a29000037030020044190036a41106a2225200f41106a29000037030020044190036a41086a2228200f41086a2900003703002004200f290000370390032017410c4f0d012024200041016a220f6b2017470d02201041086a2014200f410574220f6a2017410574221710c30a1a201041e8026a2027200f6a201710c30a1a200e20003b0106200b41186a22292026290300370000200b41106a222a2025290300370000200b41086a222b2028290300370000200b200429039003370000201120152903002218370300200441f0066a41186a22242018370300200441f0066a41106a22272022290300370300200441f0066a41086a222c2023290300370300200441f0066a41386a222d200441f0036a41386a222e290300370300200441f0066a41306a222f200441f0036a41306a2230290300370300200441f0066a41206a2231200b290300370300200441f0066a41286a2232200441f0036a41286a2233290300370300200420042903d0033703f0062011201f290300370300201220202903003703002013202129030037030020042004290390023703f0032010200e20061b22002f0106210f2015201c2903003703002022201d2903003703002023201e290300370300200420042903f0013703d003200041086a21170240201641016a2214200f4b221c0d00201720144105746a201720164105746a200f20166b41057410c40a1a0b2017201641057422066a221720042903d003370000201741186a2015290300370000201741106a2022290300370000201741086a2023290300370000202620112903003703002025201229030037030020282013290300370300200420042903f00337039003200041e8026a21170240201c0d00201720144105746a201720066a200f20166b41057410c40a1a0b201720066a2216200429039003370000201641186a2026290300370000201641106a2025290300370000201641086a20282903003700002000200f41016a3b0106200441f0086a41086a2221202c2903002218370300200441f0086a41106a223420272903002219370300200441f0086a41186a22352024290300221a370300200441f0086a41206a2031290300221b370300200441f0086a41286a20322903002236370300200441f0086a41306a202f2903002237370300200441f0086a41386a2200202d290300370300200420042903f00622383703f008200441b0026a41386a22392000290300370300200441b0026a41306a223a2037370300200441b0026a41286a223b2036370300200c201b370300200441b0026a41186a221d201a370300200441b0026a41106a221e2019370300200441b0026a41086a221f2018370300200420383703b0020240200e28020022000d00410021200c080b410021202010213c0340200e2f01042116200441f0026a41186a223d201d290300370300200441f0026a41106a223e201e290300370300200441f0026a41086a223f201f290300370300200420042903b0023703f0022035200c41186a220f2900003703002034200c41106a22102900003703002021200c41086a220e2900003703002004200c2900003703f0080240200022062f0106221c410a4b0d00200441b0036a41186a2211201d290300370300200441b0036a41106a2212201e290300370300200441b0036a41086a2213201f290300370300200420042903b0023703b003200641086a21000240201c20164d22170d00200020164105746a221441206a2014201c20166b41057410c40a1a0b2000201641057422146a220020042903b003370000200041186a2011290300370000200041106a2012290300370000200041086a20132903003700002015200f290000370300202220102900003703002023200e2900003703002004200c2900003703d003201641016a2100200641e8026a210f024020170d00200f20004105746a200f20146a201c20166b41057410c40a1a0b201c41016a210e200f20146a220f20042903d003370000200f41186a2015290300370000200f41106a2022290300370000200f41086a2023290300370000200641c8056a210f201c41026a2110024020170d002016410274200f6a41086a200f20004102746a201c20166b41027410c40a1a0b2006200e3b0106200f20004102746a203c3602000240200020104f0d0020062000417f6a22004102746a41cc056a210f0340200f2802002210200041016a22003b010420102006360200200f41046a210f200e2000470d000b0b4100210020402110201621200c0a0b4100211441042100024020164105490d0020162100024002402016417b6a0e020201000b201641796a211641012114410621000c010b4100211641012114410521000b41f80510382210450d22201041003b010620104100360200201020062f010622412000417f736a220e3b01062015200641086a2242200041057422176a220f41186a2900003703002022200f41106a2900003703002023200f41086a2900003703002004200f2900003703d0032026200641e8026a224320176a220f41186a2900003703002025200f41106a2900003703002028200f41086a2900003703002004200f29000037039003200e410c4f0d042041200041016a22176b200e470d05201041086a20422017410574220f6a200e410574220e10c30a1a201041e8026a2043200f6a200e10c30a1a200620003b0106201320232903003703002012202229030037030020112015290300370300200b200429039003370000202b2028290300370000202a202529030037000020292026290300370000200420042903d0033703f00320102f0106220f41016a210e200f410c4f0d06201c20006b2200200e470d07202041016a2120201041c8056a200620174102746a41c8056a200041027410c30a1a4100210002400340201020004102746a41c8056a280200220e20003b0104200e20103602002000200f4f0d0120002000200f496a2200200f4d0d000b0b202d202e290300370300202f2030290300370300203220332903003703002031200b2903003703002024201129030037030020272012290300370300202c2013290300370300200420042903f0033703f0062010200620141b220e2f01062100200441b0036a41186a2214203d290300370300200441b0036a41106a223d203e290300370300200441b0036a41086a223e203f290300370300200420042903f0023703b003200e41086a21170240201641016a220f20004b223f0d002017200f4105746a201720164105746a200020166b41057410c40a1a0b20172016410574221c6a221720042903b003370000201741186a2014290300370000201741106a203d290300370000201741086a203e290300370000201520352903003703002022203429030037030020232021290300370300200420042903f0083703d003200e41e8026a21140240203f0d002014200f4105746a2014201c6a200020166b41057410c40a1a0b200041016a21172014201c6a221420042903d003370000201441186a2015290300370000201441106a2022290300370000201441086a2023290300370000200e41c8056a21140240201641026a223d200041026a221c4f0d002014203d4102746a2014200f4102746a200020166b41027410c40a1a0b2014200f4102746a203c360200200e20173b01060240200f201c4f0d00200e20164102746a41cc056a210003402000280200220f201641016a22163b0104200f200e360200200041046a210020172016470d000b0b2039202d290300370300203a202f290300370300203b2032290300370300200c2031290300370300201d2024290300370300201e2027290300370300201f202c290300370300200420042903f0063703b0022006210e2010213c20062802002200450d080c000b0b200741086a2900002118200741106a29000021192007290000211a20174180036a200741186a290000370000201741f8026a2019370000201741f0026a2018370000201741e8026a201a3700000c090b2017410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200e410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200e410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b200441b0016a41386a2039290300370300200441b0016a41306a203a290300370300200441b0016a41286a203b290300370300200a200c290300370300200441b0016a41186a201d290300370300200441b0016a41106a201e290300370300200441b0016a41086a201f290300370300200420042903b0023703b001410121000b024020000d0020102140200428020821000c010b2004280204220f450d042004280200210e41f80510382200450d182000200f3602c805200041003b010620004100360200200f41003b0104200f2000360200200420003602042004200e41016a360200200e2020470d0520002f0106220e410b4f0d062000200e4105746a220f41106a200441b0016a41086a290300370000200f41186a200441b0016a41106a290300370000200f41206a200441b0016a41186a290300370000200f41f8026a200a41106a290000370000200f4180036a200a41186a2900003700002000200e41016a220e3b0106200f41086a20042903b001370000200f41e8026a200a290000370000200f41f0026a200a41086a290000370000200041c8056a200e4102746a20103602002010200e3b01042010200036020020042802082100201021400b2004200041016a3602080b024020082009460d002004280204210e0c010b0b200328020821060b2003410c6a280200220d200341146a28020022154184016c220e6a2114200341186a210f200d210002400340200e450d014102210720002802002006490d1a200441b0026a41186a200f41186a2216290000370300200441b0026a41106a200f41106a2217290000370300200441b0026a41086a200f41086a22082900003703002004200f2900003703b002200441f0086a41186a2000411c6a290000370300200441f0086a41106a200041146a290000370300200441f0086a41086a2000410c6a2900003703002004200041046a22102900003703f0080240200441b0026a200441f0086a412010c60a450d00200441f0066a41186a2016290000370300200441f0066a41106a2017290000370300200441f0066a41086a20082900003703002004200f2900003703f006200441f0036a41186a201041186a290000370300200441f0036a41106a201041106a290000370300200441f0036a41086a201041086a290000370300200420102900003703f003200441b0016a2004200441f0066a200441f0036a10f40220042802b0012210450d1b20042802b40141ffffff3f71450d00201010390b20004184016a2100200e41fc7e6a210e0c000b0b200442003702940202400240200241186a2802000d0020044184076a42003702000c010b200241146a2802002200450d0420044180076a2002280210200010ff050b200241246a280200221641ffffff3f712016470d1320164105742210417f4c0d130240024020100d0020044190076a20104105763602002004410136028c070c010b200228021c210f201010382200450d15200441f0066a41206a2010410576220e3602002004200036028c0703402010450d01200f41086a2900002118200f41106a2900002119200f290000211a200041186a200f41186a290000370000200041106a2019370000200041086a20183700002000201a370000200041206a2100201041606a2110200f41206a210f200e417f6a220e0d000b0b200441f0036a41106a2002290308370300200441f0036a41186a200441f0066a41106a220e290300370300200441f0036a41206a200441f0066a41186a2217290300370300200420163602940720044198046a200441f0066a41206a2216290300370300200441a4046a4200370200200441a0046a41002802fcad492208360200200420022903003703f803200442003702b401200441b0026a41186a200541186a2200290000370300200441b0026a41106a200541106a220f290000370300200441b0026a41086a200541086a2210290000370300200420052900003703b0022016420037030020044184076a4200370200200441f0066a41086a221642003703002004200836028c072004410028029cde4a221136028007200420113602f406200420063602f006200441f0086a200441b0016a200441b0026a200441f0066a10f70220044190056a2107024020042802f4082208450d00024020042802f80841ffffff3f71450d00200810390b024020044184096a28020041ffffff3f71450d0020044180096a28020010390b20044190096a28020041ffffffff0171450d002004418c096a28020010390b200442003702f40820172000290000370300200e200f29000037030020162010290000370300200420052900003703f006200441f0086a200441f0066a10f8021a200441a8056a2006360200200741086a200441b0016a41086a280200360200200720042903b0013702002004419c056a221220042903f008370200200441a4056a200441f0086a41086a280200360200200441ac056a220b2005290200370200200441b4056a2010290200370200200441bc056a200f290200370200200441c4056a200029020037020020044180056a41002802ccdd4a221c36020020044184056a4200370200200441f0046a4200370300200441f0036a41cc006a4200370200200441f0036a41e4006a4200370200200442003703e004200442003703f003200442003703b004200442003703c804200441003602cc05200441003602f4052004410036029c06200441003602c406200441003a00ec062015450d0e200441f0036a41086a2126200441b0026a4104722108200441f0086a41386a2113200441a0096a210c20044198096a2122200441f0086a41206a212302400340200841186a200d411c6a290000370000200841106a200d41146a290000370000200841086a200d410c6a2900003700002008200d2900043700002004200d2802003602b002200441b0016a41186a200d41fc006a290000370300200441b0016a41106a200d41f4006a290000370300200441b0016a41086a200d41ec006a2900003703002004200d2900643703b0012013200d41dc006a290000370300200c200d41d4006a2900003703002022200d41cc006a2900003703002023200d41c4006a290000370300200441f0086a41186a200d413c6a290000370300200441f0086a41106a200d41346a290000370300200441f0086a41086a200d412c6a2900003703002004200d2900243703f008200441f0066a200441f0036a2004200441b0026a200441b0016a200441f0086a10f10220042903f00622184202510d0102402018a74101470d0002400240200428029402220e450d0020042802900221060c010b41341038220e450d1841002106200e41003b0132200e41003602002004200e3602940220044100360290020b200d41e4006a21170340200e41046a2109200e2f01322215410274211641002100417f210f02400340024020162000470d002015210f0c020b2017200e20006a41046a280200412010c60a2210450d05200f41016a210f200041046a21002010417f4a0d000b0b02402006450d002006417f6a2106200e200f4102746a41346a280200210e0c010b0b024002402015410a4b0d000240200f20154f0d002009200f4102746a220041046a20002015200f6b41027410c40a1a0b2009200f4102746a2017360200200e201541016a3b01320c010b410021064104210002400240200f41054f0d00200f21160c010b410521004105211602400240200f417b6a0e020201000b200f41796a211641012106410621000c010b41002116410121060b413410382210450d18201041003b0132201041003602002010200e2f013222152000417f736a220f3b0132200f410c4f0d082015200041016a22286b200f470d09200920004102746a2802002125201041046a200920284102746a200f41027410c30a1a200e20003b01322010200e20061b220041046a210f0240201641016a221520002f013222064b0d00200f20154102746a200f20164102746a200620166b41027410c40a1a0b200f20164102746a20173602002000200641016a3b0132024002400240200e28020022000d00410021090c010b410021092025211d201021280340200e2f01302116200022062f0132220e410b490d024100211741042100024020164105490d0020162100024002402016417b6a0e020201000b201641796a211641012117410621000c010b4100211641012117410521000b41e40010382210450d1b201041003b013220104100360200201020062f013222152000417f736a220f3b0132200f410c4f0d0d2015200041016a221e6b200f470d0e200641046a221520004102746a2802002125201041046a2015201e410274221e6a200f41027410c30a1a200620003b013220102f0132220f41016a2115200f410c4f0d0f200e20006b22002015470d10200941016a2109201041346a2006201e6a41346a200041027410c30a1a4100210002400340201020004102746a41346a280200220e20003b0130200e20103602002000200f4f0d0120002000200f496a2200200f4d0d000b0b2010200620171b220e41046a21150240201641016a2200200e2f0132220f4b0d00201520004102746a201520164102746a200f20166b41027410c40a1a0b200f41016a211720152016410274221e6a201d360200200e41346a21150240201641026a221f200f41026a221d4f0d002015201f4102746a201520004102746a200f20166b41027410c40a1a0b201520004102746a2028360200200e20173b013202402000201d4f0d00200e201e6a41386a210003402000280200220f201641016a22163b0130200f200e360200200041046a210020172016470d000b0b2006210e2025211d20102128200628020022000d000b0b200428029402220f450d0f200428029002210e41e40010382200450d192000200f360234200041003b013220004100360200200f41003b0130200f200036020020042000360294022004200e41016a36029002200e2009470d1020002f0132220f410b4f0d112000200f41016a220e3b0132200041346a200e4102746a20103602002000200f4102746a41046a20253602002010200e3b013020102000360200200420042802980241016a360298020c020b200641046a2217201641027422156a210f201641016a2100200e41016a211002400240200e20164b0d00200f201d360200200641346a210f0c010b2017200041027422096a200f200e20166b410274221610c40a1a200f201d3602002015200641346a220f6a41086a200f20096a201610c40a1a0b200f200041027422166a2028360200200620103b01322000200e41026a220e4f0d00201620066a41346a210f0340200f280200221020003b013020102006360200200f41046a210f200e200041016a2200470d000b0b200420042802980241016a360298020b200d4184016a220d2014460d0f0c000b0b20044188046a10c802024020044198046a28020041ffffff3f71450d0020044194046a28020010390b024020042802a40441ffffffff0171450d0020042802a00410390b20071080062012108306200441b8046a108206200441d0046a10820602402004280284052200450d0020004188016c450d0020042802800510390b20044190026a108106410221070c180b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b41b4fcca00412b41d8f1c3001035000b200f410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200f410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2015410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b20042903c80420042903f80322185a0d010b20042802f40521000c010b20044190096a20044194066a290200370300200441f0086a41186a2004418c066a290200370300200441f0086a41106a20044184066a290200370300200441f0086a41086a200441fc056a29020037030020042902f405211941002110200441003602f405200420193703f008024002400240024002402019a7220e4101470d0020044194096a2802002100200441f0066a41186a2004418c096a290200370300200441f0066a41106a20044184096a290200370300200441f0066a41086a200441fc086a290200370300200420042902f4083703f006200441b0026a2007200441f0066a200010f302024020042802b002220f0d00200441d0036a41186a200441f0086a410472220041186a290000370300200441d0036a41106a200041106a290000370300200441d0036a41086a200041086a290000370300200420002900003703d003410021000c040b02400240200441b8026a2802000d00410221000c010b2007200f10f6022200450d02200028020c2216450d03200441d0036a41086a201641057420002802046a41606a220041086a290000370300200441d0036a41106a200041106a290000370300200441d0036a41186a200041186a290000370300200420002900003703d003410121000b024020042802b40241ffffff3f71450d00200f10390b20004102470d030b200441f0066a41186a200b41186a290000370300200441f0066a41106a200b41106a290000370300200441f0066a41086a200b41086a2900003703002004200b2900003703f0060c030b41e694c6004135419c95c6001065000b41ac95c600413c41e895c6001065000b200441f0066a41186a200441d0036a41186a290300370300200441f0066a41106a200441d0036a41106a290300370300200441f0066a41086a200441d0036a41086a290300370300200420042903d0033703f006200021100b200441d0006a41186a200441f0066a41186a290300370300200441d0006a41106a200441f0066a41106a290300370300200441d0006a41086a200441f0066a41086a290300370300200420042903f0063703500240024002402007200441d0006a10f602220f450d0002402026200f411c6a10fb022018540d00200f41106a2115200f2802182216450d02200f280210220020164105746a211720044194096a2802002206417f73210d200441f0086a4104722114200e4101472108200f211303400240024002400240201041ff01710d000340200441f0066a41186a2210200041186a290000370300200441f0066a41106a220e200041106a290000370300200441f0066a41086a2216200041086a290000370300200420002900003703f0062007200010f602220f450d03200441b0036a41186a2010290300370300200441b0036a41106a200e290300370300200441b0036a41086a2016290300370300200420042903f0063703b0032026200f411c6a10fb0220185a0d042017200041206a2200470d000b410021100c010b0340200441f0066a41186a2210200041186a290000370300200441f0066a41106a220e200041106a290000370300200441f0066a41086a2216200041086a290000370300200420002900003703f0062007200010f602220f450d02200441b0036a41186a2010290300370300200441b0036a41106a200e290300370300200441b0036a41086a2016290300370300200420042903f0063703b0030240024020080d00200f280200221020064d0d01200f28020c2010200d6a22104d0d01200f28020420104105746a2014412010c60a0d010b2026200f411c6a10fb0220185a0d040b2017200041206a2200470d000b410121100b2013210f0c050b41e694c6004135419c95c6001065000b200441d0006a41086a200441b0036a41086a290300370300200441d0006a41106a200441b0036a41106a290300370300200441d0006a41186a200441b0036a41186a290300370300200420042903b003370350200f41106a2115200f2802102200200f280218220e4105746a211741002110200f2113200e0d000c030b0b410021000c020b41e694c6004135419c95c6001065000b20044190036a41186a200441d0006a41186a29030037030020044190036a41106a200441d0006a41106a29030037030020044190036a41086a200441d0006a41086a2903003703002004200429035037039003024002402010450d00200441f0066a41206a200441f0086a41206a290300370300200441f0066a41186a200441f0086a41186a290300370300200441f0066a41106a200441f0086a41106a290300370300200441f0066a41086a200441f0086a41086a290300370300200420042903f0083703f0060c010b200441003602f0060b0240024002400240024020152802082214450d0020152802002213201441057422006a2122200041606a210e20044194076a2802002216417f732106200441f0066a410472211520042802f006220d41014721082013210003402007200010f6022210450d0320080d0202402010280200221720164d0d00201028020c201720066a22174d0d00201028020420174105746a2015412010c60a450d030b200041206a2100200e41606a220e4160470d000b0b4100210b410021090c030b41041038220c450d08200c201036020020044281808080103702b4022004200c3602b0020240200e0d00410121090c020b200041c0006a2100200d41014721080240024003402007200041606a10f6022210450d0220080d0102402010280200221720164d0d00201028020c201720066a22174d0d00201028020420174105746a2015412010c60a450d020b200041206a2100200e41606a220e0d000b410121090c030b201320144105746a21174101210e41012109034002402009200e470d00200441b0026a200e10b70120042802b002210c0b200c20094102746a20103602002004200941016a22093602b80220002022460d030240024003402007200010f6022210450d01200d4101470d0202402010280200220e20164d0d00201028020c200e20066a220e4d0d002010280204200e4105746a2015412010c60a450d030b2017200041206a2200470d000c060b0b4184f4c500412f41b4f4c5001065000b200041206a210020042802b402210e0c000b0b4184f4c500412f41b4f4c5001065000b4184f4c500412f41b4f4c5001065000b20042802b402210b20042802b002211c0b2009ad422c7e2219422088a70d042019a72200417f4c0d04200f28020021230240024020000d00410421170c010b200010382217450d060b41002115200441003602f802200420173602f00220042000412c6e3602f402412010382210450d052010200429039003370000201041186a20044190036a41186a290300370000201041106a20044190036a41106a290300370000201041086a20044190036a41086a29030037000020044281808080103702142004201036021002400240200941027422000d004101210e0c010b201c20006a21132023210f410121250340200f2128202520236a2214417f73210c41002115201c21060240034002402006280200220d280200220020144d0d00200d410c6a2802002000200c6a22004d0d00200d28020420004105746a211641002100024002402015450d00201521102015210f034002400240417f41012017201041017620006a2210412c6c22086a2016412010c60a220e4100481b4100200e1b220e4101470d002010210f0c010b200e41ff017141ff01470d03201041016a21000b200f20006b2110200f20004b0d000b0b200441b0026a41186a2208201641186a290000370300200441b0026a41106a220d201641106a290000370300200441b0026a41086a2222201641086a290000370300200420162900003703b0022006280200220e41246a280200221041ffffffff01712010470d0a2010410374220f417f4c0d0a200e28021c210e02400240200f0d00410821160c010b200f10382216450d0c0b2016200e200f10c30a210e200441b0016a41186a22162008290300370300200441b0016a41106a2208200d290300370300200441b0016a41086a220d2022290300370300200420042903b0023703b00120152000490d09200f41037621220240201520042802f402470d00200441f0026a201510fd0220042802f00221170b20172000412c6c6a220f412c6a200f201520006b412c6c10c40a1a200f20042903b001370200200f41186a2016290300370200200f41106a2008290300370200200f41086a200d290300370200200f41286a2010360200200f41246a2022360200200f200e3602202004201541016a22153602f8020c010b201720086a41206a200d411c6a107f20042802f802221520104d0d07202620042802f002221720086a41206a10fb0220185a0d020b200641046a22062013470d000b20042802f00221172004280218210e20042802102110202821230c020b200441d0036a41186a201641186a2200290000370300200441d0036a41106a201641106a220f290000370300200441d0036a41086a201641086a2210290000370300200420162900003703d003200441b0026a41186a22142000290000370300200441b0026a41106a2213200f290000370300200441b0026a41086a220c2010290000370300200420162900003703b00241002100200441003602f8022015412c6c210e202841016a210f03400240201720006a221041246a28020041ffffffff0171450d00201041206a28020010390b200e2000412c6a2200470d000b0240024020090d004100210d0c010b417e20286b2106410021154100210d410021100240034002400240200d450d00201c20104102746a210e201c201020156a4102746a21160340200e28020022002802002208200f4d0d022000410c6a280200200820066a22084d0d02200028020420084105746a200441b0026a412010c60a0d0220162000360200201641046a2116200e41046a210e2009201041016a22104b0d000c040b0b201c20104102746a210003402000280200220e2802002216200f4d0d01200e410c6a280200201620066a22164d0d01200e28020420164105746a200441b0026a412010c60a0d01200041046a21002009201041016a22104b0d000b4100210d0c030b2015417f6a2115200d41016a210d2009201041016a22104b0d000b0b0240200d0d004100210d0c010b201c2010200d6b4102746a201c20104102746a200920106b41027410c40a1a0b200441b0036a41186a22162014290300370300200441b0036a41106a22082013290300370300200441b0036a41086a2206200c290300370300200420042903b0023703b0032009200d6b210902402004280218220e2004280214470d00200441106a200e410110f5022004280218210e0b20042802102210200e4105746a220020042903b003370000200041086a2006290300370000200041106a2008290300370000200041186a20162903003700002004200e41016a220e360218202541016a2125201c200941027422006a211320000d000b41002115200f21230b2004280214211602402015450d002015412c6c210f201741246a210003400240200028020041ffffffff0171450d002000417c6a28020010390b2000412c6a2100200f41546a220f0d000b0b024020042802f4022200450d002000412c6c450d00201710390b0240200b41ffffffff0371450d00201c10390b02400240200e0d00410021000c010b200441f0066a41186a200e41057420106a41606a220041186a290000370300200441f0066a41106a200041106a290000370300200441f0066a41086a200041086a290000370300200420002900003703f006410121000b201641ffffff3f71450d00201010390b200441f8056a20042903f00637030020044198066a202336020020044180066a200441f8066a29030037030020044188066a20044180076a29030037030020044190066a20044188076a290300370300200420003602f4050b20044188046a10c802024020044198046a28020041ffffff3f71450d0020044194046a28020010390b024020042802a40441ffffffff0171450d0020042802a00410390b20071080062012108306200441b8046a108206200441d0046a1082060240200428028405220f450d00200f4188016c450d0020042802800510390b20044190026a108106410221072000450d07200442003702142004201136021020044200370254200341146a2802002200450d04200328020c221720004184016c6a211420032903002118200441f0036a41086a221041106a210d201041186a2115034020102017290004370000201041086a2017410c6a290000370000200d201741146a29000037000020152017411c6a290000370000200441013602f003200420172802003602f403200441003602182018200441f0036a2001200441106a10de080240201741246a20042802102004280218201741e4006a10f1040d00410321070c070b02402005201741046a2200412010c60a450d00200441f0066a41186a200541186a290000370300200441f0066a41106a200541106a290000370300200441f0066a41086a200541086a290000370300200420052900003703f006200441f0036a41186a220e200041186a220f290000370300200441f0036a41106a2216200041106a22062900003703002010200041086a2207290000370300200420002900003703f003200441f0086a2004200441f0066a200441f0036a10f402024020042802f00822080d00410421070c080b200e200f2900003703002016200629000037030020102007290000370300200420002900003703f003200441d0006a200441f0036a10f8021a20042802f4082106024020042802f8082200450d002000410574210f200821000340200e200041186a2900003703002016200041106a2900003703002010200041086a290000370300200420002900003703f003200041206a2100200441d0006a200441f0036a10f8021a200f41606a220f0d000b0b200641ffffff3f71450d00200810390b20174184016a22172014470d000c050b0b2010201541f895c600103c000b200020151044000b1034000b1030000b200442003702b401024002402003280240220f0d00410021000c010b20032802382100200f41f0006c210f0340200441d0036a200010c102200441f0036a41186a200441d0036a41186a290300370300200441f0036a41106a200441d0036a41106a290300370300200441f0036a41086a200441d0036a41086a290300370300200420042903d0033703f003200041f0006a2100200441b0016a200441f0036a10f8021a200f41907f6a220f0d000b20042802b80121000b024020042802582000470d00024002402004280254220f0d0041002117200441c0026a4100360200200441003602b4020c010b200441b0026a2004280250200f10ec01200021170b200441f0086a41106a200441b0026a41106a290300370300200441f0086a41086a200441b0026a41086a290300370300200420042903b0023703f0080240024020042802b401220f0d0041002100200441f0066a41106a4100360200200441003602f4060c010b200441f0066a20042802b001200f10ec010b200441a4046a2000360200200441f0036a41086a200441f0086a41086a290300370300200441f0036a41106a200441f0086a41106a29030037030020044194046a220d200441f0066a41086a2903003702002004419c046a200441f0066a41106a290300370200200420042903f0083703f003200420042903f00637028c04200441003602b004200442003703a804200441f0036a41206a21152004418c046a211403402017450d0320042017417f6a221736028804200441f0036a410020042802f4031b22162802002110024002402016280208220e201628020422002f01064f0d002000210f0c010b034002402000280200220f0d004100210f0c020b201041016a211020002f0104210e200f2100200e200f2f01064f0d000b0b024002402010450d00200e410274200f6a41ec026a280200210002402010417f6a2210450d00034020002802e80221002010417f6a22100d000b0b410021100c010b200e41016a2110200f21000b20162000360204201620103602082016410036020020042802a4042200450d03200f200e4105746a211620042000417f6a3602a4042014410020042802900422001b2208280200211002400240200d410820001b2206280200220e2015410420001b220728020022002f01064f0d002000210f0c010b034002402000280200220f0d004100210f0c020b201041016a211020002f0104210e200f2100200e200f2f01064f0d000b0b201641086a2116024002402010450d00200e410274200f6a41ec026a280200210002402010417f6a2210450d00034020002802e80221002010417f6a22100d000b0b410021100c010b200e41016a2110200f21000b2007200036020020084100360200200620103602002016200f200e4105746a41086a412010c60a450d000b0b200441b0016a108306410521070b200441d0006a1083062004280214450d012004280210103920041084060c020b200441b0016a108306200441d0006a10830602402004280214450d00200428021010390b2004108406410621070c010b20041084060b200441b0096a240020070be50202067f017e200028020421012000410036020402402001450d00024020002802002202450d00034020012802980421012002417f6a22020d000b0b024020002802082203450d00410021040340024002400240200420012f01b601490d0041002100034041002102024020012802b0012205450d00200041016a210620012f01b4012104200521020b024041c80441980420001b450d00200110390b024020020d0000000b2006210020022101200420022f01b6014f0d000b200220044104746a2903002107024020060d00200221010c020b200441027420026a419c046a280200210102402006417f6a2202450d00034020012802980421012002417f6a22020d000b0b410021040c020b200120044104746a29030021070b200441016a21040b2007500d022003417f6a22030d000b0b41002102034020012802b0012100024041c80441980420021b450d00200110390b2002417f6a21022000210120000d000b0b0b9c0702067f017e230041306b22042400024002400240024002400240024002400240024020012d00000e06010203040500010b200141046a210141002105410121060c060b200141016a21010c040b200141086a210741012108200141016a21014100210641002105410021090c060b200141086a210741012109200141016a210141002106410021050c040b200141086a210741012105200141016a2101410021060c020b200141046a21010b41002106410021050b410021090b410021080b024002400240024002400240024020020e0402000103020b2009450d04200128000021022007210120022003280000470d040c030b2005450d03200128000021022007210120022003280000470d030c020b2008450d02200128000021022007210120022003280000460d010c020b2006450d010b024020012802082202450d00200128020022012d0000210320042002417f6a220736021c2004200141016a36021802400240024002400240024002402003417f6a0e050001020304070b200441086a200441186a10ad0120042802080d06200441206a200441186a200428020c10b40120042802202203450d06200428022421010240200428021c220541044f0d002001450d07200141286c450d07200310390c070b200441286a280200210220042802182206280000210720042005417c6a36021c2004200641046a3602182003450d06410021050c050b20074104490d052001280001210320042002417b6a36021c2004200141056a360218200441106a200441186a10ad0120042802100d05200441206a200441186a200428021410b40120042802202201450d052004290224210a0240200428021c220241044f0d00200aa72202450d06200241286c450d06200110390c060b20042802182207280000210620042002417c6a36021c2004200741046a3602182001450d05200a422088a72107200aa72102410121050c040b20074108490d042001290001210a2004200241776a36021c2004200141096a360218200a422088a72102200aa72101410221050c030b20074104490d032001280001210320042002417b6a36021c2004200141056a360218410321050c010b4104210520074104490d022001280001210320042002417b6a36021c2004200141056a3602180b0b2000200336020420002005360200200041146a2006360200200041086a20013602002000410c6a2007ad4220862002ad843702000c020b200041053602000c010b200041053602000b200441306a24000ba10102037f017e230041106b220224002002410036020820024201370300200128020821032002200141106a280200220410d20120032004200210d00120012903002105024020022802042204200228020822016b41074b0d0020022001410810810120022802042104200228020821010b2002280200220320016a2005370000200041202003200141086a10a30202402004450d00200310390b200241106a24000bb50c010b7f230041d0016b22022400200241a0016a41186a22034200370300200241a0016a41106a22044200370300200241a0016a41086a22054200370300200242003703a001200241c0016a41b080c400411310f2012005200241c0016a41086a2206290000370300200220022900c0013703a001200241c0016a4185a7c800411510f20120032006290000370300200420022900c001370300200241086a200241a0016a412010f501200241a0016a200228020c410020022802081b220510d402200241306a20022802a001220320022802a80110ab02024020022d003022074101470d00200241106a41186a200241c9006a290000370300200241106a41106a200241c1006a290000370300200241106a41086a200241396a290000370300200220022900313703100b024020022802a401450d00200310390b200241306a41186a200141186a2206290000370300200241306a41106a200141106a2208290000370300200241306a41086a200141086a220929000037030020022001290000370330200241a0016a41186a220a4200370300200241a0016a41106a220b4200370300200241a0016a41086a22034200370300200242003703a001200241c0016a41b080c400411310f2012003200241c0016a41086a220c290000370300200220022900c0013703a001200241c0016a41a8a7c800410d10f201200441086a200c290000370000200420022900c001370000200241a0016a4120200241306a10cf02200241306a200041f00010c30a1a200a2006290000370300200b200829000037030020032009290000370300200220012900003703a001200241c0016a200241a0016a10c30220022802c001220320022802c801200241306a10d502024020022802c401450d00200310390b200228023421060240200241306a410c6a2802002203450d00200341246c21002006210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032000415c6a22000d000b0b0240200241306a41086a22032802002200450d00200041246c450d00200610390b200241306a41186a200141186a290000370300200241306a41106a200141106a2900003703002003200141086a29000037030020022001290000370330200241a0016a200510d40220022802a001220320022802a801200241306a10cf02024020022802a401450d00200310390b200241a0016a41186a4200370300200241a0016a41106a4200370300200241a0016a41086a22034200370300200242003703a001200241c0016a41b080c400411310f2012003200241c0016a41086a2200290000370300200220022900c0013703a001200241c0016a4185a7c800411510f201200441086a2000290000370000200420022900c0013700002002200541016a41c0930670360230200241a0016a4120200241306a410410a302024020074101470d00200241a0016a41186a2200200241106a41186a290300370300200241a0016a41106a2201200241106a41106a2903003703002003200241106a41086a290300370300200220022903103703a001024041002802a8fe4a4104490d00200241143602c4012002200241a0016a3602c00141002802a4fe4a210341002802a0fe4a210441002802acfe4a2105200241306a41106a4202370300200241e4006a41d1c8c000ad4280808080a00984370200200241d8006a41b4c8c000ad4280808080d00384370300200241d0006a4201370300200241386a4117360200200241cc006a200241c0016a360200200241b0d6c00036023c20024281808080803737026c20024100360260200241c4d4c00036023420024104360230200441f4ddca00200541024622051b200241306a200341b0a7c00020051b2802101103000b200241306a41186a2000290300370300200241306a41106a2001290300370300200241306a41086a200241a0016a41086a290300370300200220022903a001370330200241c0016a200241306a10c30220022802c001220320022802c80110fd0120022802c401450d00200310390b200241d0016a24000be20201027f230041f0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003a00000c010b200328021421042003200341186a28020036024c20032001360248200341206a200341c8006a108002410121020240024020032d00204101470d0020034200370254410021022003410028029cde4a3602502003410c3602642003200341086a3602602003200341d0006a36026c200341346a410136020020034201370224200341e4b4c4003602202003200341e0006a360230200341ec006a41fc86ca00200341206a103b1a2003280250200328025810e7022003280254450d01200328025010390c010b20002003290021370001200041196a200341206a41196a290000370000200041116a200341206a41116a290000370000200041096a200341206a41096a2900003700000b200020023a00002004450d00200110390b200341f0006a24000bf50603027f017e0e7f230041106b2202240002400240024020012802082203ad42247e2204422088a70d002004a72205417f4c0d00200128020021064104210702402005450d00200510382207450d020b410021082000410036020820002007360200200041046a200541246e2209360200024020054124490d002009210a034020052008460d01200a450d040240024002400240024002400240200620086a22012d00000e06010203040500010b2001410c6a280200220b417f4c0d08200141046a280200210102400240200b0d004101210c0c010b200b1038220c450d0a0b200c2001200b10c30a410876210d4105210e200b210f0c050b2002200141146a2900003703002002200141196a290000370005200141016a2f0000200141036a2d0000411074722110200141046a280000220c410876210d200141106a28000021112001410c6a280000210b200141086a280000210f4100210e0c040b200141106a2802002211417f4c0d06200141036a2d00002110200141016a2f0000210b200141086a2802002112200141046a2d0000210c4101210e4101210f02402011450d0020111038220f450d080b200b2010411074722110200f2012201110c30a1a2011210b0c030b200141106a2802002211417f4c0d05200141036a2d00002110200141016a2f0000210b200141086a280200210e200141046a2d0000210c0240024020110d004101210f0c010b20111038220f450d070b200b2010411074722110200f200e201110c30a1a4102210e2011210b0c020b200141106a2802002211417f4c0d04200141036a2d00002110200141016a2f0000210b200141086a280200210e200141046a2d0000210c0240024020110d004101210f0c010b20111038220f450d060b200b2010411074722110200f200e201110c30a1a4103210e2011210b0c010b4104210e200141046a280200210c2001410c6a280200210b200141086a280200210f4100210d0b200720086a2201200e3a0000200141036a20104110763a0000200141016a20103b0000200141106a20113602002001410c6a200b360200200141086a200f360200200141046a200d410874200c41ff017172360200200141146a20022903003702002001411c6a200241086a290300370200200841246a2108200a417f6a220a0d000b0b20002003360208200241106a24000f0b1034000b1030000b2009200941c4cfca00103c000b970204017f017e047f037e02400240024020012802082202ad42287e2203422088a70d002003a72204417f4c0d00200128020021050240024020040d00410821010c010b200410382201450d020b2000410036020820002001360200200041046a200441286e2206360200024020044128490d002006210703402004450d012007450d04200541086a2903002103200541106a2903002108200529032021092005290300210a200141186a200541186a290300370300200141106a2008370300200141086a20033703002001200a370300200141206a2009370300200141286a2101200441586a2104200541286a21052007417f6a22070d000b0b200020023602080f0b1034000b1030000b2006200641c4cfca00103c000b5b01017f02404120103822030d001030000b20032002290000370000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200020012003412010a302200310390ba10102037f017e230041106b220224002002410036020820024201370300200128020821032002200141106a280200220410d20120032004200210d00120012903002105024020022802042204200228020822016b41074b0d0020022001410810810120022802042104200228020821010b2002280200220320016a2005370000200041202003200141086a10a30202402004450d00200310390b200241106a24000b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000b5b01017f02404120103822030d001030000b20032002290000370000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200020012003412010a302200310390b040041000baa0101027f230041206b22022400200241b080c400411310f201200241106a41d5d6c000410e10f2010240410410382203450d0020032001360000412410382201450d002001200229000037000020012002290010370010200141086a200241086a290000370000200141186a200241106a41086a29000037000020002001360200200041046a42a4808080c0043702002001200328000036002020031039200241206a24000f0b1030000be40301047f230041106b220324002003410036020820034201370300200241106a200310ff0202400240024002402002280200220441c000490d00200441808001490d012004418080808004490d020240200328020420032802082205470d00200320054101108101200328020821050b2003280200220620056a41033a00002003200541016a22053602080240200328020420056b41034b0d0020032005410410810120032802002106200328020821050b200620056a20043600002003200541046a3602080c030b200441027421050240200328020420032802082204470d00200320044101108101200328020821040b200328020020046a20053a00002003200441016a3602080c020b2004410274410172210502402003280204200328020822046b41014b0d00200320044102108101200328020821040b200328020020046a20053b00002003200441026a3602080c010b2004410274410272210502402003280204200328020822046b41034b0d00200320044104108101200328020821040b200328020020046a20053600002003200441046a3602080b200241306a200310ff02200241d0006a200310ff02200241046a2003109b062000200120032802002202200328020810a30202402003280204450d00200210390b200341106a24000b9f6905087f017e027f017e027f230041b0056b22032400024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e0400010203000b20022802282104200341206a200141046a41f00010c30a1a200341c0046a200141f8006a41c80010c30a1a200341a8026a22054200370300200341a0026a2201420037030020034190026a41086a220642003703002003420037039002200341c8016a41c380c400411310f2012006200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a419aa6c800410810f20120052007290000370300200120032900c801370300024020034190026a10c002220541ff01714102460d0020054101710d0b0b20042004280200417f6a220536020020022d00000d0b20022d00012102024020050d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22052005280200417f6a220536020020050d00200410390b200241ff01714101470d0c20034190026a41186a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41c380c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f201200141086a2005290000370000200120032900c801370000200341086a20034190026a412010f50102402003280208450d00200328020c41e012490d000240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410321024102210641eccbc0002107410f2108200341286a2802002201450d0e200141246c450d0e200328022410390c0e0b200341c8026a200341206a10c102200341a8016a41186a200341c8026a41186a290200370300200341a8016a41106a200341c8026a41106a290200370300200341a8016a41086a200341c8026a41086a290200370300200320032902c8023703a801024041002802a8fe4a4105490d00200341123602d4032003200341206a3602d00341002802a4fe4a210241002802a0fe4a210541002802acfe4a2106200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4201370300200341d0026a4117360200200341e4026a200341d0036a360200200341ccd3c0003602d40220034281808080801237028403200341003602f802200341c4d4c0003602cc02200341053602c802200541f4ddca00200641024622061b200341c8026a200241b0a7c00020061b2802101103000b200341a8026a22064200370300200341a0026a2204420037030020034190026a41086a220242003703002003420037039002200341c8016a41c380c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41a8a7c800410d10f201200141086a2005290000370000200120032900c801370000200341d0036a20034190026a412010ab020240024020032d00d0034101460d0020064200370300200442003703002002420037030020034200370390020c010b2006200341e9036a2900003703002004200341e1036a2900003703002002200341d9036a290000370300200320032900d103370390020b200341d0036a41186a20034190026a41186a290300370300200341d0036a41106a20034190026a41106a290300370300200341d0036a41086a20034190026a41086a29030037030020032003290390023703d003200341e8016a200341d0036a10d702200341c8026a20032802e801220220032802f00110c402024020032802ec01450d00200210390b0240024020032802cc022209450d00200341d4026a280200210a20032802d002210420032802c8022003280220490d01410321064184ccc0002107410921080c0a0b024041002802a8fe4a450d0020034112360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e0036a420237030020034184046a41d1c8c000ad4280808080a00984370200200341f8036a41b4c8c000ad4280808080d00384370300200341f0036a4201370300200341d8036a4117360200200341ec036a20034190026a360200200341d4d3c0003602dc0320034281808080d01237028c042003410036028004200341c4d4c0003602d403200341013602d003200141f4ddca00200541024622051b200341d0036a200241b0a7c00020051b2802101103000b4106210641e4ccc0002107410e21080c0a0b4200210b200341a8026a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41c380c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41e4a6c800411310f201200141086a2005290000370000200120032900c801370000200341c8026a20034190026a10c5020240024020032802d00222020d004100210541002802fcad492102410021060c010b200341c8026a41106a280200210620032903c802210b20032802d40221050b200341c8016a41186a2207200341a8016a41186a290300370300200341c8016a41106a2208200341a8016a41106a290300370300200341c8016a41086a220c200341a8016a41086a290300370300200320032903a8013703c8012003280220210d200320063602c002200320053602bc02200320023602b80220034190026a200341b8026a10c6020240200329039002500d00200341c8026a410e6a20034190026a41086a290300370100200341c8026a41166a20034190026a41106a290300370100200341c8026a411e6a20034190026a41186a290300370100200341c8026a41266a20034190026a41206a290300220e370100200341d0036a41266a2202200e37010020032003290390023701ce02200341d0036a41086a200341c8026a41086a2205290100370300200341d0036a41106a200341c8026a41106a2206290100370300200341d0036a41186a200341c8026a41186a220f290100370300200341d0036a41206a200341c8026a41206a290100370300200320032901c8023703d003200341e8016a41206a22102002290100370300200341e8016a41186a200341d0036a411e6a290100370300200341e8016a41106a200341d0036a41166a290100370300200341e8016a41086a200341d0036a410e6a290100370300200320032901d6033703e801200f2007290300370300200620082903003703002005200c2903003703002003200d3602e802200320032903c8013703c8020240200341c8026a200b200341e8016a200341c0046a10c70241ff017122024106460d00200320023a009002024041002802a8fe4a450d00200341dc036a4113360200200341143602d403200320034190026a3602d8032003200341c8016a3602d00341002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341d8026a4202370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4202370300200341d0026a4117360200200341e4026a200341d0036a360200200341e4d3c0003602d40220034281808080b03437028403200341003602f802200341c4d4c0003602cc02200341013602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200341f8016a10c802024020034188026a28020041ffffff3f71450d0020032802840210390b4114210841b4cbc0002107410021060c0a0b200341f8016a10c8020240201028020041ffffff3f71450d0020032802840210390b2003200b3703b80202402003412c6a2802002205450d0020032802242102200541246c21050340200341c8026a2002410141a4c1c70010c902024020032802c80222064105460d0020032802d00221070240024020060e020001020b2007450d01200741286c450d0120032802cc0210390c010b20070d0a0b200241246a21022005415c6a22050d000b200328022c21050b02402005450d0020032802242102200541246c210502400340200341c8026a2002410141a4c1c70010c902024020032802c80222064105460d0020032902d402220ea7210720032802d00221080240024020060e020100020b2007450d01200741286c450d01200810390c010b20032802cc0222060d020b200241246a21022005415c6a22050d000c020b0b0240200e428080808010540d002008450d0a200841286c450d0a200610390c0a0b200341e8016a41106a2007360200200341e8016a410c6a2008360200200320063602f0012003200b42017c220b3703e801200341a8026a420037030020034190026a41106a420037030020034190026a41086a220242003703002003420037039002200341c8016a41c380c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41e4a6c800411310f201200141086a2005290000370000200120032900c80137000020034190026a200341e8016a10ca02024041002802a8fe4a4103490d00200341e4036a4115360200200341d0036a410c6a4116360200200341163602d4032003200b370390022003200341e8016a3602e003200320034190026a3602d8032003200341b8026a3602d00341002802a4fe4a210241002802a0fe4a210541002802acfe4a2106200341c8026a41106a4203370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4203370300200341c8026a41086a4117360200200341e4026a200341d0036a360200200341f4d3c0003602d40220034281808080b03037028403200341003602f802200341c4d4c0003602cc02200341033602c802200541f4ddca00200641024622061b200341c8026a200241b0a7c00020061b2802101103000b20032802f4012202450d00200241286c450d0020032802f00110390b20034190026a41186a2206420037030020034190026a41106a2207420037030020034190026a41086a220242003703002003420037039002200341c8016a41c380c400411310f2012002200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f201200141086a22082005290000370000200120032900c801370000200320034190026a412010f5012003280200210c2003280204210d2006420037030020074200370300200242003703002003420037039002200341c8016a41c380c400411310f20120022005290000370300200320032900c80137039002200341c8016a41c4a8c800410c10f20120082005290000370000200120032900c8013700002003200d41016a4101200c1b3602c80220034190026a4120200341c8026a410410a302200341c8026a200341206a41f00010c30a1a200341d0036a41186a200341a8016a41186a290300370300200341d0036a41106a200341a8016a41106a290300370300200341d0036a41086a200341a8016a41086a290300370300200320032903a8013703d003200341c8026a200341d0036a10d802024041002802a8fe4a4103490d0020034114360294022003200341a8016a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4202370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a3602002003418cd4c0003602d40220034281808080901537028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b0240200a450d00200a41246c21012009210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b02402004450d00200441246c450d00200910390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b2003200328001936021020032003411c6a280000360013200041186a41003a000020004200370308200020032802103600192000411c6a2003280013360000200042003703000c0f0b4113210841d0cbc0002107410121060c080b200341206a200141086a41880110c30a1a200241016a21012002280228210520022d000022020d02200341e9026a200141206a2d00003a0000200341e1026a200141186a290000370000200341d9026a200141106a290000370000200341d1026a200141086a29000037000020052005280200417f6a2202360200200320012900003700c902024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b02400240024020032d00c9020e020100060b200341a8026a22024200370300200341a0026a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41c380c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c801370300200341c0046a20034190026a412010cc0220032d00c0044101470d0541022105200341c8026a410272200341c0046a410172412010c60a0d0620034190026a21040c010b20034190026a21040b20034190026a41186a2207420037030020034190026a41106a2202420037030020034190026a41086a220142003703002003420037039002200341c8016a41c380c400411310f2012001200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41a8a7c800410d10f20120072006290000370300200220032900c801370300410321052004412010a8020d04200341c0046a41286a200341d0006a290300370300200341c0046a41206a200341206a41286a290300370300200341c0046a41186a2205200341206a41206a290300370300200341c0046a41386a200341206a41c0006a290300370300200341c0046a41c0006a200341206a41c8006a290300370300200341c0046a41c8006a200341f0006a2903003703002003200341206a41186a2903003703d0042003200341206a41386a2903003703f00420032802282108200341c0046a41d8006a200341206a41e0006a290300370300200341c0046a41e0006a200341206a41e8006a290300370300200341c0046a41e8006a200341206a41f0006a2903003703002003200341206a41d8006a29030037039005200341c0046a410472200341206a410c6a10cd02200320083602c004200341c8026a41f8006a200341206a41f8006a10ce0220032d00a40121082003290320210b200341d0036a200341c8026a41086a200341c0046a41f00010c30a220941f00010c30a1a200341e8016a200341d0036a10c1022005200341e8016a41186a220a290300370300200341c0046a41106a220c200341e8016a41106a220d290300370300200341c0046a41086a200341e8016a41086a220f290300370300200320032903e8013703c0042007420037030020024200370300200142003703002003420037039002200341c8016a41c380c400411310f20120012006290000370300200320032900c80137039002200341c8016a4195a8c800410b10f201200241086a22052006290000370000200220032900c80137000020044120200341c0046a10cf022007420037030020024200370300200142003703002003420037039002200341c8016a41c380c400411310f20120012006290000370300200320032900c80137039002200341c8016a4185a7c800411510f20120052006290000370000200220032900c801370000200341003602c00420044120200341c0046a410410a302200341c0046a200941f00010c30a1a2007200a2903003703002002200d2903003703002001200f290300370300200320032903e80137039002200341c0046a20034190026a10d802200c200341c8036a2802003602002003200b3703c004200320032903c0033703c8042007420037030020024200370300200142003703002003420037039002200341c8016a41c380c400411310f20120012006290000370300200320032900c80137039002200341c8016a41e4a6c800411310f20120052006290000370000200220032900c8013700002004200341c0046a10d0020240200341c0046a410c6a2802002201450d00200141286c450d0020032802c80410390b200341a8026a420037030020034190026a41106a420037030020034190026a41086a220142003703002003420037039002200341c8016a41c380c400411310f2012001200341c8016a41086a2205290000370300200320032900c80137039002200341c8016a419aa6c800410810f201200241086a2005290000370000200220032900c8013700002003200841ff01714100473a00c80120044120200341c8016a410110a302024041002802a8fe4a4103490d0020034117360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a3602002003419cd4c0003602d40220034281808080a01837028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b0240200341346a2802002201450d00200328022c2102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200341306a2802002202450d00200241246c450d00200328022c10390b02402003419c016a2802002202450d00200241286c450d0020032802980110390b200320032800a8013602b8022003200341ab016a2800003600bb02200041186a41003a000020004200370308200020032802b8023600192000411c6a20032800bb02360000200042003703000c0d0b200241016a210520022802282106024002400240024020022d000022020d0020012d00012104200341e9026a200541206a2d00003a0000200341e1026a200541186a290000370000200341d9026a200541106a290000370000200341d1026a200541086a29000037000020062006280200417f6a2202360200200320052900003700c902024020020d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b0240024020032d00c9020e020100030b200341a8026a22024200370300200341a0026a2205420037030020034190026a41086a220642003703002003420037039002200341c8016a41c380c400411310f2012006200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022007290000370300200520032900c801370300200341206a20034190026a412010cc0220032d00204101470d02200341c8026a410272200341206a410172412010c60a0d020b200441ff01714101470d02200341206a41186a200141026a220241186a290000370300200341206a41106a200241106a290000370300200341206a41086a200241086a2900003703002003200229000037032020034190026a41186a2202420037030020034190026a41106a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41c380c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c80137030020034190026a4120200341206a10d20241002802a8fe4a4103490d0320034118360294022003200341206a3602900241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4201370300200341c8026a41086a4117360200200341e4026a20034190026a360200200341a4d4c0003602d40220034281808080c01a37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000c030b200341d5026a200541086a290000370000200341dd026a200541106a290000370000200341e5026a200541186a290000370000200341ed026a200541206a2d00003a000020062006280200417f6a2201360200200320023a00cc02200320052900003700cd0220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b200320032800e8013602a801200320032900c0043703d0032003200341eb016a2800003600ab012003200341c7046a2900003700d703200041186a41003a000020004200370308200020032802a8013600192000411c6a20032800ab01360000200041206a41023a0000200020032903d003370021200041286a20032900d703370000200042013703000c0e0b200341a8026a2202420037030020034190026a41106a2201420037030020034190026a41086a220542003703002003420037039002200341c8016a41c380c400411310f2012005200341c8016a41086a2206290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022006290000370300200120032900c80137030020034190026a412010fd0141002802a8fe4a4103490d0041002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341c8026a41106a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341c8026a41206a4200370300200341c8026a41086a4117360200200341acd4c0003602d40220034281808080801b37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200320032800e8013602a8012003200341eb016a2800003600ab01200041186a41003a000020004200370308200020032802a8013600192000411c6a20032800ab01360000200042003703000c0c0b200241016a2105200228022821060240024002400240024020022d000022020d0020012d00012101200341e9026a200541206a2d00003a0000200341e1026a200541186a290000370000200341d9026a200541106a290000370000200341d1026a200541086a29000037000020062006280200417f6a2202360200200320052900003700c902024020020d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b02400240024020032d00c9020e020100040b200341a8026a22024200370300200341a0026a2205420037030020034190026a41086a220642003703002003420037039002200341c8016a41c380c400411310f2012006200341c8016a41086a2204290000370300200320032900c80137039002200341c8016a41fda5c800410b10f20120022004290000370300200520032900c801370300200341206a20034190026a412010cc0220032d00204101470d03200341c8026a410272200341206a410172412010c60a0d0320034190026a21020c010b20034190026a21020b200341a8026a22054200370300200341a0026a2206420037030020034190026a41086a220442003703002003420037039002200341c8016a41c380c400411310f2012004200341c8016a41086a2207290000370300200320032900c80137039002200341c8016a419aa6c800410810f20120052007290000370300200620032900c801370300200320013a00c80120024120200341c8016a410110a30241002802a8fe4a2102200141ff0171450d0220024103490d0341002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4200370300200341d0026a4117360200200341b4d4c0003602d40220034281808080801d37028403200341003602f802200341c4d4c0003602cc02200341033602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000c030b200341d5026a200541086a290000370000200341dd026a200541106a290000370000200341e5026a200541186a290000370000200341ed026a200541206a2d00003a000020062006280200417f6a2201360200200320023a00cc02200320052900003700cd0220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b200320032800d003360220200320032900c0043703c8022003200341d3036a2800003600232003200341c7046a2900003700cf02200041186a41003a000020004200370308200020032802203600192000411c6a2003280023360000200041206a41023a0000200020032903c802370021200041286a20032900cf023700004201210b0c020b20024102490d0041002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341e4026a41f4ddca00360200200341d8026a4201370300200341fc026a41d1c8c000ad4280808080a00984370200200341f0026a41b4c8c000ad4280808080d00384370300200341e8026a4200370300200341d0026a4117360200200341bcd4c0003602d40220034281808080a01d37028403200341003602f802200341c4d4c0003602cc02200341023602c802200141f4ddca00200541024622051b200341c8026a200241b0a7c00020051b2802101103000b200320032800d0033602202003200341d3036a280000360023200041186a41003a00004200210b20004200370308200020032802203600192000411c6a20032800233600000b2000200b3703000c0b0b200341d5026a200141086a290000370000200341dd026a200141106a290000370000200341e5026a200141186a290000370000200341ed026a200141206a2d00003a000020052005280200417f6a2206360200200320023a00cc02200320012900003700cd0220060d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b410221050b0240200341346a2802002201450d00200341206a410c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200341306a2802002202450d00200241246c450d00200328022c10390b02402003419c016a2802002202450d00200241286c450d0020032802980110390b200320032800a8013602b8022003200341ab016a2800003600bb02200041186a41003a000020004200370308200020032802b8023600192000411c6a20032800bb02360000200041286a4112360200200041246a41f0fcc600360200200041a90e3b0021200041206a20053a0000200042013703000c080b20032802d4022202450d00200241286c450d00200710390b4105210641b0ccc0002107411a21080b0240200a450d00200a41246c21012009210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b2004450d00200441246c450d00200910390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21040340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022004470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b41032102200341286a2802002201450d03200141246c450d03200328022410390c030b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410821060240200341206a41086a2802002202450d00200241246c450d00200328022410390b20042004280200417f6a2201360200410321024184cdc00021074106210820010d022004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22012001280200417f6a220136020020010d02200410390c020b20050d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22022002280200417f6a220236020020020d00200410390b0240200341d0046a2802002202450d0020024184016c450d00200341cc046a28020010390b024020034180056a2802002201450d0020032802f8042202200141f0006c6a21060340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240200341fc046a2802002202450d00200241f0006c450d0020032802f80410390b0240200341206a410c6a2802002201450d0020032802242102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b410221020240200341286a2802002201450d00200141246c450d00200328022410390c010b0b2003200328001936021020032003411c6a280000360013200041186a41003a000020004200370308200020032802103600192000411c6a2003280013360000200041286a2008360200200041246a2007360200200020063a0022200041293a0021200041206a20023a0000200042013703000b200341b0056a24000bd20201057f230041206b22022400200241c380c400411310f201200241106a41fed7c000410f10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000bb50c010b7f230041d0016b22022400200241a0016a41186a22034200370300200241a0016a41106a22044200370300200241a0016a41086a22054200370300200242003703a001200241c0016a41c380c400411310f2012005200241c0016a41086a2206290000370300200220022900c0013703a001200241c0016a4185a7c800411510f20120032006290000370300200420022900c001370300200241086a200241a0016a412010f501200241a0016a200228020c410020022802081b220510d902200241306a20022802a001220320022802a80110ab02024020022d003022074101470d00200241106a41186a200241c9006a290000370300200241106a41106a200241c1006a290000370300200241106a41086a200241396a290000370300200220022900313703100b024020022802a401450d00200310390b200241306a41186a200141186a2206290000370300200241306a41106a200141106a2208290000370300200241306a41086a200141086a220929000037030020022001290000370330200241a0016a41186a220a4200370300200241a0016a41106a220b4200370300200241a0016a41086a22034200370300200242003703a001200241c0016a41c380c400411310f2012003200241c0016a41086a220c290000370300200220022900c0013703a001200241c0016a41a8a7c800410d10f201200441086a200c290000370000200420022900c001370000200241a0016a4120200241306a10cf02200241306a200041f00010c30a1a200a2006290000370300200b200829000037030020032009290000370300200220012900003703a001200241c0016a200241a0016a10d70220022802c001220320022802c801200241306a10d502024020022802c401450d00200310390b200228023421060240200241306a410c6a2802002203450d00200341246c21002006210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032000415c6a22000d000b0b0240200241306a41086a22032802002200450d00200041246c450d00200610390b200241306a41186a200141186a290000370300200241306a41106a200141106a2900003703002003200141086a29000037030020022001290000370330200241a0016a200510d90220022802a001220320022802a801200241306a10cf02024020022802a401450d00200310390b200241a0016a41186a4200370300200241a0016a41106a4200370300200241a0016a41086a22034200370300200242003703a001200241c0016a41c380c400411310f2012003200241c0016a41086a2200290000370300200220022900c0013703a001200241c0016a4185a7c800411510f201200441086a2000290000370000200420022900c0013700002002200541016a41c0930670360230200241a0016a4120200241306a410410a302024020074101470d00200241a0016a41186a2200200241106a41186a290300370300200241a0016a41106a2201200241106a41106a2903003703002003200241106a41086a290300370300200220022903103703a001024041002802a8fe4a4104490d00200241143602c4012002200241a0016a3602c00141002802a4fe4a210341002802a0fe4a210441002802acfe4a2105200241306a41106a4202370300200241e4006a41d1c8c000ad4280808080a00984370200200241d8006a41b4c8c000ad4280808080d00384370300200241d0006a4201370300200241386a4117360200200241cc006a200241c0016a360200200241b0d6c00036023c20024281808080803737026c20024100360260200241c4d4c00036023420024104360230200441f4ddca00200541024622051b200241306a200341b0a7c00020051b2802101103000b200241306a41186a2000290300370300200241306a41106a2001290300370300200241306a41086a200241a0016a41086a290300370300200220022903a001370330200241c0016a200241306a10d70220022802c001220320022802c80110fd0120022802c401450d00200310390b200241d0016a24000baa0101027f230041206b22022400200241c380c400411310f201200241106a41d5d6c000410e10f2010240410410382203450d0020032001360000412410382201450d002001200229000037000020012002290010370010200141086a200241086a290000370000200141186a200241106a41086a29000037000020002001360200200041046a42a4808080c0043702002001200328000036002020031039200241206a24000f0b1030000ba20401067f230041d0006b22022400200241086a41ed80c400410510f201200241186a41b8eec100410d10f20102400240412010382203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003412010f301370338200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a108d01200310392002280230220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290008370000200341086a200241086a41086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290018370000200341086a200241186a41086a290000370000200228022821030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a3602000240200228022c450d00200310390b200241d0006a24000f0b1030000b1034000be30301067f230041d0006b22022400200241ccfec300410710f201200241106a41b4d7c300410810f2012002200136022c200241306a2002412c6a410410dc02200241cc006a2002412c6a41046a3602002002200241c0006a36024420022002412c6a3602482002200241306a360240200241206a200241c0006a108d01024002402002280228220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290000370000200141086a200241086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290010370000200141086a200241106a41086a290000370000200228022021010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a36020002402002280224450d00200110390b200241d0006a24000f0b1034000b1030000b3e002002ad4220862001ad8410122101200041086a2202420037000020004200370000200020012900003700002002200141086a290000370000200110390b9c0401067f230041d0006b22022400200241b9fec300410610f201200241106a418cecc900410710f20102400240412010382203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a290000370000200241306a2003412010dc02200241cc006a200341206a360200200220033602482002200241306a41106a3602442002200241306a360240200241206a200241c0006a108d01200310392002280228220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290000370000200341086a200241086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290010370000200341086a200241106a41086a290000370000200228022021030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a36020002402002280224450d00200310390b200241d0006a24000f0b1030000b1034000ba20401067f230041d0006b22022400200241086a41ed80c400410510f201200241186a41c0edc100410710f20102400240412010382203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003412010f301370338200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a108d01200310392002280230220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290008370000200341086a200241086a41086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290018370000200341086a200241186a41086a290000370000200228022821030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a3602000240200228022c450d00200310390b200241d0006a24000f0b1030000b1034000ba20401067f230041d0006b22022400200241086a41f7fec300410810f201200241186a418080c200410710f20102400240412010382203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003412010f301370338200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a108d01200310392002280230220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290008370000200341086a200241086a41086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290018370000200341086a200241186a41086a290000370000200228022821030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a3602000240200228022c450d00200310390b200241d0006a24000f0b1030000b1034000bce0603017f017e057f230041c00c6b22022400200241086a200010dd02200241186a2002280208200228021010e1022002290318210320024200370318200241206a2104024002400240024020034201520d00200241e8006a2802002105200228026c210620022802642100200241f0006a200441c40010c30a1a02400240024020050e020001020b41002802a8fe4a450d0041002802a4fe4a210541002802a0fe4a210741002802acfe4a2108200241d4016a41f4ddca00360200200241c8016a4201370300200241ec016a41fcb2c900ad4280808080d00b84370200200241e0016a41d3bfc900ad4280808080c00184370300200241d8016a4200370300200241c0016a410f360200200241f8dac0003602c40120024281808080d088013702f401200241003602e801200241c4bfc9003602bc01200241013602b801200741f4ddca00200841024622081b200241b8016a200541b0a7c00020081b2802101103000b024020062000720d0020012802002100200241b8016a41086a41043a0000200241d9016a200041186a290000370000200241d1016a200041106a290000370000200241c9016a200041086a290000370000200241c1016a200029000037000041002100200241003a00b801200241b8016a10fc010c030b20000d03410121050b2004200241f0006a41c40010c30a1a2002200636026c20022005417f6a3602682002200036026420024201370318410121000c010b4100210041002802a8fe4a450d004100210041002802a4fe4a210541002802a0fe4a210141002802acfe4a2106200241d4016a41f4ddca00360200200241c8016a4201370300200241ec016a41fcb2c900ad4280808080d00b84370200200241e0016a41d3bfc900ad4280808080c00184370300200241d8016a4200370300200241c0016a410f36020020024180dbc0003602c40120024281808080f08b013702f401200241003602e801200241c4bfc9003602bc01200241013602b801200141f4ddca00200641024622061b200241b8016a200541b0a7c00020061b2802101103000b2002280210210520022802082101024020022903184201510d002001200510fd010c020b20012005200410e2020c010b410221000b0240200228020c450d00200228020810390b200241c00c6a240020000b8e0402067f027e230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044104490d002004417c7122054104460d0020054108460d002005410c460d00200441707122044110460d00200128000021052001280004210620012800082107200128000c2108200141186a29000021092001290010210a0240200441506a0e110102020202020202020202020202020201000b20044120470d010b420021092003420037021c2003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e702200328021c450d01200328021810390c010b2000200a370308200041386a2001290040370300200041286a2001290030370300200041186a2001290020370300200041106a2009370300200041d4006a2008360200200041d0006a2007360200200041cc006a2006360200200041c8006a2005360200200041c0006a200141c8006a290000370300200041306a200141386a290000370300200041206a200141286a290000370300420121090b200020093703002002450d00200110390b200341d0006a24000b9f0503047f027e017f230041106b2203240020034100360208200342013703002002280240210420034100410410810120032802002205200328020822066a20043600002003200641046a2204360208200228024421060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a2205360208200228024821060240200328020420056b41034b0d00200320054104108101200328020821050b2003280200220420056a20063600002003200541046a2205360208200228024c21060240200328020420056b41034b0d0020032005410410810120032802002104200328020821050b200420056a20063600002003200541046a2206360208200241086a29030021072002290300210802402003280204220520066b410f4b0d002003200641101081012003280200210420032802042105200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241186a2903002107200229031021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241286a2903002107200229032021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241386a2903002107200229033021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a2202200737000820022008370000200020012004200641106a10a30202402005450d00200410390b200341106a24000bf006010d7f23004190016b22022400200241086a200110df022002280208210320022002280210220136021c20022003360218200241206a2003200110e40202400240200228022022040d00200041003602000c010b200228022421052002200241286a280200220636024420022004360240200241e8006a4104722107410021010240024002400240034020062001460d01200720016a200420016a22082d00003a00002002200141016a22093602682002200841016a3602402009210120094120470d000b200241d8006a41026a2201200241f5006a2d00003a00002002418c016a41026a2208200241fc006a2d00003a0000200220022f016c3b0148200220022d006e3a004a2002200620096b3602442002200241f3006a2f00003b01582002200241fa006a2f01003b018c01200241e8006a410e6a2801002109200241e8006a41156a2800002106200241e8006a411c6a280200210720024188016a280200210a200228006f210b200241e4006a41026a220c20024183016a2d00003a0000200220024181016a2f00003b0164200241e8006a200241c0006a10e5022002280268220d0d010c020b200241003602440c010b200241346a41026a220e20012d00003a0000200241306a41026a220120082d00003a00002002412c6a41026a2208200c2d00003a0000200220022f01483b0138200220022d004a3a003a200220022f01583b0134200220022f018c013b0130200220022f01643b012c2000200229026c3702042000200d3602002000410c6a20022f01383b01002000410e6a20022d003a3a00002000410f6a200b360000200020022f01343b0013200041156a200e2d00003a000020002009360016200020022f01303b001a2000411c6a20012d00003a00002000200636001d200041236a20082d00003a0000200020022f012c3b0021200041286a200a360000200041246a20073600000c010b2002420037024c2002410028029cde4a3602482002410c36025c2002200241186a3602582002200241c8006a36028c01200241fc006a41013602002002420137026c200241e4b4c4003602682002200241d8006a3602782002418c016a41fc86ca00200241e8006a103b1a2002280248200228025010e7020240200228024c450d00200228024810390b200041003602000b2005450d00200410390b0240200228020c450d00200310390b20024190016a24000b130020002002ad4220862001ad84102810a40a0bfa0301097f23004180016b220224002002200110ad0102400240024002402002280200450d00200041003602000c010b2002280204220320012802044105762204200420034b1b22054105742204417f4c0d010240024020050d00410121060c010b200410382206450d030b41002104200241003602102002200536020c20022006360208024002402003450d00200241d8006a41017221050340200241d8006a2001108002200241386a41086a2207200541086a290000370300200241386a41106a2208200541106a290000370300200241386a41186a2209200541186a2900003703002002200529000037033820022d00584101460d02200241186a41186a220a2009290300370300200241186a41106a22092008290300370300200241186a41086a220820072903003703002002200229033837031802402004200228020c470d00200241086a2004410110f50220022802082106200228021021040b200620044105746a22072002290318370000200741186a200a290300370000200741106a2009290300370000200741086a20082903003700002002200441016a22043602102003417f6a22030d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b20004100360200200228020c41ffffff3f71450d00200610390b20024180016a24000f0b1034000b1030000bc90102037f017e230041106b2202240020002802042103200028020021004101210420024280808080104200200128021841a097c30041012001411c6a28020028020c1100001b22052001ad843703000240024020030d002005422088a721000c010b03402002200036020c200041016a210020022002410c6a41bc94c100106f21012003417f6a22030d000b20012d000421000b0240200041ff01710d00200228020022002802184198a0c00041012000411c6a28020028020c11000021040b200241106a240020040b0e002001ad4220862000ad84101a0b820401067f230041d0006b22022400200241086a41f7fec300410810f201200241186a419c81c200411210f20102400240411010382203450d0020032001290000370000200341086a200141086a29000037000020022003411010f301370338200241cc006a200341106a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a108d01200310392002280230220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290008370000200341086a200241086a41086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290018370000200341086a200241186a41086a290000370000200228022821030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a3602000240200228022c450d00200310390b200241d0006a24000f0b1030000b1034000ba00501067f230041e0006b22022400200241086a41fcffc300410810f201200241186a41c4d1c500410f10f2012002410036024020024201370338200241386a4100412010810120022802382203200228024022046a22052001290000370000200541086a200141086a290000370000200541106a200141106a290000370000200541186a200141186a2900003700002002200441206a2205360240200128022021010240200228023c20056b41034b0d00200241386a2005410410810120022802382103200228024021050b200320056a2001360000200220022802382201200541046a220510f301370348200241dc006a200120056a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a108d010240200228023c450d00200110390b024002402002280230220341206a2201417f4c0d000240024020010d00410121050c010b200110382205450d020b2000200536020041002104200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002104200028020021050b200520046a22012002290008370000200141086a200241086a41086a2900003700002006200441106a220136020002402007280200220420016b410f4b0d00200020014110108101200041046a2802002104200041086a28020021010b200041086a2206200141106a22053602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200420056b20034f0d0020002005200310810120062802002105200028020021070b200720056a2001200310c30a1a2006200520036a3602000240200228022c450d00200110390b200241e0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41bffec300410410f201200241186a41c4f9c200411110f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41b9fec300410610f201200241186a4188eec900410d10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b8f0f020c7f017e23004180016b220524000240024020024108490d00200141086a2101200241786a21020c010b41002102024041002802a8fe4a0d0041f4ddca0021010c010b4100210241002802a4fe4a210641002802a0fe4a210741002802acfe4a210841f4ddca0021012005412c6a41f4ddca00360200200541206a4201370300200541c4006a41dba2c000ad4280808080f00b84370200200541306a4200370300200541186a4113360200200541c8a2c000360214200541386a41c8a2c000ad4280808080b00284370300200541c0a2c00036021c20054281808080b00e37024c2005410036024020054101360210200741f4ddca00200841024622081b200541106a200641b0a7c00020081b2802101103000b20054100360210024002402002450d00200520012d00003a00142005410136021020024101460d00200520012d00013a00152005410236021020024102460d00200520012d00023a00162005410336021020024103460d00200520012d00033a00172005410436021020024104460d00200541186a20012d00043a00002005410536021020024105460d00200541196a20012d00053a00002005410636021020024106460d002005411a6a20012d00063a00002005410736021020024107460d002005411b6a20012d00073a00002005410836021020024108460d002005411c6a20012d00083a00002005410936021020024109460d002005411d6a20012d00093a00002005410a3602102002410a460d002005411e6a20012d000a3a00002005410b3602102002410b460d002005411f6a20012d000b3a00002005410c3602102002410c460d00200541206a20012d000c3a00002005410d3602102002410d460d00200541216a20012d000d3a00002005410e3602102002410e460d00200541226a20012d000e3a00002005410f3602102002410f460d00200541236a20012d000f3a00002005411036021020024110460d00200541246a20012d00103a00002005411136021020024111460d00200541256a20012d00113a00002005411236021020024112460d00200541266a20012d00123a00002005411336021020024113460d00200541276a20012d00133a00002005411436021020024114460d00200541286a20012d00143a00002005411536021020024115460d00200541296a20012d00153a00002005411636021020024116460d002005412a6a20012d00163a00002005411736021020024117460d002005412b6a20012d00173a00002005411836021020024118460d002005412c6a20012d00183a00002005411936021020024119460d002005412d6a20012d00193a00002005411a3602102002411a460d002005412e6a20012d001a3a00002005411b3602102002411b460d002005412f6a20012d001b3a00002005411c3602102002411c460d00200541306a20012d001c3a00002005411d3602102002411d460d00200541316a20012d001d3a00002005411e3602102002411e460d00200541326a20012d001e3a00002005411f3602102002411f460d00200541336a20012d001f3a0000200541203602102005200541296a220928000036027820052005412c6a28000036007b200520052f01143b0174200520052d00163a00762005411e6a2801002107200541256a2800002108200541106a41206a280200210a20052800172106200528007b210b200541f0006a41026a220c2005411d6a2d00003a000020052005411b6a2f00003b0170200541ec006a41026a220d200541246a2d00003a00002005200541226a2f01003b016c200541e8006a41026a220e2005412b6a2d00003a0000200520092f00003b0168200541e4006a41026a220920052d00763a0000200520052f01743b0164200541e0006a41026a220f200c2d00003a0000200520052f01703b0160200541dc006a41026a2210200d2d00003a0000200520052f016c3b015c200541d8006a41026a220d200e2d00003a0000200520052f01683b01582002417c714120460d00200541f8006a41026a200f2d00003a0000200541f4006a41026a20102d00003a0000200c200d2d00003a0000200520052f01643b0110200520052f01603b0178200520052f015c3b0174200520052f01583b0170200520092d00003a001220012800202101410021020c010b410121020b200541086a41026a200541f8006a41026a2d00003a0000200541046a41026a200541f4006a41026a2d00003a0000200541026a200541f0006a41026a2d00003a0000200520052d00123a000e200520052f01103b010c200520052f01783b0108200520052f01743b0104200520052f01703b01000240024020020d00024020044110490d00200020052f010c3b0108200020052f01083b000f20002007360112200020052f01043b001620002008360019200020052f01003b001d2000410a6a20052d000e3a00002000410b6a2006360000200041116a200541086a41026a2d00003a0000200041186a200541046a41026a2d00003a00002000411f6a200541026a2d00003a000020032900002111200041386a200341086a290000370300200041306a2011370300200041286a20013602002000200a360224200041206a200b360200200042003703000c020b200042013703000c010b200042013703000b20054180016a24000bfa0301077f230041206b220224002002200010ea0202400240200128020822034105744104722200417f4c0d00200128020021012002280208210420022802002105200010382206450d01200241003602182002200036021420022006360210024002400240200341c000490d00024002400240200341808001490d002003418080808004490d01200641033a0000410121002002410136021802402002280214417f6a41034b0d00200241106a4101410410810120022802102106200228021821000b200620006a2003360000200041046a21000c020b41022100200620034102744101723b00000c010b20062003410274410272360000410421000b20022000360218200120034105746a21070c010b200620034102743a000041012100200241013602182003450d01200120034105746a21070b0340200141206a21080240200228021420006b411f4b0d00200241106a2000412010810120022802102106200228021821000b200620006a22032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002002200041206a22003602182008210120072008470d000b0b200520042006200010a30202402002280214450d00200610390b02402002280204450d00200510390b200241206a24000f0b1034000b1030000bdc0301097f230041c0006b22022400200241086a2203200141146a290200370300200241106a22042001411c6a290200370300200241186a2205200141246a2902003703002002200129020c370300200128020421062001280200210720012802082108200241206a200010df02200228022821092002280220210a2002410036023820024201370330200241306a410041201081012002280230200228023822006a22012002290300370000200141086a2003290300370000200141106a2004290300370000200141186a20052903003700002002200041206a360238200241306a200810d2010240024020080d0020022802302104200228023821080c010b20084105742103200228023821082007210103400240200228023420086b411f4b0d00200241306a20084120108101200228023821080b2002280230220420086a22002001290000370000200041086a200141086a290000370000200041106a200141106a290000370000200041186a200141186a2900003700002002200841206a2208360238200141206a2101200341606a22030d000b0b200a20092004200810a30202402002280234450d00200410390b02402002280224450d00200a10390b0240200641ffffff3f71450d00200710390b200241c0006a24000be90301067f230041d0006b22022400200241086a41b9fec300410610f201200241186a41d0edc900410910f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bd60201047f230041e00b6b220224002002200010dd02200241d8006a200228020022032002280208220410e1020240024020022903584201510d0041002100200241106a410041c80010c50a1a410021050c010b200241106a200241e0006a41c80010c30a1a200241ac016a2802002105200241a8016a28020021000b0240024020052000720d0020012802002100200241d8006a41086a41033a0000200241f9006a200041186a290000370000200241f1006a200041106a290000370000200241e9006a200041086a290000370000200241e1006a2000290000370000200241003a0058200241d8006a10fc01410121000c010b417f200041016a220120012000491b21000b200241e0006a200241106a41c80010c30a2101200241ac016a2005360200200241a8016a20003602002002420137035820032004200110e20202402002280204450d00200310390b200241e00b6a24000bc8b001080a7f017e047f017e0d7f057e167f027e230041e00f6b2206240002400240024002400240024002402001411c6a2802002207450d00200141086a2108200141186a2802002109034020072f01b601220a410574210b4100210c417f210d4100210e024003400240200b200e470d00200a210d0c020b20042007200e6a41b8016a412010c60a220f450d04200d41016a210d200c41106a210c200e41206a210e200f417f4a0d000b0b2009450d012009417f6a21092007200d4102746a4198046a28020021070c000b0b20004200370300200041f8016a41003b01000c010b2007200c6a220e2903002110200e41086a2802002111200641f8026a411c6a2003411c6a290000370200200641f8026a41146a200341146a290000370200200641f8026a410c6a2003410c6a290000370200200620032900043702fc022006200328020022123602f802200641a0036a41386a200541386a290000370300200641a0036a41306a200541306a290000370300200641a0036a41286a200541286a290000370300200641a0036a41206a200541206a290000370300200641a0036a41186a200541186a290000370300200641a0036a41106a200541106a290000370300200641a0036a41086a200541086a290000370300200620052900003703a003200641f80d6a41186a200441186a290000370300200641f80d6a41106a200441106a290000370300200641f80d6a41086a200441086a290000370300200620042900003703f80d02400240200141e4006a2802002207450d00200128026021090c010b41ac1410382207450d0541002109200741003b01ca112007410036020020012007360264200141003602600b200641f8026a410472211302400240024002400240024002400340200741cc116a21144100210c410020072f01ca11220a4105746b210b417f210d41cc11210e0240024003400240200b200e6a41cc11470d00200a210d0c020b200641f80d6a2007200e6a412010c60a220f450d02200d41016a210d200c41cc016a210c200e41206a210e200f417f4a0d000b0b2009450d022009417f6a21092007200d4102746a41ac146a28020021070c010b0b024002402007200c6a220e41046a2d0000220d4101470d00200e410c6a200641f8026a410472220c412010c60a0d03200e41086a2802002012460d010c030b200e41cc006a2013412010c60a0d03200e41c8006a2802002012470d03200e41056a200641a0036a41c00010c60a0d034101210e0c060b200e412c6a200641a0036a41c00010c60a0d014101210e0c050b200641e0036a41086a220c200641840e6a290200370300200641e0036a41106a220f2006418c0e6a290200370300200641e0036a41186a220b200641940e6a280200360200200620062902fc0d3703e00320062802f80d21092001427f2001290358221520107c221020102015541b370358200641a3046a200641f8026a41206a2802003600002006419b046a200641f8026a41186a29030037000020064193046a200641f8026a41106a2903003700002006418b046a200641f8026a41086a290300370000200620062903f8023700830420064190066a41386a200541386a220a29000037030020064190066a41306a200541306a221229000037030020064190066a41286a200541286a221329000037030020064190066a41206a200541206a221629000037030020064190066a41186a200541186a221729000037030020064190066a41106a200541106a221829000037030020064190066a41086a200541086a221929000037030020062005290000370390060240024020072f01ca11220e410a4b0d00200641d00b6a41086a2019290000370300200641d00b6a41106a2018290000370300200641d00b6a41186a2017290000370300200641d00b6a41206a2016290000370300200641d00b6a41286a2013290000370300200641d00b6a41306a2012290000370300200641d00b6a41386a200a290000370300200620052900003703d00b200641a80b6a41086a20064180046a41086a290000370300200641a80b6a41106a20064180046a41106a290000370300200641a80b6a41186a20064180046a41186a290000370300200641a80b6a411f6a220a20064180046a411f6a29000037000020062006290080043703a80b200641880b6a41186a200b280200360200200641880b6a41106a200f290300370300200641880b6a41086a200c290300370300200620062903e0033703880b200d41016a210f0240200d200e4f220b0d002014200f4105746a2014200d4105746a200e200d6b41057410c40a1a0b2014200d4105746a220c2009360000200c411c6a200641880b6a41186a280200360000200c41146a200641880b6a41106a290300370000200c410c6a200641880b6a41086a290300370000200c20062903880b370004200641d0066a41086a2209200641d00b6a41086a290300370300200641d0066a41106a2214200641d00b6a41106a290300370300200641d0066a41186a2212200641d00b6a41186a290300370300200641d0066a41206a2213200641d00b6a41206a290300370300200641d0066a41286a2216200641d00b6a41286a290300370300200641d0066a41306a2217200641d00b6a41306a290300370300200641d0066a41386a2218200641d00b6a41386a290300370300200620062903d00b3703d006200641c80a6a41086a2219200641a80b6a41086a290300370300200641c80a6a41106a221a200641a80b6a41106a290300370300200641c80a6a41186a221b200641a80b6a41186a290300370300200641c80a6a411f6a200a290000370000200620062903a80b3703c80a200641f80d6a200641900c6a41e40010c30a1a200741046a210c0240200b0d00200c200f41cc016c6a200c200d41cc016c6a200e200d6b41cc016c10c40a1a0b200c200d41cc016c6a220b41003a0000200b41196a2012290300370000200b41116a2014290300370000200b41096a2009290300370000200b20062903d006370001200b41216a2013290300370000200b41296a2016290300370000200b41316a2017290300370000200b41396a2018290300370000200b20062903c80a370041200b41c9006a2019290300370000200b41d1006a201a290300370000200b41d9006a201b290300370000200b41e0006a200641e70a6a290000370000200b41e8006a200641f80d6a41e40010c30a1a2007200e41016a3b01ca110c010b4105210e4100210a02400240200d41054f0d004104210e200d210f0c010b4105210f02400240200d417b6a0e020201000b200d41796a210f4101210a4106210e0c010b4100210f4101210a0b41ac141038220c450d0b200c41003b01ca11200c4100360200200c20072f01ca112213200e417f736a220b3b01ca112014200e4105746a220d2800002112200641a00b6a200d411c6a280000360200200641980b6a200d41146a290000370300200641900b6a200d410c6a2900003703002006200d2900043703880b200641900c6a200741046a2216200e41cc016c6a41cc0110c30a1a024002400240024002400240024002400240200b410c4f0d002013200e41016a220d6b200b470d01200c41cc116a2014200d4105746a200b41057410c30a1a200c41046a2016200d41cc016c6a200b41cc016c10c30a1a2007200e3b01ca11200641f80d6a41086a200641880b6a41086a220b290300370300200641f80d6a41106a200641880b6a41106a2214290300370300200641f80d6a41186a200641880b6a41186a2213280200360200200620062903880b3703f80d200641f80d6a411c6a200641900c6a41cc0110c30a1a200641900c6a200641f80d6a41e80110c30a1a200641c80a6a41086a221620064190066a41086a290300370300200641c80a6a41106a221720064190066a41106a290300370300200641c80a6a41186a221820064190066a41186a290300370300200641c80a6a41206a221920064190066a41206a290300370300200641c80a6a41286a221a20064190066a41286a290300370300200641c80a6a41306a221b20064190066a41306a290300370300200641c80a6a41386a221c20064190066a41386a29030037030020062006290390063703c80a200641a00a6a41086a221d20064180046a41086a290000370300200641a00a6a41106a221e20064180046a41106a290000370300200641a00a6a41186a221f20064180046a41186a290000370300200641a00a6a411f6a222020064180046a411f6a29000037000020062006290080043703a00a200c2007200a1b220d2f01ca11210a2013200641e0036a41186a2802003602002014200641e0036a41106a290300370300200b200641e0036a41086a290300370300200620062903e0033703880b200d41cc116a210e0240200f41016a2221200a4b22220d00200e20214105746a200e200f4105746a200a200f6b41057410c40a1a0b200e200f4105746a220e2009360000200e411c6a2013280200360000200e41146a2014290300370000200e410c6a200b290300370000200e20062903880b370004200641d00b6a41086a2016290300370300200641d00b6a41106a2017290300370300200641d00b6a41186a2018290300370300200641d00b6a41206a2019290300370300200641d00b6a41286a201a290300370300200641d00b6a41306a201b290300370300200641d00b6a41386a201c290300370300200620062903c80a3703d00b200641a80b6a41086a201d290300370300200641a80b6a41106a201e290300370300200641a80b6a41186a201f290300370300200641a80b6a411f6a2020290000370000200620062903a00a3703a80b200641f80d6a200641d0066a41e40010c30a1a200d41046a210e024020220d00200e202141cc016c6a200e200f41cc016c6a200a200f6b41cc016c10c40a1a0b41002113200e200f41cc016c6a220b41003a0000200b41196a200641d00b6a41186a2217290300370000200b41116a200641d00b6a41106a2218290300370000200b41096a200641d00b6a41086a2219290300370000200b20062903d00b370001200b41216a200641f00b6a290300370000200b41296a200641f80b6a290300370000200b41316a200641800c6a290300370000200b41396a200641880c6a290300370000200b20062903a80b370041200b41c9006a200641a80b6a41086a290300370000200b41d1006a200641a80b6a41106a290300370000200b41d9006a200641a80b6a41186a290300370000200b41e0006a200641c70b6a290000370000200b41e8006a200641f80d6a41e40010c30a1a200d200a41016a3b01ca11200641b8086a200641900c6a41e80110c30a1a200641d0066a200641b8086a41e80110c30a1a02402007280200220e450d00200641f80d6a411c6a2122200641d0066a411c6a212141002113200c211a2012211b034020072f01c81121072017200641d0066a41186a2802003602002018200641d0066a41106a2902003703002019200641d0066a41086a290200370300200620062902d0063703d00b200641b8086a202141cc0110c30a1a0240200e220a2f01ca112216410a4b0d00200641a00a6a41186a220c200641d0066a41186a280200360200200641a00a6a41106a220f200641d0066a41106a290200370300200641a00a6a41086a2209200641d0066a41086a290200370300200620062902d0063703a00a200a41cc116a210e0240201620074d220d0d00200e20074105746a221441206a2014201620076b41057410c40a1a0b200e20074105746a220e201b360000200e20062903a00a370004200e410c6a2009290300370000200e41146a200f290300370000200e411c6a200c280200360000200641f80d6a202141cc0110c30a1a200741016a210e200a41046a210c0240200d0d00200c200e41cc016c6a200c200741cc016c6a201620076b41cc016c10c40a1a0b201641016a210f200c200741cc016c6a200641f80d6a41cc0110c30a1a200a41ac146a210c201641026a21090240200d0d002007410274200c6a41086a200c200e4102746a201620076b41027410c40a1a0b200a200f3b01ca11200c200e4102746a201a360200200e20094f0d0c201641016a210f200a200e417f6a220e4102746a41b0146a210d0340200d280200220c200e41016a220e3b01c811200c200a360200200d41046a210d200f200e470d000c0d0b0b410021144104210e024020074105490d002007210e024002402007417b6a0e020201000b200741796a2107410121144106210e0c010b41002107410121144105210e0b41dc141038220c450d16200c41003b01ca11200c4100360200200c200a2f01ca11221c200e417f736a220f3b01ca11200641880b6a41086a221d200a41cc116a221e200e4105746a220d410c6a290000370300200641880b6a41106a221f200d41146a290000370300200641880b6a41186a2220200d411c6a2800003602002006200d2900043703880b200d2800002112200641900c6a200a41046a220d200e41cc016c6a41cc0110c30a1a200f410c4f0d04201c200e41016a22096b200f470d05200c41cc116a201e20094105746a200f41057410c30a1a200c41046a200d200941cc016c6a200f41cc016c10c30a1a200a200e3b01ca11200641f80d6a41086a201d290300370300200641f80d6a41106a201f290300370300200641f80d6a41186a2020280200360200200620062903880b3703f80d2022200641900c6a41cc0110c30a1a200c2f01ca11220d41016a210f200d410c4f0d062016200e6b220e200f470d07201341016a2113200c41ac146a200a20094102746a41ac146a200e41027410c30a1a4100210e02400340200c200e4102746a41ac146a280200220f200e3b01c811200f200c360200200e200d4f0d01200e200e200d496a220e200d4d0d000b0b200641900c6a200641f80d6a41e80110c30a1a200c200a20141b220f2f01ca11210e200641a00a6a41186a22092017280200360200200641a00a6a41106a22162018290300370300200641a00a6a41086a221c2019290300370300200620062903d00b3703a00a200f41cc116a210d0240200741016a2214200e4b221d0d00200d20144105746a200d20074105746a200e20076b41057410c40a1a0b200d20074105746a220d201b360000200d20062903a00a370004200d410c6a201c290300370000200d41146a2016290300370000200d411c6a2009280200360000200641f80d6a200641b8086a41cc0110c30a1a200f41046a210d0240201d0d00200d201441cc016c6a200d200741cc016c6a200e20076b41cc016c10c40a1a0b200e41016a2109200d200741cc016c6a200641f80d6a41cc0110c30a1a200f41ac146a210d0240200741026a221b200e41026a22164f0d00200d201b4102746a200d20144102746a200e20076b41027410c40a1a0b200d20144102746a201a360200200f20093b01ca110240201420164f0d00200f20074102746a41b0146a210e0340200e280200220d200741016a22073b01c811200d200f360200200e41046a210e20092007470d000b0b200641d0066a200641900c6a41e80110c30a1a200a2107200c211a2012211b200a280200220e0d000b0b200641a8046a200641d0066a41e80110c30a1a2001280264220d450d062001280260210f41dc141038220e450d14200e200d3602ac14200e41003b01ca11200e41003602002001200e360264200d41003b01c811200d200e3602002001200f41016a360260200f2013470d07200e2f01ca11220f410b4f0d08200e200f41016a22073b01ca11200e200f4105746a220d41cc116a2012360000200d41d0116a20062902a804370000200d41d8116a200641b0046a290200370000200d41e0116a200641b8046a290200370000200d41e8116a200641c0046a280200360000200e200f41cc016c6a41046a200641c4046a41cc0110c30a1a200e41ac146a20074102746a200c360200200c20073b01c811200c200e360200200141e8006a220e200e28020041016a3602000c0c0b200b410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200f410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200f410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b200141e8006a220e200e28020041016a3602000c020b200e41f0006a200c412010c60a0d00200e41ec006a2802002012470d00200e4190016a200641a0036a41c00010c60a0d004101210e0c030b200d4101460d01200641f80d6a41186a220d4200370300200641f80d6a41106a220c4200370300200641f80d6a41086a220f4200370300200642003703f80d200d200e41e4006a2207290000370300200c200e41dc006a2209290000370300200f200e41d4006a220a2900003703002006200e41cc006a22142900003703f80d200e41c8006a2802002112200e41056a22132900002110200e41156a2900002115200e411d6a2900002123200e41256a2900002124200e412d6a2900002125200e41356a2900002126200e413d6a2900002127200641b8086a41086a220b200e410d6a290000370300200641b8086a41386a22162027370300200641b8086a41306a22172026370300200641b8086a41286a22182025370300200641b8086a41206a22192024370300200641b8086a41186a221a2023370300200641b8086a41106a221b2015370300200620103703b808200641a8046a41086a221c200f290300370300200641a8046a41106a221d200c290300370300200641a8046a41186a221e200d290300370300200620062903f80d3703a804200641f80d6a41206a200641f8026a41206a280200360200200d200641f8026a41186a290300370300200c200641f8026a41106a290300370300200f200641f8026a41086a290300370300200641f80d6a412c6a200541086a290000370200200641f80d6a41346a200541106a290000370200200641f80d6a413c6a200541186a290000370200200641f80d6a41c4006a200541206a290000370200200641f80d6a41cc006a200541286a290000370200200641f80d6a41d4006a200541306a290000370200200641f80d6a41dc006a200541386a290000370200200620062903f8023703f80d2006200529000037029c0e200641d0066a41386a220d2016290300370300200641d0066a41306a220c2017290300370300200641d0066a41286a220f2018290300370300200641d0066a41206a22162019290300370300200641d0066a41186a2217201a290300370300200641d0066a41106a2218201b290300370300200641d0066a41086a2219200b290300370300200620062903b8083703d006200641900c6a200641f80d6a41e40010c30a1a200e41046a220b41013a0000200e41086a2012360000200e41076a200641d20b6a2d00003a0000201320062f00d00b3b0000200e410c6a20062903a804370000200e41146a201c290300370000200e411c6a201d290300370000200e41246a201e290300370000200e412c6a20062903d006370000200e41346a2019290300370000200e413c6a2018290300370000200e41c4006a2017290300370000200a200f290300370000201420162903003700002009200c2903003700002007200d290300370000200e41ec006a200641900c6a41e40010c30a1a0b200b0d020b4100210e0b200041106a200641306a41e40010c30a1a2000200e3a00f901200041f8016a41013a000020004200370300200041f0016a200641286a290300370300200041e8016a200641106a41106a290300370300200041e0016a200641186a290300370300200041d8016a20062903103703000c010b2001290300212502400240200b2d00004101470d00200141306a2011410174410172107d1a200641900c6a41086a220d200341086a290200370300200641900c6a41106a220c200341106a290200370300200641900c6a41186a220f200341186a290200370300200641900c6a41206a2216200341206a280200360200200641f80d6a41086a2207200541086a290000370300200641f80d6a41106a2209200541106a290000370300200641f80d6a41186a220a200541186a290000370300200641f80d6a41206a2214200541206a290000370300200641f80d6a41286a2212200541286a290000370300200641f80d6a41306a2202200541306a290000370300200641f80d6a41386a2213200541386a290000370300200620032902003703900c200620052900003703f80d200641b8086a41186a2203200441186a2217290000370300200641b8086a41106a2218200441106a2219290000370300200641b8086a41086a221a200441086a221b290000370300200620042900003703b808024020014198016a280200220520014194016a280200470d0020014190016a200510f20220012802980121050b20012802900120054188016c6a220e4101360200200e20062903900c370204200e20062903f80d370228200e410c6a200d290300370200200e41146a200c290300370200200e411c6a200f290300370200200e41246a2016280200360200200e41306a2007290300370200200e41386a2009290300370200200e41c0006a200a290300370200200e41c8006a2014290300370200200e41d0006a2012290300370200200e41d8006a2002290300370200200e41e0006a2013290300370200200e4180016a2003290300370200200e41f8006a2018290300370200200e41f0006a201a290300370200200e20062903b8083702682001200541016a3602980120064198016a41186a201729000037030020064198016a41106a201929000037030020064198016a41086a201b2900003703002006200429000037039801200d200b41106a290000370300200c200b41186a290000370300200f200b41206a2900003703002006200b2900083703900c200b28020421032014200b41c8006a290000370300200a200b41c0006a2900003703002009200b41386a2900003703002007200b41306a290000370300200b29002821102012200b41d0006a2900003703002002200b41d8006a2900003703002013200b41e0006a290000370300200620103703f80d200b2802682116200641b8016a41386a200b41c4016a290000370300200641b8016a41306a200b41bc016a290000370300200641b8016a41286a200b41b4016a290000370300200641b8016a41086a200b4194016a290000370300200641b8016a41106a200b419c016a290000370300200641b8016a41186a200b41a4016a290000370300200641b8016a41206a200b41ac016a2900003703002006200b29008c013703b801200641d8026a41186a200f290300370300200641d8026a41106a200c290300370300200641d8026a41086a200d290300370300200620062903900c3703d80220064198026a41386a201329030037030020064198026a41306a200229030037030020064198026a41286a201229030037030020064198026a41206a201429030037030020064198026a41186a200a29030037030020064198026a41106a200929030037030020064198026a41086a2007290300370300200620062903f80d37039802200641f8016a41186a200b4184016a290000370300200641f8016a41106a200b41fc006a290000370300200641f8016a41086a200b41f4006a2900003703002006200b29006c3703f801420121260c010b20064190066a41186a2228200b41e0006a220e29000037030020064190066a41106a2229200b41d8006a220d29000037030020064190066a41086a222a200b41d0006a220c2900003703002006200b29004837039006200b2802442117200641f80d6a41186a222b200e290000370300200641f80d6a41106a222c200d290000370300200641f80d6a41086a222d200c2900003703002006200b2900483703f80d20064180046a200141a0016a2212200641f80d6a201710f3020240200628028004222e450d00200628028404212f024002400240024002400240024002400240024020064180046a41086a28020022300d00200641a8046a41186a20064190066a41186a220e290300370300200641a8046a41106a20064190066a41106a220c290300370300200641a8046a41086a20064190066a41086a220f29030037030020062006290390063703a804200641900c6a41186a200141d4016a2207290000370300200641900c6a41106a200141cc016a220b290000370300200641900c6a41086a200141c4016a22092900003703002006200141bc016a220d2900003703900c200641f80d6a41186a220a200e290300370300200641f80d6a41106a2214200c290300370300200641f80d6a41086a220c200f29030037030020062006290390063703f80d200641b8086a2002200641900c6a200641f80d6a10f40220062802b808220e450d0520062902bc0821102006200e3602c80a200620103702cc0a200a20072900003703002014200b290000370300200c20092900003703002006200141bc016a2900003703f80d02402010422088a7220f2010a7470d00200641c80a6a200f410110f50220062802c80a210e20062802d00a210f0b200e200f4105746a220c20062903f80d370000200c41186a200641f80d6a41186a290300370000200c41106a200641f80d6a41106a290300370000200c41086a200641f80d6a41086a2903003700002006200f41016a220a3602d00a200e41606a210c200e200a4105746a2109417f210f034002400240200e450d002009200e460d00200e2107200d210b200e41206a210e0c010b4100210b200d21074100210e200d450d060b200f41016a210f200c41206a210c200b210d2012200710f6022207450d000b200641f80d6a41186a220d200641a8046a41186a290300370300200641f80d6a41106a220b200641a8046a41106a290300370300200641f80d6a41086a2209200641a8046a41086a290300370300200620062903a8043703f80d02402007280218220e200741146a280200470d00200741106a200e410110f5022007280218210e0b2007280210200e4105746a220e20062903f80d370000200e41186a200d290300370000200e41106a200b290300370000200e41086a20092903003700002007200728021841016a360218200a200f4d0d03200641d0066a41186a220e4200370300200641d0066a41106a220d4200370300200641d0066a41086a22074200370300200642003703d0062007200c41086a290000370300200d200c41106a290000370300200e200c41186a2900003703002006200c2900003703d0060240200a200f41016a220e490d002006200e3602d00a0b200641b8086a41186a200641a8046a41186a290300370300200641b8086a41106a200641a8046a41106a290300370300200641b8086a41086a200641a8046a41086a290300370300200620062903a8043703b808200641840e6a200641c80a6a41086a280200360200200641980e6a42003703002006418c0e6a4200370200200620062903c80a3702fc0d200641002802fcad493602940e2006410028029cde4a3602880e200620173602f80d200641900c6a2012200641b8086a200641f80d6a10f702024020062802940c220e450d00024020062802980c41ffffff3f71450d00200e10390b0240200641a40c6a28020041ffffff3f71450d00200641a00c6a28020010390b200641b00c6a28020041ffffffff0171450d00200641ac0c6a28020010390b200141ac016a21140240200141b0016a2802002207450d0020012802ac012109034020072f0106220a410574210b4100210e41e802210c4100210d024002400340200b200e460d01200641d0066a2007200e6a41086a412010c60a220f450d02200c41046a210c200e41206a210e200d41016a210d200f417f4a0d000b200d417f6a210a0b2009450d022009417f6a21092007200a4102746a41e8026a28020021070c010b0b200641003a00b808024002402009450d002007200c6a280200210e024020094101460d004101210d0340200e200e2f01064102746a41e8026a280200210e2009200d41016a220d470d000b0b200e2f0106210d200641003602900c2006200d417f6a4100200d1b3602980c2006200e4100200d1b3602940c200641f80d6a200641900c6a200641b8086a10e401200641d00b6a41186a200641f80d6a41186a290300370300200641d00b6a41106a200641f80d6a41106a290300370300200641d00b6a41086a200641f80d6a41086a290300370300200620062903f80d3703d00b20062802980e210f02400240200641a00e6a280200220c2006419c0e6a280200220d2f01064f0d00200d210e0c010b03400240200d280200220e0d004100210e0c020b200f41016a210f200d2f0104210c200e210d200c200e2f01064f0d000b0b200e200c4105746a220d41206a200641d00b6a41186a290300370000200d41186a200641d00b6a41106a290300370000200d41106a200641d00b6a41086a290300370000200d41086a20062903d00b370000200f450d01200f417f6a220d450d01200c410274200e6a41ec026a280200210e0340200e2802e802210e200d417f6a220d0d000c020b0b2006200d3602980c200620073602940c200641003602900c200641f80d6a200641900c6a200641b8086a10e4010b200141b4016a220e200e280200417f6a36020020062d00b808450d0020012802b001220e450d032014280200220d450d022001200e2802e802220c3602b0012001200d417f6a3602ac01200c4100360200200e10390b200641f80d6a41186a200641a8046a41186a290300370300200641f80d6a41106a200641a8046a41106a290300370300200641f80d6a41086a200641a8046a41086a290300370300200620062903a8043703f80d2014200641f80d6a10f8021a0c090b200641a8046a41186a20064190066a41186a290300370300200641a8046a41106a20064190066a41106a290300370300200641a8046a41086a20064190066a41086a29030037030020062006290390063703a804202e20304105746a213141002802fcad492132200641c10e6a2113200641a10e6a2109200641f80d6a411c6a2114200641f80d6a4104722133410028029cde4a2134200641c40e6a210b4102210d202e21070240024002400340200641d00b6a41186a200741186a220c290000370300200641d00b6a41106a200741106a220a290000370300200641d00b6a41086a200741086a2216290000370300200620072900003703d00b200641f80d6a41086a221e200641a0036a41086a221f290300370300200620062903a0033703f80d2006200e3602900e2006200236028c0e2006200f3602880e201420062903a80b370200201441086a2220200641a80b6a41086a22212802003602002006200d3a00a00e200920062900d006370000200941086a2219200641d0066a41086a2222290000370000200941106a221a200641d0066a41106a2235290000370000200941186a221b200641d0066a41186a2236290000370000201341026a2237200641a00a6a41026a22382d00003a0000201320062f00a00a3b0000200b41186a2239200c290000370000200b41106a223a200a290000370000200b41086a223b2016290000370000200b20072900003700002012200b10f602220a450d03200a280204213c02400240200a410c6a221d28020022160d004100213d0c010b200641900c6a41186a2016410574203c6a41606a220c41186a290000370300200641900c6a41106a200c41106a290000370300200641900c6a41086a200c41086a2900003703002006200c2900003703900c4101213d0b200a280200221c2017490d02201c20176b221820164b0d01201d2018360200024002400240200d41ff01714102470d00203c20164105746a203c20184105746a220d6b220c417f4c0d154101210e0240200c450d00200c1038220e450d170b41002102200641003602c0082006200e3602b8082006200c4105763602bc084100210c024020182016460d00201720166a410574201c4105746b210f4100210c0340200d41086a2900002110200d41106a2900002115200d2900002123200e41186a200d41186a290000370000200e41106a2015370000200e41086a2010370000200e2023370000200c41016a210c200e41206a210e200d41206a210d200f41606a220f0d000b0b203320062903b808370200200920062903900c370000203341086a200c3602002019200641900c6a41086a290300370000201a200641900c6a41106a290300370000201b200641900c6a41186a290300370000200620173602f80d2006203d3a00a00e200642003703980e200620323602940e2006420037028c0e200620343602880e200641c80a6a41186a2039290000370300200641c80a6a41106a203a290000370300200641c80a6a41086a203b2900003703002006200b2900003703c80a0c010b200641c80a6a41186a2039290000370300200641c80a6a41106a203a290000370300200641c80a6a41086a203b2900003703002006200b2900003703c80a200e2002470d010b200641f80d6a41106a2002410110f50220062802880e210f20062802900e210e0b200f200e4105746a220d20062903c80a370000200d41186a200641c80a6a41186a290300370000200d41106a200641c80a6a41106a290300370000200d41086a200641c80a6a41086a2903003700002006200e41016a3602900e2014200a411c6a107f201f201e29030037030020212020280200360200202220192900003703002035201a2900003703002036201b290000370300200620062903f80d3703a003200620142902003703a80b200620092900003703d00620062802880e210f200628028c0e210220062802900e210e20062d00a00e210d203820372d00003a0000200620132f00003b01a00a200741206a22072031470d000b0240202f41ffffff3f71450d00202e10390b0240200d0e030b000c000b200641900c6a41186a200641d0066a41186a290300370300200641900c6a41106a200641d0066a41106a290300370300200641900c6a41086a200641d0066a41086a290300370300200620062903d0063703900c02402012200641900c6a10f6022217450d000240201741186a28020022130d004100210a0c0b0b200e4105742116201728021021144100210a41002109034002400240200a0d000340201420094105746a210b2016210d200f210c02400340200d450d01200d41606a210d200c200b412010c60a2107200c41206a210c20070d000c040b0b2013200941016a22094b0d000b4100210a0c0d0b0340201420094105746a210b2016210d200f210c02400340200d450d01200d41606a210d200c200b412010c60a2107200c41206a210c20070d000c030b0b20142009200a6b4105746a220d200b290000370000200d41186a200b41186a290000370000200d41106a200b41106a290000370000200d41086a200b41086a2900003700002013200941016a22094d0d0c0c000b0b200a41016a210a2013200941016a22094b0d000c0a0b0b418099c600412d41b099c6001065000b20182016418898c100105f000b41b898c600413541f098c6001035000b41f097c600413741a898c6001065000b41c5f2ca00412141e8f2ca001035000b41b4fcca00412b418cfeca001035000b200f200a41e097c600103c000b41fc96c60041d30041d097c6001065000b0240202f41ffffff3f71450d00202e10390b200042023703000c060b0240200a0d004100210a0c010b20142009200a6b4105746a201420094105746a201320096b41057410c40a1a0b201741186a220c2013200a6b220d360200200641f80d6a41186a2207200641a8046a41186a290300370300200641f80d6a41106a220b200641a8046a41106a290300370300200641f80d6a41086a2209200641a8046a41086a290300370300200620062903a8043703f80d0240200d201741146a280200470d00201741106a200d410110f502200c280200210d0b2017280210200d4105746a220d20062903f80d370000200d41186a2007290300370000200d41106a200b290300370000200d41086a2009290300370000200c200c28020041016a3602000b200641b8086a41186a200641a8046a41186a290300370300200641b8086a41106a200641a8046a41106a290300370300200641b8086a41086a200641a8046a41086a290300370300200620062903a8043703b808200641f80d6a41086a200641a0036a41086a290300370300200641f80d6a41186a200e360200200641f80d6a41146a2002360200200620062903a0033703f80d2006200f3602880e2006419c0e6a200641a80b6a41086a280200360200200620062903a80b3702940e200641900c6a2012200641b8086a200641f80d6a10f70220062802940c220e450d00200e20062802980c10f902200641900c6a41106a280200200641900c6a41146a28020010f902200641ac0c6a10fa0241c099c60041d20041949ac6001035000b20300d00202f41ffffff3f71450d00202e10390b202b2028290300370300202c2029290300370300202d202a29030037030020062006290390063703f80d024002402012200641f80d6a10f602220e450d002011410174410172210c0340200e411c6a200c107d1a200e28020c220d450d02200641f80d6a41086a200d410574200e2802046a41606a220e41086a290000370300200641f80d6a41106a200e41106a290000370300200641f80d6a41186a200e41186a2900003703002006200e2900003703f80d2012200641f80d6a10f602220e0d000b0b41a49ac60041c00041e49ac6001065000b200641900c6a41086a220c200341086a290200370300200641900c6a41106a220f200341106a290200370300200641900c6a41186a2207200341186a290200370300200641900c6a41206a220b200341206a280200360200200641f80d6a41086a2209200541086a290000370300200641f80d6a41106a220a200541106a290000370300200641f80d6a41186a2214200541186a290000370300200641f80d6a41206a2212200541206a290000370300200641f80d6a41286a2202200541286a290000370300200641f80d6a41306a2213200541306a290000370300200641f80d6a41386a2216200541386a290000370300200620032902003703900c200620052900003703f80d200641b8086a41186a2205200441186a290000370300200641b8086a41106a2203200441106a290000370300200641b8086a41086a2217200441086a290000370300200620042900003703b808024020014198016a280200220d20014194016a280200470d0020014190016a200d10f202200128029801210d0b200128029001200d4188016c6a220e4101360200200e20062903900c370204200e20062903f80d370228200e410c6a200c290300370200200e41146a200f290300370200200e411c6a2007290300370200200e41246a200b280200360200200e41306a2009290300370200200e41386a200a290300370200200e41c0006a2014290300370200200e41c8006a2012290300370200200e41d0006a2002290300370200200e41d8006a2013290300370200200e41e0006a2016290300370200200e4180016a2005290300370200200e41f8006a2003290300370200200e41f0006a2017290300370200200e20062903b8083702682001200d41016a36029801420021260b200620013602e0030240200129034020012903082210540d0020012802dc014101470d0020014180026a2802002107200641a80b6a41186a200141f8016a290000370300200641a80b6a41106a200141f0016a290000370300200641a80b6a41086a200141e8016a2900003703002006200141e0016a220e2900003703a80b200620073602880b200121090240200129035822152010540d00200641900c6a41186a220b200e41186a290000370300200641900c6a41106a2205200e41106a290000370300200641900c6a41086a2209200e41086a2900003703002006200e2900003703900c200141a0016a210f41002802fcad49210202400340200641f80d6a41186a200b290300370300200641f80d6a41106a2005290300370300200641f80d6a41086a2009290300370300200620062903900c3703f80d200641d0066a200f200641f80d6a200710f302024002400240024020062802d0062204450d004100211220062802d40621140240024020062802d806220a450d00200642003702bc08200620023602b808200a410574210d2004210e03400240200f200e10f602220c0d0041c096c600411a41dc96c6001065000b200e41206a210e200641b8086a200c411c6a107f200d41606a220d0d000b02402008200641b8086a10fb022010540d00200641f80d6a41186a200641900c6a41186a290300370300200641f80d6a41106a200641900c6a41106a290300370300200641f80d6a41086a200641900c6a41086a290300370300200620062903900c3703f80d024020062802bc0841ffffffff0171450d0020062802b80810390b410121120c010b200f200a41057420046a41606a10f602220e450d010240200e28020c200e28020020076b220d4d0d002009200e280204200d4105746a220e41086a2900003703002005200e41106a290000370300200b200e41186a2900003703002006200e2900003703900c024020062802bc0841ffffffff0171450d0020062802b80810390b201441ffffff3f71450d06200410392007417f6a21070c070b20062802bc0841ffffffff0171450d0020062802b80810390b201441ffffff3f71450d02200410390c020b41c096c600411a41ec96c6001065000b200f200641900c6a10f602220e450d0402402008200e411c6a10fb022010540d00200641f80d6a41186a200641900c6a41186a290300370300200641f80d6a41106a200641900c6a41106a290300370300200641f80d6a41086a200641900c6a41086a290300370300200620062903900c3703f80d410121120c010b200e28020c0d01410021120b20062802e003220920123602ac02200941b0026a20062903f80d370200200941d0026a2007360200200941b8026a200641800e6a290300370200200941c0026a200641880e6a290300370200200941c8026a200641900e6a2903003702000c040b2009200e280204220d41086a2900003703002005200d41106a290000370300200b200d41186a2900003703002006200d2900003703900c200e28020021070b2007417f6a21070c000b0b418896c600412541b096c6001065000b200141106a220e2903002123200641d80e6a428180808010370300200641d00e6a42808080808004370300200641cc0e6a200141306a280200220d200141386a2802004103746a360200200642003703a00e200642003703f80d2006200d3602c80e200641f80d6a200810fc022124200620083602f006200620153703d00620064200200e29030022272009290358223e7d223f203f2027561b223f3703e006200620103703e806200642004200202320107d222720272023561b222320247d222420242023561b22233703d8060240024002400240203e2010540d00200641900c6a41186a220b200641a80b6a41186a290300370300200641900c6a41106a2205200641a80b6a41106a290300370300200641900c6a41086a2201200641a80b6a41086a290300370300200620062903a80b3703900c200941a0016a210f41002802fcad49210220062802880b2107024002400240024002400340200641f80d6a41186a200b290300370300200641f80d6a41106a2005290300370300200641f80d6a41086a2001290300370300200620062903900c3703f80d200641a8046a200f200641f80d6a200710f302024002400240024020062802a8042204450d004100211220062802ac0421140240024020062802b004220a450d00200642003702bc08200620023602b808200a410574210d2004210e03400240200f200e10f602220c0d0041c096c600411a41dc96c6001065000b200e41206a210e200641b8086a200c411c6a107f200d41606a220d0d000b0240427f427f2008200641b8086a10fb022224203f7c222720272024541b222720234200201520247d222420242015561b222420242023561b7c222420242027541b2010540d00200641f80d6a41186a200641900c6a41186a290300370300200641f80d6a41106a200641900c6a41106a290300370300200641f80d6a41086a200641900c6a41086a290300370300200620062903900c3703f80d024020062802bc0841ffffffff0171450d0020062802b80810390b410121120c010b200f200a41057420046a41606a10f602220e450d010240200e28020c200e28020020076b220d4d0d002001200e280204200d4105746a220e41086a2900003703002005200e41106a290000370300200b200e41186a2900003703002006200e2900003703900c024020062802bc0841ffffffff0171450d0020062802b80810390b201441ffffff3f71450d06200410392007417f6a21070c070b20062802bc0841ffffffff0171450d0020062802b80810390b201441ffffff3f71450d02200410390c020b41c096c600411a41ec96c6001065000b200f200641900c6a10f602220e450d080240427f427f2008200e411c6a10fb022224203f7c222720272024541b222720234200201520247d222420242015561b222420242023561b7c222420242027541b2010540d00200641f80d6a41186a200641900c6a41186a290300370300200641f80d6a41106a200641900c6a41106a290300370300200641f80d6a41086a200641900c6a41086a290300370300200620062903900c3703f80d410121120c010b200e28020c0d01410021120b200920123602d402200941d8026a220e20062903f80d370200200941f8026a2007360200200941e0026a200641f80d6a41086a290300370200200941e8026a200641f80d6a41106a290300370200200941f0026a200641f80d6a41186a2903003702004100210d2012450d0b200641f80d6a41146a200641a80b6a41086a290300370200200641f80d6a411c6a200641a80b6a41106a290300370200200641f80d6a41246a200641a80b6a41186a290300370200200620062903a80b3702840e2006200641880b6a3602800e2006200641d0066a3602fc0d2006200641e0036a3602f80d200641a0036a41186a200e41186a290000370300200641a0036a41106a200e41106a290000370300200641a0036a41086a200e41086a2900003703002006200e2900003703a0034101210d200641a0036a200641f80d6a410c6a2217412010c60a0d0a20062802e003210d200641b8086a41246a2007360200200641b8086a411c6a200e41186a220c290200370200200641b8086a41146a200e41106a220f290200370200200641b8086a410c6a200e41086a2204290200370200200641013602b8082006200e2902003702bc0820062903d006211020062903d806211520062903e006212420062903e806212720062802f0062112200641a8046a41186a220b200c290000370300200641a8046a41106a2205200f290000370300200641a8046a41086a220120042900003703002006200e2900003703a804200641900c6a41186a200c290000370300200641900c6a41106a200f290000370300200641900c6a41086a20042900003703002006200e2900003703900c200641c80a6a200d41a0016a220c200641900c6a200710f30220062802c80a220e0d03200641d00b6a41186a200b290300370300200641d00b6a41106a2005290300370300200641d00b6a41086a2001290300370300200620062903a8043703d00b4100210f0c040b2001200e280204220d41086a2900003703002005200d41106a290000370300200b200d41186a2900003703002006200d2900003703900c200e28020021070b2007417f6a21070c000b0b02400240200641c80a6a41086a2802000d004102210f0c010b200c200e10f602220f450d03200f28020c2204450d02200641d00b6a41086a2004410574200f2802046a41606a220f41086a290000370300200641d00b6a41106a200f41106a290000370300200641d00b6a41186a200f41186a2900003703002006200f2900003703d00b4101210f0b20062802cc0a41ffffff3f71450d00200e10390b02400240200f4102470d00200641a80c6a200d41d4016a290000370300200641a00c6a200d41cc016a290000370300200641980c6a200d41c4016a2900003703002006200d41bc016a2900003703900c4100210f0c010b200641900c6a41186a200641d00b6a41186a290300370300200641900c6a41106a200641d00b6a41106a290300370300200641900c6a41086a200641d00b6a41086a290300370300200620062903d00b3703900c0b20064190066a41186a200641900c6a41186a29030037030020064190066a41106a200641900c6a41106a29030037030020064190066a41086a200641900c6a41086a290300370300200620062903900c370390060240200c20064190066a10f602220d450d000240427f427f2012200d411c6a10fb02222320247c223f203f2023541b223f20154200201020237d222320232010561b222320232015561b7c22232023203f541b2027540d00200d41106a210a200d2802182204450d062007417f732101200d280210220e20044105746a2105200641b8086a4104722109200d211403400240024002400240200f41ff01710d000340200641900c6a41186a220f200e41186a290000370300200641900c6a41106a2204200e41106a290000370300200641900c6a41086a220b200e41086a2900003703002006200e2900003703900c200c200e10f602220d450d03200641d00b6a41186a200f290300370300200641d00b6a41106a2004290300370300200641d00b6a41086a200b290300370300200620062903900c3703d00b427f427f2012200d411c6a10fb02222320247c223f203f2023541b223f20154200201020237d222320232010561b222320232015561b7c22232023203f541b20275a0d042005200e41206a220e470d000b4100210f0c010b0340200641900c6a41186a220f200e41186a290000370300200641900c6a41106a2204200e41106a290000370300200641900c6a41086a220b200e41086a2900003703002006200e2900003703900c200c200e10f602220d450d02200641d00b6a41186a200f290300370300200641d00b6a41106a2004290300370300200641d00b6a41086a200b290300370300200620062903900c3703d00b0240200d280200220f20074d0d00200d28020c200f20016a220f4d0d00200d280204200f4105746a2009412010c60a0d00427f427f2012200d411c6a10fb02222320247c223f203f2023541b223f20154200201020237d222320232010561b222320232015561b7c22232023203f541b20275a0d040b2005200e41206a220e470d000b4101210f0b2014210d0c090b41e694c6004135419c95c6001065000b20064190066a41186a200641d00b6a41186a29030037030020064190066a41106a200641d00b6a41106a29030037030020064190066a41086a200641d00b6a41086a290300370300200620062903d00b37039006200d41106a210a200d280210220e200d28021822044105746a21054100210f200d211420040d000c070b0b4101210d0c060b41e694c6004135419c95c6001065000b41ac95c600413c41e895c6001065000b41e694c6004135419c95c6001065000b418896c600412541b096c6001065000b200941013602d402200941d8026a20062903a80b370000200941f8026a20062802880b360200200941e0026a200641b00b6a290300370000200941e8026a200641b80b6a290300370000200941f0026a200641c00b6a2903003700000c030b200641c80a6a41186a20064190066a41186a290300370300200641c80a6a41106a20064190066a41106a290300370300200641c80a6a41086a20064190066a41086a29030037030020062006290390063703c80a02400240200f450d00200641900c6a41206a200641b8086a41206a290300370300200641900c6a41186a200641b8086a41186a290300370300200641900c6a41106a200641b8086a41106a290300370300200641900c6a41086a200641b8086a41086a290300370300200620062903b8083703900c0c010b200641003602900c0b02400240024002400240200a2802082214450d00200a28020022022014410574220e6a2119200e41606a2107200641b40c6a2802002204417f732101200641900c6a410472210a20062802900c220941014721052002210e0340200c200e10f602220f450d0320050d020240200f280200220b20044d0d00200f28020c200b20016a220b4d0d00200f280204200b4105746a200a412010c60a450d030b200e41206a210e200741606a22074160470d000b0b4100211b41002802ccdd4a211a410021180c030b410410382213450d0a2013200f36020020064281808080103702ac04200620133602a804024020070d00410121180c020b200e41c0006a210e20094101472105024002400340200c200e41606a10f602220f450d0220050d010240200f280200220b20044d0d00200f28020c200b20016a220b4d0d00200f280204200b4105746a200a412010c60a450d020b200e41206a210e200741606a22070d000b410121180c030b200220144105746a210b41012107410121180340024020182007470d00200641a8046a200710b70120062802a80421130b201320184102746a200f3602002006201841016a22183602b004200e2019460d03024002400340200c200e10f602220f450d0120094101470d020240200f280200220720044d0d00200f28020c200720016a22074d0d00200f28020420074105746a200a412010c60a450d030b200b200e41206a220e470d000c060b0b4184f4c500412f41b4f4c5001065000b200e41206a210e20062802ac0421070c000b0b4184f4c500412f41b4f4c5001065000b4184f4c500412f41b4f4c5001065000b20062802ac0441ffffffff0371211b20062802a804211a0b2018ad422c7e2223422088a70d062023a7220e417f4c0d06200d280200211902400240200e0d00410421040c010b200e10382204450d080b410021092006410036028003200620043602f8022006200e412c6e3602fc0241201038220c450d07200c20062903c80a370000200c41186a200641c80a6a41186a290300370000200c41106a200641c80a6a41106a290300370000200c41086a200641c80a6a41086a2903003700002006428180808010370284042006200c36028004024002402018410274220e0d004101210f0c010b201a200e6a2114200641a8046a410472211e2019210d4101211c0340200d211d201c20196a220a417f73210241002109201a210502400340024020052802002201280200220e200a4d0d002001410c6a280200200e20026a220e4d0d002001280204200e4105746a21074100210e024002402009450d002009210c2009210d034002400240417f41012004200c410176200e6a220c412c6c220b6a2007412010c60a220f4100481b4100200f1b220f4101470d00200c210d0c010b200f41ff017141ff01470d03200c41016a210e0b200d200e6b210c200d200e4b0d000b0b200641a8046a41186a220b200741186a290000370300200641a8046a41106a2201200741106a290000370300200641a8046a41086a2213200741086a290000370300200620072900003703a8042005280200220f41246a280200220c41ffffffff0171200c470d0c200c410374220d417f4c0d0c200f28021c210f02400240200d0d00410821070c010b200d10382207450d0e0b2007200f200d10c30a210f200641d00b6a41186a2207200b290300370300200641d00b6a41106a220b2001290300370300200641d00b6a41086a22012013290300370300200620062903a8043703d00b2009200e490d0b200d41037621130240200920062802fc02470d00200641f8026a200910fd0220062802f80221040b2004200e412c6c6a220d412c6a200d2009200e6b412c6c10c40a1a200d20062903d00b370200200d41186a2007290300370200200d41106a200b290300370200200d41086a2001290300370200200d41286a200c360200200d41246a2013360200200d200f3602202006200941016a2209360280030c010b2004200b6a41206a2001411c6a107f2006280280032209200c4d0d09427f427f201220062802f8022204200b6a41206a10fb02222320247c223f203f2023541b223f20154200201020237d222320232010561b222320232015561b7c22232023203f541b20275a0d020b200541046a22052014470d000b20062802f8022104200628028804210f200628028004210c201d21190c020b200641a00a6a41086a2007410c6a220e290000370300200641a00a6a41106a200741146a220d290000370300200641a00a6a41186a2007411c6a220c280000360200200620072900043703a00a2007280000210f201e2007290004370000201e41086a200e290000370000201e41106a200d290000370000201e41186a200c2800003600002006200f3602a8044100210e20064100360280032009412c6c210f201d41016a210d034002402004200e6a220c41246a28020041ffffffff0171450d00200c41206a28020010390b200f200e412c6a220e470d000b0240024020180d00410021010c010b417e201d6b210541002109410021014100210c02400340024002402001450d00201a200c4102746a210f201a200c20096a4102746a21070340200f280200220e280200220b200d4d0d02200e410c6a280200200b20056a220b4d0d02200e280204200b4105746a200641a8046a412010c60a0d022007200e360200200741046a2107200f41046a210f2018200c41016a220c4b0d000c040b0b201a200c4102746a210e0340200e280200220f2802002207200d4d0d01200f410c6a280200200720056a22074d0d01200f28020420074105746a200641a8046a412010c60a0d01200e41046a210e2018200c41016a220c4b0d000b410021010c030b2009417f6a2109200141016a21012018200c41016a220c4b0d000b0b024020010d00410021010c010b201a200c20016b4102746a201a200c4102746a2018200c6b41027410c40a1a0b200641d00b6a41186a2207200641a8046a41186a290300370300200641d00b6a41106a220b200641a8046a41106a290300370300200641d00b6a41086a2205200641a8046a41086a290300370300200620062903a8043703d00b201820016b21180240200628028804220f200628028404470d0020064180046a200f410110f502200628028804210f0b200628028004220c200f4105746a220e20062903d00b370000200e41086a2005290300370000200e41106a200b290300370000200e41186a20072903003700002006200f41016a220f36028804201c41016a211c201a2018410274220e6a2114200e0d000b41002109200d21190b200628028404210702402009450d002009412c6c210d200441246a210e03400240200e28020041ffffffff0171450d00200e417c6a28020010390b200e412c6a210e200d41546a220d0d000b0b024020062802fc02220e450d00200e412c6c450d00200410390b0240201b450d00201a10390b0240200f450d00200641a8046a41186a200f410574200c6a41606a220e41186a290000370300200641a8046a41106a200e41106a290000370300200641a8046a41086a200e41086a2900003703002006200e2900003703a8040b0240200741ffffff3f71450d00200c10390b0240200f0d004101210d0c010b20062802800e210e200641b8086a41186a200641a8046a41186a290300370300200641b8086a41106a200641a8046a41106a290300370300200641b8086a41086a200641a8046a41086a290300370300200620062903a8043703b808200620193602d808200641900c6a41086a201741086a290200370300200641900c6a41106a201741106a290200370300200641900c6a41186a201741186a290200370300200620172902003703900c200641b8086a200641900c6a412010c60a452019200e2802004671210d0b20062802e00321090b2009200d3a00fc020b200020062903d8023702142000200629039802370234200041106a20033602002000411c6a200641d8026a41086a290300370200200041246a200641d8026a41106a2903003702002000412c6a200641d8026a41186a2903003702002000413c6a20064198026a41086a290300370200200041c4006a20064198026a41106a290300370200200041cc006a20064198026a41186a290300370200200041d4006a20064198026a41206a290300370200200041dc006a20064198026a41286a290300370200200041e4006a20064198026a41306a290300370200200041ec006a20064198026a41386a290300370200200020163602742000202537030820002026370300200041f0016a20064198016a41186a290300370300200041e8016a20064198016a41106a290300370300200041e0016a20064198016a41086a290300370300200041d8016a200629039801370300200041f8006a20062903f80137020020004180016a200641f8016a41086a29030037020020004188016a200641f8016a41106a29030037020020004190016a200641f8016a41186a290300370200200041d0016a200641b8016a41386a290300370200200041c8016a200641b8016a41306a290300370200200041c0016a200641b8016a41286a290300370200200041b8016a200641b8016a41206a290300370200200041b0016a200641b8016a41186a290300370200200041a8016a200641b8016a41106a290300370200200041a0016a200641b8016a41086a29030037020020004198016a20062903b801370200200041f8016a41013b0100200041fe016a2006410e6a2f01003b01002000200628010a3601fa010b200641e00f6a24000f0b200c200941f895c600103c000b200e20091044000b1034000b1030000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad4288017e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a4104360200200220014188016c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a20014188016e360200200241206a24000f0b1034000bf70b04087f037e057f017e230041c0016b2204240002400240024020012802042205450d00200128020021060340200541c0036a210720052f01be032108410021090240034020082009460d0120022007412010c60a220a450d04200941016a2109200741206a2107200a417f4a0d000b2009417f6a21080b2006450d012006417f6a2106200520084102746a41a0066a28020021050c000b0b2004420037020c410021092004410028029cde4a220b3602082004420037021c02400240200141106a28020022070d00200441a0016a41106a4100360200200441003602a4010c010b200441a0016a200128020c200710ec01200141146a28020021090b200441286a41106a200441a0016a41106a290300220c370300200441286a41086a200441a0016a41086a290300220d370300200420042903a001220e370328200441c0006a41106a200c370300200441c0006a41086a200d3703002004200e3703402004200936025802402009450d0020042009417f6a360258200441c0006a410020042802441b2205280200210a0240024020052802082208200528020422092f01064f0d00200921070c010b03400240200928020022070d00410021070c020b200a41016a210a20092f0104210820072109200820072f01064f0d000b0b02400240200a450d00200841027420076a41ec026a28020021090240200a417f6a220a450d00034020092802e8022109200a417f6a220a0d000b0b4100210a0c010b200841016a210a200721090b20052009360204200541003602002005200a360208200441a0016a41086a220f200720084105746a220941106a290000370300200441a0016a41106a2210200941186a290000370300200441a0016a41186a2211200941206a2900003703002004200941086a2900003703a0012003417f732112410021130340200441e0006a41186a2011290300220c370300200441e0006a41106a2010290300220d370300200441e0006a41086a200f290300220e370300200420042903a001221437036020044180016a41186a220a200c37030020044180016a41106a2208200d37030020044180016a41086a2205200e37030020042014370380010240200120044180016a10f6022209450d0003402011200a29030037030020102008290300370300200f200529030037030020042004290380013703a001200441186a200441a0016a10f802450d01024002402009280200220620034b0d00200928020c21070c010b200928020c2207200620126a22064d0d00200928020420064105746a2002412010c60a0d022011200a29030037030020102008290300370300200f200529030037030020042004290380013703a00102402013200428020c470d00200441086a2013410110f5022004280208210b200428021021130b200b20134105746a220920042903a001370000200941186a2011290300370000200941106a2010290300370000200941086a200f2903003700002004201341016a22133602100c020b2007450d012005200741057420092802046a41606a220941086a2900003703002008200941106a290000370300200a200941186a2900003703002004200929000037038001200120044180016a10f60222090d000b0b20042802582209450d0120042009417f6a360258200441c0006a410020042802441b2205280200210a0240024020052802082208200528020422092f01064f0d00200921070c010b03400240200928020022070d00410021070c020b200a41016a210a20092f0104210820072109200820072f01064f0d000b0b02400240200a450d00200841027420076a41ec026a28020021090240200a417f6a220a450d00034020092802e8022109200a417f6a220a0d000b0b4100210a0c010b200841016a210a200721090b20052009360204200541003602002005200a360208200f200720084105746a220941106a2900003703002010200941186a2900003703002011200941206a2900003703002004200941086a2900003703a0010c000b0b200041086a200441086a41086a28020036020020002004290308370200200441186a1083060c010b200041003602000b200441c0016a24000beb05020f7f037e230041f0006b2204240020044200370204410021052004410028029cde4a2206360200200441106a41186a2207200341186a290000370300200441106a41106a2208200341106a290000370300200441106a41086a2209200341086a2900003703002004200329000037031002400240200441106a2002412010c60a450d002001280200210a2001280204210b2006210c024002400340200b450d01200b210d200a210e0340200d2f0106220f410574211041002103417f21010240024002400340024020102003470d00200f21010c020b200441106a200d20036a221141086a412010c60a2212450d02200141016a2101200341206a21032012417f4a0d000b0b200e0d01200c21060c040b200441306a41186a22034200370300200441306a41106a22014200370300200441306a41086a22124200370300200442003703302012201141f0026a220d2900003703002001201141f8026a2210290000370300200320114180036a220e2900003703002004201141e8026a221129000037033020112900002113200d2900002114201029000021152007200e290000370300200820153703002009201437030020042013370310200441d0006a41186a220d2003290300370300200441d0006a41106a22102001290300370300200441d0006a41086a22112012290300370300200420042903303703500240024020052004280204460d00200521010c010b20042005410110f5022004280200210c200428020821010b200c20014105746a22032004290350370000200341186a200d290300370000200341106a2010290300370000200341086a20112903003700002004200141016a2205360208200441106a2002412010c60a450d040c020b200e417f6a210e200d20014102746a41c8056a280200210d0c000b0b0b20004100360200200428020441ffffff3f71450d02200610390c020b2005450d00200420013602080b20002004290300370200200041086a200441086a2802003602000b200441f0006a24000bd00101027f230041206b220324000240200120026a22022001490d00200041046a280200220441017422012002200120024b1b22014104200141044b1b220141ffffff3f712001462102200141057421010240024020040d00200341003602100c010b200341186a410136020020032004410574360214200320002802003602100b200320012002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410576360200200341206a24000f0b1034000b9a0101057f0240200028020422020d0041000f0b200028020021030340200241c0036a210420022f01be0321054100210002400240034020052000460d0120012004412010c60a2206450d02200041016a2100200441206a21042006417f4a0d000b2000417f6a21050b024020030d0041000f0b2003417f6a2103200220054102746a41a0066a28020021020c010b0b2002200041286c6a41046a0b922702237f047e230041b0036b22042400200441e8026a41186a200241186a290000370300200441e8026a41106a200241106a290000370300200441e8026a41086a200241086a290000370300200420022900003703e80202400240024002400240024002400240024002400240024002400240024020012802042205450d00200128020021060c010b41a00610382205450d0141002106200541003b01be032005410036020020012005360204200141003602000b02400340200541c0036a210720052f01be0322084105742109410021024104210a417f210b02400340024020092002470d002008210b0c020b200441e8026a200520026a41c0036a412010c60a220c450d03200b41016a210b200a41286a210a200241206a2102200c417f4a0d000b0b02402006450d002006417f6a21062005200b4102746a41a0066a28020021050c010b0b200441086a41086a2202200441f4026a290200370300200441086a41106a220a200441fc026a290200370300200441086a41186a220c20044184036a280200360200200420042902ec0237030820042802e8022106200441286a41206a200341206a2209290200370300200441286a41186a200341186a220d290200370300200441286a41106a200341106a220e290200370300200441286a41086a200341086a220f2902003703002004200329020037032802402008410a4b0d00200441a0026a41206a2009290200370300200441a0026a41186a200d290200370300200441a0026a41106a200e290200370300200441a0026a41086a200f290200370300200420032902003703a00220044180026a41186a200c28020036020020044180026a41106a200a29030037030020044180026a41086a20022903003703002004200429030837038002200b41016a210d0240200b20084f220a0d002007200d4105746a2007200b4105746a2008200b6b41057410c40a1a0b2007200b4105746a220220063600002002411c6a20044180026a41186a280200360000200241146a20044180026a41106a2903003700002002410c6a20044180026a41086a2903003700002002200429038002370004200441e8026a41206a220c200441a0026a41206a290300370300200441e8026a41186a2209200441a0026a41186a290300370300200441e8026a41106a2206200441a0026a41106a290300370300200441e8026a41086a2203200441a0026a41086a290300370300200420042903a0023703e802200541046a21020240200a0d002002200d41286c6a2002200b41286c6a2008200b6b41286c10c40a1a0b2002200b41286c6a220220042903e802370200200241206a200c290300370200200241186a2009290300370200200241106a2006290300370200200241086a20032903003702002005200841016a3b01be030c0c0b410521024100210d02400240200b41054f0d0041042102200b210c0c010b4105210c02400240200b417b6a0e020201000b200b41796a210c4101210d410621020c010b4100210c4101210d0b41a0061038220a450d01200a41003b01be03200a4100360200200a20052f01be0322032002417f736a22093b01be03200720024105746a220b280000211020044180026a41186a200b411c6a28000036020020044180026a41106a200b41146a29000037030020044180026a41086a200b410c6a2900003703002004200b29000437038002200441a0026a41206a200541046a2208200241286c6a220b41206a290200370300200441a0026a41186a200b41186a290200370300200441a0026a41106a200b41106a290200370300200441a0026a41086a200b41086a2902003703002004200b2902003703a0022009410c4f0d022003200241016a220b6b2009470d03200a41c0036a2007200b4105746a200941057410c30a1a200a41046a2008200b41286c6a200941286c10c30a1a200520023b01be03200441e8026a41086a220e20044180026a41086a2203290300370300200441e8026a41106a220f20044180026a41106a2208290300370300200441e8026a41186a221120044180026a41186a22072802003602002004418c036a200441a0026a41086a29030037020020044194036a200441a0026a41106a2903003702002004419c036a200441a0026a41186a290300370200200441a4036a200441a0026a41206a29030037020020042004290380023703e802200420042903a00237028403200441a0026a200441e8026a41c40010c30a1a200441d0006a41206a2212200441286a41206a290300370300200441d0006a41186a2213200441286a41186a290300370300200441d0006a41106a2214200441286a41106a290300370300200441d0006a41086a2215200441286a41086a29030037030020042004290328370350200a2005200d1b220b2f01be0321092007200441086a41186a2802003602002008200441086a41106a2903003703002003200441086a41086a2903003703002004200429030837038002200b41c0036a21020240200c41016a220d20094b22160d002002200d4105746a2002200c4105746a2009200c6b41057410c40a1a0b2002200c4105746a220220063600002002411c6a2007280200360000200241146a20082903003700002002410c6a20032903003700002002200429038002370004200441e8026a41206a201229030037030020112013290300370300200f2014290300370300200e2015290300370300200420042903503703e802200b41046a2102024020160d002002200d41286c6a2002200c41286c6a2009200c6b41286c10c40a1a0b2002200c41286c6a220220042903e802370200200241206a200441e8026a41206a2213290300370200200241186a200441e8026a41186a2208290300370200200241106a200441e8026a41106a2207290300370200200241086a200441e8026a41086a220d290300370200200b200941016a3b01be0320044198016a200441a0026a41c40010c30a1a200441d0006a20044198016a41c40010c30a1a02400240200528020022020d00410021120c010b200441e8026a411c6a210e200441d0006a411c6a210341002112200a211420102115034020052f01bc032105200441e0016a41186a2216200441d0006a41186a280200360200200441e0016a41106a2217200441d0006a41106a290200370300200441e0016a41086a2218200441d0006a41086a290200370300200420042902503703e00120044198016a41206a2219200341206a29020037030020044198016a41186a221a200341186a29020037030020044198016a41106a221b200341106a29020037030020044198016a41086a221c200341086a29020037030020042003290200370398010240200222062f01be032211410a4b0d00200441e8026a41186a220b200441d0006a41186a280200360200200441e8026a41106a220a200441d0006a41106a290200370300200441e8026a41086a220c200441d0006a41086a290200370300200420042902503703e802200641c0036a21020240201120054d22090d00200220054105746a220841206a2008201120056b41057410c40a1a0b200220054105746a22022015360000200220042903e8023700042002410c6a200c290300370000200241146a200a2903003700002002411c6a200b280200360000200441e8026a41206a2208200341206a290200370300200b200341186a290200370300200a200341106a290200370300200c200341086a290200370300200420032902003703e802200541016a210b200641046a2102024020090d002002200b41286c6a2002200541286c6a201120056b41286c10c40a1a0b201141016a210a2002200541286c6a220220042903e802370200200241206a2008290300370200200241186a200441e8026a41186a290300370200200241106a200441e8026a41106a290300370200200241086a200441e8026a41086a290300370200200641a0066a2102201141026a210c024020090d00200541027420026a41086a2002200b4102746a201120056b41027410c40a1a0b2006200a3b01be032002200b4102746a2014360200200b200c4f0d0e201141016a210c2006200b417f6a22024102746a41a4066a210b0340200b280200220a200241016a22023b01bc03200a2006360200200b41046a210b200c2002470d000c0f0b0b4100210f41042102024020054105490d0020052102024002402005417b6a0e020201000b200541796a21054101210f410621020c010b410021054101210f410521020b41d0061038220a450d03200a41003b01be03200a4100360200200a20062f01be03221d2002417f736a220c3b01be0320044180026a41086a221e200641c0036a221f20024105746a220b410c6a29000037030020044180026a41106a2220200b41146a29000037030020044180026a41186a2221200b411c6a2800003602002004200b29000437038002200b2800002110200441a0026a41206a2222200641046a2223200241286c6a220b41206a290200370300200441a0026a41186a2224200b41186a290200370300200441a0026a41106a2225200b41106a290200370300200441a0026a41086a2226200b41086a2902003703002004200b2902003703a002200c410c4f0d06201d200241016a22096b200c470d07200a41c0036a201f20094105746a200c41057410c30a1a200a41046a2023200941286c6a200c41286c10c30a1a200620023b01be03200d201e2903003703002007202029030037030020082021280200360200200e20042903a002370200200e41086a2026290300370200200e41106a2025290300370200200e41186a2024290300370200200e41206a202229030037020020042004290380023703e802200a2f01be03220b41016a210c200b410c4f0d08201120026b2202200c470d09201241016a2112200a41a0066a200620094102746a41a0066a200241027410c30a1a4100210202400340200a20024102746a41a0066a280200220c20023b01bc03200c200a3602002002200b4f0d0120022002200b496a2202200b4d0d000b0b200441a0026a200441e8026a41c40010c30a1a200a2006200f1b220c2f01be0321022008201628020036020020072017290300370300200d2018290300370300200420042903e0013703e802200c41c0036a210b0240200541016a220f20024b22090d00200b200f4105746a200b20054105746a200220056b41057410c40a1a0b200b20054105746a220b2015360000200b20042903e802370004200b410c6a200d290300370000200b41146a2007290300370000200b411c6a2008280200360000201320192903003703002008201a2903003703002007201b290300370300200d201c29030037030020042004290398013703e802200c41046a210b024020090d00200b200f41286c6a200b200541286c6a200220056b41286c10c40a1a0b200241016a2109200b200541286c6a220b20042903e802370200200b41206a2013290300370200200b41186a2008290300370200200b41106a2007290300370200200b41086a200d290300370200200c41a0066a210b0240200541026a2215200241026a22114f0d00200b20154102746a200b200f4102746a200220056b41027410c40a1a0b200b200f4102746a2014360200200c20093b01be030240200f20114f0d00200c20054102746a41a4066a210203402002280200220b200541016a22053b01bc03200b200c360200200241046a210220092005470d000b0b200441d0006a200441a0026a41c40010c30a1a20062105200a211420102115200628020022020d000b0b200441e8026a200441d0006a41c40010c30a1a2001280204220b450d082001280200210c41d00610382202450d012002200b3602a006200241003b01be032002410036020020012002360204200b41003b01bc03200b20023602002001200c41016a360200200c2012470d0920022f01be03220c410b4f0d0a2002200c41016a22053b01be032002200c4105746a220b41c0036a2010360000200b41c4036a20042902e802370000200b41cc036a200441e8026a41086a290200370000200b41d4036a200441e8026a41106a290200370000200b41dc036a200441e8026a41186a2802003600002002200c41286c6a220b410c6a20044184036a220c41086a290200370200200b41146a200c41106a290200370200200b411c6a200c41186a290200370200200b41246a200c41206a290200370200200b41046a200c290200370200200241a0066a20054102746a200a360200200a20053b01bc03200a20023602002001200128020841016a3602080c0c0b200441e8026a41206a220b200341206a290200370300200441e8026a41186a220c200341186a290200370300200441e8026a41106a2209200341106a290200370300200441e8026a41086a2206200341086a290200370300200420032902003703e80220002005200a6a2202290200370200200041086a200241086a220a290200370200200041106a200241106a2205290200370200200041186a200241186a2203290200370200200041206a200241206a22002902003702002006290300212720092903002128200c290300212920042903e802212a2000200b2903003702002003202937020020052028370200200a20273702002002202a3702000c0c0b1030000b2009410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200c410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200c410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2001200128020841016a3602080b200041003602040b200441b0036a24000bf41805087f027e027f027e0d7f23004180026b22022400200241e0016a41186a200141186a290000370300200241e0016a41106a200141106a290000370300200241e0016a41086a200141086a290000370300200220012900003703e0010240024002400240024002400240024002400240024002400240024020002802042203450d00200028020021040c010b41e80210382203450d0141002104200341003b01062003410036020020002003360204200041003602000b02400340200341086a210520032f01062206410574210741002101417f210802400340024020072001470d00200621080c020b200241e0016a200320016a41086a412010c60a2209450d03200841016a2108200141206a21012009417f4a0d000b0b02402004450d002004417f6a2104200320084102746a41e8026a28020021030c010b0b200241186a2209200241e0016a41186a2207290300220a370300200241106a2204200241e0016a41106a2206290300220b370300200241086a220c200241e0016a41086a220d290300220e370300200220022903e001220f370300200241c0006a41186a200a370300200241c0006a41106a200b370300200241c0006a41086a200e3703002002200f370340024020032f01062201410a4b0d002007200929030037030020062004290300370300200d200c290300370300200220022903003703e0010240200820014f0d00200520084105746a220941206a2009200120086b41057410c40a1a0b200520084105746a220820022903e001370000200841186a200241e0016a41186a290300370000200841106a200241e0016a41106a290300370000200841086a200241e0016a41086a2903003700002003200141016a3b01060c0c0b410521014100210c02400240200841054f0d0041042101200821070c010b41052107024002402008417b6a0e020201000b200841796a21074101210c410621010c010b410021074101210c0b41e80210382209450d01200941003b010620094100360200200920032f010622062001417f736a22043b0106200241e0016a41186a200520014105746a220841186a290000370300200241e0016a41106a200841106a290000370300200241e0016a41086a200841086a290000370300200220082900003703e0012004410c4f0d022006200141016a22086b2004470d03200941086a200520084105746a200441057410c30a1a200320013b0106200241a0016a41186a220d200241e0016a41186a2204290300370300200241a0016a41106a2210200241e0016a41106a2206290300370300200241a0016a41086a2211200241e0016a41086a2205290300370300200220022903e0013703a00120092003200c1b220c2f010621082004200241c0006a41186a2903003703002006200241c0006a41106a2903003703002005200241c0006a41086a290300370300200220022903403703e001200c41086a21010240200741016a221220084b0d00200120124105746a200120074105746a200820076b41057410c40a1a0b200120074105746a220120022903e001370000200141186a2004290300370000200141106a2006290300370000200141086a2005290300370000200c200841016a3b0106200241c0016a41186a200d290300220a370300200241c0016a41106a2010290300220b370300200241c0016a41086a2011290300220e370300200220022903a001220f3703c001200241e0006a41186a200a370300200241e0006a41106a200b370300200241e0006a41086a200e3703002002200f370360024002400240200328020022010d00410021120c010b4100211220092113034020032f0104210720024180016a41186a2214200241e0006a41186a221529030037030020024180016a41106a2216200241e0006a41106a221729030037030020024180016a41086a2218200241e0006a41086a22192903003703002002200229036037038001200122062f01062211410b490d024100211041042101024020074105490d0020072101024002402007417b6a0e020201000b200741796a210741012110410621010c010b4100210741012110410521010b41980310382209450d04200941003b010620094100360200200920062f0106221a2001417f736a22033b0106200241e0016a41186a2205200641086a221b20014105746a220841186a290000370300200241e0016a41106a220c200841106a290000370300200241e0016a41086a220d200841086a290000370300200220082900003703e0012003410c4f0d07201a200141016a22046b2003470d08200941086a201b20044105746a200341057410c30a1a200620013b0106200241a0016a41086a221a200d290300370300200241a0016a41106a221b200c290300370300200241a0016a41186a221c2005290300370300200220022903e0013703a00120092f0106220841016a21032008410c4f0d09201120016b22012003470d0a201241016a2112200941e8026a200620044102746a41e8026a200141027410c30a1a4100210102400340200920014102746a41e8026a280200220320013b010420032009360200200120084f0d01200120012008496a220120084d0d000b0b200241c0016a41186a2211201c290300370300200241c0016a41106a221c201b290300370300200241c0016a41086a221b201a290300370300200220022903a0013703c0012009200620101b22032f0106210120052014290300370300200c2016290300370300200d201829030037030020022002290380013703e001200341086a21100240200741016a220820014b0d00201020084105746a201020074105746a200120076b41057410c40a1a0b200141016a2104201020074105746a221020022903e001370000201041186a2005290300370000201041106a200c290300370000201041086a200d290300370000200341e8026a21050240200741026a220d200141026a220c4f0d002005200d4102746a200520084102746a200120076b41027410c40a1a0b200520084102746a2013360200200320043b010602402008200c4f0d00200320074102746a41ec026a2101034020012802002208200741016a22073b010420082003360200200141046a210120042007470d000b0b201520112903003703002017201c2903003703002019201b290300370300200220022903c0013703602006210320092113200628020022010d000b0b200241206a41186a200241e0006a41186a290300370300200241206a41106a200241e0006a41106a290300370300200241206a41086a200241e0006a41086a2903003703002002200229036037032020002802042201450d092000280200210341980310382208450d02200820013602e802200841003b01062008410036020020002008360204200141003b0104200120083602002000200341016a36020020032012470d0a20082f01062207410b4f0d0b200820074105746a220341186a200241206a41106a290300370000200341206a200241206a41186a290300370000410121012008200741016a22073b0106200341086a2002290320370000200341106a200241206a41086a290300370000200841e8026a20074102746a20093602002000200028020841016a360208200920073b0104200920083602000c0d0b200241e0016a41186a2209200241e0006a41186a290300370300200241e0016a41106a2203200241e0006a41106a290300370300200241e0016a41086a2204200241e0006a41086a290300370300200220022903603703e001200741016a2101200641086a21080240201120074d22050d00200820014105746a200820074105746a201120076b41057410c40a1a0b201141016a210c200820074105746a220820022903e001370000200841186a2009290300370000200841106a2003290300370000200841086a2004290300370000200641e8026a2108201141026a2109024020050d00200741027420086a41086a200820014102746a201120076b41027410c40a1a0b2006200c3b0106200820014102746a2013360200200120094f0d0b201141016a210320062001417f6a22014102746a41ec026a2108034020082802002209200141016a22013b010420092006360200200841046a210820032001470d000c0c0b0b410021010c0b0b1030000b2004410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2003410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2003410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b410121012000200028020841016a3602080b20024180026a240020010b14000240200141ffffff3f71450d00200010390b0b1e000240200041046a28020041ffffffff0171450d00200028020010390b0b8c0507027f017e037f017e027f017e027f230041b0016b2202240002400240200041306a28020022030d0020024180016a428180808010370300200241f8006a42808080808004370300200241f4006a2001280200220320012802084103746a360200200242003703482002420037032020022003360270200241206a200010fc0221040c010b02400240200141086a28020022052003490d0020012802002106024020052003460d002000280228220720034103746a2103200620054103746a2105420121084100210941a0dfc800210a410021014201210b0c020b2000280228220a200341037422016a2105200620016a210c420021084101210141202109410021072006210d200a21062003210a4200210b0c010b2003410374200028022822036a210a2001280200220620054103746a21054201210b420021084100210941a0dfc8002107410021010b42002104200241d0006a4200370300200241306a4200370300200241d8006a4200370300200241ac016a4101360200200241a4016a42a080808010370200200241a0016a20013602002002419c016a200136020020024198016a200936020020024194016a410036020020024190016a200a3602002002418c016a200336020020024188016a200736020020024184016a200536020020024180016a2006360200200241fc006a200c360200200241f8006a200d360200200220083703282002200b370320200241186a200241206a10f6082002280218450d00200228021c2103420021040340200241106a2000200341017610de0502402002280210450d00427f200420022802142903007c220820082004541b21040b200241086a200241206a10f608200228020c210320022802080d000b0b200241b0016a240020040bec04080a7f017e057f017e027f037e037f017e230041106b22022400200028023c411f712103200041c0006a2802004106742104200041e4006a2802002105200041e0006a2802002106200041dc006a2802002107200041d8006a2802002108200041d4006a2802002109200041c8006a280200210a200041386a280200210b200041306a290300210c200041206a280200210d200041186a280200210e200041106a280200210f20002802502110200028024c2111200029032821122000280224211320002802142114200029030821152000290300211642002117037e0240024020164201520d00410021000c010b410121000b037e0240024002400240024020000e020001010b200d2013200d20134b1b21182014411f7121190240034002402018200d470d002018210d0c020b200d2019742100200d41016a221a210d2015413f2000200f6a22006b413f71ad88420183500d000b201a417f6a2013490d02201a210d0b410121000c040b2008211a024020102009460d004100210d4100200720102903002215501b2113201a41016a2108201041086a2110201a210e200521142006210f0c030b024020124201520d00200a2011200a20114b1b211803402018200a460d01200a2003742100200a41016a2219210a200c413f2000200b6a22006b413f71ad88420183500d000b2019417f6a20114f0d00200420006a2100420021162019210a20092110201a21080c020b200241106a240020170f0b200e41067420006a210042012116201a210d0b200241086a2001200041017610de052002280208450d02427f2017200228020c2903007c221b201b2017541b21170c020b410021000c000b0b0bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad422c7e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a410436020020022001412c6c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001412c6e360200200241206a24000f0b1034000b940402067f047e0240412510382202450d0020002002360200200241c296b9ba04360000200041046a42a5808080c000370200200141016a21030240024020012d00004101460d00200241013a0004200041086a22044105360200412010382205450d0220052003290000370000200541186a2206200341186a290000370000200541106a2207200341106a290000370000200541086a200341086a2900003700000240200041046a280200200428020022036b411f4b0d00200020034120108101200041086a2802002103200028020021020b200220036a22042005290000370000200041086a200341206a2203360200200441186a2006290000370000200441106a2007290000370000200441086a200541086a290000370000200510390c010b200241023a0004200041086a22044105360200412010382205450d01200520032900002208370000200541186a200341186a2900002209370000200541106a200341106a290000220a370000200541086a200341086a290000220b3700004125210320044125360200200220083700052002410d6a200b370000200241156a200a3700002002411d6a2009370000200510390b2001280224220128020021050240200041046a28020020036b41034b0d00200020034104108101200041086a2802002103200028020021020b200220036a2005360000200041086a200341046a360200200141046a200010ff020f0b1030000bc80101057f0240412010382202450d0020022000290000370000200241186a2203200041186a290000370000200241106a2204200041106a290000370000200241086a2205200041086a2900003700000240200141046a280200200141086a220628020022006b411f4b0d00200120004120108101200628020021000b2006200041206a360200200128020020006a22002002290000370000200041086a2005290000370000200041106a2004290000370000200041186a2003290000370000200210390f0b1030000b130020004104360204200041b8dcc0003602000b3400200041b080c40036020420004100360200200041146a4109360200200041106a41fce8c000360200200041086a42133702000b6b01027f20004201370200200041086a220241003602002000410010d20141002802fcad494100200010d0010240200041046a280200200228020022036b41074b0d00200020034108108101200228020021030b2002200341086a360200200028020020036a42003700000b3400200041c380c40036020420004100360200200041146a4109360200200041106a41fce8c000360200200041086a42133702000b130020004102360204200041ecf9c0003602000b2e01017f02404104103822020d001030000b20002002360200200241c0930636000020004284808080c0003702040b1300200041023602042000419c80c1003602000b130020004103360204200041ac81c1003602000b34002000418d80c40036020420004100360200200041146a4101360200200041106a41ec88c100360200200041086a42053702000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802fcad494100200010cc010b130020004101360204200041b491c1003602000b2e01017f02404104103822020d001030000b20002002360200200241c0f00036000020004284808080c0003702040ba014020c7f027e230041d0016b2202240002400240200128020422030d002000410a3a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024020050e0a000102030405060708090a0b200041003a00000c130b200241086a200110ad01024020022802080d00200228020c2101200041013a0000200041046a20013602000c130b2000410a3a00000c120b2006450d0a20042d0001210520012003417e6a22063602042001200441026a2207360200410021034101210841002109024002400240024020050e04030001020e0b200241106a200110ad0120022802100d0d200128020422042002280214220a490d0d200a417f4c0d0c410121094101210b0240200a450d00200a1038220b450d11200b4100200a10c50a1a0b200b20012802002205200a10c30a1a20012004200a6b220636020420012005200a6a2207360200410021080c020b41012108410221090c010b41032109410121080b200241003602a801200241a8016a410472210c417f2104034020062003460d09200720036a22052d0000210d2001200620046a360204200c20036a200d3a00002001200541016a3602002002200341016a22053602a8012004417f6a21042005210320054120470d000b200041086a200241a8016a410b6a2f00003b00002000410a6a200241b5016a2d00003a00002000410f6a200241a8016a41126a2f01003b0000200041116a200241bc016a2d00003a0000200041186a200241c3016a2d00003a0000200041166a200241a8016a41196a2f00003b0000200220022f01ac013b01a401200220022d00ae013a00a601200241b6016a2801002101200241bd016a2800002103200241c4016a290200210e20022800af012104200041036a20022d00a6013a0000200020022f01a4013b0001200041196a200e370000200041126a20033600002000410b6a2001360000200041046a2004360000200041023a0000200041216a20022f00a1013b0000200041236a200241a1016a41026a2d00003a0000200041306a200a3600002000412c6a200a360000200041286a200b360000200041246a20093600000c110b2006450d0a20042d0001210520012003417e6a3602042001200441026a360200410021064101210d024002400240024020050e04030001020e0b200241286a200110ad0120022802280d0d20012802042205200228022c2203490d0d2003417f4c0d0b410121064101210402402003450d00200310382204450d1020044100200310c50a1a0b20042001280200220d200310c30a1a2001200520036b3602042001200d20036a3602004100210d0c020b410221060c010b410321060b200241186a200110b00102402002290318a70d002002290320210e200041033a0000200041186a200e370300200041106a20033600002000410c6a2003360000200041086a2004360000200041046a20063600000c110b2000410a3a0000200d200345720d10200410390c100b2006450d0a20042d0001210520012003417e6a3602042001200441026a360200410021064101210d024002400240024020050e04030001020e0b200241306a200110ad0120022802300d0d2001280204220520022802342203490d0d2003417f4c0d0a410121064101210402402003450d00200310382204450d0f20044100200310c50a1a0b20042001280200220d200310c30a1a2001200520036b3602042001200d20036a3602004100210d0c020b4101210d410221060c010b410321064101210d0b200241a8016a200110d901024020022d00a8014101460d00200020022900a901370001200041116a200241a8016a41116a280000360000200041096a200241a8016a41096a290000370000200041246a2003360000200041206a20033600002000411c6a2004360000200041186a2006360000200041043a00000c100b2000410a3a0000200d200345720d0f200410390c0f0b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200020053a0001200041053a00000c0f0b2000410a3a00000c0e0b200241386a2001108d0302402002290338a70d00200241386a41106a290300210e2002290340210f200041063a0000200041086a200f370300200041106a200e3703000c0e0b2000410a3a00000c0d0b200241d0006a200110ad01024020022802500d002001280204220420022802542203490d002003417f4c0d050240024020030d00410121050c010b200310382205450d0a20054100200310c50a1a0b200520012802002206200310c30a21052001200420036b3602042001200620036a360200200041046a2005360000200041073a0000200041086a2003ad220e422086200e843700000c0d0b2000410a3a00000c0c0b200041083a00000c0b0b2006450d0720042d0001210520012003417e6a22033602042001200441026a360200410021064101210d02400240024002400240024020050e070e0001020304050d0b20024190016a200110ad012002280290010d0c200128020422032002280294012205490d0c2005417f4c0d07410121064101210402402005450d00200510382204450d0c20044100200510c50a1a0b20042001280200220d200510c30a1a2001200320056b22033602042001200d20056a3602002005ad220e422086200e84210e4100210d0c0d0b20024198016a200110ad012002280298010d0b200228029c01210420012802042103410221060c0c0b410321060c0b0b410421060c0a0b410521060c090b410621060c080b2000410a3a00000c090b2000410a3a00002008200a4572450d070c080b1034000b2000410a3a00000c060b2000410a3a00000c050b2000410a3a00000c040b1030000b2000410a3a00000c020b02402003450d00200128020022052d0000210720012003417f6a3602042001200541016a360200410021050240024002400240024020070e050400010203050b200241d8006a200110ad0120022802580d04200228025c2103410121050c030b200241e8006a200110ad0120022802680d03200228026c2103200241e0006a200110ad0120022802600d032002280264210c410221050c020b200241f8006a200110ad0120022802780d02200228027c2103200241f0006a200110ad0120022802700d022002280274210c410321050c010b20024188016a200110ad012002280288010d01200228028c01210320024180016a200110ad012002280280010d01200228028401210c410421050b200041093a0000200020022f00a4013b00012000411c6a200c360200200041186a2003360200200041146a20053602002000410c6a200e370000200041086a2004360000200041046a2006360000200041206a20022903a801370300200041036a200241a6016a2d00003a0000200041286a200241a8016a41086a290300370300200041306a200241b8016a2903003703000c020b2000410a3a0000200d200ea745720d01200410390c010b200b10390b200241d0016a24000bc50506067f017e017f017e017f017e230041206b220224000240024020012802042203450d0020012003417f6a220436020420012001280200220541016a36020002400240024020052d0000220641037122074103460d0002400240024020070e03000102000b2006410276ad21080c040b410121072004450d0220012003417e6a3602042001200541026a36020020052d0001410874200672220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720044103490d0120012003417c6a3602042001200541046a36020020052f0001200541036a2d000041107472410874200672220141808004490d012001410276ad21080c020b0240024002400240200641027622090e0d00030303010303030303030302030b20044104490d0520012003417b6a3602042001200541056a360200200535000122084280808080045421074200210a0c060b20044108490d042001200341776a3602042001200541096a36020020052900012208428080808080808080015421074200210a0c050b20044110490d0320012003416f6a3602042001200541116a360200200541096a290000220a42808080808080808001542107200529000121080c040b200641334b0d02200941046a21042003417e6a2103200541026a21054100210641012107200241186a210b420021084200210a03402003417f460d012001200336020420012005360200200241106a2005417f6a3100004200200641037441f8007110c00a2003417f6a2103200541016a2105200b290300200a84210a20022903102008842108200641016a220641ff01712004490d000b2002427f427f41e80020094103746b41f8007110c70a2008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000b801e020c7f027e230041d0016b22022400024002402001280200220328020422040d002000410a3a00000c010b200328020022052d0000210620032004417f6a22073602042003200541016a360200024002400240024002400240024002400240024002400240024002400240024002400240024020060e0a000102030405060708090a0b200041003a00000c120b200241086a200110bb01024020022802080d00200228020c2103200041013a0000200041046a20033602000c120b2000410a3a00000c110b024002400240024002402007450d0020052d0001210720032004417e6a22063602042003200541026a220836020041002104410121094100210a024020070e0405000304010b200241106a200110bb0120022802100d00200328020422012002280214220b490d00200b417f4c0d1002400240200b0d004101210c0c010b200b1038220c450d13200c4100200b10c50a1a200328020421010b2001200b4f0d01200c10390b2000410a3a00000c140b200c20032802002205200b10c30a1a20032001200b6b220636020420032005200b6a22083602004101210a410021090c020b410121094102210a0c010b4103210a410121090b200241003602a801200241a8016a410472210d417f21010340024020062004470d002000410a3a00002009200b45720d12200c10390c120b200820046a22052d000021072003200620016a360204200d20046a20073a00002003200541016a3602002002200441016a22053602a8012001417f6a21012005210420054120470d000b200041086a200241a8016a410b6a2f00003b00002000410a6a200241b5016a2d00003a00002000410f6a200241a8016a41126a2f01003b0000200041116a200241bc016a2d00003a0000200041186a200241c3016a2d00003a0000200041166a200241a8016a41196a2f00003b0000200220022f01ac013b01a401200220022d00ae013a00a601200241b6016a2801002103200241bd016a2800002101200241c4016a290200210e20022800af012104200041036a20022d00a6013a0000200020022f01a4013b0001200041196a200e370000200041126a20013600002000410b6a2003360000200041046a2004360000200041306a200b3600002000412c6a200b360000200041286a200c360000200041246a200a360000200041023a00000c100b024002400240024002402007450d0020052d0001210620032004417e6a3602042003200541026a3602004100210741012108024020060e0405000304010b200241286a200110bb0120022802280d0020032802042206200228022c2204490d002004417f4c0d0f0240024020040d00410121050c010b200410382205450d1220054100200410c50a1a200328020421060b200620044f0d01200510390b2000410a3a00000c130b200520032802002207200410c30a1a2003200620046b3602042003200720046a36020041012107410021080c020b410221070c010b410321070b200241186a200110bc0102402002290318a70d002002290320210e200041033a0000200041186a200e370300200041106a20043600002000410c6a2004360000200041086a2005360000200041046a20073600000c100b2000410a3a00002008200445720d0f200510390c0f0b024002400240024002402007450d0020052d0001210720032004417e6a22063602042003200541026a22043602004101210d4100210b024020070e0405000304010b200241306a200110bb0120022802300d002003280204220120022802342205490d002005417f4c0d0e0240024020050d00410121080c010b200510382208450d1120084100200510c50a1a200328020421010b200120054f0d01200810390b2000410a3a00000c120b200820032802002204200510c30a1a2003200120056b22063602042003200420056a22043602004101210b4100210d0c020b4102210b0c010b4103210b0b200241003602a80120060d080c0d0b02402007450d0020052d0001210120032004417e6a3602042003200541026a360200200020013a0001200041053a00000c0e0b2000410a3a00000c0d0b200241386a2001108f0302402002290338a70d00200241386a41106a290300210e2002290340210f200041063a0000200041086a200f370300200041106a200e3703000c0d0b2000410a3a00000c0c0b200241d0006a200110bb01024020022802500d002003280204220420022802542201490d002001417f4c0d070240024020010d00410121050c010b200110382205450d0a20054100200110c50a1a200328020421040b200420014f0d08200510390b2000410a3a00000c0b0b200041083a00000c0a0b2007450d0720052d0001210620032004417e6a22043602042003200541026a360200410021074101210802400240024002400240024020060e07080001020304050d0b20024190016a200110bb012002280290010d0c200328020422042002280294012206490d0c2006417f4c0d090240024020060d00410121050c010b200610382205450d0c20054100200610c50a1a200328020421040b200420064f0d06200510390c0c0b20024198016a200110bb012002280298010d0b200228029c01210520032802042104410221070c060b410321070c050b410421070c040b410521070c030b410621070c020b2000410a3a00000c080b200520032802002207200610c30a1a2003200420066b22043602042003200720066a3602002006ad220e422086200e84210e41012107410021080b02402004450d00200328020022062d0000210d20032004417f6a3602042003200641016a3602004100210402400240024002400240200d0e050400010203050b200241d8006a200110bb0120022802580d04200228025c2103410121040c030b200241e8006a200110bb0120022802680d03200228026c2103200241e0006a200110bb0120022802600d0320022802642106410221040c020b200241f8006a200110bb0120022802780d02200228027c2103200241f0006a200110bb0120022802700d0220022802742106410321040c010b20024188016a200110bb012002280288010d01200228028c01210320024180016a200110bb012002280280010d012002280284012106410421040b200041093a0000200020022f00a4013b00012000411c6a2006360200200041186a2003360200200041146a20043602002000410c6a200e370000200041086a2005360000200041046a2007360000200041206a20022903a801370300200041036a200241a6016a2d00003a0000200041286a200241a8016a41086a290300370300200041306a200241b8016a2903003703000c070b2000410a3a00002008200ea745720d06200510390c060b20042d000021012003200441016a36020020032006417f6a2207360204200241013602a801200220013a00ac012007450d0420042d000121012003200441026a36020020032006417e6a2207360204200241023602a801200220013a00ad012007450d0420042d000221012003200441036a36020020032006417d6a2207360204200241033602a801200220013a00ae012007450d0420042d000321012003200441046a36020020032006417c6a2207360204200241043602a801200220013a00af012007450d0420042d0004210120032006417b6a22073602042003200441056a360200200241b0016a20013a0000200241053602a8012007450d0420042d0005210120032006417a6a22073602042003200441066a360200200241b1016a20013a0000200241063602a8012007450d0420042d000621012003200641796a22073602042003200441076a360200200241b2016a20013a0000200241073602a8012007450d0420042d000721012003200641786a22073602042003200441086a360200200241b3016a20013a0000200241083602a8012007450d0420042d000821012003200641776a22073602042003200441096a360200200241b4016a20013a0000200241093602a8012007450d0420042d000921012003200641766a220736020420032004410a6a360200200241b5016a20013a00002002410a3602a8012007450d0420042d000a21012003200641756a220736020420032004410b6a360200200241b6016a20013a00002002410b3602a8012007450d0420042d000b21012003200641746a220736020420032004410c6a360200200241b7016a20013a00002002410c3602a8012007450d0420042d000c21012003200641736a220736020420032004410d6a360200200241b8016a20013a00002002410d3602a8012007450d0420042d000d21012003200641726a220736020420032004410e6a360200200241b9016a20013a00002002410e3602a8012007450d0420042d000e21012003200641716a220736020420032004410f6a360200200241ba016a20013a00002002410f3602a8012007450d0420042d000f21012003200641706a22073602042003200441106a360200200241bb016a20013a0000200241103602a8012007450d0420042d0010210120032006416f6a22073602042003200441116a360200200241bc016a20013a0000200241113602a8012007450d0420042d0011210120032006416e6a22073602042003200441126a360200200241bd016a20013a0000200241123602a8012007450d0420042d0012210120032006416d6a22073602042003200441136a360200200241be016a20013a0000200241133602a8012007450d0420042d0013210120032006416c6a3602042003200441146a360200200041086a200241a8016a410b6a2f00003b00002000410a6a200241b5016a2d00003a00002000410f6a200241a8016a41126a2f01003b0000200041116a200241a8016a41146a2d00003a0000200220022f01ac013b01a401200220022d00ae013a00a601200241b6016a2801002103200241bd016a2f0000210420022800af012106200041146a20013a0000200041126a20043b00002000410b6a2003360000200041046a2006360000200041036a20022d00a6013a0000200020022f01a4013b0001200041246a2005360000200041206a20053600002000411c6a2008360000200041186a200b360000200041043a00000c050b1034000b200520032802002206200110c30a21052003200420016b3602042003200620016a360200200041086a2001ad220e422086200e84370000200041046a2005360000200041073a00000c030b1030000b2000410a3a00000c010b2000410a3a0000200d200545720d00200810390b200241d0016a24000bd80506067f017e017f017e017f017e230041206b2202240002400240200128020022012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d0120012003417c6a3602042001200441046a36020020042f0001200441036a2d000041107472410874200572220141808004490d012001410276ad21080c020b0240024002400240200541027622090e0d00030303010303030303030302030b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d0320012003416f6a3602042001200441116a360200200441096a290000220a42808080808080808001542107200429000121080c040b200541334b0d02200941046a21062003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d012004417f6a310000210c2001200336020420012004360200200241106a200c4200200541037441f8007110c00a2003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110c70a2008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000be13101057f230041106b220224000240024002400240024002400240024002400240024020002d00000e0a000102030405060708090a0b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41003a00002003200041016a3602000c090b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41013a00002004200341016a22033602000240024002402000280204220441c000490d00200441808001490d012004418080808004490d020240200141046a22052802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421000240200528020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000c0b0b200441027421000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c0a0b200441027441017221000240200141046a28020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000c090b200441027441027221000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000c080b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41023a00002004200341016a22033602000240024002400240024020002802240e0400010203000b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c030b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2204200341016a3602002000280228200041306a280200200110d601200428020021030c020b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000c010b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a22033602000b200041016a21000240200141046a28020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200141086a200341206a3602000c070b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200041186a2105200128020020036a41033a00002004200341016a2203360200024002400240024020002802040e0400010203000b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a360200200520011091030c090b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602002000280208200041106a280200200110d601200520011091030c080b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a360200200520011091030c070b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a360200200520011091030c060b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41043a00002004200341016a22033602000240024002400240024020002802180e0400010203000b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c030b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2204200341016a360200200028021c200041246a280200200110d601200428020021030c020b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000c010b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a22033602000b200041016a21000240200141046a28020020036b41134b0d00200120034114108101200141086a28020021030b200128020020036a22042000290000370000200441106a200041106a280000360000200441086a200041086a290000370000200141086a200341146a3602000c050b0240200141046a2205280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41053a00002004200341016a220336020020002d00012100024020052802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c040b200041086a21040240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41063a00002003200041016a3602002002200436020c2002410c6a20011092030c030b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41073a00002004200341016a36020020002802042000410c6a280200200110d6010c020b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41083a00002003200041016a3602000c010b0240200141046a2204280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41093a00002005200341016a22033602000240024002400240024002400240024020002802040e0700010203040506070b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000c060b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602002000280208200041106a280200200110d6010c050b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000240024002402000280208220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2205200341016a2203360200200028020821060240200141046a28020020036b41034b0d00200120034104108101200528020021030b200128020020036a20063600002005200341046a3602000c070b20054102742105024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20053a0000200141086a200341016a3602000c060b200541027441017221050240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20053b0000200141086a200341026a3602000c050b200541027441027221050240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2005360000200141086a200341046a3602000c040b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a3602000c030b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a200341016a3602000c020b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a200341016a3602000c010b024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41063a0000200141086a200341016a3602000b0240024002400240024020002802140e050001020304050b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41003a00002003200041016a3602000c040b0240200141046a280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41013a00002005200341016a22033602000240024002402000280218220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028021821000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000c060b20054102742100024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c050b200541027441017221000240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000c040b200541027441027221000240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000c030b0240200141046a280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41023a00002005200341016a220336020002400240024002402000280218220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2205200341016a2203360200200028021821060240200141046a28020020036b41034b0d00200120034104108101200528020021030b200128020020036a20063600002005200341046a22033602000c030b20054102742105024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20053a0000200141086a200341016a22033602000c020b200541027441017221050240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20053b0000200141086a200341026a22033602000c010b200541027441027221050240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2005360000200141086a200341046a22033602000b024002400240200028021c220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028021c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000c050b20054102742100024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c040b200541027441017221000240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000c030b200541027441027221000240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000c020b0240200141046a280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41033a00002005200341016a220336020002400240024002402000280218220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2205200341016a2203360200200028021821060240200141046a28020020036b41034b0d00200120034104108101200528020021030b200128020020036a20063600002005200341046a22033602000c030b20054102742105024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20053a0000200141086a200341016a22033602000c020b200541027441017221050240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20053b0000200141086a200341026a22033602000c010b200541027441027221050240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2005360000200141086a200341046a22033602000b024002400240200028021c220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028021c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000c040b20054102742100024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c030b200541027441017221000240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000c020b200541027441027221000240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000c010b0240200141046a280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41043a00002005200341016a220336020002400240024002402000280218220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2205200341016a2203360200200028021821060240200141046a28020020036b41034b0d00200120034104108101200528020021030b200128020020036a20063600002005200341046a22033602000c030b20054102742105024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20053a0000200141086a200341016a22033602000c020b200541027441017221050240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20053b0000200141086a200341026a22033602000c010b200541027441027221050240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2005360000200141086a200341046a22033602000b024002400240200028021c220541c000490d00200541808001490d012005418080808004490d02024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028021c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000c030b20054102742100024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000c020b200541027441017221000240200428020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000c010b200541027441027221000240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000b200241106a24000bf50403017f017e067f230041206b220224000240024002400240024002402000290300220342c000540d00200342808001540d012003428080808004540d02200379a7220441274d0d0341cedec80041364184dfc8001035000b2003a741027421050240200141046a280200200141086a22002802002204470d00200120044101108101200028020021040b200128020020046a20053a00002000200441016a3602000c030b2003a741027441017221050240200141046a280200200141086a220028020022046b41014b0d00200120044102108101200028020021040b200128020020046a20053b00002000200441026a3602000c020b2003a741027441027221050240200141046a280200200141086a220028020022046b41034b0d00200120044104108101200028020021040b200128020020046a20053600002000200441046a3602000c010b4108200441037622056b2106411320054102746b21070240200141046a280200200141086a22082802002204470d00200120044101108101200828020021040b2001280200220920046a20073a00002008200441016a220436020020022000290300220337030002402006450d00200541786a2100200141046a2107200141086a210603402003a72105024020072802002004470d0020012004410110810120062802002104200128020021090b200920046a20053a00002006200441016a220436020020034208882103200041016a22052000492108200521002008450d000b200220033703000b200350450d010b200241206a24000f0b2002411c6a4100360200200241186a41f4ddca003602002002420137020c20024194dfc8003602082002200241086a10d508000bd10503027f027e057f230041306b2202240002400240024002400240024020002802002203290300220442c000544100200341086a29030022055022001b0d0020044280800154410020001b0d01200442808080800454410020001b0d0220057920047942c0007c20054200521ba7220041e7004d0d0341cedec800413641dce0c8001035000b2004a741027421030240200141046a280200200141086a2802002200470d00200120004101108101200141086a28020021000b200128020020006a20033a0000200141086a200041016a3602000c030b2004a741027441017221060240200141046a280200200141086a220328020022006b41014b0d00200120004102108101200328020021000b200128020020006a20063b00002003200041026a3602000c020b2004a741027441027221060240200141046a280200200141086a220328020022006b41034b0d00200120004104108101200328020021000b200128020020006a20063600002003200041046a3602000c010b4110200041037622066b2107413320064102746b21080240200141046a280200200141086a22092802002200470d00200120004101108101200928020021000b2001280200220a20006a20083a00002009200041016a2200360200200329030021042002200341086a29030022053703102002200437030802402007450d00200641706a2103200141046a2108200141086a210703402004a72106024020082802002000470d00200120004101108101200728020021002001280200210a0b200a20006a20063a00002007200041016a22003602002004420888200542388684210420054208882105200341016a22062003492109200621032009450d000b20022004370308200220053703100b200420058450450d010b200241306a24000f0b2002412c6a4100360200200241286a41f4ddca003602002002420137021c20024194dfc800360218200241086a200241186a10d408000bd40401017f230041306b220224000240024002400240024002400240024020002802000e0701020304050600010b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c200241ec95c10036021820012000200241186a103b21010c060b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c200241f495c10036021820012000200241186a103b21010c050b2002200041046a36020c200241193602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241fc95c1003602182002200241106a36022820012000200241186a103b21010c040b2002200028020436020c200241023602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c2002418c96c1003602182002200241106a36022820012000200241186a103b21010c030b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c2002419c96c10036021820012000200241186a103b21010c020b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c200241a496c10036021820012000200241186a103b21010c010b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c200241ac96c10036021820012000200241186a103b21010b200241306a240020010bbe0201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002802002103410021000340200220006a41ff006a2003410f712204413072200441d7006a2004410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d02200141d1c5c0004102200220006a4180016a410020006b105321000c010b02402003412071450d0020002802002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d03200141d1c5c0004102200220006a4180016a410020006b105321000c010b20003502002001105021000b20024180016a240020000f0b200341800141bc89c000105e000b200341800141bc89c000105e000bd30201057f230041106b2202240002400240200128020841146a2203417f4c0d000240024020030d00410121040c010b200310382204450d020b4100210520024100360208200220043602002001410c6a21062002200336020402402003410f4b0d0020024100411010810120022802002104200228020821050b200420056a22032006290000370000200341086a200641086a2900003700002002200541106a36020820012802002001280208200210d601200128021c2101024020022802042206200228020822046b411f4b0d0020022004412010810120022802042106200228020821040b2002280200220520046a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a29000037000020002005200441206a109c0102402006450d00200510390b200241106a24000f0b1034000b1030000b8e0201057f230041106b22022400024002402000280208220341027441046a2204417f4c0d00200028020021000240024020040d00410121050c010b200410382205450d020b2002410036020820022004360204200220053602002002200310d2010240024020030d0020022802002106200228020821040c010b20034102742103200228020821040340200028020021050240200228020420046b41034b0d00200220044104108101200228020821040b200041046a21002002280200220620046a20053600002002200441046a22043602082003417c6a22030d000b0b200128020020012802042006200410a30202402002280204450d00200610390b200241106a24000f0b1034000b1030000b8e0201057f230041106b22022400024002402000280208220341027441046a2204417f4c0d00200028020021000240024020040d00410121050c010b200410382205450d020b2002410036020820022004360204200220053602002002200310d2010240024020030d0020022802002106200228020821040c010b20034102742103200228020821040340200028020021050240200228020420046b41034b0d00200220044104108101200228020821040b200041046a21002002280200220620046a20053600002002200441046a22043602082003417c6a22030d000b0b200128020020012802042006200410a30202402002280204450d00200610390b200241106a24000f0b1034000b1030000bfb0101057f02400240200128020822024105744104722203417f4c0d0020012802002101200310382204450d0120002004360200200041086a22054100360200200041046a220620033602002000200210d20102402002450d002002410574210420052802002103034002400240200628020020036b411f4d0d00200321020c010b200020034120108101200528020021020b2005200241206a2203360200200028020020026a22022001290000370000200241086a200141086a290000370000200241106a200141106a290000370000200241186a200141186a290000370000200141206a2101200441606a22040d000b0b0f0b1034000b1030000b920201087f02400240200128020822024103744104722203417f4c0d0020012802002104200310382201450d0120002001360200200041086a22054100360200200041046a220620033602002000200210d20102402002450d00200420024103746a21072005280200210203402004280200210102402006280200220320026b41034b0d0020002002410410810120062802002103200528020021020b2000280200220820026a20013600002005200241046a2201360200200441046a28020021090240200320016b41034b0d0020002001410410810120052802002101200028020021080b2005200141046a2202360200200820016a2009360000200441086a22042007470d000b0b0f0b1034000b1030000bd40101057f02400240200128020822024104744104722203417f4c0d0020012802002101200310382204450d0120002004360200200041086a22044100360200200041046a220520033602002000200210d20102402002450d00200120024104746a210603402001280200210302402005280200200428020022026b41034b0d00200020024104108101200428020021020b200028020020026a20033600002004200241046a360200200141046a2802002001410c6a280200200010d601200141106a22012006470d000b0b0f0b1034000b1030000bfb0101057f02400240200128020822024105744104722203417f4c0d0020012802002101200310382204450d0120002004360200200041086a22054100360200200041046a220620033602002000200210d20102402002450d002002410574210420052802002103034002400240200628020020036b411f4d0d00200321020c010b200020034120108101200528020021020b2005200241206a2203360200200028020020026a22022001290000370000200241086a200141086a290000370000200241106a200141106a290000370000200241186a200141186a290000370000200141206a2101200441606a22040d000b0b0f0b1034000b1030000bc90101077f2000280200210220012000280208220010d20102402000450d0020022000410c6c6a2103200141086a210403402002280200210020012002280208220510d2012002410c6a210202402005450d00200541027421062004280200210503402000280200210702400240200141046a28020020056b41034d0d00200521080c010b200120054104108101200428020021080b200041046a21002004200841046a2205360200200128020020086a20073600002006417c6a22060d000b0b20022003470d000b0b0b960301077f2000280200210220012000280208220010d20102402000450d0020022000412c6c6a2103200141086a22002802002104200141046a210503402002280200210602402005280200220720046b41034b0d0020012004410410810120052802002107200028020021040b2001280200220820046a20063600002000200441046a22043602000240200720046b411f4b0d002001200441201081012005280200210720002802002104200128020021080b200820046a220641186a2002411c6a290000370000200641106a200241146a290000370000200641086a2002410c6a2900003700002006200241046a2900003700002000200441206a2204360200200241246a28020021060240200720046b41034b0d0020012004410410810120002802002104200128020021080b200820046a20063600002000200441046a2204360200200241286a28020021060240200528020020046b41034b0d00200120044104108101200028020021040b200128020020046a20063600002000200441046a22043602002002412c6a22022003470d000b0b0bda0101087f2000280200210220012000280208220010d20102402000450d00200220004103746a2103200141086a22042802002100200141046a210503402002280200210602402005280200220720006b41034b0d0020012000410410810120052802002107200428020021000b2001280200220820006a20063600002004200041046a2206360200200241046a28020021090240200720066b41034b0d0020012006410410810120042802002106200128020021080b2004200641046a2200360200200820066a2009360000200241086a22022003470d000b0b0be30201027f0240200041ac026a2802002201450d0020002802a40221022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b0240200041a8026a2802002202450d002002410c6c450d0020002802a40210390b0240200041b8026a2802002202450d0020024104742101200041b0026a28020041086a2102034002402002280200450d002002417c6a28020010390b200241106a2102200141706a22010d000b0b0240200041b4026a28020041ffffffff0071450d0020002802b00210390b0240200041bc026a2802002202450d00200041c0026a280200450d00200210390b0240200041cc026a280200450d00200041c8026a28020010390b0240200041e0026a2802002202450d00200241c1006c450d0020002802dc0210390b20002802e80221020240200041f0026a2802002201450d00200210390b200020013602f002200020023602e8020bc90102037f017e230041106b2202240020002802082103200028020021004101210420024280808080104200200128021841a097c30041012001411c6a28020028020c1100001b22052001ad843703000240024020030d002005422088a721000c010b03402002200036020c200041016a210020022002410c6a41bc94c100106f21012003417f6a22030d000b20012d000421000b0240200041ff01710d00200228020022002802184198a0c00041012000411c6a28020028020c11000021040b200241106a240020040be90102047f037e024002402001280208220241ffffff3f712002470d0020024105742203417f4c0d00200128020021040240024020030d00410121010c010b200310382201450d020b2000410036020820002001360200200041046a2003410576220536020002402003450d0003402003450d01200441086a2900002106200441106a290000210720042900002108200141186a200441186a290000370000200141106a2007370000200141086a200637000020012008370000200141206a2101200341606a2103200441206a21042005417f6a22050d000b0b200020023602080f0b1034000b1030000beb0103027f017e047f230041f0036b2202240002400240024020012802082203ad42e8037e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510382206450d020b2000410036020820002006360200200041046a200541e8036e22073602000240200541e803490d002007210803402005450d012008450d04200241086a200110a3032006200241086a41e80310c30a41e8036a2106200541987c6a2105200141e8036a21012008417f6a22080d000b0b20002003360208200241f0036a24000f0b1034000b1030000b2007200741c4cfca00103c000bff0703027f017e027f230041c0076b220224000240024002400240024002400240024002400240024002400240024020012d00000e0b0102030405060708090a00010b200241106a200141086a10ab0341e80310382203450d0b200241d8036a200141046a28020010a3032003200241d8036a41e80310c30a2101200041086a200241106a41c80310c30a1a2000410a3a0000200041046a20013602000c0a0b200241106a200141046a10a403200241d8036a200141106a10a903200041003a00002000410c6a200241106a41086a280200360200200041046a2002290310370200200041106a20022903d803370200200041186a200241d8036a41086a2802003602000c090b200241106a200141046a10a403200241d8036a200141106a10a903200041013a00002000410c6a200241106a41086a280200360200200041046a2002290310370200200041106a20022903d803370200200041186a200241d8036a41086a2802003602000c080b200241106a200141046a10a403200241d8036a200141106a10a903200041023a00002000410c6a200241106a41086a280200360200200041046a2002290310370200200041106a20022903d803370200200041186a200241d8036a41086a2802003602000c070b200141106a2903002104200241d8036a200141046a10a403200041106a2004370300200041033a0000200041046a20022903d8033702002000410c6a200241e0036a2802003602000c060b200241106a200141046a10a403200241d8036a200141106a10ab032000410c6a200241186a280200360200200041046a2002290310370200200041106a200241d8036a41c80310c30a1a200041043a00000c050b2002200141046a10a403200241d8036a200141206a10ab03200241106a200141106a10a9032000410c6a200241086a280200360200200041046a2002290300370200200041206a200241d8036a41c80310c30a1a200041053a0000200041186a200241106a41086a280200360200200041106a20022903103702000c040b2001410c6a2802002203417f4c0d05200141046a2802002105200141186a290300210420012d000121010240024020030d00410121060c010b200310382206450d050b20062005200310c30a2105200041186a2004370300200020013a0001200041106a41003a00002000410c6a2003360200200041086a2003360200200041046a2005360200200041063a00000c030b200041073a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c020b200041083a0000200041046a200141046a2802003602000c010b200041093a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000b200241c0076a24000f0b1030000b1034000ba41405027f017e107f017e037f230041c0076b2202240002400240024020012802082203ad42f8037e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b200510382207450d020b410021082000410036020820002007360200200041046a200541f8036e22093602000240200541f803490d00200241e8036a41306a210a200241e8036a41206a210b200241e8036a41086a210c2009210d034020052008460d01200d450d044100210e024002400240024002400240024002400240024002400240200620086a22012802000e0c0b0102030405060708090a000b0b200241e8036a200141086a10a5034100210f41002110410021110240024002400240024002400240200141d0036a2d00000e0706010203040500060b200141dc036a2802002212417f4c0d13200141d4036a28020021010240024020120d00410121130c010b201210382213450d150b201241807e71211120132001201210c30a41807e71210f41062110201221140c050b200141d8036a2903002215a7221441807e712111200141e0036a29030021042015422088a72112410121100c040b200141d1036a2f0000200141d3036a2d000041107472210e200141d4036a2d0000211341022110410021110c030b200141d1036a2f0000200141d3036a2d000041107472210e200141d4036a280200221341807e71210f200141d8036a2d0000211441032110410021110c020b200141d1036a2f0000200141d3036a2d000041107472210e200141d8036a280200221441807e712111200141d4036a280200221341807e71210f200141e0036a3100002104200141dc036a2802002112410421100c010b200241b0076a41086a200141f0036a2d00003a00002002200141e8036a2903003703b007200141d1036a2f0000200141d3036a2d000041107472210e200141d4036a280200221341807e71210f200141d8036a2903002215a7221441807e712111200141e0036a29030021042015422088a72112410521100b200241d0036a41086a200c41086a290300370300200241d0036a41106a200c41106a290300370300200241c0036a41086a200b41086a2903003703002002200c2903003703d0032002200b2903003703c00320022802ec03211620022802e8032117200241286a200a41980310c30a1a200241106a41106a2004370300200241086a200241b0076a41086a29030037030020022012ad4220862011201441ff017172ad843703182002200f201341ff017172360214200220103a0010200220022903b0073703002002200e3b00112002200e4110763a0013410b210e0c0a0b4101210e0c090b4102210e0c080b4103210e0c070b2001410c6a2802002217417f4c0d09200141046a28020021010240024020170d00410121180c010b201710382218450d0b0b20182001201710c30a1a4104210e201721160c060b2001410c6a2802002217417f4c0d08200141046a28020021010240024020170d00410121180c010b201710382218450d0a0b20182001201710c30a1a4105210e201721160c050b200241e8036a200141086a10a503200241d0036a41086a200c41086a290300370300200241d0036a41106a200c41106a290300370300200241c0036a41086a200b41086a2903003703002002200c2903003703d0032002200b2903003703c00320022802ec03211620022802e8032117200241286a200a41980310c30a1a4106210e0c040b200241e8036a200141086a10a503200241d0036a41086a200c41086a290300370300200241d0036a41106a200c41106a290300370300200241c0036a41086a200b41086a2903003703002002200c2903003703d0032002200b2903003703c00320022802ec03211620022802e8032117200241286a200a41980310c30a1a4107210e0c030b2001410c6a2802002217417f4c0d05200141046a280200210e0240024020170d00410121180c010b201710382218450d070b2018200e201710c30a1a2002200141186a2903003703d8032002200141106a2903003703d0034108210e201721160c020b2001410c6a2802002217417f4c0d04200141046a280200210e0240024020170d00410121180c010b201710382218450d060b2018200e201710c30a1a4100211141002113410021140240024002400240024002400240200141106a2d00000e0706010203040500060b2001411c6a2802002216417f4c0d0a200141146a28020021010240024020160d00410121120c010b201610382212450d0c0b201641807e71211420122001201610c30a41807e71211141062113201621100c050b200141186a2903002215a7221041807e712114200141206a29030021042015422088a72116410121130c040b200141116a2f0000200141136a2d000041107472210e200141146a2d0000211241022113410021140c030b200141116a2f0000200141136a2d000041107472210e200141146a280200221241807e712111200141186a2d0000211041032113410021140c020b200141116a2f0000200141136a2d000041107472210e200141186a280200221041807e712114200141146a280200221241807e712111200141206a31000021042001411c6a2802002116410421130c010b200c200141306a2d00003a00002002200141286a2903003703e803200141116a2f0000200141136a2d000041107472210e200141146a280200221241807e712111200141186a2903002215a7221041807e712114200141206a29030021042015422088a72116410521130b200241d0036a41106a2004370300200241c0036a41086a200c290300370300200220133a00d003200220022903e8033703c0032002200e3b00d1032002200e4110763a00d30320022011201241ff0171723602d40320022016ad4220862014201041ff017172ad843703d8034109210e201721160c010b200241e8036a200141086a10a503200241d0036a41086a200c41086a290300370300200241d0036a41106a200c41106a290300370300200241c0036a41086a200b41086a2903003703002002200c2903003703d0032002200b2903003703c003200141d0036a2903002104200141d8036a290300211520022802ec03211620022802e8032117200241286a200a41980310c30a1a2002201537031820022004370310410a210e0b200720086a2201200e3602002001410c6a2016360200200141086a2017360200200141046a2018360200200141106a20022903d003370300200141186a200241d0036a41086a290300370300200141206a200241d0036a41106a290300370300200141286a20022903c003370300200141306a200241c0036a41086a290300370300200141386a200241286a41980310c30a1a200141e0036a200241106a41106a290300370300200141d8036a200241106a41086a290300370300200141d0036a2002290310370300200141e8036a2002290300370300200141f0036a200241086a290300370300200841f8036a2108200d417f6a220d0d000b0b20002003360208200241c0076a24000f0b1034000b1030000b2009200941c4cfca00103c000bfc2b01017f230041c0036b22022400024002400240024002400240024002400240024020012802000e09010203040506070800010b2002200141086a10a603200241386a200141c0006a10a603200241f0006a200141f8006a10a603200241a8016a200141b0016a10a603200241e0016a200141e8016a10a60320024198026a200141a0026a10a603200241d0026a200141d8026a10a60320024188036a20014190036a10a603200041386a200241306a290300370300200041306a200241286a290300370300200041286a200241206a290300370300200041206a200241186a290300370300200041186a200241106a290300370300200041106a200241086a29030037030020002002290300370308200041c0006a2002290338370300200041c8006a200241386a41086a290300370300200041d0006a200241386a41106a290300370300200041d8006a200241386a41186a290300370300200041e0006a200241386a41206a290300370300200041e8006a200241386a41286a290300370300200041f0006a200241386a41306a290300370300200041a8016a200241f0006a41306a290300370300200041a0016a200241f0006a41286a29030037030020004198016a200241f0006a41206a29030037030020004190016a200241f0006a41186a29030037030020004188016a200241f0006a41106a29030037030020004180016a200241f0006a41086a290300370300200041f8006a2002290370370300200041e0016a200241a8016a41306a290300370300200041d8016a200241a8016a41286a290300370300200041d0016a200241a8016a41206a290300370300200041c8016a200241a8016a41186a290300370300200041c0016a200241a8016a41106a290300370300200041b8016a200241a8016a41086a290300370300200041b0016a20022903a80137030020004198026a200241e0016a41306a29030037030020004190026a200241e0016a41286a29030037030020004188026a200241e0016a41206a29030037030020004180026a200241e0016a41186a290300370300200041f8016a200241e0016a41106a290300370300200041f0016a200241e0016a41086a290300370300200041e8016a20022903e001370300200041d0026a20024198026a41306a290300370300200041c8026a20024198026a41286a290300370300200041c0026a20024198026a41206a290300370300200041b8026a20024198026a41186a290300370300200041b0026a20024198026a41106a290300370300200041a8026a20024198026a41086a290300370300200041a0026a20022903980237030020004188036a200241d0026a41306a29030037030020004180036a200241d0026a41286a290300370300200041f8026a200241d0026a41206a290300370300200041f0026a200241d0026a41186a290300370300200041e8026a200241d0026a41106a290300370300200041e0026a200241d0026a41086a290300370300200041d8026a20022903d002370300200041c0036a20024188036a41306a290300370300200041b8036a20024188036a41286a290300370300200041b0036a20024188036a41206a290300370300200041a8036a20024188036a41186a290300370300200041a0036a20024188036a41106a29030037030020004198036a20024188036a41086a29030037030020004190036a200229038803370300200042083703000c080b200042003703000c070b20024188036a200141086a10a60320004201370300200041386a20024188036a41306a290300370300200041306a20024188036a41286a290300370300200041286a20024188036a41206a290300370300200041206a20024188036a41186a290300370300200041186a20024188036a41106a290300370300200041106a20024188036a41086a29030037030020002002290388033703080c060b200241d0026a200141086a10a60320024188036a200141c0006a10a603200041386a200241d0026a41306a290300370300200041306a200241d0026a41286a290300370300200041286a200241d0026a41206a290300370300200041206a200241d0026a41186a290300370300200041186a200241d0026a41106a290300370300200041106a200241d0026a41086a290300370300200020022903d002370308200041c0006a200229038803370300200041c8006a20024188036a41086a290300370300200041d0006a20024188036a41106a290300370300200041d8006a20024188036a41186a290300370300200041e0006a20024188036a41206a290300370300200041e8006a20024188036a41286a290300370300200041f0006a20024188036a41306a290300370300200042023703000c050b20024198026a200141086a10a603200241d0026a200141c0006a10a60320024188036a200141f8006a10a603200041386a20024198026a41306a290300370300200041306a20024198026a41286a290300370300200041286a20024198026a41206a290300370300200041206a20024198026a41186a290300370300200041186a20024198026a41106a290300370300200041106a20024198026a41086a2903003703002000200229039802370308200041c0006a20022903d002370300200041c8006a200241d0026a41086a290300370300200041d0006a200241d0026a41106a290300370300200041d8006a200241d0026a41186a290300370300200041e0006a200241d0026a41206a290300370300200041e8006a200241d0026a41286a290300370300200041f0006a200241d0026a41306a29030037030020004203370300200041a8016a20024188036a41306a290300370300200041a0016a20024188036a41286a29030037030020004198016a20024188036a41206a29030037030020004190016a20024188036a41186a29030037030020004188016a20024188036a41106a29030037030020004180016a20024188036a41086a290300370300200041f8006a2002290388033703000c040b200241e0016a200141086a10a60320024198026a200141c0006a10a603200241d0026a200141f8006a10a60320024188036a200141b0016a10a603200041386a200241e0016a41306a290300370300200041306a200241e0016a41286a290300370300200041286a200241e0016a41206a290300370300200041206a200241e0016a41186a290300370300200041186a200241e0016a41106a290300370300200041106a200241e0016a41086a290300370300200020022903e001370308200041c0006a200229039802370300200041c8006a20024198026a41086a290300370300200041d0006a20024198026a41106a290300370300200041d8006a20024198026a41186a290300370300200041e0006a20024198026a41206a290300370300200041e8006a20024198026a41286a290300370300200041f0006a20024198026a41306a290300370300200041a8016a200241d0026a41306a290300370300200041a0016a200241d0026a41286a29030037030020004198016a200241d0026a41206a29030037030020004190016a200241d0026a41186a29030037030020004188016a200241d0026a41106a29030037030020004180016a200241d0026a41086a290300370300200041f8006a20022903d002370300200041e0016a20024188036a41306a290300370300200041d8016a20024188036a41286a290300370300200041d0016a20024188036a41206a290300370300200041c8016a20024188036a41186a290300370300200041c0016a20024188036a41106a290300370300200041b8016a20024188036a41086a290300370300200041b0016a200229038803370300200042043703000c030b200241a8016a200141086a10a603200241e0016a200141c0006a10a60320024198026a200141f8006a10a603200241d0026a200141b0016a10a60320024188036a200141e8016a10a603200041386a200241a8016a41306a290300370300200041306a200241a8016a41286a290300370300200041286a200241a8016a41206a290300370300200041206a200241a8016a41186a290300370300200041186a200241a8016a41106a290300370300200041106a200241a8016a41086a290300370300200020022903a801370308200041c0006a20022903e001370300200041c8006a200241e0016a41086a290300370300200041d0006a200241e0016a41106a290300370300200041d8006a200241e0016a41186a290300370300200041e0006a200241e0016a41206a290300370300200041e8006a200241e0016a41286a290300370300200041f0006a200241e0016a41306a290300370300200041a8016a20024198026a41306a290300370300200041a0016a20024198026a41286a29030037030020004198016a20024198026a41206a29030037030020004190016a20024198026a41186a29030037030020004188016a20024198026a41106a29030037030020004180016a20024198026a41086a290300370300200041f8006a200229039802370300200041e0016a200241d0026a41306a290300370300200041d8016a200241d0026a41286a290300370300200041d0016a200241d0026a41206a290300370300200041c8016a200241d0026a41186a290300370300200041c0016a200241d0026a41106a290300370300200041b8016a200241d0026a41086a290300370300200041b0016a20022903d00237030020004198026a20024188036a41306a29030037030020004190026a20024188036a41286a29030037030020004188026a20024188036a41206a29030037030020004180026a20024188036a41186a290300370300200041f8016a20024188036a41106a290300370300200041f0016a20024188036a41086a290300370300200041e8016a200229038803370300200042053703000c020b200241f0006a200141086a10a603200241a8016a200141c0006a10a603200241e0016a200141f8006a10a60320024198026a200141b0016a10a603200241d0026a200141e8016a10a60320024188036a200141a0026a10a603200041386a200241f0006a41306a290300370300200041306a200241f0006a41286a290300370300200041286a200241f0006a41206a290300370300200041206a200241f0006a41186a290300370300200041186a200241f0006a41106a290300370300200041106a200241f0006a41086a29030037030020002002290370370308200041c0006a20022903a801370300200041c8006a200241a8016a41086a290300370300200041d0006a200241a8016a41106a290300370300200041d8006a200241a8016a41186a290300370300200041e0006a200241a8016a41206a290300370300200041e8006a200241a8016a41286a290300370300200041f0006a200241a8016a41306a290300370300200041a8016a200241e0016a41306a290300370300200041a0016a200241e0016a41286a29030037030020004198016a200241e0016a41206a29030037030020004190016a200241e0016a41186a29030037030020004188016a200241e0016a41106a29030037030020004180016a200241e0016a41086a290300370300200041f8006a20022903e001370300200041e0016a20024198026a41306a290300370300200041d8016a20024198026a41286a290300370300200041d0016a20024198026a41206a290300370300200041c8016a20024198026a41186a290300370300200041c0016a20024198026a41106a290300370300200041b8016a20024198026a41086a290300370300200041b0016a20022903980237030020004198026a200241d0026a41306a29030037030020004190026a200241d0026a41286a29030037030020004188026a200241d0026a41206a29030037030020004180026a200241d0026a41186a290300370300200041f8016a200241d0026a41106a290300370300200041f0016a200241d0026a41086a290300370300200041e8016a20022903d002370300200041d0026a20024188036a41306a290300370300200041c8026a20024188036a41286a290300370300200041c0026a20024188036a41206a290300370300200041b8026a20024188036a41186a290300370300200041b0026a20024188036a41106a290300370300200041a8026a20024188036a41086a290300370300200041a0026a200229038803370300200042063703000c010b200241386a200141086a10a603200241f0006a200141c0006a10a603200241a8016a200141f8006a10a603200241e0016a200141b0016a10a60320024198026a200141e8016a10a603200241d0026a200141a0026a10a60320024188036a200141d8026a10a603200041386a200241386a41306a290300370300200041306a200241386a41286a290300370300200041286a200241386a41206a290300370300200041206a200241386a41186a290300370300200041186a200241386a41106a290300370300200041106a200241386a41086a29030037030020002002290338370308200041c0006a2002290370370300200041c8006a200241f0006a41086a290300370300200041d0006a200241f0006a41106a290300370300200041d8006a200241f0006a41186a290300370300200041e0006a200241f0006a41206a290300370300200041e8006a200241f0006a41286a290300370300200041f0006a200241f0006a41306a290300370300200041a8016a200241a8016a41306a290300370300200041a0016a200241a8016a41286a29030037030020004198016a200241a8016a41206a29030037030020004190016a200241a8016a41186a29030037030020004188016a200241a8016a41106a29030037030020004180016a200241a8016a41086a290300370300200041f8006a20022903a801370300200041e0016a200241e0016a41306a290300370300200041d8016a200241e0016a41286a290300370300200041d0016a200241e0016a41206a290300370300200041c8016a200241e0016a41186a290300370300200041c0016a200241e0016a41106a290300370300200041b8016a200241e0016a41086a290300370300200041b0016a20022903e00137030020004198026a20024198026a41306a29030037030020004190026a20024198026a41286a29030037030020004188026a20024198026a41206a29030037030020004180026a20024198026a41186a290300370300200041f8016a20024198026a41106a290300370300200041f0016a20024198026a41086a290300370300200041e8016a200229039802370300200041d0026a200241d0026a41306a290300370300200041c8026a200241d0026a41286a290300370300200041c0026a200241d0026a41206a290300370300200041b8026a200241d0026a41186a290300370300200041b0026a200241d0026a41106a290300370300200041a8026a200241d0026a41086a290300370300200041a0026a20022903d00237030020004188036a20024188036a41306a29030037030020004180036a20024188036a41286a290300370300200041f8026a20024188036a41206a290300370300200041f0026a20024188036a41186a290300370300200041e8026a20024188036a41106a290300370300200041e0026a20024188036a41086a290300370300200041d8026a200229038803370300200042073703000b200241c0036a24000bee0801067f02400240024002400240024002400240024002400240024020012d00000e0a01020304050607080900010b410421024106210302400240024002400240024002400240200141046a2802000e0700010203040507000b410021030c050b200141106a2802002204417f4c0d0f200141086a2802002105410121034101210602402004450d00200410382206450d110b20062005200410c30a1a0c050b200141086a2802002106410221030c040b410321030c020b410421030c020b410521030b0b2001411c6a2802002105200141186a28020021070240024002400240024020012802140e050001020304000b410021020c030b410121020c020b410221020c010b410321020b200041093a00002000411c6a2005360200200041186a2007360200200041146a2002360200200041106a20043602002000410c6a2004360200200041086a2006360200200041046a20033602000f0b200041003a00000f0b200041013a0000200041046a200141046a2802003602000f0b4103210302400240024002400240200141246a2802000e0400010204000b410021030c020b200141306a2802002204417f4c0d09200141286a2802002102410121034101210602402004450d00200410382206450d0b0b20062002200410c30a1a0c020b410221030b0b200041023a000020002001290001370001200041306a20043602002000412c6a2004360200200041286a2006360200200041246a2003360200200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b4103210302400240024002400240200141046a2802000e0400010204000b410021030c020b200141106a2802002204417f4c0d08200141086a2802002102410121034101210602402004450d00200410382206450d0a0b20062002200410c30a1a0c020b410221030b0b200041033a0000200041186a2001290318370300200041106a20043602002000410c6a2004360200200041086a2006360200200041046a20033602000f0b4103210302400240024002400240200141186a2802000e0400010204000b410021030c020b200141246a2802002204417f4c0d072001411c6a2802002102410121034101210602402004450d00200410382206450d090b20062002200410c30a1a0c020b410221030b0b200041043a000020002001290001370001200041246a2004360200200041206a20043602002000411c6a2006360200200041186a2003360200200041116a200141116a280000360000200041096a200141096a2900003700000f0b200041053a0000200020012d00013a00010f0b200041063a0000200041106a200141106a290300370300200041086a200141086a2903003703000f0b2001410c6a2802002204417f4c0d01200141046a28020021010240024020040d00410121060c010b200410382206450d030b20062001200410c30a21012000410c6a2004360200200041086a2004360200200041046a2001360200200041073a00000f0b200041083a00000f0b1034000b1030000b8c0203017f017e077f02400240024020012802082202ad420c7e2203422088a70d002003a72204417f4c0d00200128020021054104210602402004450d00200410382206450d020b2000410036020820002006360200200041046a2004410c6e220736020002402004410c490d002007210803402004450d012008450d0420052802082201417f4c0d02200528020021090240024020010d004101210a0c010b20011038220a450d040b2005410c6a2105200a2009200110c30a210a200641086a2001360200200641046a20013602002006200a3602002006410c6a2106200441746a21042008417f6a22080d000b0b200020023602080f0b1034000b1030000b2007200741c4cfca00103c000be90102047f037e024002402001280208220241ffffff3f712002470d0020024105742203417f4c0d00200128020021040240024020030d00410121010c010b200310382201450d020b2000410036020820002001360200200041046a2003410576220536020002402003450d0003402003450d01200441086a2900002106200441106a290000210720042900002108200141186a200441186a290000370000200141106a2007370000200141086a200637000020012008370000200141206a2101200341606a2103200441206a21042005417f6a22050d000b0b200020023602080f0b1034000b1030000b810a05027f017e0d7f027e027f23004190086b2202240002400240024020012802082203ad4298047e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410821070c010b200510382207450d020b2000410036020820002007360200200041046a20054198046e220836020002402005419804490d0020024194046a21092002412c6a41046a210a20024188046a410472210b200241fa036a41026a210c200241e0076a210d20024180046a210e4100210f2008211003402005200f460d012010450d042010417f6a211041002111024002400240024002400240024002402006200f6a22012d00000e080701020304050600070b20024188046a200141106a10aa0320014190046a290300211220014188046a2903002113200141016a2d0000211120024180086a200141046a10a203200228029004211420022903880421042002412c6a200941cc0310c30a1a200241086a41186a200d41186a290300370300200241086a41106a200d41106a290300370300200241086a41086a200d41086a290300370300200c200229038008370100200c41086a20024180086a41086a2802003601002002200d29030037030820114100472115410721110c060b200241086a200141046a10a40320024188046a200141106a10ab03200c41086a200241086a41086a280200360100200c2002290308370100200229038804210420022802900421142002412c6a200941bc0310c30a1a410121110c050b20024180086a200141046a10a40320024188046a200141206a10ab03200241086a200141106a10a903200c41086a20024180086a41086a280200360100200c200229038008370100200a20024188046a41c80310c30a1a2002280210211420022903082104410221110c040b200241086a200141046a10a40320024188046a200141106a10a403200c41086a200241086a41086a280200360100200c200229030837010020022903880421042002280290042114410321110c030b4104211120024180086a200141046a10a40320024188046a200141206a10ab03200241086a200141106a10a903200c41086a20024180086a41086a280200360100200c200229038008370100200a20024188046a41c80310c30a1a20022802102114200229030821040c020b20024180086a200141046a10a40320024188046a200141206a10ab03200241086a200141106a10a903200c41086a20024180086a41086a280200360100200c200229038008370100200a20024188046a41c80310c30a1a2002280210211420022903082104410521110c010b200141106a290300210420024188046a200141186a10ab03200241086a200141046a10a40320022802880421142002412c6a200b41c40310c30a1a200c41086a200241086a41086a280200360100200c2002290308370100410621110b2007200f6a220120113a0000200141016a20153a0000200141026a20022901fa03370100200141086a200e290100370100200141186a2014360200200141106a20043703002001411c6a2002412c6a41cc0310c30a1a20014190046a201237030020014188046a201337030020014180046a200241086a41186a290300370300200141f8036a200241086a41106a290300370300200141f0036a200241086a41086a290300370300200141e8036a2002290308370300200f4198046a210f20100d000b0b2000200336020820024190086a24000f0b1034000b1030000b2008200841c4cfca00103c000bfa0e03077f027e037f230041e0036b2202240002400240024002400240024002400240024002400240024002400240024020012802000e0c0102030405060708090a0b00010b200241086a200141086a10ab034100210341002104410021050240024002400240024002400240200141d0036a2d00000e0706010203040500060b200141dc036a2802002206417f4c0d12200141d4036a28020021010240024020060d00410121070c010b200610382207450d140b200641807e71210520072001200610c30a41807e71210341062104200621080c050b200141d8036a2903002209a7220841807e712105200141e0036a290300210a2009422088a72106410121040c040b20012f00d103200141d3036a2d000041107472210b200141d4036a2d0000210741022104410021050c030b200141d4036a280200220741807e71210320012f00d103200141d3036a2d000041107472210b200141d8036a2d0000210841032104410021050c020b200141d8036a280200220841807e712105200141d4036a280200220741807e71210320012f00d103200141d3036a2d000041107472210b200141e0036a310000210a200141dc036a2802002106410421040c010b200241d0036a41086a200141f0036a2d00003a00002002200141e8036a2903003703d003200141d4036a280200220741807e712103200141d8036a2903002209a7220841807e71210520012f00d103200141d3036a2d000041107472210b200141e0036a290300210a2009422088a72106410521040b200041086a200241086a41c80310c30a1a200041d3036a200b4110763a0000200041d1036a200b3b0000200041e0036a200a370300200041d4036a2003200741ff017172360200200041d0036a20043a00002000410b360200200041e8036a20022903d003370300200041f0036a200241d0036a41086a290300370300200041d8036a2006ad4220862005200841ff017172ad843703000c0b0b200041003602000c0a0b200041013602000c090b200041023602000c080b200041033602000c070b2001410c6a280200220b417f4c0d072001280204210102400240200b0d00410121060c010b200b10382206450d090b20062001200b10c30a21012000410c6a200b360200200041086a200b36020020002001360204200041043602000c060b2001410c6a280200220b417f4c0d062001280204210102400240200b0d00410121060c010b200b10382206450d080b20062001200b10c30a21012000410c6a200b360200200041086a200b36020020002001360204200041053602000c050b200241086a200141086a10ab03200041086a200241086a41c80310c30a1a200041063602000c040b200241086a200141086a10ab03200041086a200241086a41c80310c30a1a200041073602000c030b2001410c6a280200220b417f4c0d032001280204210602400240200b0d00410121070c010b200b10382207450d050b20072006200b10c30a21062000410c6a200b360200200041086a200b3602002000200636020420004108360200200041186a200141186a290300370300200041106a20012903103703000c020b2001410c6a280200220b417f4c0d022001280204210602400240200b0d00410121070c010b200b10382207450d040b20072006200b10c30a210c4100210d4100210841002103024002400240024002400240024020012d00100e0706010203040500060b2001411c6a2802002207417f4c0d08200141146a28020021010240024020070d00410121040c010b200710382204450d0a0b200741807e71210320042001200710c30a41807e71210d41062108200721050c050b200141186a2903002209a7220541807e712103200141206a290300210a2009422088a72107410121080c040b20012f0011200141136a2d0000411074722106200141146a2d0000210441022108410021030c030b200141146a280200220441807e71210d20012f0011200141136a2d0000411074722106200141186a2d0000210541032108410021030c020b200141186a280200220541807e712103200141146a280200220441807e71210d20012f0011200141136a2d0000411074722106200141206a310000210a2001411c6a2802002107410421080c010b200241106a200141306a2d00003a00002002200141286a290300370308200141146a280200220441807e71210d200141186a2903002209a7220541807e71210320012f0011200141136a2d0000411074722106200141206a290300210a2009422088a72107410521080b2000200c36020420004109360200200041136a20064110763a0000200041116a20063b0000200041206a200a370300200041106a20083a00002000410c6a200b360200200041086a200b360200200041286a2002290308370300200041146a200d200441ff017172360200200041306a200241086a41086a290300370300200041186a2007ad4220862003200541ff017172ad843703000c010b200241086a200141086a10ab03200141d0036a290300210a200141d8036a2903002109200041086a200241086a41c80310c30a1a200041d8036a2009370300200041d0036a200a3703002000410a3602000b200241e0036a24000f0b1034000b1030000bfc2b01017f230041c0036b22022400024002400240024002400240024002400240024020012802000e09010203040506070800010b2002200141086a10d103200241386a200141c0006a10d103200241f0006a200141f8006a10d103200241a8016a200141b0016a10d103200241e0016a200141e8016a10d10320024198026a200141a0026a10d103200241d0026a200141d8026a10d10320024188036a20014190036a10d103200041386a200241306a290300370300200041306a200241286a290300370300200041286a200241206a290300370300200041206a200241186a290300370300200041186a200241106a290300370300200041106a200241086a29030037030020002002290300370308200041c0006a2002290338370300200041c8006a200241386a41086a290300370300200041d0006a200241386a41106a290300370300200041d8006a200241386a41186a290300370300200041e0006a200241386a41206a290300370300200041e8006a200241386a41286a290300370300200041f0006a200241386a41306a290300370300200041a8016a200241f0006a41306a290300370300200041a0016a200241f0006a41286a29030037030020004198016a200241f0006a41206a29030037030020004190016a200241f0006a41186a29030037030020004188016a200241f0006a41106a29030037030020004180016a200241f0006a41086a290300370300200041f8006a2002290370370300200041e0016a200241a8016a41306a290300370300200041d8016a200241a8016a41286a290300370300200041d0016a200241a8016a41206a290300370300200041c8016a200241a8016a41186a290300370300200041c0016a200241a8016a41106a290300370300200041b8016a200241a8016a41086a290300370300200041b0016a20022903a80137030020004198026a200241e0016a41306a29030037030020004190026a200241e0016a41286a29030037030020004188026a200241e0016a41206a29030037030020004180026a200241e0016a41186a290300370300200041f8016a200241e0016a41106a290300370300200041f0016a200241e0016a41086a290300370300200041e8016a20022903e001370300200041d0026a20024198026a41306a290300370300200041c8026a20024198026a41286a290300370300200041c0026a20024198026a41206a290300370300200041b8026a20024198026a41186a290300370300200041b0026a20024198026a41106a290300370300200041a8026a20024198026a41086a290300370300200041a0026a20022903980237030020004188036a200241d0026a41306a29030037030020004180036a200241d0026a41286a290300370300200041f8026a200241d0026a41206a290300370300200041f0026a200241d0026a41186a290300370300200041e8026a200241d0026a41106a290300370300200041e0026a200241d0026a41086a290300370300200041d8026a20022903d002370300200041c0036a20024188036a41306a290300370300200041b8036a20024188036a41286a290300370300200041b0036a20024188036a41206a290300370300200041a8036a20024188036a41186a290300370300200041a0036a20024188036a41106a29030037030020004198036a20024188036a41086a29030037030020004190036a200229038803370300200042083703000c080b200042003703000c070b20024188036a200141086a10d10320004201370300200041386a20024188036a41306a290300370300200041306a20024188036a41286a290300370300200041286a20024188036a41206a290300370300200041206a20024188036a41186a290300370300200041186a20024188036a41106a290300370300200041106a20024188036a41086a29030037030020002002290388033703080c060b200241d0026a200141086a10d10320024188036a200141c0006a10d103200041386a200241d0026a41306a290300370300200041306a200241d0026a41286a290300370300200041286a200241d0026a41206a290300370300200041206a200241d0026a41186a290300370300200041186a200241d0026a41106a290300370300200041106a200241d0026a41086a290300370300200020022903d002370308200041c0006a200229038803370300200041c8006a20024188036a41086a290300370300200041d0006a20024188036a41106a290300370300200041d8006a20024188036a41186a290300370300200041e0006a20024188036a41206a290300370300200041e8006a20024188036a41286a290300370300200041f0006a20024188036a41306a290300370300200042023703000c050b20024198026a200141086a10d103200241d0026a200141c0006a10d10320024188036a200141f8006a10d103200041386a20024198026a41306a290300370300200041306a20024198026a41286a290300370300200041286a20024198026a41206a290300370300200041206a20024198026a41186a290300370300200041186a20024198026a41106a290300370300200041106a20024198026a41086a2903003703002000200229039802370308200041c0006a20022903d002370300200041c8006a200241d0026a41086a290300370300200041d0006a200241d0026a41106a290300370300200041d8006a200241d0026a41186a290300370300200041e0006a200241d0026a41206a290300370300200041e8006a200241d0026a41286a290300370300200041f0006a200241d0026a41306a29030037030020004203370300200041a8016a20024188036a41306a290300370300200041a0016a20024188036a41286a29030037030020004198016a20024188036a41206a29030037030020004190016a20024188036a41186a29030037030020004188016a20024188036a41106a29030037030020004180016a20024188036a41086a290300370300200041f8006a2002290388033703000c040b200241e0016a200141086a10d10320024198026a200141c0006a10d103200241d0026a200141f8006a10d10320024188036a200141b0016a10d103200041386a200241e0016a41306a290300370300200041306a200241e0016a41286a290300370300200041286a200241e0016a41206a290300370300200041206a200241e0016a41186a290300370300200041186a200241e0016a41106a290300370300200041106a200241e0016a41086a290300370300200020022903e001370308200041c0006a200229039802370300200041c8006a20024198026a41086a290300370300200041d0006a20024198026a41106a290300370300200041d8006a20024198026a41186a290300370300200041e0006a20024198026a41206a290300370300200041e8006a20024198026a41286a290300370300200041f0006a20024198026a41306a290300370300200041a8016a200241d0026a41306a290300370300200041a0016a200241d0026a41286a29030037030020004198016a200241d0026a41206a29030037030020004190016a200241d0026a41186a29030037030020004188016a200241d0026a41106a29030037030020004180016a200241d0026a41086a290300370300200041f8006a20022903d002370300200041e0016a20024188036a41306a290300370300200041d8016a20024188036a41286a290300370300200041d0016a20024188036a41206a290300370300200041c8016a20024188036a41186a290300370300200041c0016a20024188036a41106a290300370300200041b8016a20024188036a41086a290300370300200041b0016a200229038803370300200042043703000c030b200241a8016a200141086a10d103200241e0016a200141c0006a10d10320024198026a200141f8006a10d103200241d0026a200141b0016a10d10320024188036a200141e8016a10d103200041386a200241a8016a41306a290300370300200041306a200241a8016a41286a290300370300200041286a200241a8016a41206a290300370300200041206a200241a8016a41186a290300370300200041186a200241a8016a41106a290300370300200041106a200241a8016a41086a290300370300200020022903a801370308200041c0006a20022903e001370300200041c8006a200241e0016a41086a290300370300200041d0006a200241e0016a41106a290300370300200041d8006a200241e0016a41186a290300370300200041e0006a200241e0016a41206a290300370300200041e8006a200241e0016a41286a290300370300200041f0006a200241e0016a41306a290300370300200041a8016a20024198026a41306a290300370300200041a0016a20024198026a41286a29030037030020004198016a20024198026a41206a29030037030020004190016a20024198026a41186a29030037030020004188016a20024198026a41106a29030037030020004180016a20024198026a41086a290300370300200041f8006a200229039802370300200041e0016a200241d0026a41306a290300370300200041d8016a200241d0026a41286a290300370300200041d0016a200241d0026a41206a290300370300200041c8016a200241d0026a41186a290300370300200041c0016a200241d0026a41106a290300370300200041b8016a200241d0026a41086a290300370300200041b0016a20022903d00237030020004198026a20024188036a41306a29030037030020004190026a20024188036a41286a29030037030020004188026a20024188036a41206a29030037030020004180026a20024188036a41186a290300370300200041f8016a20024188036a41106a290300370300200041f0016a20024188036a41086a290300370300200041e8016a200229038803370300200042053703000c020b200241f0006a200141086a10d103200241a8016a200141c0006a10d103200241e0016a200141f8006a10d10320024198026a200141b0016a10d103200241d0026a200141e8016a10d10320024188036a200141a0026a10d103200041386a200241f0006a41306a290300370300200041306a200241f0006a41286a290300370300200041286a200241f0006a41206a290300370300200041206a200241f0006a41186a290300370300200041186a200241f0006a41106a290300370300200041106a200241f0006a41086a29030037030020002002290370370308200041c0006a20022903a801370300200041c8006a200241a8016a41086a290300370300200041d0006a200241a8016a41106a290300370300200041d8006a200241a8016a41186a290300370300200041e0006a200241a8016a41206a290300370300200041e8006a200241a8016a41286a290300370300200041f0006a200241a8016a41306a290300370300200041a8016a200241e0016a41306a290300370300200041a0016a200241e0016a41286a29030037030020004198016a200241e0016a41206a29030037030020004190016a200241e0016a41186a29030037030020004188016a200241e0016a41106a29030037030020004180016a200241e0016a41086a290300370300200041f8006a20022903e001370300200041e0016a20024198026a41306a290300370300200041d8016a20024198026a41286a290300370300200041d0016a20024198026a41206a290300370300200041c8016a20024198026a41186a290300370300200041c0016a20024198026a41106a290300370300200041b8016a20024198026a41086a290300370300200041b0016a20022903980237030020004198026a200241d0026a41306a29030037030020004190026a200241d0026a41286a29030037030020004188026a200241d0026a41206a29030037030020004180026a200241d0026a41186a290300370300200041f8016a200241d0026a41106a290300370300200041f0016a200241d0026a41086a290300370300200041e8016a20022903d002370300200041d0026a20024188036a41306a290300370300200041c8026a20024188036a41286a290300370300200041c0026a20024188036a41206a290300370300200041b8026a20024188036a41186a290300370300200041b0026a20024188036a41106a290300370300200041a8026a20024188036a41086a290300370300200041a0026a200229038803370300200042063703000c010b200241386a200141086a10d103200241f0006a200141c0006a10d103200241a8016a200141f8006a10d103200241e0016a200141b0016a10d10320024198026a200141e8016a10d103200241d0026a200141a0026a10d10320024188036a200141d8026a10d103200041386a200241386a41306a290300370300200041306a200241386a41286a290300370300200041286a200241386a41206a290300370300200041206a200241386a41186a290300370300200041186a200241386a41106a290300370300200041106a200241386a41086a29030037030020002002290338370308200041c0006a2002290370370300200041c8006a200241f0006a41086a290300370300200041d0006a200241f0006a41106a290300370300200041d8006a200241f0006a41186a290300370300200041e0006a200241f0006a41206a290300370300200041e8006a200241f0006a41286a290300370300200041f0006a200241f0006a41306a290300370300200041a8016a200241a8016a41306a290300370300200041a0016a200241a8016a41286a29030037030020004198016a200241a8016a41206a29030037030020004190016a200241a8016a41186a29030037030020004188016a200241a8016a41106a29030037030020004180016a200241a8016a41086a290300370300200041f8006a20022903a801370300200041e0016a200241e0016a41306a290300370300200041d8016a200241e0016a41286a290300370300200041d0016a200241e0016a41206a290300370300200041c8016a200241e0016a41186a290300370300200041c0016a200241e0016a41106a290300370300200041b8016a200241e0016a41086a290300370300200041b0016a20022903e00137030020004198026a20024198026a41306a29030037030020004190026a20024198026a41286a29030037030020004188026a20024198026a41206a29030037030020004180026a20024198026a41186a290300370300200041f8016a20024198026a41106a290300370300200041f0016a20024198026a41086a290300370300200041e8016a200229039802370300200041d0026a200241d0026a41306a290300370300200041c8026a200241d0026a41286a290300370300200041c0026a200241d0026a41206a290300370300200041b8026a200241d0026a41186a290300370300200041b0026a200241d0026a41106a290300370300200041a8026a200241d0026a41086a290300370300200041a0026a20022903d00237030020004188036a20024188036a41306a29030037030020004180036a20024188036a41286a290300370300200041f8026a20024188036a41206a290300370300200041f0026a20024188036a41186a290300370300200041e8026a20024188036a41106a290300370300200041e0026a20024188036a41086a290300370300200041d8026a200229038803370300200042073703000b200241c0036a24000be90102047f037e024002402001280208220241ffffff3f712002470d0020024105742203417f4c0d00200128020021040240024020030d00410121010c010b200310382201450d020b2000410036020820002001360200200041046a2003410576220536020002402003450d0003402003450d01200441086a2900002106200441106a290000210720042900002108200141186a200441186a290000370000200141106a2007370000200141086a200637000020012008370000200141206a2101200341606a2103200441206a21042005417f6a22050d000b0b200020023602080f0b1034000b1030000b9b0201047f024020002802082201450d0020002802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b0240200041046a2802002202450d00200241f0006c450d00200028020010390b0bcd0101017f0240024002400240024020002802000e0404000102030b0240200041086a2802004125490d00200041106a28020010390b200041386a280200450d03200041346a28020010390f0b200041086a2802004125490d02200041106a28020010390f0b20002802041039200041086a2802002201450d012000410c6a280200450d01200110390c010b0240200041086a2802004125490d00200041106a28020010390b200041346a2802001039200041386a2802002201450d002000413c6a280200450d00200110390f0b0ba10503037f017e047f230041e0026b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b200228020c2203200128020441f0006e2204200420034b1bad42f0007e2205422088a70d012005a72206417f4c0d010240024020060d00410421070c010b200610382207450d030b4100210420024100360218200220073602102002200641f0006e360214024002402003450d00200241f0016a41086a21080340200241f0016a200110b00320022802f401210620022802f001210920024188016a200841e80010c30a1a2006450d02200241206a20024188016a41e80010c30a1a024020042002280214470d00200241106a200410b10320022802102107200228021821040b2007200441f0006c6a2204200636020420042009360200200441086a200241206a41e80010c30a1a2002200228021841016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b200041003602002002280210210102402004450d002001200441f0006c6a2109200121040340024020042203410c6a2802002206450d0020032802042104200641246c210603400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010390c030b2004410c6a280200450d02200441086a28020010390c020b2004410c6a280200450d01200441086a28020010390c010b200441086a280200450d00200441046a28020010390b200441246a21042006415c6a22060d000b0b200341f0006a21040240200341086a2802002206450d00200641246c450d00200328020410390b20042009470d000b0b20022802142204450d00200441f0006c450d00200110390b200241e0026a24000f0b1034000b1030000bac1202167f017e23004180016b22022400200241d0006a41047221032001280204210441002105417f2106024002400340200420054622070d01200128020022082d000021092001200420066a3602042001200841016a360200200320056a20093a00002002200541016a22083602502006417f6a21062008210520084120470d000b200241c8006a41026a2205200241dd006a2d00003a00002002200241e9006a22062800003602782002200241ec006a28000036007b200220022f01543b014c200220022d00563a004e2002200241db006a2f00003b0148200241de006a280100210a200241e5006a280000210b200241f0006a280200210c2002280057210d200228007b210e200241f8006a41026a2208200241e4006a2d00003a00002002200241e2006a2f01003b0178200241c4006a41026a2204200241eb006a2d00003a0000200220062f00003b0144200241d0006a41026a20022d004e3a0000200220022f014c3b0150200241c0006a41026a20052d00003a0000200220022f01483b01402002413c6a41026a20082d00003a0000200220022f01783b013c200241386a41026a20042d00003a0000200220022f01443b01380c010b0b200241146a41026a200241d0006a41026a2d00003a0000200241106a41026a200241c0006a41026a2d00003a00002002410c6a41026a2002413c6a41026a2d00003a0000200241086a41026a200241386a41026a2d00003a0000200220022f01503b0114200220022f01403b0110200220022f013c3b010c200220022f01383b01080240024002400240024020070d002002200110ad0120022802000d012002280204210f200241d0006a41047221032001280204210441002105417f2106024002400340200420054622070d01200128020022082d000021092001200420066a3602042001200841016a360200200320056a20093a00002002200541016a22083602502006417f6a21062008210520084120470d000b200241c8006a41026a2205200241dd006a2d00003a00002002200241e9006a22062800003602782002200241ec006a28000036007b200220022f01543b014c200220022d00563a004e2002200241db006a2f00003b0148200241de006a2801002110200241e5006a2800002111200241f0006a280200211220022800572113200228007b2114200241f8006a41026a2209200241e4006a2d00003a00002002200241e2006a2f01003b0178200241c4006a41026a2203200241eb006a2d00003a0000200220062f00003b0144200241d0006a41026a20022d004e3a0000200220022f014c3b0150200241c0006a41026a20052d00003a0000200220022f01483b01402002413c6a41026a20092d00003a0000200220022f01783b013c200241386a41026a20032d00003a0000200220022f01443b0138200420086b21040c010b410021040b200241246a41026a200241d0006a41026a2d00003a0000200241206a41026a200241c0006a41026a2d00003a00002002411c6a41026a2002413c6a41026a2d00003a0000200241186a41026a200241386a41026a2d00003a0000200220022f01503b0124200220022f01403b0120200220022f013c3b011c200220022f01383b011820070d02200241d0006a410472210341002105417f2106024002400340200420054622070d01200128020022082d000021092001200420066a3602042001200841016a360200200320056a20093a00002002200541016a22083602502006417f6a21062008210520084120470d000b200241c8006a41026a2203200241dd006a2d00003a00002002200241e9006a22152800003602782002200241ec006a28000036007b200220022f01543b014c200220022d00563a004e2002200241db006a2f00003b0148200241de006a2801002105200241e5006a2800002106200241f0006a280200210820022800572104200228007b2109200241f8006a41026a2216200241e4006a2d00003a00002002200241e2006a2f01003b0178200241c4006a41026a2217200241eb006a2d00003a0000200220152f00003b0144200241d0006a41026a20022d004e3a0000200220022f014c3b0150200241c0006a41026a20032d00003a0000200220022f01483b01402002413c6a41026a20162d00003a0000200220022f01783b013c200241386a41026a20172d00003a0000200220022f01443b01380c010b0b200241346a41026a200241d0006a41026a2d00003a0000200241306a41026a200241c0006a41026a2d00003a00002002412c6a41026a2002413c6a41026a2d00003a0000200241286a41026a200241386a41026a2d00003a0000200220022f01503b0134200220022f01403b0130200220022f013c3b012c200220022f01383b012820070d03200241d0006a2001109a08024020022802502201450d0020022902542118200020022f01103b00172000200a36001a200020022f010c3b001e2000200b360021200020022f01083b0025200041106a20022f01143b0000200041136a200d360000200041126a200241146a41026a2d00003a0000200041196a200241106a41026a2d00003a0000200041206a2002410c6a41026a2d00003a0000200041276a200241086a41026a2d00003a00002000412c6a200c360000200041286a200e360000200041336a20133600002000201036003a20002011360041200041306a20022f01243b0000200041326a200241246a41026a2d00003a0000200041396a200241206a41026a2d00003a0000200020022f01203b0037200041c0006a2002411c6a41026a2d00003a0000200020022f011c3b003e200020022f01183b0045200041c7006a200241186a41026a2d00003a0000200041cc006a2012360000200041c8006a2014360000200041d2006a200241346a41026a2d00003a0000200041d0006a20022f01343b0000200041d3006a2004360000200041d9006a200241306a41026a2d00003a0000200020022f01303b00572000200536005a200041e0006a2002412c6a41026a2d00003a0000200020022f012c3b005e20002006360061200041e7006a200241286a41026a2d00003a0000200020022f01283b0065200041ec006a2008360000200041e8006a200936000020002018370208200020013602042000200f3602000c050b200041003602040c040b200041003602040c030b200041003602040c020b200041003602040c010b200041003602040b20024180016a24000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42f0007e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141f0006c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141f0006e360200200241206a24000f0b1034000bfd0501147f230041d0006b220224002002200110bb01024002402002280200450d00200041003602000c010b02400240024020022802042203200128020022042802044105762205200520034b1b22054105742206417f4c0d0041012107024002402005450d00200610382207450d010b20012001280204220841016a2206360204200241003602102002200536020c20022007360208200620012802084b0d0202402003450d00200241286a4104722109200241c1006a210a2002413a6a210b200241336a210c4100210d4100210e0340200e41016a210e2004280204210f417f210641002105024002400340200f2005460d01200428020022102d000021112004200f20066a3602042004201041016a360200200920056a20113a00002002200541016a22103602282006417f6a21062010210520104120460d020c000b0b20004100360200200228020c21050c060b200241206a41026a2206200c41026a2d00003a00002002411c6a41026a2210200b41026a2d00003a0000200220092f01003b01242002200c2f00003b01202002200b2f00003b011c2002200941026a2d00003a00262002280248210f20022802442111200228003d211220022801362113200228002f2114200241186a41026a2215200a41026a2d00003a00002002200a2f00003b01180240200d200228020c470d00200241086a200d410110f502200228020821072002280210210d0b2007200d4105746a220520022f01243b0000200541026a20022d00263a0000200541096a20062d00003a0000200520022f01203b0007200541106a20102d00003a0000200520022f011c3b000e200520143600032005201336000a20052012360011200541176a20152d00003a0000200520022f01183b00152005200f36001c200520113600182002200d41016a220d360210200e2003470d000b0b2001200836020420002002290308370200200041086a200241086a41086a2802003602000c040b1030000b1034000b200041003602000b200541ffffff3f71450d00200228020810390b200241d0006a24000bf10701167f230041f0006b220224002002200110bb01024002402002280200450d00200041003602000c010b024002400240024020022802042203200128020022042802044105762205200520034b1b22054105742206417f4c0d004101210702402005450d00200610382207450d020b20012001280204220841016a2206360204200241003602102002200536020c20022007360208200620012802084b0d02024002402003450d00200241c8006a4104722109200241e1006a210a200241da006a210b200241d3006a210c4100210d4100210e0340200e41016a210e2004280204210f417f21104100210502400340200f20052206460d01200428020022052d000021112004200f20106a3602042004200541016a360200200920066a20113a00002002200641016a22053602482010417f6a211020054120470d000b200241c0006a41026a200c41026a2d00003a00002002413c6a41026a200b41026a2d00003a0000200220092f01003b01442002200c2f00003b01402002200b2f00003b013c2002200941026a2d00003a0046200228004f211220022801562113200228005d21142002280264211520022802682116200241386a41026a200a41026a2d00003a00002002200a2f00003b01380b200241346a41026a220520022d00463a0000200241306a41026a2210200241c0006a41026a2d00003a00002002412c6a41026a22112002413c6a41026a2d00003a0000200241286a41026a2217200241386a41026a2d00003a0000200220022f01443b0134200220022f01403b0130200220022f013c3b012c200220022f01383b0128200f2006460d02200241246a41026a220620052d00003a0000200241206a41026a220f20102d00003a00002002411c6a41026a221020112d00003a0000200241186a41026a221120172d00003a0000200220022f01343b0124200220022f01303b0120200220022f012c3b011c200220022f01283b01180240200d200228020c470d00200241086a200d410110f502200228020821072002280210210d0b2007200d4105746a220520022f01243b0000200541026a20062d00003a0000200541096a200f2d00003a0000200520022f01203b0007200541106a20102d00003a0000200520022f011c3b000e200520123600032005201336000a20052014360011200541176a20112d00003a0000200520022f01183b00152005201636001c200520153600182002200d41016a220d360210200e2003470d000b0b2001200836020420002002290308370200200041086a200241086a41086a2802003602000c050b20004100360200200228020c21050c030b1034000b1030000b200041003602000b200541ffffff3f71450d00200228020810390b200241f0006a24000bd90102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42f8037e2205422088a74541037421022005a721040240024020010d00200341003602100c010b200341106a41086a41083602002003200141f8036c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141f8036e360200200341206a24000f0b1034000ba90303037f017e027f230041306b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d012005a72206417f4c0d010240024020060d00410421070c010b200610382207450d030b41002104200241003602182002200736021020022006410c6e360214024002402003450d000340200241206a200110b60320022802202206450d0220022902242105024020042002280214470d00200241106a200410b70320022802102107200228021821040b20072004410c6c6a22042005370204200420063602002002200228021841016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b200041003602002002280210210602402004450d002004410c6c21032006210403400240200441046a28020041ffffffff0371450d00200428020010390b2004410c6a2104200341746a22030d000b0b20022802142204450d002004410c6c450d00200610390b200241306a24000f0b1034000b1030000bd80201067f230041206b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b200228020c2203200128020422044102762205200520034b1b22064102742205417f4c0d010240024020060d00410421070c010b200510382207450d030b41002105200241003602182002200636021420022007360210024002402003450d00034020044104490d0220012004417c6a220436020420012001280200220641046a36020020062800002106024020052002280214470d00200241106a2005410110be0320022802102107200228021821050b200720054102746a20063602002002200228021841016a22053602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b20004100360200200228021441ffffffff0371450d00200228021010390b200241206a24000f0b1034000b1030000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad420c7e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a410436020020022001410c6c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410c6e360200200241206a24000f0b1034000bd90503037f017e047f230041e0026b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240200228020c2203200128020028020441f0006e2204200420034b1bad42f0007e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b200410382206450d020b2001200128020441016a220736020420024100360218200220063602102002200441f0006e360214200720012802084b0d02024002402003450d00200241f0016a41086a2108410021040340200241f0016a200110b90320022802f401210720022802f001210920024188016a200841e80010c30a1a2007450d02200241206a20024188016a41e80010c30a1a024020042002280214470d00200241106a200410b10320022802102106200228021821040b2006200441f0006c6a2204200736020420042009360200200441086a200241206a41e80010c30a1a2002200228021841016a22043602182003417f6a22030d000b200128020421070b2000200229031037020020012007417f6a360204200041086a200241106a41086a2802003602000c050b20004100360200200228021021062004450d032006200441f0006c6a2103200621040340024020042201410c6a2802002207450d0020012802042104200741246c210703400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010390c030b2004410c6a280200450d02200441086a28020010390c020b2004410c6a280200450d01200441086a28020010390c010b200441086a280200450d00200441046a28020010390b200441246a21042007415c6a22070d000b0b200141f0006a21040240200141086a2802002207450d00200741246c450d00200128020410390b20042003470d000c040b0b1034000b1030000b200041003602000b20022802142204450d00200441f0006c450d00200610390b200241e0026a24000bc92405187f017e0a7f017e027f230041b0026b22022400200241c0016a410472210320012802002204280204210541002106417f2107024003400240200520062208470d000c020b200428020022062d000021092004200520076a3602042004200641016a360200200320086a20093a00002002200841016a22063602c0012007417f6a210720064120470d000b20024190016a41026a200241cd016a2d00003a000020024180016a41026a200241d4016a2d00003a0000200220022f01c4013b019c02200220022d00c6013a009e022002200241cb016a2f00003b0190012002200241d2016a2f01003b018001200241ce016a280100210a200241d5016a280000210b200241dc016a280200210c200241e0016a280200210d20022800c701210e200241f0006a41026a200241db016a2d00003a00002002200241d9016a2f00003b01700b2002413c6a41026a20022d009e023a0000200241386a41026a20024190016a41026a2d00003a0000200241346a41026a20024180016a41026a2d00003a0000200241306a41026a200241f0006a41026a2d00003a0000200220022f019c023b013c200220022f0190013b0138200220022f0180013b0134200220022f01703b01300240024002400240024002400240024002400240024020052008460d00200241286a200110bb0120022802280d01200228022c210f200241c0016a41047221032004280204210541002106417f2107024003400240200520062208470d00410021090c020b200428020022062d000021092004200520076a3602042004200641016a360200200320086a20093a00002002200841016a22063602c0012007417f6a210720064120470d000b20024190016a41026a200241cd016a2d00003a000020024180016a41026a200241d4016a2d00003a0000200220022f01c4013b019c02200220022d00c6013a009e022002200241cb016a2f00003b0190012002200241d2016a2f01003b018001200241ce016a2801002110200241d5016a2800002111200241dc016a2802002112200241e0016a280200211320022800c7012114200241f0006a41026a200241db016a2d00003a00002002200241d9016a2f00003b0170200520066b21090b200241cc006a41026a20022d009e023a0000200241c8006a41026a20024190016a41026a2d00003a0000200241c4006a41026a20024180016a41026a2d00003a0000200241c0006a41026a200241f0006a41026a2d00003a0000200220022f019c023b014c200220022f0190013b0148200220022f0180013b0144200220022f01703b014020052008460d02200241c0016a410472210341002106417f2107024003400240200920062208470d000c020b200428020022062d000021052004200920076a3602042004200641016a360200200320086a20053a00002002200841016a22063602c0012007417f6a210720064120470d000b20024190016a41026a200241cd016a2d00003a000020024180016a41026a200241d4016a2d00003a0000200220022f01c4013b019c02200220022d00c6013a009e022002200241cb016a2f00003b0190012002200241d2016a2f01003b018001200241ce016a2801002115200241d5016a2800002116200241dc016a2802002117200241e0016a280200210320022800c7012118200241f0006a41026a200241db016a2d00003a00002002200241d9016a2f00003b01700b200241dc006a41026a20022d009e023a0000200241d8006a41026a20024190016a41026a2d00003a0000200241d4006a41026a20024180016a41026a2d00003a0000200241d0006a41026a200241f0006a41026a2d00003a0000200220022f019c023b015c200220022f0190013b0158200220022f0180013b0154200220022f01703b015020092008460d05200241206a200110bb0120022802200d0920022802242219200428020441246e2206200620194b1bad42247e221a422088a70d03201aa72206417f4c0d030240024020060d00410421080c010b200610382208450d050b2001200128020441016a220736020420024100360268200220083602602002200641246e360264200720012802084b0d08024002400240024002402019450d00200241c0016a410472211b20024192026a211c200241ff016a211d200241a8026a211e200241dd016a211f200241c0016a41106a212041002121034020042802042206450d0d200428020022082d0000210720042006417f6a3602042004200841016a3602000240024002400240024002400240024020070e080015011503040205150b2002200110bb0120022802000d1420012802002204280204220620022802042207490d142007417f4c0d100240024020070d00410121080c010b200710382208450d1220084100200710c50a1a200428020421060b0240200620074f0d00200810390c150b200820042802002205200710c30a21222004200620076b3602042004200520076a3602002022410876212341052124200721060c050b20012802002204280204210541002106417f2108034020052006460d14200428020022072d000021092004200520086a3602042004200741016a360200201b20066a20093a00002002200641016a22073602c0012008417f6a21082007210620074120470d000b200220202902003703f8012002202041056a2900003700fd0120022802c401210920022903c8012125201e41036a202041036a280000360000201e20202802003602002002418c026a41046a201d41046a2f00003b0100201c41036a201f41036a280000360000201c201f280000360000200220253702a0022002200936029c022002201d28000036028c0220022900a702211a200228009f02212220022002418c026a41056a2900003700ed012002200229028c023703e801200220022900ed013700b501200220022903e8013703b001200220022900b5013700a501200220022903b0013703a001200220022900a50137009501200220022903a0013703900120024180016a41086a20024190016a41086a290300370300200220022903900137038001202241087621232025421888a72107201a422088a72126410021240c050b200242003703c001200128020022042802042206450d12200428020022082d0000210720042006417f6a2205360204200241013602c0012004200841016a360200200220073a00c4012005450d12200428020022082d0000210720042006417e6a22053602042004200841016a360200200241023602c001200220073a00c5012005450d12200428020022082d0000210720042006417d6a22053602042004200841016a360200200241033602c001200220073a00c6012005450d12200428020022082d0000210720042006417c6a3602042004200841016a360200200220073a00c701200241043602c00120022903c001221aa74104490d08200241186a200110bb0120022802180d1220042802042208200228021c2206490d122006417f4c0d0e0240024020060d00410121070c010b200610382207450d1020074100200610c50a1a200428020421080b20082006490d11200720042802002205200610c30a1a2004200820066b3602042004200520066a360200201a423888a72108201a422088a7210941012124200621260c030b200242003703c001200128020022042802042206450d11200428020022082d0000210720042006417f6a2205360204200241013602c0012004200841016a360200200220073a00c4012005450d11200428020022082d0000210720042006417e6a22053602042004200841016a360200200241023602c001200220073a00c5012005450d11200428020022082d0000210720042006417d6a22053602042004200841016a360200200241033602c001200220073a00c6012005450d11200428020022082d0000210720042006417c6a3602042004200841016a360200200220073a00c701200241043602c00120022903c001221aa74104490d09200241086a200110bb0120022802080d1120042802042208200228020c2206490d112006417f4c0d0d0240024020060d00410121070c010b200610382207450d0f20074100200610c50a1a200428020421080b20082006490d10200720042802002205200610c30a1a2004200820066b3602042004200520066a360200201a423888a72108201a422088a7210941022124200621260c020b200242003703c001200128020022042802042206450d10200428020022082d0000210720042006417f6a2205360204200241013602c0012004200841016a360200200220073a00c4012005450d10200428020022082d0000210720042006417e6a22053602042004200841016a360200200241023602c001200220073a00c5012005450d10200428020022082d0000210720042006417d6a22053602042004200841016a360200200241033602c001200220073a00c6012005450d10200428020022082d0000210720042006417c6a3602042004200841016a360200200220073a00c701200241043602c00120022903c001221aa74104490d07200241106a200110bb0120022802100d102004280204220820022802142206490d102006417f4c0d0c0240024020060d00410121070c010b200610382207450d0e20074100200610c50a1a200428020421080b20082006490d0f200720042802002205200610c30a1a2004200820066b3602042004200520066a360200201a423888a72108201a422088a7210941032124200621260c010b200128020022042802042206450d0f200428020022082d0000210720042006417f6a3602042004200841016a36020020070d0f200241c0016a200110f60720022802c00122084102460d0f20022802c801210620022802c401210741002123410421240b20024180016a41086a20024190016a41086a2903003703002002200229039001370380012023410874200841ff01717221222026ad4220862006ad84211a0b202141016a2121200241f0006a41086a222720024180016a41086a29030037030020022002290380013703700240200228026822052002280264470d00200241e0006a200510c504200228026821050b20022802602208200541246c6a220620093b00012006201a37000c2006200736000820062022360004200620243a000020062002290370370014200641036a20094110763a00002006411c6a20272903003700002002200541016a36026820212019470d000b20012001280204417f6a3602040c010b20012007417f6a3602042008450d0d0b2002290264211a200020022f01383b00172000200a36001a200020022f01343b001e2000200b360021200020022f01303b0025200041106a20022f013c3b0000200041136a200e360000200041126a2002413c6a41026a2d00003a0000200041196a200241386a41026a2d00003a0000200041206a200241346a41026a2d00003a0000200041276a200241306a41026a2d00003a00002000412c6a200d360000200041286a200c360000200041336a20143600002000201036003a20002011360041200041306a20022f014c3b0000200041326a200241cc006a41026a2d00003a0000200041396a200241c8006a41026a2d00003a0000200020022f01483b0037200041c0006a200241c4006a41026a2d00003a0000200020022f01443b003e200020022f01403b0045200041c7006a200241c0006a41026a2d00003a0000200041cc006a2013360000200041c8006a2012360000200041d2006a200241dc006a41026a2d00003a0000200041d0006a20022f015c3b0000200041d3006a2018360000200041d9006a200241d8006a41026a2d00003a0000200020022f01583b00572000201536005a200041e0006a200241d4006a41026a2d00003a0000200020022f01543b005e20002016360061200041e7006a200241d0006a41026a2d00003a0000200020022f01503b0065200041ec006a2003360000200041e8006a20173600002000201a370208200020083602042000200f3602000c0d0b419fd2ca00411b41bcd2ca001035000b419fd2ca00411b41bcd2ca001035000b419fd2ca00411b41bcd2ca001035000b200041003602040c090b200041003602040c080b200041003602040c070b1034000b1030000b200041003602040c040b200710390b2002280260210820022802682204450d00200441246c21062008210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010390c030b2004410c6a280200450d02200441086a28020010390c020b2004410c6a280200450d01200441086a28020010390c010b200441086a280200450d00200441046a28020010390b200441246a21042006415c6a22060d000b0b20022802642204450d00200441246c450d00200810390b200041003602040b200241b0026a24000bc40701157f230041f0006b220224002002200110ad0102400240024002402002280200450d00200041003602000c010b20022802042203200128020422044105762205200520034b1b22054105742206417f4c0d020240024020050d00410121070c010b200610382207450d020b41002108200241003602102002200536020c20022007360208024002402003450d00200241c8006a4104722109200241e1006a210a200241da006a210b200241d3006a210c4100210d0340200d41016a210d41002105417f21060240024003402004200546220e0d012001200420066a36020420012001280200220f41016a360200200920056a200f2d00003a00002002200541016a220f3602482006417f6a2106200f2105200f4120470d000b200241c0006a41026a200c41026a2d00003a00002002413c6a41026a200b41026a2d00003a0000200220092f01003b01442002200c2f00003b01402002200b2f00003b013c2002200941026a2d00003a0046200228004f211020022801562111200228005d21122002280264211320022802682114200241386a41026a200a41026a2d00003a00002002200a2f00003b01382004200f6b21040c010b410021040b200241346a41026a220520022d00463a0000200241306a41026a2206200241c0006a41026a2d00003a00002002412c6a41026a220f2002413c6a41026a2d00003a0000200241286a41026a2215200241386a41026a2d00003a0000200220022f01443b0134200220022f01403b0130200220022f013c3b012c200220022f01383b0128200e0d02200241246a41026a220e20052d00003a0000200241206a41026a221620062d00003a00002002411c6a41026a2206200f2d00003a0000200241186a41026a220f20152d00003a0000200220022f01343b0124200220022f01303b0120200220022f012c3b011c200220022f01283b011802402008200228020c470d00200241086a2008410110f50220022802082107200228021021080b200720084105746a220520022f01243b0000200541026a200e2d00003a0000200541096a20162d00003a0000200520022f01203b0007200541106a20062d00003a0000200520022f011c3b000e200520103600032005201136000a20052012360011200541176a200f2d00003a0000200520022f01183b00152005201436001c200520133600182002200841016a2208360210200d2003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b20004100360200200228020c41ffffff3f71450d00200228020810390b200241f0006a24000f0b1030000b1034000bc10501147f230041d0006b220224002002200110ad0102400240024002402002280200450d00200041003602000c010b20022802042203200128020422044105762205200520034b1b22054105742206417f4c0d010240024020050d00410121070c010b200610382207450d030b41002108200241003602102002200536020c20022007360208024002402003450d00200241286a4104722109200241c1006a210a2002413a6a210b200241336a210c4100210d0340200d41016a210d41002105417f2106034020042005460d032001200420066a36020420012001280200220e41016a360200200920056a200e2d00003a00002002200541016a220e3602282006417f6a2106200e2105200e4120470d000b200241206a41026a2206200c41026a2d00003a00002002411c6a41026a220f200b41026a2d00003a0000200220092f01003b01242002200c2f00003b01202002200b2f00003b011c2002200941026a2d00003a00262002280248211020022802442111200228003d211220022801362113200228002f2114200241186a41026a2215200a41026a2d00003a00002002200a2f00003b011802402008200228020c470d00200241086a2008410110f50220022802082107200228021021080b2004200e6b2104200720084105746a220520022f01243b0000200541026a20022d00263a0000200541096a20062d00003a0000200520022f01203b0007200541106a200f2d00003a0000200520022f011c3b000e200520143600032005201336000a20052012360011200541176a20152d00003a0000200520022f01183b00152005201036001c200520113600182002200841016a2208360210200d2003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b20004100360200200228020c41ffffff3f71450d00200228020810390b200241d0006a24000f0b1034000b1030000bda0403047f017e057f230041206b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240024002400240200228020c220320012802002204280204410c6e2205200520034b1bad420c7e2206422088a70d002006a72205417f4c0d000240024020050d00410421070c010b200510382207450d020b2001200128020441016a2208360204200241003602182002200736021020022005410c6e360214200820012802084b0d042003450d034100210903402002200110bb0120022802000d062004280204220820022802042205490d062005417f4c0d010240024020050d004101210a0c010b20051038220a450d03200a4100200510c50a1a200428020421080b0240200820054f0d00200a10390c070b2005ad22064220862006842106200a2004280200220b200510c30a210a2004200820056b3602042004200b20056a360200024020092002280214470d00200241106a2009410110bd0320022802102107200228021821090b20072009410c6c6a220520063702042005200a3602002002200228021841016a22093602182003417f6a2203450d030c000b0b1034000b1030000b200128020421080b2000200229031037020020012008417f6a360204200041086a200241106a41086a2802003602000c030b200041003602000c010b20004100360200200228021021072009450d002009410c6c21012007210503400240200541046a280200450d00200528020010390b2005410c6a2105200141746a22010d000b0b20022802142205450d002005410c6c450d00200710390b200241206a24000bd30102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad420c7e2205422088a74541027421022005a721040240024020010d00200341003602100c010b200341186a410436020020032001410c6c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410c6e360200200341206a24000f0b1034000bd40101027f230041206b220324000240200120026a22022001490d00200041046a280200220441017422012002200120024b1b22014104200141044b1b220141ffffffff03712001464102742102200141027421010240024020040d00200341003602100c010b200341186a410436020020032004410274360214200320002802003602100b200320012002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410276360200200341206a24000f0b1034000b830403037f017e057f230041206b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410382206450d030b200241003602182002200636021020022004410c6e360214024002402003450d004100210703402002200110ad0120022802000d022001280204220820022802042204490d022004417f4c0d040240024020040d00410121090c010b200410382209450d0620094100200410c50a1a0b20092001280200220a200410c30a21092001200820046b3602042001200a20046a3602002004ad22054220862005842105024020072002280214470d00200241106a2007410110bd0320022802102106200228021821070b20062007410c6c6a22042005370204200420093602002002200228021841016a22073602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b200041003602002002280210210902402007450d002007410c6c21012009210403400240200441046a280200450d00200428020010390b2004410c6a2104200141746a22010d000b0b20022802142204450d002004410c6c450d00200910390b200241206a24000f0b1034000b1030000bf00403037f017e027f230041901a6b220224002002200110bb01024002402002280200450d00200041003602000c010b024002400240024020022802042203200128020028020441d8086e2204200420034b1bad42d8087e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b200410382206450d020b2001200128020441016a220736020420024100360210200220063602082002200441d8086e36020c200720012802084b0d02024002402003450d00200241b8116a41f0006a2107410021040340200241b8116a200110c103200241d0106a200241b8116a41e80010c30a1a20022903a0122105200241e8086a200741e80710c30a1a20054203510d0220024180086a200241d0106a41e80010c30a1a200241186a200241e8086a41e80710c30a1a02402004200228020c470d00200241086a200410c20320022802082106200228021021040b2006200441d8086c6a20024180086a41e80010c30a22042005370368200441f0006a200241186a41e80710c30a1a2002200228021041016a22043602102003417f6a22030d000b200128020421070b2000200229030837020020012007417f6a360204200041086a200241086a41086a2802003602000c050b20004100360200200228020821062004450d03200441d8086c210120062103034002402003220441e8006a2903004202510d0020042d00004102470d00200441086a280200450d00200441046a28020010390b200441d8086a210320044198016a10c601200141a8776a22010d000c040b0b1034000b1030000b200041003602000b200228020c2204450d00200441d8086c450d00200610390b200241901a6a24000beb0806047f017e037f017e017f037e230041e0116b22022400200241286a200110bb01024002400240024002400240024020022802280d00200228022c210320012001280204220441016a2205360204200520012802084b0d00024002402003450d004100210542002106034002402005417f470d0020064280808080705a0d032006422088a721050b200642ffffffff0f83200541016a2205ad4220868421062003417f6a22030d000b0b20012004360204200128020022052802042203450d02200528020022072d0000210420052003417f6a3602042005200741016a3602000240200441ff00714104460d00200042033703680c080b02402004411874411875417f4c0d00420221060c060b200241f0106a2001108102024020022d00f01022044105460d00200241f8106a280200210320022802f410210720024198116a2001108b040240024020022d0098114103470d0020044102470d0220030d010c020b0240200128020022052802042208450d0020052802002209310000210a20052008417f6a220b3602042005200941016a36020002400240200a50450d00420021060c010b200b450d012009310001210c20052008417e6a3602042005200941026a3602004202200a420f8386220d4204540d0142012106200c420886200a84420488200d420c88220a4201200a4201561b7e220a200d5a0d010b200241206a200110bb0120022802200d0020022802242108200241086a2001108f032002290308a7450d060b20044102470d012003450d010b200710390b420221060c040b108c04000b200042033703680c050b200042033703680c040b200241086a41106a290300210e2002290310210c200241f0016a41026a200241f0106a410172220941026a2d00003a0000200241b0096a41086a200241fc106a220541086a290200370300200241b0096a41106a200541106a290200370300200220092f00003b01f001200220052902003703b009200241c8096a20024198116a41c20010c30a1a200241f4016a200241b0096a41dc0010c30a1a0b200241ec016a41026a2205200241f0016a41026a2d00003a0000200220022f01f0013b01ec0120024190016a200241f4016a41dc0010c30a1a20064202510d012002418c016a41026a20052d00003a0000200220022f01ec013b018c01200241306a20024190016a41dc0010c30a1a0b200241b0096a200110cb0120022802b0092105200241f4016a200241b0096a41047241bc0710c30a1a024020054125460d00200020043a0000200020022f018c013b00012000200336020820002007360204200041036a2002418e016a2d00003a00002000410c6a200241306a41dc0010c30a1a20004190016a200e37030020004188016a200c37030020004180016a2008360200200041f8006a200a3703002000200d3703702000200637036820004198016a20053602002000419c016a200241f4016a41bc0710c30a1a0c020b2000420337036820064202510d01200441ff01714102470d012003450d01200710390c010b200042033703680b200241e0116a24000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b2203410120031bad42d8087e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141d8086c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141d8086e360200200241206a24000f0b1034000bb30101057f0240200041046a280200200041086a220228020022036b200141046a2802002204200128020022056b22064f0d00200020032006108101200228020021030b0240024020052004470d00200321060c010b2001200541016a3602002004417f6a21022004200320056b6a2106200028020020036a21040340200420052d00003a000020022005460d012001200541026a360200200541016a2105200441016a21040c000b0b200041086a20063602000bfa0101077f024002402001410c6a2802002202200128020822036b2204417f4c0d002001280210210520012802042106200128020021074108210102402004450d00200410382201450d020b2000200136020041002108200041086a4100360200200041046a2004410376360200024020032002460d0041002108034020012003290300370300200841016a2108200141086a21012002200341086a2203470d000b0b200041086a200836020002402006450d0002402007200541086a2802002201460d002005280200220320014103746a200320074103746a200641037410c40a1a0b200541086a200120066a3602000b0f0b1034000b1030000b830403047f017e057f23004180016b22022400024002402001410c6a2802002203200128020822046b4188016e2205ad4288017e2206422088a70d002006a72207417f4c0d0020012802102108200128020421092001280200210a4108210102402007450d00200710382201450d020b200020013602004100210b200041086a4100360200200041046a20074188016e22073602000240200720054f0d002000200510c603200041086a280200210b200028020021010b024020042003460d002001200b4188016c6a2101024003402004220741086a2d000022044102460d0120072903002106200241016a200741096a41ff0010c30a1a200141086a20043a000020012006370300200141096a200241016a41ff0010c30a1a20014188016a2101200b41016a210b200320074188016a2204470d000b0b20074188016a21040b200041086a200b36020002400340024020032004470d00200321010c020b200441086a210720044188016a2201210420072d00004102470d000b0b200320016b2104024003402004450d01200441f87e6a210420012d0008210720014188016a210120074102470d000b0b02402009450d000240200a200841086a22012802002204460d002008280200220720044188016c6a2007200a4188016c6a20094188016c10c40a1a0b2001200420096a3602000b20024180016a24000f0b1034000b1030000bcd0102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad4288017e2205422088a74541037421012005a721040240024020030d00200241003602100c010b200241106a41086a4108360200200220034188016c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a20014188016e360200200241206a24000f0b1034000bcf0404037f017e057f047e0240024002402001410c6a2802002202200128020822036b41306e2204ad42307e2205422088a70d002005a72206417f4c0d002001280210210720012802042108200128020021094108210102402006450d00200610382201450d020b200020013602004100210a200041086a4100360200200041046a200641306e22063602000240200620044f0d002000200410c803200041086a280200210a200028020021010b024020032002460d002001200a41306c6a2101024003402003220641086a22032d00004102460d0120032903002105200641106a290300210b200641186a290300210c200641206a290300210d2006290300210e200141286a200641286a290300370300200141206a200d370300200141186a200c370300200141106a200b370300200141086a20053703002001200e370300200a41016a210a200141306a21012002200641306a2203470d000b0b200641306a21030b200041086a200a36020020022003460d02034020022003460d030240200341086a2d000022014102470d00200341306a22012002460d0403402001220641086a2d000022034102460d05200641306a2101024020030d00200641106a280200450d002006410c6a28020010390b20022001470d000c050b0b024020010d00200341106a280200450d002003410c6a28020010390b200341306a21030c000b0b1034000b1030000b02402008450d0002402009200741086a22062802002201460d0020072802002203200141306c6a2003200941306c6a200841306c10c40a1a0b2006200120086a3602000b0bca0102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad42307e2205422088a74541037421012005a721040240024020030d00200241003602100c010b200241106a41086a41083602002002200341306c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a200141306e360200200241206a24000f0b1034000bae0803027f017e037f23004190056b22022400200241086a41386a200141386a290200370300200241086a41306a200141306a290200370300200241086a41286a200141286a290200370300200241086a41206a200141206a290200370300200241086a41186a200141186a290200370300200241086a41106a200141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820024198016a200241086a10ca0302400240024002400240200228029801410c460d00200228022821030240024020022802084101460d00410021012003450d01200241c4006a28020021010c010b200241246a28020021012003450d00417f2001200241c4006a2802006a220320032001491b21010b417f200141016a220320032001491bad42f8037e2204422088a70d012004a72201417f4c0d01200110382205450d02200520024198016a41f80310c30a2103200241013602502002200141f8036e220636024c20022003360248200241d8006a41386a200241086a41386a290300370300200241d8006a41306a200241086a41306a290300370300200241d8006a41286a200241086a41286a290300370300200241d8006a41206a200241086a41206a290300370300200241d8006a41186a200241086a41186a290300370300200241d8006a41106a200241086a41106a290300370300200241d8006a41086a200241086a41086a2903003703002002200229030837035820024198016a200241d8006a10ca03200228029801410c460d034102210141f8032103034002402001417f6a2006470d00200228027821070240024020022802584101460d00200228029401410020071b21050c010b200228027421052007450d00417f20052002280294016a220720072005491b21050b200241c8006a2006417f200541016a220720072005491b10b403200228024821050b200520036a20024198016a41f80310c30a1a2002200136025020024198016a200241d8006a10ca03200228029801410c460d04200341f8036a2103200141016a2101200228024c21060c000b0b20004200370204200041002802fcad4936020002402002280208450d00200241086a41047210cb030b2002280228450d03200241306a2802002201450d032002412c6a2802002103200241346a28020021062002200241c4006a2802003602a401200220063602a0012002200136029c01200220033602980120024198016a10cc030c030b1034000b1030000b02402002280258450d00200241d8006a41047210cb030b02402002280278450d0020024180016a2802002201450d00200241fc006a280200210320024184016a2802002106200220024194016a2802003602a401200220063602a0012002200136029c01200220033602980120024198016a10cc030b20002002290348370200200041086a200241c8006a41086a2802003602000b20024190056a24000b9c0802077f027e230041900f6b2202240002400240024020012802004101460d002002410c3602000c010b02400240024002402001411c6a2802002203450d0020012003417f6a36021c200141086a2802002203450d01200128020421042001410c6a280200220520032f01a629490d0203400240024020032802a02922060d00410021060c010b200441016a210720032f01a42921050b024041d82941a82920041b450d00200310390b024020060d00410221040c050b2007210420062103200520062f01a6294f0d000b20062103200721040c020b2002410c3602c807200141046a220310cb0320014100360200200320022902c40b370200200341086a200241c40b6a41086a290200370200200341106a200241c40b6a41106a290200370200200341186a200241c40b6a41186a2802003602002002410c3602000c030b41b4fcca00412b41e4f8ca001035000b200541016a21062003200541d0036c6a2107200320054104746a220541f8276a2108200541f0276a210502402004450d00200320064102746a41a8296a280200210302402004417f6a2206450d00034020032802a82921032006417f6a22060d000b0b410021060b200829030021092005290300210a200728020021042002200741046a41cc0310c30a1a0b200241fc036a200241cc0310c30a1a2001200636020c2001200336020820014100360204200241c40b6a200241fc036a41cc0310c30a1a024002402004450d00200241e0076a2009370300200241d8076a200a37030041082103200241d4076a200241fc036a41086a280200360200200220022902fc033702cc070c010b200241d0076a200241c80b6a41c80310c30a1a200241a00b6a2009370300200241980b6a200a370300410a21030b200220033602c8072002200241c8076a41f80310c30a2203280200410c460d002000200341f80310c30a1a0c010b024020012802204101460d002000410c3602000c010b200241c8076a200141246a10cd030240024020022802c80722064102470d002000410c3602000c010b200241c40b6a200241c8076a410472220441cc0310c30a1a200241c8076a41d0036a2103024002402006450d0020002004290200370204200041106a20032903003703002000410c6a200441086a280200360200200041186a200341086a290300370300200041206a200341106a290300370300200041286a200341186a290300370300200041306a200341206a290300370300410921030c010b200041086a200241c40b6a41046a41c80310c30a1a200041f0036a200341206a290300370300200041e8036a200341186a290300370300200041e0036a200341106a290300370300200041d8036a200341086a290300370300200041d0036a2003290300370300410b21030b200020033602000b2002280200410c460d00200210ac010b200241900f6a24000b9004020c7f027e230041b0076b22012400200028020421022000410036020402402002450d0020002802002103024020002802182204450d0020002802082105200141d8036a2106200141d0036a4104722107200141a8076a21080340024002400240200520022f01a6294f0d0020022100200321090c010b03400240024020022802a02922000d00410021000c010b200341016a210920022f01a42921050b024041d82941a82920031b450d00200210390b024020000d00410221000c030b2009210320002102200520002f01a6294f0d000b0b200541016a210a2000200541d0036c6a2103200020054104746a220241f8276a210b200241f0276a210c0240024020090d0020002102200a21050c010b2000200a4102746a41a8296a280200210202402009417f6a2200450d00034020022802a82921022000417f6a22000d000b0b410021050b200b290300210d200c290300210e20032802002100200141d0036a200341046a41cc0310c30a1a0b2004417f6a2104200141046a200141d0036a41cc0310c30a1a200120003602d0032007200141046a41cc0310c30a1a2008200d3703002001200e3703a0070240024020000d00200610af010c010b20012802d803450d0020012802d40310390b4100210320040d000b0b034020022802a0292100024041d82941a82920031b450d00200210390b200341016a21032000210220000d000b0b200141b0076a24000bfc0301097f230041f0076b220124000240200028020c2202450d0020014180046a2103200141f8036a4104722104034020002002417f6a36020c2000280200210502400240024020002802082206200028020422022f01ae2b4f0d00200521070c010b2002210803400240024020082802a82b22090d00410021020c010b200541016a210720022f01ac2b2106200921020b024041e02b41b02b20051b450d00200810390b024020020d00410221050c030b2007210520022108200620022f01ae2b4f0d000b0b200641016a21082002200641f8036c6a210602402007450d00200220084102746a41b02b6a280200210202402007417f6a2205450d00034020022802b02b21022005417f6a22050d000b0b410021080b20062802002105200141f8036a200641046a41f40310c30a1a0b200141046a200141f8036a41f40310c30a1a200020083602082000200236020420004100360200200120053602f8032004200141046a41f40310c30a1a0240024020050d00200310af010c010b200128028004450d0020012802fc0310390b024020012d00c8074106490d0020012802d007450d0020012802cc0710390b200028020c22020d000b0b2000280204210820002802002102034020082802a82b2105024041e02b41b02b20021b450d00200810390b200241016a21022005210820050d000b200141f0076a24000bf10201067f23004180046b220224000240024002400240024020012802182203450d0020012003417f6a36021820012802042204450d012001280200210502402001280208220620042f01ae2b4f0d0020042103200521070c030b03400240024020042802a82b22030d00410021030c010b200541016a210720042f01ac2b21060b024041e02b41b02b20051b450d00200410390b024020030d00410221060c050b2003210420072105200620032f01ae2b490d030c000b0b200041023602000c030b41b4fcca00412b41e4f8ca001035000b200641016a21042003200641f8036c6a210502402007450d00200320044102746a41b02b6a280200210302402007417f6a2204450d00034020032802b02b21032004417f6a22040d000b0b410021040b200528020021062002410c6a200541046a41f40310c30a1a0b200041046a2002410c6a41f40310c30a1a200120043602082001200336020420014100360200200020063602000b20024180046a24000b9f0301087f23004190036b220224000240024020012802082203200128020c2204470d00410221030c010b200128021421052001280210210620024191026a2107024003402001200341086a220836020820024188026a200628020041086a200329030010cf030240024002402002280288024101470d0020022007290000370388012002200741076a28000036008f0120022d0090022109200228028c0221080c010b4102210920022d00900222034102470d01410121080b2002200228008f0136008f0220022002290388013703880241022103024020052802004102470d00200541086a280200450d00200528020410390b200520093a00042005200836020020052002290388023700052005410c6a200228008f0236000020024188026a200241096a41ff0010c30a1a0c030b20024188016a200741ff0010c30a1a200241096a20024188016a41ff0010c30a1a20034103470d012008210320042008470d000b410221030c010b20024188026a200241096a41ff0010c30a1a200041016a20024188026a41ff0010c30a1a0b200020033a000020024190036a24000bbc0802047f017e230041f0006b22032400200128020841186c2104200128020021050240024003402004450d01200520046a2101200441686a22062104200141686a29030022072002560d000b2007200520066a220141106a2802002204ad7c2002580d00024002402004200220077da722054b0d00200041086a41023a00000c010b4101210602400240200141086a28020020054107746a22042d00004101470d00200320042800013602682003200441046a28000036006b2003200441146a2900003703482003200441196a29000037004d200441106a2800002101200441086a29000021020c010b200341c0006a200441d8006a280200360200200341206a41186a200441d0006a290300370300200341206a41106a200441c8006a290300370300200341206a41086a200441c0006a290300370300200341c8006a41086a2004411c6a290000370300200341c8006a41106a200441246a290000370300200341c8006a41186a2004412c6a2900003703002003200441386a2903003703202003200441146a290000370348200441086a2903002102200441106a2802002101200341186a200441f4006a290000370300200341106a200441ec006a290000370300200341086a200441e4006a2900003703002003200441dc006a290000370300410021060b20002003280268360009200041086a20063a00002000410c6a200328006b360000200041186a2001360000200041106a20023700002000411c6a2003290348370000200041c0006a2003290320370000200041246a200341c8006a41086a2903003700002000412c6a200341c8006a41106a290300370000200041346a200341c8006a41186a290300370000200041c8006a200341206a41086a290300370000200041d0006a200341206a41106a290300370000200041d8006a200341206a41186a290300370000200041e0006a200341c0006a280200360000200041fc006a200341186a290300370000200041f4006a200341106a290300370000200041ec006a200341086a290300370000200041e4006a20032903003700000b200041003602000c010b20032002109b05200341206a20032802002204200328020810ab02024020032d002022014101470d00200341e0006a200341396a290000370300200341d8006a200341316a290000370300200341d0006a200341296a290000370300200320032900213703480b02402003280204450d00200410390b41022104024020014101470d00200341206a41186a200341c8006a41186a290300370300200341206a41106a200341c8006a41106a290300370300200341206a41086a200341c8006a41086a29030037030020032003290348370320410121040b2000200329032037000920004100360200200041086a20043a0000200041116a200341206a41086a290300370000200041196a200341306a290300370000200041216a200341386a2903003700000b200341f0006a24000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041a89ec1001043000bf10801067f02400240024002400240024002400240024002400240024020012d00000e0a01020304050607080900010b4104210241062103024002400240024002400240024002400240200141046a2802000e0700010203040508000b410021030c050b200141106a2802002204417f4c0d10200141086a2802002105410121034101210602402004450d00200410382206450d120b20062005200410c30a1a0c060b200141086a2802002106410221030c040b410321030c020b410421030c010b410521030b0b0b2001411c6a2802002105200141186a28020021070240024002400240024020012802140e050001020304000b410021020c030b410121020c020b410221020c010b410321020b200041093a00002000411c6a2005360200200041186a2007360200200041146a2002360200200041106a20043602002000410c6a2004360200200041086a2006360200200041046a20033602000f0b200041003a00000f0b200041013a0000200041046a200141046a2802003602000f0b4103210302400240024002400240200141246a2802000e0400010204000b410021030c020b200141306a2802002204417f4c0d09200141286a2802002102410121034101210602402004450d00200410382206450d0b0b20062002200410c30a1a0c020b410221030b0b200041023a000020002001290001370001200041306a20043602002000412c6a2004360200200041286a2006360200200041246a2003360200200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000f0b4103210302400240024002400240200141046a2802000e0400010204000b410021030c020b200141106a2802002204417f4c0d08200141086a2802002102410121034101210602402004450d00200410382206450d0a0b20062002200410c30a1a0c020b410221030b0b200041033a0000200041186a2001290318370300200041106a20043602002000410c6a2004360200200041086a2006360200200041046a20033602000f0b4103210302400240024002400240200141186a2802000e0400010204000b410021030c020b200141246a2802002204417f4c0d072001411c6a2802002102410121034101210602402004450d00200410382206450d090b20062002200410c30a1a0c020b410221030b0b200041043a000020002001290001370001200041246a2004360200200041206a20043602002000411c6a2006360200200041186a2003360200200041116a200141116a280000360000200041096a200141096a2900003700000f0b200041053a0000200020012d00013a00010f0b200041063a0000200041106a200141106a290300370300200041086a200141086a2903003703000f0b2001410c6a2802002204417f4c0d01200141046a28020021010240024020040d00410121060c010b200410382206450d030b20062001200410c30a21012000410c6a2004360200200041086a2004360200200041046a2001360200200041073a00000f0b200041083a00000f0b1034000b1030000b820801027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0620024198046c450d06200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0420024198046c450d04200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041086a280200450d00200041046a28020010390b0f0b200041086a10af01200041046a220228020010d203200228020010390b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210d4030b0f0b200041086a10af01200041046a220228020010d303200228020010390b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010d403200228020010390f0b2000410c6a220228020010d403200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010d403200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010d403200228020010390f0b200041106a220228020010d403200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010d403200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010d403200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220228020010d303200228020010390f0b200041286a220228020010d403200228020010390f0b0b13002000410436020420004194a0c1003602000b3400200041f280c40036020420004100360200200041146a4100360200200041106a41f4ddca00360200200041086a42093702000be0950105037f017e147f057e117f230041f00d6b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e0a00010203040506070f0e000b200141246a2802002104200141216a2d00002105200341d0016a41186a200141196a290000370300200341d0016a41106a200141116a290000370300200341d0016a41086a200141096a290000370300200320012900013703d0012002411a6a2901002106200241196a2d00002101200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720022d0001211820022d00002119200228022822022002280200417f6a221a3602000240024020190d000240201a0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b201841ff017141014721190c010b41012119201a0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a221a201a280200417f6a221a360200201a0d00200210390b200320063703c801200320013a00c701200320073a00c601200320083b01c401200320093a00c3012003200a3a00c2012003200b3b01c0012003200c3a00bf012003200d3a00be012003200e3b01bc012003200f3a00bb01200320103a00ba01200320113b01b801200320123a00b701200320133a00b601200320143b01b401200320153a00b301200320163a00b201200320173b01b00120190d0c200341f0016a41186a200341b0016a41186a2207290300370300200341f0016a41106a200341b0016a41106a2208290300370300200341f0016a41086a200341b0016a41086a2209290300370300200320032903b0013703f001200341e8026a200341d0016a200341f0016a200510d803200341b0026a41086a220a200341e8026a41186a290300370300200341b0026a41106a220b20034188036a290300370300200341b0026a41186a220c20034190036a2802003602002003200341e8026a41106a2903003703b002200341e8026a41086a210120032802ec0221020240024020032802e8024101460d00200129030021062007200c2802003602002008200b2903003703002009200a290300370300200320032903b0023703b0012002450d014103210241db0021014106210741c4b5c1002108410b21090c310b200341f4026a2802002109200128020021082002411876210a20024110762107200241087621010c300b200341bc026a20032903b001370200200341c4026a200341b0016a41086a290300370200200341b0026a411c6a200341b0016a41106a290300370200200341d4026a200341b0016a41186a280200360200200320063702b402200341003602b00220034190026a41186a200341d0016a41186a29030037030020034190026a41106a200341d0016a41106a29030037030020034190026a41086a200341d0016a41086a290300370300200320032903d00137039002200341e8026a200441c00710c30a1a200341b0026a20034190026a200341e8026a10d9032004103920032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200042003703000c300b200141246a280200211a200141216a2d0000211820034180016a41186a200141196a29000037030020034180016a41106a200141116a29000037030020034180016a41086a200141096a29000037030020032001290001370380012002411a6a2901002106200241196a2d00002101200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210520022d00002117200228022822022002280200417f6a22193602000240024020170d00024020190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22172017280200417f6a221736020020170d00200210390b200541ff017141014721170c010b4101211720190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b200320063703c801200320013a00c701200320043a00c601200320073b01c401200320083a00c301200320093a00c2012003200a3b01c0012003200b3a00bf012003200c3a00be012003200d3b01bc012003200e3a00bb012003200f3a00ba01200320103b01b801200320113a00b701200320123a00b601200320133b01b401200320143a00b301200320153a00b201200320163b01b00120170d09200341d0016a41186a200341b0016a41186a290300370300200341d0016a41106a200341b0016a41106a290300370300200341d0016a41086a200341b0016a41086a290300370300200320032903b0013703d001200341f0016a41186a20034180016a41186a290300370300200341f0016a41106a20034180016a41106a290300370300200341f0016a41086a20034180016a41086a29030037030020032003290380013703f0010240200341d0016a200341f0016a412010c60a0d00420121064103210241db002101410721044186b6c1002107410b21080c2c0b200341b0016a200341d0016a10de02200341e8026a20032802b00120032802b80110da030240024020032802e80222090d00200341a8026a4200370300200342003703a00220034200370294024100210b200341002802ccdd4a2209360290020c010b20034190026a410c6a200341e8026a410c6a29020037020020034190026a41146a200341e8026a41146a29020037020020034190026a411c6a200341e8026a411c6a280200360200200320032902ec02370294022003200936029002200328029802210b0b0240200b411f4d0d004107210841ffb5c1002107410021040c290b200341cc026a20034180016a41186a290300370200200341c4026a20034180016a41106a290300370200200341bc026a20034180016a41086a29030037020020032003290380013702b402200320183a00d4022003201a3602b002024002400240200b0d00410021020c010b200341b0026a410472210a201841ff0171210c200b210441002102200b2101034002400240024002402009200441017620026a220441286c6a220841046a200a412010c60a2207450d0020074100480d01200421010c030b024020082d00242207200c460d002007200c490d01200421010c030b20082802002207201a4f0d010b200441016a21020c010b200421012007201a460d030b200120026b2104200120024b0d000b0b200341e8026a41206a200341b0026a41206a290300370300200341e8026a41186a200341b0026a41186a290300370300200341e8026a41106a200341b0026a41106a290300370300200341e8026a41086a200341b0026a41086a290300370300200320032903b0023703e802200b2002490d0b0240200b200328029402470d0020034190026a200b10db0320032802900221090b2009200241286c6a220141286a2001200b20026b41286c10c40a1a200141186a200341e8026a41186a290300370200200141106a200341e8026a41106a290300370200200141086a200341e8026a41086a290300370200200120032903e802370200200141206a200341e8026a41206a2903003702002003200b41016a22023602980202402002200b4f0d0020034190026a41186a290300211b4200211c20032903a002211d420021060c280b200341186a2002ad4200420a420010c20a20032903182206420a7c221c20032903a002221d56200341186a41086a290300201c200654ad7c220620034190026a41186a290300221b562006201b511b450d27200341e8026a200341d0016a201c201d7d2006201b7d201c201d54ad7d10f70120032d00e80222024108460d28200341e8026a41086a280200210820032802ec02210720032d00eb02210920032d00ea02210420032d00e90221010c2a0b4109210841dbb5c1002107410421040c280b200141246a280200210c200141216a2d00002118200341f0016a41186a200141196a290000370300200341f0016a41106a200141116a290000370300200341f0016a41086a200141096a290000370300200320012900013703f0012002411a6a2901002106200241196a2d00002101200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f0100211720022d0001210520022d00002119200228022822022002280200417f6a221a3602000240024020190d000240201a0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b200541ff017141014721190c010b41012119201a0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a221a201a280200417f6a221a360200201a0d00200210390b200320063703c801200320013a00c701200320043a00c601200320073b01c401200320083a00c301200320093a00c2012003200a3b01c0012003200b3a00bf012003200d3a00be012003200e3b01bc012003200f3a00bb01200320103a00ba01200320113b01b801200320123a00b701200320133a00b601200320143b01b401200320153a00b301200320163a00b201200320173b01b00120190d0720034190026a41186a200341b0016a41186a29030037030020034190026a41106a200341b0016a41106a2903003703004108210d20034190026a41086a200341b0016a41086a290300370300200320032903b00137039002200341b0016a20034190026a10de02200341b0026a20032802b001221320032802b801221510da0320032802b0022109200341003602b002024020090d0041f7b5c100210f4101211141db0021104103210e410121020c220b200341b0026a41186a290300211c20032902b4022206a7211220032903c002211b20034184036a200341f0016a41186a290300370200200341fc026a200341f0016a41106a2903003702004108210d200341f4026a200341f0016a41086a290300370200200320032903f0013702ec024103210e41db0021104101211141f7b5c100210f024002402006422088a722140d00410121020c010b200341e8026a410472210a201841ff0171210b20142104410021022014210102400340024002400240024002402009200441017620026a220441286c6a220841046a200a412010c60a2207450d0020074100480d010c030b024020082d00242207200b460d002007200b490d010c030b20082802002207200c4f0d010b200441016a21020c020b2007200c460d030b200421010b200120026b2104200120024b0d000b410121020c010b2009200441286c6a2202200241286a20142004417f736a41286c10c40a1a2014417f6a2202ad211e024020020d004200211f4200211d0c200b200341286a201e4200420a420010c20a2003290328221d420a7c221f201b58200341286a41086a290300201f201d54ad7c221d201c58201d201c511b0d1f200341d0016a20034190026a201f201b7d201d201c7d201f201b54ad7d10f70120032d00d001220e4108460d20200341d0016a41086a280200210d20032802d401210f20032d00d301210120032d00d201210220032d00d10121100b2012450d22201241286c450d22200910390c220b2002411a6a2901002106200241196a2d00002101200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211a20022d00002117200228022822022002280200417f6a22193602000240024020170d00024020190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22172017280200417f6a221736020020170d00200210390b201a41ff017141014721170c010b4101211720190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b200320063703c801200320013a00c701200320043a00c601200320073b01c401200320083a00c301200320093a00c2012003200a3b01c0012003200b3a00bf012003200c3a00be012003200d3b01bc012003200e3a00bb012003200f3a00ba01200320103b01b801200320113a00b701200320123a00b601200320133b01b401200320143a00b301200320153a00b201200320163b01b00120170d05200341b0026a41186a200341b0016a41186a290300370300200341b0026a41106a200341b0016a41106a290300370300200341b0026a41086a200341b0016a41086a290300370300200320032903b0013703b00220034190026a200341b0026a10de02200341e8026a2003280290022201200328029802220210da030240024020032802e8022204450d002001200210fd01200341e8026a41186a2903002106200341e8026a41106a290300211c20032802ec0221020c010b4100210241002802ccdd4a21044200211c420021060b0240200328029402450d00200110390b02402002450d00200241286c450d00200410390b200341b0026a201c2006109f02200320032800f0013602d0012003200341f3016a2800003600d301200041186a41003a000020004200370308200020032802d0013600192000411c6a20032800d301360000200042003703000c2d0b41022104200141026a2f01002109200141046a2802002120200320012d00013a00a8012002411a6a2901002106200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002119200241056a2d0000211a200241046a2d00002105200241026a2f0100211820022d0001210820022d00002101200228022822022002280200417f6a22073602000240024020010d00024020070d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200841ff01714101460d010c1c0b20070d1b2002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d1b200210390c1b0b200320063703a8022003200a3a00a7022003200b3a00a6022003200c3b01a4022003200d3a00a3022003200e3a00a2022003200f3b01a002200320103a009f02200320113a009e02200320123b019c02200320133a009b02200320143a009a02200320153b019802200320163a009702200320173a009602200320193b0194022003201a3a009302200320053a009202200320183b019002200341e8026a41186a22024200370300200341e8026a41106a22014200370300200341e8026a41086a22044200370300200342003703e802200341d8026a41b9fec300410610f2012004200341d8026a41086a2207290000370300200320032900d8023703e802200341d8026a41b0eec900410610f20120022007290000370300200120032900d802370300200341c0006a200341e8026a412010f5012003280244210220032802402101200341386a41a1bfc900411010f501200328023c210420032802382107200320093b01fc0220032004410020071b3602f40220032002410020011b3602f0022003419bb1c1003602e8022003200341a8016a3602f802200320034190026a3602ec02200341b0016a200341e8026a10dc03200341203602f4012003200341b0016a3602f001200341e8026a200341f0016a1080020240024020032d00e8024101470d00200341b0026a41186a4200370300200341b0026a41106a4200370300200341b0026a41086a4200370300200342003703b0020c010b200341b0026a41186a20034181036a290000370300200341b0026a41106a200341f9026a290000370300200341b0026a41086a200341f1026a290000370300200320032900e9023703b0020b200341e8026a200341b0026a10de0220032802e802220120032802f00210a8022102024020032802ec02450d00200110390b02402002450d004103210441db0021094104210841dbb5c1002107410921010c1c0b200341e8026a20034190026a4214420010f701024020032d00e80222044108460d00200341e8026a41086a280200210120032802ec02210720032d00eb02210220032d00ea02210820032d00e90221090c1c0b20032d00a8012101412810382202450d0320022003290390023701042002411c6a200341a8026a290300370100200241146a200341a0026a2903003701002002410c6a20034198026a2903003701002002200141ff01714100473a002420022020360200200341f0016a200341b0026a10de0220032802f801210a20032802f0012104413c10382201450d032003423c3702ec02200320013602e80220024101200341e8026a108402024020032802ec02220820032802f00222016b410f4b0d00200341e8026a2001411010810120032802ec02210820032802f00221010b20032802e802220720016a220b4200370008200b42143700002004200a2007200141106a10a30202402008450d00200710390b024020032802f401450d00200410390b2002103920032d00a801210220034185036a200341b0026a41186a290300370000200341fd026a200341b0026a41106a290300370000200341f5026a200341b0026a41086a2903003700002003418d036a20032903900237000020034195036a20034190026a41086a2903003700002003419d036a20034190026a41106a290300370000200341a5036a20034190026a41186a290300370000200341ae036a20093b0100200341ad036a20023a0000200320032903b0023700ed02200341013a00ec02200341133a00e802200341e8026a10fc01200320032800d001360280012003200341d3016a28000036008301200041186a41003a00002000420037030820002003280280013600192000411c6a200328008301360000200042003703000c2c0b200141286a2802002109200141246a280200210a200141226a2f0100210b200141216a2d00002104200341f0016a41186a200141196a290000370300200341f0016a41106a200141116a290000370300200341f0016a41086a200141096a290000370300200320012900013703f001200320043a00a8012002411a6a2901002106200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002119200241086a2d0000211a200241066a2f01002105200241056a2d00002118200241046a2d0000212041022101200241026a2f0100212120022d0001210820022d00002104200228022822022002280200417f6a220736020002400240024020040d00024020070d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22042004280200417f6a220436020020040d00200210390b200841ff01714101470d1b200320063703a8022003200c3a00a7022003200d3a00a6022003200e3b01a4022003200f3a00a302200320103a00a202200320113b01a002200320123a009f02200320133a009e02200320143b019c02200320153a009b02200320163a009a02200320173b019802200320193a0097022003201a3a009602200320053b019402200320183a009302200320203a009202200320213b0190022003200b3b01fc02200320093602f4022003200a3602f0022003419bb1c1003602e8022003200341a8016a3602f8022003200341f0016a3602ec02200341b0016a200341e8026a10dc03200341203602d4012003200341b0016a3602d001200341e8026a200341d0016a10800220032d00e8024101470d01200341c8026a4200370300200341c0026a4200370300200341b8026a4200370300200342003703b0020c020b20070d1a2002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22042004280200417f6a220436020020040d1a200210390c1a0b200341c8026a20034181036a290000370300200341c0026a200341f9026a290000370300200341b8026a200341f1026a290000370300200320032900e9023703b0020b0240200341b0026a20034190026a412010c60a450d00410321010c190b200341d0016a20034190026a10de02200341e8026a20032802d001220120032802d801220210da030240024020032802e8022204450d002001200210fd0120034180036a2903002106200341f8026a290300211c20032802ec0221020c010b4100210241002802ccdd4a21044200211c420021060b024020032802d401450d00200110390b02402002450d00200241286c450d00200410390b200341f0016a201c2006109f0220032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200042003703000c2b0b200341d0016a41186a200141196a290000370300200341d0016a41106a200141116a290000370300200341d0016a41086a200141096a290000370300200320012900013703d001200141216a2f00002118200141236a2d00002120200141246a2d00002121200141256a2f00002122200141276a2d00002123200141286a2d00002124200141296a2f000021252001412b6a2d000021262001412c6a2d000021272001412d6a2f000021282001412f6a2d00002129200141306a2d0000212a200141316a2f0000212b200141336a2d0000212c200141346a2d0000212d200141356a2f0000212e200141376a2d0000212f200141386a2d00002130200141396a290000211c2002411a6a2901002106200241196a2d00002109200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002119200241046a2d0000211a41022101200241026a2f0100210520022d0001210820022d00002104200228022822022002280200417f6a22073602000240024020040d00024020070d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22042004280200417f6a220436020020040d00200210390b200841ff01714101460d010c170b20070d162002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22042004280200417f6a220436020020040d16200210390c160b2003200637038802200320093a0087022003200a3a0086022003200b3b0184022003200c3a0083022003200d3a0082022003200e3b0180022003200f3a00ff01200320103a00fe01200320113b01fc01200320123a00fb01200320133a00fa01200320143b01f801200320153a00f701200320163a00f601200320173b01f401200320193a00f3012003201a3a00f201200320053b01f001200341b0026a200341d0016a10de02200341e8026a20032802b002220820032802b80210da0320032802ec022104200341f0026a280200410020032802e80222021b210141002802ccdd4a2107024020032802b402450d00200810390b2004410020021b210a2002200720021b210b024002402001450d00200141286c2101200341e8026a4104722104200b21020340200241246a2d00004102460d01200341e8026a41206a200241206a280200360200200341e8026a41186a200241186a290200370300200341e8026a41106a200241106a290200370300200341e8026a41086a200241086a290200370300200320022902003703e8022004200341f0016a412010c60a450d02200241286a2102200141586a22010d000b0b4103210141db0021094102210241efb5c1002108410821070240200a450d00200a41286c450d00200b10390b0c170b0240200a450d00200a41286c450d00200b10390b200341b0016a41186a2202200341d0016a41186a290300370300200341b0016a41106a2201200341d0016a41106a290300370300200341b0016a41086a2204200341d0016a41086a290300370300200320032903d0013703b001200341e8026a41186a22074200370300200341e8026a41106a22084200370300200341e8026a41086a22094200370300200342003703e802200341d8026a41b9fec300410610f2012009200341d8026a41086a220a290000370300200320032900d8023703e802200341d8026a41b0eec900410610f2012007200a290000370300200820032900d802370300200341d8006a200341e8026a412010f501200328025c21072003280258210820034190026a41186a200229030037030020034190026a41106a200129030037030020034190026a41086a2004290300370300200320032903b0013703900220034180016a200341f0016a10da02200341e8026a20032802800120032802880110dd0341002102024020032802e80222040d00200341b0026a41186a4200370300200342003703c002200342003702b40241002101200341002802ccdd4a22043602b0020c100b200341b0026a410c6a200341e8026a410c6a290200370200200341b0026a41146a200341e8026a41146a290200370200200341b0026a411c6a200341e8026a411c6a280200360200200320032902ec023702b402200320043602b00220032802b8022201411f4d0d0f41db002109410321014107210741ffb5c10021080c100b200341f0016a41186a200141196a290000370300200341f0016a41106a200141116a290000370300200341f0016a41086a200141096a290000370300200320012900013703f00120034190026a41186a200141396a29000037030020034190026a41106a200141316a29000037030020034190026a41086a200141296a2900003703002003200141216a290000370390022002411a6a2901002106200241196a2d00002101200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211a20022d00002117200228022822022002280200417f6a22193602000240024020170d00024020190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22172017280200417f6a221736020020170d00200210390b201a41ff017141014721170c010b4101211720190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b200320063702c801200320013a00c701200320043a00c601200320073b01c401200320083a00c301200320093a00c2012003200a3b01c0012003200b3a00bf012003200c3a00be012003200d3b01bc012003200e3a00bb012003200f3a00ba01200320103b01b801200320113a00b701200320123a00b601200320133b01b401200320143a00b301200320153a00b201200320163b01b00120170d08200341b0026a41186a200341b0016a41186a290200370300200341b0026a41106a200341b0016a41106a29020037030041082101200341b0026a41086a200341b0016a41086a290200370300200320032902b0013703b002200341b0016a200341b0026a10da02200341e8026a20032802b001220b20032802b801220910dd03024020032802e802220a0d004103210241db0021044101210741f7b5c10021080c0d0b200341e8026a41186a290300210620032903f802211b0240024020032902ec02221c422088a722070d00410021080c010b200a41246a210d4100210c410021084100210102400340024002402008450d00200a200141c4006c6a2102200a2001200c6a41c4006c6a210403400240200241046a200341f0016a412010c60a0d00200241246a20034190026a412010c60a450d030b2004200241c40010c30a41c4006a2104200241c4006a2102200141016a22012007490d000c040b0b200d200141c4006c6a210203400240200241606a200341f0016a412010c60a0d00200220034190026a412010c60a450d020b200241c4006a2102200141016a22012007490d000b410021080c030b200c417f6a210c200841016a2108200141016a22012007490d000b0b024020080d00410021080c010b200a200120086b41c4006c6a200a200141c4006c6a200720016b41c4006c10c40a1a0b201ca7210c02400240200720086b22022007490d004103210241db0021044101210741f7b5c1002108410821010c010b201c42ffffffff0f832002ad221c42208684211f024020020d004200211d4200211c0c0b0b200341e0006a201c4200420a420010c20a2003290360221c420a7c221d201b58200341e0006a41086a290300201d201c54ad7c221c200658201c2006511b0d0a200341d0016a200341b0026a201d201b7d201c20067d201d201b54ad7d10f70120032d00d00122024108460d0b200341d0016a41086a280200210120032802d401210820032d00d301210920032d00d201210720032d00d10121040b200c450d0c200c41c4006c450d0c200a10390c0c0b1030000b200041206a41023a0000200041186a41003a000020004200370308200042013703000c270b4102210e0c1b0b410221020c220b2002200b1044000b410221020c220b200141c4006a2802002104200141c1006a2d00002109200341b0016a41186a200141196a290000370300200341b0016a41106a200141116a290000370300200341b0016a41086a200141096a290000370300200320012900013703b001200341d0016a41186a200141396a290000370300200341d0016a41106a200141316a290000370300200341d0016a41086a200141296a290000370300200141216a290000210620022d0000210120022d00012107200228022822022002280200417f6a2208360200200320063703d0010240024002400240024020010d00024020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200741ff01714101460d01410221070c030b4102210720080d012002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d01200210390c020b200341e8026a200341d0016a200341b0016a200910d803200341b0026a41086a2202200341e8026a41186a2201290300370300200341b0026a41106a220d20034188036a290300370300200341b0026a41186a220e20034190036a2802003602002003200341e8026a41106a220f2903003703b002200341f4026a280200210a200341e8026a41086a2210280200210b20032d00ef02210c20032d00ee02210820032d00ed02210920032d00ec02210720032802e8024101460d0120034180016a41186a200e28020036020020034180016a41106a200d29030037030020034180016a41086a2002290300370300200320032903b00237038001200341003602b802200342013703b0022004200341b0026a10de03200341e8026a20032802b00220032802b802109c01200341f0016a41186a2001290300370300200341f0016a41106a200f290300370300200341f0016a41086a2010290300370300200320032903e8023703f001024020032802b402450d0020032802b00210390b20034180036a22024200370300200341f8026a22014200370300200341e8026a41086a220d4200370300200342003703e802200341d8026a41b9fec300410610f201200d200341d8026a41086a220e290000370300200320032900d8023703e802200341d8026a41b0eec900410610f2012002200e290000370300200120032900d802370300200341106a200341e8026a412010f501200328021421012003280210210d20034190026a200341b0016a10da02200341e8026a2003280290022214200328029802221510dd030240024020032802e80222110d00410321020c010b2002290300210620032903f802211b0240024020032902ec02221c422088a7220e0d00410021100c010b20014100200d1b210f200c411874200841107472200941087472200772211341002116410021104100210102400340024002402010450d002011200141c4006c6a21022011200120166a41c4006c6a210d03400240200241046a200341d0016a412010c60a0d00200241246a200341f0016a412010c60a0d004100200f20022802006b22122012200f4b1b20134f0d030b200d200241c40010c30a41c4006a210d200241c4006a2102200141016a2201200e490d000c040b0b2011200141c4006c6a210203400240200241046a200341d0016a412010c60a0d00200241246a200341f0016a412010c60a0d004100200f20022802006b220d200d200f4b1b20134f0d020b200241c4006a2102200141016a2201200e490d000b410021100c030b2016417f6a2116201041016a2110200141016a2201200e490d000b0b024020100d00410021100c010b2011200120106b41c4006c6a2011200141c4006c6a200e20016b41c4006c10c40a1a0b201ca72101410321020240024002400240200e20106b220d200e4f0d00201c42ffffffff0f83200dad221c42208684211f0240200d0d004200211d4200211c0c020b2003201c4200420a420010c20a2003290300221c420a7c221d201b58200341086a290300201d201c54ad7c221c200658201c2006511b0d01200341b0026a200341b0016a201d201b7d201c20067d201d201b54ad7d10f70120032d00b00222024108460d020b2001450d03200141c4006c0d020c030b0240201b201d582006201c582006201c511b0d00200341b0016a201b201d7d2006201c7d201b201d54ad7d109f020b200d0d0002402001450d00200141c4006c450d00201110390b2003201f3702ec02200341003602e8022014201510fd01410821020c020b20034180036a201c3703002003201d3703f8022003201f3702ec0220142015200341e8026a10df034108210241000d012001450d01200141c4006c450d010b201110390b0240200328029402450d00201410390b024020024108460d004103210741db0021094106210841c4b5c100210b410b210a0c020b200341b0026a41086a200a360200200341bc026a200329038001370200200341c4026a20034180016a41086a290300370200200341b0026a411c6a20034180016a41106a290300370200200341d4026a20034180016a41186a2802003602002003200b3602b4022003200c4118742008411074722009410874722007723602b00220034190026a41186a200341d0016a41186a29030037030020034190026a41106a200341d0016a41106a29030037030020034190026a41086a200341d0016a41086a290300370300200320032903d00137039002200341e8026a200441c00710c30a1a200341b0026a20034190026a200341e8026a10d90320041039200320032800a8013602e8022003200341ab016a2800003600eb02200041186a41003a00004200210620004200370308200020032802e8023600192000411c6a20032800eb023600000c020b0b200410d40320041039200320032800a8013602e8022003200341ab016a2800003600eb02200041186a41003a000020004200370308200020032802e8023600192000411c6a20032800eb02360000200041286a200a360200200041246a200b3602002000200c3a0023200020083a0022200020093a0021200041206a20073a0000420121060b200020063703000c220b200341f0016a41186a200141196a290000370300200341f0016a41106a200141116a290000370300200341f0016a41086a200141096a290000370300200320012900013703f00120034190026a41186a200141396a29000037030020034190026a41106a200141316a29000037030020034190026a41086a200141296a2900003703002003200141216a290000370390022002411a6a2901002106200241196a2d00002101200241186a2d00002104200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001211a20022d00002117200228022822022002280200417f6a22193602000240024020170d00024020190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22172017280200417f6a221736020020170d00200210390b201a41ff017141014721170c010b4101211720190d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22192019280200417f6a221936020020190d00200210390b200320063702c801200320013a00c701200320043a00c601200320073b01c401200320083a00c301200320093a00c2012003200a3b01c0012003200b3a00bf012003200c3a00be012003200d3b01bc012003200e3a00bb012003200f3a00ba01200320103b01b801200320113a00b701200320123a00b601200320133b01b401200320143a00b301200320153a00b201200320163b01b00102400240024002400240024020170d00200341b0026a41186a200341b0016a41186a290200370300200341b0026a41106a200341b0016a41106a29020037030041082101200341b0026a41086a200341b0016a41086a290200370300200320032902b0013703b002200341b0016a200341f0016a10da02200341e8026a20032802b001220b20032802b801220910dd03024020032802e802220a0d004103210241db0021044101210741f7b5c10021080c050b200341e8026a41186a290300210620032903f802211b0240024020032902ec02221c422088a722070d00410021080c010b200a41246a210d4100210c410021084100210102400340024002402008450d00200a200141c4006c6a2102200a2001200c6a41c4006c6a210403400240200241046a200341b0026a412010c60a0d00200241246a20034190026a412010c60a450d030b2004200241c40010c30a41c4006a2104200241c4006a2102200141016a22012007490d000c040b0b200d200141c4006c6a210203400240200241606a200341b0026a412010c60a0d00200220034190026a412010c60a450d020b200241c4006a2102200141016a22012007490d000b410021080c030b200c417f6a210c200841016a2108200141016a22012007490d000b0b024020080d00410021080c010b200a200120086b41c4006c6a200a200141c4006c6a200720016b41c4006c10c40a1a0b201ca7210c02400240200720086b22022007490d004103210241db0021044101210741f7b5c1002108410821010c010b201c42ffffffff0f832002ad221c42208684211f024020020d004200211d4200211c0c030b200341f0006a201c4200420a420010c20a2003290370221c420a7c221d201b58200341f0006a41086a290300201d201c54ad7c221c200658201c2006511b0d02200341d0016a200341f0016a201d201b7d201c20067d201d201b54ad7d10f70120032d00d00122024108460d03200341d0016a41086a280200210120032802d401210820032d00d301210920032d00d201210720032d00d10121040b200c450d04200c41c4006c450d04200a10390c040b410221020c040b0240201b201d582006201c582006201c511b0d00200341f0016a201b201d7d2006201c7d201b201d54ad7d109f020b20020d000240200c450d00200c41c4006c450d00200a10390b2003201f3702ec02200341003602e802200b200910fd01410821020c010b20034180036a201c3703002003201d3703f8022003201f3702ec02200b2009200341e8026a10df034108210241000d00200c450d00200c41c4006c450d00200a10390b0b024020032802b401450d00200b10390b20024108470d0020032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200042003703000c220b20032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200041286a2001360200200041246a2008360200200020093a0023200020073a0022200020043a0021200041206a20023a0000200042013703000c210b410221020c040b0240201b201d582006201c582006201c511b0d00200341b0026a201b201d7d2006201c7d201b201d54ad7d109f020b20020d000240200c450d00200c41c4006c450d00200a10390b2003201f3702ec02200341003602e802200b200910fd01410821020c010b20034180036a201c3703002003201d3703f8022003201f3702ec02200b2009200341e8026a10df034108210241000d00200c450d00200c41c4006c450d00200a10390b0b024020032802b401450d00200b10390b20024108470d0020032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200042003703000c1c0b20032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200041286a2001360200200041246a2008360200200020093a0023200020073a0022200020043a0021200041206a20023a0000200042013703000c1b0b2007410020081b2107200341e8026a41186a220820034190026a41186a290300370300200341e8026a41106a220920034190026a41106a290300370300200341e8026a41086a220a20034190026a41086a29030037030020032003290390023703e8020240200120032802b402470d00200341b0026a200110e00320032802b002210420032802b80221010b2004200141c4006c6a22022007360200200220032903e8023702042002410c6a200a290300370200200241146a20092903003702002002411c6a20082903003702002002413c6a201c3702002002413b6a20303a00002002413a6a202f3a0000200241386a202e3b0100200241376a202d3a0000200241366a202c3a0000200241346a202b3b0100200241336a202a3a0000200241326a20293a0000200241306a20283b01002002412f6a20273a00002002412e6a20263a00002002412c6a20253b01002002412b6a20243a00002002412a6a20233a0000200241286a20223b0100200241276a20213a0000200241266a20203a0000200220183b01242003200141016a22023602b802200341b0026a41186a290300211d4200211b20032903c002211f4200210620022001490d01200341c8006a2002ad4200420a420010c20a20032903482206420a7c221b201f58200341c8006a41086a290300201b200654ad7c2206201d582006201d511b0d01200341e8026a200341f0016a201b201f7d2006201d7d201b201f54ad7d10f70120032d00e80222014108460d02200341e8026a41086a280200210720032802ec02210820032d00eb02210420032d00ea02210220032d00e90221090b20032802b402220a450d02200a41c4006c450d0220032802b00210390c020b0240201f201b58201d200658201d2006511b0d00200341f0016a201f201b7d201d20067d201f201b54ad7d109f020b2002450d020b200341b0026a41186a2006370300200341b0026a41106a201b370300200341e8026a41186a2006370300200341e8026a41106a201b370300200341e8026a41086a200341b0026a41086a290300370300200320032903b00222063703e80220032802880121012003280280012104024002402006a722070d002004200110fd010c010b20042001200341e8026a10df0320032802ec022201450d00200141c4006c450d00200710390b2002410047210841082101410021070b0240200328028401450d0020032802800110390b20014108470d022003418d036a20032903f001370000200341c5036a201c370000200341c4036a20303a0000200341c3036a202f3a0000200341c1036a202e3b0000200341c0036a202d3a0000200341bf036a202c3a0000200341bd036a202b3b0000200341bc036a202a3a0000200341bb036a20293a0000200341b9036a20283b0000200341b8036a20273a0000200341b7036a20263a0000200341b5036a20253b0000200341b4036a20243a0000200341b3036a20233a0000200341b1036a20223b0000200341b0036a20213a0000200341af036a20203a0000200341ad036a20183b000020034185036a200341d0016a41186a290300370000200341fd026a200341d0016a41106a290300370000200341f5026a200341d0016a41086a29030037000020034195036a200341f0016a41086a2903003700002003419d036a200341f0016a41106a290300370000200341a5036a200341f0016a41186a290300370000200320032903d0013700ed02200341023a00ec02200341133a00e802200341e8026a10fc01200320032800a8013602a0012003200341ab016a2800003600a301200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200042003703000c160b41a6dac000413f41e8dac0001065000b0b200320032800a8013602a0012003200341ab016a2800003600a301200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200041286a2007360200200041246a2008360200200020043a0023200020023a0022200020093a0021200041206a20013a0000200042013703000c130b20032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200041286a410c360200200041246a41cfb5c100360200200041db0a3b0021200041206a20013a0000200042013703000c120b0b200320032800d001360280012003200341d3016a28000036008301200041186a41003a00002000420037030820002003280280013600192000411c6a200328008301360000200041286a2001360200200041246a2007360200200020023a0023200020083a0022200020093a0021200041206a20043a0000200042013703000c100b0240201b201f58201c201d58201c201d511b0d0020034190026a201b201f7d201c201d7d201b201f54ad7d109f020b20020d0002402012450d00201241286c450d00200910390b2013201510fd01410021110c010b200341c8026a201d3703002003201f3703c0022003200642ffffffff0f83201e422086843702b402200320093602b00220132015200341b0026a10e103410021112009450d002006a72202450d00200241286c450d00200910390b0b0b024020032802b401450d00201310390b2011450d010b20004200370308200020032802d802360019200020013a0023200020023a0022200020103a0021200041186a41003a00002000411c6a20032800db02360000200041286a200d360200200041246a200f360200200041206a200e3a0000200042013703000c0a0b20032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200042003703000c090b201d201c58201b200658201b2006511b0d00200341d0016a201d201c7d201b20067d201d201c54ad7d109f020b20034190026a41186a200637030020034190026a41106a201c370300200341e8026a41186a2006370300200341e8026a41106a201c370300200341e8026a41086a20034190026a41086a290300370300200320032903900222063703e80220032802b801210220032802b0012101024002402006a722040d002001200210fd010c010b20012002200341e8026a10e10320032802ec022202450d00200241286c450d00200410390b200320032800d8023602a8012003200341db026a2800003600ab01420021060c020b41db002101410321020b200320032800d8023602a8012003200341db026a2800003600ab0142012106200328029402220a450d00200a41286c450d0020032802900210390b20032802b401450d0020032802b00110390b2006500d010b200320032800ab013600a301200320032802a8013602a001200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200041286a2008360200200041246a2007360200200020093a0023200020043a0022200020013a0021200041206a20023a0000200042013703000c020b200320032800ab013600a301200320032802a8013602a001200041186a41003a000020004200370308200020032802a0013600192000411c6a20032800a301360000200042003703000c010b200410d4032004103920032003280080013602d802200320034183016a2800003600db02200041186a41003a000020004200370308200020032802d8023600192000411c6a20032800db02360000200041286a2009360200200041246a20083602002000200a3a0023200020073a0022200020013a0021200041206a20023a0000200042013703000b200341f00d6a24000b850b02077f027e230041a0026b22042400200441d0016a200110de02200441f8016a20042802d001220520042802d80110da0320044180026a280200410020042802f80122011b210620042802fc01210741002802ccdd4a2108024020042802d401450d00200510390b2007410020011b21052001200820011b2109024002402006450d00200441f8016a4104722107024002400240200341ff0171220a4102460d00200641286c2106200921010340200141246a2d000022084102460d04200441f8016a41206a200141206a280200360200200441f8016a41186a200141186a290200370300200441f8016a41106a200141106a290200370300200441f8016a41086a200141086a290200370300200420012902003703f801024020072002412010c60a0d002008200a460d030b200141286a2101200641586a22060d000c040b0b200641286c2106200921010340200141246a2d000022034102460d03200441f8016a41206a200141206a280200360200200441f8016a41186a200141186a290200370300200441f8016a41106a200141106a290200370300200441f8016a41086a200141086a290200370300200420012902003703f801024020072002412010c60a450d00200141286a2101200641586a2206450d040c010b0b200441d0016a41206a200141206a280200360200200441d0016a41186a200141186a290200370300200441d0016a41106a200141106a290200370300200441d0016a41086a200141086a290200370300200441ce016a200141276a2d00003a0000200420012902003703d0012004200141256a2f00003b01cc010c010b200441d0016a41206a200141206a280200360200200441d0016a41186a200141186a290200370300200441d0016a41106a200141106a290200370300200441d0016a41086a200141086a290200370300200441ce016a200141276a2d00003a0000200420012902003703d0012004200141256a2f00003b01cc010b200441a8016a41206a200441d0016a41206a2802002201360200200441a8016a41186a200441d0016a41186a290300220b370300200441a8016a41106a200441d0016a41106a290300220c370300200441fc006a41026a2202200441cc016a41026a2d00003a000020044180016a41086a2207200441d0016a41086a29030037030020044180016a41106a2206200c37030020044180016a41186a2208200b37030020044180016a41206a220a2001360200200420042f01cc013b017c200420042903d00137038001200341ff01714102460d00200441d8006a41206a200a2802002201360200200441d8006a41186a2008290300220b370300200441d8006a41106a2006290300220c370300200441046a41026a220620022d00003a0000200441326a410a6a2007290300370100200441326a41126a200c370100200441326a411a6a200b370100200441326a41226a2001360100200420042f017c3b01042004200429038001370134200441086a411e6a200441326a411e6a290100370100200441086a41186a200441326a41186a290100370300200441086a41106a200441326a41106a290100370300200441086a41086a200441326a41086a29010037030020042004290132370308200041286a20033a0000200041246a200441086a41226a2801003601002000411c6a200441086a411a6a290100370100200041146a200441086a41126a2901003701002000410c6a200441086a410a6a2901003701002000200429010a370104200020042f01043b00292000412b6a20062d00003a000002402005450d00200541286c450d00200910390b410021010c010b2000410c6a4108360200200041086a41efb5c100360200200041066a41023a000020004183b6013b010402402005450d00200541286c450d00200910390b410121010b20002001360200200441a0026a24000bd80701037f230041d0136b22032400200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002400240411010382204450d00200441ac81c40036020c200441013602082004428180808010370200411010382201450d002001419481c40036020c20014101360208200142818080801037020020042004280200417f6a2205360200024020050d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22052005280200417f6a220536020020050d00200410390b200128020041016a220441014d0d0120012004360200412c10382205450d0020052001360200200520002902003702042005410c6a200041086a290200370200200541146a200041106a2902003702002005411c6a200041186a290200370200200541246a200041206a290200370200411010382204450d00200441fc80c40036020c20042005360208200442818080801037020020012001280200417f6a2205360200024020050d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22052005280200417f6a220536020020050d00200110390b200341d8006a200241c00710c30a1a024002402004280208200341d8006a200428020c28020c1101000d00200341c0006a41003a000041022105200341c8006a41023a000020042004280200417f6a22013602002003420037033020034201370328024020010d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22012001280200417f6a220136020020010d00200410390b200341d8006a10e203410121040c010b20034198086a200341d8006a41c00710c30a1a200341aa136a200341086a290300370100200341b2136a200341106a290300370100200341ba136a200341186a290300370100200341a0136a41206a2003411e6a29010037010020034180023b01a013200320032903003701a213200320043602c813200341286a20034198086a200341a0136a10e30320032903284201512104200341286a41206a2d000021050b4108210102402004450d004108210120032903304202510d002003200341c9006a2201290000370398082003200141076a28000036009f08200521010b2003200328009f0836005f2003200329039808370358200341a8086a200328005f360000200341a1086a2003290358370000200341a0086a20013a0000200341003a009c08200341133a00980820034198086a10fc01200341d0136a24000f0b1030000b00000bc40804047f017e097f037e230041e0016b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ad010240024002400240024020032802000d0020032802042206200328022441286e2201200120064b1bad42287e2207422088a70d012007a72201417f4c0d010240024020010d00410421080c010b200110382208450d030b4100210920034100360230200320083602282003200141286e220136022c02400240024020060d00410021090c010b200341b8016a4101722102200341376a210a0340200341b8016a200341206a10800220032d00b8014101460d0220034198016a41186a220b200241186a29000037030020034198016a41106a220c200241106a29000037030020034198016a41086a220d200241086a29000037030020032002290000370398012003280224220e450d022003200e417f6a220f36022420032003280220220141016a360220410021100240024020012d00000e020100040b410121100b200f4104490d02200341d8006a41086a200d2903002207370300200341d8006a41106a200c2903002211370300200341d8006a41186a200b2903002212370300200341386a41086a220b2007370300200341386a41106a220c2011370300200341386a41186a220d20123703002003200e417b6a3602242003200141056a36022020032003290398012207370358200320073703382001280001210e02402009200328022c470d00200341286a200910db0320032802282108200328023021090b2008200941286c6a2201200e360200200d2903002107200c2903002111200b290300211220032903382113200120103a002420012013370204200120032f00353b0025200141276a200a2d00003a00002001410c6a2012370200200141146a20113702002001411c6a20073702002003200328023041016a22093602302006417f6a22060d000b200328022c2101200328022821080b2008450d012003280224410f4b0d042001450d01200141286c450d01200810390c010b200341d8006a41086a200341f8006a41086a290300370300200328022c2201450d00200141286c450d00200328022810390b2003420037029c012003410028029cde4a360298012003410c36027c2003200341086a360278200320034198016a360258200341cc016a4101360200200342013702bc01200341e4b4c4003602b8012003200341f8006a3602c801200341d8006a41fc86ca00200341b8016a103b1a20032802980120032802a00110e7020240200328029c01450d0020032802980110390b200041003602000c030b1034000b1030000b2000200136020420002008360200200041106a20032802202201290000370300200041086a2009360200200041186a200141086a2900003703000b2005450d00200410390b200341e0016a24000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42287e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141286c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141286e360200200241206a24000f0b1034000b9d0401067f230041106b220224000240411a10382203450d002002421a37020420022003360200200320012802002204290000370000200341086a200441086a29000037000020024110360208200128020421032002411041201081012002280204210520022802002206200228020822076a22042003290000370000200441086a200341086a290000370000200441106a200341106a290000370000200441186a200341186a2900003700002002200741206a2203360208200128020821040240200520036b41034b0d0020022003410410810120022802002106200228020821030b200620036a20043600002002200341046a2203360208200128020c21060240200228020420036b41034b0d00200220034104108101200228020821030b2002280200220420036a20063600002002200341046a2203360208200228020421060240024020012802102d00004101460d00024020062003470d0020022003410110810120022802002104200228020821030b200420036a41003a00000c010b024020062003470d0020022003410110810120022802002104200228020821030b200420036a41013a00000b2002200341016a220336020820012f011421010240200228020420036b41014b0d0020022003410210810120022802002104200228020821030b200420036a20013b0000200020022802002201200341026a109c0102402002280204450d00200110390b200241106a24000f0b1030000bc30b04047f017e147f037e230041c0016b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ad010240024002400240024020032802000d0020032802042206200328022441c4006e2201200120064b1bad42c4007e2207422088a70d012007a72201417f4c0d010240024020010d00410421080c010b200110382208450d030b4100210920034100360230200320083602282003200141c4006e220136022c024002400240024020060d00410021090c010b20034198016a410472210a200341b1016a210b200341aa016a210c200341a3016a210d20034198016a410172210e4100210f034020034198016a200341206a10800220032d0098014101460d03200f41016a210f200341e8006a41186a2210200e41186a290000370300200341e8006a41106a2211200e41106a290000370300200341e8006a41086a2212200e41086a2900003703002003200e2900003703684100210120032802242113034020132001460d03200a20016a200328022022142d00003a00002003200141016a2202360298012003201441016a3602202002210120024120470d000b20034190016a41026a2215200d41026a2d00003a00002003418c016a41026a2216200c41026a2d00003a00002003200a2f01003b0194012003200d2f00003b0190012003200c2f00003b018c012003200a41026a2d00003a0096012003201320026b2201360224200328009f01210220032801a601211320032800ad01211720032802b401211820032802b801211920034188016a41026a221a200b41026a2d00003a00002003200b2f00003b01880120014104490d03200341c8006a41086a221b2012290300370300200341c8006a41106a22122011290300370300200341c8006a41186a22112010290300370300200341c0006a41026a221020152d00003a000020032003290368370348200320032f0194013b0144200320032d0096013a0046200320032f0190013b01402003201441056a36022020032001417c6a360224201428000121142003413c6a41026a221520162d00003a0000200341386a41026a2216201a2d00003a0000200320032f018c013b013c200320032f0188013b013802402009200328022c470d00200341286a200910e00320032802282108200328023021090b2008200941c4006c6a22012014360200201129030021072012290300211c201b290300211d2003290348211e200141266a20032d00463a0000200120032f01443b01242001201e3702042001410c6a201d370200200141146a201c3702002001411c6a2007370200200141276a20023600002001412e6a20133600002001412b6a20032f01403b00002001412d6a20102d00003a0000200141326a20032f013c3b0000200141346a20152d00003a0000200141356a2017360000200141396a20032f01383b00002001413b6a20162d00003a0000200141c0006a20193600002001413c6a20183600002003200941016a2209360230200f2006470d000b200328022c2101200328022821080b2008450d022003280224410f4b0d052001450d02200141c4006c450d02200810390c020b200341003602240b200328022c2201450d00200141c4006c450d00200328022810390b2003420037026c2003410028029cde4a3602682003410c36024c2003200341086a3602482003200341e8006a360228200341ac016a41013602002003420137029c01200341e4b4c400360298012003200341c8006a3602a801200341286a41fc86ca0020034198016a103b1a2003280268200328027010e7020240200328026c450d00200328026810390b200041003602000c030b1034000b1030000b2000200136020420002008360200200041106a20032802202201290000370300200041086a2009360200200041186a200141086a2900003703000b2005450d00200410390b200341c0016a24000baecb0205057f017e017f017e057f230041106b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e25000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324250b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41003a00002003200441016a220436020002400240024002400240024002400240024002402000280208417f6a0e0a000102030405060708092e0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c2d0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a360200200028020c200041146a280200200110d6010c2c0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200029031021070240200528020020046b41074b0d00200120044108108101200328020021040b200128020020046a20073700002003200441086a3602000c2b0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a200441016a360200200028020c200041146a280200200110d6010c2a0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a200441016a360200200028020c200041146a280200200110d6010c290b2000410c6a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a200441016a3602002003200110f6060c280b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41063a0000200141086a200441016a360200200028020c21042001200041146a280200220310d2012003450d272004200341186c6a210303402004280200200441086a280200200110d6012004410c6a280200200441146a280200200110d601200441186a22042003470d000c280b0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41073a0000200141086a200441016a360200200028020c21042001200041146a280200220310d2012003450d2620042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000c270b0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41083a0000200141086a2203200441016a360200200028020c200041146a280200200110d6012000280218210602402005280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c250b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41093a0000200141086a200441016a360200200028020c200041146a280200200110d6010c240b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41013a00002003200441016a22043602000240024002402000280208417f6a0e03000102260b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2206200441016a220336020020004188026a21040240200528020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002006200341206a2204360200200029032021070240200141046a220528020020046b41074b0d00200120044108108101200141086a28020021040b200128020020046a2007370000200141086a2203200441086a360200200041286a200110f70620004198016a200110f706200028020c210602402005280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200041106a28020021042001200041186a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b2000411c6a28020021050240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c250b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2206200441016a220336020020004188026a21040240200528020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002006200341206a2204360200200029032021070240200141046a220528020020046b41074b0d00200120044108108101200141086a28020021040b200128020020046a2007370000200141086a2203200441086a360200200041286a200110f70620004198016a200110f706200028020c210602402005280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200041106a28020021042001200041186a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b2000411c6a28020021050240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c240b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200024020052802002004470d00200120044101108101200328020021040b200128020020046a41013a00002003200441016a2204360200200029031021070240200141046a220528020020046b41074b0d00200120044108108101200141086a28020021040b200128020020046a2007370000200141086a2203200441086a2204360200200029031821070240200528020020046b41074b0d00200120044108108101200328020021040b200128020020046a20073700002003200441086a220436020002400240024020002d00200e03000102260b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c250b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602000c240b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a3602000c230b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200041086a2106200128020020046a41023a00002003200441016a2204360200024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a360200200620011091030c220b200041046a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41033a00002005200441016a22043602000240024002400240024020032d0000417f6a0e050001020304260b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c250b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a2204360200200028022821030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c240b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c230b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2208200441016a2205360200200341016a21040240200628020020056b411f4b0d00200120054120108101200828020021050b200128020020056a22062004290000370000200641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a2900003700002008200541206a2204360200200028022821050240200141046a220628020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a2205200441046a220436020020032d00212103024020062802002004470d00200120044101108101200528020021040b200128020020046a20033a00002005200441016a3602000c220b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c210b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41043a00002003200441016a220436020002400240024002402000280208417f6a0e0400010203240b200041306a21032000410c6a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a360200200520011082022002200336020c2002410c6a20011092030c230b200041c0006a2103200041306a21052000410c6a21060240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a360200200620011082022002200536020c2002410c6a20011092032002200336020c2002410c6a20011092030c220b200041d8006a2103200041306a21052000410c6a21060240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a36020020062001108202200520011082022002200336020c2002410c6a20011092030c210b200041306a21032000410c6a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a200441016a360200200520011082022002200336020c2002410c6a20011092030c200b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41063a00002003200441016a2204360200024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002000280204210420012000410c6a280200220310d2012003450d1f200341f0006c210303402004200110f706200441f0006a2104200341907f6a22030d000c200b0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41073a00002003200441016a36020020011098050c1e0b200041046a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41093a00002005200441016a22043602000240024020032d0000417f6a0e0200011f0b200341016a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002003200110d00420002802e801200041f0016a280200200110d6010c1e0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602000c1d0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a410a3a00002003200441016a22043602000240024002402000280208417f6a0e030001021f0b200041206a21050240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a36020020052001109904200028020c210502402006280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a360200200041106a28020021042001200041186a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b2000411c6a28020021050240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1e0b200041206a21050240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a36020020052001109904200028020c210502402006280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a360200200041106a28020021042001200041186a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b2000411c6a28020021050240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1d0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a2204360200200028021021030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c1c0b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a410b3a00002003200441016a2204360200024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020421050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a360200200041086a280200200041106a280200200110d601200041146a280200210420012000411c6a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b200041206a28020021050240200141046a2206280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a2204360200200041246a28020021030240200628020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a2206200441046a2203360200200041286a28020021050240200141046a220828020020036b41034b0d00200120034104108101200628020021030b2000412c6a2104200128020020036a20053600002006200341046a22053602000240200828020020056b413f4b0d002001200541c000108101200141086a28020021050b200128020020056a22032004290000370000200341386a200441386a290000370000200341306a200441306a290000370000200341286a200441286a290000370000200341206a200441206a290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a200541c0006a3602000c1b0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a410c3a00002003200441016a36020020011098050c1a0b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a410e3a00002003200441016a220436020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000280208417f6a0e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627410b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c400b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3f0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3e0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3d0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3c0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3b0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41063a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c3a0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41073a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c390b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41083a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c380b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41093a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c370b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410a3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c360b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410b3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c350b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410c3a0000200141086a200441016a22043602000240200028020c4101460d00024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c350b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028021021050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c340b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410d3a0000200141086a200441016a22043602000240200028020c4101460d00024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c340b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028021021050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c330b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410e3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c320b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a410f3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c310b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41103a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c300b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41113a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2f0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41123a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2e0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41133a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2d0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41143a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2c0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41153a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2b0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41163a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c2a0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41173a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c290b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41183a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c280b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41193a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c270b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411a3a0000200141086a2203200441016a2204360200200029031021070240200141046a28020020046b41074b0d00200120044108108101200328020021040b200128020020046a20073700002003200441086a3602000c260b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411b3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c250b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411c3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c240b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411d3a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c230b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411e3a0000200141086a2203200441016a2204360200200041186a2903002107200029031021090240200141046a28020020046b410f4b0d00200120044110108101200328020021040b2003200441106a360200200128020020046a22042007370008200420093700000c220b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a411f3a0000200141086a2203200441016a2204360200200041186a2903002107200029031021090240200141046a28020020046b410f4b0d00200120044110108101200328020021040b2003200441106a360200200128020020046a22042007370008200420093700000c210b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41203a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c200b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41213a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1f0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41223a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1e0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41233a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1d0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41243a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1c0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41253a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1b0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41263a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c1a0b024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41273a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c190b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a410f3a00002003200441016a36020020011098050c180b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41103a00002003200441016a36020020011098050c170b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41113a00002003200441016a2204360200024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2206200441016a3602002000280204210420012000410c6a280200220310d2010240200341d0006c2203450d00200420036a210a200141046a210803402004200110b9052004410c6a280200210502402008280200200628020022036b41034b0d00200120034104108101200628020021030b200128020020036a20053600002006200341046a22053602000240200828020020056b413f4b0d002001200541c000108101200628020021050b200128020020056a2203200441106a290000370000200341386a200441c8006a290000370000200341306a200441c0006a290000370000200341286a200441386a290000370000200341206a200441306a290000370000200341186a200441286a290000370000200341106a200441206a290000370000200341086a200441186a2900003700002006200541c0006a360200200441d0006a2204200a470d000b0b200041106a280200210b2001200041186a280200220410d20102402004450d00200b200441f4026c6a210c200141086a2108200141046a210a0340200b200110e605200b2802dc0221052001200b2802e402220410d20102402004450d00200441c1006c210d0340200541016a2104200a2802002106200828020021030240024020052d00004101460d00024020062003470d00200120034101108101200828020021030b200128020020036a41013a00002008200341016a22033602000240200a28020020036b413f4b0d002001200341c000108101200828020021030b200128020020036a22062004290000370000200641386a200441386a290000370000200641306a200441306a290000370000200641286a200441286a290000370000200641206a200441206a290000370000200641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a2900003700000c010b024020062003470d00200120034101108101200828020021030b200128020020036a41023a00002008200341016a22033602000240200a28020020036b413f4b0d002001200341c000108101200828020021030b200128020020036a22062004290000370000200641386a200441386a290000370000200641306a200441306a290000370000200641286a200441286a290000370000200641206a200441206a290000370000200641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a2900003700000b200541c1006a21052008200341c0006a360200200d41bf7f6a220d0d000b0b200b2802ec0222034103762105200b2802e80221060240024002402003418004490d00200541027421042003418080084f0d012004410172210d0240200a280200200828020022046b41014b0d00200120044102108101200828020021040b200128020020046a200d3b0000200441026a21040c020b2005410274210d0240200a28020020082802002204470d00200120044101108101200828020021040b200128020020046a200d3a0000200441016a21040c010b2004410272210d0240200a280200200828020022046b41034b0d00200120044104108101200828020021040b200128020020046a200d360000200441046a21040b20082004360200200b41f4026a210b0240200a28020020046b200520034107716a220341037620034107714100476a22034f0d00200120042003108101200828020021040b200128020020046a2006200310c30a1a2008200420036a360200200b200c470d000b0b2000411c6a28020021042001200041246a280200220310d20102402003450d002004200341306c6a210e200141046a210a0340412010382203450d1920032004290010370000200341186a220d200441286a290000370000200341106a220b200441206a290000370000200341086a220c200441186a2900003700000240200a280200200141086a220528020022086b411f4b0d00200120084120108101200528020021080b200128020020086a22062003290000370000200641186a200d290000370000200641106a200b290000370000200641086a200c2900003700002005200841206a36020020031039200428020021060240200a280200200528020022036b41034b0d00200120034104108101200528020021030b200441306a210b200128020020036a20063600002005200341046a360200200428020421062001200428020c220410d20102402004450d00200441c8006c210d0340200a28020021032005280200210402400240200641046a2d000022084104460d00024020032004470d00200120044101108101200528020021040b200128020020046a41003a00002005200441016a2204360200024002400240024020080e0400010203000b0240200a2802002004470d00200120044101108101200528020021040b200128020020046a41003a0000200441016a21040c040b0240200a2802002004470d00200120044101108101200528020021040b200128020020046a41013a0000200441016a21040c030b0240200a2802002004470d00200120044101108101200528020021040b200128020020046a41023a0000200441016a21040c020b0240200a2802002004470d00200120044101108101200528020021040b200128020020046a41033a0000200441016a21040c010b024020032004470d00200120044101108101200528020021040b200128020020046a41013a00002005200441016a22043602000240200a2802002004470d00200120044101108101200528020021040b200128020020046a41003a0000200441016a21040b20052004360200200628020021030240200a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20033600002005200441046a2208360200200641056a21040240200a28020020086b413f4b0d002001200841c000108101200528020021080b200641c8006a2106200128020020086a22032004290000370000200341386a200441386a290000370000200341306a200441306a290000370000200341286a200441286a290000370000200341206a200441206a290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002005200841c0006a360200200d41b87f6a220d0d000b0b200b2104200b200e470d000b0b200041286a200110f7060c160b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41123a00002003200441016a36020020011098050c150b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41133a00002003200441016a2204360200024002400240024002402000280204417f6a0e050001020304190b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200028020c200041146a280200200110d6010c180b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200028020c200041146a280200200110d6010c170b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200028020c200041146a280200200110d601200028021821050240200141046a280200200328020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000c160b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a360200200028020c200041146a280200200110d6010c150b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c140b0240200141046a2205280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41143a00002003200441016a2204360200024020052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020421050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c130b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41153a00002003200441016a36020020011098050c120b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41163a00002003200441016a36020020011098050c110b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41173a00002003200441016a22043602000240024002400240024002402000280204417f6a0e06000102030405160b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a2204360200200028020c21030240200141046a220528020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a2203200441046a2204360200200028021021060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c150b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c140b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a22043602002000410c6a28020021030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c130b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c120b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a200441016a3602000c110b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a200441016a3602000c100b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41183a00002003200441016a36020020011098050c0f0b200041086a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41193a00002005200441016a220436020002400240024002400240024020032d0000417f6a0e06000102030405140b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602002000280210200041186a280200200110d601200028021c200041246a280200200110d6010c130b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a2204360200200041d0006a2903002107200029034821090240200141046a220528020020046b410f4b0d00200120044110108101200141086a28020021040b200128020020046a2203200737000820032009370000200141086a2203200441106a2204360200200028022c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602002000280230200041386a280200200110d601200028023c200041c4006a280200200110d6010c120b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c110b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a2204360200200028021021030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c100b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0f0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a200441016a3602000c0e0b0240200141046a2203280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a411a3a00002005200441016a22043602000240024002402000280208417f6a0e03000102100b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a22043602000240024002400240200028020c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a2204360200200028020c21060240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20063600002005200441046a22043602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a22043602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a22043602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a22043602000b0240024002402000280210220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028021021050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c120b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c110b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c100b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000c0f0b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a22043602000240024002400240200028020c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a2204360200200028020c21060240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20063600002005200441046a22043602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a22043602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a22043602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a22043602000b02400240024002402000280210220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a2204360200200028021021060240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20063600002005200441046a22043602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a22043602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a22043602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a22043602000b02400240024002402000280214220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a2204360200200028021421060240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20063600002005200441046a22043602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a22043602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a22043602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a22043602000b200041206a210602400240024002402000280218220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028021821050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000b2002200636020c2002410c6a20011092030c0e0b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a3602000c0d0b200041086a21050240200141046a2203280200200141086a22062802002204470d00200120044101108101200628020021040b200128020020046a411b3a00002006200441016a22043602000240024002400240024002400240024020052d0000417f6a0e080001020304050607140b024020032802002004470d00200120044101108101200141086a28020021040b200041c0006a2108200128020020046a41003a0000200141086a200441016a22043602000240024002400240200028022c220641c000490d00200641808001490d012006418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2206200441016a2204360200200028022c210a0240200141046a28020020046b41034b0d00200120044104108101200628020021040b200128020020046a200a3600002006200441046a3602000c030b20064102742106024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20063a0000200141086a200441016a3602000c020b200641027441017221060240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20063b0000200141086a200441026a3602000c010b200641027441027221060240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a3602000b2002200836020c2002410c6a200110920302400240024002402000280230220441c000490d00200441808001490d012004418080808004490d020240200141046a2208280200200141086a22062802002204470d00200120044101108101200628020021040b200128020020046a41033a00002006200441016a2204360200200028023021060240200828020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a22043602000c030b200441027421080240200141046a280200200141086a22062802002204470d00200120044101108101200628020021040b200128020020046a20083a00002006200441016a22043602000c020b200441027441017221080240200141046a280200200141086a220628020022046b41014b0d00200120044102108101200628020021040b200128020020046a20083b00002006200441026a22043602000c010b200441027441027221080240200141046a280200200141086a220628020022046b41034b0d00200120044104108101200628020021040b200128020020046a20083600002006200441046a22043602000b02400240024002402000280234220641c000490d00200641808001490d012006418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2206200441016a2204360200200028023421080240200141046a28020020046b41034b0d00200120044104108101200628020021040b200128020020046a20083600002006200441046a22043602000c030b20064102742106024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20063a0000200141086a200441016a22043602000c020b200641027441017221060240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20063b0000200141086a200441026a22043602000c010b200641027441027221060240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a22043602000b200541016a21060240024002402000280238220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028023821050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a360200200620011097050c160b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a360200200620011097050c150b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a360200200620011097050c140b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a360200200620011097050c130b024020032802002004470d00200120044101108101200141086a28020021040b200541016a2106200041d0006a2108200128020020046a41013a0000200141086a200441016a22043602000240024002400240200028024c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028024c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c030b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c020b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c010b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000b2002200836020c2002410c6a2001109203200141046a2802002103200141086a2802002104024020062d00004103470d00024020032004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c130b024020032004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602002006200110ba040c120b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2208200441016a2206360200200541016a21040240200141046a28020020066b411f4b0d00200120064120108101200828020021060b200128020020066a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002008200641206a2204360200024002400240200028022c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028022c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c140b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c130b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c120b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000c110b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a200441016a2204360200024002400240200028020c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c130b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c120b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c110b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000c100b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a200441016a2204360200024002400240200028020c220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c120b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c110b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a3602000c100b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a3602000c0f0b024020032802002004470d00200120044101108101200141086a28020021040b200041c0006a2108200128020020046a41053a0000200141086a200441016a22043602000240024002400240200028022c220641c000490d00200641808001490d012006418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2206200441016a2204360200200028022c210a0240200141046a28020020046b41034b0d00200120044104108101200628020021040b200128020020046a200a3600002006200441046a3602000c030b20064102742106024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20063a0000200141086a200441016a3602000c020b200641027441017221060240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20063b0000200141086a200441026a3602000c010b200641027441027221060240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a3602000b2002200836020c2002410c6a200110920302400240024002402000280230220441c000490d00200441808001490d012004418080808004490d020240200141046a2208280200200141086a22062802002204470d00200120044101108101200628020021040b200128020020046a41033a00002006200441016a2204360200200028023021060240200828020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a22043602000c030b200441027421080240200141046a280200200141086a22062802002204470d00200120044101108101200628020021040b200128020020046a20083a00002006200441016a22043602000c020b200441027441017221080240200141046a280200200141086a220628020022046b41014b0d00200120044102108101200628020021040b200128020020046a20083b00002006200441026a22043602000c010b200441027441027221080240200141046a280200200141086a220628020022046b41034b0d00200120044104108101200628020021040b200128020020046a20083600002006200441046a22043602000b02400240024002402000280234220641c000490d00200641808001490d012006418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2206200441016a2204360200200028023421080240200141046a28020020046b41034b0d00200120044104108101200628020021040b200128020020046a20083600002006200441046a22043602000c030b20064102742106024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20063a0000200141086a200441016a22043602000c020b200641027441017221060240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20063b0000200141086a200441026a22043602000c010b200641027441027221060240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2006360000200141086a200441046a22043602000b200541016a21060240024002402000280238220541c000490d00200541808001490d012005418080808004490d02024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028023821050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a360200200620011097050c110b20054102742105024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a360200200620011097050c100b200541027441017221050240200328020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20053b0000200141086a200441026a360200200620011097050c0f0b200541027441027221050240200328020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2005360000200141086a200441046a360200200620011097050c0e0b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41063a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602002000280210200041186a280200200110d6010c0d0b024020032802002004470d00200120044101108101200141086a28020021040b200128020020046a41073a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c0c0b200041086a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a411c3a00002005200441016a220436020002400240024020032d0000417f6a0e030001020e0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2206200441016a2204360200200028022c21080240200528020020046b41034b0d00200120044104108101200628020021040b200128020020046a20083600002006200441046a2205360200200341016a21040240200141046a220628020020056b411f4b0d00200120054120108101200141086a28020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200541206a2204360200200041c0006a2903002107200029033821090240200628020020046b410f4b0d00200120044110108101200328020021040b200128020020046a22052007370008200520093700002003200441106a2204360200200028023021030240200141046a220528020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a2203200441046a2204360200200028023421060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0d0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0c0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0b0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a411d3a00002003200441016a22043602000240024002400240024002402000280208417f6a0e06000102030405100b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602002000280210200041186a280200200110d6012000411c6a280200200041246a280200200110d601200041286a2d000021050240200141046a28020020032802002204470d00200120044101108101200141086a28020021040b200128020020046a20053a0000200141086a200441016a3602000c0f0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0e0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0d0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c0c0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200041106a2105200128020020046a20063600002003200441046a22043602000240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002005200110e9040c0b0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a2203200441016a2204360200200028020c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a2204360200200028021021030240200141046a220528020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a2203200441046a2204360200200028021421060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a2204360200200028021821030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c0a0b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a411e3a00002003200441016a220436020002400240024002402000280208417f6a0e04000102030d0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a360200200028020c200110de030c0c0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a360200200028020c200110de032000290310210702402005280200200328020022046b41074b0d00200120044108108101200328020021040b200128020020046a20073700002003200441086a3602000c0b0b2000410c6a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a360200200320011082020c0a0b2000410c6a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a200441016a360200200320011082022000280230200110de030c090b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a411f3a00002003200441016a36020020011098050c080b200041086a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41283a00002005200441016a2204360200024002400240024020032d0000417f6a0e04000102030b0b20004180016a21032000410c6a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002005200110f7062003200110f8060c0a0b200041106a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602002003200110f9060c090b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a2204360200024020032d00014101460d000240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c090b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200341026a2103200128020020046a41013a0000200141086a2205200441016a22043602000240200628020020046b411f4b0d00200120044120108101200528020021040b200128020020046a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a2900003700002005200441206a3602000c080b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a220436020020032d00012103024020062802002004470d00200120044101108101200528020021040b200128020020046a20033a00002005200441016a3602000c070b200041086a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41293a00002005200441016a2204360200024002400240024020032d0000417f6a0e04000102030a0b20004180016a21032000410c6a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002005200110f7062003200110f8060c090b200041106a21030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602002003200110f9060c080b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a2204360200024020032d00014101460d000240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c080b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200341026a2103200128020020046a41013a0000200141086a2205200441016a22043602000240200628020020046b411f4b0d00200120044120108101200528020021040b200128020020046a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a2900003700002005200441206a3602000c070b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2205200441016a220436020020032d00012103024020062802002004470d00200120044101108101200528020021040b200128020020046a20033a00002005200441016a3602000c060b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a412a3a00002003200441016a2204360200024002402000280204417f6a0e020001070b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2208200441016a360200200028020821042001200041106a280200220310d2012003450d062003410574210620082802002103200141046a210a03400240200a28020020036b411f4b0d00200120034120108101200828020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002008200341206a2203360200200441206a2104200641606a22060d000c070b0b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2208200441016a360200200028020821042001200041106a280200220310d2012003450d052003410574210620082802002103200141046a210a03400240200a28020020036b411f4b0d00200120034120108101200828020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002008200341206a2203360200200441206a2104200641606a22060d000c060b0b200041086a210b0240200141046a2206280200200141086a220d2802002204470d00200120044101108101200d28020021040b200128020020046a41d0003a0000200d200441016a2204360200024002400240024002400240200b2d0000417f6a0e060001020304050a0b024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a220a200441016a360200200028022c21042001200041346a280200220310d20102402003450d0020034105742108200d280200210303400240200628020020036b411f4b0d00200120034120108101200a28020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200a200341206a2203360200200441206a2104200841606a22080d000b0b02400240200b2d00014101460d0002402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200441016a21040c010b02402006280200200d2802002203470d00200120034101108101200141086a28020021030b200b41026a2104200128020020036a41013a0000200141086a2205200341016a22033602000240200141046a28020020036b411f4b0d00200120034120108101200528020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200341206a21040b200d2004360200200028023821030240200628020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c090b024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a360200200028020c200110de030240024002402000280210220441c000490d00200441808001490d012004418080808004490d0202402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028021021050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c0b0b2004410274210302402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c0a0b2004410274410172210302402006280200200d28020022046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c090b2004410274410272210302402006280200200d28020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c080b024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a22043602000240024002400240200028020c220341c000490d00200341808001490d012003418080808004490d02024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028020c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c030b20034102742103024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c020b200341027441017221030240200628020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c010b200341027441027221030240200628020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000b2000280210200110de030240024002402000280214220441c000490d00200441808001490d012004418080808004490d0202402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028021421050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c0a0b2004410274210302402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c090b2004410274410172210302402006280200200d28020022046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c080b2004410274410272210302402006280200200d28020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c070b200b41016a2103024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a200441016a3602002003200110ff020240024002400240200028022c220441c000490d00200441808001490d012004418080808004490d0202402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028022c21050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a22043602000c030b2004410274210302402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a22043602000c020b2004410274410172210302402006280200200d28020022046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a22043602000c010b2004410274410272210302402006280200200d28020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a22043602000b200b2d00212103024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c060b200b41016a2103024020062802002004470d00200120044101108101200141086a28020021040b200041386a2105200128020020046a41043a0000200141086a200441016a3602002003200110ff020240024002400240200028022c220441c000490d00200441808001490d012004418080808004490d0202402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028022c21080240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20083600002003200441046a3602000c030b2004410274210302402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c020b2004410274410172210302402006280200200d28020022046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c010b2004410274410272210302402006280200200d28020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000b200520011091030240024002402000280230220441c000490d00200441808001490d012004418080808004490d0202402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028023021050240200141046a28020020046b41034b0d00200120044104108101200328020021040b200128020020046a20053600002003200441046a3602000c080b2004410274210302402006280200200d2802002204470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c070b2004410274410172210302402006280200200d28020022046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c060b2004410274410272210302402006280200200d28020022046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c050b200b41016a2103024020062802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a200441016a3602002003200110ff020c040b200041046a21030240200141046a280200200141086a22052802002204470d00200120044101108101200528020021040b200128020020046a41d1003a00002005200441016a2204360200024002400240024002400240024020032d0000417f6a0e07000102030405060a0b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a3602000c090b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a3602000c080b0240200141046a22062802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2208200441016a2205360200200341016a21040240200628020020056b411f4b0d00200120054120108101200828020021050b200341216a2103200128020020056a22062004290000370000200641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a2900003700002008200541206a22043602000240200141046a28020020046b411f4b0d00200120044120108101200141086a28020021040b200128020020046a22052003290000370000200541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a290000370000200141086a200441206a3602000c070b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2208200441016a360200200028020821042001200041106a280200220310d2012003450d062003410574210620082802002103200141046a210a03400240200a28020020036b411f4b0d00200120034120108101200828020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002008200341206a2203360200200441206a2104200641606a22060d000c070b0b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41043a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a3602000c050b0240200141046a22082802002004470d00200120044101108101200141086a28020021040b200128020020046a41053a0000200141086a2206200441016a2205360200200341016a21040240200828020020056b411f4b0d00200120054120108101200628020021050b200128020020056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002006200541206a3602000c040b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41063a0000200141086a200441016a3602000c030b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41da003a00002003200441016a220436020002400240024020002f0104417f6a0e03000102050b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a360200200028020821042001200041106a280200220310d201200341c0076c2203450d0403402004200110de03200441c0076a2104200341c0786a22030d000c050b0b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2203200441016a220436020020002f010621060240200528020020046b41014b0d00200120044102108101200328020021040b200128020020046a20063b00002003200441026a3602002000280208200110de030c030b0240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a200441016a360200200028020821042001200041106a280200220310d201200341c0076c2203450d0203402004200110de03200441c0076a2104200341c0786a22030d000c030b0b200041046a21040240200141046a280200200141086a22052802002203470d00200120034101108101200528020021030b200128020020036a41db003a00002005200341016a2203360200024002400240024002400240024002400240024020042d0000417f6a0e0a000102030405060708090b0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2208200341016a2205360200200441016a21030240200628020020056b411f4b0d00200120054120108101200828020021050b200128020020056a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002008200541206a2203360200200141046a28020021050240024020042d00214102470d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a2203360200200141046a2802002105024020042d00214101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000b2000280228200110de030c0a0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2208200341016a2205360200200441016a21030240200628020020056b411f4b0d00200120054120108101200828020021050b200128020020056a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002008200541206a2203360200200141046a28020021050240024020042d00214101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a00000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a00000b200141086a2205200341016a2204360200200028022821030240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20033600002005200441046a3602000c090b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2208200341016a2205360200200441016a21030240200628020020056b411f4b0d00200120054120108101200828020021050b200128020020056a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002008200541206a2203360200200141046a28020021050240024020042d00214101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a00000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a00000b200141086a2205200341016a2204360200200028022821030240200141046a28020020046b41034b0d00200120044104108101200528020021040b200128020020046a20033600002005200441046a3602000c080b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a3602000c070b0240200141046a22052802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a200341016a2203360200200528020021050240024020042d00014101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a00000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a00000b200141086a2205200341016a2203360200200028020821060240200141046a220828020020036b41034b0d00200120034104108101200528020021030b200128020020036a20063600002005200341046a220336020020042f010221040240200828020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a3602000c060b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a2208200341016a2205360200200441016a21030240200628020020056b411f4b0d00200120054120108101200828020021050b200128020020056a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002008200541206a2203360200200141046a28020021050240024020042d00214101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a00000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a00000b200141086a2205200341016a220336020020042f012221040240200141046a28020020036b41014b0d00200120034102108101200528020021030b200128020020036a20043b00002005200341026a220436020002400240024002402000280228220341c000490d00200341808001490d012003418080808004490d020240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028022821060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a22043602000c030b200341027421030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a22043602000c020b200341027441017221030240200141046a28020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a22043602000c010b200341027441027221030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a22043602000b024002400240200028022c220341c000490d00200341808001490d012003418080808004490d020240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a2204360200200028022c21060240200528020020046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a3602000c080b200341027421030240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a20033a0000200141086a200441016a3602000c070b200341027441017221030240200141046a28020020046b41014b0d00200120044102108101200141086a28020021040b200128020020046a20033b0000200141086a200441026a3602000c060b200341027441027221030240200141046a28020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000c050b0240200141046a22052802002003470d00200120034101108101200141086a28020021030b200441216a2108200128020020036a41063a0000200141086a2206200341016a2203360200200441016a21040240200528020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002006200341206a3602002008200110ff020c040b0240200141046a22052802002003470d00200120034101108101200141086a28020021030b200441216a2108200128020020036a41073a0000200141086a2206200341016a2203360200200441016a21040240200528020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002006200341206a3602002008200110ff020c030b0240200141046a22052802002003470d00200120034101108101200141086a28020021030b200441216a2108200128020020036a41083a0000200141086a2206200341016a2203360200200441016a21040240200528020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a2900003700002006200341206a3602002008200110ff020c020b0240200141046a22052802002003470d00200120034101108101200141086a28020021030b200128020020036a41093a0000200141086a220a200341016a2206360200200441016a21030240200528020020066b411f4b0d00200120064120108101200a28020021060b200441216a2105200128020020066a22082003290000370000200841186a200341186a290000370000200841106a200341106a290000370000200841086a200341086a290000370000200a200641206a22033602000240200141046a220828020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22062005290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000200141086a200341206a2203360200200828020021050240024020042d00414102470d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a2203360200200141046a2802002105024020042d00414101460d00024020052003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000c010b024020052003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000b2000280248200110de030c010b0240200141046a280200200141086a22032802002204470d00200120044101108101200328020021040b200128020020046a41e3003a00002003200441016a220436020002400240024002402000280208417f6a0e0400010203040b200041d8036a2103200041106a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602002005200110e0042003200110e9040c030b200041e0036a2103200041186a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a2206200441016a3602002005200110e0042003200110e004200028020c21042001200041146a280200220310d2010240200341f8036c2203450d0003402004200110e604200441f8036a2104200341887c6a22030d000b0b20002903a80721070240200141046a280200200628020022046b41074b0d00200120044108108101200141086a28020021040b200128020020046a2007370000200141086a200441086a3602000c020b200041e0036a2103200041186a21050240200141046a2802002004470d00200120044101108101200141086a28020021040b200128020020046a41023a0000200141086a2206200441016a3602002005200110e0042003200110e004200028020c21042001200041146a280200220310d2010240200341f8036c2203450d0003402004200110e604200441f8036a2104200341887c6a22030d000b0b20002903a80721070240200141046a280200200628020022046b41074b0d00200120044108108101200141086a28020021040b200128020020046a2007370000200141086a200441086a3602000c010b0240200141046a22052802002004470d00200120044101108101200141086a28020021040b200128020020046a41033a0000200141086a2203200441016a360200200028020c200110e5042000290310210702402005280200200328020022046b41074b0d00200120044108108101200328020021040b200128020020046a20073700002003200441086a3602000b200241106a24000f0b1030000bea0102047f027e230041106b22032400024002402002280208220441c4006c41146a2205417f4c0d000240024020050d00410121060c010b200510382206450d02200228020821040b200341003602082003200536020420032006360200200228020020042003109602200241186a290300210720022903102108024020032802042204200328020822026b410f4b0d0020032002411010810120032802042104200328020821020b2003280200220520026a2206200737000820062008370000200020012005200241106a10a30202402004450d00200510390b200341106a24000f0b1034000b1030000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42c4007e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141c4006c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141c4006e360200200241206a24000f0b1034000bd50103037f027e017f230041106b2203240002400240200228020841286c41146a2204417f4c0d00200410382205450d01200341003602082003200436020420032005360200200228020020022802082003108402200241186a290300210620022903102107024020032802042205200328020822026b410f4b0d0020032002411010810120032802042105200328020821020b2003280200220420026a2208200637000820082007370000200020012004200241106a10a30202402005450d00200410390b200341106a24000f0b1034000b1030000b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010e203200228020010390f0b2000410c6a220228020010e203200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010e203200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010e203200228020010390f0b200041106a220228020010e203200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010e203200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010e203200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a2202280200109f07200228020010390f0b200041286a220228020010e203200228020010390f0b0bc0d70609017f017e037f027e187f037e087f0f7e027f230041b0c2006b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e2502232221201901181716011501011401131201011101100f0e0d0c0b010a09080706050400020b200141106a29030021042001410c6a2802002105200141086a2802002106200341a8026a200141186a220741900710c30a1a200141a8076a290300210802400240024002402006417f6a0e0400010203000b200320043703a00b200341a00b6a41086a200741c00310c30a1a200341e80e6a200341a8026a41c0036a41d00310c30a1a200341e80e6a41d0036a2008370300200341c0126a200141b0076a290300370300200341c8126a200141b8076a290300370300200341e02f6a41286a200241286a280200360200200341e02f6a41206a200241206a290200370300200341e02f6a41186a200241186a290200370300200341e02f6a41106a200241106a290200370300200341e02f6a41086a200241086a290200370300200320022902003703e02f200341b8246a200341e02f6a10a00720032903b8242104200341a8376a200341b8246a41086a41c00310c30a1a20044209510d05200341d0126a41086a200341a8376a41c00310c30a1a200320043703d01220034198166a200341d0126a10ab03200341e0196a200341a00b6a10ab03200341e02f6a200341e80e6a10a303024002402003290398162204500d0041e80310382202450d1e2002200341e02f6a41e80310c30a1a200341a81d6a20034198166a41c80310c30a1a410a21010c010b2003418a0a6a20032d00e32f3a0000200320032f00e12f3b01880a20032d00e02f210120032802e42f2102200341a81d6a200341e02f6a41086a41c80310c30a1a200341e80a6a200341c0336a290300370300200341d80a6a41086a200341b8336a2903003703002003200341b0336a2903003703d80a0b200341f0206a200341e0196a41c80310c30a1a200320013a00b824200320032f01880a3b00b92420032003418a0a6a2d00003a00bb24200320023602bc24200341b8246a41086a200341a81d6a41c80310c30a1a20034198286a200341e80a6a29030037030020034190286a200341d80a6a41086a29030037030020034188286a20032903d80a370300200341a8376a200341f0206a200341b8246a10a107024020044200520d0020034198166a10af010b024020032802a837411b460d00200341b8246a200341a8376a41b80710c30a1a0240024020032802b824410b470d00200341c0246a10af0120034188286a10d20341cb9ec1002101410021020c010b41c09ec1002101410121020b200341d0126a10af012001ad21044280808080b0012108410321010c340b200341c8246a200341d0126a41c80310c30a1a20034190286a200341a00b6a41c80310c30a1a200341d82b6a200341e80e6a41e80310c30a1a200341c0246a4201370300200341143a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800a80a3600192000411c6a200341ab0a6a280000360000200042003703000c340b200341e0196a200741c80310c30a1a200341a81d6a200341a8026a41c8036a41c80310c30a1a200341e02f6a41286a200241286a280200360200200341e02f6a41206a200241206a290200370300200341e02f6a41186a200241186a290200370300200341e02f6a41106a200241106a290200370300200341e02f6a41086a200241086a290200370300200320022902003703e02f200341b8246a200341e02f6a10a00720032903b8242109200341a8376a200341b8246a41086a41c00310c30a1a02400240024020094209510d0020034198166a200341a8376a41c00310c30a1a200320093703f020200341f8206a20034198166a41c00310c30a1a41980410382201450d1e41f80310382206450d1e20064101360200200341e02f6a200341e0196a41c80310c30a1a41b00810382202450d1e41f80310382207450d1e20074101360200200241a8046a200341a81d6a41c80310c30a1a20024281808080103700a0042002200736009c04200241013a009804200220083703900420024200370388042002410136021020024200370108200241002802fcad49360104200241073b0100200142828080802037021420012002360210200341bc246a200341e02f6a41c80310c30a1a200142818080801037000820012006360004200141053a00002001411c6a200341b8246a41cc0310c30a1a200341bc376a428180808010370200200341b8376a2001360200200341b0376a2004370300200320053602ac37200341003a00a837200341f8016a200341a8376a109707024020032802f8010d002003290380022104200341e8016a200341a8376a10980720032903e801a70d00200420032903f0017c220820045a0d030b200341a8376a10d303200341f0206a10af0141d69ec100ad21044280808080a0022108410321020c010b02402004422088a72202450d00200241f8036c2101200521020340200210ac01200241f8036a2102200141887c6a22010d000b0b02402004a72202450d00200241f8036c450d00200510390b200341a81d6a10af01200341e0196a10af014200210441022102420021080b200041246a2008200484370200200041e3063b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c340b200341e80e6a200341f0206a41c80310c30a1a200341b8246a200341a8376a41e00710c30a1a200341e02f6a200341e80e6a200341b8246a20082008108004200341c8246a200341e02f6a41c80710c30a1a200341c0246a4200370300200341143a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800d0123600192000411c6a200341d3126a280000360000200042003703000c330b200341e0196a200741c80310c30a1a200341a81d6a200341a8026a41c8036a41c80310c30a1a200341e02f6a41286a200241286a280200360200200341e02f6a41206a200241206a290200370300200341e02f6a41186a200241186a290200370300200341e02f6a41106a200241106a290200370300200341e02f6a41086a200241086a290200370300200320022902003703e02f200341b8246a200341e02f6a10a00720032903b8242109200341a8376a200341b8246a41086a41c00310c30a1a02400240024020094209510d0020034198166a200341a8376a41c00310c30a1a200320093703f020200341f8206a20034198166a41c00310c30a1a200341b8246a200341e0196a41c80310c30a1a41b00810382202450d1d41f80310382201450d1d20014101360200200241a8046a200341a81d6a41c80310c30a1a20024200370108200241002802fcad49360104200241073b01002002410136021020024281808080103700a0042002200136009c04200241013a00980420022008370390042002420037038804200341b0376a2004370300200341b8376a2002360200200341bc376a428280808020370200200320053602ac37200341c8376a200341b8246a41c80310c30a1a200341053a00a83720034198026a200341a8376a10970702402003280298020d0020032903a002210420034188026a200341a8376a109807200329038802a70d0020042003290390027c220820045a0d030b200341a8376a10d303200341f0206a10af0141d69ec100ad21044280808080a0022108410321020c010b02402004422088a72202450d00200241f8036c2101200521020340200210ac01200241f8036a2102200141887c6a22010d000b0b02402004a72202450d00200241f8036c450d00200510390b200341a81d6a10af01200341e0196a10af014200210441022102420021080b200041246a2008200484370200200041e3063b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c330b200341e80e6a200341f0206a41c80310c30a1a200341b8246a200341a8376a41e00710c30a1a200341e02f6a200341e80e6a200341b8246a20082008108004200341c8246a200341e02f6a41c80710c30a1a200341c0246a4200370300200341143a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c320b200341e02f6a41286a200241286a280200360200200341e02f6a41206a200241206a290200370300200341e02f6a41186a200241186a290200370300200341e02f6a41106a200241106a290200370300200341e02f6a41086a200241086a290200370300200320022902003703e02f200341b8246a200341e02f6a10a00720032903b8242108200341a8376a200341b8246a41086a41c00310c30a1a02400240024020084209510d0020034198166a200341a8376a41c00310c30a1a200341b8246a41086a20034198166a41c00310c30a1a200341b8246a41c8036a200541e00710c30a2102200320083703b824024002402008a70e020400010b024020032d00c024417e6a0e080001010101010104010b20032d0080280d002003418c286a2802004101470d0020034184286a2802002201280200410a470d00200141086a29030050450d0020034198286a2802004102470d0020032802902822012d00004107470d0020012d0098044105470d00200141b8046a2903004201520d00200141c0046a2d00004101470d00200141a4046a2802004101470d002001419c046a2802002802004101470d00200141b0046a2802004102470d0020012802a80422012d00004107470d0020012d0098044101470d00200141a8046a2903004201520d00200141b0046a2d00004102470d00200141a4046a2802004101470d002001419c046a2802002802004101460d030b200341b8246a10af01200210d30341b89ec100ad2104410321024280808080800121080c010b200510d3034102210242002104420021080b20051039200041246a2008200484370200200041e3043b0021200041206a20023a0000200041186a41003a000020004200370308200042013703000c320b200341e80e6a200341b8246a41c80310c30a1a200341a8376a200241e00710c30a1a200341e02f6a200341e80e6a200341a8376a20044200108004200341b8376a200341e02f6a41c80710c30a1a200341a8376a41086a4200370300200341143a00a837200341a8376a10fc0120051039200041186a41003a000020004200370308200042003703000c310b000b200241226a21052002411a6a2901002108200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a4102211b200241026a2f0100211c2001410c6a2802002107200141106a2903002204a7211d2004422088a7211e2002280228210620022d0001211f20022d0000210202400240024002400240200141086a280200417f6a0e0a000102032b2a29282726000b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e0240240200341b8246a10a207450d0020004200370308200041206a41023a0000200041186a41003a0000200042013703000c340b20004200370308200041186a41003a0000200042003703000c330b20062006280200417f6a220136020002400240200241ff01710d00024020010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b201f41ff01714101470d010240201d450d00200710390b20004200370308200020032800b824360019200041186a41003a00002000411c6a200341bb246a280000360000200042003703000c340b20010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b0240201d450d00200710390b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c320b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e024200341b8246a10a2070d01410810382202450d192002200437000041e9b4c900410a2002410810a30220021039200041186a41003a000020004200370308200042003703000c310b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e0240240200341b8246a10a207450d000c2f0b200341e02f6a2007201e10a30720032802e02f2202450d2c20032802e42f21012003200341e82f6a2802003602ac02200320023602a802200341106a200341a8026a10ad0120032802100d2b20032802ac02220620032802142205490d2b2005417f4c0d190240024020050d004101210a0c010b20051038220a450d19200a4100200510c50a1a0b200a20032802a802220b200510c30a210a2003200620056b3602ac022003200b20056a3602a802200341086a200341a8026a10ad0120032802080d2a20032802ac02220b200328020c2206490d2a2006417f4c0d190240024020060d004101210c0c010b20061038220c450d19200c4100200610c50a1a0b200c20032802a802220d200610c30a210c200b20066b220b4104490d29200b417c71220e4104460d29200e4108460d29200d20066a220d28000421142003200b41746a3602ac022003200d410c6a3602a8022003200341a8026a10ad0120032802000d292003280204220e20032802ac02220b410c6e220d200d200e4b1bad420c7e2204422088a70d192004a7220d417f4c0d1902400240200d0d00410421110c010b200d10382211450d190b200341003602b037200320113602a8372003200d410c6e3602ac370240200e450d00200341b8246a41086a2115200341c1246a2116200341c2246a2117200341c3246a21184100210f0340200341003a00e019200b450d2a20032802a802220d2d000021102003200d41016a3602a802200320103a00bc24200341003a00e019200b4101460d2a20032802a802220d2d000021102003200d41016a3602a802200320103a00bd24200341003a00e019200b4102460d2a20032802a802220d2d000021102003200d41016a3602a802200320103a00be24200341003a00e019200b4103460d2a20032802a802220d2d000021102003200d41016a3602a802200320103a00bf24200341003a00e019200b4104460d2a201520032802a802220d2d00003a00002003200d41016a3602a802200341003a00e019200b4105460d2a201620032802a802220d2d00003a00002003200d41016a3602a802200341003a00e019200b4106460d2a201720032802a802220d2d00003a00002003200d41016a3602a802200341003a00e019200b4107460d2a201820032802a802220d2d00003a00002003200d41016a3602a802200b417c714108460d2a20032902bc242204a72110200d28000121122003200b41746a220b3602ac022003200d41056a3602a8022004422088a721130240200f20032802ac37470d00200341a8376a200f10b70320032802a837211120032802b037210f0b2011200f410c6c6a220d2012360208200d2013360204200d2010360200200320032802b03741016a220f3602b037200e417f6a220e0d000b20032802a83721110b2011450d2920032902ac37a7210b024020032802ac0241034b0d00200b450d2a200b410c6c450d2a201110390c2a0b02402001450d00200210390b02400240024020054106470d000240200a41e8a6c400410610c60a450d004100210241a2c1c90021014280808080f00121040c020b0240201441abc6004f0d00410121024188c1c90021014280808080a00321040c020b200a103902402006450d00200c10390b0240200b450d00200b410c6c450d00201110390b41c0a5c00041052007201e10a3020240201d450d00200710390b200341c0246a41023a0000200341003a00b824200341b8246a10fc01200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200042003703000c330b4100210241a2c1c90021014280808080f00121042005450d010b200a10390b02402006450d00200c10390b200b450d2d200b410c6c450d2d201110390c2d0b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c2f0b4200210441022101420021080c2d0b200341b8246a200141046a41c80010c30a1a200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8372000200341b8246a200341a8376a10d7030c2d0b200341a8376a41086a2001410c6a290200370300200320012902043703a837200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8242000200341a8376a200341b8246a10a4070c2c0b200241226a2106200141146a2105200141056a21072002411a6a2901002104200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002118200241086a2d00002119200241066a2f0100211a200241056a2d0000211c200241046a2d0000211f41022120200241026a2f0100211e200141106a280000210b2001410c6a280000211b200141086a280000210a2002280228211d20022d0001212120022d00002102024002400240024002400240024002400240024020012d0004417f6a0e0700010203040506000b200341bf376a200541086a290000370000200341c7376a200541106a2d00003a00002003200b3600b3372003201b3600af372003200a3600ab37410221012003200741026a2d00003a00aa37200320072f00003b01a837200320052900003700b737200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e0240240200341b8246a10a5070d00200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c0040240024020032802b82422070d00200342003702e42f4100210a2003410028029cde4a22073602e02f4100211d0c010b20032902bc242104200320073602e02f200320043702e42f2004422088a7211d2004a7210a0b024002400240201d0d00410021020c010b201d210541002102201d210103402007200541017620026a22054105746a200341a8376a412010c60a2206450d0220012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000b0b200341b8246a41186a200341a8376a41186a290300370300200341b8246a41106a200341a8376a41106a290300370300200341b8246a41086a200341a8376a41086a290300370300200320032903a8373703b824201d2002490d080240201d200a470d00200341e02f6a200a410110f50220032802e02f21070b200720024105746a220141206a2001201d20026b41057410c40a1a200120032903b824370000200141186a200341b8246a41186a2205290300370000200141106a200341b8246a41106a2206290300370000200141086a200341b8246a41086a22012903003700002003201d41016a22023602e82f0240200241e500490d0041002802a8fe4a450d00200341b4026a4102360200200320023602a81d200341023602ac02200341e4003602e80e2003200341e80e6a3602b0022003200341a81d6a3602a80241002802a4fe4a210241002802a0fe4a210741002802acfe4a211d200341c8246a4203370300200341ec246a41b19fc800ad4280808080900c84370200200341e0246a41a09fc800ad4280808080900284370300200341d8246a4202370300200341c0246a4113360200200341d4246a200341a8026a360200200341a8a4c8003602c42420034281808080b0243702f424200341003602e824200341d6a4c8003602bc24200341013602b824200741f4ddca00201d410246221d1b200341b8246a200241b0a7c000201d1b28021011030020032802e82f21020b200341a8026a41186a22074200370300200341a8026a41106a221d4200370300200341a8026a41086a220a4200370300200342003703a802200341e80e6a41c0a4c800410a10f201200a200341e80e6a41086a220b290000370300200320032900e80e3703a802200341e80e6a41caa4c800410710f2012007200b290000370300201d20032900e80e370300200341a8026a200341e02f6a10cb042005200341a8376a41186a2903003703002006200341a8376a41106a2903003703002001200341a8376a41086a290300370300200320032903a8373703b82441f4ddca00410020032802e02f2201200210a607200341113b01b824200341b8246a10fc01024020032802e42f41ffffff3f71450d00200110390b200041186a41003a000020004200370308200020032800f0203600192000411c6a200341f3206a280000360000200042003703000c360b0240200a41ffffff3f71450d00200710390b410321010b200041d1003b002120004200370308200041206a20013a0000200041186a41003a0000200041246a41a4bdc800ad4280808080d00184370200200042013703000c340b200341f7196a200541086a290000370000200341ff196a200541106a2d00003a00002003200b3600eb192003201b3600e7192003200a3600e319410221012003200741026a2d00003a00e219200320072f00003b01e019200320052900003700ef19200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e02402400240200341b8246a10a5070d00200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c0040240024020032802b82422070d002003420037029c164100210a2003410028029cde4a2207360298164100211d0c010b20032902bc24210420032007360298162003200437029c162004a741ffffff3f71210a2004422088a7211d0b0240201d450d00201d210141002102201d210503402007200141017620026a22014105746a200341e0196a412010c60a2206450d0320052001200641004822061b2205200141016a200220061b22026b2101200520024b0d000b0b0240200a450d00200710390b410321010b200041d1023b002120004200370308200041206a20013a0000200041186a41003a0000200041246a419bbdc800ad4280808080900184370200200042013703000c340b200720014105746a2202200241206a201d2001417f736a41057410c40a1a2003201d417f6a22053602a0160240200541e500490d0041002802a8fe4a450d00200341b4026a4102360200200320053602e02f200341023602ac02200341e4003602a8372003200341a8376a3602b0022003200341e02f6a3602a80241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8246a4203370300200341ec246a41b19fc800ad4280808080900c84370200200341e0246a41a09fc800ad4280808080900284370300200341d8246a4202370300200341c0246a4113360200200341d4246a200341a8026a360200200341a8a4c8003602c42420034281808080b0243702f424200341003602e824200341d6a4c8003602bc24200341013602b824200141f4ddca00200541024622051b200341b8246a200241b0a7c00020051b280210110300200328029816210720032802a01621050b200341e02f6a41186a22014200370300200341e02f6a41106a22064200370300200341e02f6a41086a221d4200370300200342003703e02f200341b8246a41c0a4c800410a10f201201d200341b8246a41086a2202290000370300200320032900b8243703e02f200341b8246a41caa4c800410710f20120012002290000370300200620032900b824370300200341e02f6a20034198166a10cb04200341b8246a41186a200341e0196a41186a290300370300200341b8246a41106a200341e0196a41106a2903003703002002200341e0196a41086a290300370300200320032903e0193703b824200341b8246a41012007200510a607200341e80e6a41186a22014200370300200341e80e6a41106a22064200370300200341e80e6a41086a221d4200370300200342003703e80e200341a8376a41c0a4c800410a10f201201d200341a8376a41086a2202290000370300200320032900a8373703e80e200341a8376a41d1a4c800410510f20120012002290000370300200620032900a837370300200341b8246a200341e80e6a412010cc02024020032d00b8244101470d00200341f0206a41186a200341d1246a2900002204370300200341f0206a41106a200341c9246a2900002208370300200341f0206a41086a200341c1246a2900002209370300200320032900b92422223703f020200341a8376a41186a2004370300200341a8376a41106a200837030020022009370300200320223703a837024002402005450d00410021022005210103402007200541017620026a22054105746a200341a8376a412010c60a2206450d0220012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000b0b200341c0026a22024200370300200341b8026a22014200370300200341a8026a41086a22054200370300200342003703a802200341e80e6a41c0a4c800410a10f2012005200341e80e6a41086a2206290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120022006290000370300200120032900e80e370300200341a8026a412010fd010c010b200341b8246a41186a200341f0206a41186a290300370300200341b8246a41106a200341f0206a41106a290300370300200341b8246a41086a200341f0206a41086a290300370300200320032903f0203703b824200341b8096a41186a22024200370300200341b8096a41106a22014200370300200341b8096a41086a22054200370300200342003703b809200341a8026a41c8e8c600410a10f2012005200341a8026a41086a2206290000370300200320032900a8023703b809200341a8026a41d1a4c800410510f20120022006290000370300200120032900a802370300200341b8096a200341b8246a10a7070b20034191023b01b824200341b8246a10fc010240200328029c1641ffffff3f71450d00200710390b200041186a41003a000020004200370308200020032800d0123600192000411c6a200341d3126a280000360000200042003703000c330b200341e7126a200541086a290000370000200341ef126a200541106a2d00003a00002003200b3600db122003201b3600d7122003200a3600d3124102210a2003200741026a2d00003a00d212200320072f00003b01d012200320052900003700df1220034198166a41186a2001413d6a29000037030020034198166a41106a200141356a29000037030020034198166a41086a2001412d6a2900003703002003200129002537039816200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e02442002104420021080240200341b8246a10a5070d00024002400240200341d0126a20034198166a412010c60a450d00200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c0040240024020032802b82422070d00200342003702ac0a4100210b2003410028029cde4a22073602a80a4100210a0c010b20032902bc242104200320073602a80a200320043702ac0a2004a741ffffff3f71210b2004422088a7210a0b419bbdc800ad21084280808080900121040240200a0d004101211d0c030b200a210541002102200a2101024003402007200541017620026a22054105746a200341d0126a412010c60a2206450d014101211d20012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000c040b0b200a210641002102200a210103402007200641017620026a22064105746a20034198166a412010c60a221d450d0220012006201d410048221d1b2201200641016a2002201d1b22026b2106200120024b0d000b200341e0196a41186a20034198166a41186a2903002204370300200341e0196a41106a20034198166a41106a2903002208370300200341e0196a41086a20034198166a41086a2903002209370300200320032903981622223703e019200720054105746a22022022370000200241086a2009370000200241106a2008370000200241186a20043700002007200a10a8070240200a41e500490d0041002802a8fe4a450d00200341b4026a41023602002003200a3602e02f200341023602ac02200341e4003602a8372003200341a8376a3602b0022003200341e02f6a3602a80241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8246a4203370300200341ec246a41b19fc800ad4280808080900c84370200200341e0246a41a09fc800ad4280808080900284370300200341d8246a4202370300200341c0246a4113360200200341d4246a200341a8026a360200200341a8a4c8003602c42420034281808080b0243702f424200341003602e824200341d6a4c8003602bc24200341013602b824200141f4ddca00200541024622051b200341b8246a200241b0a7c00020051b28021011030020032802a80a210720032802b00a210a0b200341e80e6a41186a22014200370300200341e80e6a41106a22054200370300200341e80e6a41086a22024200370300200342003703e80e200341a8376a41c0a4c800410a10f2012002200341a8376a41086a2206290000370300200320032900a8373703e80e200341a8376a41caa4c800410710f20120012006290000370300200520032900a837370300200341e80e6a200341a80a6a10cb04200341b8246a41186a200341d0126a41186a290300370300200341b8246a41106a200341d0126a41106a290300370300200341b8246a41086a200341d0126a41086a290300370300200320032903d0123703b824200341b8246a41012007200a10a607200341a8026a41186a22014200370300200341a8026a41106a22054200370300200341a8026a41086a22064200370300200342003703a802200341e80e6a41c0a4c800410a10f20120062002290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120012002290000370300200520032900e80e370300200341b8246a200341a8026a412010cc02024020032d00b8244101470d00200341e02f6a41186a200341d1246a2900002204370300200341e02f6a41106a200341c9246a2900002208370300200341e02f6a41086a200341c1246a2900002209370300200320032900b92422223703e02f200341a8376a41186a2004370300200341a8376a41106a2008370300200341a8376a41086a2009370300200320223703a83702400240200a450d0041002102200a210103402007200a41017620026a22054105746a200341a8376a412010c60a2206450d0220012005200641004822061b2201200541016a200220061b22026b210a200120024b0d000b0b200341f0206a41186a22024200370300200341f0206a41106a22014200370300200341f0206a41086a22054200370300200342003703f020200341b8246a41c0a4c800410a10f2012005200341b8246a41086a2206290000370300200320032900b8243703f020200341b8246a41d1a4c800410510f20120022006290000370300200120032900b824370300200341f0206a412010fd010c010b200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41086a200341e02f6a41086a290300370300200320032903e02f3703b824200341b8096a41186a22024200370300200341b8096a41106a22014200370300200341b8096a41086a22054200370300200342003703b809200341a8026a41c8e8c600410a10f2012005200341a8026a41086a2206290000370300200320032900a8023703b809200341a8026a41d1a4c800410510f20120022006290000370300200120032900a802370300200341b8096a200341b8246a10a7070b20034191043b01b824200341b8246a10fc0120032802ac0a41ffffff3f71450d00200710390b200041186a41003a000020004200370308200020032800880a3600192000411c6a2003418b0a6a280000360000200042003703000c350b41a4bdc800ad21084100211d4280808080d00121040b0240200b450d00200710390b4103210a0b2000201d3a0022200041d1003a0021200041206a200a3a0000200041186a41003a000020004200370308200041246a20044280808080f00183200842ffffffff0f8384370200200042013703000c320b200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e0240240200341b8246a10a507450d000240201b41ffffff3f71450d00200a10390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c320b200a200b10a807200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c004200a200b20032802b8242202410028029cde4a20021b220720032902bc24420020021b2204422088a710a907200341e80e6a41186a22014200370300200341e80e6a41106a22054200370300200341e80e6a41086a22064200370300200342003703e80e200341a8376a41c0a4c800410a10f2012006200341a8376a41086a2202290000370300200320032900a8373703e80e200341a8376a41d1a4c800410510f20120012002290000370300200520032900a837370300200341b8246a200341e80e6a412010cc02024020032d00b8244101470d00200341f0206a41186a200341d1246a2900002208370300200341f0206a41106a200341c9246a2900002209370300200341f0206a41086a200341c1246a2900002222370300200320032900b92422233703f020200341a8376a41186a2008370300200341a8376a41106a200937030020022022370300200320233703a83702400240200b450d00200b210541002102200b21010340200a200541017620026a22054105746a200341a8376a412010c60a2206450d0220012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000b0b200341c0026a22024200370300200341b8026a22014200370300200341a8026a41086a22054200370300200342003703a802200341e80e6a41c0a4c800410a10f2012005200341e80e6a41086a2206290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120022006290000370300200120032900e80e370300200341a8026a412010fd010c010b200341b8246a41186a200341f0206a41186a290300370300200341b8246a41106a200341f0206a41106a290300370300200341b8246a41086a200341f0206a41086a290300370300200320032903f0203703b824200341b8096a41186a22024200370300200341b8096a41106a22014200370300200341b8096a41086a22054200370300200342003703b809200341a8026a41c8e8c600410a10f2012005200341a8026a41086a2206290000370300200320032900a8023703b809200341a8026a41d1a4c800410510f20120022006290000370300200120032900a802370300200341b8096a200341b8246a10a7070b0240200b41e500490d0041002802a8fe4a450d00200341b4026a41023602002003200b3602e80e200341023602ac02200341e4003602a8372003200341a8376a3602b0022003200341e80e6a3602a80241002802a4fe4a210241002802a0fe4a210141002802acfe4a2105200341c8246a4203370300200341ec246a41b19fc800ad4280808080900c84370200200341e0246a41a09fc800ad4280808080900284370300200341d8246a4202370300200341c0246a4113360200200341d4246a200341a8026a360200200341a8a4c8003602c42420034281808080b0243702f424200341003602e824200341d6a4c8003602bc24200341013602b824200141f4ddca00200541024622051b200341b8246a200241b0a7c00020051b2802101103000b200bad422086201bad8421080240200442ffffff3f83500d00200710390b200320083702bc242003200a3602b824200341a8026a41186a22024200370300200341b8026a22014200370300200341a8026a41086a22054200370300200342003703a802200341e80e6a41c0a4c800410a10f2012005200341e80e6a41086a2206290000370300200320032900e80e3703a802200341e80e6a41caa4c800410710f20120022006290000370300200120032900e80e370300200341a8026a200341b8246a10cb040240201b41ffffff3f71450d00200a10390b20034191063b01b824200341b8246a10fc01200041186a41003a000020004200370308200020032800e02f3600192000411c6a200341e32f6a280000360000200042003703000c310b200341f7196a200541086a290000370000200341ff196a200541106a2d00003a00002003200b3600eb192003201b3600e7192003200a3600e3192003200741026a2d00003a00e219200320072f00003b01e019200320052900003700ef19201d201d280200417f6a220136020002400240200241ff01710d00024020010d00201d280208201d28020c2802001102000240201d28020c280204450d00201d28020810390b201d41046a22022002280200417f6a220236020020020d00201d10390b202141ff017141014721020c010b4101210220010d00201d280208201d28020c2802001102000240201d28020c280204450d00201d28020810390b201d41046a22012001280200417f6a220136020020010d00201d10390b20032004370288212003200c3a0087212003200d3a0086212003200e3b0184212003200f3a008321200320103a008221200320113b018021200320123a00ff20200320133a00fe20200320143b01fc20200320153a00fb20200320163a00fa20200320173b01f820200320183a00f720200320193a00f6202003201a3b01f4202003201c3a00f3202003201f3a00f2202003201e3b01f02020020d03200341e02f6a41186a200341f0206a41186a290200370300200341e02f6a41106a200341f0206a41106a290200370300200341e02f6a41086a200341f0206a41086a290200370300200320032902f0203703e02f024002400240200341e02f6a200341e0196a412010c60a450d00200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c0040240024020032802b82422070d00200342003702f4204100210b2003410028029cde4a22073602f0204100210a0c010b20032902bc242104200320073602f020200320043702f4202004a741ffffff3f71210b2004422088a7210a0b419bbdc800ad21044280808080900121080240200a0d004101211d0c030b200a210541002102200a2101024003402007200541017620026a22054105746a200341e02f6a412010c60a2206450d014101211d20012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000c040b0b200a210641002102200a210103402007200641017620026a22064105746a200341e0196a412010c60a221d450d0220012006201d410048221d1b2201200641016a2002201d1b22026b2106200120024b0d000b200341e80e6a41186a200341e0196a41186a2903002204370300200341e80e6a41106a200341e0196a41106a2903002208370300200341e80e6a41086a2202200341e0196a41086a2903002209370300200320032903e01922223703e80e200720054105746a22012022370000200141086a2009370000200141106a2008370000200141186a20043700002007200a10a8070240200a41e500490d0041002802a8fe4a450d00200341b4026a41023602002003200a3602e80e200341023602ac02200341e4003602a8372003200341a8376a3602b0022003200341e80e6a3602a80241002802a4fe4a210141002802a0fe4a210541002802acfe4a2106200341c8246a4203370300200341ec246a41b19fc800ad4280808080900c84370200200341e0246a41a09fc800ad4280808080900284370300200341d8246a4202370300200341c0246a4113360200200341d4246a200341a8026a360200200341a8a4c8003602c42420034281808080b0243702f424200341003602e824200341d6a4c8003602bc24200341013602b824200541f4ddca00200641024622061b200341b8246a200141b0a7c00020061b28021011030020032802f020210720032802f820210a0b200341a8026a41186a22054200370300200341a8026a41106a22014200370300200341a8026a41086a22064200370300200342003703a802200341e80e6a41c0a4c800410a10f20120062002290000370300200320032900e80e3703a802200341e80e6a41caa4c800410710f20120052002290000370300200120032900e80e370300200341a8026a200341f0206a10cb04200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41086a200341e02f6a41086a290300370300200320032903e02f3703b824200341b8246a41012007200a10a607200542003703002001420037030020064200370300200342003703a802200341e80e6a41c0a4c800410a10f20120062002290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120052002290000370300200120032900e80e370300200341b8246a200341a8026a412010cc0241002102024020032d00b82422054101470d00200341a8376a41196a200341b8246a41196a290000370000200341a8376a41116a200341b8246a41116a290000370000200341a8376a41096a200341b8246a41096a290000370000200320032900b9243700a937410121020b200320023a00a837200341d1246a200341f82f6a290300370000200341c9246a200341f02f6a290300370000200341c1246a200341e82f6a290300370000200320032903e02f3700b924200341013a00b824024020054101470d00200341a8376a410172200341b8246a410172412010c60a0d00200341a8026a41186a4200370300200341a8026a41106a4200370300200341a8026a41086a22024200370300200342003703a802200341e80e6a41c0a4c800410a10f2012002200341e80e6a41086a2205290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f201200141086a2005290000370000200120032900e80e370000200341a8026a4120200341e0196a10d202200341b8246a41186a200341e0196a41186a290300370300200341b8246a41106a200341e0196a41106a290300370300200341b8246a41086a200341e0196a41086a290300370300200320032903e0193703b824200341b8096a41186a22014200370300200341b8096a41106a22054200370300200341b8096a41086a22064200370300200342003703b809200341a8026a41c8e8c600410a10f20120062002290000370300200320032900a8023703b809200341a8026a41d1a4c800410510f20120012002290000370300200520032900a802370300200341b8096a200341b8246a10a7070b20032802f42041ffffff3f71450d00200710390b20034191083b01b824200341b8246a10fc01200041186a41003a00002000420037030820002003280098163600192000411c6a2003419b166a280000360000200042003703000c320b41a4bdc800ad21044100211d4280808080d00121080b0240200b450d00200710390b410321020c040b200341bf376a200541086a290000370000200341c7376a200541106a2d00003a00002003200b3600b3372003201b3600af372003200a3600ab372003200741026a2d00003a00aa37200320072f00003b01a837200320052900003700b737200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e02402400240200341b8246a10a5070d00200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c0a4c800410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41caa4c800410710f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a10c00420032802b8242202410028029cde4a20021b2107024020032902bc24420020021b2204422088a72205450d00410021022005210103402007200541017620026a22054105746a200341a8376a412010c60a2206450d0320012005200641004822061b2201200541016a200220061b22026b2105200120024b0d000b0b41032120200442ffffff3f83500d00200710390b200041d1023b002120004200370308200041206a20203a0000200041186a41003a0000200041246a419bbdc800ad4280808080900184370200200042013703000c300b0240200442ffffff3f83500d00200710390b200341a8026a41186a22014200370300200341a8026a41106a22054200370300200341a8026a41086a22024200370300200342003703a802200341e80e6a41c0a4c800410a10f2012002200341e80e6a41086a2206290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120012006290000370300200520032900e80e370300200341a8026a4120200341a8376a10d202200341b8246a41186a200341a8376a41186a290300370300200341b8246a41106a200341a8376a41106a290300370300200341b8246a41086a200341a8376a41086a290300370300200320032903a8373703b824200341b8096a41186a22014200370300200341b8096a41106a22054200370300200341b8096a41086a22064200370300200342003703b809200341a8026a41c8e8c600410a10f20120062002290000370300200320032900a8023703b809200341a8026a41d1a4c800410510f20120012002290000370300200520032900a802370300200341b8096a200341b8246a10a707200041186a41003a000020004200370308200020032800e02f3600192000411c6a200341e32f6a280000360000200042003703000c2f0b200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a20062801003601002003201d3602e0240240200341b8246a10a507450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2f0b200341a8026a41186a22024200370300200341a8026a41106a22014200370300200341a8026a41086a22054200370300200342003703a802200341e80e6a41c0a4c800410a10f2012005200341e80e6a41086a2206290000370300200320032900e80e3703a802200341e80e6a41d1a4c800410510f20120022006290000370300200120032900e80e370300200341a8026a412010fd01200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41c8e8c600410a10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41d1a4c800410510f2012002200341a00b6a41086a290000370300200120032900a00b370300200341a81d6a412010fd01200041186a41003a000020004200370308200042003703000c2e0b2002201d1044000b4102210242002108420021040b2000201d3a0022200041d1003a0021200041206a20023a0000200041186a41003a000020004200370308200041246a20084280808080f00183200442ffffffff0f8384370200200042013703000c2b0b200341b8246a41306a200141386a290300370300200341b8246a41286a200141306a290300370300200341b8246a41206a200141286a290300370300200341b8246a41186a200141206a290300370300200341b8246a41106a200141186a290300370300200341b8246a41086a200141106a2903003703002003200141086a2903003703b824200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8372000200341b8246a200341a8376a10aa070c2a0b200141086a2105024020012802044101470d00200341e02f6a41086a200541086a280200360200200320052902003703e02f200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a507450d00024020032802e42f41ffffff3f71450d0020032802e02f10390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c2b0b200341b8246a200341e02f6a10a10320032802bc24210d20032802b824210c024020032802c0242202450d0020024105742106200341a81d6a41106a2105200c21020340200341b8096a41186a200241186a2201290000370300200341b8096a41106a200241106a2207290000370300200341b8096a41086a200241086a221d290000370300200320022900003703b809200341b8246a41186a220a2001290000370300200341b8246a41106a220b2007290000370300200341b8246a41086a2207201d290000370300200320022900003703b824200341a81d6a41186a420037030020054200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41b997c200411110f2012001200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41dc97c200410f10f201200541086a200341a00b6a41086a290000370000200520032900a00b370000412010382201450d14200241206a2102200120032903b824370000200141186a200a290300370000200141106a200b290300370000200141086a2007290300370000200342a080808080043702ac37200320013602a837200341a81d6a4120200341a8376a10ad05200641606a22060d000b0b0240200d41ffffff3f71450d00200c10390b200341b8246a41086a20032903e02f370300200341c8246a200341e02f6a41086a280200360200200341003602bc242003410f3a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c2a0b200341e02f6a41086a200541086a280200360200200320052902003703e02f200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a507450d00024020032802e42f41ffffff3f71450d0020032802e02f10390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c2a0b200341b8246a200341e02f6a10a10320032802bc24210d20032802b824210c024020032802c0242202450d0020024105742106200341a81d6a41106a2105200c21020340200341b8096a41186a200241186a2201290000370300200341b8096a41106a200241106a2207290000370300200341b8096a41086a200241086a221d290000370300200320022900003703b809200341b8246a41186a220a2001290000370300200341b8246a41106a220b2007290000370300200341b8246a41086a2207201d290000370300200320022900003703b824200341a81d6a41186a420037030020054200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41b997c200411110f2012001200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41ca97c200411210f201200541086a200341a00b6a41086a290000370000200520032900a00b370000412010382201450d13200241206a2102200120032903b824370000200141186a200a290300370000200141106a200b290300370000200141086a2007290300370000200342a080808080043702ac37200320013602a837200341a81d6a4120200341a8376a10ad05200641606a22060d000b0b0240200d41ffffff3f71450d00200c10390b200341b8246a41086a20032903e02f370300200341c8246a200341e02f6a41086a280200360200200341013602bc242003410f3a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c290b200341b8246a200141086a41c00110c30a1a200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8372000200341b8246a200341a8376a10d6020c280b200341b8246a200141086a41c00110c30a1a200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8372000200341b8246a200341a8376a10bf020c270b200141186a21072002411a6a2901002104200241196a2d0000211d200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a200141146a280200211c200141106a280200211e2001410c6a28020021062002280228210520022d0001211f20022d000021020240024002400240200141086a280200417f6a0e0400010203000b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201f41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b20032004370388212003201d3a0087212003200a3a0086212003200b3b0184212003200c3a0083212003200d3a0082212003200e3b0180212003200f3a00ff20200320103a00fe20200320113b01fc20200320123a00fb20200320133a00fa20200320143b01f820200320153a00f720200320163a00f620200320173b01f420200320183a00f320200320193a00f2202003201a3b01f0200240024020020d00200341a8026a41186a200341f0206a41186a290300370300200341a8026a41106a200341f0206a41106a290300370300200341a8026a41086a200341f0206a41086a290300370300200320032903f0203703a802200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41a280c400410410f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a412010cc020240024020032d00b8244101460d00200341a8376a41186a4200370300200341a8376a41106a4200370300200341a8376a41086a4200370300200342003703a8370c010b200341a8376a41186a200341d1246a290000370300200341a8376a41106a200341c9246a290000370300200341a8376a41086a200341c1246a290000370300200320032900b9243703a8370b41032102200341a8026a200341a8376a412010c60a0d01200341b8246a200641c00710c30a1a200341003b01e02f411010382202450d13200241ac81c40036020c2002410136020820024281808080103702002003200236028830200341a8376a200341b8246a200341e02f6a10e303420021044200210841082107024020032903a8374201520d0042002104420021084108210720032903b0374202510d00200341c8376a2d0000210720032902cc372208428080808070832104200842ffffffff0f83210820032d00cb37210220032d00ca37210120032d00c93721050b200341c4246a2004200884370200200341c3246a20023a0000200341c2246a20013a0000200341c1246a20053a0000200341c0246a20073a0000200341003a00bc242003410e3a00b824200341b8246a10fc01200610392003200341eb0e6a2800003600e319200320032800e80e3602e019200041186a41013a000020004200370308200020032802e0193600192000411c6a20032800e319360000200042003703000c2b0b410221020b2006109f0620061039200041186a41003a000020004200370308200020032802e0193600192000411c6a20032800e319360000200041286a410b360200200041246a419ccfc4003602002000411e3b0021200041206a20023a0000200042013703000c290b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201f41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b20032004370388212003201d3a0087212003200a3a0086212003200b3b0184212003200c3a0083212003200d3a0082212003200e3b0180212003200f3a00ff20200320103a00fe20200320113b01fc20200320123a00fb20200320133a00fa20200320143b01f820200320153a00f720200320163a00f620200320173b01f420200320183a00f320200320193a00f2202003201a3b01f0200240024020020d00200341a8026a41186a200341f0206a41186a290300370300200341a8026a41106a200341f0206a41106a290300370300200341a8026a41086a200341f0206a41086a290300370300200320032903f0203703a802200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41a280c400410410f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b8246a200341a81d6a412010cc020240024020032d00b8244101460d00200341a8376a41186a4200370300200341a8376a41106a4200370300200341a8376a41086a4200370300200342003703a8370c010b200341a8376a41186a200341d1246a290000370300200341a8376a41106a200341c9246a290000370300200341a8376a41086a200341c1246a290000370300200320032900b9243703a8370b41032102200341a8026a200341a8376a412010c60a0d01200341b8246a200641c00710c30a1a200341003b01e02f411010382202450d12200241ac81c40036020c2002410136020820024281808080103702002003200236028830200341a8376a200341b8246a200341e02f6a10e303420021044200210841082107024020032903a8374201520d0042002104420021084108210720032903b0374202510d00200341c8376a2d0000210720032902cc372208428080808070832104200842ffffffff0f83210820032d00cb37210220032d00ca37210120032d00c93721050b200341c4246a2004200884370200200341c3246a20023a0000200341c2246a20013a0000200341c1246a20053a0000200341c0246a20073a0000200341003a00bc242003410e3a00b824200341b8246a10fc01200610392003200341eb0e6a2800003600e319200320032800e80e3602e019200041186a41013a000020004200370308200020032802e0193600192000411c6a20032800e319360000200042003703000c2a0b410221020b2006109f0620061039200041186a41003a000020004200370308200020032802e0193600192000411c6a20032800e319360000200041286a410b360200200041246a419ccfc4003602002000411e3b0021200041206a20023a0000200042013703000c280b200341a8026a41106a200741106a290200370300200341a8026a41086a200741086a290200370300200320072902003703a80220052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201f41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703800f2003201d3a00ff0e2003200a3a00fe0e2003200b3b01fc0e2003200c3a00fb0e2003200d3a00fa0e2003200e3b01f80e2003200f3a00f70e200320103a00f60e200320113b01f40e200320123a00f30e200320133a00f20e200320143b01f00e200320153a00ef0e200320163a00ee0e200320173b01ec0e200320183a00eb0e200320193a00ea0e2003201a3b01e80e0240024002400240024020020d00200341e02f6a41186a200341e80e6a41186a290300370300200341e02f6a41106a200341e80e6a41106a290300370300200341e02f6a41086a200341e80e6a41086a290300370300200320032903e80e3703e02f200341a81d6a41186a22014200370300200341a81d6a41106a22024200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41a280c400410410f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f2012001200341a00b6a41086a290000370300200220032900a00b370300200341b8246a200341a81d6a412010cc020240024020032d00b8244101460d00200341a8376a41186a4200370300200341a8376a41106a4200370300200341a8376a41086a4200370300200342003703a8370c010b200341a8376a41186a200341d1246a290000370300200341a8376a41106a200341c9246a290000370300200341a8376a41086a200341c1246a290000370300200320032900b9243703a8370b0240200341e02f6a200341a8376a412010c60a450d00410321020c020b41012105024002400240200641ff01710e03000201020b200341b8246a410d6a200341a8026a410d6a290000370000200341b8246a41086a200341a8026a41086a290300370300200320032903a8023703b82420064108762101410021050c010b0240201c450d00201e10390b0b200341cb096a200341b8246a41086a290300370000200341b8096a41186a2206200341c5246a2900003700002003201c3600bf092003201e3600bb09200320032903b8243700c309200320013b01b809200320014110763a00ba09024020050d00200341e0196a41186a2006290300370300200341e0196a41106a200341b8096a41106a290300370300200341e0196a41086a200341b8096a41086a290300370300200320032903b8093703e019200341a81d6a41186a4200370300200341a81d6a41106a4200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41a280c400410410f2012001200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f201200241086a200341a00b6a41086a290000370000200220032900a00b370000200341b8246a200341a81d6a412010cc0220032d00b8244101460d0420034188216a420037030020034180216a4200370300200341f8206a4200370300200342003703f0200c050b410121020c020b410221020b200641ff01714102470d00201c450d00201e10390b200041186a41003a000020004200370308200020032802d0123600192000411c6a20032800d312360000200041286a410b360200200041246a419ccfc4003602002000411e3b0021200041206a20023a0000200042013703000c290b20034188216a200341d1246a29000037030020034180216a200341c9246a290000370300200341f8206a200341c1246a290000370300200320032900b9243703f0200b200341d5246a200341f0206a41186a290300370000200341cd246a200341f0206a41106a290300370000200341c5246a200341f0206a41086a290300370000200320032903f0203700bd24200341013a00bc242003410e3a00b824200341b8246a10fc01200341b8246a41186a200341e0196a41186a290300370300200341b8246a41106a200341e0196a41106a290300370300200341b8246a41086a200341e0196a41086a290300370300200320032903e0193703b824200341a81d6a41186a4200370300200341a81d6a41106a4200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41a280c400410410f2012001200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f201200241086a200341a00b6a41086a290000370000200220032900a00b370000200341a81d6a200341b8246a10a70720032003280098163602d012200320034198166a41036a2800003600d312200041186a41013a000020004200370308200020032802d0123600192000411c6a20032800d312360000200042003703000c270b200141306a2802002101200341e80e6a41106a200741106a290200370300200341e80e6a41086a200741086a290200370300200320072902003703e80e20052005280200417f6a220736020002400240200241ff01710d00024020070d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201f41ff017141014721020c010b4101210220070d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22072007280200417f6a220736020020070d00200510390b200320043703f8192003201d3a00f7192003200a3a00f6192003200b3b01f4192003200c3a00f3192003200d3a00f2192003200e3b01f0192003200f3a00ef19200320103a00ee19200320113b01ec19200320123a00eb19200320133a00ea19200320143b01e819200320153a00e719200320163a00e619200320173b01e419200320183a00e319200320193a00e2192003201a3b01e01902400240024020020d00200341a8026a41186a200341e0196a41186a290300370300200341a8026a41106a200341e0196a41106a290300370300200341a8026a41086a200341e0196a41086a290300370300200320032903e0193703a802200341a81d6a41186a22024200370300200341a81d6a41106a22054200370300200341a81d6a41086a22074200370300200342003703a81d200341d80a6a41a280c400410410f2012007200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f0d4c900410310f2012002200341a00b6a41086a290000370300200520032900a00b370300200341b8246a200341a81d6a412010cc020240024020032d00b8244101460d00200341a8376a41186a4200370300200341a8376a41106a4200370300200341a8376a41086a4200370300200342003703a8370c010b200341a8376a41186a200341d1246a290000370300200341a8376a41106a200341c9246a290000370300200341a8376a41086a200341c1246a290000370300200320032900b9243703a8370b0240200341a8026a200341a8376a412010c60a450d002001109f0620011039410321020c020b41012105024002400240200641ff01710e03000201020b200341b8246a410d6a200341e80e6a410d6a290000370000200341b8246a41086a200341e80e6a41086a290300370300200320032903e80e3703b82420064108762102410021050c010b0240201c450d00201e10390b0b20034183216a200341b8246a41086a290300370000200341f0206a41186a2206200341c5246a2900003700002003201c3600f7202003201e3600f320200320032903b8243700fb20200320023b01f020200320024110763a00f220024020050d00200341b8096a41186a22022006290300370300200341b8096a41106a2205200341f0206a41106a290300370300200341b8096a41086a2206200341f0206a41086a290300370300200320032903f0203703b809200341b8246a200141c00710c30a1a200341fa2f6a2002290300370100200341f22f6a2005290300370100200341ea2f6a2006290300370100200320032903b8093701e22f20034180023b01e02f411010382202450d12200241ac81c40036020c2002410136020820024281808080103702002003200236028830411010382205450d122005419481c40036020c20054101360208200542818080801037020020022002280200417f6a2206360200024020060d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d00200210390b2003200536028830200341a8376a200341b8246a200341e02f6a10e303420021044200210841082107024020032903a8374201520d0042002104420021084108210720032903b0374202510d00200341c8376a2d0000210720032902cc372208428080808070832104200842ffffffff0f83210820032d00cb37210220032d00ca37210520032d00c93721060b200341c4246a2004200884370200200341c3246a20023a0000200341c2246a20053a0000200341c1246a20063a0000200341c0246a20073a0000200341023a00bc242003410e3a00b824200341b8246a10fc012001103920032003280098163602d01220032003419b166a2800003600d312200041186a41013a000020004200370308200020032802d0123600192000411c6a20032800d312360000200042003703000c2a0b2001109f0620011039410121020c020b2001109f0620011039410221020b200641ff01714102470d00201c450d00201e10390b200041186a41003a000020004200370308200020032802d0123600192000411c6a20032800d312360000200041286a410b360200200041246a419ccfc4003602002000411e3b0021200041206a20023a0000200042013703000c260b200141246a2902002104200141206a280200211d2001411c6a280200210b200141186a280200210a200141146a2802002107200141106a28020021062001410c6a280200210502400240024002400240024002400240200141086a280200417f6a0e06000102030405000b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b824024002400240200341b8246a10a2070d00200341cc246a2004370200200341c8246a201d3602002003200b3602c4242003200a3602c024200320073602bc24200320063602b8242005200341b8246a10ab07450d0241b8b6c300ad2104410321024280808080900221080c010b02402007450d00200610390b41022102420021080240201d450d00200b10390b420021040b2000419d023b002120004200370308200041246a2008200484370200200041206a20023a0000200041186a41003a0000200042013703000c2d0b20004200370308200041186a41003a0000200042003703000c2c0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b82441022102420021044200210802400240200341b8246a10a2070d00200510ac07450d0141fcb6c300ad2108410321024280808080e00121040b2000419d063b002120004200370308200041246a2004200884370200200041206a20023a0000200041186a41003a0000200042013703000c2c0b20004200370308200041186a41003a0000200042003703000c2b0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b824024002400240200341b8246a10a207450d004102210242002104420021080c010b200341b8246a200510f80120032802b824220220032802c02410f90141ff01712101024020032802bc24450d00200210390b410321024280808080d0012104024020014101460d0041e4bdc400ad2108410421010c010b200510fa01450d014180e6c600ad2108410621010b200020013a00222000411d3a002120004200370308200041246a2004200884370200200041206a20023a0000200041186a41003a0000200042013703000c2b0b20004200370308200041186a41003a0000200042003703000c2a0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b824024002400240200341b8246a10a207450d004102210242002104420021080c010b200341b8246a200510f80120032802b824220220032802c02410f90141ff01712101024020032802bc24450d00200210390b41032102024020014102460d0041f0e8c800ad2108410521014280808080c00121040c010b200510a102450d014198e6c600ad2108410721014280808080f00121040b200020013a00222000411d3a002120004200370308200041246a2004200884370200200041206a20023a0000200041186a41003a0000200042013703000c2a0b20004200370308200041186a41003a0000200042003703000c290b200341b8246a41146a2004370200200341b8246a41106a201d360200200341b8246a410c6a200b360200200341b8246a41086a200a360200200320073602bc24200320063602b824200341b8246a411c6a2001412c6a41cc0310c30a1a200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8370240200341a8376a10a207450d0041022101420021040c020b200341a8376a200510f80120032802a837220120032802b03710f9012102024020032802ac37450d00200110390b200241ff01712106410321014280808080f0012104024041000d0020060e080200000000000002020b410221022006417b6a4102490d01200341a81d6a41186a22014200370300200341b81d6a22064200370300200341a81d6a41086a22074200370300200342003703a81d200341d80a6a41f1b5c900410d10f2012007200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a418bb6c900410c10f2012001200341a00b6a41086a290000370300200620032900a00b370300200341a8376a200341a81d6a412010b20220032802f837210120032802b8382106200341003602b037200342013703a837200341003a00e019200341a8376a4100410110810120032802a83720032802b03722076a20032d00e0193a00002003200741016a3602b037200341b8246a200341a8376a10e9044100200120064102461b2005200341a8376a109f042101200341b8246a10d20302402001450d0041d4b6c300ad21084280808080d0022104410321010c030b20004200370308200041186a41003a0000200042003703000c280b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b824024002400240200341b8246a10a207450d00410221020c010b200341b8246a200520062007200a10ad07024020032d00b82422024108470d00200341b8246a2006200510ae0720032d00b82422024108460d020b20032902bc24210420032d00bb24210120032d00ba24210520032d00b92421060b200020013a0023200020053a0022200020063a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c280b20004200370308200041186a41003a0000200042003703000c270b200341b8246a10d20341a0b6c300ad2108410021020b200020023a00222000411d3a002120004200370308200041206a20013a0000200041186a41003a0000200041246a20044280808080f00383200884370200200042013703000c250b200241226a21062002411a6a2901002104200241196a2d0000211d200241186a2d0000210a200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002118200241056a2d00002119200241046a2d0000211a4102211f200241026a2f0100211c2001410c6a28020021172002280228210520022d0001210720022d0000210202400240024002400240024002400240024002400240200141086a2d0000417f6a0e03000102000b200141c0006a2903002108200141386a2903002109200141346a280200211e200141306a280200211b2001412c6a2802002121200341b7376a200141186a290000370000200341bf376a200141206a290000370000200341c7376a200141286a2d00003a0000200320173600ab37200320012f00093b01a83720032001410b6a2d00003a00aa372003200141106a2900003700af37200341b8246a411a6a2004370100200341b8246a41196a201d3a0000200341b8246a41186a200a3a0000200341b8246a41166a200b3b0100200341b8246a41156a200c3a0000200341b8246a41146a200d3a0000200341b8246a41126a200e3b0100200341b8246a41116a200f3a0000200341b8246a41106a20103a0000200341b8246a410e6a20113b0100200341b8246a410d6a20123a0000200341b8246a410c6a20133a0000200341b8246a410a6a20143b0100200341b8246a41096a20153a0000200341b8246a41086a20163a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba24200320073a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e02402400240200341b8246a10a2070d004103211f2021200341a8376a20092008201b201e10f40141ff01714103460d010b2000419c023b002120004200370308200041206a201f3a0000200041186a41003a0000200041246a41f8c6c000ad4280808080a00184370200200042013703000c2f0b20004200370308200041186a41003a0000200042003703000c2e0b200341b8246a411a6a2004370100200341b8246a41196a201d3a0000200341b8246a41186a200a3a0000200341b8246a41166a200b3b0100200341b8246a41156a200c3a0000200341b8246a41146a200d3a0000200341b8246a41126a200e3b0100200341b8246a41116a200f3a0000200341b8246a41106a20103a0000200341b8246a410e6a20113b0100200341b8246a410d6a20123a0000200341b8246a410c6a20133a0000200341b8246a410a6a20143b0100200341b8246a41096a20153a0000200341b8246a41086a20163a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba24200320073a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e024200341b8246a10a2070d01200342003702f420200341b8246a201710f001200341a8376a20032802b824220520032802c02410f10120032902ac37420020032802a83722021b210441002802fcad492101024020032802bc24450d00200510390b2002200120021b21122004a7211302402004422088a72202450d002012200241386c6a210e2012210a0340200a2903002104200341d8096a41186a200a41206a290300370300200341d8096a41106a200a41186a290300370300200341d8096a41086a200a41106a2903003703002003200a2903083703d80902402004427f7c22044201560d0002402004a70e020003000b200a41306a2903002104200a41286a2903002108200341a8376a41186a200a41086a220b41186a220f290000370300200341a8376a41106a200b41106a2210290000370300200341a8376a41086a200b41086a22112900003703002003200b2900003703a8370240024020032802f4202207450d0020032802f020210c034020072f01b601220d410574211d41002105417f210141002102024003400240201d2002470d00200d21010c020b200341a8376a200720026a41b8016a412010c60a2206450d04200141016a2101200541106a2105200241206a21022006417f4a0d000b0b200c450d01200c417f6a210c200720014102746a4198046a28020021070c000b0b200341b8246a41186a200f290000370300200341b8246a41106a2010290000370300200341b8246a41086a20112900003703002003200b2900003703b824200341f0206a200341b8246a2008200410f6050c010b2008200720056a2202290300582004200241086a29030022095820042009511b0d00200341b8246a41186a200f290000370300200341b8246a41106a2010290000370300200341b8246a41086a20112900003703002003200b2900003703b824200341f0206a200341b8246a2008200410f6050b200a41386a220a200e470d000b0b02402013450d00201341386c450d00201210390b0240024020032802f42022010d004100210641002802fcad4921150c010b20032802f820211f20032802f020210520012102024003402005450d012005417f6a2105200120012f01b6014102746a4198046a280200210120022802980421020c000b0b0240201f450d00201f417f6a210a024020022f01b601450d00410021064100211d0c090b41002105034041002101024020022802b0012207450d00200541016a211d20022f01b4012106200721010b024041c80441980420051b450d00200210390b024020010d00410021020c0b0b201d210520012102200620012f01b6014f0d000b200121020c080b4100210141002802fcad492115034020022802b0012105024041c80441980420011b450d00200210390b2001417f6a21012005210220050d000b410021060b410021050c080b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200741ff01714101460d014102210642002104420021080c060b410221064200210420010d042005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d0420051039420021080c050b200341b8246a201710f001200341a8376a20032802b824220620032802c02410f10120032902ac37420020032802a83722011b21094100210241002802fcad492105024020032802bc24450d00200610390b2001200520011b210541e8c6c400ad2108411c21014280808080900221042009428080808010540d0220052903004201520d02200341b8246a201710f80120032802b824220120032802c02410f90141ff01712102024020032802bc24450d00200110390b024020024101460d004106210241e4bdc40021010c020b0240201710fa01450d00410921024180e6c60021010c020b201710fb0102402009a72202450d00200241386c450d00200510390b20004200370308200020032800e02f360019200041186a41003a00002000411c6a200341e32f6a280000360000200042003703000c2c0b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c2b0b4280808080d00121042001ad4280808080d001842108411921010b410321062009a72207450d01200741386c450d01200510390c010b420021080b200020023a0022200020013a002120004200370308200041206a20063a0000200041186a41003a0000200041246a20044280808080f00383200842ffffffff0f8384370200200042013703000c270b200641016a2107200220064105746a41b8016a2105200220064104746a220641086a210b0240201d450d00200220074102746a4198046a28020021020240201d417f6a2201450d00034020022802980421022001417f6a22010d000b0b410021070b20062903002108200b2903002109200341c4246a200541086a290000370200200341cc246a200541106a290000370200200341d4246a200541186a290000370200200320052900003702bc24200341a8376a41086a200341b8246a41086a290200370300200341a8376a41106a200341b8246a41106a290200370300200341a8376a41186a200341b8246a41186a290200370300200341a8376a41206a200341b8246a41206a280200360200200320032902b8243703a8370b200341b8246a41106a200341a8376a41106a290300370300200341b8246a41086a200341a8376a41086a290300370300200341b8246a41186a200341a8376a41186a290300370300200341b8246a41206a200341a8376a41206a280200360200200341e02f6a41086a200341c4246a290200370300200341e02f6a41106a200341cc246a290200370300200341e02f6a41186a200341d4246a290200370300200320032903a8373703b824200320032902bc243703e02f417f200a41016a22012001200a491bad42307e2204422088a70d0e2004a72201417f4c0d0e200110382215450d0d20152008370320201520032903e02f370300201541286a2009370300201541186a200341e02f6a41186a290300370300201541106a200341e02f6a41106a290300370300201541086a200341e02f6a41086a29030037030041012106200341013602f00e200320153602e80e2003200141306e22013602ec0e0240200a450d00024002400240200720022f01b6014f0d004100211d0c010b41002106034041002105024020022802b001220a450d00200641016a211d20022f01b4012107200a21050b024041c80441980420061b450d00200210390b024020050d00410021020c030b201d210620052102200720052f01b6014f0d000b200521020b200741016a2106200220074105746a41b8016a210a200220074104746a220741086a210b0240201d450d00200220064102746a4198046a28020021020240201d417f6a2205450d00034020022802980421022005417f6a22050d000b0b410021060b20072903002104200b2903002108200341c4246a200a41086a290000370200200341cc246a200a41106a290000370200200341d4246a200a41186a2900003702002003200a2900003702bc24200341a8376a41086a200341b8246a41086a290200370300200341a8376a41106a200341b8246a41106a290200370300200341a8376a41186a200341b8246a41186a290200370300200341a8376a41206a200341b8246a41206a280200360200200320032902b8243703a8370b201f417e6a210c200341b8246a41106a2218200341a8376a41106a2211290300370300200341b8246a41086a2219200341a8376a41086a2212290300370300200341b8246a41186a221a200341a8376a41186a2213290300370300200341b8246a41206a221c200341a8376a41206a2214280200360200200341a8026a41086a220e200341c4246a290200370300200341a8026a41106a220f200341cc246a290200370300200341a8026a41186a2210200341d4246a290200370300200320032903a8373703b824200320032902bc243703a802200341e02f6a41046a210b200341b8246a41046a210d4101210a03400240200a2001470d00200341e80e6a2001417f200c41016a22052005200c491b10af0720032802e80e21150b2015200a41306c6a220120032903a802370300200e2903002109200f29030021222010290300212320012004370320200141286a2008370300200141186a2023370300200141106a2022370300200141086a20093703002003200a41016a220a3602f00e0240200c0d00201f21060c020b024002400240200620022f01b6014f0d00410021070c010b41002105034041002101024020022802b001221d450d00200541016a210720022f01b4012106201d21010b024041c80441980420051b450d00200210390b024020010d00410021020c030b2007210520012102200620012f01b6014f0d000b200121020b200641016a2101200220064105746a41b8016a2105200220064104746a221d41086a21160240024020070d00200121060c010b200220014102746a4198046a280200210202402007417f6a2201450d00034020022802980421022001417f6a22010d000b0b410021060b201d290300210420162903002108200d2005290000370000200d41186a200541186a290000370000200d41106a200541106a290000370000200d41086a200541086a29000037000020122019290200370300201120182902003703002013201a2902003703002014201c280200360200200320032902b8243703a8370b200c417f6a210c200341e02f6a41206a2014280200360200200341e02f6a41186a2013290300370300200341e02f6a41106a2011290300370300200341e02f6a41086a2012290300370300200320032903a8373703e02f200e200b41086a290200370300200f200b41106a2902003703002010200b41186a2902003703002003200b2902003703a80220032802ec0e21010c000b0b41002101034020022802b0012105024041c80441980420011b450d00200210390b2001417f6a21012005210220050d000b20032802ec0e21050b02402006450d00200641306c2101201521020340200241286a2903002104200241206a2903002108200341a81d6a41186a200241186a2903002209370300200341a81d6a41106a200241106a2903002222370300200341a81d6a41086a200241086a29030022233703002003200229030022243703a81d200341b8246a41186a2009370300200341b8246a41106a2022370300200341b8246a41086a2023370300200320243703b824200341b8246a20082004109f02200241306a2102200141506a22010d000b0b02402005450d00200541306c450d00201510390b200341b8246a201710f00120032802b824220220032802c02410fd01024020032802bc24450d00200210390b20004200370308200020032800e019360019200041186a41003a00002000411c6a200341e3196a280000360000200042003703000c240b200341b8246a200141086a41d80010c30a1a200341a8376a41286a200241286a280200360200200341a8376a41206a200241206a290200370300200341a8376a41186a200241186a290200370300200341a8376a41106a200241106a290200370300200341a8376a41086a200241086a290200370300200320022902003703a8372000200341b8246a200341a8376a10b0070c230b200241226a21062002411a6a2901002104200241196a2d00002107200241186a2d0000211d200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d000021184102211c200241026a2f01002119200141106a280200211f2001410c6a280200211e2002280228210520022d0001211a20022d00002102024002400240200141086a280200417f6a0e03000102000b200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201a3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e024420021044200210802400240200341b8246a10a5070d00200341c01d6a22064200370300200341b81d6a22024200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41fcffc300410810f2012005200341d80a6a41086a2207290000370300200320032900d80a3703a81d200341a00b6a41b5a7c800410b10f2012006200341a00b6a41086a221d290000370300200220032900a00b370300200341b8246a200341a81d6a412010a202024020032802b8244101470d00200341b8246a41086a280200210a200642003703002002420037030020054200370300200342003703a81d200341d80a6a41b9fec300410610f20120052007290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f201200241086a201d290000370000200220032900a00b370000200341e0016a200341a81d6a412010f50141fcc5c400ad21084103211c4100210142808080809002210420032802e001450d0120032802e401417f200a41d8046a220b200b200a491b490d010b200642003703002002420037030020054200370300200342003703a81d200341d80a6a41b9fec300410610f20120052007290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f201200241086a201d290000370000200220032900a00b370000200341d8016a200341a81d6a412010f50120032802dc0141c0f0006e410020032802d8011b201f4d0d014198c6c400ad21084103211c428080808090022104410121010b200020013a00222000411a3a002120004200370308200041246a2004200884370200200041206a201c3a0000200041186a41003a0000200042013703000c250b200341a81d6a41186a22054200370300200341a81d6a41106a22064200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41fcffc300410810f2012001200341d80a6a41086a2207290000370300200320032900d80a3703a81d200341a00b6a41b9a6c800410e10f201200241086a221d200341a00b6a41086a220a290000370000200220032900a00b370000200341d0016a200341a81d6a412010f50120032802d001210b20032802d401210c200542003703002006420037030020014200370300200342003703a81d200341d80a6a41fcffc300410810f20120012007290000370300200320032900d80a3703a81d200341a00b6a41b9a6c800410e10f201201d200a290000370000200220032900a00b3700002003200c41016a4101200b1b220b3602b824200341a81d6a4120200341b8246a410410a302200542003703002006420037030020014200370300200342003703a81d200341d80a6a41b9fec300410610f20120012007290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f201201d200a290000370000200220032900a00b370000200341c8016a200341a81d6a412010f50120032802cc01210c20032802c801210d200542003703002006420037030020014200370300200342003703a81d200341d80a6a41fcffc300410810f20120012007290000370300200320032900d80a3703a81d200341a00b6a41b5a7c800410b10f201201d200a290000370000200220032900a00b370000410810382202450d0c2002417f200c4100200d1b2201201e6a220520052001491b22013600042002201f360000200341a81d6a41202002410810a30220021039200341cc246a2001360200200341b8246a41106a201f360200200341c4246a200b360200200341b8246a41086a41003a00002003410b3a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800a8373600192000411c6a200341ab376a280000360000200042003703000c240b200141286a2903002108200141206a2903002109200141186a2802002106200141146a280200211c20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201a41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703d009200320073a00cf092003201d3a00ce092003200a3b01cc092003200b3a00cb092003200c3a00ca092003200d3b01c8092003200e3a00c7092003200f3a00c609200320103b01c409200320113a00c309200320123a00c209200320133b01c009200320143a00bf09200320153a00be09200320163b01bc09200320173a00bb09200320183a00ba09200320193b01b80902400240024020020d00200341e0196a41186a200341b8096a41186a2903002204370300200341e0196a41106a200341b8096a41106a2903002222370300200341e0196a41086a200341b8096a41086a2903002223370300200320032903b80922243703e019200341b8246a41186a2004370300200341b8246a41106a2022370300200341b8246a41086a2023370300200320243703b824200341a8376a200341b8246a201e201f201c20062009200810a70220032d00a83722024108460d0220032d00a937210120032d00aa37210520032d00ab37210620032902ac3721040c010b410221020b200020063a0023200020053a0022200020013a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c240b20004200370308200041186a41003a0000200042003703000c230b200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201a3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e0240240200341b8246a10a2070d00200341a8026a10ad02200341e02f6a41186a200341a8026a41186a290300370300200341e02f6a41106a200341a8026a41106a290300370300200341e02f6a41086a200341a8026a41086a290300370300200320032903a8023703e02f200341b8246a200341e02f6a10ae02024020032903b8244201520d00200341b8246a41086a2102200341f0246a21010340200341a8376a41086a200241086a2903002204370300200341a8376a41106a200241106a2903002208370300200341a8376a41186a200241186a2903002209370300200341a8376a41206a200241206a2903003703002003200229030022223703a8372001290300212320032903e8242124200341b8246a41186a2009370300200341b8246a41106a200837030020022004370300200320223703b824200341b8246a20242023109f02200341b8246a200341e02f6a10ae0220032903b8244201510d000b0b024020032802e42f450d0020032802e02f10390b0240200341e02f6a41106a280200450d0020032802ec2f10390b200341a81d6a41186a22024200370300200341a81d6a41106a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41fcffc300410810f2012005200341d80a6a41086a2206290000370300200320032900d80a3703a81d200341a00b6a418cd2c500410710f2012002200341a00b6a41086a2207290000370300200120032900a00b370300200341a81d6a412010ac02200242003703002001420037030020054200370300200342003703a81d200341d80a6a41fcffc300410810f20120052006290000370300200320032900d80a3703a81d200341a00b6a41b5a7c800410b10f20120022007290000370300200120032900a00b370300200341a81d6a412010fd01200041186a41003a000020004200370308200042003703000c230b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c220b20034198166a41026a2001410b6a2d00003a0000200320012f00093b019816200241226a21062002411a6a2901002104200241196a2d00002107200241186a2d0000211d200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f01002119200141246a2802002120200141206a280200211e2001411c6a2802002121200141186a2802002125200141146a280200211b200141106a280200211f2001410c6a280200211a2002280228210520022d0001211c20022d000021020240024002400240024002400240024002400240200141086a2d0000417f6a0e06000102030405000b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201c41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703f819200320073a00f7192003201d3a00f6192003200a3b01f4192003200b3a00f3192003200c3a00f2192003200d3b01f0192003200e3a00ef192003200f3a00ee19200320103b01ec19200320113a00eb19200320123a00ea19200320133b01e819200320143a00e719200320153a00e619200320163b01e419200320173a00e319200320183a00e219200320193b01e01902400240024020020d00200341e80e6a41186a200341e0196a41186a2903002204370300200341e80e6a41106a200341e0196a41106a2903002208370300200341e80e6a41086a200341e0196a41086a2903002209370300200320032903e01922223703e80e200341b8246a41186a2004370300200341b8246a41106a2008370300200341b8246a41086a2009370300200320223703b824200320253602e82f2003201b3602e42f2003201f3602e02f200320203602b0372003201e3602ac37200320213602a837200341a8026a200341b8246a420020042004201a200341e02f6a200341a8376a410110b10720032d00a80222024108460d0220032d00a902210120032d00aa02210520032d00ab02210620032902ac0221040c010b0240201e450d00202110390b410221020240201b450d00201f10390b0b200020063a0023200020053a0022200020013a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c2b0b20004200370308200041186a41003a0000200042003703000c2a0b200141d0006a2903002108200141c8006a2903002109200141c4006a2802002126200141c0006a28020021272001413c6a2802002128200141386a2802002129200141346a280200212a200141306a280200212b2001412c6a280200212c200141286a2802002101200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201c3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e02402400240200341b8246a10a2070d00200320032f0198163b01b824200320013a00d724200320203600d3242003201e3600cf24200320213600cb24200320253600c7242003201b3600c3242003201f3600bf242003201a3600bb2420032003419a166a2d00003a00ba24200320293602e82f2003202a3602e42f2003202b3602e02f200320263602b037200320273602ac37200320283602a837200341a8026a200341b8246a420120092008202c200341e02f6a200341a8376a410010b10720032d00a8024108470d0120004200370308200020032800e80e360019200041186a41003a00002000411c6a200341eb0e6a280000360000200042003703000c2b0b200341023a00a80202402027450d00202810390b202a450d00202b10390b20032802a8022102200041246a20032902ac02370200200041206a2002360200200041186a41003a000020004200370308200042013703000c290b200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201c3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e024200341a8376a200341b8246a201a10b20720032d00ab3721050240024020032d00a83722024108470d00200341b8246a201a10f80120032802b824220220032802c02410f90141ff01712107024020032802bc24450d00200210390b4106210141e4bdc400ad210441032102411921064280808080d001210802402007417f6a0e0700020202020200020b0240201a10ac07450d0041fcbdc400ad2104410721014280808080800221080c020b200341d80a6a41a1ddc400410910f201200341a00b6a41f4eec600410510f2012003201a3602f0202003200341f0206a410410f3013703a802200341c4246a200341f0206a41046a3602002003200341b0026a3602bc242003200341f0206a3602c0242003200341a8026a3602b824200341a8376a200341b8246a108d0120032802b037220641206a2202417f4c0d130240024020020d00410121010c010b200210382201450d130b41002105200341003602e82f200320013602e02f200320023602e42f02402002410f4b0d00200341e02f6a4100411010810120032802e42f210220032802e02f210120032802e82f21050b200120056a220720032900d80a370000200741086a200341d80a6a41086a2900003700002003200541106a22053602e82f0240200220056b410f4b0d00200341e02f6a2005411010810120032802e42f210220032802e02f210120032802e82f21050b200120056a220720032900a00b370000200741086a200341a00b6a41086a2900003700002003200541106a22053602e82f20032802a83721070240200220056b20064f0d00200341e02f6a2005200610810120032802e02f210120032802e82f21050b200120056a2007200610c30a1a200520066a2102024020032802ac37450d0020032802a83710390b200341b8246a20032802e02f2201200210b3070240024020032d00e82422054102460d002001200210fd01200341a8376a41286a2206200341b8246a41286a2207290300370300200341a8376a41206a221d200341b8246a41206a220a290300370300200341a8376a41186a220b200341b8246a41186a220c290300370300200341a8376a41106a220d200341b8246a41106a2202290300370300200341a8376a41086a220e200341b8246a41086a220f290300370300200320032903b8243703a837200320032800e9243602f8092003200341ec246a22102800003600fb09024020032802e42f450d00200110390b201020032800fb09360000200f200e290300220437030020072006290300370300200a201d290300370300200c200b2903003703002002200d290300370300200320032903a83722083703b824200320053a00e824200320032802f8093600e924200220082004109f020c010b20032802e42f450d00200110390b200341b8246a201a10b40720032802b824220220032802c02410fd01024020032802bc24450d00200210390b200341c0246a201a360200200341013a00bc242003410a3a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800e80e3600192000411c6a200341eb0e6a280000360000200042003703000c2a0b20032d00a937210620032d00aa37210120032902ac3722044280808080708321080b200020053a0023200020013a0022200020063a002120004200370308200041206a20023a0000200041186a41003a0000200041246a2008200442ffffffff0f8384370200200042013703000c280b200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201c3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e024200341a8376a200341b8246a201a10b20720032d00a83722024108470d02200341b8246a201f10b407200341c0016a20032802b824220520032802c02410f50120032802c401210120032802c0012102024020032802bc24450d00200510390b02400240024002400240024020024101470d002001201a470d00200341b8246a201f10f80120032802b824220120032802c02410f90141ff01712102024020032802bc24450d00200110390b20024107460d05200341b8246a201a10f80120032802b824220520032802c02410f90141ff01712101024020032802bc24450d00200510390b20014107460d05200141064b0d0441012001742205412a710d02200541d40071450d04200241054b0d014101200274412a71450d01201a10a1021a201f10fa011a0c030b200341b8246a201a10b40720032802c024210120032802b82421022003201f3602a83720022001200341a8376a410410a30220032802bc24450d04200210390c040b200141054b0d024101200174412a71450d020b200241064b0d01410120027441d40071450d01201f10a1021a201a10fa011a0b201a201f10b5070b200341b8246a201f10b40720032802b824220220032802c02410fd0120032802bc24450d00200210390b20004200370308200020032800e02f360019200041186a41003a00002000411c6a200341e32f6a280000360000200042003703000c270b200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201c3a00b924200320023a00b824200341de246a200641046a2f01003b0100200341b8246a41226a2006280100360100200320053602e024200341b8246a10a2070d02200341a8026a201a10b607200341b8246a20032802a802220220032802b002220110b3070240024020032d00e8244102470d00200341b8246a41186a200341a8376a41186a290300370300200341b8246a41106a200341a8376a41106a290300370300200341b8246a41086a200341a8376a41086a290300370300200320032903a8373703b8242002200110fd010c010b200341a8376a41086a200341b8246a41186a22072903002204370300200341a8376a41106a200341b8246a41206a2903002208370300200341a8376a41186a200341e0246a2903002209370300200320032903c82422223703a837200320032800e9243602f8092003200341ec246a2800003600fb09200341b8246a41086a221d290300212320032903b824212420072009370300200341b8246a41106a220b2008370300201d2004370300200320223703b8244100210a200341003602e82f200342013703e02f200341e02f6a4100412010810120032802e02f220620032802e82f220c6a220520032903b824370000200541086a201d290300370000200541106a200b290300370000200541186a20072903003700002003200c41206a22053602e82f024020032802e42f220720056b410f4b0d00200341e02f6a2005411010810120032802e42f210720032802e02f210620032802e82f21050b200620056a221d2023370008201d20243700002003200541106a22053602e82f200341003a00e019024020072005470d00200341e02f6a2007410110810120032d00e019210a20032802e02f210620032802e82f21050b200620056a200a3a00002002200120032802e02f2206200541016a10a30220032802e42f450d00200610390b024020032802ac02450d0020032802a80210390b20004200370308200020032800e80e360019200041186a41003a00002000411c6a200341eb0e6a280000360000200042003703000c260b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201c41ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703c01d200320073a00bf1d2003201d3a00be1d2003200a3b01bc1d2003200b3a00bb1d2003200c3a00ba1d2003200d3b01b81d2003200e3a00b71d2003200f3a00b61d200320103b01b41d200320113a00b31d200320123a00b21d200320133b01b01d200320143a00af1d200320153a00ae1d200320163b01ac1d200320173a00ab1d200320183a00aa1d200320193b01a81d20020d02200341b8096a41186a2202200341a81d6a41186a290300370300200341b8096a41106a2201200341a81d6a41106a290300370300200341b8096a41086a2205200341a81d6a41086a290300370300200320032903a81d3703b809200341e0196a41186a22064200370300200341e0196a41106a22074200370300200341e0196a41086a221d4200370300200342003703e019200341d80a6a41a1ddc400410910f201201d200341d80a6a41086a290000370300200320032900d80a3703e019200341a00b6a41e0a9c500410e10f2012006200341a00b6a41086a290000370300200720032900a00b370300200341b8016a200341e0196a412010f50120032802bc01210620032802b8012107200341a8376a41186a2002290300370300200341a8376a41106a2001290300370300200341a8376a41086a2005290300370300200320032903b8093703a837200341b8246a2006410020071b220241d00f200241d00f4b1b220710b60720032802b824220220032802c02410a8022106024020032802bc24450d00200210390b4103210241192101410121054280808080900221040240024002402006450d004184bdc400ad21080c010b200341b8246a200710f80120032802b824221d20032802c02410f90141ff01712106024020032802bc24450d00201d10390b024020064107460d004184bdc400ad21080c010b200341b8246a200341a8376a4280a0e5b9c29101420010f70120032d00b82422024108460d0120032d00bb24210620032d00ba24210520032d00b924210120032902bc2422084280808080708321040b2004200842ffffffff0f838421040c040b200341b8246a41186a200341a8376a41086a2202290300370300200341b8246a41206a200341a8376a41106a2201290300370300200341e0246a2205200341a8376a41186a2206290300370300200342003703c02420034280a0e5b9c291013703b824200320032903a8373703c824200341003a00e8242007200341b8246a10b707200341d5246a2006290300370000200341cd246a2001290300370000200341c5246a200229030037000020052007360200200320032903a8373700bd24200341023a00bc242003410a3a00b824200341b8246a10fc01200341e80e6a41186a22024200370300200341e80e6a41106a22014200370300200341e80e6a41086a22054200370300200342003703e80e200341d80a6a41a1ddc400410910f2012005200341d80a6a41086a290000370300200320032900d80a3703e80e200341a00b6a41e0a9c500410e10f2012002200341a00b6a41086a290000370300200120032900a00b3703002003200741016a3602b824200341e80e6a4120200341b8246a410410a302200041186a41003a000020004200370308200020032800e02f3600192000411c6a200341e32f6a280000360000200042003703000c250b20032d00a937210120032d00aa37210520032902ac372104200020032d00ab373a0023200020053a0022200020013a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c240b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c230b410221020b200020063a0023200020053a0022200020013a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c210b200241086a2106200241046a28020021072001410c6a280200210a200141086a280200211d200228022821052002280200210202400240024002400240024002400240024002400240024002402001280204417f6a0e06000102030405000b200141106a280200210620052005280200417f6a220136020002400240200241ff01714101470d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200341b8246a2007201d200a200610ad0720032d00b82422024108460d0120032902bc24210420032d00bb24210120032d00ba24210520032d00b92421060c0d0b4102210220010d0b2005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d0b200510390c0b0b200341cc246a2006360200200341c8246a200a360200200341c4246a201d360200200341b8246a41086a2007360200200341003602bc24200341093a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c2c0b20052005280200417f6a220136020002400240200241ff01714101470d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200341b8246a2007201d10ae0720032d00b82422024108460d0120032902bc24210420032d00bb24210120032d00ba24210520032d00b92421060c0a0b4102210220010d082005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d08200510390c080b200341c4246a2007360200200341b8246a41086a201d360200200341013602bc24200341093a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c2b0b20052005280200417f6a220136020002400240200241ff01714101470d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b2007201d4622020d012007200a460d0141b4ddc60021024280808080c0032104410c21010c060b420021084102210220010d042005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d0420051039420021040c060b200341a8376a201d200a10a905200341b8246a20032802a837220520032802b03710aa0520032d00ec242101024020032802ac37450d00200510390b0240200141ff01714102470d0041d8ddc60021024280808080b0032104410d21010c050b200341a8376a201d200a10b807200341b8246a20032802a837220520032802b03710e402024020032802b8242201450d0020032802bc24450d00200110390b024020032802ac37450d00200510390b02402001450d0041fcddc60021024280808080f0032104410e21010c050b200341b8246a201d200a10b80720032802b824220120032802c02441f4ddca00410010a302024020032802bc24450d00200110390b200341b8096a41186a22014200370300200341b8096a41106a22054200370300200341b8096a41086a22064200370300200342003703b809200341a8026a41e0edc600410410f2012006200341a8026a41086a220b290000370300200320032900a8023703b809200341a8026a4190ddc700411c10f2012001200b290000370300200520032900a802370300200341003602b037200342013703a837200341a8376a4100410410810120032802a837220620032802b03722016a201d3600002003200141046a22013602b037024020032802ac3720016b41034b0d00200341a8376a2001410410810120032802a837210620032802b03721010b200341a8376a41086a2205200141046a220b360200200620016a200a360000200341b8246a41086a2201200b360200200320032903a8373703b824200341b8096a4120200341b8246a10ad05200341a81d6a41186a22064200370300200341a81d6a41106a220b4200370300200341a81d6a41086a220c4200370300200342003703a81d200341d80a6a41f1b5c900410d10f201200c200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a418bb6c900410c10f2012006200341a00b6a41086a290000370300200b20032900a00b370300200341b8246a200341a81d6a412010b202200328028825210620032802c825210b20054100360200200341b8246a410c6a220c200a3602002001201d360200200342013703a837200320073602bc24200341093a00b824200341003a00e019200341a8376a4100410110810120032802a8372005280200220d6a20032d00e0193a00002005200d41016a360200200341b8246a200341a8376a10e904200341b8246a10d20320012005280200360200200320032903a8373703b82441002006200b4102461b200a201d20021b200341b8246a109f041a200341b8246a41106a200a360200200c201d36020020012007360200200341023602bc24200341093a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800e02f3600192000411c6a200341e02f6a41036a280000360000200042003703000c2a0b2003201d3602a837200341b8246a41086a2006290200370300200341b8246a41106a200641086a290200370300200341b8246a41186a200641106a290200370300200341b8246a41206a200641186a290200370300200320073602bc24200320023602b824200320053602e0240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2a0b200341a8376a10b907200041186a41003a000020004200370308200042003703000c290b200341b8246a41086a2006290200370300200341b8246a41106a200641086a290200370300200341b8246a41186a200641106a290200370300200341b8246a41206a2201200641186a290200370300200320073602bc24200320023602b824200320053602e0240240200341b8246a10a2070d00200341a81d6a41186a22024200370300200341b81d6a22054200370300200341a81d6a41086a22064200370300200342003703a81d200341d80a6a41f1b5c900410d10f2012006200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a418bb6c900410c10f2012002200341a00b6a41086a290000370300200520032900a00b370300200341b8246a200341a81d6a412010b202420020032903d02420032802c82541024622021b4200200129030020021b410020032802942520021b10ba07200041186a41003a000020004200370308200042003703000c290b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c280b200341b8246a41086a2006290200370300200341b8246a41106a200641086a290200370300200341b8246a41186a200641106a290200370300200341b8246a41206a200641186a290200370300200320073602bc24200320023602b824200320053602e0240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c280b10bb0720004200370308200041186a41003a0000200042003703000c270b420021040c010b2002ad2108410321020b200020013a0022200041173a002120004200370308200041206a20023a0000200041186a41003a0000200041246a20044280808080f00383200884370200200042013703000c240b0b200020013a0023200020053a0022200020063a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c220b0b200020013a0023200020053a0022200020063a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c200b20012802042101200341b8246a41286a200241286a280200360200200341b8246a41206a2205200241206a290200370300200341b8246a41186a2206200241186a290200370300200341b8246a41106a2207200241106a290200370300200341b8246a41086a221d200241086a290200370300200320022902003703b8240240200341b8246a10a507450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c200b200341023a00b824200320013602bc24200341a8376a200341b8246a10f1052005200341a8376a41206a2802003602002006200341a8376a41186a2903003703002007200341a8376a41106a290300370300201d200341a8376a41086a290300370300200320032903a8373703b824200341b8246a108105200041186a41003a000020004200370308200042003703000c1f0b200141146a280200211d200141106a28020021062001410c6a2802002107200141086a2802002105024002400240024002402001280204417f6a0e050001020304000b2003201d3602b002200320063602ac02200320073602a802200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a2070d00200341e02f6a200510bc07200341b8246a20032802e02f220120032802e82f10ab02024020032d00b82422024101470d00200341c0376a200341d1246a290000370300200341b8376a200341c9246a290000370300200341b0376a200341c1246a290000370300200320032900b9243703a8370b024020032802e42f450d00200110390b0240024020024101460d00200341d0096a4200370300200341c8096a4200370300200341c0096a4200370300200342003703b8090c010b200341b8096a41186a200341a8376a41186a290300370300200341b8096a41106a200341a8376a41106a290300370300200341b8096a41086a200341a8376a41086a290300370300200320032903a8373703b8090b200341a81d6a2007201d109c01200341a8376a41186a220a200341a81d6a41186a2202290300370300200341a8376a41106a220b200341a81d6a41106a2201290300370300200341a8376a41086a220c200341a81d6a41086a221d290300370300200320032903a81d3703a837200341a8376a200341a8026a10bd071a200341b8246a41186a220d200a290300370300200341b8246a41106a220e200b290300370300200341b8246a41086a220a200c290300370300200320032903a8373703b824200341e02f6a200510bc0720032802e02f220b20032802e82f200341b8246a10cf02024020032802e42f450d00200b10390b2002420037030020014200370300201d4200370300200342003703a81d200341d80a6a41b9fec300410610f201201d200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f2012002200341a00b6a41086a290000370300200120032900a00b370300200341a8016a200341a81d6a412010f50120032802ac01210220032802a8012101200d200341b8096a41186a290300370300200e200341b8096a41106a290300370300200a200341b8096a41086a290300370300200320032903b8093703b82420052002410020011b22022002200341b8246a10be071a200a2005360200200341003602bc24200341083a00b824200341b8246a10fc0102402006450d00200710390b20004200370308200020032800e80e360019200041186a41003a00002000411c6a200341eb0e6a280000360000200042003703000c230b02402006450d00200710390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c220b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a2070d002003201d3602b037200320063602ac37200320073602a837200341b8246a200510b90220032802b824220220032802c024200341a8376a10bf07024020032802bc24450d00200210390b02402006450d00200710390b200341083a00b824200341b8246a41086a2005360200200341013602bc24200341b8246a10fc01200041186a41003a000020004200370308200042003703000c220b02402006450d00200710390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c210b200141186a2802002101200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0002402006450d00200710390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c210b2003201d3602c024200320063602bc24200320073602b8242005200341b8246a200110a505200341083a00b824200341b8246a41086a2005360200200341023602bc24200341b8246a10fc01200041186a41003a000020004200370308200042003703000c200b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a2070d00200341a81d6a41186a22024200370300200341b81d6a22014200370300200341a81d6a41086a220a4200370300200342003703a81d200341d80a6a41b9fec300410610f201200a200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f2012002200341a00b6a41086a290000370300200120032900a00b370300200341b0016a200341a81d6a412010f50120032802b401210220032802b00121012003201d3602c024200320063602bc24200320073602b8242005200341b8246a2002410020011b10ae05200341b8246a41086a2005360200200341033602bc24200341083a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c200b02402006450d00200710390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c1f0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b82402400240200341b8246a10a2070d00200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22064200370300200342003703a81d200341d80a6a4192d1c800410b10f2012006200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41c0d3c800411310f2012002200341a00b6a41086a290000370300200120032900a00b370300200341a0016a200341a81d6a412010f5014100210b200341e02f6a417f20032802a401410020032802a0011b220241016a220120012002491b220c10c007200341b8246a20032802e02f20032802e82f109c020240024020032802b824221d0d00200342003702ac37200341002802ccdd4a221d3602a8374100210a0c010b20032902bc2421042003201d3602a837200320043702ac372004422088a7210a2004a7210b0b4100210202400240200a450d00200a2106200a21010340024002402005201d200641017620026a22064102746a28020022074d0d00200641016a21020c010b2006210120052007460d030b200120026b2106200120024b0d000b200a2002490d030b0240200a200b470d00200341a8376a200b10b70120032802a837211d0b201d20024102746a220141046a2001200a20026b41027410c40a1a200120053602002003200a41016a3602b0370b200341b8246a41086a200341a8376a41086a280200360200200320032903a83722043703b82420032802e82f210120032802e02f2102024002402004a722060d002002200110fd010c010b200320013602ac02200320023602a802200341b8246a200341a8026a10970320032802bc2441ffffffff0371450d00200610390b024020032802e42f450d00200210390b200341c4246a200c360200200341083a00b824200341b8246a41086a2005360200200341043602bc24200341b8246a10fc01200041186a41003a000020004200370308200020032800e80e3600192000411c6a200341eb0e6a280000360000200042003703000c200b200341e0196a41026a200341f0206a41026a2d000022023a0000200320032f00f02022013b01e019200041206a41023a0000200020013b0021200041236a20023a0000200041186a41003a000020004200370308200042013703000c1f0b2002200a1044000b200341a8026a41286a200241286a280200360200200341a8026a41206a200241206a290200370300200341a8026a41186a200241186a290200370300200341a8026a41106a200241106a290200370300200341a8026a41086a200241086a290200370300200320022902003703a802200341b8246a200141046a41940110c30a1a200341a8376a200341a8026a200341b8246a10e503200341e02f6a41086a2102200341a8376a41086a2101024020032903a8374201520d0020022001290300370300200241206a2205200141206a290300370300200241186a2206200141186a290300370300200241106a2207200141106a290300370300200241086a221d200141086a290300370300200041286a2005290300370300200041206a2006290300370300200041186a2007290300370300200041106a201d29030037030020002002290300370308200042013703000c1e0b20022001290300370300200241106a2205200141106a290300370300200241086a2206200141086a290300370300200041186a2005290300370300200041106a200629030037030020002002290300370308200042003703000c1d0b200141186a2903002108200141106a29030021042001410c6a28020021050240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a280200417f6a0e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627000b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c440b200510c107200041186a41003a000020004200370308200042003703000c430b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c430b200510c207200041186a41003a000020004200370308200042003703000c420b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c420b200510c307200041186a41003a000020004200370308200042003703000c410b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c410b200510c407200041186a41003a000020004200370308200042003703000c400b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c400b200510c507200041186a41003a000020004200370308200042003703000c3f0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c3f0b200510c607200041186a41003a000020004200370308200042003703000c3e0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c3e0b200510c707200041186a41003a000020004200370308200042003703000c3d0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c3d0b200510c807200041186a41003a000020004200370308200042003703000c3c0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8244102210202400240200341b8246a10a2070d0020050d01410321020b2000410e3b002120004200370308200041206a20023a0000200041186a41003a0000200041246a419cb5c900ad4280808080f00184370200200042013703000c3c0b200510c907200041186a41003a000020004200370308200042003703000c3b0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8244102210202400240200341b8246a10a2070d0020050d01410321020b2000410e3b002120004200370308200041206a20023a0000200041186a41003a0000200041246a419cb5c900ad4280808080f00184370200200042013703000c3b0b200510ca07200041186a41003a000020004200370308200042003703000c3a0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8244102210202400240200341b8246a10a2070d0020050d01410321020b2000410e3b002120004200370308200041206a20023a0000200041186a41003a0000200041246a419cb5c900ad4280808080f00184370200200042013703000c3a0b200510cb07200041186a41003a000020004200370308200042003703000c390b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c390b200510cc07200041186a41003a000020004200370308200042003703000c380b200320043e02ac37200320053602a837200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c380b200341a8376a10cd07200041186a41003a000020004200370308200042003703000c370b200320043e02ac37200320053602a837200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c370b200341a8376a10ce07200041186a41003a000020004200370308200042003703000c360b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c360b200510cf07200041186a41003a000020004200370308200042003703000c350b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c350b200510d007200041186a41003a000020004200370308200042003703000c340b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c340b200510d107200041186a41003a000020004200370308200042003703000c330b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c330b200510d207200041186a41003a000020004200370308200042003703000c320b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8244102210202400240200341b8246a10a2070d0020050d01410321020b2000410e3b002120004200370308200041206a20023a0000200041186a41003a0000200041246a419cb5c900ad4280808080f00184370200200042013703000c320b200510d307200041186a41003a000020004200370308200042003703000c310b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c310b200510d407200041186a41003a000020004200370308200042003703000c300b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c300b200510d507200041186a41003a000020004200370308200042003703000c2f0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2f0b200510d607200041186a41003a000020004200370308200042003703000c2e0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2e0b200510d707200041186a41003a000020004200370308200042003703000c2d0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2d0b200510d807200041186a41003a000020004200370308200042003703000c2c0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2c0b200510d907200041186a41003a000020004200370308200042003703000c2b0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2b0b200510da07200041186a41003a000020004200370308200042003703000c2a0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c2a0b200410db07200041186a41003a000020004200370308200042003703000c290b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c290b200510dc07200041186a41003a000020004200370308200042003703000c280b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c280b200510dd07200041186a41003a000020004200370308200042003703000c270b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c270b200510de07200041186a41003a000020004200370308200042003703000c260b200320043703a837200320083703b037200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c260b200341a8376a10df07200041186a41003a000020004200370308200042003703000c250b200320043703a837200320083703b037200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c250b200341a8376a10e007200041186a41003a000020004200370308200042003703000c240b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c240b200510e107200041186a41003a000020004200370308200042003703000c230b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c230b200510e207200041186a41003a000020004200370308200042003703000c220b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c220b200510e307200041186a41003a000020004200370308200042003703000c210b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c210b200510e407200041186a41003a000020004200370308200042003703000c200b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c200b200510e507200041186a41003a000020004200370308200042003703000c1f0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c1f0b200510e607200041186a41003a000020004200370308200042003703000c1e0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c1e0b200510e707200041186a41003a000020004200370308200042003703000c1d0b200341b8246a41286a200241286a280200360200200341b8246a41206a200241206a290200370300200341b8246a41186a200241186a290200370300200341b8246a41106a200241106a290200370300200341b8246a41086a200241086a290200370300200320022902003703b8240240200341b8246a10a207450d0020004200370308200041186a41003a0000200041206a41023a0000200042013703000c1d0b200510e807200041186a41003a000020004200370308200042003703000c1c0b200141246a280200210d2001411c6a2802002105200141186a2802002106200141146a280200211d200141106a280200210f2001410c6a280200210a200141086a280200210c20022d0001210e20022d00002101200228022822022002280200417f6a2207360200024002400240024020010d00024020070d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b4102210b200e41ff01714102460d0142002104420021080c030b420021044102210b20070d012002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d0120021039420021080c020b200341c01d6a22024200370300200341b81d6a22014200370300200341a81d6a41086a22074200370300200342003703a81d200341d80a6a418cf9c800410710f2012007200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a4184b4c200410c10f2012002200341a00b6a41086a290000370300200120032900a00b37030020034198016a200341a81d6a412010f501200341b8246a200328029c0141002003280298011b220b200d10e90720032802b824220220032802c02410a8022107024020032802bc24450d00200210390b200341a8026a10c30402402007417f7320032802a8022201200d4105746a410020032802b002200d4b1b2202410047710d0041909cc600ad210441fd9bc600ad2109024020032802ac0241ffffff3f71450d00200110390b4280808080b0024280808080a00120071b21082009200420071b21044103210b0c020b200241086a2900002104200241106a290000210820022900002109200341b8096a41186a200241186a2900002222370300200341b8096a41106a2008370300200341b8096a41086a2004370300200320093703b809200341d5246a2022370000200341cd246a2008370000200341c5246a2004370000200320093700bd24200341003a00bc24200341063a00b824200341b8246a10fc01200341003602e82f200342013703e02f200c200f200341e02f6a10d601200341e02f6a200510d20102402005450d00201d2005410c6c6a2101201d210203402002280200200241086a280200200341e02f6a10d6012002410c6a22022001470d000b0b200341a8376a200b200d10e90720032802e82f220241046a2201417f4c0d0620032802e02f210b20032802b037210d20032802a837210e0240024002400240024002402001450d00200110382207450d0b200341003602c024200320013602bc24200320073602b824200241c000490d02200241808001490d032002418080808004490d04410021010c010b200341003602c024200342013703b824200341b8246a4100410110810120032802b824210720032802c02421010b200720016a41033a00002003200141016a22013602c024024020032802bc2420016b41034b0d00200341b8246a2001410410810120032802c02421010b20032802b82420016a2002360000200141046a21010c030b2003200241027422013a00e019200720013a0000410121010c020b200241027441017221104100210f0240200141014b0d00200341b8246a4100410210810120032802b824210720032802c024210f0b2007200f6a20103b0000200f41026a21010c010b20072002410274410272360000410421010b200320013602c024024020032802bc2420016b20024f0d00200341b8246a2001200210810120032802c02421010b20032802b824220720016a200b200210c30a1a2003200120026a22023602c024200e200d2007200210a302024020032802bc24450d0020032802b82410390b024020032802ac37450d0020032802a83710390b024020032802e42f450d0020032802e02f10390b024020032802ac0241ffffff3f71450d0020032802a80210390b0240200a450d00200c10390b02402005450d002005410c6c2101201d210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b02402006450d002006410c6c450d00201d10390b20004200370308200020032800e80e360019200041186a41003a00002000411c6a200341eb0e6a280000360000200042003703000c1d0b420021080b0240200a450d00200c10390b02402005450d002005410c6c2101201d210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b02402006450d002006410c6c450d00201d10390b200020073a00222000410b3a002120004200370308200041246a2008200484370200200041206a200b3a0000200041186a41003a0000200042013703000c1b0b2001411c6a2802002121200141186a280200211d200141146a2802002107200141106a280200210a2001410c6a280200211b200141086a2802002105200341a8376a200141206a41800210c30a1a2002411a6a2901002104200241196a2d0000210b200241186a2d0000210c200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d0000211c200241026a2f0100211f2002280228210120022d0001211e20022d000021060240024002402005417f6a0e03000102000b20012001280200417f6a220236020002400240200641ff01710d00024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b201e41ff017141014721050c010b4101210520020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b200320043703c01d2003200b3a00bf1d2003200c3a00be1d2003200d3b01bc1d2003200e3a00bb1d2003200f3a00ba1d200320103b01b81d200320113a00b71d200320123a00b61d200320133b01b41d200320143a00b31d200320153a00b21d200320163b01b01d200320173a00af1d200320183a00ae1d200320193b01ac1d2003201a3a00ab1d2003201c3a00aa1d2003201f3b01a81d0240024002402005450d00200341f82f6a41003a000020034180306a41023a0000200342003703e82f0240201d450d00201d410c6c2101200a210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b2007450d012007410c6c450d01200a10390c010b200341b8096a41186a200341a81d6a41186a2903002204370300200341b8096a41106a200341a81d6a41106a2903002208370300200341b8096a41086a200341a81d6a41086a2903002209370300200320032903a81d22223703b809200341810f6a2004370000200341f90e6a2008370000200341f10e6a2009370000200320223700e90e200341013a00e80e200341b8246a200341a8376a41800210c30a1a200341fc206a201d360200200341f0206a41086a200736020020032021360280212003200a3602f4202003201b3602f020200341e02f6a200341e80e6a200341b8246a200341f0206a10ea0720032903e02f4201520d010b200341a8026a41286a200341e02f6a41286a2903002204370300200341a8026a41206a200341e02f6a41206a2903002208370300200341a8026a41186a200341e02f6a41186a2903002209370300200341a8026a41106a200341e02f6a41106a2903002222370300200320032903e82f22233703b002200041286a2004370300200041206a2008370300200041186a2009370300200041106a202237030020002023370308200042013703000c1d0b200341a8026a41186a200341e02f6a41186a2903002204370300200341a8026a41106a200341e02f6a41106a2903002208370300200320032903e82f22093703b002200041186a2004370300200041106a200837030020002009370308200042003703000c1c0b20012001280200417f6a2202360200024002400240200641ff01710d00024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b201e41ff01714102470d01200341e80e6a41017210be04200341013a00e80e200341b8246a200341a8376a41800210c30a1a200341fc206a201d360200200341f8206a200736020020032021360280212003200a3602f4202003201b3602f020200341e02f6a200341e80e6a200341b8246a200341f0206a10ea0720032903e02f4201510d02200341a8026a41186a200341e02f6a41186a2903002204370300200341a8026a41106a200341e02f6a41106a2903002208370300200320032903e82f22093703b002200041186a2004370300200041106a200837030020002009370308200042003703000c1e0b20020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b200341f82f6a41003a000020034180306a41023a0000200342003703e82f0240201d450d00201d410c6c2101200a210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b2007450d002007410c6c450d00200a10390b200341a8026a41286a200341e02f6a41286a2903002204370300200341a8026a41206a200341e02f6a41206a2903002208370300200341a8026a41186a200341e02f6a41186a2903002209370300200341a8026a41106a200341e02f6a41106a2903002222370300200320032903e82f22233703b002200041286a2004370300200041206a2008370300200041186a2009370300200041106a202237030020002023370308200042013703000c1b0b200341b8246a411a6a2004370100200341b8246a41196a200b3a0000200341b8246a41186a200c3a0000200341b8246a41166a200d3b0100200341b8246a41156a200e3a0000200341b8246a41146a200f3a0000200341b8246a41126a20103b0100200341b8246a41116a20113a0000200341b8246a41106a20123a0000200341b8246a410e6a20133b0100200341b8246a410d6a20143a0000200341b8246a410c6a20153a0000200341b8246a410a6a20163b0100200341b8246a41096a20173a0000200341b8246a41086a20183a0000200320193b01be242003201a3a00bd242003201c3a00bc242003201f3b01ba242003201e3a00b924200320063a00b824200341b8246a41266a200241266a2f01003b0100200341b8246a41226a200241226a280100360100200320013602e0240240200341b8246a10a2070d00200341a81d6a41186a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41caf8c500410f10f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41d9f8c500410710f2012002200341a00b6a41086a290000370300200120032900a00b370300410810382202450d032002200a3600042002201b360000200341a81d6a41202002410810a30220021039200041186a41003a000020004200370308200020032800e02f3600192000411c6a200341e32f6a280000360000200042003703000c1b0b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c1a0b2002411a6a2901002104200241196a2d00002106200241186a2d00002107200241166a2f0100211d200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f010021182002280228210520022d0001211920022d0000210202400240024020012d00044102460d00200141ec016a280100211a200141e8016a280100211c200341a8026a200141056a41e10110c30a1a20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201941ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703d009200320063a00cf09200320073a00ce092003201d3b01cc092003200a3a00cb092003200b3a00ca092003200c3b01c8092003200d3a00c7092003200e3a00c6092003200f3b01c409200320103a00c309200320113a00c209200320123b01c009200320133a00bf09200320143a00be09200320153b01bc09200320163a00bb09200320173a00ba09200320183b01b80902402002450d004200210841022101420021040c030b200341f0206a41186a200341b8096a41186a2903002204370300200341f0206a41106a200341b8096a41106a290300370300200341f0206a41086a200341b8096a41086a290300370300200320032903b80922083703f020200341e80e6a41096a200341f0206a41096a290000370000200341e80e6a41116a200341f0206a41116a290000370000200341e80e6a41186a2004370000200320032900f1203700e90e200320083c00e80e200341a8376a200341f0206a10dd02200341b8246a20032802a837220220032802b03710e10220034188256a280200210520032903b8242108024020032802ac37450d00200210390b42808080809001210441f4a1c20021014104210220084201520d012005450d01200341e02f6a200341a8026a41e10110c30a1a200341a81d6a200341e80e6a10b604200341b8246a20032802a81d220120032802b01d10cf0441002102024020032d00b8244101470d00200341a8376a410172200341b8246a41017241e10110c30a1a410121020b200320023a00a837024020032802ac1d450d00200110390b200341b8246a410172210141642102034020034190016a200341e02f6a200241b9fec3006a280000220510ec0420032003290390013702e419200320053602e01920034198166a200341e0196a10b704200341b8246a200328029816220520032802a01610cc0202400240024020032d00b8244101470d00200341a81d6a41186a2206200141186a290000370300200341a81d6a41106a2207200141106a290000370300200341a81d6a41086a221d200141086a290000370300200320012900003703a81d0240200328029c16450d00200510390b200341b8246a41186a2006290300370300200341b8246a41106a2007290300370300200341b8246a41086a201d290300370300200320032903a81d3703b824200341b8246a200341e80e6a412010c60a0d010c020b200328029c16450d01200510390c010b4280808080d001210441d0a1c2002101410221020c030b200241046a22020d000b200341a8376a410172210a41642102034020034188016a200341e02f6a200241b9fec3006a280000220110ec04200328028c01210520032802880121060240024020032d00a8374101470d0020034180016a200a200110ec04200328028001210702402005200328028401221d470d0020062007200510c60a450d020b2003201d3602c024200320073602bc24200320013602b824200341a81d6a200341b8246a10b70420032802a81d220720032802b01d10fd0120032802ac1d450d00200710390b200320053602c024200320063602bc24200320013602b824200341a81d6a200341b8246a10b70420032802a81d220120032802b01d200341e80e6a10d20220032802ac1d450d00200110390b200241046a22020d000b200341a81d6a200341e80e6a10b60420032802b01d210a20032802a81d211d200341003602c024200342013703b824200341b8246a4100412010810120032802bc24210120032802b824220220032802c02422066a220520032903e02f370000200541086a200341e02f6a41086a290300370000200541106a200341e02f6a41106a290300370000200541186a200341e02f6a41186a2903003700002003200641206a22063602c024200341e02f6a41206a21050240200120066b411f4b0d00200341b8246a2006412010810120032802bc24210120032802b824210220032802c02421060b200220066a22072005290000370000200741186a200541186a290000370000200741106a200541106a290000370000200741086a200541086a2900003700002003200641206a22063602c024200341a0306a21050240200120066b411f4b0d00200341b8246a2006412010810120032802bc24210120032802b824210220032802c02421060b200220066a22072005290000370000200741186a200541186a290000370000200741106a200541106a290000370000200741086a200541086a2900003700002003200641206a22063602c024200341c0306a21050240200120066b411f4b0d00200341b8246a2006412010810120032802bc24210120032802b824210220032802c02421060b200220066a22072005290000370000200741186a200541186a290000370000200741106a200541106a290000370000200741086a200541086a2900003700002003200641206a22063602c024200341e0306a21050240200120066b411f4b0d00200341b8246a2006412010810120032802bc24210120032802b824210220032802c02421060b200220066a22072005290000370000200741186a200541186a290000370000200741106a200541106a290000370000200741086a200541086a2900003700002003200641206a22063602c02420034180316a21050240200120066b411f4b0d00200341b8246a2006412010810120032802bc24210120032802b824210220032802c02421060b200220066a22072005290000370000200741186a200541186a290000370000200741106a200541106a290000370000200741086a200541086a2900003700002003200641206a22073602c024200341a0316a21050240200120076b41204b0d00200341b8246a2007412110810120032802bc24210120032802b824210220032802c02421070b200220076a22062005290000370000200641206a200541206a2d00003a0000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000201d200a2002200741216a10a30202402001450d00200210390b024020032802ac1d450d00201d10390b024020032d00a8370d00200341e02f6a200341f0206a10dd02200341b8246a20032802e02f220220032802e82f220110e102024020032903b8244201520d00200341a8376a200341c0246a220641c40010c30a1a20034188256a2207280200221d450d002003418c256a220a280200210b20034184256a220c28020021052006200341a8376a41c40010c30a2106200a200b3602002007201d360200200c417f200541016a220720072005491b360200200342013703b82420022001200610e2020b20032802e42f450d00200210390b0240201a450d00201c10390b20004200370308200020032800d012360019200041186a41003a00002000411c6a200341d3126a280000360000200042003703000c1c0b20052005280200417f6a220136020002400240200241ff01710d00024020010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201941ff017141014721020c010b4101210220010d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22012001280200417f6a220136020020010d00200510390b200320043703c01d200320063a00bf1d200320073a00be1d2003201d3b01bc1d2003200a3a00bb1d2003200b3a00ba1d2003200c3b01b81d2003200d3a00b71d2003200e3a00b61d2003200f3b01b41d200320103a00b31d200320113a00b21d200320123b01b01d200320133a00af1d200320143a00ae1d200320153b01ac1d200320163a00ab1d200320173a00aa1d200320183b01a81d02400240024020020d00200341e80e6a41186a200341a81d6a41186a2903002204370300200341e80e6a41106a200341a81d6a41106a290300370300200341e80e6a41086a200341a81d6a41086a290300370300200320032903a81d22083703e80e200341a8026a41096a200341e80e6a41096a290000370000200341a8026a41116a200341e80e6a41116a290000370000200341a8026a41186a2004370000200320032900e90e3700a902200320083c00a802200341f0206a200341a8026a10b604200341b8246a20032802f020220120032802f820220510cf04410021020240024020032d00b82422060d000c010b2001200510fd0120064101470d0020032d00b9242105200341e02f6a200341b8246a41027241e00110c30a1a410121020b024020032802f420450d00200110390b0240024002402002450d00200341a8376a410172200341e02f6a41e00110c30a1a200320053a00a837200341f8006a200341a8376a41e7e485f30610ec04200320032903783702bc24200341e7e485f3063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341f0006a200341a8376a41e2c289ab0610ec04200320032903703702bc24200341e2c289ab063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341e8006a200341a8376a41e9dabdf30610ec04200320032903683702bc24200341e9dabdf3063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341e0006a200341a8376a41f0c2c98b0610ec04200320032903603702bc24200341f0c2c98b063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341d8006a200341a8376a41e1e69df30610ec04200320032903583702bc24200341e1e69df3063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341d0006a200341a8376a41e1ea91cb0610ec04200320032903503702bc24200341e1ea91cb063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341c8006a200341a8376a41e2ca95b30610ec04200320032903483702bc24200341e2ca95b3063602b824200341e02f6a200341b8246a10b70420032802e02f220220032802e82f10fd01024020032802e42f450d00200210390b200341f0206a200341e80e6a10dd02200341b8246a20032802f020220220032802f820220110e10220032903b8244201520d01200341e02f6a200341c0246a41c40010c30a1a20034188256a290300210420034184256a2802002205450d022005417f6a21050c050b410321020c030b200341e02f6a410041c40010c50a1a420021040b4100210541002802a8fe4a450d024100210541002802a4fe4a210241002802a0fe4a210141002802acfe4a2106200341d4246a41f4ddca00360200200341c8246a4201370300200341ec246a41fcb2c900ad4280808080d00b84370200200341e0246a41d3bfc900ad4280808080c00184370300200341d8246a4200370300200341c0246a410f360200200341f8dbc0003602c424200342818080809097013702f424200341003602e824200341c4bfc9003602bc24200341013602b824200141f4ddca00200641024622061b200341b8246a200241b0a7c00020061b28021011030020032802f820210120032802f02021020c020b410221020b20004189063b002120004200370308200041206a20023a0000200041186a41003a0000200041fda1c200ad4280808080e00084370024200042013703000c1c0b200341c0246a200341e02f6a41c40010c30a210620034188256a200437030020034184256a2005360200200342013703b82420022001200610e202024020032802f420450d00200210390b200041186a41003a000020004200370308200020032800e0193600192000411c6a200341e3196a280000360000200042003703000c1b0b2001ad2108410321010b0240201a450d00201c10390b200020023a0022200041093a002120004200370308200041206a20013a0000200041186a41003a0000200020044280808080f00183200884370024200042013703000c190b2001410c6a2802002105200141086a280200211d20022d0001210b20022d0000210620012802042107200228022822022002280200417f6a22013602000240024020060d00024020010d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b4102210a200b41ff01714102470d042005410b490d014103210a4102210c4186a4c200210d410d210b0c050b4102210a20010d032002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d03200210390c030b200341c01d6a22014200370300200341b81d6a220c4200370300200341a81d6a41086a22024200370300200342003703a81d200341d80a6a41edfec300410a10f2012002200341d80a6a41086a2206290000370300200320032900d80a3703a81d200341a00b6a41d8a6c800410c10f2012001200341a00b6a41086a220b290000370300200c20032900a00b3703000240200341a81d6a10c002220d41ff01714102460d004103210a200d4101710d030b20014200370300200c420037030020024200370300200342003703a81d200341d80a6a41edfec300410a10f20120022006290000370300200320032900d80a3703a81d200341a00b6a41d8a6c800410c10f201200c41086a220a200b290000370000200c20032900a00b370000200341013a00e019200341a81d6a4120200341e0196a410110a30220014200370300200c420037030020024200370300200342003703a81d200341d80a6a41b9fec300410610f20120022006290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f201200a200b290000370000200c20032900a00b370000200341c0006a200341a81d6a412010f5012003280244410020032802401b210620034198166a10d204024020032802a0162201200328029c16470d0020034198166a200110e00320032802a01621010b2003280298162212200141c4006c6a220241003a0000200220032f01880a3b000120022006360204200220032902b824370208200241036a2003418a0a6a2d00003a0000200241106a200341b8246a41086a2215290200370200200241186a200341b8246a41106a2216290200370200200241206a200341b8246a41186a290200370200200241286a200341b8246a41206a290200370200200241306a200341b8246a41286a290200370200200241386a200341b8246a41306a290200370200200241c0006a200341b8246a41386a2802003602002003200141016a220d3602a0162007200541f0006c6a210e02400240024020050d00200721050c010b200341f60e6a2110200341a8376a410172210f200341a81d6a41186a21172007210503402005220241f0006a210520022802042211450d012002280200210a200320113602bc242003200a3602b8242015200241086a41e80010c30a1a20174200370300200341a81d6a41106a4200370300200341a81d6a41086a22024200370300200342003703a81d200341d80a6a41b9fec300410610f2012002200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41b0eec900410610f201200c41086a200341a00b6a41086a290000370000200c20032900a00b370000200341386a200341a81d6a412010f50120032802382102200328023c2101200341a8026a200341b8246a10c102410c210b02400240200a0d0041a3a4c200210d4103210c0c010b0240200a2001410020021b22024d0d0041afa4c200210d4104210c0c010b200341a81d6a200a417f6a10ef02200341a8376a20032802a81d220120032802b01d10ab020240024020032d00a8374101460d00200341e02f6a41186a4200370300200341e02f6a41106a4200370300200341e02f6a41086a4200370300200342003703e02f0c010b200341e02f6a41186a200f41186a290000370300200341e02f6a41106a200f41106a290000370300200341e02f6a41086a200f41086a2900003703002003200f2900003703e02f0b024020032802ac1d450d00200110390b0240200341e02f6a2016412010c60a450d004112210b41bba4c200210d4100210c0c010b0240200a20024f0d004108210b41cda4c200210d4106210c0c010b02400240200d450d00200d41c4006c2101201221020340024020022d00004101470d0041012106200241016a200341a8026a412010c60a450d030b200241c4006a2102200141bc7f6a22010d000b0b410021060b200341a81d6a200a10ef02200341a8376a20032802a81d220220032802b01d10ab020240024020032d00a8374101460d00200341e02f6a41186a4200370300200341e02f6a41106a4200370300200341e02f6a41086a4200370300200342003703e02f0c010b200341e02f6a41186a200f41186a290000370300200341e02f6a41106a200f41106a290000370300200341e02f6a41086a200f41086a2900003703002003200f2900003703e02f0b024020032802ac1d450d00200210390b02402006200341e02f6a200341a8026a412010c60a4572450d004114210b41d5a4c200210d4105210c0c010b201020032902e019370100201041086a200341e0196a41086a2201290200370100201041106a200341e0196a41106a22062f01003b0100200341f0206a41086a2202200341e80e6a41086a290300370300200341f0206a41106a220a200341e80e6a41106a290300370300200341f0206a41186a220b200341e80e6a41186a290300370300200320032903e80e3703f020200341e02f6a200341b8246a10c102200341a8376a41186a4200370300200341a8376a41106a4200370300200341a8376a41086a4200370300200342003703a837200341a8376a10d304200341b8096a41086a2211200341e02f6a41086a290300370300200341b8096a41106a2213200341e02f6a41106a290300370300200341b8096a41186a2214200341e02f6a41186a290300370300200120022903003703002006200a290300370300200341e0196a41186a220a200b290300370300200320032903e02f3703b809200320032903f0203703e0190240200d200328029c16470d0020034198166a200d10e003200328029816211220032802a016210d0b2012200d41c4006c6a220241013a0000200220032903b809370001200241096a2011290300370000200241116a2013290300370000200241196a2014290300370000200241003a0021200220032903e0193700222002413a6a200a290300370000200241326a20062903003700002002412a6a2001290300370000200320032802a01641016a220d3602a01620032802bc242106024020032802c4242202450d00200241246c21012006210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b024020032802c0242202450d00200241246c450d00200610390b2005200e470d010c030b0b20032d00ed0e2106024020032802c4242202450d00200241246c21012011210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b024020032802c0242202450d00200241246c450d00201110390b0240200e2005460d00034002402005220a410c6a2802002201450d00200a2802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200a41f0006a21050240200a41086a2802002202450d00200241246c450d00200a28020410390b2005200e470d000b0b0240201d450d00201d41f0006c450d00200710390b0240200328029c162202450d00200241c4006c450d0020032802981610390b4103210a0c070b200e2005460d000340024020052206410c6a2802002201450d0020062802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200641f0006a21050240200641086a2802002202450d00200241246c450d00200628020410390b2005200e470d000b0b0240201d450d00201d41f0006c450d00200710390b200341c01d6a4200370300200341b81d6a4200370300200341a81d6a41086a22024200370300200342003703a81d200341d80a6a41edfec300410a10f2012002200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41f7a5c800410610f201200c41086a200341a00b6a41086a290000370000200c20032900a00b370000200d41c4006c41046a2202417f4c0d0120032802981621010240024020020d00410121050c010b200210382205450d010b200341003602c024200320023602bc24200320053602b824200341b8246a200d10d2012001200d200341b8246a10ce01200341a81d6a412020032802b82420032802c02410a302024020032802bc24450d0020032802b82410390b0240200328029c162202450d00200241c4006c450d00200110390b20004200370308200020032800d012360019200041186a41003a00002000411c6a200341d3126a280000360000200042003703000c180b1030000b1034000b4101210c4193a4c200210d4110210b2005450d010b2007200541f0006c6a2106200721020340024020022205410c6a2802002201450d0020052802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200541f0006a21020240200541086a2802002201450d00200141246c450d00200528020410390b20022006470d000b0b0240201d450d00201d41f0006c450d00200710390b0b200020063a00232000200c3a0022200041063a002120004200370308200041206a200a3a0000200041186a41003a00002000200bad422086200dad84370024200042013703000c120b200241226a210b200141186a21052001410d6a2107200141c8006a2903002123200141c0006a29030021222002411a6a2901002104200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002118200241086a2d00002119200241066a2f0100211a200241056a2d0000211c200241046a2d0000211f41022120200241026a2f0100211e200141146a280200211d200141106a280200211b2001410c6a2d0000210a200141386a2903002109200141306a29030021082002280228210620022d0001212120022d000021020240024002400240024002400240024002400240200141086a280200417f6a0e0400010203000b20034198166a41026a200741026a2d00003a0000200341e02f6a41086a200541086a290200370300200341e02f6a41106a200541106a290200370300200320072f00003b019816200320052902003703e02f20062006280200417f6a220136020002400240200241ff01710d00024020010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b202141ff017141014721020c010b4101210220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22012001280200417f6a220136020020010d00200610390b200320043703d0092003200c3a00cf092003200d3a00ce092003200e3b01cc092003200f3a00cb09200320103a00ca09200320113b01c809200320123a00c709200320133a00c609200320143b01c409200320153a00c309200320163a00c209200320173b01c009200320183a00bf09200320193a00be092003201a3b01bc092003201c3a00bb092003201f3a00ba092003201e3b01b809024002400240024020020d00200341a8376a41186a200341b8096a41186a290300370300200341a8376a41106a200341b8096a41106a290300370300200341a8376a41086a200341b8096a41086a290300370300200320032903b8093703a83741012102024002400240200a0e03000201020b200341e0196a41026a20034198166a41026a2d00003a0000200341a8026a41086a200341e02f6a41086a290300370300200341a8026a410d6a200341e02f6a410d6a290000370000200320032f0198163b01e019200320032903e02f3703a802410021020c010b201d450d00201b10390b200341bb1d6a200341a8026a41086a290300370000200341a81d6a41186a200341b5026a290000370000200320032f01e0193b01a81d2003201d3600af1d2003201b3600ab1d200320032903a8023700b31d2003200341e2196a2d00003a00aa1d024020020d00200341b8246a41186a200341a81d6a41186a290300370300200341b8246a41106a200341a81d6a41106a290300370300200341b8246a41086a200341a81d6a41086a290300370300200320032903a81d3703b824200341a8026a200341a8376a200341b8246a20082009410110eb0720032d00a80222024108460d0420032902ac02210420032d00ab02210120032d00aa02210520032d00a90221060c030b410121020c010b41022102200a4102470d00201d450d00201b10390b0b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200041246a2004370200200020013a0023200020053a0022200020063a0021200041206a20023a0000200042013703000c1b0b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200042003703000c1a0b41022101200341880a6a41026a200741026a2d00003a0000200341f0206a41086a200541086a290200370300200341f0206a41106a200541106a290200370300200320072f00003b01880a200320052902003703f020200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200b41046a2f01003b0100200341b8246a41226a200b280100360100200320063602e02402400240200341b8246a10a2070d0041012102024002400240200a0e03000201020b200341a8376a41026a200341880a6a41026a2d00003a0000200341b8246a41086a200341f0206a41086a290300370300200341b8246a410d6a200341f0206a410d6a290000370000200320032f01880a3b01a837200320032903f0203703b824410021020c010b201d450d00201b10390b200341cb096a200341b8246a41086a290300370000200341b8096a41186a2201200341c5246a290000370000200320032f01a8373b01b8092003201d3600bf092003201b3600bb09200320032903b8243700c3092003200341aa376a2d00003a00ba0920020d01200341e80e6a41186a2001290300370300200341e80e6a41106a200341b8096a41106a290300370300200341e80e6a41086a200341b8096a41086a290300370300200320032903b8093703e80e200341a8376a200341e80e6a10dd02200341b8246a20032802a837220520032802b03710e102202320097c202220087c2204202254ad7c50210220044280c8afa0255421014200212d4200212e4200212f4200213042002131420021244200213242002133024020032903b8244201520d00200341f8246a290300212e200341f0246a290300212d200341e8246a2903002130200341e0246a290300212f200341d8246a2903002124200341d0246a2903002131200341b8246a41106a290300213320032903c02421320b2001410020021b2101024020032802ac37450d00200510390b4200200920011b21044200200820011b210802402032202f20318484203320302024848484500d00200341d8096a21020c080b200341d8096a2102202d202e844200520d07200341f82f6a4200370300200341f02f6a4200370300200341e82f6a4200370300200342003703e02f4100210641012105200341d8096a2102420021324200213342002131420021240c080b200a4102470d08201d450d08201b10390c080b410121010c070b200141e0006a2903002124200141d8006a2903002133200141d0006a29030021312009a721012008422088a72125200341e0196a41026a200741026a2d00003a0000200341e02f6a41086a200541086a290200370300200341e02f6a41106a200541106a290200370300200320072f00003b01e019200320052902003703e02f200341b8246a411a6a2004370100200341b8246a41196a200c3a0000200341b8246a41186a200d3a0000200341b8246a41166a200e3b0100200341b8246a41156a200f3a0000200341b8246a41146a20103a0000200341b8246a41126a20113b0100200341b8246a41116a20123a0000200341b8246a41106a20133a0000200341b8246a410e6a20143b0100200341b8246a410d6a20153a0000200341b8246a410c6a20163a0000200341b8246a410a6a20173b0100200341b8246a41096a20183a0000200341b8246a41086a20193a00002003201a3b01be242003201c3a00bd242003201f3a00bc242003201e3b01ba24200320213a00b924200320023a00b824200341de246a200b41046a2f01003b0100200341b8246a41226a200b280100360100200320063602e0242008a7210202400240200341b8246a10a20722050d0041012106024002400240200a0e03000201020b200341a8026a41026a200341e0196a41026a2d00003a0000200341b8246a41086a200341e02f6a41086a290300370300200341b8246a410d6a200341e02f6a410d6a290000370000200320032f01e0193b01a802200320032903e02f3703b824410021060c010b201d450d00201b10390b200341cb096a200341b8246a41086a290300370000200341b8096a41186a2207200341c5246a290000370000200320032f01a8023b01b8092003201d3600bf092003201b3600bb09200320032903b8243700c3092003200341aa026a2d00003a00ba09024020060d002009422088a7211d200341a8376a41186a2007290300370300200341a8376a41106a200341b8096a41106a290300370300200341a8376a41086a200341b8096a41086a290300370300200320032903b8093703a8372008420888a7210541012107024002400240200241ff01710e03000201020b2031a72106410021070c010b02402001450d00202510390b0b200341bf1d6a2023370000200320223700b71d200320063a00c71d2003201d3600b31d200320013600af1d200320253600ab1d200320053b01a81d200320054110763a00aa1d024020070d00200341b8246a41186a200341a81d6a41186a290300370300200341b8246a41106a200341a81d6a41106a290300370300200341b8246a41086a200341a81d6a41086a290300370300200320032903a81d3703b824200341a8026a200341a8376a200341b8246a20332024410110eb0720032d00a80222204108460d0320032902ac02210420032d00ab02210220032d00aa02210120032d00a90221050c070b410121200c050b410121200b200241ff01714102470d022001450d02202510390c020b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200042003703000c180b20034198166a41026a200741026a2d00003a0000200341e02f6a41086a200541086a290200370300200341e02f6a41106a200541106a290200370300200320072f00003b019816200320052902003703e02f20062006280200417f6a220136020002400240200241ff01710d00024020010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b202141ff017141014721020c010b4101210220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22012001280200417f6a220136020020010d00200610390b200320043703d0092003200c3a00cf092003200d3a00ce092003200e3b01cc092003200f3a00cb09200320103a00ca09200320113b01c809200320123a00c709200320133a00c609200320143b01c409200320153a00c309200320163a00c209200320173b01c009200320183a00bf09200320193a00be092003201a3b01bc092003201c3a00bb092003201f3a00ba092003201e3b01b809024002400240024020020d00200341a8376a41186a200341b8096a41186a290300370300200341a8376a41106a200341b8096a41106a290300370300200341a8376a41086a200341b8096a41086a290300370300200320032903b8093703a83741012102024002400240200a0e03000201020b200341e0196a41026a20034198166a41026a2d00003a0000200341a8026a41086a200341e02f6a41086a290300370300200341a8026a410d6a200341e02f6a410d6a290000370000200320032f0198163b01e019200320032903e02f3703a802410021020c010b201d450d00201b10390b200341bb1d6a200341a8026a41086a290300370000200341a81d6a41186a200341b5026a290000370000200320032f01e0193b01a81d2003201d3600af1d2003201b3600ab1d200320032903a8023700b31d2003200341e2196a2d00003a00aa1d024020020d00200341b8246a41186a200341a81d6a41186a290300370300200341b8246a41106a200341a81d6a41106a290300370300200341b8246a41086a200341a81d6a41086a290300370300200320032903a81d3703b824200341a8026a200341a8376a200341b8246a20082009410010eb0720032d00a80222024108460d0420032902ac02210420032d00ab02210120032d00aa02210520032d00a90221060c030b410121020c010b41022102200a4102470d00201d450d00201b10390b0b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200041246a2004370200200020013a0023200020053a0022200020063a0021200041206a20023a0000200042013703000c180b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200042003703000c170b2005410173200a410247720d00201d450d00201b10390b0b200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200041246a2004370200200020023a0023200020013a0022200020053a0021200041206a20203a0000200042013703000c140b200341d8096a41186a202e3703002003202d3703e8092003202f3703d809200320303703e009200341e02f6a41186a200241186a290300370300200341e02f6a41106a200241106a290300370300200341e02f6a41086a200241086a290300370300200320022903003703e02f41012106410021050b4200202320011b21094200202220011b21220240024020082032582004203358200420335122011b0d00200820327d200420337d2008203254ad7d10f8040c010b200820325a200420335a20011b0d002003203220087d3703b8242003203320047d2032200854ad7d3703c0242003200341b8246a3602a802200341a8026a10a4060b0240024020222031582009202458200920245122011b0d00202220317d200920247d2022203154ad7d10f8040c010b202220315a200920245a20011b0d002003203120227d3703b8242003202420097d2031202254ad7d3703c0242003200341b8246a3602a802200341a8026a10a4060b420021332005ad213102400240427f200820227c222320232008542201200420097c2001ad7c222320045420232004511b22011b222442ffc7afa02556427f202320011b222342005220235022011b0d002008202284200420098484223350211d2033420052ad21330c010b200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41086a200341e02f6a41086a290300370300200320032903e02f3703b8244101211d0b200220032903b824370300200241186a200341b8246a41186a290300370300200241106a200341b8246a41106a290300370300200241086a200341b8246a41086a290300370300200341f0376a2009370300200341e8376a2022370300200341e0376a2004370300200341d0376a2023370300200341c8376a220a2024370300200341a8376a41106a2004370300200320083703d837200320083703b037200320333703c037200320313703a837024002400240024002402005202442ffc7afa02556202342005220011b2207714101470d002003200341e80e6a3602b824200341e80e6a200341b8246a10f0020c010b024020064101732007720d002003200341e80e6a3602b824200341e80e6a200341b8246a10e00241ff017122054103460d0120050e03030102030b20062007724101470d020b200341a8026a41186a200241186a290300370300200341a8026a41106a200241106a290300370300200341a8026a41086a200241086a290300370300200320022903003703a802200341a00b6a200341e80e6a10dd02200341b8246a20032802a00b220220032802a80b220510e1020240024020032903b8244201510d00200341e0196a41086a4200370300200342003703e0190c010b200341e0196a41086a20034188256a290300370300200320034180256a2903003703e0190b4200213302400240202442ffc7afa02556202342005220011b0d00200341d0246a4200370300200341c8246a4200370300200341c0246a4200370300200342003703b8244200210942002108420021040c010b200341b8246a41186a200341a8026a41186a290300370300200341b8246a41106a200341a8026a41106a290300370300200341b8246a41086a200341a8026a41086a290300370300200320032903a8023703b824202221330b200341e02f6a41186a200341b8246a41186a22012903002222370300200341e02f6a41106a200341b8246a41106a22062903002223370300200341e02f6a41086a200341b8246a41086a22072903002224370300200320032903b82422313703e02f200341d8246a20093703002001203337030020062004370300200341b8246a41286a2031370300200341e8246a2024370300200341b8246a41386a2023370300200341f8246a2022370300200341b8246a41c8006a20032903e01937030020034188256a200341e0196a41086a290300370300200320083703c024200342013703b82420022005200710e202024020032802a40b450d00200210390b200341a8376a41106a2903002132200341a8376a41286a2903002123200341a8376a41386a2903002104200341a8376a41c8006a290300210920032903b037212f20032903c837212420032903d837210820032903e837212220032903a837213120032903c03721330c020b0240201d0d002003200a3602b824200341b8246a10a4060b410421010c020b2008212f200421320b024020314201520d00200341f0246a2032370300200341e8246a202f370300200341c1246a20032903e80e370000200341b8246a41086a41003a0000200341d9246a200341800f6a290300370000200341d1246a200341f80e6a290300370000200341c9246a200341e80e6a41086a290300370000200341023a00b824200341b8246a10fc010b02400240203350450d00420021330c010b200341b8246a41186a200341e80e6a41186a290300370300200341b8246a41106a200341e80e6a41106a290300370300200341b8246a41086a200341e80e6a41086a290300370300200320032903e80e3703b824420121330b200341a81d6a41186a200341b8246a41186a22022903002231370300200341a81d6a41106a200341b8246a41106a22012903002232370300200341a81d6a41086a200341b8246a41086a2205290300222f370300200320032903b82422303703a81d200341e8246a22062023370300200341e0246a220720243703002001202f37030020022032370300200341d8246a2031370300200320333703b824200320303703c024200341b8246a10ec07024020032903b824500d00200320073602a837200341a8376a10a4060b20034180256a2009370300200341f8246a2022370300200341f0246a200437030020062008370300200341d9246a200341e80e6a41186a290300370000200341d1246a200341e80e6a41106a290300370000200341c9246a200341e80e6a41086a290300370000200341c1246a20032903e80e370000200541033a0000200341023a00b824200341b8246a10fc01200320032800d80a3602a80a2003200341d80a6a41036a2800003600ab0a200041186a41003a000020004200370308200020032802a80a3600192000411c6a20032800ab0a360000200042003703000c120b200320032800d80a3602a80a20032003290098163703d0122003200341db0a6a2800003600ab0a20032003419f166a2900003700d712200041186a41003a000020004200370308200020032802a80a3600192000411c6a20032800ab0a360000200041206a20013a0000200020032903d012370021200041286a20032900d712370000200042013703000c110b2001410c6a2106200141056a211f2002411a6a2901002104200241196a2d00002107200241186a2d0000211d200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f01002119200141286a280200211b200141086a280200211c2002280228210520022d0001211e20022d0000211a0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0004417f6a0e050001020304000b20052005280200417f6a220236020002400240201a41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201e41ff017141014721010c010b4101210120020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200320043703f819200320073a00f7192003201d3a00f6192003200a3b01f4192003200b3a00f3192003200c3a00f2192003200d3b01f0192003200e3a00ef192003200f3a00ee19200320103b01ec19200320113a00eb19200320123a00ea19200320133b01e819200320143a00e719200320153a00e619200320163b01e419200320173a00e319200320183a00e219200320193b01e0190240024020010d00200341a8376a41186a2202200341e0196a41186a290300370300200341a8376a41106a2201200341e0196a41106a290300370300200341a8376a41086a2205200341e0196a41086a290300370300200320032903e0193703a837200341a8026a201c10db02200341b8246a20032802a802220720032802b002220610ed07200320032800e9243602f8092003200341ec246a2800003600fb090240024020032d00e8244102460d00200341e02f6a41086a4105360200200341cdbbc3003602e42f20034183043b00e12f410321020c010b200341b8096a41186a2002290300370300200341b8096a41106a2001290300370300200341b8096a41086a2005290300370300200320032903a8373703b809200341e02f6a200341a8376a4280a094a58d1d420010f70120032d00e02f22024108470d00200341ec246a20032800fb09360000200341e0246a200341b8096a41186a290300370300200341d8246a200341c8096a29030037030041082102200341b8246a41186a200341b8096a41086a290300370300200342003703c02420034280a094a58d1d3703b824200320032903b8093703c824200320032802f8093600e924200341003a00e82420072006200341b8246a10ee070b20032902e42f210420032d00e32f210120032d00e22f210520032d00e12f2106024020032802ac02450d00200710390b20024108470d01200341e0246a201c360200200341d5246a200341a8376a41186a290300370000200341cd246a200341b8376a290300370000200341c5246a200341a8376a41086a290300370000200320032903a8373700bd24200341003a00bc24200341013a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800e80e3600192000411c6a200341eb0e6a280000360000200042003703000c2b0b410221020b200020013a0023200020053a0022200020063a002120004200370308200041246a2004370200200041206a20023a0000200041186a41003a0000200042013703000c290b200341970a6a200641086a2900003700002003419f0a6a200641106a290000370000200341a70a6a200641186a2d00003a00002003201c36008b0a2003201f41026a2d00003a008a0a2003201f2f00003b01880a2003200629000037008f0a20052005280200417f6a220236020002400240201a41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201e41ff017141014721010c010b4101210120020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200320043703f819200320073a00f7192003201d3a00f6192003200a3b01f4192003200b3a00f3192003200c3a00f2192003200d3b01f0192003200e3a00ef192003200f3a00ee19200320103b01ec19200320113a00eb19200320123a00ea19200320133b01e819200320143a00e719200320153a00e619200320163b01e419200320173a00e319200320183a00e219200320193b01e0190240024020010d00200341a80a6a41186a200341e0196a41186a290300370300200341a80a6a41106a200341e0196a41106a290300370300200341a80a6a41086a200341e0196a41086a290300370300200320032903e0193703a80a200341a80a6a200341880a6a412010c60a0d01420b210441c2bbc30021054103210641032101410321020c180b41022102420021040c170b200341c80a6a201b10db02200341b8246a20032802c80a20032802d00a10ed07200341b8096a41086a200341b8246a41186a290300370300200341b8096a41106a200341b8246a41206a290300370300200341b8096a41186a200341e0246a290300370300200320032903c8243703b809200320032800e9243602f8092003200341ec246a2800003600fb0941032102024020032d00e82422054102470d00420b210441d2bbc300210541002101410321060c160b200341b8246a41086a290300210820032903b8242109200341d80a6a41186a200341b8096a41186a290300370300200341d80a6a41106a200341b8096a41106a290300370300200341d80a6a41086a200341b8096a41086a290300370300200320032903b8093703d80a4101210102402005410171450d004209210441ddbbc300210541042101410321060c160b0240200341d80a6a200341a80a6a412010c60a450d004208210441a0bdc4002105410321060c160b420021040240200920088450450d0042002122420021240c130b200341a8376a200341880a6a10dd02200341b8246a20032802a837220220032802b03710e1024200212f42002130420021224200212342002124420021334200213142002132024020032903b8244201520d00200341f8246a2903002130200341f0246a290300212f200341e8246a2903002123200341e0246a2903002122200341d8246a2903002133200341d0246a2903002124200341c8246a290300213220032903c02421310b024020032802ac37450d00200210390b02402031202220248484203220232033848484500d00200341a81d6a21020c110b200341a81d6a2102202f20308450450d10410021050c110b20052005280200417f6a220236020002400240201a41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201e41ff017141014721010c010b4101210120020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200320043703f819200320073a00f7192003201d3a00f6192003200a3b01f4192003200b3a00f3192003200c3a00f2192003200d3b01f0192003200e3a00ef192003200f3a00ee19200320103b01ec19200320113a00eb19200320123a00ea19200320133b01e819200320143a00e719200320153a00e619200320163b01e419200320173a00e319200320183a00e219200320193b01e01920010d02200341a8376a41186a200341e0196a41186a290300370300200341a8376a41106a200341e0196a41106a290300370300200341a8376a41086a200341e0196a41086a290300370300200320032903e0193703a837200341e02f6a201c10db02200341b8246a20032802e02f220620032802e82f220b10ed07200341b8096a41086a2202200341b8246a41186a2205290300370300200341b8096a41106a2207200341d8246a290300370300200341b8096a41186a221d200341e0246a290300370300200320032903c8243703b809410321010240024020032d00e824220a4102470d004280808080b001210441d2bbc300210741002105410021020c010b200341b8246a41086a220c290300210420032903b82421082005201d290300370300200341b8246a41106a2007290300370300200c2002290300370300200320032903b8093703b824410121020240200a410171450d0042808080809001210441ddbbc300210741042102410021050c010b0240200341b8246a200341a8376a412010c60a450d0042808080808001210441a0bdc4002107410021050c010b200341a8376a20082004109f022006200b10fd014200210441082101410121050b024020032802e42f450d00200610390b024020050d0020044280808080f001832007ad8421040c0f0b200341c0246a201c360200200341013a00bc24200341013a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800a8023600192000411c6a200341ab026a280000360000200042003703000c270b20012d00252101200341e80e6a41026a201f41026a2d00003a0000200341a8376a41086a200641086a290000370300200341a8376a41106a200641106a290000370300200341a8376a41186a200641186a2d00003a00002003201f2f00003b01e80e200320062900003703a837200341b8246a411a6a2004370100200341b8246a41196a20073a0000200341b8246a41186a201d3a0000200341b8246a41166a200a3b0100200341b8246a41156a200b3a0000200341b8246a41146a200c3a0000200341b8246a41126a200d3b0100200341b8246a41116a200e3a0000200341b8246a41106a200f3a0000200341b8246a410e6a20103b0100200341b8246a410d6a20113a0000200341b8246a410c6a20123a0000200341b8246a410a6a20133b0100200341b8246a41096a20143a0000200341b8246a41086a20153a0000200320163b01be24200320173a00bd24200320183a00bc24200320193b01ba242003201e3a00b9242003201a3a00b824200341b8246a41266a200241266a2f01003b0100200341b8246a41226a200241226a280100360100200320053602e024200341b8246a10a2070d02200341e02f6a201b10db02200341b8246a20032802e02f220220032802e82f220510ed07200341b8096a41086a2207200341b8246a41186a221d290300370300200341b8096a41106a220a200341d8246a290300370300200341b8096a41186a220b200341e0246a290300370300200320032903c8243703b809200320032800e9243602f8092003200341ec246a22062800003600fb09024020032d00e8244102460d00200341b8246a41086a220c290300210420032903b8242108201d200b290300370300200341b8246a41106a200a290300370300200c2007290300370300200320032903b8093703b824200341b8246a20082004109f020b200341cb246a201c360000200341cf246a20032903a837370000200620032800fb09360000200341ca246a200341e80e6a41026a2d00003a0000200341d7246a200341a8376a41086a290300370000200341df246a200341a8376a41106a290300370000200341e7246a200341a8376a41186a2d00003a0000200320032f01e80e3b01c824200320032802f8093600e924200342003703c024200342003703b824200320013a00e82402400240200141ff01714102470d002002200510fd010c010b20022005200341b8246a10ee070b024020032802e42f450d00200210390b200341c4246a20032903a837370200200341e0246a201b360200200341b8246a41086a201c360200200341cc246a200341a8376a41086a290300370200200341b8246a411c6a200341b8376a290300370200200341dc246a200341a8376a41186a2d00003a0000200320032f01e80e3b00bd24200341003a00bc24200341013a00b8242003200341ea0e6a2d00003a00bf24200341b8246a10fc01200041186a41003a000020004200370308200020032800a8023600192000411c6a200341ab026a280000360000200042003703000c260b20052005280200417f6a220236020002400240201a41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b201e41ff017141014721010c010b4101210120020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200320043703f819200320073a00f7192003201d3a00f6192003200a3b01f4192003200b3a00f3192003200c3a00f2192003200d3b01f0192003200e3a00ef192003200f3a00ee19200320103b01ec19200320113a00eb19200320123a00ea19200320133b01e819200320143a00e719200320153a00e619200320163b01e419200320173a00e319200320183a00e219200320193b01e01920010d02200341e80e6a41186a200341e0196a41186a290300370300200341e80e6a41106a200341e0196a41106a290300370300200341e80e6a41086a200341e0196a41086a290300370300200320032903e0193703e80e20034198166a201c10db02200341b8246a200328029816220620032802a016220a10ed07200341a81d6a41086a2202200341b8246a41186a290300370300200341a81d6a41106a2205200341d8246a290300370300200341a81d6a41186a2207200341e0246a290300370300200320032903c8243703a81d200320032800e9243602f8092003200341ec246a2800003600fb0941032101024020032d00e824221d4102470d004280808080b001210441d2bbc300210741002105410021020c0a0b200341b8246a41086a290300210820032903b8242109200341a8026a41186a2007290300370300200341a8026a41106a2005290300370300200341a8026a41086a2002290300370300200320032903a81d3703a802410121020240201d410171450d0042808080809001210441ddbbc300210741042102410021050c0a0b0240200341a8026a200341e80e6a412010c60a450d0042808080808001210441a0bdc4002107410021050c0a0b420021040240200920088450450d00420021224200212342002109420021080c090b200341a8376a200341e80e6a10dd02200341b8246a20032802a837220220032802b03710e102200341d8246a2903002124200341d0246a2903002133200341c8246a290300213120032903c024213220032903b8242123024020032802ac37450d00200210390b42002122024020234201510d00420021230c090b0240203220338420312024848450450d00420021230c090b200341a8376a200341e80e6a10dd02200341b8246a20032802a837220220032802b03710e1024200212f42002130420021224200212342002131420021324200213342002124024020032903b8244201520d00200341f8246a2903002130200341b8246a41306a2903002123200341b8246a41206a2903002132200341c8246a290300212420032903f024212f20032903e024212220032903d024213120032903c02421330b024020032802ac37450d00200210390b02400240203320222031848420242023203284848450450d00202f2030844200520d00200341f82f6a4200370300200341f02f6a4200370300200341e82f6a4200370300200342003703e02f4100210741012102420021334200212442002131420021320c010b200341d8096a41086a2023370300200341d8096a41186a2030370300200341d8096a41106a202f370300200320223703d809200341e02f6a41186a2030370300200341e02f6a41106a202f370300200341e02f6a41086a2023370300200320223703e02f41012107410021020b4200212f2008200820322031200956203220085620322008511b22011b22237d20092009203120011b222254ad7d2134200920227d21352002ad213002400240427f2033203120227d222d7c222e202e20335422012024203220237d2031202254ad7d222e7c2001ad7c223120245420312024511b22011b223242ffc7afa02556427f203120011b223142005220315022051b0d002033202d842024202e8484222f50210c202f420052ad212f0c010b200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41086a200341e02f6a41086a290300370300200320032903e02f3703b8244101210c0b200341d8096a41186a200341b8246a41186a290300370300200341d8096a41106a200341b8246a41106a290300370300200341d8096a41086a200341b8246a41086a290300370300200341f0376a2034370300200341e0376a2023370300200341a8376a41106a2024370300200320323703c837200341d0376a2031370300200320032903b8243703d809200320353703e837200320223703d837200320333703b0372003202f3703c037200320303703a8372002203242ffc7afa02556221d2031420052220b20051b2201714101460d0502402007410173201d200b20051b72450d00203521092034210820332135202421340c050b2003200341e80e6a3602b824200341e80e6a200341b8246a10e00241ff017122024103460d06024020020e03040700040b200341a8376a41306a2105200341a8376a41206a210b0240200c0d002003200b3602b824200341b8246a10a4060b200320053602b824200341b8246a10a406200341a8376a200341e80e6a10dd02200341b8246a20032802a837220220032802b03710e1024200212f42002130420021224200212342002136420021374200213542002134024020032903b8244201520d00200341f8246a2903002130200341e8246a2903002123200341d8246a2903002137200341c8246a290300213420032903f024212f20032903e024212220032903d024213620032903c02421350b024020032802ac37450d00200210390b02400240203520222036848420342023203784848450450d00202f2030844200520d00200341f82f6a4200370300200341f02f6a4200370300200341e82f6a4200370300200342003703e02f4100210741012102420021354200213442002136420021370c010b200341d8096a41086a2023370300200341d8096a41186a2030370300200341d8096a41106a202f370300200320223703d809200341e02f6a41186a2030370300200341e02f6a41106a202f370300200341e02f6a41086a2023370300200320223703e02f41012107410021020b4200212f4100210120084200203720347c203620357c2222203654ad7c222320224280c8afa02554ad7d223020224280b8d0df5a7c22382022562030202356202242ffc7afa025561b221d1b22222008200942002038201d1b222356200820225620082022511b221d1b22222037203620232009201d1b223056203720225620372022511b221d1b22237d200920302036201d1b222254ad7d2138200920227d21392002ad213002400240427f2035203620227d223a7c223b203b203554221d2034203720237d2036202254ad7d22377c201dad7c223620345420362034511b221d1b223b4280c8afa025544100427f2036201d1b2236501b0d00200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41086a200341e02f6a41086a290300370300200320032903e02f3703b824410121012035213320342124203a212d2037212e4101211d0c010b02402035203a8420342037848450450d004101211d0c010b4201212f410021014100211d203b2132203621310b200341d8096a41186a200341b8246a41186a290300370300200341d8096a41106a200341b8246a41106a290300370300200341d8096a41086a200341b8246a41086a290300370300200341f0376a2038370300200341e0376a2023370300200341d0376a2031370300200341a8376a41106a2034370300200320032903b8243703d809200320393703e837200320223703d837200320323703c837200320353703b0372003202f3703c037200320303703a83720012002710d05024020072001410173714101460d0020392109203821080c050b2003200341e80e6a3602b824200341e80e6a200341b8246a10e00241ff017122024103460d06024020020e03040700040b0240201d0d002003200b3602b824200341b8246a10a4060b200320053602b824200341b8246a10a40642002122420021230c080b410221010c0b0b200041186a41003a000020004200370308200041206a41023a0000200042013703000c230b410221010c070b200341f0376a2903002108200341e0376a2903002123200341d0376a2903002131200341b8376a290300213420032903e837210920032903d837212220032903c837213220032903b037213520032903c037212f20032903a83721300c030b20070d012001450d020c010b2003200341e80e6a3602b824200341e80e6a200341b8246a10f002410121010b200341e0196a200341e80e6a10dd02200341b8246a20032802e019220220032802e819220510e1020240024020032903b8244201510d00200341f8206a4200370300200342003703f0200c010b200341f8206a20034188256a290300370300200320034180256a2903003703f0200b0240024020010d004200212d200341d0246a4200370300200341c8246a4200370300200341c0246a4200370300200342003703b8244200212e42002133420021240c010b200341b8246a41186a200341d8096a41186a290300370300200341b8246a41106a200341d8096a41106a290300370300200341b8246a41086a200341d8096a41086a290300370300200320032903d8093703b8240b200341e02f6a41186a200341b8246a41186a22012903002208370300200341e02f6a41106a200341b8246a41106a22062903002209370300200341e02f6a41086a200341b8246a41086a22072903002222370300200320032903b82422233703e02f200341d8246a202e3703002001202d37030020062024370300200341b8246a41286a2023370300200341e8246a2022370300200341b8246a41386a2009370300200341f8246a2008370300200341b8246a41c8006a20032903f02037030020034188256a200341f0206a41086a290300370300200320333703c024200342013703b82420022005200710e202024020032802e419450d00200210390b200341a8376a41106a2903002134200341a8376a41286a2903002131200341a8376a41386a2903002123200341a8376a41c8006a290300210820032903b037213520032903c837213220032903d837212220032903e837210920032903a837213020032903c037212f0b024020304201520d00200341f0246a2034370300200341e8246a2035370300200341c1246a20032903e80e370000200341b8246a41086a41003a0000200341d9246a200341800f6a290300370000200341d1246a200341f80e6a290300370000200341c9246a200341e80e6a41086a290300370000200341023a00b824200341b8246a10fc010b02400240202f50450d00420021240c010b200341b8246a41186a200341e80e6a41186a290300370300200341b8246a41106a200341e80e6a41106a290300370300200341b8246a41086a200341e80e6a41086a290300370300200320032903e80e3703b824420121240b200341b8096a41186a200341b8246a41186a22022903002233370300200341b8096a41106a200341b8246a41106a2201290300222f370300200341b8096a41086a200341b8246a41086a2903002230370300200320032903b824222d3703b809200341e8246a2031370300200341e0246a22052032370300200120303703002002202f370300200341d8246a2033370300200320243703b8242003202d3703c024200341b8246a10ec07024020032903b824500d00200320053602a837200341a8376a10a4060b200328029816210620032802a016210a0b200341b8246a41186a22022008370300200320093703c824200320223703b824200320233703c0242003200341b8246a3602a837200341a8376a10a406200341a81d6a41186a200341a8026a41186a2903002208370300200341a81d6a41106a200341a8026a41106a290300220937030041082101200341a81d6a41086a200341a8026a41086a2903002222370300200320032903a80222233703a81d200341e0246a2008370300200341d8246a200937030020022022370300200341ec246a20032800fb09360000200320233703c824200342003703c024200342003703b824200320032802f8093600e92441012105200341013a00e8242006200a200341b8246a10ee070b0240200328029c16450d00200610390b20050d0120044280808080f001832007ad8421040b200020023a0022200041033a002120004200370308200041246a2004370200200041206a20013a0000200041186a41003a0000200042013703000c1a0b200341e0246a201c360200200341d5246a200341e80e6a41186a290300370000200341cd246a200341f80e6a290300370000200341c5246a200341f00e6a290300370000200320032903e80e3700bd24200341023a00bc24200341013a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800d0123600192000411c6a200341d3126a280000360000200042003703000c190b200020023a0022200041033a002120004200370308200041246a2004370200200041206a20013a0000200041186a41003a0000200042013703000c180b200341e01d6a2030370300200341d01d6a2023370300200341c01d6a20333703002003202f3703d81d200320223703c81d200320243703b81d200320313703a81d200320323703b01d410121050b4101210120054101732107024002400240024020050d0042002131200341a8216a4200370300200341a0216a420037030020034198216a420037030020034190216a420037030020034188216a420037030020034180216a4200370300200341f0206a41086a4200370300200342003703f020200341ec2f6a410b360200200341e02f6a41086a41a8abc400360200200341063a00e62f20034183083b01e42f420021230c010b200341f0206a41386a200241386a290300370300200341f0206a41306a200241306a290300370300200341f0206a41286a200241286a290300370300200341f0206a41206a200241206a290300370300200341f0206a41186a200241186a290300370300200341f0206a41106a200241106a290300370300200341f0206a41086a200241086a290300370300200320022903003703f0202003200341f0206a3602fc0a200341e80e6a200341a80a6a10dd02200341b8246a20032802e80e220120032802f00e10e1024200212f42002130420021314200213242002133420021244200212342002122024020032903b8244201520d00200341f8246a2903002130200341b8246a41386a290300212f200341b8246a41306a2903002132200341b8246a41286a2903002131200341b8246a41206a2903002124200341b8246a41186a2903002133200341b8246a41106a290300212220032903c02421230b024020032802ec0e450d00200110390b0240024002402023203120338484202220322024848484500d00200341d8096a21010c010b200341d8096a2101202f2030844200520d00200341b0166a4200370300200341a8166a4200370300200341a0166a420037030020034200370398164100210c4101210a200341d8096a2101420021234200212242002133420021240c010b200341d8096a41186a20303703002003202f3703e809200320313703d809200320323703e00920034198166a41186a200141186a29030037030020034198166a41106a200141106a29030037030020034198166a41086a200141086a29030037030020032001290300370398164101210c4100210a0b02400240024002400240024002402003290380212231200920332033200956202420085620242008511b22061b22327c222d203154221d20034188216a220b29030022312008202420061b22307c201dad7c222f203154202f2031511b0d00200b202f3703002003202d370380214200212f2032422088a7211d200aad21312032a7210b02400240427f2023203320327d222e7c222d202d20235422062022202420307d2033203254ad7d22327c2006ad7c222420225420242022511b22061b223342ffc7afa02556427f202420061b222442005220245022061b0d002023202e84202220328484222f50210d202f420052ad212f0c010b200341b8246a41186a20034198166a41186a290300370300200341b8246a41106a20034198166a41106a290300370300200341b8246a41086a20034198166a41086a29030037030020032003290398163703b8244101210d0b200120032903b824370300200141186a200341b8246a41186a290300370300200141106a200341b8246a41106a290300370300200141086a200341b8246a41086a290300370300200341900f6a2024370300200341880f6a220e2033370300200341e80e6a41106a2022370300200320233703f00e200320303703a00f2003201d36029c0f2003200b3602980f2003202f3703800f200320313703e80e0240200a203342ffc7afa02556202442005220061b221d71450d002003200341a80a6a3602b824200341a80a6a200341b8246a10f0020c050b024002400240200c410173201d720d002003200341a80a6a3602b824200341a80a6a200341b8246a10e00241ff0171221d4103460d07201d0e03010702010b200c201d720d06200341a00f6a290300213220032903980f2130410021010c040b200341a00f6a2903002132200341900f6a2903002124200341f80e6a290300212220032903980f213020032903880f213320032903f00e21234100210120032903800f212f20032903e80e21310c030b4100211d41042106410121010240200d0d002003200e3602b824200341b8246a10a4060b0c010b41bcaac400ad4280808080b00284213141808208211d41072106410121010b0c010b410021064100211d0b2001450d01200341e82f6a203137030041012101200341013602e02f2003201d2006723602e42f0c020b200341d0126a41186a200141186a290300370300200341d0126a41106a200141106a290300370300200341d0126a41086a200141086a290300370300200320012903003703d012200341800b6a200341a80a6a10dd02200341b8246a20032802800b220120032802880b221d10e1020240024020032903b8244201510d00200341900b6a41086a4200370300200342003703900b0c010b200341900b6a41086a20034188256a290300370300200320034180256a2903003703900b0b4200213102400240203342ffc7afa02556202442005220061b0d00200341d0246a4200370300200341c8246a4200370300200341c0246a4200370300200342003703b8244200213242002123420021220c010b200341b8246a41186a200341d0126a41186a290300370300200341b8246a41106a200341d0126a41106a290300370300200341b8246a41086a200341d0126a41086a290300370300200320032903d0123703b824202e21310b20034198166a41186a200341b8246a41186a2206290300222437030020034198166a41106a200341b8246a41106a220a290300223337030020034198166a41086a200341b8246a41086a220b290300222f370300200320032903b824223037039816200341d8246a203237030020062031370300200a2022370300200341b8246a41286a2030370300200341e8246a202f370300200341b8246a41386a2033370300200341f8246a202437030020034180256a20032903900b37030020034188256a200341900b6a41086a290300370300200320233703c024200342013703b8242001201d200b10e202024020032802840b450d00200110390b200341e80e6a41106a2903002122200341e80e6a41286a2903002124200341e80e6a41386a290300213220032903f00e212320032903880f213320032903980f213020032903e80e213120032903800f212f0b024020314201520d00200341f0246a2022370300200341e8246a2023370300200341c1246a20032903a80a370000200341b8246a41086a41003a0000200341d9246a200341c00a6a290300370000200341d1246a200341b80a6a290300370000200341c9246a200341a80a6a41086a290300370000200341023a00b824200341b8246a10fc010b02400240202f50450d00420021220c010b200341b8246a41186a200341a80a6a41186a290300370300200341b8246a41106a200341a80a6a41106a290300370300200341b8246a41086a200341a80a6a41086a290300370300200320032903a80a3703b824420121220b20034180306a20032903b82437030020034198306a200341b8246a41186a29030037030020034190306a200341b8246a41106a29030037030020034188306a200341b8246a41086a290300370300200341a8306a2024370300200341a0306a2033370300200341e02f6a41106a2032370300200341e02f6a41086a2030370300200341e02f6a41186a202237030041002101200341003602e02f0b200341f0206a41086a290300212320032903f02021312001450d010b200341e82f6a29030021224200212420032802e42f21060c010b200341b8246a200341e02f6a41086a41c80010c30a1a4200212f02400240427f203120032903802122307c2222202220315422062023200341f0206a41186a290300222d7c2006ad7c222220235420222023511b22061b223242ffc7afa02556427f202220061b22334200522033501b0d004200212420312030842023202d8484420052ad212f0c010b200341e80e6a41186a200341a8216a290300370300200341f80e6a200341a0216a290300370300200341f00e6a20034198216a29030037030020032003290390213703e80e420121240b2007ad2122200220313703002002202337030820022030370310200241186a202d370300200220032903e80e370320200241286a200341f00e6a290300370300200241306a200341f80e6a290300370300200241386a200341e80e6a41186a2903003703000b200341a8026a200341b8246a41c80010c30a1a0240024002400240024020010d00200341d8376a200341a8026a41c80010c30a1a200341d0376a2033370300200341c8376a22012032370300200341b8376a2023370300200320313703b0372003202f3703c037200320223703a83702402024420052200771450d002003200341880a6a3602b824200341880a6a200341b8246a10f0020c030b02400240024002402005202450714101470d002003200341880a6a3602b824200341880a6a200341b8246a10e00241ff017122054103460d0620050e03020601020b20052024420052720d05200341e82f6a200341f0376a290300370300200341f02f6a200341f8376a290300370300200341f82f6a20034180386a29030037030020034180306a20034188386a29030037030020034188306a20034190386a29030037030020034190306a20034198386a2903003703002003200341e8376a2903003703e02f200341e0376a29030021240c020b0240202f500d00200320013602b824200341b8246a10a4060b200341e8376a220110ec0741002102410421062001290300500d03200320034190386a3602b824200341b8246a10a4060c030b200341e82f6a200341f0376a290300370300200341f02f6a200341f8376a290300370300200341f82f6a20034180386a29030037030020034180306a20034188386a29030037030020034188306a20034190386a29030037030020034190306a20034198386a2903003703002003200341e8376a2903003703e02f200341e0376a29030021240b20032903d83721300c030b200641807e7121020b2002200641ff017172210242002124410121010c020b200341a8026a41386a200241386a290300370300200341a8026a41306a200241306a290300370300200341a8026a41286a200241286a290300370300200341a8026a41206a200241206a290300370300200341a8026a41186a200241186a290300370300200341a8026a41106a200241106a290300370300200341a8026a41086a200241086a290300370300200320022903003703a802200341e80e6a200341880a6a10dd02200341b8246a20032802e80e220220032802f00e220110e1020240024020032903b8244201510d00200341a8306a4200370300200342003703a0300c010b200341e02f6a200341b8246a41086a41d00010c30a1a0b0240024020244200520d00200341f0246a4200370300200341e8246a4200370300200341e0246a4200370300200341d8246a4200370300200341d0246a4200370300200341c8246a4200370300200341c0246a4200370300200342003703b8240c010b200341b8246a41386a200341a8026a41386a290300370300200341b8246a41306a200341a8026a41306a290300370300200341b8246a41286a200341a8026a41286a290300370300200341b8246a41206a200341a8026a41206a290300370300200341b8246a41186a200341a8026a41186a290300370300200341b8246a41106a200341a8026a41106a290300370300200341b8246a41086a200341a8026a41086a290300370300200320032903a8023703b8240b200341e02f6a41386a200341b8246a41386a290300370300200341e02f6a41306a2205200341b8246a41306a290300370300200341e02f6a41286a2206200341b8246a41286a290300370300200341e02f6a41206a2207200341b8246a41206a290300370300200341e02f6a41186a221d200341b8246a41186a290300370300200341e02f6a41106a220a200341b8246a41106a290300370300200341e02f6a41086a220b200341b8246a41086a220c290300370300200320032903b8243703e02f200c200341e02f6a41d00010c30a210c200342013703b82420022001200c10e202024020032802ec0e450d00200210390b200b200341f0376a290300370300200a200341a8376a41d0006a290300370300201d20034180386a290300370300200720034188386a290300370300200620034190386a290300370300200520034198386a2903003703002003200341e8376a2903003703e02f200341a8376a41106a2903002123200341a8376a41286a2903002133200341a8376a41386a290300212420032903b037213120032903c837213220032903d837213020032903a837212220032903c037212f0b024020224201520d00200341f0246a2023370300200341e8246a2031370300200341c1246a20032903880a370000200341b8246a41086a41003a0000200341d9246a200341a00a6a290300370000200341d1246a200341980a6a290300370000200341c9246a200341880a6a41086a290300370000200341023a00b824200341b8246a10fc010b02400240202f50450d00420021230c010b200341a8376a41186a200341880a6a41186a290300370300200341a8376a41106a200341880a6a41106a290300370300200341a8376a41086a200341880a6a41086a290300370300200320032903880a3703a837420121230b200341a8026a41186a200341a8376a41186a290300370300200341a8026a41106a200341a8376a41106a290300370300200341a8026a41086a200341a8376a41086a290300370300200341b8246a41086a200341e02f6a41086a290300370300200341b8246a41106a200341e02f6a41106a290300370300200341b8246a41186a200341e02f6a41186a290300370300200341b8246a41206a200341e02f6a41206a290300370300200341b8246a41286a200341e02f6a41286a290300370300200341b8246a41306a200341e02f6a41306a290300370300200320032903a8373703a802200320032903e02f3703b8244100210141002102203021220b200341e0196a41086a2205200341b8246a41086a2206290300370300200341e0196a41106a2207200341b8246a41106a290300370300200341e0196a41186a221d200341b8246a41186a290300370300200341e0196a41206a220a200341b8246a41206a290300370300200341e0196a41286a220b200341b8246a41286a290300370300200341e0196a41306a220c200341b8246a41306a290300370300200341a00b6a41086a220d200341a8026a41086a290300370300200341a00b6a41106a220e200341a8026a41106a290300370300200341a00b6a41186a220f200341a8026a41186a290300370300200320032903b8243703e019200320032903a8023703a00b20010d01200341e02f6a41306a200c290300370300200341e02f6a41286a200b290300370300200341e02f6a41206a200a290300370300200341e02f6a41186a201d290300370300200341e02f6a41106a2007290300370300200341e02f6a41086a2005290300370300200320032903e0193703e02f200341a8376a41306a2033370300200341a8376a41286a22022032370300200341a8376a41106a200d290300370300200341a8376a41186a200e290300370300200341a8376a41206a200f290300370300200320233703a837200320032903a00b3703b037200341d9246a200341a80a6a41186a290300370000200341d1246a200341a80a6a41106a290300370000200341c9246a200341a80a6a41086a290300370000200341c1246a20032903a80a37000020034190256a202437030020034188256a202237030020034181256a41013a0000200641073a0000200341e1246a20032903880a370000200341e9246a200341880a6a41086a290300370000200341f1246a200341880a6a41106a290300370000200341f9246a200341880a6a41186a290300370000200341023a00b824200341b8246a10fc01200341a8376a10ec07024020032903a837500d00200320023602b824200341b8246a10a4060b200341e02f6a10ec0720032903e02f500d00200320034188306a3602b824200341b8246a10a4060b200341b8096a41186a200341880a6a41186a290300370300200341b8096a41106a200341880a6a41106a290300370300200341b8096a41086a200341880a6a41086a290300370300200320032903880a3703b809420020084200200820247d2009202254ad7d2223200920227d2222200956202320085620232008511b22021b7d20094200202220021b222354ad7d2222200920237d2223200956202220085620222008511b22021b21084200202320021b2109410021024100211d0c010b202242208821042002411876210720024110762101200241087621062022a72105200241ff01714108470d014102211d410121020b200341ec246a20032800fb09360000200341e0246a200341b8096a41186a290300370300200341d8246a200341c8096a290300370300200341b8246a41186a200341c0096a290300370300200320093703b824200320032903b8093703c824200320032802f8093600e9242003201d3a00e824200320083703c02420032802d00a211d20032802c80a210a024002402002450d00200a201d10fd010c010b200a201d200341b8246a10ee070b410821020b024020032802cc0a450d0020032802c80a10390b200241ff01714108460d010b200020073a0023200020013a0022200020063a0021200041206a20023a0000200041186a41003a000020004200370308200041246a20044220862005ad84370200200042013703000c110b200341e0246a201b360200200341d5246a200341880a6a41186a290300370000200341cd246a200341980a6a290300370000200341c5246a200341880a6a41086a290300370000200320032903880a3700bd24200341003a00bc24200341013a00b824200341b8246a10fc01200041186a41003a000020004200370308200020032800810a3600192000411c6a200341840a6a280000360000200042003703000c100b200141086a290300210420022d0001210620022d00002101200228022822022002280200417f6a22053602000240024002400240024020010d00024020050d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200641ff01714102470d01200341c01d6a22054200370300200341b81d6a22024200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41c3fec300410910f2012001200341d80a6a41086a2206290000370300200320032900d80a3703a81d200341a00b6a41aba8c800410910f2012005200341a00b6a41086a2207290000370300200220032900a00b370300200341a81d6a412010a8020d03200542003703002002420037030020014200370300200342003703a81d200341d80a6a41c3fec300410910f20120012006290000370300200320032900d80a3703a81d200341a00b6a41a0a8c800410310f201200241086a2007290000370000200220032900a00b370000200341286a200341a81d6a10c20402402003280228450d0020032903302208500d00200842b8177c2004560d050b200341a81d6a41186a22054200370300200341b81d6a22064200370300200341a81d6a41086a22014200370300200342003703a81d200341d80a6a41c3fec300410910f2012001200341d80a6a41086a2207290000370300200320032900d80a3703a81d200341a00b6a41a0a8c800410310f201200241086a221d200341a00b6a41086a220a290000370000200220032900a00b370000200320043703b824200341a81d6a4120200341b8246a410810a302200542003703002006420037030020014200370300200342003703a81d200341d80a6a41c3fec300410910f20120012007290000370300200320032900d80a3703a81d200341a00b6a41aba8c800410910f201201d200a290000370000200220032900a00b370000200341013a00e019200341a81d6a4120200341e0196a410110a302200542003703002006420037030020014200370300200342003703a81d200341d80a6a41bffec300410410f20120012007290000370300200320032900d80a3703a81d200341a00b6a41cda6c800410b10f201201d200a290000370000200220032900a00b370000200341186a200341a81d6a10c2042003290320420020032802181b200442f02e80510d0241b4e0c200412741dce0c2001035000b20050d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c120b20004200370308200041186a41003a0000200042003703000c110b4182ecc600413041b4ecc6001035000b41c4ecc60041ce004194edc6001035000b200141a8016a2112200141386a2113200141216a21062002411a6a2901002104200241196a2d00002114200241186a2d00002115200241166a2f01002116200241156a2d00002117200241146a2d00002118200241126a2f01002119200241116a2d0000211a200241106a2d0000211c2002410e6a2f0100211f2002410d6a2d0000211e2002410c6a2d0000211b2002410a6a2f01002121200241096a2d00002120200241086a2d00002125200241066a2f01002127200241056a2d0000212a200241046a2d00002128200241026a2f0100212b200141a4016a280200210d200141a0016a280200210a2001419c016a2802002110200141346a280200210e200141306a280200210b2001412c6a2802002111200141286a280200213c200141206a2d000021292001411c6a280200212c200141186a280200210c200141146a2802002107200141106a280200210f2001410c6a280200213d2002280228210520022d0001212620022d0000211d024002400240200141086a280200417f6a0e03000102000b20032006280000360298162003200641036a28000036009b16200341e02f6a201341e40010c30a1a200341a8376a201241800110c30a1a20052005280200417f6a220236020002400240201d41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b202641ff017141014721010c010b4101210120020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200320043703d009200320143a00cf09200320153a00ce09200320163b01cc09200320173a00cb09200320183a00ca09200320193b01c8092003201a3a00c7092003201c3a00c6092003201f3b01c4092003201e3a00c3092003201b3a00c209200320213b01c009200320203a00bf09200320253a00be09200320273b01bc092003202a3a00bb09200320283a00ba092003202b3b01b8090240024020010d00200341e0196a41186a200341b8096a41186a2903002204370300200341e0196a41106a200341b8096a41106a2903002208370300200341e0196a41086a200341b8096a41086a2903002209370300200320032903b80922223703e01920034189216a200437000020034181216a2008370000200341f9206a2009370000200320223700f120200341013a00f020200341cc246a200e360200200341b8246a41106a200b360200200341b8246a410c6a2011360200200320293a00b8242003203c3602c02420032003280298163600b9242003200328009b163600bc24200341b8246a41186a200341e02f6a41e40010c30a1a200341bc256a200d360200200341b8246a4180016a200a360200200341b4256a2010360200200341c0256a200341a8376a41800110c30a1a200341a81d6a410c6a200c360200200341a81d6a41086a20073602002003202c3602b81d2003200f3602ac1d2003203d3602a81d200341a8026a200341f0206a200341b8246a200341a81d6a10840520032903a80242015121050c010b200341c0026a41003a0000200341c8026a41023a0000200342003703b002200342013703a8020240200c450d00200c410c6c2101200f210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b02402007450d002007410c6c450d00200f10390b0240200e450d00200e41246c21012011210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200b450d00200b41246c450d00201110390b0240200d450d00200d41246c21012010210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b41012105200a450d00200a41246c450d00201010390b200341e80e6a41086a2102200341a8026a41086a210102402005450d0020022001290300370300200241206a2205200141206a290300370300200241186a2206200141186a290300370300200241106a2207200141106a290300370300200241086a221d200141086a290300370300200041286a2005290300370300200041206a2006290300370300200041186a2007290300370300200041106a201d29030037030020002002290300370308200042013703000c110b20022001290300370300200241106a2205200141106a290300370300200241086a2206200141086a290300370300200041186a2005290300370300200041106a200629030037030020002002290300370308200042003703000c100b200320062800003602e0192003200641036a2800003600e319200341e02f6a201341e40010c30a1a200341a8376a201241800110c30a1a20052005280200417f6a2202360200024002400240201d41ff01710d00024020020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b202641ff01714102470d01200341f0206a41017210be04200341013a00f020200341cc246a200e360200200341c8246a200b360200200341b8246a410c6a2011360200200320293a00b824200320032802e0193600b924200320032800e3193600bc242003203c3602c024200341d0246a200341e02f6a41e40010c30a1a200341bc256a200d360200200341b8246a4180016a200a360200200341b4256a2010360200200341c0256a200341a8376a41800110c30a1a200341a81d6a410c6a200c360200200341b01d6a20073602002003202c3602b81d2003200f3602ac1d2003203d3602a81d200341a8026a200341f0206a200341b8246a200341a81d6a10840520032903a80242015121050c020b20020d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22022002280200417f6a220236020020020d00200510390b200341c0026a41003a0000200341c8026a41023a0000200342003703b002200342013703a8020240200c450d00200c410c6c2101200f210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b02402007450d002007410c6c450d00200f10390b0240200e450d00200e41246c21012011210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200b450d00200b41246c450d00201110390b0240200d450d00200d41246c21012010210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b41012105200a450d00200a41246c450d00201010390b200341e80e6a41086a2102200341a8026a41086a210102402005450d0020022001290300370300200241206a2205200141206a290300370300200241186a2206200141186a290300370300200241106a2207200141106a290300370300200241086a221d200141086a290300370300200041286a2005290300370300200041206a2006290300370300200041186a2007290300370300200041106a201d29030037030020002002290300370308200042013703000c100b20022001290300370300200241106a2205200141106a290300370300200241086a2206200141086a290300370300200041186a2005290300370300200041106a200629030037030020002002290300370308200042003703000c0f0b200341b8246a411a6a2004370100200341b8246a41196a20143a0000200341b8246a41186a20153a0000200341b8246a41166a20163b0100200341b8246a41156a20173a0000200341b8246a41146a20183a0000200341b8246a41126a20193b0100200341b8246a41116a201a3a0000200341b8246a41106a201c3a0000200341b8246a410e6a201f3b0100200341b8246a410d6a201e3a0000200341b8246a410c6a201b3a0000200341b8246a410a6a20213b0100200341b8246a41096a20203a0000200341b8246a41086a20253a0000200320273b01be242003202a3a00bd24200320283a00bc242003202b3b01ba24200320263a00b9242003201d3a00b824200341b8246a41266a200241266a2f01003b0100200341b8246a41226a200241226a280100360100200320053602e0240240200341b8246a10a2070d00200341a81d6a41186a22024200370300200341b81d6a22014200370300200341a81d6a41086a22054200370300200342003703a81d200341d80a6a41bffec300410410f2012005200341d80a6a41086a290000370300200320032900d80a3703a81d200341a00b6a41dfa7c800411810f2012002200341a00b6a41086a290000370300200120032900a00b370300200341003602c024200342013703b824200341b8246a4100410110810120032802b824220220032802c02422016a41013a00002003200141016a22013602c024024020032802bc2420016b41074b0d00200341b8246a2001410810810120032802b824210220032802c02421010b200220016a2007ad422086200fad843700002003200141086a22013602c024202cad422086200cad842104024020032802bc2420016b41074b0d00200341b8246a2001410810810120032802b824210220032802c02421010b200220016a20043700002003200141086a22013602c024024002400240024020290e03000102030b024020032802bc242001470d00200341b8246a2001410110810120032802b824210220032802c02421010b200220016a41003a0000200141016a21010c020b200341013a00e0190240024020032802bc242001460d00410121050c010b200341b8246a2001410110810120032802b824210220032d00e019210520032802c02421010b200220016a20053a0000200141016a21010c010b024020032802bc242001470d00200341b8246a2001410110810120032802b824210220032802c02421010b200220016a41023a0000200141016a21010b200341a81d6a41202002200110a302024020032802bc24450d00200210390b200041186a41003a000020004200370308200020032800a8373600192000411c6a200341ab376a280000360000200042003703000c0f0b20004200370308200041186a41003a0000200041206a41023a0000200042013703000c0e0b20062006280200417f6a220136020002400240200241ff01710d00024020010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22022002280200417f6a220236020020020d00200610390b201f41ff017141014721020c010b4101210220010d002006280208200628020c2802001102000240200628020c280204450d00200628020810390b200641046a22012001280200417f6a220136020020010d00200610390b200320083703d0092003200a3a00cf092003200b3a00ce092003200c3b01cc092003200d3a00cb092003200e3a00ca092003200f3b01c809200320103a00c709200320113a00c609200320123b01c409200320133a00c309200320143a00c209200320153b01c009200320163a00bf09200320173a00be09200320183b01bc09200320193a00bb092003201a3a00ba092003201c3b01b809024020020d00200341e0196a41186a2202200341b8096a41186a290300370300200341e0196a41106a2201200341b8096a41106a290300370300200341e0196a41086a2205200341b8096a41086a290300370300200320032903b8093703e019200341a81d6a2007201e109c01200341a8376a41186a200341a81d6a41186a2903002204370300200341a8376a41106a200341a81d6a41106a2903002208370300200341a8376a41086a200341a81d6a41086a2903002209370300200320032903a81d22223703a837200341d9246a2002290300370000200341d1246a2001290300370000200341c9246a2005290300370000200341c1246a20032903e019370000200341e1246a2022370000200341e9246a2009370000200341f1246a2008370000200341f9246a2004370000200341b8246a41086a41053a0000200341003a00b824200341b8246a10fc010240201d450d00200710390b200320032800a8023602e80e2003200341ab026a2800003600eb0e200041186a41003a000020004200370308200020032802e80e3600192000411c6a20032800eb0e360000200042003703000c0e0b0240201d450d00200710390b20004200370308200020032802e80e360019200020032900e02f370021200041186a41003a00002000411c6a20032800eb0e360000200041206a41023a0000200041286a200341e72f6a290000370000200042013703000c0d0b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e0240240200341b8246a10a2070d002007201e10ac020240201d450d00200710390b20004200370308200020032800a837360019200041186a41003a00002000411c6a200341ab376a280000360000200042003703000c0d0b0240201d450d00200710390b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c0c0b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e024024002400240200341b8246a10a20722050d000240201e450d002007201e410c6c6a21012007210203402002280200200241086a28020010fd012002410c6a22022001470d000b201e450d00201e410c6c21012007210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b201d450d02201d410c6c0d010c020b0240201e450d00201e410c6c21012007210203400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b201d450d01201d410c6c450d010b200710390b02402005450d0020004200370308200041206a41023a0000200041186a41003a0000200042013703000c0c0b20004200370308200020032800a837360019200041186a41003a00002000411c6a200341ab376a280000360000200042003703000c0b0b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e024024002400240200341b8246a10a20722050d000240201e450d002007201e41186c6a21012007210203402002280200200241086a2802002002410c6a280200200241146a28020010a302200241186a22022001470d000b201e450d00201e41186c21012007210203400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b201d450d02201d41186c0d010c020b0240201e450d00201e41186c21012007210203400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b201d450d01201d41186c450d010b200710390b02402005450d0020004200370308200041206a41023a0000200041186a41003a0000200042013703000c0b0b20004200370308200020032800a837360019200041186a41003a00002000411c6a200341ab376a280000360000200042003703000c0a0b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e0240240200341b8246a10a2070d000240024020074101460d0041f3b4c900410d10fd010c010b200341003602c024200342013703b824200341b8246a4100410410810120032802b824220120032802c02422026a201d3600002003200241046a22023602c024024020032802bc24220520026b41034b0d00200341b8246a2002410410810120032802bc24210520032802b824210120032802c02421020b200120026a201e36000041f3b4c900410d2001200241046a10a3022005450d00200110390b200341c4246a201e360200200341c0246a201d360200200320073602bc24200341043a00b824200341b8246a108105200320032800a8373602e02f2003200341ab376a2800003600e32f200041186a41003a000020004200370308200020032802e02f3600192000411c6a20032800e32f360000200042003703000c0a0b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c090b200341b8246a411a6a2008370100200341b8246a41196a200a3a0000200341b8246a41186a200b3a0000200341b8246a41166a200c3b0100200341b8246a41156a200d3a0000200341b8246a41146a200e3a0000200341b8246a41126a200f3b0100200341b8246a41116a20103a0000200341b8246a41106a20113a0000200341b8246a410e6a20123b0100200341b8246a410d6a20133a0000200341b8246a410c6a20143a0000200341b8246a410a6a20153b0100200341b8246a41096a20163a0000200341b8246a41086a20173a0000200320183b01be24200320193a00bd242003201a3a00bc242003201c3b01ba242003201f3a00b924200320023a00b824200341de246a200541046a2f01003b0100200341b8246a41226a2005280100360100200320063602e0240240200341b8246a10a2070d0041c0a5c00041052007201e10a3020240201d450d00200710390b200341c0246a41023a0000200341003a00b824200341b8246a10fc01200041186a41003a000020004200370308200042003703000c090b0240201d450d00200710390b20004200370308200041206a41023a0000200041186a41003a0000200042013703000c080b20032802ac37220b450d00200b410c6c450d0020032802a83710390b2006450d00200c10390b2005450d00200a10390b2001450d00200210390b4280808080d003210441ebc0c9002101410221020b20044280808080f003832001ad8421044103211b0b0240201d450d00200710390b200320032800e80e3602f0202003200341eb0e6a2800003600f320200041186a41003a000020004200370308200020032802f0203600192000411c6a20032800f320360000200041246a2004370200200020023a0022200041003a0021200041206a201b3a0000200042013703000c010b200341e80e6a10d203200341a00b6a10af01200041246a2008200484370200200020023a0022200041e3003a0021200041206a20013a0000200041186a41003a000020004200370308200042013703000b200341b0c2006a24000b130020004102360204200041acb1c1003602000bc29601040c7f017e217f087e230041f01f6b22032400200241146a2802002104200241106a2802002105200228020c2106200228020821072002280204210820022802002109200341386a200241246a41f00010c30a1a2001280228220a200a280200417f6a220b36020002400240024002400240024020012d00000d0020012d000121010240200b0d00200a280208200a28020c2802001102000240200a28020c280204450d00200a28020810390b200a41046a220b200b280200417f6a220b360200200b0d00200a10390b200141ff01714102470d01200341e8016a41186a22014200370300200341e8016a41106a220b4200370300200341e8016a41086a220c4200370300200342003703e801200341800d6a41ea86c200410c10f201200c200341800d6a41086a220a290000370300200320032900800d3703e801200341800d6a41d887c200410810f2012001200a290000370300200b20032900800d370300200341e8016a412010a802450d032000420037030820004201370300200041286a4119360200200041246a41e4b1c100360200200041226a41003a0000200041206a4183223b0100200041186a41003a00000c020b200b0d00200a280208200a28020c2802001102000240200a28020c280204450d00200a28020810390b200a41046a22012001280200417f6a220136020020010d00200a10390b2000420037030820004201370300200041186a41003a0000200041206a41023a00000b4101210b4101210c0c010b200341800d6a41186a22014200370300200341800d6a41106a220d4200370300200a4200370300200342003703800d200341a81c6a41b9fec300410610f201200a200341a81c6a41086a290000370300200320032900a81c3703800d200341e0146a41d0eec900410a10f2012001200341e0146a41086a290000370300200d20032900e014370300200341e8016a200341800d6a412010ab020240024020032d00e8014101460d00200341c0016a4200370300200341b8016a4200370300200341b0016a4200370300200342003703a8010c010b200341c0016a20034181026a290000370300200341b8016a200341f9016a290000370300200341b0016a200341f1016a290000370300200320032900e9013703a8010b200341e8016a200341386a10c10202400240200341e8016a200341a8016a412010c60a220e450d002000420037030820004201370300200041286a4113360200200041246a4188b2c1003602004101210b200041226a41013a0000200041206a4183223b0100200041186a41003a00000c010b200341980d6a4200370300200341900d6a4200370300200341800d6a41086a220a4200370300200342003703800d200341a81c6a41a6f2c500410d10f201200a200341a81c6a41086a290000370300200320032900a81c3703800d200341e0146a41c4b5c600411110f201200d41086a200341e0146a41086a290000370000200d20032900e014370000200341e8016a200341800d6a10e6030240024020032802e80122010d004100210a0c010b20032902ec01220f422088a7210a200fa7220b450d00200b412c6c450d00200110390b200320073602880d200320083602840d200320093602800d200341e8016a200a200341800d6a10e7034101210b200341e8016a41086a2802002110200341e8016a410c6a280200211120032802ec01210c024002400240024020032802e8014101460d00200341980d6a22014200370300200341900d6a220b4200370300200341800d6a41086a220a4200370300200342003703800d41062112200341a81c6a41b9fec300410610f201200a200341a81c6a41086a2213290000370300200320032900a81c3703800d200341e0146a41b0eec900410610f201200d41086a2214200341e0146a41086a2215290000370000200d20032900e014370000200341306a200341800d6a412010f501200328023421162003280230211720014200370300200b4200370300200a4200370300200342003703800d200341a81c6a41f1b5c900410d10f201200a2013290000370300200320032900a81c3703800d200341e0146a418bb6c900410c10f20120142015290000370000200d20032900e014370000200341e8016a200341800d6a412010b202410221180240024020032802f80222194102470d00200341800d6a410041800110c50a1a200341e8146a4200370300200342003703e01441e400211a41c801211b4101211c4100211d4100211e41012113410121144101210b410021190c010b200341800d6a200341e8016a41800110c30a1a200341e8146a200341a4036a29020037030020032003419c036a2902003703e014200341ac036a280200211f20034198036a280200211c20034194036a280200211b20034190036a28020021182003418c036a280200211a20034188036a280200211220034184036a280200212020034180036a280200211d20032802fc02212120032802f402211e20032802f002211320032802ec02211420032802e802210b0b20034180026a22154200370300200341f8016a22224200370300200341e8016a41086a220a4200370300200342003703e801200341d8016a41a6f2c500410d10f201200a200341d8016a41086a2201290000370300200320032900d8013703e801200341d8016a41b3f2c500411110f20120152001290000370300202220032900d801370300200341286a200341e8016a412010f5010240200b450d00200328022c2123200328022821242015420037030020224200370300200a4200370300200342003703e801200341d8016a41a6f2c500410d10f201200a2001290000370300200320032900d8013703e801200341d8016a41c4b5c600411110f201202241086a2001290000370000202220032900d80137000041002125200341a81c6a200341e8016a10e60320032902ac1c420020032802a81c220a1b210f200a41002802ccdd4a200a1b21150240024041002016410020171b22012023410020241b6b220a200a20014b1b200b70221620142013201420134b1b4f0d0041e00110382225450d062025200341800d6a41800110c30a220a201c3602b001200a201b3602ac01200a20183602a801200a201a3602a401200a20123602a001200a202036029c01200a201d36029801200a202136029401200a201936029001200a201e36028c01200a201336028801200a201436028401200a200b36028001200a20013602d801200a20163602d401200a200f3702cc01200a20153602c801200a201f3602c401200a20032903e0143702b401200a41bc016a200341e8146a2903003702000c010b200fa7220a450d00200a412c6c450d00201510390b024020250d00200342003702cc0141002124200341002802ccdd4a22213602c80141002126202121270c040b200342003702f40c200342003702cc01200341002802ccdd4a22213602f00c200320213602c801200341a81c6a419194c300410d10f201200341e0146a419e94c300411310f20141201038220a450d04200a20032900a81c370000200a41086a220b200341a81c6a41086a290000370000200a20032900e014370010200a41186a2213200341e0146a41086a22142900003700002003200a3602e801200342a080808080043702ec01412010382201450d042001200a290000370000200141186a2013290000370000200141106a200a41106a290000370000200141086a200b2900003700002014200341e8016a41086a280200220a360200200320032903e801220f3703e014200341940d6a200a360200200342a080808080043702840d200320013602800d2003200f37028c0d41002124200341003a009c0d2003411a3602980d200341e8016a200341800d6a10e903200328029404220b450d0241002124202121192021211841002114034020032802a804210a20032802a0042113200328029c04210120032802e80121150240202520032802ec01221220032802b00410ea03450d000240201420032802f40c470d00200341f00c6a201410b70120032802f00c211820032802f80c21140b201820144102746a2015360200200320032802f80c41016a22143602f80c02400240202420032802cc01460d00202421150c010b202420032802d0012215470d00200341c8016a2024410110be0320032802c801211920032802d00121150b201920154102746a20123602002003201541016a22243602d0010b02402001450d00200b10390b0240200a450d00201310390b200341e8016a200341800d6a10e903200328029404220b0d000c030b0b41f0f2c50041394188dac8001035000b2000420037030820004201370300200041286a2011360200200041246a2010360200200041206a200c360200200041186a41003a00000c030b024020032802840d450d0020032802800d10390b0240200341900d6a280200450d00200328028c0d10390b20032802f00c212720032802f40c2126024020032802f80c220a450d002027200a4102746a2128200341b4046a2129200341e8016a41086a212a200341a81c6a412c6a212b200341cc1c6a212c200341e8016a412c6a2120200341e8016a410472212d200341800d6a41a4026a212e202721130340200341800d6a2013280200220110eb03200341e8016a20032802800d220a20032802880d220b10ec0302402003280290042214450d00200a200b10fd0120032802e801212f200341e0146a202d41a40210c30a1a20032802a404211b200328029c04211d200328029804211a0b024020032802840d450d00200a10390b200341800d6a200110ed03200341e8016a20032802800d220a20032802880d220110ee030240024020032802e801220b0d004100210b0c010b200a200110fd01200341d8016a41086a202041086a280200360200200320202902003703d80120032802ec01211520032802f001211220032802f401211620032802f801211720032802fc01211820032802800221192003280284022123200328028802211e200328028c02211f200328029002211c0b024020032802840d450d00200a10390b02402014450d00200b450d00202b20032903d801370200202b41086a200341d8016a41086a2802003602002003201c3602d01c2003201f3602cc1c2003201e3602c81c200320233602c41c200320193602c01c200320183602bc1c200320173602b81c200320163602b41c200320123602b01c200320153602ac1c2003200b3602a81c200341800d6a200341e0146a41a40210c30a1a202e200341a81c6a109b01202a200341800d6a41c40210c30a1a202941086a202c41086a2802003602002029202c2902003702002003202f3602c004200341023602ec01200341073a00e801200341e8016a10fc0102402012450d002012410c6c2101200b210a03400240200a41046a280200450d00200a28020010390b200a410c6a210a200141746a22010d000b0b02402015450d002015410c6c450d00200b10390b02402018450d0020184104742101201641086a210a03400240200a280200450d00200a417c6a28020010390b200a41106a210a200141706a22010d000b0b0240201741ffffffff0071450d00201610390b02402019450d002023450d00201910390b0240201a450d00201410390b201b450d00201d10390b201341046a2113024002400240200b0d0020140d010b20140d01200b450d0102402012450d002012410c6c2101200b210a03400240200a41046a280200450d00200a28020010390b200a410c6a210a200141746a22010d000b0b02402015450d002015410c6c450d00200b10390b02402018450d0020184104742101201641086a210a03400240200a280200450d00200a417c6a28020010390b200a41106a210a200141706a22010d000b0b0240201741ffffffff0071450d00201610390b02402019450d002023450d00201910390b201c450d01201f10390c010b0240201a450d00201410390b201b450d00201d10390b20132028470d000b0b0240202641ffffffff0371450d00202710390b202510ef032025103920032802cc01212620032802c80121270b10f003200341800d6a41186a221b4200370300200341800d6a41106a221c4200370300200341800d6a41086a221a4200370300200342003703800d200341a81c6a41b9fec300410610f201201a200341a81c6a41086a2228290000370300200320032900a81c3703800d200341e0146a41b0eec900410610f201200d41086a2201200341e0146a41086a222b290000370000200d20032900e014370000200341206a200341800d6a412010f5012003280224210b20032802202113200341e8016a41186a22204200370300200341e8016a41106a221d4200370300200341e8016a41086a22174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017200341d8016a41086a221f290000370300200320032900d8013703e801200341d8016a41c4b5c600411110f201202241086a221e201f290000370000202220032900d801370000200341800d6a200341e8016a10e60320032802800d210a20032902840d210f201b4200370300201c4200370300201a4200370300200342003703800d200341a81c6a41f1b5c900410d10f201201a2028290000370300200320032900a81c3703800d200341e0146a418bb6c900410c10f2012001202b290000370000200d20032900e014370000200341e8016a200341800d6a412010b202200b410020131b2130200f4200200a1b2231422088a72118201041ffffffff0371212f202720244102746a2124200c20114102746a2123200a2021200a1b212520032802f80241024620032802e002222e4572212a200341a81c6a410472212c200341e0146a410472212d200c21012027210a034002400240200c450d00024020012023460d0041012112200a21132001210b200141046a221421010c020b202f450d00200c10390b0240200a2024460d004100210c20012114200a210b41002112200a41046a2213210a0c010b0240202641ffffffff0371450d00202710390b200341800d6a41186a4200370300200341800d6a41106a4200370300200341800d6a41086a220a4200370300200342003703800d200341a81c6a41f4eec600410510f201200a200341a81c6a41086a290000370300200320032900a81c3703800d200341e0146a41b483c800410a10f201200d41086a200341e0146a41086a290000370000200d20032900e014370000200341e8016a200341800d6a4120109c0220032802e801210b20032902ec012132200341e8016a41186a4200370300200341e8016a41106a4200370300200341e8016a41086a220a4200370300200342003703e801200341d8016a41a6f2c500410d10f201200a200341d8016a41086a2201290000370300200320032900d8013703e801200341d8016a41c4b7c600410910f201202241086a2001290000370000202220032900d801370000200341800d6a200341e8016a10f1030240024020032802800d22140d00200342003702f40c200320213602f00c41002112202121144100211e0c010b20032902840d210f200320143602f00c2003200f3702f40c200f422088a7211e200fa721120b20034180026a220c4200370300200341f8016a22134200370300200341e8016a41086a220a4200370300200342003703e801200341d8016a41a6f2c500410d10f201200a200341d8016a41086a2201290000370300200320032900d8013703e801200341d8016a41f0b4c600410f10f201202241086a22152001290000370000202220032900d801370000200341800d6a200341e8016a10f2030240024020032802800d221a0d004100211f2021211a4100211d410021280c010b200341800d6a41086a280200211d2003418c0d6a280200212820032802840d211f0b200c420037030020134200370300200a4200370300200342003703e801200341d8016a41a6f2c500410d10f201200a2001290000370300200320032900d8013703e801200341d8016a4188b4c600410f10f20120152001290000370000202220032900d801370000200341800d6a200341e8016a10f30320032802800d220a2021200a1b2113024020032902840d4200200a1b220f422088a7220c450d00200c410c6c21012013210a03400240200a41046a28020041ffffffff0371450d00200a28020010390b200a410c6a210a200141746a22010d000b0b0240200fa7220a450d00200a410c6c450d00201310390b20324200200b1b2132200b2021200b1b212002400240200c0d000240201f450d00201f412c6c450d00201a10390b02402012450d00201241346c450d00201410390b0240203242ffffffff0383500d00202010390b2031a7220a450d01200a412c6c450d01202510390c010b200342003702ac1c200320213602a81c2020417c6a212f20252018412c6c6a21152014201e41346c6a21192032422088a7211b202121294100211c4100211241002116410021242025210a024003402024417f6a2101202f20244102746a210b03402015200a460d02200141016a2101200b41046a210b200a280200210c200a412c6a2218210a200c4102470d000b200141016a21242012210c2016210a0240034002400240200a450d00200c2112200a21160c010b410020142014201946220a1b2113200c20142019476a2112410121162019201441346a200a1b2114200c21230b024020130d00201e212b0c020b4100210a2012210c201328020022172001490d000b2018210a20172001460d012023212b0b200141016a21240240024002402001201b4f0d00200b280200210b200341106a2001203010f40302402003280210450d004100210c2003280214212c0c020b41b0c8c60041de004190c9c6001065000b02400240201d450d00201d410274417c6a41027641016a21174100210a4100210b0340201b201a200a6a220c41286a2802006a2001460d02200a412c6a210a2017200b41016a220b470d000b0b2018210a0c030b200c280200210b200341e8016a41186a221c200c411c6a290200370300200341e8016a41106a2229200c41146a290200370300200341e8016a41086a222c200c410c6a2902003703002003200c41046a2902003703e801200c41246a2802002117200c200c412c6a201d412c6c200a6b41546a10c40a1a200341e0146a41186a220a201c290300370300200341e0146a41106a220c2029290300370300200341e0146a41086a221c202c290300370300200320032903e8013703e014200341186a2001203010f4032003280218450d01200328021c212c200341800d6a41186a200a290300370300200341800d6a41106a200c290300370300200341800d6a41086a201c290300370300200320032903e0143703800d201d417f6a211d4101210c20032802b01c211c0b200341e8016a411f6a222d200341800d6a411f6a280000360000200341e8016a41186a222a200341800d6a41186a290300370300200341e8016a41106a222e200341800d6a41106a290300370300200341e8016a41086a2210200341800d6a41086a290300370300200320032903800d3703e8010240201c20032802ac1c470d00200341a81c6a201c10f50320032802b01c211c0b20032802a81c2229201c41386c6a220a2001360204200a202b360200200a410c6a200c3a0000200a41086a200b360200200a410d6a20032903e801370000200a41156a2010290300370000200a411d6a202e290300370000200a41256a202a290300370000200a412c6a202d280000360000200a41346a202c360200200a41306a20173602002003201c41016a221c3602b01c2018210a0c010b0b41b0c8c60041de0041a0c9c6001065000b20032802ac1c21240240201c450d00201c41386c2117410021132003418f026a211520034188026a211220034180026a2118200341f8016a2119200341f0016a21164100210c2029210a0340200a410c6a2d000022234102460d01200a41046a290200210f200a28020021142015200a41346a2800003600002012200a412d6a2900003703002018200a41256a2900003703002019200a411d6a2900003703002016200a41156a2900003703002003200a410d6a2900003703e801024020032802f80c220b200c20146a2201490d000240200b20032802f40c470d00200341f00c6a200b10f6030b200a41386a210a200c41016a210c20032802f00c200141346c6a220141346a20012013200b20146b6a41346c10c40a1a200120233a00082001200f370200200141096a20032903e801370000200141116a2016290300370000200141196a2019290300370000200141216a2018290300370000200141296a2012290300370000200141306a20152800003600002003200b41016a3602f80c2013417f6a2113201741486a22170d010c020b0b2001200b1044000b02402024450d00202441386c450d00202910390b200341e8016a41086a200341f00c6a41086a280200360200200320032903f00c3703e801200341e8016a10f703200320283602f4012003201d3602f0012003201f3602ec012003201a3602e801200341e8016a10f803200320313702ec01200320253602e801200341e8016a10f903203242ffffffff0383500d00202010390b0240024020040d00410021140c010b410021154100210b410021144100210102400340024002402014450d002006200141f4026c6a210a2006200120156a41f4026c6a210c034002400240200a41bc026a2802000d00200b21130c010b41012113200b0d030b200c200a41f40210c30a210b200a41f4026a210a200b41f4026a210c2013210b2004200141016a22014b0d000c040b0b2006200141f4026c6a210a034002400240200a41bc026a2802000d00200b210c0c010b4101210c200b0d020b200a41f4026a210a200c210b2004200141016a22014b0d000b410021140c030b200a109f032015417f6a2115201441016a21142004200141016a22014b0d000b0b024020140d00410021140c010b2006200120146b41f4026c6a2006200141f4026c6a200420016b41f4026c10c40a1a0b200341800d6a41186a220c4200370300200341800d6a41106a22134200370300200341800d6a41086a220b4200370300200342003703800d200341a81c6a41b9fec300410610f201200b200341a81c6a41086a2215290000370300200320032900a81c3703800d200341e0146a4184edc900410b10f201200d41086a2212200341e0146a41086a2218290000370000200d20032900e014370000200341e8016a200341800d6a10fa0320032903e801210f200341e8016a41106a2219290300213220032903f0012131200341e8016a41186a22162903002133200341e8016a10fb03200420146b212302400240427f427f20314200200f420151220a1b220f20324200200a1b7c22322032200f541b220f20334200200a1b7c22322032200f541b20032903f001560d002006210a200521010c010b02402023450d00200441f4026c201441f4026c6b21012006210a0340200a109f03200a41f4026a210a2001418c7d6a22010d000b0b4100210102402005450d00200541f4026c450d00200610390b2021210a410021230b201620034180016a2903003703002019200341f8006a290300370300200341e8016a41086a200341f0006a290300370300200320032903683703e801200320233602e001200320013602dc012003200a3602d801200c420037030020134200370300200b4200370300200342003703800d200341a81c6a41a6f2c500410d10f201200b2015290000370300200320032900a81c3703800d200341e0146a41c4b7c600410910f20120122018290000370000200d20032900e014370000200341e0146a200341800d6a10f1030240024020032802e014220a0d00200342003702ac1c200320213602a81c0c010b200320032902e4143702ac1c2003200a3602a81c0b200341800d6a200341e8016a200341d8016a200341a81c6a10fc03200341880d6a280200211b2003418c0d6a280200210a20032802840d211a0240024002400240024002400240024020032802800d4101460d00200a450d0342002132200341980d6a220b4200370300200341900d6a220c4200370300200341800d6a41086a22014200370300200342003703800d200341a81c6a41a6f2c500410d10f2012001200341a81c6a41086a2208290000370300200320032900a81c3703800d200341e0146a41c4b5c600411110f201200d41086a2205200341e0146a41086a2207290000370000200d20032900e014370000200341e8016a200341800d6a10e60320032802e801210420032902ec01210f200b4200370300200c420037030020014200370300200342003703800d200341a81c6a41a6f2c500410d10f20120012008290000370300200320032900a81c3703800d200341e0146a41c4b7c600410910f20120052007290000370000200d20032900e014370000200f420020041b21312004202120041b2113200341e8016a200341800d6a10f103024020032802e80122060d004100210820212106410021090c030b024020032902ec012232422088a722080d0041002108410021090c030b201a200a4102746a21052031422088a7211741002114200341e8016a41086a2115200341e8016a41106a2112200341e8016a41186a2118201a210c4202210f41002109410021040340024002402009450d002006200441346c6a210a2006200420146a41346c6a210103400240200fa7220b4102470d0002400240200c2005470d004100210b2005210c0c010b200c28020021074101210b200c41046a210c0b2007ad422086200bad84210f0b0240200b4101470d00200a280200200f422088a7220b460d030b2001200a290200370200200141306a200a41306a280200360200200141286a200a41286a290200370200200141206a200a41206a290200370200200141186a200a41186a290200370200200141106a200a41106a290200370200200141086a200a41086a290200370200200a41346a210a200141346a2101200441016a22042008490d000c050b0b2006200441346c6a210a200fa721010340024020014102470d0002400240200c2005470d00410021012005210c0c010b200c280200210b41012101200c41046a210c0b200bad4220862001ad84210f0b024020014101470d00200a280200200f422088a7220b460d020b200a41346a210a200441016a22042008490d000b410021090c040b0240200fa74102470d002005200c41046a200c2005461b210c0b410121010240200a2d00084101470d002015200a41116a2900003703002012200a41196a2900003703002018200a41216a2900003703002003200a41096a2900003703e801200a412c6a2802002116200a2802042119410021010b0240200b20174f0d00200f42808080807083420284210f2013200b412c6c6a220a2019360204200a2001360200200a41086a20032903e801370200200a41106a2015290300370200200a41186a2012290300370200200a41206a2018290300370200200a41286a20163602002014417f6a2114200941016a2109200441016a22042008490d010c030b0b200b201741a099c100103c000b2000420037030820004201370300200041286a200a360200200041246a201b360200200041206a201a3602004100210b200041186a41003a00000c0a0b024020090d00410021090c010b2006200420096b41346c6a2006200441346c6a200820046b41346c10c40a1a0b200341980d6a4200370300200341900d6a4200370300200341800d6a41086a220a4200370300200342003703800d200341a81c6a41a6f2c500410d10f201200a200341a81c6a41086a290000370300200320032900a81c3703800d200341e0146a41c4b7c600410910f201200d41086a200341e0146a41086a290000370000200d20032900e014370000200820096b220141346c41046a220a417f4c0d0102400240200a0d00410121040c010b200a10382204450d080b200341003602f0012003200a3602ec01200320043602e801200341e8016a200110d20120062001200341e8016a10d401200341800d6a412020032802e801220a20032802f00110a302024020032802ec01450d00200a10390b02402032a7220a450d00200a41346c450d00200610390b200320313702ec01200320133602e801200341e8016a10f9030b200341800d6a41186a4200370300200341800d6a41106a4200370300200341800d6a41086a220a4200370300200342003703800d200341a81c6a41f1b5c900410d10f201200a200341a81c6a41086a290000370300200320032900a81c3703800d200341e0146a418bb6c900410c10f201200d41086a200341e0146a41086a290000370000200d20032900e014370000200341e8016a200341800d6a412010b20220032903e801213220032802f802210c200341e8016a41186a220a4200370300200341e8016a41106a22244200370300200341e8016a41086a22014200370300200342003703e801200341d8016a41a4dcc500410310f2012001200341d8016a41086a2204290000370300200320032900d8013703e801200341d8016a419ce1c500410d10f201200a2004290000370300202420032900d801370300200341800d6a200341e8016a4120109c0220032802800d210b20032902840d210f200a42003703002024420037030020014200370300200342003703e801200341d8016a41a4dcc500410310f20120012004290000370300200320032900d8013703e801200341d8016a41e4e1c500411a10f201200a2004290000370300202420032900d801370300200341086a200341e8016a412010f501200f4200200b1b2134200b2021200b1b211202400240024020032802080d002034422088a721150c010b2034422088a72215450d00200328020c210b4100210a2015210420152101034002400240200b20122004410176200a6a22094102746a28020022044d0d00200941016a210a0c010b20092101200b2004460d030b2001200a6b21042001200a4b0d000b0b410021090b0240024020092015490d0041002128410021050c010b42002032200c4102461b223242e4007e42e400802135200341c0186a2129200341e0146a41186a212b200341b8186a212c200341f0146a210e41002128410021054200210f03402032200f580d01201220094102746a2217280200210c024020050d0041bc0210382205450d0941002106200541003b01ba02200541003602000b20352032200f7d200f501b213320052107200621130240034020072f01ba02221441186c21084168210a417f210b200741046a221821010240034002402008200a6a4168470d002014210b0c020b20012802002104200b41016a210b200a41686a210a200141046a2101417f2004200c472004200c4b1b22044101460d000b0240200441016a0e020100010b2007200a6b21130c020b02402013450d002013417f6a21132007200b4102746a41bc026a28020021070c010b0b200341800d6a200c10fd03200341e8016a20032802800d220a20032802880d10fe030240024020032802f00122080d0041e00010382208450d0b4200213641082114420021370c010b20032903e801223642808080807083213720032802f40121140b024020032802840d450d00200a10390b200341e8016a200c10ff03200341800d6a20032802e801221320032802f00110a20220032802800d410146210a20032802840d210120032802880d2104024020032802ec01450d00201310390b20014100200a1b211f20044100200a1b21202037203642ffffffff0f8384213802400240024002400240024002400240024002400240024002400240024020072f01ba02220a410a4b0d002018200b4102746a2101200b200a490d012001200c360200200741306a21010c020b410021214104210a02400240200b41054f0d00200b21010c010b4105210a4105210102400240200b417b6a0e020201000b200b41796a2101410121214106210a0c010b41002101410121210b41bc0210382204450d17200441003b01ba0220044100360200200420072f01ba022213200a417f736a220b3b01ba02200b410c4f0d052013200a41016a221d6b200b470d06200741306a221e200a41186c6a22132902102136201328020c21252013280208210d201329020021372018200a4102746a280200211c200441046a2018201d4102746a200b41027410c30a1a200441306a201e201d41186c6a200b41186c10c30a1a2007200a3b01ba022004200720211b220a41046a221d20014102746a210b02400240200141016a2213200a2f01ba0222184d0d00200b200c360200200a41306a210b0c010b201d20134102746a200b201820016b221d41027410c40a1a200b200c360200200a41306a220b201341186c6a200b200141186c6a201d41186c10c40a1a0b200b200141186c6a221320203602142013201f3602102013201436020c2013200836020820132038370200200a201841016a3b01ba022007280200220a0d02410021200c030b2018200b41016a22044102746a2001200a200b6b221341027410c40a1a2001200c360200200741306a2201200441186c6a2001200b41186c6a201341186c10c40a1a0b2001200b41186c6a221320203602142013201f3602102013201436020c20132008360208201320383702002007200a41016a3b01ba020c0b0b4100212020362138201c211d20042121034020072f01b8022108200a22142f01ba02221f410b490d02410021184104210a024020084105490d002008210a024002402008417b6a0e020201000b200841796a2108410121184106210a0c010b41002108410121184105210a0b41ec0210382204450d15200441003b01ba0220044100360200200420142f01ba02220b200a417f736a22013b01ba022001410c4f0d05200b200a41016a22076b2001470d06201441306a221e200a41186c6a220b2902102136200b28020c2119200b2802082116200b2902002131201441046a220b200a4102746a280200211c200441046a200b2007410274222f6a200141027410c30a1a200441306a201e200741186c6a200141186c10c30a1a2014200a3b01ba0220042f01ba02220141016a210b2001410c4f0d07201f200a6b220a200b470d08202041016a2120200441bc026a2014202f6a41bc026a200a41027410c30a1a4100210a024003402004200a4102746a41bc026a280200220b200a3b01b802200b2004360200200a20014f0d01200a200a2001496a220a20014d0d000b0b2004201420181b220b41046a22182008410274221f6a210702400240200841016a220a200b2f01ba0222014d0d002007201d360200200b41306a21180c010b2018200a4102746a2007200120086b221e41027410c40a1a2007201d360200200b41306a2218200a41186c6a2018200841186c6a201e41186c10c40a1a0b200141016a21072018200841186c6a221820383702102018202536020c2018200d36020820182037370200200b41bc026a21180240200841026a220d200141026a22254f0d002018200d4102746a2018200a4102746a200120086b41027410c40a1a0b2018200a4102746a2021360200200b20073b01ba020240200a20254f0d00200b201f6a41c0026a210a0340200a2802002201200841016a22083b01b8022001200b360200200a41046a210a20072008470d000b0b203121372016210d201921252036213820142107201c211d200421212014280200220a0d000b0b41ec021038220a450d13200a20053602bc02200a41003b01ba02200a4100360200200541003b01b8022005200a36020020062020470d07200a2f01ba022201410b4f0d08200641016a2106200a200141016a22083b01ba02200a200141186c6a220b413c6a2025360200200b41386a200d360200200b41306a2037370200200a20014102746a41046a201c360200200b41c0006a2036370200200a41bc026a20084102746a2004360200200420083b01b8022004200a360200202841016a2128200a21050c0a0b201441046a210102400240201f20084b0d00200120084102746a201d360200200841016a210a201441306a21010c010b2001200841016a220a4102746a200120084102746a2201201f20086b220441027410c40a1a2001201d360200201441306a2201200841186c6a220b41186a200b200441186c10c40a1a0b201f41016a21042001200841186c6a220120383702102001202536020c2001200d36020820012037370200201441bc026a2101201f41026a210b0240201f20084d0d00200841027420016a41086a2001200a4102746a201f20086b41027410c40a1a0b2001200a41027422086a2021360200201420043b01ba02200a200b4f0d08201420086a41bc026a2101034020012802002204200a3b01b80220042014360200200141046a2101200b200a41016a220a470d000c090b0b200b410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2001410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200b410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b202841016a21280b02400240024002400240024002402013280200220a201341046a2802002201460d0020132013410c6a280200417f6a200a41016a7122083602002013280208200a410c6c6a220b280200220a0d012008210a0b200a2001470d040c010b200b2802082104200b280204210b20132013280210417f6a3602102013201328021420046b360214200320043602dc012003200a3602d8010240024002400240024020040d002003410b3a00800d0c010b200a2d0000210720032004417f6a3602dc012003200a41016a3602d801024020070d00200341e8016a200341d8016a10a801024020032d00e801410b470d002003410b3a00800d0c020b200341800d6a200341e8016a41e00710c30a1a20032d00800d410b460d012003200c3602b41c200341013a00b01c200342013703a81c200341e8016a200341800d6a41e00710c30a1a200341e0146a200341a81c6a200341e8016a203342001080040240024020032802e0140e03040001040b20032903e814213320032802f014410b470d05202b10af01202910d2030c050b20032802e8142204410b470d03200e10af01202c10d203420021330c040b2003410b3a00800d0b41002802a8fe4a450d0741002802a4fe4a210141002802a0fe4a210441002802acfe4a210c20034184026a41f4ddca00360200200341f8016a42013703002003419c026a41ebb2c400ad4280808080d0088437020020034190026a41cbb2c400ad428080808080048437030020034188026a4200370300200341f0016a4111360200200341d8ebc5003602f40120034281808080a00a3702a4022003410036029802200341e0ebc5003602ec01200341013602e801200441f4ddca00200c410246220c1b200341e8016a200141b0a7c000200c1b28021011030020032d00800d410b470d040c070b20032903e81421330c010b4200213320044111460d050b2033200f7c210f0240200b450d00200a103920082001460d010c040b20082001470d030b201520094d0d012017201741046a20152009417f736a41027410c40a1a2015417f6a221520094100201520094b1b22094b0d040c050b200341800d6a1081040c020b200920151045000b200941016a20157021090c010b0b200b450d00200a10390b2034a7210a02400240201520094b0d0020034180026a4200370300200341f8016a4200370300200341e8016a41086a22014200370300200342003703e801200341d8016a41a4dcc500410310f2012001200341d8016a41086a2204290000370300200320032900d8013703e801200341d8016a41e4e1c500411a10f201202441086a2004290000370000202420032900d801370000200341e8016a412010fd010c010b201220094102746a280200210120034180026a4200370300200341f8016a4200370300200341e8016a41086a22044200370300200342003703e801200341d8016a41a4dcc500410310f2012004200341d8016a41086a220b290000370300200320032900d8013703e801200341d8016a41e4e1c500411a10f201202241086a200b290000370000202220032900d801370000200320013602800d200341e8016a4120200341800d6a410410a3020b200320153602880d200320123602800d2003200a3602840d20034180026a4200370300200341f8016a4200370300200341e8016a41086a22014200370300200342003703e801200341d8016a41a4dcc500410310f2012001200341d8016a41086a2204290000370300200320032900d8013703e801200341d8016a419ce1c500410d10f201202441086a2004290000370000202420032900d801370000200341203602e4142003200341e8016a3602e014200341800d6a200341e0146a1096030240200a41ffffffff0371450d00201210390b2005450d032005210a024003402006450d012006417f6a2106200520052f01ba024102746a41bc026a2802002105200a2802bc02210a0c000b0b2028450d010240024002400240200a2f01ba020d00410021040340410021010240200a2802002208450d00200441016a210c200a2f01b802210b200821010b024041ec0241bc0220041b450d00200a10390b2001450d04200c21042001210a200b20012f01ba024f0d000b2001200b41186c6a41306a21082001200b4102746a220a41046a28020021130240200c0d002001210a0c020b200a41c0026a280200210a0240200c417f6a2204450d000340200a2802bc02210a2004417f6a22040d000b0b410021050c020b200a41306a2108200a28020421134100210b200a21010b200b41016a21050b2028417f6a21070240024002402001200b41186c6a220141386a280200220c450d002001413c6a2802002106200141c0006a2802002115200141c4006a28020021122008290200210f03400240024002400240200f422088a7220b200fa72209460d00200341800d6a201310fd032006417f6a2208200b20096b712204410c6c41046a2201417f4c0d0920032802880d211820032802800d21140240024020010d00410121170c010b200110382217450d100b200341003602f001200320013602ec01200320173602e801200341e8016a200410d201200921010340200c2001410c6c6a22042802002004280208200341e8016a10d601200141016a2008712201200b470d000b2014201820032802e801220120032802f00110a302024020032802ec01450d00200110390b024020032802840d450d00201410390b02400240200b2009490d0002402006200b490d00200b21014100210b0c020b200b2006419cafc3001055000b2006210120062009490d020b024020012009460d002001410c6c2009410c6c22016b2104200c20016a210103400240200141046a280200450d00200128020010390b2001410c6a2101200441746a22040d000b0b0240200b450d00200b410c6c2104200c210103400240200141046a280200450d00200128020010390b2001410c6a2101200441746a22040d000b0b02402006450d002006410c6c450d00200c10390b200341e8016a201310ff0320032802f001210b20032802e8012104410810382201450d0f20012012360004200120153600002004200b2001410810a3022001103920032802ec01450d03200410390c030b200341e8016a201310fd0320032802e801220120032802f00110fd01024020032802ec01450d00200110390b200341e8016a201310ff0320032802e801220120032802f00110fd01024020032802ec01450d00200110390b20062009490d012006450d022006410c6c450d02200c10390c020b41b0adc300412341d4adc3001035000b20092006419cafc3001055000b2007450d06200a450d0202400240024002402005200a2f01ba02490d00410021040340410021010240200a2802002205450d00200441016a2108200a2f01b802210b200521010b024041ec0241bc0220041b450d00200a10390b024020010d004100210a0c050b200821042001210a200b20012f01ba024f0d000b2001200b41186c6a41306a21092001200b4102746a220a41046a2802002113024020080d002001210a0c020b200a41c0026a280200210a02402008417f6a2204450d000340200a2802bc02210a2004417f6a22040d000b0b410021050c020b200a200541186c6a41306a2109200a20054102746a41046a2802002113200a21012005210b0b200b41016a21050b2001200b41186c6a220141c4006a2802002112200141c0006a28020021152001413c6a2802002106200141386a280200210c2009290200210f0b2007417f6a2107200c0d000b0b2007450d05034002400240024002402005200a2f01ba02490d00410021040340410021010240200a2802002208450d00200441016a210c200a2f01b802210b200821010b024041ec0241bc0220041b450d00200a10390b024020010d004100210a0c050b200c21042001210a200b20012f01ba024f0d000b2001200b41186c6a41306a21080240200c0d002001210a0c020b200b41027420016a41c0026a280200210a0240200c417f6a2204450d000340200a2802bc02210a2004417f6a22040d000b0b410021050c020b200a200541186c6a41306a21082005210b200a21010b200b41016a21050b2001200b41186c6a2201413c6a2802002119200141386a2802002116200829020021310b2016450d07024002402031422088a7220b2031a72201490d0002402019200b490d00200b21044100210b0c020b200b2019419cafc3001055000b2019210420192001490d030b024020042001460d002004410c6c2001410c6c22016b2104201620016a210103400240200141046a280200450d00200128020010390b2001410c6a2101200441746a22040d000b0b0240200b450d00200b410c6c21042016210103400240200141046a280200450d00200128020010390b2001410c6a2101200441746a22040d000b0b2007417f6a210702402019450d002019410c6c450d00201610390b20070d000c060b0b41b4fcca00412b41e4f8ca001035000b41b0adc300412341d4adc3001035000b00000b1034000b200a450d010b410021010340200a2802002104024041ec0241bc0220011b450d00200a10390b2001417f6a21012004210a20040d000b0b200341e8016a41186a220a4200370300200341e8016a41106a22014200370300200341e8016a41086a22044200370300200342003703e801200341800d6a41ea86c200410c10f2012004200341800d6a41086a220b290000370300200320032900800d3703e801200341800d6a41d887c200410810f201200a200b290000370300200120032900800d370300200341e8016a412041f4ddca00410010a302200041186a41003a0000200041106a2023ad42a08d067e4280e59af7007c37030020004201370308200042003703000240201b41ffffffff0371450d00201a10390b200328023c21010240200341386a410c6a280200220a450d00200a41246c21002001210a034002400240024002400240200a2d00000e050400010204030b200a410c6a280200450d03200a41086a28020010390c030b200a410c6a280200450d02200a41086a28020010390c020b200a410c6a280200450d01200a41086a28020010390c010b200a41086a280200450d00200a41046a28020010390b200a41246a210a2000415c6a22000d000b0b0240200341c0006a280200220a450d00200a41246c450d00200110390b200228021821040240200241206a280200220a450d00200a41306c2100200441086a210a03400240200a2802002201450d00200141c8006c450d00200a417c6a28020010390b200a41306a210a200041506a22000d000b0b2002411c6a280200220a450d05200a41306c450d05200410390c050b200b280200220b20184f0d002025200b412c6c6a220a2802002101200a4102360200201a200a41106a290200370300201c200a41186a290200370300201b200a41206a290200370300200341800d6a41206a220b200a41286a2802003602002003200a41086a2902003703800d0240024002402001417f6a0e020101000b200a2802042115024020120d0020204200370300201d420037030020174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017201f290000370300200320032900d8013703e801200341d8016a41f0b4c600410f10f201201e201f290000370000202220032900d801370000200341e0146a200341e8016a10f2030240024020032802e014220a0d00200342003702ac1c200320213602a81c410021122021210a0c010b202c41086a202d41086a280200360200202c202d2902003702002003200a3602a81c20032802b41c21120b202a0d022003201241016a202e703602b41c200341e8016a41206a2219200b2802003602002020201b290300370300201d201c2903003703002017201a290300370300200320032903800d3703e801024020032802b01c220120032802ac1c470d00200341a81c6a200110fd0220032802a81c210a20032802b01c21010b200a2001412c6c6a220a2015360200200a410c6a2017290300370200200a20032903e801370204200a41146a201d290300370200200a411c6a2020290300370200200a41246a2019280200360200200a20123602282028200141016a360200202b2028290300370300200320032903a81c220f3703e0140240200fa7220a0d0020204200370300201d420037030020174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017201f290000370300200320032900d8013703e801200341d8016a41f0b4c600410f10f201201e201f290000370000202220032900d801370000200341e8016a412010fd010c020b20204200370300201d420037030020174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017201f290000370300200320032900d8013703e801200341d8016a41f0b4c600410f10f201201e201f290000370000202220032900d801370000200341e8016a200341e0146a10820420032802e4142201450d012001412c6c450d01200a10390c010b20204200370300201d420037030020174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017201f290000370300200320032900d8013703e801200341d8016a41c0b6c600411410f201201e201f290000370000202220032900d801370000200341e0146a200341e8016a4120109c0220032802e014220a2021200a1b2119024020032902e4144200200a1b220f422088a72229450d004100210a2029210b20292101024003400240024020152019200b410176200a6a220b4102746a221628020022124d0d00200b41016a210a0c010b20152012460d02200b21010b2001200a6b210b2001200a4b0d000c020b0b2016201641046a2029200b417f736a41027410c40a1a200f4280808080707c210f0b200320193602e0142003200f3702e41420204200370300201d420037030020174200370300200342003703e801200341d8016a41a6f2c500410d10f2012017201f290000370300200320032900d8013703e801200341d8016a41c0b6c600411410f201201e201f290000370000202220032900d801370000200341203602ac1c2003200341e8016a3602a81c200341e0146a200341a81c6a109703200f42ffffffff0383500d00201910390b201421012013210a0c010b0b4180c4c000413941bcc4c0001035000b1030000b200e410047210c0b200328023c21010240200341386a410c6a280200220a450d00200a41246c21002001210a034002400240024002400240200a2d00000e050400010204030b200a410c6a280200450d03200a41086a28020010390c030b200a410c6a280200450d02200a41086a28020010390c020b200a410c6a280200450d01200a41086a28020010390c010b200a41086a280200450d00200a41046a28020010390b200a41246a210a2000415c6a22000d000b0b0240200341c0006a280200220a450d00200a41246c450d00200110390b0240200b450d0002402004450d00200441f4026c21002006210a0340200a109f03200a41f4026a210a2000418c7d6a22000d000b0b2005450d00200541f4026c450d00200610390b0240200c450d0002402007450d00200741d0006c21012009210a0340200a28020021000240200a41086a2204280200220b450d00200010390b200a20003602002004200b360200200a41d0006a210a200141b07f6a22010d000b0b2008450d00200841d0006c450d00200910390b200228021821040240200241206a280200220a450d00200a41306c2100200441086a210a03400240200a2802002201450d00200141c8006c450d00200a417c6a28020010390b200a41306a210a200041506a22000d000b0b2002411c6a280200220a450d00200a41306c450d00200410390b200341f01f6a24000b810d03057f017e137f230041b0016b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ad010240024020022802000d00024002400240024002402002280204220520022802242206412c6e2201200120054b1bad422c7e2207422088a70d002007a72201417f4c0d000240024020010d00410421080c010b200110382208450d020b41002109200241003602382002200836023020022001412c6e36023402402005450d0020024188016a410472210a20024188016a41196a210b20024188016a41126a210c20024188016a410b6a210d4100210e03402006450d0420022002280220220f41016a3602202006417f6a21104102211102400240200f2d00000e020100070b2010450d052002200f41026a2201360220410121112006417e6a211002400240200f2d00010e020001080b20104104490d072006417a6a2112200128000021134100210102400240034020122001460d01200a20016a200f20016a221141066a2d00003a00002002200141016a2210360288012002201141076a3602202010210120104120470d000b200241ac016a41026a2211200d41026a2d00003a000020024184016a41026a2212200c41026a2d00003a00002002200a2f01003b01282002200d2f00003b01ac012002200c2f00003b0184012002200a41026a2d00003a002a20022802a801211420022802a4012115200228009d0121162002280196012117200228008f01211820024180016a41026a2219200b41026a2d00003a00002002200b2f00003b018001200620106b2201417a6a41034b0d012001417a6a21100c090b200241003602240c090b200241f8006a41026a20112d00003a0000200241f4006a41026a20122d00003a0000200241f0006a41026a20192d00003a0000200220022f01283b017c200220022d002a3a007e200220022f01ac013b0178200220022f0184013b0174200220022f0180013b01702002200f20106a2211410a6a360220200141766a2110201141066a280000211a410021110b200241e8006a41026a200241f8006a41026a2d00003a0000200241e4006a41026a200241f4006a41026a2d00003a0000200241e0006a41026a200241f0006a41026a2d00003a0000200220022d007e3a006e200220022f017c3b016c200220022f01783b0168200220022f01743b0164200220022f01703b01600b200e41016a210e200241d8006a41026a2201200241e8006a41026a2d00003a0000200241d4006a41026a220f200241e4006a41026a2d00003a0000200241d0006a41026a2206200241e0006a41026a2d00003a0000200220022d006e3a005e200220022f016c3b015c200220022f01683b0158200220022f01643b0154200220022f01603b0150200220022d005e3a004e200220022f015c3b014c200241c8006a41026a221220012d00003a0000200220022f01583b0148200241c4006a41026a2219200f2d00003a0000200220022f01543b0144200241c0006a41026a220f20062d00003a0000200220022f01503b0140024020092002280234470d00200241306a2009410110960820022802302108200228023821090b20082009412c6c6a22012013360204200120113602002001410a6a20022d004e3a0000200141086a20022f014c3b0100200141116a20122d00003a00002001410f6a20022f01483b0000200141186a20192d00003a0000200141166a20022f01443b00002001410b6a2018360000200141126a2017360000200141196a20163600002001411f6a200f2d00003a00002001411d6a20022f01403b0000200141286a201a360200200141246a2014360000200141206a20153600002002200228023841016a220936023820102106200e2005470d000b200228023021080b2008450d0520002002290234370204200020083602000c060b1034000b1030000b410021100b200220103602240b20022802342201450d002001412c6c450d00200228023010390b200242003702342002410028029cde4a3602302002410c36022c2002200241086a3602282002200241306a3602ac012002419c016a41013602002002420137028c01200241e4b4c400360288012002200241286a36029801200241ac016a41fc86ca0020024188016a103b1a2002280230200228023810e70202402002280234450d00200228023010390b200041003602000b2004450d00200310390b200241b0016a24000bb15905057f017e117f017e0a7f230041a00a6b22032400200341206a10b305200341d8046a22044200370300200341d0046a22054200370300200341c0046a41086a22064200370300200342003703c004200341a0076a4192d1c800410b10f2012006200341a0076a41086a2207290000370300200320032900a0073703c004200341a0076a41c0d3c800411310f20120042007290000370300200520032900a007370300200341186a200341c0046a412010f5010240024002402001ad42f4027e2208422088a70d002008a72206417f4c0d0020032802182109200328021c210a02400240024020060d00410421040c010b200610382204450d010b4100210720034100360238200320043602302003200641f4026e220636023402400240024002400240024002400240200620014f0d00200341306a200110b40520032802302104200328023821070c010b20010d004100210b0c010b200720016a210b2004200741f4026c6a2104200341cc096a210c4100210d41002802ccdd4a210e200341a0076a41106a2107200341a0076a41186a210f200341d0006a41286a2110200341d0006a41306a2111200341d0006a41386a211241042113410021060340200f420037030020074200370300200341a0076a41086a22144200370300200342003703a007200341c0046a41a6f2c500410d10f2012014200341c0046a41086a2215290000370300200320032900c0043703a007200341c0046a41c4b5c600411110f201200741086a2015290000370000200720032900c004370000200341c0046a200341a0076a10e60320032802c0042216200e20161b2117410121180240200620032902c404420020161b2208422088a74f0d004101211802400240201720136a2216417c6a280200417f6a0e020102000b20162802002119410021180c010b200341c0046a41186a4200370300200341c0046a41106a420037030020154200370300200342003703c004200341a0076a41f4eec600410510f20120152014290000370300200320032900a0073703c004200341a0076a41b483c800410a10f201200541086a2014290000370000200520032900a007370000200341a0076a200341c0046a4120109c02200620032902a407420020032802a00722161b221a422088a722194f0d032016200e20161b2216200d6a280200211941002118201a42ffffffff0383500d00201610390b02402008a72216450d002016412c6c450d00201710390b200641016a210641002116024020180d00200341d0006a201910eb03200341a0076a20032802502216200328025810ec03024020032802c809221b450d00200341c0046a200341a0076a41a80210c30a1a200341a8016a41386a200c41386a290200370300200341a8016a41306a200c41306a290200370300200341a8016a41286a200c41286a290200370300200341a8016a41206a200c41206a290200370300200341a8016a41186a200c41186a290200370300200341a8016a41106a200c41106a290200370300200341a8016a41086a200c41086a2902003703002003200c2902003703a8010b02402003280254450d00201610390b200341a0076a200341c0046a41a80210c30a1a2012200341a8016a41386a2903003703002011200341a8016a41306a2903003703002010200341a8016a41286a290300370300200341d0006a41206a200341a8016a41206a290300370300200341d0006a41186a200341a8016a41186a290300370300200341d0006a41106a200341a8016a41106a290300370300200341d0006a41086a200341a8016a41086a290300370300200320032903a801370350410121162019211c0b20042016360200200441046a201c360200200441086a200341a0076a41a80210c30a1a200441b0026a201b360200200441b4026a2003290350370200200441bc026a200341d0006a41086a290300370200200441c4026a200341d0006a41106a290300370200200441cc026a200341d0006a41186a290300370200200441d4026a200341d0006a41206a290300370200200441dc026a2010290300370200200441e4026a2011290300370200200441ec026a2012290300370200200441f4026a21042013412c6a2113200d41046a210d20012006470d000b200328023021040b2003200b360238200320043602a80120032004200b41f4026c6a3602ac012003200b360250200b4180808080024f0d01200342003702a4072003410028029cde4a3602a007024002400240200b410376200b4107714100476a2204450d00200341a0076a41002004108101200420032802a80722064b0d010b20032802a00721070c010b024020032802a40720066b200420066b22044f0d00200341a0076a2006200410810120032802a80721060b20032802a007220720066a21160240024020044102490d00201641002004417f6a10c50a1a200420066a20076a417f6a21160c010b2004450d010b201641003a00000b20032802a4072118200341a9076a200b200b410771200b41ffffffff0171220441084922061bad3c0000200342003c00a40720032007ad3e02a007200342003703b00741002116200341003602b807200320074100200441037620061b6aad3e00a5072003200341a8016a3602ac07200341a0076a1082052208422888a7221941ff01714102460d020340024020032802ac07220628020022042006280204470d0041012008422088a74107717421062008a7210402400240201941ff0171450d0020042d000020067221060c010b20042d00002006417f737121060b200420063a00000c050b2006200441f4026a36020041012008422088a74107717421192008a721060240024020042802004101470d00200441b0026a280200450d0020062d000020197221040c010b20062d00002019417f737121040b200620043a0000201641016a2116200341a0076a1082052208422888a7221941ff01714102470d000c040b0b2006201941f4f3c500103c000b200341cc046a4102360200200341b4076a4102360200200342023702a407200341d8edc3003602a007200341d4edc3003602c804200341023602c4042003200341c0046a3602b0072003200341d0006a3602c004200341a0076a41e8edc3001043000b4100211620034100360288040c010b20032016360288042016418080808002490d00200341cc046a4102360200200341b4076a4102360200200342023702a407200341d8edc3003602a007200341d4edc3003602c804200341023602c4042003200341c0046a3602b007200320034188046a3602c004200341a0076a41f8edc3001043000b02400240024002400240201841ffffffff01712018470d002003201841037422043602500240200420164f0d00200341cc046a4102360200200341b4076a4102360200200342023702a407200341d8edc3003602a007200341023602c4042003200341c0046a3602b0072003200341d0006a3602c804200320034188046a3602c004200341a0076a4198eec3001043000b20164103742104024020032802a801220620032802ac012214460d00034020044103762119200641b0026a280200210c20062802002113024002402004450d0020194107712216454103742016724108470d010b200320073602a0072003200441067620044138714100476a22163602a807200320183602a407024020162018470d00200341a0076a2018410110810120032802a007210720032802a80721160b200720166a41003a000020032802a407211820032802a00721070b200741002004410676200441c000491b6a211641012019410771742119024002402013450d00200c450d0020162d000020197221190c010b20162d00002019417f737121190b200441086a2104201620193a0000200641f4026a22062014470d000b0b200a410020091b211d200320183602482003200436024420032007360240200341d8046a4200370300200341d0046a4200370300200341c0046a41086a22044200370300200342003703c004200341a0076a41b9fec300410610f2012004200341a0076a41086a2206290000370300200320032900a0073703c004200341a0076a41d0eec900410a10f201200541086a2006290000370000200520032900a007370000200341a0076a200341c0046a412010ab020240024020032d00a0074101460d00200341a4046a42003702002003419c046a420037020020034194046a42003702002003420037028c040c010b200341a4046a200341b9076a2900003702002003419c046a200341b1076a29000037020020034194046a200341a9076a290000370200200320032900a10737028c040b2003201d36028804200241086a2802002207ad42d0007e2208422088a70d062008a72204417f4c0d060240024020040d004104211e0c010b20041038221e450d060b200341003602a0012003201e360298012003200441d0006e36029c012002280200221f200741d0006c22046a211c20022802042120201f21062007450d03200441b07f6a2111200341a0076a410c6a211b200341b0076a212120034188046a4104722122200341c0046a41047221234100210f201f2104410121070340200441d0006a210620042802002202450d04200320023602c0042023200441046a41cc0010c30a1a024020032802c404220a4103762001460d00200041046a410110df04200041013602000c030b0240200720032802cc04220e20164b724101710d00200041046a410210df04200041013602000c030b0240200e2003280228490d00200041046a410310df04200041013602000c030b200341a8016a200341c0006a10b505200341a0076a200341c0046a10b50520032802a007210920032802a807212420032802a8012110024020032802ac01220b410376220c450d0020032802a4072204410376200441077122196a22042004410771200441084922071b211720094100200441037620071b6a210d200b410771210420092107034020104100200441037620044108491b6a22162d0000410120044107717422147121150240024002402007200d470d0020172118200d2113201941ff0171201741ff0171460d010b201941ff0171221841016a22132013410771201841074922121b211820074100201341037620121b6a211320072d0000201941077176410171220741ff01714102470d010b410221070b02400240201541ff0171450d0020074102460d002007410171450d0020162d000020147221070c010b20162d00002014417f737121070b201620073a0000200441016a21042013210720182119200c417f6a220c0d000b0b02402024450d00200910390b20032802b0012118410021190240200b200a7341074b0d00200342003702bc07200342203702b4072003200a3602b007200320023602ac07200341203602a8072003200b3602a407200320103602a0070340200341106a200341a0076a10b6054101211920032802102204450d0120032802142107200341086a201b10b60520032802082216450d01200328020c21192004200710b7052016201910b705460d000b410021190b02402018450d00201010390b024020190d00200041046a410d10df04200041013602000c030b20032802202118200341a0076a200341c0046a41d00010c30a1a200342013703900a20032802a4072107200341003602980a20032802a007211920074103762216200341900a6a108301024020032802940a20032802980a22046b201620074107716a220741037620074107714100476a22164f0d00200341900a6a2004201610810120032802980a21040b200e410574211320032802900a220720046a2019201610c30a1a2003200420166a22043602980a200341003602d803200342013703d003200341d0036a4100410410810120032802d00320032802d80322166a201d3600002003201641046a3602d8032022200341d0036a10ff0220032802d403210c20032802d0032119024020032802940a20046b20032802d80322164f0d00200341900a6a2004201610810120032802900a210720032802980a21040b201820136a2118200720046a2019201610c30a1a200420166a21040240200c450d00201910390b202120072004201810f2042104024020032802940a450d00200710390b20032802a007211620032802a407211920032802a8072107200341a8016a201b41c40010c30a1a02402004450d00200341d0006a200341a8016a41c40010c30a1a0240200f200328029c01470d0020034198016a200f10b805200328029801211e20032802a001210f0b201e200f41d0006c6a2204200736020820042019360204200420163602002004410c6a200341d0006a41c40010c30a1a2003200f41016a220f3602a001201141b07f6a21114100210720062104200e21162006201c470d010c060b0b02402007450d00201610390b200041046a410410df04200041013602000c020b41b8edc300411c4188eec3001065000b20032802c804450d00200210390b0240201c2006460d000340200628020021040240200641086a22072802002216450d00200410390b2006200436020020072016360200200641d0006a2106201141b07f6a22110d000b0b02402020450d00202041d0006c450d00201f10390b2003280298012118024020032802a0012204450d00200441d0006c2107201821040340200428020021060240200441086a22162802002219450d00200610390b2004200636020020162019360200200441d0006a2104200741b07f6a22070d000b0b0240200328029c012204450d00200441d0006c450d00201810390b02402003280248450d00200328024010390b20032802302113024020032802382204450d00200441f4026c210620132104034002402004280200450d00200441b0026a22162802002207450d000240200441b8026a22192802002218450d00200710390b2019201836020020162007360200200441c4026a280200450d00200441bc026a28020010390b200441f4026a21042006418c7d6a22060d000b0b024020032802342204450d00200441f4026c450d00201310390b200328022441ffffff3f71450d05200328022010390c050b201c2006460d000340200641d0006a2104200628020021070240200641086a22162802002219450d00200710390b200620073602002016201936020020042106201c2004470d000b0b02402020450d00202041d0006c450d00201f10390b20032802a0012104200328029c012109200328029801210202402003280248450d00200328024010390b200341d8046a4200370300200341c0046a41106a4200370300200341c0046a41086a220e4200370300200342003703c004200341a0076a41b9fec300410610f201200e200341a0076a41086a2206290000370300200320032900a0073703c004200341a0076a41b0eec900410610f201200541086a2006290000370000200520032900a0073700002003200341c0046a412010f5012002200441d0006c6a211c20022117024002402004450d002003280204410020032802001b210f200341900a6a41046a2105200341d0036a41086a210b200221040340200441d0006a211720042802002210450d0120042802042212410376201241077122066a22072007410771200741084922191b210d4100211620104100200741037620191b6a2114200428020c21112004280208211b201021040340201621190240024002400240024002400240024020042014470d00200641ff0171200d41ff0171460d010b201941016a21162006410771211820042d00002113200641ff0171220641016a220720074107712006410749220c1b22152106200441002007410376200c1b6a220c210420132018764101712207450d0720032802382206410020076b20197122044d0d022003280230200441f4026c6a22072802004101470d03200c210420152106200741b0026a2802002219450d07200741b4026a280200220641037620114b0d01428080808080c00021084200211a0c060b2003200f36025c2003201b3602582003201236025420032010360250200341a8016a419194c300410d10f201200341c0046a41aca0c300411510f201200320113602900a2003200341900a6a410410f3013703d003200320053602ac072003200b3602a4072003200341900a6a3602a8072003200341d0036a3602a00720034188046a200341a0076a108d01200328029004221641206a2204417f4c0d0b02400240024020040d00200341003602d803200320043602d403200341013602d0030c010b200410382206450d0c41002107200341003602d803200320063602d003200320043602d4032004410f4b0d010b200341d0036a4100411010810120032802d403210420032802d003210620032802d80321070b200620076a221920032900a801370000201941086a200341a8016a41086a2900003700002003200741106a22073602d8030240200420076b410f4b0d00200341d0036a2007411010810120032802d403210420032802d003210620032802d80321070b200620076a221920032900c004370000201941086a200e2900003700002003200741106a22073602d80320032802880421190240200420076b20164f0d00200341d0036a2007201610810120032802d003210620032802d80321070b200620076a2019201610c30a1a2003200720166a22193602d8030240200328028c04450d0020032802880410390b20032802d0032106200341003602a807200342013703a007200341d0006a200341a0076a10b905200328025c2118024020032802a407221620032802a80722046b41034b0d00200341a0076a2004410410810120032802a407211620032802a80721040b20032802a007220720046a2018360000200620192007200441046a10a30202402016450d00200710390b024020032802d403450d00200610390b02402003280258450d00200328025010390b201721042017201c470d070c090b20064107712206410048201120066a2206201148730d020240200641084f0d0041002118200621070c040b20064107712107200641037521180c030b2004200641f8a3c300103c000b4188a4c30041d60041e0a4c3001065000b20064107712107200641037621180b2007ad42ff0183422086201920186a2206ad84211a20062d0000200741077176410171ad42288621080b201521062008428080808080c000510d00201aa7220620062d00004101201a422088a741077174723a0000201521060c000b0b0b201c2017460d000340201741d0006a2104201728020021060240201741086a22072802002216450d00200610390b201720063602002007201636020020042117201c2004470d000b0b02402009450d00200941d0006c450d00200210390b200328022841017422044103702116200441036e2119200141ffffffff03712001470d0120014102742204417f4c0d010240024020040d00410421060c010b200410382206450d010b200341003602a00120032006360298012003200441027636029c012003280230220c2003280238220441f4026c22186a210720032802342114200c21062004450d02201920166a2111200c20186a418c7d6a2112200341a8096a210920034188096a210a200341c8086a2102200341a8086a211f20034188086a211e200341e8076a211d200341a0076a41286a2120200341a0076a41086a2124200341a0076a41cc026a2123200341c0046a41a8026a2113200341a0076a4104722105200341c0046a4104722115200341a0076a41b4026a2117200341cc096a2118200341a0076a41a8026a2110200c2106034020062104024002400340200428020022064102460d01024020064101470d00200441b0026a28020022160d030b200441f4026a22042007470d000b200721060c050b200441f4026a21060c040b200441046a280200211b200341d0006a41386a2206200441ec026a290200370300200341d0006a41306a2219200441e4026a290200370300200341d0006a41286a2201200441dc026a290200370300200341d0006a41206a220e200441d4026a290200370300200341d0006a41186a220f200441cc026a290200370300200341d0006a41106a220b200441c4026a290200370300200341d0006a41086a2221200441bc026a2902003703002003200441b4026a290200370350200341a0076a200441086a41a80210c40a1a200341a8016a200341a0076a41a80210c30a1a200341a0076a200341a8016a41a80210c30a1a201841386a2006290300370200201841306a2019290300370200201841286a2001290300370200201841206a200e290300370200201841186a200f290300370200201841106a200b290300370200201841086a202129030037020020182003290350370200200320163602c8094100210120032802cc092219410376220f201941077122066a220e410376200e4107714100476a210e4100210b0240200f200672450d00200f20196a410771221945410374201972210b0b0240024002400240024002400240200e0d0041f4ddca002106410021190c010b024020060d00200b4108470d0020162106200e21190c010b0240200b4108470d00200e417f6a2119201c41807e71200672211c410021010c030b20060d012016200e417f6a22196a210120162106200b210d0b4100210f0c020b200e4101460d02200e417e6a2119201c41807e71200672211c200e20166a417f6a2101200b210d0b201641016a210641ff01210e0240201c41ff0171450d00417f4100201c6b41077174417f73201c41077174210e0b200e20162d00007169210f0b4100210e4100211602402019450d00410021160340201620062d0000696a2116200641016a21062019417f6a22190d000b0b2016200f6a210602402001450d00417f417f200d41077174417f73200d41ff01714108461b20012d00007169210e0b2006200e6a21060c010b417f417f200b20066b221941077174417f7320067420194108461b20162d0000716921062016211c0b0240024020062011490d00200341c0046a201b10eb0320032802c004220620032802c80410fd01024020032802c404450d00200610390b200341900a6a201b10ed03200341c0046a20032802900a221620032802980a221910ee030240024020032802c00422060d00410021060c010b2016201910fd0120034188046a41306a201541306a28020036020020034188046a41286a201541286a29020037030020034188046a41206a201541206a29020037030020034188046a41186a201541186a29020037030020034188046a41106a201541106a29020037030020034188046a41086a201541086a29020037030020032015290200370388040b024020032802940a450d00201610390b02402006450d00200341d0036a41306a221620034188046a41306a280200360200200341d0036a41286a221920034188046a41286a290300370300200341d0036a41206a221b20034188046a41206a290300370300200341d0036a41186a220120034188046a41186a290300370300200341d0036a41106a220e20034188046a41106a290300370300200341d0036a41086a220f20034188046a41086a220b29030037030020032003290388043703d00320032802e0092121200341c0046a200541a40210c30a1a201320032903d003370200201341086a200f290300370200201341106a200e290300370200201341186a2001290300370200201341206a201b290300370200201341286a2019290300370200201341306a2016280200360200200320063602e406200341900a6a41086a201741086a280200360200200320172902003703900a200b201041086a28020036020020032010290200370388042021200341c0046a200341900a6a20034188046a20032802a00720032802e80910a40520032802a0072116024020032802a0012206200328029c01470d0020034198016a2006410110be0320032802a00121060b20032802980120064102746a20163602002003200641016a3602a0010c020b024041002802a8fe4a4102490d0041002802a4fe4a210641002802a0fe4a211641002802acfe4a2119200342013703d004200341f0a4c3003602cc0420034281808080d02b3702fc0420034192c8c200ad4280808080b009843702f404200341003602f004200341ecc7c200ad4280808080e004843703e804200342003703e004200341123602c804200341f8a4c3003602c404200341023602c004200341f4ddca003602dc04201641f4ddca00201941024622191b200341c0046a200641b0a7c00020191b2802101103000b20032802c8092106024020032802d0092216450d00200610390b200320163602d009200320063602c80920032802dc09450d0120032802d40910390c010b20034188046a201b10eb032003280290042101200328028804211b200341003602c804200342013703c00420032802a0072106200341c0046a4100410410810120032802c00420032802c80422166a20063600002003201641046a3602c804412010382206450d0220032802c404211920032802c804211620062023290000370000200641086a220e202341086a290000370000200641106a220f202341106a290000370000200641186a220b202341186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c8042006103920032802a4072116024020032802c40420032802c80422066b41034b0d00200341c0046a2006410410810120032802c80421060b20032802c00420066a20163600002003200641046a3602c804412010382206450d0220032802c404211920032802c804211620062024290000370000200641086a220e202441086a290000370000200641106a220f202441106a290000370000200641186a220b202441186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c80420061039024020032802c40420032802c80422166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22062020290000370000200641086a202041086a290000370000200641106a202041106a290000370000200641186a202041186a2900003700002003201641206a3602c804412010382206450d0220032802c404211920032802c80421162006201d290000370000200641086a220e201d41086a290000370000200641106a220f201d41106a290000370000200641186a220b201d41186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c80420061039412010382206450d0220032802c404211920032802c80421162006201e290000370000200641086a220e201e41086a290000370000200641106a220f201e41106a290000370000200641186a220b201e41186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c80420061039412010382206450d0220032802c404211920032802c80421162006201f290000370000200641086a220e201f41086a290000370000200641106a220f201f41106a290000370000200641186a220b201f41186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c80420061039024020032802c40420032802c80422166b413f4b0d00200341c0046a201641c00010810120032802c80421160b20032802c00420166a22062002290000370000200641086a200241086a290000370000200641106a200241106a290000370000200641186a200241186a290000370000200641206a200241206a290000370000200641286a200241286a290000370000200641306a200241306a290000370000200641386a200241386a2900003700002003201641c0006a3602c804412010382206450d0220032802c404211920032802c80421162006200a290000370000200641086a220e200a41086a290000370000200641106a220f200a41106a290000370000200641186a220b200a41186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c80420061039412010382206450d0220032802c404211920032802c804211620062009290000370000200641086a220e200941086a290000370000200641106a220f200941106a290000370000200641186a220b200941186a2900003700000240201920166b411f4b0d00200341c0046a2016412010810120032802c80421160b20032802c00420166a22192006290000370000201941086a200e290000370000201941106a200f290000370000201941186a200b2900003700002003201641206a3602c804200610392010200341c0046a10ba052017200341c0046a10ba0520032802e0092116024020032802c40420032802c80422066b41034b0d00200341c0046a2006410410810120032802c80421060b20032802c00420066a20163600002003200641046a22063602c80420032802e4092116024020032802c40420066b41034b0d00200341c0046a2006410410810120032802c80421060b20032802c00420066a20163600002003200641046a22063602c80420032802e8092116024020032802c40420066b41034b0d00200341c0046a2006410410810120032802c80421060b20032802c00420066a20163600002003200641046a22063602c804201b200120032802c004200610a302024020032802c404450d0020032802c00410390b0240200328028c04450d00201b10390b20032802c8092106024020032802d0092216450d00200610390b200320163602d009200320063602c80920032802dc09450d0020032802d40910390b200441f4026a210620122004470d000b200721060c020b1030000b1034000b024020072006460d0003402006220441f4026a210602402004280200450d00200441b0026a22192802002216450d000240200441b8026a22182802002213450d00201610390b2018201336020020192016360200200441c4026a280200450d00200441bc026a28020010390b20072006470d000b0b02402014450d00201441f4026c450d00200c10390b2000200329039801370204200041003602002000410c6a200341a0016a280200360200200328022441ffffff3f71450d00200328022010390b200341a00a6a24000b840501057f230041e0056b220524002005200436020420052003360200024002400240200241074b0d0041002802a8fe4a450d0141002802a4fe4a210241002802a0fe4a210341002802acfe4a21042005418c036a41f4ddca0036020020054180036a4201370300200541a4036a41dba2c000ad4280808080f00b8437020020054190036a4200370300200541f8026a4113360200200541c8a2c0003602f40220054198036a41c8a2c000ad4280808080b00284370300200541c0a2c0003602fc0220054281808080b00e3702ac03200541003602a003200541013602f002200341f4ddca00200441024622041b200541f0026a200241b0a7c00020041b2802101103000c010b2002417c714108460d0020012800082102200541f0026a200510af05200541c8006a200541f0026a41a80210c30a1a200541086a41086a200541a4056a290200370300200541186a2203200541ac056a290200370300200541206a2204200541b4056a290200370300200541286a2201200541bc056a290200370300200541306a2206200541c4056a290200370300200541386a2207200541cc056a290200370300200541c0006a2208200541d4056a2902003703002005200529029c0537030802402005280298052209450d00200020052903083702b00220002002360200200041e8026a2008290300370200200041e0026a2007290300370200200041d8026a2006290300370200200041d0026a2001290300370200200041c8026a2004290300370200200041c0026a2003290300370200200041b8026a200541106a290300370200200041046a200541c8006a41a80210c30a1a200020093602ac020c020b200041003602ac020c010b200041003602ac020b200541e0056a24000bc00603067f017e037f230041d0036b220224002002200128020c200141146a28020010c5090240024020022802002203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902042208422088a722094b0d0020012802002003200710c60a450d010b2008a7450d02200310390c020b02402006280200450d00200428020010390b2001200336020c2006200837020020024180036a2003200910e40202400240024002402002280280032203450d00200228028803210a200228028403210b024020012d001c450d00200128020c200128021410fd010b2001280214220920052802002207490d032002200128020c20076a200920076b2003200a200128021811040020022802ac02450d012000200241f00210c30a1a200b450d06200310390c060b41002802a8fe4a450d012002410f3602f402200220043602f00241002802a4fe4a210341002802a0fe4a210741002802acfe4a210920024201370310200241f4a1c80036020c20024281808080e0d70037023c200241b2a2c800ad4280808080e00c84370234200241003602302002420137032020024116360208200241013602002002419ca2c8003602042002419ca2c800ad4280808080e00284370328200341b0a7c000200941024622091b28021021032002200241f0026a36021c200741f4ddca0020091b200220031103000c010b024041002802a8fe4a450d00200241103602fc022002410f3602f402200220043602f0022002200241c8036a3602f80241002802a4fe4a210741002802a0fe4a210941002802acfe4a210a20024202370390032002418ca2c80036028c0320024281808080c0d9003702bc03200241b2a2c800ad4280808080e00c843702b403200241003602b003200242023703a003200241163602880320024101360280032002419ca2c800360284032002419ca2c800ad4280808080e002843703a803200741b0a7c000200a410246220a1b28021021072002200241f0026a36029c03200941f4ddca00200a1b20024180036a20071103000b200b450d00200310390b2002200128020c200128021410c509200228020022030d010c020b0b2007200941fca1c800105e000b200041003602ac020b200241d0036a24000b950101017f410121030240200041d0016a28020020014d0d000240024020002802c8012001412c6c6a280200417f6a0e020002010b4100210320002802d40120002802840122014f0d01410020002802d801220020026b2203200320004b1b20014f0f0b4100210320002802d40120002802880122014f0d00410020002802d801220020026b2203200320004b1b20014f21030b20030be90301067f230041d0006b22022400200241086a419194c300410d10f201200241186a419e94c300411310f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bb10201017f230041b0036b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041003602a8020c010b200328020c21022003200341106a28020036028c032003200136028803200341186a20034188036a10af050240024020032802c002450d002000200341186a41ec0210c30a1a0c010b20034200370294032003410028029cde4a360290032003410c3602a403200320033602a003200320034190036a3602ac032003412c6a41013602002003420137021c200341e4b4c4003602182003200341a0036a360228200341ac036a41fc86ca00200341186a103b1a20032802900320032802980310e7020240200328029403450d0020032802900310390b200041003602a8020b2002450d00200110390b200341b0036a24000be90301067f230041d0006b22022400200241086a419194c300410d10f201200241186a41e4a1c300411e10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b970301017f23004180016b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036025c20032001360258200341206a200341d8006a10c305024002402003280220450d0020002003290320370200200041306a200341206a41306a290300370200200041286a200341206a41286a290300370200200041206a200341206a41206a290300370200200041186a200341206a41186a290300370200200041106a200341206a41106a290300370200200041086a200341206a41086a2903003702000c010b200342003702642003410028029cde4a3602602003410c3602742003200341086a3602702003200341e0006a36027c200341346a410136020020034201370224200341e4b4c4003602202003200341f0006a360230200341fc006a41fc86ca00200341206a103b1a2003280260200328026810e70202402003280264450d00200328026010390b200041003602000b2002450d00200110390b20034180016a24000b2501017f0240200041cc016a2802002201450d002001412c6c450d0020002802c80110390b0bb10b03097f017e097f23004190026b22002400200041f0016a41186a4200370300200041f0016a41106a22014200370300200041f0016a41086a22024200370300200042003703f001200041f0016a41f1b5c900410d10f2012001418bb6c900410c10f201200041286a200041f0016a412010b20220002802a001210320002802a401210420002802b8012105200041286a41186a22014200370300200041286a41106a22064200370300200041286a41086a2207420037030020004200370328200041f0016a41a6f2c500410d10f20120072002290000370300200020002900f001370328200041f0016a41f0b4c600410f10f20120012002290000370300200620002900f001370300200041f0016a200041286a10f2030240024020002802f00122080d002000420037020c20004100360214200041002802ccdd4a22083602080c010b200041086a410c6a200041f0016a410c6a28020036020020002008360208200020002902f40137020c0b42002109200041c0006a4200370300200041386a4200370300200041286a41086a2202420037030020004200370328200041f0016a41a6f2c500410d10f2012002200041f0016a41086a2201290000370300200020002900f001370328200041f0016a41c4b7c600410910f201200641086a2001290000370000200620002900f001370000200041f0016a200041286a10f1030240024020002802f001220a450d00200041286a412010fd0120002902f40121090c010b41002802ccdd4a210a0b024002402009422088a72202450d004100200420054102461b210b200241346c2101200a412c6a2102200541024620034572210c03402002415c6a2d000022054102460d0102402005410171450d00200241586a28020021072002280200210d200041f0016a41186a220e2002415d6a220541186a290000370300200041f0016a41106a220f200541106a290000370300200041f0016a41086a2210200541086a290000370300200020052900003703f001200041286a200710f80120002802282204200028023010f90141ff017121050240200028022c450d00200410390b20054107460d00200541054b0d004101200574412a71450d00200d41016a220d200b4b0d00200c0d0320002000280214221141016a200370360214200041286a41186a2212200e290300370300200041286a41106a220e200f290300370300200041286a41086a220f2010290300370300200020002903f001370328024020002802102204200028020c470d00200041086a200410fd0220002802082108200028021021040b20082004412c6c6a22052007360200200520002903283702042005410c6a200f290300370200200541146a200e2903003702002005411c6a2012290300370200200520113602282005200d3602242000200441016a3602100b200241346a21022001414c6a22010d000b0b02402009a72202450d00200241346c450d00200a10390b200041186a41086a200041086a41086a290300370300200020002903082209370318024002402009a722020d00200041c0006a4200370300200041386a4200370300200041286a41086a2202420037030020004200370328200041f0016a41a6f2c500410d10f2012002200041f0016a41086a2201290000370300200020002900f001370328200041f0016a41f0b4c600410f10f201200641086a2001290000370000200620002900f001370000200041286a412010fd010c010b200041c0006a4200370300200041386a4200370300200041286a41086a2201420037030020004200370328200041f0016a41a6f2c500410d10f2012001200041f0016a41086a2205290000370300200020002900f001370328200041f0016a41f0b4c600410f10f201200641086a2005290000370000200620002900f001370000200041286a200041186a108204200028021c2201450d002001412c6c450d00200210390b20004190026a24000f0b4180c4c000413941bcc4c0001035000b921003057f017e217f230041d0016b220224002002412036021420022001360210200241186a2001412010e4020240024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10ad010240024020022802080d00200228020c2205200228022c220641346e2201200120054b1bad42347e2207422088a70d032007a72201417f4c0d030240024020010d00410421080c010b200110382208450d050b4100210920024100360240200220083602382002200141346e36023c024002402005450d00200241a8016a410472210a200241a8016a41196a210b200241a8016a41126a210c200241a8016a410b6a210d4100210e034020064104490d0220022006417c6a220136022c20014104490d022002280228220f28000021102002200f41086a360228410021010240024020064108460d00200f28000421112002200641776a220136022c2002200f41096a221236022841002113024002400240200f2d00080e020100030b200641776a21144100210141762113034020142001460d02200a20016a200f20016a221541096a2d00003a00002002200141016a22123602a8012002200620136a36022c20022015410a6a3602282013417f6a21132012210120124120470d000b200241cc016a41026a2213200d41026a2d00003a0000200241a4016a41026a2215200c41026a2d00003a00002002200a2f01003b01302002200d2f00003b01cc012002200c2f00003b01a4012002200a41026a2d00003a003220022802c801211420022802c401211620022800bd01211720022801b601211820022800af012119200241a0016a41026a221a200b41026a2d00003a00002002200b2f00003b01a001200620126b220641776a22014104490d022002419c016a41026a20022d00323a000020024198016a41026a20132d00003a000020024194016a41026a20152d00003a000020024190016a41026a201a2d00003a0000200220022f01303b019c01200220022f01cc013b019801200220022f01a4013b019401200220022f01a0013b0190012002200641736a220136022c2002200f20126a2213410d6a2212360228201341096a2800002115410121132019211b2018211c2017211d2016211e2014211f0b2002418c016a41026a22062002419c016a41026a2d00003a000020024188016a41026a220f20024198016a41026a2d00003a000020024184016a41026a221420024194016a41026a2d00003a000020024180016a41026a221620024190016a41026a2d00003a0000200220022f019c013b018c01200220022f0198013b018801200220022f0194013b018401200220022f0190013b01800120014104490d01200241fc006a41026a20062d00003a0000200241f8006a41026a200f2d00003a0000200241f4006a41026a20142d00003a0000200241f0006a41026a20162d00003a0000200220022f018c013b017c200220022f0188013b0178200220022f0184013b0174200220022f0180013b017020022001417c6a220636022c2002201241046a36022820122800002120201b21212011212220102123201c212420152125201d2126201e2127201f21280c020b410021010b41022113200121060b200241ea006a41026a2201200241fc006a41026a2d00003a0000200241e6006a41026a2212200241f8006a41026a2d00003a0000200241e2006a41026a220f200241f4006a41026a2d00003a0000200241de006a41026a2215200241f0006a41026a2d00003a0000200241da006a41026a2214200241ed006a41026a2d00003a0000200220022f017c3b016a200220022f01783b0166200220022f01743b0162200220022f01703b015e200220022f006d3b015a20134102460d02200e41016a210e2022ad4220862023ad842107200241d6006a41026a221020012d00003a0000200241d2006a41026a221120122d00003a0000200241ce006a41026a2212200f2d00003a0000200241ca006a41026a220f20152d00003a0000200241c6006a41026a221520142d00003a0000200220022f016a3b0156200220022f01663b0152200220022f01623b014e200220022f015e3b014a200220022f015a3b014602402009200228023c470d00200241386a200910f60320022802382108200228024021090b2008200941346c6a220120133a00082001410b6a20102d00003a0000200141096a20022f01563b0000200141126a20112d00003a0000200141106a20022f01523b0000200120073702002001410c6a2021360000200141136a2024360000200141196a20122d00003a0000200141176a20022f014e3b00002001411a6a2026360000200141206a200f2d00003a00002001411e6a20022f014a3b0000200141256a2028360000200141216a20273600002001412b6a20152d00003a0000200141296a20022f01463b0000200141306a20203600002001412c6a20253600002002200228024041016a2209360240200e2005470d000b200228023821080b2008450d012000200229023c370204200020083602000c020b200228023c2201450d00200141346c450d00200228023810390b2002420037023c2002410028029cde4a3602382002410c3602342002200241106a3602302002200241386a3602cc01200241bc016a4101360200200242013702ac01200241e4b4c4003602a8012002200241306a3602b801200241cc016a41fc86ca00200241a8016a103b1a2002280238200228024010e7020240200228023c450d00200228023810390b200041003602000b2004450d00200310390b200241d0016a24000f0b1034000b1030000bd40c03057f017e137f230041b0016b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ad010240024002400240024020022802000d002002280204220520022802242206412c6e2201200120054b1bad422c7e2207422088a70d012007a72201417f4c0d010240024020010d00410421080c010b200110382208450d030b41002109200241003602382002200836023020022001412c6e3602340240024002402005450d0020024188016a410472210a20024188016a41196a210b20024188016a41126a210c20024188016a410b6a210d4100210e034002400240024020064104490d00200e41016a210e2006417c6a210f200228022022102800002111410021010340200f2001460d02200a20016a201020016a221241046a2d00003a00002002200141016a2213360288012002201241056a3602202013210120134120470d000b200241ac016a41026a2201200d41026a2d00003a000020024184016a41026a220f200c41026a2d00003a00002002200a2f01003b01282002200d2f00003b01ac012002200c2f00003b0184012002200a41026a2d00003a002a20022802a801211420022802a4012115200228009d0121162002280196012117200228008f01211820024180016a41026a2219200b41026a2d00003a00002002200b2f00003b018001200620136b2212417c6a41034b0d022012417c6a21060b200220063602240c050b200241003602240c040b200241f8006a41026a220620012d00003a0000200241f4006a41026a221a200f2d00003a0000200241f0006a41026a220f20192d00003a0000200220022f01283b017c200220022d002a3a007e200220022f01ac013b0178200220022f0184013b0174200220022f0180013b0170201241786a4104490d02201020136a220141046a2800002113200241e8006a41026a221020062d00003a0000200241e4006a41026a2206201a2d00003a0000200241e0006a41026a2219200f2d00003a0000200220022f017c3b016c200220022d007e3a006e200220022f01783b0168200220022f01743b0164200220022f01703b016020022001410c6a360220200141086a280000210f200241d8006a41026a220120102d00003a0000200241d4006a41026a221020062d00003a0000200241d0006a41026a220620192d00003a0000200220022f016c3b015c200220022d006e3a005e200220022f01683b0158200220022f01643b0154200220022f01603b0150200241c8006a41026a221920012d00003a0000200241c4006a41026a221a20102d00003a0000200241c0006a41026a221020062d00003a0000200220022d005e3a004e200220022f015c3b014c200220022f01583b0148200220022f01543b0144200220022f01503b0140024020092002280234470d00200241306a200910fd0220022802302108200228023821090b201241746a210620082009412c6c6a22012011360200200141066a20022d004e3a0000200120022f014c3b01042001410d6a20192d00003a00002001410b6a20022f01483b0000200141146a201a2d00003a0000200141126a20022f01443b0000200141076a20183600002001410e6a2017360000200141156a20163600002001411b6a20102d00003a0000200141196a20022f01403b00002001200f36022820012013360224200141206a20143600002001411c6a20153600002002200941016a2209360238200e2005470d000b2002201241746a2206360224200228023021080b2008450d0220022902342107200641034b0d052007a72201450d022001412c6c450d02200810390c020b2002201241786a3602240b20022802342201450d002001412c6c450d00200228023010390b200242003702342002410028029cde4a3602302002410c36022c2002200241086a3602282002200241306a3602ac012002419c016a41013602002002420137028c01200241e4b4c400360288012002200241286a36029801200241ac016a41fc86ca0020024188016a103b1a2002280230200228023810e70202402002280234450d00200228023010390b200041003602000c030b1034000b1030000b20002007370204200020083602002000410c6a20022802202800003602000b2004450d00200310390b200241b0016a24000bb90201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10b503024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602000b2003450d00200110390b200241e0006a24000bcd0503097f017e017f230041f0016b22032400200341d0016a41186a4200370300200341d0016a41106a22044200370300200341d0016a41086a22054200370300200342003703d001200341d0016a41f1b5c900410d10f2012004418bb6c900410c10f201200341086a200341d0016a412010b20220032802880121062003280298012107200341086a41186a22084200370300200341086a41106a22044200370300200341086a41086a2209420037030020034200370308200341d0016a41a6f2c500410d10f20120092005290000370300200320032900d001370308200341d0016a41b3f2c500411110f20120082005290000370300200420032900d0013703002003200341086a412010f5014100210a024002402003280204410020032802001b220b20024b0d0020084200370300200442003703002009420037030020034200370308200341d0016a41a6f2c500410d10f20120092005290000370300200320032900d001370308200341d0016a4188b4c600410f10f201200441086a2005290000370000200420032900d001370000200341d0016a200341086a10f30320032802d001220541002802ccdd4a20051b2109024020032902d401420020051b220c422088a7220520014b0d0002402005450d002005410c6c21042009210503400240200541046a28020041ffffffff0371450d00200528020010390b2005410c6a2105200441746a22040d000b0b4100210a0240200ca722050d000c020b02402005410c6c0d000c020b200910390c010b4101200620074102461b2208450d012005410c6c21042002200b6b20086e20016a200570210d2009210503400240200541046a28020041ffffffff0371450d00200528020010390b2005410c6a2105200441746a22040d000b4101210a200ca72205450d002005410c6c450d00200910390b2000200d3602042000200a360200200341f0016a24000f0b41d0f2c50041194184c5ca001035000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42387e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141386c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141386e360200200241206a24000f0b1034000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42347e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141346c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141346e360200200241206a24000f0b1034000bc70303027f017e037f230041306b22012400024002400240024020002802002202450d0020002902042103200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a6f2c500410d10f2012005200141206a41086a220629000037030020012001290020370300200141206a41c4b7c600410910f20120002006290000370300200420012900203703002003422088a7220441346c41046a2200417f4c0d010240024020000d00410121050c010b200010382205450d030b200141003602282001200036022420012005360220200141206a200410d20120022004200141206a10d4012001412020012802202200200128022810a30202402001280224450d00200010390b2003a72200450d03200041346c450d03200210390c030b200141186a22004200370300200141106a22024200370300200141086a2204420037030020014200370300200141206a41a6f2c500410d10f2012004200141206a41086a220529000037030020012001290020370300200141206a41c4b7c600410910f20120002005290000370300200220012900203703002001412010fd010c020b1034000b1030000b200141306a24000bdf0301067f230041c0006b220124000240024020002802002202450d002001410c6a22032000410c6a2802003602002001200236020020012000290204370204200141286a22004200370300200141206a22044200370300200141106a41086a2205420037030020014200370310200141306a41a6f2c500410d10f2012005200141306a41086a220629000037030020012001290030370310200141306a41f0b4c600410f10f201200020062900003703002004200129003037030020014100360238200142013703302001200141306a109d0320032802002105024020012802342204200128023822006b41034b0d00200141306a2000410410810120012802342104200128023821000b2001280230220320006a2005360000200141106a41202003200041046a10a30202402004450d00200310390b20012802042200450d012000412c6c450d01200210390c010b200141286a22004200370300200141206a22024200370300200141106a41086a2203420037030020014200370310200141306a41a6f2c500410d10f2012003200141306a41086a220429000037030020012001290030370310200141306a41f0b4c600410f10f2012000200429000037030020022001290030370300200141106a412010fd010b200141c0006a24000bc70303027f017e037f230041306b22012400024002400240024020002802002202450d0020002902042103200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a6f2c500410d10f2012005200141206a41086a220629000037030020012001290020370300200141206a41c4b5c600411110f20120002006290000370300200420012900203703002003422088a72204412c6c41046a2200417f4c0d010240024020000d00410121050c010b200010382205450d030b200141003602282001200036022420012005360220200141206a200410d20120022004200141206a10cf012001412020012802202200200128022810a30202402001280224450d00200010390b2003a72200450d032000412c6c450d03200210390c030b200141186a22004200370300200141106a22024200370300200141086a2204420037030020014200370300200141206a41a6f2c500410d10f2012004200141206a41086a220529000037030020012001290020370300200141206a41c4b5c600411110f20120002005290000370300200220012900203703002001412010fd010c020b1034000b1030000b200141306a24000bbd0202037f017e230041d0006b220224002002412036020420022001360200200241086a2001412010e40202400240200228020822010d00200042003703000c010b200228020c2103024002400240200241086a41086a28020022044108490d00200441787141786a0e09000101010101010100010b420021052002420037021c2002410028029cde4a3602182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241e4b4c4003602382002200241286a360248200241346a41fc86ca00200241386a103b1a2002280218200228022010e702200228021c450d01200228021810390c010b200041186a2001290010370300200041106a200129000837030020002001290000370308420121050b200020053703002003450d00200110390b200241d0006a24000b840e02047f097e23004180066b22012400200141c8016a4200370300200141d0016a4200370300200141d8016a4200370300200141e0016a4200370300200142c0b2cd3b3703c804200142c0b2cd3b370308200142c0b2cd3b3703c00420012001290380033703c00141002102410121030340200141c0046a2104024002400240200241ff01710e03010002010b200141086a21040c010b200141c8046a21040b200442c0b2cd3b370300024020034103460d00200341bca2c0006a2104200341016a210320042d000022024103470d010b0b200141c0036a4200370300200141b8036a420137030020014180036a41306a2203420037030020014180036a41286a2204420137030020014180036a41186a420037030020014180036a41f8006a420037030020014180036a41f0006a420137030020014180036a41e8006a420037030020014180036a41e0006a4201370300200141d0036a4200370300200141c8036a200129030837030020014188046a420037030020014180046a20012903c004370300200142003703880320014280e497d01237038003200120012903c80437039003200141b0046a200141e0016a290300370300200141a8046a200141c0016a41186a290300370300200141a0046a200141d0016a29030037030020014198046a200141c8016a29030037030020014190046a20012903c0013703002004420137030020034280b0def7d32b370300200141003602b804200141c0016a20014180036a41c00110c30a1a200141c0016a41f8006a428090cad2c60e370300200141c0016a41f0006a4201370300200141c0016a41e8006a4280c0a8ca9a3a370300200141c0016a41e0006a4201370300200141086a200141c0016a41b80110c30a1a200141c8046a200141086a41b80110c30a1a20012903d004210502400240200141c8046a41286a2903004201520d00200141c8046a41306a29030022062005560d010b200521060b02400240200141c8046a41e0006a2903004201520d00200141b0056a29030022052006560d010b200621050b02400240200141e0056a2903004201520d00200141e8056a29030022062005560d010b200521060b200120063703d0042006428094ebdc03804280ade2047e2006428094ebdc0382220642e4008020064280ade2047e428094ebdc03824280cab5ee0156ad7c7c21060240200141e0046a2903004201510d0002400240200141f0046a29030050450d00420021050c010b42004200200141f8046a290300220520067d220720072005561b220520012903d8047d220720072005561b2107420121050b200141e8046a2007370300200120053703e0040b024020014198056a2903004201510d0002400240200141a8056a29030050450d00420021050c010b42004200200141b0056a290300220520067d220720072005561b220520014190056a2903007d220720072005561b2107420121050b200141a0056a200737030020012005370398050b0240200141c8046a4188016a2903004201510d0002400240200141e0056a29030050450d00420021060c010b42004200200141e8056a290300220520067d220620062005561b2206200141c8056a2903007d220520052006561b2105420121060b200141d8056a2005370300200120063703d0050b200141c0016a200141c8046a41b80110c30a1a024020012903c801220620012903c0012205200141c0026a29030022087c580d0020064200200141e0026a2903002207200141d8026a2903005022031b540d00427e200141f0026a290300427f7c200141e8026a290300501b2008540d00200141d0026a290300220950200141c0016a4188016a290300220a420052710d0042002009200a501b4200427f200720031b220720087d220920092007561b560d002006200520014188026a290300220a7c580d0020064200200141a8026a2903002209200141c0016a41e0006a2903005022031b540d00427e200141b8026a290300427f7c200141b0026a290300501b200a540d0020014198026a290300220b5020014190026a290300220c420052710d004200200b200c501b4200427f200920031b2209200a7d220b200b2009561b560d002006200520012903d001220b7c580d0020064200200141f0016a290300220c200141e8016a2903005022031b540d00427e20014180026a290300427f7c200141f8016a290300501b200b540d00200141e0016a290300220650200141d8016a290300220d420052710d0042002006200d501b4200427f200c20031b2206200b7d220c200c2006561b560d002006502006200b5620062005567172450d002009502009200a5620092005567172450d00200750200720085620072005567172450d00200020014186036a200141c8046a41b80110c30a41b80110c30a1a20014180066a24000f0b200141013a00800341d0a4c00041e00020014180036a41e0a3c00041b0a5c000103d000baf7f070d7f017e2d7f017e1a7f027e177f230041b0176b22042400024002400240200241086a2802002205200341086a28020022064d0d00200441c80a6a410510df04200041013602002000410c6a200441c80a6a41086a280200360200200020042903c80a3702040c010b024020060d0020004100360200200041086a4200370200200041002802ccdd4a3602040c010b200441186a10b30520044190176a41186a2207420037030020044190176a41106a2208420037030020044190176a41086a220942003703002004420037039017200441c80a6a41b9fec300410610f2012009200441c80a6a41086a220a290000370300200420042900c80a37039017200441c80a6a41d0eec900410a10f2012007200a290000370300200820042900c80a370300200441c80a6a20044190176a412010ab020240024020042d00c80a4101460d00200441286a41186a4200370300200441286a41106a4200370300200441286a41086a4200370300200442003703280c010b200441286a41186a200441e10a6a290000370300200441286a41106a200441d90a6a290000370300200441286a41086a200441d10a6a290000370300200420042900c90a3703280b200441a8176a220a4200370300200441a0176a220b420037030020044190176a41086a220742003703002004420037039017200441c80a6a41b9fec300410610f2012007200441c80a6a41086a2209290000370300200420042900c80a37039017200441c80a6a41b0eec900410610f201200841086a220c2009290000370000200820042900c80a370000200441106a20044190176a412010f5012004280214210d2004280210210e200a4200370300200b4200370300200742003703002004420037039017200441c80a6a41f1b5c900410d10f20120072009290000370300200420042900c80a37039017200441c80a6a418bb6c900410c10f201200c2009290000370000200820042900c80a370000200441c80a6a20044190176a412010b20241002107200d4100200e1b220f417f6a21100240024020042802d80b22094102470d00200441c8006a410041800110c50a1a20044184026a4200370200200442003702fc01200441013602f8012004428280808080193703f00120044286808080c00c3703e801200441003602e001200442013703d00120044281808080103703c8010c010b200441c8006a200441c80a6a41900110c30a1a200441c8006a41c4016a200441c80a6a41c4016a280200360200200441c8006a41bc016a200441c80a6a41bc016a290200370200200441c8006a41b4016a200441c80a6a41b4016a290200370200200441c8006a41ac016a200441c80a6a41ac016a290200370200200441c8006a41a4016a200441c80a6a41a4016a290200370200200441c8006a419c016a200441c80a6a419c016a290200370200200441dc016a20042902dc0b370200200921070b200420073602d80120042010360294022004200f36029002024002400240024002402005ad42147e2211422088a70d002011a72207417f4c0d000240024020070d00410421120c010b200710382212450d020b200420123602c0022004200741146e3602c402200441003602c8022004419c086a200441286a41186a29030037020020044180086a41146a200441286a41106a29030037020020044180086a410c6a200441286a41086a290300370200200420042903283702840820044190176a41186a2213420037030020044190176a41106a2214420037030020044190176a41086a221542003703002004420037039017200441c80a6a4192d1c800410b10f2012015200441c80a6a41086a2216290000370300200420042900c80a37039017200441c80a6a41c0d3c800411310f201200841086a22172016290000370000200820042900c80a370000200441086a20044190176a412010f5012004200428020c410020042802081b360280080240024020050d004100211841002109410021070c010b20022802002207200541f4026c6a2119200441c80a6a410172211a200441c80a6a4184026a211b200441ac0c6a211c200441c80a6a41a4016a211d200441c80a6a4184016a211e200441c80a6a41e4006a211f200441c80a6a41c4006a2120200441c80a6a41246a2121200441c80a6a4104722122200441c80a6a41a4026a212341002802ccdd4a2124200441a0026a4101722125200441c80a6a41027221262004280220212741002109410021284100210c0240024003402004202836029c0220072802002112200441d0026a202710bb050240200741046a2218200441286a412010c60a450d00200441c80a6a410c10df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c020b20072802002105200441c80a6a41206a410041e40010c50a1a200441c80a6a41186a2229201841186a222a290000370300200441c80a6a41106a222b201841106a222c2900003703002016201841086a222d2900003703002018290000211120212007290044370000202141086a222e200741cc006a290000370000202141106a222f200741d4006a290000370000202141186a2230200741dc006a290000370000202041186a2231200741fc006a290000370000202041106a2232200741f4006a290000370000202041086a2233200741ec006a29000037000020202007290064370000200420113703c80a200420053602e80a201f41186a22342007419c026a290000370000201f41106a223520074194026a290000370000201f41086a22362007418c026a290000370000201f2007290084023700000240200741a4016a2237200441c80a6a418401200741246a223810f2040d00200441c80a6a411110df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c020b200441c80a6a2012200f10bc050240024002400240024002400240024020042d00c80a4101470d0020252026290000370000202541086a202641086a290000370000202541106a202641106a290000370000202541176a202641176a290000370000200420042d00c90a3a00a002024020074184026a2239200441a0026a412010c60a450d00200441c80a6a411810df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c0a0b20044190176a200441c8006a2012200741d0026a280200200741bc026a20072802d40220072802a40220072802ac0220072802d80220072802b00220072802b80210bd0502402004280290174107460d00200441e0026a41106a20044190176a41106a280200360200200441e0026a41086a20044190176a41086a29030037030020042004290390173703e002024041002802a8fe4a4104490d002004419c056a411b36020020044194056a41023602002004410236028c05200420123602f0162004200441e0026a360298052004200441f0166a3602900520042004419c026a3602880541002802a4fe4a210541002802a0fe4a210641002802acfe4a2107200441c80a6a41106a4203370300200441fc0a6a4192c8c200ad4280808080b00984370200200441f00a6a41ecc7c200ad4280808080e00484370300200441e80a6a4203370300200441c80a6a41086a4112360200200441e40a6a20044188056a360200200441aca6c3003602d40a20044281808080b03b3702840b200441003602f80a200441f8a4c3003602cc0a200441043602c80a200641f4ddca00200741024622071b200441c80a6a200541b0a7c00020071b2802101103000b41172105024002400240024002400240024020042802e0020e0700010203040506000b410921050c050b410a21050c040b410b21050c030b411421050c020b411521050c010b411621050b200441c80a6a200510df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c0a0b200341086a28020022052009490d01200741f4026a213a202841016a2128200741e4006a213b200741c4006a213c200741a4026a213d20032802002106200541346c2105200941346c210b03400240200b2005470d00200441c80a6a410510df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c0b0b2006200b6a220d280200210a024002400240200c450d00200a200e4d0d010b200a210e0c010b200441c80a6a410810df042004201a290000370388052004201a41076a28000036008f0520042d00c80a220a4108470d040b2005414c6a2105200641346a21064101210c200941016a21092012200d41046a280200470d000b02402006200b6a223e41546a2d00004101470d00203e41556a2038412010c60a450d00200441c80a6a410710df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c0a0b2013420037030020144200370300201542003703002004420037039017200441c80a6a41f1b5c900410d10f20120152016290000370300200420042900c80a37039017200441c80a6a418bb6c900410c10f20120172016290000370000200820042900c80a370000200441c80a6a20044190176a412010b20220042802940b210b20042802d80b210d200441c80a6a201210b90220044188056a20042802c80a220520042802d00a10ba022004280288052106200429028c052111024020042802cc0a450d00200510390b024020060d002000202436020420004100360200200041086a42003702000c0a0b2004410036029005200442013703880520062011203f20061b223f422088a720044188056a10d6010240200428028c0520042802900522056b41034b0d0020044188056a2005410410810120042802900521050b200428028805220c20056a20103600002004200541046a220a36029005412010382205450d0d200d410246210d20052001290000370000200541186a2240200141186a290000370000200541106a2241200141106a290000370000200541086a2242200141086a2900003700000240200428028c05200a6b411f4b0d0020044188056a200a4120108101200428028805210c200428029005210a0b4100200b200d1b210d200c200a6a220b2005290000370000200b41186a2040290000370000200b41106a2041290000370000200b41086a20422900003700002004200a41206a220a36029005200510390240200428028c05200a6b41034b0d0020044188056a200a4104108101200428028805210c200428029005210a0b200c200a6a200d3600002004200a41046a22053602900520044190176a200428028805220a2005109c0120292013290300370300202b20142903003703002016201529030037030020042004290390173703c80a0240200428028c05450d00200a10390b203fa721050240200441c80a6a203c412010c60a450d0020044188056a411210df04200041013602002000410c6a20044190056a28020036020020002004290388053702042005450d0a200610390c0a0b02402005450d00200610390b20044188056a201210eb03200441c80a6a200428028805220c20042802900510ec0320042802f00c210520042802f80c210620042802fc0c210a20042802840d210b0240200428028c05450d00200c10390b2006204320051b2143200a204420051b2144200b204520051b2145024002400240024002400240024020050d0020044188056a201210ed03200441c80a6a200428028805220520042802900510ee030240024020042802c80a220a0d004100210a0c010b20042802f00a214620042802ec0a214720042802e40a214820042802e00a214920042802dc0a214a20042802d80a214b20042802d40a214c20042802d00a214d20042802cc0a214e0b0240200428028c05450d00200510390b0240200a450d000240204d450d00204d410c6c2106200a210503400240200541046a280200450d00200528020010390b2005410c6a2105200641746a22060d000b0b0240204e450d00204e410c6c450d00200a10390b0240204a450d00204a4104742106204c41086a2105034002402005280200450d002005417c6a28020010390b200541106a2105200641706a22060d000b0b0240204b41ffffffff0071450d00204c10390b02402049450d002048450d00204910390b02402046450d00204710390b200a0d020b203e417c6a224028020021062013420037030020144200370300201542003703002004420037039017200441c80a6a41a6f2c500410d10f20120152016290000370300200420042900c80a37039017200441c80a6a4188b4c600410f10f20120172016290000370000200820042900c80a370000200441c80a6a20044190176a10f30320042802c80a2205202420051b210b200620042902cc0a420020051b2211422088a722054f0d04200b2006410c6c6a220a280208224f41ffffffff0371204f470d13204f4102742206417f4c0d13200a280200210a20060d02410421290c030b02402043450d00200510390b2045450d00204410390b200441c80a6a410610df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c0e0b200610382229450d110b2029200a200610c30a1a20064102762150200b2005410c6c6a210a0c010b410021292005450d01200b2005410c6c6a210a0b200b210503402005410c6a21060240200541046a28020041ffffffff0371450d00200528020010390b20062105200a2006470d000b0b02402011a72205450d002005410c6c450d00200b10390b2029450d0320072802ec02410376204f470d05200741e4026a222b280200204f4b0d05200441e0026a41086a2205202d290000370300200441e0026a41106a2206202c290000370300200441e0026a41186a220a202a2900003703002015203841086a2902003703002014203841106a2902003703002013203841186a290200370300200420182900003703e00220042038290200370390172007280200210b200441f0166a41186a220c203c41186a290000370300200441f0166a41106a220d203c41106a290000370300200441f0166a41086a2212203c41086a290000370300200441d0166a41086a2218203b41086a290000370300200441d0166a41106a222a203b41106a290000370300200441d0166a41186a222c203b41186a2900003703002004203c2900003703f0162004203b2900003703d016200441b0166a41186a222d2007419c016a290000370300200441b0166a41106a224120074194016a290000370300200441b0166a41086a22422007418c016a29000037030020042007290084013703b01620044188056a41386a2251203741386a29000037030020044188056a41306a2252203741306a29000037030020044188056a41286a2253203741286a29000037030020044188056a41206a2254203741206a29000037030020044188056a41186a223c203741186a29000037030020044188056a41106a2238203741106a29000037030020044188056a41086a223b203741086a290000370300200420372900003703880520044190166a41186a2237200741fc016a29000037030020044190166a41106a2255200741f4016a29000037030020044190166a41086a2256200741ec016a290000370300200420072900e40137039016200441f0156a41186a2257203941186a290000370300200441f0156a41106a2258203941106a290000370300200441f0156a41086a2259203941086a290000370300200420392900003703f0152023203d109b01202220042903e002370200202241086a2005290300370200202241106a2006290300370200202241186a200a2903003702002021200429039017370200202e2015290300370200202f201429030037020020302013290300370200202020042903f016370200203320122903003702002032200d2903003702002031200c2903003702002004200b3602c80a2034202c2903003702002035202a29030037020020362018290300370200201f20042903d016370200201e20042903b016370200201e41086a2042290300370200201e41106a2041290300370200201e41186a202d290300370200201d200429038805370200201d41086a203b290300370200201d41106a2038290300370200201d41186a203c290300370200201d41206a2054290300370200201d41286a2053290300370200201d41306a2052290300370200201d41386a2051290300370200201c41186a2037290300370200201c41106a2055290300370200201c41086a2056290300370200201c200429039016370200201b41186a2057290300370200201b41106a2058290300370200201b41086a2059290300370200201b20042903f01537020020044100360290052004420137038805200441c80a6a20044188056a10bf0520044190176a200428028805200428029005109c01200441d0156a41186a222a2013290300370300200441d0156a41106a222c2014290300370300200441d0156a41086a222d201529030037030020042004290390173703d0150240200428028c05450d0020042802880510390b20072802ec0222054103762005410771220b6a22052005410771200541084922061b21124100211820072802e802210c202b280200213920072802dc02213702404100200541037620061b22050d00200b201241ff0171460d050b200c20056a210d2037203941c1006c6a212e200b41016a22054107712005200b41074622181b21064100210a200c2005410376410020181b6a2105200c2d0000200b76410171ad42288621112004280218212f200428022021274100211803402029200a4102746a210b024003402011428080808080c00084428080808080e03f83428080808080c000520d0102402005200d470d00200641ff0171201241ff0171460d080b200a41016a210a200b41046a210b20052d0000200641077176410171ad422886211120054100200641ff0171220c41016a2206410376200c410749220c1b6a210520062006410771200c1b21060c000b0b02402037202e470d00203921180c060b204f200a4d0d062027200b280200220b4d0d06202f200b4105746a220b2900002111200b41086a290000215a200b41106a290000215b203c200b41186a2900003703002038205b370300203b205a37030020042011370388050240024020372d00004101470d00201a20042903d015370000201a41186a202a290300370000201a41106a202c290300370000201a41086a202d290300370000200441013a00c80a200420044180086a3602ec0a200441e0026a200441c80a6a10fe020c010b201a20042903d015370000201a41186a202a290300370000201a41106a202c290300370000201a41086a202d290300370000200441003a00c80a200420044180086a3602ec0a200441e0026a200441c80a6a10fe020b0240203741016a20042802e002220b20042802e80220044188056a10f204450d00024020042802e402450d00200b10390b201841016a211802402005200d470d00200641ff0171201241ff0171460d070b200a41016a210a203741c1006a213720052d0000200641077176410171ad422886211120054100200641ff0171220b41016a2206410376200b410749220b1b6a210520062006410771200b1b21060c010b0b20042802e402450d05200b10390c050b200441c80a6a410510df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c080b2009200541c4a6c300105e000b2000200a3a00042000200429038805370005200041013602002000410c6a200428008f053600000c060b200441c80a6a410e10df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c050b2018202b280200470d002018410174204f4b0d02200441c80a6a410f10df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040c010b200441c80a6a411010df04200041013602002000410c6a200441d00a6a280200360200200020042903c80a3702040b205041ffffffff0371450d02202910390c020b203e414c6a213920072802ec0222054103762005410771220d6a22052005410771200541084922061b21374100210a20072802e80222124100200541037620061b6a211820042802d402220541077121382005410376213c20042802d002213b034020122105200d21060240024002400240024002400340200a2107024020052018470d00200641ff0171203741ff0171460d020b200741016a210a2006410771210b20052d0000210c20054100200641ff0171220d41016a2206410376200d410749220d1b6a2212210520062006410771200d1b220d2106200c200b76410171220b450d000b204f4100200b6b20077122054d0d022004202920054102746a2802002205360290172004203c3602e002203c20054d0d032038410048200520386a2206200548730d04200641084f0d0141002105200621070c050b2016200441d0026a41086a280200360200200420042903d0023703c80a204028020021072039280200210a024020042802c802220620042802c402470d00200441c0026a200610c00520042802c80221060b20042802c0022212200641146c6a2205200a360200200520042903c80a370204200520073602102005410c6a20162802003602002004200641016a22183602c8020240205041ffffffff0371450d00202910390b4101210c203a21072019203a460d080c060b20064107712107200641037521050c030b41d4a6c300411a41f0a6c3001065000b20044194056a4102360200200441dc0a6a4102360200200442023702cc0a200441a0f1c3003602c80a2004410236028c05200420044188056a3602d80a2004200441e0026a36029005200420044190176a36028805200441c80a6a41b0f1c3001043000b20064107712107200641037621050b203b20056a220520052d00004101200741077174723a00000c000b0b0b024020042802d802450d0020042802d00210390b20042802c002211220042802c80221180c060b0240200341086a28020022062009490d00410121070c010b20092006419ca6c300105e000b024020092006460d00200641346c200941346c22056b2109200328020020056a2105200441c80a6a410172220a41076a210b02400340200528020021060240024002402007450d002006200e4d0d010b2006210e0c010b200441c80a6a410810df042004200a290000370388052004200b28000036008f0520042d00c80a22064108470d020b200541346a2105410121072009414c6a22090d000c020b0b200020063a00042000200429038805370005200041013602002000410c6a200428008f053600000c050b201841ffffffff03712018470d0020042802c402212402400240201841027422060d00410421050c010b200610382205450d020b41002107200441003602c802200420053602c0022004200641027622063602c402024002400240200620184f0d00200441c0026a4100201810be0320042802c802210720042802c00221050c010b2018450d010b201841146c2109200520074102746a210520122106034020052006280200360200200741016a2107200541046a2105200641146a21062009416c6a22090d000b0b200420073602c8022012201841146c6a214c20022802002240200241086a280200220541f4026c6a210d2002280204213e024020050d0020402107201221090c030b200441d00c6a212b200441b00c6a2129200441f00b6a2116200441d00b6a213a200441b00b6a2144200441900b6a2143200441c80a6a41286a2101200441c80a6a41086a2146200441c80a6a41cc026a210f200441c80a6a4184026a2117200441c80a6a41e4016a211b200441c80a6a41a4016a2108200441c80a6a4184016a211c200441c80a6a41e4006a211e200441c80a6a41c4006a2122200441c80a6a41246a2145200441c80a6a4104722128200441c80a6a41a4026a215c20044180086a4184026a211d20044180086a41e4016a214f20044180086a41a4016a211a20044180086a4184016a213c20044180086a41e4006a213820044180086a41c4006a213920044180086a41246a212720044180086a41046a213b20044180086a41a4026a215d20044188056a4184026a211f20044188056a41e4016a212020044188056a41a4016a210220044188056a4184016a212120044188056a41e4006a211520044188056a41c4006a212520044188056a41246a212620044188056a410472213720044188056a41d0026a2123200441c80a6a41b4026a215e200441c80a6a41a8026a214b20044188056a41a4026a211920122106204021050340200541f4026a2107024020052802a402224e0d00200621090c040b200541f0026a280200214a200541e0026a280200210a200541cc026a280200214d200541c8026a280200212d200541c0026a280200212c200541bc026a2802002113200541b8026a280200210c200541b4026a280200212a200541b0026a2802002114200541ac026a280200210e200541a8026a280200210b20052802e802212e20052802dc02212f0240024002402006204c470d00204c21090c010b200641146a2109200628020422410d010b0240200e450d00200e410c6c2106204e210503400240200541046a280200450d00200528020010390b2005410c6a2105200641746a22060d000b0b0240200b450d00200b410c6c450d00204e10390b0240200c450d00200c4104742106201441086a2105034002402005280200450d002005417c6a28020010390b200541106a2105200641706a22060d000b0b0240202a41ffffffff0071450d00201410390b02402013450d00202c450d00201310390b0240204d450d00202d10390b0240200a450d00200a41c1006c450d00202f10390b204a450d04202e10390c040b200541ec026a2802002130200541e4026a2802002131200541c4026a2802002132200641086a29020021112006280210213d20062802002148200441e0026a200541a40210c30a1a200441d0026a41086a2206200541d0026a220541086a280200360200200420052902003703d00220044188056a200441e0026a41a40210c30a1a202320042903d002370200202341086a20062802003602002004204d3602d4072004202d3602d007200420323602cc072004202c3602c807200420133602c4072004200c3602c0072004202a3602bc07200420143602b8072004200e3602b4072004200b3602b0072004204e3602ac072004204a3602f807200420303602f4072004202e3602f007200420313602ec072004200a3602e8072004202f3602e4072004280288052147200441a0026a200428022010bb0520044190176a41086a2206203741086a225229020037030020044190176a41106a220a203741106a225329020037030020044190176a41186a220b203741186a2254290200370300200441f0166a41086a220e202641086a2255290200370300200441f0166a41106a2213202641106a2256290200370300200441f0166a41186a2214202641186a22572902003703002004203729020037039017200420262902003703f0162004280288052105200441d0166a41186a224e202541186a2258290200370300200441d0166a41106a224a202541106a2259290200370300200441d0166a41086a224d202541086a225f290200370300200441b0166a41086a222a201541086a2260290200370300200441b0166a41106a222c201541106a2261290200370300200441b0166a41186a222d201541186a2262290200370300200420252902003703d016200420152902003703b01620044190166a41186a222e202141186a226329020037030020044190166a41106a222f202141106a226429020037030020044190166a41086a2230202141086a22652902003703002004202129020037039016200441c80a6a41386a220c200241386a2266290200370300200441c80a6a41306a2249200241306a22672902003703002001200241286a2268290200370300200441c80a6a41206a2250200241206a2269290200370300200441c80a6a41186a2242200241186a226a290200370300200441c80a6a41106a2251200241106a226b2902003703002046200241086a226c290200370300200420022902003703c80a200441f0156a41186a2231202041186a226d290200370300200441f0156a41106a2232202041106a226e290200370300200441f0156a41086a2233202041086a226f290200370300200420202902003703f015200441d0156a41186a2234201f41186a2270290200370300200441d0156a41106a2235201f41106a2271290200370300200441d0156a41086a2236201f41086a22722902003703002004201f2902003703d015205d2019109b01203b200429039017370200203b41086a2006290300370200203b41106a200a290300370200203b41186a200b290300370200202720042903f016370200202741086a200e290300370200202741106a2013290300370200202741186a2014290300370200203920042903d016370200203941086a204d290300370200203941106a204a290300370200203941186a204e2903003702002004200536028008203841186a202d290300370200203841106a202c290300370200203841086a202a290300370200203820042903b016370200203c200429039016370200203c41086a2030290300370200203c41106a202f290300370200203c41186a202e290300370200201a20042903c80a370200201a41086a2046290300370200201a41106a2051290300370200201a41186a2042290300370200201a41206a2050290300370200201a41286a2001290300370200201a41306a2049290300370200201a41386a200c290300370200204f41186a2031290300370200204f41106a2032290300370200204f41086a2033290300370200204f20042903f015370200201d41186a2034290300370200201d41106a2035290300370200201d41086a2036290300370200201d20042903d01537020020042802d8072205417f4c0d0120042802d00721494101210c02402005450d0020051038220c450d030b200c2049200510c30a2149204620044180086a41c40210c30a210c2004203d3602a40d200420483602a00d2004200536029c0d200420053602980d200420493602940d200441003602cc0a200441073a00c80a200441c80a6a10fc0120062052290200370300200a2053290200370300200b2054290200370300200e205529020037030020132056290200370300201420572902003703002004203729020037039017200420262902003703f0162004280288052142204e2058290200370300204a2059290200370300204d205f290200370300202a2060290200370300202c2061290200370300202d2062290200370300200420252902003703d016200420152902003703b016202e2063290200370300202f206429020037030020302065290200370300200420212902003703901620044180086a41386a2251206629020037030020044180086a41306a2252206729020037030020044180086a41286a2253206829020037030020044180086a41206a2254206929020037030020044180086a41186a2205206a29020037030020044180086a41106a2249206b29020037030020044180086a41086a2250206c29020037030020042002290200370380082031206d2902003703002032206e2902003703002033206f290200370300200420202902003703f0152034207029020037030020352071290200370300203620722902003703002004201f2902003703d015205c2019109b012028200429039017370200202841086a2006290300370200202841106a200a290300370200202841186a200b290300370200204520042903f016370200204541086a200e290300370200204541106a2013290300370200204541186a2014290300370200202220042903d016370200202241086a204d290300370200202241106a204a290300370200202241186a204e290300370200200420423602c80a201e41186a202d290300370200201e41106a202c290300370200201e41086a202a290300370200201e20042903b016370200201c200429039016370200201c41086a2030290300370200201c41106a202f290300370200201c41186a202e2903003702002008200429038008370200200841086a2050290300370200200841106a2049290300370200200841186a2005290300370200200841206a2054290300370200200841286a2053290300370200200841306a2052290300370200200841386a2051290300370200201b41186a2031290300370200201b41106a2032290300370200201b41086a2033290300370200201b20042903f015370200201741186a2034290300370200201741106a2035290300370200201741086a2036290300370200201720042903d015370200200441003602f816200442013703f016200441c80a6a200441f0166a10bf0520044190176a20042802f01620042802f816109c012005200b2903003703002049200a29030037030020502006290300370300200420042903901737038008024020042802f416450d0020042802f01610390b20042802ac07214d20042802b007212a20042802b407211320042802b807214a20042802bc07213020042802c007211420042802c407214e20042802c807213620042802cc07214220042802d007212c20042802d407213120042802d807213220042802dc07213320042802e0072134200f41186a220a2005290300370000200f41106a220e2049290300370000200f41086a222d2050290300370000200f200429038008370000202820044188056a41a40210c30a1a204b41086a200441a0026a41086a280200360200204b20042903a0023702002004203d3602900d200420103602880d200420113703800d200420413602fc0c200420483602c80a200420042802900236028c0d200441f0166a204710eb0320042802f816213520042802f016210b2004410036029817200442013703901720042802c80a210520044190176a4100410410810120042802901720042802981722066a20053600002004200641046a36029817412010382205450d02200428029417212e20042802981721062005200f290000370000200541086a222f202d290000370000200541106a222d200e290000370000200541186a220e200a2900003700000240202e20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a202f290000370000200a41106a202d290000370000200a41186a200e2900003700002004200641206a360298172005103920042802cc0a2106024020042802941720042802981722056b41034b0d0020044190176a2005410410810120042802981721050b20042802901720056a20063600002004200541046a36029817412010382205450d02200428029417210a20042802981721062005200c290000370000200541086a220e200c41086a290000370000200541106a222d200c41106a290000370000200541186a222e200c41186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200e290000370000200a41106a202d290000370000200a41186a202e2900003700002004200641206a3602981720051039024020042802941720042802981722066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a22052001290000370000200541086a200141086a290000370000200541106a200141106a290000370000200541186a200141186a2900003700002004200641206a36029817412010382205450d02200428029417210a200428029817210620052043290000370000200541086a220c204341086a290000370000200541106a220e204341106a290000370000200541186a222d204341186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200c290000370000200a41106a200e290000370000200a41186a202d2900003700002004200641206a3602981720051039412010382205450d02200428029417210a200428029817210620052044290000370000200541086a220c204441086a290000370000200541106a220e204441106a290000370000200541186a222d204441186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200c290000370000200a41106a200e290000370000200a41186a202d2900003700002004200641206a3602981720051039412010382205450d02200428029417210a20042802981721062005203a290000370000200541086a220c203a41086a290000370000200541106a220e203a41106a290000370000200541186a222d203a41186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200c290000370000200a41106a200e290000370000200a41186a202d2900003700002004200641206a3602981720051039024020042802941720042802981722066b413f4b0d0020044190176a200641c00010810120042802981721060b20042802901720066a22052016290000370000200541086a201641086a290000370000200541106a201641106a290000370000200541186a201641186a290000370000200541206a201641206a290000370000200541286a201641286a290000370000200541306a201641306a290000370000200541386a201641386a2900003700002004200641c0006a36029817412010382205450d02200428029417210a200428029817210620052029290000370000200541086a220c202941086a290000370000200541106a220e202941106a290000370000200541186a222d202941186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200c290000370000200a41106a200e290000370000200a41186a202d2900003700002004200641206a3602981720051039412010382205450d02200428029417210a20042802981721062005202b290000370000200541086a220c202b41086a290000370000200541106a220e202b41106a290000370000200541186a222d202b41186a2900003700000240200a20066b411f4b0d0020044190176a2006412010810120042802981721060b20042802901720066a220a2005290000370000200a41086a200c290000370000200a41106a200e290000370000200a41186a202d2900003700002004200641206a3602981720051039204b20044190176a10ba05205e20044190176a10ba0520042802880d2106024020042802941720042802981722056b41034b0d0020044190176a2005410410810120042802981721050b20042802901720056a20063600002004200541046a220536029817200428028c0d2106024020042802941720056b41034b0d0020044190176a2005410410810120042802981721050b20042802901720056a20063600002004200541046a22053602981720042802900d2106024020042802941720056b41034b0d0020044190176a2005410410810120042802981721050b20042802901720056a20063600002004200541046a220536029817200b2035200428029017200510a3020240200428029417450d0020042802901710390b024020042802f416450d00200b10390b20042802f00c2105024020042802f80c2206450d00200510390b200420063602f80c200420053602f00c024020042802840d450d0020042802fc0c10390b20044190176a204710ed03200428029817212e200428029017212d200441003602d00a200442013703c80a200441c80a6a201310d2012013410c6c210a02402013450d00204d200a6a2106204d210503402005280200200541086a280200200441c80a6a10d6012005410c6a22052006470d000b0b200441c80a6a201410d2012014410474210b02402014450d00204a200b6a210e204a210503402005280200210c024020042802cc0a20042802d00a22066b41034b0d00200441c80a6a2006410410810120042802d00a21060b20042802c80a20066a200c3600002004200641046a3602d00a200541046a2802002005410c6a280200200441c80a6a10d601200541106a2205200e470d000b0b20042802cc0a210620042802d00a210502400240204e0d00024020062005470d00200441c80a6a2005410110810120042802d00a21050b20042802c80a20056a41003a00002004200541016a3602d00a0c010b024020062005470d00200441c80a6a2005410110810120042802d00a21050b20042802c80a20056a41013a00002004200541016a3602d00a204e2042200441c80a6a10d6010b202c2032200441c80a6a10d601024020042802cc0a220c20042802d00a22056b41034b0d00200441c80a6a2005410410810120042802cc0a210c20042802d00a21050b20042802c80a220620056a20333600002004200541046a22053602d00a0240200c20056b41034b0d00200441c80a6a2005410410810120042802cc0a210c20042802c80a210620042802d00a21050b200620056a2034360000202d202e2006200541046a10a3020240200c450d00200610390b0240200428029417450d00202d10390b02402013450d00204d210503400240200541046a280200450d00200528020010390b2005410c6a2105200a41746a220a0d000b0b0240202a450d00202a410c6c450d00204d10390b02402014450d00204a41086a2105034002402005280200450d002005417c6a28020010390b200541106a2105200b41706a220b0d000b0b0240203041ffffffff0071450d00204a10390b0240204e450d002036450d00204e10390b02402031450d00202c10390b024020042802e8072205450d00200541c1006c450d0020042802e40710390b024020042802f807450d0020042802f00710390b20092106200721052007200d470d000c040b0b1034000b1030000b200d2007460d0003400240200741ac026a2802002206450d0020072802a40221052006410c6c210603400240200541046a280200450d00200528020010390b2005410c6a2105200641746a22060d000b0b0240200741a8026a2802002205450d002005410c6c450d0020072802a40210390b0240200741b8026a2802002205450d0020054104742106200741b0026a28020041086a2105034002402005280200450d002005417c6a28020010390b200541106a2105200641706a22060d000b0b0240200741b4026a28020041ffffffff0071450d0020072802b00210390b0240200741bc026a2802002205450d00200741c0026a280200450d00200510390b0240200741cc026a280200450d00200741c8026a28020010390b0240200741e0026a2802002205450d00200541c1006c450d0020072802dc0210390b200741f4026a210520072802e80221060240200741f0026a280200220a450d00200610390b2007200a3602f002200720063602e802200521072005200d470d000b0b0240203e450d00203e41f4026c450d00204010390b0240204c2009460d002012201841146c6a210b0340200941146a2105200941046a2207280200210602402009410c6a2209280200220a450d00200610390b2009200a3602002007200636020020052109200b2005470d000b0b02402024450d00202441146c450d00201210390b200020042903c002370204200041003602002000410c6a200441c8026a2802003602000240200428021c41ffffff3f71450d00200428021810390b200341046a2802002205450d02200541346c450d02200328020010390c020b02402018450d00201841146c21072012410c6a21050340200541786a2209280200210602402005280200220a450d00200610390b2005200a36020020092006360200200541146a21052007416c6a22070d000b0b024020042802c4022205450d00200541146c450d00201210390b200428021c41ffffff3f71450d00200428021810390b0240200341046a2802002205450d00200541346c450d00200328020010390b200228020021070240200241086a2802002205450d00200541f4026c21062007210503402005109f03200541f4026a21052006418c7d6a22060d000b0b200241046a2802002205450d00200541f4026c450d00200710390b200441b0176a24000be90301067f230041d0006b22022400200241086a41a4dcc500410310f201200241186a41a8dfc500411310f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000ba30404037f017e027f017e230041d0006b220324002003200236020420032001360200200341086a2001200210e402024002400240200328020822010d00200041003602080c010b200328020c21042003200341106a28020036021c20032001360218200341386a200341186a10bf030240024020032802382205450d0002400240417f200329023c2206422088a7220741016a410220071b22082006a72202200820024b1b2208417f6a677641016a4101200841014b1b22082002460d00200220076b200820076b22084f0d00200720086a22082007490d052008ad420c7e2209422088a74541027421072009a721080240024020020d00200341003602380c010b200341c0006a41043602002003200536023820032002410c6c36023c0b200341286a20082007200341386a1049200341306a280200210220032802284101460d01200328022c21052002410c6e21022006422088a721070b2000200236020c2000200536020820002007360204200041003602000c020b2002450d031030000b2003420037022c2003410028029cde4a3602282003410c360224200320033602202003200341286a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341206a360248200341346a41fc86ca00200341386a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b200041003602080b2004450d00200110390b200341d0006a24000f0b1034000be90301067f230041d0006b22022400200241086a41a4dcc500410310f201200241186a4194e0c500411610f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b8d0a08017f017e017f017e017f017e017f027e230041801f6b2205240020052004370350200541d8136a200241e00710c30a1a200541d8006a200541d8136a10e104200541c0006a200541d8006a1097070240024002402005280240450d0020004202370300200041153602080c010b20052903482104200541306a200541d8006a10980702402005290330a7450d0020004202370300200041153602080c010b0240200420052903387c220620045a0d0020004202370300200041013602080c010b024020062003580d002000411136020820004202370300200041106a20063703000c010b200541b8086a41106a22024200370300200541b8086a41086a22074200370300200542003703b80820054190106a200141c80310c30a1a200541d8136a200541d8006a41e00710c30a1a200541d0086a20054190106a4101200541d8136a200541d0006a42012004200541b8086a10a30802400240024002402007290300220320022903002208844200520d00200542003703e013200542003703d8130c010b200541f0136a22024200370300200541d8136a41106a22014200370300200541d8136a41086a22074200370300200542003703d81320054190106a41d3fec300410810f201200720054190106a41086a220929000037030020052005290090103703d81320054190106a41d0a8c800410d10f201200220092900003703002001200529009010370300200541186a200541d8136a412010f904200541186a41106a29030021042005290320210a2005280218210b200242003703002001420037030020074200370300200542003703d81320054190106a41d3fec300410810f2012007200929000037030020052005290090103703d81320054190106a41d0a8c800410d10f2012002200929000037030020012005290090103703002005427f20044200200b1b220420087c200a4200200b1b220a20037c220c200a542202ad7c220d2002200d200454200d2004511b22021b370398102005427f200c20021b37039010200541d8136a412020054190106a411010a30220052004427f85200820021b22043703e0132005200a427f85200320021b22033703d81320032004844200520d010b2005200541d8136a3602901020054190106a10a4060c010b20054190106a10be04200541d8136a10be04200541086a200541d8136a200320041093080240024020032005290308220a582004200541086a41086a290300220858200420085122021b0d00200541f01e6a200420087d2003200a54ad7d370300200542013703e01e20052003200a7d3703e81e2005200541e01e6a41086a3602fc1e200541fc1e6a10a4060c010b200541f01e6a200820047d200a200354ad7d220d3703002005200a20037d220c3703e81e2005200a200356200820045620021bad4201863703e01e200a200358200820045820021b0d00200c200d10f8040b20054190146a200437030020054188146a2003370300200541f9136a200541a8106a290300370000200541f1136a200541a0106a290300370000200541e9136a20054190106a41086a290300370000200541e1136a200529039010370000200541d8136a41086a41043a0000200541023a00d813200541d8136a10fc010b420121040240024020052903d0084201520d00200041106a200541d8086a41b80710c30a1a0c010b420021044200200620052903d8087d220320032006561b21060b20002004370300200020063703080c010b200541d8006a108104200110af010b200541801f6a24000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d002002109f060b0f0b200041086a10af01200041046a2202280200108104200228020010390b870101047f230041106b22022400200241003602082002420137030020012002109d03200128020c2103024020022802042204200228020822016b41034b0d0020022001410410810120022802042104200228020821010b2002280200220520016a2003360000200041202005200141046a10a30202402004450d00200510390b200241106a24000b13002000410a360204200041ccbac1003602000b3400200041ed80c40036020420004100360200200041146a4102360200200041106a4180ecc100360200200041086a42053702000b130020004106360204200041f0f0c1003602000b2c01017f02404104103822020d001030000b200020023602002002412036000020004284808080c0003702040b2b01017f02404102103822020d001030000b20002002360200200241203b000020004282808080203702040b3301017f02404110103822020d001030000b200242003700082002420a370000200020023602002000429080808080023702040bed1e02077f017e230041d00f6b22022400024002400240200128020422030d002000410b3a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e0a0001020304050607080a090b20024190086a200110800220022d0090084101460d0a200241c8006a200241a9086a290000370300200241c0006a200241a1086a290000370300200241386a20024199086a290000370300200220022900910837033002400240024020012802042203450d00200128020022042d0000210520012003417f6a22073602042001200441016a360200410221060240024020050e020100020b2007450d0120042d0001210520012003417e6a3602042001200441026a36020041002106024020050e020100020b410121060b20024190086a200110c4012002280290082101200241d0006a20024190086a41047241bc0710c30a1a20014125460d0241c007103822030d010c180b2000410b3a00000c160b20032001360200200341046a200241d0006a41bc0710c30a1a200041196a200241c8006a290300370000200041116a200241c0006a290300370000200041096a200241386a29030037000020002002290330370001200041246a2003360200200041216a20063a0000200041013a00000c150b2000410b3a00000c140b20024190086a200110800202400240024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020012802042203450d0d200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e0202010d0b2000410b3a00000c150b410121070b024020064104490d002004280001210520012003417b6a3602042001200441056a36020020002002290350370001200041096a200241d8006a290300370000200041116a200241e0006a290300370000200041196a200241e8006a290300370000200041246a2005360200200041216a20073a0000200041023a00000c140b2000410b3a00000c130b20024190086a200110800202400240024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020012802042203450d0d200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e0202010d0b2000410b3a00000c140b410121070b024020064104490d002004280001210520012003417b6a3602042001200441056a36020020002002290350370001200041096a200241d8006a290300370000200041116a200241e0006a290300370000200041196a200241e8006a290300370000200041246a2005360200200041216a20073a0000200041033a00000c130b2000410b3a00000c120b200041043a00000c110b2006450d0920042d0001210520012003417e6a22063602042001200441026a360200410021070240024020050e0201000b0b410121070b20064104490d0a2004280002210620012003417a6a22053602042001200441066a360200024020054102490d0020042f000621052001200341786a3602042001200441086a360200200041046a2006360200200041026a20053b0100200020073a0001200041053a00000c110b2000410b3a00000c100b20024190086a200110800202400240024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020012802042203450d0d200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e0202010d0b2000410b3a00000c110b410121070b20064102490d0b20042f0001210520012003417d6a3602042001200441036a360200200241086a200110ad0120022802080d0c200228020c21032002200110ad01024020022802000d002002280204210120002002290350370001200041196a200241e8006a290300370000200041116a200241e0006a290300370000200041096a200241d8006a290300370000200041286a2001360200200041246a2003360200200041226a20053b0100200041216a20073a0000200041063a00000c100b2000410b3a00000c0f0b20024190086a2001108002024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020024190086a41047221082001280204210641002103417f21040240034020062003460d01200128020022052d000021072001200620046a3602042001200541016a360200200820036a20073a00002002200341016a2205360290082004417f6a21042005210320054120470d000b200041286a2002419b086a2f00003b00002000412a6a2002419d086a2d00003a00002000412f6a200241a2086a2f01003b0000200041316a200241a4086a2d00003a0000200041386a200241ab086a2d00003a0000200041366a20024190086a41196a2f00003b0000200220022f0194083b0130200220022d0096083a00322002419e086a2801002101200241a5086a2800002103200241ac086a29020021092002280097082104200041236a20022d00323a0000200041216a20022f01303b0000200041396a2009370000200041326a20033600002000412b6a2001360000200041246a2004360000200041196a200241e8006a290300370000200041116a200241e0006a290300370000200041096a200241d8006a29030037000020002002290350370001200041073a00000c100b2000410b3a00000c0f0b2000410b3a00000c0e0b20024190086a2001108002024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020024190086a41047221082001280204210641002103417f21040240034020062003460d01200128020022052d000021072001200620046a3602042001200541016a360200200820036a20073a00002002200341016a2205360290082004417f6a21042005210320054120470d000b200041286a2002419b086a2f00003b00002000412a6a2002419d086a2d00003a00002000412f6a200241a2086a2f01003b0000200041316a200241a4086a2d00003a0000200041386a200241ab086a2d00003a0000200041366a20024190086a41196a2f00003b0000200220022f0194083b0130200220022d0096083a00322002419e086a2801002101200241a5086a2800002103200241ac086a29020021092002280097082104200041236a20022d00323a0000200041216a20022f01303b0000200041396a2009370000200041326a20033600002000412b6a2001360000200041246a2004360000200041196a200241e8006a290300370000200041116a200241e0006a290300370000200041096a200241d0006a41086a29030037000020002002290350370001200041083a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b20024190086a2001108002024020022d0090084101460d00200241e8006a200241a9086a290000370300200241e0006a200241a1086a290000370300200241d8006a20024199086a290000370300200220022900910837035020024190086a41047221082001280204210641002103417f21040240034020062003460d01200128020022052d000021072001200620046a3602042001200541016a360200200820036a20073a00002002200341016a2205360290082004417f6a21042005210320054120470d000b200041286a2002419b086a2f00003b00002000412a6a2002419d086a2d00003a00002000412f6a200241a2086a2f01003b0000200041316a200241a4086a2d00003a0000200041386a200241ab086a2d00003a0000200041366a20024190086a41196a2f00003b0000200220022f0194083b0130200220022d0096083a00322002419e086a2801002101200241a5086a2800002103200241ac086a29020021092002280097082104200041236a20022d00323a0000200041216a20022f01303b0000200041396a2009370000200041326a20033600002000412b6a2001360000200041246a2004360000200041196a200241e8006a290300370000200041116a200241e0006a290300370000200041096a200241d8006a29030037000020002002290350370001200041093a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b20024190086a200110800220022d0090084101460d08200241106a41186a200241a9086a2203290000370300200241106a41106a200241a1086a2204290000370300200241106a41086a20024199086a2205290000370300200220022900910837031020024190086a200110800202400240024020022d0090084101460d00200241306a41186a2003290000370300200241306a41106a2004290000370300200241306a41086a2005290000370300200220022900910837033020012802042203450d0c200128020022042d0000210520012003417f6a22073602042001200441016a36020041022106024020050e0203000d0b2007450d0c20042d0001210520012003417e6a3602042001200441026a3602004100210620050e0202010c0b2000410b3a00000c0c0b410121060b20024190086a200110c4012002280290082101200241d0006a20024190086a41047241bc0710c30a1a024020014125460d0041c00710382203450d0c20032001360200200341046a200241d0006a41bc0710c30a1a200041196a200241106a41186a290300370000200041116a200241106a41106a290300370000200041096a200241106a41086a29030037000020002002290310370001200041216a2002290330370000200041296a200241306a41086a290300370000200041316a200241306a41106a290300370000200041396a200241306a41186a290300370000200041c4006a2003360200200041c1006a20063a00002000410a3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b2000410b3a00000c030b2000410b3a00000c020b2000410b3a00000c010b2000410b3a00000b200241d00f6a24000f0b1030000bd036030c7f017e047f230041b00f6b22022400024002402001280200220328020422040d002000410b3a00000c010b200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e0a00010203040506070809140b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c160b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b410221052002412c6a41026a200241fd076a2d00003a0000200241286a41026a20024184086a2d00003a0000200220022f01f4073b0130200220022d00f6073a00322002200241f0076a410b6a2f00003b012c200220024182086a2f01003b012820024190086a28020021092002418c086a280200210720024185086a280000210a200241fe076a280100210b20022800f707210c200241246a41026a2002418b086a2d00003a0000200220024189086a2f00003b0124200128020022032802042204450d09200328020022062d0000210820032004417f6a3602042003200641016a3602000240024020080e0201000b0b200128020022032802042204450d0a200328020022052d0000210620032004417f6a3602042003200541016a36020041002105024020060e0201000b0b410121050b2001200128020441016a22033602040240200320012802084b0d00200241f0076a200110cb0120022802f0072103200241346a200241f0076a41047241bc0710c30a1a20034125460d0041c00710382204450d1320042003360200200441046a200241346a41bc0710c30a1a200020022f01303b0001200041036a20022d00323a0000200041046a200c360000200041086a20022f012c3b00002000410a6a2002412c6a41026a2d00003a00002000410b6a200b3600002000410f6a20022f01283b0000200041116a200241286a41026a2d00003a0000200041126a200a360000200041166a20022f01243b0000200041186a200241246a41026a2d00003a000020012001280204417f6a3602042000411d6a2009360000200041196a2007360000200041246a2004360200200041216a20053a0000200041013a00000c150b2000410b3a00000c140b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c150b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b200241306a41026a200241fd076a2d00003a00002002412c6a41026a20024184086a2d00003a0000200220022f01f4073b0134200220022d00f6073a00362002200241f0076a410b6a2f00003b0130200220024182086a2f01003b012c20024190086a28020021082002418c086a280200210920024185086a2800002107200241fe076a280100210a20022800f707210b200241286a41026a2002418b086a2d00003a0000200220024189086a2f00003b0128200128020022032802042204450d09200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e0201000b0b410121040b02402001280200220328020422014104490d0020032802002205280000210620032001417c6a3602042003200541046a360200200041036a20022d00363a0000200020022f01343b0001200041046a200b360000200041086a20022f01303b00002000410a6a200241306a41026a2d00003a00002000410b6a200a3600002000410f6a20022f012c3b0000200041116a2002412c6a41026a2d00003a0000200041126a2007360000200041166a20022f01283b0000200041186a200241286a41026a2d00003a00002000411d6a2008360000200041196a2009360000200041246a2006360200200041216a20043a0000200041023a00000c140b2000410b3a00000c130b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c140b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b200241306a41026a200241fd076a2d00003a00002002412c6a41026a20024184086a2d00003a0000200220022f01f4073b0134200220022d00f6073a00362002200241f0076a410b6a2f00003b0130200220024182086a2f01003b012c20024190086a28020021082002418c086a280200210920024185086a2800002107200241fe076a280100210a20022800f707210b200241286a41026a2002418b086a2d00003a0000200220024189086a2f00003b0128200128020022032802042204450d09200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e0201000b0b410121040b02402001280200220328020422014104490d0020032802002205280000210620032001417c6a3602042003200541046a360200200041036a20022d00363a0000200020022f01343b0001200041046a200b360000200041086a20022f01303b00002000410a6a200241306a41026a2d00003a00002000410b6a200a3600002000410f6a20022f012c3b0000200041116a2002412c6a41026a2d00003a0000200041126a2007360000200041166a20022f01283b0000200041186a200241286a41026a2d00003a00002000411d6a2008360000200041196a2009360000200041246a2006360200200041216a20043a0000200041033a00000c130b2000410b3a00000c120b200041043a00000c110b200128020022032802042204450d08200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e0201000a0b410121040b2001280200220328020422054104490d0920032802002206280000210820032005417c6a3602042003200641046a36020002402001280200220328020422014102490d00200328020022052f0000210620032001417e6a3602042003200541026a360200200041046a2008360200200041026a20063b0100200020043a0001200041053a00000c110b2000410b3a00000c100b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c110b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b200241306a41026a200241fd076a2d00003a00002002412c6a41026a20024184086a2d00003a0000200220022f01f4073b0134200220022d00f6073a00362002200241f0076a410b6a2f00003b0130200220024182086a2f01003b012c20024190086a28020021082002418c086a280200210920024185086a2800002107200241fe076a280100210a20022800f707210b200241286a41026a2002418b086a2d00003a0000200220024189086a2f00003b0128200128020022032802042204450d09200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e0201000b0b410121040b2001280200220328020422054102490d0a200328020022062f0000210c20032005417e6a3602042003200641026a360200200241086a200110bb0120022802080d0b200228020c21032002200110bb01024020022802000d0020022802042101200020022f01343b0001200041036a20022d00363a0000200041046a200b360000200041086a20022f01303b00002000410b6a200a3600002000410f6a20022f012c3b0000200041126a2007360000200041166a20022f01283b00002000410a6a200241306a41026a2d00003a0000200041116a2002412c6a41026a2d00003a0000200041186a200241286a41026a2d00003a00002000411d6a2008360000200041196a2009360000200041286a2001360200200041246a2003360200200041226a200c3b0100200041216a20043a0000200041063a00000c100b2000410b3a00000c0f0b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c100b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b2002412c6a41026a200241fd076a2d00003a0000200241286a41026a20024184086a2d00003a0000200220022f01f4073b0130200220022d00f6073a00322002200241fb076a2f00003b012c200220024182086a2f01003b0128200241f0076a41206a28020021072002418c086a280200210a20024185086a280000210b200241fe076a280100210c20022800f707210d200241246a41026a2002418b086a2d00003a0000200220024189086a2f00003b0124200241f0076a410472210920012802002201280204210641002103417f21040340024020062003470d002000410b3a00000c100b200128020022052d000021082001200620046a3602042001200541016a360200200920036a20083a00002002200341016a22053602f0072004417f6a21042005210320054120470d000b200041286a200241f0076a410b6a2f00003b00002000412a6a200241fd076a2d00003a00002000412f6a200241f0076a41126a2f01003b0000200041316a20024184086a2d00003a0000200041386a2002418b086a2d00003a0000200041366a200241f0076a41196a2f00003b0000200220022f01f4073b0134200220022d00f6073a0036200241fe076a280100210320024185086a28000021012002418c086a290200210e20022800f7072104200041236a20022d00363a0000200041216a20022f01343b0000200041396a200e370000200041326a20013600002000412b6a2003360000200041246a2004360000200041036a20022d00323a0000200020022f01303b0001200041046a200d360000200041086a20022f012c3b00002000410a6a2002412c6a41026a2d00003a00002000410b6a200c360000200041126a200b3600002000410f6a20022f01283b0000200041116a200241286a41026a2d00003a0000200041166a20022f01243b0000200041186a200241246a41026a2d00003a00002000411d6a2007360000200041196a200a360000200041073a00000c0e0b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c0f0b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b2002412c6a41026a200241fd076a2d00003a0000200241286a41026a20024184086a2d00003a0000200220022f01f4073b0130200220022d00f6073a00322002200241fb076a2f00003b012c200220024182086a2f01003b0128200241f0076a41206a28020021072002418c086a280200210a20024185086a280000210b200241fe076a280100210c20022800f707210d200241246a41026a2002418b086a2d00003a0000200220024189086a2f00003b0124200241f0076a410472210920012802002201280204210641002103417f21040340024020062003470d002000410b3a00000c0f0b200128020022052d000021082001200620046a3602042001200541016a360200200920036a20083a00002002200341016a22053602f0072004417f6a21042005210320054120470d000b200041286a200241f0076a410b6a2f00003b00002000412a6a200241fd076a2d00003a00002000412f6a200241f0076a41126a2f01003b0000200041316a20024184086a2d00003a0000200041386a2002418b086a2d00003a0000200041366a200241f0076a41196a2f00003b0000200220022f01f4073b0134200220022d00f6073a0036200241fe076a280100210320024185086a28000021012002418c086a290200210e20022800f7072104200041236a20022d00363a0000200041216a20022f01343b0000200041396a200e370000200041326a20013600002000412b6a2003360000200041246a2004360000200041036a20022d00323a0000200020022f01303b0001200041046a200d360000200041086a20022f012c3b00002000410a6a2002412c6a41026a2d00003a00002000410b6a200c360000200041126a200b3600002000410f6a20022f01283b0000200041116a200241286a41026a2d00003a0000200041166a20022f01243b0000200041186a200241246a41026a2d00003a00002000411d6a2007360000200041196a200a360000200041083a00000c0d0b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c0e0b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b2002412c6a41026a200241fd076a2d00003a0000200241286a41026a20024184086a2d00003a0000200220022f01f4073b0130200220022d00f6073a00322002200241fb076a2f00003b012c200220024182086a2f01003b0128200241f0076a41206a28020021072002418c086a280200210a20024185086a280000210b200241fe076a280100210c20022800f707210d200241246a41026a2002418b086a2d00003a0000200220024189086a2f00003b0124200241f0076a410472210920012802002201280204210641002103417f21040340024020062003470d002000410b3a00000c0e0b200128020022052d000021082001200620046a3602042001200541016a360200200920036a20083a00002002200341016a22053602f0072004417f6a21042005210320054120470d000b200041286a200241f0076a410b6a2f00003b00002000412a6a200241fd076a2d00003a00002000412f6a200241f0076a41126a2f01003b0000200041316a20024184086a2d00003a0000200041386a2002418b086a2d00003a0000200041366a200241f0076a41196a2f00003b0000200220022f01f4073b0134200220022d00f6073a0036200241fe076a280100210320024185086a28000021012002418c086a290200210e20022800f7072104200041236a20022d00363a0000200041216a20022f01343b0000200041396a200e370000200041326a20013600002000412b6a2003360000200041246a2004360000200041036a20022d00323a0000200020022f01303b0001200041046a200d360000200041086a20022f012c3b00002000410a6a2002412c6a41026a2d00003a00002000410b6a200c360000200041126a200b3600002000410f6a20022f01283b0000200041116a200241286a41026a2d00003a0000200041166a20022f01243b0000200041186a200241246a41026a2d00003a00002000411d6a2007360000200041196a200a360000200041093a00000c0c0b200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c0d0b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b2002411c6a41026a200241fd076a2d00003a0000200241186a41026a20024184086a2d00003a0000200220022f01f4073b0120200220022d00f6073a00222002200241fb076a2f00003b011c200220024182086a2f01003b0118200241f0076a41206a280200210a2002418c086a280200210b20024185086a280000210c200241fe076a280100210d20022800f707210f200241146a41026a2002418b086a2d00003a0000200220024189086a2f00003b0114200241f0076a410472210720012802002204280204210841002103417f21050340024020082003470d002000410b3a00000c0d0b200428020022062d000021092004200820056a3602042004200641016a360200200720036a20093a00002002200341016a22063602f0072005417f6a21052006210320064120470d000b410221052002412c6a41026a200241fd076a2d00003a0000200241286a41026a20024184086a2d00003a0000200220022f01f4073b0130200220022d00f6073a00322002200241f0076a410b6a2f00003b012c200220024182086a2f01003b012820024190086a28020021092002418c086a280200210720024185086a2800002110200241fe076a280100211120022800f7072112200241246a41026a2002418b086a2d00003a0000200220024189086a2f00003b0124200128020022032802042204450d08200328020022062d0000210820032004417f6a3602042003200641016a3602000240024020080e0201000a0b200128020022032802042204450d09200328020022052d0000210620032004417f6a3602042003200541016a36020041002105024020060e0201000a0b410121050b2001200128020441016a22033602040240200320012802084b0d00200241f0076a200110cb0120022802f0072103200241346a200241f0076a41047241bc0710c30a1a20034125460d0041c00710382204450d0a20042003360200200441046a200241346a41bc0710c30a1a200020022f01203b0001200041036a20022d00223a0000200041046a200f360000200041086a20022f011c3b00002000410a6a2002411c6a41026a2d00003a00002000410b6a200d3600002000410f6a20022f01183b0000200041116a200241186a41026a2d00003a0000200041126a200c360000200041166a20022f01143b0000200041186a200241146a41026a2d00003a000020012001280204417f6a3602042000411d6a200a360000200041196a200b360000200041246a20123600002000412b6a2011360000200041326a2010360000200041216a20022f01303b0000200041236a20022d00323a0000200041286a20022f012c3b00002000412a6a2002412c6a41026a2d00003a00002000412f6a20022f01283b0000200041316a200241286a41026a2d00003a0000200041366a20022f01243b0000200041386a200241246a41026a2d00003a00002000413d6a2009360000200041396a2007360000200041c4006a2004360200200041c1006a20053a00002000410a3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b2000410b3a00000c030b2000410b3a00000c020b1030000b2000410b3a00000b200241b00f6a24000bb21503097f017e087f23004190016b2202240002400240024002402001280200220128020422030d00200041033a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240024020050e03000102030b2003417f6a2107200241106a410472210841002106417e21050340024020072006470d00200041033a00000c050b200420066a220941016a2d0000210a2001200320056a3602042001200941026a360200200820066a200a3a00002002200641016a22093602102005417f6a210520092106200941c000470d000b2002200241106a41356a2201290000370380012002200241cc006a29000037008701200220022f01143b017c200220022d00163a007e2002411e6a2801002106200241256a28000021052002412c6a2802002109200241336a28000021032002413a6a2801002104200241c1006a280000210a200228001721072002280083012108200229008701210b200241f8006a41026a220c2002411d6a2d00003a00002002200241106a410b6a2f00003b0178200241f4006a41026a220d200241246a2d00003a00002002200241106a41126a2f01003b0174200241f0006a41026a220e2002412b6a2d00003a00002002200241106a41196a2f00003b0170200241ec006a41026a220f200241326a2d00003a00002002200241106a41206a2f01003b016c200241e8006a41026a2210200241396a2d00003a00002002200241106a41276a2f00003b0168200241e4006a41026a2211200241c0006a2d00003a00002002200241106a412e6a2f01003b0164200241e0006a41026a2212200241c7006a2d00003a0000200220012f00003b0160200041036a20022d007e3a0000200020022f017c3b0001200041086a20022f01783b00002000410a6a200c2d00003a00002000410f6a20022f01743b0000200041116a200d2d00003a0000200041166a20022f01703b0000200041186a200e2d00003a00002000411f6a200f2d00003a00002000411d6a20022f016c3b0000200041266a20102d00003a0000200041246a20022f01683b00002000412d6a20112d00003a00002000412b6a20022f01643b0000200041346a20122d00003a0000200041326a20022f01603b0000200041396a200b370000200041356a20083600002000412e6a200a360000200041276a2004360000200041206a2003360000200041196a2009360000200041126a20053600002000410b6a2006360000200041046a2007360000200041003a00000c030b2003417f6a2107200241106a410472210841002106417e21050340024020072006470d00200041033a00000c040b200420066a220941016a2d0000210a2001200320056a3602042001200941026a360200200820066a200a3a00002002200641016a22093602102005417f6a210520092106200941c000470d000b2002200241106a41356a2201290000370380012002200241cc006a29000037008701200220022f01143b017c200220022d00163a007e2002411e6a2801002106200241256a28000021052002412c6a2802002109200241336a28000021032002413a6a2801002104200241c1006a280000210a200228001721072002280083012108200229008701210b200241f8006a41026a220c2002411d6a2d00003a00002002200241106a410b6a2f00003b0178200241f4006a41026a220d200241246a2d00003a00002002200241106a41126a2f01003b0174200241f0006a41026a220e2002412b6a2d00003a00002002200241106a41196a2f00003b0170200241ec006a41026a220f200241326a2d00003a00002002200241106a41206a2f01003b016c200241e8006a41026a2210200241396a2d00003a00002002200241106a41276a2f00003b0168200241e4006a41026a2211200241c0006a2d00003a00002002200241106a412e6a2f01003b0164200241e0006a41026a2212200241c7006a2d00003a0000200220012f00003b0160200041036a20022d007e3a0000200020022f017c3b0001200041086a20022f01783b00002000410a6a200c2d00003a00002000410f6a20022f01743b0000200041116a200d2d00003a0000200041166a20022f01703b0000200041186a200e2d00003a00002000411f6a200f2d00003a00002000411d6a20022f016c3b0000200041266a20102d00003a0000200041246a20022f01683b00002000412d6a20112d00003a00002000412b6a20022f01643b0000200041346a20122d00003a0000200041326a20022f01603b0000200041396a200b370000200041356a20083600002000412e6a200a360000200041276a2004360000200041206a2003360000200041196a2009360000200041126a20053600002000410b6a2006360000200041046a2007360000200041013a00000c020b2002410036021041c00021050340024020060d00200041033a00000c030b200128020022092d000021032001200941016a36020020012006417f6a3602042002280210220641c1004f0d03200241106a20066a41046a20033a00002002200641016a36021002402005450d002005417f6a2105200128020421060c010b0b200641c000490d03200241fc006a41026a22012002411d6a2d00003a0000200220022f01143b018001200220022d00163a0082012002200241106a410b6a2f00003b017c2002411e6a2801002106200241256a28000021052002412c6a2802002109200241336a28000021032002413a6a2801002104200241c1006a280000210a200241c8006a2802002107200241cf006a28000021082002280017210c200241f8006a41026a220d200241246a2d00003a0000200241f4006a41026a220e2002412b6a2d00003a0000200241f0006a41026a220f200241326a2d00003a0000200241ec006a41026a2210200241396a2d00003a0000200241e8006a41026a2211200241c0006a2d00003a00002002200241106a41126a2f01003b01782002200241106a41196a2f00003b01742002200241106a41206a2f01003b01702002200241106a41276a2f00003b016c2002200241106a412e6a2f01003b0168200241e4006a41026a2212200241c7006a2d00003a0000200241e0006a41026a2213200241ce006a2d00003a00002002200241106a41356a2f00003b01642002200241106a413c6a2f01003b01602002200241d3006a2f00003b010e200041036a20022d0082013a0000200020022f0180013b0001200041086a20022f017c3b00002000410a6a20012d00003a00002000410f6a20022f01783b0000200041116a200d2d00003a0000200041166a20022f01743b0000200041186a200e2d00003a00002000411f6a200f2d00003a00002000411d6a20022f01703b0000200041266a20102d00003a0000200041246a20022f016c3b00002000412d6a20112d00003a00002000412b6a20022f01683b0000200041346a20122d00003a0000200041326a20022f01643b00002000413b6a20132d00003a0000200041396a20022f01603b0000200041c0006a20022f010e3b00002000413c6a2008360000200041356a20073600002000412e6a200a360000200041276a2004360000200041206a2003360000200041196a2009360000200041126a20053600002000410b6a2006360000200041046a200c360000200041023a00000c010b200041033a00000b20024190016a24000f0b200220033a005f4188faca00412b200241df006a418cd0c60041e0d6ca00103d000b419fd2ca00411b41bcd2ca001035000b05001034000b3400200041f7fec30036020420004100360200200041146a4103360200200041106a41e0fdc100360200200041086a42083702000b881e07017f037e057f017e017f027e077f230041c02a6b220224004202210302400240024002400240024002400240200129036822044202520d00200241106a20014198016a41c00710c30a1a0c010b2002419e086a200141246a41c20010c30a1a200241e0086a41086a20014188016a290300370300200241f0086a20014190016a290300370300200220014180016a2903003703e008200141f8006a29030021052001290370210320012802082106200128020421074101210802400240024020012d00000e03000201020b200241aa126a200141036a2d00003a000020024198096a41086a200141146a290000370300200241a5096a200141196a290000370000200220012f00013b01a8122002200129000c37039809410021080c010b2006450d00200710390b200241b8216a41026a2209200241a8126a41026a2d00003a0000200241f0196a41086a20024198096a41086a290300370300200241f0196a410d6a220a20024198096a410d6a290000370000200220022f01a8123b01b82120022002290398093703f01920080d032002418b096a200241f0196a41086a29030037000020024190096a200a290000370000200220022f01b8213b01f808200220063600ff08200220073600fb08200220022903f01937008309200220092d00003a00fa08200241b8216a20014198016a41c00710c30a1a200241f8286a41106a200241e0086a41106a290300370300200241f8286a41086a200241e0086a41086a290300370300200220022903e0083703f82841002109200241f0296a410010ef02200241f0196a20022802f029220620022802f82910ab020240024020022d00f0194101460d00200241a52a6a4200370000200241902a6a41106a4200370300200241902a6a41086a4200370300200242003703902a0c010b200241902a6a41086a200241fc196a290200370300200241902a6a41106a200241841a6a290200370300200241a52a6a200241891a6a290000370000200220022902f4193703902a20022f00f11920022d00f3194110747221090b024020022802f429450d00200610390b200241d0296a41086a200241902a6a41086a290300370300200241d0296a41106a200241902a6a41106a290300370300200241d0296a41156a200241902a6a41156a290000370000200220022903902a3703d0294200210b200241881a6a22064200370300200241f0196a41106a22074200370300200241f0196a41086a220a4200370300200242003703f019200241b02a6a41b9fec300410610f201200a200241b02a6a41086a220c290000370300200220022900b02a3703f019200241b02a6a41b0eec900410610f2012006200c290000370300200720022900b02a370300200241086a200241f0196a412010f5010240024020044201520d0020034200510d0442ffffffff0f210d4200200228020c410020022802081bad220b20057d220e200e200b561b220b20057c200b2003827d220b42feffffff0f560d010b200b210d0b200241f0196a200da7220a10ef0220022802f019220720022802f81910a8022106024020022802f419450d00200710390b024002402006450d00200241b02a6a200a10ef02200241f0196a20022802b02a220a20022802b82a10ab020240024020022d00f0194101460d00200241a52a6a4200370000200241a02a6a4200370300200241982a6a4200370300200242003703902a410021070c010b200241982a6a200241fc196a290200370300200241902a6a41106a200241841a6a290200370300200241a52a6a200241891a6a290000370000200220022902f4193703902a20022f00f11920022d00f3194110747221070b024020022802b42a450d00200a10390b200241f0296a41156a220a200241902a6a41156a220c290000370000200241f0296a41106a220f200241902a6a41106a2210290300370300200241f0296a41086a2211200241902a6a41086a2212290300370300200241f0196a41086a200241d0296a41086a290300370300200241f0196a41106a200241d0296a41106a290300370300200241f0196a41156a200241d0296a41156a290000370000200220022903902a3703f029200220022903d0293703f019200c200a2900003700002010200f29030037030020122011290300370300200220022903f0293703902a0c010b200241f0296a41156a200241902a6a41156a290000370000200241f0296a41106a200241902a6a41106a29000037030041800a21070b200241b0296a41156a220a200241f0196a41156a290000370000200241b0296a41106a220c200241f0196a41106a290300370300200241b0296a41086a220f200241f0196a41086a29030037030020024190296a41086a2210200241902a6a41086a221129030037030020024190296a41106a2212200241902a6a41106a221329030037030020024190296a41156a2214200241902a6a41156a2215290000370000200220022903f0193703b029200220022903902a37039029024002402006450d002015200a2900003700002013200c2903003703002011200f290300370300200241f0296a41086a2010290300370300200241f0296a41106a2012290300370300200241f0296a41156a2014290000370000200220022903b0293703902a20022002290390293703f029200241d0296a41106a200241f8286a41106a290300370300200241d0296a41086a200241f8286a41086a290300370300200220022903f8283703d029200241f4196a200241b8216a41c00710c30a1a0c010b200241b8216a10d4030b200241a8126a200241f0196a41c40710c30a1a20024190126a41106a220a200241d0296a41106a29030037030020024190126a41086a220c200241d0296a41086a290300370300200241f0116a41086a220f200241902a6a41086a290300370300200241f0116a41106a2210200241902a6a41106a290300370300200241f0116a41156a2211200241902a6a41156a290000370000200241d0116a41086a2212200241f0296a41086a290300370300200241d0116a41106a2213200241f0296a41106a290300370300200241d0116a41156a2214200241f0296a41156a290000370000200220022903d02937039012200220022903902a3703f011200220022903f0293703d0112006450d0120024198096a200241ac126a41c00710c30a1a20024192116a20094110763a000020024190116a20093b0100200241e8106a2005370300200241e0106a2003370300200241f0106a200229039012370300200241f8106a200c29030037030020024180116a200a29030037030020024193116a20022903f0113700002002419b116a200f290300370000200241a3116a2010290300370000200241a8116a2011290000370000200220043703d810200242aac60037038811200241b2116a20074110763a0000200241b0116a20073b0100200241b3116a20022903d011370000200241bb116a2012290300370000200241c3116a2013290300370000200241c8116a2014290000370000410810382206450d04200242083702ac12200220063602a81220024198096a200241a8126a10de0320024198096a41c0076a200241a8126a108f042002280288112107024020022802ac1220022802b01222066b41034b0d00200241a8126a2006410410810120022802b01221060b20022802a81220066a20073600002002200641046a22063602b012200228028c112107024020022802ac1220066b41034b0d00200241a8126a2006410410810120022802b01221060b20022802a81220066a20073600002002200641046a3602b012412010382206450d04200641086a220a20024198116a290300370000200641106a220c200241a0116a290300370000200641186a220f200241a8116a29030037000020022802ac12210920022802b0122107200620024190116a2903003700000240200920076b411f4b0d00200241a8126a2007412010810120022802b01221070b20022802a81220076a22092006290000370000200941086a200a290000370000200941106a200c290000370000200941186a200f2900003700002002200741206a3602b01220061039412010382206450d04200641086a220a200241b8116a290300370000200641106a220c200241c0116a290300370000200641186a220f200241c8116a29030037000020022802ac12210920022802b01221072006200241b0116a2903003700000240200920076b411f4b0d00200241a8126a2007412010810120022802b01221070b20022802a81220076a22092006290000370000200941086a200a290000370000200941106a200c290000370000200941186a200f2900003700002002200741206a3602b0122006103920022802a81221060240024020022802b0122207418102490d00200241f0196a20062007109c012002419e086a200241f0196a4120200241f8086a10900421060c010b2002419e086a20062007200241f8086a10900421060b024020022802ac12450d0020022802a81210390b024020060d0020004180083b0001200041013a0000200041036a41003a000020024198096a10d4030c060b200241f8076a41086a200241f8086a41086a290300370300200241f8076a41106a200241f8086a41106a290300370300200241f8076a41186a200241f8086a41186a290300370300200241d0076a41086a200241e8106a290300370300200241d0076a41106a200241f0106a290300370300200241d0076a41186a200241f8106a290300370300200241f0076a20024180116a290300370300200220022903f8083703f8072002200241e0106a2903003703d00720022903d8102103200241106a20024198096a41c00710c30a1a0b200041086a20022903f807370300200041286a2003370300200041306a20022903d007370300200041206a200241f8076a41186a290300370300200041186a200241f8076a41106a290300370300200041106a200241f8076a41086a290300370300200041386a200241d0076a41086a290300370300200041c0006a200241d0076a41106a290300370300200041c8006a200241d0076a41186a290300370300200041d0006a200241d0076a41206a290300370300200041d8006a200241106a41c00710c30a1a200041003a00000c050b200020073b0001200041013a0000200041036a20074110763a00000c030b41e0d7ca00411941fcd7ca001035000b200041013b0001200041013a0000200041036a41003a00000c010b1030000b2008450d0020014198016a10d4030b200241c02a6a24000b920503017f027e047f230041106b220224000240024020002903004201520d00200041106a29030020002903082203420c882204420120044201561b80a741047420037aa7417f6a22054101200541014b1b2205410f2005410f491b7221060240200141046a280200200141086a220728020022056b41014b0d00200120054102108101200728020021050b200128020020056a20063b00002007200541026a22053602000c010b0240200141046a280200200141086a22072802002205470d00200120054101108101200728020021050b200128020020056a41003a00002007200541016a22053602000b02400240024002402000280218220741c000490d00200741808001490d012007418080808004490d020240200141046a22062802002005470d00200120054101108101200141086a28020021050b200128020020056a41033a0000200141086a2207200541016a2205360200200028021821080240200628020020056b41034b0d00200120054104108101200728020021050b200128020020056a20083600002007200541046a3602000c030b200741027421070240200141046a2802002005470d00200120054101108101200141086a28020021050b200128020020056a20073a0000200141086a200541016a3602000c020b200741027441017221070240200141046a28020020056b41014b0d00200120054102108101200141086a28020021050b200128020020056a20073b0000200141086a200541026a3602000c010b200741027441027221070240200141046a28020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2007360000200141086a200541046a3602000b2002200041206a36020c2002410c6a2001109203200241106a24000bf70201017f23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a10f10421000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a10f20421000c010b200420012002109c01200441206a200041016a200410f3044100210020042d00200d00200441c8006a41206a200441206a41216a2d00003a0000200441e0006a200441396a290000370300200441d8006a200441316a290000370300200441d0006a200441296a29000037030020042004290021370348200441f0006a200441c8006a4121109c01200441f0006a2003412010c60a4521000b20044190016a240020000bbd1603067f017e0b7f230041f0016b2202240002400240200128020422030d00200042033703000c010b200128020022042d0000210520012003417f6a22063602042001200441016a36020002400240024002402005417f6a0e03000102030b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020020024180016a410472210a4100210541722106034020092005460d01200420056a220b410d6a2d0000210c2001200320066a3602042001200b410e6a360200200a20056a200c3a00002002200541016a220b360280012006417f6a2106200b2105200b4120470d000b20024180016a41206a280200210c20024195016a28000021092002418e016a280100210a20024199016a220d2800002105200228008701210e200241ee016a2002419f016a2d00003a0000200220053602e801200241e4016a41026a220320022d00ea013a0000200220024180016a411d6a2f00003b01ec01200220022f0184013b01e001200220022d0086013a00e201200220053b01e40120022800eb01210f200241dc016a41026a22052002418d016a2d00003a000020022002418b016a2f00003b01dc01200241d8016a41026a220420024194016a2d00003a0000200220024192016a2f01003b01d801200241d4016a41026a220620032d00003a0000200220022f01e4013b01d401200241d0016a41026a220320022d00e2013a0000200220022f01e0013b01d001200241cc016a41026a220b20052d00003a0000200220022f01dc013b01cc01200241c8016a41026a220520042d00003a0000200220022f01d8013b01c801200241c4016a41026a220420062d00003a0000200220022f01d4013b01c401200241fc006a41026a220620032d00003a0000200220022f01d0013b017c200241f8006a41026a2203200b2d00003a0000200220022f01cc013b0178200241f4006a41026a220b20052d00003a0000200220022f01c8013b0174200241f0006a41026a220520042d00003a0000200220022f01c4013b017020024180016a200110920420022d0080014101460d00200241c8006a2201200241b9016a290000370300200241106a41306a2204200241b1016a290000370300200241386a2210200241a9016a290000370300200241106a41206a2211200241a1016a290000370300200241286a2212200d290000370300200241106a41106a220d20024191016a290000370300200241186a221320024189016a2900003703002002200229008101370310200220022f017c3b016c200220062d00003a006e200241e8006a41026a220620032d00003a0000200220022f01783b0168200241e4006a41026a2203200b2d00003a0000200220022f01743b0164200241e0006a41026a220b20052d00003a0000200220022f01703b0160200220022d006e3a005e200220022f016c3b015c200241d8006a41026a220520062d00003a0000200220022f01683b0158200241d4006a41026a220620032d00003a0000200220022f01643b01542002410c6a41026a2203200b2d00003a0000200220022f01603b010c200041106a200736020020002008370308200042003703002000200e360017200020022f015c3b0114200041166a20022d005e3a00002000200a36001e200020022f01583b001b2000411d6a20052d00003a0000200020022f01543b0022200041246a20062d00003a0000200020093600252000412b6a20032d00003a0000200020022f010c3b0029200041306a200c3600002000200f36002c200041ec006a2001290300370200200041e4006a2004290300370200200041dc006a2010290300370200200041d4006a2011290300370200200041cc006a2012290300370200200041c4006a200d2903003702002000413c6a2013290300370200200020022903103702340c040b200042033703000c030b024020064104490d002004280001210620012003417b6a22053602042001200441056a36020020054108490d0020004201370300200429000521082001200341736a36020420012004410d6a360200200041106a2006360200200020083703080c030b200042033703000c020b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a36020020024180016a410472210a4100210541722106034020092005460d01200420056a220b410d6a2d0000210c2001200320066a3602042001200b410e6a360200200a20056a200c3a00002002200541016a220b360280012006417f6a2106200b2105200b4120470d000b200241dc016a41026a22032002418d016a2d00003a0000200220024199016a22052800003602e80120022002419c016a2800003600eb01200220022f0184013b01e001200220022d0086013a00e20120022002418b016a2f00003b01dc012002418e016a280100210920024195016a280000210a20024180016a41206a280200210d200228008701210e20022800eb01210f200241d8016a41026a220420024194016a2d00003a0000200220024192016a2f01003b01d801200241d4016a41026a22062002419b016a2d00003a0000200220052f00003b01d401200241d0016a41026a220b20022d00e2013a0000200220022f01e0013b01d001200241cc016a41026a220c20032d00003a0000200220022f01dc013b01cc01200241c8016a41026a220320042d00003a0000200220022f01d8013b01c801200241c4016a41026a220420062d00003a0000200220022f01d4013b01c401200241fc006a41026a2206200b2d00003a0000200220022f01d0013b017c200241f8006a41026a220b200c2d00003a0000200220022f01cc013b0178200241f4006a41026a220c20032d00003a0000200220022f01c8013b0174200241f0006a41026a220320042d00003a0000200220022f01c4013b017020024180016a200110920420022d0080014101460d00200241c8006a2201200241b9016a290000370300200241106a41306a2204200241b1016a290000370300200241386a2210200241a9016a290000370300200241106a41206a2211200241a1016a290000370300200241286a22122005290000370300200241106a41106a220520024191016a290000370300200241186a221320024189016a2900003703002002200229008101370310200220022f017c3b016c200220062d00003a006e200241e8006a41026a2206200b2d00003a0000200220022f01783b0168200241e4006a41026a220b200c2d00003a0000200220022f01743b0164200241e0006a41026a220c20032d00003a0000200220022f01703b0160200220022d006e3a00e601200220022f016c3b01e401200241dc006a41026a220320062d00003a0000200220022f01683b015c200241d8006a41026a2206200b2d00003a0000200220022f01643b0158200241d4006a41026a220b200c2d00003a0000200220022f01603b0154200041106a200736020020002008370308200042023703002000200e360017200020022f01e4013b0114200041166a20022d00e6013a00002000200936001e200020022f015c3b001b2000411d6a20032d00003a0000200020022f01583b0022200041246a20062d00003a00002000200a3600252000412b6a200b2d00003a0000200020022f01543b0029200041306a200d3600002000200f36002c200041ec006a2001290300370200200041e4006a2004290300370200200041dc006a2010290300370200200041d4006a2011290300370200200041cc006a2012290300370200200041c4006a20052903003702002000413c6a2013290300370200200020022903103702340c020b200042033703000c010b200042033703000b200241f0016a24000bcd11030a7f017e0b7f230041a0026b22022400200241d8016a41047221032001280204210441002105417f210602400240034020042005460d012001200420066a36020420012001280200220741016a360200200320056a20072d00003a00002002200541016a22073602d8012006417f6a210620072105200741c000470d000b20022002418d026a22012900003703b801200220024194026a2900003700bf01200220022f01dc013b019001200220022d00de013a00920120024182026a280100210820024189026a2800002109200241fb016a2800002105200241f4016a220a2802002106200241ed016a2800002107200241e6016a280100210420022800bb01210b20022900bf01210c20022800df012103200241e8006a41026a220d200241e5016a220e2d00003a00002002200241e3016a2f00003b0168200241386a41026a220f200241ec016a22102d00003a00002002200241ea016a2f01003b0138200241ac016a41026a2211200241f3016a2d00003a00002002200241f1016a2f00003b01ac0120024188016a41026a2212200241fa016a2d00003a00002002200241f8016a22132f01003b018801200241e0006a41026a221420024181026a2d00003a00002002200241ff016a2f00003b0160200241306a41026a221520024188026a2d00003a0000200220024186026a2f01003b0130200241286a41026a22162002418f026a2d00003a0000200220012f00003b0128200241246a41026a220120022d0092013a0000200220022f0190013b0124200241206a41026a2217200d2d00003a0000200220022f01683b01202002411c6a41026a220d200f2d00003a0000200220022f01383b011c200241186a41026a220f20112d00003a0000200220022f01ac013b0118200241146a41026a221120122d00003a0000200220022f0188013b0114200241106a41026a221220142d00003a0000200220022f01603b01102002410c6a41026a221420152d00003a0000200220022f01303b010c200241086a41026a221520162d00003a0000200220022f01283b0108200241dc006a41026a20122d00003a0000200220022f01103b015c200241d8006a41026a20142d00003a0000200220022f010c3b0158200241d4006a41026a20152d00003a0000200220022f01083b0154200241b8016a41026a20012d00003a0000200220033600bb01200220022f01243b01b801200241c1016a20172d00003a0000200220043601c201200220022f01203b00bf01200241c8016a200d2d00003a0000200220073600c901200220022f011c3b01c601200241cf016a200f2d00003a0000200220022f01183b00cd01200220063601d001200241d6016a20112d00003a0000200220022f01143b01d401200220053a00d701200241d8016a200241b8016a107c41022106024020022d00d80122014101470d00200241b6016a20022d00db013a0000200241b8016a41086a200e290000370300200241c7016a2010290000370000200241b0016a20132d00003a0000200220022f00d9013b01b401200220022900dd013703b8012002200a2802003602ac0120022d00dc0121060b200241a8016a41026a200241b4016a41026a2d00003a000020024190016a41086a200241b8016a41086a29030037030020024190016a410f6a2207200241b8016a410f6a29000037000020024188016a41046a2204200241ac016a41046a2d00003a0000200220022f01b4013b01a801200220022903b80137039001200220022802ac0136028801024020014101470d0020024184016a41026a200241a8016a41026a22012d00003a0000200241e8006a41086a20024190016a41086a2203290300370300200241e8006a410f6a2007290000370000200241e0006a41046a20042d00003a0000200220022f01a8013b018401200220022903900137036820022002280288013602602002200541087622053b01b801200220054110763a00ba01200241bd016a200241dc006a41026a2d00003a0000200220083601be01200220022f015c3b00bb01200241c4016a200241d8006a41026a2d00003a0000200220093600c501200220022f01583b01c201200241cb016a200241d4006a41026a2d00003a00002002200c3702d0012002200b3602cc01200220022f01543b00c901200241d8016a200241b8016a107c41022105024020022d00d80122074101470d00200241b6016a20022d00db013a0000200241b8016a41086a200241e5016a290000370300200241c7016a200241ec016a290000370000200241b0016a200241f8016a2d00003a0000200220022f00d9013b01b401200220022900dd013703b8012002200241f4016a2802003602ac0120022d00dc0121050b2001200241b4016a41026a2d00003a00002003200241b8016a41086a29030037030020024190016a410f6a2201200241b8016a410f6a29000037000020024188016a41046a2204200241ac016a41046a2d00003a0000200220022f01b4013b01a801200220022903b80137039001200220022802ac013602880120074101470d00200041216a20022f01a8013b0000200041256a200229039001370000200041236a200241a8016a41026a2d00003a00002000412d6a20024190016a41086a290300370000200041346a2001290000370000200241286a41046a220120042d00003a00002002200228028801360228200220022f0184013b0051200220024184016a41026a2d00003a0053200241386a410f6a2207200241e8006a410f6a290000370000200241386a41086a2204200241e8006a41086a29030037030020022002290368370338200241306a41046a2203200241e0006a41046a2d00003a000020022002280260360230200041036a20022d00533a0000200020022f00513b0001200041056a20022903383700002000410d6a2004290300370000200041146a2007290000370000200041046a20063a0000200041246a20053a00002000411c6a2002280230360000200041206a20032d00003a0000200041003a00002000413c6a2002280228360000200041c0006a20012d00003a00000c020b200041013a00000c010b200041013a00000b200241a0026a24000bf80102037f027e0240200128020422020d00200041033a00100f0b20012002417f6a220336020420012001280200220441016a360200024020042d00004101470d00024002400240024020034108490d002001200241776a22033602042001200441096a36020020034108490d002004290001210520012002416f6a22033602042001200441116a3602002003450d032004290009210620012002416e6a3602042001200441126a36020041002101024020042d00110e03030200040b410221010c020b200041033a00100f0b410121010b200020013a001020002006370308200020053703000f0b200041033a00100f0b200041033a00100bf906020a7f017e230041e0016b22022400200241f0006a41047221032001280204210441002105417f21060240024002400240034020042005460d01200128020022072d000021082001200420066a3602042001200741016a360200200320056a20083a00002002200541016a22083602702006417f6a21062008210520084120470d000b200241086a41026a200241fd006a2d00003a0000200241046a41026a20024184016a2d00003a0000200220022f01743b010c200220022d00763a000e2002200241fb006a2f00003b0108200220024182016a2f01003b010420024190016a28020021062002418c016a280200210320024185016a2800002109200241fe006a280100210a2002280077210b200241026a2002418b016a2d00003a0000200220024189016a2f00003b0100200420086b22054108490d012007290001210c2001200741096a3602002001200541786a360204200241f0006a200110b00320022802742208450d02200241fc006a28020021052002280278210420022802702107200241106a20024180016a41e00010c30a1a200241f0006a200110b00302402002280274450d00200041f8006a200241f0006a41f00010c30a1a200041ea016a20022d000e3a0000200041e8016a20022f010c3b0100200041eb016a200b360000200020022f01083b00ef01200041f1016a200241086a41026a2d00003a00002000200a3600f201200020022f01043b00f601200041f8016a200241046a41026a2d00003a0000200020093600f901200020022f01003b00fd01200041ff016a200241026a2d00003a000020004184026a200636000020004180026a2003360000200020073602082000200836020c20002004360210200041146a2005360200200041186a200241106a41e00010c30a1a2000200c3703000c040b2000410036020c02402005450d00200541246c21012008210503400240024002400240024020052d00000e050400010204030b2005410c6a280200450d03200541086a28020010390c030b2005410c6a280200450d02200541086a28020010390c020b2005410c6a280200450d01200541086a28020010390c010b200541086a280200450d00200541046a28020010390b200541246a21052001415c6a22010d000b0b2004450d03200441246c450d03200810390c030b2000410036020c0c020b2000410036020c0c010b2000410036020c0b200241e0016a24000b8a0703097f017e017f230041e0016b22022400200241f0006a410472210320012802002204280204210541002106417f210702400340024020052006470d002000410036020c0c020b200428020022082d000021092004200520076a3602042004200841016a360200200320066a20093a00002002200641016a22083602702007417f6a21072008210620084120470d000b200241086a41026a200241fd006a2d00003a0000200241046a41026a20024184016a2d00003a0000200220022f01743b010c200220022d00763a000e2002200241fb006a2f00003b0108200220024182016a2f01003b010420024190016a28020021072002418c016a280200210820024185016a2800002105200241fe006a280100210920022800772103200241026a2002418b016a2d00003a0000200220024189016a2f00003b0100024002402001280200220628020422044108490d002006280200220a290000210b2006200441786a3602042006200a41086a360200200241f0006a200110b9032002280274220a450d01200241fc006a28020021062002280278210c20022802702104200241106a20024180016a41e00010c30a1a200241f0006a200110b90302402002280274450d00200041f8006a200241f0006a41f00010c30a1a200041ea016a20022d000e3a0000200041e8016a20022f010c3b0100200041eb016a2003360000200020022f01083b00ef01200041f1016a200241086a41026a2d00003a0000200020093600f201200020022f01043b00f601200041f8016a200241046a41026a2d00003a0000200020053600f901200020022f01003b00fd01200041ff016a200241026a2d00003a000020004184026a200736000020004180026a2008360000200020043602082000200a36020c2000200c360210200041146a2006360200200041186a200241106a41e00010c30a1a2000200b3703000c030b2000410036020c02402006450d00200641246c2104200a210603400240024002400240024020062d00000e050400010204030b2006410c6a280200450d03200641086a28020010390c030b2006410c6a280200450d02200641086a28020010390c020b2006410c6a280200450d01200641086a28020010390c010b200641086a280200450d00200641046a28020010390b200641246a21062004415c6a22040d000b0b200c450d02200c41246c450d02200a10390c020b2000410036020c0c010b2000410036020c0b200241e0016a24000b865d0a037f017e027f017e177f017e067f017e177f017e23004180046b2202240002400240200128020422034108490d002001280200220429000021052001200341786a22063602042001200441086a36020002402006450d0020042d000821062001200341776a22073602042001200441096a36020002400240024020060e020001030b20074108490d022004290009210820012003416f6a22093602042001200441116a3602002003416e6a210720024190036a410472210a41002106034020092006460d03200420066a220b41116a2d0000210c200120073602042001200b41126a360200200a20066a200c3a00002002200641016a220b360290032007417f6a2107200b2106200b4120470d000b200241f8036a41026a22062002419d036a2d00003a00002002200241a9036a220c2800003602d8032002200241ac036a2800003600db03200220022f0194033b01fc03200220022d0096033a00fe0320022002419b036a2f00003b01f8032002419e036a280100210d200241a5036a280000210e20024190036a41206a280200210f200228009703211020022800db032111200241f4036a41026a2209200241a4036a2d00003a0000200220024190036a41126a2f01003b01f403200241f0036a41026a220a200241ab036a2d00003a00002002200c2f00003b01f003200241ac026a41026a20022d00fe033a0000200220022f01fc033b01ac02200241a8026a41026a20062d00003a0000200220022f01f8033b01a802200241a4026a41026a20092d00003a0000200220022f01f4033b01a402200241a0026a41026a200a2d00003a0000200220022f01f0033b01a0024100210c20024100360290032004200b6a211220024190036a41047221132003210a4100210603402003200c6a416f6a200b460d03201220066a220941116a2d00002114200120073602042001200941126a360200201320066a20143a00002002200641016a2209360290032007417f6a2107200a417f6a210a200c417f6a210c2009210620094120470d000b200241b0036a280200211320024190036a41156a28000021152002419e036a2801002116200241a9036a28000021062002280097032117200241de036a200241af036a2d00003a0000200220063602d803200241fc036a41026a220720022d00da033a00002002200241ad036a2f00003b01dc03200220022f0194033b01f803200220022d0096033a00fa03200220063b01fc0320022800db032118200241f4036a41026a22062002419d036a2d00003a000020022002419b036a2f00003b01f403200241f0036a41026a220a200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a221420072d00003a0000200220022f01fc033b01ec032002418c036a41026a220720022d00fa033a0000200220022f01f8033b018c0320024188036a41026a221920062d00003a0000200220022f01f4033b01880320024184036a41026a221a200a2d00003a0000200220022f01f0033b01840320024180036a41026a220a20142d00003a0000200220022f01ec033b0180032003200b6b200c6a2214416f6a4104490d02200b200c6b2106200241e8026a41026a20192d00003a0000200241e4026a41026a201a2d00003a0000200241e0026a41026a200a2d00003a0000201220096a220941116a280000211920012014416b6a3602042001200941156a360200200220022f018c033b01ec02200220022f0188033b01e802200220022f0184033b01e402200220022f0180033b01e002200220072d00003a00ee02410021072002410036029003200c200b6b210b2003416b6a210a200441156a211420024190036a41047221120340200a2006460d03201420066a220c2d0000210920012003200b6a416a6a3602042001200c41016a360200201220076a20093a00002002200741016a220c36029003200b417f6a210b200641016a2106200c2107200c41c000470d000b2002200241c5036a22072900003703d8032002200241cc036a2900003700df03200220022f0194033b01fc03200220022d0096033a00fe032002419e036a280100211420024190036a41156a2800002112200241ac036a280200211a200241b3036a280000211b200241ba036a280100211c200241c1036a280000211d200228009703211e20022800db03211f20022900df032120200241f8036a41026a220b2002419d036a2d00003a000020022002419b036a2f00003b01f803200241f4036a41026a220c200241a4036a2d00003a00002002200241a2036a2f01003b01f403200241f0036a41026a2209200241ab036a2d00003a00002002200241a9036a2f00003b01f003200241ec036a41026a220a200241b2036a2d00003a0000200220024190036a41206a2f01003b01ec032002418c036a41026a2221200241b9036a2d00003a00002002200241b7036a2f00003b018c0320024188036a41026a2222200241c0036a2d00003a00002002200241be036a2f01003b01880320024184036a41026a2223200241c7036a2d00003a0000200220072f00003b018403200220022d00fe033a00ce02200220022f01fc033b01cc02200241c8026a41026a200b2d00003a0000200220022f01f8033b01c802200241c4026a41026a200c2d00003a0000200220022f01f4033b01c402200241c0026a41026a20092d00003a0000200220022f01f0033b01c002200241bc026a41026a200a2d00003a0000200220022f01ec033b01bc02200241b8026a41026a20212d00003a0000200220022f018c033b01b802200241b4026a41026a20222d00003a0000200220022f0188033b01b402200241b0026a41026a20232d00003a0000200220022f0184033b01b002200220022d00ee023a00de02200220022f01ec023b01dc02200241d8026a41026a200241e8026a41026a2d00003a0000200220022f01e8023b01d802200241d4026a41026a200241e4026a41026a2d00003a0000200220022f01e4023b01d402200241d0026a41026a200241e0026a41026a2d00003a0000200220022f01e0023b01d002410021072002410036029003200420066a41156a2104200320066b41666a210620024190036a410472210303402006417b460d0320042d0000210b2001200641046a3602042001200441016a2204360200200320076a200b3a00002002200741016a220b360290032006417f6a2106200b2107200b4120470d000b200241b0036a2802002121200241a5036a28000021222002419e036a2801002123200241a9036a28000021072002280097032124200241de036a200241af036a2d00003a0000200220073602d803200241fc036a41026a220420022d00da033a00002002200241ad036a2f00003b01dc03200220022f0194033b01f803200220022d0096033a00fa03200220073b01fc0320022800db032125200241f4036a41026a22072002419d036a2d00003a000020022002419b036a2f00003b01f403200241f0036a41026a220b200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a220320042d00003a0000200220022f01fc033b01ec032002418c036a41026a220420022d00fa033a0000200220022f01f8033b018c0320024188036a41026a220c20072d00003a0000200220022f01f4033b01880320024184036a41026a2207200b2d00003a0000200220022f01f0033b01840320024180036a41026a220b20032d00003a0000200220022f01ec033b018003200641056a4104490d022001280200220328000021262001200641016a3602042001200341046a360200200241e8026a41026a200c2d00003a0000200241e4026a41026a20072d00003a0000200241e0026a41026a200b2d00003a0000200220022f018c033b01ec02200220022f0188033b01e802200220022f0184033b01e402200220022f0180033b01e002200220042d00003a00ee0220024190036a410472210c4100210703402006417f460d03200320076a220441046a2d0000210b200120063602042001200441056a360200200c20076a200b3a00002002200741016a2204360290032006417f6a210620042107200441c000470d000b2002200241c5036a220a2900003703d8032002200241cc036a2900003700df03200220022f0194033b01fc03200220022d0096033a00fe032002419e036a2801002101200241a5036a2800002106200241ac036a2802002107200241b3036a2800002104200241ba036a280100210b200241c1036a2800002103200228009703210c20022800db03210920022900df032127200241f8036a41026a22282002419d036a2d00003a000020022002419b036a2f00003b01f803200241f4036a41026a2229200241a4036a2d00003a00002002200241a2036a2f01003b01f403200241f0036a41026a222a200241ab036a2d00003a00002002200241a9036a2f00003b01f003200241ec036a41026a222b200241b2036a2d00003a00002002200241b0036a2f01003b01ec032002418c036a41026a222c200241b9036a2d00003a00002002200241b7036a2f00003b018c0320024188036a41026a222d200241c0036a2d00003a00002002200241be036a2f01003b01880320024184036a41026a222e200241c7036a2d00003a00002002200a2f00003b018403200220022d00fe033a00ba01200220022f01fc033b01b801200241b4016a41026a220a20282d00003a0000200220022f01f8033b01b401200241b0016a41026a222820292d00003a0000200220022f01f4033b01b001200241ac016a41026a2229202a2d00003a0000200220022f01f0033b01ac01200241a8016a41026a222a202b2d00003a0000200220022f01ec033b01a801200241a4016a41026a222b202c2d00003a0000200220022f018c033b01a401200241a0016a41026a222c202d2d00003a0000200220022f0188033b01a0012002419c016a41026a222d202e2d00003a0000200220022f0184033b019c01200220022d00ee023a00ca01200220022f01ec023b01c801200241c4016a41026a222e200241e8026a41026a2d00003a0000200220022f01e8023b01c401200241c0016a41026a222f200241e4026a41026a2d00003a0000200220022f01e4023b01c001200241bc016a41026a2230200241e0026a41026a2d00003a0000200220022f01e0023b01bc012002200241ac026a41026a2d00003a009a01200220022f01ac023b01980120024194016a41026a2231200241a8026a41026a2d00003a0000200220022f01a8023b01940120024190016a41026a2232200241a4026a41026a2d00003a0000200220022f01a4023b0190012002418c016a41026a2233200241a0026a41026a2d00003a0000200220022f01a0023b018c01200220022d00de023a009e02200220022f01dc023b019c0220024198026a41026a2234200241d8026a41026a2d00003a0000200220022f01d8023b01980220024194026a41026a2235200241d4026a41026a2d00003a0000200220022f01d4023b01940220024190026a41026a2236200241d0026a41026a2d00003a0000200220022f01d0023b019002200220022d00ce023a008e02200220022f01cc023b018c0220024188026a41026a2237200241c8026a41026a2d00003a0000200220022f01c8023b01880220024184026a41026a2238200241c4026a41026a2d00003a0000200220022f01c4023b01840220024180026a41026a2239200241c0026a41026a2d00003a0000200220022f01c0023b018002200241fc016a41026a223a200241bc026a41026a2d00003a0000200220022f01bc023b01fc01200241f8016a41026a223b200241b8026a41026a2d00003a0000200220022f01b8023b01f801200241f4016a41026a223c200241b4026a41026a2d00003a0000200220022f01b4023b01f401200241f0016a41026a223d200241b0026a41026a2d00003a0000200220022f01b0023b01f001200220022d009e023a00fe02200220022f019c023b01fc02200241f8026a41026a223e20342d00003a0000200220022f0198023b01f802200241f4026a41026a223420352d00003a0000200220022f0194023b01f402200241f0026a41026a223520362d00003a0000200220022f0190023b01f002200220022d008e023a00ee01200220022f018c023b01ec01200241e8016a41026a223620372d00003a0000200220022f0188023b01e801200241e4016a41026a223720382d00003a0000200220022f0184023b01e401200241e0016a41026a223820392d00003a0000200220022f0180023b01e001200241dc016a41026a2239203a2d00003a0000200220022f01fc013b01dc01200241d8016a41026a223a203b2d00003a0000200220022f01f8013b01d801200241d4016a41026a223b203c2d00003a0000200220022f01f4013b01d401200241d0016a41026a223c203d2d00003a0000200220022f01f0013b01d001200220022d00fe023a007a200220022f01fc023b0178200241f4006a41026a203e2d00003a0000200220022f01f8023b0174200241f0006a41026a20342d00003a0000200220022f01f4023b0170200241ec006a41026a20352d00003a0000200220022f01f0023b016c200220022d00ee013a006a200220022f01ec013b0168200241e4006a41026a20362d00003a0000200220022f01e8013b0164200241e0006a41026a20372d00003a0000200220022f01e4013b0160200241dc006a41026a20382d00003a0000200220022f01e0013b015c200241d8006a41026a20392d00003a0000200220022f01dc013b0158200241d4006a41026a203a2d00003a0000200220022f01d8013b0154200241d0006a41026a203b2d00003a0000200220022f01d4013b0150200241cc006a41026a203c2d00003a0000200220022f01d0013b014c200220022d00ca013a004a200220022f01c8013b0148200241c4006a41026a202e2d00003a0000200220022f01c4013b0144200241c0006a41026a202f2d00003a0000200220022f01c0013b01402002413c6a41026a20302d00003a0000200220022f01bc013b013c200220022d00ba013a003a200220022f01b8013b0138200241346a41026a200a2d00003a0000200220022f01b4013b0134200241306a41026a20282d00003a0000200220022f01b0013b01302002412c6a41026a20292d00003a0000200220022f01ac013b012c200241286a41026a202a2d00003a0000200220022f01a8013b0128200241246a41026a202b2d00003a0000200220022f01a4013b0124200241206a41026a202c2d00003a0000200220022f01a0013b01202002411c6a41026a202d2d00003a0000200220022f019c013b011c200220022d009a013a001a200220022f0198013b0118200241146a41026a20312d00003a0000200220022f0194013b0114200241106a41026a20322d00003a0000200220022f0190013b01102002410c6a41026a20332d00003a0000200220022f018c013b010c4200213f0c010b20074108490d012004290009210820012003416f6a22093602042001200441116a36020020024190036a410472210a410021062003210b034020092006460d02200420066a220741116a2d0000210c2001200b416e6a3602042001200741126a360200200a20066a200c3a00002002200641016a220736029003200b417f6a210b2007210620074120470d000b20024190036a41206a280200210f200241a5036a280000210e2002419e036a280100210d200241a9036a28000021062002280097032110200241de036a200241af036a2d00003a0000200220063602d803200241fc036a41026a220c20022d00da033a00002002200241ad036a2f00003b01dc03200220022f0194033b01f803200220022d0096033a00fa03200220063b01fc0320022800db032111200241f4036a41026a22062002419d036a2d00003a000020022002419b036a2f00003b01f403200241f0036a41026a2209200241a4036a2d00003a0000200220024190036a41126a2f01003b01f003200241ec036a41026a220a200c2d00003a0000200220022f01fc033b01ec03200220022d00fa033a009e02200220022f01f8033b019c0220024198026a41026a20062d00003a0000200220022f01f4033b01980220024194026a41026a20092d00003a0000200220022f01f0033b01940220024190026a41026a200a2d00003a0000200220022f01ec033b019002410021062002410036029003200420076a2109200320076b2104200720036b41116a210c20024190036a410472210a0340200c20066a450d02200920066a220741116a2d0000210320012004416e6a3602042001200741126a360200200a20066a20033a00002002200641016a2207360290032004417f6a21042007210620074120470d000b200241b0036a280200211320024190036a41156a28000021152002419e036a2801002116200241a9036a28000021062002280097032117200241de036a200241af036a2d00003a0000200220063602d803200241fc036a41026a220320022d00da033a00002002200241ad036a2f00003b01dc03200220022f0194033b01f803200220022d0096033a00fa03200220063b01fc0320022800db032118200241f4036a41026a22062002419d036a2d00003a000020022002419b036a2f00003b01f403200241f0036a41026a220c200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a220a20032d00003a0000200220022f01fc033b01ec03200241ac026a41026a220320022d00fa033a0000200220022f01f8033b01ac02200241a8026a41026a221420062d00003a0000200220022f01f4033b01a802200241a4026a41026a2206200c2d00003a0000200220022f01f0033b01a402200241a0026a41026a220c200a2d00003a0000200220022f01ec033b01a002200b20076b416f6a4104490d01200241d8026a41026a20142d00003a0000200241d4026a41026a20062d00003a0000200241d0026a41026a200c2d00003a0000200920076a220641116a280000211920012004416b6a3602042001200641156a2206360200200220022f01ac023b01dc02200220022f01a8023b01d802200220022f01a4023b01d402200220022f01a0023b01d002200220032d00003a00de0241002107200241003602900320024190036a4104722103034020044115460d0220062d0000210b20012004416a6a3602042001200641016a2206360200200320076a200b3a00002002200741016a220b360290032004417f6a2104200b2107200b41c000470d000b200241c1036a280000211d200241ba036a280100211c200241b3036a280000211b200241ac036a280200211a200241a5036a28000021122002419e036a2801002114200241c5036a2900002127200228009703211e200241d8036a410b6a200241d0036a280000360000200220273703d803200220022f0194033b01f803200220022d0096033a00fa032002200241cd036a2800003602e003200241fc036a41026a220620022d00da033a0000200220273d01fc0320022900df032120200241f4036a41026a22072002419d036a2d00003a0000200220024190036a410b6a2f00003b01f403200241f0036a41026a2204200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a220b200241ab036a2d00003a00002002200241a9036a2f00003b01ec032002418c036a41026a2203200241b2036a2d00003a0000200220024190036a41206a2f01003b018c0320024188036a41026a220c200241b9036a2d00003a00002002200241b7036a2f00003b01880320024184036a41026a2209200241c0036a2d00003a00002002200241be036a2f01003b01840320024180036a41026a220a20062d00003a0000200220022f01fc033b018003200220022d00fa033a00ce02200220022f01f8033b01cc02200241c8026a41026a20072d00003a0000200220022f01f4033b01c802200241c4026a41026a20042d00003a0000200220022f01f0033b01c402200241c0026a41026a200b2d00003a0000200220022f01ec033b01c002200241bc026a41026a20032d00003a0000200220022f018c033b01bc02200241b8026a41026a200c2d00003a0000200220022f0188033b01b802200241b4026a41026a20092d00003a0000200220022f0184033b01b402200241b0026a41026a200a2d00003a0000200220022f0180033b01b002200220022d00de023a00fe02200220022f01dc023b01fc02200241f8026a41026a200241d8026a41026a2d00003a0000200220022f01d8023b01f802200241f4026a41026a200241d4026a41026a2d00003a0000200220022f01d4023b01f402200241f0026a41026a200241d0026a41026a2d00003a0000200220022f01d0023b01f0022027421888a7211f20024190036a410472210c41002106200128020422032104034020032006460d02200128020022072d0000210b20012004417f6a22043602042001200741016a360200200c20066a200b3a00002002200641016a2207360290032007210620074120470d000b200241b0036a2802002121200241a5036a28000021222002419e036a2801002123200241a9036a28000021062002280097032124200241de036a200241af036a2d00003a0000200220063602d803200241fc036a41026a220b20022d00da033a00002002200241ad036a2f00003b01dc03200220022f0194033b01f803200220022d0096033a00fa03200220063b01fc0320022800db032125200241f4036a41026a22062002419d036a2d00003a000020022002419b036a2f00003b01f403200241f0036a41026a220c200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a2209200b2d00003a0000200220022f01fc033b01ec032002418c036a41026a220b20022d00fa033a0000200220022f01f8033b018c0320024188036a41026a220a20062d00003a0000200220022f01f4033b01880320024184036a41026a2206200c2d00003a0000200220022f01f0033b01840320024180036a41026a222820092d00003a0000200220022f01ec033b018003200320076b22074104490d012001280200220c280000212620012007417c6a22093602042001200c41046a360200200241e8026a41026a200a2d00003a0000200241e4026a41026a20062d00003a0000200241e0026a41026a20282d00003a0000200220022f018c033b01ec02200220022f0188033b01e802200220022f0184033b01e402200220022f0180033b01e0022002200b2d00003a00ee0220024190036a410472210a41002106417b210b034020092006460d02200c20066a220741046a2d000021032001200420066b417b6a3602042001200741056a360200200a20066a20033a00002002200641016a220736029003200b417f6a210b20072106200741c000470d000b200241c1036a2800002103200241ba036a280100210b200241b3036a2800002104200241ac036a2802002107200241a5036a28000021062002419e036a2801002101200241c5036a290000213f200228009703210c200241d8036a410b6a200241d0036a2800003600002002203f3703d803200220022f0194033b01f803200220022d0096033a00fa032002200241cd036a2800003602e003200241fc036a41026a220920022d00da033a00002002203f3d01fc0320022900df032127200241f4036a41026a220a2002419d036a2d00003a0000200220024190036a410b6a2f00003b01f403200241f0036a41026a2228200241a4036a2d00003a00002002200241a2036a2f01003b01f003200241ec036a41026a2229200241ab036a2d00003a00002002200241a9036a2f00003b01ec032002418c036a41026a222a200241b2036a2d00003a00002002200241b0036a2f01003b018c0320024188036a41026a222b200241b9036a2d00003a00002002200241b7036a2f00003b01880320024184036a41026a222c200241c0036a2d00003a00002002200241be036a2f01003b01840320024180036a41026a222d20092d00003a0000200220022f01fc033b018003200220022d00fa033a00aa01200220022f01f8033b01a801200241a4016a41026a2209200a2d00003a0000200220022f01f4033b01a401200241a0016a41026a220a20282d00003a0000200220022f01f0033b01a0012002419c016a41026a222820292d00003a0000200220022f01ec033b019c0120024198016a41026a2229202a2d00003a0000200220022f018c033b01980120024194016a41026a222a202b2d00003a0000200220022f0188033b01940120024190016a41026a222b202c2d00003a0000200220022f0184033b0190012002418c016a41026a222c202d2d00003a0000200220022f0180033b018c01200220022d00ee023a00ba01200220022f01ec023b01b801200241b4016a41026a222d200241e8026a41026a2d00003a0000200220022f01e8023b01b401200241b0016a41026a222e200241e4026a41026a2d00003a0000200220022f01e4023b01b001200241ac016a41026a222f200241e0026a41026a2d00003a0000200220022f01e0023b01ac01200220022d009e023a008a01200220022f019c023b01880120024184016a41026a223020024198026a41026a2d00003a0000200220022f0198023b01840120024180016a41026a223120024194026a41026a2d00003a0000200220022f0194023b018001200241fc006a41026a223220024190026a41026a2d00003a0000200220022f0190023b017c200220022d00fe023a00ee01200220022f01fc023b01ec01200241e8016a41026a2233200241f8026a41026a2d00003a0000200220022f01f8023b01e801200241e4016a41026a2234200241f4026a41026a2d00003a0000200220022f01f4023b01e401200241e0016a41026a2235200241f0026a41026a2d00003a0000200220022f01f0023b01e001200220022d00ce023a008e02200220022f01cc023b018c0220024188026a41026a2236200241c8026a41026a2d00003a0000200220022f01c8023b01880220024184026a41026a2237200241c4026a41026a2d00003a0000200220022f01c4023b01840220024180026a41026a2238200241c0026a41026a2d00003a0000200220022f01c0023b018002200241fc016a41026a2239200241bc026a41026a2d00003a0000200220022f01bc023b01fc01200241f8016a41026a223a200241b8026a41026a2d00003a0000200220022f01b8023b01f801200241f4016a41026a223b200241b4026a41026a2d00003a0000200220022f01b4023b01f401200241f0016a41026a223c200241b0026a41026a2d00003a0000200220022f01b0023b01f001200220022d008e023a00de01200220022f018c023b01dc01200241d8016a41026a223d20362d00003a0000200220022f0188023b01d801200241d4016a41026a223620372d00003a0000200220022f0184023b01d401200241d0016a41026a223720382d00003a0000200220022f0180023b01d001200241c8016a41026a223820392d00003a0000200220022f01fc013b01c801200241c4016a41026a2239203a2d00003a0000200220022f01f8013b01c401200241c0016a41026a223a203b2d00003a0000200220022f01f4013b01c001200241bc016a41026a223b203c2d00003a0000200220022f01f0013b01bc01200220022d00ee013a007a200220022f01ec013b0178200241f4006a41026a20332d00003a0000200220022f01e8013b0174200241f0006a41026a20342d00003a0000200220022f01e4013b0170200241ec006a41026a20352d00003a0000200220022f01e0013b016c200220022d00de013a006a200220022f01dc013b0168200241e4006a41026a203d2d00003a0000200220022f01d8013b0164200241e0006a41026a20362d00003a0000200220022f01d4013b0160200241dc006a41026a20372d00003a0000200220022f01d0013b015c200241d8006a41026a20382d00003a0000200220022f01c8013b0158200241d4006a41026a20392d00003a0000200220022f01c4013b0154200241d0006a41026a203a2d00003a0000200220022f01c0013b0150200241cc006a41026a203b2d00003a0000200220022f01bc013b014c200220022d00ba013a004a200220022f01b8013b0148200241c4006a41026a202d2d00003a0000200220022f01b4013b0144200241c0006a41026a202e2d00003a0000200220022f01b0013b01402002413c6a41026a202f2d00003a0000200220022f01ac013b013c200220022d00aa013a003a200220022f01a8013b0138200241346a41026a20092d00003a0000200220022f01a4013b0134200241306a41026a200a2d00003a0000200220022f01a0013b01302002412c6a41026a20282d00003a0000200220022f019c013b012c200241286a41026a20292d00003a0000200220022f0198013b0128200241246a41026a202a2d00003a0000200220022f0194013b0124200241206a41026a202b2d00003a0000200220022f0190013b01202002411c6a41026a202c2d00003a0000200220022f018c013b011c200220022d008a013a001a200220022f0188013b0118200241146a41026a20302d00003a0000200220022f0184013b0114200241106a41026a20312d00003a0000200220022f0180013b01102002410c6a41026a20322d00003a0000200220022f017c3b010c203f421888a721094201213f0b20002008370310200020022f01783b011c2000201736001f200020022f01743b002320002016360026200020022f01703b002a2000201536002d200020022f016c3b0031200041186a20193602002000411e6a20022d007a3a0000200041256a200241f4006a41026a2d00003a00002000412c6a200241f0006a41026a2d00003a0000200041336a200241ec006a41026a2d00003a0000200041386a2013360000200020183600342000201e36003f200020143600462000201236004d200020022f01683b013c2000413e6a20022d006a3a0000200041c5006a200241e4006a41026a2d00003a0000200020022f01643b0043200041cc006a200241e0006a41026a2d00003a0000200020022f01603b004a200020022f015c3b0051200041d3006a200241dc006a41026a2d00003a00002000201a360054200041da006a200241d8006a41026a2d00003a0000200041d8006a20022f01583b00002000201b36005b200041e1006a200241d4006a41026a2d00003a0000200020022f01543b005f2000201c360062200041e8006a200241d0006a41026a2d00003a0000200020022f01503b00662000201d360069200041ef006a200241cc006a41026a2d00003a0000200020022f014c3b006d200041fc006a202636020020002020370074200041f0006a201f36000020004182016a20022d004a3a000020004180016a20022f01483b010020004183016a202436000020004189016a200241c4006a41026a2d00003a0000200020022f01443b0087012000202336008a0120004190016a200241c0006a41026a2d00003a0000200020022f01403b008e01200020223600910120004197016a2002413c6a41026a2d00003a0000200020022f013c3b0095012000202136009c0120004198016a2025360000200041a2016a20022d003a3a0000200041a0016a20022f01383b0100200041a3016a200c360000200041a9016a200241346a41026a2d00003a0000200020022f01343b00a701200020013600aa01200041b0016a200241306a41026a2d00003a0000200020022f01303b00ae01200020063600b101200041b7016a2002412c6a41026a2d00003a0000200020022f012c3b00b501200041b8016a2007360000200041be016a200241286a41026a2d00003a0000200020022f01283b00bc01200020043600bf01200041c5016a200241246a41026a2d00003a0000200020022f01243b00c3012000200b3600c601200041cc016a200241206a41026a2d00003a0000200020022f01203b00ca01200020033600cd01200041d3016a2002411c6a41026a2d00003a0000200020022f011c3b00d101200041d8016a2027370000200020093600d401200041e2016a20022d001a3a0000200041e0016a20022f01183b0100200041e3016a2010360000200041e9016a200241146a41026a2d00003a0000200020022f01143b00e7012000200d3600ea01200041f0016a200241106a41026a2d00003a0000200020022f01103b00ee012000200e3600f101200041f7016a2002410c6a41026a2d00003a0000200020022f010c3b00f5012000200f3600fc01200041f8016a20113600002000203f370308200020053703000c020b200042023703080c010b200042023703080b20024180046a24000b864206047f017e027f017e237f017e230041d0056b22022400024002402001280200220328020422044108490d002003280200220529000021062003200441786a22073602042003200541086a36020002402007450d0020052d000821072003200441776a22083602042003200541096a36020002400240024020070e020001030b20084108490d022005290009210920032004416f6a3602042003200541116a360200411120046b210a200241f0046a410472210b41002107200421080340200a20076a450d03200520076a220c41116a2d0000210d20032008416e6a3602042003200c41126a360200200b20076a200d3a00002002200741016a220c3602f0042008417f6a2108200c2107200c4120470d000b200241c4056a41026a2207200241fd046a2d00003a0000200220024189056a220d2800003602f00320022002418c056a2800003600f303200220022f01f4043b01c805200220022d00f6043a00ca052002200241fb046a2f00003b01c405200241fe046a280100210e20024185056a280000210f200241f0046a41206a280200211020022800f704211120022800f3032112200241c0056a41026a220a20024184056a2d00003a00002002200241f0046a41126a2f01003b01c005200241bc056a41026a220b2002418b056a2d00003a00002002200d2f00003b01bc05200241ec036a41026a20022d00ca053a0000200220022f01c8053b01ec03200241e8036a41026a20072d00003a0000200220022f01c4053b01e803200241e4036a41026a200a2d00003a0000200220022f01c0053b01e403200241e0036a41026a200b2d00003a0000200220022f01bc053b01e00341002107200241003602f0042005200c6a210b2008416e6a2105200c20046b41116a210a200241f0046a41047221130340200a20076a450d03200b20076a220c41116a2d0000210d200320053602042003200c41126a360200201320076a200d3a00002002200741016a220c3602f0042005417f6a21052004417f6a2104200c2107200c4120470d000b20024190056a280200210a200241f0046a41156a2800002113200241fe046a280100211420024189056a280000210720022800f7042115200241ce056a2002418f056a2d00003a0000200220073602c805200241c4056a41026a220420022d00ca053a000020022002418d056a2f00003b01cc05200220022f01f4043b01c005200220022d00f6043a00c205200220073b01c40520022800cb052116200241bc056a41026a2207200241fd046a2d00003a00002002200241fb046a2f00003b01bc05200241b8056a41026a220520024184056a2d00003a0000200220024182056a2f01003b01b805200241b4056a41026a220d20042d00003a0000200220022f01c4053b01b405200241dc046a41026a220420022d00c2053a0000200220022f01c0053b01dc04200241d8046a41026a221720072d00003a0000200220022f01bc053b01d804200241d4046a41026a220720052d00003a0000200220022f01b8053b01d404200241d0046a41026a2205200d2d00003a0000200220022f01b4053b01d0042008200c6b2208416f6a4104490d02200241c8046a41026a20172d00003a0000200241c4046a41026a20072d00003a0000200241c0046a41026a20052d00003a0000200b200c6a220741116a280000210b20032008416b6a3602042003200741156a360200200220022f01dc043b01cc04200220022f01d8043b01c804200220022f01d4043b01c404200220022f01d0043b01c004200220042d00003a00ce04200241f0046a200110980420022d00f0044101460d02200241a8046a200241a9056a290000370300200241a0046a200241a1056a29000037030020024198046a20024199056a290000370300200241f0036a41206a20024191056a29000037030020024188046a20024189056a29000037030020024180046a200241f0046a41116a290000370300200241f8036a200241f9046a290000370300200220022900f1043703f003200220022f01cc043b01bc04200220022d00ce043a00be04200241b8046a41026a200241c8046a41026a2d00003a0000200241b4046a41026a200241c4046a41026a2d00003a0000200241b0046a41026a200241c0046a41026a2d00003a0000200220022f01c8043b01b804200220022f01c4043b01b404200220022f01c0043b01b004200241f0046a410472210d2003280204210841002107417f2104034020082007460d03200328020022052d0000210c2003200820046a3602042003200541016a360200200d20076a200c3a00002002200741016a22053602f0042004417f6a21042005210720054120470d000b20024190056a280200210420024185056a280000210c200241fe046a280100210d20024189056a280000210720022800f7042117200241ce056a2002418f056a2d00003a0000200220073602c805200241c4056a41026a221820022d00ca053a000020022002418d056a2f00003b01cc05200220022f01f4043b01c005200220022d00f6043a00c205200220073b01c40520022800cb052107200241bc056a41026a2219200241fd046a2d00003a00002002200241fb046a2f00003b01bc05200241b8056a41026a221a20024184056a2d00003a0000200220024182056a2f01003b01b805200241b4056a41026a221b20182d00003a0000200220022f01c4053b01b405200241dc046a41026a221820022d00c2053a0000200220022f01c0053b01dc04200241d8046a41026a221c20192d00003a0000200220022f01bc053b01d804200241d4046a41026a2219201a2d00003a0000200220022f01b8053b01d404200241d0046a41026a221a201b2d00003a0000200220022f01b4053b01d004200820056b22054104490d022003280200221b280000210820032005417c6a3602042003201b41046a360200200241c8046a41026a201c2d00003a0000200241c4046a41026a20192d00003a0000200241c0046a41026a201a2d00003a0000200220022f01dc043b01cc04200220022f01d8043b01c804200220022f01d4043b01c404200220022f01d0043b01c004200220182d00003a00ce04200241f0046a200110980420022d00f0044101460d02200241e0016a41386a2203200241a9056a290000370300200241e0016a41306a2205200241a1056a290000370300200241e0016a41286a220120024199056a290000370300200241e0016a41206a221820024191056a290000370300200241e0016a41186a221920024189056a290000370300200241e0016a41106a221a20024181056a290000370300200241e0016a41086a221b200241f9046a290000370300200220022900f1043703e001200220022f01cc043b018803200220022d00ce043a008a0320024184036a41026a221c200241c8046a41026a2d00003a000020024180036a41026a221d200241c4046a41026a2d00003a0000200241fc026a41026a221e200241c0046a41026a2d00003a0000200220022f01c8043b018403200220022f01c4043b018003200220022f01c0043b01fc022002200241ec036a41026a2d00003a00b202200220022f01ec033b01b002200241ac026a41026a221f200241e8036a41026a2d00003a0000200220022f01e8033b01ac02200241a8026a41026a2220200241e4036a41026a2d00003a0000200220022f01e4033b01a802200241a4026a41026a2221200241e0036a41026a2d00003a0000200220022f01e0033b01a402200220022d00be043a00de03200220022f01bc043b01dc03200241d8036a41026a2222200241b8046a41026a2d00003a0000200220022f01b8043b01d803200241d4036a41026a2223200241b4046a41026a2d00003a0000200220022f01b4043b01d403200241d0036a41026a2224200241b0046a41026a2d00003a0000200220022f01b0043b01d00320024190036a41386a2225200241f0036a41386a29030037030020024190036a41306a2226200241f0036a41306a29030037030020024190036a41286a2227200241f0036a41286a29030037030020024190036a41206a2228200241f0036a41206a29030037030020024190036a41186a2229200241f0036a41186a29030037030020024190036a41106a222a200241f0036a41106a29030037030020024190036a41086a222b200241f0036a41086a290300370300200220022903f00337039003200220022d00de033a00ee04200220022f01dc033b01ec04200241e8046a41026a222c20222d00003a0000200220022f01d8033b01e804200241e4046a41026a222220232d00003a0000200220022f01d4033b01e404200241e0046a41026a222320242d00003a0000200220022f01d0033b01e004200241b8026a41386a22242025290300370300200241b8026a41306a22252026290300370300200241b8026a41286a22262027290300370300200241b8026a41206a22272028290300370300200241b8026a41186a22282029290300370300200241b8026a41106a2229202a290300370300200241b8026a41086a222a202b29030037030020022002290390033703b802200220022d00ee043a00ca01200220022f01ec043b01c801200241c4016a41026a202c2d00003a0000200220022f01e8043b01c401200241c0016a41026a20222d00003a0000200220022f01e4043b01c001200241bc016a41026a20232d00003a0000200220022f01e0043b01bc01200241f8006a41386a2024290300370300200241f8006a41306a2025290300370300200241f8006a41286a2026290300370300200241f8006a41206a2027290300370300200241f8006a41186a2028290300370300200241f8006a41106a2029290300370300200241f8006a41086a202a290300370300200220022903b802370378200220022d008a033a0072200220022f0188033b0170200241ec006a41026a201c2d00003a0000200220022f0184033b016c200241e8006a41026a201d2d00003a0000200220022f0180033b0168200241e4006a41026a201e2d00003a0000200220022f01fc023b0164200241206a41386a2003290300370300200241206a41306a2005290300370300200241206a41286a2001290300370300200241206a41206a2018290300370300200241206a41186a2019290300370300200241206a41106a201a290300370300200241206a41086a201b290300370300200220022903e001370320200220022d00b2023a001a200220022f01b0023b0118200241146a41026a201f2d00003a0000200220022f01ac023b0114200241106a41026a20202d00003a0000200220022f01a8023b01102002410c6a41026a20212d00003a0000200220022f01a4023b010c4200212d0c010b20084108490d012005290009210920032004416f6a3602042003200541116a360200411120046b210a200241f0046a410472210b41002107200421080340200a20076a450d02200520076a220c41116a2d0000210d20032008416e6a3602042003200c41126a360200200b20076a200d3a00002002200741016a220c3602f0042008417f6a2108200c2107200c4120470d000b200241f0046a41206a280200211020024185056a280000210f200241fe046a280100210e20024189056a280000210720022800f7042111200241f6036a2002418f056a2d00003a0000200220073602f003200241c8056a41026a220d20022d00f2033a000020022002418d056a2f00003b01f403200220022f01f4043b01c405200220022d00f6043a00c605200220073b01c80520022800f3032112200241c0056a41026a2207200241fd046a2d00003a00002002200241fb046a2f00003b01c005200241bc056a41026a220a20024184056a2d00003a00002002200241f0046a41126a2f01003b01bc05200241b8056a41026a220b200d2d00003a0000200220022f01c8053b01b805200220022d00c6053a00de03200220022f01c4053b01dc03200241d8036a41026a20072d00003a0000200220022f01c0053b01d803200241d4036a41026a200a2d00003a0000200220022f01bc053b01d403200241d0036a41026a200b2d00003a0000200220022f01b8053b01d00341002107200241003602f0042005200c6a210b2008416e6a2105200c20046b41116a210a200241f0046a41047221130340200a20076a450d02200b20076a220c41116a2d0000210d200320053602042003200c41126a360200201320076a200d3a00002002200741016a220c3602f0042005417f6a21052004417f6a2104200c2107200c4120470d000b20024190056a280200210a200241f0046a41156a2800002113200241fe046a280100211420024189056a280000210720022800f7042115200241ce056a2002418f056a2d00003a0000200220073602c805200241c4056a41026a220420022d00ca053a000020022002418d056a2f00003b01cc05200220022f01f4043b01c005200220022d00f6043a00c205200220073b01c40520022800cb052116200241bc056a41026a2207200241fd046a2d00003a00002002200241fb046a2f00003b01bc05200241b8056a41026a220520024184056a2d00003a0000200220024182056a2f01003b01b805200241b4056a41026a220d20042d00003a0000200220022f01c4053b01b405200241ec036a41026a220420022d00c2053a0000200220022f01c0053b01ec03200241e8036a41026a221720072d00003a0000200220022f01bc053b01e803200241e4036a41026a220720052d00003a0000200220022f01b8053b01e403200241e0036a41026a2205200d2d00003a0000200220022f01b4053b01e0032008200c6b2208416f6a4104490d01200241b8046a41026a20172d00003a0000200241b4046a41026a20072d00003a0000200241b0046a41026a20052d00003a0000200b200c6a220741116a280000210b20032008416b6a3602042003200741156a360200200220022f01ec033b01bc04200220022f01e8033b01b804200220022f01e4033b01b404200220022f01e0033b01b004200220042d00003a00be04200241f0046a200110980420022d00f0044101460d01200241a8046a200241a9056a290000370300200241a0046a200241a1056a29000037030020024198046a20024199056a290000370300200241f0036a41206a20024191056a29000037030020024188046a20024189056a29000037030020024180046a200241f0046a41116a290000370300200241f8036a200241f9046a290000370300200220022900f1043703f003200220022f01bc043b01ec04200220022d00be043a00ee04200241e8046a41026a200241b8046a41026a2d00003a0000200241e4046a41026a200241b4046a41026a2d00003a0000200241e0046a41026a200241b0046a41026a2d00003a0000200220022f01b8043b01e804200220022f01b4043b01e404200220022f01b0043b01e004200241f0046a410472210d2003280204210841002107417f2104034020082007460d02200328020022052d0000210c2003200820046a3602042003200541016a360200200d20076a200c3a00002002200741016a22053602f0042004417f6a21042005210720054120470d000b20024190056a280200210420024185056a280000210c200241fe046a280100210d20024189056a280000210720022800f7042117200241ce056a2002418f056a2d00003a0000200220073602c805200241c4056a41026a221820022d00ca053a000020022002418d056a2f00003b01cc05200220022f01f4043b01c005200220022d00f6043a00c205200220073b01c40520022800cb052107200241bc056a41026a2219200241fd046a2d00003a00002002200241fb046a2f00003b01bc05200241b8056a41026a221a20024184056a2d00003a0000200220024182056a2f01003b01b805200241b4056a41026a221b20182d00003a0000200220022f01c4053b01b405200241dc046a41026a221820022d00c2053a0000200220022f01c0053b01dc04200241d8046a41026a221c20192d00003a0000200220022f01bc053b01d804200241d4046a41026a2219201a2d00003a0000200220022f01b8053b01d404200241d0046a41026a221a201b2d00003a0000200220022f01b4053b01d004200820056b22054104490d012003280200221b280000210820032005417c6a3602042003201b41046a360200200241c8046a41026a201c2d00003a0000200241c4046a41026a20192d00003a0000200241c0046a41026a201a2d00003a0000200220022f01dc043b01cc04200220022f01d8043b01c804200220022f01d4043b01c404200220022f01d0043b01c004200220182d00003a00ce04200241f0046a200110980420022d00f0044101460d01200241e0016a41386a2203200241a9056a290000370300200241e0016a41306a2205200241a1056a290000370300200241e0016a41286a220120024199056a290000370300200241e0016a41206a221820024191056a290000370300200241e0016a41186a221920024189056a290000370300200241e0016a41106a221a20024181056a290000370300200241e0016a41086a221b200241f9046a290000370300200220022900f1043703e001200220022f01cc043b01b002200220022d00ce043a00b202200241ac026a41026a221c200241c8046a41026a2d00003a0000200241a8026a41026a221d200241c4046a41026a2d00003a0000200241a4026a41026a221e200241c0046a41026a2d00003a0000200220022f01c8043b01ac02200220022f01c4043b01a802200220022f01c0043b01a402200220022d00de033a00da01200220022f01dc033b01d801200241d4016a41026a221f200241d8036a41026a2d00003a0000200220022f01d8033b01d401200241d0016a41026a2220200241d4036a41026a2d00003a0000200220022f01d4033b01d001200241cc016a41026a2221200241d0036a41026a2d00003a0000200220022f01d0033b01cc01200220022d00ee043a008a03200220022f01ec043b01880320024184036a41026a2222200241e8046a41026a2d00003a0000200220022f01e8043b01840320024180036a41026a2223200241e4046a41026a2d00003a0000200220022f01e4043b018003200241fc026a41026a2224200241e0046a41026a2d00003a0000200220022f01e0043b01fc0220024190036a41386a2225200241f0036a41386a29030037030020024190036a41306a2226200241f0036a41306a29030037030020024190036a41286a2227200241f0036a41286a29030037030020024190036a41206a2228200241f0036a41206a29030037030020024190036a41186a2229200241f0036a41186a29030037030020024190036a41106a222a200241f0036a41106a29030037030020024190036a41086a222b200241f0036a41086a290300370300200220022903f00337039003200241b8026a41386a222c2025290300370300200241b8026a41306a22252026290300370300200241b8026a41286a22262027290300370300200241b8026a41206a22272028290300370300200241b8026a41186a22282029290300370300200241b8026a41106a2229202a290300370300200241b8026a41086a222a202b29030037030020022002290390033703b802200220022d008a033a00ca01200220022f0188033b01c801200241c4016a41026a20222d00003a0000200220022f0184033b01c401200241c0016a41026a20232d00003a0000200220022f0180033b01c001200241bc016a41026a20242d00003a0000200220022f01fc023b01bc01200241f8006a41386a202c290300370300200241f8006a41306a2025290300370300200241f8006a41286a2026290300370300200241f8006a41206a2027290300370300200241f8006a41186a2028290300370300200241f8006a41106a2029290300370300200241f8006a41086a202a290300370300200220022903b802370378200220022d00b2023a0072200220022f01b0023b0170200241ec006a41026a201c2d00003a0000200220022f01ac023b016c200241e8006a41026a201d2d00003a0000200220022f01a8023b0168200241e4006a41026a201e2d00003a0000200220022f01a4023b0164200241206a41386a2003290300370300200241206a41306a2005290300370300200241206a41286a2001290300370300200241206a41206a2018290300370300200241206a41186a2019290300370300200241206a41106a201a290300370300200241206a41086a201b290300370300200220022903e001370320200220022d00da013a001a200220022f01d8013b0118200241146a41026a201f2d00003a0000200220022f01d4013b0114200241106a41026a20202d00003a0000200220022f01d0013b01102002410c6a41026a20212d00003a0000200220022f01cc013b010c4201212d0b20002009370310200020022f01c8013b011c2000201536001f200020022f01c4013b002320002014360026200020022f01c0013b002a2000201336002d200020022f01bc013b0031200041186a200b3602002000411e6a20022d00ca013a0000200041256a200241c4016a41026a2d00003a00002000412c6a200241c0016a41026a2d00003a0000200041336a200241bc016a41026a2d00003a0000200041386a200a360000200020163600342000200229037837023c200041c4006a200241f8006a41086a290300370200200041cc006a200241f8006a41106a290300370200200041d4006a200241f8006a41186a290300370200200041dc006a200241f8006a41206a290300370200200041e4006a200241f8006a41286a290300370200200041ec006a200241f8006a41306a290300370200200041f4006a200241f8006a41386a290300370200200041fc006a200836020020004182016a20022d00723a000020004180016a20022f01703b010020004183016a201736000020004189016a200241ec006a41026a2d00003a0000200020022f016c3b0087012000200d36008a0120004190016a200241e8006a41026a2d00003a0000200020022f01683b008e012000200c3600910120004197016a200241e4006a41026a2d00003a0000200020022f01643b0095012000200436009c0120004198016a2007360000200041d8016a200241206a41386a290300370300200041d0016a200241206a41306a290300370300200041c8016a200241206a41286a290300370300200041c0016a200241206a41206a290300370300200041b8016a200241206a41186a290300370300200041b0016a200241206a41106a290300370300200041a8016a200241206a41086a290300370300200041a0016a2002290320370300200041e2016a20022d001a3a0000200041e0016a20022f01183b0100200041e3016a2011360000200041e9016a200241146a41026a2d00003a0000200020022f01143b00e7012000200e3600ea01200041f0016a200241106a41026a2d00003a0000200020022f01103b00ee012000200f3600f101200041f7016a2002410c6a41026a2d00003a0000200020022f010c3b00f501200020103600fc01200041f8016a20123600002000202d370308200020063703000c020b200042023703080c010b200042023703080b200241d0056a24000bc30603097f017e077f23004180016b220241286a410472210320012802002204280204210541002101417f21060340024020052001470d00200041013a00000f0b200428020022072d000021082004200520066a3602042004200741016a360200200320016a20083a00002002200141016a22073602282006417f6a210620072101200741c000470d000b2002200241286a41356a22012900003703702002200241e4006a290000370077200220022f012c3b0124200220022d002e3a0026200241366a28010021042002413d6a2800002106200241c4006a2802002107200241cb006a2800002105200241d2006a2801002108200241d9006a2800002103200228002f21092002280073210a2002290077210b200241206a41026a220c200241356a2d00003a00002002200241286a410b6a2f00003b01202002411c6a41026a220d2002413c6a2d00003a00002002200241286a41126a2f01003b011c200241186a41026a220e200241c3006a2d00003a00002002200241286a41196a2f00003b0118200241146a41026a220f200241ca006a2d00003a00002002200241286a41206a2f01003b0114200241106a41026a2210200241d1006a2d00003a00002002200241286a41276a2f00003b01102002410c6a41026a2211200241d8006a2d00003a00002002200241286a412e6a2f01003b010c200241086a41026a2212200241df006a2d00003a0000200220012f00003b0108200041036a20022d00263a0000200020022f01243b0001200041086a20022f01203b00002000410a6a200c2d00003a00002000410f6a20022f011c3b0000200041116a200d2d00003a0000200041166a20022f01183b0000200041186a200e2d00003a00002000411f6a200f2d00003a00002000411d6a20022f01143b0000200041266a20102d00003a0000200041246a20022f01103b00002000412d6a20112d00003a00002000412b6a20022f010c3b0000200041346a20122d00003a0000200041326a20022f01083b0000200041396a200b370000200041356a200a3600002000412e6a2003360000200041276a2008360000200041206a2005360000200041196a2007360000200041126a20063600002000410b6a2004360000200041046a2009360000200041003a00000ba90d02017e057f200029030021020240200141046a2203280200200141086a220428020022056b41074b0d00200120054108108101200428020021050b200128020020056a20023700002004200541086a2205360200200041106a2104200328020021030240024020002903084201510d00024020032005470d00200120054101108101200141086a28020021050b200128020020056a41003a0000200141086a2206200541016a2205360200200429030021020240200141046a220728020020056b41074b0d00200120054108108101200628020021050b200128020020056a20023700002006200541086a2203360200200041e0016a21050240200728020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22062005290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000200141086a2206200341206a3602002004410c6a200110ff02200041186a28020021030240200141046a2207280200200628020022056b41034b0d00200120054104108101200628020021050b200128020020056a20033600002006200541046a22033602002004412c6a21050240200728020020036b413f4b0d002001200341c000108101200141086a28020021030b200128020020036a22042005290000370000200441386a200541386a290000370000200441306a200541306a290000370000200441286a200541286a290000370000200441206a200541206a290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000200141086a2204200341c0006a36020020004180016a200110ff02200028027c21030240200141046a2206280200200428020022056b41034b0d00200120054104108101200428020021050b200041a0016a2100200128020020056a20033600002004200541046a22053602000240200628020020056b413f4b0d002001200541c000108101200141086a28020021050b200128020020056a22042000290000370000200441386a200041386a290000370000200441306a200041306a290000370000200441286a200041286a290000370000200441206a200041206a290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700000c010b024020032005470d00200120054101108101200141086a28020021050b200128020020056a41013a0000200141086a2206200541016a2205360200200429030021020240200141046a220728020020056b41074b0d00200120054108108101200628020021050b200128020020056a20023700002006200541086a2203360200200041e0016a21050240200728020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22062005290000370000200641186a200541186a290000370000200641106a200541106a290000370000200641086a200541086a290000370000200141086a2206200341206a3602002004410c6a200110ff02200041186a28020021030240200141046a2207280200200628020022056b41034b0d00200120054104108101200628020021050b200128020020056a20033600002006200541046a22033602002004412c6a21050240200728020020036b413f4b0d002001200341c000108101200141086a28020021030b200128020020036a22042005290000370000200441386a200541386a290000370000200441306a200541306a290000370000200441286a200541286a290000370000200441206a200541206a290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000200141086a2204200341c0006a36020020004180016a200110ff02200028027c21030240200141046a2206280200200428020022056b41034b0d00200120054104108101200428020021050b200041a0016a2100200128020020056a20033600002004200541046a22053602000240200628020020056b413f4b0d002001200541c000108101200141086a28020021050b200128020020056a22042000290000370000200441386a200041386a290000370000200441306a200041306a290000370000200441286a200041286a290000370000200441206a200041206a290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a2900003700000b200141086a200541c0006a3602000b130020004101360204200041ac85c2003602000b3400200041ea86c20036020420004100360200200041146a4101360200200041106a41f886c200360200200041086a420c3702000be90301067f230041d0006b22022400200241086a41eeffc300410310f201200241186a41b48ac200411510f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b3400200041eeffc30036020420004100360200200041146a4102360200200041106a41cc8ac200360200200041086a42033702000b2e01017f230041106b2202240020024200370204200241002802ccdd4a36020020002002109a03200241106a24000bbc0b02077f017e230041b0016b220324000240024002400240200241086a2204280200220520004d0d00200241046a280200450d01200228020010390c010b200341086a410c6a20042802003602002003200229020037020c20034180016a22024200370300200341f8006a22044200370300200341e8006a41086a2206420037030020034200370368200341286a41b9fec300410610f2012006200341286a41086a220729000037030020032003290028370368200341286a41b0eec900410610f20120022007290000370300200420032900283703002003200341e8006a412010f50120032003280204410020032802001b2208360208200341c8006a41eeffc300410310f201200341286a41d08cc200411910f201200320013602ac012003200341ac016a410410f301370318200341e8006a410c6a200341ac016a41046a3602002003200341186a41086a36026c2003200341ac016a3602702003200341186a360268200341d8006a200341e8006a108d012003280260220741206a2202417f4c0d010240024020020d00410121040c010b200210382204450d030b4100210620034100360220200320043602182003200236021c02402002410f4b0d00200341186a41004110108101200328021c210220032802182104200328022021060b200420066a22092003290048370000200941086a200341c8006a41086a2900003700002003200641106a22063602200240200220066b410f4b0d00200341186a20064110108101200328021c210220032802182104200328022021060b200420066a22092003290028370000200941086a200341286a41086a2900003700002003200641106a2206360220200328025821090240200220066b20074f0d00200341186a2006200710810120032802182104200328022021060b200420066a2009200710c30a1a2003200620076a22023602200240200328025c450d00200328025810390b200341e8006a20032802182204200210ab020240024020032d00684101460d00200341c0006a4200370300200341386a4200370300200341306a4200370300200342003703280c010b200341c0006a20034181016a290000370300200341386a200341f9006a290000370300200341306a200341f1006a290000370300200320032900693703280b2003418c016a200341086a41047210a00420034184016a200341c0006a2206290300370200200341fc006a200341386a2207290300370200200341f4006a200341306a2209290300370200200320083602682003200329032837026c200341286a200341e8006a10a10420034181016a2006290300370000200341f9006a2007290300370000200341f1006a200929030037000020032003290328370069200341013a00682003200341e8006a41017236024820042002200341c8006a10a2040240200328021c450d00200410390b200341c8006a2001109c04200341e8006a200328024822072003280250220810a30402400240200328026822040d002003420037022c41002101200341002802ccdd4a2204360228410021020c010b200329026c210a200320043602282003200a37022c200a422088a72102200aa721010b200341e8006a41086a2206200341086a41086a29030037030020032003290308370368024020022001470d00200341286a200110a40420032802282104200328023021020b200420024104746a22042003290368370200200441086a2006290300370200200341286a41086a200241016a22023602002006200236020020032003290328220a37036802400240200aa722060d002007200810fd010c010b20072008200341e8006a10a5040240200341e8006a41086a2802002202450d0020024104742104200641086a2102034002402002280200450d002002417c6a28020010390b200241106a2102200441706a22040d000b0b200328026c41ffffffff0071450d00200610390b200328024c450d00200710390b200341b0016a2400200520004b0f0b1034000b1030000bc50301067f230041106b22022400024002402001280208220341046a2204417f4c0d00200128020021050240024002400240024002402004450d00200410382201450d07200241003602082002200436020420022001360200200341c000490d02200341808001490d032003418080808004490d04410021040c010b200241003602082002420137030020024100410110810120022802002101200228020821040b200120046a41033a00002002200441016a22043602080240200228020420046b41034b0d00200220044104108101200228020821040b2002280200220120046a2003360000200441046a21040c030b200120034102743a0000410121040c020b20034102744101722106410021070240200441014b0d0020024100410210810120022802002101200228020821070b200120076a20063b0000200741026a21040c010b20012003410274410272360000410421040b200220043602080240200228020420046b20034f0d0020022004200310810120022802002101200228020821040b200120046a2005200310c30a1a2002200420036a2203360208200020012003109c0102402002280204450d00200110390b200241106a24000f0b1034000b1030000bdb0301087f230041106b220224000240410410382203450d002002420437020420022003360200412010382203450d0020032001290004370000200341186a22042001411c6a290000370000200341106a2205200141146a290000370000200341086a22062001410c6a29000037000020024100412010810120022802002207200228020822086a22092003290000370000200941086a2006290000370000200941106a2005290000370000200941186a20042900003700002002200841206a220936020820031039200128020021030240200228020420096b41034b0d0020022009410410810120022802002107200228020821090b200720096a20033600002002200941046a2209360208412010382203450d0020032001290024370000200341186a22042001413c6a290000370000200341106a2205200141346a290000370000200341086a22062001412c6a2900003700000240200228020420096b411f4b0d00200220094120108101200228020821090b2002280200220720096a22012003290000370000200141086a2006290000370000200141106a2005290000370000200141186a20042900003700002003103920002007200941206a109c0102402002280204450d00200710390b200241106a24000f0b1030000b6201017f2002280200210302404120103822020d001030000b20022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200020012002412010a302200210390b8306020a7f017e230041f0006b220324002003200236021c20032001360218200341206a2001200210e4020240024002400240200328022022040d00200041003602000c010b200328022421052003200341286a28020036023420032004360230200341106a200341306a10ad010240024020032802100d004104210620032802142207200328023422084104762201200120074b1b22014104742202417f4c0d0302402001450d00200210382206450d050b200341003602602003200136025c20032006360258024002402007450d0041002102034020084104490d0220032008417c6a36023420032003280230220141046a36023020012800002109200341086a200341306a10ad0120032802080d022003280234220a200328020c2201490d022001417f4c0d060240024020010d00410121080c010b200110382208450d0820084100200110c50a1a0b20082003280230220b200110c30a210c2003200a20016b22083602342003200b20016a3602302001ad220d422086200d84210d02402002200328025c470d00200341d8006a200210a40420032802582106200328026021020b200620024104746a2201200c36020420012009360200200141086a200d3702002003200328026041016a22023602602007417f6a22070d000b200328025821060b2006450d012000200329025c370204200020063602000c020b2003280258210802402002450d0020024104742102200841086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200241706a22020d000b0b200328025c41ffffffff0071450d00200810390b2003420037023c2003410028029cde4a3602382003410c36024c2003200341186a3602482003200341386a360254200341ec006a41013602002003420137025c200341e4b4c4003602582003200341c8006a360268200341d4006a41fc86ca00200341d8006a103b1a2003280238200328024010e7020240200328023c450d00200328023810390b200041003602000b2005450d00200410390b200341f0006a24000f0b1034000b1030000bd40101037f230041206b220224000240200141016a22032001490d00200041046a280200220441017422012003200120034b1b22014104200141044b1b220141ffffffff00712001464102742103200141047421010240024020040d00200241003602100c010b200241186a410436020020022004410474360214200220002802003602100b200220012003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410476360200200241206a24000f0b1034000bfc0101047f230041106b2203240002400240200228020822044104744104722205417f4c0d0020022802002102200510382206450d012003410036020820032005360204200320063602002003200410d20102402004450d00200220044104746a210603402002280200210502402003280204200328020822046b41034b0d00200320044104108101200328020821040b200328020020046a20053600002003200441046a360208200241046a2802002002410c6a280200200310d601200241106a22022006470d000b0b2000200120032802002202200328020810a30202402003280204450d00200210390b200341106a24000f0b1034000b1030000bec0101017f230041306b2202240002400240200028020022002802004101470d00200220002802043602002002200041086a280200360204200241146a41023602002002410236020c2001411c6a28020021002002200241046a36021020022002360208200128021821012002412c6a41023602002002420237021c200241ccc4c0003602182002200241086a36022820012000200241186a103b21010c010b2001411c6a2802002100200128021821012002412c6a4100360200200241f4ddca003602282002420137021c200241dcc4c00036021820012000200241186a103b21010b200241306a240020010b981305017f017e0a7f017e077f230041d0006b220224002000290210210320002802082104024002400240200028020422052f018a012206410a4b0d002005418c016a21070240200441016a220820064b22090d00200720084103746a200720044103746a200620046b41037410c40a1a0b200720044103746a2003370000200241c0006a41086a220a200141086a28020036020020022001290200370340200541046a2107024020090d0020072008410c6c6a20072004410c6c6a200620046b410c6c10c40a1a0b20072004410c6c6a22042002290340370200200441086a200a2802003602002005200641016a3b018a010c010b410521074100210b02400240200441054f0d0041042107200421080c010b41052108024002402004417b6a0e020201000b200441796a21084101210b410621070c010b410021084101210b0b2000280200210a0240024002400240024002400240024002400240024041e40110382206450d00200641003b018a0120064100360200200620052f018a01220c2007417f736a22043b018a012005418c016a220d20074103746a290000210e200241c0006a41086a200541046a220f2007410c6c6a220941086a280200360200200220092902003703402004410c4f0d01200c200741016a22096b2004470d022006418c016a200d20094103746a200441037410c30a1a200641046a200f2009410c6c6a2004410c6c10c30a1a200520073b018a01200241306a41086a200241c0006a41086a220c2802003602002002200229034037033020062005200b1b2204418c016a21070240200841016a220b20042f018a0122094b220d0d002007200b4103746a200720084103746a200920086b41037410c40a1a0b200720084103746a2003370000200c200141086a28020036020020022001290200370340200441046a21070240200d0d002007200b410c6c6a20072008410c6c6a200920086b410c6c10c40a1a0b20072008410c6c6a22072002290340370200200741086a200241c0006a41086a220b280200360200200241206a41086a2210200241306a41086a220f28020022073602002004200941016a3b018a01200220022903302203370320200241086a220d200736020020022003370300024002400240200528020022040d004100210a0c010b200e2103200621114100210703402004210920052f0188012108200241106a41086a2212200d28020036020020022002290300370310200a2007470d0620092f018a01220c410b490d024100210141042105024020084105490d0020082105024002402008417b6a0e020201000b200841796a210841012101410621050c010b4100210841012101410521050b41940210382206450d03200641003b018a0120064100360200200620092f018a0122132005417f736a22043b018a012009418c016a221420054103746a290000210e200b200941046a22152005410c6c6a220741086a280200360200200220072902003703402004410c4f0d072013200541016a22076b2004470d082006418c016a201420074103746a200441037410c30a1a200641046a20152007410c6c6a2004410c6c10c30a1a200920053b018a01200f200b2802003602002002200229034037033020062f018a01220441016a21132004410c4f0d09200c20056b22052013470d0a200a41016a210a200641e4016a200920074102746a41e4016a200541027410c30a1a4100210502400340200620054102746a41e4016a280200220720053b01880120072006360200200520044f0d01200520052004496a220520044d0d000b0b2010200f280200360200200220022903303703202006200920011b2207418c016a21010240200841016a220420072f018a0122054b22130d00200120044103746a200120084103746a200520086b41037410c40a1a0b200120084103746a2003370000200b201228020036020020022002290310370340200741046a210c024020130d00200c2004410c6c6a200c2008410c6c6a200520086b410c6c10c40a1a0b200541016a2101200c2008410c6c6a220c2002290340370200200c41086a200b280200360200200741e4016a210c0240200841026a2213200541026a22124f0d00200c20134102746a200c20044102746a200520086b41027410c40a1a0b200c20044102746a2011360200200720013b018a010240200420124f0d00200720084102746a41e8016a2105034020052802002204200841016a22083b01880120042007360200200541046a210520012008470d000b0b200d201028020036020020022002290320370300200e21032006211120092105200a2107200928020022040d000b0b200b200d28020036020020022002290300370340200028020c22042802042207450d092004280200210841940210382205450d01200520073602e401200541003b018a012005410036020020042005360204200741003b018801200720053602002004200841016a3602002008200a470d0a20052f018a012207410b4f0d0b2005200741016a22083b018a01200520074103746a418c016a200e37000020052007410c6c6a2207410c6a200241c8006a280200360200200741046a2002290340370200200541e4016a20084102746a2006360200200620083b018801200620053602002004200428020841016a3602080c0d0b2009418c016a21050240200c20084d22040d00200520084103746a220641086a2006200c20086b41037410c40a1a0b200520084103746a2003370000200241c0006a41086a2207200241086a28020036020020022002290300370340200841016a2105200941046a2106024020040d0020062005410c6c6a20062008410c6c6a200c20086b410c6c10c40a1a0b200c41016a210120062008410c6c6a22062002290340370200200641086a2007280200360200200941e4016a2106200c41026a2107024020040d00200841027420066a41086a200620054102746a200c20086b41027410c40a1a0b200920013b018a01200620054102746a2011360200200520074f0d0b200c41016a210720092005417f6a22054102746a41e8016a2104034020042802002206200541016a22053b01880120062009360200200441046a210420072005470d000c0c0b0b1030000b2004410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b41c0f3ca00413541f8f3ca001035000b2004410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2013410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b200028020c2205200528020841016a3602080b200241d0006a24000bce0303017f017e027f230041d02b6b2203240020034280808080802037020c2003200236021c200320013602182003200341186a360208200341f8226a200341086a10c10302400240024020032903e02322044203510d00200341a01a6a200341f8226a41d80810c30a1a20032802082202280204220541034b0d01024020032903881b4202510d0020032d00a01a41ff01714102470d0020032802a81a450d0020032802a41a10390b200341b81b6a10d4030b420321040c010b20022802002206280000210120022005417c6a3602042002200641046a360200200341b8196a200341f8226a41e80010c30a1a200341d0116a200341e8236a41e80710c30a1a0b200341e8106a200341b8196a41e80010c30a1a20034180096a200341d0116a41e80710c30a1a0240024020044203510d00200341206a200341e8106a41e80010c30a1a20034190016a20034180096a41e80710c30a1a200320013602f8082003200437038801024020032802082802040d002000200341206a41e00810c30a1a0c020b20004203370368024020044202510d0020032d002041ff01714102470d002003280228450d00200328022410390b200341b8016a10d4030c010b200042033703680b200341d02b6a24000b971803027f047e1b7f23004190046b22052400200541086a2001280208220641086a2900002207370300200541106a200641106a2900002208370300200541186a200641186a290000220937030020052006290000220a3703002001280204210b2001280200210c200541206a41186a220d2009370300200541206a41106a220e2008370300200541206a41086a220f20073703002005200a37032020034101742110200541206a4107722111200541e8016a41186a2112200541e8016a410c6a2113200541e8016a41206a21144100210641002115410021160240024002400240024002400240024002400240024002400240024002400240024002400340201641017621010240024020164101710d00200120034b0d03200541003a00f001200520013602ec01200520023602e8010c010b200120034b0d03200120034f0d04200541013a00f001200520023602e801200520013602ec012005200220016a2d000041f001713a00f1010b200541c0006a200c200541206a200541e8016a200b28020c1105000240200528024022170d00200541e8016a41186a2206200541206a41186a290300370300200541e8016a41106a2218200541206a41106a290300370300200541e8016a41086a2219200541206a41086a290300370300200520052903203703e801413010382201450d13200120052903e801370001200120154100473a0000200141096a2019290300370000200141116a2018290300370000200141196a200629030037000020004101360200200020013602040c120b200528024821012005280244211a0240200428020c20154b0d002001417f4c0d0c0240024020010d00410121180c010b200110382218450d140b20182017200110c30a21192012200d290300370300200541e8016a41106a221b200e290300370300200541e8016a41086a221c200f290300370300200520052903203703e801024020042802082218200441046a280200470d002004201810aa04200428020821180b2004201841016a3602082004280200201841306c6a2218201936020420182015360200201820052903e8013702102018410c6a2001360200201841086a2001360200201841186a201c290300370200201841206a201b290300370200201841286a20122903003702000b200541e8016a2017200110ab0420052d00e8014101460d0f201541016a21150340200528028402211d200528028002211e20052802fc01211f20052802f801211920052802f401211820052802f001211b20052802ec012101200541c0006a201441a80110c30a1a20052802b403211c20052802b0032120024002400240024020010e05130f000102130b410021010240201841017420196b2221201020066b221c201c20214b1b2222450d000340200620016a2220410176221c20034f0d0a201920016a2223410176222420184f0d0b2002201c6a2d0000221c410f71201c41f0017141047620204101711b201b20246a2d0000221c410f71201c41047620234101711b470d012022200141016a2201470d000b202221010b024020012021470d00202121010c030b200042003702000c140b2005201d3602fc012005201e3602f8012005201f3602f401200520193602f001200520183602ec012005201b3602e8012012200541c0006a41a80110c30a1a0240024020102006460d002006410176220120034f0d0b200541e8016a200220016a2d00002201410f71200141047620064101711b410c6c6a2201280200221f4102470d01200042003702000c150b4100210102402020450d00201c417f4c0d1002400240201c0d00410121010c010b201c10382201450d180b20012020201c10c30a1a0b20002001360204200041003602002000410c6a201c360200200041086a201c3602000c140b2001280204211e200141086a280200211d41012121410121010c010b20052802c003212120052802bc03212520052802b80321012005201d3602f0012005201e3602ec012005201f3602e8012013200541c0006a41a80110c30a1a200520013602a4032005201c3602a0032005202036029c03410021010240201841017420196b221d201020066b221e201e201d4b1b2222450d000340200620016a2220410176221c20034f0d0b201920016a2223410176222420184f0d0c2002201c6a2d0000221c410f71201c41f0017141047620204101711b201b20246a2d0000221c410f71201c41047620234101711b470d012022200141016a2201470d000b202221010b02402001201d460d00200042003702000c130b02400240201e201d460d002006201d6a2218410176220120034f0d0d200541e8016a200220016a2d00002201410f71200141047620184101711b410c6c6a2218280200221f4102470d01200042003702000c140b4100210102402025450d002021417f4c0d0f0240024020210d00410121010c010b202110382201450d170b20012025202110c30a1a0b20002001360204200041003602002000410c6a2021360200200041086a20213602000c130b201d41016a2121201d41016a21012018280204211e201841086a280200211d0b200120166a2116200620216a21060240201f450d00200541e8016a201e201d10ab0420052d00e8014101460d110c010b0b02400240201d4120460d002012200d290300370300200541e8016a41106a2218200e290300370300200541e8016a41086a2219200f290300370300200520052903203703e801201d417f4c0d0d02400240201d0d00410121010c010b201d10382201450d150b2001201e201d10c30a211b413010382201450d14200141043a0000200120052903e8013700012001201d36002c2001201d3600282001201b360024200141096a2019290300370000200141116a2018290300370000200141196a20122903003700000c010b200541e8016a41026a41003a0000200541003b01e801201e2f00002118200541ec036a41026a201e41026a2d00003a0000201e411f6a2d00002119201e41176a2900002107201e2800032101201e2900072108200541f0036a41086a221b201e410f6a290000370300200541f0036a41106a221c2007370300200541f0036a41186a222020193a0000200520183b01ec03200520083703f003201220202d00003a0000200541e8016a41106a201c290300370300200541e8016a41086a201b290300370300200520052903f0033703e8010b200541e8036a41026a2218200541ec036a41026a2d00003a0000200541c8036a41086a2219200541e8016a41086a290300370300200541c8036a41106a221b200541e8016a41106a290300370300200541c8036a41186a221c2012280200360200200520052f01ec033b01e803200520052903e8013703c8030240201d4120470d00201120052903c803370000201141086a2019290300370000201141106a201b290300370000201141186a201c2d00003a0000200520052f01e8033b012020052001360023200520182d00003a0022201a450d01201710390c010b0b20004101360200200020013602040c0f0b2001200341d0e9ca001055000b2001200341e0e9ca001055000b2001200341f0e9ca00103c000b201c20034190e9ca00103c000b202420184190e9ca00103c000b200120034190e9ca00103c000b201c20034190e9ca00103c000b202420184190e9ca00103c000b200120034190e9ca00103c000b4100211d0240201841017420196b201020066b2222470d004100211d41002101024002402022450d00410021010340201920016a2220410176221c20184f0d05200620016a2223410176222420034f0d06201b201c6a2d0000221c410f71201c41f0017141047620204101711b200220246a2d0000221c410f71201c41047620234101711b470d012022200141016a2201470d000c020b0b20012022470d010b201e417f4c0d0102400240201e0d004101211d0c010b201e1038221d450d090b201d201f201e10c30a1a201ead220742208620078421070b2000201d36020420004100360200200041086a20073702000c050b1034000b201c20184190e9ca00103c000b202420034190e9ca00103c000b200042003702000c010b20052d00e9012106413010382201450d02200141033a0000200120063a002120012005290320370001200141096a200541286a290300370000200141116a200541306a290300370000200141196a200541386a29030037000020004101360200200020013602040b201a450d00201710390b20054190046a24000f0b1030000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42307e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141306c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141306e360200200241206a24000f0b1034000b9a1103027f027e0c7f23004190086b2203240041002104200341003602880520032002360284052003200136028005420321050240024020020d0042002106410021070c010b41012107200341013602880542002106024020012d000022080d00420021050c010b0240024002400240024002400240024002400240200841c00171220941c001460d0002402009418001460d00200941c000470d0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d0320032007360288050240200120076a417f6a2d0000220941ff01460d00200920086b21080c0c0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c0a0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d0320032007360288050240200120076a417f6a2d0000220941ff01460d00200920086b21080c0a0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c080b2008413f712208413f470d05410221074141210803402007417f6a20024f0d0320032007360288050240200120076a417f6a2d0000220941ff01460d00200920086b21080c080b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c060b2007417f6a21070c080b2007417f6a21070c070b2007417f6a21070c060b410121070c040b410121070c020b410121070b2008ad422086428002842106420121050c020b2008ad4220862106420121050c010b2008ad4220862106420221050b2006422088a7210a410121094101210802400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402005200684a741ff01710e040200010a020b0240200a410171220b450d00200720024f0d0441002108200120076a2d0000410f4b0d0a0b2007200a41016a4101766a220c20024b22080d082003200c3602880520080d08200c41026a220820024b0d082003200836028805200c417e4f0d0a2001200c6a2f000021044100210a4100210d0240200642800283500d00200341106a20034180056a10d80820032802100d0941012108200328028805220e20032802146a220f2003280284054b0d0a2003200f360288054101210d0b2003410236028408200341023602f807200341023602ec07200341023602e007200341023602d407200341023602c807200341023602bc07200341023602b007200341023602a40720034102360298072003410236028c072003410236028007200341023602f406200341023602e806200341023602dc06200341023602d006200341d0066a2108200441ffff03712110034002402010200a410f7176410171450d00200341086a20034180056a10d80820032802080d0a2003280288052211200328020c22126a22042003280284054b0d0a200841086a2004360200200841046a20113602002008201241204736020020032004360288050b2008410c6a2108200a41016a220a4110470d000b200341c0036a200341d0066a41c00110c30a1a410421040c010b0240200a410171220b450d00200720024f0d0241002108200120076a2d0000410f4b0d090b2007200a41016a4101766a220c20024b0d072003200c36028805200341186a20034180056a10d80820032802180d0741012108200328028805220d200328021c6a220e2003280284054b0d082003200e36028805410121040b20034180026a200341c0036a41c00110c30a1a200341206a410c6a200b360200200341206a41086a200c36020020032007360224200341206a411c6a20034180026a41c00110c30a1a200341386a200f360200200341346a200e360200200341306a200d3602002003200436022020040e050304020205030b2007200241c0edc500103c000b2007200241d0edc500103c0b000b41002109200041003602040c0d0b200c2007490d04200c20024b0d05200e200d490d06200e20024b0d0720004101360204200041186a200e200d6b360200200041146a2001200d6a360200200041106a200b3602002000410c6a200c20076b360200200041086a200120076a360200410021090c0c0b2003410236028408200341023602f807200341023602ec07200341023602e007200341023602d407200341023602c807200341023602bc07200341023602b007200341023602a40720034102360298072003410236028c072003410236028007200341023602f406200341023602e806200341023602dc06200341023602d0064100210803404102210a0240200341206a20086a2209411c6a22122802004102460d00200941246a2802002104200941206a28020021090240024020122802004101470d0020042009490d0b4101210a200420024d0d0120042002418cecca001055000b20042009490d0b4100210a200420024b0d0c0b200120096a2111200420096b21040b200341d0066a20086a2209200a360200200941086a2004360200200941046a20113602002008410c6a220841c001460d0b0c000b0b410121080b20034180026a200341c0036a41c00110c30a1a200020083a00010c090b200c200841b0edc500105f000b2007200c4184edca00105f000b200c20024184edca001055000b200d200e4194edca00105f000b200e20024194edca001055000b20092004418cecca00105f000b20092004419cecca00105f000b20042002419cecca001055000b02400240200d4101460d00410021080c010b200f200e490d02200f20024b0d03200f200e6b21092001200e6a21080b200c2007490d03200c20024b0d04200041106a200b3602002000410c6a200c20076b360200200041086a200120076a360200200041146a200341d0066a41c00110c30a1a200041d8016a2009360200200041d4016a200836020020004104360204410021090b200020093a000020034190086a24000f0b200e200f41a4edca00105f000b200f200241a4edca001055000b2007200c4184edca00105f000b200c20024184edca001055000b9d1603027f047e1b7f23004190046b22042400200441086a2001280208220541086a2900002206370300200441106a200541106a2900002207370300200441186a200541186a29000022083703002004200529000022093703002001280204210a2001280200210b200441206a41186a220c2008370300200441206a41106a220d2007370300200441206a41086a220e2006370300200420093703202003410174210f200441206a4107722110200441e8016a41186a2111200441e8016a410c6a2112200441e8016a41206a211341002105410021144100211502400240024002400240024002400240024002400240024002400240024002400340201541017621010240024020154101710d00200120034b0d03200441003a00f001200420013602ec01200420023602e8010c010b200120034b0d03200120034f0d04200441013a00f001200420023602e801200420013602ec012004200220016a2d000041f001713a00f1010b200441c0006a200b200441206a200441e8016a200a28020c110500024002400240200428024022160d00200441e8016a41186a2205200441206a41186a290300370300200441e8016a41106a2217200441206a41106a290300370300200441e8016a41086a2218200441206a41086a290300370300200420042903203703e8014130103822010d010c130b20042802442119200441e8016a2016200428024810ab0420042d00e8014101460d0f201441016a21140c010b200120042903e801370001200120144100473a0000200141096a2018290300370000200141116a2017290300370000200141196a200529030037000020004101360200200020013602040c100b0340200428028402211a200428028002211b20042802fc01211c20042802f801211820042802f401211720042802f001211d20042802ec012101200441c0006a201341a80110c30a1a20042802b403211e20042802b003211f024002400240024020010e05110f000102110b410021010240201741017420186b2220200f20056b221e201e20204b1b2221450d000340200520016a221f410176221e20034f0d0a201820016a2222410176222320174f0d0b2002201e6a2d0000221e410f71201e41f00171410476201f4101711b201d20236a2d0000221e410f71201e41047620224101711b470d012021200141016a2201470d000b202121010b024020012020470d00202021010c030b200042003702000c120b2004201a3602fc012004201b3602f8012004201c3602f401200420183602f001200420173602ec012004201d3602e8012011200441c0006a41a80110c30a1a02400240200f2005460d002005410176220120034f0d0b200441e8016a200220016a2d00002201410f71200141047620054101711b410c6c6a2201280200221c4102470d01200042003702000c130b410021010240201f450d00201e417f4c0d1002400240201e0d00410121010c010b201e10382201450d160b2001201f201e10c30a1a0b20002001360204200041003602002000410c6a201e360200200041086a201e3602000c120b2001280204211b200141086a280200211a41012120410121010c010b20042802c003212020042802bc03212420042802b80321012004201a3602f0012004201b3602ec012004201c3602e8012012200441c0006a41a80110c30a1a200420013602a4032004201e3602a0032004201f36029c03410021010240201741017420186b221a200f20056b221b201b201a4b1b2221450d000340200520016a221f410176221e20034f0d0b201820016a2222410176222320174f0d0c2002201e6a2d0000221e410f71201e41f00171410476201f4101711b201d20236a2d0000221e410f71201e41047620224101711b470d012021200141016a2201470d000b202121010b02402001201a460d00200042003702000c110b02400240201b201a460d002005201a6a2217410176220120034f0d0d200441e8016a200220016a2d00002201410f71200141047620174101711b410c6c6a2217280200221c4102470d01200042003702000c120b4100210102402024450d002020417f4c0d0f0240024020200d00410121010c010b202010382201450d150b20012024202010c30a1a0b20002001360204200041003602002000410c6a2020360200200041086a20203602000c110b201a41016a2120201a41016a21012017280204211b201741086a280200211a0b200120156a2115200520206a21050240201c450d00200441e8016a201b201a10ab0420042d00e8014101460d0f0c010b0b02400240201a4120460d002011200c290300370300200441e8016a41106a2217200d290300370300200441e8016a41086a2218200e290300370300200420042903203703e801201a417f4c0d0d02400240201a0d00410121010c010b201a10382201450d130b2001201b201a10c30a211d413010382201450d12200141043a0000200120042903e8013700012001201a36002c2001201a3600282001201d360024200141096a2018290300370000200141116a2017290300370000200141196a20112903003700000c010b200441e8016a41026a41003a0000200441003b01e801201b2f00002117200441ec036a41026a201b41026a2d00003a0000201b411f6a2d00002118201b41176a2900002106201b2800032101201b2900072107200441f0036a41086a221d201b410f6a290000370300200441f0036a41106a221e2006370300200441f0036a41186a221f20183a0000200420173b01ec03200420073703f0032011201f2d00003a0000200441e8016a41106a201e290300370300200441e8016a41086a201d290300370300200420042903f0033703e8010b200441e8036a41026a2217200441ec036a41026a2d00003a0000200441c8036a41086a2218200441e8016a41086a290300370300200441c8036a41106a221d200441e8016a41106a290300370300200441c8036a41186a221e2011280200360200200420042f01ec033b01e803200420042903e8013703c8030240201a4120470d00201020042903c803370000201041086a2018290300370000201041106a201d290300370000201041186a201e2d00003a0000200420042f01e8033b012020042001360023200420172d00003a00222019450d01201610390c010b0b20004101360200200020013602040c0d0b2001200341d0e9ca001055000b2001200341e0e9ca001055000b2001200341f0e9ca00103c000b201e20034190e9ca00103c000b202320174190e9ca00103c000b200120034190e9ca00103c000b201e20034190e9ca00103c000b202320174190e9ca00103c000b200120034190e9ca00103c000b4100211a024002400240201741017420186b200f20056b2221470d004100211a41002101024002402021450d00410021010340201820016a221f410176221e20174f0d04200520016a2222410176222320034f0d05201d201e6a2d0000221e410f71201e41f00171410476201f4101711b200220236a2d0000221e410f71201e41047620224101711b470d012021200141016a2201470d000c020b0b20012021470d010b201b417f4c0d0302400240201b0d004101211a0c010b201b1038221a450d090b201a201c201b10c30a1a201bad220642208620068421060b2000201a36020420004100360200200041086a20063702000c050b201e20174190e9ca00103c000b202320034190e9ca00103c000b1034000b200042003702000c010b20042d00e9012105413010382201450d02200141033a0000200120053a002120012004290320370001200141096a200441286a290300370000200141116a200441306a290300370000200141196a200441386a29030037000020004101360200200020013602040b2019450d00201610390b20044190046a24000f0b1030000b130020004104360204200041ac90c2003602000b1300200041083602042000418492c2003602000b8e0501047f230041d0006b220324000240024020012d00004101470d00200341286a200141196a290000370300200341206a200141116a290000370300200341186a200141096a290000370300200320012900013703100c010b200341306a200141046a2802002001410c6a28020010b004200341106a41186a200341306a41186a290000370300200341106a41106a200341306a41106a290000370300200341106a41086a200341306a41086a290000370300200320032900303703100b0240412010382201450d0020012003290310370000200141086a200341106a41086a2204290300370000200141106a200341106a41106a2205290300370000200141186a200341106a41186a220629030037000020032001360200200342a080808080043702040240024020022d00004101470d002006200241196a2900003703002005200241116a2900003703002004200241096a290000370300200320022900013703100c010b200341306a200241046a2802002002410c6a28020010b0042006200341306a41186a2900003703002005200341306a41106a2900003703002004200341306a41086a290000370300200320032900303703100b20034120412010810120032802002202200328020822046a22012003290310370000200141086a200341106a41086a290300370000200141106a200341106a41106a290300370000200141186a200341106a41186a29030037000020032802042101200341306a2002200441206a10b004200041196a200341306a41186a290000370000200041116a200341306a41106a290000370000200041096a200341306a41086a29000037000020002003290030370001200041013a000002402001450d00200210390b200341d0006a24000f0b1030000b7201027f2002ad4220862001ad8410142101200041186a22024200370000200041106a22034200370000200041086a2204420037000020004200370000200020012900003700002004200141086a2900003700002003200141106a2900003700002002200141186a290000370000200110390b860201057f230041306b22032400200341106a200110b2040240412010382201450d0020012003290310370000200141086a200341106a41086a2204290300370000200141106a200341106a41106a2205290300370000200141186a200341106a41186a220629030037000020032001360200200342a08080808004370204200341106a200210b20420034120412010810120032802002202200328020822076a22012003290310370000200141086a2004290300370000200141106a2005290300370000200141186a200629030037000020032802042101200041016a2002200741206a10b004200041013a000002402001450d00200210390b200341306a24000f0b1030000ba80402077f017e230041106b2202240002400240024020012d00004101470d0020002001290001370000200041186a200141196a290000370000200041106a200141116a290000370000200041086a200141096a2900003700000c010b2002410036020820024201370300200141386a280200210320024100410410810120022802002204200228020822056a20033600002002200541046a2205360208412010382203450d0120032001413c6a290000370000200341186a2206200141d4006a290000370000200341106a2207200141cc006a290000370000200341086a2208200141c4006a2900003700000240200228020420056b411f4b0d0020022005412010810120022802002104200228020821050b200420056a22042003290000370000200441186a2006290000370000200441106a2007290000370000200441086a20082900003700002002200541206a36020820031039200141dc006a200210ff0220012903082109024020022802042205200228020822036b41074b0d0020022003410810810120022802042105200228020821030b2002280200220420036a20093700002002200341086a2203360208200141106a28020021060240200520036b41034b0d0020022003410410810120022802002104200228020821030b200420036a20063600002002200341046a360208200141146a200210ff02200020022802002201200228020810b0042002280204450d00200110390b200241106a24000f0b1030000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041e0f8c5003602182000200041186a360210200041ac9ac1001043000b3400200041b997c20036020420004100360200200041146a4102360200200041106a41ec99c200360200200041086a42113702000b130020004102360204200041f49cc2003602000ba20401067f230041d0006b22022400200241086a418cf9c800410710f201200241186a4192a6c800410810f20102400240412010382203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003412010f301370338200241cc006a200341206a360200200220033602482002200241386a41086a3602442002200241386a360240200241286a200241c0006a108d01200310392002280230220441206a2203417f4c0d010240024020030d00410121010c010b200310382201450d010b2000200136020041002105200041086a22064100360200200041046a2207200336020002402003410f4b0d0020004100411010810120062802002105200028020021010b200120056a22032002290008370000200341086a200241086a41086a2900003700002006200541106a220336020002402007280200220520036b410f4b0d00200020034110108101200041046a2802002105200041086a28020021030b200041086a2206200341106a22013602002000280200220720036a22032002290018370000200341086a200241186a41086a290000370000200228022821030240200520016b20044f0d0020002001200410810120062802002101200028020021070b200720016a2003200410c30a1a2006200120046a3602000240200228022c450d00200310390b200241d0006a24000f0b1030000b1034000bb90801067f230041e0006b22022400200241086a418cf9c800410710f201200241186a4183a2c200410810f20102400240200141086a280200220341046a2204417f4c0d0002400240024020040d00200241003602402002200436023c200241013602380c010b200410382205450d0341002106200241003602402002200436023c200220053602382003417c490d010b200241386a4100410410810120022802382105200228024021060b200520066a20012800003600002002200641046a22063602402001280204210302400240024002402001280208220441c000490d00200441808001490d012004418080808004490d020240200228023c2006470d00200241386a20064101108101200228024021060b2002280238220120066a41033a00002002200641016a22063602400240200228023c20066b41034b0d00200241386a2006410410810120022802382101200228024021060b200120066a2004360000200641046a21060c030b200441027421050240200228023c2006470d00200241386a20064101108101200228024021060b2002280238220120066a20053a0000200641016a21060c020b200441027441017221050240200228023c20066b41014b0d00200241386a20064102108101200228024021060b2002280238220120066a20053b0000200641026a21060c010b200441027441027221050240200228023c20066b41034b0d00200241386a20064104108101200228024021060b2002280238220120066a2005360000200641046a21060b200220063602400240200228023c220520066b20044f0d00200241386a20062004108101200228023c210520022802382101200228024021060b200120066a2003200410c30a1a20022001200620046a220410f301370348200241dc006a200120046a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a108d0102402005450d00200110390b2002280230220641206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22034100360200200041046a2207200136020002402001410f4b0d0020004100411010810120032802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002003200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2203200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20064f0d0020002004200610810120032802002104200028020021070b200720046a2001200610c30a1a2003200420066a3602000240200228022c450d00200110390b200241e0006a24000f0b1034000b1030000be70301037f0240200128020422020d00200041083a00000f0b20012002417f6a220336020420012001280200220441016a360200024002400240024002400240024002400240024002400240024020042d00000e080001020304050607080b200041003a0000200041086a4100360200200041046a41f4ddca003602000f0b200041013a00000f0b200041023a00000f0b2003450d0820012002417e6a22033602042001200441026a36020002402003450d0020042d0001210320012002417d6a3602042001200441036a36020020042d00022101200041046a4100360200200041026a20013a0000200020033a0001200041033a00000f0b200041083a00000f0b200041043a00000f0b200041053a00000f0b02402003450d0020012002417e6a3602042001200441026a3602004100210102400240024002400240024020042d00010e06050001020304060b410121010c040b410221010c030b410321010c020b410421010c010b410521010b200020013a0001200041063a00000f0b200041083a00000f0b2003450d0320012002417e6a3602042001200441026a36020041002101024020042d00010e03030200040b410221010c020b200041083a00000f0b410121010b200020013a0001200041073a00000f0b200041083a00000f0b200041083a00000b9e0a01027f024002400240024002400240024002400240200041ff01710e080001020304050607000b0240200341046a280200200341086a22012802002200470d00200320004101108101200128020021000b200328020020006a41003a00002001200041016a3602000f0b0240200341046a280200200341086a22012802002200470d00200320004101108101200128020021000b200328020020006a41013a00002001200041016a3602000f0b0240200341046a280200200341086a22012802002200470d00200320004101108101200128020021000b200328020020006a41023a00002001200041016a3602000f0b0240200341046a2204280200200341086a22052802002200470d00200320004101108101200528020021000b200328020020006a41033a00002005200041016a2200360200024020042802002000470d00200320004101108101200341086a28020021000b200328020020006a20013a0000200341086a2201200041016a22003602000240200341046a2802002000470d00200320004101108101200128020021000b200328020020006a20023a00002001200041016a3602000f0b0240200341046a280200200341086a22012802002200470d00200320004101108101200128020021000b200328020020006a41043a00002001200041016a3602000f0b0240200341046a280200200341086a22012802002200470d00200320004101108101200128020021000b200328020020006a41053a00002001200041016a3602000f0b0240200341046a280200200341086a22022802002200470d00200320004101108101200228020021000b200328020020006a41063a00002002200041016a2200360200024002400240024002400240200141ff01710e06000102030405070b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41003a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41013a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41023a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41033a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41043a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41053a0000200341086a200041016a3602000f0b0240200341046a280200200341086a22022802002200470d00200320004101108101200228020021000b200328020020006a41073a00002002200041016a2200360200024002400240200141ff01710e03000102030b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41003a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41013a0000200341086a200041016a3602000f0b0240200341046a2802002000470d00200320004101108101200341086a28020021000b200328020020006a41023a0000200341086a200041016a3602000b0bcb0501057f024002400240024020002d00000e03000102030b0240200141046a22022802002203200141086a22042802002205470d0020012005410110810120022802002103200428020021050b2001280200220620056a41003a00002004200541016a2202360200200041016a21000240200320026b413f4b0d002001200241c000108101200141086a2802002102200128020021060b200620026a22052000290000370000200541386a200041386a290000370000200541306a200041306a290000370000200541286a200041286a290000370000200541206a200041206a290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a290000370000200141086a200241c0006a3602000f0b0240200141046a22022802002203200141086a22042802002205470d0020012005410110810120022802002103200428020021050b2001280200220620056a41013a00002004200541016a2202360200200041016a21000240200320026b413f4b0d002001200241c000108101200141086a2802002102200128020021060b200620026a22052000290000370000200541386a200041386a290000370000200541306a200041306a290000370000200541286a200041286a290000370000200541206a200041206a290000370000200541186a200041186a290000370000200541106a200041106a290000370000200541086a200041086a290000370000200141086a200241c0006a3602000f0b0240200141046a2204280200200141086a22022802002205470d00200120054101108101200228020021050b2001280200220320056a41023a00002002200541016a2205360200200041016a21000240200428020020056b41c0004b0d002001200541c100108101200141086a2802002105200128020021030b200320056a200041c10010c30a1a200141086a200541c1006a3602000b0b940c02087f067e230041b0036b2203240020034190036a41186a2204420037030020034190036a41106a2205420037030020034190036a41086a22064200370300200342003703900341062107200341d8016a41b9fec300410610f2012006200341d8016a41086a2208290000370300200320032900d80137039003200341d8016a41b8edc900411010f20120042008290000370300200520032900d801370300200341086a20034190036a412010f501410021090240417f200328020c410020032802081b220a20026a22022002200a491b220a418080c002418080f001200141ff017122021b4b0d00200341106a10fb032004420037030020054200370300200642003703002003420037039003200341d8016a41b9fec300410610f20120062008290000370300200320032900d80137039003200341d8016a4184edc900410b10f201200541086a2008290000370000200520032900d801370000200341d8016a20034190036a10fa03200341d8016a41186a290300210b200341d8016a41106a290300210c20032903e001210d20032903d801210e200341d8016a200341106a41b80110c30a1a2003200d4200200e42015122061b370390032003200c420020061b3703d0012003200b420020061b3703c801024002400240024020020e03010200010b427f2000200341d8026a22062903007c220b200b2000541b210b0c020b427f200020032903e8017c220b200b2000541b210b200341e8016a21060c010b427f2000200341a0026a22062903007c220b200b2000541b210b0b02400240024002402006290318220c4201510d0020062903284201510d00200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008427f2008290300220d200b7c220b200b200d541b3703000c010b200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008290300220d200b7c220b200d540d012008200b3703000b200341c8016a2108024002400240200141ff01710e03000102000b20034190036a21080c010b200341d0016a21080b2008290300210e0240200c4201520d00200e200641206a290300560d010b0240427f427f200329039003220b20032903d001220c7c220d200d200b541b220f20032903c801220d7c22102010200f541b20032903e001580d0020062903284201520d00200e200641306a290300560d010b41002106410021070c010b41062107410121060b20060d00200341d8016a10fb030240024002400240200141ff01710e03010200010b200341d8026a21010c020b200341e8016a21010c010b200341a0026a21010b024020012903084201520d0041062107200141106a2903002000540d010b200341a8036a2208420037030020034190036a41106a2207420037030020034190036a41086a220142003703002003420037039003200341d8016a41b9fec300410610f2012001200341d8016a41086a2206290000370300200320032900d80137039003200341d8016a41b8edc900411010f201200541086a22042006290000370000200520032900d8013700002003200a3602d80120034190036a4120200341d8016a410410a3022008420037030020074200370300200142003703002003420037039003200341d8016a41b9fec300410610f20120012006290000370300200320032900d80137039003200341d8016a4184edc900410b10f20120042006290000370000200520032900d801370000200341003602e001200342013703d801200341d8016a4100410810810120032802d801220120032802e00122056a200b3700002003200541086a22053602e001024020032802dc01220620056b41074b0d00200341d8016a2005410810810120032802dc01210620032802d801210120032802e00121050b200120056a200c3700002003200541086a22053602e0010240200620056b41074b0d00200341d8016a2005410810810120032802d801210120032802e00121050b200120056a200d37000020034190036a412020032802d8012201200541086a10a302024020032802dc01450d00200110390b410221090b200341b0036a240020074108742009720bcc0801027f230041106b22022400024002400240024002400240024002400240200028020022002d00000e080102030405060700010b2002200128021841ece0ca00410a2001411c6a28020028020c1100003a000820022001360200200241003a000920024100360204410121012002200041016a36020c20022002410c6a41f8e0ca00104b1a20022d000821000240200228020422030d00200021010c080b200041ff01710d07024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d080b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c070b200220012802184197e3ca0041052001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a4188e1ca00104b1a20022d0008210120022802042203450d06200141ff017121004101210120000d06024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d070b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c060b20012802184198e1ca00410c2001411c6a28020028020c11000021010c050b200128021841a4e1ca0041092001411c6a28020028020c11000021010c040b20024280808080104200200128021841ade1ca0041062001411c6a28020028020c1100001b2001ad84370300410121012002200041016a36020c200241b3e1ca0041052002410c6a41b8e1ca00106921032002200041026a36020c200341c8e1ca0041052002410c6a41b8e1ca00106921032002200041046a36020c200341cde1ca0041072002410c6a41d4e1ca00106922002d00042103024020002d00050d00200321010c040b200341ff01710d030240200228020022012d0000410471450d0020012802184190a0c00041012001411c6a28020028020c11000021010c040b20012802184191a0c00041022001411c6a28020028020c11000021010c030b200128021841e4e1ca0041112001411c6a28020028020c11000021010c020b200128021841f5e1ca00410b2001411c6a28020028020c11000021010c010b200220012802184180e2ca0041052001411c6a28020028020c1100003a000820022001360200200241003a000920024100360204410121012002200041016a36020c20022002410c6a4188e2ca00104b1a20022d000821000240200228020422030d00200021010c010b200041ff01710d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d010b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bb80302027f017e230041c0016b22042400200441206a4200370300200441086a41106a22054200370300200441106a420037030020044200370308200441086a41b9fec300410610f201200541b8edc900411010f2012004200441086a412010f50102400240417f2004280204410020042802001b220520036a220320032005491b418080c002418080f001200241ff017122031b4b0d00200441086a10fb03024002400240024020030e03010200010b20044188016a21030c020b200441186a21030c010b200441d0006a21030b0240024020032903084201520d00200341106a2903002001540d010b42002106024002400240200241ff01710e03000102000b200121060c010b427f200142ffffffffffffffffbf7f7c220620062001541b21060b200041003a00002000411c6a4200370200200041186a41002802ccdd4a2202360200200041306a41013a0000200041286a4200370200200041246a2002360200200041106a427f370300200041086a20063703000c020b200041800c3b0001200041013a0000200041036a41003a00000c010b200041800c3b0001200041013a0000200041036a41003a00000b200441c0016a24000b9f0b04087f017e017f017e230041d0016b22012400200141286a41186a22024200370300200141286a41106a22034200370300200141286a41086a2204420037030020014200370328200141c8006a41edfec300410a10f2012004200141c8006a41086a220529000037030020012001290048370328200141c8006a41c7a6c800410610f2012002200529000037030020032001290048370300200141d8006a200141286a412010cc02200141086a41086a2206200141e1006a290000370300200141086a41106a2207200141e9006a290000370300200141086a41186a2208200141f1006a290000370300200120012900593703080240024020012d0058450d0020002001290308370000200041186a2008290300370000200041106a2007290300370000200041086a20062903003700000c010b20024200370300200342003703002004420037030020014200370328200141c8006a41b9fec300410610f2012004200529000037030020012001290048370328200141c8006a41e4eec900410610f201200341086a200529000037000020032001290048370000200141d8006a200141286a10bf042001280258220441002802ccdd4a20041b210202400240200129025c420020041b2209422088a7220641246c2204450d00200220046a2205415c6a210a200221040340024020042d00004101460d002005200441246a2204470d010c020b200441016a2800002107200441086a28020021082001200441106a28020036022c200120083602280240200741c28289aa04470d00200141d8006a200141286a10910420012903584203510d02200141d8006a41106a2802002105200141286a41186a4200370300200141286a41106a4200370300200141286a41086a2204420037030020014200370328200141c8006a418cf9c800410710f2012004200141c8006a41086a220729000037030020012001290048370328200141c8006a41e9a4c200410a10f201200341086a200729000037000020032001290048370000200141d8006a200141286a10c00420012802582204410028029cde4a20041b210702402005200129025c420020041b220b422088a74f0d00200141086a41186a200720054105746a220441186a290000370300200141086a41106a200441106a290000370300200141086a41086a200441086a290000370300200120042900003703080240200b42ffffff3f83500d00200710390b200141d8006a41186a200141086a41186a2204290300370300200141d8006a41106a200141086a41106a2205290300370300200141d8006a41086a200141086a41086a220729030037030020012001290308370358200141286a41186a4200370300200141286a41106a4200370300200141286a41086a2208420037030020014200370328200141c8006a41edfec300410a10f2012008200141c8006a41086a220a29000037030020012001290048370328200141c8006a41c7a6c800410610f201200341086a200a29000037000020032001290048370000200141286a4120200141d8006a10d202200041186a2004290300370000200041106a2005290300370000200041086a2007290300370000200020012903083700000c040b200b42ffffff3f83500d02200710390c020b200a2004462107200441246a21042007450d000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402006450d00200641246c21052002210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010390c030b2004410c6a280200450d02200441086a28020010390c020b2004410c6a280200450d01200441086a28020010390c010b200441086a280200450d00200441046a28020010390b200441246a21042005415c6a22050d000b0b2009a72204450d00200441246c450d00200210390b200141d0016a24000bb90201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a109a08024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602000b2003450d00200110390b200241e0006a24000bb90201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10e502024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602000b2003450d00200110390b200241e0006a24000b831e04067f017e037f037e230041a00d6b22002400200041b0026a22014200370300200041a8026a2202420037030020004198026a41086a220342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2204290000370300200020002900c00b37039802200041c00b6a41f7a7c800410b10f20120012004290000370300200220002900c00b370300200041b8086a20004198026a10fa04024020002d00b8084102470d002001420037030020024200370300200342003703002000420037039802200041c00b6a41b9fec300410610f20120032004290000370300200020002900c00b37039802200041c00b6a41e4eec900410610f201200241086a2004290000370000200220002900c00b370000200041b8086a20004198026a10bf0420002802b808220341002802ccdd4a20031b21050240024020002902bc08420020031b2206422088a7220741246c2204450d00200041b8086a41086a2108200521030340024020032d00004101470d00200341016a2800002101200341086a28020021092000200341106a2802003602d40b200020093602d00b200141c28289aa04470d00200041b8086a200041d00b6a10910420002903b808220a4203510d0020004198026a200841f00010c30a1a200041306a20004198026a41f00010c30a1a0c030b200341246a21032004415c6a22040d000b0b4203210a0b02402007450d00200741246c21042005210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032004415c6a22040d000b0b02402006a72203450d00200341246c450d00200510390b02400240200a4203520d00200041003a00d8060c010b2000200a3703a001200041a0016a41086a200041306a41f00010c30a2108200041b0026a22014200370300200041a8026a2209420037030020004198026a41086a220342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2204290000370300200020002900c00b37039802200041c00b6a41c0a7c800410b10f201200241086a22052004290000370000200220002900c00b370000200041206a20004198026a10c20420002903a8012106024002402000280220450d0020002903284200520d010b2001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41c0a7c800410b10f20120052004290000370000200220002900c00b370000200020063703b80820004198026a4120200041b8086a410810a3022001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41e0f6c800410b10f20120052004290000370000200220002900c00b370000200041b8086a20004198026a10fb0420002902bc08210b20002802b80821072001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41d5a7c800410a10f20120052004290000370000200220002900c00b370000200741002802fcad4920071b2103200041b8086a20004198026a10fc040240024020002d00b8084101460d00200041b0026a4200370300200041a8026a4200370300200041a0026a420037030020004200370398020c010b200041b0026a200041d1086a290000370300200041a8026a200041c9086a290000370300200041a0026a200041c1086a290000370300200020002900b908370398020b200041b8086a41086a200b420020071b370300200041b8086a41106a200029039802370300200041b8086a41186a20004198026a41086a290300370300200041d8086a20004198026a41106a290300370300200041e0086a20004198026a41186a290300370300200020033602bc08200041003602b808200041b8086a10fd040b200041b0026a2201420037030020004198026a41106a2209420037030020004198026a41086a220342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2204290000370300200020002900c00b37039802200041c00b6a41cda6c800410b10f201200241086a22052004290000370000200220002900c00b370000200041106a20004198026a10c204200028021021072000290318210b2001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41a3a8c800410810f20120052004290000370000200220002900c00b370000200042002006200b42017c420120071b7d220b200b2006561b3e02b80820004198026a4120200041b8086a410410a3022001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41cda6c800410b10f20120052004290000370000200220002900c00b370000200020063703b80820004198026a4120200041b8086a410810a3020240200a4201520d00200041003a00d8060c010b200041a0016a41106a28020021072001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a41e0f6c800410b10f20120052004290000370000200220002900c00b370000200041b8086a20004198026a10fb044100210420002802b808220341002802fcad4920031b21010240200720002902bc08420020031b220b422088a74f0d00200041d8066a41186a2001200741286c6a220341186a290000370300200041d8066a41106a200341106a290000370300200041d8066a41086a200341086a290000370300200020032900003703d806200041b8086a200041d8066a10fe0420002802b8082103200041d00b6a200041b8086a41047241c40110c30a1a20034101460d002008410c6a210920004198056a20004198026a41086a200041d00b6a41046a41c00110c30a220341c00110c30a1a200041d8066a20004198056a41c00110c30a1a20004198026a41186a420037030020004198026a41106a4200370300200342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2205290000370300200020002900c00b37039802200041c00b6a41d5a7c800410a10f201200241086a2005290000370000200220002900c00b370000200041b8086a20004198026a10fc040240024020002d00b8084101460d00200041b0086a4200370300200041a8086a4200370300200041a0086a420037030020004200370398080c010b200041b0086a200041d1086a290000370300200041a8086a200041c9086a290000370300200041a0086a200041c1086a290000370300200020002900b908370398080b200041b0026a420037030020004198026a41106a420037030020004198026a41086a220342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2205290000370300200020002900c00b37039802200041c00b6a4188a6c800410a10f201200241086a2005290000370000200220002900c00b370000200020004198026a10c2042000290308210c20002802002103200041d00b6a4197cfca004104109201200041d00b6a419bcfca00410b2006109601200041d00b6a41a6cfca00410d200c420020031b109601200041d00b6a41b3cfca00411020004198086a412010950120004198026a200041d00b6a41d00110c30a1a200041b8086a2009200041d8066a20004198026a10ff0420002802b8084101460d0020004198026a200041b8086a41086a41800310c30a1a200041b8086a20004198026a41800310c30a1a200041d00b6a41b9b4c9004109109201200041d00b6a41f4ddca0041004184cfca004113109501200041d00b6a41c2b4c9004106200041d8096a4120109501200041d00b6a41c8b4c9004107200041980b6a4120109501200041f1066a4200370000200041e9066a4200370000200041d8066a41096a4200370000200042003700d906200041d00b6a41f4ddca004100200041d8066a4101724120109701410021030340200041d00b6a20036a41003a0000200341016a220341c801470d000b410121040b200020043a00d806200ba72203450d00200341286c450d00200110390b410021030240200a4200520d00200041d80b6a200041e1066a290000370300200041e00b6a200041e9066a290000370300200041e80b6a200041f1066a290000370300200020002900d9063703d00b20002d00d80621030b200041c1086a200041d00b6a41086a290300370000200041c9086a200041d00b6a41106a290300370000200041d1086a200041d00b6a41186a290300370000200020033a00b808200020002903d00b3700b90820004198026a41186a2201420037030020004198026a41106a2209420037030020004198026a41086a220342003703002000420037039802200041c00b6a41bffec300410410f2012003200041c00b6a41086a2204290000370300200020002900c00b37039802200041c00b6a41f7a7c800410b10f201200241086a22052004290000370000200220002900c00b37000020004198026a200041b8086a108005200041b8086a41206a200041d8066a41206a2d00003a0000200041b8086a41186a200041d8066a41186a290300370300200041b8086a41106a200041d8066a41106a290300370300200041b8086a41086a200041d8066a41086a290300370300200020002903d8063703b8082001420037030020094200370300200342003703002000420037039802200041c00b6a41bffec300410410f20120032004290000370300200020002900c00b37039802200041c00b6a4182a8c800411310f20120052004290000370000200220002900c00b37000020004198026a200041b8086a1080050b200041a00d6a24000b920204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001412010e40202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b420021032002420037021c2002410028029cde4a3602182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241e4b4c4003602382002200241286a360248200241346a41fc86ca00200241386a103b1a2002280218200228022010e7020240200228021c450d00200228021810390b0b2004450d00200110390b2000200537030820002003370300200241d0006a24000b850802167f017e23004190016b22012400200141206a4200370300200141186a22024200370300200141086a41086a420037030020014200370308200141086a4198f9c500410810f201200241e4a5c800410410f2012001412036022c2001200141086a360228200141306a200141086a412010e4020240024002400240200128023022030d00410021040c010b200128023421052001200141306a41086a280200360244200120033602402001200141c0006a10ad010240024020012802000d0020012802042206200128024422074105762202200220064b1b22024105742208417f4c0d030240024020020d00410121040c010b200810382204450d050b41002109200141003602582001200236025420012004360250024002402006450d00200141e8006a410472210a20014181016a210b200141fa006a210c200141f3006a210d4100210e0340200e41016a210e41002102034020072002460d03200a20026a2001280240220f2d00003a00002001200241016a22083602682001200f41016a3602402008210220084120470d000b2001418c016a41026a220f200d41026a2d00003a0000200141e4006a41026a2210200c41026a2d00003a00002001200a2f01003b01482001200d2f00003b018c012001200c2f00003b01642001200a41026a2d00003a004a20012802880121112001280284012112200128007d211320012801762114200128006f2115200141e0006a41026a2216200b41026a2d00003a00002001200b2f00003b0160024020092001280254470d00200141d0006a2009410110f50220012802502104200128025821090b200720086b2107200420094105746a220220012f01483b0000200241026a20012d004a3a0000200241096a200f2d00003a0000200220012f018c013b0007200241106a20102d00003a0000200220012f01643b000e200220153600032002201436000a20022013360011200241176a20162d00003a0000200220012f01603b00152002201136001c200220123600182001200941016a2209360258200e2006470d000b200128025021040b200129025421172004450d010c020b200141003602440240200128025441ffffff3f71450d00200128025010390b0b20014200370254410021042001410028029cde4a3602502001410c36024c2001200141286a3602482001200141d0006a36028c01200141fc006a41013602002001420137026c200141e4b4c4003602682001200141c8006a3602782001418c016a41fc86ca00200141e8006a103b1a2001280250200128025810e7022001280254450d00200128025010390b2005450d00200310390b0240024020040d00200042003702042000410028029cde4a3602000c010b20002017370204200020043602000b20014190016a24000f0b1034000b1030000baf0701047f23004180016b22022400200241f0006a4200370300200241e8006a22034200370300200241e0006a420037030020024200370358200241d8006a418cf9c800410710f20120034184b4c200410c10f201200241106a200241d8006a412010f501200241d8006a2002280214410020022802101b2204200010e90720022802582200200228026010a80221030240200228025c450d00200010390b4101210002400240024020030d00200241186a4198f9c500410810f201200241286a41a0f9c500410e10f201200220043602782002200241f8006a410410f301370348200241e4006a2203200241f8006a41046a3602002002200241c8006a41086a36025c2002200241f8006a3602602002200241c8006a360258200241386a200241d8006a108d01412010382200450d0120002001290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a29000037000020022000412010f3013703782003200041206a360200200220003602602002200241f8006a41086a36025c2002200241f8006a360258200241c8006a200241d8006a108d01200010392002280240220420022802506a41206a2200417f4c0d020240024020000d00410121010c010b200010382201450d020b4100210320024100360260200220013602582002200036025c02402000410f4b0d00200241d8006a41004110108101200228025c210020022802582101200228026021030b200120036a22052002290018370000200541086a200241186a41086a2900003700002002200341106a22033602600240200020036b410f4b0d00200241d8006a20034110108101200228025c210020022802582101200228026021030b200120036a22052002290028370000200541086a200241286a41086a2900003700002002200341106a2203360260200228023821050240200020036b20044f0d00200241d8006a2003200410810120022802582101200228026021030b200120036a2005200410c30a1a2002200320046a2200360260200228024821030240200228025c20006b200228025022014f0d00200241d8006a20002001108101200228026021000b2002280258220420006a2003200110c30a1a0240200228024c450d00200310390b200020016a21000240200228023c450d00200228023810390b200241086a2004200010f501200228020c2100200228020821010240200228025c450d00200410390b200141004720004100477121000b20024180016a240020000f0b1030000b1034000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42247e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141246c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141246e360200200241206a24000f0b1034000bf20202037f017e230041f0006b22032400200341086a2001200210ef082003280208210120032003280210220236021c20032001360218200341206a2001200210e40202400240200328022022040d00410021020c010b200328022421052003200341286a28020036023420032004360230200341d8006a200341306a10ba030240024020032802582202450d00200329025c21060c010b2003420037023c410021022003410028029cde4a3602382003410c36024c2003200341186a3602482003200341386a360254200341ec006a41013602002003420137025c200341e4b4c4003602582003200341c8006a360268200341d4006a41fc86ca00200341d8006a103b1a2003280238200328024010e7020240200328023c450d00200328023810390b0b2005450d00200410390b0240024020020d00200042003702042000410028029cde4a3602000c010b20002006370204200020023602000b0240200328020c450d00200110390b200341f0006a24000bc40301067f230041106b22032400024002402002280208220441046a2205417f4c0d00200228020021060240024002400240024002402005450d00200510382202450d07200341003602082003200536020420032002360200200441c000490d02200441808001490d032004418080808004490d04410021050c010b200341003602082003420137030020034100410110810120032802002102200328020821050b200220056a41033a00002003200541016a22053602080240200328020420056b41034b0d00200320054104108101200328020821050b2003280200220220056a2004360000200541046a21050c030b200220044102743a0000410121050c020b20044102744101722107410021080240200541014b0d0020034100410210810120032802002102200328020821080b200220086a20073b0000200841026a21050c010b20022004410274410272360000410421050b2003200536020802402003280204220820056b20044f0d002003200520041081012003280200210220032802042108200328020821050b200220056a2006200410c30a1a200020012002200520046a10a30202402008450d00200210390b200341106a24000f0b1034000b1030000bd80101047f230041206b2203240020032000200110ef0802400240200228020822004105744104722201417f4c0d00200228020021022003280208210420032802002105200110382206450d01200341003602182003200136021420032006360210200341106a200010d20102402000450d002000410574210003402002200341106a10ff02200241206a2102200041606a22000d000b0b2005200420032802102202200328021810a30202402003280214450d00200210390b02402003280204450d00200510390b200341206a24000f0b1034000b1030000bbc1d01257f230041a0016b220224002001280204417f6a2103200241f0006a41047221044100210502400240024002400240024003402003417f460d012001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a0000200220024189016a22062800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241fb006a2f00003b0168200241fe006a280100210720024185016a2800002108200241f0006a41206a28020021092002280077210a200228009b01210b200241e4006a41026a220420024184016a2d00003a0000200220024182016a2f01003b0164200241e0006a41026a220c2002418b016a2d00003a0000200220062f00003b01602002410c6a41026a20022d006e3a0000200220022f016c3b010c200241086a41026a20052d00003a0000200220022f01683b0108200241046a41026a20042d00003a0000200220022f01643b0104200241026a200c2d00003a0000200220022f01603b0100200241f0006a41047221044100210503402003417f460d022001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a0000200220024189016a22062800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241fb006a2f00003b0168200241fe006a280100210d20024185016a280000210e200241f0006a41206a280200210f20022800772110200228009b012111200241e4006a41026a220420024184016a2d00003a0000200220024182016a2f01003b0164200241e0006a41026a220c2002418b016a2d00003a0000200220062f00003b01602002411c6a41026a20022d006e3a0000200220022f016c3b011c200241186a41026a20052d00003a0000200220022f01683b0118200241146a41026a20042d00003a0000200220022f01643b0114200241106a41026a200c2d00003a0000200220022f01603b0110200241f0006a41047221044100210503402003417f460d032001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a0000200220024189016a22062800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241fb006a2f00003b0168200241fe006a280100211220024185016a2800002113200241f0006a41206a280200211420022800772115200228009b012116200241e4006a41026a220420024184016a2d00003a0000200220024182016a2f01003b0164200241e0006a41026a220c2002418b016a2d00003a0000200220062f00003b01602002412c6a41026a20022d006e3a0000200220022f016c3b012c200241286a41026a20052d00003a0000200220022f01683b0128200241246a41026a20042d00003a0000200220022f01643b0124200241206a41026a200c2d00003a0000200220022f01603b0120200241f0006a41047221044100210503402003417f460d042001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a0000200220024189016a22062800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241fb006a2f00003b0168200241fe006a280100211720024185016a2800002118200241f0006a41206a28020021192002280077211a200228009b01211b200241e4006a41026a220420024184016a2d00003a0000200220024182016a2f01003b0164200241e0006a41026a220c2002418b016a2d00003a0000200220062f00003b01602002413c6a41026a20022d006e3a0000200220022f016c3b013c200241386a41026a20052d00003a0000200220022f01683b0138200241346a41026a20042d00003a0000200220022f01643b0134200241306a41026a200c2d00003a0000200220022f01603b0130200241f0006a41047221044100210503402003417f460d052001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a0000200220024189016a22062800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241fb006a2f00003b0168200241fe006a280100211c20024185016a280000211d200241f0006a41206a280200211e2002280077211f200228009b012120200241e4006a41026a220420024184016a2d00003a0000200220024182016a2f01003b0164200241e0006a41026a220c2002418b016a2d00003a0000200220062f00003b0160200241cc006a41026a20022d006e3a0000200220022f016c3b014c200241c8006a41026a20052d00003a0000200220022f01683b0148200241c4006a41026a20042d00003a0000200220022f01643b0144200241c0006a41026a200c2d00003a0000200220022f01603b0140200241f0006a410472210441002105024003402003417f460d012001200336020420012001280200220641016a360200200420056a20062d00003a00002002200541016a22063602702003417f6a21032006210520064120470d000b200241e8006a41026a2205200241fd006a2d00003a00002002200241f0006a41196a22032800003602980120022002418c016a28000036009b01200220022f01743b016c200220022d00763a006e2002200241f0006a410b6a2f00003b0168200241fe006a280100210c20024185016a280000212120024190016a280200212220022800772123200228009b012124200241e4006a41026a220620024184016a2d00003a00002002200241f0006a41126a2f01003b0164200241e0006a41026a22042002418b016a2d00003a0000200220032f00003b0160200241dc006a41026a222520022d006e3a0000200220022f016c3b015c200241d8006a41026a222620052d00003a0000200220022f01683b0158200241d4006a41026a220520062d00003a0000200220022f01643b0154200241d0006a41026a220620042d00003a0000200220022f01603b0150200241f0006a200110fa05024020022d00704101460d00200041c1016a2002290071370000200041e1016a200241f0006a41216a2d00003a0000200041d9016a2003290000370000200041d1016a200241f0006a41116a290000370000200041c9016a200241f9006a290000370000200041036a2002410c6a41026a2d00003a0000200020022f010c3b0001200041086a20022f01083b00002000410a6a200241086a41026a2d00003a00002000410f6a20022f01043b0000200041116a200241046a41026a2d00003a0000200041166a20022f01003b0000200041186a200241026a2d00003a0000200041236a2002411c6a41026a2d00003a0000200041216a20022f011c3b00002000412a6a200241186a41026a2d00003a0000200041286a20022f01183b0000200041316a200241146a41026a2d00003a00002000412f6a20022f01143b0000200041386a200241106a41026a2d00003a0000200041366a20022f01103b0000200041c3006a2002412c6a41026a2d00003a0000200041c1006a20022f012c3b0000200041ca006a200241286a41026a2d00003a0000200041c8006a20022f01283b0000200041d1006a200241246a41026a2d00003a0000200041cf006a20022f01243b0000200041d8006a200241206a41026a2d00003a0000200041d6006a20022f01203b0000200041e3006a2002413c6a41026a2d00003a0000200041e1006a20022f013c3b0000200041ea006a200241386a41026a2d00003a0000200041e8006a20022f01383b0000200041f1006a200241346a41026a2d00003a0000200041ef006a20022f01343b0000200041f8006a200241306a41026a2d00003a0000200041f6006a20022f01303b000020004183016a200241cc006a41026a2d00003a000020004181016a20022f014c3b00002000418a016a200241c8006a41026a2d00003a000020004188016a20022f01483b000020004191016a200241c4006a41026a2d00003a00002000418f016a20022f01443b000020004198016a200241c0006a41026a2d00003a000020004196016a20022f01403b0000200041a3016a20252d00003a0000200041a1016a20022f015c3b0000200041aa016a20262d00003a0000200041a8016a20022f01583b0000200041b1016a20052d00003a0000200041af016a20022f01543b0000200041b8016a20062d00003a0000200041b6016a20022f01503b0000200041bd016a2022360000200041b9016a2024360000200041b2016a2021360000200041ab016a200c360000200041a4016a20233600002000419d016a201e36000020004199016a202036000020004192016a201d3600002000418b016a201c36000020004184016a201f360000200041fd006a2019360000200041f9006a201b360000200041f2006a2018360000200041eb006a2017360000200041e4006a201a360000200041dd006a2014360000200041d9006a2016360000200041d2006a2013360000200041cb006a2012360000200041c4006a20153600002000413d6a200f360000200041396a2011360000200041326a200e3600002000412b6a200d360000200041246a20103600002000411d6a2009360000200041196a200b360000200041126a20083600002000410b6a2007360000200041046a200a360000200041003a00000c070b200041013a00000c060b200041013a00000c050b200041013a00000c040b200041013a00000c030b200041013a00000c020b200041013a00000c010b200041013a00000b200241a0016a24000bd30102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad4281027e2205a721022005422088a74521040240024020010d00200341003602100c010b200341186a4101360200200320014181026c360214200320002802003602100b200320022004200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a20014181026e360200200341206a24000f0b1034000ba60201057f230041106b2202240002400240200128020822034105744104722204417f4c0d0020012802002101200410382205450d012002410036020820022004360204200220053602002002200310d2010240024020030d0020022802002106200228020821030c010b200341057421052002280208210303400240200228020420036b411f4b0d00200220034120108101200228020821030b2002280200220620036a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200341206a2203360208200141206a2101200541606a22050d000b0b200041202006200310a30202402002280204450d00200610390b200241106a24000f0b1034000b1030000b911b05027f047e037f017e0e7f230041b0096b2202240002400240024002400240410110382203450d00200341003a00004100410035029cfe4a200241b8076aad7c42adfed5e4d485fda8d8007e42218922043e029cfe4a20024198016a419cfeca00ad220542a4bb99fed1a0bbb023852206420042adfed5e4d485fda8d800420010c20a200241f8006a200442a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010c20a20024188016a200542c5ecb3fec9ecf7c2c300852207420042adfed5e4d485fda8d800420010c20a200241e8006a200442c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010c20a200241d8006a2004200585420042adfed5e4d485fda8d800420010c20a200241b8076a41f3bdca004101109c01200241fc016a200241b8076a41186a2208290000370200200241f4016a200241b8076a41106a2209290000370200200241a8016a41c4006a200241b8076a41086a220a290000370200200241a8016a41346a428180808010370200200241a8016a41286a4200370300200241a8016a41246a41d4a5c000360200200220022900b8073702e401200220033602d801200241003602c8012002200420024198016a41086a290300200229039801857c200241d8006a41086a29030020022903588542cf829ebbefefde82147c220b893703a8012002200241e8006a41086a29030020022903688520057c200b423088893703c0012002200420024188016a41086a290300200229038801857c200b422088893703b8012002200241f8006a41086a29030020022903788520057c200b421088893703b00120024188026a41186a2203420037030020024188026a41106a220c420037030020024188026a41086a220d42003703002002420037038802200241b8076a41f3bdca004101109c0120032008290000370300200c2009290000370300200d200a290000370300200220022900b80737038802200241b8076a41f3bdca004101109c01200241d0056a41186a22032008290000370300200241d0056a41106a220c2009290000370300200241d0056a41086a220d200a290000370300200220022900b8073703d00541201038220e450d00200820032903003703002009200c290300370300200a200d2903003703004100410035029cfe4a200241e8036aad7c42adfed5e4d485fda8d8007e42218922043e029cfe4a200241c8006a2006420042adfed5e4d485fda8d800420010c20a200241286a200442a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010c20a200241386a2007420042adfed5e4d485fda8d800420010c20a200241186a200442c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010c20a200241086a2004200585420042adfed5e4d485fda8d800420010c20a200241a8026a41346a4200370200200241e4026a4200370200200241f8026a41a8f9c800360200200241f0026a4108360200200241a8026a41c4006a200e360200200220022903d0053703b807200241002802ccdd4a3602d802200241013a008003200220024188026a3602fc022002200241a8016a3602f40220024199036a200829030037000020024191036a200929030037000020024189036a200a29030037000020024181036a20022903b807370000200241a8026a41286a4200370300200241a8026a41246a41d4a5c000360200200241003602a403200241003602c80220022004200241c8006a41086a2903002002290348857c200241086a41086a29030020022903088542cf829ebbefefde82147c220b893703a8022002200241186a41086a29030020022903188520057c200b423088893703c00220022004200241386a41086a2903002002290338857c200b422088893703b8022002200241286a41086a29030020022903288520057c200b421088893703b0022001280200210f2001280204211020012802082208450d03200f20084105746a221141606a2112200241b8076a410172211341002114200f2115034020142101201521090340200941086a2900002105200941106a29000021042009290000210b200241a8036a41186a2203200941186a2900002206370300200241a8036a41106a220c2004370300200241a8036a41086a220d20053703002002200b3703a803200241c8036a41186a2006370300200241c8036a41106a2004370300200241c8036a41086a20053703002002200b3703c803200241a0096a200241c8036a10b604200241b8076a20022802a009220a20022802a80910cf04024020022d00b80741014722080d00200241d0056a201341e10110c30a1a0b024020022802a409450d00200a10390b02402008450d00200141016a21012011200941206a2209470d010c060b0b200241e8036a200241d0056a41e10110c30a1a200241b8076a41186a22162003290300370300200241b8076a41106a2217200c290300370300200241b8076a41086a2218200d290300370300200220022903a8033703b807200941206a2115200141016a21144164210d02400240024003402002200241e8036a200d41b9fec3006a280000220e10ec042002280204220841046a220a417f4c0d0120022802002119024002400240200a0d00200241003602a8092002200a3602a409200241013602a0090c010b200a1038220c450d0741002103200241003602a8092002200a3602a4092002200c3602a0092008417c490d010b200241a0096a4100410410810120022802a009210c20022802a80921030b200c20036a200e3600002002200341046a220a3602a8090240024002400240200841c000490d00200841808001490d012008418080808004490d02024020022802a409220c200a470d00200241a0096a200a410110810120022802a409210c20022802a809210a0b20022802a0092203200a6a41033a00002002200a41016a220a3602a8090240200c200a6b41034b0d00200241a0096a200a410410810120022802a009210320022802a809210a0b2003200a6a2008360000200a41046a210a0c030b2008410274210c024020022802a409200a470d00200241a0096a200a410110810120022802a809210a0b20022802a0092203200a6a200c3a0000200a41016a210a0c020b2008410274410172210c024020022802a409200a6b41014b0d00200241a0096a200a410210810120022802a809210a0b20022802a0092203200a6a200c3b0000200a41026a210a0c010b2008410274410272210c024020022802a409200a6b41034b0d00200241a0096a200a410410810120022802a809210a0b20022802a0092203200a6a200c360000200a41046a210a0b2002200a3602a809024020022802a409200a6b20084f0d00200241a0096a200a200810810120022802a009210320022802a809210a0b2003200a6a2019200810c30a1a2002200a20086a220a3602a80920022802a00921082002200136029c09200241d0056a200241a8026a2008200a2002419c096a410410dd09024020022802a409450d00200810390b20022802d4052108024020022802d0054101470d000240024020082d00000e0405050005010b200841086a280200450d04200841046a28020010390c040b200841286a280200450d03200841246a28020010390c030b02402008450d0020022802d805450d00200810390b200d41046a220d450d030c000b0b1034000b20081039200041086a411a360200200041d0f9c800360204200041013602000c040b2002200136029c09200241003602a809200242013703a009200241a0096a4100412010810120022802a009220a20022802a80922016a220820022903b807370000200841086a2018290300370000200841106a2017290300370000200841186a201629030037000020022802a4092108200241d0056a200241a8026a2002419c096a4104200a200141206a10dd0902402008450d00200a10390b024020022802d0054101470d000240024020022802d40522082d00000e0405050005010b200841086a280200450d04200841046a28020010390c040b200841286a280200450d03200841246a28020010390c030b024020022802d4052208450d0020022802d805450d00200810390b20122009470d000c040b0b1030000b20081039200041086a411a360200200041d0f9c800360204200041013602000b0240201041ffffff3f71450d00200f10390b200241a8026a10ef09024020022802c801220a450d000240024020022802d4010d00200a41016a210d0c010b20022802cc01220941046a21082009200a41016a220d6a21012009280200417f7341808182847871210a034002400240200a0d000340200820014f0d04200941c07e6a21092008280200210a200841046a22032108200a41808182847871220a418081828478460d000b200a41808182847873220a417f6a200a71210c200321080c010b200a417f6a200a71210c0b200a682103200c210a2009410020034103766b41306c6a220341746a280200450d00200341706a2802001039200c210a0c000b0b20022802cc01200dad42307ea76b10390b20022802dc01450d0120022802d80110390c010b0240201041ffffff3f71450d00200f10390b200241a8026a10ef09200241b8076a200241a8016a41e00010c30a1a200241b0086a200241a0026a290300370300200241a8086a20024198026a290300370300200241a0086a20024188026a41086a290300370300200220022903880237039808200041086a200241b8076a41800110c30a1a200041003602000b200241b0096a24000be90301067f230041d0006b22022400200241086a418cf9c800410710f201200241186a4193f9c800411210f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000ba40c010a7f230041f0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003602000c010b2003280214210402400240200341186a2802002202450d00200320012d00003a004c2003410136024820024101460d00200320012d00013a004d2003410236024820024102460d00200320012d00023a004e2003410336024820024103460d00200320012d00033a004f2003410436024820024104460d00200341d0006a20012d00043a00002003410536024820024105460d00200341d1006a20012d00053a00002003410636024820024106460d00200341d2006a20012d00063a00002003410736024820024107460d00200341d3006a20012d00073a00002003410836024820024108460d00200341d4006a20012d00083a00002003410936024820024109460d00200341d5006a20012d00093a00002003410a3602482002410a460d00200341d6006a20012d000a3a00002003410b3602482002410b460d00200341d7006a20012d000b3a00002003410c3602482002410c460d00200341d8006a20012d000c3a00002003410d3602482002410d460d00200341d9006a20012d000d3a00002003410e3602482002410e460d00200341da006a20012d000e3a00002003410f3602482002410f460d00200341db006a20012d000f3a00002003411036024820024110460d00200341dc006a20012d00103a00002003411136024820024111460d00200341dd006a20012d00113a00002003411236024820024112460d00200341de006a20012d00123a00002003411336024820024113460d00200341df006a20012d00133a00002003411436024820024114460d00200341e0006a20012d00143a00002003411536024820024115460d00200341e1006a20012d00153a00002003411636024820024116460d00200341e2006a20012d00163a00002003411736024820024117460d00200341e3006a20012d00173a00002003411836024820024118460d00200341e4006a20012d00183a00002003411936024820024119460d00200341e5006a20012d00193a00002003411a3602482002411a460d00200341e6006a20012d001a3a00002003411b3602482002411b460d00200341e7006a20012d001b3a00002003411c3602482002411c460d00200341e8006a20012d001c3a00002003411d3602482002411d460d00200341e9006a20012d001d3a00002003411e3602482002411e460d00200341ea006a20012d001e3a00002003411f3602482002411f460d00200341eb006a20012d001f3a0000200341386a41026a2205200341c8006a410d6a2d00003a0000200341ec006a41026a2206200341c8006a41146a2d00003a0000200320032f014c3b0128200320032d004e3a002a2003200341d3006a2f00003b01382003200341da006a2f01003b016c200341d6006a2801002107200341dd006a2800002108200341c8006a411c6a280200210920034120360248200341c8006a41206a280200210a200328004f210b200341c4006a41026a220c200341c8006a411b6a2d00003a00002003200341e1006a2f00003b01442002417c714120460d00200020032f01283b0104200041066a20032d002a3a0000200341246a41026a220220052d00003a0000200341206a41026a220520062d00003a00002003411c6a41026a2206200c2d00003a0000200320032f01383b0124200320032f016c3b0120200320032f01443b011c2001280020210c200041076a200b360000200020032f01243b000b2000410d6a20022d00003a00002000200736000e200020032f01203b0012200041146a20052d00003a000020002008360015200020032f011c3b00192000411b6a20062d00003a0000200041246a200c360200200041206a200a3600002000411c6a2009360000410121020c010b2003420037022c410021022003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a36026c200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341ec006a41fc86ca00200341c8006a103b1a2003280228200328023010e702200328022c450d00200328022810390b200020023602002004450d00200110390b200341f0006a24000bbe0201027f230041b0026b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003a00000c010b200328021421042003200341186a28020036028c022003200136028802200341206a20034188026a10c904410121020240024020032d00204101470d002003420037029402410021022003410028029cde4a360290022003410c3602a4022003200341086a3602a002200320034190026a3602ac02200341346a410136020020034201370224200341e4b4c4003602202003200341a0026a360230200341ac026a41fc86ca00200341206a103b1a20032802900220032802980210e702200328029402450d0120032802900210390c010b200041016a200341206a41017241e10110c30a1a0b200020023a00002004450d00200110390b200341b0026a24000b9c0701067f0240200141046a2202280200200141086a220328020022046b411f4b0d00200120044120108101200328020021040b2001280200220520046a22062000290000370000200641186a200041186a290000370000200641106a200041106a290000370000200641086a200041086a2900003700002003200441206a2204360200200041206a21060240200228020020046b411f4b0d00200120044120108101200141086a2802002104200128020021050b200520046a22032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a290000370000200141086a2207200441206a2204360200200041c0006a21060240200141046a2203280200220220046b411f4b0d002001200441201081012003280200210220072802002104200128020021050b200520046a22032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a2900003700002007200441206a2204360200200041e0006a21060240200220046b411f4b0d00200120044120108101200141046a2802002102200141086a2802002104200128020021050b200520046a22032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a290000370000200141086a2203200441206a220436020020004180016a21060240200220046b411f4b0d0020012004412010810120032802002104200128020021050b200520046a22052006290000370000200541186a200641186a290000370000200541106a200641106a290000370000200541086a200641086a2900003700002003200441206a2206360200200041a0016a21050240200141046a2204280200220320066b411f4b0d0020012006412010810120042802002103200141086a28020021060b2001280200220220066a22042005290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a290000370000200141086a2204200641206a22053602000240200320056b41204b0d0020012005412110810120042802002105200128020021020b200220056a220120002900c001370000200141206a200041e0016a2d00003a0000200141186a200041d8016a290000370000200141106a200041d0016a290000370000200141086a200041c8016a2900003700002004200541216a3602000bd6990105087f017e067f027e067f23004180036b2205240002400240410810382206450d002006200120024181026c6a220736020420062001360200410810382208450d002008200320044181026c6a22093602042008200336020002400240024002402000450d00200541d0016a210a0c010b200541e8016a220b4200370300200541e0016a22024200370300200541d0016a41086a22044200370300200542003703d00120054188016a41caf8c500410f10f201200420054188016a41086a220c29000037030020052005290088013703d00120054188016a41d9f8c500410710f201200b200c2900003703002002200529008801370300200541d0016a210a200541d0016a412010a802450d010b20054190026a200610f90802400240200528029002450d0020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a29030037030020054188016a41186a20054190026a41186a29030037030020054188016a41206a20054190026a41206a280200360200200541d0016a41106a20054194016a290200370300200541d0016a41186a2005419c016a290200370300200541d0016a41206a200541a4016a2902003703002005200529039002370388012005200529028c013703d80120054188016a200610fa08417f200528028801220241016a220420042002491bad42287e220d422088a70d05200da72204417f4c0d0520041038220e450d04200e4201370320200e200541d0016a41086a2202290300370300200e41186a200241186a290300370300200e41106a200241106a290300370300200e41086a200241086a290300370300200541013602b8012005200e3602b0012005200441286e22043602b40120054190026a200610f90802402005280290020d004101210f200610390c020b200541d0016a41086a210220054188016a410472210c4128210f4101210b034020054188016a41206a20054190026a41206a28020036020020054188016a41186a20054190026a41186a29030037030020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a2903003703002005200529039002370388012002200c290200370200200241086a2210200c41086a290200370200200241106a2211200c41106a290200370200200241186a2212200c41186a2902003702000240200b2004470d0020054188016a200610fa08200541b0016a2004417f200528028801220e41016a22132013200e491b10b50120052802b001210e0b200e200f6a220420022903003703002010290300210d2011290300211420122903002115200441206a4201370300200441186a2015370300200441106a2014370300200441086a200d3703002005200b41016a22103602b80120054190026a200610f9080240200528029002450d00200f41286a210f20052802b40121042010210b0c010b0b200b41016a210f20052802b401210420052802b001210e200610390c010b200610394100210f41002802fcad49210e410021040b200541e8016a220c4200370300200541e0016a22024200370300200541d0016a41086a4200370300200542003703d00120054188016a41caf8c500410f10f201200a41086a20054188016a41086a220b290000370000200a20052900880137000020054188016a41d9f8c500410710f201200c200b290000370300200220052900880137030020054188016a200a412010a202024002402005280288014101460d002005200f3602d801200520043602d4012005200e3602d00120054190026a200541d0016a41004100200510fb080c010b200a412010fd01200529028c01210d2005200f3602d801200520043602d4012005200e3602d00120054190026a200541d0016a200da74101200d422088a710fb080b0240024020052d0090024108470d00200541e8016a220c4200370300200541e0016a220b4200370300200541d0016a41086a220f4200370300200542003703d00120054188016a41caf8c500410f10f201200a41086a221020054188016a41086a2204290000370000200a20052900880137000020054188016a41a890c600410c10f201200241086a221120042900003700002002200529008801370000200541d8006a200a10c204200528025821122005290360210d200c4200370300200b4200370300200f4200370300200542003703d00120054188016a41caf8c500410f10f20120102004290000370000200a20052900880137000020054188016a41a890c600410c10f2012011200429000037000020022005290088013700002005200d42017c420120121b220d37038801200a412020054188016a410810a3020c010b200541e8016a4200370300200541e0016a4200370300200541d0016a41086a4200370300200542003703d00120054188016a41caf8c500410f10f201200a41086a20054188016a41086a2204290000370000200a20052900880137000020054188016a41a890c600410c10f201200241086a20042900003700002002200529008801370000200541e8006a200a10c2042005290370420020052802681b210d0b4101210f0c010b200b42003703002002420037030020044200370300200542003703d00120054188016a41caf8c500410f10f2012004200c29000037030020052005290088013703d00120054188016a41a890c600410c10f201200241086a200c2900003700002002200529008801370000200541f8006a200541d0016a10c204200529038001420020052802781b210d4100210f0b200541a8026a22024200370300200541a0026a2216420037030020054190026a41086a22044200370300200542003703900220054188016a418cf9c800410710f201200420054188016a41086a29000037030020052005290088013703900220054180026a4184b4c200410c10f201200220054180026a41086a2900003703002016200529008002370300200541d0006a20054190026a412010f501200528025421042005280250210c200541d0016a200d10df0820052802d801210b20052802d0012102200520044100200c1b360288012002200b20054188016a410410a302024020052802d401450d00200210390b200810390240200f0d00200610390b41081038220e450d00200e2007360204200e2001360200410810382213450d00201320093602042013200336020020054190026a200e10fc0802400240200528029002450d0020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a29030037030020054188016a41186a20054190026a41186a29030037030020054188016a41206a20054190026a41206a280200360200200541d0016a41106a20054194016a290200370300200541d0016a41186a2005419c016a290200370300200541d0016a41206a200541a4016a2902003703002005200529039002370388012005200529028c013703d80120054188016a200e10fa08417f200528028801220241016a220420042002491bad42287e220d422088a70d03200da72204417f4c0d03200410382208450d02200842013703202008200541d0016a41086a2202290300370300200841186a200241186a290300370300200841106a200241106a290300370300200841086a200241086a290300370300200541013602b801200520083602b0012005200441286e22103602b40120054190026a200e10fc0802402005280290020d0041012117200e10390c020b200541d0016a41086a210220054188016a410472210c4128210f4101210b034020054188016a41206a20054190026a41206a28020036020020054188016a41186a20054190026a41186a29030037030020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a2903003703002005200529039002370388012002200c290200370200200241086a2211200c41086a290200370200200241106a2212200c41106a290200370200200241186a2206200c41186a2902003702000240200b2010470d0020054188016a200e10fa08200541b0016a2010417f200528028801220441016a220a200a2004491b10b50120052802b00121080b2008200f6a220420022903003703002011290300210d2012290300211420062903002115200441206a4201370300200441186a2015370300200441106a2014370300200441086a200d3703002005200b41016a22043602b80120054190026a200e10fc080240200528029002450d00200f41286a210f20052802b40121102004210b0c010b0b200b41016a211720052802b401211020052802b0012108200e10390c010b200e10394100211041002802fcad492108410021170b20054190026a201310fc0802400240200528029002450d0020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a29030037030020054188016a41186a20054190026a41186a29030037030020054188016a41206a20054190026a41206a280200360200200541d0016a41106a20054194016a290200370300200541d0016a41186a2005419c016a290200370300200541d0016a41206a200541a4016a2902003703002005200529039002370388012005200529028c013703d80120054188016a201310fa08417f200528028801220241016a220420042002491bad42287e220d422088a70d03200da72204417f4c0d0320041038220a450d02200a4201370320200a200541d0016a41086a2202290300370300200a41186a200241186a290300370300200a41106a200241106a290300370300200a41086a200241086a290300370300200541013602b8012005200a3602b0012005200441286e22113602b40120054190026a201310fc0802402005280290020d0041012118201310390c020b200541d0016a41086a210220054188016a410472210c4128210f4101210b034020054188016a41206a20054190026a41206a28020036020020054188016a41186a20054190026a41186a29030037030020054188016a41106a20054190026a41106a29030037030020054188016a41086a20054190026a41086a2903003703002005200529039002370388012002200c290200370200200241086a2212200c41086a290200370200200241106a2206200c41106a290200370200200241186a220e200c41186a2902003702000240200b2011470d0020054188016a201310fa08200541b0016a2011417f200528028801220441016a220a200a2004491b10b50120052802b001210a0b200a200f6a220420022903003703002012290300210d20062903002114200e2903002115200441206a4201370300200441186a2015370300200441106a2014370300200441086a200d3703002005200b41016a22043602b80120054190026a201310fc080240200528029002450d00200f41286a210f20052802b40121112004210b0c010b0b200b41016a211820052802b401211120052802b001210a201310390c010b201310394100211141002802fcad49210a410021180b200541a0016a220c420037030020054198016a2212420037030020054188016a41086a22024200370300200542003703880120054180026a41bffec300410410f201200220054180026a41086a220429000037030020052005290080023703880120054180026a4188a6c800410a10f201200c20042903003703002012200529038002370300200541c0006a20054188016a10c204024002400240024002402005290348420020052802401b221442017c220d2014540d00200c42003703002012420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a4188a6c800410a10f201201241086a220b200429030037000020122005290380023700002005200d3703d00120054188016a4120200541d0016a410810a302200c42003703002012420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a41e0f6c800410b10f201200b20042903003700002012200529038002370000201741286c4104722202417f4c0d06200210382204450d05200541003602d801200520023602d401200520043602d001200541d0016a201710d20120082017200541d0016a10d00120054188016a412020052802d001220220052802d80110a302024020052802d401450d00200210390b02402010450d00201041286c450d00200810390b200d42017c2214200d540d0120054188016a41186a420037030020054188016a41106a420037030020054188016a41086a22024200370300200542003703880120054180026a41bffec300410410f201200220054180026a41086a220429000037030020052005290080023703880120054180026a41f7a6c800410e10f201201241086a20042903003700002012200529038002370000200541d0016a20054188016a10fc040240024020052d00d0014101460d00200541b0016a41186a4200370300200541b0016a41106a4200370300200541b0016a41086a4200370300200542003703b0010c010b200541b0016a41186a200541e9016a290000370300200541b0016a41106a200541e1016a290000370300200541b0016a41086a200541d9016a290000370300200520052900d1013703b0010b200541a0016a220c420037030020054198016a220b420037030020054188016a41086a22024200370300200542003703880120054180026a41bffec300410410f201200220054180026a41086a220429000037030020052005290080023703880120054180026a41ada6c800410c10f201201241086a220f20042903003700002012200529038002370000200541386a20054188016a412010f501200528023c211020052802382106200c4200370300200b420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a41ada6c800410c10f201200f20042903003700002012200529038002370000200541003602d00120054188016a4120200541d0016a410410a302417f2010410020061b220e41016a22022002200e491b410d744128722202417f4c0d06200210382206450d05200620052903b00137000020062014370020200641086a200541b0016a41086a290300370000200641106a200541b0016a41106a290300370000200641186a200541b0016a41186a290300370000200520023602e402200520063602e00241282108200541283602e80241002104410028029cde4a211741002102024003402004200e2004200e4b1b211002400240034002402002450d00200c200b470d02200f41ffffff3f71450d00200210390b024020102004460d0020054180026a200410ea0220054188016a200528028002220c200528028802220b1098080240024020052802880122020d004200210d201721020c010b200c200b10fd01200529028c01210d0b0240200528028402450d00200c10390b200441016a21042002200d422088a74105746a210b200da7210f2002210c0c010b0b200541d0016a20062008109c01024020052802e402450d00200610390b20054188016a41186a220b420037030020054188016a41106a220f420037030020054188016a41086a22044200370300200542003703880120054180026a41bffec300410410f201200420054180026a41086a220c29000037030020052005290080023703880120054180026a41f7a6c800410e10f201201241086a2210200c2903003700002012200529038002370000412010382202450d09200220052900d001370000200241186a200541d0016a41186a290000370000200241106a200541d0016a41106a290000370000200241086a200541d0016a41086a29000037000020054188016a41202002412010a3022002103920054190026a41186a200541b0016a41186a29030037030020054190026a41106a200541b0016a41106a29030037030020054190026a41086a200541b0016a41086a290300370300200520052903b00137039002200b4200370300200f420037030020044200370300200542003703880120054180026a41bffec300410410f2012004200c29000037030020052005290080023703880120054180026a41d5a7c800410a10f2012010200c2903003700002012200529038002370000412010382202450d092002200529039002370000200241186a20054190026a41186a290300370000200241106a20054190026a41106a290300370000200241086a20054190026a41086a29030037000020054188016a41202002412010a3022002103920054188016a41186a420037030020054188016a41106a420037030020054188016a41086a22024200370300200542003703880120054180026a41bffec300410410f201200220054180026a41086a220429000037030020052005290080023703880120054180026a41e0f7c800410f10f201201241086a20042903003700002012200529038002370000201841286c4104722202417f4c0d0a200210382204450d09200541003602d801200520023602d401200520043602d001200541d0016a201810d201200a2018200541d0016a10d00120054188016a412020052802d001220220052802d80110a302024020052802d401450d00200210390b20054190026a41186a220b420037030020054190026a41106a220f420037030020054190026a41086a220c4200370300200542003703900220054188016a41bffec300410410f201200c20054188016a41086a220229000037030020052005290088013703900220054180026a41cba7c800410a10f201201641086a221020054180026a41086a22042900003700002016200529008002370000200541d0016a20054190026a412010a202200541d0016a41086a280200210620052802d001210e20054188016a41186a2208420037030020054188016a41106a2213420037030020024200370300200542003703880120054180026a41b9fec300410610f2012002200429000037030020052005290080023703880120054180026a41b0eec900410610f201201241086a221920042903003700002012200529038002370000200541306a20054188016a412010f5012005280234211a2005280230211b200b4200370300200f4200370300200c4200370300200542003703900220054188016a41bffec300410410f201200c200229000037030020052005290088013703900220054180026a41cba7c800410a10f20120102004290000370000201620052900800237000041081038220c450d09200c201a4100201b1b360004200c20064100200e4101461b36000020054190026a4120200c410810a302200c1039200842003703002013420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a41f7a6c800410e10f201201920042903003700002012200529038002370000200541d0016a20054188016a10fc0420052d00d0014101460d01200541a8026a4200370300200541a0026a420037030020054198026a420037030020054200370390020c030b20054190026a41186a200c41186a221029000037030020054190026a41106a200c41106a221329000037030020054190026a41086a200c41086a22192900003703002005200c290000370390022019290000210d20132900002114200c2900002115200541d0016a41186a22132010290000370300200541d0016a41106a22102014370300200541d0016a41086a2219200d370300200520153703d00120054188016a41186a221a201329030037030020054188016a41106a2213201029030037030020054188016a41086a221b2019290300370300200520052903d00137038801024020052802e40220086b411f4b0d00200541e0026a2008412010810120052802e002210620052802e80221080b200c41206a210c200620086a2210200529038801370000201041186a201a290300370000201041106a2013290300370000201041086a201b2903003700002005200841206a22083602e8020c010b0b200541a8026a200541e9016a290000370300200541a0026a200541e1016a29000037030020054198026a200541d9016a290000370300200520052900d101370390020b200541dc016a2018360200200541d0016a41086a2011360200200541d0016a41106a200529039002370300200541d0016a41186a20054190026a41086a290300370300200541d0016a41206a20054190026a41106a290300370300200541f8016a20054190026a41186a2903003703002005200a3602d401200541003602d001200541d0016a10fd0420054188016a41186a220c420037030020054188016a41106a220b420037030020054188016a41086a22024200370300200542003703880120054180026a41bffec300410410f201200220054180026a41086a220429000037030020052005290080023703880120054180026a41e8a5c800410f10f201201241086a220f20042903003700002012200529038002370000200541d0016a20054188016a10d606024020052d00e00122104103460d0020052903d001210d20052903d8012114200c4200370300200b420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a41a2a6c800410b10f201200f2004290300370000201220052903800237000020054188016a200d20142010109d080b200c4200370300200b420037030020024200370300200542003703880120054180026a41bffec300410410f2012002200429000037030020052005290080023703880120054180026a41dfa7c800411810f201200f20042900003700002012200529008002370000200541203602bc02200520054188016a3602b802200541c0026a20054188016a412010e4020240024020052802c00222040d00410321020c010b20052802c402210c2005200541c0026a41086a2802003602dc02200520043602d802200541d0016a200541d8026a10930441042102024020052d00e001220b4103460d0020054180026a41086a200541d0016a41086a290300370300200520052903d00137038002200520052800e1013602d0022005200541e4016a2800003600d302200b21020b0240024020024104470d00200542003702e402200520173602e0022005410c3602f4022005200541b8026a3602f0022005200541e0026a3602fc02200541e4016a4101360200200542013702d401200541e4b4c4003602d0012005200541f0026a3602e001200541fc026a41fc86ca00200541d0016a103b1a20052802e00220052802e80210e702024020052802e402450d0020052802e00210390b410321020c010b200520052802d0023602d001200520052800d3023600d301200529038802210d20052903800221140b0240200c450d00200410390b024020024103470d00410321020c010b20054188016a412010fd010b200520052800d3013600e302200520052802d0013602e002024020024103460d0020054188016a41186a420037030020054188016a41106a420037030020054188016a41086a22044200370300200542003703880120054180026a41bffec300410410f201200420054180026a41086a220c29000037030020052005290080023703880120054180026a41e8a5c800410f10f201201241086a200c290300370000201220052903800237000020054188016a2014200d2002109d08200541ec016a20052800e302360000200541d0016a41186a20023a0000200541d0016a41106a200d370300200541d0016a41086a2014370300200520052802e0023600e901200541023602d001200541d0016a10fd040b41081038220e450d05200e2007360204200e2001360200410810382208450d05200820093602042008200336020020054190026a41186a220c420037030020054190026a41106a220b420037030020054190026a41086a22024200370300200542003703900220054188016a41b9fec300410610f201200220054188016a41086a220429000037030020052005290088013703900220054180026a41b0eec900410610f201201641086a220f20054180026a41086a22102900003700002016200529008002370000200541286a20054190026a412010f501200528022c21112005280228211220054180026a41eb97c200411710f201200541206a20054180026a411010f501200528022021062005280224210a200c4200370300200b420037030020024200370300200542003703900220054188016a4198f9c500410810f2012002200429000037030020052005290088013703900220054180026a419aa7c800410e10f201200f201029000037000020162005290080023700004100210b2005200a410176413220061b2011410020121b6a3602d00120054190026a4120200541d0016a410410a30220054188016a200e10fd0802400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a2004290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200e10fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0820024105742204417f4c0d0820041038220a450d07200a20054190026a4101722202290000370000200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a2900003700004101210b200541013602b8012005200a3602b0012005200441057622103602b40120054188016a200e10fd080240200528028801450d00200541d0016a410472210420054190026a41017221024120210f4101210b0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2211200441086a290000370000200241106a2212200441106a290000370000200241186a2206200441186a2900003700000240200b2010470d00200541d0016a200e10fa08200541b0016a2010417f20052802d001220c41016a220a200a200c491b10f50220052802b001210a0b200a200f6a220c2002290000370000200c41186a2006290000370000200c41106a2012290000370000200c41086a20112900003700002005200b41016a220b3602b80120054188016a200e10fd08200f41206a210f20052802b40121102005280288010d000b0b200e10390c010b200e1039410021102017210a0b200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a4198f9c500410810f201200220054188016a41086a29000037030020052005290088013703900220054180026a41e4a5c800410410f201201641086a20054180026a41086a2900003700002016200529008002370000200b4105744104722202417f4c0d06200210382204450d05200541003602d801200520023602d401200520043602d001200541d0016a200b10d20102400240200b0d0020052802d001210f20052802d80121040c010b200b410574210b20052802d8012104200a21020340024020052802d40120046b411f4b0d00200541d0016a2004412010810120052802d80121040b20052802d001220f20046a220c2002290000370000200c41086a200241086a290000370000200c41106a200241106a290000370000200c41186a200241186a2900003700002005200441206a22043602d801200241206a2102200b41606a220b0d000b0b20054190026a4120200f200410a302024020052802d401450d00200f10390b0240201041ffffff3f71450d00200a10390b2008103941081038220e450d05200e2007360204200e200136020041081038220a450d05200a2009360204200a200336020020054190026a41186a420037030020054190026a41106a420037030020054190026a41086a22024200370300200542003703900220054188016a418cf9c800410710f201200220054188016a41086a220429000037030020052005290088013703900220054180026a4184b4c200410c10f201201641086a20054180026a41086a2900003700002016200529008002370000200541186a20054190026a412010f501200528021c21182005280218211920054188016a200e10fe0802400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a2004290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541d0016a410c6a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200e10fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0820024105742204417f4c0d08200410382208450d07200820054190026a4101722202290000370000200841186a200241186a290000370000200841106a200241106a290000370000200841086a200241086a2900003700004101210b200541013602b801200520083602b0012005200441057622113602b40120054188016a200e10fe080240200528028801450d00200541d0016a410472210420054190026a41017221024120210f4101210b0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2210200441086a290000370000200241106a2212200441106a290000370000200241186a2206200441186a2900003700000240200b2011470d00200541d0016a200e10fa08200541b0016a2011417f20052802d001220c41016a22082008200c491b10f50220052802b00121080b2008200f6a220c2002290000370000200c41186a2006290000370000200c41106a2012290000370000200c41086a20102900003700002005200b41016a220b3602b80120054188016a200e10fe08200f41206a210f20052802b40121112005280288010d000b0b200e10390c010b200e103920172108410021114100210b0b20054188016a200a10fe0802400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200a10fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0820024105742204417f4c0d08200410382213450d07201320054190026a4101722202290000370000201341186a200241186a290000370000201341106a200241106a290000370000201341086a200241086a2900003700004101210f200541013602b801200520133602b00120052004410576220c3602b40120054188016a200a10fe080240200528028801450d00200541d0016a410472210420054190026a4101722102412021104101210f0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2212200441086a290000370000200241106a2206200441106a290000370000200241186a220e200441186a2900003700000240200f200c470d00200541d0016a200a10fa08200541b0016a200c417f20052802d001221341016a221a201a2013491b10f50220052802b00121130b201320106a220c2002290000370000200c41186a200e290000370000200c41106a2006290000370000200c41086a20122900003700002005200f41016a220f3602b80120054188016a200a10fe08201041206a211020052802b401210c2005280288010d000b0b200a10390c010b200a10394100210c201721134100210f0b024002402018410020191b22100d002005200b360290012005201136028c0120052008360288012005200f3602d8012005200c3602d401200520133602d001410020054188016a200541d0016a10ff080c010b200541e8016a22024200370300200541e0016a22044200370300200541d0016a41086a22124200370300200542003703d00120054180026a41a98aca00410b10f201201220054180026a41086a220629000037030020052005290080023703d00120054180026a41d48cca00411610f20120022006290300370300200420052903800237030020054188016a200541d0016a109b0802400240024020052802880122020d00200542003702940241002106200541002802ccdd4a360290020c010b200529028c01210d20052002360290022005200d37029402200d422088a72212200da72206470d010b20054190026a2006108208200528029002210220052802980221120b20022012411c6c6a220220103602182002201336020c2002200b3602082002201136020420022008360200200241146a200f360200200241106a200c3602002005200528029802220f41016a2202360298020240200528029002220c0d00200541e8016a4200370300200541d0016a41106a4200370300200541d0016a41086a22024200370300200542003703d00120054180026a41a98aca00410b10f201200220054180026a41086a220c29000037030020052005290080023703d00120054180026a41d48cca00411610f201200441086a200c2903003700002004200529038002370000200541d0016a412010fd010c010b200528029402210b200541e8016a4200370300200541d0016a41106a4200370300200541d0016a41086a22104200370300200542003703d00120054180026a41a98aca00410b10f201201020054180026a41086a221129000037030020052005290080023703d00120054180026a41d48cca00411610f201200441086a201129030037000020042005290380023700002002411c6c41046a2204417f4c0d070240024020040d00410121100c010b200410382210450d070b20054100360290012005200436028c01200520103602880120054188016a200210d201200c200220054188016a10d301200541d0016a4120200528028801220420052802900110a3020240200528028c01450d00200410390b02402002450d00200f411c6c411c6a2104200c210203400240200241046a28020041ffffff3f71450d00200228020010390b0240200241106a28020041ffffff3f71450d002002410c6a28020010390b2002411c6a2102200441646a22040d000b0b200b450d00200b411c6c450d00200c10390b41081038220e450d05200e2007360204200e2001360200410810382208450d05200820093602042008200336020020054188016a200e108009200528028801450d02200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200e10fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0620024105742204417f4c0d0620041038220a450d05200a20054190026a4101722202290000370000200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a2900003700004101210b200541013602b8012005200a3602b0012005200441057622103602b40120054188016a200e1080090240200528028801450d00200541d0016a410472210420054190026a41017221024120210f4101210b0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2211200441086a290000370000200241106a2212200441106a290000370000200241186a2206200441186a2900003700000240200b2010470d00200541d0016a200e10fa08200541b0016a2010417f20052802d001220c41016a220a200a200c491b10f50220052802b001210a0b200a200f6a220c2002290000370000200c41186a2006290000370000200c41106a2012290000370000200c41086a20112900003700002005200b41016a220b3602b80120054188016a200e108009200f41206a210f20052802b40121102005280288010d000b0b200e1039200a0d03200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a41f2e5c300410f10f201200220054188016a41086a29000037030020052005290088013703900220054180026a41a4e8c300411410f201201641086a20054180026a41086a290000370000201620052900800237000020054190026a412010fd010c040b41ece0c20041c90041b8e1c2001065000b41ece0c20041c90041c8e1c2001065000b200e10394100210b410021102017210a0b200541e8016a22024200370300200541e0016a22044200370300200541d0016a41086a220c4200370300200542003703d00120054188016a41f2e5c300410f10f201200c20054188016a41086a29000037030020052005290088013703d00120054180026a41a4e8c300411410f201200220054180026a41086a2900003703002004200529008002370300200b4105744104722202417f4c0d02200210382204450d0120054100360290012005200236028c01200520043602880120054188016a200b10d20102400240200b0d00200528028801210f20052802900121040c010b200b410574210b2005280290012104200a210203400240200528028c0120046b411f4b0d0020054188016a2004412010810120052802900121040b200528028801220f20046a220c2002290000370000200c41086a200241086a290000370000200c41106a200241106a290000370000200c41186a200241186a2900003700002005200441206a220436029001200241206a2102200b41606a220b0d000b0b200541d0016a4120200f200410a3020240200528028c01450d00200f10390b201041ffffff3f71450d00200a10390b20081039410810382206450d00200620073602042006200136020041081038220e450d00200e2009360204200e2003360200024002402000450d0020054188016a200610810902400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200610fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0520024105742204417f4c0d0520041038220a450d04200a20054190026a4101722202290000370000200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a2900003700004101210b200541013602b8012005200a3602b00120052004410576220c3602b40120054188016a20061081090240200528028801450d00200541d0016a410472210420054190026a41017221024120210f4101210b0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2210200441086a290000370000200241106a2211200441106a290000370000200241186a2212200441186a2900003700000240200b200c470d00200541d0016a200610fa08200541b0016a200c417f20052802d001220a41016a22082008200a491b10f50220052802b001210a0b200a200f6a220c2002290000370000200c41186a2012290000370000200c41106a2011290000370000200c41086a20102900003700002005200b41016a220b3602b80120054188016a2006108109200f41206a210f20052802b401210c2005280288010d000b0b200610390c010b200610394100210b4100210c2017210a0b2005200b3602d8012005200a3602d0012005200c3602d401200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a4190ffc300411210f201200220054188016a41086a29000037030020052005290088013703900220054180026a41e4a5c800410410f201201641086a20054180026a41086a290000370000201620052900800237000020054190026a200541d0016a109f080240200c41ffffff3f71450d00200a10390b20054188016a200e10810902400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a28020036020020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a29020037000020052005290388013703d001200520052902d40137009102200541d0016a200e10fa08417f20052802d001220241016a220420042002491b220241ffffff3f712002470d0520024105742204417f4c0d05200410382206450d04200620054190026a4101722202290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700004101210b200541013602b801200520063602b00120052004410576220c3602b40120054188016a200e1081090240200528028801450d00200541d0016a410472210420054190026a41017221024120210f4101210b0340200541d0016a41206a20054188016a41206a280200360200200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2210200441086a290000370000200241106a2211200441106a290000370000200241186a2212200441186a2900003700000240200b200c470d00200541d0016a200e10fa08200541b0016a200c417f20052802d001220641016a220a200a2006491b10f50220052802b00121060b2006200f6a220c2002290000370000200c41186a2012290000370000200c41106a2011290000370000200c41086a20102900003700002005200b41016a220b3602b80120054188016a200e108109200f41206a210f20052802b401210c2005280288010d000b0b200e10390c010b200e10394100210b4100210c201721060b2005200b3602d801200520063602d0012005200c3602d401200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a4190ffc300411210f201200220054188016a41086a29000037030020052005290088013703900220054180026a4192a6c800410810f201201641086a20054180026a41086a290000370000201620052900800237000020054190026a200541d0016a109f08200c41ffffff3f71450d01200610390c010b200e1039200610390b41081038220a450d00200a2007360204200a2001360200410810382208450d002008200936020420082003360200024002402000450d0020054188016a200a10820902400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a29030037030020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a290200370000200541b1026a200541f4016a2d00003a000020052005290388013703d001200520052902d40137009102200541d0016a200a10fa08417f20052802d001220241016a220420042002491bad42217e220d422088a70d05200da72204417f4c0d05200410382213450d04201320054190026a4101722202290000370000201341206a200241206a2d00003a0000201341186a200241186a290000370000201341106a200241106a290000370000201341086a200241086a2900003700004101210b200541013602b801200520133602b0012005200441216e22113602b40120054188016a200a1082090240200528028801450d00200541d0016a410472210420054190026a41017221024121210f4101210b0340200541d0016a41206a20054188016a41206a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2210200441086a290000370000200241106a2212200441106a290000370000200241186a2206200441186a290000370000200241206a220e200441206a2d00003a00000240200b2011470d00200541d0016a200a10fa08200541b0016a2011417f20052802d001220c41016a22132013200c491b10990820052802b00121130b2013200f6a220c2002290000370000200c41206a200e2d00003a0000200c41186a2006290000370000200c41106a2012290000370000200c41086a20102900003700002005200b41016a220b3602b80120054188016a200a108209200f41216a210f20052802b40121112005280288010d000b0b200a10390c010b200a10394100210b41002111201721130b20054188016a200810820902400240200528028801450d00200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41206a20054188016a41206a29030037030020054199026a200541dc016a290200370000200541a1026a200541e4016a290200370000200541a9026a200541ec016a290200370000200541b1026a200541f4016a2d00003a000020052005290388013703d001200520052902d40137009102200541d0016a200810fa08417f20052802d001220241016a220420042002491bad42217e220d422088a70d05200da72204417f4c0d05200410382201450d04200120054190026a4101722202290000370000200141206a200241206a2d00003a0000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700004101210f200541013602b801200520013602b0012005200441216e220c3602b40120054188016a20081082090240200528028801450d00200541d0016a410472210420054190026a4101722102412121104101210f0340200541d0016a41206a20054188016a41206a290300370300200541d0016a41186a20054188016a41186a290300370300200541d0016a41106a20054188016a41106a290300370300200541d0016a41086a20054188016a41086a29030037030020052005290388013703d00120022004290000370000200241086a2212200441086a290000370000200241106a2206200441106a290000370000200241186a220e200441186a290000370000200241206a220a200441206a2d00003a00000240200f200c470d00200541d0016a200810fa08200541b0016a200c417f20052802d001220141016a220320032001491b10990820052802b00121010b200120106a220c2002290000370000200c41206a200a2d00003a0000200c41186a200e290000370000200c41106a2006290000370000200c41086a20122900003700002005200f41016a220f3602b80120054188016a2008108209201041216a211020052802b401210c2005280288010d000b0b200810390c010b200810394100210f4100210c201721010b200520113602e402200520133602e0022005200b3602e8022005200f3602b8012005200c3602b401200520013602b001200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a4190e1c800410510f201200220054188016a41086a29000037030020052005290088013703900220054180026a41e0f6c800410b10f201201641086a20054180026a41086a2900003700002016200529008002370000200541d0016a20054190026a10e20620052802d0012202201720021b2112410021100240200b20052902d401420020021b220d422088a7470d00200b41216c41216e2202200b200b20024b1b41016a2102201221042013210b03402002417f6a22024521102002450d01200b2004412110c60a210f200441216a2104200b41216a210b200f450d000b0b0240200da72202450d00200241216c450d00201210390b024020100d0020054190026a41186a2204420037030020054190026a41106a220b420037030020054190026a41086a22024200370300200542003703900220054188016a4190e1c800410510f201200220054188016a41086a220f29000037030020052005290088013703900220054180026a41e0f6c800410b10f201201641086a221020054180026a41086a2211290000370000201620052900800237000020054190026a200541e0026a109c0820044200370300200b420037030020024200370300200542003703900220054188016a4190e1c800410510f2012002200f29000037030020052005290088013703900220054180026a4198f7c800410e10f201201020112900003700002016200529008002370000200541086a20054190026a10c204200528020821122005290310210d20044200370300200b420037030020024200370300200542003703900220054188016a4190e1c800410510f2012002200f29000037030020052005290088013703900220054180026a4198f7c800410e10f2012010201129000037000020162005290080023700002005200d42017c420120121b220d3703d00120054190026a4120200541d0016a410810a302200541d0016a41186a200541e0026a41086a280200360200200541d0016a41106a20052903e002370300200541d0016a41086a200d370300200541003a00d00120054190026a200541d0016a108d0820054188016a410b6a2002280200360000200520052903900237008b010240200541e4016a2802002212450d00201241216c450d0020052802e00110390b200541dc016a2005418f016a290000370000200541c28a95b2043600d101200541023a00d00120052005290088013700d501200541d0016a10810520044200370300200b420037030020024200370300200542003703900220054188016a4190e1c800410510f2012002200f29000037030020052005290088013703900220054180026a41e0f7c800410f10f20120102011290000370000201620052900800237000020054190026a200541b0016a109c08200c450d02200c41216c450d02200110390c020b200541a8026a4200370300200541a0026a420037030020054190026a41086a22024200370300200542003703900220054188016a4190e1c800410510f201200220054188016a41086a29000037030020052005290088013703900220054180026a41e0f7c800410f10f201201641086a20054180026a41086a290000370000201620052900800237000020054190026a200541b0016a109c080240200c450d00200c41216c450d00200110390b2011450d01201141216c450d01201310390c010b20081039200a10390b20054180036a24000f0b1030000b1034000bf40f03077f017e147f230041e0026b22012400200141286a4200370300200141206a22024200370300200141106a41086a420037030020014200370310200141106a41edfec300410a10f201200241f7a5c800410610f201200141203602342001200141106a360230200141386a200141106a412010e4020240024002400240200128023822030d00410021040c010b200128023c21052001200141386a41086a28020036024c20012003360248200141086a200141c8006a10ad010240024020012802080d00200128020c2206200128024c220741c4006e2202200220064b1bad42c4007e2208422088a70d032008a72202417f4c0d030240024020020d00410421040c010b200210382204450d050b4100210920014100360258200120043602502001200241c4006e36025402402006450d00200141b8026a410472210a200141b8026a410172210b20014198026a41046a210c200141d5026a210d200141ca026a210e200141c3026a210f410021100240024003402007450d012007417f6a21110240024002400240200128024822122d00000e020001050b20114104490d0420012007417b6a36024c2001201241056a36024820122800012113410021140c010b41002102034020112002460d02200a20026a201220026a221341016a2d00003a00002001200241016a22143602b8022001201341026a3602482014210220144120470d000b20012014417f7320076a36024c200c41026a200d41026a2d00003a0000200c200d2f00003b000020014190026a41026a2215200f41026a2d00003a0000200120012800d1022202360298022001200a2f01003b0194022001200a41026a2d00003a0096022001200f2f00003b01900220012800bf02211320012801c602211620012800cd02211720012802d80221182001418c026a41026a2219200e41026a2d00003a000020012002360284022001200e2f00003b018c022001200128009b023600870220112014460d032001200720146b417e6a36024c2001201220146a220241026a3602484100211a02400240200241016a2d00000e020100050b200141b8026a200141c8006a10800220012d00b8024101460d0420014198026a41186a200b41186a29000037030020014198026a41106a200b41106a29000037030020014198026a41086a200b41086a2900003703002001200b290000370398024101211a0b200141d0016a41186a20014198026a41186a290300370300200141d0016a41106a20014198026a41106a290300370300200141d0016a41086a20014198026a41086a29030037030020014180026a41026a20012d0096023a000020012001290398023703d001200120012f0194023b018002200120012f0190023b01fc01200120152d00003a00fe01200141f8016a41026a20192d00003a0000200120012f018c023b01f80120012001280087023600f30120012001280284023602f001410121140b201041016a2110200141c8016a41026a220220012d00fe013a0000200141cc016a41026a221220014180026a41026a2d00003a0000200141c4016a41026a2211200141f8016a41026a2d00003a000020014198016a41186a2207200141d0016a41186a29030037030020014198016a41106a2215200141d0016a41106a29030037030020014198016a41086a2219200141d0016a41086a290300370300200120012f0180023b01cc01200120012f01fc013b01c801200120012f01f8013b01c401200120012802f0013602bc01200120012800f3013600bf01200120012903d0013703980120014194016a41026a221b20122d00003a000020014190016a41026a221220022d00003a00002001418c016a41026a221c20112d00003a0000200120012f01cc013b019401200120012f01c8013b019001200120012f01c4013b018c01200120012800bf0136008701200120012802bc0136028401200141e0006a41186a22112007290300370300200141e0006a41106a22072015290300370300200141e0006a41086a221520192903003703002001200129039801370360024020092001280254470d00200141d0006a200910e00320012802502104200128025821090b2004200941c4006c6a220220143a0000200241036a201b2d00003a0000200220012f0194013b00012002410a6a20122d00003a0000200220012f0190013b0008200220133600042002201636000b20022017360012200241116a201c2d00003a0000200220012f018c013b000f200241196a20012800870136000020022001280284013600162002201a3a00212002201836001d200220012903603700222002413a6a2011290300370000200241326a20072903003700002002412a6a20152903003700002001200128025841016a220936025820102006460d03200128024c21070c010b0b2001410036024c0b024020012802542202450d00200241c4006c450d00200128025010390b0c020b200128025021040b2001290254210820040d010b2001420037029c02410021042001410028029cde4a360298022001410c3602d4012001200141306a3602d001200120014198026a36029801200141cc026a4101360200200142013702bc02200141e4b4c4003602b8022001200141d0016a3602c80220014198016a41fc86ca00200141b8026a103b1a20012802980220012802a00210e702200128029c02450d0020012802980210390b2005450d00200310390b0240024020040d0020004200370204200041002802ccdd4a3602000c010b20002008370204200020043602000b200141e0026a24000f0b1034000b1030000b940701057f23004180016b22012400200141d8006a41186a4200370300200141d8006a41106a22024200370300200141d8006a41086a420037030020014200370358200141d8006a418cf9c800410710f20120024184b4c200410c10f201200141106a200141d8006a412010f5012001280214210220012802102103200141186a4198f9c500410810f201200141286a41a0f9c500410e10f20120012002410020031b3602782001200141f8006a410410f301370348200141d8006a410c6a2203200141f8006a41046a3602002001200141c8006a41086a36025c2001200141f8006a3602602001200141c8006a360258200141386a200141d8006a108d0102400240412010382202450d0020022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a29000037000020012002412010f3013703782003200241206a360200200120023602602001200141f8006a41086a36025c2001200141f8006a360258200141c8006a200141d8006a108d01200210392001280240220420012802506a41206a2202417f4c0d010240024020020d00410121000c010b200210382200450d010b4100210320014100360260200120003602582001200236025c02402002410f4b0d00200141d8006a41004110108101200128025c210220012802582100200128026021030b200020036a22052001290018370000200541086a200141186a41086a2900003700002001200341106a22033602600240200220036b410f4b0d00200141d8006a20034110108101200128025c210220012802582100200128026021030b200020036a22052001290028370000200541086a200141286a41086a2900003700002001200341106a2203360260200128023821050240200220036b20044f0d00200141d8006a2003200410810120012802582100200128026021030b200020036a2005200410c30a1a2001200320046a2202360260200128024821040240200128025c20026b200128025022034f0d00200141d8006a20022003108101200128026021020b2001280258220020026a2004200310c30a1a2001200220036a22023602600240200128024c450d00200410390b0240200128023c450d00200128023810390b200141086a2000200210f5012001200128020c41016a410120012802081b36022820002002200141286a410410a3020240200128025c450d00200010390b20014180016a24000f0b1030000b1034000b130020004102360204200041dca5c2003602000b34002000418cf9c80036020420004100360200200041146a4107360200200041106a41b8aec200360200200041086a42073702000b02000b2b01017f02404104103822020d001030000b20002002360200200241003a000020004284808080103702040b2b01017f02404101103822020d001030000b20002002360200200241003a000020004281808080103702040b2c01017f02404104103822020d001030000b200020023602002002410036000020004284808080c0003702040b130020004101360204200041c4bac2003602000b3400200041edfec30036020420004100360200200041146a4103360200200041106a41c4bbc200360200200041086a420a3702000b8d0401037f4111210241b0e6c80021034100210402400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff0171417f6a0e17160102030405060708090a0b0c0d0e0f10111213141500160b41d8eac8002103411621040c150b4119210241cce6c8002103410121040c140b411b210241f0e6c8002103410221040c130b411821024194e7c8002103410321040c120b410f210241b4e7c8002103410421040c110b41cce7c8002103410521040c100b4108210241e8e2ca002103410621040c0f0b4114210241f0e7c8002103410721040c0e0b410d2102418ce8c8002103410821040c0d0b410b210241a4e8c8002103410921040c0c0b4116210241b8e8c8002103410a21040c0b0b410d210241d8e8c8002103410b21040c0a0b410c210441f0e8c8002103410c21020c090b410b21024184e9c8002103410d21040c080b411021024198e9c8002103410e21040c070b4110210241b0e9c8002103410f21040c060b410c210241c8e9c8002103411021040c050b410f210241dce9c8002103411121040c040b4112210441f4e9c8002103411221020c030b411221024190eac8002103411321040c020b4110210241aceac8002103411421040c010b410c210241c4eac8002103411521040b20004183363b0100200041086a2002360200200041046a2003360200200041026a20043a00000b980a05017f017e037f017e037f230041b0036b22022400200220013602040240024002400240024002400240200129030022034201560d0002402003a70e020002000b200042013703000c030b200241086a2003104c200228020c2104200228020821012002280210210520024105360290032002200120054103746a36029c01200220013602980120022004360294012002200136029001200220024190036a3602a4012002200241046a3602a001200241086a20024190016a10ce030240024020022d00084102460d0041800110382204450d052004200241086a41800110c30a210120024281808080103702a403200220013602a00320024190026a41106a20024190016a41106a29030037030020024190026a41086a20024190016a41086a290300370300200220022903900137039002200241086a20024190026a10ce03024020022d00084102460d0041800121054102210141012106034002402001417f6a2006470d00200241a0036a2006410110de0420022802a00321040b200420056a200241086a41800110c30a1a200220013602a803200241086a20024190026a10ce0320022d00084102460d0120054180016a2105200141016a210120022802a40321060c000b0b024020022802940241ffffffff0171450d0020022802900210390b20022902a40321030c010b41002802fcad4921044200210320022802940141ffffffff0171450d0020022802900110390b20022802900322014105460d012002419c036a280200210520022902940321070240200342ffffff0f83500d00200410390b2000200136020420004101360200200041106a2005360200200041086a20073702000c020b200241086a200141086a420010cf03200241086a41086a2d00002101200228020c21052002280208210420024190026a200241116a41ff0010c30a1a024020044101460d000240200141ff01714102470d0020004101360204200041013602000c030b200041086a20013a0000200041096a20024190026a41ff0010c30a1a200041003602000c020b20002005360204200020022900900237000920004101360200200041086a20013a0000200041106a20024197026a2800003600000c010b200220043602900320022003370294034102210802402003422088a722014102490d0020024190026a410172210920024190016a410172210a0340200141077420046a41807f6a22062d00002105200241086a200641016a41ff0010c30a1a20054102460d04200220053a009001200a200241086a41ff0010c30a1a20022001417e6a220136029803200420014107746a22062d00002105200241086a200641016a41ff0010c30a1a20054102460d05200220053a0090022009200241086a41ff0010c30a1a200241086a20024190016a20024190026a10b10402402001200228029403470d0020024190036a2001410110de04200228029003210420022802980321010b200420014107746a200241086a41800110c30a1a2002200141016a220136029803200141014b0d000b0b02402001450d0020042d00002108200241086a200441016a41ff0010c30a1a0b20024190026a200241086a41ff0010c30a1a024020022802940341ffffff0f71450d00200410390b02400240200841ff01714102470d0041012101200041013602040c010b200041086a20083a0000200041096a20024190026a41ff0010c30a1a410021010b200020013602000b200241b0036a24000f0b1030000b41b7bfc200410341bcbfc2001065000b41b7bfc200410341ccbfc2001065000bd60101027f230041206b220324000240200120026a22022001490d00200041046a280200220441017422012002200120024b1b22014104200141044b1b220141ffffff0f712001464103742102200141077421010240024020040d00200341003602100c010b200341106a41086a410836020020032004410774360214200320002802003602100b200320012002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410776360200200341206a24000f0b1034000ba20401037f41a8d0c20021024111210341002104024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff0171417f6a0e18170102030405060708090a0b0c0d0e0f1011121314151600170b41d0d5c200210241192103411721040c160b41c4d0c2002102411c2103410121040c150b41e8d0c200210241192103410221040c140b418cd1c200210241182103410321040c130b41acd1c200210241142103410421040c120b41c8d1c200210241202103410521040c110b41f0d1c2002102410d2103410621040c100b4188d2c200210241132103410721040c0f0b41c4bdc400210241102103410821040c0e0b41acd2c200210241142103410921040c0d0b41c8d2c2002102410f2103410a21040c0c0b41e0d2c2002102411b2103410b21040c0b0b4184d3c200210241172103410c21040c0a0b41a4d3c2002102410d21040c090b41c0d3c200210241132103410e21040c080b41dcd3c2002102410e2103410f21040c070b41f4d3c2002102411021040c060b4190d4c2002102411a2103411121040c050b41b4d4c2002102410d2103411221040c040b41ccd4c200210241202103411321040c030b41f4d4c200210241152103411421040c020b4194d5c200210241182103411521040c010b41b4d5c200210241132103411621040b20004183203b0100200041086a2003360200200041046a2002360200200041026a20043a00000b980901097f024002400240024002400240024002400240024020002802000e09000102030405060708090b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41003a00002002200041016a3602000f0b200041086a21030240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41013a00002002200041016a360200200320011090030f0b200041c0006a2103200041086a21040240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41023a00002002200041016a36020020042001109003200320011090030f0b200041f8006a2103200041c0006a2104200041086a21050240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41033a00002002200041016a3602002005200110900320042001109003200320011090030f0b200041b0016a2103200041f8006a2104200041c0006a2105200041086a21060240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41043a00002002200041016a360200200620011090032005200110900320042001109003200320011090030f0b200041e8016a2103200041b0016a2104200041f8006a2105200041c0006a2106200041086a21070240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41053a00002002200041016a36020020072001109003200620011090032005200110900320042001109003200320011090030f0b200041a0026a2103200041e8016a2104200041b0016a2105200041f8006a2106200041c0006a2107200041086a21080240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41063a00002002200041016a3602002008200110900320072001109003200620011090032005200110900320042001109003200320011090030f0b200041d8026a2103200041a0026a2104200041e8016a2105200041b0016a2106200041f8006a2107200041c0006a2108200041086a21090240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41073a00002002200041016a360200200920011090032008200110900320072001109003200620011090032005200110900320042001109003200320011090030f0b20004190036a2103200041d8026a2104200041a0026a2105200041e8016a2106200041b0016a2107200041f8006a2108200041c0006a2109200041086a210a0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41083a00002002200041016a360200200a2001109003200920011090032008200110900320072001109003200620011090032005200110900320042001109003200320011090030b0ba70a02057f017e23004190136b22022400024002400240024002400240024002400240024002400240024020012d00000e0b0102030405060a07080900010b200141046a2802002103200241086a200141086a41c80310c30a1a200241b00b6a200341e00710c30a1a200241d0036a200241b00b6a10e10441e00710382201450d0b2001200241d0036a41e00710c30a2101200041086a200241086a41c80310c30a1a2000410a3a0000200041046a2001360200200310390c0a0b200241d8036a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310e204210120022802b80b220620022802bc0b20066b4198046d10e30441002802fcad49410010e3042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041003a00000c090b200241d8036a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310e204210120022802b80b220620022802bc0b20066b4198046d10e30441002802fcad49410010e3042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041013a00000c080b200241d8036a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310e204210120022802b80b220620022802bc0b20066b4198046d10e30441002802fcad49410010e3042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041023a00000c070b200041033a0000200041106a200141106a290300370300200041046a200141046a2902003702002000410c6a2001410c6a2802003602000c060b2000410c6a2001410c6a280200360200200041046a200141046a290200370200200041106a200141106a41c80310c30a1a200041043a00000c050b2000410c6a2001410c6a280200360200200041046a200141046a290200370200200041206a200141206a41c80310c30a1a200041053a0000200041186a200141186a280200360200200041106a200141106a2902003702000c040b200041073a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c030b200041083a0000200041046a200141046a2802003602000c020b200041093a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c010b200141086a290300210720012d00012103200241b00b6a200141106a41d00710c30a1a200241940b6a200241b00b6a41c8076a280200360200200220022903f01237028c0b024020022802b00b4125460d00200241b00b6a10e4040b200020033a0001200041106a4125360200200041086a2007370300200041146a200241d0036a41c80710c30a1a200041063a00000b20024190136a24000f0b1030000b8e0705097f027e017f017e0b7f230041e01e6b220224000240024020002802082203200028020c2204460d0020024188086a41046a2105200241d40b6a41046a2106200241e8036a21072002411c6a210803402000200322094198046a22033602082002200941980410c30a22092d0000220a4108460d02200929039004210b200929038804210c2009280218210d2009290310210e20092d0001210f200941bc046a200841cc0310c30a1a20094198046a41186a2210200741186a29030037030020094198046a41106a2211200741106a29030037030020094198046a41086a2212200741086a29030037030020092007290300370398042009280204211320092802082114200928020c2115200941d40b6a200841cc0310c30a1a410021160240024002400240024002400240024002400240200a0e080901020304050600090b2013201541e0076c22166a21170240024020160d00201321162013210a0c010b2013210a02400340200a2d0000410b460d0120094180176a200a41e00710c30a1a200941a00f6a20094180176a10e104200a200941a00f6a41e00710c30a1a200a41e0076a2218210a201641a0786a22160d000b201721162018210a0c010b200a41e0076a21160b200a20136b41e0076d2118024020172016460d002013201541e0076c6a210a0340201610ef04200a201641e0076a2216470d000b0b20094188086a200941bc046a41cc0310c30a1a20094180176a41186a201029030037030020094180176a41106a201129030037030020094180176a41086a2012290300370300200920092903980437038017410721160c070b20094188086a200841bc0310c30a1a410121160c050b2005200641c80310c30a1a410221160c040b410321160c030b2005200641c80310c30a1a410421160c020b2005200641c80310c30a1a410521160c010b20094188086a200841c40310c30a1a410621160b201521180b20142117201321190b2001200d3602182001200e3703102001201836010c20012017360108200120193601042001200f3a0001200120163a00002001411c6a20094188086a41cc0310c30a1a2001200b370390042001200c3703880420014180046a20094180176a41186a290300370300200141f8036a20094180176a41106a290300370300200141f0036a20094180176a41086a29030037030020012009290380173703e80320014198046a210120032004470d000b0b200241083a00000b200241e01e6a240020010bf00801037f02402001450d00200020014198046c6a21020340200022034198046a21000240024002400240024002400240024020032d00000e0707000102030405060b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410390b200341106a10af010c060b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410390b200341206a10af010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0520014198046c450d05200328021010390c050b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410390b0240200341186a2802002204450d00200341106a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b200341146a2802002201450d04200141f8036c450d04200328021010390c040b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410390b200341206a10af010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0320014198046c450d03200328021010390c030b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410390b200341206a10af010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0220014198046c450d02200328021010390c020b200341186a10af0102402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110ac01200141f8036a2101200441887c6a22040d000b0b200341086a2802002201450d01200141f8036c450d01200328020410390c010b200341106a10ac0102402003410c6a2802002204450d00200341046a2802002101200441e0076c21040340200110a601200141e0076a2101200441a0786a22040d000b0b200341086a2802002201450d00200141e0076c450d00200328020410390b20002002470d000b0b0b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010e404200228020010390f0b2000410c6a220228020010e404200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010e404200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010e404200228020010390f0b200041106a220228020010e404200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010e404200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010e404200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220228020010f709200228020010390f0b200041286a220228020010e404200228020010390f0b0ba22402047f017e200141046a21020340024020002d00002203410a460d000240024002400240024002400240024002400240024002400240024020030e0a000102030405060708090a0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41003a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0903402003200110e70420034198046a2103200041e87b6a22000d000c0a0b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41013a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0803402003200110e70420034198046a2103200041e87b6a22000d000c090b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41023a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0703402003200110e70420034198046a2103200041e87b6a22000d000c080b0b200041106a21050240200141046a2202280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41033a00002004200341016a360200200520011091030240200228020020042802002203470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602002000280204210320012000410c6a280200220010d201200041f8036c2200450d0603402003200110e604200341f8036a2103200041887c6a22000d000c070b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200041106a2105200128020020036a41043a00002004200341016a3602002000280204210320012000410c6a280200220010d2010240200041f8036c2200450d0003402003200110e604200341f8036a2103200041887c6a22000d000b0b2005200110e0040f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200041206a2105200128020020036a41053a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b2005200110e004200028021021032001200041186a280200220010d20120004198046c2200450d0403402003200110e80420034198046a2103200041e87b6a22000d000c050b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41063a00002004200341016a22033602000240024002400240024020002d00010e0400010203000b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c030b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a22033602000c020b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000c010b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a22033602000b200029030821060240200228020020036b41074b0d00200120034108108101200141086a28020021030b200128020020036a2006370000200141086a200341086a360200200041d0076a280200200041d8076a280200200110d6010f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41073a00002004200341016a220336020002400240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b02400240024002402000280208220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020821050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b024002400240200028020c220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41083a00002004200341016a22033602000240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41093a00002004200341016a220336020002400240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b02400240024002402000280208220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020821050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b200028020c220441c000490d01200441808001490d022004418080808004490d03024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000b0f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b200041086a210502402002280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a410a3a00002004200341016a3602002005200110e004200028020421000c000b0bbf0801047f230041106b22022400024002400240024002400240024002400240024002400240024020002802000e0c000102030405060708090a0b0c0b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41003a00002003200041016a3602000c0b0b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41013a00002003200041016a3602000c0a0b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41023a00002003200041016a3602000c090b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41033a00002003200041016a3602000c080b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41043a00002004200341016a36020020002802042000410c6a280200200110d6010c070b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41053a00002004200341016a36020020002802042000410c6a280200200110d6010c060b200041086a21040240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41063a00002003200041016a3602002004200110e0040c050b200041086a21040240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41073a00002003200041016a3602002004200110e0040c040b200041106a21050240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41083a00002004200341016a36020020002802042000410c6a280200200110d60120022005360208200241086a20011092030c030b200041106a21050240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41093a00002004200341016a36020020002802042000410c6a280200200110d6012005200110ef050c020b200041d0036a2104200041086a21050240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a410a3a00002003200041016a3602002005200110e0042002200436020c2002410c6a20011092030c010b200041d0036a2104200041086a21050240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a410b3a00002003200041016a3602002005200110e0042004200110ef050b200241106a24000bb20c02047f017e02400240024002400240024002400240024020002d00000e080001020304050607000b0240200141046a280200200141086a22002802002202470d00200120024101108101200028020021020b200128020020026a41003a00002000200241016a3602000f0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041106a2104200128020020026a41013a00002003200241016a3602002000280204210220012000410c6a280200220010d2010240200041f8036c2200450d0003402002200110e604200241f8036a2102200041887c6a22000d000b0b2004200110e0040f0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41023a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0503402002200110e80420024198046a2102200041e87b6a22000d000c060b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41033a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b200028021021022001200041186a280200220010d201200041f8036c450d04200041f8036c210003402002200110e604200241f8036a2102200041887c6a22000d000c050b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41043a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0303402002200110e80420024198046a2102200041e87b6a22000d000c040b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41053a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0203402002200110e80420024198046a2102200041e87b6a22000d000c030b0b200041186a2104200041106a21050240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41063a00002003200241016a360200200520011091032004200110e0042000280204210220012000410c6a280200220010d201200041f8036c2200450d0103402002200110e604200241f8036a2102200041887c6a22000d000c020b0b200041106a21040240200141046a2205280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41073a00002003200241016a3602002004200110e604200029038804210602402005280200200328020022026b41074b0d00200120024108108101200141086a28020021020b200128020020026a2006370000200141086a2203200241086a220236020020002903900421060240200141046a220428020020026b41074b0d00200120024108108101200328020021020b200128020020026a20063700002003200241086a220236020020002d00012103024020042802002002470d00200120024101108101200141086a28020021020b200128020020026a20033a0000200141086a200241016a3602002000280204210220012000410c6a280200220010d201200041e0076c2200450d0003402002200110e504200241e0076a2102200041a0786a22000d000b0b0bb20c02047f017e02400240024002400240024002400240024020002d00000e080001020304050607000b0240200141046a280200200141086a22002802002202470d00200120024101108101200028020021020b200128020020026a41003a00002000200241016a3602000f0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041106a2104200128020020026a41013a00002003200241016a3602002000280204210220012000410c6a280200220010d2010240200041f8036c2200450d0003402002200110e604200241f8036a2102200041887c6a22000d000b0b2004200110e0040f0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41023a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0503402002200110e80420024198046a2102200041e87b6a22000d000c060b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41033a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b200028021021022001200041186a280200220010d201200041f8036c450d04200041f8036c210003402002200110e604200241f8036a2102200041887c6a22000d000c050b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41043a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0303402002200110e80420024198046a2102200041e87b6a22000d000c040b0b0240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200041206a2104200128020020026a41053a00002003200241016a3602002000280204210220012000410c6a280200220310d2010240200341f8036c2203450d0003402002200110e604200241f8036a2102200341887c6a22030d000b0b2004200110e004200028021021022001200041186a280200220010d20120004198046c2200450d0203402002200110e80420024198046a2102200041e87b6a22000d000c030b0b200041186a2104200041106a21050240200141046a280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41063a00002003200241016a360200200520011091032004200110e0042000280204210220012000410c6a280200220010d201200041f8036c2200450d0103402002200110e604200241f8036a2102200041887c6a22000d000c020b0b200041106a21040240200141046a2205280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41073a00002003200241016a3602002004200110e604200029038804210602402005280200200328020022026b41074b0d00200120024108108101200141086a28020021020b200128020020026a2006370000200141086a2203200241086a220236020020002903900421060240200141046a220428020020026b41074b0d00200120024108108101200328020021020b200128020020026a20063700002003200241086a220236020020002d00012103024020042802002002470d00200120024101108101200141086a28020021020b200128020020026a20033a0000200141086a200241016a3602002000280204210220012000410c6a280200220010d201200041e8036c2200450d0003402002200110e904200241e8036a2102200041987c6a22000d000b0b0b9d2402047f017e200141046a21020340024020002d00002203410a460d000240024002400240024002400240024002400240024002400240024020030e0a000102030405060708090a0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41003a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0903402003200110e80420034198046a2103200041e87b6a22000d000c0a0b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41013a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0803402003200110e80420034198046a2103200041e87b6a22000d000c090b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41023a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010d20120004198046c2200450d0703402003200110e80420034198046a2103200041e87b6a22000d000c080b0b200041106a21050240200141046a2202280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41033a00002004200341016a360200200520011091030240200228020020042802002203470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602002000280204210320012000410c6a280200220010d201200041f8036c2200450d0603402003200110e604200341f8036a2103200041887c6a22000d000c070b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200041106a2105200128020020036a41043a00002004200341016a3602002000280204210320012000410c6a280200220010d2010240200041f8036c2200450d0003402003200110e604200341f8036a2103200041887c6a22000d000b0b2005200110e0040f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200041206a2105200128020020036a41053a00002004200341016a3602002000280204210320012000410c6a280200220410d2010240200441f8036c2204450d0003402003200110e604200341f8036a2103200441887c6a22040d000b0b2005200110e004200028021021032001200041186a280200220010d20120004198046c2200450d0403402003200110e80420034198046a2103200041e87b6a22000d000c050b0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41063a00002004200341016a22033602000240024002400240024020002d00010e0400010203000b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c030b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a22033602000c020b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000c010b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a22033602000b200029031821060240200228020020036b41074b0d00200120034108108101200141086a28020021030b200128020020036a2006370000200141086a200341086a36020020002802042000410c6a280200200110d6010f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41073a00002004200341016a220336020002400240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b02400240024002402000280208220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020821050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b024002400240200028020c220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41083a00002004200341016a22033602000240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41093a00002004200341016a220336020002400240024002402000280204220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020421050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b02400240024002402000280208220441c000490d00200441808001490d012004418080808004490d02024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020821050240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20053600002004200341046a22033602000c030b20044102742104024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20043a0000200141086a200341016a22033602000c020b200441027441017221040240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20043b0000200141086a200341026a22033602000c010b200441027441027221040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a200341046a22033602000b200028020c220441c000490d01200441808001490d022004418080808004490d03024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2204200341016a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200428020021030b200128020020036a20003600002004200341046a3602000b0f0b20044102742100024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a20003a0000200141086a200341016a3602000f0b200441027441017221000240200228020020036b41014b0d00200120034102108101200141086a28020021030b200128020020036a20003b0000200141086a200341026a3602000f0b200441027441027221000240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b200041086a210502402002280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a410a3a00002004200341016a3602002005200110e004200028020421000c000b0b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000be40c010b7f230041e0006b220224002002200141206a41e7e485f30610ec0420022802042103200228020021044100210520024100360230024002402003450d00200220042d00003a00342002410136023020034101460d00200220042d00013a00352002410236023020034102460d00200220042d00023a00362002410336023020034103460d00200220042d00033a00372002410436023020034104460d00200241386a20042d00043a00002002410536023020034105460d00200241396a20042d00053a00002002410636023020034106460d002002413a6a20042d00063a00002002410736023020034107460d002002413b6a20042d00073a00002002410836023020034108460d002002413c6a20042d00083a00002002410936023020034109460d002002413d6a20042d00093a00002002410a3602302003410a460d002002413e6a20042d000a3a00002002410b3602302003410b460d002002413f6a20042d000b3a00002002410c3602302003410c460d00200241c0006a20042d000c3a00002002410d3602302003410d460d00200241c1006a20042d000d3a00002002410e3602302003410e460d00200241c2006a20042d000e3a00002002410f3602302003410f460d00200241c3006a20042d000f3a00002002411036023020034110460d00200241c4006a20042d00103a00002002411136023020034111460d00200241c5006a20042d00113a00002002411236023020034112460d00200241c6006a20042d00123a00002002411336023020034113460d00200241c7006a20042d00133a00002002411436023020034114460d00200241c8006a20042d00143a00002002411536023020034115460d00200241c9006a20042d00153a00002002411636023020034116460d00200241ca006a20042d00163a00002002411736023020034117460d00200241cb006a20042d00173a00002002411836023020034118460d00200241cc006a20042d00183a00002002411936023020034119460d00200241cd006a20042d00193a00002002411a3602302003411a460d00200241ce006a20042d001a3a00002002411b3602302003411b460d00200241cf006a20042d001b3a00002002411c3602302003411c460d00200241d0006a20042d001c3a00002002411d3602302003411d460d00200241d1006a20042d001d3a00002002411e3602302003411e460d00200241d2006a20042d001e3a00002002411f3602302003411f460d00200241d3006a20042d001f3a0000200241203602302002200241c9006a22062800003602582002200241cc006a28000036005b200220022f01343b012c200220022d00363a002e2002413e6a2801002107200241c5006a2800002108200241306a41206a280200210320022800372105200228005b2104200241286a41026a22092002413d6a2d00003a000020022002413b6a2f00003b0128200241246a41026a220a200241c4006a2d00003a00002002200241c2006a2f01003b0124200241206a41026a220b200241cb006a2d00003a0000200220062f00003b0120200241306a41026a220620022d002e3a0000200220022f012c3b0130200241d8006a41026a220c20092d00003a0000200220022f01283b01582002411c6a41026a2209200a2d00003a0000200220022f01243b011c200241186a41026a220a200b2d00003a0000200220022f01203b0118200241146a41026a20062d00003a0000200220022f01303b0114200241106a41026a200c2d00003a0000200220022f01583b01102002410c6a41026a20092d00003a0000200220022f011c3b010c200241086a41026a200a2d00003a0000200220022f01183b01080c010b200241146a41026a41003a0000200241106a41026a41003a00002002410c6a41026a41003a0000200241086a41026a41003a0000200241003b0114200241003b0110200241003b010c200241003b0108410021034100210441002108410021070b20002001360200200020022f01143b0004200041066a200241146a41026a2d00003a0000200041076a20053600002000410b6a20022f01103b00002000410d6a200241106a41026a2d00003a00002000410e6a2007360000200041126a20022f010c3b0000200041146a2002410c6a41026a2d00003a0000200041156a2008360000200041196a20022f01083b00002000411b6a200241086a41026a2d00003a0000200041206a20033600002000411c6a2004360000200241e0006a24000be70101027f4100210341f4ddca0021040240024002400240024002400240200241e0ea91cb064a0d00200241f0c2c98b06460d01200241e2c289ab06460d05200241e2ca95b306470d06200141c0016a2104412121030c060b0240200241e0e69df3064a0d00200241e1ea91cb06460d03200241e7e485f306470d0641202103200121040c060b200241e1e69df306460d01200241e9dabdf306470d05200141c0006a21040c030b200141e0006a21040c020b20014180016a21040c010b200141a0016a21040b412021030c010b41202103200141206a21040b20002003360204200020043602000be40c010b7f230041e0006b220224002002200141206a41e9dabdf30610ec0420022802042103200228020021044100210520024100360230024002402003450d00200220042d00003a00342002410136023020034101460d00200220042d00013a00352002410236023020034102460d00200220042d00023a00362002410336023020034103460d00200220042d00033a00372002410436023020034104460d00200241386a20042d00043a00002002410536023020034105460d00200241396a20042d00053a00002002410636023020034106460d002002413a6a20042d00063a00002002410736023020034107460d002002413b6a20042d00073a00002002410836023020034108460d002002413c6a20042d00083a00002002410936023020034109460d002002413d6a20042d00093a00002002410a3602302003410a460d002002413e6a20042d000a3a00002002410b3602302003410b460d002002413f6a20042d000b3a00002002410c3602302003410c460d00200241c0006a20042d000c3a00002002410d3602302003410d460d00200241c1006a20042d000d3a00002002410e3602302003410e460d00200241c2006a20042d000e3a00002002410f3602302003410f460d00200241c3006a20042d000f3a00002002411036023020034110460d00200241c4006a20042d00103a00002002411136023020034111460d00200241c5006a20042d00113a00002002411236023020034112460d00200241c6006a20042d00123a00002002411336023020034113460d00200241c7006a20042d00133a00002002411436023020034114460d00200241c8006a20042d00143a00002002411536023020034115460d00200241c9006a20042d00153a00002002411636023020034116460d00200241ca006a20042d00163a00002002411736023020034117460d00200241cb006a20042d00173a00002002411836023020034118460d00200241cc006a20042d00183a00002002411936023020034119460d00200241cd006a20042d00193a00002002411a3602302003411a460d00200241ce006a20042d001a3a00002002411b3602302003411b460d00200241cf006a20042d001b3a00002002411c3602302003411c460d00200241d0006a20042d001c3a00002002411d3602302003411d460d00200241d1006a20042d001d3a00002002411e3602302003411e460d00200241d2006a20042d001e3a00002002411f3602302003411f460d00200241d3006a20042d001f3a0000200241203602302002200241c9006a22062800003602582002200241cc006a28000036005b200220022f01343b012c200220022d00363a002e2002413e6a2801002107200241c5006a2800002108200241306a41206a280200210320022800372105200228005b2104200241286a41026a22092002413d6a2d00003a000020022002413b6a2f00003b0128200241246a41026a220a200241c4006a2d00003a00002002200241c2006a2f01003b0124200241206a41026a220b200241cb006a2d00003a0000200220062f00003b0120200241306a41026a220620022d002e3a0000200220022f012c3b0130200241d8006a41026a220c20092d00003a0000200220022f01283b01582002411c6a41026a2209200a2d00003a0000200220022f01243b011c200241186a41026a220a200b2d00003a0000200220022f01203b0118200241146a41026a20062d00003a0000200220022f01303b0114200241106a41026a200c2d00003a0000200220022f01583b01102002410c6a41026a20092d00003a0000200220022f011c3b010c200241086a41026a200a2d00003a0000200220022f01183b01080c010b200241146a41026a41003a0000200241106a41026a41003a00002002410c6a41026a41003a0000200241086a41026a41003a0000200241003b0114200241003b0110200241003b010c200241003b0108410021034100210441002108410021070b20002001360200200020022f01143b0004200041066a200241146a41026a2d00003a0000200041076a20053600002000410b6a20022f01103b00002000410d6a200241106a41026a2d00003a00002000410e6a2007360000200041126a20022f010c3b0000200041146a2002410c6a41026a2d00003a0000200041156a2008360000200041196a20022f01083b00002000411b6a200241086a41026a2d00003a0000200041206a20033600002000411c6a2004360000200241e0006a24000bdf0601047f024020002d0000220220012d0000460d0041000f0b4101210302400240024002400240024002400240024002402002417f6a0e09010203040506070900090b20024109460d0741010f0b4101210320024101470d07200041046a280200200141046a280200460f0b4101210320024102470d060240200041246a2802002202200141246a280200460d0041000f0b024020024101470d000240200041306a2802002202200141306a280200460d0041000f0b41002103200041286a280200200141286a280200200210c60a0d070b200041016a200141016a412010c60a450f0b4101210320024103470d050240200041046a2802002202200141046a280200460d0041000f0b024020024101470d000240200041106a2802002202200141106a280200460d0041000f0b41002103200041086a280200200141086a280200200210c60a0d060b200041186a290300200141186a290300510f0b4101210320024104470d040240200041186a2802002202200141186a280200460d0041000f0b024020024101470d000240200041246a2802002202200141246a280200460d0041000f0b410021032000411c6a2802002001411c6a280200200210c60a0d050b200041016a200141016a411410c60a450f0b4101210320024105470d0320002d000120012d0001460f0b4101210320024106470d02200041086a290300200141086a29030085200041106a290300200141106a2903008584500f0b4101210320024107470d01410021032000410c6a28020022022001410c6a280200470d01200041046a280200200141046a280200200210c60a450f0b0240200041046a2802002202200141046a280200460d0041000f0b0240024002402002417f6a0e020100020b200041086a280200200141086a280200460d0141000f0b0240200041106a2802002202200141106a280200460d0041000f0b200041086a280200200141086a280200200210c60a450d0041000f0b41002103200041146a2802002202200141146a280200470d002001411c6a2802002104200141186a28020021012000411c6a2802002105200041186a28020021004101210302400240024002402002417f6a0e0400010203040b20002001460f0b20002001462005200446710f0b20002001462005200446710f0b200020014620052004467121030b20030b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210f0040b0f0b200041086a10af01200041046a220228020010ef04200228020010390b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010f004200228020010390f0b2000410c6a220228020010f004200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010f004200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010f004200228020010390f0b200041106a220228020010f004200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010f004200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010f004200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220228020010ef04200228020010390f0b200041286a220228020010f004200228020010390f0b0b150020002002ad4220862001ad84200310044101460b150020002002ad4220862001ad842003100a4101460bc30a03017f017e0f7f230041306b2203240002402001200210062204422088a72202450d002002417f6a210502400240024002402004a722012d00000e020001040b200341003602082005450d0320012d0001210520034101360208200320053a000c20024102470d010c030b2005450d02410121064100210702400240024020012d00010e03040001050b41012107410121060c010b410221070b0c010b20012d0002210520034102360208200320053a000d20024103460d0120012d0003210520034103360208200320053a000e20024104460d0120034104360208200320012d00043a000f20024105460d01200341106a20012d00053a00002003410536020820024106460d01200341116a20012d00063a00002003410636020820024107460d01200341126a20012d00073a00002003410736020820024108460d01200341136a20012d00083a00002003410836020820024109460d01200341146a20012d00093a0000200341093602082002410a460d01200341156a20012d000a3a00002003410a3602082002410b460d01200341166a20012d000b3a00002003410b3602082002410c460d01200341176a20012d000c3a00002003410c3602082002410d460d01200341186a20012d000d3a00002003410d3602082002410e460d01200341196a20012d000e3a00002003410e3602082002410f460d012003411a6a20012d000f3a00002003410f36020820024110460d012003411b6a20012d00103a00002003411036020820024111460d012003411c6a20012d00113a00002003411136020820024112460d012003411d6a20012d00123a00002003411236020820024113460d012003411e6a20012d00133a00002003411336020820024114460d012003411f6a20012d00143a00002003411436020820024115460d01200341206a20012d00153a00002003411536020820024116460d01200341216a20012d00163a00002003411636020820024117460d01200341226a20012d00173a00002003411736020820024118460d01200341236a20012d00183a00002003411836020820024119460d01200341246a20012d00193a0000200341193602082002411a460d01200341256a20012d001a3a00002003411a3602082002411b460d01200341266a20012d001b3a00002003411b3602082002411c460d01200341276a20012d001c3a00002003411c3602082002411d460d01200341286a20012d001d3a00002003411d3602082002411e460d01200341296a20012d001e3a00002003411e3602082002411f460d012003412a6a20012d001f3a00002003411f36020820024120460d012003412b6a220520012d00203a00002003412036020820024121460d012003412c6a20012d00213a0000200341086a41216a2f00002108200341286a2d00002102200341246a2802002109200341226a2f0100210a200341216a2d0000210b2003411d6a280000210c2003411b6a2f0000210d2003411a6a2d0000210e200341166a280100210f200341146a2f01002110200341136a2d0000211120052f00002105200328000f211220032f000d211320032d000c2107410021060b200020073a0001200020063a0000200041206a20053b00002000411e6a20083b00002000411d6a20023a0000200041196a2009360000200041176a200a3b0000200041166a200b3a0000200041126a200c360000200041106a200d3b00002000410f6a200e3a00002000410b6a200f360000200041096a20103b0000200041086a20113a0000200041046a2012360000200041026a20133b000020011039200341306a24000f0b41a1d5ca00412e200341086a41d0d5ca0041e0d5ca00103d000b8d0501047f2000410c6a280200200028020822016b220241a00b6d210302402002450d002001200341a00b6c6a2103200141a0076a2101034002400240024002400240024002400240200141e0786a22022d00000e140707070007010203070707070407070507070707060b200141e8786a280200450d06200141e4786a28020010390c060b200141e4786a2802000d05200141ec786a2802002204450d05200441286c450d05200141e8786a28020010390c050b200141e4786a2d00004102470d04200141ec786a28020041ffffff3f71450d04200141e8786a28020010390c040b024002400240200141e4786a2802000e020001020b200141b07b6a280200450d05200141ac7b6a28020010390c050b200141b07b6a280200450d04200141ac7b6a28020010390c040b200141b07b6a280200450d03200141ac7b6a28020010390c030b200141e8786a2d0000410a470d0220014194796a280200450d0220014190796a28020010390c020b0240200141e4786a2802000d00200141ec786a28020041ffffff3f71450d02200141e8786a28020010390c020b200141ec786a28020041ffffff3f71450d01200141e8786a28020010390c010b0240200141e8786a2903004201510d0002400240200141f0786a2802000e020300010b20014180796a280200410b470d0220014188796a10af01200141d07c6a10d2030c020b200141f8786a280200410b470d0120014180796a10af01200141c87c6a10d2030c010b200141f0786a10af01200141b87c6a10af01200110d2030b0240200241940b6a28020041ffffff3f71450d00200141f0036a28020010390b200141a00b6a2101200241a00b6a2003470d000b0b024020002802042201450d00200141a00b6c450d00200028020010390b0b1c00200128021841e4bdca00410f2001411c6a28020028020c1100000b13002000410536020420004198c1c2003602000b13002000410736020420004198c4c2003602000b820303057f027e017f230041d0006b22022400200241386a22034200370300200241206a41106a22044200370300200241206a41086a2205420037030020024200370320200241c0006a41d3fec300410810f2012005200241c0006a41086a220629000037030020022002290040370320200241c0006a41d0a8c800410d10f2012003200629000037030020042002290040370300200241086a200241206a412010f904200241086a41106a2903002107200229031021082002280208210920034200370300200442003703002005420037030020024200370320200241c0006a41d3fec300410810f2012005200629000037030020022002290040370320200241c0006a41d0a8c800410d10f20120032006290000370300200420022900403703002002427f2007420020091b220720017c2008420020091b220120007c22002001542203ad7c22012003200120075420012007511b22031b3703482002427f200020031b370340200241206a4120200241c0006a411010a302200241d0006a24000ba20202017f037e230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b420021042003420037021c2003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e7020240200328021c450d00200328021810390b0b2002450d00200110390b2000200637030820002004370300200041106a2005370300200341d0006a24000b8c0d010a7f230041f0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022030d00200041023a00000c010b2002280214210402400240200241186a2802002205450d0041002106410321010240024020032d00000e020100030b20054101460d0120032d0001210120024101360248200220013a004c20054102460d0120032d0002210120024102360248200220013a004d20054103460d0120032d0003210120024103360248200220013a004e20054104460d0120024104360248200220032d00043a004f20054105460d01200241d0006a20032d00053a00002002410536024820054106460d01200241d1006a20032d00063a00002002410636024820054107460d01200241d2006a20032d00073a00002002410736024820054108460d01200241d3006a20032d00083a00002002410836024820054109460d01200241d4006a20032d00093a0000200241093602482005410a460d01200241d5006a20032d000a3a00002002410a3602482005410b460d01200241d6006a20032d000b3a00002002410b3602482005410c460d01200241d7006a20032d000c3a00002002410c3602482005410d460d01200241d8006a20032d000d3a00002002410d3602482005410e460d01200241d9006a20032d000e3a00002002410e3602482005410f460d01200241da006a20032d000f3a00002002410f36024820054110460d01200241db006a20032d00103a00002002411036024820054111460d01200241dc006a20032d00113a00002002411136024820054112460d01200241dd006a20032d00123a00002002411236024820054113460d01200241de006a20032d00133a00002002411336024820054114460d01200241df006a20032d00143a00002002411436024820054115460d01200241e0006a20032d00153a00002002411536024820054116460d01200241e1006a20032d00163a00002002411636024820054117460d01200241e2006a20032d00173a00002002411736024820054118460d01200241e3006a20032d00183a00002002411836024820054119460d01200241e4006a20032d00193a0000200241193602482005411a460d01200241e5006a20032d001a3a00002002411a3602482005411b460d01200241e6006a20032d001b3a00002002411b3602482005411c460d01200241e7006a20032d001c3a00002002411c3602482005411d460d01200241e8006a20032d001d3a00002002411d3602482005411e460d01200241e9006a20032d001e3a00002002411e3602482005411f460d01200241ea006a20032d001f3a00002002411f36024820054120460d01200241eb006a20032d00203a0000200241c0006a41026a200241d5006a2d00003a0000200241ec006a41026a200241dc006a2d00003a0000200220022f014c3b0130200220022d004e3a00322002200241d3006a2f00003b01402002200241da006a2f01003b016c200241e4006a2802002107200241dd006a2800002108200241d6006a280100210920024120360248200241c8006a41206a280200210a200228004f210b2002412c6a41026a200241e3006a2d00003a00002002200241e1006a2f00003b012c410121060b200241286a41026a20022d00323a0000200241246a41026a200241c0006a41026a2d00003a0000200241206a41026a200241ec006a41026a2d00003a00002002411c6a41026a2002412c6a41026a2d00003a0000200220022f01303b0128200220022f01403b0124200220022f016c3b0120200220022f012c3b011c200621010c010b410321010b0240024020014103470d00200242003702342002410028029cde4a3602302002410c3602442002200241086a3602402002200241306a36026c200241dc006a41013602002002420137024c200241e4b4c4003602482002200241c0006a360258200241ec006a41fc86ca00200241c8006a103b1a2002280230200228023810e70202402002280234450d00200228023010390b410221010c010b200020022f01283b0001200041046a200b360000200041086a20022f01243b00002000410b6a20093600002000410f6a20022f01203b0000200041126a2008360000200041166a20022f011c3b0000200041036a200241286a41026a2d00003a00002000410a6a200241246a41026a2d00003a0000200041116a200241206a41026a2d00003a0000200041186a2002411c6a41026a2d00003a00002000411d6a200a360000200041196a20073600000b200020013a00002004450d00200310390b200241f0006a24000bc10803057f017e117f23004180016b220224002002412036020c20022001360208200241106a2001412010e4020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ad010240024020022802000d00200228020422052002280224220641286e2201200120054b1bad42287e2207422088a70d032007a72201417f4c0d030240024020010d00410821080c010b200110382208450d050b4100210920024100360238200220083602302002200141286e3602340240024002402005450d00200241d8006a410472210a200241f1006a210b200241ea006a210c200241e3006a210d4100210e0340200e41016a210e41002101034020062001460d03200a20016a2002280220220f2d00003a00002002200141016a22103602582002200f41016a3602202010210120104120470d000b200241fc006a41026a2211200d41026a2d00003a0000200241d4006a41026a2212200c41026a2d00003a00002002200a2f01003b01282002200d2f00003b017c2002200c2f00003b01542002200a41026a2d00003a002a2002280278211320022802742114200228006d211520022801662116200228005f2117200241d0006a41026a2218200b41026a2d00003a00002002200b2f00003b01500240200620106b220141084f0d00200220013602240c040b200241c4006a41026a221020112d00003a0000200241c0006a41026a221120122d00003a00002002413c6a41026a221220182d00003a0000200220022f01283b0148200220022d002a3a004a200220022f017c3b0144200220022f01543b0140200220022f01503b013c2002200f41096a360220200f2900012107024020092002280234470d00200241306a2009410110b50120022802302108200228023821090b200141786a21062008200941286c6a220120022f01483b0100200141026a20022d004a3a0000200141096a20102d00003a0000200120022f01443b0007200141106a20112d00003a0000200120022f01403b000e200120173600032001201636000a20012015360011200141176a20122d00003a0000200120022f013c3b0015200120073703202001201336001c200120143600182002200941016a2209360238200e2005470d000b200228023021080b2008450d0220002002290234370204200020083602000c030b200241003602240b20022802342201450d00200141286c450d00200228023010390b200242003702342002410028029cde4a3602302002410c36022c2002200241086a3602282002200241306a36027c200241ec006a41013602002002420137025c200241e4b4c4003602582002200241286a360268200241fc006a41fc86ca00200241d8006a103b1a2002280230200228023810e70202402002280234450d00200228023010390b200041003602000b2004450d00200310390b20024180016a24000f0b1034000b1030000bd30a03047f017e017f230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003a00000c010b2002280214210302400240200241186a2802002204450d00200220012d00003a003c2002410136023820044101460d00200220012d00013a003d2002410236023820044102460d00200220012d00023a003e2002410336023820044103460d00200220012d00033a003f2002410436023820044104460d00200241c0006a20012d00043a00002002410536023820044105460d00200241c1006a20012d00053a00002002410636023820044106460d00200241c2006a20012d00063a00002002410736023820044107460d00200241c3006a20012d00073a00002002410836023820044108460d00200241c4006a20012d00083a00002002410936023820044109460d00200241c5006a20012d00093a00002002410a3602382004410a460d00200241c6006a20012d000a3a00002002410b3602382004410b460d00200241c7006a20012d000b3a00002002410c3602382004410c460d00200241c8006a20012d000c3a00002002410d3602382004410d460d00200241c9006a20012d000d3a00002002410e3602382004410e460d00200241ca006a20012d000e3a00002002410f3602382004410f460d00200241cb006a20012d000f3a00002002411036023820044110460d00200241cc006a20012d00103a00002002411136023820044111460d00200241cd006a20012d00113a00002002411236023820044112460d00200241ce006a20012d00123a00002002411336023820044113460d00200241cf006a20012d00133a00002002411436023820044114460d00200241d0006a20012d00143a00002002411536023820044115460d00200241d1006a20012d00153a00002002411636023820044116460d00200241d2006a20012d00163a00002002411736023820044117460d00200241d3006a20012d00173a00002002411836023820044118460d00200241d4006a20012d00183a00002002411936023820044119460d00200241d5006a20012d00193a00002002411a3602382004411a460d00200241d6006a20012d001a3a00002002411b3602382004411b460d00200241d7006a20012d001b3a00002002411c3602382004411c460d00200241d8006a20012d001c3a00002002411d3602382004411d460d00200241d9006a20012d001d3a00002002411e3602382004411e460d00200241da006a20012d001e3a00002002411f3602382004411f460d00200241db006a20012d001f3a0000200041086a200241386a410b6a2f00003b00002000410a6a200241c5006a2d00003a0000200041116a200241cc006a2d00003a00002000410f6a200241386a41126a2f01003b000020024120360238200220022f013c3b0120200220022d003e3a0022200241c6006a2801002104200241cd006a2800002105200241d4006a2902002106200228003f2107200041186a200241d3006a2d00003a0000200041166a200241386a41196a2f00003b0000200041036a20022d00223a0000200020022f01203b0001200041196a2006370000200041126a20053600002000410b6a2004360000200041046a2007360000410121040c010b20024200370224410021042002410028029cde4a3602202002410c3602342002200241086a3602302002200241206a36025c200241cc006a41013602002002420137023c200241e4b4c4003602382002200241306a360248200241dc006a41fc86ca00200241386a103b1a2002280220200228022810e7022002280224450d00200228022010390b200020043a00002003450d00200110390b200241e0006a24000b900702057f017e230041c0006b2201240020014100360220200142013703180240024002400240200028020022020e03000102030b200141186a410041011081012001280218200128022022036a41013a00002001200341016a36022020002802042103200141186a2000410c6a280200220410d20120032004200141186a10d001200041106a21030240200128021c200128022022056b411f4b0d00200141186a20054120108101200128022021050b200128021820056a22042003290000370000200441086a200341086a290000370000200441106a200341106a290000370000200441186a200341186a2900003700002001200541206a3602200c020b200141186a410041011081012001280218200128022022036a41023a00002001200341016a2203360220200028020421040240200128021c20036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a3602200c010b200141186a410041011081012001280218200128022022036a41033a00002001200341016a22033602200240200128021c2003470d00200141186a20034101108101200128022021030b200128021820036a41013a00002001200341016a2203360220200029030821060240200128021c20036b41074b0d00200141186a20034108108101200128022021030b200128021820036a20063700002001200341086a2203360220200029031021060240200128021c20036b41074b0d00200141186a20034108108101200128022021030b200128021820036a20063700002001200341086a220336022002400240024020002d00180e03000102030b0240200128021c2003470d00200141186a20034101108101200128022021030b200128021820036a41003a00002001200341016a3602200c020b0240200128021c2003470d00200141186a20034101108101200128022021030b200128021820036a41013a00002001200341016a3602200c010b0240200128021c2003470d00200141186a20034101108101200128022021030b200128021820036a41023a00002001200341016a3602200b200141146a200141186a41086a2802003600002001200129031837000c200141246a200141106a290000370000200141c28289aa04360019200141023a00182001200129000937001d200141186a108105024020020d00200041086a2802002202450d00200241286c450d00200028020410390b200141c0006a24000bf96505047f067e017f1e7e057f230041d01f6b22022400200241801c6a2001107a200241a81c6a200241801c6a107541002103410121040340200120036a2d0000200241a81c6a20036a2d0000732205410020056b72417f734180017141077610772004712104200341016a22034120470d000b200410772103200241881f6a200241801c6a107520022d00881f4101711077210402400240200341ff0171450d00200441ff01714101460d00200241c81c6a200241801c6a41011078200242f0ffffffffffff3f20022903e81c7d220642ffffffffffffff038342f0ffffffffffff3f20022903e01c7d22074233887c3703901d2002200742ffffffffffffff038342f0ffffffffffff3f20022903d81c22077d22084233887c3703881d2002200842ffffffffffffff038342f0ffffffffffff3f20022903d01c22087d22094233887c3703801d2002200942ffffffffffffff038342d1fdffffffffff3f20022903c81c22097d220a4233887c3703f81c2002200642338842137e200a42ffffffffffffff03837c3703f01c4200210b200241981d6a41186a220c4200370300200241981d6a41206a22034200370300200241981d6a41106a220520073703002002200942017c3703981d200220083703a01d200c20022903e01c3703002003200329030020022903e81c7c370300200241c01d6a200241981d6a41011078200241b81e6a200241f01c6a41011078200241f8156a20022903b81e2206420042ca8e9ae5dec6ac02420010c20a200241f8186a20022903c01e220742137e4200428092f58893f9b701420010c20a200241a8186a20022903c81e220842137e220d420042c486ffe299c731420010c20a200241d8176a20022903d01e220a42137e220e420042d6fff8ffd98b8601420010c20a20024188176a20022903d81e220f42137e2209420042c2a2aaa7fcfa9503420010c20a20024188166a2006420042c2a2aaa7fcfa9503420010c20a200241e8186a2007420042ca8e9ae5dec6ac02420010c20a20024198186a200d4200428092f58893f9b701420010c20a200241c8176a200e420042c486ffe299c731420010c20a200241f8166a2009420042d6fff8ffd98b8601420010c20a20024198166a2006420042d6fff8ffd98b8601420010c20a200241d8186a2007420042c2a2aaa7fcfa9503420010c20a20024188186a2008420042ca8e9ae5dec6ac02420010c20a200241b8176a200e4200428092f58893f9b701420010c20a200241e8166a2009420042c486ffe299c731420010c20a200241a8166a2006420042c486ffe299c731420010c20a200241c8186a2007420042d6fff8ffd98b8601420010c20a200241f8176a2008420042c2a2aaa7fcfa9503420010c20a200241a8176a200a420042ca8e9ae5dec6ac02420010c20a200241d8166a20094200428092f58893f9b701420010c20a200241b8166a20064200428092f58893f9b701420010c20a200241b8186a2007420042c486ffe299c731420010c20a200241e8176a2008420042d6fff8ffd98b8601420010c20a20024198176a200a420042c2a2aaa7fcfa9503420010c20a200241c8166a200f420042ca8e9ae5dec6ac02420010c20a200241f8136a20022903c01d2208420020022903b816221020022903c8167c220620022903b8187c220720022903e8177c22092002290398177c220a20022903d816221120022903a8177c220e20022903a8167c220d20022903c8187c220f20022903f8177c221220022903b81722132002290388187c221420022903e8167c22152002290398167c221620022903d8187c2217200229039818221820022903e8187c221920022903c8177c221a20022903f8167c221b2002290388167c221c20022903f818221d20022903f8157c221e20022903a8187c221f20022903d8177c22202002290388177c2221423388200241f8186a41086a290300200241f8156a41086a2903007c201e201d54ad7c200241a8186a41086a2903007c201f201e54ad7c200241d8176a41086a2903007c2020201f54ad7c20024188176a41086a2903007c2021202054ad7c420d86847c221e42338820024198186a41086a290300200241e8186a41086a2903007c2019201854ad7c200241c8176a41086a2903007c201a201954ad7c200241f8166a41086a2903007c201b201a54ad7c20024188166a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c221a423388200241b8176a41086a29030020024188186a41086a2903007c2014201354ad7c200241e8166a41086a2903007c2015201454ad7c20024198166a41086a2903007c2016201554ad7c200241d8186a41086a2903007c2017201654ad7c201a201754ad7c420d86847c2214423388200241d8166a41086a290300200241a8176a41086a2903007c200e201154ad7c200241a8166a41086a2903007c200d200e54ad7c200241c8186a41086a2903007c200f200d54ad7c200241f8176a41086a2903007c2012200f54ad7c2014201254ad7c420d86847c220e42ffffffffffffff038320022903e01d220f7d42f0ffffffffffff3f7c220d42338842137e200e423388200241b8166a41086a290300200241c8166a41086a2903007c2006201054ad7c200241b8186a41086a2903007c2007200654ad7c200241e8176a41086a2903007c2009200754ad7c20024198176a41086a2903007c200a200954ad7c200e200a54ad7c420d868442137e202142feffffffffffff03837c220742ffffffffffffff038320087d42d0fdffffffffff3f7c221542ffffffffffffff03837c2206420010c20a200241e8156a200d42ffffffffffffff0383201442ffffffffffffff038320022903d81d220e7d42f0ffffffffffff3f7c220a4233887c2219420020022903c81d220942137e420010c20a20024198156a200a42ffffffffffffff0383201a42ffffffffffffff038320022903d01d220a7d42f0ffffffffffff3f7c220d4233887c22164200200a42137e2217420010c20a200241c8146a200d42ffffffffffffff03832007423388201e42ffffffffffffff03837c20097d42f0ffffffffffff3f7c22074233887c22144200200e42137e2212420010c20a200241a8136a200742ffffffffffffff038320154233887c22074200200f42137e220d420010c20a20024198136a200742002008420010c20a200241e8136a200642002009420010c20a200241d8156a201942002017420010c20a20024188156a201642002012420010c20a200241b8146a20144200200d420010c20a200241a8146a201442002008420010c20a20024188136a200742002009420010c20a200241d8136a20064200200a420010c20a200241c8156a201942002012420010c20a200241f8146a20164200200d420010c20a200241e8146a201642002008420010c20a20024198146a201442002009420010c20a200241f8126a20074200200a420010c20a200241c8136a20064200200e420010c20a200241b8156a20194200200d420010c20a200241a8156a201942002008420010c20a200241d8146a201642002009420010c20a20024188146a20144200200a420010c20a200241e8126a20074200200e420010c20a200241b8136a20064200200f420010c20a200220022903c815221e20022903d8137c220820022903f8147c220920022903a8147c220a2002290388137c220e20022903d815221f20022903e8137c220d2002290388157c220f20022903b8147c22122002290398137c221520022903e815222020022903f8137c22172002290398157c221a20022903c8147c221b20022903a8137c221c423388200241e8156a41086a290300200241f8136a41086a2903007c2017202054ad7c20024198156a41086a2903007c201a201754ad7c200241c8146a41086a2903007c201b201a54ad7c200241a8136a41086a2903007c201c201b54ad7c420d86847c2217423388200241d8156a41086a290300200241e8136a41086a2903007c200d201f54ad7c20024188156a41086a2903007c200f200d54ad7c200241b8146a41086a2903007c2012200f54ad7c20024198136a41086a2903007c2015201254ad7c2017201554ad7c420d86847c220d42ffffffffffffff03833703a01e200220022903b815221b20022903c8137c220f20022903e8147c22122002290398147c221520022903f8127c221a200d423388200241c8156a41086a290300200241d8136a41086a2903007c2008201e54ad7c200241f8146a41086a2903007c2009200854ad7c200241a8146a41086a2903007c200a200954ad7c20024188136a41086a2903007c200e200a54ad7c200d200e54ad7c420d86847c220842ffffffffffffff03833703a81e200220022903a815221e20022903b8137c220920022903d8147c220a2002290388147c220e20022903e8127c220d2008423388200241b8156a41086a290300200241c8136a41086a2903007c200f201b54ad7c200241e8146a41086a2903007c2012200f54ad7c20024198146a41086a2903007c2015201254ad7c200241f8126a41086a2903007c201a201554ad7c2008201a54ad7c420d86847c220842ffffffffffffff03833703b01e20022008423388200241a8156a41086a290300200241b8136a41086a2903007c2009201e54ad7c200241d8146a41086a2903007c200a200954ad7c20024188146a41086a2903007c200e200a54ad7c200241e8126a41086a2903007c200d200e54ad7c2008200d54ad7c420d868442137e201c42ffffffffffffff03837c220842ffffffffffffff03833703901e20022008423388201742ffffffffffffff03837c3703981e200241a81f6a41106a4200370300200241a81f6a41186a4200370300200241a81f6a41206a4200370300200242003703b01f200242013703a81f200241b81e6a200241a81f6a200241901e6a107920024198126a20022903981d220f420020022903c01e2208420010c20a200241d80f6a200241e01e6a2903002209420020022903a01d221242137e420010c20a200241b8106a200241b81e6a41206a2204290300220a42002005290300221542137e221c420010c20a20024198116a200241b81e6a41186a2205290300220e4200200c290300221a42137e221b420010c20a200241f8116a200241b81e6a41106a220c290300220d42002003290300221e42137e2217420010c20a200241d8126a200d4200200f420010c20a20024198106a200842002012420010c20a200241a8106a20094200201c420010c20a20024188116a200a4200201b420010c20a200241e8116a200e42002017420010c20a200241c8126a200e4200200f420010c20a20024188106a200d42002012420010c20a200241e8106a200842002015420010c20a200241f8106a20094200201b420010c20a200241d8116a200a42002017420010c20a200241b8126a200a4200200f420010c20a200241f80f6a200e42002012420010c20a200241d8106a200d42002015420010c20a200241b8116a20084200201a420010c20a200241c8116a200942002017420010c20a200241a8126a20094200200f420010c20a200241e80f6a200a42002012420010c20a200241c8106a200e42002015420010c20a200241a8116a200d4200201a420010c20a20024188126a20084200201e420010c20a200241980d6a2006420020022903a81222222002290388127c220f20022903e80f7c221220022903c8107c221520022903a8117c221720022903c811222320022903b8117c221a20022903b8127c221b20022903f80f7c221c20022903d8107c221e20022903f810222420022903e8107c221f20022903d8117c222020022903c8127c22212002290388107c221020022903a81022252002290398107c22112002290388117c221320022903e8117c221820022903d8127c221d20022903d80f22262002290398127c222720022903b8107c22282002290398117c222920022903f8117c222a423388200241d80f6a41086a29030020024198126a41086a2903007c2027202654ad7c200241b8106a41086a2903007c2028202754ad7c20024198116a41086a2903007c2029202854ad7c200241f8116a41086a2903007c202a202954ad7c420d86847c2227423388200241a8106a41086a29030020024198106a41086a2903007c2011202554ad7c20024188116a41086a2903007c2013201154ad7c200241e8116a41086a2903007c2018201354ad7c200241d8126a41086a2903007c201d201854ad7c2027201d54ad7c420d86847c2211423388200241f8106a41086a290300200241e8106a41086a2903007c201f202454ad7c200241d8116a41086a2903007c2020201f54ad7c200241c8126a41086a2903007c2021202054ad7c20024188106a41086a2903007c2010202154ad7c2011201054ad7c420d86847c221f423388200241c8116a41086a290300200241b8116a41086a2903007c201a202354ad7c200241b8126a41086a2903007c201b201a54ad7c200241f80f6a41086a2903007c201c201b54ad7c200241d8106a41086a2903007c201e201c54ad7c201f201e54ad7c420d86847c221a423388200241a8126a41086a29030020024188126a41086a2903007c200f202254ad7c200241e80f6a41086a2903007c2012200f54ad7c200241c8106a41086a2903007c2015201254ad7c200241a8116a41086a2903007c2017201554ad7c201a201754ad7c420d868442137e202a42ffffffffffffff03837c221242ffffffffffffff0383220f420010c20a200241b8096a201a42ffffffffffffff0383221a4200200742137e420010c20a200241c80e6a201f42ffffffffffffff038322174200201442137e221e420010c20a200241f80d6a201142ffffffffffffff038322154200201642137e221c420010c20a200241e80d6a2012423388202742ffffffffffffff03837c22124200201942137e221b420010c20a200241d80d6a201242002006420010c20a200241880d6a200f42002007420010c20a200241980f6a201a4200201e420010c20a200241d80e6a20174200201c420010c20a200241880e6a20154200201b420010c20a200241980e6a201542002006420010c20a200241c80d6a201242002007420010c20a200241f80c6a200f42002014420010c20a200241a80f6a201a4200201c420010c20a200241e80e6a20174200201b420010c20a200241f80e6a201742002006420010c20a200241a80e6a201542002007420010c20a200241b80d6a201242002014420010c20a200241e80c6a200f42002016420010c20a200241b80f6a201a4200201b420010c20a200241c80f6a201a42002006420010c20a200241880f6a201742002007420010c20a200241b80e6a201542002014420010c20a200241a80d6a201242002016420010c20a200241d80c6a200f42002019420010c20a200241e8066a20022903c80f222220022903d80c7c220620022903880f7c220720022903b80e7c221420022903a80d7c221620022903b80f222320022903e80c7c221920022903f80e7c221b20022903a80e7c221c20022903b80d7c221e20022903a80f222420022903f80c7c221f20022903e80e7c222020022903980e7c222120022903c80d7c221020022903980f222520022903880d7c221120022903d80e7c221320022903880e7c221820022903d80d7c221d20022903b809222620022903980d7c222720022903c80e7c222820022903f80d7c222920022903e80d7c222a423388200241b8096a41086a290300200241980d6a41086a2903007c2027202654ad7c200241c80e6a41086a2903007c2028202754ad7c200241f80d6a41086a2903007c2029202854ad7c200241e80d6a41086a2903007c202a202954ad7c420d86847c2227423388200241980f6a41086a290300200241880d6a41086a2903007c2011202554ad7c200241d80e6a41086a2903007c2013201154ad7c200241880e6a41086a2903007c2018201354ad7c200241d80d6a41086a2903007c201d201854ad7c2027201d54ad7c420d86847c2211423388200241a80f6a41086a290300200241f80c6a41086a2903007c201f202454ad7c200241e80e6a41086a2903007c2020201f54ad7c200241980e6a41086a2903007c2021202054ad7c200241c80d6a41086a2903007c2010202154ad7c2011201054ad7c420d86847c221f423388200241b80f6a41086a290300200241e80c6a41086a2903007c2019202354ad7c200241f80e6a41086a2903007c201b201954ad7c200241a80e6a41086a2903007c201c201b54ad7c200241b80d6a41086a2903007c201e201c54ad7c201f201e54ad7c420d86847c2219423388200241c80f6a41086a290300200241d80c6a41086a2903007c2006202254ad7c200241880f6a41086a2903007c2007200654ad7c200241b80e6a41086a2903007c2014200754ad7c200241a80d6a41086a2903007c2016201454ad7c2019201654ad7c420d868442137e202a42ffffffffffffff03837c220742ffffffffffffff0383220642002008420010c20a200241b8076a200942002007423388202742ffffffffffffff03837c220742137e420010c20a200241d8076a200a4200201142ffffffffffffff0383221442137e221e420010c20a20024188086a200e4200201f42ffffffffffffff0383221b42137e221c420010c20a200241c8086a200d4200201942ffffffffffffff0383221942137e2216420010c20a200241d8066a200d42002006420010c20a200241a8076a200842002007420010c20a200241c8076a20094200201e420010c20a200241f8076a200a4200201c420010c20a200241b8086a200e42002016420010c20a200241c8066a200e42002006420010c20a20024198076a200d42002007420010c20a200241d8086a200842002014420010c20a200241e8076a20094200201c420010c20a200241a8086a200a42002016420010c20a200241e8056a200a42002006420010c20a20024188076a200e42002007420010c20a200241e8086a200d42002014420010c20a20024188096a20084200201b420010c20a20024198086a200942002016420010c20a20024188056a200942002006420010c20a200241f8066a200a42002007420010c20a200241f8086a200e42002014420010c20a20024198096a200d4200201b420010c20a200241a8096a200842002019420010c20a20022d00b81e21032004200241801c6a41206a222b2903003703002005200241801c6a41186a222c290300370300200c200241801c6a41106a222d2903002208370300200241b81e6a41086a222e200241801c6a41086a222f2903002207370300200220022903801c22063703b81e2002200620022903801c7c22063703b81e202e2007202f2903007c2207370300200c2008202d2903007c220837030020052005290300202c2903007c220937030020042004290300202b2903007c220a370300200241880c6a200f42002006420010c20a200241880a6a200a4200201242137e420010c20a200241980a6a20094200201542137e2214420010c20a200241e80a6a20084200201742137e220d420010c20a200241b80b6a20074200201a42137e220e420010c20a200241c80b6a20074200200f420010c20a200241980c6a200642002012420010c20a200241f8096a200a42002014420010c20a200241a80a6a20094200200d420010c20a200241f80a6a20084200200e420010c20a200241880b6a20084200200f420010c20a200241d80b6a200742002012420010c20a200241a80c6a200642002015420010c20a200241e8096a200a4200200d420010c20a200241b80a6a20094200200e420010c20a200241c80a6a20094200200f420010c20a200241980b6a200842002012420010c20a200241e80b6a200742002015420010c20a200241b80c6a200642002017420010c20a200241d8096a200a4200200e420010c20a200241c8096a200a4200200f420010c20a200241d80a6a200942002012420010c20a200241a80b6a200842002015420010c20a200241f80b6a200742002017420010c20a200241c80c6a20064200201a420010c20a200220022903c809222120022903c80c7c220620022903d80a7c220720022903a80b7c220820022903f80b7c220920022903d809221020022903b80c7c220a20022903c80a7c220e20022903980b7c220d20022903e80b7c220f20022903e809221120022903a80c7c221220022903b80a7c221420022903880b7c221520022903d80b7c221620022903f809221320022903980c7c221720022903a80a7c221920022903f80a7c221a20022903c80b7c221b20022903880a221820022903880c7c221c20022903980a7c221e20022903e80a7c221f20022903b80b7c2220423388200241880a6a41086a290300200241880c6a41086a2903007c201c201854ad7c200241980a6a41086a2903007c201e201c54ad7c200241e80a6a41086a2903007c201f201e54ad7c200241b80b6a41086a2903007c2020201f54ad7c420d86847c221c423388200241f8096a41086a290300200241980c6a41086a2903007c2017201354ad7c200241a80a6a41086a2903007c2019201754ad7c200241f80a6a41086a2903007c201a201954ad7c200241c80b6a41086a2903007c201b201a54ad7c201c201b54ad7c420d86847c2217423388200241e8096a41086a290300200241a80c6a41086a2903007c2012201154ad7c200241b80a6a41086a2903007c2014201254ad7c200241880b6a41086a2903007c2015201454ad7c200241d80b6a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2212423388200241d8096a41086a290300200241b80c6a41086a2903007c200a201054ad7c200241c80a6a41086a2903007c200e200a54ad7c200241980b6a41086a2903007c200d200e54ad7c200241e80b6a41086a2903007c200f200d54ad7c2012200f54ad7c420d86847c220a423388200241c8096a41086a290300200241c80c6a41086a2903007c2006202154ad7c200241d80a6a41086a2903007c2007200654ad7c200241a80b6a41086a2903007c2008200754ad7c200241f80b6a41086a2903007c2009200854ad7c200a200954ad7c420d868442137e202042ffffffffffffff03837c220642ffffffffffffff03833703e81d20022006423388201c42ffffffffffffff03837c3703f01d2002200a42ffffffffffffff038322063703881e2002201242ffffffffffffff038322073703801e2002201742ffffffffffffff0383220e3703f81d200241881f6a200241e81d6a10752002200642f0ffffffffffff3f20067d220942ffffffffffffff038342f0ffffffffffff3f20077d22084233887c85420020022d00881f4101711077ad42ff01837d220a8320068522063703881e20022007200842ffffffffffffff038342f0ffffffffffff3f200e7d220d4233887c85200a8320078522073703801e200220022903e81d2208200942338842137e42d0fdffffffffff3f20087d220f42ffffffffffffff03837c85200a8320088522083703e81d200220022903f01d220942f0ffffffffffff3f20097d221242ffffffffffffff0383200f4233887c85200a8320098522093703f01d2002200e200d42ffffffffffffff038320124233887c85200a83200e85220a3703f81d20024198046a200229038805221d20022903a8097c220e20022903f8067c220d20022903f8087c220f2002290398097c221220022903980822272002290388097c221420022903e8057c22152002290388077c221620022903e8087c221720022903e807222820022903d8087c221920022903a8087c221a20022903c8067c221b2002290398077c221c20022903c807222920022903a8077c221e20022903f8077c221f20022903b8087c222020022903d8067c222120022903b807222a20022903e8067c221020022903d8077c22112002290388087c221320022903c8087c2218423388200241b8076a41086a290300200241e8066a41086a2903007c2010202a54ad7c200241d8076a41086a2903007c2011201054ad7c20024188086a41086a2903007c2013201154ad7c200241c8086a41086a2903007c2018201354ad7c420d86847c2210423388200241c8076a41086a290300200241a8076a41086a2903007c201e202954ad7c200241f8076a41086a2903007c201f201e54ad7c200241b8086a41086a2903007c2020201f54ad7c200241d8066a41086a2903007c2021202054ad7c2010202154ad7c420d86847c221e423388200241e8076a41086a290300200241d8086a41086a2903007c2019202854ad7c200241a8086a41086a2903007c201a201954ad7c200241c8066a41086a2903007c201b201a54ad7c20024198076a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c221942338820024198086a41086a29030020024188096a41086a2903007c2014202754ad7c200241e8056a41086a2903007c2015201454ad7c20024188076a41086a2903007c2016201554ad7c200241e8086a41086a2903007c2017201654ad7c2019201754ad7c420d86847c221a42338820024188056a41086a290300200241a8096a41086a2903007c200e201d54ad7c200241f8066a41086a2903007c200d200e54ad7c200241f8086a41086a2903007c200f200d54ad7c20024198096a41086a2903007c2012200f54ad7c201a201254ad7c420d868442137e201842ffffffffffffff03837c221242ffffffffffffff0383220e420020022903f01c220d420010c20a200241e8046a20022903901d220f42002012423388201042ffffffffffffff03837c221242137e420010c20a20024188066a20022903881d22144200201e42ffffffffffffff0383221742137e221e420010c20a200241b8056a20022903801d22154200201942ffffffffffffff0383221b42137e221c420010c20a200241c8036a20022903f81c22164200201a42ffffffffffffff0383221a42137e2219420010c20a20024188046a20164200200e420010c20a200241d8046a200d42002012420010c20a200241f8056a200f4200201e420010c20a200241a8056a20144200201c420010c20a200241b8036a201542002019420010c20a200241f8036a20154200200e420010c20a200241c8046a201642002012420010c20a20024198066a200d42002017420010c20a20024198056a200f4200201c420010c20a200241a8036a201442002019420010c20a200241e8036a20144200200e420010c20a200241b8046a201542002012420010c20a200241a8066a201642002017420010c20a200241c8056a200d4200201b420010c20a200241c8026a200f42002019420010c20a200241d8036a200f4200200e420010c20a200241a8046a201442002012420010c20a200241b8066a201542002017420010c20a200241d8056a20164200201b420010c20a200241f8046a200d4200201a420010c20a2002200229039805221e2002290398067c220e20022903a8037c220d20022903f8037c221220022903c8047c221420022903f805221f20022903d8047c220f20022903a8057c221520022903b8037c22162002290388047c221720022903e80422202002290398047c22192002290388067c221a20022903b8057c221b20022903c8037c221c423388200241e8046a41086a29030020024198046a41086a2903007c2019202054ad7c20024188066a41086a2903007c201a201954ad7c200241b8056a41086a2903007c201b201a54ad7c200241c8036a41086a2903007c201c201b54ad7c420d86847c2219423388200241f8056a41086a290300200241d8046a41086a2903007c200f201f54ad7c200241a8056a41086a2903007c2015200f54ad7c200241b8036a41086a2903007c2016201554ad7c20024188046a41086a2903007c2017201654ad7c2019201754ad7c420d86847c221542ffffffffffffff0383220f3703a01e200220022903c802221f20022903c8057c221620022903e8037c221720022903b8047c221a20022903a8067c221b201542338820024198056a41086a29030020024198066a41086a2903007c200e201e54ad7c200241a8036a41086a2903007c200d200e54ad7c200241f8036a41086a2903007c2012200d54ad7c200241c8046a41086a2903007c2014201254ad7c2015201454ad7c420d86847c220e42ffffffffffffff038322123703a81e200220022903d803222020022903f8047c220d20022903a8047c221420022903b8067c221520022903d8057c221e200e423388200241c8026a41086a290300200241c8056a41086a2903007c2016201f54ad7c200241e8036a41086a2903007c2017201654ad7c200241b8046a41086a2903007c201a201754ad7c200241a8066a41086a2903007c201b201a54ad7c200e201b54ad7c420d86847c220e42ffffffffffffff038322163703b01e2002200e423388200241d8036a41086a290300200241f8046a41086a2903007c200d202054ad7c200241a8046a41086a2903007c2014200d54ad7c200241b8066a41086a2903007c2015201454ad7c200241d8056a41086a2903007c201e201554ad7c200e201e54ad7c420d868442137e201c42ffffffffffffff03837c220d42ffffffffffffff0383220e3703901e2002200d423388201942ffffffffffffff03837c220d3703981e20024188016a200e42002008420010c20a200241d8016a20064200200d42137e420010c20a200241e8026a20074200200f42137e2217420010c20a20024188026a200a4200201242137e2215420010c20a200241386a20094200201642137e2214420010c20a200241f8006a20094200200e420010c20a200241c8016a20084200200d420010c20a200241d8026a200642002017420010c20a200241f8016a200742002015420010c20a200241286a200a42002014420010c20a200241e8006a200a4200200e420010c20a200241b8016a20094200200d420010c20a200241f8026a20084200200f420010c20a200241e8016a200642002015420010c20a200241186a200742002014420010c20a200241d8006a20074200200e420010c20a200241a8016a200a4200200d420010c20a20024188036a20094200200f420010c20a20024198026a200842002012420010c20a200241086a200642002014420010c20a200241c8006a20064200200e420010c20a20024198016a20074200200d420010c20a20024198036a200a4200200f420010c20a200241a8026a200942002012420010c20a200241b8026a200842002016420010c20a200220022903e801221720022903f8027c220620022903187c220720022903687c220820022903b8017c220920022903d802221920022903c8017c220a20022903f8017c220e20022903287c220d20022903787c220f20022903d801221a2002290388017c221220022903e8027c22142002290388027c221520022903387c2216423388200241d8016a41086a29030020024188016a41086a2903007c2012201a54ad7c200241e8026a41086a2903007c2014201254ad7c20024188026a41086a2903007c2015201454ad7c200241386a41086a2903007c2016201554ad7c420d86847c2212423388200241d8026a41086a290300200241c8016a41086a2903007c200a201954ad7c200241f8016a41086a2903007c200e200a54ad7c200241286a41086a2903007c200d200e54ad7c200241f8006a41086a2903007c200f200d54ad7c2012200f54ad7c420d86847c220a42ffffffffffffff03833703b81f2002200229030822152002290398027c220e20022903587c220d20022903a8017c220f2002290388037c2214200a423388200241e8016a41086a290300200241f8026a41086a2903007c2006201754ad7c200241186a41086a2903007c2007200654ad7c200241e8006a41086a2903007c2008200754ad7c200241b8016a41086a2903007c2009200854ad7c200a200954ad7c420d86847c220642ffffffffffffff03833703c01f20022002290348221720022903b8027c22072002290398017c22082002290398037c220920022903a8027c220a2006423388200241086a41086a29030020024198026a41086a2903007c200e201554ad7c200241d8006a41086a2903007c200d200e54ad7c200241a8016a41086a2903007c200f200d54ad7c20024188036a41086a2903007c2014200f54ad7c2006201454ad7c420d86847c220642ffffffffffffff03833703c81f20022006423388200241c8006a41086a290300200241b8026a41086a2903007c2007201754ad7c20024198016a41086a2903007c2008200754ad7c20024198036a41086a2903007c2009200854ad7c200241a8026a41086a2903007c200a200954ad7c2006200a54ad7c420d868442137e201642ffffffffffffff03837c220642ffffffffffffff03833703a81f20022006423388201242ffffffffffffff03837c3703b01f02402003450d00200241881f6a200241a81f6a107520022d00881f410171107741ff01714101460d00200241d01e6a4200370300200241c81e6a4200370300200241c01e6a4200370300200242003703b81e200241881f6a200241901e6a1075200241b81e6a410172210c410021054100210341012104024003402005200241881f6a20036a2d0000732205410020056b72417f7341800171410776107720047121042003411f460d01200c20036a2d00002105200341016a21030c000b0b4200210b2004107741ff01714101460d00200241b81e6a41206a200241e81d6a41206a290300370300200241b81e6a41186a200241e81d6a41186a290300370300200241b81e6a41106a200241e81d6a41106a290300370300200241b81e6a41086a200241e81d6a41086a290300370300200241e81e6a200241901e6a41086a290300370300200241f01e6a200241901e6a41106a290300370300200241f81e6a200241901e6a41186a290300370300200241801f6a200241901e6a41206a290300370300200220022903e81d3703b81e200220022903901e3703e01e200241881b6a41206a200241a81f6a41206a290300370300200241881b6a41186a200241a81f6a41186a290300370300200241881b6a41106a200241a81f6a41106a290300370300200241881b6a41086a200241a81f6a41086a290300370300200220022903a81f3703881b200241b01b6a200241b81e6a41d00010c30a1a4201210b0b200b500d00200241b51a6a41036a200241b01b6a41d00010c30a1a200241881a6a41206a2203200241881b6a41206a290300370300200241881a6a41186a2204200241881b6a41186a290300370300200241881a6a41106a2205200241881b6a41106a290300370300200241881a6a41086a220c200241881b6a41086a290300370300200220022903881b3703881a200241b5196a200241b51a6a41d30010c30a1a20024188196a41206a222b200329030037030020024188196a41186a2203200429030037030020024188196a41106a2204200529030037030020024188196a41086a2205200c290300370300200220022903881a37038819200041086a200241b5196a41036a41d00010c30a1a200041a0016a202b29030037000020004198016a200329030037000020004190016a200429030037000020004188016a200529030037000020004180016a200229038819370000200041a8016a2001290000370000200041b0016a200141086a290000370000200041b8016a200141106a290000370000200041c0016a200141186a290000370000200041f8006a4200370300200041d8006a4201370300200041f0006a4200370300200041e8006a4200370300200041e0006a4200370300410021030c010b200241b5196a200241b51a6a41d30010c30a1a41012103200041013a0004200020022900b5193700052000410d6a200241bd196a290000370000200041146a200241c4196a2900003700000b20002003360200200241d01f6a24000bd99a0204067f1a7e117f407e230041c0d0006b22042400200441f0c7006a200341d00110c30a1a200441f0c7006a418ff9c5004109200241a0016a4120109501200441a0c6006a200441f0c7006a41d00110c30a1a200441c0c9006a41386a22024200370300200441c0c9006a41306a22034200370300200441c0c9006a41286a22054200370300200441c0c9006a41206a22064200370300200441c0c9006a41186a22074200370300200441c0c9006a41106a22084200370300200441c0c9006a41086a22094200370300200442003703c049200441a0c6006a41b2b4c9004107200441c0c9006a41c0001097012008310000210a2009310000210b2007310000210c20043100d249210d20043100d149210e20043100cf49210f20043100cd49211020043100ce49211120043100df49211220043100de49211320043100dd49211420043100dc49211520043100db49211620043100da49211720043100cc49211820043100cb49211920043100ca49211a20043100c949211b20043100c749211c20043100d949211d20043100d749211e20043100d649211f20043100d349212020043100d449212120043100d5492122200420043502c04920043100c4494220868420043100c5494228868420043100c64922234230868442ffffffffffffff03833703804a20042020202142088684202242108684201f42188684201e42208684200c42288684201d4230868442018842ffffffffffffff03833703984a20042023201c42088684200b42108684201b42188684201a4220868420194228868420184230868442038842ffffffffffffff03833703884a2004200c201d42088684201742108684201642188684201542208684201442288684201342308684201242388684420c8842ffffffffffffff03833703a04a20042018201042088684201142108684200f42188684200a42208684200e42288684200d4230868420204238868442068842ffffffffffffff03833703904a200441a8ca006a20044180ca006a107b200441c8cb006a41186a20022903002220370300200441c8cb006a41106a2003290300220a370300200441c8cb006a41086a2005290300220b37030020042006290300220d3703c84b20043100da4b210e20043100d94b210f20043100d74b211020043100d54b211120043100d64b211220043100e74b211320043100e64b211420043100e54b211520043100e44b211620043100e34b211720043100e24b211920043100d44b210c20043100d34b211a20043100d24b211b20043100d14b211c20043100cf4b211e20043100e14b211820043100df4b211f20043100de4b212120043100db4b211d20043100dc4b212220043100dd4b21232004200d42ffffffff0f8320043100cc4b4220868420043100cd4b4228868420043100ce4b220d4230868442ffffffffffffff03833703e84b2004201d202242088684202342108684202142188684201f42208684202042ff018322204228868420184230868442018842ffffffffffffff03833703804c2004200d201e42088684200b42ff018342108684201c42188684201b42208684201a42288684200c4230868442038842ffffffffffffff03833703f04b20042018420886202084201942108684201742188684201642208684201542288684201442308684201342388684420c8842ffffffffffffff03833703884c2004200c201142088684201242108684201042188684200a42ff018342208684200f42288684200e42308684201d4238868442068842ffffffffffffff03833703f84b20044190cc006a200441e8cb006a107b200441f0c7006a41106a220520044190cc006a41386a2206290300220c370300200441f0c7006a41186a220220044190cc006a41c0006a2207290300370300200441f0c7006a41206a220320044190cc006a41c8006a2208290300370300200441f0c7006a41086a220920044190cc006a41306a222429030020042903984c7c3703002005200c20042903a04c7c3703002002200229030020042903a84c7c370300200420042903b84c20042903904c7c3703f0472003200329030020042903b04c7c3703002024290300210c2006290300211820042903904c211d20042903b84c212020042903984c210a20042903a04c210b200441f0c7006a41c8006a2224200829030020042903b04c7d42f0ffffffffffff3f7c220d42ffffffffffffff0383200729030020042903a84c7d42f0ffffffffffff3f7c220e4233887c370300200441f0c7006a41c0006a2207200e42ffffffffffffff03832018200b7d42f0ffffffffffff3f7c22184233887c370300200441f0c7006a41386a2208201842ffffffffffffff0383200c200a7d42f0ffffffffffff3f7c220c4233887c370300200441f0c7006a41306a2225200c42ffffffffffffff03832020201d7d42d0fdffffffffff3f7c220c4233887c3703002004200d42338842137e200c42ffffffffffffff03837c37039848200441f0c7006a41f0006a222620044190cc006a41f0006a290300370300200441f0c7006a41e8006a222720044190cc006a41e8006a290300370300200441f0c7006a41e0006a222820044190cc006a41e0006a290300370300200441f0c7006a41d8006a222920044190cc006a41d8006a290300370300200420042903e04c3703c048200441d0c1006a20042903884d220c420042d9e2cbb5c2f2a603420010c20a200441a0c2006a20044190cc006a4198016a29030022184200428ee0b9a98cbfbd1f420010c20a200441f0c2006a20044190cc006a4190016a290300221d420042968c8a82a4c39824420010c20a200441c0c3006a20044190cc006a4188016a2903002220420042d587a4ceaceea43d420010c20a20044190c4006a20044190cc006a4180016a290300220a420042edd39cadab84b215420010c20a200441a0c4006a200a420042d9e2cbb5c2f2a603420010c20a200441e0c1006a200c420042fabaabb1878ad401420010c20a200441b0c2006a2018420042968c8a82a4c39824420010c20a20044180c3006a201d420042d587a4ceaceea43d420010c20a200441d0c3006a2020420042edd39cadab84b215420010c20a200441e0c3006a2020420042d9e2cbb5c2f2a603420010c20a200441b0c4006a200a420042fabaabb1878ad401420010c20a200441f0c1006a200c420042d2808e80cce8f301420010c20a200441c0c2006a2018420042d587a4ceaceea43d420010c20a20044190c3006a201d420042edd39cadab84b215420010c20a200441a0c3006a201d420042d9e2cbb5c2f2a603420010c20a200441f0c3006a2020420042fabaabb1878ad401420010c20a200441c0c4006a200a420042d2808e80cce8f301420010c20a20044180c2006a200c420042f7f281baccf19c03420010c20a200441d0c2006a2018420042edd39cadab84b215420010c20a200441e0c2006a2018420042d9e2cbb5c2f2a603420010c20a200441b0c3006a201d420042fabaabb1878ad401420010c20a20044180c4006a2020420042d2808e80cce8f301420010c20a200441d0c4006a200a420042f7f281baccf19c03420010c20a20044190c2006a200c420042ffdb95eed98d9001420010c20a200441f0c7006a4188016a222a20042903c042221320042903f0417c220c2004290390437c221820042903e0437c221d20042903b0447c222020042903b042221420042903e0417c220a2004290380437c220b20042903d0437c220d20042903a0447c220e20042903a042221520042903d0417c220f20042903f0427c221020042903c0437c22112004290390447c2212423388200441a0c2006a41086a290300200441d0c1006a41086a2903007c200f201554ad7c200441f0c2006a41086a2903007c2010200f54ad7c200441c0c3006a41086a2903007c2011201054ad7c20044190c4006a41086a2903007c2012201154ad7c420d86847c220f423388200441b0c2006a41086a290300200441e0c1006a41086a2903007c200a201454ad7c20044180c3006a41086a2903007c200b200a54ad7c200441d0c3006a41086a2903007c200d200b54ad7c200441a0c4006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383370300200441f0c7006a4190016a222b20042903d04222112004290380427c220b20042903a0437c220d20042903f0437c220e20042903c0447c2210200a423388200441c0c2006a41086a290300200441f0c1006a41086a2903007c200c201354ad7c20044190c3006a41086a2903007c2018200c54ad7c200441e0c3006a41086a2903007c201d201854ad7c200441b0c4006a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff0383370300200441f0c7006a4198016a222c20042903e04222132004290390427c221820042903b0437c221d2004290380447c222020042903d0447c220a200c423388200441d0c2006a41086a29030020044180c2006a41086a2903007c200b201154ad7c200441a0c3006a41086a2903007c200d200b54ad7c200441f0c3006a41086a2903007c200e200d54ad7c200441c0c4006a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff0383370300200441f0c7006a4180016a222d200c423388200441e0c2006a41086a29030020044190c2006a41086a2903007c2018201354ad7c200441b0c3006a41086a2903007c201d201854ad7c20044180c4006a41086a2903007c2020201d54ad7c200441d0c4006a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c423388200f42ffffffffffffff03837c3703002004200c42ffffffffffffff03833703e848200441d0ce006a41206a2206200441a8ca006a41c8006a222e290300370300200441d0ce006a41186a222f200441a8ca006a41c0006a22302903002220370300200441d0ce006a41106a2231200441a8ca006a41386a2232290300221d370300200441d0ce006a41086a2233200441a8ca006a41306a22342903002218370300200420042903d04a220c3703d04e2004200c20042903a84a7c220c3703d04e2033201820042903b04a7c22183703002031201d20042903b84a7c221d370300202f202020042903c04a7c22203703002006200629030020042903c84a7c220a370300200441c03e6a20042903f047220b4200200c420010c20a200441c0c1006a200a42002009290300220d42137e420010c20a200441f0c0006a202042002005290300220e42137e2212420010c20a200441a0c0006a201d42002002290300221042137e2211420010c20a200441d03f6a201842002003290300221342137e220f420010c20a200441d03e6a20184200200b420010c20a200441b0c1006a200c4200200d420010c20a200441e0c0006a200a42002012420010c20a20044190c0006a202042002011420010c20a200441c03f6a201d4200200f420010c20a200441e03e6a201d4200200b420010c20a200441a0c1006a20184200200d420010c20a200441d0c0006a200c4200200e420010c20a20044180c0006a200a42002011420010c20a200441b03f6a20204200200f420010c20a200441f03e6a20204200200b420010c20a20044190c1006a201d4200200d420010c20a200441c0c0006a20184200200e420010c20a200441f03f6a200c42002010420010c20a200441a03f6a200a4200200f420010c20a200441803f6a200a4200200b420010c20a20044180c1006a20204200200d420010c20a200441b0c0006a201d4200200e420010c20a200441e03f6a201842002010420010c20a200441903f6a200c42002013420010c20a2034290300210b2032290300210a2030290300211d20042903b04a210d20042903b84a210e20042903c04a2120200441f03b6a200429039848220c4200202e29030020042903c84a7d42f0ffffffffffff3f7c220f42338842137e20042903d04a20042903a84a7d42d0fdffffffffff3f7c221242ffffffffffffff03837c2218420010c20a200441f03d6a200f42ffffffffffffff0383201d20207d42f0ffffffffffff3f7c220f4233887c221d42002025290300222042137e420010c20a200441b03d6a200f42ffffffffffffff0383200a200e7d42f0ffffffffffff3f7c220f4233887c220a42002008290300220e42137e2213420010c20a200441f03c6a200f42ffffffffffffff0383200b200d7d42f0ffffffffffff3f7c220d4233887c220b42002007290300221042137e2211420010c20a200441b03c6a200d42ffffffffffffff038320124233887c220d42002024290300221242137e220f420010c20a200441e03b6a200d4200200c420010c20a200441b03e6a201842002020420010c20a200441a03d6a201d42002013420010c20a200441e03c6a200a42002011420010c20a200441a03c6a200b4200200f420010c20a200441d03b6a200b4200200c420010c20a200441a03e6a200d42002020420010c20a200441e03d6a20184200200e420010c20a200441d03c6a201d42002011420010c20a200441903c6a200a4200200f420010c20a200441c03b6a200a4200200c420010c20a200441903e6a200b42002020420010c20a200441d03d6a200d4200200e420010c20a200441903d6a201842002010420010c20a200441803c6a201d4200200f420010c20a200441b03b6a201d4200200c420010c20a200441803e6a200a42002020420010c20a200441c03d6a200b4200200e420010c20a200441803d6a200d42002010420010c20a200441c03c6a201842002012420010c20a200420042903d03c221320042903e03d7c220c20042903903c7c221820042903d03b7c221d20042903a03e7c222020042903a03d221420042903b03e7c220a20042903e03c7c220b20042903a03c7c220d20042903e03b7c220e20042903f03d221520042903f03b7c220f20042903b03d7c221020042903f03c7c221120042903b03c7c2212423388200441f03d6a41086a290300200441f03b6a41086a2903007c200f201554ad7c200441b03d6a41086a2903007c2010200f54ad7c200441f03c6a41086a2903007c2011201054ad7c200441b03c6a41086a2903007c2012201154ad7c420d86847c220f423388200441a03d6a41086a290300200441b03e6a41086a2903007c200a201454ad7c200441e03c6a41086a2903007c200b200a54ad7c200441a03c6a41086a2903007c200d200b54ad7c200441e03b6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703884f200420042903803c221120042903903d7c220b20042903c03b7c220d20042903903e7c220e20042903d03d7c2210200a423388200441d03c6a41086a290300200441e03d6a41086a2903007c200c201354ad7c200441903c6a41086a2903007c2018200c54ad7c200441d03b6a41086a2903007c201d201854ad7c200441a03e6a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff03833703904f200420042903b03b221320042903c03c7c221820042903803e7c221d20042903c03d7c222020042903803d7c220a200c423388200441803c6a41086a290300200441903d6a41086a2903007c200b201154ad7c200441c03b6a41086a2903007c200d200b54ad7c200441903e6a41086a2903007c200e200d54ad7c200441d03d6a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff03833703984f2004200c423388200441b03b6a41086a290300200441c03c6a41086a2903007c2018201354ad7c200441803e6a41086a2903007c201d201854ad7c200441c03d6a41086a2903007c2020201d54ad7c200441803d6a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff03833703f84e2004200c423388200f42ffffffffffffff03837c3703804f200441e03a6a20042903e848220c420020042903a04b2218420010c20a200441d03a6a200441a8ca006a4198016a290300221d4200202d290300222042137e420010c20a200441803a6a200441a8ca006a4190016a290300220a4200202a290300220e42137e2212420010c20a200441b0396a200441a8ca006a4188016a290300220b4200202b290300221042137e2211420010c20a200441e0386a200441a8ca006a4180016a290300220d4200202c290300221342137e220f420010c20a200441d0386a200d4200200c420010c20a200441a03b6a201842002020420010c20a200441c03a6a201d42002012420010c20a200441f0396a200a42002011420010c20a200441a0396a200b4200200f420010c20a20044190396a200b4200200c420010c20a200441c0386a200d42002020420010c20a200441903b6a20184200200e420010c20a200441b03a6a201d42002011420010c20a200441e0396a200a4200200f420010c20a200441d0396a200a4200200c420010c20a20044180396a200b42002020420010c20a200441b0386a200d4200200e420010c20a200441803b6a201842002010420010c20a200441a03a6a201d4200200f420010c20a200441903a6a201d4200200c420010c20a200441c0396a200a42002020420010c20a200441f0386a200b4200200e420010c20a200441a0386a200d42002010420010c20a200441f03a6a201842002013420010c20a200420042903903a221c20042903f03a7c220c20042903c0397c221820042903f0387c221d20042903a0387c222020042903a03a221e20042903803b7c220a20042903d0397c220b2004290380397c220d20042903b0387c220e20042903b03a221f20042903903b7c220f20042903e0397c22102004290390397c221120042903c0387c221220042903c03a222120042903a03b7c221320042903f0397c221420042903a0397c221520042903d0387c221620042903d03a222220042903e03a7c221720042903803a7c221920042903b0397c221a20042903e0387c221b423388200441d03a6a41086a290300200441e03a6a41086a2903007c2017202254ad7c200441803a6a41086a2903007c2019201754ad7c200441b0396a41086a2903007c201a201954ad7c200441e0386a41086a2903007c201b201a54ad7c420d86847c2217423388200441c03a6a41086a290300200441a03b6a41086a2903007c2013202154ad7c200441f0396a41086a2903007c2014201354ad7c200441a0396a41086a2903007c2015201454ad7c200441d0386a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2213423388200441b03a6a41086a290300200441903b6a41086a2903007c200f201f54ad7c200441e0396a41086a2903007c2010200f54ad7c20044190396a41086a2903007c2011201054ad7c200441c0386a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03a6a41086a290300200441803b6a41086a2903007c200a201e54ad7c200441d0396a41086a2903007c200b200a54ad7c20044180396a41086a2903007c200d200b54ad7c200441b0386a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703c04f2004200f42ffffffffffffff03833703b84f2004201342ffffffffffffff03833703b04f2004200a423388200441903a6a41086a290300200441f03a6a41086a2903007c200c201c54ad7c200441c0396a41086a2903007c2018200c54ad7c200441f0386a41086a2903007c201d201854ad7c200441a0386a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c220c423388201742ffffffffffffff03837c3703a84f2004200c42ffffffffffffff03833703a04f20044190356a20042903c048220c420020042903f84a2218420010c20a200441a0366a200441a8ca006a41f0006a290300221d42002029290300222042137e420010c20a200441e0366a200441a8ca006a41e8006a290300220a42002028290300220e42137e2212420010c20a200441a0376a200441a8ca006a41e0006a290300220b42002027290300221042137e2211420010c20a200441e0376a200441a8ca006a41d8006a290300220d42002026290300221342137e220f420010c20a200441e0356a200d4200200c420010c20a200441a0356a201842002020420010c20a200441b0366a201d42002012420010c20a200441f0366a200a42002011420010c20a200441b0376a200b4200200f420010c20a200441f0356a200b4200200c420010c20a200441f0376a200d42002020420010c20a200441b0356a20184200200e420010c20a200441c0366a201d42002011420010c20a20044180376a200a4200200f420010c20a20044180366a200a4200200c420010c20a200441c0376a200b42002020420010c20a20044180386a200d4200200e420010c20a200441c0356a201842002010420010c20a200441d0366a201d4200200f420010c20a20044190366a201d4200200c420010c20a20044190376a200a42002020420010c20a200441d0376a200b4200200e420010c20a20044190386a200d42002010420010c20a200441d0356a201842002013420010c20a200441c8cf006a41106a20042903c036221320042903b0357c220c2004290380377c221820042903f0357c221d20042903f0377c222020042903b036221420042903a0357c220a20042903f0367c220b20042903b0377c220d20042903e0357c220e20042903a03622152004290390357c220f20042903e0367c221020042903a0377c221120042903e0377c2212423388200441a0366a41086a29030020044190356a41086a2903007c200f201554ad7c200441e0366a41086a2903007c2010200f54ad7c200441a0376a41086a2903007c2011201054ad7c200441e0376a41086a2903007c2012201154ad7c420d86847c220f423388200441b0366a41086a290300200441a0356a41086a2903007c200a201454ad7c200441f0366a41086a2903007c200b200a54ad7c200441b0376a41086a2903007c200d200b54ad7c200441e0356a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383220b370300200441c8cf006a41186a20042903d036221420042903c0357c220d2004290380367c220e20042903c0377c22102004290380387c2211200a423388200441c0366a41086a290300200441b0356a41086a2903007c200c201354ad7c20044180376a41086a2903007c2018200c54ad7c200441f0356a41086a2903007c201d201854ad7c200441f0376a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff03832218370300200441c8cf006a41206a200429039036221520042903d0357c221d2004290390377c222020042903d0377c220a2004290390387c2213200c423388200441d0366a41086a290300200441c0356a41086a2903007c200d201454ad7c20044180366a41086a2903007c200e200d54ad7c200441c0376a41086a2903007c2010200e54ad7c20044180386a41086a2903007c2011201054ad7c200c201154ad7c420d86847c220c42ffffffffffffff0383220d370300200441c8cf006a41086a200c42338820044190366a41086a290300200441d0356a41086a2903007c201d201554ad7c20044190376a41086a2903007c2020201d54ad7c200441d0376a41086a2903007c200a202054ad7c20044190386a41086a2903007c2013200a54ad7c200c201354ad7c420d868442137e201242ffffffffffffff03837c221d423388200f42ffffffffffffff03837c220c3703002004201d42ffffffffffffff0383221d3703c84f20044198d0006a41086a2224200c200c7c37030020044198d0006a41106a2225200b200b7c37030020044198d0006a41186a2226201820187c37030020044198d0006a41206a2227200d200d7c3703002004201d201d7c3703985020042903f84e211c20042903804f211e20042903884f211f200420042903803f222120042903903f7c220c2004290380417c221820042903b0407c221d20042903e03f7c222020042903a03f222220042903f03f7c220a20042903f03e7c220b2004290390417c220d20042903c0407c220e200429038040222320042903d0407c220f20042903b03f7c221020042903e03e7c221120042903a0417c221220042903e040223520042903b0417c22132004290390407c221420042903c03f7c221520042903d03e7c221620042903c041223620042903c03e7c221720042903f0407c221920042903a0407c221a20042903d03f7c221b423388200441c0c1006a41086a290300200441c03e6a41086a2903007c2017203654ad7c200441f0c0006a41086a2903007c2019201754ad7c200441a0c0006a41086a2903007c201a201954ad7c200441d03f6a41086a2903007c201b201a54ad7c420d86847c2217423388200441e0c0006a41086a290300200441b0c1006a41086a2903007c2013203554ad7c20044190c0006a41086a2903007c2014201354ad7c200441c03f6a41086a2903007c2015201454ad7c200441d03e6a41086a2903007c2016201554ad7c2017201654ad7c420d86847c221342338820044180c0006a41086a290300200441d0c0006a41086a2903007c200f202354ad7c200441b03f6a41086a2903007c2010200f54ad7c200441e03e6a41086a2903007c2011201054ad7c200441a0c1006a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03f6a41086a290300200441f03f6a41086a2903007c200a202254ad7c200441f03e6a41086a2903007c200b200a54ad7c20044190c1006a41086a2903007c200d200b54ad7c200441c0c0006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383220b20042903984f7d42f0ffffffffffff3f7c221042ffffffffffffff0383200f42ffffffffffffff0383220d20042903904f7d42f0ffffffffffff3f7c220e4233887c3703d04d2004200e42ffffffffffffff0383201342ffffffffffffff0383220e201f7d42f0ffffffffffff3f7c220f4233887c3703c84d2004200f42ffffffffffffff0383200a423388200441803f6a41086a290300200441903f6a41086a2903007c200c202154ad7c20044180c1006a41086a2903007c2018200c54ad7c200441b0c0006a41086a2903007c201d201854ad7c200441e03f6a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c2218423388201742ffffffffffffff03837c220c201e7d42f0ffffffffffff3f7c221d4233887c3703c04d2004201842ffffffffffffff038322183703d84d2004201d42ffffffffffffff03832018201c7d42d0fdffffffffff3f7c221d4233887c3703b84d2004201042338842137e201d42ffffffffffffff03837c3703b04d200441b0cd006a41306a2228200c370300200441b0cd006a41386a2229200e370300200441b0cd006a41c0006a222a200d370300200441b0cd006a41c8006a222b200b3703002004201820042903f84e7c3703d84d2028200c20042903804f7c3703002029200e20042903884f7c370300202a200d20042903904f7c370300202b200b20042903984f7c370300200441b0cd006a41f0006a22062027290300370300200441b0cd006a41e8006a22072026290300370300200441b0cd006a41e0006a22082025290300370300200441b0cd006a41d8006a2209202429030037030020042004290398503703804e200420042903804e20042903a04f7c3703804e2009200929030020042903a84f7c3703002008200829030020042903b04f7c3703002007200729030020042903b84f7c3703002006200629030020042903c04f7c3703002024290300210c2025290300211820042903a04f211d200429039850212020042903a84f210a20042903b04f210b200441b0cd006a4198016a202729030020042903c04f7d42f0ffffffffffff3f7c220d42ffffffffffffff0383202629030020042903b84f7d42f0ffffffffffff3f7c220e4233887c221e370300200441b0cd006a4190016a200e42ffffffffffffff03832018200b7d42f0ffffffffffff3f7c22184233887c221b370300200441b0cd006a4188016a201842ffffffffffffff0383200c200a7d42f0ffffffffffff3f7c220c4233887c2214370300200441b0cd006a4180016a200c42ffffffffffffff03832020201d7d42d0fdffffffffff3f7c220c4233887c22183703002004200d42338842137e200c42ffffffffffffff03837c220c3703a84e200441e0296a200c420020042903b04d221d420010c20a200441802b6a20042903d04d22204200201842137e2223420010c20a200441902c6a20042903c84d220a4200201442137e221f420010c20a200441a02d6a20042903c04d220b4200201b42137e221c420010c20a200441b02e6a20042903b84d220d4200201e42137e2215420010c20a200441d0296a200d4200200c420010c20a200441f0296a201d42002018420010c20a200441902b6a20204200201f420010c20a200441a02c6a200a4200201c420010c20a200441b02d6a200b42002015420010c20a200441c0296a200b4200200c420010c20a200441c02e6a200d42002018420010c20a200441802a6a201d42002014420010c20a200441a02b6a20204200201c420010c20a200441b02c6a200a42002015420010c20a20044190286a200a4200200c420010c20a200441c02d6a200b42002018420010c20a200441d02e6a200d42002014420010c20a200441902a6a201d4200201b420010c20a200441b02b6a202042002015420010c20a200441e0266a20204200200c420010c20a200441c02c6a200a42002018420010c20a200441d02d6a200b42002014420010c20a200441e02e6a200d4200201b420010c20a200441a02a6a201d4200201e420010c20a200441c02f6a20042903804e220e420020042903d84d220f420010c20a20044180336a202b290300221942002009290300221042137e420010c20a200441c0326a202a290300221642002008290300221242137e2235420010c20a20044180326a2029290300221342002007290300221742137e2222420010c20a200441c0316a2028290300221142002006290300221a42137e2221420010c20a20044190306a20114200200e420010c20a200441d02f6a200f42002010420010c20a200441f0326a201942002035420010c20a200441b0326a201642002022420010c20a200441f0316a201342002021420010c20a200441a0306a20134200200e420010c20a200441b0316a201142002010420010c20a200441e02f6a200f42002012420010c20a200441e0326a201942002022420010c20a200441a0326a201642002021420010c20a200441b0306a20164200200e420010c20a200441e0316a201342002010420010c20a200441a0316a201142002012420010c20a200441f02f6a200f42002017420010c20a200441d0326a201942002021420010c20a200441c0306a20194200200e420010c20a20044190326a201642002010420010c20a200441d0316a201342002012420010c20a20044190316a201142002017420010c20a20044180306a200f4200201a420010c20a200441b0226a200c4200200e420010c20a200441c0336a201a42002023420010c20a20044180346a20174200201f420010c20a200441c0346a20124200201c420010c20a20044180356a201042002015420010c20a200441c0226a20104200200c420010c20a200441d0306a200e42002018420010c20a200441b0336a201a4200201f420010c20a200441f0336a20174200201c420010c20a200441b0346a201242002015420010c20a200441d0226a20124200200c420010c20a200441f0346a201042002018420010c20a200441e0306a200e42002014420010c20a200441a0336a201a4200201c420010c20a200441e0336a201742002015420010c20a200441e0226a20174200200c420010c20a200441a0346a201242002018420010c20a200441e0346a201042002014420010c20a200441f0306a200e4200201b420010c20a20044190336a201a42002015420010c20a200441f0226a201a4200200c420010c20a200441d0336a201742002018420010c20a20044190346a201242002014420010c20a200441d0346a20104200201b420010c20a20044180316a200e4200201e420010c20a200441b02a6a200f4200201d420010c20a200441c02b6a20204200201142137e420010c20a200441d02c6a200a4200201342137e220e420010c20a200441e02d6a200b4200201642137e2218420010c20a200441f02e6a200d4200201942137e220c420010c20a200441802f6a200d4200200f420010c20a200441c02a6a201d42002011420010c20a200441d02b6a20204200200e420010c20a200441e02c6a200a42002018420010c20a200441f02d6a200b4200200c420010c20a200441802e6a200b4200200f420010c20a200441902f6a200d42002011420010c20a200441d02a6a201d42002013420010c20a200441e02b6a202042002018420010c20a200441f02c6a200a4200200c420010c20a200441802d6a200a4200200f420010c20a200441902e6a200b42002011420010c20a200441a02f6a200d42002013420010c20a200441e02a6a201d42002016420010c20a200441f02b6a20204200200c420010c20a200441802c6a20204200200f420010c20a200441902d6a200a42002011420010c20a200441a02e6a200b42002013420010c20a200441b02f6a200d42002016420010c20a200441f02a6a201d42002019420010c20a200420042903e032221320042903e02f7c220c20042903a0327c221820042903a0307c221d20042903b0317c222020042903f032221420042903d02f7c220a20042903b0327c220b20042903f0317c220d2004290390307c220e200429038033221520042903c02f7c220f20042903c0327c22102004290380327c221120042903c0317c221242338820044180336a41086a290300200441c02f6a41086a2903007c200f201554ad7c200441c0326a41086a2903007c2010200f54ad7c20044180326a41086a2903007c2011201054ad7c200441c0316a41086a2903007c2012201154ad7c420d86847c220f423388200441f0326a41086a290300200441d02f6a41086a2903007c200a201454ad7c200441b0326a41086a2903007c200b200a54ad7c200441f0316a41086a2903007c200d200b54ad7c20044190306a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff038322173703d84f200420042903d032221120042903f02f7c220b20042903b0307c220d20042903e0317c220e20042903a0317c2210200a423388200441e0326a41086a290300200441e02f6a41086a2903007c200c201354ad7c200441a0326a41086a2903007c2018200c54ad7c200441a0306a41086a2903007c201d201854ad7c200441b0316a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff0383221a3703e04f200420042903c03022132004290380307c22182004290390327c221d20042903d0317c22202004290390317c220a200c423388200441d0326a41086a290300200441f02f6a41086a2903007c200b201154ad7c200441b0306a41086a2903007c200d200b54ad7c200441e0316a41086a2903007c200e200d54ad7c200441a0316a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff038322223703e84f2004200c423388200441c0306a41086a29030020044180306a41086a2903007c2018201354ad7c20044190326a41086a2903007c201d201854ad7c200441d0316a41086a2903007c2020201d54ad7c20044190316a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff038322143703c84f2004200c423388200f42ffffffffffffff03837c22153703d04f200441a01f6a20042903f02222232004290380317c220c20042903d0337c22182004290390347c221d20042903d0347c2220200429039033223520042903f0307c220a20042903e0227c220b20042903a0347c220d20042903e0347c220e20042903a033223620042903e0307c220f20042903e0337c221020042903d0227c221120042903f0347c221220042903b033223720042903d0307c221320042903f0337c221620042903b0347c221920042903c0227c221b20042903c033223820042903b0227c221c2004290380347c221e20042903c0347c221f2004290380357c2221423388200441c0336a41086a290300200441b0226a41086a2903007c201c203854ad7c20044180346a41086a2903007c201e201c54ad7c200441c0346a41086a2903007c201f201e54ad7c20044180356a41086a2903007c2021201f54ad7c420d86847c221c423388200441b0336a41086a290300200441d0306a41086a2903007c2013203754ad7c200441f0336a41086a2903007c2016201354ad7c200441b0346a41086a2903007c2019201654ad7c200441c0226a41086a2903007c201b201954ad7c201c201b54ad7c420d86847c2213423388200441a0336a41086a290300200441e0306a41086a2903007c200f203654ad7c200441e0336a41086a2903007c2010200f54ad7c200441d0226a41086a2903007c2011201054ad7c200441f0346a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f42338820044190336a41086a290300200441f0306a41086a2903007c200a203554ad7c200441e0226a41086a2903007c200b200a54ad7c200441a0346a41086a2903007c200d200b54ad7c200441e0346a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383223942f0ffffffffffff3f7c223a20227d221242338842137e200a423388200441f0226a41086a29030020044180316a41086a2903007c200c202354ad7c200441d0336a41086a2903007c2018200c54ad7c20044190346a41086a2903007c201d201854ad7c200441d0346a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e202142ffffffffffffff03837c222042ffffffffffffff0383223b42d0fdffffffffff3f7c223c20147d220a42ffffffffffffff03837c220c4200203b20147c2218420010c20a200441e0206a203920227c221d42002020423388201c42ffffffffffffff03837c223d42f0ffffffffffff3f7c223e20157d220b42ffffffffffffff0383200a4233887c222042137e420010c20a200441c0216a200f42ffffffffffffff0383223f201a7c220a4200201342ffffffffffffff0383224042f0ffffffffffff3f7c224120177d220d42ffffffffffffff0383200b4233887c220e42137e2213420010c20a200441d0216a204020177c220b4200203f42f0ffffffffffff3f7c2242201a7d220f42ffffffffffffff0383200d4233887c221042137e2211420010c20a200441f0206a203d20157c220d4200201242ffffffffffffff0383200f4233887c221242137e220f420010c20a200441a0206a200d4200200c420010c20a200441b01f6a201842002020420010c20a200441b0216a201d42002013420010c20a20044180226a200a42002011420010c20a200441e0216a200b4200200f420010c20a20044190206a200b4200200c420010c20a200441d0206a200d42002020420010c20a200441c01f6a20184200200e420010c20a200441f0216a201d42002011420010c20a20044190226a200a4200200f420010c20a20044180206a200a4200200c420010c20a200441c0206a200b42002020420010c20a20044180216a200d4200200e420010c20a200441d01f6a201842002010420010c20a200441a0226a201d4200200f420010c20a200441f01f6a201d4200200c420010c20a200441b0206a200a42002020420010c20a200441a0216a200b4200200e420010c20a20044190216a200d42002010420010c20a200441e01f6a201842002012420010c20a20044190246a2014420020042903e026222320042903a02a7c220c20042903c02c7c221820042903d02d7c221d20042903e02e7c222020042903b02b223520042903902a7c220a2004290390287c220b20042903c02d7c220d20042903d02e7c220e20042903a02b223620042903802a7c220f20042903b02c7c221020042903c0297c221120042903c02e7c221220042903902b223720042903f0297c221320042903a02c7c221620042903b02d7c221920042903d0297c221b20042903802b223820042903e0297c221c20042903902c7c221e20042903a02d7c221f20042903b02e7c2221423388200441802b6a41086a290300200441e0296a41086a2903007c201c203854ad7c200441902c6a41086a2903007c201e201c54ad7c200441a02d6a41086a2903007c201f201e54ad7c200441b02e6a41086a2903007c2021201f54ad7c420d86847c221c423388200441902b6a41086a290300200441f0296a41086a2903007c2013203754ad7c200441a02c6a41086a2903007c2016201354ad7c200441b02d6a41086a2903007c2019201654ad7c200441d0296a41086a2903007c201b201954ad7c201c201b54ad7c420d86847c2213423388200441a02b6a41086a290300200441802a6a41086a2903007c200f203654ad7c200441b02c6a41086a2903007c2010200f54ad7c200441c0296a41086a2903007c2011201054ad7c200441c02e6a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441b02b6a41086a290300200441902a6a41086a2903007c200a203554ad7c20044190286a41086a2903007c200b200a54ad7c200441c02d6a41086a2903007c200d200b54ad7c200441d02e6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a423388200441e0266a41086a290300200441a02a6a41086a2903007c200c202354ad7c200441c02c6a41086a2903007c2018200c54ad7c200441d02d6a41086a2903007c201d201854ad7c200441e02e6a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e202142ffffffffffffff03837c220c42ffffffffffffff03832218420010c20a200441c0256a200a42ffffffffffffff0383221d4200201542137e420010c20a200441f0266a200f42ffffffffffffff038322204200201742137e220e420010c20a200441a0286a201342ffffffffffffff0383220a4200201a42137e220d420010c20a200441b0256a200c423388201c42ffffffffffffff03837c220b4200202242137e220c420010c20a200441a0256a200b42002014420010c20a20044180246a201842002015420010c20a200441d0256a201d4200200e420010c20a20044180276a20204200200d420010c20a200441b0286a200a4200200c420010c20a200441c0286a200a42002014420010c20a20044190256a200b42002015420010c20a200441f0236a201842002017420010c20a200441e0256a201d4200200d420010c20a20044190276a20204200200c420010c20a200441a0276a202042002014420010c20a200441d0286a200a42002015420010c20a20044180256a200b42002017420010c20a200441e0236a20184200201a420010c20a200441f0256a201d4200200c420010c20a20044180266a201d42002014420010c20a200441b0276a202042002015420010c20a200441e0286a200a42002017420010c20a200441f0246a200b4200201a420010c20a200441d0236a201842002022420010c20a200420042903e025221e20042903f0237c220c2004290390277c220d20042903c0287c220e2004290390257c220f20042903d025221f2004290380247c22102004290380277c221120042903b0287c221220042903a0257c221320042903c02522212004290390247c221620042903f0267c221920042903a0287c221b20042903b0257c221c423388200441c0256a41086a29030020044190246a41086a2903007c2016202154ad7c200441f0266a41086a2903007c2019201654ad7c200441a0286a41086a2903007c201b201954ad7c200441b0256a41086a2903007c201c201b54ad7c420d86847c2216423388200441d0256a41086a29030020044180246a41086a2903007c2010201f54ad7c20044180276a41086a2903007c2011201054ad7c200441b0286a41086a2903007c2012201154ad7c200441a0256a41086a2903007c2013201254ad7c2016201354ad7c420d86847c221042ffffffffffffff03833703a850200420042903f025221b20042903e0237c221120042903a0277c221220042903d0287c22132004290380257c22192010423388200441e0256a41086a290300200441f0236a41086a2903007c200c201e54ad7c20044190276a41086a2903007c200d200c54ad7c200441c0286a41086a2903007c200e200d54ad7c20044190256a41086a2903007c200f200e54ad7c2010200f54ad7c420d86847c220c42ffffffffffffff03833703b0502004200429038026221e20042903d0237c220d20042903b0277c220e20042903e0287c220f20042903f0247c2210200c423388200441f0256a41086a290300200441e0236a41086a2903007c2011201b54ad7c200441a0276a41086a2903007c2012201154ad7c200441d0286a41086a2903007c2013201254ad7c20044180256a41086a2903007c2019201354ad7c200c201954ad7c420d86847c220c42ffffffffffffff03833703b8502004200c42338820044180266a41086a290300200441d0236a41086a2903007c200d201e54ad7c200441b0276a41086a2903007c200e200d54ad7c200441e0286a41086a2903007c200f200e54ad7c200441f0246a41086a2903007c2010200f54ad7c200c201054ad7c420d868442137e201c42ffffffffffffff03837c220c42ffffffffffffff0383370398502004200c423388201642ffffffffffffff03837c3703a050200441b01f6a41086a2903002143200441b0216a41086a290300214420042903b01f213720042903b021210c20044180226a41086a29030021452004290380222138200441e0216a41086a290300214620042903e0212147200441a0206a41086a290300214820042903a0202149200441a01f6a41086a290300214a200441e0206a41086a290300214b20042903a01f214c20042903e020210d200441c0216a41086a290300214d20042903c021214e200441d0216a41086a290300214f20042903d0212150200441f0206a41086a290300215120042903f020215220042903f021210f20042903c01f21212004290390222123200429039020213520042903d0202136200441f0216a41086a2903002153200441c01f6a41086a290300215420044190226a41086a290300215520044190206a41086a2903002156200441d0206a41086a290300215720042903a022211020042903d01f211b200429038020211c20042903c020211e200429038021211f200441a0226a41086a2903002158200441d01f6a41086a290300215920044180206a41086a290300215a200441c0206a41086a290300215b20044180216a41086a290300215c20042903e01f211220042903f01f211120042903b020211320042903a02121162004290390212119200441e01f6a41086a290300215d200441f01f6a41086a290300215e200441b0206a41086a290300215f200441a0216a41086a290300216020044190216a41086a290300216120044190cc006a20044198d0006a41011078200441d01c6a20042903904c220e4200201920162013201120127c22127c22137c22167c2219201f201e201c2010201b7c221b7c221c7c221e7c221f203620352023200f20217c22217c22237c22357c2236204920472038200c20377c22377c22387c22477c224920522050204e200d204c7c224c7c224e7c22507c22524233882051204f204d204b204a7c204c200d54ad7c7c204e204c54ad7c7c2050204e54ad7c7c2052205054ad7c420d86847c220d423388204820462045204420437c2037200c54ad7c7c2038203754ad7c7c2047203854ad7c7c2049204754ad7c200d204954ad7c420d86847c2237423388205720562055205320547c2021200f54ad7c7c2023202154ad7c7c2035202354ad7c7c2036203554ad7c2037203654ad7c420d86847c2221423388205c205b205a205820597c201b201054ad7c7c201c201b54ad7c7c201e201c54ad7c7c201f201e54ad7c2021201f54ad7c420d86847c220f42338820612060205f205e205d7c2012201154ad7c7c2013201254ad7c7c2016201354ad7c7c2019201654ad7c200f201954ad7c420d868442137e205242ffffffffffffff03837c221142ffffffffffffff0383220c420010c20a200441d01e6a200f42ffffffffffffff03832219420020042903984c220f42137e420010c20a200441801e6a202142ffffffffffffff03832216420020042903a04c221042137e221c420010c20a200441b01d6a203742ffffffffffffff03832213420020042903a84c221242137e221b420010c20a200441a01d6a2011423388200d42ffffffffffffff03837c220d420020042903b04c221e42137e2211420010c20a200441901d6a200d4200200e420010c20a200441c01c6a200c4200200f420010c20a200441e01e6a20194200201c420010c20a200441901e6a20164200201b420010c20a200441c01d6a201342002011420010c20a200441d01d6a20134200200e420010c20a200441801d6a200d4200200f420010c20a200441b01c6a200c42002010420010c20a200441f01e6a20194200201b420010c20a200441a01e6a201642002011420010c20a200441b01e6a20164200200e420010c20a200441e01d6a20134200200f420010c20a200441f01c6a200d42002010420010c20a200441a01c6a200c42002012420010c20a200441801f6a201942002011420010c20a200441901f6a20194200200e420010c20a200441c01e6a20164200200f420010c20a200441f01d6a201342002010420010c20a200441e01c6a200d42002012420010c20a200441901c6a200c4200201e420010c20a200420042903f01e223620042903b01c7c220e20042903a01e7c220f20042903d01d7c221020042903801d7c221120042903e01e223720042903c01c7c221220042903901e7c221b20042903c01d7c221c20042903901d7c221e20042903d01e223820042903d01c7c221f20042903801e7c222120042903b01d7c222320042903a01d7c2235423388200441d01e6a41086a290300200441d01c6a41086a2903007c201f203854ad7c200441801e6a41086a2903007c2021201f54ad7c200441b01d6a41086a2903007c2023202154ad7c200441a01d6a41086a2903007c2035202354ad7c420d86847c221f423388200441e01e6a41086a290300200441c01c6a41086a2903007c2012203754ad7c200441901e6a41086a2903007c201b201254ad7c200441c01d6a41086a2903007c201c201b54ad7c200441901d6a41086a2903007c201e201c54ad7c201f201e54ad7c420d86847c221242ffffffffffffff03833703b84a200420042903801f222320042903a01c7c221b20042903b01e7c221c20042903e01d7c221e20042903f01c7c22212012423388200441f01e6a41086a290300200441b01c6a41086a2903007c200e203654ad7c200441a01e6a41086a2903007c200f200e54ad7c200441d01d6a41086a2903007c2010200f54ad7c200441801d6a41086a2903007c2011201054ad7c2012201154ad7c420d86847c220e42ffffffffffffff03833703c04a200420042903901f223620042903901c7c220f20042903c01e7c221020042903f01d7c221120042903e01c7c2212200e423388200441801f6a41086a290300200441a01c6a41086a2903007c201b202354ad7c200441b01e6a41086a2903007c201c201b54ad7c200441e01d6a41086a2903007c201e201c54ad7c200441f01c6a41086a2903007c2021201e54ad7c200e202154ad7c420d86847c220e42ffffffffffffff03833703c84a2004200e423388200441901f6a41086a290300200441901c6a41086a2903007c200f203654ad7c200441c01e6a41086a2903007c2010200f54ad7c200441f01d6a41086a2903007c2011201054ad7c200441e01c6a41086a2903007c2012201154ad7c200e201254ad7c420d868442137e203542ffffffffffffff03837c220e42ffffffffffffff03833703a84a2004200e423388201f42ffffffffffffff03837c3703b04a200441b0cd006a41106a4200370300200441b0cd006a41186a4200370300200441b0cd006a41206a4200370300200442003703b84d200442013703b04d200441f0c7006a200441b0cd006a200441a8ca006a1079200441f0136a200c420020042903f847220e420010c20a20044190156a200441f0c7006a41286a290300220f4200200d42137e420010c20a200441b0166a200329030022104200201342137e221e420010c20a200441d0176a200229030022114200201642137e221c420010c20a200441f0186a200529030022124200201942137e221b420010c20a200441e0186a20124200200c420010c20a200441e0136a200e4200200d420010c20a20044180156a200f4200201e420010c20a200441a0166a20104200201c420010c20a200441c0176a20114200201b420010c20a200441b0176a20114200200c420010c20a200441d0186a20124200200d420010c20a200441d0136a200e42002013420010c20a200441f0146a200f4200201c420010c20a20044190166a20104200201b420010c20a20044180166a20104200200c420010c20a200441a0176a20114200200d420010c20a200441c0186a201242002013420010c20a200441f0126a200e42002016420010c20a200441e0146a200f4200201b420010c20a200441d0146a200f4200200c420010c20a200441f0156a20104200200d420010c20a20044190176a201142002013420010c20a200441b0186a201242002016420010c20a20044190126a200e42002019420010c20a200441b0116a200429039850220c4200200e420010c20a200441c0146a200f420020042903a050220d42137e420010c20a200441e0156a2010420020042903a850221342137e221c420010c20a20044180176a2011420020042903b050221942137e221b420010c20a200441a0186a2012420020042903b850221e42137e2216420010c20a20044190186a20124200200c420010c20a200441a0116a200e4200200d420010c20a200441b0146a200f4200201c420010c20a200441d0156a20104200201b420010c20a200441f0166a201142002016420010c20a200441e0166a20114200200c420010c20a20044180186a20124200200d420010c20a20044190116a200e42002013420010c20a200441a0146a200f4200201b420010c20a200441c0156a201042002016420010c20a200441b0156a20104200200c420010c20a200441d0166a20114200200d420010c20a200441f0176a201242002013420010c20a200441b0106a200e42002019420010c20a20044190146a200f42002016420010c20a20044180146a200f4200200c420010c20a200441a0156a20104200200d420010c20a200441c0166a201142002013420010c20a200441e0176a201242002019420010c20a200441d00f6a200e4200201e420010c20a200441800d6a20042903802c224720042903f02a7c220c20042903902d7c220d20042903a02e7c220e20042903b02f7c220f20042903f02b224920042903e02a7c221020042903802d7c221120042903902e7c221220042903a02f7c221320042903e02b224c20042903d02a7c221620042903f02c7c221920042903802e7c221b20042903902f7c221c20042903d02b224e20042903c02a7c221e20042903e02c7c221f20042903f02d7c222120042903802f7c222320042903c02b225020042903b02a7c223520042903d02c7c223620042903e02d7c223720042903f02e7c2238423388200441c02b6a41086a290300200441b02a6a41086a2903007c2035205054ad7c200441d02c6a41086a2903007c2036203554ad7c200441e02d6a41086a2903007c2037203654ad7c200441f02e6a41086a2903007c2038203754ad7c420d86847c2235423388200441d02b6a41086a290300200441c02a6a41086a2903007c201e204e54ad7c200441e02c6a41086a2903007c201f201e54ad7c200441f02d6a41086a2903007c2021201f54ad7c200441802f6a41086a2903007c2023202154ad7c2035202354ad7c420d86847c221f423388200441e02b6a41086a290300200441d02a6a41086a2903007c2016204c54ad7c200441f02c6a41086a2903007c2019201654ad7c200441802e6a41086a2903007c201b201954ad7c200441902f6a41086a2903007c201c201b54ad7c201f201c54ad7c420d86847c2216423388200441f02b6a41086a290300200441e02a6a41086a2903007c2010204954ad7c200441802d6a41086a2903007c2011201054ad7c200441902e6a41086a2903007c2012201154ad7c200441a02f6a41086a2903007c2013201254ad7c2016201354ad7c420d86847c2210423388200441802c6a41086a290300200441f02a6a41086a2903007c200c204754ad7c200441902d6a41086a2903007c200d200c54ad7c200441a02e6a41086a2903007c200e200d54ad7c200441b02f6a41086a2903007c200f200e54ad7c2010200f54ad7c420d868442137e203842ffffffffffffff03837c225242ffffffffffffff0383220d4200200429038014224320042903d00f7c220c20042903a0157c220e20042903c0167c220f20042903e0177c2211200429039014224420042903b0107c221220042903b0157c221320042903d0167c221920042903f0177c221b20042903a01422452004290390117c221c20042903c0157c221e20042903e0167c22212004290380187c222320042903b014224620042903a0117c223620042903d0157c223720042903f0167c22382004290390187c224720042903c014224820042903b0117c224920042903e0157c224c2004290380177c224e20042903a0187c2250423388200441c0146a41086a290300200441b0116a41086a2903007c2049204854ad7c200441e0156a41086a2903007c204c204954ad7c20044180176a41086a2903007c204e204c54ad7c200441a0186a41086a2903007c2050204e54ad7c420d86847c2249423388200441b0146a41086a290300200441a0116a41086a2903007c2036204654ad7c200441d0156a41086a2903007c2037203654ad7c200441f0166a41086a2903007c2038203754ad7c20044190186a41086a2903007c2047203854ad7c2049204754ad7c420d86847c2236423388200441a0146a41086a29030020044190116a41086a2903007c201c204554ad7c200441c0156a41086a2903007c201e201c54ad7c200441e0166a41086a2903007c2021201e54ad7c20044180186a41086a2903007c2023202154ad7c2036202354ad7c420d86847c221e42338820044190146a41086a290300200441b0106a41086a2903007c2012204454ad7c200441b0156a41086a2903007c2013201254ad7c200441d0166a41086a2903007c2019201354ad7c200441f0176a41086a2903007c201b201954ad7c201e201b54ad7c420d86847c221242338820044180146a41086a290300200441d00f6a41086a2903007c200c204354ad7c200441a0156a41086a2903007c200e200c54ad7c200441c0166a41086a2903007c200f200e54ad7c200441e0176a41086a2903007c2011200f54ad7c2012201154ad7c420d868442137e205042ffffffffffffff03837c220c42ffffffffffffff0383221b420010c20a200441800f6a201242ffffffffffffff0383221c42002052423388203542ffffffffffffff03837c220e42137e420010c20a200441e00f6a201e42ffffffffffffff0383221e4200201f42ffffffffffffff0383220f42137e2212420010c20a200441c0106a203642ffffffffffffff0383221f4200201642ffffffffffffff0383221642137e2211420010c20a200441d00d6a200c423388204942ffffffffffffff03837c22214200201042ffffffffffffff0383221942137e220c420010c20a200441c00d6a20214200200d420010c20a200441f00c6a201b4200200e420010c20a200441900f6a201c42002012420010c20a200441f00f6a201e42002011420010c20a200441d0106a201f4200200c420010c20a200441e0106a201f4200200d420010c20a200441b00d6a20214200200e420010c20a200441e00c6a201b4200200f420010c20a200441a00f6a201c42002011420010c20a20044180106a201e4200200c420010c20a20044190106a201e4200200d420010c20a200441f0106a201f4200200e420010c20a200441a00d6a20214200200f420010c20a200441a00c6a201b42002016420010c20a200441b00f6a201c4200200c420010c20a200441c00f6a201c4200200d420010c20a200441a0106a201e4200200e420010c20a20044180116a201f4200200f420010c20a200441900d6a202142002016420010c20a200441f00b6a201b42002019420010c20a200441f0096a20042903c00f224820042903f00b7c220c20042903a0107c22102004290380117c221120042903900d7c221220042903b00f224a20042903a00c7c22132004290390107c222320042903f0107c223520042903a00d7c223620042903a00f224b20042903e00c7c22372004290380107c223820042903e0107c224720042903b00d7c224920042903900f224d20042903f00c7c224c20042903f00f7c224e20042903d0107c225020042903c00d7c225220042903800f224f20042903800d7c224320042903e00f7c224420042903c0107c224520042903d00d7c2246423388200441800f6a41086a290300200441800d6a41086a2903007c2043204f54ad7c200441e00f6a41086a2903007c2044204354ad7c200441c0106a41086a2903007c2045204454ad7c200441d00d6a41086a2903007c2046204554ad7c420d86847c2243423388200441900f6a41086a290300200441f00c6a41086a2903007c204c204d54ad7c200441f00f6a41086a2903007c204e204c54ad7c200441d0106a41086a2903007c2050204e54ad7c200441c00d6a41086a2903007c2052205054ad7c2043205254ad7c420d86847c224c423388200441a00f6a41086a290300200441e00c6a41086a2903007c2037204b54ad7c20044180106a41086a2903007c2038203754ad7c200441e0106a41086a2903007c2047203854ad7c200441b00d6a41086a2903007c2049204754ad7c204c204954ad7c420d86847c2237423388200441b00f6a41086a290300200441a00c6a41086a2903007c2013204a54ad7c20044190106a41086a2903007c2023201354ad7c200441f0106a41086a2903007c2035202354ad7c200441a00d6a41086a2903007c2036203554ad7c2037203654ad7c420d86847c2238423388200441c00f6a41086a290300200441f00b6a41086a2903007c200c204854ad7c200441a0106a41086a2903007c2010200c54ad7c20044180116a41086a2903007c2011201054ad7c200441900d6a41086a2903007c2012201154ad7c2038201254ad7c420d868442137e204642ffffffffffffff03837c225142ffffffffffffff03832223420020042903d01422532004290390127c220c20042903f0157c22102004290390177c221120042903b0187c221220042903e014225420042903f0127c22132004290380167c223520042903a0177c223620042903c0187c224720042903f014225520042903d0137c22492004290390167c224e20042903b0177c225020042903d0187c2252200429038015225620042903e0137c224420042903a0167c224520042903c0177c224620042903e0187c2248200429039015225720042903f0137c224a20042903b0167c224b20042903d0177c224d20042903f0187c224f42338820044190156a41086a290300200441f0136a41086a2903007c204a205754ad7c200441b0166a41086a2903007c204b204a54ad7c200441d0176a41086a2903007c204d204b54ad7c200441f0186a41086a2903007c204f204d54ad7c420d86847c224a42338820044180156a41086a290300200441e0136a41086a2903007c2044205654ad7c200441a0166a41086a2903007c2045204454ad7c200441c0176a41086a2903007c2046204554ad7c200441e0186a41086a2903007c2048204654ad7c204a204854ad7c420d86847c2244423388200441f0146a41086a290300200441d0136a41086a2903007c2049205554ad7c20044190166a41086a2903007c204e204954ad7c200441b0176a41086a2903007c2050204e54ad7c200441d0186a41086a2903007c2052205054ad7c2044205254ad7c420d86847c2249423388200441e0146a41086a290300200441f0126a41086a2903007c2013205454ad7c20044180166a41086a2903007c2035201354ad7c200441a0176a41086a2903007c2036203554ad7c200441c0186a41086a2903007c2047203654ad7c2049204754ad7c420d86847c2213423388200441d0146a41086a29030020044190126a41086a2903007c200c205354ad7c200441f0156a41086a2903007c2010200c54ad7c20044190176a41086a2903007c2011201054ad7c200441b0186a41086a2903007c2012201154ad7c2013201254ad7c420d868442137e204f42ffffffffffffff03837c224e42ffffffffffffff0383220c420010c20a200441c00a6a201342ffffffffffffff0383221042002051423388204342ffffffffffffff03837c223542137e420010c20a200441e00a6a204942ffffffffffffff038322114200204c42ffffffffffffff0383223642137e224c420010c20a200441900b6a204442ffffffffffffff038322124200203742ffffffffffffff0383224742137e2249420010c20a200441d00b6a204e423388204a42ffffffffffffff03837c22134200203842ffffffffffffff0383223842137e2237420010c20a200441e0096a201342002023420010c20a200441b00a6a200c42002035420010c20a200441d00a6a20104200204c420010c20a200441800b6a201142002049420010c20a200441c00b6a201242002037420010c20a200441d0096a201242002023420010c20a200441a00a6a201342002035420010c20a200441b00c6a200c42002036420010c20a200441f00a6a201042002049420010c20a200441b00b6a201142002037420010c20a200441f0086a201142002023420010c20a200441900a6a201242002035420010c20a200441c00c6a201342002036420010c20a200441800c6a200c42002047420010c20a200441a00b6a201042002037420010c20a20044190086a201042002023420010c20a200441800a6a201142002035420010c20a200441d00c6a201242002036420010c20a200441900c6a201342002047420010c20a200441e00b6a200c42002038420010c20a200441c0236a2018420042b0c1bad0f4e48603420010c20a20044190266a201d420042a7a7fbf49beaf607420010c20a200441c0276a2020420042a0d69f90da80b1cb00420010c20a200441f0286a200a420042badf96dcb5c3bac700420010c20a200441e0246a200b420042a7ecfac2b5f7ea19420010c20a200441d0246a200b420042b0c1bad0f4e48603420010c20a200441b0236a20184200429db1bce4dfb435420010c20a200441a0266a201d420042a0d69f90da80b1cb00420010c20a200441d0276a2020420042badf96dcb5c3bac700420010c20a20044180296a200a420042a7ecfac2b5f7ea19420010c20a20044190296a200a420042b0c1bad0f4e48603420010c20a200441c0246a200b4200429db1bce4dfb435420010c20a200441a0236a2018420042e098f4e5e9ebfb03420010c20a200441b0266a201d420042badf96dcb5c3bac700420010c20a200441e0276a2020420042a7ecfac2b5f7ea19420010c20a200441f0276a2020420042b0c1bad0f4e48603420010c20a200441a0296a200a4200429db1bce4dfb435420010c20a200441b0246a200b420042e098f4e5e9ebfb03420010c20a20044190236a20184200429e9981b4dab2e103420010c20a200441c0266a201d420042a7ecfac2b5f7ea19420010c20a200441d0266a201d420042b0c1bad0f4e48603420010c20a20044180286a20204200429db1bce4dfb435420010c20a200441b0296a200a420042e098f4e5e9ebfb03420010c20a200441a0246a200b4200429e9981b4dab2e103420010c20a20044180236a20184200429df893c0a486ae01420010c20a200441c0196a20042903c84f2223420042b0c1bad0f4e48603420010c20a200441901a6a20042903e84f2235420042a7a7fbf49beaf607420010c20a200441e01a6a20042903e04f2236420042a0d69f90da80b1cb00420010c20a200441b01b6a20042903d84f2237420042badf96dcb5c3bac700420010c20a200441801c6a20042903d04f2238420042a7ecfac2b5f7ea19420010c20a200441f01b6a2038420042b0c1bad0f4e48603420010c20a200441b0196a20234200429db1bce4dfb435420010c20a200441801a6a2035420042a0d69f90da80b1cb00420010c20a200441d01a6a2036420042badf96dcb5c3bac700420010c20a200441a01b6a2037420042a7ecfac2b5f7ea19420010c20a200441901b6a2037420042b0c1bad0f4e48603420010c20a200441e01b6a20384200429db1bce4dfb435420010c20a200441a0196a2023420042e098f4e5e9ebfb03420010c20a200441f0196a2035420042badf96dcb5c3bac700420010c20a200441c01a6a2036420042a7ecfac2b5f7ea19420010c20a200441b01a6a2036420042b0c1bad0f4e48603420010c20a200441801b6a20374200429db1bce4dfb435420010c20a200441d01b6a2038420042e098f4e5e9ebfb03420010c20a20044190196a20234200429e9981b4dab2e103420010c20a200441e0196a2035420042a7ecfac2b5f7ea19420010c20a200441d0196a2035420042b0c1bad0f4e48603420010c20a200441a01a6a20364200429db1bce4dfb435420010c20a200441f01a6a2037420042e098f4e5e9ebfb03420010c20a200441c01b6a20384200429e9981b4dab2e103420010c20a20044180196a20234200429df893c0a486ae01420010c20a200441a00e6a200c420042ea81f582a8b53f420010c20a20044180126a2010420042bbda9284b7cbdd1b420010c20a200441e0126a201142004288f5a7f5b28623420010c20a200441c0136a2012420042edd5d7bc83fb803c420010c20a200441f00e6a2013420042edc19ab7ab9cc0c700420010c20a200441e00e6a2013420042ea81f582a8b53f420010c20a200441900e6a200c420042b9a6dff282e9ba01420010c20a200441f0116a201042004288f5a7f5b28623420010c20a200441d0126a2011420042edd5d7bc83fb803c420010c20a200441b0136a2012420042edc19ab7ab9cc0c700420010c20a200441a0136a2012420042ea81f582a8b53f420010c20a200441d00e6a2013420042b9a6dff282e9ba01420010c20a200441800e6a200c420042d8f8d29390ec01420010c20a200441e0116a2010420042edd5d7bc83fb803c420010c20a200441c0126a2011420042edc19ab7ab9cc0c700420010c20a200441b0126a2011420042ea81f582a8b53f420010c20a20044190136a2012420042b9a6dff282e9ba01420010c20a200441c00e6a2013420042d8f8d29390ec01420010c20a200441f00d6a200c420042ff91f789b6a19403420010c20a200441d0116a2010420042edc19ab7ab9cc0c700420010c20a200441c0116a2010420042ea81f582a8b53f420010c20a200441a0126a2011420042b9a6dff282e9ba01420010c20a20044180136a2012420042d8f8d29390ec01420010c20a200441b00e6a2013420042ff91f789b6a19403420010c20a200441e00d6a200c420042fff5f38289d9e103420010c20a200441a0076a200429039008224820042903e00b7c220c20042903800a7c221020042903d00c7c221120042903900c7c221220042903a00b224a20042903800c7c221320042903f0087c222320042903900a7c223520042903c00c7c223620042903f00a224b20042903b00c7c223720042903b00b7c223820042903d0097c224720042903a00a7c224920042903d00a224d20042903b00a7c224c20042903800b7c224e20042903c00b7c225020042903e0097c225220042903c00a224f20042903f0097c224320042903e00a7c224420042903900b7c224520042903d00b7c2246423388200441c00a6a41086a290300200441f0096a41086a2903007c2043204f54ad7c200441e00a6a41086a2903007c2044204354ad7c200441900b6a41086a2903007c2045204454ad7c200441d00b6a41086a2903007c2046204554ad7c420d86847c2243423388200441d00a6a41086a290300200441b00a6a41086a2903007c204c204d54ad7c200441800b6a41086a2903007c204e204c54ad7c200441c00b6a41086a2903007c2050204e54ad7c200441e0096a41086a2903007c2052205054ad7c2043205254ad7c420d86847c224c423388200441f00a6a41086a290300200441b00c6a41086a2903007c2037204b54ad7c200441b00b6a41086a2903007c2038203754ad7c200441d0096a41086a2903007c2047203854ad7c200441a00a6a41086a2903007c2049204754ad7c204c204954ad7c420d86847c2237423388200441a00b6a41086a290300200441800c6a41086a2903007c2013204a54ad7c200441f0086a41086a2903007c2023201354ad7c200441900a6a41086a2903007c2035202354ad7c200441c00c6a41086a2903007c2036203554ad7c2037203654ad7c420d86847c223642338820044190086a41086a290300200441e00b6a41086a2903007c200c204854ad7c200441800a6a41086a2903007c2010200c54ad7c200441d00c6a41086a2903007c2011201054ad7c200441900c6a41086a2903007c2012201154ad7c2036201254ad7c420d868442137e204642ffffffffffffff03837c220c42ffffffffffffff038322104200200d420010c20a200441f0076a20194200200c423388204342ffffffffffffff03837c221142137e225a420010c20a20044190096a20164200204c42ffffffffffffff0383221342137e224c420010c20a200441c0086a200f4200203742ffffffffffffff0383223542137e2223420010c20a200441d0066a200e4200203642ffffffffffffff0383224e42137e2212420010c20a20044190076a200e42002010420010c20a200441e0076a200d42002011420010c20a20044180096a20194200204c420010c20a200441b0086a201642002023420010c20a200441c0066a200f42002012420010c20a20044180076a200f42002010420010c20a200441d0076a200e42002011420010c20a200441a0096a200d42002013420010c20a200441a0086a201942002023420010c20a200441b0066a201642002012420010c20a200441f0066a201642002010420010c20a200441c0076a200f42002011420010c20a200441b0096a200e42002013420010c20a200441d0086a200d42002035420010c20a200441a0066a201942002012420010c20a200441e0066a201942002010420010c20a200441b0076a201642002011420010c20a200441c0096a200f42002013420010c20a200441e0086a200e42002035420010c20a20044180086a200d4200204e420010c20a200420042903a008224820042903a0097c220c20042903b0067c22362004290380077c223720042903d0077c2238200429038009224a20042903e0077c224720042903b0087c224920042903c0067c22502004290390077c225220042903f007224b20042903a0077c22432004290390097c224420042903c0087c224520042903d0067c2246423388200441f0076a41086a290300200441a0076a41086a2903007c2043204b54ad7c20044190096a41086a2903007c2044204354ad7c200441c0086a41086a2903007c2045204454ad7c200441d0066a41086a2903007c2046204554ad7c420d86847c224342338820044180096a41086a290300200441e0076a41086a2903007c2047204a54ad7c200441b0086a41086a2903007c2049204754ad7c200441c0066a41086a2903007c2050204954ad7c20044190076a41086a2903007c2052205054ad7c2043205254ad7c420d86847c224742ffffffffffffff038337038048200420042903a006224520042903d0087c224920042903f0067c225020042903c0077c225220042903b0097c22442047423388200441a0086a41086a290300200441a0096a41086a2903007c200c204854ad7c200441b0066a41086a2903007c2036200c54ad7c20044180076a41086a2903007c2037203654ad7c200441d0076a41086a2903007c2038203754ad7c2047203854ad7c420d86847c220c42ffffffffffffff038337038848200420042903e00622482004290380087c223620042903b0077c223720042903c0097c223820042903e0087c2247200c423388200441a0066a41086a290300200441d0086a41086a2903007c2049204554ad7c200441f0066a41086a2903007c2050204954ad7c200441c0076a41086a2903007c2052205054ad7c200441b0096a41086a2903007c2044205254ad7c200c204454ad7c420d86847c220c42ffffffffffffff0383370390482004200c423388200441e0066a41086a29030020044180086a41086a2903007c2036204854ad7c200441b0076a41086a2903007c2037203654ad7c200441c0096a41086a2903007c2038203754ad7c200441e0086a41086a2903007c2047203854ad7c200c204754ad7c420d868442137e204642ffffffffffffff03837c220c42ffffffffffffff03833703f0472004200c423388204342ffffffffffffff03837c3703f847200441a0266a41086a290300215b200441b0236a41086a290300215c20042903a026210c20042903b0232151200441d0276a41086a290300215d20042903d027215320044180296a41086a290300215e2004290380292154200441d0246a41086a290300215f20042903d024215520044190266a41086a2903002160200441c0236a41086a2903002161200429039026213620042903c0232156200441c0276a41086a290300216220042903c0272157200441f0286a41086a290300216320042903f0282158200441e0246a41086a290300216420042903e024215920042903b026213720042903a023214a20042903e027214b200429039029214d20042903c024214f200441b0266a41086a2903002165200441a0236a41086a2903002166200441e0276a41086a290300216720044190296a41086a2903002168200441c0246a41086a290300216920042903c0262138200429039023214420042903f027214520042903a029214620042903b0242148200441c0266a41086a290300216a20044190236a41086a290300216b200441f0276a41086a290300216c200441a0296a41086a290300216d200441b0246a41086a290300216e20042903d02621472004290380232149200429038028215020042903b029215220042903a0242143200441d0266a41086a290300216f20044180236a41086a290300217020044180286a41086a2903002171200441b0296a41086a2903002172200441a0246a41086a2903002173200441c8cb006a200441f0c7006a107520042d00c84b41017110772102200420042903c84f2274204320522050204720497c22497c22507c22527c2243204820462045203820447c22447c22457c22467c2248204f204d204b2037204a7c224a7c224b7c224d7c224f205520542053200c20517c22517c22537c22547c2255205920582057203620567c22567c22577c22587c2259423388206420632062206020617c2056203654ad7c7c2057205654ad7c7c2058205754ad7c7c2059205854ad7c420d86847c2236423388205f205e205d205b205c7c2051200c54ad7c7c2053205154ad7c7c2054205354ad7c7c2055205454ad7c2036205554ad7c420d86847c2251423388206920682067206520667c204a203754ad7c7c204b204a54ad7c7c204d204b54ad7c7c204f204d54ad7c2051204f54ad7c420d86847c2237423388206e206d206c206a206b7c2044203854ad7c7c2045204454ad7c7c2046204554ad7c7c2048204654ad7c2037204854ad7c420d86847c2238423388207320722071206f20707c2049204754ad7c7c2050204954ad7c7c2052205054ad7c7c2043205254ad7c2038204354ad7c420d868442137e205942ffffffffffffff03837c224742ffffffffffffff03838542002002ad42ff01837d220c832074853703c84f200420042903d04f22492047423388203642ffffffffffffff03837c85200c832049853703d04f200420042903d84f2236205142ffffffffffffff038385200c832036853703d84f200420042903e04f2236203742ffffffffffffff038385200c832036853703e04f200420042903e84f2236203842ffffffffffffff038385200c832036853703e84f20044190066a20104200201820042903d01922562004290380197c223620042903a01a7c223720042903f01a7c223820042903c01b7c224720042903e01922572004290390197c224920042903b01a7c225020042903801b7c225220042903d01b7c224320042903f019225820042903a0197c224420042903c01a7c224520042903901b7c224620042903e01b7c224820042903801a225920042903b0197c224a20042903d01a7c224b20042903a01b7c224d20042903f01b7c224f20042903901a225b20042903c0197c225120042903e01a7c225320042903b01b7c225420042903801c7c2255423388200441901a6a41086a290300200441c0196a41086a2903007c2051205b54ad7c200441e01a6a41086a2903007c2053205154ad7c200441b01b6a41086a2903007c2054205354ad7c200441801c6a41086a2903007c2055205454ad7c420d86847c2251423388200441801a6a41086a290300200441b0196a41086a2903007c204a205954ad7c200441d01a6a41086a2903007c204b204a54ad7c200441a01b6a41086a2903007c204d204b54ad7c200441f01b6a41086a2903007c204f204d54ad7c2051204f54ad7c420d86847c224a423388200441f0196a41086a290300200441a0196a41086a2903007c2044205854ad7c200441c01a6a41086a2903007c2045204454ad7c200441901b6a41086a2903007c2046204554ad7c200441e01b6a41086a2903007c2048204654ad7c204a204854ad7c420d86847c2244423388200441e0196a41086a29030020044190196a41086a2903007c2049205754ad7c200441b01a6a41086a2903007c2050204954ad7c200441801b6a41086a2903007c2052205054ad7c200441d01b6a41086a2903007c2043205254ad7c2044204354ad7c420d86847c2249423388200441d0196a41086a29030020044180196a41086a2903007c2036205654ad7c200441a01a6a41086a2903007c2037203654ad7c200441f01a6a41086a2903007c2038203754ad7c200441c01b6a41086a2903007c2047203854ad7c2049204754ad7c420d868442137e205542ffffffffffffff03837c225042ffffffffffffff038385200c832018852236420010c20a200441d0036a201d204942ffffffffffffff038385200c83201d8522374200205a420010c20a200441a0046a2020204442ffffffffffffff038385200c8320208522384200204c420010c20a200441f0046a200a204a42ffffffffffffff038385200c83200a85224742002023420010c20a200441c0056a200b2050423388205142ffffffffffffff03837c85200c83200b85224942002012420010c20a200441b0056a204942002010420010c20a20044180066a203642002011420010c20a200441c0036a20374200204c420010c20a20044190046a203842002023420010c20a200441e0046a204742002012420010c20a200441d0046a204742002010420010c20a200441a0056a204942002011420010c20a200441f0056a203642002013420010c20a200441b0036a203742002023420010c20a20044180046a203842002012420010c20a200441f0036a203842002010420010c20a200441c0046a204742002011420010c20a20044190056a204942002013420010c20a200441e0056a203642002035420010c20a200441a0036a203742002012420010c20a20044190036a203742002010420010c20a200441e0036a203842002011420010c20a200441b0046a204742002013420010c20a20044180056a204942002035420010c20a200441d0056a20364200204e420010c20a200420042903b003224e20042903f0057c22102004290380047c221120042903d0047c221220042903a0057c221320042903c00322502004290380067c22232004290390047c223520042903e0047c223620042903b0057c223720042903d00322522004290390067c223820042903a0047c224720042903f0047c224920042903c0057c224c423388200441d0036a41086a29030020044190066a41086a2903007c2038205254ad7c200441a0046a41086a2903007c2047203854ad7c200441f0046a41086a2903007c2049204754ad7c200441c0056a41086a2903007c204c204954ad7c420d86847c2238423388200441c0036a41086a29030020044180066a41086a2903007c2023205054ad7c20044190046a41086a2903007c2035202354ad7c200441e0046a41086a2903007c2036203554ad7c200441b0056a41086a2903007c2037203654ad7c2038203754ad7c420d86847c222342ffffffffffffff038337038048200420042903a003224920042903e0057c223520042903f0037c223620042903c0047c22372004290390057c22472023423388200441b0036a41086a290300200441f0056a41086a2903007c2010204e54ad7c20044180046a41086a2903007c2011201054ad7c200441d0046a41086a2903007c2012201154ad7c200441a0056a41086a2903007c2013201254ad7c2023201354ad7c420d86847c221042ffffffffffffff0383370388482004200429039003224e20042903d0057c221120042903e0037c221220042903b0047c22132004290380057c22232010423388200441a0036a41086a290300200441e0056a41086a2903007c2035204954ad7c200441f0036a41086a2903007c2036203554ad7c200441c0046a41086a2903007c2037203654ad7c20044190056a41086a2903007c2047203754ad7c2010204754ad7c420d86847c221042ffffffffffffff0383370390482004201042338820044190036a41086a290300200441d0056a41086a2903007c2011204e54ad7c200441e0036a41086a2903007c2012201154ad7c200441b0046a41086a2903007c2013201254ad7c20044180056a41086a2903007c2023201354ad7c2010202354ad7c420d868442137e204c42ffffffffffffff03837c221042ffffffffffffff03833703f04720042010423388203842ffffffffffffff03837c3703f847200441f0116a41086a2903002156200441900e6a41086a290300215720042903f011211220042903900e214a200441d0126a41086a290300215820042903d012214b200441b0136a41086a290300215920042903b013214d200441e00e6a41086a290300215a20042903e00e214f20044180126a41086a290300215b200441a00e6a41086a290300215c200429038012211320042903a00e2151200441e0126a41086a290300215d20042903e0122153200441c0136a41086a290300215e20042903c0132154200441f00e6a41086a290300215f20042903f00e215520042903e011212320042903800e214420042903c012214520042903a013214620042903d00e2148200441e0116a41086a2903002160200441800e6a41086a2903002161200441c0126a41086a2903002162200441a0136a41086a2903002163200441d00e6a41086a290300216420042903d011213520042903f00d214e20042903b0122150200429039013215220042903c00e2143200441d0116a41086a2903002165200441f00d6a41086a2903002166200441b0126a41086a290300216720044190136a41086a2903002168200441c00e6a41086a290300216920042903c011213620042903e00d213820042903a0122147200429038013214920042903b00e214c200441c0116a41086a290300216a200441e00d6a41086a290300216b200441a0126a41086a290300216c20044180136a41086a290300216d200441b00e6a41086a290300216e200441c8cb006a200441f0c7006a107520042d00c84b4101711077210220044180036a203a20042903e84f221142f0ffffffffffff3f20117d226f42ffffffffffffff038342f0ffffffffffff3f20042903e04f22377d22704233887c8542002002ad42ff01837d2210832011857d223a42338842137e203c20042903c84f2211206f42338842137e42d0fdffffffffff3f20117d226f42ffffffffffffff03837c852010832011857d223c42ffffffffffffff03837c22114200201b204c20492047203620387c22387c22477c22497c224c2043205220502035204e7c224e7c22507c22527c2243204820462045202320447c22447c22457c22467c2248204f204d204b2012204a7c224a7c224b7c224d7c224f205520542053201320517c22517c22537c22547c2255423388205f205e205d205b205c7c2051201354ad7c7c2053205154ad7c7c2054205354ad7c7c2055205454ad7c420d86847c2251423388205a20592058205620577c204a201254ad7c7c204b204a54ad7c7c204d204b54ad7c7c204f204d54ad7c2051204f54ad7c420d86847c224a423388206420632062206020617c2044202354ad7c7c2045204454ad7c7c2046204554ad7c7c2048204654ad7c204a204854ad7c420d86847c2223423388206920682067206520667c204e203554ad7c7c2050204e54ad7c7c2052205054ad7c7c2043205254ad7c2023204354ad7c420d86847c2213423388206e206d206c206a206b7c2038203654ad7c7c2047203854ad7c7c2049204754ad7c7c204c204954ad7c2013204c54ad7c420d868442137e205542ffffffffffffff03837c223642ffffffffffffff038385200c83201b852212420010c20a200441c0006a201c201342ffffffffffffff038385200c83201c8522134200203e20042903d04f221b42f0ffffffffffff3f201b7d223542ffffffffffffff0383206f4233887c85201083201b857d223842ffffffffffffff0383203c4233887c221b42137e420010c20a20044190016a201e202342ffffffffffffff038385200c83201e85221c4200204120042903d84f221e42f0ffffffffffff3f201e7d224742ffffffffffffff038320354233887c85201083201e857d223542ffffffffffffff038320384233887c222342137e2238420010c20a200441e0016a201f204a42ffffffffffffff038385200c83201f85221e4200204220372037207042ffffffffffffff038320474233887c85201083857d221042ffffffffffffff038320354233887c221f42137e2235420010c20a200441b0026a20212036423388205142ffffffffffffff03837c85200c83202185220c4200203a42ffffffffffffff038320104233887c222142137e2210420010c20a200441a0026a200c42002011420010c20a200441f0026a20124200201b420010c20a200441306a201342002038420010c20a20044180016a201c42002035420010c20a200441d0016a201e42002010420010c20a200441c0016a201e42002011420010c20a20044190026a200c4200201b420010c20a200441e0026a201242002023420010c20a200441206a201342002035420010c20a200441f0006a201c42002010420010c20a200441e0006a201c42002011420010c20a200441b0016a201e4200201b420010c20a20044180026a200c42002023420010c20a200441d0026a20124200201f420010c20a200441106a201342002010420010c20a2004201342002011420010c20a200441d0006a201c4200201b420010c20a200441a0016a201e42002023420010c20a200441f0016a200c4200201f420010c20a200441c0026a201242002021420010c20a20042004290300225220042903c0027c220c20042903507c221020042903a0017c221120042903f0017c22122004290310224320042903d0027c221320042903607c221b20042903b0017c221c2004290380027c221e2004290320224420042903e0027c221f20042903707c222120042903c0017c22232004290390027c22352004290330224520042903f0027c22362004290380017c223720042903d0017c223820042903a0027c2247200429034022462004290380037c22492004290390017c224c20042903e0017c224e20042903b0027c2250423388200441c0006a41086a29030020044180036a41086a2903007c2049204654ad7c20044190016a41086a2903007c204c204954ad7c200441e0016a41086a2903007c204e204c54ad7c200441b0026a41086a2903007c2050204e54ad7c420d86847c2249423388200441306a41086a290300200441f0026a41086a2903007c2036204554ad7c20044180016a41086a2903007c2037203654ad7c200441d0016a41086a2903007c2038203754ad7c200441a0026a41086a2903007c2047203854ad7c2049204754ad7c420d86847c2236423388200441206a41086a290300200441e0026a41086a2903007c201f204454ad7c200441f0006a41086a2903007c2021201f54ad7c200441c0016a41086a2903007c2023202154ad7c20044190026a41086a2903007c2035202354ad7c2036203554ad7c420d86847c221f423388200441106a41086a290300200441d0026a41086a2903007c2013204354ad7c200441e0006a41086a2903007c201b201354ad7c200441b0016a41086a2903007c201c201b54ad7c20044180026a41086a2903007c201e201c54ad7c201f201e54ad7c420d86847c2213423388200441086a290300200441c0026a41086a2903007c200c205254ad7c200441d0006a41086a2903007c2010200c54ad7c200441a0016a41086a2903007c2011201054ad7c200441f0016a41086a2903007c2012201154ad7c2013201254ad7c420d868442137e205042ffffffffffffff03837c220c42ffffffffffffff038322103703f0472004200c423388204942ffffffffffffff03837c22113703f8472004201342ffffffffffffff03832212370390482004201f42ffffffffffffff03832213370388482004203642ffffffffffffff0383221b37038048200441c8cb006a200441f0c7006a10752004201242f0ffffffffffff3f20127d221c42ffffffffffffff038342f0ffffffffffff3f20137d221e4233887c85420020042d00c84b4101711077ad42ff01837d220c832012853703904820042013201e42ffffffffffffff038342f0ffffffffffff3f201b7d22124233887c85200c83201385370388482004201b201242ffffffffffffff038342f0ffffffffffff3f20117d22124233887c85200c83201b853703804820042011201242ffffffffffffff038342d0fdffffffffff3f20107d22124233887c85200c832011853703f84720042010201c42338842137e201242ffffffffffffff03837c85200c832010853703f047200441e0c4006a41a0016a200441f0c7006a1075200441e0c4006a4198016a2019370300200441e0c4006a4190016a2016370300200441e0c4006a4188016a200f370300200441e0c4006a4180016a200e370300200441e0c4006a41f0006a2039370300200441e0c4006a41e8006a203f370300200441e0c4006a41e0006a2040370300200441e0c4006a41d8006a203d370300200441e0c4006a41c8006a2022370300200441e0c4006a41c0006a201a370300200441e0c4006a41386a2017370300200441e0c4006a41306a20153703002004200d3703d8452004203b3703b04520042014370388452004201d37038045200420203703f8442004200a3703f0442004200b3703e844200420183703e044410021020340200441a0c6006a20026a41003a0000200241016a220241c801470d000b20044190cc006a41186a2203200141186a29000037030020044190cc006a41106a2205200141106a29000037030020044190cc006a41086a2206200141086a290000370300200420012900003703904c200441f0c7006a20044190cc006a10fe04200441f0c7006a41086a290300210c200441f0c7006a41106a2903002118200441f0c7006a41186a290300211d200441f0c7006a41206a290300210b20044198c8006a290300210d200441a0c8006a2903002120200441a8c8006a290300210a200441b0c8006a290300210e200441b8c8006a290300210f200441c0c8006a290300211020042802f447210120042802f0472102200441a0c6006a200441c8c8006a41f00010c30a1a0240024020024101460d00200441b0cd006a200441a0c6006a41f00010c30a1a20042018200c4233887c22114233882011201854ad420d86842213201d7c221242ffffffffffffff03833703b84a200420124233882012201354ad420d86842213200b7c221242ffffffffffffff03833703c04a200420124233882012201354ad420d86842213200d7c221242ffffffffffffff03833703c84a200420124233882012201354ad420d868442137e200c42ffffffffffffff03837c221242ffffffffffffff03833703a84a20042012423388201142ffffffffffffff03837c3703b04a20044190cc006a41206a4200370300200342003703002005420037030020064200370300200442003703904c200441a0c6006a41206a4200370300200441a0c6006a41186a4200370300200441a0c6006a41106a4200370300200441a0c6006a41086a4200370300200442003703a0462004200a20204233887c22114233882011200a54ad420d86842213200e7c22124233882012201354ad420d86842214200f7c22134233882013201454ad420d8684221520107c221442ffffffffffffff0383370390482004201342ffffffffffffff0383370388482004201242ffffffffffffff038337038048200420144233882014201554ad420d868442137e202042ffffffffffffff03837c2212423388201142ffffffffffffff03837c3703f8472004201242ffffffffffffff03833703f0470240200441a8ca006a20044190cc006a1076200441a0c6006a200441f0c7006a107672107741ff01714101470d0020004101360200200041013a00040c020b200041086a200441e0c4006a41c00110c30a1a20004198026a200441b0cd006a41f00010c30a1a20004190026a201037030020004188026a200f37030020004180026a200e370300200041f8016a200a370300200041f0016a2020370300200041e8016a200d370300200041e0016a200b370300200041d8016a201d370300200041d0016a2018370300200041c8016a200c370300200041003602000c010b2000200136020420004101360200200041186a201d3e0200200041106a2018370200200041086a200c3702000b200441c0d0006a24000b8c0101027f02404121410120012d000041014622021b10382203450d000240024020020d00200341003a0000410121010c010b200341013a000020032001290001370001200341096a200141096a290000370000200341116a200141116a290000370000200341196a200141196a290000370000412121010b200041202003200110a302200310390f0b1030000be90201027f230041f0006b22012400200141086a41206a200041206a280200360200200141086a41186a200041186a290200370300200141086a41106a200041106a290200370300200141086a41086a2202200041086a29020037030020012000290200370308200141306a41186a4200370300200141306a41106a22004200370300200141306a41086a420037030020014200370330200141306a41b9fec300410610f201200041e4eec900410610f201200141d0006a200141086a109106200141e0006a41086a200141d0006a41086a28020036020020012001290350370360200141306a4120200141e0006a10ad050240024002400240024020012d00080e050400010204030b200141146a280200450d03200141106a28020010390c030b200141146a280200450d02200141106a28020010390c020b200141146a280200450d01200141106a28020010390c010b2002280200450d00200128020c10390b200141f0006a24000bcc0105017f017e027f017e017f024020002802002000280005470d0020002d0004200041096a2d0000470d004200428080808080c000840f0b200041046a220120013100002202a7220141016a22032003410771200141074922041bad3c0000200020003502002205a722064100200341037620041b6aad3e0200200620062d00002200410120014107712201742203722000417e20017771200020037141ff017122001b3a0000200520024220868422024280808080f000832005200242238884842000410047ad422886840b990101057f200128020421024100210320014100360204200128020021042001410028029cde4a36020002400240200241037622050d000c010b2001200128020822032005200520034b1b2205200241077122066a22034107712002200541037422056b41787172360204200120044100200341037620034108491b6a36020020062005722101200421030b20002001360204200020033602000b902d08017f017e057f017e017f017e0d7f027e230041d00d6b2204240020022903002105200441c8026a200241880210c30a1a200420044198026a3602d404200420044198026a3602d004200441d0016a200441d0026a220610c102200441c8006a200441c0036a220710c10202400240024002400240200441d0016a200441c8006a412010c60a450d00200441dc026a2802002208450d00200241e8016a2109200441d4026a2802002102200841246c21080340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602d4012004200241086a2802003602d001200441c8006a200441d0016a10910420042903484203510d00200441cc036a2802002208450d022004280258210a2004290350210b200441c4036a2802002102200841246c210802400240024002400340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602d4012004200241086a2802003602d001200441c8006a200441d0016a10910420042903484203510d0020042903c802200b520d08200b2004290350520d08200a2004280258470d08200441c8006a200641f00010c30a1a2004200441b0046a22023602b801200441c8006a2002108505450d09200441c8006a200741f00010c30a1a200420023602b801200441c8006a2002108505450d0a2003280200210a2003280210210c200441e0026a22024200370300200441c8026a41106a22084200370300200441c8026a41086a22064200370300200442003703c802200441c8006a41bffec300410410f2012006200441c8006a41086a2207290000370300200420042900483703c802200441c8006a41c0a7c800410b10f2012002200729000037030020082004290048370300200441186a200441c8026a10c2042004290320210b2004290318210d200441c8006a41eb97c200411710f201200441106a200441c8006a411010f5010240200428021441e40020042802101b2202450d000240200a42002005200b4200200da71b7d220b200b2005561b2002ad80220b42ffffffff0f200b42ffffffff0f541ba7460d002000420037030820004201370300200041286a4118360200200041246a4192fec500360200200041226a41013a0000200041206a4183023b0100200041186a41003a00000c0d0b200441d4026a200941086a290000370200200441dc026a200941106a290000370200200441e4026a200941186a290000370200200441e2c289ab063602c802200420092900003702cc02200441d0016a41106a200341106a280200360200200441d0016a41086a200341086a290200370300200420032902003703d001200441c8006a200441c8026a200441d0016a10860520042d00484101470d03200441286a41086a200441d2006a290100370300200441286a41106a200441da006a2901003703002004413f6a200441e1006a2900003700002004200429014a37032820042d004921030240024020012d00004101460d0041002108410028029cde4a21020c010b412010382202450d0520022001290001370000200241186a200141196a290000370000200241106a200141116a290000370000200241086a200141096a290000370000410121080b412010382207450d04200720033a000020072004290328370001200741096a200441286a41086a290300370000200741116a200441386a290300370000200741186a2004413f6a290000370000200420083602c801200420083602c401200420023602c001410810382202450d0420022005370000200420023602980220044288808080800137029c02200441c8026a41dd87ca0010e802200441c8006a20042802c802220820042802d00210ba02200429024c4200200428024822021b210b2002410028029cde4a20021b210e024020042802cc02450d00200810390b2004200b4220883e02d4012004200e3602d001200441086a200441d0016a10ad010240024020042802080d00200428020c220f20042802d401220841286e22022002200f4b1bad42287e220d422088a70d07200da72202417f4c0d070240024020020d00410821100c010b200210382210450d070b4100210a20044100360250200420103602482004200241286e220236024c0240200f0d004100210a2010450d010c020b200441c8026a4104722101200441c8026a41196a2111200441c8026a41126a2112200441c8026a410b6a211341002114024002400240034020084108490d02201441016a2114200841786a210620042802d0012209290000210d41002102034020062002460d02200120026a200920026a220341086a2d00003a00002004200241016a22083602c8022004200341096a3602d0012008210220084120470d000b200441c4026a41026a2203201341026a2d00003a0000200441c0026a41026a2209201241026a2d00003a0000200420012f01003b01f801200420132f00003b01c402200420122f00003b01c0022004200141026a2d00003a00fa0120042802e802211520042802e402211620042800dd02211720042801d602211820042800cf022119200441bc026a41026a221a201141026a2d00003a0000200420112f00003b01bc020240200a200428024c470d00200441c8006a200a108705200428024821102004280250210a0b200620086b21082010200a41286c6a2202200d3703002002410a6a20042d00fa013a0000200220042f01f8013b0108200241116a20032d00003a00002002410f6a20042f01c4023b0000200241186a20092d00003a0000200241166a20042f01c0023b00002002410b6a2019360000200241126a2018360000200241196a20173600002002411f6a201a2d00003a00002002411d6a20042f01bc023b0000200241246a2015360000200241206a20163600002004200a41016a220a3602502014200f470d000b200428024c210220042802482210450d030c040b200441003602d4010c010b200420083602d4010b200428024c2202450d00200241286c450d00200428024810390b4100210241002802fcad4921104100210a0b200441d0016a410c6a41dd87ca0020044198026a10c604200441f0016a200a360200200441ec016a2002360200200441d0016a41086a20044198026a41086a2202280200360200200420103602e80120042004290398023703d0010240200ba7450d00200e10390b200441f8016a41186a200741186a290000220b370300200441f8016a41106a200741106a290000220d370300200441f8016a41086a200741086a290000221b37030020042007290000221c3703f80120044198026a41186a200b37030020044198026a41106a200d3703002002201b3703002004201c37039802410810382202450d0420022005370000200441dc026a41002900e5874a3702002004428880808080013702cc02200420023602c802200441002900dd874a3702d402200420044198026a3602e402200441c8006a200441c8026a10950320021039200441c8026a200441c8006a10df0220042802c802220220042802d00210a802210a024020042802cc02450d00200210390b024002400240200a0d00200441c8026a410c6a2202200429039802370000200241186a20044198026a41186a290300370000200241106a20044198026a41106a290300370000200241086a20044198026a41086a290300370000200441c8026a200441c0016a10a103200441c8006a200441c8026a10ee0220042802e80121010240024020042802f0012209450d0041002102200921062009210302400340024002402001200641017620026a220841286c6a290300220b20055a0d00200841016a21020c010b20082103200b2005510d020b200320026b210620022108200320024b0d000b0b200920084f0d01200820091044000b410021080b0240200920042802ec01470d00200441e8016a200910870520042802e80121010b2001200841286c6a220241286a2002200920086b41286c10c40a1a20022004290348220b370008200241106a200441c8006a41086a290300220d370000200241186a200441c8006a41106a290300221b370000200241206a200441c8006a41186a290300221c370000200220053703002004200941016a3602f001200441c8026a41186a2203201c370300200441c8026a41106a2206201b370300200441c8026a41086a2201200d3703002004200b3703c802024020042802e401220820042802e001470d00200441dc016a2008410110f50220042802e40121080b20042802dc0120084105746a220220042903c802370000200241186a2003290300370000200241106a2006290300370000200241086a20012903003700002004200841016a3602e40120071039200a0d0102400240024020042802e4012207450d002007410574210820042802dc01220921020340200441c8026a200210e30220042802c80222030d02200241206a2102200841606a22080d000b0b41002802ccdd4a21074200210d0c010b200441c8006a41206a2201200441c8026a41246a290200370300200441e0006a220a200441c8026a411c6a290200370300200441d8006a2210200441c8026a41146a290200370300200441d0006a220e200441c8026a410c6a290200370300200420042902cc02370348412c10382206450d0820062003360200200620042903483702042006410c6a200e290300370200200641146a20102903003702002006411c6a200a290300370200200641246a2001290300370200200442818080801037029c022004200636029802024020084120460d00200241206a210a200441c8026a4104722101200920074105746a220341606a2110410121090340200a210202400340200441c8026a200210e30220042802c80222080d012003200241206a2202470d000c030b0b200441c8006a41206a220e200141206a290200370300200441c8006a41186a220f200141186a290200370300200441c8006a41106a2214200141106a290200370300200441c8006a41086a2211200141086a2902003703002004200129020037034802402009200428029c02470d0020044198026a200910fd0220042802980221060b200241206a210a20062009412c6c6a22072008360200200720042903483702042007410c6a2011290300370200200741146a20142903003702002007411c6a200f290300370200200741246a200e2903003702002004200941016a22093602a00220102002470d000b0b2004280298022107200429029c02210d0b200441c8026a41206a200441d0016a41206a2802002202360200200441c8026a41186a200441d0016a41186a290300220b370300200441c8026a41106a200441d0016a41106a290300370300200441c8026a41086a200441d0016a41086a290300370300200420042903d0013703c802200241286c4104722208417f4c0d08200810382203450d07200ba721062004410036028002200420083602fc01200420033602f801200441f8016a200210d20102402002450d002006200241286c6a21032006210203402002290300210b024020042802fc0120042802800222086b41074b0d00200441f8016a2008410810810120042802800221080b20042802f80120086a200b3700002004200841086a36028002200241086a200441f8016a10ff02200241286a22022003470d000b0b20044198026a41086a200441f8016a41086a280200360200200420042903f80137039802200441c8006a41dd87ca0010e80220042802482202200428025020044198026a10c7040240200428024c450d00200210390b0240200428029c02450d0020042802980210390b41dd87ca00200441c8026a200441d4026a10c804024020042802cc02450d0020042802c80210390b0240200441d8026a28020041ffffff3f71450d0020042802d40210390b200441e4026a2802002202450d02200241286c450d02200610390c020b200710390b024020042802d401450d0020042802d00110390b024020042802e00141ffffff3f71450d0020042802dc0110390b41002107024020042802ec012202450d00200241286c450d0020042802e80110390b0b024020042802c40141ffffff3f71450d0020042802c00110390b02402007450d00200c4101200c41014b1b2202418094ebdc036e2002418094ebdc03704100476a22084101200841014b1b220820024b0d072002200d422088a7220641036c220320022003491b20086ead428094ebdc037e200220086ead80a71088052103200641ffffffff03712006470d0620064102742202417f4c0d060240024020020d00410421080c010b200210382208450d060b41002101200441003602502004200836024820042002410276220236024c024002400240200220064f0d00200441c8006a4100200610be0320042802482108200428025021010c010b2006450d010b200820014102746a210220062108034020022003360200200241046a21022008417f6a22080d000b200120066a21010b20042001360250410810382202450d0520022005370000200441e0026a41002900e5874a370300200441d8026a41002900dd874a370300200441c8026a41086a42888080808001370300200420023602cc02200441033a00c802200441c8026a10fc010240200428024c41ffffffff0371450d00200428024810390b02402006450d002006412c6c21082007210203400240200241046a28020041ffffff3f71450d00200228020010390b2002412c6a2102200841546a22080d000b0b0240200da72202450d002002412c6c450d00200710390b2000420037030820004200370300200041186a41013a0000200441d00d6a24000f0b2000420037030820004201370300200041286a4116360200200041246a41d5fec500360200200041226a41023a0000200041206a4183023b0100200041186a41003a00000c0d0b4180cac2004119419ccac2001035000b200241246a21022008415c6a22080d000c070b0b2000420037030820004201370300200041286a4118360200200041246a4192fec500360200200041226a41013a0000200041206a4183023b0100200041186a41003a00000c090b1030000b1034000b41e0a8c800411941f8c7ca001035000b200241246a21022008415c6a22080d000b0b0240200441dc026a2802002208450d00200441c8026a410c6a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022008415c6a22080d000b0b200441d8026a2802002202450d00200241246c450d0020042802d40210390b0240200441cc036a2802002208450d00200441c4036a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022008415c6a22080d000b0b200441c8036a2802002202450d00200241246c450d0020042802c40310390b200041286a4118360200200041246a41fafdc500360200200041226a41003a0000200041206a4183023b0100200041186a41003a000020004200370308200042013703000b2003280204210002402003410c6a2802002202450d002002410c6c21082000210203400240200241046a280200450d00200228020010390b2002410c6a2102200841746a22080d000b0b200341086a2802002202450d002002410c6c450d00200010390b200441d00d6a24000bb30c03067f017e0a7f230041d0016b22022400024002402000410c6a2802002203450d0020002003417f6a220336020c2000280204200341246c6a22032d000022044106460d00200241e0006a41206a200341206a280000360000200241e0006a41196a200341196a290000370000200241e0006a41116a200341116a290000370000200241e0006a41096a200341096a29000037000020022003290001370061200220043a0060024020044103470d0041032104200241e0006a41017228000041c28289aa04470d00200241f0006a2802002105200241e8006a280200210620024188016a4104722107410021030240034020052003460d01200720036a200620036a2d00003a00002002200341016a22043602880120042103200441c000470d000b200241d8006a41026a220320024195016a2d00003a0000200220022f018c013b015c200220022d008e013a005e200220024193016a2f00003b0158200241c0016a2802002104200241c4016a2902002108200241b9016a2800002105200241b2016a2801002106200241ab016a2800002107200241a4016a28020021092002419d016a280000210a20024196016a280100210b200228008f01210c200241d4006a41026a220d2002419c016a2d00003a0000200241d0006a41026a220e200241a3016a2d00003a0000200241cc006a41026a220f200241aa016a2d00003a0000200241c8006a41026a2210200241b1016a2d00003a0000200241c4006a41026a2211200241b8016a2d00003a000020022002419a016a2f01003b01542002200241a1016a2f00003b0150200220024188016a41206a2f01003b014c2002200241af016a2f00003b01482002200241b6016a2f01003b0144200241c0006a41026a2212200241bf016a2d00003a0000200241096a20032d00003a0000200241106a200d2d00003a00002002200241bd016a2f00003b01402002200c3600032002200b36010a200220022d005e3a0002200220022f015c3b0100200220022f01583b0007200220022f01543b010e2002200a360011200241176a200e2d00003a0000200220022f01503b0015200220093602182002411e6a200f2d00003a0000200220022f014c3b011c2002200736001f200241256a20102d00003a0000200220022f01483b0023200220063601262002412c6a20112d00003a0000200220022f01443b012a2002200536002d200241336a20122d00003a0000200220022f01403b003120022008370338200220043602340240024002400240024020022d00600e050400010204030b200241ec006a280200450d03200228026810390c030b200241ec006a280200450d02200228026810390c020b200241ec006a280200450d01200228026810390c010b2002280268450d00200228026410390b20024188016a200010c102200220024188016a4120200110f204450d02200028020421010240200028020c2203450d00200341246c21042001210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032004415c6a22040d000b0b41012103200041086a2802002204450d03200441246c450d03200110390c030b20022d006021040b0240024002400240200441ff01710e050400010204030b200241ec006a280200450d03200241e8006a28020010390c030b200241ec006a280200450d02200241e8006a28020010390c020b200241ec006a280200450d01200241e8006a28020010390c010b200241e8006a280200450d00200228026410390b200028020421010240200028020c2203450d00200341246c21042001210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032004415c6a22040d000b0b41002103200041086a2802002204450d00200441246c450d00200110390b200241d0016a240020030b8c1403067f047e027f230041a0036b2203240020012800002104200341e0006a41186a2001411c6a290000370300200341e0006a41106a200141146a290000370300200341e0006a41086a2001410c6a2900003703002003200129000437036020022802002101200341a0016a41186a22054200370300200341a0016a41106a22064200370300200341a0016a41086a22074200370300200342003703a00120034180036a418cf9c800410710f201200720034180036a41086a220829000037030020032003290080033703a00120034180036a4184b4c200410c10f201200520082900003703002006200329008003370300200341d8006a200341a0016a412010f501024002402001200328025c410020032802581b470d0020074120360200200320043602a0012003200341e0006a3602a401200341a0026a200341a0016a10b704200341a0016a20032802a002220120032802a80210cc02024020032d00a00122084101470d0020034198016a200341b9016a29000037030020034190016a200341b1016a29000037030020034188016a200341a9016a290000370300200320032900a101370380010b024020032802a402450d00200110390b2002410c6a2802002101200241086a280200210720022802042105024020084101470d0020022802102102200341a0026a41186a20034180016a41186a290300370300200341a0026a41106a20034180016a41106a290300370300200341a0026a41086a20034180016a41086a29030037030020032003290380013703a002200341a0016a41186a4200370300200341a0016a41106a4200370300200341a0016a41086a22084200370300200342003703a00120034180036a418cf9c800410710f201200820034180036a41086a220429000037030020032003290080033703a00120034180036a41e9a4c200410a10f201200641086a2004290000370000200620032900800337000020034190036a200341a0016a10c0040240024020032802900322080d00410021060c010b2003290294032209422088a72106200942ffffff3f83500d00200810390b02400240024020022006460d0002402001450d002001410c6c21062005210103400240200141046a280200450d00200128020010390b2001410c6a2101200641746a22060d000b0b410021012007450d022007410c6c0d010c020b200020032903a002370001200041196a200341b8026a290300370000200041116a200341b0026a290300370000200041096a200341a8026a29030037000002402001450d002001410c6c21062005210103400240200141046a280200450d00200128020010390b2001410c6a2101200641746a22060d000b0b410121012007450d012007410c6c450d010b200510390b200020013a00000c020b200041003a000002402001450d002001410c6c21062005210103400240200141046a280200450d00200128020010390b2001410c6a2101200641746a22060d000b0b2007450d012007410c6c450d01200510390c010b200341a0016a200110ea0902400240024002400240024020032802a0014101470d00200341a0026a41186a200341bc016a2902002209370300200341a0026a41106a200341b4016a290200220a370300200341a0026a41086a200341a0016a410c6a290200220b370300200320032902a401220c3703a002200341c4016a280200210120034180016a41186a200937030020034180016a41106a200a37030020034180016a41086a200b3703002003200c37038001024020012002280210460d00200041003a00000c020b2002410c6a280200210d2002280204210e410110382201450d03200141003a00004100410035029cfe4a200341a0016aad7c42adfed5e4d485fda8d8007e42218922093e029cfe4a200341c8006a419cfeca00ad220a42a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010c20a200341286a200942a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010c20a200341386a200a42c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010c20a200341186a200942c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010c20a200341086a2009200a85420042adfed5e4d485fda8d800420010c20a200341a0016a41f3bdca004101109c01200341f4026a200341a0016a41186a290300370200200341ec026a200341a0016a41106a290300370200200341e4026a200341a0016a41086a290300370200200341d4026a428180808010370200200341c8026a4200370300200341c4026a41d4a5c000360200200320032903a0013702dc02200320013602d002200341003602c00220032009200341c8006a41086a2903002003290348857c200341086a41086a29030020032903088542cf829ebbefefde82147c220b893703a0022003200341186a41086a290300200329031885200a7c200b423088893703b80220032009200341386a41086a2903002003290338857c200b422088893703b0022003200341286a41086a290300200329032885200a7c200b421088893703a8020240200d450d00200e200d410c6c6a210641002802d0a540210741002902c8a5402109200e2101034020034180036a41086a20073602002003200937038003200341a0016a200341a0026a20034180036a2001280200200141086a28020010eb092001410c6a22012006470d000b0b200341a0016a200341a0026a41e00010c30a1a20034198026a20034180016a41186a29030037030020034190026a20034180016a41106a29030037030020034188026a20034180016a41086a2903003703002003200329038001370380022000200341a0016a2004200341e0006a10ec0920032802c00122070d020c050b200041003a00000b2002280204210702402002410c6a2802002201450d002001410c6c21062007210103400240200141046a280200450d00200128020010390b2001410c6a2101200641746a22060d000b0b200241086a2802002201450d042001410c6c450d04200710390c040b0240200341cc016a2802000d00200741016a21040c020b200341c4016a280200220641046a21012006200741016a22046a21002006280200417f7341808182847871210703400240024020070d000340200120004f0d05200641c07e6a210620012802002107200141046a220521012007418081828478712207418081828478460d000b2007418081828478732207417f6a2007712108200521010c010b2007417f6a20077121080b2007682105200821072006410020054103766b41306c6a220541746a280200450d00200541706a2802001039200821070c000b0b1030000b200341c4016a2802002004ad42307ea76b10390b0240200341d4016a280200450d0020032802d00110390b0240200d450d00200d410c6c2106200e210103400240200141046a280200450d00200128020010390b2001410c6a2101200641746a22060d000b0b200241086a2802002201450d002001410c6c450d00200e10390b200341a0036a24000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42287e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141286c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141286e360200200241206a24000f0b1034000b2e01017e2000ad220120017e220142808090bbbad6adf00d200142808090bbbad6adf00d541b428094ebdc0380a70b13002000411836020420004188cbc2003602000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041f8dec2001043000b880402017f057e230041c0036b2207240042002108024020050d00200741186a2001ad42004280c2d72f420010c20a20074188026a10fb03200741c0006a2007290390022208200220082002541b108c05200741c0006a41086a29030021082007290340210220074188026a41dbfec300411210f201200741a0026a4200370000200742003700980220074188026a41106a220141ac99c300411110f201200741286a20074188026a108d0520074188026a200729033042808090bbbad6adf00d200728022822051b200741286a41106a290300420020051b2002200842808090bbbad6adf00d4200108e05200741186a41086a2105024002402007280288024101470d00427f2102427f21090c010b2001290300210920074188026a41086a29030021020b2005290300210a2007290318210b200741d0006a10fb030240024002400240200641ff01710e03010200010b200741d0016a21050c020b200741e0006a21050c010b20074198016a21050b2005290300210820074188026a10fb03200741086a200729039002220c2008200c2008541b108c05200741106a29030021082007290308210c200041306a2009370300200041286a2002370300200041206a200a370300200041186a200b370300200041106a20083703002000200c370308420121080b2000200337033820002008370300200041c0006a2004370300200741c0036a24000bc90706017f017e047f037e037f067e230041c0026b2202240042002103200241e0016a22044200370300200241d0016a41086a4208370300200241ec016a22054180023b0100200241e8016a2206410036020041012107200241013602b802200241003602d001024002404100450d0042012108420021090c010b0240024002404101450d004200210a0c010b200241c8016a210b4101210c420021080340200241b0016a200842002001420010c20a200241c0016a200142002001420010c20a200820022903b801220184200184420052200b290300220120022903b001220a200a7c7c220a200154720d0220022903c0012101200c410271210d200c4101762207210c200a2108200d450d000b0b0240200741024f0d0020012108200a21090c020b200241a0016a41086a210d20012108200a2109034020024190016a200a42002001420010c20a200241a0016a200142002001420010c20a200a200229039801220184200184420052200d2903002201200229039001220a200a7c7c220a200154720d0120022903a001210102402007410271450d00200241e0006a200942002001420010c20a200241f0006a200a42002008420010c20a20024180016a200842002001420010c20a2009420052200a4200527120022903684200527220022903784200527220024180016a41086a2903002208200229036020022903707c7c2209200854720d0220022903800121080b200741034b210c20074101762107200a210a200c0d000c020b0b427f2108427f21090b200241d0006a20082009428094ebdc03420010c10a200241306a2004290300220a42002008420010c20a200241206a2009420020022903d8012201420010c20a200241c0006a200142002008420010c20a0240024020052d0000450d00420021010c010b2002290338210e2002290328210f2002290320211020022903302111200241c0006a41086a2903002101200628020021072002290350210320022903402112200241106a20082009428094ebdc03420010c90a20022002290310200241106a41086a2903002007ad2208420010c20a427f200241086a29030020022903002213417f200320087e2208428094ebdc0380a7200842ffffffffffbfb2cd3b561b2008428094ebdc03824280cab5ee01566aad7c2208201354ad7c2203427f2001201120107c7c2210200a420052200942005271200e42005272200f4200527220102001547222071b7c2008427f201220071b7c220a2008542207ad7c22012007200120035420012003511b22071b2101427f200a20071b21030b2000200337030020002001370308200241c0026a24000ba60204017f017e017f027e230041d0006b220224002002412036020420022001360200200241086a2001412010e40202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004110490d00200141086a290000210520012900002106420121030c010b420021032002420037021c2002410028029cde4a3602182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241e4b4c4003602382002200241286a360248200241346a41fc86ca00200241386a103b1a2002280218200228022010e7020240200228021c450d00200228021810390b0b2004450d00200110390b2000200637030820002003370300200041106a2005370300200241d0006a24000bc62e05017f017e017f027e1c7f230041f0026b220724000240024002402001200284500d0020032004844200520d010b20004100360200200041106a4200370300200041086a42003703000c010b42012108200741f8006a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610c10a2002200420091b21022001200320091b21040240024002402007290378200741f8006a41086a29030084500d00200741e8006a200420022005200610c10a2007290368200741e8006a41086a29030084500d01200521080c020b200741c8006a200a200b2005200610c90a200741c8006a41086a290300210b420021062007290348210a0c010b200741d8006a200420022005200610c90a200741e0006a29030021024200210642012108200729035821040b200741186a200b42002004420010c20a200741286a20024200200a420010c20a200741386a200a42002004420010c20a02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729032042005272200729033042005272200741386a41086a2903002201200729031820072903287c7c2203200154724101470d00411010382209450d072009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037028c01200720093602880120074188016a109c0a411010382209450d07200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029c01200720093602980120074198016a109c0a411010382209450d0720092008a7220d36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c0003702ac01200720093602a801200741a8016a109c0a200741f8016a41086a20074198016a41086a28020036020020072007290398013703f80120074188026a41086a20074188016a41086a280200360200200720072903880137038802200741b8016a20074188026a200741f8016a109d0a024020072802fc0141ffffffff0371450d0020072802f80110390b200741b8016a109c0a20072802c001210e20072802bc01210f20072802b8012110024020072802b00122114101470d00200e4101200e41014b1b220941ffffffff03712009470d092009410274220c417f4c0d0902400240200c0d00410421110c010b200c10382211450d0920114100200c10c50a1a0b200720093602e802200720113602e0022007200c4102763602e402200e450d1620112009410274200e4102746b6a210c200d4101200d41014b1bad21024200210441002109201021110340200e200e20096a220d490d03200c200442208620113502008422042002803e0200200d417f6a450d17201141046a2111200c41046a210c2009417f6a2109200420028221040c000b0b2011450d0320072802a80122122802000d020c030b200741086a200729033820032008200610c90a20004100360200200041106a200741086a41086a290300370300200041086a20072903083703000c160b410020096b200e41e8cbca00103c000b200e450d112010280200450d00200e20114d0d00200720113602c401200e20116b221341016a22144101201441014b1b221541ffffffff03712015470d0520154102742216417f4c0d0520160d01410421170c020b410021170240200f41ffffffff03710d000c030b201010390c020b201610382217450d0220174100201610c50a1a0b20114101201141014b1b221841ffffffff03712018470d0220184102742219417f4c0d02201910382209450d0120094100201910c50a211a4101210d41022109024002400240201228020067221b0e020201000b41022109201b210c4101210d034020094101200c4101711b200d6c210d200c41034b211c200920096c2109200c410176210c201c0d000b0b2009200d6c210d0b2007200e360280022007200f3602fc01200720103602f801410410382209450d012009200d360200200742818080801037028c022007200936028802200741c8016a200741f8016a20074188026a109d0a20091039201141ffffffff03712011470d0220114102742209417f4c0d024104210c02402009450d0020091038220c450d020b2007200c3602f801200720094102763602fc01200c2012201141027410c30a1a2007201136028002410410382209450d012009200d360200200742818080801037028c022007200936028802200741d8016a200741f8016a20074188026a109d0a200910390240201420072802c4016a220920072802d00122114d0d00200920116b220c41ffffffff0371200c470d03200c410274220d417f4c0d0302400240200d0d004104210e0c010b200d1038220e450d030b4100210920074100360280022007200e3602f8012007200d410276220d3602fc01024002400240200d200c4f0d00200741f8016a4100200c10be0320072802fc01210d20072802f801210e20072802800221090c010b200c450d010b200e20094102746a4100200c41027410c50a1a2009200c6a21090b20114102742110200720093602800220072802c801210c0240200d20096b20114f0d00200741f8016a2009201110be0320072802f801210e20072802800221090b200e20094102746a200c201010c30a1a200741f8016a41086a200920116a220936020020074188026a41086a22112009360200200720072903f80137038802024020072802cc0141ffffffff0371450d00200c10390b200741c8016a41086a201128020036020020072007290388023703c8010b2016410276211d2019410276211e200741d8016a109c0a034020072013221f3602e4010240024002400240024002400240024002400240024002400240024020072802d001220920072802c4012211201f6a220c417f736a220e20094f0d0020092009200c6b220c4d0d0120072802e0012209200920116b22114d0d0220072802d80120114102746a35020022024200510d03201f201f4100476b211320072802c8012209200e4102746a35020021042009200c4102746a3502002101200741003602e8012007200120044220868422042002803703f0012007200420028237038002200741003602f8012007200741e4016a36029c022007200741c8016a360298022007200741c4016a360294022007200741d8016a360290022007200741f8016a36028c022007200741e8016a3602880220074188026a109e0a1a034020072802f80141016a41004c0d05024020072903800242ffffffff0f560d0020074188026a109e0a0d010b0b20072903f001210341002109024020072802c401220f20072802e401220d6a2211200f490d00200f41016a2209200f490d060b200941ffffffff03712009470d1120094102742209417f4c0d110240024020090d004104210c0c010b20091038220c450d110b200741003602a8022007200c3602a0022007200941027622093602a4020240024002402011200d490d00200f41016a220e200f490d092009200e490d01410021200c020b410021200c0c0b200741a0026a4100200e10be0320072802a802212020072802a002210c0b200c20204102746a210c2011200d4d0d072011417f7321090340200920072802d00122106a220e20094f0d09200c20072802c801200e4102746a280200360200200941016a2109200c41046a210c200d2011417f6a2211490d000b200f20206a21200c090b200e200941e8cbca00103c000b200c200941e8cbca00103c000b2011200941e8cbca00103c000b41a0ccca00411941bcccca001035000b41ccccca004118200741e0026a41e4ccca0041f4ccca00103d000b4180eaca0041114188c8ca001035000b4180eaca0041114198c8ca001035000b200f450d010c020b200e201041e8cbca00103c000b20072802d0012209200d417f736a221120094f0d01200c20072802c80120114102746a280200360200202041016a21200b200720203602a80220072802e001220c41ffffffff0371200c470d06200c4102742209417f4c0d0620072802d801210e0240024020090d00410421110c010b200910382211450d060b200720113602d002200720094102763602d4022011200e200910c30a1a2007200c3602d802410810382209450d052009200342208a37020020074282808080203702e402200720093602e002200741b0026a200741d0026a200741e0026a109d0a20091039202020072802b8022221202020214b1b22224101202241014b1b221041ffffffff03712010470d0620104102742223417f4c0d0620072802a402212420072802a00221250240024020230d00410421260c010b202310382226450d0620264100202310c50a1a0b024020220d004100210c0c030b2022417f6a21142010417f6a21112021417f6a221c20214b21122020417f6a221620204b2119202620236a417c6a210e410021094200210220072802b002212703404100210c024020190d004100210c201620096b220d20164b0d004100210c2020200d4d0d002025200d4102746a280200210c0b4100210d024020120d00201c20096b220f201c4b0d002021200f4d0d002027200f4102746a280200210d0b201020114d0d02200e200cad220420027d200dad22017d200420017d220120027d22022001200456200220015672220c1b3e020020142009460d03200941016a2109200e417c6a210e2011417f6a2111200cad21020c000b0b2011200941e8cbca00103c000b2011201041f8cbca00103c000b0240202441ffffffff0371450d00202510390b0240024002400240024002400240024002400240024002400240024020072802c401220e20072802e40122116a221c200e490d00024002402011201c4f0d002011417f73210903402010201020116a20096a220d4d0d04200920072802d001220f6a221120094f0d0520072802c80120114102746a2026200d4102746a2802003602002009417f6a210920072802e4012111200e417f6a220e0d000c020b0b200e0d010b2011201c417f73220e6a220920106a221120094f0d0320072802d0012209200e6a220e20094f0d0420072802c801200e4102746a202620114102746a28020036020020072802e40121110b20152011417f736a220920154f0d04201720094102746a2003a7360200200c450d0c201520072802e401417f736a220920154f0d05201720094102746a22092009280200417f6a36020041002109024020072802c401220f20072802e401220d6a2211200f490d00200f41016a2209200f490d070b200941ffffffff03712009470d1020094102742209417f4c0d100240024020090d004104210c0c010b20091038220c450d100b200741003602e8022007200c3602e0022007200941027622093602e4020240024002402011200d490d00200f41016a220e200f490d0a2009200e490d014100211c0c020b4100211c0c0d0b200741e0026a4100200e10be0320072802e802211c20072802e002210c0b200c201c4102746a210c2011200d4d0d082011417f7321090340200920072802d00122106a220e20094f0d0a200c20072802c801200e4102746a280200360200200941016a2109200c41046a210c200d2011417f6a2211490d000b200f201c6a211c0c0a0b20224101202241014b1b20116a20096a201041e8cbca00103c000b2011200f41f8cbca00103c000b2011201041e8cbca00103c000b200e200941f8cbca00103c000b2009201541f8cbca00103c000b2009201541e8cbca00103c000b4180eaca0041114188c8ca001035000b4180eaca0041114198c8ca001035000b200f450d010c020b200e201041e8cbca00103c000b20072802d0012209200d417f736a221120094f0d06200c20072802c80120114102746a280200360200201c41016a211c0b200741c0026a41086a201c360200200720072903e0023703c00220072802e001220c41ffffffff0371200c470d04200c4102742209417f4c0d0420072802d801210e0240024020090d00410421110c010b200910382211450d040b200720113602e002200720094102763602e4022011200e200910c30a1a2007200c3602e802200741d0026a200741e0026a200741c0026a109f0a024020072802c401220920072802e401220f6a22112009490d0002400240200f20114f0d002011417f73210920072802c80120072802d001221020116b4102746a417c6a210c20072802d002211c20072802d802210e200f210d0340200e200e200d6a20096a220d4d0d0a2010201020096a22124d0d0b200c201c200d4102746a280200360200200c41046a210c200941016a210920072802e401210d200f2011417f6a2211490d000c020b0b20090d0120072802d802210e200f210d0b200e200d200f417f7322096a6a220c200e4f0d0920072802d001221120096a220920114f0d0a20072802c80120094102746a20072802d002200c4102746a2802003602000b024020072802d40241ffffffff0371450d0020072802d00210390b20072802c40241ffffffff0371450d0020072802c00210390b02402023450d00202610390b024020072802b40241ffffffff0371450d0020072802b00210390b201f0d000b02400240201b450d00024020072802c40122094101460d00410020096b2110201b411f71210f4100201b6b411f71211c2018410274201a6a417c6a210c417f21090340200920072802d001220e6a221120094f0d0e200e2011417f6a220d4d0d0f2018201820096a220e4d0d10200c20072802c801220e200d4102746a280200201c74200e20114102746a280200200f7672360200200c417c6a210c20102009417f6a2209470d000b20072802c40121090b20072802d001220c200c20096b22114d0d0a2018201820096b22094d0d0b201a20094102746a20072802c80120114102746a280200201b411f7176360200201a21110c010b20072802d001211820072802cc01211e20072802c8012111201a10390b024020072802dc0141ffffffff0371450d0020072802d80110390b201b450d0020072802cc0141ffffffff0371450d0020072802c80110390b410410382209450d002009410036020041041038220c450d00200c41003602000240024020170d00410121184101211e410121154101211d0c010b20091039200c10392011210c201721090b200720153602f0012007201d3602ec01200720093602e80120072018360280022007201e3602fc012007200c3602f80120074188026a200741f8016a10a00a2007280288024101460d0c024020074188026a41086a29030020084201882006423f86845820074188026a41106a2903002202200642018822045820022004511b0d00200741f8016a41086a200741e8016a41086a280200360200200720072903e8013703f801411010382209450d0120094280808080103702082009420037020020074284808080c00037028c02200720093602880220074188026a109c0a200741e8016a200741f8016a20074188026a109f0a200728028c0241ffffffff0371450d0020072802880210390b200741e0026a41086a200741e8016a41086a280200360200200720072903e8013703e0020c0f0b1030000b1034000b2011200941e8cbca00103c000b200d200e41e8cbca00103c000b2012201041f8cbca00103c000b200c200e41e8cbca00103c000b2009201141f8cbca00103c000b2011200c41e8cbca00103c000b2009201841f8cbca00103c000b2011200e41e8cbca00103c000b2011417f6a200e41e8cbca00103c000b200e201841f8cbca00103c000b2007200729028c023703f80141a8c3ca00412f200741f8016a41d8c3ca0041e8c3ca00103d000b410041004188ccca00103c000b200f41ffffffff0371450d00201010390b200741e0026a109c0a200741f8016a41086a200741e0026a41086a280200360200200720072903e0023703f80120074188026a200741f8016a10a00a41012109024002402007280288024101470d00200041f8c3ca00360204200041086a41193602000c010b200041106a20074188026a41106a290300370300200041086a20074188026a41086a290300370300410021090b2000200936020020072802ac0141ffffffff0371450d0020072802a80110390b200741f0026a24000b130020004103360204200041c0e3c2003602000b3400200041bffec30036020420004100360200200041146a4110360200200041106a41c8eac200360200200041086a42043702000b130020004102360204200041a48ec3003602000b2d01017f02404108103822020d001030000b20002002360200200242f02e3700002000428880808080013702040b6f01047f230041206b22022400200241106a41eb97c200411710f201200241086a200241106a411010f501200228020c21032002280208210402404108103822050d001030000b200020053602002000428880808080013702042005200341e40020041bad370000200241206a24000b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2202280200109405200228020010390f0b2000410c6a2202280200109405200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2202280200109405200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a2202280200109405200228020010390f0b200041106a2202280200109405200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a2202280200109405200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a2202280200109405200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a2202280200109505200228020010390f0b200041286a2202280200109405200228020010390f0b0b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d0020021094050b0f0b200041086a10af01200041046a2202280200109505200228020010390b9e0802057f027e200041c8006a21020240200141046a2203280200200141086a220428020022056b411f4b0d00200120054120108101200428020021050b200128020020056a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700002004200541206a360200200041e8006a2001109705200041086a29030021072000290300210802402003280200200428020022026b410f4b0d00200120024110108101200141086a28020021020b200128020020026a2206200737000820062008370000200141086a2206200241106a2202360200200041186a2903002107200029031021080240200141046a220528020020026b410f4b0d00200120024110108101200628020021020b200128020020026a22042007370008200420083700002006200241106a2202360200200028023021060240200528020020026b41034b0d00200120024104108101200141086a28020021020b200128020020026a2006360000200141086a2205200241046a2206360200200041286a2903002107200029032021080240200141046a28020020066b410f4b0d00200120064110108101200528020021060b2005200641106a2202360200200128020020066a2206200737000820062008370000024002400240024020002802340e03000102030b0240200141046a2802002002470d00200120024101108101200141086a28020021020b200128020020026a41003a0000200141086a200241016a22023602000c020b0240200141046a22052802002002470d00200120024101108101200141086a28020021020b200128020020026a41013a0000200141086a2206200241016a2202360200200028023821040240200528020020026b41034b0d00200120024104108101200628020021020b200128020020026a20043600002006200241046a22023602000c010b0240200141046a22052802002002470d00200120024101108101200141086a28020021020b200128020020026a41023a0000200141086a2206200241016a2202360200200028023821040240200528020020026b41034b0d00200120024104108101200628020021020b200128020020026a20043600002006200241046a22023602000b200028023c21060240200141046a220528020020026b41034b0d00200120024104108101200141086a28020021020b200128020020026a2006360000200141086a2206200241046a2202360200200028024021040240200528020020026b41034b0d00200120024104108101200628020021020b200128020020026a20043600002006200241046a2202360200200028024421000240200141046a28020020026b41034b0d00200120024104108101200141086a28020021020b200128020020026a2000360000200141086a200241046a3602000b800601057f200141046a2802002102200141086a2802002103024020002d000022044103470d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b024020022003470d00200120034101108101200141086a28020021030b2001280200220220036a41013a0000200141086a200341016a2203360200024002400240024020040e03000102030b0240200141046a220428020022052003470d0020012003410110810120042802002105200141086a2802002103200128020021020b200220036a41003a0000200141086a2206200341016a2204360200200041016a21030240200520046b411f4b0d0020012004412010810120062802002104200128020021020b200220046a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a2900003700002006200441206a3602000f0b0240200141046a22062802002003470d00200120034101108101200141086a2802002103200128020021020b200220036a41013a0000200141086a2205200341016a2204360200200041016a21030240200628020020046b411f4b0d0020012004412010810120052802002104200128020021020b200220046a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a2900003700002005200441206a3602000f0b0240200141046a22062802002003470d00200120034101108101200141086a2802002103200128020021020b200220036a41023a0000200141086a2205200341016a2204360200200041016a21030240200628020020046b41204b0d0020012004412110810120052802002104200128020021020b200220046a22012003290000370000200141206a200341206a2d00003a0000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a2900003700002005200441216a3602000b0b890101057f230041106b2201240020014100360208200142013703002001109805200128020021020240200041046a280200200041086a220328020022046b200128020822054f0d00200020042005108101200328020021040b200028020020046a2002200510c30a1a2003200420056a36020002402001280204450d00200210390b200141106a24000b980602047f017e230041f0006b22032400200128020841186c2104200128020021050240024003402004450d01200520046a2101200441686a22062104200141686a29030022072002560d000b2007200520066a220141106a2802002204ad7c2002580d00024002402004200220077da722054b0d00200041023a00080c010b4101210602400240200141086a28020020054107746a22042d00004101470d00200320042800013602682003200441046a28000036006b2003200441146a2900003703482003200441196a29000037004d200441106a2800002101200441086a29000021020c010b200341c0006a200441d8006a280200360200200341206a41186a200441d0006a290300370300200341206a41106a200441c8006a290300370300200341206a41086a200441c0006a290300370300200341c8006a41086a2004411c6a290000370300200341c8006a41106a200441246a290000370300200341c8006a41186a2004412c6a2900003703002003200441386a2903003703202003200441146a290000370348200441086a2903002102200441106a2802002101200341186a200441f4006a290000370300200341106a200441ec006a290000370300200341086a200441e4006a2900003703002003200441dc006a290000370300410021060b200020063a0008200020032802683600092000410c6a200328006b360000200041186a2001360000200041106a20023700002000411c6a2003290348370000200041c0006a2003290320370000200041246a200341c8006a41086a2903003700002000412c6a200341c8006a41106a290300370000200041346a200341c8006a41186a290300370000200041c8006a200341206a41086a290300370000200041d0006a200341206a41106a290300370000200041d8006a200341206a41186a290300370000200041e0006a200341c0006a280200360000200041fc006a200341186a290300370000200041f4006a200341106a290300370000200041ec006a200341086a290300370000200041e4006a20032903003700000b200041003602000c010b20002002109a050b200341f0006a24000bda1201127f23004180036b22022400200241106a2001108308200241206a410120022802102203200228021810e40802400240200228022022040d00410221050c010b200228022421064102210502400240200241286a2802002207450d0020042d0000210820022007417f6a22093602342002200441016a360230024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020080e020001260b200241086a200241306a10ad0120022802080d242002280234200228020c220a490d24200a417f4c0d0302400240200a0d004101210b0c010b200a1038220b450d05200b4100200a10c50a1a0b200b2002280230220c200a10c30a21072002200c200a6a3602302002200a3602fc02200220073602f802200241f8016a200241f8026a10e70620024192026a280100210d2002418b026a280000210e20024184026a280200210f200241f8016a41106a2f0100210c2002418a026a2d000021082002418f026a2f0000211020024191026a2d0000210920024196026a2f0100211120024198026a2d00002112200228028002211320022903f801210120024199016a20024199026a41df0010c30a1a20014201510d012011201241107472211120102009411074722110200c200841107472210c2002413a6a20024199016a41df0010c30a1a410021050240200a450d00200710390b0c230b02402009450d00200220042d00013a00fc01410221052002200441026a36023020074102470d02200241003602340c250b200241003602340c240b200a450d22200710390c230b200220042d00023a00fd012002200441036a36023020074103460d02200220042d00033a00fe012002200441046a36023020074104460d032002200441056a360230200220042d00043a00ff0120074105460d0420024180026a20042d00053a00002002200441066a36023020074106460d0520024181026a20042d00063a00002002200441076a36023020074107460d0620024182026a20042d00073a00002002200441086a36023020074108460d0720024183026a20042d00083a00002002200441096a36023020074109460d0820024184026a20042d00093a000020022004410a6a3602302007410a460d0920024185026a20042d000a3a000020022004410b6a3602302007410b460d0a20024186026a20042d000b3a000020022004410c6a3602302007410c460d0b20024187026a20042d000c3a000020022004410d6a3602302007410d460d0c20024188026a20042d000d3a000020022004410e6a3602302007410e460d0d20024189026a20042d000e3a000020022004410f6a3602302007410f460d0e2002418a026a20042d000f3a00002002200441106a36023020074110460d0f2002418b026a20042d00103a00002002200441116a36023020074111460d102002418c026a20042d00113a00002002200441126a36023020074112460d112002418d026a20042d00123a00002002200441136a36023020074113460d122002418e026a20042d00133a00002002200441146a36023020074114460d132002418f026a20042d00143a00002002200441156a36023020074115460d1420024190026a20042d00153a00002002200441166a36023020074116460d1520024191026a20042d00163a00002002200441176a36023020074117460d1620024192026a20042d00173a00002002200441186a36023020074118460d1720024193026a20042d00183a00002002200441196a36023020074119460d1820024194026a20042d00193a000020022004411a6a3602302007411a460d1920024195026a20042d001a3a000020022004411b6a3602302007411b460d1a20024196026a20042d001b3a000020022004411c6a3602302007411c460d1b20024197026a20042d001c3a000020022004411d6a3602302007411d460d1c20024198026a20042d001d3a000020022004411e6a3602302007411e460d1d20024199026a20042d001e3a000020022004411f6a3602302007411f460d1e2002419a026a20042d001f3a00002002200441206a36023020074120460d1f2002200441216a36023020022007415f6a360234200241f8016a41086a280200220c41087420022802fc01220a41187672210b20024184026a2f010020024186026a2d000041107472410874200c411876722113200241f8016a41216a2f000020042d00204110747221112002418b026a2f00002002418d026a2d000041107472210c20024192026a2f010020024194026a2d000041107472211020024195026a280000210d2002418e026a280100210e20024187026a280000210f410121050c200b1034000b1030000b20024100360234410221050c1f0b20024100360234410221050c1e0b20024100360234410221050c1d0b20024100360234410221050c1c0b20024100360234410221050c1b0b20024100360234410221050c1a0b20024100360234410221050c190b20024100360234410221050c180b20024100360234410221050c170b20024100360234410221050c160b20024100360234410221050c150b20024100360234410221050c140b20024100360234410221050c130b20024100360234410221050c120b20024100360234410221050c110b20024100360234410221050c100b20024100360234410221050c0f0b20024100360234410221050c0e0b20024100360234410221050c0d0b20024100360234410221050c0c0b20024100360234410221050c0b0b20024100360234410221050c0a0b20024100360234410221050c090b20024100360234410221050c080b20024100360234410221050c070b20024100360234410221050c060b20024100360234410221050c050b20024100360234410221050c040b20024100360234410221050c030b20024100360234410221050c020b200241f8016a2002413a6a41df0010c30a1a0c010b0b2006450d00200410390b2000200a3b0009200041286a20114110763a0000200041266a20113b0000200041216a20104110763a00002000411f6a20103b00002000411a6a200c4110763a0000200041186a200c3b00002000410b6a200a4110763a0000200041226a200d3600002000411b6a200e360000200041146a200f360000200041106a20133600002000410c6a200b360000200041086a20053a0000200041296a200241f8016a41df0010c30a1a2000410036020002402002280214450d00200310390b20024180036a24000baa0101037f230041206b220224002002418bb4c400411310f201200241106a41fcb7c400410510f2010240410810382203450d0020032001370000412810382204450d002004200229000037000020042002290010370010200441086a200241086a290000370000200441186a200241106a41086a29000037000020002004360200200041046a42a880808080053702002004200329000037002020031039200241206a24000f0b1030000b3400200041dbfec30036020420004100360200200041146a4102360200200041106a41ec97c300360200200041086a42123702000b3c01017f20004201370200200041086a220241003602002000410041011081012000280200200228020022006a41003a00002002200041016a3602000b3b01017f02404110103822020d001030000b20024200370008200242808090bbbad6adf00d370000200020023602002000429080808080023702040b130020004102360204200041e899c3003602000b9e0403057f027e027f230041f0006b22022400200241106a22034200370300200241086a42083703002002411c6a22044180023b0100200241186a2205410036020020024101360268200241003602000240411810382206450d0020062002290308370300200620022d001d3a00152006200329030037030820062005280200360210200620042d00004100473a00140240200228026822034105490d00200341186c450d00200228020410390b411c10382203450d0020002003360200200041046a2205421c3702002000410110d201200641086a290300210720062903002108024020052802002204200041086a220928020022036b410f4b0d0020002003411010810120052802002104200928020021030b2000280200220520036a220a2007370008200a20083700002009200341106a2203360200200628021021090240200420036b41034b0d00200020034104108101200041046a2802002104200041086a2802002103200028020021050b200520036a2009360000200041086a2209200341046a220336020020062d0014210a024020042003470d0020002004410110810120092802002103200028020021050b200520036a200a3a00002009200341016a220336020020062d001521040240200041046a2802002003470d00200020034101108101200041086a28020021030b200028020020036a20043a0000200041086a200341016a36020020061039200241f0006a24000f0b1030000b3601017f02404110103822020d001030000b2002420037000820024280c2d72f370000200020023602002000429080808080023702040bb70202047f017e230041f0016b22042400200441e8016a4200370300200441e0016a22054200370300200441d8016a4200370300200442003703d001200441d0016a41f1b5c900410d10f2012005418bb6c900410c10f201200441086a200441d0016a412010b202200428025421052004280298012106200441086a200110b902200441d0016a20042802082207200428021010ba0220042902d401210820042802d00121010240200428020c450d00200710390b024002402001450d002000200837020420002001360200200041146a2003290000370000200041106a4100200520064102461b3602002000410c6a20023602002000412c6a200341186a290000370000200041246a200341106a2900003700002000411c6a200341086a2900003700000c010b200041003602000b200441f0016a24000bb80701187f230041d0056b22012400200141c0056a200010eb03200141d0026a20012802c005220220012802c805220310ec030240024020012802f80422040d000c010b2002200310fd0120012802d00221052001410c6a200141d0026a41047241a40210c30a1a20014198056a280200210620014190056a28020021072001418c056a280200210820014188056a280200210920014184056a280200210a20014180056a280200210b20012802fc04210c0b024020012802c405450d00200210390b200141c0056a200010ed03200141d0026a20012802c005220020012802c805220310ee03024020012802d0022202450d002000200310fd010b200141f8026a2103200141f4026a210d200141f0026a210e200141ec026a210f200141e8026a2110200141e4026a2111200141e0026a2112200141dc026a2113200141d0026a41086a21140240024020020d00410021020c010b200141b0026a41086a20014184036a2802003602002001200141fc026a2902003703b0020b20032802002115200d2802002116200e2802002117200f28020021182010280200210f2011280200210d20122802002111201328020021102014280200210e20012802d4022103024020012802c405450d00200010390b0240024002402004450d002002450d01200141d0026a2001410c6a41a40210c30a1a2001419c056a201536020020014198056a201636020020014194056a201736020020014190056a20183602002001418c056a200f36020020014188056a200d36020020014184056a201136020020014180056a2010360200200141fc046a200e360200200141f8046a2003360200200141a0056a20012903b002370300200141a8056a200141b8026a280200360200200120023602f404200120083602c802200120093602c4022001200a3602c0022001200b3602c8052001200c3602c405200120043602c0052007200141d0026a200141c0026a200141c0056a2005200610a4050c020b2002450d010240200e450d00200e410c6c21042002210003400240200041046a280200450d00200028020010390b2000410c6a2100200441746a22040d000b0b02402003450d002003410c6c450d00200210390b0240200d450d00200d4104742104201041086a2100034002402000280200450d002000417c6a28020010390b200041106a2100200441706a22040d000b0b0240201141ffffffff0071450d00201010390b0240200f450d002018450d00200f10390b2015450d01201610390c010b0240200b450d00200410390b2008450d00200a10390b200141d0056a24000ba05f03217f027e067f230041e00f6b22062400200641b00f6a41086a22072001410c6a290000370300200641b00f6a41106a2208200141146a290000370300200641b00f6a41186a22092001411c6a290000370300200641d80e6a41086a220a2001412c6a290200370300200641d80e6a41106a220b200141346a290200370300200641d80e6a41186a220c2001413c6a290200370300200620012900043703b00f200620012902243703d80e2001280200210d200641880f6a41186a220e200141dc006a290000370300200641880f6a41106a220f200141d4006a290000370300200641880f6a41086a2210200141cc006a290000370300200641b80e6a41086a2211200141ec006a290000370300200641b80e6a41106a2212200141f4006a290000370300200641b80e6a41186a2213200141fc006a290000370300200620012900443703880f200620012900643703b80e20064190036a41186a22142001419c016a29000037030020064190036a41106a221520014194016a29000037030020064190036a41086a22162001418c016a290000370300200620012900840137039003200641e8036a2217200141dc016a290000370300200641e0036a2218200141d4016a290000370300200641d8036a2219200141cc016a290000370300200641b0036a41206a221a200141c4016a290000370300200641b0036a41186a221b200141bc016a290000370300200641b0036a41106a221c200141b4016a290000370300200641b0036a41086a221d200141ac016a290000370300200620012900a4013703b003200641f0026a41186a221e200141fc016a290000370300200641f0026a41106a221f200141f4016a290000370300200641f0026a41086a2220200141ec016a290000370300200620012900e4013703f002200641d0026a41186a22212001419c026a290000370300200641d0026a41106a222220014194026a290000370300200641d0026a41086a22232001418c026a29000037030020062001290084023703d002200641086a41a4026a200141a4026a109b01200641086a410c6a2007290300370200200641086a41146a2008290300370200200641086a411c6a2009290300370200200641086a412c6a200a290300370200200641086a41346a200b290300370200200641086a413c6a200c290300370200200641086a41cc006a2010290300370200200641086a41d4006a200f290300370200200641086a41dc006a200e2903003702002006200d360208200620062903b00f37020c200620062903d80e37022c200620062903880f37024c200641086a41fc006a2013290300370200200641086a41f4006a2012290300370200200641086a41ec006a2011290300370200200641086a418c016a2016290300370200200641086a4194016a2015290300370200200641086a419c016a2014290300370200200641086a41ac016a201d290300370200200641086a41b4016a201c290300370200200641086a41bc016a201b290300370200200641086a41c4016a201a290300370200200641086a41cc016a2019290300370200200641086a41d4016a2018290300370200200641086a41dc016a2017290300370200200620062903b80e37026c200620062903900337028c01200620062903b0033702ac01200641086a41fc016a201e290300370200200641086a41f4016a201f290300370200200641086a41ec016a2020290300370200200641086a419c026a2021290300370200200641086a4194026a2022290300370200200641086a418c026a2023290300370200200620062903f0023702ec01200620062903d00237028c02200141d8026a2802002113200141d4026a280200210a200141d0026a2802002120200141cc026a2802002124200141c8026a2802002125200141c4026a280200210c200141c0026a280200210d200141bc026a280200210b200141b8026a2802002122200141b4026a2802002126200141b0026a2802002121200141ac026a2802002115200141a8026a280200211620012802a4022114200942003703002008420037030020074200370300200642003703b00f200641b0036a41f1b5c900410d10f2012007201d290000370300200620062900b0033703b00f200641b0036a418bb6c900410c10f2012009201d290000370300200820062900b003370300200641b0036a200641b00f6a412010b2020240200b450d0020062802c004210720062802f80321092001280200211d2006200c3602b8032006200d3602b4032006200b3602b003201d200641b0036a4100200920074102461b20006a10a5050b200641b00f6a2001280200109c04200641b0036a20062802b00f220b20062802b80f220c10a30420062902b4032227420020062802b00322071b2128200741002802ccdd4a20071b211d02400240024002402027422088a7410020071b2207200a4f0d00202842ffffffff0f8321272028422088a72207450d012007410474210a4100210703400240201d20076a220941086a280200450d00200941046a28020010390b200a200741106a2207470d000c020b0b02400240200a0d002028a7220e41ffffffff0071200e470d04200e4104742207417f4c0d044104210f02402007450d0020071038220f450d040b2007410476ad21272028422088a7210d0c010b2007200a6b220d41ffffffff0071200d470d03200d4104742207417f4c0d034104210902402007450d00200710382209450d030b202842ffffffff0f83200aad4220868421272007410476210e201d210f2009201d200a4104746a200d41047410c30a211d0b02402027422088a72207450d0020074104742109200f41086a2107034002402007280200450d002007417c6a28020010390b200741106a2107200941706a22090d000b0b0240202742ffffffff0083500d00200f10390b200dad422086200ead8421270b2006201d3602b003200620273702b403200b200c200641b0036a10a50402402027422088a72207450d0020074104742109201d41086a2107034002402007280200450d002007417c6a28020010390b200741106a2107200941706a22090d000b0b0240202742ffffffff0083500d00201d10390b024020062802b40f450d00200b10390b02400240024002400240024002402015450d002001280200210d201441086a21072015410c6c221d41746a210a410021090340200728020020096a21092007410c6a2107201d41746a221d0d000b200641d80e6a200d10fd03200641b0036a20062802d80e20062802e00e10fe03200a410c6e21170240024020062802b803220c0d0041e0001038220c450d09410021104108211d410021070c010b20062903b0032227422088a721072027a7211020062802bc03211d0b20142015410c6c220a6a2111024002400240200a0d002014210a0c010b200a41746a210b2014210a02400340200a280200220e450d01200a41046a29020021270240201d417f6a220f200720106b71200f470d00201d417f200b410c6d220f41016a22122012200f491b6a220f201d490d094100417f200f417f6a6776200f4102491b221241016a220f2012490d09200f201d4d0d0002400240024002400240200f201d6b220f0d00201d210f0c010b201d200f6a220f201d490d11200fad420c7e2228422088a745410274210f2028a7211202400240201d0d00200641003602b0030c010b200641043602b8032006200c3602b0032006201d410c6c3602b4030b200641b00f6a2012200f200641b0036a104920062802b80f210f20062802b00f4101460d0120062802b40f210c200f410c6e210f0b200720104f0d022007201d20106b22124f0d01200c201d410c6c6a200c2007410c6c10c30a1a2007201d6a21070c020b200f0d0e0c0f0b2010410c6c211d200c200f20126b2210410c6c6a200c201d6a2012410c6c10c30a1a0b200f211d0b200c2007410c6c6a220f2027370204200f200e360200201d417f6a200741016a712107200b41746a210b200a410c6a220a2011470d000c030b0b200a410c6a210a0b2011200a460d0020142015410c6c6a210e0340200a410c6a210b0240200a41046a280200450d00200a28020010390b200b210a200e200b470d000b0b02402016450d002016410c6c450d00201410390b20062802e00e211120062802d80e210f02400240200c0d00200f201110fd010c010b201d417f6a220e200720106b71220b410c6c41046a220a417f4c0d0902400240200a0d00410121120c010b200a10382212450d090b200641003602b8032006200a3602b403200620123602b003200641b0036a200b10d201024020072010460d002010210a0340200c200a410c6c6a220b280200200b280208200641b0036a10d601200a41016a200e71220a2007470d000b0b200f201120062802b003220a20062802b80310a302024020062802b403450d00200a10390b0240024020072010490d000240201d2007490d002007210a410021070c020b2007201d419cafc3001055000b201d210a201d2010490d050b0240200a2010460d00200a410c6c2010410c6c220a6b210b200c200a6a210a03400240200a41046a280200450d00200a28020010390b200a410c6a210a200b41746a220b0d000b0b02402007450d002007410c6c210b4100210703400240200c20076a220a41046a280200450d00200a28020010390b200b2007410c6a2207470d000b0b201d450d00201d410c6c450d00200c10390b024020062802dc0e450d00200f10390b200641b00f6a200d10ff03200641b0036a20062802b00f221d20062802b80f220a10a202200641b0036a41086a280200210b20062802b403210c20062802b003210e410810382207450d072007200b4100200e410146220e1b20096a3600042007200c4100200e1b201741016a6a360000201d200a2007410810a30220071039024020062802b40f450d00201d10390b200641c80f6a4200370300200641c00f6a4200370300200641b00f6a41086a22074200370300200642003703b00f200641b0036a41a4dcc500410310f2012007200641b0036a41086a2209290000370300200620062900b0033703b00f200641b0036a419ce1c500410d10f201200841086a2009290000370000200820062900b003370000200641b0036a200641b00f6a4120109c020240024020062802b003220b0d002006420037028c0f4100210e200641002802ccdd4a220b3602880f4100210c0c010b20062902b40321272006200b3602880f2006202737028c0f2027422088a7210c2027a7210e0b4100210702400240200c450d00200c211d200c2109034002400240200d200b201d41017620076a221d4102746a280200220a4d0d00201d41016a21070c010b201d2109200d200a460d030b200920076b211d200920074b0d000b200c2007490d040b0240200c200e470d00200641880f6a200e10b70120062802880f210b0b200b20074102746a220941046a2009200c20076b41027410c40a1a2009200d3602002006200c41016a3602900f0b200641d80e6a41086a200641880f6a41086a280200360200200620062903880f22273703d80e02402027a722070d00200641c80f6a4200370300200641c00f6a4200370300200641b00f6a41086a22074200370300200642003703b00f200641b0036a41a4dcc500410310f2012007200641b0036a41086a2209290000370300200620062900b0033703b00f200641b0036a419ce1c500410d10f201200841086a2009290000370000200820062900b003370000200641b00f6a412010fd010c020b200641c80f6a4200370300200641c00f6a4200370300200641b00f6a41086a22094200370300200642003703b00f200641b0036a41a4dcc500410310f2012009200641b0036a41086a221d290000370300200620062900b0033703b00f200641b0036a419ce1c500410d10f201200841086a201d290000370000200820062900b003370000200641203602b4032006200641b00f6a3602b003200641d80e6a200641b0036a10970320062802dc0e41ffffffff0371450d01200710390c010b2016450d002016410c6c450d00201410390b200641b00f6a2001280200221c10a605200641b0036a20062802b00f20062802b80f10a70520062902b4032227422088a7410020062802b00322071b220941ffffffff00712009470d0620094104742209417f4c0d064104211d02402009450d0020091038221d450d060b4100211a200641003602b8032006201d3602b003200620094104763602b403200741002802ccdd4a20071b22232027420020071b2228422088a722294104746a211f024020290d0041002110202321150c040b4100211a410021102023211503402015220741106a21152007280204221e450d04200741086a2902002127024002402007280200220920134b0d000240024002400240024002400240024002402027422088a72207450d00201e20074102746a2114201e210e0340200e280200211d024020100d00413410382210450d1341002112201041003b0132201041003602000b200e41046a210e2010210b2012210d02400340200b41046a2111200b2f0132220f410274210c41002107417f2109024003400240200c2007470d00200f21090c020b200b20076a210a200941016a2109200741046a2107417f200a41046a280200220a201d47200a201d4b1b220a4101460d000b200a41016a0e020002000b0240200d450d00200d417f6a210d200b20094102746a41346a280200210b0c010b0b02400240200f410a4b0d0002402009200f4f0d00201120094102746a220741046a2007200f20096b41027410c40a1a0b201120094102746a201d360200200b200f41016a3b01320c010b4100210d4104210702400240200941054f0d002009210c0c010b410521074105210c024002402009417b6a0e020201000b200941796a210c4101210d410621070c010b4100210c4101210d0b41341038220a450d14200a41003b0132200a4100360200200a200b2f0132220f2007417f736a22093b01322009410c4f0d04200f200741016a22176b2009470d05201120074102746a2802002116200a41046a201120174102746a200941027410c30a1a200b20073b0132200a200b200d1b220741046a21090240200c41016a220f20072f0132220d4b0d002009200f4102746a2009200c4102746a200d200c6b41027410c40a1a0b2009200c4102746a201d3602002007200d41016a3b0132024002400240200b28020022070d00410021110c010b4100211120162117200a21180340200b2f0130210b2007220d2f0132221d410b490d024100210c410421070240200b4105490d00200b210702400240200b417b6a0e020201000b200b41796a210b4101210c410621070c010b4100210b4101210c410521070b41e4001038220a450d17200a41003b0132200a4100360200200a200d2f0132220f2007417f736a22093b01322009410c4f0d09200f200741016a22196b2009470d0a200d41046a220f20074102746a2802002116200a41046a200f201941027422196a200941027410c30a1a200d20073b0132200a2f0132220941016a210f2009410c4f0d0b201d20076b2207200f470d0c201141016a2111200a41346a200d20196a41346a200741027410c30a1a4100210702400340200a20074102746a41346a280200221d20073b0130201d200a360200200720094f0d01200720072009496a220720094d0d000b0b200a200d200c1b221d41046a210f0240200b41016a2207201d2f013222094b0d00200f20074102746a200f200b4102746a2009200b6b41027410c40a1a0b200941016a210c200f200b41027422196a2017360200201d41346a210f0240200b41026a221b200941026a22174f0d00200f201b4102746a200f20074102746a2009200b6b41027410c40a1a0b200f20074102746a2018360200201d200c3b01320240200720174f0d00201d20196a41386a2107034020072802002209200b41016a220b3b01302009201d360200200741046a2107200c200b470d000b0b200d210b20162117200a2118200d28020022070d000b0b41e40010382207450d1520072010360234200741003b013220074100360200201041003b01302010200736020020122011470d0b20072f01322209410b4f0d0c201241016a21122007200941016a221d3b0132200741346a201d4102746a200a360200200720094102746a41046a2016360200200a201d3b0130200a2007360200200721100c010b200d41046a220c200b410274220f6a2109200b41016a2107201d41016a210a02400240201d200b4b0d0020092017360200200d41346a21090c010b200c200741027422116a2009201d200b6b410274220b10c40a1a20092017360200200f200d41346a22096a41086a200920116a200b10c40a1a0b20092007410274220b6a2018360200200d200a3b01322007201d41026a220a4f0d00200b200d6a41346a210903402009280200221d20073b0130201d200d360200200941046a2109200a200741016a2207470d000b0b201a41016a211a0b200e2014470d000b0b202742ffffffff0383500d09201e10390c090b2009410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2009410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200f410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b024020062802b803220720062802b403470d00200641b0036a200710a40420062802b80321070b20062802b00320074104746a221d201e360204201d2009360200201d41086a20273702002006200741016a3602b8030b2015201f470d000c050b0b2007200c1044000b41b0adc300412341d4adc3001035000b4180eaca00411141f4cdc4001065000b201f2015460d00202320294104746a21090340201541106a21070240201541086a28020041ffffffff0371450d00201541046a28020010390b2007211520092007470d000b0b0240202842ffffffff0083500d00202310390b20062802b80f210920062802b00f211d0240024020062802b003220a0d00201d200910fd010c010b20062902b4032227422088a72207410474410472220b417f4c0d02200b1038220c450d01200641003602b8032006200b3602b4032006200c3602b003200641b0036a200710d201200a2007200641b0036a10d101201d200920062802b003220b20062802b80310a302024020062802b403450d00200b10390b02402007450d0020074104742109200a41086a210703400240200728020041ffffffff0371450d002007417c6a28020010390b200741106a2107200941706a22090d000b0b202742ffffffff0083500d00200a10390b024020062802b40f450d00201d10390b02402010450d002010211d024003402012450d012012417f6a2112201020102f01324102746a41346a2802002110201d280234211d0c000b0b0240201a450d00024002400240201d2f01320d00410021090340410021070240201d280200220c450d00200941016a210b201d2f0130210a200c21070b024041e400413420091b450d00201d10390b024020070d004100211d0c040b200b21092007211d200a20072f01324f0d000b2007200a4102746a220941046a28020021140240200b0d002007211d0c020b200941386a280200211d0240200b417f6a2207450d000340201d280234211d2007417f6a22070d000b0b4100210e0c020b201d28020421144100210a0b200a41016a210e0b200641e5036a211141002802ccdd4a211b0340200641b0036a2014201c10a805200641b00f6a20062802b003220a20062802b80310a30420062902b40f2227422088a7410020062802b00f22091b2107024020062802b403450d00200a10390b200741ffffffff00712007470d0420074104742207417f4c0d040240024020070d00410421120c010b200710382212450d040b4100210c2006410036029803200620123602900320062007410476360294032009201b20091b22152027420020091b2228422088a722074104746a210a02400240024020070d00201521074100210f410021100c010b4100210c20152107410021104100210f03400240200741046a28020022090d00200741106a21070c020b200741086a2902002127024002402007280200220b20134d0d000240200c200628029403470d0020064190036a200c10a4042006280290032112200628029803210c0b2012200c4104746a220d2009360204200d200b360200200d41086a20273702002006200c41016a220c360298030c010b201041016a2110200f2027422088a76a210f2027a7450d00200910390b200741106a2207200a470d000c020b0b200a2007460d000340200741106a21090240200741086a280200450d00200741046a28020010390b20092107200a2009470d000b0b0240202842ffffffff0083500d00201510390b02400240200c0d00200641b0036a2014201c10a80520062802b003220720062802b80310fd0120062802b403450d01200710390c010b20062802940321182006280290032112200641b00f6a2014201c10a805200c410474220a4104722207417f4c0d0520062802b80f211920062802b00f2115200710382209450d04200641003602b803200620073602b403200620093602b003200641b0036a200c10d2012012200a6a210d2012210703402007280200210b024020062802b40320062802b80322096b41034b0d00200641b0036a2009410410810120062802b80321090b20062802b00320096a200b3600002006200941046a3602b803200741046a2802002007410c6a280200200641b0036a10d601200741106a2207200d470d000b2015201920062802b003220720062802b80310a302024020062802b403450d00200710390b024020062802b40f450d00201510390b201241086a2107034002402007280200450d002007417c6a28020010390b200741106a2107200a41706a220a0d000b201841ffffffff0071450d00201210390b200641b80e6a2014201c10a905200641b0036a20062802b80e220720062802c00e220a10aa05024020062d00e4032209410247220b450d00200641b00f6a41286a200641b0036a41286a280200360200200641b00f6a41206a200641b0036a41206a290300370300200641b00f6a41186a200641b0036a41186a290300370300200641b00f6a41106a200641b0036a41106a290300370300200641b00f6a41086a200641b0036a41086a290300370300200641d80e6a41086a201141086a290000370300200641d80e6a41106a201141106a290000370300200641d80e6a41186a201141186a290000370300200641d80e6a411f6a2011411f6a280000360000200620062903b0033703b00f200620112900003703d80e20062802e003200f6b211720062802dc0320106b21160b201120062903d80e370000200641b0036a41286a200641b00f6a41286a280200360200200641b0036a41206a200641b00f6a41206a290300370300200641b0036a41186a220d200641b00f6a41186a290300370300200641b0036a41106a200641b00f6a41106a290300370300200641b0036a41086a220f200641b00f6a41086a290300370300201141086a200641d80e6a41086a290300370000201141106a200641d80e6a41106a290300370000201141186a200641d80e6a41186a2903003700002011411f6a200641d80e6a411f6a280000360000200620062903b00f3703b003200620173602e003200620163602dc03200620093a00e40302400240200b0d002007200a10fd010c010b200641003602900f200642013703880f20062802d003210b200641880f6a4100410410810120062802880f221020062802900f22126a200b3600002006201241046a220b3602900f20062802d40321120240200628028c0f200b6b41034b0d00200641880f6a200b410410810120062802880f211020062802900f210b0b2010200b6a20123600002006200b41046a220b3602900f20062802d80321120240200628028c0f200b6b41034b0d00200641880f6a200b410410810120062802900f210b0b20062802880f2210200b6a20123600002006200b41046a220b3602900f0240200628028c0f200b6b41034b0d00200641880f6a200b410410810120062802880f211020062802900f210b0b2010200b6a20163600002006200b41046a220b3602900f0240200628028c0f200b6b41034b0d00200641880f6a200b410410810120062802880f211020062802900f210b0b2010200b6a20173600002006200b41046a220b3602900f200628028c0f21100240024020094101460d0002402010200b470d00200641880f6a200b410110810120062802900f210b0b20062802880f200b6a41003a00002006200b41016a22093602900f0c010b02402010200b470d00200641880f6a200b410110810120062802900f210b0b20062802880f200b6a41013a00002006200b41016a3602900f2011200641880f6a10ff0220062802900f21090b200f290300212720062903b00321280240200628028c0f220f20096b410f4b0d00200641880f6a20094110108101200628028c0f210f20062802900f21090b20062802880f220b20096a22102027370008201020283700002006200941106a22093602900f200d290300212720062903c00321280240200f20096b410f4b0d00200641880f6a20094110108101200628028c0f210f20062802880f210b20062802900f21090b200b20096a220d2027370008200d20283700002007200a200b200941106a10a302200f450d00200b10390b024020062802bc0e450d00200710390b201a417f6a211a0240200c0d0020062802940341ffffffff0071450d0020062802900310390b201a450d010240200e201d2f0132490d00410021090340410021070240201d280200220b450d00200941016a210a201d2f0130210e200b21070b024041e400413420091b450d00201d10390b024020070d004100211d0c030b200a21092007211d200e20072f01324f0d000b2007200e4102746a220941046a28020021140240200a0d002007211d200e41016a210e0c020b200941386a280200211d0240200a417f6a2207450d000340201d280234211d2007417f6a22070d000b0b4100210e0c010b201d200e4102746a41046a2802002114200e41016a210e0c000b0b410021070340201d2802002109024041e400413420071b450d00201d10390b2007417f6a21072009211d20090d000b0b200641b0036a201c10ab0520062802b803210920062802b0032107200620133602b00f20072009200641b00f6a410410a302024020062802b403450d00200710390b2001280200210d200641b00f6a41186a22124200370300200641b00f6a41106a22134200370300200641b00f6a41086a22104200370300200642003703b00f200641b0036a41b9fec300410610f2012010200641b0036a41086a2211290000370300200620062900b0033703b00f200641b0036a41b0eec900410610f201200841086a2011290000370000200820062900b0033700002006200641b00f6a412010f501202120224104746a211d20212107024002402022450d002006280204410020062802001b2116202241047420216a41706a211a41002802ccdd4a211e20064185046a2118200641e5036a2109200641880f6a41206a2119200641d4036a211b200641b0036a4104722117200641880f6a410472211c2021210a0340200a210703400240200741046a280200220b0d00200741106a21070c030b200741086a290200212720064190036a200d2007280200220e10a905200641b0036a200628029003220c20062802980310aa05024020062d00e403220f410246220a0d00200641b00f6a41286a200641b0036a41286a280200360200200641b00f6a41206a200641b0036a41206a2903003703002012200641b0036a41186a2903003703002013200641b0036a41106a29030037030020102011290300370300200641880f6a41086a200941086a290000370300200641880f6a41106a200941106a290000370300200641880f6a41186a200941186a290000370300200641880f6a411f6a2009411f6a280000360000200620062903b0033703b00f200620092900003703880f20062802e003211520062802dc0321140b0240200628029403450d00200c10390b0240200a0d00200641d80e6a41286a2208200641b00f6a41286a280200360200200641d80e6a41206a2222200641b00f6a41206a290300370300200641d80e6a41186a22232012290300370300200641d80e6a41106a22292013290300370300200641d80e6a41086a222a2010290300370300200641b80e6a41086a220a200641880f6a41086a290300370300200641b80e6a41106a220c200641880f6a41106a290300370300200641b80e6a41186a221f200641880f6a41186a290300370300200620062903b00f3703d80e200620062903880f3703b80e200641d0026a41026a222b201941026a2d00003a0000200620192f00003b01d0022006200b36028c0f200620163602880f201441016a212c200620273703900f20152027422088a7222d6a212e02400240200f4101470d002012201f2903003703002013200c2903003703002010200a290300370300200620062903b80e3703b00f0c010b201242003703002013420037030020104200370300200642003703b00f0b201b201c10a004201741186a2012290300370000201741106a2013290300370000201741086a2010290300370000201720062903b00f370000200620163602b003200641b80e6a200641b0036a10a104200641b0036a41286a2008280200360200200641b0036a41206a2022290300370300200641b0036a41186a2023290300370300200641b0036a41106a20292903003703002011202a290300370300200920062903b80e370000200941086a200a290300370000200941106a200c290300370000200941186a201f290300370000200620062903d80e3703b003200641013a00e4032006202e3602e0032006202c3602dc03201841026a202b2d00003a0000201820062f01d0023b000020064190036a200d200e10a905200628029003220a200628029803200641b0036a10ac050240200628029403450d00200a10390b2027a7210f200641f0026a200d200e10a80520062802f802211f20062802f002210c20064190036a41086a220a4100360200200642013703900320064190036a41004104108101200628029003200a28020022086a2016360000200a200841046a360200200b202d20064190036a10d6012011200a28020036020020062006290390033703b003200c201f200641b0036a10ad05024020062802f402450d00200c10390b0240200f450d00200b10390b200641b0036a200e10a60520064190036a20062802b003220c20062802b80310a70502400240200628029003220b0d00200642003702f4022006201e3602f0024100210f201e210b4100210a0c010b20062902940321272006200b3602f002200620273702f4022027422088a7210a2027a7210f0b024020062802b403450d00200c10390b024002400240200a450d00200b200a417f6a4104746a220c2802002016460d010b41041038220c450d07200c200d3602000240200a200f470d00200641f0026a200f10a40420062802f002210b20062802f802210a0b200b200a4104746a220a200c360204200a2016360200200a41086a428180808010370200200620062802f80241016a220a3602f8020c010b200c410c6a210b200c41046a211f0240200c28020c220f200c41086a280200470d00201f200f10b701200b280200210f20062802f802210a0b201f280200200f4102746a200d360200200b200b28020041016a3602000b20062802f402211f20062802f002210c20064190036a200e10a605200a410474220b410472220e417f4c0d062006280298032108200628029003210f200e10382222450d05200641003602b8032006200e3602b403200620223602b003200641b0036a200a10d201200c200a200641b0036a10d101200f200820062802b003220e20062802b80310a302024020062802b403450d00200e10390b0240200628029403450d00200f10390b0240200a450d00200c41086a210a03400240200a28020041ffffffff0371450d00200a417c6a28020010390b200a41106a210a200b41706a220b0d000b0b0240201f41ffffffff0071450d00200c10390b200741106a210a201a2007470d020c040b02402027a7450d00200b10390b200741106a2207201d470d000c030b0b0b201d2007460d000340200741106a21090240200741086a280200450d00200741046a28020010390b20092107201d2009470d000b0b0240202641ffffffff0071450d00202110390b2020417f4c0d014101210702402020450d00202010382207450d010b20072025202010c30a2107200641b8036a200641086a41c40210c30a1a2006418c066a200536020020064188066a200436020020064184066a202036020020064180066a2020360200200641fc056a2007360200200641013602b403200641073a00b003200641b0036a10fc0120012802002107200620203602b803200620243602b403200620253602b0032007200641b0036a200010ae0520032802002107024020032802082209450d00200710390b200320093602082003200736020020022802002107024020022802082209450d00200710390b2002200936020820022007360200200641e00f6a24000f0b1030000b1034000be20301097f23004190016b22032400200341086a2000109f092003200328020822042003280210220510f5010240024020032802004101470d00200328020421020c010b200341186a20012802002001280208109c01200341e9006a200341186a41086a2206290300370000200341f1006a200341186a41106a2207290300370000200341f9006a200341186a41186a220829030037000020034188016a200236020020034184016a2000360200200341013a006020032003290318370061200341386a200341e0006a10f105200341e0006a41206a200341386a41206a280200360200200341e0006a41186a2209200341386a41186a290300370300200341e0006a41106a220a200341386a41106a290300370300200341e0006a41086a220b200341386a41086a29030037030020032003290338370360200341e0006a108105200341186a200110bd071a20092008290300370300200a2007290300370300200b200629030037030020032003290318370360200341386a200010a009200328023822002003280240200341e0006a10cf02200328023c450d00200010390b2003200236026020042005200341e0006a410410a3020240200328020c450d00200410390b0240200141046a280200450d00200128020010390b20034190016a24000be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41b6c1c700411210f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bd20502067f017e230041e0006b220324002003200236021420032001360210200341186a2001200210e40202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10ad010240024020032802080d004104210602400240200328020c2207200328022c22024104762201200120074b1b22084104742201417f4c0d0002402008450d00200110382206450d020b41002101200341003602402003200836023c2003200636023802402007450d002007417f6a210702400240034020024104490d0120032002417c6a36022c20032003280228220241046a360228200228000021022003200341286a10ad0120032802000d01200341c8006a200341286a200328020410b60120032802482208450d01200329024c210902402001200328023c470d00200341386a200110a40420032802382106200328024021010b200620014104746a2201200836020420012002360200200141086a20093702002003200328024041016a22013602402007450d022007417f6a2107200328022c21020c000b0b2003280238210702402001450d0020014104742102200741086a210103400240200128020041ffffffff0371450d002001417c6a28020010390b200141106a2101200241706a22020d000b0b200328023c41ffffffff0071450d04200710390c040b200328023821060b2006450d022000200329023c370204200020063602000c030b1034000b1030000b2003420037023c2003410028029cde4a3602382003410c3602342003200341106a3602302003200341386a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341306a360258200341c4006a41fc86ca00200341c8006a103b1a2003280238200328024010e7020240200328023c450d00200328023810390b200041003602000b2005450d00200410390b200341e0006a24000be20401057f230041e0006b22032400200341086a41e0edc600410410f201200341186a41e4edc600411310f2012003410036024020034201370338200341386a4100410410810120032802382204200328024022056a20013600002003200541046a22013602400240200328023c220520016b41034b0d00200341386a20014104108101200328023c210520032802382104200328024021010b200420016a200236000020032004200141046a220110f301370348200341dc006a200420016a360200200320043602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a108d0102402005450d00200410390b024002402003280230220541206a2204417f4c0d000240024020040d00410121010c010b200410382201450d020b2000200136020041002102200041086a22064100360200200041046a2207200436020002402004410f4b0d0020004100411010810120062802002102200028020021010b200120026a22042003290008370000200441086a200341086a41086a2900003700002006200241106a220436020002402007280200220220046b410f4b0d00200020044110108101200041046a2802002102200041086a28020021040b200041086a2206200441106a22013602002000280200220720046a22042003290018370000200441086a200341186a41086a290000370000200328022821040240200220016b20054f0d0020002001200510810120062802002101200028020021070b200720016a2004200510c30a1a2006200120056a3602000240200328022c450d00200410390b200341e0006a24000f0b1034000b1030000be50401057f230041e0006b22032400200341086a41e0edc600410410f201200341186a41e4ddc700410c10f2012003410036024020034201370338200341386a4100410410810120032802382204200328024022056a20013600002003200541046a22013602400240200328023c220520016b41034b0d00200341386a20014104108101200328023c210520032802382104200328024021010b200420016a200236000020032004200141046a220110f301370348200341d0006a410c6a200420016a360200200320043602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a108d0102402005450d00200410390b024002402003280230220541206a2204417f4c0d000240024020040d00410121010c010b200410382201450d020b2000200136020041002102200041086a22064100360200200041046a2207200436020002402004410f4b0d0020004100411010810120062802002102200028020021010b200120026a22042003290008370000200441086a200341086a41086a2900003700002006200241106a220436020002402007280200220220046b410f4b0d00200020044110108101200041046a2802002102200041086a28020021040b200041086a2206200441106a22013602002000280200220720046a22042003290018370000200441086a200341186a41086a290000370000200328022821040240200220016b20054f0d0020002001200510810120062802002101200028020021070b200720016a2004200510c30a1a2006200120056a3602000240200328022c450d00200410390b200341e0006a24000f0b1034000b1030000bdc0f02117f037e230041f0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041023a00340c010b200328020c2104024002400240200341106a28020022054104490d002005417c7122024104460d0020024108460d002002410c460d0020024110460d0020054114460d00200128000021062001280004210720012800082108200128000c21092001280010210a2005416b6a210b200141156a210c410021020240024020012d00140e020100020b200b450d01200341013602482003200c2d00003a004c20054116460d0120034102360248200320012d00163a004d20054117460d0120034103360248200320012d00173a004e20054118460d0120034104360248200320012d00183a004f20054119460d01200341d0006a20012d00193a0000200341053602482005411a460d01200341d1006a20012d001a3a0000200341063602482005411b460d01200341d2006a20012d001b3a0000200341073602482005411c460d01200341d3006a20012d001c3a0000200341083602482005411d460d01200341d4006a20012d001d3a0000200341093602482005411e460d01200341d5006a20012d001e3a00002003410a3602482005411f460d01200341d6006a20012d001f3a00002003410b36024820054120460d01200341d7006a20012d00203a00002003410c36024820054121460d01200341d8006a20012d00213a00002003410d36024820054122460d01200341d9006a20012d00223a00002003410e36024820054123460d01200341da006a20012d00233a00002003410f36024820054124460d01200341db006a20012d00243a00002003411036024820054125460d01200341dc006a20012d00253a00002003411136024820054126460d01200341dd006a20012d00263a00002003411236024820054127460d01200341de006a20012d00273a00002003411336024820054128460d01200341df006a20012d00283a00002003411436024820054129460d01200341e0006a20012d00293a0000200341153602482005412a460d01200341e1006a20012d002a3a0000200341163602482005412b460d01200341e2006a20012d002b3a0000200341173602482005412c460d01200341e3006a20012d002c3a0000200341183602482005412d460d01200341e4006a20012d002d3a0000200341193602482005412e460d01200341e5006a20012d002e3a00002003411a3602482005412f460d01200341e6006a20012d002f3a00002003411b36024820054130460d01200341e7006a20012d00303a00002003411c36024820054131460d01200341e8006a20012d00313a00002003411d36024820054132460d01200341e9006a20012d00323a00002003411e36024820054133460d01200341ea006a20012d00333a00002003411f36024820054134460d01200341eb006a20012d00343a0000200341286a41026a200341d5006a2d00003a0000200341ec006a41026a200341dc006a2d00003a0000200320032f014c3b0118200320032d004e3a001a2003200341d3006a2f00003b01282003200341da006a2f01003b016c200341e4006a280200210d200341dd006a280000210e200341d6006a280100210f20034120360248200341c8006a41206a2802002110200328004f2111200341c4006a41026a200341e3006a2d00003a00002003200341e1006a2f00003b01442005414b6a210b200141356a210c410121020b200341c0006a41026a20032d001a3a00002003413c6a41026a200341286a41026a2d00003a0000200341386a41026a200341ec006a41026a2d00003a0000200341346a41026a200341c4006a41026a2d00003a0000200320032f01183b0140200320032f01283b013c200320032f016c3b0138200320032f01443b0134200b4110490d00200b4170714110470d010b2003420037021c2003410028029cde4a3602182003410c36022c200320033602282003200341186a36026c200341dc006a41013602002003420137024c200341e4b4c4003602482003200341286a360258200341ec006a41fc86ca00200341c8006a103b1a2003280218200328022010e7020240200328021c450d00200328021810390b410221020c010b200341c8006a41026a2205200341c0006a41026a2d00003a0000200341186a41026a220b2003413c6a41026a2d00003a0000200341286a41026a2212200341386a41026a2d00003a0000200341ec006a41026a2213200341346a41026a2d00003a0000200320032f01403b0148200320032f013c3b0118200320032f01383b0128200320032f01343b016c200c41086a2900002114200c2900002115200c2900102116200041186a200c41186a2900003703002000201637031020002014370308200020153703002000200a3602302000200936022c200020083602282000200736022420002006360220200020032f01483b0035200041376a20052d00003a0000200041386a20113600002000413c6a20032f01183b00002000413e6a200b2d00003a00002000413f6a200f360000200041c6006a200e360000200041d1006a2010360000200041cd006a200d360000200041c3006a20032f01283b0000200041c5006a20122d00003a0000200041cc006a20132d00003a0000200041ca006a20032f016c3b0000200041d5006a20032f00443b0000200041d7006a200341c4006a41026a2d00003a00000b200020023a00342004450d00200110390b200341f0006a24000be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41a8c1c700410e10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bbc0503047f027e017f230041106b2203240020034100360208200342013703002002280220210420034100410410810120032802002205200328020822066a20043600002003200641046a2204360208200228022421060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a2204360208200228022821060240200328020420046b41034b0d00200320044104108101200328020821040b2003280200220520046a20063600002003200441046a2204360208200228022c21060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a2204360208200228023021060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a22043602080240024020022d00344101460d00024020032802042004470d00200320044101108101200328020821040b200328020020046a41003a00002003200441016a22043602080c010b200241356a2105024020032802042004470d00200320044101108101200328020821040b200328020020046a41013a00002003200441016a3602082005200310ff02200328020821040b200241086a29030021072002290300210802402003280204220620046b410f4b0d0020032004411010810120032802042106200328020821040b2003280200220520046a22092007370008200920083700002003200441106a2204360208200241186a2903002107200229031021080240200620046b410f4b0d002003200441101081012003280204210620032802002105200328020821040b200520046a2202200737000820022008370000200020012005200441106a10a30202402006450d00200510390b200341106a24000b31002001ad4220862000ad84200235020842208620022802002200ad8410220240200241046a280200450d00200010390b0bde0901057f230041b0016b22032400200341d8006a41086a200141086a2802003602002003200129020037035820034180016a200010b9022003280280012201200328028801200341d8006a10bf070240200328028401450d00200110390b0240200328025c450d00200328025810390b20034180016a2000109f09200341106a200328028001220420032802880110f50120032802142101200328021021050240200328028401450d00200410390b024020054101470d00200120024b0d0020034180016a2000109f09200328028001220520032802880110fd010240200328028401450d00200510390b200341386a200010a00920034180016a200328023822022003280240220410ab020240024020032d00800122050d00200541014621040c010b2002200410fd012005410146210420054101470d00200341f0006a20034199016a290000370300200341e8006a20034191016a290000370300200341e0006a20034189016a29000037030020032003290081013703580b0240200328023c450d00200210390b0240024020040d00200341306a4200370300200341286a4200370300200341206a4200370300200342003703180c010b200341186a41186a200341d8006a41186a290300370300200341186a41106a200341d8006a41106a290300370300200341186a41086a200341d8006a41086a290300370300200320032903583703180b200341386a200010bc0720034180016a20032802382202200328024010ab02024020032d00800122054101470d00200341f0006a20034199016a290000370300200341e8006a20034191016a290000370300200341e0006a20034189016a29000037030020032003290081013703580b0240200328023c450d00200210390b0240024020054101460d00200341d0006a4200370300200341c8006a4200370300200341c0006a4200370300200342003703380c010b200341386a41186a200341d8006a41186a290300370300200341386a41106a200341d8006a41106a290300370300200341386a41086a200341d8006a41086a290300370300200320032903583703380b2003200341186a36025820034180016a200010bc072003280280012205200328028801200341d8006a10a2040240200328028401450d00200510390b20034189016a200341186a41086a29030037000020034191016a200341186a41106a29030037000020034199016a200341186a41186a290300370000200341a4016a20003602002003200329031837008101200341003a008001200341d8006a20034180016a10f10520034180016a41206a200341d8006a41206a28020036020020034180016a41186a2202200341d8006a41186a29030037030020034180016a41106a2205200341d8006a41106a29030037030020034180016a41086a2204200341d8006a41086a290300370300200320032903583703800120034180016a108105200242003703002005420037030020044200370300200342003703800120034180016a41b9fec300410610f201200541b0eec900410610f201200341086a20034180016a412010f501200328020c2106200328020821072002200341386a41186a2903003703002005200341386a41106a2903003703002004200341386a41086a2903003703002003200329033837038001200020012006410020071b20034180016a10be071a0b200341b0016a24000b8d0801117f23004190076b220224000240024002400240024002400240024002400240200128020422034104490d0020012003417c6a220436020420012001280200220541046a36020020052800002106200241e8046a410472210741002108417b21090240034020042008460d012001200320096a3602042001200520086a220a41056a360200200720086a200a41046a2d00003a00002002200841016a220a3602e8042009417f6a2109200a2108200a4120470d000b200241b8026a41026a200241f5046a2d00003a0000200241b4026a41026a200241fc046a2d00003a0000200220022f01ec043b01bc02200220022d00ee043a00be022002200241f3046a2f00003b01b8022002200241fa046a2f01003b01b40220024188056a280200210820024184056a2802002109200241fd046a280000210a200241f6046a280100210320022800ef042105200241b0026a41026a20024183056a2d00003a0000200220024181056a2f00003b01b002200241e8046a200110b00520022802e8044101460d02200241c0026a200241e8046a41047241a40210c30a1a200241e8046a200110b10520022802e8042204450d03200241f0046a220b280200210720022802ec04210c200241e8046a200110b10520022802e804220d450d04200b280200210b2001280204220e4104490d0520022802ec04210f2001200e417c6a221036020420012001280200221141046a36020020104104490d06201128000021122001200e41786a22103602042001201141086a36020020104104490d07201128000421102001200e41746a36020420012011410c6a36020020112800082101200041cc026a20022f01bc023b0100200041ce026a20022d00be023a0000200041cf026a2005360000200020022f01b8023b00d302200020033600d602200020022f01b4023b00da022000200a3600dd02200041d5026a200241b8026a41026a2d00003a0000200041dc026a200241b4026a41026a2d00003a0000200041e8026a2008360000200041e4026a2009360000200041e3026a200241b0026a41026a2d00003a0000200020022f01b0023b00e102200241086a200241c0026a41a40210c30a1a20002006360200200041046a200241086a41a40210c30a1a200041c8026a2001360200200041c4026a2010360200200041c0026a2012360200200041bc026a200b360200200041b8026a200f360200200041b4026a200d360200200041b0026a20073602002000200c3602ac02200020043602a8020c0a0b200041003602a8020c090b200041003602a8020c080b200041003602a8020c070b200041003602a8020c060b200041003602a8020c040b200041003602a8020c020b200041003602a8020c010b200041003602a8020b200b450d00200d10390b2007450d00200410390b20024190076a24000bab2a03297f017e077f230041f0016b22022400024002400240024002400240024002400240200128020422034104490d0020012003417c6a36020420012001280200220441046a2205360200410420036b21062003417b6a21072004280000210820024198016a41047221094100210a024003402006200a6a450d012001200736020420012004200a6a220b41056a3602002009200a6a200b41046a2d00003a00002002200a41016a220b360298012007417f6a2107200b210a200b4120470d000b20024190016a41026a220a200241a5016a2d00003a00002002200241b1016a22062800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a280100210c200241ad016a280000210d20024198016a41206a280200210e200228009f01210f20022800e30121102002418c016a41026a2209200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2211200241b3016a2d00003a0000200220062f00003b018801200241146a41026a20022d0096013a0000200220022f0194013b0114200241106a41026a200a2d00003a0000200220022f0190013b01102002410c6a41026a20092d00003a0000200220022f018c013b010c200241086a41026a20112d00003a0000200220022f0188013b01084100210a20024100360298012004200b6a2109200b20036b41046a210620024198016a410472211103402006200a6a450d032001200736020420012009200a6a220441056a3602002011200a6a200441046a2d00003a00002002200a41016a2204360298012007417f6a21072004210a20044120470d000b20024190016a41026a220a200241a5016a2d00003a00002002200241b1016a22062800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a2801002112200241ad016a280000211320024198016a41206a2802002114200228009f01211520022800e30121162002418c016a41026a2209200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2211200241b3016a2d00003a0000200220062f00003b018801200241246a41026a20022d0096013a0000200220022f0194013b0124200241206a41026a200a2d00003a0000200220022f0190013b01202002411c6a41026a20092d00003a0000200220022f018c013b011c200241186a41026a20112d00003a0000200220022f0188013b0118410021062002410036029801200b20046a210a2003417c6a210420024198016a410472210903402004200a460d042001200736020420012005200a6a220b41016a360200200920066a200b2d00003a00002002200641016a220b360298012007417f6a2107200a41016a210a200b2106200b4120470d000b20024190016a41026a220b200241a5016a2d00003a00002002200241b1016a22042800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a2801002111200241ad016a280000210320024198016a41206a2802002117200228009f01211820022800e30121192002418c016a41026a2206200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2209200241b3016a2d00003a0000200220042f00003b018801200241346a41026a20022d0096013a0000200220022f0194013b0134200241306a41026a200b2d00003a0000200220022f0190013b01302002412c6a41026a20062d00003a0000200220022f018c013b012c200241286a41026a20092d00003a0000200220022f0188013b01284100210b20024100360298012005200a6a210420024198016a410472210903402007417f460d05200120073602042001200441016a220a3602002009200b6a20042d00003a00002002200b41016a2206360298012007417f6a2107200a21042006210b20064120470d000b20024190016a41026a220b200241a5016a2d00003a00002002200241b1016a22042800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a2801002105200241ad016a280000211a20024198016a41206a280200211b200228009f01211c20022800e301211d2002418c016a41026a2206200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2209200241b3016a2d00003a0000200220042f00003b018801200241c4006a41026a20022d0096013a0000200220022f0194013b0144200241c0006a41026a200b2d00003a0000200220022f0190013b01402002413c6a41026a20062d00003a0000200220022f018c013b013c200241386a41026a20092d00003a0000200220022f0188013b013841002104200241003602980120024198016a410472210903402007417f460d0620012007360204200a2d000021062001200a41016a220b360200200920046a20063a00002002200441016a2206360298012007417f6a2107200b210a2006210420064120470d000b20024190016a41026a220a200241a5016a2d00003a00002002200241b1016a22042800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a280100211e200241ad016a280000211f200241b8016a2802002120200228009f01212120022800e30121222002418c016a41026a2206200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2209200241b3016a2d00003a0000200220042f00003b018801200241d4006a41026a20022d0096013a0000200220022f0194013b0154200241d0006a41026a200a2d00003a0000200220022f0190013b0150200241cc006a41026a20062d00003a0000200220022f018c013b014c200241c8006a41026a20092d00003a0000200220022f0188013b01484100210a200241003602980120024198016a410472210603402007417f460d07200b2d00002104200120073602042001200b41016a220b3602002006200a6a20043a00002002200a41016a2204360298012007417f6a21072004210a200441c000470d000b2002200241cd016a220a2900003703e0012002200241d4016a2900003700e701200220022f019c013b019401200220022d009e013a009601200241a6016a2801002123200241ad016a2800002124200241b4016a2802002125200241bb016a2800002126200241c2016a2801002127200241c9016a2800002128200228009f01212920022800e301212a20022900e701212b20024190016a41026a2204200241a5016a2d00003a00002002200241a3016a2f00003b0190012002418c016a41026a2206200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2209200241b3016a2d00003a00002002200241b1016a2f00003b01880120024184016a41026a222c200241ba016a2d00003a0000200220024198016a41206a2f01003b01840120024180016a41026a222d200241c1016a2d00003a00002002200241bf016a2f00003b018001200241fc006a41026a222e200241c8016a2d00003a00002002200241c6016a2f01003b017c200241f8006a41026a222f200241cf016a2d00003a00002002200a2f00003b0178200241f4006a41026a20022d0096013a0000200220022f0194013b0174200241f0006a41026a20042d00003a0000200220022f0190013b0170200241ec006a41026a20062d00003a0000200220022f018c013b016c200241e8006a41026a20092d00003a0000200220022f0188013b0168200241e4006a41026a202c2d00003a0000200220022f0184013b0164200241e0006a41026a202d2d00003a0000200220022f0180013b0160200241dc006a41026a202e2d00003a0000200220022f017c3b015c200241d8006a41026a202f2d00003a0000200220022f01783b01584100210a200241003602980120024198016a410472210603402007417f460d08200b2d00002104200120073602042001200b41016a220b3602002006200a6a20043a00002002200a41016a2204360298012007417f6a21072004210a20044120470d000b20024190016a41026a220a200241a5016a2d00003a00002002200241b1016a22042800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a0096012002200241a3016a2f00003b019001200241a6016a280100212c200241ad016a280000212d20024198016a41206a280200212e200228009f01212f20022800e30121302002418c016a41026a2206200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2209200241b3016a2d00003a0000200220042f00003b01880120024184016a41026a20022d0096013a0000200220022f0194013b01840120024180016a41026a200a2d00003a0000200220022f0190013b018001200241fc006a41026a20062d00003a0000200220022f018c013b017c200241f8006a41026a20092d00003a0000200220022f0188013b01784100210a200241003602980120024198016a410472210603402007417f460d09200b2d00002104200120073602042001200b41016a220b3602002006200a6a20043a00002002200a41016a2204360298012007417f6a21072004210a20044120470d000b20024190016a41026a2207200241a5016a2d00003a00002002200241b1016a220a2800003602e0012002200241b4016a2800003600e301200220022f019c013b019401200220022d009e013a009601200220024198016a410b6a2f00003b01900120024198016a41206a2802002101200241ad016a280000210b200241a6016a280100210420022800e3012106200228009f0121092002418c016a41026a2231200241ac016a2d00003a00002002200241aa016a2f01003b018c0120024188016a41026a2232200241b3016a2d00003a00002002200a2f00003b0188012000418b026a20093600002000418a026a20022d0096013a000020004188026a20022f0194013b01002000200436009202200020022f0190013b008f0220004191026a20072d00003a00002000200b36009902200020022f018c013b00960220004198026a20312d00003a0000200020022f0188013b009d022000419f026a20322d00003a0000200041a4026a2001360000200041a0026a20063600002000410b6a200f3600002000410a6a200241146a41026a2d00003a0000200041086a20022f01143b00002000200c360012200020022f01103b000f200041116a200241106a41026a2d00003a00002000200d360019200020022f010c3b0016200041186a2002410c6a41026a2d00003a0000200020022f01083b001d2000411f6a200241086a41026a2d00003a0000200041246a200e360000200041206a20103600002000412a6a200241246a41026a2d00003a0000200041286a20022f01243b00002000412b6a2015360000200041316a200241206a41026a2d00003a0000200020022f01203b002f20002012360032200041386a2002411c6a41026a2d00003a0000200020022f011c3b0036200020133600392000413f6a200241186a41026a2d00003a0000200020022f01183b003d200041c4006a2014360000200041c0006a2016360000200041ca006a200241346a41026a2d00003a0000200041c8006a20022f01343b0000200041cb006a2018360000200041d1006a200241306a41026a2d00003a0000200020022f01303b004f20002011360052200041d8006a2002412c6a41026a2d00003a0000200020022f012c3b005620002003360059200041df006a200241286a41026a2d00003a0000200020022f01283b005d200041e4006a2017360000200041e0006a2019360000200041ea006a200241c4006a41026a2d00003a0000200041e8006a20022f01443b0000200041eb006a201c360000200041f1006a200241c0006a41026a2d00003a0000200020022f01403b006f20002005360072200041f8006a2002413c6a41026a2d00003a0000200020022f013c3b00762000201a360079200041ff006a200241386a41026a2d00003a0000200020022f01383b007d20004184016a201b36000020004180016a201d3600002000418a016a200241d4006a41026a2d00003a000020004188016a20022f01543b00002000418b016a202136000020004191016a200241d0006a41026a2d00003a0000200020022f01503b008f012000201e3600920120004198016a200241cc006a41026a2d00003a0000200020022f014c3b0096012000201f360099012000419f016a200241c8006a41026a2d00003a0000200020022f01483b009d01200041a4016a2020360000200041a0016a2022360000200041aa016a200241f4006a41026a2d00003a0000200041a8016a20022f01743b0000200041ab016a2029360000200041b1016a200241f0006a41026a2d00003a0000200020022f01703b00af01200020233600b201200041b8016a200241ec006a41026a2d00003a0000200020022f016c3b00b601200020243600b901200041bf016a200241e8006a41026a2d00003a0000200020022f01683b00bd01200041c0016a2025360000200041c6016a200241e4006a41026a2d00003a0000200041c4016a20022f01643b0000200020263600c701200041cd016a200241e0006a41026a2d00003a0000200020022f01603b00cb01200020273600ce01200041d4016a200241dc006a41026a2d00003a0000200020022f015c3b00d201200020283600d501200041db016a200241d8006a41026a2d00003a0000200020022f01583b00d901200041e0016a202b370000200041dc016a202a360000200041ea016a20024184016a41026a2d00003a0000200041e8016a20022f0184013b0000200041eb016a202f360000200041f1016a20024180016a41026a2d00003a0000200020022f0180013b00ef012000202c3600f201200041f8016a200241fc006a41026a2d00003a0000200020022f017c3b00f6012000202d3600f901200041ff016a200241f8006a41026a2d00003a0000200020022f01783b00fd0120004184026a202e36000020004180026a203036000020004100360200200020083602040c090b200041013602000c080b200041013602000c070b200041013602000c060b200041013602000c050b200041013602000c040b200041013602000c030b200041013602000c020b200041013602000c010b200041013602000b200241f0016a24000bed0201077f230041106b22022400200241086a200110ad010240024002402002280208450d00200041003602000c010b0240200228020c2203418080808002490d00200041003602000c010b02400240200341086a22042003490d00024002400240200128020422052004417f6a22064103762204490d000240024020040d00410121070c010b200410382207450d0320074100200410c50a1a0b200720012802002208200410c30a21072001200520046b3602042001200820046a3602000240200641ffffffff014b0d00200720064103756a2201450d05200120074f0d020b02402004450d00200710390b200041003602000c050b200041003602000c040b200641f8ffffff017122012003490d042000200736020020002004ad42208620034103742004410674200120034b1bad843702040c030b1030000b200041003602000c010b41cc94c100412f41fc94c1001065000b200241106a24000f0b41f2dac300412f41a4dbc3001035000b34002000419194c30036020420004100360200200041146a4103360200200041106a418c9ec300360200200041086a420d3702000b9b0302047f017e23004180016b22012400200141206a4200370300200141186a22024200370300200141086a41086a420037030020014200370308200141086a4192d1c800410b10f201200241b8d4c800411310f2012001412036022c2001200141086a360228200141306a200141086a412010e40202400240200128023022030d00410021020c010b200128023421042001200141306a41086a28020036024420012003360240200141e8006a200141c0006a10bb030240024020012802682202450d00200129026c21050c010b2001420037024c410021022001410028029cde4a3602482001410c36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c200141e4b4c4003602682001200141d8006a360278200141e4006a41fc86ca00200141e8006a103b1a2001280248200128025010e7020240200128024c450d00200128024810390b0b2004450d00200310390b0240024020020d00200042003702042000410028029cde4a3602000c010b20002005370204200020023602000b20014180016a24000bca0102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad42f4027e2205422088a74541027421012005a721040240024020030d00200241003602100c010b200241186a41043602002002200341f4026c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a200141f4026e360200200241206a24000f0b1034000be40d010e7f230041a0016b2202240041002103410028029cde4a2104024002402001280204220541037622060d0020052107410021080c010b2002420037023c20022004360238024002400240200541067620054138714100476a2209450d00200241386a410020091081012009200228024022074b0d010b200228023821040c010b0240200228023c20076b200920076b22094f0d00200241386a20072009108101200228024021070b2002280238220420076a210a0240024020094102490d00200a41002009417f6a10c50a1a200920076a20046a417f6a210a0c010b2009450d010b200a41003a00000b41002005410676200541c0004922071b2109200228023c2103024002402006200641077120071b41ff0171220a0d00200521072009450d010b200420096a210b41002106200421090340200920092d0000417e200641077177713a000020094100200641ff0171220741016a2206410376200741074922071b6a21092006200641077120071b220641ff0171200a470d00200b2009470d000b2001280204220741037621060b200541787121080b2001280200210920022008410376220a360270200220063602880102400240200a2006470d00024020074107710d0041002101200841067620084138714100476a210b024002400240024002402008450d00200a410771220645410374200672210c200b0d0141f4ddca0021064100210b0c040b4100210c200b0d0141f4ddca002106410021014100210b0c030b200c4108470d00410021010c010b2004200b417f6a220b6a21010b200421060b4100210d200a2007410771220e6a220541037620054107714100476a21050240024002400240200a200e72450d0020050d0141f4ddca002109410021050c030b20050d014100210541f4ddca0021094100210d0c020b200a20076a4107712207454103742007724108460d010b20092005417f6a22056a210d0b02402005200b200b20054b1b2207450d000340200620092d00003a0000200641016a2106200941016a21092007417f6a22070d000b0b2001450d02200d450d02200120012d0000417f417f200c41077174417f73200c4108461b2209417f737122063a000020012006200d2d0000200971723a00000c020b200241cc006a4220370200200241c8006a20073602002002420037025420022009360244200241203602402002200836023c20022004360238200241106a200241386a10830520022802102209450d01200241c4006a210e200228021421070340200241086a200e10b60520022802082206450d022006200228020c10b70521062002410536026420024190f0c30036026020022007410376220a410020091b220b36026c0240024002400240200b417f6a41204f0d0041002105200a2007410771220b6a220141037620014107714100476a21010240200a200b72450d00200a20076a41077122074541037420077221050b2001450d0302400240200b0d0020054108470d00200920016a21074100210a0c010b02400240024020054108470d00200941016a210f2001417f6a2107200c41807e71200b72210c4100210a0c010b0240200b0d0020092001417f6a22076a210a0c020b20014101460d04200941016a210f2001417e6a2107200c41807e71200b72210c200120096a417f6a210a2005210d0b02400240200c41ff01710d00200c410771210541ff01210b0c010b417f4100200c6b41077174417f73200c410771220574210b0b200920092d0000200b417f73712006200574200b71723a000002404108200c6b41ff01712209411f4d0d00200d2105200f2109410021060c010b20062009762106200d2105200f21090b024020070d002005210d0c040b200920076a21072005210d0b0340200920063a0000200641087621062007200941016a2209470d000c030b0b20024188016a41146a410236020020024194016a411c360200200241f0006a41146a41033602002002420437027420024194d8c80036027020024191d8c800360290012002410436028c01200220024188016a360280012002200241ec006a360298012002200241e0006a36028801200241f0006a41b4d8c8001043000b200920092d0000417f417f2005200b6b220741077174417f73200b7420074108461b2207417f73712006200b74200771723a00002009210c0c010b200a450d00200a200a2d0000417f417f200d41077174417f73200d41ff01714108461b2209417f73712009200671723a00000b2002200241386a1083052002280204210720022802002209450d020c000b0b200241cc006a4100360200200241c8006a41f4ddca003602002002420137023c200241f8efc300360238200241f0006a20024188016a200241386a4180f0c30010f805000b200020033602082000200836020420002004360200200241a0016a24000b800101057f024002402001280204220241037622030d00410021040c010b200128020021042001200128020822052003200320054b1b2205200241077122066a22034107712002200541037422056b41787172360204200120044100200341037620034108491b6a360200200620057221010b20002001360204200020043602000be10401077f230041c0006b220224002002410436020420024195f0c30036020020022001410376220336020c0240024002400240024002402003417f6a41204f0d00410021042003200141077122056a220641037620064107714100476a21064100210702402003200572450d00200320016a41077122034541037420037221070b024020060d0041f4ddca00210841002103410021010c040b024020050d0020074108470d002006210320002108410021010c040b024020074108470d00200041016a21082006417f6a210320002104410021010c040b20050d0120002006417f6a22036a210141002104200021080c020b200241286a41146a4102360200200241346a411c360200200241106a41146a41033602002002420437021420024194d8c80036021020024191d8c8003602302002410436022c2002200241286a36022020022002410c6a36023820022002360228200241106a41b4d8c8001043000b20064101460d02200041016a21082006417e6a2103200620006a417f6a2101200021040b417f417f200741077174417f7320074108461b20012d00007121010b02402003450d002008417f6a210603402001410874200620036a2d00007221012003417f6a22030d000b0b2004450d0141ff0121032001410820056b41ff0171220674410020064120491b210102400240200541ff01710d00200541077121060c010b417f410020056b41077174417f73200541077122067421030b2001200320042d0000712006767221010c010b417f417f200720056b220341077174417f7320057420034108461b20002d00007120057621010b200241c0006a240020010bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42d0007e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141d0006c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141d0006e360200200241206a24000f0b1034000b830301067f200028020422024103762103200028020021040240024002402002418004490d00200341027421002002418080084f0d01200041017221050240200141046a280200200141086a220628020022006b41014b0d00200120004102108101200628020021000b2001280200220720006a20053b00002006200041026a22003602000c020b200341027421050240200141046a280200200141086a22062802002200470d00200120004101108101200628020021000b2001280200220720006a20053a00002006200041016a22003602000c010b200041027221050240200141046a280200200141086a220628020022006b41034b0d00200120004104108101200628020021000b2001280200220720006a20053600002006200041046a22003602000b0240200141046a28020020006b200320024107716a220241037620024107714100476a22024f0d00200120002002108101200141086a2802002100200128020021070b200720006a2004200210c30a1a200141086a200020026a3602000b830301067f200028020422024103762103200028020021040240024002402002418004490d00200341027421002002418080084f0d01200041017221050240200141046a280200200141086a220628020022006b41014b0d00200120004102108101200628020021000b2001280200220720006a20053b00002006200041026a22003602000c020b200341027421050240200141046a280200200141086a22062802002200470d00200120004101108101200628020021000b2001280200220720006a20053a00002006200041016a22003602000c010b200041027221050240200141046a280200200141086a220628020022006b41034b0d00200120004104108101200628020021000b2001280200220720006a20053600002006200041046a22003602000b0240200141046a28020020006b200320024107716a220241037620024107714100476a22024f0d00200120002002108101200141086a2802002100200128020021070b200720006a2004200210c30a1a200141086a200020026a3602000b910301037f230041306b2202240020022001360214024002400240024020014180808080024f0d0002400240200141037620014107714100476a22030d00410121040c010b200310382204450d020b20002003360208200041003602042000200436020020022001360210200341ffffffff01712003470d0220022003410374220336021420032001490d03200020014103743602040240200141037641ffffff1f7120014107714100476a2201450d000340200441003a0000200441016a21042001417f6a22010d000b0b200241306a24000f0b2002410c6a41023602002002412c6a41023602002002420237021c200241d8edc300360218200241d4edc30036020820024102360204200220023602282002200241146a360200200241186a41e0a8c3001043000b1030000b41b8edc300411c4188eec3001065000b2002410c6a41023602002002412c6a41023602002002420237021c200241d8edc30036021820024102360204200220023602282002200241146a3602082002200241106a360200200241186a4198eec3001043000bda0601087f23004180026b22032400200341306a22044200370300200341286a22054200370300200341186a41086a2206420037030020034200370318200341386a41b9fec300410610f2012006200341386a41086a220729000037030020032003290038370318200341386a41b0eec900410610f2012004200729000037030020052003290038370300200341106a200341186a412010f50120044200370300200542003703002006420037030020034200370318200341386a41f1b5c900410d10f2012006200729000037030020032003290038370318200341386a418bb6c900410c10f2012004200729000037030020052003290038370300200341386a200341186a412010b202200341386a2001109f09200341086a20032802382204200328024010f5010240200328023c450d00200410390b200341186a200110b402200341386a20032802182206200328022010b50202400240200328024422074102470d0041ccddca0021054100210441002108410021070c010b200328023c41ffffffff0171210820032802402104200341386a21050b200328024821092005280200210a0240200328021c450d00200610390b024002400240024002402004450d00200441037441786a41037641016a210641002105200a21040340200428020020024f0d02200441086a21042006200541016a2205470d000b0b20074101470d0120092002490d010c020b024020050d002007450d00200920024f0d020b200341186a2001200428020010b602200341386a20032802182205200328022010ab0241002104024020032d00384101470d0020002003290039370001200041196a200341386a41196a290000370000200041116a200341386a41116a290000370000200041096a200341386a41096a290000370000410121040b200020043a0000200328021c450d02200510390c020b200341186a200110bc07200341386a20032802182205200328022010ab0241002104024020032d00384101470d0020002003290039370001200041196a200341386a41196a290000370000200041116a200341386a41116a290000370000200041096a200341386a41096a290000370000410121040b200020043a0000200328021c450d01200510390c010b200041003a00000b02402008450d00200a10390b20034180026a24000bcf1102077f027e230041b0016b220b240002400240200128022c20034f0d00200041003602000c010b02400240024002400240024002402004280200450d00200b41206a41f4eec600410510f201200b41306a41f9eec600411210f201200b200236024c200b200b41cc006a410410f301370350200b41e4006a200b41cc006a41046a360200200b200b41d8006a36025c200b200b41cc006a360260200b200b41d0006a360258200b41c0006a200b41d8006a108d01200b280248220c41206a2203417f4c0d010240024020030d004101210d0c010b20031038220d450d030b4100210e200b4100360260200b200d360258200b200336025c02402003410f4b0d00200b41d8006a41004110108101200b28025c2103200b280258210d200b280260210e0b200d200e6a220f200b290020370000200f41086a200b41206a41086a290000370000200b200e41106a220e36026002402003200e6b410f4b0d00200b41d8006a200e4110108101200b28025c2103200b280258210d200b280260210e0b200d200e6a220f200b290030370000200f41086a200b41306a41086a290000370000200b200e41106a220e360260200b280240210f02402003200e6b200c4f0d00200b41d8006a200e200c108101200b280258210d200b280260210e0b200d200e6a200f200c10c30a1a200e200c6a21030240200b280244450d00200b28024010390b200b41186a200b280258220e200310f501200b28021c2103200b280218210d0240200b28025c450d00200e10390b02400240200d4101460d00200b41306a200210b402200b41d8006a200b2802302210200b28023810b50241002802ccdd4a2103200b280258210e4100200b280260200b280264220c410246220f1b210d200b28025c21110240200b280234450d00201010390b2003200e200f1b210e02400240200d0d000c010b200d410374200e6a41786a28020021030b0240200c4102460d00201141ffffffff0171450d00200e10390b200d450d010b024020012802cc01220d2003490d004100200d20036b22032003200d4b1b20012802444f0d010b200041013602000c080b200441086a28020020012802284d0d00200041023602000c070b200b41d8006a2002109c04200b280260210d200b280258210341002104200b41246a41003a0000200b4100360220200b41106a2003200d200b41206a4105410010c10502400240200b280210450d00200b200b2802142204410520044105491b360234200b200b41206a360230200b41086a200b41306a10ad01200b28020c210d200b2802084521040c010b0b0240200b28025c450d00200310390b4100210e200d410020041b210302400240024020050d0020030d010b200320054f0d012003ad4220862005ad8421124101210e0b2000200e36020420004103360200200041086a20123702000c070b024002400240200128023c220420074f0d00410021010c010b200b41d8006a200210ff03200b41306a200b2802582205200b28026010a202200b2802304101462103200b2802342104200b41386a280200210d0240200b28025c450d00200510390b2004410020031b210f200d410020031b210d02400240024020070d00200f21070c010b2007410c6c210e200641086a21032001280238210c41002105034020032802002204200c4b0d022003410c6a21032005417f6a21052004200d6a210d200e41746a220e0d000b200f20056b21070b02402007200128023022044d0d00410221010c020b0240200d200128023422044d0d0041032101200d21070c020b20012802cc012104200b41d8006a200210ab05200b200b2802582205200b28026010f501200b2802042103200b280200210d0240200b28025c450d00200510390b0240200d4101470d0020032008490d002003ad4220862008ad842112410021010c090b0240200420084f0d002004ad4220862008ad842112410121010c090b024020042008460d00200b41d8006a200210a605200b41306a200b280258220d200b28026010a705200b2902344200200b28023022031b211341002802ccdd4a21040240200b28025c450d00200d10390b2003200420031b210e2013422088a7220c450d0641002103200c210d200c21040240034002400240200e200d41017620036a220d4104746a280200220520084f0d00200d41016a21030c010b200d210420052008460d020b200420036b210d200420034b0d000b2008ad2112200c450d09200c4104742103200e41086a210103400240200128020041ffffffff0371450d002001417c6a28020010390b200141106a2101200341706a22030d000c0a0b0b200c4104742104200e41086a210303400240200328020041ffffffff0371450d002003417c6a28020010390b200341106a2103200441706a22040d000b201342ffffffff0083500d00200e10390b20012802402201200a4f0d024100210d0c060b410020056b2107410121010b2000200136020420004104360200200041106a200c3602002000410c6a2004360200200041086a20073602000c070b0240200a450d002009200a4104746a21084100210a41012101034020092802002103024020014101710d002003200d4b0d004101210d0c060b200b41306a2002200310a905200b41d8006a200b280230220d200b28023810aa050240200b2d008c0122014102460d00200b28028801210e200b280284012107200b280280012104200b28027c2105200b280278210c0b0240200b280234450d00200d10390b4102210d024020014102470d0020032104200221010c060b02402009410c6a280200220120044d0d004103210d0c060b02402001200e6a220120054d0d004104210d200521040c060b0240200741016a2201200c4d0d004105210d200c21040c060b200a41016a210a410021012003210d2008200941106a2209470d000b0b200041073602000c060b1034000b1030000b2008ad21120c010b2000200d36020420004106360200200041106a20043602002000410c6a2001360200200041086a200a3602000c020b41022101201342ffffffff0083500d00200e10390b2000200136020420004105360200200041086a20123702000b200b41b0016a24000bf40701027f230041106b220224000240024002400240024002400240024020002802000e0701020304050600010b2002200128021841d6a7c300410c2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41e4a7c300104b1a20022d0008210120022802042203450d06200141ff017121004101210120000d06024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d070b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c060b200128021841c4bdc40041102001411c6a28020028020c11000021010c050b200128021841acd2c20041142001411c6a28020028020c11000021010c040b200128021841c8d2c200410f2001411c6a28020028020c11000021010c030b2002200128021841f4a7c30041192001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a4190a8c300104b1a20022d0008210120022802042203450d02200141ff017121004101210120000d02024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d030b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c020b2002200128021841a0a8c300410e2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41b0a8c300104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b2002200128021841c0a8c300410d2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41d0a8c300104b1a20022d0008210120022802042203450d00200141ff017121004101210120000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d010b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010b200241106a2400200141ff01714100470be80d01087f200028020021020240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20023600002003200441046a3602000240412010382204450d0020042000290004370000200441186a22052000411c6a290000370000200441106a2206200041146a290000370000200441086a22072000410c6a2900003700000240200141046a2208280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a36020020041039200041246a210402402008280200200928020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a360200412010382204450d0020042000290044370000200441186a200041dc006a290000370000200441106a200041d4006a290000370000200441086a200041cc006a2900003700000240200141046a280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a36020020041039412010382204450d0020042000290064370000200441186a200041fc006a290000370000200441106a200041f4006a290000370000200441086a200041ec006a2900003700000240200141046a280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a36020020041039412010382204450d002004200029008401370000200441186a2000419c016a290000370000200441106a20004194016a290000370000200441086a2000418c016a2900003700000240200141046a2205280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2209200241206a36020020041039200041a4016a210402402005280200200928020022026b413f4b0d002001200241c000108101200928020021020b200128020020026a22032004290000370000200341386a200441386a290000370000200341306a200441306a290000370000200341286a200441286a290000370000200341206a200441206a290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002009200241c0006a360200412010382204450d00200420002900e401370000200441186a2205200041fc016a290000370000200441106a2206200041f4016a290000370000200441086a2207200041ec016a2900003700000240200141046a280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a36020020041039412010382204450d002004200029008402370000200441186a22052000419c026a290000370000200441106a220620004194026a290000370000200441086a22072000418c026a2900003700000240200141046a280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a36020020041039412010382204450d00200420002900a402370000200441186a2209200041bc026a290000370000200441106a2205200041b4026a290000370000200441086a2206200041ac026a2900003700000240200141046a280200200141086a220228020022036b411f4b0d00200120034120108101200228020021030b200128020020036a22002004290000370000200041186a2009290000370000200041106a2005290000370000200041086a20062900003700002002200341206a360200200410390f0b1030000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42147e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141146c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141146e360200200241206a24000f0b1034000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad842005102a2207422088a72203450d0041002105024002402007a722022d00000e020100020b2003417f6a4104490d0120022800012101410121050b200210392000200136020420002005360200200641106a24000f0b41a1d5ca00412e200641086a41d0d5ca0041e0d5ca00103d000bbf0401047f23004190016b220524002005200436020c20052003360208024002400240200241074b0d0041002802a8fe4a450d0141002802a4fe4a210241002802a0fe4a210341002802acfe4a2104200541e4006a41f4ddca00360200200541d8006a4201370300200541fc006a41dba2c000ad4280808080f00b84370200200541e8006a4200370300200541d0006a4113360200200541c8a2c00036024c200541f0006a41c8a2c000ad4280808080b00284370300200541c0a2c00036025420054281808080b00e370284012005410036027820054101360248200341f4ddca00200441024622041b200541c8006a200241b0a7c00020041b2802101103000c010b2002417c714108460d0020012800082102200541c8006a200541086a10c305200541106a41086a200541d4006a290200370300200541106a41106a2203200541dc006a290200370300200541106a41186a2204200541e4006a290200370300200541106a41206a2201200541ec006a290200370300200541106a41286a2206200541f4006a290200370300200541106a41306a2207200541fc006a2802003602002005200529024c370310024020052802482208450d00200020052903103702082000200836020420002002360200200041386a2007280200360200200041306a2006290300370200200041286a2001290300370200200041206a2004290300370200200041186a2003290300370200200041106a200541186a2903003702000c020b200041003602040c010b200041003602040b20054190016a24000bcf0a030c7f017e037f230041306b22022400200241206a200110bf03024002400240024020022802202203450d00200241286a280200210420022802242105200241186a200110ad0120022802180d014104210602400240200228021c2207200128020422084104762209200920074b1b2209410474220a417f4c0d0002402009450d00200a10382206450d020b2002410036022820022009360224200220063602200240024020070d002006450d05410021070c010b2007417f6a21094100210702400240034020084104490d012001280200220a280000210b20012008417c6a3602042001200a41046a360200200241106a200110ad0120022802100d012001280204220c20022802142208490d012008417f4c0d040240024020080d004101210a0c010b20081038220a450d06200a4100200810c50a1a0b200a2001280200220d200810c30a210a2001200c20086b3602042001200d20086a3602002008ad220e422086200e84210e024020072002280224470d00200241206a200710a40420022802202106200228022821070b200620074104746a2208200a3602042008200b360200200841086a200e3702002002200228022841016a22073602282009450d022009417f6a2109200128020421080c000b0b2002280220210902402007450d0020074104742108200941086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200841706a22080d000b0b200228022441ffffffff0071450d05200910390c050b20022802202206450d04200228022421090b024002400240024002400240024020012802042208450d002001280200220a2d0000210b20012008417f6a3602042001200a41016a3602004100210802400240200b0e020100020b200241086a200110ad0120022802080d012001280204220b200228020c220a490d01200a417f4c0d0802400240200a0d00410121080c010b200a10382208450d0a20084100200a10c50a1a0b20082001280200220c200a10c30a1a2001200b200a6b3602042001200c200a6a360200200aad220e422086200e84210e0b2002200110ad01200ea7210b20022802000d012001280204220c2002280204220a490d01200a417f4c0d0702400240200a0d004101210d0c010b200a1038220d450d09200d4100200a10c50a1a0b200d2001280200220f200a10c30a21102001200c200a6b220c3602042001200f200a6a220d360200200c4104490d02200d28000021112001200c417c6a220f3602042001200d41046a360200200f4104490d032000200536020420002003360200200d28000421052001200c41786a3602042001200d41086a360200200041346a2005360200200041306a20113602002000412c6a200a360200200041286a200a360200200041246a2010360200200041206a200e422088a73602002000411c6a200b360200200041186a2008360200200041146a2007360200200041106a20093602002000410c6a2006360200200041086a20043602000c0c0b200041003602000c050b200041003602000c030b200041003602000c010b200041003602000b200a450d00201010390b2008450d00200b450d00200810390b02402007450d0020074104742108200641086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200841706a22080d000b0b200941ffffffff0071450d04200610390c040b1034000b1030000b200041003602000c020b200041003602000b02402004450d002004410c6c21082003210103400240200141046a280200450d00200128020010390b2001410c6a2101200841746a22080d000b0b2005450d002005410c6c450d00200310390b200241306a24000b940302017f017e230041d0006b220524002005200436020420052003360200024002400240200241074b0d0041002802a8fe4a450d0141002802a4fe4a210241002802a0fe4a210341002802acfe4a2104200541246a41f4ddca00360200200541186a42013703002005413c6a41dba2c000ad4280808080f00b84370200200541286a4200370300200541106a4113360200200541c8a2c00036020c200541306a41c8a2c000ad4280808080b00284370300200541c0a2c00036021420054281808080b00e3702442005410036023820054101360208200341f4ddca00200441024622041b200541086a200241b0a7c00020041b2802101103000c010b2002417c714108460d0020012800082103200541086a200510b1050240024020052802082202450d00200529020c2106200528020441034b0d012006428080808010540d00200210390b200041003602040c020b200020063702082000200236020420002003360200200041106a200528020022022800003602002005200241046a3602000c010b200041003602040b200541d0006a24000bb90502057f017e230041800b6b2202240002400240200128020422030d002000411b3602000c010b200128020022042d0000210520012003417f6a22063602042001200441016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e1b000102030405060708090a0b0c0d0e0f101112131415161718191a1b0b200041003602000c1c0b200041013602000c1b0b200041023602000c1a0b200041033602000c190b200041043602000c180b200041053602000c170b200041063602000c160b200041073602000c150b200041083602000c140b200041093602000c130b200041f4ddca003602042000410a360200200041086a41003602000c120b20024198076a200110ab012002290398074209510d10200241d0036a20024198076a41c80310c30a1a20024198076a200110c801024020022d009807410b460d00200041d0036a20024198076a41e80310c30a1a200241046a41046a200241d0036a41c80310c30a1a2000410b360200200041046a200241046a41cc0310c30a1a0c120b2000411b360200200241d0036a10af010c110b2000410c3602000c100b2000410d3602000c0f0b2000410e3602000c0e0b2000410f3602000c0d0b200041f4ddca0036020420004110360200200041086a41003602000c0c0b024020064108490d00200429000121072001200341776a3602042001200441096a360200200041086a2007370300200041113602000c0c0b2000411b3602000c0b0b200041123602000c0a0b200041133602000c090b200041143602000c080b200041153602000c070b200041163602000c060b200041173602000c050b200041183602000c040b200041193602000c030b2000411a3602000c020b2000411b3602000c010b2000411b3602000b200241800b6a24000bd70f02037f017e024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e1b000102030405060708090a0b0c0d0e0f101112131415161718191a1b0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41003a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41013a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41023a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41033a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41043a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41053a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41063a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41073a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41083a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41093a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410a3a00002002200041016a3602000f0b200041d0036a2103200041086a21040240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410b3a00002002200041016a3602002004200110e0042003200110e9040f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410c3a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410d3a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410e3a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a410f3a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41103a00002002200041016a3602000f0b0240200141046a2204280200200141086a22032802002202470d00200120024101108101200328020021020b200128020020026a41113a00002003200241016a2202360200200029030821050240200428020020026b41074b0d00200120024108108101200141086a28020021020b200128020020026a2005370000200141086a200241086a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41123a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41133a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41143a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41153a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41163a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41173a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41183a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41193a00002002200041016a3602000f0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a411a3a00002002200041016a3602000b0be713050a7f017e017f027e077f23004180026b220424000240024020014115490d0041012105410121060240034020012107200021082006200571210902400340024020030d002000200110c8050c060b024020054101710d002000200110c9052003417f6a21030b2001410276220641036c210a2006410174210b4100210c024020014132490d00200641016a210d4100210c02400240200020064103746a290300220e20002006417f6a220f4103746a2903002210540d002010211120062112200f2106200e21100c010b4101210c200e2111200f21120b200c2000200d4103746a290300220e201054220f6a200e2010200f1b20115422136a210c200b4101722114024002402000200b4103746a290300220e2000200b417f6a22154103746a2903002210540d0020102111200b21162015210b200e21100c010b200c41016a210c200e2111201521160b200d2012200f1b210f20142016200020144103746a290300220e201054220d1b2114200c200d6a200e2010200d1b20115422126a210c200a41016a210d024002402000200a4103746a290300220e2000200a417f6a22154103746a2903002210540d0020102111200a21162015210a200e21100c010b200c41016a210c200e2111201521160b2006200f20131b2106200b201420121b210b200a200d20162000200d4103746a290300220e201054220f1b200e2010200f1b201154220d1b210a200c200f6a200d6a210c0b024002402000200b4103746a290300220e200020064103746a2903002210540d0020102111200b210d2006210b200e21100c010b200c41016a210c200e21112006210d0b200c2000200a4103746a290300220e20105422066a210c02400240200e201020061b2011540d00200a200d20061b210b200c4521060c010b0240200c410a4b0d00200c41016a4521060c010b2001410176210c200020014103746a41786a21062000210a0340200a2903002110200a200629030037030020062010370300200a41086a210a200641786a2106200c417f6a220c0d000b2001200b417f736a210b410121060b024020092006714101470d002000200110ca050d060b02400240024002402002450d00200b20014f0d0120022903002000200b4103746a220629030022105a0d0320012107200021080b200b20074f0d012008290300211020082008200b4103746a2206290300370300200620103703002007417f6a210a2008290300211041002115200841086a220121060340200629030020105a0d05200641086a2106200a201541016a2215470d000b200a21150c040b200b200141e4adc300103c000b200b20074190adc300103c000b2000290300210e200020103703002006200e370300200041786a210d200041086a210f2000290300210e4100210a2001210c03400240200a200c417f6a220b4f0d00200f200a4103746a21060340200e2006290300540d01200641086a2106200b200a41016a220a470d000b200b210a0b200d200c4103746a210602400340200a200c417f6a220c4f0d0120062903002110200641786a220b2106200e2010540d000b200f200a4103746a2206290300211120062010370300200b41086a2011370300200a41016a210a0c010b0b2000200e37030002402001200a41016a2206490d00200020064103746a2100200120066b220141154f0d010c050b0b2006200141f0acc300105e000b2015200a2015200a491b210c200820074103746a41786a2106200721160240034002402016417f6a221620154b0d00200c21160c020b2006290300210e200641786a2106200e20105a0d000b0b024002400240024020162015490d00200a2016490d01200120164103746a210041800121094100210a4100210b410021064100210c41800121122001201541037422176a2218211403400240200020146b22014187104b22130d002001410376220141807f6a2001200b200a49200c200649220d72220f1b21010240200f450d0020122001200d1b211220012009200d1b21090c010b2001200141017622126b21090b0240200c2006470d00024020120d0020042206210c0c010b410021012004220c21062014210d0340200620013a00002006200d29030020105a6a2106200d41086a210d2012200141016a2201470d000b0b0240200b200a470d00024020090d0020044180016a220a210b0c010b200041786a21014100210d20044180016a220b210a0340200a200d3a0000200a20012903002010546a210a200141786a21012009200d41016a220d470d000b0b0240200a200b6b22012006200c6b220d200d20014b1b220d450d002014200c2d00004103746a220f290300210e200f2000200b2d00002201417f7322054103746a2903003703000240200d4101460d00200d417f6a210d034020002001417f73410374418070726a2014200c41016a220c2d00004103746a220f290300370300200f2000200b41016a220b2d00002201417f7322054103746a290300370300200d417f6a220d0d000b0b200020054103746a200e370300200b41016a210b200c41016a210c0b200020094103746b2000200b200a461b2100201420124103746a2014200c2006461b211420130d000b0240200c20064f0d00200041786a210a2000200820176a6b41786a2101034020142006417f6a22062d00004103746a220b290300210e200b200a290300370300200a200e370300200a41786a210a200141786a2101200c2006490d000c050b0b200b200a4f0d022014200820176a6b41786a210103402014290300210e20142000200a417f6a220a2d0000417f734103746a22062903003703002006200e370300200141086a2101201441086a2114200b200a490d000c040b0b2015201641a0adc300105f000b2016200a41a0adc3001055000b201420186b21010b2008201037030002402007200141037620156a22064d0d002008200820064103746a220a290300370300200a2010370300200720066b220c450d02200c20062006200c4b1b210b2007410376210d200a41086a2100024002402006200c417f6a22014f0d00200820062002200310c705200a21020c010b20002001200a200310c70520062101200821000b200b200d4f2105201520164f2106200141154f0d010c030b0b200620074190adc300103c000b41b0adc300412341d4adc3001035000b20014102490d00200041786a210f410121144101210a0340200a41016a210d02402000200a4103746a220c29030022102000200a417f6a220b4103746a2206290300220e5a0d00200c200e3703000240200b450d0020102000200a417e6a220a4103746a290300220e5a0d002006200e3703000240200a450d002014210a200f210603402010200641786a220c290300220e5a0d022006200e370300200a41016a2206200a4f210b2006210a200c2106200b0d000b0b200021060b200620103703000b2014417f6a2114200f41086a210f200d210a200d2001470d000b0b20044180026a24000bcd0302047f027e024020014101762202450d0003402002417f6a22022103024002400240034020034101742204410172210502400240200441026a220420014f0d00200520014f0d03200020054103746a290300200020044103746a290300540d010b200521040b200420014f0d03200320014f0d02200020034103746a22032903002206200020044103746a220529030022075a0d032003200737030020052006370300200421030c000b0b2005200141fcaec300103c000b20032001418cafc300103c000b20020d000b0b0240024020014102490d002001210503402005417f6a220520014f0d02200029030021062000200020054103746a22042903003703002004200637030041002103024002400240034020034101742204410172210202400240200441026a220420054f0d00200220054f0d03200020024103746a290300200020044103746a290300540d010b200221040b200420054f0d03200320054f0d02200020034103746a22032903002206200020044103746a220229030022075a0d032003200737030020022006370300200421030c000b0b2002200541fcaec300103c000b20032005418cafc300103c000b200541014b0d000b0b0f0b200520014190adc300103c000bed0202067f017e02402001410176220241feffffff07712203417f6a220420014f0d0002402001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d00200020044103746a220429030021082004200020054103746a220529030037030020052008370300024020032001490d00200321040c020b2006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d00200020034103746a220429030021082004200020054103746a2205290300370300200520083703002002410172220420014f0d012006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d00200020044103746a220129030021082001200020054103746a2200290300370300200020083703000f0b200520014190adc300103c000b200420014180adc300103c000bc104050c7f017e017f017e017f200041786a220220014103746a21032001417e6a2104200041186a2105200041706a210641002107200141324921084101210902400240024003400240024020092001490d004100210a0c010b200220094103746a210b4101210a0340200b41086a220c290300200b290300540d014101210d200941016a2209200149210a200c210b20012009470d000c030b0b2009200146210d20080d0120092001460d012009417f6a220b20014f0d02200a410171450d032000200b4103746a220b290300210e200b20002009410374220f6a220c2903002210370300200c200e370300024020094102490d00201020002009417e6a220a4103746a2211290300220e5a0d00200b200e3703000240200a450d002010200c41686a290300220e5a0d002006200f6a210b02400340200b200e370300200a417f6a220a450d01200b41706a210d200b41786a2211210b2010200d290300220e5a0d020c000b0b200021110b201120103703000b200741016a21070240200120096b220b4102490d00200c2903082210200c290300220e5a0d00200c41086a210a200c20103703000240200b4103490d00200c2903102210200e5a0d00200420096b210c2005200f6a210b024002400340200b41706a2010370300200c417f6a220c450d01200b2903002110200b41086a220a210b2010200e5a0d020c000b0b2003210a0c010b200a41706a210a0b200a200e3703000b20074105470d000b4100210d0b200d0f0b200b20014180adc300103c000b200920014190adc300103c000bc60503017f017e057f230041106b2201240020014100360208200142013703002000290300210220014100410810810120012802002203200128020822046a20023700002001200441086a2204360208200029030821020240200128020420046b41074b0d0020012004410810810120012802002103200128020821040b200320046a20023700002001200441086a2204360208200029031021020240200128020420046b41074b0d00200120044108108101200128020821040b200128020020046a20023700002001200441086a360208200028023021042001200041386a280200220310d20120042003200110d0012000413c6a2104024020012802042205200128020822066b411f4b0d0020012006412010810120012802042105200128020821060b2001280200220720066a22032004290000370000200341086a200441086a290000370000200341106a200441106a290000370000200341186a200441186a2900003700002001200641206a2204360208200029031821020240200520046b41074b0d0020012004410810810120012802002107200128020821040b200720046a20023700002001200441086a2204360208200029032021020240200128020420046b41074b0d0020012004410810810120012802002107200128020821040b200720046a20023700002001200441086a22043602080240024002400240200041286a2d00000e03000102030b024020012802042004470d00200120044101108101200128020821040b200128020020046a41003a0000200441016a21040c020b024020012802042004470d0020012004410110810120012802002107200128020821040b200720046a41013a0000200441016a21040c010b024020012802042004470d00200120044101108101200128020821040b200128020020046a41023a0000200441016a21040b20013502002102200141106a240020022004ad422086840be90202037f017e230041106b220124000240410110382202450d00200142013702042001200236020002400240200041ff017122034106460d0041012100200241013a00002001410136020802400240024002400240024020030e06000102030405070b2001410141011081012001280200200128020822026a41003a0000200241016a21000c060b2001410141011081012001280200200128020822026a41013a0000200241016a21000c050b2001410141011081012001280200200128020822026a41023a0000200241016a21000c040b2001410141011081012001280200200128020822026a41033a0000200241016a21000c030b2001410141011081012001280200200128020822026a41043a0000200241016a21000c020b2001410141011081012001280200200128020822026a41053a0000200241016a21000c010b200241003a0000410121000b20013502002104200141106a240020042000ad422086840f0b1030000b2a01017f02404101103822010d001030000b2001200041ff01714101463a00002001ad428080808010840be40101077f230041106b220124000240410410382202450d002002200028020036000020014284808080c00037020420012002360200412010382202450d0020022000290004370000200241186a22032000411c6a290000370000200241106a2204200041146a290000370000200241086a22052000410c6a29000037000020014104412010810120012802002206200128020822076a22002002290000370000200041086a2005290000370000200041106a2004290000370000200041186a200329000037000020021039200141106a2400200741206aad4220862006ad840f0b1030000b130020004103360204200041e0b0c3003602000b9f09050c7f017e027f017e027f230041d0006b22022400200241106a200110bb0102400240024002402002280210450d00200041013602000c010b200228021421032001200128020441016a22043602040240200420012802084b0d002002420037021c024002402003450d00200241286a41086a2105200241316a2106200241326a2107200241336a21084100210903400240024020012802002204280204220a450d002004280200220b2d0000210c2004200a417f6a220d3602042004200b41016a3602002002200c3a002c200d450d002004280200220b2d0000210c2004200a417e6a220d3602042004200b41016a3602002002200c3a002d200d450d002004280200220b2d0000210c2004200a417d6a220d3602042004200b41016a3602002002200c3a002e200d450d002004280200220b2d0000210c2004200a417c6a220d3602042004200b41016a3602002002200c3a002f200d450d002004280200220b2d0000210c2004200a417b6a220d3602042004200b41016a3602002005200c3a0000200d450d002004280200220b2d0000210c2004200a417a6a220d3602042004200b41016a3602002006200c3a0000200d450d002004280200220b2d0000210c2004200a41796a220d3602042004200b41016a3602002007200c3a0000200d450d0020082004280200220b2d00003a00002004200a41786a3602042004200b41016a360200200229022c210e200241086a200110bb0120022802080d002004280204220b200228020c220a490d00200a417f4c0d0702400240200a0d004101210c0c010b200a1038220c450d09200c4100200a10c50a1a2004280204210b0b200b200a4f0d01200c10390b200241286a41086a200241186a41086a28020036020020022002290318370328200241286a10d105410121040c030b200c2004280200220d200a10c30a210f2004200b200a6b3602042004200d200a6a3602002002200e37032802400240200228021c220d450d00200228021821100c010b41e4011038220d450d0741002110200d4100360200200d41003b018a012002200d36021c200241003602180b200941016a2109200aad22114220862011842111024002400340200d2f018a01221241037421134100210b417f210a4100210402400340024020132004470d002012210a0c020b200241286a200d20046a418c016a410810c60a220c450d03200a41016a210a200b410c6a210b200441086a2104200c417f4a0d000b0b02402010450d002010417f6a2110200d200a4102746a41e4016a280200210d0c010b0b2002200e3703382002200a3602302002200d36022c200241003602282002200241186a360234200220113702442002200f360240200241286a200241c0006a10a7040c010b200d200b6a220441086a220a280200210b200a2011370200200441046a220a2802002104200a200f3602002004450d00200b450d00200410390b20092003470d000b0b20002002290318220e370204200241286a41086a200241186a41086a28020022043602002000410c6a20043602002002200e370328410021040b2000200436020020012001280204417f6a3602040c010b200041013602000b200241d0006a24000f0b1034000b1030000b9a0303067f017e017f200028020421012000410036020402402001450d00024020002802002202450d00034020012802e40121012002417f6a22020d000b0b024020002802082203450d004100210003400240024002400240200020012f018a01490d0041002100034041002102024020012802002204450d00200041016a210520012f0188012106200421020b024041940241e40120001b450d00200110390b024020020d00410021010c050b2005210020022101200620022f018a014f0d000b20022006410c6c6a41046a2104024020050d00200221010c020b200641027420026a41e8016a280200210102402005417f6a2200450d00034020012802e40121012000417f6a22000d000b0b410021000c020b20012000410c6c6a41046a210420002106200121020b200641016a21000b20022006410c6c6a41086a2902002107200428020021080b2008450d022003417f6a210302402007a7450d00200810390b20030d000b0b41002102034020012802002100024041940241e40120021b450d00200110390b2002417f6a21022000210120000d000b0b0bda0901087f230041c0006b2202240002400240024041da0810382203450d0020002003360200200041046a220441da08360200200341003b000041022105200041086a410236020002400240200128020022032903684202520d0041022101024020042802004102470d00200041024101108101200041086a28020021010b200028020020016a41043a0000200041086a2201200128020041016a3602000c010b200341e8006a2101024020042802004102470d00200041024101108101200041086a28020021050b200028020020056a4184013a0000200041086a2204200428020041016a36020020032000108202200341246a200010ba0420012000108f040b20034198016a200010de03200041086a2802002103410410382201450d00200242043702042002200136020002400240024002402003417e6a220441c000490d00200441808001490d012004418080808004490d02200141033a0000410121032002410136020802402002280204417f6a41034b0d0020024101410410810120022802002101200228020821030b200120036a2004360000200341046a21030c030b200120044102743a0000410121030c020b41022103200120044102744101723b00000c010b20012004410274410272360000410421030b20022003360208200041086a2204280200220541014d0d01200220003602202004410036020020022001360224200241286a200120036a360200200241023602102002411c6a2000280200220641026a220436020020022005417e6a220736021420022004360218200241246a21080240024020070d002000200810c3030c010b2003450d00200620012d00003a00002000200028020841016a3602082002200141016a36022420034101460d00200620012d00013a00012000200028020841016a3602082002200141026a220436022402402003417e6a2206450d000240200041046a28020020056b20064f0d002000200520061081010b2000280200220520036a200541026a200710c40a1a20022003360210200028020822072003460d00200028020020076a2105200241246a2106034020034102460d02200520042d00003a00002006200441016a22043602002000200028020841016a360208200541016a210520072003417f6a2203470d000b2003417e6a21060b2006417f4c0d030240024020060d00410121000c010b200610382200450d020b200241003602382002200636023420022000360230200241306a200810c3032002280234210620022802302108024020022802382200450d0002402002280220220541046a28020020022802142207200228021022036a22046b20004f0d002005200420001081010b20052802002209200320006a22046a200920036a200710c40a1a20022004360210200528020822092004460d00200920036b2107200528020020096a21032008210403402000450d01200320042d00003a00002005200528020841016a360208200441016a2104200341016a210320072000417f6a2200470d000b0b2006450d00200810390b024020022802142200450d000240200228021022052002280220220741086a22042802002203460d002007280200220720036a200720056a200010c40a1a0b2004200320006a3602000b02402002280204450d00200110390b200241c0006a24000f0b1030000b41022005418898c1001055000b1034000bfa0103027f017e017f230041206b220424000240024020020d004100210241002105410021030c010b2001ad4220862106200221050240034020022f01ae2b2107024020010d002001450d030c020b2001450d0120064280808080707c21062001417f6a2101200220074102746a41b02b6a280200210220052802b02b21050c000b0b200441146a410136020020044201370204200441bcfaca003602002004410436021c200441b4faca003602182004200441186a360210200441c4faca001043000b20002003360218200020063702082000200536020420002001360200200041146a2007360200200041106a2002360200200441206a24000bf80101037f230041206b220424000240024002402002450d00200221050240034020022f01a6292106024020010d002001450d020c050b2001450d042001417f6a2101200220064102746a41a8296a280200210220052802a82921050c000b0b2000200136020c200041003602082000200536020420002001360200200041146a2006360200200041106a20023602000c010b4100210320004100360204200041106a41003602000b20002003360218200441206a24000f0b200441146a410136020020044201370204200441bcfaca003602002004410436021c200441b4faca003602182004200441186a360210200441c4faca001043000b130020004108360204200041c0b4c3003602000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a36021020004188bac3001043000b13002000410536020420004194bfc3003602000b3400200041ccfec30036020420004100360200200041146a4101360200200041106a41d4d6c300360200200041086a42073702000b1300200041013602042000419cd8c3003602000b3801017f02404110103822020d001030000b2002420037000820024280a094a58d1d370000200020023602002000429080808080023702040bb80301027f230041c0076b22022400200241086a420037030020024106360200200241e40036028404200241013a008004200242013703f8030240024002402002200010dc05450d00200241f8036a200110dd052103200241f8036a10af01200210ac012003450d010c020b200241f8036a10af01200210ac010b200241086a420037030020024106360200200241ee0036028404200241013a008004200242013703f803024002402002200010dc05450d00200241f8036a200110dd052103200241f8036a10af01200210ac0120030d020c010b200241f8036a10af01200210ac010b200241086a420037030020024106360200200241f80036028404200241013a008004200242013703f803024002402002200010dc05450d00200241f8036a200110dd052103200241f8036a10af01200210ac0120030d020c010b200241f8036a10af01200210ac010b200241086a420037030020024106360200200241e90736028404200241013a008004200242013703f8034100210302402002200010dc05450d00200241f8036a200110dd0521030b200241f8036a10af01200210ac01200241c0076a240020030f0b200241c0076a240041010b820602027f027e0240024020012802002202417f6a4107490d004101210302400240024020020e0b0402020202020202000201020b200141106a290300200141186a2903008450450d0141010f0b200141d0036a290300200141d8036a2903008450450d0041010f0b4101210302400240024002400240024002400240024002402000280200417f6a0e0b0b020305070406000901080a0b20024108470d09200041106a2903002204200041186a2903002205844200510d092001410c6a28020022032000410c6a280200470d0920012802042000280204200310c60a0d0941012103200141106a29030020045a200141186a290300220420055a20042005511b450d090c0a0b2002410a470d08200041d0036a290300200041d8036a290300844200510d08200141086a200041086a10dd05450d0841012103200141d0036a29030020002903d0035a200141d8036a2903002205200041d8036a29030022045a20052004511b450d080c090b2002410a4b0d0741002103410120027441d60a71450d0841010f0b2002410b4b0d0641002103410120027441aa1571450d0741010f0b41002103024002402002417e6a0e09000808080108080801080b41010f0b200141086a200041086a10dd050f0b41002103024002402002417e6a0e0700070107070701070b41010f0b410021032001410c6a2802002000410c6a2802002202470d0520012802042000280204200210c60a450f0b41002103024002402002417d6a0e09000606060106060601060b41010f0b200141086a200041086a10dd050f0b41002103024002402002417d6a0e0700050105050501050b41010f0b410021032001410c6a2802002000410c6a2802002202470d0320012802042000280204200210c60a450f0b2002410b470d01200141086a200041086a10dd05450d0141012103200141d0036a200041d0036a10b50a450d010c020b20024109470d002001410c6a28020022032000410c6a280200470d0020012802042000280204200310c60a0d0041012103200141106a200041106a10b50a0d010b410021030b20030bcf0501027f02400240200028020022022001280200470d0041012103024002400240024002400240024002402002417f6a0e080001020304050607090b200041086a200141086a10ee040f0b41002103200041086a200141086a10ee04450d07200041c0006a200141c0006a10ee040f0b200041086a200141086a10ee04450d0541002103200041c0006a200141c0006a10ee04450d06200041f8006a200141f8006a10ee040f0b200041086a200141086a10ee04450d04200041c0006a200141c0006a10ee04450d0441002103200041f8006a200141f8006a10ee04450d05200041b0016a200141b0016a10ee040f0b200041086a200141086a10ee04450d03200041c0006a200141c0006a10ee04450d03200041f8006a200141f8006a10ee04450d0341002103200041b0016a200141b0016a10ee04450d04200041e8016a200141e8016a10ee040f0b200041086a200141086a10ee04450d02200041c0006a200141c0006a10ee04450d02200041f8006a200141f8006a10ee04450d02200041b0016a200141b0016a10ee04450d0241002103200041e8016a200141e8016a10ee04450d03200041a0026a200141a0026a10ee040f0b200041086a200141086a10ee04450d01200041c0006a200141c0006a10ee04450d01200041f8006a200141f8006a10ee04450d01200041b0016a200141b0016a10ee04450d01200041e8016a200141e8016a10ee04450d0141002103200041a0026a200141a0026a10ee04450d02200041d8026a200141d8026a10ee040f0b200041086a200141086a10ee04450d00200041c0006a200141c0006a10ee04450d00200041f8006a200141f8006a10ee04450d00200041b0016a200141b0016a10ee04450d00200041e8016a200141e8016a10ee04450d00200041a0026a200141a0026a10ee04450d0041002103200041d8026a200141d8026a10ee04450d0120004190036a20014190036a10ee040f0b410021030b20030bde0101057f02400240200141246a28020020024b0d00410021010c010b200128021c20024105746a2103410021020240200141146a2802002204450d00200128021021050340200441b8016a210220042f01b60121064100210102400240034020062001460d0120032002412010c60a2207450d02200141016a2101200241206a21022007417f4a0d000b2001417f6a21060b024020050d00410021020c030b2005417f6a2105200420064102746a4198046a28020021040c010b0b200420014104746a21020b2003410020021b21010b20002002360204200020013602000b990701067f230041106b22022400024002400240024020002802004101470d002000410c6a280200220341046a2204417f4c0d0220002802042105024002400240024002402004450d00200410382200450d08200241003602082002200436020420022000360200200341c000490d02200341808001490d034100210420034180808080044f0d0120002003410274410272360000410421000c040b20024100360208200220043602042002410136020020024100410110810120022802002100200228020821040b200020046a41033a00002002200441016a22003602080240200228020420006b41034b0d00200220004104108101200228020821000b200228020020006a2003360000200041046a21000c020b200020034102743a0000410121000c010b20034102744101722106410021070240200441014b0d0020024100410210810120022802002100200228020821070b200020076a20063b0000200741026a21000b200220003602080240200228020420006b20034f0d00200220002003108101200228020821000b2002280200220420006a2005200310c30a1a200020036a21000c010b200041086a280200220341046a2204417f4c0d0120002802042105024002400240024002402004450d00200410382200450d07200241003602082002200436020420022000360200200341c000490d02200341808001490d034100210420034180808080044f0d0120002003410274410272360000410421000c040b20024100360208200220043602042002410136020020024100410110810120022802002100200228020821040b200020046a41033a00002002200441016a22003602080240200228020420006b41034b0d00200220004104108101200228020821000b200228020020006a2003360000200041046a21000c020b200020034102743a0000410121000c010b20034102744101722106410021070240200441014b0d0020024100410210810120022802002100200228020821070b200020076a20063b0000200741026a21000b200220003602080240200228020420006b20034f0d00200220002003108101200228020821000b2002280200220420006a2005200310c30a1a200020036a21000b0240200141046a280200200141086a220528020022036b20004f0d00200120032000108101200528020021030b200128020020036a2004200010c30a1a2005200320006a36020002402002280204450d00200410390b200241106a24000f0b1034000b1030000b850301077f230041106b22022400200241086a200110bb01024002400240024002402002280208450d00200041003602000c010b0240200228020c2203418080808002490d00200041003602000c010b02400240200341086a22042003490d0002402001280200220528020422062004417f6a22044103762201490d000240024020010d00410121070c010b200110382207450d0520074100200110c50a1a200528020421060b200620014f0d02200710390b200041003602000c020b200041003602000c010b200720052802002208200110c30a21072005200620016b3602042005200820016a36020002400240200441ffffffff014b0d00200720044103756a2205450d04200520074f0d010b02402001450d00200710390b200041003602000c010b200441f8ffffff017122042003490d032000200736020020002001ad42208620034103742001410674200420034b1bad843702040b200241106a24000f0b1030000b41cc94c100412f41fc94c1001065000b41f2dac300412f41a4dbc3001035000bcd3608037f017e157f017e177f017e0c7f017e230041f00f6b22022400200241286a200110ad010240024002400240024002400240024002400240024020022802280d00200228022c2203200128020441d0006e2204200420034b1bad42d0007e2205422088a70d032005a72204417f4c0d030240024020040d00410421060c010b200410382206450d030b41002107200241003602e00a200220063602d80a2002200441d0006e22083602dc0a024002400240024020030d00410021070c010b200241800d6a4104722109200241b70d6a210a200241b00d6a210b200241a90d6a210c200241a20d6a210d2002419b0d6a210e200241940d6a210f2002418d0d6a2110410021080340200241800d6a200110b10520022802800d2211450d0320022902840d2105200128020422124104490d02200841016a210820012802002204280000211320012012417c6a3602042001200441046a360200200441056a2104417b2114200921150340201220146a2216417f460d032004417f6a2d000021172001201636020420012004360200201520173a0000200441016a2104201541016a21152014417f6a221441bb7f470d000b20022f01840d20022d00860d41107472211420022f00b50d200a2d000041107472211520022f01ae0d200b2d000041107472211620022f00a70d200c2d000041107472211720022f01a00d200d2d000041107472211220022f00990d200e2d000041107472211820022f01920d200f2d000041107472211920022f008b0d20102d000041107472211a20022902bc0d211b20022802b80d211c20022800b10d211d20022801aa0d211e20022800a30d211f200228029c0d212020022800950d2121200228018e0d212220022800870d21230240200720022802dc0a470d00200241d80a6a200710b80520022802d80a210620022802e00a21070b2006200741d0006c6a220420153b0041200420163b003a200420173b0033200420123b002c200420183b0025200420193b001e2004201a3b0017200420143b01102004201b3700482004201c3600442004201d36003d2004201e3600362004201f36002f20042020360028200420213600212004202236001a200420233600132004201336020c2004200537020420042011360200200441c3006a20154110763a00002004413c6a20164110763a0000200441356a20174110763a00002004412e6a20124110763a0000200441276a20184110763a0000200441206a20194110763a0000200441196a201a4110763a0000200441126a20144110763a0000200220022802e00a41016a22073602e00a20082003470d000b20022802dc0a210820022802d80a21060b2006450d02200241206a200110ad012002280220450d030c0a0b2005428080808010540d00201110390b20022802d80a211702402007450d00200741d0006c2114201721040340200428020021010240200441086a22152802002216450d00200110390b2004200136020020152016360200200441d0006a2104201441b07f6a22140d000b0b20022802dc0a2204450d00200441d0006c450d00201710390b200041003602000c090b20022802242209200128020441f4026e2204200420094b1bad42f4027e2205422088a70d012005a72204417f4c0d010240024020040d00410421030c010b200410382203450d010b4100210a200241003602a801200220033602a0012002200441f4026e22183602a401024002402009450d00200241800d6a4104722112200241d80a6a41086a211c200241bd0d6a211d200241a80f6a4104722123200241a30d6a211e200241ae0d6a211f200241b50d6a2120200241b00d6a2124200241a90d6a2125200241a20d6a21262002419b0d6a2127200241940d6a21282002418d0d6a21290340200241800d6a200110b0050240024020022802800d4101460d00200241d80a6a201241a40210c30a1a200241800d6a200110c30520022802800d220f450d00201e2d0000212a201f2d0000212b20202d0000212c20022f01b60d212d20022800af0d212e20022802a80d211020022802a40d210e20022d00a00d212f20022802980d211920022903900d2105200228028c0d210d20022902840d211b20022f00a10d213020022f01ac0d213120022f00b30d2132200228029c0d210b200241a0086a200241d80a6a41a40210c30a1a200241186a200110ad01024020022802180d00200228021c2218200128020441c1006e2204200420184b1bad42c1007e2233422088a70d072033a72204417f4c0d070240024020040d00410121130c010b200410382213450d070b41002114200241003602b00f200220133602a80f2002200441c1006e3602ac0f024002402018450d004100211a4100210c034020012802042216450d02200128020022172d0000210420012016417f6a22033602042001201741016a3602000240024002402004417f6a0e020001050b41002104417e2114034020032004460d05201720046a221541016a2d000021112001201620146a3602042001201541026a360200201220046a20113a00002002200441016a22153602800d2014417f6a211420152104201541c000470d000b20242d0000210420252d0000211120262d0000210320272d0000211720282d0000211620292d0000211520022800b10d213420022801aa0d213520022800a30d2136200228029c0d213720022800950d2138200228018e0d213920022800870d213a20022f01ae0d212120022f00a70d212220022f01a00d213b20022f00990d213c20022f01920d213d20022f008b0d213e20022f01840d211420022d00860d213f20022900b50d2133201c201d280000360000201c41036a201d41036a280000360000200220333703d80a2014203f411074722114203e2015411074722115203d2016411074722116203c2017411074722117203b2003411074722103202220114110747221112021200441107472212120022900df0a21404100213b0c010b41002104417e2114034020032004460d04201720046a221541016a2d000021112001201620146a3602042001201541026a360200201220046a20113a00002002200441016a22153602800d2014417f6a211420152104201541c000470d000b20242d0000210420252d0000211120262d0000210320272d0000211720282d0000211620292d0000211520022800b10d213420022801aa0d213520022800a30d2136200228029c0d213720022800950d2138200228018e0d213920022800870d213a20022f01ae0d212120022f00a70d212220022f01a00d213b20022f00990d213c20022f01920d213d20022f008b0d213e20022f01840d211420022d00860d213f20022900b50d2133201c201d280000360000201c41036a201d41036a280000360000200220333703d80a2014203f411074722114203e2015411074722115203d2016411074722116203c2017411074722117203b2003411074722103202220114110747221112021200441107472212120022900df0a21404101213b0b200c41016a210c2033421888a7213c2033a721220240201a20022802ac0f470d00200241a80f6a201a10e20520022802a80f211320022802b00f211a0b2013201a41c1006c6a220420223b0032200420213b002b200420113b0024200420033b001d200420173b0016200420163b000f200420153b0008200420143b0001200420403700392004203c3600352004203436002e200420353600272004203636002020042037360019200420383600122004203936000b2004203a3600042004203b3a0000200441346a20224110763a00002004412d6a20214110763a0000200441266a20114110763a00002004411f6a20034110763a0000200441186a20174110763a0000200441116a20164110763a00002004410a6a20154110763a0000200441036a20144110763a0000200220022802b00f41016a221a3602b00f200c2018470d000b201a410876211420022802a80f21130b200241d00a6a41046a2204202341046a2d00003a0000200220232802003602d00a2013450d01200241c80a6a41046a20042d00003a0000200220022802d00a3602c80a200241800d6a200110b10520022802800d220c0d0320022802c80a2204450d01200441c1006c450d01201310390c010b20022802ac0f2204450d00200441c1006c450d0020022802a80f10390b201ba721140240201b422088a72204450d002004410c6c2101200f210403400240200441046a280200450d00200428020010390b2004410c6a2104200141746a22010d000b0b02402014450d002014410c6c450d00200f10390b02402005422088a72204450d0020044104742101200d41086a2104034002402004280200450d002004417c6a28020010390b200441106a2104200141706a22010d000b0b0240200542ffffffff0083500d00200d10390b02402019450d00200b450d00201910390b2010450d00200e10390b20022802a0012114024020022802a8012204450d00200441f4026c21012014210403402004109f03200441f4026a21042001418c7d6a22010d000b0b20022802a4012204450d0a200441f4026c450d0a201410390c0a0b200a41016a210a2032202c4110747221162031202b41107472211720022902840d2133200241f8056a200241a0086a41a40210c30a1a20022800c90a212120022d00c80a2104200241d4036a200241f8056a41a40210c30a1a200241b0016a200241d4036a41a40210c30a1a200e4118742030202a4110747241ffffff0771722122200b411074201941107672212a20194108742005423888a772211120044110742013411076722118200e4108762119202f411074200b41107672211a2013411074202d72210b2005421888a7210e2005a72113024020022802a801221520022802a401470d00200241a0016a201510e30520022802a80121150b20022802a0012203201541f4026c6a200241b0016a41a40210c30a220441e7026a20144110763a0000200441e5026a20143b0000200441e0026a20184110763a0000200441de026a20183b0000200441d9026a20164110763a0000200441d7026a20163b0000200441d2026a20174110763a0000200441d0026a20173b0000200441cb026a20194110763a0000200441c9026a20193b0000200441c4026a201a4110763a0000200441c2026a201a3b0000200441bd026a20114110763a0000200441bb026a20113b0000200441b6026a20134110763a0000200441b4026a20133b0100200441ec026a2033370000200441e8026a200c360000200441e1026a2021360000200441da026a200b360000200441d3026a202e360000200441cc026a2010360000200441c5026a2022360000200441be026a202a360000200441b7026a200e360000200441b0026a200d360200200441a8026a201b3702002004200f3602a4022002201541016a22213602a801200a2009470d000b20022802a40121180c010b2003450d07410021210b200241106a200110ad0120022802100d042002280214221a200128020441306e22042004201a4b1bad42307e2205422088a70d012005a72204417f4c0d010240024020040d00410421150c010b200410382215450d010b200241003602a808200220153602a0082002200441306e22173602a408201a450d02200241800d6a4104722112200241b50d6a2126200241ae0d6a2127200241800d6a41276a2128200241800d6a41206a2129200241800d6a41196a210a200241800d6a41126a210b2002418b0d6a210c4100211102400340201141016a21112001280204211641002104417f211402400240034020162004460d01200128020022172d000021152001201620146a3602042001201741016a360200201220046a20153a00002002200441016a22153602800d2014417f6a21142015210420154120470d000b200241e00f6a41026a2223200c41026a221e2d00003a0000200241dc0f6a41026a222a200b41026a221f2d00003a0000200220122f01003b01e40f2002200c2f00003b01e00f2002200b2f00003b01dc0f2002201241026a22202d00003a00e60f20022802a00d212b200228029c0d212c20022800950d212d200228018e0d212e20022800870d212f200241d80f6a41026a2230200a41026a22222d00003a00002002200a2f00003b01d80f201620156b22044104490d00201728000121242001201741056a36020020012004417c6a360204200241086a200110ad0120022802080d00200228020c2231200128020441c8006e2204200420314b1bad42c8007e221b422088a70d05201ba72204417f4c0d050240024020040d00410421160c010b200410382216450d050b200241003602e00a200220163602d80a2002200441c8006e3602dc0a024002402031450d00410021320240034020012802042204450d01200128020022092d0000211420012004417f6a22153602042001200941016a36020002400240024020140e020001040b2015450d0320092d0001211420012004417e6a22133602042001200941026a22043602004100212502400240024020140e0404000102060b410121250c030b410221250c020b410321250c010b2015450d0220092d0001211420012004417e6a22133602042001200941026a22043602004104212520140d020b20134104490d01203241016a21322004280000213420012013417c6a22193602042001200941066a36020041002104200241003602800d417b2114034020192004460d02200920046a221541066a2d000021172001201320146a3602042001201541076a360200201220046a20173a00002002200441016a22153602800d2014417f6a211420152104201541c000470d000b200241d4036a41026a2215201e2d00003a0000200220122f01003b01f8052002200c2f00003b01d403200220202d00003a00fa0520022902bc0d211b20022802b80d211720022800b10d210920022801aa0d211320022800a30d2119200228029c0d213520022800950d2136200228018e0d213720022800870d2138200241b0016a41026a2239201f2d00003a0000200241a80f6a41026a223a20222d00003a0000200241a0016a41026a223b202941026a2d00003a0000200241d00a6a41026a223c202841026a2d00003a0000200241c80a6a41026a223d202741026a2d00003a00002002200b2f00003b01b0012002200a2f00003b01a80f200220292f00003b01a001200220282f00003b01d00a200220272f00003b01c80a200241ec0f6a41026a223e202641026a2d00003a0000200220262f00003b01ec0f024020022802e00a221420022802dc0a470d00200241d80a6a201410e40520022802e00a21140b20022802d80a2216201441c8006c6a220420253a000420042034360200200420022f01f8053b0005200441076a20022d00fa053a0000200441086a20383600002004410c6a20022f01d4033b00002004410e6a20152d00003a00002004410f6a2037360000200441136a20022f01b0013b0000200441156a20392d00003a0000200441166a20363600002004411d6a2035360000200441246a20193600002004412b6a20133600002004411c6a203a2d00003a00002004411a6a20022f01a80f3b0000200441216a20022f01a0013b0000200441236a203b2d00003a0000200441286a20022f01d00a3b00002004412a6a203c2d00003a00002004412f6a20022f01c80a3b0000200441316a203d2d00003a0000200441326a20093600002004413d6a201b370000200441396a2017360000200441386a203e2d00003a0000200441366a20022f01ec0f3b0000200441c5006a20022f01e80f3b0000200441c7006a20022d00ea0f3a00002002201441016a3602e00a20322031470d000c030b0b20022802dc0a2204450d02200441c8006c450d02201610390c020b2016450d010b20022902dc0a2105200241d80a6a41026a20232d00003a0000200241f8056a41026a202a2d00003a0000200241d4036a41026a20302d00003a0000200220022d00e60f3a00820d200220022f01e40f3b01800d200220022f01e00f3b01d80a200220022f01dc0f3b01f805200220022f01d80f3b01d4032024210d202f210e202e210f202d2110202c211c202b211d0c010b410021160b200241d00f6a41026a2204200241d80a6a41026a2d00003a0000200241cc0f6a41026a2214200241f8056a41026a2d00003a0000200241c80f6a41026a2215200241d4036a41026a2d00003a0000200220022d00820d3a00d60f200220022f01800d3b01d40f200220022f01d80a3b01d00f200220022f01f8053b01cc0f200220022f01d4033b01c80f2016450d01200241c00f6a41026a221720042d00003a0000200241bc0f6a41026a220920142d00003a0000200241b80f6a41026a221320152d00003a0000200220022d00d60f3a00c60f200220022f01d40f3b01c40f200220022f01d00f3b01c00f200220022f01cc0f3b01bc0f200220022f01c80f3b01b80f024020022802a808221420022802a408470d00200241a0086a201410aa0420022802a80821140b20022802a0082215201441306c6a220420163602042004200d360200200441086a2005370200200441106a20022f01c40f3b0100200441126a20022d00c60f3a0000200441136a200e360000200441176a20022f01c00f3b0000200441196a20172d00003a00002004411a6a200f3600002004411e6a20022f01bc0f3b0000200441206a20092d00003a0000200441216a2010360000200441286a201c3600002004412c6a201d360000200441256a20022f01b80f3b0000200441276a20132d00003a00002002201441016a22143602a8082011201a470d000b20022802a40821170c040b20022802a0082115024020022802a8082204450d00200441306c2101201541086a21040340024020042802002214450d00201441c8006c450d002004417c6a28020010390b200441306a2104200141506a22010d000b0b20022802a4082204450d04200441306c450d04201510390c040b1030000b1034000b2015450d01410021140b200241800d6a200110b003024020022802840d450d00200241306a200241800d6a41f00010c30a1a200041206a20143602002000411c6a2017360200200041186a2015360200200041146a2021360200200041106a20183602002000410c6a2003360200200041086a20073602002000200836020420002006360200200041246a200241306a41f00010c30a1a0c050b410021042000410036020002402014450d00201441306c211603400240201520046a221441086a2802002201450d00200141c8006c450d00201441046a28020010390b2016200441306a2204470d000b0b2017450d01201741306c450d01201510390c010b200041003602000b02402021450d00202141f4026c2101410021040340200320046a109f032001200441f4026a2204470d000b0b2018450d01201841f4026c450d01200310390c010b200041003602000b02402007450d00200741d0006c2114200621040340200428020021010240200441086a22152802002216450d00200110390b2004200136020020152016360200200441d0006a2104201441b07f6a22140d000b0b2008450d00200841d0006c450d00200610390b200241f00f6a24000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42c1007e2205a721032005422088a74521040240024020010d00200241003602100c010b200241186a41013602002002200141c1006c360214200220002802003602100b200220032004200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141c1006e360200200241206a24000f0b1034000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42f4027e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141f4026c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141f4026e360200200241206a24000f0b1034000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42c8007e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141c8006c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141c8006e360200200241206a24000f0b1034000bb50b030c7f017e037f230041306b22022400200241206a200110bc0302400240024002400240024002400240024020022802202203450d00200241286a280200210420022802242105200241186a200110bb0120022802180d064104210602400240200228021c2207200128020022082802044104762209200920074b1b2209410474220a417f4c0d0002402009450d00200a10382206450d020b2001200128020441016a220b3602044100210a2002410036022820022009360224200220063602200240200b20012802084d0d00200228022021090c080b02402007450d004100210a034002400240200828020422094104490d002008280200220b280000210c20082009417c6a3602042008200b41046a360200200241106a200110bb0120022802100d002008280204220b20022802142209490d002009417f4c0d040240024020090d004101210d0c010b20091038220d450d06200d4100200910c50a1a2008280204210b0b200b20094f0d01200d10390b20022802202109200a450d0a200a4104742101200941086a2108034002402008280200450d002008417c6a28020010390b200841106a2108200141706a2201450d0b0c000b0b2009ad220e422086200e84210e200d2008280200220f200910c30a210d2008200b20096b3602042008200f20096a3602000240200a2002280224470d00200241206a200a10a404200228022021062002280228210a0b2006200a4104746a2209200d3602042009200c360200200941086a200e3702002002200228022841016a220a3602282007417f6a22070d000b2001280204210b20022802242109200228022021060b2001200b417f6a3602042006450d0802400240024020012802002208280204220b450d00200828020022072d0000210d2008200b417f6a3602042008200741016a3602004100210b0240200d0e020300010b200241086a200110bb0120022802080d002008280204220d200228020c2207490d002007417f4c0d030240024020070d004101210b0c010b20071038220b450d05200b4100200710c50a1a2008280204210d0b200d20074f0d01200b10390b200041003602000c080b200b2008280200220c200710c30a1a2008200d20076b3602042008200c20076a3602002007ad220e422086200e84210e0b2002200110bb01200ea721010240024020022802000d002008280204220d20022802042207490d002007417f4c0d020240024020070d004101210c0c010b20071038220c450d04200c4100200710c50a1a2008280204210d0b200d20074f0d01200c10390b200041003602000c060b200c2008280200220f200710c30a21102008200d20076b220d3602042008200f20076a220c360200200d4104490d03200c28000021112008200d417c6a220f3602042008200c41046a3602000240200f4104490d002000200536020420002003360200200c28000421052008200d41786a3602042008200c41086a360200200041346a2005360200200041306a20113602002000412c6a2007360200200041286a2007360200200041246a2010360200200041206a200e422088a73602002000411c6a2001360200200041186a200b360200200041146a200a360200200041106a20093602002000410c6a2006360200200041086a20043602000c0b0b200041003602000c040b1034000b1030000b200041003602000c070b200041003602000b2007450d00201010390b200b450d002001450d00200b10390b0240200a450d00200a4104742101200641086a2108034002402008280200450d002008417c6a28020010390b200841106a2108200141706a22010d000b0b200941ffffffff0071450d02200610390c020b200228022441ffffffff0071450d00200910390b200041003602000b02402004450d002004410c6c21012003210803400240200841046a280200450d00200828020010390b2008410c6a2108200141746a22010d000b0b2005450d002005410c6c450d00200310390b200241306a24000bed1001087f200028020021020240200141046a280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20023600002003200441046a3602000240412010382204450d0020042000290004370000200441186a22052000411c6a290000370000200441106a2206200041146a290000370000200441086a22072000410c6a2900003700000240200141046a2208280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a36020020041039200041246a210402402008280200200928020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a360200412010382204450d0020042000290044370000200441186a200041dc006a290000370000200441106a200041d4006a290000370000200441086a200041cc006a2900003700000240200141046a280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a36020020041039412010382204450d0020042000290064370000200441186a200041fc006a290000370000200441106a200041f4006a290000370000200441086a200041ec006a2900003700000240200141046a280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2203200241206a36020020041039412010382204450d002004200029008401370000200441186a2000419c016a290000370000200441106a20004194016a290000370000200441086a2000418c016a2900003700000240200141046a2205280200200328020022026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200141086a2209200241206a36020020041039200041a4016a210402402005280200200928020022026b413f4b0d002001200241c000108101200928020021020b200128020020026a22032004290000370000200341386a200441386a290000370000200341306a200441306a290000370000200341286a200441286a290000370000200341206a200441206a290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002009200241c0006a360200412010382204450d00200420002900e401370000200441186a2205200041fc016a290000370000200441106a2206200041f4016a290000370000200441086a2207200041ec016a2900003700000240200141046a280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a36020020041039412010382204450d002004200029008402370000200441186a22052000419c026a290000370000200441106a220620004194026a290000370000200441086a22072000418c026a2900003700000240200141046a280200200141086a220928020022026b411f4b0d00200120024120108101200928020021020b200128020020026a22032004290000370000200341186a2005290000370000200341106a2006290000370000200341086a20072900003700002009200241206a3602002004103920002802a40221042001200041ac026a280200220310d20102402003450d0020042003410c6c6a210303402004280200200441086a280200200110d6012004410c6a22042003470d000b0b200041b0026a28020021042001200041b8026a280200220310d20102402003450d00200420034104746a2105200141086a2102200141046a210603402004280200210902402006280200200228020022036b41034b0d00200120034104108101200228020021030b200128020020036a20093600002002200341046a360200200441046a2802002004410c6a280200200110d601200441106a22042005470d000b0b200141046a2802002103200141086a280200210402400240200041bc026a28020022020d00024020032004470d00200120044101108101200141086a28020021040b200128020020046a41003a0000200141086a200441016a3602000c010b024020032004470d00200120044101108101200141086a28020021040b200128020020046a41013a0000200141086a200441016a3602002002200041c4026a280200200110d6010b200041c8026a280200200041d0026a280200200110d601200041d4026a28020021020240200141046a2209280200200141086a220328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20023600002003200441046a2204360200200041d8026a28020021030240200928020020046b41034b0d00200120044104108101200141086a28020021040b200128020020046a2003360000200141086a200441046a3602000f0b1030000b130020004106360204200041dcdcc3003602000bb80801167f230041f0006b22022400200241186a41f2e5c300410f10f201200241d8006a41a4e9c300410810f2010240024002400240410410382203450d0020032001360000412410382201450d002001200229001837000020012002290058370010200141086a200241186a41086a290000370000200141186a200241d8006a41086a2900003700002001200328000036002020022001360208200242a4808080c00437020c200310392002412436022c20022001360228200241306a2001412410e4020240200228023022040d00410021050c040b200228023421062002200241306a41086a28020036024420022004360240200241d8006a200241c0006a10bb03024020022802582205450d00200241e0006a22072802002103200228025c2108200241d8006a200241c0006a10bb03024020022802582209450d002007280200210a200228025c210b200241d8006a200241c0006a10bb0302402002280258220c450d00200241e0006a2207280200210d200228025c210e200241d8006a200241c0006a10b50302402002280258220f450d0020072802002107200228025c21100240200228024422114104490d0020022011417c6a221236024420124104490d002002280240221328000021122002201341086a22143602402011417c714108460d002011417c712215410c460d0020154110460d002013280004211620142800002115201328000c211420022011416c6a2211360244201141034b0d060b02402007450d002007410c6c2107200f210303400240200341046a28020041ffffffff0371450d00200328020010390b2003410c6a2103200741746a22070d000b0b2010450d002010410c6c450d00200f10390b200e41ffffff3f71450d00200c10390b200b41ffffff3f71450d00200910390b200841ffffff3f71450d00200510390b2002420037021c410021052002410028029cde4a3602182002410c36024c2002200241286a3602482002200241186a360254200241ec006a41013602002002420137025c200241e4b4c4003602582002200241c8006a360268200241d4006a41fc86ca00200241d8006a103b1a2002280218200228022010e7020240200228021c450d00200228021810390b0c020b1030000b201328001021172002201341186a360240201328001421110b2006450d00200410390b024002402005450d002000200836020420002005360200200041c4006a2011360200200041c0006a20173602002000413c6a2014360200200041386a2015360200200041346a2016360200200041306a20123602002000412c6a2007360200200041286a2010360200200041246a200f360200200041206a200d3602002000411c6a200e360200200041186a200c360200200041146a200a360200200041106a200b3602002000410c6a2009360200200041086a20033602000c010b200041003602000b0240200228020c450d00200110390b200241f0006a24000b3400200041f2e5c30036020420004100360200200041146a4103360200200041106a4184e6c300360200200041086a420f3702000b2701017f230041d0006b22022400200241003602082000200241086a10eb05200241d0006a24000bc80801067f0240410110382202450d0020002002360200200041046a420137020002400240200128020022030d00200241003a0000410121030c010b200241013a0000200041086a220441013602002000200141086a280200220210d20102402002450d002002410574210520042802002102200041046a210603400240200628020020026b411f4b0d00200020024120108101200428020021020b200028020020026a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a2900003700002004200241206a2202360200200341206a2103200541606a22050d000b0b2001410c6a28020021032000200141146a280200220210d20102402002450d0020024105742105200041086a22042802002102200041046a210603400240200628020020026b411f4b0d00200020024120108101200428020021020b200028020020026a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a2900003700002004200241206a2202360200200341206a2103200541606a22050d000b0b200141186a28020021032000200141206a280200220210d20102402002450d0020024105742105200041086a22042802002102200041046a210603400240200628020020026b411f4b0d00200020024120108101200428020021020b200028020020026a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a2900003700002004200241206a2202360200200341206a2103200541606a22050d000b0b200141246a2000109c03200141306a28020021070240200041046a2205280200200041086a220228020022036b41034b0d00200020034104108101200228020021030b200028020020036a20073600002002200341046a2203360200200141346a28020021020240200528020020036b41034b0d00200020034104108101200041086a28020021030b200028020020036a2002360000200041086a2202200341046a2203360200200141386a28020021070240200041046a220528020020036b41034b0d00200020034104108101200228020021030b200028020020036a20073600002002200341046a22033602002001413c6a28020021020240200528020020036b41034b0d00200020034104108101200041086a28020021030b200028020020036a2002360000200041086a2202200341046a2203360200200141c0006a28020021070240200041046a220528020020036b41034b0d00200020034104108101200228020021030b200028020020036a20073600002002200341046a2203360200200141c4006a28020021020240200528020020036b41034b0d00200020034104108101200041086a28020021030b200028020020036a2002360000200341046a21030b200041086a20033602000f0b1030000baa0101027f230041206b22022400200241f2e5c300410f10f201200241106a41a4e9c300410810f2010240410410382203450d0020032001360000412410382201450d002001200229000037000020012002290010370010200141086a200241086a290000370000200141186a200241106a41086a29000037000020002001360200200041046a42a4808080c0043702002001200328000036002020031039200241206a24000f0b1030000bc10903057f027e047f230041d0006b2202240002400240200128020422030d00200041073a00000c010b200128020022042d0000210520012003417f6a22063602042001200441016a3602000240024002400240024002400240024002400240024002400240024020050e0700010203040506070b200041003a00000c0d0b20022001108d0302402002290300a70d00200241106a290300210720022903082108200041013a0000200041086a2008370300200041106a20073703000c0d0b200041073a00000c0c0b0240200110d8012207a74101710d00200041023a0000200020074208883e00010c0c0b200041073a00000c0b0b2006450d0920042d0001210520012003417e6a22093602042001200441026a360200200220053a002c20090d050c090b200241286a200110d701024020022d00284101460d0020002002290029370001200041096a200241286a41096a290000370000200041043a00000c0a0b200041073a00000c090b200241286a410472210a41002105417e2109034020062005460d05200420056a220b41016a2d0000210c2001200320096a3602042001200b41026a360200200a20056a200c3a00002002200541016a220b3602282009417f6a2109200b2105200b4120470d000b200041086a200241286a410b6a2f00003b00002000410a6a200241356a2d00003a00002000410f6a200241286a41126a2f01003b0000200041116a2002413c6a2d00003a0000200041186a200241c3006a2d00003a0000200041166a200241286a41196a2f00003b0000200220022f012c3b0124200220022d002e3a0026200241366a28010021012002413d6a2800002105200241c4006a2902002107200228002f2109200041036a20022d00263a0000200020022f01243b0001200041196a2007370000200041126a20053600002000410b6a2001360000200041046a2009360000200041053a00000c080b200241186a200110ad0120022802180d0120012802042209200228021c2205490d012005417f4c0d040240024020050d004101210b0c010b20051038220b450d06200b4100200510c50a1a0b200b20012802002203200510c30a210b2001200920056b3602042001200320056a360200200041046a200b360000200041063a0000200041086a2005ad22074220862007843700000c070b200041073a00000c060b200041073a00000c050b20042d0002210520012003417d6a22093602042001200441036a360200200220053a002d2009450d0320042d0003210520012003417c6a22093602042001200441046a360200200220053a002e2009450d0320042d0004210520012003417b6a22093602042001200441056a360200200220053a002f2009450d0320042d0005210520012003417a6a22093602042001200441066a360200200241306a20053a00002009450d0320042d000621052001200341796a22093602042001200441076a360200200241316a20053a00002009450d0320042d000721052001200341786a22093602042001200441086a360200200241326a20053a00002009450d03200241336a20042d00083a00002001200341776a3602042001200441096a3602002000200229022c370001200041033a00000c040b200041073a00000c030b1034000b1030000b200041073a00000b200241d0006a24000bb91103067f027e037f230041d0006b22022400024002402001280200220328020422040d00200041073a00000c010b200328020022052d0000210620032004417f6a22073602042003200541016a3602000240024002400240024002400240024002400240024002400240024002400240024020060e0700010203040506070b200041003a00000c100b20022001108f0302402002290300a70d00200241106a290300210820022903082109200041013a0000200041086a2009370300200041106a20083703000c100b200041073a00000c0f0b200242003703282007450d0d20052d0001210120032004417e6a22063602042003200541026a36020020024101360228200220013a002c20060d050c0d0b20070d050c0b0b20070d050c090b200241286a410472210a41002101417e21060340024020072001470d00200041073a00000c0d0b200520016a220b41016a2d0000210c2003200420066a3602042003200b41026a360200200a20016a200c3a00002002200141016a220b3602282006417f6a2106200b2101200b4120470d000b200041086a200241286a410b6a2f00003b00002000410a6a200241356a2d00003a00002000410f6a200241286a41126a2f01003b0000200041116a2002413c6a2d00003a0000200041186a200241c3006a2d00003a0000200041166a200241286a41196a2f00003b0000200220022f012c3b0124200220022d002e3a0026200241366a28010021012002413d6a2800002103200241c4006a2902002108200228002f2106200041036a20022d00263a0000200020022f01243b0001200041196a2008370000200041126a20033600002000410b6a2001360000200041046a2006360000200041053a00000c0b0b200241186a200110bb010240024020022802180d0020032802042206200228021c2201490d002001417f4c0d070240024020010d004101210b0c010b20011038220b450d09200b4100200110c50a1a200328020421060b200620014f0d01200b10390b200041073a00000c0b0b200b20032802002204200110c30a210b2003200620016b3602042003200420016a360200200041086a2001ad2208422086200884370000200041046a200b360000200041063a00000c0a0b200041073a00000c090b20052d0002210120032004417d6a22063602042003200541036a36020020024102360228200220013a002d2006450d0720052d0003210120032004417c6a22063602042003200541046a36020020024103360228200220013a002e2006450d0720052d0004210120032004417b6a3602042003200541056a360200200220013a002f2002410436022820022903282208a741044f0d02419fd2ca00411b41bcd2ca001035000b20052d0001210120032004417e6a22063602042003200541026a360200200220013a002c2006450d0520052d0002210120032004417d6a22063602042003200541036a360200200220013a002d2006450d0520052d0003210120032004417c6a22063602042003200541046a360200200220013a002e2006450d0520052d0004210120032004417b6a22063602042003200541056a360200200220013a002f2006450d0520052d0005210120032004417a6a22063602042003200541066a360200200241306a20013a00002006450d0520052d000621012003200441796a22063602042003200541076a360200200241316a20013a00002006450d0520052d000721012003200441786a22063602042003200541086a360200200241326a20013a00002006450d05200241336a20052d00083a00002003200441776a3602042003200541096a3602002000200229022c370001200041033a00000c070b20052d0001210120032004417e6a22063602042003200541026a360200200220013a002c2006450d0320052d0002210120032004417d6a22063602042003200541036a360200200220013a002d2006450d0320052d0003210120032004417c6a22063602042003200541046a360200200220013a002e2006450d0320052d0004210120032004417b6a22063602042003200541056a360200200220013a002f2006450d0320052d0005210120032004417a6a22063602042003200541066a360200200241306a20013a00002006450d0320052d000621012003200441796a22063602042003200541076a360200200241316a20013a00002006450d0320052d000721012003200441786a22063602042003200541086a360200200241326a20013a00002006450d0320052d000821012003200441776a22063602042003200541096a360200200241336a20013a00002006450d0320052d000921012003200441766a220636020420032005410a6a360200200241346a20013a00002006450d0320052d000a21012003200441756a220636020420032005410b6a360200200241356a20013a00002006450d0320052d000b21012003200441746a220636020420032005410c6a360200200241366a20013a00002006450d0320052d000c21012003200441736a220636020420032005410d6a360200200241376a20013a00002006450d0320052d000d21012003200441726a220636020420032005410e6a360200200241386a20013a00002006450d0320052d000e21012003200441716a220636020420032005410f6a360200200241396a20013a00002006450d0320052d000f21012003200441706a22063602042003200541106a3602002002413a6a220b20013a00002006450d0320052d0010210120032004416f6a3602042003200541116a3602002002413b6a20013a0000200241286a410b6a2f00002101200241356a2d00002103200241366a280100210620022f012c210420022d002e2105200228002f210c2000410f6a200b2f01003b00002000410b6a20063600002000410a6a20033a0000200041086a20013b0000200041046a200c360000200041036a20053a0000200020043b0001200041043a00000c060b200041023a0000200020084220883e00010c050b1034000b1030000b200041073a00000c020b200041073a00000c010b200041073a00000b200241d0006a24000b9a0701047f230041106b220224000240024002400240024002400240024020002d00000e0700010203040506070b0240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41003a00002003200041016a3602000c060b200041086a21040240200141046a280200200141086a22032802002200470d00200120004101108101200328020021000b200128020020006a41013a00002003200041016a3602002002200436020c2002410c6a20011092030c050b0240200141046a2205280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41023a00002004200341016a22033602000240200528020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000280001360000200141086a200341046a3602000c040b0240200141046a2205280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41033a00002004200341016a22033602000240200528020020036b41074b0d00200120034108108101200141086a28020021030b200128020020036a2000290001370000200141086a200341086a3602000c030b0240200141046a2205280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41043a00002004200341016a2203360200200041016a21000240200528020020036b410f4b0d00200120034110108101200141086a28020021030b200128020020036a22042000290000370000200441086a200041086a290000370000200141086a200341106a3602000c020b0240200141046a2205280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41053a00002004200341016a2203360200200041016a21000240200528020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200141086a200341206a3602000c010b0240200141046a280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a41063a00002004200341016a36020020002802042000410c6a280200200110d6010b200241106a24000b880101017f230041306b220224002002200028020036020c2002410a3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a4101360200200241246a4101360200200241dcc5c0003602202002410136021c200241ecddca003602182002200241106a36022820012000200241186a103b2101200241306a240020010bc40801077f230041206b22022400200041106a22034100360200200041086a220442013702002002411c6a41026a200141036a2d00003a0000200241086a200141106a290200370300200241106a200141186a290200370300200241186a200141206a280200360200200220012f00013b011c2002200141086a290200370300200141246a2802002105200141046a28020021060240024002400240024020012d00000e03000102030b2004410041011081012000410c6a280200210720002802082204200328020022016a41013a00002003200141016a22013602000240200720016b41034b0d00200041086a20014104108101200041106a2802002101200028020821040b200420016a2005360000200041106a200141046a2203360200412010382201450d0320012002290300370007200120022f011c3b0000200120063600032001411f6a200241186a2d00003a0000200141176a200241106a2903003700002001410f6a200241086a290300370000200141026a2002411c6a41026a2d00003a000002402000410c6a28020020036b411f4b0d00200041086a20034120108101200041106a28020021030b200028020820036a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200041106a200341206a360200200110390c020b200141286a28020021082004410041011081012000410c6a280200210720002802082204200328020022016a41023a00002003200141016a22013602000240200720016b41034b0d00200041086a20014104108101200041106a2802002101200028020821040b200420016a2005360000200041106a200141046a2203360200412010382201450d0220012002290300370007200120022f011c3b0000200120063600032001411f6a200241186a2d00003a0000200141176a200241106a2903003700002001410f6a200241086a290300370000200141026a2002411c6a41026a2d00003a000002402000410c6a220528020020036b411f4b0d00200041086a20034120108101200041106a28020021030b2000280208220620036a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200041106a2204200341206a2203360200200110390240200528020020036b41034b0d00200041086a2003410410810120042802002103200028020821060b200620036a20083600002004200341046a3602000c010b2004410041011081012000410c6a280200210520002802082204200328020022016a41033a00002003200141016a22013602000240200520016b41034b0d00200041086a20014104108101200041106a2802002101200028020821040b200420016a2006360000200041106a200141046a3602000b200041023a0000200041d09eb18a03360001200241206a24000f0b1030000b8e0201027f230041206b220224002002200128021841f4ddca0041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041086a36021c200241086a200241186a4198edc300104b2002411c6a41a8edc300104b1a20022d0010210002400240200228020c22030d00200021010c010b200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d010b2002280208220128021841d3e9c60041012001411c6a28020028020c11000021010b200241206a2400200141ff01714100470b9a0101057f0240200028020422020d0041000f0b2000280200210303402002418c016a210420022f018a0121054100210002400240034020052000460d0120012004410810c60a2206450d02200041016a2100200441086a21042006417f4a0d000b2000417f6a21050b024020030d0041000f0b2003417f6a2103200220054102746a41e4016a28020021020c010b0b20022000410c6c6a41046a0bdc0201087f230041106b22022400200242f4d2b59bc7ae98b83037030802400240024020012802042203450d00200128020021040c010b41e40110382203450d0141002104200341003b018a012003410036020020012003360204200141003602000b02400240034020032f018a012205410374210641002107410021080240034020062007460d01200241086a200320076a418c016a410810c60a2209450d03200741086a2107200841016a21082009417f4a0d000b2008417f6a21050b02402004450d002004417f6a2104200320054102746a41e4016a28020021030c010b0b4100210720004100360204200041146a42f4d2b59bc7ae98b830370200200041106a20013602002000410c6a2005360200200041086a20033602000c010b20002004360204200041106a20013602002000410c6a2008360200200041086a2003360200410121070b20002007360200200241106a24000f0b1030000b841605087f017e047f027e047f230041c0156b22042400200441d0036a200141d00310c30a1a0240024002400240024002400240024002400240024002400240024020002802042205450d00200028020021060c010b41a82910382205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b034020052f01a629220741d0036c21084100210141e0272109417f210a02400340024020082001470d002007210a0c020b200520016a210b200a41016a210a200941106a2109200141d0036a2101200441d0036a200b10ea01220b41ff01714101460d000b0240200b41187441187541016a0e020100010b0240024020042802d0030d00200441d8036a10af010c010b200441d8036a280200450d0020042802d40310390b200520096a22012003370308200120023703000c0d0b02402006450d002006417f6a21062005200a4102746a41a8296a28020021050c010b0b200441d8036a280200210b20042903d003210c2004410c6a200441dc036a41c40310c30a1a02400240024002400240024020052f01a6292201410a4b0d00200441d0036a2004410c6a41c40310c30a1a2005200a41d0036c6a2109200a2001490d012009200c3703002009200b3602082009410c6a200441d0036a41c40310c30a1a200541f0276a21090c020b410521014100210d02400240200a41054f0d0041042101200a21090c010b4105210902400240200a417b6a0e020201000b200a41796a21094101210d410621010c010b410021094101210d0b41a82910382207450d05200741003b01a629200741003602a029200720052f01a62922062001417f736a220a3b01a6292005200141d0036c6a2208280204210e2008280200210f200441d0036a200841086a41c80310c30a1a200a410c4f0d062006200141016a22086b200a470d07200541f0276a221020014104746a220641086a29030021112006290300211220072005200841d0036c6a200a41d0036c10c30a220641f0276a201020084104746a200a41047410c30a1a200520013b01a629200441f8116a200441d0036a41c80310c30a1a20062005200d1b22012f01a6292108200441d0036a2004410c6a41c40310c30a1a2001200941d0036c6a210a02400240200941016a220d20084d0d00200a200c370300200a200b360208200a410c6a200441d0036a41c40310c30a1a200141f0276a210a0c010b2001200d41d0036c6a200a200820096b221041d0036c10c40a1a200a200b360208200a200c370300200a410c6a200441d0036a41c40310c30a1a200141f0276a220a200d4104746a200a20094104746a201041047410c40a1a0b200a20094104746a220a2003370308200a20023703002001200841016a3b01a629200441b00e6a200441f8116a41c80310c30a1a200441e80a6a200441b00e6a41c80310c30a1a20052802a02922010d02410021100c030b2005200a41016a220841d0036c6a20092001200a6b220641d0036c10c40a1a2009200b3602082009200c3703002009410c6a200441d0036a41c40310c30a1a200541f0276a220920084104746a2009200a4104746a200641047410c40a1a0b2009200a4104746a220a2003370308200a20023703002005200141016a3b01a6290c0d0b20122102201121034100211020062113200e2114200f2115034020052f01a4292105200122062f01a629220d410b490d024100210841042101024020054105490d0020052101024002402005417b6a0e020201000b200541796a210541012108410621010c010b4100210541012108410521010b41d82910382207450d03200741003b01a629200741003602a029200720062f01a62922162001417f736a220a3b01a6292006200141d0036c6a2209280204210e2009280200210f200441d0036a200941086a41c80310c30a1a200a410c4f0d062016200141016a220b6b200a470d07200641f0276a221620014104746a220941086a29030021112009290300211220072006200b41d0036c6a200a41d0036c10c30a220941f0276a2016200b4104746a200a41047410c30a1a200620013b01a629200441f8116a200441d0036a41c80310c30a1a20092f01a629220a41016a2116200a410c4f0d08200d20016b22012016470d09201041016a2110200941a8296a2006200b4102746a41a8296a200141027410c30a1a4100210102400340200920014102746a41a8296a280200220b20013b01a429200b20093602a0292001200a4f0d0120012001200a496a2201200a4d0d000b0b200441b00e6a200441f8116a41c80310c30a1a2009200620081b220b2f01a6292101200441d0036a200441e80a6a41c80310c30a1a0240200541016a220a20014b22160d00200b200a41d0036c6a200b200541d0036c6a200120056b41d0036c10c40a1a0b200b200541d0036c6a2208201436020420082015360200200841086a200441d0036a41c80310c30a1a200b41f0276a210d024020160d00200d200a4104746a200d20054104746a200120056b41047410c40a1a0b200141016a2108200d20054104746a220d2003370308200d2002370300200b41a8296a210d0240200541026a2215200141026a22144f0d00200d20154102746a200d200a4102746a200120056b41027410c40a1a0b200d200a4102746a2013360200200b20083b01a6290240200a20144f0d00200b20054102746a41ac296a210103402001280200220a200541016a22053b01a429200a200b3602a029200141046a210120082005470d000b0b200441e80a6a200441b00e6a41c80310c30a1a20122102201121032006210520092113200e2114200f211520062802a02922010d000b0b200441a0076a200441e80a6a41c80310c30a1a2000280204220a450d082000280200210941d82910382201450d012001200a3602a829200141003b01a629200141003602a02920002001360204200a41003b01a429200a20013602a0292000200941016a36020020092010470d0920012f01a629220a410b4f0d0a2001200a41016a22093b01a6292001200a41d0036c6a220b200e360204200b200f360200200b41086a200441a0076a41c80310c30a1a2001200a4104746a220a41f8276a2011370300200a41f0276a2012370300200141a8296a20094102746a2007360200200720093b01a429200720013602a0292000200028020841016a3602080c0c0b200441d0036a200441e80a6a41c80310c30a1a0240200d20054d0d002006200541d0036c6a220141d0036a2001200d20056b41d0036c10c40a1a0b200d41016a21092006200541d0036c6a2201201436020420012015360200200141086a200441d0036a41c80310c30a1a200641f0276a220b20054104746a210a200541016a210102400240200d20054b0d00200a2002370300200a2003370308200641a8296a210a200d41026a210b0c010b200b20014104746a200a200d20056b220b41047410c40a1a200a2003370308200a20023703002005410274200641a8296a220a6a41086a200a20014102746a200b41027410c40a1a200d41026a210b0b200a200141027422056a2013360200200620093b01a6292001200b4f0d0a200520066a41a8296a210a0340200a280200220920013b01a429200920063602a029200a41046a210a200b200141016a2201470d000c0b0b0b1030000b200a410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200a410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2016410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2000200028020841016a3602080b200441c0156a24000b8719050d7f027e067f017e057f230041a0016b22042400200441206a41186a200141186a290000370300200441206a41106a200141106a290000370300200441206a41086a200141086a290000370300200420012900003703200240024002400240024002400240024002400240024002400240024020002802042205450d00200028020021060c010b41980410382205450d0141002106200541003b01b601200541003602b00120002005360204200041003602000b02400340200541b8016a210720052f01b601220841057421094100210a417f210b4100210102400340024020092001470d002008210b0c020b200441206a200520016a41b8016a412010c60a220c450d03200b41016a210b200a41106a210a200141206a2101200c417f4a0d000b0b02402006450d002006417f6a21062005200b4102746a4198046a28020021050c010b0b200441086a41086a2201200441206a41106a220a290300370300200441086a41106a220c200441386a29030037030020042004290328370308200428022421092004280220210602402008410a4b0d00200a200c290300370300200441206a41086a200129030037030020042004290308370320200b41016a210c0240200b20084f220a0d002007200c4105746a2007200b4105746a2008200b6b41057410c40a1a0b2007200b4105746a220120093600042001200636000020012004290320370008200141106a200441286a290300370000200141186a200441206a41106a2903003700000240200a0d002005200c4104746a2005200b4104746a2008200b6b41047410c40a1a0b2005200b4104746a22012003370308200120023703002005200841016a3b01b6010c0c0b410521014100210d02400240200b41054f0d0041042101200b210a0c010b4105210a02400240200b417b6a0e020201000b200b41796a210a4101210d410621010c010b4100210a4101210d0b41980410382208450d01200841003b01b601200841003602b001200820052f01b601220e2001417f736a220c3b01b601200720014105746a220b280004210f200b2800002110200441206a41106a200b41186a290000370300200441206a41086a200b41106a2900003703002004200b290008370320200c410c4f0d02200e200141016a220b6b200c470d03200520014104746a220e41086a2903002111200e2903002112200841b8016a2007200b4105746a200c41057410c30a1a20082005200b4104746a200c41047410c30a2113200520013b01b601200441f0006a41086a200441206a41086a2207290300370300200441f0006a41106a200441206a41106a220e2903003703002004200429032037037020132005200d1b22012f01b601210c200e200441086a41106a2903003703002007200441086a41086a29030037030020042004290308370320200141b8016a210b0240200a41016a220d200c4b22140d00200b200d4105746a200b200a4105746a200c200a6b41057410c40a1a0b200b200a4105746a220b2009360004200b2006360000200b2004290320370008200b41106a2007290300370000200b41186a200e290300370000024020140d002001200d4104746a2001200a4104746a200c200a6b41047410c40a1a0b2001200a4104746a220b2003370308200b20023703002001200c41016a3b01b60120044188016a41086a2215200441f0006a41086a2216290300220237030020044188016a41106a2217200441f0006a41106a2218290300220337030020042004290370221937038801200441d8006a41106a220d2003370300200441d8006a41086a221420023703002004201937035802400240024020052802b00122010d004100211a0c010b20122102201121034100211a2013211b200f211c2010211d034020052f01b4012105200122062f01b6012213410b490d024100210741042101024020054105490d0020052101024002402005417b6a0e020201000b200541796a210541012107410621010c010b4100210541012107410521010b41c80410382208450d04200841003b01b601200841003602b001200820062f01b601220f2001417f736a220b3b01b601200441206a41086a2209200641b8016a221e20014105746a220a41106a290000370300200441206a41106a220e200a41186a2900003703002004200a290008370320200b410c4f0d07200f200141016a220c6b200b470d08200a280004210f200a2800002110200620014104746a220a41086a2903002111200a2903002112200841b8016a201e200c4105746a200b41057410c30a1a20082006200c4104746a200b41047410c30a210a200620013b01b601201620092903003703002018200e29030037030020042004290320370370200a2f01b601220b41016a211e200b410c4f0d09201320016b2201201e470d0a201a41016a211a200a4198046a2006200c4102746a4198046a200141027410c30a1a4100210102400340200a20014102746a4198046a280200220c20013b01b401200c200a3602b0012001200b4f0d0120012001200b496a2201200b4d0d000b0b20172018290300370300201520162903003703002004200429037037038801200a200620071b220c2f01b6012101200e200d2903003703002009201429030037030020042004290358370320200c41b8016a210b0240200541016a220720014b22130d00200b20074105746a200b20054105746a200120056b41057410c40a1a0b200b20054105746a220b201c360004200b201d360000200b2004290320370008200b41106a2009290300370000200b41186a200e290300370000024020130d00200c20074104746a200c20054104746a200120056b41047410c40a1a0b200141016a2109200c20054104746a220b2003370308200b2002370300200c4198046a210b0240200541026a2213200141026a220e4f0d00200b20134102746a200b20074102746a200120056b41027410c40a1a0b200b20074102746a201b360200200c20093b01b60102402007200e4f0d00200c20054102746a419c046a210103402001280200220b200541016a22053b01b401200b200c3602b001200141046a210120092005470d000b0b200d2017290300370300201420152903003703002004200429038801370358201221022011210320062105200a211b200f211c2010211d20062802b00122010d000b0b200441c0006a41106a200d290300370300200441c0006a41086a2014290300370300200420042903583703402000280204220b450d092000280200210a41c80410382201450d022001200b36029804200141003b01b601200141003602b00120002001360204200b41003b01b401200b20013602b0012000200a41016a360200200a201a470d0a20012f01b601220b410b4f0d0b2001200b41016a220a3b01b6012001200b4104746a220c2011370308200c20123703002001200b4105746a220b41c8016a200441c8006a290300370000200b41d0016a200441d0006a290300370000200b41bc016a200f360000200b41b8016a2010360000200b41c0016a200429034037000020014198046a200a4102746a20083602002000200028020841016a3602082008200a3b01b401200820013602b0010c0d0b200441206a41106a220b200441d8006a41106a290300370300200441206a41086a220a200441d8006a41086a29030037030020042004290358370320200641b8016a21010240201320054d0d00200120054105746a220c41206a200c201320056b41057410c40a1a0b201341016a2109200120054105746a2201201c3600042001201d36000020012004290320370008200141106a200a290300370000200141186a200b290300370000200541016a2101200620054104746a210b02400240201320054b0d00200b2002370300200b200337030820064198046a210b201341026a210c0c010b200620014104746a200b201320056b220a41047410c40a1a200b2003370308200b2002370300200541027420064198046a220b6a41086a200b20014102746a200a41027410c40a1a201341026a210c0b200b2001410274220a6a201b360200200620093b01b6012001200c4f0d0b200a20066a4198046a210b0340200b280200220a20013b01b401200a20063602b001200b41046a210b200c200141016a2201470d000c0c0b0b2005200a6a22012003370308200120023703000c0b0b1030000b200c410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200b410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b201e410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2000200028020841016a3602080b200441a0016a24000ba01203077f017e097f230041b0176b22022400200241f8036a200141f80310c30a1a0240024002400240024002400240024002400240024002400240024020002802042203450d00200028020021040c010b41b02b10382203450d0141002104200341003b01ae2b200341003602a82b20002003360204200041003602000b034020032f01ae2b220541f8036c210641002101417f210702400340024020062001470d00200521070c020b200741016a2107200320016a2108200141f8036a2101200241f8036a200810e901220841ff01714101460d000b0240200841187441187541016a0e020100010b0240024020022802f8030d0020024180046a10af010c010b20024180046a280200450d0020022802fc0310390b20022d00c8074106490d0d200241d0076a280200450d0d200241cc076a28020010390c0d0b02402004450d002004417f6a2104200320074102746a41b02b6a28020021030c010b0b20024180046a280200210620022903f80321092002410c6a20024184046a41ec0310c30a1a024020032f01ae2b2201410a4b0d00200241f8036a2002410c6a41ec0310c30a1a0240200720014f0d002003200741f8036c6a220841f8036a2008200120076b41f8036c10c40a1a0b2003200741f8036c6a22072006360208200720093703002007410c6a200241f8036a41ec0310c30a1a2003200141016a3b01ae2b0c0b0b410521014100210502400240200741054f0d0041042101200721080c010b41052108024002402007417b6a0e020201000b200741796a210841012105410621010c010b41002108410121050b41b02b1038220a450d00200a41003b01ae2b200a41003602a82b200a20032f01ae2b220b2001417f736a22073b01ae2b2003200141f8036c6a2204280204210c2004280200210d200241f8036a200441086a41f00310c30a1a2007410c4f0d01200b200141016a22046b2007470d02200a2003200441f8036c6a200741f8036c10c30a2104200320013b01ae2b200241c0136a200241f8036a41f00310c30a1a2004200320051b22012f01ae2b2107200241f8036a2002410c6a41ec0310c30a1a0240200841016a220520074b0d002001200541f8036c6a2001200841f8036c6a200720086b41f8036c10c40a1a0b2001200841f8036c6a22082006360208200820093703002008410c6a200241f8036a41ec0310c30a1a2001200741016a3b01ae2b200241d00f6a200241c0136a41f00310c30a1a200241e00b6a200241d00f6a41f00310c30a1a02400240024020032802a82b22010d004100210e0c010b4100210e2004210f200c2110200d2111034020032f01ac2b2106200122052f01ae2b220b410b490d024100210441042101024020064105490d0020062101024002402006417b6a0e020201000b200641796a210641012104410621010c010b4100210641012104410521010b41e02b1038220a450d03200a41003b01ae2b200a41003602a82b200a20052f01ae2b22122001417f736a22073b01ae2b2005200141f8036c6a2208280204210c2008280200210d200241f8036a200841086a41f00310c30a1a2007410c4f0d062012200141016a22036b2007470d07200a2005200341f8036c6a200741f8036c10c30a2108200520013b01ae2b200241c0136a200241f8036a41f00310c30a1a20082f01ae2b220741016a21122007410c4f0d08200b20016b22012012470d09200e41016a210e200841b02b6a200520034102746a41b02b6a200141027410c30a1a4100210102400340200820014102746a41b02b6a280200220320013b01ac2b200320083602a82b200120074f0d01200120012007496a220120074d0d000b0b200241d00f6a200241c0136a41f00310c30a1a2008200520041b22032f01ae2b2101200241f8036a200241e00b6a41f00310c30a1a0240200641016a220720014b0d002003200741f8036c6a2003200641f8036c6a200120066b41f8036c10c40a1a0b200141016a21042003200641f8036c6a220b2010360204200b2011360200200b41086a200241f8036a41f00310c30a1a200341b02b6a210b0240200641026a2211200141026a22104f0d00200b20114102746a200b20074102746a200120066b41027410c40a1a0b200b20074102746a200f360200200320043b01ae2b0240200720104f0d00200320064102746a41b42b6a2101034020012802002207200641016a22063b01ac2b200720033602a82b200141046a210120042006470d000b0b200241e00b6a200241d00f6a41f00310c30a1a200521032008210f200c2110200d211120052802a82b22010d000b0b200241f0076a200241e00b6a41f00310c30a1a20002802042207450d082000280200210841e02b10382201450d01200120073602b02b200141003b01ae2b200141003602a82b20002001360204200741003b01ac2b200720013602a82b2000200841016a3602002008200e470d0920012f01ae2b2207410b4f0d0a2001200741016a22083b01ae2b2001200741f8036c6a2207200c3602042007200d360200200741086a200241f0076a41f00310c30a1a200141b02b6a20084102746a200a360200200a20083b01ac2b200a20013602a82b2000200028020841016a3602080c0c0b200241f8036a200241e00b6a41f00310c30a1a200641016a21010240200b20064d22080d002005200141f8036c6a2005200641f8036c6a200b20066b41f8036c10c40a1a0b200b41016a21032005200641f8036c6a2207201036020420072011360200200741086a200241f8036a41f00310c30a1a200541b02b6a2107200b41026a2104024020080d00200641027420076a41086a200720014102746a200b20066b41027410c40a1a0b200520033b01ae2b200720014102746a200f360200200120044f0d0a200b41016a210320052001417f6a22014102746a41b42b6a2107034020072802002208200141016a22013b01ac2b200820053602a82b200741046a210720032001470d000c0b0b0b1030000b2007410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2007410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2012410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2000200028020841016a3602080b200241b0176a24000b6601017f230041206b220424002004200136020420042000360200200441086a41106a200241106a290200370300200441086a41086a200241086a29020037030020042002290200370308200441c4ecc500200441046a41c4ecc500200441086a20031060000b940401097f230041c0006b220241186a410472210320012802002204280204210541002101417f21060340024020052001470d00200041013a00000f0b200428020022072d000021082004200520066a3602042004200741016a360200200320016a20083a00002002200141016a22073602182006417f6a21062007210120074121470d000b200241106a41026a2201200241256a2d00003a00002002410c6a41026a22042002412c6a2d00003a0000200220022f011c3b0114200220022d001e3a00162002200241186a410b6a2f00003b01102002200241186a41126a2f01003b010c2002413b6a2f00002106200241346a28020021072002412d6a2800002105200241266a2801002108200228001f2103200241086a41026a2209200241336a2d00003a0000200241046a41026a220a2002413a6a2d00003a00002002200241186a41196a2f00003b01082002200241186a41206a2f01003b0104200041036a20022d00163a0000200020022f01143b0001200041046a2003360000200041086a20022f01103b00002000410a6a20012d00003a00002000410b6a2008360000200041126a20053600002000410f6a20022f010c3b0000200041116a20042d00003a0000200041166a20022f01083b0000200041186a20092d00003a0000200041196a20073600002000411f6a200a2d00003a00002000411d6a20022f01043b0000200041206a20063b0000200041003a00000b8b0401097f230041c0006b220241186a41047221032001280204210441002105417f21060240034020042005460d012001200420066a36020420012001280200220741016a360200200320056a20072d00003a00002002200541016a22073602182006417f6a21062007210520074121470d000b200241106a41026a2205200241256a2d00003a00002002410c6a41026a22012002412c6a2d00003a0000200220022f011c3b0114200220022d001e3a00162002200241186a410b6a2f00003b01102002200241186a41126a2f01003b010c2002413b6a2f00002106200241346a28020021072002412d6a2800002104200241266a2801002103200228001f2108200241086a41026a2209200241336a2d00003a0000200241046a41026a220a2002413a6a2d00003a00002002200241186a41196a2f00003b01082002200241186a41206a2f01003b0104200041036a20022d00163a0000200020022f01143b0001200041046a2008360000200041086a20022f01103b00002000410a6a20052d00003a00002000410b6a2003360000200041126a20043600002000410f6a20022f010c3b0000200041116a20012d00003a0000200041166a20022f01083b0000200041186a20092d00003a0000200041196a20073600002000411f6a200a2d00003a00002000411d6a20022f01043b0000200041206a20063b0000200041003a00000f0b200041013a00000be80501067f024002400240024020002d00000e03010200010b200041046a280200220241ffff03200241ffff03491b220041c0006a41ff0020002002413e2000413e491b2202461b2103200020026b2104200141086a210541012102034002400240200241ff01714102460d0020024101712100410021022000450d00200321060c010b2004450d040240200441ff014b0d002004417f6a210641022102410021040c010b200441817e6a210441ff012106410221020b0240200141046a28020020052802002200470d00200120004101108101200528020021000b200128020020006a20063a00002005200041016a3602000c000b0b0240200141046a280200200141086a22022802002200470d00200120004101108101200228020021000b200128020020006a41003a00002002200041016a3602000c010b200041046a2802002202413e200241ffff03200241ffff03491b2202413e491b2105024020002d0001450d00200241406a417f20022005461b2107200220056b2106200141086a2105200141046a210341012102034002400240200241ff01714102460d0020024101712100410021022000450d00200721040c010b2006450d030240200641ff014b0d002006417f6a210441022102410021060c010b200641817e6a210641ff012104410221020b0240200328020020052802002200470d00200120004101108101200528020021000b200128020020006a20043a00002005200041016a3602000c000b0b200241807f7341bf7f20022005461b2107200220056b2106200141086a2105200141046a210341012102034002400240200241ff01714102460d0020024101712100410021022000450d00200721040c010b2006450d020240200641ff014b0d002006417f6a210441022102410021060c010b200641817e6a210641ff012104410221020b0240200328020020052802002200470d00200120004101108101200528020021000b200128020020006a20043a00002005200041016a3602000c000b0b0bae0b01107f230041a0046b22032400024002400240024002402001450d00200341086a2001417f6a220420022802b02b10fc0502400240200328020c2201450d00200328020821050c010b41b02b10382201450d0341002105200141003b01ae2b200141003602a82b0b41e02b10382206450d02200620013602b02b200641003b01ae2b200641003602a82b200141003b01ac2b200120063602a82b2003200636020c2003200541016a360208024020022f01ae2b450d00200641b02b6a2107200241b42b6a210820032802102109200341186a41d1036a220a41086a210b200a41186a210c200a41106a210d200221014100210e024002400340200341186a200110fd0502400240024002400240024002400240200141d0036a2d00000e0701020304050600010b200141dc036a280200220f417f4c0d0e200141d4036a280200211002400240200f0d00410121110c010b200f10382211450d0e0b2003200f3602f003200320113602ec0320112010200f10c30a1a200341063a00e8032003200f3602f4030c060b200341003a00e8030c050b200341186a41e0036a200141e0036a290300370300200341013a00e8032003200141d8036a2903003703f0030c040b200341023a00e8032003200141d1036a2800003600e9030c030b200341033a00e8032003200141d1036a2900003700e9030c020b200b200141d9036a290000370000200a200141d1036a290000370000200341043a00e8030c010b200c200141e9036a290000370000200d200141e1036a290000370000200b200141d9036a290000370000200a200141d1036a290000370000200341053a00e8030b20034190046a2004200828020010fc05200328029804211202400240200328029404220f450d0020032802900421110c010b41b02b1038220f450d0741002111200f41003b01ae2b200f41003602a82b0b024020052011470d0020062f01ae2b2211410b4f0d022006201141016a22103b01ae2b2006201141f8036c6a200341186a41f80310c30a1a200720104102746a200f360200200f20103b01ac2b200f20063602a82b200141f8036a2101200841046a2108201220096a41016a2109200e41016a220e20022f01ae2b4f0d030c010b0b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b200320093602100b20002003290308370200200041086a200341086a41086a2802003602000c010b41b02b1038220f450d01200f41003b01ae2b200f41003602a82b41002108024020022f01ae2b450d00200341186a41d1036a221041086a2109201041186a2112201041106a210520022101410021080340200341186a200110fd0502400240024002400240024002400240200141d0036a2d00000e0701020304050600010b200141dc036a2802002206417f4c0d0b200141d4036a280200210e0240024020060d00410121110c010b200610382211450d0b0b200320063602f003200320113602ec032011200e200610c30a1a200341063a00e803200320063602f4030c060b200341003a00e8030c050b200341186a41e0036a200141e0036a290300370300200341013a00e8032003200141d8036a2903003703f0030c040b200341023a00e8032003200141d1036a2800003600e9030c030b200341033a00e8032003200141d1036a2900003700e9030c020b2009200141d9036a2900003700002010200141d1036a290000370000200341043a00e8030c010b2012200141e9036a2900003700002005200141e1036a2900003700002009200141d9036a2900003700002010200141d1036a290000370000200341053a00e8030b200f2f01ae2b2206410b4f0d05200f200641016a3b01ae2b200f200641f8036c6a200341186a41f80310c30a1a200141f8036a2101200841016a220820022f01ae2b490d000b0b200020083602082000200f360204200041003602000b200341a0046a24000f0b1030000b1034000b4180f1ca00412041a8c6c0001035000bcf0e02037f017e230041c0036b22022400024002400240024020012802004101470d002001410c6a2802002203417f4c0d02200128020421044101210102402003450d00200310382201450d040b20002001360204200041086a200336020020012004200310c30a1a200041013602002000410c6a20033602000c010b42002105024002400240024002400240024002400240200141086a2802000e09080102030405060700080b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103200241e0016a200141b8016a10d103200241a8016a200141f0016a10d103200241f0006a200141a8026a10d103200241386a200141e0026a10d103200220014198036a10d103420821050c070b20024188036a200141106a10d103420121050c060b20024188036a200141106a10d103200241d0026a200141c8006a10d103420221050c050b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103420321050c040b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103200241e0016a200141b8016a10d103420421050c030b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103200241e0016a200141b8016a10d103200241a8016a200141f0016a10d103420521050c020b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103200241e0016a200141b8016a10d103200241a8016a200141f0016a10d103200241f0006a200141a8026a10d103420621050c010b20024188036a200141106a10d103200241d0026a200141c8006a10d10320024198026a20014180016a10d103200241e0016a200141b8016a10d103200241a8016a200141f0016a10d103200241f0006a200141a8026a10d103200241386a200141e0026a10d103420721050b200041086a2005370300200041106a200229038803370300200041c8006a20022903d002370300200041186a20024188036a41086a290300370300200041206a20024188036a41106a290300370300200041286a20024188036a41186a290300370300200041306a20024188036a41206a290300370300200041386a20024188036a41286a290300370300200041c0006a20024188036a41306a290300370300200041d0006a200241d0026a41086a290300370300200041d8006a200241d0026a41106a290300370300200041e0006a200241d0026a41186a290300370300200041e8006a200241d0026a41206a290300370300200041f0006a200241d0026a41286a290300370300200041f8006a200241d0026a41306a290300370300200041b0016a20024198026a41306a290300370300200041a8016a20024198026a41286a290300370300200041a0016a20024198026a41206a29030037030020004198016a20024198026a41186a29030037030020004190016a20024198026a41106a29030037030020004188016a20024198026a41086a29030037030020004180016a200229039802370300200041e8016a200241e0016a41306a290300370300200041e0016a200241e0016a41286a290300370300200041d8016a200241e0016a41206a290300370300200041d0016a200241e0016a41186a290300370300200041c8016a200241e0016a41106a290300370300200041c0016a200241e0016a41086a290300370300200041b8016a20022903e001370300200041a0026a200241a8016a41306a29030037030020004198026a200241a8016a41286a29030037030020004190026a200241a8016a41206a29030037030020004188026a200241a8016a41186a29030037030020004180026a200241a8016a41106a290300370300200041f8016a200241a8016a41086a290300370300200041f0016a20022903a801370300200041d8026a200241f0006a41306a290300370300200041d0026a200241f0006a41286a290300370300200041c8026a200241f0006a41206a290300370300200041c0026a200241f0006a41186a290300370300200041b8026a200241f0006a41106a290300370300200041b0026a200241f0006a41086a290300370300200041a8026a200229037037030020004190036a200241386a41306a29030037030020004188036a200241386a41286a29030037030020004180036a200241386a41206a290300370300200041f8026a200241386a41186a290300370300200041f0026a200241386a41106a290300370300200041e8026a200241386a41086a290300370300200041e0026a2002290338370300200041c8036a200241306a290300370300200041c0036a200241286a290300370300200041b8036a200241206a290300370300200041b0036a200241186a290300370300200041a8036a200241106a290300370300200041a0036a200241086a29030037030020004198036a2002290300370300200041003602000b200241c0036a24000f0b1034000b1030000bb006030b7f027e037f230041f0036b2203240002400240024002402001450d0020032001417f6a220420022802a82910fe050240024020032802042201450d00200328020021050c010b41a82910382201450d0341002105200141003b01a629200141003602a0290b41d82910382206450d02200620013602a82941002107200641003b01a629200641003602a029200141003b01a429200120063602a029200320063602042003200541016a360200024020022f01a629450d00200641a8296a2108200241f0276a2109200241ac296a210a200641f0276a210b2003280208210c2002210d024002400340200341106a200d10fd05200941086a290300210e2009290300210f200341e0036a2004200a28020010fe0520032802e80321100240024020032802e4032201450d0020032802e00321110c010b41a82910382201450d0741002111200141003b01a629200141003602a0290b024020052011470d0020062f01a6292211410b4f0d022006201141016a22123b01a6292006201141d0036c6a200341106a41d00310c30a1a200b20114104746a2211200e3703082011200f370300200820124102746a2001360200200120123b01a429200120063602a029200d41d0036a210d200941106a2109200a41046a210a2010200c6a41016a210c200741016a220720022f01a6294f0d030c010b0b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2003200c3602080b20002003290300370200200041086a200341086a2802003602000c010b41a82910382209450d01200941003b01a629200941003602a0294100210a024020022f01a629450d00200241f0276a2101200941f0276a210d4100210a200221110340200341106a201110fd0520092f01a6292206410b4f0d04200141086a290300210e2001290300210f2009200641016a3b01a6292009200641d0036c6a200341106a41d00310c30a1a200d20064104746a2206200e3703082006200f370300201141d0036a2111200141106a2101200a41016a220a20022f01a629490d000b0b2000200a36020820002009360204200041003602000b200341f0036a24000f0b1030000b4180f1ca00412041a8c6c0001035000bb508030e7f017e047f230041e0006b2203240002400240024002400240024002402001450d0020032001417f6a220420022802980410ff050240024020032802042201450d00200328020021050c010b41980410382201450d0241002105200141003b01b601200141003602b0010b41c80410382206450d01200620013602980441002107200641003b01b601200641003602b001200141003b01b401200120063602b001200320063602042003200541016a360200024020022f01b601450d0020064198046a2108200241b8016a21092002419c046a210a200641b8016a210b2002210c0340200341106a41186a220d200941186a290000370300200341106a41106a220e200941106a290000370300200341106a41086a220f200941086a29000037030020032009290000370310200c41086a2802002110200c2903002111200341306a2004200a28020010ff05200328023821122003280234210120032802302113200341c0006a41186a2214200d290300370300200341c0006a41106a2215200e290300370300200341c0006a41086a220e200f29030037030020032003290310370340024020010d0041980410382201450d0441002113200141003b01b601200141003602b0010b20052013470d0520062f01b6012213410b4f0d062006201341016a220d3b01b601200620134104746a220f2011370300200b20134105746a221341106a2015290300370000201341186a201429030037000020132003290340370000200f2010360208201341086a200e2903003700002008200d4102746a2001360200200120063602b0012001200d3b01b4012003201220032802086a41016a360208200c41106a210c200941206a2109200a41046a210a200741016a220720022f01b601490d000b0b20002003290300370200200041086a200341086a2802003602000c060b4198041038220c450d00200c41003b01b601200c41003602b0014100211320022f01b601450d04200241b8016a2101200c41b8016a21104100210920022106410121130340200341c0006a41186a220d200141186a290000370300200341c0006a41106a2207200141106a290000370300200341c0006a41086a220e200141086a29000037030020032001290000370340200941ffff0371220a410b4f0d02200641086a280200210f20062903002111200c200941016a3b01b6012010200a4105746a22092003290340370000200c200a4104746a220a200f360208200941086a200e290300370000200941106a2007290300370000200941186a200d290300370000200a2011370300201320022f01b6014f0d05200641106a2106200141206a2101201341016a2113200c2f01b60121090c000b0b1030000b4180f1ca00412041a8c6c0001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b200020133602082000200c360204200041003602000b200341e0006a24000bd503010c7f200028020421012000410036020402402001450d00024020002802002202450d00034020012802a00621012002417f6a22020d000b0b024020002802082203450d00410021000340024002400240200020012f01be034f0d00200121022000220441016a21000c010b41002100034041002102024020012802002205450d00200041016a210620012f01bc032104200521020b024041d00641a00620001b450d00200110390b024020020d00410021010c030b2006210020022101200420022f01be034f0d000b024020060d0020022101200441016a21000c010b200441027420026a41a4066a280200210102402006417f6a2200450d00034020012802a00621012000417f6a22000d000b0b410021000b2002200441286c6a220241246a2802002107200241206a2802002108200241186a2802002109200241146a280200210a2002410c6a280200210b200241086a280200210c0b200c450d020240200b41ffffff3f71450d00200c10390b0240200941ffffff3f71450d00200a10390b2003417f6a21030240200741ffffffff0171450d00200810390b20030d000b0b41002102034020012802002100024041d00641a00620021b450d00200110390b2002417f6a21022000210120000d000b0b0bbb0201067f200028020421012000410036020402402001450d00024020002802002202450d000340200128023421012002417f6a22020d000b0b024020002802082203450d004100210403402003417f6a2103024002400240200420012f0132490d0041002100034041002102024020012802002205450d00200041016a210620012f01302104200521020b024041e400413420001b450d00200110390b024020020d00410021010c040b2006210020022101200420022f01324f0d000b20060d01200221010b200441016a21040c010b200441027420026a41386a280200210102402006417f6a2202450d000340200128023421012002417f6a22020d000b0b410021040b20030d000b0b41002102034020012802002100024041e400413420021b450d00200110390b2002417f6a21022000210120000d000b0b0bbf0201067f200028020421012000410036020402402001450d00024020002802002202450d00034020012802ac1421012002417f6a22020d000b0b024020002802082203450d004100210403402003417f6a2103024002400240200420012f01ca11490d0041002100034041002102024020012802002205450d00200041016a210620012f01c8112104200521020b024041dc1441ac1420001b450d00200110390b2002450d032006210020022101200420022f01ca114f0d000b20060d01200221010b200441016a210420030d020c030b200441027420026a41b0146a280200210102402006417f6a2202450d00034020012802ac1421012002417f6a22020d000b0b410021040b20030d000b0b41002102034020012802002100024041dc1441ac1420021b450d00200110390b2002417f6a21022000210120000d000b0b0bc00201067f200028020421012000410036020402402001450d00024020002802002202450d00034020012802e80221012002417f6a22020d000b0b024020002802082203450d004100210403402003417f6a2103024002400240200420012f0106490d0041002100034041002102024020012802002205450d00200041016a210620012f01042104200521020b024041980341e80220001b450d00200110390b024020020d00410021010c040b2006210020022101200420022f01064f0d000b20060d01200221010b200441016a21040c010b200441027420026a41ec026a280200210102402006417f6a2202450d00034020012802e80221012002417f6a22020d000b0b410021040b20030d000b0b41002102034020012802002100024041980341e80220021b450d00200110390b2002417f6a21022000210120000d000b0b0bc00201067f200028020421012000410036020402402001450d00024020002802002202450d00034020012802c80521012002417f6a22020d000b0b024020002802082203450d004100210403402003417f6a2103024002400240200420012f0106490d0041002100034041002102024020012802002205450d00200041016a210620012f01042104200521020b024041f80541c80520001b450d00200110390b024020020d00410021010c040b2006210020022101200420022f01064f0d000b20060d01200221010b200441016a21040c010b200441027420026a41cc056a280200210102402006417f6a2202450d00034020012802c80521012002417f6a22020d000b0b410021040b20030d000b0b41002102034020012802002100024041f80541c80520021b450d00200110390b2002417f6a21022000210120000d000b0b0bc404020a7f027e230041b0076b22012400200028020421022000410036020402402002450d00024020002802002203450d00034020022802a82921022003417f6a22030d000b0b024020002802082204450d00200141d8036a2105200141d0036a410472210641002107200141a8076a210803400240024002400240200720022f01a629490d0041002100034041002103024020022802a0292209450d00200041016a210a20022f01a4292107200921030b024041d82941a82920001b450d00200210390b024020030d00410221030c050b200a210020032102200720032f01a6294f0d000b2003200741d0036c6a2100200320074104746a220241f8276a290300210b200241f0276a290300210c0240200a0d00200321020c020b200741027420036a41ac296a28020021020240200a417f6a2203450d00034020022802a82921022003417f6a22030d000b0b410021070c020b2002200741d0036c6a2100200220074104746a220341f8276a290300210b200341f0276a290300210c0b200741016a21070b20002802002103200141d0036a200041046a41cc0310c30a1a0b2004417f6a2104200141046a200141d0036a41cc0310c30a1a200120033602d0032006200141046a41cc0310c30a1a2008200b3703002001200c3703a007024020030d00200510af0120040d010c020b024020012802d803450d0020012802d40310390b20040d000b0b41002103034020022802a0292100024041d82941a82920031b450d00200210390b2003417f6a21032000210220000d000b0b200141b0076a24000b130020004105360204200041e8f1c3003602000bbf0302027f027e230041d0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca00413420024190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02402001450d00200241cc006a411d360200200241146a410236020020024202370204200241f8f4c30036020020024104360244200241f0f4c3003602402002200241c0006a3602102002200236024820024188f5c3001043000b200241386a41002903e0a644370300200241306a41002903d8a644370300200241286a41002903d0a644370300200241206a41002903c8a644370300200241186a41002903c0a644370300200241106a41002903b8a644370300200241086a41002903b0a644370300200241002903a8a644370300200241c0006a20021088062002350248210420023502402105200241d0006a240020052004422086840b9d0701067f20004201370200200041086a220241003602002001200010df05200141106a200010df05200128022021030240200041046a2204280200200228020022056b41034b0d00200020054104108101200228020021050b200028020020056a20033600002002200541046a2205360200200128022421020240200428020020056b41034b0d00200020054104108101200041086a28020021050b200028020020056a2002360000200041086a2202200541046a2205360200200128022821030240200041046a28020020056b41034b0d00200020054104108101200228020021050b200028020020056a20033600002002200541046a2205360200200141306a28020021020240024002400240200141386a200141346a200128022c4101461b280200220341c000490d00200341808001490d012003418080808004490d020240200041046a22062802002005470d00200020054101108101200041086a28020021050b200028020020056a41033a0000200041086a2204200541016a22053602000240200628020020056b41034b0d00200020054104108101200428020021050b200028020020056a20033600002004200541046a22053602000c030b200341027421040240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a20043a0000200041086a200541016a22053602000c020b200341027441017221040240200041046a28020020056b41014b0d00200020054102108101200041086a28020021050b200028020020056a20043b0000200041086a200541026a22053602000c010b200341027441027221040240200041046a28020020056b41034b0d00200020054104108101200041086a28020021050b200028020020056a2004360000200041086a200541046a22053602000b02402003410c6c2203450d00200220036a2107200041046a210403400240200428020020056b41074b0d00200020054108108101200041086a28020021050b200028020020056a2002290000370000200041086a2203200541086a2205360200200241086a28020021060240200428020020056b41034b0d00200020054104108101200328020021050b200028020020056a20063600002003200541046a22053602002002410c6a22022007470d000b0b200128023c21020240200041046a28020020056b41034b0d00200020054104108101200041086a28020021050b200028020020056a2002360000200041086a200541046a3602000b931e02087f017e230041e00b6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241e8026a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a2002428080808080203702cc0b200220013602c40b2002200041f4ddca0020011b3602c00b2002200241c00b6a3602c80b200241e8026a200241c80b6a10b903024020022802ec022200450d00200241f4026a280200210420022802f002210520022802e8022106200241f0006a200241f8026a41e00010c30a1a200241e8026a200241c80b6a10c003024020022802e80222070d0002402004450d00200441246c21012000210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2005450d01200541246c450d01200010390c010b200241f0026a280200210820022802ec022109200241f0016a200241f0006a41e00010c30a1a200241106a200241f0016a41e00010c30a1a0240024020022802c80b2802040d00200241e8026a200241106a41e00010c30a1a0c010b02402004450d00200441246c21012000210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d00200010390b02402008450d00200841d8086c210120072100034002402000220341e8006a2903004202510d0020032d00004102470d00200341086a280200450d00200341046a28020010390b200341d8086a210020034198016a10c601200141a8776a22010d000b0b410021002009450d00200941d8086c450d00200710390b2000450d00200241106a200241e8026a41e00010c30a1a200241fc006a2004360200200241f8006a2005360200200220003602742002200636027020024180016a200241106a41e00010c30a2103200241e8016a2008360200200241e4016a2009360200200220073602e001200241f0006a108a06024002400240024002400240024020022802702201450d00200241c80b6a2001417f6a10ef02200241e8026a20022802c80b220120022802d00b10ab020240024020022d00e8024101460d0020024188026a420037030020024180026a4200370300200241f8016a4200370300200242003703f0010c010b20024188026a20024181036a29000037030020024180026a200241f9026a290000370300200241f8016a200241f1026a290000370300200220022900e9023703f0010b024020022802cc0b450d00200110390b200241f0016a2003412010c60a0d00024020022802e8012203450d00200341d8086c210520022802e0014198016a21034100210141002100034020012109410121010240200341506a2903004202520d00024020032802002201410e470d00410021012009410171450d010c0a0b20014102462009710d09200141024721010b200041016a2100200341d8086a2103200541a8776a22050d000b0b108b0620022802e801220341d8086c210420022802e001210520022802e4012109200241f0016a200241f0006a41f00010c30a1a20022802f001210820052101024002402003450d00200241e8026a41f0006a2100200421012005210302400340200341e8006a290300220a4203510d01200241e8026a200341e80010c30a1a2002200a3703d0032000200341f0006a41e80710c30a1a200241c80b6a200241e8026a108c0620022d00c80b0d05200341d8086a2103200141a8776a22010d000c030b0b200341d8086a21010b200520046a22002001460d0003402001220341d8086a21010240200341e8006a2903004202510d0020032d00004102470d00200341086a280200450d00200341046a28020010390b20034198016a10f00420002001470d000b0b02402009450d00200941d8086c450d00200510390b200241a1bfc900411010f501200228020421030240200228020022014101470d0041a1bfc900411010fd010b20024180036a22004200370300200241e8026a41106a22054200370300200241e8026a41086a22094200370300200242003703e802200241c80b6a41b9fec300410610f2012009200241c80b6a41086a2204290000370300200220022900c80b3703e802200241c80b6a41dcecc900410e10f20120002004290000370300200520022900c80b37030020022003410020011b3602c80b200241e8026a4120200241c80b6a410410a30241012002108d062008108e06108f06450d02200241e8026a1090062002200241f0016a410c6a28020022093602e0022002200241e8026a410c6a28020022033602c00b20092003470d032009450d0520022802ec02210420022802f401210841002100034002400240200820006a22032d00002205200420006a22012d0000470d0002400240024002400240024020050e06000304050102000b200341016a200141016a412010c60a0d050c060b200341046a2802002207200141046a280200470d042007450d05200341086a280200200141086a280200470d042003410c6a2802002001410c6a280200470d040c050b2003410c6a28020022072001410c6a280200470d03200341046a280200200141046a280200200710c60a0d030c040b200341016a280000200141016a280000470d02200341106a2802002207200141106a280200470d02200341086a280200200141086a280200200710c60a0d020c030b200341016a280000200141016a280000470d01200341106a2802002207200141106a280200470d01200341086a280200200141086a280200200710c60a0d010c020b200341016a280000200141016a280000470d00200341106a2802002207200141106a280200470d00200341086a280200200141086a280200200710c60a450d010b41a4bcc800411410e702200241c80b6a200310910620022802c80b220520022802d00b109206024020022802cc0b450d00200510390b200241c80b6a200110910620022802c80b220520022802d00b109206024020022802cc0b450d00200510390b20032d000020012d00002205470d060b024002400240024002400240024020050e06050203040001050b200341046a2802002205200141046a280200470d0b2005450d05200341086a280200200141086a280200470d0b2003410c6a2802002001410c6a280200470d0b0c050b2003410c6a28020022052001410c6a280200470d0a200341046a280200200141046a280200200510c60a0d0a0c040b200341016a280000200141016a280000470d09200341106a2802002205200141106a280200470d09200341086a280200200141086a280200200510c60a0d090c030b200341016a280000200141016a280000470d08200341106a2802002205200141106a280200470d08200341086a280200200141086a280200200510c60a0d080c020b200341016a280000200141016a280000470d07200341106a2802002205200141106a280200470d07200341086a280200200141086a280200200510c60a450d010c070b200341016a200141016a412010c60a0d060b200041246a21002009417f6a22090d000c060b0b4181b9c800411c41a0b9c8001035000b200241086a20022f00c90b20022d00cb0b41107472109306200220022903083703c00b200241fc026a4101360200200242013702ec02200241ecddca003602e802200241043602e4022002200241e0026a3602f8022002200241c00b6a3602e002200241e8026a41c8b9c8001043000b41d8b9c800411e41f8b9c8001035000b200241dc0b6a4100360200200241d80b6a41f4ddca00360200200242013702cc0b20024188bac8003602c80b200241e0026a200241c00b6a200241c80b6a4190bac80010f805000b41a0bac800412741c8bac8001035000b0240200241f0016a41306a2203200241e8026a41306a2201412010c60a450d00418cdeca00410e10e70220034120109206200141201092060b024020032001412010c60a450d0041d8bac80041284180bbc8001035000b0240200241f0016a41d0006a200241e8026a41d0006a412010c60a0d00024020022802f4022201450d0020022802ec022103200141246c210103400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b0240200241f0026a2802002203450d00200341246c450d0020022802ec0210390b024020022802fc012201450d0020022802f4012103200141246c210103400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b0240200241f8016a2802002203450d00200341246c450d0020022802f40110390b200241e00b6a2400410035029cde4a0f0b4190bbc800412441b4bbc8001035000b200220003602f001200241fc026a4101360200200242013702ec02200241b0b9c8003602e802200241023602e4022002200241e0026a3602f8022002200241f0016a3602e002200241e8026a41b8b9c8001043000b200241fc016a411d36020020024184016a410236020020024202370274200241f8f4c300360270200241043602f401200241bcf5c3003602f0012002200241f0016a360280012002200241e8026a3602f801200241f0006a4188f5c3001043000ba146060b7f017e037f017e027f087e230041e0026b220124002001420037022c41002102200141002802ccdd4a220336022802400240024002400240024002402000410c6a28020041246c2204450d00200028020421050340024020052d00004101470d00200541106a2802002206417f4c0d04200541036a2d00002107200541016a2f00002108200541086a2802002109200541046a2d0000210a0240024020060d004101210b0c010b20061038220b450d040b20082007411074722108200b2009200610c30a2109200141f0006a41086a220b200141b8026a41086a290200370300200120012902b80237037002402002200128022c470d00200141286a200210c50420012802282103200128023021020b2003200241246c6a220720063602102007200636020c200720093602082007200a360204200720083b0001200741013a0000200741036a20084110763a0000200720012903703702142007411c6a200b2903003702002001200241016a22023602300b200541246a21052004415c6a22040d000b0b20014188016a2207420037030020014180016a22054200370300200141f0006a41086a2206420037030020014200370370200141e0006a41b9fec300410610f2012006200141e0006a41086a220229000037030020012001290060370370200141e0006a41fcf0c900411210f20120072002290000370300200520012900603703002001412036024c2001200141f0006a360248200141d0006a200141f0006a412010e40202400240200128025022070d00410221060c010b200128025421092001200141d0006a41086a2802003602ac02200120073602a802200141206a200141a8026a10ad01200128022421080240024020012802200d00200141186a200141a8026a10ad0120012802180d0020012802ac02200128021c2202490d002002417f4c0d04410121064101210402402002450d00200210382204450d0420044100200210c50a1a0b200420012802a802200210c30a1a0c010b200142003702642001410028029cde4a3602602001410c36023c2001200141c8006a3602382001200141e0006a3602dc02200141cc026a4101360200200142013702bc02200141e4b4c4003602b8022001200141386a3602c802200141dc026a41fc86ca00200141b8026a103b1a2001280260200128026810e70202402001280264450d00200128026010390b410221060b2009450d00200710390b024020064102460d00410121070240200841aac600490d0041002107024020024106470d0041e8a6c4002004410610c60a4521070b200741017321070b02402002450d00200410390b20070d004200210c200141f0006a21020c060b200141c4026a41002903b0a644370200200141aac6003602b802200141002903a8a6443702bc0220014188016a420037030020014180016a4200370300200141f0006a41086a2207420037030020014200370370200141e0006a41b9fec300410610f2012007200141e0006a41086a220629000037030020012001290060370370200141e0006a41fcf0c900411210f201200541086a2006290000370000200520012900603700002001410036026820014201370360200141b8026a200141e0006a10d109200141f0006a412020012802602205200128026810a30202402001280264450d00200510390b200141033602402001410636024c200141b9fec300360248024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c0006a3602c0022001200141c8006a3602b80241002802a4fe4a210541002802a0fe4a210741002802acfe4a210620014180016a4202370300200141a4016a41fcb2c900ad4280808080d00b8437020020014198016a41e8b2c900ad4280808080c0028437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a360200200141d8b2c90036027c20014281808080c0133702ac01200141003602a001200141a0b0c90036027420014103360270200741f4ddca00200641024622061b200141f0006a200541b0a7c00020061b2802101103000b4200210c200141f0006a41186a2206420037030020014180016a22074200370300200141f0006a41086a2205420037030020014200370370200141d0006a41b9fec300410610f2012005200141d0006a41086a220429000037030020012001290050370370200141e0006a41f0f1c900411810f2012006200141e0006a41086a2208290000370300200720012900603703000240200141f0006a10c002220241ff01714102460d0020024101710d050b20064200370300200742003703002005420037030020014200370370200141d0006a41b9fec300410610f2012005200429000037030020012001290050370370200141e0006a41f0f1c900411810f201200741086a200829000037000020072001290060370000200141013a00b802200141f0006a4120200141b8026a410110a302200141d0006a41b9fec300410610f201200141e0006a418cecc900410710f201412010382205450d0020052001290050370000200541086a2206200141d0006a41086a29000037000020052001290060370010200541186a2202200141e0006a41086a290000370000200120053602a802200142a080808080043702ac02412010382204450d0020042005290000370000200441186a2002290000370000200441106a200541106a290000370000200441086a200629000037000041202102200141f0006a2004412010c50920012802702205450d02410028029cde4a210a42a08080808004210c200141a8016a210d20014198016a210e20014188016a210f03400240024002400240200220012902742210422088a722064b0d0020012802a8022005200210c60a450d010b2010a7450d01200510390c010b0240200ca7450d00200410390b2001200636025420012005360250200141e0006a2005200610e40202400240024020012802602204450d0020012802642108024002400240200128026822094104490d002009417c71220b4104460d00200b4108460d00200941746a4110490d00200941646a4110490d00200941546a4110490d00200941446a410f4b0d010b200142003702bc022001200a3602b8022001410c36023c2001200141d0006a3602382001200141b8026a3602dc02200141013602840120014201370274200141e4b4c4003602702001200141386a36028001200141dc026a41fc86ca00200141f0006a103b1a20012802b80220012802c00210e702024020012802bc02450d0020012802b80210390b410121090c010b200428000021032004280004211120042800082112200441146a2900002113200429000c2114200441c4006a2900002115200441346a2900002116200441246a2900002117200429003c2118200429002c2119200429001c211a410021090b02402008450d00200410390b20090d0002400240200620026b22044110490d00200441706a2104200520026a41106a21020c010b41002104024041002802a8fe4a0d0041f4ddca0021020c010b4100210441002802a4fe4a210841002802a0fe4a210941002802acfe4a210b41f4ddca002102200141f4ddca0036028c012001420137038001200141c0a2c00036027c20014281808080d0113702ac01200141dba2c000ad4280808080f00b843702a401200141003602a00120014200370390012001411336027820014101360270200141c8a2c000360274200141c8a2c000ad4280808080b0028437039801200941f4ddca00200b410246220b1b200141f0006a200841b0a7c000200b1b2802101103000b2001200436026420012002360260200141b8026a200141e0006a10800220012d00b8024101470d0141002802a8fe4a450d0241002802a4fe4a210241002802a0fe4a210441002802acfe4a21082001420137038001200141b8d8c00036027c2001428180808080173702ac01200141e6d8c000ad4280808080800e843702a401200141003602a00120014200370390012001412636027820014101360270200141c0d8c000360274200141c0d8c000ad4280808080e0048437039801200141f4ddca0036028c01200441f4ddca00200841024622081b200141f0006a200241b0a7c00020081b2802101103000c020b41002802a8fe4a450d0141002802a4fe4a210241002802a0fe4a210441002802acfe4a21082001420137038001200141b0d8c00036027c20014281808080f0153702ac01200141e6d8c000ad4280808080800e843702a401200141003602a00120014200370390012001412636027820014101360270200141c0d8c000360274200141c0d8c000ad4280808080e0048437039801200141f4ddca0036028c01200441f4ddca00200841024622081b200141f0006a200241b0a7c00020081b2802101103000c010b200d2015370300200e2016370300200f2017370300200120183703a00120012019370390012001201a370380012001201337037820012014370370200141003602bc01200120123602b801200120113602b401200120033602b00120052006200141f0006a10a2080b200141f0006a2005200610c509200128027022060d01200521042010210c0b200ca7450d050c040b20012802b002210220052104200621052010210c0c000b0b1030000b1034000b200410390b024020012802ac02450d0020012802a80210390b200141f0006a10fb032001290378210c0b200141d0006a41b9fec300410610f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a2206200141e0006a41086a2202290000370000200141b8026a41086a2204200141d0006a41086a2208290000370300200141b8026a41106a2209200141f0006a41106a2205290300370300200141b8026a41186a220a200141f0006a41186a220b290300370300200120012900503703b802200141b8026a20012f014020012d004220012d0043108108200141808004360248200141093602ac02200141f280c4003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210341002802a0fe4a211141002802acfe4a211220054202370300200141a4016a418ba2c200ad428080808090088437020020014198016a41af9bc100ad4280808080a0028437030020014190016a4202370300200141f0006a41086a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080f0033702ac01200141003602a001200141a0b0c90036027420014103360270201141f4ddca00201241024622121b200141f0006a200341b0a7c00020121b2802101103000b200141d0006a41f280c400410910f201200141e0006a41c3b1c300411410f20120072001290060370000200620022900003700002004200829000037030020092005290300370300200a200b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b10810820014103360248200141053602ac02200141ed80c4003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210541002802a0fe4a210641002802acfe4a210220014180016a4202370300200141a4016a41fda4c200ad4280808080c00b8437020020014198016a419b9bc100ad4280808080c0028437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080b00a3702ac01200141003602a001200141a0b0c90036027420014103360270200641f4ddca00200241024622021b200141f0006a200541b0a7c00020021b2802101103000b200141d0006a41ed80c400410510f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a2206200141e0006a41086a2202290000370000200141b8026a41086a2204200141d0006a41086a2208290000370300200141b8026a41106a2209200141f0006a41106a2205290300370300200141b8026a41186a220a200141f0006a41186a220b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b10810820014103360248200141073602ac02200141e680c4003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210341002802a0fe4a211141002802acfe4a211220054202370300200141a4016a41a8a0c800ad4280808080e00b8437020020014198016a4192a0c800ad4280808080e0028437030020014190016a4202370300200141f0006a41086a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080a0093702ac01200141003602a001200141a0b0c90036027420014103360270201141f4ddca00201241024622121b200141f0006a200341b0a7c00020121b2802101103000b200141d0006a41e680c400410710f201200141e0006a41c3b1c300411410f20120072001290060370000200620022900003700002004200829000037030020092005290300370300200a200b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b1081082001410a3602ac02200141c0a4c8003602a80241002802a8fe4a210520014103360248024020054103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210541002802a0fe4a210641002802acfe4a210220014180016a4202370300200141a4016a41b19fc800ad4280808080900c8437020020014198016a41a09fc800ad428080808090028437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080c00f3702ac01200141003602a001200141a0b0c90036027420014103360270200641f4ddca00200241024622021b200141f0006a200541b0a7c00020021b2802101103000b200141d0006a41c0a4c800410a10f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a2206200141e0006a41086a2202290000370000200141b8026a41086a2204200141d0006a41086a2208290000370300200141b8026a41106a2209200141f0006a41106a2205290300370300200141b8026a41186a220a200141f0006a41186a220b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b1081082001410a3602ac02200141c8e8c6003602a80241002802a8fe4a210320014103360248024020034103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210341002802a0fe4a211141002802acfe4a211220054202370300200141a4016a41d2d4c600ad4280808080900c8437020020014198016a41c1d4c600ad428080808090028437030020014190016a4202370300200141f0006a41086a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080e0233702ac01200141003602a001200141a0b0c90036027420014103360270201141f4ddca00201241024622121b200141f0006a200341b0a7c00020121b2802101103000b200141d0006a41c8e8c600410a10f201200141e0006a41c3b1c300411410f20120072001290060370000200620022900003700002004200829000037030020092005290300370300200a200b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108200141103602ac02200141d680c4003602a8022001418080a410360248024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210541002802a0fe4a210641002802acfe4a210220014180016a4202370300200141a4016a41de9cc100ad4280808080f0098437020020014198016a41bd9cc100ad428080808090048437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080b0073702ac01200141003602a001200141a0b0c90036027420014103360270200641f4ddca00200241024622021b200141f0006a200541b0a7c00020021b2802101103000b200141d0006a41d680c400411010f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a2206200141e0006a41086a2202290000370000200141b8026a41086a2204200141d0006a41086a2208290000370300200141b8026a41106a2209200141f0006a41106a2205290300370300200141b8026a41186a220a200141f0006a41186a220b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108200141808004360248200141133602ac02200141c380c4003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210341002802a0fe4a211141002802acfe4a211220054202370300200141a4016a41d1c8c000ad4280808080a0098437020020014198016a41b4c8c000ad4280808080d0038437030020014190016a4202370300200141f0006a41086a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080f0083702ac01200141003602a001200141a0b0c90036027420014103360270201141f4ddca00201241024622121b200141f0006a200341b0a7c00020121b2802101103000b200c4280c2d72f7c2110200141d0006a41c380c400411310f201200141e0006a41c3b1c300411410f20120072001290060370000200620022900003700002004200829000037030020092005290300370300200a200b290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108200141808004360248200141133602ac02200141b080c4003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210541002802a0fe4a210641002802acfe4a210220014180016a4202370300200141a4016a41d1c8c000ad4280808080a0098437020020014198016a41b4c8c000ad4280808080d0038437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080f0083702ac01200141003602a001200141a0b0c90036027420014103360270200641f4ddca00200241024622021b200141f0006a200541b0a7c00020021b2802101103000b2010200c542106200141d0006a41b080c400411310f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a2202200141e0006a41086a2204290000370000200141b8026a41086a2208200141d0006a41086a2209290000370300200141b8026a41106a220a200141f0006a41106a2205290300370300200141b8026a41186a220b200141f0006a41186a2203290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108200141073602ac02200141a980c4003602a8022001418080a410360248024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a211141002802a0fe4a211241002802acfe4a210d20054202370300200141a4016a418addc800ad428080808090088437020020014198016a41eedcc800ad4280808080c0038437030020014190016a4202370300200141f0006a41086a41163602002001418c016a200141b8026a36020020014190b0c90036027c20014281808080b0123702ac01200141003602a001200141a0b0c90036027420014103360270201241f4ddca00200d410246220d1b200141f0006a201141b0a7c000200d1b2802101103000b427f201020061b210c200141d0006a41a980c400410710f201200141e0006a41c3b1c300411410f201200720012900603700002002200429000037000020082009290000370300200a2005290300370300200b2003290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108200141808004360248200141053602ac0220014190e1c8003602a802024041002802a8fe4a4103490d00200141c4026a411e360200200141043602bc022001200141c8006a3602c0022001200141a8026a3602b80241002802a4fe4a210541002802a0fe4a210641002802acfe4a210220014180016a4202370300200141a4016a4185dcc800ad4280808080900d8437020020014198016a41f1dbc800ad4280808080c0028437030020014190016a4202370300200141f8006a41163602002001418c016a200141b8026a36020020014190b0c90036027c2001428180808080053702ac01200141003602a001200141a0b0c90036027420014103360270200641f4ddca00200241024622021b200141f0006a200541b0a7c00020021b2802101103000b200141d0006a4190e1c800410510f201200141e0006a41c3b1c300411410f20120072001290060370000200741086a200141e0006a41086a290000370000200141b8026a41086a200141d0006a41086a290000370300200141b8026a41106a200141f0006a41106a290300370300200141b8026a41186a200141f0006a41186a290300370300200120012900503703b802200141b8026a20012f014820012d004a20012d004b108108427f200c427f1080082210428094ebdc037c221420142010541b7c22102010200c541b210c200141f0006a21020b2000280200200041106a200141286a410110a9062000280200210920014188016a22054200370300200141f0006a41106a22074200370300200141f0006a41086a2206420037030020014200370370200141d0006a41c380c400411310f2012006200141d0006a41086a220429000037030020012001290050370370200141e0006a41c4a8c800410c10f2012005200141e0006a41086a220829000037030020072001290060370300200141106a2002412010f5012001280214210a2001280210210b20054200370300200742003703002006420037030020014200370370200141d0006a41c380c400411310f2012006200429000037030020012001290050370370200141e0006a41c4a8c800410c10f201200520082900003703002007200129006037030020014100200a4100200b1b220a417f6a220b200b200a4b1b3602b80220024120200141b8026a410410a30220054200370300200742003703002006420037030020014200370370200141d0006a41b080c400411310f2012006200429000037030020012001290050370370200141e0006a41c4a8c800410c10f2012005200829000037030020072001290060370300200141086a2002412010f501200128020c210a2001280208210b20054200370300200742003703002006420037030020014200370370200141d0006a41b080c400411310f2012006200429000037030020012001290050370370200141e0006a41c4a8c800410c10f201200520082900003703002007200129006037030020014100200a4100200b1b2205417f6a2207200720054b1b3602b80220024120200141b8026a410410a30220091087082110200141f0006a10fb03427f427f200c427f20104280e59af7007c221420142010541b7c22102010200c541b220c20012903707c22102010200c541b10d20941004100108d0620012802282106024020012802302205450d00200541246c21072006210503400240024002400240024020052d00000e050400010204030b2005410c6a280200450d03200541086a28020010390c030b2005410c6a280200450d02200541086a28020010390c020b2005410c6a280200450d01200541086a28020010390c010b200541086a280200450d00200541046a28020010390b200541246a21052007415c6a22070d000b0b0240200128022c2205450d00200541246c450d00200610390b200141e0026a24000b0400100b0bae4c06067f087e027f017e037f057e23004180296b22022400200220013602f81d200241306a200241f81d6a10d205200228023821032002280230210420022802342105200241f81d6a200141d80810c30a1a200241e8106a200241f81d6a108e0420022d00e810210120022f00e910210620022d00eb102107200241d0086a200241e8106a41047241940810c30a1a024002400240024002400240024002400240024002400240024020014101460d00200241c0006a200241d0086a41046a41900810c30a1a200241286a41a1bfc900411010f501200228022c210120022802282106200220033602f010200220053602ec10200220043602e810200241f81d6a2001410020061b10eb0220022802f81d220120022802801e200241e8106a10c704024020022802fc1d450d00200110390b02402005450d00200410390b20024180196a20024190016a10a006200241e8106a200241c0006a41900810c30a1a024002400240024002400240024020022903881122084202520d0020022903801920022d008819200310bb04220141ff01714102470d06200241f81d6a41186a4200370300200241981e6a4200370300200241a01e6a4200370300200242003703c81d200242003703801e200242003703f81d200242003703881e200242003703a81e20022802b811417f6a0e09010a0a0a0a0a0a02040a0b200241881c6a41186a200241c0006a41186a290300370300200241881c6a41106a200241c0006a41106a290300370300200241881c6a41086a200241c0006a41086a290300370300200220022903403703881c200241b0116a2903002109200241a8116a290300210a200241a0116a2802002101200229039011210b200241b81c6a41186a22054200370300200241b81c6a41106a22044200370300200241b81c6a41086a22064200370300200242003703b81c200241c81b6a41b9fec300410610f2012006200241c81b6a41086a2207290000370300200220022900c81b3703b81c200241c81b6a41b0eec900410610f20120052007290000370300200420022900c81b370300200241206a200241b81c6a412010f501024020084201520d00200b4200510d080b200241b81c6a200241881c6a10dd02200241f81d6a20022802b81c220420022802c01c10e1020240024020022903f81d4201510d0020024188096a420037030020024180096a4200370300200241f8086a4200370300200241f0086a4200370300200241e8086a4200370300200241e0086a4200370300200241d0086a41086a420037030041002105200241c81b6a41086a4100360200200242003703d008200242003703c81b0c010b200241d0086a41386a200241b81e6a290300370300200241d0086a41306a200241f81d6a41386a290300370300200241d0086a41286a200241f81d6a41306a290300370300200241d0086a41206a200241f81d6a41286a290300370300200241d0086a41186a200241f81d6a41206a290300370300200241d0086a41106a200241f81d6a41186a290300370300200241d0086a41086a200241f81d6a41106a290300370300200241c81b6a41086a200241cc1e6a280200360200200220022903801e3703d008200220022902c41e3703c81b200241c01e6a28020021050b024020022802bc1c450d00200410390b024020052001470d00200241f81d6a41386a200241d0086a41386a290300370300200241f81d6a41306a200241d0086a41306a290300370300200241f81d6a41286a200241d0086a41286a290300370300200241f81d6a41206a200241d0086a41206a290300370300200241f81d6a41186a200241d0086a41186a290300370300200241f81d6a41106a200241d0086a41106a290300370300200241f81d6a41086a200241d0086a41086a290300370300200220022903d0083703f81d2002200141016a3602b81e200241c41e6a200241c81b6a41086a280200360200200220022903c81b3702bc1e200241b81c6a200241881c6a10dd0220022802b81c220120022802c01c200241f81d6a10a208024020022802bc1c450d00200110390b418012210120022d00881922054102460d0b200229038019220b2005200310bb04220141ff01714102470d0b200241f81d6a2003200b200a200920022d0089194100472005108b054200210b4200210c4200210d024020022903f81d4201520d00427f427f200241881e6a290300220d200241981e6a2903007c20022903801e220c200241901e6a2903007c220e200c542201ad7c220c2001200c200d54200c200d511b22011b220d200241a81e6a2903007c427f200e20011b220c200241a01e6a2903007c220e200c542201ad7c220c2001200c200d54200c200d511b22011b210d427f200e20011b210c0b02400240200c20022903b01e220e84200d200241b81e6a290300220f848450450d000c010b200241f81d6a200241881c6a427f200c200e7c220b200b200c542201200d200f7c2001ad7c220b200d54200b200d511b22011b427f200b20011b41014111200a200984501b410010a30620022802f81d4101460d0a200241881e6a290300210d20022903801e210c4201210b0b200241b81c6a41086a200241881c6a41086a2201290300220e370300200241c81d6a41186a200241881c6a41186a2205290300220f370300200241c81d6a41086a200e370300200241f81c6a41186a2204200f370300200241f81c6a41106a2206200241881c6a41106a2207290300370300200241f81c6a41086a2210200e370300200220022903881c3703f81c200241e81b6a41186a2004290300370300200241e81b6a41106a2006290300370300200241e81b6a41086a2010290300370300200220022903f81c3703e81b200241e81a6a41186a2005290300370300200241e81a6a41106a2007290300370300200241e81a6a41086a2001290300370300200220022903881c3703e81a0c0d0b418006418004200520014b1b21010c0a0b4100210141002105200241c0116a2802004102470d03200241d8116a200241c4116a10a50622014180feff077141087621050c010b4100210141002105200241c0116a2802004102470d02200241d8116a200241c4116a10a60622014180feff077141087621050b200141ff01714102470d010c060b200241d0086a200241bc116a10a706024020022d00d0084101460d00200241fc086a2802002107200241f8086a2802002104200241f4086a2802002110200241ec086a2802002106200241e8086a28020021110240200241f0086a2802002201450d002001410c6c21052011210103400240200141046a280200450d00200128020010390b2001410c6a2101200541746a22050d000b0b02402006450d002006410c6c450d00201110390b02402007450d002007410c6c21052010210103400240200141046a280200450d00200128020010390b2001410c6a2101200541746a22050d000b0b2004450d062004410c6c450d06201010390c060b20022d00d10822014102460d0520022f01d20821050b2005410874200141ff017172210120022903a81e500d062002200241b01e6a3602d008200241d0086a10a4060c060b200241c81d6a41186a200241d0086a41186a290200370300200241c81d6a41106a200241d0086a41106a2902003703000c050b2000200620074110747222013b0001200041013a0000200041036a20014110763a00002005450d0a200410390c0a0b41e0d7ca00411941fcd7ca001035000b200241b81c6a41086a200241d0086a41086a290300370300200241b81c6a41106a200241d0086a41106a29030037030041800221010c010b200241e81b6a41086a200241f81d6a41106a220141086a290300370300200241e81b6a41106a200141106a290300370300200241e81b6a41186a200141186a290300370300200220012903003703e81b200241f81d6a41086a2903002109200241b81e6a290300210d200241b01e6a290300210c20022903f81d210a20022903a81e210b0c020b200241f81c6a41186a200241c81d6a41186a290300370300200241f81c6a41106a200241c81d6a41106a2903003703000b200241b8116a1094050c010b200241a81a6a41186a2201200241e81a6a41186a290300370300200241a81a6a41106a2205200241e81a6a41106a290300370300200241a81a6a41086a2206200241e81a6a41086a290300370300200220022903e81a3703a81a200241c81a6a41186a200241e81b6a41186a290300370300200241c81a6a41106a200241e81b6a41106a290300370300200241c81a6a41086a200241e81b6a41086a290300370300200220022903e81b3703c81a200241d0086a200241b8116a41c00710c30a1a41022104024020084202510d00200241f81d6a41186a2001290300370300200241f81d6a41106a2005290300370300200241f81d6a41086a2006290300370300200220022903a81a3703f81d410121040b200241c81d6a41186a200241f81d6a41186a290300370300200241c81d6a41106a200241f81d6a41106a290300370300200241c81d6a41086a200241f81d6a41086a290300370300200220022903f81d3703c81d411010382205450d05200541ac81c40036020c200541013602082005428180808010370200411010382201450d052001419481c40036020c20014101360208200142818080801037020020052005280200417f6a2206360200024020060d002005280208200528020c2802001102000240200528020c280204450d00200528020810390b200541046a22062006280200417f6a220636020020060d00200510390b024002402001280208200241d0086a200128020c28020c1101000d00200241801b6a41003a0000200241881b6a41023a000020012001280200417f6a2205360200200242003703f01a42012108200242013703e81a024020050d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22052005280200417f6a220536020020050d00200110390b200241d0086a10e2030c010b200241f81d6a200241d0086a41c00710c30a1a200241c21c6a200241d01d6a290300370100200241ca1c6a200241d81d6a290300370100200241d21c6a200241e01d6a290300370100200241d81c6a200241e61d6a290100370100200220043a00b91c200241003a00b81c200220022903c81d3701ba1c200220013602e01c200241e81a6a200241f81d6a200241b81c6a10e30320022903e81a21080b200241e81a6a41106a290300210f200241e81a6a41186a2d0000210420022903f01a210e20024190096a200d37030020024188096a2206200c370300200241d0086a41186a200241c81a6a41086a290300370300200241f0086a200241c81a6a41106a290300370300200241f8086a200241c81a6a41186a290300370300200220093703d8082002200a3703d008200220022903c81a3703e0082002200b37038009024002402008500d00200e4202510d00200241a01b6a200241901b6a2903003e02002002200241881b6a2903003703981b0c010b200241083a00981b0b024020022d00881922054102470d0020022d00981b41ff01714108460d002002200241981b6a3602c81d024041002802a8fe4a450d002002411f3602bc1c2002200241c81d6a3602b81c41002802a4fe4a210141002802a0fe4a210541002802acfe4a2104200241881e6a4201370300200241ac1e6a4186a3c200ad4280808080900e84370200200241a01e6a41e0a2c200ad4280808080e00484370300200241981e6a4201370300200241801e6a410f360200200241941e6a200241b81c6a360200200241d8a2c2003602841e20024281808080b01f3702b41e200241003602a81e200241c4bfc9003602fc1d200241013602f81d200541f4ddca00200441024622041b200241f81d6a200141b0a7c00020041b280210110300200229038009210b0b4180102101200b500d01200220063602f81d200241f81d6a10a4060c010b200241d0086a41106a21012002290380192108420021120240200e4201520d002008200f580d0042002008200f7d220920092008561b2109200241b81c6a41186a22134200370300200241b81c6a41106a22064200370300200241b81c6a41086a22074200370300200242003703b81c200241c81b6a41b9fec300410610f2012007200241c81b6a41086a2210290000370300200220022900c81b3703b81c200241c81b6a4184edc900410b10f20120132010290000370300200620022900c81b370300200241f81d6a200241b81c6a10fa03200220022903801e420020022903f81d42015122111b3703c81d2002200241f81d6a41106a2214290300420020111b3703f81c2002200241f81d6a41186a2215290300420020111b3703881c200241881c6a211102400240024020054103710e03010002010b200241f81c6a21110c010b200241c81d6a21110b201142002011290300220a20097d22092009200a561b370300201520022903881c370300201420022903f81c370300200220022903c81d3703801e200242013703f81d201342003703002006420037030020074200370300200242003703b81c200241c81b6a41b9fec300410610f20120072010290000370300200220022900c81b3703b81c200241c81b6a4184edc900410b10f201200641086a2010290000370000200620022900c81b370000200241b81c6a200241f81d6a41086a10a10820024190096a290300210d200241d0086a41086a2903002109200229038809210c20022903d008210a200229038009210b0b200241c81b6a41186a200141186a290000370300200241c81b6a41106a200141106a290000370300200241c81b6a41086a200141086a290000370300200220012900003703c81b200241f81d6a20032008200f200f2008561b2008200e4201511b200a200920022d008919410146200441ff0171410146722005108b0542002108024020022903f81d4201520d00427f427f200241f81d6a41106a2903002208200241981e6a2903007c20022903801e220e200241f81d6a41186a2903007c220f200e542201ad7c220e2001200e200854200e2008511b22011b2208200241a81e6a2903007c427f200f20011b220e200241a01e6a2903007c220f200e542201ad7c220e2001200e200854200e2008511b22011b2108427f200f20011b21120b200b4201520d034200210e02400240200c427f201220022903b01e7c220b200b20125422012008200241b81e6a2903007c2001ad7c220b200854200b2008511b22011b221658200d427f200b20011b220b58200d200b511b450d004200210f0c010b200241b81c6a200241c81b6a10dd02200241f81d6a20022802b81c220120022802c01c10e1024200211742002118420021194200211a4200210e4200210f4200211242002108024020022903f81d4201520d00200241b81e6a2903002118200241b01e6a2903002117200241a81e6a290300211a200241a01e6a2903002119200241981e6a290300210f200241901e6a290300210e200241881e6a290300210820022903801e21120b024020022802bc1c450d00200110390b0240024002400240024020122019200e84842008201a200f848484500d00200241881c6a21010c010b200241881c6a210120172018844200520d00200241d41d6a410b360200200241d01d6a41a8abc400360200200241063a00ce1d20024183083b01cc1d200241013602c81d0c010b200241b01c6a2018370300200241a01c6a201a370300200220173703a81c200220193703981c2002200e3703881c2002200f3703901c024020124200200c20167d22192019200c56200d200b7d200c201654ad7d220b200d56200b200d511b22051b22197c2216201254220420084200200b20051b221a7c2004ad7c220b200854200b2008511b4101470d0020024187023b01cc1d200241013602c81d0c010b42002117200141106a210502400240427f2016200e7c220820082016542204200b200f7c2004ad7c2208200b542008200b511b22041b221242ffc7afa02556427f200820041b220842005220085022041b0d002016200e84200b200f848422175021032017420052ad21170c010b200241f81d6a41186a200541186a290300370300200241f81d6a41106a200541106a290300370300200241f81d6a41086a200541086a290300370300200220052903003703f81d410121030b2001200e370300200520022903f81d3703002001200f370308200541086a200241f81d6a41086a290300370300200541106a200241f81d6a41106a290300370300200541186a200241f81d6a41186a290300370300200241f01c6a201a370300200241b81c6a41286a2008370300200241b81c6a41206a22052012370300200241b81c6a41106a200b370300200220193703e81c200220163703c01c200220173703d01c200242003703b81c02400240201242ffc7afa02556200842005220041b0d002002200241c81b6a3602f81d200241c81b6a200241f81d6a10e00241ff017122064103460d0020060e03030001030b200241f81c6a41286a200141286a290300370300200241f81c6a41206a200141206a290300370300200241f81c6a41186a200141186a290300370300200241f81c6a41106a200141106a290300370300200241f81c6a41086a200141086a290300370300200220012903003703f81c200241a81d6a200241c81b6a10dd02200241f81d6a20022802a81d220120022802b01d220510e1020240024020022903f81d4201510d00200241c01d6a4200370300200242003703b81d0c010b200241c01d6a200241c81e6a2903003703002002200241c01e6a2903003703b81d0b4200210e02400240201242ffc7afa02556200842005220041b0d00200241a01e6a4200370300200241981e6a4200370300200241901e6a4200370300200241881e6a4200370300200241801e6a4200370300200242003703f81d4200210b0c010b200241f81d6a41286a200241f81c6a41286a290300370300200241f81d6a41206a200241f81c6a41206a290300370300200241f81d6a41186a200241f81c6a41186a290300370300200241f81d6a41106a200241f81c6a41106a290300370300200241f81d6a41086a200241f81c6a41086a290300370300200220022903f81c3703f81d2016210e0b200241c81d6a41286a200241f81d6a41286a22042903002208370300200241c81d6a41206a200241f81d6a41206a2203290300220f370300200241c81d6a41186a200241f81d6a41186a22062903002212370300200241c81d6a41106a200241f81d6a41106a22072903002216370300200241c81d6a41086a200241f81d6a41086a22102903002219370300200220022903f81d221a3703c81d2007200b3703002006201a3703002003201937030020042016370300200241a81e6a2012370300200241f81d6a41386a200f370300200241b81e6a20083703002002200e3703801e200241c01e6a20022903b81d370300200241c81e6a200241b81d6a41086a290300370300200242013703f81d20012005201010e202024020022802ac1d450d00200110390b200241b81c6a41106a2903002112200241b81c6a41286a2903002119200241b81c6a41386a290300210f20022903c01c211620022903d81c211a20022903e81c210e20022903b81c210820022903d01c210b0c030b024020030d00200220053602f81d200241f81d6a10a4060b20022903e81c200241f01c6a29030010f8040b4200210e4200210f0c040b200241f01c6a290300210f200241e01c6a2903002119200241c81c6a290300211220022903e81c210e20022903d81c211a20022903c01c211620022903d01c210b20022903b81c21080b024020084201520d00200241b01e6a2012370300200241a81e6a2016370300200241811e6a20022903c81b370000200241f81d6a41086a41003a0000200241991e6a200241e01b6a290300370000200241911e6a200241d81b6a290300370000200241891e6a200241c81b6a41086a290300370000200241023a00f81d200241f81d6a10fc010b02400240200b50450d00420021170c010b200241f81d6a41186a200241c81b6a41186a290300370300200241f81d6a41106a200241c81b6a41106a290300370300200241f81d6a41086a200241c81b6a41086a290300370300200220022903c81b3703f81d420121170b200241e81b6a41186a200241f81d6a41186a22012903002208370300200241e81b6a41106a200241f81d6a41106a2205290300220b370300200241e81b6a41086a200241f81d6a41086a2903002212370300200220022903f81d22163703e81b200241a81e6a2019370300200241a01e6a2204201a370300200520123703002001200b370300200241981e6a2008370300200220173703f81d200220163703801e200241f81d6a10ec0720022903f81d500d00200220043602b81c200241b81c6a10a4060b200e200c542205200f200d54200f200d5122011b0d014200210b42002108200e200c56200f200d5620011b450d02200e200c7d200f200d7d2005ad7d10f80441800221010b200241c0196a41086a200241f4196a41086a290200370300200241c0196a41106a200241f4196a41106a290200370300200241c0196a41186a200241f4196a41186a290200370300200241c0196a41206a200241f4196a41206a290200370300200241c0196a41286a200241f4196a41286a290200370300200241c0196a41306a200241f4196a41306a280200360200200220022902f4193703c019200041036a20014110763a0000200020013b0001200041013a00000c030b200d200f7d200c200e54ad7d2108200c200e7d210b0b2002427f2008200b200a200b200b200a56200820095620082009511b22011b220c54220520082009200820011b220d542008200d511b22011b22093703801e2002427f200b20011b220a3703f81d0240200c200b200c7d84200d2008200d7d2005ad7d84844200520d002002200241f81d6a3602b81c200241b81c6a10a4060c010b200241b81c6a10be04200241f81d6a10be04200241106a200241f81d6a200a200910930802400240200a2002290310220b582009200241106a41086a290300220858200920085122011b0d00200241d81d6a200920087d200a200b54ad7d370300200242013703c81d2002200a200b7d3703d01d2002200241c81d6a41086a3602f81c200241f81c6a10a4060c010b200241d81d6a200820097d200b200a54ad7d220d3703002002200b200a7d220c3703d01d2002200b200a56200820095620011bad4201863703c81d200b200a58200820095820011b0d00200c200d10f8040b200241b01e6a2009370300200241a81e6a200a370300200241991e6a200241d01c6a290300370000200241911e6a200241c81c6a290300370000200241891e6a200241b81c6a41086a290300370000200241811e6a20022903b81c370000200241f81d6a41086a41043a0000200241023a00f81d200241f81d6a10fc010b200241f4196a41246a200241e81a6a41206a290300370200200241f4196a411c6a200241e81a6a41186a290300370200200241f4196a41146a200241e81a6a41106a29030037020041082101200241f4196a410c6a200241e81a6a41086a290300370200200241f4196a412c6a200241e81a6a41286a290300370200200220022903e81a3702f819200241c0196a41206a200241f4196a41206a290200370300200241c0196a41186a200241f4196a41186a290200370300200241c0196a41106a200241f4196a41106a290200370300200241c0196a41086a200241f4196a41086a290200370300200241c0196a41306a200241f4196a41306a280200360200200241c0196a41286a200241f4196a41286a290200370300200220022902f4193703c01920024190196a41286a200241c0196a412c6a29020037030020024190196a41206a2205200241c0196a41246a29020037030020024190196a41186a200241c0196a411c6a29020037030020024190196a41106a2204200241c0196a41146a29020037030020024190196a41086a2203200241c0196a410c6a290200370300200220022902c4193703901920022903801922082004290300220920092008561b200820032903004201511b21082002290388192109024002402002290390194201510d002008210a20092108410021040c010b200220024190196a41086a3602f419024041002802a8fe4a4105490d00200241b81c6a41186a22054200370300200241b81c6a41106a22044200370300200241b81c6a41086a22034200370300200242003703b81c200241c81b6a41b9fec300410610f2012003200241c81b6a41086a2206290000370300200220022900c81b3703b81c200241c81b6a41b0eec900410610f20120052006290000370300200420022900c81b370300200241086a200241b81c6a412010f501200241f4106a4120360200200241213602ec102002200228020c410020022802081b3602d0082002200241f4196a3602f0102002200241d0086a3602e81041002802a4fe4a210541002802a0fe4a210441002802acfe4a2103200241f81d6a41106a4202370300200241ac1e6a41fcb2c900ad4280808080d00b84370200200241a01e6a41d3bfc900ad4280808080c00184370300200241f81d6a41206a4202370300200241f81d6a41086a410f360200200241941e6a200241e8106a360200200241b4bfc9003602841e20024281808080c0ba013702b41e200241003602a81e200241c4bfc9003602fc1d200241053602f81d200441f4ddca00200341024622031b200241f81d6a200541b0a7c00020031b28021011030020022802f41941186a21050b2005290204210a20052802002105410121040b200241811e6a20022f00d0083b0000200241f81d6a41286a20022903e810370300200241f81d6a41206a2009370300200241f81d6a41186a2008370300200241f81d6a41106a200a370300200241f81d6a410c6a2005360200200241f81d6a41086a20043a0000200241831e6a200241d2086a2d00003a0000200241f81d6a41306a200241e8106a41086a290300370300200241b01e6a200241e8106a41106a290300370300200241b81e6a200241e8106a41186a290300370300200241c01e6a200241e8106a41206a290300370300200241003a00f81d200241f81d6a10fc01200241a1bfc900411010f5012002200228020441016a410120022802001b22053602f81d41a1bfc9004110200241f81d6a410410a30241002005108d0602402002290390194201520d002002290398194202510d00200220022900b1193703f81d2002200241b8196a2800003600ff1d200241b0196a2d000021010b200041003a0000200041046a20013a0000200041056a20022903f81d3700002000410c6a20022800ff1d3600000b20024180296a24000f0b1030000bea0201057f230041306b22022400200241186a4200370300200241106a22034200370300200241086a420037030020024200370300200241b9fec300410610f20120034198f2c900410e10f2014100210420024100360228200242013703204101210341002105410121060240024002400240024020000e03000102040b200241206a4100410110810120022802202204200228022822036a41003a00002002200341016a22033602280240200228022420036b41034b0d00200241206a2003410410810120022802202104200228022821030b200420036a2001360000200341046a2105200228022021030c020b200241206a4100410110810120022802202203200228022822046a41013a0000200441016a21050c010b200241206a4100410110810120022802202203200228022822046a41023a0000200441016a21050b20032106200228022421040b200241202006200510a30202402004450d00200310390b200241306a24000bd23604057f047e097f0a7e230041d00c6b22012400200141e0006a41186a22024200370300200141e0006a41106a22034200370300200141e0006a41086a2204420037030020014200370360200141d0006a41b9fec300410610f2012004200141d0006a41086a220529000037030020012001290050370360200141d0006a4184edc900410b10f2012002200529000037030020032001290050370300200141c8016a200141e0006a10fa0320012903c8012106200141c8016a41106a2205290300210720012903d0012108200141c8016a41186a22022903002109200141c8016a10fb03024020012903d001427f427f20084200200642015122041b22062007420020041b7c220720072006541b22062009420020041b7c220720072006541b580d00420010d2090b2002420037030020054200370300200141c8016a41086a22044200370300200142003703c80120014190016a41a98aca00410b10f201200420014190016a41086a220a29000037030020012001290090013703c80120014190016a41d48cca00411610f2012002200a290000370300200520012900900137030020014190016a200141c8016a109b0802400240200128029001220a450d00200141c8016a412010fd0120012902940121060c010b41002802ccdd4a210a420021060b02402006422088a72202450d00200141c8016a41086a200a2002417f6a2204411c6c6a2202410c6a290200370300200141d8016a220b200241146a280200360200200120022902043703c801200642ffffffff0f832004ad4220868421062002280200450d0020022802182104200141e0006a41086a200241086a2802003602002001200229020037036020014190016a41086a200b280200360200200120012903d001370390012004200141e0006a20014190016a10ff080b02402006422088a72202450d002002411c6c2104200a210203400240200241046a28020041ffffff3f71450d00200228020010390b0240200241106a28020041ffffff3f71450d002002410c6a28020010390b2002411c6a2102200441646a22040d000b0b02402006a72202450d002002411c6c450d00200a10390b200141e0016a4200370300200141d8016a4200370300200141c8016a41086a22024200370300200142003703c80120014190016a41a98aca00410b10f201200220014190016a41086a220429000037030020012001290090013703c80120014190016a41f48bca00410e10f201200541086a2004290000370000200520012900900137000020014190016a200141c8016a412010e40202402001280290012202450d000240200128029401450d00200210390b200141c8016a412010fd010b200141e0016a22024200370300200141d8016a22044200370300200141c8016a41086a22054200370300200142003703c80120014190016a41ea86c200410c10f201200520014190016a41086a220a29000037030020012001290090013703c80120014190016a41d887c200410810f2012002200a290000370300200420012900900137030020014190016a200141c8016a412010e402024002400240024002400240024002402001280290012202450d000240200128029401450d00200210390b200141c8016a412010fd01200141e0016a22044200370300200141d8016a22024200370300200141c8016a41086a22054200370300200142003703c801200141e0006a41caf8c500410f10f2012005200141e0006a41086a220a290000370300200120012900603703c801200141e0006a41d0f9c500410d10f2012004200a29000037030020022001290060370300200141203602b4012001200141c8016a3602b001200141d0006a200141c8016a412010e402024002402001280250220b0d00410221040c010b2001280254210c02400240200141d0006a41086a28020022044104490d002004417c714104460d00200b28000021052001200441786a360284012001200b41086a36028001200b280004210a200141c8006a20014180016a10ad0120012802480d0020014190016a20014180016a200128024c10b401200128029001220d450d00200128029401210e0240200128028401220f450d0020014198016a280200211041002104024020012802800122112d00000e020300010b200f417f6a4104490d002001201141056a3602800120112800012112410121040c020b200e450d00200e41286c450d00200d10390b200142003702642001410028029cde4a3602602001410c3602bc012001200141b0016a3602b8012001200141e0006a3602c401200141a4016a41013602002001420137029401200141e4b4c400360290012001200141b8016a3602a001200141c4016a41fc86ca0020014190016a103b1a2001280260200128026810e70202402001280264450d00200128026010390b410221040b200c450d00200b10390b024020044102460d00200141a8016a2012360200200141a0016a20103602002001419c016a200e360200200120043602a4012001200d360298012001200a36029401200120053602900120014198016a210b024020052000470d00024020044101460d00200141e0006a200b10ce02200141d8016a200a360200200141d4016a200141e8006a280200360200200141003602c801200120012903603702cc01200141c8016a10e3080c010b200141d0016a200b10ce02200141dc016a200a360200200120123602cc01200141013602c801200141c8016a10e3080b02402001280294012001280290016a2000470d00200141a0016a28020041286c4105722204417f4c0d03200410382205450d07200541013a0000200120043602cc01200120053602c801200141013602d0012001280298012104200141c8016a20014190016a41106a280200220510d20120042005200141c8016a10d00141ddf9c500411420012802c801220420012802d00110a302024020012802cc01450d00200410390b200141c8016a41106a2205200b41086a280200360200200141c8016a41086a2204200b290200370300200141003602cc01200141053a00c801200141c8016a10fc01200141e0016a42003703002005420037030020044200370300200142003703c801200141e0006a41caf8c500410f10f2012004200141e0006a41086a2205290000370300200120012900603703c801200141e0006a41d0f9c500410d10f201200241086a200529000037000020022001290060370000200141c8016a412010fd010c010b200128029c012204450d00200441286c450d0020012802980110390b200141e0016a4200370300200141d8016a4200370300200141c8016a41086a22044200370300200142003703c801200141e0006a41caf8c500410f10f2012004200141e0006a41086a2205290000370300200120012900603703c801200141e0006a41f1f9c500410510f201200241086a20052900003700002002200129006037000020014120360284012001200141c8016a36028001200141d0006a200141c8016a412010e40220012802502204450d042001280254210a024002400240200141d0006a41086a280200220b450d004100210502400240024020042d00000e0405000102030b200b417f6a4108490d0220042900012106410121050c040b410221050c020b200b417f6a4108490d0020042900012106410321050c020b200142003702642001410028029cde4a3602602001410c3602bc01200120014180016a3602b8012001200141e0006a3602b001200141a4016a41013602002001420137029401200141e4b4c400360290012001200141b8016a3602a001200141b0016a41fc86ca0020014190016a103b1a2001280260200128026810e70202402001280264450d00200128026010390b410421050b0b0240200a450d00200410390b2005417f6a0e03030402040b41c2b3c100413041f4b3c1001035000b1034000b2006422088a7210402402006a722052000470d00200141043602c801200120043602cc01200141c8016a10e3080b200420056a2000470d01200141e0016a4200370300200141d8016a4200370300200141c8016a41086a22044200370300200142003703c801200141e0006a41caf8c500410f10f2012004200141e0006a41086a2205290000370300200120012900603703c801200141e0006a41f1f9c500410510f201200241086a20052900003700002002200129006037000020014190016a41002001200110f408200141c8016a4120200128029001220220012802980110a3020240200128029401450d00200210390b200141023602cc01200141053a00c801200141c8016a10fc010c010b2006422088a7210402402006a722052000470d00200141033602c801200120043602cc01200141c8016a10e3080b200420056a2000470d00200141e0016a4200370300200141d8016a4200370300200141c8016a41086a22044200370300200142003703c801200141e0006a41caf8c500410f10f2012004200141e0006a41086a2205290000370300200120012900603703c801200141e0006a41f1f9c500410510f201200241086a20052900003700002002200129006037000020014190016a41022001200110f408200141c8016a4120200128029001220220012802980110a3020240200128029401450d00200210390b200141013602cc01200141053a00c801200141c8016a10fc010b200141e0006a41186a22044200370300200141e0006a41106a22024200370300200141e0006a41086a2205420037030020014200370360200141d0006a41edfec300410a10f2012005200141d0006a41086a220a29000037030020012001290050370360200141d0006a41c7a6c800410610f2012004200a29000037030020022001290050370300200141e0006a412010fd0120044200370300200242003703002005420037030020014200370360200141d0006a41edfec300410a10f2012005200a29000037030020012001290050370360200141d0006a41d8a6c800410c10f2012004200a29000037030020022001290050370300200141e0006a412010fd01200141c8016a41dbfec300411210f201200141c8016a41186a4200370000200142003700d801200141c8016a41106a220441ac99c300411110f201200141306a200141c8016a108d05200141306a41106a29030021132001290338211420012802302105200141c8016a4201420042808090bbbad6adf00d420042c0843d4200108e050240024020012802c8014101470d00427f2109427f21070c010b20042903002107200141c8016a41086a29030021090b200141c8016a10fb03200141c8016a41086a200141f8016a200141f0016a290300501b2903002106200141f8006a4200370300200141e0006a41106a4200370300200141e0006a41086a220a420037030020014200370360200141d0006a41b9fec300410610f201200a200141d0006a41086a220029000037030020012001290050370360200141d0006a4184edc900410b10f201200241086a20002900003700002002200129005037000020014190016a200141e0006a10fa032001290398012108200129039001211520014190016a4203420042808090bbbad6adf00d420042a08d064200108e0520062008420020154201511b220820082006561b2108024002402001280290014101470d00427f2115427f21160c010b20014190016a41106a290300211620014190016a41086a29030021150b200141206a200642808090bbbad6adf00d8222174200428080e4ceceb58bbc03420010c20a200141106a2001290320200141206a41086a29030042808090bbbad6adf00d420010c10a20014190016a2008200642808090bbbad6adf00d80428080e4ceceb58bbc037e20174202882001290310428080c89d9deb96f80656200141106a41086a29030022174200522017501bad7c7c2217200820175622021b22182017200820021b22197d42002018201954ad7d42808090bbbad6adf00d42002006420120064201561b4200108e05024002402001280290014101470d00427f2106427f21180c010b200141a0016a290300211820014190016a41086a29030021060b20014190016a200620182006201842808090bbbad6adf00d4200108e05024002402001280290014101470d00427f211a427f211b0c010b200141a0016a290300211b20014198016a290300211a0b20014190016a201520162015201642808090bbbad6adf00d4200108e05024002402001280290014101470d00427f2119427f211c0c010b200141a0016a290300211c20014198016a29030021190b20014190016a2019201c42808090bbbad6adf00d4200428080a0f6f4acdbe01b4200108e052001280290014101460d012009201442808090bbbad6adf00d20051b221454210220072013420020051b22195121052007201954210a200141a0016a2200290300211c20014198016a220b290300211320014190016a201520162006201842808090bbbad6adf00d4200108e05024002402001280290014101470d00427f2118427f21160c010b20002903002116200b29030021180b2002200a20051b210220014190016a2013201c201a201b42808090bbbad6adf00d4200108e05024002402001280290014101470d00427f211c427f21130c010b200141a0016a290300211320014198016a290300211c0b2019200720021b21062014200920021b21150240024020082017540d00427f211720014190016a427f2018201c7c220820082018542202201620137c2002ad7c220820165420082016511b22021b427f200820021b2015200642808090bbbad6adf00d4200108e05024002402001280290014101470d00427f21080c010b200141a0016a290300210820014198016a29030021170b427f200620087c201520177c22162015542202ad7c22082002200820065420082006511b22021b22062007427f201620021b2208200956200620075620062007511b22021b21062008200920021b21070c010b20014190016a42002018201c7d22082008201856201620137d2018201c54ad7d220820165620082016511b22021b4200200820021b2015200642808090bbbad6adf00d4200108e05024002402001280290014101470d00427f2108427f21160c010b200141a0016a290300211620014198016a29030021080b4200200620167d2015200854ad7d2216201520087d2208201556201620065620162006511b22021b220620074200200820021b2208200956200620075620062007511b22021b21062008200920021b21070b200141c8016a41dbfec300411210f201200441086a420037000020044200370000200441ac99c300411110f20120012006370398012001200737039001200141c8016a412020014190016a411010a302200141f8006a4200370300200141e0006a41106a4200370300200141e0006a41086a2202420037030020014200370360200141d0006a41c3fec300410910f2012002200141d0006a41086a220429000037030020012001290050370360200141d0006a41aba8c800410910f201200341086a200429000037000020032001290050370000200141e0006a10c002220241ff01714102460d02200141e0006a412010fd012002410171450d02200141e0006a41186a4200370300200141e0006a41106a4200370300200141e0006a41086a2202420037030020014200370360200141d0006a41bffec300410410f2012002200141d0006a41086a220429000037030020012001290050370360200141d0006a41f7a7c800410b10f201200341086a200429000037000020032001290050370000200141c8016a200141e0006a10fa040240024020012d00c80122024102470d0020014190016a41186a200141e1016a29000037030020014190016a41106a200141d9016a29000037030020014190016a41086a200141d1016a290000370300200120012900c901370390010c010b200141e0006a412010fd0120014190016a41186a200141e1016a29000037030020014190016a41106a200141d9016a29000037030020014190016a41086a200141d1016a290000370300200120012900c901370390010240200241037122024103460d0020020e03010001010b200141f8006a4200370300200141f0006a4200370300200141e0006a41086a2202420037030020014200370360200141d0006a41bffec300410410f2012002200141d0006a41086a220429000037030020012001290050370360200141d0006a41ada6c800410c10f201200341086a200429000037000020032001290050370000200141086a200141e0006a412010f50141002104200141c8016a200128020c410020012802081b220010ea02200141e0006a20012802c801220a20012802d00110980802400240200128026022050d0020014200370284012001410028029cde4a220536028001410021020c010b20012902642106200120053602800120012006370284012006422088a721022006a721040b024020012802cc01450d00200a10390b02400240200241ff014b0d00200141e0006a41186a220b20014190016a41186a290300370300200141e0006a41106a221220014190016a41106a290300370300200141e0006a41086a220e20014190016a41086a2903003703002001200129039001370360024020022004470d0020014180016a200410fb062001280280012105200128028401210420012802880121020b200520024105746a220a2001290360370000200a41186a200b290300370000200a41106a2012290300370000200a41086a200e2903003700002001200241016a36028801200020014180016a10ed020c010b412010382202450d022002200129039001370000200241186a20014190016a41186a290300370000200241106a20014190016a41106a290300370000200241086a20014190016a41086a29030037000020014281808080103702cc01200120023602c801200041016a220a200141c8016a10ed0220021039200141e0006a41186a4200370300200141e0006a41106a4200370300200141e0006a41086a2202420037030020014200370360200141d0006a41bffec300410410f2012002200141d0006a41086a220029000037030020012001290050370360200141d0006a41ada6c800410c10f201200341086a2000290000370000200320012900503700002001200a3602c801200141e0006a4120200141c8016a410410a3020b200441ffffff3f71450d00200510390b200141f8006a22054200370300200141f0006a220a4200370300200141e0006a41086a2202420037030020014200370360200141d0006a41bffec300410410f2012002200141d0006a41086a220429000037030020012001290050370360200141d0006a4182a8c800411310f201200341086a2200200429000037000020032001290050370000200141e0006a412010fd0120054200370300200a42003703002002420037030020014200370360200141d0006a41bffec300410410f2012002200429000037030020012001290050370360200141d0006a41a3a8c800410810f2012000200429000037000020032001290050370000200141e0006a412010fd01200141d00c6a24000f0b1030000b10d309000b41a4edc600412b41d0edc6001035000b070010054101460b9f2603087f017e0c7f230041e0016b2201240020014188016a41186a2202420037030020014188016a41106a2203420037030020014188016a41086a220442003703002001420037038801200141a8016a41b9fec300410610f2012004200141a8016a41086a2205290000370300200120012900a80137038801200141a8016a4198f2c900410e10f20120022005290000370300200320012900a80137030020014188016a412010fd012002420037030020034200370300200442003703002001420037038801200141a8016a41b9fec300410610f20120042005290000370300200120012900a80137038801200141a8016a41b8edc900411010f20120022005290000370300200320012900a80137030020014188016a412010fd012002420037030020034200370300200442003703002001420037038801200141a8016a41b9fec300410610f20120042005290000370300200120012900a80137038801200141a8016a41b0eec900410610f20120022005290000370300200320012900a801370300200141106a20014188016a412010f50120012802142106200128021021072002420037030020034200370300200442003703002001420037038801200141a8016a41b9fec300410610f20120042005290000370300200120012900a80137038801200141a8016a41d0eec900410a10f20120022005290000370300200320012900a801370300200141a8016a20014188016a412010ab020240024020012d00a8014101460d00200141186a41186a4200370300200141186a41106a4200370300200141186a41086a4200370300200142003703180c010b200141186a41186a200141c1016a290000370300200141186a41106a200141b9016a290000370300200141186a41086a200141b1016a290000370300200120012900a9013703180b200141a0016a420037030020014198016a420037030020014188016a41086a220242003703002001420037038801200141a8016a41b9fec300410610f2012002200141a8016a41086a2204290000370300200120012900a80137038801200141a8016a41e4eec900410610f201200341086a2004290000370000200320012900a801370000200141a8016a20014188016a10bf040240024020012802a80122020d002001420037023c200141002802ccdd4a3602380c010b200120012902ac0137023c200120023602380b200141a0016a420037030020014198016a420037030020014188016a41086a220242003703002001420037038801200141a8016a41b9fec300410610f2012002200141a8016a41086a2204290000370300200120012900a80137038801200141a8016a41dcecc900410e10f201200341086a2004290000370000200320012900a801370000200141086a20014188016a412010f501200128020c210241002103024020012802084101470d0020014188016a412010fd01410121030b024002400240024002400240024002402002410020031b2208ad420c7e2209422088a70d002009a72202417f4c0d004104210302402002450d00200210382203450d030b2006410020071b210a4100210b200141003602502001200336024820012002410c6e220236024c024002400240200220084f0d00200141c8006a4100200810bd03200128024821032001280250210b0c010b2008450d010b2003200b410c6c6a210341002102410028029cde4a2107034020014188016a200210eb02200141a8016a2001280288012205200128029001220610ba020240024020012802a80122040d0042002109200721040c010b2005200610fd0120012902ac0121090b200241016a21020240200128028c01450d00200510390b20032004360200200341046a20093702002003410c6a210320082002470d000b200b20086a210b0b200141c8006a41086a200b360200200141a8016a41086a200b360200200120012903483703a80120014188016a200141a8016a10fc090240200a41e212490d00200141a8016a4100200a419f6d6a22032003200a4b1b10ef0220012802a801220320012802b00110fd0120012802ac01450d00200310390b200141e8006a10b80620012802702202450d072001200128026822032d00003a00ac01200141013602a80120024101460d07200120032d00013a00ad01200141023602a80120024102460d07200120032d00023a00ae01200141033602a80120024103460d07200120032d00033a00af01200141043602a80120024104460d07200141b0016a20032d00043a0000200141053602a80120024105460d07200141b1016a20032d00053a0000200141063602a80120024106460d07200141b2016a20032d00063a0000200141073602a80120024107460d07200141b3016a20032d00073a0000200141083602a80120024108460d07200141b4016a20032d00083a0000200141093602a80120024109460d07200141b5016a20032d00093a00002001410a3602a8012002410a460d07200141b6016a20032d000a3a00002001410b3602a8012002410b460d07200141b7016a20032d000b3a00002001410c3602a8012002410c460d07200141b8016a20032d000c3a00002001410d3602a8012002410d460d07200141b9016a20032d000d3a00002001410e3602a8012002410e460d07200141ba016a20032d000e3a00002001410f3602a8012002410f460d07200141bb016a20032d000f3a0000200141103602a80120024110460d07200141bc016a20032d00103a0000200141113602a80120024111460d07200141bd016a20032d00113a0000200141123602a80120024112460d07200141be016a20032d00123a0000200141133602a80120024113460d07200141bf016a20032d00133a0000200141143602a80120024114460d07200141c0016a20032d00143a0000200141153602a80120024115460d07200141c1016a20032d00153a0000200141163602a80120024116460d07200141c2016a20032d00163a0000200141173602a80120024117460d07200141c3016a20032d00173a0000200141183602a80120024118460d07200141c4016a20032d00183a0000200141193602a80120024119460d07200141c5016a20032d00193a00002001411a3602a8012002411a460d07200141c6016a20032d001a3a00002001411b3602a8012002411b460d07200141c7016a20032d001b3a00002001411c3602a8012002411c460d07200141c8016a20032d001c3a00002001411d3602a8012002411d460d07200141c9016a20032d001d3a00002001411e3602a8012002411e460d07200141ca016a20032d001e3a00002001411f3602a8012002411f470d010c070b1034000b200141cb016a20032d001f3a0000200141d8016a41026a2202200141b5016a2d00003a0000200141d4016a41026a2204200141bc016a2d00003a0000200120012f01ac013b01dc01200120012d00ae013a00de012001200141b3016a2f00003b01d8012001200141ba016a2f01003b01d401200141c4016a280200210b200141bd016a280000210c200141b6016a280100210d200141203602a801200141a8016a41206a280200210e20012800af01210f200141d0016a41026a200141c3016a2d000022053a0000200141e4006a41026a20012d00de013a0000200141e0006a41026a20022d00003a0000200141dc006a41026a20042d00003a00002001200141c1016a2f000022023b01d001200120012f01dc013b0164200120012f01d8013b0160200120012f01d4013b015c200141d8006a41026a20053a0000200120023b01580240200128026c450d00200310390b200141003602b001200142013703a801412010382203450d0020032001290318370000200341186a2205200141186a41186a290300370000200341106a2206200141186a41106a290300370000200341086a2208200141186a41086a290300370000200141a8016a4100412010810120012802a801220420012802b00122076a22022003290000370000200241086a2008290000370000200241106a2006290000370000200241186a200529000037000020012802ac01210220031039200141e8006a2004200741206a10fd0902402002450d00200410390b20012802682203450d03200141f0006a2802002202450d04200128026c2105200120032d00003a00ac01200141013602a80120024101460d04200120032d00013a00ad01200141023602a80120024102460d04200120032d00023a00ae01200141033602a80120024103460d04200120032d00033a00af01200141043602a80120024104460d04200141b0016a20032d00043a0000200141053602a80120024105460d04200141b1016a20032d00053a0000200141063602a80120024106460d04200141b2016a20032d00063a0000200141073602a80120024107460d04200141b3016a20032d00073a0000200141083602a80120024108460d04200141b4016a20032d00083a0000200141093602a80120024109460d04200141b5016a20032d00093a00002001410a3602a8012002410a460d04200141b6016a20032d000a3a00002001410b3602a8012002410b460d04200141b7016a20032d000b3a00002001410c3602a8012002410c460d04200141b8016a20032d000c3a00002001410d3602a8012002410d460d04200141b9016a20032d000d3a00002001410e3602a8012002410e460d04200141ba016a20032d000e3a00002001410f3602a8012002410f460d04200141bb016a20032d000f3a0000200141103602a80120024110460d04200141bc016a20032d00103a0000200141113602a80120024111460d04200141bd016a20032d00113a0000200141123602a80120024112460d04200141be016a20032d00123a0000200141133602a80120024113460d04200141bf016a20032d00133a0000200141143602a80120024114460d04200141c0016a20032d00143a0000200141153602a80120024115460d04200141c1016a20032d00153a0000200141163602a80120024116460d04200141c2016a20032d00163a0000200141173602a80120024117460d04200141c3016a20032d00173a0000200141183602a80120024118460d04200141c4016a20032d00183a0000200141193602a80120024119460d04200141c5016a20032d00193a00002001411a3602a8012002411a460d04200141c6016a20032d001a3a00002001411b3602a8012002411b460d04200141c7016a20032d001b3a00002001411c3602a8012002411c460d04200141c8016a20032d001c3a00002001411d3602a8012002411d460d04200141c9016a20032d001d3a00002001411e3602a8012002411e460d04200141ca016a20032d001e3a00002001411f3602a8012002411f460d04200141a8016a41236a20032d001f3a000020014180016a41026a2202200141b5016a2d00003a0000200141fc006a41026a2204200141bc016a2d00003a0000200120012f01ac013b018401200120012d00ae013a0086012001200141b3016a2f00003b0180012001200141ba016a2f01003b017c200141b6016a2801002108200141bd016a2800002107200141c4016a2802002110200141203602a801200141a8016a41206a280200211120012800af012106200141f8006a41026a2212200141c3016a2d00003a00002001200141c1016a2f00003b0178200141a8016a41026a221320012d0086013a0000200120012f0184013b01a801200120012f0180013b01dc01200120022d00003a00de01200141d8016a41026a221420042d00003a0000200120012f017c3b01d801200141d4016a41026a221520122d00003a0000200120012f01783b01d40120012802402204200128023c460d010c020b1030000b200141386a200410c504200128024021040b2001280238200441246c6a220241003a0000200220012f01a8013b000120022006360204200220012f01dc013b01082002200836000b200220012f01d8013b000f20022007360112200220012f01d4013b0116200241036a20132d00003a00002002410a6a20012d00de013a0000200241116a20142d00003a0000200241186a20152d00003a00002002201136001d20022010360019200220012f00d0013b0021200241236a200141d0016a41026a2d00003a00002001200441016a3602402005450d00200310390b2000200129038801370050200020012f01643b0030200041376a20012f01603b00002000413e6a20012f015c3b0000200041e8006a20014188016a41186a290300370000200041e0006a20014188016a41106a290300370000200041d8006a20014188016a41086a290300370000200041326a200141e4006a41026a2d00003a0000200041396a200141e0006a41026a2d00003a0000200041c0006a200141dc006a41026a2d00003a0000200041cc006a200e360000200041c8006a200b360000200041c1006a200c3600002000413a6a200d360000200041336a200f3600002000200a360200200041c7006a200141d8006a41026a2d00003a0000200041c5006a20012f01583b0000200041286a200141186a41186a290300370000200041206a200141186a41106a290300370000200041186a200141186a41086a290300370000200020012903183700102000410c6a200141386a41086a28020036020020002001290338370204200141e0016a24000f0b41fcbfc900412c200141a8016a41a8c0c90041c8c0c900103d000b41fcbfc900412c200141a8016a41a8c0c90041b8c0c900103d000bfe0501037f02400240024002400240024020012d00000e06010402030500010b200041046a42003702002000410028029cde4a3602002000410041011081012000280200200041086a220228020022036a41003a00002002200341016a360200200141046a2802002001410c6a280200200010d6010f0b200041046a42003702002000410028029cde4a3602002000410041011081012000280200200041086a220228020022036a41023a00002002200341016a360200200141016a200010ff020f0b200041046a220442003702002000410028029cde4a3602002000410041011081012000280200200041086a220328020022026a41043a00002003200241016a22023602000240200428020020026b41034b0d00200020024104108101200328020021020b200028020020026a20012800013600002003200241046a3602002001280208200141106a280200200010d6010f0b200041046a220442003702002000410028029cde4a3602002000410041011081012000280200200041086a220328020022026a41053a00002003200241016a22023602000240200428020020026b41034b0d00200020024104108101200328020021020b200028020020026a20012800013600002003200241046a3602002001280208200141106a280200200010d6010f0b200041046a220442003702002000410028029cde4a3602002000410041011081012000280200200041086a220328020022026a41063a00002003200241016a22023602000240200428020020026b41034b0d00200020024104108101200328020021020b200028020020026a20012800013600002003200241046a3602002001280208200141106a280200200010d6010f0b200041046a220442003702002000410028029cde4a3602002000410041011081012000280200200041086a220328020022026a41073a00002003200241016a2202360200200141046a2101024020042802002002470d00200020024101108101200328020021020b200028020020026a41003a00002003200241016a3602002001200010f6060b0e002001ad4220862000ad8410190b8f0201027f20014180feff07714108762102024002402001410171450d00411f210341abddca00210102400240200241ff01710e03000103000b41c100210341eadcca0021010c020b41c100210341a9dcca0021010c010b411f2103418adcca002101024002400240024002400240024002400240200241ff01710e0a00060102030405090708000b4120210341eadbca0021010c080b41272103418adbca0021010c070b4117210341f3daca0021010c060b41d4daca0021010c050b4126210341aedaca0021010c040b412a21034184daca0021010c030b4139210341b1dbca0021010c020b413b210341c9d9ca0021010c010b41d200210341f7d8ca0021010b20002003360204200020013602000ba90701057f230041d0026b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241e0016a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a20024280808080802037020c2002200136021c2002200041f4ddca0020011b3602182002200241186a360208200241e0016a200241086a10b903200241ec016a280200210420022802e801210520022802e401210020022802e001210620024180016a200241f0016a41e00010c30a1a02402000450d00200241206a20024180016a41e00010c30a1a0240024020022802082802040d0020024180016a200241206a41e00010c30a1a0c010b02402004450d00200441246c21012000210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d00200010390b410021000b2000450d00200241e0016a410c6a22032004360200200241e0016a41086a2005360200200220003602e401200220063602e001200241f0016a20024180016a41e00010c30a1a200241e0016a108a06024020032802002201450d0020022802e4012103200141246c210103400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b024020022802e8012203450d00200341246c450d0020022802e40110390b200241d0026a2400410035029cde4a0f0b2002412c6a411d360200200241f4016a4102360200200242023702e401200241f8f4c3003602e00120024104360224200241d4f5c3003602202002200241206a3602f0012002200241e0016a360228200241e0016a4188f5c3001043000bd81103037f017e057f230041306b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024002400240024020010d002002420037020c200241002802ccdd4a360208410810382203450d0320034110360204200341b6afc6003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d032003410e360204200341cfb4c9003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d032003410c360204200341ddb4c9003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d032003410e3602042003418db1c1003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d032003410a360204200341e2a3c8003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d032003410b360204200341cca2c2003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002200228021041016a36021020031039410810382203450d0320034118360204200341e1c9c2003602000240200228020c20022802102201470d00200241086a20014101109606200228021021010b200228020820014103746a20032902003702002002280210210420031039200441016a2203ad420c7e2205422088a70d042005a72206417f4c0d0420022802082107200228020c21084104210102402006450d00200610382201450d040b41002109200241003602102002200136020820022006410c6e220636020c024002400240200620034f0d00200241086a200310970620022802102109200228020821010c010b2003450d010b200720034103746a210a20012009410c6c6a21032009200441ffffffff01716a41016a210420072101034020012802002206450d01200341086a200141046a280200360200200341046a2006360200200341003602002003410c6a2103200941016a2109200141086a2201200a470d000b200421090b0240200841ffffffff0171450d00200710390b200228020c2107200228020821042002410036021020024201370308200241086a410041041081012002280208200228021022036a41edcad18b063600002002200341046a22033602100240200228020c2003470d00200241086a20034101108101200228021021030b200228020820036a410d3a00002002200341016a360210412a200241086a10830141c481c400412a200241086a1085010240200228020c20022802102203470d00200241086a20034101108101200228021021030b200228020820036a41043a00002002200341016a3602102009200241086a1083012009450d012009410c6c21092004210303400240024020032802004101470d00200341046a280200210a200341086a2802002201200241086a1083010240200228020c200228021022066b20014f0d00200241086a20062001108101200228021021060b200228020820066a200a200110c30a1a200620016a21010c010b200341046a280200210a200341086a2802002201200241086a1083010240200228020c200228021022066b20014f0d00200241086a20062001108101200228021021060b200228020820066a200a200110c30a1a200620016a21010b2003410c6a210320022001360210200941746a22090d000c030b0b2002412c6a411d3602002002411c6a41023602002002420237020c200241f8f4c30036020820024104360224200241ecf5c3003602202002200241206a3602182002200241086a360228200241086a4188f5c3001043000b200228021021010b200228020c210a2002280208210602402007450d002007410c6c450d00200410390b200141046a2203417f4c0d01024002400240024002402003450d00200310382209450d05200241003602102002200336020c20022009360208200141c000490d02200141808001490d034100210720014180808080044f0d0120014102744102722104410021070240200341034b0d00200241086a4100410410810120022802082109200228021021070b200920076a2004360000200741046a21030c040b2002410036021020024201370308200241086a4100410110810120022802082109200228021021070b200920076a41033a00002002200741016a22033602100240200228020c20036b41034b0d00200241086a20034104108101200228021021030b200228020820036a2001360000200341046a21030c020b200920014102743a0000410121030c010b20014102744101722104410021070240200341014b0d00200241086a4100410210810120022802082109200228021021070b200920076a20043b0000200741026a21030b200220033602100240200228020c20036b20014f0d00200241086a20032001108101200228021021030b2002280208220920036a2006200110c30a1a0240200a450d00200610390b200241306a2400200320016aad4220862009ad840f0b1030000b1034000bd40101027f230041206b220324000240200120026a22022001490d00200041046a280200220441017422012002200120024b1b22014104200141044b1b220141ffffffff01712001464102742102200141037421010240024020040d00200341003602100c010b200341186a410436020020032004410374360214200320002802003602100b200320012002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001410376360200200341206a24000f0b1034000bc70102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad420c7e2205422088a74541027421012005a721040240024020030d00200241003602100c010b200241186a410436020020022003410c6c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410c6e360200200241206a24000f0b1034000b860702027f027e230041a01a6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241c8116a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a20024280808080802037020c2002200136021c2002200041f4ddca0020011b3602182002200241186a360208200241c8116a200241086a10c103200241e0106a200241c8116a41e80010c30a1a20022903b0122104200241f8086a200241c8116a41f0006a41e80710c30a1a0240024020044203510d00200241206a200241e0106a41e80010c30a1a200241206a41f0006a200241f8086a41e80710c30a210320022004370388010240024020022802082802040d00200241f8086a200241206a41e80010c30a1a200241c8116a200341e80710c30a1a0c010b024020044202510d0020022d002041ff01714102470d002002280228450d00200228022410390b200241b8016a10d403420321040b20044203510d00200241e0106a200241f8086a41e80010c30a1a200241206a200241c8116a41e80710c30a1a200241c8116a200241e0106a41e80010c30a1a200220043703b012200241b8126a200241206a41e80710c30a1a200241f8086a200241c8116a108c064101410220022d00f80822014101461b220010382203450d01200241003602d011200220003602cc11200220033602c8110240024020014101470d00200341013a0000200241013602d01120022d00f90820022d00fa0820022d00fb08200241c8116a1099060c010b200341003a0000200241013602d011024020022d00fc084108460d00200341013a0001200241023602d01120022d00fc0820022d00fd0820022d00fe08200241c8116a10b9040c010b200341003a0001200241023602d0110b20023502d011210420023502c8112105200241a01a6a240020052004422086840f0b200241ec106a411d360200200241346a410236020020024202370224200241f8f4c300360220200241043602e410200241fcf5c3003602e0102002200241e0106a3602302002200241c8116a3602e810200241206a4188f5c3001043000b1030000bfa0801027f200341046a2802002104200341086a280200210502400240200041ff01714101460d00024020042005470d00200320054101108101200341086a28020021050b200328020020056a41003a0000200341086a200541016a22053602000240024002400240024002400240024002400240200141ff01710e0a000102030405060708090b0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41003a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41013a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41023a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41033a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41043a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41053a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41063a0000200341086a200541016a3602000f0b0240200341046a22012802002005470d00200320054101108101200341086a28020021050b200328020020056a41073a0000200341086a2200200541016a2205360200024020012802002005470d00200320054101108101200028020021050b200328020020056a20023a00002000200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41083a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41093a0000200341086a200541016a3602000f0b024020042005470d00200320054101108101200341086a28020021050b200328020020056a41013a0000200341086a200541016a2205360200024002400240200141ff01710e03000102030b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41003a0000200341086a200541016a3602000f0b0240200341046a2802002005470d00200320054101108101200341086a28020021050b200328020020056a41013a0000200341086a200541016a3602000f0b0240200341046a22012802002005470d00200320054101108101200341086a28020021050b200328020020056a41023a0000200341086a2200200541016a2205360200024020012802002005470d00200320054101108101200028020021050b200328020020056a20023a00002000200541016a3602000b0be80a02067f017e23004190016b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241106a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241086a41a1bfc900411010f501200228020c21040240200228020822054101470d0041a1bfc900411010fd010b200241286a22014200370300200241106a41106a22034200370300200241106a41086a220642003703002002420037031020024180016a41b9fec300410610f201200620024180016a41086a2207290000370300200220022900800137031020024180016a41dcecc900410e10f20120012007290000370300200320022900800137030020022004410020051b36028001200241106a412020024180016a410410a30241012003108d062001420037030020034200370300200642003703002002420037031020024180016a41b9fec300410610f20120062007290000370300200220022900800137031020024180016a41b0eec900410610f2012001200729000037030020032002290080013703002002200241106a412010f5012002280204410020022802001b108e06200241106a10900620024100360288012002420137038001200320024180016a10ff0202400240024002402002280210220341c000490d00200341808001490d012003418080808004490d0202402002280284012002280288012201470d0020024180016a2001410110810120022802880121010b200228028001220620016a41033a00002002200141016a220136028801024020022802840120016b41034b0d0020024180016a20014104108101200228028001210620022802880121010b200620016a20033600002002200141046a360288010c030b2003410274210102402002280284012002280288012203470d0020024180016a2003410110810120022802880121030b20022802800120036a20013a00002002200341016a360288010c020b20034102744101722101024020022802840120022802880122036b41014b0d0020024180016a2003410210810120022802880121030b20022802800120036a20013b00002002200341026a360288010c010b20034102744102722101024020022802840120022802880122036b41034b0d0020024180016a2003410410810120022802880121030b20022802800120036a20013600002002200341046a360288010b200241c0006a20024180016a10ff02200241e0006a20024180016a10ff02200241106a41047220024180016a109b0620023502880121082002280280012107200228021421060240200241106a410c6a2802002203450d00200341246c21012006210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b0240200241186a2802002203450d00200341246c450d00200610390b20024190016a240020084220862007ad840f0b2002418c016a411d360200200241246a410236020020024202370214200241f8f4c300360210200241043602840120024194f6c30036028001200220024180016a3602202002200241106a36028801200241106a4188f5c3001043000bb80101077f230041106b220224002000280200210320012000280208220010d2010240200041246c2204450d00200141086a22052802002100200141046a2106034020022003109106200228020021070240200628020020006b200228020822084f0d00200120002008108101200528020021000b200128020020006a2007200810c30a1a2005200020086a220036020002402002280204450d00200710390b200341246a21032004415c6a22040d000b0b200241106a24000bc33c06027f017e027f017e427f067e230041d00f6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241c8016a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a2002428080808080203702f4072002200136025c2002200041f4ddca0020011b3602582002200241d8006a3602f007200241c8016a200241f0076a10d0050240024020022802c8014101460d00200241e8096a41086a2203200241d4016a280200360200200220022902cc013703e80920022802f007280204450d01200241e8096a10d1050b200241f4096a411d360200200241dc016a4102360200200242023702cc01200241f8f4c3003602c801200241043602ec09200241acf6c3003602e8092002200241e8096a3602d8012002200241c8016a3602f009200241c8016a4188f5c3001043000b200241286a41086a20032802002203360200200220022903e8092204370328200241c8006a41086a20033602002002420037021c200241002802fcad493602182002200437034802400240200241c8006a41c8d1c60010f3052203450d00200328020841074b0d01200242f4d2b59bc7ae98b8303700c901200241013a00c80141d0d1c600412d200241c8016a4180d2c60041b8d3c600103d000b41a0d2c600412841c8d3c6001065000b20032802002900002104200241f0006a22014200370300200241e8006a22004200370300200241d8006a41086a2205420037030020024200370358200241c8016a41c3fec300410910f2012005200241c8016a41086a2203290000370300200220022900c801370358200241c8016a41a0a8c800410310f20120012003290000370300200020022900c801370300200241086a200241d8006a10c2042002280208210620022903102107200241186a410010c203200228021822082002280220220941d8086c6a200241f0076a41e80010c30a22034202370368200341a0016a2004200742b8177c42b81720061b220720042007561b370300200341023602980120032002290358370370200341f8006a200529030037030020034180016a200029030037030020034188016a200129030037030020034190016a200241f8006a290300370300200341c0016a200241e8096a41f00010c30a1a200341b0026a200241c8016a41a80610c30a1a2002200941016a220a36022002400240024002400240024002400240024002400240200241c8006a4184b4c10010f3052203450d002002200328020836025c20022003280200360258200241c8016a200241d8006a10e105024020022802c8012203450d0020022f01cc012101200241e8096a200241c8016a410672418e0110c30a1a200220013b01f407200220033602f007200241f0076a410672200241e8096a418e0110c30a1a20024180043b01b809411010382203450d05200341ac81c40036020c200341013602082003428180808010370200200220033602e009411010382201450d052001419481c40036020c20014101360208200142818080801037020020032003280200417f6a2200360200024020000d002003280208200328020c2802001102000240200328020c280204450d00200328020810390b200341046a22002000280200417f6a220036020020000d00200310390b200220013602e00920022802f807220bad42d0007e2204422088a70d062004a72200417f4c0d0620022802f00721030240024020000d00410421060c010b200010382206450d060b200220063602e8092002200041d0006e220c3602ec090240200041d000490d00200241c8016a41106a220141086a2109200c210503402000450d012005450d09200241c8016a200310b505200120032900103700002009200341186a290000370000200141106a200341206a290000370000200141186a200341286a290000370000200141206a200341306a290000370000200141286a200341386a290000370000200141306a200341c0006a290000370000200141386a200341c8006a2900003700002002200328020c3602d4012006200241c8016a41d00010c30a41d0006a2106200041b07f6a2100200341d0006a21032005417f6a22050d000b0b2002200b3602f00920024184086a280200220dad42f4027e2204422088a70d062004a72201417f4c0d0620022802fc0721030240024020010d004104210e0c010b20011038220e450d060b41002100200241e8096a41146a4100360200200241e8096a41106a200141f4026e220f3602002002200e3602f4090240200141f402490d002003200d41f4026c6a2110200241c8016a41a4026a2111200241cc036a2112200241ac036a2113200241ec026a2114200241cc026a2115200241ac026a21162002418c026a2117200241ec016a2118200241c8016a4104722119200241c8016a41e8026a211a200241d8006a41386a211b200241d8006a41306a211c200241d8006a41286a211d200241d8006a41206a211e200f211f034020002120201020032201460d012020200f460d0b200241f00e6a41086a22212001410c6a290000370300200241f00e6a41106a2222200141146a290000370300200241f00e6a41186a22232001411c6a290000370300200241d00e6a41086a22242001412c6a290200370300200241d00e6a41106a2225200141346a290200370300200241d00e6a41186a22262001413c6a290200370300200220012900043703f00e200220012902243703d00e20012802002127200241b00e6a41186a2228200141dc006a290000370300200241b00e6a41106a2229200141d4006a290000370300200241b00e6a41086a222a200141cc006a290000370300200241900e6a41086a222b200141ec006a290000370300200241900e6a41106a222c200141f4006a290000370300200241900e6a41186a222d200141fc006a290000370300200220012900443703b00e200220012900643703900e200241f00d6a41186a222e2001419c016a290000370300200241f00d6a41106a222f20014194016a290000370300200241f00d6a41086a22302001418c016a29000037030020022001290084013703f00d201b200141dc016a290000370300201c200141d4016a290000370300201d200141cc016a290000370300201e200141c4016a290000370300200241d8006a41186a2231200141bc016a290000370300200241d8006a41106a2232200141b4016a290000370300200241d8006a41086a2233200141ac016a290000370300200220012900a401370358200241d00d6a41186a2234200141fc016a290000370300200241d00d6a41106a2235200141f4016a290000370300200241d00d6a41086a2236200141ec016a290000370300200220012900e4013703d00d200241b00d6a41186a22372001419c026a290000370300200241b00d6a41106a223820014194026a290000370300200241b00d6a41086a22392001418c026a29000037030020022001290084023703b00d200241d00b6a200141a4026a10a70320012802b802223a41ffffffff0071203a470d08203a410474223b417f4c0d084100213c02400240203b0d004104213d4100213e0c010b20012802b0022100203b1038223d450d0841002105203b410476223e21090340203b2005460d01200028020c2203417f4c0d0a200028020421062000280200210b0240024020030d004101210c0c010b20031038220c450d0a0b200041106a2100200c2006200310c30a210c203d20056a2206200b3602002006410c6a2003360200200641086a2003360200200641046a200c360200200541106a21052009417f6a22090d000b0b024020012802bc022203450d0020012802c402223b417f4c0d0902400240203b0d004101213c0c010b203b1038223c450d090b203c2003203b10c30a1a0b20012802d002220c417f4c0d0820012802c802210302400240200c0d00410121000c010b200c10382200450d080b20002003200c10c30a213f200241800b6a41086a2240200241d00b6a41086a2241280200360200200241900d6a41086a22422021290300370300200241900d6a41106a22432022290300370300200241900d6a41186a22222023290300370300200241f00c6a41086a22232024290300370300200241f00c6a41106a22242025290300370300200241f00c6a41186a22252026290300370300200220022903d00b3703800b200220022903f00e3703900d200220022903d00e3703f00c20012802d802212620012802d4022144200241d00c6a41186a22452028290300370300200241d00c6a41106a22282029290300370300200241d00c6a41086a2229202a290300370300200241b00c6a41086a222a202b290300370300200241b00c6a41106a222b202c290300370300200241b00c6a41186a222c202d290300370300200241900c6a41086a222d2030290300370300200241900c6a41106a2230202f290300370300200241900c6a41186a222f202e290300370300200220022903b00e3703d00c200220022903900e3703b00c200220022903f00d3703900c200241d00b6a41386a222e201b290300370300200241d00b6a41306a2246201c290300370300200241d00b6a41286a2247201d290300370300200241d00b6a41206a2248201e290300370300200241d00b6a41186a22492031290300370300200241d00b6a41106a2231203229030037030020412033290300370300200241b00b6a41186a22322034290300370300200241b00b6a41106a22332035290300370300200241b00b6a41086a22342036290300370300200220022903583703d00b200220022903d00d3703b00b200241900b6a41186a22352037290300370300200241900b6a41106a22362038290300370300200241900b6a41086a22372039290300370300200220022903b00d3703900b20012802e4022238ad42c1007e2204422088a70d082004a72209417f4c0d080240024020090d004101210b410021210c010b20012802dc02210320091038220b450d08200941c1006e2121200941c100490d004100210520212106034020092005460d012006450d0c200341396a2900002104200341316a2900002107200341296a290000214a200341216a290000214b200341196a290000214c200341116a290000214d200341096a290000214e2003290001214f200b20056a220020032d00003a0000200041016a204f370000200041096a204e370000200041116a204d370000200041196a204c370000200041216a204b370000200041296a204a370000200041316a2007370000200041396a2004370000200541c1006a2105200341c1006a21032006417f6a22060d000b0b202041016a2100200141f4026a2103201a200141e8026a10b505201920022903900d370200201941086a2042290300370200201941106a2043290300370200201941186a2022290300370200201820022903f00c370200201841086a2023290300370200201841106a2024290300370200201841186a2025290300370200201720022903d00c370200201741086a2029290300370200201741106a2028290300370200201741186a2045290300370200200220273602c801201641186a202c290300370200201641106a202b290300370200201641086a202a290300370200201620022903b00c370200201520022903900c370200201541086a202d290300370200201541106a2030290300370200201541186a202f290300370200201420022903d00b370200201441086a2041290300370200201441106a2031290300370200201441186a2049290300370200201441206a2048290300370200201441286a2047290300370200201441306a2046290300370200201441386a202e290300370200201341186a2032290300370200201341106a2033290300370200201341086a2034290300370200201320022903b00b370200201241186a2035290300370200201241106a2036290300370200201241086a2037290300370200201220022903900b370200201141086a2040280200360200201120022903800b370200200220383602ac04200220213602a8042002200b3602a404200220263602a0042002204436029c042002200c360298042002200c360294042002203f360290042002203b36028c042002203b360288042002203c360284042002203a360280042002203e3602fc032002203d3602f803200e202041f4026c6a200241c8016a41f40210c30a1a201f417f6a221f0d000b0b2002200d3602fc0920024190086a2802002211ad42307e2204422088a70d062004a72203417f4c0d0620022802880821090240024020030d004104211c0c010b20031038221c450d060b200241840a6a200341306e221d3602002002201c3602800a024020034130490d002009201141306c6a211e41002101200241d8006a41106a2120200241d8006a41086a213a20024180026a210b201d213c034020012118201e2009460d012018201d460d0d200241d8006a41186a2241200941286a2900003703002020200941206a290000370300203a200941186a29000037030020022009290010370358200928020c2221ad42c8007e2204422088a70d082004a72216417f4c0d082009280200211b0240024020160d0041042117410021190c010b20092802042106201610382217450d08201641c8006e2119201641c800490d00410021012019210003402006210320162001460d012000450d0e2000417f6a2100410421050240024002400240024020032d00040e050001020304000b410021050c030b410121050c020b410221050c010b410321050b200341c8006a2106200241c8016a41086a220c2003410d6a290000370300200241c8016a41106a223b200341156a290000370300200241c8016a41186a223d2003411d6a290000370300200241c8016a41206a2214200341256a290000370300200241c8016a41286a22122003412d6a290000370300200241c8016a41306a2213200341356a290000370300200b2003413d6a2900003703002003290005210420032802002115201720016a220341046a20053a000020032015360200200220043703c801200341056a20022903c8013700002003410d6a200c290300370000200341156a203b2903003700002003411d6a203d290300370000200341256a20142903003700002003412d6a2012290300370000200341356a20132903003700002003413d6a200b290300370000200141c8006a210120000d000b0b201841016a2101200941306a2109200241c8016a41186a20412903002204370300200241c8016a41106a20202903002207370300200241c8016a41086a203a290300224a37030020022002290358224b3703c801201c201841306c6a2203202136020c20032019360208200320173602042003201b3602002003204b370210200341186a204a370200200341206a2007370200200341286a2004370200203c417f6a223c0d000b0b200220113602880a200241c8016a41286a200241bc086a290200370300200241c8016a41206a200241b4086a290200370300200241c8016a41186a200241ac086a29020037030020024180026a200241cc086a29020037030020024188026a200241d4086a29020037030020024190026a200241dc086a2902003703002002200241a4086a2902003703d8012002200241c4086a2902003703f8012002280294082103200241a0026a200241ec086a290200370300200241a8026a200241f4086a290200370300200241b0026a200241fc086a2902003703002002200241e4086a29020037039802200241c8016a410472200241f0076a41286a10cd02200220033602c801200241e8096a41246a200241c8016a41f00010c30a1a20024188096a200241b8096a200241e8096a10e5032002290388094201520d02200241e8096a41206a20024188096a41286a290300370300200241e8096a41186a20024188096a41206a290300370300200241e8096a41106a20024188096a41186a290300370300200241e8096a41086a20024188096a41106a29030037030020022002290390093703e809024041002802a8fe4a4102490d002002412236025c2002200241e8096a36025841002802a4fe4a210341002802a0fe4a210141002802acfe4a2100200241c8016a41106a4201370300200241fc016a41d89dc100ad4280808080800a84370200200241f0016a41ad9dc100ad4280808080b00584370300200241e8016a4201370300200241c8016a41086a411b360200200241e4016a200241d8006a36020020024194b4c1003602d40120024281808080a01e37028402200241003602f8012002419cb4c1003602cc01200241023602c801200141f4ddca00200041024622001b200241c8016a200341b0a7c00020001b2802101103000b200241d8006a20024194086a41f00010c30a1a024020022802f8072201450d0020022802f0072103200141d0006c21000340200328020021010240200341086a22052802002206450d00200110390b2003200136020020052006360200200341d0006a2103200041b07f6a22000d000b0b024020022802f4072203450d00200341d0006c450d0020022802f00710390b02402002280284082201450d0020022802fc072103200141f4026c210103402003109f03200341f4026a21032001418c7d6a22010d000b0b024020024180086a2802002203450d00200341f4026c450d0020022802fc0710390b02402002280290082203450d00200341306c210120022802880841086a21030340024020032802002200450d00200041c8006c450d002003417c6a28020010390b200341306a2103200141506a22010d000b0b41002802ccdd4a210102402002418c086a2802002203450d00200341306c450d0020022802880810390b410021032002280220210a4100210541002106410021092001210b4100210c4100213b200121000c030b41002802a8fe4a4102490d0041002802a4fe4a210341002802a0fe4a210141002802acfe4a2100200241e4016a41f4ddca00360200200241d8016a4201370300200241fc016a41d89dc100ad4280808080800a84370200200241f0016a41ad9dc100ad4280808080b00584370300200241e8016a4200370300200241d0016a411b3602002002418cb4c1003602d40120024281808080901c37028402200241003602f8012002419cb4c1003602cc01200241023602c801200141f4ddca00200041024622001b200241c8016a200341b0a7c00020001b2802101103002002280220210a0b200228021821080c020b2002418c086a280200210c20024180086a2802002106200228029008213b200228028808210b200228028408210920022802fc07210120022802f807210520022802f407210320022802f0072100200241d8006a200241f0076a41246a41f00010c30a1a2000450d010b200241e8096a200241d8006a41f00010c30a1a2005ad4220862003ad8421040240200a200228021c470d00200241186a200a10c2032002280220210a0b20022802182208200a41d8086c6a200241f0076a41e80010c30a22034202370368200341bc016a203b360200200341b8016a200c360200200341b4016a200b360200200341b0016a2009360200200341ac016a2006360200200341a8016a2001360200200341a0016a20043703002003419c016a20003602002003410e36029801200320022903d00b370370200341f8006a200241d80b6a29030037030020034180016a200241e00b6a29030037030020034188016a200241e80b6a29030037030020034190016a200241f00b6a290300370300200341c0016a200241e8096a41f00010c30a1a200341b0026a200241c8016a41a80610c30a1a2002200a41016a220a3602200b200241c8006a10d105200a41d8086c22064104722203417f4c0d01200310382201450d00200241003602f009200220033602ec09200220013602e809200241e8096a200a10d20102400240200a0d0020022802f009210320022802e80921090c010b20022802f0092103200821000340200220003602f007200241c8016a200241f0076a10d20520022802c8012105024020022802ec0920036b20022802d00122014f0d00200241e8096a2003200110810120022802f00921030b20022802e809220920036a2005200110c30a1a2002200320016a22033602f009024020022802cc01450d00200510390b200041d8086a2100200641a8776a22060d000b200a450d00200a41d8086c210020082105034002402005220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010390b200141d8086a210520014198016a10c601200041a8776a22000d000b0b0240200228021c2201450d00200141d8086c450d00200810390b200241d00f6a24002003ad4220862009ad840f0b1030000b1034000b200c200c41c4cfca00103c000b2021202141c4cfca00103c000b200f200f41c4cfca00103c000b2019201941c4cfca00103c000b201d201d41c4cfca00103c000bcc1b05087f017e067f027e027f230041f0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241286a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a200242808080808020370214200220013602242002200041f4ddca0020011b3602202002200241206a36021020024180036a200241106a10b90302402002280284032201450d002002418c036a280200210420022802880321052002280280032103200241a0026a20024190036a41e00010c30a1a20024180036a200241106a10c003024020022802800322060d0002402004450d00200441246c21002001210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032000415c6a22000d000b0b2005450d01200541246c450d01200110390c010b20024180036a41086a28020021072002280284032108200241c0016a200241a0026a41e00010c30a1a20024180036a200241106a10d00502402002280280034101470d0002402004450d00200441246c21002001210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032000415c6a22000d000b0b02402005450d00200541246c450d00200110390b02402007450d00200741d8086c210120062100034002402000220341e8006a2903004202510d0020032d00004102470d00200341086a280200450d00200341046a28020010390b200341d8086a210020034198016a10c601200141a8776a22010d000b0b2008450d01200841d8086c450d01200610390c010b200241b0016a41086a220020024180036a410c6a28020036020020022002290284033703b001200241386a200241c0016a41e00010c30a1a200241a0016a20073602002002419c016a2008360200200241286a410c6a2004360200200241286a41086a2005360200200241ac016a20002802003602002002200636029801200220022903b0013702a4012002200136022c20022003360228200241a4016a21090240024020022802102802040d00200241a0026a41086a200941086a280200360200200220092902003703a0020c010b02402004450d00200441246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200228022c10390b02402007450d00200741d8086c210120062100034002402000220341e8006a2903004202510d0020032d00004102470d00200341086a280200450d00200341046a28020010390b200341d8086a210020034198016a10c601200141a8776a22010d000b0b02402008450d00200841d8086c450d00200610390b200910d105410021010b2001450d00200241106a41086a200241a0026a41086a2802002203360200200220022903a002220a370310200241b0016a41086a20033602002002200a3703b001200241013b01ac02200242003702a40202400240024020070d00200241b0016a210b0c010b200641a0016a2103200741d8086c41a8776a2100200241286a41106a210c200241286a410472210d200241c0006a210e0340200241b0016a210b200341486a2903004202520d014101210f024002400240200341786a221028020022094102470d002003290300210a02400240200241b0016a41c8d1c60010f3052209450d00200928020841074b0d01200242f4d2b59bc7ae98b830370029200241013a002841d0d1c600412d200241286a4180d2c6004190d2c600103d000b41a0d2c600412841c8d2c6001065000b20092802002900002111200e4200370300200c4200370300200241286a41086a220f42003703002002420037032820024180036a41c3fec300410910f201200f20024180036a41086a2209290000370300200220022900800337032820024180036a41a0a8c800410310f201200c41086a2009290000370000200c2002290080033700002002200241286a10c204200229030842b8177c42b81720022802001b211202400240024002400240200a201142b0ea017c56220f0d00200a20125a0d044100211320022d00ad02450d01410221030c020b024020022d00ad02450d00410221030c020b200241a0026a10d105200242003702a402410121130b200241286a200241a0026a10f40520022802284101470d01410021030b200242f4d2b59bc7ae98b830370029200220033a002841d5aec9004122200241286a41f8aec9004184aec900103d000b20024180036a41106a200d41106a2902003703002009200d41086a2902003703002002200d29020037038003200241003602c801200242013703c001200241c0016a4100410110810120022802c001211420022802c801210902400240200f0d00201420096a41003a00002002200941016a22093602c801024020022802c40120096b41074b0d00200241c0016a2009410810810120022802c001211420022802c80121090b201420096a2012370000200941086a21090c010b201420096a41013a0000200941016a21090b200220093602c80120024180036a200241c0016a10a704200220133a00ad02200241003a00ac02200f0d020b201028020021094100210f0b02402009410e470d002000450d040c020b200f417f732000410047710d010c030b20024180036a41086a200241a0026a41086a290300370300200220022903a00237038003200241b0016a210b0c030b200041a8776a2100200341d8086a21030c000b0b20024180036a41086a200241a0026a41086a290300370300200220022903a002370380030b200b10d10502402004450d00200441246c21002001210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032000415c6a22000d000b0b02402005450d00200541246c450d00200110390b02402007450d00200741d8086c210120062100034002402000220341e8006a2903004202510d0020032d00004102470d00200341086a280200450d00200341046a28020010390b200341d8086a210020034198016a10c601200141a8776a22010d000b0b02402008450d00200841d8086c450d00200610390b41002103200241003602a802200242013703a00220022d008c032101200241a0026a4100410110810120022802a002220020022802a80222096a20013a00002002200941016a22013602a80220022d008d032109024020022802a402220f2001470d00200241a0026a200f410110810120022802a002210020022802a80221010b200020016a20093a00002002200141016a3602a802200241a0026a200228028803220910d2010240024020022802840322010d0041002101410021090c010b200228028003210020012103034020012f018a01210f2000450d012000417f6a21002001200f4102746a41e4016a280200210120032802e40121030c000b0b2002413c6a200f360200200241386a2001360200200242003703302002200336022c2002410036022802402009450d00034020022009417f6a360240200241286a410020031b220f280200210002400240200f2802082209200f28020422012f018a014f0d00200121030c010b03400240200128020022030d00410021030c020b200041016a210020012f018801210920032101200920032f018a014f0d000b0b024002402000450d00200941027420036a41e8016a280200210102402000417f6a2200450d00034020012802e40121012000417f6a22000d000b0b410021000c010b200941016a2100200321010b200f2001360204200f4100360200200f200036020820032009410c6c6a220141046a2100200320094103746a418c016a2109024020022802a40220022802a80222036b41074b0d00200241a0026a2003410810810120022802a80221030b20022802a00220036a20092900003700002002200341086a3602a80220002802002001410c6a280200200241a0026a10d60120022802402209450d01200228022c21030c000b0b20023502a802210a20023502a002211120024180036a10d105200241f0036a24002011200a422086840f0b2002418c036a411d3602002002413c6a41023602002002420237022c200241f8f4c3003602282002410436028403200241c8f6c30036028003200220024180036a3602382002200241286a36028803200241286a4188f5c3001043000bba5605037f027e087f077e057f23004190366b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241a0086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b41002104410020033602a8fe4a2002428080808080203702cc352002200136029c352002200041f4ddca0020011b220336029835200220024198356a3602c83502400240024002402001450d0020022001417f6a36029c352002200341016a36029835024020032d00000e03030200010b410221040c020b420321050c020b410121040b200241f0116a200241c8356a10c10342032105024020022903d81222064203520d000c010b200241cf1a6a200241f0116a41e80010c30a1a200241f02a6a200241e0126a41e80710c30a1a200241386a200241c81a6a41ef0010c30a1a200621050b20024180116a200241386a41ef0010c30a1a200241d8226a200241f02a6a41e80710c30a1a02400240024002400240024002400240024020054203510d00200241a0086a41017220024180116a41ef0010c30a210120024198096a200241d8226a41e80710c30a210320024190096a2005370300200220043a00a0080240024020022802c8352802040d00200241f02a6a200141ef0010c30a1a200241f0116a200341e80710c30a1a0c010b024020054202510d0020022d00a8084102470d00200241b0086a280200450d0020022802ac0810390b200241c0096a109f06420321050b20054203510d00200241a0086a200241f02a6a41ef0010c30a1a20024180116a200241a7086a41e80010c30a1a200241386a200241f0116a41e80710c30a1a200241f0116a20024180116a41e80010c30a1a200220053703d812200241e0126a200241386a41e80710c30a1a2002200241f0116a3602f02a200241a0086a200241f02a6a10d20520022802a8082107024020022802a408450d0020022802a00810390b200241a0086a200241f0116a41d80810c30a1a200241f02a6a200241a0086a108e0420022d00f02a210120022f00f12a210320022d00f32a2100200241d8226a200241f02a6a41047241940810c30a1a024020014101460d00200241c81a6a200241d8226a41046a41900810c30a1a20024188336a200241981b6a220810a006024020022903e81a4202520d00200241f02a6a41206a22034200370300200241f02a6a41146a22094200370200200241013a00982b200241002802ccdd4a220136028c2b200220013602802b2002427f3703f82a200242003703f02a200241a0086a41206a220a4200370300200241a0086a41146a22004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241a8336a200241f02a6a200241a0086a10a106200241f02a6a41286a220b200241a8336a41286a2903003703002003200241a8336a41206a290300370300200241f02a6a41186a220c200241a8336a41186a290300370300200241f02a6a41106a220d200241a8336a41106a290300370300200241f02a6a41086a220e200241a8336a41086a290300370300200220022903a8333703f02a200a420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241d8336a200241f02a6a200241a0086a10a106200b200241d8336a41286a2903003703002003200241d8336a41206a290300370300200c200241d8336a41186a290300370300200d200241d8336a41106a290300370300200e200241d8336a41086a290300370300200220022903d8333703f02a200a420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a00820024188346a200241f02a6a200241a0086a10a106200b20024188346a41286a290300370300200320024188346a41206a290300370300200c20024188346a41186a290300370300200d20024188346a41106a290300370300200e20024188346a41086a29030037030020022002290388343703f02a200a420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241b8346a200241f02a6a200241a0086a10a106200b200241b8346a41286a2903003703002003200241b8346a41206a290300370300200c200241b8346a41186a290300370300200d200241b8346a41106a290300370300200e200241b8346a41086a290300370300200220022903b8343703f02a200a420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241e8346a200241f02a6a200241a0086a10a106200241c8356a41286a200241e8346a41286a290300370300200241c8356a41206a200241e8346a41206a290300370300200241c8356a41186a220a200241e8346a41186a290300370300200241c8356a41106a200241e8346a41106a290300370300200241c8356a41086a200241e8346a41086a290300370300200220022903e8343703c835200241a0086a20022903883320022d009033200710bd04200e200241a0086a410c6a290200370300200d2000290200370300200c200241a0086a411c6a2902003703002003200241a0086a41246a290200370300200b200241a0086a412c6a290200370300200241a02b6a200241d4086a280200360200200220022902a4083703f02a20022d00a00822074101470d0320022d00a308210120022f00a1082103200241013a00a0082002200320014110747222003b00a108200220004110763a00a30820022802d835210b0240200a2802002201450d002001410c6c2103200b210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200241dc356a2802002201450d002001410c6c450d00200b10390b20022802e435210a0240200241ec356a2802002201450d002001410c6c2103200a210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b200241e8356a2802002201450d062001410c6c450d06200a10390c060b200241f02a6a41206a22034200370300200241f02a6a41146a4200370200200241013a00982b200241002802ccdd4a220136028c2b200220013602802b427f21052002427f3703f82a200242003703f02a200241a0086a41206a22044200370300200241a0086a41146a22004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241a8336a200241f02a6a200241a0086a10a106200241f02a6a41286a220a200241a8336a41286a2903003703002003200241a8336a41206a290300370300200241f02a6a41186a220b200241a8336a41186a290300370300200241f02a6a41106a220c200241a8336a41106a290300370300200241f02a6a41086a220d200241a8336a41086a290300370300200220022903a8333703f02a2004420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a008200241d8336a200241f02a6a200241a0086a10a106200a200241d8336a41286a2903003703002003200241d8336a41206a290300370300200b200241d8336a41186a290300370300200c200241d8336a41106a290300370300200d200241d8336a41086a290300370300200220022903d8333703f02a2004420037030020004200370200200241013a00c808200220013602bc08200220013602b0082002427f3703a808200242003703a00820024188346a200241f02a6a200241a0086a10a106200a20024188346a41286a290300370300200320024188346a41206a290300370300200b20024188346a41186a290300370300200c20024188346a41106a290300370300200d20024188346a41086a29030037030020022002290388343703f02a200241a0086a41186a220a4200370300200241a0086a41106a220b4200370300200241a0086a41086a220c4200370300200242003703a008200241d8226a41b9fec300410610f201200c200241d8226a41086a2203290000370300200220022900d8223703a008200241d8226a41b0eec900410610f201200a2003290000370300200b20022900d822370300200241306a200241a0086a412010f5012002280234410020022802301bad2106024020022903e81a4201520d0020022903f01a22054200510d04200241f81a6a290300220f20057c42002006200f7d220f200f2006561b220f7c200f2005827d21050b2004420037030020004200370200200241013a00c808200220013602bc08200220013602b008200242003703a00820024200200520067d220620062005561b3703a808200241b8346a200241f02a6a200241a0086a10a106200241d8226a41286a200241b8346a41286a290300370300200241d8226a41206a200241b8346a41206a290300370300200241d8226a41186a200241b8346a41186a290300370300200241d8226a41106a200241b8346a41106a2903003703002003200241b8346a41086a290300370300200220022903b8343703d822200241c8356a200241c81a6a10dd02200241a0086a20022802c835220420022802d03510e102200241e8086a280200410020022903a0084201511b2103024020022802cc35450d00200410390b0240024020022802801b22042003490d00410c10382200450d0b41041038220a450d0b2000200a360200200041046a220d42043702004100210c2000410041201081012000280200200041086a220b280200220e6a220a20022903c81a370000200a41186a200241c81a6a41186a290300370000200a41106a200241c81a6a41106a290300370000200a41086a200241c81a6a41086a290300370000200b200e41206a220a3602000240200d280200200a6b41034b0d002000200a4104108101200b280200210a0b2000280200200a6a2004360000200b200a41046a3602002001210a0240200320044f0d00410c1038220a450d0c410410382203450d0c2004417f6a210b200a2003360200200a41046a220c4204370200200a41004120108101200a280200200a41086a2204280200220d6a220320022903c81a370000200341186a200241c81a6a41186a290300370000200341106a200241c81a6a41106a290300370000200341086a200241c81a6a41086a2903003700002004200d41206a22033602000240200c28020020036b41034b0d00200a20034104108101200428020021030b200a28020020036a200b3600002004200341046a3602004101210c0b200241f02a6a41206a2203428180808010370300200241f02a6a41186a2204200c360200200241f02a6a41146a200c360200200241013a00982b2002200036028c2b2002200a3602802b2002427f3703f82a200242003703f02a200241e8346a200241d8226a200241f02a6a10a106200241c8356a41286a200241e8346a41286a290300370300200241c8356a41206a200241e8346a41206a290300370300200241c8356a41186a200241e8346a41186a290300370300200241c8356a41106a200241e8346a41106a290300370300200241c8356a41086a200241e8346a41086a290300370300200220022903e8343703c835024020022d00903322004102470d00200241a02b6a200241d4086a280200360200200241f02a6a41286a200241cc086a2902003703002003200241c4086a2902003703002004200241bc086a290200370300200241f02a6a41106a200241a0086a41146a290200370300200241f02a6a41086a200241ac086a290200370300200220022902a4083703f02a41801221010c070b200241a0086a2002290388332000200710bd04200241f02a6a41086a200241a0086a410c6a290200370300200241f02a6a41106a200241a0086a41146a2902003703002004200241a0086a411c6a2902003703002003200241a0086a41246a290200370300200241f02a6a41286a200241a0086a412c6a290200370300200241a02b6a200241d4086a280200360200200220022902a4083703f02a20022d00a0084101470d0120022f00a10820022d00a3084110747221010c060b2002410a3a00a30820024180063b00a108200241013a00a00820022802e82221040240200241f0226a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200241ec226a2802002201450d002001410c6c450d00200410390b20022802f42221040240200241fc226a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b200241f8226a2802002201450d072001410c6c450d0720041039200810a2060c090b200241d8226a41286a2203200241f02a6a412c6a290200370300200241d8226a41206a2204200241f02a6a41246a290200370300200241d8226a41186a220a200241f02a6a411c6a290200370300200241d8226a41106a220b200241842b6a290200370300200241d8226a41086a220c200241f02a6a410c6a290200370300200220022902f42a3703d82220024198356a200241c8356a200241d8226a10a106200320024198356a41286a290300370300200420024198356a41206a290300370300200a20024198356a41186a290300370300200b20024198356a41106a290300370300200c20024198356a41086a29030037030020022002290398353703d822200241a0086a2007200229038833221020022903881b2211200241901b6a290300221220022d0091334100472000108b054200210642002105024020022903a0084201520d00427f427f200241a0086a41106a2903002205200241a0086a41206a2903007c20022903a8082206200241a0086a41186a2903007c220f2006542203ad7c22062003200620055420062005511b22031b2205200241d0086a2903007c427f200f20031b2206200241a0086a41286a2903007c220f2006542203ad7c22062003200620055420062005511b22031b2105427f200f20031b21060b427f2005200241e0086a29030022137c200620022903d80822147c22152006542203ad7c220f2003200f200554200f2005511b22031b210f427f201520031b2115024002402006201484200520138484500d00200241f8356a200241c81a6a2015200f410141112011201284501b410010a30620022802f8354101460d01200241e0356a2203200229038036370300200241e8356a20024188366a290300370300200220153703c835200242013703d8352002200f3703d035200220033602a008200241a0086a10a4060b200241a0086a10fb0320022903a8082105200241013a00982b200241106a200f4200418080f00120074101200741014b1b6ead220620052010420120104201561b80220520052006561b2205420010c20a200241206a201542002005420010c20a200241902b6a4200370300200241842b6a42003702002002200136028c2b200220013602802b20022903182106200241206a41086a29030021052002290310210f2002427f3703f82a2002427f200229032020064200522005200f7c22062005547222011b2205427f2005427f524100427f200620011b501b1b3703f02a200241a0086a41086a200241d8226a200241f02a6a10a106200241003a00a008200810a2060c090b200241003a00a30820024180023b00a108200241013a00a00820022802e82221040240200241f0226a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200241ec226a2802002201450d002001410c6c450d00200410390b20022802f42221040240200241fc226a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b200241f8226a2802002201450d062001410c6c450d0620041039200810a2060c080b200241013a00a0082002200320004110747222013b00a108200220014110763a00a3080c070b200241e4226a411d360200200241b4086a4102360200200242023702a408200241f8f4c3003602a008200241043602dc22200241e0f6c3003602d8222002200241d8226a3602b0082002200241a0086a3602e022200241a0086a4188f5c3001043000b200241d8226a41286a2200200241f02a6a412c6a290200370300200241d8226a41206a220a200241f02a6a41246a290200370300200241d8226a41186a220b200241f02a6a411c6a290200370300200241d8226a41106a220c2009290200370300200241d8226a41086a220d200241f02a6a410c6a290200370300200220022902f42a3703d82220024198356a200241c8356a200241d8226a10a106200020024198356a41286a290300370300200a20024198356a41206a290300370300200b20024198356a41186a290300370300200c20024198356a41106a290300370300200d20024198356a41086a29030037030020022002290398353703d8222003420037030020094200370200200241013a00982b2002200136028c2b200220013602802b2002427f3703f82a200242003703f02a200241a0086a41086a200241d8226a200241f02a6a10a106200241003a00a00820022f00a10820022d00a3084110747221000c020b41e0d7ca00411941fcd7ca001035000b200241013a00a008200220013b00a108200220014110763a00a30820022802d83521040240200241e0356a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200241dc356a2802002201450d002001410c6c450d00200410390b20022802e43521040240200241ec356a2802002201450d002001410c6c21032004210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b200241e8356a2802002201450d012001410c6c450d0120041039200810a2060c030b200241f8356a41106a200241b4086a280200360200200241f8356a41086a200241a0086a410c6a290200370300200220022902a4083703f83520074101460d01200241b8086a280200210b200241bc086a2802002100200241c0086a2802002101200241c4086a280200210c200241c8086a2802002107200241cc086a280200210a200241d0086a290300210520024198336a41086a200241f8356a410c6a290200370300200220022902fc35370398330240024002400240024020022802981b417f6a0e09010000000000000203000b20024181023b00a108410121030c030b0240200241a01b6a2802004102460d002002410a3a00a308200241003b00a108410121030c030b02400240200441ff017141014b0d00200241b81b6a200241a41b6a10a506220341ff01714102460d01200220033b00a108200220034110763a00a308410121030c040b024041002802a8fe4a4102490d0041002802a4fe4a210341002802a0fe4a210441002802acfe4a210d200241bc086a41f4ddca00360200200241b0086a4201370300200241d4086a41f68ac500ad4280808080c00c84370200200241c8086a41dd8ac500ad4280808080900384370300200241c0086a4200370300200241a8086a410d360200200241fcfbc5003602ac082002428180808090183702dc08200241003602d008200241d08ac5003602a408200241023602a008200441f4ddca00200d410246220d1b200241a0086a200341b0a7c000200d1b2802101103000b2002410a3a00a308200241003b00a108410121030c030b200241d8226a41eb97c200411710f2012002200241d8226a411010f501200228020421042002280200210d200241a8086a427f370300200241d4086a4110360200200241c0086a4200370300200241a0086a41146a42003702002002427f3703a00820024188dfc2003602d008200241013a00c808200241002802ccdd4a22033602bc08200220033602b00820022903b81b2106411c2109200241d8226a411c6a200241b81d6a290300370200200241d8226a41146a200241b01d6a290300370200200241e4226a200241a81d6a2903003702002002200241a01d6a2903003702dc22411c10382203450d06200441e400200d1b210d200241dc226a2104200341c0003a000020034100290088df42370001200341096a4100290090df423700002002421c37029c3520022003360298354111210e200241113602a035024041000d0020024198356a411141201081012002280298352103200228029c35210920022802a035210e0b200dad210f2003200e6a220d2004290000370000200d41186a200441186a290000370000200d41106a200441106a290000370000200d41086a200441086a2900003700002002200e41206a22043602a0350240200920046b41074b0d0020024198356a20044108108101200228029835210320022802a03521040b200f420a7e210f200241c9086a210e200241a0086a41106a210d200320046a20063700002002200441086a3602a035024020022802c408220320022802c0082204470d00200241bc086a2004410110bd0320022802c40821030b20022802bc082003410c6c6a2204200229039835370200200441086a20024198356a41086a2802003602002002200341016a3602c408200241d8226a41086a2203200d41086a290300370300200241d8226a41106a2204200d41106a2903003703002002200d2903003703d8222002200e290000370398352002200e41076a29000037009f3520022903a0082106200241c8086a2004290300370300200241c0086a2003290300370300200241b8086a20022903d82237030041002103200241d0086a41003a0000200241a0086a41106a200f370300200241a0086a41086a2006370300200241d4086a200228009b35360000200241d1086a2002280298353600000c020b0240200241a01b6a2802004102460d002002410a3a00a308200241003b00a108410121030c020b02400240200441ff017141014b0d00200241b81b6a200241a41b6a10a606220341ff01714102460d01200220033b00a108200220034110763a00a308410121030c030b024041002802a8fe4a4102490d0041002802a4fe4a210341002802a0fe4a210441002802acfe4a210d200241bc086a41f4ddca00360200200241b0086a4201370300200241d4086a41bffcc500ad4280808080f00c84370200200241c8086a41a3fcc500ad4280808080c00384370300200241c0086a4200370300200241a8086a410c360200200241fcfbc5003602ac0820024281808080e01a3702dc08200241003602d00820024197fcc5003602a408200241023602a008200441f4ddca00200d410246220d1b200241a0086a200341b0a7c000200d1b2802101103000b2002410a3a00a308200241003b00a108410121030c020b200241d8226a41eb97c200411710f201200241086a200241d8226a411010f501200228020c210420022802082109200241a0086a41086a427f370300200241d4086a4113360200200241c0086a42003703004114210d200241a0086a41146a42003702002002427f3703a00820024184fcc5003602d008200241013a00c808200241002802ccdd4a22033602bc08200220033602b008200241c81b6a290300210620022903b81b210f200241f0226a200241b01d6a290300370300200241d8226a41106a200241a81d6a290300370300200241d8226a41086a200241a01d6a2903003703002002200241981d6a2903003703d8224127210e412710382203450d05200341cc003a000020034100290084fc45370001200341096a410029008cfc45370000200341106a4100280093fc453600002002422737029c352002200336029835200241143602a035024041000d0020024198356a411441201081012002280298352103200228029c35210e20022802a035210d0b200441e40020091b21092003200d6a220420022903d822370000200441186a200241d8226a41186a290300370000200441106a200241d8226a41106a290300370000200441086a200241d8226a41086a2903003700002002200d41206a22043602a0350240200e20046b41074b0d0020024198356a20044108108101200228029835210320022802a03521040b2009ad2115200320046a200f3700002002200441086a22033602a0350240200228029c3520036b41074b0d0020024198356a2003410810810120022802a03521030b2015420a7e210f200241c9086a210d200241a0086a41106a210420022802983520036a20063700002002200341086a3602a035024020022802c408220320022802c008220e470d00200241bc086a200e410110bd0320022802c40821030b20022802bc082003410c6c6a220e200229039835370200200e41086a20024198356a41086a2802003602002002200341016a3602c408200241d8226a41086a2203200441086a290300370300200241d8226a41106a220e200441106a290300370300200220042903003703d8222002200d290000370398352002200d41076a29000037009f3520022903a0082106200241c8086a200e290300370300200241c0086a2003290300370300200241b8086a20022903d82237030041002103200241d0086a41003a0000200241a0086a41106a200f370300200241a0086a41086a2006370300200241d4086a200228009b35360000200241d1086a2002280298353600000c010b200241a0086a2002419c1b6a10a70620022d00a00821030b200241f02a6a41086a2204200241a0086a410c6a290200370300200241f02a6a41106a220d200241a0086a41146a290200370300200241f02a6a41186a220e200241a0086a411c6a290200370300200241f02a6a41206a2209200241a0086a41246a290200370300200241f02a6a41286a2216200241a0086a412c6a290200370300200241a02b6a200241d4086a280200360200200220022902a4083703f02a0240200341ff01714101460d00200241c8356a41286a2203200241f02a6a412c6a290200370300200241c8356a41206a2217200241f02a6a41246a290200370300200241c8356a41186a2218200241f02a6a411c6a290200370300200241c8356a41106a2219200241f02a6a41146a290200370300200241c8356a41086a221a200241f02a6a410c6a290200370300200220022902f42a3703c835200241d8226a41086a20024198336a41086a290300370300200241d8226a41246a200a360200200241d8226a41206a2007360200200241d8226a41186a2001360200200241d8226a41146a200036020020022002290398333703d82220022005370380232002200c3602f4222002200b3602e8222016200329030037030020092017290300370300200e2018290300370300200d20192903003703002004201a290300370300200220022903c8353703f02a200241a0086a41086a200241d8226a200241f02a6a10a106200241003a00a008200810a2060c030b20022d00a308210320022f00a1082104200241013a00a0082002200420034110747222033b00a108200220034110763a00a30802402001450d002001410c6c2103200b210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b02402000450d002000410c6c450d00200b10390b0240200a450d00200a410c6c2103200c210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b2007450d002007410c6c450d00200c10390b200810a2060c010b200241013a00a008200220003b00a108200220004110763a00a308200810a2060b410110382201450d00200242013702f411200220013602f0110240024020022d00a0084101470d00200141013a0000200241013602f81120022d00a10820022d00a20820022d00a308200241f0116a10990620022802f811210020022802f01121040c010b200141003a000041012103200241013602f811200241a0086a41086a2903002105024020022802f411417f6a41074b0d00200241f0116a4101410810810120022802f011210120022802f81121030b200120036a20053700002002200341086a3602f811200241b8086a2802002101200241f0116a200241c0086a280200220310d20102402003450d0020012003410c6c6a210303402001280200200141086a280200200241f0116a10d6012001410c6a22012003470d000b0b200241c4086a2802002101200241f0116a200241cc086a280200220310d20102402003450d0020012003410c6c6a210303402001280200200141086a280200200241f0116a10d6012001410c6a22012003470d000b0b200241b0086a2903002105024020022802f411220320022802f81122016b41074b0d00200241f0116a2001410810810120022802f411210320022802f81121010b20022802f011220420016a20053700002002200141086a22013602f811200241d0086a2d00002100024020032001470d00200241f0116a2003410110810120022802f011210420022802f81121010b200420016a20003a0000200141016a21000b024020022d00a0080d000240200241c0086a2802002203450d00200241b8086a28020021012003410c6c210303400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200241bc086a2802002201450d002001410c6c450d0020022802b80810390b0240200241cc086a2802002203450d00200241c4086a28020021012003410c6c210303400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b200241c8086a2802002201450d002001410c6c450d0020022802c40810390b20024190366a24002000ad4220862004ad840f0b1030000b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2202280200109f06200228020010390f0b2000410c6a2202280200109f06200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2202280200109f06200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a2202280200109f06200228020010390f0b200041106a2202280200109f06200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a2202280200109f06200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a2202280200109f06200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a2202280200108104200228020010390f0b200041286a2202280200109f06200228020010390f0b0b9d3003037f027e037f230041800c6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e250102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232400010b0240024002400240200141086a280200417f6a0e0400010203000b200041003b010820004280c2d72f3703000c270b200241c0006a2001410c6a10a40341980410382203450d2741f80310382204450d2720044101360200200241a0046a200141186a10ab03200241d4006a200241a0046a41c80310c30a1a20034200370214200341002802fcad49360210200342818080801037000820032004360004200341053a00002003411c6a200241d0006a41cc0310c30a1a200241b4046a428180808010370200200241b0046a2003360200200241ac046a200241c8006a280200360200200241003a00a004200220022903403702a404200241106a200241a0046a109707427f2105024020022802100d00200229031821062002200241a0046a1098072002290300a70d00427f200620022903087c22054280c2d72f7c20052006541b21050b200241a0046a10d303200041003b0108200020053703000c260b200241d0006a2001410c6a10a403200241c0046a200141186a10ab03200241b4046a4200370200200241b0046a41002802fcad49360200200241a0046a410c6a200241d0006a41086a280200360200200241053a00a004200220022903503702a404200241306a200241a0046a109707427f2105024020022802300d0020022903382106200241206a200241a0046a1098072002290320a70d00427f200620022903287c22054280c2d72f7c20052006541b21050b200241a0046a10d303200041003b0108200020053703000c250b200041003b01082000427f200141106a29030022054280c2d72f7c220620062005541b3703000c240b0240024002400240024002400240024002400240200141086a280200417f6a0e0a00010203040506070809000b2001410c6a3502002105200241a0046a10fb0320022903a8042106200041003b0108200020052006428094ebdc03807e42ffffffffffbfb2cd3b20052006428094ebdc03827e2205428094ebdc0380200542ffffffffffbfb2cd3b561b2005428094ebdc03824280cab5ee0156ad7c42ffffffff0f837c3703000c2c0b200041003b0108200042e88bd2003703000c2b0b200041013b0108200042f0edd5303703000c2a0b200241a0046a10fb0320022903a8042105200041013b0108200020053703000c290b200241a0046a10fb0320022903a8042105200041013b0108200020053703000c280b200041013b0108200042d8848ef0003703000c270b200041013b01082000200141146a35020042f8a5fd2f7e3703000c260b200041013b01082000200141146a350200220542e0891c7e20054280c2d72f7e7c4298c3e4007c3703000c250b200041013b01082000417f200141186a280200220141016a220320032001491bad220542b0ce347e20054280c2d72f7e7c42f0dd8b057c3703000c240b200041003b01082000200141146a35020042e8077e42e8edcf047c3703000c230b024002400240200141086a280200417f6a0e03000102000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c240b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c230b200041003b010820004280c2d72f3703000c220b200041023b0108200042d0aa8acd003703000c210b0240024002400240024020012d0004417f6a0e050001020304000b200041003b01082000429883a1d5003703000c240b200041003b0108200042f0ebfa93013703000c230b200041003b0108200042a89de5d2003703000c220b200041003b0108200042d082f88e013703000c210b200041003b0108200042c8fdffd0003703000c200b0240024002400240200141086a280200417f6a0e0400010203000b200041003b0108200042c8dcd4e2003703000c220b200041003b0108200042a885fccd003703000c210b200041003b010820004280f9c89d013703000c200b200041003b0108200042f88eddd8003703000c1f0b200041023b0108200042003703000c1e0b10b304000b200041003b0108200042b0cf95a00242e8f1fbde0220012d00044102461b3703000c1c0b024002400240200141086a280200417f6a0e03000102000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c1d0b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c1c0b200041003b0108200042c0cf8e313703000c1b0b200041003b01082000200141286a35020042f8ae0d7e2001411c6a35020042e8ad1d7e7c42f895f495017c3703000c1a0b109907000b0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a280200417f6a0e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627000b200041013b0108200042e8073703000c3f0b200041013b0108200042e8073703000c3e0b200041013b0108200042e8073703000c3d0b200041013b0108200042e8073703000c3c0b200041013b0108200042e8073703000c3b0b200041013b0108200042e8073703000c3a0b200041013b0108200042e8073703000c390b200041013b0108200042e8073703000c380b200041013b0108200042e8073703000c370b200041013b0108200042e8073703000c360b200041013b0108200042e8073703000c350b200041013b0108200042e8073703000c340b200041013b0108200042e8073703000c330b200041013b0108200042e8073703000c320b200041013b0108200042e8073703000c310b200041013b0108200042e8073703000c300b200041013b0108200042e8073703000c2f0b200041013b0108200042e8073703000c2e0b200041013b0108200042e8073703000c2d0b200041013b0108200042e8073703000c2c0b200041013b0108200042e8073703000c2b0b200041013b0108200042e8073703000c2a0b200041013b0108200042e8073703000c290b200041013b0108200042e8073703000c280b200041013b0108200042e8073703000c270b200041013b0108200042e8073703000c260b200041013b0108200042e8073703000c250b200041013b0108200042e8073703000c240b200041013b0108200042e8073703000c230b200041013b0108200042e8073703000c220b200041013b0108200042e8073703000c210b200041013b0108200042e8073703000c200b200041013b0108200042e8073703000c1f0b200041013b0108200042e8073703000c1e0b200041013b0108200042e8073703000c1d0b200041013b0108200042e8073703000c1c0b200041013b0108200042e8073703000c1b0b200041013b0108200042e8073703000c1a0b200041013b0108200042e8073703000c190b200041013b0108200042e8073703000c180b109a07000b108a05000b200041023b01082000200141186a35020042a08d067e4280e59af7007c3703000c150b109b07000b024002400240024002402001280204417f6a0e050001020304000b200041003b0108200042003703000c170b200041003b0108200042003703000c160b200041003b0108200042003703000c150b200041003b0108200042003703000c140b200041003b0108200042003703000c130b200041013b0108200042003703000c120b10d003000b109c07000b0240024002400240024002402001280204417f6a0e06000102030405000b200041003b0108200042003703000c140b200041003b0108200042003703000c130b200041003b0108200042003703000c120b200041003b0108200042003703000c110b200041003b0108200042003703000c100b200041003b0108200042003703000c0f0b10d605000b024002400240024002400240200141086a2d0000417f6a0e06000102030405000b200041003b0108200042003703000c120b200041003b0108200042003703000c110b200041003b0108200042003703000c100b200041003b0108200042003703000c0f0b200041003b0108200042c0b2cd3b3703000c0e0b200041003b0108200042003703000c0d0b024002400240200141086a280200417f6a0e03000102000b200041013b0108200042003703000c0e0b200041003b0108200042003703000c0d0b200041003b0108200042003703000c0c0b02400240024002400240024002400240200141086a2d0000417f6a0e080001020304050607000b200041003b0108200042003703000c120b200041003b0108200042003703000c110b200041003b0108200042003703000c100b200041003b0108200042003703000c0f0b200041003b0108200042003703000c0e0b200041003b0108200042003703000c0d0b200041003b0108200042003703000c0c0b200041003b0108200042003703000c0b0b024002400240200141086a2d0000417f6a0e03000102000b200041003b0108200042003703000c0c0b200041003b0108200042003703000c0b0b200041003b0108200042003703000c0a0b024002400240024002400240200141086a280200417f6a0e06000102030405000b200041013b0108200042e8073703000c0e0b200041013b0108200042e8073703000c0d0b200041013b0108200042e8073703000c0c0b200041013b0108200042e8073703000c0b0b200041013b0108200042e8073703000c0a0b200041013b0108200042e8073703000c090b0240024002400240200141086a280200417f6a0e0400010203000b200241a0046a2001410c6a28020010a00620022903a004210520022d00a8042101200041003a0009200020013a00082000427f20054290ce007c220620062005541b3703000c0b0b200141106a2903002105200241a0046a2001410c6a28020010a00620022d00a8042101200041003a0009200020013a0008200020053703000c0a0b200041003b0108200042003703000c090b200241a0046a200141306a28020010a00620022903a004210520022d00a8042101200041003a0009200020013a00082000427f200542d080ce3b7c220620062005541b3703000c080b109d07000b0240024002400240200141086a2d0000417f6a0e0400010203000b200041003b01082000427f20014194016a35020042a09ba5f9027e200141c0016a35020042b0e3dae8027e7c220542c09fc6f1027c22062006200542c093b9d3007c541b3703000c090b200041013b010820004280aba186023703000c080b200041013b0108200042c0b2cd3b3703000c070b200041013b0108200042c0b2cd3b3703000c060b0240024002400240200141086a2d0000417f6a0e0400010203000b200041003b01082000427f20014194016a35020042a09ba5f9027e200141c0016a35020042b0e3dae8027e7c220542c09fc6f1027c22062006200542c093b9d3007c541b3703000c080b200041013b010820004280aba186023703000c070b200041013b0108200042c0b2cd3b3703000c060b200041013b0108200042c0b2cd3b3703000c050b200041003b0108200042a08d063703000c040b024002400240024002400240200141086a2d0000417f6a0e06000102030405000b200041013b01082000200141346a35020042b0c00f7e200141386a3502004288d3fd097e7c42a0e6f6813a7c3703000c080b200141106a3502002105200241a0046a2001410c6a28020010a00620022903a0042106200041013b01082000427f2006200542a01f7e4298eca0207c22057c220620062005541b3703000c070b024002402001410c6a28020041014b0d0020013502142105200241a0046a200141106a28020010a006427f200542a01f7e42b0dd8d357c220520022903a0047c220620062005541b21050c010b20013502144288277e42d08b80b2027c21050b200041013b0108200020053703000c060b200041013b0108200042f8949ced003703000c050b200041013b01082000427f200141306a35020042e8077e42d0ddeba1027c2205200141386a2903007c220620062005541b3703000c040b200041003b0108200042e0a2faca013703000c030b024002400240024002400240024020012d0004417f6a0e0700010203040506000b200041003b010820004280e1eb173703000c080b200041003b010820004280e1eb173703000c070b200041003b010820004280e1eb173703000c060b200041003b010820004280e1eb173703000c050b200041003b010820004280e1eb173703000c040b200041003b010820004280e1eb173703000c030b200041003b010820004280e1eb173703000c020b02400240024020012f0104417f6a0e03000102000b200141106a280200220741ffffffff00712007470d0541082108200141086a2802002103024020074104742201450d00200110382208450d050b2003200741c0076c6a21094100210420024100360258200220083602502002200141047622013602540240200120074f0d00200241d0006a2007109e07200228025821040b0240024020032009470d00200228025021090c010b200741c0076c21082002280250220920044104746a21010340200241a0046a200310a006200141086a200241a0046a41086a290300370300200120022903a004370300200441016a2104200141106a2101200341c0076a2103200841c0786a22080d000b0b200921030240024020040d00420021050c010b2004410474210842002105200321010340427f200520012903007c220620062005541b2105200141106a2101200841706a22080d000b0b427f2007ad42b896a7017e20057c42d884c9097c220620062005541b2105200441047421010240034020012204450d01200441706a2101200341086a2108200341106a210320082d00004101460d000b0b20044521010240200228025441ffffffff0071450d00200910390b200041003a0009200020013a0008200020053703000c030b200241a0046a200141086a28020010a00620022903a004210520022d00a8042101200041003a0009200020013a00082000427f200542e8c9aa3e7c220620062005541b3703000c020b200141106a280200220741ffffffff00712007470d0341082108200141086a2802002103024020074104742201450d00200110382208450d030b2003200741c0076c6a21094100210420024100360258200220083602502002200141047622013602540240200120074f0d00200241d0006a2007109e07200228025821040b0240024020032009470d00200228025021090c010b200741c0076c21082002280250220920044104746a21010340200241a0046a200310a006200141086a200241a0046a41086a290300370300200120022903a004370300200441016a2104200141106a2101200341c0076a2103200841c0786a22080d000b0b200921030240024020040d00420021050c010b2004410474210842002105200321010340427f200520012903007c220620062005541b2105200141106a2101200841706a22080d000b0b427f2007ad42d08ea7017e20057c4280cc9c0a7c220620062005541b2105200441047421010240034020012204450d01200441706a2101200341086a2108200341106a210320082d00004101460d000b0b20044521010240200228025441ffffffff0071450d00200910390b200041003a0009200020013a0008200020053703000c010b024002400240024002400240024002400240024020012d0004417f6a0e0a00010203040506070809000b200241a0046a200141286a28020010a00620022903a004210520022d00a8042101200041003a0009200020013a00082000427f200542d09494da007c220620062005541b3703000c090b200041003b010820004288d7ebd4003703000c080b200041003b0108200042b0ab97d3003703000c070b200041003b0108200042f080c0d1003703000c060b200041003b0108200042b8dd81e7003703000c050b200041003b010820004298eddad2003703000c040b200041003b0108200042d8c184b2013703000c030b200041003b01082000428081fc99013703000c020b200041003b0108200042f0caf698013703000c010b200241a0046a200141c8006a28020010a00620022903a004210520022d00a8042101200041003a0009200020013a00082000427f200542d0fda6ef017c220620062005541b3703000b200241800c6a24000f0b1030000b1034000bd30304017f027e077f027e230041106b220324002002290300210420012903002105200141106a2106200228021021070240200141146a280200200141186a220828020022096b200241186a280200220a4f0d0020062009200a10bd03200828020021090b20012802102009410c6c6a2007200a410c6c10c30a1a20082009200a6a3602004100210820024100360218200341086a200641086a280200360200200320062902003703002001411c6a2106200228021c210b0240200141206a280200200141246a220c28020022096b200241246a280200220a4f0d0020062009200a10bd03200c28020021090b200128021c2009410c6c6a200b200a410c6c10c30a1a20024100360224200c2009200a6a3602002002290308210d2001290308210e024020012d0028450d0020022d002841004721080b20002003290300370210200020083a00282000200629020037021c200041186a200341086a280200360200200041246a200641086a2802003602002000200d200e200e200d561b3703082000427f200520047c220d200d2005541b3703000240200241146a2802002201450d002001410c6c450d00200710390b0240200241206a2802002201450d002001410c6c450d00200b10390b200341106a24000b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010a206200228020010390f0b2000410c6a220228020010a206200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010a206200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010a206200228020010390f0b200041106a220228020010a206200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010a206200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010a206200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220228020010cb09200228020010390f0b200041286a220228020010a206200228020010390f0b0bd51407017f017e017f077e047f027e017f230041d00c6b22062400420021070240024020022003844200520d0020004100360200200041106a4200370300200041086a42003703000c010b200641286a200110dd02200641c8016a20062802282208200628023010e102420021094200210a4200210b4200210c4200210d4200210e4200210f024020062903c8014201520d0020064188026a290300210f20064180026a290300210e200641f8016a290300210d200641f0016a290300210c200641e8016a290300210b200641e0016a290300210a200641d8016a290300210920062903d00121070b0240200628022c450d00200810390b0240024002402007200c200a84842009200d200b848484500d00200641086a21080c010b200641086a2108200e200f844200520d00200641c0016a4200370300200641b8016a4200370300200641b0016a4200370300200642003703a8014100211041012111200641086a210842002107420021094200210a4200210b0c010b200641086a41186a200f3703002006200e3703182006200c3703082006200d370310200641a8016a41186a200841186a290300370300200641a8016a41106a200841106a290300370300200641a8016a41086a200841086a290300370300200620082903003703a80141012110410021110b024002400240200720027d220d200756200920037d2007200254ad7d220c200956200c2009511b450d0041bcaac400ad21074180880821014280808080b00221090c010b0240200d200a7c220f42ffc7afa02556200c200b7c200f200d542212ad7c220e420052200e501b0d00200a20077c22074280c8afa025544100200b20097c2007200a54ad7c501b0d0020050d0041f4aac400ad21074180881021014280808080900121090c010b200641e8006a200110dd02200641c8016a20062802682213200628027010e10220062903c8014201512105200641f8016a2903002114200641f0016a290300211520064188026a290300210720064180026a29030021090240200628026c450d00201310390b2007420020051b21072009420020051b21090240200441ff01714101460d002014420020051b21142015420020051b2115024020044101710d0020152109201421070c010b201420072015200956201420075620142007511b22041b21072015200920041b21090b02402009200d562007200c562007200c511b450d00419caac400ad21074180880421014280808080d00221090c010b2002422088a721052002a72113420021022011ad211402400240427f200f2012200e200c54200e200c511b22041b220942ffc7afa02556427f200e20041b220742005220075022041b0d00200d200a84200c200b848422025021122002420052ad21020c010b200641c8016a41186a200641a8016a41186a290300370300200641c8016a41106a200641a8016a41106a290300370300200641c8016a41086a200641a8016a41086a290300370300200620062903a8013703c801410121120b200820062903c801370300200841186a200641c8016a41186a290300370300200841106a200641c8016a41106a290300370300200841086a200641c8016a41086a290300370300200641d0006a2007370300200641c8006a22162009370300200641286a41106a200c3703002006200d370330200620033703602006200536025c2006201336025820062002370340200620143703280240024002402011200942ffc7afa02556200742005220041b220571450d00200620013602c8012001200641c8016a10f0020c010b024002400240024020104101732005720d00200620013602c8012001200641c8016a10e00241ff017122054103460d0420050e03020401020b20102005720d03200641e0006a290300210e0c020b200641d8006a2108024020120d00200620163602c801200641c8016a10a4060b200620083602c801200641c8016a10a40641042108410021010c050b200641e0006a290300210e0b2006290358210f0c010b200641e8006a41186a200841186a290300370300200641e8006a41106a200841106a290300370300200641e8006a41086a200841086a2903003703002006200829030037036820064188016a200110dd02200641c8016a2006280288012208200628029001220510e1020240024020062903c8014201510d0020064198016a41086a420037030020064200370398010c010b20064198016a41086a20064198026a290300370300200620064190026a290300370398010b4200210202400240200942ffc7afa02556200742005220041b0d00200641e0016a4200370300200641d8016a4200370300200641d0016a4200370300200642003703c8014200210b4200210d4200210c0c010b200641c8016a41186a200641e8006a41186a290300370300200641c8016a41106a200641e8006a41106a290300370300200641c8016a41086a200641e8006a41086a290300370300200620062903683703c801200a21020b200641a8016a41186a200641c8016a41186a22042903002207370300200641a8016a41106a200641c8016a41106a22112903002209370300200641a8016a41086a200641c8016a41086a22102903002203370300200620062903c801220a3703a801200641e8016a200b370300200420023703002011200c370300200641c8016a41286a200a370300200641f8016a2003370300200641c8016a41386a200937030020064188026a200737030020064190026a20062903980137030020064198026a20064198016a41086a2903003703002006200d3703d001200642013703c80120082005201010e2020240200628028c01450d00200810390b200641286a41106a290300210c200641286a41286a2903002107200641286a41386a290300210e2006290330210d200629034821092006290358210f20062903282114200629034021020b024020144201520d0020064180026a200c370300200641f8016a200d370300200641d1016a2001290000370000200641c8016a41086a41003a0000200641e9016a200141186a290000370000200641e1016a200141106a290000370000200641d9016a200141086a290000370000200641023a00c801200641c8016a10fc010b02400240200250450d00420021020c010b200641c8016a41186a200141186a290000370300200641c8016a41106a200141106a290000370300200641c8016a41086a200141086a290000370300200620012900003703c801420121020b200641286a41186a200641c8016a41186a22082903002203370300200641286a41106a200641c8016a41106a2201290300220a370300200641286a41086a200641c8016a41086a290300220b370300200620062903c801220c370328200641f8016a2007370300200641f0016a220420093703002001200b3703002008200a370300200641e8016a2003370300200620023703c8012006200c3703d001200641c8016a10ec07024020062903c801500d00200620043602a801200641a8016a10a4060b20004100360200200041106a200e370300200041086a200f3703000c020b20092007842107410321080b200041086a200737020020004101360200200020014180fe1f712008723602040b200641d00c6a24000b9b0304057f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a41d3fec300410810f2012004200141c0006a41086a220529000037030020012001290040370320200141c0006a41d0a8c800410d10f2012002200529000037030020032001290040370300200141086a200141206a412010f904200141086a41106a290300210620012903102107200128020821082000280200220041086a29030021092000290300210a20024200370300200342003703002004420037030020014200370320200141c0006a41d3fec300410810f2012004200529000037030020012001290040370320200141c0006a41d0a8c800410d10f2012002200529000037030020032001290040370300200142002006420020081b220620097d2007420020081b2207200a54ad7d22092007200a7d220a200756200920065620092006511b22021b37034820014200200a20021b370340200141206a4120200141c0006a411010a302200141d0006a24000b8c0403037f027e017f23004190016b22022400200241d4006a2203200041f0016a290200370200200241dc006a200041f8016a290200370200200241e4006a20004180026a290200370200200241e2c289ab06360248200220002902e80137024c20012802002104200241f0006a410472200141046a10a703200220043602702002200128021036028001200241206a200241c8006a200241f0006a1086050240024002400240024020022d00204101470d00200241166a2201200241396a290000370100200241106a2204200241336a290000370300200241086a2002412b6a290000220537030020022002290023220637030020022f0021210720024188016a200129010037000020024182016a2004290300370100200241fa006a200537010020022006370172200220073b01702000290300210541002100034020004120460d02410810382201450d0520012005370000200341002900dd874a370000200341086a41002900e5874a37000020024288808080800137024c200220013602482002200241f0006a20006a360264200241206a200241c8006a10950320011039200241c8006a200241206a10df0220022802482204200228025010a80221010240200228024c450d00200410390b200041206a210020010d000b410221010c020b4100210141800821000c020b410021010b41800621000b20024190016a240020002001720f0b1030000b820505037f027e017f027e017f23004190016b22022400200241d4006a2203200041e8016a290200370200200241dc006a200041f0016a290200370200200241e4006a200041f8016a290200370200200241e7e485f3063602482002200041e0016a29020037024c20012802002104200241f0006a410472200141046a10a703200220043602702002200128021036028001200241206a200241c8006a200241f0006a108605024002400240024020022d00204101470d00200241166a2201200241396a290000370100200241106a2204200241336a290000370300200241086a2002412b6a290000220537030020022002290023220637030020022f00212107200041106a29030021082000290300210920024188016a200129010037000020024182016a2004290300370100200241fa006a200537010020022006370172200220073b017041002100034020004120460d02200241f0006a20006a210a2002410036025020024201370348200241c8006a4100410810810120022802482204200228025022016a20093700002002200141086a22013602500240200228024c220720016b41074b0d00200241c8006a20014108108101200228024c210720022802482104200228025021010b200420016a2008370000200341002900bd874a370000200341086a41002900c5874a3700002002200a3602642002200141086a360250200241206a200241c8006a10950302402007450d00200410390b200241c8006a200241206a10df0220022802482204200228025010a80221010240200228024c450d00200410390b200041206a210020010d000b410221000c020b4100210041800821010c020b410021000b41800621010b20024190016a240020012000720bb50b02097f017e23004190016b2202240002400240200128022010e108450d0020004181808cd0003602000c010b200241e0006a22034200370300200241d8006a22044200370300200241c8006a41086a2205420037030020024200370348200241306a418cf9c800410710f2012005200241306a41086a2900003703002002200229003037034820024180016a4184b4c200410c10f201200320024180016a41086a2900003703002004200229008001370300200241086a200241c8006a412010f5010240200128021c200228020c410020022802081b2204460d0020004181808cd0003602000c010b200241106a10c30402400240200228021822032001280224460d0020004181809cd0003602000c010b02402003200128022022064b0d00200041818090d0003602000c010b20022802102107200241003602502002420137034820012802002103200241c8006a410041041081012002280248200228025022056a20033600002002200541046a36025020012802042001410c6a280200200241c8006a10d601200141106a2802002103200241c8006a200141186a280200220510d20102402005450d0020032005410c6c6a210503402003280200200341086a280200200241c8006a10d6012003410c6a22032005470d000b0b200128021c21080240200228024c2205200228025022036b41034b0d00200241c8006a20034104108101200228024c2105200228025021030b200641057421092002280248220620036a20083600002002200341046a2203360250200128022021080240200520036b41034b0d00200241c8006a20034104108101200228024c210520022802482106200228025021030b200141286a210a200720096a2107200620036a20083600002002200341046a2203360250200128022421010240200520036b41034b0d00200241c8006a2003410410810120022802482106200228025021030b200620036a2001360000200a20022802482205200341046a200710f20421010240200228024c450d00200510390b024020010d00200041818090d0003602000c010b200241c8006a41086a427f370300200241fc006a4108360200200241c8006a41206a4200370300200241dc006a42003702002002427f37034820024198f9c500360278200241013a0070200241002802ccdd4a2201360264200220013602580240411010382201450d00200142c9dabdf2c6ad9ab7e500370001200141203a00002002429080808090013702342002200136023041092101024041010d00200241306a41094104108101200228023821010b200241f1006a2106200241c8006a41106a2103200228023020016a20043600002002200141046a22013602380240200228023420016b411f4b0d00200241306a20014120108101200228023821010b200228023020016a22042007290000370000200241306a41086a2205200141206a360200200441086a200741086a290000370000200441106a200741106a290000370000200441186a200741186a290000370000200241e4006a4100410110bd032002280264200228026c2201410c6c6a22042002290330370200200441086a20052802003602002002200141016a36026c2005200341086a290300370300200241306a41106a2201200341106a29030037030020022003290300370330200220062900003703202002200641076a2900003700272002290348210b20024180016a41eb97c200411710f201200220024180016a411010f5012002280200210320022802042104200041286a2001290300370300200041206a2005290300370300200041186a2002290330370300200041306a41013a0000200041086a200b370300200041316a2002280220360000200041346a2002280023360000200041003a0000200041106a2004410176413220031bad370300200228021441ffffff3f71450d02200228021010390c020b1030000b200228021441ffffff3f71450d00200228021010390b20024190016a24000bfc3203067f057e167f230041f0046b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d0036a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a20024280808080802037028c03200220013602e4022002200041f4ddca0020011b3602e0022002200241e0026a36028803200241d0036a20024188036a10b903200241dc036a280200210420022802d803210520022802d403210020022802d003210620024180016a200241e0036a41e00010c30a1a02400240024002400240024002402000450d00200241f0016a20024180016a41e00010c30a1a024002402002280288032802040d00200241d0036a200241f0016a41e00010c30a1a0c010b02402004450d00200441246c21012000210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402005450d00200541246c450d00200010390b410021000b2000450d002002418c016a200436020020024180016a41086a20053602002002200036028401200220063602800120024180016a41106a200241d0036a41e00010c30a2103200241d0026a20024180016a41047210cd022002280280012003200241d0026a410010a906200241f0016a20024180016a10c102200241d0036a41186a200241f0016a41186a290300370300200241d0036a41106a200241f0016a41106a290300370300200241d0036a41086a200241f0016a41086a290300370300200220022903f0013703d00320024188036a20022802800110ef022002280288032203200228029003200241d0036a10cf020240200228028c03450d00200310390b200220022802800122073602dc0210aa06450d01200241e8036a22014200370300200241d0036a41106a22034200370300200241d0036a41086a22004200370300200242003703d003200241f0016a41bffec300410410f2012000200241f0016a41086a2205290000370300200220022900f0013703d003200241f0016a41cda6c800410b10f20120012005290000370300200320022900f001370300200241f0006a200241d0036a10c2042002290378210820022802702106200142003703002003420037030020004200370300200242003703d003200241f0016a41bffec300410410f20120002005290000370300200220022900f0013703d003200241f0016a4188a6c800410a10f20120012005290000370300200320022900f001370300200241e0006a200241d0036a10c2042002290368210920022802602104200241f0016a41eb97c200411710f201200241d8006a200241f0016a411010f501200241c8006a2009420020041b4200200228025c41e40020022802581bad420010c20a0240200229035050450d0020022903482109200142003703002003420037030020004200370300200242003703d003200241f0016a41bffec300410410f20120002005290000370300200220022900f0013703d003200241f0016a41c0a7c800410b10f20120012005290000370300200320022900f001370300200241386a200241d0036a10c204024020092002290340420020022802381b7c220a2009540d00200241f0016a41eb97c200411710f201200241306a200241f0016a411010f5010240200228023441e40020022802301b2201ad4201200141014b1b2209200942e40080200942e40082420052ad7c220b4201200b4201561b220b80220c4280025a0d000240200942002008420020061b2208200a7d220a200a2008561b42017c220820092008541b200b8022094280025a0d000240200ca741ff01712201450d0002402009a741ff017141e4006c20016e41ff017141314b0d0041002103200241f0016a210d0c0b0b200241e8036a22054200370300200241e0036a22044200370300200241d0036a41086a22014200370300200242003703d003200241f0016a418cf9c800410710f2012001200241f0016a41086a2200290000370300200220022900f0013703d003200241f0016a4184b4c200410c10f201200341086a22062000290000370000200320022900f001370000200241286a200241d0036a412010f501200228022c210e2002280228210f200542003703002004420037030020014200370300200242003703d003200241f0016a4198f9c500410810f20120012000290000370300200220022900f0013703d003200241f0016a41e4a5c800410410f20120062000290000370000200320022900f00137000020024188036a41046a41003a00002002410036028803200241206a200241d0036a412020024188036a4105410010c105024002402002280220450d00200220022802242203410520034105491b3602f401200220024188036a3602f001200241186a200241f0016a10ad0120022802180d00200228021c21100c010b410021100b20024188036a10c304200241d0036a41e9dabdf30610ab0620022802d403211120022802d003211220022802d8032213450d0920132103201221010340200141206a21012003417f6a22030d000b0240201341144b0d00201341014d0d0a201341057420126a41406a21034101210103402003200141016a220110ac06200341606a210320132001470d000c0b0b0b02402013410176220341ffffff3f712003470d0020034105742214417f4c0d000240201410382215450d00200242003702f401200241002802ccdd4a22013602f001201241606a2116201241a07f6a211741002103201321180340410021194101210402402018417f6a2206450d00024002400240024002400240201220064105746a2018410574221a20126a41406a412010c60a4100480d002018417e6a21062017201a6a210041002119410021050340024020062005470d00201821040c080b200541016a2105200041206a2000412010c60a2104200041606a21002004417f4a0d000b200541016a21042005417f7320186a21060c010b2017201a6a210002400340024020064101470d00410021060c020b2006417f6a2106200041206a2000412010c60a2105200041606a210020054100480d000b0b20182006490d01201820134b0d02201820066b2204410176221b450d002016201a6a2100201220064105746a21050340200241d0036a41186a221a200541186a221c290000370300200241d0036a41106a221d200541106a221e290000370300200241d0036a41086a220d200541086a221f290000370300200220052900003703d003200041086a22202900002109200041106a22212900002108200041186a2222290000210a20052000290000370000201c200a370000201e2008370000201f20093700002022201a2903003700002021201d2903003700002020200d290300370000200020022903d003370000200041606a2100200541206a2105201b417f6a221b0d000b0b024020060d00200621190c050b0240200441094d0d00200621190c050b201820134b0d02201820066b21042006417f6a2100201620064105746a2105034020182000490d102005200441016a220410ac062000417f6a220620004f0d04200541606a2105200621002004410a490d000c040b0b200620184194acc900105f000b201820134194acc9001055000b20182006417f6a2200490d0c2018201341a4acc9001055000b200641016a21190b0240200320022802f401470d00200241f0016a200310a00220022802f001210120022802f80121030b200120034103746a2203200436020420032019360200200220022802f80141016a22033602f801024020034102490d0020022802f0012101024003400240024002400240024020012003417f6a4103746a2200280200450d00200341037420016a220641746a2802002204200028020422054b0d010b20034103490d022000280204210520012003417d6a221d4103746a28020421000c010b200341024d0d0520012003417d6a221d4103746a2802042200200520046a4d0d00200341034d0d05200641646a280200200020046a4b0d050b20002005490d010b2003417e6a211d0b02400240024002400240024002402003201d41016a221f4d0d002003201d4d0d012001201d41037422206a2203280204222120032802006a22052001201f41037422226a2203280200220d490d02200520134b0d032012200d4105746a22002003280204221e41057422016a2103200541057421062005200d6b221b201e6b2204201e490d0420152000200110c30a220420016a2105201e4101480d05201b201e4c0d05201220066a211b20042101034020002003200120032001412010c60a41004822061b2204290000370000200041186a200441186a290000370000200041106a200441106a290000370000200041086a200441086a2900003700002001200141206a20061b2101200041206a21000240200341206a200320061b2203201b490d00200021030c080b20012005490d000b200021030c060b201f200341b4acc900103c000b201d200341c4acc900103c000b200d200541d4acc900105f000b2005201341d4acc9001055000b201520032004410574220110c30a221b20016a21050240201e41014e0d00201b21010c020b0240200441014e0d00201b21010c020b201620066a21040340200420032005200541606a221a200341606a221c412010c60a41004822061b41606a2201290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002005201a20061b210502402000201c200320061b2203490d00201b21010c030b200441606a2104201b21012005201b4b0d000c020b0b20002103200421010b20032001200520016b41607110c30a1a024020022802f8012203201d4d0d0020022802f001220120206a22002021201e6a3602042000200d3602002003201f4d0d02200120226a2200200041086a2003201d6b41037441706a10c40a1a20022003417f6a22033602f801200341014b0d010c030b0b201d200341e4acc900103c000b201f20031045000b201921182019450d0b0c000b0b1030000b1034000b41e0a8c8004119418ca9c8001035000b200241113602d40320024194c5ca003602d00341a5c5ca0041de00200241d0036a41fca8c800418ca9c800103d000b200241113602d40320024194c5ca003602d00341a5c5ca0041de00200241d0036a41fca8c800418ca9c800103d000b4198dfc20041fa0041a4e0c2001065000b4198dfc20041fa004194e0c2001065000b200241fc016a411d36020020024194016a41023602002002420237028401200241f8f4c30036028001200241043602f401200241fcf6c3003602f0012002200241f0016a360290012002200241d0036a3602f80120024180016a4188f5c3001043000b41002802a8fe4a4105490d04200241213602f4012002200241dc026a3602f00141002802a4fe4a210341002802a0fe4a210141002802acfe4a2100200241e0036a420237030020024184046a41d5f6c500ad4280808080800c84370200200241f8036a41bdf6c500ad4280808080800384370300200241f0036a4201370300200241d8036a4112360200200241ec036a200241f0016a36020020024188fac5003602dc0320024281808080d03737028c04200241003602800420024198fac5003602d403200241053602d003200141f4ddca00200041024622001b200241d0036a200341b0a7c00020001b2802101103000c040b2000201841a4acc900105f000b024020022802f40141ffffffff0171450d0020022802f00110390b2014450d00201510390b200e4100200f1b2120200228028c03210120022802880321032002280290032100200220133602880220022011360284022002201236028002200241003602fc012002200320004105746a3602f801200220033602f401200220013602f001200241f0016a210d0b200241e0026a41186a2200200d41186a2802002201360200200241b0036a41086a2205200d41086a290200370300200241b0036a41106a221c200d41106a290200370300200241b0036a41186a221d200136020020024188036a41206a221e200241d0036a41206a221f29020037030020024188036a41186a2221200241d0036a41186a222229020037030020024188036a41106a2212200241d0036a41106a221329020037030020024188036a41086a2218200241d0036a41086a22012902003703002002200d2902003703b003200220022902d00337038803200241e0026a41206a2215200241f0016a41206a22042903003703002000200241f0016a41186a2206290300370300200241e0026a41106a2219200241f0016a41106a221b290300370300200241e0026a41086a2216200241f0016a41086a221a290300370300200220022903f0013703e002200241fc036a2010360200200241f8036a2007360200200241f4036a2020360200200220033602d403200241013602d003200120022903b003370300201320052903003703002022201c290300370300201f201d280200360200200241003602800420024184046a22032002290388033702002002418c046a201829030037020020024194046a20122903003702002002419c046a2021290300370200200241a4046a201e290300370200200241003602ac04200241d0046a2015290300370300200241c8046a2000290300370300200241c0046a2019290300370300200241b8046a2016290300370300200241b0046a221f20022903e002370300200241ac046a211d20024180046a2105410021000340024002402000450d00200241106a200510ae060240200228021022004108460d002002280214211c0c020b02402002280280042200450d00024020022802840441ffffff3f71450d00200010390b20022802980441ffffff3f71450d0020022802940410390b200320022902f001370200200341086a201a290200370200200341106a201b290200370200200341186a2006290200370200200341206a200429020037020020024100360280040b20022802d4032100200241003602d40302402000450d0020032001290200370200200341206a200141206a290200370200200341186a200141186a290200370200200341106a200141106a290200370200200341086a200141086a29020037020020022000360280040c020b024020022802ac04450d00200241086a201d10ae060240200228020822004108460d00200228020c211c0c020b024020022802ac042203450d000240200241b0046a28020041ffffff3f71450d00200310390b200241c4046a28020041ffffff3f71450d00200241c0046a28020010390b201f200d290200370200200241d4046a2010360200200241d0046a2007360200200241cc046a2020360200201f41086a200d41086a290200370200201f41106a200d41106a290200370200201f41186a200d41186a280200360200200241003602ac0420022802d003450d0020022802d4032203450d00024020022802d80341ffffff3f71450d00200310390b200241ec036a28020041ffffff3f71450d00200241e8036a28020010390b02402002280280042203450d00024020022802840441ffffff3f71450d00200310390b20022802980441ffffff3f71450d0020022802940410390b20022802ac042203450d020240200241b0046a28020041ffffff3f71450d00200310390b200241c4046a28020041ffffff3f71450d02200241c0046a28020010390c020b024020004107460d00200220003602d8042002201c3602dc0441002802a8fe4a4104490d00200241233602ec04200241213602e4042002200241d8046a3602e8042002200241dc026a3602e00441002802a4fe4a210041002802a0fe4a211c41002802acfe4a211e2002420237038002200241f8f9c5003602fc0120024281808080c0363702ac02200241d5f6c500ad4280808080800c843702a402200241003602a002200241bdf6c500ad4280808080800384370398022002420237039002200241123602f80120024198fac5003602f401200241043602f001200041b0a7c000201e410246221e1b28021021002002200241e0046a36028c02201c41f4ddca00201e1b200241f0016a20001103000b20022802800421000c000b0b20022802d0022100024020022802d8022203450d00200341246c21012000210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b024020022802d4022203450d00200341246c450d00200010390b0240200228028c012201450d002002280284012103200141246c210103400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402002280288012203450d00200341246c450d0020022802840110390b200241f0046a2400410035029cde4a0bc80901077f230041c0006b2204240041022004108d062004410036020041a1bfc90041102004410410a302200441186a22054200370300200441106a22064200370300200441086a2207420037030020044200370300200441206a41b9fec300410610f2012007200441206a41086a220829000037030020042004290020370300200441206a41b0eec900410610f20120052008290000370300200620042900203703002004200036022020044120200441206a410410a30220054200370300200642003703002007420037030020044200370300200441206a41b9fec300410610f2012007200829000037030020042004290020370300200441206a41e4eec900410610f2012005200829000037030020062004290020370300024002402002280208220741246c41046a2205417f4c0d00200228020021080240024020050d00410121020c010b200510382202450d020b200441003602382004200536023420042002360230200441306a200710d20102400240200741246c22090d002004280230210a200428023821050c010b200428023821050340200441206a2008109106200428022021020240200428023420056b200428022822074f0d00200441306a20052007108101200428023821050b2004280230220a20056a2002200710c30a1a2004200520076a220536023802402004280224450d00200210390b200841246a21082009415c6a22090d000b0b20044120200a200510a30202402004280234450d00200a10390b20042001360230200441186a22084200370300200441106a22024200370300200441086a2205420037030020044200370300200441206a41b9fec300410610f2012005200441206a41086a220729000037030020042004290020370300200441206a41d0eec900410a10f201200641086a220920072900003700002006200429002037000020044120200441306a10a2042004200136022020042000417f6a10ef022004280200220a2004280208200441206a10a20402402004280204450d00200a10390b20084200370300200242003703002005420037030020044200370300200441206a41b9fec300410610f2012005200729000037030020042004290020370300200441206a4184edc900410b10f20120092007290000370000200620042900203700002004412010fd0102402003450d00200441186a22084200370300200441106a22024200370300200441086a2205420037030020044200370300200441206a41b9fec300410610f2012005200441206a41086a220729000037030020042004290020370300200441206a4190efc900410610f201200641086a22092007290000370000200620042900203700002004412010fd0120084200370300200242003703002005420037030020044200370300200441206a41b9fec300410610f2012005200729000037030020042004290020370300200441206a41d4efc900410a10f20120092007290000370000200620042900203700002004412010fd0120084200370300200242003703002005420037030020044200370300200441206a41b9fec300410610f2012005200729000037030020042004290020370300200441206a41f0efc900410b10f20120092007290000370000200620042900203700002004412010ac020b200441c0006a24000f0b1034000b1030000b0700101c4101460b9d0603017f017e137f230041e0006b220224002002200136020c024002400240024002402002410c6a10082203422088a722010d00200042003702042000410028029cde4a3602000c010b2002200136021420022003a722043602102002200241106a10ad0120022802000d0320022802042205200228021422064105762201200120054b1b22014105742207417f4c0d010240024020010d00410121080c010b200710382208450d030b41002109200241003602202002200136021c200220083602180240024020050d00200229021c21030c010b200241386a410472210a200241d1006a210b200241ca006a210c200241c3006a210d4100210e02400340200e41016a210e41002101034020062001460d02200a20016a2002280210220f2d00003a00002002200141016a22073602382002200f41016a3602102007210120074120470d000b200241306a41026a220f200d41026a2d00003a00002002412c6a41026a2210200c41026a2d00003a00002002200a2f01003b01342002200d2f00003b01302002200c2f00003b012c2002200a41026a2d00003a00362002280258211120022802542112200228004d211320022801462114200228003f2115200241286a41026a2216200b41026a2d00003a00002002200b2f00003b012802402009200228021c470d00200241186a200910fb0620022802182108200228022021090b200620076b2106200820094105746a220120022f01343b0000200141026a20022d00363a0000200141096a200f2d00003a0000200120022f01303b0007200141106a20102d00003a0000200120022f012c3b000e200120153600032001201436000a20012013360011200141176a20162d00003a0000200120022f01283b00152001201136001c200120123600182002200941016a2209360220200e2005470d000b20022802182108200229021c21030c010b41002108200241003602140240200228021c41ffffff3f71450d00200228021810390b0b2008450d032000200337020420002008360200200410390b200241e0006a24000f0b1034000b1030000b41a1d5ca00412e200241386a41ccd2ca0041dcd2ca00103d000bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010c60a417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010c60a417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b200120014184acc900103c000bb70201037f23004180016b22022400024002400240024020012802002203411071450d0020002802002103410021000340200220006a41ff006a2003410f712204413072200441d7006a2004410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d02200141d1c5c0004102200220006a4180016a410020006b105321000c010b02402003412071450d0020002802002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a2100200341047622030d000b20004180016a22034181014f0d03200141d1c5c0004102200220006a4180016a410020006b105321000c010b20003502002001105021000b20024180016a240020000f0b200341800141bc89c000105e000b200341800141bc89c000105e000be01c030e7f047e097f230041e00b6b220224000240024020012802082203200128020c2204470d00410821030c010b2001200341206a22053602082001280210210620024188036a41186a2207200341186a29000037030020024188036a41106a2208200341106a29000037030020024188036a41086a2209200341086a29000037030020022003290000370388032001280214210a02400240024002402001411c6a280200220b450d00200b210c41002103200b210d0340200a200c41017620036a220c4105746a220e20024188036a412010c60a220f450d02200d200c200f410048220f1b220d200c41016a2003200f1b22036b210c200d20034b0d000b0b02400340200641016a210620052004460d012001200541206a220e3602082007200541186a2900003703002008200541106a2900003703002009200541086a29000037030020022005290000370388030240200b450d0041002103200b210c200b210d0340200a200c41017620036a220c4105746a220520024188036a412010c60a220f450d05200d200c200f410048220f1b220d200c41016a2003200f1b22036b210c200d20034b0d000b0b200e21050c000b0b20012006360210410821030c030b200241d0006a41186a200e41186a290000370300200241d0006a41106a200e41106a290000370300200241d0006a41086a200e41086a2900003703002002200e2900003703500c010b20012006360210200241d0006a41086a200541086a290000370300200241d0006a41106a200541106a290000370300200241d0006a41186a200541186a290000370300200220052900003703500b200241186a200241d0006a41186a2903002210370300200241106a200241d0006a41106a2903002211370300200241086a200241d0006a41086a29030022123703002002200229035022133703002001200641016a360210200141286a280200210f200141206a280200210c200141246a2802002103200241206a41186a2010370300200241206a41106a2011370300200241206a41086a2012370300200220133703202002200336024c2002200c360248200220063602440240200610e108450d002006210d410221030c010b0240024002400240411b1038220d450d00200d41002900f49a46370000200d41086a41002900fc9a46370000200d41106a41002900849b46370000200d41176a410028008b9b463600002002200d360288032002429b808080b00337028c0341041038220d450d00200d200636000020024188036a411b41041081012002280288032205200228029003220a6a200d280000360000200d1039200228028c032101200241b8026a41012005200a41046a220e10e408024002400240024020022802b802220a450d00200241c0026a280200220d4104490d00200d417c714104460d00200a280000200c470d00200a280004220d41036a20034b0d010b2002410036025820024201370350200241d0006a410041041081012002280250220a2002280258220d6a200c3600002002200d41046a220d36025802402002280254220b200d6b41034b0d00200241d0006a200d41041081012002280254210b2002280250210a2002280258210d0b200a200d6a200336000020024188036a41086a200241b8026a41086a280200360200200220022903b8023703880341012005200e20024188036a200a200d41046a10e508210d0240200b450d00200a10390b4104210a200d0d022003210d0c010b024020022802bc02450d00200a10390b4101210a0b02402001450d00200510390b200a21030c050b20024188036a10e608200228028803220d450d0120024198036a280200210820024188036a410c6a28020021042002419c036a280200210b20024188036a41086a2802002107200228028c0321092002410036028003200242013703f802200241f8026a4100410410810120022802f802200228028003220a6a20033600002002200a41046a36028003200d2007200241f8026a10d601200241f8026a200b10d2010240200b450d002004200b410c6c6a21142004210a0340200a280200200a41086a280200200241f8026a10d601200a410c6a220a2014470d000b0b024020022802fc022214200228028003220a6b41034b0d00200241f8026a200a410410810120022802fc022114200228028003210a0b20022802f8022215200a6a200c3600002002200a41046a220a3602800302402014200a6b41034b0d00200241f8026a200a410410810120022802fc02211420022802f8022115200228028003210a0b2015200a6a20063600002002200a41046a220a3602800302402014200a6b41034b0d00200241f8026a200a410410810120022802f8022115200228028003210a0b2015200a6a200f36000020024188036a41e9dabdf306200241206a20022802f8022216200a41046a10e7080240024020022d008803220a4101460d00410321140c010b200241f6026a20022d008b033a0000200241b8026a41086a2002419c036a290200370300200241c8026a200241a4036a290200370300200241d0026a200241ac036a290200370300200241d8026a200241b4036a290200370300200241e0026a200241bc036a290200370300200241e5026a200241c1036a290000370000200220022f0089033b01f402200220024194036a2902003703b80220024188036a41086a2802002115200228028c0321140b200241b4026a41026a2217200241f4026a41026a2d00003a0000200241f8016a41086a2218200241b8026a41086a290300370300200241f8016a41106a2219200241b8026a41106a290300370300200241f8016a41186a221a200241b8026a41186a290300370300200241f8016a41206a221b200241b8026a41206a290300370300200241f8016a41286a221c200241b8026a41286a290300370300200241f8016a41306a200241b8026a41306a290300370300200220022f01f4023b01b402200220022903b8023703f8010240200a4101470d00200241f4016a41026a20172d00003a000020024188036a41086a201829030037030020024188036a41106a201929030037030020024188036a41186a201a29030037030020024188036a41206a201b29030037030020024188036a41286a201c29030037030020024188036a412d6a200241f8016a412d6a290000370000200220022f01b4023b01f401200220022903f80137038803024020022802fc02450d00201610390b200220022f01f4013b01b8022002200241f6016a2d00003a00ba024100210a0c040b024020022802fc02450d00201610390b02402009450d00200d10390b0240200b450d00200b410c6c210d2004210303400240200341046a280200450d00200328020010390b2003410c6a2103200d41746a220d0d000b0b02402008450d002008410c6c450d00200410390b201421032015210d0c020b1030000b410521030b4101210a0b200241b8016a41086a221620024188036a41086a290300370300200241b8016a41106a221720024188036a41106a290300370300200241b8016a41186a221820024188036a41186a290300370300200241b8016a41206a221920024188036a41206a290300370300200241b8016a41286a221a20024188036a41286a290300370300200241b8016a412d6a221b20024188036a412d6a290000370000200220022d00ba023a00f201200220022f01b8023b01f00120022002290388033703b801024002400240200a0d00200241d0006a41186a200b360200200241d0006a41146a2008360200200241d0006a41106a2004360200200241d0006a410c6a2007360200200241d0006a41086a2009360200200241fa006a20022d00f2013a000020024183016a20022903b8013700002002418b016a201629030037000020024193016a20172903003700002002419b016a2018290300370000200241a3016a2019290300370000200241ab016a201a290300370000200241b0016a201b2900003700002002200f360274200220063602702002200c36026c200220022f01f0013b0178200241ff006a2015360000200241fb006a20143600002002200d36025420022003360250024041002802a8fe4a4103490d00200241b8026a411c6a4124360200200241b8026a41146a4121360200200241b8026a410c6a4121360200200241213602bc022002200241d0006a3602d0022002200241c8006a3602c8022002200241cc006a3602c0022002200241c4006a3602b80241002802a4fe4a210341002802a0fe4a210d41002802acfe4a210f20024198036a4204370300200241bc036a41d5f6c500ad4280808080800c84370200200241b0036a41b09bc600ad4280808080800284370300200241a8036a420437030020024190036a411236020020024188036a411c6a200241b8026a360200200241909bc6003602940320024281808080f0d0003702c403200241003602b80320024198fac50036028c032002410336028803200d41f4ddca00200f410246220f1b20024188036a200341b0a7c000200f1b2802101103000b200241a4046a200241d0006a41e80010c30a1a200241093602a004200242023703f003200220024188036a3602b802200241f8016a200241b8026a10d205200241b8026a41086a200241f8016a41086a280200360200200220022903f8013703b802200241b8026a10cd062103024020022903f0034202510d0020022d00880341ff01714102470d00200228029003450d00200228028c0310390b200241a0046a10ce062003450d01410621030b024020034107470d00410721030c020b2002410036029003200242013703880320024188036a41004104108101200228028803220f200228029003220a6a200c3600002002200a41046a220c360290030240200228028c03220a200c6b41034b0d0020024188036a200c4104108101200228028c03210a200228028803210f200228029003210c0b200f200c6a410036000041012005200e200f200c41046a10e908200a450d01200f10390c010b410721030b2001450d00200510390b2000200d36020420002003360200200241e00b6a24000bf20202027f017e230041306b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241206a10b305200241086a200241206a10980320023502102104200228020821030240200228022441ffffff3f71450d00200228022010390b200241306a240020044220862003ad840f0b2002412c6a411d3602002002411c6a41023602002002420237020c200241f8f4c3003602082002410436022420024194f7c3003602202002200241206a3602182002200241086a360228200241086a4188f5c3001043000bdf0901067f230041c0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241106a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02400240024020010d00200241286a22034200370300200241206a22014200370300200241106a41086a2204420037030020024200370310200241306a41b9fec300410610f2012004200241306a41086a220529000037030020022002290030370310200241306a41b0eec900410610f2012003200529000037030020012002290030370300200241086a200241106a412010f50120022802082106200228020c210720034200370300200142003703002004420037030020024200370310200241306a41a6f2c500410d10f2012004200529000037030020022002290030370310200241306a4188b4c600410f10f2012003200529000037030020012002290030370300200741016a410120061b2103200241306a200241106a10f30302400240200228023022010d0020024200370214200241002802ccdd4a3602100c010b20022002290234370214200220013602100b200241106a410c6a200310b10620022802182201410c6c41046a2203417f4c0d010240024020030d00410121040c010b200310382204450d030b20024100360238200220033602342002200436023020022802102106200241306a200110d20102402001450d0020062001410c6c6a2107034020062802002101200241306a2006280208220310d2012006410c6a210602402003450d0020034102742104200228023821030340200128020021050240200228023420036b41034b0d00200241306a20034104108101200228023821030b200141046a2101200228023020036a20053600002002200341046a22033602382004417c6a22040d000b0b20062007470d000b0b200228021c2104024020022802342201200228023822036b41034b0d00200241306a2003410410810120022802342101200228023821030b2002280230220520036a20043600002002200341046a2203360238200241206a28020021040240200120036b41034b0d00200241306a200341041081012002280234210120022802302105200228023821030b200520036a20043600002002200341046a2204360238200241246a28020021030240200120046b41034b0d00200241306a2004410410810120022802302105200228023821040b200520046a20033600002002280230210620022802102105024020022802182203450d002003410c6c21012005210303400240200341046a28020041ffffffff0371450d00200328020010390b2003410c6a2103200141746a22010d000b0b024020022802142203450d002003410c6c450d00200510390b200241c0006a2400200441046aad4220862006ad840f0b2002413c6a411d360200200241246a410236020020024202370214200241f8f4c30036021020024104360234200241a8f7c3003602302002200241306a3602202002200241106a360238200241106a4188f5c3001043000b1034000b1030000b8d0201057f230041f0016b22022400200241086a41186a4200370300200241086a41106a22034200370300200241086a41086a420037030020024200370308200241086a41a6f2c500410d10f201200341b3f2c500411110f2012002200241086a412010f5012002280204210320022802002104200241d0016a41186a4200370300200241d0016a41106a22054200370300200241d0016a41086a4200370300200242003703d001200241d0016a41f1b5c900410d10f2012005418bb6c900410c10f201200241086a200241d0016a412010b202200228028801210520022802980121062000200136020820002003410020041b36020020004101200520064102461b360204200241f0016a24000bdf6c0a057f017e017f017e097f027e027f017e167f027e230041a00e6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241980e6a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024002400240024020010d00200241d0036a41186a22014200370300200241d0036a41106a22044200370300200241d0036a41086a22054200370300200242003703d003200241c8006a41a6f2c500410d10f2012005200241c8006a41086a2203290000370300200220022900483703d003200241c8006a41c4b5c600411110f2012001200329000037030020042002290048370300200241c8006a200241d0036a10e60320022802482106200229024c2107200142003703002004420037030020054200370300200242003703d003200241c8006a41f4eec600410510f20120052003290000370300200220022900483703d003200241c8006a41b483c800410a10f2012001200329000037030020042002290048370300200241c8006a200241d0036a4120109c0220022802482108200229024c2109200142003703002004420037030020054200370300200242003703d003200241c8006a41f1b5c900410d10f20120052003290000370300200220022900483703d003200241c8006a418bb6c900410c10f2012001200329000037030020042002290048370300200241c8006a200241d0036a412010b20220022802d001210a20022802cc01210b20022802d801210c200142003703002004420037030020054200370300200242003703d003200241c8006a41b9fec300410610f20120052003290000370300200220022900483703d003200241c8006a41b0eec900410610f2012001200329000037030020042002290048370300200241206a200241d0036a412010f5012002280220210d2002280224210e10f003200241c8006a41186a220f4200370300200241c8006a41106a221042003703002003420037030020024200370348200241c0086a41a6f2c500410d10f2012003200241c0086a41086a2211290000370300200220022900c008370348200241c0086a41c4b5c600411110f201200f2011290000370300201020022900c008370300200241c0086a200241c8006a10e60320022802c008211220022902c4082113200142003703002004420037030020054200370300200242003703d003200241c8006a41f1b5c900410d10f20120052003290000370300200220022900483703d003200241c8006a418bb6c900410c10f2012001200329000037030020042002290048370300200241c8006a200241d0036a412010b202200142003703002004420037030020054200370300200242003703d003200241c8006a41f4eec600410510f20120052003290000370300200220022900483703d003200241c8006a41b483c800410a10f2012001200329000037030020042002290048370300200241c8006a200241d0036a4120109c0220022802482105200229024c2114200f4200370300201042003703002003420037030020024200370348200241c0086a41a6f2c500410d10f20120032011290000370300200220022900c008370348200241c0086a41c4b7c600410910f201200f2011290000370300201020022900c008370300200241c0086a200241c8006a10f1030240024020022802c00822110d00200242003702b40b41002115200241002802ccdd4a22113602b00b410021160c010b20022902c4082117200220113602b00b200220173702b40b2017422088a721162017a721150b200241e0006a4200370300200241d8006a4200370300200241c8006a41086a2201420037030020024200370348200241c0086a41a6f2c500410d10f2012001200241c0086a41086a2203290000370300200220022900c008370348200241c0086a41f0b4c600410f10f201201041086a2003290000370000201020022900c008370000200241c0086a200241c8006a10f2030240024020022802c00822180d004100211941002802ccdd4a21184100211a4100211b0c010b2003280200211a200241cc086a280200211b20022802c40821190b200241e0006a4200370300200241d8006a4200370300200241c8006a41086a2203420037030020024200370348200241c0086a41a6f2c500410d10f2012003200241c0086a41086a2201290000370300200220022900c008370348200241c0086a4188b4c600410f10f201201041086a2001290000370000201020022900c008370000200241c0086a200241c8006a10f30320022802c008220341002802ccdd4a20031b210f024020022902c408420020031b2217422088a72210450d002010410c6c2101200f210303400240200341046a28020041ffffffff0371450d00200328020010390b2003410c6a2103200141746a22010d000b0b200e41016a210341002802ccdd4a211c02402017a72201450d002001410c6c450d00200f10390b2013420020121b21132014420020051b211420034101200d1b211d2012201c20121b211e2005201c20051b211f024020100d0002402019450d002019412c6c450d00201810390b02402015450d00201541346c450d00201110390b0240201442ffffffff0383500d00201f10390b2013a72203450d042003412c6c450d04201e10390c040b200242003702f40b200241002802ccdd4a22203602f00b201f417c6a21212011201641346c6a2115201e2013422088a7412c6c6a21122014422088a72122410021234100210d4100212441002125201e210303402025417f6a2101202120254102746a2105034020122003460d04200141016a2101200541046a2105200328020021102003412c6a220e210320104102470d000b200141016a2125200d21102024210302400340024002402003450d002010210d200321240c010b41002011201120154622031b210f201020112015476a210d410121242015201141346a20031b2111201021260b0240200f0d00201621270c020b41002103200d2110200f28020022282001490d000b200e210320282001460d01202621270b200141016a212502400240200120224f0d0020052802002105200241106a2001201d10f40302402002280210450d0041002110200228021421290c020b41b0c8c60041de004190c9c6001065000b02400240201a450d00201a410274417c6a41027641016a2128410021034100210503402022201820036a221041286a2802006a2001460d022003412c6a21032028200541016a2205470d000b0b200e21030c020b200241c8006a41086a222a2010410c6a290200370300200241c8006a41106a222b201041146a290200370300200241c8006a41186a222c2010411c6a2902003703002002201041046a29020037034820102802002105201041246a280200212820102010412c6a201a412c6c20036b41546a10c40a1a200241186a2001201d10f4032002280218450d03200228021c2129200241c0086a41186a202c290300370300200241c0086a41106a202b290300370300200241c0086a41086a202a290300370300200220022903483703c008201a417f6a211a410121100b200241c8006a411f6a222a200241c0086a411f6a280000360000200241c8006a41186a222b200241c0086a41186a290300370300200241c8006a41106a222c200241c0086a41106a290300370300200241c8006a41086a222d200241c0086a41086a290300370300200220022903c0083703480240202320022802f40b470d00200241f00b6a202310f50320022802f00b212020022802f80b21230b2020202341386c6a22032001360204200320273602002003410c6a20103a0000200341086a20053602002003410d6a2002290348370000202a2800002101202b2903002117202c290300212e202d290300212f200341346a2029360200200341306a2028360200200341156a202f3700002003411d6a202e370000200341256a20173700002003412c6a2001360000200220022802f80b41016a22233602f80b200e21030c000b0b200241cc086a411d360200200241dc006a41023602002002420237024c200241f8f4c300360248200241043602c408200241c0f7c3003602c0082002200241c0086a3602582002200241980e6a3602c808200241c8006a4188f5c3001043000b41b0c8c60041de0041a0c9c6001065000b20022802f40b212520022802f00b212202402023450d00202341386c21284100210f200241ef006a2112200241e8006a210d200241e0006a210e200241d8006a2115200241d0006a2124410021102022210303402003410c6a2d000022264102460d01200341046a2902002117200328020021112012200341346a280000360000200d2003412d6a290000370300200e200341256a29000037030020152003411d6a2900003703002024200341156a29000037030020022003410d6a290000370348024020022802b80b2205201020116a2201490d000240200520022802b40b470d00200241b00b6a200510f6030b200341386a2103201041016a211020022802b00b200141346c6a220141346a2001200f200520116b6a41346c10c40a1a200120263a000820012017370200200141096a2002290348370000200141116a2024290300370000200141196a2015290300370000200141216a200e290300370000200141296a200d290300370000200141306a20122800003600002002200541016a3602b80b200f417f6a210f202841486a22280d010c020b0b200120051044000b02402025450d00202541386c450d00202210390b200241c8006a41086a200241b00b6a41086a280200360200200220022903b00b370348200241c8006a10f7032002201b3602542002201a3602502002201936024c20022018360248200241c8006a10f8032002201337024c2002201e360248200241c8006a10f903201442ffffffff0383500d00201f10390b200241386a201d10b10602402007420020061b2214422088a7412c6c2205412c6d2201ad42b0037e2217422088a70d002017a72203417f4c0d0002400240024020030d00410421100c010b200310382210450d010b2006201c20061b222a20056a211d4100211e20024100360230200220103602282002200341b0036e220336022c0240200320014f0d00200241286a200110b3062002280230211e0b2009420020081b21132008201c20081b212b02400240024002400240024002400240201d202a460d004101200b200c41024622031b21164101200a20031b21272002280228201e41b0036c6a21032013422088a72129200241c0086a4188026a2126200241c0086a41e8016a211c200241c0086a41a8016a2105200241c0086a4188016a2125200241c0086a41e8006a210620024188096a2108200241c0086a41286a2110200241c0086a41086a210f2002418c0b6a2118200241c0086a41ac026a2101200241c0086a41a8026a2120200241c8006a41ac026a210d200241c0086a41386a2123202b212841002111202a211202400340201228020022154103460d0141022124024020154102460d000240024020150d0020024198086a201241046a28020010eb03200241c8006a200228029808220e20022802a00810ec03024020022802f0022219450d00200241f00b6a200241c8006a41a80210c30a1a200241b00b6a41386a200d41386a290200370300200241b00b6a41306a200d41306a290200370300200241b00b6a41286a200d41286a290200370300200241b00b6a41206a200d41206a290200370300200241b00b6a41186a200d41186a290200370300200241b00b6a41106a200d41106a290200370300200241b00b6a41086a200d41086a2902003703002002200d2902003703b00b0b0240200228029c08450d00200e10390b2019450d06200241c0086a200241f00b6a41a80210c30a1a200141386a200241b00b6a41386a290300370200200141306a200241b00b6a41306a290300370200200141286a200241b00b6a41286a290300370200200141206a200241b00b6a41206a2221290300370200200141186a200241b00b6a41186a220a290300370200200120022903b00b370200200141086a200241b00b6a41086a220b290300370200200141106a200241b00b6a41106a220c290300370200200220193602e80a20022802840b210e200241b00b6a201110b406200228023c2222450d072027200e6a2115200228024021242002280238211f200241f00b6a201110b506200241d0056a202010b505200220022802c008200e10f403202220246a221a4100201a201f6b221b201b201a4b1b2022706b211a202441002024201f6b221f201f20244b1b2022706b2124024002402002280200450d00200228020421220c010b4100212241002802a8fe4a4102490d004100212241002802a4fe4a211941002802a0fe4a211f41002802acfe4a211b20024201370358200241c0f0c50036025420024281808080f00a37028401200241d0bcca00ad4280808080d00a8437027c2002410036027820024181f1c500ad42808080809006843703702002420037036820024119360250200241e8f0c50036024c20024102360248200241f4ddca00360264201f41f4ddca00201b410246221b1b200241c8006a201941b0a7c000201b1b28021011030020022802e80a21190b2015201a4b211b202420276a2124200241d0036a41186a201841186a290200370300200241d0036a41106a201841106a290200370300200241d0036a41086a201841086a290200370300200241a0076a41086a201041086a290200370300200241a0076a41106a201041106a290200370300200241a0076a41186a201041186a290200370300200220182902003703d003200220102902003703a00720022802c408211f200241c8006a41386a200541386a290200370300200241c8006a41306a200541306a290200370300200241c8006a41286a200541286a290200370300200241c8006a41206a200541206a290200370300200241c8006a41186a200541186a290200370300200241c8006a41106a200541106a290200370300200241c8006a41086a200541086a29020037030020024198086a41086a200b29030037030020024198086a41106a200c29030037030020024198086a41186a200a29030037030020024198086a41206a202129030037030020022005290200370348200220022903b00b37039808200241f0076a41206a200241f00b6a41206a290300370300200241f0076a41186a200241f00b6a41186a290300370300200241f0076a41106a200241f00b6a41106a290300370300200241f0076a41086a200241f00b6a41086a290300370300200241e0076a41086a200241d0056a41086a280200360200200241c0076a41186a200f41186a290200370300200241c0076a41106a200f41106a290200370300200241c0076a41086a200f41086a290200370300200220022903f00b3703f007200220022903d0053703e0072002200f2902003703c00720024180076a41186a200841186a29020037030020024180076a41106a200841106a29020037030020024180076a41086a200841086a2902003703002002200829020037038007200241e0066a41186a200641186a290200370300200241e0066a41106a200641106a290200370300200241e0066a41086a200641086a290200370300200220062902003703e006200241c0066a41186a202541186a290200370300200241c0066a41106a202541106a290200370300200241c0066a41086a202541086a290200370300200220252902003703c006200241a0066a41186a201c41186a290200370300200241a0066a41106a201c41106a290200370300200241a0066a41086a201c41086a2902003703002002201c2902003703a00620024180066a41186a202641186a29020037030020024180066a41106a202641106a29020037030020024180066a41086a202641086a2902003703002002202629020037038006024020022802f00a450d00201910390b2015201a201b1b211920152024492124024020022802fc0a450d0020022802f40a10390b2015201920241b21190c010b201120294f0d0720024198086a202828020010eb03200241c8006a200228029808220e20022802a00810ec03024020022802f0022219450d00200241f00b6a200241c8006a41a80210c30a1a200241b00b6a41386a200d41386a290200370300200241b00b6a41306a200d41306a290200370300200241b00b6a41286a200d41286a290200370300200241b00b6a41206a200d41206a290200370300200241b00b6a41186a200d41186a290200370300200241b00b6a41106a200d41106a290200370300200241b00b6a41086a200d41086a2902003703002002200d2902003703b00b0b0240200228029c08450d00200e10390b2019450d08200241c0086a200241f00b6a41a80210c30a1a200141386a200241b00b6a41386a290300370200200141306a200241b00b6a41306a290300370200200141286a200241b00b6a41286a290300370200200141206a200241b00b6a41206a2221290300370200200141186a200241b00b6a41186a220a290300370200200120022903b00b370200200141086a200241b00b6a41086a220b290300370200200141106a200241b00b6a41106a220c290300370200200220193602e80a20022802840b210e200241b00b6a201110b406200228023c2222450d092016200e6a2115200228024021242002280238211f200241f00b6a201110b506200241d0056a202010b505200241086a20022802c008200e10f403202220246a221a4100201a201f6b221b201b201a4b1b2022706b211a202441002024201f6b221f201f20244b1b2022706b2124024002402002280208450d00200228020c21220c010b4100212241002802a8fe4a4102490d004100212241002802a4fe4a211941002802a0fe4a211f41002802acfe4a211b20024201370358200241c0f0c50036025420024281808080f00a37028401200241d0bcca00ad4280808080d00a8437027c2002410036027820024181f1c500ad42808080809006843703702002420037036820024119360250200241e8f0c50036024c20024102360248200241f4ddca00360264201f41f4ddca00201b410246221b1b200241c8006a201941b0a7c000201b1b28021011030020022802e80a21190b2015201a4b211b202420166a2124200241d0036a41186a201841186a290200370300200241d0036a41106a201841106a290200370300200241d0036a41086a201841086a290200370300200241a0076a41086a201041086a290200370300200241a0076a41106a201041106a290200370300200241a0076a41186a201041186a290200370300200220182902003703d003200220102902003703a00720022802c408211f200241c8006a41386a200541386a290200370300200241c8006a41306a200541306a290200370300200241c8006a41286a200541286a290200370300200241c8006a41206a200541206a290200370300200241c8006a41186a200541186a290200370300200241c8006a41106a200541106a290200370300200241c8006a41086a200541086a29020037030020024198086a41086a200b29030037030020024198086a41106a200c29030037030020024198086a41186a200a29030037030020024198086a41206a202129030037030020022005290200370348200220022903b00b37039808200241f0076a41206a200241f00b6a41206a290300370300200241f0076a41186a200241f00b6a41186a290300370300200241f0076a41106a200241f00b6a41106a290300370300200241f0076a41086a200241f00b6a41086a290300370300200241e0076a41086a200241d0056a41086a280200360200200241c0076a41186a200f41186a290200370300200241c0076a41106a200f41106a290200370300200241c0076a41086a200f41086a290200370300200220022903f00b3703f007200220022903d0053703e0072002200f2902003703c00720024180076a41186a200841186a29020037030020024180076a41106a200841106a29020037030020024180076a41086a200841086a2902003703002002200829020037038007200241e0066a41186a200641186a290200370300200241e0066a41106a200641106a290200370300200241e0066a41086a200641086a290200370300200220062902003703e006200241c0066a41186a202541186a290200370300200241c0066a41106a202541106a290200370300200241c0066a41086a202541086a290200370300200220252902003703c006200241a0066a41186a201c41186a290200370300200241a0066a41106a201c41106a290200370300200241a0066a41086a201c41086a2902003703002002201c2902003703a00620024180066a41186a202641186a29020037030020024180066a41106a202641106a29020037030020024180066a41086a202641086a2902003703002002202629020037038006024020022802f00a450d00201910390b2015201a201b1b211920152024492124024020022802fc0a450d0020022802f40a10390b2015201920241b21190b200241f00b6a41206a20024198086a41206a290300370300200241f00b6a41186a20024198086a41186a290300370300200241f00b6a41106a20024198086a41106a290300370300200241f00b6a41086a20024198086a41086a290300370300200241b00b6a41086a200241f0076a41086a290300370300200241b00b6a41106a200241f0076a41106a290300370300200241b00b6a41186a200241f0076a41186a290300370300200241b00b6a41206a200241f0076a41206a29030037030020022002290398083703f00b200220022903f0073703b00b200241f0056a41086a200241e0076a41086a280200360200200241d0056a41186a200241c0076a41186a290300370300200241d0056a41106a200241c0076a41106a290300370300200241d0056a41086a200241c0076a41086a290300370300200241b0056a41186a200241a0076a41186a290300370300200241b0056a41106a200241a0076a41106a290300370300200241b0056a41086a200241a0076a41086a290300370300200220022903e0073703f005200220022903c0073703d005200220022903a0073703b00520024190056a41186a20024180076a41186a29030037030020024190056a41106a20024180076a41106a29030037030020024190056a41086a20024180076a41086a290300370300200220022903800737039005200241f0046a41186a200241e0066a41186a290300370300200241f0046a41106a200241e0066a41106a290300370300200241f0046a41086a200241e0066a41086a290300370300200220022903e0063703f004200241d0046a41186a200241c0066a41186a290300370300200241d0046a41106a200241c0066a41106a290300370300200241d0046a41086a200241c0066a41086a290300370300200220022903c0063703d0042023200241c8006a41386a290300370300200241c0086a41306a200241c8006a41306a2903003703002010200241c8006a41286a290300370300200241c0086a41206a200241c8006a41206a290300370300200241c0086a41186a200241c8006a41186a290300370300200241c0086a41106a200241c8006a41106a290300370300200f200241c8006a41086a290300370300200220022903483703c008200241b0046a41186a200241a0066a41186a290300370300200241b0046a41106a200241a0066a41106a290300370300200241b0046a41086a200241a0066a41086a290300370300200220022903a0063703b00420024190046a41186a20024180066a41186a29030037030020024190046a41106a20024180066a41106a29030037030020024190046a41086a20024180066a41086a290300370300200220022903800637039004200241f0036a41186a200241d0036a41186a290300370300200241f0036a41106a200241d0036a41106a290300370300200241f0036a41086a200241d0036a41086a290300370300200220022903d0033703f003410021240b20032024360200200341046a20022903f00b370200200341306a20193602002003412c6a200e360200200341346a20022903b00b3702002003410c6a200241f00b6a41086a290300370200200341146a200241f00b6a41106a2903003702002003411c6a200241f00b6a41186a290300370200200341246a200241f00b6a41206a2903003702002003413c6a200241b00b6a41086a290300370200200341c4006a200241b00b6a41106a290300370200200341cc006a200241b00b6a41186a290300370200200341d4006a200241b00b6a41206a290300370200200341e8006a2022360200200341ec006a201f360200200341e4006a200241f0056a41086a280200360200200341dc006a20022903f005370200200341f0006a20022903d005370200200341f8006a200241d0056a41086a29030037020020034180016a200241d0056a41106a29030037020020034188016a200241d0056a41186a29030037020020034190016a20022903b00537020020034198016a200241b0056a41086a290300370200200341a0016a200241b0056a41106a290300370200200341a8016a200241b0056a41186a290300370200200341c8016a20024190056a41186a290300370200200341c0016a20024190056a41106a290300370200200341b8016a20024190056a41086a290300370200200341b0016a200229039005370200200341e8016a200241f0046a41186a290300370200200341e0016a200241f0046a41106a290300370200200341d8016a200241f0046a41086a290300370200200341d0016a20022903f00437020020034188026a200241d0046a41186a29030037020020034180026a200241d0046a41106a290300370200200341f8016a200241d0046a41086a290300370200200341f0016a20022903d004370200200341c8026a2023290300370200200341c0026a200241c0086a41306a290300370200200341b8026a2010290300370200200341b0026a200241c0086a41206a290300370200200341a8026a200241c0086a41186a290300370200200341a0026a200241c0086a41106a29030037020020034198026a200f29030037020020034190026a20022903c008370200200341e8026a200241b0046a41186a290300370200200341e0026a200241b0046a41106a290300370200200341d8026a200241b0046a41086a290300370200200341d0026a20022903b00437020020034188036a20024190046a41186a29030037020020034180036a20024190046a41106a290300370200200341f8026a20024190046a41086a290300370200200341f0026a200229039004370200200341a8036a200241f0036a41186a290300370200200341a0036a200241f0036a41106a29030037020020034198036a200241f0036a41086a29030037020020034190036a20022903f003370200200341b0036a2103202841046a2128201141016a21112012412c6a2212201d470d000b0b201e20116a211e0b2002201e36023002402014a72203450d002003412c6c450d00202a10390b200241d0036a41186a4200370300200241d0036a41106a4200370300200241d0036a41086a22034200370300200242003703d003200241c8006a41a6f2c500410d10f2012003200241c8006a41086a220d290000370300200220022900483703d003200241c8006a41c4b7c600410910f201200441086a200d29000037000020042002290048370000200241c8006a200241d0036a10f1032002280248220341002802ccdd4a20031b2108200229024c420020031b2214422088a72203450d062008200341346c6a212420022802282128200241c8006a41186a210e200241c8006a41106a2115200821010340200141086a2d000022104102460d0720012902002217a7210341002105024020104101470d00200e200141216a2900003703002015200141196a290000370300200d200141116a2900003703002002200141096a290000370348410121050b200241c0086a41186a2210200e290300370300200241c0086a41106a220f2015290300370300200241c0086a41086a2211200d290300370300200220022903483703c008201e20034d0d062017422088a7211202402028200341b0036c6a22032802000d00200341dc006a221c28020021260240200341e4006a22252802002206450d00202610390b20252006360200201c20263602000b20034101360200200320022903c008370009200320022f00f00b3b002920032012360204200341116a2011290300370000200341196a200f290300370000200341216a20102903003700002003412b6a200241f00b6a41026a2d00003a0000200341086a20053a00002003412c6a200241c8006a41840310c30a1a200141346a22012024470d000c070b0b41feefc500413241b0f0c5001065000b41a0dcc30041394188dac8001035000b2011202941c8f0c500103c000b41feefc500413241d8f0c5001065000b41a0dcc30041394188dac8001035000b2003201e41c0bcca00103c000b02402014a72203450d00200341346c450d00200810390b0240201342ffffffff0383500d00202b10390b201e41b0036c22114104722203417f4c0d0120022802282110200310382201450d00200241003602502002200336024c20022001360248200241c8006a201e10d20102400240201e0d002002280250210d2002280248210e0c010b4100210103400240024002400240201020016a22032802000e03000102030b0240200228024c20022802502205470d00200241c8006a20054101108101200228025021050b200228024820056a41003a00002002200541016a360250200341046a200241c8006a10b6062003412c6a280200210f0240200228024c200228025022056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200f3600002002200541046a2205360250200341306a280200210f0240200228024c20056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200f3600002002200541046a360250200341346a200241c8006a10b606200341e0006a280200220f4103762112200341dc006a280200210d024002400240200f418004490d0020124102742105200f418080084f0d012005410172210e0240200228024c200228025022056b41014b0d00200241c8006a20054102108101200228025021050b200228024820056a200e3b0000200541026a21050c020b2012410274210e0240200228024c20022802502205470d00200241c8006a20054101108101200228025021050b200228024820056a200e3a0000200541016a21050c010b2005410272210e0240200228024c200228025022056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200e360000200541046a21050b200220053602500240200228024c20056b2012200f4107716a220f410376200f4107714100476a220f4f0d00200241c8006a2005200f108101200228025021050b200228024820056a200d200f10c30a1a20022005200f6a2205360250200341e8006a280200210f0240200228024c20056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200f3600002002200541046a360250412010382205450d05200520034190036a290000370000200541186a220d200341a8036a290000370000200541106a220e200341a0036a290000370000200541086a221520034198036a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a36025020051039200341ec006a280200210f0240200228024c200228025022056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200f3600002002200541046a360250412010382205450d052005200341f0006a290000370000200541186a220d20034188016a290000370000200541106a220e20034180016a290000370000200541086a2215200341f8006a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a360250200510390240200228024c2002280250220f6b411f4b0d00200241c8006a200f41201081012002280250210f0b2002280248200f6a220520034190016a290000370000200541086a20034198016a290000370000200541106a200341a0016a290000370000200541186a200341a8016a2900003700002002200f41206a360250412010382205450d052005200341b0016a290000370000200541186a220d200341c8016a290000370000200541106a220e200341c0016a290000370000200541086a2215200341b8016a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a36025020051039412010382205450d052005200341d0016a290000370000200541186a220d200341e8016a290000370000200541106a220e200341e0016a290000370000200541086a2215200341d8016a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a36025020051039412010382205450d052005200341f0016a290000370000200541186a220d20034188026a290000370000200541106a220e20034180026a290000370000200541086a2215200341f8016a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a360250200510390240200228024c2002280250220f6b413f4b0d00200241c8006a200f41c0001081012002280250210f0b2002280248200f6a220520034190026a290000370000200541086a20034198026a290000370000200541106a200341a0026a290000370000200541186a200341a8026a290000370000200541206a200341b0026a290000370000200541286a200341b8026a290000370000200541306a200341c0026a290000370000200541386a200341c8026a2900003700002002200f41c0006a360250412010382205450d052005200341d0026a290000370000200541186a220d200341e8026a290000370000200541106a220e200341e0026a290000370000200541086a2215200341d8026a2900003700000240200228024c200228025022126b411f4b0d00200241c8006a20124120108101200228025021120b200228024820126a220f2005290000370000200f41086a2015290000370000200f41106a200e290000370000200f41186a200d2900003700002002201241206a36025020051039412010382205450d052005200341f0026a290000370000200541186a221220034188036a290000370000200541106a220d20034180036a290000370000200541086a220e200341f8026a2900003700000240200228024c2002280250220f6b411f4b0d00200241c8006a200f41201081012002280250210f0b2002280248200f6a22032005290000370000200341086a200e290000370000200341106a200d290000370000200341186a20122900003700002002200f41206a360250200510390c020b0240200228024c20022802502205470d00200241c8006a20054101108101200228025021050b200228024820056a41013a00002002200541016a2205360250200341046a280200210f0240200228024c20056b41034b0d00200241c8006a20054104108101200228025021050b200228024820056a200f3600002002200541046a22053602500240200341086a2d00004101460d000240200228024c2005470d00200241c8006a20054101108101200228025021050b200228024820056a41003a00002002200541016a3602500c020b0240200228024c2005470d00200241c8006a20054101108101200228025021050b200228024820056a41013a00002002200541016a2205360250200341096a21030240200228024c20056b411f4b0d00200241c8006a20054120108101200228025021050b200228024820056a220f2003290000370000200f41086a200341086a290000370000200f41106a200341106a290000370000200f41186a200341186a2900003700002002200541206a3602500c010b0240200228024c20022802502203470d00200241c8006a20034101108101200228025021030b200228024820036a41023a00002002200341016a3602500b2011200141b0036a2201470d000b2002280250210d2002280248210e201e450d00201e41b0036c2101201021030340024020032802000d00200341dc006a220f28020021050240200341e4006a22112802002212450d00200510390b20112012360200200f20053602000b200341b0036a2103200141d07c6a22010d000b0b0240200228022c2203450d00200341b0036c450d00201010390b200241a00e6a2400200dad422086200ead840f0b1030000b1034000bca0102037f017e230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1bad42b0037e2205422088a74541027421012005a721040240024020030d00200241003602100c010b200241186a41043602002002200341b0036c360214200220002802003602100b200220042001200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a200141b0036e360200200241206a24000f0b1034000be90303067f017e017f230041306b22022400200241286a22034200370300200241206a22044200370300200241186a2205420037030020024200370310200241106a41f4eec600410510f201200441b483c800410a10f2012002200241106a4120109c022002280200220641002802ccdd4a20061b2107024002402002290204420020061b2208422088a7220620014d0d00200041003a00042000200720014102746a2802003602000c010b20034200370300200442003703002005420037030020024200370310200241106a41a6f2c500410d10f201200441f0b4c600410f10f2012002200241106a10f2030240200228020022090d00200041023a00040c010b2002280204210502400240200241086a28020022040d00410221060c010b200120066b21012004410274417c6a41027641016a2103410021042009210602400340200641286a2802002001460d012006412c6a21062003200441016a2204470d000b410221060c010b200020062802003602002000200641046a2900003700052000410d6a2006410c6a290000370000200041156a200641146a2900003700002000411d6a2006411c6a290000370000410121060b200020063a00042005450d002005412c6c450d00200910390b0240200842ffffffff0383500d00200710390b200241306a24000bec0604067f017e037f017e230041c0006b22022400200241386a22034200370300200241306a22044200370300200241206a41086a2205420037030020024200370320200241206a41f4eec600410510f201200441b483c800410a10f201200241106a200241206a4120109c022002280210220641002802ccdd4a20061b2107024002402002290214420020061b2208422088a7220620014d0d00200041003a00042000200720014102746a2802003602000c010b20034200370300200442003703002005420037030020024200370320200241106a41a6f2c500410d10f2012005200241106a41086a220929000037030020022002290010370320200241106a41f0b4c600410f10f20120032009290000370300200420022900103703002002200241206a10f20302400240024002402002280200220a0d004100210b41002802ccdd4a210a0c010b2002280204210b200241086a2802002203450d00200120066b21052003410274417c6a41027641016a210941002103200a21060340200641286a2802002005460d022006412c6a21062009200341016a2203470d000b0b200241386a4200370300200241306a4200370300200241206a41086a2206420037030020024200370320200241106a41a6f2c500410d10f2012006200241106a41086a220329000037030020022002290010370320200241106a41c4b5c600411110f201200441086a200329000037000020042002290010370000200241106a200241206a10e6032002280210220641002802ccdd4a20061b21030240024002402002290214420020061b220c422088a720014d0d004102210620032001412c6c6a28020022044102470d010b200041023a00040c010b024020044101460d00200020032001412c6c6a2206290008370005200020062802043602002000410d6a200641106a290000370000200041156a200641186a2900003700002000411d6a200641206a290000370000410121060b200020063a00040b200ca72206450d012006412c6c450d01200310390c010b200041013a0004200020062802003602002000200641046a2900003700052000410d6a2006410c6a290000370000200041156a200641146a2900003700002000411d6a2006411c6a2900003700000b200b450d00200b412c6c450d00200a10390b0240200842ffffffff0383500d00200710390b200241c0006a24000bfa0301057f200141046a2802002102200141086a2802002103024020002d000422044102470d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b024020022003470d00200120034101108101200141086a28020021030b2001280200220220036a41013a0000200141086a2205200341016a2203360200200028020021060240200141046a28020020036b41034b0d0020012003410410810120052802002103200128020021020b200220036a20063600002005200341046a2203360200024020044101460d000240200141046a2802002003470d00200120034101108101200141086a2802002103200128020021020b200220036a41003a0000200141086a200341016a3602000f0b200041046a21000240200141046a220528020022042003470d0020012003410110810120052802002104200141086a2802002103200128020021020b200041016a2100200220036a41013a0000200141086a2205200341016a22033602000240200420036b411f4b0d0020012003412010810120052802002103200128020021020b200220036a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002005200341206a3602000be016020c7f017e230041c0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d0006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02400240024020014104490d0020014104460d00200041f4ddca0020011b220328000021044100210002400240024020032d00040e03020001030b410121000c010b410221000b20014105470d00200241e8006a22014200370300200241e0006a22034200370300200241d0006a41086a2205420037030020024200370350200241306a41b9fec300410610f2012005200241306a41086a220629000037030020022002290030370350200241306a41b0eec900410610f2012001200629000037030020032002290030370300200241086a200241d0006a412010f50120022802082105200228020c2106200241306a10b80620022802382203450d022002200228023022012d00003a00542002410136025020034101460d02200220012d00013a00552002410236025020034102460d02200220012d00023a00562002410336025020034103460d02200220012d00033a00572002410436025020034104460d02200241d8006a20012d00043a00002002410536025020034105460d02200241d9006a20012d00053a00002002410636025020034106460d02200241da006a20012d00063a00002002410736025020034107460d02200241db006a20012d00073a00002002410836025020034108460d02200241dc006a20012d00083a00002002410936025020034109460d02200241dd006a20012d00093a00002002410a3602502003410a460d02200241de006a20012d000a3a00002002410b3602502003410b460d02200241df006a20012d000b3a00002002410c3602502003410c460d02200241e0006a20012d000c3a00002002410d3602502003410d460d02200241e1006a20012d000d3a00002002410e3602502003410e460d02200241e2006a20012d000e3a00002002410f3602502003410f460d02200241e3006a20012d000f3a00002002411036025020034110460d02200241e4006a20012d00103a00002002411136025020034111460d02200241e5006a20012d00113a00002002411236025020034112460d02200241e6006a20012d00123a00002002411336025020034113460d02200241e7006a20012d00133a00002002411436025020034114460d02200241e8006a20012d00143a00002002411536025020034115460d02200241e9006a20012d00153a00002002411636025020034116460d02200241ea006a20012d00163a00002002411736025020034117460d02200241eb006a20012d00173a00002002411836025020034118460d02200241ec006a20012d00183a00002002411936025020034119460d02200241ed006a20012d00193a00002002411a3602502003411a460d02200241ee006a20012d001a3a00002002411b3602502003411b460d02200241ef006a20012d001b3a00002002411c3602502003411c460d02200241f0006a20012d001c3a00002002411d3602502003411d460d02200241f1006a20012d001d3a00002002411e3602502003411e460d02200241f2006a20012d001e3a00002002411f3602502003411f470d010c020b2002413c6a411d360200200241e4006a410236020020024202370254200241f8f4c30036025020024104360234200241dcf7c3003602302002200241306a3602602002200241d0006a360238200241d0006a4188f5c3001043000b200241f3006a20012d001f3a0000200241286a41026a2203200241dd006a2d00003a0000200241246a41026a2207200241e4006a2d00003a0000200220022f01543b012c200220022d00563a002e2002200241db006a2f00003b01282002200241e2006a2f01003b0124200241ec006a2802002108200241e5006a2800002109200241de006a280100210a20024120360250200241d0006a41206a280200210b2002280057210c200241206a41026a200241eb006a2d0000220d3a00002002411c6a41026a20022d002e3a0000200241186a41026a20032d00003a0000200241146a41026a20072d00003a00002002200241e9006a2f000022033b0120200220022f012c3b011c200220022f01283b0118200220022f01243b0114200241106a41026a200d3a0000200220033b011002402002280234450d00200110390b2006410020051b21010240024002400240024020000e03010200010b200241306a200410eb03200241d0006a20022802302200200228023810ec032002418c036a280200210520024184036a280200210720024180036a280200210620022802f802210302402002280234450d00200010390b2003450d0202402006450d00200310390b02402005450d00200710390b200241003602500c030b200410a305200241396a200241186a41026a2d00003a0000200241c0006a200241146a41026a2d00003a0000200241c7006a200241106a41026a2d00003a000020022002411c6a41026a2d00003a0032200220022f011c3b01302002200c360033200220022f01183b00372002200a36013a200220022f01143b013e20022009360041200220022f01103b00452002200b36024c20022008360248200241d0006a20042001200241306a10a2050c020b200241396a200241186a41026a2d00003a0000200241c0006a200241146a41026a2d00003a0000200241c7006a200241106a41026a2d00003a0000200220022f011c3b01302002200c360033200220022f01183b00372002200a36013a200220022f01143b013e20022009360041200220022f01103b004520022002411c6a41026a2d00003a00322002200b36024c20022008360248200241d0006a20042001200241306a10a2050c010b200241396a200241186a41026a2d00003a0000200241c0006a200241146a41026a2d00003a0000200241c7006a200241106a41026a2d00003a0000200220022f011c3b01302002200c360033200220022f01183b00372002200a36013a200220022f01143b013e20022009360041200220022f01103b004520022002411c6a41026a2d00003a00322002200b36024c20022008360248200241d0006a20042001200241306a10a2050b0240410110382201450d00200242013702342002200136023002400240200228025022030d00200141003a0000428080808010210e0c010b200141013a0000200241013602382003200241d8006a280200200241306a10d601200241dc006a280200210302402002280234200228023822016b41034b0d00200241306a20014104108101200228023821010b2002280230220420016a20033600002002200141046a2203360238412010382201450d012001200241e4006a290200370000200141186a2206200241fc006a290200370000200141106a2207200241f4006a290200370000200141086a220d200241ec006a29020037000002402002280234220520036b411f4b0d00200241306a200341201081012002280234210520022802302104200228023821030b200420036a22002001290000370000200041186a2006290000370000200041106a2007290000370000200041086a200d2900003700002002200341206a220336023820011039200241d0006a41106a28020021010240200520036b41034b0d00200241306a2003410410810120022802302104200228023821030b200420036a2001360000200341046aad422086210e2002280230210120022802502203450d002002280254450d00200310390b200241c0036a2400200e2001ad840f0b1030000b41a5bdca00412e200241d0006a41a8c0c90041d4bdca00103d000b4002017e017f02400240102c2201422088a722020d00410021022000410028029cde4a3602000c010b20002001a73602000b20002002360208200020023602040bd311020d7f017e230041b0046b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d0006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a20024280808080802037021c2002200241a0026a3602180240024020014104490d0020022001417c6a3602a4022002200041f4ddca0020011b220141046a3602a00220012800002104200241d0006a200241186a10e50520022802502200450d00200241e8026a41086a220120024184016a2802003602002002200241fc006a2902003703e802200241f8006a2802002105200241f4006a2802002106200241f0006a2802002107200241ec006a2802002108200241e8006a2802002109200241e4006a280200210a200241e0006a280200210b200241dc006a280200210c200241d0006a41086a280200210d2002280254210e0240024020022802182802040d00200241b8026a41086a2001280200360200200220022903e8023703b8020c010b0240200d450d00200d410c6c21032000210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200e450d00200e410c6c450d00200010390b0240200a450d00200a4104742103200c41086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200341706a22030d000b0b0240200b41ffffffff0071450d00200c10390b02402009450d002008450d00200910390b410021002005450d00200610390b2000450d00200241086a41086a200241b8026a41086a2802002201360200200220022903b802220f370308200241c0006a2005360200200241186a41206a2007360200200241346a20083602002002412c6a200a360200200241186a41106a200b360200200241c4006a200f370200200241cc006a20013602002002200636023c200220093602302002200c3602242002200d3602202002200e36021c20022000360218200241d0006a41186a22014200370300200241d0006a41106a22034200370300200241d0006a41086a220e420037030020024200370350200241e8026a41b9fec300410610f201200e200241e8026a41086a2209290000370300200220022900e802370350200241e8026a41b0eec900410610f20120012009290000370300200320022900e8023703002002200241d0006a412010f501200228020421052002280200210b2001420037030020034200370300200e420037030020024200370350200241e8026a41f1b5c900410d10f201200e2009290000370300200220022900e802370350200241e8026a418bb6c900410c10f20120012009290000370300200320022900e802370300200241e8026a200241d0006a412010b2024100210320054100200b1b2101200241186a41186a210e0240024020022802f80322094102470d00200241d0006a410041800110c50a1a2002418c026a4200370200200242003702840220024101360280022002428280808080193703f80120024286808080c00c3703f001200241003602e801200242013703d80120024281808080103703d0010c010b200241d0006a200241e8026a41900110c30a1a200241d0006a41c4016a200241e8026a41c4016a280200360200200241d0006a41bc016a200241e8026a41bc016a290200370200200241d0006a41b4016a200241e8026a41b4016a290200370200200241d0006a41ac016a200241e8026a41ac016a290200370200200241d0006a41a4016a200241e8026a41a4016a290200370200200241d0006a419c016a200241e8026a419c016a290200370200200241e4016a20022902fc03370200200921030b200220033602e0012002200136029c022002200136029802200241a0026a200241d0006a20042002280244200e20022802482000200d200228024c200c200a10bd05024020022802a002220a4107460d00200241b8026a41106a200241a0026a41106a280200360200200241b8026a41086a200241a0026a41086a290300370300200220022903a0023703b80241002802a8fe4a4104490d00200241dc026a411b360200200241023602d402200220043602e4022002200241b8026a3602d8022002200241e4026a3602d00241002802a4fe4a210141002802a0fe4a210341002802acfe4a2100200241e8026a41106a42023703002002419c036a4192c8c200ad4280808080b0098437020020024190036a41ecc7c200ad4280808080e0048437030020024188036a4202370300200241e8026a41086a411236020020024184036a200241d0026a360200200241f0a8c3003602f40220024281808080d0d0003702a4032002410036029803200241f8a4c3003602ec02200241043602e802200341f4ddca00200041024622001b200241e8026a200141b0a7c00020001b2802101103000b20022802182100024020022802202201450d002001410c6c21032000210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b0240200228021c2201450d002001410c6c450d00200010390b200228022421000240200228022c2201450d0020014104742103200041086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200341706a22030d000b0b0240200228022841ffffffff0071450d00200010390b024020022802302201450d002002280234450d00200110390b02402002280240450d00200228023c10390b410110382201450d012001200a4107463a0000200241b0046a24002001ad428080808010840f0b200241f4026a411d360200200241e4006a410236020020024202370254200241f8f4c300360250200241043602ec0220024180f8c3003602e8022002200241e8026a3602602002200241d0006a3602f002200241d0006a4188f5c3001043000b1030000bb30301037f230041c0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241206a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024020010d00200241386a4200370300200241306a22034200370300200241286a420037030020024200370320200241206a4192d1c800410b10f201200341c0d3c800411310f201200241086a200241206a412010f501200228020c210120022802082104410410382203450d0120032001410020041b360000200241c0006a24002003ad4280808080c000840f0b2002411c6a411d360200200241346a410236020020024202370224200241f8f4c30036022020024104360214200241a0f8c3003602102002200241106a3602302002200241206a360218200241206a4188f5c3001043000b1030000b8a0502057f017e23004180036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241106a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024020014104490d0020014104460d00200041f4ddca0020011b220428000021004100210302400240024020042d00040e03020001030b410121030c010b410221030b20014105470d00024002400240024020030e03010200010b2002200010eb03200241106a20022802002203200228020810ec03200241cc026a2802002104200241c4026a2802002105200241c0026a280200210620022802b802210102402002280204450d00200310390b2001450d0102402006450d00200110390b02402004450d00200510390b200241003602000c020b200010a3050b2002200010bc060b410110382201450d01200242013702142002200136021002400240200228020022030d00200141003a000042808080801021070c010b200141013a0000200241013602182003200241086a280200200241106a10d60120023502184220862107200228021021012002280204450d00200310390b20024180036a240020072001ad840f0b2002410c6a411d360200200241246a410236020020024202370214200241f8f4c30036021020024104360204200241c0f8c300360200200220023602202002200241106a360208200241106a4188f5c3001043000b1030000bb80401027f230041a0016b22022400200241286a200110bc07200241d8006a20022802282203200228023010ab02024020022d005822014101470d00200241206a200241f1006a290000370300200241186a200241e9006a290000370300200241106a200241e1006a290000370300200220022900593703080b0240200228022c450d00200310390b0240024020014101460d00200041003602000c010b200241286a41186a200241086a41186a290300370300200241286a41106a200241086a41106a290300370300200241286a41086a200241086a41086a29030037030020022002290308370328200241d8006a200241286a10be06200241c8006a20022802582203200228026010ba020240024020022802482201450d002000200229024c3702040c010b410021010b200020013602000240200228025c450d00200310390b20010d0041002802a8fe4a450d002002412536024c2002200241286a36024841002802a4fe4a210041002802a0fe4a210141002802acfe4a2103200241e8006a42013703002002418c016a41fad3c600ad4280808080f00884370200200241f8006a4201370300200241e0006a4122360200200241d8d3c60036025c20024180016a41d8d3c600ad4280808080a00484370300200241f4006a200241c8006a36020020024198f2c70036026420024281808080e03837029401200241003602880120024101360258200141f4ddca00200341024622031b200241d8006a200041b0a7c00020031b2802101103000b200241a0016a24000bd40603027f017e017f230041a0016b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d8006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024020014104490d002001417c714104460d0020014108470d002002200041f4ddca0020011b2201280000200128000410bc050240024020022d00004101460d00410021030c010b200241c0006a200241196a290000370300200241386a200241116a290000370300200241306a200241096a29000037030020022002290001370328200241d8006a200241286a10be06200241c8006a20022802582201200228026010ba02200229024c2104200228024821030240200228025c450d00200110390b20030d0041002802a8fe4a450d002002412536024c2002200241286a36024841002802a4fe4a210141002802a0fe4a210041002802acfe4a2105200241e8006a42013703002002418c016a41fad3c600ad4280808080f00884370200200241f8006a4201370300200241e0006a4122360200200241d8d3c60036025c20024180016a41d8d3c600ad4280808080a00484370300200241f4006a200241c8006a36020020024198f2c70036026420024281808080b0ea0037029401200241003602880120024101360258200041f4ddca00200541024622051b200241d8006a200141b0a7c00020051b2802101103000b410110382201450d012002420137025c200220013602580240024020030d00200141003a0000410121000c010b200141013a00002002410136026020032004422088a7200241d8006a10d60120022802602100200228025821012004a7450d00200310390b200241a0016a24002000ad4220862001ad840f0b2002410c6a411d360200200241ec006a41023602002002420237025c200241f8f4c30036025820024104360204200241c8f8c300360200200220023602682002200241d8006a360208200241d8006a4188f5c3001043000b1030000bd20201057f230041206b22022400200241f4eec600410510f201200241106a41bc88c800410a10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000bce0a02057f057e230041f0076b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca00413420024180056a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024020014104490d0020014104470d002002200041f4ddca0020011b280000220110eb0320024180056a20022802002203200228020810ec030240024020022802a80722000d0002402002280204450d00200310390b410021000c010b200241d8026a20024180056a41a80210c30a1a200241bc076a2802002104200241b4076a2802002105200241b0076a280200210602402002280204450d00200310390b20024180056a200241d8026a41a80210c30a1a200241346a20024180056a41047241a40210c30a1a02402006450d00200010390b02402004450d00200510390b2002200110ed0320024180056a20022802002201200228020810ee030240024020022802800522000d00410021000c010b20024188036a200241b4056a28020036020020024180036a200241ac056a290200370300200241f8026a200241a4056a290200370300200241f0026a2002419c056a290200370300200241e8026a20024194056a290200370300200241e0026a2002418c056a29020037030020022002290284053703d8020b02402002280204450d00200110390b024020000d00410021000c010b20024180056a200241346a41a40210c30a1a200241306a200241d8026a41306a2802002201360200200241286a200241d8026a41286a2903002207370300200241206a200241d8026a41206a2903002208370300200241186a200241d8026a41186a2903002209370300200241106a200241d8026a41106a290300220a370300200241086a200241d8026a41086a290300220b370300200241b0076a200b370300200241b8076a200a370300200241c0076a2009370300200241c8076a2008370300200241d0076a2007370300200241d8076a2001360200200220022903d8022207370300200220073703a8070b200220003602a407410110382201450d01200242013702dc02200220013602d8020240024020000d00200141003a000020022802d802210442808080801021070c010b200141013a0000200241013602e00220024180056a200241d8026a10e60520023502e002210720022802d8022104024020022802ac072201450d002001410c6c21032000210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b024020022802a8072201450d002001410c6c450d00200010390b200241b0076a28020021000240200241b8076a2802002201450d0020014104742103200041086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200341706a22030d000b0b0240200241b4076a28020041ffffffff0071450d00200010390b0240200241bc076a2802002201450d00200241c0076a280200450d00200110390b20074220862107200241cc076a280200450d00200241c8076a28020010390b200241f0076a240020072004ad840f0b200241e4026a411d36020020024194056a41023602002002420237028405200241f8f4c30036028005200241043602dc02200241ecf8c3003602d8022002200241d8026a36029005200220024180056a3602e00220024180056a4188f5c3001043000b1030000b962203077f017e0d7f230041f02f6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241e82f6a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b41002104410020033602a8fe4a0240024002400240024002400240024020010d00200241b0226a22034200370300200241a8226a2201420037030020024198226a41086a220542003703002002420037039822200241e0246a41b9fec300410610f2012005200241e0246a41086a2206290000370300200220022900e02437039822200241e0246a4190efc900410610f20120032006290000370300200120022900e02437030020024120360214200220024198226a360210200241186a20024198226a412010e40202400240200228021822070d000c010b200228021c21082002200241186a41086a28020036022c20022007360228200241086a200241286a10ad010240024020022802080d00200228020c2205200228022c41a00b6e2203200320054b1bad42a00b7e2209422088a70d092009a72201417f4c0d090240024020010d00410821040c010b200110382204450d0b0b41002103200241003602e821200220043602e0212002200141a00b6e3602e421024002402005450d00200241e01d6a210a200241981a6a210b200241a81a6a210c200241b01a6a210d200241c0166a41286a210e200241e0166a210f200241d0166a2110034002400240200228022c2206450d00200228022822112d0000211220022006417f6a221336022c410121142002201141016a3602284103210102400240024020120e03000201040b20134104490d022011280001211520022006417b6a36022c2002201141056a360228410021140c010b410221140b200241e0246a200241286a10c10620022d00e0244115460d00200241c0166a200241e0246a41880b10c30a1a200241e0246a200241286a10ba03024020022802e024450d00200241f0216a41086a200241e0246a41086a280200360200200220022903e0243703f021200241e0246a200241c0166a41880b10c30a1a20152116201421010c020b024002400240024002400240024020022d00c0160e140707070007010203070707070407070507070707060b20022802c816450d0620022802c41610390c060b20022802c4160d0520022802cc162201450d05200141286c450d0520022802c81610390c050b20022d00c4164102470d0420022802cc1641ffffff3f71450d0420022802c81610390c040b02400240024020022802c4160e020001020b200228029019450d05200228028c1910390c050b200228029019450d04200228028c1910390c040b200228029019450d03200228028c1910390c030b20022d00c816410a470d0220022802f416450d0220022802f01610390c020b024020022802c4160d0020022802cc1641ffffff3f71450d0220022802c81610390c020b20022802cc1641ffffff3f71450d0120022802c81610390c010b024020022903c8164201510d000240024020022802d0160e020300010b20022802e016410b470d02200e10af01200d10d2030c020b20022802d816410b470d01200f10af01200c10d2030c010b201010af01200b10af01200a10d2030b410321010b200241b80b6a200241e0246a41880b10c30a1a200241c8216a41086a2206200241f0216a41086a280200360200200220022903f0213703c82120014103460d02200241306a200241b80b6a41880b10c30a1a20024188226a41086a22112006280200360200200220022903c821370388220240200320022802e421470d00200241e0216a200310c20620022802e021210420022802e82121030b2004200341a00b6c6a200241306a41880b10c30a2203418c0b6a2016360200200320013602880b200341900b6a200229038822370200200341980b6a2011280200360200200220022802e82141016a22033602e8212005417f6a22050d000b20022802e02121040b20022902e42121092004450d010c020b200241e0216a108f02024020022802e4212203450d00200341a00b6c450d0020022802e02110390b0b200242003702c416410021042002410028029cde4a3602c0162002410c3602bc0b2002200241106a3602b80b2002200241c0166a360230200241f4246a4101360200200242013702e424200241e4b4c4003602e0242002200241b80b6a3602f024200241306a41fc86ca00200241e0246a103b1a20022802c01620022802c81610e70220022802c416450d0020022802c01610390b2008450d00200710390b410021122002200441002802fcad4920041b22033602d021200220033602c82120022009420020041b22093e02cc21200220032009422088a741a00b6c22016a22143602d4212002200241e82f6a3602d8212001450d04200241e8246a211503400240200341880b6a2802004103470d00200341a00b6a21140c050b200341940b6a2802002105200341900b6a2802002106200241e0246a200341880b10c30a1a0240024020022d00e0244107470d0020022802e4242104200241c0166a201541d00210c30a1a20022802bc27211620022802b82721110c010b200241e0246a10c306410321040b0240200541ffffff3f71450d00200610390b024020044103470d00200341a00b6a2103200141e0746a22010d010c050b0b2002200341a00b6a3602d021200241b80b6a200241c0166a41d00210c30a1a200241306a200241b80b6a41d00210c30a1a200241e0246a200241306a41d00210c30a1a024002400240024020040e03010200010b20024198226a200241306a41c40210c30a1a200241f8216a200241ac276a280200360200200220022902a4273703f021410221030c020b20024198226a200241306a41c40210c30a1a200241f8216a200241ac276a280200360200200220022902a4273703f021410021030c010b20024198226a200241306a41c40210c30a1a200241f8216a200241ac276a280200360200200220022902a4273703f021410121030b41dc0210382215450d0720152003360200201541046a20024198226a41c40210c30a1a201520163602d802201520113602d402201541d0026a200241f0216a41086a2203280200360200201520022903f0213702c80220024281808080103702e421200220153602e0212003200241c8216a41086a2903002209370300200241f0216a41106a200241c8216a41106a280200360200200220022903c8213703f02102402009a7220120022802fc212206470d00410121120c030b200641e0746a2108200241e0246a41c4026a2107200241e0246a41086a21144101211203402001210303400240200341880b6a2802004103470d00200341a00b6a21060c040b200341940b6a2802002104200341900b6a2802002105200241e0246a200341880b10c30a1a0240024020022d00e0244107470d0020022802e4242101200241c0166a201441d00210c30a1a20022802bc27211620022802b82721110c010b200241e0246a10c306410321010b0240200441ffffff3f71450d00200510390b024020014103470d002006200341a00b6a2203470d010c040b0b200241b80b6a200241c0166a41d00210c30a1a200241306a200241b80b6a41d00210c30a1a200241e0246a200241306a41d00210c30a1a0240024002400240024020010e03010200010b20024198226a200241306a41c40210c30a1a20024188226a41086a200741086a2802003602002002200729020037038822410221050c030b20024198226a200241306a41c40210c30a1a20024188226a41086a200741086a2802003602002002200729020037038822410021050c010b20024198226a200241306a41c40210c30a1a20024188226a41086a200741086a2802003602002002200729020037038822410121050b201621130b0240201220022802e421470d00200241e0216a201210c40620022802e02121150b200341a00b6a21012015201241dc026c6a22042005360200200441046a20024198226a41c40210c30a1a20024188226a41086a28020021052002290388222109200441d8026a2013360200200441d4026a2011360200200441d0026a2005360200200441c8026a20093702002002201241016a22123602e82120082003470d000c020b0b200241cc166a411d360200200241f4246a4102360200200242023702e424200241f8f4c3003602e024200241043602c41620024194f9c3003602c0162002200241c0166a3602f0242002200241e82f6a3602c816200241e0246a4188f5c3001043000b200220063602f8210b200241f0216a10f40420022802e021210520022802e42121160c020b200220143602d0210b41002802ccdd4a2105200241c8216a10f404410021160b201241dc026c41046a2203417f4c0d000240024020030d00410121010c010b200310382201450d020b200241003602e824200220033602e424200220013602e024200241e0246a201210d2010240024020120d0020022802e824210420022802e02421060c010b201241dc026c21064100210103400240024002400240200520016a22032802000e03000102030b200341046a2111024020022802e42420022802e8242204470d00200241e0246a2004410110810120022802e82421040b20022802e02420046a41003a00002002200441016a3602e8242011200241e0246a10bf05200341c8026a280200200341d0026a280200200241e0246a10d601200341d4026a2802002111024020022802e42420022802e82422046b41034b0d00200241e0246a2004410410810120022802e82421040b20022802e02420046a20113600002002200441046a22043602e824200341d8026a2802002103024020022802e42420046b41034b0d00200241e0246a2004410410810120022802e82421040b20022802e02420046a20033600002002200441046a3602e8240c020b200341046a2111024020022802e42420022802e8242204470d00200241e0246a2004410110810120022802e82421040b20022802e02420046a41013a00002002200441016a3602e8242011200241e0246a10bf05200341c8026a280200200341d0026a280200200241e0246a10d601200341d4026a2802002111024020022802e42420022802e82422046b41034b0d00200241e0246a2004410410810120022802e82421040b20022802e02420046a20113600002002200441046a22043602e824200341d8026a2802002103024020022802e42420046b41034b0d00200241e0246a2004410410810120022802e82421040b20022802e02420046a20033600002002200441046a3602e8240c010b200341046a2111024020022802e42420022802e8242204470d00200241e0246a2004410110810120022802e82421040b20022802e02420046a41023a00002002200441016a3602e8242011200241e0246a10bf05200341c8026a280200200341d0026a280200200241e0246a10d601200341d4026a2802002104024020022802e42420022802e82422036b41034b0d00200241e0246a2003410410810120022802e82421030b20022802e02420036a20043600002002200341046a3602e8240b2006200141dc026a2201470d000b20022802e824210420022802e02421062012450d00201241dc026c2101200521030340024002400240024020032802000e020001020b200341cc026a280200450d02200341c8026a28020010390c020b200341cc026a280200450d01200341c8026a28020010390c010b200341cc026a280200450d00200341c8026a28020010390b200341dc026a2103200141a47d6a22010d000b0b02402016450d00201641dc026c450d00200510390b200241f02f6a24002004ad4220862006ad840f0b1034000b1030000becc50109087f017e027f017e027f017e067f067e037f230041a02b6b2202240002400240200128020422030d00200041153a00000c010b200141046a2104200128020022052d0000210620012003417f6a22073602042001200541016a360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e64001515010215150315040506151515150715150815151509150a0b0c0d150e15151515151515151515150f151515151515151515151515151515151515151515151515151515151515151515151515151011151515151515151512131515151515151514150b02402007450d0020052d0001210620012003417e6a22083602042001200541026a36020041022109024002400240024002400240024020060e06000106020304070b20084108490d062005290002210a2001200341766a220636020420012005410a6a3602002006450d0620052d000a21062001200341756a220436020420012005410b6a3602004100210702400240024020060e03020001090b410121070c010b410221070b2004450d0620052d000b21062001200341746a36020420012005410c6a360200410021094100210b20060e020504060b200241c00b6a200110b80420022d00c00b4108460d05200428020022054108490d0520022902c40b210a20022802c00b210c20012802002203290000210d2001200541786a22063602042001200341086a3602002006450d0520032d000821062001200541776a22073602042001200341096a3602004100210e02400240024020060e03020001080b4101210e0c010b4102210e0b2007450d0520032d000921062001200541766a36020420012003410a6a3602004100210f0240024020060e020100070b4101210f0b200d4210882110200d420888a7210b200da72107410121090c040b200241c00b6a200110800220022d00c00b4101460d04200241e21d6a20022d00c30b3a0000200241ac166a200241de0b6a2f01003b0100200220022f00c10b3b01e01d2002200241da0b6a2801003602a816200241d20b6a350100200241d60b6a330100422086842110200241c80b6a290300210a200241d00b6a2d00002107200241d10b6a2d0000210b200241d80b6a2d0000210e200241d90b6a2d0000210f200241e00b6a2d0000211120022802c40b210c410321090c030b200241c00b6a200110800220022d00c00b4101460d03200241e21d6a20022d00c30b3a000041042109200241a8166a41046a200241de0b6a2f01003b0100200220022f00c10b3b01e01d2002200241da0b6a2801003602a816200241d20b6a350100200241d60b6a330100422086842110200241c80b6a290300210a200241d00b6a2d00002107200241d10b6a2d0000210b200241d80b6a2d0000210e200241d90b6a2d0000210f200241e00b6a2d0000211120022802c40b210c0c020b200241c00b6a200110800220022d00c00b4101460d02200241f0286a41086a200241c00b6a41106a290300370300200241f0286a41106a200241c00b6a41186a290300370300200241f0286a41186a200241c00b6a41206a2d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200241c00b6a41086a2903003703f02820022802c40b210c200241c00b6a410472210e2004280200210741002105417f2103034020072005460d03200128020022062d000021042001200720036a3602042001200641016a360200200e20056a20043a00002002200541016a22063602c00b2003417f6a21032006210520064120470d000b2002419c2b6a41026a200241cd0b6a2d00003a0000200241982b6a41026a200241d40b6a2d00003a0000200220022f01c40b3b0138200220022d00c60b3a003a2002200241cb0b6a2f00003b019c2b2002200241d20b6a2f01003b01982b200241c00b6a410e6a2801002112200241d50b6a2800002113200241dc0b6a2802002114200241e00b6a280200211520022800c70b2116200241e4286a41026a200241db0b6a2d00003a0000200241e01d6a41026a20022d00ee283a0000200241ac166a20024186296a2f01003b01002002200241d90b6a2f00003b01e428200220022f01ec283b01e01d20022002280182293602a81620023501fa28200241f0286a410e6a33010042208684211020022903f028210a20022d008129210f20022d008029210e20022d00f928210b20022d00f828210720022d0088292111410521090c010b4101210b0b200041096a20022f01e01d3b0000200041226a20022802a816360000200041296a20022f01383b00002000412b6a20022d003a3a0000200041306a20022f019c2b3b0000200041376a20022f01982b3b00002000410b6a200241e01d6a41026a2d00003a0000200041266a200241a8166a41046a2f01003b0000200041326a2002419c2b6a41026a2d00003a0000200041396a200241982b6a41026a2d00003a0000200041c0006a200241e4286a41026a2d00003a00002000413e6a20022f01e4283b0000200041c9006a2002280058360000200041cc006a200241d8006a41036a2800003600002000411e6a20104220883d00002000411a6a20103e0000200041003a0000200020022800a821360001200041046a200241a8216a41036a280000360000200041c5006a2015360000200041c1006a20143600002000413a6a2013360000200041336a20123600002000412c6a2016360000200041286a20113a0000200041216a200f3a0000200041206a200e3a0000200041196a200b3a0000200041186a20073a0000200041106a200a3700002000410c6a200c360000200041086a20093a00000c1c0b200041153a00000c1b0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b200241c00b6a200110800220022d00c00b4101460d03200241f0286a41086a2205200241c00b6a41106a290300370300200241f0286a41106a2203200241c00b6a41186a290300370300200241f0286a41186a220c200241e00b6a2d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200241c00b6a41086a2903003703f028200428020022044104490d0320022802c40b2107200241aa166a20022d00ee283a00002001280200220e280000210620012004417c6a3602042001200e41046a360200200241d8006a41086a2005290300370300200241d8006a41106a2003290300370300200241d8006a41186a200c2d00003a0000200220022f01ec283b01a816200220022903f028370358410021010c020b20074104490d022005280002210720012003417a6a3602042001200541066a360200410121010c010b20074104490d012005280002210620012003417a6a3602042001200541066a360200200241c00b6a200110800220022d00c00b4101460d0141022101200241a8166a41026a20022d00c30b3a0000200241d8006a41086a200241c00b6a41106a290300370300200241d8006a41106a200241c00b6a41186a290300370300200241d8006a41186a200241e00b6a2d00003a0000200220022f00c10b3b01a8162002200241c00b6a41086a29030037035820022802c40b21070b200041056a20022f01a8163b0000200041076a200241a8166a41026a2d00003a0000200241a8216a41086a2205200241d8006a41086a290300370300200241a8216a41106a2203200241d8006a41106a290300370300200241a8216a41186a2204200241d8006a41186a280200360200200220022903583703a821200041013a0000200020022f00e01d3b0001200041036a200241e01d6a41026a2d00003a0000200041086a2007360000200041046a20013a0000200041286a20063600002000410c6a20022903a821370000200041146a20052903003700002000411c6a2003290300370000200041246a20042802003600000c1b0b200041153a00000c1a0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024002400240024002400240024020060e080001020304050607090b200241c00b6a200110800220022d00c00b4101460d08200241a8216a41026a220c20022d00c30b3a0000200220022f00c10b3b01a821200428020022044110490d08200241d80b6a2903002110200241c00b6a41106a290300210a200241c00b6a41086a2802002103200241cc0b6a2802002106200241e00b6a2d0000210720022802c40b21052001200441706a36020420012001280200220441106a360200200241386a41026a200c2d00003a0000200220022f01a8213b0138200441086a2900002117200429000021184100210c0c070b200241c00b6a200110800220022d00c00b4101460d07200241a8216a41026a220c20022d00c30b3a0000200220022f00c10b3b01a821200428020022044110490d07200241d80b6a2903002110200241c00b6a41106a290300210a200241c00b6a41086a2802002103200241cc0b6a2802002106200241e00b6a2d0000210720022802c40b21052001200441706a36020420012001280200220441106a360200200241386a41026a200c2d00003a0000200220022f01a8213b0138200441086a2900002117200429000021184101210c0c060b200241c00b6a200110800220022d00c00b4101460d06200241a8216a41026a20022d00c30b3a0000200220022f00c10b3b01a821200241d80b6a220c2903002110200241c00b6a41106a220e290300210a200241c80b6a220f2802002103200241cc0b6a2802002106200241e00b6a22152d0000210720022802c40b2105200241c00b6a200110800220022d00c00b4101460d06200241a8166a41026a20022d00c30b3a0000200220022f00c10b3b01a816200428020022144110490d06200e2903002117200f29030021182015310000210d200c290300211920022802c40b21042001201441706a36020420012001280200220e41106a3602004102210c200241386a41026a200241a8216a41026a2d00003a0000200241e8286a41026a200241a8166a41026a2d00003a0000200220022f01a8213b0138200220022f01a8163b01e828200e41086a290000211a200e290000211b0c050b200241c00b6a200110800220022d00c00b4101460d05200241aa216a20022d00c30b3a0000200220022f00c10b3b01a821200428020022044110490d05200241d80b6a2903002110200241c00b6a41106a290300210a200241c00b6a41086a2802002103200241cc0b6a2802002106200241e00b6a2d0000210720022802c40b21052001200441706a220e36020420012001280200220c41106a360200200e4110490d05200c41086a2900002117200c29000021182001200441606a3602042001200c41206a360200200241386a41026a200241a8216a41026a2d00003a0000200220022f01a8213b0138200c41186a290000220d421088211c200d420888a72101200c29001021194103210c0c040b200241c00b6a200110800220022d00c00b4101460d04200241a8166a41086a200241c00b6a41106a290300370300200241a8166a41106a2203200241c00b6a41186a290300370300200241a8166a41186a200241e00b6a2d00003a0000200220022d00c30b3a00e21d200220022f00c10b3b01e01d2002200241c00b6a41086a2903003703a816200428020022064110490d0420022802c40b21052001200641706a3602042002413a6a20022d00e21d3a000020012001280200220641106a360200200220022f01e01d3b0138200641086a2900002117200629000021182003290300211020022903b016210a20022802a816210320022802ac16210620022d00c01621074104210c0c030b200241c00b6a200110800220022d00c00b4101460d03200241f0286a41026a220320022d00c30b3a0000200220022f00c10b3b01f028200428020022064110490d03200241d80b6a2903002110200241c00b6a41106a290300210a200241c00b6a41086a290300210d200241e00b6a2d0000210720022802c40b21052001200641706a36020420012001280200220441106a360200200241386a41026a20032d00003a0000200220022f01f0283b0138200441086a2900002117200d422088a7210620042900002118200da721034105210c0c020b200241c00b6a200110800220022d00c00b4101460d02200241e01d6a41086a200241c00b6a41106a290300370300200241e01d6a41106a2203200241c00b6a41186a290300370300200241e01d6a41186a200241e00b6a2d00003a0000200220022d00c30b3a009a2b200220022f00c10b3b01982b2002200241c00b6a41086a2903003703e01d200428020022064110490d0220022802c40b21052001200641706a3602042002413a6a20022d009a2b3a000020012001280200220641106a360200200220022f01982b3b0138200641086a2900002117200629000021182003290300211020022903e81d210a20022802e01d210320022802e41d210620022d00f81d21074106210c0c010b200241c00b6a200110800220022d00c00b4101460d01200241a8166a41086a200241c00b6a41106a2203290300370300200241a8166a41106a200241c00b6a41186a2206290300370300200241a8166a41186a200241e00b6a22072d00003a0000200220022d00c30b3a009e2b200220022f00c10b3b019c2b2002200241c00b6a41086a220c2903003703a81620022802c40b2105200241c00b6a200110800220022d00c00b4101460d01200241f0286a41086a2003290300370300200241f0286a41106a2006290300370300200241f0286a41186a20072d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200c2903003703f028200428020022034110490d0120022802c40b21042001200341706a220736020420012001280200220641106a3602002007450d01200641086a290000211a2006290000211b20062d0010210720012003416f6a3602042001200641116a360200410021010240024020070e020100030b410121010b200241386a41026a20022d009e2b3a0000200241e8286a41026a20022d00ee283a0000200220022f019c2b3b0138200220022f01ec283b01e828200241b8166a2903002110200241f8286a290300211720024188296a310000210d20022903b016210a20022903f0282118200229038029211920022802a816210320022802ac16210620022d00c01621074107210c0b200041096a20022f01383b0000200041296a20022f01e8283b00002000410b6a200241386a41026a2d00003a00002000412b6a200241e8286a41026a2d00003a0000200041d8006a201a370000200041d0006a201b370000200041c8006a201c4210862001ad42ff018342088684200d42ff018384370000200041c0006a2019370000200041386a2017370000200041306a2018370000200041206a2010370000200041186a200a370000200041023a000020002002280058360001200041046a200241db006a2800003600002000412c6a2004360000200041286a20073a0000200041146a2006360000200041106a20033600002000410c6a2005360000200041086a200c3a00000c1a0b200041153a00000c190b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241c00b6a200110d70120022d00c00b4101460d00200241e0006a200241c90b6a290000370300200220022900c10b3703582002200110ad0120022802000d002004280200220320022802042205490d002005417f4c0d130240024020050d00410121060c010b200510382206450d1520064100200510c50a1a0b200620012802002207200510c30a21062001200320056b3602042001200720056a360200200241a8216a41086a200241d8006a41086a290300221037030020022002290358220a3703a821200041086a2005ad220d422086200d84370000200041046a2006360000200041033a0000200041106a200a370000200041186a20103700000c190b200041153a00000c180b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d0020074104490d002005280002210620012003417a6a3602042001200541066a360200200041046a2006360200200041043a00000c180b200041153a00000c170b2007450d1520052d0001210620012003417e6a3602042001200541026a3602004101210502400240024020060e03000201180b200241086a200110ad0102402002280208450d00200241003602c00b0c180b200241c00b6a2001200228020c10b40120022802c00b450d17200241d8006a41086a200241c00b6a41086a280200360200200220022903c00b370358410021050c010b410221050b200241a8216a41086a200241d8006a41086a28020022013602002002200229035822103703a821200041053a0000200020022f00a8163b0001200041036a200241a8166a41026a2d00003a0000200041046a2005360000200041086a2010370000200041106a20013600000c160b02402007450d0020052d0001210620012003417e6a220e3602042001200541026a36020041012107024002400240024020060e03000201040b200241c00b6a410472210f41002106417d21070340200e2006460d04200520066a220441026a2d0000210c2001200320076a3602042001200441036a360200200f20066a200c3a00002002200641016a22043602c00b2007417f6a21072004210620044120470d000b200241a8216a41106a200241dc0b6a2d00003a0000200241a8216a41086a200241d40b6a2902003703002002200241cc0b6a22012902003703a82120022902c40b210a200241eb1d6a200241c00b6a410f6a280000360000200241d8006a41086a2205200241a8216a410f6a2f00003b01002002200a3703e01d200220012802003602e81d200220022900af21370358200241e5006a200241e00b6a2800003600002002200241dd0b6a280000360162200241e6286a20022d00e21d3a00002002200a3d01e42820022900e71d2110200241a8166a41086a22012005290300370300200241a8166a41106a2205200241d8006a41106a2d00003a0000200220022903583703a816200241386a41106a20052d00003a0000200241386a41086a2001290300370300200220022903a816370338200a421888a7210f410021070c010b200241106a200110ad0120022802100d0220022802142215200428020022074105762205200520154b1b22054105742203417f4c0d120240024020050d004101210f0c010b20031038220f450d140b41002114200241003602602002200536025c2002200f36025802402015450d00200241c00b6a410472210c200241f0286a4107722113200241a8216a41046a2112200241dd0b6a2116200241d20b6a210b200241cb0b6a2111200241fe286a220941036a21084100210e0340200e41016a210e41002105417f2103034020072005460d04200128020022062d000021042001200720036a3602042001200641016a360200200c20056a20043a00002002200541016a22063602c00b2003417f6a21032006210520064120470d000b201220162f00003b0000201241026a201641026a2d00003a0000200220022800d90b22053602a8212002200c2f01003b01ec28200220112f00003b01f0282002200c41026a2d00003a00ee282002201141026a2d00003a00f22820022800c70b210320022802e00b210420022800d50b211d20022801ce0b211e20092005360100201341026a200b41026a2d00003a00002013200b2f00003b0000200820022800ab213600002002201e3600f3282002201d3601fa282002200436008529200220022d00ee283a009e2b200220022f01ec283b019c2b200241a8166a41186a2205200241f0286a41186a2d00003a0000200241a8166a41106a2204200241f0286a41106a290300370300200241a8166a41086a221d200241f0286a41086a290300370300200220022903f0283703a816200220022d009e2b3a009a2b200220022f019c2b3b01982b200241e01d6a41186a221e20052d00003a0000200241e01d6a41106a221f2004290300370300200241e01d6a41086a2204201d290300370300200220022903a8163703e01d02402014200228025c470d00200241d8006a201410fb062002280258210f200228026021140b200720066b2107200f20144105746a220520022f01982b3b000020022d009a2b210620052003360003200541026a20063a0000200520022903e01d3700072005410f6a2004290300370000200541176a201f2903003700002005411f6a201e2d00003a00002002201441016a2214360260200e2015470d000b2002280258210f0b200f450d02200229025c211041022107200241e4286a41026a200241e8286a41026a2d00003a0000200220022f00e8283b01e4280b200041056a20022f01e4283b0000200041146a2002290338370000200041256a20022f00543b0000200041076a200241e4286a41026a2d00003a00002000411c6a200241386a41086a290300370000200041246a200241c8006a2d00003a0000200041276a200241d4006a41026a2d00003a0000200041063a00002000410c6a2010370000200041086a200f360000200041046a20073a0000200020022f00503b0001200041036a200241d0006a41026a2d00003a00000c170b200228025c41ffffff3f71450d00200228025810390b200041153a00000c150b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602000240024002400240024020060e03000102050b200241c00b6a200110b00520022802c00b4101460d04200241f0286a200241c00b6a410472220e41a40210c30a1a2004280200210741002105417f2103034020072005460d05200128020022062d0000210c2001200720036a3602042001200641016a360200200e20056a200c3a00002002200541016a22063602c00b2003417f6a21032006210520064120470d000b2002419c2b6a41026a200241cd0b6a2d00003a0000200241982b6a41026a200241d40b6a2d00003a0000200220022f01c40b3b0138200220022d00c60b3a003a2002200241cb0b6a2f00003b019c2b2002200241d20b6a2f01003b01982b200241e00b6a2802002103200241dc0b6a2802002106200241d50b6a2800002107200241ce0b6a280100210c20022800c70b210e200241ec286a41026a200241db0b6a2d00003a0000200241fe026a20022d003a3a00002002200241d90b6a2f00003b01ec28200220022f01383b01fc02200241d8006a200241f0286a41a40210c30a1a200241a8216a200241d8006a41a70210c30a1a200241186a200110ad0120022802180d042004280200220f200228021c2205490d042005417f4c0d130240024020050d00410121040c010b200510382204450d1520044100200510c50a1a0b200420012802002215200510c30a1a2001200f20056b220f3602042001201520056a2214360200200f4104490d03201428000021152001200f417c6a22133602042001201441046a36020020134104490d03201428000421132001200f41786a3602042001201441086a360200200241a8166a200241a8216a41a70210c30a1a200241d4006a41026a2002419c2b6a41026a2d00003a0000200241d0006a41026a200241982b6a41026a2d00003a0000200241cc006a41026a200241ec286a41026a2d00003a0000200220022f019c2b3b0154200220022f01982b3b0150200220022f01ec283b014c410021010c020b200241c00b6a200110b00520022802c00b4101460d03200241f0286a200241c00b6a410472220e41a40210c30a1a2004280200210741002105417f2103034020072005460d04200128020022062d0000210c2001200720036a3602042001200641016a360200200e20056a200c3a00002002200541016a22063602c00b2003417f6a21032006210520064120470d000b200241ce0b6a280100210c200241d50b6a2800002107200241e00b6a2802002103200241d90b6a280000210520022800c70b210e2002413e6a200241df0b6a2d00003a0000200220053602382002419c2b6a41026a220f20022d003a3a00002002200241dd0b6a2f00003b013c200220022f01c40b3b01982b200220022d00c60b3a009a2b200220053b019c2b200228003b2106200241ec286a41026a200241cd0b6a2d00003a00002002200241cb0b6a2f00003b01ec28200241e8286a41026a200241d40b6a2d00003a00002002200241d20b6a2f01003b01e828200241e4286a41026a200f2d00003a0000200220022f019c2b3b01e428200241fe026a20022d009a2b3a0000200220022f01982b3b01fc02200241d8006a200241f0286a41a40210c30a1a200241a8216a200241d8006a41a70210c30a1a200241206a200110ad0120022802200d032004280200220f20022802242205490d032005417f4c0d120240024020050d00410121040c010b200510382204450d1420044100200510c50a1a0b200420012802002215200510c30a1a2001200f20056b220f3602042001201520056a2214360200200f4104490d02201428000021152001200f417c6a22133602042001201441046a36020020134104490d02201428000421132001200f41786a3602042001201441086a360200200241a8166a200241a8216a41a70210c30a1a200241d4006a41026a200241ec286a41026a2d00003a0000200241d0006a41026a200241e8286a41026a2d00003a0000200241cc006a41026a200241e4286a41026a2d00003a0000200220022f01ec283b0154200220022f01e8283b0150200220022f01e4283b014c410121010c010b200241c00b6a200110b00520022802c00b4101460d02200241f0286a200241c00b6a410472220e41a40210c30a1a2004280200210741002105417f2103034020072005460d03200128020022062d0000210c2001200720036a3602042001200641016a360200200e20056a200c3a00002002200541016a22063602c00b2003417f6a21032006210520064120470d000b200241ce0b6a280100210c200241d50b6a2800002107200241e00b6a2802002103200241d90b6a280000210520022800c70b210e2002413e6a200241df0b6a2d00003a0000200220053602382002419c2b6a41026a220f20022d003a3a00002002200241dd0b6a2f00003b013c200220022f01c40b3b01982b200220022d00c60b3a009a2b200220053b019c2b200228003b2106200241ec286a41026a200241cd0b6a2d00003a00002002200241cb0b6a2f00003b01ec28200241e8286a41026a200241d40b6a2d00003a00002002200241d20b6a2f01003b01e828200241e4286a41026a200f2d00003a0000200220022f019c2b3b01e428200241fe026a20022d009a2b3a0000200220022f01982b3b01fc02200241d8006a200241f0286a41a40210c30a1a200241a8216a200241d8006a41a70210c30a1a200241286a200110ad0120022802280d022004280200220f200228022c2205490d022005417f4c0d110240024020050d00410121040c010b200510382204450d1320044100200510c50a1a0b200420012802002215200510c30a1a2001200f20056b220f3602042001201520056a2214360200200f4104490d01201428000021152001200f417c6a3602042001201441046a360200200241a8166a200241a8216a41a70210c30a1a41022101200241d4006a41026a200241ec286a41026a2d00003a0000200241d0006a41026a200241e8286a41026a2d00003a0000200241cc006a41026a200241e4286a41026a2d00003a0000200220022f01ec283b0154200220022f01e8283b0150200220022f01e4283b014c0b200241e01d6a200241a8166a41a70210c30a1a200041b5026a200241d4006a41026a2d00003a0000200041b3026a20022f01543b0000200041ba026a20022f01503b0000200041bc026a200241d0006a41026a2d00003a0000200041c1026a20022f014c3b0000200041c3026a200241cc006a41026a2d00003a0000200041073a0000200020022f00493b0001200041036a200241c9006a41026a2d00003a0000200041046a2001360000200041086a200241e01d6a41a70210c30a1a200041dc026a2013360000200041d8026a2015360000200041d4026a2005360000200041d0026a2005360000200041cc026a2004360000200041c8026a2003360000200041c4026a2006360000200041bd026a2007360000200041b6026a200c360000200041af026a200e3600000c160b2005450d00200410390b200041153a00000c140b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024020060e050001020304060b20074104490d052005280002210620012003417a6a3602042001200541066a360200410021010c040b20074104490d042005280002210620012003417a6a3602042001200541066a360200410121010c030b20074104490d032005280002210620012003417a6a3602042001200541066a360200410221010c020b20074104490d022005280002210620012003417a6a3602042001200541066a360200410321010c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621072001200341766a36020420012005410a6a360200410421010b200041083a00002000410c6a2007360000200041086a2006360000200041046a20013600000c140b200041153a00000c130b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b20074104490d032005280002210620012003417a6a22073602042001200541066a36020020074104490d03200528000621072001200341766a220436020420012005410a6a36020020044104490d03200528000a21042001200341726a220c36020420012005410e6a360200200c4104490d03200528000e210c20012003416e6a3602042001200541126a360200410021010c020b20074104490d022005280002210620012003417a6a22073602042001200541066a36020020074104490d02200528000621072001200341766a36020420012005410a6a360200410121010c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621072001200341766a220436020420012005410a6a36020020044104490d01200528000a21042001200341726a36020420012005410e6a360200410221010b200041093a0000200041146a200c360000200041106a20043600002000410c6a2007360000200041086a2006360000200041046a20013600000c130b200041153a00000c120b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b20074104490d032005280002210620012003417a6a3602042001200541066a360200200241c00b6a200110800220022d00c00b4101460d03200241aa166a20022d00c30b3a0000200241d8006a41086a200241c00b6a41106a290300370300200241d8006a41106a200241c00b6a41186a290300370300200241d8006a41186a200241e00b6a2d00003a0000200220022f00c10b3b01a8162002200241c00b6a41086a29030037035820022802c40b2107410021010c020b20074104490d022005280002210720012003417a6a3602042001200541066a360200410121010c010b20074104490d012005280002210620012003417a6a3602042001200541066a360200200241c00b6a200110800220022d00c00b4101460d0141022101200241a8166a41026a20022d00c30b3a0000200241d8006a41086a200241c00b6a41106a290300370300200241d8006a41106a200241c00b6a41186a290300370300200241d8006a41186a200241e00b6a2d00003a0000200220022f00c10b3b01a8162002200241c00b6a41086a29030037035820022802c40b21070b200041056a20022f01a8163b0000200041076a200241a8166a41026a2d00003a0000200241a8216a41086a2205200241d8006a41086a290300370300200241a8216a41106a2203200241d8006a41106a290300370300200241a8216a41186a2204200241d8006a41186a280200360200200220022903583703a8212000410a3a0000200020022f00e01d3b0001200041036a200241e01d6a41026a2d00003a0000200041086a2007360000200041046a20013a0000200041286a20063600002000410c6a20022903a821370000200041146a20052903003700002000411c6a2003290300370000200041246a20042802003600000c120b200041153a00000c110b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024002400240024020060e090001020304050607080a0b20074104490d092005280002210620012003417a6a22073602042001200541066a36020020074104490d09200528000621042001200341766a220736020420012005410a6a36020020074104490d09200528000a210c2001200341726a36020420012005410e6a360200410021150c080b20074104490d082005280002210620012003417a6a3602042001200541066a360200410121150c070b200241c00b6a200110800220022d00c00b4101460d07200241a8166a41086a200241c00b6a41106a290300370300200241a8166a41106a200241c00b6a41186a290300370300200241a8166a41186a200241e00b6a2d00003a0000200220022d00c30b3a00e21d200220022f00c10b3b01e01d2002200241c00b6a41086a2903003703a81620042802002204450d0720022802c40b2106200128020022032d0000210720012004417f6a220c3602042001200341016a3602004100210502400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020070e242322000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212b0b410221050c220b410321050c210b410421050c200b410521050c1f0b410621050c1e0b410721050c1d0b410821050c1c0b410921050c1b0b410a21050c1a0b410b21050c190b410c21050c180b410d21050c170b410e21050c160b410f21050c150b411021050c140b411121050c130b411221050c120b411321050c110b411421050c100b411521050c0f0b411621050c0e0b411721050c0d0b411821050c0c0b411921050c0b0b411a21050c0a0b411b21050c090b411c21050c080b411d21050c070b411e21050c060b411f21050c050b412021050c040b412121050c030b412221050c020b412321050c010b410121050b200c4104490d072003280001210720012004417b6a220c3602042001200341056a360200200c4110490d0720012004416b6a3602042001200341156a36020041022115200241e8286a41026a20022d00e21d3a0000200220022f01e01d3b01e8282002200329000537035820022003410d6a290000370360200241a8166a41106a290300210a20022903b016211020022802a816210420022802ac16210c20022d00c01621030c060b20074104490d062005280002210620012003417a6a22073602042001200541066a36020020074104490d06200528000621042001200341766a220736020420012005410a6a36020020074104490d06200528000a210c2001200341726a220736020420012005410e6a36020020074110490d062001200341626a36020420012005411e6a360200200541166a290000210a200529000e2110410321150c050b200241c00b6a200110800220022d00c00b4101460d05200241f2286a20022d00c30b3a0000200220022f00c10b3b01f028200428020022054110490d05200241d80b6a290300210a200241c00b6a41106a2903002110200241e00b6a2d00002103200241c00b6a41086a290300210d20022802c40b21062001200541706a220436020420012001280200220741106a36020020044110490d05200d422088a7210c200da72104200741086a290000210d2007290000211b2001200541606a3602042001200741206a360200200241e8286a41026a200241f0286a41026a2d00003a0000200241d8006a41186a200741186a290000370300200220022f01f0283b01e8282002201b370358200220072900103703682002200d370360410421150c040b200241c00b6a200110800220022d00c00b4101460d04200241e01d6a41086a200241c00b6a41106a290300370300200241e01d6a41106a2205200241c00b6a41186a290300370300200241e01d6a41186a200241e00b6a2d00003a0000200220022d00c30b3a009a2b200220022f00c10b3b01982b2002200241c00b6a41086a2903003703e01d200428020022034110490d0420022802c40b21062001200341706a360204200241ea286a20022d009a2b3a000020012001280200220341106a360200200220022f01982b3b01e828200220032900003703582002200341086a2900003703602005290300210a20022903e81d211020022802e01d210420022802e41d210c20022d00f81d2103410521150c030b20074104490d032005280002210720012003417a6a3602042001200541066a360200200241c00b6a200110800220022d00c00b4101460d03200241a8166a41086a200241c00b6a41106a290300370300200241a8166a41106a2205200241c00b6a41186a290300370300200241a8166a41186a200241e00b6a2d00003a0000200220022d00c30b3a009e2b200220022f00c10b3b019c2b2002200241c00b6a41086a2903003703a816200428020022034110490d0320022802c40b21062001200341706a360204200241ea286a20022d009e2b3a000020012001280200220341106a360200200220022f019c2b3b01e828200220032900003703582002200341086a2900003703602005290300210a20022903b016211020022802a816210420022802ac16210c20022d00c0162103410621150c020b200241c00b6a200110800220022d00c00b4101460d02200241f0286a41086a200241c00b6a41106a290300370300200241f0286a41106a200241c00b6a41186a290300370300200241f0286a41186a200241e00b6a2d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200241c00b6a41086a2903003703f028200428020022054104490d0220022802c40b210620012802002203280000210720012005417c6a22043602042001200341046a36020020044110490d0220012005416c6a22043602042001200341146a36020020044104490d022003410c6a29000021102003290004210a2003280014210c2001200541686a22043602042001200341186a36020020044104490d02200328001821042001200541646a36020420012003411c6a360200200241ea286a20022d00ee283a0000200241d8006a41106a2010370300200220022f01ec283b01e8282002200a3703602002200c3602582002200436025c200241f0286a41106a290300210a20022903f828211020022802f028210420022802f428210c20022d0088292103410721150c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621042001200341766a36020420012005410a6a360200410821150b200041096a20022f01e8283b00002000410b6a200241ea286a2d00003a0000200241a8216a41086a2201200241d8006a41086a290300370300200241a8216a41106a220e200241d8006a41106a290300370300200241a8216a41186a220f200241d8006a41186a290300370300200220022903583703a821200041206a200a370000200041186a20103700002000410b3a000020002002280038360001200041046a2002413b6a2800003600002000412c6a2007360000200041296a20053a0000200041286a20033a0000200041146a200c360000200041106a20043600002000410c6a2006360000200041086a20153a0000200041306a20022903a821370000200041386a2001290300370000200041c0006a200e290300370000200041c8006a200f2903003700000c110b200041153a00000c100b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024002400240024020060e0c000102030405060708090a0b0c0b20074104490d0b2005280002210620012003417a6a3602042001200541066a360200410021040c190b200241c00b6a200110800220022d00c00b4101460d0a200241e01d6a41086a200241c00b6a41106a290300370300200241e01d6a41106a200241c00b6a41186a290300370300200241e01d6a41186a200241e00b6a2d00003a0000200220022d00c30b3a009a2b200220022f00c10b3b01982b2002200241c00b6a41086a2903003703e01d200428020022034104490d0a20022802c40b210620012802002207280000210520012003417c6a22043602042001200741046a36020020044110490d0a20012003416c6a3602042001200741146a360200200241ea286a20022d009a2b3a0000200220022f01982b3b01e828200220022902ec1d3703582002200241f11d6a29000037005d2007410c6a290000210d2007290004210a20022802e01d210720022902e41d2110410121040c180b200241c00b6a200110800220022d00c00b4101460d09200241a8166a41086a200241c00b6a41106a290300370300200241a8166a41106a200241c00b6a41186a290300370300200241a8166a41186a200241e00b6a2d00003a0000200220022d00c30b3a009e2b200220022f00c10b3b019c2b2002200241c00b6a41086a2903003703a816200428020022034104490d0920022802c40b210620012802002207280000210520012003417c6a22043602042001200741046a36020020044110490d0920012003416c6a3602042001200741146a36020041022104200241e8286a41026a20022d009e2b3a0000200220022f019c2b3b01e828200220022902b4163703582002200241b9166a29000037005d2007410c6a290000210d2007290004210a20022802a816210720022902ac1621100c170b20074104490d082005280002210620012003417a6a3602042001200541066a360200410321040c160b4104210420074104490d072005280002210620012003417a6a3602042001200541066a3602000c150b20074104490d062005280002210620012003417a6a3602042001200541066a360200410521040c140b20074104490d052005280002210620012003417a6a360204410621042001200541066a3602000c130b20074104490d042005280002210620012003417a6a22073602042001200541066a36020020074104490d04200528000621072001200341766a36020420012005410a6a360200410721040c120b20074104490d032005280002210620012003417a6a22073602042001200541066a3602002007450d0320052d000621072001200341796a3602042001200541076a3602004100210341082104410821050240024020070e020100050b200241c00b6a200110b80420022d00c00b22054108460d0420022f00c10b20022d00c30b41107472410874210320022902c40b21100b200320057221070c110b20074104490d022005280002210620012003417a6a3602042001200541066a360200410921040c100b200241c00b6a200110800220022d00c00b4101460d01200241f0286a41086a200241c00b6a41106a290300370300200241f0286a41106a200241c00b6a41186a290300370300200241f0286a41186a200241e00b6a2d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200241c00b6a41086a2903003703f028200428020022034104490d0120022802c40b210620012802002207280000210520012003417c6a3602042001200741046a360200200241306a200110ad0120022802300d012004280200220720022802342203490d012003417f4c0d0b0240024020030d00410121040c010b200310382204450d0d20044100200310c50a1a0b20042001280200220c200310c30a21042001200720036b3602042001200c20036a360200200241ea286a20022d00ee283a0000200220022f01ec283b01e828200220022902fc28370358200220024181296a29000037005d2003ad22104220862010842210422088210d20104220862004ad84210a20022802f028210720022902f4282110410a21040c0f0b20074104490d002005280002210620012003417a6a3602042001200541066a360200410b21040c0e0b200041153a00000c0f0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024020060e020001030b20074104490d022005280002210720012003417a6a3602042001200541066a360200410021010c010b20074104490d012005280002210620012003417a6a3602042001200541066a360200200241c00b6a200110800220022d00c00b4101460d01200241f0286a41086a200241c00b6a41106a290300370300200241f0286a41106a200241c00b6a41186a290300370300200241f0286a41186a200241e00b6a2d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec282002200241c00b6a41086a2903003703f028200428020022044104490d0120022802c40b21072001280200220c280000210520012004417c6a22033602042001200c41046a36020020034104490d01200c28000421032001200441786a220e3602042001200c41086a360200200e4110490d012001200441686a220e3602042001200c41186a360200200e410f4d0d01200c41106a290000211b200c290008210d2001200441586a3602042001200c41286a360200200241e21d6a20022d00ee283a0000200241d8006a41086a200241f0286a41086a290300370300200241d8006a41106a200241f0286a41106a290300370300200241d8006a41186a200241f0286a41186a2d00003a0000200220022f01ec283b01e01d200220022903f028370358200c41206a290000210a200c2900182110410121010b200041096a20022f01e01d3b00002000410b6a200241e21d6a2d00003a0000200241a8216a41086a2204200241d8006a41086a290300370300200241a8216a41106a220c200241d8006a41106a290300370300200241a8216a41186a220e200241d8006a41186a280200360200200220022903583703a8212000410d3a0000200020022800a816360001200041046a200241ab166a2800003600002000410c6a2007360000200041086a20013a0000200041d0006a200a370000200041c8006a2010370000200041c0006a201b370000200041386a200d370000200041346a2003360000200041306a20053600002000412c6a2006360000200041106a20022903a821370000200041186a2004290300370000200041206a200c290300370000200041286a200e2802003600000c0f0b200041153a00000c0e0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b2007450d0320052d0002210620012003417d6a3602042001200541036a3602004100210541082103410021070240024020060e020100050b200241c00b6a200110b80420022d00c00b22034108460d0420022f00c10b20022d00c30b41107472410874210720022902c40b21100b200720037221010c020b200241c00b6a20011080024101210520022d00c00b4101460d02200241aa216a20022d00c30b3a0000200241d8006a41086a200241d80b6a290300370300200241d8006a41106a200241e00b6a2d00003a0000200220022f00c10b3b01a8212002200241c00b6a41106a290300370358200241c00b6a41086a290300211020022802c40b21010c010b2007450d0120052d0002210620012003417d6a3602042001200541036a36020041002103410821050240024020060e020100030b200241c00b6a200110b80420022d00c00b22054108460d0220022f00c10b20022d00c30b41107472410874210320022902c40b21100b20032005722101410221050b200041056a20022f01a8213b0000200041146a2002290358370000200041076a200241a8216a41026a2d00003a00002000411c6a200241d8006a41086a290300370000200041246a200241e8006a2d00003a00002000410e3a0000200020022f00a8163b0001200041036a200241a8166a41026a2d00003a00002000410c6a2010370000200041086a2001360000200041046a20053a0000200041256a20022f00e01d3b0000200041276a200241e01d6a41026a2d00003a00000c0e0b200041153a00000c0d0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024020060e020001030b200241c00b6a200110e50220022802c00b450d02200241d8006a41086a200241c00b6a41086a280200360200200220022903c00b370358410021010c010b200241c00b6a200110e50220022802c00b450d01200241d8006a41086a200241c00b6a41086a280200360200200220022903c00b370358410121010b200241a8216a41086a200241d8006a41086a28020022053602002002200229035822103703a8212000410f3a0000200020022f00a8163b0001200041036a200241aa166a2d00003a0000200041046a2001360000200041086a2010370000200041106a20053600000c0d0b200041153a00000c0c0b02402007450d0020052d0001210720012003417e6a22063602042001200541026a360200024002400240024002400240024020070e0700010203040506070b200241c00b6a410472210f4100210720032104034020062007460d07200520076a220c41026a2d0000210e20012004417d6a3602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120470d000b200241cc0b6a290200210a200241d40b6a290200210d200241c00b6a411c6a310000211b20022902c40b2110200241d8006a411c6a200241c00b6a41206a280000360000200241f0006a201b3c000020022010370358200241a8166a41026a20022d005a3a00002002200d3703682002200a3703602002200241dd0b6a280000360071200220103d01a8162003200c6b2206417e6a4104490d062010421888a72114200241e7006a2900002110200241f7006a310000210a200229005f210d200229006f211b2005200c6a220e41026a280000211320012006417a6a3602042001200e41066a36020041002105200241003602c00b200c20036b210f200641796a2106200241c00b6a41047221150340200f20056a417a460d07200e20056a220741066a2d0000210c200120063602042001200741076a360200201520056a200c3a00002002200541016a22073602c00b2006417f6a21062003417f6a21032007210520074120470d000b200241e30b6a2d00002103200241c80b6a2802002106200241cc0b6a2902002118200241dc0b6a2d0000210c20022802c40b2105200241e8006a200241d40b6a290200370200200241d8006a411d6a200241e10b6a2f00003b000020022005360258200241a8216a41026a220f20022d005a3a00002002200c3a00702002200241c00b6a411d6a280000360071200220183702602002200636025c200220053b01a821200420076b2206417a6a4104490d06200241ef006a290000211a200228005f210420022900672117200228005b2105200241386a41026a200241a8166a41026a2d00003a0000200241e4286a41026a200f2d00003a0000200e20076a220c41066a28000021072001200641766a3602042001200c410a6a360200200220022f01a8163b0138200220022f01a8213b01e4282018421888a7210c4100210e0c0f0b410220036b210e200241c00b6a410472210f41002106200321070340200e20066a450d06200520066a220441026a2d0000210c20012007417d6a3602042001200441036a360200200f20066a200c3a00002002200641016a22043602c00b2007417f6a21072004210620044120470d000b200241de006a200241df0b6a2d00003a0000200220022f01c40b3b01e01d200220022d00c60b3a00e21d2002200241dd0b6a2f00003b015c2002200241d90b6a28000022063602582002200241cb0b6a2f00003b01a8162002200241cd0b6a2d00003a00aa16200241ce0b6a280100210c200241d50b6a280000210e200241c00b6a41206a280200210f20022800c70b2114200241b1166a200241d40b6a2d00003a00002002200241d20b6a2f01003b00af16200241b9166a200228005b360000200220063601b6162002200f3600bd162002200e3601b2162002200c3600ab1641002106200241003602c00b200520046a210f2007417d6a2105200420036b221341026a210e200241c00b6a41047221150340200e20066a450d06200f20066a220441026a2d0000210c200120053602042001200441036a360200201520066a200c3a00002002200641016a22043602c00b2005417f6a21052003417f6a21032004210620044120470d000b200241e30b6a2d00002103200241dc0b6a2d00002106200241cc0b6a290200210a20022902c40b2110200241e8006a200241d40b6a290200370300200241d8006a411d6a200241e10b6a2f00003b000020022010370358200241f0286a41026a20022d005a3a00002002200a370360200220063a00702002200241c00b6a411d6a280000360071200220103d01f028201320046a417e460d05200229005f210a200241ef006a290000211a20022900672117200f20046a220e41026a2d0000210c200120053602042001200e41036a3602004100210602400240200c0e020100070b410121060b20054104490d05200e41036a28000021132001200720046b220f41796a22053602042001200e41076a220736020020054104490d052010421888a72105200a422088a7210c200aa72104200241386a41026a20022d00e21d3a0000200241e4286a41026a200241f0286a41026a2d00003a0000200728000021072001200f41756a3602042001200e410b6a360200200220022f01e01d3b0138200220022f01f0283b01e428200241b0166a2903002110200241c0166a310000210a20022903a816210d20022903b816211b4101210e0c0e0b200241c00b6a410472210f41002107417d2104034020062007460d05200520076a220c41026a2d0000210e2001200320046a3602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120470d000b200241cc0b6a290200210a200241d40b6a290200210d200241c00b6a411c6a310000211b20022902c40b2110200241d8006a411c6a200241e00b6a280000360000200241f0006a201b3c0000200220103703584102210e200241386a41026a20022d005a3a00002002200d3703682002200a3703602002200241dd0b6a280000360071200220103d01382010421888a72114200241e7006a2900002110200241f7006a310000210a200229005f210d200229006f211b0c0d0b200241c00b6a410472210f41002107417d2104034020062007460d04200520076a220c41026a2d0000210e2001200320046a3602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120460d0c0c000b0b2003417d6a2104200241c00b6a410472210f41002107034020062007460d03200520076a220c41026a2d0000210e200120043602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120470d000b200241de006a200241df0b6a2d00003a0000200220022f01c40b3b01982b200220022d00c60b3a009a2b2002200241dd0b6a2f00003b015c2002200241d90b6a28000022063602582002200241cb0b6a2f00003b01e01d2002200241cd0b6a2d00003a00e21d200241e00b6a2802002107200241d50b6a280000210e200241ce0b6a280100210f20022800c70b2114200241e91d6a200241d40b6a2d00003a0000200241f11d6a200228005b360000200220063601ee1d2002200241d20b6a2f01003b00e71d2002200f3600e31d2002200e3601ea1d200220073600f51d2003417e6a200c460d022005200c6a220541026a2d00002103200120043602042001200541036a36020041002106410821050240024020030e020100040b200241c00b6a200110b80420022d00c00b22054108460d0320022f00c10b20022d00c30b41107472410874210620022902c40b211a0b200241386a41026a20022d009a2b3a0000200220022f01982b3b013820062005722105201a422088a7210c200241e81d6a2903002110200241f81d6a310000210a20022903e01d210d20022903f01d211b201aa721044104210e0c0b0b2003417d6a2104200241c00b6a410472210f41002107034020062007460d02200520076a220c41026a2d0000210e200120043602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120470d000b200241de006a200241df0b6a2d00003a0000200220022f01c40b3b019c2b200220022d00c60b3a009e2b2002200241dd0b6a2f00003b015c2002200241d90b6a28000022063602582002200241cb0b6a2f00003b01a8162002200241cd0b6a2d00003a00aa16200241e00b6a2802002107200241d50b6a280000210e200241ce0b6a280100210f20022800c70b2114200241b1166a200241d40b6a2d00003a0000200241b9166a200228005b360000200220063601b6162002200241d20b6a2f01003b00af162002200f3600ab162002200e3601b216200220073600bd162003417e6a200c460d012005200c6a220541026a2d00002103200120043602042001200541036a36020041002106410821050240024020030e020100030b200241c00b6a200110b80420022d00c00b22054108460d0220022f00c10b20022d00c30b41107472410874210620022902c40b211a0b200241386a41026a20022d009e2b3a0000200220022f019c2b3b013820062005722105201a422088a7210c200241b0166a2903002110200241c0166a310000210a20022903a816210d20022903b816211b201aa721044105210e0c0a0b200241c00b6a410472210f41002107417d2104034020062007460d01200520076a220c41026a2d0000210e2001200320046a3602042001200c41036a360200200f20076a200e3a00002002200741016a220c3602c00b2004417f6a2104200c2107200c4120470d000b200241d8006a41066a200241df0b6a2d00003a0000200220022f01c40b3b01ec28200220022d00c60b3a00ee282002200241dd0b6a2f00003b015c2002200241d90b6a28000022063602582002200241cb0b6a2f00003b01f0282002200241cd0b6a2d00003a00f228200241e00b6a2802002107200241d50b6a2800002104200241ce0b6a280100210e20022800c70b2114200241f9286a200241d40b6a2d00003a000020024181296a200228005b360000200220063601fe282002200241d20b6a2f01003b00f7282002200e3600f328200220043601fa2820022007360085292003200c6b2203417e6a4104490d002005200c6a220641026a280000210520012003417a6a22073602042001200641066a36020020074104490d00200241386a41026a20022d00ee283a00004106210e200641066a28000021042001200341766a36020420012006410a6a360200200220022f01ec283b0138200241f8286a290300211020024188296a310000210a20022903f028210d200229038029211b0c090b200041153a00000c0b0b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004100210102400240024002400240024020060e06050001020304060b410121010c040b410221010c030b410321010c020b410421010c010b410521010b200020013a0001200041113a00000c0b0b200041153a00000c0a0b02402007450d0020052d0001210620012003417e6a220c3602042001200541026a360200410821040240024020060e020001020b200c4104490d012005280002210720012003417a6a3602042001200541066a360200200241c00b6a200110b80420022d00c00b22044108460d01200220022900c10b3703582002200241c00b6a41086a28000036005f0b200041106a200228005f360000200041096a2002290358370000200041123a0000200020022f00a8213b0001200041036a200241a8216a41026a2d00003a0000200041086a20043a0000200041046a20073600000c0a0b200041153a00000c090b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b2007450d0320052d0002210620012003417d6a3602042001200541036a3602004100210341082105410021070240024020060e020100050b200241c00b6a200110b80420022d00c00b22054108460d0420022f00c10b20022d00c30b41107472410874210720022902c40b21100b2007200572210e0c020b200241c00b6a200110800220022d00c00b4101460d02200241f2286a20022d00c30b3a0000200220022f00c10b3b01f028200241c00b6a41186a2203290300210d200241c00b6a41106a2206290300210a200241c00b6a41086a22072903002110200241e00b6a220c2d0000210520022802c40b210e200241c00b6a200110800220022d00c00b4101460d02200241e01d6a41086a2006290300370300200241e01d6a41106a2003290300370300200241e01d6a41186a200c2d00003a0000200220022d00c30b3a009a2b200220022f00c10b3b01982b200220072903003703e01d20042802002203450d0220022802c40b210f200128020022042d0000210720012003417f6a220c3602042001200441016a360200410021060240024020070e020100040b410121060b200c4102490d0220042f0001210720012003417d6a3602042001200441036a360200200241386a41026a20022d009a2b3a0000200241a8216a41026a200241f0286a41026a2d00003a0000200241d8006a41086a200241e01d6a41086a290300370300200241d8006a41106a200241e01d6a41106a290300370300200241d8006a41186a200241e01d6a41186a2d00003a0000200220022f01f0283b01a821200220022f01982b3b0138200220022903e01d370358410121030c010b200241c00b6a200110800220022d00c00b4101460d01200241a8166a41086a200241c00b6a41106a2205290300370300200241a8166a41106a200241c00b6a41186a2203290300370300200241a8166a41186a200241e00b6a22062d00003a0000200220022d00c30b3a009e2b200220022f00c10b3b019c2b2002200241c00b6a41086a22072903003703a81620022802c40b210e200241c00b6a200110800220022d00c00b4101460d01200241f0286a41086a2005290300370300200241f0286a41106a2003290300370300200241f0286a41186a20062d00003a0000200220022d00c30b3a00ee28200220022f00c10b3b01ec28200220072903003703f02820022802c40b210f200241c00b6a41047221032004280200210c417f21050340200c20056a2206417f460d02200128020022072d00002104200120063602042001200741016a360200200320043a0000200341016a21032005417f6a2205415f470d000b41022103200241a8216a41026a20022d009e2b3a0000200220022f019c2b3b01a821200241e00b6a2802002109200241cb0b6a2d00002104200241cc0b6a2f0100210c200241ce0b6a2801002115200241d20b6a2d00002114200241d30b6a2f00002113200241d50b6a2800002112200241d90b6a2d00002116200241da0b6a2f0100210b200241dc0b6a280200211120022d00c40b210620022f00c50b210720022800c70b2101200241a8166a41106a290300210d20022903b016210a20022d00c016210520022903a8162110200241386a41026a20022d00ee283a0000200220022f01ec283b0138200241d8006a41186a200241f0286a41186a2d00003a0000200241d8006a41106a200241f0286a41106a290300370300200241d8006a41086a200241f0286a41086a290300370300200220022903f0283703580b200041056a20022f01a8213b0000200041256a20022f01383b00002000412c6a2002290358370000200041076a200241a8216a41026a2d00003a0000200041276a200241386a41026a2d00003a0000200041346a200241d8006a41086a2903003700002000413c6a200241e8006a290300370000200041c4006a200241f0006a2d00003a0000200041133a00002000411c6a200d370000200041146a200a370000200041e1006a2009360000200041dd006a2011360000200041db006a200b3b0000200041da006a20163a0000200041d6006a2012360000200041d4006a20133b0000200041d3006a20143a0000200041cf006a2015360000200041cd006a200c3b0000200041cc006a20043a0000200041c8006a2001360000200041c6006a20073b0000200041c5006a20063a0000200041286a200f360000200041246a20053a00002000410c6a2010370000200041086a200e360000200041046a20033a0000200020022f00e4283b0001200041036a200241e4286a41026a2d00003a0000200041e7006a200241d4006a41026a2d00003a0000200041e5006a20022f00543b00000c090b200041153a00000c080b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024020060e020001050b2007450d0420052d0002210620012003417d6a22073602042001200541036a360200024002400240024020060e03000102080b20074108490d07200529000321102001200341756a36020420012005410b6a3602004200210a0c020b20074108490d06200529000321102001200341756a36020420012005410b6a360200200241a8216a200110c50520022802a821411b460d06200241a8166a200241a8216a41b80710c30a1a4201210a0c010b200241a8216a200110c50520022802a821411b460d0520022903a8212110200241a8166a200241b0216a41b00710c30a1a4202210a0b200241c00b6a200241a8166a41b80710c30a1a4200210d0c010b200241a8216a200110ab0120022903a8214209510d03200241e01d6a200241a8216a41c80310c30a1a200241a8216a200110ab0120022903a8214209510d02200241a8166a200241a8216a41c80310c30a1a200241a8216a200110c80120022d00a821410b460d01200241c0126a200241a8216a41e80310c30a1a20022903e01d210a20022903e81d2110200241c00b6a200241f01d6a41b80310c30a1a200241c00b6a41b8036a200241a8166a41c80310c30a1a4201210d0b200241d8006a200241c00b6a41e80a10c30a1a200041143a0000200020022800f028360001200041046a200241f3286a280000360000200041186a2010370000200041106a200a370000200041086a200d370000200041206a200241d8006a41e80a10c30a1a0c0a0b200241a8166a10af010b200241e01d6a10af010b200041153a00000c070b200041153a00000c060b1034000b1030000b200241cc0b6a290200210a200241d40b6a290200210d200241c00b6a411c6a310000211b20022902c40b2110200241d8006a411c6a200241e00b6a280000360000200241f0006a201b3c0000200220103703582002413a6a20022d005a3a00002002200d3703682002200a3703602002200241dd0b6a280000360071200220103d01382010421888a72114200241e7006a2900002110200241f7006a310000210a200229005f210d200229006f211b4103210e0b200041056a20022f01383b0000200041256a20022f01e4283b0000200041076a200241386a41026a2d00003a0000200041276a200241e4286a41026a2d00003a00002000413c6a201a370000200041346a2017370000200041246a200a3c00002000411c6a201b370000200041146a20103700002000410c6a200d370000200041103a0000200020022f00543b0001200041036a200241d4006a41026a2d00003a0000200041cc006a2007360000200041c8006a2013360000200041c5006a20063a0000200041c4006a20033a0000200041306a200c3600002000412c6a2004360000200041286a2005360000200041086a2014360000200041046a200e3a00000c020b200041096a20022f01e8283b00002000410b6a200241ea286a2d00003a0000200241a8216a41086a2201200241d8006a41086a290300370300200220022903583703a8212000410c3a000020002002280038360001200041046a2002413b6a280000360000200041146a2010370000200041106a20073600002000410c6a2006360000200041086a20043a0000200041386a200d370000200041306a200a3700002000412c6a20053600002000411c6a20022903a821370000200041246a20012903003700000c010b200041153a00000b200241a02b6a24000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b2203410120031bad42a00b7e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141a00b6c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141a00b6e360200200241206a24000f0b1034000bdf0301017f0240024002400240024002400240024020002d00000e140707070007010203070707070407070507070707060b200041086a280200450d06200041046a28020010390f0b200041046a2802000d052000410c6a2802002201450d05200141286c450d05200041086a28020010390f0b200041046a2d00004102470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b024002400240200041046a2802000e020001020b200041d0026a280200450d05200041cc026a28020010390f0b200041d0026a280200450d04200041cc026a28020010390f0b200041d0026a280200450d03200041cc026a28020010390f0b200041086a2d0000410a470d02200041346a280200450d02200041306a28020010390f0b0240200041046a2802000d002000410c6a28020041ffffff3f71450d02200028020810390f0b2000410c6a28020041ffffff3f71450d01200028020810390c010b200041106a21010240200041086a2903004201510d000240024020012802000e020300010b200041206a280200410b470d02200041286a10af01200041f0036a10d2030f0b200041186a280200410b470d01200041206a10af01200041e8036a10d2030f0b200110af01200041d8036a10af01200041a0076a10d2030f0b0bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42dc027e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141dc026c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141dc026e360200200241206a24000f0b1034000bbc0403027f017e017f230041e0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020014104470d00200241086a200041f4ddca0020011b28000010e805200241d0006a200241086a10eb052002350258210420022802502100024020022802082203450d000240200228020c41ffffff3f71450d00200310390b0240200241186a28020041ffffff3f71450d00200241146a28020010390b0240200241246a28020041ffffff3f71450d00200241206a28020010390b2002412c6a28020021050240200241346a2802002203450d002003410c6c21012005210303400240200341046a28020041ffffffff0371450d00200328020010390b2003410c6a2103200141746a22010d000b0b200241306a2802002203450d002003410c6c450d00200510390b200241e0006a240020044220862000ad840f0b200241dc006a411d3602002002411c6a41023602002002420237020c200241f8f4c30036020820024104360254200241acf9c3003602502002200241d0006a3602182002200241086a360258200241086a4188f5c3001043000bb20403037f017e017f230041c0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241186a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020014104470d00200241186a200041f4ddca0020011b280000109c04200241306a20022802182201200228022010a30402400240200228023022000d002002420037020c41002104200241002802ccdd4a2200360208410021030c010b20022902342105200220003602082002200537020c2005a741ffffffff007121042005422088a721030b0240200228021c450d00200110390b200241186a200241086a109a03200235022021052002280218210602402003450d0020034104742101200041086a2103034002402003280200450d002003417c6a28020010390b200341106a2103200141706a22010d000b0b02402004450d00200010390b200241c0006a240020054220862006ad840f0b2002413c6a411d3602002002412c6a41023602002002420237021c200241f8f4c30036021820024104360234200241c0f9c3003602302002200241306a3602282002200241186a360238200241186a4188f5c3001043000bfe1f05037f017e077f017e137f230041306b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241106a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02400240024002400240024020014104490d0020014104470d00200241106a200041f4ddca0020011b280000220410c8062002200228021022002002280218109c0220022902044200200228020022011b21054100210641002802ccdd4a210302402002280214450d00200010390b2001200320011b210702402005422088a722010d00410021080c020b200720014102746a210941002802ccdd4a210a41002106410021082007210b0340200241106a200b280200220c200410a805200220022802102203200228021810a304200228020021012002290204210d02402002280214450d00200310390b024020080d0041b80110382208450d044100210e200841003b01b601200841003602000b200d420020011b210d200b41046a210b2001200a20011b210f20082110200e211102400340201041246a21032010412c6a2112201041046a211320102f01b6012214410274211541002101417f210002400340024020152001470d00201421000c020b201220016a2116200041016a21002003410c6a2103200141046a2101417f201641586a2802002216200c472016200c4b1b22164101460d000b0240201641016a0e020100010b200328020021002003200f360200200341086a2802002101200341046a2203280200210c2003200d3702002000450d0202402001450d0020014104742103200041086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200341706a22030d000b0b200c41ffffffff0071450d02200010390c020b02402011450d002011417f6a2111201020004102746a41b8016a28020021100c010b0b0240024002400240024002400240024002400240024002400240024002402014410a4b0d00201320004102746a210120002014490d012001200c360200201041306a21010c020b410021174104210102400240200041054f0d00200021030c010b4105210141052103024002402000417b6a0e020201000b200041796a210341012117410621010c010b41002103410121170b41b80110382200450d12200041003b01b60120004100360200200020102f01b60122122001417f736a22163b01b6012016410c4f0d052012200141016a22156b2016470d06201041306a22182001410c6c6a221228020821112012280204211420122802002119201320014102746a280200211a200041046a201320154102746a201641027410c30a1a200041306a20182015410c6c6a2016410c6c10c30a1a201020013b01b6012000201020171b220141046a221320034102746a211602400240200341016a221220012f01b60122154d0d002016200c360200200141306a210c0c010b201320124102746a2016201520036b221341027410c40a1a2016200c360200200141306a220c2012410c6c6a200c2003410c6c6a2013410c6c10c40a1a0b200c2003410c6c6a2203200d3702042003200f3602002001201541016a3b01b601201028020022010d024100210f0c030b2013200041016a22034102746a2001201420006b221641027410c40a1a2001200c360200201041306a22012003410c6c6a20012000410c6c6a2016410c6c10c40a1a0b20012000410c6c6a2201200d3702042001200f3602002010201441016a3b01b601200641016a21060c0c0b4100210f20192117201421182011211b201c2119201d2114201e2111201a211f20002120034020102f01b4012116200122122f01b6012213410b490d024100211041042101024020164105490d0020162101024002402016417b6a0e020201000b201641796a211641012110410621010c010b4100211641012110410521010b41e80110382200450d10200041003b01b60120004100360200200020122f01b60122152001417f736a22033b01b6012003410c4f0d052015200141016a220c6b2003470d06201241306a221c2001410c6c6a221528020821112015280204211420152802002119201241046a221520014102746a280200211a200041046a2015200c410274221e6a200341027410c30a1a200041306a201c200c410c6c6a2003410c6c10c30a1a201220013b01b60120002f01b601220341016a210c2003410c4f0d07201320016b2201200c470d08200f41016a210f200041b8016a2012201e6a41b8016a200141027410c30a1a4100210102400340200020014102746a41b8016a280200220c20013b01b401200c2000360200200120034f0d01200120012003496a220120034d0d000b0b2000201220101b220c41046a22102016410274221c6a211502400240201641016a2201200c2f01b60122034d0d002015201f360200200c41306a21100c010b201020014102746a2015200320166b221341027410c40a1a2015201f360200200c41306a22102001410c6c6a20102016410c6c6a2013410c6c10c40a1a0b200341016a211520102016410c6c6a2210201b3602082010201836020420102017360200200c41b8016a21100240201641026a221e200341026a22134f0d002010201e4102746a201020014102746a200320166b41027410c40a1a0b201020014102746a2020360200200c20153b01b6010240200120134f0d00200c201c6a41bc016a2101034020012802002203201641016a22163b01b4012003200c360200200141046a210120152016470d000b0b20192117201421182011211b20122110201a211f200021202019211c2014211d2011211e201228020022010d000b0b41e80110382201450d0e200120083602b801200141003b01b60120014100360200200841003b01b40120082001360200200e200f470d0720012f01b6012203410b4f0d08200e41016a210e2001200341016a220c3b01b60120012003410c6c6a221641346a2014360200201641306a2019360200200120034102746a41046a201a360200201641386a2011360200200141b8016a200c4102746a20003602002000200c3b01b4012000200136020020012108200641016a21060c0a0b201241046a210302400240201320164b0d00200320164102746a201f360200201641016a2101201241306a21030c010b2003201641016a22014102746a200320164102746a2203201320166b220041027410c40a1a2003201f360200201241306a22032016410c6c6a220c410c6a200c2000410c6c10c40a1a0b201341016a210020032016410c6c6a2203201b3602082003201836020420032017360200201241b8016a2103201341026a210c0240201320164d0d00201641027420036a41086a200320014102746a201320166b41027410c40a1a0b2003200141027422166a2020360200201220003b01b6012001200c4f0d08201220166a41b8016a210303402003280200220020013b01b40120002012360200200341046a2103200c200141016a2201470d000c090b0b2016410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2003410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b200c410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2011211e2014211d2019211c200641016a21060b200b2009460d020c000b0b2002410c6a411d360200200241246a410236020020024202370214200241f8f4c30036021020024104360204200241d4f9c300360200200220023602202002200241106a360208200241106a4188f5c3001043000b0240200542ffffffff0383500d00200710390b20064104744104722201417f4c0d01200110382203450d002002410036020820022001360204200220033602002002200610d2010240024020080d004100210141002103410021000c010b20082103200e2100200821010240034020032f01b601210c2000450d012000417f6a21002003200c4102746a41b8016a280200210320012802b80121010c000b0b4100211c2001211d4100211e200621000b200241246a200c360200200241106a41106a200336020020024200370318200220013602142002410036021002402000450d00034020022000417f6a360228200241106a410020011b22162802002100024002402016280208220c201628020422032f01b6014f0d00200321010c010b03400240200328020022010d00410021010c020b200041016a210020032f01b401210c20012103200c20012f01b6014f0d000b0b024002402000450d00200c41027420016a41bc016a280200210302402000417f6a2200450d00034020032802b80121032000417f6a22000d000b0b410021000c010b200c41016a2100200121030b2016200336020420164100360200201620003602082001200c410c6c6a220341306a21002001200c4102746a41046a280200210c02402002280204200228020822016b41034b0d00200220014104108101200228020821010b200228020020016a200c3600002002200141046a360208200028020021012002200341386a280200220310d20102402003450d00200120034104746a210c03402001280200210002402002280204200228020822036b41034b0d00200220034104108101200228020821030b200228020020036a20003600002002200341046a360208200141046a2802002001410c6a280200200210d601200141106a2201200c470d000b0b20022802282200450d01200228021421010c000b0b200228020021152002350208210d2008450d030240200e450d00034020082802b8012108200e417f6a220e0d000b0b2006450d024100210c03400240024002400240200c20082f01b601490d0041002103034041002101024020082802002216450d00200341016a210c20082f01b4012100201621010b024041e80141b80120031b450d00200810390b024020010d00410021080c050b200c210320012108200020012f01b6014f0d000b20012000410c6c6a41306a21160240200c0d00200121080c020b200041027420016a41bc016a28020021080240200c417f6a2203450d00034020082802b80121082003417f6a22030d000b0b4100210c0c020b2008200c410c6c6a41306a2116200c2100200821010b200041016a210c0b20012000410c6c6a220141386a280200211e200141346a280200211d2016280200211c0b201c450d040240201e450d00201e4104742103201c41086a2101034002402001280200450d002001417c6a28020010390b200141106a2101200341706a22030d000b0b2006417f6a21060240201d41ffffffff0071450d00201c10390b20060d000c030b0b1030000b1034000b41002101034020082802002103024041e80141b80120011b450d00200810390b2001417f6a21012003210820030d000b0b200241306a2400200d4220862015ad840be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41a4dec700411810f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bcd0f02087f017e230041e0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241286a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02402001450d002002200041f4ddca0020011b22032d00003a002c2002410136022820014101460d00200220032d00013a002d2002410236022820014102460d00200220032d00023a002e2002410336022820014103460d00200220032d00033a002f2002410436022820014104460d00200241306a20032d00043a00002002410536022820014105460d00200241316a20032d00053a00002002410636022820014106460d00200241326a20032d00063a00002002410736022820014107460d00200241336a20032d00073a00002002410836022820014108460d00200241346a20032d00083a00002002410936022820014109460d00200241356a20032d00093a00002002410a3602282001410a460d00200241366a20032d000a3a00002002410b3602282001410b460d00200241376a20032d000b3a00002002410c3602282001410c460d00200241386a20032d000c3a00002002410d3602282001410d460d00200241396a20032d000d3a00002002410e3602282001410e460d002002413a6a20032d000e3a00002002410f3602282001410f460d002002413b6a20032d000f3a00002002411036022820014110460d002002413c6a20032d00103a00002002411136022820014111460d002002413d6a20032d00113a00002002411236022820014112460d002002413e6a20032d00123a00002002411336022820014113460d002002413f6a20032d00133a00002002411436022820014114460d00200241c0006a20032d00143a00002002411536022820014115460d00200241c1006a20032d00153a00002002411636022820014116460d00200241c2006a20032d00163a00002002411736022820014117460d00200241c3006a20032d00173a00002002411836022820014118460d00200241c4006a20032d00183a00002002411936022820014119460d00200241c5006a20032d00193a00002002411a3602282001411a460d00200241c6006a20032d001a3a00002002411b3602282001411b460d00200241c7006a20032d001b3a00002002411c3602282001411c460d00200241c8006a20032d001c3a00002002411d3602282001411d460d00200241c9006a20032d001d3a00002002411e3602282001411e460d00200241ca006a20032d001e3a00002002411f3602282001411f460d00200241cb006a20032d001f3a0000200241246a41026a2203200241356a2d00003a0000200241206a41026a22002002413c6a2d00003a0000200220022f012c3b0150200220022d002e3a00522002200241336a2f00003b012420022002413a6a2f01003b0120200241366a28010021042002413d6a2800002105200241c4006a280200210620024120360228200241286a41206a2802002107200228002f21082002411c6a41026a2209200241c3006a2d00003a00002002200241c1006a2f00003b011c20014120470d00200241186a41026a20022d00523a0000200241146a41026a20032d00003a0000200241106a41026a20002d00003a00002002410c6a41026a20092d00003a0000200220022f01503b0118200220022f01243b0114200220022f01203b0110200220022f011c3b010c200241d0006a41f4eec600410510f201200241286a41bc88c800410a10f2010240412010382201450d00200120022f01183b000020012008360003200120022f01143b00072001200436000a200120022f01103b000e20012005360011200120022f010c3b0015200141026a200241186a41026a2d00003a0000200141096a200241146a41026a2d00003a0000200141106a2200200241106a41026a2d00003a0000200141176a2002410c6a41026a2d00003a00002001200736001c20012006360018412010382203450d0020032001290000370000200341186a2209200141186a290000370000200341106a2000290000370000200341086a2200200141086a2900003700002001103941c00010382201450d002001200229002837001020012002290050370000200141086a200241d0006a41086a290000370000200141186a200241286a41086a29000037000020012003290000370020200141286a2000290000370000200141306a200341106a290000370000200141386a200929000037000020031039200241286a200141c00010ba02200229022c210a2002280228210320011039410110382201450d002002420137022c200220013602280240024020030d00200141003a0000410121000c010b200141013a0000200241013602302003200a422088a7200241286a10d6012002280230210020022802282101200aa7450d00200310390b200241e0006a24002000ad4220862001ad840f0b1030000b200241dc006a411d3602002002413c6a41023602002002420237022c200241f8f4c30036022820024104360254200241fcf9c3003602502002200241d0006a3602382002200241286a360258200241286a4188f5c3001043000bae0603057f017e017f230041e0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241c8006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02400240024020010d002002411436021c200241ddf9c500360218200241206a41ddf9c500411410e4020240024020022802202204450d0020022802242105024002400240200241286a2802002203450d0020022003417f6a3602342002200441016a36023020042d000021032002200241306a10ad0120022802000d00200241c8006a200241306a200228020410b40120022802482206450d00200229024c2107200341ff01714101460d012007a72203450d00200341286c450d00200610390b2002420037020c2002410028029cde4a3602082002410c36023c2002200241186a3602382002200241086a36024441012108200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280208200228021010e7020240200228020c450d00200228020810390b0c010b2007422088a721032007a72101410021080b02402005450d00200410390b2008450d010b4100210341002802fcad492106410021010b200341286c4104722204417f4c0d01200410382205450d02200241003602502002200436024c20022005360248200241c8006a200310d20120062003200241c8006a10d001200235025021072002280248210302402001450d00200141286c450d00200610390b200241e0006a240020074220862003ad840f0b200241146a411d360200200241dc006a41023602002002420237024c200241f8f4c3003602482002410436020c2002419cfac3003602082002200241086a3602582002200241c8006a360210200241c8006a4188f5c3001043000b1034000b1030000bce0b04027f017e017f027e230041900b6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241880b6a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a200242808080808020370214200220013602fc0a2002200041f4ddca0020011b3602f80a2002200241f80a6a360210200241a0026a200241106a109704024020022903a80222044202510d00200241086a200241106a10bb0120022802080d0020022802fc0a2201200228020c2203490d0002400240024002402003417f4c0d000240024020030d00410121000c010b200310382200450d0220004100200310c50a1a20022802fc0a21010b0240200120034f0d00200010390c050b200020022802f80a2205200310c30a21002002200120036b22013602fc0a2002200520036a3602f80a20022903a0022106200241206a200241b0026a41f00110c30a1a2001450d02420221042003450d03200010390c030b1034000b1030000b200241a0026a200241206a41f00110c30a1a0b20044202510d00200241206a200241a0026a41f00110c30a1a200220033602fc0a200220003602f80a200241a0026a200241f80a6a10cc060240024020022802a40222010d00410021010c010b200241186a200241b0026a280200360200200220022903a80237031020022802a00221050b02402003450d00200010390b02402001450d0020024190026a41086a200241106a41086a2203280200220036020020022002290310220737039002200241d4036a2000360200200241cc036a2007370200200241e8036a200241206a41f00110c30a1a200241e0036a2004370300200241d8036a2006370300200241c8036a2001360200200241c4036a2005360200200241c0036a4102360200200241083602b80320024202370388032002200241a0026a360210200241f80a6a200241106a10d2052003200241f80a6a41086a280200360200200220022903f80a370310200241106a10cd06210302402002290388034202510d0020022d00a00241ff01714102470d0020022802a802450d0020022802a40210390b200241b8036a10ce0641002802a8fe4a2100024020030d0020004103490d0141002802a4fe4a210341002802a0fe4a210041002802acfe4a2105200241bc026a41f4ddca00360200200241b0026a4201370300200241d4026a41bffcc500ad4280808080f00c84370200200241c8026a41a3fcc500ad4280808080c00384370300200241c0026a4200370300200241a8026a410c360200200241a48cc5003602ac0220024281808080e0153702dc02200241003602d00220024197fcc5003602a402200241033602a002200041f4ddca00200541024622051b200241a0026a200341b0a7c00020051b2802101103000c010b2000450d00200241263602142002200241880b6a36021041002802a4fe4a210341002802a0fe4a210041002802acfe4a2105200241b0026a4201370300200241d4026a41bffcc500ad4280808080f00c84370200200241c8026a41a3fcc500ad4280808080c00384370300200241c0026a4201370300200241a8026a410c360200200241bc026a200241106a360200200241c88ac5003602ac0220024281808080a0163702dc02200241003602d00220024197fcc5003602a402200241013602a002200041f4ddca00200541024622051b200241a0026a200341b0a7c00020051b2802101103000b200141004710cd052104200241900b6a240020040f0b2002411c6a411d360200200241346a410236020020024202370224200241f8f4c30036022020024104360214200241b8fac3003602102002200241106a3602302002200241880b6a360218200241206a4188f5c3001043000ba60201067f230041106b22022400024002400240200128020422034104490d0020012003417c6a36020420012001280200220341046a360200200328000021042002200110bf0320022802002203450d01200241086a2802002105200228020421060240200128020422074104490d0020002006360208200020033602042000200436020020012007417c6a3602042000410c6a200536020020012001280200220341046a360200200041106a20032800003602000c030b2000410036020402402005450d002005410c6c21002003210103400240200141046a280200450d00200128020010390b2001410c6a2101200041746a22000d000b0b2006450d022006410c6c450d02200310390c020b200041003602040c010b200041003602040b200241106a24000b850103027f017e027f230041106b22012400024002400240200035020842208620002802002202ad8410212203428080808010540d00410021042003a722052d00000e020201000b41a1d5ca00412e200141086a41d0d5ca0041e0d5ca00103d000b410121040b200510390240200041046a280200450d00200210390b200141106a240020040b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a220228020010ce06200228020010390f0b2000410c6a220228020010ce06200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a220228020010ce06200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a220228020010ce06200228020010390f0b200041106a220228020010ce06200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a220228020010ce06200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a220228020010ce06200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a220228020010eb08200228020010390f0b200041286a220228020010ce06200228020010390f0b0b0d0020014198f0ca00410210560bb118030a7f017e047f230041c0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241a8026a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020014108490d00200241003602a80220014108460d00200241013602a8022002200041f4ddca0020011b22032d00083a00ac0220014109460d00200241023602a802200220032d00093a00ad022001410a460d00200241033602a802200220032d000a3a00ae022001410b460d00200241043602a802200220032d000b3a00af022001410c460d00200241b0026a20032d000c3a0000200241053602a8022001410d460d00200241b1026a20032d000d3a0000200241063602a8022001410e460d00200241b2026a20032d000e3a0000200241073602a8022001410f460d00200241b3026a20032d000f3a0000200241083602a80220014110460d00200241b4026a20032d00103a0000200241093602a80220014111460d00200241b5026a20032d00113a00002002410a3602a80220014112460d00200241b6026a20032d00123a00002002410b3602a80220014113460d00200241b7026a20032d00133a00002002410c3602a80220014114460d00200241b8026a20032d00143a00002002410d3602a80220014115460d00200241b9026a20032d00153a00002002410e3602a80220014116460d00200241ba026a20032d00163a00002002410f3602a80220014117460d00200241bb026a20032d00173a0000200241103602a80220014118460d00200241bc026a20032d00183a0000200241113602a80220014119460d00200241bd026a20032d00193a0000200241123602a8022001411a460d00200241be026a20032d001a3a0000200241133602a8022001411b460d00200241bf026a20032d001b3a0000200241143602a8022001411c460d00200241c0026a20032d001c3a0000200241153602a8022001411d460d00200241c1026a20032d001d3a0000200241163602a8022001411e460d00200241c2026a20032d001e3a0000200241173602a8022001411f460d00200241c3026a20032d001f3a0000200241183602a80220014120460d00200241c4026a20032d00203a0000200241193602a80220014121460d00200241c5026a20032d00213a00002002411a3602a80220014122460d00200241c6026a20032d00223a00002002411b3602a80220014123460d00200241c7026a20032d00233a00002002411c3602a80220014124460d00200241c8026a20032d00243a00002002411d3602a80220014125460d00200241c9026a20032d00253a00002002411e3602a80220014126460d00200241ca026a20032d00263a00002002411f3602a80220014127460d00200241cb026a20032d00273a0000200241a8016a41026a2203200241b5026a2d00003a000020024180026a41026a2200200241bc026a2d00003a0000200220022f01ac023b0128200220022d00ae023a002a2002200241b3026a2f00003b01a8012002200241ba026a2f01003b018002200241b6026a2801002104200241bd026a2800002105200241c4026a2802002106200241203602a802200241a8026a41206a280200210720022800af022108200241b0036a41026a2209200241c3026a2d00003a00002002200241c1026a2f00003b01b00320014128470d00200241246a41026a220120032d00003a0000200241206a41026a220320002d00003a00002002411c6a41026a220020092d00003a0000200220022d002a3a00aa02200220022f01283b01a802200220022f01a8013b0124200220022f0180023b0120200220022f01b0033b011c200241186a41026a20022d00aa023a0000200220022f01a8023b0118200241146a41026a20012d00003a0000200220022f01243b0114200241106a41026a20032d00003a0000200220022f01203b01102002410c6a41026a20002d00003a0000200220022f011c3b010c200241c0026a22014200370300200241b8026a22034200370300200241a8026a41086a22004200370300200242003703a802200241286a418cf9c800410710f2012000200241286a41086a2209290000370300200220022900283703a802200241286a4184b4c200410c10f20120012009290000370300200320022900283703002002200241a8026a412010f5012002280204210a2002280200210b200142003703002003420037030020004200370300200242003703a802200241286a418cf9c800410710f20120002009290000370300200220022900283703a802200241286a41e9a4c200410a10f2012001200929000037030020032002290028370300200241286a200241a8026a10c004200229022c4200200228022822011b220ca721092001410028029cde4a20011b220021010240200c422088a74105742203450d00200021010340200141206a2101200341606a22030d000b0b200220093602b403200220003602b0032002200120006b410575220d3602b803200241a8026a200241b0036a10cc040240024002400240024020022802a8024101460d0020024180026a41206a2203200241a8026a41286a28020036020020024180026a41186a2200200241a8026a41206a29030037030020024180026a41106a2209200241a8026a41186a29030037030020024180026a41086a220e200241a8026a41106a220f2903003703002002200241a8026a41086a29030037038002200241d4026a2802002101200241a8016a200241d8026a41d80010c30a1a2001450d00200241286a41206a22102003280200360200200241286a41186a2000290300370300200241286a41106a2009290300370300200241286a41086a200e2903003703002002200229038002370328200241286a41286a200241a8016a41d80010c30a1a200241cc006a2001360200200241b1026a200241146a41026a2d00003a0000200f200241106a41026a2d00003a00002002200241186a41026a2d00003a00aa02200220022f01183b01a802200220083600ab02200220022f01143b00af02200220043601b202200220022f01103b01b602200220053600b902200241bf026a2002410c6a41026a2d00003a0000200220022f010c3b00bd02200220073602c402200220063602c002200241a8016a200241286a41e7e485f306200241a8026a10d10620022902ac01210c20022802a801210520102802002200450d020240200241d4006a2802000d00200041016a21060c020b200228024c220341046a21012003200041016a22066a21092003280200417f7341808182847871210003400240024020000d000340200120094f0d05200341c07e6a210320012802002100200141046a220821012000418081828478712200418081828478460d000b2000418081828478732200417f6a2000712104200821010c010b2000417f6a20007121040b2000682108200421002003410020084103766b41306c6a220841746a280200450d00200841706a2802001039200421000c000b0b410021000c020b200228024c2006ad42307ea76b10390b0240200241dc006a280200450d00200228025810390b410021002005450d00200241b0026a200c3703002002200d3602b802200220053602ac022002200a4100200b1b3602a802200241286a200241a8026a10d206200ca721090240200c422088a72201450d002001410c6c21032005210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b02402009450d002009410c6c450d00200510390b20022802282201450d00200241306a2802002103200228022c2109200121000c010b0b0240410110382201450d00200242013702ac02200220013602a8020240024020000d00200141003a0000410121030c010b200141013a0000200241013602b00220002003200241a8026a10d60120022802b002210320022802a80221012009450d00200010390b200241c0036a24002003ad4220862001ad840f0b1030000b200241346a411d360200200241bc026a4102360200200242023702ac02200241f8f4c3003602a8022002410436022c200241f0fac3003602282002200241286a3602b8022002200241a8026a360230200241a8026a4188f5c3001043000bed0a03047f017e037f230041d0006b2204240002400240024002400240024002400240200141e0006a22052001413c6a412010c60a450d00200441206a41186a200541186a290000370300200441206a41106a200541106a290000370300200441206a41086a200541086a2900003703002004200529000037032002402001200441206a10ed092206450d00200628020c41004a0d010b413010382201450d01200141003a000020012005290000370001200141096a200541086a290000370000200141116a200541106a290000370000200141196a200541186a29000037000020011039200041003602000c070b2004410036020c20042005360208200441f8f8c800360204200420013602002004410036021c20044200370214200441002802ccdd4a2207360210412410382205450d002005200236000020054180013a000420042005360240200442a4808080d000370244200441c0006a4105412010810120042802402201200428024822066a22052003290000370000200541086a200341086a290000370000200541106a200341106a290000370000200541186a200341186a290000370000200441206a20042001200641206a200441106a10a904024002400240024020042802204101470d0002400240200428022422052d00000e0403030003010b200541086a280200450d02200541046a28020010390c020b200541286a280200450d01200541246a28020010390c010b20042802242203450d010240200441206a41086a2903002208422088a722054104490d00200328000021060b200541034b21052008a7450d02200310390c020b200510390b410021050b02402004280244450d00200110390b2005450d0120042006360240200441206a2004200441c0006a4104200441106a10a904024020042802204101470d0002400240200428022422052d00000e0406060006010b200541086a280200450d05200541046a28020010390c050b200541286a280200450d04200541246a28020010390c040b20042802242205450d04200441286a2903002208422088a7210102402008a7450d00200510390b2001411f4d0d04200428021421092004280218210a200442003702142004280210210b20042007360210200aad420c7e2208422088a70d022008a72205417f4c0d024104210102402005450d00200510382201450d010b2000200136020041002106200041086a22034100360200200041046a2005410c6e220536020002400240024002402005200a4f0d0020004100200a10bd0320032802002106200028020021010c010b200b2105200a450d010b200a41306c2103200b41306a210520012006410c6c6a21010340200541546a2802002202450d01200141046a200541586a290200370200200120023602002001410c6a2101200541306a2105200641016a2106200341506a22030d000b200041086a20063602000c010b200041086a2006360200200b200a41306c6a22002005460d000340200541306a21010240200541086a280200450d00200541046a28020010390b2001210520002001470d000b0b02402009450d00200941306c450d00200b10390b20042802102100024020042802182205450d00200541306c2101200041086a2105034002402005280200450d002005417c6a28020010390b200541306a2105200141506a22010d000b0b20042802142205450d06200541306c450d06200010390c060b1030000b200041003602000c030b1034000b200510390b200041003602000b20042802102100024020042802182205450d00200541306c2101200041086a2105034002402005280200450d002005417c6a28020010390b200541306a2105200141506a22010d000b0b20042802142205450d00200541306c450d00200010390b200441d0006a24000bd80101037f20004201370200200041086a22024100360200200128020021032000410041041081012000280200200228020022046a20033600002002200441046a3602002001280204210320002001410c6a280200220410d20102402004450d0020032004410c6c6a210403402003280200200341086a280200200010d6012003410c6a22032004470d000b0b200128021021040240200041046a280200200228020022036b41034b0d00200020034104108101200041086a28020021030b200041086a200341046a360200200028020020036a20043600000bf40902077f037e230041d0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241086a41eb97c200411710f2012002200241086a411010f5012002280204210420022802002105200241c8006a22034200370300200241306a41106a22014200370300200241306a41086a2206420037030020024200370330200241086a41bffec300410410f2012006200241086a41086a220729000037030020022002290008370330200241086a41e0f6c800410b10f2012003200729000037030020012002290008370300200241086a200241306a10fb0420022802082108200229020c210920034200370300200142003703002006420037030020024200370330200241086a41bffec300410410f2012006200729000037030020022002290008370330200241086a41d5a7c800410a10f2012003200729000037030020012002290008370300200441e40020051b2107200241086a200241306a10fc040240024020022d00084101460d00200342003703002001420037030020064200370300200242003703300c010b2003200241216a2900003703002001200241196a2900003703002006200241116a290000370300200220022900093703300b2009422088210a2007ad210b2002410036021020024201370308200241086a4100410810810120022802082203200228021022016a42f02e3700002002200141086a22013602100240200228020c20016b41074b0d00200241086a2001410810810120022802082103200228021021010b200aa7210641002802fcad492107200320016a200b3700002002200141086a22013602100240200228020c220420016b41074b0d00200241086a20014108108101200228020c210420022802082103200228021021010b2006410020081b21062008200720081b2107200320016a42013700002002200141086a22013602100240200420016b41074b0d00200241086a2001410810810120022802082103200228021021010b2009a72105200320016a42043700002002200141086a360210200241086a200610d20120072006200241086a10d0010240200228020c2204200228021022016b411f4b0d00200241086a20014120108101200228020c2104200228021021010b2005410020081b21082002280208220620016a22032002290330370000200341086a200241306a41086a290300370000200341106a200241306a41106a290300370000200341186a200241306a41186a2903003700002002200141206a2203360210024020042003470d00200241086a2004410110810120022802082106200228021021030b200620036a41023a000002402008450d00200841286c450d00200710390b200241d0006a2400200341016aad4220862006ad840f0b2002413c6a411d3602002002411c6a41023602002002420237020c200241f8f4c3003602082002410436023420024194fbc3003602302002200241306a3602182002200241086a360238200241086a4188f5c3001043000b950502047f027e230041f0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d0006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024002400240024020010d00200241e8006a22044200370300200241d0006a41106a22034200370300200241d8006a2205420037030020024200370350200241d0006a41bffec300410410f20120034188a6c800410a10f201200241306a200241d0006a10c2042002290338210620022802302101200241d0006a41eb97c200411710f201200241286a200241d0006a411010f501200241186a2006420020011b4200200228022c41e40020022802281bad420010c20a200229032050450d012002290318210620044200370300200342003703002005420037030020024200370350200241d0006a41bffec300410410f201200341c0a7c800410b10f201200241086a200241d0006a10c20420062002290310420020022802081b7c22072006540d02410810382203450d0320032007370000200241f0006a24002003ad42808080808001840f0b200241cc006a411d360200200241e4006a410236020020024202370254200241f8f4c30036025020024104360244200241acfbc3003602402002200241c0006a3602602002200241d0006a360248200241d0006a4188f5c3001043000b4198dfc20041fa004194e0c2001065000b4198dfc20041fa0041a4e0c2001065000b1030000be80d05047f017e027f027e047f23004190026b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d8006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024002400240024020010d00200241f0016a41186a22044200370300200241f0016a41106a22034200370300200241f0016a41086a22054200370300200242003703f001200241d8006a41bffec300410410f2012005200241d8006a41086a2201290000370300200220022900583703f001200241d8006a4188a6c800410a10f2012004200129000037030020032002290058370300200241c8006a200241f0016a10c2042002290350210620022802482107200241d8006a41186a22084200370300200241d8006a41106a220442003703002001420037030020024200370358200241d8006a41bffec300410410f20120044188a6c800410a10f201200241386a200241d8006a10c2042002290340210920022802382105200241d8006a41eb97c200411710f201200241306a200241d8006a411010f501200241206a2009420020051b4200200228023441e40020022802301bad420010c20a200229032850450d012002290320210920084200370300200442003703002001420037030020024200370358200241d8006a41bffec300410410f201200441c0a7c800410b10f201200241106a200241d8006a10c20420092002290318420020022802101b7c220a2009540d02200241d8006a41eb97c200411710f201200241086a200241d8006a411010f501200228020c210b2002280208210c200241f0016a41186a22084200370300200241f0016a41106a220d4200370300200241f0016a41086a22014200370300200242003703f001200241d8006a41bffec300410410f2012001200241d8006a41086a2204290000370300200220022900583703f001200241d8006a41e0f6c800410b10f201200341086a220e200429000037000020032002290058370000200241d8006a200241f0016a10fb0420022802582105200229025c210920084200370300200d420037030020014200370300200242003703f001200241d8006a41bffec300410410f20120012004290000370300200220022900583703f001200241d8006a41d5a7c800410a10f201200e200429000037000020032002290058370000200241d8006a200241f0016a10fc040240024020022d00584101460d00200241b8016a41186a4200370300200241b8016a41106a4200370300200241b8016a41086a4200370300200242003703b8010c010b200241b8016a41186a200241f1006a290000370300200241b8016a41106a200241e9006a290000370300200241b8016a41086a200241e1006a290000370300200220022900593703b8010b200241f0016a41186a4200370300200241f0016a41106a4200370300200241f0016a41086a22044200370300200242003703f001200241d8006a41bffec300410410f2012004200241d8006a41086a2201290000370300200220022900583703f001200241d8006a41a2a6c800410b10f201200341086a200129000037000020032002290058370000200241d8006a200241f0016a10d606200241e0016a41086a22032001290300370300200220022903583703e001200220022800693602d8012002200241ec006a2800003600db0120022d006822014103460d03200241d8006a41286a20013a000020024181016a20022802d80136000020024184016a20022800db01360000200241f8006a20032903003703002002418c016a2009420020051b22093702002002419c016a200241b8016a41086a290300370200200241a4016a200241b8016a41106a290300370200200241ac016a200241b8016a41186a290300370200200220022903e0013703702002200541002802fcad4920051b2201360288012002200b41e400200c1bad3703682002200a37036020022006420020071b370358200220022903b80137029401200241d8006a10cb05210602402009a72203450d00200341286c450d00200110390b20024190026a240020060f0b200241fc016a411d360200200241ec006a41023602002002420237025c200241f8f4c300360258200241043602f401200241c8fbc3003602f0012002200241f0016a3602682002200241d8006a3602f801200241d8006a4188f5c3001043000b4198dfc20041fa004194e0c2001065000b4198dfc20041fa0041a4e0c2001065000b41d8e2c20041c80041b0e3c2001065000bd00202037f027e230041d0006b220224002002412036020420022001360200200241086a2001412010e40202400240200228020822010d00200041033a00100c010b200228020c21030240024002400240200241086a41086a28020022044108490d0020044178714108460d0020044110460d00200129000821052001290000210641002104024020012d00100e03030200010b410221040c020b2002420037021c2002410028029cde4a3602182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c200241e4b4c4003602382002200241286a360248200241346a41fc86ca00200241386a103b1a2002280218200228022010e7020240200228021c450d00200228021810390b410321040c020b410121040b20002005370308200020063703000b200020043a00102003450d00200110390b200241d0006a24000bd20f05047f027e037f017e057f230041a0026b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241c8006a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024002400240024020010d0020024198026a2201420037030020024180026a41106a2203420037030020024180026a41086a220442003703002002420037038002200241c8006a41bffec300410410f2012004200241c8006a41086a22052900003703002002200229004837038002200241c8006a4188a6c800410a10f2012001200529000037030020032002290048370300200241386a20024180026a10c2042002290340420020022802381b220642017c22072006540d01200241c8006a41eb97c200411710f201200241306a200241c8006a411010f501200241206a20074200200228023441e40020022802301bad420010c20a200229032850450d022002290320210620024198026a2208420037030020024180026a41106a2209420037030020024180026a41086a220142003703002002420037038002200241c8006a41bffec300410410f2012001200241c8006a41086a22042900003703002002200229004837038002200241c8006a41c0a7c800410b10f201200341086a220a200429000037000020032002290048370000200241106a20024180026a10c20420062002290318420020022802101b7c220b2006540d03200241c8006a41eb97c200411710f201200241086a200241c8006a411010f501200228020c210c2002280208210d2008420037030020094200370300200142003703002002420037038002200241c8006a41bffec300410410f201200120042900003703002002200229004837038002200241c8006a41e0f7c800410f10f201200a200429000037000020032002290048370000200241c8006a20024180026a10fb0420022802482105200229024c21062008420037030020094200370300200142003703002002420037038002200241c8006a41bffec300410410f201200120042900003703002002200229004837038002200241c8006a41f7a6c800410e10f201200a200429000037000020032002290048370000200241c8006a20024180026a10fc040240024020022d00484101460d00200241c0016a4200370300200241b8016a4200370300200241b0016a4200370300200242003703a8010c010b200241c0016a200241e1006a290000370300200241b8016a200241d9006a290000370300200241b0016a200241d1006a290000370300200220022900493703a8010b20024198026a2209420037030020024190026a220a420037030020024180026a41086a220442003703002002420037038002200241c8006a41bffec300410410f2012004200241c8006a41086a22012900003703002002200229004837038002200241c8006a41e8a5c800410f10f201200341086a220e200129000037000020032002290048370000200241c8006a20024180026a10d606200241d8016a41086a220f2001290300370300200220022903483703d801200220022800593602d0012002200241dc006a22102800003600d3010240024020022d005822084103470d0020094200370300200a4200370300200442003703002002420037038002200241c8006a41bffec300410410f201200420012900003703002002200229004837038002200241c8006a41a2a6c800410b10f201200e200129000037000020032002290048370000200241c8006a20024180026a10d606200241f0016a41086a2001290300370300200220022903483703f001200220022800593602e801200220102800003600eb0120022d005822084103460d0620024180026a41086a200241f0016a41086a290300370300200220022903f00137038002200220022802e8013602c801200220022800eb013600cb010c010b2004200f290300370300200220022903d80137038002200220022802d0013602c801200220022800d3013600cb010b200241fc006a2006420020051b22063702002002418c016a200241a8016a41086a29030037020020024194016a200241b8016a2903003702002002419c016a200241c0016a290300370200200241e8006a20024180026a41086a2903003703002002200541002802fcad4920051b22013602782002200c41e400200d1bad3703582002200b37035020022007370348200220022903a801370284012002200229038002370360200241c8006a41286a20083a0000200241f1006a20022802c801360000200241f4006a20022800cb01360000200241c8006a10cb05210702402006a72203450d00200341286c450d00200110390b200241a0026a240020070f0b2002418c026a411d360200200241dc006a41023602002002420237024c200241f8f4c3003602482002410436028402200241e0fbc30036028002200220024180026a3602582002200241c8006a36028802200241c8006a4188f5c3001043000b41d8e1c20041ef0041c8e2c2001065000b4198dfc20041fa004194e0c2001065000b4198dfc20041fa0041a4e0c2001065000b41d8e2c20041c80041a0e3c2001065000bb118030a7f017e047f230041c0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241a8026a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020014108490d00200241003602a80220014108460d00200241013602a8022002200041f4ddca0020011b22032d00083a00ac0220014109460d00200241023602a802200220032d00093a00ad022001410a460d00200241033602a802200220032d000a3a00ae022001410b460d00200241043602a802200220032d000b3a00af022001410c460d00200241b0026a20032d000c3a0000200241053602a8022001410d460d00200241b1026a20032d000d3a0000200241063602a8022001410e460d00200241b2026a20032d000e3a0000200241073602a8022001410f460d00200241b3026a20032d000f3a0000200241083602a80220014110460d00200241b4026a20032d00103a0000200241093602a80220014111460d00200241b5026a20032d00113a00002002410a3602a80220014112460d00200241b6026a20032d00123a00002002410b3602a80220014113460d00200241b7026a20032d00133a00002002410c3602a80220014114460d00200241b8026a20032d00143a00002002410d3602a80220014115460d00200241b9026a20032d00153a00002002410e3602a80220014116460d00200241ba026a20032d00163a00002002410f3602a80220014117460d00200241bb026a20032d00173a0000200241103602a80220014118460d00200241bc026a20032d00183a0000200241113602a80220014119460d00200241bd026a20032d00193a0000200241123602a8022001411a460d00200241be026a20032d001a3a0000200241133602a8022001411b460d00200241bf026a20032d001b3a0000200241143602a8022001411c460d00200241c0026a20032d001c3a0000200241153602a8022001411d460d00200241c1026a20032d001d3a0000200241163602a8022001411e460d00200241c2026a20032d001e3a0000200241173602a8022001411f460d00200241c3026a20032d001f3a0000200241183602a80220014120460d00200241c4026a20032d00203a0000200241193602a80220014121460d00200241c5026a20032d00213a00002002411a3602a80220014122460d00200241c6026a20032d00223a00002002411b3602a80220014123460d00200241c7026a20032d00233a00002002411c3602a80220014124460d00200241c8026a20032d00243a00002002411d3602a80220014125460d00200241c9026a20032d00253a00002002411e3602a80220014126460d00200241ca026a20032d00263a00002002411f3602a80220014127460d00200241cb026a20032d00273a0000200241a8016a41026a2203200241b5026a2d00003a000020024180026a41026a2200200241bc026a2d00003a0000200220022f01ac023b0128200220022d00ae023a002a2002200241b3026a2f00003b01a8012002200241ba026a2f01003b018002200241b6026a2801002104200241bd026a2800002105200241c4026a2802002106200241203602a802200241a8026a41206a280200210720022800af022108200241b0036a41026a2209200241c3026a2d00003a00002002200241c1026a2f00003b01b00320014128470d00200241246a41026a220120032d00003a0000200241206a41026a220320002d00003a00002002411c6a41026a220020092d00003a0000200220022d002a3a00aa02200220022f01283b01a802200220022f01a8013b0124200220022f0180023b0120200220022f01b0033b011c200241186a41026a20022d00aa023a0000200220022f01a8023b0118200241146a41026a20012d00003a0000200220022f01243b0114200241106a41026a20032d00003a0000200220022f01203b01102002410c6a41026a20002d00003a0000200220022f011c3b010c200241c0026a22014200370300200241b8026a22034200370300200241a8026a41086a22004200370300200242003703a802200241286a418cf9c800410710f2012000200241286a41086a2209290000370300200220022900283703a802200241286a4184b4c200410c10f20120012009290000370300200320022900283703002002200241a8026a412010f5012002280204210a2002280200210b200142003703002003420037030020004200370300200242003703a802200241286a418cf9c800410710f20120002009290000370300200220022900283703a802200241286a41e9a4c200410a10f2012001200929000037030020032002290028370300200241286a200241a8026a10c004200229022c4200200228022822011b220ca721092001410028029cde4a20011b220021010240200c422088a74105742203450d00200021010340200141206a2101200341606a22030d000b0b200220093602b403200220003602b0032002200120006b410575220d3602b803200241a8026a200241b0036a10cc040240024002400240024020022802a8024101460d0020024180026a41206a2203200241a8026a41286a28020036020020024180026a41186a2200200241a8026a41206a29030037030020024180026a41106a2209200241a8026a41186a29030037030020024180026a41086a220e200241a8026a41106a220f2903003703002002200241a8026a41086a29030037038002200241d4026a2802002101200241a8016a200241d8026a41d80010c30a1a2001450d00200241286a41206a22102003280200360200200241286a41186a2000290300370300200241286a41106a2009290300370300200241286a41086a200e2903003703002002200229038002370328200241286a41286a200241a8016a41d80010c30a1a200241cc006a2001360200200241b1026a200241146a41026a2d00003a0000200f200241106a41026a2d00003a00002002200241186a41026a2d00003a00aa02200220022f01183b01a802200220083600ab02200220022f01143b00af02200220043601b202200220022f01103b01b602200220053600b902200241bf026a2002410c6a41026a2d00003a0000200220022f010c3b00bd02200220073602c402200220063602c002200241a8016a200241286a41e2c289ab06200241a8026a10d10620022902ac01210c20022802a801210520102802002200450d020240200241d4006a2802000d00200041016a21060c020b200228024c220341046a21012003200041016a22066a21092003280200417f7341808182847871210003400240024020000d000340200120094f0d05200341c07e6a210320012802002100200141046a220821012000418081828478712200418081828478460d000b2000418081828478732200417f6a2000712104200821010c010b2000417f6a20007121040b2000682108200421002003410020084103766b41306c6a220841746a280200450d00200841706a2802001039200421000c000b0b410021000c020b200228024c2006ad42307ea76b10390b0240200241dc006a280200450d00200228025810390b410021002005450d00200241b0026a200c3703002002200d3602b802200220053602ac022002200a4100200b1b3602a802200241286a200241a8026a10d206200ca721090240200c422088a72201450d002001410c6c21032005210103400240200141046a280200450d00200128020010390b2001410c6a2101200341746a22030d000b0b02402009450d002009410c6c450d00200510390b20022802282201450d00200241306a2802002103200228022c2109200121000c010b0b0240410110382201450d00200242013702ac02200220013602a8020240024020000d00200141003a0000410121030c010b200141013a0000200241013602b00220002003200241a8026a10d60120022802b002210320022802a80221012009450d00200010390b200241c0036a24002003ad4220862001ad840f0b1030000b200241346a411d360200200241bc026a4102360200200242023702ac02200241f8f4c3003602a8022002410436022c200241f0fac3003602282002200241286a3602b8022002200241a8026a360230200241a8026a4188f5c3001043000bd317020a7f017e230041e00e6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241a0016a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b41002104410020033602a8fe4a20024280808080802037020c2002200136021c2002200041f4ddca0020011b3602182002200241186a36020820024188066a200241086a1095040240024002400240024020024194066a2802002205450d002002418c076a280200210620024188076a280200210020024184076a28020021072002419c066a280200210820024198066a28020021092002200241086a10bb01024020022802000d002002280208220128020422032002280204220a490d00200a417f4c0d0202400240200a0d004101210b0c010b200a1038220b450d04200b4100200a10c50a1a200128020421030b2003200a4f0d04200b10390b02402008450d00200841246c21012005210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402009450d00200941246c450d00200510390b02402006450d00200641246c21012007210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2000450d00200041246c450d00200710390b0c030b1034000b1030000b200b20012802002204200a10c30a1a20012003200a6b36020420012004200a6a360200200241f8056a41086a20024188066a41086a28020036020020022002290388063703f80520024190056a200241a0066a41e40010c30a1a20024190046a20024190076a41800110c30a1a200521040b20024180046a41086a2203200241f8056a41086a280200360200200220022903f8053703800420024198036a20024190056a41e40010c30a1a20024198026a20024190046a41800110c30a1a02402004450d0020024188026a41086a2003280200360200200220022903800437038802200241a0016a20024198036a41e40010c30a1a200241206a20024198026a41800110c30a1a0240024020022802082802040d0020024190056a41086a20024188026a41086a28020036020020022002290388023703900520024198026a200241a0016a41e40010c30a1a20024188066a200241206a41800110c30a1a0c010b02402008450d00200841246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402009450d00200941246c450d00200410390b02402006450d00200641246c21012007210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402000450d00200041246c450d00200710390b41002104200a450d00200b10390b2004450d0020024198036a41086a20024190056a41086a280200360200200220022903900537039803200241206a20024198026a41e40010c30a1a20024190046a20024188066a41800110c30a1a2002200a360294052002200b3602900520024188066a20024190056a10cc0602400240200228028c0622050d00410021050c010b20024198026a41086a20024198066a28020036020020022002290390063703980220022802880621030b0240200a450d00200b10390b024002402005450d00200241f8056a41086a20024198026a41086a2201280200220a3602002002200229039802220c3703f805200241bc076a200a360200200241b4076a200c370200200241c0076a200229039803370300200241c8076a20024198036a41086a280200360200200241d8076a200241206a41e40010c30a1a200241c8086a20024190046a41800110c30a1a200241c4086a2006360200200241c0086a2000360200200241bc086a2007360200200241d4076a2008360200200241d0076a2009360200200241cc076a2004360200200241b0076a2005360200200241ac076a2003360200200241a8076a4102360200200241013602a007200242023703f006200220024188066a3602980220024190056a20024198026a10d205200120024190056a41086a28020036020020022002290390053703980220024198026a10cd062103024020022903f0064202510d0020022d00880641ff01714102470d00200228029006450d00200228028c0610390b200241a0076a10ce0641002802a8fe4a2101024020030d0020014103490d0241002802a4fe4a210341002802a0fe4a210141002802acfe4a2104200241a4066a41f4ddca0036020020024198066a4201370300200241bc066a41f68ac500ad4280808080c00c84370200200241b0066a41dd8ac500ad4280808080900384370300200241a8066a420037030020024190066a410d360200200241c08ac5003602940620024281808080b0143702c406200241003602b806200241d08ac50036028c062002410336028806200141f4ddca00200441024622041b20024188066a200341b0a7c00020041b2802101103000c020b2001450d012002412636029c022002200241a0016a3602980241002802a4fe4a210341002802a0fe4a210141002802acfe4a210420024198066a4201370300200241bc066a41f68ac500ad4280808080c00c84370200200241b0066a41dd8ac500ad4280808080900384370300200241a8066a420137030020024190066a410d360200200241a4066a20024198026a360200200241c88ac5003602940620024281808080f0143702c406200241003602b806200241d08ac50036028c062002410136028806200141f4ddca00200441024622041b20024188066a200341b0a7c00020041b2802101103000c010b02402008450d00200841246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b02402009450d00200941246c450d00200410390b02402006450d00200641246c21012007210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b2000450d00200041246c450d00200710390b200541004710cd05210c200241e00e6a2400200c0f0b2002412c6a411d360200200241a4046a41023602002002420237029404200241f8f4c3003602900420024104360224200241b8fac3003602202002200241206a3602a0042002200241a0016a36022820024190046a4188f5c3001043000be11c07097f017e0c7f017e017f017e017f23004180016b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241286a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a0240024002400240024002400240024020010d00200241c0006a22014200370300200241386a22034200370300200241286a41086a2204420037030020024200370328200241f0006a4192d1c800410b10f2012004200241f0006a41086a220529000037030020022002290070370328200241f0006a41c0d3c800411310f2012001200529000037030020032002290070370300200241106a200241286a412010f501200228021421062002280210210720014200370300200342003703002004420037030020024200370328200241f0006a41f2e5c300410f10f2012004200529000037030020022002290070370328200241f0006a41f4e8c300411510f2012001200529000037030020032002290070370300200241086a200241286a412010f501200228020c21082002280208210920014200370300200342003703002004420037030020024200370328200241f0006a4190ffc300411210f2012004200529000037030020022002290070370328200241f0006a41e4a5c800410410f2012001200529000037030020032002290070370300200241f0006a200241286a10db06024002402002280270220a0d002002420037021c410021042002410028029cde4a220a360218410021010c010b2002290274210b2002200a3602182002200b37021c200b422088a72101200ba721040b200241c0006a4200370300200241386a4200370300200241286a41086a2205420037030020024200370328200241f0006a4190ffc300411210f2012005200241f0006a41086a220c29000037030020022002290070370328200241f0006a4192a6c800410810f201200341086a200c29000037000020032002290070370000200241f0006a200241286a10db0620022802702203410028029cde4a20031b21050240200420016b2002290274420020031b220b422088a7410574220c41057522034f0d00200241186a2001200310f502200228022021012002280218210a0b2006410020071b210d2008410020091b2104200a20014105746a2005200c10c30a1a2002200120036a220e3602200240200b42ffffff3f83500d00200510390b02402004200d4f0d000340200241286a200410e805200441016a2104024020022802282207450d002002280254210120022802502105200228024c2108200228024421092002280240210f2002280238210c20022802342106200228022c21100240200228021c200e6b200228023c22034f0d00200241186a200e200310f5022002280218210a2002280220210e0b200a200e4105746a2006200341057410c30a1a2002200e20036a220e3602200240201041ffffff3f71450d00200710390b0240200c41ffffff3f71450d00200610390b0240200941ffffff3f71450d00200f10390b02402001450d002001410c6c21012008210303400240200341046a28020041ffffffff0371450d00200328020010390b2003410c6a2103200141746a22010d000b0b2005450d002005410c6c450d00200810390b2004200d470d000b0b0240200e41144b0d00200e41014d0d05200e410574200a6a41406a21034101210103402003200141016a220110ac06200341606a2103200e2001470d000c050b0b200e410176220341ffffff3f712003470d0620034105742211417f4c0d06201110382212450d0720024200370274200241002802ccdd4a360270200a41606a2113200a41a07f6a211441002103200e211503400240024020152216417f6a22150d0041002115410121050c010b024002400240024002400240200a20154105746a20164105742207200a6a41406a412010c60a4100480d002016417e6a2106201420076a210141002115410021040340024020062004470d00201621050c080b200441016a2104200141206a2001412010c60a2105200141606a21012005417f4a0d000b200441016a21052004417f7320166a21150c010b201420076a210102400340024020154101470d00410021150c020b2015417f6a2115200141206a2001412010c60a2104200141606a210120044100480d000b0b20162015490d012016200e4b0d02201620156b22054101762206450d00201320076a2101200a20154105746a21040340200241286a41186a2207200441186a2208290000370300200241286a41106a2209200441106a220c290000370300200241286a41086a2210200441086a220d29000037030020022004290000370328200141086a220f290000210b200141106a22172900002118200141186a2219290000211a200420012900003700002008201a370000200c2018370000200d200b3700002019200729030037000020172009290300370000200f201029030037000020012002290328370000200141606a2101200441206a21042006417f6a22060d000b0b2015450d04200541094b0d042016200e4b0d02201620156b21052015417f6a2103201320154105746a2101034020162003490d082001200541016a220510ac062003417f6a220420034f0d04200141606a2101200421032005410a490d000c040b0b201520164194acc900105f000b2016200e4194acc9001055000b20162015417f6a2203490d042016200e41a4acc9001055000b200441016a2115200228027821030b024020032002280274470d00200241f0006a200310a002200228027821030b2002280270220120034103746a22042005360204200420153602002002200341016a2203360278024020034102490d0002400340024002400240024020012003417f6a4103746a2204280200450d00200341037420016a220741746a2802002206200428020422054d0d00200341024d0d0620012003417d6a22104103746a2802042204200520066a4d0d01200341034d0d06200741646a280200200420066a4b0d060c010b20034103490d012004280204210520012003417d6a22104103746a28020421040b20042005490d010b2003417e6a21100b0240024002400240024002402003201041016a22174d0d00200320104d0d012001201041037422196a2203280204221620032802006a220520012017410374221b6a2203280200220f490d022005200e4b0d03200a200f4105746a22042003280204220d41057422016a2103200541057421072005200f6b2208200d6b2206200d490d0420122004200110c30a220620016a210502400240200d4101480d002008200d4a0d010b20042103200621010c060b200a20076a210820062101034020042003200120032001412010c60a41004822071b2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002001200141206a20071b2101200441206a21040240200341206a200320071b22032008490d00200421030c070b20012005490d000b200421030c050b2017200341b4acc900103c000b2010200341c4acc900103c000b200f200541d4acc900105f000b2005200e41d4acc9001055000b201220032006410574220110c30a220820016a21050240200d41014e0d00200821010c010b0240200641014e0d00200821010c010b201320076a21060340200620032005200541606a2209200341606a220c412010c60a41004822071b41606a2201290000370000200641186a200141186a290000370000200641106a200141106a290000370000200641086a200141086a2900003700002005200920071b210502402004200c200320071b2203490d00200821010c020b200641606a210620082101200520084b0d000b0b20032001200520016b41607110c30a1a02402002280278220320104d0d002002280270220120196a22042016200d6a3602042004200f360200200320174d0d022001201b6a2204200441086a200320106b41037441706a10c40a1a20022003417f6a2203360278200341014d0d030c010b0b2010200341e4acc900103c000b201720031045000b2015450d030c000b0b200241fc006a411d3602002002413c6a41023602002002420237022c200241f8f4c30036022820024104360274200241f4fbc3003602702002200241f0006a3602382002200241286a360278200241286a4188f5c3001043000b2003201641a4acc900105f000b0240200228027441ffffffff0171450d00200110390b2011450d00201210390b200e4102490d00200e417f6a2105200a41206a2103410121040340024020032004410574200a6a220141606a412010c60a450d00200341086a290000210b200341106a2900002118200341186a290000211a20012003290000370000200141186a201a370000200141106a2018370000200141086a200b370000200441016a21040b200341206a21032005417f6a22050d000b200220043602200c010b200228022021040b20044105744104722203417f4c0d0020022802182107200310382201450d01200241003602302002200336022c20022001360228200241286a200410d2010240024020040d0020022802302101200228022821060c010b20044105742105200228023021012007210303400240200228022c20016b411f4b0d00200241286a20014120108101200228023021010b2002280228220620016a22042003290000370000200441086a200341086a290000370000200441106a200341106a290000370000200441186a200341186a2900003700002002200141206a2201360230200341206a2103200541606a22050d000b0b0240200228021c41ffffff3f71450d00200710390b20024180016a24002001ad4220862006ad840f0b1034000b1030000bb90201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010e40202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10bb03024002402002280248450d0020002002290348370200200041086a200241c8006a41086a2802003602000c010b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602000b2003450d00200110390b200241e0006a24000bad1503037f017e057f230041c0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a20024280808080802037020c200220024190036a36020802400240024002402001450d0020022001417f6a2203360294032002200041f4ddca0020011b220141016a36029003024002400240024020012d00000e020100040b2002200241086a10bb0120022802000d03200228029403220020022802042203490d032003417f4c0d054101210102402003450d00200310382201450d0720014100200310c50a1a20022802940321000b20002003490d0220012002280290032204200310c30a1a2002200020036b2200360294032002200420036a3602900320000d012003ad220542208620058421050c040b20030d02410021010c030b2003450d010b200110390b2002419c036a411d3602002002411c6a41023602002002420237020c200241f8f4c300360208200241043602940320024188fcc30036029003200220024190036a3602182002200241086a36029803200241086a4188f5c3001043000b410021044100210002402001450d002005422088a72203417f4c0d014101210002402003450d00200310382200450d030b20002001200310c30a1a0b200241106a220620033602002002200336020c20022000360208200241f0016a41e7e485f306200241086a10dd0602402001450d002005422088a72203417f4c0d014101210402402003450d00200310382204450d030b20042001200310c30a1a0b200620033602002002200336020c2002200436020820024190026a41e2c289ab06200241086a10de06410021044100210002402001450d002005422088a72203417f4c0d014101210002402003450d00200310382200450d030b20002001200310c30a1a0b200241106a220620033602002002200336020c20022000360208200241b0026a41e9dabdf306200241086a10de0602402001450d002005422088a72203417f4c0d014101210402402003450d00200310382204450d030b20042001200310c30a1a0b200620033602002002200336020c20022004360208200241d0026a41f0c2c98b06200241086a10de06410021044100210002402001450d002005422088a72203417f4c0d014101210002402003450d00200310382200450d030b20002001200310c30a1a0b200241106a220620033602002002200336020c20022000360208200241f0026a41e1e69df306200241086a10de0602402001450d002005422088a72203417f4c0d014101210402402003450d00200310382204450d030b20042001200310c30a1a0b200620033602002002200336020c2002200436020820024190036a41e1ea91cb06200241086a10de06410021074100210002402001450d002005422088a72203417f4c0d014101210002402003450d00200310382200450d030b20002001200310c30a1a200121070b200241b0036a41086a2003360200200220033602b403200220003602b003200241c8016a220041e2ca95b306200241b0036a10df06200241086a41086a2206200241f0016a41086a290300370300200241086a41106a2208200241f0016a41106a290300370300200241086a41186a2209200241f0016a41186a290300370300200241306a20024190026a41086a290300370300200241386a20024190026a41106a290300370300200241c0006a20024190026a41186a290300370300200241d0006a200241b0026a41086a290300370300200241d8006a200241b0026a41106a290300370300200241e0006a200241b0026a41186a290300370300200220022903f0013703082002200229039002370328200220022903b00237034820024180016a200241d0026a41186a290300370300200241f8006a200241d0026a41106a290300370300200241f0006a200241d0026a41086a29030037030020024190016a200241f0026a41086a29030037030020024198016a200241f0026a41106a290300370300200241a0016a200241f0026a41186a290300370300200241b0016a20024190036a41086a290300370300200241b8016a20024190036a41106a290300370300200241c0016a20024190036a41186a290300370300200220022903d002370368200220022903f0023703880120022002290390033703a801200242013703b003200241003602b803200241b0036a4100412010810120022802b403210320022802b003220120022802b803220a6a22042002290308370000200441086a2006290300370000200441106a2008290300370000200441186a20092903003700002002200a41206a22083602b803200241086a41206a21040240200320086b411f4b0d00200241b0036a2008412010810120022802b403210320022802b003210120022802b80321080b200241c8006a2106200120086a22092004290000370000200941186a200441186a290000370000200941106a200441106a290000370000200941086a200441086a2900003700002002200841206a22083602b8030240200320086b411f4b0d00200241b0036a2008412010810120022802b403210320022802b003210120022802b80321080b200241e8006a2104200120086a22092006290000370000200941186a200641186a290000370000200941106a200641106a290000370000200941086a200641086a2900003700002002200841206a22083602b8030240200320086b411f4b0d00200241b0036a2008412010810120022802b403210320022802b003210120022802b80321080b20024188016a2106200120086a22092004290000370000200941186a200441186a290000370000200941106a200441106a290000370000200941086a200441086a2900003700002002200841206a22083602b8030240200320086b411f4b0d00200241b0036a2008412010810120022802b403210320022802b003210120022802b80321080b200241a8016a2104200120086a22092006290000370000200941186a200641186a290000370000200941106a200641106a290000370000200941086a200641086a2900003700002002200841206a22063602b8030240200320066b411f4b0d00200241b0036a2006412010810120022802b403210320022802b003210120022802b80321060b200120066a22082004290000370000200841186a200441186a290000370000200841106a200441106a290000370000200841086a200441086a2900003700002002200641206a22043602b8030240200320046b41204b0d00200241b0036a2004412110810120022802b003210120022802b80321040b200120046a22032000290000370000200341206a200041206a2d00003a0000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002002200441216a3602b80302402007450d002005a7450d00200710390b200241086a200241b0036a109a022002350210210520022802082103024020022802b403450d00200110390b200241c0036a240020054220862003ad840f0b1034000b1030000b9b0201057f230041c0006b2203240020032001360204200341086a200210a60a200341046a200341086a41106a200341086a41086a200328020822044101461b29030010032101200341206a41186a22054200370300200341206a41106a22064200370300200341206a41086a22074200370300200342003703202007200141086a2900003703002006200141106a2900003703002005200141186a2900003703002003200129000037032020011039200041186a2005290300370000200041106a2006290300370000200041086a20072903003700002000200329032037000002402004450d002003280210450d00200328020c10390b024020022802002201450d00200241046a280200450d00200110390b200341c0006a24000b9b0201057f230041c0006b2203240020032001360204200341086a200210a60a200341046a200341086a41106a200341086a41086a200328020822044101461b29030010072101200341206a41186a22054200370300200341206a41106a22064200370300200341206a41086a22074200370300200342003703202007200141086a2900003703002006200141106a2900003703002005200141186a2900003703002003200129000037032020011039200041186a2005290300370000200041106a2006290300370000200041086a20072903003700002000200329032037000002402004450d002003280210450d00200328020c10390b024020022802002201450d00200241046a280200450d00200110390b200341c0006a24000bc40201067f230041d0006b220324002003200136020c200341106a200210a60a2003410c6a200341106a41106a200341106a41086a200328021022044101461b29030010022101200341286a41206a220541003a0000200341286a41186a22064200370300200341286a41106a22074200370300200341286a41086a22084200370300200342003703282008200141086a2900003703002007200141106a2900003703002006200141186a2900003703002005200141206a2d00003a00002003200129000037032820011039200041206a20052d00003a0000200041186a2006290300370000200041106a2007290300370000200041086a20082903003700002000200329032837000002402004450d002003280218450d00200328021410390b024020022802002201450d00200241046a280200450d00200110390b200341d0006a24000b871101047f230041f0036b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca00413420024180026a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a200242808080808020370284022002200136021c2002200041f4ddca0020011b3602182002200241186a36028002200220024180026a10bb01024002400240024020022802000d00200228021c220120022802042203490d002003417f4c0d020240024020030d00410121000c010b200310382200450d0420004100200310c50a1a200228021c21010b024020012003490d00200020022802182204200310c30a21052002200120036b220136021c2002200420036a3602182001450d022003450d010b200010390b200241246a411d36020020024194026a41023602002002420237028402200241f8f4c300360280022002410436021c200241a8fcc3003602182002200241186a36029002200220024180026a36022020024180026a4188f5c3001043000b200220033602ec03200220053602e80320024180026a200241e8036a10c9040240024020022d0080024101460d00200241186a20024180026a41017241e10110c30a1a20024180026a200241186a41e10110c30a1a2002420037020c200241002802ccdd4a360208412010382201450d0320012002290018370000200141186a200241186a41186a290000370000200141106a200241186a41106a290000370000200141086a200241186a41086a290000370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e7e485f30636020c200042a08080808004370204200020013602002002200228021041016a360210412010382201450d03200120022903a002370000200141186a200241b8026a290300370000200141106a200241b0026a290300370000200141086a200241a8026a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e2c289ab0636020c200042a08080808004370204200020013602002002200228021041016a360210412010382201450d03200120022903c002370000200141186a200241d8026a290300370000200141106a200241d0026a290300370000200141086a200241c8026a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e9dabdf30636020c200042a08080808004370204200020013602002002200228021041016a360210412010382201450d03200120022903e002370000200141186a200241f8026a290300370000200141106a200241f0026a290300370000200141086a200241e8026a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041f0c2c98b0636020c200042a08080808004370204200020013602002002200228021041016a360210412010382201450d032001200229038003370000200141186a20024198036a290300370000200141106a20024190036a290300370000200141086a20024188036a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e1e69df30636020c200042a08080808004370204200020013602002002200228021041016a360210412010382201450d03200120022903a003370000200141186a200241b8036a290300370000200141106a200241b0036a290300370000200141086a200241a8036a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e1ea91cb0636020c200042a08080808004370204200020013602002002200228021041016a360210412110382201450d03200120022903c003370000200141206a200241e0036a2d00003a0000200141186a200241d8036a290300370000200141106a200241d0036a290300370000200141086a200241c8036a290300370000024020022802102200200228020c470d00200241086a200010a404200228021021000b200228020820004104746a220041e2ca95b30636020c200042a18080809004370204200020013602002002200228021041016a3602100c010b200241003602080b02402003450d00200510390b0240024020022802080d00410121030c010b200241106a2802004104744105722203417f4c0d010b200310382200450d012002410036028802200220033602840220022000360280020240024020022802080d00200041003a0000410121050c010b200041013a000020024101360288022002280208210320024180026a200241086a41086a280200220110d201024020010d00200228028802210520022802800221000c010b200320014104746a210403402003280200200341086a28020020024180026a10d601024020022802840220022802880222016b41034b0d0020024180026a2001410410810120022802880221010b200228028002220020016a2003410c6a2800003600002002200141046a220536028802200341106a22032004470d000b0b024020022802082203450d000240200241106a2802002201450d002001410474210103400240200341046a280200450d00200328020010390b200341106a2103200141706a22010d000b0b200228020c41ffffffff0071450d00200228020810390b200241f0036a24002005ad4220862000ad840f0b1034000b1030000b9d0703057f027e037f230041c0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241106a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241106a41186a22034200370300200241106a41106a22014200370300200241106a41086a2204420037030020024200370310200241306a4190e1c800410510f2012004200241306a41086a220529000037030020022002290030370310200241306a41e0f6c800410b10f2012003200529000037030020012002290030370300200241306a200241106a10e206200228023021062002290234210720034200370300200142003703002004420037030020024200370310200241306a4190e1c800410510f2012004200529000037030020022002290030370310200241306a4198f7c800410e10f20120032005290000370300200120022900303703002002200241106a10c20420022903082108200228020021092002420137031020024100360218200241106a2007422088a7410020061b220310d2012007a7210a2006410028029cde4a20061b210b0240024020030d00200228021821040c010b200341216c210520022802182104200b210303400240200228021420046b41204b0d00200241106a20044121108101200228021821040b200228021020046a22012003290000370000200141086a200341086a290000370000200141106a200341106a290000370000200141186a200341186a290000370000200141206a200341206a2d00003a00002002200441216a2204360218200341216a21032005415f6a22050d000b0b2008420020091b2107200a410020061b21030240200228021420046b41074b0d00200241106a20044108108101200228021821040b2002280210220120046a200737000002402003450d00200341216c450d00200b10390b200241c0006a2400200441086aad4220862001ad840f0b2002413c6a411d360200200241246a410236020020024202370214200241f8f4c30036021020024104360234200241c4fcc3003602302002200241306a3602202002200241106a360238200241106a4188f5c3001043000bcc0503047f017e077f23004190016b220224002002412036021420022001360210200241186a2001412010e4020240024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10ad010240024020022802080d00200228020c2205200228022c41216e2201200120054b1bad42217e2206422088a70d032006a72201417f4c0d030240024020010d00410121070c010b200110382207450d050b4100210820024100360238200220073602302002200141216e360234024002402005450d00200241e8006a41017221010340200241e8006a200241286a10fa0520022d00684101460d02200241c0006a41206a2209200141206a2d00003a0000200241c0006a41186a220a200141186a290000370300200241c0006a41106a220b200141106a290000370300200241c0006a41086a220c200141086a29000037030020022001290000370340024020082002280234470d00200241306a2008410110990820022802302107200228023821080b2007200841216c6a220d2002290340370000200d41206a20092d00003a0000200d41186a200a290300370000200d41106a200b290300370000200d41086a200c2903003700002002200841016a22083602382005417f6a22050d000b0b2007450d0120002002290234370204200020073602000c020b20022802342201450d00200141216c450d00200710390b200242003702442002410028029cde4a3602402002410c3602342002200241106a3602302002200241c0006a36028c01200241fc006a41013602002002420137026c200241e4b4c4003602682002200241306a3602782002418c016a41fc86ca00200241e8006a103b1a2002280240200228024810e70202402002280244450d00200228024010390b200041003602000b2004450d00200310390b20024190016a24000f0b1034000b1030000bc7340a027f017e027f037e017f017e0a7f017e097f037e23004180076b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241f8046a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02400240024002400240024002400240024002400240024020014108490d0020014108470d00200041f4ddca0020011b290000210420024190056a2201420037030020024188056a22034200370300200241f8046a41086a22004200370300200242003703f804200241a8016a418bb4c400411310f2012000200241a8016a41086a2205290000370300200220022900a8013703f804200241a8016a419eb4c400410e10f20120012005290000370300200320022900a8013703002002200241f8046a10c2042002411c6a4200370200200241002802fcad49220636021820022002290308420020022802001b22073703282002200742018620077b7d2208370310200241a8016a200442017c220942018620097b7d20097a427f857c2209109a050240024020022802a8010d0020022d00b001450d010b200241f8046a200241a8016a41880110c30a1a4105210a200241053a008003024041002802a8fe4a4104490d00200241f8036a410c6a4127360200200241133602fc032002200241f8046a36028004200220024180036a3602f80341002802a4fe4a210141002802a0fe4a210341002802acfe4a210020024190066a4202370300200241b4066a41a996c300ad4280808080f00e84370200200241a8066a419496c300ad4280808080d00284370300200241a0066a420237030020024188066a410c3602002002419c066a200241f8036a360200200241f895c30036028c062002428180808090283702bc06200241003602b0062002418896c300360284062002410436028006200341f4ddca00200041024622001b20024180066a200141b0a7c00020001b28021011030020022d008003210a0b20022802f804450d0920022802fc044102470d0920024184056a280200450d0920024180056a28020010390c090b200241306a200241b8016a41f80010c30a1a410810382201450d0b2001200937030020024281808080103702b402200220013602b002024020084201520d0020012903004200520d00410021034201210b0c060b4100210c200141014100410110c705200241c0026a2008104c200242003702d402200220063602d00220022802c002210d20022802c402210e024020022802c80222010d000c020b200d20014103746a210f2002418c056a2110200241106a41086a211120024185056a211220024187056a2113410021144100210c200d2115034020022802b002220541786a21032015220141086a21152001290300211620022802b80221004100210102400240024002400240024002400240024002400240024002400340024020002001470d00200241003602b802200241003602fc04200220003602f80420022005360280052002200520004103746a360284052002200241b0026a36028805200241e0026a200241f8046a10c4030c020b200141016a2101200341086a22032903002016580d000b20002001417f6a2217490d01200241003602b802200220033602840520022005360280052002200020016b41016a3602fc04200220173602f8042002200241b0026a36028805200241e0026a200241f8046a10c4030b20022802e402211820022802e00221190240024020022802e802221a4101470d004105211b20192903002016510d010c030b201a0d02200241f8046a201120161099052012330000210920133100002108200228028805210320022802fc04211b20022802f8042100200235008105211620022d0080052101200241a8016a201041f40010c30a1a201620092008421086844220868421090240024020004101470d0020094208862001ad42ff018384210b0c010b0240200141ff01714102460d0020024180066a200241a8016a41f40010c30a1a0240201420022802d402470d00200241d0026a2014410110de0420022802d002210620022802d80221140b200620144107746a220020093e000120002003360008200020013a0000200041076a20094230883c00004105211b200041056a20094220883d00002000410c6a20024180066a41f40010c30a1a200220022802d80241016a22143602d8020c020b4202210b4101211b0b2003211c0b0240201841ffffffff0171450d00201910390b201c211d0c020b2001417f6a2000418898c1001055000b417f201a4101201a41016a41024b1b677641016a2201201a4d0d01200141ffffffff00712001470d1520014104742201417f4c0d15200110382217450d16200220173602f8024100211e200241003602f0022002200141047622013602fc02201a41037441786a2105410021032019210003402000290300210902402001417f6a220a2003201e6b71200a470d002001417f2005410375220a41016a221d201d200a491b6a220a2001490d044100417f200a417f6a6776200a4102491b221d41016a220a201d490d04200a20014d0d002001211d0240024002400240200a20016b220a450d002001200a6a220a2001490d1b200a410474211d200a41ffffffff0071200a46410374210a0240024020010d00200241003602f8040c010b2002410836028005200220173602f804200220014104743602fc040b200241a8016a201d200a200241f8046a104920022802b001210a20022802a8014101460d01200220022802ac0122173602f8022002200a410476221d3602fc020b201e20034d0d0220032001201e6b220a4f0d01201720014104746a2017200341047410c30a1a200320016a21030c020b200a450d190c1a0b201e41047421012017201d200a6b221e4104746a201720016a200a41047410c30a1a2002201e3602f0020b201d21010b200041086a210020022802f802221720034104746a220a4100360208200a200937030020022001417f6a220a200341016a7122033602f402200541786a22054178470d000b0240201841ffffffff0171450d00201910390b0240201e2003470d0020022802f002210a0c050b2002200a201e41016a71220a3602f0022017201e4104746a220041086a2105201f211d024003400240200029030022202016520d002003211e201d211f0c070b2005280200211e202042027c2209792108024002402009500d00427d20207d7ba722002008a7460d010b03402009427f423f20087d423f83867c42017c2209792208a721052009427f857ba721002009500d0020002005470d000b0b202042014202201e413f71ad8622097d2009427f7c413f20006b201e4b22181b7c210802400240024002402001417f6a22052003200a6b71450d002017450d00200820172005200a714104746a290300520d002003200a470d012003210a0c020b200241f8046a201120081099052012330000210820133100002121200228028805211d20022802fc04211b20022802f8042100200235008105212220022d008005211920024180066a201041f40010c30a1a2022200820214210868442208684212120004101460d020240201941ff01714102460d0020024180036a20024180066a41f40010c30a1a024020022802d802221b20022802d402470d00200241d0026a201b410110de0420022802d802211b0b20022802d0022206201b4107746a220020213e00012000201d360008200020193a0000200041076a20214230883c0000200041056a20214220883d00002000410c6a20024180036a41f40010c30a1a2002201b41016a22143602d8020c020b4202210b4101211b0c040b20022005200a41016a71220a3602f0020b0240024020204201200920181b7c22092016540d00200a21000c010b201e41016a21000240200120052003200a6b716b4101470d00200241f0026a10e50620022802fc02417f6a210520022802f802211720022802f40221030b201720034104746a220120003602082001200937030020022005200341016a713602f40220022802f402210320022802f00221000b20022802fc02210120002003460d0820022001417f6a200041016a71220a3602f00220022802f802221720004104746a220041086a21050c010b0b20214208862019ad42ff018384210b0b024002402003200a490d00200120034f0d0120032001419cafc3001055000b2001200a490d040b0240200141ffffffff0071450d00201710390b201d211f0b0240201b4105470d00201d211c0c080b200e41ffffffff0171450d0c200d10390c0c0b4180eaca00411141e4cdc4001035000b4180eaca00411141f4cdc4001065000b41b0adc300412341d4adc3001035000b201e200a490d01201f211d201e21030b024020012003490d00201d211f0c020b20032001419cafc3001055000b2001200a490d020b200141ffffffff0071450d0020022802f80210390b4100200c41016a201a1b210c2015200f460d030c010b0b41b0adc300412341d4adc3001035000b200241b4016a411d3602002002418c056a4102360200200242023702fc04200241f8f4c3003602f804200241043602ac01200241dcfcc3003602a8012002200241a8016a360288052002200241f8046a3602b001200241f8046a4188f5c3001043000b0240200e41ffffffff0171450d00200d10390b20022802b802450d014104211b0b024020022802d40241ffffff0f71450d0020022802d00210390b4101210320022802b40241ffffffff0171450d01201d21060c020b20022802d802210102400240024002400240200c4102490d002001200c6b211e2001200c490d0102400240201e0d0020022802d402220041ffffff0f712000470d0d20004107742205417f4c0d0d0240024020050d00410821190c010b200510382219450d0f0b4100211e200241003602d80220022802d0022103200220193602d002200220054107763602d4020c010b200c41ffffff0f71200c470d0c200c4107742201417f4c0d0c200110382203450d0d2002201e3602d802200320022802d0022219201e4107746a200c41077410c30a1a20014107762100200c21010b2002200036028403200220033602800320022001360288034102211d024020014102490d00200241a8016a410172210a20024180066a41017221170340200141077420036a41807f6a22052d00002100200241a8016a200541016a41ff0010c30a1a20004102460d04200220003a0080062017200241a8016a41ff0010c30a1a20022001417e6a220136028803200320014107746a22052d00002100200241f8036a200541016a41ff0010c30a1a20004102460d05200220003a00a801200a200241f8036a41ff0010c30a1a200241f8046a20024180066a200241a8016a10b10402402001200228028403470d0020024180036a2001410110de04200228028003210320022802880321010b200320014107746a200241f8046a41800110c30a1a2002200141016a220136028803200141014b0d000b0b02402001450d00200341086a280000211f200341056a3300002109200341076a310000210820032d0000211d2003350001211620024180066a2003410c6a41f40010c30a1a201620092008421086844220868421210b200241f8046a20024180066a41f40010c30a1a024020022802840341ffffff0f71450d00200310390b201d41ff01714102460d04200241a8016a200241f8046a41f40010c30a1a0240201e20022802d402470d00200241d0026a201e410110de0420022802d002211920022802d802211e0b2019201e4107746a220120213e00012001201f3600082001201d3a0000200141076a20214230883c0000200141056a20214220883d00002001410c6a200241a8016a41f40010c30a1a20022802d80241016a21010b20022802d402211720022802d002210620022802b40241ffffffff0171450d0620022802b00210390c060b201e20011046000b41b7bfc200410341bcbfc2001065000b41b7bfc200410341ccbfc2001065000b41c4c0c200411141d8c0c2001065000b201d21060c020b20022802b0021039410021014100211720030d010b200141ffffff3f712001470d0302400240200141057422030d00410121050c010b200310382205450d050b200620014107746a210a41002100200241c0016a4100360200200241bc016a20034105762203360200200220053602b8010240200320014f0d00200241b8016a4100200110f50220022802c00121000b02402006200a460d002001410774210520022802b80120004105746a2101200621030340200241f8046a200310b204200141186a200241f8046a41186a290000370000200141106a200241f8046a41106a290000370000200141086a200241f8046a41086a290000370000200120022900f804370000200041016a2100200141206a210120034180016a2103200541807f6a22050d000b0b0240201741ffffff0f71450d00200610390b20022802bc01211920022802b801211d200241fe046a200241306a41f80010c30a1a410021050c020b200241a8016a410c6a20063602002002200b3702ac012002201b3602a8014103210a200241033a008006024041002802a8fe4a450d00200241f8036a410c6a4128360200200241133602fc032002200241a8016a36028004200220024180066a3602f80341002802a4fe4a210141002802a0fe4a210341002802acfe4a210020024188056a4202370300200241ac056a41a996c300ad4280808080f00e84370200200241a0056a419496c300ad4280808080d0028437030020024198056a420237030020024180056a410c36020020024194056a200241f8036a360200200241f895c3003602840520024281808080e0263702b405200241003602a8052002418896c3003602fc04200241013602f804200341f4ddca00200041024622001b200241f8046a200141b0a7c00020001b28021011030020022802a801211b20022d008006210a0b201b4102470d00200241b0016a280200450d0020022802ac011039410121050c010b410121050b200228021821170240200241206a2802002201450d00200141186c21032017410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010390b200141186a2101200341686a22030d000b0b02402002411c6a2802002201450d00200141186c450d00201710390b024020050d00200241a8016a200241fe046a41f80010c30a1a2002410036028004200242013703f80320022802d8012101200241f8036a4100410410810120022802f803221720022802800422036a20013600002002200341046a220336028004412010382201450d0220022802fc03211e2001200241dc016a290200370000200141086a221b200241e4016a290200370000200141106a2218200241ec016a290200370000200141186a221a200241f4016a290200370000200242203702840620022001360280060240201e20036b411f4b0d00200241f8036a2003412010810120022802f803211720022802800421030b201720036a22172001290000370000201741186a201a290000370000201741106a2018290000370000201741086a201b2900003700002002200341206a360280040240200228028406450d0020022802800610390b200241fc016a200241f8036a10ff0220022903a8012109024020022802fc03220320022802800422016b41074b0d00200241f8036a2001410810810120022802fc03210320022802800421010b20022802f803221720016a20093700002002200141086a22013602800420022802b001211e0240200320016b41034b0d00200241f8036a2001410410810120022802f803211720022802800421010b201720016a201e3600002002200141046a36028004200241b4016a200241f8036a10ff022002280280042217417f4c0d0120022802f80321010240024020170d004101211e0c010b20171038221e450d030b201e2001201710c30a1a20022802fc03450d00200110390b410110382201450d01200242013702fc04200220013602f804024002402005450d0041012103200141013a000020024101360280050240024002400240024002400240200a41ff01710e06000102030405060b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41003a0000200141016a210320022802f80421010c070b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41013a0000200141016a210320022802f80421010c060b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41023a0000200141016a210320022802f80421010c050b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41033a0000200141016a210320022802f80421010c040b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41043a0000200141016a210320022802f80421010c030b41012101024020022802fc044101470d00200241f8046a4101410110810120022802800521010b20022802f80420016a41053a0000200141016a21030b20022802f80421010c010b200141003a00002002410136028005201e2017200241f8046a10d601024020022802fc0420022802800522016b41074b0d00200241f8046a2001410810810120022802800521010b20022802f80420016a20043700002002200141086a220136028005024020022802fc0420016b41074b0d00200241f8046a2001410810810120022802800521010b20022802f80420016a20073700002002200141086a36028005200241f8046a200010d20102402000450d0020004105742103201d210103402001200241f8046a10ff02200141206a2101200341606a22030d000b0b200228028005210320022802f804210102402017450d00201e10390b201941ffffff3f71450d00201d10390b20024180076a24002003ad4220862001ad840f0b1034000b1030000bd70301027f230041106b220224000240024020002802004101470d002002200128021841b0c9c60041032001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41b4c9c600104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b2002200128021841c4c9c60041022001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041086a36020c20022002410c6a41c8c9c600104b1a20022d0008210120022802042203450d00200141ff017121004101210120000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d010b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bd70201067f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a2802002203200028020022046b716b4101470d00200221050240024002402002450d00200220026a22052002490d04200141106a41086a4108360200200120024104743602142001200028020836021020012005410474200541ffffffff0071200546410374200141106a1049200141086a280200210520012802004101460d01200020012802043602082000410c6a200541047622053602000b20052002410174470d04200320044f0d022003200220046b22064f0d012000280208220420024104746a2004200341047410c30a1a200041046a200320026a3602000c020b2005450d021030000b20002802082202200520066b22034104746a200220044104746a200641047410c30a1a200020033602000b200141206a24000f0b1034000b41e4ecc500412b4190edc5001035000bb3600a057f027e017f037e017f017e267f017e027f027e230041b00d6b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241c8046a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a2002428080808080203702bc02200220013602b40c2002200041f4ddca0020011b3602b00c2002200241b00c6a3602b802200241186a200241b8026a10bb01024020022802180d0020022802b40c2200200228021c2201490d00024002400240024002400240024002400240024002400240024002402001417f4c0d000240024020010d00410121030c010b200110382203450d0e20034100200110c50a1a20022802b40c21000b0240024020002001490d00200320022802b00c2204200110c30a21052002200020016b22063602b40c2002200420016a22003602b00c024020064108490d00200029000021072002200041086a3602b00c2002200641786a22043602b40c20044108490d00200029000821082002200641706a3602b40c2002200041106a3602b00c200241c8046a200241b8026a10b30320022802c80422090d020b2001450d100b200310390c0f0b200220022902cc04220a3703c003200aa721040240024020022802b802280204450d0002402001450d00200510390b410021030240200441ffffff3f71450d00200910390b0c010b20022902c403210a0b2003450d0e200220013602d405200220033602d005200241c8046a200241d0056a10e70620022903c8044201510d01200241b00c6a200241c8046a41086a220041f80010c30a1a200241c0036a41066a200241b00c6a41f80010c30a1a200241b8026a200241c0036a41fe0010c30a1a200241206a200241b8026a41066a41f80010c30a1a02402001450d00200310390b200241e0046a22014200370300200241d8046a2203420037030020004200370300200242003703c804200241c0036a418bb4c400411310f2012000200241c0036a41086a2206290000370300200220022900c0033703c804200241c0036a419eb4c400410e10f20120012006290000370300200320022900c003370300200241086a200241c8046a10c2042008427f7c220b2002290310420020022802081b5a0d0241c0004201427f200b798842017c20084201511b79a76b200aa72203490d02200241a4016a4200370200200241002802fcad493602a001200220083703b0012002200842018620087b7d220c3703980120034105742200410575220141ffffff0f712001470d0020014107742206417f4c0d000240024020060d00410821050c010b200610382205450d0e0b200920006a210d41002100200241003602d004200220053602c8042002200641077622063602cc040240200620014f0d00200241c8046a4100200110de0420022802d00421000b0240200d2009460d002003410574210620022802c80420004107746a2101200921030340200341186a2900002108200341106a290000210a200341086a290000210b2003290000210e200141013a0000200141016a200e370000200141096a200b370000200141116a200a370000200141196a200837000020014180016a2101200041016a2100200341206a2103200641606a22060d000b0b0240200441ffffff3f71450d00200910390b20022802cc04210f20022802c8042110200241c8046a20024198016a10dd044101210620022802c8044101460d04200241c0036a41066a200241d0046a41800110c30a1a200241b8026a200241c0036a41860110c30a1a200241b8016a200241b8026a41066a41800110c30a1a200241d0056a200241b8016a41800110c30a1a41880110382201450d0d200241c8046a41076a200241206a41f80010c30a1a200141096a200241c8046a41ff0010c30a1a200141003a00082001200742017c220842018620087b7d20087a427f857c37030020024281808080103702a408200220013602a0080240200c4201520d0020012903004200520d0041800110382203450d0e20024190086a42013703002002200336028c0841002100024020012d000822064102460d00200241c8046a200141096a41ff0010c30a1a200320063a000041012100200341016a200241c8046a41ff0010c30a1a0b20022000360294082001103920022002290091083703f807200220024198086a2800003600ff07200228028c08210320022d00900821010c080b200241b0086a200c104c20022802b808220341016a220141ffffff0f712001470d0020014107742201417f4c0d000240024020010d00410821060c010b200110382206450d0e0b201020004107746a2111200241003602c808200220063602c008200220014107763602c40820022802b008211220022802b4082113201021042003450d06201220034103746a2114200241c5026a211520024183056a2116200241df046a2117200241c0036a41dc006a2118200241c0036a41386a2119200241c0036a41146a211a200241c0036a410172211b200241b8026a41dc006a211c200241b8026a41386a211d200241b8026a41146a211e200241b00c6a41dc006a211f200241b00c6a41386a210d200241b00c6a41146a2120200241b8026a4101722121200241e00b6a41206a2122200241b00c6a410172222341036a21242010210420122125034020022802a008220641f87e6a21032025220141086a21252001290300210b4100210120022802a8082100024002400240024002400340024020002001470d00200241003602a808200241003602cc04200220003602c804200220063602d0042002200620004188016c6a3602d4042002200241a0086a3602d804200241d0086a200241c8046a10c5030c020b200141016a210120034188016a2203290300200b580d000b20002001417f6a2209490d01200241003602a808200220033602d404200220063602d0042002200020016b41016a3602cc04200220093602c8042002200241a0086a3602d804200241d0086a200241c8046a10c5030b0240024020022802d80822030e020300010b20022802d0082201290300200b520d00200241a8096a41086a200141246a290200370300200241a8096a41106a2001412c6a290200370300200241a8096a41186a200141346a29020037030020024180096a41086a200141c8006a29020037030020024180096a41106a200141d0006a29020037030020024180096a41186a200141d8006a29020037030020024180096a41206a200141e0006a2802003602002002200141096a22062800003602c80920022001410c6a2800003600cb0920022001411c6a22032902003703a8092002200141c0006a220029020037038009200141106a2903002108200141186a280200210920012d00082105200241e0086a41186a200141fc006a290200370300200241e0086a41106a200141f4006a290200370300200241e0086a41086a200141ec006a290200370300200241003602d8082002200141e4006a22012902003703e0080240024020054101470d00200220062800003602e00b200220032902003703b00c2002200641036a2800003600e30b2002200341056a2900003700b50c410121000c010b2017200029000037000020162001290000370000201741206a200041206a280000360000201741186a200041186a290000370000201741106a200041106a290000370000201741086a200041086a290000370000201641086a200141086a290000370000201641106a200141106a290000370000201641186a200141186a290000370000200241b8026a41186a200341186a290200370300200241b8026a41106a200341106a290200370300200241b8026a41086a200341086a290200370300200241c8046a410f6a2015410f6a290000370000200241c8046a41086a201541086a2900003703002002200341056a2900003700b50c200220032902003703b00c200220152900003703c804200241c0036a200241c8046a41df0010c30a1a410021000b024020022802c808220320022802c408470d00200241c0086a2003410110de0420022802c80821030b20022802c00820034107746a220120003a0000200120022802e00b3600012001200936021020012008370308200120022903b00c370214200141046a20022800e30b360000200141196a20022900b50c370000200141216a200241c0036a41df0010c30a1a2002200341016a3602c8080c030b0240417f20034101200341016a41024b1b677641016a220120034d0d002001ad4290017e2208422088a70d062008a72201417f4c0d0620022802d408212620022802d0082127200110382209450d13200220093602b80b200242003703b00b200220014190016e22063602bc0b20034188016c41f87e6a2105410021284100210020272101024002400340200141086a2d000022294102460d0120012903002108200241c8046a200141096a41ff0010c30a1a02402006417f6a2203200020286b712003470d002006417f20054188016d220341016a222a202a2003491b6a22032006490d034100417f2003417f6a677620034102491b222a41016a2203202a490d03200320064d0d002006212a0240024002400240200320066b2203450d00200620036a22032006490d0e2003ad4290017e220a422088a7454103742103200aa7212a0240024020060d00200241003602c0030c010b200241083602c803200220093602c003200220064190016c3602c4030b200241b8026a202a2003200241c0036a104920022802c002210320022802b8024101460d01200220022802bc0222093602b80b200220034190016e222a3602bc0b0b202820004d0d022000200620286b22034f0d01200920064190016c6a200920004190016c10c30a1a200020066a21000c020b2003450d0c0c190b20284190016c21062009202a20036b22284190016c6a200920066a20034190016c10c30a1a200220283602b00b0b202a21060b20014188016a210120022802b80b220920004190016c6a220320293a00082003200837030020022006417f6a200041016a7122003602b40b200341096a200241c8046a41ff0010c30a1a2003410036028801200541f87e6a220541f87e470d000b0b02402026450d0020264188016c450d00202710390b0240024002400240024020282000470d0020022802b00b21290c010b20022006417f6a202841016a7122293602b00b200920284190016c6a22012d0008210320022001410c6a2800003600ab0c2002200141096a2800003602a80c2001290300210e200141106a2903002108200141186a2802002128200241880c6a41186a222a200141346a290200370300200241880c6a41106a22262001412c6a290200370300200241880c6a41086a2227200141246a29020037030020022001411c6a2902003703880c2001413c6a280200212b200241e00b6a41106a222c200141d0006a290200370300200241e00b6a41186a222d200141d8006a290200370300200241e00b6a41086a222e200141c8006a2902003703002022200141e0006a2802003602002002200141c0006a2902003703e00b200241c00b6a41186a222f200141fc006a290200370300200241c00b6a41106a2230200141f4006a290200370300200241c00b6a41086a2231200141ec006a2902003703002002200141e4006a2902003703c00b20034102460d0020014184016a213220014188016a210503402005280200210520322802002101202320022802a80c360000202420022800ab0c360000202020022903880c370200202041086a2027290300370200202041106a2026290300370200202041186a202a290300370200200220033a00b00c200220283602c00c200220083703b80c2002202b3602e40c200d20022903e00b370200200d41086a202e290300370200200d41106a202c290300370200200d41186a202d290300370200200d41206a2022280200360200201f41186a202f290300370200201f41106a2030290300370200201f41086a2031290300370200201f20022903c00b370200200220013602ac0d0240200e200b520d00200241880b6a41086a2027290300370300200241880b6a41106a2026290300370300200241880b6a41186a202a290300370300200241e00a6a41086a202e290300370300200241e00a6a41106a202c290300370300200241e00a6a41186a202d290300370300200241e00a6a41206a2022280200360200200220022800ab0c3600ab0b200220022802a80c3602a80b200220022903880c3703880b200220022903e00b3703e00a200241c00a6a41186a202f290300370300200241c00a6a41106a2030290300370300200241c00a6a41086a2031290300370300200220022903c00b3703c00a410021012003213320282134200821350c030b200e42027c220879210a024002402008500d00427d200e7d7ba72201200aa7460d010b03402008427f423f200a7d423f83867c42017c220879220aa721032008427f857ba721012008500d0020012003470d000b0b413f20016b222820054b210342022005413f71ad862108024002400240024002402006417f6a2201200020296b71450d002009450d00200e420120087d2008427f7c20031b7c200920012029714190016c6a290300520d0020002029460d0120022001202941016a7122323602b00b200920294190016c6a22292d0008222b4102460d012021202941096a41ff0010c40a1a0c040b024020042011460d0020044180016a213620042d00004101470d0220214200370000202141186a222b4200370000202141106a22324200370000202141086a22374200370000202120042900013700002037200441096a2900003700002032200441116a290000370000202b200441196a2900003700004101212b0c030b203542808080807083213541012101201121040c060b41b4fcca00412b41e8c0c2001035000b200441146a290000210a2004411c6a29000021072004290308210c2004280210212b200241c8046a41186a2004412c6a2900002238370300201e41106a200441246a2900002239370200201e41186a2038370200201e41086a2007370200200241c8046a41106a2039370300201e200a370200200241c8046a41086a20073703002002202b3602c8022002200c3703c0022002200a3703c804200441c0006a290300210a200441c8006a2903002107200441d0006a290300210c20042903382138201d41206a200441d8006a280200360200201d41186a200c370300201d41106a2007370300201d41086a200a370300201d2038370300200441dc006a290000210a200441e4006a2900002107200441ec006a290000210c201c41186a200441f4006a290000370000201c41106a200c370000201c41086a2007370000201c200a3700004100212b0b20292132203621040b200e4201200820031b7c21082002202b3a00b80202400240202820054d0d00200241c0036a200241b8026a200241b00c6a10b1040c010b200241c0036a200241b00c6a200241b8026a10b1040b024002402008200b5a0d00200241c8046a200241c0036a41800110c30a1a200541016a2105024020062001200020326b716b4101470d00200241b00b6a10e80620022802bc0b417f6a210120022802b80b210920022802b40b21000b200920004190016c6a2203200837030020022001200041016a713602b40b200341086a200241c8046a41800110c30a1a200320053602880120022802bc0b210620022802b00b220120022802b40b2200470d01200121290c030b200241880b6a41086a201a41086a290200370300200241880b6a41106a201a41106a290200370300200241880b6a41186a201a41186a290200370300200241e00a6a41086a201941086a290200370300200241e00a6a41106a201941106a290200370300200241e00a6a41186a201941186a290200370300200241e00a6a41206a201941206a2802003602002002201b2800003602a80b2002201a2902003703880b200220192902003703e00a2002201b41036a2800003600ab0b20022d00c003213320022903c803213520022802d0032134200241c00a6a41186a201841186a290200370300200241c00a6a41106a201841106a290200370300200241c00a6a41086a201841086a290200370300200220182902003703c00a41002101203221290c030b20022006417f6a200141016a7122293602b00b202720022802b80b220920014190016c6a220141246a29020037030020262001412c6a290200370300202a200141346a2902003703002002200141096a2800003602a80c20022001410c6a2800003600ab0c20022001411c6a2902003703880c2001290300210e200141106a2903002108200141186a280200212820012d00082103202e200141c8006a290200370300202c200141d0006a290200370300202d200141d8006a2902003703002022200141e0006a2802003602002031200141ec006a2902003703002030200141f4006a290200370300202f200141fc006a2902003703002002200141c0006a2902003703e00b2002200141e4006a2902003703c00b20014188016a210520014184016a21322001413c6a280200212b20034102470d000b0b0240024020002029490d00200620004f0d0120002006419cafc3001055000b20062029490d020b02402006450d0020064190016c450d0020022802b80b10390b200220022802a80b3602b80a200220022800ab0b3600bb0a0c120b0240024020002029490d00200620004f0d0120002006419cafc3001055000b20062029490d020b02402006450d0020064190016c450d00200910390b200241980a6a41086a2203200241880b6a41086a290300370300200241980a6a41106a2200200241880b6a41106a290300370300200241980a6a41186a2206200241880b6a41186a290300370300200241f0096a41086a2209200241e00a6a41086a290300370300200241f0096a41106a2205200241e00a6a41106a290300370300200241f0096a41186a2229200241e00a6a41186a290300370300200241f0096a41206a2228200241e00a6a41206a280200360200200220022802a80b3602b80a200220022800ab0b3600bb0a200220022903880b3703980a200220022903e00a3703f009200241d0096a41186a222a200241c00a6a41186a290300370300200241d0096a41106a2226200241c00a6a41106a290300370300200241d0096a41086a2227200241c00a6a41086a290300370300200220022903c00a3703d00920010d11200241a8096a41086a22012003290300370300200241a8096a41106a22032000290300370300200241a8096a41186a2200200629030037030020024180096a41086a2206200929030037030020024180096a41106a2209200529030037030020024180096a41186a2205202929030037030020024180096a41206a22292028280200360200200220022800bb0a3600cb09200220022802b80a3602c809200220022903980a3703a809200220022903f00937038009200241e0086a41186a2228202a290300370300200241e0086a41106a222a2026290300370300200241e0086a41086a22262027290300370300200220022903d0093703e00802400240203341ff01714101470d00200220022800cb093600e30b200220022802c8093602e00b200220022903a8093703b00c200220022900ad093700b50c410121000c010b2017200229038009370000201620022903e008370000201741206a2029280200360000201741186a2005290300370000201741106a2009290300370000201741086a2006290300370000201641086a2026290300370000201641106a202a290300370000201641186a2028290300370000200241b8026a41186a2000290300370300200241b8026a41106a2003290300370300200241b8026a41086a2001290300370300200241c8046a410f6a2015410f6a290000370000200241c8046a41086a201541086a290000370300200220022900ad093700b50c200220022903a8093703b00c200220152900003703c804200241c0036a200241c8046a41df0010c30a1a410021000b024020022802c808220320022802c408470d00200241c0086a2003410110de0420022802c80821030b20022802c00820034107746a220120003a0000200120022802e00b3600012001203436021020012035370308200120022903b00c370214200141046a20022800e30b360000200141196a20022900b50c370000200141216a200241c0036a41df0010c30a1a2002200341016a3602c8080c070b41b0adc300412341d4adc3001035000b41b0adc300412341d4adc3001035000b4180eaca00411141f4cdc4001065000b4180eaca00411141e4cdc4001035000b2001417f6a2000418898c1001055000b20042011460d080240024020042d00004101470d00200242003700ad09200242003703a809200220042800013602c8092002200441046a2800003600cb09200429000821082002200441196a2900003700ad092002200441146a2900003703a80920042800102100200220022802c8093602e00b200220022800cb093600e30b200220022903a8093703b00c200220022900ad093700b50c410121060c010b200441146a290000210a2004280210210020042903082108200241a8096a41106a2201200441246a290000220e3703002004411c6a290000210b200241c8046a41186a2004412c6a2900002207370300200241a8096a41186a2203200737030020024180096a41186a2206200441d0006a29020037030020024180096a41206a2209200441d8006a280200360200200241c8046a41106a200e370300200241c8046a41086a2205200b370300200241a8096a41086a2229200b37030020024180096a41086a2228200441c0006a29020037030020024180096a41106a222a200441c8006a29020037030020022004290238370380092002200a3703c8042002200a3703a809200241e0086a41186a2226200441f4006a290000370300200241e0086a41106a2227200441ec006a290000370300200241e0086a41086a222c200441e4006a2900003703002002200441dc006a2900003703e008201741206a2009280200360000201741186a2006290300370000201741106a202a290300370000201741086a20282903003700002017200229038009370000201620022903e008370000201641086a202c290300370000201641106a2027290300370000201641186a2026290300370000200241b8026a41186a2003290300370300200241b8026a41106a2001290300370300200241b8026a41086a2029290300370300200220022903a8093703b802200220022900ad093700b50c200220022903a8093703b00c200241c8046a410f6a2015410f6a2900003700002005201541086a290000370300200220152900003703c804200241c0036a200241c8046a41df0010c30a1a410021060b024020022802c808220320022802c408470d00200241c0086a2003410110de0420022802c80821030b20044180016a210420022802c00820034107746a220120063a0000200120022802e00b3600012001200036021020012008370308200120022903b00c370214200141046a20022800e30b360000200141196a20022900b50c370000200141216a200241c0036a41df0010c30a1a2002200341016a3602c8080b20022802d4082201450d0020014188016c450d0020022802d00810390b20252014470d000c070b0b1034000b02402001450d00200310390b41042106200441ffffff3f71450d0a0c010b200241383602c403200241acb4c4003602c00341042106200241043a00b802024041002802a8fe4a4104490d00200241f0066a410c6a4129360200200241133602f4062002200241c0036a3602f8062002200241b8026a3602f00641002802a4fe4a210141002802a0fe4a210341002802acfe4a2100200241d8046a4202370300200241fc046a41a996c300ad4280808080f00e84370200200241f0046a419496c300ad4280808080d00284370300200241e8046a4202370300200241d0046a410c360200200241e4046a200241f0066a360200200241f895c3003602d40420024281808080902837028405200241003602f8042002418896c3003602cc04200241043602c804200341f4ddca00200041024622001b200241c8046a200141b0a7c00020001b28021011030020022d00b80221060b200441ffffff3f71450d090b200910390c080b200241d0056a41086a200241c8046a410c6a290200370300200220022902cc043703d005200241013a00e00b024041002802a8fe4a450d00200241f0066a410c6a4128360200200241133602f4062002200241d0056a3602f8062002200241e00b6a3602f00641002802a4fe4a210141002802a0fe4a210341002802acfe4a2100200241c00c6a4202370300200241e40c6a41a996c300ad4280808080f00e84370200200241d80c6a419496c300ad4280808080d00284370300200241d00c6a4202370300200241b00c6a41086a410c360200200241cc0c6a200241f0066a360200200241f895c3003602bc0c20024281808080e0263702ec0c200241003602e00c2002418896c3003602b40c200241013602b00c200341f4ddca00200041024622001b200241b00c6a200141b0a7c00020001b28021011030020022d00e00b21060b024020022802d0054102470d00200241d8056a280200450d0020022802d40510390b200f41ffffff0f71450d06201010390c060b024020022802d4082201450d0020014188016c450d0020022802d00810390b201121040b0240201341ffffffff0171450d00201210390b20022802a8080d02024020042011460d00410121000240024020042d00004101470d00200242003700bd02200242003703b802200220042800013602c0032002200441046a2800003600c303200429000821082002200441196a2900003700bd022002200441146a2900003703b802200428001021090c010b200441146a290000210a2004280210210920042903082108200241b8026a41106a200441246a290000220e3703002004411c6a290000210b200241c0036a41186a2004412c6a2900002207370300200241b8026a41186a2007370300200241c8046a41186a200441d0006a290000370300200241e8046a200441d8006a280000360200200241c0036a41106a200e370300200241c0036a41086a200b370300200241b8026a41086a200b370300200241c8046a41086a200441c0006a290000370300200241c8046a41106a200441c8006a290000370300200220042900383703c8042002200a3703c0032002200a3703b802200241b00c6a41186a200441f4006a290000370300200241b00c6a41106a200441ec006a290000370300200241b00c6a41086a200441e4006a2900003703002002200441dc006a2900003703b00c410021000b20044180016a2106024020022802c808220320022802c408470d00200241c0086a2003410110de0420022802c80821030b20022802c00820034107746a220120003a0000200120022802c0033600012001200936001020012008370008200120022903b802370014200120022903c804370038200141046a20022800c3033600002001411c6a200241b8026a41086a290300370000200141246a200241b8026a41106a2903003700002001412c6a200241b8026a41186a290300370000200141c0006a200241c8046a41086a290300370000200141c8006a200241c8046a41106a290300370000200141d0006a200241c8046a41186a290300370000200141d8006a200241e8046a280200360000200120022903b00c37005c200141f4006a200241b00c6a41186a290300370000200141ec006a200241b00c6a41106a290300370000200141e4006a200241b00c6a41086a2903003700002002200341016a3602c80820062011470d030b20024194086a200241c0086a41086a280200360200200220022903c00837028c08024020022802a4082201450d0020014188016c450d0020022802a00810390b20022002290091083703f807200220024198086a2800003600ff0720024188086a41086a2d00002101200228028c0821030b200220022800fb073600f307200220022802f8073602f007200241b80c6a220020022800f307360000200220022802f0073600b50c200220013a00b40c200220033602b00c024002400240200028020022014102490d00200241c0036a4101722109200241b8026a4101722104034020022001417f6a22003602b80c200320004107746a22062d00002100200241c8046a200641016a41ff0010c30a1a20004102460d02200220003a00b8022004200241c8046a41ff0010c30a1a20022001417e6a22013602b80c200320014107746a22062d00002100200241c8046a200641016a41ff0010c30a1a20004102460d03200220003a00c0032009200241c8046a41ff0010c30a1a200241c8046a200241b8026a200241c0036a10b1040240200120022802b40c470d00200241b00c6a2001410110de0420022802b00c210320022802b80c21010b200320014107746a200241c8046a41800110c30a1a2002200141016a22013602b80c200141014b0d000b0b410121000240024020010d000c010b20032d000022014102460d00200241f0066a200341016a41ff0010c30a1a410021000b20022802b40c41ffffff0f71450d04200310390c040b41b7bfc200410341f8c0c2001065000b41b7bfc20041034188c1c2001065000b20024194086a20022800bb0a36000020024198086a20353e020020024190086a20333a0000200220022802b80a360091082002410336028c08201341ffffffff0171450d00201210390b024020022802c40841ffffff0f71450d0020022802c00810390b024020022802a4082201450d0020014188016c450d0020022802a00810390b20022002290091083703f807200220024198086a2800003600ff07200220022903f8073703f006200220022800ff073600f70620024190086a2d00002101410121000b02400240024020000d00200220013a00c804200241c8046a410172200241f0066a41ff0010c30a210341002106200141ff0171220120022d00d005470d0220014101460d01200241c8046a41386a280200200241d0056a41386a280200470d02200241c8046a413c6a200241d0056a413c6a412010c60a0d02200241c8046a41dc006a200241d0056a41dc006a412010c60a0d0220022903d00420022903d805520d02200241c8046a41106a280200200241d0056a41106a280200470d02200241c8046a41146a200241d0056a41146a412010c60a4521060c020b200220022800f7063600bf02200220022903f0063703b802200241c0036a410c6a20022800bf02360000200220013a00c403200241033602c003200220022903b8023700c50341042106200241043a00b00c41002802a8fe4a4104490d01200241f0066a410c6a4128360200200241133602f4062002200241c0036a3602f8062002200241b00c6a3602f00641002802a4fe4a210141002802a0fe4a210341002802acfe4a2106200241d8046a4202370300200241fc046a41a996c300ad4280808080f00e84370200200241f0046a419496c300ad4280808080d00284370300200241e8046a4202370300200241c8046a41086a410c360200200241e4046a200241f0066a360200200241f895c3003602d40420024281808080902837028405200241003602f8042002418896c3003602cc04200241043602c804200341f4ddca00200641024622061b200241c8046a200141b0a7c00020061b28021011030020022d00b00c210620022802c0034102470d01200241c0036a41086a280200450d0120022802c40310390c010b2003200241d0056a410172412010c60a4521060b0240200f41ffffff0f71450d00201010390b20000d002006410171210141062106024020010d00200241173602c403200241f4b3c4003602c00341042106200241043a00b80241002802a8fe4a4104490d00200241f0066a410c6a4129360200200241133602f4062002200241c0036a3602f8062002200241b8026a3602f00641002802a4fe4a210141002802a0fe4a210341002802acfe4a2100200241d8046a4202370300200241fc046a41a996c300ad4280808080f00e84370200200241f0046a419496c300ad4280808080d00284370300200241e8046a4202370300200241d0046a410c360200200241e4046a200241f0066a360200200241f895c3003602d40420024281808080902837028405200241003602f8042002418896c3003602cc04200241043602c804200341f4ddca00200041024622001b200241c8046a200141b0a7c00020001b28021011030020022d00b80221060b0240200241a8016a2802002201450d00200141186c210320022802a001410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010390b200141186a2101200341686a22030d000b0b200241a4016a2802002201450d01200141186c450d0120022802a00110390c010b0240200241a8016a2802002201450d00200141186c210320022802a001410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010390b200141186a2101200341686a22030d000b0b200241a4016a2802002201450d00200141186c450d0020022802a00110390b200610cc052108200241b00d6a240020080f0b1030000b200241cc036a411d360200200241dc046a4102360200200242023702cc04200241f8f4c3003602c804200241043602c403200241f4fcc3003602c0032002200241c0036a3602d8042002200241c8046a3602c803200241c8046a4188f5c3001043000ba50f03117f017e047f230041f0006b210202400240200128020422034104490d0020012003417c6a220436020420012001280200220541046a36020020052800002106200241c0006a410472210741002108417b2109034020042008460d012001200320096a3602042001200520086a220a41056a360200200720086a200a41046a2d00003a00002002200841016a220a3602402009417f6a2109200a2108200a4120470d000b200241386a41026a2208200241cd006a2d00003a00002002200241d9006a22092800003602682002200241dc006a28000036006b200220022f01443b013c200220022d00463a003e2002200241cb006a2f00003b0138200241ce006a2801002107200241d5006a280000210b200241c0006a41206a280200210c2002280047210d200228006b210e200241346a41026a2205200241d4006a2d00003a00002002200241d2006a2f01003b0134200241306a41026a2204200241db006a2d00003a0000200220092f00003b0130200220022d003e3a002e200220022f013c3b012c200241286a41026a220920082d00003a0000200220022f01383b0128200241246a41026a220820052d00003a0000200220022f01343b0124200241206a41026a220520042d00003a0000200220022f01303b0120200220022d002e3a001e200220022f012c3b011c200241186a41026a20092d00003a0000200220022f01283b0118200241146a41026a20082d00003a0000200220022f01243b0114200241106a41026a20052d00003a0000200220022f01203b01102003200a6b2108200241c0006a4104722103410021090240034020084104460d0120012008417b6a36020420012001280200220a41016a360200200320096a200a2d00003a00002002200941016a220a3602402008417f6a2108200a2109200a4120470d000b200241386a41026a2209200241cd006a2d00003a00002002200241d9006a220a2800003602682002200241dc006a28000036006b200220022f01443b013c200220022d00463a003e2002200241cb006a2f00003b0138200241ce006a2801002104200241d5006a280000210f200241e0006a280200211020022800472111200228006b2112200241346a41026a2203200241d4006a2d00003a00002002200241d2006a2f01003b0134200241306a41026a2205200241db006a2d00003a00002002200a2f00003b01302002412c6a41026a20022d003e3a0000200220022f013c3b012c200241286a41026a20092d00003a0000200220022f01383b0128200241246a41026a20032d00003a0000200220022f01343b0124200241206a41026a20052d00003a0000200220022f01303b01202008417c6a4108490d022001200841746a220936020420012001280200220341086a36020020094104490d02200329000021132001200841706a36020420012003410c6a36020020032800082114200241c0006a410472210541002109034020084110460d0320012008416f6a3602042001200320096a220a410d6a360200200520096a200a410c6a2d00003a00002002200941016a220a3602402008417f6a2108200a2109200a4120470d000b200241386a41026a2208200241cd006a2d00003a00002002200241d9006a22012800003602682002200241dc006a28000036006b200220022f01443b013c200220022d00463a003e2002200241cb006a2f00003b0138200241e0006a2802002109200241d5006a280000210a200241ce006a2801002103200228006b210520022800472115200241346a41026a2216200241d4006a2d00003a00002002200241d2006a2f01003b0134200241306a41026a2217200241db006a2d00003a0000200220012f00003b0130200220022d003e3a000e200220022f013c3b010c200241086a41026a220120082d00003a0000200220022f01383b0108200241046a41026a220820162d00003a0000200220022f01343b0104200241026a221620172d00003a0000200220022f01303b0100200041386a20063602002000200d36003f200020022f011c3b013c2000413e6a20022d001e3a000020002007360046200020022f01183b0043200041c5006a200241186a41026a2d00003a00002000200b36004d200020022f01143b004a200041cc006a200241146a41026a2d00003a0000200020022f01103b0051200041d3006a200241106a41026a2d00003a0000200041d8006a200c3600002000200e360054200041de006a2002412c6a41026a2d00003a0000200020022f012c3b005c200041e5006a200241286a41026a2d00003a0000200020022f01283b0063200041ec006a200241246a41026a2d00003a0000200020022f01243b006a200041f3006a200241206a41026a2d00003a0000200020022f01203b0071200041106a20143602002000201337030820002015360017200020022f010c3b0114200041166a20022d000e3a00002000200336001e200020022f01083b001b2000411d6a20012d00003a00002000200a360025200020022f01043b0022200041246a20082d00003a00002000412b6a20162d00003a0000200020022f01003b0029200041f8006a2010360000200020123600742000200f36006d200020043600662000201136005f200041306a20093600002000200536002c200042003703000f0b200042013703000f0b200042013703000f0b200042013703000be20203057f017e017f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a2802002203200028020022046b716b4101470d00200221050240024002402002450d00200220026a22052002490d04200141106a41086a4108360200200120024190016c3602142001200028020836021020012005ad4290017e2206a72006422088a745410374200141106a1049200141086a280200210520012802004101460d01200020012802043602082000410c6a20054190016e22053602000b20052002410174470d04200320044f0d022003200220046b22074f0d012000280208220420024190016c6a200420034190016c10c30a1a200041046a200320026a3602000c020b2005450d021030000b20002802082202200520076b22034190016c6a200220044190016c6a20074190016c10c30a1a200020033602000b200141206a24000f0b1034000b41e4ecc500412b4190edc5001035000b1000200028020020002802042001104e0b8750050b7f047e027f037e1a7f230041c0046b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052104024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241f8036a4190d4ca0041a0d4ca00103d000b410021040c040b410121040c030b410221040c020b410321040c010b410421040b41002103410020043602a8fe4a20024280808080802037022c200220013602a4032002200041f4ddca0020011b22053602a0032002200241a0036a360228200241f8036a4104722106417f2104024002400240024002400240024002400240034020012003460d01200620036a200520036a22072d00003a00002002200341016a22003602f8032002200120046a3602a4032002200741016a3602a0032004417f6a21042000210320004120470d000b200241d0006a41026a20024185046a2d00003a0000200241e0026a41026a2002418c046a2d00003a0000200220022f01fc033b01f802200220022d00fe033a00fa02200220024183046a2f00003b015020022002418a046a2f01003b01e00220024198046a280200210820024194046a28020021092002418d046a280000210a20024186046a280100210b20022800ff03210c200241b8026a41026a20024193046a2d00003a0000200220024191046a2f00003b01b8022002200241286a10bb0120022802000d0020022802a403220420022802042203490d002003417f4c0d080240024020030d00410121010c010b200310382201450d0320014100200310c50a1a20022802a40321040b024020042003490d00200120022802a0032200200310c30a1a2002200420036b22043602a4032002200020036a22003602a003024020044108490d002000290000210d2002200041086a3602a0032002200441786a22073602a40320074108490d002000290008210e2002200441706a3602a4032002200041106a3602a003200241f8036a200241286a10b30320022802f8032207450d002003ad220f422086200f84211020024188026a41026a200241d0006a41026a2d00003a0000200241b0016a41026a200241e0026a41026a2d00003a000020024198016a41026a200241b8026a41026a2d00003a0000200220022f01f8023b01a002200220022d00fa023a00a202200220022f01503b018802200220022f01e0023b01b001200220022f01b8023b01980120024180046a280200210420022802fc0321060c030b2003450d010b200110390b410021010b200241f8016a41026a220320024188026a41026a2d00003a0000200241e8016a41026a2200200241b0016a41026a2d00003a0000200241d8016a41026a220520024198016a41026a2d00003a0000200220022d00a2023a00d202200220022f01a0023b01d002200220022f0188023b01f801200220022f01b0013b01e801200220022f0198013b01d8012001450d03200241246a41026a20032d00003a0000200241206a41026a20002d00003a00002002411c6a41026a20052d00003a0000200220022d00d2023a00ca01200220022f01d0023b01c801200220022f01f8013b0124200220022f01e8013b0120200220022f01d8013b011c0240024020022802282802040d00200241d0006a41026a200241246a41026a2d00003a0000200241e0026a41026a200241206a41026a2d00003a0000200241b8026a41026a2002411c6a41026a2d00003a0000200220022d00ca013a00fa02200220022f01c8013b01f802200220022f01243b0150200220022f01203b01e002200220022f011c3b01b8020c010b02402010a7450d00200110390b41002101200641ffffff3f71450d00200710390b2001450d03200241146a41026a220320022d00fa023a0000200241106a41026a2200200241d0006a41026a2d00003a00002002410c6a41026a2205200241e0026a41026a2d00003a0000200241086a41026a2211200241b8026a41026a2d00003a0000200220022f01f8023b0114200220022f01503b0110200220022f01e0023b010c200220022f01b8023b0108200241246a41026a20032d00003a0000200220022f01143b0124200241206a41026a20002d00003a0000200220022f01103b01202002411c6a41026a20052d00003a0000200220022f010c3b011c200241186a41026a20112d00003a0000200220022f01083b0118200441057422054105752200ad42247e220f422088a70d06200fa72203417f4c0d060240024020030d00410421110c010b200310382211450d010b200720056a2112410021052002410036028004200220113602f8032002200341246e22033602fc030240200320004f0d00200241f8036a4100200010eb0620022802800421050b024020122007460d002004410574210020022802f803200541246c6a2103200721040340200441186a290000210f200441106a2900002113200441086a290000211420042900002115200341013a0000200341016a2015370000200341096a2014370000200341116a2013370000200341196a200f370000200341246a2103200541016a2105200441206a2104200041606a22000d000b0b0240200641ffffff3f71450d00200710390b20022802fc03211620022802f8032117200241d8006a20022f01103b0100200241da006a200241106a41026a2d00003a0000200241db006a200b360000200241df006a20022f010c3b0000200241e1006a2002410c6a41026a2d00003a0000200241e2006a200a3601002002200241146a41026a2d00003a0053200220022f01143b00512002200c360254200241e6006a20022f01083b0100200241e8006a200241086a41026a2d00003a0000200241ed006a2008360000200241e9006a2009360000200241013a0050413010382203450d00200320103702102003200136020c200341003a00082003200d42017c220f420186200f7b7d200f7a427f857c37030020024281808080103702cc01200220033602c801024002400240024002400240200e420186200e7b7d220f4201520d0020032903004200520d00412410382218450d06200241b0016a41086a4201370300200220183602b40141002104024020032d00084102460d00200241f8036a41086a200341106a290300220f370300200241f8036a41106a200341186a2903002213370300200241f8036a41186a200341206a2903002214370300200241f8036a41206a2204200341286a2903003e02002002200341086a29030022153703f803201841206a2004280200360200201841186a2014370200201841106a2013370200201841086a200f37020020182015370200410121040b200220043602bc012003103920022903b801210f0c010b200241d8016a200f104c20022802e001220441016aad42247e220f422088a70d0b200fa72203417f4c0d0b0240024020030d00410421110c010b200310382211450d060b2017200541246c6a211941002101200241003602f001200220113602e8012002200341246e3602ec0120022802d801211a20022802dc01211b2017210602402004450d00201a20044103746a211c200241286a41106a211d200241f8026a41106a211e200241a0036a410172221f41226a212020024197046a21124100210120172106201a2121034020022802c801220741506a21042021220341086a21212003290300211420022802d00121004100210302400240024002400240024002400240024002400340024020002003470d00200241003602d001200241003602fc03200220003602f803200220073602800420022007200041306c6a360284042002200241c8016a36028804200241f8016a200241f8036a10c7030c020b200341016a2103200441306a22042903002014580d000b20002003417f6a2218490d01200241003602d001200220043602840420022007360280042002200020036b41016a3602fc03200220183602f8032002200241c8016a36028804200241f8016a200241f8036a10c7030b0240024002400240024020022802800222030e020200010b20022802f80122002903002014520d0020024188026a41086a200041206a29030037030020024188026a41106a200041286a28020036020020024100360280022002200041186a220329030037038802200041146a2802002104200041106a28020021222000410c6a28020021070240024020002d000822234101470d00200041096a2f00002000410b6a2d0000411074722124200241f8036a41106a200341106a2d00003a0000200241f8036a41086a200341086a290200370300200220032902003703f8034101212520222126200721180c010b2004417f4c0d1b0240024020040d00410121180c010b200410382218450d160b20182007200410c30a1a41002125200421260b0240200120022802ec01470d00200241e8016a2001410110eb0620022802f00121010b20022802e8012211200141246c6a2203200436020c2003202636020820032018360204200320243b0001200320253a0000200320022903f803370210200320022f00283b0021200341036a20244110763a0000200341236a200241286a41026a2d00003a0000200341186a200241f8036a41086a290300370200200341206a200241f8036a41106a2d00003a00002002200141016a22013602f00120230d0b2022450d0b200710390c0b0b417f20034101200341016a41024b1b677641016a220420034d0d042004ad42307e220f422088a70d19200fa72204417f4c0d1920022802f801212720022802fc012128200410382207450d132027200341306c22036a2129200220073602d802200242003703d0022002200441306e22013602dc02200341506a21114100212641002100202721040240024003402004220341306a2104200341086a2d000022184102460d01200241f8036a41086a2222200341116a290000370300200241f8036a41106a2223200341196a290000370300200241f8036a41186a2225200341216a2900003703002012200341286a2800003600002002200341096a2900003703f8032003290300210f02402001417f6a2203200020266b712003470d002001417f201141306d220341016a222a202a2003491b6a22032001490d094100417f2003417f6a677620034102491b222a41016a2203202a490d09200320014d0d002001212a0240024002400240200320016b2203450d00200120036a22032001490d212003ad42307e2213422088a74541037421032013a7212a0240024020010d00200241003602280c010b20024108360230200220073602282002200141306c36022c0b200241a0036a202a2003200241286a104920022802a803210320022802a0034101460d01200220022802a40322073602d8022002200341306e222a3602dc020b202620004d0d022000200120266b22034f0d012007200141306c6a2007200041306c10c30a1a200020016a21000c020b20030d190c1f0b202641306c21012007202a20036b222641306c6a200720016a200341306c10c30a1a200220263602d0020b202a21010b20022802d8022207200041306c6a220320183a00082003200f3703002003410036022c20022001417f6a200041016a7122003602d402200341096a20022903f803370000200341116a2022290300370000200341196a2023290300370000200341216a2025290300370000200341286a2012280000360000201141506a22114150470d000c020b0b20292004460d0003402004220341306a21040240200341086a2d00000d00200341106a280200450d002003410c6a28020010390b20292004470d000b0b02402028450d00202841306c450d00202710390b20262000460d0820022001417f6a202641016a7122183602d0022007202641306c6a221129030021152011410c6a2802002123201141106a2802002122201141146a280200210420112802082103200241e0026a41086a2225201141206a290300370300200241e0026a41106a2226201141286a2802003602002002201141186a2903003703e002200341ff01714102460d082011412c6a211102400240034020112802002111201e20022903e002370200201e41086a2025290300370200201e41106a202628020036020020022004360284032002202236028003200220233602fc022002200341807e71200341ff01712228723602f802024020152014520d00200241b8026a41106a2026280200360200200241b8026a41086a2025290300370300200220022903e0023703b80220034108762100410021112023212b2022212c2004212d0c030b201542027c220f79211302400240200f500d00427d20157d7ba722032013a7460d010b0340200f427f423f20137d423f83867c42017c220f792213a72104200f427f857ba72103200f500d0020032004470d000b0b413f20036b222920114b210342022011413f71ad86210f024002402001417f6a2204200020186b71450d002007450d0020154201200f7d200f427f7c20031b7c2007200420187141306c6a290300520d0020002018460d0b20022004201841016a7122273602d0022007201841306c6a22182d0008222a4102460d0b201841096a2900002113201841116a290000210e201841196a2900002110201841216a290000210d201841296a2f0000212e20202018412b6a2d00003a0000201f41206a202e3b0000201f41186a200d370000201f41106a2010370000201f41086a200e370000201f201337000020272118200621270c010b024020062019470d00410121114100210041032103201921270c030b200641246a2127024020062d00004101470d00201f4200370000201f41186a222a4200370000201f41106a222e4200370000201f41086a222f4200370000201f2006290001370000202f200641096a290000370000202e200641116a290000370000202a200641196a2900003700004101212a0c010b200628020c222a417f4c0d1d2006280204212e02400240202a0d00410121060c010b202a10382206450d180b2002202a3602a803200220063602a4032006202e202a10c30a1a2002202a3602ac034100212a0b20154201200f20031b7c210f2002202a3a00a00302400240202920114d0d00200241286a200241a0036a200241f8026a10af040c010b200241286a200241f8026a200241a0036a10af040b0240200f20145a0d00200241f8036a41206a2206200241286a41206a280200360200200241f8036a41186a2222200241286a41186a290300370300200241f8036a41106a2223201d290300370300200241f8036a41086a222a200241286a41086a290300370300200220022903283703f803201141016a2111024020012004200020186b716b4101470d00200241d0026a10ec0620022802dc02417f6a210420022802d802210720022802d40221000b2007200041306c6a2203200f370300200628020021012022290300210f20232903002113202a290300211520022903f803210e2003201136022c20022004200041016a713602d4022003200e370308200341106a2015370300200341186a2013370300200341206a200f370300200341286a2001360200024020022d00a0030d0020022802a803450d0020022802a40310390b024020022d00f8020d00200228028003450d0020022802fc0210390b20022802dc02210120022802d002220320022802d4022200460d0c20022001417f6a200341016a7122183602d002202520022802d8022207200341306c6a220341206a2903003703002026200341286a2802003602002002200341186a2903003703e0022003412c6a211120032903002115200341146a2802002104200341106a28020021222003410c6a2802002123202721062003280208220341ff01714102470d010c0c0b0b200241b8026a41086a201d41086a290200370300200241b8026a41106a201d41106a2802003602002002201d2902003703b8022002280228220341087621002002280234212d2002280230212c200228022c212b41002111202a0d0020022802a803450d0020022802a40310390b024020280d002022450d00202310390b202721060b200241d0026a10ed0602402001450d00200141306c450d00200710390b200241a0026a41086a2204200241b8026a41086a290300370300200241a0026a41106a2201200241b8026a41106a280200360200200220022903b8023703a00220110d0920024188026a41106a2211200128020036020020024188026a41086a22012004290300370300200220022903a00237038802200341ff017122074101470d01200241f8036a41106a20112d00003a0000200241f8036a41086a200129030037030020022002290388023703f80341012118202c2122202b2101200021240c020b20062019460d060240024020062d000022224101470d0020024188026a41106a220341003a000020024188026a41086a220742003703002002420037038802200641036a2d0000212320062800082118200628000c21042006280004210020062f000121252003200641206a2d000022263a00002007200641186a290000220f37030020022006290010221337038802200241f8036a41086a200f370300200241f8036a41106a20263a0000200220133703f8032025202341107472212441012123200021070c010b200628020c2204417f4c0d1920062802042103410121074101210002402004450d00200410382200450d140b20002003200410c30a210302402004450d00200410382207450d140b20072003200410c30a1a41002123200421180b0240200120022802ec01470d00200241e8016a2001410110eb0620022802e801211120022802f00121010b2011200141246c6a2203200436020c2003201836020820032007360204200320243b0001200320233a0000200341036a20244110763a0000200241f8036a41106a2d00002104200241f8036a41086a290300210f20022903f8032113200341236a200241286a41026a2d00003a0000200320022f00283b002120032013370210200341186a200f370200200341206a20043a00002002200141016a22013602f001024020224101460d002018450d00200010390b200641246a210620022802f80121002002280280022203450d09200341306c2104200041106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010390b200341306a2103200441506a2204450d0a0c000b0b202d417f4c0d1702400240202d0d00410121010c010b202d10382201450d120b2001202b202d10c30a1a41002118202d21220b024020022802f001220420022802ec01470d00200241e8016a2004410110eb0620022802f00121040b20022802e8012211200441246c6a2203202d36020c2003202236020820032001360204200320243b0001200320183a0000200320022903f803370210200320022f00283b0021200341036a20244110763a0000200341236a200241286a41026a2d00003a0000200341186a200241f8036a41086a290300370200200341206a200241f8036a41106a2d00003a00002002200441016a22013602f00120070d08202c450d08202b10390c080b2003417f6a2000418898c1001055000b4180eaca00411141e4cdc4001035000b4180eaca00411141f4cdc4001065000b41b4fcca00412b41e8c0c2001035000b024020022802fc012203450d00200341306c450d0020022802f80110390b201921060c050b200241d0026a10ed0602402001450d00200141306c450d0020022802d80210390b41002100410321030b200241b0016a41106a202d360200200241bc016a202c360200200241b8016a202b360200200220033a00b401200220003b00b501200220004110763a00b701201b41ffffffff0171450d06201a10390c060b20022802fc012203450d00200341306c450d00200010390b2021201c470d000b0b0240201b41ffffffff0171450d00201a10390b024020022802d001450d00200241033602b4010c030b0240024020062019470d00410021030c010b410121000240024020062d00004101470d0020024188046a220341003a000020024180046a22124200370300200242003703f8032002412a6a200641036a2d00003a000020062800082111200628000c21042006280004210720062f000121182003200641206a2d00003a00002012200641186a290000370300200220183b0128200220062900103703f8030c010b200628020c2204417f4c0d0d200628020421030240024020040d00410121070c010b200410382207450d080b20072003200410c30a1a41002100200421110b200641246a21060240200120022802ec01470d00200241e8016a2001410110eb0620022802f00121010b20022802e801200141246c6a220320022f01283b0001200320003a00002003200436020c2003201136020820032007360204200320022903f803370210200341036a2002412a6a2d00003a0000200341186a20024180046a290300370200200341206a20024188046a2802003602002002200141016a3602f00120062019470d0220022802d00121030b200241bc016a200241f0016a280200360200200220022903e8013702b40102402003450d00200341306c210420022802c80141106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010390b200341306a2103200441506a22040d000b0b024020022802cc012203450d00200341306c450d0020022802c80110390b200241b8016a290300210f20022802b40121180b200220183602f8022002200f3702fc020240200f422088a722044102490d00200241286a4101722111200241a0036a4101722100200241f8036a41086a2101200241f8036a41106a2107200241f8036a41186a2106200241f8036a411f6a2112034020022004417f6a2203360280032018200341246c6a22032d000021222001200341096a2900003703002007200341116a2900003703002006200341196a2900003703002012200341206a280000360000200220032900013703f80320224102460d07200020022903f803370000200041086a2001290300370000200041106a2007290300370000200041186a20062903003700002000411f6a2012280000360000200220223a00a00320182004417e6a220441246c6a22032d000021222001200341096a2900003703002007200341116a2900003703002006200341196a2900003703002012200341206a2800003600002002200436028003200220032900013703f80320224102460d08201120022903f803370000201141086a2001290300370000201141106a2007290300370000201141186a20062903003700002011411f6a2012280000360000200220223a0028200241f8036a200241a0036a200241286a10af040240200420022802fc02470d00200241f8026a2004410110eb0620022802f802211820022802800321040b2018200441246c6a220320022903f803370200200341206a200241f8036a41206a280200360200200341186a2006290300370200200341106a2007290300370200200341086a20012903003702002002200441016a220436028003024020022d00280d002002280230450d00200228022c10390b024020022d00a0030d0020022802a803450d0020022802a40310390b200441014b0d000b0b41012101410321034100210002402004450d00200241003602800320182d000022074102470d030b0c030b200241033602b4010b20022802e8012100024020022802f0012203450d00200341246c2104200021030340024020032d00000d00200341086a280200450d00200341046a28020010390b200341246a21032004415c6a22040d000b0b024020022802ec012203450d00200341246c450d00200010390b024020022802d0012203450d00200341306c210420022802c80141106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010390b200341306a2103200441506a22040d000b0b024020022802cc012203450d00200341306c450d0020022802c80110390b20022802b40122034108762100200241b0016a41086a290300210f200241c0016a28020021040c060b2018410c6a2800002104201841046a290000210f201841036a2d0000210320182f00012100200241a0016a201841186a29000037030020024198016a41106a201841206a2800003602002002201841106a290000370398012000200341107472210041002101200721030b024020022802fc022207450d00200741246c450d00201810390b20010d0420024184046a2004360200200241f8036a41106a20022903980137030020024190046a20024198016a41086a290300370300200241f8036a41206a20024198016a41106a280200360200200220004108742003723602f8032002200f3702fc030240024020034101470d00200241f8036a410172200241d0006a410172412010c60a4521000c010b4100210020030d00200f428080808010540d00200fa710390b410021010c050b1030000b41b7bfc200410341f8c0c2001065000b41b7bfc20041034188c1c2001065000b200241346a411d3602002002418c046a4102360200200242023702fc03200241f8f4c3003602f8032002410436022c20024188fdc3003602282002200241286a360288042002200241f8036a360230200241f8036a4188f5c3001043000b200241286a410c6a20043602002002200f37022c20022000410874200341ff017172220336022841042100200241043a00f802024041002802a8fe4a4104490d00200241a0036a410c6a4128360200200241133602a4032002200241286a3602a8032002200241f8026a3602a00341002802a4fe4a210341002802a0fe4a210441002802acfe4a210020024188046a4202370300200241ac046a41a996c300ad4280808080f00e84370200200241a0046a419496c300ad4280808080d0028437030020024198046a4202370300200241f8036a41086a410c36020020024194046a200241a0036a360200200241f895c300360284042002428180808090283702b404200241003602a8042002418896c3003602fc03200241043602f803200441f4ddca00200041024622001b200241f8036a200341b0a7c00020001b2802101103002002280228210320022d00f80221000b024020034102470d00200241306a280200450d00200228022c10390b410121010b02402005450d00200541246c2104201721030340024020032d00000d00200341086a280200450d00200341046a28020010390b200341246a21032004415c6a22040d000b0b02402016450d00201641246c450d00201710390b024020010d00200041017121034106210020030d00200241336a200c360000200241376a20022f01203b00002002413a6a200b3601002002413e6a20022f011c3b0100200241c1006a200a360000200241c5006a20022f01183b0000200241326a200241246a41026a2d00003a0000200241396a200241206a41026a2d00003a0000200241c0006a2002411c6a41026a2d00003a0000200241c7006a200241186a41026a2d00003a0000200220022f01243b0130200241cc006a2008360200200241286a41206a2009360200200241f4b3c4003602282002411736022c41042100200241043a00f80241002802a8fe4a4104490d00200241a0036a410c6a412a360200200241133602a4032002200241286a3602a8032002200241f8026a3602a00341002802a4fe4a210341002802a0fe4a210441002802acfe4a210020024188046a4202370300200241ac046a41a996c300ad4280808080f00e84370200200241a0046a419496c300ad4280808080d00284370300200241f8036a41206a420237030020024180046a410c36020020024194046a200241a0036a360200200241f895c300360284042002428180808090283702b404200241003602a8042002418896c3003602fc03200241043602f803200441f4ddca00200041024622001b200241f8036a200341b0a7c00020001b28021011030020022d00f80221000b200010cc05210f200241c0046a2400200f0f0b1034000bd30102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42247e2205422088a74541027421022005a721040240024020010d00200341003602100c010b200341186a41043602002003200141246c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141246e360200200341206a24000f0b1034000bda0203057f017e017f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a2802002203200028020022046b716b4101470d00200221050240024002402002450d00200220026a22052002490d04200141106a41086a41083602002001200241306c3602142001200028020836021020012005ad42307e2206a72006422088a745410374200141106a1049200141086a280200210520012802004101460d01200020012802043602082000410c6a200541306e22053602000b20052002410174470d04200320044f0d022003200220046b22074f0d0120002802082204200241306c6a2004200341306c10c30a1a200041046a200320026a3602000c020b2005450d021030000b20002802082202200520076b220341306c6a2002200441306c6a200741306c10c30a1a200020033602000b200141206a24000f0b1034000b41e4ecc500412b4190edc5001035000b8a0201047f2000410c6a2802002101200041086a28020021020240024002402000280204220320002802002200490d0041002104024020012003490d00200321010c020b20032001419cafc3001055000b2003210420012000490d010b024020012000460d00200141306c200041306c22006b2101200220006a41106a210003400240200041786a2d00000d002000280200450d002000417c6a28020010390b200041306a2100200141506a22010d000b0b02402004450d00200441306c2101200241106a210003400240200041786a2d00000d002000280200450d002000417c6a28020010390b200041306a2100200141506a22010d000b0b0f0b41b0adc300412341d4adc3001035000bbc0802037f017e23004180026b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca00413420024190016a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241186a4200370300200241106a22034200370300200241086a420037030020024200370300200241b080c400411310f201200341a8a7c800410d10f20120024190016a2002412010ab020240024020022d0090014101460d00200241f0006a41186a4200370300200241f0006a41106a4200370300200241f0006a41086a4200370300200242003703700c010b200241f0006a41186a200241a9016a290000370300200241f0006a41106a200241a1016a290000370300200241f0006a41086a20024199016a29000037030020022002290091013703700b20024190016a41186a200241f0006a41186a29030037030020024190016a41106a200241f0006a41106a29030037030020024190016a41086a200241f0006a41086a2903003703002002200229037037039001200220024190016a10c30220024190016a20022802002203200228020810c40202402002280204450d00200310390b024002402002280294010d00200241e8006a4200370300200241e0006a4200370300200241d8006a4200370300200241386a4200370300200241c0006a4200370300200241c8006a4200370300200241186a4200370300200241206a4200370300200241286a4200370300200241086a42003703002002420037035020024200370330200242003703104100210320024100360200200241002802ccdd4a2204360204410021010c010b200220024190016a41f00010c30a2201410c6a280200210320012802042104200128020021010b20024190016a410472200210c102200220013602900102402003450d00200341246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b0240200241086a2802002203450d00200341246c450d00200410390b20024190016a10ce05210520024180026a240020050f0b2002410c6a411d360200200241a4016a41023602002002420237029401200241f8f4c3003602900120024104360204200241a8fdc300360200200220023602a001200220024190016a36020820024190016a4188f5c3001043000b9b0d01097f230041e0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241386a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02402001450d002002200041f4ddca0020011b22032d00003a003c2002410136023820014101460d00200220032d00013a003d2002410236023820014102460d00200220032d00023a003e2002410336023820014103460d00200220032d00033a003f2002410436023820014104460d00200241c0006a20032d00043a00002002410536023820014105460d00200241c1006a20032d00053a00002002410636023820014106460d00200241c2006a20032d00063a00002002410736023820014107460d00200241c3006a20032d00073a00002002410836023820014108460d00200241c4006a20032d00083a00002002410936023820014109460d00200241c5006a20032d00093a00002002410a3602382001410a460d00200241c6006a20032d000a3a00002002410b3602382001410b460d00200241c7006a20032d000b3a00002002410c3602382001410c460d00200241c8006a20032d000c3a00002002410d3602382001410d460d00200241c9006a20032d000d3a00002002410e3602382001410e460d00200241ca006a20032d000e3a00002002410f3602382001410f460d00200241cb006a20032d000f3a00002002411036023820014110460d00200241cc006a20032d00103a00002002411136023820014111460d00200241cd006a20032d00113a00002002411236023820014112460d00200241ce006a20032d00123a00002002411336023820014113460d00200241cf006a20032d00133a00002002411436023820014114460d00200241d0006a20032d00143a00002002411536023820014115460d00200241d1006a20032d00153a00002002411636023820014116460d00200241d2006a20032d00163a00002002411736023820014117460d00200241d3006a20032d00173a00002002411836023820014118460d00200241d4006a20032d00183a00002002411936023820014119460d00200241d5006a20032d00193a00002002411a3602382001411a460d00200241d6006a20032d001a3a00002002411b3602382001411b460d00200241d7006a20032d001b3a00002002411c3602382001411c460d00200241d8006a20032d001c3a00002002411d3602382001411d460d00200241d9006a20032d001d3a00002002411e3602382001411e460d00200241da006a20032d001e3a00002002411f3602382001411f460d00200241db006a20032d001f3a0000200241346a41026a2204200241c5006a2d00003a0000200241306a41026a2205200241cc006a2d00003a0000200220022f013c3b0118200220022d003e3a001a2002200241c3006a2f00003b01342002200241ca006a2f01003b0130200241c6006a2801002100200241cd006a2800002106200241d4006a280200210720024120360238200241386a41206a2802002108200228003f21032002412c6a41026a2209200241d3006a2d00003a00002002200241d1006a2f00003b012c20014120470d00200241146a41026a220120022d001a3a0000200241106a41026a220a20042d00003a00002002410c6a41026a220420052d00003a0000200241086a41026a220520092d00003a0000200220022f01183b0114200220022f01343b0110200220022f01303b010c200220022f012c3b01082002200336003b200220012d00003a003a200220022f01143b0138200241c1006a200a2d00003a000020022000360142200220022f01103b003f200241c8006a20042d00003a000020022006360049200220022f010c3b0146200241cf006a20052d00003a0000200220022f01083b004d2002200836025420022007360250200241186a200241386a10c30220022802182201200228022010a80221030240200228021c450d00200110390b0240410110382201450d00200120033a0000200241e0006a24002001ad428080808010840f0b1030000b200241246a411d360200200241cc006a41023602002002420237023c200241f8f4c3003602382002410436021c200241c0fdc3003602182002200241186a3602482002200241386a360220200241386a4188f5c3001043000bbc0802037f017e23004180026b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca00413420024190016a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a024020010d00200241186a4200370300200241106a22034200370300200241086a420037030020024200370300200241c380c400411310f201200341a8a7c800410d10f20120024190016a2002412010ab020240024020022d0090014101460d00200241f0006a41186a4200370300200241f0006a41106a4200370300200241f0006a41086a4200370300200242003703700c010b200241f0006a41186a200241a9016a290000370300200241f0006a41106a200241a1016a290000370300200241f0006a41086a20024199016a29000037030020022002290091013703700b20024190016a41186a200241f0006a41186a29030037030020024190016a41106a200241f0006a41106a29030037030020024190016a41086a200241f0006a41086a2903003703002002200229037037039001200220024190016a10d70220024190016a20022802002203200228020810c40202402002280204450d00200310390b024002402002280294010d00200241e8006a4200370300200241e0006a4200370300200241d8006a4200370300200241386a4200370300200241c0006a4200370300200241c8006a4200370300200241186a4200370300200241206a4200370300200241286a4200370300200241086a42003703002002420037035020024200370330200242003703104100210320024100360200200241002802ccdd4a2204360204410021010c010b200220024190016a41f00010c30a2201410c6a280200210320012802042104200128020021010b20024190016a410472200210c102200220013602900102402003450d00200341246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010390c030b2003410c6a280200450d02200341086a28020010390c020b2003410c6a280200450d01200341086a28020010390c010b200341086a280200450d00200341046a28020010390b200341246a21032001415c6a22010d000b0b0240200241086a2802002203450d00200341246c450d00200410390b20024190016a10ce05210520024180026a240020050f0b2002410c6a411d360200200241a4016a41023602002002420237029401200241f8f4c3003602900120024104360204200241a8fdc300360200200220023602a001200220024190016a36020820024190016a4188f5c3001043000b9b0d01097f230041e0006b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241386a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02402001450d002002200041f4ddca0020011b22032d00003a003c2002410136023820014101460d00200220032d00013a003d2002410236023820014102460d00200220032d00023a003e2002410336023820014103460d00200220032d00033a003f2002410436023820014104460d00200241c0006a20032d00043a00002002410536023820014105460d00200241c1006a20032d00053a00002002410636023820014106460d00200241c2006a20032d00063a00002002410736023820014107460d00200241c3006a20032d00073a00002002410836023820014108460d00200241c4006a20032d00083a00002002410936023820014109460d00200241c5006a20032d00093a00002002410a3602382001410a460d00200241c6006a20032d000a3a00002002410b3602382001410b460d00200241c7006a20032d000b3a00002002410c3602382001410c460d00200241c8006a20032d000c3a00002002410d3602382001410d460d00200241c9006a20032d000d3a00002002410e3602382001410e460d00200241ca006a20032d000e3a00002002410f3602382001410f460d00200241cb006a20032d000f3a00002002411036023820014110460d00200241cc006a20032d00103a00002002411136023820014111460d00200241cd006a20032d00113a00002002411236023820014112460d00200241ce006a20032d00123a00002002411336023820014113460d00200241cf006a20032d00133a00002002411436023820014114460d00200241d0006a20032d00143a00002002411536023820014115460d00200241d1006a20032d00153a00002002411636023820014116460d00200241d2006a20032d00163a00002002411736023820014117460d00200241d3006a20032d00173a00002002411836023820014118460d00200241d4006a20032d00183a00002002411936023820014119460d00200241d5006a20032d00193a00002002411a3602382001411a460d00200241d6006a20032d001a3a00002002411b3602382001411b460d00200241d7006a20032d001b3a00002002411c3602382001411c460d00200241d8006a20032d001c3a00002002411d3602382001411d460d00200241d9006a20032d001d3a00002002411e3602382001411e460d00200241da006a20032d001e3a00002002411f3602382001411f460d00200241db006a20032d001f3a0000200241346a41026a2204200241c5006a2d00003a0000200241306a41026a2205200241cc006a2d00003a0000200220022f013c3b0118200220022d003e3a001a2002200241c3006a2f00003b01342002200241ca006a2f01003b0130200241c6006a2801002100200241cd006a2800002106200241d4006a280200210720024120360238200241386a41206a2802002108200228003f21032002412c6a41026a2209200241d3006a2d00003a00002002200241d1006a2f00003b012c20014120470d00200241146a41026a220120022d001a3a0000200241106a41026a220a20042d00003a00002002410c6a41026a220420052d00003a0000200241086a41026a220520092d00003a0000200220022f01183b0114200220022f01343b0110200220022f01303b010c200220022f012c3b01082002200336003b200220012d00003a003a200220022f01143b0138200241c1006a200a2d00003a000020022000360142200220022f01103b003f200241c8006a20042d00003a000020022006360049200220022f010c3b0146200241cf006a20052d00003a0000200220022f01083b004d2002200836025420022007360250200241186a200241386a10d70220022802182201200228022010a80221030240200228021c450d00200110390b0240410110382201450d00200120033a0000200241e0006a24002001ad428080808010840f0b1030000b200241246a411d360200200241cc006a41023602002002420237023c200241f8f4c3003602382002410436021c200241c0fdc3003602182002200241186a3602482002200241386a360220200241386a4188f5c3001043000b8d1202097f017e230041c0016b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241286a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a02402001450d002002200041f4ddca0020011b22032d00003a002c2002410136022820014101460d00200220032d00013a002d2002410236022820014102460d00200220032d00023a002e2002410336022820014103460d00200220032d00033a002f2002410436022820014104460d00200241306a20032d00043a00002002410536022820014105460d00200241316a20032d00053a00002002410636022820014106460d00200241326a20032d00063a00002002410736022820014107460d00200241336a20032d00073a00002002410836022820014108460d00200241346a20032d00083a00002002410936022820014109460d00200241356a20032d00093a00002002410a3602282001410a460d00200241366a20032d000a3a00002002410b3602282001410b460d00200241376a20032d000b3a00002002410c3602282001410c460d00200241386a20032d000c3a00002002410d3602282001410d460d00200241396a20032d000d3a00002002410e3602282001410e460d002002413a6a20032d000e3a00002002410f3602282001410f460d002002413b6a20032d000f3a00002002411036022820014110460d002002413c6a20032d00103a00002002411136022820014111460d002002413d6a20032d00113a00002002411236022820014112460d002002413e6a20032d00123a00002002411336022820014113460d002002413f6a20032d00133a00002002411436022820014114460d00200241c0006a20032d00143a00002002411536022820014115460d00200241c1006a20032d00153a00002002411636022820014116460d00200241c2006a20032d00163a00002002411736022820014117460d00200241c3006a20032d00173a00002002411836022820014118460d00200241c4006a20032d00183a00002002411936022820014119460d00200241c5006a20032d00193a00002002411a3602282001411a460d00200241c6006a20032d001a3a00002002411b3602282001411b460d00200241c7006a20032d001b3a00002002411c3602282001411c460d00200241c8006a20032d001c3a00002002411d3602282001411d460d00200241c9006a20032d001d3a00002002411e3602282001411e460d00200241ca006a20032d001e3a00002002411f3602282001411f460d00200241cb006a20032d001f3a000020024190016a41026a2203200241356a2d00003a000020024180016a41026a22002002413c6a2d00003a0000200220022f012c3b01b001200220022d002e3a00b2012002200241336a2f00003b01900120022002413a6a2f01003b018001200241366a28010021042002413d6a2800002105200241c4006a280200210620024120360228200241286a41206a2802002107200228002f2108200241a0016a41026a2209200241c3006a2d00003a00002002200241c1006a2f00003b01a00120014120470d00200241286a41026a220120022d00b2013a0000200241246a41026a220a20032d00003a0000200241206a41026a220320002d00003a00002002411c6a41026a220020092d00003a0000200220022f01b0013b0128200220022f0190013b0124200220022f0180013b0120200220022f01a0013b011c200241186a41026a20012d00003a0000200220022f01283b0118200241146a41026a200a2d00003a0000200220022f01243b0114200241106a41026a20032d00003a0000200220022f01203b01102002410c6a41026a20002d00003a0000200220022f011c3b010c20024180016a41b9fec300410610f20120024190016a418cecc900410710f20102400240412010382201450d00200120022f01183b000020012008360003200120022f01143b00072001200436000a200120022f01103b000e20012005360011200120022f010c3b0015200141026a200241186a41026a2d00003a0000200141096a200241146a41026a2d00003a0000200141106a200241106a41026a2d00003a0000200141176a2002410c6a41026a2d00003a00002001200736001c20012006360018200241b0016a2001412010dc02200241346a200141206a360200200220013602302002200241b0016a41106a36022c2002200241b0016a360228200241a0016a200241286a108d012001103920022802a801220941206a2201417f4c0d010240024020010d00410121030c010b200110382203450d010b41002100200241003602b801200220033602b001200220013602b40102402001410f4b0d00200241b0016a4100411010810120022802b401210120022802b001210320022802b80121000b200320006a2208200229008001370000200841086a20024180016a41086a2900003700002002200041106a22003602b8010240200120006b410f4b0d00200241b0016a2000411010810120022802b401210120022802b001210320022802b80121000b200320006a2208200229009001370000200841086a20024190016a41086a2900003700002002200041106a22003602b80120022802a00121080240200120006b20094f0d00200241b0016a2000200910810120022802b001210320022802b80121000b200320006a2008200910c30a1a2002200020096a22013602b801024020022802a401450d0020022802a00110390b200241286a20022802b0012200200110e102200241f0006a28020021032002290328210b024020022802b401450d00200010390b410410382201450d00200120034100200b4201511b360000200241c0016a24002001ad4280808080c000840f0b1030000b1034000b200241bc016a411d3602002002413c6a41023602002002420237022c200241f8f4c300360228200241043602b401200241d8fdc3003602b0012002200241b0016a3602382002200241286a3602b801200241286a4188f5c3001043000bad0803027f057e017f23004190126b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241d8086a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a200241d8086a200041f4ddca0020011b200110a804024020022903c0094203510d00200241d8086a41d8086a28020021032002200241d8086a41d80810c30a220241d8086a200241d80810c30a1a200241b8116a200241f0096a220110a00642002104200241c8116a200320022903b81122054200420020022d00c11141004720022d00c0112200108b0542002106024020022903c8114201520d00427f427f200241d8116a2903002206200241e8116a2903007c20022903d0112204200241e0116a2903007c22072004542203ad7c22042003200420065420042006511b22031b2206200241f8116a2903007c427f200720031b2204200241f0116a2903007c22072004542203ad7c22042003200420065420042006511b22031b2106427f200720031b21040b20024188126a29030021072002290380122108024020022903c0094202510d0020022d00d80841ff01714102470d0020022802e008450d0020022802dc0810390b2001109405200241003602e008200242013703d808200241d8086a4100410810810120022802d808220120022802e00822036a20053700002002200341086a22033602e0080240024002400240024020000e03000102040b024020022802dc082003470d00200241d8086a2003410110810120022802d808210120022802e00821030b200120036a41003a0000200341016a21030c020b024020022802dc082003470d00200241d8086a2003410110810120022802d808210120022802e00821030b200120036a41013a0000200341016a21030c010b024020022802dc082003470d00200241d8086a2003410110810120022802d808210120022802e00821030b200120036a41023a0000200341016a21030b200220033602e0080b024020022802dc0820036b410f4b0d00200241d8086a2003411010810120022802d808210120022802e00821030b200120036a2200427f200620077c200420087c22052004542209ad7c22042009200420065420042006511b22091b3700082000427f200520091b37000020024190126a2400200341106aad4220862001ad840f0b200241d4116a411d360200200241146a410236020020024202370204200241f8f4c300360200200241043602cc11200241f0fdc3003602c8112002200241c8116a3602102002200241d8086a3602d01120024188f5c3001043000bf30703027f027e017f23004190126b22022400410041002802acfe4a2203410120031b3602acfe4a02400240024020030e020001020b410041d4ddca003602a4fe4a410041d4ddca003602a0fe4a410041023602acfe4a0c010b034041002802acfe4a4101460d000b0b41052103024002400240024002400240024010010e06010203040506000b41dbd3ca004134200241a0096a4190d4ca0041a0d4ca00103d000b410021030c040b410121030c030b410221030c020b410321030c010b410421030b410020033602a8fe4a200241a0096a200041f4ddca0020011b200110a804024020022903880a4203510d00200241a0096a41d8086a2802002103200241c8006a200241a0096a41d80810c30a1a200241a0096a200241c8006a41d80810c30a1a20024180126a200241b80a6a220110a006200220032002290380124200420020022d00891241004720022d008812108b05024020022903880a4202510d0020022d00a00941ff01714102470d0020022802a809450d0020022802a40910390b2001109405200241003602a809200242013703a0090240024020022903004201510d00200241a0096a4100410110810120022802a009220120022802a80922036a41003a0000200341016a21030c010b200241a0096a4100410110810120022802a009220120022802a80922036a41013a00002002200341016a22033602a809200241106a290300210420022903082105024020022802a409220020036b410f4b0d00200241a0096a2003411010810120022802a409210020022802a009210120022802a80921030b200120036a22062004370008200620053700002002200341106a22033602a809200241206a2903002104200241186a29030021050240200020036b410f4b0d00200241a0096a2003411010810120022802a409210020022802a009210120022802a80921030b200120036a22062004370008200620053700002002200341106a22033602a809200241306a2903002104200241286a29030021050240200020036b410f4b0d00200241a0096a2003411010810120022802a009210120022802a80921030b200120036a2200200437000820002005370000200341106a21030b200220033602a809200241c0006a290300210420022903382105024020022802a40920036b410f4b0d00200241a0096a2003411010810120022802a009210120022802a80921030b200120036a220020043700082000200537000020024190126a2400200341106aad4220862001ad840f0b2002410c6a411d360200200241dc006a41023602002002420237024c200241f8f4c3003602482002410436020420024184fec300360200200220023602582002200241a0096a360208200241c8006a4188f5c3001043000b850a01097f230041d0006b22022400200241086a200141e2c289ab0610ec04200228020c210120022802082103410021042002410036022002402001450d00200220032d00003a00242002410136022020014101460d00200220032d00013a00252002410236022020014102460d00200220032d00023a00262002410336022020014103460d00200220032d00033a00272002410436022020014104460d00200241286a20032d00043a00002002410536022020014105460d00200241296a20032d00053a00002002410636022020014106460d002002412a6a20032d00063a00002002410736022020014107460d002002412b6a20032d00073a00002002410836022020014108460d002002412c6a20032d00083a00002002410936022020014109460d002002412d6a20032d00093a00002002410a3602202001410a460d002002412e6a20032d000a3a00002002410b3602202001410b460d002002412f6a20032d000b3a00002002410c3602202001410c460d00200241306a20032d000c3a00002002410d3602202001410d460d00200241316a20032d000d3a00002002410e3602202001410e460d00200241326a20032d000e3a00002002410f3602202001410f460d00200241336a20032d000f3a00002002411036022020014110460d00200241346a20032d00103a00002002411136022020014111460d00200241356a20032d00113a00002002411236022020014112460d00200241366a20032d00123a00002002411336022020014113460d00200241376a20032d00133a00002002411436022020014114460d00200241386a20032d00143a00002002411536022020014115460d00200241396a20032d00153a00002002411636022020014116460d002002413a6a20032d00163a00002002411736022020014117460d002002413b6a20032d00173a00002002411836022020014118460d002002413c6a20032d00183a00002002411936022020014119460d002002413d6a20032d00193a00002002411a3602202001411a460d002002413e6a20032d001a3a00002002411b3602202001411b460d002002413f6a20032d001b3a00002002411c3602202001411c460d00200241c0006a20032d001c3a00002002411d3602202001411d460d00200241c1006a20032d001d3a00002002411e3602202001411e460d00200241c2006a20032d001e3a00002002411f3602202001411f460d00200241c3006a20032d001f3a0000200241203602202002200241206a41196a220128000036024820022002413c6a28000036004b200220022f01243b011c200220022d00263a001e2002412e6a2801002103200241356a2800002104200241206a41206a280200210520022800272106200228004b2107200241186a41026a22082002412d6a2d00003a00002002200241206a410b6a2f00003b0118200241146a41026a2209200241346a2d00003a00002002200241206a41126a2f01003b0114200241106a41026a220a2002413b6a2d00003a0000200220012f00003b0110200041036a20022d001e3a0000200020022f011c3b0001200041086a20022f01183b00002000410a6a20082d00003a00002000410f6a20022f01143b0000200041116a20092d00003a0000200041166a20022f01103b0000200041186a200a2d00003a00002000411d6a2005360000200041196a2007360000200041126a20043600002000410b6a2003360000200041046a2006360000410121040b200020043a0000200241d0006a24000bb70201067f200141046a2802002102200141086a2802002103024020002802004101460d00024020022003470d00200120034101108101200141086a28020021030b200141086a200341016a360200200128020020036a41003a00000f0b024020022003470d00200120034101108101200141046a2802002102200141086a28020021030b200141086a2204200341016a22053602002001280200220620036a41013a0000200028020421070240200220056b41034b0d00200120054104108101200141046a280200210220042802002105200128020021060b2004200541046a2203360200200620056a2007360000200041086a28020021000240200220036b41034b0d00200120034104108101200141086a2802002103200128020021060b200620036a2000360000200141086a200341046a3602000bc60301047f200041106a200110ff0202400240024002402000280200220241c000490d00200241808001490d012002418080808004490d020240200141046a2203280200200141086a22042802002205470d00200120054101108101200428020021050b200128020020056a41033a00002004200541016a22053602000240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2002360000200141086a200541046a3602000c030b200241027421040240200141046a280200200141086a22052802002202470d00200120024101108101200528020021020b200128020020026a20043a00002005200241016a3602000c020b200241027441017221040240200141046a280200200141086a220528020022026b41014b0d00200120024102108101200528020021020b200128020020026a20043b00002005200241026a3602000c010b200241027441027221040240200141046a280200200141086a220528020022026b41034b0d00200120024104108101200528020021020b200128020020026a20043600002005200241046a3602000b200041306a200110ff02200041d0006a200110ff02200041046a2001109b060ba70502017e067f200029030021020240200141046a2203280200200141086a220428020022056b41074b0d00200120054108108101200428020021050b200128020020056a20023700002004200541086a360200200041186a200110ff022000280208210602402003280200200428020022056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2006360000200141086a2203200541046a3602002000410c6a28020021052001200041146a280200220410d20102402004450d0020044184016c21070340200541046a200110ff02200528020021060240200141046a2208280200200328020022046b41034b0d00200120044104108101200328020021040b200128020020046a20063600002003200441046a22063602000240200828020020066b413f4b0d002001200641c000108101200328020021060b200128020020066a2204200541246a290000370000200441386a200541dc006a290000370000200441306a200541d4006a290000370000200441286a200541cc006a290000370000200441206a200541c4006a290000370000200441186a2005413c6a290000370000200441106a200541346a290000370000200441086a2005412c6a2900003700002003200641c0006a22043602000240200828020020046b411f4b0d00200120044120108101200328020021040b200128020020046a2206200541e4006a290000370000200641186a200541fc006a290000370000200641106a200541f4006a290000370000200641086a200541ec006a2900003700002003200441206a36020020054184016a2105200741fc7e6a22070d000b0b200028023821052001200041c0006a280200220410d20102402004450d00200441f0006c210403402005200110f706200541f0006a2105200441907f6a22040d000b0b0bc30103027f017e017f200041086a200110f70620002802782102200120004180016a280200220310d20120022003200110d001200029030021040240200141046a2205280200200141086a220328020022026b41074b0d00200120024108108101200328020021020b200128020020026a20043700002003200241086a220236020020002d0084012100024020052802002002470d00200120024101108101200141086a28020021020b200128020020026a20003a0000200141086a200241016a3602000be3ba0105037f017e017f017e017f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000e15000102030405060708090a0b0c0d0e0f1011121314150b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41003a00002002200341016a220336020002400240024002400240024020002d00080e060001020304051a0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200029031021050240200428020020036b41074b0d00200120034108108101200228020021030b200128020020036a20053700002002200341086a22033602000240024002400240200041186a2d00000e03000102030b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c020b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a22033602000c010b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000b200141046a28020021020240200041196a2d00004101460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a36020020002d000c2000410d6a2d00002000410e6a2d0000200110b9042000290318210502402004280200200228020022036b41074b0d00200120034108108101200228020021030b200128020020036a20053700002002200341086a22033602000240024002400240200041206a2d00000e03000102030b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c020b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a22033602000c010b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000b200141046a28020021020240200041216a2d00004101460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2100200128020020036a41033a0000200141086a2202200341016a22033602000240200428020020036b411f4b0d00200120034120108101200228020021030b200128020020036a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200341206a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2100200128020020036a41043a0000200141086a2202200341016a22033602000240200428020020036b411f4b0d00200120034120108101200228020021030b200128020020036a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200341206a3602000f0b0240200141046a22022802002003470d00200120034101108101200141086a28020021030b200041296a2106200041096a2100200128020020036a41053a0000200141086a2204200341016a22033602000240200228020020036b411f4b0d00200120034120108101200428020021030b200128020020036a22022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a2900003700002004200341206a3602002006200110ff020f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41033a00002002200341016a220336020002400240024020002d00040e03000102160b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041056a2102200128020020036a41003a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028022821000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2202200341016a2203360200200028022821060240200428020020036b41034b0d00200120034104108101200228020021030b200041056a2100200128020020036a20063600002002200341046a22033602000240200141046a28020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200141086a200341206a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41043a00002002200341016a22033602000240024002400240024002400240024020002d00080e080001020304050607000b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41003a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41013a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41023a0000200141086a2208200341016a22043602000240200628020020046b411f4b0d00200120044120108101200828020021040b200041296a2103200128020020046a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700002008200441206a22023602000240200141046a220628020020026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141086a2204200241206a2203360200200041d8006a2903002105200029035021070240200628020020036b410f4b0d00200120034110108101200428020021030b2004200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41033a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a220428020020036b410f4b0d00200120034110108101200141086a28020021030b200128020020036a2202200537000820022007370000200141086a2202200341106a2203360200200041c8006a2903002105200029034021070240200428020020036b410f4b0d00200120034110108101200228020021030b2002200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41043a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41053a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41063a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41073a0000200141086a2208200341016a22043602000240200628020020046b411f4b0d00200120044120108101200828020021040b200041296a2103200128020020046a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700002008200441206a22023602000240200141046a220628020020026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141086a2204200241206a2203360200200041d8006a2903002105200029035021070240200628020020036b410f4b0d00200120034110108101200428020021030b200128020020036a22022005370008200220073700002004200341106a2203360200200141046a2802002102024020002d00494101460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a2204280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41073a00002002200341016a2203360200024020042802002003470d00200120034101108101200141086a28020021030b200041106a2102200128020020036a41003a0000200141086a2204200341016a22033602000240200141046a28020020036b410f4b0d00200120034110108101200428020021030b200128020020036a22062002290000370000200641086a200241086a2900003700002004200341106a36020020002802042000410c6a280200200110d6010f0b0240200141046a2204280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41093a00002002200341016a2203360200024020042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020421000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a410a3a00002002200341016a220336020002400240024020002802040e03000102120b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a360200200028020821032001200041106a280200220010d20120032000200110d0010f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a410b3a00002002200341016a220336020002400240024020002d00040e03000102110b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041056a2100200128020020036a41003a0000200141086a2202200341016a22033602000240200428020020036b411f4b0d00200120034120108101200228020021030b200128020020036a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200341206a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2206200341016a360200200028020821032001200041106a280200220010d2012000450d0e2000410574210420062802002100200141046a210803400240200828020020006b411f4b0d00200120004120108101200628020021000b200128020020006a22022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a2900003700002006200041206a2200360200200341206a2103200441606a22040d000c0f0b0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41103a00002002200341016a220336020002400240024020002802040e03000102100b200041086a21020240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2206200341016a3602002002200110bf0520002802cc02200041d4026a280200200110d60120002802d802210202402004280200200628020022036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a220336020020002802dc0221000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b200041086a21020240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2206200341016a3602002002200110bf0520002802cc02200041d4026a280200200110d60120002802d802210202402004280200200628020022036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a220336020020002802dc0221000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b200041086a21020240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2206200341016a3602002002200110bf0520002802cc02200041d4026a280200200110d60120002802d802210302402004280200200628020022006b41034b0d00200120004104108101200141086a28020021000b200128020020006a2003360000200141086a200041046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41133a00002002200341016a22033602000240024002400240024020002802040e050001020304110b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a2202200341016a2203360200200028020821060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41173a00002002200341016a220336020002400240024020002802040e030001020e0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020821060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028020c21020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200028021021060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028021421000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a2203360200200028020821060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2202200341016a2203360200200028020821060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028020c21020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200041106a28020021000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41193a00002002200341016a220336020002400240024020002d00040e030001020d0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028022821060240200428020020036b41034b0d00200120034104108101200228020021030b200041056a2100200128020020036a20063600002002200341046a22033602000240200141046a28020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200141086a200341206a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a2203360200200028020821000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a2202200341016a2203360200200028022821060240200428020020036b41034b0d00200120034104108101200228020021030b200041056a2100200128020020036a20063600002002200341046a22033602000240200141046a28020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200141086a200341206a3602000f0b0240200141046a2202280200200141086a22042802002203470d00200120034101108101200428020021030b200128020020036a411a3a00002004200341016a220336020002400240024002400240024002400240024020002d00080e09000102030405060708120b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020c21040240200141046a220628020020036b41034b0d00200120034104108101200228020021030b200128020020036a20043600002002200341046a2203360200200028021021020240200628020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200028021421000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2202200341016a2203360200200028020c21000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b024020022802002003470d00200120034101108101200141086a28020021030b200041096a2104200128020020036a41023a0000200141086a2208200341016a22033602000240200141046a28020020036b411f4b0d00200120034120108101200828020021030b200128020020036a22062004290000370000200641186a200441186a290000370000200641106a200441106a290000370000200641086a200441086a2900003700002008200341206a2203360200024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00290e24000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223240b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a22033602000c230b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a22033602000c220b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a22033602000c210b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a22033602000c200b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a200341016a22033602000c1f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a200341016a22033602000c1e0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41063a0000200141086a200341016a22033602000c1d0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41073a0000200141086a200341016a22033602000c1c0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41083a0000200141086a200341016a22033602000c1b0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41093a0000200141086a200341016a22033602000c1a0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410a3a0000200141086a200341016a22033602000c190b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410b3a0000200141086a200341016a22033602000c180b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410c3a0000200141086a200341016a22033602000c170b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410d3a0000200141086a200341016a22033602000c160b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410e3a0000200141086a200341016a22033602000c150b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a410f3a0000200141086a200341016a22033602000c140b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41103a0000200141086a200341016a22033602000c130b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41113a0000200141086a200341016a22033602000c120b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41123a0000200141086a200341016a22033602000c110b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41133a0000200141086a200341016a22033602000c100b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41143a0000200141086a200341016a22033602000c0f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41153a0000200141086a200341016a22033602000c0e0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41163a0000200141086a200341016a22033602000c0d0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41173a0000200141086a200341016a22033602000c0c0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41183a0000200141086a200341016a22033602000c0b0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41193a0000200141086a200341016a22033602000c0a0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411a3a0000200141086a200341016a22033602000c090b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411b3a0000200141086a200341016a22033602000c080b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411c3a0000200141086a200341016a22033602000c070b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411d3a0000200141086a200341016a22033602000c060b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411e3a0000200141086a200341016a22033602000c050b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a411f3a0000200141086a200341016a22033602000c040b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41203a0000200141086a200341016a22033602000c030b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41213a0000200141086a200341016a22033602000c020b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41223a0000200141086a200341016a22033602000c010b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41233a0000200141086a200341016a22033602000b200028022c21040240200228020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2004360000200141086a2202200341046a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200228020021030b2002200341106a360200200128020020036a22012005370008200120073700000f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2202200341016a2203360200200028020c21040240200141046a220628020020036b41034b0d00200120034104108101200228020021030b200128020020036a20043600002002200341046a2203360200200028021021020240200628020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200028021421040240200141046a220628020020036b41034b0d00200120034104108101200228020021030b200128020020036a20043600002002200341046a2203360200200041206a2903002105200029031821070240200628020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b024020022802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41043a0000200141086a2206200341016a22033602000240200141046a220828020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200828020020036b410f4b0d00200120034110108101200141086a28020021030b200128020020036a2202200537000820022007370000200141086a2202200341106a2203360200200041c8006a2903002105200029034021070240200141046a28020020036b410f4b0d00200120034110108101200228020021030b2002200341106a360200200128020020036a22012005370008200120073700000f0b024020022802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41053a0000200141086a2206200341016a22033602000240200141046a220828020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200041386a2903002105200029033021070240200828020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41063a0000200141086a2204200341016a2202360200200028022c21060240200141046a220828020020026b41034b0d00200120024104108101200428020021020b200041096a2103200128020020026a20063600002004200241046a22023602000240200828020020026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141086a2204200241206a2203360200200041386a2903002105200029033021070240200141046a28020020036b410f4b0d00200120034110108101200428020021030b2004200341106a360200200128020020036a22012005370008200120073700000f0b024020022802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41073a0000200141086a2206200341016a22033602000240200141046a220828020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028022c21020240200828020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200041c0006a2903002105200029033821070240200141046a220428020020036b410f4b0d00200120034110108101200228020021030b200128020020036a22062005370008200620073700002002200341106a2203360200200028023021020240200428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200028023421000240200141046a28020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b024020022802002003470d00200120034101108101200141086a28020021030b200128020020036a41083a0000200141086a2202200341016a2203360200200028020c21040240200141046a220628020020036b41034b0d00200120034104108101200228020021030b200128020020036a20043600002002200341046a2203360200200028021021000240200628020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a411b3a00002002200341016a220336020002400240024002400240024002400240024002400240024020002d00080e0c000102030405060708090a0b140b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41013a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028022c21020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200041386a2903002105200029033021070240200428020020036b410f4b0d00200120034110108101200228020021030b2002200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a41023a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028022c21020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200041386a2903002105200029033021070240200428020020036b410f4b0d00200120034110108101200228020021030b2002200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41063a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41073a0000200141086a2202200341016a2203360200200028020c21060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028021021000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41083a0000200141086a2202200341016a2203360200200028020c21060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200141046a2802002102024020002d00104108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0010200041116a2d0000200041126a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41093a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041096a2102200128020020036a410a3a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028022c21020240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a200341046a3602002000280230200041386a280200200110d6010f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a410b3a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a411c3a00002002200341016a2203360200024020002d00084101460d000240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020c21000240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20003600002002200341046a3602000f0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2204200341016a2202360200200028022c21080240200628020020026b41034b0d00200120024104108101200428020021020b200041096a2103200128020020026a20083600002004200241046a22023602000240200141046a220628020020026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141086a2204200241206a2203360200200028023021020240200628020020036b41034b0d00200120034104108101200428020021030b200128020020036a20023600002004200341046a2203360200200028023421020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a2203360200200041c0006a2903002105200029033821070240200428020020036b410f4b0d00200120034110108101200228020021030b200128020020036a22042005370008200420073700002002200341106a2203360200200041d0006a2903002105200029034821070240200141046a28020020036b410f4b0d00200120034110108101200141086a28020021030b200141086a200341106a360200200128020020036a22012005370008200120073700000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a411e3a00002002200341016a220336020002400240024020002d00040e03000102090b0240200141046a22022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a220336020020022802002102024020002d00084108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0008200041096a2d00002000410a6a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041056a2100200128020020036a41013a0000200141086a2202200341016a22033602000240200428020020036b411f4b0d00200120034120108101200228020021030b200128020020036a22012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200341206a3602000f0b0240200141046a22022802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a220336020020022802002102024020002d00084108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0008200041096a2d00002000410a6a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b0240200141046a2204280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a412a3a00002002200341016a220336020020042802002102024020002802044101460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2206200341016a360200200028020821032001200041106a280200220010d2012000450d062000410574210420062802002100200141046a210803400240200828020020006b411f4b0d00200120004120108101200628020021000b200128020020006a22022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a2900003700002006200041206a2200360200200341206a2103200441606a22040d000c070b0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a2206200341016a360200200028020821032001200041106a280200220010d2012000450d052000410574210420062802002100200141046a210803400240200828020020006b411f4b0d00200120004120108101200628020021000b200128020020006a22022003290000370000200241186a200341186a290000370000200241106a200341106a290000370000200241086a200341086a2900003700002006200041206a2200360200200341206a2103200441606a22040d000c060b0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41d0003a00002002200341016a2203360200024002400240024002400240024020002d00040e07000102030405060b0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041056a2102200128020020036a41003a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200041256a2108200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a2203360200200028024821020240200141046a220428020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2002360000200141086a2202200341046a3602002008200110ff02200028024c210302402004280200200228020022006b41034b0d00200120004104108101200228020021000b200128020020006a20033600002002200041046a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041256a2108200041056a2102200128020020036a41013a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a3602002008200110ff0220002d004521020240200141046a220428020020062802002203470d00200120034101108101200141086a28020021030b200128020020036a20023a0000200141086a2202200341016a2203360200200028024821060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a2203360200200028024c21000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b200041056a21000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a3602002000200110ff020f0b200041056a21000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a3602002000200110ff020f0b200041056a21020240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a2206200341016a3602002002200110ff022004280200210220062802002103024020002d00284108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0028200041296a2d00002000412a6a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b200041056a21020240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a2206200341016a3602002002200110ff022004280200210220062802002103024020002d00284108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0028200041296a2d00002000412a6a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b200041056a21040240200141046a22062802002003470d00200120034101108101200141086a28020021030b200128020020036a41063a0000200141086a2202200341016a3602002004200110ff022000280228210402402006280200200228020022036b41034b0d00200120034104108101200228020021030b200128020020036a20043600002002200341046a2203360200200028022c21000240200141046a28020020036b41034b0d00200120034104108101200141086a28020021030b200128020020036a2000360000200141086a200341046a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41d1003a00002002200341016a220336020002400240024002400240024020002d00010e06000102030405090b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41033a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41043a0000200141086a200341016a3602000f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41053a0000200141086a200341016a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41da003a00002002200341016a22033602000240200041086a2d00004108460d000240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200028020421060240200428020020036b41034b0d00200120034104108101200228020021030b200128020020036a20063600002002200341046a36020020002d0008200041096a2d00002000410a6a2d0000200110b9040f0b0240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602000f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41db003a00002002200341016a220336020002400240024020002d00040e03000102040b0240200141046a22022802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a220336020020022802002102024020002d00084108460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a36020020002d0008200041096a2d00002000410a6a2d0000200110b9040f0b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a3602000f0b0240200141046a22062802002003470d00200120034101108101200141086a28020021030b200041056a2102200128020020036a41013a0000200141086a2208200341016a22043602000240200628020020046b411f4b0d00200120044120108101200828020021040b200041256a2103200128020020046a22062002290000370000200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a2900003700002008200441206a22023602000240200141046a220628020020026b411f4b0d00200120024120108101200141086a28020021020b200128020020026a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141086a200241206a2203360200200628020021020240024020002d00454101460d00024020022003470d00200120034101108101200141086a28020021030b200128020020036a41003a00000c010b024020022003470d00200120034101108101200141086a28020021030b200128020020036a41013a00000b200141086a2202200341016a220336020020002f014621000240200141046a28020020036b41014b0d00200120034102108101200228020021030b200128020020036a20003b00002002200341026a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041056a2102200128020020036a41023a0000200141086a2206200341016a22033602000240200428020020036b411f4b0d00200120034120108101200628020021030b200041c5006a2108200041256a2100200128020020036a22042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002006200341206a22033602000240200141046a28020020036b411f4b0d00200120034120108101200141086a28020021030b200128020020036a22022000290000370000200241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a290000370000200141086a200341206a3602002008200110ff020f0b0240200141046a280200200141086a22022802002203470d00200120034101108101200228020021030b200128020020036a41e3003a00002002200341016a2203360200200041106a2102024020002903084201510d000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a200341016a220336020002400240024020022802000e03000102040b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200128020020036a41003a0000200141086a2202200341016a2203360200200029031821050240200428020020036b41074b0d00200120034108108101200228020021030b200128020020036a20053700002002200341086a3602000f0b0240200141046a22042802002003470d00200120034101108101200141086a28020021030b200041206a2106200128020020036a41013a0000200141086a2202200341016a2203360200200029031821050240200428020020036b41074b0d00200120034108108101200228020021030b200128020020036a20053700002002200341086a3602002006200110c6050f0b200041186a21000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41023a0000200141086a200341016a3602002000200110c6050f0b200041a0076a2104200041d8036a21000240200141046a2802002003470d00200120034101108101200141086a28020021030b200128020020036a41013a0000200141086a200341016a3602002002200110e0042000200110e0042004200110e9040b0bd00101037f230041206b220224000240200141016a22032001490d00200041046a280200220441017422012003200120034b1b22014104200141044b1b220141ffffff3f712001462103200141057421010240024020040d00200241003602100c010b200241186a410136020020022004410574360214200220002802003602100b200220012003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410576360200200241206a24000f0b1034000b130020004106360204200041c0c1c9003602000b130020004103360204200041e8bbc3003602000b130020004108360204200041c8ddc4003602000b130020004101360204200041c4adc0003602000b130020004101360204200041e4afc0003602000b130020004103360204200041ecaac0003602000b1300200041033602042000419c9cc6003602000b130020004103360204200041aca9c3003602000b130020004105360204200041f8bec0003602000b130020004103360204200041d0b8c0003602000b13002000410336020420004184afc5003602000b130020004109360204200041b0b0c5003602000b13002000410c360204200041d0fcc8003602000b130020004102360204200041fc91c1003602000b130020004103360204200041a8cfc4003602000b1300200041023602042000418498c2003602000b130020004107360204200041bcb6c7003602000b130020004106360204200041a8cbc8003602000b130020004102360204200041b0b1c0003602000b13002000410336020420004194b6c1003602000b130020004102360204200041e89ec1003602000b6001017f200028020022002000280200417f6a2201360200024020010d002000280208200028020c2802001102000240200028020c280204450d00200028020810390b200041046a22012001280200417f6a220136020020010d00200010390b0bb00101027f410021020240200028020022032802082001200328020c28020c110100450d00200041286a2d00002100024020012802004123460d00200041ff01714101470f0b02400240024002400240024020012d00042201417e6a0e050001020503050b200041ff0171450d030c050b200041ff0171450d020c040b200041ff0171450d010c030b200041ff01710d020b410121020c010b41012102200041ff01714101470d0020014109460f0b20020b900201027f410021020240200028020022032802082001200328020c28020c110100450d00200041286a2d00002103024020012802004123460d00200341ff017141014721020c010b02400240024002400240024020012d00042201417e6a0e050001020503050b200341ff0171450d030c050b200341ff0171450d020c040b200341ff0171450d010c030b200341ff01710d020b410121020c010b41012102200341ff01714101470d00200141094621020b200028020022002000280200417f6a2201360200024020010d002000280208200028020c2802001102000240200028020c280204450d00200028020810390b200041046a22012001280200417f6a220136020020010d00200010390b20020b040041010b040041010b040041010bca0102017f027e230041206b220224004200210342a08d06210402400240024002400240024020012d00000e0b0404040505050005050501050b200141106a10ea082201450d01200241106a200110a006200229031042a08d067c21040c040b2002200141046a2802001097072002290300a7450d010b420121030c020b200229030842a08d067c21040c010b200141186a2802004198046c2201450d00200141e87b6a4198046ead42a08d067e42c09a0c7c21040b2000200437030820002003370300200241206a24000ba40204017f027e037f017e230041306b22022400420021034200210402400240024020012d00000e0b0101010202020202020200020b200241206a200141046a2802001098072002280220410047ad2104200229032821030c010b42002104200141186a2802004198046c2205450d00200141106a280200220620056a2107420021030340024020062d00004107470d002006410c6a28020041e0076c2205450d00200628020421010340200241106a20011097074201210402402002280210450d000c040b20022903182108200220011098072002290300a70d03200141e0076a2101200820037c20022903087c2103200541a0786a22050d000b0b20064198046a22062007470d000b420021040b2000200337030820002004370300200241306a24000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041e0f8c5003602182000200041186a360210200041e8f8c5001043000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041f4a3c8001043000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041c0f9c5001043000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041e4b3c4001043000b4d01017f230041206b22002400200041146a410136020020004201370204200041bcfaca003602002000410436021c200041eca3c8003602182000200041186a360210200041e0edc5001043000bcb0101037f230041206b22022400200041046a280200220341017422042001200420014b1b22014104200141044b1b220141ffffffff00712001464103742104200141047421010240024020030d00200241003602100c010b200241106a41086a410836020020022003410474360214200220002802003602100b200220012004200241106a1049200241086a28020021010240024020022802004101470d002001450d011030000b20002002280204360200200041046a2001410476360200200241206a24000f0b1034000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210e2030b0f0b200041086a10af01200041046a2202280200109f07200228020010390bcc0d07047f017e017f017e067f027e017f230041f0066b22022400200141246a2802002103200141206a2802002104200141106a2802002105200141146a29020021062001411c6a2802002107200141046a29020021082001410c6a2d000021092001410d6a2f0000210a2001280228210b2001280200210c200241136a2001410f6a2d00003a00002002200a3b0011200220093a001020022008370308200220073602e806200220063703e0062006a7210a2008a7210d0240024002400240024002400240024002400240200c41ff01714102460d00200c41807e71210e2002280210220941087621010c010b200229020c210f200220022902e40622103702e4062002200a3602e00602402008a741ff0171450d0020022903e00621062002200d3602082010422088a721072002200f37020c200f422888a72101200f422088a721092006a7210a20022903082208a7210d4102210c4100210e0c010b200b200b280200417f6a2201360200200f422088a7210c41022107410921094100210a024020010d00200b280208200b28020c2802001102000240200b28020c280204450d00200b28020810390b200b41046a22012001280200417f6a220136020020010d00200b10390c020b0c010b200220013b0011200241136a20014110763a0000200220093a001020022008370308200220073602e806200220063703e006200e410876211102400240200c41ff01710d00200e411076210120022902e4062108200229020c2106201141ff01714101460d012002200d3602082002200a3602e0062001410874201141ff0171722111200441ffff037121042002200637020c2006422888a721012006422088a72109200220083702e4062008422088a721072002290308210820022903e00621064100210c0b200241a7036a20014110763a0000200241a5036a20013b0000200241bc036a2003360200200241b8036a2004360200200241b4036a2007360200200241ac036a200637020020024198036a41106a2005360200200241a4036a20093a00002002200b3602c0032002200837029c0320022011410874200c41ff0171220c7236029803411010382201450d08200141ac81c40036020c200141013602082001428180808010370200200c0d0220014100360200200128020c280204210c20022d009903450d050240200c450d00200128020810390b200141046a220c200c280200417f6a220c360200200c450d030c040b200220083e00e706200241eb066a20084220883c00002002200d36010a2002200637010e200220053a00162002200a3600e30620022005410876220c3b01e0062002200c4110763a00e206200228000b210a200229000f210620022802e406210720022802e006211120022d000a2109200b200b280200417f6a220536020020044118742008422888a772210c200441087621042008420888210f200120094110747221014102210920050d00200b280208200b28020c2802001102000240200b28020c280204450d00200b28020810390b200b41046a22052005280200417f6a220536020020050d00200b10390b20024194036a41026a200241dd066a41026a2d00003a0000200241e0066a41086a200241d0066a41086a280200360200200220022f00dd063b019403200220022902d0063703e006200241086a200241c8036a41880310c30a1a200fa7210b420121080c040b200141003602000240200128020c280204450d00200128020810390b200141046a220c200c280200417f6a220c360200200c0d010b200110390b200b200b280200417f6a22013602004209210820010d02200b280208200b28020c2802001102000240200b28020c280204450d00200b28020810390b200b41046a22012001280200417f6a220136020020010d02200b10390c020b0240200c450d00200128020810390b200141046a220c200c280200417f6a220c3602000240200c0d00200110390b200b200b280200417f6a2201360200024020010d00200b280208200b28020c2802001102000240200b28020c280204450d00200b28020810390b200b41046a22012001280200417f6a220136020020010d00200b10390b420021080b200020093a0008200020022f0194033b00292000410b6a20014110763a0000200041096a20013b0000200041286a20043a0000200041246a200c360200200041206a200b3602002000411c6a2007360200200041186a2011360200200041106a20063703002000410c6a200a3602002000412c6a4102360200200041306a20022903e0063703002000412b6a20024194036a41026a2d00003a0000200041386a200241e8066a280200360200200041c0006a200241086a41880310c30a1a0b20002008370300200241f0066a24000f0b1030000bef0301037f230041a0166b22032400200341b8076a200141c80310c30a1a0240024020032903b8074201520d0020032d00c0074101470d0020032802c4072101200341980b6a4200370300200341900b6a22044200370300200341880b6a4200370300200342003703800b200341800b6a41f1b5c900410d10f2012004418bb6c900410c10f201200341e80e6a200341800b6a412010b20220032802b80f210420032802f80f2105200341800b6a200241e80310c30a1a200341003602f00e200342013703e80e200341e80e6a4100410110810120032802e80e20032802f00e22026a41003a00002003200241016a3602f00e200341800b6a200341e80e6a10e904024002404100200420054102461b2001200341e80e6a109f040d00200341800b6a10d203200341b8076a10af01411b21010c010b2003200341b4126a41e80310c30a220141800b6a10d203200141b8076a10af01410f21010b20002001360200200041d0036a200341e80310c30a1a0c010b200341e80e6a41046a200141c80310c30a2101200341ec036a200341e80e6a41cc0310c30a1a200341800b6a200341ec036a41046a41c80310c30a1a200041d0036a200241e80310c30a1a2001200341800b6a41c80310c30a1a2000410b360200200041046a200341e80e6a41cc0310c30a1a0b200341a0166a24000bc60101037f200028022822012001280200417f6a220236020020002d0001210302400240024020002d000022000d0020020d022001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a22023602002002450d010c020b20020d012001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d010b200110390b200320007241ff01714100470b130020002002ad4220862001ad84101b10a40a0b8c3a04147f017e047f027e230041a0236b22032400024002400240024002400240024002400240024002400240024002400240024002400240024020012f0100417f6a0e03000102000b2001410c6a2802002104200141086a2802002105200141046a2802002106200341e8076a41026a200241246a2d00003a00002003200241226a22072f01003b01e80720022d0001210820022802282101200241046a2802002209210a4101210b02400240024020022d0000220c0e03000201000b4100210b4102210d2009210a0240024020080e03000103000b4100210d2009210a4100210b0c020b4101210d2009210a0c010b4102210a024002400240200941ff01710e03000102000b4100210a0c010b200341e0176a41026a200741026a2d00003a0000200320072f01003b01e0174101210a0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8174102210b0b2001280200220741016a41014d0d112002411c6a280200210e200241186a280200210f200241146a2802002110200241106a28020021112002410c6a2802002112200241086a2802002113200241026a2f0100211420034188186a200241206a2f010022153b010020034184186a200e36020020034180186a200f360200200341fc176a2010360200200341f8176a2011360200200341f4176a2012360200200341f0176a20133602002001200741016a3602002003418a186a20032802d8173601002003418e186a200341d8176a41046a2f01003b0100200320143b01ea172003200d3a00e9172003200b3a00e81720032001360290182003200941807e712216200a41ff0171723602ec172006200441c0076c6a210a200341e8176a10a2072102024020040d0042002117200621020c0b0b20034198086a410472211820020d09200341ba106a211942002117410021022006210d03400240200d280200220b4125470d00200d41c0076a21020c0c0b200341286a200d41046a41bc0710c30a1a2003200b360298082018200341286a41bc0710c30a1a200341d80f6a20034198086a10a006200341e8176a20034198086a41c00710c30a1a2009210b4101211a024002400240200c0e03000201000b4100211a410221072009210b0240024020080e03000103000b410021072009210b4100211a0c020b410121072009210b0c010b4102211a4102210b024002400240200941ff01710e03000102000b4100210b0c010b200341e0176a41026a200341e8076a41026a2d00003a0000200320032f01e8073b01e0174101210b0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8170b200128020041016a221b41014d0d12201920032802d8173601002001201b360200201941046a200341d8176a41046a2f01003b0100200320153b01b8102003200e3602b4102003200f3602b010200320103602ac10200320113602a810200320123602a410200320133602a010200320143b019a10200320073a0099102003201a3a009810200320013602c01020032016200b41ff01717236029c10200341e80f6a200341e8176a20034198106a10e3030240024020032903f00f4201510d0020032903d80f211c0c010b20032903d80f221c20032903f80f221d201d201c561b211c0b427f2017201c7c221c201c2017541b2117024020032903e80f4201510d00200241016a2102200d41c0076a220d200a470d010c0d0b0b200d41c0076a21090c0d0b200141046a280200210a20012f01022118200341086a41026a200241246a2d00003a000020034190086a41026a200241276a2d00003a00002003200241226a2f01003b01082003200241256a2f00003b0190082002280228210141002109200241046a280200220c211a02400240024020022d00000e03000201000b4101210920022d000141ff0171410146210d200c211a0c010b4102211a024002400240200c41ff01710e03000102000b4100211a0c010b4101211a0b0b2001280200220b41016a220741014d0d10200241206a2f0100210e2002411c6a280200210f200241186a2802002110200241146a2802002111200241106a28020021122002410c6a2802002113200241086a2802002114200241026a2f01002102200120073602002001200b360200024002402009450d00200d4101734101710d00411210382209450d03200941002900c4a548370000200941086a41002900cca5483700002003429280808080023702ec17200320093602e817200341e8176a4110412010810120032802e817220d20032802f017220b6a2209200e3b001e2009200f36001a20092010360016200920113600122009201236000e2009201336000a200920143600062009200c41807e71201a41ff017172360002200920023b00002003200b41206a22023602f017024020032802ec17220920026b41014b0d00200341e8176a2002410210810120032802e817210d20032802ec17210920032802f01721020b200d20026a20183b000020034198106a200d200241026a109c0102402009450d00200d10390b2003412036029c08200320034198106a36029808200341e8176a20034198086a1080024100210d4100210b410021074100211a4100210c410021184100210e4100210f41002110024020032d00e8174101460d0020034187186a2f0000210d20034183186a280000210b200341ff176a2800002107200341fb176a280000211a200341f7176a280000210c200341f3176a280000211820032800ef17210e20032800eb17210f20032f00e91721100b411010382202450d03200241ac81c40036020c200241013602082002428180808010370200411010382209450d032009419481c40036020c20094101360208200942818080801037020020022002280200417f6a2211360200024020110d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22112011280200417f6a221136020020110d00200210390b20092009280200417f6a2202360200024020020d002009280208200928020c2802001102000240200928020c280204450d00200928020810390b200941046a22022002280200417f6a220236020020020d00200910390b200341e80f6a200a10a00620034198106a200a41c00710c30a1a02400240200128020820034198106a200128020c28020c1101000d00200341b0086a41003a0000200341b8086a41023a000020012001280200417f6a2202360200200342003703a0082003420137039808024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b20034198106a10e20320032903e80f21170c010b200341e8176a20034198106a41c00710c30a1a200341c8006a200d3b0100200341c4006a200b360200200341c0006a20073602002003413c6a201a360200200341286a41106a200c360200200341346a2018360200200341306a200e360200200341ca006a20032f01083b0100200341cc006a200341086a41026a2d00003a0000200341cd006a20032f0190083b0000200341cf006a20034190086a41026a2d00003a00002003200f36022c200320103b012a20034180023b01282003200136025020034198086a200341e8176a200341286a10e303024020032903a0084201510d0020032903e80f21170c010b20032903e80f221720034198086a41106a290300221c201c2017561b21170b201742e8c9aa3e7c221d20175421014201211c024020032903980842015222090d00200320032800b10836028008200320032900b9083703f0222003200341b4086a280000360083082003200341c0086a2900003700f722200341b8086a2d000021020b427f201d20011b2117200a10392009450d0120032003280083083600eb0720032003280280083602e807200041186a41003a0000200041106a201737030020004201370308200020032802e8073600192000411c6a20032800eb07360000200042003703000c110b20012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d00200110390b200a10a206200a10394200211c410221020b20032003280083083600eb0720032003280280083602e807200320032903f0223703d80f200320032900f7223700df0f200041186a41003a0000200041106a20173703002000201c370308200020032802e8073600192000411c6a20032800eb07360000200041206a20023a0000200020032903d80f370021200041286a20032900df0f370000200042013703000c0f0b2001410c6a2802002104200141086a2802002105200141046a28020021064102210b200341246a41026a200241246a2d00003a00002003200241226a2f01003b0124200241046a2802002101200241206a2f0100210e2002411c6a280200210f200241186a2802002110200241146a2802002111200241106a28020021122002410c6a2802002113200241086a2802002114200241026a2f0100211920022d0001210820022d0000210c2002280228210210c8092001210a4101210d024002400240200c0e03000201000b4100210d410221092001210a0240024020080e03000103000b410021092001210a4100210d0c020b410121092001210a0c010b024002400240200141ff01710e03000102000b4100210b0c010b200341e0176a41026a200341246a41026a2d00003a0000200320032f01243b01e0174101210b0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8174102210d200b210a0b2002280200220b41016a41014d0d0f20034188186a200e3b010020034184186a200f36020020034180186a2010360200200341fc176a2011360200200341f8176a2012360200200341f4176a2013360200200341f0176a20143602002002200b41016a3602002003418a186a20032802d8173601002003418e186a200341d8176a41046a2f01003b0100200320193b01ea17200320093a00e9172003200d3a00e81720032002360290182003200141807e712216200a41ff0171723602ec172006200441c0076c6a210a200341e8176a10a2072109024020040d0042002117200621010c050b20034198086a410472211820090d01200341ba106a211b420021174100210d20062109024003402009280200220b4125460d01200341286a200941046a41bc0710c30a1a2003200b360298082018200341286a41bc0710c30a1a200341d80f6a20034198086a10a006200341e8176a20034198086a41c00710c30a1a2001210b4101211a024002400240200c0e03000201000b4100211a410221072001210b0240024020080e03000103000b410021072001210b4100211a0c020b410121072001210b0c010b4102211a4102210b024002400240200141ff01710e03000102000b4100210b0c010b200341e0176a41026a200341246a41026a2d00003a0000200320032f01243b01e0174101210b0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8170b200228020041016a221541014d0d11201b20032802d81736010020022015360200201b41046a200341d8176a41046a2f01003b01002003200e3b01b8102003200f3602b410200320103602b010200320113602ac10200320123602a810200320133602a410200320143602a010200320193b019a10200320073a0099102003201a3a009810200320023602c01020032016200b41ff01717236029c10200341e80f6a200341e8176a20034198106a10e3030240024020032903f00f4201510d0020032903d80f211c0c010b20032903d80f221c20032903f80f221d201d201c561b211c0b427f2017201c7c221c201c2017541b2117024020032903e80f4201510d00200d41016a210d200941c0076a2209200a470d010c080b0b200941c0076a21010c030b200941c0076a21010c040b1030000b20034192236a21154100210d200621094200211703402009280200220b4125460d02200341286a200941046a41bc0710c30a1a2003200b360298082018200341286a41bc0710c30a1a200341d80f6a20034198086a10a00620034198106a20034198086a41c00710c30a1a2001210b4101211a024002400240200c0e03000201000b4100211a410221072001210b0240024020080e03000103000b410021072001210b4100211a0c020b410121072001210b0c010b4102211a4102210b024002400240200141ff01710e03000102000b4100210b0c010b200341e0176a41026a200341246a41026a2d00003a0000200320032f01243b01e0174101210b0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8170b200228020041016a221b41014d0d0e2002201b360200200341e0176a41046a221b200341d8176a41046a2f01003b0100200320032802d8173602e01702400240200228020820034198106a200228020c28020c1101000d0020022002280200417f6a220b360200200341003a008010200342003703f00f200341023a008810200342013703e80f0240200b0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a220b200b280200417f6a220b360200200b0d00200210390b20034198106a10e2034200211c0c010b200341e8176a20034198106a41c00710c30a1a201520032802e017360100201541046a201b2f01003b01002003200e3b0190232003200f36028c23200320103602882320032011360284232003201236028023200320133602fc22200320143602f82220032016200b41ff0171723602f422200320193b01f222200320073a00f1222003201a3a00f0222003200236029823200341e80f6a200341e8176a200341f0226a10e30320032903f00f211c0b02400240201c4200520d0020032903d80f211c0c010b20032903d80f221c20032903f80f221d201d201c561b211c0b427f2017201c7c221c201c2017541b2117024020032903e80f4201510d00200d41016a210d200941c0076a2209200a470d010c050b0b200941c0076a21010b200320032800811036029008200320032900891037038008200320034184106a28000036009308200320034190106a29000037008708200d41016aad42d08ea7017e211c20034188106a2d000021090240200a2001460d000340200110f004200a200141c0076a2201470d000b0b201c20177c211702402005450d00200541c0076c450d00200610390b20174280cc9c0a7c211720032003280093083600fb0720032003280290083602f80720032003290087083700ef0720032003290380083703e807200320032802f80736021c200320032800fb0736001f200320032903e807370308200320032900ef0737000f10c90920022002280200417f6a2201360200024020010d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b2003200328021c360298102003200328001f36009b10200320032903083703e8172003200329000f3700ef17200041186a41003a0000200041106a2017370300420121172000420137030820002003280298103600192000411c6a200328009b10360000200041206a20093a0000200020032903e817370021200041286a20032900ef173700000c030b200941c0076a21010b200a2001460d000340200110f004200a200141c0076a2201470d000b0b02402005450d00200541c0076c450d00200610390b200341e8176a41086a41083a0000200341123a00e817200341e8176a10fc0120032003280093083600fb0720032003280290083602f807200320032802f80736021c200320032800fb0736001f10ca0920022002280200417f6a22013602002004ad42d08ea7017e20177c4280cc9c0a7c2117024020010d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b2003200328021c360298102003200328001f36009b10200041186a41003a0000200041106a20173703002000420137030820002003280298103600192000411c6a200328009b10360000420021170b200020173703000c070b20034192236a211b410021022006210d4200211702400340200d280200220b4125460d01200341286a200d41046a41bc0710c30a1a2003200b360298082018200341286a41bc0710c30a1a200341d80f6a20034198086a10a00620034198106a20034198086a41c00710c30a1a2009210b4101211a024002400240200c0e03000201000b4100211a410221072009210b0240024020080e03000103000b410021072009210b4100211a0c020b410121072009210b0c010b4102211a4102210b024002400240200941ff01710e03000102000b4100210b0c010b200341e0176a41026a200341e8076a41026a2d00003a0000200320032f01e8073b01e0174101210b0b200341d8176a41046a200341e0176a41046a2f01003b0100200320032801e0173602d8170b200128020041016a221941014d0d092001201936020020034180086a41046a2219200341d8176a41046a2f01003b0100200320032802d8173602800802400240200128020820034198106a200128020c28020c1101000d0020012001280200417f6a220b360200200341003a008010200342003703f00f200341023a008810200342013703e80f0240200b0d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a220b200b280200417f6a220b360200200b0d00200110390b20034198106a10e2034200211c0c010b200341e8176a20034198106a41c00710c30a1a201b200328028008360100201b41046a20192f01003b0100200320153b0190232003200e36028c232003200f3602882320032010360284232003201136028023200320123602fc22200320133602f82220032016200b41ff0171723602f422200320143b01f222200320073a00f1222003201a3a00f0222003200136029823200341e80f6a200341e8176a200341f0226a10e30320032903f00f211c0b02400240201c4200520d0020032903d80f211c0c010b20032903d80f221c20032903f80f221d201d201c561b211c0b427f2017201c7c221c201c2017541b211720032903e80f4201510d04200241016a2102200d41c0076a220d200a470d000c030b0b200d41c0076a21020b200a2002460d000340200210f004200a200241c0076a2202470d000b0b02402005450d00200541c0076c450d00200610390b200341e8176a41086a41083a0000200341123a00e817200341e8176a10fc0120012001280200417f6a22023602002004ad42b896a7017e20177c42d884c9097c211720020d032001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a22023602002002450d020c030b200d41c0076a21090b20034198106a41206a20034190106a290300221c37030020034198106a41186a200341e80f6a41206a290300221d37030020034198106a41106a200341e80f6a41186a29030037030020034198106a41086a200341e80f6a41106a290300370300200320032903f00f37039810200341e8176a41106a201c3e0200200341e8176a41086a201d370300200341123a00e817200320023602ec17200241016aad42b896a7017e211c200341e8176a10fc010240200a2009460d000340200910f004200a200941c0076a2209470d000b0b201c20177c211702402005450d00200541c0076c450d00200610390b201742d884c9097c211720012001280200417f6a220236020020020d012001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22022002280200417f6a220236020020020d010b200110390b200320032800e817360298102003200341eb176a28000036009b10200041186a41003a0000200041106a20173703002000420137030820002003280298103600192000411c6a200328009b10360000200042003703000b200341a0236a24000f0b00000b8a0301037f2000280228210141002102024002400240024020002d00000e0400010102010b20002d0001210020012001280200417f6a2203360200024020030d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22032003280200417f6a220336020020030d00200110390b200041ff0171450d01411010382200450d02200041ac81c40036020c200041013602082000428180808010370200411010382201450d022001419481c40036020c20014101360208200142818080801037020020002000280200417f6a220236020020020d002000280208200028020c2802001102000240200028020c280204450d00200028020810390b200041046a22022002280200417f6a220236020020020d00200010390b20012001280200417f6a22003602004101210220000d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22002000280200417f6a220036020020000d00200110390b20020f0b1030000baf1303127f017e087f230041e0006b220424000240200341e500490d0041002802a8fe4a450d00200441146a4102360200200420033602002004410236020c200441e4003602042004200441046a3602102004200436020841002802a4fe4a210541002802a0fe4a210641002802acfe4a2107200441286a4203370300200441cc006a41d2d4c600ad4280808080900c84370200200441c0006a41c1d4c600ad4280808080900284370300200441386a4202370300200441206a4113360200200441346a200441086a36020020044198e8c60036022420044281808080c0e60037025420044100360248200441f8e8c60036021c20044101360218200641f4ddca00200741024622071b200441186a200541b0a7c00020071b2802101103000b02400240200141ffffff3f712001470d0020014105742208417f4c0d000240024020080d00410121090c010b200810382209450d0220084105762107200921052008210603402006450d0120052000290000370000200541086a200041086a290000370000200541106a200041106a290000370000200541186a200041186a290000370000200541206a2105200641606a2106200041206a21002007417f6a22070d000b0b2009200110a807200441186a108f092004280218210a200428021c210b024020042802202200450d00200a20004105746a210c200441186a41086a2107200a210d0340200441186a41186a200d41186a290000370300200441186a41106a200d41106a2900003703002007200d41086a2900003703002004200d290000370318200441086a200441186a109109200441186a2004280208220e2004280210220f10970802400240200428022022100d00200e200f10fd010c010b200428023821112004280234211220042802302113200428022c2114200428022421152004290318211620102117024020042802284105742200450d00201020006a21182010211920102117034020072019290000370000200741186a221a201941186a290000370000200741106a221b201941106a290000370000200741086a221c201941086a290000370000201941206a2119024002402001450d0041002100200121062001210503402009200641017620006a22064105746a2007412010c60a221d450d0220052006201d410048221d1b2205200641016a2000201d1b22006b2106200520004b0d000b0b20172007290000370000201741186a201a290000370000201741106a201b290000370000201741086a201c290000370000201741206a21170b20192018470d000b0b201720106b211e2014211a024020124105742200450d00201420006a2112201421192014211a034020072019290000370000200741186a221b201941186a290000370000200741106a221c201941106a290000370000200741086a2218201941086a290000370000201941206a2119024002402001450d0041002100200121062001210503402009200641017620006a22064105746a2007412010c60a221d450d0220052006201d410048221d1b2205200641016a2000201d1b22006b2106200520004b0d000b0b201a2007290000370000201a41186a201b290000370000201a41106a201c290000370000201a41086a2018290000370000201a41206a211a0b20192012470d000b0b201e41057521062004410036022020044201370318200441186a4100410410810120042802182205200428022022006a20163e00002004200041046a2200360220201a20146b21192016422088a7211d0240200428021c20006b41034b0d00200441186a2000410410810120042802182105200428022021000b2019410575211b200520006a201d3600002004200041046a360220200441186a200610d2010240201e450d00201e417f201e417f4a1b2200410120004101481b201020176b2200201e2000201e4a1b4105766c410574211d200428022021052010210003400240200428021c20056b411f4b0d00200441186a20054120108101200428022021050b200428021820056a22062000290000370000200641086a200041086a290000370000200641106a200041106a290000370000200641186a200041186a2900003700002004200541206a2205360220200041206a2100201d41606a221d0d000b0b200441186a201b10d2012004280220210502402019450d002019417f2019417f4a1b2200410120004101481b2014201a6b22002019200020194a1b4105766c410574211d2014210003400240200428021c20056b411f4b0d00200441186a20054120108101200428022021050b200428021820056a22062000290000370000200641086a200041086a290000370000200641106a200041106a290000370000200641186a200041186a2900003700002004200541206a2205360220200041206a2100201d41606a221d0d000b0b0240200428021c220620056b41034b0d00200441186a20054104108101200428021c2106200428022021050b2004280218220020056a2011360000200e200f2000200541046a10a30202402006450d00200010390b0240201541ffffff3f71450d00201010390b201341ffffff3f71450d00201410390b200d41206a210d0240200428020c450d00200e10390b200d200c470d000b0b0240200b41ffffff3f71450d00200a10390b200441306a22004200370300200441286a221d4200370300200441186a41086a2205420037030020044200370318200441086a41c8e8c600410a10f2012005200441086a41086a220629000037030020042004290008370318200441086a41caa4c800410710f20120002006290000370300201d200429000837030020034105744104722200417f4c0d00200010382205450d01200441003602102004200036020c20042005360208200441086a200310d2010240024020030d0020042802082107200428021021000c010b200341057421062004280210210003400240200428020c20006b411f4b0d00200441086a20004120108101200428021021000b2004280208220720006a22052002290000370000200541086a200241086a290000370000200541106a200241106a290000370000200541186a200241186a2900003700002004200041206a2200360210200241206a2102200641606a22060d000b0b200441186a41202007200010a3020240200428020c450d00200710390b200441306a4200370300200441286a4200370300200441186a41086a2200420037030020044200370318200441086a41c8e8c600410a10f2012000200441086a41086a220529000037030020042004290008370318200441086a41d1a4c800410510f201201d41086a2005290000370000201d2004290008370000200441186a412010fd0102402008450d00200910390b200441e0006a24000f0b1034000b1030000b5b01017f02404120103822020d001030000b20022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a290000370000200041202002412010a302200210390b8b0e090f7f017e017f017e017f027e017f017e077f230041306b2202240002400240200141144b0d00200141014d0d01200141057420006a41406a21034101210403402003200441016a220410f809200341606a210320012004470d000c020b0b0240024002402001410176220341ffffff3f712003470d0020034105742205417f4c0d000240200510382206450d0020024200370204200241002802ccdd4a2207360200200041606a2108200041a07f6a21094100210a2001210b03404100210c4101210d0240200b417f6a220e450d000240024002400240024002402000200e4105746a200b410574220f20006a41406a412010c60a4100480d00200b417e6a210e2009200f6a21034100210c4100210403400240200e2004470d00200b210d0c080b200441016a2104200341206a2003412010c60a210d200341606a2103200d417f4a0d000b200441016a210d2004417f73200b6a210e0c010b2009200f6a2103024003400240200e4101470d004100210e0c020b200e417f6a210e200341206a2003412010c60a2104200341606a210320044100480d000b0b200b200e490d01200b20014b0d02200b200e6b220d4101762210450d002008200f6a21032000200e4105746a21040340200341086a220f2900002111200341106a22122900002113200341186a221429000021152004290000211620042003290000370000200441186a2217290000211820172015370000200441106a2217290000211520172013370000200441086a22172900002113201720113700002014201837000020122015370000200f201337000020032016370000200341606a2103200441206a21042010417f6a22100d000b0b0240200e0d00200e210c0c050b0240200d41094d0d00200e210c0c050b200b20014b0d02200b200e6b210d200e417f6a21032008200e4105746a21040340200b2003490d092004200d41016a220d10f8092003417f6a220e20034f0d04200441606a2104200e2103200d410a490d000c040b0b200e200b4194acc900105f000b200b20014194acc9001055000b200b200e417f6a2203490d05200b200141a4acc9001055000b200e41016a210c0b0240200a2002280204470d002002200a10a002200228020021072002280208210a0b2007200a4103746a2203200d3602042003200c3602002002200228020841016a221936020802400240201941024f0d002019210a0c010b20022802002107024003400240024002400240024020072019220a417f6a22194103746a2203280200450d00200a41037420076a220e41746a280200220d200328020422044b0d010b200a4103490d02200328020421042007200a417d6a221a4103746a28020421030c010b200a41024d0d042007200a417d6a221a4103746a28020422032004200d6a4d0d00200a41034d0d04200e41646a2802002003200d6a4b0d040b20032004490d010b200a417e6a211a0b0240024002400240024002400240200a201a41016a22034d0d00200a201a4d0d012007201a4103746a221b280204221c201b2802006a2204200720034103746a221d280200221e490d02200420014b0d03201b41046a211f2000201e4105746a220d201d280204220b410574220e6a2103200441057421102004201e6b220f200b6b2204200b490d042006200d200e10c30a2204200e6a210e200b4101480d05200f200b4c0d05200020106a2112200421040340200d2003200420032004412010c60a410048220f1b2210290000370000200d41186a201041186a290000370000200d41106a201041106a290000370000200d41086a201041086a2900003700002004200441206a200f1b2104200d41206a210d0240200341206a2003200f1b22032012490d00200d21030c080b2004200e490d000b200d21030c060b2003200a41b4acc900103c000b201a200a41c4acc900103c000b201e200441d4acc900105f000b2004200141d4acc9001055000b200620032004410574220e10c30a2212200e6a210e0240200b41014e0d00201221040c020b0240200441014e0d00201221040c020b200820106a2110034020102003200e200e41606a2214200341606a2217412010c60a410048220f1b41606a2204290000370000201041186a200441186a290000370000201041106a200441106a290000370000201041086a200441086a290000370000200e2014200f1b210e0240200d20172003200f1b2203490d00201221040c030b201041606a211020122104200e20124b0d000c020b0b200d2103200421040b20032004200e20046b41607110c30a1a201f201c200b6a360200201b201e360200201d201d41086a200a201a6b41037441706a10c40a1a4101210a201941014b0d000b0b2002200a3602080b200c210b200c450d040c000b0b1030000b1034000b2003200b41a4acc900105f000b0240200228020441ffffffff0171450d00200228020010390b2005450d00200610390b200241306a24000ba107010c7f230041c0006b22042400200442003702042004410028029cde4a220536020020044200370214200420053602102002410020031b21062000410020011b2107200241206a200220031b2108200041206a200020011b2109200020014105746a210a200220034105746a210b2005210c4100210241002103034002400240024020060d002007450d010c020b02402007450d00024020062007412010c60a220d0d00410020092009200a46220d1b2107410020082008200b46220e1b21062009200941206a200d1b21092008200841206a200e1b21080c040b200d417f4a0d02200441206a41186a220d200641186a290000370300200441206a41106a220e200641106a290000370300200441206a41086a220f200641086a29000037030020042006290000370320024020032004280214470d00200441106a2003410110f50220042802102105200428021821030b200520034105746a22062004290320370000200641186a200d290300370000200641106a200e290300370000200641086a200f2903003700002004200341016a2203360218410020082008200b46220d1b21062008200841206a200d1b21080c030b200441206a41186a220d200641186a290000370300200441206a41106a220e200641106a290000370300200441206a41086a220f200641086a29000037030020042006290000370320024020032004280214470d00200441106a2003410110f50220042802102105200428021821030b200520034105746a22072004290320370000200741186a200d290300370000200741106a200e290300370000200741086a200f2903003700002004200341016a220336021841002107410020082008200b46220d1b21062008200841206a200d1b21080c020b2004280204210720042802142106200520032000200110a6070240200641ffffff3f71450d00200510390b0240200741ffffff3f71450d00200c10390b200441c0006a24000f0b200441206a41186a220d200741186a290000370300200441206a41106a220e200741106a290000370300200441206a41086a220f200741086a29000037030020042007290000370320024020022004280204470d0020042002410110f5022004280200210c200428020821020b200c20024105746a22072004290320370000200741186a200d290300370000200741106a200e290300370000200741086a200f2903003700002004200241016a2202360208410020092009200a46220d1b21072009200941206a200d1b21090c000b0b877506087f027e0f7f027e027f037e230041d01b6b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e06000102030405000b200141306a280200210420012d000121052001412c6a2802002106200141286a2802002107200141246a2802002108200341a0016a41186a2001411a6a290000370300200341a0016a41106a200141126a290000370300200341a0016a41086a2001410a6a2900003703002003200141026a2900003703a0012003200436025820034198106a41286a200241286a28020036020020034198106a41206a200241206a29020037030020034198106a41186a200241186a29020037030020034198106a41106a200241106a29020037030020034198106a41086a200241086a290200370300200320022902003703981002400240024020034198106a10a2070d000240200641e4004d0d0041002802a8fe4a450d00200341ec086a41023602002003200636025c200341023602e408200341e4003602a01b2003200341a01b6a3602e8082003200341dc006a3602e00841002802a4fe4a210241002802a0fe4a210141002802acfe4a2104200341a8106a4203370300200341cc106a41d2d4c600ad4280808080900c84370200200341c0106a41c1d4c600ad4280808080900284370300200341b8106a4202370300200341a0106a4113360200200341b4106a200341e0086a36020020034198e8c6003602a41020034281808080b0293702d410200341003602c810200341f8e8c60036029c102003410136029810200141f4ddca00200441024622041b20034198106a200241b0a7c00020041b280210110300200328025821040b200341b0106a22024200370300200341a8106a2201420037030020034198106a41086a220942003703002003420037039810200341a01b6a41c8e8c600410a10f2012009200341a01b6a41086a220a290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f2012002200a290000370300200120032900a01b370300200341e0086a20034198106a10c00420032802e0082202410028029cde4a20021b21010240200420032902e408420020021b220b422088220ca722024f0d0041002802a8fe4a4102490d00200341ec086a4102360200200341023602e408200320023602a01b2003200341a01b6a3602e8082003200341d8006a3602e00841002802a4fe4a210441002802a0fe4a210941002802acfe4a210a200341a8106a4203370300200341cc106a41d2d4c600ad4280808080900c84370200200341c0106a41c1d4c600ad4280808080900284370300200341b8106a4202370300200341a0106a4113360200200341b4106a200341e0086a360200200341b0e8c6003602a41020034281808080d02a3702d410200341003602c810200341f8e8c60036029c102003410236029810200941f4ddca00200a410246220a1b20034198106a200441b0a7c000200a1b2802101103000b2008200610a807200820062001200210a907200541ff01710d01200341b81b6a22024200370300200341b01b6a22044200370300200341a01b6a41086a22054200370300200342003703a01b200341e0086a41c8e8c600410a10f2012005200341e0086a41086a2209290000370300200320032900e0083703a01b200341e0086a41d1a4c800410510f20120022009290000370300200420032900e008370300200341a01b6a412010fd010c020b0240200741ffffff3f71450d00200810390b2003200328005036024820032003290080013703602003200341d3006a28000036004b200320034187016a290000370067200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041206a41023a000020002003290360370021200041286a2003290067370000200042013703000c1c0b20034198106a41186a200341a0016a41186a29030037030020034198106a41106a200341a0016a41106a29030037030020034198106a41086a200341a0016a41086a290300370300200320032903a00137039810200341a01b6a41186a22024200370300200341a01b6a41106a22044200370300200341a01b6a41086a22054200370300200342003703a01b200341e0086a41c8e8c600410a10f2012005200341e0086a41086a2209290000370300200320032900e0083703a01b200341e0086a41d1a4c800410510f20120022009290000370300200420032900e008370300200341a01b6a20034198106a10a7070b2006ad42b0c00f7e200c4288d3fd097e7c210c0240200741ffffff3f71450d00200810390b200c42a0e6f6813a7c210c0240200b42ffffff3f83500d00200110390b200320032800503602482003200341d3006a28000036004b200041186a41003a0000200041106a200c37030020004201370308200020032802483600192000411c6a200328004b360000200042003703000c1a0b200141086a280200210d200141046a28020021082002411a6a290100210b200241196a2d00002101200241186a2d00002106200241166a2f01002104200241156a2d00002107200241146a2d00002105200241126a2f01002109200241116a2d0000210a200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820022d0001211920022d0000211a200228022822022002280200417f6a221b36020002400240201a0d000240201b0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a221a201a280200417f6a221a360200201a0d00200210390b201941ff0171410147211a0c010b4101211a201b0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a221b201b280200417f6a221b360200201b0d00200210390b2003200b3703b81b200320013a00b71b200320063a00b61b200320043b01b41b200320073a00b31b200320053a00b21b200320093b01b01b2003200a3a00af1b2003200e3a00ae1b2003200f3b01ac1b200320103a00ab1b200320113a00aa1b200320123b01a81b200320133a00a71b200320143a00a61b200320153b01a41b200320163a00a31b200320173a00a21b200320183b01a01b201a0d16200341e0006a41186a200341a01b6a41186a290300370300200341e0006a41106a200341a01b6a41106a290300370300200341e0006a41086a200341a01b6a41086a2202290300370300200320032903a01b37036020034198106a41186a2201420037030020034198106a41106a2206420037030020034198106a41086a220442003703002003420037039810200341a01b6a41c8e8c600410a10f20120042002290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f20120012002290000370300200620032900a01b370300200341a0016a20034198106a10c00420032902a401420020032802a00122021b220b422088220ca74105742104410021072002410028029cde4a20021b2106410021020340024020042002470d00419bbdc8002102410921010c190b200620026a2101200241206a21022001200341e0006a412010c60a0d000b200341003602a0102003420137039810200820034198106a10de0320032802a01021040240200328029c10450d0020032802981010390b02402004200d4d0d004109210741b9fdc6002102411321010c180b200341003602a801200342013703a0012008200341a0016a10de0320034198106a20032802a00120032802a801109c0120034180016a41186a20034198106a41186a29030037030020034180016a41106a20034198106a41106a29030037030020034180016a41086a20034198106a41086a290300370300200320032903981037038001024020032802a401450d0020032802a00110390b200341a0016a200841c00710c30a1a411010382201450d04200141ac81c40036020c200141013602082001428180808010370200411010382202450d042002419481c40036020c20024101360208200242818080801037020020012001280200417f6a2207360200024020070d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22072007280200417f6a220736020020070d00200110390b024002402002280208200341a0016a200228020c28020c1101000d00200341f8086a41003a00004102210120034180096a41023a000020022002280200417f6a2207360200200342003703e808200342013703e008024020070d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22072007280200417f6a220736020020070d00200210390b200341a0016a10e203410121020c010b20034198106a200341a0016a41c00710c30a1a200341ad1b6a200341e8006a290300370000200341b51b6a200341f0006a290300370000200341bd1b6a200341f8006a290300370000200341013a00a41b200341023a00a01b200320032903603700a51b200320023602c81b200341e0086a20034198106a200341a01b6a10e30320032903e008420151210220034180096a2d000021010b20032903e808211c0240024020020d00201c211d410821020c010b4202211d41082102201c4202510d00200320034181096a2202290000370398102003200241076a28000036009f10201c211d200121020b2003200328009f103600a70120032003290398103703a001200341b5106a20034198016a290300370000200341a5106a20034188016a290300370000200341c1106a20032903a001370000200341c8106a20032800a701360000200341c0106a20023a0000200341103a009810200341ad106a20034180016a41106a290300370000200320032903800137009d10200341053a009c1020034198106a10fc0102400240201da70d004200210c0c010b427f2004ad42a01f7e200c42b882077e7c42b8f8e21a7c220c200341e0086a41106a2903007c221c201c200c541b211c4201210c0b0240200b42ffffff3f83500d00200610390b200810392003200341d3006a28000036004b20032003280050360248200041186a41003a0000200041106a201c3703002000200c370308200020032802483600192000411c6a200328004b360000200042003703000c190b2001410c6a280200211e200141086a2802002108200141046a280200211f2002411a6a290100210b200241196a2d00002105200241186a2d00002109200241166a2f0100210a200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f0100211a200241056a2d0000211b200241046a2d0000211941022101200241026a2f0100210d20022d0001210720022d00002106200228022822022002280200417f6a22043602000240024020060d00024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d00200210390b200741ff01714101460d010c150b20040d142002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d14200210390c150b2003200b370378200320053a0077200320093a00762003200a3b01742003200e3a00732003200f3a0072200320103b0170200320113a006f200320123a006e200320133b016c200320143a006b200320153a006a200320163b0168200320173a0067200320183a00662003201a3b01642003201b3a0063200320193a00622003200d3b0160200341b0106a22024200370300200341a8106a2205420037030020034198106a41086a220142003703002003420037039810200341a01b6a41c8e8c600410a10f2012001200341a01b6a41086a2206290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f20120022006290000370300200520032900a01b370300200341a0016a20034198106a10c00420032902a401420020032802a00122021b220b422088220ca74105742104410021072002410028029cde4a20021b21064100210202400340024020042002470d00419bbdc8002104410921020c020b200620026a2101200241206a21022001200341e0006a412010c60a0d000b200341003602a0102003420137039810200820034198106a10de0320032802a01021010240200328029c10450d0020032802981010390b02402001201e4d0d004109210741b9fdc6002104411321020c010b200341003602a801200342013703a0012008200341a0016a10de0320034198106a20032802a00120032802a801109c0120034180016a41186a220220034198106a41186a220429030037030020034180016a41106a220720034198106a41106a220929030037030020034180016a41086a220a20034198106a41086a220e290300370300200320032903981037038001024020032802a401450d0020032802a00110390b2004200229030037030020092007290300370300200e200a290300370300200320032903800137039810200341a0016a20034198106a108e0920032802a001220420032802a80110a8022102024020032802a401450d00200410390b02402002450d004101210741a8fdc6002104411121020c010b0240024002400240201f41014b0d00200341b0106a4200370300200341a8106a420037030020034198106a41086a220242003703002003420037039810200341a01b6a41c8e8c600410a10f2012002200341a01b6a41086a2204290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f201200541086a2004290000370000200520032900a01b370000200341a0016a20034198106a10c0040240024020032802a00122020d00410021050c010b20032902a401221c422088a72105201c42ffffff3f83500d00200210390b200341a0016a200841c00710c30a1a411010382204450d08200441ac81c40036020c200441013602082004428180808010370200411010382202450d082002419481c40036020c20024101360208200242818080801037020020042004280200417f6a2207360200024020070d002004280208200428020c2802001102000240200428020c280204450d00200428020810390b200441046a22072007280200417f6a220736020020070d00200410390b024002402002280208200341a0016a200228020c28020c1101000d00200341f8086a41003a00004102210720034180096a41023a000020022002280200417f6a2204360200200342003703e808200342013703e008024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22042004280200417f6a220436020020040d00200210390b200341a0016a10e203410121040c010b20034198106a200341a0016a41c00710c30a1a200341ac1b6a2005360200200341a81b6a4101360200200320023602c81b200341003a00a41b200341023a00a01b200341e0086a20034198106a200341a01b6a10e30320032903e008420151210420034180096a2d000021070b200341a01b6a41186a20034180016a41186a290300370300200341a01b6a41106a20034180016a41106a29030037030041082102200341a01b6a41086a20034180016a41086a29030037030020032003290380013703a01b02402004450d0020032903e8084202510d00200320034181096a2202290000370398102003200241076a28000036009f10200721020b2003200328009f103600a70120032003290398103703a00120032903a01b211c20032903a81b211d20032903b01b212020032903b81b2121200341c8106a20032800a701360000200341c1106a20032903a001370000200341c0106a20023a0000200341b5106a2021370000200341ad106a2020370000200341a5106a201d3700002003201c37009d10200341043a009c10200341103a00981020034198106a10fc01024020032802e8080d004200210c0c030b427f2001ad42a01f7e200c42d0e50d7e7c42f0aaaa2a7c220c200341f0086a2903007c221c201c200c541b211c0c010b200341a0016a108f0920032802a801220241e3004b0d0220034198106a41186a220a20034180016a41186a29030037030020034198106a41106a220e20034180016a41106a29030037030020034198106a41086a220f20034180016a41086a2903003703002003200329038001370398100240200220032802a4012209470d00200341a0016a2002410110f50220032802a401210920032802a80121020b20032802a0012207200241057422106a2204200329039810370000200441086a200f290300370000200441106a200e290300370000200441186a200a290300370000200341a01b6a41186a22044200370300200341a01b6a41106a220a4200370300200341a01b6a41086a220e4200370300200342003703a01b200341e0086a41c8e8c600410a10f201200e200341e0086a41086a220f290000370300200320032900e0083703a01b200341e0086a41d2e8c600410910f2012004200f290000370300200a20032900e008370300200341003602a010200342013703981020034198106a200241016a220a10d2010240200a2002490d00201041206a2104200721020340200220034198106a10ff02200241206a2102200441606a22040d000b0b200341a01b6a4120200328029810220220032802a01010a3020240200328029c10450d00200210390b0240200941ffffff3f71450d00200710390b200341a01b6a41186a22024200370300200341a01b6a41106a22044200370300200341a01b6a41086a22074200370300200342003703a01b200341e0086a41c8e8c600410a10f2012007200341e0086a41086a2209290000370300200320032900e0083703a01b200341e0086a41dbe8c600410d10f20120022009290000370300200420032900e008370300200341186a200341a01b6a412010f501200328021c211020032802182111200242003703002004420037030020074200370300200342003703a01b200341e0086a41c8e8c600410a10f20120072009290000370300200320032900e0083703a01b200341e0086a41dbe8c600410d10f20120022009290000370300200420032900e008370300200341106a200341a01b6a412010f5012003280210210e2003280214210f200242003703002004420037030020074200370300200342003703a01b200341e0086a41c8e8c600410a10f20120072009290000370300200320032900e0083703a01b200341e0086a41dbe8c600410d10f20120022009290000370300200420032900e0083703002003200f41016a4101200e1b36029810200341a01b6a412020034198106a410410a30220034198106a200841c00710c30a1a200341a0016a41186a20034180016a41186a290300370300200341a0016a41106a20034180016a41106a290300370300200341a0016a41086a20034180016a41086a29030037030020032003290380013703a001200341e0086a200341a0016a108e0920032802e008210220032802e8082104200342013703a001200341003602a80120034198106a200341a0016a10de032002200420032802a00120032802a80110a302024020032802a401450d0020032802a00110390b024020032802e408450d00200210390b20034198106a10900920034198106a41186a2207420037030020034198106a41106a420037030020034198106a41086a220242003703002003420037039810200341a01b6a41b9fec300410610f2012002200341a01b6a41086a2204290000370300200320032900a01b37039810200341a01b6a41b0eec900410610f201200541086a2004290000370000200520032900a01b370000200341086a20034198106a412010f501200328020c210420032802082105412010382202450d0720022003290360370000200241186a200341e0006a41186a290300370000200241106a200341e0006a41106a290300370000200241086a200341e0006a41086a29030037000020074200370300200341a4106a4281808080103702002003200441056a410520051b3602b8102003410028029cde4a3602ac10200320023602a0102003201f36029c1020032010410020111b220436029810200341a0016a41186a20034180016a41186a290300370300200341a0016a41106a20034180016a41106a290300370300200341a0016a41086a20034180016a41086a29030037030020032003290380013703a001200341e0086a200341a0016a10910920032802e008220720032802e80820034198106a109e08024020032802e408450d00200710390b20021039200341b5106a200341e0006a41186a290300370000200341a5106a200341e0006a41086a290300370000200341bd106a200329038001370000200341c5106a20034180016a41086a290300370000200341d5106a20034180016a41186a290300370000200341e4106a201f360200200341e0106a2004360200200341103a009810200341ad106a200341e0006a41106a290300370000200341cd106a20034180016a41106a2903003700002003200329036037009d10200341003a009c102001ad4288277e200c4290b6087e7c200aad42c8f0267e7c42f0ee858d027c211c20034198106a10fc010b4201210c0b0240200b42ffffff3f83500d00200610390b200810392003200341d3006a28000036004b20032003280050360248200041186a41003a0000200041106a201c3703002000200c370308200020032802483600192000411c6a200328004b360000200042003703000c1a0b024020032802a40141ffffff3f71450d0020032802a00110390b4107210741d8fcc6002104411021020b41032101200b42ffffff3f83500d14200610390c140b200141216a2d0000211e200141246a280200210d20034180016a41186a200141196a29000037030020034180016a41106a200141116a29000037030020034180016a41086a200141096a29000037030020032001290001370380012002411a6a290100210b200241196a2d00002107200241186a2d00002105200241166a2f01002109200241156a2d0000210a200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d0000211a200241046a2d0000211b41022101200241026a2f0100211920022d0001210820022d00002106200228022822022002280200417f6a22043602000240024020060d00024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d00200210390b200841ff01714101460d010c120b20040d112002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d11200210390c120b2003200b3703f808200320073a00f708200320053a00f608200320093b01f4082003200a3a00f3082003200e3a00f2082003200f3b01f008200320103a00ef08200320113a00ee08200320123b01ec08200320133a00eb08200320143a00ea08200320153b01e808200320163a00e708200320173a00e608200320183b01e4082003201a3a00e3082003201b3a00e208200320193b01e008200341b0106a22024200370300200341a8106a2201420037030020034198106a41086a220642003703002003420037039810200341a01b6a41c8e8c600410a10f2012006200341a01b6a41086a2204290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f20120022004290000370300200120032900a01b370300200341a0016a20034198106a10c00420032902a401420020032802a00122021b220b422088221ca74105742104410021082002410028029cde4a20021b2106410021020340024020042002470d00419bbdc8002104410921020c110b200620026a2101200241206a21022001200341e0086a412010c60a0d000b200341a01b6a20034180016a10920920034198106a20032802a01b220220032802a81b1097080240024020032802a01022050d000c010b200341b8106a2802002101200341b4106a280200210a200341b0106a2802002110200341ac106a280200210f200341a8106a280200210920032802a410210e200329039810210c0b024020032802a41b450d00200210390b024020050d00410221084199fdc6002104410f21020c100b200341bc016a200a360200200341b8016a2010360200200341b0016a2009360200200341ac016a200e360200200320013602c0012003200f3602b401200320053602a8012003200c3703a0010240200d200ca7460d0041032108418ffdc6002104410a21020c0f0b410021010240024020090d0041002104410021110c010b200941057441606a41057641016a21084100210420052102034002402002200341e0086a412010c60a0d00410121110c020b200241206a21022008200441016a2204470d000b41002111200821040b02400240200a0d0041012108410021020c010b200a41057441606a41057641016a210741002101200f2102034002402002200341e0086a412010c60a0d0041002108410121020c020b200241206a2102410121082007200141016a2201470d000b41002102200721010b0240024002400240024020110d00201e41ff0171450d01200341a01b6a41186a2207200341e0086a41186a290300370300200341a01b6a41106a220a200341e0086a41106a290300370300200341a01b6a41086a220f200341e0086a41086a290300370300200320032903e0083703a01b02402009200e470d00200341a0016a41086a200e410110f50220032802a801210520032802b00121090b200520094105746a220420032903a01b370000200441186a2007290300370000200441106a200a290300370000200441086a200f2903003700002003200941016a22073602b00120020d0220032802bc0121020c040b201e41ff01710d11410021080b20020d10200341a01b6a41186a2201200341e0086a41186a290300370300200341a01b6a41106a2207200341e0086a41106a290300370300200341a01b6a41086a2205200341e0086a41086a290300370300200320032903e0083703a01b0240200a2010470d00200341b4016a2010410110f50220032802b401210f20032802bc01210a0b200f200a4105746a220220032903a01b370000200241186a2001290300370000200241106a2007290300370000200241086a20052903003700002003200a41016a22023602bc0120110d0120032802b00121070c020b20032802bc01220220014d0d0520032802b40122052002417f6a22024105746a2204290000210c2004290008211d20042900102120200520014105746a220141186a200441186a290000370000200120203700102001201d3700082001200c370000200320023602bc010c010b20032802b001220120044d0d0520032802a80122052001417f6a22074105746a2201290000210c2001290008211d20012900102120200520044105746a220441186a200141186a290000370000200420203700102004201d3700082004200c370000200320073602b0010b200341bd106a200329038001370000200341e4106a2002360200200341e0106a2007360200200341dd106a201e3a0000200341b5106a200341e0086a41186a290300370000200341a5106a200341e0086a41086a290300370000200341c5106a20034180016a41086a290300370000200341d5106a20034180016a41186a290300370000200341103a009810200341ad106a200341e0086a41106a290300370000200341cd106a20034180016a41106a290300370000200320032903e00837009d10200341013a009c1020034198106a10fc0120034198106a41206a200341a0016a41206a28020036020020034198106a41186a200341a0016a41186a29030037030020034198106a41106a200341a0016a41106a29030037030020034198106a41086a200341a0016a41086a290300370300200320032903a00137039810200341a01b6a20034180016a10920920032802a01b220220032802a81b20034198106a109e08024020032802a41b450d00200210390b0240200341a4106a28020041ffffff3f71450d0020032802a01010390b0240200341b0106a28020041ffffff3f71450d0020032802ac1010390b201c42e0b60d7e42f8b1dde2007c210c0240200b42ffffff3f83500d00200610390b200320032800603602502003200341e3006a280000360053200041186a20083a0000200041106a200c37030020004201370308200020032802503600192000411c6a2003280053360000200042003703000c170b200141286a2802002105200141306a290300210c200141246a280200210820034198016a200141196a29000037030020034190016a200141116a29000037030020034188016a200141096a290000370300200320012900013703800120022d0000210120022d00012104200228022822022002280200417f6a220636020002400240024020010d00024020060d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b41022101200441ff01714101470d0d200341a0016a20034180016a10920920034198106a20032802a001220220032802a80110970820032802a01022090d010c020b4102210120060d0c2002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22062006280200417f6a220636020020060d0c200210390c0c0b200341b8106a2802002112200341b4106a2802002110200341b0106a280200210f200341ac106a2802002111200341a8106a280200210a20032802a410210e200329039810211c0b024020032802a401450d00200210390b024020090d00410321010c0b0b4201211d4100210241d000210641032101024002402008201ca7460d004200210b418ffdc6002108410a2104410321070c010b201c422088a7210842002120200341b0106a22044200370300200341a8106a2213420037030020034198106a41086a220742003703002003420037039810200341a01b6a41c8e8c600410a10f2012007200341a01b6a41086a2214290000370300200320032900a01b37039810200341a01b6a41caa4c800410710f20120042014290000370300201320032900a01b370300200341a0016a20034198106a10c0040240024020032802a00122040d00410021140c010b20032902a401220b4220882220a72114200b42ffffff3f83500d00200410390b0240200a2008490d0020034198106a20034180016a2005200c10930920034198106a410c6a280200210420034198106a41086a2215280200210820032d009f10210520032d009e10210720032d009d10210620032d009c1021012003280298102113200341a0016a20034198106a41106a41b80710c30a1a024020134101460d00200341e0176a350200210b200341e0086a200341a0016a41b80710c30a1a200341b5106a20034180016a41186a2202290300370000200341a5106a20034180016a41086a2201290300370000200341c4106a2010360200200341c0106a200a360200200341103a009810200341ad106a20034180016a41106a2206290300370000200320032903800137009d10200341063a009c1020034198106a10fc01200341bc016a2010360200200341a0016a41186a200f360200200341a0016a41106a200a360200200341a0016a410c6a200e360200200320123602c001200320113602b401200320093602a8012003201c3703a001200341a01b6a41186a2002290300370300200341a01b6a41106a2006290300370300200341a01b6a41086a200129030037030020032003290380013703a01b2003200436029c1020032008360298102015200341e0086a41b80710c30a1a200341386a2014200341a0016a200341a01b6a20034198106a109409427f200b42e8077e202042a89c0e7e7c20033502404288b8247e7c42808482eb017c220b20032903387c220c200c200b541b210c0c0b0b4200210b0c010b410021024100201420106b2204200420144b1b2008490d064200210b20034198106a41186a420037030020034198106a41106a42003703004108210420034198106a41086a22154200370300200342003703981041062107200341a01b6a41b9fec300410610f2012015200341a01b6a41086a2216290000370300200320032900a01b37039810200341a01b6a41b0eec900410610f201201341086a2016290000370000201320032900a01b370000200341306a20034198106a412010f50102402003280234410020032802301b20124f0d0041e8fcc60021080c010b200341a01b6a41186a22024200370300200341a01b6a41106a22014200370300200341a01b6a41086a22064200370300200342003703a01b200341e0086a41c8e8c600410a10f2012006200341e0086a41086a2204290000370300200320032900e0083703a01b200341e0086a41d1a4c800410510f20120022004290000370300200120032900e00837030020034198106a200341a01b6a412010cc020240024020032d0098104101470d00200341a1106a290000210b200341a9106a290000212120032900991021222003200341b1106a2900003703b010200320213703a8102003200b3703a0102003202237039810200a4105742101200921020240034020012206450d01200641606a2101200220034198106a412010c60a2104200241206a210220040d000b0b200641004721020c010b410221020b41002014200a20106a6b2201200220024102477122021b20106a21132001410020021b200a6a22022008490d0520034198106a20034180016a2005200c10930920034198106a410c6a280200210420034198106a41086a2216280200210820032d009f10210520032d009e10210720032d009d10210620032d009c1021012003280298102115200341a0016a20034198106a41106a41b80710c30a1a024020154101460d00200341e0176a350200210b200341e0086a200341a0016a41b80710c30a1a200341b5106a20034180016a41186a2201290300370000200341a5106a20034180016a41086a2206290300370000200341c4106a2013360200200341c0106a2002360200200341103a009810200341ad106a20034180016a41106a2202290300370000200320032903800137009d10200341063a009c1020034198106a10fc01200341bc016a2010360200200341a0016a41186a200f360200200341a0016a41106a200a360200200341a0016a410c6a200e360200200320123602c001200320113602b401200320093602a8012003201c3703a001200341a01b6a41186a2001290300370300200341a01b6a41106a2002290300370300200341a01b6a41086a200629030037030020032003290380013703a01b2003200436029c1020032008360298102016200341e0086a41b80710c30a1a200341206a2014200341a0016a200341a01b6a20034198106a109409427f200b42e8077e202042a89c0e7e7c200335022842f0bf247e7c42f0da9bfa017c220b20032903207c220c200c200b541b210c0c0a0b4200210b410021020b0c070b20034198106a41286a200241286a28020036020020034198106a41206a200241206a29020037030020034198106a41186a2206200241186a29020037030020034198106a41106a2204200241106a29020037030020034198106a41086a2208200241086a29020037030020032002290200370398100240024020034198106a10a207450d0020004200370308200041206a41023a0000200041186a41003a00004201210b0c010b200341b5106a200141196a2202290000370000200341ad106a200141116a2207290000370000200341a5106a200141096a2205290000370000200341033a009c102003200129000137009d10200341103a00981020034198106a10fc01200620022900003703002004200729000037030020082005290000370300200320012900013703981020034198106a1095092102200041186a41003a000020004201370308200041106a2002ad428088277e42e082b8ac017c3703004200210b0b2000200b3703000c150b1030000b200120021041000b200420011041000b200341c4106a2013360200200341c0106a2002360200200341b5106a220220034180016a41186a2201290300370000200341ad106a220620034180016a41106a2204290300370000200341a5106a220820034180016a41086a2207290300370000200320032903800137009d10200341063a009c10200341103a00981020034198106a10fc01200341a01b6a41186a22052001290300220b370300200341a01b6a41106a22012004290300220c370300200341a01b6a41086a22042007290300221c3703002003200329038001221d3703a01b2002200b3700002006200c3700002008201c3700002003201d37009d10200341033a009c10200341103a00981020034198106a10fc0120034198106a41186a200529030037030020034198106a41106a200129030037030020034198106a41086a2004290300370300200320032903a01b37039810202042c0940e7e20034198106a109509ad42e0e8267e7c42f0f490df017c210c0c010b200341c4106a2010360200200341c0106a200a360200200341b5106a220220034198016a2201290300370000200341ad106a220620034180016a41106a2204290300370000200341a5106a220820034188016a2207290300370000200320032903800137009d10200341063a009c10200341103a00981020034198106a10fc012007290300210b2004290300210c200329038001211c20022001290300221d3700002006200c3700002008200b3700002003201c37009d10200341033a009c10200341103a00981020034198106a10fc012003201d3703b0102003200c3703a8102003200b3703a0102003201c37039810202042e8dd0d7e20034198106a109509ad42f0b9267e7c42f08d8cd0017c210c0b4200211d4201210b410121020b0240200e41ffffff3f71450d00200910390b0240200f41ffffff3f71450d00201110390b201d500d010c030b410021024201210b0b200320032800603602502003200341e3006a280000360053200041186a20023a0000200041106a200c3703002000200b370308200020032802503600192000411c6a2003280053360000200042003703000c0c0b410f21044199fdc60021084102210741d0002106410021024200210b0b200320032800603602502003200341e3006a280000360053200041186a20023a0000200041106a200c3703002000200b370308200020032802503600192000411c6a2003280053360000200041286a2004360200200041246a2008360200200020053a0023200020073a0022200020063a0021200041206a20013a0000200042013703000c0a0b410421084182fdc6002104410d21020b0240200e41ffffff3f71450d00200510390b201041ffffff3f71450d00200f10390b41032101200b42ffffff3f83500d01200610390c010b0b200320032800603602502003200341e3006a280000360053200041186a41003a000020004200370308200020032802503600192000411c6a2003280053360000200041286a2002360200200041246a2004360200200020083a0022200041d0003a0021200041206a20013a0000200042013703000c050b0b2008109009200810392003200341d3006a28000036004b20032003280050360248200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041286a2002360200200041246a2004360200200041003a0023200020073a0022200041d0003a0021200041206a20013a0000200042013703000c030b410221040c010b41032104200b42ffffff3f83500d00200610390b200810900920081039200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041286a2001360200200041246a2002360200200020073a0022200041d0003a0021200041206a20043a0000200042013703000b200341d01b6a24000be90703017f017e0c7f230041d0006b22022400200141146a2902002103200141106a2802002104200128020c2105200128020821062001280204210720012802002101200241c0006a4200370300200241286a41106a22084200370300200241306a420037030020024200370328200241286a4192d1c800410b10f201200841c0d3c800411310f2012002200241286a412010f501200228020421092002280200210a200241286a200010f80120022802282208200228023010f90141ff0171210b0240200228022c450d00200810390b024002400240200b4107460d0002402007450d00200110390b2004450d01200510390c010b200241186a200010f8012002280220210c2002280218210820024100360230200242013703284100200241286a1080012008200c2002280228220d200228023010a3020240200228022c450d00200d10390b0240200228021c450d00200810390b200241186a200010ad092002280220210e2002280218210c200241003602302002420137032820012006200241286a10d60120052003a7200241286a10d6012003422088a7210f0240200228022c220d20022802302208470d00200241286a20084101108101200228022c210d200228023021080b20094100200a1b21062002280228220920086a200f3a0000200c200e2009200841016a10a3020240200d450d00200910390b200641026a21080240200228021c450d00200c10390b2008200649210602402007450d00200110390b417f200820061b210102402004450d00200510390b200241086a200110c007200241286a20022802082002280210109c0202400240200228022822080d002002420037021c41002109200241002802ccdd4a2208360218410021060c010b200229022c2103200220083602182002200337021c2003422088a721062003a721090b41002101024002402006450d0020062104200621050340024002402008200441017620016a22044102746a280200220720004f0d00200441016a21010c010b2004210520072000460d030b200520016b2104200520014b0d000b20062001490d030b024020062009470d00200241186a200910b701200228021821080b200820014102746a220541046a2005200620016b41027410c40a1a200520003602002002200641016a3602200b200241286a41086a200241186a41086a2802003602002002200229031822033703282002280210210520022802082101024002402003a722040d002001200510fd010c010b2002200536024c20022001360248200241286a200241c8006a109703200228022c41ffffffff0371450d00200410390b200228020c450d00200110390b200241d0006a2400200b4107470f0b200120061044000bbf0603077f017e017f230041d0006b22012400200141286a200010f80120012802282202200128023010f90141ff017121030240200128022c450d00200210390b410021020240024020034107460d00410121020240024002402003417f6a0e020001030b200141186a200010f801200128022021032001280218210220014100360230200142013703284105200141286a1080012002200320012802282204200128023010a3020240200128022c450d00200410390b200128021c450d01200210390c010b200141186a200010f801200128022021032001280218210220014100360230200142013703284106200141286a1080012002200320012802282204200128023010a3020240200128022c450d00200410390b200128021c450d00200210390b200141c0006a4200370300200141386a22024200370300200141306a420037030020014200370328200141286a4192d1c800410b10f201200241c0d3c800411310f2012001200141286a412010f50141002105200141086a417f2001280204410020012802001b220241026a220320032002491b10c007200141286a20012802082001280210109c0202400240200128022822060d002001420037021c200141002802ccdd4a2206360218410021070c010b200129022c2108200120063602182001200837021c2008422088a721072008a721050b41002102024002402007450d0020072104200721030340024002402006200441017620026a22044102746a280200220920004f0d00200441016a21020c010b2004210320092000460d030b200320026b2104200320024b0d000b20072002490d030b024020072005470d00200141186a200510b701200128021821060b200620024102746a220341046a2003200720026b41027410c40a1a200320003602002001200741016a3602200b200141286a41086a200141186a41086a2802003602002001200129031822083703282001280210210320012802082102024002402008a722040d002002200310fd010c010b2001200336024c20012002360248200141286a200141c8006a109703200128022c41ffffffff0371450d00200410390b0240200128020c450d00200210390b410021020b200141d0006a240020020f0b200220071044000ba90f05037f017e047f017e047f230041b0046b220524000240024020012002470d00200041832e3b0100200041086a4115360200200041046a41dcd9c600360200200041026a41003a00000c010b200541186a200210f80120052802182206200528022010f90121070240200528021c450d00200610390b200741ff0171210702400240024041000d0020070e080100000000000001010b2007417b6a41014b0d010b200041832e3b0100200041086a411f360200200041046a41fcd9c600360200200041026a41013a00000c010b42002108200541a8046a2207420037030020054190046a41106a2206420037030020054190046a41086a220942003703002005420037039004200541186a41f1b5c900410d10f2012009200541186a41086a220a2900003703002005200529001837039004200541186a418bb6c900410c10f2012007200a29000037030020062005290018370300200541186a20054190046a412010b2020240024020052802a8014102470d00410021074100210b410021064100210a410021094100210c4200210d0c010b200541186a41106a290300210d200529032021082005280288012106200528027c210b200528027821072005280270210a200528026c21092005280268210c0b024020030d00200041832e3b0100200041086a411b360200200041046a41a4dac600360200200041026a41023a00000c010b0240200720034f0d00200041832e3b0100200041086a4123360200200041046a41c8dac600360200200041026a41033a00000c010b024020040d00200041832e3b0100200041086a411e360200200041046a41f4dac600360200200041026a41043a00000c010b0240200620044f0d00200041832e3b0100200041086a4126360200200041046a419cdbc600360200200041026a41053a00000c010b20054190046a20012002109809200541186a200528029004220620052802980410940820052d003821070240200528029404450d00200610390b0240200741ff01714102460d00200041832e3b0100200041086a411c360200200041046a41ccdbc600360200200041026a41063a00000c010b20054190046a2001200210a905200541186a200528029004220620052802980410aa0520052d004c21070240200528029404450d00200610390b0240200741ff01714102460d00200041832e3b0100200041086a411f360200200041046a41f0dbc600360200200041026a41073a00000c010b200541186a20011099092005280220210e200528021821074100210620054184046a41003a00002005410036028004200541106a2007200e20054180046a4105410010c105024002402005280210450d00200520052802142206410520064105491b36029404200520054180046a36029004200541086a20054190046a10ad01200528020c210e20052802084521060c010b0b0240200528021c450d00200710390b200541186a2001109a09200520052802182207200528022010f5012005280200210f200528020421100240200528021c450d00200710390b200541186a200110f80120052802182211200528022010f90141ff017121070240200528021c450d00201110390b200e410020061b210e20104100200f1b2106024020074107460d00200741054b0d004101200774412a71450d00200a21090b02402006200e6a2009490d00200041832e3b0100200041086a411c360200200041046a4198dcc600360200200041026a41083a00000c010b200541186a200110ec0820054190046a200541186a2008200d10f701200520052900910437038004200520054190046a41086a28000036008704024020052d00900422074108460d002000200529038004370001200020073a0000200041086a2005280087043600000c010b200541186a2001109a0920052802202109200528021821072005200641016a360290042007200920054190046a410410a3020240200528021c450d00200710390b2005200d3703202005200837031820054100360228200541003a00382005200b360234200520033602302005200436022c20054190046a200120021098092005280290042207200528029804200541186a10a0080240200528029404450d00200710390b200541306a4200370300200541286a22074200370300200541186a41086a2206420037030020054200370318200541186a41e0edc600410410f201200741e4dac700411b10f2012005410036028804200542013703800420054180046a41004104108101200528028004220920052802880422076a20013600002005200741046a220736028804024020052802840420076b41034b0d0020054180046a20074104108101200528028004210920052802880421070b20054180046a41086a200741046a220a360200200920076a200236000020054190046a41086a2207200a360200200520052903800437039004200541186a412020054190046a10ad0520074100360200200541246a20033602002006200436020020054201370390042005200136021c200541073a001820054190046a41004101108101200528029004200728020022016a41003a00002007200141016a360200200541186a20054190046a10e904200541186a10d203200620072802003602002005200529039004370318200c2002200541186a109f041a200041083a00000b200541b0046a24000bcd0c04037f017e047f017e230041b0056b22032400200341a0056a20022001109809200341b8016a20032802a005220420032802a805109408024020032d00d80122054102460d0020034198016a41186a200341b8016a41186a29030037030020034198016a41106a200341b8016a41106a29030037030020034198016a41086a200341b8016a41086a290300370300200320032903b80137039801200320032800d901360290012003200341dc016a280000360093010b024020032802a405450d00200410390b0240024020054102460d00200341e8006a410e6a20034198016a41086a290300370100200341e8006a41166a20034198016a41106a290300370100200341e8006a411e6a20034198016a41186a2903002206370100200341c0006a411e6a22042006370100200320032903980137016e200341c0006a41086a200341e8006a41086a2207290100370300200341c0006a41106a200341e8006a41106a2208290100370300200341c0006a41186a200341e8006a41186a22092901003703002003200328029001360218200320032800930136001b20032003290168370340200341206a41186a2004290100370300200341206a41106a200341c0006a41166a290100370300200341206a41086a200341c0006a410e6a2901003703002003200329014637032002402005450d00200041832e3b0100200041086a4121360200200041046a41e0dcc600360200200041026a410a3a00000c020b4200210620094200370300200842003703002007420037030020034200370368200341e8006a41f1b5c900410d10f2012008418bb6c900410c10f201200341b8016a200341e8006a412010b2020240024020032802c8024102470d0041002107410021084100210a4200210b0c010b200341b8016a41206a290300210b20032903d001210620032802a402210720032802a0022108200328028802210a0b200341b8016a200110f80120032802b801220420032802c00110f90141ff01712105024020032802bc01450d00200410390b024020054107460d00200541054b0d004101200574412a71450d00200721080b200341b8016a200110c80620032802c001210720032802b801210541002104200341c4006a41003a000020034100360240200341106a20052007200341c0006a4105410010c105024002402003280210450d00200320032802142204410520044105491b36026c2003200341c0006a360268200341086a200341e8006a10ad01200328020c210720032802084521040c010b0b024020032802bc01450d00200510390b200341b8016a2001109b09200320032802b801220920032802c00110f5012007410020041b21042003280204410020032802001b2105024020032802bc01450d00200910390b0240200520046a2008490d00200041832e3b0100200041086a411e360200200041046a418cddc600360200200041026a410b3a00000c020b200341b8016a200110ec08200341e8006a200341b8016a2006200b10f701200320032900693703402003200341e8006a41086a280000360047024020032d006822044108460d0020002003290340370001200020043a0000200041086a20032800473600000c020b200341b8016a41186a200341206a41186a290300370300200341b8016a41106a200341206a41106a290300370300200341b8016a41086a200341206a41086a290300370300200341dc016a200328001b360000200320032903203703b801200341013a00d801200320032802183600d901200341e8006a20022001109809200328026822042003280270200341b8016a10a0080240200328026c450d00200410390b200341b8016a2001109b0920032802c001210820032802b80121042003200541016a36026820042008200341e8006a410410a302024020032802bc01450d00200410390b200341e8006a41086a2205410036020020034201370368200320013602bc01200341083a00b801200341e8006a410041011081012003280268200528020022016a41003a00002005200141016a360200200341b8016a200341e8006a10e904200341b8016a10d203200341b8016a41086a2005280200360200200320032903683703b801200a2002200341b8016a109f041a200041083a00000c010b200041086a411c360200200041046a41bcdcc600360200200041026a41093a0000200041832e3b01000b200341b0056a24000bd60102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42307e2205422088a74541037421022005a721040240024020010d00200341003602100c010b200341106a41086a41083602002003200141306c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141306e360200200341206a24000f0b1034000bfd7206017f027e047f017e147f057e230041b0116b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a0e080001020304050607000b200141c0006a2903002104200141386a2903002105200141306a28020021062001412c6a2802002107200141286a2802002108200141246a2802002109200341c0026a200141216a2f00003b0100200341a0026a41186a200141196a290000370300200341a0026a41106a200141116a290000370300200341a0026a41086a200141096a290000370300200320012900013703a0022002411a6a290100210a200241196a2d0000210b200241186a2d0000210c200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d00002118200241066a2f01002119200241056a2d0000211a200241046a2d0000211b200241026a2f0100211c20022d0001211d20022d00002101200228022822022002280200417f6a221e36020002400240024020010d000240201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b201d41ff01714101470d012003200a3703f0032003200b3a00ef032003200c3a00ee032003200d3b01ec032003200e3a00eb032003200f3a00ea03200320103b01e803200320113a00e703200320123a00e603200320133b01e403200320143a00e303200320153a00e203200320163b01e003200320173a00df03200320183a00de03200320193b01dc032003201a3a00db032003201b3a00da032003201c3b01d803200820074d0d02200341b8036a410310dc040c230b201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00b8030c220b200841076a22022008490d070240200220074f0d00200341b8036a410410dc040c210b20034190066a2201420037030020034188066a22024200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a41b9fec300410610f201201e200341a8066a41086a221d290000370300200320032900a8063703f805200341a8066a41b0eec900410610f2012001201d290000370300200220032900a806370300200341186a200341f8056a412010f5010240200328021c410020032802181b2006490d00200341b8036a410510dc040c210b0240417f417f200841016a220120012008491bad42c0f0007e220aa7200a422088a71b20064f0d00200341b8036a410610dc040c210b20034190066a420037030020034188066a4200370300200341f8056a41086a22014200370300200342003703f805200341a8066a41b9fec300410610f2012001200341a8066a41086a221e290000370300200320032900a8063703f805200341a8066a41b0eec900410610f201200241086a201e290000370000200220032900a806370000200341106a200341f8056a412010f5010240200328021441c0f0006e410020032802101b20084d0d00200341b8036a410110dc040c210b200341a8066a200910a40220032802a806221e20032802b00610a8022101024020032802ac06450d00201e10390b02402001450d00200341b8036a411110dc040c210b200341d0016a200910b607200341a8066a20032802d001220120032802d80110b3070240024020032d00d8064102460d0020034190016a221e200341c1066a29000037030020034198016a221d200341c9066a2900003703002003419f016a220b200341d0066a290000370000200320032900b9063703880120032d00b806210c024020032802d401450d00200110390b200341f1046a201e290300370000200341f9046a201d29030037000020034180056a200b29000037000020032003290388013700e9042003200c3a00e804200341d8036a200341e8046a412010c60a450d01200341b8036a410c10dc040c220b024020032802d401450d00200110390b200341b8036a410910dc040c210b200341a8066a200910f80120032802a806221e20032802b00610f90141ff01712101024020032802ac06450d00201e10390b0240024020014107460d00200141054b0d004101200174412a710d010b200341a8066a200910f80120032802a806221e20032802b00610f90141ff01712101024020032802ac06450d00201e10390b024020014107460d00200141064b0d00410120017441d400710d010b200341b8036a410910dc040c210b20034190066a420037030020034188066a4200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a418480c400410910f201201e200341a8066a41086a2201290000370300200320032900a8063703f805200341a8066a41fca4c900410d10f201200241086a2001290000370000200220032900a806370000200341086a200341f8056a412010f501200328020c410020032802081b221e41016a221d201e490d08200341a8066a200341d8036a428080e983b1de16420010f701200320032900a906370398062003200128000036009f06024020032d00a80622014108470d00200341d0066a2004370300200341a8066a41186a4200370300200341f8066a200341d8036a41086a29030037030020034180076a200341d8036a41106a29030037030020034188076a200341d8036a41186a290300370300200320053703c806200342003703b806200342003703b0062003428080e983b1de163703a8062003201e3602ec06200320073602e806200320083602e406200341003602dc06200320063602d806200320032903d8033703f00620034198076a200341a0026a41086a290300370300200341a0076a200341a0026a41106a290300370300200341a8076a200341a0026a41186a290300370300200341b0076a200341c0026a2f01003b0100200320032903a00237039007200341d0016a200910a40220032802d801211e20032802d001210120034100360290012003420137038801200341a8066a20034188016a1096052001201e200328028801220820032802900110a3020240200328028c01450d00200810390b024020032802d401450d00200110390b20034190066a420037030020034188066a4200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a418480c400410910f201201e200341a8066a41086a2201290000370300200320032900a8063703f805200341a8066a41fca4c900410d10f201200241086a2001290000370000200220032900a8063700002003201d3602a806200341f8056a4120200341a8066a410410a302200910fb01200141003a00002003410c3a00a806200341a8066a410c6a2009360200200341a8066a10fc010c230b200341c0036a200328009f0636000020032003290398063700b903200320013a00b8030c200b200141d0006a290300210a200141c8006a2903002104200141c4006a280200211b20012d0001211c20034188016a200141026a41c10010c30a1a2002411a6a2901002105200241196a2d0000211d200241186a2d00002107200241166a2f0100210b200241156a2d0000210c200241146a2d0000210d200241126a2f0100210e200241116a2d0000210f200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a20022d0001210820022d00002101200228022822022002280200417f6a221e36020002400240024020010d000240201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200841ff01714101470d0120032005370398022003201d3a009702200320073a0096022003200b3b0194022003200c3a0093022003200d3a0092022003200e3b0190022003200f3a008f02200320103a008e02200320113b018c02200320123a008b02200320133a008a02200320143b018802200320153a008702200320163a008602200320173b018402200320183a008302200320193a0082022003201a3b01800220044280a094a58d1d544100200a501b450d02200341f8006a410810dc040c1c0b201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00780c1b0b200341d0016a201b10a402200341e8046a20032802d001220220032802d80110a502024020032802d401450d00200210390b200328029c054103460d08200341a8066a41066a200341e8046a41900110c30a1a200341a0026a200341a8066a41960110c30a1a200341d8036a200341a0026a41066a41900110c30a1a20032903e803220520047c221f2005542202200341f0036a22012903002220200a7c2002ad7c220520205420052020511b0d092003201f3703e803200120053703000240201f20032903f80356200520034180046a29030022205620052020511b450d00200341f8006a410a10dc040c1a0b20034190066a2208420037030020034188066a22024200370300200341f8056a41086a22014200370300200342003703f805200341a8066a41b9fec300410610f2012001200341a8066a41086a221e290000370300200320032900a8063703f805200341a8066a41b0eec900410610f2012008201e290000370300200220032900a806370300200341c0006a200341f8056a412010f50102402003280244410020032802401b221d200328028804490d00200341f8006a410b10dc040c1a0b200842003703002002420037030020014200370300200342003703f805200341a8066a41b9fec300410610f2012001201e290000370300200320032900a8063703f805200341a8066a41b0eec900410610f201200241086a201e290000370000200220032900a806370000200341386a200341f8056a412010f5010240200328023c41c0f0006e410020032802381b2003280294044d0d00200341f8006a410b10dc040c1a0b200342f0f2bd99e6ac9db7e4003703a806200341b8036a200341a8066a201b10a602200341286a201b200341b8036a10ef0102402003290328200341286a41086a29030084500d00200341f8006a410f10dc040c1a0b200341a8066a20034180026a200328029c0410c109200341a8066a41086a2903002105200341c0066a2802002108200341bc066a280200210120032903a806212020032802b806211e0240024020032d00c0044103460d00201c41ff01714103460d01200341a9066a20034188016a41c10010c30a1a2003201c3a00a806412010382207450d0c2007201b3600002003200736029806200342a0808080c00037029c0620034198066a41044120108101200328029806220720032802a006220c6a220b200329038002370000200b41086a20034180026a41086a290300370000200b41106a20034180026a41106a290300370000200b41186a20034180026a41186a2903003700002003200c41206a220b3602a0060240200328029c06220c200b6b410f4b0d0020034198066a200b4110108101200328029c06210c200328029806210720032802a006210b0b2007200b6a220d2005370008200d20203700002003200b41106a220b3602a0060240200c200b6b410f4b0d0020034198066a200b4110108101200328029806210720032802a006210b0b2007200b6a220c200a370008200c20043700002003200b41106a220b3602a006024002400240024020032d00c0040e03010200010b200341c0026a200341e1046a2d00003a0000200341a0026a41186a200341d9046a290000370300200341a0026a41106a200341d1046a290000370300200341a0026a41086a200341c9046a2900003703002003200341c1046a2900003703a002200341e8046a200341a0026a4121109c01200341d0016a41086a200341e8046a41086a290000370300200341d0016a41106a200341e8046a41106a290000370300200341d0016a41186a200341e8046a41186a290000370300200320032900e8043703d0010c020b200341d8016a200341c9046a290000370300200341d0016a41106a200341d1046a290000370300200341e8016a200341d9046a2900003703002003200341c1046a2900003703d0010c010b200341d8016a200341c9046a290000370300200341d0016a41106a200341d1046a290000370300200341e8016a200341d9046a2900003703002003200341c1046a2900003703d0010b200341a8066a2007200b200341d0016a109004210b0240200328029c06450d00200710390b200b0d00200341f8006a411510dc040c1a0b200341a8066a20034180026a200341b8036a2004200a410110eb07200320032900a906370398062003200341a8066a41086a220728000036009f0620032d00a806220b4108470d0c2003427f2005200a7c202020047c221f202054220bad7c2220200b202020055420202005511b220b1b3703a8022003427f201f200b1b3703a002200328029c04210b200320083602ec042003201e3602e8042003200b3602f8052003200341a0026a3602d0012003200341e8046a3602b0062003200341d0016a3602ac062003200341f8056a3602a80620034180026a200341a8066a10bc0920034190066a220b420037030020034188066a220c4200370300200341f8056a41086a22084200370300200342003703f805200341a8066a41fcffc300410810f20120082007290000370300200320032900a8063703f805200341a8066a41b5a7c800410b10f201200241086a2007290000370000200220032900a806370000200341a8066a200341f8056a412010a202024020032802a8064101470d00201d20072802006b2208201d4b0d00200841d7044b0d00200328028c044102470d1e20034190046a280200201d470d1e0c1f0b200b4200370300200c4200370300200341f8056a41086a22084200370300200342003703f805200341a8066a418480c400410910f2012008200341a8066a41086a221d290000370300200320032900a8063703f805200341a8066a41d8a4c900410c10f201200241086a201d290000370000200220032900a806370000200341206a200341f8056a412010f5012003280224410020032802201b2102200328028c044101470d1c20034190046a2802002002470d1c0c1e0b200341f8006a411510dc040c180b200141246a280200211d200341a0016a200141196a29000037030020034198016a200141116a29000037030020034190016a200141096a290000370300200320012900013703880120022d0000210120022d00012108200228022822022002280200417f6a221e3602000240024002400240024020010d000240201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200841ff01714101470d01200341d0016a201d10a402200341e8046a20032802d001220220032802d80110a502024020032802d401450d00200210390b200328029c054103460d10200341a8066a41066a200341e8046a41900110c30a1a200341a0026a200341a8066a41960110c30a1a200341d8036a200341a0026a41066a41900110c30a1a200341f8056a41186a22024200370300200341f8056a41106a22014200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a41b9fec300410610f201201e200341a8066a41086a2208290000370300200320032900a8063703f805200341a8066a41b0eec900410610f20120022008290000370300200120032900a806370300200341d0006a200341f8056a412010f501200328025421072003280250210b200342f0f2bd99e6ac9db7e4003703a806200341a0026a200341a8066a201d10a602200341d8036a41186a290300210a20032903e8032105200328029404210d200328028804210c2002420037030020014200370300201e4200370300200342003703f805200341a8066a41b9fec300410610f201201e2008290000370300200320032900a8063703f805200341a8066a41b0eec900410610f20120022008290000370300200120032900a806370300200341c8006a200341f8056a412010f501200328024c41c0f0006e210220074100200b1b200c4f0d022002410020032802481b200d4b0d02200341d0016a411110dc040c030b201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00b8030c180b200341e8046a200341a0026a10dd02200341a8066a20032802e804220120032802f00410e102200341a8066a41106a290300420020032903a80642015122021b210420032903b006420020021b2120024020032802ec04450d00200110390b202020055a2004200a5a2004200a511b0d01200341d0016a410f10dc040b200320032900d101370380022003200341d0016a41086a2800003600870220032d00d00122024108470d0d0b200341a8066a20034188016a200328029c04220210c109200341b0066a290300212020032903a80621040240200341bc066a280200450d0020032802b80610390b0240200420208450450d00200341b8036a411210dc040c150b200341a8066a200341a0026a20034188016a20042020410110eb07200320032900a906370398062003200341a8066a41086a28000036009f06024020032d00a80622014108470d0020034188016a200210bf09200341f0036a4200200a20207d2005200454ad7d221f200520047d2221200556201f200a56201f200a511b22021b37030020034200202120021b3703e803200341e8046a201d10a40220032802f004210120032802e8042102200341003602b006200342013703a806200341d8036a200341a8066a1096052002200120032802a806221e20032802b00610a302024020032802ac06450d00201e10390b024020032802ec04450d00200210390b200341e0066a2020370300200341d8066a2004370300200341b1066a200329038801370000200341d4066a201d360200200341a8066a41086a41023a0000200341c9066a200341a0016a290300370000200341c1066a20034198016a290300370000200341b9066a20034188016a41086a2903003700002003410c3a00a806200341a8066a10fc010c170b200341b8036a41086a200328009f0636000020032003290398063700b903200320013a00b8030c140b200141046a280200211d20022d0001210820022d00002101200228022822022002280200417f6a221e36020002400240024002400240024020010d000240201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200841ff01714101470d01200341f8056a201d10a402200341e8046a20032802f805220220032802800610a502024020032802fc05450d00200210390b200328029c054103460d05200341a8066a41066a200341e8046a41900110c30a1a200341a0026a200341a8066a41960110c30a1a200341d8036a200341a0026a41066a41900110c30a1a200341f8056a41186a22024200370300200341f8056a41106a22014200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a41b9fec300410610f201201e200341a8066a41086a2208290000370300200320032900a8063703f805200341a8066a41b0eec900410610f20120022008290000370300200120032900a806370300200341e0006a200341f8056a412010f501200328026421072003280260210b200342f0f2bd99e6ac9db7e4003703a806200341b8036a200341a8066a201d10a602200341d8036a41186a290300210a20032903e8032104200328029404210d200328028804210c2002420037030020014200370300201e4200370300200342003703f805200341a8066a41b9fec300410610f201201e2008290000370300200320032900a8063703f805200341a8066a41b0eec900410610f20120022008290000370300200120032900a806370300200341d8006a200341f8056a412010f501200328025c41c0f0006e210220074100200b1b200c4f0d022002410020032802581b200d4b0d02200341e8046a411110dc040c030b201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341a0016a41003a0000200341a8016a41023a000020034200370390010c160b200341a0026a200341b8036a10dd02200341a8066a20032802a002220120032802a80210e102200341a8066a41106a290300420020032903a80642015122021b210520032903b006420020021b2120024020032802a402450d00200110390b202020045a2005200a5a2005200a511b0d01200341e8046a410f10dc040b200320032900e904370380022003200341e8046a41086a2800003600870220032d00e80422024108470d0f0b200341a8066a200328029c04220d10bd0920032802b0062202417f4c0d0d20032802a80621010240024020020d004101211e0c010b20021038221e450d0a0b201e2001200210c30a211e024020032802ac06450d00200110390b200341c0026a4100360200200341b4026a2002360200200341a0026a41106a200236020020034180023b01c8022003412b3602c402200342013703b8022003201e3602ac02200341003602a802200342013703a002200341a8066a200341a0026a10cc090240024002400240200341d8066a280200220b450d0041f5032101200341d0066a210c200341f8056a410172220e41076a210f0340200341e8046a41186a200341a8066a41186a2202290300221f370300200341e8046a41106a200341a8066a41106a221e2903002221370300200341e8046a41086a200341a8066a41086a22082903002222370300200320032903a80622233703e804200c290300212020032903c806210520032802dc0621072002201f370300201e202137030020082022370300200320233703a8062001417f6a2201450d03200341f8056a200341b8036a200341a8066a20052020410110eb072003200e290000370398062003200f28000036009f0620032d00f80522024108470d02200341a8066a200d10bf09200420057d221f200456200a20207d2004200554ad7d2204200a562004200a511b210202402007450d00200b10390b4200200420021b210a4200201f20021b2104200341a8066a200341a0026a10cc0920032802d806220b0d000b200341f0036a200a370300200320043703e8030b024020032802a402450d0020032802a00210390b024020032802b002450d0020032802ac0210390b024020032802bc02450d0020032802b80210390b200341a0026a201d10a40220032802a802210120032802a0022102200341003602b006200342013703a806200341d8036a200341a8066a1096052002200120032802a806221e20032802b00610a302024020032802ac06450d00201e10390b024020032802a402450d00200210390b200341b0066a41043a00002003410c3a00a806200341a8066a410c6a201d360200200341a8066a10fc01200341a0016a41003a000020034198016a420037030020034201370390010c020b200341d8036a41186a200a370300200341b0016a200328009f06360000200341a8016a20023a000020034188016a41186a41003a0000200320043703e80320032003290398063700a9012003420037039001200342013703880102402007450d00200b10390b024020032802a402450d0020032802a00210390b024020032802b002450d0020032802ac0210390b20032802bc02450d1520032802b80210390c150b200341f0036a200a370300200320043703e80302402007450d00200b10390b024020032802a402450d0020032802a00210390b024020032802b002450d0020032802ac0210390b024020032802bc02450d0020032802b80210390b200341a0026a201d10a40220032802a802210120032802a0022102200341003602b006200342013703a806200341d8036a200341a8066a1096052002200120032802a806221e20032802b00610a302024020032802ac06450d00201e10390b024020032802a402450d00200210390b200341b0066a41033a00002003410c3a00a806200341a8066a410c6a201d360200200341a8066a10fc01200341a0016a41003a000020034200370390010b200341d0016a41106a20034188016a41106a290300220a370300200341d0016a41186a20034188016a41186a2903002204370300200320032903900122053703d801200041186a2004370300200041106a200a37030020002005370308200042003703000c210b200341a8016a410910dc04200341a0016a41003a000020034200370390010c120b200141046a280200211d2002411a6a290100210a200241196a2d00002107200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f0100211b20022d0001210820022d00002101200228022822022002280200417f6a221e36020002400240024002400240024020010d000240201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200841ff01714101470d012003200a3703a001200320073a009f012003200b3a009e012003200c3b019c012003200d3a009b012003200e3a009a012003200f3b019801200320103a009701200320113a009601200320123b019401200320133a009301200320143a009201200320153b019001200320163a008f01200320173a008e01200320183b018c01200320193a008b012003201a3a008a012003201b3b018801200341d0016a201d10a402200341e8046a20032802d001220220032802d80110a502024020032802d401450d00200210390b200328029c054103460d03200341a8066a41066a200341e8046a41900110c30a1a200341a0026a200341a8066a41960110c30a1a200341d8036a200341a0026a41066a41900110c30a1a200341f8056a41186a2202420037030020034188066a22014200370300200341f8056a41086a221e4200370300200342003703f805200341a8066a41b9fec300410610f201201e200341a8066a41086a2208290000370300200320032900a8063703f805200341a8066a41b0eec900410610f20120022008290000370300200120032900a806370300200341e8006a200341f8056a412010f501200328026c2102200328026821010240024020034188016a200341a0046a221e412010c60a450d002002410020011b200328028804490d010b20032903e803200341d8036a41186a29030084500d030b200341b8036a411410dc040c040b201e0d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00b8030c030b201e20032903d803200341d8036a41086a290300109f02200341a8066a201d10a40220032802a806220220032802b00610fd01024020032802ac06450d00200210390b200341a8066a41086a41053a00002003410c3a00a806200341a8066a410c6a201d360200200341a8066a10fc010c130b200341b8036a410910dc040b20032d00b8034108460d1120032902bc03210a0b20032802b8032102200041246a200a370200200041206a2002360200200041186a41003a000020004200370308200042013703000c1f0b200141c0006a2903002104200141386a2903002105200141306a28020021072001412c6a280200210b200141286a280200210c200141246a280200211d200341c0026a200141216a2f00003b0100200341b8026a200141196a290000370300200341b0026a200141116a290000370300200341a8026a200141096a29000037030020022d0000211e20022d000121082001290001210a200228022822022002280200417f6a22013602002003200a3703a002024002400240201e0d004100211e20010d022002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a22013602002001450d010c020b4101211e20010d012002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d010b200210390b2008201e7241ff01710d0c200341d8036a201d10a402200341a8066a20032802d803220220032802e00310a502024020032802dc03450d00200210390b024020032802dc0622024103460d00200341e8046a41086a2201200341f8066a221e290300370300200341e8046a41106a220820034180076a220d290300370300200341e8046a41186a220e20034188076a220f2903003703002003200341f0066a2903003703e804200341ec066a2802002110200341a8066a41086a290300210a200341a8066a41186a2211290300212020032903a806211f20032903b806212120032802e0062112200341d0066a200437030020112020370300200341e0066a2012360200200320053703c806200320213703b8062003200a3703b0062003201f3703a806200320103602ec062003200b3602e8062003200c3602e406200320023602dc06200320073602d806201e2001290300370300200d2008290300370300200f200e290300370300200320032903e8043703f00620034198076a200341a0026a41086a290300370300200341a0076a200341a0026a41106a290300370300200341a8076a200341a0026a41186a290300370300200341b0076a200341c0026a2f01003b0100200320032903a0023703900720034188016a201d10a40220032802900121012003280288012102200341003602e003200342013703d803200341a8066a200341d8036a1096052002200120032802d803221e20032802e00310a302024020032802dc03450d00201e10390b0240200328028c01450d00200210390b200341b0066a41093a00002003410c3a00a806200341a8066a410c6a201d360200200341a8066a10fc010c0f0b200341d0016a410910dc0420032d00d0014108460d0e20032902d401210a0c0d0b200141046a2802002109200141106a280200210b2001410c6a280200211e200141086a280200211d2002411a6a290100210a200241196a2d0000210c200241186a2d0000210d200241166a2f0100210e200241156a2d0000210f200241146a2d00002110200241126a2f01002111200241116a2d00002112200241106a2d000021132002410e6a2f010021142002410d6a2d000021152002410c6a2d000021162002410a6a2f01002117200241096a2d00002118200241086a2d00002119200241066a2f0100211a200241056a2d0000211b200241046a2d0000211c200241026a2f0100210620022d0001210720022d00002101200228022822022002280200417f6a220836020002400240024002400240024020010d00024020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200741ff01714101470d012003200a3703b8022003200c3a00b7022003200d3a00b6022003200e3b01b4022003200f3a00b302200320103a00b202200320113b01b002200320123a00af02200320133a00ae02200320143b01ac02200320153a00ab02200320163a00aa02200320173b01a802200320183a00a702200320193a00a6022003201a3b01a4022003201b3a00a3022003201c3a00a202200320063b01a002200b41204d0d02200341d8036a411610dc040c030b20080d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00d8030c010b200341e8046a200910a402200341a8066a20032802e804220220032802f00410a502024020032802ec04450d00200210390b024020032802dc064103460d00200341a8066a200341a0026a200341ec066a280200220210c1092003200341b0066a290300220a3703f004200320032903a80622043703e8040240200341bc066a280200450d0020032802b80610390b2004200a8450450d02200341d8036a411210dc040c010b200341d8036a410910dc040b0240201e450d00201d10390b20032d00d8034108460d0120032802d8032102200041246a20032902dc03370200200041206a2002360200200041186a41003a000020004200370308200042013703000c1f0b2003200b36028c012003201d36028801200320023602b8032003200341e8046a3602f805200320034188016a3602b0062003200341f8056a3602ac062003200341b8036a3602a806200341a0026a200341a8066a10bc09200341c9066a200341b8026a290300370000200341c1066a200341b0026a290300370000200341b9066a200341a0026a41086a290300370000200341b1066a20032903a002370000200341e0066a200b360200200341dc066a201e360200200341d8066a201d360200200341d4066a2009360200200341a8066a41086a410a3a00002003410c3a00a806200341a8066a10fc010b20004200370308200020032800d001360019200041186a41003a00002000411c6a200341d3016a280000360000200042003703000c1d0b200141046a280200210120022d0001211d20022d0000211e200228022822022002280200417f6a2208360200024002400240024002400240024002400240201e0d00024020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a221e201e280200417f6a221e360200201e0d00200210390b201d41ff01714101470d01200341a0026a200110a402200341a8066a20032802a002220220032802a80210a502024020032802a402450d00200210390b20032802dc064103460d0320032903b806200341c0066a2903008450450d02200341e8046a411210dc040c040b20080d002002280208200228020c2802001102000240200228020c280204450d00200228020810390b200241046a22012001280200417f6a220136020020010d00200210390b200341023a00e8040c030b20034190066a2202420037030020034188066a221e4200370300200341f8056a41086a22084200370300200342003703f805200341a8066a418480c400410910f2012008200341a8066a41086a221d290000370300200320032900a8063703f805200341a8066a41a4a4c900410810f2012002201d290000370300201e20032900a806370300200341a8066a200341f8056a4120109c0220032902ac06420020032802a80622021b220a422088a7410274211e200241002802ccdd4a20021b2207210202400340201e2208450d012008417c6a211e2002280200211d200241046a21022001201d470d000b0b0240200a42ffffffff0383500d00200710390b2008450d03200341e8046a411710dc040c010b200341e8046a410910dc040b20032d00e8044108460d0220032902ec04210a0b20032802e8042102200041246a200a370200200041206a2002360200200041186a41003a0000200042003703084201210a0c020b200110cf09200341b0066a410b3a00002003410c3a00a806200341a8066a410c6a2001360200200341a8066a10fc010b4200210a20004200370308200020032800a806360019200041186a41003a00002000411c6a200341ab066a2800003600000b2000200a3703000c1c0b200341b8036a410210dc040c180b200341b8036a410710dc040c170b200341f8006a410910dc040c100b200341f8006a410710dc040c0f0b1030000b200341f8006a41086a200328009f0636000020032003290398063700792003200b3a00780c0c0b200341b8036a410910dc040c080b200341b8036a41086a20032800870236000020032003290380023700b903200320023a00b8030c070b1034000b200341b0016a200328008702360000200341a8016a20023a0000200341a0016a41003a000020032003290380023700a90120034200370390010c040b200341023a00d0010b20032802d0012102200041246a200a370200200041206a2002360200200041186a41003a000020004200370308200042013703000c100b20004200370308200020032800f805360019200041186a41003a00002000411c6a200341fb056a280000360000200042003703000c0f0b200042003703082000200328008002360019200041186a41003a00002000411c6a20034183026a280000360000200042003703000c0e0b200341d0016a41286a20034188016a41286a290300220a370300200341d0016a41206a20034188016a41206a2903002204370300200341d0016a41186a20034188016a41186a2903002205370300200341d0016a41106a20034188016a41106a29030022203703002003200329039001221f3703d801200041286a200a370300200041206a2004370300200041186a2005370300200041106a20203703002000201f370308200042013703000c0d0b20032d00b8034108460d0120032902bc03210a0b20032802b8032102200041246a200a370200200041206a2002360200200041186a41003a000020004200370308200042013703000c0b0b2000420037030820002003280078360019200041186a41003a00002000411c6a200341fb006a280000360000200042003703000c0a0b2001450d00201e10390b20032d00784108460d040b20032802782102200041246a200329027c370200200041206a2002360200200041186a41003a000020004200370308200042013703000c070b201b10cf0920034190046a20023602002003410136028c040c010b201b10cf0920034190046a201d3602002003410236028c040b200341e8046a201b10a40220032802f004210820032802e8042102200341003602b006200342013703a806200341d8036a200341a8066a1096052002200820032802a806221d20032802b00610a302024020032802ac06450d00201d10390b024020032802ec04450d00200210390b200341e0066a200a370300200341d8066a2004370300200341b1066a200329038002370000200341d4066a201b360200200341a8066a41086a41013a0000200341c9066a20034198026a290300370000200341c1066a20034190026a290300370000200341b9066a20034180026a41086a2903003700002003410c3a00a806200341a8066a10fc012001450d00201e10390b2000420037030820002003280071360019200041186a41003a00002000411c6a200341f4006a280000360000200042003703000c030b20032d00b8034108460d010b20032802b8032102200041246a20032902bc03370200200041206a2002360200200041186a41003a000020004200370308200042013703000c010b200042003703082000200328008002360019200041186a41003a00002000411c6a20034183026a280000360000200042003703000b200341b0116a24000bd20a020c7f077e230041f00b6b22092400200941d8006a200510b607200941e8006a2009280258220a200928026010b30702400240024002400240024020092d009801220b4102460d00200941286a41286a220c200941e8006a41286a220d290300370300200941286a41206a220e200941e8006a41206a220f290300370300200941286a41186a2210200941e8006a41186a2211290300370300200941286a41106a2212200941e8006a41106a2208290300370300200941286a41086a2213200941e8006a41086a2214290300370300200920092903683703280240200928025c450d00200a10390b200d200c290300370300200f200e2903003703002011201029030037030020082012290300370300201420132903003703002009200929032837036820082001412010c60a450d0120004183323b0100200041086a4108360200200041046a41a0bdc400360200200041026a41023a00000c030b0240200928025c450d00200a10390b42002115420021162008450d0120004183323b0100200041086a410b360200200041046a41c0bec400360200200041026a410c3a00000c020b0240200b450d0020004183323b0100200041086a410a360200200041046a41a4bec400360200200041026a410a3a00000c020b200941f0006a2903002116200929036821150b200941e8006a200510f80120092802682208200928027010f90141ff0171210a0240200928026c450d00200810390b200a4107460d0120004183323b0100200041086a4111360200200041046a4184bdc400360200200041026a41013a00000b0240200741046a280200450d00200728020010390b200641046a280200450d01200628020010390c010b2007280204210a2007280200210b200628020421082006280200210c02400240024020072802082207418080c0014d0d004183b20c2107410c210641b0bdc40021050c010b200628020822064181a001490d014183b21021074110210641c4bdc40021050b0240200a450d00200b10390b02402008450d00200c10390b20002007360200200041086a2006360200200041046a20053602000c010b200941186a2006ad42004280e1eb17420010c20a200941086a2007ad221742004280e1eb17420010c20a0240024020032009290318221820092903087c22194280a0e5b9c291017c221a2002a722071b220220157d221b2002562004200941186a41086a290300200941086a41086a2903007c2019201854ad7c201a201954ad7c20071b220320167d2002201554ad7d220420035620042003511b0d00200941e8006a2001201b200410f701200920092900693703282009200941e8006a41086a28000036002f20092d006822074108460d0120002009290328370001200020073a0000200041086a200928002f36000002402008450d00200c10390b200a450d02200b10390c020b201520027d2219201556201620037d2015200254ad7d220420165620042016511b0d00200120192004109f020b200941e8006a41186a200141086a220729000037030020094188016a200141106a220d29000037030020094190016a220e200141186a220f29000037030020092002370368200941003a00980120092003370370200920012900003703782005200941e8006a10b707200941fc006a2017370200200941e8006a41106a200a3602002009200b360274200920063602702009200836026c2009200c3602682005200941e8006a10ab071a200e200536020020094185016a200f290000370000200941fd006a200d290000370000200941f5006a2007290000370000200941003a006c2009410a3a00682009200129000037006d200941e8006a10fc01200041083a00000b200941f00b6a24000bdb1403127f017e077f230041c0026b220324000240024002400240024020012d00000e03000102000b410221044100210502400240024020012d00010e03000102000b41002105410021040c010b200141026a2f010022064108762105200141216a2d000021072001411d6a2800002108200141196a2800002109200141156a280000210a200141116a280000210b200141106a2d0000210c2001410c6a280200210d200141086a280200210e200141046a280200210f410121040b200f4108762110410121110c030b200141046a280200220f4108762110410021050c010b4102210f024002400240200141046a2d00000e03000102000b2001410c6a280200210d200141086a280200210e4100210f0c010b200141056a2f0000200141076a2d0000411074722110200141216a2d000021072001411d6a2800002108200141196a2800002109200141156a280000210a200141116a280000210b200141106a2d0000210c2001410c6a280200210d200141086a280200210e4101210f0b410021050b410021110b02400240024020012802282212280200221341016a221441014d0d0020122014360200024002402011450d0020122013360200200441ff01714101470d01200320073a001f2003200836001b200320093600172003200a3600132003200b36000f2003200c411874200d4108767236000b2003200d411874200e410876723600072003200e3a00062003201041ffffff077122124110763a0005200320124108763a0004200320103a00032003200f3a000220032005410874200641ff0171723b0100200341b0026a200210b607200341f8016a20032802b002221220032802b80210b307024020032d00a802220f4102460d00200341c8016a41286a2211200341f8016a41286a290300370300200341c8016a41206a2213200341f8016a41206a290300370300200341c8016a41186a2214200341f8016a41186a290300370300200341c8016a41106a220d200341f8016a41106a290300370300200341c8016a41086a220e200341f8016a41086a290300370300200320032903f8013703c801024020032802b402450d00201210390b20034192016a410e6a200e29030037010020034192016a41166a200d29030037010020034192016a411e6a201429030037010020034192016a41266a201329030037010020034192016a412e6a20112903002215370100200341d8006a412e6a22122015370100200320032903c80137019801200341d8006a41086a20034192016a41086a290100370300200341d8006a41106a20034192016a41106a290100370300200341d8006a41186a20034192016a41186a290100370300200341d8006a41206a20034192016a41206a290100370300200341d8006a41286a20034192016a41286a2901003703002003200329019201370358200341206a41286a2012290100370300200341206a41206a200341d8006a41266a290100370300200341206a41186a200341d8006a411e6a290100370300200341206a41106a200341d8006a41166a290100370300200341206a41086a200341d8006a410e6a2901003703002003200329015e370320200f0d02200341306a2003412010c60a0d020c040b024020032802b402450d00201210390b200341d8006a41086a20034192016a41086a290100370300200341d8006a41106a20034192016a41106a290100370300200341d8006a41186a20034192016a41186a290100370300200341d8006a41206a20034192016a41206a290100370300200341d8006a41286a20034192016a41286a2901003703000c010b201220133602000b024002400240024020012d00000e03000102000b200c2111200b2113200a21142009210d2008210e20072104024020012d00014101470d00200141216a2d000021042001411d6a280000210e200141196a280000210d200141156a2800002114200141116a2800002113200141106a2d00002111200141046a280200210f0b200f410876211041002106201121162013211720142118200d2119200e211a2004211b0c020b200141046a280200220f410876211041012106200c2111200c2116200b2113200a21142009210d2008210e20072104200b2117200a2118200921192008211a2007211b0c010b4102210f200c2111200b2113200a21142009210d2008210e20072104024002400240200141046a2d00000e03000102000b4100210f200c2111200b2113200a21142009210d2008210e200721040c010b200141056a2f0000200141076a2d0000411074722110200141216a2d000021042001411d6a280000210e200141196a280000210d200141156a2800002114200141116a2800002113200141106a2d000021114101210f0b41002106200c21162011210c200b2117200a2118200921192008211a2007211b2013210b2014210a200d2109200e2108200421070b20012802282212280200220541016a221c41014d0d002012201c3602002012200536020020062010410874200f41ff017172200246710d010240024002400240024020012d00000e03000102000b4102210b02400240024020012d00010e03000102000b4100210b0c010b200141216a2d0000211b2001411d6a280000211a200141196a2800002119200141156a2800002118200141116a2800002117200141106a2d000021162001410c6a280200210f200141086a2802002102200141046a2802002112200141026a2f0100210a4101210b0b20124108762110410021060c030b200141046a2802002212410876211041012106201121162013211720142118200d2119200e211a2004211b0c010b4102210641022112024002400240200141046a2d00000e03000102000b2001410c6a280200210f200141086a2802002102410021120c010b200341fa016a200141246a2d00003a00002003200141226a2f00003b01f801200141056a2f0000200141076a2d0000411074722110200141216a2d000021072001411d6a2800002108200141196a2800002109200141156a280000210a200141116a280000210b200141106a2d0000210c2001410c6a280200210f200141086a2802002102410121120b200341206a41046a200341f8016a41046a2f01003b0100200320032801f801360220200c2116200b2117200a2118200921192008211a2007211b0b0b2001280228220c28020041016a220941014d0d0020034199026a201b3a000020034195026a201a36000020034191026a20193600002003418d026a201836000020034189026a201736000020034188026a20163a000020034184026a200f360200200341f8016a41086a2002360200200c20093602002003419a026a20032802203601002003419e026a200341246a2f01003b01002003200a3b01fa012003200b3a00f901200320063a00f8012003200c3602a00220032010410874201241ff0171723602fc010240200341f8016a10a207450d00200041023a00000c030b200041083a00000c020b00000b200041083a00000b200128022822012001280200417f6a220c3602000240200c0d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a220c200c280200417f6a220c360200200c0d00200110390b200341c0026a24000b880402037f027e23004180016b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041023a00300c010b200328021421042003200341106a41086a28020036022420032001360220200341c8006a200341206a108002024002400240024020032d00484101460d00200341c0006a200341e1006a290000370300200341286a41106a200341d9006a290000370300200341286a41086a200341d1006a29000037030020032003290049370328200328022422024110490d002003200241706a22023602242002450d002003280220220541086a2900002106200529000021072003200541116a3602204100210220052d00100e020201000b2003420037022c2003410028029cde4a3602282003410c3602742003200341086a3602702003200341286a36027c200341dc006a41013602002003420137024c200341e4b4c4003602482003200341f0006a360258200341fc006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b410221020c020b410121020b20002003290328370010200041286a200341286a41186a290300370000200041206a200341386a290300370000200041186a200341306a29030037000020002006370308200020073703000b200020023a00302004450d00200110390b20034180016a24000be90301067f230041d0006b22022400200241086a41a1ddc400410910f201200241186a41e8a8c500410b10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bce0a1a077f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f057e037f127e230041e0016b220224002002200010a402200241c0006a200228020022032002280208220410a502200241106a41086a2205200241c8016a22062903003703002002200241c0016a220729030037031020024180016a22082903002109200241d8006a220a290300210b200241e8006a220c290300210d200241f0006a220e290300210f200241f8006a2210290300211120024188016a2212290300211320024190016a2214290300211520024198016a22162903002117200241a0016a22182903002119200241a8016a221a290300211b200241b0016a221c290300211d200241b8016a221e290300211f20022903402120200229034821212002290350212220022903602123200241206a200110a402200241c0006a200228022022242002280228222510a502200241306a41086a22262006290300370300201e2903002127201c2903002128201a29030021292018290300212a2016290300212b2014290300212c2012290300212d2008290300212e2010290300212f200e2903002130200c2903002131200a290300213220052903002133200229036021342002290350213520022903482136200229034021372005202629030037030020022007290300370330200241c0006a41086a20333703002002290310213820022002290330370310200220383703402026203337030020022038370330201e201f370300201c201d370300201a201b3703002018201937030020162017370300201420153703002012201337030020102011370300200e200f370300200c200d370300200a200b370300200620262903003703002007200229033037030020022009370380012002202337036020022022370350200220213703482002202037034002400240200f422088a74103470d002024202510fd010c010b200241003602d801200242013703d001200241c0006a200241d0016a1096052024202520022802d001222620022802d80110a30220022802d401450d00202610390b02402002280224450d00202410390b200241a8016a2029370300200241a0016a202a37030020024188016a202d370300200241e8006a2031370300200241c0016a2002290310370300200241b0016a202837030020024190016a202c370300200241f0006a2030370300200241c8016a200241186a290300370300200241b8016a202737030020024198016a202b370300200241f8006a202f370300200241d8006a20323703002002202e3703800120022034370360200220363703482002203737034020022035370350024002402030422088a74103470d002003200410fd010c010b2002410036023820024201370330200241c0006a200241306a1096052003200420022802302226200228023810a3022002280234450d00202610390b02402002280204450d00200310390b200241106a200010f001200241c0006a200228021022002002280218220610f1012002290244210f20022802402126200241306a200110f001200241c0006a200228023022052002280238220710f10120022902442130200228024021012002202641002802fcad49220a20261b220c3602402002200f420020261b220f37024420052007200241c0006a10fe010240200fa72226450d00202641386c450d00200c10390b2030420020011b210f2001200a20011b212602402002280234450d00200510390b200220263602402002200f37024420002006200241c0006a10fe010240200fa72201450d00200141386c450d00202610390b02402002280214450d00200010390b200241e0016a24000be90301067f230041d0006b22022400200241086a41a1ddc400410910f201200241186a41f4eec600410510f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000be60203057f027e017f230041206b220224002002200010b60720022802082103200228020021042002410036021820024201370310200241106a4100412010810120022802102200200228021822056a22062001290010370000200641086a200141186a290000370000200641106a200141206a290000370000200641186a200141286a2900003700002002200541206a2206360218200141086a29030021072001290300210802402002280214220520066b410f4b0d00200241106a200641101081012002280214210520022802102100200228021821060b200020066a22092007370008200920083700002002200641106a220636021820012d00302101024020052006470d00200241106a2005410110810120022802102100200228021821060b200020066a20013a0000200420032000200641016a10a30202402002280214450d00200228021010390b02402002280204450d00200228020010390b200241206a24000be20401057f230041e0006b22032400200341086a41e0edc600410410f201200341186a41b0dcc700411810f2012003410036024020034201370338200341386a4100410410810120032802382204200328024022056a20013600002003200541046a22013602400240200328023c220520016b41034b0d00200341386a20014104108101200328023c210520032802382104200328024021010b200420016a200236000020032004200141046a220110f301370348200341dc006a200420016a360200200320043602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a108d0102402005450d00200410390b024002402003280230220541206a2204417f4c0d000240024020040d00410121010c010b200410382201450d020b2000200136020041002102200041086a22064100360200200041046a2207200436020002402004410f4b0d0020004100411010810120062802002102200028020021010b200120026a22042003290008370000200441086a200341086a41086a2900003700002006200241106a220436020002402007280200220220046b410f4b0d00200020044110108101200041046a2802002102200041086a28020021040b200041086a2206200441106a22013602002000280200220720046a22042003290018370000200441086a200341186a41086a290000370000200328022821040240200220016b20054f0d0020002001200510810120062802002101200028020021070b200720016a2004200510c30a1a2006200120056a3602000240200328022c450d00200410390b200341e0006a24000f0b1034000b1030000b9b1505057f027e017f017e157f230041206b22012400200141106a20002802002202109a0920012802102203200128021810fd0102402001280214450d00200310390b200141106a2002109b0920012802102203200128021810fd0102402001280214450d00200310390b2001200210c806200141106a2001280200220320012802082204109c020240024020012802102205450d002003200410fd01200129021421060c010b41002802ccdd4a2105420021060b02402001280204450d00200310390b20012002109909200141106a2001280200220320012802082204109c02200642208821070240024020012802102208450d002003200410fd01200129021421090c010b41002802ccdd4a2108420021090b2007a7210402402001280204450d00200310390b02400240024002402004410274220a410275220b2009422088a7220c410274220d4102756a2203200b490d000240200341ffffffff01712003470d002003410374220b417f4c0d00024002400240200b0d004104210e0c010b200b1038220e450d010b4100210f200141003602082001200e3602002001200b410376220b3602040240200b20034f0d002001410020031096062001280208210f2001280200210e0b200e200f4103746a210302402004450d002003200528020036020020032002360204200f41016a210f200341086a210320044101460d00200a417c6a210b200541046a210403402004280200210e200341046a20023602002003200e360200200341086a2103200f41016a210f200441046a2104200b417c6a220b0d000b0b0240200642ffffffff0383500d00200510390b0240200c450d002008210403402000280200210b200341046a20042802003602002003200b360200200341086a2103200f41016a210f200441046a2104200d417c6a220d0d000b0b2001200f3602080240200942ffffffff0383500d00200810390b200128020021100240200f41144b0d00200f41014d0d06200f41037420106a41706a21034101210403402003200441016a2204109c09200341786a2103200f2004470d000c070b0b200f410176220341ffffffff01712003470d0120034103742211417f4c0d01201110382212450d00200142003702144100210a200141002802ccdd4a2213360210201041786a2114201041686a2115200f211603402016210c41002116410121040240200c417f6a220b450d00024002400240024002400240417f2010200b4103746a2204280200220d200c410374221720106a41706a2200280200220347200d2003491b220d417f200441046a280200220e200041046a280200220447200e2004491b200d1b417f460d00200c417e6a2118201520176a210d410021164100210b034002402018200b470d00200c21040c080b2003200d280200220049210e200320004721022004200d41046a280200220349210520042003472108200d41786a210d200b41016a210b2003210420002103417f2002200e1b2200417f200820051b20001b417f470d000b200b41016a2104200b417f73200c6a210b0c010b201520176a210d024003400240200b4101470d004100210b0c020b2003200d280200220049210e200320004721022004200d41046a280200220349210520042003472108200d41786a210d200b417f6a210b2003210420002103417f2002200e1b2200417f200820051b20001b417f460d000b0b200c200b490d01200c200f4b0d02200c200b6b22044101762200450d002010200b4103746a2103201420176a210d0340200329020021062003200d290200370200200d2006370200200341086a2103200d41786a210d2000417f6a22000d000b0b0240200b0d00200b21160c050b0240200441094d0d00200b21160c050b200c200f4b0d02200c200b6b2104200b417f6a21032014200b4103746a210d0340200c2003490d0a200d200441016a2204109c092003417f6a220b20034f0d04200d41786a210d200b21032004410a490d000c040b0b200b200c4194acc900105f000b200c200f4194acc9001055000b200c200b417f6a2203490d06200c200f41a4acc9001055000b200b41016a21160b0240200a2001280214470d00200141106a200a10a002200128021021132001280218210a0b2013200a4103746a22032004360204200320163602002001200128021841016a221936021802400240201941024f0d002019210a0c010b2001280210211303400240024002400240024020132019220a417f6a22194103746a2203280200450d00200a41037420136a220b41746a280200220d200328020422044b0d010b200a4103490d02200328020421042013200a417d6a22174103746a28020421030c010b200a41024d0d042013200a417d6a22174103746a28020422032004200d6a4d0d00200a41034d0d04200b41646a2802002003200d6a4b0d040b20032004490d010b200a417e6a21170b0240024002400240024002400240200a201741016a22034d0d00200a20174d0d01201320174103746a221a280204221b201a2802006a2204201320034103746a221c280200221d490d022004200f4b0d03201a41046a211e2010201d4103746a220b201c2802042218410374220d6a21032004410374210002402004201d6b220e20186b22042018490d002012200b200d10c30a2204200d6a210d0240201841014e0d00200421040c080b200e20184a0d05200421040c070b201220032004410374220d10c30a220c200d6a210d20184101480d0520044101480d05201420006a210e0340200e200341786a2204200d41786a2200417f20002802002202200428020022054720022005491b2202417f200041046a2802002205200441046a28020022084720052008491b20021b417f4622021b290200370200200d200020021b210d200b2004200320021b22034f0d06200e41786a210e200d200c4b0d000c060b0b2003200a41b4acc900103c000b2017200a41c4acc900103c000b201d200441d4acc900105f000b2004200f41d4acc9001055000b201020006a2105200421040340200b20032004417f200328020022002004280200220e472000200e491b2200417f200341046a280200220e200441046a280200220247200e2002491b20001b417f4622001b2902003702002004200441086a20001b2104200b41086a210b200341086a200320001b220320054f0d022004200d4f0d020c000b0b200c21042003210b0b200b2004200d20046b41787110c30a1a201e201b20186a360200201a201d360200201c201c41086a200a20176b41037441706a10c40a1a200120193602184101210a201941014b0d000b0b2016450d050c000b0b1030000b1034000b4180eaca0041114188c8ca001035000b2003200c41a4acc900105f000b0240200128021441ffffffff0171450d00200128021010390b2011450d00201210390b200128020021020240200128020822044102490d002002410c6a21032004417f6a210d410121040340024002402003417c6a2200280200200441037420026a220e41786a220b280200470d002003280200200b41046a280200460d010b200e2000290200370200200441016a21040b200341086a2103200d417f6a220d0d000b200120043602080b2001280204210d02402004450d002004410374210420022103034020032902002206a72006422088a7109d09200341086a2103200441786a22040d000b0b0240200d41ffffffff0171450d00200210390b200141206a24000b971706067f027e097f027e0a7f047e230041a0016b22032400200341386a22044200370300200341306a22054200370300200341206a41086a2206420037030020034200370320200341f8006a41e0edc600410410f2012006200341f8006a41086a220729000037030020032003290078370320200341f8006a41e4dac700411b10f201200420072900003703002005200329007837030020034188016a200341206a1095080240024002402003280288012208450d0002400240200329028c01220942ffffffff0f560d00200942ffffffff018350450d010c020b02402009422088220aa72206450d0041002802ccdd4a210b200341c1006a210c200341cc006a210d200341206a41086a210e200341386a210f024003400240024002400240024002402006417f6a22062009422088a722104f0d00200341f8006a200820064103746a22112802002204201141046a2802002207109809200341206a20032802782212200328028001109408024020032d004022134102460d002003200c280000360288012003200c41036a28000036008b01200e290300211420032903202115200328023c21162003280238211720032802342118200328023021190b0240200328027c450d00201210390b20134102460d012003200328008b0136001b200320032802880136021802402013450d00200341206a200410f80120032802202212200328022810f901211302402003280224450d00201210390b201341ff017121130240024041000d0020130e080100000000000001010b2013417b6a41014d0d00200341206a200710f80120032802202212200328022810f901211302402003280224450d00201210390b201341ff01712113024041000d0020130e080100000000000001010b2013417b6a4102490d00200d4200370200200f2001370300200d41086a41003a0000200320003703302003201537032020032018360248200320163602442003201736024020032014370328200341f8006a2004200710a90520032802782213200328028001200341206a10ac050240200328027c450d00201310390b20034188016a200710c806200341206a200328028801200328029001109c02024002402003280220221a0d002003420037027c2003200b3602784100211b200b211a4100211c0c010b2003290224210a2003201a3602782003200a37027c200a422088a7211c200aa7211b0b4100211302400240201c450d00201c211d201c21120340024002402004201a201d41017620136a221d4102746a280200221e4d0d00201d41016a21130c010b201d21122004201e460d030b201220136b211d201220134b0d000b201c2013490d060b0240201c201b470d00200341f8006a201b10b7012003280278211a0b201a20134102746a221241046a2012201c20136b41027410c40a1a201220043602002003201c41016a360280010b200e200341f8006a41086a221b28020036020020032003290378220a3703202003280290012112200328028801211302400240200aa7221d0d002013201210fd010c010b2003201236029c012003201336029801200341206a20034198016a109703200328022441ffffffff0371450d00201d10390b0240200328028c01450d00201310390b20034188016a2004109909200341206a200328028801200328029001109c02024002402003280220221a0d002003420037027c2003200b3602784100211f200b211a4100211c0c010b2003290224210a2003201a3602782003200a37027c200a422088a7211c200aa7211f0b4100211302400240201c450d00201c211d201c21120340024002402007201a201d41017620136a221d4102746a280200221e4d0d00201d41016a21130c010b201d21122007201e460d030b201220136b211d201220134b0d000b201c2013490d070b0240201c201f470d00200341f8006a201f10b7012003280278211a0b201a20134102746a221241046a2012201c20136b41027410c40a1a201220073602002003201c41016a360280010b200e201b28020036020020032003290378220a3703202003280290012112200328028801211302400240200aa7221d0d002013201210fd010c010b2003201236029c012003201336029801200341206a20034198016a109703200328022441ffffffff0371450d00201d10390b200328028c01450d00201310390b200341206a2004109a09200341106a20032802202212200328022810f5012003280214410020032802101b211302402003280224450d00201210390b0240024020134102490d00200341206a2004109a092003280228211d2003280220211220032013417f6a3602782012201d200341f8006a410410a3022003280224450d01201210390c010b200341206a2004109a0920032802202213200328022810fd012003280224450d00201310390b200341206a2007109b09200341086a20032802202212200328022810f501200328020c410020032802081b211302402003280224450d00201210390b0240024020134102490d00200341206a2007109b092003280228211d2003280220211220032013417f6a3602782012201d200341f8006a410410a3022003280224450d01201210390c010b200341206a2007109b0920032802202213200328022810fd012003280224450d00201310390b201120082010417f6a22134103746a290200370200200341206a2004200710980920032802202204200328022810fd01200942ffffffff0f8321092013ad422086210a02402003280224450d00200410390b2009200a8421092006450d080c070b201941016a22132002460d04200c2003280218360000200c41036a200328001b36000020032015370320200341003a00402003201636023c20032017360238200320183602342003201336023020032014370328200341f8006a2004200710980920032802782204200328028001200341206a10a008200328027c450d05200410390c050b2006201041f8edc600103c000b4188eec60041da0041e4eec6001065000b2013201c1044000b2013201c1044000b200341206a2004109a092003200328022022132003280228221210f50120032003280204417f6a417f20032802001b36027820132012200341f8006a410410a30202402003280224450d00201310390b201120082010417f6a22104103746a290200370200200341f8006a20042007109809200341206a2003280278221320032802800122111094082010ad210a024020032d004041024622070d002013201110fd010b200942ffffffff0f832109200a422086210a20032903202120200e29030021210240200328027c450d00201310390b2009200a8421092022202020071b21222023202120071b212320070d00200341206a200410ec08200341206a20222023109f022006450d020c010b20060d000b0b2009422088210a0b200341386a4200370300200341306a4200370300200341206a41086a2204420037030020034200370320200341f8006a41e0edc600410410f2012004200341f8006a41086a220629000037030020032003290078370320200341f8006a41e4dac700411b10f201200541086a200629000037000020052003290078370000200aa722044103744104722206417f4c0d02200610382207450d0320034100360280012003200636027c20032007360278200341f8006a200410d2010240024020040d002003280278210720032802800121040c010b200820044103746a21102003280280012104200821060340200628020021110240200328027c221320046b41034b0d00200341f8006a20044104108101200328027c211320032802800121040b2003280278220720046a20113600002003200441046a220436028001200641046a28020021110240201320046b41034b0d00200341f8006a200441041081012003280278210720032802800121040b200720046a20113600002003200441046a220436028001200641086a22062010470d000b0b200341206a41202007200410a3020240200328027c450d00200710390b200942ffffffff0183500d010b200810390b200341a0016a24000f0b1034000b1030000b8d0205017f017e037f017e037f230041306b2200240042002101200041186a4200370300200041106a22024200370300200041086a420037030020004200370300200041e0edc600410410f20120024190ddc700411c10f201200041206a20001095080240024020002802202203450d002000412010fd01200029022421010c010b41002802ccdd4a21030b02402001422088a72202450d0020024103742104200321020340200020022902002205a722062005422088a7220710b80720002802002208200028020810fd0102402000280204450d00200810390b200241086a210220062007109d09200441786a22040d000b0b0240200142ffffffff0183500d00200310390b200041306a24000be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41ac84c800410f10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bf30403037f017e057f230041c0006b22022400200241106a2000109e09200241086a200228021022032002280218220410f50142012105024002400240200228020c410020022802081b22060d00200241206a200010be062001280208220341046a2204417f4c0d012001280200210720022802282108200228022021090240024002400240024002402004450d00200410382200450d08200241003602382002200436023420022000360230200341c000490d02200341808001490d032003418080808004490d04410021040c010b2002410036023820024201370330200241306a4100410110810120022802302100200228023821040b200020046a41033a00002002200441016a22043602380240200228023420046b41034b0d00200241306a20044104108101200228023821040b2002280230220020046a2003360000200441046a21040c030b200020034102743a0000410121040c020b2003410274410172210a410021010240200441014b0d00200241306a4100410210810120022802302100200228023821010b200020016a200a3b0000200141026a21040c010b20002003410274410272360000410421040b2002200436023802402002280234220120046b20034f0d00200241306a200420031081012002280230210020022802342101200228023821040b200020046a2007200310c30a1a200920082000200420036a10a30202402001450d00200010390b02402002280224450d00200228022010390b4202210520022802182104200228021021030b2002200641016a36023020032004200241306a410410a30202402002280214450d00200310390b200241c0006a240020050f0b1034000b1030000ba20802067f017e230041e0006b22042400200441306a200010b402200441c0006a200428023022052004280238220610b502024002400240200428024c22074102470d0041002107200441003602142004420037020c200441002802ccdd4a3602080c010b200441186a2004280250360200200441086a41086a200441c0006a41086a280200220836020020042004290340370308200420073602142008200428020c2207470d010b200441086a200710a002200428021021080b200441086a41086a2207200841016a360200200428020820084103746a2208200236020420082001360200200441c0006a41086a2007290300370300200441c0006a41106a200441086a41106a2802003602002004200429030837034002400240200428024c4102470d002005200610fd010c010b20052006200441c0006a10bb02200428024441ffffffff0171450d00200428024010390b02402004280234450d00200510390b200441c0006a41186a200341186a290000370300200441c0006a41106a200341106a290000370300200441c0006a41086a200341086a29000037030020042003290000370340200441086a2000200110b602200428020822032004280210200441c0006a10cf020240200428020c450d00200310390b200441206a10b30220042802202107024002400240200428022822090d00410021080c010b41002103200921062009210502400340024002402007200641017620036a22084103746a41046a280200220620014f0d00200841016a21030c010b2008210520062001460d020b200520036b210620032108200520034b0d000b0b20092008490d010b024020092004280224470d00200441206a200910a002200428022021070b200720084103746a220341086a2003200920086b41037410c40a1a2003200236020420032000360200200441206a41086a200941016a2203360200200441306a41086a200336020020042004290320220a37033002400240200aa722030d00200441d8006a22034200370300200441d0006a22084200370300200441c0006a41086a2205420037030020044200370340200441086a41f4eec600410510f2012005200441086a41086a220629000037030020042004290008370340200441086a418befc600410f10f2012003200629000037030020082004290008370300200441c0006a412010fd010c010b200441d8006a22084200370300200441d0006a22054200370300200441c0006a41086a2206420037030020044200370340200441086a41f4eec600410510f2012006200441086a41086a220129000037030020042004290008370340200441086a418befc600410f10f2012008200129000037030020052004290008370300200441c0006a200441306a10bc02200428023441ffffffff0171450d00200310390b200441e0006a24004280a7f2a6010f0b200820091044000bc40301067f230041106b22032400024002402002280208220441046a2205417f4c0d00200228020021060240024002400240024002402005450d00200510382202450d07200341003602082003200536020420032002360200200441c000490d02200441808001490d032004418080808004490d04410021050c010b200341003602082003420137030020034100410110810120032802002102200328020821050b200220056a41033a00002003200541016a22053602080240200328020420056b41034b0d00200320054104108101200328020821050b2003280200220220056a2004360000200541046a21050c030b200220044102743a0000410121050c020b20044102744101722107410021080240200541014b0d0020034100410210810120032802002102200328020821080b200220086a20073b0000200841026a21050c010b20022004410274410272360000410421050b2003200536020802402003280204220820056b20044f0d002003200520041081012003280200210220032802042108200328020821050b200220056a2006200410c30a1a200020012002200520046a10a30202402008450d00200210390b200341106a24000f0b1034000b1030000bec0301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41b487c800410c10f201200220013602342002200241346a410410f301370338200241c0006a410c6a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bd70e01137f23004190046b22012400200141e0016a41186a22024200370300200141e0016a41106a22034200370300200141e0016a41086a22044200370300200142003703e001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703e001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141e0016a412010f501200141e0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802e001220720012802e80110b202024020012802c80322024102460d00200141d0006a200141b8026a41c40010c30a1a200141186a41086a20014188036a290300370300200141186a41106a20014190036a290300370300200141186a41186a20014198036a290300370300200141186a41206a200141a0036a290300370300200141c0006a200141a8036a290300370300200141c8006a200141b0036a2903003703002001200129038003370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802fc02210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802e401450d00200710390b0240024020024102470d00200141e0016a41186a4200370300200141e0016a41106a4200370300200141e0016a41086a22024200370300200142003703e001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703e001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141e0016a412010b202024020012802c80322024102470d0041002104200141e0016a410041c40010c50a1a200141d8016a4200370300200141d0016a4200370300200141a8016a41206a4200370300200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141e0016a200141b8026a41c40010c30a1a200520014188036a290300370300200141a8016a41106a20014190036a290300370300200141a8016a41186a20014198036a290300370300200141a8016a41206a200141a0036a290300370300200141d0016a200141a8036a290300370300200141d8016a200141b0036a29030037030020012001290380033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802fc02210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141e0016a200141d0006a41c40010c30a1a200141a8016a41306a200141186a41306a290300370300200141a8016a41286a200141186a41286a290300370300200141a8016a41206a200141186a41206a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141e0016a41c40010c30a1a200141d4036a2009360200200141cc036a201236020020014188036a200141a8016a41086a29030037030020014190036a200141b8016a29030037030020014198036a200141c0016a290300370300200141a0036a200141c8016a290300370300200141a8036a200141d0016a290300370300200141b0036a200141d8016a290300370300200120003602fc022001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137038003200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bd70e01137f23004190046b22012400200141e0016a41186a22024200370300200141e0016a41106a22034200370300200141e0016a41086a22044200370300200142003703e001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703e001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141e0016a412010f501200141e0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802e001220720012802e80110b202024020012802c80322024102460d00200141d0006a200141b8026a41c80010c30a1a200141186a41086a2001418c036a290200370300200141186a41106a20014194036a290200370300200141186a41186a2001419c036a290200370300200141186a41206a200141a4036a290200370300200141c0006a200141ac036a290200370300200141c8006a200141b4036a2802003602002001200129028403370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802e401450d00200710390b0240024020024102470d00200141e0016a41186a4200370300200141e0016a41106a4200370300200141e0016a41086a22024200370300200142003703e001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703e001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141e0016a412010b202024020012802c80322024102470d0041002104200141e0016a410041c80010c50a1a200141d8016a4100360200200141d0016a4200370300200141a8016a41206a4200370300200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141e0016a200141b8026a41c80010c30a1a20052001418c036a290200370300200141a8016a41106a20014194036a290200370300200141a8016a41186a2001419c036a290200370300200141a8016a41206a200141a4036a290200370300200141d0016a200141ac036a290200370300200141d8016a200141b4036a28020036020020012001290284033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141e0016a200141d0006a41c80010c30a1a200141a8016a41306a200141186a41306a280200360200200141a8016a41286a200141186a41286a290300370300200141a8016a41206a200141186a41206a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141e0016a41c80010c30a1a200141d4036a2009360200200141cc036a20123602002001418c036a200141a8016a41086a29030037020020014194036a200141b8016a2903003702002001419c036a200141c0016a290300370200200141a4036a200141c8016a290300370200200141ac036a200141d0016a290300370200200141b4036a200141d8016a28020036020020012000360280032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137028403200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000b820a03127f017e017f23004180046b22012400200141a8016a22024200370300200141a0016a2203420037030020014190016a41086a22044200370300200142003703900120014198026a4192d1c800410b10f201200420014198026a41086a220529000037030020012001290098023703900120014198026a41c0d3c800411310f201200220052900003703002003200129009802370300200120014190016a412010f50120014190016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141a8026a200128029001220720012802980110b2020240024020012802b80322024102470d000c010b200141186a200141a8026a41f40010c30a1a200141086a41086a200141e4036a2902003703002001200141dc036a290200370308200141d8036a2802002108200141d4036a2802002109200141d0036a280200210a200141cc036a280200210b200141c8036a280200210c200141c4036a280200210d200141c0036a280200210e20012802bc03210f20012802b403210520012802b003211020012802ac03211120012802a803211220012903a0032113200128029c032104200141ec036a28020021140b0240200128029401450d00200710390b0240024020024102470d0042002113200141a8016a4200370300200141a0016a420037030020014190016a41086a22024200370300200142003703900120014198026a41f1b5c900410d10f201200220014198026a41086a220529000037030020012001290098023703900120014198026a418bb6c900410c10f201200341086a20052900003700002003200129009802370000200141a8026a20014190016a412010b202024020012802b80322024102470d004100210420014190016a410041f40010c50a1a2005420037030020014200370398024106210c41e400210b4102210a41c8012109410121084100210e41002102410021054101211041012111410121120c020b20014190016a200141a8026a41f40010c30a1a2005200141e4036a2902003703002001200141dc036a29020037039802200141d8036a2802002108200141d4036a2802002109200141d0036a280200210a200141cc036a280200210b200141c8036a280200210c200141c4036a280200210d200141c0036a280200210e20012802bc03210f20012802b403210520012802b003211020012802ac03211120012802a803211220012903a0032113200128029c032104200141ec036a28020021140c010b20014190016a200141186a41f40010c30a1a20014198026a41086a200141086a41086a29030037030020012001290308370398020b024020042000460d00200141a8026a20014190016a41f40010c30a1a200141c4036a200d360200200141bc036a200f360200200141e4036a200141a0026a290300370200200120083602d803200120093602d4032001200a3602d0032001200b3602cc032001200c3602c8032001200e3602c003200120023602b803200120053602b403200120103602b003200120113602ac03200120123602a803200120133703a0032001200036029c0320012001290398023702dc03200120143602ec0320014188026a200610870a20012802900221032001280288022102200141003602f803200142013703f003200141a8026a200141f0036a10fb092002200320012802f00320012802f80310a302024020012802f403450d0020012802f00310390b200128028c02450d00200210390b20014180046a24000bda0d01137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a80120014180026a4192d1c800410b10f201200420014180026a41086a220529000037030020012001290080023703a80120014180026a41c0d3c800411310f2012002200529000037030020032001290080023703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141f0006a41206a200141b8026a41206a290300370300200141f0006a41186a200141b8026a41186a290300370300200141f0006a41106a200141b8026a41106a290300370300200141f0006a41086a200141b8026a41086a290300370300200120012903b80237037020012802e00221042001411c6a200141e4026a41d40010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a4200370300200141a8016a41106a4200370300200141a8016a41086a22024200370300200142003703a80120014180026a41f1b5c900410d10f201200220014180026a41086a220429000037030020012001290080023703a80120014180026a418bb6c900410c10f201200341086a20042900003700002003200129008002370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0020014180026a41206a420037030020014180026a41186a420037030020014180026a41106a420037030020044200370300200142003703800241002104200141a8016a410041d40010c50a1a20014198016a41086a420037030020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b20014180026a41206a200141b8026a41206a29030037030020014180026a41186a200141b8026a41186a29030037030020014180026a41106a200141b8026a41106a2903003703002004200141b8026a41086a290300370300200120012903b8023703800220012802e0022104200141a8016a200141e4026a41d40010c30a1a20014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b20014180026a41206a200141f0006a41206a29030037030020014180026a41186a200141f0006a41186a29030037030020014180026a41106a200141f0006a41106a29030037030020014180026a41086a200141f0006a41086a2903003703002001200129037037038002200141a8016a2001411c6a41d40010c30a1a20014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41206a20014180026a41206a290300370300200141b8026a41186a20014180026a41186a290300370300200141b8026a41106a20014180026a41106a290300370300200141b8026a41086a20014180026a41086a29030037030020012001290380023703b802200120003602e002200141e4026a200141a8016a41d40010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a20014198016a41086a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bff0d01137f23004190046b22012400200141d8016a41186a22024200370300200141d8016a41106a22034200370300200141d8016a41086a22044200370300200142003703d801200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703d801200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141d8016a412010f501200141d8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802d801220720012802e00110b202024020012802c80322024102460d00200141c8006a200141b8026a41cc0010c30a1a200141186a41086a20014190036a290300370300200141186a41106a20014198036a290300370300200141186a41186a200141a0036a290300370300200141186a41206a200141a8036a290300370300200141c0006a200141b0036a2903003703002001200129038803370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802dc01450d00200710390b0240024020024102470d00200141d8016a41186a4200370300200141d8016a41106a4200370300200141d8016a41086a22024200370300200142003703d801200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703d801200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141d8016a412010b202024020012802c80322024102470d0041002104200141d8016a410041cc0010c50a1a200141d0016a4200370300200141a8016a41206a4200370300200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141d8016a200141b8026a41cc0010c30a1a200520014190036a290300370300200141a8016a41106a20014198036a290300370300200141a8016a41186a200141a0036a290300370300200141a8016a41206a200141a8036a290300370300200141d0016a200141b0036a29030037030020012001290388033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141d8016a200141c8006a41cc0010c30a1a200141a8016a41286a200141186a41286a290300370300200141a8016a41206a200141186a41206a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141d8016a41cc0010c30a1a200141d4036a2009360200200141cc036a201236020020014190036a200141a8016a41086a29030037030020014198036a200141b8016a290300370300200141a0036a200141c0016a290300370300200141a8036a200141c8016a290300370300200141b0036a200141d0016a29030037030020012000360284032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137038803200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bc50e01137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141f8016a4192d1c800410b10f2012004200141f8016a41086a2205290000370300200120012900f8013703a801200141f8016a41c0d3c800411310f20120022005290000370300200320012900f8013703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141e8006a41286a200141b8026a41286a280200360200200141e8006a41206a200141b8026a41206a290300370300200141e8006a41186a200141b8026a41186a290300370300200141e8006a41106a200141b8026a41106a290300370300200141e8006a41086a200141b8026a41086a290300370300200120012903b80237036820012802e4022104200141186a200141e8026a41d00010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a4200370300200141a8016a41106a4200370300200141a8016a41086a22024200370300200142003703a801200141f8016a41f1b5c900410d10f2012002200141f8016a41086a2205290000370300200120012900f8013703a801200141f8016a418bb6c900410c10f201200341086a2005290000370000200320012900f801370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0041002104200141a0026a4100360200200141f8016a41206a4200370300200141f8016a41186a4200370300200141f8016a41106a420037030020054200370300200142003703f801200141a8016a410041d00010c50a1a20014198016a41086a420037030020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141f8016a41286a200141b8026a41286a280200360200200141f8016a41206a200141b8026a41206a290300370300200141f8016a41186a200141b8026a41186a290300370300200141f8016a41106a200141b8026a41106a2903003703002005200141b8026a41086a290300370300200120012903b8023703f80120012802e4022104200141a8016a200141e8026a41d00010c30a1a20014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141f8016a41286a200141e8006a41286a280200360200200141f8016a41206a200141e8006a41206a290300370300200141f8016a41186a200141e8006a41186a290300370300200141f8016a41106a200141e8006a41106a290300370300200141f8016a41086a200141e8006a41086a290300370300200120012903683703f801200141a8016a200141186a41d00010c30a1a20014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41286a200141f8016a41286a280200360200200141b8026a41206a200141f8016a41206a290300370300200141b8026a41186a200141f8016a41186a290300370300200141b8026a41106a200141f8016a41106a290300370300200141b8026a41086a200141f8016a41086a290300370300200120012903f8013703b802200120003602e402200141e8026a200141a8016a41d00010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a20014198016a41086a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bf90901147f23004180046b22012400200141a8016a22024200370300200141a0016a2203420037030020014190016a41086a22044200370300200142003703900120014198026a4192d1c800410b10f201200420014198026a41086a220529000037030020012001290098023703900120014198026a41c0d3c800411310f201200220052900003703002003200129009802370300200120014190016a412010f50120014190016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141a8026a200128029001220720012802980110b202024020012802b80322024102460d00200141186a200141a8026a41f80010c30a1a200141086a41086a200141e4036a2902003703002001200141dc036a290200370308200141d8036a2802002108200141d4036a2802002109200141d0036a280200210a200141cc036a280200210b200141c8036a280200210c200141c4036a280200210d200141c0036a280200210e20012802bc03210f20012802b403210520012802b003211020012802ac03211120012802a803211220012802a403211320012802a0032104200141ec036a28020021140b0240200128029401450d00200710390b0240024020024102470d00200141a8016a4200370300200141a0016a420037030020014190016a41086a22024200370300200142003703900120014198026a41f1b5c900410d10f201200220014198026a41086a220529000037030020012001290098023703900120014198026a418bb6c900410c10f201200341086a20052900003700002003200129009802370000200141a8026a20014190016a412010b202024020012802b80322024102470d004100210420014190016a410041f80010c50a1a2005420037030020014200370398024106210c41e400210b4102210a41c801210941012108410021134100210e41002102410021054101211041012111410121120c020b20014190016a200141a8026a41f80010c30a1a2005200141e4036a2902003703002001200141dc036a29020037039802200141d8036a2802002108200141d4036a2802002109200141d0036a280200210a200141cc036a280200210b200141c8036a280200210c200141c4036a280200210d200141c0036a280200210e20012802bc03210f20012802b403210520012802b003211020012802ac03211120012802a803211220012802a403211320012802a0032104200141ec036a28020021140c010b20014190016a200141186a41f80010c30a1a20014198026a41086a200141086a41086a29030037030020012001290308370398020b024020042000460d00200141a8026a20014190016a41f80010c30a1a200141c4036a200d360200200141bc036a200f360200200141e4036a200141a0026a290300370200200120083602d803200120093602d4032001200a3602d0032001200b3602cc032001200c3602c8032001200e3602c003200120023602b803200120053602b403200120103602b003200120113602ac03200120123602a803200120133602a403200120003602a00320012001290398023702dc03200120143602ec0320014188026a200610870a20012802900221042001280288022102200141003602f803200142013703f003200141a8026a200141f0036a10fb092002200420012802f00320012802f80310a302024020012802f403450d0020012802f00310390b200128028c02450d00200210390b20014180046a24000bdd0901137f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41fc0010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b803211320012802b40321040b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2005290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210420014198016a410041fc0010c50a1a20054200370300200142003703a8024106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b20014198016a200141b8026a41fc0010c30a1a2005200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b803211320012802b40321040c010b20014198016a200141186a41fc0010c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41fc0010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120003602b403200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321040b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210f20014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a4101210941002102410021054101211141012112410121040c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321040c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120003602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03210420012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210f20014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a4101210941002102410021054101211141012104410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03210420012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120003602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003210420012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210f20014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a4101210941002102410021054101210441012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003210420012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120003602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210420012802c003210520012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210f20014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a4101210941002102410021044101210541012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210420012802c003210520012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120003602c403200120053602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bde0901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210420012802c003210520012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210220014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a410121094100210f410021044101210541012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210420012802c003210520012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b200041046a280200210302400240200028020022002002470d0020024101470d0120032010460d010b200141b8026a20014198016a41800110c30a1a200141d4036a200e360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120043602c403200120053602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320012003ad4220862000ad843703c80320014198026a200610870a20012802a0022100200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200020012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bee09040d7f017e037f017e23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b2020240024020012802c80322024102470d000c010b200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d0036a290300210e20012802cc03210f20012802c403210420012802c003210520012802bc03211020012802b80321110b0240200128029c01450d00200710390b0240024020024102470d0042002112200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210220014198016a410041800110c50a1a20044200370300200142003703a8024106210d41e400210c4102210b41c801210a410121094200210e410021044101210541012110410121110c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141d0036a290300220e428080808070832112200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d20012802cc03210f20012802c403210420012802c003210520012802bc03211020012802b80321110c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a802200e4280808080708321120b200041046a28020021030240024020002802002200200ea7470d002000450d0120032012422088a7460d010b200141b8026a20014198016a41800110c30a1a200141cc036a200f360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d803200120023602c803200120043602c403200120053602c003200120103602bc03200120113602b803200120083602fc03200120012903a8023702ec0320012003ad4220862000ad843703d00320014198026a200610870a20012802a0022100200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200020012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a2802002104200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210e20014198016a410041800110c50a1a20044200370300200142003703a8024106210441e400210c4102210b41c801210a4101210941002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a2802002104200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc03200120003602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a2802002104200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210e20014198016a410041800110c50a1a20044200370300200142003703a8024106210c41e40021044102210b41c801210a4101210941002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a2802002104200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e4032001200b3602e003200120003602dc032001200c3602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a2802002104200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210e20014198016a410041800110c50a1a20044200370300200142003703a8024106210c41e400210b4102210441c801210a4101210941002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a2802002104200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f4036a200141b0026a290300370200200120093602e8032001200a3602e403200120003602e0032001200b3602dc032001200c3602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a2802002104200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210e20014198016a410041800110c50a1a20044200370300200142003703a8024106210c41e400210b4102210a41c80121044101210941002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002109200141e4036a2802002104200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f4036a200141b0026a290300370200200120093602e803200120003602e4032001200a3602e0032001200b3602dc032001200c3602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc10901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002104200141e4036a2802002109200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2204290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2004290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210e20014198016a410041800110c50a1a20044200370300200142003703a8024106210c41e400210b4102210a41c80121094101210441002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2004200141f4036a2902003703002001200141ec036a2902003703a802200141fc036a2802002108200141e8036a2802002104200141e4036a2802002109200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f4036a200141b0026a290300370200200120003602e803200120093602e4032001200a3602e0032001200b3602dc032001200c3602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120083602fc03200120012903a8023702ec0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bc50901127f23004190046b22012400200141b0016a22024200370300200141a8016a2203420037030020014198016a41086a220442003703002001420037039801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a802370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a200128029801220720012802a00110b202024020012802c80322024102460d00200141186a200141b8026a41800110c30a1a200141086a41086a200141f8036a2903003703002001200141f0036a290300370308200141ec036a2802002104200141e8036a2802002108200141e4036a2802002109200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120b0240200128029c01450d00200710390b0240024020024102470d00200141b0016a4200370300200141a8016a420037030020014198016a41086a220242003703002001420037039801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2205290000370300200120012900a80237039801200141a8026a418bb6c900410c10f201200341086a2005290000370000200320012900a802370000200141b8026a20014198016a412010b202024020012802c80322024102470d004100210420014198016a410041800110c50a1a20054100360200200142003703a8024106210c41e400210b4102210a41c8012109410121084100210e41002102410021054101211041012111410121120c020b20014198016a200141b8026a41800110c30a1a2005200141f8036a2903003703002001200141f0036a2903003703a802200141ec036a2802002104200141e8036a2802002108200141e4036a2802002109200141e0036a280200210a200141dc036a280200210b200141d8036a280200210c200141d4036a280200210d200141d0036a280200210e20012802cc03210f20012802c403210520012802c003211020012802bc03211120012802b80321120c010b20014198016a200141186a41800110c30a1a200141a8026a41086a200141086a41086a290300370300200120012903083703a8020b024020042000460d00200141b8026a20014198016a41800110c30a1a200141d4036a200d360200200141cc036a200f360200200141f8036a200141b0026a290300370300200120003602ec03200120083602e803200120093602e4032001200a3602e0032001200b3602dc032001200c3602d8032001200e3602d003200120023602c803200120053602c403200120103602c003200120113602bc03200120123602b803200120012903a8023703f00320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000ba20903077f017e0d7f230041f0036b22012400200141a0016a2202420037030020014198016a2203420037030020014188016a41086a22044200370300200142003703880120014198026a4192d1c800410b10f201200420014198026a41086a220529000037030020012001290098023703880120014198026a41c0d3c800411310f201200220052900003703002003200129009802370300200120014188016a412010f50120014188016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141a8026a200128028801220720012802900110b2020240024020012802b80322024102470d000c010b200141086a200141a8026a41800110c30a1a200141ec036a2802002105200141e4036a2902002108200141e0036a2802002104200141dc036a2802002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403211220012802b003211320012802ac03211420012802a80321150b0240200128028c01450d00200710390b0240024020024102470d0042002108200141a0016a420037030020014198016a420037030020014188016a41086a22024200370300200142003703880120014198026a41f1b5c900410d10f201200220014198026a41086a220429000037030020012001290098023703880120014198026a418bb6c900410c10f201200341086a20042900003700002003200129009802370000200141a8026a20014188016a412010b202024020012802b80322024102470d004100210920014188016a410041800110c50a1a4106210e41e400210d4102210c41c801210b4101210a410021044100211041002102410021124101211341012114410121150c020b20014188016a200141a8026a41800110c30a1a200141ec036a2802002105200141e4036a2902002108200141e0036a2802002104200141dc036a2802002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403211220012802b003211320012802ac03211420012802a80321150c010b20014188016a200141086a41800110c30a1a0b024020042000460d00200141a8026a20014188016a41800110c30a1a200141c4036a200f360200200141bc036a2011360200200120053602ec03200120083702e403200120003602e003200120093602dc032001200a3602d8032001200b3602d4032001200c3602d0032001200d3602cc032001200e3602c803200120103602c003200120023602b803200120123602b403200120133602b003200120143602ac03200120153602a80320014188026a200610870a20012802900221032001280288022102200141003602a0022001420137039802200141a8026a20014198026a10fb092002200320012802980220012802a00210a3020240200128029c02450d0020012802980210390b200128028c02450d00200210390b200141f0036a24000b840903077f027e0b7f230041f0036b22012400200141a0016a2202420037030020014198016a2203420037030020014188016a41086a22044200370300200142003703880120014198026a4192d1c800410b10f201200420014198026a41086a220529000037030020012001290098023703880120014198026a41c0d3c800411310f201200220052900003703002003200129009802370300200120014188016a412010f50120014188016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141a8026a200128028801220720012802900110b2020240024020012802b80322024102470d000c010b200141086a200141a8026a41800110c30a1a200141e8036a2903002108200141e4036a2802002104200141dc036a2902002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403210520012802b003211220012802ac03211320012802a80321140b0240200128028c01450d00200710390b0240024020024102470d00200141a0016a420037030020014198016a420037030020014188016a41086a22024200370300200142003703880120014198026a41f1b5c900410d10f201200220014198026a41086a220429000037030020012001290098023703880120014198026a418bb6c900410c10f201200341086a20042900003700002003200129009802370000200141a8026a20014188016a412010b202024020012802b80322024102470d004100210420014188016a410041800110c50a1a4106210e41e400210d4102210c41c801210b4101210a42002109420021084100211041002102410021054101211241012113410121140c020b20014188016a200141a8026a41800110c30a1a200141e8036a2903002108200141e4036a2802002104200141dc036a2902002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403210520012802b003211220012802ac03211320012802a80321140c010b20014188016a200141086a41800110c30a1a0b024020042000460d00200141a8026a20014188016a41800110c30a1a200141c4036a200f360200200141bc036a2011360200200120083703e803200120003602e403200120093702dc032001200a3602d8032001200b3602d4032001200c3602d0032001200d3602cc032001200e3602c803200120103602c003200120023602b803200120053602b403200120123602b003200120133602ac03200120143602a80320014188026a200610870a20012802900221032001280288022102200141003602a0022001420137039802200141a8026a20014198026a10fb092002200320012802980220012802a00210a3020240200128029c02450d0020012802980210390b200128028c02450d00200210390b200141f0036a24000bf10901137f23004190046b22012400200141c0016a22024200370300200141b8016a22034200370300200141a8016a41086a22044200370300200142003703a801200141b8026a4192d1c800410b10f2012004200141b8026a41086a2205290000370300200120012900b8023703a801200141b8026a41c0d3c800411310f20120022005290000370300200320012900b8023703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141c8026a20012802a801220720012802b00110b202024020012802d80322024102460d00200141186a200141c8026a41800110c30a1a200141086a41086a20014184046a2802003602002001200141fc036a2902003703082001418c046a280200210820014188046a2802002104200141f8036a2802002109200141f4036a280200210a200141f0036a280200210b200141ec036a280200210c200141e8036a280200210d200141e4036a280200210e200141e0036a280200210f20012802dc03211020012802d403210520012802d003211120012802cc03211220012802c80321130b024020012802ac01450d00200710390b0240024020024102470d00200141c0016a4200370300200141b8016a4200370300200141a8016a41086a22024200370300200142003703a801200141b8026a41f1b5c900410d10f2012002200141b8026a41086a2204290000370300200120012900b8023703a801200141b8026a418bb6c900410c10f201200341086a2004290000370000200320012900b802370000200141c8026a200141a8016a412010b202024020012802d80322024102470d0041002104200141a8016a410041800110c50a1a20014198016a41086a410036020020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141a8016a200141c8026a41800110c30a1a20014198016a41086a20014184046a2802003602002001200141fc036a290200370398012001418c046a280200210820014188046a2802002104200141f8036a2802002109200141f4036a280200210a200141f0036a280200210b200141ec036a280200210c200141e8036a280200210d200141e4036a280200210e200141e0036a280200210f20012802dc03211020012802d403210520012802d003211120012802cc03211220012802c80321130c010b200141a8016a200141186a41800110c30a1a20014198016a41086a200141086a41086a28020036020020012001290308370398010b024020042000460d00200141c8026a200141a8016a41800110c30a1a200141e4036a200e360200200141dc036a201036020020014184046a200141a0016a280200360200200120093602f8032001200a3602f4032001200b3602f0032001200c3602ec032001200d3602e8032001200f3602e003200120023602d803200120053602d403200120113602d003200120123602cc03200120133602c8032001200836028c04200120003602880420012001290398013702fc03200141a8026a200610870a20012802b002210420012802a8022102200141003602c002200142013703b802200141c8026a200141b8026a10fb092002200420012802b80220012802c00210a302024020012802bc02450d0020012802b80210390b20012802ac02450d00200210390b20014190046a24000bc50e01137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141f8016a4192d1c800410b10f2012004200141f8016a41086a2205290000370300200120012900f8013703a801200141f8016a41c0d3c800411310f20120022005290000370300200320012900f8013703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141e8006a41286a200141b8026a41286a290300370300200141e8006a41206a200141b8026a41206a290300370300200141e8006a41186a200141b8026a41186a290300370300200141e8006a41106a200141b8026a41106a290300370300200141e8006a41086a200141b8026a41086a290300370300200120012903b80237036820012802e80221042001411c6a200141ec026a41cc0010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a4200370300200141a8016a41106a4200370300200141a8016a41086a22024200370300200142003703a801200141f8016a41f1b5c900410d10f2012002200141f8016a41086a2204290000370300200120012900f8013703a801200141f8016a418bb6c900410c10f201200341086a2004290000370000200320012900f801370000200141b8026a200141a8016a412010b202024020012802c80322024102470d00200141a0026a4200370300200141f8016a41206a4200370300200141f8016a41186a4200370300200141f8016a41106a420037030020044200370300200142003703f80141002104200141a8016a410041cc0010c50a1a20014198016a41086a420037030020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141f8016a41286a200141b8026a41286a290300370300200141f8016a41206a200141b8026a41206a290300370300200141f8016a41186a200141b8026a41186a290300370300200141f8016a41106a200141b8026a41106a2903003703002004200141b8026a41086a290300370300200120012903b8023703f80120012802e8022104200141a8016a200141ec026a41cc0010c30a1a20014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141f8016a41286a200141e8006a41286a290300370300200141f8016a41206a200141e8006a41206a290300370300200141f8016a41186a200141e8006a41186a290300370300200141f8016a41106a200141e8006a41106a290300370300200141f8016a41086a200141e8006a41086a290300370300200120012903683703f801200141a8016a2001411c6a41cc0010c30a1a20014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41286a200141f8016a41286a290300370300200141b8026a41206a200141f8016a41206a290300370300200141b8026a41186a200141f8016a41186a290300370300200141b8026a41106a200141f8016a41106a290300370300200141b8026a41086a200141f8016a41086a290300370300200120012903f8013703b802200120003602e802200141ec026a200141a8016a41cc0010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a20014198016a41086a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bb00f01137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141f0016a4192d1c800410b10f2012004200141f0016a41086a2205290000370300200120012900f0013703a801200141f0016a41c0d3c800411310f20120022005290000370300200320012900f0013703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141e0006a41306a200141b8026a41306a280200360200200141e0006a41286a200141b8026a41286a290300370300200141e0006a41206a200141b8026a41206a290300370300200141e0006a41186a200141b8026a41186a290300370300200141e0006a41106a200141b8026a41106a290300370300200141e0006a41086a200141b8026a41086a290300370300200120012903b80237036020012802ec022104200141186a200141f0026a41c80010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a4200370300200141a8016a41106a4200370300200141a8016a41086a22024200370300200142003703a801200141f0016a41f1b5c900410d10f2012002200141f0016a41086a2205290000370300200120012900f0013703a801200141f0016a418bb6c900410c10f201200341086a2005290000370000200320012900f001370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0041002104200141a0026a410036020020014198026a4200370300200141f0016a41206a4200370300200141f0016a41186a4200370300200141f0016a41106a420037030020054200370300200142003703f001200141a8016a410041c80010c50a1a20014198016a41086a420037030020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141f0016a41306a200141b8026a41306a280200360200200141f0016a41286a200141b8026a41286a290300370300200141f0016a41206a200141b8026a41206a290300370300200141f0016a41186a200141b8026a41186a290300370300200141f0016a41106a200141b8026a41106a2903003703002005200141b8026a41086a290300370300200120012903b8023703f00120012802ec022104200141a8016a200141f0026a41c80010c30a1a20014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141f0016a41306a200141e0006a41306a280200360200200141f0016a41286a200141e0006a41286a290300370300200141f0016a41206a200141e0006a41206a290300370300200141f0016a41186a200141e0006a41186a290300370300200141f0016a41106a200141e0006a41106a290300370300200141f0016a41086a200141e0006a41086a290300370300200120012903603703f001200141a8016a200141186a41c80010c30a1a20014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41306a200141f0016a41306a280200360200200141b8026a41286a200141f0016a41286a290300370300200141b8026a41206a200141f0016a41206a290300370300200141b8026a41186a200141f0016a41186a290300370300200141b8026a41106a200141f0016a41106a290300370300200141b8026a41086a200141f0016a41086a290300370300200120012903f0013703b802200120003602ec02200141f0026a200141a8016a41c80010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a20014198016a41086a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bff0d01137f23004190046b22012400200141d8016a41186a22024200370300200141d8016a41106a22034200370300200141d8016a41086a22044200370300200142003703d801200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703d801200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141d8016a412010f501200141d8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802d801220720012802e00110b202024020012802c80322024102460d00200141c8006a200141b8026a41d00010c30a1a200141186a41086a20014194036a290200370300200141186a41106a2001419c036a290200370300200141186a41186a200141a4036a290200370300200141186a41206a200141ac036a290200370300200141c0006a200141b4036a2802003602002001200129028c03370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802dc01450d00200710390b0240024020024102470d00200141d8016a41186a4200370300200141d8016a41106a4200370300200141d8016a41086a22024200370300200142003703d801200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703d801200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141d8016a412010b202024020012802c80322024102470d0041002104200141d8016a410041d00010c50a1a200141d0016a4100360200200141a8016a41206a4200370300200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141d8016a200141b8026a41d00010c30a1a200520014194036a290200370300200141a8016a41106a2001419c036a290200370300200141a8016a41186a200141a4036a290200370300200141a8016a41206a200141ac036a290200370300200141d0016a200141b4036a2802003602002001200129028c033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141d8016a200141c8006a41d00010c30a1a200141a8016a41286a200141186a41286a280200360200200141a8016a41206a200141186a41206a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141d8016a41d00010c30a1a200141d4036a2009360200200141cc036a201236020020014194036a200141a8016a41086a2903003702002001419c036a200141b8016a290300370200200141a4036a200141c0016a290300370200200141ac036a200141c8016a290300370200200141b4036a200141d0016a28020036020020012000360288032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137028c03200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bf20903077f017e0b7f23004180046b22012400200141a8016a22024200370300200141a0016a2203420037030020014190016a41086a22044200370300200142003703900120014198026a4192d1c800410b10f201200420014198026a41086a220529000037030020012001290098023703900120014198026a41c0d3c800411310f201200220052900003703002003200129009802370300200120014190016a412010f50120014190016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141a8026a200128029001220720012802980110b2020240024020012802b80322024102470d000c010b20012903a8022108200141186a200141a8026a41086a41f80010c30a1a200141086a41086a200141e4036a2902003703002001200141dc036a290200370308200141ec036a2802002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403210420012802b003210520012802ac03211220012802a80321130b0240200128029401450d00200710390b0240024020024102470d0042002108200141a8016a4200370300200141a0016a420037030020014190016a41086a22024200370300200142003703900120014198026a41f1b5c900410d10f201200220014198026a41086a220429000037030020012001290098023703900120014198026a418bb6c900410c10f201200341086a20042900003700002003200129009802370000200141a8026a20014190016a412010b202024020012802b80322024102470d004100211020014190016a410041f80010c50a1a2004420037030020014200370398024106210e41e400210d4102210c41c801210b4101210a41002102410021044101210541012112410121130c020b20012903a802210820014190016a200141a8026a41086a41f80010c30a1a2004200141e4036a2902003703002001200141dc036a29020037039802200141ec036a2802002109200141d8036a280200210a200141d4036a280200210b200141d0036a280200210c200141cc036a280200210d200141c8036a280200210e200141c4036a280200210f200141c0036a280200211020012802bc03211120012802b403210420012802b003210520012802ac03211220012802a80321130c010b20014190016a200141186a41f80010c30a1a20014198026a41086a200141086a41086a29030037030020012001290308370398020b024020082000510d00200120003703a802200141a8026a41086a20014190016a41f80010c30a1a200141c4036a200f360200200141bc036a2011360200200141e4036a20014198026a41086a2903003702002001200a3602d8032001200b3602d4032001200c3602d0032001200d3602cc032001200e3602c803200120103602c003200120023602b803200120043602b403200120053602b003200120123602ac03200120133602a803200120093602ec0320012001290398023702dc0320014188026a200610870a20012802900221032001280288022102200141003602f803200142013703f003200141a8026a200141f0036a10fb092002200320012802f00320012802f80310a302024020012802f403450d0020012802f00310390b200128028c02450d00200210390b20014180046a24000bb00f01137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141f0016a4192d1c800410b10f2012004200141f0016a41086a2205290000370300200120012900f0013703a801200141f0016a41c0d3c800411310f20120022005290000370300200320012900f0013703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141e0006a41306a200141b8026a41306a290300370300200141e0006a41286a200141b8026a41286a290300370300200141e0006a41206a200141b8026a41206a290300370300200141e0006a41186a200141b8026a41186a290300370300200141e0006a41106a200141b8026a41106a290300370300200141e0006a41086a200141b8026a41086a290300370300200120012903b80237036020012802f00221042001411c6a200141f4026a41c40010c30a1a200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a4200370300200141a8016a41106a4200370300200141a8016a41086a22024200370300200142003703a801200141f0016a41f1b5c900410d10f2012002200141f0016a41086a2204290000370300200120012900f0013703a801200141f0016a418bb6c900410c10f201200341086a2004290000370000200320012900f001370000200141b8026a200141a8016a412010b202024020012802c80322024102470d00200141a0026a420037030020014198026a4200370300200141f0016a41206a4200370300200141f0016a41186a4200370300200141f0016a41106a420037030020044200370300200142003703f00141002104200141a8016a410041c40010c50a1a20014198016a41086a420037030020014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141f0016a41306a200141b8026a41306a290300370300200141f0016a41286a200141b8026a41286a290300370300200141f0016a41206a200141b8026a41206a290300370300200141f0016a41186a200141b8026a41186a290300370300200141f0016a41106a200141b8026a41106a2903003703002004200141b8026a41086a290300370300200120012903b8023703f00120012802f0022104200141a8016a200141f4026a41c40010c30a1a20014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141f0016a41306a200141e0006a41306a290300370300200141f0016a41286a200141e0006a41286a290300370300200141f0016a41206a200141e0006a41206a290300370300200141f0016a41186a200141e0006a41186a290300370300200141f0016a41106a200141e0006a41106a290300370300200141f0016a41086a200141e0006a41086a290300370300200120012903603703f001200141a8016a2001411c6a41c40010c30a1a20014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41306a200141f0016a41306a290300370300200141b8026a41286a200141f0016a41286a290300370300200141b8026a41206a200141f0016a41206a290300370300200141b8026a41186a200141f0016a41186a290300370300200141b8026a41106a200141f0016a41106a290300370300200141b8026a41086a200141f0016a41086a290300370300200120012903f0013703b802200120003602f002200141f4026a200141a8016a41c40010c30a1a200141d4036a200e360200200141cc036a2010360200200141f4036a20014198016a41086a290300370200200120093602e8032001200a3602e4032001200b3602e0032001200c3602dc032001200d3602d8032001200f3602d003200120023602c803200120053602c403200120113602c003200120123602bc03200120133602b803200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000b901501137f23004190046b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a801200141e8016a4192d1c800410b10f2012004200141e8016a41086a2205290000370300200120012900e8013703a801200141e8016a41c0d3c800411310f20120022005290000370300200320012900e8013703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141d8006a41386a200141b8026a41386a280200360200200141d8006a41306a200141b8026a41306a290300370300200141d8006a41286a200141b8026a41286a290300370300200141d8006a41206a200141b8026a41206a290300370300200141d8006a41186a200141b8026a41186a290300370300200141d8006a41106a200141b8026a41106a290300370300200141d8006a41086a200141b8026a41086a290300370300200141186a41086a20014180036a290300370300200141186a41106a20014188036a290300370300200141186a41186a20014190036a290300370300200141186a41206a20014198036a290300370300200141186a41286a200141a0036a290300370300200141186a41306a200141a8036a290300370300200141186a41386a200141b0036a290300370300200120012903b802370358200120012903f80237031820012802f4022104200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ac01450d00200710390b0240024020024102470d00200141a8016a41186a22124200370300200141a8016a41106a22134200370300200141a8016a41086a22054200370300200142003703a801200141e8016a41f1b5c900410d10f2012005200141e8016a41086a2211290000370300200120012900e8013703a801200141e8016a418bb6c900410c10f201200341086a2011290000370000200320012900e801370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0041002104200141e8016a41386a4100360200200141e8016a41306a4200370300200141e8016a41286a4200370300200141e8016a41206a4200370300200141e8016a41186a4200370300200141e8016a41106a420037030020114200370300200542003703002013420037030020124200370300200141a8016a41206a4200370300200141a8016a41286a4200370300200141a8016a41306a4200370300200141a8016a41386a420037030020014198016a41086a4200370300200142003703e801200142003703a80120014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141e8016a41386a200141b8026a41386a280200360200200141e8016a41306a200141b8026a41306a290300370300200141e8016a41286a200141b8026a41286a290300370300200141e8016a41206a200141b8026a41206a290300370300200141e8016a41186a200141b8026a41186a290300370300200141e8016a41106a200141b8026a41106a2903003703002011200141b8026a41086a290300370300200520014180036a290300370300201320014188036a290300370300201220014190036a290300370300200141a8016a41206a20014198036a290300370300200141a8016a41286a200141a0036a290300370300200141a8016a41306a200141a8036a290300370300200141a8016a41386a200141b0036a290300370300200120012903b8023703e801200120012903f8023703a80120012802f402210420014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141e8016a41386a200141d8006a41386a280200360200200141e8016a41306a200141d8006a41306a290300370300200141e8016a41286a200141d8006a41286a290300370300200141e8016a41206a200141d8006a41206a290300370300200141e8016a41186a200141d8006a41186a290300370300200141e8016a41106a200141d8006a41106a290300370300200141e8016a41086a200141d8006a41086a290300370300200141a8016a41086a200141186a41086a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41206a200141186a41206a290300370300200141a8016a41286a200141186a41286a290300370300200141a8016a41306a200141186a41306a290300370300200141a8016a41386a200141186a41386a290300370300200120012903583703e801200120012903183703a80120014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41386a200141e8016a41386a280200360200200141b8026a41306a200141e8016a41306a290300370300200141b8026a41286a200141e8016a41286a290300370300200141b8026a41206a200141e8016a41206a290300370300200141b8026a41186a200141e8016a41186a290300370300200141b8026a41106a200141e8016a41106a290300370300200141b8026a41086a200141e8016a41086a290300370300200120012903e8013703b802200120003602f402200141cc036a2010360200200141d4036a200e36020020014180036a200141a8016a41086a29030037030020014188036a200141a8016a41106a29030037030020014190036a200141a8016a41186a29030037030020014198036a200141a8016a41206a290300370300200141a0036a200141a8016a41286a290300370300200141a8036a200141a8016a41306a290300370300200141b0036a200141a8016a41386a290300370300200120133602b803200120123602bc03200120113602c003200120053602c403200120023602c8032001200f3602d0032001200d3602d8032001200c3602dc032001200b3602e0032001200a3602e403200120093602e803200120012903a8013703f802200141f4036a20014198016a41086a290300370200200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bc50c01137f23004190046b22012400200141c8016a41186a22024200370300200141c8016a41106a22034200370300200141c8016a41086a22044200370300200142003703c801200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703c801200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141c8016a412010f501200141c8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802c801220720012802d00110b202024020012802c80322024102460d00200141386a200141b8026a41dc0010c30a1a200141186a41086a200141a0036a290300370300200141186a41106a200141a8036a290300370300200141186a41186a200141b0036a2903003703002001200129039803370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802cc01450d00200710390b0240024020024102470d00200141c8016a41186a4200370300200141c8016a41106a4200370300200141c8016a41086a22024200370300200142003703c801200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703c801200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141c8016a412010b202024020012802c80322024102470d0041002104200141c8016a410041dc0010c50a1a200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141c8016a200141b8026a41dc0010c30a1a2005200141a0036a290300370300200141a8016a41106a200141a8036a290300370300200141a8016a41186a200141b0036a29030037030020012001290398033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141c8016a200141386a41dc0010c30a1a200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141c8016a41dc0010c30a1a200141d4036a2009360200200141cc036a2012360200200141a0036a200141a8016a41086a290300370300200141a8036a200141b8016a290300370300200141b0036a200141c0016a29030037030020012000360294032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137039803200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bd80a04077f037e0b7f017e230041e0036b2201240020014180016a41186a2202420037030020014180016a41106a2203420037030020014180016a41086a220442003703002001420037038001200141f8016a4192d1c800410b10f2012004200141f8016a41086a2205290000370300200120012900f80137038001200141f8016a41c0d3c800411310f20120022005290000370300200320012900f801370300200120014180016a412010f50120014180016a417f2001280204410020012802001b220241026a220420042002491b220610870a20014188026a200128028001220720012802880110b2020240024020012802980322024102470d000c010b20014188026a41106a29030021082001290390022109200129038802210a200141186a20014188026a41186a41e80010c30a1a200141086a41086a200141c4036a2902003703002001200141bc036a290200370308200141cc036a280200210b200141b8036a280200210c200141b4036a280200210d200141b0036a280200210e200141ac036a280200210f200141a8036a2802002110200141a4036a2802002111200141a0036a2802002112200128029c03211320012802940321042001280290032105200128028c03211420012802880321150b0240200128028401450d00200710390b0240024020024102470d004200210a20014180016a41186a420037030020014180016a41106a420037030020014180016a41086a220242003703002001420037038001200141f8016a41f1b5c900410d10f2012002200141f8016a41086a2204290000370300200120012900f80137038001200141f8016a418bb6c900410c10f201200341086a2004290000370000200320012900f80137000020014188026a20014180016a412010b202024020012802980322024102470d004100211220014180016a410041e80010c50a1a20044200370300200142003703f8014106211041e400210f4102210e41c801210d4101210c420021094200210841002102410021044101210541012114410121150c020b20014188026a41106a29030021082001290390022109200129038802210a20014180016a20014188026a41186a41e80010c30a1a2004200141c4036a2902003703002001200141bc036a2902003703f801200141cc036a280200210b200141b8036a280200210c200141b4036a280200210d200141b0036a280200210e200141ac036a280200210f200141a8036a2802002110200141a4036a2802002111200141a0036a2802002112200128029c03211320012802940321042001280290032105200128028c03211420012802880321150c010b20014180016a200141186a41e80010c30a1a200141f8016a41086a200141086a41086a290300370300200120012903083703f8010b0240200920002903002216852008200041086a29030022098584500d0020014198026a200937030020012016370390022001200a37038802200141a0026a20014180016a41e80010c30a1a200141a4036a20113602002001419c036a2013360200200141c4036a200141f8016a41086a2903003702002001200c3602b8032001200d3602b4032001200e3602b0032001200f3602ac03200120103602a803200120123602a0032001200236029803200120043602940320012005360290032001201436028c0320012015360288032001200b3602cc03200120012903f8013702bc03200141e8016a200610870a20012802f001210020012802e8012102200141003602d803200142013703d00320014188026a200141d0036a10fb092002200020012802d00320012802d80310a302024020012802d403450d0020012802d00310390b20012802ec01450d00200210390b200141e0036a24000bc20c04077f027e0b7f017e230041f0036b22012400200141b0016a2202420037030020014198016a41106a2203420037030020014198016a41086a220442003703002001420037039801200141f0016a4192d1c800410b10f2012004200141f0016a41086a2205290000370300200120012900f00137039801200141f0016a41c0d3c800411310f20120022005290000370300200320012900f001370300200120014198016a412010f50120014198016a417f2001280204410020012802001b220241026a220420042002491b220610870a20014198026a200128029801220720012802a00110b2020240024020012802a80322024102470d000c010b200141f0006a41106a20014198026a41106a290300370300200141f0006a41086a20014198026a41086a290300370300200120012903980237037020014198026a41206a290300210820012903b0022109200141186a200141c0026a41d80010c30a1a200141086a41086a200141d4036a2902003703002001200141cc036a290200370308200141dc036a280200210a200141c8036a280200210b200141c4036a280200210c200141c0036a280200210d200141bc036a280200210e200141b8036a280200210f200141b4036a2802002110200141b0036a280200211120012802ac03211220012802a403210420012802a0032105200128029c03211320012802980321140b0240200128029c01450d00200710390b0240024020024102470d0042002109200141b0016a420037030020014198016a41106a420037030020014198016a41086a220242003703002001420037039801200141f0016a41f1b5c900410d10f2012002200141f0016a41086a2204290000370300200120012900f00137039801200141f0016a418bb6c900410c10f201200341086a2004290000370000200320012900f00137000020014198026a20014198016a412010b202024020012802a80322024102470d00200141f0016a41106a420037030020044200370300200142003703f0014100211120014198016a410041d80010c50a1a20014188016a41086a420037030020014200370388014106210f41e400210e4102210d41c801210c4101210b4200210841002102410021044101210541012113410121140c020b200141f0016a41106a20014198026a41106a290300370300200420014198026a41086a29030037030020012001290398023703f00120014198026a41206a290300210820012903b002210920014198016a200141c0026a41d80010c30a1a20014188016a41086a200141d4036a2902003703002001200141cc036a29020037038801200141dc036a280200210a200141c8036a280200210b200141c4036a280200210c200141c0036a280200210d200141bc036a280200210e200141b8036a280200210f200141b4036a2802002110200141b0036a280200211120012802ac03211220012802a403210420012802a0032105200128029c03211320012802980321140c010b200141f0016a41106a200141f0006a41106a290300370300200141f0016a41086a200141f0006a41086a290300370300200120012903703703f00120014198016a200141186a41d80010c30a1a20014188016a41086a200141086a41086a29030037030020012001290308370388010b0240200920002903002215852008200041086a29030022098584500d00200141b8026a200937030020014198026a41106a200141f0016a41106a29030037030020014198026a41086a200141f0016a41086a290300370300200120153703b002200120012903f00137039802200141c0026a20014198016a41d80010c30a1a200141b4036a2010360200200141ac036a2012360200200141d4036a20014188016a41086a2903003702002001200b3602c8032001200c3602c4032001200d3602c0032001200e3602bc032001200f3602b803200120113602b003200120023602a803200120043602a403200120053602a0032001201336029c0320012014360298032001200a3602dc0320012001290388013702cc0320014188026a200610870a20012802900221002001280288022102200141003602e803200142013703e00320014198026a200141e0036a10fb092002200020012802e00320012802e80310a302024020012802e403450d0020012802e00310390b200128028c02450d00200210390b200141f0036a24000bc50c01137f23004190046b22012400200141c8016a41186a22024200370300200141c8016a41106a22034200370300200141c8016a41086a22044200370300200142003703c801200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703c801200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141c8016a412010f501200141c8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802c801220720012802d00110b202024020012802c80322024102460d00200141386a200141b8026a41e00010c30a1a200141186a41086a200141a4036a290200370300200141186a41106a200141ac036a290200370300200141186a41186a200141b4036a2802003602002001200129029c03370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802cc01450d00200710390b0240024020024102470d00200141c8016a41186a4200370300200141c8016a41106a4200370300200141c8016a41086a22024200370300200142003703c801200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703c801200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141c8016a412010b202024020012802c80322024102470d0041002104200141c8016a410041e00010c50a1a200141a8016a41186a4100360200200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141c8016a200141b8026a41e00010c30a1a2005200141a4036a290200370300200141a8016a41106a200141ac036a290200370300200141a8016a41186a200141b4036a2802003602002001200129029c033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141c8016a200141386a41e00010c30a1a200141a8016a41186a200141186a41186a280200360200200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141c8016a41e00010c30a1a200141d4036a2009360200200141cc036a2012360200200141a4036a200141a8016a41086a290300370200200141ac036a200141b8016a290300370200200141b4036a200141c0016a28020036020020012000360298032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137029c03200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bdf0b01137f23004190046b22012400200141d8016a22024200370300200141c0016a41106a22034200370300200141c0016a41086a22044200370300200142003703c001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703c001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141c0016a412010f501200141c0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802c001220720012802c80110b202024020012802c80322024102460d00200141306a200141b8026a41e40010c30a1a200141186a41086a200141a8036a290300370300200141186a41106a200141b0036a290300370300200120012903a003370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029c03210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802c401450d00200710390b0240024020024102470d00200141d8016a4200370300200141c0016a41106a4200370300200141c0016a41086a22024200370300200142003703c001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703c001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141c0016a412010b202024020012802c80322024102470d0041e400210b41002104200141c0016a410041e40010c50a1a200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141c0016a200141b8026a41e40010c30a1a2005200141a8036a290300370300200141a8016a41106a200141b0036a290300370300200120012903a0033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029c03210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141c0016a200141306a41e40010c30a1a200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141c0016a41e40010c30a1a200141d4036a2009360200200141cc036a2012360200200141a8036a200141a8016a41086a290300370300200141b0036a200141b8016a2903003703002001200036029c032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a8013703a003200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bdf0b01137f23004190046b22012400200141d8016a22024200370300200141c0016a41106a22034200370300200141c0016a41086a22044200370300200142003703c001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703c001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141c0016a412010f501200141c0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802c001220720012802c80110b202024020012802c80322024102460d00200141306a200141b8026a41e80010c30a1a200141186a41086a200141ac036a290200370300200141186a41106a200141b4036a280200360200200120012902a403370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802c401450d00200710390b0240024020024102470d00200141d8016a4200370300200141c0016a41106a4200370300200141c0016a41086a22024200370300200142003703c001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703c001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141c0016a412010b202024020012802c80322024102470d0041002104200141c0016a410041e80010c50a1a200141a8016a41106a41003602002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141c0016a200141b8026a41e80010c30a1a2005200141ac036a290200370300200141a8016a41106a200141b4036a280200360200200120012902a4033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141c0016a200141306a41e80010c30a1a200141a8016a41106a200141186a41106a280200360200200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141c0016a41e80010c30a1a200141d4036a2009360200200141cc036a2012360200200141ac036a200141a8016a41086a290300370200200141b4036a200141b8016a280200360200200120003602a0032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a8013702a403200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bf90a01137f23004190046b22012400200141c0016a22024200370300200141b8016a22034200370300200141a8016a41086a22044200370300200142003703a801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a8023703a801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a8023703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141286a200141b8026a41ec0010c30a1a200141186a41086a200141b0036a290300370300200141086a41086a200141f4036a290200370300200120012903a8033703182001200141ec036a290200370308200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141fc036a28020021130b024020012802ac01450d00200710390b0240024020024102470d00200141c0016a4200370300200141b8016a4200370300200141a8016a41086a22024200370300200142003703a801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2205290000370300200120012900a8023703a801200141a8026a418bb6c900410c10f201200341086a2005290000370000200320012900a802370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0041002104200141a8016a410041ec0010c50a1a2005420037030020014198016a41086a4200370300200142003703a80220014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141a8016a200141b8026a41ec0010c30a1a2005200141b0036a29030037030020014198016a41086a200141f4036a290200370300200120012903a8033703a8022001200141ec036a29020037039801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a403210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141fc036a28020021130c010b200141a8016a200141286a41ec0010c30a1a200141a8026a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80220012001290308370398010b024020042000460d00200141b8026a200141a8016a41ec0010c30a1a200141d4036a2009360200200141cc036a2012360200200141b0036a200141a8026a41086a290300370300200141f4036a20014198016a41086a290300370200200120003602a4032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a8023703a80320012001290398013702ec03200120133602fc0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000bf90a01137f23004190046b22012400200141c0016a22024200370300200141b8016a22034200370300200141a8016a41086a22044200370300200142003703a801200141a8026a4192d1c800410b10f2012004200141a8026a41086a2205290000370300200120012900a8023703a801200141a8026a41c0d3c800411310f20120022005290000370300200320012900a8023703002001200141a8016a412010f501200141a8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802a801220720012802b00110b202024020012802c80322024102460d00200141286a200141b8026a41f00010c30a1a200141186a41086a200141b4036a280200360200200141086a41086a200141f4036a290200370300200120012902ac033703182001200141ec036a290200370308200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141fc036a28020021130b024020012802ac01450d00200710390b0240024020024102470d00200141c0016a4200370300200141b8016a4200370300200141a8016a41086a22024200370300200142003703a801200141a8026a41f1b5c900410d10f2012002200141a8026a41086a2205290000370300200120012900a8023703a801200141a8026a418bb6c900410c10f201200341086a2005290000370000200320012900a802370000200141b8026a200141a8016a412010b202024020012802c80322024102470d0041002104200141a8016a410041f00010c50a1a20014198016a41086a4100360200200542003703002001420037039801200142003703a8024106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141a8016a200141b8026a41f00010c30a1a20014198016a41086a200141b4036a2802003602002005200141f4036a290200370300200120012902ac03370398012001200141ec036a2902003703a802200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e20012802a803210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141fc036a28020021130c010b200141a8016a200141286a41f00010c30a1a20014198016a41086a200141186a41086a280200360200200141a8026a41086a200141086a41086a2903003703002001200129031837039801200120012903083703a8020b024020042000460d00200141b8026a200141a8016a41f00010c30a1a200141d4036a2009360200200141cc036a2012360200200141b4036a20014198016a41086a280200360200200141f4036a200141a8026a41086a290300370200200120003602a8032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b80320012001290398013702ac03200120012903a8023702ec03200120133602fc0320014198026a200610870a20012802a0022104200128029802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b200128029c02450d00200210390b20014190046a24000ba70d01137f23004190046b22012400200141d0016a41186a22024200370300200141d0016a41106a22034200370300200141d0016a41086a22044200370300200142003703d001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703d001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141d0016a412010f501200141d0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802d001220720012802d80110b202024020012802c80322024102460d00200141c0006a200141b8026a41d40010c30a1a200141186a41086a20014198036a290300370300200141186a41106a200141a0036a290300370300200141186a41186a200141a8036a290300370300200141186a41206a200141b0036a2903003703002001200129039003370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028c03210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802d401450d00200710390b0240024020024102470d00200141d0016a41186a4200370300200141d0016a41106a4200370300200141d0016a41086a22024200370300200142003703d001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703d001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141d0016a412010b202024020012802c80322024102470d0041002104200141d0016a410041d40010c50a1a200141a8016a41206a4200370300200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141d0016a200141b8026a41d40010c30a1a200520014198036a290300370300200141a8016a41106a200141a0036a290300370300200141a8016a41186a200141a8036a290300370300200141a8016a41206a200141b0036a29030037030020012001290390033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128028c03210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141d0016a200141c0006a41d40010c30a1a200141a8016a41206a200141186a41206a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141d0016a41d40010c30a1a200141d4036a2009360200200141cc036a201236020020014198036a200141a8016a41086a290300370300200141a0036a200141b8016a290300370300200141a8036a200141c0016a290300370300200141b0036a200141c8016a2903003703002001200036028c032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137039003200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000ba70d01137f23004190046b22012400200141d0016a41186a22024200370300200141d0016a41106a22034200370300200141d0016a41086a22044200370300200142003703d001200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703d001200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141d0016a412010f501200141d0016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802d001220720012802d80110b202024020012802c80322024102460d00200141c0006a200141b8026a41d80010c30a1a200141186a41086a2001419c036a290200370300200141186a41106a200141a4036a290200370300200141186a41186a200141ac036a290200370300200141186a41206a200141b4036a2802003602002001200129029403370318200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc032112200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a28020021130b024020012802d401450d00200710390b0240024020024102470d00200141d0016a41186a4200370300200141d0016a41106a4200370300200141d0016a41086a22024200370300200142003703d001200141a8016a41f1b5c900410d10f2012002200141a8016a41086a2205290000370300200120012900a8013703d001200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141d0016a412010b202024020012802c80322024102470d0041002104200141d0016a410041d80010c50a1a200141a8016a41206a4100360200200141a8016a41186a4200370300200141a8016a41106a42003703002005420037030020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100210541012111410121104101210f0c020b200141d0016a200141b8026a41d80010c30a1a20052001419c036a290200370300200141a8016a41106a200141a4036a290200370300200141a8016a41186a200141ac036a290200370300200141a8016a41206a200141b4036a28020036020020012001290294033703a801200141d0036a2802002108200141d4036a2802002109200141d8036a280200210a200141dc036a280200210b200141e0036a280200210c200141e4036a280200210d200141e8036a280200210e200128029003210420012802b803210f20012802bc03211020012802c003211120012802c403210520012802cc03211220014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a28020021130c010b200141d0016a200141c0006a41d80010c30a1a200141a8016a41206a200141186a41206a280200360200200141a8016a41186a200141186a41186a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41086a200141186a41086a29030037030020014198016a41086a200141086a41086a290300370300200120012903183703a80120012001290308370398010b024020042000460d00200141b8026a200141d0016a41d80010c30a1a200141d4036a2009360200200141cc036a20123602002001419c036a200141a8016a41086a290300370200200141a4036a200141b8016a290300370200200141ac036a200141c0016a290300370200200141b4036a200141c8016a28020036020020012000360290032001200e3602e8032001200d3602e4032001200c3602e0032001200b3602dc032001200a3602d803200120083602d003200120023602c803200120053602c403200120113602c003200120103602bc032001200f3602b803200120012903a80137029403200141f4036a20014198016a41086a290300370200200120133602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000b901501137f23004190046b22012400200141e8016a41186a22024200370300200141e8016a41106a22034200370300200141e8016a41086a22044200370300200142003703e801200141a8016a4192d1c800410b10f2012004200141a8016a41086a2205290000370300200120012900a8013703e801200141a8016a41c0d3c800411310f20120022005290000370300200320012900a8013703002001200141e8016a412010f501200141e8016a417f2001280204410020012802001b220241026a220420042002491b220610870a200141b8026a20012802e801220720012802f00110b202024020012802c80322024102460d00200141d8006a41386a200141b8026a41386a290300370300200141d8006a41306a200141b8026a41306a290300370300200141d8006a41286a200141b8026a41286a290300370300200141d8006a41206a200141b8026a41206a290300370300200141d8006a41186a200141b8026a41186a290300370300200141d8006a41106a200141b8026a41106a290300370300200141d8006a41086a200141b8026a41086a290300370300200141186a41086a20014184036a290200370300200141186a41106a2001418c036a290200370300200141186a41186a20014194036a290200370300200141186a41206a2001419c036a290200370300200141186a41286a200141a4036a290200370300200141186a41306a200141ac036a290200370300200141186a41386a200141b4036a280200360200200120012903b802370358200120012902fc0237031820012802f8022104200141086a41086a200141f4036a2902003703002001200141ec036a290200370308200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130b024020012802ec01450d00200710390b0240024020024102470d00200141e8016a41186a22114200370300200141e8016a41106a22124200370300200141e8016a41086a22044200370300200142003703e801200141a8016a41f1b5c900410d10f2012004200141a8016a41086a2205290000370300200120012900a8013703e801200141a8016a418bb6c900410c10f201200341086a2005290000370000200320012900a801370000200141b8026a200141e8016a412010b202024020012802c80322024102470d00200141e8016a41386a4200370300200141e8016a41306a4200370300200141e8016a41286a4200370300200141e8016a41206a420037030020114200370300201242003703002004420037030020054200370300200141a8016a41106a4200370300200141a8016a41186a4200370300200141a8016a41206a4200370300200141a8016a41286a4200370300200141a8016a41306a420037030041002104200141a8016a41386a410036020020014198016a41086a4200370300200142003703e801200142003703a80120014200370398014106210d41e400210c4102210b41c801210a410121094100210f41002102410021054101211141012112410121130c020b200141e8016a41386a200141b8026a41386a290300370300200141e8016a41306a200141b8026a41306a290300370300200141e8016a41286a200141b8026a41286a290300370300200141e8016a41206a200141b8026a41206a2903003703002011200141b8026a41186a2903003703002012200141b8026a41106a2903003703002004200141b8026a41086a290300370300200520014184036a290200370300200141a8016a41106a2001418c036a290200370300200141a8016a41186a20014194036a290200370300200141a8016a41206a2001419c036a290200370300200141a8016a41286a200141a4036a290200370300200141a8016a41306a200141ac036a290200370300200141a8016a41386a200141b4036a280200360200200120012903b8023703e801200120012902fc023703a80120012802f802210420014198016a41086a200141f4036a2902003703002001200141ec036a29020037039801200141fc036a2802002108200141e8036a2802002109200141e4036a280200210a200141e0036a280200210b200141dc036a280200210c200141d8036a280200210d200141d4036a280200210e200141d0036a280200210f20012802cc03211020012802c403210520012802c003211120012802bc03211220012802b80321130c010b200141e8016a41386a200141d8006a41386a290300370300200141e8016a41306a200141d8006a41306a290300370300200141e8016a41286a200141d8006a41286a290300370300200141e8016a41206a200141d8006a41206a290300370300200141e8016a41186a200141d8006a41186a290300370300200141e8016a41106a200141d8006a41106a290300370300200141e8016a41086a200141d8006a41086a290300370300200141a8016a41086a200141186a41086a290300370300200141a8016a41106a200141186a41106a290300370300200141a8016a41186a200141186a41186a290300370300200141a8016a41206a200141186a41206a290300370300200141a8016a41286a200141186a41286a290300370300200141a8016a41306a200141186a41306a290300370300200141a8016a41386a200141186a41386a280200360200200120012903583703e801200120012903183703a80120014198016a41086a200141086a41086a29030037030020012001290308370398010b024020042000460d00200141b8026a41386a200141e8016a41386a290300370300200141b8026a41306a200141e8016a41306a290300370300200141b8026a41286a200141e8016a41286a290300370300200141b8026a41206a200141e8016a41206a290300370300200141b8026a41186a200141e8016a41186a290300370300200141b8026a41106a200141e8016a41106a290300370300200141b8026a41086a200141e8016a41086a290300370300200120012903e8013703b802200120003602f802200141cc036a2010360200200141d4036a200e36020020014184036a200141a8016a41086a2903003702002001418c036a200141a8016a41106a29030037020020014194036a200141a8016a41186a2903003702002001419c036a200141a8016a41206a290300370200200141a4036a200141a8016a41286a290300370200200141ac036a200141a8016a41306a290300370200200141b4036a200141a8016a41386a280200360200200120133602b803200120123602bc03200120113602c003200120053602c403200120023602c8032001200f3602d0032001200d3602d8032001200c3602dc032001200b3602e0032001200a3602e403200120093602e803200120012903a8013702fc02200141f4036a20014198016a41086a290300370200200120083602fc0320012001290398013702ec03200141a8026a200610870a20012802b002210420012802a802210220014100360288042001420137038004200141b8026a20014180046a10fb092002200420012802800420012802880410a3020240200128028404450d0020012802800410390b20012802ac02450d00200210390b20014190046a24000bb80501067f230041e0006b22032400200341086a4198f9c500410810f201200341186a41aef9c500411210f201200320013602482003200341c8006a410410f301370338200341dc006a2201200341c8006a41046a3602002003200341386a41086a3602542003200341c8006a3602582003200341386a360250200341286a200341d0006a108d01200320023602442003200341c4006a410410f3013703482001200341c4006a41046a3602002003200341c8006a41086a3602542003200341c4006a3602582003200341c8006a360250200341386a200341d0006a108d010240024020032802302201200328024022046a41206a2202417f4c0d000240024020020d00410121050c010b200210382205450d020b2000200536020041002106200041086a22074100360200200041046a2208200236020002402002410f4b0d0020004100411010810120072802002106200028020021050b200520066a22022003290008370000200241086a200341086a41086a2900003700002007200641106a220236020002402008280200220520026b410f4b0d00200020024110108101200041046a2802002105200041086a28020021020b2000280200220620026a22072003290018370000200741086a200341186a41086a290000370000200041086a2207200241106a2202360200200328022821080240200520026b20014f0d00200020022001108101200041046a280200210520072802002102200028020021060b200620026a2008200110c30a1a2007200220016a2202360200200328023821010240200520026b20044f0d00200020022004108101200041086a2802002102200028020021060b200620026a2001200410c30a1a200041086a200220046a3602000240200328023c450d00200328023810390b0240200328022c450d00200328022810390b200341e0006a24000f0b1034000b1030000b9c330c047f017e017f017e027f017e027f017e057f017e067f017e230041900d6b22042400200341106a22052802002106200241106a22072903002108200328020021092002290300210a200441fc016a200241f8016a290000370200200441f4016a200241f0016a290000370200200441ec016a200241e8016a290000370200200441e7e485f3063602e0012004200241e0016a2900003702e401200441e8006a41106a2005280200360200200441e8006a41086a200341086a29020037030020042003290200370368200441e80c6a200441e0016a200441e8006a10860502400240024002400240024020042d00e80c4101470d00200441286a41086a200441f20c6a290100370300200441286a41106a200441fa0c6a2901003703002004413f6a200441810d6a290000370000200420042901ea0c37032820042d00e90c21050240024020022903084201520d00200441e0016a200741f00110c30a1a0240200441e0016a410c6a200441d0026a412010c60a0d0020042802e80120042802cc02460d020b200441cc026a21022004418c0d6a2207200441e0016a41086a220341206a280200360200200441840d6a220b200341186a290200370200200441fc0c6a220c200341106a290200370200200441e80c6a410c6a200341086a290200370200200441013602e80c200420032902003702ec0c20042903e001210d2004420037026c2004410028029cde4a2203360268200d200441e80c6a200a200441e8006a10de082004418c026a20042802682004280270200441b0036a220e10f104210f0240200428026c450d00200428026810390b2007200241206a280200360200200b200241186a290200370200200c200241106a290200370200200441f40c6a200241086a290200370200200441013602e80c200420022902003702ec0c20042903e001210d2004420037026c20042003360268200d200441e80c6a200a200441e8006a10de08200441f0026a20042802682004280270200e10f10421020240200428026c450d00200428026810390b200f200271450d010c030b200441e0016a200741f00110c30a1a0240200441e0016a410c6a200441d0026a412010c60a0d0020042802e80120042802cc02460d010b200441cc026a21022004418c0d6a2207200441e0016a41086a220341206a280200360200200441840d6a220b200341186a290200370200200441fc0c6a220c200341106a290200370200200441e80c6a410c6a200341086a290200370200200420032902003702ec0c200441003602e80c20042903e001210d2004420037026c2004410028029cde4a2203360268200d200441e80c6a200a200441e8006a10de082004418c026a20042802682004280270200441b0036a220e10f104210f0240200428026c450d00200428026810390b2007200241206a280200360200200b200241186a290200370200200c200241106a290200370200200441f40c6a200241086a290200370200200441003602e80c200420022902003702ec0c20042903e001210d2004420037026c20042003360268200d200441e80c6a200a200441e8006a10de08200441f0026a20042802682004280270200e10f10421020240200428026c450d00200428026810390b200f2002710d020b2000420037030820004201370300200041286a4118360200200041246a41fafdc500360200200041226a41053a0000200041206a4183143b0100200041186a41003a00000c020b2000420037030820004201370300200041286a4118360200200041246a4192fec500360200200041226a41043a0000200041206a4183143b0100200041186a41003a00000c010b02400240024002400240024002400240200a4200520d00200441e0016a420010df08200441106a20042802e001220b20042802e80110f5012004280214210720042802102102024020042802e401450d00200b10390b0c010b200441e0016a200a427f7c10df08200441206a20042802e001220720042802e80110f5012004280224210b20042802202102024020042802e401450d00200710390b2002450d01200441e0016a200a10df08200441186a20042802e001220c20042802e80110f501200428021c21072004280218210220042802e401450d00200c10390b2002450d0102400240200920074b0d0041022009200b4d200a501b22024102460d012002410171450d010b2000420037030820004201370300200041286a4118360200200041246a41fafdc500360200200041226a41053a0000200041206a4183143b0100200041186a41003a00000c070b20012d00002209410146220c41057421074101210b024020094101470d0020071038220b450d080b41002102200441003602502004200b36024820042007410576220b36024c200441e0016a41186a200141016a220741186a290000370300200441e0016a41106a200741106a290000370300200441e0016a41086a200741086a290000370300200420072900003703e0010240200b200c4f0d00200441c8006a4100200c10f502200428025021020b02402009450d00200428024820024105746a220720042903e001370000200741086a200441e0016a41086a290300370000200741106a200441e0016a41106a290300370000200741186a200441e0016a41186a290300370000200241016a21020b2004200236025041201038220e450d07200e20053a0000200e2004290328370001200e41096a200441286a41086a290300370000200e41116a200441386a290300370000200e41186a2004413f6a290000370000200441d8006a41086a200441c8006a41086a28020036020020042004290348370358200441003602b801200442013703b001200441b0016a4100410810810120042802b001220520042802b80122026a200a3700002004200241086a22023602b801024020042802b40120026b41074b0d00200441b0016a2002410810810120042802b001210520042802b80121020b200520026a20083700002004200241086a3602b801200441e0016a41bd87ca0010e802200441e80c6a20042802e001220520042802e80110ba0220042902ec0c420020042802e80c22021b21102002200320021b2111024020042802e401450d00200510390b200420104220883e026c20042011360268200441086a200441e8006a10ad0120042802080d04200428020c2212200428026c220341306e2202200220124b1bad42307e220d422088a70d08200da72202417f4c0d084108211302402002450d00200210382213450d080b4100210b200441003602f00c200420133602e80c2004200241306e22023602ec0c024020120d004100210b2013450d050c060b200441e0016a4104722101200441e0016a41196a210f200441e0016a41126a2114200441eb016a21154100210c024003400240200341084f0d00200321020c050b200341786a22024108490d04200c41016a210c20042802682209290000210d200341706a21072009290008211641002102034020072002460d02200120026a200920026a220541106a2d00003a00002004200241016a22033602e0012004200541116a3602682003210220034120470d000b200441dc016a41026a2205201541026a2d00003a0000200441d8016a41026a2209201441026a2d00003a0000200420012f01003b019001200420152f00003b01dc01200420142f00003b01d8012004200141026a2d00003a009201200428028002211720042802fc01211820042800f501211920042801ee01211a20042800e701211b200441d4016a41026a221c200f41026a2d00003a00002004200f2f00003b01d4010240200b20042802ec0c470d00200441e80c6a200b10e00820042802e80c211320042802f00c210b0b200720036b21032013200b41306c6a220220163703082002200d370300200241126a20042d0092013a0000200220042f0190013b0110200241196a20052d00003a0000200241176a20042f01dc013b0000200241206a20092d00003a00002002411e6a20042f01d8013b0000200241136a201b3600002002411a6a201a360000200241216a2019360000200241276a201c2d00003a0000200241256a20042f01d4013b00002002412c6a2017360000200241286a20183600002004200b41016a220b3602f00c200c2012470d000b20042802ec0c210220042802e80c2213450d050c060b2004410036026c0c030b2000420037030820004201370300200041286a4118360200200041246a41fafdc500360200200041226a41053a0000200041206a4183143b0100200041186a41003a00000c050b2000420037030820004201370300200041286a4118360200200041246a41fafdc500360200200041226a41053a0000200041206a4183143b0100200041186a41003a00000c040b2004200236026c0b20042802ec0c2202450d00200241306c450d0020042802e80c10390b4100210241002802fcad4921134100210b0b200441e8006a410c6a41bd87ca00200441b0016a10c60420044188016a200b36020020044184016a2002360200200441e8006a41086a200441b0016a41086a22022802003602002004201336028001200420042903b00137036802402010a7450d00201110390b20044190016a41186a200e41186a290000220d37030020044190016a41106a200e41106a290000221637030020044190016a41086a200e41086a29000022103703002004200e290000221d37039001200441b0016a41186a200d370300200441b0016a41106a2016370300200220103703002004201d3703b001200441003602e801200442013703e001200441e0016a4100410810810120042802e001220520042802e80122026a200a3700002004200241086a22033602e801200441e0016a410c6a2102024020042802e401220720036b41074b0d00200441e0016a2003410810810120042802e401210720042802e001210520042802e80121030b200520036a2008370000200241002900bd874a370000200241086a41002900c5874a3700002004200341086a3602e8012004200441b0016a3602fc01200441e80c6a200441e0016a10950302402007450d00200510390b200441e0016a200441e80c6a10df0220042802e001220320042802e80110a802210b024020042802e401450d00200310390b024002400240200b0d00200220042903b001370000200241186a200441b0016a41186a290300370000200241106a200441b0016a41106a290300370000200241086a200441b0016a41086a290300370000200441e0016a200441d8006a10a103200441e80c6a200441e0016a10ee022004280280012109024002402004280288012201450d00410021022001210720012105024003400240024002402009200741017620026a220341306c6a2207290300220d200a540d000240200d200a510d00200321050c030b2007290308220d20085a0d010b200341016a21020c010b20032105200d2008510d020b200520026b210720022103200520024b0d000b0b200120034f0d01200320011044000b410021030b02402001200428028401470d0020044180016a200110e00820042802800121090b2009200341306c6a220241306a2002200120036b41306c10c40a1a200220042903e80c220d370010200241186a200441e80c6a41086a2903002216370000200241206a200441e80c6a41106a2903002210370000200241286a200441e80c6a41186a290300221d370000200220083703082002200a3703002004200141016a36028801200441e0016a41186a2205201d370300200441e0016a41106a22072010370300200441e0016a41086a220920163703002004200d3703e0010240200428027c22032004280278470d00200441f4006a2003410110f502200428027c21030b200428027420034105746a220220042903e001370000200241186a2005290300370000200241106a2007290300370000200241086a20092903003700002004200341016a36027c200e1039200b0d01024002400240200428027c2209450d00200941057421032004280274220b21020340200441e0016a200210e30220042802e00122050d02200241206a2102200341606a22030d000b0b41002802ccdd4a2101420021160c010b200441e80c6a41206a2201200441e0016a41246a290200370300200441800d6a220c200441e0016a411c6a290200370300200441f80c6a220e200441e0016a41146a290200370300200441f00c6a220f200441e0016a410c6a290200370300200420042902e4013703e80c412c10382207450d0520072005360200200720042903e80c3702042007410c6a200f290300370200200741146a200e2903003702002007411c6a200c290300370200200741246a200129030037020020044281808080103702b401200420073602b001024020034120460d00200241206a210c200441e0016a4104722101200b20094105746a220541606a210e4101210b0340200c210202400340200441e0016a200210e30220042802e00122030d012005200241206a2202470d000c030b0b200441e80c6a41206a220f200141206a290200370300200441e80c6a41186a2214200141186a290200370300200441e80c6a41106a2215200141106a290200370300200441e80c6a41086a2213200141086a290200370300200420012902003703e80c0240200b20042802b401470d00200441b0016a200b10fd0220042802b00121070b200241206a210c2007200b412c6c6a22092003360200200920042903e80c3702042009410c6a2013290300370200200941146a20152903003702002009411c6a2014290300370200200941246a200f2903003702002004200b41016a220b3602b801200e2002470d000b0b20042802b001210120042902b40121160b200441e0016a41206a200441e8006a41206a2802002202360200200441e0016a41186a200441e8006a41186a290300220d370300200441e0016a41106a200441e8006a41106a290300370300200441e0016a41086a200441e8006a41086a290300370300200420042903683703e001200241306c4104722203417f4c0d05200310382205450d04200da7210b20044100360298012004200336029401200420053602900120044190016a200210d20102402002450d00200b200241306c6a2109200b210203402002290300210d0240200428029401220520042802980122036b41074b0d0020044190016a20034108108101200428029401210520042802980121030b200428029001220720036a200d3700002004200341086a220336029801200241086a290300210d0240200520036b41074b0d0020044190016a20034108108101200428029001210720042802980121030b200720036a200d3700002004200341086a36029801200241106a20044190016a10ff02200241306a22022009470d000b0b200441b0016a41086a20044190016a41086a28020036020020042004290390013703b001200441e80c6a41bd87ca0010e80220042802e80c220220042802f00c200441b0016a10c704024020042802ec0c450d00200210390b024020042802b401450d0020042802b00110390b41bd87ca00200441e0016a200441ec016a10c804024020042802e401450d0020042802e00110390b0240200441f0016a28020041ffffff3f71450d0020042802ec0110390b200441fc016a2802002202450d02200241306c450d02200b10390c020b200e10390b0240200428026c450d00200428026810390b0240200428027841ffffff3f71450d00200428027410390b4100210102402004280284012202450d00200241306c450d0020042802800110390b0b0240200428025c41ffffff3f71450d00200428025810390b02402001450d0020064101200641014b1b2202418094ebdc036e2002418094ebdc03704100476a22034101200341014b1b220320024b0d0420022016422088a7220741036c220520022005491b20036ead428094ebdc037e200220036ead80a71088052105200741ffffffff03712007470d0320074102742203417f4c0d034104210202402003450d00200310382202450d030b41002109200441003602b801200420023602b0012004200341027622033602b401024002400240200320074f0d00200441b0016a4100200710be0320042802b001210220042802b80121090c010b2007450d010b200220094102746a210220072103034020022005360200200241046a21022003417f6a22030d000b200920076a21090b200420093602b8012004410036027020044201370368200441e8006a4100410810810120042802682203200428027022026a200a3700002004200241086a22023602700240200428026c20026b41074b0d00200441e8006a2002410810810120042802682103200428027021020b200320026a2008370000200441e8006a41086a2203200241086a360200200441fc006a41002900c5874a370200200441002900bd874a370274200441830d6a200441e8006a41186a280200360000200441fb0c6a200441e8006a41106a290300370000200441f30c6a2003290300370000200420042903683700eb0c200441e0016a41186a200441ff0c6a290000370000200441f1016a200441e80c6a41106a290000370000200441e9016a200441e80c6a41086a290000370000200420042900e80c3700e101200441033a00e001200441e0016a10fc01024020042802b40141ffffffff0371450d0020042802b00110390b02402007450d002007412c6c21032001210203400240200241046a28020041ffffff3f71450d00200228020010390b2002412c6a2102200341546a22030d000b0b02402016a72202450d002002412c6c450d00200110390b2001450d002000420037030820004200370300200041186a41013a00000c010b2000420037030820004201370300200041286a4116360200200041246a41d5fec500360200200041226a41063a0000200041206a4183143b0100200041186a41003a00000b200441900d6a24000f0b1030000b1034000b41e0a8c800411941f8c7ca001035000bdc3406027f087e087f027e027f027e230041f0106b220624000240024002402003200484500d0020012002412010c60a0d010b200041083a00000c010b20064188026a200210dd02200641e8056a200628028802220720062802900210e10242002108420021094200210a4200210b4200210c4200210d4200210e4200210f024020062903e8054201520d00200641a8066a290300210f200641a0066a290300210e20064198066a290300210d20064190066a290300210c20064188066a290300210b20064180066a290300210a200641f8056a290300210920062903f00521080b0240200628028c02450d00200710390b0240024002402008200c200a84842009200d200b848484500d00200641c8016a21070c010b200641c8016a2107200e200f8450450d00410021100c010b20064180026a200f370300200641f0016a200d370300200641e0016a200b3703002006200e3703f8012006200c3703e8012006200a3703d801200620083703c801200620093703d001410121100b0240024020100d00200641c8036a4200370300200641c0036a4200370300200641b8036a4200370300200641b0036a4200370300200641a8036a4200370300200641a0036a420037030020064198036a420037030020064200370390030c010b20064190036a41386a200741386a29030037030020064190036a41306a200741306a29030037030020064190036a41286a200741286a29030037030020064190036a41206a200741206a29030037030020064190036a41186a200741186a29030037030020064190036a41106a200741106a29030037030020064190036a41086a200741086a29030037030020062007290300370390030b200620064190036a3602d40320064198056a200110dd02200641e8056a200628029805221120062802a00510e1024200210e4200210f4200210c4200210d4200210a4200210b4200210842002109024020062903e8054201520d00200641a8066a290300210f200641a0066a290300210e20064198066a290300210d20064190066a290300210c20064188066a290300210b20064180066a290300210a200641f8056a290300210920062903f00521080b0240200628029c05450d00201110390b02400240024002402008200c200a84842009200d200b848484500d00200641f8036a2111200641d8036a21120c010b200e200f844200510d01200641f8036a2111200641d8036a21120b20064190046a200f37030020064180046a200d370300200641d8036a41186a200b3703002006200e370388042006200c3703f8032006200a3703e803200620083703d803200620093703e00320064198056a41186a201141186a29030037030020064198056a41106a201141106a29030037030020064198056a41086a201141086a290300370300200620112903003703980541012113410021140c010b200641b0056a4200370300200641a8056a4200370300200641a0056a420037030020064200370398054100211341012114200641d8036a21124200210a4200210b42002108420021090b418008211541032111024002400240024002400240200820037d220d200856200920047d2008200354ad7d220820095620082009511b450d0041bcaac400ad21084180800821054280808080b00221090c010b024020062802d4032216290300220920037c220e2009542217201641086a290300220c20047c2017ad7c2209200c542009200c511b450d004100210541800221154107211142002108420021090c010b2016200e370300201620093703080240427f200e20162903107c220c200c200e5422172009201641186a2903007c2017ad7c220c200954200c2009511b22161b4280c8afa025544100427f200c20161b501b450d0041d8aac400ad21084180800c21054280808080a00221090c010b200641c8046a200110dd02200641e8056a20062802c804221720062802d00410e10220064198066a290300420020062903e80542015122161b210920064190066a290300420020161b210c024020062802cc04450d00201710390b0240200c200d56200920085620092008511b450d00419caac400ad21084180800421054280808080d00221090c010b024002400240024002402005450d00200641c8046a200110dd02200641e8056a20062802c804221620062802d00410e102200641b4066a280200210520062903e8052109024020062802cc04450d00201610390b20094201520d012005450d010b427f200d200a7c22092009200d5422052008200b7c2005ad7c220920085420092008511b22051b22184280c8afa025544100427f200920051b2219501b2216450d0141f4aac400ad21084180801021054280808080900121090c040b427f200d200a7c22092009200d5422112008200b7c2011ad7c220920085420092008511b22111b22184280c8afa025544100427f200920111b22195022111b21162014ad210c0240201842ffc7afa02556201942005220111b450d0020064198056a2105200641e8056a21110c020b200d200a842008200b8484220950211a2009420052ad2109200641e8056a21110c020b2014ad210c20064198056a2105200641e8056a21110b20112005290300370300201141186a200541186a290300370300201141106a200541106a290300370300201141086a200541086a290300370300420021094101211a0b2012200a3703102012200d370300201241186a200b3703002012200837030820122011290300370320201241286a201141086a290300370300201241306a201141106a290300370300201241386a201141186a29030037030020064198046a41106a200837030020064198046a41286a2019370300200641b8046a221b20183703002006200d3703a004200620093703b0042006200c37039804024002400240024020142016410173221771450d00200620013602e8052001200641e8056a10f0020c010b024020132016714101470d00200620013602e8052001200641e8056a10e00241ff017122114103460d0120110e03020103020b41002115410021114100210520132017724101470d050b200641c8046a41386a201241386a290300370300200641c8046a41306a201241306a290300370300200641c8046a41286a201241286a290300370300200641c8046a41206a201241206a290300370300200641c8046a41186a201241186a290300370300200641c8046a41106a201241106a290300370300200641c8046a41086a201241086a290300370300200620122903003703c80420064188056a200110dd02200641e8056a2006280288052211200628029005220510e1020240024020062903e8054201510d00200641e0056a4200370300200642003703d8050c010b20064198056a200641e8056a41086a41d00010c30a1a0b024002402016450d00200641a0066a420037030020064198066a420037030020064190066a420037030020064188066a420037030020064180066a4200370300200641f8056a4200370300200641f0056a4200370300200642003703e8050c010b200641e8056a41386a200641c8046a41386a290300370300200641e8056a41306a200641c8046a41306a290300370300200641e8056a41286a200641c8046a41286a290300370300200641e8056a41206a200641c8046a41206a290300370300200641e8056a41186a200641c8046a41186a290300370300200641e8056a41106a200641c8046a41106a290300370300200641e8056a41086a200641c8046a41086a290300370300200620062903c8043703e8050b20064198056a41386a200641e8056a41386a29030037030020064198056a41306a200641e8056a41306a29030037030020064198056a41286a200641e8056a41286a29030037030020064198056a41206a200641e8056a41206a29030037030020064198056a41186a200641e8056a41186a29030037030020064198056a41106a200641e8056a41106a29030037030020064198056a41086a200641e8056a41086a2215290300370300200620062903e80537039805201520064198056a41d00010c30a2115200642013703e80520112005201510e2020240200628028c05450d00201110390b20064198046a41106a290300210820064198046a41286a290300211920062903a004210d20062903b8042118200629039804210c20062903b004210941002116410021120c050b200641c0046a2903002119200641a8046a290300210820062903b804211820062903a004210d4100211520062903b0042109200629039804210c41002111410021050c030b4100210541042111410121150240201a0d002006201b3602e805200641e8056a10a4060b0c010b2009200884210c20052015722105410121150b0b20054180fe1f71221220117221164101211120150d010b0240200c4201520d00200641a0066a200837030020064198066a200d370300200641f1056a2001290000370000200641e8056a41086a41003a000020064189066a200141186a29000037000020064181066a200141106a290000370000200641f9056a200141086a290000370000200641023a00e805200641e8056a10fc010b02400240200950450d004200210c0c010b200641e8056a41186a200141186a290000370300200641e8056a41106a200141106a290000370300200641e8056a41086a200141086a290000370300200620012900003703e8054201210c0b20064198056a41186a200641e8056a41186a29030037030020064198056a41106a200641e8056a41106a29030037030020064198056a41086a200641e8056a41086a290300370300200620062903e80537039805410021110b2010410173210520064190036a41086a29030021082006290390032109024002402011450d004200210f200c210a0c010b200641c8046a41186a20064198056a41186a290300370300200641c8046a41106a20064198056a41106a290300370300200641c8046a41086a20064198056a41086a29030037030020062006290398053703c8044200210d02400240427f200920062903a003221c7c220a200a2009542215200820064190036a41186a290300221d7c2015ad7c220a200854200a2008511b22151b220e42ffc7afa02556427f200a20151b220b420052200b501b0d004200210f2009201c842008201d8484420052ad210d0c010b200641e8056a41186a200641c8036a290300370300200641e8056a41106a200641c0036a290300370300200641f0056a200641b8036a290300370300200620062903b0033703e8054201210f0b2005ad210a20072009370300200720083703082007201c370310200741186a201d370300200720062903e805370320200741286a200641f0056a290300370300200741306a200641f8056a290300370300200741386a200641e8056a41186a2903003703000b200641f0026a41086a200641c8046a41086a290300370300200641f0026a41106a2215200641c8046a41106a290300370300200641f0026a41186a2214200641c8046a41186a290300370300200620062903c8043703f00202400240024002400240024020110d00200641e8026a2019370300200641e0026a22132018370300200641b0026a200b370300200641a8026a2216200e37030020064188026a41106a2008370300200641c0026a221120062903f002370300200641d8026a2014290300370300200641d0026a2015290300370300200641c8026a200641f8026a29030037030020062009370390022006200c3703b8022006200d3703a0022006200a370388020240200f420052200571450d00200620023602e8052002200641e8056a10f0020c040b0240024002402010200f50714101470d00200620023602e8052002200641e8056a10e00241ff017122104103460d0620100e03010602010b2010200f420052720d0520064198056a41286a201141286a29030037030020064198056a41206a201141206a29030037030020064198056a41186a201141186a29030037030020064198056a41106a201141106a29030037030020064198056a41086a201141086a29030037030020062011290300370398050c030b20064198056a41286a201141286a29030037030020064198056a41206a201141206a29030037030020064198056a41186a201141186a29030037030020064198056a41106a201141106a29030037030020064198056a41086a201141086a29030037030020062011290300370398050c020b0240200d500d00200620163602e805200641e8056a10a4060b200641b8026a10ec0741012107410421164100211220062903b802500d02200620133602e805200641e8056a10a4060c020b410121070c010b4100211241002116410021070b20124180fe1f71201641ff0171722117024020070d00200a210f200c210a0c020b410121070c020b200641c8046a41386a200741386a290300370300200641c8046a41306a200741306a290300370300200641c8046a41286a200741286a290300370300200641c8046a41206a200741206a290300370300200641c8046a41186a200741186a290300370300200641c8046a41106a200741106a290300370300200641c8046a41086a200741086a290300370300200620072903003703c804200641d8036a200210dd02200641e8056a20062802d803220720062802e003221010e1020240024020062903e8054201510d00200641e0056a4200370300200642003703d8050c010b20064198056a200641e8056a41086a41d00010c30a1a0b02400240200f4200520d00200641a0066a420037030020064198066a420037030020064190066a420037030020064188066a420037030020064180066a4200370300200641f8056a4200370300200641f0056a4200370300200642003703e8050c010b200641e8056a41386a200641c8046a41386a290300370300200641e8056a41306a200641c8046a41306a290300370300200641e8056a41286a200641c8046a41286a290300370300200641e8056a41206a200641c8046a41206a290300370300200641e8056a41186a200641c8046a41186a290300370300200641e8056a41106a200641c8046a41106a290300370300200641e8056a41086a200641c8046a41086a290300370300200620062903c8043703e8050b20064198056a41386a200641e8056a41386a29030037030020064198056a41306a200641e8056a41306a29030037030020064198056a41286a2205200641e8056a41286a29030037030020064198056a41206a2215200641e8056a41206a29030037030020064198056a41186a2216200641e8056a41186a29030037030020064198056a41106a2212200641e8056a41106a29030037030020064198056a41086a2214200641e8056a41086a2213290300370300200620062903e80537039805201320064198056a41d00010c30a2113200642013703e80520072010201310e202024020062802dc03450d00200710390b2014201141086a2903003703002012201141106a2903003703002016201141186a2903003703002015201141206a2903003703002005201141286a290300370300200620112903003703980520064188026a41106a290300210820064188026a41286a290300210b200629039002210920062903a802210e200629038802210f20062903a002210d20062903b802210a410021170b0240200f4201520d00200641a0066a200837030020064198066a2009370300200641f1056a2002290000370000200641e8056a41086a41003a000020064189066a200241186a29000037000020064181066a200241106a290000370000200641f9056a200241086a290000370000200641023a00e805200641e8056a10fc010b02400240200d50450d00420021080c010b20064188026a41186a200241186a29000037030020064188026a41106a200241106a29000037030020064188026a41086a200241086a2900003703002006200229000037038802420121080b200641c8046a41186a20064188026a41186a290300370300200641c8046a41106a20064188026a41106a290300370300200641c8046a41086a20064188026a41086a290300370300200641e8056a41086a20064198056a41086a290300370300200641e8056a41106a20064198056a41106a290300370300200641e8056a41186a20064198056a41186a290300370300200641e8056a41206a20064198056a41206a290300370300200641e8056a41286a20064198056a41286a29030037030020062006290388023703c80420062006290398053703e805410021070b20064198016a41086a2211200641e8056a41086a29030037030020064198016a41106a2210200641e8056a41106a29030037030020064198016a41186a2205200641e8056a41186a29030037030020064198016a41206a2215200641e8056a41206a29030037030020064198016a41286a2216200641e8056a41286a290300370300200641f8006a41086a2212200641c8046a41086a290300370300200641f8006a41106a2214200641c8046a41106a290300370300200641f8006a41186a2213200641c8046a41186a290300370300200620062903e80537039801200620062903c804370378024020070d00200641c8006a2006290378370300200641386a2016290300370300200641086a41286a2015290300370300200641086a41206a2005290300370300200641086a41186a2010290300370300200641086a41106a2011290300370300200641d0006a2012290300370300200641d8006a2014290300370300200641e0006a20132903003703002006200629039801370310200641f0006a200b370300200641e8006a2207200e370300200620083703402006200a370308200641086a10ec0702402006290308500d002006200641306a3602e805200641e8056a10a4060b200641c0006a10ec0702402006290340500d00200620073602e805200641e8056a10a4060b200641c0066a2004370300200641b8066a2003370300200641e8056a41086a41023a000020064189066a200141186a29000037000020064181066a200141106a290000370000200641f9056a200141086a290000370000200641f1056a200129000037000020064191066a200229000037000020064199066a200241086a290000370000200641a1066a200241106a290000370000200641a9066a200241186a290000370000200641023a00e805200641e8056a10fc01200041083a00000c010b20002017360200200041046a200a3702000b200641f0106a24000bff0102017f027e230041900b6b220124002000290300210220004200370300024020024201520d00200041286a2903002102200141c0006a200041306a2903002203370300200141086a41306a2002370300200141116a2000290008370000200141106a41013a0000200141296a200041206a290000370000200141216a200041186a290000370000200141196a200041106a290000370000200141023a0008200141086a10fc012001200337031020012002370308024020022003844200520d002001200141086a360204200141046a10a4060c010b20012003370310200120023703082001200141086a360204200141046a10a4060b200141900b6a24000bfb0c03077f027e037f230041f0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041023a00300c010b200328020c210402400240200341106a2802002202450d00200320012d00003a004c2003410136024820024101460d00200320012d00013a004d2003410236024820024102460d00200320012d00023a004e2003410336024820024103460d00200320012d00033a004f2003410436024820024104460d00200341d0006a20012d00043a00002003410536024820024105460d00200341d1006a20012d00053a00002003410636024820024106460d00200341d2006a20012d00063a00002003410736024820024107460d00200341d3006a20012d00073a00002003410836024820024108460d00200341d4006a20012d00083a00002003410936024820024109460d00200341d5006a20012d00093a00002003410a3602482002410a460d00200341d6006a20012d000a3a00002003410b3602482002410b460d00200341d7006a20012d000b3a00002003410c3602482002410c460d00200341d8006a20012d000c3a00002003410d3602482002410d460d00200341d9006a20012d000d3a00002003410e3602482002410e460d00200341da006a20012d000e3a00002003410f3602482002410f460d00200341db006a20012d000f3a00002003411036024820024110460d00200341dc006a20012d00103a00002003411136024820024111460d00200341dd006a20012d00113a00002003411236024820024112460d00200341de006a20012d00123a00002003411336024820024113460d00200341df006a20012d00133a00002003411436024820024114460d00200341e0006a20012d00143a00002003411536024820024115460d00200341e1006a20012d00153a00002003411636024820024116460d00200341e2006a20012d00163a00002003411736024820024117460d00200341e3006a20012d00173a00002003411836024820024118460d00200341e4006a20012d00183a00002003411936024820024119460d00200341e5006a20012d00193a00002003411a3602482002411a460d00200341e6006a20012d001a3a00002003411b3602482002411b460d00200341e7006a20012d001b3a00002003411c3602482002411c460d00200341e8006a20012d001c3a00002003411d3602482002411d460d00200341e9006a20012d001d3a00002003411e3602482002411e460d00200341ea006a20012d001e3a00002003411f3602482002411f460d00200341eb006a20012d001f3a0000200341386a41026a200341d5006a2d00003a0000200341ec006a41026a200341dc006a2d00003a0000200320032f014c3b0128200320032d004e3a002a2003200341d3006a2f00003b01382003200341da006a2f01003b016c200341d6006a2801002105200341dd006a2800002106200341e4006a280200210720034120360248200341c8006a41206a2802002108200328004f2109200341c4006a41026a200341e3006a2d00003a00002003200341e1006a2f00003b0144200241606a22024110490d0020024110460d00200141286a290000210a2001290020210b410021020240024020012d00300e020100020b410121020b2003411c6a41026a220c200341386a41026a2d00003a0000200341186a41026a220d200341ec006a41026a2d00003a0000200341146a41026a220e200341c4006a41026a2d00003a0000200320032d002a3a0022200320032f01283b0120200320032f01383b011c200320032f016c3b0118200320032f01443b01142000200a3703082000200b37030020002009360013200020032f01203b0110200041126a20032d00223a00002000200536001a200020032f011c3b0017200041196a200c2d00003a000020002006360021200020032f01183b001e200041206a200d2d00003a0000200020032f01143b0025200041276a200e2d00003a00002000200836002c20002007360028200041346a200341cb006a280000360000200020032800483600310c010b2003420037022c2003410028029cde4a3602282003410c36023c200320033602382003200341286a36026c200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341ec006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b410221020b200020023a00302004450d00200110390b200341f0006a24000bc60203047f027e017f230041106b220324000240411110382204450d00200342113702042003200436020020034100412010810120032802002204200328020822056a22062002290010370000200641186a200241286a290000370000200641106a200241206a290000370000200641086a200241186a2900003700002003200541206a2206360208200241086a29030021072002290300210802402003280204220520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a22092007370008200920083700002003200641106a220636020820022d00302102024020052006470d0020032005410110810120032802002104200328020821060b200420066a20023a0000200020012004200641016a10a30202402003280204450d00200328020010390b200341106a24000f0b1030000bba0101037f0240200128020422020d00200041023602000f0b20012002417f6a220336020420012001280200220441016a36020002400240024020042d00000e020102000b200041023602000f0b200041003602000f0b0240024020034104490d0020012002417b6a22033602042001200441056a360200200341034b0d010b200041023602000f0b20002004280001360204200041013602002001200241776a3602042001200441096a360200200041086a20042800053602000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42187e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141186c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141186e360200200241206a24000f0b1034000bf80a01097f230041d0006b2202240002400240200128020422030d00200041043a00000c010b20012003417f6a220436020420012001280200220541016a36020002400240024020052d00000e020102000b200041043a00000c020b200041033a00000c010b02402004450d0020012003417e6a22063602042001200541026a360200024002400240024020052d00010e03000102040b200241206a410472210741002104417d2108034020062004460d042001200320086a3602042001200520046a220941036a360200200720046a200941026a2d00003a00002002200441016a22093602202008417f6a21082009210420094120470d000b2002411c6a41026a22092002412d6a2d00003a00002002200241396a220628000036024820022002413c6a28000036004b200220022f01243b0144200220022d00263a004620022002412b6a2f00003b011c2002412e6a2801002101200241356a2800002104200241c0006a280200210320022800272105200228004b2108200241186a41026a2207200241346a2d00003a00002002200241326a2f01003b0118200241146a41026a220a2002413b6a2d00003a0000200220062f00003b01142002410c6a41026a20022d00463a0000200220022f01443b010c200241086a41026a20092d00003a0000200220022f011c3b0108200241046a41026a20072d00003a0000200220022f01183b0104200241026a200a2d00003a0000200220022f01143b0100410021090c020b200241206a410472210741002104417d2108034020062004460d032001200320086a3602042001200520046a220941036a360200200720046a200941026a2d00003a00002002200441016a22093602202008417f6a21082009210420094120470d000b200241c0006a2802002103200241356a28000021042002412e6a2801002101200241396a280000210820022800272105200241ce006a2002413f6a2d00003a000020022008360248200241c4006a41026a220920022d004a3a000020022002413d6a2f00003b014c200220022f01243b011c200220022d00263a001e200220083b0144200228004b2108200241186a41026a22062002412d6a2d00003a000020022002412b6a2f00003b0118200241146a41026a2207200241346a2d00003a00002002200241326a2f01003b0114200241106a41026a220a20092d00003a0000200220022f01443b01102002410c6a41026a20022d001e3a0000200220022f011c3b010c200241086a41026a20062d00003a0000200220022f01183b0108200241046a41026a20072d00003a0000200220022f01143b0104200241026a200a2d00003a0000200220022f01103b0100410121090c010b200241206a200110fa0520022d00204101460d01410221092002410c6a41026a20022d00233a0000200241086a41026a2002412a6a2d00003a0000200241046a41026a200241316a2d00003a0000200241026a200241386a2d00003a0000200220022f00213b010c2002200241286a2f01003b010820022002412f6a2f00003b01042002200241366a2f01003b01002002412b6a2800002101200241326a280100210420022802242105200241c1006a2d000021062002413d6a2800002103200241396a28000021080b200020022f010c3b0001200041046a2005360000200041086a20022f01083b00002000410b6a20013600002000410f6a20022f01043b0000200041126a2004360000200041166a20022f01003b0000200041036a2002410c6a41026a2d00003a00002000410a6a200241086a41026a2d00003a0000200041116a200241046a41026a2d00003a0000200041186a200241026a2d00003a0000200041216a20063a00002000411d6a2003360000200041196a2008360000200020093a00000c010b200041043a00000b200241d0006a24000bc12005037f017e0c7f017e247f230041f0026b2202240002400240024002400240200128020422034108490d002001280200220429000021052001200341786a22063602042001200441086a360200200241a8026a410472210741002108417721090240034020062008460d01200420086a220a41086a2d0000210b2001200320096a3602042001200a41096a360200200720086a200b3a00002002200841016a220a3602a8022009417f6a2109200a2108200a4120470d000b200241206a41026a200241b5026a2d00003a00002002411c6a41026a200241bc026a2d00003a0000200220022f01ac023b0124200220022d00ae023a00262002200241b3026a2f00003b01202002200241ba026a2f01003b011c200241c8026a2802002107200241c4026a280200210c200241bd026a280000210d200241b6026a280100210e20022800af02210f200241186a41026a200241c3026a2d00003a00002002200241c1026a2f00003b01182003200a6b220841786a4104490d002004200a6a220941086a28000021102001200841746a36020420012009410c6a3602002002200110ad0120022802000d002002280204221120012802044184016e2208200820114b1bad4284017e2212422088a70d022012a72208417f4c0d020240024020080d00410421090c010b200810382209450d040b410021132002410036023020022009360228200220084184016e220836022c024020110d002009450d014100210a0c050b200241a8026a4104722104200241a8026a41196a2114200241a8026a41126a2115200241a8026a410b6a2116200241a8026a41356a2117200241a8026a412e6a2118200241a8026a41276a2119200241a8026a41206a211a02400340201341016a21132001280204210341002108417f2109034020032008220a460d022001280200220b2d000021082001200320096a3602042001200b41016a3602002004200a6a20083a00002002200a41016a22083602a8022009417f6a210920084120470d000b200241a0026a41026a221b201641026a221c2d00003a00002002419c026a41026a221d201541026a221e2d00003a0000200220042f01003b01a402200220162f00003b01a002200220152f00003b019c022002200441026a221f2d00003a00a60220022802c802212020022802c402212120022800bd02212220022801b602212320022800af02212420024198026a41026a2225201441026a22262d00003a0000200220142f00003b019802200320086b22094104490d01200b28000121272001200b41056a36020020012009417c6a36020420024180026a41026a2228201b2d00003a0000200241fc016a41026a2229201d2d00003a0000200241f8016a41026a222a20252d00003a0000200220022f01a4023b018402200220022d00a6023a008602200220022f01a0023b018002200220022f019c023b01fc01200220022f0198023b01f8012003200a6b417a6a2109200820036b41046a2106410021080340200620086a450d02200b20086a220a41056a2d00002103200120093602042001200a41066a360200200420086a20033a00002002200841016a220a3602a8022009417f6a2109200a2108200a41c000470d000b201b201c2d00003a0000200220042f01003b01a402200220162f00003b01a0022002201f2d00003a00a60220022902e402211220022802e002210620022800d902212b20022801d202212c20022800cb02212d20022802c402212e20022800bd02212f20022801b602213020022800af022131201d201e2d00003a0000202520262d00003a000020024194026a41026a2232201a41026a2d00003a000020024190026a41026a2233201941026a2d00003a00002002418c026a41026a2234201841026a2d00003a0000200220152f00003b019c02200220142f00003b0198022002201a2f00003b019402200220192f00003b019002200220182f00003b018c0220024188026a41026a2235201741026a2d00003a0000200220172f00003b0188022001280204210b41002108417f21090340200b2008460d022001280200220a2d000021032001200b20096a3602042001200a41016a360200200420086a20033a00002002200841016a220a3602a8022009417f6a2109200a2108200a4120470d000b200241c0016a41026a2208201c2d00003a0000200241bc016a41026a2209201e2d00003a0000200220042f01003b01c401200220162f00003b01c001200220152f00003b01bc012002201f2d00003a00c60120022802c802210a20022802c402210b20022800bd02210320022801b602211c20022800af02211e200241b8016a41026a221f20262d00003a0000200241f0016a41026a222620282d00003a0000200241ec016a41026a222820292d00003a0000200241e8016a41026a2229202a2d00003a0000200220142f00003b01b801200220022f0184023b01f401200220022d0086023a00f601200220022f0180023b01f001200220022f01fc013b01ec01200220022f01f8013b01e801200241e0016a41026a222a201b2d00003a0000200241dc016a41026a221b201d2d00003a0000200241d8016a41026a221d20252d00003a0000200241d4016a41026a222520322d00003a0000200220022d00a6023a00e601200220022f01a4023b01e401200220022f01a0023b01e001200220022f019c023b01dc01200220022f0198023b01d801200220022f0194023b01d401200241d0016a41026a223220332d00003a0000200220022f0190023b01d001200241cc016a41026a223320342d00003a0000200220022f018c023b01cc01200241c8016a41026a223420352d00003a0000200220022f0188023b01c801200220022d00f6013a00b601200220022f01f4013b01b401200241b0016a41026a223520262d00003a0000200220022f01f0013b01b001200241ac016a41026a222620282d00003a0000200220022f01ec013b01ac01200241a8016a41026a222820292d00003a0000200220022f01e8013b01a801200220022d00e6013a00a601200220022f01e4013b01a401200241a0016a41026a2229202a2d00003a0000200220022f01e0013b01a0012002419c016a41026a222a201b2d00003a0000200220022f01dc013b019c0120024198016a41026a221b201d2d00003a0000200220022f01d8013b01980120024194016a41026a221d20252d00003a0000200220022f01d4013b01940120024190016a41026a222520322d00003a0000200220022f01d0013b0190012002418c016a41026a223220332d00003a0000200220022f01cc013b018c0120024188016a41026a223320342d00003a0000200220022f01c8013b018801200220022d00c6013a008601200220022f01c4013b01840120024180016a41026a223420082d00003a0000200220022f01c0013b018001200241fc006a41026a220820092d00003a0000200220022f01bc013b017c200241f8006a41026a2209201f2d00003a0000200220022f01b8013b0178200220022d00b6013a0076200220022f01b4013b0174200241f0006a41026a221f20352d00003a0000200220022f01b0013b0170200241ec006a41026a223520262d00003a0000200220022f01ac013b016c200241e8006a41026a222620282d00003a0000200220022f01a8013b0168200220022d00a6013a0066200220022f01a4013b0164200241e0006a41026a222820292d00003a0000200220022f01a0013b0160200241dc006a41026a2229202a2d00003a0000200220022f019c013b015c200241d8006a41026a222a201b2d00003a0000200220022f0198013b0158200241d4006a41026a221b201d2d00003a0000200220022f0194013b0154200241d0006a41026a221d20252d00003a0000200220022f0190013b0150200241cc006a41026a222520322d00003a0000200220022f018c013b014c200241c8006a41026a223220332d00003a0000200220022f0188013b0148200220022d0086013a0046200220022f0184013b0144200241c0006a41026a223320342d00003a0000200220022f0180013b01402002413c6a41026a223420082d00003a0000200220022f017c3b013c200241386a41026a223620092d00003a0000200220022f01783b0138024020022802302209200228022c470d00200241286a200910f508200228023021090b200228022820094184016c6a22082027360200200820022f01743b0104200841066a20022d00763a0000200841076a20243600002008410b6a20022f01703b00002008410d6a201f2d00003a00002008410e6a2023360000200841126a20022f016c3b0000200841146a20352d00003a0000200841156a2022360000200841196a20022f01683b00002008411b6a20262d00003a0000200841206a20203600002008411c6a2021360000200841276a20313600002008412e6a2030360000200841356a202f360000200820022f01643b0124200841266a20022d00663a00002008412b6a20022f01603b00002008412d6a20282d00003a0000200841326a20022f015c3b0000200841346a20292d00003a0000200841396a20022f01583b00002008413b6a202a2d00003a00002008413c6a202e360000200841c3006a202d360000200841ca006a202c360000200841d1006a202b360000200841c2006a201b2d00003a0000200841c0006a20022f01543b0000200841c9006a201d2d00003a0000200841c7006a20022f01503b0000200841d0006a20252d00003a0000200841ce006a20022f014c3b0000200841d7006a20322d00003a0000200841d5006a20022f01483b0000200841dc006a2012370000200841d8006a2006360000200841e6006a20022d00463a0000200820022f01443b0164200841e7006a201e360000200841ed006a20332d00003a0000200841eb006a20022f01403b0000200841ee006a201c360000200841f4006a20342d00003a0000200841f2006a20022f013c3b0000200841f5006a2003360000200841fb006a20362d00003a0000200841f9006a20022f01383b000020084180016a200a360000200841fc006a200b3600002002200941016a220a36023020132011470d000b20022802282209450d01200228022c21080c050b200228022c2208450d0020084184016c450d00200228022810390b2000410036020c0c040b2000410036020c0c030b1034000b1030000b200241106a41026a220b200241206a41026a2d00003a00002002410c6a41026a22032002411c6a41026a2d00003a0000200241086a41026a2204200241186a41026a2d00003a0000200220022d00263a0016200220022f01243b0114200220022f01203b0110200220022f011c3b010c200220022f01183b0108200241a8026a200110af03024020022802a802450d00200041386a20022903a802370200200041c0006a200241b0026a280200360200200041146a200a360200200020083602102000200936020c20002010360208200041186a20022f01143b01002000411a6a20022d00163a00002000411b6a200f360000200020022f01103b001f200041216a200b2d00003a00002000200e360022200020022f010c3b0026200041286a20032d00003a00002000200d3600292000412f6a20042d00003a0000200020022f01083b002d200041346a2007360000200041306a200c360000200020053703000c010b2000410036020c2008450d0020084184016c450d00200910390b200241f0026a24000bca04030a7f017e017f230041e0016b22022400200241f0006a200110b003024002400240024020022802742203450d00200241fc006a28020021042002280278210520022802702106200241106a20024180016a41e00010c30a1a200241086a200110ad0120022802080d01200241f0006a2001200228020c10b40120022802702207450d012002280274210802400240024002400240200128020422094108490d00200241f0006a41086a280200210a2001280200220b290000210c2001200941786a220d3602042001200b41086a360200200d450d03200b2d0008210d2001200941776a3602042001200b41096a36020041002101200d0e020201030b200041023a0084010c030b410121010b20002004360214200020053602102000200336020c20002006360208200041186a200241106a41e00010c30a1a2000200a360280012000200836027c20002007360278200020013a0084012000200c3703000c050b200041023a0084010b2008450d02200841286c450d02200710390c020b200041023a0084010c020b200041023a0084010b02402004450d00200441246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012000415c6a22000d000b0b2005450d00200541246c450d00200310390b200241e0016a24000b9d14020b7f017e230041f00f6b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e06010203040506070b200041073a00000c120b200241b0086a200110e50220022802b0082205450d0820022802b408210320012802042204450d06200241b8086a2802002107200128020022062d0000210820012004417f6a22043602042001200641016a360200410021060240024020080e020100080b200241b0086a200110800220022d00b0084101460d0720024188016a200241c9086a29000037030020024180016a200241c1086a290000370300200241f8006a200241b9086a290000370300200220022900b10837037020012802042104410121060b200241c8006a41186a2208200241f0006a41186a290300370300200241c8006a41106a2209200241f0006a41106a290300370300200241c8006a41086a220a200241f0006a41086a29030037030020022002290370370348024020044104490d002001280200220b280000210c20012004417c6a3602042001200b41046a360200200020063a0001200041026a20022903483700002000410a6a200a290300370000200041126a20092903003700002000411a6a2008290300370000200041306a200c3602002000412c6a2007360100200041286a2003360100200041246a2005360100200041013a00000c120b200041073a00000c070b200241b0086a200110c40120022802b0082105200241f0006a200241b0086a41047241bc0710c30a1a20054125460d0941c00710382203450d0820032005360200200341046a200241f0006a41bc0710c30a1a200241086a200110ad01024020022802080d00200228020c2101200041023a0000200041086a2001360200200041046a20033602000c110b200041073a00002003109009200310390c100b200241186a200110ad0120022802180d09200228021c2104200241b0086a200110c40120022802b0082105200241f0006a200241b0086a41047241bc0710c30a1a20054125460d0a41c00710382203450d0720032005360200200341046a200241f0006a41bc0710c30a1a200241106a200110ad01024020022802100d0020022802142101200041033a00002000410c6a2001360200200041086a2003360200200041046a20043602000c100b200041073a00002003109009200310390c0f0b200241b0086a410472210a41002105417e2108034020062005460d0b200420056a220741016a2d000021092001200320086a3602042001200741026a360200200a20056a20093a00002002200541016a22073602b0082008417f6a21082007210520074120470d000b200241c8006a41026a200241bd086a2d00003a0000200241ec006a41026a200241c4086a2d00003a0000200220022f01b4083b0170200220022d00b6083a00722002200241bb086a2f00003b01482002200241c2086a2f01003b016c200241d0086a2802002105200241cc086a2802002103200241c5086a2800002104200241be086a280100210620022800b7082108200241e8006a41026a200241cb086a2d00003a00002002200241c9086a2f00003b0168200241206a200110ad01024002400240024020022802200d0020012802042207450d032002280224210b200128020022092d0000210a20012007417f6a3602042001200941016a36020041002101200a0e020201030b200041073a00000c110b410121010b200020022f01703b0001200041036a20022d00723a0000200041046a2008360000200041086a20022f01483b00002000410b6a20063600002000410f6a20022f016c3b0000200041126a2004360000200041166a20022f01683b00002000410a6a200241c8006a41026a2d00003a0000200041116a200241ec006a41026a2d00003a0000200041186a200241e8006a41026a2d00003a00002000411d6a2005360000200041196a2003360000200041246a200b360200200041216a20013a0000200041043a00000c0f0b200041073a00000c0e0b200241b0086a410472210a41002105417e2108034020062005460d0b200420056a220741016a2d000021092001200320086a3602042001200741026a360200200a20056a20093a00002002200541016a22073602b0082008417f6a21082007210520074120470d000b200241c8006a41026a200241bd086a2d00003a0000200241ec006a41026a200241c4086a2d00003a0000200220022f01b4083b0170200220022d00b6083a00722002200241bb086a2f00003b01482002200241c2086a2f01003b016c200241d0086a2802002105200241cc086a2802002103200241c5086a2800002104200241be086a280100210620022800b7082108200241e8006a41026a200241cb086a2d00003a00002002200241c9086a2f00003b0168200241c0006a200110ad0120022802400d0b20022802442107200241306a200110b0012002290330a70d0c2002290338210d200241286a200110ad01024020022802280d00200228022c2101200020022f01703b0001200041036a20022d00723a0000200041046a2008360000200041086a20022f01483b00002000410b6a20063600002000410f6a20022f016c3b0000200041126a2004360000200041166a20022f01683b00002000410a6a200241c8006a41026a2d00003a0000200041116a200241ec006a41026a2d00003a0000200041186a200241e8006a41026a2d00003a00002000411d6a2005360000200041196a2003360000200041306a200d370300200041286a2001360200200041246a2007360200200041053a00000c0e0b200041073a00000c0d0b200241b0086a410472210a41002105417e21080240034020062005460d01200420056a220741016a2d000021092001200320086a3602042001200741026a360200200a20056a20093a00002002200541016a22073602b0082008417f6a21082007210520074120470d000b200041086a200241b0086a410b6a2f00003b00002000410a6a200241bd086a2d00003a00002000410f6a200241b0086a41126a2f01003b0000200041116a200241c4086a2d00003a0000200041186a200241cb086a2d00003a0000200041166a200241b0086a41196a2f00003b0000200220022f01b4083b0170200220022d00b6083a0072200241be086a2801002101200241c5086a2800002105200241cc086a290200210d20022800b7082103200041036a20022d00723a0000200020022f01703b0001200041196a200d370000200041126a20053600002000410b6a2001360000200041046a2003360000200041063a00000c0d0b200041073a00000c0c0b200041073a00000c0b0b200041073a00000b200341ffffff3f71450d09200510390c090b200041073a00000c080b1030000b200041073a00000c060b200041073a00000c050b200041073a00000c040b200041073a00000c030b200041073a00000c020b200041073a00000c010b200041073a00000b200241f00f6a24000b9e0401057f230041a00f6b2202240002400240200128020422030d00200041043b01000c010b200128020022042d0000210520012003417f6a22063602042001200441016a3602000240024002400240024002400240024020050e03000102030b2002200110ad0102402002280200450d00200241003602200c070b200241206a2001200228020410c3012002280220450d06200241ea076a200241206a41086a280200360100200220022903203701e207200041013b0100200020022901e007370102200041086a200241e6076a2901003701000c070b02400240024020064102490d0020042f0001210520012003417d6a3602042001200441036a360200200241e0076a200110c40120022802e0072101200241206a200241e0076a41047241bc0710c30a1a20014125460d0241c007103822030d011030000b200041043b01000c080b20032001360200200341046a200241206a41bc0710c30a1a200041046a2003360200200020053b0102200041023b01000c070b200041043b01000c060b200241086a200110ad012002280208450d01200241003602200c020b200041043b01000c040b200241206a2001200228020c10c30120022802200d010b200041043b01000c020b200241ea076a200241206a41086a280200360100200220022903203701e207200041033b0100200020022901e007370102200041086a200241e6076a2901003701000c010b200041043b01000b200241a00f6a24000bcb0101047f02402001280200220128020422020d00200041023602000f0b200128020022032d0000210420012002417f6a22053602042001200341016a36020002400240024020040e020102000b200041023602000f0b200041003602000f0b0240024020054104490d002003280001210520012002417b6a22043602042001200341056a360200200441034b0d010b200041023602000f0b2000200536020420004101360200200328000521042001200241776a3602042001200341096a360200200041086a20043602000bb40201067f230041106b220224000240024002402001280200220328020422044104490d0020032802002205280000210620032004417c6a3602042003200541046a3602002002200110bc0320022802002203450d01200241086a28020021052002280204210402402001280200220128020422074104490d002000200436020820002003360204200020063602002000410c6a200536020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c030b2000410036020402402005450d002005410c6c21002003210103400240200141046a280200450d00200128020010390b2001410c6a2101200041746a22000d000b0b2004450d022004410c6c450d02200310390c020b200041003602040c010b200041003602040b200241106a24000b8d0b01097f230041d0006b22022400024002402001280200220328020422040d00200041043a00000c010b200328020022052d0000210620032004417f6a22073602042003200541016a36020002400240024020060e020102000b200041043a00000c020b200041033a00000c010b02402007450d0020052d0001210620032004417e6a22083602042003200541026a360200024002400240024020060e03000102040b200241206a410472210941002101417d2106034020082001460d04200520016a220741026a2d0000210a2003200420066a3602042003200741036a360200200920016a200a3a00002002200141016a22073602202006417f6a21062007210120074120470d000b2002411c6a41026a22072002412d6a2d00003a00002002200241396a220828000036024820022002413c6a28000036004b200220022f01243b0144200220022d00263a004620022002412b6a2f00003b011c2002412e6a2801002103200241356a2800002101200241c0006a280200210420022800272105200228004b2106200241186a41026a220a200241346a2d00003a00002002200241326a2f01003b0118200241146a41026a22092002413b6a2d00003a0000200220082f00003b01142002410c6a41026a20022d00463a0000200220022f01443b010c200241086a41026a20072d00003a0000200220022f011c3b0108200241046a41026a200a2d00003a0000200220022f01183b0104200241026a20092d00003a0000200220022f01143b0100410021070c020b200241206a410472210941002101417d2106034020082001460d03200520016a220741026a2d0000210a2003200420066a3602042003200741036a360200200920016a200a3a00002002200141016a22073602202006417f6a21062007210120074120470d000b200241c0006a2802002104200241356a28000021012002412e6a2801002103200241396a280000210620022800272105200241ce006a2002413f6a2d00003a000020022006360248200241c4006a41026a220720022d004a3a000020022002413d6a2f00003b014c200220022f01243b011c200220022d00263a001e200220063b0144200228004b2106200241186a41026a22082002412d6a2d00003a000020022002412b6a2f00003b0118200241146a41026a220a200241346a2d00003a00002002200241326a2f01003b0114200241106a41026a220920072d00003a0000200220022f01443b01102002410c6a41026a20022d001e3a0000200220022f011c3b010c200241086a41026a20082d00003a0000200220022f01183b0108200241046a41026a200a2d00003a0000200220022f01143b0104200241026a20092d00003a0000200220022f01103b0100410121070c010b200241206a200110f90520022d00204101460d01410221072002410c6a41026a20022d00233a0000200241086a41026a2002412a6a2d00003a0000200241046a41026a200241316a2d00003a0000200241026a200241386a2d00003a0000200220022f00213b010c2002200241286a2f01003b010820022002412f6a2f00003b01042002200241366a2f01003b01002002412b6a2800002103200241326a280100210120022802242105200241c1006a2d000021082002413d6a2800002104200241396a28000021060b200020022f010c3b0001200041046a2005360000200041086a20022f01083b00002000410b6a20033600002000410f6a20022f01043b0000200041126a2001360000200041166a20022f01003b0000200041036a2002410c6a41026a2d00003a00002000410a6a200241086a41026a2d00003a0000200041116a200241046a41026a2d00003a0000200041186a200241026a2d00003a0000200041216a20083a00002000411d6a2004360000200041196a2006360000200020073a00000c010b200041043a00000b200241d0006a24000bc71b05047f017e0b7f017e1b7f23004180046b220224000240024002402001280200220328020422044108490d002003280200220529000021062003200441786a3602042003200541086a360200200241b0036a410472210720012802002204280204210841002103417f2105034020082003460d02200428020022092d0000210a2004200820056a3602042004200941016a360200200720036a200a3a00002002200341016a22093602b0032005417f6a21052009210320094120470d000b200241286a41026a200241bd036a2d00003a0000200241246a41026a200241c4036a2d00003a0000200220022f01b4033b012c200220022d00b6033a002e2002200241bb036a2f00003b01282002200241c2036a2f01003b0124200241d0036a280200210b200241cc036a280200210c200241c5036a280000210d200241be036a280100210e20022800b703210f200241206a41026a200241cb036a2d00003a00002002200241c9036a2f00003b01202001280200220328020422044104490d0120032802002205280000211020032004417c6a3602042003200541046a360200200241086a200110bb0120022802080d0102400240200228020c221120012802002802044184016e2203200320114b1bad4284017e2212422088a70d002012a72203417f4c0d000240024020030d00410421050c010b200310382205450d020b2001200128020441016a22043602042002410036023820022005360230200220034184016e2203360234024002400240200420012802084b0d002011450d01200241b0036a410472210720012802002103200241b0036a41196a2113200241b0036a41126a2114200241b0036a410b6a2115200241b0036a41017221164100211702400340201741016a211720032802042108417f210541002104034020082004460d022003280200220a2d000021092003200820056a3602042003200a41016a360200200720046a20093a00002002200441016a22093602b0032005417f6a21052009210420094120470d000b200241fc036a41026a2204201541026a22182d00003a0000200241f8036a41026a2205201441026a22192d00003a0000200220072f01003b01f002200220152f00003b01fc03200220142f00003b01f8032002200741026a221a2d00003a00f20220022802d003211b20022802cc03211c20022800c503211d20022801be03211e20022800b703211f200241f4036a41026a2220201341026a22212d00003a0000200220132f00003b01f403200820096b22094104490d01200a28000121222003200a41056a36020020032009417c6a360204200241e8026a41026a222320042d00003a0000200241e4026a41026a222420052d00003a0000200241e0026a41026a222520202d00003a0000200220022f01f0023b01ec02200220022d00f2023a00ee02200220022f01fc033b01e802200220022f01f8033b01e402200220022f01f4033b01e002200241b0036a200110980420022d00b0034101460d01200241f0026a41386a2220201641386a290000370300200241f0026a41306a2226201641306a290000370300200241f0026a41286a2227201641286a290000370300200241f0026a41206a2228201641206a290000370300200241f0026a41186a2229201641186a290000370300200241f0026a41106a222a201641106a290000370300200241f0026a41086a222b201641086a290000370300200220162900003703f00220012802002203280204210841002104417f2105034020082004460d02200328020022092d0000210a2003200820056a3602042003200941016a360200200720046a200a3a00002002200441016a22093602b0032005417f6a21052009210420094120470d000b20024188026a41026a220420182d00003a000020024184026a41026a220520192d00003a0000200220072f01003b018c02200220152f00003b018802200220142f00003b0184022002201a2d00003a008e0220022802d003210820022802cc03210a20022800c503211820022801be03211920022800b703211a20024180026a41026a220920212d00003a0000200241d8026a41026a222120232d00003a0000200241d4026a41026a222320242d00003a0000200241d0026a41026a222420252d00003a0000200220132f00003b018002200220022f01ec023b01dc02200220022d00ee023a00de02200220022f01e8023b01d802200220022f01e4023b01d402200220022f01e0023b01d00220024190026a41386a2225202029030037030020024190026a41306a2220202629030037030020024190026a41286a2226202729030037030020024190026a41206a2227202829030037030020024190026a41186a2228202929030037030020024190026a41106a2229202a29030037030020024190026a41086a222a202b290300370300200220022903f00237039002200220022d00de023a00fe01200220022f01dc023b01fc01200241f8016a41026a222b20212d00003a0000200220022f01d8023b01f801200241f4016a41026a222120232d00003a0000200220022f01d4023b01f401200241f0016a41026a222320242d00003a0000200220022f01d0023b01f001200241b0016a41386a22242025290300370300200241b0016a41306a22252020290300370300200241b0016a41286a22202026290300370300200241b0016a41206a22262027290300370300200241b0016a41186a22272028290300370300200241b0016a41106a22282029290300370300200241b0016a41086a2229202a29030037030020022002290390023703b001200220022d008e023a00ae01200220022f018c023b01ac01200241a8016a41026a222a20042d00003a0000200220022f0188023b01a801200241a4016a41026a220420052d00003a0000200220022f0184023b01a401200241a0016a41026a220520092d00003a0000200220022f0180023b01a001200220022d00fe013a009e01200220022f01fc013b019c0120024198016a41026a222c202b2d00003a0000200220022f01f8013b01980120024194016a41026a222b20212d00003a0000200220022f01f4013b01940120024190016a41026a222120232d00003a0000200220022f01f0013b019001200241d0006a41386a22232024290300370300200241d0006a41306a22242025290300370300200241d0006a41286a22252020290300370300200241d0006a41206a22202026290300370300200241d0006a41186a22262027290300370300200241d0006a41106a22272028290300370300200241d0006a41086a22282029290300370300200220022903b001370350200220022d00ae013a004e200220022f01ac013b014c200241c8006a41026a2229202a2d00003a0000200220022f01a8013b0148200241c4006a41026a222a20042d00003a0000200220022f01a4013b0144200241c0006a41026a222d20052d00003a0000200220022f01a0013b01400240200228023822092002280234470d00200241306a200910f508200228023821090b2002280230220520094184016c6a22042022360200200420022f019c013b0104200441066a20022d009e013a0000200441076a201f3600002004410b6a20022f0198013b00002004410d6a202c2d00003a00002004410e6a201e360000200441126a20022f0194013b0000200441146a202b2d00003a0000200441156a201d360000200441196a20022f0190013b00002004411b6a20212d00003a0000200441206a201b3600002004411c6a201c360000200420022903503702242004412c6a2028290300370200200441346a20272903003702002004413c6a2026290300370200200441c4006a2020290300370200200441cc006a2025290300370200200441d4006a2024290300370200200441dc006a2023290300370200200441e7006a201a360000200441ee006a2019360000200441f5006a2018360000200441e6006a20022d004e3a0000200420022f014c3b0164200441ed006a20292d00003a0000200441eb006a20022f01483b0000200441f4006a202a2d00003a0000200441f2006a20022f01443b0000200441fb006a202d2d00003a0000200441f9006a20022f01403b000020044180016a2008360000200441fc006a200a3600002002200941016a220436023820172011470d000b20012001280204417f6a360204200228023421030c030b200228023421030b2003450d0520034184016c450d05200228023010390c050b20012004417f6a3602042005450d04410021040b200241186a41026a2209200241286a41026a2d00003a0000200241146a41026a2208200241246a41026a2d00003a0000200241106a41026a220a200241206a41026a2d00003a0000200220022d002e3a001e200220022f012c3b011c200220022f01283b0118200220022f01243b0114200220022f01203b0110200241b0036a200110b803024020022802b003450d00200041386a20022903b003370200200041c0006a200241b8036a280200360200200041146a2004360200200020033602102000200536020c20002010360208200041186a20022f011c3b01002000411a6a20022d001e3a00002000411b6a200f360000200020022f01183b001f200041216a20092d00003a00002000200e360022200020022f01143b0026200041286a20082d00003a00002000200d3600292000412f6a200a2d00003a0000200020022f01103b002d200041346a200b360000200041306a200c360000200020063703000c050b2000410036020c2003450d0420034184016c450d04200510390c040b1034000b1030000b2000410036020c0c010b2000410036020c0b20024180046a24000bb80b03087f017e117f23004190026b22022400200241f0006a200110b903024002400240024002400240024002400240024020022802742203450d00200241fc006a28020021042002280278210520022802702106200241106a20024180016a41e00010c30a1a200241086a200110bb01024020022802080d00200228020c22072001280200220828020441286e2209200920074b1bad42287e220a422088a70d09200aa72209417f4c0d090240024020090d004108210b0c010b20091038220b450d0b0b20012001280204220c41016a220d3602044100210e200241003602e8012002200b3602e0012002200941286e22093602e4010240200d20012802084b0d00024002402007450d00200241f0006a410472210f20024189016a211020024182016a2111200241fb006a21124100210e410021130340201341016a211320082802042114417f210d41002109034020142009460d03200828020022152d0000211620082014200d6a3602042008201541016a360200200f20096a20163a00002002200941016a2215360270200d417f6a210d2015210920154120470d000b20024188026a41026a2209201241026a2d00003a000020024184026a41026a220d201141026a2d00003a00002002200f2f01003b018c02200220122f00003b018802200220112f00003b0184022002200f41026a2d00003a008e022002280290012115200228028c0121142002280085012116200228017e21172002280077211820024180026a41026a2219201041026a2d00003a0000200220102f00003b01800220012802002208280204221a4108490d022008280200221b290000210a2008201a41786a3602042008201b41086a360200200241f4016a41026a221a20092d00003a0000200241f0016a41026a221b200d2d00003a0000200241ec016a41026a220d20192d00003a0000200220022f018c023b01f801200220022d008e023a00fa01200220022f0188023b01f401200220022f0184023b01f001200220022f0180023b01ec010240200e20022802e401470d00200241e0016a200e410110b50120022802e001210b20022802e801210e0b200b200e41286c6a220920022f01f8013b0100200941026a20022d00fa013a0000200941096a201a2d00003a0000200920022f01f4013b0007200941106a201b2d00003a0000200920022f01f0013b000e200920183600032009201736000a20092016360011200941176a200d2d00003a0000200920022f01ec013b00152009200a3703202009201536001c200920143600182002200e41016a220e3602e80120132007470d000b20022802e401210920022802e001210b0b2001200c360204200b450d0220012802002208280204220d4108490d0420082802002215290000210a2008200d41786a3602042008201541086a36020020012802002208280204220d450d07200828020022152d000021142008200d417f6a3602042008201541016a3602004100210820140e020605070b20022802e40121090b2009450d00200941286c450d0020022802e00110390b200041023a0084010c060b200041023a0084010c060b200041023a0084010c030b410121080b20002004360214200020053602102000200336020c20002006360208200041186a200241106a41e00010c30a1a2000200e360280012000200936027c2000200b360278200020083a0084012000200a3703000c030b200041023a0084010b2009450d00200941286c450d00200b10390b02402004450d00200441246c21082003210903400240024002400240024020092d00000e050400010204030b2009410c6a280200450d03200941086a28020010390c030b2009410c6a280200450d02200941086a28020010390c020b2009410c6a280200450d01200941086a28020010390c010b200941086a280200450d00200941046a28020010390b200941246a21092008415c6a22080d000b0b2005450d00200541246c450d00200310390b20024190026a24000f0b1034000b1030000bf71702117f017e230041e00f6b22022400024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e06010203040506100b200041073a00000c100b200241a0086a200110b20320022802a0082207450d0720022802a4082108200128020022032802042204450d05200241a8086a2802002109200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e020100070b200241a0086a410472210a20012802002204280204210b41002103417f21050340200b2003460d07200428020022062d0000210c2004200b20056a3602042004200641016a360200200a20036a200c3a00002002200341016a22063602a0082005417f6a21052006210320064120470d000b200241e0006a41026a200241ad086a2d00003a0000200241dc006a41026a200241b4086a2d00003a0000200220022f01a4083b0164200220022d00a6083a00662002200241ab086a2f00003b01602002200241b2086a2f01003b015c200241ae086a2801002105200241b5086a280000210b200241bc086a280200210c200241c0086a280200210a20022800a7082104200241d8006a41026a200241bb086a2d00003a00002002200241b9086a2f00003b0158410121030b200241d4006a41026a220d20022d00663a0000200241d0006a41026a220e200241e0006a41026a2d00003a0000200241cc006a41026a220f200241dc006a41026a2d00003a0000200241c8006a41026a2210200241d8006a41026a2d00003a0000200220022f01643b0154200220022f01603b0150200220022f015c3b014c200220022f01583b014802402001280200220628020422014104490d0020062802002211280000211220062001417c6a3602042006201141046a360200200020033a0001200041026a20022f01543b0000200041046a200d2d00003a0000200041056a2004360000200041096a20022f01503b00002000410b6a200e2d00003a00002000410c6a2005360000200041106a20022f014c3b0000200041126a200f2d00003a0000200041136a200b360000200041176a20022f01483b0000200041196a20102d00003a00002000411e6a200a3600002000411a6a200c360000200041306a20123602002000412c6a2009360100200041286a2008360100200041246a2007360100200041013a00000c100b200041073a00000c060b2001200128020441016a2203360204200320012802084b0d08200241a0086a200110cb0120022802a0082103200241e4006a200241a0086a41047241bc0710c30a1a20034125460d0841c00710382204450d0720042003360200200441046a200241e4006a41bc0710c30a1a20012001280204417f6a360204200241086a200110bb01024020022802080d00200228020c2103200041023a0000200041086a2003360200200041046a20043602000c0f0b200041073a00002004109009200410390c0e0b200241186a200110bb0120022802180d08200228021c21052001200128020441016a2203360204200320012802084b0d09200241a0086a200110cb0120022802a0082103200241e4006a200241a0086a41047241bc0710c30a1a20034125460d0941c00710382204450d0620042003360200200441046a200241e4006a41bc0710c30a1a20012001280204417f6a360204200241106a200110bb01024020022802100d0020022802142103200041033a00002000410c6a2003360200200041086a2004360200200041046a20053602000c0e0b200041073a00002004109009200410390c0d0b200241a0086a410472210a20012802002204280204210b41002103417f210503400240200b2003470d00200041073a00000c0e0b200428020022062d0000210c2004200b20056a3602042004200641016a360200200a20036a200c3a00002002200341016a22063602a0082005417f6a21052006210320064120470d000b200241e0006a41026a200241ad086a2d00003a0000200241dc006a41026a200241b4086a2d00003a0000200220022f01a4083b0164200220022d00a6083a00662002200241ab086a2f00003b01602002200241b2086a2f01003b015c200241c0086a2802002103200241bc086a2802002104200241b5086a2800002105200241ae086a280100210620022800a708210b200241d8006a41026a200241bb086a2d00003a00002002200241b9086a2f00003b0158200241206a200110bb01024002400240024020022802200d0020012802002201280204220c450d03200228022421082001280200220a2d000021072001200c417f6a3602042001200a41016a3602004100210120070e020201030b200041073a00000c0f0b410121010b200020022f01643b0001200041036a20022d00663a0000200041046a200b360000200041086a20022f01603b00002000410b6a20063600002000410f6a20022f015c3b0000200041126a2005360000200041166a20022f01583b00002000410a6a200241e0006a41026a2d00003a0000200041116a200241dc006a41026a2d00003a0000200041186a200241d8006a41026a2d00003a00002000411d6a2003360000200041196a2004360000200041246a2008360200200041216a20013a0000200041043a00000c0d0b200041073a00000c0c0b200241a0086a410472210a20012802002204280204210b41002103417f210503400240200b2003470d00200041073a00000c0d0b200428020022062d0000210c2004200b20056a3602042004200641016a360200200a20036a200c3a00002002200341016a22063602a0082005417f6a21052006210320064120470d000b200241e0006a41026a200241ad086a2d00003a0000200241dc006a41026a200241b4086a2d00003a0000200220022f01a4083b0164200220022d00a6083a00662002200241ab086a2f00003b01602002200241b2086a2f01003b015c200241c0086a2802002103200241bc086a2802002104200241b5086a2800002105200241ae086a280100210620022800a708210b200241d8006a41026a200241bb086a2d00003a00002002200241b9086a2f00003b0158200241c0006a200110bb0120022802400d082002280244210c200241306a200110bc012002290330a70d0920022903382113200241286a200110bb01024020022802280d00200228022c2101200020022f01643b0001200041036a20022d00663a0000200041046a200b360000200041086a20022f01603b00002000410b6a20063600002000410f6a20022f015c3b0000200041126a2005360000200041166a20022f01583b00002000410a6a200241e0006a41026a2d00003a0000200041116a200241dc006a41026a2d00003a0000200041186a200241d8006a41026a2d00003a00002000411d6a2003360000200041196a2004360000200041306a2013370300200041286a2001360200200041246a200c360200200041053a00000c0c0b200041073a00000c0b0b200241a0086a410472210c20012802002204280204210141002103417f21050340024020012003470d00200041073a00000c0c0b200428020022062d0000210b2004200120056a3602042004200641016a360200200c20036a200b3a00002002200341016a22063602a0082005417f6a21052006210320064120470d000b200041086a200241a0086a410b6a2f00003b00002000410a6a200241ad086a2d00003a00002000410f6a200241a0086a41126a2f01003b0000200041116a200241b4086a2d00003a0000200041186a200241bb086a2d00003a0000200041166a200241a0086a41196a2f00003b0000200220022f01a4083b0164200220022d00a6083a0066200241ae086a2801002103200241b5086a2800002104200241bc086a290200211320022800a7082105200041036a20022d00663a0000200020022f01643b0001200041196a2013370000200041126a20043600002000410b6a2003360000200041046a2005360000200041063a00000c0a0b200041073a00000b200841ffffff3f71450d08200710390c080b200041073a00000c070b1030000b200041073a00000c050b200041073a00000c040b200041073a00000c030b200041073a00000c020b200041073a00000c010b200041073a00000b200241e00f6a24000bd60401057f230041a00f6b22022400024002402001280200220328020422040d00200041043b01000c010b200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024020060e03000102030b2002200110bb0102402002280200450d00200241003602200c070b200241206a2001200228020410ca012002280220450d06200241ea076a200241206a41086a280200360100200220022903203701e207200041013b0100200020022901e007370102200041086a200241e6076a2901003701000c070b0240024002402001280200220328020422044102490d00200328020022052f0000210620032004417e6a3602042003200541026a3602002001200128020441016a2203360204200320012802084b0d02200241e0076a200110cb0120022802e0072103200241206a200241e0076a41047241bc0710c30a1a20034125460d0241c007103822040d011030000b200041043b01000c080b20042003360200200441046a200241206a41bc0710c30a1a200041046a2004360200200020063b0102200041023b010020012001280204417f6a3602040c070b200041043b01000c060b200241086a200110bb012002280208450d01200241003602200c020b200041043b01000c040b200241206a2001200228020c10ca0120022802200d010b200041043b01000c020b200241ea076a200241206a41086a280200360100200220022903203701e207200041033b0100200020022901e007370102200041086a200241e6076a2901003701000c010b200041043b01000b200241a00f6a24000bce0201047f230041d0006b220124000240410410382202450d00200241edde91e3063600002001200236020020014284808080c00037020420014104410810810120012802002202200128020822036a42f0f2bdc1b7acdbb1e800370000200128020421042001200341086a36024c20012002360248200141206a200141c8006a10fe0702402004450d00200210390b0240024020012d00204101470d00200141186a4200370300200141106a4200370300200141086a4200370300200142003703000c010b200141186a200141396a290000370300200141106a200141316a290000370300200141086a200141296a290000370300200120012900213703000b20002001290300370001200041013a0000200041196a200141186a290300370000200041116a200141106a290300370000200041096a200141086a290300370000200141d0006a24000f0b1030000bac0301077f230041c0006b22022400200241106a41047221032001280200210420012802042105410021060340200241003a0038200241386a20042005410047220710c30a1a200641016a2108024020050d00200241003a00380b2001200520076b22053602042001200420076a2204360200200320066a20022d00383a0000200220083602102008210620084120470d000b2002200241106a41196a220528000036023820022002412c6a28000036003b200220022f01143b010c200220022d00163a000e2002411e6a2801002108200241256a2800002104200241306a280200210620022800172107200228003b21012000410a6a2002411d6a2d00003a0000200041086a200241106a410b6a2f00003b00002000410f6a200241106a41126a2f01003b0000200041116a200241246a2d00003a0000200041166a20052f00003b0000200041186a2002412b6a2d00003a00002000411d6a2006360000200041196a2001360000200041126a20043600002000410b6a2008360000200041046a2007360000200041036a20022d000e3a0000200020022f010c3b0001200041003a0000200241c0006a24000b130020004107360204200041c0a8c4003602000bdd8a01050d7f017e037f027e017f230041f0026b22002400200041033602ec01200041a680c4003602e80120004103360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41f4b0c400ad4280808080c00d84370200200041d0026a41eab0c400ad4280808080a00184370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a0133702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41a680c400410310f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b10810820004103360258200041043602ec01200041a280c4003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a418fb0c400ad4280808080b00b84370200200041d0026a41fcafc400ad4280808080b00284370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a00e3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41a280c400410410f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000411036027c2000419280c4003602782000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041f8006a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041a8026a41106a4202370300200041dc026a41edb3c300ad4280808080800a84370200200041d0026a41c2b3c300ad4280808080b00584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080e0073702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041e8016a419280c400411010f20120004188026a41c3b1c300411410f201200041a8026a41086a2201200041e8016a41086a290000370300200041a8026a41106a200029008802370300200041c0026a20004188026a41086a290000370300200020002900e8013703a802200041a8026a20002f015820002d005a20002d005b108108200041053602ec012000418d80c4003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210241002802a0fe4a210341002802acfe4a2104200041b8026a4202370300200041dc026a41f1c7c000ad4280808080b00884370200200041d0026a41d3c7c000ad4280808080e00384370300200041c8026a420237030020014116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080e00e3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200341f4ddca00200441024622011b200041a8026a200241b0a7c00020011b2802101103000b20004188026a418d80c400410510f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000418080a410360258200041093602ec012000418480c4003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41aadbc800ad4280808080f00884370200200041d0026a4180dbc800ad4280808080a00584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080d0123702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a418480c400410910f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000418080a410360258200041083602ec01200041fcffc3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41b8efc500ad4280808080e00884370200200041d0026a41d3afc400ad4280808080900584370300200041c8026a4202370300200041a8026a41086a4116360200200041c4026a20004188026a36020020004190b0c9003602b4022000428180808080083702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41fcffc300410810f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041093602ec01200041a1ddc4003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a4186afc400ad4280808080d00984370200200041d0026a41deaec400ad4280808080800584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080e0143702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41a1ddc400410910f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000410b36027c200041f1ffc3003602782000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041f8006a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41f4b2c300ad4280808080e00984370200200041d0026a41cbb2c300ad4280808080900584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c0073702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041e8016a41f1ffc300410b10f20120004188026a41c3b1c300411410f201200041a8026a41086a2201200041e8016a41086a2203290000370300200041a8026a41106a2202200029008802370300200041c0026a220420004188026a41086a2205290000370300200020002900e8013703a802200041a8026a20002f015820002d005a20002d005b1081082000410436027c200041e0edc6003602782000418080a4103602d801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8016a360290022000200041f8006a3602880241002802a4fe4a210641002802a0fe4a210741002802acfe4a210820024202370300200041dc026a41ecd5c600ad4280808080e00884370200200041d0026a41cbd5c600ad4280808080900484370300200041c8026a420237030020014116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c0313702e402200041003602d802200041a0b0c9003602ac02200041033602a802200741f4ddca00200841024622081b200041a8026a200641b0a7c00020081b2802101103000b200041e8016a41e0edc600410410f20120004188026a41c3b1c300411410f20120012003290000370300200220002900880237030020042005290000370300200020002900e8013703a802200041a8026a20002f01d80120002d00da0120002d00db01108108200041a4dcc5003602782000410336027c2000418080a4103602d801200041d8006a41106a2105024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8016a360290022000200041f8006a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41ebb2c400ad4280808080d00884370200200041d0026a41cbb2c400ad4280808080800484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080e0173702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041e8016a41a4dcc500410310f20120004188026a41c3b1c300411410f2012005200029008802370000200541086a220320004188026a41086a2204290000370000200041a8026a41086a2201200041e8016a41086a2206290000370300200041a8026a41106a2202200041d8006a41106a2207290300370300200041a8026a41186a2208200041d8006a41186a2209290300370300200020002900e8013703a802200041a8026a20002f01d80120002d00da0120002d00db011081082000410336027c200041eeffc3003602782000418080a4103602d801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8016a360290022000200041f8006a3602880241002802a4fe4a210a41002802a0fe4a210b41002802acfe4a210c20024202370300200041dc026a41e19bc100ad4280808080d00884370200200041d0026a41c19bc100ad4280808080800484370300200041c8026a420237030020014116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080b00b3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200b41f4ddca00200c410246220c1b200041a8026a200a41b0a7c000200c1b2802101103000b200041e8016a41eeffc300410310f20120004188026a41c3b1c300411410f201200520002900880237000020032004290000370000200120062900003703002002200729030037030020082009290300370300200020002900e8013703a802200041a8026a20002f01d80120002d00da0120002d00db011081082000410b36027c200041a98aca003602782000418080a4103602d801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8016a360290022000200041f8006a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a4189b2c900ad4280808080d00984370200200041d0026a41e1b1c900ad4280808080800584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c00e3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041e8016a41a98aca00410b10f20120004188026a41c3b1c300411410f2012005200029008802370000200541086a20004188026a41086a290000370000200041a8026a41086a2201200041e8016a41086a290000370300200041a8026a41106a2202200041d8006a41106a290300370300200041a8026a41186a200041d8006a41186a290300370300200020002900e8013703a802200041a8026a20002f01d80120002d00da0120002d00db01108108200041053602ec01200041f4eec6003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210341002802a0fe4a210441002802acfe4a210620024202370300200041dc026a41fad3c600ad4280808080f00884370200200041d0026a41d8d3c600ad4280808080a00484370300200041c8026a420237030020014116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080902e3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200441f4ddca00200641024622011b200041a8026a200341b0a7c00020011b2802101103000b20004188026a41f4eec600410510f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041093602ec01200041e5ffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41a9f3c500ad4280808080b00984370200200041d0026a41abf5c500ad4280808080e00484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080d0193702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41e5ffc300410910f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000410d3602ec01200041d8ffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41d89dc100ad4280808080800a84370200200041d0026a41ad9dc100ad4280808080b00584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a0093702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41d8ffc300410d10f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041093602ec01200041cfffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a4192c8c200ad4280808080b00984370200200041d0026a41ecc7c200ad4280808080e00484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c0193702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41cfffc300410910f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041063602ec01200041c9ffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41a9a1c800ad4280808080800984370200200041d0026a4186a1c800ad4280808080b00484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a0073702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41c9ffc300410610f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041173602ec01200041b2ffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41e0b0c900ad4280808080f00984370200200041d0026a41b6b0c900ad4280808080a00584370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b4022000428180808080223702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41b2ffc300411710f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041103602ec01200041a2ffc3003602e8012000418080a410360258024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041a8026a41106a4202370300200041dc026a4183b2c400ad4280808080800984370200200041d0026a41e0b1c400ad4280808080b00484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080d0053702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41a2ffc300411010f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b10810820004103360258200041123602ec0120004190ffc3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41d7f7c500ad4280808080a00d84370200200041d0026a41b5f7c500ad4280808080a00484370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a0043702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a4190ffc300411210f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b10810820004103360258200041083602ec0120004198f9c5003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41d5f6c500ad4280808080800c84370200200041d0026a41bdf6c500ad4280808080800384370300200041c8026a4202370300200041a8026a41086a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080b01d3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a4198f9c500410810f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041073602ec0120004189ffc3003602e80141002802a8fe4a210120004103360258024020014103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41dff5c500ad4280808080e00b84370200200041d0026a41d1f5c500ad4280808080e00184370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080801b3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a4189ffc300410710f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041073602ec012000418cf9c8003602e80141002802a8fe4a210120004103360258024020014103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41dca0c200ad4280808080e00b84370200200041d0026a41cea0c200ad4280808080e00184370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c03f3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a418cf9c800410710f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000410a3602ec01200041fffec3003602e80141002802a8fe4a210120004103360258024020014103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41e5ddc800ad4280808080900d84370200200041d0026a41cbddc800ad4280808080a00384370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080b0093702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41fffec300410a10f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b1081082000410336029801200041083602a401200041f7fec3003602a001024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c02200020004198016a360290022000200041a0016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41bc9ac100ad4280808080f00b84370200200041d0026a41a69cc100ad4280808080f00284370300200041c8026a4202370300200041a8026a41086a4116360200200041c4026a20004188026a360200200041d8b2c9003602b40220004281808080c0073702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041f0006a4200370300200041d8006a41106a4200370300200041d8006a41086a220142003703002000420037035820004188026a41f7fec300410810f201200120004188026a41086a2901003703002000200029018802370358200041a8026a41b4a8c800411010f201200541086a200041a8026a41086a290000370000200520002900a802370000200041203602ac012000200041d8006a3602a801200041b0016a200041d8006a412010e40202400240024020002802b0012207450d0020002802b40121082000200041b8016a2802003602c401200020073602c001200041106a200041c0016a10ad010240024020002802100d00024002400240024002402000280214220b20002802c401411c6e22012001200b4b1bad421c7e220d422088a70d00200da72201417f4c0d000240024020010d00410421060c010b200110382206450d020b4100210e200041003602d001200020063602c80120002001411c6e3602cc010240200b450d00200041a8026a41047221040340200041086a200041c0016a10ad0120002802080d06200028020c220620002802c4012203412c6e2201200120064b1bad422c7e220d422088a70d02200da72201417f4c0d020240024020010d004104210f0c010b20011038220f450d040b4100210a200041003602e0012000200f3602d80120002001412c6e22103602dc0102402006450d004100210a410021090340200941016a210941002101034020032001460d07200420016a20002802c00122022d00003a00002000200241016a3602c001200141016a2202210120024120470d000b2000200320026b3602c401200020002902c40237019001200020002d00c3023a008f01200020002f00c1023b008d01200020002800bd0236008901200020002d00bc023a008801200020002f01ba023b018601200020002801b60236018201200020002d00b5023a008101200020002f00b3023b007f200020002800af0236007b200020002d00ae023a007a200020002f01ac023b0178200041a8026a200041c0016a10e50220002802a8022202450d0720004188026a41086a200041f8006a41086a290100220d37030020004188026a41106a200041f8006a41106a290100221137030020004188026a41186a200041f8006a41186a2901002212370300200041e8016a41086a2203200d370300200041e8016a41106a220c2011370300200041e8016a41186a2210201237030020002000290178220d370388022000200d3703e80120002902ac02210d0240200a20002802dc01470d00200041d8016a200a10fd0220002802d801210f20002802e001210a0b200f200a412c6c6a2201200d370204200120023602002001410c6a20002903e801370200200141146a20032903003702002001411c6a200c290300370200200141246a2010290300370200200020002802e00141016a220a3602e001024020092006460d0020002802c40121030c010b0b20002802dc01211020002802d801210f0b200f450d062000200041c0016a10ad0102400240024020002802000d002000280204220620002802c40122014102762202200220064b1b22034102742202417f4c0d050240024020030d004104210c0c010b20021038220c450d070b41002102200041003602b002200020033602ac022000200c3602a8020240024002402006450d00200120064102746b211341002102034020014104490d0320002802c001220928000021032000200941046a3602c0012003418094ebdc034b0d020240200220002802ac02470d00200041a8026a2002410110be0320002802a802210c20002802b00221020b2001417c6a2101200c20024102746a2003360200200020002802b00241016a22023602b0022006417f6a22060d000b20002802ac02210320002802a802210c201321010b200c450d02200141034b0d040240200341ffffffff0371450d00200c10390b0240200a450d00200a412c6c2102200f210103400240200141046a28020041ffffff3f71450d00200128020010390b2001412c6a2101200241546a22020d000b0b2010450d0b2010412c6c0d030c0b0b2001417c6a21010b200020013602c40120002802ac0241ffffffff0371450d0020002802a80210390b0240200a450d00200a412c6c2102200f210103400240200141046a28020041ffffff3f71450d00200128020010390b2001412c6a2101200241546a22020d000b0b2010450d082010412c6c450d080b200f10390c070b200e41016a210e20002802c0012206280000211320002001417c6a3602c4012000200641046a3602c001024020002802d001220920002802cc01470d00200041c8016a200910820820002802d00121090b20002802c80122062009411c6c6a220120103602042001200f360200200141186a2013360200200141146a2002360200200141106a20033602002001410c6a200c360200200141086a200a3602002000200941016a3602d001200e200b470d000b20002902cc01210d0c070b20002902cc01210d20060d060c050b1034000b1030000b200041003602c4010b20002802d80121030240200a450d00200a412c6c21022003210103400240200141046a28020041ffffff3f71450d00200128020010390b2001412c6a2101200241546a22020d000b0b20002802dc012201450d002001412c6c450d00200310390b20002802c8012106024020002802d0012201450d0020062001411c6c6a2104200621030340024020032802082202450d00200328020021012002412c6c210203400240200141046a28020041ffffff3f71450d00200128020010390b2001412c6a2101200241546a22020d000b0b0240200341046a2802002201450d002001412c6c450d00200328020010390b2003411c6a21010240200341106a28020041ffffffff0371450d00200328020c10390b2001210320012004470d000b0b024020002802cc012201450d002001411c6c450d00200610390b0b2000420037028c02410021062000410028029cde4a360288022000410c3602ec012000200041a8016a3602e801200020004188026a360278200041bc026a4101360200200042013702ac02200041e4b4c4003602a8022000200041e8016a3602b802200041f8006a41fc86ca00200041a8026a103b1a20002802880220002802900210e702200028028c02450d0020002802880210390b02402008450d00200710390b20060d010b41002802ccdd4a21064200210d0c010b200041d8006a412010fd010b0240024041002802a8fe4a41024b0d00200d422088a721010c010b2000410236028c022000200d422088a722013602e8012000200041e8016a3602880241002802a4fe4a210241002802a0fe4a210341002802acfe4a2104200041b8026a4202370300200041dc026a41ef94c300ad4280808080d00c84370200200041d0026a41d594c300ad4280808080a00384370300200041c8026a4201370300200041b0026a4111360200200041c4026a20004188026a360200200041b494c3003602b40220004281808080d0053702e402200041003602d802200041c494c3003602ac02200041033602a802200341f4ddca00200441024622041b200041a8026a200241b0a7c00020041b2802101103000b02402001450d0020062001411c6c6a2104200621030340024020032802082202450d00200328020021012002412c6c210203400240200141046a28020041ffffff3f71450d00200128020010390b2001412c6a2101200241546a22020d000b0b0240200341046a2802002201450d002001412c6c450d00200328020010390b2003411c6a21010240200341106a28020041ffffffff0371450d00200328020c10390b2001210320012004470d000b0b0240200da72201450d002001411c6c450d00200610390b20004188026a41f7fec300410810f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f01980120002d009a0120002d009b01108108200041033602582000410a3602ec01200041edfec3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41ed9fc200ad4280808080900c84370200200041d0026a41d49fc200ad4280808080900384370300200041c8026a4202370300200041a8026a41086a4116360200200041c4026a20004188026a36020020004190b0c9003602b4022000428180808080103702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41edfec300410a10f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041123602ec01200041dbfec3003602e80141002802a8fe4a210120004103360258024020014103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41f7c8c200ad4280808080a00d84370200200041d0026a41ddc8c200ad4280808080a00384370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080b0203702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41dbfec300411210f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b10810820004103360258200041083602ec01200041d3fec3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41ffadc400ad4280808080f00b84370200200041d0026a41e8adc400ad4280808080f00284370300200041c8026a4202370300200041a8026a41086a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080a0173702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41d3fec300410810f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041033602d8012000410736027c200041ccfec300360278024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8016a360290022000200041f8006a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41edb1c300ad4280808080e00b84370200200041d0026a41d7b1c300ad4280808080e00284370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b4022000428180808090053702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b200041e8016a41ccfec300410710f20120004188026a41c3b1c300411410f2012005200029008802370000200541086a20004188026a41086a290000370000200041a8026a41086a2201200041e8016a41086a290000370300200041a8026a41106a2202200041d8006a41106a290300370300200041a8026a41186a200041d8006a41186a290300370300200020002900e8013703a802200041a8026a20002f01d80120002d00da0120002d00db0110810820004103360258200041093602ec01200041c3fec3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210341002802a0fe4a210441002802acfe4a210520024202370300200041dc026a41d8d2c600ad4280808080800c84370200200041d0026a41b3d5c600ad4280808080800384370300200041c8026a420237030020014116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080c00d3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200441f4ddca00200541024622011b200041a8026a200341b0a7c00020011b2802101103000b20004188026a41c3fec300410910f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b10810820004103360258200041043602ec01200041bffec3003602e801024041002802a8fe4a4103490d0020004194026a411e3602002000410436028c022000200041d8006a360290022000200041e8016a3602880241002802a4fe4a210141002802a0fe4a210241002802acfe4a2103200041b8026a4202370300200041dc026a41accac200ad4280808080b00b84370200200041d0026a41ccb0c300ad4280808080b00284370300200041c8026a4202370300200041b0026a4116360200200041c4026a20004188026a36020020004190b0c9003602b40220004281808080900d3702e402200041003602d802200041a0b0c9003602ac02200041033602a802200241f4ddca00200341024622031b200041a8026a200141b0a7c00020031b2802101103000b20004188026a41bffec300410410f201200041a8026a41c3b1c300411410f201200020002900b00237019001200020002d00af023a008f01200020002f00ad023b008d01200020002800a90236008901200020002d00a8023a008801200020002f0196023b018601200020002801920236018201200020002d0091023a008101200020002f008f023b007f2000200028008b0236007b200020002d008a023a007a200020002f0188023b0178200041f8006a20002f015820002d005a20002d005b108108200041f0026a240042c0b0e6810c0bd90101037f230041106b22042400200441003602082004420137030020044100410210810120042802002205200428020822066a20013b00002004200641026a22013602080240200428020422062001470d002004200141011081012004280204210620042802002105200428020821010b200520016a20023a00002004200141016a2201360208024020062001470d0020042006410110810120042802002105200428020821010b200520016a20033a0000200041202005200141016a10a30202402004280204450d00200428020010390b200441106a24000bd30102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad421c7e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a410436020020022001411c6c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a2001411c6e360200200241206a24000f0b1034000b850101037f0240410f10382202450d0041042103200041046a420f3702002002410c3a000020002002360200200041086a22044104360200200241002f0086b5443b0001200241036a41002d0088b5443a0000024041010d00200041044108108101200428020021030b2004200341086a360200200028020020036a20013700000f0b1030000b34002000418bb4c40036020420004100360200200041146a4103360200200041106a418cb5c400360200200041086a42133702000b13002000410d36020420004190bac4003602000b13002000410e360204200041f4c2c4003602000b97e4010b057f017e057f027e087f017e017f027e237f037e057f230041b00d6b22012400200141a80c6a41186a22024200370300200141a80c6a41106a22034200370300200141a80c6a41086a22044200370300200142003703a80c200141b0086a418bb4c400411310f2012004200141b0086a41086a2205290000370300200120012900b0083703a80c200141b0086a419eb4c400410e10f20120022005290000370300200320012900b008370300200141306a200141a80c6a10c2042001290338210620012802302107200141b0086a41186a22024200370300200141b0086a41106a2208420037030020054200370300200142003703b008200141a80b6a41b9fec300410610f2012005200141a80b6a41086a2204290000370300200120012900a80b3703b008200141a8076a41b0eec900410610f2012002200141a8076a41086a2209290000370300200820012900a807370300200141286a200141b0086a412010f501200128022c210a2001280228210b200242003703002008420037030020054200370300200142003703b008200141a80b6a41b9fec300410610f20120052004290000370300200120012900a80b3703b008200141a8076a41d0eec900410a10f20120022009290000370300200820012900a807370300200141a80c6a200141b0086a412010ab020240024020012d00a80c4101460d00200141c0006a41186a4200370300200141c0006a41106a4200370300200141c0006a41086a4200370300200142003703400c010b200141c0006a41186a200141c10c6a290000370300200141c0006a41106a200141b90c6a290000370300200141c0006a41086a200141b10c6a290000370300200120012900a90c3703400b200141c8086a4200370300200141c0086a4200370300200141b0086a41086a22054200370300200142003703b008200141a80c6a41f4eec600410510f2012005200141a80c6a41086a2202290000370300200120012900a80c3703b008200141a80c6a41b483c800410a10f201200841086a2002290000370000200820012900a80c370000200141a80c6a200141b0086a4120109c0202400240024002400240024002400240024020012902ac0c420020012802a80c22021b220c422088a722044102744102752209ad420c7e220d422088a70d00200da72205417f4c0d004104210e02402005450d0020051038220e450d090b41002802ccdd4a210f41002110200141003602b80a2001200e3602b00a20012005410c6e22053602b40a0240200520094f0d00200141b00a6a4100200910bd0320012802b80a21100b2002200f20021b211102402004450d002004410274211220012802b00a2010410c6c6a210e200141f8066a41046a2113200141b8096a41086a21142011210f0340200f2802002105200141a80b6a41f4eec600410510f201200141a8076a418c84c800410510f201200120053602f8062001200141f8066a410410f3013703b809200120133602b40c200120143602ac0c2001200141f8066a3602b00c2001200141b8096a3602a80c200141b0086a200141a80c6a108d0120012802b808220941206a2205417f4c0d0202400240024020050d00200141003602b00c200120053602ac0c200141013602a80c0c010b200510382202450d0c41002104200141003602b00c200120023602a80c200120053602ac0c2005410f4b0d010b200141a80c6a4100411010810120012802ac0c210520012802a80c210220012802b00c21040b200220046a221520012900a80b370000201541086a200141a80b6a41086a2900003700002001200441106a22043602b00c0240200520046b410f4b0d00200141a80c6a2004411010810120012802ac0c210520012802a80c210220012802b00c21040b200220046a221520012900a807370000201541086a200141a8076a41086a2900003700002001200441106a22043602b00c20012802b00821150240200520046b20094f0d00200141a80c6a2004200910810120012802a80c210220012802b00c21040b200220046a2015200910c30a1a200420096a2105024020012802b408450d0020012802b00810390b200141b0086a20012802a80c2202200510ba0220012802b008210520012902b4082116024020012802ac0c450d00200210390b410110382202450d0a2016200d20051b210d200142013702ac0c200120023602a80c0240024020050d00200241003a0000200141013602b00c0c010b200241013a0000200141013602b00c2005200d422088a7200141a80c6a10d601200da7450d00200510390b200f41046a210f200e20012903a80c370200200e41086a200141a80c6a41086a280200360200201041016a2110200e410c6a210e2012417c6a22120d000b0b200120103602b80a0240200c42ffffffff0383500d00201110390b200141a80c6a41086a200141b00a6a41086a220e280200360200200120012903b00a3703a80c200141e0006a200141a80c6a108808200141b0086a41186a4200370300200141b0086a41106a4200370300200141b0086a41086a22024200370300200142003703b008200141a80b6a4190e1c800410510f2012002200141a80b6a41086a2205290000370300200120012900a80b3703b008200141a8076a4198f7c800410e10f201200841086a200141a8076a41086a2202290000370000200820012900a807370000200141186a200141b0086a10c204200128021821042001290320210d200141a8076a41186a22094200370300200141a8076a41106a2217420037030020024200370300200142003703a807200141a80b6a4190e1c800410510f20120022005290000370300200120012900a80b3703a807200141a80b6a4195e1c800411410f20120092005290000370300201720012900a80b370300200141203602bc092001200141a8076a3602b809200141b00a6a200141a8076a412010e402200d42017c21160240024020012802b00a22050d004200210c0c010b20012802b40a210902400240200e280200220e4108490d00200e417c714108460d00200e410c460d002005290000210d20052800082102200141013602a80c200120052d000c3a00ac0c200e410d460d00200141023602a80c200120052d000d3a00ad0c200e410e460d00200141033602a80c200120052d000e3a00ae0c200e410f460d00200141043602a80c200120052d000f3a00af0c200e4110460d00200141b00c6a20052d00103a0000200141053602a80c200e4111460d00200141b10c6a20052d00113a0000200141063602a80c200e4112460d00200141b20c6a20052d00123a0000200141073602a80c200e4113460d00200141b30c6a20052d00133a0000200141083602a80c200e4114460d00200141b40c6a20052d00143a0000200141093602a80c200e4115460d00200141b50c6a20052d00153a00002001410a3602a80c200e4116460d00200141b60c6a20052d00163a00002001410b3602a80c200e4117460d00200141b70c6a20052d00173a00002001410c3602a80c200e4118460d00200141b80c6a20052d00183a00002001410d3602a80c200e4119460d00200141b90c6a20052d00193a00002001410e3602a80c200e411a460d00200141ba0c6a20052d001a3a00002001410f3602a80c200e411b460d00200141bb0c6a20052d001b3a0000200141103602a80c200e411c460d00200141bc0c6a20052d001c3a0000200141113602a80c200e411d460d00200141bd0c6a20052d001d3a0000200141123602a80c200e411e460d00200141be0c6a20052d001e3a0000200141133602a80c200e411f460d00200141bf0c6a20052d001f3a0000200141143602a80c200e4120460d00200141c00c6a20052d00203a0000200141153602a80c200e4121460d00200141c10c6a20052d00213a0000200141163602a80c200e4122460d00200141c20c6a20052d00223a0000200141173602a80c200e4123460d00200141c30c6a20052d00233a0000200141183602a80c200e4124460d00200141c40c6a20052d00243a0000200141193602a80c200e4125460d00200141c50c6a20052d00253a00002001411a3602a80c200e4126460d00200141c60c6a20052d00263a00002001411b3602a80c200e4127460d00200141c70c6a20052d00273a00002001411c3602a80c200e4128460d00200141c80c6a20052d00283a00002001411d3602a80c200e4129460d00200141c90c6a20052d00293a00002001411e3602a80c200e412a460d00200141ca0c6a20052d002a3a00002001411f3602a80c200e412b460d00200141cb0c6a20052d002b3a0000200141b9086a200141b50c6a2d00003a0000200141b0086a41106a220e200141bc0c6a2d00003a0000200141203602a80c200120012f01ac0c3b01b008200120012d00ae0c3a00b2082001200141b30c6a2f00003b00b7082001200141ba0c6a2f01003b01be08200141bd0c6a280000210f200141b60c6a2801002110200141c40c6a290200210c20012800af0c2112200141c7086a200141c30c6a2d00003a0000200141c00b6a200c370300200120103601ba08200141a80b6a41086a200141b0086a41086a2903003703002001200f3600c1082001200141c10c6a2f00003b00c508200141a80b6a41106a200e290300370300200120123600b308200120012903b0083703a80b4201210c0c010b4200210c200142003702b4082001410028029cde4a3602b0082001410c3602ac0b2001200141b8096a3602a80b2001200141b0086a3602f806200141bc0c6a4101360200200142013702ac0c200141e4b4c4003602a80c2001200141a80b6a3602b80c200141f8066a41fc86ca00200141a80c6a103b1a20012802b00820012802b80810e702024020012802b408450d0020012802b00810390b0b2009450d00200510390b2016420120041b211802400240200c4200520d004200210d20014198016a420037030020014190016a420037030020014188016a42003703002001420037038001410021020c010b20014180016a41186a200141a80b6a41186a29030037030020014180016a41106a200141a80b6a41106a29030037030020014180016a41086a200141a80b6a41086a290300370300200120012903a80b370380010b024002402018200d520d00200141a8076a41186a20014180016a41186a290300370300200141a8076a41106a20014180016a41106a290300370300200141a8076a41086a20014180016a41086a29030037030020012001290380013703a8070c010b200141c8086a4200370300200141c0086a4200370300200141b0086a41086a22054200370300200142003703b008200141a80b6a4190e1c800410510f2012005200141a80b6a41086a290000370300200120012900a80b3703b008200141a8076a41e0f7c800410f10f201200841086a200141a8076a41086a290000370000200820012900a807370000200141a80c6a200141b0086a10e20620012902ac0c420020012802a80c22051b2219422088a7220f41216c220e41216d2204ad420c7e220d422088a70d01200da72202417f4c0d014104210902402002450d00200210382209450d0a0b2005410028029cde4a20051b221a200e6a211b41002105200141003602a801200120093602a00120012002410c6e22023602a4010240200220044f0d00200141a0016a4100200410bd0320012802a80121050b0240201b201a460d002005200f6a211c20012802a0012005410c6c6a211d410028029cde4a211e200141b0086a41036a211f200141d80c6a2120200141d50c6a2121200141de016a41026a2122201a2110034002400240024020102d0000222341fe01714102470d0020102d0020211220102d001f211520102d001e211320102d001d210520102d001c211420102d001b211120102d001a210220102d0019212420102d0018212520102d0017210420102d0016212620102d0015212720102d0014212820102d0013212920102d0012212a20102d0011212b20102d0010210920102d000f212c20102d000e212d20102d000d210e20102d000c212e20102d000b212f20102d000a210f20102d0009213020102d0008213120102d0007213220102d0002213320102d00012134200120102d000541087420102d00067220102d00044110747220102d000322354103714118747222363602a80220012029202a41087472202b411074722009410371411874722229360298022001201220154108747220134110747220054103714118747222153602880220012030410274200f41c00171410676722031410a747220324112747222123602a4022001202e410474200e41f0017141047672202f410c7472200f413f7141147472220f3602a0022001202c410674200941fc017141027672202d410e7472200e410f7141167472220936029c0220012026410274200441c00171410676722027410a7472202841127472220e3602940220012024410474200241f00171410476722025410c74722004413f714114747222043602900220012014410674200541fc0171410276722011410e74722002410f7141167472220236028c0220012033410674203541fc0171410276722034410e747222053602ac020240200541ffffff01470d00200e200471202971200971200f7120127120367141ffffff1f470d00201541d1076a411a7641c0007220026a41808080204f0d010b200141013a00b402200141013602b002202041286a22364100360200202041206a22324200370200202041186a22334200370200202041106a22344200370200202041086a2235420037020020204200370200200141a80c6a41086a223720014188026a41086a290300370300200141a80c6a41106a223820014188026a41106a290300370300200141a80c6a41186a223920014188026a41186a290300370300200141a80c6a41206a223a20014188026a41206a290300370300200141013a00840d20012001290388023703a80c200141013a00d40c200141013602d00c200141b8026a41286a4100360200200141b8026a41206a4200370300200141b8026a41186a4200370300200141b8026a41106a4200370300200141b8026a41086a4200370300200142003703b802200141013a00e402200141b8026a20014188026a108908200141e8026a41286a22054100360200200141e8026a41206a22024200370300200141e8026a41186a22044200370300200141e8026a41106a22094200370300200141e8026a41086a220e4200370300200142003703e802200141013a009403200141e8026a20014188026a200141b8026a108a08200141003a00880d200120012802e80241076a222a36029803200120012802ec02222b36029c032001200e280200222c3602a003200120012802f402222d3602a40320012009280200222e3602a803200120012802fc02222f3602ac032001200428020022303602b003200120012802840322313602b40320012002280200223b3602b803200141003a00c4032001200128028c03223c3602bc032001200528020041016a3602c003200141f8036a41286a220f4100360200200141f8036a41206a22124200370300200141f8036a41186a22154200370300200141f8036a41106a22134200370300200141f8036a41086a22144200370300200142003703f803200141013a00a404200141f8036a20014198036a108908200141b0086a41286a220e4100360200200141b0086a41206a22054200370300200141b0086a41186a22024200370300200141b0086a41106a22044200370300200141b0086a41086a22094200370300200142003703b008200141013a00dc08200141b0086a200141f8036a20014198036a108a08200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703f803200141a8046a41286a22114100360200200141a8046a41206a220f4200370300200141a8046a41186a22124200370300200141a8046a41106a22154200370300200141a8046a41086a22134200370300200142003703a804200141013a00d404200141a8046a200141f8036a108908200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a8046a20014198036a108a082011200e290300370300200f2005290300220d37030020122002290300221637030020152004290300220c37030020132009290300223d370300200120012903b008223e3703a804200141d8046a41206a2212200d370300200141d8046a41186a22152016370300200141d8046a41106a2213200c370300200141d8046a41086a2214203d3703002001203e3703d804200141d8046a41286a220f2011280200360200200120012d00d4044100473a008405200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141d8046a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703d804200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141d8046a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703d804200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141d8046a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703d804200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141d8046a200141a8046a108a08200f200e29030037030020122005290300220d37030020152002290300221637030020132004290300220c37030020142009290300223d370300200120012903b008223e3703d80420014188056a41206a2215200d37030020014188056a41186a2213201637030020014188056a41106a2214200c37030020014188056a41086a2211203d3703002001203e3703880520014188056a41286a2212200f280200360200200120012d0084054100473a00b405200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014188056a1089082012200e29030037030020152005290300370300201320022903003703002014200429030037030020112009290300370300200120012903b00837038805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014188056a1089082012200e29030037030020152005290300370300201320022903003703002014200429030037030020112009290300370300200120012903b00837038805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014188056a1089082012200e29030037030020152005290300370300201320022903003703002014200429030037030020112009290300370300200120012903b00837038805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014188056a200141a8046a108a082012200e29030037030020152005290300220d37030020132002290300221637030020142004290300220c37030020112009290300223d370300200120012903b008223e37038805200141b8056a41206a220f200d370300200141b8056a41186a22152016370300200141b8056a41106a2213200c370300200141b8056a41086a2211203d3703002001203e3703b805200141b8056a41286a22142012280200360200200120012d00b4054100473a00e405200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b8056a1089082014200e290300370300200f2005290300370300201520022903003703002013200429030037030020112009290300370300200120012903b0083703b805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b8056a1089082014200e290300370300200f2005290300370300201520022903003703002013200429030037030020112009290300370300200120012903b0083703b805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b8056a200141f8036a108a082014200e290300370300200f2005290300220d37030020152002290300221637030020132004290300220c37030020112009290300223d370300200120012903b008223e3703b805200141e8056a41206a220f200d370300200141e8056a41186a22122016370300200141e8056a41106a2215200c370300200141e8056a41086a2213203d3703002001203e3703e805200141e8056a41286a22112014280200360200200120012d00e4054100473a009406200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a1089082011200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703e805200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141e8056a200141b8056a108a082011200e290300370300200f2005290300220d37030020122002290300221637030020152004290300220c37030020132009290300223d370300200120012903b008223e3703e80520014198066a41206a2212200d37030020014198066a41186a2215201637030020014198066a41106a2213200c37030020014198066a41086a2214203d3703002001203e3703980620014198066a41286a220f2011280200360200200120012d0094064100473a00c406200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b00837039806200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a20014198066a200141e8056a108a08200f200e29030037030020122005290300220d37030020152002290300221637030020132004290300220c37030020142009290300223d370300200120012903b008223e37039806200141c8066a41206a2212200d370300200141c8066a41186a22152016370300200141c8066a41106a2213200c370300200141c8066a41086a2214203d3703002001203e3703c8062001200f2802003602f006200120012d00c4064100473a00f406412c210f0340200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141c8066a108908200141c8066a41286a2211200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703c806200f417f6a220f0d000b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141c8066a20014198066a108a082011200e29030037030020122005290300220d37030020152002290300221637030020132004290300220c37030020142009290300223d370300200120012903b008223e3703c806200141f8066a41206a2212200d370300200141f8066a41186a22152016370300200141f8066a41106a2213200c370300200141f8066a41086a2214203d3703002001203e3703f806200120112802003602a007200120012d00f4064100473a00a40741d800210f0340200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141f8066a108908200141f8066a41286a2211200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703f806200f417f6a220f0d000b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141f8066a200141c8066a108a082011200e29030037030020122005290300220d37030020152002290300221637030020132004290300220c37030020142009290300223d370300200120012903b008223e3703f806200141b8096a41206a2212200d370300200141b8096a41186a22152016370300200141b8096a41106a2213200c370300200141b8096a41086a2214203d3703002001203e3703b809200120112802003602e009200120012d00a4074100473a00e409412c210f0340200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b8096a108908200141b8096a41286a2211200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703b809200f417f6a220f0d000b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b00841012129200141013a00dc08200141b0086a200141b8096a20014198066a108a082011200e29030037030020122005290300220d37030020152002290300221637030020132004290300220c37030020142009290300223d370300200120012903b008223e3703b809200141b00a6a41206a220f200d370300200141b00a6a41186a22122016370300200141b00a6a41106a2215200c370300200141b00a6a41086a2213203d3703002001203e3703b00a200141b00a6a41286a22142011280200360200200120012d00e4094100473a00dc0a200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b00a6a1089082014200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703b00a200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b00a6a1089082014200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703b00a200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b00a6a1089082014200e290300370300200f2005290300370300201220022903003703002015200429030037030020132009290300370300200120012903b0083703b00a200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141b00a6a200141a8046a108a082014200e290300220d370300200f2005290300221637030020122002290300220c37030020152004290300223d37030020132009290300223e370300200120012903b008223f3703b00a200141a80b6a41286a220f200d370300200141a80b6a41206a22122016370300200141a80b6a41186a2215200c370300200141a80b6a41106a2213203d370300200141a80b6a41086a2214203e3703002001203f3703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a200141e8056a108a08200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a200141f8036a108a08200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a80b6a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200120012903b0083703a80b200141a8076a41286a22244100360200200141a8076a41206a22254200370300200141a8076a41186a22264200370300200141a8076a41106a22274200370300200141a8076a41086a22284200370300200142003703a807200141013a00d407200141a8076a200141a80b6a108908200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a8076a108908200f200e29030037030020122005290300370300201520022903003703002013200429030037030020142009290300370300200141c8036a41086a22402028290300370300200141c8036a41106a22412027290300370300200141c8036a41186a22422026290300370300200141c8036a41206a22432025290300370300200141c8036a41286a22442024290300370300200120012903b0083703a80b200120012903a8073703c8030240200f28020041016a221141fefeff3f6c20012802ac0b6b202b6a203c201141feffff036c20012802cc0b6b6a223c411676222b4106746a201141def0ff3f6c20012802a80b6b202a6a202b41d1076c6a222a411a766a222b202a72201141feffff3f6c221120142802006b202c6a202b411a766a222c72201120012802b40b6b202d6a202c411a766a222d72201120132802006b202e6a202d411a766a222e72201120012802bc0b6b202f6a202e411a766a222f72201120152802006b20306a202f411a766a223072201120012802c40b6b20316a2030411a766a223172201120122802006b203b6a2031411a766a22117241ffffff1f712011411a76203c41ffffff01716a223b72450d00202b41c00073202a41d0077371202c71202d71202e71202f71203071203171201171203b418080801e737141ffffff1f4621290b2036204429030037020020322043290300370200203320422903003702002034204129030037020020352040290300370200202020012903c80337020002402029450d002020108b0820012802d80c22114101712023410346460d00200141003a00840d200141023602800d200141fcffff0720012802fc0c6b3602fc0c200141fcffffff0020012802f80c6b3602f80c200141fcffffff0020012802f40c6b3602f40c200141fcffffff0020012802f00c6b3602f00c200141fcffffff0020012802ec0c6b3602ec0c200141fcffffff0020012802e80c6b3602e80c200141fcffffff0020012802e40c6b3602e40c200141fcffffff0020012802e00c6b3602e00c200141fcfdffff0020012802dc0c6b3602dc0c200141bce1ffff0020116b3602d80c0b20012d00880d0d00200f410036020020124200370300201542003703002013420037030020144200370300200142003703a80b200141013a00d40b200141a80b6a20201089082024410036020020254200370300202642003703002027420037030020284200370300200142003703a807200141013a00d407200141a8076a200141a80c6a108908200e410036020020054200370300200242003703002004420037030020094200370300200142003703b008200141013a00dc08200141b0086a200141a8076a200141a80c6a108a0820252005290300220d37030020282009290300221637030020272004290300220c37030020262002290300223d3703002024200e290300370300200120012903b008223e3703a807203ea720012802cc07220e411676220f41d1076c6a41076a221241ffffff1f7120012802a80b6b200f41067420012802ac076a2012411a766a2212411a762016a76a2215411a7620012802b4076a2213411a76200ca76a2214411a7620012802bc076a2211411a76203da76a2223411a7620012802c4076a2224411a76200da76a2225411a76200e41ffffff01716a20012802cc0b6b41fcffff076a2226411676222741d1076c6a41bce1ffff006a222841ffffff1f71220e41d00773210f0240200e450d00200f41ffffff1f470d010b20274106742028411a767220012802ac0b6b201241ffffff1f716a41fcfdffff006a221241ffffff1f71200e72201541ffffff1f7120012802b00b6b2012411a766a41fcffffff006a220e41ffffff1f7172201341ffffff1f7120012802b40b6b200e411a766a41fcffffff006a221541ffffff1f7172201441ffffff1f7120012802b80b6b2015411a766a41fcffffff006a221341ffffff1f7172201141ffffff1f7120012802bc0b6b2013411a766a41fcffffff006a221441ffffff1f7172202341ffffff1f7120012802c00b6b2014411a766a41fcffffff006a221141ffffff1f7172202441ffffff1f7120012802c40b6b2011411a766a41fcffffff006a222341ffffff1f7172202541ffffff1f7120012802c80b6b2023411a766a41fcffffff006a222441ffffff1f71722024411a76202641ffffff01716a222572450d01201241c00073200f71200e712015712013712014712011712023712024712025418080801e737141ffffff1f460d010b024041002802a8fe4a0d004200210d201e21050c020b41002802a4fe4a210541002802a0fe4a210241002802acfe4a2104200142013703b80c20014190b4c0003602b40c2001428180808080073702e40c2001418addc800ad42808080809008843702dc0c200141003602d80c200141eedcc800ad4280808080c003843703d00c4200210d200142003703c80c2001410e3602b00c20014198b4c0003602ac0c200141013602a80c200141f4ddca003602c40c200241f4ddca00200441024622041b200141a80c6a200541b0a7c00020041b280210110300201e21050c010b202220012903a80c370100202241206a220e203a290300370100202241186a220f2039290300370100202241106a22122038290300370100202241086a22152037290300370100200141b0016a41086a2213202141086a290000370300200141b0016a41106a2214202141106a290000370300200141b0016a41186a2211202141186a290000370300200141b0016a41206a2223202141206a290000370300200141b0016a41276a2224202141276a280000360000200120212900003703b00120012d00d40c212520012802d00c212620012d00840d212720012802800d2128200141b0086a41276a202428000036000020052023290300370300200220112903003703002004201429030037030020092013290300370300200120012903b0013703b008203a200e2901003703002039200f29010037030020382012290100370300203720152901003703002020201f2900003700002035201f41086a2900003700002034201f41106a2900003700002033201f41186a2900003700002032201f41206a290000370000200120222901003703a80c200120283602800d200120263602d00c200141003a00880d200120274100473a00840d200120254100473a00d40c200141a80c6a108b082020108b08203728020021022038280200210420392802002109203a280200210e20012802d80c210f20012802dc0c211220012802e00c211520012802e40c211320012802e80c211420012802ec0c211120012802f00c212320012802f40c212420012802f80c212520012802fc0c212b20012802a80c212620012802ac0c212720012802b40c212820012802bc0c212920012802c40c212a20012802cc0c212c41c10010382205450d0c2005200f3a0040200520143a0033200520253a0026200520263a0020200520043a00132005200e3a0006200541043a00002005200f4108763a003f2005200f4110763a003e200520124106763a003c20052012410e763a003b200520154104763a003920052015410c763a0038200520134102763a003620052013410a763a0035200520134112763a0034200520144108763a0032200520144110763a0031200520114106763a002f20052011410e763a002e200520234104763a002c20052023410c763a002b200520244102763a002920052024410a763a0028200520244112763a0027200520254108763a0025200520254110763a00242005202b4106763a00222005202b410e763a0021200520264108763a001f200520264110763a001e200520274106763a001c20052027410e763a001b200520024104763a001920052002410c763a0018200520284102763a001620052028410a763a0015200520284112763a0014200520044108763a0012200520044110763a0011200520294106763a000f20052029410e763a000e200520094104763a000c20052009410c763a000b2005202a4102763a00092005202a410a763a00082005202a4112763a00072005200e4108763a00052005200e4110763a00042005202c4106763a00022005202c410e763a00012005200f4118764103712012410274723a003d20052012411676410f712015410474723a003a20052015411476413f712013410674723a0037200520144118764103712011410274723a003020052011411676410f712023410474723a002d20052023411476413f712024410674723a002a20052025411876410371202b410274723a0023200520264118764103712027410274723a001d20052027411676410f712002410474723a001a20052002411476413f712028410674723a0017200520044118764103712029410274723a001020052029411676410f712009410474723a000d20052009411476413f71202a410674723a000a2005200e411876410371202c410274723a000342c18080809008210d0b201d200d370204201d2005360200201d410c6a211d201041216a2210201b470d000b201c21050b200120053602a80102402019a72202450d00200241216c450d00201a10390b200141a80c6a41086a200141a0016a41086a280200360200200120012903a0013703a80c200141b0086a200141a80c6a108808200141cc0c6a200141b0086a41186a290000370200200141c40c6a200141b0086a41106a290000370200200141a80c6a41146a200141b0086a41086a290000370200200120012900b0083702b40c200120053602b00c200120183703a80c200141a8076a41186a4200370300200141a8076a41106a4200370300200141a8076a41086a22024200370300200142003703a807200141a80b6a4190e1c800410510f2012002200141a80b6a41086a2204290000370300200120012900a80b3703a807200141a80b6a4195e1c800411410f201201741086a2004290000370000201720012900a80b370000200141003602b00b200142013703a80b200141a80b6a4100410810810120012802a80b220920012802b00b22026a20183700002001200241086a22043602b00b200141b40c6a2102024020012802ac0b20046b41034b0d00200141a80b6a2004410410810120012802a80b210920012802b00b21040b200920046a20053600002001200441046a3602b00b2002200141a80b6a10ff02200141a8076a412020012802a80b220520012802b00b10a302024020012802ac0b450d00200510390b200141a8076a41086a200241086a290200370300200141a8076a41106a200241106a290200370300200141a8076a41186a200241186a290200370300200120022902003703a80720012903a80c211820012802b00c210220012802d40c21040b20014198066a41186a2209200141c0006a41186a29030037030020014198066a41106a220e200141c0006a41106a29030037030020014198066a41086a220f200141c0006a41086a290300370300200141e8056a41086a2210200141e0006a41086a290000370300200141e8056a41106a2212200141e0006a41106a290000370300200141e8056a41186a2215200141e0006a41186a290000370300200141c8066a41086a2213200141a8076a41086a290300370300200141c8066a41106a2214200141a8076a41106a290300370300200141c8066a41186a2211200141a8076a41186a2903003703002001200129034037039806200120012900603703e805200120012903a8073703c80620014184076a4200370200200141002802fcad4922053602800720012006420020071b220d370390072001200d420186200d7b223f7d223d3703f806200142003702bc05200120053602b805200141b8056a4100410110de0420012802b805222520012802c005221d4107746a2205200236021020052018370308200541003a0000200520012903c80637021420054100200a4100200b1b2202417f6a2220202020024b1b36023820052004360234200520012903980637023c2005411c6a2013290300370200200541246a20142903003702002005412c6a2011290300370200200541c4006a200f290300370200200541cc006a200e290300370200200541d4006a2009290300370200200541f4006a2015290300370200200541ec006a2012290300370200200541e4006a2010290300370200200520012903e80537025c2001201d41016a22043602c005203d42027c220d79211602400240200d500d00427d203d7d7ba722052016a7460d010b0340200d427f423f20167d423f83867c42017c220d792216a72102200d427f857ba72105200d500d0020052002470d000b0b203d42017c210c02402005413f460d00200141b0086a41146a211b200141b0086a41086a2133200141a80c6a41146a2126200141a8076a41146a2131200141a8076a41086a2132200141f8066a41086a212741002109200141a80c6a410b6a2128200141a80c6a41136a212903400240024002400240024002400240427e2009413f71ad221686200c7c220d203d7d223e200d560d002004203ea722054b0d010b200141a80c6a2027200d10cf0320282d0000210520292d0000210e20012d00b80c211320012802b40c211520012802ac0c210220012802a80c212420012d00b00c211420012f00b10c210f20012f00b90c212e200141b00a6a202641f40010c30a1a202e200e41107472210e200f200541107472210f20244101460d020240201441ff01714102460d00200141a80b6a200141b00a6a41f40010c30a1a200141b0086a200141a80b6a41f40010c30a1a41012105200f212a2015212b2013212c200e212d0c020b202aad42ffffff0783420886420284210d41012102202b2115202c2113202d210e0c030b202520054107746a2123410021050b2031200141b0086a41f40010c30a1a2001200e3b00b907200141a8076a41136a200e4110763a00002001200f3b00b107200141a8076a410b6a200f4110763a0000200120133a00b807200120153602b407200120143a00b007200120233602ac07200120053602a80702404202201686200d7c427f7c220d203d7d2216200d560d0020042016a722244b0d030b200141a80c6a2027200d10cf0320282d0000211220292d0000211020012d00b80c211120012802b40c212020012802ac0c210220012802a80c212420012d00b00c211d20012f00b10c212e20012f00b90c212f200141b00a6a202641f40010c30a1a202f2010411074722110202e201241107472211220244101460d090240201d41ff01714102460d00200141a80b6a200141b00a6a41f40010c30a1a200141b8096a200141a80b6a41f40010c30a1a41012102203321242012212a2020212b2011212c2010212d0c040b202aad42ffffff0783420886420284210d41012102202b2115202c2111202d21100c0a0b200fad42ffffff07834208862014ad42ff018384210d0b200e410874201341ff01717221050c090b41002102202520244107746a222421300b201b200141b8096a41f40010c30a1a200120103b00c108200141b0086a41136a20104110763a0000200120123b00b908200141b0086a410b6a20124110763a0000200120113a00c008200120203602bc082001201d3a00b808200120303602b408200120023602b008200141a80b6a2032202320051b202410b104200141a80c6a200141a80b6a41800110c30a1a0240200420012802bc05470d00200141b8056a2004410110de0420012802b805212520012802c00521040b202520044107746a200141a80c6a41800110c30a1a2001200441016a22043602c005200941016a2109200c42027c220d79211602400240200d500d00427d200c7d7ba722052016a7460d010b0340200d427f423f20167d423f83867c42017c220d792216a72102200d427f857ba72105200d500d0020052002470d000b0b200c42017c210c413f20056b20094b0d000b0b200141a80c6a41086a2209200141b8056a41086a220f280200360200200120012903b8053703a80c200141f8066a41086a22054100108c084101210e200141f8066a41106a22022002280200220441016a3602002005280200200441186c6a2204203d370300200420012903a80c370308200441106a2009280200360200200141f8066a41186a2204200429030042017c220d3703002001200c3703f806200141b8096a41186a200d370300200141b8096a41106a22042002290300370300200141b8096a41086a20052903003703002001200c3703b809200141a80c6a200141b8096a10dd0420012802a80c4101460d01200141b0086a41066a200941800110c30a1a200141a8076a200141b0086a41860110c30a1a200141a80b6a200141a8076a41066a41800110c30a1a20012802c009222e2004280200220541186c6a211d200141b8096a410c6a280200212f202e21022005450d06202e41246a2110200541186c41686a2113200141a80c6a4101722120200141bc0c6a212c200141840d6a212d200141e40c6a2123200141a80c6a410c6a212b200141b0086a41106a2112202e21050340200541186a210220052802082214450d072005410c6a290200210c2005290300210d200141b0086a41186a2215420037030020124200370300200141b0086a41086a22094200370300200142003703b008200141a80c6a418bb4c400411310f2012009200141a80c6a41086a220f290000370300200120012900a80c3703b008200141a80c6a419eb4c400410e10f201200841086a2229200f290000370000200820012900a80c370000200141086a200141b0086a10c2040240200d2001290310420020012802081b221642018620167b7d510d000240200c42ffffff0f83500d00201410390b0240201d2002460d0003400240201028020041ffffff0f71450d002010417c6a28020010390b201041186a2110201341686a22130d000b0b0240202f450d00202f41186c450d00202e10390b200141b0086a410c6a200141d8046a41086a280200360200200141013602b008200120012902d8043702b4084102210e200141023a00a807024041002802a8fe4a450d0020014188056a410c6a41283602002001411336028c052001200141b0086a360290052001200141a8076a3602880541002802a4fe4a210541002802a0fe4a210241002802acfe4a2104200141b80c6a4202370300200141dc0c6a41a996c300ad4280808080f00e84370200200141d00c6a419496c300ad4280808080d00284370300200141c80c6a4202370300200141a80c6a41086a410c360200200141c40c6a20014188056a360200200141f895c3003602b40c20014281808080e0263702e40c200141003602d80c2001418896c3003602ac0c200141013602a80c200241f4ddca00200441024622041b200141a80c6a200541b0a7c00020041b28021011030020012d00a807210e20012802b0084102470d00200141b8086a280200450d0020012802b40810390b2001200e3a00a90c200141013a00a80c0c040b0240200c422088a72205450d00201420054107746a212a20142105034020052d0000220e4102460d01200541046a2800002104200541086a2d00002111200541016a2f00002124200541036a2d00002125200541096a2f000021262005410b6a2d00002127200141b00a6a2005410c6a222841f40010c30a1a200141a80c6a410b6a20273a0000200120263b00b10c200120253a00ab0c200120243b00a90c200120113a00b00c200120043602ac0c2001200e3a00a80c202b202841f40010c30a1a200141b0086a200141a80c6a10b204200141a8076a200d109b0520012802b007212420012802a8072111412010382204450d0b200420012903b008370000200441186a2015290300370000200441106a2012290300370000200441086a2009290300370000201120242004412010a30220041039024020012802ac07450d00201110390b200141b8056a200d108308200141003602b007200142013703a80702400240200e4101470d00200141a8076a4100410110810120012802a80720012802b00722046a41013a00002001200441016a3602b007412010382204450d0d20042020290000370000200441186a2224202041186a290000370000200441106a2225202041106a290000370000200441086a2226202041086a290000370000024020012802ac0720012802b00722116b411f4b0d00200141a8076a2011412010810120012802b00721110b20012802a80720116a220e2004290000370000200e41086a2026290000370000200e41106a2025290000370000200e41186a20242900003700002001201141206a3602b007200410390c010b200141003602b808200142013703b00820012802e00c2104200141b0086a4100410410810120012802b008221120012802b808220e6a20043600002001200e41046a220e3602b808412010382204450d0c20042023290000370000200441186a2224202341186a290000370000200441106a2225202341106a290000370000200441086a2226202341086a290000370000024020012802b408200e6b411f4b0d00200141b0086a200e412010810120012802b008211120012802b808210e0b2011200e6a22112004290000370000201141186a2024290000370000201141106a2025290000370000201141086a20262900003700002001200e41206a3602b80820041039202d200141b0086a10ff0220012903b00c213d024020012802b408220e20012802b80822046b41074b0d00200141b0086a2004410810810120012802b408210e20012802b80821040b20012802b008221120046a203d3700002001200441086a22043602b80820012802b80c21240240200e20046b41034b0d00200141b0086a2004410410810120012802b008211120012802b80821040b201120046a20243600002001200441046a3602b808202c200141b0086a10ff0220012802b808210420012802b0082111024020012802ac0720012802b007220e470d00200141a8076a200e410110810120012802b007210e0b20012802a807200e6a41003a00002001200e41016a220e3602b0070240024002400240200441c000490d00200441808001490d012004418080808004490d02024020012802ac07200e470d00200141a8076a200e410110810120012802b007210e0b20012802a807200e6a41033a00002001200e41016a220e3602b007024020012802ac07200e6b41034b0d00200141a8076a200e410410810120012802b007210e0b20012802a807200e6a2004360000200e41046a210e0c030b20044102742124024020012802ac07200e470d00200141a8076a200e410110810120012802b007210e0b20012802a807200e6a20243a0000200e41016a210e0c020b20044102744101722124024020012802ac07200e6b41014b0d00200141a8076a200e410210810120012802b007210e0b20012802a807200e6a20243b0000200e41026a210e0c010b20044102744102722124024020012802ac07200e6b41034b0d00200141a8076a200e410410810120012802b007210e0b20012802a807200e6a2024360000200e41046a210e0b2001200e3602b007024020012802ac07200e6b20044f0d00200141a8076a200e200410810120012802b007210e0b20012802a807200e6a2011200410c30a1a2001200e20046a3602b00720012802b408450d00201110390b20013502c00542208620012802b8052204ad8420013502b00742208620013502a807841000024020012802ac07450d0020012802a80710390b20013100a80c420185213d024020012802bc05450d00200410390b200d42017c210d2016203d7c211620054180016a2205202a470d000b0b0240200c42ffffff0f83500d00201410390b201542003703002012420037030020094200370300200142003703b008200141a80c6a418bb4c400411310f2012009200f290000370300200120012900a80c3703b008200141a80c6a419eb4c400410e10f2012029200f290000370000200820012900a80c370000200120163703a80c200141b0086a4120200141a80c6a410810a302201341686a2113201041186a2110200221052002201d470d000c080b0b1034000b200f200141a80c6a410c6a290200370300200120012902ac0c3703b805200141013a00d804024041002802a8fe4a450d0020014188056a410c6a41283602002001411336028c052001200141b8056a360290052001200141d8046a3602880541002802a4fe4a210541002802a0fe4a210241002802acfe4a2104200141c00a6a4202370300200141e40a6a41a996c300ad4280808080f00e84370200200141d80a6a419496c300ad4280808080d00284370300200141d00a6a4202370300200141b80a6a410c360200200141cc0a6a20014188056a360200200141f895c3003602bc0a20014281808080e0263702ec0a200141003602e00a2001418896c3003602b40a200141013602b00a200241f4ddca00200441024622041b200141b00a6a200541b0a7c00020041b28021011030020012d00d804210e0b024020012802b8054102470d00200141c0056a280200450d0020012802bc0510390b0240200141c8096a2802002205450d00200541186c210220012802c009410c6a210503400240200528020041ffffff0f71450d002005417c6a28020010390b200541186a2105200241686a22020d000b0b200141c4096a2802002205450d00200541186c450d0020012802c00910390b2001200e3a00b00841a8cdc4004119200141b0086a41c4cdc40041d4cdc400103d000b2012ad42ffffff0783420886201dad42ff018384210d202021150b2010410874201141ff01717221050b024020012802bc0541ffffff0f71450d00202510390b200141b0086a410c6a2005360200200120023602b00820012015ad422086200d843702b408200141003a00a807024041002802a8fe4a450d0020014188056a410c6a41283602002001411336028c052001200141b0086a360290052001200141a8076a3602880541002802a4fe4a210541002802a0fe4a210241002802acfe4a2104200141b80c6a4202370300200141dc0c6a41a996c300ad4280808080f00e84370200200141d00c6a419496c300ad4280808080d00284370300200141c80c6a4202370300200141b00c6a410c360200200141c40c6a20014188056a360200200141f895c3003602b40c20014281808080e0263702e40c200141003602d80c2001418896c3003602ac0c200141013602a80c200241f4ddca00200441024622041b200141a80c6a200541b0a7c00020041b28021011030020012802b00821020b024020024102470d00200141b8086a280200450d0020012802b40810390b4180cdc40041154198cdc4001065000b201d2002460d000340200241186a210502402002410c6a28020041ffffff0f71450d00200241086a28020010390b20052102201d2005470d000b0b0240202f450d00202f41186c450d00202e10390b20012903d009213e200141a80c6a41106a2202200141a80b6a10b204200141b0086a41186a200141d00c6a290300220d370300200141b0086a41106a200141a80c6a41206a2903002216370300200141b0086a41086a2205200141a80c6a41186a2209290300220c37030020012002290300223d3703b008200141a8076a41186a200d370300200141a8076a41106a220f2016370300200141a8076a41086a2210200c3703002001203d3703a807200141c10c6a200d370000200141b90c6a2016370000200141b10c6a200c3700002001203d3700a90c200141023a00a80c200141a80b6a200141a80c6a108d08200141bb086a200141a80b6a41086a280200360000200120012903a80b3700b308200141b40c6a200141b7086a290000370000200141c28a95b2043600a90c200141023a00a80c200120012900b0083700ad0c200141a80c6a1081052009420037030020024200370300200141a80c6a41086a22044200370300200142003703a80c200141b0086a418bb4c400411310f20120042005290000370300200120012900b0083703a80c200141b0086a419eb4c400410e10f201200341086a220e2005290000370000200320012900b0083700002001203e3703b008200141a80c6a4120200141b0086a410810a302200942003703002002420037030020044200370300200142003703a80c200141b0086a418bb4c400411310f20120042005290000370300200120012900b0083703a80c200141b0086a41acb7c400410810f201200e2005290000370000200320012900b008370000412010382205450d00200520012903a807370000200541186a200141a8076a41186a290300370000200541106a200f290300370000200541086a2010290300370000200141a80c6a41202005412010a302200510392000109b02210d200141b00d6a2400427f200d203f203e7b2216203f2016561b42c0b2cd3b7e4290e59083017c22167c220d200d2016541b0f0b1030000bd60201067f230041c0006b22022400200241086a200110a70a200241086a41106a200241086a41086a200228020822034101461b29030010182104200241206a41186a22054200370300200241206a41106a22064200370300200241206a41086a22074200370300200242003703202007200441086a2900003703002006200441106a2900003703002005200441186a2900003703002002200429000037032020041039200041186a2005290300370000200041106a2006290300370000200041086a20072903003700002000200229032037000002402003450d002002280210450d00200228020c10390b20012802002105024020012802082204450d002004410c6c21002005210403400240200441046a280200450d00200428020010390b2004410c6a2104200041746a22000d000b0b0240200141046a2802002204450d002004410c6c450d00200510390b200241c0006a24000bea070e017f017e017f017e017f017e017f017e017f047e017f017e017f0c7e200041003a002c200041013602282000200128020c2202ad220320012802002204410174ad22057e20012802082206ad220720012802042208410174ad22097e7c2001280218220aad220b200b7e2002410174ad220c2001350224220d7e7c20012802102202410174ad220e2001280220220fad22107e7c20012802142211410174ad2212200128021c2201ad22137e7c200c20107e2006410174ad2214200d7e7c200e20137e7c2012200b7e7c201420107e2009200d7e7c200c20137e7c200e200b7e7c2011ad221520157e7c200920107e2005200d7e7c201420137e7c200c200b7e7c200e20157e7c2216421a887c2217421a887c2218421a887c221942ffffff1f83221a420a867c200e200d7e200a410174ad221b20137e7c201220107e7c2019421a887c221942ffffff1f83221c4290fa007e7c200720057e2008ad220e200e7e7c201842ffffff1f832218420a867c201a4290fa007e7c201742ffffff1f832217420a86200e20057e7c20174290fa007e2004ad220e200e7e7c2217421a887c20184290fa007e7c2218421a887c221a421a887c221da741ffffff1f7136020c2000200320097e200720077e7c2002ad220e20057e7c201c420a867c201b20107e201320137e7c2012200d7e7c2019421a887c220742ffffff1f8322124290fa007e7c201d421a887c2219a741ffffff1f713602102000200e20097e200320147e7c201520057e7c2012420a867c201b200d7e2001410174ad221220107e7c2007421a887c220742ffffff1f83221b4290fa007e7c2019421a887c2219a741ffffff1f713602142000200b20057e200320037e7c200e20147e7c201520097e7c201b420a867c2012200d7e201020107e7c2007421a887c220342ffffff1f8322074290fa007e7c2019421a887c2212a741ffffff1f713602182000200b20097e201320057e7c200e200c7e7c201520147e7c2007420a867c2003421a88200d200f410174ad7e7c220342ffffff1f8322074290fa007e7c2012421a887c2212a741ffffff1f7136021c2000201320097e201020057e7c200b20147e7c200e200e7e7c2015200c7e7c2007420a867c2003421a88200d200d7e7c220d42ffffff1f8322104290fa007e7c2012421a887c2205a741ffffff1f713602202000200d421a88220d4290fa007e201642ffffff1f837c2010420a867c2005421a887c2210a741ffffff017136022420002010421688200d420e867c220d42d1077e201742ffffff1f837c2210a741ffffff1f713602002000200d420686201842ffffff1f837c2010421a887c220d421a88201a42ffffff1f837c3e02082000200da741ffffff1f713602040be909011b7e200235020021032001350200210420013502242105200235020421062001350220210720023502082108200135021c2109200235020c210a2001350218210b2002350210210c2001350214210d2002350214210e2001350210210f20023502182110200135020c2111200235021c211220013502082113200235022021142001350204211520023502242116200041003a002c200041013602282000200820157e200a20047e7c200620137e7c200320117e7c200f20147e201120167e7c200d20127e7c200b20107e7c2009200e7e7c2007200c7e7c2005200a7e7c201120147e201320167e7c200f20127e7c200d20107e7c200b200e7e7c2009200c7e7c2007200a7e7c200520087e7c201320147e201520167e7c201120127e7c200f20107e7c200d200e7e7c200b200c7e7c2009200a7e7c200720087e7c200520067e7c201420157e201620047e7c201220137e7c201020117e7c200e200f7e7c200c200d7e7c200a200b7e7c200820097e7c200620077e7c200320057e7c2217421a887c2218421a887c2219421a887c221a42ffffff1f83221b420a867c200d20147e200f20167e7c200b20127e7c200920107e7c2007200e7e7c2005200c7e7c201a421a887c221a42ffffff1f83221c4290fa007e7c200620157e200820047e7c200320137e7c201942ffffff1f832219420a867c201b4290fa007e7c200320157e200620047e7c201842ffffff1f832218420a867c20184290fa007e200320047e7c2218421a887c20194290fa007e7c2219421a887c221b421a887c221da741ffffff1f7136020c2000200a20157e200c20047e7c200820137e7c200620117e7c2003200f7e7c201c420a867c200b20147e200d20167e7c200920127e7c200720107e7c2005200e7e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602102000200c20157e200e20047e7c200a20137e7c200820117e7c2006200f7e7c2003200d7e7c201c420a867c200920147e200b20167e7c200720127e7c200520107e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602142000200e20157e201020047e7c200c20137e7c200a20117e7c2008200f7e7c2006200d7e7c2003200b7e7c201c420a867c200720147e200920167e7c200520127e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602182000201020157e201220047e7c200e20137e7c200c20117e7c200a200f7e7c2008200d7e7c2006200b7e7c200320097e7c201c420a867c200520147e200720167e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f7136021c2000201220157e201420047e7c201020137e7c200e20117e7c200c200f7e7c200a200d7e7c2008200b7e7c200620097e7c200320077e7c201c420a867c201a421a88200520167e7c220342ffffff1f8322044290fa007e7c201d421a887c2205a741ffffff1f7136022020002003421a8822034290fa007e201742ffffff1f837c2004420a867c2005421a887c2204a741ffffff0171360224200020044216882003420e867c220342d1077e201842ffffff1f837c2204a741ffffff1f7136020020002003420686201942ffffff1f837c2004421a887c2203421a88201b42ffffff1f837c3e020820002003a741ffffff1f713602040ba00401127f20002802242201411676220241067420002802046a200241d1076c20002802006a2203411a766a2204411a7620002802086a220541ffffff1f7121022005411a76200028020c6a220641ffffff1f7121072006411a7620002802106a220841ffffff1f7121092008411a7620002802146a220a41ffffff1f71210b200a411a7620002802186a220c411a76200028021c6a220d41ffffff1f71210e200d411a7620002802206a220f41ffffff1f7121100240200f411a76200141ffffff01716a2201411676200341ffffff1f71220341d1076a2211411a76200441ffffff1f7122046a221241bfffff1f4b2006200571200871200a71200c41ffffff1f71220571200d71200f7141ffffff1f46200141ffffff01467171722206450d00201141ffffff1f712103201220064106746a220641ffffff1f7121042006411a7620026a220641ffffff1f7121022006411a7620076a220641ffffff1f7121072006411a7620096a220641ffffff1f7121092006411a76200b6a220641ffffff1f71210b2006411a7620056a220641ffffff1f7121052006411a76200e6a220641ffffff1f71210e2006411a7620106a220641ffffff1f7121102006411a7620016a41ffffff017121010b200041013a002c2000410136022820002001360224200020103602202000200e36021c200020053602182000200b360214200020093602102000200736020c2000200236020820002004360204200020033602000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42187e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141186c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141186e360200200241206a24000f0b1034000b9e0402067f017e20004201370200200041086a22024100360200024002400240024020012d00000e03000102030b2000410041011081012000280200200228020022036a41013a00002002200341016a360200200141106a28020021022000200141186a280200220310d2010240024020030d00200041086a28020021040c010b200341216c2105200041086a22062802002104200041046a210703400240200728020020046b41204b0d00200020044121108101200628020021040b200028020020046a22032002290000370000200341206a200241206a2d00003a0000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a2900003700002006200441216a2204360200200241216a21022005415f6a22050d000b0b200129030821080240200041046a28020020046b41074b0d00200020044108108101200041086a28020021040b200028020020046a2008370000200041086a200441086a3602000f0b20004100410110810120002802002204200228020022036a41023a00002002200341016a2203360200200141046a28020021020240200041046a28020020036b41034b0d00200020034104108101200041086a2802002103200028020021040b200420036a2002360000200041086a200341046a3602000f0b2000410041011081012000280200200228020022036a41033a00002002200341016a360200200141016a200010ff020b0b130020004104360204200041bcd1c4003602000b3400200041a280c40036020420004100360200200041146a4101360200200041106a41ccdbc400360200200041086a42043702000b9b0301087f230041106b2203240020032000200220016b1091080240024020032802004101470d00200341086a2802000d014180eaca0041114194eaca001035000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b024002400240200620044f0d00034020022001460d02200720066a20012d00003a0000200141016a21012004200641016a2206470d000b200421060b2005200636020020012002460d012000410c6a2108200041056a2109034002400240200028020022074125490d00200028020c210620002802082105200821040c010b200721062000210420092105412421070b20012d0000210a024020062007470d00200320004101109108024020032802004101470d00200341086a2802000d054180eaca0041114194eaca001035000b200028020c210620002802082105200821040b200520066a200a3a00002004200428020041016a3602002002200141016a2201470d000c020b0b200520063602000b200341106a24000f0b1030000bbe0301057f02400240200128020022034125490d002001410c6a2802002104200321050c010b41242105200321040b0240200520046b2002490d00200041003602000f0b024002400240200420026a22022004490d004100417f2002417f6a677620024102491b220441016a22052004490d000240024020034125490d002001410c6a2802002104200141086a2802002102200321060c010b200141056a210241242106200321040b200420054b0d0102400240200541244b0d000240200341244b0d00200041003602000f0b200141003a0004200141056a2002200410c30a1a20012004360200200210390c010b20062005460d0020051038210702400240200341244b0d0002402007450d0020072002200410c30a1a0c020b2000200536020420004101360200200041086a41013602000f0b2007450d042007200220052006200620054b1b10c30a1a200210390b200141013a0004200120053602002001410c6a2004360200200141086a20073602000b200041003602000f0b2000200536020420004101360200200041086a41003602000f0b41fbeaca004120419cebca001035000b2000200536020420004101360200200041086a41013602000b830102017f037e230041d0036b22022400420021030240024002402001280200410a470d0020024200370308200141086a2903002104200241086a10af0120044200510d010b0c010b200141d8036a2903002105200141d0036a2903002104420121030b2000200437030820002003370300200041106a2005370300200241d0036a24000bcd1203027f087e067f230041a00d6b22042400024002402002200384500d00200441d8006a200110dd0220044198026a20042802582205200428026010e102420021064200210742002108420021094200210a4200210b4200210c4200210d02402004290398024201520d00200441d8026a2903002107200441d0026a2903002106200441c8026a2903002109200441c0026a2903002108200441b8026a290300210b200441b0026a290300210a200441a8026a290300210d20042903a002210c0b0240200428025c450d00200510390b0240024002400240200c2008200a8484200d2009200b848484500d00200441386a210e200441286a21050c010b2006200784500d01200441286a41106a210e200441286a21050b200441d0006a2007370300200441286a41186a200937030020042006370348200420083703382004200a3703282004200b370330200441e8016a41186a200e41186a290300370300200441e8016a41106a200e41106a290300370300200441e8016a41086a200e41086a2903003703002004200e2903003703e8014100210f410121100c010b4200210c20044180026a4200370300200441e8016a41106a4200370300200441f0016a4200370300200442003703e8014100211020024280c8afa0255441002003501b0d014101210f200441286a21054200210d4200210a4200210b0b4200210642002003200c20027c2209200c54220e200d20037c200ead7c2208200d542008200d511b220e1b210342002002200e1b2102200fad210702400240427f200c2009200e1b2209200a7c220c200c2009542211200d2008200e1b220d200b7c2011ad7c220c200d54200c200d511b220e1b220842ffc7afa02556427f200c200e1b220c420052200c50220e1b0d002009200a84200d200b848422065021122006420052ad21060c010b20044198026a41186a200441e8016a41186a29030037030020044198026a41106a200441e8016a41106a29030037030020044198026a41086a200441e8016a41086a290300370300200420042903e80137039802410121120b2005200a3703002005200b370308200541286a20044198026a41186a290300370300200541206a20044198026a41106a290300370300200541186a200441a0026a290300370300200520042903980237031020044190016a2003370300200441d8006a41206a22132008370300200441d8006a41286a200c370300200441d8006a41106a200d3703002004200937036020042007370358200420063703702004200237038801024002400240024002400240200f200842ffc7afa02556200c420052200e1b221171450d002004200136029802200120044198026a10f0020c010b024020104101732011720d002004200136029802200120044198026a10e00241ff0171220f4103460d01200f0e03020103020b20102011724101470d010b20044198016a41286a200541286a29030037030020044198016a41206a200541206a29030037030020044198016a41186a200541186a29030037030020044198016a41106a200541106a29030037030020044198016a41086a200541086a2903003703002004200529030037039801200441c8016a200110dd0220044198026a20042802c801220520042802d001220f10e102024002402004290398024201510d00200441d8016a41086a4200370300200442003703d8010c010b200441d8016a41086a200441e8026a2903003703002004200441e0026a2903003703d8010b4200210a02400240200842ffc7afa02556200c420052200e1b0d00200441c0026a4200370300200441b8026a4200370300200441b0026a4200370300200441a8026a4200370300200441a0026a420037030020044200370398024200210d0c010b20044198026a41286a20044198016a41286a29030037030020044198026a41206a20044198016a41206a29030037030020044198026a41186a20044198016a41186a29030037030020044198026a41106a20044198016a41106a29030037030020044198026a41086a20044198016a41086a2903003703002004200429039801370398022009210a0b200441e8016a41286a20044198026a41286a220e290300220c370300200441e8016a41206a20044198026a41206a2211290300220b370300200441e8016a41186a20044198026a41186a22102903002202370300200441e8016a41106a20044198026a41106a22122903002203370300200441e8016a41086a20044198026a41086a22132903002208370300200420042903980222093703e8012012200d3703002010200937030020112008370300200e2003370300200441c8026a200237030020044198026a41386a200b370300200441d8026a200c3703002004200a3703a002200441e0026a20042903d801370300200441e8026a200441d8016a41086a29030037030020044201370398022005200f201310e202024020042802cc01450d00200510390b200441d8006a41106a290300210d200441d8006a41286a290300210c200441d8006a41386a29030021032004290360210920042903782108200429038801210220042903582107200429037021060b024020074201520d00200441d0026a200d370300200441c8026a2009370300200441a1026a200129000037000020044198026a41086a41003a0000200441b9026a200141186a290000370000200441b1026a200141106a290000370000200441a9026a200141086a290000370000200441023a00980220044198026a10fc010b200650450d014200210d0c020b024020120d00200420133602980220044198026a10a40620044190016a290300210320042903880121020b2002200310f8040c020b20044198026a41186a200141186a29000037030020044198026a41106a200141106a29000037030020044198026a41086a200141086a29000037030020042001290000370398024201210d0b200441086a41186a20044198026a41186a2205290300220a370300200441086a41106a20044198026a41106a2201290300220b370300200441086a41086a20044198026a41086a290300220937030020042004290398022206370308200441c8026a200c370300200441c0026a220e2008370300200120093703002005200b370300200441b8026a200a3703002004200d37039802200420063703a00220044198026a10ec07200429039802500d012004200e360258200441d8006a10a4060c010b42002102420021030b2000200237030020002003370308200441a00d6a24000bf20202037f017e230041d0006b220324002003200236020420032001360200200341086a2001200210e40202400240200328020822010d00200041023a00200c010b200328020c2104024002400240200341106a2802002205450d00410021020240024020012d00000e020100020b410121020b2005417f6a4104490d002005417b6a4110490d002005416b6a410b4b0d010b2003420037021c2003410028029cde4a3602182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c200341e4b4c4003602382003200341286a360248200341346a41fc86ca00200341386a103b1a2003280218200328022010e7020240200328021c450d00200328021810390b410221020c010b200128000121052001410d6a29000021062000200129000537030020002005360210200020063703082000200128001d36021c200020012900153702140b200020023a00202004450d00200110390b200341d0006a24000bd40401087f230041e0006b220224002002412036020c20022001360208200241106a2001412010e4020240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10ad010240024020022802000d0020022802042205200228022422014103762206200620054b1b22074103742206417f4c0d030240024020070d00410421080c010b200610382208450d050b41002106200241003602502002200736024c200220083602480240024002402005450d00034020014104490d032001417c6a4104490d022002280220220728000021092002200741086a3602202007280004210702402006200228024c470d00200241c8006a2006410110960620022802482108200228025021060b200141786a2101200820064103746a22062007360204200620093602002002200228025041016a22063602502005417f6a22050d000b200228024821080b2008450d022000200229024c370204200020083602000c030b2001417c6a21010b20022001360224200228024c41ffffffff0171450d00200228024810390b2002420037022c2002410028029cde4a3602282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241386a360258200241c4006a41fc86ca00200241c8006a103b1a2002280228200228023010e7020240200228022c450d00200228022810390b200041003602000b2004450d00200310390b200241e0006a24000f0b1034000b1030000bd30102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad422c7e2205422088a74541027421022005a721040240024020010d00200341003602100c010b200341186a410436020020032001412c6c360214200320002802003602100b200320042002200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a2001412c6e360200200341206a24000f0b1034000bfa0303047f017e037f230041e0006b220324002003200236020c20032001360208200341106a2001200210e40202400240200328021022010d00200041003602080c010b20032802142102024002400240200341186a28020022044104490d002004417c714104460d00200128000021052003200441786a3602242003200141086a36022020012800042106200341c8006a200341206a10e50220032802482204450d00200329024c2107200341c8006a200341206a10e502024020032802482208450d00200328024c2109200328022441044f0d02200941ffffff3f71450d00200810390b200742ffffff3f83500d00200410390b2003420037022c2003410028029cde4a3602282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c200341e4b4c4003602482003200341386a360258200341c4006a41fc86ca00200341c8006a103b1a2003280228200328023010e7020240200328022c450d00200328022810390b200041003602080c010b200341d0006a280200210a2000200737020c200020043602082000200636020420002005360200200041206a200328022022042800003602002000411c6a200a360200200041186a2009360200200041146a20083602002003200441046a3602200b2002450d00200110390b200341e0006a24000b8d0701147f230041f0006b220324002003200236020c20032001360208200341106a2001200210e4020240024002400240200328021022040d00200041003602000c010b200328021421052003200341186a280200360224200320043602202003200341206a10ad010240024020032802000d0020032802042206200328022422074105762201200120064b1b22014105742202417f4c0d030240024020010d00410121080c010b200210382208450d050b41002109200341003602382003200136023420032008360230024002402006450d00200341c8006a410472210a200341e1006a210b200341da006a210c200341d3006a210d4100210e0340200e41016a210e41002101034020072001460d03200a20016a2003280220220f2d00003a00002003200141016a22023602482003200f41016a3602202002210120024120470d000b200341ec006a41026a220f200d41026a2d00003a0000200341c4006a41026a2210200c41026a2d00003a00002003200a2f01003b01282003200d2f00003b016c2003200c2f00003b01442003200a41026a2d00003a002a2003280268211120032802642112200328005d211320032801562114200328004f2115200341c0006a41026a2216200b41026a2d00003a00002003200b2f00003b0140024020092003280234470d00200341306a200910fb0620032802302108200328023821090b200720026b2107200820094105746a220120032f01283b0000200141026a20032d002a3a0000200141096a200f2d00003a0000200120032f016c3b0007200141106a20102d00003a0000200120032f01443b000e200120153600032001201436000a20012013360011200141176a20162d00003a0000200120032f01403b00152001201136001c200120123600182003200941016a2209360238200e2006470d000b200328023021080b2008450d0120002003290234370204200020083602000c020b20034100360224200328023441ffffff3f71450d00200328023010390b200342003702342003410028029cde4a3602302003410c36022c2003200341086a3602282003200341306a36026c200341dc006a41013602002003420137024c200341e4b4c4003602482003200341286a360258200341ec006a41fc86ca00200341c8006a103b1a2003280230200328023810e70202402003280234450d00200328023010390b200041003602000b2005450d00200410390b200341f0006a24000f0b1034000b1030000bd00102027f017e230041206b220324000240200120026a22022001490d00200041046a280200220141017422042002200420024b1b22024104200241044b1bad42217e2205a721022005422088a74521040240024020010d00200341003602100c010b200341186a41013602002003200141216c360214200320002802003602100b200320022004200341106a1049200341086a2802002101024020032802004101470d002001450d011030000b20002003280204360200200041046a200141216e360200200341206a24000f0b1034000bcf0e04047f017e0f7f017e23004180026b22022400200241286a200110ad010240024020022802280d0002400240200228022c22032001280204220441246e2205200520034b1bad42247e2206422088a70d002006a72205417f4c0d000240024020050d00410421070c010b200510382207450d020b20024100360238200220073602302002200541246e36023402402003450d0020024190016a4104722108200241e2016a2109200241cf016a210a200241f8016a210b200241ad016a210c20024190016a41106a210d4100210e4100210f0240024003402004450d01200128020022102d0000210520012004417f6a22113602042001201041016a3602000240024002400240024002400240024020050e080009010903040205090b200241086a200110ad0120022802080d0820012802042204200228020c2205490d082005417f4c0d0b0240024020050d00410121120c010b200510382212450d0d20124100200510c50a1a0b201220012802002210200510c30a21112001200420056b3602042001201020056a3602002011410876211341052111200521040c050b41002105417e2114034020112005460d08201020056a221541016a2d000021122001200420146a3602042001201541026a360200200820056a20123a00002002200541016a2215360290012014417f6a21142015210520154120470d000b2002200d2902003703c8012002200d41056a2900003700cd0120022802940121152002290398012116200b41036a200d41036a280000360000200b200d280200360200200241dc016a41046a200a41046a2f00003b0100200941036a200c41036a2800003600002009200c280000360000200220163702f001200220153602ec012002200a2800003602dc0120022900f701210620022800ef0121122002200241dc016a41056a2900003700bd01200220022902dc013703b801200220022900bd0137008501200220022903b80137038001200220022900850137007520022002290380013703702002200229007537006520022002290370370360200241d0006a41086a200241e0006a41086a29030037030020022002290360370350201241087621132016421888a721042006422088a72114410021110c050b200110d8012206a74101710d06200241206a200110ad0120022802200d062001280204220520022802242214490d062014417f4c0d09410121114101210402402014450d00201410382204450d0b20044100201410c50a1a0b200420012802002215201410c30a1a2001200520146b3602042001201520146a36020020064280808080f01f83422088a7211220064280feffffff1f83420888a72115201421050c030b200110d8012206a74101710d05200241106a200110ad0120022802100d052001280204220520022802142214490d052014417f4c0d080240024020140d00410121040c010b201410382204450d0a20044100201410c50a1a0b200420012802002215201410c30a1a2001200520146b3602042001201520146a36020020064280808080f01f83422088a7211220064280feffffff1f83420888a7211541022111201421050c020b200110d8012206a74101710d04200241186a200110ad0120022802180d0420012802042205200228021c2214490d042014417f4c0d070240024020140d00410121040c010b201410382204450d0920044100201410c50a1a0b200420012802002215201410c30a1a2001200520146b3602042001201520146a36020020064280808080f01f83422088a7211220064280feffffff1f83420888a7211541032111201421050c010b2011450d0320102d0001210520012004417e6a3602042001201041026a36020020050d0320024190016a200110ef0720022802900122124102460d032002280298012105200228029401210441042111410021130b2013410874201241ff01717221122014ad4220862005ad8421060b200f41016a210f200241c0006a41086a2210200241d0006a41086a290300370300200220022903503703400240200e2002280234470d00200241306a200e10c504200228023021072002280238210e0b2007200e41246c6a2205200637000c2005200436000820052012360004200520153b0001200520113a0000200541036a20154110763a0000200520022903403700142005411c6a20102903003700002002200228023841016a220e360238200f2003460d02200128020421040c000b0b200228023021140240200e450d00200e41246c21052014210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010390c030b2001410c6a280200450d02200141086a28020010390c020b2001410c6a280200450d01200141086a28020010390c010b200141086a280200450d00200141046a28020010390b200141246a21012005415c6a22050d000b0b20022802342201450d04200141246c450d04201410390c040b200228023021070b2007450d0220002002290234370204200020073602000c030b1034000b1030000b200041003602000b20024180026a24000bd20603047f017e087f230041e0006b220224002002412036021420022001360210200241186a2001412010e40202400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10ad010240024020022802080d0002400240200228020c2205200228022c411c6e2201200120054b1bad421c7e2206422088a70d002006a72207417f4c0d000240024020070d00410421080c010b200710382208450d020b41002101200241003602402002200836023820022007411c6e36023c02402005450d000340200241c8006a200241286a10bb030240024020022802482207450d0020022802502109200228024c210a200241c8006a200241286a10bb0302402002280248220b450d00200228024c210c200228022c220d41044f0d02200c41ffffff3f71450d00200b10390b200a41ffffff3f71450d00200710390b2002280238210702402001450d002001411c6c21052007210103400240200141046a28020041ffffff3f71450d00200128020010390b0240200141106a28020041ffffff3f71450d002001410c6a28020010390b2001411c6a2101200541646a22050d000b0b200228023c2201450d052001411c6c450d05200710390c050b2002280250210e2002200d417c6a36022c20022002280228220d41046a360228200d280000210d02402001200228023c470d00200241386a200110820820022802382108200228024021010b20082001411c6c6a2201200a36020420012007360200200141186a200d360200200141146a200e360200200141106a200c3602002001410c6a200b360200200141086a20093602002002200228024041016a22013602402005417f6a22050d000b200228023821080b2008450d022000200229023c370204200020083602000c030b1034000b1030000b2002420037023c2002410028029cde4a3602382002410c3602342002200241106a3602302002200241386a360244200241dc006a41013602002002420137024c200241e4b4c4003602482002200241306a360258200241c4006a41fc86ca00200241c8006a103b1a2002280238200228024010e7020240200228023c450d00200228023810390b200041003602000b2004450d00200310390b200241e0006a24000bc60201057f230041106b22022400024002402001280208220341216c41046a2204417f4c0d00200128020021010240024020040d00410121050c010b200410382205450d020b2002410036020820022004360204200220053602002002200310d2010240024020030d0020022802002106200228020821030c010b200341216c21052002280208210303400240200228020420036b41204b0d00200220034121108101200228020821030b2002280200220620036a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a290000370000200441206a200141206a2d00003a00002002200341216a2203360208200141216a21012005415f6a22050d000b0b200041202006200310a30202402002280204450d00200610390b200241106a24000f0b1034000b1030000bdd0201037f230041106b22042400200441003602082004420137030020044100410810810120042802002205200428020822066a20013700002004200641086a22063602080240200428020420066b41074b0d0020042006410810810120042802002105200428020821060b200520066a20023700002004200641086a22063602080240024002400240200341ff01710e03000102030b024020042802042006470d0020042006410110810120042802002105200428020821060b200520066a41003a0000200641016a21060c020b024020042802042006470d0020042006410110810120042802002105200428020821060b200520066a41013a0000200641016a21060c010b024020042802042006470d0020042006410110810120042802002105200428020821060b200520066a41023a0000200641016a21060b200041202005200610a30202402004280204450d00200510390b200441106a24000bd20401057f230041106b2203240020034100360208200342013703002002280200210420034100410410810120032802002205200328020822066a20043600002003200641046a2204360208200228020421060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a360208200228020821042003200241106a280200220510d20102402005450d00200541057421072003280208210503400240200328020420056b411f4b0d00200320054120108101200328020821050b200328020020056a22062004290000370000200641086a200441086a290000370000200641106a200441106a290000370000200641186a200441186a2900003700002003200541206a2205360208200441206a2104200741606a22070d000b0b2002280214210420032002411c6a280200220510d2010240024020050d00200328020821050c010b200541057421072003280208210503400240200328020420056b411f4b0d00200320054120108101200328020821050b200328020020056a22062004290000370000200641086a200441086a290000370000200641106a200441106a290000370000200641186a200441186a2900003700002003200541206a2205360208200441206a2104200741606a22070d000b0b2002280220210702402003280204220620056b41034b0d0020032005410410810120032802042106200328020821050b2003280200220420056a2007360000200020012004200541046a10a30202402006450d00200410390b200341106a24000ba60201057f230041106b2202240002400240200128020822034105744104722204417f4c0d0020012802002101200410382205450d012002410036020820022004360204200220053602002002200310d2010240024020030d0020022802002106200228020821030c010b200341057421052002280208210303400240200228020420036b411f4b0d00200220034120108101200228020821030b2002280200220620036a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200341206a2203360208200141206a2101200541606a22050d000b0b200041202006200310a30202402002280204450d00200610390b200241106a24000f0b1034000b1030000bda0303047f027e017f230041106b22032400200341003602082003420137030020022d0020210420034100410110810120032802002205200328020822066a20043a00002003200641016a2204360208200228021021060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a2204360208200241086a29030021072002290300210802402003280204220520046b410f4b0d0020032004411010810120032802042105200328020821040b2003280200220620046a22092007370008200920083700002003200441106a2204360208200228021421090240200520046b41034b0d002003200441041081012003280204210520032802002106200328020821040b200620046a20093600002003200441046a2204360208200228021821090240200520046b41034b0d0020032004410410810120032802002106200328020821040b200620046a20093600002003200441046a2204360208200228021c210602402003280204220520046b41034b0d0020032004410410810120032802042105200328020821040b2003280200220220046a2006360000200020012002200441046a10a30202402005450d00200210390b200341106a24000bf30103017f017e027f230041106b2202240020024100360208200242013703002001290300210320024100410810810120022802002204200228020822056a20033700002002200541086a2205360208200129030821030240200228020420056b41074b0d0020022005410810810120022802002104200228020821050b200420056a20033700002002200541086a22053602082001290310210302402002280204220420056b41074b0d0020022005410810810120022802042104200228020821050b2002280200220120056a2003370000200041202001200541086a10a30202402004450d00200110390b200241106a24000b9f0503047f027e017f230041106b2203240020034100360208200342013703002002280240210420034100410410810120032802002205200328020822066a20043600002003200641046a2204360208200228024421060240200328020420046b41034b0d0020032004410410810120032802002105200328020821040b200520046a20063600002003200441046a2205360208200228024821060240200328020420056b41034b0d00200320054104108101200328020821050b2003280200220420056a20063600002003200541046a2205360208200228024c21060240200328020420056b41034b0d0020032005410410810120032802002104200328020821050b200420056a20063600002003200541046a2206360208200241086a29030021072002290300210802402003280204220520066b410f4b0d002003200641101081012003280200210420032802042105200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241186a2903002107200229031021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241286a2903002107200229032021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a22092007370008200920083700002003200641106a2206360208200241386a2903002107200229033021080240200520066b410f4b0d002003200641101081012003280204210520032802002104200328020821060b200420066a2202200737000820022008370000200020012004200641106a10a30202402005450d00200410390b200341106a24000bb5a00106017f017e0d7f017e497f397e23004180356b2208240002402005a70d00200841186a2003109707200828021845ad2105200829032021060b024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402005a7450d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402004290300220920067d22052009560d0020042005370300200521090c010b02402002450d0002400240024020032d00000e03010200030b200341186a280200450d02200341106a280200220a2d00004107470d02200a290390042006540d020c030b200341186a280200450d01200341106a280200220a2d00004107470d01200a290390042006540d010c020b200341186a280200450d00200341106a280200220a2d00004107470d00200a2903900420065a0d010b41a00e1038220b450d19200b41e9073602e40a200b41013a00e00a200b42013703d80a200b41f80036029c07200b41013a009807200b420137039007200b41ee003602d403200b41013a00d003200b42013703c803200b41e40036020c200b41013a0008200b4201370300200141c0006a210c20014190036a210d200141d8026a210e200141a0026a210f200141e8016a2110200141b0016a2111200141f8006a2112200141086a21134100210a024003400240200b200a6a221428020022152001280200470d004101211602400240024002400240024002400240024002400240024002402015417f6a0e0807000102030405060f0b201441086a201310ee04450d0c201441c0006a200c10ee040d0e0c0c0b201441086a201310ee04450d0b201441c0006a200c10ee04450d0b201441f8006a201210ee04450d0b0c0d0b201441086a201310ee04450d0a201441c0006a200c10ee040d090c0a0b201441086a201310ee04450d09201441c0006a200c10ee04450d09201441f8006a201210ee040d070c090b201441086a201310ee04450d08201441c0006a200c10ee040d050c080b201441086a201310ee04450d07201441c0006a200c10ee04450d07201441f8006a201210ee040d030c070b201441086a201310ee04450d06201441c0006a200c10ee040d010c060b201441086a201310ee04450d050c070b201441f8006a201210ee04450d04201441b0016a201110ee04450d04201441e8016a201010ee04450d04201441a0026a200f10ee04450d04201441d8026a200e10ee04450d0420144190036a200d10ee04450d040c060b201441b0016a201110ee04450d03201441e8016a201010ee04450d03201441a0026a200f10ee04450d03201441d8026a200e10ee04450d030c050b201441f8006a201210ee04450d02201441b0016a201110ee04450d02201441e8016a201010ee04450d02201441a0026a200f10ee04450d020c040b201441b0016a201110ee04450d01201441e8016a201010ee04450d010c030b201441f8006a201210ee04450d00201441b0016a201110ee040d020b200a41c8036a220a41a00e470d000b410021160b200b10af01200b41c8036a10af01200b4190076a10af01200b41d80a6a10af01200b10392016450d010b200841e0256a200110ab03200841c0006a41c8036a200341e00710c30a1a200841c0006a200841e0256a41c80310c30a1a20082d0088040e0b0102050703040616161608160b200042013703002000411636020820031081040c3d0b20084198226a200841c0006a41c80310c30a1a20084190046a280200210c2008418c046a280200210320084194046a2802002114200841a8136a41086a200841a0046a280200360200200820084198046a2903003703a813200841881b6a41106a42003703002008420037028c1b2003201441f8036c22156a210b2003210a2014450d39201541887c6a210a200841e0256a4104722113200841c8136a4104722116200321140340024020142802002215410c470d00201441f8036a210a0c3b0b200841e80b6a201441046a41f40310c30a1a200820153602c8132016200841e80b6a41f40310c30a1a02402015417f6a41064b0d0020004201370300200041123602080c110b200841e0256a200841c8136a20084198226a10a40820082802e0252115200841c02d6a201341bc0710c30a1a20154101460d0f200841d01e6a41106a200841c02d6a41106a2902002205370300200841d01e6a41086a200841c02d6a41086a2902002206370300200820082902c02d22093703d01e200841e0256a41106a2005370300200841e0256a41086a2006370300200820093703e025200a41887c6a210a200841881b6a200841e0256a10a508200841c8136a10ac01201441f8036a2214200b470d000c3b0b0b200841e0256a200841c0006a41c80310c30a1a20084190046a28020021152008418c046a280200210b20084194046a280200210a200841e80b6a41086a2214200841a0046a280200360200200820084198046a2903003703e80b0240200a41f8036c0d002008200a3602d013200820153602cc132008200b3602c813200841c02d6a200841c8136a10a608200841e02d6a2014280200360200200841286a41086a200841c02d6a41086a290300370300200841286a41106a200841c02d6a41106a290300370300200820082903e80b22053703d82d200820082903c02d370328200841dc2d6a2902002106200841e0256a10af012005a72103420021054100210b410121044101210c41012113410121164101210a410121140c380b200b2802002114200042013703002000411241072014417f6a4107491b360208200841e80b6a10b301024020082802ec0b2214450d0020144198046c450d0020082802e80b10390b0240200a450d00200a41f8036c2114200b210a0340200a10ac01200a41f8036a210a201441887c6a22140d000b0b02402015450d00201541f8036c450d00200b10390b200841e0256a10af0141002116410121130c320b200841d01e6a200841c0006a41c80310c30a1a20084198226a20084198046a41c80310c30a1a2008418c046a280200220c20084194046a280200220a41f8036c22146a211620084190046a2802002104200c210b200a450d2b201441887c6a2115200841e0256a4104722103200841c8136a4104722113200c210a0340200a41f8036a210b200a2802002214410c460d2c200841e80b6a200a41046a41f40310c30a1a200820143602c8132013200841e80b6a41f40310c30a1a02402014417f6a41064b0d0020004201370300200041123602080c0d0b200841e0256a200841c8136a200841d01e6a20084198226a10a70820082802e025210a200841c02d6a200341bc0710c30a1a200a4101460d0b200841881b6a41106a220a200841c02d6a41106a290200370300200841881b6a41086a200841c02d6a41086a290200370300200820082902c02d3703881b200841881b6a1085060240200a280200220a450d00024020082802941b2214450d000340200a2802b02b210a2014417f6a22140d000b0b200841003602e8252008200a3602e425200841003602e0252008200828029c1b3602ec25200841e0256a10cc030b201541887c6a2115200841c8136a10ac01200b210a200b2016470d000c2d0b0b200841881b6a200841c0006a41c80310c30a1a20084190046a280200210c2008418c046a280200211320084194046a2802002103200841d01e6a200841a8046a41c80310c30a1a2013200341f8036c6a2115200841a0046a28020021022008419c046a280200210420084198046a280200211220084198226a200841d01e6a10a808200841e0256a41047221162013210b03400240200b2015470d00200841e80b6a200841d01e6a41c80310c30a1a200841e0136a2002360200200841dc136a2004360200200841d8136a2012360200200841c8136a410c6a2003360200200841d0136a200c360200200820133602cc1341012104200841013a00c813200841e0256a200841e80b6a200841c8136a10a10720082802e025210a200841c02d6a200841e0256a41047241b40710c30a1a200a411b470d0a20084198226a10af01200841881b6a10af0142002105410021034100210c0c2e0b0240200b280200417f6a41064b0d0020004201370300200041123602080c120b200841e0256a200b200841881b6a200841d01e6a10a70820082802e025210a200841c02d6a201641bc0710c30a1a200a4101460d10200841c8136a41106a220a200841c02d6a41106a290200370300200841c8136a41086a200841c02d6a41086a290200370300200820082902c02d3703c813200841c8136a1085060240200a280200220a450d00024020082802d4132214450d000340200a2802b02b210a2014417f6a22140d000b0b200841003602e8252008200a3602e425200841003602e025200820082802dc133602ec25200841e0256a10cc030b200b20084198226a10a908210a200b41f8036a210b200a450d000b20004201370300200041003602080c100b200841c8136a200841c0006a41c80310c30a1a20084190046a28020021032008418c046a280200211620084194046a280200211320084198226a41086a220c200841a0046a280200360200200820084198046a29030037039822201341f8036c2214450d28201620146a2104200841e0256a41047221152016210a03400240200a280200417f6a41064b0d0020004201370300200041123602080c080b0240200a200841c8136a10db050d0020004201370300200041083602080c080b200841e0256a200a10aa0820082802e025210b200841c02d6a201541b40710c30a1a200b411b470d06200a41f8036a210a201441887c6a2214450d280c000b0b20084198226a200841c0006a41c80310c30a1a20084190046a290300210520084189046a2d00002114200841e0256a20084198046a41d00710c30a1a200841c02d6a200841e0256a10ab0820082802c02d220a4125460d10200841e80b6a410472200841c02d6a41047241bc0710c30a1a2008200a3602e80b200841c8136a20084198226a41c80310c30a1a200841c02d6a200841c8136a201410ac0820082802c02d4101460d02200841a8136a41086a200841d42d6a290200370300200841b8136a200841dc2d6a290200370300200841c0136a200841e42d6a2902003703002008200841cc2d6a2902003703a813200841c02d6a41086a280200210b200841ec2d6a280200211420082802c42d2115200841c02d6a200841e80b6a10a006024020082903c02d22062005580d00200042013703002000411336020820142014280200417f6a220b360200200b0d042014280208201428020c2802001102000240201428020c280204450d00201428020810390b201441046a220b200b280200417f6a220b360200200b0d04201410390c040b200841c8136a200841e80b6a41c00710c30a1a024002402014280208200841c8136a201428020c28020c1101000d00200841f01e6a41023a000020142014280200417f6a220a36020042002105200842003703d81e0240200a0d002014280208201428020c2802001102000240201428020c280204450d00201428020810390b201441046a220a200a280200417f6a220a360200200a0d00201410390b200841c8136a10e2030c010b200841c02d6a200841c8136a41c00710c30a1a200841881b6a41086a20082903a813370300200841881b6a41106a200841a8136a41086a290300370300200841881b6a41186a200841a8136a41106a290300370300200841a81b6a200841a8136a41186a2903003703002008200b36028c1b200820153602881b200820143602b01b200841d01e6a200841c02d6a200841881b6a10e303200841d01e6a41106a290300211720082903d81e21050b2004427f200942002006201720062005a71b7d220520052006561b22057c220620062009541b3703000240200841a42d6a280200450d0020082802a02d10390b024020082802e0254125460d00200841e0256a109f060b41002103410121044101210c41012113410021160c2c0b200841c0006a41d0036a28020021162008418c046a280200210b200841f8036a2802002118200841f0036a2802002119200841e8036a280200211a200841d8036a280200211b200841d0036a2d0000211c200841c0036a280200211d200841b8036a280200211e200841b0036a280200211f200841a0036a280200212020084198036a2d0000212120084188036a280200212220084180036a2802002123200841f8026a2802002124200841e8026a2802002125200841e0026a2d0000210e200841d0026a2802002126200841c8026a2802002127200841c0026a2802002128200841b0026a2802002129200841a8026a2d0000210f20084198026a280200212a20084190026a280200212b20084188026a280200212c200841f8016a280200212d200841f0016a2d00002110200841e0016a280200212e200841d8016a280200212f200841d0016a2802002130200841c0016a2802002131200841b8016a2d00002111200841a8016a2802002132200841a0016a280200213320084198016a280200213420084188016a280200213520084180016a2d00002112200841f0006a2802002136200841e8006a2802002137200841e0006a2802002138200841c0006a41106a280200213920082802fc03213a20082802f403213b20082802ec03213c20082802dc03213d20082802d403213e20082802c403213f20082802bc03214020082802b403214120082802a4032142200828029c032143200828028c032144200828028403214520082802fc02214620082802ec02214720082802e402214820082802d402214920082802cc02214a20082802c402214b20082802b402214c20082802ac02214d200828029c02214e200828029402214f200828028c02215020082802fc01215120082802f401215220082802e401215320082802dc01215420082802d401215520082802c401215620082802bc01215720082802ac01215820082802a4012159200828029c01215a200828028c01215b200828028401215c2008280274215d200828026c215e2008280264215f20082802542160200828024c210d20082d00482102200829034021090240200841c0006a41d4036a280200220a450d00200a41f8036c21154100210a0340024002400240024002400240024002400240200b200a6a22142802000e0b0808080800010203040506070b201441086a280200450d07201441046a28020010390c070b201441086a280200450d06201441046a28020010390c060b201441086a10af010c050b201441086a10af010c040b201441086a280200450d03201441046a28020010390c030b0240201441086a280200450d00201441046a28020010390b201441106a2d00004106490d02201441186a280200450d02201441146a28020010390c020b201441086a10af010c010b201441086a10af01201441d0036a2d00004106490d00201441d8036a280200450d00201441d4036a28020010390b2015200a41f8036a220a470d000b0b02402016450d00201641f8036c450d00200b10390b4200210541002103410121044101210c41012113410121164100210a410121144101210b41012115024002400240024002400240024002402009a70e083d00010203040506070b410021034101210c41012113410121164100210a410121144101210b410121150240024002400240024020020e09414100010241410341040b410121044100210a205e4101470d2e205d450d2e203610390c2a0b410121044100210a200d4101470d2d2060450d2d203910390c290b4101210c4100210a20384101470d252037450d25205f10390c290b2039450d27200d10390c270b4101210c4100210a200d4101470d232060450d23203910390c270b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b410021034101210c41012113410121164100210a410121144101210b410121150240024002400240024020120e09404000010240400340040b4101210c4100210a20594101470d262058450d26203210390c2a0b4101210c4100210a205c4101470d25205b450d250c270b4101210c4100210a20344101470d242033450d24205a10390c280b2035450d26205c10390c260b4101210c4100210a205c4101470d22205b0d240c220b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b410021034101210c41012113410121164100210a410121144101210b410121150240024002400240024020110e093f3f0001023f3f033f040b4101210c4100210a20544101470d252053450d25202e10390c290b4101210c4100210a20574101470d242056450d240c250b4101210c4100210a20304101470d23202f450d23205510390c270b2031450d25205710390c250b4101210c4100210a20574101470d2120560d220c210b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b024002400240024002400240024020110e09060600010206060306040b20544101470d052053450d05202e10390c050b20574101470d0420560d030c040b20304101470d03202f450d03205510390c030b2031450d02205710390c020b20574101470d012056450d010b203110390b410021034101210c41012113410121164100210a410121144101210b410121150240024002400240024020100e093e3e0001023e3e033e040b4101210c4100210a204f4101470d24204e450d24202a10390c280b4101210c4100210a20524101470d232051450d23202d10390c270b410121134100210a202c4101470d1e202b450d1e205010390c210b202d450d24205210390c240b410121134100210a20524101470d1c2051450d1c202d10390c1f0b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b024002400240024002400240024020110e09060600010206060306040b20544101470d052053450d05202e10390c050b20574101470d0420560d030c040b20304101470d03202f450d03205510390c030b2031450d02205710390c020b20574101470d012056450d010b203110390b024002400240024002400240024020100e09060600010206060306040b204f4101470d05204e450d05202a10390c050b20524101470d0420510d030c040b202c4101470d03202b450d03205010390c030b202d450d02205210390c020b20524101470d012051450d010b202d10390b410021034101210c41012113410121164100210a410121144101210b4101211502400240024002400240200f0e093d3d0001023d3d033d040b410121134100210a204a4101470d1f2049450d1f202610390c220b410121134100210a204d4101470d1e204c450d1e0c200b410121134100210a20284101470d1d2027450d1d204b10390c200b2029450d23204d10390c230b410121134100210a204d4101470d1b204c0d1d0c1b0b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b024002400240024002400240024020110e09060600010206060306040b20544101470d052053450d05202e10390c050b20574101470d0420560d030c040b20304101470d03202f450d03205510390c030b2031450d02205710390c020b20574101470d012056450d010b203110390b024002400240024002400240024020100e09060600010206060306040b204f4101470d05204e450d05202a10390c050b20524101470d0420510d030c040b202c4101470d03202b450d03205010390c030b202d450d02205210390c020b20524101470d012051450d010b202d10390b0240024002400240024002400240200f0e09060600010206060306040b204a4101470d052049450d05202610390c050b204d4101470d04204c0d030c040b20284101470d032027450d03204b10390c030b2029450d02204d10390c020b204d4101470d01204c450d010b202910390b410021034101210c41012113410121164100210a410121144101210b4101211502400240024002400240200e0e093c3c0001023c3c033c040b410121134100210a20454101470d1e2044450d1e202210390c210b410121134100210a20484101470d1d2047450d1d0c1e0b410121134100210a20244101470d1c2023450d1c204610390c1f0b2025450d22204810390c220b410121134100210a20484101470d1a20470d1b0c1a0b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b024002400240024002400240024020110e09060600010206060306040b20544101470d052053450d05202e10390c050b20574101470d0420560d030c040b20304101470d03202f450d03205510390c030b2031450d02205710390c020b20574101470d012056450d010b203110390b024002400240024002400240024020100e09060600010206060306040b204f4101470d05204e450d05202a10390c050b20524101470d0420510d030c040b202c4101470d03202b450d03205010390c030b202d450d02205210390c020b20524101470d012051450d010b202d10390b0240024002400240024002400240200f0e09060600010206060306040b204a4101470d052049450d05202610390c050b204d4101470d04204c0d030c040b20284101470d032027450d03204b10390c030b2029450d02204d10390c020b204d4101470d01204c450d010b202910390b0240024002400240024002400240200e0e09060600010206060306040b20454101470d052044450d05202210390c050b20484101470d0420470d030c040b20244101470d032023450d03204610390c030b2025450d02204810390c020b20484101470d012047450d010b202510390b410021034101210c41012113410121164100210a410121144101210b410121150240024002400240024020210e093b3b0001023b3b033b040b410121134100210a20404101470d1d203f450d1d201d10394100210a0c1d0b410121134100210a20434101470d1c2042450d1c202010394100210a0c1c0b410121164100210a201f4101470d1a201e450d1a204110394100210a0c1a0b2020450d18204310394100210a0c250b410121164100210a20434101470d182042450d18202010394100210a0c180b024002400240024002400240024020020e09060600010206060306040b205e4101470d05205d450d05203610390c050b200d4101470d0420600d030c040b20384101470d032037450d03205f10390c030b2039450d02200d10390c020b200d4101470d012060450d010b203910390b024002400240024002400240024020120e09060600010206060306040b20594101470d052058450d05203210390c050b205c4101470d04205b0d030c040b20344101470d032033450d03205a10390c030b2035450d02205c10390c020b205c4101470d01205b450d010b203510390b024002400240024002400240024020110e09060600010206060306040b20544101470d052053450d05202e10390c050b20574101470d0420560d030c040b20304101470d03202f450d03205510390c030b2031450d02205710390c020b20574101470d012056450d010b203110390b024002400240024002400240024020100e09060600010206060306040b204f4101470d05204e450d05202a10390c050b20524101470d0420510d030c040b202c4101470d03202b450d03205010390c030b202d450d02205210390c020b20524101470d012051450d010b202d10390b0240024002400240024002400240200f0e09060600010206060306040b204a4101470d052049450d05202610390c050b204d4101470d04204c0d030c040b20284101470d032027450d03204b10390c030b2029450d02204d10390c020b204d4101470d01204c450d010b202910390b0240024002400240024002400240200e0e09060600010206060306040b20454101470d052044450d05202210390c050b20484101470d0420470d030c040b20244101470d032023450d03204610390c030b2025450d02204810390c020b20484101470d012047450d010b202510390b024002400240024002400240024020210e09060600010206060306040b20404101470d05203f450d05201d10390c050b20434101470d0420420d030c040b201f4101470d03201e450d03204110390c030b2020450d02204310390c020b20434101470d012042450d010b202010390b410021034101210c41012113410121164100210a410121144101210b4101211502400240024002400240201c0e093a3a0001023a3a033a040b410121164100210a203b4101470d1b203a450d1b201810394100210a0c1b0b410121164100210a203e4101470d1a203d450d1a0c180b410121164100210a201a4101470d192019450d19203c10394100210a0c190b201b450d17203e10394100210a0c240b410121164100210a203e4101470d17203d450d170c150b200841881b6a200841c0006a41c80310c30a1a200841d01e6a20084190046a41c80310c30a1a2008418c046a280200210b4100210a02400340200841d01e6a200a10ad082214450d01200a41016a210a20142d00000d000b20004201370300200041063602080c0b0b20084198226a200841c0006a41c80310c30a1a20084198226a41186a220a2903002105200a200841d01e6a41186a29030037030020082903a8222106200820082903e01e3703a82220082903a0222109200820082903d81e3703a0222008290398222117200820082903d01e3703982220084198226a41206a2203290300216120084198226a41286a2215290300216220084198226a41306a2216290300216320084198226a41386a22132903002164200841d01e6a41c0036a2903002165200841d01e6a41a0036a2903002166200841d01e6a41a8036a2903002167200841d01e6a41b0036a2903002168200841d01e6a41b8036a2903002169200841d01e6a4180036a290300216a200841d01e6a4188036a290300216b200841d01e6a4190036a290300216c200841d01e6a4198036a290300216d200841d01e6a41e0026a290300216e200841d01e6a41e8026a290300216f200841d01e6a41f0026a2903002170200841d01e6a41f8026a2903002171200841d01e6a41c0026a2903002172200841d01e6a41c8026a2903002173200841d01e6a41d0026a2903002174200841d01e6a41d8026a2903002175200841d01e6a41a0026a2903002176200841d01e6a41a8026a2903002177200841d01e6a41b0026a2903002178200841d01e6a41b8026a2903002179200841d01e6a4180026a290300217a200841d01e6a4188026a290300217b200841d01e6a4190026a290300217c200841d01e6a4198026a290300217d200841d01e6a41e0016a290300217e200841d01e6a41e8016a290300217f200841d01e6a41f0016a290300218001200841d01e6a41f8016a290300218101200841d01e6a41c0016a290300218201200841d01e6a41c8016a290300218301200841d01e6a41d0016a290300218401200841d01e6a41d8016a290300218501200841d01e6a41a0016a290300218601200841d01e6a41a8016a290300218701200841d01e6a41b0016a290300218801200841d01e6a41b8016a290300218901200841d01e6a4180016a290300218a01200841d01e6a4188016a290300218b01200841d01e6a4190016a290300218c01200841d01e6a4198016a290300218d01200841d01e6a41f8006a290300218e01200841d01e6a41e0006a290300218f01200841d01e6a41e8006a290300219001200841d01e6a41f0006a290300219101200841d01e6a41c0006a290300219201200841d01e6a41c8006a290300219301200841d01e6a41d0006a290300219401200841d01e6a41d8006a290300219501200841d01e6a41206a290300219601200841d01e6a41286a290300219701200841d01e6a41306a2903002198012013200841d01e6a41386a29030037030020162098013703002015209701370300200320960137030020084198226a41d8006a2203290300219601200320950137030020084198226a41d0006a220c290300219501200c20940137030020084198226a41c8006a2212290300219401201220930137030020084198226a41c0006a2211290300219301201120920137030020084198226a41f0006a2211290300219201201120910137030020084198226a41e8006a2210290300219101201020900137030020084198226a41e0006a220f290300219001200f208f0137030020084198226a41f8006a220f290300218f01200f208e0137030020084198226a4180016a225c290300218e0120084198226a4188016a220e29030021970120084198226a4190016a220d29030021980120084198226a4198016a22212903002199012021208d01370300200d208c01370300200e208b01370300205c208a0137030020084198226a41a0016a2235290300218a0120084198226a41a8016a225c290300218b0120084198226a41b0016a2239290300218c0120084198226a41b8016a2257290300218d0120572089013703002039208801370300205c208701370300203520860137030020084198226a41c0016a226029030021860120084198226a41c8016a223529030021870120084198226a41d0016a225229030021880120084198226a41d8016a2231290300218901203120850137030020522084013703002035208301370300206020820137030020084198226a41e0016a222d29030021820120084198226a41e8016a226029030021830120084198226a41f0016a224d29030021840120084198226a41f8016a225b290300218501205b208101370300204d2080013703002060207f370300202d207e37030020084198226a4180026a2238290300217e20084198226a4188026a222d290300217f20084198226a4190026a221c29030021800120084198226a4198026a22562903002181012056207d370300201c207c370300202d207b3703002038207a37030020084198226a41a0026a2248290300217a20084198226a41a8026a2238290300217b20084198226a41b0026a225e290300217c20084198226a41b8026a2229290300217d20292079370300205e2078370300203820773703002048207637030020084198226a41c0026a2259290300217620084198226a41c8026a2248290300217720084198226a41d0026a2251290300217820084198226a41d8026a223429030021792034207537030020512074370300204820733703002059207237030020084198226a41e0026a2230290300217220084198226a41e8026a2259290300217320084198226a41f0026a2237290300217420084198226a41f8026a225d2903002175205d2071370300203720703703002059206f3703002030206e37030020084198226a4180036a224c290300216e20084198226a4188036a2230290300216f20084198226a4190036a2254290300217020084198226a4198036a222529030021712025206d3703002054206c3703002030206b370300204c206a37030020084198226a41a0036a222c290300216a20084198226a41a8036a224c290300216b20084198226a41b0036a2233290300216c20084198226a41b8036a2258290300216d2058206937030020332068370300204c2067370300202c206637030020084198226a41c0036a222c2903002166202c2065370300200841e0256a41b8036a206d370300200841e0256a41b0036a206c370300200841e0256a41a8036a206b370300200841e0256a41a0036a206a370300200841e0256a4198036a2071370300200841e0256a4190036a2070370300200841e0256a4188036a206f370300200841e0256a4180036a206e370300200841e0256a41f8026a2075370300200841e0256a41f0026a2074370300200841e0256a41e8026a2073370300200841e0256a41e0026a2072370300200841e0256a41d8026a2079370300200841e0256a41d0026a2078370300200841e0256a41c8026a2077370300200841e0256a41c0026a2076370300200841e0256a41b8026a207d370300200841e0256a41b0026a207c370300200841e0256a41a8026a207b370300200841e0256a41a0026a207a370300200841e0256a4198026a208101370300200841e0256a4190026a208001370300200841e0256a4188026a207f370300200841e0256a4180026a207e370300200841e0256a41f8016a208501370300200841e0256a41f0016a208401370300200841e0256a41e8016a208301370300200841e0256a41e0016a208201370300200841e0256a41d8016a208901370300200841e0256a41d0016a208801370300200841e0256a41c8016a208701370300200841e0256a41c0016a208601370300200841e0256a41b8016a208d01370300200841e0256a41b0016a208c01370300200841e0256a41a8016a208b01370300200841e0256a41a0016a208a01370300200841e0256a4198016a209901370300200841e0256a4190016a209801370300200841e0256a4188016a209701370300200841e0256a4180016a208e01370300200841e0256a41f8006a208f01370300200841e0256a41f0006a209201370300200841e0256a41e8006a209101370300200841e0256a41e0006a209001370300200841e0256a41d8006a209601370300200841e0256a41d0006a209501370300200841e0256a41c8006a209401370300200841e0256a41c0006a209301370300200841e0256a41386a2064370300200841e0256a41306a2063370300200841e0256a41286a2062370300200841e0256a41206a2061370300200841e0256a41186a2005370300200841e0256a41c0036a2066370300200820063703f025200820093703e825200820173703e025200841c02d6a20084198226a200841e0256a10ae080240024020082903c02d4209520d00420921050c010b200a2903002117200a200841c02d6a41186a29030037030020082903a8222109200820082903d02d3703a82220082903a0222106200820082903c82d3703a0222008290398222105200820082903c02d37039822201329030021642016290300216320152903002162200841c02d6a41c0036a290300219601200841c02d6a41a0036a290300219501200841c02d6a41a8036a290300219701200841c02d6a41b0036a290300219801200841c02d6a41b8036a290300219901200841c02d6a4180036a290300219101200841c02d6a4188036a290300219201200841c02d6a4190036a290300219301200841c02d6a4198036a290300219401200841c02d6a41e0026a290300218d01200841c02d6a41e8026a290300218e01200841c02d6a41f0026a290300218f01200841c02d6a41f8026a290300219001200841c02d6a41c0026a290300218901200841c02d6a41c8026a290300218a01200841c02d6a41d0026a290300218b01200841c02d6a41d8026a290300218c01200841c02d6a41a0026a290300218501200841c02d6a41a8026a290300218601200841c02d6a41b0026a290300218701200841c02d6a41b8026a290300218801200841c02d6a4180026a290300218101200841c02d6a4188026a290300218201200841c02d6a4190026a290300218301200841c02d6a4198026a290300218401200841c02d6a41e0016a290300217d200841c02d6a41e8016a290300217e200841c02d6a41f0016a290300217f200841c02d6a41f8016a290300218001200841c02d6a41c0016a2903002179200841c02d6a41c8016a290300217a200841c02d6a41d0016a290300217b200841c02d6a41d8016a290300217c200841c02d6a41a0016a2903002175200841c02d6a41a8016a2903002176200841c02d6a41b0016a2903002177200841c02d6a41b8016a2903002178200841c02d6a4180016a2903002171200841c02d6a4188016a2903002172200841c02d6a4190016a2903002173200841c02d6a4198016a2903002174200841c02d6a41e0006a290300216d200841c02d6a41c0006a2903002169200841c02d6a41206a2903002165200841c02d6a41f8006a290300216e200841c02d6a41e8006a290300216c200841c02d6a41f0006a290300216a200841c02d6a41c8006a290300216b200841c02d6a41d0006a2903002166200841c02d6a41d8006a2903002167200841c02d6a41286a2903002168200841c02d6a41306a290300216f20082903b82221612013200841c02d6a41386a2903003703002016206f370300201520683703002003290300216820032067370300200c2903002167200c2066370300201229030021662012206b3703002011290300216b2011206a3703002010290300216a2010206c370300200f290300216c200f206e370300200820653703b82220082903d8222165200820693703d82220082903f82221692008206d3703f82220212903002170200d290300216f200e290300216e200829039823216d20212074370300200d2073370300200e207237030020082071370398232057290300217420392903002173205c290300217220082903b82321712057207837030020392077370300205c2076370300200820753703b82320312903002178205229030021772035290300217620082903d82321752031207c3703002052207b3703002035207a370300200820793703d823205b290300217c204d290300217b2060290300217a20082903f8232179205b208001370300204d207f3703002060207e3703002008207d3703f8232056290300218001201c290300217f202d290300217e200829039824217d2056208401370300201c208301370300202d2082013703002008208101370398242029290300218401205e290300218301203829030021820120082903b8242181012029208801370300205e208701370300203820860137030020082085013703b82420342903002188012051290300218701204829030021860120082903d8242185012034208c013703002051208b013703002048208a0137030020082089013703d824205d290300218c012037290300218b012059290300218a0120082903f824218901205d2090013703002037208f013703002059208e013703002008208d013703f82420252903002190012054290300218f012030290300218e01200829039825218d0120252094013703002054209301370300203020920137030020082091013703982520582903002194012033290300219301204c29030021920120082903b82521910120582099013703002033209801370300204c20970137030020082095013703b82520082903d82521950120082096013703d8250b20054209520d09200841e80b6a20084198226a41c80310c30a1a200841e0256a200b41e00710c30a1a200841c02d6a200841e80b6a2002200841e0256a200442002005200710a30820082903c82d210520082903c02d2106200841c8136a200841c02d6a41106a41b00710c30a1a024020064201510d00200b1039410021144101211641002103410121044101210c410121134101210a4101210b0c320b200041106a200841c8136a41b00710c30a1a2000420137030020002005370308200b10390c130b200841c8136a200841c82d6a41c80310c30a1a200841c8136a10af01200042013703002000410e3602080b200841e80b6a109f060c100b2000200b3602082000410c6a200841c02d6a41b40710c30a1a200042013703000b20084198226a10b3010240200828029c22220a450d00200a4198046c450d0020082802982210390b02402013450d00201341f8036c21142016210a0340200a10ac01200a41f8036a210a201441887c6a22140d000b0b02402003450d00200341f8036c450d00201610390b200841c8136a10af014100210b41012113410121164101210041012114410121150c2b0b2000200a3602082000410c6a200841c02d6a41b40710c30a1a2000420137030020084198226a10af010c0c0b200041086a200841c42d6a41b80710c30a1a200042013703000b200841c8136a10ac0102402016200b460d000340200b10ac01200b41f8036a210b201541887c6a22150d000b0b02402004450d00200441f8036c450d00200c10390b20084198226a10af01200841d01e6a10af014100210a410121134101211641012100410121144101210b410121150c290b200041086a200841c42d6a41b80710c30a1a200042013703000b200841c8136a10ac010240200a450d00201441f8036a21140340201410ac01201441f8036a2114200a41887c6a220a0d000b0b0240200c450d00200c41f8036c450d00200310390b200841881b6a108506024020082802981b220a450d00024020082802941b2214450d000340200a2802b02b210a2014417f6a22140d000b0b200841003602e8252008200a3602e425200841003602e0252008200828029c1b3602ec25200841e0256a10cc030b200841a8136a10b301024020082802ac13220a450d00200a4198046c450d0020082802a81310390b20084198226a10af0141012116410021130c230b20084188296a20920137030020084180296a209101370300200841e8286a208e01370300200841e0286a208d01370300200841c8286a208a01370300200841c0286a208901370300200841a8286a208601370300200841a0286a20850137030020084188286a20820137030020084180286a208101370300200841e8276a207e370300200841e0276a207d370300200841c8276a207a370300200841c0276a2079370300200841a8276a2076370300200841a0276a207537030020084188276a207237030020084180276a2071370300200841e8266a206e370300200841e0266a206d370300200841c8266a206a370300200841c0266a2069370300200841a8266a2066370300200841a0266a206537030020084188266a206237030020084180266a2061370300200841a0296a20950137030020084190296a209301370300200841f0286a208f01370300200841d0286a208b01370300200841b0286a20870137030020084190286a208301370300200841f0276a207f370300200841d0276a207b370300200841b0276a207737030020084190276a2073370300200841f0266a206f370300200841d0266a206b370300200841b0266a206737030020084190266a206337030020084198296a209401370300200841f8286a209001370300200841d8286a208c01370300200841b8286a20880137030020084198286a208401370300200841f8276a208001370300200841d8276a207c370300200841b8276a207837030020084198276a2074370300200841f8266a2070370300200841d8266a206c370300200841b8266a206837030020084198266a2064370300200841f8256a2017370300200820053703e025200820063703e825200820093703f025200841e0256a10af01200042013703002000410c36020820084198226a10af010b200b108104200b10392014450d08200841d01e6a10af01200841881b6a10af010c080b200041086a200841c42d6a41b80710c30a1a200042013703000b20084198226a10af0102402002450d0020024198046c21142012210a0340200a10bf01200a4198046a210a201441e87b6a22140d000b0b02402004450d0020044198046c450d00201210390b200841d01e6a10af0102402003450d00200341f8036c21142013210a0340200a10ac01200a41f8036a210a201441887c6a22140d000b0b200c450d04200c41f8036c450d04201310390c040b2000420137030020004104360208200841c0006a10af0141012113410121160c1e0b200042013703002000410d3602080c030b1030000b200042013703002000421537030820031081040c240b200841881b6a10af0141002115410121134101211641012100410121144101210b0c1d0b0240200841a42d6a280200450d0020082802a02d10390b024020082802e0254125460d00200841e0256a109f060b0240200a4125470d0020084198226a10af010b410021144101211341012116410121000c1b0b4100210041012113410121160c190b201b10394100210a0c010b4100210a0c0c0b41002103410121044101210c410121130c140b41002103410121044101210c410121160c130b202510390c010b202910390b41002103410121044101210c0c060b41002103410121040c070b203110390c020b203510390c010b410021034101210c0c010b41002103410121040b410121130b410121164100210a0c090b410021034101210c0b41012113410121160c070b20162004460d00201341f8036c2114200841e80b6a41086a2104200841e0256a410172210b200841106a21152016210a03402008200a109208024020082802004101470d002015290300210520082903082106200841e0256a10fd0720082d00e025450d00200841c02d6a41186a200b41186a290000370300200841c02d6a41106a200b41106a290000370300200841c02d6a41086a200b41086a2900003703002008200b2900003703c02d200841e80b6a200841c02d6a200620054102410110a30620082802e80b0d00200820043602d01e200841d01e6a10a4060b200a41f8036a210a201441887c6a22140d000b0b200820133602c82d200820033602c42d200820163602c02d200841e0256a200841c02d6a10a60820084180266a200c280200360200200841286a41086a200841e0256a41086a290300370300200841286a41106a200841e0256a41106a290300370300200820082903982222053703f825200820082903e025370328200841fc256a2902002106200841c8136a10af012005a721034200210541002113410121044101210c0c030b2016200b460d000340200b10ac012016200b41f8036a220b470d000b0b02402004450d00200441f8036c450d00200c10390b20084198226a10af01200841d01e6a10af01420021054101210c41002103410021040b410121130b410121160b4101210a0b410121144101210b0c050b410121000b410121140b4101210b410121150b4101210a0b0240024002400240024002400240024020082d0088040e0b000102030405060c0c0c070c0b2013450d0b024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d0b200a4198046c450d0b20082802980410390c0b0b2016450d0a024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d0a200a4198046c450d0a20082802980410390c0a0b200b450d09024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d09200a4198046c450d0920082802980410390c090b024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b20084190046a280200220a450d08200a41f8036c450d08200828028c0410390c080b200a450d07024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10af010c070b2015450d06024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b200841a8046a10af010240200841a0046a2802002214450d0020084198046a280200210a20144198046c21140340200a10bf01200a4198046a210a201441e87b6a22140d000b0b2008419c046a280200220a450d06200a4198046c450d0620082802980410390c060b2014450d050240200841dc0b6a280200450d00200841d80b6a28020010390b2008280298044125460d0520084198046a109f060c050b2000450d0420084190046a10af012008418c046a220a280200108104200a28020010390c040b410121150c020b200b200a460d000340200a10ac01200b200a41f8036a220a470d000b0b0240200c450d00200c41f8036c450d00200310390b200841286a41106a200841881b6a41106a290300370300200841286a41086a200841881b6a41086a290300370300200820082903881b37032820082802a813210320082902ac13210620084198226a10af014200210541002115410121044101210c41012113410121164101210a410121144101210b0b02400240024002400240024002400240024020082d0088040e0b0001020304050608080807080b2015450d07024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d07200a4198046c450d0720082802980410390c070b200b450d06024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d06200a4198046c450d0620082802980410390c060b2013450d05024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10b3012008419c046a280200220a450d05200a4198046c450d0520082802980410390c050b200a450d04024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b20084190046a280200220a450d04200a41f8036c450d04200828028c0410390c040b2004450d03024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b20084198046a10af010c030b200c450d02024020084194046a2802002214450d002008418c046a280200210a201441f8036c21140340200a10ac01200a41f8036a210a201441887c6a22140d000b0b024020084190046a280200220a450d00200a41f8036c450d00200828028c0410390b200841a8046a10af010240200841a0046a2802002214450d0020084198046a280200210a20144198046c21140340200a10bf01200a4198046a210a201441e87b6a22140d000b0b2008419c046a280200220a450d02200a4198046c450d0220082802980410390c020b2016450d010240200841dc0b6a280200450d00200841d80b6a28020010390b2008280298044125460d0120084198046a109f060c010b2014450d0020084190046a10af012008418c046a220a280200108104200a28020010390b024020030d0020004200370300200020053703080c010b200841c8136a41106a200841286a41106a290300370300200841c8136a41086a200841286a41086a290300370300200820082903283703c81320032006422088a74198046c220a6a21152006a7210c02400240200a0d002003210a0c010b200a41e87b6a2114200841c0006a41106a2116200841c02d6a41017221132003210a024002400340200a2d0000220b4108460d022008200b3a00c02d2013200a41016a41970410c30a1a200841c0006a2001200841c8136a200841c02d6a200710af082008290348210620082903402109200841e0256a201641b00710c30a1a20094201510d01201441e87b6a2114200620057c2105200a4198046a220a2015470d000b2015210a0c020b200041106a200841e0256a41b00710c30a1a2000420137030020002006370308200a4198046a20144198046d10e3040240200c450d00200c4198046c450d00200310390b200841c8136a108506200841c8136a41106a280200220a450d02024020082802d4132214450d000340200a2802b02b210a2014417f6a22140d000b0b200841003602482008200a360244200841003602402008200841dc136a28020036024c200841c0006a10cc030c020b200a4198046a210a0b200a2015200a6b4198046d10e3040240200c450d00200c4198046c450d00200310390b200841c8136a1085060240200841d8136a280200220a450d00024020082802d4132214450d000340200a2802b02b210a2014417f6a22140d000b0b200841003602482008200a360244200841003602402008200841dc136a28020036024c200841c0006a10cc030b20004200370300200020053703080b200110af0120084180356a24000be70703017f027e037f230041d0086b22032400200341086a2001109208024002400240024002402003290308a7450d00200341086a41106a290300210420032903102105024020022903004201520d0020022d00084101460d030b200341e0006a200210ab03200341d8046a200341e0006a10e20820032d00d8044101460d01200341c8006a200341e2046a290100370300200341d0006a200341ea046a290100370300200341d7006a200341f1046a290000370000200320032901da043703400c030b20004101360200200041106a410d3602002000410c6a419af0ca00360200200041086a41103602000c030b200341e0006a200341d8046a41086a41c80310c30a1a200341e0006a10af01200041106a41193602002000410c6a41a7f0ca00360200200041086a4110360200200041013602000c020b200341d8046a410172200228020c10ec08200341c8006a200341e2046a290100370300200341d0006a200341ea046a290100370300200341d7006a200341f1046a290000370000200320032901da043703400b20032d00d9042102200341386a200341d7006a290000370000200341316a200341c0006a41106a290300370000200341296a200341c0006a41086a29030037000020032003290340370021200320023a0020200341d8046a200341206a200520044102410110a306024020032802d8044101460d002003200341d8046a41106a2903003703682003200341d8046a41086a2903003703602003200341e0006a3602d804200341d8046a10a406200341e0006a200110aa03200041146a4200370200200041086a4200370200200341d8046a200341e0006a41f80310c30a1a200041046a200341d8046a10b508200041003602000c010b200341e4046a2802002106200341d8046a41086a280200210741dfe0ca002102410d210120032d00dd0421080240024002400240024002400240024020032d00dc040e080107020304050600010b4193e0ca002102411021010240024020084103710e03000108000b41fbdfca002102411821010c070b41e4dfca002102411721010c060b20062101200721020c050b41d5e0ca002102410a21010c040b2006411420071b2101200741a3e0ca0020071b21020c030b41c3e0ca002102411221010c020b41b7e0ca002102410c21010c010b41cadfca002102411a21010240024002400240024020084107710e06000102030405000b41b5dfca002102411521010c040b4194dfca002102412121010c030b41dddeca002102413721010c020b41c4deca002102411921010c010b41a4deca002102412021010b20004101360200200041106a2001ad370300200041086a2002ad4220864210843703000b200341d0086a24000bc81306167f027e017f037e017f027e230041e0236b22022400200241e81f6a41106a200141106a290200370300200241e81f6a41086a200141086a2203290200370300200220012902003703e81f200241f0076a20012802002001280204200328020010b108200228028808210420022802f807210520022802f407210320022802f0072106200241f01b6a41086a2207200241fc1f6a280200360200200220022902f41f3703f01b200241f0076a200241f01b6a10b20820022802f007210820022802f407210120022802f8072109200228028808210a200241f01b6a410c6a210b200241f01b6a41cc036a210c200241f0076a41d0036a210d200241f0076a410472210e200241f01b6a41046a210f200241e81f6a41046a2110200241f0076a41206a2111200241c80b6a21124101211303400240024002400240024002400240024020134101470d0002402004450d002003450d02200520032f01a629490d0603400240024020032802a02922140d00410021140c010b200641016a211520032f01a42921050b024041d82941a82920061b450d00200310390b024020140d00410221060c090b2015210620142103200520142f01a6294f0d000b20142103201521060c060b410021132003450d002003211620062114034020162802a0292115024041d82941a82920141b450d00201610390b201441016a21142015211620150d000b0b2002410c3602f007200a450d0102402001450d000240200920012f01ae2b4f0d0020012114200821150c040b03400240024020012802a82b22140d00410021140c010b200841016a211520012f01ac2b21090b024041e02b41b02b20081b450d00200110390b024020140d00410221170c060b2014210120152108200920142f01ae2b490d040c000b0b41b4fcca00412b41e4f8ca001035000b41b4fcca00412b41e4f8ca001035000b02402013450d002003450d0002402004450d00200241f0076a410472210c200241c80b6a210b03402004417f6a2104024002400240200520032f01a6294f0d0020032114200621090c010b03400240024020032802a02922140d00410021140c010b200641016a210920032f01a42921050b024041d82941a82920061b450d00200310390b024020140d00410221140c030b2009210620142103200520142f01a6294f0d000b0b200541016a210d2014200541d0036c6a2106201420054104746a220341f8276a2115200341f0276a21160240024020090d0020142103200d21050c010b2014200d4102746a41a8296a280200210302402009417f6a2214450d00034020032802a82921032014417f6a22140d000b0b410021050b201529030021182016290300211920062802002114200241f0076a200641046a41cc0310c30a1a0b200241e81f6a200241f0076a41cc0310c30a1a200220143602f007200c200241e81f6a41cc0310c30a1a200b2018370300200220193703c00b200241f0076a10b90a4100210620040d000b0b034020032802a0292114024041d82941a82920061b450d00200310390b200641016a21062014210320140d000b0b02402001450d00034020012802a82b2103024041e02b41b02b20081b450d00200110390b200841016a21082003210120030d000b0b200241e0236a24000f0b200941016a21162014200941f8036c6a21080240024020150d0020142101201621090c010b201420164102746a41b02b6a280200210102402015417f6a2214450d00034020012802b02b21012014417f6a22140d000b0b410021090b20082802002117200241e81f6a200841046a41f40310c30a1a0b200241f01b6a200241e81f6a41f40310c30a1a200241940c6a200241f01b6a41cc0310c30a1a200241e80b6a41206a2214200c41206a290200370300200241e80b6a41186a2208200c41186a290200370300200241e80b6a41106a2215200c41106a290200370300200241e80b6a41086a2216200c41086a2902003703002002200c2902003703e80b200241e81f6a200241940c6a41cc0310c30a1a024002402017450d00200b20022903e80b3702002007200241940c6a41086a280200360200200b41086a2016290300370200200b41106a2015290300370200200b41186a2008290300370200200b41206a2014290300370200200220022902940c3703f01b410921140c010b200f201041c80310c30a1a200241e00f6a41206a2014290300370300200241e00f6a41186a2008290300370300200241e00f6a41106a2015290300370300200241e00f6a41086a2016290300370300200220022903e80b3703e00f410b21140b200241a4046a200241f01b6a41cc0310c30a1a200241f8036a41206a200241e00f6a41206a290300370300200241f8036a41186a200241e00f6a41186a290300370300200241f8036a41106a200241e00f6a41106a290300370300200241f8036a41086a200241e00f6a41086a290300370300200220022903e00f3703f803024020022802f007410c460d00200241f0076a10ac010b200a417f6a210a410021080c020b200541016a211a2003200541d0036c6a2115200320054104746a221441f8276a2116201441f0276a21170240024020060d00201a21050c010b2003201a4102746a41a8296a280200210302402006417f6a2214450d00034020032802a82921032014417f6a22140d000b0b410021050b20162903002118201729030021192015290210211b2015290208211c201541186a290200211d2015280204211e20152802002106200241e81f6a201541206a41b00310c30a1a0b200241f01b6a200241e81f6a41b00310c30a1a410821142019211f20182120024020060d00200241e81f6a200241f01b6a41b00310c30a1a410a2114201b211f201d21200b2004417f6a21042011200241e81f6a41b00310c30a1a20122018370300200241f0076a41186a2020370300200220193703c00b2002201f370380082002201c3703f8072002201e3602f407200220143602f007200241a4046a200e41cc0310c30a1a200241f8036a41206a200d41206a290300370300200241f8036a41186a200d41186a290300370300200241f8036a41106a200d41106a290300370300200241f8036a41086a200d41086a2903003703002002200d2903003703f80341012113410021060b2002412c6a200241a4046a41cc0310c30a1a200241206a2215200241f8036a41206a290300370300200241186a2216200241f8036a41186a290300370300200241106a2217200241f8036a41106a290300370300200241086a221a200241f8036a41086a290300370300200220022903f803370300200220143602f007200e2002412c6a41cc0310c30a1a200d41206a2015290300370300200d41186a2016290300370300200d41106a2017290300370300200d41086a201a290300370300200d20022903003703002000200241f0076a10b5080c000b0bd40301067f23004180046b2202240020004200370204200041106a4200370200200128020022032001280208220441f8036c6a21052001280204210620032107024002402004450d00200241086a4104722104200321010340024020012802002207410c470d00200141f8036a21070c020b200220073602082004200141046a41f40310c30a1a2000200241086a10b508200141f8036a22012005470d000c020b0b20052007460d0003402007220141f8036a210702400240024002400240024002400240024020012802000e0b0808080800010203040506070b200141086a280200450d07200141046a28020010390c070b200141086a280200450d06200141046a28020010390c060b200141086a10af010c050b200141086a10af010c040b200141086a280200450d03200141046a28020010390c030b0240200141086a280200450d00200141046a28020010390b200141106a2d00004106490d02200141186a280200450d02200141146a28020010390c020b200141086a10af010c010b200141086a10af01200141d0036a2d00004106490d00200141d8036a280200450d00200141d4036a28020010390b20052007470d000b0b02402006450d00200641f8036c450d00200310390b20024180046a24000bca0501037f230041e0166b220424002004410236021020044101360208200441a00f6a2001200210a40820042802a00f2102200441e4076a200441a00f6a410472220541bc0710c30a1a02400240024020024101460d00200441c8076a41106a2202200441e4076a41106a290200370300200441c8076a41086a2206200441e4076a41086a290200370300200420042902e4073703c807200441a00f6a2001200310b30820042802a00f2101200441e4076a200541b40710c30a1a02402001411b470d00200020042903c80737020420004100360200200041146a20022903003702002000410c6a2006290300370200024020042802080d00200441086a410472108506200441086a41146a2802002200450d040240200441186a2802002201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441206a2802003602ac0f200441a00f6a10cc030c040b2004280210410b470d03200441186a10af01200441e0036a10d2030c030b2000410c6a200441e4076a41b40710c30a1a20004101360200200041086a2001360200200441c8076a10850620022802002200450d01024020042802d4072201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441dc076a2802003602ac0f200441a00f6a10cc030c010b200041086a200441e4076a41046a41b80710c30a1a200041013602000b024020042802080d00200441086a4104721085062004411c6a2802002200450d010240200441186a2802002201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441206a2802003602ac0f200441a00f6a10cc030c010b2004280210410b470d00200441186a10af01200441e0036a10d2030b200441e0166a24000bad07050d7f017e067f017e047f23004190046b22022400200242003703082000200110ab034108210302400240024002400240024002400240024020012802000e09000102030405060708000b410021030c070b410121030c060b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b410721030b024002402003417f6a220420034b0d002001200410ad082203450d00200041086a2105200041c0006a2106200041f8006a2107200041b0016a2108200041e8016a2109200041a0026a210a200041d8026a210b20004190036a210c200241d8036a410172210d4100210e034041002104024020032d00000d00200241d8036a200241086a10ed084108210420022d00d8032203410a460d00200241d4036a41026a200d41026a2d00003a00002002200d2f00003b01d403200229038804210f2002280284042110200228028004211120022802fc03211220022802f803211320022802f403211420022802f003211520022903e803211620022802e403211720022802e003211820022802dc032119200321040b200241d0036a41026a221a200241d4036a41026a2d00003a0000200220022f01d4033b01d003024002400240024002400240024002400240200e0e0807000102030405060b0b200621032000280200417e6a41074f0d0a0c070b200721032000280200417d6a41064f0d090c060b200821032000280200417c6a41054f0d080c050b200921032000280200417b6a41044f0d070c040b200a21032000280200417a6a41034f0d060c030b200b2103200028020041796a41024f0d050c020b200c210320002903004208510d010c040b200521032000280200417f6a41084f0d030b200310ee08200320043a0000200341306a200f3700002003412c6a2010360000200341286a2011360000200341246a2012360000200341206a20133600002003411c6a2014360000200341186a2015360000200341106a20163700002003410c6a201736000041082104200341086a2018360000200341046a2019360000200320022f01d0033b0001200341036a201a2d00003a000002400240024002400240024002400240024020012802000e09000102030405060708000b410021040c070b410121040c060b410221040c050b410321040c040b410421040c030b410521040c020b410621040c010b410721040b2004200e41026a22036b221a20044b0d012003417f6a210e2001201a10ad0822030d000b0b200241086a10af0120024190046a24000f0b41d2fac500412f4184fbc5001065000b935403037f017e4c7f230041a00a6b2202240041002103024020002802002204410b4b0d00410120047441c01971450d00200041086a2100024002400240024002400240024002400240024020012802000e09010203040506070800010b20024198076a200141086a10d103200241d0076a200141c0006a10d10320024188086a200141f8006a10d103200241c0086a200141b0016a10d103200241f8086a200141e8016a10d103200241b0096a200141a0026a10d103200241e8096a200141d8026a10d103200241086a20014190036a10d10320024188046a20024198076a41306a290300370300200241d0036a41306a20024198076a41286a290300370300200241d0036a41286a20024198076a41206a290300370300200241d0036a41206a20024198076a41186a290300370300200241d0036a41186a20024198076a41106a290300370300200241d0036a41106a20024198076a41086a290300370300200241d0036a41c0006a20022903d00737030020024198046a200241d0076a41086a290300370300200241a0046a200241d0076a41106a290300370300200241a8046a200241d0076a41186a290300370300200241b0046a200241d0076a41206a290300370300200241b8046a200241d0076a41286a290300370300200241c0046a200241d0076a41306a29030037030020022002290398073703d803200241f8046a20024188086a41306a290300370300200241f0046a20024188086a41286a290300370300200241e8046a20024188086a41206a290300370300200241e0046a20024188086a41186a290300370300200241d8046a20024188086a41106a290300370300200241d0046a20024188086a41086a290300370300200241d0036a41f8006a200229038808370300200241b0056a200241c0086a41306a290300370300200241a8056a200241c0086a41286a290300370300200241a0056a200241c0086a41206a29030037030020024198056a200241c0086a41186a29030037030020024190056a200241c0086a41106a29030037030020024188056a200241c0086a41086a290300370300200241d0036a41b0016a20022903c008370300200241e8056a200241f8086a41306a290300370300200241e0056a200241f8086a41286a290300370300200241d8056a200241f8086a41206a290300370300200241d0056a200241f8086a41186a290300370300200241c8056a200241f8086a41106a290300370300200241c0056a200241f8086a41086a290300370300200241d0036a41e8016a20022903f808370300200241a0066a200241b0096a41306a29030037030020024198066a200241b0096a41286a29030037030020024190066a200241b0096a41206a29030037030020024188066a200241b0096a41186a29030037030020024180066a200241b0096a41106a290300370300200241f8056a200241b0096a41086a290300370300200241d0036a41a0026a20022903b009370300200241d8066a200241e8096a41306a290300370300200241d0066a200241e8096a41286a290300370300200241c8066a200241e8096a41206a290300370300200241c0066a200241e8096a41186a290300370300200241b8066a200241e8096a41106a290300370300200241b0066a200241e8096a41086a290300370300200241d0036a41d8026a20022903e80937030020024190076a200241086a41306a29030037030020024188076a200241086a41286a29030037030020024180076a200241086a41206a290300370300200241f8066a200241086a41186a290300370300200241f0066a200241086a41106a290300370300200241e8066a200241086a41086a290300370300200241d0036a4190036a2002290308370300200242083703d0030c080b200242003703d0030c070b200241086a200141086a10d10320024188046a200241086a41306a290300370300200241d0036a41306a200241086a41286a290300370300200241d0036a41286a200241086a41206a290300370300200241d0036a41206a200241086a41186a290300370300200241d0036a41186a200241086a41106a290300370300200241d0036a41106a200241086a41086a290300370300200242013703d003200220022903083703d8030c060b200241e8096a200141086a10d103200241086a200141c0006a10d10320024188046a200241e8096a41306a290300370300200241d0036a41306a200241e8096a41286a290300370300200241d0036a41286a200241e8096a41206a290300370300200241d0036a41206a200241e8096a41186a290300370300200241d0036a41186a200241e8096a41106a290300370300200241d0036a41106a200241e8096a41086a290300370300200241d0036a41c0006a200229030837030020024198046a200241086a41086a290300370300200241a0046a200241086a41106a290300370300200241a8046a200241086a41186a290300370300200241b0046a200241086a41206a290300370300200241b8046a200241086a41286a290300370300200241c0046a200241086a41306a290300370300200220022903e8093703d803200242023703d0030c050b200241b0096a200141086a10d103200241e8096a200141c0006a10d103200241086a200141f8006a10d10320024188046a200241b0096a41306a290300370300200241d0036a41306a200241b0096a41286a290300370300200241d0036a41286a200241b0096a41206a290300370300200241d0036a41206a200241b0096a41186a290300370300200241d0036a41186a200241b0096a41106a290300370300200241d0036a41106a200241b0096a41086a290300370300200241d0036a41c0006a20022903e80937030020024198046a200241e8096a41086a290300370300200241a0046a200241e8096a41106a290300370300200241a8046a200241e8096a41186a290300370300200241b0046a200241e8096a41206a290300370300200241b8046a200241e8096a41286a290300370300200241c0046a200241e8096a41306a290300370300200220022903b0093703d803200241f8046a200241086a41306a290300370300200241f0046a200241086a41286a290300370300200241e8046a200241086a41206a290300370300200241e0046a200241086a41186a290300370300200241d8046a200241086a41106a290300370300200241d0046a200241086a41086a290300370300200241d0036a41f8006a2002290308370300200242033703d0030c040b200241f8086a200141086a10d103200241b0096a200141c0006a10d103200241e8096a200141f8006a10d103200241086a200141b0016a10d10320024188046a200241f8086a41306a290300370300200241d0036a41306a200241f8086a41286a290300370300200241d0036a41286a200241f8086a41206a290300370300200241d0036a41206a200241f8086a41186a290300370300200241d0036a41186a200241f8086a41106a290300370300200241d0036a41106a200241f8086a41086a290300370300200241d0036a41c0006a20022903b00937030020024198046a200241b0096a41086a290300370300200241a0046a200241b0096a41106a290300370300200241a8046a200241b0096a41186a290300370300200241b0046a200241b0096a41206a290300370300200241b8046a200241b0096a41286a290300370300200241c0046a200241b0096a41306a290300370300200220022903f8083703d803200241f8046a200241e8096a41306a290300370300200241f0046a200241e8096a41286a290300370300200241e8046a200241e8096a41206a290300370300200241e0046a200241e8096a41186a290300370300200241d8046a200241e8096a41106a290300370300200241d0046a200241e8096a41086a290300370300200241d0036a41f8006a20022903e809370300200241b0056a200241086a41306a290300370300200241a8056a200241086a41286a290300370300200241a0056a200241086a41206a29030037030020024198056a200241086a41186a29030037030020024190056a200241086a41106a29030037030020024188056a200241086a41086a290300370300200241d0036a41b0016a2002290308370300200242043703d0030c030b200241c0086a200141086a10d103200241f8086a200141c0006a10d103200241b0096a200141f8006a10d103200241e8096a200141b0016a10d103200241086a200141e8016a10d10320024188046a200241c0086a41306a290300370300200241d0036a41306a200241c0086a41286a290300370300200241d0036a41286a200241c0086a41206a290300370300200241d0036a41206a200241c0086a41186a290300370300200241d0036a41186a200241c0086a41106a290300370300200241d0036a41106a200241c0086a41086a290300370300200241d0036a41c0006a20022903f80837030020024198046a200241f8086a41086a290300370300200241a0046a200241f8086a41106a290300370300200241a8046a200241f8086a41186a290300370300200241b0046a200241f8086a41206a290300370300200241b8046a200241f8086a41286a290300370300200241c0046a200241f8086a41306a290300370300200220022903c0083703d803200241f8046a200241b0096a41306a290300370300200241f0046a200241b0096a41286a290300370300200241e8046a200241b0096a41206a290300370300200241e0046a200241b0096a41186a290300370300200241d8046a200241b0096a41106a290300370300200241d0046a200241b0096a41086a290300370300200241d0036a41f8006a20022903b009370300200241b0056a200241e8096a41306a290300370300200241a8056a200241e8096a41286a290300370300200241a0056a200241e8096a41206a29030037030020024198056a200241e8096a41186a29030037030020024190056a200241e8096a41106a29030037030020024188056a200241e8096a41086a290300370300200241d0036a41b0016a20022903e809370300200241e8056a200241086a41306a290300370300200241e0056a200241086a41286a290300370300200241d8056a200241086a41206a290300370300200241d0056a200241086a41186a290300370300200241c8056a200241086a41106a290300370300200241c0056a200241086a41086a290300370300200241d0036a41e8016a2002290308370300200242053703d0030c020b20024188086a200141086a10d103200241c0086a200141c0006a10d103200241f8086a200141f8006a10d103200241b0096a200141b0016a10d103200241e8096a200141e8016a10d103200241086a200141a0026a10d10320024188046a20024188086a41306a290300370300200241d0036a41306a20024188086a41286a290300370300200241d0036a41286a20024188086a41206a290300370300200241d0036a41206a20024188086a41186a290300370300200241d0036a41186a20024188086a41106a290300370300200241d0036a41106a20024188086a41086a290300370300200241d0036a41c0006a20022903c00837030020024198046a200241c0086a41086a290300370300200241a0046a200241c0086a41106a290300370300200241a8046a200241c0086a41186a290300370300200241b0046a200241c0086a41206a290300370300200241b8046a200241c0086a41286a290300370300200241c0046a200241c0086a41306a29030037030020022002290388083703d803200241f8046a200241f8086a41306a290300370300200241f0046a200241f8086a41286a290300370300200241e8046a200241f8086a41206a290300370300200241e0046a200241f8086a41186a290300370300200241d8046a200241f8086a41106a290300370300200241d0046a200241f8086a41086a290300370300200241d0036a41f8006a20022903f808370300200241b0056a200241b0096a41306a290300370300200241a8056a200241b0096a41286a290300370300200241a0056a200241b0096a41206a29030037030020024198056a200241b0096a41186a29030037030020024190056a200241b0096a41106a29030037030020024188056a200241b0096a41086a290300370300200241d0036a41b0016a20022903b009370300200241e8056a200241e8096a41306a290300370300200241e0056a200241e8096a41286a290300370300200241d8056a200241e8096a41206a290300370300200241d0056a200241e8096a41186a290300370300200241c8056a200241e8096a41106a290300370300200241c0056a200241e8096a41086a290300370300200241d0036a41e8016a20022903e809370300200241a0066a200241086a41306a29030037030020024198066a200241086a41286a29030037030020024190066a200241086a41206a29030037030020024188066a200241086a41186a29030037030020024180066a200241086a41106a290300370300200241f8056a200241086a41086a290300370300200241d0036a41a0026a2002290308370300200242063703d0030c010b200241d0076a200141086a10d10320024188086a200141c0006a10d103200241c0086a200141f8006a10d103200241f8086a200141b0016a10d103200241b0096a200141e8016a10d103200241e8096a200141a0026a10d103200241086a200141d8026a10d10320024188046a200241d0076a41306a290300370300200241d0036a41306a200241d0076a41286a290300370300200241d0036a41286a200241d0076a41206a290300370300200241d0036a41206a200241d0076a41186a290300370300200241d0036a41186a200241d0076a41106a290300370300200241d0036a41106a200241d0076a41086a290300370300200241d0036a41c0006a20022903880837030020024198046a20024188086a41086a290300370300200241a0046a20024188086a41106a290300370300200241a8046a20024188086a41186a290300370300200241b0046a20024188086a41206a290300370300200241b8046a20024188086a41286a290300370300200241c0046a20024188086a41306a290300370300200220022903d0073703d803200241f8046a200241c0086a41306a290300370300200241f0046a200241c0086a41286a290300370300200241e8046a200241c0086a41206a290300370300200241e0046a200241c0086a41186a290300370300200241d8046a200241c0086a41106a290300370300200241d0046a200241c0086a41086a290300370300200241d0036a41f8006a20022903c008370300200241b0056a200241f8086a41306a290300370300200241a8056a200241f8086a41286a290300370300200241a0056a200241f8086a41206a29030037030020024198056a200241f8086a41186a29030037030020024190056a200241f8086a41106a29030037030020024188056a200241f8086a41086a290300370300200241d0036a41b0016a20022903f808370300200241e8056a200241b0096a41306a290300370300200241e0056a200241b0096a41286a290300370300200241d8056a200241b0096a41206a290300370300200241d0056a200241b0096a41186a290300370300200241c8056a200241b0096a41106a290300370300200241c0056a200241b0096a41086a290300370300200241d0036a41e8016a20022903b009370300200241a0066a200241e8096a41306a29030037030020024198066a200241e8096a41286a29030037030020024190066a200241e8096a41206a29030037030020024188066a200241e8096a41186a29030037030020024180066a200241e8096a41106a290300370300200241f8056a200241e8096a41086a290300370300200241d0036a41a0026a20022903e809370300200241d8066a200241086a41306a290300370300200241d0066a200241086a41286a290300370300200241c8066a200241086a41206a290300370300200241c0066a200241086a41186a290300370300200241b8066a200241086a41106a290300370300200241b0066a200241086a41086a290300370300200241d0036a41d8026a2002290308370300200242073703d0030b200241086a2000200241d0036a10ae080240200229030822054209510d0020024188036a280200210620024180036a2802002107200241f8026a2802002108200241e8026a2802002109200241e0026a2d0000210a200241d0026a280200210b200241c8026a280200210c200241c0026a280200210d200241b0026a280200210e200241a8026a2d0000210f20024198026a280200211020024190026a280200211120024188026a2802002112200241f8016a2802002113200241f0016a2d00002114200241e0016a2802002115200241d8016a2802002116200241d0016a2802002117200241c0016a2802002118200241b8016a2d00002104200241a8016a2802002119200241a0016a280200211a20024198016a280200211b20024188016a280200211c20024180016a2d00002103200241f0006a280200211d200241e8006a280200211e200241e0006a280200211f200241d0006a2802002120200241c8006a2d00002100200241386a2802002121200241306a2802002122200241286a2802002123200241186a2802002124200228028c032125200228028403212620022802fc02212720022802ec02212820022802e402212920022802d402212a20022802cc02212b20022802c402212c20022802b402212d20022802ac02212e200228029c02212f2002280294022130200228028c02213120022802fc01213220022802f401213320022802e401213420022802dc01213520022802d401213620022802c401213720022802bc01213820022802ac01213920022802a401213a200228029c01213b200228028c01213c200228028401213d2002280274213e200228026c213f2002280264214020022802542141200228024c2142200228023c214320022802342144200228022c2145200228021c21462002280214214720022d00102101024002400240024002400240024002402005a70e080800010203040506070b0240024002400240024020010e090c0c0001020c0c030c040b20444101470d0b2043450d0b202110390c0b0b20474101470d0a2046450d0a202410390c0a0b20234101470d092022450d09204510390c090b2024450d08204710390c080b20474101470d072046450d07202410390c070b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b0240024002400240024020000e090b0b0001020b0b030b040b203f4101470d0a203e450d0a201d10390c0a0b20424101470d092041450d09202010390c090b201f4101470d08201e450d08204010390c080b2020450d07204210390c070b20424101470d062041450d06202010390c060b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b0240024002400240024020030e090a0a0001020a0a030a040b203a4101470d092039450d09201910390c090b203d4101470d08203c450d08201c10390c080b201b4101470d07201a450d07203b10390c070b201c450d06203d10390c060b203d4101470d05203c450d05201c10390c050b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b024002400240024002400240024020030e09060600010206060306040b203a4101470d052039450d05201910390c050b203d4101470d04203c0d030c040b201b4101470d03201a450d03203b10390c030b201c450d02203d10390c020b203d4101470d01203c450d010b201c10390b0240024002400240024020040e09090900010209090309040b20354101470d082034450d08201510390c080b20384101470d072037450d07201810390c070b20174101470d062016450d06203610390c060b2018450d05203810390c050b20384101470d042037450d04201810390c040b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b024002400240024002400240024020030e09060600010206060306040b203a4101470d052039450d05201910390c050b203d4101470d04203c0d030c040b201b4101470d03201a450d03203b10390c030b201c450d02203d10390c020b203d4101470d01203c450d010b201c10390b024002400240024002400240024020040e09060600010206060306040b20354101470d052034450d05201510390c050b20384101470d0420370d030c040b20174101470d032016450d03203610390c030b2018450d02203810390c020b20384101470d012037450d010b201810390b0240024002400240024020140e09080800010208080308040b20304101470d07202f450d07201010390c070b20334101470d062032450d06201310390c060b20124101470d052011450d05203110390c050b2013450d04203310390c040b20334101470d032032450d03201310390c030b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b024002400240024002400240024020030e09060600010206060306040b203a4101470d052039450d05201910390c050b203d4101470d04203c0d030c040b201b4101470d03201a450d03203b10390c030b201c450d02203d10390c020b203d4101470d01203c450d010b201c10390b024002400240024002400240024020040e09060600010206060306040b20354101470d052034450d05201510390c050b20384101470d0420370d030c040b20174101470d032016450d03203610390c030b2018450d02203810390c020b20384101470d012037450d010b201810390b024002400240024002400240024020140e09060600010206060306040b20304101470d05202f450d05201010390c050b20334101470d0420320d030c040b20124101470d032011450d03203110390c030b2013450d02203310390c020b20334101470d012032450d010b201310390b02400240024002400240200f0e09070700010207070307040b202b4101470d06202a450d06200b10390c060b202e4101470d05202d450d05200e10390c050b200d4101470d04200c450d04202c10390c040b200e450d03202e10390c030b202e4101470d02202d450d02200e10390c020b024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b024002400240024002400240024020030e09060600010206060306040b203a4101470d052039450d05201910390c050b203d4101470d04203c0d030c040b201b4101470d03201a450d03203b10390c030b201c450d02203d10390c020b203d4101470d01203c450d010b201c10390b024002400240024002400240024020040e09060600010206060306040b20354101470d052034450d05201510390c050b20384101470d0420370d030c040b20174101470d032016450d03203610390c030b2018450d02203810390c020b20384101470d012037450d010b201810390b024002400240024002400240024020140e09060600010206060306040b20304101470d05202f450d05201010390c050b20334101470d0420320d030c040b20124101470d032011450d03203110390c030b2013450d02203310390c020b20334101470d012032450d010b201310390b0240024002400240024002400240200f0e09060600010206060306040b202b4101470d05202a450d05200b10390c050b202e4101470d04202d0d030c040b200d4101470d03200c450d03202c10390c030b200e450d02202e10390c020b202e4101470d01202d450d010b200e10390b02400240024002400240200a0e09060600010206060306040b20264101470d052025450d05200610390c050b20294101470d042028450d04200910390c040b20084101470d032007450d03202710390c030b2009450d02202910390c020b20294101470d012028450d01200910390c010b200241c0036a2802002148200241b8036a2802002149200241b0036a280200214a200241a0036a280200214b20024198036a2d0000214c20022802c403214d20022802bc03214e20022802b403214f20022802a4032150200228029c032151024002400240024002400240024020010e09060600010206060306040b20444101470d052043450d05202110390c050b20474101470d0420460d030c040b20234101470d032022450d03204510390c030b2024450d02204710390c020b20474101470d012046450d010b202410390b024002400240024002400240024020000e09060600010206060306040b203f4101470d05203e450d05201d10390c050b20424101470d0420410d030c040b201f4101470d03201e450d03204010390c030b2020450d02204210390c020b20424101470d012041450d010b202010390b024002400240024002400240024020030e09060600010206060306040b203a4101470d052039450d05201910390c050b203d4101470d04203c0d030c040b201b4101470d03201a450d03203b10390c030b201c450d02203d10390c020b203d4101470d01203c450d010b201c10390b024002400240024002400240024020040e09060600010206060306040b20354101470d052034450d05201510390c050b20384101470d0420370d030c040b20174101470d032016450d03203610390c030b2018450d02203810390c020b20384101470d012037450d010b201810390b024002400240024002400240024020140e09060600010206060306040b20304101470d05202f450d05201010390c050b20334101470d0420320d030c040b20124101470d032011450d03203110390c030b2013450d02203310390c020b20334101470d012032450d010b201310390b0240024002400240024002400240200f0e09060600010206060306040b202b4101470d05202a450d05200b10390c050b202e4101470d04202d0d030c040b200d4101470d03200c450d03202c10390c030b200e450d02202e10390c020b202e4101470d01202d450d010b200e10390b0240024002400240024002400240200a0e09060600010206060306040b20264101470d052025450d05200610390c050b20294101470d0420280d030c040b20084101470d032007450d03202710390c030b2009450d02202910390c020b20294101470d012028450d010b200910390b024002400240024002400240204c0e09060600010206060306040b204e4101470d05204d450d05204810390c050b20514101470d0420500d030c040b204a4101470d032049450d03204f10390c030b204b450d02205110390c020b20514101470d012050450d010b204b10390b200542095221030b200241a00a6a240020030bd40304017f027e017f037e230041d0016b22022400200241086a20011092080240024002402002280208450d00200241086a41106a290300210320022903102104200241206a10fd07024020022d0020450d00200241e0006a200241396a290000370300200241c8006a41106a200241316a290000370300200241d0006a200241296a29000037030020022002290021370348200241c0016a200241c8006a10dd02200241e8006a20022802c001220520022802c80110e102200241e8006a41106a2903004200200229036842015122011b21062002290370420020011b2107024020022802c401450d00200510390b200720047d2208200756200620037d2007200454ad7d220720065620072006511b0d022004200384500d00200241c0016a200241c8006a10dd02200241e8006a20022802c001220520022802c80110e10220024198016a2903004200200229036842015122011b210420024190016a290300420020011b2106024020022802c401450d00200510390b2006200856200420075620042007511b450d00200041173602000c030b2000411b3602000c020b2000419af0ca0036020420004110360200200041086a410d3602000c010b20004200370308200042173703000b200241d0016a24000bb40101027f230041900f6b220224002001280200210320014125360200024002400240024020034125470d002002200141c8076a28020036028c0f200220012802c0073602880f200241c8076a200241880f6a10c40120022802c80722034125470d01412521030c030b2002410c6a200141046a41bc0710c30a1a0c010b2002410c6a200241c8076a41047241bc0710c30a1a0b200041046a2002410c6a41bc0710c30a1a0b20002003360200200241900f6a24000ba61b030b7f017e0a7f230041b0116b22032400410121040240024002400240200241ff01714101460d00200341e0066a41046a200141146a2d00003a0000200341d8066a41046a200141226a2f00003b01002003200128001e3602d8062003200141106a2802003602e006200141156a2800002105200128020c210620012d000b210720012f0009210820012d00082109200128020421042001280200210a20012d0019210b200128001a210c2001280224210d200341b8036a200141286a41a00310c30a1a0c010b200141196a210d200141106a28020021052001280015210920012d0014210c200128020c210a20012d000b210b20012f0009210820012d0008210602402001290300220e42015222010d00200641ff01714101470d00200341e80d6a410172200a10ec08410021040b200320043a00e80d200341980a6a41106a2005360200200320093600ad0a2003200c3a00ac0a2003200a3602a40a2003200b3a00a30a200320083b00a10a200320063a00a00a2003200e3703980a200341980a6a41196a200d41af0310c30a1a024002400240024020010d00200641ff01714101460d010b200341e80d6a41106a2005360200200320093600fd0d2003200c3a00fc0d2003200a3602f40d2003200b3a00f30d200320083b00f10d200320063a00f00d2003200e422088a73602ec0d2003200ea73602e80d200341810e6a200d41af0310c30a1a200341980a6a200341e80d6a10e20841012101024020032d00980a4101470d00200341940a6a200341c20a6a2f01003b0100200320032801be0a3602900a200341b00a6a280200210f200341980a6a41106a2d00002109200341c40a6a280200210d20032801ba0a210c20032d00b90a210b20032800b50a210520032d00b40a211020032802ac0a210620032d00ab0a210720032f00a90a210820032802a40a210420032802a00a210a200341e80d6a200341c80a6a41a00310c30a1a0c030b200341b50a6a2800002105200341b40a6a2d00002110200341b00a6a280200210f200341ac0a6a2802002106200341ab0a6a2d00002107200341a90a6a2f00002108200341980a6a41106a2d00002109200341a40a6a280200210420032802a00a210a20032d009f0a2111200328009b0a211220032f00990a21130c010b200341850e6a2800002105200341840e6a2d00002110200341800e6a280200210f200341fc0d6a2802002106200341fb0d6a2d00002107200341f90d6a2f00002108200341f80d6a2d00002109200341f40d6a2802002104200341f00d6a280200210a20032d00ef0d211120032800eb0d211220032f00e90d2113200341980a6a10af010b410021010b200341880a6a41046a2214200341900a6a41046a2f01003b0100200320032802900a3602880a200341e8066a200341e80d6a41a00310c30a1a02402001450d00200341d8066a41046a20142f01003b0100200320032802880a3602d806200341b8036a200341e8066a41a00310c30a1a200320103a00e4062003200f3602e0060c010b200320113a00e80d200320083b009d0a200320093a009c0a2003200a3600e90d200320043602980a20032802e80d210d200328009b0a2109411010382201450d02200141ac81c40036020c200141013602082001428180808010370200411010382202450d02200a411876210a2004411076210c2002419481c40036020c20024101360208200242818080801037020020012001280200417f6a220b3602000240200b0d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a220b200b280200417f6a220b360200200b0d00200110390b2000200c3a0013200020043b00112000410036020020002005360022200020103a0021200020032802d806360026200041146a2009360200200041106a200a3a00002000410c6a200d360200200041086a20123602002000411d6a200f3600002000201341107441800272360204200320063600e106200320073a00e006200041186a20032802e0063602002000411c6a200341e0066a41046a2d00003a00002000412a6a200341d8066a41046a2f01003b00002000412c6a2002360200200041306a200341b8036a41a00310c30a1a0c010b200341b0036a41046a2201200341e0066a41046a2d00003a0000200341a8036a41046a220f200341d8066a41046a2f01003b0100200320032802e0063602b003200320032802d8063602a803200341086a200341b8036a41a00310c30a1a200341980a6a41106a221020093a0000200341980a6a41186a221420032802b003360200200341b40a6a221120012d00003a0000200341b50a6a22132005360000200341c20a6a2212200f2f01003b0100200341c40a6a2215200d360200200320063602ac0a200320073a00ab0a200320083b00a90a200320043602a40a2003200a3602a00a2003200c3601ba0a2003200b3a00b90a200320032802a8033601be0a200341c80a6a200341086a41a00310c30a2116200320023a00980a200341980a6a41086a21170240024002400240200241ff017122180d0020032903a00a4201520d00200941ff01714101460d010b201020093a0000201420032802b003360200201120012d00003a0000201320053600002012200f2f01003b01002015200d360200200320073a00ab0a200320083b00a90a200320043602a40a2003200a3602a00a2003200b3a00b90a200320032802a8033601be0a200320063602ac0a2003200c3601ba0a2016200341086a41a00310c30a1a200320023a00980a20180d0220032903a00a220ea7210a200e4201520d02200941ff01714102470d0220032802cc0a22090e03010201020b411010382201450d03200141ac81c40036020c200141013602082001428180808010370200411010382202450d032002419481c40036020c20024101360208200242818080801037020020012001280200417f6a2204360200024020040d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22042004280200417f6a220436020020040d00200110390b201710af012000412c6a2002360200200041086a2006360200200041013a0004200041003602000c020b200341c00a6a2802002104200341d00a6a280200211220032800c50a210a20032802bc0a210b20032f00b90a210720032802b40a210f20032802b00a211020032800ab0a211420032802d40a2113411010382201450d02200141ac81c40036020c200141013602082001428180808010370200411010382202450d022002419481c40036020c20024101360208200242818080801037020020012001280200417f6a2211360200024020110d002001280208200128020c2802001102000240200128020c280204450d00200128020810390b200141046a22112011280200417f6a221136020020110d00200110390b024020094101470d002013450d00201210390b20054118762101200c4108762105200641187621060240024020032903a00a4201520d0020032d00a80a22094102460d010240024002400240024020090e09060600010206060306040b20032802cc0a4101470d0520032802d40a450d0520032802d00a10390c050b20032802ac0a4101470d0420032802b40a450d0420032802b00a10390c040b20032802c00a4101470d0320032802c80a450d0320032802c40a10390c030b20032802b00a450d0220032802ac0a10390c020b20032802ac0a4101470d0120032802b40a450d0120032802b00a10390c010b201710af010b2000200a3601222000200d3a00212000200436001d2000200b360019200020073b0116200020013a00152000200f3600112000201036000d200020083b010620004180023b010420004100360200200020032801e806360126200041186a20053a00002000410c6a20063a0000200041086a20143601002000412a6a200341ec066a2f01003b01002000412c6a2002360200200041306a200341e80d6a41a00310c30a1a0c010b20032800a50a210920032800a90a210120032d00b00a210820032800b10a2107200341980a6a41226a200c360100200341b50a6a2005360000200341b10a6a2007360000200341980a6a41186a20083a0000200341a90a6a2001360000200341a50a6a2009360000200341980a6a412c6a200d3602002003200b3a00b90a200320064110763b01ae0a200320064108763a00ad0a200320043a00a40a2003200a3602a00a200341c20a6a200341ac036a2f01003b0100200320032802a8033601be0a200341980a6a41306a200341086a41a00310c30a1a200320023a00980a200341980a6a41086a210102400240200241ff01714102470d0020032903a00a4201520d0020094180808078714180808008470d00200341ac0a6a28020041e807490d010b200341e80d6a41226a2202200141206a280100360100200341820e6a2206200141186a290100370100200341fa0d6a2204200141106a290100370100200341f20d6a220a200141086a290100370100200320012901003701ea0d200041306a200341086a41a00310c30a1a200041286a2002280100360100200041206a2006290100370100200041186a2004290100370100200041106a200a290100370100200041086a20032901ea0d3701002000412c6a200d360200200041013602000c010b411010382202450d01200241ac81c40036020c200241013602082002428180808010370200200110af012000412c6a2002360200200041003b0104200041003602000b200341b0116a24000f0b1030000b8a0401017f410021020240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020010e08000102030405062a2b0b2000280200417f6a0e08060708090a0b0c0d2a0b2000280200417e6a0e070d0e0f10111213290b2000280200417d6a0e06131415161718280b2000280200417c6a0e0518191a1b1c270b2000280200417b6a0e041c1d1e1f260b2000280200417a6a0e031f2021250b200028020041796a0e022122240b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041e8016a0f0b200041e8016a0f0b200041e8016a0f0b200041e8016a0f0b200041a0026a0f0b200041a0026a0f0b200041a0026a0f0b200041d8026a0f0b200041d8026a0f0b20002903004208520d0020004190036a21020b20020b9a5205167f017e067f397e2b7f23004180116b22032400200110b40a21044108210541082106024002400240024002400240024002400240200228020022070e09000102030405060708000b410021060c070b410121060c060b410221060c050b410321060c040b410421060c030b410521060c020b410621060c010b410721060b20042006200210b40a6b22064b210802400240024002400240024002400240024020012802000e09000102030405060708000b410021050c070b410121050c060b410221050c050b410321050c040b410421050c030b410521050c020b410621050c010b410721050b2006200420081b21064108210402400240024002400240024002400240024020070e09000102030405060708000b410021040c070b410121040c060b410221040c050b410321040c040b410421040c030b410521040c020b410621040c010b410721040b024002400240200520064101746b20046a4109490d002000200241c80310c30a1a0c010b2003200241c80310c30a220241086a2105200241c0006a2106200241f8006a2107200241b0016a2108200241e8016a2109200241a0026a210a200241d8026a210b20024190036a210c03404100210402400240024002400240024002400240024020022802000e09080102030405060700080b200c21040c070b200521040c060b200621040c050b200721040c040b200821040c030b200921040c020b200a21040c010b200b21040b02402001290300500d002004450d0020012d000841ff01710d0020042d0000450d00200241a80a6a200210b30a024020022d00a80a2204410a460d000240024002400240024020040e09050500010205050305040b20022802cc0a4101470d0420022802d40a450d0420022802d00a10390c040b20022802ac0a4101470d0320022802b40a450d0320022802b00a10390c030b20022802c00a4101470d0220022802c80a450d0220022802c40a10390c020b20022802b00a450d0120022802ac0a10390c010b20022802ac0a4101470d0020022802b40a450d0020022802b00a10390b200241a80a6a200110ed0820022d00a80a2204410a460d010240024002400240024020040e09060600010206060306040b20022802cc0a4101470d0520022802d40a450d0520022802d00a10390c050b20022802ac0a4101470d0420022802b40a450d0420022802b00a10390c040b20022802c00a4101470d0320022802c80a450d0320022802c40a10390c030b20022802b00a450d0220022802ac0a10390c020b20022802ac0a4101470d0120022802b40a450d0120022802b00a10390c010b0b200241c8036a200241c80310c30a1a200241a80a6a200241c8036a10b30a024020022d00a80a410a460d0020014190036a2104200141d8026a2105200141e8016a2106200141b0016a2107200141f8006a2108200141096a210d200141a0026a2109200141c0006a210a200241a80a6a41d8026a210e200241a80a6a41e8016a210f200241a80a6a41b0016a2110200241a80a6a41f8006a210c200241a80a6a41086a210b200241a80a6a4101722111200241a80a6a41a0026a2112200241a80a6a41c0006a211320022d00a80a2114034020024194076a41026a2215201141026a2d00003a0000200220112f00003b01940720022802ac0a211620022802b00a211720022802b40a211820022903b80a211920022802c00a211a20022802c40a211b20022802c80a211c20022802cc0a211d20022802d00a211e20022802d40a211f20022903d80a21202001290300212120014200370300200141186a2903002122200141286a2903002123200141306a2903002124200141386a2903002125200141c8006a2903002126200141d0006a2903002127200141d8006a2903002128200141e8006a2903002129200141f0006a290300212a2008290300212b20014188016a290300212c20014190016a290300212d20014198016a290300212e200141a8016a290300212f20072903002130200141b8016a2903002131200141c8016a2903002132200141d0016a2903002133200141d8016a290300213420062903002135200141f0016a2903002136200141f8016a290300213720014188026a290300213820014190026a290300213920014198026a290300213a200141a8026a290300213b200141b0026a290300213c200141b8026a290300213d200141c8026a290300213e200141d0026a290300213f20052903002140200141e8026a2903002141200141f0026a2903002142200141f8026a290300214320014188036a29030021442004290300214520014198036a2903002146200141a8036a2903002147200141b0036a290300214820012903c00321492001290308214a2001290310214b2001290320214c2001290340214d2001290360214e200129038001214f20012903a001215020012903c001215120012903e0012152200129038002215320012903a002215420012903c002215520012903e0022156200129038003215720012903a0032158200241a80a6a41b8036a200141b8036a290300370300200241a80a6a41b0036a2048370300200241a80a6a41a8036a2047370300200241a80a6a4198036a2046370300200241a80a6a4190036a2045370300200241a80a6a4188036a2044370300200241a80a6a41f8026a2043370300200241a80a6a41f0026a2042370300200241a80a6a41e8026a2041370300200e2040370300200241a80a6a41d0026a203f370300200241a80a6a41c8026a203e370300200241a80a6a41b8026a203d370300200241a80a6a41b0026a203c370300200241a80a6a41a8026a203b370300200241a80a6a4198026a203a370300200241a80a6a4190026a2039370300200241a80a6a4188026a2038370300200241a80a6a41f8016a2037370300200241a80a6a41f0016a2036370300200f2035370300200241a80a6a41d8016a2034370300200241a80a6a41d0016a2033370300200241a80a6a41c8016a2032370300200241a80a6a41b8016a203137030020102030370300200241a80a6a41a8016a202f370300200241a80a6a4198016a202e370300200241a80a6a4190016a202d370300200241a80a6a4188016a202c370300200c202b370300200241a80a6a41f0006a202a370300200241a80a6a41e8006a2029370300200241a80a6a41d8006a2028370300200241a80a6a41d0006a2027370300200241a80a6a41c8006a2026370300200241a80a6a41386a2025370300200241a80a6a41306a2024370300200241a80a6a41286a2023370300200241a80a6a41186a2022370300200220583703c80d200220573703a80d200220563703880d200220553703e80c200220543703c80c200220533703a80c200220523703880c200220513703e80b200220503703c80b2002204f3703a80b2002204e3703880b2002204d3703e80a2002204c3703c80a2002204b3703b80a2002204a3703b00a200220213703a80a200220493703e80d02400240024002400240024002400240024002402021a722590e080800010203040506070b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c010420221210c080b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a2903003703002002201329030037038810420321210c070b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a290300370300200241d00f6a41306a200c41306a290300370300200241d00f6a41286a200c41286a290300370300200241d00f6a41206a200c41206a290300370300200241d00f6a41186a200c41186a290300370300200241d00f6a41106a200c41106a290300370300200241d00f6a41086a200c41086a29030037030020022013290300370388102002200c2903003703d00f420421210c060b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a290300370300200241d00f6a41306a200c41306a290300370300200241d00f6a41286a200c41286a290300370300200241d00f6a41206a200c41206a290300370300200241d00f6a41186a200c41186a290300370300200241d00f6a41106a200c41106a290300370300200241d00f6a41086a200c41086a29030037030020022013290300370388102002200c2903003703d00f200241980f6a41306a201041306a290300370300200241980f6a41286a201041286a290300370300200241980f6a41206a201041206a290300370300200241980f6a41186a201041186a290300370300200241980f6a41106a201041106a290300370300200241980f6a41086a201041086a290300370300200220102903003703980f420521210c050b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a290300370300200241d00f6a41306a200c41306a290300370300200241d00f6a41286a200c41286a290300370300200241d00f6a41206a200c41206a290300370300200241d00f6a41186a200c41186a290300370300200241d00f6a41106a200c41106a290300370300200241d00f6a41086a200c41086a29030037030020022013290300370388102002200c2903003703d00f200241980f6a41306a201041306a290300370300200241980f6a41286a201041286a290300370300200241980f6a41206a201041206a290300370300200241980f6a41186a201041186a290300370300200241980f6a41106a201041106a290300370300200241980f6a41086a201041086a290300370300200220102903003703980f200241e00e6a41306a200f41306a290300370300200241e00e6a41286a200f41286a290300370300200241e00e6a41206a200f41206a290300370300200241e00e6a41186a200f41186a290300370300200241e00e6a41106a200f41106a290300370300200241e00e6a41086a200f41086a2903003703002002200f2903003703e00e420621210c040b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a290300370300200241d00f6a41306a200c41306a290300370300200241d00f6a41286a200c41286a290300370300200241d00f6a41206a200c41206a290300370300200241d00f6a41186a200c41186a290300370300200241d00f6a41106a200c41106a290300370300200241d00f6a41086a200c41086a29030037030020022013290300370388102002200c2903003703d00f200241980f6a41306a201041306a290300370300200241980f6a41286a201041286a290300370300200241980f6a41206a201041206a290300370300200241980f6a41186a201041186a290300370300200241980f6a41106a201041106a290300370300200241980f6a41086a201041086a290300370300200220102903003703980f200241e00e6a41306a200f41306a290300370300200241e00e6a41286a200f41286a290300370300200241e00e6a41206a200f41206a290300370300200241e00e6a41186a200f41186a290300370300200241e00e6a41106a200f41106a290300370300200241e00e6a41086a200f41086a2903003703002002200f2903003703e00e200241a80e6a41306a201241306a290300370300200241a80e6a41286a201241286a290300370300200241a80e6a41206a201241206a290300370300200241a80e6a41186a201241186a290300370300200241a80e6a41106a201241106a290300370300200241a80e6a41086a201241086a290300370300200220122903003703a80e420721210c030b200241fc106a41026a20152d00003a0000200241c0106a41086a200b41086a290300370300200241c0106a41106a200b41106a290300370300200241c0106a41186a200b41186a290300370300200241c0106a41206a200b41206a290300370300200241c0106a41286a200b41286a290300370300200241c0106a41306a200b41306a290300370300200220022f0194073b01fc102002200b2903003703c01020024188106a41306a201341306a29030037030020024188106a41286a201341286a29030037030020024188106a41206a201341206a29030037030020024188106a41186a201341186a29030037030020024188106a41106a201341106a29030037030020024188106a41086a201341086a290300370300200241d00f6a41306a200c41306a290300370300200241d00f6a41286a200c41286a290300370300200241d00f6a41206a200c41206a290300370300200241d00f6a41186a200c41186a290300370300200241d00f6a41106a200c41106a290300370300200241d00f6a41086a200c41086a29030037030020022013290300370388102002200c2903003703d00f200241980f6a41306a201041306a290300370300200241980f6a41286a201041286a290300370300200241980f6a41206a201041206a290300370300200241980f6a41186a201041186a290300370300200241980f6a41106a201041106a290300370300200241980f6a41086a201041086a290300370300200220102903003703980f200241e00e6a41306a200f41306a290300370300200241e00e6a41286a200f41286a290300370300200241e00e6a41206a200f41206a290300370300200241e00e6a41186a200f41186a290300370300200241e00e6a41106a200f41106a290300370300200241e00e6a41086a200f41086a2903003703002002200f2903003703e00e200241a80e6a41306a201241306a290300370300200241a80e6a41286a201241286a290300370300200241a80e6a41206a201241206a290300370300200241a80e6a41186a201241186a290300370300200241a80e6a41106a201241106a290300370300200241a80e6a41086a201241086a290300370300200220122903003703a80e200241f00d6a41306a200e41306a290300370300200241f00d6a41286a200e41286a290300370300200241f00d6a41206a200e41206a290300370300200241f00d6a41186a200e41186a290300370300200241f00d6a41106a200e41106a290300370300200241f00d6a41086a200e41086a2903003703002002200e2903003703f00d420821210c020b200241a40a6a41026a220b200241b30a6a2d00003a0000200241e8096a41086a2211201341086a290300370300200241e8096a41106a2215201341106a290300370300200241e8096a41186a2259201341186a290300370300200241e8096a41206a225a201341206a290300370300200241e8096a41286a225b201341286a290300370300200241e8096a41306a225c201341306a290300370300200220022f00b10a3b01a40a200220132903003703e809200241b0096a41306a2213200c41306a290300370300200241b0096a41286a225d200c41286a290300370300200241b0096a41206a225e200c41206a290300370300200241b0096a41186a225f200c41186a290300370300200241b0096a41106a2260200c41106a290300370300200241b0096a41086a2261200c41086a290300370300200241f8086a41086a2262201041086a290300370300200241f8086a41106a2263201041106a290300370300200241f8086a41186a2264201041186a290300370300200241f8086a41206a2265201041206a290300370300200241f8086a41286a2266201041286a290300370300200241f8086a41306a2267201041306a2903003703002002200c2903003703b009200220102903003703f808200241c0086a41306a220c200f41306a290300370300200241c0086a41286a2210200f41286a290300370300200241c0086a41206a2268200f41206a290300370300200241c0086a41186a2269200f41186a290300370300200241c0086a41106a226a200f41106a290300370300200241c0086a41086a226b200f41086a29030037030020024188086a41306a226c201241306a29030037030020024188086a41286a226d201241286a29030037030020024188086a41206a226e201241206a29030037030020024188086a41186a226f201241186a29030037030020024188086a41106a2270201241106a29030037030020024188086a41086a2271201241086a2903003703002002200f2903003703c0082002201229030037038808200241d0076a41306a220f200e41306a290300370300200241d0076a41286a2272200e41286a290300370300200241d0076a41206a2273200e41206a290300370300200241d0076a41186a2274200e41186a290300370300200241d0076a41106a2275200e41106a290300370300200241d0076a41086a2276200e41086a2903003703002002200e2903003703d00720024198076a41306a2277200241e80d6a29030037030020024198076a41286a2278200241e00d6a29030037030020024198076a41206a2279200241d80d6a29030037030020024198076a41186a227a200241d00d6a29030037030020024198076a41106a227b200241c80d6a29030037030020024198076a41086a227c200241c00d6a2903003703002002200241b80d6a2903003703980702400240024002400240201441ff01710e090a0a0001020a0a030a040b201d4101470d09201f450d09201e10390c090b20164101470d082018450d08201710390c080b201a4101470d07201c450d07201b10390c070b2017450d06201610390c060b20164101470d052018450d05201710390c050b200241fc106a41026a20152d00003a0000200220022f0194073b01fc10420121210b200241a40a6a41026a2215200241fc106a41026a2d00003a0000200241e8096a41086a225a200241c0106a41086a290300370300200241e8096a41106a225b200241c0106a41106a290300370300200241e8096a41186a225c200241c0106a41186a290300370300200241e8096a41206a225d200241c0106a41206a290300370300200241e8096a41286a225e200241c0106a41286a290300370300200241e8096a41306a225f200241c0106a41306a290300370300200220022f01fc103b01a40a200220022903c0103703e809200241b0096a41306a226020024188106a41306a290300370300200241b0096a41286a226120024188106a41286a290300370300200241b0096a41206a226220024188106a41206a290300370300200241b0096a41186a226320024188106a41186a290300370300200241b0096a41106a226420024188106a41106a290300370300200241b0096a41086a226520024188106a41086a290300370300200241f8086a41086a2266200241d00f6a41086a290300370300200241f8086a41106a2267200241d00f6a41106a290300370300200241f8086a41186a2268200241d00f6a41186a290300370300200241f8086a41206a2269200241d00f6a41206a290300370300200241f8086a41286a226a200241d00f6a41286a290300370300200241f8086a41306a226b200241d00f6a41306a29030037030020022002290388103703b009200220022903d00f3703f808200241c0086a41306a226c200241980f6a41306a290300370300200241c0086a41286a226d200241980f6a41286a290300370300200241c0086a41206a226e200241980f6a41206a290300370300200241c0086a41186a226f200241980f6a41186a290300370300200241c0086a41106a2270200241980f6a41106a290300370300200241c0086a41086a2271200241980f6a41086a29030037030020024188086a41306a2272200241e00e6a41306a29030037030020024188086a41286a2273200241e00e6a41286a29030037030020024188086a41206a2274200241e00e6a41206a29030037030020024188086a41186a2275200241e00e6a41186a29030037030020024188086a41106a2276200241e00e6a41106a29030037030020024188086a41086a2277200241e00e6a41086a290300370300200220022903980f3703c008200220022903e00e37038808200241d0076a41306a2278200241a80e6a41306a290300370300200241d0076a41286a2279200241a80e6a41286a290300370300200241d0076a41206a227a200241a80e6a41206a290300370300200241d0076a41186a227b200241a80e6a41186a290300370300200241d0076a41106a227c200241a80e6a41106a290300370300200241d0076a41086a227d200241a80e6a41086a290300370300200220022903a80e3703d00720024198076a41306a227e200241f00d6a41306a29030037030020024198076a41286a227f200241f00d6a41286a29030037030020024198076a41206a228001200241f00d6a41206a29030037030020024198076a41186a228101200241f00d6a41186a29030037030020024198076a41106a228201200241f00d6a41106a29030037030020024198076a41086a228301200241f00d6a41086a290300370300200220022903f00d3703980702402059417f6a4107490d00200241a80a6a10af010b200110af01200120143a000820012021370300200120203703382001201f3602342001201e3602302001201d36022c2001201c3602282001201b3602242001201a3602202001201937031820012018360214200120173602102001201636020c200d20022f01a40a3b0000200d41026a20152d00003a0000200a20022903e809370300200a41086a205a290300370300200a41106a205b290300370300200a41186a205c290300370300200a41206a205d290300370300200a41286a205e290300370300200a41306a205f290300370300200841306a2060290300370300200841286a2061290300370300200841206a2062290300370300200841186a2063290300370300200841106a2064290300370300200841086a2065290300370300200820022903b009370300200720022903f808370300200741086a2066290300370300200741106a2067290300370300200741186a2068290300370300200741206a2069290300370300200741286a206a290300370300200741306a206b290300370300200641306a206c290300370300200641286a206d290300370300200641206a206e290300370300200641186a206f290300370300200641106a2070290300370300200641086a2071290300370300200620022903c008370300200941306a2072290300370300200941286a2073290300370300200941206a2074290300370300200941186a2075290300370300200941106a2076290300370300200941086a20772903003703002009200229038808370300200541306a2078290300370300200541286a2079290300370300200541206a207a290300370300200541186a207b290300370300200541106a207c290300370300200541086a207d290300370300200520022903d007370300200441306a207e290300370300200441286a207f290300370300200441206a208001290300370300200441186a208101290300370300200441106a208201290300370300200441086a2083012903003703002004200229039807370300200241a80a6a200241c8036a10b30a20022d00a80a2214410a470d000b0b200241c8036a10af01200042093703000b20034180116a24000f0b200110af012001204a3c000820012021370300200120233e02282001204c4220883e02242001204c3e0220200d20022f01a40a3b0000200d41026a200b2d00003a0000200120243e0230200120234220883e022c2001204b3e02102001204a4220883e020c200a20022903e809370300200a41086a2011290300370300200a41106a2015290300370300200a41186a2059290300370300200a41206a205a290300370300200a41286a205b290300370300200a41306a205c29030037030020012025370338200120244220883e0234200120223703182001204b4220883e0214200841306a2013290300370300200841286a205d290300370300200841206a205e290300370300200841186a205f290300370300200841106a2060290300370300200841086a2061290300370300200820022903b009370300200720022903f808370300200741086a2062290300370300200741106a2063290300370300200741186a2064290300370300200741206a2065290300370300200741286a2066290300370300200741306a2067290300370300200641306a200c290300370300200641286a2010290300370300200641206a2068290300370300200641186a2069290300370300200641106a206a290300370300200641086a206b290300370300200620022903c008370300200941306a206c290300370300200941286a206d290300370300200941206a206e290300370300200941186a206f290300370300200941106a2070290300370300200941086a20712903003703002009200229038808370300200541306a200f290300370300200541286a2072290300370300200541206a2073290300370300200541186a2074290300370300200541106a2075290300370300200541086a2076290300370300200520022903d007370300200441306a2077290300370300200441286a2078290300370300200441206a2079290300370300200441186a207a290300370300200441106a207b290300370300200441086a207c29030037030020042002290398073703004184efca004130200241a80a6a41b4efca0041c4efca00103d000bff8101090e7f027e087f047e097f017e067f017e017f230041c0286b22052400024002400240024002400240024002400240024002400240024002400240024002400240024020032d0000417f6a0e0700080105040302010b200541b0096a200341106a41c80310c30a1a20054190206a41086a22042003410c6a2802003602002005200341046a29020037039020200541c8006a200220054190206a10b00820054180016a2005280248200528024c200528025010b1082004200541c8006a41146a2802003602002005200529025437039020200541e0006a20054190206a10b208200541a0016a410c6a20054180016a41086a290300370200200541a0016a41146a20054180016a41106a290300370200200541bc016a20054180016a41186a280200360200200541c4016a2005290360370200200541cc016a200541e0006a41086a290300370200200541d4016a200541e0006a41106a290300370200200541dc016a200541e0006a41186a280200360200200541013602a00120052005290380013702a401200541013602c00120054188156a41d0036a210620054188156a41106a2102200541a80d6a41d0036a2107200541a80d6a41106a210820054190206a41106a210920054190206a410472210a200541a0016a410472210b20054190206a41d8036a210c4101210d4101210e0340024002400240200e4101460d002005410c3602a80d0c010b0240024002400240024020052802bc012204450d0020052004417f6a3602bc0120052802a8012204450d0120052802a401210f20052802ac01221020042f01a629490d0203400240024020042802a02922010d00410021010c010b200f41016a211120042f01a42921100b024041d82941a829200f1b450d00200410390b024020010d004102210f0c050b2011210f20012104201020012f01a6294f0d000b200121042011210f0c020b410c21042005410c360290200240200d450d00200b10cb0320052802902021040b200b200529028815370200200b41086a20054188156a41086a290200370200200b41106a2002290200370200200b41186a20054188156a41186a280200360200200541003602a0012005410c3602a80d02402004410c470d004100210d4100210e0c050b20054190206a10ac014100210d4100210e0c030b41b4fcca00412b41e4f8ca001035000b201041016a21012004201041d0036c6a2111200420104104746a221041f8276a2112201041f0276a21100240200f450d00200420014102746a41a8296a28020021040240200f417f6a2201450d00034020042802a82921042001417f6a22010d000b0b410021010b201229030021132010290300211420112802082115201128020c2116201128020421172011280200210f20054188156a201141106a41c00310c30a1a0b200541c81c6a20054188156a41c00310c30a1a200520013602ac01200520043602a801200541003602a40102400240200f450d0020054190206a41186a2013370300200520143703a0202005201636029c2020052015360298202005201736029420410821040c010b2005201636029c2020052015360298202009200541c81c6a41c00310c30a1a200c2013370300200520143703e023410a21040b2005200436029020200541a80d6a20054190206a41f80310c30a1a4101210e0b20052802a80d2204410c460d0020052802b40d210120052802b00d210f20052802ac0d2118200541f0056a200841c00310c30a1a200541c8056a41206a200741206a290300370300200541c8056a41186a200741186a290300370300200541c8056a41106a200741106a290300370300200541c8056a41086a200741086a290300370300200520072903003703c8050c010b02400240024020052802c0014101470d0020052802dc012204450d0020052004417f6a3602dc01024020052802c8012201450d0020052802c401210f024020052802cc01221020012f01ae2b4f0d0020012104200f21110c030b03400240024020012802a82b22040d00410021040c010b200f41016a211120012f01ac2b21100b024041e02b41b02b200f1b450d00200110390b024020040d00410221100c050b200421012011210f201020042f01ae2b490d030c000b0b41b4fcca00412b41e4f8ca001035000b0240200d450d00200b10cb030b024020052802c001450d0020052802c8012204450d0020052802c401210120052802cc01210f200520052802dc0136029c202005200f360298202005200436029420200520013602902020054190206a10cc030b200541b0096a10af01420021140c0c0b201041016a21012004201041f8036c6a210f02402011450d00200420014102746a41b02b6a280200210402402011417f6a2201450d00034020042802b02b21042001417f6a22010d000b0b410021010b200f2802082119200f28020c211a200f280204211b200f280200211020054190206a200f41106a41c00310c30a1a200541c81c6a41206a200f41f0036a290200370300200541c81c6a41186a200f41e8036a290200370300200541c81c6a41106a200f41e0036a290200370300200541c81c6a41086a200f41d8036a2902003703002005200f2902d0033703c81c0b20054188156a20054190206a41c00310c30a1a200541f0276a41206a220f200541c81c6a41206a290300370300200541f0276a41186a2211200541c81c6a41186a290300370300200541f0276a41106a2212200541c81c6a41106a290300370300200541f0276a41086a221c200541c81c6a41086a290300370300200520052903c81c3703f027200520013602cc01200520043602c801200541003602c401024002402010450d00200541f0056a41206a200f290300370300200541f0056a41186a2011290300370300200541f0056a41106a2012290300370300200541f0056a41086a201c290300370300200520052903f0273703f00541092104201b21180c010b200541f0056a20054188156a41c00310c30a1a200541c8056a41206a200f290300370300200541c8056a41186a2011290300370300200541c8056a41106a2012290300370300200541c8056a41086a201c290300370300200520052903f0273703c805410b21040b024020052802a80d410c460d00200541a80d6a10ac010b2019210f201a21010b20054188026a200541f0056a41c00310c30a1a200541e0016a41206a2210200541c8056a41206a290300370300200541e0016a41186a2211200541c8056a41186a290300370300200541e0016a41106a2212200541c8056a41106a290300370300200541e0016a41086a221c200541c8056a41086a290300370300200520052903c8053703e00120052001360294152005200f360290152005201836028c152005200436028815200220054188026a41c00310c30a1a200641206a2010290300370300200641186a2011290300370300200641106a2012290300370300200641086a201c290300370300200620052903e00137030020054190206a20054188156a200541b0096a10b3082005280290202104200541a80d6a200a41b40710c30a1a02402004411b470d0020054188156a10ac010c010b0b200020043602082000410c6a200541a80d6a41b40710c30a1a2000420137030020054188156a10ac010240200d450d00200b10cb030b024020052802c001450d0020052802c8012204450d0020052802c401210120052802cc01210f200520052802dc0136029c202005200f360298202005200436029420200520013602902020054190206a10cc030b200541b0096a10af014100210f41012104410121014101211041012111410121060c100b200042013703002000410536020841012104410121010c040b200541b0096a200341106a220f41f80310c30a1a2003410c6a2802002106200341086a2802002111200341046a2802002112024002400240024002400240024002400240024020034188046a290300221420034190046a2903007c2213201454221c0d0020032d00012119200541a80d6a200f41f80310c30a1a20054188156a2002200541a80d6a10b4082005280288154101460d01200541c8056a41086a220f20054188156a41146a290200370300200520054188156a410c6a2902003703c805200529028c15211d200541386a2013108c05200541386a41086a290300211e2005290338211f200541a0016a41106a200f2903003703002005201d3703a001200520052903c8053703a80120054180116a201e370300200541f8106a201f370300200541a80d6a41086a221042003703002005410a3602a80d20054188026a200541a0016a200541a80d6a10b408200541a0016a41086a210f02400240200528028802221a4101460d00200541f0056a41086a200f41086a290200221d37030020054190206a41106a2207200529028c0237030020054190206a41086a221b201d37030020054190206a41186a220a20054188026a410c6a29020037030020054190206a41206a220b20054188026a41146a2902003703002005200f290200221d3703f0052005201d3703902020052802a001211820052802a401210e200541f01c6a220f200b290300370300200541c81c6a41206a200a290300370300200541c81c6a41186a220a2007290300370300200541c81c6a41106a201b29030037030020052005290390203703d01c2005200e3602cc1c200520183602c81c2010201b29030037030020052005290390203703a80d200a1085060240200f280200220f450d000240200541ec1c6a2802002210450d000340200f2802b02b210f2010417f6a22100d000b0b200541003602f8052005200f3602f405200541003602f0052005200541f41c6a2802003602fc05200541f0056a10cc030b2004427f2004290300221d20137c22132013201d541b3703002004427f20042903082213201f7c221f201f201354220f200441106a22102903002213201e7c200fad7c221e201354201e2013511b220f1b3703082010427f201e200f1b3703000c010b200541f0056a41086a200f41086a29020022133703002005200f290200221e3703f00520052802a001211820052802a401210f200541a80d6a41106a221020133703002005200f3602ac0d200520183602a80d2005201e3703b00d200541a80d6a10850602402010280200220f450d00024020052802b40d2210450d000340200f2802b02b210f2010417f6a22100d000b0b20054100360290022005200f36028c0220054100360288022005200541bc0d6a2802003602940220054188026a10cc030b4119210e0b20054188156a200541a80d6a41b40710c30a1a201a0d03200541f0276a41086a20054188156a41086a221a29020022133703002005200529028815221e3703f02720054190206a41106a20133703002005200e3602942020052018360290202005201e37039820200220054190206a10a508200520143703f0052012200641e0076c220f6a21180240200f0d0042002114201221010c090b20054190206a410172210e201941ff0171450d07200641e0076c41a0786a21102012210f4200211403400240200f2d00002219410b470d00200f41e0076a21010c0a0b200541a80d6a200f41016a41df0710c30a1a200541c81c6a200110ab03200520193a009020200e200541a80d6a41df0710c30a1a20054188156a200541c81c6a410020054190206a200541f0056a42002014200410a3082005290388154201510d03201041a0786a211020052903901520147c2114200f41e0076a220f2018470d000c0a0b0b20004201370300200042013703080c030b20004201370300200041143602080c020b200041086a201a41b80710c30a1a2000420137030002402010450d00200f41e0076a21040340200410ef04200441e0076a2104201041a0786a22100d000b0b2011450d03201141e0076c450d030c020b2000200e3602082000410c6a20054188156a41b40710c30a1a200042013703000b02402006450d00200641e0076c2101201221040340200410a601200441e0076a2104200141a0786a22010d000b0b2011450d01201141e0076c450d010b201210390b0240201c450d00200541b0096a10ac010b41002111410121044101210141012110410121060c100b200541e0186a211c20054188156a41106a21192012210f4200211402400340200f2d00002210410b460d01200541a80d6a200f41016a41df0710c30a1a200541c81c6a200110ab03200520103a009020200e200541a80d6a41df0710c30a1a20054188156a200541c81c6a410020054190206a200541f0056a42002014200410a308024002402005290388154201510d0020052903901520147c21140c010b200528029015410b470d00201910af01201c10d2030b200f41e0076a220f2018470d000c030b0b200f41e0076a21010b20182001460d002012200641e0076c6a210f0340200110ef04200f200141e0076a2201470d000b0b02402011450d00201141e0076c450d00201210390b200541286a2004290300221320052903f005221e2013201e541b221f108c0520054190206a41086a4200370300200541e8236a200541286a41086a290300221d370300200541e0236a2005290328221e37030020042013201f7d3703002004420020042903082213201e7d221f201f201356200441106a2201290300221f201d7d2013201e54ad7d2213201f562013201f511b220f1b370308200142002013200f1b3703002005410a36029020200220054190206a10b5080c060b200341106a2903002120200541c81c6a200341186a41c80310c30a1a200341086a2802002121200341046a28020021222003410c6a2802002123200541f0276a41106a22094200370300200542003702f42702400240202341f8036c2204450d00202220046a2107200541f0276a410c6a21082002410c6a2117200541a80d6a41106a211620054190206a41086a210e20054190116a210d20054190206a410c6a2115200541a80d6a41e0036a2111200541a80d6a41206a211c20054190206a41206a2119200541a80d6a41086a211a200241146a212420054180116a2118200541a80d6a41d3036a212520222112034002400240024002400240024002400240024002400240024002400240201228020022040e0c0d000102030c0b0a090809080d0b02400240200241086a2802000d00200542003702f4050c010b20022802042204450d07200541f0056a2002280200200410fe050b02400240200241146a2802000d0020054200370294200c010b20022802102204450d0620054190206a2017280200200410fc050b200541fc056a2204200529039020370200200441086a20054190206a41086a280200360200200541f0276a1085062005280280282204450d0f024020052802fc272201450d00034020042802b02b21042001417f6a22010d000b0b200541003602982020052004360294202005410036029020200520052802842836029c2020054190206a10cc030c0f0b02400240200241086a2802000d0020054200370294200c010b20022802042204450d0420054190206a2002280200200410fe050b20152008290200370200201541086a200841086a280200360200200541f0276a108506200920054190206a41106a290300370300200541f0276a41086a200e29030037030020052005290390203703f0270c0b0b200e200541f0276a41086a220f280200360200200520052903f027370390200240024020242802000d00200542003702ac0d0c010b20022802102204450d02200541a80d6a2017280200200410fc050b201520052903a80d370200201541086a201a28020036020002402005280280282204450d00024020052802fc272201450d00034020042802b02b21042001417f6a22010d000b0b200541003602b00d200520043602ac0d200541003602a80d20052005280284283602b40d200541a80d6a10cc030b200920054190206a41106a290300370300200f200e29030037030020052005290390203703f0270c0a0b200541f0056a200210b608200541b0096a41186a200541f0056a41186a2802002204360200200541b0096a41106a200541f0056a41106a290300370300200541b0096a41086a200541f0056a41086a290300370300200520052903f0053703b0092004450d0920052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b200f41016a210f20012f01a429211020042101201020042f01a6294f0d000b0b02400240200f450d00201041027420046a41ac296a28020021010240200f417f6a220f450d00034020012802a8292101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20062001360204200641003602002006200f3602082004201041d0036c6a2101200420104104746a41f0276a21040340200441086a29030021142004290300211302400240200128020022104101470d002001410c6a280200220f417f4c0d192001280204210102400240200f0d00410121040c010b200f10382204450d1b0b2005200f36029820200520043602942020042001200f10c30a1a2005200f36029c2041082101200529039820211e2013211f2014211d0c010b200e200141086a10ab0320054190206a41186a290300211d20052903a020211f200529039820211e200541a80d6a201941b00310c30a1a410a21010b20054188156a200541a80d6a41b00310c30a1a200541a0016a41086a220f20054188026a41086a290300370300200541a0016a41106a220620054188026a41106a29030037030020052005290388023703a001200541a80d6a41186a201d3703002005201f3703b80d200520043602ac0d200520013602a80d2005201e3703b00d201c20054188156a41b00310c30a1a20182014370300201120052903a001370300201141086a200f290300370300201141106a2006290300370300200520133703f810024002402010450d00201228020c201e422088a72201470d0020122802042004200110c60a0d0020054190206a200541a80d6a41f80310c30a1a200541f0276a20054190206a10b5080c010b200541a80d6a10ac010b20052802c8092204450d0a20052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b200f41016a210f20012f01a429211020042101201020042f01a6294f0d000b0b02400240200f450d00201041027420046a41ac296a28020021010240200f417f6a220f450d00034020012802a8292101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20062001360204200641003602002006200f3602082004201041d0036c6a2101200420104104746a41f0276a21040c000b0b41b4fcca00412b41d8f1c3001035000b41b4fcca00412b41d8f1c3001035000b41b4fcca00412b41d8f1c3001035000b41b4fcca00412b41d8f1c3001035000b0240024002400240200441776a0e03020001000b41e8f5ca00412841ccf0c6001035000b20054190206a201241086a10ab0320052802942021062005280290202104200541a80d6a200e41c00310c30a1a4100211b4100210f024002400240024002400240024020122d00d0030e0706010203040500060b201241dc036a280200220c417f4c0d19201241d4036a280200210102400240200c0d00410121260c010b200c10382226450d1b0b200c410876212720262001200c10c30a41087621284106210f200c21290c050b201241e0036a290300212a20122903d8032214422088a7210c2014420888a721272014a721294101210f0c040b20122f00d103201241d3036a2d000041107472212b20122d00d40321264102210f0c030b20122800d4032226410876212820122f00d103201241d3036a2d000041107472212b20122d00d80321294103210f0c020b202a42807e8320123100e00384212a20122800d8032229410876212720122800d4032226410876212820122f00d103201241d3036a2d000041107472212b20122800dc03210c4104210f0c010b20054188156a41086a201241f0036a2d00003a0000200520122900e8033703881520122800d4032226410876212820122f00d103201241d3036a2d000041107472212b201241e0036a290000212a20122900d8032214422088a7210c2014420888a721272014a721294105210f0b20054190206a200541a80d6a41c00310c30a1a200541b0096a41086a20054188156a41086a29030037030020052005290388153703b0092028410874202641ff017172210a200cad4220862027410874202941ff017172ad842114202b2101202a21130c010b2012410c6a2802002204417f4c0d12201228020421010240024020040d00410121100c010b200410382210450d140b20102001200410c30a1a4100210f024002400240024002400240024020122d00100e0706010203040500060b2012411c6a280200222c417f4c0d18201241146a280200210102400240202c0d004101212d0c010b202c1038222d450d1a0b202c410876212e202d2001202c10c30a410876212f4106210f202c21300c050b201241206a290300213120122903182214422088a7212c2014420888a7212e2014a721304101210f0c040b20122f0011201241136a2d000041107472213220122d0014212d4102210f0c030b2012280014222d410876212f20122f0011201241136a2d000041107472213220122d001821304103210f0c020b203142807e83201231002084213120122800182230410876212e2012280014222d410876212f20122f0011201241136a2d0000411074722132201228001c212c4104210f0c010b200e201241306a2d00003a000020052012290028370390202012280014222d410876212f20122f0011201241136a2d0000411074722132201241206a290000213120122900182214422088a7212c2014420888a7212e2014a721304105210f0b200541b0096a41086a200e29030037030020052005290390203703b009202f410874202d41ff017172210a202cad422086202e410874203041ff017172ad8421144101211b2004210620322101203121130b20054188156a20054190206a41c00310c30a1a200541f0056a41086a220b200541b0096a41086a290300370300200520052903b0093703f005200520063602b40d200520043602b00d200520103602ac0d201620054188156a41c00310c30a1a20112013370300200d20052903f005370300200d41086a200b290300370300200520013b00f910202520014110763a000020052014370380112005200a3602fc102005200f3a00f8102005201b3602a80d024020022802102206450d002017280200211b034020062f01ae2b220a41f8036c2104417f210f2006210102400340024020040d00200a210f0c020b200f41016a210f200441887c6a2104200541a80d6a200110e9012110200141f8036a2101201041ff01714101460d000b0240201041187441187541016a0e020100010b20054190206a200541a80d6a41f80310c30a1a200820054190206a10f7050c070b0240201b450d00201b417f6a211b2006200f4102746a41b02b6a28020021060c010b0b20052802a80d211b0b02400240201b0d00201a10af010c010b20052802b00d450d0020052802ac0d10390b20052d00f8104106490d04200528028011450d0420052802fc1010390c040b0240024002400240200441786a0e03020001000b41e8f5ca00412841bcf0c6001035000b20054190206a201241086a10ab032005280294202106200528029020210420054188156a200e41c00310c30a1a201241d0036a2101410021100c010b2012410c6a2802002204417f4c0d1120122802042106410121104101210f02402004450d0020041038220f450d130b201241106a2101200f2006200410c30a1a200421060b200141086a290300211420012903002113200520063602b40d200520043602b00d2005200f3602ac0d200520103602a80d201620054188156a41c00310c30a1a02402002280204221b450d002002280200210a0340201b41e0276a2110201b2f01a629220b41d0036c2104417f210f201b210102400340024020040d00200b210f0c020b200f41016a210f201041106a2110200441b07c6a2104200541a80d6a200110ea012106200141d0036a2101200641ff01714101460d000b0240200641187441187541016a0e020100010b20054190206a200541a80d6a41d00310c30a1a200541f0276a20054190206a2010290300221e20132013201e562014201041086a290300221e562014201e511b22041b201e201420041b10b7080c060b0240200a450d00200a417f6a210a201b200f4102746a41a8296a280200211b0c010b0b20052802a80d21100b024020100d00201a10af010c040b20052802b00d450d0320052802ac0d10390c030b200541f0056a201710b808200541b0096a41186a200541f0056a41186a280200360200200541b0096a41106a200541f0056a41106a290300370300200541b0096a41086a200541f0056a41086a290300370300200520052903f0053703b009201241086a211b034020052802c8092204450d0320052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01ae2b4f0d00200121040c010b200121040340024020042802a82b22040d00410021040c020b200f41016a210f20012f01ac2b211020042101201020042f01ae2b4f0d000b0b02400240200f450d00201041027420046a41b42b6a28020021010240200f417f6a220f450d00034020012802b02b2101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20062001360204200641003602002006200f36020820054190206a2004201041f8036c6a10b908200528029020410c460d0320054188156a20054190206a41f80310c30a1a200541a80d6a20054188156a41f80310c30a1a024020052802a80d410b470d00201b201a10ba08450d0020054190206a200541a80d6a41f80310c30a1a200541f0276a20054190206a10b5080c010b200541a80d6a10ac010c000b0b200541f0056a200210b608200541b0096a41186a200541f0056a41186a2802002204360200200541b0096a41106a200541f0056a41106a290300370300200541b0096a41086a200541f0056a41086a290300370300200520052903f0053703b0092004450d0120052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b200f41016a210f20012f01a429211020042101201020042f01a6294f0d000b0b02400240200f450d00201041027420046a41ac296a28020021010240200f417f6a220f450d00034020012802a8292101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b201241086a211b20062001360204200641003602002006200f3602082004201041d0036c6a2101200420104104746a41f0276a21040340200441086a29030021142004290300211302400240200128020022104101470d002001410c6a280200220f417f4c0d112001280204210102400240200f0d00410121040c010b200f10382204450d130b2005200f36029820200520043602942020042001200f10c30a1a2005200f36029c2041082101200529039820211e2013211f2014211d0c010b200e200141086a10ab0320054190206a41186a290300211d20052903a020211f200529039820211e200541a80d6a201941b00310c30a1a410a21010b20054188156a200541a80d6a41b00310c30a1a200541a0016a41086a220f20054188026a41086a290300370300200541a0016a41106a220620054188026a41106a29030037030020052005290388023703a001200541a80d6a41186a201d3703002005201f3703b80d2005201e3703b00d200520043602ac0d200520013602a80d201c20054188156a41b00310c30a1a20182014370300201120052903a001370300201141086a200f290300370300201141106a2006290300370300200520133703f8100240024020100d00201b201a10ba08450d0020054190206a200541a80d6a41f80310c30a1a200541f0276a20054190206a10b5080c010b200541a80d6a10ac010b20052802c8092204450d0220052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b200f41016a210f20012f01a429211020042101201020042f01a6294f0d000b0b02400240200f450d00201041027420046a41ac296a28020021010240200f417f6a220f450d00034020012802a8292101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20062001360204200641003602002006200f3602082004201041d0036c6a2101200420104104746a41f0276a21040c000b0b200541f0056a201710b808200541b0096a41186a200541f0056a41186a280200360200200541b0096a41106a200541f0056a41106a290300370300200541b0096a41086a200541f0056a41086a290300370300200520052903f0053703b009034020052802c8092204450d0120052004417f6a3602c809200541b0096a410020052802b4091b2206280200210f0240024020062802082210200628020422012f01ae2b4f0d00200121040c010b200121040340024020042802a82b22040d00410021040c020b200f41016a210f20012f01ac2b211020042101201020042f01ae2b4f0d000b0b02400240200f450d00201041027420046a41b42b6a28020021010240200f417f6a220f450d00034020012802b02b2101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20062001360204200641003602002006200f36020820054190206a2004201041f8036c6a10b908200528029020410c460d0120054188156a20054190206a41f80310c30a1a200541a80d6a20054188156a41f80310c30a1a024020052802a80d4109470d00201228020c220420052802b40d470d00201228020420052802ac0d200410c60a0d0020054190206a20054188156a41f80310c30a1a200541f0276a20054190206a10b5080c010b200541a80d6a10ac010c000b0b201241f8036a22122007470d000b0b200541f0056a41106a2009290300370300200541f0056a41086a200541f0276a41086a290300370300200520052903f0273703f0050b20054190206a200541c81c6a10a808200541f0056a20054190206a10bb0820054188156a20052802f00520052802f40520052802f80510b108200541a80d6a41086a200541f0056a41146a280200360200200520052902fc053703a80d200541b0096a200541a80d6a10b208200541a80d6a410c6a20054188156a41086a290300370200200541a80d6a41146a20054188156a41106a2204290300370200200541c40d6a20054188156a41186a280200360200200541cc0d6a20052903b009370200200541d40d6a200541b0096a41086a290300370200200541dc0d6a200541b0096a41106a290300370200200541e40d6a200541b0096a41186a280200360200200541013602a80d20052005290388153702ac0d200541013602c80d200541c8056a200541a80d6a10c90320054190206a10af01200541b0096a200541c81c6a41c80310c30a1a2004202037030020054188156a410c6a200541c8056a41086a280200360200200520052903c80537028c15200541033a00881520054190206a200541b0096a20054188156a10a1072005280290202104200541a80d6a20054190206a41047241b40710c30a1a02402004411b470d0002402023450d00202341f8036c2101202221040340200410ac01200441f8036a2104200141887c6a22010d000b0b02402021450d00202141f8036c450d00202210390b420021140c060b200020043602082000410c6a200541a80d6a41b40710c30a1a2000420137030002402023450d00202341f8036c2101202221040340200410ac01200441f8036a2104200141887c6a22010d000b0b02402021450d00202141f8036c450d00202210390b4100211041012104410121010c030b200341086a2802002112200341046a28020021062003410c6a2802002111200541c81c6a200341206a41c80310c30a1a200541a0016a41086a221c200341186a2802003602002005200341106a2902003703a0010240201141f8036c2201450d0020054190206a410172210f200541106a41106a2110200621040340200541106a2004109208024020052802104101470d00201029030021142005290318211320054190206a10fd0720052d009020450d00200541a80d6a41186a200f41186a290000370300200541a80d6a41106a200f41106a290000370300200541a80d6a41086a200f41086a2900003703002005200f2900003703a80d2005200541a80d6a201320141093082005290300200541086a29030010f8040b200441f8036a2104200141887c6a22010d000b0b200520113602982020052012360294202005200636029020200541f0056a200220054190206a10b00820054190206a200541c81c6a10a808200541f0056a20054190206a10bb0820054188156a20052802f00520052802f40520052802f80510b108200541a80d6a41086a200541f0056a41146a280200360200200520052902fc053703a80d200541b0096a200541a80d6a10b208200541a80d6a410c6a20054188156a41086a290300370200200541a80d6a41146a20054188156a41106a2201290300370200200541c40d6a20054188156a41186a220f280200360200200541cc0d6a20052903b009370200200541d40d6a200541b0096a41086a290300370200200541dc0d6a200541b0096a41106a290300370200200541e40d6a200541b0096a41186a28020036020041012104200541013602a80d20052005290388153702ac0d200541013602c80d20054188026a200541a80d6a10c90320054190206a10af01200541b0096a200541c81c6a41c80310c30a1a20054188156a410c6a20054188026a41086a280200360200200120052903a001370300200f201c280200360200200520052903880237028c15200541023a00881520054190206a200541b0096a20054188156a10a1072005280290202101200541a80d6a20054190206a41047241b40710c30a1a02402001411b470d00420021140c050b200020013602082000410c6a200541a80d6a41b40710c30a1a20004201370300410021010c010b200541c81c6a200341206a41c80310c30a1a200541a0016a41086a2204200341186a2802003602002005200341106a2902003703a00120054190206a41086a2003410c6a2802003602002005200341046a29020037039020200541f0056a200220054190206a10b00820054190206a200541c81c6a10a808200541f0056a20054190206a10bb0820054188156a20052802f00520052802f40520052802f80510b108200541a80d6a41086a200541f0056a41146a280200360200200520052902fc053703a80d200541b0096a200541a80d6a10b208200541a80d6a410c6a20054188156a41086a290300370200200541a80d6a41146a20054188156a41106a220f290300370200200541c40d6a20054188156a41186a2210280200360200200541cc0d6a20052903b009370200200541d40d6a200541b0096a41086a290300370200200541dc0d6a200541b0096a41106a290300370200200541e40d6a200541b0096a41186a28020036020041012101200541013602a80d20052005290388153702ac0d200541013602c80d20054188026a200541a80d6a10c90320054190206a10af01200541b0096a200541c81c6a41c80310c30a1a20054188156a410c6a20054188026a41086a280200360200200f20052903a00137030020102004280200360200200520052903880237028c1541002104200541003a00881520054190206a200541b0096a20054188156a10a107200528029020210f200541a80d6a20054190206a41047241b40710c30a1a0240200f411b470d00420021140c040b2000200f3602082000410c6a200541a80d6a41b40710c30a1a200042013703000b410121100b41012111410121060c080b200541c81c6a200341206a41c80310c30a1a200341186a2802002108200341146a2802002117200341106a280200210920054190206a41086a2003410c6a2802003602002005200341046a29020037039020200541e0016a200220054190206a10b008200541a0016a200541e0016a10b608200541f0276a200541e0016a410c6a10b80820054188026a410c6a221b200541a0016a41086a29030037020020054188026a41146a200541a0016a41106a290300370200200541a4026a200541a0016a41186a280200360200200541ac026a221920052903f027370200200541b4026a221a200541f0276a41086a290300370200200541bc026a200541f0276a41106a290300370200200541c4026a200541f0276a41186a2802003602002005410136028802200520052903a00137028c02200541013602a802200541b0026a2102200541f0236a211c20054190206a41206a210b20054188156a41206a211620054188156a41086a210d20054188026a410472210720054188026a41086a210a20054190206a4104722118200541e8236a21154101210403400240024002400240024020044101460d002005410c360290200c010b024020052802a4022204450d0020052004417f6a3602a4022007410020052802900222041b2211280200210f02400240201b410820041b22062802002210200a410420041b221228020022012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b200f41016a210f20012f01a429211020042101201020042f01a6294f0d000b0b02400240200f450d00201041027420046a41ac296a28020021010240200f417f6a220f450d00034020012802a8292101200f417f6a220f0d000b0b4100210f0c010b201041016a210f200421010b20122001360200201141003602002006200f360200200420104104746a220141f8276a2903002114200141f0276a2903002113024002402004201041d0036c6a22012802004101470d002001410c6a2802002204417f4c0d0c200128020421010240024020040d004101210e0c010b20041038220e450d0e0b20052004360290152005200e36028c15200e2001200410c30a1a200520043602941541082104200529039015211e0c010b200d200141086a10ab0320054188156a41186a290300212a2005290398152131200529039015211e200541f0056a201641b00310c30a1a410a21042013211f2014211d20312113202a21140b20054190206a41186a2014370300200520133703a0202005201e370398202005200e360294202005200436029020200b200541f0056a41b00310c30a1a2015201d370300201c20052903c805370300201c41086a200541c8056a41086a290300370300201c41106a200541c8056a41106a2903003703002005201f3703e023200541a80d6a20054190206a41f80310c30a1a0c020b2005410c3602902020054100360288020b024020052802a8024101460d002005410c3602a80d0c020b02400240024020052802c4022204450d0020052004417f6a3602c4022019410020052802b00222041b2211280200210f02400240201a410820041b220628020022102002410420041b221228020022012f01ae2b4f0d00200121040c010b200121040340024020042802a82b22040d00410021040c020b200f41016a210f20012f01ac2b211020042101201020042f01ae2b4f0d000b0b200f450d01201041027420046a41b42b6a28020021010240200f417f6a220f450d00034020012802b02b2101200f417f6a220f0d000b0b4100210f0c020b2005410c3602a80d0c030b201041016a210f200421010b20122001360200201141003602002006200f360200200541a80d6a2004201041f8036c6a10b908200528029020410c460d0020054190206a10ac010b20052802a80d410c470d010b200541f0056a41106a200541e0016a41106a290300370300200541f0056a41086a2204200541e0016a41086a290300370300200520052903e0013703f00520054190206a200541c81c6a10a808200541f0056a20054190206a10bb0820054188156a20052802f00520052802f405200428020010b108200541a80d6a41086a200541f0056a41146a280200360200200520052902fc053703a80d200541b0096a200541a80d6a10b208200541a80d6a410c6a20054188156a41086a290300370200200541a80d6a41146a20054188156a41106a2204290300370200200541c40d6a20054188156a41186a2201280200360200200541cc0d6a20052903b009370200200541d40d6a200541b0096a41086a290300370200200541dc0d6a200541b0096a41106a290300370200200541e40d6a200541b0096a41186a280200360200200541013602a80d20052005290388153702ac0d200541013602c80d20054188026a200541a80d6a10c90320054190206a10af01200541b0096a200541c81c6a41c80310c30a1a20054188156a410c6a20054188026a41086a2802003602002001200836020020054188156a41146a201736020020042009360200200520052903880237028c15200541013a00881520054190206a200541b0096a20054188156a10a1072005280290202104200541a80d6a20054190206a41047241b40710c30a1a2004411b470d03420021140c020b200541b0096a200541a80d6a41f80310c30a1a20054188156a200541b0096a41f80310c30a1a20054190206a20054188156a200541c81c6a10b3082005280290202104200541a80d6a201841b40710c30a1a2004411b470d0420054188156a10ac0120052802880221040c000b0b200042003703002000201437030820032d0000220441074b0d01410120047441f60171450d010c080b200020043602082000410c6a200541a80d6a41b40710c30a1a200042013703000c040b200310bc080c060b200020043602082000410c6a200541a80d6a41b40710c30a1a2000420137030020054188156a10ac01200541e0016a1085060240200541f0016a2802002204450d00024020052802ec012201450d00034020042802b02b21042001417f6a22010d000b0b2005410036029820200520043602942020054100360290202005200541f4016a28020036029c2020054190206a10cc030b02402008450d0020084198046c2101200921040340200410bf0120044198046a2104200141e87b6a22010d000b0b02402017450d0020174198046c450d00200910390b200541c81c6a10af010c020b1034000b1030000b41002106410121044101210141012110410121110b4101210f0b024002400240024002400240024020032d0000417f6a0e0700010602030405060b200f450d0602402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410ac01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410390b200341106a10af010c060b2006450d0502402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410ac01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410390b200341206a10af010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0520044198046c450d05200328021010390c050b2004450d0402402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410ac01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410390b200341206a10af010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0420044198046c450d04200328021010390c040b2001450d0302402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410ac01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410390b200341206a10af010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0320044198046c450d03200328021010390c030b2010450d02200341186a10af0102402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410ac01200441f8036a2104200141887c6a22010d000b0b200341086a2802002204450d02200441f8036c450d02200328020410390c020b2011450d01200341106a10ac0102402003410c6a2802002201450d00200341046a2802002104200141e0076c21010340200410a601200441e0076a2104200141a0786a22010d000b0b200341086a2802002204450d01200441e0076c450d01200328020410390c010b200310bc080b200541c0286a24000b9d4104207f037e067f027e23004190206b22032400200341086a41106a42003703002003420037020c200228020022042002280208220541f8036c22066a210720022802042108200421090240024002402005450d00200341086a410c6a210a2001410c6a210b200641887c6a210c200341881c6a410472210d200341881c6a41d0036a210e20034188146a41cc036a210f20034190186a41cc036a211020034188146a41086a211120034188146a410472211220034190186a410472211320034190186a41086a211420034190106a410472211520034190106a41086a2116200341881c6a41086a2117200341f00b6a4104722118200341f00b6a41086a211920034190086a410472211a20034190086a41086a211b20034188146a41046a211c20034190106a41d0036a211d200341f00b6a41106a211e200341881c6a41046a211f200341f00b6a41d0036a212020034198046a410472212120034188146a41d8036a21222004210903402009220241f8036a210920022802002205410c460d01200341246a200241046a41f40310c30a1a20032005360298042021200341246a41f40310c30a1a024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e0c170001020e0b0d0a07050804170b2001290210212320014200370210200129020021242001290208212520014200370204200041106a2023370200200020253702082000202437020020034198046a10ac01024020072009460d000340200910ac01200941f8036a2109200c41887c6a220c0d000b0b02402008450d00200841f8036c450d00200410390b200341086a10850620032802182202450d1b024020032802142205450d00034020022802b02b21022005417f6a22050d000b0b200341003602901c2003200236028c1c200341003602881c2003200328021c3602941c200341881c6a10cc030c1b0b20012802082102200128020421052001420037020420034190106a20012802002005200210d40520034190186a41186a20034190106a41186a280200220236020020034190186a41106a20034190106a41106a290300370300201420162903003703002003200329039010370390182002450d1420032002417f6a22263602a8182003280294182202450d012003280290182127200328029818222820022f01a629490d1203400240024020022802a02922050d00410021050c010b202741016a210620022f01a42921280b024041d82941a82920271b450d00200210390b024020050d00410221050c150b2006212720052102202820052f01a6294f0d000b20052102200621270c120b20012802142102200128021021052001420037021020034190106a200128020c2005200210d305200328029810212820032802941021022003280290102106024020032802a81022260d0020022105202821270c100b02402002450d000240202820022f01ae2b4f0d0020022105200621290c0f0b03400240024020022802a82b22050d00410021050c010b200641016a212920022f01ac2b21280b024041e02b41b02b20061b450d00200210390b024020050d00410221020c110b2005210220292106202820052f01ae2b490d0f0c000b0b41b4fcca00412b41e4f8ca001035000b41b4fcca00412b41e4f8ca001035000b200341f00b6a20034198046a41f80310c30a1a0c010b200341f00b6a20034198046a41f80310c30a1a0b024002400240024020032802f00b41776a0e03020001000b41e8f5ca00412841e4efc6001035000b201f201941c80310c30a1a20034190186a41206a202041206a29030037030020034190186a41186a202041186a29030037030020034190186a41106a202041106a2903003703002014202041086a290300370300200320202903003703901820034188146a200341881c6a41cc0310c30a1a410021020c010b2011201841086a2802003602002014201e41086a29030037030020034190186a41106a201e41106a29030037030020034190186a41186a201e41186a29030037030020034190186a41206a201e41206a29030037030020032018290200370388142003201e29030037039018410121020b20034190086a20034188146a41cc0310c30a1a200341e80f6a41206a220520034190186a41206a290300370300200341e80f6a41186a220620034190186a41186a290300370300200341e80f6a41106a222720034190186a41106a290300370300200341e80f6a41086a2228201429030037030020032003290390183703e80f201520034190086a41cc0310c30a1a201d41206a2005290300370300201d41186a2006290300370300201d41106a2027290300370300201d41086a2028290300370300201d20032903e80f3703002003200236029010024020012802102228450d00200b2802002126034020282f01ae2b222a41f8036c21294100210241ac2b2106417f2105024002400340024020292002470d00202a21050c020b200541016a2105200641046a2106202820026a2127200241f8036a210220034190106a202710e901222741ff01714101460d000b0240202741187441187541016a0e020100010b200341003a00e00b024002402026450d00202820066a2802002102024020264101460d00410121050340200220022f01ae2b4102746a41b02b6a28020021022026200541016a2205470d000b0b20022f01ae2b2105200341003602901820032005417f6a410020051b3602981820032002410020051b36029418200341881c6a20034190186a200341e00b6a10da0120034190186a200341881c6a41f80310c30a1a200328028020210502400240200328028820220620032802842022272f01ae2b4f0d00202721020c010b202721020340024020022802a82b22020d00410021020c020b200541016a210520272f01ac2b210620022127200620022f01ae2b4f0d000b0b200341881c6a2002200641f8036c6a222741f80310c30a1a202720034190186a41f80310c30a1a02402005450d002005417f6a2205450d00200641027420026a41b42b6a2802002102034020022802b02b21022005417f6a22050d000b0b20034188146a200341881c6a41f80310c30a1a0c010b200320053602901c2003202836028c1c200341003602881c20034188146a200341881c6a200341e00b6a10da010b200328028814210220034190186a201241f40310c30a1a20012001280214417f6a36021402400240024020032d00e00b450d0020012802102205450d01200b2802002206450d02200120052802b02b222736021020012006417f6a36020c202741003602a82b200510390b20024102460d03200320023602881c200d20034190186a41f40310c30a1a200a200341881c6a10f7050c030b41b4fcca00412b418cfeca001035000b41c5f2ca00412141e8f2ca001035000b2026450d002026417f6a2126202820054102746a41b02b6a28020021280c010b0b20032802901021020b0240024020020d00201610af010c010b200328029810450d0020032802941010390b024020032d00e0134106490d0020032802e813450d0020032802e41310390b024020032802f00b41776a0e03120012000b200341f00b6a10ac010c110b200341881c6a20034198046a41f80310c30a1a0c010b200341881c6a20034198046a41f80310c30a1a0b024002400240024020032802881c41786a0e03020001000b41e8f5ca00412841d4efc6001035000b200341881c6a41d8036a290300212320032903d81f2124201c201741c80310c30a1a20034190186a20034188146a41cc0310c30a1a410021020c010b2014200d41086a2802003602002003200d29020037039018200341881c6a41186a290300212320032903981c2124410121020b200320023602f00b201820034190186a41cc0310c30a1a0240024020012802042229450d002001280200222b21260340202941e0276a212720292f01a629222a41d0036c2102417f21062029210502400340024020020d00202a21060c020b200641016a2106202741106a2127200241b07c6a2102200341f00b6a200510ea012128200541d0036a2105202841ff01714101460d000b0240202841187441187541016a0e020100010b0240024002402027290300222c202458202741086a290300222520235820252023511b0d000240024020032802f00b4101470d0020032802fc0b2202417f4c0d0420032802f40b2127410121054101210602402002450d00200210382206450d040b20032002360290142003200636028c1420062027200210c30a1a20032002360294140c010b2011201910ab03410021050b2003200536028814200120034188146a202c20247d202520237d202c202454ad7d10f50520034188146a200341f00b6a41d00310c30a1a200341086a20034188146a2024202310b7080c060b024020012802042228450d00202b2126034020282f01a629222a41d0036c21294100210241a4292106417f210502400340024020292002470d00202a21050c020b202820026a2127200541016a2105200641046a2106200241d0036a2102200341f00b6a202710ea01222741ff01714101460d000b0240202741187441187541016a0e020100010b200341003a009008024002402026450d00202820066a2802002102024020264101460d00410121050340200220022f01a6294102746a41a8296a28020021022026200541016a2205470d000b0b20022f01a6292105200341003602901020032005417f6a410020051b3602981020032002410020051b3602941020034188146a20034190106a20034190086a10df0120034190106a20034188146a41d00310c30a1a2022290300212320032903d817212420032802e81721270240024020032802f017220620032802ec1722052f01a6294f0d00200521020c010b0340024020052802a02922020d00410021020c020b202741016a212720052f01a429210620022105200620022f01a6294f0d000b0b20034188146a2002200641d0036c6a220541d00310c30a1a200520034190106a41d00310c30a1a200220064104746a220541f0276a2228290300212d20282024370300200541f8276a220529030021242005202337030002402027450d002027417f6a2205450d00200641027420026a41ac296a2802002102034020022802a82921022005417f6a22050d000b0b20034190186a20034188146a41d00310c30a1a20034190186a41d8036a20243703002003202d3703e01b0c010b20032005360290142003202836028c14200341003602881420034190186a20034188146a20034190086a10df010b200328029018210220034190106a201341dc0310c30a1a20012001280208417f6a36020802400240024020032d009008450d0020012802042205450d01202b450d02200120052802a82922063602042001202b417f6a360200200641003602a029200510390b20024102460d042003200236028814201220034190106a41dc0310c30a1a024020020d00201110af010c050b200328029014450d04200328028c1410390c040b41b4fcca00412b418cfeca001035000b41c5f2ca00412141e8f2ca001035000b2026450d012026417f6a2126202820054102746a41a8296a28020021280c000b0b20034188146a200341f00b6a41d00310c30a1a200341086a20034188146a202c202510b7080c050b1030000b1034000b02402026450d002026417f6a2126202920064102746a41a8296a28020021290c010b0b20032802f00b21020b024020020d00201910af010c010b20032802f80b450d0020032802f40b10390b024020032802881c41786a0e030f000f000b200341881c6a10ac010c0e0b20034188146a20034198046a41f80310c30a1a0c010b20034188146a20034198046a41f80310c30a1a0b0240024002400240200328028814417b6a0e03020001000b41e8f5ca00412841c4efc6001035000b201b201141c80310c30a1a410021020c010b201a2012290200370200201a41086a201241086a280200360200410121020b2003200236029008200128021021022001280214210520014200370210200342003702e40b200341e80f6a200128020c2002200510d30520032802f00f212820032802ec0f210220032802e80f21060240024020032802801022260d0020022105202821270c010b0240024002402002450d000240202820022f01ae2b4f0d0020022105200621290c020b03400240024020022802a82b22050d00410021050c010b200641016a212920022f01ac2b21280b024041e02b41b02b20061b450d00200210390b024020050d00410221020c040b2005210220292106202820052f01ae2b490d020c000b0b41b4fcca00412b41e4f8ca001035000b202841016a21272005202841f8036c6a210602402029450d00200520274102746a41b02b6a280200210502402029417f6a2202450d00034020052802b02b21052002417f6a22020d000b0b410021270b20062802002102200341881c6a200641046a41f40310c30a1a0b20034190106a200341881c6a41f40310c30a1a034020034190186a20034190106a41f40310c30a1a200320023602f00b201820034190106a41cc0310c30a1a2026417f6a2126024002402003280290082002470d000240024020024101460d00201b201910ba080d010c020b200328029c08220220032802fc0b470d0120032802940820032802f40b200210c60a0d010b200341881c6a200341f00b6a41d00310c30a1a200e41206a201041206a290200370200200e41186a201041186a290200370200200e41106a201041106a290200370200200e41086a201041086a290200370200200e2010290200370200200a200341881c6a10a1090c010b200341881c6a200341f00b6a41d00310c30a1a200e41206a201041206a290200370200200e41186a201041186a290200370200200e41106a201041106a290200370200200e41086a201041086a290200370200200e2010290200370200200341e00b6a200341881c6a10f7050b024020260d00410021060c020b02402005450d000240024002400240202720052f01ae2b490d0041002106034041002102024020052802a82b2229450d00200641016a212820052f01ac2b2127202921020b024041e02b41b02b20061b450d00200510390b024020020d00410221020c050b2002210520282106202720022f01ae2b4f0d000b2002202741f8036c6a2106024020280d00200221050c020b202741027420026a41b42b6a280200210502402028417f6a2202450d00034020052802b02b21052002417f6a22020d000b0b410021270c020b2005202741f8036c6a21060b202741016a21270b20062802002102200341881c6a200641046a41f40310c30a1a0b20034190106a200341881c6a41f40310c30a1a0c010b0b41b4fcca00412b41e4f8ca001035000b02402005450d00200341003602941c200320273602901c2003200536028c1c200320063602881c200341881c6a10cc030b2014200341e00b6a41086a280200360200200320032903e00b37039018024020012802102202450d000240200128020c2205450d00034020022802b02b21022005417f6a22050d000b0b200342003703901c2003200236028c1c200341003602881c200341881c6a10cc030b200b200329039018370200200b41086a2014280200360200024002402003280290080d00201b10af010c010b200328029808450d0020032802940810390b0240200328028814417b6a0e030c000c000b20034188146a10ac010c0b0b200341881c6a20034198046a41f80310c30a1a0c010b200341881c6a20034198046a41f80310c30a1a0b024002400240024020032802881c417c6a0e03020001000b41e8f5ca00412841b4efc6001035000b2016201741c80310c30a1a410021020c010b2015200d290200370200201541086a200d41086a280200360200410121020b2003200236029010200128020421022001280208210520014200370204200342003702e40b200341e80f6a20012802002002200510d40520034190086a41186a200341e80f6a41186a280200220236020020034190086a41106a200341e80f6a41106a290300370300201b200341e80f6a41086a290300370300200320032903e80f3703900802402002450d0020032002417f6a22263602a8080240024002402003280294082202450d002003280290082127200328029808222820022f01a629490d0103400240024020022802a02922050d00410021050c010b202741016a210620022f01a42921280b024041d82941a82920271b450d00200210390b024020050d00410221050c040b2006212720052102202820052f01a6294f0d000b20052102200621270c010b41b4fcca00412b41e4f8ca001035000b202841016a21062002202841d0036c6a2129200220284104746a220541f8276a2128200541f0276a212a02402027450d00200220064102746a41a8296a280200210202402027417f6a2205450d00034020022802a82921022005417f6a22050d000b0b410021060b20282903002124202a29030021232029280200210520034188146a202941046a41cc0310c30a1a0b200341f00b6a20034188146a41cc0310c30a1a200320063602980820032002360294082003410036029008034020032005360290182013200341f00b6a41cc0310c30a1a024002402005200328029010470d000240024020054101460d002014201610ba08450d020c010b200328029c182205200328029c10470d01200328029418200328029410200510c60a0d010b20034188146a20034190186a41d00310c30a1a200341086a20034188146a2023202410b7080c010b20034188146a20034190186a41d00310c30a1a200341e00b6a20034188146a2023202410f5050b024002400240024002402026450d0020032026417f6a22263602a8082002450d01200620022f01a629490d0241002106034041002105024020022802a0292229450d00200641016a212820022f01a4292127202921050b024041d82941a82920061b450d00200210390b024020050d00410221050c060b2028210620052102202720052f01a6294f0d000b202741016a21062005202741d0036c6a2129200520274104746a220241f8276a2903002124200241f0276a2903002123024020280d00200521020c040b200520064102746a41a8296a280200210202402028417f6a2205450d00034020022802a82921022005417f6a22050d000b0b410021060c030b200320063602980820034100360290080c050b41b4fcca00412b41e4f8ca001035000b2002200641d0036c6a2129200220064104746a220541f8276a2903002124200541f0276a2903002123200641016a21060b2029280200210520034188146a202941046a41cc0310c30a1a0b200341f00b6a20034188146a41cc0310c30a1a20032002360294080c000b0b20034190086a10cb032001108506200141086a200341e00b6a41086a280200360200200120032903e00b370200024002402003280290100d00201610af010c010b200328029810450d0020032802941010390b024020032802881c417c6a0e03090009000b200341881c6a10ac010c080b202841016a21272005202841f8036c6a210602402029450d00200520274102746a41b02b6a280200210502402029417f6a2202450d00034020052802b02b21052002417f6a22020d000b0b410021270b20062802002102200341881c6a200641046a41f40310c30a1a0b20034190186a200341881c6a41f40310c30a1a0240034020034188146a20034190186a41f40310c30a1a200320023602881c200d20034190186a41cc0310c30a1a200e41206a200f41206a290200370200200e41186a200f41186a290200370200200e41106a200f41106a290200370200200e41086a200f41086a290200370200200e200f290200370200200a200341881c6a10a1092026417f6a2226450d012005450d030240024002400240202720052f01ae2b490d0041002106034041002102024020052802a82b2229450d00200641016a212820052f01ac2b2127202921020b024041e02b41b02b20061b450d00200510390b024020020d00410221020c050b2002210520282106202720022f01ae2b4f0d000b2002202741f8036c6a2106024020280d00200221050c020b202741027420026a41b42b6a280200210502402028417f6a2202450d00034020052802b02b21052002417f6a22020d000b0b410021270c020b2005202741f8036c6a21060b202741016a21270b20062802002102200341881c6a200641046a41f40310c30a1a0b20034190186a200341881c6a41f40310c30a1a0c000b0b410021060b2005450d04200341003602941c200320273602901c2003200536028c1c200320063602881c200341881c6a10cc030c040b41b4fcca00412b41e4f8ca001035000b202841016a21062002202841d0036c6a2129200220284104746a220541f8276a2128200541f0276a212a02402027450d00200220064102746a41a8296a280200210202402027417f6a2205450d00034020022802a82921022005417f6a22050d000b0b410021060b20282903002124202a290300212320292802002105200341881c6a202941046a41cc0310c30a1a0b20034188146a200341881c6a41cc0310c30a1a2003200636029818200320023602941820034100360290180340200320053602881c200d20034188146a41cc0310c30a1a200341086a200341881c6a2023202410b708024002400240024002402026450d0020032026417f6a22263602a8182002450d01200620022f01a629490d0241002106034041002105024020022802a0292229450d00200641016a212820022f01a4292127202921050b024041d82941a82920061b450d00200210390b024020050d00410221050c060b2028210620052102202720052f01a6294f0d000b202741016a21062005202741d0036c6a2129200520274104746a220241f8276a2903002124200241f0276a2903002123024020280d00200521020c040b200520064102746a41a8296a280200210202402028417f6a2205450d00034020022802a82921022005417f6a22050d000b0b410021060c030b200320063602981820034100360290180c050b41b4fcca00412b41e4f8ca001035000b2002200641d0036c6a2129200220064104746a220541f8276a2903002124200541f0276a2903002123200641016a21060b20292802002105200341881c6a202941046a41cc0310c30a1a0b20034188146a200341881c6a41cc0310c30a1a20032002360294180c000b0b20034190186a10cb030b20034198046a10ac010b200c41887c6a210c20092007470d000c020b0b20072009460d000340200910ac012007200941f8036a2209470d000b0b02402008450d00200841f8036c450d00200410390b20002003290308370200200041106a200341086a41106a290300370200200041086a200341086a41086a2903003702000b20034190206a24000bf80101037f230041206b220424000240024002402002450d00200221050240034020022f01a6292106024020010d002001450d020c050b2001450d042001417f6a2101200220064102746a41a8296a280200210220052802a82921050c000b0b2000200136020c200041003602082000200536020420002001360200200041146a2006360200200041106a20023602000c010b4100210320004100360204200041106a41003602000b20002003360218200441206a24000f0b200441146a410136020020044201370204200441bcfaca003602002004410436021c200441b4faca003602182004200441186a360210200441c4faca001043000b8b0201057f230041206b2202240002400240024020012802042203450d002001280208210420012802002101200321050240034020032f01ae2b2106024020010d002001450d020c050b2001450d042001417f6a2101200320064102746a41b02b6a280200210320052802b02b21050c000b0b2000200136020c200041003602082000200536020420002001360200200041146a2006360200200041106a20033602000c010b4100210420004100360204200041106a41003602000b20002004360218200241206a24000f0b200241146a410136020020024201370204200241bcfaca003602002002410436021c200241b4faca003602182002200241186a360210200241c4faca001043000bf10302017f027e23004180086b22032400200341106a2001109208024002400240024002402003290310a7450d00200341106a41106a290300210420032903182105024020022903004201520d0020022d00084101460d020b200341b8046a200210ab03200341e8006a200341b8046a10e20820032d00684101460d03200341d0006a200341f2006a290100370300200341d8006a200341fa006a290100370300200341df006a20034181016a2900003700002003200329016a3703480c020b2000419af0ca0036020420004110360200200041086a410d3602000c030b200341e8006a410172200228020c10ec08200341d0006a200341f2006a290100370300200341d8006a200341fa006a290100370300200341df006a20034181016a2900003700002003200329016a3703480b20032d00692102200341c0006a200341df006a290000370000200341396a200341d8006a290300370000200341316a200341c8006a41086a29030037000020032003290348370029200320023a00282003200341286a20052004109308200341086a2903002104200329030021052000411b3602002005200410f8040c010b200341b8046a200341e8006a41086a41c80310c30a1a200341b8046a10af01200041086a4119360200200041a7f0ca00360204200041103602000b20034180086a24000bbe0a03017f027e017f230041a00b6b22032400024002400240024002400240024002400240024002400240024020022802000e0c01000a0b0608070903050204010b200041003602002001290200210420012902082105200142003702042000410c6a200537020020002004370204200141106a2202290200210420024200370200200041146a20043702000c0b0b20004100360200200041146a4200370200200041086a42003702000c0a0b200241d8036a2903002104200241d0036a2903002105200341f0036a41086a200241086a41c80310c30a1a200341003602f00320002001200341f0036a2005200410bb0a0c090b200241186a2903002104200241106a2903002105200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f40320002001200341f0036a2005200410bb0a0c080b200341f0036a41086a200241086a41c80310c30a1a200341003602f003200341f0076a200241f0036a290300370300200341e8076a200241e8036a290300370300200341e0076a200241e0036a290300370300200341d0076a41086a200241d8036a2903003703002003200241d0036a2903003703d00720002001200341f0036a200341d0076a10bc0a0c070b200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f403200341d0076a41206a200241306a290300370300200341d0076a41186a200241286a290300370300200341d0076a41106a200241206a290300370300200341d8076a200241186a2903003703002003200241106a2903003703d00720002001200341f0036a200341d0076a10bc0a0c060b200341186a22064200370300200341206a410c6a2002410c6a2802003602002003420037020c2003410136022020032002290204370224200341f0036a2001200341206a10bd0a024020032802f0034102460d00200341c8076a290300210420032903c0072105200341d0076a200341f0036a41d00310c30a1a200341086a200341d0076a2005200410be0a0b2000200329030837020420004100360200200041146a20062903003702002000410c6a200341086a41086a290300370200024020032802200d00200341206a41086a10af010c060b200341206a41086a280200450d05200328022410390c050b200341206a41086a200241086a41c80310c30a2106200341186a220242003703002003420037020c20034100360220200341f0036a2001200341206a10bd0a024020032802f0034102460d00200341c8076a290300210420032903c0072105200341d0076a200341f0036a41d00310c30a1a200341086a200341d0076a2005200410be0a0b2000200329030837020420004100360200200041146a20022903003702002000410c6a200341086a41086a290300370200024020032802200d00200610af010c050b2003280228450d04200328022410390c040b200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f403200041046a2001200341f0036a10bf0a20004100360200200341f8036a280200450d0320032802f40310390c030b200341f0036a41086a200241086a41c80310c30a2102200341003602f003200041046a2001200341f0036a10bf0a20004100360200200210af010c020b20004100360200200129020021042001280208210220014200370204200041146a42003702002000410c6a2002360200200020043702040c010b20004100360200200041106a200129020c370200200041086a4200370200200141146a2802002102200141106a4200370200200041186a20023602000b200341a00b6a24000bf50c04067f027e037f017e230041900b6b2202240041012103410121044101210541012106024002400240024002400240024002400240024002400240024002402001280200220741786a0e0403020001060b200141d8036a2903002108200141d0036a2903002109200241086a41046a200141086a41c80310c30a1a200241003602980720024198076a410472200241086a41cc0310c30a1a0240024020002802042205450d002000280200210a0c010b41a82910382205450d074100210a200541003b01a629200541003602a02920002005360204200041003602000b0240034020052f01a629220b41d0036c210c4100210741e0272103417f2106024003400240200c2007470d00200b21060c020b200520076a2104200641016a2106200341106a2103200741d0036a210720024198076a200410ea01220441ff01714101460d000b0240200441187441187541016a0e020100010b20024198076a10b90a200520036a2207427f2007290300220d20097c22092009200d542206200741086a2207290300220920087c2006ad7c220820095420082009511b22061b3703002007427f200820061b3703000c020b0240200a450d00200a417f6a210a200520064102746a41a8296a28020021050c010b0b200241a0076a22072802002103200229039807210d200241d4036a200241a4076a220441c40310c30a1a200720033602002002200d370398072004200241d4036a41c40310c30a1a200241f00a6a2006360200200241ec0a6a2005360200200220003602f40a200241003602e80a20024198076a2009200810ba0a1a0b4101210441002103410121050c030b200241086a41046a200141086a41c80310c30a1a41002105200241003602980720024198076a410472200241086a41cc0310c30a1a20024198076a41f0036a200141f0036a29030037030020024198076a41e8036a200141e8036a29030037030020024198076a41e0036a200141e0036a29030037030020024198076a41d8036a200141d8036a2903003703002002200141d0036a2903003703e80a2000410c6a20024198076a10a10941012103410121040c020b20024198076a410c6a2001410c6a280200360200200241f00a6a200141186a290300370300200241f80a6a200141206a290300370300200241800b6a200141286a290300370300200241880b6a200141306a2903003703004101210320024101360298072002200129020437029c072002200141106a2903003703e80a2000410c6a20024198076a10a1094100210641012104410121050c020b200141186a2903002108200141106a290300210920024198076a410c6a2001410c6a28020036020020024101360298072002200129020437029c070240024020002802042205450d002000280200210a0c010b41a82910382205450d044100210a200541003b01a629200541003602a02920002005360204200041003602000b0240034020052f01a629220b41d0036c210c4100210741e0272103417f2106024003400240200c2007470d00200b21060c020b200520076a2104200641016a2106200341106a2103200741d0036a210720024198076a200410ea01220441ff01714101460d000b0240200441187441187541016a0e020100010b20024198076a10b90a200520036a2207427f2007290300220d20097c22092009200d542206200741086a2207290300220920087c2006ad7c220820095420082009511b22061b3703002007427f200820061b3703000c020b0240200a450d00200a417f6a210a200520064102746a41a8296a28020021050c010b0b200241a0076a22072802002103200229039807210d200241086a200241a4076a220441c40310c30a1a200720033602002002200d370398072004200241086a41c40310c30a1a200241f00a6a2006360200200241ec0a6a2005360200200220003602f40a200241003602e80a20024198076a2009200810ba0a1a0b4100210441012103410121050b410121060b200128020021070b200741786a0e0405040302010b1030000b200110ac010c040b2005450d03200141086a10af01200141d0036a2d00004106490d03200141d8036a280200450d03200141d4036a28020010390c030b2003450d02200141086a10af010c020b2006450d010240200141086a280200450d00200128020410390b200141106a2d00004106490d01200141186a280200450d01200141146a28020010390c010b2004450d00200141086a280200450d00200128020410390b200241900b6a24000b8a0201057f230041206b22022400024002400240200128020422030d004100210420004100360204200041106a41003602000c010b20012802002104200321050240034020032f01a6292106024020040d002004450d020c040b2004450d032004417f6a2104200320064102746a41a8296a280200210320052802a82921050c000b0b2000200436020c200041003602082000200536020420002004360200200041146a2006360200200041106a2003360200200128020821040b20002004360218200241206a24000f0b200241146a410136020020024201370204200241bcfaca003602002002410436021c200241b4faca003602182002200241186a360210200241c4faca001043000be30302087f017e230041b0076b22042400200441d0036a200141d00310c30a1a02400240024020002802042205450d00200028020021060c010b41a82910382205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b0240034020052f01a629220741d0036c21084100210141e0272109417f210a02400340024020082001470d002007210a0c020b200520016a210b200a41016a210a200941106a2109200141d0036a2101200441d0036a200b10ea01220b41ff01714101460d000b0240200b41187441187541016a0e020100010b200441d0036a10b90a200520096a2201427f2001290300220c20027c22022002200c54220a200141086a2201290300220220037c200aad7c220320025420032002511b220a1b3703002001427f2003200a1b3703000c020b02402006450d002006417f6a21062005200a4102746a41a8296a28020021050c010b0b200441d8036a2201280200210920042903d003210c2004410c6a200441dc036a220b41c40310c30a1a200120093602002004200c3703d003200b2004410c6a41c40310c30a1a200441a8076a200a360200200441a4076a2005360200200420003602ac07200441003602a007200441d0036a2002200310ba0a1a0b200441b0076a24000f0b1030000b8f0203047f017e017f230041206b22022400024002400240200128020422030d004100210341002104410021010c010b20012802002205ad4220862106200321040240034020032f01ae2b2107024020050d002005450d020c040b2005450d0320064280808080707c21062005417f6a2105200320074102746a41b02b6a280200210320042802b02b21040c000b0b200128020821010b20002001360218200020063702082000200436020420002005360200200041146a2007360200200041106a2003360200200241206a24000f0b200241146a410136020020024201370204200241bcfaca003602002002410436021c200241b4faca003602182002200241186a360210200241c4faca001043000bf20b02097f027e230041b0076b22022400024002400240024020012802004101470d002001410c6a2802002203417f4c0d02200128020421040240024020030d00410121050c010b200310382205450d040b200220033602102002200536020c20052004200310c30a1a200241086a410c6a2003360200200241a0076a41086a2206200241086a410472220341086a280200360200200220032902003703a007410021074100210841002109024002400240024002400240024020012d00d0030e0706010203040500060b200141dc036a2802002205417f4c0d08200141d4036a28020021010240024020050d00410121040c010b200510382204450d0a0b200541807e71210820042001200510c30a41807e712107410621092005210a0c050b200141d8036a290300220ba7220541807e712108200141e0036a290300210c200b422088a7210a41012109410021070c040b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a2d000021044102210941002107410021080c030b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280200220441807e712107200141d8036a2d0000210541032109410021080c020b200141d1036a2f0000200141d3036a2d0000411074722103200141d8036a280200220541807e712108200141d4036a280200220441807e712107200141e0036a310000210c200141dc036a280200210a410421090c010b200241d8036a41086a200141f0036a2d00003a00002002200141e8036a2903003703d803200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280200220441807e712107200141d8036a290300220ba7220541807e712108200141e0036a290300210c200b422088a7210a410521090b200020022903a00737020420004109360200200041136a20034110763a0000200041116a20033b0000200041206a200c370300200041106a20093a0000200041286a20022903d8033703002000410c6a2006280200360200200041146a2007200441ff017172360200200041306a200241d8036a41086a290300370300200041186a200aad4220862008200541ff017172ad843703000c010b200241086a41086a2203200141086a10ab034100210720024100360208200241d8036a200341c80310c30a1a4100210841002109024002400240024002400240024020012d00d0030e0706010203040500060b200141dc036a2802002205417f4c0d07200141d4036a28020021010240024020050d00410121040c010b200510382204450d090b200541807e71210820042001200510c30a41807e712107410621092005210a0c050b200141d8036a290300220ba7220541807e712108200141e0036a290300210c200b422088a7210a41012109410021070c040b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a2d000021044102210941002107410021080c030b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280200220441807e712107200141d8036a2d0000210541032109410021080c020b200141d1036a2f0000200141d3036a2d0000411074722103200141d8036a280200220541807e712108200141d4036a280200220441807e712107200141e0036a310000210c200141dc036a280200210a410421090c010b200241a0076a41086a200141f0036a2d00003a00002002200141e8036a2903003703a007200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280200220441807e712107200141d8036a290300220ba7220541807e712108200141e0036a290300210c200b422088a7210a410521090b200041086a200241d8036a41c80310c30a1a200041d3036a20034110763a0000200041d1036a20033b0000200041e0036a200c370300200041d4036a2007200441ff017172360200200041d0036a20093a00002000410b360200200041e8036a20022903a007370300200041f0036a200241a0076a41086a290300370300200041d8036a200aad4220862008200541ff017172ad843703000b200241b0076a24000f0b1034000b1030000bcf0501027f02400240200028020022022001280200470d0041012103024002400240024002400240024002402002417f6a0e080001020304050607090b200041086a200141086a10ee040f0b41002103200041086a200141086a10ee04450d07200041c0006a200141c0006a10ee040f0b200041086a200141086a10ee04450d0541002103200041c0006a200141c0006a10ee04450d06200041f8006a200141f8006a10ee040f0b200041086a200141086a10ee04450d04200041c0006a200141c0006a10ee04450d0441002103200041f8006a200141f8006a10ee04450d05200041b0016a200141b0016a10ee040f0b200041086a200141086a10ee04450d03200041c0006a200141c0006a10ee04450d03200041f8006a200141f8006a10ee04450d0341002103200041b0016a200141b0016a10ee04450d04200041e8016a200141e8016a10ee040f0b200041086a200141086a10ee04450d02200041c0006a200141c0006a10ee04450d02200041f8006a200141f8006a10ee04450d02200041b0016a200141b0016a10ee04450d0241002103200041e8016a200141e8016a10ee04450d03200041a0026a200141a0026a10ee040f0b200041086a200141086a10ee04450d01200041c0006a200141c0006a10ee04450d01200041f8006a200141f8006a10ee04450d01200041b0016a200141b0016a10ee04450d01200041e8016a200141e8016a10ee04450d0141002103200041a0026a200141a0026a10ee04450d02200041d8026a200141d8026a10ee040f0b200041086a200141086a10ee04450d00200041c0006a200141c0006a10ee04450d00200041f8006a200141f8006a10ee04450d00200041b0016a200141b0016a10ee04450d00200041e8016a200141e8016a10ee04450d00200041a0026a200141a0026a10ee04450d0041002103200041d8026a200141d8026a10ee04450d0120004190036a20014190036a10ee040f0b410021030b20030b8b0f03087f027e037f230041c00f6b22022400200028020821032000280204210420004200370204200241c80b6a20002802002004200310b108200242003702fc0720022802cc0b210320022802c80b210402400240024002400240024020022802e00b2205450d000240024002402003450d0020022802d00b220620032f01a629490d0103400240024020032802a02922070d00410021070c010b200441016a210820032f01a42921060b024041d82941a82920041b450d00200310390b024020070d00410221040c040b2008210420072103200620072f01a6294f0d000b20072103200821040c010b41b4fcca00412b41e4f8ca001035000b200641016a21082003200641d0036c6a2107200320064104746a220641f8276a2109200641f0276a210602402004450d00200320084102746a41a8296a280200210302402004417f6a2204450d00034020032802a82921032004417f6a22040d000b0b410021080b2009290300210a2006290300210b20072802002104200241c80b6a200741046a41cc0310c30a1a0b2002410c6a200241c80b6a41cc0310c30a1a200241c80b6a410472210c02400340200220043602c80b200c2002410c6a41cc0310c30a1a200241c80b6a200110b80a20024180046a200241c80b6a41d00310c30a1a200241c80b6a20024180046a41d00310c30a1a200241f8076a200241c80b6a200b200a10be0a2005417f6a2205450d012003450d030240024002400240200820032f01a629490d0041002107034041002104024020032802a0292209450d00200741016a210620032f01a4292108200921040b024041d82941a82920071b450d00200310390b024020040d00410221040c050b2006210720042103200820042f01a6294f0d000b2004200841d0036c6a2107200420084104746a220341f8276a290300210a200341f0276a290300210b024020060d00200421030c020b200841027420046a41ac296a280200210302402006417f6a2204450d00034020032802a82921032004417f6a22040d000b0b410021080c020b2003200841d0036c6a2107200320084104746a220441f8276a290300210a200441f0276a290300210b0b200841016a21080b20072802002104200241c80b6a200741046a41cc0310c30a1a0b2002410c6a200241c80b6a41cc0310c30a1a0c000b0b410021040b02402003450d00034020032802a0292107024041d82941a82920041b450d00200310390b200441016a21042007210320070d000b0b200020022903f807370200200041086a200241f8076a41086a280200360200200041146a2802002103200029020c210b200041106a420037020020022003360288042002200b37038004200241c80b6a20024180046a10b2082002420037020420022802c80b210420022802cc0b2107024020022802e00b220d0d00200721030c040b02402007450d00024020022802d00b220620072f01ae2b4f0d0020072103200421090c030b03400240024020072802a82b22030d00410021030c010b200441016a210920072f01ac2b21060b024041e02b41b02b20041b450d00200710390b024020030d00410221040c050b2003210720092104200620032f01ae2b490d030c000b0b41b4fcca00412b41e4f8ca001035000b41b4fcca00412b41e4f8ca001035000b200641016a21082003200641f8036c6a210702402009450d00200320084102746a41b02b6a280200210302402009417f6a2204450d00034020032802b02b21032004417f6a22040d000b0b410021080b20072802002104200241c80b6a200741046a41f40310c30a1a0b2002410c6a200241c80b6a41f40310c30a1a200241c80b6a41cc036a210520024180046a41d0036a210c200241f8076a410472210e02400340200241c80b6a2002410c6a41f40310c30a1a200220043602f807200e2002410c6a41cc0310c30a1a200241f8076a200110b80a20024180046a200241f8076a41d00310c30a1a200c41206a200541206a290200370200200c41186a200541186a290200370200200c41106a200541106a290200370200200c41086a200541086a290200370200200c2005290200370200200241c80b6a20024180046a41f80310c30a1a2002200241c80b6a10a109200d417f6a220d450d012003450d030240024002400240200820032f01ae2b490d0041002107034041002104024020032802a82b2209450d00200741016a210620032f01ac2b2108200921040b024041e02b41b02b20071b450d00200310390b024020040d00410221040c050b2004210320062107200820042f01ae2b4f0d000b2004200841f8036c6a2107024020060d00200421030c020b200841027420046a41b42b6a280200210302402006417f6a2204450d00034020032802b02b21032004417f6a22040d000b0b410021080c020b2003200841f8036c6a21070b200841016a21080b20072802002104200241c80b6a200741046a41f40310c30a1a0b2002410c6a200241c80b6a41f40310c30a1a0c000b0b410021040b02402003450d00034020032802a82b2107024041e02b41b02b20041b450d00200310390b200441016a21042007210320070d000b0b2000200229030037020c200041146a200241086a280200360200200241c00f6a24000f0b41b4fcca00412b41e4f8ca001035000bc50801027f0240024002400240024002400240024020002d00000e0707000102030405060b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041146a2802002202450d04200241f8036c450d04200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0320024198046c450d03200028021010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0220024198046c450d02200028021010390f0b200041186a10af0102402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d01200241f8036c450d01200028020410390c010b200041106a10ac0102402000410c6a2802002201450d00200041046a2802002102200141e0076c21010340200210a601200241e0076a2102200141a0786a22010d000b0b200041086a2802002202450d00200241e0076c450d00200028020410390f0b0b130020004104360204200041f4e7c4003602000b3400200041d3fec30036020420004100360200200041146a4104360200200041106a418082c500360200200041086a42083702000b130020004101360204200041b889c5003602000b3701017f02404110103822020d001030000b2002420037000820024280c8afa025370000200020023602002000429080808080023702040b130020004106360204200041d48cc5003602000b3400200041a1ddc40036020420004100360200200041146a4103360200200041106a41c8a6c500360200200041086a42093702000b2c01017f02404104103822020d001030000b200020023602002002410036000020004284808080c0003702040b130020004104360204200041acacc5003602000b2e01017f02404104103822020d001030000b2000200236020020024180a00136000020004284808080c0003702040b2f01017f02404104103822020d001030000b200020023602002002418080c00136000020004284808080c0003702040b3601017f02404110103822020d001030000b2002420037000820024280e1eb17370000200020023602002000429080808080023702040b3901017f02404110103822020d001030000b2002420037000820024280a0e5b9c29101370000200020023602002000429080808080023702040b13002000410336020420004190c0c5003602000b3400200041fcffc30036020420004100360200200041146a4104360200200041106a41d0cdc500360200200041086a42083702000b130020004104360204200041f4d7c5003602000b2c01017f02404104103822020d001030000b200020023602002002410836000020004284808080c0003702040b2c01017f02404104103822020d001030000b200020023602002002412436000020004284808080c0003702040b2c01017f02404104103822020d001030000b200020023602002002410136000020004284808080c0003702040b2d01017f02404104103822020d001030000b20002002360200200241d80436000020004284808080c0003702040b3400200041a4dcc50036020420004100360200200041146a4104360200200041106a41a8dcc500360200200041086a42033702000b3701027f024041e00010382202450d00410410382203450d0020004204370204200020033602002000410010d201200210390f0b1030000ba10201027f230041106b2202240002400240200028020022002d00004102460d002002200128021841f0e2ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41a4ecc500104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b20012802184184e3ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470be40401017f230041c0006b2202240002400240024002400240200028020022002802000e0401020300010b200220002802043602202002200041086a280200360224200241146a41023602002002410236020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241a8bcc0003602282002200241086a36023820012000200241286a103b21000c030b200220002802043602202002200041086a280200360224200241146a41023602002002410236020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241c0bcc0003602282002200241086a36023820012000200241286a103b21000c020b200220002802043602042002200041086a28020036022020022000410c6a280200360224200241086a41146a4102360200200241086a410c6a41023602002002410236020c2001411c6a28020021002002200241246a3602182002200241206a3602102002200241046a36020820012802182101200241286a41146a41033602002002420437022c200241d8bcc0003602282002200241086a36023820012000200241286a103b21000c010b200220002802043602202002200041086a280200360224200241146a41023602002002410236020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241f8bcc0003602282002200241086a36023820012000200241286a103b21000b200241c0006a240020000b6c01017f230041206b22022400200241f0e0c80036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241b4ecc500200241046a41b4ecc500200241086a4180e1c8001060000b6c01017f230041206b22022400200241a0dfc80036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241d4ecc500200241046a41d4ecc500200241086a41a8dfc8001060000bdd0201067f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a2802002203200028020022046b716b4101470d00200221050240024002402002450d00200220026a22052002490d04200141106a41086a4104360200200120024102743602142001200028020836021020012005410274200541ffffffff0371200546410274200141106a1049200141086a280200210520012802004101460d01200020012802043602082000410c6a200541027622053602000b20052002410174470d04200320044f0d022003200220046b22064f0d01200041086a280200220420024102746a2004200341027410c30a1a200041046a200320026a3602000c020b2005450d021030000b200041086a2802002202200520066b22034102746a200220044102746a200641027410c30a1a200020033602000b200141206a24000f0b1034000b41e4ecc500412b4190edc5001035000bfd0404027f027e017f027e230041f0006b2202240002400240200028020022034125490d002000410c6a2802002103200041086a28020021000c010b200041056a21000b200241e0006a20012903002003ad220485420042adfed5e4d485fda8d800420010c20a2001200241e8006a29030020022903608520047c42adfed5e4d485fda8d8007e2204370300024002400240024020034109490d00200341104d0d01200241106a200141186a2903002205200320006a41706a220641086a29000085420020012903102207200629000085420010c20a20012903082208200241106a41086a2903002002290310857c2004854217892104034020022005200041086a2900008542002007200029000085420010c20a200041106a21002008200241086a2903002002290300857c2004854217892104200341706a220341104b0d000b200120043703000c030b0240200341014b0d002003450d03200241d0006a2004200031000085420042adfed5e4d485fda8d800420010c20a2001200241d8006a2903002002290350853703000c030b200341034b0d01200241c0006a200320006a417f6a310000422086200033000084200485420042adfed5e4d485fda8d800420010c20a2001200241c8006a2903002002290340853703000c020b200241206a200141186a290300200320006a41786a2900008542002001290310200029000085420010c20a20012001290308200241286a2903002002290320857c2004854217893703000c010b200241306a200141186a290300200320006a417c6a3500008542002001290310200035000085420010c20a20012001290308200241386a2903002002290330857c2004854217893703000b200241f0006a24000b860301077f410121020240024002400240024002402001280208220341016a2204200128020422054d0d000c010b200320054f0d012001200436020802402001280200220620036a2d0000220741037122084103460d0002400240024020080e03000102000b20074102762108410021020c030b0240200341026a220320054d0d000c030b200120033602082004417f460d04200620046a2d0000410874200772220141ffff0371418002490d02200141fcff03714102762108410021020c020b200341046a220320054b0d01200120033602082004417d4f0d04200620046a22012f0000200141026a2d000041107472410874200772220141808004492102200141027621080c010b0240200741034d0d000c010b200341056a220320054b0d00200120033602082004417c4f0d04200620046a28000022084180808080044921020b20002008360204200020023602000f0b2003200541a8e5ca00103c000b417f200341b0e4ca00105f000b2004200341b0e4ca00105f000b2004200341b0e4ca00105f000b110041e8f5ca00412841f0edc5001035000b110041e8f5ca0041284180eec5001035000bb30201067f02400240200141086a280200220441036a2205417f4c0d0020012d000021062001280204210720012d000121084101210102402005450d00200510382201450d020b20002001360200200041086a22014100360200200041046a22092005360200200441017420066a220541ffff03200541ffff03491b41c000200010dc080240024020060d00200128020021010c010b2008410f7121060240200128020022052009280200470d00200020054101108101200041086a28020021050b200041086a200541016a2201360200200028020020056a20063a00000b0240200041046a28020020016b20044f0d00200020012004108101200041086a28020021010b200028020020016a2007200410c30a1a200041086a200120046a36020020022003200010d6010f0b1034000b1030000bdf0101057f200041ffff03200041ffff03491b22032000413e2003413e491b22006b21042003413f20032000461b20016a2105200241086a2101200241046a210641012103034002400240200341ff01714102460d0020034101712100410021032000450d00200521070c010b024002402004450d00200441ff014b0d012004417f6a210741022103410021040c020b0f0b200441817e6a210441ff012107410221030b0240200628020020012802002200470d00200220004101108101200128020021000b2001200041016a360200200228020020006a20073a00000c000b0b130020004101360204200041b0eec5003602000bf30401037f0240024002400240024020012802000e03010203000b200341086a28020021010c030b0240200341046a2204280200200341086a22052802002206470d00200320064101108101200528020021060b200328020020066a41003a00002005200641016a360200200141086a200310ff022001280204210602402004280200200528020022016b41034b0d00200320014104108101200341086a28020021010b200328020020016a2006360000200341086a200141046a22013602000c020b0240200341046a2204280200200341086a22052802002206470d00200320064101108101200528020021060b200328020020066a41013a00002005200641016a360200200141086a200310ff022001280204210602402004280200200528020022016b41034b0d00200320014104108101200341086a28020021010b200328020020016a2006360000200341086a200141046a22013602000c010b0240200341046a2204280200200341086a22052802002206470d00200320064101108101200528020021060b200328020020066a41023a00002005200641016a360200200141086a200310ff022001280204210602402004280200200528020022016b41034b0d00200320014104108101200341086a28020021010b200328020020016a2006360000200341086a200141046a22013602000b0240200341046a220528020020016b41074b0d00200320014108108101200341086a28020021010b200328020020016a2000370000200341086a2206200141086a22013602000240200528020020016b41074b0d00200320014108108101200628020021010b200328020020016a20023700002006200141086a3602000be80301077f230041d0006b22022400200241caf8c500410f10f201200241106a41dc90c600410c10f201200220013703302002200241306a410810f301370338200241c0006a410c6a200241306a41086a3602002002200241386a41086a3602442002200241306a3602482002200241386a360240200241206a200241c0006a108d01024002402002280228220341206a2204417f4c0d000240024020040d00410121050c010b200410382205450d020b2000200536020041002106200041086a22074100360200200041046a2208200436020002402004410f4b0d0020004100411010810120072802002106200028020021050b200520066a22042002290000370000200441086a200241086a2900003700002007200641106a220436020002402008280200220620046b410f4b0d00200020044110108101200041046a2802002106200041086a28020021040b200041086a2207200441106a22053602002000280200220820046a22042002290010370000200441086a200241106a41086a290000370000200228022021040240200620056b20034f0d0020002005200310810120072802002105200028020021080b200820056a2004200310c30a1a2007200520036a36020002402002280224450d00200410390b200241d0006a24000f0b1034000b1030000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42307e2205422088a74541037421032005a721040240024020010d00200241003602100c010b200241106a41086a41083602002002200141306c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141306e360200200241206a24000f0b1034000bc50102047f017e230041306b22012400200141286a4200370300200141206a22024200370300200141186a420037030020014200370310200141106a418cf9c800410710f201200241e9a4c200410a10f2012001200141106a10c0044100210320012802002202410028029cde4a20021b21040240024002402001290204420020021b2205422088a720004b0d00200542ffffff3f8350450d010c020b2000200420004105746a10c4042103200542ffffff3f83500d010b200410390b200141306a240020030b950201027f230041206b220224000240024020012903004201520d0020012d00084102470d00024002400240200141086a22032802240e03000301030b200241186a200341196a290000370300200241106a200341116a290000370300200241086a200341096a290000370300200220032900013703000c010b200241186a200341196a290000370300200241106a200341116a290000370300200241086a200341096a290000370300200220032900013703000b20002002290300370001200041003a0000200041196a200241186a290300370000200041116a200241106a290300370000200041096a200241086a2903003700000c010b200041086a200141c80310c30a1a200041013a00000b200241206a24000ba30702047f017e230041c0006b220124002001410036022020014201370318024002400240024002400240200028020022020e050001020304050b200141186a410041011081012001280218200128022022036a41013a00002001200341016a36022020002802042103200141186a2000410c6a280200220410d20120032004200141186a10d001200041106a28020021040240200128021c200128022022036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a3602200c040b200141186a410041011081012001280218200128022022036a41023a00002001200341016a2203360220200028020421040240200128021c20036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a36022020002802082103200141186a200041106a280200220410d20120032004200141186a10d001200041146a28020021040240200128021c200128022022036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a3602200c030b200141186a410041011081012001280218200128022022036a41033a00002001200341016a2203360220200041086a29030021050240200128021c20036b41074b0d00200141186a20034108108101200128022021030b200128021820036a20053700002001200341086a3602200c020b200141186a410041011081012001280218200128022022036a41043a00002001200341016a2203360220200028020421040240200128021c20036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a3602200c010b200141186a410041011081012001280218200128022022036a41053a00002001200341016a2203360220200028020421040240200128021c20036b41034b0d00200141186a20034104108101200128022021030b200128021820036a20043600002001200341046a3602200b200141146a200141186a41086a2802003600002001200129031837000c200141186a410c6a200141106a290000370000200141c6a4b9da04360019200141023a00182001200129000937001d200141186a10810502400240024020020e020001020b200041086a2802002202450d01200241286c450d01200028020410390c010b2000410c6a2802002202450d00200241286c450d00200041086a28020010390b200141c0006a24000b1800200020014101472003ad4220862002ad84101e10a40a0b8b0101017f230041206b22062400200641086a200310a60a20004101472002ad4220862001ad84200641186a200641106a200628020822014101461b2903002005ad4220862004ad84101d210202402001450d002006280210450d00200628020c10390b024020032802002201450d00200341046a280200450d00200110390b200641206a240020024101460bbf0403017f017e087f230041306b22012400024010202202422088a72203450d002002a722042d0000210520012003417f6a36020c2001200441016a360208410021060240024002400240024020050e020001050b200141206a200141086a10a50a20012802202206450d04200141286a2802002107200128022421082001200141086a10ad0120012802000d0320012802042205200128020c410c6e2203200320054b1bad420c7e2202422088a70d012002a72209417f4c0d010240024020090d004104210a0c010b20091038220a450d030b41002103200141003602182001200a36021020012009410c6e36021402402005450d000340200141206a200141086a10a50a0240200128022022090d002001280210210902402003450d002003410c6c21052009210303400240200341046a280200450d00200328020010390b2003410c6a2103200541746a22050d000b0b20012802142203450d062003410c6c450d06200910390c060b20012902242102024020032001280214470d00200141106a200310b7032001280210210a200128021821030b200a2003410c6c6a22032002370204200320093602002001200128021841016a22033602182005417f6a22050d000b2001280210210a0b200a450d03200129021421020b2000200836020420002006360200200041106a20023702002000410c6a200a360200200041086a200736020020041039200141306a24000f0b1034000b1030000b2008450d00200610390b41a1d5ca00412e200141206a41d0d5ca0041e0d5ca00103d000b9a0703017f017e077f230041f0006b220524002005200136020402400240200541046a20022004ad4220862003ad8410092206422088a722030d00410028029cde4a21070c010b2006a721070b02402003450d00410021020240024020072d00000e020100020b4100210220054100360228200741016a21012003417f6a2104200541286a4104722108034020042002460d02200820026a200120026a2d00003a00002005200241016a220336022820032102200341c000470d000b200541206a41026a200541356a2d00003a0000200520052f012c3b0124200520052d002e3a00262005200541336a2f00003b0120200541366a28010021012005413d6a2800002108200541c4006a2802002109200541cb006a280000210a200541d2006a280100210b200541d9006a280000210c200541e0006a280200210d200541e4006a2902002106200528002f21042005411c6a41026a2005413c6a2d00003a0000200541186a41026a200541c3006a2d00003a0000200541146a41026a200541ca006a2d00003a0000200541106a41026a200541d1006a2d00003a00002005410c6a41026a200541d8006a2d00003a000020052005413a6a2f01003b011c2005200541c1006a2f00003b01182005200541c8006a2f01003b01142005200541cf006a2f00003b01102005200541d6006a2f01003b010c200541086a41026a200541df006a2d00003a00002005200541dd006a2f00003b0108410121020b200020023a0000200020052f01243b0001200041036a20052d00263a0000200041046a2004360000200041086a20052f01203b00002000410b6a20013600002000410f6a20052f011c3b0000200041126a2008360000200041166a20052f01183b00002000410a6a200541206a41026a2d00003a0000200041116a2005411c6a41026a2d00003a0000200041186a200541186a41026a2d00003a0000200041196a2009360000200041206a200a360000200041276a200b3600002000412e6a200c3600002000411f6a200541146a41026a2d00003a00002000411d6a20052f01143b0000200041266a200541106a41026a2d00003a0000200041246a20052f01103b00002000412d6a2005410c6a41026a2d00003a00002000412b6a20052f010c3b0000200041346a200541086a41026a2d00003a0000200041326a20052f01083b0000200041396a2006370000200041356a200d36000020071039200541f0006a24000f0b41a1d5ca00412e200541286a41d0d5ca0041e0d5ca00103d000b1c00200128021841f39bc600410a2001411c6a28020028020c1100000b1d0020004101472002ad4220862001ad842004ad4220862003ad84101f0ba80101027f230041900f6b220124000240200028020022024125470d002001200041c8076a28020036028c0f200120002802c0073602880f200141c8076a200141880f6a10c401024020012802c80722024125460d002001410c6a200141c8076a41047241bc0710c30a1a0b024020002802004125460d00200010e4040b20002002360200200041046a2001410c6a41bc0710c30a1a0b200141900f6a24004100200020024125461b0b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210ce060b0f0b200041086a10af01200041046a220228020010eb08200228020010390b830201037f230041c0006b220224000240410410382203450d00200341f0c2c98b063600002002200336022820024284808080c00037022c200241286a4104410410810120022802282203200228023022046a2001360000200228022c21012002200441046a36023c200220033602382002200241386a10fe0702402001450d00200310390b0240024020022d00004101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290001370000200041186a200241196a290000370000200041106a200241116a290000370000200041086a200241096a2900003700000b200241c0006a24000f0b1030000bf20d5b027f027e017f017e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f037e017f017e017f087e037f230022022103200241c0006b41607122022400200129030021044200210520014200370300200141386a22062903002107200141306a22082903002109200141286a220a290300210b200141206a220c290300210d200141d8006a220e290300210f200141d0006a22102903002111200141c8006a22122903002113200141c0006a2903002114200141f8006a22152903002116200141f0006a22172903002118200141e8006a2219290300211a200141e0006a221b290300211c20014198016a221d290300211e20014190016a221f290300212020014188016a2221290300212220014180016a22232903002124200141b8016a22252903002126200141b0016a22272903002128200141a8016a2229290300212a200141a0016a222b290300212c200141d8016a222d290300212e200141d0016a222f2903002130200141c8016a22312903002132200141c0016a22332903002134200141f8016a22352903002136200141f0016a22372903002138200141e8016a2239290300213a200141e0016a223b290300213c20014198026a223d290300213e20014190026a223f290300214020014188026a2241290300214220014180026a22432903002144200141b8026a22452903002146200141b0026a22472903002148200141a8026a2249290300214a200141a0026a290300214b200141d8026a224c290300214d200141d0026a224e290300214f200141c8026a22502903002151200141c0026a22522903002153200141f8026a22542903002155200141f0026a22562903002157200141e8026a22582903002159200141e0026a225a290300215b20014198036a290300215c20014190036a290300215d20014188036a225e290300215f20014180036a22602903002161200141b8036a2903002162200141b0036a2903002163200141a8036a2903002164200141a0036a2903002165200141c0036a290300216620012903082167200129031021682002200141186a22692903003703382002206837033020022067370328200220043703202067a7216a410a216b02400240024002400240024002400240024002402004a70e09090102030405060700090b200241176a2002290038370000200241106a200229003137030020022002290029370308420721050c070b200241176a2002290038370000200241106a2002290031370300200220022900293703080c060b200241176a2002290038370000200241106a200229003137030020022002290029370308420121050c050b200241176a2002290038370000200241106a200229003137030020022002290029370308420221050c040b200241176a2002290038370000200241106a200229003137030020022002290029370308420321050c030b200241176a2002290038370000200241106a200229003137030020022002290029370308420421050c020b200241176a2002290038370000200241106a200229003137030020022002290029370308420521050c010b200241176a2002290038370000200241106a200229003137030020022002290029370308420621050b206a216b0b2000206b3a000020002002290308370001200041206a200b370000200041186a200d370000200041286a2009370000200041096a200241106a290300370000200041106a200241176a290000370000200041306a2007370000200110af0120602062370300205420633703002056206437030020582065370300205a205c370300204c205d370300204e205f370300205020613703002052205537030020452057370300204720593703002049205b370300203d204f370300203f20513703002041205337030020432046370300203520483703002037204a3703002039204b370300203b203e370300202d2040370300202f20423703002031204437030020332036370300202520383703002027203a370300202b202e370300201d2030370300201f20323703002021203437030020232026370300201520283703002017202a3703002019202c370300201b201e370300200e20203703002010202237030020122024370300200620183703002008201a370300200a201c370300200c200f37030020692011370300200141106a201337030020012014370308205e20663703002001204d3703a0022029203c3703002001201637034020012005370300200324000bc8010002400240024002400240024020002d00000e09050500010205050305040b200041246a2802004101470d042000412c6a280200450d04200041286a28020010390f0b200041046a2802004101470d032000410c6a280200450d03200041086a28020010390f0b200041186a2802004101470d02200041206a280200450d022000411c6a28020010390f0b200041086a280200450d01200041046a28020010390c010b200041046a2802004101470d002000410c6a280200450d00200041086a28020010390f0b0be40801067f230041f0006b22032400200341086a41f7fec300410810f201200341186a41e6fbc500411610f20102400240411010382204450d0020042001290000370000200441086a200141086a29000037000020032004411010f301370348200341ec006a200441106a360200200320043602682003200341c8006a41086a3602642003200341c8006a360260200341286a200341e0006a108d01200410392002280208220441046a2201417f4c0d01200228020021050240024002400240024002402001450d00200110382202450d06200341003602502003200136024c20032002360248200441c000490d02200441808001490d032004418080808004490d04410021010c010b2003410036025020034201370348200341c8006a4100410110810120032802482102200328025021010b200220016a41033a00002003200141016a22013602500240200328024c20016b41034b0d00200341c8006a20014104108101200328025021010b200328024820016a2004360000200141046a21010c030b200220044102743a0000410121010c020b20044102744101722106410021070240200141014b0d00200341c8006a4100410210810120032802482102200328025021070b200220076a20063b0000200741026a21010c010b20022004410274410272360000410421010b200320013602500240200328024c20016b20044f0d00200341c8006a20012004108101200328025021010b2003280248220220016a2005200410c30a1a2003200120046a220436025020032002200410f301370358200341ec006a200220046a360200200320023602682003200341e0006a3602642003200341d8006a360260200341386a200341e0006a108d010240200328024c450d00200328024810390b20032802302201200328024022026a41206a2204417f4c0d010240024020040d00410121050c010b200410382205450d010b2000200536020041002107200041086a22064100360200200041046a2208200436020002402004410f4b0d0020004100411010810120062802002107200028020021050b200520076a22042003290008370000200441086a200341086a41086a2900003700002006200741106a220436020002402008280200220520046b410f4b0d00200020044110108101200041046a2802002105200041086a28020021040b2000280200220720046a22062003290018370000200641086a200341186a41086a290000370000200041086a2206200441106a2204360200200328022821080240200520046b20014f0d00200020042001108101200041046a280200210520062802002104200028020021070b200720046a2008200110c30a1a2006200420016a2204360200200328023821010240200520046b20024f0d00200020042002108101200041086a2802002104200028020021070b200720046a2001200210c30a1a200041086a200420026a3602000240200328023c450d00200328023810390b0240200328022c450d00200328022810390b200341f0006a24000f0b1030000b1034000b130020004103360204200041ecfec5003602000b3400200041caf8c50036020420004100360200200041146a4106360200200041106a419c8ac600360200200041086a420f3702000b2c01017f02404108103822020d001030000b20002002360200200242003700002000428880808080013702040b0d00200041002000200010f4080bd10301047f20004201370200200041086a22044100360200024002400240024020010e0400010203000b2000410041011081012000280200200428020022006a41003a00002004200041016a3602000f0b200041004101108101200041046a2205280200210620002802002207200428020022016a41013a00002004200141016a22013602000240200620016b41034b0d00200020014104108101200041086a2802002101200028020021070b200720016a2002360000200041086a2202200141046a22043602000240200528020020046b41034b0d00200020044104108101200228020021040b200028020020046a20033600002002200441046a3602000f0b2000410041011081012000280200200428020022006a41023a00002004200041016a3602000f0b20004100410110810120002802002207200428020022016a41033a00002004200141016a22013602000240200041046a220528020020016b41034b0d00200020014104108101200041086a2802002101200028020021070b200720016a2002360000200041086a2202200141046a22043602000240200528020020046b41034b0d00200020044104108101200228020021040b200028020020046a20033600002002200441046a3602000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad4284017e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a4104360200200220014184016c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a20014184016e360200200241206a24000f0b1034000bcb0e07017f017e057f017e047f017e037f02400240024002400240024002400240024020012903004201520d00024020012903084201520d0020012903104201520d02200141206a280200210220012903182103200128022421042001280230210520012802342106410021070c070b20012903104201520d02200141206a2802002108200129031821092001280224210a2001280230210b2001280234210c410021070c050b20012903084201520d02200141186a280200210d2001290310210e200128021c210f20012802282107200128022c21104100210b0c030b410121070c040b410121070c020b4101210b0b034002400240200b0e020001010b200141106a210220072010200720104b1b2111200f411f7121080240034020112007460d012001200741016a220b36022820072008742105200b2107200e413f2005200d6a22056b413f71ad88420183500d000b200b417f6a20104f0d00200228021041067420056a2107410121020c060b200142003703084101210b0c010b0240024020012802682207200128026c4f0d002001200741016a3602682001280260200741037422076a290300210e200128025820076a290300210920012001280274220b41016a3602744100210720014100360228200141206a200b360200200120014180016a280200220f36021c200141186a200141fc006a280200220d360200200141086a42013703002001200e200984220e370310200141002001280278200e501b221036022c0c010b41002102200141306a2903004201520d04200141d0006a2802002207200141d4006a2802002210200720104b1b2111200141c4006a280200411f71210d200141386a290300210e200141c0006a28020021080240034020112007460d012001200741016a220b3602502007200d742105200b2107200e413f200520086a22056b413f71ad88420183500d000b200b417f6a20104f0d00200141c8006a28020041067420056a2107410121020c060b200142003703300c040b4100210b0c000b0b03400240024020070e020001010b200141186a2102200b200c200b200c4b1b2111200a411f71210d024003402011200b460d012001200b41016a2207360230200b200d7421052007210b2009413f200520086a22056b413f71ad88420183500d000b2007417f6a200c4f0d00200228021041067420056a2107410121020c050b20014200370310410121070c010b02400240024020012802602207450d0020012802642007470d01200141003602600b200128026821070c010b2001200741086a3602600b024002402007450d00200128026c220b2001280270460d002001200b41086a36026c200b290300210e200729030021092001200128028001220741016a360280014100210b20014100360230200141286a200736020020012001418c016a280200220a360224200141206a20014188016a2802002208360200200142013703102001200e2009842209370318200141002001280284012009501b220c3602340c010b41002102200141386a2903004201520d03200141d8006a2802002207200141dc006a2802002210200720104b1b2111200141cc006a280200411f71210d200141c0006a290300210e200141c8006a28020021080240034020112007460d012001200741016a220b3602582007200d742105200b2107200e413f200520086a22056b413f71ad88420183500d000b200b417f6a20104f0d00200141d0006a28020041067420056a2107410121020c050b200142003703380c030b410021070c000b0b03400240024020070e020001010b200141186a210820052006200520064b1b21112004411f71210d0240034020112005460d012001200541016a22073602302005200d74210b200721052003413f200b20026a220b6b413f71ad88420183500d000b2007417f6a20064f0d002008280210410674200b6a2107410121020c040b20014200370310410121070c010b024002402001280260220b2001280264460d002001200b41086a36026002400240024020012802682207450d00200128026c2007470d01200141003602680b200128027021070c010b2001200741086a3602680b2007450d002007290300210e200b29030021094100210520014100360230200141286a2001280280012207360200200142013703102001200741016a3602800120012001418c016a2802002204360224200141206a20014188016a28020022023602002001200e2009842203370318200141002001280284012003501b22063602340c010b41002102200141386a2903004201520d02200141d8006a2802002207200141dc006a2802002210200720104b1b2111200141cc006a280200411f71210d200141c0006a290300210e200141c8006a28020021080240034020112007460d012001200741016a220b3602582007200d742105200b2107200e413f200520086a22056b413f71ad88420183500d000b200b417f6a20104f0d00200141d0006a28020041067420056a2107410121020c040b200142003703380c020b410021070c000b0b0b20002007360204200020023602000b130020004101360204200041d89fc6003602000b340020004198f9c50036020420004100360200200041146a4104360200200041106a41b4a4c600360200200041086a42083702000b3001017f0240200128020022022001280204470d00200041003602000f0b200120024181026a3602002000200210eb040b290020004101360204200041086a200128020420012802006b4181026e2201360200200020013602000bb70901087f230041c0006b22052400200541386a22064200370300200541306a22074200370300200541206a41086a2208420037030020054200370320200541106a41caf8c500410f10f2012008200541106a41086a220929000037030020052005290010370320200541106a41d0f9c500410d10f2012006200929000037030020072005290010370300024002400240200541206a412010a8020d0020064200370300200742003703002008420037030020054200370320200541206a41b9fec300410610f201200741b0eec900410610f201200541086a200541206a412010f501200528020c410020052802081b2106024020034101470d00200541386a220a4200370300200541306a220b4200370300200541206a41086a2208420037030020054200370320200541106a41caf8c500410f10f2012008200541106a41086a220929000037030020052005290010370320200541106a41cc8fc600410a10f201200741086a220c2009290000370000200720052900103700002005200541206a412010f50102402005280200450d00200528020420064d0d0020004183143b0100200041086a4107360200200041046a41aafec500360200200041026a41033a00000c030b200a4200370300200b42003703002008420037030020054200370320200541106a41caf8c500410f10f2012008200929000037030020052005290010370320200541106a41cc8fc600410a10f201200c2009290000370000200720052900103700002005200241017420066a360210200541206a4120200541106a410410a3020b20012802082108200128020421092001280200210a200541386a4200370300200541306a4200370300200541206a41086a2201420037030020054200370320200541106a41caf8c500410f10f2012001200541106a41086a220b29000037030020052005290010370320200541106a41d0f9c500410d10f201200741086a200b290000370000200720052900103700002005410036021820054201370310200541106a4100410410810120052802102201200528021822076a20063600002005200741046a22073602180240200528021420076b41034b0d00200541106a2007410410810120052802102101200528021821070b200120076a20023600002005200741046a360218200541106a200810d201200a2008200541106a10d00120052802142106200528021821070240024020034101460d00024020062007470d00200541106a20074101108101200528021821070b2005280210220120076a41003a0000200741016a21070c010b024020062007470d00200541106a2007410110810120052802142106200528021821070b2005280210220120076a41013a00002005200741016a22073602180240200620076b41034b0d00200541106a2007410410810120052802102101200528021821070b200120076a2004360000200741046a21070b200541206a41202001200710a30202402005280214450d00200110390b02402009450d00200941286c450d00200a10390b200041083a00000c020b20004183143b0100200041086a410d360200200041046a41b1fec500360200200041026a41023a00000b200141046a2802002200450d00200041286c450d00200128020010390b200541c0006a24000bff0101027f230041d0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241286a200341206a10f5060240024020022d00284101460d00200241206a4200370300200241186a4200370300200241106a4200370300200242003703080c010b200241206a200241c1006a290000370300200241186a200241396a290000370300200241106a200241316a290000370300200220022900293703080b20002003360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a2903003700000b200241d0006a24000b3001017f0240200128020022022001280204470d00200041003602000f0b200120024181026a3602002000200210ed040bfe0c010b7f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a3602002002200341206a41f0c2c98b0610ec0420022802042101200228020021044100210520024100360230024002402001450d00200220042d00003a00342002410136023020014101460d00200220042d00013a00352002410236023020014102460d00200220042d00023a00362002410336023020014103460d00200220042d00033a00372002410436023020014104460d00200241386a20042d00043a00002002410536023020014105460d00200241396a20042d00053a00002002410636023020014106460d002002413a6a20042d00063a00002002410736023020014107460d002002413b6a20042d00073a00002002410836023020014108460d002002413c6a20042d00083a00002002410936023020014109460d002002413d6a20042d00093a00002002410a3602302001410a460d002002413e6a20042d000a3a00002002410b3602302001410b460d002002413f6a20042d000b3a00002002410c3602302001410c460d00200241c0006a20042d000c3a00002002410d3602302001410d460d00200241c1006a20042d000d3a00002002410e3602302001410e460d00200241c2006a20042d000e3a00002002410f3602302001410f460d00200241c3006a20042d000f3a00002002411036023020014110460d00200241c4006a20042d00103a00002002411136023020014111460d00200241c5006a20042d00113a00002002411236023020014112460d00200241c6006a20042d00123a00002002411336023020014113460d00200241c7006a20042d00133a00002002411436023020014114460d00200241c8006a20042d00143a00002002411536023020014115460d00200241c9006a20042d00153a00002002411636023020014116460d00200241ca006a20042d00163a00002002411736023020014117460d00200241cb006a20042d00173a00002002411836023020014118460d00200241cc006a20042d00183a00002002411936023020014119460d00200241cd006a20042d00193a00002002411a3602302001411a460d00200241ce006a20042d001a3a00002002411b3602302001411b460d00200241cf006a20042d001b3a00002002411c3602302001411c460d00200241d0006a20042d001c3a00002002411d3602302001411d460d00200241d1006a20042d001d3a00002002411e3602302001411e460d00200241d2006a20042d001e3a00002002411f3602302001411f460d00200241d3006a20042d001f3a0000200241203602302002200241c9006a22062800003602582002200241cc006a28000036005b200220022f01343b012c200220022d00363a002e2002413e6a2801002107200241c5006a2800002108200241306a41206a280200210120022800372105200228005b2104200241286a41026a22092002413d6a2d00003a000020022002413b6a2f00003b0128200241246a41026a220a200241c4006a2d00003a00002002200241c2006a2f01003b0124200241206a41026a220b200241cb006a2d00003a0000200220062f00003b0120200241306a41026a220620022d002e3a0000200220022f012c3b0130200241d8006a41026a220c20092d00003a0000200220022f01283b01582002411c6a41026a2209200a2d00003a0000200220022f01243b011c200241186a41026a220a200b2d00003a0000200220022f01203b0118200241146a41026a20062d00003a0000200220022f01303b0114200241106a41026a200c2d00003a0000200220022f01583b01102002410c6a41026a20092d00003a0000200220022f011c3b010c200241086a41026a200a2d00003a0000200220022f01183b01080c010b200241146a41026a41003a0000200241106a41026a41003a00002002410c6a41026a41003a0000200241086a41026a41003a0000200241003b0114200241003b0110200241003b010c200241003b0108410021014100210441002108410021070b20002003360200200020022f01143b0004200041066a200241146a41026a2d00003a0000200041076a2005360000200020022f01103b000b2000410d6a200241106a41026a2d00003a00002000200736010e200020022f010c3b0012200041146a2002410c6a41026a2d00003a000020002008360015200020022f01083b00192000411b6a200241086a41026a2d00003a0000200041206a20013602002000411c6a20043602000b200241e0006a24000ba7e60108347f027e037f017e057f017e317f067e230041f00b6b22032400200341f8076a22044200370300200341f0076a22054200370300200341e0076a41086a22064200370300200342003703e007200341d0066a41f1b5c900410d10f2012006200341d0066a41086a290000370300200320032900d0063703e007200341e0066a418bb6c900410c10f2012004200341e0066a41086a290000370300200520032900e006370300200341f0026a200341e0076a412010b202410221070240024020032802800422084102470d0041002109200341c0006a410041800110c50a1a200341306a41086a4200370300200342003703304106210a41e400210b41c801210c4101210d4100210e4101210f4101211041012111410021080c010b200341c0006a200341f0026a41800110c30a1a200341306a41086a200341ac046a2902003703002003200341a4046a290200370330200341b4046a2802002112200341a0046a280200210d2003419c046a280200210c20034198046a280200210720034194046a280200210b20034190046a280200210a2003418c046a280200211320034188046a2802002109200328028404211420032802fc03210e20032802f803210f20032802f403211020032802f00321110b200341a8086a41086a4200370300200342003703a808024002400240410510382204450d00200441002800ecb549360000200441046a41002d00f0b5493a0000200320043602a00720034285808080d0003702a407200341a0076a41054120108101200341e0076a41186a4200370300200341e0076a41106a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a41bffec300410410f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41f7a6c800410e10f201200541086a200341e0066a41086a290000370000200520032900e006370000200341f0026a200341e0076a10fc040240024020032d00f0024101460d00200341a80b6a41186a4200370300200341a80b6a41106a4200370300200341b00b6a4200370300200342003703a80b0c010b200341a80b6a41186a20034189036a290000370300200341a80b6a41106a20034181036a290000370300200341b00b6a200341f9026a290000370300200320032900f1023703a80b0b024020032802a407221520032802a80722066b411f4b0d00200341a0076a2006412010810120032802a407211520032802a80721060b20032802a007221620066a220420032903a80b370000200441086a200341a80b6a41086a290300370000200441106a200341a80b6a41106a290300370000200441186a200341a80b6a41186a2903003700002003200641206a22043602a807200341e0076a20162004109c01200341f0026a41086a2206200541086a2217290200370300200320052902003703f002200341e0076a41086a2204280200211820032802ec07211920032802e407211a20032802e007211b200341e0076a41186a4200370300200341e0076a41106a420037030020044200370300200342003703e007200341d0066a41bffec300410410f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41cba7c800410a10f2012017200341e0066a41086a290000370000200520032900e006370000200341e0016a200341e0076a412010a20202402015450d00201610390b200341c0016a41086a2006290300370300200320032903f0023703c001200341a0076a41f1b5c900410d10f201200341e0076a41feb5c900410d10f201200320003602e0062003200341e0066a410410f3013703e001200341fc026a200341e0066a41046a3602002003200341e0016a41086a3602f4022003200341e0066a3602f8022003200341e0016a3602f002200341a8086a200341f0026a108d01024020032802b008221541206a2204417f4c0d000240024020040d00410121060c010b200410382206450d020b41002116200341003602b00b200320063602a80b200320043602ac0b02402004410f4b0d00200341a80b6a4100411010810120032802ac0b210420032802a80b210620032802b00b21160b200620166a221720032900a007370000201741086a200341a0076a41086a2900003700002003201641106a22163602b00b0240200420166b410f4b0d00200341a80b6a2016411010810120032802ac0b210420032802a80b210620032802b00b21160b200620166a221720032900e007370000201741086a200341e0076a41086a2900003700002003201641106a22163602b00b20032802a80821170240200420166b20154f0d00200341a80b6a2016201510810120032802a80b210620032802b00b21160b200620166a2017201510c30a1a2003201620156a22043602b00b024020032802ac08450d0020032802a80810390b200341f0026a20032802a80b2206200410b2020240024020032802800422164102460d002006200410fd01200341a8086a200341f0026a41900110c30a1a20034190026a2204200341b4046a221528020036020020034188026a2217200341ac046a221c290200370300200341e0016a41206a221d200341a4046a221e290200370300200341e0016a41186a221f2003419c046a2220290200370300200341e0016a41106a222120034194046a2222290200370300200341e0016a41086a22232003418c046a222429020037030020032003290284043703e001024020032802ac0b450d00200610390b200341f0026a200341a8086a41900110c30a1a20034184046a20032903e00137020020242023290300370200202220212903003702002020201f290300370200201e201d290300370200201c2017290300370200201520042802003602002003201636028004200341a80b6a41186a22044200370300200341a80b6a41106a22064200370300200341a80b6a41086a22164200370300200342003703a80b200341a0076a41f1b5c900410d10f2012016200341a0076a41086a290000370300200320032900a0073703a80b200341e0076a418bb6c900410c10f2012004200341e0076a41086a290000370300200620032900e007370300200341003602e807200342013703e007200341f0026a200341e0076a10fb09200341a80b6a412020032802e00720032802e80710a30220032802e407450d0120032802e00710390c010b20032802ac0b450d00200610390b200341f8076a4200370300200341f0076a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a41f1b5c900410d10f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a418bb6c900410c10f201200541086a200341e0066a41086a290000370000200520032900e006370000200341f0026a200341e0076a412010b202410221250240024020032802800422264102470d0041002127200341e0016a410041800110c50a1a200341d0016a41086a4200370300200342003703d0014106212841e400212941c801212a4101212b4100212c4101212d4101212e4101212f410021260c010b200341e0016a200341f0026a41800110c30a1a200341d0016a41086a200341ac046a2902003703002003200341a4046a2902003703d001200341b4046a2802002130200341a0046a280200212b2003419c046a280200212a20034198046a280200212520034194046a280200212920034190046a28020021282003418c046a280200213120034188046a2802002127200328028404213220032802fc03212c20032802f803212d20032802f403212e20032802f003212f0b200128020421332001280200213420012802082135200341c0086a22044200370300200341b8086a22364200370300200341a8086a41086a22064200370300200342003703a808200341d0066a4192d1c800410b10f2012006200341d0066a41086a290000370300200320032900d0063703a808200341e0066a41c0d3c800411310f2012004200341e0066a41086a290000370300203620032900e006370300200320003602f002200341a8086a4120200341f0026a410410a302200520032903c001370000200541086a200341c0016a41086a29030037000020032903f007213720032903f8072138200341f0026a410041800210c50a1a20034198056a2239420037030020034190056a203837030020034188056a203737030020034184056a201936020020034180056a2018360200200341fc046a201a360200200341a0056a42003703002003201b3602f804200341c0003602f0042035203541ffffffff0371470d0020354102742204417f4c0d000240024020040d00410421060c010b200410382206450d020b41002116200341003602a00b200320063602980b20032004410276220436029c0b024002400240024002400240200420354f0d00200341980b6a4100203510be0320032802980b210620032802a00b21160c010b20350d00200341003602a00b0c010b200620164102746a210441002106034020042006360200200441046a21042035200641016a2206470d000b2003203520166a223a3602a00b203a4102490d0020032802980b213b203aad213c41c00021040340203ca72206417f6a213d200620066774417f6a213e03400240200441c000490d00200328029c05223fad4220862003280298052240ad84223742037c2238a72141203742027c2242a72143203742017c2237a721442038422088a721452042422088a721462037422088a7214741e5f0c18b06214841eec8819903214941b2da88cb07214a41f4ca81d906214b410a214c200328028805224d214e200328028c05224f21502003280290052251215220032802940522532154204d2155204f21562051215720532158204d2159204f215a2051215b2053215c200328028405220421012003280280052206211720032802fc042216211c20032802f8042215211d2004211e2006211f20162120201521212004212220062123201621242015215d20032903a0052237422088a7225e215f2037a722602161205e216220602163205e21642060216541f4ca81d906216641b2da88cb07216741eec8819903216841e5f0c18b06216941f4ca81d906216a41b2da88cb07216b41eec8819903216c41e5f0c18b06216d41e5f0c18b06216e41eec8819903216f41b2da88cb07217041f4ca81d90621710340201620496a2249ad422086201520486a2248ad842045ad4220862041ad84852237422088a74110772241205a6a2245ad4220862037a7411077225a20596a2259ad842016ad4220862015ad84852237422088a7410c77221620496a2215ad4220862037a7410c77224920486a2248ad842041ad422086205aad84852237422088a7410877224120456a2245ad4220862037a7410877227220596a2259ad842016ad4220862049ad84852237a741077722162004204b6a2249ad4220862006204a6a224aad84205ead4220862060ad84852238422088a7411077225e205c6a2260ad4220862038a7411077224b205b6a225aad842004ad4220862006ad84852238422088a7410c77220420496a22066a2249ad4220862006ad4220862038a7410c772206204a6a224aad84205ead422086204bad84852238422088a7410877225e20606a225bad4220862038a74108772260205a6a225cad842004ad4220862006ad84852238422088a74107772204204a6a2206ad842060ad4220862041ad84852242422088a7411077226020456a2241ad4220862042a7411077224520596a2259ad842016ad4220862004ad84852242422088a7410c77220420496a224bad4220862042a7410c77221620066a224aad842060ad4220862045ad84852242422088a7410877226020416a225aad4220862042a7410877224520596a2259ad842004ad4220862016ad84852242a741077721042038a7410777220620156a2216ad4220862037422088a7410777221520486a2241ad842072ad422086205ead84852237422088a7411077225e205b6a225bad4220862037a74110772272205c6a2273ad842006ad4220862015ad84852237422088a7410c77220620166a2249ad4220862037a7410c77221620416a2248ad84205ead4220862072ad84852237422088a74108772241205b6a225cad4220862037a7410877225e20736a225bad842006ad4220862016ad84852237a74107772116201c20686a2206ad422086201d20696a2215ad842046ad4220862043ad84852238422088a7411077224320566a2246ad4220862038a7411077225620556a2255ad84201cad422086201dad84852238422088a7410c77221c20066a2206ad4220862038a7410c77221d20156a2215ad842043ad4220862056ad84852238422088a7410877224320466a2246ad4220862038a7410877226820556a2255ad84201cad422086201dad84852238a7410777221c200120666a221dad422086201720676a2256ad84205fad4220862061ad84852274422088a7411077225f20586a2258ad4220862074a7411077226120576a2257ad842001ad4220862017ad84852274422088a7410c772201201d6a22176a221dad4220862017ad4220862074a7410c77221720566a2256ad84205fad4220862061ad84852274422088a7410877225f20586a2258ad4220862074a7410877226120576a2257ad842001ad4220862017ad84852274422088a7410777220120566a2217ad842061ad4220862043ad84852275422088a7411077224320466a2246ad4220862075a7411077225620556a2255ad84201cad4220862001ad84852275422088a7410c772201201d6a2266ad4220862075a7410c77221c20176a2267ad842043ad4220862056ad84852275422088a7410877226120466a2256ad4220862075a7410877224620556a2255ad842001ad422086201cad84852275a741077721012074a7410777221720066a2206ad4220862038422088a7410777221c20156a2215ad842068ad422086205fad84852238422088a7411077221d20586a2258ad4220862038a7411077224320576a2257ad842017ad422086201cad84852238422088a7410c77221720066a2268ad4220862038a7410c77220620156a2269ad84201dad4220862043ad84852238422088a7410877224320586a2258ad4220862038a7410877225f20576a2257ad842017ad4220862006ad84852238a7410777211c2020206c6a2206ad4220862021206d6a2215ad842047ad4220862044ad84852274422088a7411077221720506a221dad4220862074a74110772244204e6a2247ad842020ad4220862021ad84852274422088a7410c77222020066a2206ad4220862074a7410c77222120156a2215ad842017ad4220862044ad84852274422088a74108772217201d6a221dad4220862074a7410877224420476a2247ad842020ad4220862021ad84852274a74107772220201e206a6a2221ad422086201f206b6a224ead842062ad4220862063ad84852276422088a7411077225020546a2254ad4220862076a7411077226220526a2252ad84201ead422086201fad84852276422088a7410c77221e20216a221f6a2221ad422086201fad4220862076a7410c77221f204e6a224ead842050ad4220862062ad84852276422088a7410877226220546a2254ad4220862076a7410877225020526a2252ad84201ead422086201fad84852276422088a7410777221e204e6a221fad842050ad4220862017ad84852277422088a74110772217201d6a221dad4220862077a7411077224e20476a226cad842020ad422086201ead84852277422088a7410c77221e20216a226aad4220862077a7410c772220201f6a226bad842017ad422086204ead84852277422088a74108772263201d6a2250ad4220862077a74108772247206c6a224ead84201ead4220862020ad84852277a7410777211e2076a7410777221720066a2206ad4220862074422088a7410777221d20156a2215ad842044ad4220862062ad84852274422088a7411077221f20546a2220ad4220862074a7411077222120526a2252ad842017ad422086201dad84852274422088a7410c77221720066a226cad4220862074a7410c77220620156a226dad84201fad4220862021ad84852274422088a7410877224420206a2254ad4220862074a7410877226220526a2252ad842017ad4220862006ad84852274a741077721202024206f6a2206ad422086205d206e6a2215ad84203fad4220862040ad84852276422088a74110772217204f6a221dad4220862076a7411077221f204d6a2221ad842024ad422086205dad84852276422088a7410c77222420066a2206ad4220862076a7410c77225d20156a2215ad842017ad422086201fad84852276422088a74108772217201d6a221dad4220862076a7410877221f20216a2221ad842024ad422086205dad84852276a74107772224202220716a225dad422086202320706a224dad842064ad4220862065ad84852278422088a7411077224f20536a2253ad4220862078a7411077223f20516a2251ad842022ad4220862023ad84852278422088a7410c772222205d6a22236a225dad4220862023ad4220862078a7410c772223204d6a224dad84204fad422086203fad84852278422088a7410877224020536a2253ad4220862078a7410877224f20516a2251ad842022ad4220862023ad84852278422088a74107772222204d6a2223ad84204fad4220862017ad84852279422088a74110772217201d6a221dad4220862079a7411077224d20216a2221ad842024ad4220862022ad84852279422088a7410c772222205d6a2271ad4220862079a7410c77222420236a2270ad842017ad422086204dad84852279422088a74108772265201d6a224fad4220862079a7410877223f20216a224dad842022ad4220862024ad84852279a741077721222078a7410777221720066a2206ad4220862076422088a7410777221d20156a2215ad84201fad4220862040ad84852276422088a7411077221f20536a2221ad4220862076a7411077222320516a2224ad842017ad422086201dad84852276422088a7410c77221720066a226fad4220862076a7410c77220620156a226ead84201fad4220862023ad84852276422088a7410877224020216a2253ad4220862076a7410877226420246a2251ad842017ad4220862006ad84852276a741077721242042422088a741077721152037422088a741077721062075422088a7410777211d2038422088a741077721172077422088a741077721212074422088a7410777211f2079422088a7410777215d2076422088a74107772123204c417f6a224c0d000b200329039805213720032903a0052138200341e0066a413c6a224c204b360200200341e0066a41386a224b204a360200200341e0066a41346a224a2049360200200341e0066a412c6a22492066360200200341e0066a41286a22662067360200200341e0066a41246a22672068360200200341e0066a411c6a2268206a360200200341e0066a41186a226a206b360200200341e0066a41146a226b206c360200200320483602900720032069360280072003206d3602f006200320713602ec06200320703602e8062003206f3602e4062003206e3602e006200341a0076a413c6a22482004360200200341a0076a41386a22692006360200200341a0076a41346a226c2016360200200341a0076a412c6a226d2001360200200341a0076a41286a226e2017360200200341a0076a41246a226f201c360200200341a0076a411c6a2270201e360200200341a0076a41186a221e201f360200200341a0076a41146a221f2020360200200320153602d0072003201d3602c007200320213602b007200320223602ac07200320233602a807200320243602a4072003205d3602a007200341e0076a413c6a2220205c360200200341e0076a41386a2221205b360200200341e0076a41346a2222205a360200200341e0076a412c6a22232058360200200341e0076a41286a22242057360200200341e0076a41246a225d2056360200200341e0076a411c6a22562054360200200341e0076a41186a22542052360200200341e0076a41146a22522050360200200320593602900820032055360280082003204e3602f007200320533602ec07200320513602e8072003204f3602e4072003204d3602e007200341a80b6a413c6a224d205e360200200341a80b6a41386a224f2060360200200341a80b6a41346a22512045360200200341a80b6a412c6a2253205f360200200341a80b6a41286a225e2061360200200341a80b6a41246a22602046360200200341a80b6a411c6a22452062360200200341a80b6a41186a22462063360200200341a80b6a41146a224e2047360200200320413602d80b200320433602c80b200320443602b80b200320643602b40b200320653602b00b2003203f3602ac0b200320403602a80b20032802f804210420032802fc042106200328028005211620032802840521152003280288052101200328028c052117200328029005211c200328029405211d200341a8086a41386a223f2038370300200341a8086a41286a22402038370300200341a8086a41186a22412038370300200341a8086a41086a203941086a29030022423703002003203742037c22743e02d808200341a8086a41346a224320744220883e02002003203742027c22743e02c808200341a8086a41246a224420744220883e02002003203742017c22743e02b808200341a8086a41146a224720744220883e02002003203929030022743703a808200320383703a0052003203742047c22373e029805200320374220883e029c0520032802e006215020032802e406215520032802e806215720032802ec06215820032802a007215920032802a407215a20032802a807215b20032802ac07215c20032802e007215f20032802e407216120032802e807216220032802ec07216320032802a80b216420032802ac08216520032802ac0b217120032802b00b2172200320032802b40820032802b40b6a3602ac03200320722042a76a3602a8032003206520716a3602a403200320642074a76a3602a0032003201d20636a36029c032003201c20626a360298032003201720616a3602940320032001205f6a3602900320032015205c6a36028c0320032016205b6a3602880320032006205a6a360284032003200420596a360280032003205841f4ca81d9066a3602fc022003205741b2da88cb076a3602f8022003205541eec88199036a3602f4022003205041e5f0c18b066a3602f002206b2802002150206a280200215520682802002157201f280200211f201e280200211e2070280200215820522802002152205428020021542056280200215620472802002147204e280200214e204128020021412046280200214620032802f006215920032802b007215a20032802f007215b20032802b808215c20032802b80b215f2003200341a8086a411c6a28020020452802006a3602ec032003204120466a3602e80320032047204e6a3602e4032003205c205f6a3602e0032003201d20566a3602dc032003201c20546a3602d8032003201720526a3602d40320032001205b6a3602d0032003201520586a3602cc0320032016201e6a3602c80320032006201f6a3602c40320032004205a6a3602c0032003205741f4ca81d9066a3602bc032003205541b2da88cb076a3602b8032003205041eec88199036a3602b4032003205941e5f0c18b066a3602b0032067280200211e2066280200211f20492802002141206f2802002145206e2802002146206d2802002147205d280200215d2024280200212420232802002123204428020021442060280200216020402802002140205e280200215e200328028007214920032802c007214e200328028008215020032802c808215220032802c80b21542003200341a8086a412c6a28020020532802006a3602ac0420032040205e6a3602a8042003204420606a3602a4042003205220546a3602a0042003201d20236a36029c042003201c20246a3602980420032017205d6a360294042003200120506a360290042003201520476a36028c042003201620466a360288042003200620456a3602840420032004204e6a360280042003204141f4ca81d9066a3602fc032003201f41b2da88cb076a3602f8032003201e41eec88199036a3602f4032003204941e5f0c18b066a3602f003204a280200211e204b280200211f204c2802002123206c28020021242069280200215d204828020021532022280200212220212802002121202028020021202043280200215e20512802002151203f2802002160204f280200214f200328029007213f20032802d0072140200328029008214120032802d808214320032802d80b21442003200341a8086a413c6a280200204d2802006a3602ec0420032060204f6a3602e8042003205e20516a3602e4042003204320446a3602e0042003201d20206a3602dc042003201c20216a3602d8042003201720226a3602d4042003200120416a3602d0042003201520536a3602cc0420032016205d6a3602c8042003200620246a3602c4042003200420406a3602c0042003202341f4ca81d9066a3602bc042003201f41b2da88cb076a3602b8042003201e41eec88199036a3602b4042003203f41e5f0c18b066a3602b00441002104200341003602f0040b200341f0026a20044102746a35020021372003200441016a22043602f004203e203c20377e2237a7490d000b203d203a4f0d03203a2037422088a722064d0d02203b203d4102746a221628020021152016203b20064102746a220628020036020020062015360200203c427f7c213c203d41014b0d000b0b20032802a00b2101024020274101470d0020012031490d00200320313602a00b203121010b2001410274210420032802980b221c21060240024003402004450d012004417c6a210420062802002115200641046a22162106203520154d0d000b200341a8086a41186a221d203420154105746a220641186a290000370300200341a8086a41106a2215200641106a290000370300200341a8086a41086a221e200641086a290000370300200320062900003703a808412010382217450d06201720032903a808370000201741186a201d290300370000201741106a2015290300370000201741086a201e29030037000020034281808080103702ac0b200320173602a80b024003402004450d012004417c6a210420162802002115201641046a22062116203520154d0d000b200341a8086a41186a221e203420154105746a220441186a290000370300200341a8086a41106a221f200441106a290000370300200341a8086a41086a2220200441086a290000370300200320042900003703a808201c20014102746a2116410121044101211d03400240201d2004470d00200341a80b6a2004410110f50220032802a80b21170b2017201d4105746a220420032903a808370000200441186a201e290300370000200441106a201f290300370000200441086a20202903003700002003201d41016a221d3602b00b034020162006460d0220062802002104200641046a22152106203520044d0d000b201e203420044105746a220441186a290000370300201f200441106a2900003703002020200441086a290000370300200320042900003703a80820032802ac0b2104201521060c000b0b200341e0026a41086a200341a80b6a41086a2802002204360200200320032903a80b3703e0020c010b200342003702e402410021042003410028029cde4a3602e0020b02400240024020042001460d0041002802a8fe4a41014d0d0041002802a4fe4a210441002802a0fe4a210641002802acfe4a2116200341c4086a41f4ddca00360200200341a8086a41106a4201370300200341dc086a41949dc300ad4280808080e00884370200200341d0086a41f39cc300ad4280808080900484370300200341a8086a41206a4200370300200341a8086a41086a4113360200200341d89cc3003602b40820034281808080c0063702e408200341003602d808200341e09cc3003602ac08200341023602a808200641f4ddca00201641024622161b200341a8086a200441b0a7c00020161b28021011030020032802980b221c450d010b200329029c0b2137200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341d0066a4192d1c800410b10f2012004200341d0066a41086a290000370300200320032900d0063703a808200341e0066a41ecd3c800411610f201203641086a200341e0066a41086a290000370000203620032900e0063700002037422088a7220641027441046a2204417f4c0d050240024020040d00410121160c010b200410382216450d070b200341003602b00b200320043602ac0b200320163602a80b200341a80b6a200610d2010240024020060d0020032802a80b210120032802b00b21040c010b2006410274211620032802b00b2104201c2106034020062802002115024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b200641046a210620032802a80b220120046a20153600002003200441046a22043602b00b2016417c6a22160d000b0b200341a8086a41202001200410a302024020032802ac0b450d00200110390b203742ffffffff0383500d01201c10390c010b200341f8076a4200370300200341e0076a41106a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a4192d1c800410b10f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41ecd3c800411610f201200541086a200341e0066a41086a290000370000200520032900e006370000200341e0076a412010fd010b200341a0076a200341e0026a10ac030240024020032802a0072217450d0020032902a4072137200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341d0066a4192d1c800410b10f2012004200341d0066a41086a290000370300200320032900d0063703a808200341e0066a41b8d4c800411310f201203641086a200341e0066a41086a290000370000203620032900e0063700002037422088a722044105744104722206417f4c0d05200610382216450d06200341003602b00b200320063602ac0b200320163602a80b200341a80b6a200410d2010240024020040d0020032802a80b210120032802b00b21060c010b2004410574211520032802b00b2106201721040340024020032802ac0b20066b411f4b0d00200341a80b6a2006412010810120032802b00b21060b20032802a80b220120066a22162004290000370000201641086a200441086a290000370000201641106a200441106a290000370000201641186a200441186a2900003700002003200641206a22063602b00b200441206a2104201541606a22150d000b0b200341a8086a41202001200610a302024020032802ac0b450d00200110390b203742ffffff3f83500d01201710390c010b200341f8076a4200370300200341f0076a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a4192d1c800410b10f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41b8d4c800411310f201200541086a200341e0066a41086a290000370000200520032900e006370000200341e0076a412010fd010b0240203341ffffff3f71450d00203410390b20034188066a200341e0026a41086a28020036020020034194066a200241086a280200360200200320032903e002370380062003200229020037028c06200341f0026a200341c0006a41800110c30a1a2003418c046a201336020020034184046a2014360200200341ac046a200341306a41086a2903003702002003200d3602a0042003200c36029c0420032007360298042003200b360294042003200a36029004200320093602880420032008360280042003200e3602fc032003200f3602f803200320103602f403200320113602f003200320123602b404200320032903303702a404200341b8046a200341e0016a41800110c30a1a200341e8056a202b360200200341e4056a202a360200200341e0056a2025360200200341dc056a2029360200200341d8056a2028360200200341d4056a2031360200200341d0056a2027360200200341cc056a2032360200200341c8056a2026360200200341c4056a202c360200200341c0056a202d360200200341bc056a202e360200200341b8056a202f360200200341a8066a2019360200200341a4066a2018360200200341a0066a201a360200200341fc056a2030360200200341ec056a20032903d001370200200341f4056a200341d0016a41086a2903003702002003201b36029c06200341b4066a200341c0016a41086a290300370200200341ac066a20032903c0013702002003200036029806200341a80b6a200010c007200341a8086a20032802a80b220420032802b00b2206109c020240024020032802a808225d450d002004200610fd0120032902ac0821370c010b41002802ccdd4a215d420021370b024020032802ac0b450d00200410390b200341c0086a22044200370300200341b8086a224f4200370300200341a8086a41086a22064200370300200342003703a808200341a80b6a41f4eec600410510f2012006200341a80b6a41086a2216290000370300200320032900a80b3703a808200341a80b6a41b483c800410a10f20120042016290000370300204f20032900a80b370300200341a80b6a200341a8086a4120109c020240024020032802a80b22040d002003420037029c0b200341002802ccdd4a3602980b0c010b200320032902ac0b37029c0b200320043602980b0b200341e0076a41186a22224200370300200341e0076a41106a22234200370300200341e0076a41086a22214200370300200342003703e007200341d0066a41b9fec300410610f2012021200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41b0eec900410610f201200541086a200341e0066a41086a290000370000200520032900e006370000200341286a200341e0076a412010f501200342003702c406200341002802ccdd4a3602c0062037422088a72204450d02200328022c410020032802281b2124205d20044102746a211e200341b9076a2147410028029cde4a214e200341a8086a410172211f200341ac076a2150205d21010340200341a8086a2001280200220410f80120032802a808221620032802b00810f90141ff01712106024020032802ac08450d00201610390b024020064107460d000240024002400240024002400240024020060e0700080801020303000b200341a0076a200410ad0920032802a0072106200320032802a80722173602d406200320063602d006200341e0076a2006201710e4020240024020032802e007221c0d00410221164101211c0c010b20032802e407214b200320032802e8073602e4062003201c3602e006200341206a200341e0066a10ad010240024020032802200d0020032802e406221620032802242215490d002015417f4c0d0f0240024020150d004101211d0c010b20151038221d450d11201d4100201510c50a1a0b201d20032802e0062220201510c30a21522003201620156b3602e4062003202020156a3602e006200341186a200341e0066a10ad01024020032802180d0020032802e4062216200328021c2220490d002020417f4c0d100240024020200d00410121440c010b202010382244450d1220444100202010c50a1a0b204420032802e0062245202010c30a21540240201620206b2216450d0020032016417f6a3602e4062003204520206a225541016a3602e006410021162015214520202146024020552d00000e020400010b4101211620152145202021460c030b2020450d00205410390b2015450d00205210390b200342003702ac0b2003204e3602a80b2003410c3602a4082003200341d0066a3602a0082003200341a80b6a3602a40b200341013602bc08200342013702ac08200341e4b4c4003602a8082003200341a0086a3602b808200341a40b6a41fc86ca00200341a8086a103b1a20032802a80b20032802b00b10e702024020032802ac0b450d0020032802a80b10390b41022116205e211d20602115203f21452040214420412120204321460b0240204b450d00201c10390b4101211c024020164102470d002046214320202141204421402045213f20152160201d215e410221160c010b2006201710fd014100211c2046214320202141204421402045213f20152160201d215e201d2148201521492045214a2044214d20202151204621530b024020032802a407450d00200610390b201c0d07204720032f00e0063b0000204741026a200341e0066a41026a2d00003a0000200320163a00b807200320533602b407200320513602b0072003204d3602ac072003204a3602a807200320493602a407200320483602a00702402016450d0020032802980b211c4100210620032802a00b221d450d05201d2115201d21160340024002402004201c201541017620066a22154102746a28020022174d0d00201541016a21060c010b2015211620042017460d080b201620066b2115201620064b0d000b201d20064f0d052006201d1044000b200341a80b6a200410f80120032802b00b211620032802a80b2106200341003602b008200342013703a8084101200341a8086a1080012006201620032802a808221520032802b00810a302024020032802ac08450d00201510390b20032802ac0b450d06200610390c060b20032802980b211c410021060240024020032802a00b221d450d00201d2115201d21160340024002402004201c201541017620066a22154102746a28020022174d0d00201541016a21060c010b2015211620042017460d030b201620066b2115201620064b0d000b201d2006490d040b0240201d200328029c0b470d00200341980b6a201d10b70120032802980b211c0b201c20064102746a221641046a2016201d20066b41027410c40a1a201620043602002003201d41016a3602a00b0b200341a80b6a200410f80120032802b00b210620032802a80b2104200341003602b008200342013703a8084102200341a8086a1080012004200620032802a808221620032802b00810a302024020032802ac08450d00201610390b20032802ac0b450d06200410390c060b024020032802a00b2220450d0020032802980b211c41002106202021152020211602400340024002402004201c201541017620066a22154102746a221d28020022174d0d00201541016a21060c010b20042017460d02201521160b201620066b2115201620064b0d000c020b0b201d201d41046a20202015417f736a41027410c40a1a20032020417f6a3602a00b0b200341a80b6a200410f80120032802b00b210620032802a80b2104200341003602b008200342013703a8084101200341a8086a1080012004200620032802a808221620032802b00810a302024020032802ac08450d00201610390b20032802ac0b450d05200410390c050b024020032802a00b2220450d0020032802980b211c41002106202021152020211602400340024002402004201c201541017620066a22154102746a221d28020022174d0d00201541016a21060c010b20042017460d02201521160b201620066b2115201620064b0d000c020b0b201d201d41046a20202015417f736a41027410c40a1a20032020417f6a3602a00b0b200341a8086a200410b90220032802a808220620032802b00810fd01024020032802ac08450d00200610390b200341a8086a2004109f0920032802a808220620032802b00810fd01024020032802ac08450d00200610390b200341a8086a200410f80120032802a808220620032802b00810fd01024020032802ac08450d00200610390b200341a80b6a200410a009200341a8086a20032802a80b221620032802b00b221510ab020240024020032d00a80822060d00200641014621150c010b2016201510fd012006410146211520064101470d002022201f41186a2900003703002023201f41106a2900003703002021201f41086a2900003703002003201f2900003703e0070b024020032802ac0b450d00201610390b02402015450d00200341a8086a41186a2022290300370300200341a8086a41106a2023290300370300200341a8086a41086a2021290300370300200320032903e0073703a808200341a8086a10b7020b200341a0076a200410bc07200341a8086a20032802a007221620032802a807221510ab020240024020032d00a80822060d00200641014621150c010b2016201510fd012006410146211520064101470d00200341a80b6a41186a201f41186a290000370300200341a80b6a41106a201f41106a290000370300200341a80b6a41086a201f41086a2900003703002003201f2900003703a80b0b024020032802a407450d00201610390b02402015450d00200341a8086a41186a200341a80b6a41186a290300370300200341a8086a41106a200341a80b6a41106a290300370300200341a8086a41086a200341a80b6a41086a290300370300200320032903a80b3703a808200420242024200341a8086a10be071a0b024020032802c806220620032802c406470d00200341c0066a200610b70120032802c80621060b20032802c00620064102746a20043602002003200641016a3602c8060c040b2006201d1044000b0240201d200328029c0b470d00200341980b6a201d10b70120032802980b211c0b201c20064102746a221641046a2016201d20066b41027410c40a1a201620043602002003201d41016a3602a00b0b200341a80b6a200410f80120032802b00b211620032802a80b2106200341003602b008200342013703a8084102200341a8086a1080012006201620032802a808221520032802b00810a302024020032802ac08450d00201510390b20032802ac0b450d00200610390b200341e0076a204d2053109c01200341a80b6a41186a22062022290300370300200341a80b6a41106a22162023290300370300200341a80b6a41086a22152021290300370300200320032903e0073703a80b2021200341a0076a41086a280200360200200320032903a0073703e007200341a8086a200410b90220032802a808221720032802b008200341e0076a10bf07024020032802ac08450d00201710390b024020032802e407450d0020032802e00710390b200341a80b6a205010bd071a200341a8086a41186a2006290300370300200341a8086a41106a2016290300370300200341a8086a41086a2015290300370300200320032903a80b3703a808200341e0076a200410bc0720032802e007220420032802e807200341a8086a10cf02024020032802e407450d00200410390b2051450d00204d10390b200141046a2201201e470d000c030b0b2006203a4190adc300103c000b203d203a4180adc300103c000b0240203742ffffffff0383500d00205d10390b0240024020032802980b2204450d002003200329029c0b22373702e407200320043602e007200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22064200370300200342003703a808200341a80b6a41f4eec600410510f2012006200341a80b6a41086a2216290000370300200320032900a80b3703a808200341a80b6a41b483c800410a10f201203641086a2016290000370000203620032900a80b370000200341203602ac0b2003200341a8086a3602a80b200341e0076a200341a80b6a109603203742ffffffff0383500d01200410390c010b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41f4eec600410510f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41b483c800410a10f201204f41086a2006290000370000204f20032900a80b370000200341a8086a412010fd010b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41a6f2c500410d10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41f0b4c600410f10f201203641086a2006290000370000203620032900a80b370000200341a80b6a200341a8086a10f2030240024020032802a80b22040d00200342003702a407200341003602ac07200341002802ccdd4a3602a0070c010b200341a0076a410c6a200341a80b6a410c6a280200360200200320043602a007200320032902ac0b3702a4070b200341f8076a4200370300200341f0076a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a41f4eec600410510f2012004200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41b483c800410a10f201200541086a200341e0066a41086a290000370000200520032900e006370000200341a8086a200341e0076a4120109c020240024020032802a80822060d00410021040c010b20032902ac082237422088a72104203742ffffffff0383500d00200610390b200341b0056a28020020046a210641002104024020032802c8054101470d0020032802cc052216450d0020034188066a28020020166e21040b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22164200370300200342003703a808200341a80b6a41a6f2c500410d10f2012016200341a80b6a41086a2215290000370300200320032900a80b3703a808200341a80b6a41c4b5c600411110f201203641086a2015290000370000203620032900a80b37000020062004200620044b1b2121200341e0076a200341a8086a10e6030240024020032802e00722150d00200342003702e4064100211f200341002802ccdd4a22153602e006410021200c010b20032902e4072137200320153602e006200320373702e4062037a721202037422088a7221f450d00201f412c6c2101200341a8086a41206a2117200341a8086a41186a211c200341a8086a41106a211d200341a8086a41086a211e410021060340201520066a2204280200211620044102360200024020160d002017200441246a290200370300201c2004411c6a290200370300201d200441146a290200370300201e2004410c6a2902003703002003200441046a2902003703a808024020032802a807220420032802a407470d00200341a0076a200410fd0220032802a80721040b20032802a0072004412c6c6a220420032903a80837020020044100360228200441086a201e290300370200200441106a201d290300370200200441186a201c290300370200200441206a2017290300370200200320032802a80741016a3602a8070b20012006412c6a2206470d000b0b024002402021201f4d0d00201f211602402020201f6b2021201f6b22014f0d00200341e0066a201f200110960820032802e806211620032802e00621150b20152016412c6c6a2104024020014102490d00201f417f7320216a21060340200441023602002004412c6a21042006417f6a22060d000b200120166a417f6a21160b02402001450d0020044102360200200441086a20032902a808370200200441106a200341a8086a41086a290200370200200441186a200341a8086a41106a290200370200200441206a200341a8086a41186a290200370200201641016a21160b200320163602e80620032802e406212020032802e00621150c010b200320213602e806202121160b0240024020150d00200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41a6f2c500410d10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41c4b5c600411110f201203641086a2006290000370000203620032900a80b370000200341a8086a412010fd010c010b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41a6f2c500410d10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41c4b5c600411110f201203641086a2006290000370000203620032900a80b3700002016412c6c41046a2204417f4c0d010240024020040d00410121060c010b200410382206450d030b200341003602b00b200320043602ac0b200320063602a80b200341a80b6a201610d20120152016200341a80b6a10cf01200341a8086a412020032802a80b220420032802b00b10a302024020032802ac0b450d00200410390b2020450d002020412c6c450d00201510390b0240024002402021450d0020034188066a28020022230d010b200342003702ac08200341002802ccdd4a22513602a808200341a8086a1087090c010b200342003702ac0b41002117200341002802ccdd4a22513602a80b202320216e21152051211f024020232021702224450d00201541016a221e41ffffffff03712220201e47215d201e4102742222417f4a214d410021174100211d0340205d0d03204d450d030240024020220d00410421040c010b202210382204450d050b200341003602b008200320043602a808200320203602ac080240024002402020201e4f0d00200341a8086a4100201e10be0320032802a808210420032802b008211c0c010b4100211c201e450d010b201d201e6c21012004201c4102746a210441002106417f211603402004200120066a360200200441046a2104200641016a2106201641016a22162015470d000b201e201c6a211c0b201d41016a211d2003201c3602b0080240201720032802ac0b470d00200341a80b6a201710b70320032802b00b21170b20032802a80b221f2017410c6c6a220420032903a808370200200441086a200341a8086a41086a2802003602002003201741016a22173602b00b201d2024470d000b0b0240202120246b2220450d00201541ffffffff0371221d20154721222024201541016a6c215d2015410274221e417f4a21244100211c034020220d032024450d0302400240201e0d00410421040c010b201e10382204450d050b41002101200341003602b008200320043602a8082003201d3602ac080240201d20154f0d00200341a8086a4100201510be0320032802b00821010b0240202120234b0d00201c20156c205d6a211620032802a80820014102746a21044100210603402004201620066a360200200441046a2104200641016a22062015470d000b201520016a21010b201c41016a211c200320013602b0080240201720032802ac0b470d00200341a80b6a201710b70320032802a80b211f20032802b00b21170b201f2017410c6c6a220420032903a808370200200441086a200341a8086a41086a280200360200200320032802b00b41016a22173602b00b201c2020470d000b0b200341a8086a41086a200341a80b6a41086a280200360200200320032903a80b3703a808200341a8086a1087090b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41a6f2c500410d10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41c0b6c600411410f201203641086a2006290000370000203620032900a80b370000200341a80b6a200341a8086a4120109c0220032902ac0b420020032802a80b22041b21372004205120041b211d0240024020032802b0050d00024020032802a4072204450d002004412c6c450d0020032802a00710390b200341003602ac07200342003702a407200320513602a007203742ffffffff0f8321370c010b20032802a807211c4100211f200341003602a8070240201c450d004100212020032802a00721214100211f4100210102400340024002400240201f450d0020212001412c6c6a21042021200120206a412c6c6a21060340200441246a28020020032802b4054b0d02200341a8086a2004280200221610f80120032802a808221720032802b00810f90141ff01712115024020032802ac08450d00201710390b20154107460d03201541054b0d034101201574412a71450d0320062004290200370200200641286a200441286a280200360200200641206a200441206a290200370200200641186a200441186a290200370200200641106a200441106a290200370200200641086a200441086a2902003702002004412c6a21042006412c6a2106201c200141016a22014b0d000c050b0b20212001412c6c6a21040340200441246a28020020032802b4054b0d01200341a8086a2004280200221610f80120032802a808221520032802b00810f90141ff01712106024020032802ac08450d00201510390b20064107460d02200641054b0d024101200674412a71450d022004412c6a2104201c200141016a22014b0d000b4100211f0c040b20212001412c6c6a28020021160b02402037422088a72222450d0041002104202221152022210602400340024002402016201d201541017620046a22154102746a221e28020022174d0d00201541016a21040c010b20162017460d02201521060b200620046b2115200620044b0d000c020b0b201e201e41046a20222015417f736a41027410c40a1a20374280808080707c21370b2020417f6a2120201f41016a211f201c200141016a22014b0d000b0b0240201f0d004100211f0c010b20032802a00722042001201f6b412c6c6a20042001412c6c6a201c20016b412c6c10c40a1a0b2003201c201f6b22013602a80702402001450d00201c412c6c201f412c6c6b211620032802a00741286a210441002106034020032802b0052215450d06200420062015703602002004412c6a2104200641016a2106201641546a22160d000b0b20032802b0052204450d03200320012004703602ac070b2003201d3602e007200320373702e407200341a8086a41186a22164200370300200341a8086a41106a22154200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41a6f2c500410d10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41c0b6c600411410f201203641086a22012006290000370000203620032900a80b370000200341203602ac0b2003200341a8086a3602a80b200341e0076a200341a80b6a1097030240203742ffffffff0383500d00201d10390b2004200341a0076a41086a290300370300200320032903a0073703a808200341a8086a10f803200341e0076a41186a4200370300200341e0076a41106a4200370300200341e0076a41086a22174200370300200342003703e007200341d0066a41b9fec300410610f2012017200341d0066a41086a290000370300200320032900d0063703e007200341e0066a41b0eec900410610f201200541086a200341e0066a41086a290000370000200520032900e006370000200341106a200341e0076a412010f501200328021021172003280214211c201642003703002015420037030020044200370300200342003703a808200341a80b6a41a6f2c500410d10f20120042006290000370300200320032900a80b3703a808200341a80b6a41b3f2c500411110f20120012006290000370000203620032900a80b3700002003201c41016a410120171b3602a80b200341a8086a4120200341a80b6a410410a302200341d0066a419194c300410d10f201200341e0066a41e4a1c300411e10f201412010382204450d01200420032900d006370000200441086a2216200341d0066a41086a290000370000200420032900e006370010200441186a2215200341e0066a41086a290000370000200320043602a808200342a080808080043702ac08412010382206450d0120062004290000370000200641186a2015290000370000200641106a200441106a290000370000200641086a2016290000370000200341e0076a41086a200341a8086a41086a2802002204360200200320032903a80822373703e007200341bc0b6a2004360200200342a080808080043702ac0b200320063602a80b200320373702b40b200341013a00c40b2003412c3602c00b200341a8086a200341a80b6a10c709024020032802ac08221c450d00034020032802d408211d20032802d008212020032802c808211f20032802c408210120032802c008211520032802bc08211e20032802b808211720032802b0082116024020032802b4082204450d002004410c6c2106201c210403400240200441046a280200450d00200428020010390b2004410c6a2104200641746a22060d000b0b02402016450d002016410c6c450d00201c10390b02402015450d0020154104742106201741086a2104034002402004280200450d002004417c6a28020010390b200441106a2104200641706a22060d000b0b0240201e41ffffffff0071450d00201710390b02402001450d00201f450d00200110390b0240201d450d00202010390b200341a8086a200341a80b6a10c70920032802ac08221c0d000b0b024020032802ac0b450d0020032802a80b10390b0240200341b80b6a280200450d0020032802b40b10390b200341d0066a419194c300410d10f201200341e0066a419e94c300411310f201412010382204450d01200420032900d006370000200441086a2216200341d0066a41086a290000370000200420032900e006370010200441186a2215200341e0066a41086a290000370000200320043602a808200342a080808080043702ac08412010382206450d0120062004290000370000200641186a2015290000370000200641106a200441106a290000370000200641086a2016290000370000200341e0076a41086a200341a8086a41086a2802002204360200200320032903a80822373703e007200341bc0b6a2004360200200342a080808080043702ac0b200320063602a80b200320373702b40b200341013a00c40b2003411a3602c00b200341a8086a200341a80b6a10e9030340024020032802d40a22060d00024020032802ac0b450d0020032802a80b10390b0240200341b80b6a280200450d0020032802b40b10390b200341d0066a419194c300410d10f201200341e0066a41aca0c300411510f201412010382204450d03200420032900d006370000200441086a2216200341d0066a41086a290000370000200420032900e006370010200441186a2215200341e0066a41086a290000370000200320043602a808200342a080808080043702ac08412010382206450d0320062004290000370000200641186a2015290000370000200641106a200441106a290000370000200641086a2016290000370000200341e0076a41086a200341a8086a41086a2802002204360200200320032903a80822373703e007200341bc086a2004360200200342a080808080043702ac08200320063602a808200320373702b408200341013a00c4082003412d3602c008200341a80b6a200341a8086a10c609024002400340024020032802ac0b22040d00024020032802ac08450d0020032802a80810390b0240200341a8086a41106a280200450d0020032802b40810390b200341f8076a22064200370300200341e0076a41106a4200370300200341e0076a41086a22044200370300200342003703e007200341d0066a41f1b5c900410d10f2012004200341d0066a41086a2216290000370300200320032900d0063703e007200341e0066a418bb6c900410c10f201200541086a2215200341e0066a41086a2201290000370000200520032900e006370000200341a8086a200341e0076a412010b20220032802b8094102470d02410021244101215d410621214100214d410021534100215e4100211d0c030b024020032802b40b450d00200410390b200341a80b6a200341a8086a10c6090c000b0b200341e8096a2802002124200341e4096a280200214d200341e0096a2802002153200341dc096a280200215e200341d8096a280200215d200341c8096a280200212120032802a009211d0b20034180066a211720064200370300200341f0076a420037030020044200370300200342003703e007200341d0066a41f4eec600410510f20120042016290000370300200320032900d0063703e007200341e0066a41b483c800410a10f20120152001290000370000200520032900e006370000200341a8086a200341e0076a4120109c020240024020032802a80822040d004100211f0c010b20032902ac082237422088a7211f203742ffffffff0383500d00200410390b200341980b6a201710ac03200341e0076a41186a22164200370300200341e0076a41106a22174200370300200341e0076a41086a22044200370300200342003703e007200341d0066a4190ffc300411210f2012004200341d0066a41086a221c290000370300200320032900d0063703e007200341e0066a41e4a5c800410410f201200541086a221e200341e0066a41086a2220290000370000200520032900e006370000200341a8086a200341e0076a10db0620032802a808210120032902ac082137200341a8086a41186a4200370300200341a8086a41106a4200370300200341a8086a41086a22064200370300200342003703a808200341a80b6a41f2e5c300410f10f2012006200341a80b6a41086a2215290000370300200320032900a80b3703a808200341a80b6a41a4e8c300411410f201204f41086a2015290000370000204f20032900a80b370000200341203602d4062003200341a8086a3602d006200341a0076a200341a8086a412010e4020240024020032802a00722060d00410021150c010b20032802a40721222003200341a0076a41086a2802003602e406200320063602e006200341a80b6a200341e0066a10bb030240024020032802a80b2215450d0020032902ac0b21420c010b200342003702e407410021152003410028029cde4a3602e0072003410c3602a4082003200341d0066a3602a0082003200341e0076a3602a40b200341bc0b6a4101360200200342013702ac0b200341e4b4c4003602a80b2003200341a0086a3602b80b200341a40b6a41fc86ca00200341a80b6a103b1a20032802e00720032802e80710e702024020032802e407450d0020032802e00710390b0b2022450d00200610390b201642003703002017420037030020044200370300200342003703e007200341d0066a4192d1c800410b10f2012004201c290000370300200320032900d0063703e007200341e0066a41ecd3c800411610f201201e2020290000370000200520032900e006370000200341203602d4062003200341e0076a3602d006200341a0076a200341e0076a412010e4020240024020032802a00722060d00410021040c010b20032802a40721162003200341a8076a2802003602e406200320063602e006200341a8086a200341e0066a10b6030240024020032802a8082204450d0020032902ac0821380c010b200342003702ac0b410021042003410028029cde4a3602a80b2003410c3602a4082003200341d0066a3602a0082003200341a80b6a3602a40b200341bc086a4101360200200342013702ac08200341e4b4c4003602a8082003200341a0086a3602b808200341a40b6a41fc86ca00200341a8086a103b1a20032802a80b20032802b00b10e702024020032802ac0b450d0020032802a80b10390b0b2016450d00200610390b410028029cde4a211c2037420020011b2137200341e0076a41186a4200370300200341e0076a41106a4200370300200341e0076a41086a22064200370300200342003703e007200341d0066a41a6f2c500410d10f2012006200341d0066a41086a290000370300200320032900d0063703e007200341e0066a4188b4c600410f10f201200541086a200341e0066a41086a290000370000200520032900e006370000200341a8086a200341e0076a10f30320032802a808211720032902ac0821742003280298062120200341a8086a41186a4200370300200341a8086a41106a4200370300200341a8086a41086a22064200370300200342003703a808200341a80b6a41f2e5c300410f10f2012006200341a80b6a41086a2216290000370300200320032900a80b3703a808200341a80b6a41f4e8c300411510f201204f41086a2016290000370000204f20032900a80b370000200341086a200341a8086a412010f5012038420020041b21382004205120041b211e0240024002400240200328020c410020032802081b2216450d00201621040c010b200341a8086a410010e80520032802a8082204450d01024020032802ac0841ffffff3f71450d00200410390b0240200341b8086a28020041ffffff3f71450d00200341b4086a28020010390b0240200341c4086a28020041ffffff3f71450d00200341c0086a28020010390b200341cc086a28020021220240200341d4086a2802002204450d002004410c6c21062022210403400240200441046a28020041ffffffff0371450d00200428020010390b2004410c6a2104200641746a22060d000b0b0240200341d0086a2802002204450d002004410c6c450d00202210390b410021040b024020044100202020216b2206200620204b1b22062016200620164b1b22164f0d000340200341a8086a200410ec0520032802a808220620032802b00810fd01200441016a2104024020032802ac08450d00200610390b20162004470d000b0b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41f2e5c300410f10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41f4e8c300411510f201203641086a2006290000370000203620032900a80b370000200320163602a80b200341a8086a4120200341a80b6a410410a3020c010b200341c0086a4200370300200341b8086a4200370300200341a8086a41086a22044200370300200342003703a808200341a80b6a41f2e5c300410f10f2012004200341a80b6a41086a2206290000370300200320032900a80b3703a808200341a80b6a41f4e8c300411510f201203641086a2006290000370000203620032900a80b370000200320203602a80b200341a8086a4120200341a80b6a410410a3020b2001201c20011b21222042420020151b21422015201c20151b21232074420020171b21742017205120171b214f201d201f6a2151201e2038422088a7221f41027422046a21172037422088a72115201e21060240024003402004450d012004417c6a210420062802002101200641046a22162106200120154f0d000b200341a8086a41186a221d202220014105746a220641186a290000370300200341a8086a41106a2201200641106a290000370300200341a8086a41086a2221200641086a290000370300200320062900003703a80841201038221c450d05201c20032903a808370000201c41186a201d290300370000201c41106a2001290300370000201c41086a202129030037000020034281808080103702ac0b2003201c3602a80b0340024020040d004101211d410121600c030b2004417c6a210420162802002101201641046a22062116200120154f0d000b200341a8086a41186a2221202220014105746a220441186a290000370300200341a8086a41106a2201200441106a290000370300200341a8086a41086a2260200441086a290000370300200320042900003703a808410121044101211d03400240201d2004470d00200341a80b6a2004410110f50220032802a80b211c0b201c201d4105746a220420032903a808370000200441186a2021290300370000200441106a2001290300370000200441086a20602903003700002003201d41016a221d3602b00b0240034020172006460d0120062802002104200641046a22162106200420154f0d000b2021202220044105746a220441186a2900003703002001200441106a2900003703002060200441086a290000370300200320042900003703a80820032802ac0b2104201621060c010b0b20032802ac0b21600c010b41002160410028029cde4a211c4100211d0b0240201d201f460d0041002802a8fe4a4102490d0041002802a4fe4a210441002802a0fe4a210641002802acfe4a2116200341c4086a41f4ddca00360200200341b8086a4201370300200341dc086a41949dc300ad4280808080e00884370200200341d0086a41f39cc300ad4280808080900484370300200341c8086a4200370300200341b0086a4113360200200341d89cc3003602b40820034281808080c0063702e408200341003602d808200341e09cc3003602ac08200341023602a808200641f4ddca00201641024622161b200341a8086a200441b0a7c00020161b2802101103000b201f41027421042042422088a72115200341c0086a213f201e21060240024003402004450d012004417c6a210420062802002101200641046a22162106200120154f0d000b200341a80b6a41186a2240202320014105746a220641186a290000370300200341a80b6a41106a2201200641106a290000370300200341a80b6a41086a2241200641086a290000370300200320062900003703a80b412010382221450d05202120032903a80b370000202141186a2040290300370000202141106a2001290300370000202141086a204129030037000020034281808080103702e407200320213602e007024003402004450d012004417c6a210420162802002101201641046a22062116200120154f0d000b200341a80b6a41186a2240202320014105746a220441186a290000370300200341a80b6a41106a2241200441106a290000370300200341a80b6a41086a2243200441086a290000370300200320042900003703a80b41012104410121010340024020012004470d00200341e0076a2004410110f50220032802e00721210b202120014105746a220420032903a80b370000200441186a2040290300370000200441106a2041290300370000200441086a20432903003700002003200141016a22013602e807034020172006460d0220062802002104200641046a22162106200420154f0d000b2040202320044105746a220441186a2900003703002041200441106a2900003703002043200441086a290000370300200320042900003703a80b20032802e4072104201621060c000b0b203f20032903e007370200203f41086a200341e0076a41086a280200360200200341c8086a28020021040c010b200341c4086a4200370200410021042003410028029cde4a3602c0080b02402004201f460d0041002802a8fe4a4102490d0041002802a4fe4a210441002802a0fe4a210641002802acfe4a2116200341c40b6a41f4ddca00360200200341b80b6a4201370300200341dc0b6a41949dc300ad4280808080e00884370200200341d00b6a41f39cc300ad4280808080900484370300200341c80b6a4200370300200341b00b6a4113360200200341d89cc3003602b40b20034281808080c0063702e40b200341003602d80b200341e09cc3003602ac0b200341023602a80b200641f4ddca00201641024622161b200341a80b6a200441b0a7c00020161b2802101103000b200341d0086a2074370300200341bc086a201d360200200341a8086a41106a2060360200200341a8086a41086a2206200341980b6a41086a2802003602002003204f3602cc08200320032903980b3703a8082003204d3602ec082003205d3602e8082003205e3602e408200320243602e008200320533602dc08200320513602d8082003201c3602b408200341e0076a202010ec0520032802e807211720032802e0072101200341003602b00b200342013703a80b20032802a8082104200341a80b6a2006280200220610d20102402006450d002006410574211520032802b00b21060340024020032802ac0b20066b411f4b0d00200341a80b6a2006412010810120032802b00b21060b20032802a80b20066a22162004290000370000201641086a200441086a290000370000201641106a200441106a290000370000201641186a200441186a2900003700002003200641206a22063602b00b200441206a2104201541606a22150d000b0b20032802b4082104200341a80b6a20032802bc08220610d20102402006450d002006410574211520032802b00b21060340024020032802ac0b20066b411f4b0d00200341a80b6a2006412010810120032802b00b21060b20032802a80b20066a22162004290000370000201641086a200441086a290000370000201641106a200441106a290000370000201641186a200441186a2900003700002003200641206a22063602b00b200441206a2104201541606a22150d000b0b200341cc086a211c20032802c0082104200341a80b6a20032802c808220610d20102402006450d002006410574211520032802b00b21060340024020032802ac0b20066b411f4b0d00200341a80b6a2006412010810120032802b00b21060b20032802a80b20066a22162004290000370000201641086a200441086a290000370000201641106a200441106a290000370000201641186a200441186a2900003700002003200641206a22063602b00b200441206a2104201541606a22150d000b0b201c200341a80b6a109c0320032802d8082106024020032802ac0b20032802b00b22046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b20032802dc082106024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b20032802e0082106024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b20032802e4082106024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b20032802e8082106024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b20032802ec082106024020032802ac0b20046b41034b0d00200341a80b6a2004410410810120032802b00b21040b20032802a80b20046a20063600002003200441046a22043602b00b2001201720032802a80b200410a302024020032802ac0b450d0020032802a80b10390b024020032802e407450d00200110390b024020032802ac0841ffffff3f71450d0020032802a80810390b024020032802b80841ffffff3f71450d0020032802b40810390b0240200341c4086a28020041ffffff3f71450d0020032802c00810390b0240200341d4086a2802002206450d0020032802cc0821042006410c6c210603400240200441046a28020041ffffffff0371450d00200428020010390b2004410c6a2104200641746a22060d000b0b024020032802d0082204450d002004410c6c450d0020032802cc0810390b0240203842ffffffff0383500d00201e10390b0240204242ffffff3f83500d00202310390b0240203742ffffff3f83500d00202210390b20032802c006211e024020032802c8062204450d0020044102742101200341a0076a41046a211c200341e0076a41086a211d0340200341a8086a201e280200109c0420032802a808220420032802b00810fd01024020032802ac08450d00200410390b200341d0066a41eeffc300410310f201200341e0066a41d08cc200411910f2012003201e2802003602a0072003200341a0076a410410f3013703e0072003201c3602b4082003201d3602ac082003200341a0076a3602b0082003200341e0076a3602a808200341a80b6a200341a8086a108d0120032802b00b221541206a2204417f4c0d0402400240024020040d00200341003602b008200320043602ac08200341013602a8080c010b200410382206450d0741002116200341003602b008200320063602a808200320043602ac082004410f4b0d010b200341a8086a4100411010810120032802ac08210420032802a808210620032802b00821160b200620166a221720032900d006370000201741086a200341d0066a41086a2900003700002003201641106a22163602b0080240200420166b410f4b0d00200341a8086a2016411010810120032802ac08210420032802a808210620032802b00821160b200620166a221720032900e006370000201741086a200341e0066a41086a2900003700002003201641106a22163602b00820032802a80b21170240200420166b20154f0d00200341a8086a2016201510810120032802a808210620032802b00821160b200620166a2017201510c30a1a201620156a2104024020032802ac0b450d0020032802a80b10390b20032802a8082206200410fd01024020032802ac08450d00200610390b201e41046a211e2001417c6a22010d000b20032802c006211e20032802c8062251450d00201e20514102746a214d41002802ccdd4a214f200341f8076a2120200341f0076a2121201e211f0340200341a8086a201f28020010ff0320032802a808220420032802b00810fd01024020032802ac08450d00200410390b200341a8086a201f28020010fd0320032802a808220420032802b00810fd01024020032802ac08450d00200410390b2020420037030020214200370300200341e0076a41086a221d4200370300200342003703e007200341d0066a41a4dcc500410310f201201d200341d0066a41086a2222290000370300200320032900d0063703e007200341e0066a419ce1c500410d10f201200541086a2223200341e0066a41086a2224290000370000200520032900e006370000200341a8086a200341e0076a4120109c0220032802a8082204204f20041b2117024020032902ac08420020041b2237422088a7225d450d00201f280200211541002104205d2116205d2106024003400240024020152017201641017620046a22164102746a221c28020022014d0d00201641016a21040c010b20152001460d02201621060b200620046b2116200620044b0d000c020b0b201c201c41046a205d2016417f736a41027410c40a1a20374280808080707c21370b200320173602a808200320373702ac082020420037030020214200370300201d4200370300200342003703e007200341d0066a41a4dcc500410310f201201d2022290000370300200320032900d0063703e007200341e0066a419ce1c500410d10f20120232024290000370000200520032900e006370000200341203602ac0b2003200341e0076a3602a80b200341a8086a200341a80b6a10970302402017450d00203742ffffffff0383500d00201710390b201f41046a21042020420037030020214200370300201d4200370300200342003703e007200341d0066a41a4dcc500410310f201201d2022290000370300200320032900d0063703e007200341e0066a41e4e1c500411a10f20120232024290000370000200520032900e0063700002003200341e0076a412010f50102400240024020032802004101470d00201f28020020032802042206460d010b2020420037030020214200370300201d4200370300200342003703e007200341d0066a41a4dcc500410310f201201d2022290000370300200320032900d0063703e007200341e0066a41e4e1c500411a10f20120232024290000370000200520032900e006370000200341e0076a412010fd010c010b2020420037030020214200370300201d4200370300200342003703e007200341d0066a41a4dcc500410310f201201d2022290000370300200320032900d0063703e007200341e0066a41e4e1c500411a10f20120232024290000370000200520032900e006370000200320063602a808200341e0076a4120200341a8086a410410a3020b2004211f2004204d470d000b2051450d0020514102742106201e21040340200410b907200441046a21042006417c6a22060d000b0b20032903880320034190036a29030020032802cc0310ba0710bb07024020032802c40641ffffffff0371450d00201e10390b024020034184066a28020041ffffff3f71450d0020032802800610390b024020034190066a28020041ffffff3f71450d00200328028c0610390b200341f00b6a24000f0b20032802e80a210420032802e00a2116024020032802dc0a450d00200610390b02402004450d00201610390b200341a8086a200341a80b6a10e9030c000b0b1034000b1030000b41f0f2c500413941a0c8c6001035000b41f0f2c50041394190c8c6001035000bfe0c010b7f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a3602002002200341206a41e1e69df30610ec0420022802042101200228020021044100210520024100360230024002402001450d00200220042d00003a00342002410136023020014101460d00200220042d00013a00352002410236023020014102460d00200220042d00023a00362002410336023020014103460d00200220042d00033a00372002410436023020014104460d00200241386a20042d00043a00002002410536023020014105460d00200241396a20042d00053a00002002410636023020014106460d002002413a6a20042d00063a00002002410736023020014107460d002002413b6a20042d00073a00002002410836023020014108460d002002413c6a20042d00083a00002002410936023020014109460d002002413d6a20042d00093a00002002410a3602302001410a460d002002413e6a20042d000a3a00002002410b3602302001410b460d002002413f6a20042d000b3a00002002410c3602302001410c460d00200241c0006a20042d000c3a00002002410d3602302001410d460d00200241c1006a20042d000d3a00002002410e3602302001410e460d00200241c2006a20042d000e3a00002002410f3602302001410f460d00200241c3006a20042d000f3a00002002411036023020014110460d00200241c4006a20042d00103a00002002411136023020014111460d00200241c5006a20042d00113a00002002411236023020014112460d00200241c6006a20042d00123a00002002411336023020014113460d00200241c7006a20042d00133a00002002411436023020014114460d00200241c8006a20042d00143a00002002411536023020014115460d00200241c9006a20042d00153a00002002411636023020014116460d00200241ca006a20042d00163a00002002411736023020014117460d00200241cb006a20042d00173a00002002411836023020014118460d00200241cc006a20042d00183a00002002411936023020014119460d00200241cd006a20042d00193a00002002411a3602302001411a460d00200241ce006a20042d001a3a00002002411b3602302001411b460d00200241cf006a20042d001b3a00002002411c3602302001411c460d00200241d0006a20042d001c3a00002002411d3602302001411d460d00200241d1006a20042d001d3a00002002411e3602302001411e460d00200241d2006a20042d001e3a00002002411f3602302001411f460d00200241d3006a20042d001f3a0000200241203602302002200241c9006a22062800003602582002200241cc006a28000036005b200220022f01343b012c200220022d00363a002e2002413e6a2801002107200241c5006a2800002108200241306a41206a280200210120022800372105200228005b2104200241286a41026a22092002413d6a2d00003a000020022002413b6a2f00003b0128200241246a41026a220a200241c4006a2d00003a00002002200241c2006a2f01003b0124200241206a41026a220b200241cb006a2d00003a0000200220062f00003b0120200241306a41026a220620022d002e3a0000200220022f012c3b0130200241d8006a41026a220c20092d00003a0000200220022f01283b01582002411c6a41026a2209200a2d00003a0000200220022f01243b011c200241186a41026a220a200b2d00003a0000200220022f01203b0118200241146a41026a20062d00003a0000200220022f01303b0114200241106a41026a200c2d00003a0000200220022f01583b01102002410c6a41026a20092d00003a0000200220022f011c3b010c200241086a41026a200a2d00003a0000200220022f01183b01080c010b200241146a41026a41003a0000200241106a41026a41003a00002002410c6a41026a41003a0000200241086a41026a41003a0000200241003b0114200241003b0110200241003b010c200241003b0108410021014100210441002108410021070b20002003360200200020022f01143b0004200041066a200241146a41026a2d00003a0000200041076a2005360000200020022f01103b000b2000410d6a200241106a41026a2d00003a00002000200736010e200020022f010c3b0012200041146a2002410c6a41026a2d00003a000020002008360015200020022f01083b00192000411b6a200241086a41026a2d00003a0000200041206a20013602002000411c6a20043602000b200241e0006a24000bfe0c010b7f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a3602002002200341206a41e1ea91cb0610ec0420022802042101200228020021044100210520024100360230024002402001450d00200220042d00003a00342002410136023020014101460d00200220042d00013a00352002410236023020014102460d00200220042d00023a00362002410336023020014103460d00200220042d00033a00372002410436023020014104460d00200241386a20042d00043a00002002410536023020014105460d00200241396a20042d00053a00002002410636023020014106460d002002413a6a20042d00063a00002002410736023020014107460d002002413b6a20042d00073a00002002410836023020014108460d002002413c6a20042d00083a00002002410936023020014109460d002002413d6a20042d00093a00002002410a3602302001410a460d002002413e6a20042d000a3a00002002410b3602302001410b460d002002413f6a20042d000b3a00002002410c3602302001410c460d00200241c0006a20042d000c3a00002002410d3602302001410d460d00200241c1006a20042d000d3a00002002410e3602302001410e460d00200241c2006a20042d000e3a00002002410f3602302001410f460d00200241c3006a20042d000f3a00002002411036023020014110460d00200241c4006a20042d00103a00002002411136023020014111460d00200241c5006a20042d00113a00002002411236023020014112460d00200241c6006a20042d00123a00002002411336023020014113460d00200241c7006a20042d00133a00002002411436023020014114460d00200241c8006a20042d00143a00002002411536023020014115460d00200241c9006a20042d00153a00002002411636023020014116460d00200241ca006a20042d00163a00002002411736023020014117460d00200241cb006a20042d00173a00002002411836023020014118460d00200241cc006a20042d00183a00002002411936023020014119460d00200241cd006a20042d00193a00002002411a3602302001411a460d00200241ce006a20042d001a3a00002002411b3602302001411b460d00200241cf006a20042d001b3a00002002411c3602302001411c460d00200241d0006a20042d001c3a00002002411d3602302001411d460d00200241d1006a20042d001d3a00002002411e3602302001411e460d00200241d2006a20042d001e3a00002002411f3602302001411f460d00200241d3006a20042d001f3a0000200241203602302002200241c9006a22062800003602582002200241cc006a28000036005b200220022f01343b012c200220022d00363a002e2002413e6a2801002107200241c5006a2800002108200241306a41206a280200210120022800372105200228005b2104200241286a41026a22092002413d6a2d00003a000020022002413b6a2f00003b0128200241246a41026a220a200241c4006a2d00003a00002002200241c2006a2f01003b0124200241206a41026a220b200241cb006a2d00003a0000200220062f00003b0120200241306a41026a220620022d002e3a0000200220022f012c3b0130200241d8006a41026a220c20092d00003a0000200220022f01283b01582002411c6a41026a2209200a2d00003a0000200220022f01243b011c200241186a41026a220a200b2d00003a0000200220022f01203b0118200241146a41026a20062d00003a0000200220022f01303b0114200241106a41026a200c2d00003a0000200220022f01583b01102002410c6a41026a20092d00003a0000200220022f011c3b010c200241086a41026a200a2d00003a0000200220022f01183b01080c010b200241146a41026a41003a0000200241106a41026a41003a00002002410c6a41026a41003a0000200241086a41026a41003a0000200241003b0114200241003b0110200241003b010c200241003b0108410021014100210441002108410021070b20002003360200200020022f01143b0004200041066a200241146a41026a2d00003a0000200041076a2005360000200020022f01103b000b2000410d6a200241106a41026a2d00003a00002000200736010e200020022f010c3b0012200041146a2002410c6a41026a2d00003a000020002008360015200020022f01083b00192000411b6a200241086a41026a2d00003a0000200041206a20013602002000411c6a20043602000b200241e0006a24000ba10302027f037e23004190016b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e2ca95b30610ec0420022002290308370360200241e8006a200241e0006a10fa050240024020022d00684101470d00200241186a4200370300200241206a4200370300200241286a4200370300200241106a41206a41003a0000200242003703100c010b200241386a41206a20024189016a2d000022013a0000200241386a41186a20024181016a2900002204370300200241386a41106a200241f9006a2900002205370300200241386a41086a200241f1006a2900002206370300200241106a41086a2006370300200241106a41106a2005370300200241106a41186a2004370300200241106a41206a20013a0000200220022900692204370338200220043703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a290300370000200041246a200241306a2d00003a00000b20024190016a24000b3400200041a6f2c50036020420004100360200200041146a4106360200200041106a41c8afc600360200200041086a420d3702000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010d4010b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010cf010b870101037f230041106b2202240020004201370200200041086a220341003602002002410036020c20024200370204200241002802ccdd4a36020020022000109d030240200041046a280200200328020022046b41034b0d00200020044104108101200328020021040b2003200441046a360200200028020020046a4100360000200241106a24000ba60503027f017e067f230041306b22012400024002400240024020002802002202450d0020002902042103200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a6f2c500410d10f2012005200141206a41086a220629000037030020012001290020370300200141206a4188b4c600410f10f20120002006290000370300200420012900203703002003422088a72207410c6c41046a2200417f4c0d010240024020000d00410121040c010b200010382204450d030b200141003602282001200036022420012004360220200141206a200710d20102402007450d0020022007410c6c6a210820022109034020092802002104200141206a2009280208220010d2012009410c6a210902402000450d0020004102742105200128022821000340200428020021060240200128022420006b41034b0d00200141206a20004104108101200128022821000b200441046a2104200128022020006a20063600002001200041046a22003602282005417c6a22050d000b0b20092008470d000b0b2001412020012802202200200128022810a30202402001280224450d00200010390b02402007450d002007410c6c21042002210003400240200041046a28020041ffffffff0371450d00200028020010390b2000410c6a2100200441746a22040d000b0b2003a72200450d032000410c6c450d03200210390c030b200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a6f2c500410d10f2012005200141206a41086a220629000037030020012001290020370300200141206a4188b4c600410f10f20120002006290000370300200420012900203703002001412010fd010c020b1034000b1030000b200141306a24000b0b0020002802002001104a0b130020004107360204200041d8c9c6003602000b7e01027f230041306b22022400200241146a4104360200200241f8d5ca003602102002410436020c200241f0d5ca003602082001411c6a2802002103200128021821012002412c6a41023602002002420237021c20024180d6ca003602182002200241086a36022820012003200241186a103b2101200241306a240020010b1300200041023602042000419cd0c6003602000b13002000410f360204200041b8d6c6003602000b130020004105360204200041ace4c6003602000bd20201057f230041206b22022400200241c8e8c600410a10f201200241106a41e8e8c600410a10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000b9a0302047f017e23004180016b22012400200141206a4200370300200141186a22024200370300200141086a41086a420037030020014200370308200141086a41c8e8c600410a10f201200241d2e8c600410910f2012001412036022c2001200141086a360228200141306a200141086a412010e40202400240200128023022030d00410021020c010b200128023421042001200141306a41086a28020036024420012003360240200141e8006a200141c0006a10ba0302400240200128026822020d002001420037024c410021022001410028029cde4a3602482001410c36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c200141e4b4c4003602682001200141d8006a360278200141e4006a41fc86ca00200141e8006a103b1a2001280248200128025010e7020240200128024c450d00200128024810390b0c010b200129026c21050b2004450d00200310390b0240024020020d00200042003702042000410028029cde4a3602000c010b20002005370204200020023602000b20014180016a24000b9a2d01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e240001161602031604050616161616071608161616161609160a160b0c160d0e0f10111213140b0240024002400240024002400240200041086a280200417f6a0e091c001c01021c030405060b200041106a280200450d1b2000410c6a28020010390f0b200041106a280200450d1a2000410c6a28020010390f0b200041106a280200450d192000410c6a28020010390f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010390b0240200241106a280200450d002002410c6a28020010390b200241186a2102200141686a22010d000b0b200041106a2802002202450d18200241186c450d18200028020c10390f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d172002410c6c450d17200028020c10390f0b200041106a280200450d162000410c6a28020010390f0b200041106a280200450d152000410c6a28020010390f0b02400240200041086a280200417f6a0e020001160b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d152002410c6c450d15200028021010390f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10390b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110390b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d142002410c6c450d14200028021010390f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2d00004102470d16200041146a280200450d16200041106a28020010390f0b2000410c6a2d00004102470d15200041146a280200450d15200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2d00004102470d14200041386a280200450d14200041346a28020010390f0b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010390f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041086a2802002202450d12200241f0006c450d12200028020410390f0b20002d00044101470d11200041ec016a280200450d11200041e8016a28020010390f0b02400240200041086a280200417f6a0e020001120b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010390f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d102002410c6c450d10200028021010390f0b02402000410c6a280200450d00200041086a28020010390b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010390b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0f2002410c6c450d0f200028021410390f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110390b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410390b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109f03200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010390b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010390b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10390b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0e200241246c450d0e200028022c10390f0b02400240024002402000280204417f6a0e0400010203110b200041106a280200450d102000410c6a28020010390f0b200041106a280200450d0f2000410c6a28020010390f0b200041106a280200450d0e2000410c6a28020010390f0b200041106a280200450d0d2000410c6a28020010390f0b02400240200041086a2d0000417f6a0e0200010e0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0d2000411c6a28020010390f0b0240200041346a280200450d00200041306a28020010390b200041c0006a280200450d0c2000413c6a28020010390f0b200041086a2d00004107470d0b200041146a280200450d0b200041106a28020010390f0b02400240200041086a280200417f6a0e05000c0c0c010c0b0240200041146a280200450d00200041106a28020010390b200041206a280200450d0b2000411c6a28020010390f0b200041106a10d2030f0b0240024002400240200041086a280200417f6a0e03000102030b2000410c6a2202280200109009200228020010390f0b2000410c6a2202280200109009200228020010390f0b2000410c6a2d00004102470d0a200041146a280200450d0a200041106a28020010390f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010390b200041306a2202280200109009200228020010390f0b02400240200041086a2d0000417f6a0e0200010a0b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d09200241f0006c450d0920002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d08200241286c450d0820004188016a28020010390f0b02400240200041086a2d0000417f6a0e020001090b0240200041186a2802002201450d00200041106a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041146a2802002202450d00200241246c450d00200028021010390b024020004190016a2802002202450d0020024184016c450d002000418c016a28020010390b0240200041c0016a2802002201450d00200041b8016a2802002202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410390b20022003470d000b0b200041bc016a2802002202450d08200241f0006c450d0820002802b80110390f0b0240200041246a2802002201450d002000411c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010390c030b2002410c6a280200450d02200241086a28020010390c020b2002410c6a280200450d01200241086a28020010390c010b200241086a280200450d00200241046a28020010390b200241246a21022001415c6a22010d000b0b0240200041206a2802002202450d00200241246c450d00200028021c10390b2000418c016a2802002202450d07200241286c450d0720004188016a28020010390f0b024020002802044101470d002000410c6a28020041ffffff3f71450d07200028020810390f0b2000410c6a28020041ffffff3f71450d06200028020810390f0b024002400240200041086a2d0000417f6a0e03000102080b200041306a28020041ffffff3f71450d072000412c6a28020010390f0b2000410c6a2202280200109009200228020010390f0b200041106a2202280200109009200228020010390f0b20002d00044104470d042000410c6a28020041ffffff3f71450d04200041086a28020010390f0b02400240024020002f0104417f6a0e020001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d05200241c0076c450d05200028020810390c050b200041086a2202280200109009200228020010390f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210c601200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d03200241c0076c450d03200028020810390f0b20002d00042202417e6a4108490d0220024101460d01200041c8006a2202280200109009200228020010390f0b0240024002400240200041086a280200417f6a0e03000102030b200041106a10af01200041d8036a10d2030f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d03200241f8036c450d03200028020c10390f0b200041186a10af01200041e0036a10af010240200041146a2802002201450d002000410c6a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041106a2802002202450d02200241f8036c450d02200028020c10390f0b2000410c6a2202280200109609200228020010390f0b200041286a2202280200109009200228020010390f0b0bd20201057f230041206b22022400200241c8e8c600410a10f201200241106a41f2e8c600410610f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000bd20201057f230041206b22022400200241c8e8c600410a10f201200241106a41f2e8c600410610f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000bc50601067f230041a0266b22042400200441106a2001109709200441086a20042802102205200428021841f4ddca004100410010c10502400240024002402004280208450d000240200428020c220620024d0d0020004183a0013b0104200041013602002000410c6a4113360200200041086a41b9fdc600360200200041066a41093a00000c020b200441d8166a200110970920042802d8162101200420042802e01622023602ec16200420013602e816200441f0166a2001200210e4020240024020042802f0162207450d0020042802f41621082004200441f8166a2802003602fc25200420073602f825200441b81e6a200441f8256a10c40141262102024020042802b81e22094125460d00200441fc166a200441b81e6a41047241bc0710c30a1a200921020b0240024020024126470d0020044200370284262004410028029cde4a360280262004410c360294262004200441e8166a36029026200420044180266a36029c26200441cc1e6a4101360200200442013702bc1e200441e4b4c4003602b81e200420044190266a3602c81e2004419c266a41fc86ca00200441b81e6a103b1a20042802802620042802882610e7020240200428028426450d0020042802802610390b412521020c010b2004419c0f6a200441fc166a41bc0710c30a1a0b02402008450d00200710390b20024125460d00200441e0076a2004419c0f6a41bc0710c30a1a024020042802dc16450d00200110390b200441206a410472200441e0076a41bc0710c30a1a20042002360220200441b81e6a200441206a10a00620042903b81e2003580d0120004183a0013b0104200041013602002000410c6a4113360200200041086a41c5fcc600360200200041066a41083a0000200441206a1090090c030b024020042802dc16450d00200110390b20004183a0013b0104200041013602002000410c6a410f360200200041086a4199fdc600360200200041066a41023a00000c020b200041086a200441206a41c00710c30a1a20004100360200200041c8076a20063602002004280214450d030c020b20004183a0013b0104200041013602002000410c6a410f360200200041086a4199fdc600360200200041066a41023a00000b2004280214450d010b200510390b200441a0266a24000bc70804017f017e067f057e230041c0136b22052400200541a5086a200341186a2900003700002005419d086a200341106a29000037000020054195086a200341086a290000370000200541023a008c08200541103a0088082005200329000037008d0820054188086a10fc0120054188086a200410a0062005290388082106200228020421070240411010382208450d00200841ac81c40036020c200841013602082008428180808010370200411010382209450d002009419481c40036020c20094101360208200942818080801037020020082008280200417f6a220a3602000240200a0d002008280208200828020c2802001102000240200828020c280204450d00200828020810390b200841046a220a200a280200417f6a220a360200200a0d00200810390b200541386a200441c00710c30a1a024002402009280208200541386a200928020c28020c1101000d00200541206a41003a00004102210b200541286a41023a000020092009280200417f6a22083602002005420037031020054201370308024020080d002009280208200928020c2802001102000240200928020c280204450d00200928020810390b200941046a22082008280200417f6a220836020020080d00200910390b200541386a10e2034101210a0c010b20054188086a200541386a41c00710c30a1a2005419c136a200136020020054198136a2007360200200520093602b813200541003a009413200541023a009013200541086a20054188086a20054190136a10e3032005290308420151210a200541286a2d0000210b0b20054188086a41186a2209200341186a220129000037030020054188086a41106a2208200341106a220729000037030020054188086a41086a2204200341086a220c29000037030020052003290000370388082005290310210d02400240200a0d00200d210e4108210a0c010b4202210e4108210a200d4202510d002005200541296a220a290000370390132005200a41076a28000036009713200d210e200b210a0b200541386a41186a2009290300220d370300200541386a41106a2008290300220f370300200541386a41086a200429030022103703002005200529038808221137033820052005290390133703f80720052005280097133600ff07200541a5086a200d3700002005419d086a200f37000020054195086a2010370000200541b0086a200a3a00002005201137008d08200541b1086a20052903f807370000200541b8086a20052800ff07360000200541043a008c08200541103a00880820054188086a10fc01200541086a41106a290300210d20092001290000370300200820072900003703002004200c290000370300200520032900003703880820054188086a109509210302402002410c6a28020041ffffff3f71450d00200228020810390b0240200241186a28020041ffffff3f71450d00200228021410390b200020033602082000200d2006200ea71b370300200541c0136a24000f0b1030000bc20601097f230041c0006b22012400200141106a200010970920012802102202200128021810fd0102402001280214450d00200210390b200141106a200010920920012802102202200128021810fd0102402001280214450d00200210390b2001108f0902400240200128020822030d0041002104200128020021050c010b4100210620012802002105410021044100210702400340024002402004450d00200520074105746a21022005200720066a4105746a2108034020022000412010c60a450d0220082002290000370000200841186a200241186a290000370000200841106a200241106a290000370000200841086a200241086a290000370000200841206a2108200241206a21022003200741016a22074b0d000c040b0b200520074105746a2102034020022000412010c60a450d01200241206a21022003200741016a22074b0d000b410021040c030b2006417f6a2106200441016a21042003200741016a22074b0d000b0b024020040d00410021040c010b2005200720046b4105746a200520074105746a200320076b41057410c40a1a0b200320046b21070240024020050d00200141286a22024200370300200141206a22084200370300200141106a41086a2200420037030020014200370310200141306a41c8e8c600410a10f2012000200141306a41086a220329000037030020012001290030370310200141306a41d2e8c600410910f2012002200329000037030020082001290030370300200141106a412010fd010c010b20012802042100200141286a22024200370300200141206a22084200370300200141106a41086a2206420037030020014200370310200141306a41c8e8c600410a10f2012006200141306a41086a220929000037030020012001290030370310200141306a41d2e8c600410910f20120022009290000370300200820012900303703002001410036023820014201370330200141306a200710d20102402007450d00200341057420044105746b21082005210203402002200141306a10ff02200241206a2102200841606a22080d000b0b200141106a412020012802302202200128023810a30202402001280234450d00200210390b200041ffffff3f71450d00200510390b200141c0006a2400200741016a0b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d0020021090090b0f0b200041086a10af01200041046a2202280200109609200228020010390bd20201057f230041206b22022400200241c8e8c600410a10f201200241106a41e8e8c600410a10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000be20401057f230041e0006b22032400200341086a41e0edc600410410f201200341186a41f4d9c700411710f2012003410036024020034201370338200341386a4100410410810120032802382204200328024022056a20013600002003200541046a22013602400240200328023c220520016b41034b0d00200341386a20014104108101200328023c210520032802382104200328024021010b200420016a200236000020032004200141046a220110f301370348200341dc006a200420016a360200200320043602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a108d0102402005450d00200410390b024002402003280230220541206a2204417f4c0d000240024020040d00410121010c010b200410382201450d020b2000200136020041002102200041086a22064100360200200041046a2207200436020002402004410f4b0d0020004100411010810120062802002102200028020021010b200120026a22042003290008370000200441086a200341086a41086a2900003700002006200241106a220436020002402007280200220220046b410f4b0d00200020044110108101200041046a2802002102200041086a28020021040b200041086a2206200441106a22013602002000280200220720046a22042003290018370000200441086a200341186a41086a290000370000200328022821040240200220016b20054f0d0020002001200510810120062802002101200028020021070b200720016a2004200510c30a1a2006200120056a3602000240200328022c450d00200410390b200341e0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41b4dfc700411710f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41a4dbc700411b10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41e0edc600410410f201200241186a41e8dbc700411f10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b8f0203047f017e027f0240024020014102490d00417f200041086a22022802002203200028020022044720032004491b2203417f2000410c6a2802002204200041046a28020022054720042005491b20031b417f470d002000290200210620002000290208370200024020014103490d002006422088a721052006a72107200041106a210320002001417f6a22044103746a210202400340417f2003280200220020074720002007491b2200417f200341046a280200220820054720082005491b20001b417f470d012004450d04200341786a2003290200370200200341086a21032004417f6a22044101470d000c020b0b200341786a21020b200220063702000b0f0b200120014184acc900103c000be80503047f047e067f230041f0006b22022400200241d8006a2000200110a9052002200228025822032002280260220410aa05024020022d003422054102460d002003200410fd010b200241186a2903002106200241086a290300210720022903102108200229030021090240200228025c450d00200310390b024020054102460d002002200010ec08200220092007109f022002200110ec08200220082006109f020b20022000200110a80520022802002203200228020810fd0102402002280204450d00200310390b200241d8006a200010990920022002280258220a2002280260220b109c02410021032002280200220541002802ccdd4a20051b210c02402002290204420020051b2206422088a7220d450d00200d2104200d21050240034002400240200c200441017620036a22044102746a220e280200220f20014f0d00200441016a21030c010b200f2001460d02200421050b200520036b2104200520034b0d000c020b0b200e200e41046a200d2004417f736a41027410c40a1a20064280808080707c21060b2002200c360200200220063702042002200b36026c2002200a3602682002200241e8006a1097030240200642ffffffff0383500d00200c10390b0240200228025c450d00200a10390b200241d8006a200110c80620022002280258220e2002280260220d109c02410021032002280200220541002802ccdd4a20051b210f02402002290204420020051b2206422088a7220a450d00200a2104200a21050240034002400240200f200441017620036a22044102746a220c280200220120004f0d00200441016a21030c010b20012000460d02200421050b200520036b2104200520034b0d000c020b0b200c200c41046a200a2004417f736a41027410c40a1a20064280808080707c21060b2002200f360200200220063702042002200d36026c2002200e3602682002200241e8006a1097030240200642ffffffff0383500d00200f10390b0240200228025c450d00200e10390b200241f0006a24000bd20201057f230041206b22022400200241f4eec600410510f201200241106a419488c800410e10f2010240412010382203450d0020032001290000370000200341186a2204200141186a290000370000200341106a2205200141106a290000370000200341086a2206200141086a290000370000412010382201450d0020012003290000370000200141186a2004290000370000200141106a2005290000370000200141086a20062900003700002003103941c00010382203450d002003200229000037000020032002290010370010200341086a200241086a290000370000200341186a200241106a41086a29000037000020002003360200200041046a42c0808080800837020020032001290000370020200341286a200141086a290000370000200341306a200141106a290000370000200341386a200141186a29000037000020011039200241206a24000f0b1030000be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41f9eec600411210f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41fc86c800410e10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bda1103037f017e0d7f230041b0176b22022400200241f8036a200141f80310c30a1a02400240024002400240024002400240024002400240024002400240024020002802042201450d00200028020021030c010b41b02b10382201450d0141002103200141003b01ae2b200141003602a82b20002001360204200041003602000b200241c0136a20032001200241f8036a10b70a024020022802c0134101460d00200241f8036a10b90a20022d00c8074106490d0d200241d0076a280200450d0d200241cc076a28020010390c0d0b200241f8036a41086a280200210420022903f80321052002410c6a200241f8036a410c6a41ec0310c30a1a200241c0136a410c6a28020021030240200241c0136a41086a28020022012f01ae2b2206410a4b0d00200241f8036a2002410c6a41ec0310c30a1a0240200341016a220720064b0d002001200741f8036c6a2001200341f8036c6a200620036b41f8036c10c40a1a0b2001200341f8036c6a22032004360208200320053703002003410c6a200241f8036a41ec0310c30a1a2001200641016a3b01ae2b0c0c0b410521064100210802400240200341054f0d0041042106200321070c010b41052107024002402003417b6a0e020201000b200341796a210741012108410621060c010b41002107410121080b20022802c413210941b02b1038220a450d00200a41003b01ae2b200a41003602a82b200a20012f01ae2b220b2006417f736a22033b01ae2b2001200641f8036c6a220c280204210d200c280200210e200241f8036a200c41086a41f00310c30a1a2003410c4f0d01200b200641016a220c6b2003470d02200a2001200c41f8036c6a200341f8036c10c30a210c200120063b01ae2b200241c0136a200241f8036a41f00310c30a1a200c200120081b22032f01ae2b2106200241f8036a2002410c6a41ec0310c30a1a0240200741016a220820064b0d002003200841f8036c6a2003200741f8036c6a200620076b41f8036c10c40a1a0b2003200741f8036c6a22072004360208200720053703002007410c6a200241f8036a41ec0310c30a1a2003200641016a3b01ae2b200241d00f6a200241c0136a41f00310c30a1a200241e00b6a200241d00f6a41f00310c30a1a02400240024020012802a82b22030d00410021090c010b41002107200c210f200d2110200e211103402003210820092007470d0620012f01ac2b210420082f01ae2b220b410b490d024100210c41042101024020044105490d0020042101024002402004417b6a0e020201000b200441796a21044101210c410621010c010b410021044101210c410521010b41e02b1038220a450d03200a41003b01ae2b200a41003602a82b200a20082f01ae2b22122001417f736a22033b01ae2b2008200141f8036c6a2206280204210d2006280200210e200241f8036a200641086a41f00310c30a1a2003410c4f0d072012200141016a22076b2003470d08200a2008200741f8036c6a200341f8036c10c30a2106200820013b01ae2b200241c0136a200241f8036a41f00310c30a1a20062f01ae2b220341016a21122003410c4f0d09200b20016b22012012470d0a200941016a2109200641b02b6a200820074102746a41b02b6a200141027410c30a1a4100210102400340200620014102746a41b02b6a280200220720013b01ac2b200720063602a82b200120034f0d01200120012003496a220120034d0d000b0b200241d00f6a200241c0136a41f00310c30a1a20062008200c1b22072f01ae2b2101200241f8036a200241e00b6a41f00310c30a1a0240200441016a220320014b0d002007200341f8036c6a2007200441f8036c6a200120046b41f8036c10c40a1a0b200141016a210c2007200441f8036c6a220b2010360204200b2011360200200b41086a200241f8036a41f00310c30a1a200741b02b6a210b0240200441026a2211200141026a22104f0d00200b20114102746a200b20034102746a200120046b41027410c40a1a0b200b20034102746a200f3602002007200c3b01ae2b0240200320104f0d00200720044102746a41b42b6a2101034020012802002203200441016a22043b01ac2b200320073602a82b200141046a2101200c2004470d000b0b200241e00b6a200241d00f6a41f00310c30a1a20082101200921072006210f200d2110200e211120082802a82b22030d000b0b200241f0076a200241e00b6a41f00310c30a1a20002802042203450d092000280200210641e02b10382201450d01200120033602b02b200141003b01ae2b200141003602a82b20002001360204200341003b01ac2b200320013602a82b2000200641016a36020020062009470d0a20012f01ae2b2203410b4f0d0b2001200341016a22063b01ae2b2001200341f8036c6a2203200d3602042003200e360200200341086a200241f0076a41f00310c30a1a200141b02b6a20064102746a200a360200200a20063b01ac2b200a20013602a82b2000200028020841016a3602080c0d0b200241f8036a200241e00b6a41f00310c30a1a200441016a21010240200b20044d22060d002008200141f8036c6a2008200441f8036c6a200b20046b41f8036c10c40a1a0b200b41016a21072008200441f8036c6a2203201036020420032011360200200341086a200241f8036a41f00310c30a1a200841b02b6a2103200b41026a210c024020060d00200441027420036a41086a200320014102746a200b20046b41027410c40a1a0b200820073b01ae2b200320014102746a200f3602002001200c4f0d0b200b41016a210720082001417f6a22014102746a41b42b6a2103034020032802002206200141016a22013b01ac2b200620083602a82b200341046a210320072001470d000c0c0b0b1030000b2003410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b41c0f3ca00413541f8f3ca001035000b2003410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2012410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b2000200028020841016a3602080b200241b0176a24000b130020004101360204200041dcf0c6003602000b3400200041c3fec30036020420004100360200200041146a4102360200200041106a41d4f6c600360200200041086a42093702000b130020004101360204200041a4f9c6003602000b2d01017f02404108103822020d001030000b20002002360200200242b8173700002000428880808080013702040b130020004106360204200041ccfdc6003602000b3400200041c8e8c60036020420004100360200200041146a4106360200200041106a41c8adc700360200200041086a420a3702000b2e01017f02404101103822020d001030000b20002002360200200241003a0000200041046a4281808080103702000b2e01017f230041106b22022400200242003702042002410028029cde4a36020020002002109b03200241106a24000b2e01017f02404101103822020d001030000b20002002360200200241003a0000200041046a4281808080103702000b6101027f230041c0076b22022400200241253602000240410110382203450d00200041046a4201370200200341003a000020002003360200200041086a4101360200024020022802004125460d0020021090090b200241c0076a24000f0b1030000b170020004100360208200042013702002000410010d2010be90301067f230041d0006b22022400200241086a41f4eec600410510f201200241186a41d887c800411410f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000b130020004106360204200041c8c1c7003602000b3400200041e0edc60036020420004100360200200041146a410c360200200041106a41f4d0c700360200200041086a42043702000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010d1010b2e01017f230041106b2202240020024200370204200241002802ccdd4a36020020002002109903200241106a24000b130020004105360204200041e0f2c7003602000b3400200041f4eec60036020420004100360200200041146a410d360200200041106a41d4f9c700360200200041086a42053702000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010cd010b870101037f230041206b2202240020004201370200200041086a22034100360200200241003602142002420037020c200241002802ccdd4a360208200241086a2000109e030240200041046a28020020032802002204470d00200020044101108101200328020021040b2003200441016a360200200028020020046a41003a0000200241206a24000b2e01017f230041106b2202240020024200370204200241002802ccdd4a36020020002002108c02200241106a24000b9b0702027f047e230041f0016b2202240020002802002100024002400240024020012802002203411071450d00200041086a290300210420002903002105418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d030b200141d1c5c0004102200241f0006a20006a41800120006b105321000c010b02402003412071450d00200041086a290300210420002903002105418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d040b200141d1c5c0004102200241f0006a20006a41800120006b105321000c010b200041086a2903002104200029030021062002412736026c02400240200442ffff1f560d0020064213882004422d868442bda282a38eab04802104420021050c010b200241386a2006420042f3b2d8c19e9ebdcc957f420010c20a200241286a2006420042d2e1aadaeda7c987f600420010c20a200241d8006a2004420042f3b2d8c19e9ebdcc957f420010c20a200241c8006a2004420042d2e1aadaeda7c987f600420010c20a200241c8006a41086a290300200241286a41086a290300200241386a41086a290300220520022903287c2204200554ad7c220720022903487c2205200754ad7c2005200241d8006a41086a290300200420022903587c200454ad7c7c2204200554ad7c2207423e8821052004423e8820074202868421040b200241186a20042005428080e0b0b79fb79cf500427f10c20a200229031820067c200241f0006a200241ec006a107002402004200584500d00200241f0006a41146a4130200228026c416c6a10c50a1a2002411436026c200241086a20044213882005422d8684220542bda282a38eab048022062004428080e0b0b79fb79cf500427f10c20a200229030820047c200241f0006a200241ec006a1070200542bda282a38eab04540d00200241f1006a4130200228026c417f6a10c50a1a20022006a74130723a00702002410036026c0b200141f4ddca004100200241f0006a200228026c22006a412720006b105321000b200241f0016a240020000f0b200041800141bc89c000105e000b200041800141bc89c000105e000bd60202027f017e23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002903002104418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d030b200141d1c5c0004102200220006a41800120006b105321000c010b02402003412071450d0020002903002104418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d040b200141d1c5c0004102200220006a41800120006b105321000c010b20002903002001105021000b20024180016a240020000f0b200041800141bc89c000105e000b200041800141bc89c000105e000b8e0301017f230041c0006b220224000240024002400240200028020022002802000e03010200010b2002200041046a360224200241193602142001411c6a28020021002002200241246a360210200128021821012002413c6a41013602002002420237022c200241d896c8003602282002200241106a36023820012000200241286a103b21010c020b2002200041046a36020c2002200041086a3602242002411c6a4119360200200241193602142001411c6a28020021002002200241246a36021820022002410c6a360210200128021821012002413c6a41023602002002420337022c200241e896c8003602282002200241106a36023820012000200241286a103b21010c010b2002200041046a36020c2002200041086a3602242002411c6a4119360200200241193602142001411c6a28020021002002200241246a36021820022002410c6a360210200128021821012002413c6a41023602002002420337022c2002418097c8003602282002200241106a36023820012000200241286a103b21010b200241c0006a240020010b15002000280200220028020020002802042001104e0b9c0701017f230041c0006b220224000240024002400240024002400240200028020022002802000e06010203040500010b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a412e360200200241106a410c6a412e3602002002412e3602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241c8b4c0003602282002200241106a36023820012000200241286a103b21000c050b2002200041046a3602082002200041086a36020c2002411c6a412e3602002002412e3602142001411c6a280200210020022002410c6a3602182002200241086a360210200128021821012002413c6a41023602002002420337022c200241e8b4c0003602282002200241106a36023820012000200241286a103b21000c040b2002200041046a36020c2002412e3602142001411c6a280200210020022002410c6a360210200128021821012002413c6a41013602002002420237022c20024180b5c0003602282002200241106a36023820012000200241286a103b21000c030b2002200041046a36020c200241106a41146a4120360200200241106a410c6a412036020020022000410c6a3602202002200041086a3602182002412e3602142001411c6a280200210020022002410c6a36021020012802182101200241286a41146a41033602002002420337022c20024190b5c0003602282002200241106a36023820012000200241286a103b21000c020b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a412e360200200241106a410c6a412e3602002002412e3602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241a8b5c0003602282002200241106a36023820012000200241286a103b21000c010b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a412e360200200241106a410c6a412e3602002002412e3602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241c8b5c0003602282002200241106a36023820012000200241286a103b21000b200241c0006a240020000b930602067f027e230041206b2202240020012802082103200128020421042001280200210502400240412010382201450d0020012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002002200528020010bd092003280204220041146a2205417f4c0d0120032802002106200428020021070240024020050d00410121030c010b200510382203450d010b41002104200241003602182002200336021020022005360214200741086a29030021082007290300210902402005410f4b0d00200241106a4100411010810120022802102103200228021821040b200320046a22052008370008200520093700002002200441106a22053602180240024002400240200041c000490d00200041808001490d012000418080808004490d02024020022802142005470d00200241106a2005410110810120022802102103200228021821050b200320056a41033a00002002200541016a22053602180240200228021420056b41034b0d00200241106a20054104108101200228021821050b200228021020056a2000360000200541046a21050c030b20004102742104024020022802142005470d00200241106a2005410110810120022802102103200228021821050b200320056a20043a0000200541016a21050c020b200041027441017221040240200228021420056b41014b0d00200241106a2005410210810120022802102103200228021821050b200320056a20043b0000200541026a21050c010b200041027441027221040240200228021420056b41034b0d00200241106a2005410410810120022802102103200228021821050b200320056a2004360000200541046a21050b2002200536021802402002280214220420056b20004f0d00200241106a2005200010810120022802142104200228021821050b2002280210220320056a2006200010c30a1a200228020022072002280208200141202003200520006a10be0902402004450d00200310390b02402002280204450d00200710390b20011039200241206a24000f0b1030000b1034000bbb0201047f230041306b22022400200242003702042002410028029cde4a36020020024100410910810120022802002203200228020822046a220541002900ecf848370000200541086a41002d00f4f8483a00002002200441096a22043602080240410410382205450d00200520013600000240200228020420046b41034b0d0020022004410410810120022802002103200228020821040b200320046a20052800003600002002200441046a220436020820051039200241106a20032004109c01412010382204450d0020042002290010370000200042a0808080800437020420002004360200200441186a200241106a41186a290000370000200441106a200241106a41106a290000370000200441086a200241106a41086a29000037000002402002280204450d00200310390b200241306a24000f0b1030000b22002001ad4220862000ad842003ad4220862002ad842005ad4220862004ad8410110b8b0101027f230041106b220224000240412010382203450d0020032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002002200110bd092002280200220020022802082003412010c00902402002280204450d00200010390b20031039200241106a24000f0b1030000b18002001ad4220862000ad842003ad4220862002ad84100e0b840504047f027e027f017e23004180016b2203240002400240412010382204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200341086a200210bd092003412036021c20032004360218200320032802102201360224200320032802082202360220200341286a200220012004412010c20902400240200328022822050d00410021010c010b200328022c210602400240200341286a41086a28020022014110490d002003200141706a36023c2003200541106a360238200541086a2900002107200529000021082003200341386a10ad0120032802000d00200328023c20032802042209490d002009417f4c0d040240024020090d00410121010c010b200910382201450d0420014100200910c50a1a0b20012003280238220a200910c30a1a2003200a20096a3602382009ad220b422086200b84210b0c010b20034200370244410021012003410028029cde4a360240200341dc006a410c3602002003410c3602542003200341186a3602582003200341206a3602502003200341c0006a360264200341fc006a41023602002003420237026c200341ec86ca003602682003200341d0006a360278200341e4006a41fc86ca00200341e8006a103b1a2003280240200328024810e70202402003280244450d00200328024010390b0b2006450d00200510390b0240024020010d002000420037030820004200370300200041146a42003702002000410028029cde4a3602100c010b200020083703002000200136021020002007370308200041146a200b3702000b0240200328020c450d00200210390b2004103920034180016a24000f0b1030000b1034000b1d0020002002ad4220862001ad842004ad4220862003ad84100f10a40a0b13002000410a360204200041d098c8003602000bd60102037f017e230041206b220224000240200141016a22032001490d00200041046a280200220141017422042003200420034b1b22034104200341044b1bad42fc007e2205422088a74541027421032005a721040240024020010d00200241003602100c010b200241186a41043602002002200141fc006c360214200220002802003602100b200220042003200241106a1049200241086a2802002101024020022802004101470d002001450d011030000b20002002280204360200200041046a200141fc006e360200200241206a24000f0b1034000b130020002002ad4220862001ad84102910a40a0bd70603067f017e037f23004180016b22022400200241306a200128020c200141146a28020010c5090240024020022802302203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902342208422088a722094b0d0020012802002003200710c60a450d010b2008a7450d02200310390c020b02402006280200450d00200428020010390b2001200336020c20062008370200200241086a2003200910e402024002400240024020022802082203450d002002280210210a200228020c210b024020012d001c450d00200128020c200128021410fd010b2001280214220920052802002207490d03200241086a200128020c20076a200920076b2003200a2001280218110400200228020c450d0120002002290308370200200041106a200241086a41106a280200360200200041086a200241086a41086a290300370200200b450d06200310390c060b41002802a8fe4a450d012002410f3602242002200436022041002802a4fe4a210341002802a0fe4a210741002802acfe4a210920024201370340200241f4a1c80036023c20024281808080e0d70037026c200241b2a2c800ad4280808080e00c84370264200241003602602002420137035020024116360238200241013602302002419ca2c8003602342002419ca2c800ad4280808080e00284370358200341b0a7c000200941024622091b28021021032002200241206a36024c200741f4ddca0020091b200241306a20031103000c010b024041002802a8fe4a450d002002411036022c2002410f360224200220043602202002200241f8006a36022841002802a4fe4a210741002802a0fe4a210941002802acfe4a210a200242023703402002418ca2c80036023c20024281808080c0d90037026c200241b2a2c800ad4280808080e00c84370264200241003602602002420237035020024116360238200241013602302002419ca2c8003602342002419ca2c800ad4280808080e00284370358200741b0a7c000200a410246220a1b28021021072002200241206a36024c200941f4ddca00200a1b200241306a20071103000b200b450d00200310390b200241306a200128020c200128021410c509200228023022030d010c020b0b2007200941fca1c800105e000b200041003602040b20024180016a24000ba70703067f017e037f230041a0016b22022400200241d0006a200128020c200141146a28020010c5090240024020022802502203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902542208422088a722094b0d0020012802002003200710c60a450d010b2008a7450d02200310390c020b02402006280200450d00200428020010390b2001200336020c2006200837020020022003200910e402024002400240024020022802002203450d002002280208210a2002280204210b024020012d001c450d00200128020c200128021410fd010b2001280214220920052802002207490d032002200128020c20076a200920076b2003200a20012802181104002002280204450d0120002002290300370200200041386a200241386a280200360200200041306a200241306a290300370200200041286a200241286a290300370200200041206a200241206a290300370200200041186a200241186a290300370200200041106a200241106a290300370200200041086a200241086a290300370200200b450d06200310390c060b41002802a8fe4a450d012002410f3602442002200436024041002802a4fe4a210341002802a0fe4a210741002802acfe4a210920024201370360200241f4a1c80036025c20024281808080e0d70037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420137037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200341b0a7c000200941024622091b28021021032002200241c0006a36026c200741f4ddca0020091b200241d0006a20031103000c010b024041002802a8fe4a450d002002411036024c2002410f36024420022004360240200220024198016a36024841002802a4fe4a210741002802a0fe4a210941002802acfe4a210a200242023703602002418ca2c80036025c20024281808080c0d90037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420237037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200741b0a7c000200a410246220a1b28021021072002200241c0006a36026c200941f4ddca00200a1b200241d0006a20071103000b200b450d00200310390b200241d0006a200128020c200128021410c509200228025022030d010c020b0b2007200941fca1c800105e000b200041003602040b200241a0016a24000b0400102e0b0400102b0b040010260b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210a2060b0f0b200041086a10af01200041046a220228020010cb09200228020010390b980803077f027e027f230041a0016b22022400200141186a2103200141086a21042001411c6a210502400240024003400240024020012d0029450d00200141003a002920012802202206417f4c0d03200128021821070240024020060d00410121080c010b200610382208450d050b20082007200610c30a1a2006ad220942208620098421090c010b200241d0006a200128020c20012802142001280218200128022010cd094100210820022802502206450d000240200428020022072002290254220a422088a74b0d0020012802002006200710c60a0d0020062108200a21090c010b200aa7450d00200610390b024002400240024020080d00200041003602300c010b02402005280200450d00200328020010390b20012008360218200520093702002002200128020c200128021420082009422088a710c20920022802002208450d012002280208210b2002280204210c024020012d0028450d00200128020c20012802142001280218200128022010c0090b2001280220220720042802002206490d062002200128021820066a200720066b2008200b20012802241104002002280230450d0220002002290300370300200041386a200241386a290300370300200041306a200241306a290300370300200041286a200241286a290300370300200041206a200241206a290300370300200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a290300370300200c450d00200810390b200241a0016a24000f0b41002802a8fe4a450d012002410f3602442002200336024041002802a4fe4a210841002802a0fe4a210641002802acfe4a210720024201370360200241f4a1c80036025c20024281808080d0e70037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420137037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200841b0a7c000200741024622071b28021021082002200241c0006a36026c200641f4ddca0020071b200241d0006a20081103000c010b024041002802a8fe4a450d002002411036024c2002410f36024420022003360240200220024198016a36024841002802a4fe4a210641002802a0fe4a210741002802acfe4a210b200242023703602002418ca2c80036025c20024281808080b0e90037028c01200241b2a2c800ad4280808080e00c843702840120024100360280012002420237037020024116360258200241013602502002419ca2c8003602542002419ca2c800ad4280808080e00284370378200641b0a7c000200b410246220b1b28021021062002200241c0006a36026c200741f4ddca00200b1b200241d0006a20061103000b200c450d00200810390c000b0b1034000b1030000b2006200741d4a5c800105e000b1d0020002002ad4220862001ad842004ad4220862003ad84101010a40a0bdf0302027f037e23004180016b220524002005200236021420052001360210200541d8006a200541106a108002200541386a41086a2201200541e1006a290000370300200541386a41106a2202200541e9006a290000370300200541386a41186a2206200541f1006a290000370300200520052900593703380240024002400240024020052d00584101460d00200541186a41186a2006290300370300200541186a41106a2002290300370300200541186a41086a20012903003703002005200529033837031820044110490d012005200441706a36025c2005200341106a360258200341086a290000210720032900002108200541086a200541d8006a10ad0120052802080d01200528025c200528020c2201490d012001417f4c0d030240024020010d00410121020c010b200110382202450d0520024100200110c50a1a0b20022005280258200110c30a210220002001ad2209422086200984370234200041286a200737030020002008370320200041186a200541186a41186a290300370000200041106a200541186a41106a290300370000200041086a200541186a41086a29030037000020002005290318370000200020023602300c020b200041003602300c010b200041003602300b20054180016a24000f0b1034000b1030000b870101027f230041306b22012400200141186a4200370300200141106a22024200370300200141086a4200370300200142003703002001418480c400410910f201200241a4a4c900410810f20102404104103822020d001030000b2002200036000020014284808080c0003702242001200236022020014120200141206a10ad05200141306a24000b1300200041033602042000419ca9c8003602000bb30301057f02400240024002402000280200220241c000490d00200241808001490d012002418080808004490d020240200141046a22032802002204200141086a22052802002206470d0020012006410110810120032802002104200528020021060b2001280200220320066a41033a00002005200641016a22063602000240200420066b41034b0d00200120064104108101200141086a2802002106200128020021030b200320066a2002360000200141086a200641046a3602000c030b200241027421040240200141046a280200200141086a22062802002202470d00200120024101108101200628020021020b200128020020026a20043a00002006200241016a3602000c020b200241027441017221040240200141046a280200200141086a220628020022026b41014b0d00200120024102108101200628020021020b200128020020026a20043b00002006200241026a3602000c010b200241027441027221040240200141046a280200200141086a220628020022026b41034b0d00200120024104108101200628020021020b200128020020026a20043600002006200241046a3602000b200041046a200110df050bcf0303017f017e047f230041e0006b2201240042002102200141306a41186a22034200370300200141306a41106a22044200370300200141306a41086a2205420037030020014200370330200141d0006a41b9fec300410610f2012005200141d0006a41086a220629000037030020012001290050370330200141d0006a4184edc900410b10f2012003200629000037030020042001290050370300200141106a200141306a10fa030240024020012903104201510d00200141086a4200370300200142003703000c010b200141086a200141106a41106a29030037030020012001290318370300200141106a41186a29030021020b200141106a41106a200141086a290300370300200141106a41186a427f200220007c220020002002541b3703002001200129030037031820014201370310200141306a41186a4200370300200141306a41106a4200370300200141306a41086a2203420037030020014200370330200141d0006a41b9fec300410610f2012003200141d0006a41086a220529000037030020012001290050370330200141d0006a4184edc900410b10f201200441086a200529000037000020042001290050370000200141306a200141106a41086a10a108200141e0006a24000b110041d2ceca00411f41f4ceca001035000b130020004107360204200041b4bdc8003602000b3400200041c0a4c80036020420004100360200200041146a4102360200200041106a41dcc8c800360200200041086a420a3702000b340020004192d1c80036020420004100360200200041146a4103360200200041106a41a0d1c800360200200041086a420b3702000b2e01017f230041106b22022400200242003702042002410028029cde4a36020020002002109803200241106a24000b821d05077f017e037f017e097f230041d0026b220424000240024002400240024002400240024002400240024002400240024020022d00004101460d00200241046a28020021020240200141c8006a220528020022062006417f6a2207200141c0006a220828020022062001413c6a22092802006b716b4101470d00200910d6082005280200417f6a2107200828020021060b200141c4006a28020020064102746a200236020020082007200641016a71360200200141386a280200220620024d0d02200441086a2001280230200241fc006c6a220241fc0010c30a1a200241046a4100360200200241003a000020042d0008220a4101460d01200441cc006a2802002109200441c4006a2208290200210b200441c0006a280200210c200441086a41086a2802002107200441086a41186a2102200441086a410c6a210602400240024002400240200428020c0e050102030400010b200441c8006a280200210d2008280200210e20044198016a41106a200229020037030020044198016a410c6a200641086a28020036020020044198016a41186a200241086a290200370300200441b8016a200241106a290200370300200441c0016a200241186a290200370300200420073602980120042006290200220f37029c0102400240200fa722054125490d00200441a4016a280200211020042802a80121050c010b200441a1016a21100b200741017621020240024020074101712211450d00200520024d0d0a201020026a2d0000410f712108200241016a21020c010b20052002490d08410021080b200520026b2106201020026a2102200541017420076b210702400240200ba72205450d00200741ffff03200741ffff03491b220741017641036a221010382212450d0b20044100360290012004201036028c0120042012360288012004200736029c0220044181023b01980220044198026a20044188016a10fb05024020110d00024020060d00200e21100c030b2004280290012107034020022d0000210802402007200428028c01470d0020044188016a200741011081010b20042802880120076a20083a00002004200741016a220736029001200241016a21022006417f6a22060d000b200e21100c020b2004280290012107034002402007200428028c01470d0020044188016a200741011081010b20042802880120076a20083a00002004200741016a22073602900102402006450d002006417f6a210620022d00002108200241016a21020c010b0b200e21100c010b200741ffff03200741ffff03491b220741017641036a221210382213450d0a4100211020044100360290012004201236028c0120042013360288012004200736029c02200441013b01980220044198026a20044188016a10fb05024020110d002006450d012004280290012107034020022d0000210802402007200428028c01470d0020044188016a200741011081010b20042802880120076a20083a00002004200741016a220736029001200241016a21022006417f6a22060d000c020b0b2004280290012107034002402007200428028c01470d0020044188016a200741011081010b20042802880120076a20083a00002004200741016a22073602900102402006450d002006417f6a210620022d00002108200241016a21020c010b0b410021100b2004280290012214210202402014200428028c01470d0020044188016a2014410110810120042802900121020b20042802880120026a41003a0000200420042802900141016a22023602900102402002200428028c01470d0020044188016a2002410110810120042802900121020b20042802880120026a41003a0000200420042802900141016a3602900102402005450d002010200920044188016a10d6010b200c41c0046a211520044198026a410172210620044198016a41096a211641002105200441f0016a411f6a2113200441f0016a41186a2110200441f0016a41106a2111200441f0016a41086a2112200c2102410021094101210802400240034020022d00002107200241023a0000024002400240024020074103460d002013200241206a2800003600002010200241196a2900003703002011200241116a2900003703002012200241096a2900003703002004200241016a2900003703f0010240024020074102470d00200441023a00c8010c010b02400240200428029c0122174125490d0020042802a801211720042802a40121180c010b201621180b20042004280298013602c802200420173602c402200420183602c0022003200441c0026a4101200510d9092117200620042903f001370000200641086a2012290300370000200641106a2011290300370000200641186a20102903003700002006411f6a2013280000360000200420073a009802200441c8016a200120044198026a200310d8092003201710da0920042d00c8014103460d060b20044198026a41206a200441c8016a41206a29030037030020044198026a41186a200441c8016a41186a29030037030020044198026a41106a200441c8016a41106a29030037030020044198026a41086a200441c8016a41086a290300370300200420042903c801220b37039802410021070240200ba741ff0171417f6a0e020004020b2010200641186a2900003703002011200641106a2900003703002012200641086a290000370300200420062900003703f00120042802bc02220741214f0d11200441f0016a200720044188016a10d6010c020b20094180fe037141087621060c050b2006412020044188016a10d6010b200821070b200541016a21052008410174210820072009722109200241246a22022015470d000b20094180fe037141087621060c010b20094180fe037141087621060b201441026a21022014417e4f0d0b20042802900122072002490d0c20042802880120146a2006410874200941ff0171723b00000240200e450d00200d450d00200e10390b200c1039200428029c014125490d0f20042802a40110390c0f0b410110382202450d082004410136028c012004200236028801200241003a000020044101360290010c0e0b20044198016a41106a200229020037030020044198016a410c6a200641086a28020036020020044198016a41186a200241086a290200370300200441b8016a200241106a290200370300200441c0016a200241186a290200370300200420073602980120042006290200220f37029c0102400240200fa722064125490d00200441a4016a280200210820042802a80121060c010b200441a1016a21080b20074101762102024002402007410171450d00200620024d0d0e200441013a009802200441a0026a2006200241016a22076b3602002004200820076a36029c022004200820026a2d0000410f713a0099020c010b20062002490d0c200441a0026a200620026b360200200441003b0198022004200820026a36029c020b20044188016a20044198026a200c200b422088a710db080240200ba7450d00200c10390b200428029c014125490d0d200441a4016a28020010390c0d0b20044198016a41106a200229020037030020044198016a410c6a200641086a28020036020020044198016a41186a200241086a290200370300200441b8016a200241106a290200370300200441c0016a200241186a290200370300200420073602980120042006290200220f37029c0102400240200fa722024125490d00200441a4016a280200210020042802a80121020c010b200441a1016a21000b200420073602c802200420023602c402200420003602c002200441f0016a200441c0026a10db092003200441c0026a4100200410d9092102200441d4016a2009360200200441d8016a200441d0006a290300370300200441e0016a200441d8006a290300370300200441e8016a200441e0006a2802003602002004200b3702cc012004200c3602c80120044198026a2001200441c8016a200310d8092003200210da0910da08000b10d908000b200041003a000020002002290001370001200041196a200241196a290000370000200041116a200241116a290000370000200041096a200241096a2900003700000c0c0b20002004290009370001200041003a0000200041196a200441086a41196a290000370000200041116a200441086a41116a290000370000200041096a200441086a41096a2900003700000c0a0b2002200641a4d7c800103c000b200220054188e8ca00105e000b200220054198e8ca00103c000b1030000b200741204190eec5001055000b2014200241a0eec500105f000b2002200741a0eec5001055000b200220064188e8ca00105e000b200220064198e8ca00103c000b024002402004280290012202411f4b0d00200441b0016a22064200370300200441a8016a22014200370300200441a0016a22074200370300200442003703980120044198016a200428028801200210c30a1a200041246a2002360200200041013a0000200041196a2006290300370000200041116a2001290300370000200041096a200729030037000020002004290398013700010c010b200141d0006a2802002108200128024c2105200328022c220741017621060240024002400240024020074101710d0002400240200328020022074125490d002003410c6a2802002107200341086a28020021030c010b200341056a21030b20072006490d022004200336029801410021070c010b02400240200328020022074125490d002003410c6a2802002109200341086a28020021100c010b200341056a2110200721090b20092006490d020240024020074125490d002003410c6a2802002107200341086a28020021030c010b200341056a21030b200720064d0d03200441a1016a200320066a2d000041f001713a00002004201036029801410121070b200420073a00a0012004200636029c01200041016a200520044198016a20042802880120022008280214110400200041003a00002001200128027c41016a36027c0c030b200620074188e7ca001055000b200620094198e7ca001055000b2006200741a8e7ca00103c000b0240200428028c01450d0020042802880110390b200a450d010b2004412c6a10ae030b200441d0026a24000bb00e010f7f230041106b22042400024002400240024002400240024002400240024020010d00410021010c010b200141086a28020022054101762106200128020421070240024002402005410171450d00200720064b0d01200620074198e8ca00103c000b20072006490d03200720066b2108200128020020066a21090c010b2001280200220120066a2d0000410f71210a0240024020002d002c4101710d00024002402000280200220b4125490d002000410c6a220c280200210d200041086a280200210e0c010b200041056a210e200b210d2000210c4124210b0b0240200d200b470d00200420004101109108024020042802004101470d00200441086a2802000d074180eaca0041114194eaca001035000b2000410c6a220c280200210d200041086a280200210e0b200e200d6a200a4104743a0000200c200c28020041016a3602000c010b024002402000280200220d4125490d002000410c6a280200210d200041086a280200210c0c010b200041056a210c0b200c450d05200d450d05200d200c6a417f6a220d200d2d0000200a723a00000b2007200641016a22066b2108200120066a21092000200028022c41016a36022c0b02400240200028020022014125490d002000410c6a28020021060c010b200121060b024002402006410174200028022c470d00024020014125490d002000410c6a28020021010b200420002008109108024020042802004101470d00200441086a2802000d054180eaca0041114194eaca001035000b02400240200028020022064125490d002000410c6a28020022062001490d0c200041086a280200210a0c010b20062001490d0b200041056a210a0b200a20016a220a20086a200a200620016b10c40a1a200a2009200810c30a1a0240024020002802004125490d002000410c6a21010c010b200021010b2001200620086a3602000c010b0240024020014125490d002000410c6a28020021060c010b200121060b2008450d002006417f6a21060240024020014125490d002000410c6a280200210a200041086a280200210d0c010b200041056a210d2001210a0b200a20064d0d050240024020014125490d002000410c6a2802002101200041086a280200210a0c010b200041056a210a0b200120064d0d06200a20066a200d20066a2d00004170713a000002400240200028020022014125490d002000410c6a2802002101200041086a280200210a0c010b200041056a210a0b200120064d0d07200a20066a220120012d000020092d0000410476723a000002402008417f6a220f450d002000410c6a2110200041056a211120084101200841014b1b417f6a2112410021010340024002400240024020082001460d0020122001460d01200920016a220b41016a210e024002402000280200220d4125490d00200028020c21062000280208210c2010210a0c010b200d21062000210a2011210c4124210d0b200b2d0000210b200e2d0000210e2006200d470d0320042000410110910820042802004101470d02200441086a2802000d094180eaca0041114194eaca001035000b2008200841e8e7ca00103c000b200141016a200841f8e7ca00103c000b200028020c21062000280208210c2010210a0b200c20066a200b410474200e411874411c76723a0000200a200a28020041016a360200200f200141016a2201470d000b0b2009200f6a210c024002402000280200220a4125490d002000410c6a22062802002101200041086a280200210d0c010b200041056a210d200a2101200021064124210a0b200c2d0000210c02402001200a470d00200420004101109108024020042802004101470d00200441086a2802000d054180eaca0041114194eaca001035000b2000410c6a22062802002101200041086a280200210d0b200d20016a200c4104743a00002006200628020041016a3602000b2000200028022c20084101746a36022c200741017420056b21010b02402002450d000240024020002d002c4101710d00024002402000280200220d4125490d002000410c6a220a2802002106200041086a280200210c0c010b200041056a210c200d21062000210a4124210d0b02402006200d470d00200420004101109108024020042802004101470d00200441086a2802000d064180eaca0041114194eaca001035000b2000410c6a220a2802002106200041086a280200210c0b200c20066a20034104743a0000200a200a28020041016a3602000c010b02400240200028020022064125490d002000410c6a2802002106200041086a280200210a0c010b200041056a210a0b200a450d082006450d082006200a6a417f6a220620062d00002003723a00000b2000200028022c41016a36022c200141016a21010b200441106a240020010f0b200620074188e8ca00105e000b1030000b41b8e5ca00413a41f4e5ca001065000b2006200a41b8e7ca00103c000b2006200141c8e7ca00103c000b2006200141d8e7ca00103c000b41b8e5ca00413a41f4e5ca001065000b41acebca00411e41ccebca001035000bbc0301057f0240024002402001450d000240200028022c220220014b0d0002400240200028020022014125490d002000410c6a220228020021010c010b200021020b02402001450d00200241003602000b2000410036022c0f0b200220016b2203410176200341017122046a210202400240200028020022014125490d002000410c6a28020021050c010b200121050b0240200220054f0d002000410c6a2106200220056b41016a210203400240024020014125490d0020062802002101200621050c010b200021050b02402001450d0020052001417f6a3602000b2002450d01200241016a2102200028020021010c000b0b2000200336022c2004450d0002400240200028020022014125490d002000410c6a28020021020c010b200121020b2002417f6a21020240024020014125490d002000410c6a2802002105200041086a28020021060c010b200041056a2106200121050b200520024d0d010240024020014125490d002000410c6a2802002101200041086a28020021000c010b200041056a21000b200120024d0d02200020026a200620026a2d00004170713a00000b0f0b2002200541e8e6ca00103c000b2002200141f8e6ca00103c000bb80101057f2001280208220241017621032001280204210402400240024002402002410171450d00200420034d0d034101210220012802002205200341016a22066a2101200520036a2d0000410f712105200621030c010b20042003490d01200128020020036a210141002105410021020b200020023a000c20002001360204200041003602002000410d6a20053a0000200041086a200420036b3602000f0b200320044188e8ca00105e000b200320044198e8ca00103c000b9c0201037f23004180016b220224000240024002402000410c6a22032802002204200041106a280200470d002002200141fc0010c30a2101024020002802082204200041046a280200470d002000200410c409200028020821040b2000280200200441fc006c6a200141fc0010c30a1a2000200441016a3602080c010b2003200041186a280200417f6a200441016a71360200200041146a28020020044102746a28020021042002200141fc0010c30a21012000280208220320044d0d010240024020002802002200200441fc006c6a22032d00000d002000200441fc006c6a41046a10ae030c010b2000200441fc006c6a41246a10ae030b2003200141fc0010c30a1a0b20024180016a240020040f0b2004200341bcd9c800103c000b960401037f23004190016b2206240041002107200641003602080240024020012d00584101460d00200141dc006a28020021080c010b200641366a200141db006a2d00003a0000200641206a200141e8006a290200370300200641286a200141f0006a290200370300200641306a200141f8006a2d00003a00002006200141d9006a2f00003b01342006200141e0006a290200370318200141dc006a2802002108410121070b200641c8006a41086a2006290318370300200641c8006a41106a200641186a41086a290300370300200641c8006a41186a200641186a41106a290300370300200641e8006a200641186a41186a280200360200200620073a0048200620062f01343b00492006200836024c2006200641366a2d00003a004b200641003602782006200336027420062002360270024002402005417f4c0d004101210702402005450d00200510382207450d020b2006200536028401200620073602800120072004200510c30a1a2006200536028801200641386a2001200641c8006a200641f0006a20064180016a200641086a10de09200628023c21050240024020062802384101460d00200141003a00582000200629030837020420004100360200200141dc006a20053602002000410c6a200641106a2802003602000c010b200041013602002000200536020420062802082201450d00200628020c450d00200110390b20064190016a24000f0b1034000b1030000bf20e03067f017e017f23004180076b2206240002400240024002400240024002400240024002400240024020022d00004101470d00200641206a200241196a290000370300200641186a200241116a290000370300200641106a200241096a290000370300200620022900013703082003280208220741017621020240024020074101710d00200328020422072002490d0420032802002107410021080c010b200328020422072002490d04200220074f0d052003280200220720026a2d00004170712109410121080b200141d0006a280200210a200128024c210b200641f9026a20093a0000200620083a00f802200620023602f402200620073602f002200641f0036a200b200641086a200641f0026a200a28020c1105000240024020062802f00322070d004130103822020d011030000b20062902f403210c20064180016a41186a200641086a41186a220929030037030020064180016a41106a200641086a41106a220a29030037030020064180016a41086a200641086a41086a220b2903003703002006200629030837038001200641f0026a20064180016a2007200c422088a7200141306a220d10df0920062802f402210220062802f0022108200641f0036a200641f0026a41086a41d40010c30a1a20084101460d0a200641f8016a200641f0036a41d40010c30a1a20064198036a200641f8016a41d40010c30a1a20064189036a200929030037000020064181036a200a290300370000200641f9026a200b2903003700002006200236029403200641013a00f002200620062903083700f102200d200641f0026a10dc092102200ca7450d02200710390c020b200241013a000020022006290308370001200241096a200641106a290300370000200241116a200641186a290300370000200241196a200641206a2903003700000c0a0b200241046a28020021020b0240200141c8006a220a28020022072007417f6a2208200141c0006a220928020022072001413c6a220b2802006b716b4101470d00200b10d608200a280200417f6a2108200928020021070b200141c4006a28020020074102746a200236020020092008200741016a71360200200141386a280200220720024d0d03200141306a220b280200200241fc006c6a22022d0000210720022f00012108200241036a2d00002109200641086a200241046a220a41f80010c30a1a200a4100360200200241003a0000200641f8016a200641086a41f80010c30a1a20082009411074722102024002400240024020074101470d0020032802082107200328020421082003280200210920064198066a20064198026a41d80010c30a1a200641f0066a41086a200441086a280200360200200620042902003703f006200641f0026a200120064198066a2003200641f0066a200510e00920062802f0024101460d0320062802f4022104200641c0056a200641f0026a41086a41d80010c30a1a200641e8046a200641c0056a41d80010c30a1a4101210320044101470d01200641f0026a41156a200641086a41156a290000370000200641f0026a41106a200641086a41106a290000370300200641f0026a41086a200641086a41086a290000370300200620062900083703f00220064190036a200641e8046a41d80010c30a1a200641f0036a200641f0026a41f80010c30a1a410021010c020b20064198066a200641086a41d80010c30a1a200641f0066a41086a200441086a280200360200200620042902003703f006200641f0026a200120064198066a2003200641f0066a200510e00920062802f0024101460d0220062802f4022101200641c0056a200641f0026a41086a41d80010c30a1a200641e8046a200641c0056a41d80010c30a1a200641f0036a200641e8046a41d80010c30a1a20014101472101410021030c010b20064188036a2006411d6a29000037000020064183036a200641186a290000370000200641fb026a200641106a290000370000200620062900083700f302200741017621030240024020074101710d0020082003490d08410021040c010b20082003490d08200320084f0d09200920036a2d00004170712107410121040b20064190036a2009200310e109200641bd036a20073a0000200641bc036a20043a0000200620023b01f002200620024110763a00f2022001200641f0026a10e209200641f0036a200641e8046a41d80010c30a1a41002103410121010b20064180016a200641f0036a41f80010c30a1a200641f0036a20064180016a41f80010c30a1a200620033a00f002200620023b00f102200620024110763a00f302200641f0026a410472200641f0036a41f80010c30a1a200b200641f0026a10dc092102200041086a20013a000020002002360204200041003602000c0a0b20062802f402210120004101360200200020013602040c090b2002200741d0e9ca001055000b2002200741e0e9ca001055000b2002200741f0e9ca00103c000b2002200741a4d7c800103c000b2003200841d0e9ca001055000b2003200841e0e9ca001055000b2003200841f0e9ca00103c000b200ca7450d00200710390b2000410136020020002002360204200441046a280200450d00200428020010390b20064180076a24000be8761f037f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e037f017e1f7f230041900c6b2205240020052002200310ab04024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d00004101470d0020052d000121034130103822020d010c2a0b200541cc016a2802002106200541c8016a2802002107200541c0016a2903002108200541bc016a2802002109200541b4016a290200210a200541b0016a280200210b200541a8016a290300210c200541a4016a280200210d2005419c016a290200210e20054198016a280200210f20054190016a29030021102005418c016a280200211120054184016a290200211220054180016a2802002113200541f8006a2903002114200541f4006a2802002115200541ec006a2902002116200541e8006a2802002117200541e0006a2903002118200541dc006a2802002119200541d4006a290200211a200541d0006a280200211b200541c8006a290300211c200541c4006a280200211d2005413c6a290200211e200541386a280200211f200541306a29030021202005412c6a2802002121200541246a2902002122200541206a28020021232005411c6a2802002124200541186a2802002102200541146a28020021252005410c6a2902002126200541086a28020021274100212820052802040e050702030401070b200241033a000020022001290000370001200241096a200141086a290000370000200241116a200141106a290000370000200241196a200141186a290000370000200220033a002120004101360200200020023602040c270b200541d8016a2802002129200541d4016a280200212a200541d0016a28020021034102212b4102212c024020254102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200541e00b6a41086a2024360200200520023602e40b200520253602e00b200520054198026a200541e00b6a200410e3092005280204212c20052802004101460d17200541c0056a41186a200541206a290300370300200541c0056a41106a200541186a290300370300200541c0056a41086a200541106a2903003703002005200541086a2903003703c0050b200541a0056a41186a200541c0056a41186a290300370300200541a0056a41106a200541c0056a41106a290300370300200541a0056a41086a200541c0056a41086a290300370300200520052903c0053703a005024020234102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520223702e40b200520233602e00b200520054198026a200541e00b6a200410e3092005280204212b20052802004101460d1820054180066a41186a200541206a29030037030020054180066a41106a200541186a29030037030020054180066a41086a200541106a2903003703002005200541086a290300370380060b200541e0056a41186a20054180066a41186a290300370300200541e0056a41106a20054180066a41106a290300370300200541e0056a41086a20054180066a41086a29030037030020052005290380063703e0054102212541022102024020214102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520203702e40b200520213602e00b200520054198026a200541e00b6a200410e3092005280204210220052802004101460d19200541c0066a41186a200541206a290300370300200541c0066a41106a200541186a290300370300200541c0066a41086a200541106a2903003703002005200541086a2903003703c0060b200541a0066a41186a200541c0066a41186a290300370300200541a0066a41106a200541c0066a41106a290300370300200541a0066a41086a200541c0066a41086a290300370300200520052903c0063703a0060240201f4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201e3702e40b2005201f3602e00b200520054198026a200541e00b6a200410e3092005280204212520052802004101460d1a20054180076a41186a200541206a29030037030020054180076a41106a200541186a29030037030020054180076a41086a200541106a2903003703002005200541086a290300370380070b200541e0066a41186a20054180076a41186a290300370300200541e0066a41106a20054180076a41106a290300370300200541e0066a41086a20054180076a41086a29030037030020052005290380073703e0064102212d410221280240201d4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201c3702e40b2005201d3602e00b200520054198026a200541e00b6a200410e3092005280204212820052802004101460d1b200541c0076a41186a200541206a290300370300200541c0076a41106a200541186a290300370300200541c0076a41086a200541106a2903003703002005200541086a2903003703c0070b200541a0076a41186a200541c0076a41186a290300370300200541a0076a41106a200541c0076a41106a290300370300200541a0076a41086a200541c0076a41086a290300370300200520052903c0073703a0070240201b4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201a3702e40b2005201b3602e00b200520054198026a200541e00b6a200410e3092005280204212d20052802004101460d1c20054180086a41186a200541206a29030037030020054180086a41106a200541186a29030037030020054180086a41086a200541106a2903003703002005200541086a290300370380080b200541e0076a41186a20054180086a41186a290300370300200541e0076a41106a20054180086a41106a290300370300200541e0076a41086a20054180086a41086a29030037030020052005290380083703e0074102212341022124024020194102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520183702e40b200520193602e00b200520054198026a200541e00b6a200410e3092005280204212420052802004101460d1d200541c0086a41186a200541206a290300370300200541c0086a41106a200541186a290300370300200541c0086a41086a200541106a2903003703002005200541086a2903003703c0080b200541a0086a41186a200541c0086a41186a290300370300200541a0086a41106a200541c0086a41106a290300370300200541a0086a41086a200541c0086a41086a290300370300200520052903c0083703a008024020174102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520163702e40b200520173602e00b200520054198026a200541e00b6a200410e3092005280204212320052802004101460d1e20054180096a41186a200541206a29030037030020054180096a41106a200541186a29030037030020054180096a41086a200541106a2903003703002005200541086a290300370380090b200541e0086a41186a20054180096a41186a290300370300200541e0086a41106a20054180096a41106a290300370300200541e0086a41086a20054180096a41086a29030037030020052005290380093703e0084102211f41022121024020154102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520143702e40b200520153602e00b200520054198026a200541e00b6a200410e3092005280204212120052802004101460d1f200541c0096a41186a200541206a290300370300200541c0096a41106a200541186a290300370300200541c0096a41086a200541106a2903003703002005200541086a2903003703c0090b200541a0096a41186a200541c0096a41186a290300370300200541a0096a41106a200541c0096a41106a290300370300200541a0096a41086a200541c0096a41086a290300370300200520052903c0093703a009024020134102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520123702e40b200520133602e00b200520054198026a200541e00b6a200410e3092005280204211f20052802004101460d20200541800a6a41186a200541206a290300370300200541800a6a41106a200541186a290300370300200541800a6a41086a200541106a2903003703002005200541086a2903003703800a0b200541e0096a41186a200541800a6a41186a290300370300200541e0096a41106a200541800a6a41106a290300370300200541e0096a41086a200541800a6a41086a290300370300200520052903800a3703e0094102211b4102211d024020114102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520103702e40b200520113602e00b200520054198026a200541e00b6a200410e3092005280204211d20052802004101460d21200541c00a6a41186a200541206a290300370300200541c00a6a41106a200541186a290300370300200541c00a6a41086a200541106a2903003703002005200541086a2903003703c00a0b200541a00a6a41186a200541c00a6a41186a290300370300200541a00a6a41106a200541c00a6a41106a290300370300200541a00a6a41086a200541c00a6a41086a290300370300200520052903c00a3703a00a0240200f4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200e3702e40b2005200f3602e00b200520054198026a200541e00b6a200410e3092005280204211b20052802004101460d22200541e00a6a41186a200541206a290300370300200541e00a6a41106a200541186a290300370300200541e00a6a41086a200541106a2903003703002005200541086a2903003703e00a0b41022117410221190240200d4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200c3702e40b2005200d3602e00b200520054198026a200541e00b6a200410e3092005280204211920052802004101460d23200541800b6a41186a200541206a290300370300200541800b6a41106a200541186a290300370300200541800b6a41086a200541106a2903003703002005200541086a2903003703800b0b0240200b4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200a3702e40b2005200b3602e00b200520054198026a200541e00b6a200410e3092005280204211720052802004101460d24200541a00b6a41186a200541206a290300370300200541a00b6a41106a200541186a290300370300200541a00b6a41086a200541106a2903003703002005200541086a2903003703a00b0b4102211341022115024020094102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520083702e40b200520093602e00b200520054198026a200541e00b6a200410e3092005280204211520052802004101460d25200541c00b6a41186a200541206a290300370300200541c00b6a41106a200541186a290300370300200541c00b6a41086a200541106a2903003703002005200541086a2903003703c00b0b024020074102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200541800c6a41086a2003360200200520063602840c200520073602800c200520054198026a200541800c6a200410e3092005280204211320052802004101460d26200541e00b6a41186a200541206a290300370300200541e00b6a41106a200541186a290300370300200541e00b6a41086a200541106a2903003703002005200541086a2903003703e00b0b20054180056a41186a2201200541a0056a41186a29030037030020054180056a41106a2204200541a0056a41106a29030037030020054180056a41086a2206200541a0056a41086a290300370300200541e0046a41086a2211200541e0056a41086a290300370300200541e0046a41106a220f200541e0056a41106a290300370300200541e0046a41186a220d200541e0056a41186a290300370300200541c0046a41086a220b200541a0066a41086a290300370300200541c0046a41106a2209200541a0066a41106a290300370300200541c0046a41186a2207200541a0066a41186a290300370300200520052903a00537038005200520052903e0053703e004200520052903a0063703c004200541a0046a41186a222e200541e0066a41186a290300370300200541a0046a41106a222f200541e0066a41106a290300370300200541a0046a41086a2230200541e0066a41086a29030037030020054180046a41086a2231200541a0076a41086a29030037030020054180046a41106a2232200541a0076a41106a29030037030020054180046a41186a2233200541a0076a41186a290300370300200541e0036a41086a2234200541e0076a41086a290300370300200541e0036a41106a2235200541e0076a41106a290300370300200541e0036a41186a2236200541e0076a41186a290300370300200520052903e0063703a004200520052903a00737038004200520052903e0073703e003200541c0036a41186a2237200541a0086a41186a290300370300200541c0036a41106a2238200541a0086a41106a290300370300200541c0036a41086a2239200541a0086a41086a290300370300200541a0036a41186a223a200541e0086a41186a290300370300200541a0036a41106a223b200541e0086a41106a290300370300200541a0036a41086a223c200541e0086a41086a29030037030020054180036a41186a223d200541a0096a41186a29030037030020054180036a41106a223e200541a0096a41106a29030037030020054180036a41086a223f200541a0096a41086a290300370300200520052903a0083703c003200520052903e0083703a003200520052903a00937038003200541e0026a41186a2240200541e0096a41186a290300370300200541e0026a41106a2241200541e0096a41106a290300370300200541e0026a41086a2242200541e0096a41086a290300370300200520052903e0093703e002200541c0026a41186a2243200541a00a6a41186a290300370300200541c0026a41106a2244200541a00a6a41106a290300370300200541c0026a41086a2245200541a00a6a41086a290300370300200520052903a00a3703c00241c00410382203450d272003202c36020020032005290380053702042003202b360224200320052903e0043702282003410c6a2006290300370200200341146a20042903003702002003411c6a2001290300370200200341306a2011290300370200200341386a200f290300370200200341c0006a200d290300370200200320023602482003202536026c200320052903c00437024c200341d4006a200b290300370200200341dc006a2009290300370200200341e4006a2007290300370200200320052903a004370270200341f8006a203029030037020020034180016a202f29030037020020034188016a202e29030037020020032028360290012003202d3602b401200341ac016a2033290300370200200341a4016a20322903003702002003419c016a2031290300370200200320052903800437029401200341d0016a2036290300370200200341c8016a2035290300370200200341c0016a2034290300370200200320052903e0033702b801200320243602d801200341f4016a2037290300370200200341ec016a2038290300370200200341e4016a2039290300370200200320052903c0033702dc01200320233602fc0120034198026a203a29030037020020034190026a203b29030037020020034188026a203c290300370200200320052903a00337028002200320213602a002200341bc026a203d290300370200200341b4026a203e290300370200200341ac026a203f29030037020020032005290380033702a4022003201f3602c402200341e0026a2040290300370200200341d8026a2041290300370200200341d0026a2042290300370200200320052903e0023702c8022003201d3602e80220034184036a2043290300370200200341fc026a2044290300370200200341f4026a2045290300370200200320052903c0023702ec022003201b36028c03200341a8036a200541e00a6a41186a290300370200200341a0036a200541e00a6a41106a29030037020020034198036a200541e00a6a41086a290300370200200320052903e00a37029003200320193602b003200341cc036a200541800b6a41186a290300370200200341c4036a200541800b6a41106a290300370200200341bc036a200541800b6a41086a290300370200200320052903800b3702b403200320173602d403200341f0036a200541a00b6a41186a290300370200200341e8036a200541a00b6a41106a290300370200200341e0036a200541a00b6a41086a290300370200200320052903a00b3702d803200320153602f80320034194046a200541c00b6a41186a2903003702002003418c046a200541c00b6a41106a29030037020020034184046a200541c00b6a41086a290300370200200320052903c00b3702fc032003201336029c04200341b8046a200541e00b6a41186a290300370200200341b0046a200541e00b6a41106a290300370200200341a8046a200541e00b6a41086a290300370200200320052903e00b3702a00441042128200541047220272026a710e109202a0d03410021020c040b200541047220272026a710e1092002417f4c0d06410121284101210302402002450d00200210382203450d270b2026422088a7212c20032025200210c30a1a200541f8016a41086a200541186a290300370300200541f8016a41106a200541206a290300370300200541f8016a41186a200541286a2903003703002005200541106a2903003703f8012005410c6a280200212a200541086a28020021062005280204212b2002212d0c040b200541047220272026a710e109200541e00b6a41186a200141186a290000370300200541e00b6a41106a200141106a290000370300200541e00b6a41086a200141086a290000370300200520012900003703e00b200541a00b6a41086a2024360200200520023602a40b200520253602a00b20054198026a200541e00b6a200541a00b6a200410e309200541c00b6a41086a20054198026a411c6a290200370300200541c00b6a41106a220120054198026a41246a280200360200200520054198026a41146a2902003703c00b200528029c02210302402005280298024101460d0020054198026a41086a290300212220054198026a41106a2802002129200541e0016a41106a2001280200360200200541e0016a41086a200541c00b6a41086a290300370300200541f8016a41086a200541186a290300370300200541f8016a41106a200541206a290300370300200541f8016a41186a200541286a290300370300200520052903c00b3703e0012005200541106a2903003703f8012022422088a7212d2026422088a7212c200541086a28020021062005410c6a280200212a2005280204212b2022a72102410221280c040b200041013602002000200336020420052802044125490d242005410c6a28020010390c240b4102212941022103024020274102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520263702e40b200520273602e00b200520054198026a200541e00b6a200410e3092005280204210320052802004101460d04200541c0056a41186a200541206a290300370300200541c0056a41106a200541186a290300370300200541c0056a41086a200541106a2903003703002005200541086a2903003703c0050b200541a0056a41186a200541c0056a41186a290300370300200541a0056a41106a200541c0056a41106a290300370300200541a0056a41086a200541c0056a41086a290300370300200520052903c0053703a005024020254102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200541e00b6a41086a2024360200200520023602e40b200520253602e00b200520054198026a200541e00b6a200410e3092005280204212920052802004101460d0620054180066a41186a200541206a29030037030020054180066a41106a200541186a29030037030020054180066a41086a200541106a2903003703002005200541086a290300370380060b200541e0056a41186a20054180066a41186a290300370300200541e0056a41106a20054180066a41106a290300370300200541e0056a41086a20054180066a41086a29030037030020052005290380063703e0054102212541022102024020234102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520223702e40b200520233602e00b200520054198026a200541e00b6a200410e3092005280204210220052802004101460d07200541c0066a41186a200541206a290300370300200541c0066a41106a200541186a290300370300200541c0066a41086a200541106a2903003703002005200541086a2903003703c0060b200541a0066a41186a200541c0066a41186a290300370300200541a0066a41106a200541c0066a41106a290300370300200541a0066a41086a200541c0066a41086a290300370300200520052903c0063703a006024020214102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520203702e40b200520213602e00b200520054198026a200541e00b6a200410e3092005280204212520052802004101460d0820054180076a41186a200541206a29030037030020054180076a41106a200541186a29030037030020054180076a41086a200541106a2903003703002005200541086a290300370380070b200541e0066a41186a20054180076a41186a290300370300200541e0066a41106a20054180076a41106a290300370300200541e0066a41086a20054180076a41086a29030037030020052005290380073703e006410221284102212b0240201f4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201e3702e40b2005201f3602e00b200520054198026a200541e00b6a200410e3092005280204212b20052802004101460d09200541c0076a41186a200541206a290300370300200541c0076a41106a200541186a290300370300200541c0076a41086a200541106a2903003703002005200541086a2903003703c0070b200541a0076a41186a200541c0076a41186a290300370300200541a0076a41106a200541c0076a41106a290300370300200541a0076a41086a200541c0076a41086a290300370300200520052903c0073703a0070240201d4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201c3702e40b2005201d3602e00b200520054198026a200541e00b6a200410e3092005280204212820052802004101460d0a20054180086a41186a200541206a29030037030020054180086a41106a200541186a29030037030020054180086a41086a200541106a2903003703002005200541086a290300370380080b200541e0076a41186a20054180086a41186a290300370300200541e0076a41106a20054180086a41106a290300370300200541e0076a41086a20054180086a41086a29030037030020052005290380083703e0074102212d4102212a0240201b4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005201a3702e40b2005201b3602e00b200520054198026a200541e00b6a200410e3092005280204212a20052802004101460d0b200541c0086a41186a200541206a290300370300200541c0086a41106a200541186a290300370300200541c0086a41086a200541106a2903003703002005200541086a2903003703c0080b200541a0086a41186a200541c0086a41186a290300370300200541a0086a41106a200541c0086a41106a290300370300200541a0086a41086a200541c0086a41086a290300370300200520052903c0083703a008024020194102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520183702e40b200520193602e00b200520054198026a200541e00b6a200410e3092005280204212d20052802004101460d0c20054180096a41186a200541206a29030037030020054180096a41106a200541186a29030037030020054180096a41086a200541106a2903003703002005200541086a290300370380090b200541e0086a41186a20054180096a41186a290300370300200541e0086a41106a20054180096a41106a290300370300200541e0086a41086a20054180096a41086a29030037030020052005290380093703e0084102212441022127024020174102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520163702e40b200520173602e00b200520054198026a200541e00b6a200410e3092005280204212720052802004101460d0d200541c0096a41186a200541206a290300370300200541c0096a41106a200541186a290300370300200541c0096a41086a200541106a2903003703002005200541086a2903003703c0090b200541a0096a41186a200541c0096a41186a290300370300200541a0096a41106a200541c0096a41106a290300370300200541a0096a41086a200541c0096a41086a290300370300200520052903c0093703a009024020154102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520143702e40b200520153602e00b200520054198026a200541e00b6a200410e3092005280204212420052802004101460d0e200541800a6a41186a200541206a290300370300200541800a6a41106a200541186a290300370300200541800a6a41086a200541106a2903003703002005200541086a2903003703800a0b200541e0096a41186a200541800a6a41186a290300370300200541e0096a41106a200541800a6a41106a290300370300200541e0096a41086a200541800a6a41086a290300370300200520052903800a3703e0094102212141022123024020134102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520123702e40b200520133602e00b200520054198026a200541e00b6a200410e3092005280204212320052802004101460d0f200541c00a6a41186a200541206a290300370300200541c00a6a41106a200541186a290300370300200541c00a6a41086a200541106a2903003703002005200541086a2903003703c00a0b200541a00a6a41186a200541c00a6a41186a290300370300200541a00a6a41106a200541c00a6a41106a290300370300200541a00a6a41086a200541c00a6a41086a290300370300200520052903c00a3703a00a024020114102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520103702e40b200520113602e00b200520054198026a200541e00b6a200410e3092005280204212120052802004101460d10200541e00a6a41186a200541206a290300370300200541e00a6a41106a200541186a290300370300200541e00a6a41086a200541106a2903003703002005200541086a2903003703e00a0b4102211d4102211f0240200f4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200e3702e40b2005200f3602e00b200520054198026a200541e00b6a200410e3092005280204211f20052802004101460d11200541800b6a41186a200541206a290300370300200541800b6a41106a200541186a290300370300200541800b6a41086a200541106a2903003703002005200541086a2903003703800b0b0240200d4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200c3702e40b2005200d3602e00b200520054198026a200541e00b6a200410e3092005280204211d20052802004101460d12200541a00b6a41186a200541206a290300370300200541a00b6a41106a200541186a290300370300200541a00b6a41086a200541106a2903003703002005200541086a2903003703a00b0b410221194102211b0240200b4102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a29000037030020052001290000370398022005200a3702e40b2005200b3602e00b200520054198026a200541e00b6a200410e3092005280204211b20052802004101460d13200541c00b6a41186a200541206a290300370300200541c00b6a41106a200541186a290300370300200541c00b6a41086a200541106a2903003703002005200541086a2903003703c00b0b0240024020094102460d0020054198026a41186a200141186a29000037030020054198026a41106a200141106a29000037030020054198026a41086a200141086a2900003703002005200129000037039802200520083702840c200520093602800c200520054198026a200541800c6a200410e3092005280204211920052802004101460d01200541e00b6a41186a200541206a290300370300200541e00b6a41106a200541186a290300370300200541e00b6a41086a200541106a2903003703002005200541086a2903003703e00b0b20054180056a41186a2201200541a0056a41186a29030037030020054180056a41106a2204200541a0056a41106a29030037030020054180056a41086a2217200541a0056a41086a290300370300200541e0046a41086a2215200541e0056a41086a290300370300200541e0046a41106a2213200541e0056a41106a290300370300200541e0046a41186a2211200541e0056a41186a290300370300200541c0046a41086a220f200541a0066a41086a290300370300200541c0046a41106a220d200541a0066a41106a290300370300200541c0046a41186a220b200541a0066a41186a290300370300200520052903a00537038005200520052903e0053703e004200520052903a0063703c004200541a0046a41186a2209200541e0066a41186a290300370300200541a0046a41106a222e200541e0066a41106a290300370300200541a0046a41086a222f200541e0066a41086a29030037030020054180046a41086a2230200541a0076a41086a29030037030020054180046a41106a2231200541a0076a41106a29030037030020054180046a41186a2232200541a0076a41186a290300370300200541e0036a41086a2233200541e0076a41086a290300370300200541e0036a41106a2234200541e0076a41106a290300370300200541e0036a41186a2235200541e0076a41186a290300370300200520052903e0063703a004200520052903a00737038004200520052903e0073703e003200541c0036a41186a2236200541a0086a41186a290300370300200541c0036a41106a2237200541a0086a41106a290300370300200541c0036a41086a2238200541a0086a41086a290300370300200541a0036a41186a2239200541e0086a41186a290300370300200541a0036a41106a223a200541e0086a41106a290300370300200541a0036a41086a223b200541e0086a41086a29030037030020054180036a41186a223c200541a0096a41186a29030037030020054180036a41106a223d200541a0096a41106a29030037030020054180036a41086a223e200541a0096a41086a290300370300200520052903a0083703c003200520052903e0083703a003200520052903a00937038003200541e0026a41186a223f200541e0096a41186a290300370300200541e0026a41106a2240200541e0096a41106a290300370300200541e0026a41086a2241200541e0096a41086a290300370300200520052903e0093703e002200541c0026a41186a2242200541a00a6a41186a290300370300200541c0026a41106a2243200541a00a6a41106a290300370300200541c0026a41086a2244200541a00a6a41086a290300370300200520052903a00a3703c00241c0041038222c450d25202c2003360200202c200529038005370204202c2029360224202c20052903e004370228202c410c6a2017290300370200202c41146a2004290300370200202c411c6a2001290300370200202c41306a2015290300370200202c41386a2013290300370200202c41c0006a2011290300370200202c2002360248202c202536026c202c20052903c00437024c202c41d4006a200f290300370200202c41dc006a200d290300370200202c41e4006a200b290300370200202c20052903a004370270202c41f8006a202f290300370200202c4180016a202e290300370200202c4188016a2009290300370200202c202b36029001202c20283602b401202c41ac016a2032290300370200202c41a4016a2031290300370200202c419c016a2030290300370200202c20052903800437029401202c41d0016a2035290300370200202c41c8016a2034290300370200202c41c0016a2033290300370200202c20052903e0033702b801202c202a3602d801202c41f4016a2036290300370200202c41ec016a2037290300370200202c41e4016a2038290300370200202c20052903c0033702dc01202c202d3602fc01202c4198026a2039290300370200202c4190026a203a290300370200202c4188026a203b290300370200202c20052903a00337028002202c20273602a002202c41bc026a203c290300370200202c41b4026a203d290300370200202c41ac026a203e290300370200202c2005290380033702a402202c20243602c402202c41e0026a203f290300370200202c41d8026a2040290300370200202c41d0026a2041290300370200202c20052903e0023702c802202c20233602e802202c4184036a2042290300370200202c41fc026a2043290300370200202c41f4026a2044290300370200202c20052903c0023702ec02202c202136028c03202c41a8036a200541e00a6a41186a290300370200202c41a0036a200541e00a6a41106a290300370200202c4198036a200541e00a6a41086a290300370200202c20052903e00a37029003202c201f3602b003202c41cc036a200541800b6a41186a290300370200202c41c4036a200541800b6a41106a290300370200202c41bc036a200541800b6a41086a290300370200202c20052903800b3702b403202c201d3602d403202c41f0036a200541a00b6a41186a290300370200202c41e8036a200541a00b6a41106a290300370200202c41e0036a200541a00b6a41086a290300370200202c20052903a00b3702d803202c201b3602f803202c4194046a200541c00b6a41186a290300370200202c418c046a200541c00b6a41106a290300370200202c4184046a200541c00b6a41086a290300370200202c20052903c00b3702fc03202c201936029c04202c41b8046a200541e00b6a41186a290300370200202c41b0046a200541e00b6a41106a290300370200202c41a8046a200541e00b6a41086a290300370200202c20052903e00b3702a00441032128024020070d004100212b2006212a0c040b2006417f4c0d050240024020060d004101212b0c010b20061038222b450d260b202b2007200610c30a1a2006212a0c030b20004101360200200020193602040c230b2029417f4c0d030240024020290d00410121020c010b202910382202450d240b2002202a202910c30a1a0b2026422088a7212c200541f8016a41086a200541186a290300370300200541f8016a41106a200541206a290300370300200541f8016a41186a200541286a2903003703002005200541106a2903003703f8012005410c6a280200212a200541086a28020021062005280204212b2029212d0b20002028360204200041186a20052903f801370200200041c8006a20052903e001370200200041c4006a2029360200200041386a2003360200200041146a202a360200200041106a20063602002000410c6a202b360200200041086a202c360200200041306a200541f8016a41186a290300370200200041286a200541f8016a41106a290300370200200041206a200541f8016a41086a290300370200200041d0006a200541e0016a41086a290300370200200041d8006a200541e0016a41106a2802003602002000413c6a202dad4220862002ad84370200200041003602000c200b20004101360200200020033602040c1f0b1034000b20004101360200200020293602040c1d0b20004101360200200020023602040c1c0b20004101360200200020253602040c1b0b200041013602002000202b3602040c1a0b20004101360200200020283602040c190b200041013602002000202a3602040c180b200041013602002000202d3602040c170b20004101360200200020273602040c160b20004101360200200020243602040c150b20004101360200200020233602040c140b20004101360200200020213602040c130b200041013602002000201f3602040c120b200041013602002000201d3602040c110b200041013602002000201b3602040c100b200041013602002000202c3602040c0f0b200041013602002000202b3602040c0e0b20004101360200200020023602040c0d0b20004101360200200020253602040c0c0b20004101360200200020283602040c0b0b200041013602002000202d3602040c0a0b20004101360200200020243602040c090b20004101360200200020233602040c080b20004101360200200020213602040c070b200041013602002000201f3602040c060b200041013602002000201d3602040c050b200041013602002000201b3602040c040b20004101360200200020193602040c030b20004101360200200020173602040c020b20004101360200200020153602040c010b20004101360200200020133602040b200541900c6a24000f0b1030000b925302127f047e23004180056b22062400200641086a200341086a280200360200200620032902003703000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802000e050104000203010b20064198016a2002412c6a29020037030020064190016a200241246a29020037030020064188016a2002411c6a29020037030020064180016a2207200241146a290200370300200641f0006a41086a2002410c6a29020037030020062002290204370370200241346a2108200241386a2109024002402006280274220a4125490d002007280200210a200641f0006a410c6a280200210b0c010b200641f9006a210b0b2002413c6a210c200241356a210d20082d0000210e2009280200210f2006200628027022103602a8012006200b3602a00120062802042111200628020821122006200a3602a4010240200a410174221320106b2214201141017420126b2202200220144b1b2215450d00410021022006280200211602400340201220026a2209410176220820114f0d10201020026a22174101762207200a4f0d11201620086a2d00002208410f71200841f0017141047620094101711b200b20076a2d00002208410f71200841047620174101711b470d012015200241016a2202470d000b201521020b20020d060b20132010470d0441ccd9c800412a41f8d9c8001035000b4101210720062802042208200628020822094101762202490d0e20064180046a410472200628020020026a200820026b10e109200641286a41086a20064180046a41186a290300370300200641286a41106a200641a0046a290300370300200641286a41186a200641a8046a290300370300200620064180046a41106a290300370328200941017121022006418c046a280200210820064180046a41086a2802002117200429020421182004280200210c2006280284042103410021090c2a0b200241106a28020021102002410c6a280200210b200241086a280200210a2002280204210202402006280204220941017420062802082208470d0020042802082108410021090240200a450d0020102008470d00200a2004280200201010c60a452109201021080b2004280204211720042802002103024020052802002207450d00200541046a280200450d00200710390b2005200b3602042005200a360200200541086a2010360200410321070c2a0b2008410176220720094f0d0e2003200328020841016a22173602082002200628020020076a2d00002209410f71200941047620084101711b220741246c6a22082d00002109200841023a00000240024020094102470d002003280204220520174101762209490d112006418c046a200328020020096a200520096b10e109200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a201741017136020041002109200641003a0080042002200741246c6a41046a200141306a20064180046a10dc09360200200841003a00000c010b20064180046a41096a200841096a29000037000020064180046a41116a200841116a29000037000020064180046a41196a200841196a29000037000020064180046a41206a200841206a280000360000200620093a0080042006200829000137008104200641a8036a41086a200441086a280200360200200620042902003703a803200641d0026a200120064180046a2003200641a8036a200510de0920062802d402211720062802d0024101460d0b200641d0026a41086a2d0000210341002109200841003a00002002200741246c6a41046a2017360200200341ff0171450d090b4103210720102108200b2117200a21030c290b200641a0026a2002412c6a29020037030020064198026a200241246a29020037030020064190026a2002411c6a29020037030020064188026a2217200241146a290200370300200641f8016a41086a2002410c6a290200370300200620022902043703f801200241346a2108200241386a21092002413c6a2107200241c0006a21020240024020062802fc01220a4125490d002017280200210a200641f8016a410c6a280200210b0c010b20064181026a210b0b2008280200210c2009280200210e200728020021132002280200210f200620062802f80122103602d0012006200b3602c80120062802042111200628020821122006200a3602cc01410021020240200a41017420106b2214201141017420126b220d200d20144b1b2215450d00200628020021160340201220026a2209410176220820114f0d11201020026a22174101762207200a4f0d12201620086a2d00002208410f71200841f0017141047620094101711b200b20076a2d00002208410f71200841047620174101711b470d012015200241016a2202470d000b201521020b0240024020022014470d002014200d470d00410021090240200e450d00200f2004280208470d00200e2004280200200f10c60a4521090b200a20104101762202490d1320064180046a410472200b20026a200a20026b10e109200641a8036a41086a220720064180046a41186a290300370300200641a8036a41106a220b200641a0046a290300370300200641a8036a41186a2211200641a8046a290300370300200620064180046a41106a2903003703a803201041017121022006418c046a280200210820064180046a41086a28020021172004280208210a200429020021182006280284042103024020052802002204450d00200541046a280200450d00200410390b200520133602042005200e360200200541086a200f360200200641286a41086a2007290300370300200641286a41106a200b290300370300200641286a41186a2011290300370300200620062903a8033703280c010b02400240024002400240200220144f0d00200a2010200241016a22176a22094101762208490d18200641d0026a410472200b20086a200a20086b10e109200620094101713602d002201020026a22094101762208200a4f0d19200b20086a2d0000210841c00410382207450d1a200741023a009c04200741023a00f803200741023a00d403200741023a00b003200741023a008c03200741023a00e802200741023a00c402200741023a00a002200741023a00fc01200741023a00d801200741023a00b401200741023a009001200741023a006c200741023a0048200741023a0024200741023a000020064180046a41306a200641d0026a41286a29030037030020064180046a41286a2203200641d0026a41206a29030037030020064180046a41206a220a200641d0026a41186a29030037030020064180046a41186a2210200641d0026a41106a29030037030020064180046a41106a2205200641d0026a41086a29030037030020064180046a41086a220b20062903d002370300200641c4046a200f360200200641c0046a2013360200200641bc046a200e360200200641b8046a200c360200200641003a008004200641043602840420072008410f71200841f0017141047620094101711b41246c6a2208200141306a221120064180046a10dc09360204200841003a000020062802042208410174200628020822096b2002470d0120064180046a200641c8016a200210e409200641286a41086a2010290300370300200641286a41106a200a290300370300200641286a41186a2003290300370300200620052903003703282006418c046a2802002108200b28020021172004280208210a20042902002118200628028404210320062802800421020c020b201220026a2209410176220820114f0d1a2003200220032802086a41016a2207360208200c200628020020086a2d00002202410f71200241047620094101711b220941246c6a22022d00002108200241023a000020084102470d022003280204221720074101762208490d1d2006418c046a200328020020086a201720086b10e109200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a2007410171360200200641003a008004200c200941246c6a41046a200141306a20064180046a10dc09360200200241003a00000c030b200920026a220a410176220320084f0d1a2008200920176a22104101762209490d1b2006280200220520036a2d00002117200641a8036a41046a200520096a200820096b10e109200620104101713602a803200641b0046a200641a8036a41286a29020037030020064180046a41286a2208200641a8036a41206a29020037030020064180046a41206a2209200641a8036a41186a29020037030020064180046a41186a2203200641a8036a41106a29020037030020064180046a41106a2210200641a8036a41086a29020037030020064180046a41086a220520062902a803370300200641b8046a2004290200370300200641c0046a200441086a2802003602002006410136028404200641003a00800420072017410f71201741f00171410476200a4101711b41246c6a2217201120064180046a10dc09360204201741003a000020064180046a200641c8016a200210e409200641286a41086a2003290300370300200641286a41106a2009290300370300200641286a41186a2008290300370300200620102903003703282006418c046a28020021082005280200211720062802840421032006280280042102420021180b410021092007210c0c020b20064180046a41096a200241096a29000037000020064180046a41116a200241116a29000037000020064180046a41196a200241196a29000037000020064180046a41206a200241206a280000360000200620083a0080042006200229000137008104200641a8036a41086a200441086a280200360200200620042902003703a803200641d0026a200120064180046a2003200641a8036a200510de0920062802d402210820062802d0024101460d0a200641d0026a41086a2d00002107200241003a0000200c200941246c6a41046a2008360200200741ff0171450d080b200a20104101762202490d1a20064180046a410472200b20026a200a20026b10e109200641286a41086a20064180046a41186a290300370300200641286a41106a200641a0046a290300370300200641286a41186a200641a8046a290300370300200620064180046a41106a290300370328201041017121022013ad422086200ead8421182006418c046a280200210820064180046a41086a2802002117200628028404210341002109200f210a0b024020062802fc014125490d0020064184026a28020010390b410421070c290b200641a0026a2002412c6a29020037030020064198026a200241246a29020037030020064190026a2002411c6a29020037030020064188026a2207200241146a290200370300200641f8016a41086a2002410c6a290200370300200620022902043703f8012002413c6a2108200241386a2109200241346a21020240024020062802fc01220d4125490d002007280200210a200641f8016a410c6a280200210b0c010b20064181026a210b200d210a0b2008280200210e200928020021132002280200210f410021020240200a41017420062802f80122106b220c20062802042211410174200628020822126b22142014200c4b1b2215450d00200628020021160340201220026a2209410176220820114f0d1b201020026a22174101762207200a4f0d1c201620086a2d00002208410f71200841f0017141047620094101711b200b20076a2d00002208410f71200841047620174101711b470d012015200241016a2202470d000b201521020b024002402002200c470d00200c2014470d00410021020240200e2004280208470d00200f2004280200200e10c60a4521020b024020052802002208450d00200541046a280200450d00200810390b200520133602042005200f360200200541086a200e360200024020020d00200620103602800420064180046a410472210802400240200d4125490d0020064188026a280200210d20064184026a28020021020c010b20064181026a21020b4100210920064180046a41086a220741003a00002006410036028404200820022002200d6a109008200641286a41086a20064180046a41186a290300370300200641286a41106a200641a0046a290300370300200641286a41186a200641a8046a290300370300200620064180046a41106a2903003703282006418c046a280200210820072802002117200429020421182004280200210c20062802840421032006280280042102410121070c020b200620103602800420064180046a410472210802400240200d4125490d0020064188026a280200210d20064184026a28020021020c010b20064181026a21020b20064180046a41086a220941003a00002006410036028404200820022002200d6a109008200641286a41086a20064180046a41186a290300370300200641286a41106a200641a0046a290300370300200641286a41186a200641a8046a290300370300200620064180046a41106a2903003703282006418c046a280200210820092802002117200429020421182004280200210c2006280284042103200628028004210241012107410121090c010b02402002200c4f0d0041c00410382208450d15200841023a009c04200841023a00f803200841023a00d403200841023a00b003200841023a008c03200841023a00e802200841023a00c402200841023a00a002200841023a00fc01200841023a00d801200841023a00b401200841023a009001200841023a006c200841023a0048200841023a0024200841023a0000201020026a22074101762217200a4f0d1d200a200741016a22104101762209490d1e200b20176a2d00002117200641a8036a41046a200b20096a200a20096b10e109200620104101713602a80320064180046a41306a200641a8036a41286a29020037030020064180046a41286a220b200641a8036a41206a29020037030020064180046a41206a2211200641a8036a41186a29020037030020064180046a41186a220a200641a8036a41106a221229020037030020064180046a41106a2210200641a8036a41086a221529020037030020064180046a41086a221620062902a803370300200641c0046a2214200e360200200641bc046a220c201336020020064180046a41386a200f360200200641013602840441002109200641003a00800420082017410f71201741f0017141047620074101711b41246c6a2207200141306a20064180046a10dc09360204200741003a000020064180046a2006200210e409200641c8006a41086a22022006418c046a2217280200360200200641f0006a41086a2207200a290300370300200641f0006a41106a220d2011290300370300200641f0006a41186a2211200b29030037030020062006290284043703482006201029030037037020062006280280043602ac03200641043602a8032015200629034837030020122002280200360200200641a8036a41386a4100360200200641a8036a41346a2008360200200641a8036a41146a2006290370370200200641a8036a411c6a2007290300370200200641a8036a41246a200d290300370200200641a8036a412c6a2011290300370200200641a0016a41086a200441086a280200360200200620042902003703a00120064180046a2001200641a8036a2003200641a0016a200510e009200641d0026a41086a220520064180046a41246a290200370300200641d0026a41106a220b20064180046a412c6a290200370300200641d0026a41186a221120064180046a41346a290200370300200620064180046a411c6a2902003703d00220162802002107201728020021022010280200210320064180046a41146a2802002117200a2802002108200c280200210c20142903002118200641c8046a280200210a20062802840421102006280280042104200641b0016a41106a2212200641dc046a280200360200200641b0016a41086a2215200641d4046a2902003703002006200641cc046a2902003703b00120044101460d06200641c8016a41186a20112903002219370300200641c8016a41106a200b290300221a370300200641c8016a41086a2005290300221b370300200641d8006a41086a22042015290300370300200641d8006a41106a22102012280200360200200641286a41086a201b370300200641286a41106a201a370300200641286a41186a2019370300200620062903d00222193703c801200620062903b00137035820062019370328200641106a41106a2010280200360200200641106a41086a2004290300370300200620062903583703100c010b200a20104101762202490d1e20064180046a410472200b20026a200a20026b10e109200620104101713602800441c00410382202450d14200241023a009c04200241023a00f803200241023a00d403200241023a00b003200241023a008c03200241023a00e802200241023a00c402200241023a00a002200241023a00fc01200241023a00d801200241023a00b401200241023a009001200241023a006c200241023a0048200241023a0024200241023a0000200641d0026a41086a220820064180046a41086a2209290300370300200641d0026a41106a220720064180046a41106a2217290300370300200641d0026a41186a220a20064180046a41186a2210290300370300200641d0026a41206a220b20064180046a41206a290300370300200641d0026a41286a221120064180046a41286a29030037030020062006290380043703d002200641a8036a410c6a2008290300370200200641a8036a41146a2007290300370200200641a8036a411c6a200a290300370200200641a8036a41246a200b290300370200200641a8036a412c6a2011290300370200200641a8036a41c0006a200e360200200641a8036a413c6a2013360200200641e0036a200f360200200641a8036a41346a2002360200200641043602a803200620062903d0023702ac03200641a0016a41086a200441086a280200360200200620042902003703a00120064180046a2001200641a8036a2003200641a0016a200510e009200641c8016a41086a220420064180046a41246a290200370300200641c8016a41106a220520064180046a412c6a290200370300200641c8016a41186a220b20064180046a41346a290200370300200620064180046a411c6a2902003703c8012009280200210720064180046a410c6a28020021022017280200210320064180046a41146a28020021172010280200210820064180046a413c6a280200210c20064180046a41c0006a2903002118200641c8046a280200210a20062802840421102006280280042109200641b0016a41106a2211200641dc046a280200360200200641b0016a41086a2212200641d4046a2902003703002006200641cc046a2902003703b00120094101460d1f200641f0006a41186a200b2903002219370300200641f0006a41106a2005290300221a370300200641f0006a41086a2004290300221b370300200641d8006a41086a22092012290300370300200641d8006a41106a22042011280200360200200641286a41086a201b370300200641286a41106a201a370300200641286a41186a2019370300200620062903c8012219370370200620062903b00137035820062019370328200641106a41106a2004280200360200200641106a41086a200929030037030020062006290358370310410021090b20062802fc014125490d2820064184026a28020010390c280b20104101762202200a4f0d1e200b20026a2d0000210841c00410382202450d12200241023a009c04200241023a00f803200241023a00d403200241023a00b003200241023a008c03200241023a00e802200241023a00c402200241023a00a002200241023a00fc01200241023a00d801200241023a00b401200241023a009001200241023a006c200241023a0048200241023a0024200241023a00000240024020144101470d00200641a8036a41026a200d41026a2d00003a000020064180046a41086a200c41086a29020037030020064180046a41106a200c41106a29020037030020064180046a41186a200c41186a2802003602002006200d2f00003b01a8032006200c290200370380040c010b200a201041016a22074101762209490d20200641ac036a200b20096a200a20096b10e109200620074101713602a80320064180046a41306a200641a8036a41286a29020037030020064180046a41286a200641a8036a41206a29020037030020064180046a41206a200641a8036a41186a29020037030020064180046a41186a200641a8036a41106a29020037030020064180046a41106a200641a8036a41086a29020037030020064180046a41086a20062902a803370300200641b9046a200d2f00003b0000200641bb046a200d41026a2d00003a0000200641c0046a200c290200370300200641c8046a200c41086a290200370300200641d0046a200c41106a290200370300200641d8046a200c41186a280200360200200641bc046a200f360200200641b8046a200e3a000020064102360284044100210e200641003a008004200141306a20064180046a10dc09210f0b20022008410f71200841047620104101711b41246c6a2208200e3a0000200820062f01a8033b00012008200f3602042008200629038004370208200841036a200641aa036a2d00003a0000200841106a20064180046a41086a2207290300370200200841186a20064180046a41106a2217290300370200200841206a20064180046a41186a220828020036020041002109200641a8036a41086a4100360200200620023602ac03200641033602a803200641d8006a41086a200441086a2802003602002006200429020037035820064180046a2001200641a8036a2003200641d8006a200510e009200641d0026a41086a221020064180046a41246a290200370300200641d0026a41106a2205200641ac046a290200370300200641d0026a41186a220b200641b4046a29020037030020062006419c046a2902003703d002200728020021072006418c046a28020021022017280200210320064194046a280200211720082802002108200641bc046a280200210c200641c0046a2903002118200641c8046a280200210a20062802840421112006280280042104200641c8016a41106a2212200641dc046a280200360200200641c8016a41086a2215200641d4046a2902003703002006200641cc046a2902003703c80120044101460d01200641f8016a41186a200b2903002219370300200641f8016a41106a2005290300221a370300200641f8016a41086a2010290300221b370300200641b0016a41086a22042015290300370300200641b0016a41106a22102012280200360200200641286a41086a201b370300200641286a41106a201a370300200641286a41186a2019370300200620062903d00222193703f801200620062903c8013703b00120062019370328200641106a41106a2010280200360200200641106a41086a2004290300370300200620062903b0013703100c250b0240024020022014460d00200a201020026a22094101762208490d21200641c8016a41046a200b20086a200a20086b10e1092003200328020820026a360208200620094101713602c801200641b4036a2209200641c8016a41086a290200370200200641bc036a200641c8016a41106a290200370200200641c4036a200641c8016a41186a290200370200200641cc036a200641c8016a41206a290200370200200641d4036a200641c8016a41286a290200370200200641dc036a200e3a000041022107200641023602a803200641df036a200d41026a2d00003a0000200620062902c8013702ac032006200d2f00003b00dd03200641e0036a200f360200200641e4036a200c290200370200200641ec036a200c41086a290200370200200641f4036a200c41106a290200370200200641fc036a200c41186a280200360200200641b0016a41086a200441086a280200360200200620042902003703b00120064180046a2001200641a8036a2003200641b0016a200510e00920062802840421172006280280042108200641d0026a20064180046a41086a41d80010c30a1a20084101460d01200641f8016a200641d0026a41d80010c30a1a200641a8036a200641a0016a200210e40920064180046a410472200641f8016a41d80010c30a1a4100210c200641003a008004200141306a20064180046a10dc092102200641286a41086a200641a8036a41186a290300370300200641286a41106a200641a8036a41206a290300370300200641286a41186a200641a8036a41286a2903003703002006200641a8036a41106a2903003703282002ad2118200641a8036a41086a28020021172009280200210820062802a803210220062802ac032103410021090c260b2003200328020820146a36020820064180046a41086a200c29020037030020064180046a41106a200c41086a29020037030020064180046a41186a200c41106a290200370300200641a0046a200c41186a2802003602002006200e3a0080042006200f360284042006200d2f00003b0081042006200d41026a2d00003a008304200641a8036a41086a200441086a280200360200200620042902003703a803200641d0026a200120064180046a2003200641a8036a200510de0920062802d4022107024020062802d0024101460d00200a20104101762202490d22200641d0026a41086a2d0000210820064180046a410472200b20026a200a20026b10e109200641a8036a41186a200641a8046a2903002218370300200641a8036a41106a200641a0046a2903002219370300200641286a41086a20064180046a41186a290300370300200641286a41106a2019370300200641286a41186a2018370300200620064180046a41106a29030037032820104101712102200841ff01714521092006418c046a280200210820064180046a41086a280200211720062802840421032007ad2118410221074100210c0c260b20004101360200200020073602040c020b20004101360200200020173602040c010b20004101360200200020113602040b20062802744125490d25200641fc006a28020010390c250b20004101360200200020103602040c200b200a20104101762202490d1d20064184046a200b20026a200a20026b10e109200041c8006a200f360200200041c4006a2013360200200041c0006a200e3602002000413c6a200c36020020004281808080c000370204200041146a20064188046a2902003702002000411c6a20064190046a290200370200200041246a20064198046a2902003702002000412c6a200641a0046a290200370200200041346a200641a8046a29020037020020062010410171360280042000410c6a200629028004370200200041003602000c1e0b2000428080808010370200200041186a2010360200200041146a200b360200200041106a200a3602002000410c6a2002360200200041086a41033602000c220b20004101360200200020083602040240200e450d002013450d00200e10390b200c10390c1c0b20004101360200200020173602040240200a450d00200b450d00200a10390b200210390c200b200820114190e9ca00103c000b2007200a4190e9ca00103c000b2002200841a0e9ca00105e000b200720094190e9ca00103c000b2009200541a0e9ca00105e000b200820114190e9ca00103c000b2007200a4190e9ca00103c000b2002200a41a0e9ca00105e000b2008200a41a0e9ca00105e000b2008200a4190e9ca00103c000b1030000b200820114190e9ca00103c000b200320084190e9ca00103c000b2009200841a0e9ca00105e000b2008201741a0e9ca00105e000b2002200a41a0e9ca00105e000b200820114190e9ca00103c000b2007200a4190e9ca00103c000b2017200a4190e9ca00103c000b2009200a41a0e9ca00105e000b2002200a41a0e9ca00105e000b20004101360200200020103602040c060b2002200a4190e9ca00103c000b2009200a41a0e9ca00105e000b2008200a41a0e9ca00105e000b2002200a41a0e9ca00105e000b2002200a41a0e9ca00105e000b20062802fc014125490d0420064184026a28020010390c040b20062802fc014125490d0320064184026a28020010390c030b20062802744125490d01200641fc006a28020010390c010b0b20002009360204200041186a2008360200200041146a2017360200200041106a20033602002000410c6a2002360200200041086a20073602002000411c6a2006290328370200200041c8006a200a360200200041c0006a20183702002000413c6a200c360200200041cc006a2006290310370200200041246a200641286a41086a2903003702002000412c6a200641286a41106a290300370200200041346a200641286a41186a290300370200200041d4006a200641106a41086a290300370200200041dc006a200641106a41106a280200360200200041003602000b20064180056a24000bc30301087f230041106b22032400200041003a0004200041003602002003200020021091080240024020032802004101470d00200341086a2802000d014180eaca0041114194eaca001035000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b02400240024020062004490d00200121080c010b2002210920012108024003402009450d01200720066a20082d00003a00002009417f6a2109200841016a21082004200641016a2206470d000b200421060c010b200520063602000c010b200520063602002008200120026a2201460d002000410c6a2105200041056a210a034002400240200028020022044125490d00200028020c210620002802082107200521090c010b2004210620002109200a2107412421040b20082d00002102024020062004470d00200320004101109108024020032802004101470d00200341086a2802000d044180eaca0041114194eaca001035000b200028020c210620002802082107200521090b200720066a20023a00002009200928020041016a3602002001200841016a2208470d000b0b200341106a24000f0b1030000b940b03017f057e197f230041e0016b22022400200241e8006a200141d00010c30a1a200241c0016a41186a200029031820002903088522033703002002200029031022043703c801200241e8006a41186a290300210520022004200029030022068522073703d001200241c8006a200320058542002007200229037885420010c20a200241d8006a2003200241e8006a41086a2903008542002007200229036885420010c20a20022004200241d8006a41086a2903002002290358857c2004200241c8006a41086a2903002002290348857c200642adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217893703c00120024188016a200241c0016a10d70802400240200241b4016a2d000022080d00200241186a20022903c001420042adfed5e4d485fda8d800420010c20a200241186a41086a29030020022903188521040c010b200241386a20022903c001420185420042adfed5e4d485fda8d800420010c20a200241286a200241386a41086a290300200229033885200241b5016a31000085420042adfed5e4d485fda8d800420010c20a200241286a41086a29030020022903288521040b200241086a20022903c80142002004420010c20a200041246a2802002209200041206a220a280200220b200241106a290300200229030885200489a7220c71220d6a280000220e200c411976220f41818284086c2210732211417f73201141fffdfb776a71418081828478712112200d41046a200b71211341042114200d2115200e2111024002400240024003402013211620120d012011201141017471418081828478710d022010200920166a2800002211732212417f73201241fffdfb776a71418081828478712112200b201620146a41046a712113201441046a2114201621150c000b0b2012417f6a201271211320152012684103766a2117200241e8006a41256a211820024194016a280200211920024190016a280200211a200228028801211b200241e8006a41cd006a2d000041ff0171211c03400240200241e8006a20094100200b2017716b41d0006c6a221241b07f6a221d412010c60a0d00201241506a211e201a211f201921170240201b41254f0d002018211f201b21170b02400240201e28020022204125490d002012415c6a2802002120201241586a280200211e0c010b201e41056a211e0b20172020470d00201f201e201710c60a0d0020082012417c6a2d0000470d002008450d03201c201d41cd006a2d000041ff0171460d030b024003402016211220130d012011201141017471418081828478710d032010200920126a2800002211732216417f73201641fffdfb776a71418081828478712113200b201220146a41046a712116201441046a2114201221150c000b0b20152013684103766a2117201221162013417f6a20137121130c000b0b200220003602bc014104211102400340200e4180818284787122160d01200d20116a2116201141046a211120092016200b71220d6a280000210e0c000b0b02402009201668410376200d6a200b7122116a2c000022164100480d0020092009280200418081828478716841037622116a2d000021160b200041286a280200211402402016410171220d450d0020140d00200241c0016a200a200241bc016a10e5092000280220220b200c712116200041246a28020021094104211103402016221420116a200b712116201141046a2111200920146a28000041808182847871220e450d000b02402009200e6841037620146a200b7122116a2c00004100480d002009280200418081828478716841037621110b200028022821140b20002014200d6b360228200920116a200f3a00002011417c6a200b7120096a41046a200f3a00002009410020116b41d0006c6a41b07f6a200141d00010c30a1a2000412c6a2211201128020041016a3602000c010b201b4125490d00201a10390b200241e0016a24000bfd0601047f230041f0026b22042400200241086a280200210520022802042106024002400240024002400240024020022802004101470d00200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d001200441f0016a200441d0016a20062005200310df0920042802f401210120042802f0012102200441f8006a200441f0016a41086a41d40010c30a1a20024101460d05200441246a200441f8006a41d40010c30a1a200441f8016a200441246a41d40010c30a1a41002105200441003a00f001200420013602f4012003200441f0016a10dc0921020c010b0240024020054120460d002005417f4c0d040240024020050d00410121020c010b200510382202450d060b20022006200510c30a2106413010382202450d05200241043a00002002200536002c200220053600282002200636002420022001290000370001200241096a200141086a290000370000200241116a200141106a290000370000200241196a200141186a2900003700000c010b200441246a41026a200641026a2d00003a0000200441f8016a2006410f6a29000037030020044180026a200641176a29000037030020044188026a2006411f6a2d00003a0000200420062f00003b0124200420062900073703f001200628000321020b200441d0016a41026a2201200441246a41026a2d00003a0000200441f8006a41086a2206200441f0016a41086a290300370300200441f8006a41106a2203200441f0016a41106a290300370300200441f8006a41186a2207200441f0016a41186a2d00003a0000200420042f01243b01d001200420042903f00137037820054120470d01200441206a41026a20012d00003a0000200441086a2006290300370300200441106a2003290300370300200441186a20072d00003a0000200420042f01d0013b012020042004290378370300410121050b200020053a0004200041003602002000410c6a2004290300370200200041056a20042f01203b0000200041086a2002360200200041246a200441186a2802003602002000411c6a200441106a290300370200200041146a200441086a290300370200200041076a200441226a2d00003a00000c040b20004101360200200020023602040c030b1034000b1030000b20004101360200200020013602040b200441f0026a24000b8e1101097f230041e0006b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2802002204410174200141086a28020022056b20024b0d00200420054101762202490d01200041046a200128020020026a200420026b10e109200020054101713602000c190b20054101762106200520026a22074101762108024020074101710d0020082006490d0220042008490d03200128020020066a210402400240200820066b220141244b0d00200041096a2004200110c30a1a410021040c010b2001417f4c0d05200110382202450d1120022004200110c30a2104200041106a20013602002000410c6a2004360200410121040b2000200136020420002005410171360200200041086a20043a00000c190b200841016a22072006490d04200820044f0d05200128020020066a210102400240200720066b220441244b0d00200341096a2001200410c30a1a410021010c010b2004417f4c0d04200410382206450d1020062001200410c30a2101200320043600102003200136000c410121010b200341306a41086a20013a0000200341396a22062003290009370000200341c1006a200341096a41086a290000370000200341c9006a200341196a290000370000200341d1006a200341216a290000370000200341d8006a200341286a2900003700002003200436023420032002410171220136023002402005410171220520014d0d000240024020044125490d00200341c0006a28020021010c010b200421010b2001417f6a2209450d162001417e6a210a41002101034002400240200441254922050d0020032802402102200328023c21070c010b20062107200421020b200220014d0d08200141016a21020240024020050d0020032802402108200328023c210b0c010b2006210b200421080b200820024d0d090240024020050d0020032802402104200328023c21050c010b200621050b200420014d0d0a200520016a200720016a2d0000410474200b20016a41016a2d0000411874411c76723a00000240200a2001460d0020032802342104200221010c010b0b02400240200328023422014125490d0020032802402104200328023c21050c010b20062105200121040b200420094d0d0a024020014125490d0020032802402101200328023c21060b200120094d0d0b200520096a2d00002101200620096a21060c170b200520014f0d17024002400240024020044125490d00200341306a41106a220128020022052004460d012003413c6a28020021040c120b4124210520044124460d01200341306a410472210120042105200621040c110b200341306a41106a2802002101200421050c010b200421010b20052001470d0d02400240200141016a22052001490d004100417f2005417f6a677620054102491b220541016a22012005490d000240024020044125490d00200341c0006a28020021052003413c6a2802002102200421080c010b4124210820042105200621020b200520014b0d0d200141244b0d01200441244d0d0f200341003a003820062002200510c30a1a20032005360234200210390c0f0b4180eaca0041114194eaca001035000b20082001470d0c0c0d0b2002200441a0e9ca00105e000b2006200841b0e9ca00105f000b2008200441b0e9ca001055000b1034000b2006200741c0e9ca00105f000b2007200441c0e9ca001055000b200120024194eeca00103c000b200141016a200841a4eeca00103c000b2001200441b4eeca00103c000b2009200441c4eeca00103c000b2009200141d4eeca00103c000b41fbeaca004120419cebca001035000b20011038210702400240200441244b0d002007450d0420072002200510c30a1a0c010b2007450d032007200220012008200820014b1b10c30a1a200210390b200341c0006a20053602002003413c6a2007360200200341013a0038200320013602340b200341c0006a220128020021052003413c6a28020021040b200420056a41003a00002001200128020041016a36020002400240200328023422044125490d00200341c0006a28020021010c010b200421010b024020014102490d002001417f6a210103402001417f6a210502400240200441254922020d0020032802402108200328023c21070c010b20062107200421080b200820054d0d030240024020020d0020032802402108200328023c210b0c010b2006210b200421080b200820014d0d040240024020020d0020032802402104200328023c21020c010b200621020b200420014d0d05200220016a200720016a417f6a2d0000410474200b20016a2d0000411874411c76723a0000200141014b2102200328023421042005210120020d000b0b0240024020044125490d00200341c0006a2204280200450d072003413c6a22052802002d0000210120042802002104200528020021060c010b2004450d0620032d003921010b2004450d042006200141f001714104763a00000c080b1030000b2001417f6a200841dcebca00103c000b2001200841ecebca00103c000b2001200441fcebca00103c000b4100410041f4eeca00103c000b4100410041e4eeca00103c000b0240024020044125490d00200341c0006a2204280200450d052003413c6a22052802002d0000210120042802002104200528020021060c010b2004450d0420032d003921010b20040d004100410041d4eeca00103c000b200620014104743a00000b02400240200328023422014125490d00200341c0006a220428020021010c010b200341306a41047221040b02402001450d0020042001417f6a3602000b20002003290330370200200041286a200341306a41286a290300370200200041206a200341306a41206a290300370200200041186a200341306a41186a290300370200200041106a200341306a41106a290300370200200041086a200341306a41086a2903003702000b200341e0006a24000f0b4100410041c4eeca00103c000bbb1307107f017e017f067e047f017e017f23004180026b22032400024002400240200128020c220441016a22052004490d00200520012802002206200641016a220741037641076c20064108491b22084101764b0d01200141046a28020021094100210a410021050340024002400240200a4101710d00200520074f0d010c020b200541036a220a2005490d00200a2105200a2007490d010b02400240024020074104490d00200920076a20092800003600000c010b200941046a2009200710c40a1a2007450d010b2002280200210b200341e0016a41186a210c410021050340024020092005220d6a220e2d0000418001470d0020094100200d6b41d0006c6a220541406a210f200541706a21072005417c6a2110200541506a2111200541b07f6a22122900002113201241086a221429000021150340200c200b290318200b2903088522163703002003200b29031022173703e801200f41086a290000211820032017200b290300221985221a3703f001200341b0016a20162018854200201a200f29000085420010c20a200341a0016a201520168542002013201a85420010c20a20032017200341a0016a41086a29030020032903a001857c2017200341b0016a41086a29030020032903b001857c201942adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217893703e0012011200341e0016a10d70820032903e00121170240024020102d00000d00200341f0006a2017420042adfed5e4d485fda8d800420010c20a200341f0006a41086a29030020032903708521170c010b20034190016a2017420185420042adfed5e4d485fda8d800420010c20a20034180016a20034190016a41086a29030020032903900185201031000185420042adfed5e4d485fda8d800420010c20a20034180016a41086a2903002003290380018521170b200341e0006a20032903e80142002017420010c20a41002105200341e0006a41086a2903002003290360852017892217a7221b210a0340200541046a2205200a20067122026a210a200920026a28000041808182847871221c450d000b02402009201c6841037620026a20067122056a2c00004100480d002009280200418081828478716841037621050b024020052006201b71220a6b200d200a6b7320067141034b0d00200e2017a741197622053a0000200d417c6a20067120096a41046a20053a00000c020b200920056a220a2d00002102200a2017a7411976221c3a00002005417c6a20067120096a41046a201c3a00000240200241ff01470d00200e41ff013a0000200d417c6a20067120096a41046a41ff013a00002009410020056b41d0006c6a41b07f6a201241d00010c30a1a0c020b2009410020056b41d0006c6a220a41506a2205290200211720052011290200370200200541086a220229020021162002201141086a221c290200370200200541106a2202290200211a2002201141106a221b290200370200200541186a220529020021182005201141186a2202290200370200200a41b07f6a2205290200211320052012290200370200200541186a221d2902002119201d201241186a221e290200370200200541106a221d290200211f201d201241106a2220290200370200200541086a2205290200211520052014290200370200201c2016370200201b201a37020020022018370200201420153702002020201f370200201e20193702002012201337020020112017370200200a41706a220541086a220a2902002117200a200741086a2202290200370200200529020021162005200729020037020020072016370200200220173702000c000b0b200d41016a2105200d2006470d000b0b200041003602002001200820046b3602080c040b200920056a220a200a280200220a410776417f73418182840871200a41fffefdfb07726a3602004101210a200541016a21050c000b0b41f4acc900411c4190adc9001035000b024002400240024002402005200841016a220a2005200a4b1b22050d0041d4a5c00021094100211c410021100c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d02417f200541037441076e417f6a677641016a21050b2005ad42d0007e2217422088a70d022017a7220a200541046a221c6a2209200a490d02200910382209450d032009200a6a220941ff01201c10c50a1a2005417f6a221c200541037641076c201c4108491b21100b200141046a280200222041046a210b202020076a210f2020280200417f734180818284787121052002280200211b200341f8016a211e2020211203400240024020050d0002400340200b200f4f0d01201241c07d6a2112200b2802002105200b41046a220a210b2005418081828478712205418081828478460d000b2005418081828478732205417f6a200571211d200a210b0c020b2001201c360200200041003602002001201020046b360208200141046a20093602002006450d0620202007ad42d0007ea76b10390c060b2005417f6a200571211d0b201e201b290318201b2903088522163703002003201b29031022173703e8012003201b290300221a3703e00120032017201a8522133703f001200341d0006a2016201241002005684103766b41d0006c6a220541406a220a41086a2900008542002013200a29000085420010c20a200341c0006a2016200541b07f6a221441086a2900008542002013201429000085420010c20a20032017200341c0006a41086a2903002003290340857c2017200341d0006a41086a2903002003290350857c201a42adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217893703e001200541506a200341e0016a10d708024002402005417c6a22052d00000d00200341106a20032903e001420042adfed5e4d485fda8d800420010c20a200341106a41086a29030020032903108521170c010b200341306a20032903e001420185420042adfed5e4d485fda8d800420010c20a200341206a200341306a41086a290300200329033085200531000185420042adfed5e4d485fda8d800420010c20a200341206a41086a29030020032903208521170b200320032903e80142002017420010c20a200341086a2903002003290300852017892217a721054100210a0340200a41046a220a2005201c7122026a2105200920026a280000418081828478712211450d000b0240200920116841037620026a201c7122056a2c00004100480d002009280200418081828478716841037621050b200920056a2017a7411976220a3a00002005417c6a201c7120096a41046a200a3a00002009410020056b41d0006c6a41b07f6a201441d00010c30a1a201d21050c000b0b41f4acc900411c4190adc9001035000b41f4acc900411c4190adc9001035000b1030000b20034180026a24000b13002000410236020420004198dac8003602000b130020004100360204200041f4ddca003602000b130020004117360204200041ace1c8003602000b340020004190e1c80036020420004100360200200041146a4103360200200041106a41c0f4c800360200200041086a42053702000bfd0401057f230041f0006b22022400200241c0006a418cf9c800410710f201200241d0006a4193f9c800411210f2012002200136026c2002200241ec006a410410f301370330200241146a200241ec006a41046a3602002002200241386a36020c2002200241ec006a3602102002200241306a360208200241e0006a200241086a108d01024002402002280268220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b4100210520024100360238200220043602302002200136023402402001410f4b0d00200241306a410041101081012002280234210120022802302104200228023821050b200420056a22062002290040370000200641086a200241c0006a41086a2900003700002002200541106a22053602380240200120056b410f4b0d00200241306a200541101081012002280234210120022802302104200228023821050b200420056a22062002290050370000200641086a200241d0006a41086a2900003700002002200541106a2205360238200228026021060240200120056b20034f0d00200241306a2005200310810120022802302104200228023821050b200420056a2006200310c30a1a2002200520036a220136023802402002280264450d00200228026010390b200241086a20022802302204200110ce0441002101024020022802084101470d002000200229020c370204200041246a200241086a41246a2802003602002000411c6a200241086a411c6a290200370200200041146a200241086a41146a2902003702002000410c6a200241086a410c6a290200370200410121010b2000200136020002402002280234450d00200410390b200241f0006a24000f0b1034000b1030000bb60301057f230041e0006b22052400024002402004417f4c0d000240024020040d00410121060c010b200410382206450d020b20062003200410c30a2107410021060240200141386a2802002004470d0020072001280230200410c60a4521060b02402004450d00200710390b024002402006450d002000200129003c370000200041186a200141d4006a290000370000200041106a200141cc006a290000370000200041086a200141c4006a2900003700000c010b200520032004109c01200541206a41186a200541186a2207290000370300200541206a41106a200541106a2208290000370300200541206a41086a200541086a220929000037030020052005290000370320200541c0006a41086a200241086a280200360200200520022902003703400240024020040d00410121060c010b200410382206450d030b200520043602542005200636025020062003200410c30a1a200520043602582001200541206a200541c0006a200541d0006a10910a200041186a2007290000370000200041106a2008290000370000200041086a2009290000370000200020052900003700000b200541e0006a24000f0b1034000b1030000be70e02037f027e230041d0006b220424000240024002400240024002400240200141e0006a22052001413c6a412010c60a450d00200441286a41186a200541186a290000370300200441286a41106a200541106a290000370300200441286a41086a200541086a2900003703002004200529000037032802402001200441286a10ed092206450d00200628020c41004a0d010b413010382201450d01200141003a000020012005290000370001200141096a200541086a290000370000200141116a200541106a290000370000200141196a200541186a29000037000020011039200041003a00000c060b2004410036021420042005360210200441f8f8c80036020c20042001360208412410382205450d002005200236000020054180013a000420042005360218200442a4808080d00037021c200441186a4105412010810120042802182201200428022022066a22052003290000370000200541086a200341086a290000370000200541106a200341106a290000370000200541186a200341186a290000370000200428021c2105200441286a200441086a2001200641206a10ac0402402005450d00200110390b024020042802284101470d0002400240200428022c22052d00000e0407070007010b200541086a280200450d06200541046a28020010390c060b200541286a280200450d05200541246a28020010390c050b02400240200428022c2205450d000240200441306a2903002207422088a722064104490d00200528000021010b02402007a7450d00200510390b20064104490d0020042001360218200441286a200441086a200441186a410410ac04024020042802284101470d0002400240200428022c22052d00000e0408080008010b200541086a280200450d07200541046a28020010390c070b200541286a280200450d06200541246a28020010390c060b0240200428022c22050d00200041003a00000c080b200441306a2903002207422088a72201450d03200420052d00003a002c2004410136022820014101470d010c030b200041003a00000c060b200420052d00013a002d2004410236022820014102460d01200420052d00023a002e2004410336022820014103460d01200420052d00033a002f2004410436022820014104460d01200441306a20052d00043a00002004410536022820014105460d01200441316a20052d00053a00002004410636022820014106460d01200441326a20052d00063a00002004410736022820014107460d01200441336a20052d00073a00002004410836022820014108460d01200441346a20052d00083a00002004410936022820014109460d01200441356a20052d00093a00002004410a3602282001410a460d01200441366a20052d000a3a00002004410b3602282001410b460d01200441376a20052d000b3a00002004410c3602282001410c460d01200441386a20052d000c3a00002004410d3602282001410d460d01200441396a20052d000d3a00002004410e3602282001410e460d012004413a6a20052d000e3a00002004410f3602282001410f460d012004413b6a20052d000f3a00002004411036022820014110460d012004413c6a20052d00103a00002004411136022820014111460d012004413d6a20052d00113a00002004411236022820014112460d012004413e6a20052d00123a00002004411336022820014113460d012004413f6a20052d00133a00002004411436022820014114460d01200441c0006a20052d00143a00002004411536022820014115460d01200441c1006a20052d00153a00002004411636022820014116460d01200441c2006a20052d00163a00002004411736022820014117460d01200441c3006a20052d00173a00002004411836022820014118460d01200441c4006a20052d00183a00002004411936022820014119460d01200441c5006a20052d00193a00002004411a3602282001411a460d01200441c6006a20052d001a3a00002004411b3602282001411b460d01200441c7006a20052d001b3a00002004411c3602282001411c460d01200441c8006a20052d001c3a00002004411d3602282001411d460d01200441c9006a20052d001d3a00002004411e3602282001411e460d01200441ca006a20052d001e3a00002004411f3602282001411f460d01200441cb006a20052d001f3a0000200041086a200441286a410b6a2f00003b00002000410a6a200441356a2d00003a0000200041116a2004413c6a2d00003a00002000410f6a200441286a41126a2f01003b000020044120360228200420042f012c3b0118200420042d002e3a001a200441366a28010021012004413d6a2800002106200441c4006a2902002108200428002f2103200041186a200441c3006a2d00003a0000200041166a200441286a41196a2f00003b0000200041036a20042d001a3a0000200020042f01183b0001200041196a2008370000200041126a20063600002000410b6a2001360000200041046a2003360000410121010c020b1030000b410021010b200020013a00002007a7450d02200510390c020b20051039200041003a00000c010b20051039200041003a00000b200441d0006a24000bd30303017f047e097f230041306b22022400200241206a20002903182000290308852203200141186a2900008542002000290310220420002903002205852206200129001085420010c20a200241106a2003200141086a2900008542002006200129000085420010c20a2002200442002004200241106a41086a2903002002290310857c2004200241206a41086a2903002002290320857c200542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892203420010c20a200041246a2802002207200041206a2802002208200241086a290300200229030085200389a722007122096a280000220a200041197641818284086c220b732200417f73200041fffdfb776a7141808182847871210c200941046a200871210d4104210e02400340200d21000240200c0d000240200a200a4101747141808182847871450d00410021000c030b200b200720006a280000220a73220c417f73200c41fffdfb776a7141808182847871210c20082000200e6a41046a71210d200e41046a210e200021090c010b200c68210f2000210d200c417f6a200c71210c20012007410020082009200f4103766a716b41306c6a41506a2200412010c60a0d000b0b200241306a2400200041206a410020001b0b950201077f024020002802202201450d00024002402000412c6a2802000d00200141016a21020c010b200041246a2802002203200141016a22026a2104200341046a21012003280200417f7341808182847871210503400240024020050d000340200120044f0d04200341c07e6a210320012802002105200141046a220621012005418081828478712205418081828478460d000b2005418081828478732205417f6a2005712107200621010c010b2005417f6a20057121070b2005682106200721052003410020064103766b41306c6a220641746a280200450d00200641706a2802001039200721050c000b0b200041246a2802002002ad42307ea76b10390b0240200041346a280200450d00200028023010390b0ba02b040e7f027e067f037e230041d0036b22012400200041286a41003602002000412c6a2202280200210320024100360200200041246a22022802002104200241d4a5c000360200200041206a22022802002105200241003602002004200541016a22066a2107200441046a21022004280200417f73418081828478712108200141c8016a410572210920014192016a210a2004210b0240024002400240024002400240024002400240024002400340024002400240024020080d000340024020022007490d004100210c0c040b200b41c07d6a210b2002280200210c200241046a220d2102200c41808182847871220c418081828478460d000b200c418081828478732208417f6a200871210c0c010b2008417f6a200871210c2002210d0b2003417f6a2103200b41002008684103766b41d0006c6a220241546a2d0000220e4102470d01200d21020b02402003450d00034002400240200c0d000340200220074f0d04200b41c07d6a210b2002280200210c200241046a220d2102200c41808182847871220c418081828478460d000b200c41808182847873220c417f6a200c712109200d21020c010b200c417f6a200c7121090b200c68210d2009210c200b4100200d4103766b41d0006c6a220d41506a2802004125490d00200d41586a28020010392009210c0c000b0b02402005450d00200441ff01200541056a10c50a1a0b200020053602202000412c6a4100360200200041246a200436020020002005200641037641076c20054108491b36022820002d00584101460d0d200041dc006a28020021020240200041c8006a220d280200220b200b417f6a220c200041c0006a2207280200220b2000413c6a22092802006b716b4101470d00200910d608200d280200417f6a210c2007280200210b0b200041c4006a280200200b4102746a20023602002007200c200b41016a71360200200041386a280200220b20024d0d03200141e4006a41026a200041306a220e280200200241fc006c6a220241036a2d00003a0000200141c0006a41086a2207200241206a290000370300200141c0006a41106a200241286a290000370300200141c0006a41186a200241306a290000370300200120022f00013b0164200120022900183703402002280008210d200228000c210c2002290010210f20022800442103200229003c211020022800402104200228003c211120022800382112200241046a2209280000210b20022d0000210820094100360200200241003a0000200141286a41106a2209200241d8006a280000360200200141286a41086a2213200241d0006a290000370300200141086a41086a2214200241e4006a290000370300200141086a41106a2215200241ec006a290000370300200141086a41186a2216200241f4006a290000370300200120022900483703282001200229005c37030820084101470d02200241016a22082f000021112000280254220241026a200841026a2d00003a0000200220113b00002002200f37000f2002200c36000b2002200d3600072002200b360003200220012903403700172002411f6a20072d00003a0000200141fc016a200141dc006a280200360200200141f4016a200141d4006a2902003702002001200129024c3702ec0120014190026a2001290328370300200141c8016a41d0006a2013290300370300200141c8016a41d8006a2009280200360200200141a4026a2001290308370200200141c8016a41e4006a2014290300370200200141c8016a41ec006a2015290300370200200141c8016a41f4006a20162903003702002001200141e4006a41026a2d00003a00cb01200120012f01643b00c901200141c8016a41106a200f370300200141d4016a200c360200200141c8016a41206a20072d00003a0000200141c8016a41186a20012903403703002001418c026a200336020020014184026a201037020020014180026a2012360200200141c8016a41086a200d3602002001200b3602cc01200141013a00c8012000200e200141c8016a10dc0936025c200041003a00580c0d0b200241506a2802002108200241b07f6a2202290200210f200241086a2902002110200241106a2902002117200141c8026a41186a2213200241186a290200370300200141c8026a41106a22142017370300200141c8026a41086a221220103703002001200f3703c8022002290025210f2002412d6a2900002110200241356a29000021172002413d6a2900002118200241c5006a2900002119200241cd006a2f00002115200a200241cf006a2d00003a0000200141e8006a41286a20153b0100200141e8006a41206a22022019370300200141e8006a41186a22152018370300200141e8006a41106a22162017370300200141e8006a41086a221120103703002001200f37036820014198036a41186a201329030037030020014198036a41106a201429030037030020014198036a41086a2012290300370300200120012903c802370398032001200e3a00cc01200120083602c80120092001290368370000200941086a2011290300370000200941106a2016290300370000200941186a2015290300370000200941206a2002290300370000200941276a200141e8006a41276a280000360000200028024c21022000280250210e0240024020084125490d0020012802d401210820012802d00121130c010b200921130b200120012f01f4013b01f802200120083602f402200120133602f002200220014198036a200141f0026a200e28021c110600024020012802c8014125490d0020012802d00110390b200d2102200c21080c000b0b2001410036029401200141003a006c2001410036026802400240024002400240200b0e050102030400010b200141c8016a41086a200f370300200141c8016a41106a2001290340370300200141c8016a41186a200141c0006a41086a290300370300200141e8016a200141c0006a41106a290300370300200141f0016a200141c0006a41186a2903003703002001200d3602c8012001200c3602cc0102400240200c4125490d00200f422088a7210920012802d801210c0c010b200141d1016a21090b200d410176210202400240200d4101712208450d00200c20024d0d08200920026a2d0000410f712107200241016a21020c010b200c2002490d06410021070b200c20026b210b200920026a2102200c410174200d6b210c024002402010a7220d450d00200c41ffff03200c41ffff03491b220c41017641036a22091038220e450d09200141003602a0012001200936029c012001200e360298012001200c36029c0320014181023b01980320014198036a20014198016a10fb05024020080d000240200b0d00201121090c030b20012802a001210c034020022d000021070240200c200128029c01470d0020014198016a200c41011081010b200128029801200c6a20073a00002001200c41016a220c3602a001200241016a2102200b417f6a220b0d000b201121090c020b20012802a001210c03400240200c200128029c01470d0020014198016a200c41011081010b200128029801200c6a20073a00002001200c41016a220c3602a0010240200b450d00200b417f6a210b20022d00002107200241016a21020c010b0b201121090c010b200c41ffff03200c41ffff03491b220c41017641036a220e10382213450d0841002109200141003602a0012001200e36029c0120012013360298012001200c36029c03200141013b01980320014198036a20014198016a10fb05024020080d00200b450d0120012802a001210c034020022d000021070240200c200128029c01470d0020014198016a200c41011081010b200128029801200c6a20073a00002001200c41016a220c3602a001200241016a2102200b417f6a220b0d000c020b0b20012802a001210c03400240200c200128029c01470d0020014198016a200c41011081010b200128029801200c6a20073a00002001200c41016a220c3602a0010240200b450d00200b417f6a210b20022d00002107200241016a21020c010b0b410021090b20012802a0012205210202402005200128029c01470d0020014198016a2005410110810120012802a00121020b20012802980120026a41003a0000200120012802a00141016a22023602a00102402002200128029c01470d0020014198016a2002410110810120012802a00121020b20012802980120026a41003a0000200120012802a00141016a3602a0010240200d450d002009200320014198016a10d6010b201241c0046a211520014198036a410172210b200141c8016a41096a210a4100210d200141f0026a411f6a2113200141f0026a41186a2108200141f0026a41106a2103200141f0026a41086a210e20122102410021094101210702400240034020022d0000210c200241023a00000240024002400240200c4103460d002013200241206a2800003600002008200241196a2900003703002003200241116a290000370300200e200241096a2900003703002001200241016a2900003703f00202400240200c4102470d00200141023a00c8020c010b0240024020012802cc0122144125490d0020012802d801211420012802d40121160c010b200a21160b200120012802c8013602c803200120143602c403200120163602c003200141e8006a200141c0036a4101200d10d9092114200b20012903f002370000200b41086a200e290300370000200b41106a2003290300370000200b41186a2008290300370000200b411f6a20132800003600002001200c3a009803200141c8026a200020014198036a200141e8006a10d809200141e8006a201410da0920012d00c8024103460d060b20014198036a41206a200141c8026a41206a29030037030020014198036a41186a200141c8026a41186a29030037030020014198036a41106a200141c8026a41106a29030037030020014198036a41086a200141c8026a41086a290300370300200120012903c802220f370398034100210c0240200fa741ff0171417f6a0e020004020b2008200b41186a2900003703002003200b41106a290000370300200e200b41086a2900003703002001200b2900003703f00220012802bc03220c41214f0d0f200141f0026a200c20014198016a10d6010c020b20094180fe0371410876210b0c050b200b412020014198016a10d6010b2007210c0b200d41016a210d20074101742107200c2009722109200241246a22022015470d000b20094180fe0371410876210b0c010b20094180fe0371410876210b0b200541026a21022005417e4f0d0920012802a001220c2002490d0a20012802980120056a200b410874200941ff0171723b000002402011450d002004450d00201110390b2012103920012802cc014125490d0d20012802d40110390c0d0b410110382202450d062001410136029c012001200236029801200241003a0000200141013602a0010c0c0b200141c8016a41086a200f370300200141c8016a41106a2001290340370300200141c8016a41186a200141c0006a41086a290300370300200141e8016a200141c0006a41106a290300370300200141f0016a200141c0006a41186a2903003703002001200d3602c8012001200c3602cc0102400240200c4125490d00200f422088a7210b20012802d801210c0c010b200141d1016a210b0b200d410176210202400240200d410171450d00200c20024d0d0c200141013a009803200141a0036a200c200241016a22076b3602002001200b20076a36029c032001200b20026a2d0000410f713a0099030c010b200c2002490d0a200141a0036a200c20026b360200200141003b0198032001200b20026a36029c030b20014198016a20014198036a20122010422088a710db0802402010a7450d00201210390b20012802cc014125490d0b200141d4016a28020010390c0b0b200141c8016a41086a200f370300200141c8016a41106a2001290340370300200141c8016a41186a200141c0006a41086a290300370300200141e8016a200141c0006a41106a290300370300200141f0016a200141c0006a41186a2903003703002001200d3602c8012001200c3602cc0102400240200c4125490d00200f422088a7210220012802d801210c0c010b200141d1016a21020b2001200d3602c8032001200c3602c403200120023602c003200141f0026a200141c0036a10db09200141e8006a200141c0036a4100200210d9092102200141d4026a2003360200200141c8026a41106a2001290328370300200141e0026a200141306a290300370300200141e8026a200141286a41106a280200360200200120103702cc02200120123602c80220014198036a2000200141c8026a200141e8006a10d809200141e8006a200210da0910da08000b10d908000b2002200b41a4d7c800103c000b2002200c4188e8ca00105e000b2002200c4198e8ca00103c000b1030000b200c41204190eec5001055000b2005200241a0eec500105f000b2002200c41a0eec5001055000b2002200c4188e8ca00105e000b2002200c4198e8ca00103c000b200028024c21022000280250210b20014198036a41086a41002802d0a540360200200141002902c8a54037039803200141c8016a200220014198036a20012802980120012802a001200b2802141104002000280254220220012903c801370000200241186a200141c8016a41186a290300370000200241106a200141c8016a41106a290300370000200241086a200141c8016a41086a2903003700002000200028027c41016a36027c2000280254220241186a290000210f200241106a2900002110200241086a2900002117200041d9006a2002290000370000200041013a0058200041e1006a2017370000200041e9006a2010370000200041f1006a200f3700000240200128029c01450d0020012802980110390b20012802684125490d00200141f0006a28020010390b0240200041386a280200220b450d0020002802302102200b41fc006c210b03400240024020022d00000d00200241046a10ae030c010b200241246a10ae030b200241fc006a2102200b41847f6a220b0d000b0b0240200041346a2802002202450d00200241fc006c450d00200028023010390b200041c8006a280200210202400240024002400240200041c0006a280200220b2000413c6a280200220c490d002002200b4f0d01200b2002419cafc3001055000b2002200c490d010b0240200241ffffffff0371450d00200041c4006a28020010390b20002802202202450d0202402000412c6a2802000d00200241016a21080c020b200041246a280200220b200241016a22086a2107200b41046a2102200b280200417f7341808182847871210c034002400240200c0d000340200220074f0d05200b41c07d6a210b2002280200210c200241046a220d2102200c41808182847871220c418081828478460d000b200c41808182847873220c417f6a200c712109200d21020c010b200c417f6a200c7121090b200c68210d2009210c200b4100200d4103766b41d0006c6a220d41506a2802004125490d00200d41586a28020010392009210c0c000b0b41b0adc300412341d4adc3001035000b200041246a2802002008ad42d0007ea76b10390b200141d0036a24000b340020004190e1c80036020420004100360200200041146a4101360200200041106a41a4fac800360200200041086a42053702000bd10101047f230041306b2202240020004201370200200241286a4100360200200241206a4200370300200241186a4200370300200241106a4200370300200241086a4200370300200041086a220341003602002002420037030020004100410810810120002802002204200328020022056a42003700002003200541086a22053602000240200041046a28020020056b41034b0d0020002005410410810120032802002105200028020021040b2003200541046a360200200420056a41003600002002410c6a200010ff02200241306a24000b130020004108360204200041c089c9003602000b34002000418480c40036020420004100360200200041146a4104360200200041106a41c0a0c900360200200041086a42093702000b130020004103360204200041bca7c9003602000b2d01017f02404104103822020d001030000b20002002360200200241f40336000020004284808080c0003702040b3501017f02404108103822020d001030000b20002002360200200242f0f2bd99e6ac9db7e4003700002000428880808080013702040b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0620024198046c450d06200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0520024198046c450d05200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a220110b301200041146a2802002202450d0420024198046c450d04200128020010390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410390f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041106a10af010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210ac01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410390b200041206a10af010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010390f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010390b20022802004125460d00200210e4040b0f0b200041086a10af01200041046a220228020010f709200228020010390bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010c60a417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010c60a417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b200120014184acc900103c000bcf0f050d7f017e017f057e067f23004180016b22032400024002400240200128020c220441016a22052004490d00200520012802002206200641016a220741037641076c20064108491b22084101764b0d01200141046a28020021094100210a410021050340024002400240200a4101710d00200520074f0d010c020b200541036a220a2005490d00200a2105200a2007490d010b02400240024020074104490d00200920076a20092800003600000c010b200941046a2009200710c40a1a2007450d010b200941506a210b20022802002102410021050340024020092005220c6a220d2d0000418001470d00200b4100200c6b41306c6a220e41106a210f200e41206a2107200e2900002110200e41086a221129000021120340200341d0006a20022903182002290308852213200f41086a2900008542002002290310221420022903002215852216200f29000085420010c20a200341c0006a201320128542002016201085420010c20a200341306a201442002014200341c0006a41086a2903002003290340857c2014200341d0006a41086a2903002003290350857c201542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892210420010c20a41002105200341306a41086a2903002003290330852010892214a72217210a0340200541046a2205200a20067122186a210a200920186a280000418081828478712219450d000b0240200920196841037620186a20067122056a2c00004100480d002009280200418081828478716841037621050b024020052006201771220a6b200c200a6b7320067141034b0d00200d2014a741197622053a0000200c417c6a20067120096a41046a20053a00000c020b200920056a220a2d00002118200a2014a741197622193a00002005417c6a20067120096a41046a20193a00000240201841ff01470d00200d41ff013a0000200c417c6a20067120096a41046a41ff013a0000200b410020056b41306c6a220541286a200e41286a290200370200200541206a2007290200370200200541186a200e41186a290200370200200541106a200f290200370200200541086a20112902003702002005200e2902003702000c020b200b410020056b41306c6a220529020021102005200e290200370200200541186a220a2902002114200a200e41186a2218290200370200200541106a220a2902002113200a200f290200370200200541086a220a2902002112200a201129020037020020112012370200200f201337020020182014370200200e2010370200200541286a220a2902002114200a200741086a2218290200370200200529022021132005200729020037022020072013370200201820143702000c000b0b200c41016a2105200c2006470d000b0b200041003602002001200820046b3602080c040b200920056a220a200a280200220a410776417f73418182840871200a41fffefdfb07726a3602004101210a200541016a21050c000b0b41f4acc900411c4190adc9001035000b024002400240024002402005200841016a220a2005200a4b1b22050d0041d4a5c0002109410021194100211a0c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d02417f200541037441076e417f6a677641016a21050b2005ad42307e2214422088a70d022014a7220a200541046a22196a2218200a490d02201810382218450d032018200a6a220941ff01201910c50a1a2005417f6a2219200541037641076c20194108491b211a0b200941506a211b200141046a280200221c41046a210f201c20076a2111201c280200417f734180818284787121182002280200210c201c210e03400240024020180d0002400340200f20114f0d01200e41c07e6a210e200f2802002105200f41046a220a210f2005418081828478712205418081828478460d000b2005418081828478732218417f6a201871210b200a210f0c020b20012019360200200041003602002001201a20046b360208200141046a20093602002006450d06201c2007ad42307ea76b10390c060b2018417f6a201871210b0b41002105200341106a200c290318200c290308852210200e41002018684103766b41306c6a41506a221741186a220d290000854200200c2903102214200c2903002212852213201729001085420010c20a200341206a2010201741086a22082900008542002013201729000085420010c20a2003201442002014200341206a41086a2903002003290320857c2014200341106a41086a2903002003290310857c201242adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892210420010c20a200341086a2903002003290300852010892214a7210a0340200541046a2205200a20197122186a210a200920186a280000418081828478712202450d000b0240200920026841037620186a20197122056a2c00004100480d002009280200418081828478716841037621050b200920056a2014a7411976220a3a00002005417c6a20197120096a41046a200a3a0000201b410020056b41306c6a220541286a201741286a290200370200200541206a201741206a290200370200200541186a200d290200370200200541106a201741106a290200370200200541086a200829020037020020052017290200370200200b21180c000b0b41f4acc900411c4190adc9001035000b41f4acc900411c4190adc9001035000b1030000b20034180016a24000b13002000410136020420004180b5c9003602000bd91802047f027e200028022821020240200141046a2203280200200141086a220428020022056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028022c21040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028023021020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028023421040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028023821020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028023c21040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028024021020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028024421040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028024821020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028024c21040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028025021020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200029030021060240200328020020056b41074b0d00200120054108108101200141086a28020021050b200128020020056a2006370000200141086a2204200541086a2205360200200028025421020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028025821040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028025c21020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200041106a2903002106200029030821070240200328020020056b410f4b0d00200120054110108101200141086a28020021050b200128020020056a2204200637000820042007370000200141086a2204200541106a2205360200200041206a2903002106200029031821070240200141046a220228020020056b410f4b0d00200120054110108101200428020021050b200128020020056a22032006370008200320073700002004200541106a2205360200200028026021040240200228020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028026421020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028026821040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028026c21020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028027021040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028027421020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200200028027821040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028027c21020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802800121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a220536020020002802840121020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802880121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a2205360200200028028c0121020240200141046a28020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a2205360200024002402000280290014101460d000240200141046a2802002005470d00200120054101108101200141086a28020021050b200128020020056a41003a0000200541016a21050c010b0240200141046a22042802002005470d00200120054101108101200141086a28020021050b200128020020056a41013a0000200141086a2203200541016a220536020020002802940121020240200428020020056b41034b0d00200120054104108101200328020021050b200128020020056a2002360000200541046a21050b200141086a2005360200024002402000280298014101460d000240200141046a2802002005470d00200120054101108101200141086a28020021050b200128020020056a41003a0000200541016a21050c010b0240200141046a22042802002005470d00200120054101108101200141086a28020021050b200128020020056a41013a0000200141086a2203200541016a2205360200200028029c0121020240200428020020056b41034b0d00200120054104108101200328020021050b200128020020056a2002360000200541046a21050b200141086a2204200536020020002802a00121020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802a40121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a220536020020002802a80121020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802ac0121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a220536020020002802b00121020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802b40121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a220536020020002802b80121020240200141046a220328020020056b41034b0d00200120054104108101200428020021050b200128020020056a20023600002004200541046a220536020020002802bc0121040240200328020020056b41034b0d00200120054104108101200141086a28020021050b200128020020056a2004360000200141086a2204200541046a220536020020002802c00121000240200141046a28020020056b41034b0d00200120054104108101200428020021050b200128020020056a20003600002004200541046a3602000bd60201067f230041c0006b22022400200241086a200110a70a200241086a41106a200241086a41086a200228020822034101461b29030010172104200241206a41186a22054200370300200241206a41106a22064200370300200241206a41086a22074200370300200242003703202007200441086a2900003703002006200441106a2900003703002005200441186a2900003703002002200429000037032020041039200041186a2005290300370000200041106a2006290300370000200041086a20072903003700002000200229032037000002402003450d002002280210450d00200228020c10390b20012802002105024020012802082204450d002004410c6c21002005210403400240200441046a280200450d00200428020010390b2004410c6a2104200041746a22000d000b0b0240200141046a2802002204450d002004410c6c450d00200510390b200241c0006a24000b130020002002ad4220862001ad84102310a40a0b13002000410a360204200041f8c6c9003602000b3400200041b9fec30036020420004100360200200041146a4110360200200041106a418ce0c900360200200041086a42063702000b130020004106360204200041e8fdc9003602000b2b01017f02404101103822020d001030000b200020023602002002412a3a000020004281808080103702040b920101017f230041c0006b22022400200241386a41002903e0a644370300200241306a41002903d8a644370300200241286a41002903d0a644370300200241206a41002903c8a644370300200241186a41002903c0a644370300200241106a41002903b8a644370300200241086a41002903b0a644370300200241002903a8a64437030020002002108806200241c0006a24000b840101037f20004201370200200041086a2202410036020020004100410810810120002802002203200228020022046a42c0f0f50b3700002002200441086a22043602000240200041046a28020020046b41074b0d0020002004410810810120022802002104200028020021030b2002200441086a360200200320046a4280c2d72f3700000b2d01017f02404104103822020d001030000b20002002360200200241e01236000020004284808080c0003702040bc80101057f20004201370200200041086a2202410036020020004100410410810120002802002203200228020022046a418080f0013600002002200441046a22043602000240200041046a220528020020046b41034b0d0020002004410410810120022802002104200028020021030b2002200441046a2206360200200320046a418080c0023600000240200528020020066b41034b0d00200020064104108101200041086a28020021060b200041086a200641046a360200200028020020066a418080c0023600000bff1103027f017e027f230041c0016b22022400200241086a10fb03200041086a2203410036020020004201370200200229030821042000410041081081012000280200200328020022056a20043700002003200541086a2205360200200229031021040240200041046a220628020020056b41074b0d00200020054108108101200328020021050b200028020020056a20043700002003200541086a2205360200200229031821040240200628020020056b41074b0d00200020054108108101200041086a28020021050b200028020020056a2004370000200041086a200541086a220536020002400240200241206a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a2205360200200229032821040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241306a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a2205360200200229033821040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241c0006a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a2205360200200229034821040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a22032005360200200241d0006a29030021040240200041046a28020020056b41074b0d00200020054108108101200328020021050b200028020020056a20043700002003200541086a220536020002400240200241d8006a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a2205360200200229036021040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241e8006a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a2205360200200229037021040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241f8006a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a220536020020022903800121040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a2203200536020020024188016a29030021040240200041046a28020020056b41074b0d00200020054108108101200328020021050b200028020020056a20043700002003200541086a22053602000240024020024190016a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a220536020020022903980121040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241a0016a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a220536020020022903a80121040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a200536020002400240200241b0016a2903004201510d000240200041046a2802002005470d00200020054101108101200041086a28020021050b200028020020056a41003a0000200541016a21050c010b0240200041046a22032802002005470d00200020054101108101200041086a28020021050b200028020020056a41013a0000200041086a2206200541016a220536020020022903b80121040240200328020020056b41074b0d00200020054108108101200628020021050b200028020020056a2004370000200541086a21050b200041086a2005360200200241c0016a24000be90301067f230041d0006b22022400200241086a41f1b5c900410d10f201200241186a41feb5c900410d10f201200220013602342002200241346a410410f301370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108d01024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b200110382204450d020b2000200436020041002105200041086a22064100360200200041046a2207200136020002402001410f4b0d0020004100411010810120062802002105200028020021040b200420056a22012002290008370000200141086a200241086a41086a2900003700002006200541106a220136020002402007280200220520016b410f4b0d00200020014110108101200041046a2802002105200041086a28020021010b200041086a2206200141106a22043602002000280200220720016a22012002290018370000200141086a200241186a41086a290000370000200228022821010240200520046b20034f0d0020002004200310810120062802002104200028020021070b200720046a2001200310c30a1a2006200420036a3602000240200228022c450d00200110390b200241d0006a24000f0b1034000b1030000bb70201037f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240200041046a280200200041086a220328020022046b20014f0d00200020042001108101200328020021040b200028020020046a2002410c6a200110c30a1a2003200420016a360200200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41fc86ca00200241086a103b2101200241206a240020010b130020004101360204200041f087ca003602000b3400200041a98aca0036020420004100360200200041146a4102360200200041106a41b48aca00360200200041086a420b3702000b3501017f02404104103822020d001030000b20004204370204200020023602002000410010d20141002802ccdd4a4100200010d3010b130020004128360204200041d493ca003602000b3400200041f1b5c90036020420004100360200200041146a4102360200200041106a41c4b9ca00360200200041086a420d3702000b950101017f230041d0016b22022400200241086a410041800110c50a1a200241c4016a42003702002000410036020820004201370200200242003702bc01200241013602b8012002428280808080193703b00120024286808080c00c3703a801200241003602a00120024100360298012002420137039001200242818080801037038801200241086a200010fb09200241d0016a24000bb10201027f230041206b220424000240024002400240024020022001413c6a412010c60a0d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b200210382201450d030b200020023602042000200136020020012005200210c30a1a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410ed092202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b200110382202450d020b200020013602042000200236020020022005200110c30a1a200041086a20013602000c030b1034000b1030000b200041003602000b200441206a24000be50301047f23004180016b220424000240024020032802082205200041386a280200470d00200328020022062000280230200510c60a0d00200341046a280200450d01200610390c010b200441c0006a41186a2205200141186a290000370300200441c0006a41106a2206200141106a290000370300200441c0006a41086a2207200141086a2900003703002004200129000037034020042000200441c0006a10920a024020042903004201520d00200441c0006a41286a200441306a290300370300200441c0006a41206a200441286a2903003703002005200441206a2903003703002006200441186a2903003703002007200441106a29030037030020042004290308370340200441f0006a41086a200341086a2802003602002004410136027c20042003290200370370200441c0006a200441f0006a10930a0c010b0240200441106a2802002205417c6a2201280200220041004a0d00200541706a2106200441c0006a41086a2207200341086a280200360200200420032902003703400240200541746a280200450d0020062802001039200128020021000b20062004290340370200200641086a20072802003602002001200041016a3602000c010b2001200041016a360200200341046a280200450d00200328020010390b20044180016a24000b840503017f047e0a7f230041306b22032400200341206a20012903182001290308852204200241186a2900008542002001290310220520012903002206852207200229001085420010c20a200341106a2004200241086a2900008542002007200229000085420010c20a2003200542002005200341106a41086a2903002003290310857c2005200341206a41086a2903002003290320857c200642adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892204420010c20a200141246a2802002208200141206a2802002209200341086a2903002003290300852004892205a7220a71220b6a280000220c200a41197641818284086c220d73220a417f73200a41fffdfb776a7141808182847871210e200b41046a200971210f4104211002400340200f210a0240200e0d000240200c200c41017471418081828478710d00200d2008200a6a280000220c73220e417f73200e41fffdfb776a7141808182847871210e2009200a20106a41046a71210f201041046a2110200a210b0c020b2000200537030820004201370300200041106a2001360200200041146a20022900003700002000411c6a200241086a290000370000200041246a200241106a2900003700002000412c6a200241186a2900003700000c020b200e682111200a210f200e417f6a200e71210e200841002009200b20114103766a716b41306c6a220a41506a2002412010c60a0d000b2000200537030820004200370300200041186a41013a0000200041146a2001360200200041106a200a360200200041196a2002290000370000200041216a200241086a290000370000200041296a200241106a290000370000200041316a200241186a2900003700000b200341306a24000bde0403027f017e067f230041d0006b2202240020022000280208220336020c20002903002104200241286a200041246a290200370300200241206a2000411c6a290200370300200241106a41086a200041146a290200370300200241386a200141086a2902003703002002200029020c37031020022001290200370330200341206a2105200328022022062004a72207712101200341246a28020021084104210003402001220920006a2006712101200041046a2100200820096a28000041808182847871220a450d000b02402008200a6841037620096a20067122006a2c000022014100480d0020082008280200418081828478716841037622006a2d000021010b200341286a280200210902402001410171220a450d0020090d00200241c0006a20052002410c6a10f909200328022022062007712101200341246a28020021084104210003402001220920006a2006712101200041046a2100200820096a280000418081828478712205450d000b0240200820056841037620096a20067122006a2c00004100480d002008280200418081828478716841037621000b200328022821090b20032009200a6b360228200820006a200741197622013a00002000417c6a20067120086a41046a20013a00002008410020006b41306c6a41506a220041286a200241106a41286a290300370200200041206a200241106a41206a290300370200200041186a200241106a41186a290300370200200041106a200241106a41106a290300370200200041086a200241106a41086a290300370200200020022903103702002003200328022c41016a36022c200241d0006a24000baa0201047f23004180016b22032400024020012000413c6a412010c60a450d00200341c0006a41186a2204200141186a290000370300200341c0006a41106a2205200141106a290000370300200341c0006a41086a2206200141086a2900003703002003200129000037034020032000200341c0006a10920a024020032903004201520d00200341c0006a41286a200341306a290300370300200341c0006a41206a200341286a2903003703002004200341206a2903003703002005200341186a2903003703002006200341106a290300370300200320032903083703402003417f36027c200342003702742003410028029cde4a360270200341c0006a200341f0006a10930a0c010b200341106a280200417c6a22012001280200417f6a3602000b20034180016a24000b880101017f230041206b220324000240024020012000413c6a412010c60a0d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310ed0922010d00410021010c010b200128020c41004a21010b200341206a240020010b1300200041f4bdca00360204200020013602000b950201077f024020002802202201450d00024002402000412c6a2802000d00200141016a21020c010b200041246a2802002203200141016a22026a2104200341046a21012003280200417f7341808182847871210503400240024020050d000340200120044f0d04200341c07e6a210320012802002105200141046a220621012005418081828478712205418081828478460d000b2005418081828478732205417f6a2005712107200621010c010b2005417f6a20057121070b2005682106200721052003410020064103766b41306c6a220641746a280200450d00200641706a2802001039200721050c000b0b200041246a2802002002ad42307ea76b10390b0240200041346a280200450d00200028023010390b0b1300200041f4bdca00360204200020013602000b1300200041053602042000419cbeca003602000bb10201027f230041206b220424000240024002400240024020022001413c6a412010c60a0d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b200210382201450d030b200020023602042000200136020020012005200210c30a1a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410ed092202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b200110382202450d020b200020013602042000200236020020022005200110c30a1a200041086a20013602000c030b1034000b1030000b200041003602000b200441206a24000b880101017f230041206b220324000240024020012000413c6a412010c60a0d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310ed0922010d00410021010c010b200128020c41004a21010b200341206a240020010bfe0101057f0240024002400240200041086a2802002201450d0020014102742102410021032000280200220421050240034020052802000d01200541046a2105200341016a21032002417c6a22020d000b2001417f6a21030b2003450d0020012003490d01200120036b220541ffffffff03712005470d0220054102742202417f4c0d024104210102402002450d00200210382201450d040b2001200420034102746a200541027410c30a2103200241027621020240200041046a28020041ffffffff0371450d00200410390b20002003360200200041086a2005360200200041046a20023602000b0f0b2003200141eccaca00105e000b1034000b1030000b8804030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b200510382207450d0120074100200510c50a1a0b20002007360200200041086a2006360200200020054102763602042004450d022006417f6a2108200341027420022802006a417c6a2109200641027420076a417c6a210a4100210b200141086a210c2004210d024003400240024002400240024002402004200d200b417f736a220e4d0d002001280200200e4102746a220f280200450d05024020030d00410021000c050b420021102003211120092102200a2105200821000340200d200e4d0d02200620004d0d0320052002350200200f3502007e20107c20053502007c22103e02002002417c6a21022005417c6a21052000417f6a2100201042208821102011417f6a2211450d040c000b0b200e200441e8cbca00103c000b200e200d41e8cbca00103c000b2000200641e8cbca00103c000b2010a721000b2006200b20036a417f736a220520064f0d02200720054102746a20003602000b200b41016a220b2004460d04200a417c6a210a2008417f6a2108200c280200210d0c000b0b2005200641f8cbca00103c000b1030000b1034000b0240200141046a28020041ffffffff0371450d00200128020010390b0bc60302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a2802002205200028020c220628020022076b41016a220820054f0d024101200028021428020020076a6b22052000280210220741086a28020022096a220020054f0d0302402002290308220a42ffffffff0f56200a200428020020084102746a3502007e2003290308422086200728020020004102746a35020084567222004101470d0020022802000d052002410036020020022002290308427f7c370308200441086a2802002202200220062802006b22054d0d0620032802000d07200428020020054102746a350200210a200341003602002003200a20032903087c3703080b200141106a240020000f0b41ccccca004118200141086a41e4ccca004184cdca00103d000b41ccccca004118200141086a41e4ccca004194cdca00103d000b2008200541e8cbca00103c000b2000200941e8cbca00103c000b41a4cdca004110200141086a41b4cdca0041c4cdca00103d000b2005200241e8cbca00103c000b41a4cdca004110200141086a41b4cdca0041d4cdca00103d000bda03030a7f017e027f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b200610382208450d0220084100200610c50a1a0b20002008360200200041086a200736020020002006410276360204024020050d00410021000c050b2007417f6a21002004417f6a220920044b210a200741027420086a417c6a210b2002280200210c410021024200210d03404100210602402003417f6a220e20034b0d0041002106200e20026b220f200e4b0d00410021062003200f4d0d002001280200200f4102746a28020021060b4100210e0240200a0d00200920026b220f20094b0d002004200f4d0d00200c200f4102746a280200210e0b200720004d0d03200b200d2006ad7c200ead7c220d3e0200200b417c6a210b2000417f6a2100200d422088210d2005200241016a2202460d040c000b0b1034000b1030000b2000200741f8cbca00103c000b200da721000b024020072005417f736a220620074f0d00200820064102746a20003602000240200141046a28020041ffffffff0371450d00200128020010390b0f0b2006200741f8cbca00103c000ba60203027f027e027f230041206b22022400200241106a41086a2203200141086a28020036020020022001290200370310200241106a109c0a0240024020032802002201410574418101490d00200041cecaca0036020420004101360200200041086a411d3602000c010b0240024020010d0042002104420021050c010b200228021021062001410274417c6a210141002103200241086a2107420021044200210503402002200620016a3502004200200341e0007110c00a200729030020057c2002290300220520047c2204200554ad7c21052001450d01200341206a21032001417c6a21010c000b0b20004100360200200041106a2005370300200041086a20043703000b0240200228021441ffffffff0371450d00200228021010390b200241206a24000b1c0020012802184188b4c00041052001411c6a28020028020c1100000b9d0401027f230041106b22022400024002400240024020002d00000e03010200010b200128021841e8d0ca0041122001411c6a28020028020c11000021010c020b2002200128021841fad0ca0041122001411c6a28020028020c1100003a000820022001360200200241003a000920024100360204410121012002200041016a36020c20022002410c6a418cd1ca00104b1a20022d000821000240200228020422030d00200021010c020b200041ff01710d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b20022001280218419cd1ca00410e2001411c6a28020028020c1100003a000820022001360200200241003a000920024100360204410121012002200041016a220036020c20022002410c6a41acd1ca00104b21032002200036020c20032002410c6a418cd1ca00104b1a20022d000821000240200228020422030d00200021010c010b200041ff01710d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d010b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bc10201027f230041106b22022400200028020021004101210320024280808080104200200128021841a097c30041012001411c6a28020028020c1100001b2001ad843703002002200036020c20022002410c6a41d8d0ca00106f21012002200041016a36020c20012002410c6a41d8d0ca00106f21012002200041026a36020c20012002410c6a41d8d0ca00106f21012002200041036a36020c20012002410c6a41d8d0ca00106f21012002200041046a36020c20012002410c6a41d8d0ca00106f21012002200041056a36020c20012002410c6a41d8d0ca00106f21012002200041066a36020c20012002410c6a41d8d0ca00106f21012002200041076a36020c024020012002410c6a41d8d0ca00106f2d00040d00200228020022002802184198a0c00041012000411c6a28020028020c11000021030b200241106a240020030b9b0101047f230041206b2202240002402001422088a72203450d002001a722042d0000210520022003417f6a36020c2002200441016a360208410021030240024020050e020100020b200241106a200241086a10a50a20022802102203450d01200229021421010b200020013702042000200336020020041039200241206a24000f0b41a1d5ca00412e200241106a41d0d5ca0041e0d5ca00103d000bc60102057f017e230041106b22022400200241086a200110ad0102400240024002402002280208450d00200041003602000c010b024020012802042203200228020c2204490d002004417f4c0d020240024020040d00410121050c010b200410382205450d0420054100200410c50a1a0b200520012802002206200410c30a21052001200320046b3602042001200620046a3602002000200536020020002004ad22074220862007843702040c010b200041003602000b200241106a24000f0b1034000b1030000be40201057f230041106b22022400024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b1034000b200410382205450d0341002106200241003602082002200436020420022005360200024020030d00200541003a00004101210420024101360208200228020021010c030b20040d010b20024100410110810120022802002105200228020821060b200520066a41013a00002002200641016a36020820012802002106200141086a2802002204200210830102402002280204200228020822056b20044f0d00200220052004108101200228020821050b2002280200220120056a2006200410c30a1a2002200520046a22043602080b20002002290300370204200041013602002000410c6a200241086a280200360200200041106a2004ad4220862001ad84370300200241106a24000f0b1030000bb00201067f230041106b220224000240024020012802082203410c6c41046a2204417f4c0d00200128020021010240024020040d00410121050c010b200410382205450d020b200241003602082002200436020420022005360200200320021083010240024020030d0020022802082104200228020021060c010b20012003410c6c6a2107034020012802002105200141086a2802002204200210830102402002280204200228020822036b20044f0d00200220032004108101200228020821030b2002280200220620036a2005200410c30a1a2002200320046a22043602082001410c6a22012007470d000b0b20002002290300370204200041013602002000410c6a200241086a280200360200200041106a2004ad4220862006ad84370300200241106a24000f0b1034000b1030000b8b0301037f230041c0006b22022400200028020021034101210002402001280218220441a39ec000410c2001411c6a280200220128020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042f4f99ee6eea3aaf9fe00520d012002200036020c2002412f36021420022002410c6a360210410121002002413c6a41013602002002420237022c200241b09ec0003602282002200241106a36023820042001200241286a103b0d020c010b2002200036020c2002413036021420022002410c6a360210410121002002413c6a41013602002002420237022c200241b09ec0003602282002200241106a36023820042001200241286a103b0d010b200328020c2100200241106a41146a4102360200200241106a410c6a410236020020022000410c6a3602202002200041086a3602182002410436021420022000360210200241286a41146a41033602002002420337022c200241c09ec0003602282002200241106a36023820042001200241286a103b21000b200241c0006a240020000b5601017f4104210502400240024002400240200041ff0171417f6a0e050001020304000b410021050c030b410121050c020b410221050c010b410321050b20052002ad4220862001ad842004ad4220862003ad84102f0bc40201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002d00002103410021000340200220006a41ff006a2003410f712204413072200441d7006a2004410a491b3a00002000417f6a21002003410476410f7122030d000b20004180016a22034181014f0d02200141d1c5c0004102200220006a4180016a410020006b105321000c010b02402003412071450d0020002d00002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a21002003410476410f7122030d000b20004180016a22034181014f0d03200141d1c5c0004102200220006a4180016a410020006b105321000c010b20003100002001105021000b20024180016a240020000f0b200341800141bc89c000105e000b200341800141bc89c000105e000b180020002802002200280200200041046a2802002001104e0b040041010b9c0301057f230041c0006b220224002002420037020c410021032002410028029cde4a3602082002413036021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241ecddca003602282002200241186a360238200241246a41f4ddca00200241286a103b1a02400240024002400240024002402001280200417f6a0e050102030400010b200141086a280200210441042103200141046a28020021010c040b200141086a2802002104200141046a28020021010c030b200141086a2802002104200141046a28020021012002280210210520022802082106410121030c030b200141086a2802002104200141046a28020021012002280210210520022802082106410221030c020b200141086a2802002104200141046a28020021012002280210210520022802082106410321030c010b20022802102105200228020821060b200220033a0029200241003a002820032004ad4220862001ad842005ad4220862006ad84102f0240200228020c450d00200228020810390b200241c0006a24000b5201027f02402000280200220341046a280200200341086a220428020022006b20024f0d00200320002002108101200428020021000b200328020020006a2001200210c30a1a2004200020026a36020041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f4ddca00200241086a103b2101200241206a240020010bc6010002400240024002400240024020002802002d00000e06010203040500010b20012802184198e2ca0041062001411c6a28020028020c1100000f0b2001280218419ee2ca0041072001411c6a28020028020c1100000f0b200128021841a5e2ca0041082001411c6a28020028020c1100000f0b200128021841ade2ca00410c2001411c6a28020028020c1100000f0b200128021841b9e2ca00410c2001411c6a28020028020c1100000f0b200128021841c5e2ca00410c2001411c6a28020028020c1100000b690002400240024020002802002d00000e03010200010b200128021841d1e2ca00410e2001411c6a28020028020c1100000f0b200128021841dfe2ca0041092001411c6a28020028020c1100000f0b200128021841e8e2ca0041082001411c6a28020028020c1100000b9f0201027f230041106b220224000240024020002802002200280200450d002002200128021841f0e2ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41f4e2ca00104b1a20022d0008210120022802042203450d01200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d004101210120002802184196a0c00041012000411c6a28020028020c1100000d020b2002280200220128021841d3e9c60041012001411c6a28020028020c11000021010c010b20012802184184e3ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470b882251027f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f037e017f027e017f017e017f017e017f027e017f017e017f017e017f017e017f027e017f017e017f017e017f037e017f027e017f017e017f017e017f037e137f230022022103200241a0046b41607122022400200129030021044200210520014200370300200141386a22062903002107200141306a22082903002109200141286a220a290300210b200141206a290300210c20014198016a220d290300210e20014190016a220f290300211020014188016a2211290300211220014180016a2903002113200141d8016a22142903002115200141d0016a22162903002117200141c8016a22182903002119200141c0016a290300211a20014198026a221b290300211c20014190026a221d290300211e20014188026a221f290300212020014180026a2903002121200141f8026a22222903002123200141f0026a22242903002125200141e8026a22262903002127200141e0026a2903002128200141b8036a2229290300212a200141b0036a222b290300212c200141a8036a222d290300212e200141a0036a222f2903002130200141c0036a2231290300213220014180036a2233290300213420014188036a290300213520014190036a2236290300213720014198036a22382903002139200141c0026a223a290300213b200141c8026a290300213c200141d0026a290300213d200141d8026a223e290300213f200141a0026a2903002140200141a8026a22412903002142200141b0026a22432903002144200141b8026a22452903002146200141e0016a2903002147200141e8016a22482903002149200141f0016a224a290300214b200141f8016a224c290300214d200141a0016a224e290300214f200141a8016a2903002150200141b0016a22512903002152200141b8016a22532903002154200141e0006a22552903002156200141e8006a2903002157200141f0006a2903002158200141f8006a2259290300215a200141c0006a290300215b200141c8006a225c290300215d200141d0006a225e290300215f200141d8006a2260290300216120012903082162200129031021632002200141186a226429030037039801200220633703900120022062370388012002200437038001200220613703182002205f3703102002205d3703082002205b3703002002205a37039804200220583703900420022057370388042002205637038004200220543703f803200220523703f003200220503703e8032002204f3703e0032002204d3703d8032002204b3703d003200220493703c803200220473703c003200220463703b803200220443703b003200220423703a803200220403703a0032002203f370398032002203d370390032002203c370388032002203b37038003200220393703f802200220373703f002200220353703e802200220343703e002410a21650240024002400240024002400240024002402004a70e09080102030405060700080b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241e0016a41086a200229038803370300200241e0016a41106a200229039003370300200241d0016a41086a20022903e802370300200220022903c8033703f80120022002290380033703e001200220022903e0023703d001200220022800f102360278200220022800f40236007b200241c8006a41206a202a370300200241c8006a41186a202c370300200241c8006a41106a202e3703002002203037035020022032370370200220393703482037a72165420721050c070b200241c8006a41186a200b370300200241d0006a200229039801370300200241c8006a41206a2009370300200241c8006a41286a20073703002002200c3703582002200228008c0136007b200220022800890136027820022002290390013703482062a721650c060b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241c8006a41086a2002290310370300200241c8006a41106a2002290318370300200241c8006a41286a200229039004370300200241c8006a41206a20022903880437030020022002290388013703c802200220022800013602782002200228000436007b200220022903083703482002200229038004370360205ba72165420121050c050b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241c8006a41186a200e3703002002201337034820022002290388013703c80220022002290380043703b00220022002280099043602782002200228009c0436007b2002201237035020022010370358200241c8006a41286a20022903e803370300200220022903e003370368205aa72165420221050c040b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022800f40336007b200220022800f103360278200241c8006a41186a2017370300200241c8006a41106a2019370300200241c8006a41206a20153703002002201a37035020022047370370200220543703482052a72165420321050c030b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241c8006a41206a201e370300200241c8006a41186a2020370300200241c8006a41086a20022903d803370300200241c8006a41286a201c37030020022021370358200220022800cc0336007b200220022800c903360278200220022903d0033703482049a72165420421050c020b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241c8006a41086a20022903b003370300200241c8006a41106a20022903b803370300200241c8006a41206a200229038803370300200241c8006a41286a200229039003370300200220022903c8033703f801200220022800a103360278200220022800a40336007b200220022903a80337034820022002290380033703602040a72165420521050c010b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241e0016a41086a200229038803370300200241e0016a41106a200229039003370300200241c8006a41186a2023370300200220253703582002202737035020022028370348200220022903c8033703f80120022002290380033703e00120022002280099033602782002200228009c0336007b200241c8006a41286a20022903e802370300200220022903e002370368203fa72165420621050b20024180046a41086a2266200241c8026a41086a29030037030020024180046a41106a2267200241c8026a41106a290300370300200220022903c80237038004200241e0036a41086a2268200241b0026a41086a290300370300200241e0036a41106a2269200241b0026a41106a290300370300200220022903b0023703e00320024180036a41086a226a200241a0026a41086a290300370300200220022903a00237038003200241e0026a41086a226b20024190026a41086a29030037030020022002290390023703e002200241c0036a41106a226c200241f8016a41106a290300370300200241c0036a41086a226d200241f8016a41086a290300370300200220022903f8013703c003200241a0036a41106a226e200241e0016a41106a290300370300200241a0036a41086a226f200241e0016a41086a290300370300200220022903e0013703a003200241386a41086a2270200241d0016a41086a290300370300200220022903d001370338200241306a227120024180016a41306a290300370300200241286a227220024180016a41286a290300370300200241206a227320024180016a41206a290300370300200241186a227420024180016a41186a290300370300200241106a227520024180016a41106a290300370300200241086a227620024180016a41086a2903003703002002200229038001370300200020653a0000200041046a200228007b36000020002002280278360001200041306a200241c8006a41286a290300370000200041286a200241c8006a41206a290300370000200041206a200241c8006a41186a290300370000200041186a200241c8006a41106a290300370000200041106a200241c8006a41086a290300370000200041086a2002290348370000200110af0120602061370300205e205f370300205c205d3703002001205b3703402006200737030020082009370300200a200b3703002001200c370320200d200e370300200f2010370300201120123703002001201337038001200120053703002059205a3703002001200229038004370308200141106a206629030037030020642067290300370300205520022903e003370300205541086a2068290300370300205541106a2069290300370300204e200229038003370300204e41086a206a290300370300200120473703e0012014201537030020162017370300201820193703002001201a3703c001204520463703002043204437030020412042370300200120403703a002201b201c370300201d201e370300201f202037030020012021370380022053206b290300370300205120022903e002370300204820022903c003370300204a206d290300370300204c206c290300370300200120283703e002202620273703002024202537030020222023370300203e203f370300203a41106a206e290300370300203a41086a206f290300370300203a20022903a003370300203341086a2070290300370300203320022903383703002031207129030037030020292072290300370300202b2073290300370300202d2074290300370300202f20752903003703002038207629030037030020362002290300370300200324000b970401017f410021010240024002400240024002400240024002402000280200417f6a0e080001020304050607080b20002d0008450f0b20002d00080d0641014102200041c0006a2d00001b0f0b20002d00080d0541012101200041c0006a2d00000d0541024103200041f8006a2d00001b0f0b20002d00080d0441012101200041c0006a2d00000d0441022101200041f8006a2d00000d0441034104200041b0016a2d00001b0f0b20002d00080d0341012101200041c0006a2d00000d0341022101200041f8006a2d00000d0341032101200041b0016a2d00000d0341044105200041e8016a2d00001b0f0b20002d00080d0241012101200041c0006a2d00000d0241022101200041f8006a2d00000d0241032101200041b0016a2d00000d0241042101200041e8016a2d00000d0241054106200041a0026a2d00001b0f0b20002d00080d0141012101200041c0006a2d00000d0141022101200041f8006a2d00000d0141032101200041b0016a2d00000d0141042101200041e8016a2d00000d0141052101200041a0026a2d00000d0141064107200041d8026a2d00001b21010c010b20002d00080d0041012101200041c0006a2d00000d0041022101200041f8006a2d00000d0041032101200041b0016a2d00000d0041042101200041e8016a2d00000d0041052101200041a0026a2d00000d0041062101200041d8026a2d00000d004107410820004190036a2d00001b0f0b20010bfe0101027f41002102024020002d0000220320012d0000470d00410121020240024002400240024002402003417f6a0e06000102030405060b4101210220034101470d05200041086a290300200141086a29030085200041106a290300200141106a2903008584500f0b20034102470d0420002800012001280001460f0b20034103470d0320002900012001290001510f0b20034104470d02200041016a200141016a411010c60a450f0b20034105470d01200041016a200141016a412010c60a450f0b20034106470d00410021022000410c6a28020022032001410c6a280200470d00200041046a280200200141046a280200200310c60a4521020b20020b8b0b010a7f230041b0086b2203240020012802002104200128020422052f01ae2b210620034188046a20052001280208220741f8036c6a220141f80310c30a1a2001200141f8036a20062007417f736a41f8036c10c40a1a20052006417f6a22013b01ae2b200341106a20034188046a41f80310c30a1a0240200141ffff037141044b0d0002400240024020052802a82b2206450d00200441016a21080240024020052f01ac2b22090d0020062f01ae2b0d012003419c046a41013602002003420137028c04200341bcfaca0036028804200341043602940820034198f4ca0036029008200320034190086a3602980420034188046a41a0f4ca001043000b024020062009417f6a22094102746a41b02b6a280200220a2f01ae2b200141ffff03716a41016a410b4b0d00200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4101200710db010c040b200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110dc012003200741016a360288080c020b0240200141ffff0371200941027420066a41b42b6a28020022012f01ae2b6a41016a410b4b0d00200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4100200710db010c030b200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110dd010b20032007360288080b200320053602840820032004360280080b2003280288082107200328028008210420032802840822052802a82b2201450d0020012f01ae2b220841044b0d00200441016a21060240034020012802a82b2209450d01200841ffff03712108200641016a210b024002400240024020012f01ac2b220a0d0020092f01ae2b0d012003419c046a41013602002003420137028c04200341bcfaca0036028804200341043602940820034198f4ca0036029008200320034190086a3602980420034188046a41a0f4ca001043000b2009200a417f6a220c4102746a41b02b6a280200210a200320013602a808200320063602a4082003200a3602a0082003200636029c082003200c3602980820032009360294082003200b3602900802402008200a2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200341086a20034188046a10de01200328020c2101200328020821060c030b20034190086a410520086b10dc010c010b2003200a41027420096a41b42b6a280200220c3602a808200320063602a408200320013602a0082003200636029c082003200a3602980820032009360294082003200b3602900802402008200c2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200320034188046a10de0120032802042101200328020021060c020b20034190086a410520086b10dd010b410021010b2001450d0220012f01ae2b220841044d0d000c020b0b200841ffff03710d00200241013a00000b2000200341106a41f80310c30a22014180046a2007360200200141fc036a2005360200200120043602f803200341b0086a24000bd80402077f047e200341d1036a2104034020022f01ae2b210520022106410021070240024003400240200722082005470d00200521080c030b02402003200610ea01220941ff01710d00024002400240024002400240024020032d00d003220920062d00d0032207470d002009417f6a0e06060102030405090b417f410120092007491b21090c060b20094102470d072004200641d1036a410410c60a2209450d07417f410120094100481b21090c050b20094103470d062004200641d1036a410810c60a2209450d06417f410120094100481b21090c040b20094104470d052004200641d1036a411010c60a2209450d05417f410120094100481b21090c030b20094105470d042004200641d1036a412010c60a2209450d04417f410120094100481b21090c020b20094106470d03024020032802d403200641d4036a280200200641dc036a280200220920032802dc032207200720094b1b10c60a220a0d00417f200720094720072009491b21090c020b417f4101200a4100481b21090c010b20094101470d02417f20032903d803220b20062903d803220c85200341e0036a290300220d200641e0036a290300220e8584420052200b200c54200d200e54200d200e511b1b21090b200841016a2107200641f8036a2106200941ff01714101460d000b200941187441187541016a0e020100010b20002001360204200041003602002000410c6a2008360200200041086a20023602000f0b02402001450d002001417f6a2101200220084102746a41b02b6a28020021020c010b0b200042013702002000410c6a2008360200200041086a20023602000b952f01017f230041d00a6b22022400024020002802000d00200041086a2100024002400240024002400240024002400240024020012802000e09010203040506070800010b200241c8036a200141086a10d10320024180046a200141c0006a10d103200241b8046a200141f8006a10d103200241f0046a200141b0016a10d103200241a8056a200141e8016a10d103200241e0056a200141a0026a10d10320024198066a200141d8026a10d103200241d0066a20014190036a10d103200241c0076a200241c8036a41306a29030037030020024188076a41306a200241c8036a41286a29030037030020024188076a41286a200241c8036a41206a29030037030020024188076a41206a200241c8036a41186a29030037030020024188076a41186a200241c8036a41106a29030037030020024188076a41106a200241c8036a41086a29030037030020024188076a41c0006a200229038004370300200241d0076a20024180046a41086a290300370300200241d8076a20024180046a41106a290300370300200241e0076a20024180046a41186a290300370300200241e8076a20024180046a41206a290300370300200241f0076a20024180046a41286a290300370300200241f8076a20024180046a41306a290300370300200220022903c80337039007200241b0086a200241b8046a41306a290300370300200241a8086a200241b8046a41286a290300370300200241a0086a200241b8046a41206a29030037030020024198086a200241b8046a41186a29030037030020024190086a200241b8046a41106a29030037030020024188086a200241b8046a41086a29030037030020024188076a41f8006a20022903b804370300200241e8086a200241f0046a41306a290300370300200241e0086a200241f0046a41286a290300370300200241d8086a200241f0046a41206a290300370300200241d0086a200241f0046a41186a290300370300200241c8086a200241f0046a41106a290300370300200241c0086a200241f0046a41086a29030037030020024188076a41b0016a20022903f004370300200241a0096a200241a8056a41306a29030037030020024198096a200241a8056a41286a29030037030020024190096a200241a8056a41206a29030037030020024188096a200241a8056a41186a29030037030020024180096a200241a8056a41106a290300370300200241f8086a200241a8056a41086a29030037030020024188076a41e8016a20022903a805370300200241d8096a200241e0056a41306a290300370300200241d0096a200241e0056a41286a290300370300200241c8096a200241e0056a41206a290300370300200241c0096a200241e0056a41186a290300370300200241b8096a200241e0056a41106a290300370300200241b0096a200241e0056a41086a29030037030020024188076a41a0026a20022903e005370300200241900a6a20024198066a41306a290300370300200241880a6a20024198066a41286a290300370300200241800a6a20024198066a41206a290300370300200241f8096a20024198066a41186a290300370300200241f0096a20024198066a41106a290300370300200241e8096a20024198066a41086a29030037030020024188076a41d8026a200229039806370300200241c80a6a200241d0066a41306a290300370300200241c00a6a200241d0066a41286a290300370300200241b80a6a200241d0066a41206a290300370300200241b00a6a200241d0066a41186a290300370300200241a80a6a200241d0066a41106a290300370300200241a00a6a200241d0066a41086a29030037030020024188076a4190036a20022903d00637030020024208370388070c080b20024200370388070c070b200241d0066a200141086a10d103200241c0076a200241d0066a41306a29030037030020024188076a41306a200241d0066a41286a29030037030020024188076a41286a200241d0066a41206a29030037030020024188076a41206a200241d0066a41186a29030037030020024188076a41186a200241d0066a41106a29030037030020024188076a41106a200241d0066a41086a2903003703002002420137038807200220022903d006370390070c060b20024198066a200141086a10d103200241d0066a200141c0006a10d103200241c0076a20024198066a41306a29030037030020024188076a41306a20024198066a41286a29030037030020024188076a41286a20024198066a41206a29030037030020024188076a41206a20024198066a41186a29030037030020024188076a41186a20024198066a41106a29030037030020024188076a41106a20024198066a41086a29030037030020024188076a41c0006a20022903d006370300200241d0076a200241d0066a41086a290300370300200241d8076a200241d0066a41106a290300370300200241e0076a200241d0066a41186a290300370300200241e8076a200241d0066a41206a290300370300200241f0076a200241d0066a41286a290300370300200241f8076a200241d0066a41306a29030037030020022002290398063703900720024202370388070c050b200241e0056a200141086a10d10320024198066a200141c0006a10d103200241d0066a200141f8006a10d103200241c0076a200241e0056a41306a29030037030020024188076a41306a200241e0056a41286a29030037030020024188076a41286a200241e0056a41206a29030037030020024188076a41206a200241e0056a41186a29030037030020024188076a41186a200241e0056a41106a29030037030020024188076a41106a200241e0056a41086a29030037030020024188076a41c0006a200229039806370300200241d0076a20024198066a41086a290300370300200241d8076a20024198066a41106a290300370300200241e0076a20024198066a41186a290300370300200241e8076a20024198066a41206a290300370300200241f0076a20024198066a41286a290300370300200241f8076a20024198066a41306a290300370300200220022903e00537039007200241b0086a200241d0066a41306a290300370300200241a8086a200241d0066a41286a290300370300200241a0086a200241d0066a41206a29030037030020024198086a200241d0066a41186a29030037030020024190086a200241d0066a41106a29030037030020024188086a200241d0066a41086a29030037030020024188076a41f8006a20022903d00637030020024203370388070c040b200241a8056a200141086a10d103200241e0056a200141c0006a10d10320024198066a200141f8006a10d103200241d0066a200141b0016a10d103200241c0076a200241a8056a41306a29030037030020024188076a41306a200241a8056a41286a29030037030020024188076a41286a200241a8056a41206a29030037030020024188076a41206a200241a8056a41186a29030037030020024188076a41186a200241a8056a41106a29030037030020024188076a41106a200241a8056a41086a29030037030020024188076a41c0006a20022903e005370300200241d0076a200241e0056a41086a290300370300200241d8076a200241e0056a41106a290300370300200241e0076a200241e0056a41186a290300370300200241e8076a200241e0056a41206a290300370300200241f0076a200241e0056a41286a290300370300200241f8076a200241e0056a41306a290300370300200220022903a80537039007200241b0086a20024198066a41306a290300370300200241a8086a20024198066a41286a290300370300200241a0086a20024198066a41206a29030037030020024198086a20024198066a41186a29030037030020024190086a20024198066a41106a29030037030020024188086a20024198066a41086a29030037030020024188076a41f8006a200229039806370300200241e8086a200241d0066a41306a290300370300200241e0086a200241d0066a41286a290300370300200241d8086a200241d0066a41206a290300370300200241d0086a200241d0066a41186a290300370300200241c8086a200241d0066a41106a290300370300200241c0086a200241d0066a41086a29030037030020024188076a41b0016a20022903d00637030020024204370388070c030b200241f0046a200141086a10d103200241a8056a200141c0006a10d103200241e0056a200141f8006a10d10320024198066a200141b0016a10d103200241d0066a200141e8016a10d103200241c0076a200241f0046a41306a29030037030020024188076a41306a200241f0046a41286a29030037030020024188076a41286a200241f0046a41206a29030037030020024188076a41206a200241f0046a41186a29030037030020024188076a41186a200241f0046a41106a29030037030020024188076a41106a200241f0046a41086a29030037030020024188076a41c0006a20022903a805370300200241d0076a200241a8056a41086a290300370300200241d8076a200241a8056a41106a290300370300200241e0076a200241a8056a41186a290300370300200241e8076a200241a8056a41206a290300370300200241f0076a200241a8056a41286a290300370300200241f8076a200241a8056a41306a290300370300200220022903f00437039007200241b0086a200241e0056a41306a290300370300200241a8086a200241e0056a41286a290300370300200241a0086a200241e0056a41206a29030037030020024198086a200241e0056a41186a29030037030020024190086a200241e0056a41106a29030037030020024188086a200241e0056a41086a29030037030020024188076a41f8006a20022903e005370300200241e8086a20024198066a41306a290300370300200241e0086a20024198066a41286a290300370300200241d8086a20024198066a41206a290300370300200241d0086a20024198066a41186a290300370300200241c8086a20024198066a41106a290300370300200241c0086a20024198066a41086a29030037030020024188076a41b0016a200229039806370300200241a0096a200241d0066a41306a29030037030020024198096a200241d0066a41286a29030037030020024190096a200241d0066a41206a29030037030020024188096a200241d0066a41186a29030037030020024180096a200241d0066a41106a290300370300200241f8086a200241d0066a41086a29030037030020024188076a41e8016a20022903d00637030020024205370388070c020b200241b8046a200141086a10d103200241f0046a200141c0006a10d103200241a8056a200141f8006a10d103200241e0056a200141b0016a10d10320024198066a200141e8016a10d103200241d0066a200141a0026a10d103200241c0076a200241b8046a41306a29030037030020024188076a41306a200241b8046a41286a29030037030020024188076a41286a200241b8046a41206a29030037030020024188076a41206a200241b8046a41186a29030037030020024188076a41186a200241b8046a41106a29030037030020024188076a41106a200241b8046a41086a29030037030020024188076a41c0006a20022903f004370300200241d0076a200241f0046a41086a290300370300200241d8076a200241f0046a41106a290300370300200241e0076a200241f0046a41186a290300370300200241e8076a200241f0046a41206a290300370300200241f0076a200241f0046a41286a290300370300200241f8076a200241f0046a41306a290300370300200220022903b80437039007200241b0086a200241a8056a41306a290300370300200241a8086a200241a8056a41286a290300370300200241a0086a200241a8056a41206a29030037030020024198086a200241a8056a41186a29030037030020024190086a200241a8056a41106a29030037030020024188086a200241a8056a41086a29030037030020024188076a41f8006a20022903a805370300200241e8086a200241e0056a41306a290300370300200241e0086a200241e0056a41286a290300370300200241d8086a200241e0056a41206a290300370300200241d0086a200241e0056a41186a290300370300200241c8086a200241e0056a41106a290300370300200241c0086a200241e0056a41086a29030037030020024188076a41b0016a20022903e005370300200241a0096a20024198066a41306a29030037030020024198096a20024198066a41286a29030037030020024190096a20024198066a41206a29030037030020024188096a20024198066a41186a29030037030020024180096a20024198066a41106a290300370300200241f8086a20024198066a41086a29030037030020024188076a41e8016a200229039806370300200241d8096a200241d0066a41306a290300370300200241d0096a200241d0066a41286a290300370300200241c8096a200241d0066a41206a290300370300200241c0096a200241d0066a41186a290300370300200241b8096a200241d0066a41106a290300370300200241b0096a200241d0066a41086a29030037030020024188076a41a0026a20022903d00637030020024206370388070c010b20024180046a200141086a10d103200241b8046a200141c0006a10d103200241f0046a200141f8006a10d103200241a8056a200141b0016a10d103200241e0056a200141e8016a10d10320024198066a200141a0026a10d103200241d0066a200141d8026a10d103200241c0076a20024180046a41306a29030037030020024188076a41306a20024180046a41286a29030037030020024188076a41286a20024180046a41206a29030037030020024188076a41206a20024180046a41186a29030037030020024188076a41186a20024180046a41106a29030037030020024188076a41106a20024180046a41086a29030037030020024188076a41c0006a20022903b804370300200241d0076a200241b8046a41086a290300370300200241d8076a200241b8046a41106a290300370300200241e0076a200241b8046a41186a290300370300200241e8076a200241b8046a41206a290300370300200241f0076a200241b8046a41286a290300370300200241f8076a200241b8046a41306a290300370300200220022903800437039007200241b0086a200241f0046a41306a290300370300200241a8086a200241f0046a41286a290300370300200241a0086a200241f0046a41206a29030037030020024198086a200241f0046a41186a29030037030020024190086a200241f0046a41106a29030037030020024188086a200241f0046a41086a29030037030020024188076a41f8006a20022903f004370300200241e8086a200241a8056a41306a290300370300200241e0086a200241a8056a41286a290300370300200241d8086a200241a8056a41206a290300370300200241d0086a200241a8056a41186a290300370300200241c8086a200241a8056a41106a290300370300200241c0086a200241a8056a41086a29030037030020024188076a41b0016a20022903a805370300200241a0096a200241e0056a41306a29030037030020024198096a200241e0056a41286a29030037030020024190096a200241e0056a41206a29030037030020024188096a200241e0056a41186a29030037030020024180096a200241e0056a41106a290300370300200241f8086a200241e0056a41086a29030037030020024188076a41e8016a20022903e005370300200241d8096a20024198066a41306a290300370300200241d0096a20024198066a41286a290300370300200241c8096a20024198066a41206a290300370300200241c0096a20024198066a41186a290300370300200241b8096a20024198066a41106a290300370300200241b0096a20024198066a41086a29030037030020024188076a41a0026a200229039806370300200241900a6a200241d0066a41306a290300370300200241880a6a200241d0066a41286a290300370300200241800a6a200241d0066a41206a290300370300200241f8096a200241d0066a41186a290300370300200241f0096a200241d0066a41106a290300370300200241e8096a200241d0066a41086a29030037030020024188076a41d8026a20022903d00637030020024207370388070b2002200020024188076a10ae0820022903004209510d0020024188076a200241c80310c30a1a20024188076a10af010b200241d00a6a24000b9003000240024020002802000d0002400240024002400240024002400240200041086a2802000e080900010203040506070b200041106a10ee080f0b200041106a10ee08200041c8006a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee08200041b8016a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee08200041b8016a10ee08200041f0016a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee08200041b8016a10ee08200041f0016a10ee08200041a8026a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee08200041b8016a10ee08200041f0016a10ee08200041a8026a10ee08200041e0026a10ee080f0b200041106a10ee08200041c8006a10ee0820004180016a10ee08200041b8016a10ee08200041f0016a10ee08200041a8026a10ee08200041e0026a10ee0820004198036a10ee080f0b200041086a280200450d00200028020410390b0be512030d7f027e067f230041a00e6b22032400200041d8036a28020021040240024002400240024002400240024002400240024002400240024002400240024002400240200041d4036a28020022052f01a6292206410a4b0d002005200441d0036c6a2107200441016a220820064d0d012007200041d00310c30a1a200541f0276a21070c020b410521064100210902400240200441054f0d0041042106200421070c010b41052107024002402004417b6a0e020201000b200441796a210741012109410621060c010b41002107410121090b20002802d003210a41a8291038220b450d05200b41003b01a629200b41003602a029200b20052f01a629220c2006417f736a22043b01a6292005200641d0036c6a2208280204210d2008280200210e200341d80a6a200841086a41c80310c30a1a2004410c4f0d06200c200641016a22086b2004470d07200541f0276a220f20064104746a220c41086a2903002110200c2903002111200b2005200841d0036c6a200441d0036c10c30a220c41f0276a200f20084104746a200441047410c30a1a200520063b01a62920034190076a200341d80a6a41c80310c30a1a200c200520091b2204200741d0036c6a210602400240200741016a220920042f01a62922084d0d002006200041d00310c30a1a200441f0276a21060c010b2004200941d0036c6a2006200820076b220f41d0036c10c40a1a2006200041d00310c30a1a200441f0276a220620094104746a200620074104746a200f41047410c40a1a0b200620074104746a22122002370308201220013703002004200841016a3b01a629200341c8036a20034190076a41c80310c30a1a2003200341c8036a41c80310c30a210f20052802a02922040d024100210a0c030b2005200841d0036c6a2007200620046b220c41d0036c10c40a1a2007200041d00310c30a1a200541f0276a220720084104746a200720044104746a200c41047410c40a1a0b200720044104746a22122002370308201220013703002005200641016a3b01a6290c0e0b201121012010210241002107200c2113200d2114200e2115034020042109200a2007470d0620052f01a429210820092f01a6292216410b490d024100210c41042105024020084105490d0020082105024002402008417b6a0e020201000b200841796a21084101210c410621050c010b410021084101210c410521050b41d8291038220b450d03200b41003b01a629200b41003602a029200b20092f01a62922172005417f736a22043b01a6292009200541d0036c6a2206280204210d2006280200210e200f41d80a6a200641086a41c80310c30a1a2004410c4f0d072017200541016a22076b2004470d08200941f0276a221720054104746a220641086a290300211020062903002111200b2009200741d0036c6a200441d0036c10c30a220641f0276a201720074104746a200441047410c30a1a200920053b01a629200f4190076a200f41d80a6a41c80310c30a1a20062f01a629220441016a21172004410c4f0d09201620056b22052017470d0a200a41016a210a200641a8296a200920074102746a41a8296a200541027410c30a1a4100210502400340200620054102746a41a8296a280200220720053b01a429200720063602a029200520044f0d01200520052004496a220520044d0d000b0b200f41c8036a200f4190076a41c80310c30a1a20062009200c1b22072f01a6292105200f41d80a6a200f41c80310c30a1a0240200841016a220420054b22170d002007200441d0036c6a2007200841d0036c6a200520086b41d0036c10c40a1a0b2007200841d0036c6a220c2014360204200c2015360200200c41086a200f41d80a6a41c80310c30a1a200741f0276a2116024020170d00201620044104746a201620084104746a200520086b41047410c40a1a0b200541016a210c201620084104746a2216200237030820162001370300200741a8296a21160240200841026a2215200541026a22144f0d00201620154102746a201620044102746a200520086b41027410c40a1a0b201620044102746a20133602002007200c3b01a6290240200420144f0d00200720084102746a41ac296a2105034020052802002204200841016a22083b01a429200420073602a029200541046a2105200c2008470d000b0b200f200f41c8036a41c80310c30a1a201121012010210220092105200a210720062113200d2114200e211520092802a02922040d000b0b200f41d80a6a200f41c80310c30a1a20002802dc0322042802042206450d092004280200210741d82910382205450d01200520063602a829200541003b01a629200541003602a02920042005360204200641003b01a429200620053602a0292004200741016a3602002007200a470d0a20052f01a6292206410b4f0d0b2005200641016a22073b01a6292005200641d0036c6a2208200d3602042008200e360200200841086a200f41d80a6a41c80310c30a1a200520064104746a220641f8276a2010370300200641f0276a2011370300200541a8296a20074102746a200b360200200b20073b01a429200b20053602a0292004200428020841016a3602080c0d0b200f41d80a6a200f41c80310c30a1a0240201620084d0d002009200841d0036c6a220541d0036a2005201620086b41d0036c10c40a1a0b201641016a21062009200841d0036c6a2205201436020420052015360200200541086a200f41d80a6a41c80310c30a1a200941f0276a220720084104746a2104200841016a210502400240201620084b0d002004200137030020042002370308200941a8296a2104201641026a21070c010b200720054104746a2004201620086b220741047410c40a1a20042002370308200420013703002008410274200941a8296a22046a41086a200420054102746a200741027410c40a1a201641026a21070b2004200541027422086a2013360200200920063b01a629200520074f0d0b200820096a41a8296a210403402004280200220620053b01a429200620093602a029200441046a21042007200541016a2205470d000c0c0b0b1030000b2004410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b41c0f3ca00413541f8f3ca001035000b2004410b41f8f2ca001055000b4188f3ca00412841b0f3ca001035000b2017410c4188f4ca001055000b4188f3ca00412841b0f3ca001035000b41b4fcca00412b41e0fcca001035000b41c0f0ca00413041f0f0ca001035000b4180f1ca00412041a0f1ca001035000b20002802dc032205200528020841016a3602080b200341a00e6a240020120b910402087f037e230041b0076b220524000240024020012802042206450d00200128020021070340200641e0276a210820062f01a629220941d0036c2101417f210a2006210b02400340024020010d002009210a0c020b200a41016a210a200841106a2108200141b07c6a21012002200b10ea01210c200b41d0036a210b200c41ff01714101460d000b0240200c41187441187541016a0e020100010b2008290300220d20037d220e200d56200841086a290300220f20047d200d200354ad7d220d200f56200d200f511b0d022008200e3703002008200d370308200241086a290200210d0240024020022802004101470d00200228020421014108210b2003210f2004210e0c010b200241186a290200210e200241106a290200210f200541086a200241206a41b00310c30a1a410a210b0b200041146a4200370200200041086a4200370200200541d0036a200e370300200541c8036a200f370300200541b8036a41086a200d370300200520013602bc032005200b3602b803200541d8036a200541086a41b00310c30a1a20054190076a200437030020054188076a2003370300200041046a200541b8036a10b508200041003602000c030b2007450d012007417f6a21072006200a4102746a41a8296a28020021060c000b0b20004101360200024020022802000d00200241086a10af010c010b200241086a280200450d00200228020410390b200541b0076a24000bca0a01057f23004180146b220424002004200241d00310c30a220241f0036a200341206a290300370300200241e8036a200341186a290300370300200241e0036a200341106a290300370300200241d8036a200341086a290300370300200220032903003703d003024002400240200141106a2802002205450d00200241f0076a200128020c22062005200210b70a20022802f0074101460d00200241fc076a2802002103200241f8076a280200210720022802f4072104200241003a008708024002402004450d00200720034102746a41b02b6a280200210302402004417f6a2204450d000340200320032f01ae2b4102746a41b02b6a28020021032004417f6a22040d000b0b20032f01ae2b2104200241003602881020022004417f6a410020041b3602901020022003410020041b36028c10200241800c6a20024188106a20024187086a10b60a20024188086a200241800c6a41f80310c30a1a20022802f80f21040240024020024180106a2802002207200241fc0f6a28020022082f01ae2b4f0d00200821030c010b200821030340024020032802a82b22030d00410021030c020b200441016a210420082f01ac2b210720032108200720032f01ae2b4f0d000b0b20024188106a2003200741f8036c6a220841f80310c30a1a200820024188086a41f80310c30a1a02402004450d002004417f6a2204450d00200741027420036a41b42b6a2802002103034020032802b02b21032004417f6a22040d000b0b200241800c6a20024188106a41f80310c30a1a0c010b20022003360290102002200736028c102002410036028810200241800c6a20024188106a20024187086a10b60a0b20022802800c2103200241fc036a200241800c6a41047241f40310c30a1a200141146a22042004280200417f6a360200024020022d008708450d002006450d03200120052802b02b220436021020012006417f6a36020c200441003602a82b200510390b20034102460d00200220033602800c200241800c6a410472200241fc036a41f40310c30a1a200241800c6a10b90a024020022d00d00f4106490d00200241d80f6a280200450d00200241d40f6a28020010390b200241d0036a210320022802002104200241800c6a2002410472220741cc0310c30a1a0240024020044101470d0020024188106a41086a200741086a2802003602002002419c106a200341086a290200370200200241a4106a200341106a290200370200200241ac106a200341186a290200370200200241b4106a200341206a29020037020020022007290200370388102002200329020037029410410921030c010b20024188106a41046a200241800c6a41046a41c80310c30a1a20024188086a41206a200341206a29030037030020024188086a41186a200341186a29030037030020024188086a41106a200341106a29030037030020024188086a41086a200341086a2903003703002002200329030037038808410b21030b200041146a4200370200200041086a4200370200200220033602800c200241800c6a41047220024188106a41cc0310c30a1a200241f00f6a200241a8086a290300370300200241e80f6a200241a0086a290300370300200241e00f6a20024198086a290300370300200241d80f6a20024188086a41086a290300370300200241d00f6a200229038808370300200041046a200241800c6a10b508200041003602000c010b200041013602000240024020022802000d00200241086a10af010c010b200241086a280200450d00200228020410390b20022d00d0034106490d00200241d8036a280200450d00200241d4036a28020010390b20024180146a24000f0b41c5f2ca00412141e8f2ca001035000bb706020b7f037e230041a00b6b220324000240024020012802042204450d0020042105200128020022062107034020052f01a629220841d0036c21094100210a41a429210b417f210c0240034002402009200a470d002008210c0c020b2005200a6a210d200c41016a210c200b41046a210b200a41d0036a210a2002200d10ea01220d41ff01714101460d000b0240200d41187441187541016a0e020100010b200341003a000f024002402007450d002005200b6a280200210a024020074101460d004101210c0340200a200a2f01a6294102746a41a8296a280200210a2007200c41016a220c470d000b0b200a2f01a629210c200341003602d0072003200c417f6a4100200c1b3602d8072003200a4100200c1b3602d407200341e0036a200341d0076a2003410f6a10df01200341106a200341e0036a41d00310c30a1a200341b8076a290300210e20032903b007210f20032802c007210d02400240200341c8076a280200220b200341c4076a280200220c2f01a6294f0d00200c210a0c010b03400240200c2802a029220a0d004100210a0c020b200d41016a210d200c2f01a429210b200a210c200b200a2f01a6294f0d000b0b200341d0076a200a200b41d0036c6a220c41d00310c30a1a200c200341106a41d00310c30a1a200a200b4104746a220c41f0276a220529030021102005200f370300200c41f8276a220c290300210f200c200e3703000240200d450d00200d417f6a220c450d00200b410274200a6a41ac296a280200210a0340200a2802a829210a200c417f6a220c0d000b0b200341e0036a200341d0076a41d00310c30a1a200341b8076a200f370300200320103703b0070c010b2003200c3602d807200320053602d407200341003602d007200341e0036a200341d0076a2003410f6a10df010b2000200341e0036a41e00310c30a1a20012001280208417f6a36020820032d000f450d0302402006450d00200120042802a829220a36020420012006417f6a360200200a41003602a029200410390c040b41c5f2ca00412141e8f2ca001035000b02402007450d002007417f6a21072005200c4102746a41a8296a28020021050c010b0b200041023602000c010b200041023602000b200341a00b6a24000ba80302087f017e230041b0076b22042400200441d0036a200141d00310c30a1a02400240024020002802042205450d00200028020021060c010b41a82910382205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b02400340200541e0276a210720052f01a629220841d0036c2101417f21092005210a02400340024020010d00200821090c020b200941016a2109200741106a2107200141b07c6a2101200441d0036a200a10ea01210b200a41d0036a210a200b41ff01714101460d000b0240200b41187441187541016a0e020100010b200441d0036a10b90a20072003370308200720023703000c020b02402006450d002006417f6a2106200520094102746a41a8296a28020021050c010b0b200441d8036a2201280200210a20042903d003210c2004410c6a200441dc036a220741c40310c30a1a2001200a3602002004200c3703d00320072004410c6a41c40310c30a1a200441a8076a2009360200200441a4076a2005360200200420003602ac07200441003602a007200441d0036a2002200310ba0a1a0b200441b0076a24000f0b1030000bb30e03027f017e1f7f23004190106b2203240020004200370204200041106a4200370200200341086a41086a200141146a2802002204360200200129020c2105200141106a420037020020032005370308200341980c6a41086a2004360200200320053703980c200341186a200341980c6a10b20820032802182106200328021c210702400240200328023022080d00200721040c010b0240024002402007450d0002402003280220220920072f01ae2b4f0d00200721042006210a0c020b03400240024020072802a82b22040d00410021040c010b200641016a210a20072f01ac2b21090b024041e02b41b02b20061b450d00200710390b024020040d00410221060c040b20042107200a2106200920042f01ae2b490d020c000b0b41b4fcca00412b41e4f8ca001035000b200941016a210b2004200941f8036c6a21070240200a450d002004200b4102746a41b02b6a28020021040240200a417f6a2206450d00034020042802b02b21042006417f6a22060d000b0b4100210b0b20072802002106200341980c6a200741046a41f40310c30a1a0b2001410c6a210c2000410c6a210d200341386a200341980c6a41f40310c30a1a200241c8006a210e20024198036a210f200241e0026a2110200241a8026a2111200241f0016a2112200241b8016a211320024180016a2114200241106a2115200341980c6a41d0036a2100200341ac046a41cc036a2101200341a0086a4104722116200341a0086a41c8006a2117200341a0086a4198036a2118200341a0086a41e0026a2119200341a0086a41a8026a211a200341a0086a41f0016a211b200341a0086a41b8016a211c200341a0086a4180016a211d200341a0086a41106a211e2002280200211f0340200341ac046a200341386a41f40310c30a1a200320063602a0082016200341386a41cc0310c30a1a200341f00b6a41206a2207200141206a2220290200370300200341f00b6a41186a2209200141186a2221290200370300200341f00b6a41106a220a200141106a2222290200370300200341f00b6a41086a2223200141086a2224290200370300200320012902003703f00b2008417f6a2108024002402006201f470d0002400240024002400240024002400240201f0d0020032802a80822062002280208470d0802400240024002400240024002402006417f6a0e0808000102030405060e0b201e201510ee04450d0e2017200e10ee040d0d0c0e0b201e201510ee04450d0d2017200e10ee04450d0d201d201410ee040d0c0c0d0b201e201510ee04450d0c2017200e10ee040d0a0c0c0b201e201510ee04450d0b2017200e10ee04450d0b201d201410ee040d080c0b0b201e201510ee04450d0a2017200e10ee040d060c0a0b201e201510ee04450d092017200e10ee04450d09201d201410ee040d040c090b201e201510ee04450d082017200e10ee04450d08201d201410ee040d020c080b20032802ac082206200228020c470d0720032802a4082002280204200610c60a0d070c060b201e201510ee040d050c060b201c201310ee04450d05201b201210ee04450d05201a201110ee04450d052019201010ee04450d052018200f10ee040d040c050b201c201310ee04450d04201b201210ee04450d04201a201110ee04450d042019201010ee040d030c040b201d201410ee04450d03201c201310ee04450d03201b201210ee04450d03201a201110ee040d020c030b201c201310ee04450d02201b201210ee040d010c020b201d201410ee04450d01201c201310ee04450d010b200341980c6a200341a0086a41d00310c30a1a200041206a2020290200370200200041186a2021290200370200200041106a2022290200370200200041086a202429020037020020002001290200370200200d200341980c6a10a1090c010b200341980c6a200341a0086a41d00310c30a1a200041206a2007290300370300200041186a2009290300370300200041106a200a290300370300200041086a2023290300370300200020032903f00b370300200c200341980c6a10a1090b024020080d00410021060c020b02402004450d000240024002400240200b20042f01ae2b490d0041002107034041002106024020042802a82b220a450d00200741016a210920042f01ac2b210b200a21060b024041e02b41b02b20071b450d00200410390b024020060d00410221060c050b2006210420092107200b20062f01ae2b4f0d000b2006200b41f8036c6a2107024020090d00200621040c020b200b41027420066a41b42b6a280200210402402009417f6a2206450d00034020042802b02b21042006417f6a22060d000b0b4100210b0c020b2004200b41f8036c6a21070b200b41016a210b0b20072802002106200341980c6a200741046a41f40310c30a1a0b200341386a200341980c6a41f40310c30a1a0c010b0b41b4fcca00412b41e4f8ca001035000b02402004450d00034020042802a82b2107024041e02b41b02b20061b450d00200410390b200641016a21062007210420070d000b0b20034190106a24000b5801017e02400240200341c00071450d0020012003413f71ad862102420021010c010b2003450d0020022003413f71ad2204862001410020036b413f71ad88842102200120048621010b20002001370300200020023703080b3c01017f230041206b220524002005200120022003200410c80a200529031021012000200541186a29030037030820002001370300200541206a24000b6e01067e2000200342ffffffff0f832205200142ffffffff0f8322067e22072003422088220820067e22062005200142208822097e7c22054220867c220a3703002000200820097e200420017e200320027e7c7c2005200654ad4220862005422088847c200a200754ad7c3703080b3601017f02402002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b6f01017f02400240200020016b20024f0d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000c020b0b2002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5801017e02400240200341c00071450d0020022003413f71ad882101420021020c010b2003450d002002410020036b413f71ad8620012003413f71ad220488842101200220048821020b20002001370300200020023703080baa0604017f017e017f057e230041206b22052400024002400240024002400240024002402004500d00420021062001200354200220045420022004511b0d052002500d05200541106a20032004200479a7200279a76b220741ff007110c00a42012007413f71ad862108200541186a29030021092005290310210a4200210603402001200a7d210b0240200220097d2001200a54ad7d220c4200530d0020062008842106200b20035a200c20045a200c2004511b450d03200b2101200c21020b200a4201882009423f8684210a20084201882108200942018821090c000b0b4200210c024020024200520d0020012001200380220620037e7d21010c060b0240200220035a0d0020052003200441c000200279a7200379a76b22076b413f20071b220741ff007110c00a42012007413f71ad86210c200541086a290300210a200529030021094200210b034002402002200a7d2001200954ad7d22084200530d00200120097d2101200c200b84210b20084200510d04200821020b2009420188200a423f86842109200c420188210c200a420188210a0c000b0b20022003510d0320022002200380220820037e7d210c0240200342ffffffff0f560d00200c422086200142208884220a200a200380220a20037e7d422086200142ffffffff0f838422092009200380220920037e7d2101200a4220862009842106200a42208820088421084200210c0c070b0240200120035a200c20045a200c2004511b0d00420021060c070b2004423f86200342018884210a2003423f862109428080808080808080807f21024200210403400240200c200a7d2001200954ad7d220b4200530d00200120097d210120022004842104200b4200510d04200b210c0b2009420188200a423f8684210920024201882102200a420188210a0c000b0b42002108200b21010c050b2001200380220a200b8421062001200a20037e7d21014200210c0c030b2001200380220a20048421062001200a20037e7d21014200210c0c030b20012001200280220620027e7d21014200210c420121080c020b2002210c0b420021080b2000200137031020002006370300200041186a200c37030020002008370308200541206a24000b3c01017f230041206b220524002005200120022003200410c80a200529030021012000200541086a29030037030820002001370300200541206a24000b0bcbfe0a0300418080c0000b9cfe0a100010001c00000030020000050000006c6962726172792f616c6c6f632f7372632f7261775f7665632e7273c00010004b0000005c010000130000003100000004000000040000003200000033000000340000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f720031000000000000000100000035000000a800100018000000470200001c0000006c6962726172792f616c6c6f632f7372632f666d742e72732f72757374632f636138323236346563373535366136303131623964336631623266643463376364306263386165322f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730050011000160000006601100016000000d3b4110001000000340110001c000000110500000d0000006c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273737761705f72656d6f766520696e6465782028697320292073686f756c64206265203c206c656e2028697320a401100014000000b801100017000000d3b4110001000000340110001c000000390500000d000000696e73657274696f6e20696e6465782028697320292073686f756c64206265203c3d206c656e202869732000f8011000120000006601100016000000d3b4110001000000340110001c000000690500000d00000072656d6f76616c20696e646578202869732000003402100015000000b801100017000000d3b4110001000000340110001c000000520700000d000000606174602073706c697420696e646578202869732047656e50726f6f66466f72496e76616c69644c6561766573476574526f6f744f6e456d707479496e636f6e73697374656e7453746f726553746f72654572726f72000031000000040000000400000036000000436f7272757074656450726f6f660000cc02100020000000ec0210001200000031000000000000000100000037000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000d803100010000000e80310002200000072616e676520656e6420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468205b2e2e2e5d00700410000b000000760e100016000000af04100001000000540e10000e000000620e100004000000660e100010000000af04100001000000700410000b0000007b04100026000000a104100008000000a904100006000000af041000010000006279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f66206060b8041000020000002e2e0000ee0410001b0000006500000014000000dc04100012000000e80310002200000072616e676520737461727420696e646578206c6962726172792f636f72652f7372632f666d742f6e756d2e727300010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff0900720a1000250000000a0000001c000000ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d00720a1000250000001a000000360000000006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a84066c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e727300a80a100016000000be0a10000d000000736c69636520696e64657820737461727473206174202062757420656e647320617420000003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf552c0e100028000000520000003e00000000700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f0000000002c0e1000280000004b000000280000002c0e10002800000057000000160000006c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f6620603d3d0000d00e100019000000e90e100012000000fb0e10000c000000af04100001000000d00e100019000000e90e100012000000fb0e10000c000000070f100003000000617373657274696f6e206661696c65643a2060286c6566742020726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20426f72726f774572726f72426f72726f774d75744572726f7270616e69636b65642061742000590f1000010000005a0f100003000000f4ae120000000000580f100001000000580f1000010000003a27272c2020202020000000840f1000200000003200000021000000840f10002000000033000000120000006c6962726172792f636f72652f7372632f666d742f6275696c646572732e7273b40f1000200000005a000000050000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273207b202c20207b0a310000000c0000000400000038000000390000003a0000002c0a00003100000004000000040000003b0000003c0000003d0000007d207d28280a2c0a5d617373657274696f6e206661696c65643a202a63757272203e203139000000ee0410001b000000e601000005000000681010001b0000001908000016000000681010001b000000120800001e0000006c6962726172792f636f72652f7372632f666d742f6d6f642e727330620000009810100065000000420000000d0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f66696e616c6974792d6772616e6470612d302e31342e302f7372632f6269746669656c642e72730000009810100065000000550000000900000073756274726168656e64203e206d696e75656e643b207165640000000ced100066000000af0000003300000000010200ba111000260000006672616d655f737570706f72743a3a686173682f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f737570706f72742f7372632f686173682e7273496e76616c696420726576657273653a2068617368206c656e67746820746f6f2073686f7274310000000100000001000000130000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f73797374656d2f7372632f6c696d6974732e72734275696c6465722066696e6973686564207769746820606275696c645f6f725f70616e6963603b205468652070616e69632069732065787065637465642069662072756e74696d65207765696768747320617265206e6f7420636f7272656374f011100060000000aa010000160000003a636f6465000000f4ae12000000000000000000ffffffff010000000000000082800000000000008a8000000000008000800080000000808b800000000000000100008000000000818000800000008009800000000000808a00000000000000880000000000000009800080000000000a000080000000008b800080000000008b0000000000008089800000000000800380000000000080028000000000008080000000000000800a800000000000000a0000800000008081800080000000808080000000000080010000800000000008800080000000803100000000000000010000003e0000003f000000400000003100000000000000010000003e0000003f0000004000000001a8010001605354524f424576312e302e320000ec13100058000000680000000d0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6d65726c696e2d322e302e302f7372632f7374726f62652e72731a15100019000000331510001600000000000000200000000400000002000000000000000200000000000000030000000100000020000000040000000200000000000000020000000000000003000000ec13100058000000880000000d000000dc1410003e000000ec131000580000009100000009000000ec131000580000005e00000009000000ec131000580000005f00000009000000596f75207573656420746865205420666c61672c207768696368207468697320696d706c656d656e746174696f6e20646f65736e277420737570706f7274596f7520747269656420746f20636f6e74696e7565206f702020627574206368616e67656420666c61677320746f20000000ec131000580000007c000000150000003100000004000000040000004100000000000000f01510000e000000000000000016100001000000000000000000000008161000010000000000000000000000101610000600000000000000f4ae120000000000000000000000000018161000010000000000000000000000201610000700000000000000f4ae12000000000000000000000000002816100001000000000000004e6577417574686f7269746965730000b51610000d0000007f1610003600000050617573656400005816100027000000526573756d65640030161000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d417574686f726974794c697374000000000000f01610000700000000000000f81610000200000000000000000000000817100003000000000000004f6666656e6365006080100004000000648010000e0000002017100055000000751710004e000000c31710001400000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e205c5b6b696e642c2074696d65736c6f745c5d2e53746f72656452616e6765000000000000101810000a000000000000001c1810000100000000000000000000002418100002000000000000004e657753657373696f6e0000db9912000c00000034181000590000008d18100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e00000000000819100010000000000000001819100002000000000000000000000028191000020000000000000000000000381910000e00000000000000f4ae12000000000000000000000000004819100001000000000000004261746368496e7465727275707465647b6a1200030000002e6312000d0000008319100056000000d9191000240000004261746368436f6d706c6574656400005019100033000000204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e205c5b696e6465782c206572726f725c5d436f646563206572726f724572726f72000000261a10001f00000072756e74696d653a3a6265656679496e76616c6964204245454659205075626c69634b657920666f726d617421000000e81a1000220000001c1c100031000000bf12120003000000d3b4110001000000ef1b10002d000000bf12120003000000d3b4110001000000b21b10003d000000d3b41100010000003d1b10001a0000008d1b100023000000b01b1000020000003d1b10001a000000571b100036000000bf12120003000000d3b4110001000000e81a1000220000000a1b100033000000bf12120003000000d3b411000100000073656e64696e67207468652048524d50206d65737361676520617420696e6465782020776f756c642065786365656420746865206e656f6769746961746564206368616e6e656c20746f74616c2073697a652020287468652048524d50206d65737361676520617420696e64657820206578636565647320746865206e65676f746961746564206368616e6e656c206d6178696d756d206d6573736167652073697a6520282069732073656e7420746f2061206e6f6e206578697374656e74206368616e6e656c202d3e7468652048524d50206d6573736167657320617265206e6f7420736f727465642028666972737420756e736f7274656420697320617420696e646578206d6f72652048524d50206d65737361676573207468616e207065726d697474656420627920636f6e666967202820776f756c642065786365656420746865206e656f6769746961746564206368616e6e656c20636170616369747920202800000000000000d41c10001400000000000000e81c1000040000000000000000000000081d1000020000000000000000000000181d10001300000000000000244112000200000000000000000000002c1d1000010000000000000000000000341d10000d00000000000000441d1000020000000000000000000000541d100001000000000000004f70656e4368616e6e656c526571756573746564104212000600000010421200060000007b6a1200030000007b6a120003000000c01d10001d000000dd1d1000480000004f70656e4368616e6e656c4163636570746564008e1d1000320000004368616e6e656c436c6f736564000000104212000600000000e611000d0000005c1d1000320000002048524d50206368616e6e656c20636c6f7365642e205c5b62795f70617261636861696e2c206368616e6e656c5f69645c5d204f70656e2048524d50206368616e6e656c2061636365707465642e205c5b73656e6465722c20726563697069656e745c5d204f70656e2048524d50206368616e6e656c207265717565737465642e205c5b73656e6465722c20726563697069656e742c2070726f706f7365645f6d61785f63617061636974792c2070726f706f7365645f6d61785f6d6573736167655f73697a655c5d000000321f100046000000bf12120003000000d3b4110001000000031f10002f000000bf12120003000000d3b4110001000000ce1e100013000000e11e100022000000bf12120003000000d3b4110001000000901e10003e000000bf12120003000000d3b411000100000074686520756d7020717565756520776f756c642068617665206d6f7265206974656d73207468616e207065726d697474656420627920636f6e6669672028757077617264206d6573736167652069647820206c6172676572207468616e207065726d697474656420627920636f6e66696720286d6f726520757077617264206d65737361676573207468616e207065726d697474656420627920636f6e666967202874686520756d7020717565756520776f756c6420686176652067726f776e207061737420746865206d61782073697a65207065726d697474656420627920636f6e666967202800000000542010001200000000000000684012000100000000000000000000006820100001000000000000000000000070201000120000000000000068401200010000000000000000000000842010000100000000000000000000008c201000140000000000000068401200010000000000000000000000a0201000010000000000000000000000a82010000c0000000000000068401200010000000000000000000000b4201000010000000000000000000000bc2010000c00000000000000c8201000020000000000000000000000d8201000010000000000000043757272656e74436f6465557064617465640000c12110003600000043757272656e74486561645570646174656400008b21100036000000436f6465557067726164655363686564756c6564512110003a0000004e6577486561644e6f7465641f21100032000000416374696f6e5175657565641042120006000000db9912000c000000e02010003f0000002041207061726120686173206265656e2071756575656420746f20657865637574652070656e64696e6720616374696f6e732e205c5b706172615f69645c5d2041206e6577206865616420686173206265656e206e6f74656420666f72206120506172612e205c5b706172615f69645c5d204120636f6465207570677261646520686173206265656e207363686564756c656420666f72206120506172612e205c5b706172615f69645c5d2043757272656e74206865616420686173206265656e207570646174656420666f72206120506172612e205c5b706172615f69645c5d2043757272656e7420636f646520686173206265656e207570646174656420666f72206120506172612e205c5b706172615f69645c5d000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f000000a97911004b0000004c000000210000009a2210001e000000b8221000190000006422100036000000444d51206973206e6f7420656d7074792c206275742070726f6365737365645f646f776e776172645f6d65737361676573206973203070726f6365737365645f646f776e776172645f6d65737361676573203d202c2062757420646d715f6c656e677468206973206f6e6c7920307800d122100002000000000000002000000004000000020000000000000002000000000000000300000000000000200000000800000002000000000000000000000002000000030000002423100003000000e280a600b0b812009500000069020000090000000000000068231100110000000000000070231000010000000000000000000000782310000a00000000000000842310000100000000000000af231000240000004c656173654572726f7200008c231000230000002054686572652077617320616e206572726f72207769746820746865206c656173652e205468652070617261636861696e204944206973206e6f74206f6e626f617264696e672e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74732f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f736c6f74732e727370616c6c65745f6272696467655f6772616e6470613a3a70616c6c65742f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f627269646765732f6d6f64756c65732f6772616e6470612f7372632f6c69622e72730000000000b42510001400000000000000c8251000010000000000000000000000d02510001300000000000000e4251000010000000000000000000000ec2510000f00000000000000fc25100001000000000000000000000004261000090000000000000010261000010000000000000000000000182610000d0000000000000028261000010000000000000000000000302610001a000000000000004c261000030000000000000000000000642610000e000000000000007426100001000000000000000000000070be110012000000000000007c2610000100000000000000000000008426100006000000000000008c261000010000000000000000000000942610001300000000000000a82610000100000000000000496e76616c69644a757374696669636174696f6e0629100039000000496e76616c6964417574686f7269747953657400c72810003f000000546f6f4d616e79526571756573747300892810003e0000004f6c644865616465720000003228100057000000556e6b6e6f776e4865616465720000000d28100025000000556e737570706f727465645363686564756c65644368616e676500007227100055000000f4ae120000000000c7271000460000004e6f74496e697469616c697a656400004f27100023000000262710002900000048616c7465640000042710002200000053746f72616765526f6f744d69736d6174636800b026100054000000205468652073746f726167652070726f6f6620646f65736e277420636f6e7461696e732073746f7261676520726f6f742e20536f20697420697320696e76616c696420666f7220676976656e206865616465722e20416c6c2070616c6c6574206f7065726174696f6e73206172652068616c7465642e205468652070616c6c65742068617320616c7265616479206265656e20696e697469616c697a65642e205468652070616c6c6574206973206e6f742079657420696e697469616c697a65642e20546865207363686564756c656420617574686f7269747920736574206368616e676520666f756e6420696e207468652068656164657220697320756e737570706f72746564206279207468652070616c6c65742e205468697320697320746865206361736520666f72206e6f6e2d7374616e646172642028652e6720666f726365642920617574686f7269747920736574206368616e6765732e205468652068656164657220697320756e6b6e6f776e20746f207468652070616c6c65742e2054686520686561646572206265696e6720696d706f72746564206973206f6c646572207468616e2074686520626573742066696e616c697a656420686561646572206b6e6f776e20746f207468652070616c6c65742e2054686572652061726520746f6f206d616e7920726571756573747320666f72207468652063757272656e742077696e646f7720746f2068616e646c652e2054686520617574686f72697479207365742066726f6d2074686520756e6465726c79696e672068656164657220636861696e20697320696e76616c69642e2054686520676976656e206a757374696669636174696f6e20697320696e76616c696420666f722074686520676976656e206865616465722e4c6561736573000000f1231000430000006601000018000000f1231000430000006701000019000000747269676765725f6f6e626f617264636c6561725f616c6c5f6c6561736573666f7263655f6c656173657365745f6f7065726174696f6e616c7365745f6f776e6572696e697469616c697a657375626d69745f66696e616c6974795f70726f6f660000000d2c100021000000c12b100017000000d82b1000260000009e2b10002300000010ab120002000000632b100020000000832b100004000000872b100017000000fd2a1000300000002d2b100001000000c22a10003b000000a92a100019000000912a100018000000762a10001b0000005b2a10001b00000072756e74696d653a3a6272696467652d6772616e64706153746f7070696e672070616c6c6574206f7065726174696f6e732e526573756d696e672070616c6c6574206f7065726174696f6e732e52656d6f766564204f776e6572206f662070616c6c65742e53657474696e672070616c6c6574204f776e657220746f3a2050616c6c657420686173206265656e20696e697469616c697a656420776974682074686520666f6c6c6f77696e6720706172616d65746572733a2053756363657366756c6c7920696d706f727465642066696e616c697a6564206865616465722077697468206861736820210000402b100014000000542b1000010000005072756e696e67206f6c64206865616465723a202e496d706f727465644861736865735472616e736974696f6e65642066726f6d20617574686f72697479207365742020746f2021204e657720617574686f726974696573206172653a20526563656976656420696e76616c6964206a757374696669636174696f6e20666f722043616e6e6f742066696e616c697a65206865616465722020626563617573652070616c6c6574206973206e6f742079657420696e697469616c697a6564496d706f7274656448656164657273476f696e6720746f2074727920616e642066696e616c697a6520686561646572200000fb2c10002b000000d62c1000250000006672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61702f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f737570706f72742f7372632f73746f726167652f67656e657261746f722f6d61702e7273496e76616c6964207472616e736c6174653a206661696c20746f206465636f6465206b6579496e76616c6964207472616e736c6174653a206661696c20746f206465636f6465206f6c642076616c75654a757374207075736865643b2070656e64696e672e6c656e2829203e20303b2072656a69675f6465706f7369742072657475726e7320536f6d653b207165640000007d9210005c000000900100001d000000c02d100036000000882d1000380000004c6f676963206572726f723a204163636f756e7420616c72656164792064656164207768656e207265647563696e672070726f76696465724c6f676963206572726f723a20556e657870656374656420756e646572666c6f7720696e207265647563696e672070726f76696465720000002e1000360000004c6f676963206572726f723a20556e657870656374656420756e646572666c6f7720696e207265647563696e6720636f6e73756d6572000000000000b42910001500000000000000e82e1000020000000000000000000000182f1000070000000000000000000000aa2910000a00000000000000502f1000010000000000000000000000682f1000090000000000000000000000a12910000900000000000000b02f1000010000000000000000000000c82f1000030000000000000000000000922910000f00000000000000e02f1000010000000000000000000000f82f1000030000000000000000000000213410000f00000000000000303410001300000000000000433410000d000000000000005034100029000000cd3210004b000000f4ae12000000000018331000510000006933100057000000f4ae120000000000c0331000590000001934100008000000000000009632100009000000000000009f3210002e0000009830100059000000f4ae120000000000f1301000590000004a31100059000000a331100017000000f4ae120000000000ba311000570000001132100056000000673210002f000000000000008f30100009000000000000009dd61100140000007930100016000000f4ae1200000000003630100038000000000000006e3010000b00000000000000d1781200040000001030100026000000f4ae12000000000036301000380000002048616c74206f7220726573756d6520616c6c2070616c6c6574206f7065726174696f6e732e204d6179206f6e6c792062652063616c6c65642065697468657220627920726f6f742c206f72206279206050616c6c65744f776e6572602e6f7065726174696f6e616c204368616e6765206050616c6c65744f776e6572602e6e65775f6f776e657220426f6f74737472617020746865206272696467652070616c6c6574207769746820616e20696e697469616c2068656164657220616e6420617574686f72697479207365742066726f6d20776869636820746f2073796e632e2054686520696e697469616c20636f6e66696775726174696f6e2070726f766964656420646f6573206e6f74206e65656420746f206265207468652067656e6573697320686561646572206f6620746865206272696467656420636861696e2c2069742063616e20626520616e79206172626972617279206865616465722e20596f752063616e20616c736f2070726f7669646520746865206e657874207363686564756c656420736574206368616e676520696620697420697320616c7265616479206b6e6f772e20546869732066756e6374696f6e206973206f6e6c7920616c6c6f77656420746f2062652063616c6c65642066726f6d20612074727573746564206f726967696e20616e642077726974657320746f2073746f7261676520776974682070726163746963616c6c79206e6f20636865636b7320696e207465726d73206f66207468652076616c6964697479206f662074686520646174612e20497420697320696d706f7274616e74207468617420796f7520656e7375726520746861742076616c69642064617461206973206265696e672070617373656420696e2e696e69745f6461746173757065723a3a496e697469616c697a6174696f6e446174613c427269646765644865616465723c542c20493e3e20566572696679206120746172676574206865616465722069732066696e616c697a6564206163636f7264696e6720746f2074686520676976656e2066696e616c6974792070726f6f662e2049742077696c6c207573652074686520756e6465726c79696e672073746f726167652070616c6c657420746f20666574636820696e666f726d6174696f6e2061626f7574207468652063757272656e7420617574686f72697469657320616e6420626573742066696e616c697a65642068656164657220696e206f7264657220746f20766572696679207468617420746865206865616465722069732066696e616c697a65642e204966207375636365737366756c20696e20766572696669636174696f6e2c2069742077696c6c20777269746520746865207461726765742068656164657220746f2074686520756e6465726c79696e672073746f726167652070616c6c65742e66696e616c6974795f746172676574427269646765644865616465723c542c20493e6a757374696669636174696f6e4772616e6470614a757374696669636174696f6e3c427269646765644865616465723c542c20493e3e00000000000000441412000c00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200dc3710000000000000000000ec37100007000000000000000100000000000000151412000b00000000000000000000002438100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12003c38100000000000000000004c38100001000000000000000100000000000000a81312000d00000000000000000000002438100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12003c38100000000000000000005438100001000000000000000100000000000000552b10000e00000001060000000000007b6a120003000000000000002438100016000000000000000000000000000000000000000000000000000000f4ae12005c38100000000000000000006c38100001000000000000000000000000000000851312001500000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200dc37100000000000000000007438100001000000000000000100000000000000fe2b10000f00000001060000000000002438100016000000000000003034100013000000000000000000000000000000000000000000000000000000f4ae12007c38100000000000000000008c3810000100000000000000000000000000000064131200130000000000000000000000943810001d000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200b43810000000000000000000c438100001000000000000000100000000000000fd1212000b0000000000000000000000137612000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200cc3810000000000000000000dc381000060000000000000000000000000000001a131200080000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12000c39100000000000000000001c39100001000000000000000100000031000000000000000100000042000000a83b10003e000000f4ae120000000000e63b10005c000000423c100023000000f4ae120000000000653c10005a000000bf3c10002a00000042726964676564426c6f636b486173683c542c20493e000031000000000000000100000043000000773b100031000000543b10002300000031000000000000000100000044000000133b100041000000f53a10001e00000031000000000000000100000044000000c33a10003200000062705f6865616465725f636861696e3a3a417574686f7269747953657400000031000000000000000100000045000000a03a100023000000310000000000000001000000440000005d39100017000000f4ae1200000000007439100054000000c8391000520000001a3a100058000000723a10002e00000031000000000000000100000046000000243910003900000020496620747275652c20616c6c2070616c6c6574207472616e73616374696f6e7320617265206661696c656420696d6d6564696174656c792e204f7074696f6e616c2070616c6c6574206f776e65722e2050616c6c6574206f776e657220686173206120726967687420746f2068616c7420616c6c2070616c6c6574206f7065726174696f6e7320616e64207468656e20726573756d652069742e20496620697420697320604e6f6e65602c207468656e20746865726520617265206e6f20646972656374207761797320746f2068616c742f726573756d652070616c6c6574206f7065726174696f6e732c20627574206f746865722072756e74696d65206d6574686f6473206d6179207374696c6c206265207573656420746f20646f20746861742028692e652e2064656d6f63726163793a3a7265666572656e64756d20746f207570646174652068616c7420666c6167206469726563746c79206f722063616c6c20746865206068616c745f6f7065726174696f6e7360292e205468652063757272656e74204752414e44504120417574686f72697479207365742e20486561646572732077686963682068617665206265656e20696d706f7274656420696e746f207468652070616c6c65742e2043757272656e742072696e672062756666657220706f736974696f6e2e20412072696e6720627566666572206f6620696d706f72746564206861736865732e204f7264657265642062792074686520696e73657274696f6e2074696d652e2048617368206f662074686520626573742066696e616c697a6564206865616465722e2048617368206f662074686520686561646572207573656420746f20626f6f747374726170207468652070616c6c65742e205468652063757272656e74206e756d626572206f662072657175657374732077686963682068617665207772697474656e20746f2073746f726167652e20496620746865206052657175657374436f756e7460206869747320604d61785265717565737473602c206e6f206d6f72652063616c6c732077696c6c20626520616c6c6f77656420746f207468652070616c6c657420756e74696c20746865207265717565737420636170616369747920697320696e637265617365642e20546865206052657175657374436f756e746020697320646563726561736564206279206f6e652061742074686520626567696e6e696e67206f6620657665727920626c6f636b2e205468697320697320746f20656e737572652074686174207468652070616c6c65742063616e20616c77617973206d616b652070726f67726573732e000000000000005c3d10000b000000000000007b6a12000300000000000000f4ae1200683d10000000000000000000783d1000060000000000000000000000a83d10000d000000000000007b6a12000300000000000000f4ae1200b83d10000000000000000000c83d100005000000000000004d6178526571756573747300310000000000000001000000470000001d3f100041000000f4ae1200000000005e3f100040000000f4ae1200000000009e3f100054000000f23f10002700000048656164657273546f4b65657000000031000000000000000100000048000000f03d10003c000000f4ae1200000000002c3e10004e0000007a3e100051000000cb3e100052000000204d6178696d616c206e756d626572206f662066696e616c697a6564206865616465727320746f206b65657020696e207468652073746f726167652e205468652073657474696e6720697320746865726520746f2070726576656e742067726f77696e6720746865206f6e2d636861696e20737461746520696e646566696e6974656c792e204e6f7465207468652073657474696e6720646f6573206e6f742072656c61746520746f20626c6f636b206e756d62657273202d2077652077696c6c2073696d706c79206b656570206173206d756368206974656d7320696e207468652073746f726167652c20736f20697420646f65736e27742067756172616e74656520616e792066697865642074696d656672616d6520666f722066696e616c69747920686561646572732e2054686520757070657220626f756e64206f6e20746865206e756d626572206f6620726571756573747320616c6c6f776564206279207468652070616c6c65742e204120726571756573742072656665727320746f20616e20616374696f6e2077686963682077726974657320612068656164657220746f2073746f726167652e204f6e6365207468697320626f756e642069732072656163686564207468652070616c6c65742077696c6c206e6f7420616c6c6f7720616e7920646973706174636861626c657320746f2062652063616c6c656420756e74696c20746865207265717565737420636f756e7420686173206465637265617365642e000000000000005c3d10000b000000000000007b6a12000300000000000000f4ae12008c4010000000000000000000783d1000060000000000000000000000a83d10000d000000000000007b6a12000300000000000000f4ae12009c4010000000000000000000c83d10000500000000000000310000000000000001000000470000003100000000000000010000004800000000000000872910000b0000000000000030411000050000000000000000000000a8411000040000000000000000000000772910001000000000000000d0e21100010000000000000000000000c8411000030000000000000000000000682910000f00000000000000d0e21100010000000000000000000000e041100007000000000000000000000044e5110004000000000000001042120006000000000000003b4410000600000000000000137612000c00000000000000a46511000600000000000000935412000c00000000000000414410000c000000000000004d44100010000000000000005d4410000c000000000000004d44100010000000a74310005b0000000244100039000000f4ae120000000000fd4c1100270000005343100054000000f4ae120000000000fd4c110027000000184210004a000000f4ae1200000000006242100052000000b44210004f000000034310001c000000f4ae1200000000001f431000340000002054727920746f206f6e626f61726420612070617261636861696e2074686174206861732061206c6561736520666f72207468652063757272656e74206c6561736520706572696f642e20546869732066756e6374696f6e2063616e2062652075736566756c2069662074686572652077617320736f6d6520737461746520697373756520776974682061207061726120746861742073686f756c642068617665206f6e626f61726465642c206275742077617320756e61626c6520746f2e204173206c6f6e67206173207468657920686176652061206c6561736520706572696f642c2077652063616e206c6574207468656d206f6e626f6172642066726f6d20686572652e204f726967696e206d757374206265207369676e65642c206275742063616e2062652063616c6c656420627920616e796f6e652e20436c65617220616c6c206c656173657320666f72206120506172612049642c20726566756e64696e6720616e79206465706f73697473206261636b20746f20746865206f726967696e616c206f776e6572732e204a757374206120686f747769726520696e746f2074686520606c656173655f6f7574602063616c6c2c20696e206361736520526f6f742077616e747320746f20666f72636520736f6d65206c6561736520746f2068617070656e20696e646570656e64656e746c79206f6620616e79206f74686572206f6e2d636861696e206d656368616e69736d20746f207573652069742e6c6561736572706572696f645f626567696e4c65617365506572696f644f663c543e706572696f645f636f756e74000000000000003f291000060000000105000000000000104212000600000000000000cc44100029000000000000000000000000000000000000000000000000000000f4ae1200f84410000000000000000000084510001000000000000000010000005665633c4f7074696f6e3c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e3e000000310000000000000001000000490000008845100045000000f4ae120000000000cd45100066000000334610003c000000f4ae1200000000006f46100058000000c74610002c000000f4ae120000000000f3461000580000004b4710002d000000f4ae1200000000007847100054000000cc471000580000002448100057000000f4ae1200000000007b4810003700000020416d6f756e74732068656c64206f6e206465706f73697420666f7220656163682028706f737369626c792066757475726529206c65617365642070617261636861696e2e205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620627920616e79206163636f756e7420617420616e792074696d6520697320746865206d6178696d756d206f6620746865207365636f6e642076616c756573206f6620746865206974656d7320696e2074686973206c6973742077686f73652066697273742076616c756520697320746865206163636f756e742e20546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572206578697374656429206173206661722061732074686973206d6f64756c6520697320636f6e6365726e65642e20496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e2069742077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f726520604e6f6e65607320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e20497420697320696c6c6567616c20666f72206120604e6f6e65602076616c756520746f20747261696c20696e20746865206c6973742e000000000000575c11000b00000000000000d97612000e00000000000000f4ae1200ec4810000000000000000000f4ae120000000000000000003100000000000000010000004a00000000000000544910000e00000000000000644910000100000000000000000000006c4910000100000000000000000000007449100006000000000000007c491000060000000000000000000000ac49100003000000000000004e65774c65617365506572696f640000575c11000b000000164a1000230000004c656173656400001042120006000000ad62120009000000575c11000b000000575c11000b000000d595120007000000d595120007000000e05d110031000000115e110050000000c449100052000000205c5b70617261636861696e5f69642c206c65617365722c20706572696f645f626567696e2c20706572696f645f636f756e742c2065787472615f726573657665642c20746f74616c5f616d6f756e745c5d2041206e6577205b6c656173655f706572696f645d20697320626567696e6e696e672e000000310000000400000004000000410000005772617070696e67206f66667365742063616e6e6f742070726f6475636520746865206e756c6c20706f696e746572008c4a10005e000000a90000000e0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7074722f616464726573732e72730000e94b10001c000000cd4b10001c0000009b4b10001a000000b54b1000180000007f4b10000a000000894b100012000000674b100018000000514b100016000000344b10001d0000004661696c656420746f206665746368206e6574776f726b2073746174654661696c656420746f2061637175697265206c6f636b4661696c656420746f207369676e20686561727462656174417574686f726974792020697320616c7265616479206f6e6c696e6548656172746265617420616c72656164792073656e74206174202e2057616974696e6720666f7220696e636c7573696f6e2e546f6f206561726c7920746f2073656e64206865617274626561742e4661696c656420746f207375626d6974207472616e73616374696f6e000000184c100086000000f0060000240000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000a97911004b0000000b0200001500000070726f78795f616e6e6f756e63656472656a6563745f616e6e6f756e63656d656e7472656d6f76655f616e6e6f756e63656d656e74616e6e6f756e63656b696c6c5f616e6f6e796d6f7573616e6f6e796d6f757372656d6f76655f70726f7869657372656d6f76655f70726f78796164645f70726f787970726f78793c4d10005f000000870000000f0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6f6666656e6365732f7372632f6c69622e727370616c6c65745f70726f78793a3a70616c6c657470616c6c65745f78636d3a3a70616c6c6574706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d702f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f646d702e727370616c6c65745f6f6666656e6365733a3a70616c6c6574726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f726f636f636f2f7372632f76616c696461746f725f6d616e616765722e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e742f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f70617261735f696e686572656e742e7273e14d1000450000005b0000000100000046696c746572656453656e644661696c757265556e726561636861626c65556e776569676861626c654d65737361676500000000c04f10000900000000000000cc4f1000010000000000000000000000f4ae1200000000000000000000000000d44f10000400000000000000d84f1000030000000000000000000000f4ae12000000000000000000417474656d70746564000000045010001000000053656e74f04f10000d000000f04f10000d000000fd4f1000070000004d756c74694c6f636174696f6e58636d3c28293e78636d3a3a76303a3a4f7574636f6d6500000000c45010000400000000000000c8501000020000000000000000000000f4ae1200000000000000000000000000f85010000f0000000000000008511000040000000000000000000000685110000b0000000000000000000000c0511000170000000000000008511000040000000000000000000000d85110000c0000000000000000000000b6a81100070000000000000038521000020000000000000000000000685210000b0000000000000073656e6400000000953911000400000000000000f04f10000d00000000000000cdb012000700000000000000fd4f10000700000074656c65706f72745f6173736574730000000000953911000400000000000000f04f10000d00000000000000625810000b00000000000000f04f10000d000000000000006d5810000600000000000000735810000f00000000000000825810000b000000000000000797120006000000d357100045000000f4ae120000000000425510004b0000008d55100064000000f1551000570000004856100063000000ab5610001a000000c556100062000000275710000f0000003657100048000000185810004a000000726573657276655f7472616e736665725f61737365747300c8541000660000002e55100014000000f4ae120000000000425510004b0000008d55100064000000f1551000570000004856100063000000ab5610001a000000c556100062000000275710000f00000036571000480000007e5710005500000000000000cdb012000700000000000000ad5410001100000000000000be5410000a000000000000000797120006000000c052100035000000f4ae120000000000f552100054000000495310000b000000f4ae120000000000545310005c000000b0531000570000000754100016000000f4ae1200000000001d5410005c0000007954100034000000204578656375746520616e2058434d206d6573736167652066726f6d2061206c6f63616c2c207369676e65642c206f726967696e2e20416e206576656e74206973206465706f736974656420696e6469636174696e67207768657468657220606d73676020636f756c6420626520657865637574656420636f6d706c6574656c79206f72206f6e6c79207061727469616c6c792e204e6f206d6f7265207468616e20606d61785f776569676874602077696c6c206265207573656420696e2069747320617474656d7074656420657865637574696f6e2e2049662074686973206973206c657373207468616e20746865206d6178696d756d20616d6f756e74206f6620776569676874207468617420746865206d65737361676520636f756c642074616b6520746f2062652065786563757465642c207468656e206e6f20657865637574696f6e20617474656d70742077696c6c206265206d6164652e204e4f54453a2041207375636365737366756c2072657475726e20746f207468697320646f6573202a6e6f742a20696d706c7920746861742074686520606d73676020776173206578656375746564207375636365737366756c6c7920746f20636f6d706c6574696f6e3b206f6e6c792074686174202a736f6d652a206f66206974207761732065786563757465642e426f783c58636d3c543a3a43616c6c3e3e6d61785f776569676874205472616e7366657220736f6d65206173736574732066726f6d20746865206c6f63616c20636861696e20746f2074686520736f7665726569676e206163636f756e74206f6620612064657374696e6174696f6e20636861696e20616e6420666f72776172642061206e6f74696669636174696f6e2058434d2e202d20606f726967696e603a204d7573742062652063617061626c65206f66207769746864726177696e672074686520606173736574736020616e6420657865637574696e672058434d2e202d206064657374603a2044657374696e6174696f6e20636f6e7465787420666f7220746865206173736574732e2057696c6c207479706963616c6c792062652060583228506172656e742c2050617261636861696e282e2e29296020746f2073656e6420202066726f6d2070617261636861696e20746f2070617261636861696e2c206f72206058312850617261636861696e282e2e29296020746f2073656e642066726f6d2072656c617920746f2070617261636861696e2e202d206062656e6566696369617279603a20412062656e6566696369617279206c6f636174696f6e20666f72207468652061737365747320696e2074686520636f6e74657874206f66206064657374602e2057696c6c2067656e6572616c6c79206265202020616e20604163636f756e7449643332602076616c75652e202d2060617373657473603a205468652061737365747320746f2062652077697468647261776e2e20546869732073686f756c6420696e636c7564652074686520617373657473207573656420746f207061792074686520666565206f6e2074686520202060646573746020736964652e202d2060646573745f776569676874603a20457175616c20746f2074686520746f74616c20776569676874206f6e20606465737460206f66207468652058434d206d657373616765202020605265736572766541737365744465706f736974207b206173736574732c20656666656374733a205b20427579457865637574696f6e7b2e2e7d2c204465706f73697441737365747b2e2e7d205d207d602e2054656c65706f727420736f6d65206173736574732066726f6d20746865206c6f63616c20636861696e20746f20736f6d652064657374696e6174696f6e20636861696e2e2020206054656c65706f7274207b206173736574732c20656666656374733a205b20427579457865637574696f6e7b2e2e7d2c204465706f73697441737365747b2e2e7d205d207d602e62656e65666963696172796173736574735665633c4d756c746941737365743e646573745f776569676874436865636b4d6f7274616c6974796d6f646c70792f70726f78795f5f5f5f0000000000e45810001900000000000000005910000100000000000000000000000859100013000000000000001c5910000200000000000000546f6f4d616e79496e636c7573696f6e496e686572656e74730000008e59100034000000496e76616c6964506172656e74486561646572002c59100056000000825910000c000000205468652068617368206f6620746865207375626d697474656420706172656e742068656164657220646f65736e277420636f72726573706f6e6420746f2074686520736176656420626c6f636b2068617368206f662074686520706172656e742e20496e636c7573696f6e20696e686572656e742063616c6c6564206d6f7265207468616e206f6e63652070657220626c6f636b2e4269746669656c647320616e64206865616473206d75737420626520696e636c7564656420657665727920626c6f636b0000d84e10005000000055000000110000007061726163686e30985a100027000000375a10006100000072756e74696d653a3a696e636c7573696f6e2d696e686572656e7464726f7070696e67207369676e65645f6269746669656c647320616e64206261636b65645f63616e64696461746573206265636175736520746865792070726f647563656420616e20696e76616c696420706172617320696e686572656e743a2050617261636861696e73496e686572656e7444617461206661696c656420746f206465636f6465656e746572556e616e6e6f756e6365644e6f5065726d697373696f6e4475706c6963617465556e70726f787961626c654e6f7450726f78794e6f74466f756e64546f6f4d616e794e6f53656c6650726f787900000000000000985b10000d0000000000000034281100010000000000000000000000a85b1000010000000000000000000000b05b10001000000000000000c05b1000040000000000000000000000e05b1000020000000000000000000000f05b10000900000000000000fc5b1000030000000000000000000000145c1000010000000000000050726f787945786563757465640000000e5d10003b000000416e6f6e796d6f757343726561746564ad62120009000000ad62120009000000055d100009000000c41a120003000000705c10003b000000ab5c10005a000000416e6e6f756e636564000000ad62120009000000ad62120009000000b6621200040000001c5c10005400000020416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e205c5b7265616c2c2070726f78792c2063616c6c5f686173685c5d20416e6f6e796d6f7573206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e20646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e205c5b616e6f6e796d6f75732c2077686f2c2070726f78795f747970652c20646973616d626967756174696f6e5f696e6465785c5d50726f78795479706520412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e205c5b726573756c745c5d2e00000000000000274d10000500000000000000045f10000300000000000000000000004c5f10000f00000000000000000000001e4d10000900000000000000c45f10000300000000000000000000000c6010000d0000000000000000000000124d10000c00000000000000c45f1000030000000000000000000000746010000b0000000000000000000000044d10000e00000000000000f4ae1200000000000000000000000000cc6010000a0000000000000000000000fb4c100009000000000000001c61100003000000000000000000000064611000170000000000000000000000ed4c10000e000000000000001c62100005000000000000000000000094621000140000000000000000000000e54c100008000000000000003463100002000000000000000000000064631000150000000000000000000000d24c10001300000000000000346310000200000000000000000000000c641000100000000000000000000000bf4c100013000000000000008c641000020000000000000000000000bc641000100000000000000000000000b04c10000f000000000000003c6510000400000000000000000000009c651000110000000000000000000000f36710000400000000000000137612000c00000000000000f76710001000000000000000076810001400000000000000c71a12000400000000000000cb1a120018000000a975100054000000786610000d000000f4ae120000000000856610002b000000f4ae120000000000901a120034000000f4ae12000000000085c511000c000000b066100044000000f4661000590000004d67100035000000f4ae120000000000a26812000b000000606f100040000000e66812000c00000000000000eb6710000800000000000000137612000c00000000000000a76f10000a00000000000000b16f10000c00000000000000f58211000500000000000000d97612000e000000d274100052000000f4ae120000000000901a120034000000f4ae12000000000085c511000c00000024751000450000006975100040000000fd711000540000005172100006000000f4ae120000000000a26812000b000000606f100040000000e66812000c0000000c7410002b000000f4ae120000000000901a120034000000f4ae12000000000085c511000c000000377410004a0000008174100051000000f4ae120000000000a26812000b000000606f100040000000e66812000c000000317310002e000000f4ae120000000000901a120034000000f4ae1200000000005f73100056000000b573100057000000f4ae120000000000a26812000b000000606f100040000000e66812000c00000000000000a76f10000a00000000000000b16f10000c00000000000000f58211000500000000000000d97612000e00000000000000b3b012000500000000000000c41a120003000000cc6f10004f0000001b70100040000000f4ae1200000000005b7010001c000000f4ae1200000000007770100055000000cc70100054000000207110001f0000003f711000550000009471100058000000ec71100011000000fd711000540000005172100006000000f4ae1200000000005772100055000000ac72100027000000f4ae120000000000d37210003a000000f4ae120000000000a26812000b000000606f100040000000e66812000c0000000d7310002400000000000000a06f10000700000000000000137612000c00000000000000a76f10000a00000000000000b16f10000c00000000000000b3b012000500000000000000c41a12000300000000000000bd6f100006000000000000000e5012001700000000000000c36f100009000000000000002acc11000c000000336c10002e000000f4ae120000000000616c100053000000b46c10000e000000f4ae120000000000c26c100057000000196d10002b000000f4ae120000000000446d100054000000986d100054000000ec6d1000410000002d6e1000500000007d6e100053000000f4ae120000000000d06e100053000000236f10003d000000f4ae120000000000a26812000b000000606f100040000000e66812000c00000000000000f36710000400000000000000137612000c00000000000000596910000900000000000000626910000d000000366a100042000000f4ae120000000000786a100058000000d06a10004a000000f4ae1200000000001a6b100045000000f4ae1200000000005f6b100043000000a26b100047000000f4ae120000000000e96b10004a000000f4ae12000000000085c511000c000000b066100044000000f069100046000000f4ae120000000000a26812000b00000082671000190000009b67100027000000c267100029000000e66812000c0000006f6910001d000000f4ae1200000000008c69100057000000e36910000d000000f4ae120000000000901a120034000000f4ae12000000000085c511000c000000b066100044000000f069100046000000f4ae120000000000a26812000b00000082671000190000009b67100027000000c267100029000000e66812000c00000000000000eb6710000800000000000000137612000c00000000000000596910000900000000000000626910000d0000001b6810002d000000f4ae1200000000004868100059000000a16810004a000000f4ae120000000000901a120034000000f4ae12000000000085c511000c000000eb6810003e0000002969100030000000f4ae120000000000a26812000b00000082671000190000009b67100027000000c267100029000000e66812000c00000000000000eb6710000800000000000000137612000c00000000000000f36710000400000000000000137612000c00000000000000f76710001000000000000000076810001400000000000000c71a12000400000000000000cb1a1200180000002466100054000000786610000d000000f4ae120000000000856610002b000000f4ae120000000000901a120034000000f4ae12000000000085c511000c000000b066100044000000f4661000590000004d67100035000000f4ae120000000000a26812000b00000082671000190000009b67100027000000c267100029000000e66812000c0000002044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676820606164645f70726f7879602e2052656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e202d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e202d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2e202d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e2057656967687420697320612066756e6374696f6e206f663a202d20413a20746865206e756d626572206f6620616e6e6f756e63656d656e7473206d6164652e202d20503a20746865206e756d626572206f662070726f78696573207468652075736572206861732e64656c65676174657265616c666f7263655f70726f78795f747970654f7074696f6e3c543a3a50726f7879547970653e2052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e204d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c65676174657320286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e202d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e63616c6c5f6861736843616c6c486173684f663c543e2052656d6f7665206120676976656e20616e6e6f756e63656d656e742e204d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e20746865206465706f7369742e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e205075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e2054686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d70746564206966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e204e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e20546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c2061732060416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e2052656d6f76657320612070726576696f75736c7920737061776e656420616e6f6e796d6f75732070726f78792e205741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626520696e61636365737369626c652e205265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746f2060616e6f6e796d6f757360207769746820636f72726573706f6e64696e6720706172616d65746572732e202d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c65642060616e6f6e796d6f75736020746f206372656174652074686973206163636f756e742e202d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e2050726f6261626c79206030602e202d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e202d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e202d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e204661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c79206372656174656420616e6f6e796d6f7573206163636f756e742077686f73652060616e6f6e796d6f7573602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e2057656967687420697320612066756e6374696f6e206f6620746865206e756d626572206f662070726f7869657320746865207573657220686173202850292e737061776e657270726f78795f74797065543a3a50726f7879547970656865696768746578745f696e64657820537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e6420696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e205265717569726573206120605369676e656460206f726967696e2e202d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f76657220746865206e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f20616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e202d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d65207472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573742077616e7420746f20757365206030602e202d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265207a65726f2e204661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468652073616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e204661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e20544f444f3a204d69676874206265206f76657220636f756e74696e672031207265616420556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e205741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e747320637265617465642062792060616e6f6e796d6f7573602c20686f776576657220696620646f6e652c207468656e2074686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e20526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e2044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f75676800000000000000c0761000070000000105000000000000137612000c00000000000000c776100051000000000000000000000000000000000000000000000000000000f4ae12001877100000000000000000002877100002000000000000000100000000000000387710000d0000000105000000000000137612000c00000000000000457710004f000000000000000000000000000000000000000000000000000000f4ae1200947710000000000000000000a477100001000000000000000100000050726f78696573285665633c50726f7879446566696e6974696f6e3c543a3a4163636f756e7449642c20543a3a50726f7879547970652c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e293100000000000000010000004b000000d7771000510000002878100048000000416e6e6f756e63656d656e7473285665633c416e6e6f756e63656d656e743c543a3a4163636f756e7449642c2043616c6c486173684f663c543e2c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e293100000000000000010000004c000000ac7710002b0000002054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e2054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e747320776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e00000000c07910001000000000000000935412000c00000000000000f4ae1200d07910000000000000000000e0791000040000000000000000000000007a10001200000000000000935412000c00000000000000f4ae1200147a10000000000000000000247a10000500000000000000000000004c7a10000a00000000000000c41a12000300000000000000f4ae1200587a10000000000000000000687a1000010000000000000000000000707a10000a000000000000007b6a12000300000000000000f4ae12007c7a100000000000000000008c7a1000010000000000000000000000947a10001700000000000000935412000c00000000000000f4ae1200ac7a10000000000000000000bc7a1000030000000000000000000000d47a10001900000000000000935412000c00000000000000f4ae1200f07a10000000000000000000007b1000040000000000000050726f78794465706f736974426173653100000000000000010000004d000000127e100044000000f4ae120000000000567e100040000000967e10004900000050726f78794465706f736974466163746f7200003100000000000000010000004d000000017d10002f000000f4ae120000000000307d10005a0000008a7d100058000000e27d1000300000004d617850726f7869657300003100000000000000010000004e000000c57c10003c0000004d617850656e64696e6700003100000000000000010000004f000000747c100051000000416e6e6f756e63656d656e744465706f73697442617365003100000000000000010000004d000000ce7b10004c000000f4ae1200000000001a7c10005a000000416e6e6f756e63656d656e744465706f736974466163746f720000003100000000000000010000004d000000207b100035000000f4ae120000000000557b100056000000ab7b1000230000002054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e20546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c792036382062797465732920696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e20546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c79203136206279746573292e20546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e20546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e20546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b6520696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e20546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a65206973206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e000000000000801000070000000105000000000000078010000d000000000000001480100034000000000000000000000000000000000000000000000000000000f4ae12004880100000000000000000005880100001000000000000000000000000000000e67d1100160000000205050000000000608010000400000000000000648010000e000000000000007280100012000000000000000000000000000000f4ae120084801000000000000000000094801000010000000000000001000000000000009c801000120000000105000000000000608010000400000000000000f268120007000000000000000000000000000000000000000000000000000000f4ae1200b08010000000000000000000c08010000600000000000000010000005265706f7274735265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e3100000000000000010000004400000059821000520000004b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e310000000000000001000000500000000f8210004a0000005265706f72747342794b696e64496e646578000031000000000000000100000051000000f080100044000000f4ae120000000000348110002f000000f4ae1200000000006381100052000000b58110005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e0000000000bf5a10000500000000000000d8821000010000000000000000000000f08210000100000000000000000000004583100004000000000000004983100021000000f88210004d00000020456e7465722074686520706172617320696e686572656e742e20546869732077696c6c2070726f63657373206269746669656c647320616e64206261636b65642063616e646964617465732e6461746150617261636861696e73496e686572656e74446174613c543a3a4865616465723e50617261496e686572656e74000000000000d883100008000000000000000000000018b8120002000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e08310000000000000000000f0831000060000000000000000000000496e636c7564656431000000000000000100000044000000208410003b000000f4ae1200000000005b84100058000000b38410002f000000f4ae120000000000e28410005200000020576865746865722074686520706172617320696e686572656e742077617320696e636c756465642077697468696e207468697320626c6f636b2e2054686520604f7074696f6e3c28293e60206973206566666563746976656c79206120626f6f6c2c20627574206974206e6576657220686974732073746f7261676520696e2074686520604e6f6e65602076617269616e742064756520746f207468652067756172616e74656573206f66204652414d4527732073746f7261676520415049732e204966207468697320697320604e6f6e65602061742074686520656e64206f662074686520626c6f636b2c2077652070616e696320616e642072656e6465722074686520626c6f636b20696e76616c69642e446f776e776172644d65737361676551756575657300000000000000348510001500000001050000000000001042120006000000000000000c8610002b000000000000000000000000000000000000000000000000000000f4ae1200388610000000000000000000488610000100000000000000010000000000000050861000190000000105000000000000104212000600000000000000b662120004000000000000000000000000000000000000000000000000000000f4ae12006c86100000000000000000007c8610000700000000000000010000005665633c496e626f756e64446f776e776172644d6573736167653c543a3a426c6f636b4e756d6265723e3e0031000000000000000100000052000000f687100034000000446f776e776172644d6573736167655175657565486561647300000031000000000000000100000043000000b486100049000000f4ae120000000000fd86100024000000218710001e0000003f8710003a0000007987100048000000c1871000350000002041206d617070696e6720746861742073746f7265732074686520646f776e77617264206d657373616765207175657565204d5143206865616420666f72206561636820706172612e2045616368206c696e6b20696e207468697320636861696e20686173206120666f726d3a206028707265765f686561642c20422c2048284d2929602c207768657265202d2060707265765f68656164603a206973207468652070726576696f757320686561642068617368206f72207a65726f206966206e6f6e652e202d206042603a206973207468652072656c61792d636861696e20626c6f636b206e756d62657220696e2077686963682061206d6573736167652077617320617070656e6465642e202d206048284d29603a206973207468652068617368206f6620746865206d657373616765206265696e6720617070656e6465642e2054686520646f776e77617264206d657373616765732061646472657373656420666f722061206365727461696e20706172612e0000000000004b4f10000b00000000000000f4ae1200000000000000000000000000404f10000b00000000000000f4ae1200000000000000000000000000384f100008000000000000009c881000010000000000000000000000564f10001200000000000000a48810000100000000000000da88100028000000ac8810002e00000020546865206d65737361676527732077656967687420636f756c64206e6f742062652064657465726d696e65642e20546865206d65737361676520657865637574696f6e206661696c73207468652066696c7465722e000000000000ff5a10000700000000000000e4891000010000000000000000000000f75a10000800000000000000ec891000010000000000000000000000ef5a10000800000000000000f4891000010000000000000000000000e45a10000b00000000000000fc891000010000000000000000000000db5a10000900000000000000048a1000010000000000000000000000cf5a10000c000000000000000c8a1000010000000000000000000000c45a10000b00000000000000148a1000010000000000000000000000065b10000b000000000000001c8a10000100000000000000708b100049000000528b10001e0000001e8b100034000000d58a100049000000b98a10001c000000738a1000460000003e8a100035000000248a10001a0000002043616e6e6f74206164642073656c662061732070726f78792e20416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2043616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e204163636f756e7420697320616c726561647920612070726f78792e20412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e2053656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2050726f787920726567697374726174696f6e206e6f7420666f756e642e2054686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e50617261636861696e50726f706f73657256616c696461746f7273546f52657469726556616c696461746f7273546f4164643a45706f63684475726174696f6e496e426c6f636b733a0000000000005c8c10001400000000000000708c1000010000000000000000000000788c1000010000000000000000000000808c10001600000000000000708c1000010000000000000000000000988c1000010000000000000056616c696461746f7273526567697374657265644b2a120010000000c68c10002600000056616c696461746f72734465726567697374657265640000a08c1000260000002056616c696461746f727320776572652072656d6f7665642066726f6d20746865207365742e204e65772076616c696461746f7273207765726520616464656420746f20746865207365742e00000000ca8b1000120000000000000000000000d899100013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200ac8d10000000000000000000bc8d100001000000000000000100000000000000dc8b10000f0000000000000000000000d899100013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200c48d10000000000000000000d48d100001000000000000000100000031000000000000000100000053000000fd8d10004d00000031000000000000000100000053000000dc8d1000210000002056616c696461746f727320746861742073686f756c642062652061646465642e2056616c696461746f727320746861742073686f756c6420626520726574697265642c20626563617573652074686569722050617261636861696e20776173206465726567697374657265642e646572656769737465725f76616c696461746f727372656769737465725f76616c696461746f72730000000000005f8e10001300000000000000cc8e1000010000000000000000000000e48e10000300000000000000000000004a8e10001500000000000000cc8e1000010000000000000000000000fc8e10000300000000000000000000009cfb10000a00000000000000d899100013000000798f10001f000000f4ae120000000000988f10003c000000148f100020000000f4ae120000000000348f1000450000002052656d6f76652076616c696461746f72732066726f6d20746865207365742e205468652072656d6f7665642076616c696461746f72732077696c6c2062652064656163746976617465642066726f6d2063757272656e742073657373696f6e202b20322e20416464206e65772076616c696461746f727320746f20746865207365742e20546865206e65772076616c696461746f72732077696c6c206265206163746976652066726f6d2063757272656e742073657373696f6e202b20322e70616c6c65745f617574686f72736869703a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f617574686f72736869702f7372632f6c69622e727370616c6c65745f73657373696f6e2f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f73657373696f6e2f7372632f6c69622e72737365745f756e636c6573496e76616c696450726f6f664475706c6963617465644b65794e6f4173736f63696174656456616c696461746f7249644e6f4163636f756e744e6f4b6579734b65794f776e65722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f78636d2f70616c6c65742d78636d2f7372632f6c69622e7273436865636b57656967687400f79110000f0000006672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f73797374656d2f7372632f657874656e73696f6e732f636865636b5f7765696768742e7273426164206d616e6461746f72793a20546f6f4d616e79556e636c6573556e636c6573416c726561647953657447656e65736973556e636c65546f6f48696768556e636c65496e76616c6964556e636c65506172656e744f6c64556e636c65556e636c65416c7265616479496e636c7564656456616c696461746f72735175657565644b6579732f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f70726f78792f7372632f6c69622e7273000000000000003493100008000000000000003c9310000200000000000000000000006c9310000e0000000000000000000000dc9310000a00000000000000f4ae1200000000000000000000000000e89310000c000000000000007365745f6b657973000000002a6b120004000000000000002b9710000700000000000000329710000500000000000000f268120007000000ec9510003a00000026961000480000007b94100031000000f4ae120000000000ac94100035000000f4ae120000000000a26812000b0000006e961000150000000e95100056000000839610003c000000bf96100029000000e8961000210000000997100022000000e66812000c00000070757267655f6b657973000048941000330000007b94100031000000f4ae120000000000ac94100035000000f4ae120000000000a26812000b000000e19410002d0000000e95100056000000649510003c000000a095100029000000c995100023000000e66812000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e20202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460202d20446257726974657320706572206b65792069643a20604b65794f776e646572602053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d20436f6d706c65786974793a20604f28312960202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360202d204462526561647320706572206b65792069643a20604b65794f776e657260202d20446257726974657320706572206b65792069643a20604b65794f776e657260543a3a4b65797370726f6f660000000000699210000a0000000000000000000000d899100013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200ec9910000000000000000000fc99100001000000000000000100000000000000049a10000c0000000000000000000000db9912000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200109a10000000000000000000209a100001000000000000000100000000000000289a10000d0000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200389a10000000000000000000489a100002000000000000000100000000000000739210000a0000000000000000000000589a10001e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200789a10000000000000000000889a100002000000000000000100000000000000989a1000120000000000000000000000aa9a100008000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200b49a10000000000000000000c49a10000300000000000000010000000000000012131200080000000105000000000000dc9a10000e000000000000002b97100007000000000000000000000000000000000000000000000000000000f4ae1200ec9a10000000000000000000fc9a10000100000000000000000000000000000003911000080000000105000000000000049b10001400000000000000dc9a10000e000000000000000000000000000000000000000000000000000000f4ae1200189b10000000000000000000289b10000100000000000000000000005665633c543a3a56616c696461746f7249643e0031000000000000000100000053000000229d10001f00000043757272656e74496e64657831000000000000000100000042000000049d10001e0000005175657565644368616e676564000000310000000000000001000000460000008d9c10004e000000db9c1000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e000031000000000000000100000050000000069c10004f000000559c10003800000044697361626c656456616c696461746f72735665633c7533323e000031000000000000000100000054000000999b100020000000f4ae120000000000b99b10004d000000543a3a56616c696461746f724964000031000000000000000100000044000000729b100027000000284b65795479706549642c205665633c75383e2931000000000000000100000044000000309b10004200000020546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e00000000000000ba9010000a00000000000000709d1000010000000000000000000000889d1000010000000000000000000000a99d10000a00000000000000b39d10000e000000909d1000190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e00000000000000f7121200060000000000000000000000e49e10003a000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200209f10000000000000000000309f10000100000000000000010000000000000047131200060000000000000000000000137612000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200389f10000000000000000000489f100001000000000000000000000000000000581312000c0000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200509f10000000000000000000609f10000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e000031000000000000000100000055000000b09f10000700000031000000000000000100000044000000979f10001900000031000000000000000100000046000000689f10002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c6573706f700000dc9f100068000000600000002e000000dc9f100068000000610000002d0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f636b622d6d65726b6c652d6d6f756e7461696e2d72616e67652d302e332e312f7372632f6d6d722e727362616767696e6720726873207065616b73000000dc9f100068000000ca00000037000000dc9f1000680000003901000038000000dc9f1000680000008a0100002d000000dc9f1000680000008b0100002c00000000000000c49010000c0000000000000024a11000010000000000000000000000dd90100017000000000000002ca11000010000000000000000000000d09010000d0000000000000034a11000010000000000000000000000fd90100006000000000000003ca11000010000000000000000000000f4901000090000000000000044a110000100000000000000ffa1100019000000d7a1100028000000bda110001a00000093a110002a0000004ca1100047000000204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e000000003b9210001200000000000000dca21000010000000000000000000000139210001000000000000000e4a21000010000000000000000000000069210000d00000000000000eca21000010000000000000000000000239210000c00000000000000f4a210000100000000000000000000002f9210000c00000000000000fca2100001000000000000000000000055921000140000000000000004a310000100000000000000000000004d92100008000000000000000ca310000100000000000000c9a3100023000000a8a310002100000097a310001100000081a310001600000061a310002000000042a310001f00000014a310002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f696e636c7573696f6e2e727370616c6c65745f7472616e73616374696f6e5f7061796d656e742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f7472616e73616374696f6e2d7061796d656e742f7372632f6c69622e72734368617267655472616e73616374696f6e5061796d656e7400000000000000617474656d707420746f20646976696465206279207a65726f0000002ca510005b000000050300001b0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f626162652f7372632f6c69622e7273000000000028a8100011000000000000003ca8100001000000000000000000000044a810001c0000000000000060a8100001000000000000000000000068a81000190000000000000084a810000100000000000000000000008ca810001800000000000000a4a81000010000000000000000000000aca810001400000000000000c0a81000010000000000000000000000c8a810002000000000000000e8a81000010000000000000000000000f0a810000d0000000000000000a9100001000000000000000000000008a9100013000000000000001ca91000010000000000000000000000c41e1100100000000000000024a910000100000000000000000000002ca91000140000000000000040a9100001000000000000000000000048a910000f0000000000000058a9100001000000000000000000000060a910001b000000000000007ca9100001000000000000000000000084a9100017000000000000009ca91000010000000000000000000000a4a910001100000000000000b8a91000010000000000000000000000c0a910001300000000000000d4a91000010000000000000000000000dca910000e00000000000000eca91000010000000000000000000000f4a91000110000000000000008aa100001000000000000000000000010aa10001a000000000000002caa100001000000000000000000000034aa10000d0000000000000044aa10000100000000000000000000004caa100020000000000000006caa100001000000000000000000000074aa100015000000000000008caa100001000000000000000000000094aa10001800000000000000acaa1000010000000000000000000000b4aa10001300000000000000c8aa1000010000000000000000000000d0aa10001900000000000000ecaa1000010000000000000057726f6e674269746669656c6453697a650000004baf10002b0000004269746669656c644475706c69636174654f72556e6f726465726564f7ae10005400000056616c696461746f72496e6465784f75744f66426f756e6473000000d8ae10001f000000496e76616c69644269746669656c645369676e6174757265c6ae100012000000556e7363686564756c656443616e6469646174659aae10002c00000043616e6469646174655363686564756c65644265666f726550617261467265654dae10004d00000057726f6e67436f6c6c61746f7200000021ae10002c0000005363686564756c65644f75744f664f726465720003ae10001e000000d9ad10002a0000005072656d6174757265436f646555706772616465bfad10001a0000004e6577436f6465546f6f4c6172676500a6ad10001900000043616e6469646174654e6f74496e506172656e74436f6e746578740085ad100021000000556e6f63637570696564426974496e4269746669656c64003cad100049000000496e76616c696447726f7570496e64657800000014ad100028000000496e73756666696369656e744261636b696e6700efac100025000000496e76616c69644261636b696e670000b5ac10003a0000004e6f74436f6c6c61746f725369676e65640000009aac10001b00000056616c69646174696f6e44617461486173684d69736d61746368000068ac100032000000496e7465726e616c4572726f7200000026ac100042000000496e636f7272656374446f776e776172644d65737361676548616e646c696e67efab100037000000496e76616c69645570776172644d65737361676573000000a7ab10004800000048726d7057617465726d61726b4d697368616e646c696e6762ab100045000000496e76616c69644f7574626f756e6448726d70002cab100036000000496e76616c696456616c69646174696f6e436f646548617368000000f4aa100038000000205468652076616c69646174696f6e20636f64652068617368206f66207468652063616e646964617465206973206e6f742076616c69642e205468652048524d50206d657373616765732073656e74206279207468652063616e646964617465206973206e6f742076616c69642e205468652063616e646964617465206469646e277420666f6c6c6f77207468652072756c6573206f662048524d502077617465726d61726b20616476616e63656d656e742e204174206c65617374206f6e6520757077617264206d6573736167652073656e7420646f6573206e6f7420706173732074686520616363657074616e63652063726974657269612e2054686520646f776e77617264206d657373616765207175657565206973206e6f742070726f63657373656420636f72726563746c792e20496e7465726e616c206572726f72206f6e6c792072657475726e6564207768656e20636f6d70696c6564207769746820646562756720617373657274696f6e732e205468652076616c69646174696f6e2064617461206861736820646f6573206e6f74206d617463682065787065637465642e20436f6c6c61746f7220646964206e6f74207369676e20506f562e20496e76616c69642028626164207369676e61747572652c20756e6b6e6f776e2076616c696461746f722c206574632e29206261636b696e672e20496e73756666696369656e7420286e6f6e2d6d616a6f7269747929206261636b696e672e20496e76616c69642067726f757020696e64657820696e20636f72652061737369676e6d656e742e20546865206269746669656c6420636f6e7461696e732061206269742072656c6174696e6720746f20616e20756e61737369676e656420617661696c6162696c69747920636f72652e2043616e646964617465206e6f7420696e20706172656e7420636f6e746578742e204f757470757420636f646520697320746f6f206c6172676520436f64652075706772616465207072656d61747572656c792e2048656164206461746120657863656564732074686520636f6e66696775726564206d6178696d756d2e205363686564756c656420636f726573206f7574206f66206f726465722e2043616e64696461746520696e636c756465642077697468207468652077726f6e6720636f6c6c61746f722e2043616e646964617465207363686564756c656420646573706974652070656e64696e672063616e64696461746520616c7265616479206578697374696e6720666f722074686520706172612e2043616e646964617465207375626d6974746564206275742070617261206e6f74207363686564756c65642e20496e76616c6964207369676e61747572652056616c696461746f7220696e646578206f7574206f6620626f756e64732e204d756c7469706c65206269746669656c6473207375626d69747465642062792073616d652076616c696461746f72206f722076616c696461746f7273206f7574206f66206f7264657220627920696e6465782e20417661696c6162696c697479206269746669656c642068617320756e65787065637465642073697a652e000012a410004b000000cc000000010000004261626545717569766f636174696f6e736c6f74206e756d626572206973207536343b2069742073686f756c642072656c61746520696e20736f6d652077617920746f2077616c6c20636c6f636b2074696d653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e00002ca510005b000000640200000e0000002ca510005b000000660200003b00000054696d657374616d7020736c6f74206d757374206d61746368206043757272656e74536c6f7460002ca510005b0000003e0300000900000065706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b207165640000002ca510005b000000060200000e0000002ca510005b0000000e0200000e00000065706f636820696e646578206973207536343b20697420697320616c77617973206f6e6c7920696e6372656d656e746564206279206f6e653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e002ca510005b0000004b0200004600000045706f6368436f6e66696720697320696e697469616c697a656420696e2067656e657369733b207765206e65766572206074616b6560206f7220606b696c6c602069743b207165642ca510005b00000057020000290000002ca510005b000000440200002d00000000000000f07f1100130000000000000044b2100002000000000000000000000074b21000040000000000000000000000548011001c0000000000000044b2100002000000000000000000000094b21000080000000000000000000000d4b210001200000000000000e8b2100001000000000000000000000000b31000040000000000000000000000c184110012000000000000002ab510001c00000000000000fd8411000f000000000000000c8511001000000054b410004300000097b4100042000000d9b41000440000001db510000d00000054b410004300000097b4100042000000d9b41000440000001db510000d000000e7831100440000002b841100460000007184110046000000b78411000a000000706c616e5f636f6e6669675f6368616e67650000000000003ab41000060000000000000040b410001400000020b310005800000078b3100055000000cdb310005700000024b410001600000020506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e20746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e204d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164206e6f74206265656e20656e6163746564207965742e636f6e6669674e657874436f6e66696744657363726970746f72205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e45717569766f636174696f6e50726f6f663c543a3a4865616465723e000000000000081312000a0000000000000000000000986f120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120048bb1000000000000000000058bb100001000000000000000100000000000000603b12000b000000000000000000000060bb100027000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120088bb1000000000000000000098bb100001000000000000000100000000000000c01312000b0000000000000000000000a0bb100004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200a4bb10000000000000000000b4bb1000020000000000000001000000000000004d1312000b0000000000000000000000a0bb100004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200a4bb10000000000000000000c4bb100001000000000000000100000000000000d51312000a0000000000000000000000ccbb100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e4bb10000000000000000000f4bb10000a000000000000000100000000000000df13120018000000000000000000000040b4100014000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120044bc1000000000000000000054bc100001000000000000000000000000000000771312000e0000000000000000000000ccbb100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e4bb100000000000000000005cbc100001000000000000000100000000000000e03b12000f000000000000000000000060bb100027000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120088bb1000000000000000000064bc1000010000000000000001000000000000002d1312000c00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12006cbc100000000000000000007cbc100009000000000000000100000000000000c4bc10001100000001050000000000007b6a12000300000000000000d5bc10001b000000000000000000000000000000000000000000000000000000f4ae1200f0bc1000000000000000000000bd100001000000000000000100000000000000f71312000b000000000000000000000008bd10000f000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120018bd1000000000000000000028bd1000020000000000000000000000000000000214120013000000000000000000000008bd10000f000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120038bd1000000000000000000048bd100003000000000000000100000000000000cb1312000a0000000000000000000000f087110020000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120060bd1000000000000000000070bd10000500000000000000010000000000000023141200080000000000000000000000d97612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12006cbc1000000000000000000098bd100005000000000000000100000000000000221312000b0000000000000000000000c0bd100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d8bd10000000000000000000e8bd100001000000000000000000000000000000e81212000f0000000000000000000000c0bd100016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d8bd10000000000000000000f0bd1000020000000000000000000000310000000000000001000000560000000cc71000150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0031000000000000000100000057000000f1c610001b000000536c6f74310000000000000001000000580000008fc610003e000000cdc61000240000007ac61000150000007363686e6f72726b656c3a3a52616e646f6d6e657373000031000000000000000100000059000000b4c410002e000000f4ae120000000000e2c410000b000000f4ae120000000000edc41000410000002ec510003e0000006cc5100045000000b1c5100045000000f6c510004100000037c61000430000003100000000000000010000005a0000005cc410005800000045c41000170000002dc410001800000031000000000000000100000042000000e8c210001f000000f4ae12000000000007c310003d00000044c310004000000084c3100025000000f4ae120000000000a9c310003b000000e4c310004200000026c4100007000000556e646572436f6e737472756374696f6e5665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e31000000000000000100000054000000a3c21000450000004d6179626552616e646f6d6e65737300310000000000000001000000440000001cc21000400000005cc2100047000000310000000000000001000000440000002bc110005700000082c1100054000000d6c11000460000003100000000000000010000005b000000d1bf10005700000028c01000050000002dc01000520000007fc0100056000000d5c0100056000000e6be100036000000f4ae1200000000001cbf10004500000061bf100044000000a5bf10002c0000004261626545706f6368436f6e66696775726174696f6e00003100000000000000010000005a00000085be10006100000000be10004b0000004bbe10003a0000002054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e67652028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e2054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e2067656e657369732e20486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e6564207570206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636b20657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e6420604e602e204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f6620656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e20736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e657261746564206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c657373207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f636820617574686f7269746965732e204e6578742065706f63682072616e646f6d6e6573732e2050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e0000000000000094c710000d00000000000000986f12000300000000000000f4ae1200a4c710000000000000000000b4c71000030000000000000000000000ccc71000110000000000000014bc11000900000000000000f4ae1200e0c710000000000000000000f0c71000050000000000000045706f63684475726174696f6e0000003100000000000000010000005c00000048c910003b00000083c9100046000000c9c91000480000004578706563746564426c6f636b54696d650000003100000000000000010000005d00000018c810004100000059c81000440000009dc8100041000000dec810004200000020c910002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e2061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e50617261496e636c7573696f6e50656e64696e67417661696c6162696c697479000000d4ca100005000000d9ca10001d00000072756e74696d653a3a6f6666656e63657370616c6c65745f6f6666656e6365733a3a6d6967726174696f6e2f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6f6666656e6365732f7372632f6d6967726174696f6e2e72736861766520206465666572726564206f6666656e6365732c206170706c79696e672e0000a0cb100001000000a1cb10000d00000072756e74696d653a3a6d6d7270616c6c65745f6d6d725f7072696d6974697665732f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6d65726b6c652d6d6f756e7461696e2d72616e67652f7072696d6974697665732f7372632f6c69622e72735b5d204d4d52206572726f723a20496e76616c69642072616e676520666f7220746869732061756374696f6e6261642072616e676572616e676520626567696e7320746f6f206561726c790000000000accc1000110000000000000000000000bdcc10000a000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200c8cc10000000000000000000f4ae120000000000000000000100000000000000284311000e00000000000000000000003643110008000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d8cc10000000000000000000f4ae12000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572003100000000000000010000005e0000003100000000000000010000005f0000000000000058cd10001200000000000000935412000c00000000000000f4ae12006ccd100000000000000000007ccd100001000000000000000000000084cd10000b000000000000008fcd10002900000000000000f4ae1200b8cd10000000000000000000c8cd100001000000000000005472616e73616374696f6e4279746546656500003100000000000000010000006000000013ce100043000000576569676874546f4665655665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e31000000000000000100000061000000d0cd1000430000002054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e0000dace10002f00000072756e74696d653a3a70617261636861696e73706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7574696c2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f7574696c2e7273546f6f6b206163746976652076616c696461746f72732066726f6d2073657420776974682077726f6e672073697a65000000000000002cd0100015000000010500000000000041d010000e000000000000004fd010002a000000000000000000000000000000000000000000000000000000f4ae12007cd0100000000000000000008cd01000010000000000000000000000000000001eca100013000000010500000000000010421200060000000000000094d0100035000000000000000000000000000000000000000000000000000000f4ae1200ccd010000000000000000000dcd0100001000000000000000000000000000000e4d010001e000000010500000000000010421200060000000000000002d1100014000000000000000000000000000000000000000000000000000000f4ae120018d11000000000000000000028d11000010000000000000000000000417661696c6162696c6974794269746669656c647356616c696461746f72496e646578417661696c6162696c6974794269746669656c645265636f72643c543a3a426c6f636b4e756d6265723e000000310000000000000001000000440000009cd110005900000043616e64696461746550656e64696e67417661696c6162696c6974793c543a3a486173682c20543a3a426c6f636b4e756d6265723e0000003100000000000000010000005a0000006fd110002d00000050656e64696e67417661696c6162696c697479436f6d6d69746d656e747343616e646964617465436f6d6d69746d656e747300003100000000000000010000005a00000030d110003f0000002054686520636f6d6d69746d656e7473206f662063616e646964617465732070656e64696e6720617661696c6162696c6974792c206279205061726149642e2043616e646964617465732070656e64696e6720617661696c6162696c6974792062792060506172614964602e20546865206c6174657374206269746669656c6420666f7220656163682076616c696461746f722c20726566657272656420746f20627920746865697220696e64657820696e207468652076616c696461746f72207365742e00000012a410004b000000380100003100000076616c696461746f72206269746669656c647320636865636b6564206e6f7420746f20636f6e7461696e206269747320636f72726573706f6e64696e6720746f20756e6f6363757069656420636f7265733b20716564000012a410004b0000003a010000160000008ad210008f00000072756e74696d653a3a696e636c7573696f6e496e636c7573696f6e3a3a70726f636573735f6269746669656c64733a2050656e64696e67417661696c6162696c69747920616e642050656e64696e67417661696c6162696c697479436f6d6d69746d656e74730a09090909090909617265206f7574206f662073796e632c2064696420736f6d656f6e65206d6573732077697468207468652073746f726167653f00000012a410004b000000430200001f00000080d310003c000000bcd3100010000000ccd310000a00000012a410004b000000e5010000280000007468697320717565727920646f6e652061626f76653b20716564000012a410004b0000002e0200002600000056616c69646174696f6e206f75747075747320636865636b696e6720647572696e6720696e636c7573696f6e206f6620612063616e6469646174652020666f722070617261636861696e206060206661696c65643a204f7574626f756e6448726d7000003100000004000000040000006200000050726f636573736564446f776e776172644d65737361676573000000310000000400000004000000630000005570776172644d6573736167657300003100000004000000040000006400000048726d7057617465726d61726b0000003100000004000000040000006500000028f710005a000000760000000900000080d410002b000000ccd310000a00000056616c69646174696f6e206f75747075747320636865636b696e6720666f722070617261636861696e2060000000000030d510000f0000000000000040d5100004000000000000000000000060d5100001000000000000000000000068d51000110000000000000040d510000400000000000000000000007cd5100001000000000000000000000084d51000110000000000000098d51000030000000000000000000000b0d51000010000000000000043616e6469646174654261636b656400e6d51000160000008bfc110008000000fcd510000900000065d610000a00000036d610002f00000043616e646964617465496e636c7564656400000005d610003100000043616e64696461746554696d65644f7574000000e6d51000160000008bfc110008000000fcd5100009000000b8d510002e00000020412063616e6469646174652074696d6564206f75742e205b63616e6469646174652c20686561645f646174615d43616e646964617465526563656970743c486173683e436f7265496e64657820412063616e6469646174652077617320696e636c756465642e205b63616e6469646174652c20686561645f646174615d20412063616e64696461746520776173206261636b65642e205b63616e6469646174652c20686561645f646174615d47726f7570496e64657800f4d6100088000000d60200001a000000a8b11200870000003702000024000000a8b11200870000003802000024000000f4d6100088000000e201000027000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282900a8b11200870000000106000009000000f4d6100088000000d20200001d0000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f736f72742e7273f4d6100088000000c500000030000000f4d6100088000000c800000030000000acd71000a0000000200000000e0000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f72696e675f736c696365732e727370616c6c65745f626162653a3a70616c6c65740000000000fa7e11001800000000000000d4a51100010000000000000000000000127f11001800000000000000cca51100010000000000000000000000557f11001600000000000000dca511000100000000000000667265657a6566726565636c61696d3a5f5f50414c4c45545f56455253494f4e5f5f3a70616c6c65745f696e64696365733a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f696e64696365732f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f73657373696f6e5f696e666f2e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f70617261735f7375646f5f777261707065722e72730000000000000020db10000f0000000000000030db100001000000000000000000000038db100011000000000000004cdb100001000000000000000000000054db100015000000000000006cdb10000200000000000000000000007cdb10000e000000000000008cdb1000010000000000000000000000e41e11000d0000000000000094db1000010000000000000000000000703412000c000000000000009cdb100001000000000000000000000000b311000d00000000000000a4db100001000000000000000000000018b311000f00000000000000acdb1000010000000000000050617261446f65736e74457869737400cfdc10003900000050617261416c726561647945786973747300000092dc10003d000000457863656564734d61784d65737361676553697a650000002fdc10005a00000089dc100009000000436f756c646e74436c65616e757000000edc100021000000fcdb100012000000ebdb100011000000d0db10001b000000b4db10001c0000002043616e6e6f7420646f776e67726164652070617261636861696e2e2043616e6e6f74207570677261646520706172617468726561642e204e6f7420612070617261636861696e2e204e6f74206120706172617468726561642e20436f756c64206e6f74207363686564756c65207061726120636c65616e75702e204120444d50206d65737361676520636f756c646e27742062652073656e742062656361757365206974206578636565647320746865206d6178696d756d2073697a6520616c6c6f77656420666f72206120646f776e77617264206d6573736167652e20546865207370656369666965642070617261636861696e206f72207061726174687265616420697320616c726561647920726567697374657265642e20546865207370656369666965642070617261636861696e206f722070617261746872656164206973206e6f7420726567697374657265642e74d910004e0000003c000000010000007375646f5f65737461626c6973685f68726d705f6368616e6e656c7375646f5f71756575655f646f776e776172645f78636d7375646f5f7363686564756c655f70617261636861696e5f646f776e67726164657375646f5f7363686564756c655f706172617468726561645f757067726164657375646f5f7363686564756c655f706172615f636c65616e75707375646f5f7363686564756c655f706172615f696e697469616c697a654e6f745472616e73666572496e5573654e6f7441737369676e65645065726d616e656e740000000000006cde10000d000000000000007cde10000200000000000000000000008cde100001000000000000000000000094de10000a00000000000000a0de1000010000000000000000000000a8de1000010000000000000000000000b0de10000b00000000000000bcde1000020000000000000000000000ccde10000100000000000000496e64657841737369676e6564000000ad621200090000001edf10000c00000064df10002d000000496e646578467265656400001edf10000c0000002adf10003a000000496e64657846726f7a656e001edf10000c000000ad62120009000000d4de10004a0000002041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d4163636f756e74496e6465782041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d00000000000000bed81000050000000000000070e0100001000000000000000000000088e01000120000000000000000000000dc191100080000000000000018e1100002000000000000000000000048e11000140000000000000000000000bad81000040000000000000070e01000010000000000000000000000e8e11000120000000000000000000000c31911000e0000000000000078e21000030000000000000000000000c0e21000150000000000000000000000b4d81000060000000000000070e0100001000000000000000000000068e31000110000000000000000000000b3b012000500000000000000f7e710000f000000b7ea100027000000f4ae120000000000deea100038000000f4ae120000000000901a120034000000f4ae12000000000016eb10003d000000f4ae12000000000036e7100025000000f4ae120000000000a26812000b0000000ce510000a00000016e510002700000040e91000190000005ae510000d00000067e51000140000007be5100025000000e66812000c00000000000000d29512000300000000000000137612000c00000000000000b3b012000500000000000000f7e710000f00000059e9100058000000b1e910002f000000f4ae120000000000901a120034000000f4ae120000000000e0e910004a0000008de6100058000000f4ae12000000000036e7100025000000f4ae120000000000a26812000b0000000ce510000a00000016e51000270000002aea10001a0000005ae510000d00000067e5100014000000706c12000d00000044ea1000390000007dea10003a000000e66812000c00000006e8100026000000f4ae1200000000002ce8100058000000f4ae12000000000084e8100056000000f4ae120000000000dae8100044000000f4ae1200000000001ee9100022000000f4ae120000000000a26812000b0000000ce510000a00000016e510002700000040e91000190000005ae510000d00000067e51000140000007be5100025000000e66812000c00000000000000d29512000300000000000000137612000c00000000000000b3b012000500000000000000f7e710000f00000000000000b4d810000600000000000000d178120004000000a0e5100056000000f6e510003b000000f4ae12000000000031e6100032000000f4ae12000000000063e610002a0000008de6100058000000e5e6100051000000f4ae12000000000036e7100025000000f4ae120000000000a26812000b0000000ce510000a00000016e51000270000005be710001f0000005ae510000d00000067e5100014000000706c12000d0000007ae710003e000000b8e710003f000000e66812000c000000f0e310005a000000f4ae1200000000004ae4100057000000a1e410001c000000f4ae120000000000bde410002c000000f4ae120000000000e9e4100023000000f4ae120000000000a26812000b0000000ce510000a00000016e51000270000003de510001d0000005ae510000d00000067e51000140000007be5100025000000e66812000c00000020467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d75737420686176652061206e6f6e2d66726f7a656e206163636f756e742060696e646578602e202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e202d20604f283129602e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e6520736c617368206f7065726174696f6e2e202d204f6e65206576656e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d204442205765696768743a203120526561642f577269746520284163636f756e74732920466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229543a3a4163636f756e74496e646578204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0000000000b4eb1000080000000102000000000000f7e710000f00000000000000bceb100022000000000000000000000000000000000000000000000000000000f4ae1200e0eb10000000000000000000f0eb10000100000000000000000000004163636f756e747328543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c29000031000000000000000100000044000000f8eb10002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e000000000000b43011000700000000000000935412000c00000000000000f4ae120054ec1000000000000000000064ec10000100000000000000310000000000000001000000660000006cec10002b00000020546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e6e6f6e7a65726f202b206e6f6e7a65726f206973206e6f6e7a65726f000ced1000660000004f00000034000000766f74657273206e6f6e656d7074793b207165640ced1000660000005b0000003b0000006465662e206f66206f726465723b2071656400000ced10006600000060000000200000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f66696e616c6974792d6772616e6470612d302e31342e302f7372632f766f7465725f7365742e7273617373657274696f6e206661696c65643a2062697473206173207573697a65203c3d20726573756c742e6c656e2829000000b4ed100065000000480000000d0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f6269745f7665632e727300000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f00000000000000a5dd10001d0000000000000064ef100002000000000000000000000094ef10000100000000000000000000008bdd10001a00000000000000bc4811000100000000000000000000009cef10000100000000000000000000006bdd10002000000000000000bc481100010000000000000000000000a4ef10000100000000000000000000004add10002100000000000000bc481100010000000000000000000000acef100001000000000000000000000033dd10001700000000000000b4ef1000020000000000000000000000e4ef100004000000000000000000000018dd10001b0000000000000004f0100004000000000000000000000064f01000040000000000000000000000704f11000200000000000000104212000600000000000000ebf210000700000000000000ec0312000f000000a7f210004400000064f210004300000040f21000240000001af210002600000000000000704f11000200000000000000104212000600000000000000fef11000030000000000000001f210001900000059f1100027000000f4ae12000000000080f110005a000000daf11000240000000000000088e6110006000000000000001042120006000000000000003ae8110009000000000000001042120006000000000000003df110000c000000000000007b6a1200030000000000000049f1100010000000000000007b6a12000300000084f0100041000000f4ae120000000000c5f01000560000001bf110002200000020466f72636566756c6c792065737461626c6973682061206368616e6e656c2066726f6d207468652073656e64657220746f2074686520726563697069656e742e2054686973206973206571756976616c656e7420746f2073656e64696e6720616e206048726d703a3a68726d705f696e69745f6f70656e5f6368616e6e656c602065787472696e73696320666f6c6c6f776564206279206048726d703a3a68726d705f6163636570745f6f70656e5f6368616e6e656c602e6d61785f63617061636974796d61785f6d6573736167655f73697a652053656e64206120646f776e776172642058434d20746f2074686520676976656e20706172612e2054686520676976656e2070617261636861696e2073686f756c6420657869737420616e6420746865207061796c6f61642073686f756c64206e6f74206578636565642074686520707265636f6e666967757265642073697a652060636f6e6669672e6d61785f646f776e776172645f6d6573736167655f73697a65602e78636d78636d3a3a6f70617175653a3a56657273696f6e656458636d20446f776e677261646520612070617261636861696e20746f2061207061726174687265616420557067726164652061207061726174687265616420746f20612070617261636861696e205363686564756c652061207061726120746f20626520636c65616e656420757020617420746865207374617274206f6620746865206e6578742073657373696f6e2e205363686564756c652061207061726120746f20626520696e697469616c697a656420617420746865207374617274206f6620746865206e6578742073657373696f6e2e67656e657369735061726153657373696f6e496e666f0000000000000024f4100014000000000000000000000038f4100011000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12004cf4100000000000000000005cf410000300000000000000010000000000000074f41000150000000000000000000000db9912000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12008cf4100000000000000000009cf4100001000000000000000100000000000000a4f41000080000000106000000000000db9912000c00000000000000f1ff10000b000000000000000000000000000000000000000000000000000000f4ae1200acf410000000000000000000bcf4100003000000000000000000000041737369676e6d656e744b657973556e736166655665633c41737369676e6d656e7449643e00000031000000000000000100000050000000e7f510002900000010f610005b0000006bf610002b0000004561726c6965737453746f72656453657373696f6e00000031000000000000000100000042000000a7f510004000000053657373696f6e7331000000000000000100000067000000d4f4100029000000fdf410004d0000004af510005d0000002053657373696f6e20696e666f726d6174696f6e20696e206120726f6c6c696e672077696e646f772e2053686f756c64206861766520616e20656e74727920696e2072616e676520604561726c6965737453746f72656453657373696f6e2e2e3d43757272656e7453657373696f6e496e646578602e20446f6573206e6f74206861766520616e7920656e7472696573206265666f7265207468652073657373696f6e20696e64657820696e207468652066697273742073657373696f6e206368616e6765206e6f74696669636174696f6e2e20546865206561726c696573742073657373696f6e20666f722077686963682070726576696f75732073657373696f6e20696e666f2069732073746f7265642e2041737369676e6d656e74206b65797320666f72207468652063757272656e742073657373696f6e2e204e6f7465207468617420746869732041504920697320707269766174652064756520746f206974206265696e672070726f6e6520746f20276f66662d62792d6f6e65272061742073657373696f6e20626f756e6461726965732e205768656e20696e20646f7562742c20757365206053657373696f6e73602041504920696e73746561642e000031000000040000000400000068000000310000000400000004000000690000004269742d566563746f72206361706163697479206578636565646564ffffff1fd8f710001e000000bf1212000300000082f7100056000000ec0300000900000028f710005a000000240200000900000028f710005a0000001f0100000e00000028f710005a0000002b020000090000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7665632f6170692e72732f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7665632e72734269742d566563746f722063617061636974792065786365656465643a20000071f810002d00000019f8100058000000450500000900000073746f72656c6f61642f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f736c6963652e7273436f7079696e67206265747765656e20736c6963657320726571756972657320657175616c206c656e677468730000c0f8100014000000d4f810000400000019f81000580000004109000009000000496e646578206f7574206f662072616e67653a20203e3d2074bc120094000000e50000002e00000000000000d2dd10000b0000000000000074f91000010000000000000000000000a01e110008000000000000007cf91000010000000000000000000000cddd1000050000000000000084f91000010000000000000000000000c2dd10000b000000000000008cf91000010000000000000000000000dddd1000090000000000000094f9100001000000000000004bfa10002400000021fa10002a00000004fa10001d000000d1f91000330000009cf91000350000002054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e2054686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e2054686520696e64657820776173206e6f7420617661696c61626c652e2054686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e2054686520696e64657820776173206e6f7420616c72656164792061737369676e65642e00b3fa10000700000098fa10001b00000010ab1200020000001457120041000000de0300000100000042616420696e70757420646174612070726f766964656420746f2076657273696f6e0000c4fa10000d000000657865637574655f626c6f636b000000dcfa100010000000696e697469616c697a655f626c6f636bf4fa1000080000006d6574616461746104fb10000f0000006170706c795f65787472696e736963001cfb10000e00000066696e616c697a655f626c6f636b000034fb100013000000696e686572656e745f65787472696e736963730050fb10000f000000636865636b5f696e686572656e74730068fb10001400000076616c69646174655f7472616e73616374696f6e84fb10000f0000006f6666636861696e5f776f726b6572009cfb10000a00000076616c696461746f72730000b0fb10001000000076616c696461746f725f67726f757073c8fb100012000000617661696c6162696c6974795f636f7265730000e4fb1000190000007065727369737465645f76616c69646174696f6e5f6461746100000008fc100018000000636865636b5f76616c69646174696f6e5f6f75747075747328fc10001700000073657373696f6e5f696e6465785f666f725f6368696c64001f5111000f00000050fc10001a000000686973746f726963616c5f76616c69646174696f6e5f636f6465000074fc10001e00000063616e6469646174655f70656e64696e675f617661696c6162696c69747900009cfc10001000000063616e6469646174655f6576656e7473b4fc10000c00000073657373696f6e5f696e666fc8fc10000c000000646d715f636f6e74656e7473dcfc10001e000000696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e7473000004fd10001700000076616c69646174696f6e5f636f64655f62795f686173680024fd1000130000006772616e6470615f617574686f7269746965730040fd10002d0000007375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300000078fd10001c00000067656e65726174655f6b65795f6f776e6572736869705f70726f6f669cfd10000d000000636f6e66696775726174696f6e000000b4fd10001300000063757272656e745f65706f63685f737461727400d0fd10000d00000063757272656e745f65706f6368000000e8fd10000a0000006e6578745f65706f63680000fcfd10000b000000617574686f7269746965730010fe10001500000067656e65726174655f73657373696f6e5f6b65797300000030fe1000130000006465636f64655f73657373696f6e5f6b657973004cfe10000d00000076616c696461746f725f73657400000064fe10000e00000067656e65726174655f70726f6f6600007cfe10000c0000007665726966795f70726f6f6690fe1000160000007665726966795f70726f6f665f73746174656c6573730000b0fe10000e000000626573745f66696e616c697a65640000c8fe10000f00000069735f6b6e6f776e5f68656164657200e0fe10000d0000006163636f756e745f6e6f6e6365000000f8fe10000a00000071756572795f696e666f00000cff10001100000071756572795f6665655f64657461696c736772616e62616265696d6f6e706172616173676e617564696265656653797374656d4261626554696d657374616d70496e646963657342616c616e6365735472616e73616374696f6e5061796d656e74417574686f72736869704f6666656e636573486973746f726963616c4772616e647061417574686f72697479446973636f7665727950617261636861696e734f726967696e50617261636861696e73436f6e66696775726174696f6e536861726564496e636c7573696f6e5061726173496e686572656e745363686564756c6572446d7053657373696f6e496e666f41756374696f6e7343726f77646c6f616e536c6f747350617261735375646f577261707065725375646f4d6d724d6d724c656166427269646765526f636f636f4772616e647061427269646765576f636f636f4772616e64706156616c696461746f724d616e616765725574696c69747950726f787958636d50616c6c6574006a0000002c000000040000006b0000006b0000006c0000003100000000000000010000006d0000006e0000006f0000003100000000000000010000006d0000006d0000006f0000000000000039ff10000600000000000000700000000000000000000000000000000000000000000000000000000000000071000000000000000000000000000000720000000000000000000000000000007300000000000000000000000000000074000000000000000000000000000000000000003fff100004000000000000007500000000000000000000000000000000000000000000000000000000000000760000000000000000000000020000000000000000000000000000000000000077000000000000000000000000000000780000000000000000000000010000000000000043ff1000090000000000000079000000000000000000000000000000000000000000000000000000000000007a000000000000000000000002000000000000000000000000000000000000007b0000000000000000000000000000007c000000000000000000000002000000000000004cff100007000000000000007d000000000000000000000000000000000000000000000000000000000000007e0000000000000000000000000000007f00000000000000000000000000000080000000000000000000000000000000810000000000000000000000030000000000000053ff10000800000000000000820000000000000000000000000000000000000000000000000000000000000083000000000000000000000000000000840000000000000000000000000000008500000000000000000000000000000086000000000000000000000004000000000000005bff1000120000000000000087000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000880000000000000000000000000000007c000000000000000000000005000000000000006dff10000a0000000000000089000000000000000000000000000000000000000000000000000000000000008a000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000008b0000000000000000000000060000000000000077ff100008000000000000008c000000000000000000000000000000000000000000000000000000000000007c0000000000000000000000000000008d0000000000000000000000000000007c0000000000000000000000000000007c000000000000000000000007000000000000007fff10000a00000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c000000000000000000000008000000000000008c3c120007000000000000008e000000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000900000000000000000000000000000007c000000000000000000000000000000910000000000000000000000090000000000000089ff10000700000000000000920000000000000000000000000000000000000000000000000000000000000093000000000000000000000000000000940000000000000000000000000000007c0000000000000000000000000000009500000000000000000000000a00000000000000987c11000800000000000000960000000000000000000000000000000000000000000000000000000000000097000000000000000000000000000000980000000000000000000000000000007c0000000000000000000000000000009900000000000000000000000b0000000000000090ff1000120000000200000000000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000000c00000000000000a2ff10001000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000000d00000000000000b2ff100017000000000000009a000000000000000000000000000000000000000000000000000000000000009b000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000009c00000000000000000000000e00000000000000c9ff100006000000000000009d000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000000f00000000000000cfff100009000000000000009e000000000000000000000000000000000000000000000000000000000000007c0000000000000000000000000000009f0000000000000000000000000000007c000000000000000000000000000000a000000000000000000000001000000000000000d8ff10000d00000000000000a100000000000000000000000000000000000000000000000000000000000000a2000000000000000000000002000000000000000000000000000000000000007c000000000000000000000000000000a300000000000000000000001100000000000000e5ff10000900000000000000a4000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c0000000000000000000000120000000000000074b711000500000000000000a500000000000000000000000000000000000000000000000000000000000000a6000000000000000000000000000000a70000000000000000000000000000007c000000000000000000000000000000a800000000000000000000001300000000000000298512000b00000000000000a900000000000000000000000000000000000000000000000000000000000000aa000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000001400000000000000eeff10000300000000000000ab000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000001500000000000000246e11000300000000000000ac000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000001600000000000000e0b611000400000000000000ad00000000000000000000000000000000000000000000000000000000000000ae000000000000000000000000000000af0000000000000000000000000000007c000000000000000000000000000000b000000000000000000000001700000000000000f1ff10000b00000000000000b1000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000001800000000000000a12e11000900000000000000b200000000000000000000000000000000000000000000000000000000000000b3000000000000000000000000000000b4000000000000000000000000000000b5000000000000000000000000000000b600000000000000000000001900000000000000fcff10000800000000000000b700000000000000000000000000000000000000000000000000000000000000b8000000000000000000000000000000b9000000000000000000000000000000ba000000000000000000000000000000bb00000000000000000000001a00000000000000040011000900000000000000bc00000000000000000000000000000000000000000000000000000000000000bd000000000000000000000000000000be000000000000000000000000000000bf000000000000000000000000000000c000000000000000000000001b000000000000000d0011000500000000000000c100000000000000000000000000000000000000000000000000000000000000c2000000000000000000000000000000c3000000000000000000000000000000c4000000000000000000000000000000c500000000000000000000001c000000000000001200110010000000020000000000000000000000000000000000000000000000000000000000000000000000c6000000000000000000000002000000000000000000000000000000000000007c000000000000000000000000000000c700000000000000000000001d00000000000000220011000400000000000000c800000000000000000000000000000000000000000000000000000000000000c9000000000000000000000000000000ca0000000000000000000000000000007c000000000000000000000000000000cb00000000000000000000001e00000000000000260011000300000000000000cc000000000000000000000000000000000000000000000000000000000000007c000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000001f00000000000000903012000500000000000000cd0000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000002000000000000000290011000700000000000000ce0000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000002100000000000000300011001300000000000000cf00000000000000000000000000000000000000000000000000000000000000d000000000000000000000000200000000000000000000000000000000000000d1000000000000000000000000000000d200000000000000000000002800000000000000430011001300000000000000d300000000000000000000000000000000000000000000000000000000000000d000000000000000000000000200000000000000000000000000000000000000d4000000000000000000000000000000d200000000000000000000002900000000000000560011001000000000000000d500000000000000000000000000000000000000000000000000000000000000d6000000000000000000000000000000d70000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000002a0000000000000048b411000a00000000000000d800000000000000000000000000000000000000000000000000000000000000d9000000000000000000000000000000da0000000000000000000000000000007c000000000000000000000000000000db00000000000000000000005000000000000000401212000a00000000000000dc00000000000000000000000000000000000000000000000000000000000000dd000000000000000000000000000000de0000000000000000000000000000007c000000000000000000000000000000df000000000000000000000051000000000000006600110007000000020000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000e10000000000000000000000000000007c0000000000000000000000000000007c00000000000000000000005a000000000000006d0011000500000000000000e200000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000e4000000000000000000000000000000e5000000000000000000000000000000e600000000000000000000005b00000000000000720011000900000000000000e700000000000000000000000000000000000000000000000000000000000000e8000000000000000000000000000000e90000000000000000000000000000007c000000000000000000000000000000ea0000000000000000000000630000000000000000000000681311000600000000000000000000006e1311001200000000000000000000002a230000000000000000000080131100100000000000000000000000726f636f636f7061726974792d726f636f636f2d76312e36df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d01000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b0100000049eaaf1b548a0cb00100000091d5df18b0d2cf5801000000d1fa4cb97410091701000000e5bdc752b8ec2ba101000000bc9d89904f5b923f0100000037c8bb1350a9a2a80100000000000000041511000e00000000000000141511000100000000000000000000001c1511001500000000000000341511000100000000000000000000003c1511001300000000000000501511000100000000000000000000005815110012000000000000006c15110001000000000000000000000074151100090000000000000080151100010000000000000000000000881511001700000000000000a0151100010000000000000000000000a81511000b00000000000000b4151100010000000000000056657374696e6742616c616e63650000c1161100270000004c69717569646974795265737472696374696f6e730000008f16110032000000496e73756666696369656e7442616c616e636500711611001e0000004578697374656e7469616c4465706f7369740000361611003b0000004b656570416c69766500000012161100240000004578697374696e6756657374696e675363686564756c6500df15110033000000446561644163636f756e7400bc151100230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c7565204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c756570616c6c65745f62616c616e6365733a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f62616c616e6365732f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f70617261735f7265676973747261722e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c657470616c6c65745f7375646f3a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f7375646f2f7372632f6c69622e727370616c6c65745f6d6d722f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6d65726b6c652d6d6f756e7461696e2d72616e67652f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a6f726967696e2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f6f726967696e2e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d702f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f756d702e72737472616e736665725f6b6565705f616c697665666f7263655f7472616e736665727365745f62616c616e63657472616e736665726b19110045000000be000000010000005468652070726f6f6620697320696e636f72726563742e4d65726b6c654d6f756e7461696e52616e67654e756d6265724f664c65617665735468652070726f6f662068617320696e636f7272656374206e756d626572206f66206c6561766573206f722070726f6f66206974656d732e6c1a11001a0000004552524f523a20436f72727570746564207374617465206174206d6d7200000000000000ac1b1100080000000000000000000000b41b110016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200cc1b11000000000000000000dc1b1100010000000000000001000000000000001e1a11000e0000000000000000000000986f120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e41b11000000000000000000f41b110001000000000000000100000000000000fc1b1100050000000106000000000000986f12000300000000000000b41b110016000000000000000000000000000000000000000000000000000000f4ae1200041c11000000000000000000141c1100040000000000000000000000526f6f74486173683c5420617320436f6e6669673c493e3e3a3a48617368000031000000000000000100000043000000fa1c11001600000031000000000000000100000056000000ce1c11002c0000004e6f64657300000031000000000000000100000046000000341c110020000000f4ae120000000000541c11004b0000009f1c11002f00000020486173686573206f6620746865206e6f64657320696e20746865204d4d522e204e6f7465207468697320636f6c6c656374696f6e206f6e6c7920636f6e7461696e73204d4d52207065616b732c2074686520696e6e6572206e6f6465732028616e64206c65617665732920617265207072756e656420616e64206f6e6c792073746f72656420696e20746865204f6666636861696e2044422e2043757272656e742073697a65206f6620746865204d4d5220286e756d626572206f66206c6561766573292e204c6174657374204d4d5220526f6f7420686173682e00000000b8b211000d000000000000007c1e1100010000000000000000000000841e11001100000000000000981e1100010000000000000000000000a01e11000800000000000000a81e1100010000000000000000000000b01e11000c00000000000000bc1e1100010000000000000000000000c41e11001000000000000000d41e1100010000000000000000000000703412000c00000000000000dc1e1100010000000000000000000000e41e11000d00000000000000f41e1100010000000000000000000000fc1e110010000000000000000c1f110001000000000000000000000018b311000f00000000000000141f110001000000000000000000000000b311000d000000000000001c1f1100010000000000000000000000241f11000a00000000000000301f11000100000000000000000000000c3412000d00000000000000381f1100010000000000000000000000401f11000b000000000000004c1f110001000000000000005a2111001a000000416c7265616479526567697374657265640000003c2111001e0000004e6f744f776e65721421110028000000436f6465546f6f4c61726765fc201100180000004865616444617461546f6f4c61726765df2011001d000000c6201100190000004e6f7450617261746872656164000000ac2011001a00000043616e6e6f7444657265676973746572952011001700000060201100350000002d20110033000000506172614c6f636b65640000ce1f11005f000000891f1100450000004e6f74526573657276656400541f1100350000002054686520494420676976656e20666f7220726567697374726174696f6e20686173206e6f74206265656e2072657365727665642e2054686520696420796f752061726520747279696e6720746f20726567697374657220697320726573657276656420666f722073797374656d2070617261636861696e732e2050617261206973206c6f636b65642066726f6d206d616e6970756c6174696f6e20627920746865206d616e616765722e204d757374207573652070617261636861696e206f722072656c617920636861696e20676f7665726e616e63652e2043616e6e6f74207363686564756c652075706772616465206f66207061726174687265616420746f2070617261636861696e2043616e6e6f74207363686564756c6520646f776e6772616465206f662070617261636861696e20746f20706172617468726561642043616e6e6f74206465726567697374657220706172612050617261206973206e6f74206120506172617468726561642e2050617261206973206e6f7420612050617261636861696e2e20496e76616c69642070617261206865616420646174612073697a652e20496e76616c6964207061726120636f64652073697a652e205468652063616c6c6572206973206e6f7420746865206f776e6572206f6620746869732049642e2054686520494420697320616c726561647920726567697374657265642e20546865204944206973206e6f7420726567697374657265642e00000000fc2211001100000000000000102311000100000000000000000000001823110011000000000000002c231100010000000000000000000000342311000d00000000000000442311000100000000000000000000004c2311001100000000000000602311000100000000000000000000006823110011000000000000007c231100010000000000000000000000583412000d0000000000000084231100010000000000000000000000841e110011000000000000008c231100010000000000000000000000942311000b00000000000000a0231100010000000000000000000000a82311000f00000000000000b8231100010000000000000000000000c02311001100000000000000d4231100010000000000000000000000dc2311000a00000000000000e8231100010000000000000000000000b01e11000c00000000000000f0231100010000000000000000000000c41e11001000000000000000f8231100010000000000000000000000002411000c000000000000000c241100010000000000000041756374696f6e496e50726f6772657373000000eb251100250000004c65617365506572696f64496e50617374000000ca251100210000004e6f74506172614f726967696e0000009c2511002e000000506172614e6f74526567697374657265640000008525110017000000506172614e6f744f6e626f617264696e670000006025110025000000162511004a000000f524110021000000496e76616c6964436f646500cf24110026000000556e7365744465706c6f7944617461009a241100350000004e6f7443757272656e7441756374696f6e00000083241100170000004e6f7441756374696f6e00007324110010000000552411001e0000002f2411002600000041756374696f6e456e646564142411001b0000002041756374696f6e2068617320616c726561647920656e6465642e20476976656e20696e697469616c2068656164206461746120697320746f6f206c617267652e20476976656e20636f64652073697a6520697320746f6f206c617267652e204e6f7420616e2061756374696f6e2e204e6f7420612063757272656e742061756374696f6e2e204465706c6f796d656e74206461746120686173206e6f74206265656e2073657420666f7220746869732070617261636861696e2e2054686520636f6465206d75737420636f72726573706f6e6420746f2074686520686173682e2050617261636861696e20697320616c726561647920726567697374657265642e20546865206f726967696e20666f7220746869732063616c6c206d75737420626520746865206f726967696e2077686f2072656769737465726564207468652070617261636861696e2e205468652070617261636861696e204944206973206e6f74206f6e2d626f617264696e672e2050617261206973206e6f74207265676973746572656420546865206f726967696e20666f7220746869732063616c6c206d75737420626520612070617261636861696e2e20546865206c6561736520706572696f6420697320696e2074686520706173742e20546869732061756374696f6e20697320616c726561647920696e2070726f67726573732e706172615f61756374696f6e6069203c2034603b2071656431000000080000000400000029000000b8771100460000005d020000400000006069203c204c505053603b20606a203c2069603b20606a202b2031203c204c505053603b20716564b877110046000000630200001a0000004d4d522070757368206e65766572206661696c732e000000741811006c000000a40000001c0000004d4d522066696e616c697a65206e65766572206661696c732e00000031000000010000000100000013000000741811006c000000a7000000310000000427110098000000de0100000900000004271100980000007c0200000e0000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f6d6f642e7273526571756972655375646f00000000002c2811000500000000000000342811000100000000000000000000003c281100010000000000000000000000082712000a0000000000000030621200010000000000000000000000442811000100000000000000000000004c2811000a00000000000000342811000100000000000000000000003c28110001000000000000005375646964000000934212000e000000962811002300000056281100400000005375646f4173446f6e6520546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d000000000000006c291100040000000000000070291100010000000000000000000000882911000a0000000000000000000000d82911001500000000000000f0291100020000000000000000000000202a11000a0000000000000000000000702a11000700000000000000782a1100010000000000000000000000902a1100090000000000000000000000d82a11000700000000000000e02a1100020000000000000000000000102b11000b000000000000007375646f00000000c71a12000400000000000000cb1a120018000000c92c11004e000000f4ae120000000000901a120034000000f4ae120000000000a26812000b000000cd2b110008000000d52b110019000000ee2b110018000000062c110032000000e66812000c0000007375646f5f756e636865636b65645f77656967687400000000000000c71a12000400000000000000cb1a12001800000000000000c42d110007000000000000000797120006000000c92c11004e000000172d11004c000000632d11002d000000f4ae120000000000901a120034000000f4ae120000000000a26812000b000000cd2b110008000000902d110034000000e66812000c0000007365745f6b65790000000000d29512000300000000000000382c1100230000005b2c11005d000000f4ae120000000000901a120034000000f4ae120000000000a26812000b000000cd2b110008000000d52b110019000000b82c110011000000e66812000c0000007375646f5f61730000000000254e12000300000000000000382c11002300000000000000c71a12000400000000000000cb1a120018000000682b110054000000bc2b110011000000f4ae120000000000901a120034000000f4ae120000000000a26812000b000000cd2b110008000000d52b110019000000ee2b110018000000062c110032000000e66812000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204f2831292e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e20546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e5f7765696768740000000000706a1200030000000000000000000000137612000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12002c2e110000000000000000003c2e1100010000000000000001000000310000000000000001000000eb000000442e1100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e72657365727665666f7263655f72656d6f76655f6c6f636b7377617064657265676973746572666f7263655f7265676973746572726567697374657252656769737472617263616e63656c5f61756374696f6e6269646e65775f61756374696f6e000000000000283011000700000000000000303011000200000000000000000000004030110001000000000000000000000048301100080000000000000030301100020000000000000000000000503011000200000000000000000000006030110008000000000000006830110003000000000000000000000080301100010000000000000000000000883011000a0000000000000094301100030000000000000000000000ac301100010000000000000000000000b4301100070000000000000030301100020000000000000000000000bc301100010000000000000000000000c4301100080000000000000030301100020000000000000000000000cc301100010000000000000000000000d43011000a0000000000000030301100020000000000000000000000e0301100010000000000000000000000e83011001200000000000000fc3011000400000000000000000000001c3111000300000000000000456e646f77656400ad62120009000000d595120007000000a833110049000000447573744c6f7374243311005000000074331100340000005472616e73666572ad62120009000000ad62120009000000d595120007000000fc3211002800000042616c616e63655365740000ad62120009000000d595120007000000d595120007000000c9321100330000004465706f73697400813211004800000052657365727665643932110048000000556e72657365727665640000ef3111004a0000005265736572766552657061747269617465640000ad62120009000000ad62120009000000d595120007000000e93111000600000034311100540000008831110037000000bf3111002a00000020536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742e2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735c5d53746174757320536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655c5d20536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655c5d20536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e205c5b77686f2c206465706f7369745c5d20412062616c616e6365207761732073657420627920726f6f742e205c5b77686f2c20667265652c2072657365727665645c5d205472616e73666572207375636365656465642e205c5b66726f6d2c20746f2c2076616c75655c5d20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e205c5b6163636f756e742c2062616c616e63655c5d20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6163636f756e742c20667265655f62616c616e63655c5d00000000000000dc1911000800000000000000a4341100020000000000000000000000d43411001b0000000000000000000000d11911000b00000000000000ac351100030000000000000000000000f4351100120000000000000000000000c31911000e0000000000000084361100030000000000000000000000cc361100060000000000000000000000b01911001300000000000000a4341100020000000000000000000000fc3611000b0000000000000000000000953911000400000000000000382c11002300000000000000d24e120005000000000000009939110013000000f13b110036000000f4ae120000000000273c110042000000693c110048000000b13c110045000000f63c11002d000000f4ae120000000000233d110046000000f4ae120000000000a26812000b000000693d11004c000000b53d110033000000e83d11005a000000f4ae120000000000423e110013000000f4ae120000000000553e110054000000a93e11004b000000f43e110035000000293f110058000000813f110052000000d33f11003e000000114011002200000033401100510000008440110037000000bb40110045000000e66812000c00000000000000254e12000300000000000000382c11002300000000000000dd3b11000800000000000000993911001300000000000000e53b11000c000000000000009939110013000000ac39110025000000f4ae120000000000d139110048000000193a1100420000005b3a110046000000a13a110040000000f4ae120000000000e13a11002d000000f4ae120000000000a26812000b0000000e3b1100200000002e3b1100310000005f3b110016000000753b11000f000000843b11001a0000009e3b110019000000b73b110026000000e66812000c000000000000008f3911000600000000000000382c11002300000000000000953911000400000000000000382c11002300000000000000d24e120005000000000000009939110013000000bc38110054000000103911000b000000a26812000b0000001b391100500000006b39110024000000e66812000c0000005437110054000000a837110010000000f4ae120000000000b83711002f000000f4ae120000000000e737110031000000a26812000b000000183811003a00000052381100180000006a38110047000000b13811000b0000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572202d2043686561706572207468616e207472616e736665722062656361757365206163636f756e742063616e6e6f74206265206b696c6c65642e202d2042617365205765696768743a2035312e3420c2b573202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374202873656e64657220697320696e206f7665726c617920616c72656164792920233c2f7765696768743e2045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069732020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e736f7572636564657374436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a20202020202d204372656174696e673a2032372e353620c2b57320202020202d204b696c6c696e673a2033352e313120c2b573202d204442205765696768743a203120526561642c203120577269746520746f206077686f606e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e74202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e00000000501412000d0000000000000000000000804211000a000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12008c42110000000000000000009c421100010000000000000001000000000000000c761200070000000102000000000000137612000c00000000000000a442110017000000000000000000000000000000000000000000000000000000f4ae1200bc4211000000000000000000cc42110003000000000000000100000000000000e4421100050000000102000000000000137612000c00000000000000e94211001c000000000000000000000000000000000000000000000000000000f4ae12000843110000000000000000001843110002000000000000000100000000000000284311000e00000000000000000000003643110008000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120040431100000000000000000050431100030000000000000001000000543a3a42616c616e63650000310000000000000001000000ec00000091441100260000004163636f756e74446174613c543a3a42616c616e63653e00310000000000000001000000ed000000264411001b000000f4ae12000000000041441100500000004c6f636b735665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e00000031000000000000000100000050000000af4311002e000000dd4311004900000053746f7261676556657273696f6e52656c65617365730000310000000000000001000000ee000000684311001f000000f4ae12000000000087431100280000002053746f726167652076657273696f6e206f66207468652070616c6c65742e20546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e0000000000581511001200000000000000804211000a00000000000000f4ae1200f04411000000000000000000004511000100000000000000310000000000000001000000ef000000084511003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e0000000046110023000000da4511002600000072756e74696d653a3a6261626570616c6c65745f626162653a3a65717569766f636174696f6e2f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f626162652f7372632f65717569766f636174696f6e2e72734572726f72207375626d697474696e672065717569766f636174696f6e207265706f72743a205375626d697474656420424142452065717569766f636174696f6e207265706f72742e002c461100260000005375626d6974746564204752414e4450412065717569766f636174696f6e207265706f72742e000000000000992e110008000000000000005c471100030000000000000000000000a44711000e00000000000000000000008b2e11000e00000000000000144811000500000000000000000000008c481100060000000000000000000000812e11000a00000000000000bc481100010000000000000000000000d44811000300000000000000000000007d2e11000400000000000000ec4811000200000000000000000000001c4911000b00000000000000000000006c2e11001100000000000000d0e2110001000000000000000000000074491100040000000000000000000000652e11000700000000000000f4ae1200000000000000000000000000944911000e0000000000000000000000704f11000200000000000000104212000600000000000000135111000c000000000000008bfc110008000000000000001f5111000f0000000000000029fc11000e0000002e5111003f000000f4ae1200000000003f4b11000d0000006d511100310000009e5111004c000000ea511100410000002b5211004a000000f4ae120000000000ab4b1100110000007552110066000000db52110037000000f4ae120000000000054c11000a000000125311003600000000000000254e12000300000000000000137612000c000000000000000c5111000700000000000000935412000c00000000000000704f11000200000000000000104212000600000000000000135111000c000000000000008bfc110008000000000000001f5111000f0000000000000029fc11000e0000001950110038000000f4ae120000000000515011002f000000f4ae1200000000008050110045000000c55011004700000000000000704f110002000000000000001042120006000000774f110042000000f4ae120000000000b94f11006000000000000000704f11000200000000000000104212000600000000000000724f110005000000000000001042120006000000244d110037000000f4ae1200000000005b4d110041000000f4ae1200000000009c4d110059000000f54d110057000000f4ae1200000000004c4e110058000000a44e110050000000f44e1100560000004a4f1100260000006b4c110044000000af4c11004e000000f4ae120000000000fd4c110027000000044a110026000000f4ae1200000000002a4a1100540000007e4a110060000000de4a110061000000f4ae1200000000003f4b11000d0000004c4b11005f000000f4ae120000000000ab4b110011000000bc4b110049000000f4ae120000000000054c11000a0000000f4c11005c000000205265736572766520612050617261204964206f6e207468652072656c617920636861696e2e20546869732066756e6374696f6e2077696c6c20726573657276652061206e6577205061726120496420746f206265206f776e65642f6d616e6167656420627920746865206f726967696e206163636f756e742e20546865206f726967696e206163636f756e742069732061626c6520746f2072656769737465722068656164206461746120616e642076616c69646174696f6e20636f6465207573696e67206072656769737465726020746f20637265617465206120706172617468726561642e205573696e672074686520536c6f74732070616c6c65742c206120706172617468726561642063616e207468656e20626520757067726164656420746f2067657420612070617261636861696e20736c6f742e20232320417267756d656e7473202d20606f726967696e603a204d7573742062652063616c6c6564206279206120605369676e656460206f726967696e2e204265636f6d657320746865206d616e616765722f6f776e6572206f6620746865206e657720706172612049442e202323204465706f736974732f4665657320546865206f726967696e206d75737420726573657276652061206465706f736974206f662060506172614465706f7369746020666f722074686520726567697374726174696f6e2e202323204576656e7473205468652060526573657276656460206576656e7420697320656d697474656420696e2063617365206f6620737563636573732c2077686963682070726f76696465732074686520494420726573657276656420666f72207573652e2052656d6f76652061206d616e61676572206c6f636b2066726f6d206120706172612e20546869732077696c6c20616c6c6f7720746865206d616e61676572206f6620612070726576696f75736c79206c6f636b6564207061726120746f2064657265676973746572206f7220737761702061207061726120776974686f7574207573696e6720676f7665726e616e63652e2043616e206f6e6c792062652063616c6c65642062792074686520526f6f74206f726967696e2e205377617020612070617261636861696e207769746820616e6f746865722070617261636861696e206f7220706172617468726561642e20546865206f726967696e206d75737420626520526f6f742c2074686520607061726160206f776e65722c206f72207468652060706172616020697473656c662e2054686520737761702077696c6c2068617070656e206f6e6c7920696620746865726520697320616c726561647920616e206f70706f7369746520737761702070656e64696e672e204966207468657265206973206e6f742c2074686520737761702077696c6c2062652073746f72656420696e207468652070656e64696e67207377617073206d61702c20726561647920666f722061206c6174657220636f6e6669726d61746f727920737761702e20546865206050617261496460732072656d61696e206d617070656420746f207468652073616d652068656164206461746120616e6420636f646520736f2065787465726e616c20636f64652063616e2072656c79206f6e20605061726149646020746f2062652061206c6f6e672d7465726d206964656e746966696572206f662061206e6f74696f6e616c202270617261636861696e222e20486f77657665722c207468656972207363686564756c696e6720696e666f2028692e652e2077686574686572207468657927726520612070617261746872656164206f722070617261636861696e292c2061756374696f6e20696e666f726d6174696f6e20616e64207468652061756374696f6e206465706f736974206172652073776974636865642e69646f746865722044657265676973746572206120506172612049642c2066726565696e6720616c6c206461746120616e642072657475726e696e6720616e79206465706f7369742e205468652063616c6c6572206d75737420626520526f6f742c2074686520607061726160206f776e65722c206f72207468652060706172616020697473656c662e205468652070617261206d757374206265206120706172617468726561642e20466f7263652074686520726567697374726174696f6e206f6620612050617261204964206f6e207468652072656c617920636861696e2e20546869732066756e6374696f6e206d7573742062652063616c6c6564206279206120526f6f74206f726967696e2e20546865206465706f7369742074616b656e2063616e2062652073706563696669656420666f72207468697320726567697374726174696f6e2e20416e79205061726149642063616e20626520726567697374657265642c20696e636c7564696e67207375622d3130303020494473207768696368206172652053797374656d2050617261636861696e732e6465706f73697467656e657369735f6865616476616c69646174696f6e5f636f64652052656769737465722068656164206461746120616e642076616c69646174696f6e20636f646520666f72206120726573657276656420506172612049642e202d20606f726967696e603a204d7573742062652063616c6c6564206279206120605369676e656460206f726967696e2e202d20606964603a2054686520706172612049442e204d757374206265206f776e65642f6d616e616765642062792074686520606f726967696e60207369676e696e67206163636f756e742e202d206067656e657369735f68656164603a205468652067656e6573697320686561642064617461206f66207468652070617261636861696e2f7468726561642e202d206076616c69646174696f6e5f636f6465603a2054686520696e697469616c2076616c69646174696f6e20636f6465206f66207468652070617261636861696e2f7468726561642e20546865206f726967696e207369676e6564206163636f756e74206d7573742072657365727665206120636f72726573706f6e64696e67206465706f73697420666f722074686520726567697374726174696f6e2e20416e797468696e6720616c72656164792072657365727665642070726576696f75736c7920666f7220746869732070617261204944206973206163636f756e74656420666f722e2054686520605265676973746572656460206576656e7420697320656d697474656420696e2063617365206f6620737563636573732e00000000685411000b00000001050000000000001042120006000000000000001042120006000000000000000000000000000000000000000000000000000000f4ae1200745411000000000000000000845411000100000000000000000000000000000074b711000500000001050000000000001042120006000000000000008c54110024000000000000000000000000000000000000000000000000000000f4ae1200b05411000000000000000000c054110004000000000000000000000000000000e05411000e00000000000000000000001042120006000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200f054110000000000000000000055110001000000000000000100000050656e64696e67537761700031000000000000000100000046000000125611001900000050617261496e666f3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e310000000000000001000000460000002055110041000000f4ae1200000000006155110064000000c55511004d0000004e657874467265655061726149640000310000000000000001000000f0000000085511001800000020546865206e65787420667265652060506172614964602e20416d6f756e742068656c64206f6e206465706f73697420666f722065616368207061726120616e6420746865206f726967696e616c206465706f7369746f722e2054686520676976656e206163636f756e7420494420697320726573706f6e7369626c6520666f72207265676973746572696e672074686520636f646520616e6420696e697469616c206865616420646174612c20627574206d6179206f6e6c7920646f20736f2069662069742069736e27742079657420726567697374657265642e2028416674657220746861742c206974277320757020746f20676f7665726e616e636520746f20646f20736f2e292050656e64696e672073776170206f7065726174696f6e732e00000000000c5711000b00000000000000935412000c00000000000000f4ae1200185711000000000000000000f4ae1200000000000000000000000000285711001200000000000000935412000c00000000000000f4ae12003c5711000000000000000000f4ae12000000000000000000000000004c5711000b000000000000007b6a12000300000000000000f4ae1200585711000000000000000000f4ae1200000000000000000000000000685711000b000000000000007b6a12000300000000000000f4ae1200745711000000000000000000f4ae12000000000000000000506172614465706f73697400310000000000000001000000f1000000446174614465706f736974506572427974650000310000000000000001000000f20000004d6178436f646553697a6500310000000000000001000000f30000004d61784865616453697a6500310000000000000001000000f400000000000000085811000a0000000000000014581100020000000000000000000000f4ae1200000000000000000000000000245811000c0000000000000068401200010000000000000000000000f4ae1200000000000000000000000000c4301100080000000000000014581100020000000000000000000000f4ae120000000000000000005265676973746572656400001042120006000000ad6212000900000044657265676973746572656400000000bc5911000e00000000000000cc591100030000000000000000000000e4591100030000000000000000000000fc5911000d000000000000000c5a1100010000000000000000000000145a11000100000000000000000000001c5a11000900000000000000285a1100040000000000000000000000485a1100020000000000000000000000585a11000a00000000000000645a1100040000000000000000000000845a1100030000000000000000000000c43011000800000000000000943011000300000000000000000000009c5a1100020000000000000000000000d43011000a0000000000000030301100020000000000000000000000ac5a1100010000000000000000000000b45a11001200000000000000c85a1100030000000000000000000000e05a1100030000000000000000000000f85a11000b00000000000000045b11000500000000000000000000002c5b11000200000000000000000000003c5b11000d000000000000004c5b11000200000000000000000000005c5b1100020000000000000041756374696f6e537461727465640000e85b11000c000000575c11000b0000001e8512000b0000004f5f110053000000a25f110046000000e85f11002600000041756374696f6e436c6f736564000000e85b11000c000000105f11003f000000576f6e4465706c6f79000000ad62120009000000075f1100090000001042120006000000d5951200070000008c5e110055000000e15e110026000000576f6e52656e6577616c00001042120006000000575c11000b000000575c11000b000000d595120007000000e05d110031000000115e110050000000615e11002b000000515d110053000000a45d11003c000000085d11004900000052657365727665436f6e666973636174656400001042120006000000ad62120009000000d595120007000000625c11005e000000c05c110027000000e75c110021000000426964416363657074656400ad621200090000001042120006000000d595120007000000575c11000b000000575c11000b000000f45b110033000000275c11003000000057696e6e696e674f6666736574000000e85b11000c0000001e8512000b0000006c5b11005c000000c85b110020000000205468652077696e6e696e67206f6666736574207761732063686f73656e20666f7220616e2061756374696f6e2e20546869732077696c6c206d617020696e746f20746865206057696e6e696e67602073746f72616765206d61702e205c5b61756374696f6e5f696e6465782c20626c6f636b5f6e756d6265725c5d41756374696f6e496e6465782041206e65772062696420686173206265656e206163636570746564206173207468652063757272656e742077696e6e65722e205c5b77686f2c20706172615f69642c20616d6f756e742c2066697273745f736c6f742c206c6173745f736c6f745c5d4c65617365506572696f6420536f6d656f6e6520617474656d7074656420746f206c65617365207468652073616d6520736c6f7420747769636520666f7220612070617261636861696e2e2054686520616d6f756e742069732068656c6420696e207265736572766520627574206e6f2070617261636861696e20736c6f7420686173206265656e206c65617365642e205c5b70617261636861696e5f69642c206c65617365722c20616d6f756e745c5d2046756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e205b6269646465722c20616d6f756e745d2046756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e205365636f6e642069732074686520746f74616c2e205b6269646465722c2065787472615f72657365727665642c20746f74616c5f616d6f756e745d20416e206578697374696e672070617261636861696e20776f6e2074686520726967687420746f20636f6e74696e75652e2046697273742062616c616e63652069732074686520657874726120616d6f756e7420726573657665642e205365636f6e642069732074686520746f74616c20616d6f756e742072657365727665642e205b70617261636861696e5f69642c20626567696e2c20636f756e742c20746f74616c5f616d6f756e745d20536f6d656f6e6520776f6e2074686520726967687420746f206465706c6f7920612070617261636861696e2e2042616c616e636520616d6f756e7420697320646564756374656420666f72206465706f7369742e205b6269646465722c2072616e67652c2070617261636861696e5f69642c20616d6f756e745d536c6f7452616e676520416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e205b61756374696f6e5f696e6465785d20416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f20636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e205b61756374696f6e5f696e6465782c206c656173655f706572696f642c20656e64696e675d000000000000bb2e11000b0000000000000094601100020000000000000000000000c4601100050000000000000000000000b82e11000300000000000000ec60110005000000000000000000000064611100100000000000000000000000aa2e11000e00000000000000f4ae1200000000000000000000000000e4611100030000000000000000000000b666110008000000000000000e5012001700000000000000be6611001200000000000000e74f120019000000aa65110016000000f4ae120000000000c065110055000000156611004a0000005f661100570000000000000044e5110004000000000000004c4b12000f000000000000006f6511000d000000000000007c6511001500000000000000916511000a00000000000000e74f120019000000000000009b6511000900000000000000e74f12001900000000000000a46511000600000000000000d74e1200150000001b621100530000006e6211000b000000f4ae1200000000007962110057000000d062110050000000f4ae1200000000002063110056000000766311001d0000009363110054000000e76311001b0000000264110053000000556411004300000098641100510000005564110043000000e9641100530000003c65110033000000fc6111001f000000f4ae120000000000cd491200230000002043616e63656c20616e20696e2d70726f67726573732061756374696f6e2e204d616b652061206e6577206269642066726f6d20616e206163636f756e742028696e636c7564696e6720612070617261636861696e206163636f756e742920666f72206465706c6f79696e672061206e65772070617261636861696e2e204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c206163746976652062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e202d20607375626020697320746865207375622d6269646465722049442c20616c6c6f77696e6720666f72206d756c7469706c6520636f6d706574696e67206269647320746f206265206d6164652062792028616e642066756e64656420627929207468652073616d65206163636f756e742e202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e742076616c7565206f66206041756374696f6e436f756e746572602e202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e61756374696f6e5f696e646578436f6d706163743c41756374696f6e496e6465783e66697273745f736c6f746c6173745f736c6f74616d6f756e74204372656174652061206e65772061756374696f6e2e20546869732063616e206f6e6c792068617070656e207768656e2074686572652069736e277420616c726561647920616e2061756374696f6e20696e2070726f677265737320616e64206d6179206f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e20416363657074732074686520606475726174696f6e60206f6620746869732061756374696f6e20616e642074686520606c656173655f706572696f645f696e64657860206f662074686520696e697469616c206c6561736520706572696f64206f662074686520666f757220746861742061726520746f2062652061756374696f6e65642e6475726174696f6e6c656173655f706572696f645f696e64657800000000391312000e0000000000000000000000e85b11000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12005068110000000000000000006068110001000000000000000100000000000000b51312000b00000000000000000000006868110022000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12008c68110000000000000000009c68110005000000000000000000000000000000c46811000f0000000105000000000000d36811001600000000000000935412000c000000000000000000000000000000000000000000000000000000f4ae1200ec6811000000000000000000fc681100020000000000000000000000000000000c691100070000000105000000000000d97612000e00000000000000136911000e000000000000000000000000000000000000000000000000000000f4ae12002469110000000000000000003469110003000000000000000000000031000000000000000100000042000000d16b110023000000284c65617365506572696f644f663c543e2c20543a3a426c6f636b4e756d62657229000031000000000000000100000044000000976a11003e000000f4ae120000000000d56a110051000000266b1100540000007a6b1100570000005265736572766564416d6f756e747328543a3a4163636f756e7449642c2050617261496429000000310000000000000001000000440000003d6a11004c000000896a11000e00000057696e6e696e6757696e6e696e67446174613c543e000000310000000000000001000000460000004c69110058000000a469110052000000f669110047000000205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e67657320617420656163682073616d706c6520696e207468652066696e616c20456e64696e6720506572696f64206f66207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f207468652053616d706c652053697a652e205468652066697273742073616d706c65206f662074686520656e64696e6720706572696f6420697320303b20746865206c617374206973206053616d706c652053697a65202d2031602e20416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e6720287375622d2972616e6765732e20496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e20546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f757220636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468652061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e204e756d626572206f662061756374696f6e73207374617274656420736f206661722e00000000d46c11000c00000000000000d97612000e00000000000000f4ae1200e06c11000000000000000000f06c1100010000000000000000000000f86c11000c00000000000000d97612000e00000000000000f4ae1200046d11000000000000000000146d11000300000000000000000000002c6d11000e000000000000007b6a12000300000000000000f4ae12003c6d11000000000000000000f4ae12000000000000000000000000004c6d110013000000000000007b6a12000300000000000000f4ae1200606d11000000000000000000f4ae12000000000000000000456e64696e67506572696f64310000000000000001000000f5000000dd6d11004700000053616d706c654c656e677468310000000000000001000000f6000000706d11003c000000f4ae120000000000ac6d110031000000536c6f7452616e6765436f756e740000310000000000000001000000f70000004c65617365506572696f6473506572536c6f7400310000000000000001000000f800000020546865206c656e677468206f6620656163682073616d706c6520746f2074616b6520647572696e672074686520656e64696e6720706572696f642e20456e64696e67506572696f64202f2053616d706c654c656e677468203d20546f74616c2023206f662053616d706c657320546865206e756d626572206f6620626c6f636b73206f76657220776869636820616e2061756374696f6e206d617920626520726574726f6163746976656c7920656e6465642e556d700000000000a86f1100130000000105000000000000104212000600000000000000bb6f110017000000000000000000000000000000000000000000000000000000f4ae1200d46f11000000000000000000e46f110006000000000000000100000000000000147011001600000001050000000000001042120006000000000000002a7011000a000000000000000000000000000000000000000000000000000000f4ae1200347011000000000000000000447011000b0000000000000001000000000000009c7011000d00000000000000000000002c5212000b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200ac7011000000000000000000bc70110005000000000000000100000000000000e47011001a00000000000000000000001042120006000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12000071110000000000000000001071110005000000000000000000000052656c6179446973706174636851756575657356656344657175653c5570776172644d6573736167653e0000310000000000000001000000f9000000d47411005c000000f4ae120000000000307511005e0000008e7511001d000000f4ae120000000000ab7511002a00000052656c61794469737061746368517565756553697a65287533322c20753332293100000000000000010000005b000000b472110051000000f4ae120000000000057311003c0000004173110038000000f4ae120000000000797311005d000000d67311005e000000347411004f000000f4ae120000000000d5f411000b00000083741100510000004e656564734469737061746368000000310000000000000001000000fa000000eb71110046000000f4ae120000000000d5f411000b000000317211004d0000007e721100360000004e6578744469737061746368526f756e64537461727457697468000031000000000000000100000046000000387111005f0000009771110011000000f4ae120000000000d5f411000b000000a8711100430000002054686973206973207468652070617261207468617420676574732077696c6c20676574206469737061746368656420666972737420647572696e6720746865206e6578742075707761726420646973706174636861626c6520717565756520657865637574696f6e20726f756e642e202d2049662060536f6d65287061726129602c207468656e20607061726160206d7573742062652070726573656e7420696e20604e656564734469737061746368602e20546865206f726465726564206c697374206f6620605061726149646073207468617420686176652061206052656c6179446973706174636851756575656020656e7472792e202d2054686520736574206f66206974656d732066726f6d207468697320766563746f722073686f756c642062652065786163746c792074686520736574206f6620746865206b65797320696e2020206052656c617944697370617463685175657565736020616e64206052656c61794469737061746368517565756553697a65602e2053697a65206f6620746865206469737061746368207175657565732e204361636865732073697a6573206f66207468652071756575657320696e206052656c617944697370617463685175657565602e204669727374206974656d20696e20746865207475706c652069732074686520636f756e74206f66206d6573736167657320616e64207365636f6e642069732074686520746f74616c206c656e6774682028696e20627974657329206f6620746865206d657373616765207061796c6f6164732e204e6f74652074686174207468697320697320616e20617578696c617279206d617070696e673a206974277320706f737369626c6520746f2074656c6c2074686520627974652073697a6520616e6420746865206e756d626572206f66206d65737361676573206f6e6c79206c6f6f6b696e67206174206052656c61794469737061746368517565756573602e2054686973206d617070696e6720697320736570617261746520746f2061766f69642074686520636f7374206f66206c6f6164696e67207468652077686f6c65206d657373616765207175657565206966206f6e6c792074686520746f74616c2073697a6520616e6420636f756e74206172652072657175697265642e202d2054686520736574206f66206b6579732073686f756c642065786163746c79206d617463682074686520736574206f66206b657973206f66206052656c61794469737061746368517565756573602e20546865206d657373616765732077616974696e6720746f2062652068616e646c6564206279207468652072656c61792d636861696e206f726967696e6174696e672066726f6d2061206365727461696e2070617261636861696e2e204e6f7465207468617420736f6d6520757077617264206d65737361676573206d696768742068617665206265656e20616c72656164792070726f6365737365642062792074686520696e636c7573696f6e206c6f6769632e20452e672e206368616e6e656c206d616e6167656d656e74206d657373616765732e20546865206d65737361676573206172652070726f63657373656420696e204649464f206f726465722e000000f17511003300000072756e74696d653a3a756d702d73696e6b4661696c656420746f206465636f64652076657273696f6e65642058434d2066726f6d20757077617264206d6573736167652e31000000040000000400000020000000310000000400000004000000fb00000031000000040000000400000019000000310000000400000004000000fc000000617373657274696f6e206661696c65643a2073656c662e6361702829203d3d206f6c645f636170202a20320004271100980000002d0800000d0000003100000004000000040000006900000040b2120067000000710000002e00000040b2120067000000900000003400000040b21200670000006900000034000000741811006c0000009a0000000100000040b2120067000000ba0000000900000040b2120067000000b30000000900000040b2120067000000d40000001100000040b2120067000000d900000009000000000000009c2711000b000000000000004c771100010000000000000054771100200000002053656e646572206d75737420626520746865205375646f206163636f756e746e6f6e652076616c756573206172652066696c7465726564206f757420696e2070726576696f7573206c6f6769633b2071656400b87711004600000078020000120000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f61756374696f6e732e72734f6363757069656420636f726520616c77617973206861732070656e64696e6720617661696c6162696c6974793b20716564509e120055000000850000001a000000b278110074000000509e1200550000006600000023000000509e120055000000690000001a00000072756e74696d653a3a706f6c6b61646f742d6170693a3a7631706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a72756e74696d655f6170695f696d706c3a3a7631436f756c64206e6f742064657465726d696e65207468652067726f757020726573706f6e7369626c6520666f7220636f7265206578747261637465642066726f6d206c697374206f6620636f72657320666f7220736f6d65207072696f7220626c6f636b20696e2073616d652073657373696f6e506172615363686564756c657253657373696f6e5374617274426c6f636b000000000000000000000000617474656d707420746f20646976696465206279207a65726f00000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f7363686564756c65722e7273a97911004b0000001d0200001600000064657363656e64656e747320616c776179732070726573656e7420696e206e6f64652073746f726167653b2071656400447a110067000000690100002a0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f66696e616c6974792d6772616e6470612d302e31342e302f7372632f766f74655f67726170682e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c657270616c6c65745f6772616e6470612f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6772616e6470612f7372632f6c69622e727370616c6c65745f696d5f6f6e6c696e653a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e727370616c6c65745f617574686f726974795f646973636f766572793a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f617574686f726974792d646973636f766572792f7372632f6c69622e72736865617274626561744772616e64706146696e616c6974795374616c6c6564787c110017000000d77b11006a000000590000000f0000005f5f49676e6f72652063616e6e6f7420626520757365647672662d6e6d2d706b496d4f6e6c696e65417574686f726564426c6f636b73526563656976656448656172746265617473a97911004b000000cd0000000100000050656e64696e674368616e67653a6772616e6470615f617574686f726974696573537461746500002a7d11001600000010ab1200020000002a7d110016000000407d11001200000072756e74696d653a3a696d2d6f6e6c696e65536b697070696e6720686561727462656174206174202e204e6f7420612076616c696461746f722e6c6f636174696f6e20616e6420726573756c7420626567696e20657175616c3b2073616d652073697a653b20716564000000947d1100520000009e0000001f0000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f78636d2f78636d2d6275696c6465722f7372632f6c6f636174696f6e5f636f6e76657273696f6e2e7273436f6e63757272656e745265706f727473496e646578a67e1100540000004772616e64706145717569766f636174696f6e72756e74696d653a3a61666770616c6c65745f6772616e6470613a3a65717569766f636174696f6e2f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6772616e6470612f7372632f65717569766f636174696f6e2e727372656a656374696e6720756e7369676e6564207265706f72742065717569766f636174696f6e207472616e73616374696f6e2062656361757365206974206973206e6f74206c6f63616c2f696e2d626c6f636b2e496e76616c696445717569766f636174696f6e50726f6f66496e76616c69644b65794f776e65727368697050726f6f66546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65644475706c69636174654f6666656e63655265706f72740000000000f07f110013000000000000000480110002000000000000000000000034801100040000000000000000000000548011001c000000000000000480110002000000000000000000000070801100090000000000000000000000b88011000c00000000000000c4801100020000000000000000000000f480110007000000000000007265706f72745f65717569766f636174696f6e0000000000c18411001200000000000000d38411002a00000000000000fd8411000f000000000000000c851100100000001583110043000000588311003e000000968311003f000000d5831100120000007265706f72745f65717569766f636174696f6e5f756e7369676e65641583110043000000588311003e000000968311003f000000d583110012000000f4ae120000000000e7831100440000002b841100460000007184110046000000b78411000a0000006e6f74655f7374616c6c656400000000f58211000500000000000000d97612000e00000000000000fa8211001b00000000000000d97612000e0000002c81110047000000738111004a000000bd8111004800000005821100450000004a8211004a000000948211004a000000de82110017000000204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c61792073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f746572732077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e204f6e6c792063616c6c61626c6520627920726f6f742e64656c6179626573745f66696e616c697a65645f626c6f636b5f6e756d626572205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e20546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c7920626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c20617320737563682069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e207265706f727465722e65717569766f636174696f6e5f70726f6f6645717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e6b65795f6f776e65725f70726f6f66543a3a4b65794f776e657250726f6f6600000000f17c11000500000000000000000000005c8711001b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12007887110000000000000000008887110001000000000000000100000000000000d07c11000d00000000000000000000009087110023000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200b48711000000000000000000c487110001000000000000000000000000000000cc8711000a0000000000000000000000d97612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d88711000000000000000000e887110001000000000000000000000000000000597c1100070000000000000000000000f087110020000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12001088110000000000000000002088110001000000000000000000000000000000288811000c00000000000000000000003488110005000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12003c88110000000000000000004c881100020000000000000001000000000000005c8811000c0000000105000000000000348811000500000000000000db9912000c000000000000000000000000000000000000000000000000000000f4ae12006888110000000000000000007888110004000000000000000000000053746f72656453746174653c543a3a426c6f636b4e756d6265723e00310000000000000001000000fd000000428a11002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e003100000000000000010000005a000000118a1100310000004e657874466f72636564000031000000000000000100000044000000e28911002f00000028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d6265722931000000000000000100000044000000be8911002400000043757272656e74536574496453657449640000003100000000000000010000005600000036891100570000008d89110031000000536574496453657373696f6e310000000000000001000000440000009888110056000000ee8811001a000000f4ae120000000000088911002e0000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e2054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e6e6f6465206569746865722062617365206f72207265666572656e636564206279206f7468657220696e2067726170683b2071656400447a1100670000001f010000120000006e6f646520636f6e7461696e696e67206e6f6e2d6e6f646520696e20686973746f727920616c776179732068617320616e636573746f723b20716564447a110067000000280100001a000000447a110067000000810100002b0000006279206465666e206f662066696e645f636f6e7461696e696e675f6e6f6465733b20716564000000447a110067000000c80000001a000000616c6c206368696c6472656e20696e2067726170683b207165640000447a110067000000e100000036000000447a110067000000ea0000003900000062617365206973206b6570743b20636861696e2072657475726e7320616e636573747279206f6e6c792069662074686520626c6f636b20697320612064657363656e64656e74206f6620626173653b2071656400447a1100670000001e0200002d000000447a110067000000210200001d000000746869732066756e6374696f6e206f6e6c7920696e766f6b65642077697468206b657973206f6620766f74652d6e6f6465733b2071656400447a110067000000db01000012000000746869732066756e6374696f6e206f6e6c7920696e766f6b656420776974682064697265637420616e636573746f72733b20716564000000447a110067000000e7010000150000005072696f7220616e636573746f72206973207265666572656e6365642066726f6d2061206e6f64653b20716564000000447a1100670000000202000016000000746875732066756e6374696f6e206973206f6e6c7920696e766f6b6564207768656e207468657265206973206e6f20656e74727920666f722074686520616e636573746f7220616c72656164793b207165640000447a110067000000080200000d000000766f74652d6e6f646520616e642069747320616e63657374727920616c7761797320657869737420616674657220696e697469616c2070686173653b20716564447a110067000000ae000000120000007061726974792f696d2d6f6e6c696e652d6865617274626561742f00c08d110008000000c88d110020000000e88d11000b000000f95f12000300000070616c6c65745f696d5f6f6e6c696e655b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20202873657373696f6e3a203c73747269707065643e4475706c696361746564486561727462656174496e76616c69644b6579000000000000a08e11001100000000000000b48e1100010000000000000000000000bc8e1100010000000000000000000000c48e11000700000000000000f4ae1200000000000000000000000000cc8e1100010000000000000000000000d48e11000b00000000000000e08e1100010000000000000000000000e88e110001000000000000004865617274626561745265636569766564000000cd8f11000b0000008c8f110041000000416c6c476f6f6400578f110035000000536f6d654f66666c696e65003f8f110018000000f08e11004f0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d417574686f72697479496400000000417c110009000000000000000490110002000000000000000000000034901100090000000000000000000000417c11000900000000000000e29111001900000000000000fb9111000a00000000000000059211002f000000a26812000b0000007c90110050000000cc901100400000000c911100230000002f9111002c0000005b9111004f000000aa91110017000000c191110021000000e66812000c000000202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e29202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373602020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b602020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c2020206052656365697665644865617274626561747360202d2044625772697465733a2060526563656976656448656172746265617473604865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000009a1312000e0000000000000000000000d97612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200b49311000000000000000000c49311000b000000000000000100000000000000e41212000400000000000000000000006b3b120013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12001c94110000000000000000002c94110001000000000000000100000000000000ae7c1100120000000205050000000000db9912000c00000000000000349411000900000000000000f268120007000000000000000000000000000000f4ae12004094110000000000000000005094110002000000000000000000000000000000a07c11000e0000000205050000000000db9912000c00000000000000609411000e000000000000007b6a120003000000000000000000000000000000f4ae1200b4931100000000000000000070941100020000000000000001000000310000000000000001000000420000008795110047000000ce95110009000000f4ae120000000000d795110049000000209611004d0000006d96110046000000b39611002a000000f4ae120000000000dd9611004e0000002b9711004b000000769711004000000031000000000000000100000050000000539511003400000041757468496e64657800000031000000000000000100000044000000f79411003c000000339511002000000056616c696461746f7249643c543e00008094110045000000c59411003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e20546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c64206265206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e436865636b5370656356657273696f6e000000000000089a11000f0000000000000000000000179a110018000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200309a11000000000000000000409a110006000000000000000100000000000000709a11000f00000000000000000000007f9a110014000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200949a11000000000000000000a49a110004000000000000000100000000000000c49a1100110000000000000000000000d59a110019000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200f09a11000000000000000000009b110008000000000000000100000000000000409b11001400000000000000000000002c5212000b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200549b11000000000000000000649b11000400000000000000010000000000000033791100110000000000000000000000d97612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200849b11000000000000000000949b110006000000000000000100000000000000c49b1100090000000000000000000000cd9b110013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e09b11000000000000000000f09b110006000000000000000100000056616c696461746f7247726f7570735665633c5665633c56616c696461746f72496e6465783e3e00310000000000000001000000500000008ca211005b000000e7a211005b00000042a311000e000000f4ae12000000000050a3110060000000b0a311006000000050617261746872656164517565756550617261746872656164436c61696d517565756500310000000000000001000000fe000000aca1110046000000f4ae120000000000f2a111004500000037a2110055000000417661696c6162696c697479436f7265735665633c4f7074696f6e3c436f72654f636375706965643e3e0000310000000000000001000000ff000000ea9f11006700000051a011003200000083a0110050000000d3a0110019000000f4ae120000000000eca011003600000022a11100390000005ba111005100000050617261746872656164436c61696d496e646578310000000000000001000000fa000000089f1100560000005e9f11002d000000f4ae1200000000008b9f11005f00000031000000000000000100000042000000429d110069000000f4ae120000000000ab9d110056000000019e110058000000599e110056000000af9e1100590000005363686564756c65645665633c436f726541737369676e6d656e743e31000000000000000100000000010000209c110038000000f4ae120000000000589c110053000000f4ae120000000000ab9c11007f0000002a9d1100180000002043757272656e746c79207363686564756c656420636f726573202d20667265652062757420757020746f206265206f636375706965642e20426f756e64656420627920746865206e756d626572206f6620636f7265733a206f6e6520666f7220656163682070617261636861696e20616e642070617261746872656164206d756c7469706c657865722e205468652076616c756520636f6e7461696e656420686572652077696c6c206e6f742062652076616c69642061667465722074686520656e64206f66206120626c6f636b2e2052756e74696d6520415049732073686f756c64206265207573656420746f2064657465726d696e65207363686564756c656420636f7265732f20666f7220746865207570636f6d696e6720626c6f636b2e2054686520626c6f636b206e756d626572207768657265207468652073657373696f6e207374617274206f636375727265642e205573656420746f20747261636b20686f77206d616e792067726f757020726f746174696f6e732068617665206f636375727265642e204e6f7465207468617420696e2074686520636f6e74657874206f662070617261636861696e73206d6f64756c6573207468652073657373696f6e206368616e6765206973207369676e616c6c656420647572696e672074686520626c6f636b20616e6420656e61637465642061742074686520656e64206f662074686520626c6f636b20286174207468652066696e616c697a6174696f6e2073746167652c20746f206265206578616374292e205468757320666f7220616c6c20696e74656e747320616e6420707572706f7365732074686520656666656374206f66207468652073657373696f6e206368616e6765206973206f627365727665642061742074686520626c6f636b20666f6c6c6f77696e67207468652073657373696f6e206368616e67652c20626c6f636b206e756d626572206f66207768696368207765207361766520696e20746869732073746f726167652076616c75652e20416e20696e646578207573656420746f20656e737572652074686174206f6e6c79206f6e6520636c61696d206f6e206120706172617468726561642065786973747320696e20746865207175657565206f722069732063757272656e746c79206265696e672068616e646c656420627920616e206f6363757069656420636f72652e20426f756e64656420627920746865206e756d626572206f66207061726174687265616420636f72657320616e64207363686564756c696e67206c6f6f6b61686561642e20526561736f6e61626c792c203130202a203530203d203530302e204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20456e74726965732061726520604e6f6e65602069662074686520636f7265206973206e6f742063757272656e746c79206f636375706965642e2043616e2062652074656d706f726172696c792060536f6d6560206966207363686564756c656420627574206e6f74206f636375706965642e2054686520692774682070617261636861696e2062656c6f6e677320746f20746865206927746820636f72652c2077697468207468652072656d61696e696e6720636f72657320616c6c206265696e6720706172617468726561642d6d756c7469706c65786572732e20426f756e64656420627920746865206d6178696d756d206f6620656974686572206f662074686573652074776f2076616c7565733a2020202a20546865206e756d626572206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c65786572732020202a20546865206e756d626572206f662076616c696461746f727320646976696465642062792060636f6e66696775726174696f6e2e6d61785f76616c696461746f72735f7065725f636f7265602e2041207175657565206f66207570636f6d696e6720636c61696d7320616e6420776869636820636f726520746865792073686f756c64206265206d6170706564206f6e746f2e20546865206e756d626572206f662071756575656420636c61696d7320697320626f756e6465642061742074686520607363686564756c696e675f6c6f6f6b616865616460206d756c7469706c69656420627920746865206e756d626572206f662070617261746872656164206d756c7469706c6578657220636f7265732e20526561736f6e61626c792c203130202a203530203d203530302e20416c6c207468652076616c696461746f722067726f7570732e204f6e6520666f72206561636820636f72652e20496e64696365732061726520696e746f206041637469766556616c696461746f727360202d206e6f74207468652062726f6164657220736574206f6620506f6c6b61646f742076616c696461746f72732c2062757420696e7374656164206a7573742074686520737562736574207573656420666f722070617261636861696e7320647572696e6720746869732073657373696f6e2e20426f756e643a20546865206e756d626572206f6620636f726573206973207468652073756d206f6620746865206e756d62657273206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c65786572732e20526561736f6e61626c792c203130302d313030302e2054686520646f6d696e616e7420666163746f7220697320746865206e756d626572206f662076616c696461746f72733a207361666520757070657220626f756e642061742031306b2ea97911004b0000003d0100002a000000a97911004b0000004101000015000000636f7265206973206e6f74206f7574206f6620626f756e647320616e64207765206172652067756172616e7465656420746f20626520616674657220746865206d6f737420726563656e742073657373696f6e2073746172743b207165640000a97911004b000000c80100001e000000a97911004b000000d40100001e00000045727200310000000400000004000000010100004f6b000031000000040000000400000002010000000000004a7f11000b000000000000009ca511000200000000000000000000003e7f11000c00000000000000aca51100020000000000000000000000317f11000d00000000000000bca511000100000000000000000000002a7f11000700000000000000c4a51100010000000000000000000000127f11001800000000000000cca51100010000000000000000000000fa7e11001800000000000000d4a51100010000000000000000000000557f11001600000000000000dca5110001000000000000009da7110042000000dfa711002a0000002fa711004500000074a7110029000000f4a611003b000000c4a611003000000077a611004d0000002aa611004d000000e4a5110046000000204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e20416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e0000003100000001000000010000000301000000000000108e11000a0000000000000054a81100010000000000000000000000fd8d110013000000000000005ca8110001000000000000007aa811001900000064a8110016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e646973617070726f76655f70726f706f73616c636c6f7365766f746570726f706f7365657865637574657365745f6d656d6265727374696d737461703054696d657374616d7020696e686572656e742064617461206e6f7420636f72726563746c7920656e636f6465640000003100000009000000010000000401000058a9110060000000e50000001200000054696d657374616d7020696e686572656e742064617461206d7573742062652070726f766964656458a9110060000000e6000000120000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f74696d657374616d702f7372632f6c69622e727358a9110060000000d30000001200000058a9110060000000d400000012000000706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261732f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f70617261732e727370616c6c65745f636f6c6c6563746976652f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f636f6c6c6563746976652f7372632f6c69622e727370616c6c65745f74696d657374616d703a3a70616c6c6574706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d702f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f68726d702e727373657400000000000000dcac11001500000000000000f4ac1100010000000000000000000000fcac11001f000000000000001cad110001000000000000000000000024ad11001b0000000000000040ad110001000000000000000000000048ad110023000000000000006cad110001000000000000000000000074ad11001e0000000000000094ad11000100000000000000000000009cad11002600000000000000c4ad1100010000000000000000000000ccad11001c00000000000000e8ad1100010000000000000000000000f0ad11001f0000000000000010ae110001000000000000000000000018ae11001c0000000000000034ae11000100000000000000000000003cae11001c0000000000000058ae110001000000000000000000000060ae1100210000000000000084ae11000100000000000000000000008cae11001e00000000000000acae1100010000000000000000000000b4ae11001c00000000000000d0ae1100010000000000000000000000d8ae11001b00000000000000f4ae1100010000000000000000000000fcae11001f000000000000001caf110001000000000000004f70656e48726d704368616e6e656c546f53656c66000000f7b11100320000004f70656e48726d704368616e6e656c496e76616c6964526563697069656e7400d4b11100230000004f70656e48726d704368616e6e656c5a65726f436170616369747900b4b11100200000004f70656e48726d704368616e6e656c4361706163697479457863656564734c696d69740083b11100310000004f70656e48726d704368616e6e656c5a65726f4d65737361676553697a6500005ab11100290000004f70656e48726d704368616e6e656c4d65737361676553697a65457863656564734c696d697400000fb111004b0000004f70656e48726d704368616e6e656c416c7265616479457869737473f4b011001b0000004f70656e48726d704368616e6e656c416c726561647952657175657374656400bfb01100350000004f70656e48726d704368616e6e656c4c696d6974457863656564656477b011004800000041636365707448726d704368616e6e656c446f65736e7445786973743eb011003900000041636365707448726d704368616e6e656c416c7265616479436f6e6669726d65640000001cb011002200000041636365707448726d704368616e6e656c4c696d697445786365656465640000d2af11004a000000436c6f736548726d704368616e6e656c556e617574686f72697a65647caf110056000000436c6f736548726d704368616e6e656c446f65736e7445786973740054af110028000000436c6f736548726d704368616e6e656c416c7265616479556e6465727761790024af11003000000020546865206368616e6e656c20636c6f7365207265717565737420697320616c7265616479207265717565737465642e20546865206368616e6e656c20746f20626520636c6f73656420646f65736e27742065786973742e20546865206f726967696e20747269657320746f20636c6f73652061206368616e6e656c207768657265206974206973206e656974686572207468652073656e646572206e6f722074686520726563697069656e742e2054686520726563697069656e7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f77656420696e626f756e64206368616e6e656c732e20546865206368616e6e656c20697320616c726561647920636f6e6669726d65642e20546865206368616e6e656c2066726f6d207468652073656e64657220746f20746865206f726967696e20646f65736e27742065786973742e205468652073656e64657220616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f776564206f7574626f756e64206368616e6e656c732e20546865726520697320616c72656164792061207265717565737420746f206f70656e207468652073616d65206368616e6e656c2e20546865206368616e6e656c20616c72656164792065786973747320546865206f70656e20726571756573742072657175657374656420746865206d6573736167652073697a65207468617420657863656564732074686520676c6f62616c206c696d69742e2054686520726571756573746564206d6178696d756d206d6573736167652073697a6520697320302e205468652072657175657374656420636170616369747920657863656564732074686520676c6f62616c206c696d69742e2054686520726571756573746564206361706163697479206973207a65726f2e2054686520726563697069656e74206973206e6f7420612076616c696420706172612e205468652073656e64657220747269656420746f206f70656e2061206368616e6e656c20746f207468656d73656c7665732e00000000000000b8b211000d00000000000000c8b21100010000000000000000000000d0b211000d00000000000000e0b21100010000000000000000000000e8b211000e00000000000000f8b2110001000000000000000000000000b311000d0000000000000010b3110001000000000000000000000018b311000f0000000000000028b3110001000000000000004e6f7452656769737465726564000000f1b311002600000043616e6e6f744f6e626f617264000000abb311004600000043616e6e6f744f6666626f617264000083b311002800000043616e6e6f74557067726164650000005bb311002800000043616e6e6f74446f776e67726164650030b311002b00000020506172612063616e6e6f7420626520646f776e67726164656420746f206120706172617468726561642e20506172612063616e6e6f7420626520757067726164656420746f20612070617261636861696e2e20506172612063616e6e6f74206265206f6666626f617264656420617420746869732074696d652e20506172612063616e6e6f74206265206f6e626f6172646564206265636175736520697420697320616c726561647920747261636b6564206279206f75722073797374656d2e2050617261206973206e6f74207265676973746572656420696e206f75722073797374656d2e00d4b4110013000000e7b411002e00000015b51100020000008bb411003b000000c6b411000d000000d3b4110001000000436f6c6c65637469766550726f706f73616c7350726f706f73616c436f756e7450726f706f73616c4f66566f74696e6772756e74696d653a3a636f6c6c65637469766557726f6e6720636f756e74207573656420746f20657374696d617465207365745f6d656d62657273207765696768742e2065787065637465642028292076732061637475616c2028294e6577206d656d6265727320636f756e742028292065786365656473206d6178696d756d20616d6f756e74206f66206d656d626572732065787065637465642028292e666f7263655f70726f636573735f68726d705f636c6f7365666f7263655f70726f636573735f68726d705f6f70656e666f7263655f636c65616e5f68726d7068726d705f636c6f73655f6368616e6e656c68726d705f6163636570745f6f70656e5f6368616e6e656c68726d705f696e69745f6f70656e5f6368616e6e656c666f7263655f71756575655f616374696f6e666f7263655f6e6f74655f6e65775f68656164666f7263655f7363686564756c655f636f64655f75706772616465666f7263655f7365745f63757272656e745f68656164666f7263655f7365745f63757272656e745f636f646554696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b000058a9110060000000bc0000000d00000054696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b73000058a9110060000000be0000000d00000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b0058a9110060000000a10000000d00000048726d7048726d704368616e6e656c436f6e74656e747300ecaa1100460000003a0200001e00000063616e277420626520604e6f6e65602064756520746f2074686520696e76617269616e74207468617420746865206c69737420636f6e7461696e73207468652073616d65206974656d7320617320746865207365743b207165640000ecaa1100460000003b0200005a0000005061726173467574757265436f6465557067726164657350617374436f64655072756e696e6750617374436f64654861736850617374436f64654d6574610000f4b7110046000000ce0100001e000000f4b7110046000000e00100001e000000f4b7110046000000f20100001e000000f4b7110046000000050200001e0000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f78636d2f78636d2d6578656375746f722f7372632f6173736574732e72730000f4b7110046000000830100001e000000f4b71100460000008d0100001e0000000000000032ab1100030000000000000088b81100010000000000000000000000a0b811000f00000000000000000000003dbb1100030000000000000040bb11001200000018b9110016000000f4ae1200000000002eb911005600000084b9110036000000f4ae120000000000bab91100510000000bba110011000000f4ae1200000000001cba110036000000f4ae120000000000a26812000b00000052ba11004d0000009fba11006800000007bb110036000000e66812000c00000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e6e6f77436f6d706163743c543a3a4d6f6d656e743e0000000000002014120003000000000000000000000014bc110009000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120020bc1100000000000000000030bc1100010000000000000001000000000000002b141200090000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120038bc1100000000000000000048bc1100010000000000000001000000543a3a4d6f6d656e74000000310000000000000001000000560000007dbc1100240000003100000000000000010000004600000050bc11002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000dcbc11000d0000000000000014bc11000900000000000000f4ae1200ecbc11000000000000000000fcbc110004000000000000004d696e696d756d506572696f64000000310000000000000001000000050100001cbd11005a00000076bd11005a000000d0bd11005900000029be11001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e57726f6e6750726f706f73616c576569676874546f6f4d616e7950726f706f73616c73546f6f4561726c79416c7265616479496e697469616c697a65644475706c6963617465566f746557726f6e67496e64657850726f706f73616c4d697373696e674475706c696361746550726f706f73616c57726f6e6750726f706f73616c4c656e67746800000000bda811000b00000000000000d4bf11000300000000000000000000001cc01100180000000000000000000000b6a811000700000000000000dcc011000200000000000000000000000cc111000a0000000000000000000000afa8110007000000000000005cc11100030000000000000000000000a4c111001b0000000000000000000000aba8110004000000000000007cc21100030000000000000000000000c4c211000e0000000000000000000000a6a81100050000000000000034c3110004000000000000000000000094c311001e000000000000000000000093a81100130000000000000084c411000100000000000000000000009cc411000d00000000000000000000008dd611000b000000000000000d231200110000000000000098d6110005000000000000009dd611001400000000000000b1d611000900000000000000bad611000b000000c3d2110021000000f4ae120000000000e4d211005200000036d31100390000006fd311004e000000bdd311002b000000f4ae120000000000e8d3110016000000f4ae120000000000fed311005500000053d4110049000000f4ae120000000000a26812000b000000fbc911000a0000009cd4110015000000b1d4110039000000ead411003900000023d5110027000000f1ca1100060000004ad511005d000000a7d511003c000000e3d511005200000035d6110058000000e66812000c00000000000000eccd11000800000000000000a5d111001f000000000000001ecc11000c000000000000002acc11000c000000c4d111003d000000f4ae12000000000001d211002b000000f4ae120000000000a26812000b000000fbc911000a0000002cd21100610000008dd2110036000000e2cd11000a000000e66812000c0000000000000088d11100090000000000000091d111001400000000000000eccd11000800000000000000a5d111001f000000000000001ecc11000c000000000000002acc11000c000000fbcd11003f000000f4ae1200000000003ace110022000000f4ae1200000000005cce110051000000adce110016000000f4ae120000000000a26812000b000000fbc911000a000000c3ce11002c00000023ca1100390000005cca110038000000efce11003200000021cf11003e0000005fcf110040000000f1ca1100060000009fcf11002e000000cdcf11003d0000000ad011002b00000035d011004300000078d011002f000000a7d0110037000000ded011003a00000018d11100340000004cd11100300000007cd111000c000000e66812000c00000000000000eccd11000800000000000000e77612000700000000000000b3b012000500000000000000e4cb11001600000000000000f4cd11000700000000000000d17812000400000036cc11003d000000f4ae12000000000073cc110024000000f4ae12000000000097cc110053000000eacc11005a000000a26812000b000000fbc911000a00000044cd110043000000f1ca11000600000087cd11002c000000b3cd11002f000000e2cd11000a000000e66812000c0000000000000057c611000d00000000000000e77612000700000000000000b3b012000500000000000000e4cb11001600000000000000facb110015000000000000000fcc11000f000000000000001ecc11000c000000000000002acc11000c00000064c6110054000000f4ae120000000000b8c6110056000000f4ae1200000000000ec711005300000061c7110030000000f4ae12000000000091c7110053000000e4c711004a000000f4ae1200000000002ec811005900000087c8110058000000f4ae120000000000dfc811006300000042c91100590000009bc9110060000000f4ae120000000000a26812000b000000fbc911000a00000005ca11001e00000023ca1100390000005cca11003800000094ca110033000000c7ca11002a000000f1ca110006000000f7ca1100440000003bcb1100600000009bcb110038000000d3cb110011000000e66812000c0000000000000057c611000d00000000000000e77612000700000004c511005e000000f4ae12000000000062c5110023000000f4ae12000000000085c511000c00000091c5110048000000f4ae120000000000a26812000b000000d9c511003800000011c611000b0000001cc61100130000002fc6110028000000e66812000c00000020446973617070726f766520612070726f706f73616c2c20636c6f73652c20616e642072656d6f76652069742066726f6d207468652073797374656d2c207265676172646c657373206f66206974732063757272656e742073746174652e204d7573742062652063616c6c65642062792074686520526f6f74206f726967696e2e20506172616d65746572733a202a206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20746861742073686f756c6420626520646973617070726f7665642e20436f6d706c65786974793a204f285029207768657265205020697320746865206e756d626572206f66206d61782070726f706f73616c73204442205765696768743a202a2052656164733a2050726f706f73616c73202a205772697465733a20566f74696e672c2050726f706f73616c732c2050726f706f73616c4f6670726f706f73616c5f6861736820436c6f7365206120766f746520746861742069732065697468657220617070726f7665642c20646973617070726f766564206f722077686f736520766f74696e6720706572696f642068617320656e6465642e204d61792062652063616c6c656420627920616e79207369676e6564206163636f756e7420696e206f7264657220746f2066696e69736820766f74696e6720616e6420636c6f7365207468652070726f706f73616c2e2049662063616c6c6564206265666f72652074686520656e64206f662074686520766f74696e6720706572696f642069742077696c6c206f6e6c7920636c6f73652074686520766f74652069662069742069732068617320656e6f75676820766f74657320746f20626520617070726f766564206f7220646973617070726f7665642e2049662063616c6c65642061667465722074686520656e64206f662074686520766f74696e6720706572696f642061627374656e74696f6e732061726520636f756e7465642061732072656a656374696f6e7320756e6c6573732074686572652069732061207072696d65206d656d6265722073657420616e6420746865207072696d65206d656d626572206361737420616e20617070726f76616c2e2049662074686520636c6f7365206f7065726174696f6e20636f6d706c65746573207375636365737366756c6c79207769746820646973617070726f76616c2c20746865207472616e73616374696f6e206665652077696c6c206265207761697665642e204f746865727769736520657865637574696f6e206f662074686520617070726f766564206f7065726174696f6e2077696c6c206265206368617267656420746f207468652063616c6c65722e202b206070726f706f73616c5f7765696768745f626f756e64603a20546865206d6178696d756d20616d6f756e74206f662077656967687420636f6e73756d656420627920657865637574696e672074686520636c6f7365642070726f706f73616c2e202b20606c656e6774685f626f756e64603a2054686520757070657220626f756e6420666f7220746865206c656e677468206f66207468652070726f706f73616c20696e2073746f726167652e20436865636b656420766961202020202020202020202020202020202020206073746f726167653a3a726561646020736f206974206973206073697a655f6f663a3a3c7533323e2829203d3d203460206c6172676572207468616e207468652070757265206c656e6774682e20232320576569676874202d20604f2842202b204d202b205031202b20503229602077686572653a2020202d20604260206973206070726f706f73616c602073697a6520696e20627974657320286c656e6774682d6665652d626f756e646564292020202d20604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20605031602069732074686520636f6d706c6578697479206f66206070726f706f73616c6020707265696d6167652e2020202d20605032602069732070726f706f73616c2d636f756e742028636f64652d626f756e64656429202d2044423a20202d20322073746f726167652072656164732028604d656d62657273603a20636f64656320604f284d29602c20605072696d65603a20636f64656320604f283129602920202d2033206d75746174696f6e73202860566f74696e67603a20636f64656320604f284d29602c206050726f706f73616c4f66603a20636f64656320604f284229602c206050726f706f73616c73603a20636f64656320604f28503229602920202d20616e79206d75746174696f6e7320646f6e65207768696c6520657865637574696e67206070726f706f73616c6020286050316029202d20757020746f2033206576656e7473436f6d706163743c50726f706f73616c496e6465783e70726f706f73616c5f7765696768745f626f756e64436f6d706163743c5765696768743e6c656e6774685f626f756e64436f6d706163743c7533323e2041646420616e20617965206f72206e617920766f746520666f72207468652073656e64657220746f2074686520676976656e2070726f706f73616c2e205265717569726573207468652073656e64657220746f2062652061206d656d6265722e205472616e73616374696f6e20666565732077696c6c2062652077616976656420696620746865206d656d62657220697320766f74696e67206f6e20616e7920706172746963756c61722070726f706f73616c20666f72207468652066697273742074696d6520616e64207468652063616c6c206973207375636365737366756c2e2053756273657175656e7420766f7465206368616e6765732077696c6c206368617267652061206665652e202d20604f284d296020776865726520604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20312073746f72616765207265616420604d656d62657273602028636f64656320604f284d2960292020202d20312073746f72616765206d75746174696f6e2060566f74696e67602028636f64656320604f284d296029202d2031206576656e7470726f706f73616c617070726f7665204164642061206e65772070726f706f73616c20746f2065697468657220626520766f746564206f6e206f72206578656375746564206469726563746c792e205265717569726573207468652073656e64657220746f206265206d656d6265722e20607468726573686f6c64602064657465726d696e65732077686574686572206070726f706f73616c60206973206578656375746564206469726563746c792028607468726573686f6c64203c20326029206f722070757420757020666f7220766f74696e672e202d20604f2842202b204d202b2050312960206f7220604f2842202b204d202b20503229602077686572653a2020202d206272616e6368696e6720697320696e666c75656e63656420627920607468726573686f6c64602077686572653a20202020202d20605031602069732070726f706f73616c20657865637574696f6e20636f6d706c65786974792028607468726573686f6c64203c2032602920202020202d20605032602069732070726f706f73616c732d636f756e742028636f64652d626f756e646564292028607468726573686f6c64203e3d203260292020202d20312073746f726167652072656164206069735f6d656d626572602028636f64656320604f284d2960292020202d20312073746f726167652072656164206050726f706f73616c4f663a3a636f6e7461696e735f6b6579602028636f64656320604f28312960292020202d20444220616363657373657320696e666c75656e63656420627920607468726573686f6c64603a20202020202d204549544845522073746f7261676520616363657373657320646f6e65206279206070726f706f73616c602028607468726573686f6c64203c2032602920202020202d204f522070726f706f73616c20696e73657274696f6e2028607468726573686f6c64203c3d20326029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c73602028636f64656320604f285032296029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c436f756e74602028636f64656320604f2831296029202020202020202d20312073746f72616765207772697465206050726f706f73616c4f66602028636f64656320604f2842296029202020202020202d20312073746f726167652077726974652060566f74696e67602028636f64656320604f284d2960292020202d2031206576656e747468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e202d20604f284d202b2050296020776865726520604d60206d656d626572732d636f756e742028636f64652d626f756e6465642920616e642060506020636f6d706c6578697479206f66206469737061746368696e67206070726f706f73616c60202d2044423a203120726561642028636f64656320604f284d296029202b20444220616363657373206f66206070726f706f73616c60205365742074686520636f6c6c6563746976652773206d656d626572736869702e202d20606e65775f6d656d62657273603a20546865206e6577206d656d626572206c6973742e204265206e69636520746f2074686520636861696e20616e642070726f7669646520697420736f727465642e202d20607072696d65603a20546865207072696d65206d656d6265722077686f736520766f74652073657473207468652064656661756c742e202d20606f6c645f636f756e74603a2054686520757070657220626f756e6420666f72207468652070726576696f7573206e756d626572206f66206d656d6265727320696e2073746f726167652e202020202020202020202020202020205573656420666f722077656967687420657374696d6174696f6e2e20526571756972657320726f6f74206f726967696e2e204e4f54453a20446f6573206e6f7420656e666f7263652074686520657870656374656420604d61784d656d6265727360206c696d6974206f6e2074686520616d6f756e74206f66206d656d626572732c20627574202020202020207468652077656967687420657374696d6174696f6e732072656c79206f6e20697420746f20657374696d61746520646973706174636861626c65207765696768742e202d20604f284d50202b204e29602077686572653a2020202d20604d60206f6c642d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20604e60206e65772d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d206050602070726f706f73616c732d636f756e742028636f64652d626f756e646564292020202d20312073746f72616765206d75746174696f6e2028636f64656320604f284d296020726561642c20604f284e29602077726974652920666f722072656164696e6720616e642077726974696e6720746865206d656d626572732020202d20312073746f7261676520726561642028636f64656320604f285029602920666f722072656164696e67207468652070726f706f73616c732020202d206050602073746f72616765206d75746174696f6e732028636f64656320604f284d29602920666f72207570646174696e672074686520766f74657320666f7220656163682070726f706f73616c2020202d20312073746f726167652077726974652028636f64656320604f283129602920666f722064656c6574696e6720746865206f6c6420607072696d656020616e642073657474696e6720746865206e6577206f6e656e65775f6d656d626572737072696d654f7074696f6e3c543a3a4163636f756e7449643e6f6c645f636f756e744d656d626572436f756e740000000000000052b4110009000000000000000000000008d9110024000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12002cd9110000000000000000003cd911000100000000000000010000000000000068b411000a0000000106000000000000e7761200070000000000000044d911001a000000000000000000000000000000000000000000000000000000f4ae120060d91100000000000000000070d911000100000000000000000000000000000072b41100060000000106000000000000e7761200070000000000000078d9110023000000000000000000000000000000000000000000000000000000f4ae12009cd911000000000000000000acd91100010000000000000000000000000000005bb411000d00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200b4d911000000000000000000c4d91100010000000000000001000000000000004a1212000700000000000000000000000d23120011000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200ccd911000000000000000000dcd911000100000000000000010000000000000051121200050000000000000000000000137612000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200e4d911000000000000000000f4d91100010000000000000000000000426f756e6465645665633c543a3a486173682c20543a3a4d617850726f706f73616c733e3100000000000000010000000601000015db1100240000003c5420617320436f6e6669673c493e3e3a3a50726f706f73616c000031000000000000000100000007010000e2da110033000000566f7465733c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e003100000000000000010000005a000000b5da11002d00000031000000000000000100000042000000a3da1100120000003100000000000000010000005300000055da11004e00000031000000000000000100000044000000fcd911005900000020546865207072696d65206d656d62657220746861742068656c70732064657465726d696e65207468652064656661756c7420766f7465206265686176696f7220696e2063617365206f6620616273656e746174696f6e732e205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e0000000000000070dc1100080000000000000078dc110004000000000000000000000098dc1100030000000000000000000000b0dc11000500000000000000b8dc1100050000000000000000000000e0dc1100030000000000000000000000f8dc1100080000000000000000dd110001000000000000000000000008dd110002000000000000000000000018dd11000b0000000000000000dd110001000000000000000000000024dd110002000000000000000000000034dd110008000000000000003cdd11000200000000000000000000004cdd11000200000000000000000000005cdd11000e000000000000003cdd11000200000000000000000000006cdd11000200000000000000000000007cdd1100060000000000000084dd11000300000000000000000000009cdd1100020000000000000050726f706f736564ad6212000900000097e011000d000000b662120004000000bad611000b000000fedf11005300000051e011001000000061e0110036000000566f746564000000ad62120009000000b662120004000000d178120004000000bad611000b000000bad611000b0000004bdf1100420000008ddf110046000000d3df11002b000000417070726f766564b6621200040000001adf11003100000008df110012000000446973617070726f76656400d3de11003500000008df1100120000004578656375746564b662120004000000934212000e0000008ade11004900000070de11001a0000004d656d626572457865637574656400001dde11005300000070de11001a000000436c6f7365640000b662120004000000bad611000b000000bad611000b000000acdd11005600000002de11001b00000020412070726f706f73616c2077617320636c6f736564206265636175736520697473207468726573686f6c64207761732072656163686564206f7220616674657220697473206475726174696f6e207761732075702e205c5b70726f706f73616c5f686173682c207965732c206e6f5c5d20412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e205c5b70726f706f73616c5f686173682c20726573756c745c5d2041206d6f74696f6e207761732065786563757465643b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e2041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e205c5b70726f706f73616c5f686173685c5d2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f686173682c20766f7465642c207965732c206e6f5c5d2041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f696e6465782c2070726f706f73616c5f686173682c207468726573686f6c645c5d50726f706f73616c496e64657846524e4b48726d7057617465726d61726b7348726d704368616e6e656c446967657374730000000080b511001600000000000000d0e1110003000000000000000000000018e211000a000000000000000000000068b51100180000000000000068e2110001000000000000000000000080e2110003000000000000000000000056b51100120000000000000098e21100010000000000000000000000b0e2110004000000000000000000000046b511001000000000000000d0e21100010000000000000000000000e8e211000500000000000000000000002fb511001700000000000000f4ae120000000000000000000000000010e3110004000000000000000000000017b511001800000000000000f4ae120000000000000000000000000030e311000400000000000000000000003ae81100090000000000000010421200060000000000000043e8110015000000000000007b6a1200030000000000000058e8110019000000000000007b6a1200030000008ee6110054000000e2e611000c000000f4ae120000000000eee611005700000045e7110053000000f4ae12000000000098e7110045000000f4ae120000000000dde711005500000032e81100080000000000000088e61100060000000000000010421200060000000de611003d000000f4ae1200000000004ae611003e00000000000000f6e511000a0000000000000000e611000d00000048e51100560000009ee5110027000000f4ae120000000000c5e51100310000000000000044e51100040000000000000010421200060000005ee4110047000000a5e4110049000000eee4110041000000f4ae1200000000002fe5110015000000f2e311002a000000f4ae1200000000001ce4110042000000bee311003400000050e311002b000000f4ae1200000000007be3110043000000bee311003400000020466f7263652070726f636573732068726d7020636c6f7365206368616e6e656c2072657175657374732e204966207468657265206172652070656e64696e672048524d5020636c6f7365206368616e6e656c2072657175657374732c20796f752063616e2075736520746869732066756e6374696f6e2070726f6365737320616c6c206f662074686f736520726571756573747320696d6d6564696174656c792e20466f7263652070726f636573732068726d70206f70656e206368616e6e656c2072657175657374732e204966207468657265206172652070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732c20796f752063616e20757365207468697320546869732065787472696e7369632074726967676572732074686520636c65616e7570206f6620616c6c207468652048524d502073746f72616765206974656d73207468617420612070617261206d617920686176652e204e6f726d616c6c7920746869732068617070656e73206f6e6365207065722073657373696f6e2c20627574207468697320616c6c6f777320796f7520746f20747269676765722074686520636c65616e757020696d6d6564696174656c7920666f7220612073706563696669632070617261636861696e2e204f726967696e206d75737420626520526f6f742e7061726120496e69746961746520756e696c61746572616c20636c6f73696e67206f662061206368616e6e656c2e20546865206f726967696e206d75737420626520656974686572207468652073656e646572206f722074686520726563697069656e7420696e20746865206368616e6e656c206265696e6720636c6f7365642e2054686520636c6f737572652063616e206f6e6c792068617070656e206f6e20612073657373696f6e206368616e67652e6368616e6e656c5f696448726d704368616e6e656c49642041636365707420612070656e64696e67206f70656e206368616e6e656c20726571756573742066726f6d2074686520676976656e2073656e6465722e20546865206368616e6e656c2077696c6c206265206f70656e6564206f6e6c79206f6e20746865206e6578742073657373696f6e20626f756e646172792e73656e64657220496e697469617465206f70656e696e672061206368616e6e656c2066726f6d20612070617261636861696e20746f206120676976656e20726563697069656e74207769746820676976656e206368616e6e656c20706172616d65746572732e202d206070726f706f7365645f6d61785f636170616369747960202d2073706563696669657320686f77206d616e79206d657373616765732063616e20626520696e20746865206368616e6e656c206174206f6e63652e202d206070726f706f7365645f6d61785f6d6573736167655f73697a6560202d2073706563696669657320746865206d6178696d756d2073697a65206f6620616e79206f6620746865206d657373616765732e205468657365206e756d62657273206172652061207375626a65637420746f207468652072656c61792d636861696e20636f6e66696775726174696f6e206c696d6974732e20546865206368616e6e656c2063616e206265206f70656e6564206f6e6c792061667465722074686520726563697069656e7420636f6e6669726d7320697420616e64206f6e6c79206f6e20612073657373696f6e206368616e67652e726563697069656e7470726f706f7365645f6d61785f636170616369747970726f706f7365645f6d61785f6d6573736167655f73697a6500000000000000f4ec110017000000010500000000000000e611000d000000000000000bed110016000000000000000000000000000000000000000000000000000000f4ae120024ed1100000000000000000034ed11000600000000000000000000000000000064ed11001b00000000000000000000007fed110012000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120094ed11000000000000000000f4ae120000000000000000000100000000000000a4ed11001b00000001050000000000001042120006000000000000007b6a120003000000000000000000000000000000000000000000000000000000f4ae1200c0ed11000000000000000000d0ed110003000000000000000100000000000000e8ed11001f00000001050000000000001042120006000000000000007b6a120003000000000000000000000000000000000000000000000000000000f4ae120008ee1100000000000000000018ee11000300000000000000010000000000000030ee110018000000010500000000000000e611000d0000000000000018b8120002000000000000000000000000000000000000000000000000000000f4ae120048ee1100000000000000000058ee11000700000000000000000000000000000090ee11001c00000000000000000000007fed110012000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200acee11000000000000000000f4ae120000000000000000000100000000000000a8e011000e0000000105000000000000104212000600000000000000d97612000e000000000000000000000000000000000000000000000000000000f4ae1200bcee11000000000000000000ccee110003000000000000000000000000000000e4ee11000c000000010500000000000000e611000d00000000000000f0ee11000b000000000000000000000000000000000000000000000000000000f4ae1200fcee110000000000000000000cef11000300000000000000000000000000000024ef11001800000001050000000000001042120006000000000000002c5212000b000000000000000000000000000000000000000000000000000000f4ae12003cef110000000000000000004cef11000d000000000000000100000000000000b4ef11001700000001050000000000001042120006000000000000002c5212000b000000000000000000000000000000000000000000000000000000f4ae1200ccef11000000000000000000f4ae120000000000000000000100000000000000e4b6110013000000010500000000000000e611000d00000000000000dcef110027000000000000000000000000000000000000000000000000000000f4ae120004f01100000000000000000014f0110002000000000000000100000000000000b6e0110012000000010500000000000010421200060000000000000024f0110022000000000000000000000000000000000000000000000000000000f4ae120048f01100000000000000000058f0110007000000000000000100000048726d704f70656e4368616e6e656c526571756573747348726d704f70656e4368616e6e656c526571756573740000003100000000000000010000005a000000e9f811002f000000f4ae1200000000006df6110030000000f4ae120000000000d5f411000b0000009df611004f00000048726d704f70656e4368616e6e656c52657175657374734c6973745665633c48726d704368616e6e656c49643e0000003100000000000000010000000801000048726d704f70656e4368616e6e656c52657175657374436f756e740031000000000000000100000042000000f8f711005a00000052f811005f000000b1f811003800000048726d7041636365707465644368616e6e656c52657175657374436f756e740031000000000000000100000042000000ecf611005c00000048f711005b000000a3f711005500000048726d70436c6f73654368616e6e656c526571756573747331000000000000000100000044000000c9f51100640000002df6110040000000f4ae1200000000006df6110030000000f4ae120000000000d5f411000b0000009df611004f00000048726d70436c6f73654368616e6e656c52657175657374734c69737431000000000000000100000008010000310000000000000001000000440000003df511002e000000d5f411000b0000006bf511005e00000048726d704368616e6e656c7348726d704368616e6e656c003100000000000000010000005a000000a8f411002d000000d5f411000b000000e0f411005d00000048726d70496e67726573734368616e6e656c73496e646578310000000000000001000000fa0000007bf2110056000000d1f211000b000000f4ae120000000000dcf211004800000024f3110047000000f4ae12000000000017f111000c0000006bf3110063000000cef311000f000000ddf31100620000003ff411000f0000004ef41100400000008ef411001a00000048726d704567726573734368616e6e656c73496e64657800310000000000000001000000fa0000005665633c496e626f756e6448726d704d6573736167653c543a3a426c6f636b4e756d6265723e3e0031000000000000000100000050000000f7f111002b00000022f21100590000005665633c28543a3a426c6f636b4e756d6265722c205665633c5061726149643e293e00003100000000000000010000000901000090f011003d000000cdf011004a00000017f111000c00000023f111002a0000004df111003a00000087f1110060000000e7f1110010000000204d61696e7461696e732061206d617070696e6720746861742063616e206265207573656420746f20616e7377657220746865207175657374696f6e3a20576861742070617261732073656e742061206d6573736167652061742074686520676976656e20626c6f636b206e756d62657220666f72206120676976656e2072656369657665722e20496e76617269616e74733a202d2054686520696e6e657220605665633c5061726149643e60206973206e6576657220656d7074792e202d2054686520696e6e657220605665633c5061726149643e602063616e6e6f742073746f72652074776f2073616d652060506172614964602e202d20546865206f7574657220766563746f7220697320736f7274656420617363656e64696e6720627920626c6f636b206e756d62657220616e642063616e6e6f742073746f72652074776f206974656d732077697468207468652073616d65202020626c6f636b206e756d6265722e2053746f7261676520666f7220746865206d6573736167657320666f722065616368206368616e6e656c2e20496e76617269616e743a2063616e6e6f74206265206e6f6e2d656d7074792069662074686520636f72726573706f6e64696e67206368616e6e656c20696e206048726d704368616e6e656c736020697320604e6f6e65602e20496e67726573732f65677265737320696e646578657320616c6c6f7720746f2066696e6420616c6c207468652073656e6465727320616e642072656365697665727320676976656e20746865206f70706f7369746520736964652e20492e652e2028612920696e677265737320696e64657820616c6c6f777320746f2066696e6420616c6c207468652073656e6465727320666f72206120676976656e20726563697069656e742e202862292065677265737320696e64657820616c6c6f777320746f2066696e6420616c6c2074686520726563697069656e747320666f72206120676976656e2073656e6465722e202d20666f72206561636820696e677265737320696e64657820656e74727920666f72206050602065616368206974656d2060496020696e2074686520696e6465782073686f756c642070726573656e7420696e206048726d704368616e6e656c73602020206173206028492c205029602e202d20666f7220656163682065677265737320696e64657820656e74727920666f72206050602065616368206974656d2060456020696e2074686520696e6465782073686f756c642070726573656e7420696e206048726d704368616e6e656c73602020206173206028502c204529602e202d2074686572652073686f756c64206265206e6f206f746865722064616e676c696e67206368616e6e656c7320696e206048726d704368616e6e656c73602e202d2074686520766563746f72732061726520736f727465642e2048524d50206368616e6e656c2064617461206173736f6369617465642077697468206561636820706172612e20496e76617269616e743a202d2065616368207061727469636970616e7420696e20746865206368616e6e656c2073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e205468652048524d502077617465726d61726b206173736f6369617465642077697468206561636820706172612e202d2065616368207061726120605060207573656420686572652061732061206b65792073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e204120736574206f662070656e64696e672048524d5020636c6f7365206368616e6e656c20726571756573747320746861742061726520676f696e6720746f20626520636c6f73656420647572696e67207468652073657373696f6e206368616e67652e205573656420666f7220636865636b696e67206966206120676976656e206368616e6e656c206973207265676973746572656420666f7220636c6f737572652e2054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e2054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732077657265206163636570746564206279206120676976656e20726563697069656e7420706172612e20496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732060285f2c2058296020776974682060636f6e6669726d6564602073657420746f20747275652c20617320746865206e756d626572206f66206048726d7041636365707465644368616e6e656c52657175657374436f756e746020666f72206058602e2054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732061726520696e6974697461746564206279206120676976656e2073656e64657220706172612e20496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d73207468617420686173206028582c205f296020617320746865206e756d626572206f66206048726d704f70656e4368616e6e656c52657175657374436f756e746020666f72206058602e2054686520736574206f662070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732e20f911003e00000050616c6c65742070617261732073746f7261676520697320696e636f6e73697374656e742c20636f6465206e6f7420666f756e6420666f72206861736820000000000000ecb5110016000000000000003cfa11000200000000000000000000006cfa1100010000000000000000000000d6b51100160000000000000074fa1100020000000000000000000000a4fa1100010000000000000000000000bbb511001b00000000000000acfa1100030000000000000000000000f4fa1100010000000000000000000000a8b51100130000000000000074fa1100020000000000000000000000fcfa110001000000000000000000000096b511001200000000000000d0e2110001000000000000000000000004fb110003000000000000000000000044e51100040000000000000010421200060000000000000021fc1100080000000000000029fc11000e00000093fc11003f0000000000000044e51100040000000000000010421200060000000000000083fc110008000000000000008bfc11000800000042fc1100410000000000000044e51100040000000000000010421200060000000000000021fc1100080000000000000029fc11000e0000000000000037fc11000b00000000000000d97612000e000000f0fb110031000000a8fb1100480000001cfb11003f0000005bfb11003e00000099fb11000f0000002050757420612070617261636861696e206469726563746c7920696e746f20746865206e6578742073657373696f6e277320616374696f6e2071756575652e2057652063616e277420717565756520697420616e7920736f6f6e6572207468616e207468697320776974686f757420676f696e6720696e746f2074686520696e697469616c697a65722e2e2e204e6f74652061206e657720626c6f636b206865616420666f7220706172612077697468696e2074686520636f6e74657874206f66207468652063757272656e7420626c6f636b2e205363686564756c65206120636f6465207570677261646520666f7220626c6f636b206065787065637465645f6174602e6e65775f636f646556616c69646174696f6e436f646565787065637465645f617420536574207468652073746f7261676520666f72207468652063757272656e742070617261636861696e2068656164206461746120696d6d6564696174656c792e6e65775f68656164486561644461746120536574207468652073746f7261676520666f72207468652070617261636861696e2076616c69646174696f6e20636f646520696d6d6564696174656c792e000000000000b40112000a00000000000000000000002c5212000b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200c00112000000000000000000d001120001000000000000000100000000000000d80112000e0000000105000000000000104212000600000000000000e60112000d000000000000000000000000000000000000000000000000000000f4ae1200f4011200000000000000000004021200010000000000000000000000000000000c0212000500000001050000000000001042120006000000000000008bfc110008000000000000000000000000000000000000000000000000000000f4ae120014021200000000000000000024021200010000000000000000000000000000002c0212000f0000000105000000000000104212000600000000000000b662120004000000000000000000000000000000000000000000000000000000f4ae12003c02120000000000000000004c021200030000000000000000000000000000009ab711000c0000000105000000000000640212001800000000000000b662120004000000000000000000000000000000000000000000000000000000f4ae12007c02120000000000000000008c02120004000000000000000000000000000000a6b711000c0000000105000000000000104212000600000000000000ac02120020000000000000000000000000000000000000000000000000000000f4ae1200cc0212000000000000000000dc021200030000000000000001000000000000008bb711000f0000000000000000000000f40212001d000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200140312000000000000000000240312000600000000000000010000000000000079b71100120000000105000000000000104212000600000000000000d97612000e000000000000000000000000000000000000000000000000000000f4ae120054031200000000000000000064031200030000000000000000000000000000007c0312000e0000000105000000000000104212000600000000000000b662120004000000000000000000000000000000000000000000000000000000f4ae12008c03120000000000000000009c03120003000000000000000000000000000000b40312000c0000000105000000000000db9912000c000000000000002c5212000b000000000000000000000000000000000000000000000000000000f4ae1200c00312000000000000000000d003120001000000000000000100000000000000d8031200140000000105000000000000104212000600000000000000ec0312000f000000000000000000000000000000000000000000000000000000f4ae1200fc03120000000000000000000c04120001000000000000000000000000000000140412000e0000000106000000000000b662120004000000000000007b6a120003000000000000000000000000000000000000000000000000000000f4ae120024041200000000000000000034041200010000000000000001000000000000003c0412000a0000000106000000000000b6621200040000000000000029fc11000e000000000000000000000000000000000000000000000000000000f4ae12004804120000000000000000005804120004000000000000000000000050617261636861696e730000310000000000000001000000fa000000c60a12004b000000506172614c6966656379636c6573506172614c6966656379636c650031000000000000000100000044000000970a12002f0000004865616473000000310000000000000001000000440000006f0a12002800000043757272656e74436f6465486173680031000000000000000100000044000000420a12002d000000f4ae120000000000d805120039000000285061726149642c20543a3a426c6f636b4e756d6265722931000000000000000100000044000000d909120058000000310a120011000000f4ae120000000000d8051200390000005061726150617374436f64654d6574613c543a3a426c6f636b4e756d6265723e3100000000000000010000000a01000008091200520000005a09120052000000ac0912002d0000005665633c285061726149642c20543a3a426c6f636b4e756d626572293e0000003100000000000000010000000b010000fa061200680000006207120060000000c20712003b000000fd071200640000006108120052000000b30812005500000031000000000000000100000044000000110612004a0000005b06120059000000b406120046000000467574757265436f646548617368000031000000000000000100000044000000b105120027000000f4ae120000000000d805120039000000416374696f6e735175657565310000000000000001000000fa0000006c051200450000005570636f6d696e67506172617347656e657369735061726147656e657369734172677300310000000000000001000000440000004405120028000000436f646542794861736852656673000031000000000000000100000042000000fa0412004a000000436f64654279486173680000310000000000000001000000440000007804120024000000f4ae1200000000009c0412004c000000e8041200120000002056616c69646174696f6e20636f64652073746f7265642062792069747320686173682e20546869732073746f7261676520697320636f6e73697374656e742077697468205b60467574757265436f646548617368605d2c205b6043757272656e74436f646548617368605d20616e64205b6050617374436f646548617368605d2e20546865206e756d626572206f66207265666572656e6365206f6e207468652076616c69646174696f6e20636f646520696e205b60436f6465427948617368605d2073746f726167652e205570636f6d696e6720706172617320696e7374616e74696174696f6e20617267756d656e74732e2054686520616374696f6e7320746f20706572666f726d20647572696e6720746865207374617274206f6620612073706563696669632073657373696f6e20696e6465782e205468652061637475616c2066757475726520636f64652068617368206f66206120706172612e20436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e2054686520626c6f636b206e756d6265722061742077686963682074686520706c616e6e656420636f6465206368616e676520697320657870656374656420666f72206120706172612e20546865206368616e67652077696c6c206265206170706c696564206166746572207468652066697273742070617261626c6f636b20666f72207468697320494420696e636c7564656420776869636820657865637574657320696e2074686520636f6e74657874206f6620612072656c617920636861696e20626c6f636b20776974682061206e756d626572203e3d206065787065637465645f6174602e2057686963682070617261732068617665207061737420636f64652074686174206e65656473207072756e696e6720616e64207468652072656c61792d636861696e20626c6f636b2061742077686963682074686520636f646520776173207265706c616365642e204e6f746520746861742074686973206973207468652061637475616c20686569676874206f662074686520696e636c7564656420626c6f636b2c206e6f7420746865206578706563746564206865696768742061742077686963682074686520636f6465207570677261646520776f756c64206265206170706c6965642c20616c74686f7567682074686579206d617920626520657175616c2e205468697320697320746f20656e737572652074686520656e7469726520616363657074616e636520706572696f6420697320636f76657265642c206e6f7420616e206f666673657420616363657074616e636520706572696f64207374617274696e672066726f6d207468652074696d65206174207768696368207468652070617261636861696e20706572636569766573206120636f6465207570677261646520617320686176696e67206f636375727265642e204d756c7469706c6520656e747269657320666f7220612073696e676c65207061726120617265207065726d69747465642e204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e205061737420636f6465206f662070617261636861696e732e205468652070617261636861696e73207468656d73656c766573206d6179206e6f74206265207265676973746572656420616e796d6f72652c2062757420776520616c736f206b65657020746865697220636f6465206f6e2d636861696e20666f72207468652073616d6520616d6f756e74206f662074696d65206173206f7574646174656420636f646520746f206b65657020697420617661696c61626c6520666f72207365636f6e6461727920636865636b6572732e2041637475616c207061737420636f646520686173682c20696e646963617465642062792074686520706172612069642061732077656c6c2061732074686520626c6f636b206e756d62657220617420776869636820697420626563616d65206f757464617465642e205468652076616c69646174696f6e20636f64652068617368206f66206576657279206c69766520706172612e2054686520686561642d64617461206f66206576657279207265676973746572656420706172612e205468652063757272656e74206c6966656379636c65206f66206120616c6c206b6e6f776e2050617261204944732e20416c6c2070617261636861696e732e204f72646572656420617363656e64696e67206279205061726149642e20506172617468726561647320617265206e6f7420696e636c756465642e000000faa9110047000000ec000000250000003a0b12001e00000072756e74696d653a3a70617261734d697373696e6720636f646520666f722072656d6f766564206861736820090c1200140000001d0c120030000000c60b120043000000bf12120003000000d3b4110001000000980b12002e000000bf12120003000000d3b41100010000007468652048524d502077617465726d61726b206973206168656164207468652072656c61792d706172656e7420287468652048524d502077617465726d61726b206973206e6f7420616476616e6365642072656c617469766520746f20746865206c6173742077617465726d61726b20287468652048524d502077617465726d61726b20282920646f65736e2774206c616e64206f6e206120626c6f636b2077697468206d65737361676573207265636569766564000000000000009b1e12000900000000000000680d1200010000000000000000000000a8be11001100000000000000700d120001000000000000000000000099be11000f00000000000000780d12000100000000000000000000008fbe11000a00000000000000800d120001000000000000000000000082be11000d00000000000000880d120001000000000000000000000070be11001200000000000000900d120001000000000000000000000068be11000800000000000000980d120001000000000000000000000058be11001000000000000000a00d120001000000000000000000000045be11001300000000000000a80d1200010000000000000000000000b9be11001300000000000000b00d12000100000000000000200f120018000000000f120020000000ec0e120014000000db0e120011000000c40e120017000000a30e120021000000620e120041000000220e120040000000ed0d120035000000b80d1200350000002054686520676976656e206c656e67746820626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686520676976656e2077656967687420626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686572652063616e206f6e6c792062652061206d6178696d756d206f6620604d617850726f706f73616c7360206163746976652070726f706f73616c732e2054686520636c6f73652063616c6c20776173206d61646520746f6f206561726c792c206265666f72652074686520656e64206f662074686520766f74696e672e204d656d626572732061726520616c726561647920696e697469616c697a656421204475706c696361746520766f74652069676e6f726564204d69736d61746368656420696e6465782050726f706f73616c206d757374206578697374204475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564204163636f756e74206973206e6f742061206d656d626572636c6561725f7072696d657365745f7072696d656368616e67655f6b657972657365745f6d656d62657273737761705f6d656d62657272656d6f76655f6d656d6265726164645f6d656d62657262617463685f616c6c61735f64657269766174697665626174636870616c6c65745f6d656d626572736869702f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6d656d626572736869702f7372632f6c69622e727370616c6c65745f7574696c6974793a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f7574696c6974792f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265642f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f7368617265642e7273000000b9111200290000003211120066000000c802000033000000981112002100000010ab1200020000006672616d655f737570706f72743a3a73746f726167652f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f737570706f72742f7372632f73746f726167652f6d6f642e7273286b65792c2076616c756529206661696c656420746f206465636f6465206174206e6578745f6b65792072657475726e65642061206b65792077697468206e6f2076616c756520617420436865636b4e6f6e63650412120023000000a9101200480000003a000000010000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e006912120056000000bf12120003000000c2121200020000004d656d626572736869704d656d626572735072696d6572756e74696d653a3a6d656d626572736869706d6178696d756d206e756d626572206f66206d656d62657273207573656420666f72207765696768742069732065786365656465642c20776569676874732063616e20626520756e646572657374696d61746564205b203e205d2e6d6f646c70792f7574696c6973756261321112006600000047030000330000004b6579734e65787445706f6368436f6e666967556e636c657350616c6c65744f776e657245706f6368496e6465784e6578744b657973497348616c74656445706f6368436f6e6669675365676d656e74496e64657841756374696f6e436f756e746572417574686f7243757272656e74536c6f74446964536574556e636c657343757272656e74417574686f726974795365744e65787452616e646f6d6e657373496d706f72746564486173686573506f696e74657248656172746265617441667465724265737446696e616c697a656441756374696f6e496e666f47656e65736973536c6f7445706f6368537461727452616e646f6d6e65737350656e64696e6745706f6368436f6e6669674368616e6765496e697469616c697a6564417574686f7256726652616e646f6d6e657373496e697469616c486173684e6f774c6174656e65737344696455706461746544656665727265644f6666656e63657352657175657374436f756e74546f74616c49737375616e6365000000617474656d707420746f20646976696465206279207a65726f0000003100000008000000040000002900000003a312006d0000003405000001000000000000009b0f1200050000000000000020151200010000000000000000000000381512001200000000000000000000008e0f12000d00000000000000c8151200020000000000000000000000f81512000d0000000000000000000000850f1200090000000000000020151200010000000000000000000000601612000d0000000000000000000000641c12000500000000000000691c120018000000e31a120020000000f4ae1200000000004d1712001f000000f4ae1200000000006c1712003c000000f4ae120000000000a8171200580000000018120033000000f4ae120000000000a26812000b0000003318120041000000e66812000c000000f4ae120000000000031b120056000000591b12004d000000a61b120056000000fc1b120054000000501c12001400000000000000b3b012000500000000000000c41a12000300000000000000c71a12000400000000000000cb1a1200180000007418120038000000f4ae120000000000ac181200560000000219120030000000f4ae12000000000032191200520000008419120059000000dd19120055000000321a120020000000f4ae120000000000521a12003e000000f4ae120000000000901a120034000000c81612003c0000000417120049000000f4ae1200000000004d1712001f000000f4ae1200000000006c1712003c000000f4ae120000000000a8171200580000000018120033000000f4ae120000000000a26812000b0000003318120041000000e66812000c0000002053656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e205468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e204966206f726967696e20697320726f6f74207468656e2063616c6c2061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e20285468697320696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e202d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e2046696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e20776869636820757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e204e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e206265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e74207468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f316020696e20746865204d756c74697369672070616c6c657420696e73746561642e204e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e75313663616c6c426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c5420617320436f6e6669673e3a3a43616c6c3e506172656e7420686173682073686f756c642062652076616c69642e000000c41d12006000000038010000090000006a1e120031000000c41d1200600000003f0100000d000000c41d120060000000640100000d0000005369676e617475726520766572696669636174696f6e206661696c65642e0000c41d1200600000005501000011000000381e120032000000c41d120060000000c001000009000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e00c41d120060000000c80100000d00000053746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642ec41d120060000000ce010000090000005472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642ec41d120060000000d0010000090000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f6578656375746976652f7372632f6c69622e72734469676573744974656d206e6f7420657175616c4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e496e76616c696420696e686572656e7420706f736974696f6e20666f722065787472696e73696320617420696e646578204e6f744d656d626572416c72656164794d656d626572000000000000007b0f12000a00000000000000e81f1200010000000000000000000000002012000300000000000000000000006e0f12000d00000000000000e81f120001000000000000000000000018201200030000000000000000000000630f12000b000000000000003020120002000000000000000000000060201200050000000000000000000000560f12000d0000000000000088201200010000000000000000000000a02012000400000000000000000000004c0f12000a00000000000000c0201200010000000000000000000000d8201200050000000000000000000000430f12000900000000000000e81f120001000000000000000000000000211200030000000000000000000000380f12000b00000000000000f4ae120000000000000000000000000018211200030000000000000000000000254e12000300000000000000137612000c000000132412001f000000f4ae1200000000003224120028000000c423120024000000f4ae120000000000e82312002b00000000000000bb2312000600000000000000137612000c00000000000000c12312000300000000000000137612000c0000001e23120030000000f4ae1200000000004e23120029000000f4ae1200000000007723120044000000000000000623120007000000000000000d231200110000006b22120056000000c12212001b000000f4ae120000000000dc2212002a00000000000000d29512000300000000000000137612000c000000b021120036000000f4ae120000000000e62112003d000000f4ae12000000000023221200480000008021120030000000f4ae120000000000562112002a0000003021120026000000f4ae120000000000562112002a0000002052656d6f766520746865207072696d65206d656d626572206966206974206578697374732e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a5072696d654f726967696e602e2053657420746865207072696d65206d656d6265722e204d75737420626520612063757272656e74206d656d6265722e2053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e205072696d65206d656d62657273686970206973207061737365642066726f6d20746865206f726967696e206163636f756e7420746f20606e6577602c20696620657874616e742e204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52657365744f726967696e602e6d656d626572735665633c543a3a4163636f756e7449643e2053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a537761704f726967696e602e205072696d65206d656d62657273686970206973202a6e6f742a207061737365642066726f6d206072656d6f76656020746f2060616464602c20696620657874616e742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52656d6f76654f726967696e602e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a4164644f726967696e602e0000000000004a1212000700000000000000000000000d23120011000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12001c25120000000000000000002c2512000100000000000000010000000000000051121200050000000000000000000000137612000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120034251200000000000000000044251200010000000000000000000000310000000000000001000000530000007525120032000000310000000000000001000000440000004c25120029000000205468652063757272656e74207072696d65206d656d6265722c206966206f6e65206578697374732e205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e0000000000b02612000b00000000000000f4ae1200000000000000000000000000bc261200010000000000000000000000c42612000d00000000000000f4ae1200000000000000000000000000d4261200010000000000000000000000dc2612000e00000000000000f4ae1200000000000000000000000000ec261200010000000000000000000000f42612000c00000000000000f4ae120000000000000000000000000000271200010000000000000000000000082712000a00000000000000f4ae1200000000000000000000000000142712000100000000000000000000001c2712000500000000000000242712000100000000000000000000002c27120001000000000000004d656d62657241646465640059281200390000004d656d62657252656d6f7665640000001e2812003b0000004d656d62657273537761707065640000e7271200370000004d656d626572735265736574a1271200460000004b65794368616e67656400007f2712002200000044756d6d79000000502712002f000000342712001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e506172617353686172656400000000000000c0291200130000000000000000000000db9912000c000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d42912000000000000000000e429120001000000000000000100000000000000ec291200160000000000000000000000022a120013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200182a12000000000000000000282a120002000000000000000100000000000000382a12001300000000000000000000004b2a120010000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12005c2a120000000000000000006c2a120002000000000000000100000043757272656e7453657373696f6e496e6465780031000000000000000100000042000000862b12001b00000041637469766556616c696461746f72496e64696365735665633c56616c696461746f72496e6465783e00000031000000000000000100000050000000182b1200420000005a2b12002c00000041637469766556616c696461746f724b6579735665633c56616c696461746f7249643e003100000000000000010000000c0100007c2a120060000000dc2a12003c000000205468652070617261636861696e206174746573746174696f6e206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e20546869732073686f756c64206265207468652073616d65206c656e677468206173206041637469766556616c696461746f72496e6469636573602e20416c6c207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e20496e64696365732061726520696e746f207468652062726f616465722076616c696461746f72207365742e205468652063757272656e742073657373696f6e20696e6465782e000000b42b12005d000000740100001b0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f7472696564626d75742e72732000009c2c120007000000112c120001000000a32c12000d000000b02c12000b000000442c1200580000009f050000090000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f6669656c642e727343616e6e6f742020626974732066726f6d2061202d62697420726567696f6e00b42b12005d000000670100000d000000617373657274696f6e206661696c65643a20216578697374696e675f6b65792e69735f656d70747928290000b42b12005d000000800300001500000070a3120087000000420200000100000000000000a41e12000d00000000000000502d12000100000000000000000000009b1e12000900000000000000582d120001000000000000006e2d120012000000602d12000e000000204e6f742061206d656d6265722e20416c72656164792061206d656d6265722e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65742f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f63726f77646c6f616e2e727370616c6c65745f62656566793a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f6772616e6470612d6272696467652d6761646765742d373037303634656232336332396161372f363030386436372f62656566792d70616c6c65742f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f636f6d6d6f6e2f7372632f6d6d722e727370616c6c65745f73657373696f6e3a3a686973746f726963616c2f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f73657373696f6e2f7372632f686973746f726963616c2f6d6f642e727350726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b20716564b82f12006500000057010000110000001d3012003d000000000000000000000000000000b82f1200650000005e010000110000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f636f6d706163742e7273736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b207165640000b82f12006500000083010000110000000000000000000000000000000000000000000000b82f1200650000008a01000011000000426565667942656566794e657874417574686f72697469657300000000000000303312001100000000000000443312000100000000000000000000004c331200190000000000000068331200010000000000000000000000703312001b000000000000008c331200010000000000000000000000943312001800000000000000ac331200010000000000000000000000b43312000f00000000000000c4331200010000000000000000000000cc3312001100000000000000e033120001000000000000000000000068b112000800000000000000e8331200010000000000000000000000f03312001400000000000000043412000100000000000000000000000c3412000d000000000000001c341200010000000000000000000000243412000b000000000000003034120001000000000000000000000038341200160000000000000050341200010000000000000000000000583412000d0000000000000068341200010000000000000000000000703412000c000000000000007c341200010000000000000000000000843412000b0000000000000090341200010000000000000000000000983412001000000000000000a8341200010000000000000000000000b03412001000000000000000c0341200010000000000000000000000c83412000c00000000000000d4341200010000000000000000000000dc3412000f00000000000000ec341200010000000000000000000000f4341200120000000000000008351200010000000000000000000000103512001200000000000000243512000100000000000000000000002c35120010000000000000003c351200010000000000000000000000443512000c00000000000000503512000100000000000000000000005835120011000000000000006c35120001000000000000004669727374506572696f64496e50617374000000cc3912003e0000004669727374506572696f64546f6f466172496e46757475726500000087391200450000004c617374506572696f644265666f72654669727374506572696f64004c3912003b0000004c617374506572696f64546f6f466172496e467574757265003912004c00000043616e6e6f74456e64496e5061737400ae38120052000000456e64546f6f466172496e4675747572650000007d381200310000006638120017000000436f6e747269627574696f6e546f6f536d616c6c2b3812003b000000496e76616c69645061726149640000001738120014000000436170457863656564656400f237120025000000436f6e747269627574696f6e506572696f644f7665720000c73712002b000000496e76616c69644f726967696e000000a3371200240000004e6f7450617261636861696e70371200330000004c65617365416374697665002a371200460000004269644f724c65617365416374697665dd3612004d00000046756e64734e6f7452657475726e6564bb3612002200000046756e644e6f74456e6465649a361200210000004e6f436f6e747269627574696f6e7300653612003500000048617341637469766550617261636861696e000025361200400000004e6f745265616479546f446973736f6c76650000c73512005e000000496e76616c69645369676e6174757265b4351200130000004d656d6f546f6f4c617267659435120020000000416c7265616479496e4e657752616973650000007435120020000000205468652066756e6420697320616c726561647920696e204e65775261697365205468652070726f7669646564206d656d6f20697320746f6f206c617267652e20496e76616c6964207369676e61747572652e205468652063726f77646c6f616e206973206e6f7420726561647920746f20646973736f6c76652e20506f74656e7469616c6c79207374696c6c20686173206120736c6f74206f7220696e207265746972656d656e7420706572696f642e20546869732063726f77646c6f616e2068617320616e206163746976652070617261636861696e20616e642063616e6e6f7420626520646973736f6c7665642e20546865726520617265206e6f20636f6e747269627574696f6e732073746f72656420696e20746869732063726f77646c6f616e2e205468652063726f77646c6f616e20686173206e6f742079657420656e6465642e2046756e64732068617665206e6f7420796574206265656e2072657475726e65642e20546869732070617261636861696e277320626964206f72206c65617365206973207374696c6c2061637469766520616e642077697468647261772063616e6e6f742079657420626567696e2e20546869732070617261636861696e206c65617365206973207374696c6c2061637469766520616e64207265746972656d656e742063616e6e6f742079657420626567696e2e20546869732063726f77646c6f616e20646f6573206e6f7420636f72726573706f6e6420746f20612070617261636861696e2e20546865206f726967696e206f6620746869732063616c6c20697320696e76616c69642e2054686520636f6e747269627574696f6e20706572696f642068617320616c726561647920656e6465642e20436f6e747269627574696f6e7320657863656564206d6178696d756d20616d6f756e742e20496e76616c69642066756e6420696e6465782e2054686520636f6e747269627574696f6e207761732062656c6f7720746865206d696e696d756d2c20604d696e436f6e747269627574696f6e602e2054686572652077617320616e206f766572666c6f772e2054686520656e64206461746520666f7220746869732063726f77646c6f616e206973206e6f742073656e7369626c652e205468652063616d706169676e20656e6473206265666f7265207468652063757272656e7420626c6f636b206e756d6265722e2054686520656e64206d75737420626520696e20746865206675747572652e20546865206c617374206c6561736520706572696f642063616e6e6f74206265206d6f7265207468656e203320706572696f64732061667465722074686520666972737420706572696f642e204c617374206c6561736520706572696f64206d7573742062652067726561746572207468616e206669727374206c6561736520706572696f642e20546865206669727374206c6561736520706572696f64206e6565647320746f206174206c65617374206265206c657373207468616e203320606d61785f76616c7565602e205468652063757272656e74206c6561736520706572696f64206973206d6f7265207468616e20746865206669727374206c6561736520706572696f642e706f6b656164645f6d656d6f65646974646973736f6c7665726566756e647769746864726177636f6e7472696275746563726561746500000000603b12000b00000000000000000000006b3b120013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200803b12000000000000000000903b120001000000000000000100000000000000983b12000e0000000000000000000000a63b120020000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200c83b12000000000000000000d83b120001000000000000000100000000000000e03b12000f00000000000000000000006b3b120013000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200803b12000000000000000000f03b1200010000000000000001000000417574686f7269746965735665633c543a3a417574686f7269747949643e000031000000000000000100000050000000503c12001c00000056616c696461746f72536574496462656566795f7072696d6974697665733a3a56616c696461746f725365744964000031000000000000000100000056000000333c12001d0000004e657874417574686f72697469657300f83b12003b00000020417574686f72697469657320736574207363686564756c656420746f2062652075736564207769746820746865206e6578742073657373696f6e205468652063757272656e742076616c696461746f7220736574206964205468652063757272656e7420617574686f7269746965732073657463726f77646c6f616e0000000d01000060000000080000000e0100000f01000053657373696f6e486973746f726963616c53657373696f6e730000000d0100006000000008000000100100001101000012010000130100001401000015010000160100006661696c656420746f20696e7365727420696e746f20747269654661696c656420746f2067656e657261746520686973746f726963616c20616e6365737472792d696e636c7573696f6e2070726f6f662e0000000000000095301200140000000000000000000000843d120026000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200ac3d12000000000000000000bc3d120003000000000000000100000042656566794e657874417574686f726974795365743c4d65726b6c65526f6f744f663c543e3e000031000000000000000100000017010000d43d120025000000f4ae120000000000f93d1200560000002044657461696c73206f66206e65787420424545465920617574686f72697479207365742e20546869732073746f7261676520656e747279206973207573656420617320636163686520666f722063616c6c7320746f205b607570646174655f62656566795f6e6578745f617574686f726974795f736574605d2e00000000006040120007000000000000006840120001000000000000000000000070401200010000000000000000000000784012000b00000000000000844012000300000000000000000000009c401200010000000000000000000000a4401200080000000000000084401200030000000000000000000000ac401200010000000000000000000000b4401200110000000000000068401200010000000000000000000000c8401200020000000000000000000000d84012000b0000000000000068401200010000000000000000000000e4401200010000000000000000000000ec401200090000000000000068401200010000000000000000000000f8401200010000000000000000000000004112000f00000000000000684012000100000000000000000000001041120001000000000000000000000018411200090000000000000024411200020000000000000000000000344112000100000000000000000000003c4112000f000000000000004c4112000200000000000000000000005c411200010000000000000000000000644112000600000000000000684012000100000000000000000000006c411200010000000000000000000000744112000b000000000000008041120003000000000000000000000098411200010000000000000000000000a04112000f0000000000000068401200010000000000000000000000b04112000100000000000000437265617465640010421200060000008d44120031000000436f6e747269627574656400ad621200090000001042120006000000d5951200070000005644120037000000576974686472657714441200420000005061727469616c6c79526566756e6465640000008d4312004c000000d94312003b000000416c6c526566756e646564005843120035000000446973736f6c76656400000038431200200000004465706c6f7944617461466978656400fb4212003d0000004f6e626f617264656400000010421200060000001042120006000000a14212005a00000048616e646c65426964526573756c74001042120006000000934212000e000000554212003e0000004564697465640000164212003f0000004d656d6f5570646174656400ad621200090000001042120006000000f268120007000000df411200310000004164646564546f4e6577526169736500b84112002700000020412070617261636861696e20686173206265656e206d6f76656420746f204e657752616973652041206d656d6f20686173206265656e20757064617465642e205b77686f2c2066756e645f696e6465782c206d656d6f5d5061726149642054686520636f6e66696775726174696f6e20746f20612063726f77646c6f616e20686173206265656e206564697465642e205b66756e645f696e6465785d2054686520726573756c74206f6620747279696e6720746f207375626d69742061206e65772062696420746f2074686520536c6f74732070616c6c65742e4469737061746368526573756c74204f6e2d626f617264696e672070726f6365737320666f7220612077696e6e696e672070617261636861696e2066756e6420697320636f6d706c657465642e205b66696e645f696e6465782c2070617261636861696e5f69645d20546865206465706c6f792064617461206f66207468652066756e6465642070617261636861696e206973207365742e205b66756e645f696e6465785d2046756e6420697320646973736f6c7665642e205b66756e645f696e6465785d20416c6c206c6f616e7320696e20612066756e642068617665206265656e20726566756e6465642e205b66756e645f696e6465785d20546865206c6f616e7320696e20612066756e642068617665206265656e207061727469616c6c7920646973736f6c7665642c20692e652e2074686572652061726520736f6d65206c656674206f766572206368696c64206b6579732074686174207374696c6c206e65656420746f206265206b696c6c65642e205b66756e645f696e6465785d2057697468647265772066756c6c2062616c616e6365206f66206120636f6e7472696275746f722e205b77686f2c2066756e645f696e6465782c20616d6f756e745d20436f6e747269627574656420746f20612063726f77642073616c652e205b77686f2c2066756e645f696e6465782c20616d6f756e745d204372656174652061206e65772063726f77646c6f616e696e672063616d706169676e2e205b66756e645f696e6465785d0000000000003a3a1200060000000000000020461200060000000000000000000000b0461200040000000000000000000000303a12000a00000000000000d046120003000000000000000000000018471200020000000000000000000000283a120008000000000000002847120002000000000000000000000058471200110000000000000000000000223a12000600000000000000e0471200010000000000000000000000f84712000500000000000000000000001a3a12000800000000000000e047120001000000000000000000000020481200010000000000000000000000163a1200040000000000000020461200060000000000000000000000284812000300000000000000000000000e3a1200080000000000000040481200020000000000000000000000704812000300000000000000000000000a3a1200040000000000000088481200010000000000000000000000a0481200030000000000000000000000b3b0120005000000000000004c4b12000f00000000000000d84f12000300000000000000d74e12001500000000000000db4f12000c00000000000000e74f12001900000000000000005012000b00000000000000e74f120019000000000000000b50120003000000000000000e50120017000000000000002550120008000000000000002d501200130000000b4f12005b000000f4ae120000000000664f120058000000be4f12001a00000000000000b3b0120005000000000000004c4b12000f00000000000000d24e12000500000000000000d74e12001500000000000000ec4e12000900000000000000f54e120016000000284e1200550000007d4e12005500000000000000254e12000300000000000000137612000c00000000000000b3b0120005000000000000004c4b12000f0000005b4b120031000000f4ae1200000000001b4b120031000000f4ae1200000000008c4b12006c000000f84b12003f000000374c1200280000005f4c120054000000b34c12000e000000c14c120030000000f14c12004c000000f4ae1200000000003d4d12005c000000994d120008000000f4ae120000000000a14d12003d000000de4d12004700000000000000b3b0120005000000000000004c4b12000f000000464a1200390000007f4a120049000000c84a120053000000f4ae1200000000001b4b120031000000f0491200560000009849120035000000f4ae120000000000cd4912002300000000000000b3b012000500000000000000104212000600000000000000944912000400000000000000f2681200070000000c4912003c000000f4ae120000000000484912004c00000000000000b3b0120005000000000000001042120006000000b84812001c000000f4ae120000000000d44812003800000020506f6b65207468652066756e6420696e746f204e65775261697365204f726967696e206d757374206265205369676e65642c20616e64207468652066756e6420686173206e6f6e2d7a65726f2072616973652e2041646420616e206f7074696f6e616c206d656d6f20746f20616e206578697374696e672063726f77646c6f616e20636f6e747269627574696f6e2e204f726967696e206d757374206265205369676e65642c20616e64207468652075736572206d757374206861766520636f6e747269627574656420746f207468652063726f77646c6f616e2e6d656d6f20456469742074686520636f6e66696775726174696f6e20666f7220616e20696e2d70726f67726573732063726f77646c6f616e2e2043616e206f6e6c792062652063616c6c656420627920526f6f74206f726967696e2e2052656d6f766520612066756e6420616674657220746865207265746972656d656e7420706572696f642068617320656e64656420616e6420616c6c2066756e64732068617665206265656e2072657475726e65642e204175746f6d61746963616c6c7920726566756e6420636f6e7472696275746f7273206f6620616e20656e6465642063726f77646c6f616e2e2044756520746f20776569676874207265737472696374696f6e732c20746869732066756e6374696f6e206d6179206e65656420746f2062652063616c6c6564206d756c7469706c652074696d657320746f2066756c6c7920726566756e6420616c6c2075736572732e2057652077696c6c20726566756e64206052656d6f76654b6579734c696d69746020757365727320617420612074696d652e204f726967696e206d757374206265207369676e65642c206275742063616e20636f6d652066726f6d20616e796f6e652e436f6d706163743c5061726149643e2057697468647261772066756c6c2062616c616e6365206f66206120737065636966696320636f6e7472696275746f722e205468652066756e64206d7573742062652065697468657220696e2c206f7220726561647920666f722c207265746972656d656e742e20466f7220612066756e6420746f206265202a696e2a207265746972656d656e742c207468656e20746865207265746972656d656e7420666c6167206d757374206265207365742e20466f7220612066756e6420746f20626520726561647920666f72207265746972656d656e742c207468656e3a202d206974206d757374206e6f7420616c726561647920626520696e207265746972656d656e743b202d2074686520616d6f756e74206f66207261697365642066756e6473206d75737420626520626967676572207468616e20746865205f667265655f2062616c616e6365206f6620746865206163636f756e743b202d20616e64206569746865723a2020202d2074686520626c6f636b206e756d626572206d757374206265206174206c656173742060656e64603b206f722020202d207468652063757272656e74206c6561736520706572696f64206d7573742062652067726561746572207468616e207468652066756e64277320606c6173745f706572696f64602e20496e207468697320636173652c207468652066756e642773207265746972656d656e7420666c61672069732073657420616e64206974732060656e646020697320726573657420746f207468652063757272656e7420626c6f636b206e756d6265722e202d206077686f603a20546865206163636f756e742077686f736520636f6e747269627574696f6e2073686f756c642062652077697468647261776e2e202d2060696e646578603a205468652070617261636861696e20746f2077686f73652063726f77646c6f616e2074686520636f6e747269627574696f6e20776173206d6164652e77686f20436f6e7472696275746520746f20612063726f77642073616c652e20546869732077696c6c207472616e7366657220736f6d652062616c616e6365206f76657220746f2066756e6420612070617261636861696e20736c6f742e2049742077696c6c20626520776974686472617761626c65207768656e207468652063726f77646c6f616e2068617320656e64656420616e64207468652066756e64732061726520756e757365642e76616c7565436f6d706163743c42616c616e63654f663c543e3e7369676e61747572654f7074696f6e3c4d756c74695369676e61747572653e204372656174652061206e65772063726f77646c6f616e696e672063616d706169676e20666f7220612070617261636861696e20736c6f7420776974682074686520676976656e206c6561736520706572696f642072616e67652e2054686973206170706c6965732061206c6f636b20746f20796f75722070617261636861696e20636f6e66696775726174696f6e2c20656e737572696e6720746861742069742063616e6e6f74206265206368616e676564206279207468652070617261636861696e206d616e616765722e63617066697273745f706572696f64436f6d706163743c4c65617365506572696f644f663c543e3e6c6173745f706572696f64656e64436f6d706163743c543a3a426c6f636b4e756d6265723e76657269666965724f7074696f6e3c4d756c74695369676e65723e00000000c0511200050000000105000000000000104212000600000000000000c551120047000000000000000000000000000000000000000000000000000000f4ae12000c52120000000000000000001c52120001000000000000000000000000000000245212000800000000000000000000002c5212000b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12003852120000000000000000004852120002000000000000000100000000000000585212000c00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120064521200000000000000000074521200010000000000000001000000000000007c5212000d00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12006452120000000000000000008c52120001000000000000000100000046756e647346756e64496e666f3c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c204c65617365506572696f644f663c0a543e3e31000000000000000100000044000000a25312001a0000004e657752616973655665633c5061726149643e003100000000000000010000001801000008531200550000005d53120045000000456e64696e6773436f756e7431000000000000000100000042000000be5212004a0000004e65787454726965496e646578000000945212002a00000020547261636b657220666f7220746865206e65787420617661696c61626c65207472696520696e64657820546865206e756d626572206f662061756374696f6e732074686174206861766520656e746572656420696e746f20746865697220656e64696e6720706572696f6420736f206661722e205468652066756e64732074686174206861766520686164206164646974696f6e616c20636f6e747269627574696f6e7320647572696e6720746865206c61737420626c6f636b2e2054686973206973207573656420696e206f7264657220746f2064657465726d696e652077686963682066756e64732073686f756c64207375626d6974206e6577206f72207570646174656420626964732e20496e666f206f6e20616c6c206f66207468652066756e64732e00000000645412000800000000000000645412000800000000000000f4ae12006c54120000000000000000007c541200010000000000000000000000845412000f00000000000000935412000c00000000000000f4ae1200a05412000000000000000000b0541200020000000000000000000000c05412000f000000000000007b6a12000300000000000000f4ae1200d05412000000000000000000e0541200010000000000000050616c6c6574496431000000000000000100000019010000965512005e0000004d696e436f6e747269627574696f6e42616c616e63654f663c543e0031000000000000000100000066000000215512005b0000007c5512001a00000052656d6f76654b6579734c696d6974003100000000000000010000001a010000e854120039000000204d6178206e756d626572206f662073746f72616765206b65797320746f2072656d6f7665207065722065787472696e7369632063616c6c2e20546865206d696e696d756d20616d6f756e742074686174206d617920626520636f6e747269627574656420696e746f20612063726f77646c6f616e2e2053686f756c6420616c6d6f7374206365727461696e6c79206265206174206c65617374204578697374656e7469616c4465706f7369742e2050616c6c6574496420666f72207468652063726f77646c6f616e2070616c6c65742e20416e20617070726f7072696174652076616c756520636f756c642062652060606050616c6c65744964282a622270792f6366756e642229606060d4a71200840000003504000022000000d4a71200840000008a03000036000000d4a71200840000005104000015000000d4a71200840000005f0400001e000000d4a71200840000006804000018000000d4a71200840000006904000019000000d4a71200840000006c0400001a000000d4a7120084000000720400000d00000048617368207461626c65206361706163697479206f766572666c6f77a05612005c0000004f000000280000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6861736862726f776e2d302e392e312f7372632f7261772f6d6f642e727308000000000000001457120041000000b9000000010000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f726f636f636f2f7372632f6c69622e72735468657265206973206f6e6c79206f6e6520666174616c206572726f723b20716564003100000009000000010000000401000072656d61726b5f776974685f6576656e746b696c6c5f7072656669786b696c6c5f73746f726167657365745f73746f726167657365745f6368616e6765735f747269655f636f6e6669677365745f636f64655f776974686f75745f636865636b737365745f636f64657365745f686561705f706167657372656d61726b66696c6c5f626c6f636b00af58120015000000c45812001d00000072756e74696d653a3a6672616d652d737570706f7274706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e2f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f636f6e66696775726174696f6e2e7273e29c85206e6f206d6967726174696f6e20666f72202c2073657474696e672073746f726167652076657273696f6e20746f20706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65722f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f696e697469616c697a65722e72730000d959120007000000e0591200520000006672616d655f73797374656d3a3a70616c6c65742f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f6672616d652f73797374656d2f7372632f6c69622e7273e29aa0efb88f20206465636c6172657320696e7465726e616c206d6967726174696f6e7320287768696368202a6d696768742a2065786563757465292c2073657474696e672073746f726167652076657273696f6e20746f2056524648617368565246526573756c747672662d696e7672662d6f7574436865636b547856657273696f6e436865636b47656e657369733a6865617070616765733a6368616e6765735f74726965000000009c5a12000f00000000000000ac5a12000100000000000000496e76616c69644e657756616c756500b45a12003800000020546865206e65772076616c756520666f72206120636f6e66696775726174696f6e20706172616d6574657220697320696e76616c69642e7061726173436f6e66696775726174696f6e50656e64696e67436f6e666967416374697665436f6e666967666f7263655f617070726f76657365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e6469646174657365745f68726d705f6d61785f706172617468726561645f6f7574626f756e645f6368616e6e656c737365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c737365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a657365745f68726d705f6d61785f706172617468726561645f696e626f756e645f6368616e6e656c737365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c737365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a657365745f68726d705f6368616e6e656c5f6d61785f63617061636974797365745f68726d705f726563697069656e745f6465706f7369747365745f68726d705f73656e6465725f6465706f7369747365745f68726d705f6f70656e5f726571756573745f74746c7365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e6469646174657365745f6d61785f7570776172645f6d6573736167655f73697a657365745f7072656665727265645f646973706174636861626c655f7570776172645f6d657373616765735f737465705f7765696768747365745f6d61785f646f776e776172645f6d6573736167655f73697a657365745f6d61785f7570776172645f71756575655f73697a657365745f6d61785f7570776172645f71756575655f636f756e747365745f72656c61795f7672665f6d6f64756c6f5f73616d706c65737365745f6e65656465645f617070726f76616c737365745f7a65726f74685f64656c61795f7472616e6368655f77696474687365745f6e5f64656c61795f7472616e636865737365745f6e6f5f73686f775f736c6f74737365745f646973707574655f636f6e636c7573696f6e5f62795f74696d655f6f75745f706572696f647365745f646973707574655f6d61785f7370616d5f736c6f74737365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f647365745f646973707574655f706572696f647365745f6d61785f76616c696461746f72737365745f6d61785f76616c696461746f72735f7065725f636f72657365745f7363686564756c696e675f6c6f6f6b61686561647365745f7468726561645f617661696c6162696c6974795f706572696f647365745f636861696e5f617661696c6162696c6974795f706572696f647365745f67726f75705f726f746174696f6e5f6672657175656e63797365745f706172617468726561645f726574726965737365745f706172617468726561645f636f7265737365745f6d61785f686561645f646174615f73697a657365745f6d61785f706f765f73697a657365745f6d61785f636f64655f73697a657365745f636f64655f726574656e74696f6e5f706572696f647365745f76616c69646174696f6e5f757067726164655f64656c61797365745f76616c69646174696f6e5f757067726164655f6672657175656e63793a65787472696e7369635f696e646578000000df5f12001a000000f95f12000300000072756e74696d653a3a73797374656d6672616d655f73797374656d45787472696e736963206661696c656420617420626c6f636b28293a204e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b20716564310000000000000001000000100000007c5912005d0000005f0500000e0000007c5912005d00000067050000160000004e6f6e44656661756c74436f6d706f736974654661696c6564546f4578747261637452756e74696d6556657273696f6e5370656356657273696f6e4e65656473546f496e637265617365496e76616c6964537065634e616d654e6f6e5a65726f526566436f756e7400000000c86112001000000000000000d8611200010000000000000000000000e0611200010000000000000000000000e86112000f00000000000000f861120002000000000000000000000008621200010000000000000000000000106212000b00000000000000f4ae12000000000000000000000000001c621200010000000000000000000000246212000a000000000000003062120001000000000000000000000038621200010000000000000000000000406212000d0000000000000030621200010000000000000000000000506212000100000000000000000000005862120008000000000000006062120002000000000000000000000070621200010000000000000045787472696e736963537563636573733b6312000c000000476312002e00000045787472696e7369634661696c6564002e6312000d0000003b6312000c0000000963120025000000436f64655570646174656400f4621200150000004e65774163636f756e740000ad62120009000000d56212001f0000004b696c6c65644163636f756e74000000ba6212001b00000052656d61726b6564ad62120009000000b6621200040000007862120035000000204f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d4163636f756e7449644861736820416e205c5b6163636f756e745c5d20776173207265617065642e2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e20603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d44697370617463684572726f724469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d00000000000000055812000a000000000000003065120001000000000000000000000048651200010000000000000000000000ff57120006000000000000005065120001000000000000000000000068651200050000000000000000000000f15712000e0000000000000090651200010000000000000000000000a8651200080000000000000000000000e95712000800000000000000e8651200010000000000000000000000006612000a0000000000000000000000d25712001700000000000000e865120001000000000000000000000050661200080000000000000000000000bb571200170000000000000090661200010000000000000000000000a86612000a0000000000000000000000b05712000b00000000000000f866120001000000000000000000000010671200080000000000000000000000a45712000c000000000000005067120001000000000000000000000068671200080000000000000000000000995712000b00000000000000a8671200020000000000000000000000d86712000b00000000000000000000008857120011000000000000003068120001000000000000000000000048681200060000000000000000000000ff6f120006000000000000000570120007000000bd6f12004200000000000000b66f12000700000000000000f2681200070000009b6f12001b000000f4ae120000000000a26812000b000000ec6b120009000000e66812000c00000000000000936f12000500000000000000986f120003000000106f12003f000000f4ae120000000000a26812000b000000ec6b1200090000004f6f120013000000626f1200190000007b6f120018000000e66812000c000000000000000c6f12000400000000000000f268120007000000c46d12001a000000f4ae120000000000a26812000b000000de6d12004d000000456d1200220000002b6e12005e000000db6812000b000000896e12005f000000e86e120024000000e66812000c000000da6c120047000000f4ae120000000000a26812000b000000216d120024000000456d120022000000db6812000b000000676d12005d000000e66812000c00000000000000a76c12001300000000000000ba6c120020000000c46b120028000000f4ae120000000000a26812000b000000ec6b120009000000f56b12002c000000216c120036000000576c120019000000706c12000d0000007d6c12002a000000e66812000c00000000000000b26b12000500000000000000b76b12000d000000366b12001b000000f4ae120000000000a26812000b000000516b120025000000766b12001f000000956b12001d000000106b12001a000000e66812000c000000000000002a6b120004000000000000002e6b1200080000007e6a12001e000000f4ae120000000000a26812000b0000009c6a12003f000000db6a120019000000f46a12001c000000106b12001a000000e66812000c000000000000006a6a12000600000000000000706a12000300000000000000736a120008000000000000007b6a120003000000f968120045000000f4ae1200000000003e6912004f0000008d69120050000000f4ae120000000000a26812000b000000dd69120037000000146a1200190000002d6a12001d0000004a6a120020000000e66812000c00000000000000ff5712000600000000000000f268120007000000786812002a000000f4ae120000000000a26812000b000000ad6812002e000000db6812000b000000e66812000c000000204d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e2023203c7765696768743e202d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e202d2031206576656e742e2023203c2f7765696768743e5665633c75383e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465722074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e202d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860202d206050602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a20302e383334202a205020c2b573202d205772697465733a204e756d626572206f66207375626b657973202b20317072656669784b65795f7375626b657973753332204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579202d206049602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a202e333738202a206920c2b573202d205772697465733a204e756d626572206f66206974656d736b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e202d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360202d206049602073746f72616765207772697465732028604f28312960292e202d2042617365205765696768743a20302e353638202a206920c2b5736974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e202d20604f28312960202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292e202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129202d2042617365205765696768743a20372e32313820c2b573202d204442205765696768743a20202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573746368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e202d20604f2843296020776865726520604360206c656e677468206f662060636f646560202d20312073746f726167652077726974652028636f64656320604f28432960292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2053657420746865206e65772072756e74696d6520636f64652e202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f646560202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e636f64652053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e202d20312073746f726167652077726974652e202d2042617365205765696768743a20312e34303520c2b573202d203120777269746520746f20484541505f50414745537061676573753634204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f50657262696c6c000000000c761200070000000102000000000000137612000c000000000000001f76120025000000000000000000000000000000000000000000000000000000f4ae120044761200000000000000000054761200010000000000000001000000000000005c7612000e00000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12006c76120000000000000000007c76120001000000000000000000000000000000847612000b00000000000000000000008f7612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200a07612000000000000000000b076120001000000000000000100000000000000b87612001000000000000000000000007b6a120003000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12006c7612000000000000000000c876120001000000000000000000000000000000d0761200090000000105000000000000d97612000e00000000000000e776120007000000000000000000000000000000000000000000000000000000f4ae1200f076120000000000000000000077120001000000000000000100000000000000087712000d00000001050000000000007b6a12000300000000000000f268120007000000000000000000000000000000000000000000000000000000f4ae1200187712000000000000000000287712000100000000000000010000000000000030771200060000000000000000000000d97612000e000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12003877120000000000000000004877120001000000000000000100000000000000507712000a0000000000000000000000e776120007000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200f076120000000000000000005c77120001000000000000000100000000000000647712000600000000000000000000006a7712000b000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12007877120000000000000000008877120001000000000000000100000000000000907712000600000000000000000000009677120023000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200bc7712000000000000000000cc77120001000000000000000100000000000000d47712000a0000000000000000000000de7712000a000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200387712000000000000000000e877120001000000000000000100000000000000f07712000b0000000102000000000000e77612000700000000000000fb77120021000000000000000000000000000000000000000000000000000000f4ae12001c78120000000000000000002c7812000a0000000000000001000000000000007c7812001200000000000000000000008e78120016000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200a47812000000000000000000b478120001000000000000000000000000000000bc781200150000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d87812000000000000000000e878120001000000000000000100000000000000f0781200180000000000000000000000d178120004000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200d878120000000000000000000879120002000000000000000100000000000000187912000e00000000000000000000002679120005000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12002c79120000000000000000003c7912000100000000000000000000004163636f756e74543a3a4163636f756e7449644163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e3100000000000000010000001b010000ae7e12003a00000045787472696e736963436f756e74000031000000000000000100000044000000807e12002e000000426c6f636b576569676874436f6e73756d65645765696768740000003100000000000000010000001c0100005e7e120022000000416c6c45787472696e736963734c656e0e7e120050000000426c6f636b48617368543a3a426c6f636b4e756d626572543a3a48617368000031000000000000000100000043000000e87d12002600000045787472696e7369634461746100000031000000000000000100000051000000997d12004f0000004e756d626572000031000000000000000100000042000000577d120042000000506172656e744861736800003b7d12001c0000004469676573744469676573744f663c543e0000003100000000000000010000001d010000ff7c12003c0000004576656e74735665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e0000003100000000000000010000001e010000d77c1200280000004576656e74436f756e744576656e74496e646578a97c12002e0000004576656e74546f706963735665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e31000000000000000100000054000000777a120049000000c07a120025000000f4ae120000000000e57a120054000000397b1200510000008a7b120039000000f4ae120000000000c37b120053000000167c120053000000697c1200400000004c61737452756e74696d65557067726164654c61737452756e74696d6555706772616465496e666f31000000000000000100000044000000227a1200550000005570677261646564546f553332526566436f756e74626f6f6c00000031000000000000000100000046000000cf791200530000005570677261646564546f547269706c65526566436f756e746679120057000000bd79120012000000457865637574696f6e50686173655068617365003100000000000000010000005a00000044791200220000002054686520657865637574696f6e207068617365206f662074686520626c6f636b2e2054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c7365202864656661756c7429206966206e6f742e2054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e2053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e205468652063757272656e742077656967687420666f722074686520626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e00000000388012000c00000000000000448012001400000000000000f4ae120058801200000000000000000068801200010000000000000000000000708012000b000000000000007b8012001300000000000000f4ae1200908012000000000000000000a0801200010000000000000000000000a88012000e00000000000000d97612000e00000000000000f4ae1200b88012000000000000000000c8801200010000000000000000000000d08012000800000000000000d88012000f00000000000000f4ae1200e88012000000000000000000f8801200010000000000000000000000008112000700000000000000078112000e00000000000000f4ae120018811200000000000000000028811200010000000000000000000000308112000a000000000000003a8112000200000000000000f4ae12003c81120000000000000000004c8112000500000000000000426c6f636b576569676874736c696d6974733a3a426c6f636b576569676874733100000000000000010000001f0100003683120034000000426c6f636b4c656e6774686c696d6974733a3a426c6f636b4c656e6774680000310000000000000001000000200100000c8312002a000000426c6f636b48617368436f756e74000031000000000000000100000047000000b782120055000000446257656967687452756e74696d6544625765696768740031000000000000000100000021010000758212004200000056657273696f6e52756e74696d6556657273696f6e00000031000000000000000100000022010000548212002100000053533538507265666978753831000000000000000100000023010000748112002a000000f4ae1200000000009e8112004e000000ec8112004c000000388212001c000000205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e2054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e2069732074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f6620697420617320616e206964656e746966696572206f662074686520636861696e2e204765742074686520636861696e27732063757272656e742076657273696f6e2e2054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e20426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e00009483120028000000bc831200010000003100000004000000040000002401000025010000260100004552524f523a20436f7272757074656420737461746520696e206368696c642074726965206174202f6772616e6470613a65717569766f6361696d2d6f6e6c696e653a6f66666c696e626162653a65717569766f636174696f00000000000000175b12000d000000000000001c841200010000000000000000000000348412000300000000000000000000001985120005000000000000001e8512000b0000004c8412004f0000009b84120055000000f0841200290000002049737375652061207369676e616c20746f2074686520636f6e73656e73757320656e67696e6520746f20666f726369626c79206163742061732074686f75676820616c6c2070617261636861696e20626c6f636b7320696e20616c6c2072656c617920636861696e20626c6f636b7320757020746f20616e6420696e636c7564696e672074686520676976656e206e756d62657220696e207468652063757272656e7420636861696e206172652076616c696420616e642073686f756c642062652066696e616c697a65642e75705f746f426c6f636b4e756d626572496e697469616c697a657200000000f48512000e000000000000000000000018b8120002000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae12000486120000000000000000001486120008000000000000000000000000000000548612001600000000000000000000006a8612001a000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae120084861200000000000000000094861200070000000000000001000000486173496e697469616c697a65640000310000000000000001000000440000001088120048000000f4ae12000000000058881200470000009f8812005a000000f4ae120000000000f98812005d000000568912005e000000b489120020000000427566666572656453657373696f6e4368616e6765735665633c427566666572656453657373696f6e4368616e67653e31000000000000000100000027010000cc86120056000000f4ae1200000000002287120057000000798712000d000000f4ae120000000000868712005a000000e0871200300000002042756666657265642073657373696f6e206368616e67657320616c6f6e6720776974682074686520626c6f636b206e756d62657220617420776869636820746865792073686f756c64206265206170706c6965642e205479706963616c6c7920746869732077696c6c20626520656d707479206f72206f6e6520656c656d656e74206c6f6e672e2041706172742066726f6d20746861742074686973206974656d206e657665722068697473207468652073746f726167652e20486f776576657220746869732069732061206056656360207265676172646c65737320746f2068616e646c6520766172696f757320656467652063617365732074686174206d6179206f636375722061742072756e74696d65207570677261646520626f756e646172696573206f7220696620676f7665726e616e636520696e74657276656e65732e2057686574686572207468652070617261636861696e73206d6f64756c65732068617665206265656e20696e697469616c697a65642077697468696e207468697320626c6f636b2e2053656d616e746963616c6c79206120626f6f6c2c2062757420746869732067756172616e746565732069742073686f756c64206e65766572206869742074686520747269652c206173207468697320697320636c656172656420696e20606f6e5f66696e616c697a656020616e64204672616d65206f7074696d697a657320604e6f6e65602076616c75657320746f20626520656d7074792076616c7565732e204173206120626f6f6c2c20607365742866616c7365296020616e64206072656d6f766528296020626f7468206c65616420746f20746865206e6578742060676574282960206265696e672066616c73652c20627574206f6e65206f66207468656d2077726974657320746f20746865207472696520616e64206f6e6520646f6573206e6f742e205468697320636f6e667573696f6e206d616b657320604f7074696f6e3c28293e60206d6f7265207375697461626c6520666f72207468652073656d616e74696373206f662074686973207661726961626c652e00000000815f12002000000000000000b4901200010000000000000000000000cc901200010000000000000000000000655f12001c00000000000000b4901200010000000000000000000000d49012000100000000000000000000004c5f12001900000000000000b4901200010000000000000000000000dc9012000100000000000000000000003b5f12001100000000000000e4901200010000000000000000000000fc9012000100000000000000000000002b5f12001000000000000000e490120001000000000000000000000004911200010000000000000000000000155f12001600000000000000e49012000100000000000000000000000c911200010000000000000000000000015f12001400000000000000e490120001000000000000000000000014911200010000000000000000000000eb5e12001600000000000000e49012000100000000000000000000001c911200010000000000000000000000cf5e12001c00000000000000b490120001000000000000000000000024911200010000000000000000000000b25e12001d00000000000000b49012000100000000000000000000002c911200010000000000000000000000945e12001e00000000000000b4901200010000000000000000000000349112000100000000000000000000007c5e12001800000000000000e49012000100000000000000000000003c911200010000000000000000000000615e12001b00000000000000449112000100000000000000000000005c9112000100000000000000000000004f5e1200120000000000000044911200010000000000000000000000649112000100000000000000000000003d5e120012000000000000006c91120001000000000000000000000084911200010000000000000000000000105e12002d00000000000000b49012000100000000000000000000008c911200010000000000000000000000f65d12001a00000000000000e490120001000000000000000000000094911200010000000000000000000000cd5d12002900000000000000b49012000100000000000000000000009c911200010000000000000000000000bc5d12001100000000000000e4901200010000000000000000000000a4911200020000000000000000000000a85d12001400000000000000e4901200010000000000000000000000b49112000100000000000000000000008a5d12001e00000000000000e4901200010000000000000000000000bc911200010000000000000000000000765d12001400000000000000e4901200010000000000000000000000c49112000100000000000000000000005a5d12001c00000000000000e4901200010000000000000000000000cc911200010000000000000000000000405d12001a00000000000000e4901200010000000000000000000000d4911200010000000000000000000000275d12001900000000000000e4901200010000000000000000000000dc9112000100000000000000000000000a5d12001d00000000000000e4901200010000000000000000000000e4911200010000000000000000000000d45c12003600000000000000ec91120001000000000000000000000004921200010000000000000000000000b95c12001b00000000000000e49012000100000000000000000000000c921200010000000000000000000000915c12002800000000000000e490120001000000000000000000000014921200010000000000000000000000785c12001900000000000000e49012000100000000000000000000001c921200010000000000000000000000615c12001700000000000000249212000100000000000000000000003c921200010000000000000000000000475c12001a0000000000000024921200010000000000000000000000449212000200000000000000000000002a5c12001d00000000000000e4901200010000000000000000000000549212000100000000000000000000000b5c12001f00000000000000e49012000100000000000000000000005c921200010000000000000000000000e45b12002700000000000000e490120001000000000000000000000064921200010000000000000000000000bc5b12002800000000000000e49012000100000000000000000000006c9212000100000000000000000000009b5b12002100000000000000e490120001000000000000000000000074921200010000000000000000000000735b12002800000000000000e49012000100000000000000000000007c9212000100000000000000000000004a5b12002900000000000000e490120001000000000000000000000084921200010000000000000000000000245b12002600000000000000e49012000100000000000000000000008c921200010000000000000000000000d29512000300000000000000d97612000e0000009b9c120026000000799c120022000000449c12003500000000000000d295120003000000000000007b6a1200030000000c9c120038000000da9b120032000000b49b120026000000869b12002e0000004f9b1200370000001a9b120035000000ee9a12002c000000c19a12002d000000729a12004f00000000000000d29512000300000000000000679a12000b0000002b9a12003c000000e79912004400000000000000d29512000300000000000000db9912000c00000097991200440000006499120033000000369912002e000000079912002f000000b49812003f000000f3981200140000008c9812002800000068981200240000003098120038000000db971200550000008f9712004c000000359712005a0000000d9712002800000000000000d295120003000000000000000797120006000000b89612004f0000006c9612004c0000002a96120042000000dc9512004e00000000000000d29512000300000000000000d5951200070000007d951200550000001b951200590000007495120009000000d3941200480000007e941200550000002b94120053000000d79312005400000087931200500000003593120052000000e292120053000000949212004e000000205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206d657373616765732063616e2062652073656e7420627920612063616e6469646174652e205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206368616e6e656c732061207061726174687265616420697320616c6c6f77656420746f206f70656e2e205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206368616e6e656c7320612070617261636861696e20697320616c6c6f77656420746f206f70656e2e205365747320746865206d6178696d756d2073697a65206f662061206d657373616765207468617420636f756c6420657665722062652070757420696e746f20616e2048524d50206368616e6e656c2e205365747320746865206d6178696d756d206e756d626572206f6620696e626f756e642048524d50206368616e6e656c732061207061726174687265616420697320616c6c6f77656420746f206163636570742e205365747320746865206d6178696d756d206e756d626572206f6620696e626f756e642048524d50206368616e6e656c7320612070617261636861696e20697320616c6c6f77656420746f206163636570742e205365747320746865206d6178696d756d20746f74616c2073697a65206f66206d6573736167657320696e20627974657320616c6c6f77656420696e20616e2048524d50206368616e6e656c206174206f6e63652e205365747320746865206d6178696d756d206e756d626572206f66206d6573736167657320616c6c6f77656420696e20616e2048524d50206368616e6e656c206174206f6e63652e20536574732074686520616d6f756e74206f662066756e647320746861742074686520726563697069656e742073686f756c642070726f7669646520666f7220616363657074696e67206f70656e696e6720616e2048524d50206368616e6e656c2e20536574732074686520616d6f756e74206f662066756e64732074686174207468652073656e6465722073686f756c642070726f7669646520666f72206f70656e696e6720616e2048524d50206368616e6e656c2e6e657742616c616e6365205365747320746865206e756d626572206f662073657373696f6e7320616674657220776869636820616e2048524d50206f70656e206368616e6e656c207265717565737420657870697265732e205365747320746865206d6178696d756d206e756d626572206f66206d65737361676573207468617420612063616e6469646174652063616e20636f6e7461696e2e205365747320746865206d6178696d756d2073697a65206f6620616e20757077617264206d65737361676520746861742063616e2062652073656e7420627920612063616e6469646174652e20536574732074686520736f6674206c696d697420666f7220746865207068617365206f66206469737061746368696e6720646973706174636861626c6520757077617264206d657373616765732e576569676874205365742074686520637269746963616c20646f776e77617264206d6573736167652073697a652e205365747320746865206d6178696d756d20746f74616c2073697a65206f66206974656d7320746861742063616e2070726573656e7420696e206120757077617264206469737061746368207175657565206174206f6e63652e205365747320746865206d6178696d756d206974656d7320746861742063616e2070726573656e7420696e206120757077617264206469737061746368207175657565206174206f6e63652e2053657420746865206e756d626572206f662073616d706c657320746f20646f206f66207468652052656c61795652464d6f64756c6f20617070726f76616c2061737369676e6d656e7420637269746572696f6e2e2053657420746865206e756d626572206f662076616c696461746f7273206e656564656420746f20617070726f7665206120626c6f636b2e2053657420746865207a65726f74682064656c6179207472616e6368652077696474682e205365742074686520746f74616c206e756d626572206f662064656c6179207472616e636865732e2053657420746865206e6f2073686f7720736c6f74732c20696e206e756d626572206f66206e756d626572206f6620636f6e73656e73757320736c6f74732e204d757374206265206174206c6561737420312e2053657420746865206469737075746520636f6e636c7573696f6e2062792074696d65206f757420706572696f642e2053657420746865206d6178696d756d206e756d626572206f662064697370757465207370616d20736c6f74732e2053657420746865206469737075746520706f737420636f6e636c7573696f6e20616363657074616e636520706572696f642e2053657420746865206469737075746520706572696f642c20696e206e756d626572206f662073657373696f6e7320746f206b65657020666f722064697370757465732e53657373696f6e496e6465782053657420746865206d6178696d756d206e756d626572206f662076616c696461746f727320746f2075736520696e2070617261636861696e20636f6e73656e7375732e2053657420746865206d6178696d756d206e756d626572206f662076616c696461746f727320746f2061737369676e20746f20616e7920636f72652e4f7074696f6e3c7533323e2053657420746865207363686564756c696e67206c6f6f6b61686561642c20696e206578706563746564206e756d626572206f6620626c6f636b73206174207065616b207468726f7567687075742e205365742074686520617661696c6162696c69747920706572696f6420666f722070617261746872656164732e205365742074686520617661696c6162696c69747920706572696f6420666f722070617261636861696e732e20536574207468652070617261636861696e2076616c696461746f722d67726f757020726f746174696f6e206672657175656e63792053657420746865206e756d626572206f66207265747269657320666f72206120706172746963756c617220706172617468726561642e2053657420746865206e756d626572206f66207061726174687265616420657865637574696f6e20636f7265732e2053657420746865206d6178206865616420646174612073697a6520666f722070617261732e2053657420746865206d617820504f5620626c6f636b2073697a6520666f7220696e636f6d696e672075706772616465732e2053657420746865206d61782076616c69646174696f6e20636f64652073697a6520666f7220696e636f6d696e672075706772616465732e205365742074686520616363657074616e636520706572696f6420666f7220616e20696e636c756465642063616e6469646174652e20536574207468652076616c69646174696f6e20757067726164652064656c61792e20536574207468652076616c69646174696f6e2075706772616465206672657175656e63792e000000000000000b5b12000c0000000000000000000000849d120021000000000000000000000000000000000000000000000000000000000000000000000000000000f4ae1200a89d12000000000000000000b89d120001000000000000000100000000000000fe5a12000d0000000105000000000000db9912000c00000000000000849d120021000000000000000000000000000000000000000000000000000000f4ae1200c09d12000000000000000000d09d1200010000000000000000000000486f7374436f6e66696775726174696f6e3c543a3a426c6f636b4e756d6265723e000000310000000000000001000000280100000d9e12003200000031000000000000000100000044000000d89d1200350000002050656e64696e6720636f6e66696775726174696f6e2028696620616e792920666f7220746865206e6578742073657373696f6e2e205468652061637469766520636f6e66696775726174696f6e20666f72207468652063757272656e742073657373696f6e2e00509e120055000000a4000000090000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f72756e74696d652f70617261636861696e732f7372632f72756e74696d655f6170695f696d706c2f76312e727373746f7261676520726f6f74206d757374206465636f646520746f20746865204861736820747970653b2071656400509e120055000000cf0000000a0000003c7761736d3a73747269707065643e002901000060000000080000001001000011010000120100001301000014010000150100001601000000000000a26012000f00000000000000a89f1200020000000000000000000000886012001a00000000000000b89f12000200000000000000000000006b6012001d00000000000000c89f1200030000000000000000000000586012001300000000000000e09f1200010000000000000000000000b16012000f00000000000000e89f1200010000000000000063a11200450000004ea1120015000000fda01200510000004ea11200150000007ea012003c000000f4ae120000000000baa01200430000003ea0120040000000f09f12004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e20546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6572656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564003100000008000000040000002900000011a21200710000006a00000012000000726573756c742063616e6e6f742066697420696e20753132382f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e7273000070a3120087000000de010000010000004661696c656420746f20636f6e7665727471202f206365696c28712f246d617829203c20246d61782e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165642f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e72732f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f6f70732f61726974682e72730003a312006d0000005105000001000000b6a4120098000000350000001200000028a412008e000000350000000d0000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f737065635f657874656e642e72732f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f737065635f66726f6d5f697465725f6e65737465642e727363616e6e6f74206669742061206e756d62657220696e746f2075313238007ca512006a000000a30000001b0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e727300007ca512006a00000074000000090000007ca512006a00000085000000090000007ca512006a00000097000000090000000000000000000000617474656d707420746f20646976696465206279207a65726f0000007ca512006a0000004b0000000d000000616c7265616479206d757461626c7920626f72726f7765643100000000000000010000002a0100007ca512006a0000007b0100001a0000007ca512006a00000069010000280000007ca512006a0000006a01000028000000616c726561647920626f72726f7765643100000000000000010000002b0100007ca512006a000000720100001b0000007ca512006a000000730100001b0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f61726974686d657469632f7372632f66697865645f706f696e742e7273617474656d707420746f206469766964652077697468206f766572666c6f77000000e4a612006e0000004c0600000100000042616265565246496e4f7574436f6e7465787442414245736c6f74206e756d62657263757272656e742065706f6368636861696e2072616e646f6d6e65737300d4a7120084000000cf000000110000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f736c6963652e727331000000040000000400000041000000466174616c4572726f725265706f72746564496e686572656e74446174614578697374733100000004000000040000002c0100004465636f64696e674661696c656400003100000004000000040000002d0100002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f636f6465632e72735765206465636f646520604e6020656c656d656e74733b207165640000bca8120063000000c602000017000000310000000000000001000000100000006ca912006f000000ce0000002a0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e7273486f737420746f207761736d2070726f766964657320612076616c696420656e756d206469736372696d696e616e743b20716564003100000000000000010000002600000030aa120071000000bb0100001a0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e7273486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b20716564003100000000000000010000001000000030aa120071000000090100002600000027ab12000d00000012ab120015000000f4ae12000000000010ab1200020000003a20696e73756666696369656e7420636170616369747943617061636974794572726f7272756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e6700000070ab12006100000027000000200000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f61727261797665632d302e372e302f7372632f61727261797665635f696d706c2e7273000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f0000000cac12006b0000005d0000002c0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e72735472616e73616374696f6e206469737061746368206973206d616e6461746f72793b207472616e73616374696f6e73206d6179206e6f742068617665206d616e6461746f727920646973706174636865732e412063616c6c20776173206c6162656c6c6564206173206d616e6461746f72792c2062757420726573756c74656420696e20616e204572726f722e5472616e73616374696f6e20776f756c6420657868617573742074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f72000004000000000000003100000000000000010000002e0100002f01000040000000f4ae12000000000031000000040000000400000024010000250100003001000048617368206e6f7420657175616c0000010000000000000054686520617373657420696e207175657374696f6e20697320756e6b6e6f776e4163636f756e742063616e6e6f7420626520637265617465644163636f756e742063616e6e6f742065786973742077697468207468652066756e6473207468617420776f756c6420626520676976656e4163636f756e742074686174206d75737420657869737420776f756c642064696546756e64732061726520756e617661696c61626c6546756e647320657869737420627574206172652066726f7a656e416e206f766572666c6f7720776f756c64206f63637572416e20756e646572666c6f7720776f756c64206f636375724469766973696f6e206279207a65726f556e6b6e6f776e206d6f64756c65206572726f724e6f2070726f766964657273436f6e73756d65722072656d61696e696e67426164206f726967696e43616e6e6f74206c6f6f6b757041726974686d657469630000310000000400000004000000310100003100000004000000040000003201000043616e6e6f744c6f6f6b75704261644f726967696e4d6f64756c65696e646578310000000400000004000000410000006572726f726d65737361676531000000040000000400000033010000436f6e73756d657252656d61696e696e674e6f50726f766964657273546f6b656e0000003100000004000000040000003401000046726f7a656e4e6f46756e6473576f756c6444696542656c6f774d696e696d756d43616e6e6f74437265617465556e6b6e6f776e41737365744469766973696f6e42795a65726f556e646572666c6f774f766572666c6f77536f6d65310000000400000004000000320100004e6f6e654475706c69636174655265706f72744f746865724f6666656e63654572726f722f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e72730040b2120067000000470000001f0000002f686f6d652f6261737469616e2f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316437663665312f7072696d6974697665732f747269652f7372632f6e6f64655f636f6465632e72730040b212006700000050000000140000006c656e20213d20302073696e6365206c656e2025203220213d20303b20696e6e6572206861732061206c61737420656c656d656e743b20716564000004b31200640000003d000000120000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c657665632e727304b3120064000000600000003300000004b3120064000000600000000d00000004b3120064000000690000000f00000004b31200640000006b0000000f00000004b31200640000006b0000003e00000004b3120064000000910000003900000004b3120064000000910000001100000004b3120064000000930000001100000004b3120064000000940000004000000004b3120064000000940000004e00000028b4120066000000980000001700000028b412006600000096000000290000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c65736c6963652e72730000b4b612005e0000004d0000001c00000028b4120066000000400000001200000028b41200660000004f0000002d00000028b4120066000000550000003200000028b4120066000000dd0000000f00000028b4120066000000df0000000f00000028b4120066000000df0000003d0000006361706163697479206f766572666c6f7700000024b5120057000000fb000000360000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f736d616c6c7665632d312e362e312f7372632f6c69622e7273617373657274696f6e206661696c65643a206e65775f636170203e3d206c656e0024b5120057000000320300000d000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e000024b51200570000005f05000009000000b4b612005e0000008d0000003c000000b4b612005e0000008d00000051000000b4b612005e0000008d000000310000002cb61200580000004b000000420000002cb61200580000004a0000003e0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6f64652e72732cb61200580000006b000000220000002cb61200580000009a000000320000002cb6120058000000aa0000003e0000002f686f6d652f6261737469616e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6d6f642e72730000b4b612005e0000008600000031000000b4b612005e0000008600000042000000b4b612005e0000008600000026000000b4b612005e000000870000001d000000b4b612005e000000870000000d000000b4b612005e0000008e00000018000000b4b612005e0000008e0000000d0000006c656e202b20707265666978206d696e757320322a736b6970706564206973206c657373207468616e20343b2071656431000000000000000100000026000000d4b712004400000054020000200000002f686f6d652f6261737469616e2f70726f6a656374732f7061726974792f706f6c6b61646f74322f78636d2f7372632f76302f6d756c74695f6c6f636174696f6e2e7273282941737365744e6f74466f756e644163636f756e744964436f6e76657273696f6e4661696c6564617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d2031b0b81200950000007602000009000000617373657274696f6e206661696c65643a20696478203c204341504143495459b0b81200950000007a020000090000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6e6f64652e7273617373657274696f6e206661696c65643a2073656c662e686569676874203e20300000b0b81200950000003d02000009000000b0b81200950000002804000016000000617373657274696f6e206661696c65643a207372632e6c656e2829203d3d206473742e6c656e2829b0b8120095000000a506000005000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d2031000000b0b81200950000009603000009000000b0b8120095000000650400001600000050bc120013000000b0b8120095000000a10400001f000000617373657274696f6e206661696c65643a206e65775f6c6566745f6c656e203c3d2043415041434954590000b0b8120095000000d504000009000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e202b20636f756e74203c3d2043415041434954590000b0b8120095000000880500000d000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e203e3d20636f756e74b0b8120095000000890500000d000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f6465b0b8120095000000b905000016000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e202b20636f756e74203c3d20434150414349545900b0b8120095000000490500000d000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e203e3d20636f756e7400b0b81200950000004a0500000d000000b0b81200950000007905000016000000617373657274696f6e206661696c65643a206d6174636820747261636b5f656467655f696478207b5c6e202020204c6566744f7252696768743a3a4c6566742869647829203d3e20696478203c3d206f6c645f6c6566745f6c656e2c5c6e202020204c6566744f7252696768743a3a52696768742869647829203d3e20696478203c3d2072696768745f6c656e2c5c6e7d000000b0b81200950000001b05000009000000656d70747920696e7465726e616c206e6f64650074bc120094000000d0050000350000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702e727363616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c75650017be12001d000000edbd12002a00000054bd12009900000063000000120000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6e617669676174652e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a2042547265654d61702068617320646966666572656e742064657074687363616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650070be12009a000000450100002e0000002f6e69782f73746f72652f30687777306130627630303767636c7935793376707a6e6d6878356b773638342d727573742d312e35342e302d6e696768746c792d323032312d30352d30392d6361383232363465632f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702f656e7472792e7273000070be12009a000000fb0100002a00000000419cfeca000b0c4f8167f7f4ae1200981310000041a8feca000b08000000000000000000cd010c72756e74696d655f61706973df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d01000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b0100000049eaaf1b548a0cb00100000091d5df18b0d2cf5801000000d1fa4cb97410091701000000e5bdc752b8ec2ba101000000bc9d89904f5b923f0100000037c8bb1350a9a2a8010000000080a707046e616d6501f7a607ca0a00206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f31011f6578745f6c6f6767696e675f6d61785f6c6576656c5f76657273696f6e5f3102236578745f63727970746f5f65636473615f67656e65726174655f76657273696f6e5f3103256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3104236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f3105286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f3106376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f3107256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f3108286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3109216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f310a236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f320b276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f310c1c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f310d1e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f310e296578745f64656661756c745f6368696c645f73746f726167655f636c6561725f76657273696f6e5f310f276578745f64656661756c745f6368696c645f73746f726167655f6765745f76657273696f6e5f31102c6578745f64656661756c745f6368696c645f73746f726167655f6e6578745f6b65795f76657273696f6e5f3111276578745f64656661756c745f6368696c645f73746f726167655f7365745f76657273696f6e5f3112206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f3113206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3114206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31151e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31161d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31172a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31182a6578745f747269655f6b656363616b5f3235365f6f7264657265645f726f6f745f76657273696f6e5f31191c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f311a1d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f311b226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f311c236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f311d346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f311e286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f311f286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f3120246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3121296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31221c6578745f73746f726167655f617070656e645f76657273696f6e5f3123226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31241b6578745f73746f726167655f636c6561725f76657273696f6e5f3125226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3126286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31271c6578745f73746f726167655f6578697374735f76657273696f6e5f3128196578745f73746f726167655f6765745f76657273696f6e5f31291e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f312a1a6578745f73746f726167655f726561645f76657273696f6e5f312b2a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f312c1a6578745f73746f726167655f726f6f745f76657273696f6e5f312d196578745f73746f726167655f7365745f76657273696f6e5f312e276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f312f196578745f6c6f6767696e675f6c6f675f76657273696f6e5f313033616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a6831613233666337633739313936316338311a5f5f727573745f616c6c6f635f6572726f725f68616e646c657232085f5f72675f6f6f6d3308727573745f6f6f6d3434616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68393338303437653131626162613862313529636f72653a3a70616e69636b696e673a3a70616e69633a3a6861326632323964373737613138306339364e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6831663931636534613935303464316132372e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a6837396238376337393438636266636165384773705f696f3a3a616c6c6f6361746f723a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6d616c6c6f633a3a6839346435383039633365306263373638394573705f696f3a3a616c6c6f6361746f723a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a667265653a3a68353638303566616230306263343364323a25616c6c6f633a3a666d743a3a666f726d61743a3a68666461656432316236316532656133633b23636f72653a3a666d743a3a77726974653a3a68663666656333333261393663313035313c36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68336661353832393431613334623136623d2e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a68613932366532323133363764636635623e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68643335626539633533613639643831643f3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6836376430616133373137383831636439403a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68613161643737316538366635316161344143616c6c6f633a3a7665633a3a5665633c542c413e3a3a737761705f72656d6f76653a3a6173736572745f6661696c65643a3a6835623262633530386435393866303930424e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6834396531323832636435613065643438432d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6830646665313533656230656634353661443e616c6c6f633a3a7665633a3a5665633c542c413e3a3a696e736572743a3a6173736572745f6661696c65643a3a6864333933363035636438306263386463453e616c6c6f633a3a7665633a3a5665633c542c413e3a3a72656d6f76653a3a6173736572745f6661696c65643a3a68373363636363613064333038633236384641616c6c6f633a3a7665633a3a5665633c542c413e3a3a73706c69745f6f66663a3a6173736572745f6661696c65643a3a6833386537616433376561613461353933474b3c62705f6865616465725f636861696e3a3a417574686f7269747953657420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837343230666135356232653039376365484e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6862346162623762313864646462613230492e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68303163386166623365373061373236384a553c636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68336231376638343465333335383163624b39636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68313864326366353136306139653436384c3f636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a68656c7065723a3a6765745f7065616b733a3a68313261363266663761623335353336334d303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68323438306533623330393535646530624e313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68353834663931303238353465643236334f39636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6834613236383063656665386537316239502f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68303735326232333462636664646132635111727573745f626567696e5f756e77696e6452313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68643534626266353930323938636663325335636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68643563353431393765363161346537635443636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a6864396136383766303738313731306563553f636f72653a3a736c6963653a3a696e6465783a3a736c6963655f656e645f696e6465785f6c656e5f6661696c3a3a6839393465306234633061306438323963562c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6833363161313837316636306637333431572e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a683937326539636265663139386466393558323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6833363339613238333166633932353434594a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68323566373435343736366130373338385a323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68643331353933353166326637383436325b47636f72653a3a756e69636f64653a3a756e69636f64655f646174613a3a6772617068656d655f657874656e643a3a6c6f6f6b75703a3a68303436383663636533376539333435345c39636f72653a3a756e69636f64653a3a7072696e7461626c653a3a69735f7072696e7461626c653a3a68653536666437323361323362323862615d4d636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68373266666361613065336661393434652e3233315e41636f72653a3a736c6963653a3a696e6465783a3a736c6963655f73746172745f696e6465785f6c656e5f6661696c3a3a68643537363063643138336632613437615f3d636f72653a3a736c6963653a3a696e6465783a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68366131303366663462303430616430376037636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65645f696e6e65723a3a683231613164363933323232353164373061303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683039653132346636373731383036626562443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683834306433316137636462306561393663453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683935646331393431346132383331643164483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863633236353865626263303732373933652e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683661636236366535313861656261343766323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683064616232326466313332333230626667323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683266356432396161636565643565663868533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6863313934333631373963613537373364693a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68623038316665383861663936386464386a2f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a68333964623566653738353338343539346b2e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a68303036396333613133653437616464666c3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68396165343639636638646236646230396d3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a68613966643133643134386534363662666e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68626566313632333631393334346366326f37636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a68343162313762623034663333333134617031636f72653a3a666d743a3a6e756d3a3a70617273655f7536345f696e746f3a3a6837613437626432623537356165633937714d636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f722075383e3a3a666d743a3a6866336632626337383037313437383139724e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207536343e3a3a666d743a3a68333262363730643864643766653833657347636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a42696e61727920666f722069383e3a3a666d743a3a6838333330613430363630313461303762743e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834636131616634613635363137653330755a637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a746f5f62797465733a3a6833356266616533346561323532646637769201637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20737562746c653a3a436f6e7374616e7454696d65457120666f7220637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a63745f65713a3a68303136656534373862633563336537657724737562746c653a3a626c61636b5f626f783a3a68373830353164646562616438666230627857637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a706f77326b3a3a6834333338313339306637633030623833797e637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a737172745f726174696f5f693a3a68373363323136393733353663336132307a5c637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a66726f6d5f62797465733a3a68396331653935656537316231333233617b5a637572766532353531395f64616c656b3a3a72697374726574746f3a3a52697374726574746f506f696e743a3a656c6c696761746f725f72697374726574746f5f666c61766f723a3a68666136396235313833633831386133627c49637572766532353531395f64616c656b3a3a7363616c61723a3a5363616c61723a3a66726f6d5f63616e6f6e6963616c5f62797465733a3a68666639633866346231646464363937357d4066696e616c6974795f6772616e6470613a3a6269746669656c643a3a4269746669656c643a3a7365745f6269743a3a68666438636563643639343038336633397e4e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68643239613864343138303739306337337f97013c66696e616c6974795f6772616e6470613a3a726f756e643a3a636f6e746578743a3a566f74654e6f646520617320636f72653a3a6f70733a3a61726974683a3a41646441737369676e3c2666696e616c6974795f6772616e6470613a3a726f756e643a3a636f6e746578743a3a566f74654e6f64653e3e3a3a6164645f61737369676e3a3a683566636139623537616635323932386280017b6672616d655f6d657461646174613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f6d657461646174613a3a53746f726167654861736865723e3a3a656e636f64655f746f3a3a683134343766366461623732656635366181014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68333162643533373733303334316463318201417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a683531653239643334623266333734343783016c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68303233633339633261666137613536348401417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68653765386337333766323432313865378501417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68353465646137613633646562313333618601417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68646533396335663930363932626436648701417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68653162633163666365633634316362638801417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68643365363333646262613766396665308901417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68643434343361373134646536626432668a015c3c6672616d655f737570706f72743a3a7472616974733a3a6d657461646174613a3a50616c6c657456657273696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68623866386532363735313937613233318b014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68613264623736336665333235613631318c012e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68343730626232386631313831643531658d01633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a68323961376236333466653663653432328e01206b656363616b3a3a66313630303a3a68643238613635613537366663353736358f01383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68386466653832323537383762653439659001343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68323538333464343535323362393237629101363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a68386135643434393861633738373236629201366d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6e65773a3a68643634363862366132346537613361349301366d65726c696e3a3a7374726f62653a3a5374726f62653132383a3a626567696e5f6f703a3a6836383431643637663435306430653539940131636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a68383833306366653463333039396638389501416d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f6d6573736167653a3a683661616434643264376237373236653896013d6d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f7536343a3a68363932343138376238656233346138659701426d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6368616c6c656e67655f62797465733a3a686661393535383664613236346266383698014a3c70616c6c65745f6d6d725f7072696d6974697665733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68343436383639303537333636623735669901503c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68663862316136393462316130666565639a014e3c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68613137313636326632383063646537659b0146706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733a3a686173683a3a68366465306137373061636435333030349c014973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235363a3a68396661656464306637303430353937649d0146706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f745f72616e67653a3a536c6f7452616e67653a3a6c656e3a3a68656535353032353831306163616263649e01323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68393666383462363737643566373832619f01433c7072696d69746976655f74797065733a3a4832353620617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865646335366134343634623933333333a001333c265420617320636f72653a3a666d743a3a4c6f7765724865783e3a3a666d743a3a6865626631326534323732623338666561a101333c265420617320636f72653a3a666d743a3a4c6f7765724865783e3a3a666d743a3a6866623833316637616138376564303139a201453c7072696d69746976655f74797065733a3a4832353620617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6839373133393737353530643739666436a301417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6830363466316162616236346135396134a4016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6839613136366463356138663262653134a5014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6863323435633237303164646662666534a6014f636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a6864626331303063396635386266656533a701417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6830396333353131356562346235343430a8016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6836353330633263376237396666623361a901417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6830636233656334366161336365633563aa01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863386262623365646638383437366263ab018a0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6465636f64653a3a6839306432613361366337613035363864ac014d636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6835613064653236643533346238633231ad016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837616635656465343964373962623937ae01417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6865383762623964373330303635353263af0153636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6831623431613830626432613265333233b0016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832393630326133666231323831646635b101810178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6465636f64653a3a6834616562663836663934386130373133b2014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6861313832333263653530333631366562b301483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864653364633332626265656235643538b401417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6834336663306565376432356231646137b5014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6863666665616437306235383237396335b601417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6839353361666237313239383337313461b7014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830613731336435353262663931313261b801417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6839366637666662343136363166623365b901543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836336534386238363161663039663134ba018a0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6465636f64653a3a6864396563643563643432333264353466bb016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831393634393163393039616331333530bc016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836393166323038386363366539626138bd01810178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6465636f64653a3a6839353536336634383163306265633837be01417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6861353963663537333262363665613065bf0146636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6f726465723a3a4f726465723c28293e3e3a3a6862323134663931323032376131303139c0016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6834633431626261373464643432363233c1014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6833326130383563366561396563616261c2013d636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c28293e3e3a3a6830643036356364383839383362326133c301417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6862393537373362343439326163666637c4016f726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6831646235363931313539623166323639c5014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6838666330646130366137623431303935c60141636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a6862323231383334663664373136366332c701417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6863373631316537623037386438343331c8016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6861323939643137313664373134633130c901417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6864643464626263653236306435333366ca01417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6865343532376635643137373235626365cb016f726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6838663437326565656339633165316363cc01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6830633339616335353235646263393162cd01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6832623561666637366238633639343763ce01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6833326531646331396337363361656134cf01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6833633865616335306637323630663365d001417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6834636363643339333261393464633431d101417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6861363337613133623232383935623362d201437061726974795f7363616c655f636f6465633a3a636f6465633a3a636f6d706163745f656e636f64655f6c656e5f746f3a3a6836656234306161316136303061613532d301417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6861373935383365646566633836336538d401417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6861393261396438613938396234333931d501417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6864626335646333373261376131626234d601483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6830343834313835663666633239353362d701483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832633366313236373464633662646364d801483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839313930333233643735623865646431d901483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864376233636336633764633964376232da01aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6833653336646639383566396364316337db0164616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6835323730646335363534333838363335dc015a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6832303534326237643732653535303033dd015b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6833613535616536623435373663386234de0160616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6832663234663466663331316233316562df01aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6838363538386266653835396432656332e00164616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6835633036393139313161633035353564e1015a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6839356466626637633033366633353764e2015b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6831383262653939613834336331653462e30160616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6861336563373130303238663231623066e401aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6836366630366235326436353230356437e50164616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6830343665386438376365386235653162e6015a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6838643163343564653933646464613262e7015b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6838626535313634613634376566383139e80160616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6836626566643638636538343165623665e90144636f72653a3a7475706c653a3a3c696d706c20636f72653a3a636d703a3a4f726420666f722028412c42293e3a3a636d703a3a6866336464326337633434353930323031ea01493c78636d5f6578656375746f723a3a6173736574733a3a4173736574496420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6836353234636466336437633435653262eb01473c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6865306263353032643433393461396535ec01df01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e617669676174653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496d6d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561664f72496e7465726e616c3e3e3a3a66756c6c5f72616e67653a3a6861356161356633643539616430633662ed016f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830656430626137363261316331646439ee01703c70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6835623236386662613963333239626164ef01773c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4c65617365723e3a3a6465706f7369745f68656c643a3a6839373566663337303733353636346564f0015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831386238323138323764306161626630f101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834613232333639323338326461346636f2014773705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f3132383a3a6832343264643931373434353665343863f3014673705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f36343a3a6863633339396237376336343537373966f401743c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4c65617365723e3a3a6c656173655f6f75743a3a6866636531623834646338653831386635f501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838323961623136353436633039313333f6014e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6835326339383139393563653462653464f701d40170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a72657365727661626c653a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a726573657276653a3a6839643732663735393938343734393834f8015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837326230373833376237376366353830f901386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832383162643339636131643636303362fa014b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172617468726561645f757067726164653a3a6833336237353236376533663530656530fb0182013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a5265676973747261723e3a3a6170706c795f6c6f636b3a3a6830353336393462313136303938663531fc015e6672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6465706f7369745f6576656e745f696e64657865643a3a6865326361333464353165383835643163fd014473705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561723a3a6864326535646363386666346234643739fe01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6839643863353237656336376436343436ff01a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a683137643930636237376635663832303380027873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a68656636393037613538373763363633648102a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a68343637353935326431616338323735308202a60173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a656e636f64655f746f3a3a686339646137626436323035346663646183027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68303434623332373865363861326234398402483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a686332306164383732633463343739373085027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683065653939393561633836373031626586027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683131336337633539353662326139303787027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683136316230333638303830303939653888027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683237613964366639346536663830623189027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333330613839646637383864383032328a027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333666656139393731336432336235318b027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68343265333934643833636366386139318c02433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68376163396635366566653661376634398d027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68353063393330356539623734383236338e027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68356165623165386638633234326330378f02483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a683063336238323465366330666533323090027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683634616232326137633165636566356591027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683636636561373436653730616532323792027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683735396433656635333265366239633393027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683834643030383366343135633961383194027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683961353239386266333064616633356495027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643835373235333737323630353666649602483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683734363233396364333138666133373997027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686536623536623130333136393362613398027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686633626266623162643335323839363499027d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68666230396563386634663935363965379a02433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68633762366438633932316135363936619b027c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a68643034366139653538663464373036349c02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68353631396638663665313930613835399d0239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a68613933616435383331383236326438339e026e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68656437326461666630326539616630639f02d60170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a72657365727661626c653a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a756e726573657276653a3a6835373364353363626166363839613435a0024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830393332643732656133336533633863a1024c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f70617261636861696e5f646f776e67726164653a3a6831653533336333353936656139613263a202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834646336633234643865623636313436a3024273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a6861383865323037303963663530623536a4025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833356337633633363866346336303736a502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831316361363733636136326634343533a602573c49642061732073705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3c543e3e3a3a696e746f5f7375625f6163636f756e743a3a6863653437626238393532323937663466a7027d706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a3c696d706c20706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3e3a3a68616e646c655f6269643a3a6863626632633937326133323437396235a8024573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6578697374733a3a6834346239356133353963323235373563a9027b6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a6765743a3a6864333132313037313235326132373639aa025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839366339643561386134663166333239ab02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836623636353961653766313836346137ac024b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561725f7072656669783a3a6864656361313666646634323765336639ad027d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a647261696e3a3a6839643962323437653139643766393366ae026e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6830353662303163383039303439303937af024e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f745f72616e67653a3a536c6f7452616e67653a3a6e65775f626f756e6465643a3a6865613331653630396335613566306136b0024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6861353036383837333164633062393739b1024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6837336261616430396661396339633631b202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863613963326533623435643365363061b302766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6838363035373463653864353539633761b4025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830653662343636653538646266363136b502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834393830363631313433326635656530b6025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831346132363138386235326537373834b70253706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a64656372656173655f636f64655f7265663a3a6863656238303566633531623665336563b802453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837303166333832646230656335373363b9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837356163643730306435663838626639ba02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835326432303466393466333663626662bb02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6861306535353063303466303934396636bc02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6835626538306336383165303264386633bd027c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6834626338373135636139313235633930be02543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863653332363535643335613661643366bf0290013c70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6835313939653635636532303535383466c002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864333232626661313236663763663362c1023473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a6831336663653637356337393262316332c2025e3c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837386363396635643962333663396330c3025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830643562343736376438643337326537c402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830343938303136366464386438623132c502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832383862396432613664306532353262c6024166696e616c6974795f6772616e6470613a3a766f7465725f7365743a3a566f7465725365743c49643e3a3a6e65773a3a6836363233623262643362336132376238c7024762705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a7665726966795f6a757374696669636174696f6e3a3a6838366661373439363037656266663039c802613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6838666137396362336137653865656333c9024873705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e3a3a7472795f746f3a3a6832653534623039656661393161636534ca02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6835313862326433656466643636666664cb023f70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a696e736572745f6865616465723a3a6837653134333162323462643934326637cc02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838643562653838643265373661373930cd02463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6863333062626437353138653263643632ce02463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865303436633934636663666265323533cf02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6864393265333236346161643234653531d002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832356639643531313834666330316336d102543c62705f6865616465725f636861696e3a3a496e697469616c697a6174696f6e446174613c483e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830353763373066316465303737616237d202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831333333613930633737346635643465d3024a3c73705f636f72653a3a63727970746f3a3a4163636f756e744964333220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863303734363162666461373638326564d4025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837396664356561383039643335346165d502386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6866306633656566633737343931663861d60290013c70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6863666534373066613461643861326530d7025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865666439333131346661373334616164d8023f70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a696e736572745f6865616465723a3a6837333364643237636464363762373031d9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865336339353561376638636166623361da025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831633562323066336237613661653861db025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833336564336363613030663430366333dc024973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3132383a3a6863383039346166623832356131376363dd025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834313639313165363262366532333238de025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861363833353434623436653434386535df025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864653935363061633136336364366537e00289016672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a7472795f6d75746174655f6578697374733a3a6861623564636362356538353435653434e102386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838323466616631636565636266633663e202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6865386636633762353130383234396636e3027b6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a6765743a3a6832336330633061656434663437613730e4024273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6765743a3a6865346534383337646365356136653061e502543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834626631393635373931636132643565e602303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862393863636538363937666561323062e7024673705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f757466383a3a6834376139653732363766626534303666e8025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838393035376235636333643432366138e9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865636664346236333039306261356439ea025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839313032303163306633376465636239eb025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839396162656430303935303937356137ec0239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6862373334363337613633346631383663ed027e6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a696e736572743a3a6832643739353061613133653361343232ee027e6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a696e736572743a3a6834303932333032333134663765633761ef025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861663336383732613762643135333130f0027e6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a6d75746174653a3a6836383434323863323666613539376633f1025566696e616c6974795f6772616e6470613a3a726f756e643a3a526f756e643c49642c482c4e2c5369676e61747572653e3a3a696d706f72745f707265636f6d6d69743a3a6863303638616163613761313332656234f2024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6864646332316562643263393763333464f3025866696e616c6974795f6772616e6470613a3a766f74655f67726170683a3a566f746547726170683c482c4e2c563e3a3a66696e645f636f6e7461696e696e675f6e6f6465733a3a6839383361326635323537613139323364f402cc013c62705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a416e636573747279436861696e3c4865616465723e2061732066696e616c6974795f6772616e6470613a3a436861696e3c3c4865616465722061732073705f72756e74696d653a3a7472616974733a3a4865616465723e3a3a486173682c3c4865616465722061732073705f72756e74696d653a3a7472616974733a3a4865616465723e3a3a4e756d6265723e3e3a3a616e6365737472793a3a6839313834613666613839623937363562f5024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6832326335396438653035356337666632f60245616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a6765743a3a6862333930326562393135643835363166f70248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6865343937363363616634353262666462f80246616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a6834636630323433303662653338396263f9024f3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6830373965633335303361663536323865fa024f3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864666335633932323332313834363335fb024766696e616c6974795f6772616e6470613a3a726f756e643a3a636f6e746578743a3a436f6e746578743c543e3a3a7765696768743a3a6832323337303737653739626563393536fc023b66696e616c6974795f6772616e6470613a3a726f756e643a3a636f6e746578743a3a7765696768743a3a6862663236613335366461316538373037fd024e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6831303932373537646366333836313363fe023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6832313738343766633963353766336637ff023f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a683763373733343138356264653562323280034d70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a63616c6c5f66756e6374696f6e733a3a683761613365313365336364303238616381034f70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a73746f726167655f6d657461646174613a3a683061373566643561626333303630333582037d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683439363336373634346630646333393683034f70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a73746f726167655f6d657461646174613a3a686264346438656234363263626631393084035870616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68613562356233353838366534326530348503ac013c70616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a48656164657273546f4b65657044656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686163393332346565306332373531333386035870616c6c65745f6272696467655f6772616e6470613a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a686465663163333934393561626635666587034c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683239663137313461613934313531653788034e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a686161343333616334333939396233626289037a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a5f5f476574427974655374727563744c65617365733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68383935633430643239633137333464648a0357706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68393336316565383932663264366431348b03a7013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c65617365506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68316233663731333333626535663135368c037978636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6465636f64653a3a68363831326539313233393861373130658d036c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68336234616335316536353036366464398e037978636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6465636f64653a3a68653363306435393437653561633337358f036c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683162313136303733656266623062343090037c78636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a656e636f64655f746f3a3a68313265333836383435666364623364669103713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68356631303034343633353831356337379203723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68343837316231646636363662306635399303583c70616c6c65745f696d5f6f6e6c696e653a3a4f6666636861696e4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68376537313835323539373566386161329403303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68363633376535376538323037623630619503437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a683361366463343139376663313934373296034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a683134343834356333666563346362303297034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68336334303665353432663862343538329803433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68316232646235646162333036633236619903433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68393635316334363135313661643762639a03433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68633238333964386264343565383162389b03433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68663265646463626437356564653532369c03463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68363338643832623434663035656166629d03463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68393561383438306334633963353632339e03463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68616161326539393763356531613834319f0355636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f7072696d6974697665733a3a76313a3a4261636b656443616e6469646174653e3a3a6831613562616438646264653861666463a003423c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862623337626162306461666364616564a103463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831326131333530633131616538303432a203463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831336661326438383835323961383732a303443c78636d3a3a76303a3a58636d3c43616c6c3e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838383433626265326338326664616533a403463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832326663383838363933353063653132a503583c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6834656134366531343839613231306239a6034d3c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833653064316365326666663530353335a703463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837333261326361373464363639623166a803463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837343630666166323766303264626534a903463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6862333164653366313163633232653962aa03523c78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c7469417373657420617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832333338613965343165663766333636ab035d3c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68346561343665313438396132313062392e32313135ac03463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6866323761336564363930323038646366ad038601636f72653a3a7074723a3a64726f705f696e5f706c6163653c616c6c6f633a3a7665633a3a5665633c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c7533322c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e3e3e3a3a6837626664386339636461653961616161ae035c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a4e6f64653c7072696d69746976655f74797065733a3a483235363e3e3a3a6832613534623835393132333133346639af03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831613864626136313165646538373662b003723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866356562353563376635383661343738b1034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6834363331306335366166353935643131b203543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834396436663633613233646531393238b303543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6835396536643765326163643539353335b4034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6864663836623135623337663161613564b503543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837393730383661666638663136663535b603543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862613162323562366161303833396638b7034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6837626234306366323037623733643939b803543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837626665313064306263666331663730b903723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834363036396665623335373663656333ba03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839366639633561326433323834326632bb03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839653536633937636234366333316164bc03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861663135313136646534616236336661bd034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6834323736376364343933316462613666be034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6835373762636565663932653030306235bf03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865623936346339323936376632336562c003543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866363464316433663262313630336562c1039c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837616632343662613361346262396366c2034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6866626638313165636165643433653730c303623c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6839663538616231376564393363663439c403633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6830643734313836653831643035613935c503633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6830666133633461353637646233663635c6034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6832343938333763373833356537646161c703633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6834306431326138613066643238313566c8034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6831333165663966656135333337356632c903633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6838363462633337396231626463626665ca036c3c636f72653a3a697465723a3a61646170746572733a3a636861696e3a3a436861696e3c412c423e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834313538663061623033633932613535cb03613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6838353665643662363031393035326537cc039c01636f72653a3a7074723a3a64726f705f696e5f706c6163653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a44726f707065723c2878636d5f6578656375746f723a3a6173736574733a3a417373657449642c78636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e6365292c28293e3e3a3a6835333739373533306430353738363533cd03703c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a496e746f497465723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865386530336333356338633437376163ce036b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6862393162613434306631643837623966cf0357636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5242617463683c456c656d2c53746f72653e3a3a6765745f656c656d3a3a6863386364343837636237343462643138d0037c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6835613538663261623934636564663734d103533c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68336530643163653266666635303533352e3131393634d20342636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c28293e3e3a3a68306430363563643838393833623261332e32313137d30354636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e32313138d40346636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e32313139d5034070616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6836373761633265646339663166656465d6034270616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6834356335336631316363643730356232d70385013c70616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6837626262363131383261383461303632d8035370616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e645f70726f78793a3a6836636438303531613261313461656536d9035170616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f70726f78793a3a6833353737343532623835386134393961da03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831383430346464343530363466353132db034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6834313332396537643032626230643534dc03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830306438313136353033623730366639dd03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833346662333862393539646131663266de0372726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6836623838333865326339353634353832df03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6832653236643838636561343866333161e0034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6838383762373939383032626139653535e103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6837353766326336646234663831343564e20346636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e33343031e3037c3c726f636f636f5f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6832383265393934313032383665313437e4037c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863663931376631303035663734393732e50350706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a656e7465723a3a6866306363303761623431346263653537e603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837386165356437653032626330623935e70357706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a70726f636573735f6269746669656c64733a3a6831333865633932656461613764346438e80339636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6835313732373138643933333039663561e9036e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6863343466623136353936643565383236ea0371706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a617661696c6162696c6974795f74696d656f75745f7072656469636174653a3a7b7b636c6f737572657d7d3a3a6864636533343531376131636666636463eb035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838363636663662333161313165666539ec03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831653938646234616539346533336665ed035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863393632393830343734643032303766ee03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833303861643730343732303166373764ef03a101636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c726f636f636f5f72756e74696d653a3a52756e74696d653e3a3a617661696c6162696c6974795f74696d656f75745f7072656469636174653a3a7b7b636c6f737572657d7d3e3a3a6834306339376333343331333565383733f0034b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a636c6561723a3a6866643462666165393161373061633539f103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836366131373433666235356264336665f203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837313538346264613061653435626638f303386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834633064616161646639303864373963f4035c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a67726f75705f61737369676e65645f746f5f636f72653a3a6831333738353430313738656338333732f5034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6833653638363164343066333639636636f6034e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6865376633396637396566663039633863f703766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6837336435306433313037633662363065f803766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6831333362313938663130333164636532f903766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6864346232386538366238393030353832fa03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864646631656161623133653265356230fb03663c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a426c6f636b57656967687473206173206672616d655f737570706f72743a3a7472616974733a3a6d6973633a3a4765743c493e3e3a3a6765743a3a6837313139616537343339383039623331fc0358706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a70726f636573735f63616e646964617465733a3a6834666637373966333862356165623065fd035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839643831313462306566623937623939fe03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833636236306366613737353866303830ff035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683235393865336230303664376666333680049c013c78636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e2061732078636d3a3a76303a3a7472616974733a3a4578656375746558636d3c3c436f6e6669672061732078636d5f6578656375746f723a3a636f6e6669673a3a436f6e6669673e3a3a43616c6c3e3e3a3a657865637574655f78636d5f696e5f6372656469743a3a6865346134343933353733613961633563810454636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e333630328204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683062353363633561306432393335343683044270616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a683537373764383665346531353066616184044470616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a686463303432633762643966666435643485044d70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a686134626139653930653536343532663486049c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850656e64696e6744656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683962313639393633356565323631336687049c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850726f7869657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68393165336262636131356333626661308804a2013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f78794465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686633373364336536666337396430656189047e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a68303063313137373366393637656437308a047e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a68336338613533376234633434323938338b047173705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a4d756c74695369676e61747572653e3a3a6465636f64653a3a68353133353638373232383965366536398c044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68326634623633613536383763316233388d044770616c6c65745f6f6666656e6365733a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a68333436353366393837306464373336378e049f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a68396263333361656433353331363832638f048e017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220284c302c4d302c4e302c4f302c50302c51302c5230293e3a3a656e636f64655f746f3a3a68613766666631666662636433653934389004553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a683463643363366137633935613264666291048c0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5072654469676573743e3a3a6465636f64653a3a68313563313837356330653938653733639204683c73705f636f6e73656e7375735f7672663a3a7363686e6f72726b656c3a3a56524650726f6f66206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68353635343035643866303939316662619304970173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a4e657874436f6e66696744657363726970746f723e3a3a6465636f64653a3a683632343364313636623031333062653794048f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a686136363833613639366665363761646595048f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a686339376531326265396566323066343796048b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a683233383432313237636437366437656597048b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a68366131326534353036613931363632369804880173705f66696e616c6974795f6772616e6470613a3a6170703a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a6170703a3a5369676e61747572653e3a3a6465636f64653a3a683032353562376365316131323763343899048e0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a656e636f64655f746f3a3a68646135666231633862366438326530669a0459706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68383035326232613033396264353839629b045b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68623734656433393637653462653936639c045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68396336616166366331623466313666319d0450706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68343430383933613834653563636436389e048b013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a5f5f47657442797465537472756374446f776e776172644d6573736167655175657565733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68306466323032396537383437356132669f0456706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a4d6f64756c653c543e3a3a71756575655f646f776e776172645f6d6573736167653a3a6832313930616231306262386135643738a0043473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a6866373839353135356266643063643532a1043473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a6831653965343032366430303666613461a204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831346565393234636466663433656365a304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831306563386163393232633239636337a4044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830633732376531313061353965643733a504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836336364376235663333653864633935a604303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862383463373332313962346639306361a70452616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6863663432393832333537313862316232a804633c54206173207061726974795f7363616c655f636f6465633a3a64657074685f6c696d69743a3a4465636f64654c696d69743e3a3a6465636f64655f616c6c5f776974685f64657074685f6c696d69743a3a6831393663636639663735333966303361a9044d3c747269655f64623a3a7472696564623a3a5472696544423c4c3e20617320747269655f64623a3a547269653c4c3e3e3a3a6765745f776974683a3a6832613939336666313235613964633337aa044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6861306135666236323763386263373965ab0439747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633a3a6465636f64653a3a6864373636386237646132643264636162ac0425747269655f64623a3a547269653a3a6765743a3a6835373031643865623535656134613139ad04633c70616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863623865323939656231383364336564ae04653c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836336236373734333139323330656161af04633c70616c6c65745f6d6d723a3a6d6d723a3a4861736865723c482c4c3e20617320636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d657267653a3a4d657267653e3a3a6d657267653a3a6835383363636338643930373561336232b0044973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6b656363616b5f3235363a3a6831383137316366356264393636393062b104633c70616c6c65745f6d6d723a3a6d6d723a3a4861736865723c482c4c3e20617320636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d657267653a3a4d657267653e3a3a6d657267653a3a6863636433363730336161356339306666b2043f70616c6c65745f6d6d725f7072696d6974697665733a3a446174614f72486173683c482c4c3e3a3a686173683a3a6836336538353361613664663337316165b304733c70616c6c65745f6f6666656e6365733a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6833363165633239633064386463373937b40451726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835313632633564613663303434316433b5044f726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835626161663538623564333139393963b6045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832333334616161386538333336643266b7045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862306166386362323663306163613561b8047073705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a6465636f64653a3a6835653330626536393036376234356335b9047373705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a656e636f64655f746f3a3a6838313133613861636435393431363936ba047473705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a4d756c74695369676e61747572653e3a3a656e636f64655f746f3a3a6865353438346336613061623931313363bb045a6672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6862343661356431623634323034373432bc04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861653561633434396330623065393233bd04566672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f76616c69646174653a3a6839323064663639383731323264396138be045970616c6c65745f617574686f72736869703a3a3c696d706c2070616c6c65745f617574686f72736869703a3a70616c6c65743a3a50616c6c65743c543e3e3a3a617574686f723a3a6832303665633730626138353964643838bf04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862613231313534303939366436306436c004386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862323837646233656239353166626361c1045470616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f696e697469616c697a653a3a6838363665643430363466623135633437c204386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836373035303331626231626638663836c3046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6765743a3a6864343264646665383866326561373966c4045e70616c6c65745f696d5f6f6e6c696e653a3a3c696d706c2070616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a69735f6f6e6c696e655f6175783a3a6830643638643762623363666332343864c5044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830666466326461363866333432623232c60497016672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703c5072656669782c486173686572312c4b6579312c486173686572322c4b6579322c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a6765743a3a6833393763333934323363636132613362c704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6862396636353334386163313037316532c8049a016672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703c5072656669782c486173686572312c4b6579312c486173686572322c4b6579322c56616c75652c51756572794b696e642c4f6e456d7074792c4d617856616c7565733e3a3a696e736572743a3a6835663331613539646363373531366262c90476726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6863326132313961653431333634373931ca044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6837306530313537616438356265353334cb04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6864373035353132636333656563303837cc044b70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a67656e65726174655f666f723a3a6832616436613766333235646338656432cd045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839353932376332396436343532656232ce04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863393230613762343335393866663239cf04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835623239343764613730323865663365d00479726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220726f636f636f5f72756e74696d653a3a53657373696f6e4b6579733e3a3a656e636f64655f746f3a3a6861663161643835653134643433353138d104af013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e74332c5475706c65456c656d656e74342c5475706c65456c656d656e74352c5475706c65456c656d656e7436292061732070616c6c65745f73657373696f6e3a3a53657373696f6e48616e646c65723c4149643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6863333865663130323235333236633233d2046a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6765743a3a6830626131626433333334323831393230d3046070616c6c65745f696d5f6f6e6c696e653a3a3c696d706c2070616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6e6f74655f617574686f72736869703a3a6832626563346365653561313134353739d4043c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865343463373730353761663639383037d5043e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836363136636462306435646632643833d60477636f72653a3a7074723a3a64726f705f696e5f706c6163653c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637444697361626c656456616c696461746f72733c726f636f636f5f72756e74696d653a3a52756e74696d653e3e3a3a6839336534653939313464663635636137d704763c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637444697361626c656456616c696461746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836333961623865643234643731613831d804713c70616c6c65745f73657373696f6e3a3a5f5f476574427974655374727563745175657565644368616e6765643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865316232613262313439306432643161d904703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834336336393032356465613538366334da044770616c6c65745f617574686f72736869703a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6865653138626666393933636435366234db044970616c6c65745f617574686f72736869703a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6834663031373037323832626664386535dc04b301706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6834636234643039646530303134653138dd0447636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d723a3a4d4d523c542c4d2c533e3a3a6765745f726f6f743a3a6864356130366535396632663863383835de044e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6861376637626563333364356461666661df04ab01706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6866616266616332653531393036303237e0048d0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a656e636f64655f746f3a3a6831393834346138326131356330343866e1042b78636d3a3a76303a3a58636d3c43616c6c3e3a3a66726f6d3a3a6833643065353834366132613264323164e2046c3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6862646437636235346237306664653330e3045a636f72653a3a7074723a3a64726f705f696e5f706c6163653c5b78636d3a3a76303a3a6f726465723a3a4f726465723c726f636f636f5f72756e74696d653a3a43616c6c3e5d3e3a3a6832363730633733363536326365636538e40446636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e38313233e5046978636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a656e636f64655f746f3a3a6833646432623431363463356532633339e604840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a656e636f64655f746f3a3a6834356463333262663938373161666136e7047978636d3a3a76303a3a6f726465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6f726465723a3a4f726465723c43616c6c3e3e3a3a656e636f64655f746f3a3a6832653436386431626439393864366162e8047978636d3a3a76303a3a6f726465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6f726465723a3a4f726465723c43616c6c3e3e3a3a656e636f64655f746f3a3a6865653530323133343435616535323464e9046978636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a656e636f64655f746f3a3a6862376262316466353965376166636530ea04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833633639363463663533323438336262eb046a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6833623936316336623034613631366638ec045b3c726f636f636f5f72756e74696d653a3a53657373696f6e4b6579732061732073705f72756e74696d653a3a7472616974733a3a4f70617175654b6579733e3a3a6765745f7261773a3a6863663265376636663064333232356437ed046a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6866363565343833633130623934643832ee044c3c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6838373866346665353031636533633732ef0454636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e32343431f00446636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e32343432f1044c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f7665726966793a3a6830616433626665316232656366366430f2044c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7665726966793a3a6836346362323633626331346463666236f3046073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6839326561653735383263343535613239f404583c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6832363230393437666433326662323931f504593c73705f72756e74696d653a3a44697370617463684572726f7257697468506f7374496e666f3c496e666f3e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866663734663431646635343230366131f6045f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830643930653234636538313665353131f7046a3c70616c6c65745f617574686f72736869703a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864363266366236376537316239613161f804673c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a506f736974697665496d62616c616e63653c542c493e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6861373033643634643036336534336337f904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862366135613236313161366433323266fa04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832656137663439653330653963323962fb04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836626362653535666438646335626666fc04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832323563636330633937666163343261fd045870616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6465706f7369745f636f6e73656e7375733a3a6837356431653630316461663261386162fe04457363686e6f72726b656c3a3a706f696e74733a3a52697374726574746f426f74683a3a66726f6d5f636f6d707265737365643a3a6833633333323862336438326132373061ff04407363686e6f72726b656c3a3a7672663a3a5652464f75747075743a3a6174746163685f696e7075745f686173683a3a68343235666432303064623131636466328005386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683333393463646665393533636436613581056d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a617070656e643a3a683163333736363565663864323861646182056d3c6269747665633a3a736c6963653a3a697465723a3a497465724d75744e6f416c6961733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a686531663237353737333830316665616183056f3c6269747665633a3a736c6963653a3a697465723a3a4368756e6b734d75744e6f416c6961733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a686331366538653964303431623465383084055d70616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a683563316163313230623437616438323485054b73705f636f6e73656e7375735f626162653a3a636865636b5f65717569766f636174696f6e5f70726f6f663a3a7b7b636c6f737572657d7d3a3a68303536386565363039303533376561628605a1013c70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a76616c69646174696f6e3a3a4b65794f776e657250726f6f6653797374656d3c2873705f636f72653a3a63727970746f3a3a4b65795479706549642c44293e3e3a3a636865636b5f70726f6f663a3a683034323738393633366162343562333987054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a683063653836303530316361376530663988053d73705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3a3a7371756172653a3a68626132383764373165633361323935368905773c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68383331323139623264366366343763638a0582013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68393466626664633263663231323062658b054970616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a636f6d707574655f6665655f7261773a3a68353332303731333063386366343762318c05466672616d655f737570706f72743a3a776569676874733a3a576569676874546f466565506f6c796e6f6d69616c3a3a63616c633a3a68666530643330636130643930373135638d05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68383239323832366638333534613335308e054673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a68363433633832613437383637636365358f054170616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a686331613935376234626262346334633090054370616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a686239323663636662333839666539343491054c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68346336663130396165323366663931339205a2013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683134396462653531306162353264636393059e013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838373335313134643965396136323737940546636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e32353534950554636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e323535379605c901706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a46756e64496e666f3c4163636f756e7449642c42616c616e63652c426c6f636b4e756d6265722c4c65617365506572696f643e3e3a3a656e636f64655f746f3a3a683739653539346532346664646436626597055c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683962363134653661663764623033666598053f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6832646339373737326431313961653837990557636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5242617463683c456c656d2c53746f72653e3a3a6765745f656c656d3a3a68343338333166373561373962636336659a05ef013c70616c6c65745f6d6d723a3a6d6d723a3a73746f726167653a3a53746f726167653c70616c6c65745f6d6d723a3a6d6d723a3a73746f726167653a3a4f6666636861696e53746f726167652c542c492c4c3e20617320636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5253746f72653c70616c6c65745f6d6d725f7072696d6974697665733a3a446174614f72486173683c3c542061732070616c6c65745f6d6d723a3a436f6e6669673c493e3e3a3a48617368696e672c4c3e3e3e3a3a6765745f656c656d3a3a68346331313730303937363230653864309b055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68626663643637633939303164343761389c054a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68336232383266306231376134663737669d057e3c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68663737616361303938346632663132639e0581013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a5f5f476574427974655374727563744e6578744665654d756c7469706c6965723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68666133346133326233356630333763339f055370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839616266313631663332623132626663a005a3013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a576569676874546f46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835613236636464376566366261663563a105aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836356237386333653064343961303631a20554706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7574696c3a3a6d616b655f7065727369737465645f76616c69646174696f6e5f646174613a3a6838363066323337643364653939323963a30551706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a666f7263655f656e6163743a3a6837386366396461333230663238393432a40555706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a656e6163745f63616e6469646174653a3a6863313132343333306338636361346338a50557706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a7363686564756c655f636f64655f757067726164653a3a6832316136343434366563653262336236a6055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864376238636235366632313663656238a705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831323261363561613137313930666632a8055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865353761633730646665613466353336a9055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866323063643264333638613566353930aa05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863623665343835393136316661643138ab055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831653538623866613761363337386133ac05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6862366331663965633032306231363236ad054573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a617070656e643a3a6837323831306135656633653635643336ae054f706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a6e6f74655f6e65775f686561643a3a6865333733363339303734326232626333af05bc01706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616e64696461746550656e64696e67417661696c6162696c6974793c482c4e3e3e3a3a6465636f64653a3a6864326635383637653634383864613534b0059301706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e64696461746544657363726970746f723c483e3e3a3a6465636f64653a3a6836663934366666343637623663303934b1057d7061726974795f7363616c655f636f6465633a3a6269745f7665633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a6465636f64653a3a6861666633666563643031666236373966b20556706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835396238303863353831656266373331b30558706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a4d6f64756c653c543e3a3a6163746976655f76616c696461746f725f6b6579733a3a6866363465653663353931313535636135b4054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6839386231393364373839373936366238b505656269747665633a3a7665633a3a7472616974733a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a636c6f6e653a3a6832646433343032363631663735313834b605653c6269747665633a3a736c6963653a3a697465723a3a4368756e6b733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6862383434316465663237353362376232b705673c6269747665633a3a736c6963653a3a426974536c6963653c6269747665633a3a6f726465723a3a4c7362302c543e206173206269747665633a3a6669656c643a3a4269744669656c643e3a3a6c6f61645f6c653a3a6864613335373735656333336364653038b8054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6862386465343430393062663363626437b9059401706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a417661696c6162696c6974794269746669656c643e3a3a656e636f64655f746f3a3a6837646636633834343633646633383566ba0580017061726974795f7363616c655f636f6465633a3a6269745f7665633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a656e636f64655f746f3a3a6838633039653764663533653431643837bb05336269747665633a3a7665633a3a4269745665633c4f2c543e3a3a7265706561743a3a6863653834376462666163353763383735bc0559706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a76616c69646174696f6e5f636f64655f686173685f61743a3a6865623765326562393266633831383933bd056d706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616e646964617465436865636b436f6e746578743c543e3a3a636865636b5f76616c69646174696f6e5f6f7574707574733a3a6834366634363032613531323133366138be05753c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a416363657074616e6365436865636b4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832653630643234316366653634383865bf059301706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465526563656970743c483e3e3a3a656e636f64655f746f3a3a6863346238356464636564623466643861c0054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6865373561326239643434326231393662c1054373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6834616131643966353934626266656539c20539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6861383232306335653538353637373935c3059401706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733c4e3e3e3a3a6465636f64653a3a6834623933316334343935393239383763c40539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6865646235363237343030333866343765c5057278636d3a3a76303a3a7472616974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a7472616974733a3a4572726f723e3a3a6465636f64653a3a6830646637353334313061313462363532c6057578636d3a3a76303a3a7472616974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a7472616974733a3a4572726f723e3a3a656e636f64655f746f3a3a6833383164663962343433363839616630c7052d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6863373662656632323039346566383734c8052e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6833323364666261383431613333373335c90534636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6865663363646439316134626465643266ca053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6864616139343034356236313732393164cb053d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6832366161396266393265653232333531cc053d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6835376165316239646464613337346666cd053d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6863343835613134313266356438366661ce053d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6866383462666130616361633465616466cf05643c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836643331613462333734373638333865d0056f3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864643139373931626265323133666334d105613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862353939333664333565363963393632d2053e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6835333065646162646431346262616536d305783c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a6864376261393832376362653064656530d4057a3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a6865626233383638633665343833653466d5057c3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838336666326163303764373263633039d60585013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6836663831323535643965393738636338d7054470616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6866396434623435636639386131613336d8054670616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6839346639373964656564336566376439d9054f70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6838643632303339363832333135643635da059b013c70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863373939346339656365343836636363db05a9013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e7433292061732078636d5f6578656375746f723a3a7472616974733a3a66696c7465725f61737365745f6c6f636174696f6e3a3a46696c74657241737365744c6f636174696f6e3e3a3a66696c7465725f61737365745f6c6f636174696f6e3a3a6832356632346464336430396636323834dc053d78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743a3a636f6e7461696e733a3a6862393763643230363965393364346336dd054f636f72653a3a636d703a3a696d706c733a3a3c696d706c20636f72653a3a636d703a3a5061727469616c45713c26423e20666f722026413e3a3a65713a3a6837353235333461313338666263336637de054166696e616c6974795f6772616e6470613a3a766f7465725f7365743a3a566f7465725365743c49643e3a3a6e74683a3a6833636538313235613433303336386432df053f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6834666632316464343332366131333461e0057d7061726974795f7363616c655f636f6465633a3a6269745f7665633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a6465636f64653a3a6861353263666435313431356537363665e1058e01706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a496e686572656e74446174613c4844523e3e3a3a6465636f64653a3a6834316632643935613935356238303036e2054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830623736353932623333346666386233e3054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6865373933626663656565333931666133e4054e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6836343739303861633437366233333336e5059401706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733c4e3e3e3a3a6465636f64653a3a6834323633393463623462613934306434e6059c01706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a436f6d6d697474656443616e646964617465526563656970743c483e3e3a3a656e636f64655f746f3a3a6836326630313965323038306631636534e70559706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837376565653034353336333936623635e805746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6863383431646432326335376135653663e90559706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6864643831616131353336373963336434ea0587013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a5f5f4765744279746553747275637453657373696f6e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831313162383164356333626233333238eb053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6864633966386231393230343636653036ec055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839313766313130343833326238363261ed05840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a6465636f64653a3a6835326431636631303631383463363232ee05840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a6465636f64653a3a6837386438303761366635383261393330ef05870178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a656e636f64655f746f3a3a6831663136656335353031366639643934f005303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830366239396236643663636239366464f105363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6836663664323065393262613234623162f205373c285431302c5431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831636465623433376336636231653761f30545616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a6765743a3a6861373264643665663664313864303762f40547616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a656e7472793a3a6862633239353234343564366635376634f50548616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6838383364376339663633313032653161f60548616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6864643561386137326232386337336137f70546616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a6862623939383065343864616134386332f80531636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6837306162653664653935613234386437f9057173705f636f72653a3a65636473613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a65636473613a3a5075626c69633e3a3a6465636f64653a3a6830303263336633386439613630313836fa057173705f636f72653a3a65636473613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a65636473613a3a5075626c69633e3a3a6465636f64653a3a6832363432373737616263343863646337fb05653c73705f747269653a3a6e6f64655f6865616465723a3a4e6f6465486561646572206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6838363964613962353838376166656439fc056e3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a636c6f6e655f737562747265653a3a6861316631383235653935306637373532fd054f3c78636d5f6578656375746f723a3a6173736574733a3a4173736574496420617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838303335336563393538363432353534fe056e3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a636c6f6e655f737562747265653a3a6830326435316531623637396263363530ff056e3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a636c6f6e655f737562747265653a3a68376338616234386338343562373130648006613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68306239363336333630333436363233358106613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68376166336434333762623534393466618206613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68383936616363316561633165663363618306613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68386361613066306661653131343063668406613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68626633653264633465363333313463618506613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68643230386262323034306433643136398606673c70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686134653638393463316630383831336687060c436f72655f76657273696f6e88063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834323838623838323937626437333364890612436f72655f657865637574655f626c6f636b8a0684016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a696e697469616c697a655f626c6f636b3a3a68363162663834316633383938346238308b065073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f62617463685f7665726966793a3a68303931666130376465333061653633658c0683016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a6170706c795f65787472696e7369633a3a68333264363436383566386661646431398d066a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a68303861333431323938346334643161378e068a016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a69646c655f616e645f66696e616c697a655f686f6f6b3a3a68323133643064306462323536323032398f065173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a66696e6973685f62617463685f7665726966793a3a68646238626462353433323066623266399006516672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e616c697a653a3a686238306132643162613363636431633191066f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a683862623363363730396133353766343392064573705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f6865783a3a68343666653563666337353231393238649306363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6834396632363665636634333864353761940615436f72655f696e697469616c697a655f626c6f636b9506114d657461646174615f6d6574616461746196064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a686262373966303963313931323232643097064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a683361636264653561316230613333383998061c426c6f636b4275696c6465725f6170706c795f65787472696e7369639906aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a68333563616132373534343765363432619a061b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b9b06940173705f72756e74696d653a3a67656e657269633a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573743c486173683e3e3a3a656e636f64655f746f3a3a68353866633630393431336432343934349c0620426c6f636b4275696c6465725f696e686572656e745f65787472696e736963739d061c426c6f636b4275696c6465725f636865636b5f696e686572656e74739e062b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e9f0646636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e33353939a006673c726f636f636f5f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6835656239353533303335653731356239a1065373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6839626434333938626636386431343665a20646636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e36393639a306bf0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a77697468647261773a3a6864653537313837366362333064323439a4066d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6866666663303039656530646462353338a5063e70616c6c65745f626162653a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a6861383766336531303866333039646439a6064170616c6c65745f6772616e6470613a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a6838306137633161326134633933396362a706733c70616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6839643063666133313233623939656238a806214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572a906536672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a696e697469616c697a653a3a6834393930323262333937383232383563aa064c73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a69735f76616c696461746f723a3a6864306166396364336564623935616435ab065173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a6832646338626532653730643262313834ac062c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6834626237616434636662353163653566ad064c636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a68343564363064623363623763333439332e34353139ae06683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6862636134393739376531623865653134af061850617261636861696e486f73745f76616c696461746f7273b0061e50617261636861696e486f73745f76616c696461746f725f67726f757073b10659706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a67726f75705f726f746174696f6e5f696e666f3a3a6838356562316137633732306538626238b2062050617261636861696e486f73745f617661696c6162696c6974795f636f726573b3064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6861323833313637633232383336666365b4065a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a6e6578745f75705f6f6e5f617661696c61626c653a3a6838313934663465626232333965363639b50659706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a6e6578745f75705f6f6e5f74696d655f6f75743a3a6835636435303937396261653032343137b6065c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6863383134613363316162393764636639b7062750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f64617461b8064373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6f743a3a6863623763646536363136353636623531b9062650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f757470757473ba062550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c64bb061d50617261636861696e486f73745f76616c69646174696f6e5f636f6465bc064e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a63757272656e745f636f64653a3a6862303237313562333839393762666139bd062850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f6465be065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839333434373032303265646635653238bf062c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c697479c0061e50617261636861696e486f73745f63616e6469646174655f6576656e7473c10670726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a4576656e743e3a3a6465636f64653a3a6865663866343236353139333266393764c2064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6836656132666435366636653433353135c30647636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a4576656e743e3a3a68303836636330646639363735663536362e38363132c4064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6835623366393164643563356331646534c5061a50617261636861696e486f73745f73657373696f6e5f696e666fc6061a50617261636861696e486f73745f646d715f636f6e74656e7473c7062c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e7473c8065c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831383231616432613738353536643563c9062550617261636861696e486f73745f76616c69646174696f6e5f636f64655f62795f68617368ca061e4772616e6470614170695f6772616e6470615f617574686f726974696573cb06384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963cc067273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6834626638636635666433316666386135cd065273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a6864303962316361616532356333376463ce0646636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e34353332cf06303c282920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835396239316566343034383531633661d006274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66d1064470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a70726f76653a3a6832363865646464613638346165303264d2063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6838376435363463346132653330366534d30615426162654170695f636f6e66696775726174696f6ed4061b426162654170695f63757272656e745f65706f63685f7374617274d50615426162654170695f63757272656e745f65706f6368d606386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834363533316231303630656236316464d70612426162654170695f6e6578745f65706f6368d80624426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66d90635426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963da0621417574686f72697479446973636f766572794170695f617574686f726974696573db06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832393733316562616163623163396133dc062153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973dd064e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f67656e65726174653a3a6839336539363035636330366531643632de064e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f67656e65726174653a3a6830646261336331383730663236303939df064c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a65636473615f67656e65726174653a3a6838356131353664643164346136376533e0061f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b657973e1061642656566794170695f76616c696461746f725f736574e206386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861363735663035643761393631346439e306154d6d724170695f67656e65726174655f70726f6f66e406473c636f72653a3a726573756c743a3a526573756c743c542c453e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863373763653061303535643562323038e50643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6861373438613833346131613861626236e606134d6d724170695f7665726966795f70726f6f66e706ab01706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6d724c6561663c426c6f636b4e756d6265722c486173682c4d65726b6c65526f6f743e3e3a3a6465636f64653a3a6862313732623263396438376161346433e80643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6835316133663036336463623335313931e906303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831376132666332653237313131613236ea061d4d6d724170695f7665726966795f70726f6f665f73746174656c657373eb064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6833393665336538333333383831353735ec0643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6837393038363937386664386562326636ed065e3c616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864616161393438316239303630613232ee0620526f636f636f46696e616c6974794170695f626573745f66696e616c697a6564ef0621526f636f636f46696e616c6974794170695f69735f6b6e6f776e5f686561646572f00620576f636f636f46696e616c6974794170695f626573745f66696e616c697a6564f10621576f636f636f46696e616c6974794170695f69735f6b6e6f776e5f686561646572f2061d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365f306205472616e73616374696f6e5061796d656e744170695f71756572795f696e666ff406275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c73f5063673705f72756e74696d653a3a7472616974733a3a4f70617175654b6579733a3a6765743a3a6831386334356461653438303635383432f6065c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6833356261353836343032323536616630f706753c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6838363039343139353536643232376564f806aa0162705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722062705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a4772616e6470614a757374696669636174696f6e3c4865616465723e3e3a3a656e636f64655f746f3a3a6832653562393230323832386433396635f906850162705f6865616465725f636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722062705f6865616465725f636861696e3a3a496e697469616c697a6174696f6e446174613c483e3e3a3a656e636f64655f746f3a3a6835623338383638643635313539353135fa0673726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220726f636f636f5f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6863653438393166383762663433356261fb064e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6832316430363961396436356461373763fc0648726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6672616d655f73797374656d3a3a6862383630376636393633346436653538fd064a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696e64696365733a3a6863306164376135353936343337306633fe064b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f62616c616e6365733a3a6864653238396439353437343936316239ff064b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6f6666656e6365733a3a686535363837356535333066306162656380074a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f73657373696f6e3a3a683030653230643764306538383262643981074a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6772616e6470613a3a686635353934666435656165613061336282074c726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696d5f6f6e6c696e653a3a6861323364316265613130366165633531830750726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f696e636c7573696f6e3a3a686666336462363033346535393232623784074c726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f70617261733a3a686134646535663737386466333130653385074b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f68726d703a3a686262383931373335653139303866333786074b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261735f7265676973747261723a3a6836376632306631313938333239613466870744726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f61756374696f6e733a3a6830316366336231333030393631396266880745726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f63726f77646c6f616e3a3a6838323139613365366438353439633466890741726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f736c6f74733a3a68313733366566326637303031313731668a0747726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7375646f3a3a68386163383936376363303462383238638b074d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f76616c696461746f725f6d616e616765723a3a68643330356636653632333530326561628c074d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6c6c6563746976653a3a68613936636639626364396238616364318d074d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d656d626572736869703a3a68636235303363616139663833323663338e074a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7574696c6974793a3a68613532313764306338623264316334318f0748726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f70726f78793a3a6861626438623038313362623764316265900746726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f78636d3a3a68633736386235643234613563636335649107f101636f72653a3a7074723a3a64726f705f696e5f706c6163653c3c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a6164645f66696c7465723c70616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c726f636f636f5f72756e74696d653a3a52756e74696d653e3e3a3a646f5f70726f78793a3a7b7b636c6f737572657d7d3e3a3a7b7b636c6f737572657d7d3e3a3a68663338396530383338343664616166309207743c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a6164645f66696c7465723a3a7b7b636c6f737572657d7d3a3a6865663233306665363864313963653461930748636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a6837613230343637616135323631386435940730636f72653a3a6f70733a3a66756e6374696f6e3a3a466e3a3a63616c6c3a3a6832323037626566343166633838633838950737636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743a3a63616c6c5f6d75743a3a6866653731663736383035306362653435960748636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a683037636233653735323166316565643797077a3c78636d5f6275696c6465723a3a7765696768743a3a4669786564576569676874426f756e64733c542c433e2061732078636d5f6578656375746f723a3a7472616974733a3a7765696768743a3a576569676874426f756e64733c433e3e3a3a7368616c6c6f773a3a68633662363537623566646263383038669807773c78636d5f6275696c6465723a3a7765696768743a3a4669786564576569676874426f756e64733c542c433e2061732078636d5f6578656375746f723a3a7472616974733a3a7765696768743a3a576569676874426f756e64733c433e3e3a3a646565703a3a683163633464386561383634366265386699077e3c70616c6c65745f617574686f726974795f646973636f766572793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68313838393765663966323665666637379a077f3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68333434313962613538336635323432669b0782013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68613131623233366636666562306561649c077c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68626635656136333461616365613163639d07683c70616c6c65745f6d6d723a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68653234656534666133333166353563339e074e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68323530616239323464363963313238389f0754636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e33343032a0074f6672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a456e737572654f726967696e3a3a656e737572655f6f726967696e3a3a6863313535626538376565663064336463a1074b3c285475706c65456c656d656e74302c292061732078636d3a3a76303a3a7472616974733a3a53656e6458636d3e3a3a73656e645f78636d3a3a6831363937303936363662636338636537a2072c6672616d655f73797374656d3a3a656e737572655f726f6f743a3a6833613332303139323935643763633762a3074b73705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a72756e74696d655f76657273696f6e3a3a6861393434303738356439626138303434a40787013c70616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6866643062316236646334383539613534a5074f6672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a456e737572654f726967696e3a3a656e737572655f6f726967696e3a3a6832336261383766623432626563636232a607ab013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a6d656d626572733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6836626335643036626230646138663338a707386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6837306338346132623431303134393038a8072b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6861336162616630303664633333306334a907546672616d655f737570706f72743a3a7472616974733a3a6d656d626572733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6835363933383137663362333638633061aa0784013c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6839333834316536303763636265376330ab0748706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172615f696e697469616c697a653a3a6837623563376433353237363837613865ac0745706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172615f636c65616e75703a3a6835323963623931643233386466613636ad0752706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a696e69745f6f70656e5f6368616e6e656c3a3a6834316336303861656466373461656537ae0754706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a6163636570745f6f70656e5f6368616e6e656c3a3a6831623466303135656365353731346439af074e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6830353565626563363265623965343033b0079b013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6863653633363730383165626632353334b10753706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a646f5f72656769737465723a3a6835643464386466343839356238366134b20761706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a656e737572655f726f6f745f706172615f6f725f6f776e65723a3a6835353338663332626137326563643664b307386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831666633393638346463303337316233b4075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830643330666131356637393937633733b507663c285475706c65456c656d656e74302c5475706c65456c656d656e74312920617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4f6e537761703e3a3a6f6e5f737761703a3a6837316166363536316161393539376330b6075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835316265303337313233323566333737b707776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a6838356438303064613435366239646364b8075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837386236623434333434373036623537b9075a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a636c65616e5f68726d705f61667465725f6f7574676f696e673a3a6863633836393838633435333239666662ba0763706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a70726f636573735f68726d705f6f70656e5f6368616e6e656c5f72657175657374733a3a6865353265343162623734336462383637bb0764706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a70726f636573735f68726d705f636c6f73655f6368616e6e656c5f72657175657374733a3a6835326634643636333930383362376633bc075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862313932303261636166303266323032bd0753706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a696e6372656173655f636f64655f7265663a3a6831373564613531643032343063356638be0750706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a6e6f74655f706173745f636f64653a3a6834623166393532653634633865313561bf07386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6835376234653636313831333536646231c0075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836333839313233343466363166646535c1075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838326664653732386136326566356433c2075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865653063343333656435656330313639c3075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6835616634613936383463353033326634c4075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6861326164386436323065363235313933c5075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6836376266633038303937646637376131c6075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6861643938613738396530613737653830c7075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6864626363333665333663333236376234c8075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6836346239323463623266386332646133c9075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6863333535366237623762303266306530ca075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6864623230386634373437633131623838cb075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838393438393236353065643534346230cc075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6863656264353935393335616238653437cd075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6839366133363930663266376566613631ce075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6836376230646264356235366335343834cf075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6832366238383262643932313164313263d0075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6832643734356439303832643836363264d1075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6837633966636366653361393439646135d2075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6861393133313337353736363931326130d3075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830323666633932313266386337323264d4075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6837333762346631393537326561643030d5075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830653835316439353436313861653932d6075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6834386231633834656338623738363963d7075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6862383062633731383462343833626635d8075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6837633138613535303761383962653966d9075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6866383565323062333262316665396332da075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865373732623730656539623433316637db075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865353430323961323435323037656337dc075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6839316538656565323836393339396463dd075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6866623837656530326362633930643765de075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6862613463393064323438313464646333df075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6831643964353762643063316466363364e0075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830336537333466643232663439383734e1075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6834346530626139343064333036623933e2075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865653164616332646431393666613234e3075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865356561396432396132346366383661e4075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6833373238306464613039396232356531e5075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6831336664383064616564343263623566e6075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6835633563663862333933646231323064e7075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6865613836313132396137653834336661e8075e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6833633063643063396238646661613462e907706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6833303164306333653931333633623235ea074470616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a6838623431326330316664353933623764eb07bf0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a7472616e736665723a3a6834346666636239343137303337616261ec07553c70616c6c65745f62616c616e6365733a3a44757374436c65616e65723c542c493e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6864626465373330366237353933363737ed07386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839353662386235613738626331353764ee07386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6833353362366535636633653661643830ef07593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865376434313761353138633564643037f0074e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6836363962623335643630623161353634f107593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833663132656162373662376331386536f207a70162705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722062705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a4772616e6470614a757374696669636174696f6e3c4865616465723e3e3a3a6465636f64653a3a6831343864336664356164343136333139f307820162705f6865616465725f636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722062705f6865616465725f636861696e3a3a496e697469616c697a6174696f6e446174613c483e3e3a3a6465636f64653a3a6838323764373766366436303338326138f4077a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6831353965363264363939363933323734f507820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6831393934613930323565653966663032f607593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861396530343833656337336233303030f7077273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6864336337633137623338663366663832f807593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833386439303066666633616333663835f907a70162705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722062705f6865616465725f636861696e3a3a6a757374696669636174696f6e3a3a4772616e6470614a757374696669636174696f6e3c4865616465723e3e3a3a6465636f64653a3a6837626331313461383264613131333764fa07820162705f6865616465725f636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722062705f6865616465725f636861696e3a3a496e697469616c697a6174696f6e446174613c483e3e3a3a6465636f64653a3a6838343261663961383034333062346465fb077a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6831383633323062653765313338656533fc07820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6832363263396232333635316237653662fd075d3c726f636f636f5f72756e74696d653a3a436865636b4163636f756e74206173206672616d655f737570706f72743a3a7472616974733a3a6d6973633a3a4765743c493e3e3a3a6765743a3a6839336437306538616336303163643931fe077873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a6830336165323837316630313436643166ff076a3c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68303830366639633837646138616338338008783c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e52756e74696d65557067726164653e3a3a6f6e5f72756e74696d655f757067726164653a3a68376532616465646137666362653332368108386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683236336132346435653233663439643582084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a683932653766343766646338643839663583083870616c6c65745f6d6d723a3a4d6f64756c653c542c493e3a3a6f6666636861696e5f6b65793a3a683363376139366536306437613338313084083c70616c6c65745f6d6d723a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a68353335303935306639663232656163348508793c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683034346161643636633966363064326386087a3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683931316631343465653833343237356587087c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a683535386538363965623532653562353788085373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6b656363616b5f3235365f6f7264657265645f726f6f743a3a6830623464616538666534333532663634890838736563703235366b313a3a6669656c643a3a4669656c643a3a7371725f696e5f706c6163653a3a68343033653431623866653565633839398a0838736563703235366b313a3a6669656c643a3a4669656c643a3a6d756c5f696e5f706c6163653a3a68383863643531623932393139646235618b0839736563703235366b313a3a6669656c643a3a4669656c643a3a6e6f726d616c697a655f7661723a3a68343632613663326436363338333036308c084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68313961623664613661626364306439328d083c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68626232633865363931306663376364658e084170616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a68333739636538343936613932373038368f084370616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a68666530613632393162306337646366329008773c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a457874656e643c3c4120617320736d616c6c7665633a3a41727261793e3a3a4974656d3e3e3a3a657874656e643a3a6830386665366335343033666235316133910835736d616c6c7665633a3a536d616c6c5665633c413e3a3a7472795f726573657276653a3a6831613533633862326230613337653533920891013c78636d5f6275696c6465723a3a6d6174636865735f66756e6769626c653a3a4973436f6e63726574653c543e2061732078636d5f6578656375746f723a3a7472616974733a3a6d6174636865735f66756e6769626c653a3a4d61746368657346756e6769626c653c423e3e3a3a6d6174636865735f66756e6769626c653a3a68653735393131653031623935306237379308c70170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a6465706f7369745f6372656174696e673a3a68386636366165396533366335376461659408386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68306239313664663661313534633637339508386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683161613361353265376432313638346196084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68343539646465653239376264666237639708386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68386436663964643361623862396432659808386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683938636464343562626162393638656699084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a68653830663136346462663732323934359a08910173705f72756e74696d653a3a67656e657269633a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573743c486173683e3e3a3a6465636f64653a3a68323864356362343435646131363637319b08386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68643339356666386130666464316338329c08386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68303732653432343966636332623764629d08386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68313664356236623539363161353062359e08386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68323166613932316639623231386238369f08386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6834316334323065653236316266396233a008386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836303733663938383461393638383035a108386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6837373765323139333232366636396235a208386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6864396333306531346262393730356533a3084478636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e3a3a646f5f657865637574655f78636d3a3a6831663061666136303331643462643262a408c8013c78636d5f6275696c6465723a3a63757272656e63795f616461707465723a3a43757272656e6379416461707465723c43757272656e63792c4d6174636865722c4163636f756e744964436f6e7665727465722c4163636f756e7449642c436865636b65644163636f756e743e2061732078636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743e3a3a77697468647261775f61737365743a3a6831313662623937353435346664636638a5084778636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d655f616c6c3a3a6836316138373436626432386262633432a60881013c78636d5f6578656375746f723a3a6173736574733a3a41737365747320617320636f72653a3a636f6e766572743a3a46726f6d3c616c6c6f633a3a7665633a3a5665633c78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3e3e3a3a66726f6d3a3a6833343465363635396134656361653763a7085678636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743a3a74656c65706f72745f61737365743a3a6838303937303239383237323632333633a80896013c78636d5f6275696c6465723a3a6c6f636174696f6e5f636f6e76657273696f6e3a3a4c6f636174696f6e496e7665727465723c416e6365737472793e2061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a496e766572744c6f636174696f6e3e3a3a696e766572745f6c6f636174696f6e3a3a6836623539376635383466366233643264a9083d78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743a3a7265616e63686f723a3a6839636162626633633461616131326233aa08c6013c78636d5f6275696c6465723a3a63757272656e63795f616461707465723a3a43757272656e6379416461707465723c43757272656e63792c4d6174636865722c4163636f756e744964436f6e7665727465722c4163636f756e7449642c436865636b65644163636f756e743e2061732078636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743e3a3a63616e5f636865636b5f696e3a3a6863306532383530306163623066366335ab084678636d3a3a646f75626c655f656e636f6465643a3a446f75626c65456e636f6465643c543e3a3a74616b655f6465636f6465643a3a6865316666656530376234323734333661ac0894013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e7433292061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a436f6e766572744f726967696e3c4f3e3e3a3a636f6e766572745f6f726967696e3a3a6838633865643735396639353462303635ad083d78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a61743a3a6837663436636461343633383562393035ae084778636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a70726570656e645f776974683a3a6830666332393836626635343437613538af084578636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e3a3a657865637574655f656666656374733a3a6863636438393338353037386661626562b0084078636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f74616b653a3a6839316434666137373438643939643161b1087a3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a6838336331383831373663386330613933b208783c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a6830626164626536623066623435383632b308c7013c78636d5f6275696c6465723a3a63757272656e63795f616461707465723a3a43757272656e6379416461707465723c43757272656e63792c4d6174636865722c4163636f756e744964436f6e7665727465722c4163636f756e7449642c436865636b65644163636f756e743e2061732078636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743e3a3a6465706f7369745f61737365743a3a6830653961386331633239633635336434b4083978636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b653a3a6832383331363865333762343636646236b5084378636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d653a3a6833666165623865343836376136613339b60846616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a697465723a3a6839336436633931623232656232383137b7084c78636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d655f66756e6769626c653a3a6866653833623137353464353866333861b80844616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a697465723a3a6832326434303736633561616234353566b9086a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6831353635326331343463623732653830ba08573c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e20617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6836353436356430323037363131323434bb084178636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a70726570656e645f6c6f636174696f6e3a3a6837373833666361356231363134343834bc0858636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6f726465723a3a4f726465723c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a6864333631653735333163356230636436bd084770616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6865336639656461366133343961383837be084970616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a73746f726167655f6d657461646174613a3a6836313462326634666162613064353263bf085270616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6833666635346539613137356435633039c008ab013c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578697374656e7469616c4465706f73697444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831386164356562313033653532353532c10856706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839313536303463363965336364646164c20858706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839303935396134383830373531313132c3088c013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a5f5f476574427974655374727563744e657874467265655061726149643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865393865633266393732396136663538c40861706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863326339306263373163326264376630c508b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784865616453697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835613463323238313165643937653463c608b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178436f646553697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862623230383532353562303832643537c708b8013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446174614465706f7369745065724279746544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830366164373239613633383730316439c808b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a506172614465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833633462363262623665393033623463c90857706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6862343462613035663766336566616533ca0859706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6836333738386237336363386266643932cb0862706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861363832613865353265326631653365cc08ba013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c65617365506572696f6473506572536c6f7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864373336363830633537393337613735cd08b5013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a536c6f7452616e6765436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863366366613966336363613331376635ce08b3013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53616d706c654c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836626164663163363331323635333562cf08b3013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e64696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861316666333263646636613735636431d00850706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835333032323731336332313166363265d10889013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a5f5f4765744279746553747275637452656c617944697370617463685175657565733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836353834386463303731313432323433d208303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830313438633633303837646662633665d308303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865316335666430646137316565386130d40831636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6832653332623961646235663937383832d50831636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6866663761666465653634616236666663d60843616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6865663338343833343430663134363938d708443c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a686173683a3a486173683e3a3a686173683a3a6831313562356236636365616533656139d8086b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839646165356435646433326134306161d908653c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6272616e63685f6e6f64653a3a6832653862353630313065313336306533da08683c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a657874656e73696f6e5f6e6f64653a3a6835336464373130363737313530663538db08633c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6c6561665f6e6f64653a3a6865366434343066356363343564623763dc083f73705f747269653a3a6e6f64655f6865616465723a3a656e636f64655f73697a655f616e645f7072656669783a3a6833643063396265626437356235656431dd08643c70616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866643962376638333063643362666438de0882017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202850302c51302c5230293e3a3a656e636f64655f746f3a3a6866643734633033383932643534333837df085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864643030616435633166333236333964e0084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6839663466386237336234356135633936e1085a70616c6c65745f696d5f6f6e6c696e653a3a3c696d706c2070616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a69735f6f6e6c696e653a3a6831623862653438613634653261383737e208c4013c78636d5f6275696c6465723a3a6c6f636174696f6e5f636f6e76657273696f6e3a3a4163636f756e7449643332416c69617365733c4e6574776f726b2c4163636f756e7449643e2061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a436f6e766572743c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e2c4163636f756e7449643e3e3a3a636f6e766572743a3a6866373839393330343138353862306132e3083970616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6838393764316533666139653236656438e4085173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f6765743a3a6834323166356333346138363638313630e5085d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365743a3a6837353035346336366661326563373664e6084d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6832326334333434643935306230336631e7084a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6831386464396465646564336663353436e8087270616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a5f3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f722070616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a43616c6c3c543e3e3a3a666d743a3a6834663833633337636661333835643862e9085173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f7365743a3a6865643930376534343031386636393137ea084878636d3a3a646f75626c655f656e636f6465643a3a446f75626c65456e636f6465643c543e3a3a656e737572655f6465636f6465643a3a6831353834396333613463363137663531eb0854636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e34353333ec084873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6830343139343637333262623439636365ed084578636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a74616b655f66697273743a3a6863353430353838396164396664666131ee0848636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6830646335656236373931373234373962ef08706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6865306339663432343232343662313034f0083c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839353336663939316230313032336534f1083e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838656461323465333338636266613363f208703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861666363376539643862373733306631f308693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831653662376635623363616362336662f4083c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6862626232656531393739386363346562f5084e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6839383862643439353330353739316334f608583c6569746865723a3a4569746865723c4c2c523e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865336134656236333761653535303230f7084670616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6837303832386632353536646135653662f8084870616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6861353764363436383534396234363462f908683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865616265663264666334616333633364fa086d3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6831346235306630346131303535666234fb083d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6863666338363631393932323334633032fc08683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834623835316431323266373962656466fd08683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6863623738656463353664353665626664fe08683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6837316131363138613962636137313633ff0859706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a6170706c795f6e65775f73657373696f6e3a3a68663638313665353862353739343537358009683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68356662623531393234623964356235308109683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68313935303038336561373966313133638209683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839353732353539663765326364386665830956706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838626537386630386130346365393432840985013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f476574427974655374727563745363686564756c65643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683461663231636466336432383837323885098d013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f47657442797465537472756374417661696c6162696c697479436f7265733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686435653636326165386339316464636486098b013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f476574427974655374727563745061726174687265616451756575653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68353262633039333465653462366435398709766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a68663535636365366361346431343130338809303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686637363836636432363563666538306489095f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68336464336536633339313064333639658a09503c61727261797665633a3a6572726f72733a3a43617061636974794572726f723c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68336566646232346239393166366265308b09693c70616c6c65745f696d5f6f6e6c696e653a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68616139633435316665303434323835618c09723c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68643463313239346534393435333062388d09733c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68363166323834623137353365313563628e095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68343236636466373736363733633665328f09766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6832633331303038336139633136646638900946636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68623232313833346636643731363663322e3533323091095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a686638636630636666646633643435656692095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683637343362343437643033383237656293094c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a686130643165393165623462396466323194094670616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a646f5f617070726f76655f70726f706f73616c3a3a683336363165316635376138363636343795094270616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a72656d6f76655f70726f706f73616c3a3a6866643664366131313261656264373137960954636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e3533323397095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683861336632623962336162306262353198095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683866633233306234316330333031363099095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68366132623230303535633230366238399a095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68623936393766356464633631313964659b095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68636163306163633561613861646539669c092c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a68383638633635366564303031663235659d0953706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a636c6f73655f68726d705f6368616e6e656c3a3a68336362396532633731636130383135639e095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68383834303966313263623463386537649f095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866633264326262373161313764663835a0095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862366436633232333363653562396134a10946616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a6835643931393061636466623230376334a2094670616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6830643730626266653364393762656361a3094870616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6865343264646336313133323836623134a4095170616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6838303332656436633738353665613535a509a3013c70616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830303632626163393437373639323232a6094170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6865643661396438353532623661653236a7094370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6862356335313535643437336138663334a8096e3c70616c6c65745f636f6c6c6563746976653a3a5f5f476574427974655374727563745072696d653c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832363661663134373439636364386337a909703c70616c6c65745f636f6c6c6563746976653a3a5f5f476574427974655374727563744d656d626572733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835363061323533303265633764316530aa096f3c70616c6c65745f636f6c6c6563746976653a3a5f5f47657442797465537472756374566f74696e673c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836393632383830393166383836346663ab09733c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c4f663c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830323236356337653736633666303930ac09723c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838383830343662373938303062613664ad095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837303964346235333462663030323032ae094f706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6861383937356364656436383030336638af0951706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865343863386666333764666539316564b00989013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a5f5f4765744279746553747275637448726d704368616e6e656c446967657374733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837393565613831386561376235373634b10992013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a5f5f4765744279746553747275637448726d704f70656e4368616e6e656c52657175657374734c6973743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839316531396139323366323231633538b20950706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837326562306566376264323636346562b30952706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6835303361643566663735366231376235b40987013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5f5f4765744279746553747275637450617374436f64655072756e696e673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834306334336433666430393536633864b50984013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5f5f4765744279746553747275637450617374436f64654d6574613c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839356233353564306163613063373234b60982013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5f5f4765744279746553747275637450617261636861696e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834623565313030343861613435356565b709303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832333236636365326666646233306333b809303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6835663866306336306637313631353532b909303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836633436653064336438376139626262ba09303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866306265343962373835626566383936bb09303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866613766616362613639623934376136bc097f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6833326164643737313535316131623638bd098201706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a3c696d706c20706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a69645f66726f6d5f696e6465783a3a6864373064396431626566353031643661be095073705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a6865653134646637316664616439303935bf097f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6836653839656332343131383739313039c0095273705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561723a3a6835313763366135313631663066353933c1097f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6861343466663565316336626134643037c2095073705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6765743a3a6865373730656535353065336161626130c309643c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839373536656461343032333863643362c4094e616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a646f5f726573657276655f616e645f68616e646c653a3a6839303031343364393565616166636339c5094773705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6578745f6b65793a3a6832353365336332613637333163326134c6096e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865313234343861633735313731663930c7096e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6866663639393966633434323764313265c8095073705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f7472616e73616374696f6e3a3a6832623130313861626636643033363137c9095373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6c6c6261636b5f7472616e73616374696f6e3a3a6838303662633930653332616233353135ca095173705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636f6d6d69745f7472616e73616374696f6e3a3a6864356433653032626536653762633031cb0954636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e36393732cc09773c6672616d655f737570706f72743a3a73746f726167653a3a4368696c64547269655072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839316231346137616234363762613565cd095573705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6578745f6b65793a3a6864306335653961366366313565313038ce0939636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6861393032313333613837613637626532cf096d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a617070656e643a3a6837336635613362646361396365353336d0094470616c6c65745f7574696c6974793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6839663132303561343336336433383061d10980016672616d655f73797374656d3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f73797374656d3a3a4c61737452756e74696d6555706772616465496e666f3e3a3a656e636f64655f746f3a3a6862306630363431376433613138623636d209686672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6832306533383136386335303066333334d309653c73705f61726974686d657469633a3a66697865645f706f696e743a3a46697865645531323820617320636f72653a3a6f70733a3a61726974683a3a4469763e3a3a6469763a3a7b7b636c6f737572657d7d3a3a6836643336306336343661386230373966d4094170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6838336631643164633533623065316137d5094370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6861313563376439396164653633363836d60953706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832383336346135303436343461616236d7098c013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a5f5f4765744279746553747275637441637469766556616c696461746f724b6579733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836653433376332633066356261326636d80941747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a636f6d6d69745f6368696c643a3a6832626463363463656434666638383932d90972747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a617070656e645f6f7074696f6e616c5f736c6963655f616e645f6e6962626c653a3a6865333037626161356339376565306564da095c747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a64726f705f6c617374733a3a6865383964656566633139316266366565db0960747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a72696768745f697465723a3a6838366264303331613965353637323434dc093c747269655f64623a3a7472696564626d75743a3a4e6f646553746f726167653c483e3a3a616c6c6f633a3a6866373730623936643766313932373839dd09543c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e20617320747269655f64623a3a547269654d75743c4c3e3e3a3a696e736572743a3a6834383731333865366339613831343530de093e747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f61743a3a6835663262323337613561313766643066df093c747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a66726f6d5f656e636f6465643a3a6830393437383934613437343931326361e00945747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f696e73706563746f723a3a6833633363643735663937376230326263e109363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6866336335316264306232343134333439e209376861736862726f776e3a3a7365743a3a486173685365743c542c533e3a3a696e736572743a3a6862306661333066323364623132373536e3093e747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a696e6c696e655f6f725f686173683a3a6866373939346331626236303966393135e40965747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a746f5f73746f7265645f72616e67653a3a6863613236323738613063623137326332e5093e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6864356434383034643061363934643839e609643c70616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866396562373036366333626436303033e7096d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864663736326666353661343262663337e8097b3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861653734393239653731366162333732e9094470616c6c65745f62656566793a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6833343166643961613631303665656664ea09746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6836636561623662653964313533623238eb09523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a696e736572743a3a6830376332633532643563653064663030ec094470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a71756572793a3a6863386164383538376430663439303333ed09366861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a6765743a3a6839656237373538653337376431616230ee09a901636f72653a3a7074723a3a64726f705f696e5f706c6163653c6d656d6f72795f64623a3a4d656d6f727944423c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235362c6d656d6f72795f64623a3a486173684b65793c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c616c6c6f633a3a7665633a3a5665633c75383e3e3e3a3a6836623033623462393836643761653134ef097c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c73705f747269653a3a4c61796f75743c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e3e3e3a3a6831343766386136376139333063396365f0094c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836363966306437366431356535386161f10986013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a5f5f4765744279746553747275637442656566794e657874417574686f7269746965733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830623435336635646565316637613536f20958706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6838303630373432356534643061373737f3095a706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6863336636666138623236386239353334f40963706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861373963616664323238373737643064f509b7013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656d6f76654b6579734c696d697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866663536653464363033613131393337f609b0013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50616c6c6574496444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866336336613336656163383634656139f70954636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68646263313030633966353862666565332e38313234f8092c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6861383062363733643735323962623235f9093e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6831316333393138383063626466636233fa097b3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836323237313937396365366335353166fb09c401706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a486f7374436f6e66696775726174696f6e3c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a6835393331643539626632663163373763fc095373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a6865373465653362346139366331313736fd094b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6368616e6765735f726f6f743a3a6833373236653766653161303634366536fe09426672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6838313264643735666332383463616566ff09446672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6838663166636463356563343065313536800a4d6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6838303265626438333565323662666133810a9c013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5353353850726566697844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839623530666138343238303136363034820a99013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a56657273696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832303061393535303566343863313633830a9a013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446257656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866376530626630333839643233643966840aa0013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b48617368436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866366130353138323964343336386662850a9d013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862613830623536636365376264336566860a9e013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b5765696768747344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861653037343735343463376466333933870a5c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832363239373936653261393164663637880a3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6835626637663638333266663565383735890a3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68373037343964363566653462353930348a0a56706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68626266393039326166376563636639308b0a58706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68333264313339336234666434313064318c0a94013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a5f5f47657442797465537472756374427566666572656453657373696f6e4368616e6765733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68643363313739343764656633666339648d0a58706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68326636383966656136613664613561658e0a5a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68313930393735643331383837343037628f0a8c013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a5f5f47657442797465537472756374416374697665436f6e6669673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835393436373237353761316265373834900a4f3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a6765743a3a6831653733653937613064663665653234910a533c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a656d706c6163653a3a6836613134326162336637613363373666920a386861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a656e7472793a3a6836643361643433313831333932336630930a3d6861736862726f776e3a3a6d61703a3a566163616e74456e7472793c4b2c562c533e3a3a696e736572743a3a6833316539316564306261393532313634940a523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a72656d6f76653a3a6834623236663063633436623930363366950a543c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a636f6e7461696e733a3a6835326565633365636336363265633636960a583c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64623a3a6839303337373133613736303237393836970aae01636f72653a3a7074723a3a64726f705f696e5f706c6163653c6d656d6f72795f64623a3a4d656d6f727944423c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235362c6d656d6f72795f64623a3a486173684b65793c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c616c6c6f633a3a7665633a3a5665633c75383e3e3e3a3a68366230336234623938366437616531342e39313838980a5c3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64625f6d75743a3a6861313633343464323032333666646538990a653c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68303736343433383437656634613930399a0a523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a6765743a3a68616631616236343062666364336137639b0a573c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a636f6e7461696e733a3a68633735646431363539306330623931359c0a3a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a68336133313661323338326639633831329d0a3773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a68303835613664366136653661363261369e0a4473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a68363366313836343465343161326231339f0a3773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a6834373431393366626234633466303135a00a3d3c5420617320636f72653a3a636f6e766572743a3a547279496e746f3c553e3e3a3a7472795f696e746f3a3a6838393461626436373261636462316134a10a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832303566663536643435336433303338a20a413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6865373131356331333734633763636434a30a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6866333231646562643665396366353831a40a7773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a46726f6d46464956616c756520666f7220543e3a3a66726f6d5f6666695f76616c75653a3a6832393633633739386337383766656338a50a543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866353263656335663035643837303161a60a7773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a496e746f46464956616c756520666f7220543e3a3a696e746f5f6666695f76616c75653a3a6830666633623962343030346139396533a70a860173705f72756e74696d655f696e746572666163653a3a696d706c733a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a496e746f46464956616c756520666f7220616c6c6f633a3a7665633a3a5665633c543e3e3a3a696e746f5f6666695f76616c75653a3a6864373732396561396564633763343939a80a323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6865653365646662333639633535636432a90a2673705f696f3a3a6c6f6767696e673a3a6c6f673a3a6836383831613539396139383131356534aa0a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831316231386433393239383634363731ab0a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837666538333265653564386232393030ac0a533c73705f72756e74696d653a3a72756e74696d655f6c6f676765723a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a6839663964626262343561393935643064ad0a4f3c73705f72756e74696d653a3a72756e74696d655f6c6f676765723a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a6863333932306561643130643935313237ae0a3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6835633462393033373566613761643838af0a3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6833613032306333633164363765336538b00a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838373061666163666438373938656362b10a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830653461333730356131633831366263b20a303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837646336313238626139653838663761b30a4478636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a74616b655f6c6173743a3a6865393137663535663863396265306136b40a4778636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a706172656e745f636f756e743a3a6837356164646532623230386231626536b50a4f636f72653a3a636d703a3a696d706c733a3a3c696d706c20636f72653a3a636d703a3a5061727469616c45713c26423e20666f722026413e3a3a65713a3a6862313033333131626462323738663264b60aaa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6834323938383931326531623030656134b70aba01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365617263683a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c426f72726f77547970652c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561664f72496e7465726e616c3e3e3a3a7365617263685f747265653a3a6865633862663930333966393530383836b80a4278636d5f6578656375746f723a3a6173736574733a3a417373657449643a3a70726570656e645f6c6f636174696f6e3a3a6832656238623438666339303264353639b90a4a636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d5f6578656375746f723a3a6173736574733a3a417373657449643e3a3a6833663766643734383236616633333763ba0a52616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6866383832373737393039353934623136bb0a4278636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b655f66756e6769626c653a3a6865396434323632636532663337306161bc0a4678636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b655f6e6f6e5f66756e6769626c653a3a6831363933643535353939386439366232bd0a4e616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a72656d6f76655f656e7472793a3a6863613338393239623137363162336134be0a48616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6830343865393063383535313864363163bf0a4278636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a74616b655f6e6f6e5f66756e6769626c653a3a6830643261616538346430383465376561c00a095f5f6173686c746933c10a095f5f756d6f64746933c20a085f5f6d756c746933c30a066d656d637079c40a076d656d6d6f7665c50a066d656d736574c60a0462636d70c70a095f5f6c736872746933c80a4c636f6d70696c65725f6275696c74696e733a3a696e743a3a7370656369616c697a65645f6469765f72656d3a3a753132385f6469765f72656d3a3a6863326431313463346632303534666162c90a095f5f7564697674693300550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e35342e302d6e696768746c79202863613832323634656320323032312d30352d303929", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xe81713b6b40972bbcd298d67597a495f878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x1a736d37504c2e3fb73dad160c55b291878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xca32a41f4b3ed515863dc0a38697f84e878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x2f85f1e1378cb2d7b83adbaf0b5869c2878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xa6b4d5720c90ecd39576e0b9b422f799878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xa8c65209d47ee80f56b0011e8fd91f50878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x3db7a24cfdc9de785974746c14a99df9878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x509fc563e49ed9cb767129896846f57f878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x2b06af9719ac64d755623cda8ddd9b94878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xf0c365c3cf59d671eb72da0e7a4113c4878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x9ba1b78972885c5d3fc221d6771e8ba2fe6d4a58cccf03d052c50ccbfa0311c7": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x5c0d1176a568c1f92944340dbfed9e9c878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0x6a0da05ca59913bc38a8630590f2627c878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcd710b30bd2eab0352ddcc26417aa194878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xe81713b6b40972bbcd298d67597a495f9611a984bbd04e2fd39f97bbc006115f": "0x01", - "0x3f1467a096bcd71a5b6a0c8155e20810878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x9ba1b78972885c5d3fc221d6771e8ba29611a984bbd04e2fd39f97bbc006115f": "0x01", - "0x1809d78346727a0ef58c0fa03bafa323878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0xf5207f03cfdce586301014700e2c2593878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000040010004000000286bee0000000004000000040000000500000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c80000000200000019000000000000000200000002000000", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xf9922c78cfa3c316d27a3eb48145ab1b878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xd8bbe27baf3aa64bb483afabc240f68e878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xd57bce545fb382c34570e5dfbf338f5e878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x6ac983d82528bf1595ab26438ae5b2cf878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x7a75e50a187151745b2af2e74fefd23d878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0xd5e1a2fa16732ce6906189438c0a82c6878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xda7d4185f8093e80caceb64da45219e3878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x1089acb60cf7c46d5f1dbbe708118d9e878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xd5c41b52a371aa36c9254ce34324f2a5878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x084e7f70a295a190e2e33fd3f8cdfcc2878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x26aa394eea5630e07c48ae0c9558cef7878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x2ce461329fdf4be12bce01afc0af09bc878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0xa98c18726f636f636f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0x31a3a2ce3603138b8b352e8f192ca55a878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x08c41974a97dbf15cfbec28365bea2da878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0x9ba1b78972885c5d3fc221d6771e8ba2878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0x3d9cad2baf702e20b136f4c8900cd802878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0x3fba98689ebed1138735e0e7a5a790ab878d434d6125b40443fe11fd292d13a4": "0x00000902", - "0x5f9cc45b7a00c5899361e1c6099678dc878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xe81713b6b40972bbcd298d67597a495ffe6d4a58cccf03d052c50ccbfa0311c7": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986" - }, - "childrenDefault": {} - } - } -} diff --git a/node/service/res/westend.json b/node/service/res/westend.json deleted file mode 100644 index a8d21035bc64..000000000000 --- a/node/service/res/westend.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "name": "Westend", - "id": "westend2", - "bootNodes": [ - "/dns/0.westend.paritytech.net/tcp/30333/p2p/12D3KooWKer94o1REDPtAhjtYR4SdLehnSrN8PEhBnZm5NBoCrMC", - "/dns/0.westend.paritytech.net/tcp/30334/ws/p2p/12D3KooWKer94o1REDPtAhjtYR4SdLehnSrN8PEhBnZm5NBoCrMC", - "/dns/1.westend.paritytech.net/tcp/30333/p2p/12D3KooWPVPzs42GvRBShdUMtFsk4SvnByrSdWqb6aeAAHvLMSLS", - "/dns/1.westend.paritytech.net/tcp/30334/ws/p2p/12D3KooWPVPzs42GvRBShdUMtFsk4SvnByrSdWqb6aeAAHvLMSLS", - "/dns/2.westend.paritytech.net/tcp/30333/p2p/12D3KooWByVpK92hMi9CzTjyFg9cPHDU5ariTM3EPMq9vdh5S5Po", - "/dns/2.westend.paritytech.net/tcp/30334/ws/p2p/12D3KooWByVpK92hMi9CzTjyFg9cPHDU5ariTM3EPMq9vdh5S5Po", - "/dns/3.westend.paritytech.net/tcp/30333/p2p/12D3KooWGi1tCpKXLMYED9y28QXLnwgD4neYb1Arqq4QpeV1Sv3K", - "/dns/3.westend.paritytech.net/tcp/30334/ws/p2p/12D3KooWGi1tCpKXLMYED9y28QXLnwgD4neYb1Arqq4QpeV1Sv3K" - ], - "telemetryEndpoints": [ - [ - "wss://telemetry.polkadot.io/submit/", - 0 - ] - ], - "protocolId": "wnd2", - "properties": { - "ss58Format": 42, - "tokenDecimals": 12, - "tokenSymbol": "WND" - }, - "forkBlocks": null, - "badBlocks": [ - "0x53849a2121fe81fde85859dcebe8cc9c37791c01a9702ce65615b1dcb8ac53e5", - "0x66535350bf0d031dc15a0b6ee20165c0cd7ea49fec85685915f732e24d69e141" - ], - "consensusEngine": null, - "genesis": { - "raw": { - "top": { - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc69406b1b580f3fd70373207c005e38adff268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x047374616b696e672000407a10f35a0000000000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950df2ec3df1d2fc39f6772616e80959cebf18fecb305b96fd998c95f850145f52cbbb64b3ef937c0575cc7ebd652": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90566b5cb12e1bb0dd3301e8ab40c6d0508264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x000000000300407a10f35a000000000000000000000000000000000000000000000000000000407a10f35a0000000000000000000000407a10f35a00000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x0b00407a10f35a0b00407a10f35a00", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9803adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x00", - "0x5f3e4907f716ac89b6347d15ececedcaea07de2b8f010516dca3f7ef52f7ac5a": "0x040000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6afdf816f281ad669fe59fe0f725f72759ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x047374616b696e672000407a10f35a0000000000000000000002", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9bb08f275d00049b315666c2c44130a106648d7f3382690650c681aba1b993cd11e54deb4df21a3a18c3e2177de9f7342": "0x0000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x041c77657374656e64", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x10a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a72bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300174bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e", - "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x32000000", - "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a0000000003adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x0b00407a10f35a0b00407a10f35a00", - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb35c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x959cebf18fecb305b96fd998c95f850145f52cbbb64b3ef937c0575cc7ebd65272bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001", - "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195024a1470c7a02f07e696d6f6e807ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934", - "0x3a636f6465": "0x0061736d0100000001ae022c60037f7f7f017f60027f7f017f60027f7f0060017f017e60017f0060047f7f7f7f0060037f7e7e0060017e017f6000017e60017e017e60017f017f60037e7e7f017e60027f7f017e60037f7f7e017e60017e0060027e7e0060037f7e7f017f60027f7e017e60047f7e7e7e017f6000017f60027f7e017f60000060037f7f7f0060057f7f7f7f7f0060027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60077f7f7f7f7f7f7f017f60087e7e7e7e7e7e7e7e017f60077f7e7e7e7e7e7e0060027f7e0060067f7f7f7f7f7f0060057f7e7e7f7f0060057f7f7f7e7e0060057f7f7e7e7f0060047e7e7e7e017f60047f7f7e7e0060067f7e7e7f7f7f0060067f7f7f7e7e7f0060027e7f0060067f7f7f7f7e7e0060047f7e7e7f0060057f7e7e7e7e0060067f7e7e7e7e7f0002cc0a2203656e76066d656d6f727902001203656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31000603656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31000703656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31000803656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31000903656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31000a03656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000403656e761a6578745f73746f726167655f726561645f76657273696f6e5f31000b03656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31000c03656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000303656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31000d03656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31000e03656e761c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f31000e03656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31000703656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31000703656e76196578745f73746f726167655f7365745f76657273696f6e5f31000f03656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31000703656e76196578745f73746f726167655f6765745f76657273696f6e5f31000903656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31000e03656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31000e03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f32001003656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001103656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001203656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31000603656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31000903656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31000703656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31000903656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31000803656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31000903656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31001003656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31000e03656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31001303656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31001403656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f310014038b0589050a0a040400000a0a0c1515151616021600151517000101020102020201180403191a161600170101010a1b0101011601010005010100010100000100040101020216021602000101160102010102040202010216051602041616160a0101021c011d01010202040200171e1f160217020104011616161616161616161616161616161616161616161616160216161616160216161616160204021601020416160202020202020202160202021604020201020202160216170216020516161604161604021602021620060f020204150a0402020216020202020202020402020202020405020219021602160a2102021616020216020402162202021602232419040505160204040001010201021602020101020401010201010404040204020204170a020502021602130125020216040404161616040202020404160204010202020202020404040404040404040404040404041502021602020216162605260a02020204021602161702020201020202021616160416020202020202040202020402020104041604040402020404040416051602021602160202021616161902040202160216160202020402000604040202021a02040402020202020202020202021504040404041508020217020216020404021604040204040202040202020202020202020216020216020404020204042717160202021604010216020201020201160202161616010404020402020216051f28020404010201040402020202150416160404040202040501000402040204020202040416160404020402020202161616040404040404040c0c0c0c0c0c0c040c0c0c0c150c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0204040204020402160202160423160404040402040000000029292a2a2a2b0407017001ad01ad010619037f01418080c0000b7f0041a0abc7000b7f0041a0abc7000b07a2071f195f5f696e6469726563745f66756e6374696f6e5f7461626c65010009686173685f7465737400290c436f72655f76657273696f6e00ee0412436f72655f657865637574655f626c6f636b00ef0415436f72655f696e697469616c697a655f626c6f636b00f004114d657461646174615f6d6574616461746100f1041c426c6f636b4275696c6465725f6170706c795f65787472696e73696300f2041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00f30420426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300f4041c426c6f636b4275696c6465725f636865636b5f696e686572656e747300f60418426c6f636b4275696c6465725f72616e646f6d5f7365656400f7042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00f804214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200f9041850617261636861696e486f73745f76616c696461746f727300fb041950617261636861696e486f73745f647574795f726f7374657200fc041f50617261636861696e486f73745f6163746976655f70617261636861696e7300fd042850617261636861696e486f73745f676c6f62616c5f76616c69646174696f6e5f7363686564756c6500fe042350617261636861696e486f73745f6c6f63616c5f76616c69646174696f6e5f6461746100ff041c50617261636861696e486f73745f70617261636861696e5f636f64650080051750617261636861696e486f73745f6765745f68656164730081051d50617261636861696e486f73745f7369676e696e675f636f6e746578740082051e4772616e6470614170695f6772616e6470615f617574686f72697469657300830515426162654170695f636f6e66696775726174696f6e0084051b426162654170695f63757272656e745f65706f63685f737461727400850521417574686f72697479446973636f766572794170695f617574686f7269746965730086052153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b6579730087051f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b6579730088051d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365008905205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f008a050a5f5f646174615f656e6403010b5f5f686561705f62617365030209bf02010041010bac01393d5047840148496c51d1015ba503b602b102b202b802df02ab04a4045eb502d0043536375f405254555657586667686a6b6f6d6e4d4e7efc01f503fb01fa01f301bf04f901f801f701f601f401f201ff01fe01a802a902aa02b902bd029301be04bd04e602a603cc04b003d204d4049c059b059d05ea04e904e702dd04dc04e802df04e804c804c904ec04eb04ed04f101ee01e902fd01a702c704ea02f403f303eb02fe03aa03a903ab03b1038f048e04ec02ac04d202d002ed02db02d803d703cc03af03ae03a703fb03fa03ee02e603d904d804ef02e7048d058c05f002970593049204f102ad04bb02ba02f202bc02da029b04f302d103d003f402e5039c04ac03fd038301fc03da03d90391049004990498049a04c204c104c004e004ca04d304d604d504de048e059a05cd04cf049e059f0591010acdd13889050600200010220b0600200010040b0600200010240b0600200010050b0a0020002001200210260b2801017f0240200210042203450d002003200020022001200120024b1b10a1051a200010050b20030b0600200010280b1c01017f0240200010042201450d0020014100200010a0051a0b20010bff0202017f037e230041206b220224002001ad42adfed5e4d485fda8d8007e42b9e0007c210302400240024002400240200141084b0d00200141014b0d0120010d02420021040c030b0240200141104b0d00200241106a2000290000200385420042adfed5e4d485fda8d800420010a605200241186a29030020022903107c200120006a41786a2900008521040c040b200120006a41786a2900002105200321040340200029000020048542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e2003852103200041086a2100200442cf829ebbefefde82147c2104200141786a220141084b0d000b200320058521040c030b0240200141034b0d00200120006a417e6a33000042108620003300008420038521040c030b200120006a417c6a35000042208620003500008420038521040c020b200031000021040b200420038521040b20022004420042adfed5e4d485fda8d800420010a605200241086a290300210420022903002103200241206a2400200420037c42c300850b0500102b000b2400410041d4b3c000ad4280808080f0008441dbb3c000ad4280808080a00484100000000b1100419080c000411141a480c000102d000b4701017f230041206b22032400200341146a41003602002003419ca8c700360210200342013702042003200136021c200320003602182003200341186a36020020032002103a000bdd0101047f0240024002400240200041046a2802002203200041086a28020022046b200220016b2202490d00200028020021050c010b200420026a22052004490d01200341017422062005200620054b1b22064100480d010240024002402003450d00200028020022050d010b024020060d00410121050c020b2006102122050d010c040b024020032006460d00200520032006102521050b2005450d03200041086a28020021040b20002005360200200041046a20063602000b200520046a2001200210a1051a200041086a200420026a3602000f0b102c000b102a000b8b0301067f230041306b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240024002400240200141146a2802000d00200621070c010b024020040d004100410041cc80c0001030000b024002402006410f4b0d00200341046a280200450d010b200620066a220720064f0d010b4100210741012105200241086a21060c010b2007417f4c0d01200241086a2106024020070d0041002107410121050c010b200710212205450d020b20024100360210200220053602082002200736020c2002200241086a360214200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241146a41dc80c000200241186a10310d0220002006290200370200200041086a200641086a280200360200200241306a24000f0b1032000b1033000b41f480c0004133200241186a41a881c00041b881c0001034000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c2003419884c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a2002103a000bba06010a7f230041306b22032400200341246a2001360200200341033a002820034280808080800437030820032000360220410021042003410036021820034100360210024002400240024020022802082205450d0020022802002106200228020422072002410c6a2802002208200820074b1b2209450d01200241146a280200210a2002280210210b41012108200020062802002006280204200128020c1100000d03200541106a2102200641086a2100410121040240024003402003200241746a28020036020c20032002410c6a2d00003a00282003200241786a280200360208200241086a28020021084100210541002101024002400240200241046a2802000e03010002010b2008200a4f0d032008410374210c41002101200b200c6a220c2802044102470d01200c28020028020021080b410121010b2003200836021420032001360210200228020021080240024002402002417c6a2802000e03010002010b2008200a4f0d0420084103742101200b20016a22012802044102470d01200128020028020021080b410121050b2003200836021c200320053602180240200241706a2802002208200a4f0d00200b20084103746a2208280200200341086a20082802041101000d06200420094f0d05200041046a210120002802002105200241206a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d010c070b0b2008200a41f088c0001030000b2008200a41e088c0001030000b2008200a41e088c0001030000b2002280200210620022802042207200241146a2802002208200820074b1b220a450d002002280210210241012108200020062802002006280204200128020c1100000d02200641086a21004101210403402002280200200341086a200241046a2802001101000d022004200a4f0d01200041046a210120002802002105200241086a2102200041086a210041012108200441016a2104200328022020052001280200200328022428020c110000450d000c030b0b0240200720044d0d00410121082003280220200620044103746a22022802002002280204200328022428020c1100000d020b410021080c010b410121080b200341306a240020080b0500102c000b0500102a000b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c200541b0fcc200360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004103a000b120020002802002001200120026a102e41000bcb0301047f230041106b22022400200028020021000240024002400240024002402001418001490d002002410036020c2001418010490d012002410c6a210302402001418080044f0d0020022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c050b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c040b0240024020002802082203200041046a280200460d00200028020021040c010b200341016a22042003490d02200341017422052004200520044b1b22054100480d020240024002402003450d00200028020022040d010b024020050d00410121040c020b2005102122040d010c050b024020032005460d00200420032005102521040b2004450d04200028020821030b20002004360200200041046a20053602000b200420036a20013a00002000200028020841016a3602080c040b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c020b102c000b102a000b20002003200320016a102e0b200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41dc80c000200241086a10312101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241cc82c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41e482c000103a000b0b0020003502002001103e0b3401017f230041106b220224002002200136020c20022000360208200241a884c0003602042002419ca8c7003602002002103f000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241a083c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41b883c000103a000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241dc83c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41f483c000103a000b0d0020002802001a037f0c000b0bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a200020004290ce0080220442f0b17f7e7ca7220641ffff037141e4006e220741017441ea84c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441ea84c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441ea84c0006a2f00003b00000b024002402005410a480d00200241096a2003417e6a22036a200541017441ea84c0006a2f00003b00000c010b200241096a2003417f6a22036a200541306a3a00000b2001419ca8c7004100200241096a20036a412720036b10412103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141ccb3c0003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a102f410141d4b3c000410720012802102001280218108a0100000b0c00429ef392e9c28bc0b1400be80501067f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001466a2108200a41016a210a2009417f6a22090d000b0b200720026a20086b21070b412b418080c40020061b21080240024020002802084101460d004101210a200020082001200210420d012000280218200320042000411c6a28020028020c110000210a0c010b02402000410c6a280200220920074b0d004101210a200020082001200210420d012000280218200320042000411c6a28020028020c1100000f0b0240024020054108710d004100210a200920076b22092105024002400240410120002d0020220720074103461b0e0402010001020b2009410176210a200941016a41017621050c010b410021052009210a0b200a41016a210a0340200a417f6a220a450d0220002802182000280204200028021c280210110100450d000b41010f0b200028020421052000413036020420002d002021064101210a200041013a0020200020082001200210420d014100210a200920076b22092102024002400240410120002d0020220820084103461b0e0402010001020b2009410176210a200941016a41017621020c010b410021022009210a0b200a41016a210a02400340200a417f6a220a450d0120002802182000280204200028021c280210110100450d000b41010f0b200028020421094101210a200028021820032004200028021c28020c1100000d01200241016a2108200028021c210220002802182101024003402008417f6a2208450d014101210a2001200920022802101101000d030c000b0b200020063a00202000200536020441000f0b200028020421094101210a200020082001200210420d00200028021820032004200028021c28020c1100000d00200541016a2108200028021c210220002802182100034002402008417f6a22080d0041000f0b4101210a200020092002280210110100450d000b0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341b486c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a2002103a000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341ec86c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a2002103a000b9307010c7f200041106a28020021030240024002400240200041086a28020022044101460d0020034101460d012000280218200120022000411c6a28020028020c11000021030c030b20034101470d010b0240024020020d00410021020c010b200120026a2105200041146a28020041016a21064100210720012103200121080340200341016a210902400240024020032c0000220a417f4a0d000240024020092005470d004100210b200521030c010b20032d0001413f71210b200341026a220921030b200a411f71210c0240200a41ff0171220a41df014b0d00200b200c41067472210a0c020b0240024020032005470d004100210d2005210e0c010b20032d0000413f71210d200341016a2209210e0b200d200b41067472210b0240200a41f0014f0d00200b200c410c7472210a0c020b02400240200e2005470d004100210a200921030c010b200e41016a2103200e2d0000413f71210a0b200b410674200c411274418080f0007172200a72220a418080c400470d020c040b200a41ff0171210a0b200921030b02402006417f6a2206450d00200720086b20036a21072003210820052003470d010c020b0b200a418080c400460d00024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b4100210902402002450d002002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b0240200220096b200028020c2206490d002000280218200120022000411c6a28020028020c1100000f0b410021074100210902402002450d00410021092002210a200121030340200920032d000041c00171418001466a2109200341016a2103200a417f6a220a0d000b0b200920026b20066a2209210a024002400240410020002d0020220320034103461b0e0402010001020b20094101762107200941016a410176210a0c010b4100210a200921070b200741016a2103024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000b41010f0b2000280204210941012103200028021820012002200028021c28020c1100000d00200a41016a2103200028021c210a20002802182100034002402003417f6a22030d0041000f0b20002009200a280210110100450d000b41010f0b20030bc80801067f230041f0006b220524002005200336020c20052002360208410121062001210702402001418102490d00410020016b2108418002210903400240200920014f0d00200020096a2c000041bf7f4c0d0041002106200921070c020b2009417f6a21074100210620094101460d01200820096a210a20072109200a4101470d000b0b200520073602142005200036021020054100410520061b36021c2005419ca8c70041b087c00020061b3602180240024002400240200220014b22090d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b200520023602202002450d0220022001460d02200141016a210a03400240200220014f0d00200020026a2c000041404e0d040b2002417f6a210920024101460d04200a2002462107200921022007450d000c040b0b20052002200320091b360228200541306a41146a4103360200200541c8006a41146a4104360200200541d4006a410436020020054203370234200541b887c0003602302005410136024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a2004103a000b200541e4006a4104360200200541c8006a41146a4104360200200541d4006a4101360200200541306a41146a410436020020054204370234200541d087c0003602302005410136024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a2004103a000b200221090b024020092001460d00410121070240024002400240200020096a220a2c00002202417f4a0d0041002106200020016a220721010240200a41016a2007460d00200a41026a2101200a2d0001413f7121060b2002411f71210a200241ff017141df014b0d012006200a4106747221010c020b2005200241ff0171360224200541286a21020c020b4100210020072108024020012007460d00200141016a210820012d0000413f7121000b200020064106747221010240200241ff017141f0014f0d002001200a410c747221010c010b41002102024020082007460d0020082d0000413f7121020b2001410674200a411274418080f00071722002722201418080c400460d020b2005200136022441012107200541286a21022001418001490d00410221072001418010490d0041034104200141808004491b21070b200520093602282005200720096a36022c200541306a41146a4105360200200541ec006a4104360200200541e4006a4104360200200541c8006a41146a4106360200200541d4006a410736020020054205370234200541f087c000360230200520023602582005410136024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541246a3602502005200541206a360248200541306a2004103a000b41d095c700412b2004102d000b100020012000280200200028020410450b800101037f230041206b220224000240024020002802002001104c0d002001411c6a2802002103200128021821042002411c6a41003602002002419ca8c7003602182002420137020c200241d888c00036020820042003200241086a1031450d010b200241206a240041010f0b20002802042001104c2101200241206a240020010bdd0502047f017e410121020240200128021841272001411c6a2802002802101101000d0041022103024002400240024002402000280200220041776a2204411e4d0d00200041dc00470d010c020b41f40021050240024020040e1f05010202000202020202020202020202020202020202020202030202020203050b41f20021050c040b41ee0021050c030b0240024002402000104a0d00024002400240200041808004490d00200041808008490d0120004190fc476a4190fc0b490d02200041b5d9736a41b5db2b490d02200041e28b746a41e20b490d022000419fa8746a419f18490d02200041dee2746a410e490d02200041feffff0071419ef00a460d02200041a2b2756a4122490d02200041cb91756a410a4b0d050c020b200041c089c000412941928ac00041a20241b48cc00041b502104b450d010c040b200041e98ec000412641b58fc00041af0141e490c00041a303104b0d030b200041017267410276410773ad4280808080d0008421060c010b200041017267410276410773ad4280808080d0008421060b410321030c020b410121030c010b0b200021050b03402003210441dc002100410121024101210302400240024002400240024020040e0402010500020b02400240024002402006422088a741ff01710e06050302010006050b200642ffffffff8f608342808080803084210641f50021000c060b200642ffffffff8f608342808080802084210641fb0021000c050b20052006a72204410274411c7176410f712203413072200341d7006a2003410a491b210002402004450d002006427f7c42ffffffff0f832006428080808070838421060c050b200642ffffffff8f60834280808080108421060c040b200642ffffffff8f6083210641fd0021000c030b41002103200521000c030b20012802184127200128021c2802101101000f0b200642ffffffff8f60834280808080c0008421060b410321030b20012802182000200128021c280210110100450d000b0b20020b9d0301057f0240024002404100410f200041a49a04491b2201200141086a2201200141027441c894c0006a280200410b742000410b7422014b1b2202200241046a2202200241027441c894c0006a280200410b7420014b1b2202200241026a2202200241027441c894c0006a280200410b7420014b1b2202200241016a2202200241027441c894c0006a280200410b7420014b1b220241027441c894c0006a280200410b74220320014620032001496a20026a2201411e4b0d002001410274210241b105210302402001411e460d00200241cc94c0006a2204450d00200428020041157621030b4100210402402001417f6a220520014b0d002005411f4f0d03200541027441c894c0006a28020041ffffff007121040b02402003200241c894c0006a280200411576220141016a460d00200020046b21022003417f6a2103410021000340200141b0054b0d032000200141d495c0006a2d00006a220020024b0d012003200141016a2201470d000b0b20014101710f0b2001411f41889bc0001030000b200141b10541989bc0001030000b2005411f41c495c0001030000bea0201067f200120024101746a210720004180fe0371410876210841002109200041ff0171210a0240024002400340200141026a210b200920012d000122026a210c024020012d000022012008460d00200120084b0d03200c2109200b2101200b2007470d010c030b0240200c2009490d00200c20044b0d02200320096a2101024003402002450d012002417f6a210220012d00002109200141016a21012009200a470d000b410021020c050b200c2109200b2101200b2007470d010c030b0b2009200c418894c0001044000b200c2004418894c0001043000b200041ffff03712109200520066a210c4101210202400340200541016a210a0240024020052d00002201411874411875220b4100480d00200a21050c010b200a200c460d02200b41ff007141087420052d0001722101200541026a21050b200920016b22094100480d02200241017321022005200c470d000c020b0b41d095c700412b419894c000102d000b20024101710ba50201037f23004180016b2202240002400240024002400240200128020022034110710d0020034120710d012000ad2001103e21000c020b410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141a889c0004102200220036a4180016a410020036b104121000c010b410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d02200141a889c0004102200220036a4180016a410020036b104121000b20024180016a240020000f0b2000418001419889c0001044000b2000418001419889c0001044000b1c00200128021841999cc000410b2001411c6a28020028020c1100000b1c00200128021841a49cc000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a410136020020034201370214200341ccb3c0003602102003410436022c2003200341286a3602202003200341086a360228200341106a2002103a000b140020002802002001200028020428020c1101000b1500200120002802002200280200200028020410450bb10401077f230041306b220324000240024020020d00410021040c010b200341286a210502400240024002400340024020002802082d0000450d00200028020041ed9cc0004104200028020428020c1100000d050b2003410a3602282003428a808080103703202003200236021c200341003602182003200236021420032001360210200341086a410a200120021053024002400240024020032802084101470d00200328020c210403402003200420032802186a41016a2204360218024002402004200328022422064f0d00200328021421070c010b200328021422072004490d00200641054f0d072003280210200420066b22086a22092005460d0420092005200610a305450d040b200328021c22092004490d0220072009490d0220032006200341106a6a41176a2d0000200328021020046a200920046b10532003280204210420032802004101460d000b0b2003200328021c3602180b200028020841003a0000200221040c010b200028020841013a0000200841016a21040b2000280204210920002802002106024020044520022004467222070d00200220044d0d03200120046a2c000041bf7f4c0d030b200620012004200928020c1100000d04024020070d00200220044d0d04200120046a2c000041bf7f4c0d040b200120046a2101200220046b22020d000b410021040c040b2006410441f49cc0001043000b200120024100200441849dc0001046000b200120022004200241a087c0001046000b410121040b200341306a240020040bf80201067f410021040240024020024103712205450d00410420056b2205450d0020032005200520034b1b210441002105200141ff01712106034020042005460d01200220056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050c010b200141ff017121060240024020034108490d002004200341786a22084b0d00200641818284086c210502400340200220046a220741046a2802002005732209417f73200941fffdfb776a7120072802002005732207417f73200741fffdfb776a7172418081828478710d01200441086a220420084d0d000b0b200420034b0d010b200220046a2109200320046b210241002103410021050240034020022005460d01200920056a2107200541016a210520072d000022072006470d000b410121032007200141ff01714641016a41017120056a417f6a21050b200520046a21050c010b2004200341b09dc0001044000b20002005360204200020033602000b8b0201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002003200110522101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41fc9dc000200241086a10312101200241206a240020010b0d0020002802002001200210520b0b002000280200200110540b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41fc9dc000200241086a10312101200241206a240020010bd30202047f027e230041c0006b2203240041012104024020002d00080d00200028020421050240200028020022062d00004104710d0041012104200628021841db9dc00041949ec00020051b4102410120051b2006411c6a28020028020c1100000d0120012000280200200228020c11010021040c010b024020050d0041012104200628021841959ec00041022006411c6a28020028020c1100000d01200028020021060b41012104200341013a0017200341346a41e09dc000360200200320062902183703082003200341176a3602102006290208210720062902102108200320062d00203a00382003200837032820032007370320200320062902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041f89dc0004102200328023428020c11000021040b200020043a00082000200028020441016a360204200341c0006a240020000bd40202037f027e230041c0006b2203240041012104024020002d00040d0020002d000521040240200028020022052d00004104710d000240200441ff0171450d0041012104200528021841db9dc00041022005411c6a28020028020c1100000d02200028020021050b20012005200228020c11010021040c010b0240200441ff01710d0041012104200528021841999ec00041012005411c6a28020028020c1100000d01200028020021050b41012104200341013a0017200341346a41e09dc000360200200320052902183703082003200341176a3602102005290208210620052902102107200320052d00203a00382003200737032820032006370320200320052902003703182003200341086a3602302001200341186a200228020c1101000d00200328023041f89dc0004102200328023428020c11000021040b200041013a0005200020043a0004200341c0006a240020000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10312100200241206a240020000bd70a020c7f017e230041206b220324004101210402400240200228021841222002411c6a2802002802101101000d000240024020010d00410021050c010b200020016a21064100210520002107410021080240034020072109200741016a210a02400240024020072c0000220b417f4a0d0002400240200a2006470d004100210c200621070c010b20072d0001413f71210c200741026a220a21070b200b411f7121040240200b41ff0171220b41df014b0d00200c200441067472210c0c020b0240024020072006470d004100210d2006210e0c010b20072d0000413f71210d200741016a220a210e0b200d200c41067472210c0240200b41f0014f0d00200c2004410c7472210c0c020b02400240200e2006470d004100210b200a21070c010b200e41016a2107200e2d0000413f71210b0b200c4106742004411274418080f0007172200b72220c418080c400470d020c040b200b41ff0171210c0b200a21070b4102210a024002400240024002400240200c41776a220b411e4d0d00200c41dc00470d010c020b41f400210e02400240200b0e1f05010202000202020202020202020202020202020202020202030202020203050b41f200210e0c040b41ee00210e0c030b0240200c104a0d0002400240200c41808004490d00200c41808008490d01200c4190fc476a4190fc0b490d02200c41b5d9736a41b5db2b490d02200c41e28b746a41e20b490d02200c419fa8746a419f18490d02200c41dee2746a410e490d02200c41feffff0071419ef00a460d02200c41a2b2756a4122490d02200c41cb91756a410a4d0d020c060b200c41c089c000412941928ac00041a20241b48cc00041b502104b450d010c050b200c41e98ec000412641b58fc00041af0141e490c00041a303104b0d040b200c41017267410276410773ad4280808080d00084210f4103210a0c010b0b200c210e0b2003200136020420032000360200200320053602082003200836020c0240024020082005490d0002402005450d0020052001460d00200520014f0d01200020056a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020056a200820056b200228021c28020c110000450d01410121040c060b20032003410c6a3602182003200341086a36021420032003360210200341106a105d000b0340200a210b4101210441dc0021054101210a024002400240024002400240200b0e0402010500020b0240024002400240200f422088a741ff01710e06050302010006050b200f42ffffffff8f608342808080803084210f4103210a41f50021050c070b200f42ffffffff8f608342808080802084210f4103210a41fb0021050c060b200e200fa7220b410274411c7176410f71220a413072200a41d7006a200a410a491b21050240200b450d00200f427f7c42ffffffff0f83200f4280808080708384210f0c050b200f42ffffffff8f608342808080801084210f0c040b200f42ffffffff8f6083210f4103210a41fd0021050c040b4100210a200e21050c030b4101210a0240200c418001490d004102210a200c418010490d0041034104200c41808004491b210a0b200a20086a21050c040b200f42ffffffff8f60834280808080c00084210f0b4103210a0b20022802182005200228021c280210110100450d000c050b0b200820096b20076a210820062007470d000b0b2005450d0020052001460d00200520014f0d02200020056a2c000041bf7f4c0d020b410121042002280218200020056a200120056b200228021c28020c1100000d0020022802184122200228021c28021011010021040b200341206a240020040f0b200020012005200141a087c0001046000b2b01017f20002802002201280200200128020420002802042802002000280208280200419c9ec0001046000b900101037f23004180016b2202240020002802002103410021000340200220006a41ff006a2003410f712204413072200441376a2004410a491b3a00002000417f6a2100200341047622030d000b024020004180016a2203418101490d002003418001419889c0001044000b200141a889c0004102200220006a4180016a410020006b1041210020024180016a240020000b1c00200128021841fea9c00041052001411c6a28020028020c1100000bb30101037f200028020421020240024020002802004101470d002000410c6a28020022002001106120004103742200450d01200220006a2103034020022802002100200241046a2802002204200110612001200020041062200241086a22022003470d000c020b0b200041086a28020022002001106120004103742200450d00200220006a2103034020022802002100200241046a2802002204200110612001200020041062200241086a22022003470d000b0b0bab0101017f230041106b220224000240024002400240200041c000490d00200041808001490d012000418080808004490d02200241033a00032001200241036a41011062200220003602042001200241046a410410620c030b200220004102743a00032001200241036a410110620c020b200220004102744101723b010a20012002410a6a410210620c010b2002200041027441027236020c20012002410c6a410410620b200241106a24000bcd0101047f0240024002400240200041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422062005200620054b1b22064100480d010240024020030d00024020060d00410121050c020b2006102122050d010c040b2000280200210520032006460d0020052003200610252205450d03200041086a28020021040b20002005360200200041046a20063602000b200520046a2001200210a1051a200041086a200420026a3602000f0b102c000b102a000bff0101037f200028020421020240024020002802004101470d002000410c6a2802002200200110612000450d01200041186c2103200241146a21000340200041706a2802002102200041746a28020022042001106120012002200410622000417c6a280200210220002802002204200110612001200220041062200041186a2100200341686a22030d000c020b0b200041086a2802002200200110612000450d00200041186c2103200241146a21000340200041706a2802002102200041746a28020022042001106120012002200410622000417c6a280200210220002802002204200110612001200220041062200041186a2100200341686a22030d000b0b0ba90701057f230041206b2203240020012002106102402001450d00200141d8006c2104410021050340200020056a220141046a2802002106200141086a28020022072002106120022006200710622003200141d4006a2d00003a000d20022003410d6a4101106202402001410c6a2d0000220641024b0d0002400240024020060e03000102000b200341003a000e20022003410e6a41011062200141146a2802002106200141186a28020022072002106120022006200710620c020b200341013a000e20022003410e6a4101106202402001410d6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110620b200141146a2802002106200141186a2802002207200210612002200620071062200141206a2802002106200141246a280200220720021061200220062007106220032001410e6a2d00003a000e20022003410e6a410110620c010b200341023a000e20022003410e6a4101106202402001410d6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110620b200141146a2802002106200141186a2802002207200210612002200620071062200141206a2802002106200141246a28020022072002106120022006200710622001412c6a2802002106200141306a28020022072002106120022006200710622001410e6a2d0000220641064b0d000240024002400240024002400240024020060e0700010203040506000b200341003a000f0c060b200341013a000f0c050b200341023a000f0c040b200341033a000f0c030b200341043a000f0c020b200341053a000f0c010b200341063a000f0b20022003410f6a410110620b02400240200141346a2802004101470d00200141386a2802002106200141c0006a28020022072002106120022006200710620c010b200341106a200141386a2802002001413c6a28020028020c11020020032802102106200328021822072002106120022006200710622003280214450d00200610230b200141c4006a200210602004200541d8006a2205470d000b0b200341206a24000be405010b7f2001410c6a28020021022001280208210320012802042104200128020021050240024002400240024002400240024020012d001022060e03010002010b200420056b21070c020b200420056b2201200220036b6a220720014f0d010240024020052004460d00200541016a2108410021060c010b024020032002470d004101210941002104410021070c060b410221062003210120052108200341016a2103200121050b41002101410021074101210903402001410174210a200420086b210b034020052d00002105024020012007470d00200b2107024002400240200641ff01710e03010200010b200220036b21070c010b417f200b200220036b6a22072007200b491b21070b2001417f200741016a220c200c2007491b6a22072001490d05200a2007200a20074b1b22074100480d05024020010d00024020070d00410121090c020b2007102122090d010c090b20012007460d0020092001200710252209450d080b200920016a20053a0000024002400240024002400240200641ff01710e03010300010b20022003460d010c040b024020082004460d00410021060c030b20022003470d030b200141016a21040c090b4101210620082004470d00200141016a21040c080b200141016a210120082105200841016a21080c020b200141016a210141022106200a41026a210a2003220541016a21030c000b0b0b200220036b21070b4101210902402007450d0020074100480d01200710212209450d040b0240200641014d0d0041002104200921010c020b0240024020052004470d0041002104200921010c010b200921012005210a03402001200a2d00003a0000200141016a21012004200a41016a220a470d000b200420056b21040b200641024b0d0220060e03010201010b102c000b20032002460d002003210a03402001200a2d00003a0000200141016a21012002200a41016a220a470d000b2002200420036b6a21040b2000200436020820002007360204200020093602000f0b102a000bd40101037f02400240024002402000280200220041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102122050d010c040b2000280200210520032004460d0020052003200410252205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2001200210a1051a200041086a200420026a36020041000f0b102c000b102a000bbf0301047f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b0240024002400240200041046a2802002203200041086a28020022046b2001490d00200028020021050c010b200420016a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102122050d010c040b2000280200210520032004460d0020052003200410252205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2002410c6a200110a1051a200041086a200420016a360200200241106a240041000f0b102c000b102a000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41cc9fc000200241086a10312101200241206a240020010bcd0101037f0240024002400240200041046a2802002203200041086a28020022046b2002490d00200028020021050c010b200420026a22052004490d01200341017422042005200420054b1b22044100480d010240024020030d00024020040d00410121050c020b2004102122050d010c040b2000280200210520032004460d0020052003200410252205450d030b20002005360200200041046a2004360200200041086a28020021040b200520046a2001200210a1051a200041086a200420026a3602000f0b102c000b102a000b040041010bb60101017f230041c0006b2202240020024100360210200242013703082002410836021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241ccb3c0003602282002200241186a360238200241246a41cc9fc000200241286a10311a20012d0000417f6a41ff0171200141046a290200200235021042208620023502088410000240200228020c450d00200228020810230b200241c0006a24000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10312101200241206a240020010b040041000b02000b02000bcd0201047f230041106b2202240002400240024002400240024002400240024020012d00000e06010203040500010b200241003a000a20024181ca003b01082002200141216a3602042002200141016a3602000c050b410110272201450d062000428180808010370204200020013602000c050b2001410c6a2802002203412020034120491b220441016a220310212205450d0520052003200310a005220541016a200141046a280200200410a1051a2000200336020820002003360204200020053602000c040b200241003a000a20024181c4003b01082002200141216a3602042002200141016a3602000c020b200241003a000a20024181c6003b01082002200141216a3602042002200141016a3602000c010b200241003a000a20024181c8003b01082002200141216a3602042002200141016a3602000b2000200210710b200241106a24000f0b1033000be105010a7f200141096a2d0000210220012d000821032001280204210420012802002105024002400240024002400240024002400240024020012d000a22060e03010002010b200341ff017141014621070c020b200341ff01714101462201200420056b6a220720014f0d01410021084100210141002107410121090240410041ff01710e03030400030b410021060c040b200420056b21070b0240024020070d00410121090c010b20074100480d04200710212209450d060b4100210102400240200341ff01710d00200921080c010b20092108200641014b0d00200920023a0000200941016a2108410121010b200641024b0d04024020060e03000500000b20052004460d04200120056b21010340200820052d00003a0000200841016a21082004200541016a2205470d000b200420016a21010c040b410121060c010b410221060b0340024002400240024020060e03000102020b20052004460d0520052d0000210a41022106200541016a21052002210b200a21020c020b200341017121064100210302402006450d00410021064100210b0c020b20052004460d0420052d0000210241022106200541016a21054100210b0c010b410121062003410171210a410021034100210b200a450d030b024020012007470d00024002400240024020060e03010200010b200420056b21070c020b417f200341ff01714101462207200420056b6a220a200a2007491b21070c010b200341ff017141014621070b2001417f200741016a220a200a2007491b6a22072001490d0220082007200820074b1b22074100480d02024020010d00024020070d00410121090c020b2007102122090d010c050b20012007460d0020092001200710252209450d040b200920016a20023a0000200841026a2108200141016a2101200b2102024002400240200641ff01710e03000102000b410121060c020b410221060c010b410021060c000b0b102c000b2000200136020820002007360204200020093602000f0b102a000ba00201067f410021020240200141016a2203200028020422044d0d000240200041146a22052802002201200041106a280200470d000240024002400240200141016a22022001490d00200141017422062002200620024b1b220241ffffffff03712002470d00200241027422024100480d00024020010d0020020d02410421060c040b200028020c2106200141027422072002460d03024020070d0020020d02410421060c040b20062007200210252206450d020c030b102c000b2002102122060d010b102a000b2000200636020c200041106a20024102763602000b200028020c220241046a2002200141027410a2051a2002200320046b36020020002003360204410121022005200141016a3602002000200028020041016a3602000b20020b8c0201067f02400240024020012802002202450d00200128020421030340200241086a210420022f010622054103742101410021060240024003402001450d0141b2a8c0002004410810a3052207450d02200141786a2101200641016a2106200441086a21042007417f4a0d000b2006417f6a21050b2003450d022003417f6a2103200220054102746a41e4016a28020021020c010b0b200241e0006a2006410c6c6a22012802084108490d01200041086a2001280200290000370300200041003602000f0b200041003602042000410c6a4128360200200041086a41baa8c0003602000c010b200041003602042000410c6a4129360200200041086a41e2a8c0003602000b200041013602000bed0301057f024002400240200241046a2203417f4c0d0002400240024002400240024002400240024002402003450d00200310212204450d0b200241c000490d04200241808001490d052002418080808004490d06200441033a00002003417f6a41034d0d01200321050c030b41012103410110212204450d07200441033a0000410521050c010b200341017422064105200641054b1b22054100480d0720032005460d010b20042003200510252204450d050b20042002360001410521060c030b200420024102743a000041012106200321050c020b02400240200341014d0d00200321050c010b2003200341017422064102200641024b1b2205460d0020042003200510252204450d030b41022106200420024102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d0320032005460d0020042003200510252204450d020b20042002410274410272360000410421060b0240200520066b2002490d00200521030c050b200620026a22032006490d01200541017422072003200720034b1b22034100480d0120052003460d04200420052003102522040d040b102a000b102c000b1032000b1033000b200420066a2001200210a1051a2000200620026a36020820002003360204200020043602000bd60201027f024002402002450d002002417f6a21040240024020012d0000220241037122054103460d0002400240024020050e03000102000b200241027621020c030b2004450d0320012d0001410874200272220241ffff0371418002490d03200241fcff037141027621020c020b20044103490d0220012f0001200141036a2d000041107472410874200272220241808004490d02200241027621020c010b200241034b0d0120044104490d0120012800012202418080808004490d010b200220036a22012002490d0141012103410121050240200241c000490d0041022105200241808001490d00410441052002418080808004491b21050b0240200141c000490d0041022103200141808001490d00410441052001418080808004491b21030b20002001360204200041003602002000410c6a2003360200200041086a20053602000f0b200041013602000f0b200041013602000be60601067f0240024002400240024020012d0000220341024d0d0041012101410021040c010b02400240024020030e03000102000b410110212205450d03200541013a0000412010212203450d0420032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a2900003700004121210420054101412110252201450d0320012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310230c020b410110212205450d02200541023a0000412010212203450d0320032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a2900003700004121210420054101412110252201450d0220012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310230c010b410110212205450d01200541033a0000412010212203450d0220032001290001370000200341186a2206200141196a290000370000200341106a2207200141116a290000370000200341086a2208200141096a2900003700004121210420054101412110252201450d0120012003290000370001200141196a2006290000370000200141116a2007290000370000200141096a2008290000370000200310230b20022802002103410410212205450d0020052003360000412010212203450d0120032002290004370000200341186a22062002411c6a290000370000200341106a2207200241146a290000370000200341086a22082002410c6a29000037000020054104412410252202450d00200220032900003700042002411c6a2006290000370000200241146a20072900003700002002410c6a20082900003700002003102320044101742203200441246a2206200320064b1b2105024020040d00200510212201450d010c030b20042005460d02200120042005102522010d020b102a000b1033000b200120046a22032002290000370000200341206a200241206a280000360000200341186a200241186a290000370000200341106a200241106a290000370000200341086a200241086a290000370000200210232000200636020820002005360204200020013602000b5f01017f02404120102122020d001033000b200042a080808080043702042000200236020020022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700000b8803010a7f230041206b220124000240024002400240200041086a2802002202450d00410020024102746b2103417f210420002802002205210603402003450d01200441016a2104200341046a210320062802002107200641046a21062007450d000b4100200741004741016a41017122066b2004460d002002200620046a2208490d012002200741004741016a4101716b20046b220641ffffffff03712006470d0220064102742209417f4c0d024104210a02402009450d0020091021220a450d040b200141003602182001200a36021020012009410276360214200141106a4100200610792001280210200128021822064102746a200520084102746a4104200741004741016a410171220741027420036a6b10a1051a200141086a22032002200620076b6a20046b360200200120012903103703000240200041046a28020041ffffffff0371450d00200028020010230b20002001290300370200200041086a20032802003602000b200141206a24000f0b2008200241fcadc0001044000b1032000b1033000bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff03712001470d00200141027422014100480d00024020030d0020010d02410421020c040b20002802002102200341027422032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014102763602000b0bb90403077f017e097f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742208417f4c0d00200810272209450d01024020050d004200210a0c040b2004417f6a220b20044b210c2002280200210d2003417f6a220e20034b0d022001280200210f2007417f6a2102200820096a417c6a2110410021064200210a03404100211102402003200e20066b22124d0d00410021112012200e4b0d00200f20124102746a28020021110b410021120240200c0d002004200b20066b22134d0d002013200b4b0d00200d20134102746a28020021120b200720024d0d052010200a2011ad7c2012ad7c220a3e02002010417c6a21102002417f6a2102200a422088210a200641016a22062005490d000c040b0b1032000b1033000b2007417f6a2102200820096a417c6a2111410021104200210a0340410021060240200c0d00410021062004200b20106b22124d0d00410021062012200b4b0d00200d20124102746a28020021060b200720024d0d022011200a2006ad7c220a3e02002011417c6a21112002417f6a2102200a422088210a201041016a22102005490d000b0b024020072005417f736a220220074f0d00200020073602082000200841027636020420002009360200200920024102746a200a3e02000240200141046a28020041ffffffff0371450d00200128020010230b0f0b2002200741ecadc0001030000b2002200741ecadc0001030000bb404030e7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742207417f4c0d000240200710272208450d002004450d022001280200210902400240024020030d002006417f6a2105200720086a417c6a210a20092004417f6a22024102746a21030340200420024d0d0302402003280200450d00200620054d0d03200a41003602000b2003417c6a2103200a417c6a210a2005417f6a21052002417f6a2202417f470d000c060b0b200720086a417c6a210b200341027420022802006a417c6a210c4100210d2006210e03402004200d417f736a220220044f0d020240200920024102746a220f2802002210450d0042002111417f2102200b2105200c210a024003402006200e20026a22124d0d012005200a3502002010ad7e20117c20053502007c22113e0200201142208821110240200320026a0d002006200d20036a417f736a220520064f0d05200820054102746a20113e02000c030b2005417c6a2105200a417c6a210a200f280200211020032002417f6a22026a22122003490d000b2012200341dcadc0001030000b2012200641dcadc0001030000b200b417c6a210b200e417f6a210e200d41016a220d2004460d050c000b0b2005200641ecadc0001030000b2002200441dcadc0001030000b1033000b1032000b2000200636020820002007410276360204200020083602000240200141046a28020041ffffffff0371450d00200128020010230b0bca0302097f017e230041106b2201240002400240024002400240024002402000280200220228020041016a41004c0d002000280204220328020041016a41004c0d012000280208220441086a28020022054101200028020c22062802006b22076a220820054f0d02200720002802142802006b22052000280210220741086a28020022006a220920054f0d03024002402002290308220a42ffffffff0f560d0041002100200a200428020020084102746a3502007e2003290308422086200728020020094102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020062802006b22024d0d0620032802000d07200428020020024102746a350200210a200341003602002003200a20032903087c370308410121000b200141106a240020000f0b41a795c7004118200141086a41dcaec00041c095c7001034000b41a795c7004118200141086a41dcaec00041c095c7001034000b2008200541dcadc0001030000b2009200041dcadc0001030000b41c394c7004110200141086a41ecaec00041d494c7001034000b2002200041dcadc0001030000b41c394c7004110200141086a41ecaec00041d494c7001034000ba80301087f200028020822024102742103410021042000280200220521000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410121072004417f73200641004741016a4101716a21080c010b41002107410020046b21080b200128020822094102742103410021042001280200220121000240024003402003450d012004417f6a21042003417c6a210320002802002106200041046a21002006450d000b410021032004417f73200641004741016a4101716a21000c010b410020046b2100410121030b024020070d00410020034101736b0f0b4101210402400240024020030d0020022008490d0120092000490d02417f200220086b2203200920006b22064720032006491b22040d0020062003200320064b1b2107200120004102746a2103200520084102746a2100417f210103400240200141016a22012007490d0041000f0b2003280200210420002802002106200341046a2103200041046a2100417f200620044720062004491b2204450d000b0b20040f0b20082002418caec0001044000b20002009419caec0001044000b1000200028020020002802042001105c0bcb04010a7f230041106b220224002002410036020820024204370300200128000c2103410021040240024002400240024002400240024020012802042205200128020022064920012d00084100477222010d004100200520066b2204200420054b1b220741016a220420074f0d00200341086a21084100210441042109410021010340200828020022072005417f736a220a20074f0d02200620054f2107200520062005496b21052003280200200a4102746a280200210a024020012002280204470d0020022001417f41004100417f4100200520066b2209200920054b1b220941016a220b200b2009491b20071b20052006491b220941016a220b200b2009491b1079200228020021090b200920046a200a3602002002200141016a2201360208200441046a21042005200649200772450d000c070b0b20024100200410792002280208210b20010d042002280200200b4102746a2104200520064d0d012005417f732101200341086a21092005210703402001200928020022086a220a20014f0d0320042003280200200a4102746a280200360200200141016a2101200441046a210420062007417f6a2207490d000b200520066b200b6a210b0c030b200a200741dcadc0001030000b20052006460d010c020b200a200841dcadc0001030000b200341086a28020022052006417f736a220620054f0d022004200328020020064102746a280200360200200b41016a210b0b2002200b3602080b20002002290300370200200041086a200241086a280200360200200241106a24000f0b2006200541dcadc0001030000bfc0601047f230041d0006b2208240002400240024002402002200685200320078584500d00200220038450450d01410121090c020b417f20002004852001200585844200522000200454200120055420012005511b1b21090c010b0240200620078450450d0041ff0121090c010b411010212209450d012008420437024420082009360240200841c0006a410041041079200841306a41086a22092008280248220a41046a3602002008280240200a4102746a220a20003e020c200a20004220883e0208200a20013e0204200a20014220883e020020082008290340370330200841306a1078200841106a41086a220b20092802003602002008200829033037031041101021220a450d01200842043702442008200a360240200841c0006a41004104107920092008280248220a41046a3602002008280240200a4102746a220a20063e020c200a20064220883e0208200a20073e0204200a20074220883e020020082008290340370330200841306a1078200841206a41086a200928020036020020082008290330370320200841c0006a41086a200b280200360200200820082903103703402008200841c0006a200841206a107b0240200828022441ffffffff0371450d00200828022010230b411010212209450d012008420437024420082009360240200841c0006a410041041079200841306a41086a22092008280248220a41046a3602002008280240200a4102746a220a20043e020c200a20044220883e0208200a20053e0204200a20054220883e020020082008290340370330200841306a1078200841106a41086a220b20092802003602002008200829033037031041101021220a450d01200842043702442008200a360240200841c0006a41004104107920092008280248220a41046a3602002008280240200a4102746a220a20023e020c200a20024220883e0208200a20033e0204200a20034220883e020020082008290340370330200841306a1078200841206a41086a200928020036020020082008290330370320200841c0006a41086a200b28020036020020082008290310370340200841306a200841c0006a200841206a107b0240200828022441ffffffff0371450d00200828022010230b2008200841306a107d21090240200828023441ffffffff0371450d00200828023010230b200828020441ffffffff0371450d00200828020010230b200841d0006a240020090f0b1033000bb00703017f067e017f230041d0006b22022400024002400240200029031022032001290310220485200041186a2903002205200141186a29030022068584500d00200041086a290300210720002903002108411010212200450d022002420437024420022000360240200241c0006a410041041079200241306a41086a22092002280248220041046a360200200228024020004102746a220020083e020c200020084220883e0208200020073e0204200020074220883e020020022002290340370330200241306a1078200241106a41086a200928020036020020022002290330370310411010212200450d022002420437024420022000360240200241c0006a410041041079200241306a41086a22092002280248220041046a360200200228024020004102746a220020043e020c200020044220883e0208200020063e0204200020064220883e020020022002290340370330200241306a1078200241206a41086a200928020036020020022002290330370320200241c0006a41086a200241106a41086a280200360200200220022903103703402002200241c0006a200241206a107b0240200228022441ffffffff0371450d00200228022010230b200141086a290300210420012903002106411010212200450d022002420437024420022000360240200241c0006a410041041079200241306a41086a22002002280248220141046a360200200228024020014102746a220120063e020c200120064220883e0208200120043e0204200120044220883e020020022002290340370330200241306a1078200241106a41086a2209200028020036020020022002290330370310411010212201450d022002420437024420022001360240200241c0006a41004104107920002002280248220141046a360200200228024020014102746a220120033e020c200120034220883e0208200120053e0204200120054220883e020020022002290340370330200241306a1078200241206a41086a200028020036020020022002290330370320200241c0006a41086a200928020036020020022002290310370340200241306a200241c0006a200241206a107b0240200228022441ffffffff0371450d00200228022010230b2002200241306a107d21000240200228023441ffffffff0371450d00200228023010230b200041ff017121000240200228020441ffffffff0371450d00200228020010230b20004521000c010b2000290300200129030085200041086a290300200141086a29030085845021000b200241d0006a240020000f0b1033000bd33007017f017e017f027e017f027e1c7f23004180036b2207240002400240024002402001200284500d002003200484500d004201210820074198016a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610a70520074188016a200729039801220d20074198016a41086a290300220e2005200610a6052002200420091b21022001200320091b2104200a20072903880185200b20074188016a41086a290300858450450d01200d210a200e210b420021060c020b20004100360200200041106a4200370300200041086a42003703000c020b200741f8006a200420022005200610a705200741e8006a20072903782201200741f8006a41086a29030022032005200610a6054200200620042007290368852002200741e8006a41086a29030085845022091b21064201200520091b21082003200220091b21022001200420091b21040b200741386a200b42002004420010a605200741c8006a20024200200a420010a605200741d8006a200a42002004420010a6050240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729034042005272200729035042005272200741d8006a41086a2903002201200729033820072903487c7c2203200154724101470d00411010212209450d0d2007420437029c02200720093602980220074198026a410041041079200741f0026a41086a220920072802a002220c41046a360200200728029802200c4102746a220c200a3e020c200c200a4220883e0208200c200b3e0204200c200b4220883e020020072007290398023703f002200741f0026a1078200741a8016a41086a2009280200360200200720072903f0023703a80141101021220c450d0d2007420437029c022007200c3602980220074198026a410041041079200920072802a002220c41046a360200200728029802200c4102746a220c20043e020c200c20044220883e0208200c20023e0204200c20024220883e020020072007290398023703f002200741f0026a1078200741b8016a41086a2009280200360200200720072903f0023703b801411010212209450d0d2007420437029c02200720093602980220074198026a410041041079200741f0026a41086a220c20072802a002220941046a36020020072802980220094102746a22092008a7220f36020c200920084220883e0208200920063e0204200920064220883e020020072007290398023703f002200741f0026a1078200c280200211020072802f402211120072802f0022112200c200741b8016a41086a280200360200200720072903b8013703f00220074198026a41086a200741a8016a41086a280200360200200720072903a80137039802200741c8016a20074198026a200741f0026a107b024020072802f40241ffffffff0371450d0020072802f00210230b200741c8016a107820104101460d0120072802cc01211320072802c80121142010450d0a2012280200450d0a024020072802d0012215450d002014280200450d0b201520104d0d0b200720103602d401201520106b221641016a22174101201741014b1b221841ffffffff03712018470d0320184102742219417f4c0d0320191027221a450d0e201041ffffffff03712010470d032010410274221b417f4c0d03201b1027221c450d0e4101210f410221092012280200220c67221d211e0240200c41ffffffff034b0d0041022109201d210c4101210f034020094101200c4101711b200f6c210f200c41034b211f200920096c2109200c410176221e210c201f0d000b0b200720153602f802200720133602f402200720143602f0024104211f41041021220c450d0f200c20094101201e4101461b200f6c220f360200200742818080801037029c022007200c36029802200741d8016a200741f0026a20074198026a107b200c10230240201b450d00201b1021221f450d0f0b200741003602a0022007201b410276222036029c022007201f3602980220074198026a41002010107920072802980220072802a00222094102746a2012201041027410a1051a200741f8026a200920106a36020020072007290398023703f002410410212209450d0f2009200f360200200742818080801037029c022007200936029802200741e8016a200741f0026a20074198026a107b20091023024020072802d40120176a220920072802e001220c4d0d00200741003602a002200742043703980220074198026a41002009200c6b220c107920072802a00221090240200c450d0020072802980220094102746a4100200c41027410a0051a2009200c6a21090b200741f0026a41086a220c200936020020072007290398023703f00220072802d801211f200741f0026a200920072802e001220f107920072802f002200c28020022094102746a201f200f41027410a1051a200c2009200f6a220936020020074198026a41086a220c2009360200200720072903f00237039802024020072802dc0141ffffffff0371450d0020072802d80110230b200741d8016a41086a200c28020036020020072007290398023703d8010b20194102762121200741e8016a1078024002400240024002400240024002400240024003402007201622223602f401024020072802e001220920072802d401220c20226a220f417f736a221f2009490d00201f200941dcadc0001030000b0240024002400240024002400240024002400240024002400240024020092009200f6b220f4d0d0020072802f00122092009200c6b220c4d0d0120072802e801200c4102746a35020022024200510d02202220224100476b211620072802d8012209201f4102746a35020021012009200f4102746a3502002104200741003602f80120072004200142208684200280220137038002200741003602880220072004200120027e7d42ffffffff0f83370390022007200741f4016a3602ac022007200741d8016a3602a8022007200741d4016a3602a4022007200741e8016a3602a002200720074188026a36029c022007200741f8016a3602980220074198026a107c1a034020072802880241016a41004c0d04024020072903900242ffffffff0f560d0020074198026a107c0d010b0b200729038002210220072802f401210920072802d401210c200741003a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741b0026a200741f0026a107f20072802f001220941ffffffff03712009470d1c2009410274220c417f4c0d1c20072802e801210f02400240200c0d004104211f0c010b200c1021221f450d280b200741003602f8022007201f3602f0022007200c4102763602f402200741f0026a41002009107920072802f00220072802f802221f4102746a200f200c10a1051a200741e0026a41086a2223201f20096a360200200720072903f0023703e002410810212209450d2820092002a72224360204200920024220883e020020074282808080203702f402200720093602f002200741c0026a200741e0026a200741f0026a107b2009102320072802b802221920072802c8022225201920254b1b22144101201441014b1b220c41ffffffff0371200c470d1c200c4102742226417f4c0d1c20072802b402212720072802b00221280240024020260d00410421290c010b202610272229450d280b2014450d062025417f6a221b20254b211520072802c002212a2019417f6a221720194b0d04200c417f6a2109202920266a417c6a211e4100210f4200210203404100211f024020192017200f6b22134d0d004100211f201320174b0d00202820134102746a280200211f0b201fad21044100211f024020150d002025201b200f6b22134d0d002013201b4b0d00202a20134102746a280200211f0b024002402004201fad22037d22012004560d00200120027d220a2001560d00200a42ffffffff0f832104420021020c010b20044280808080108420027d20037d2104420121020b200c20094d0d09201e20043e0200201e417c6a211e2009417f6a2109200f41016a220f2014490d000c060b0b200f200941dcadc0001030000b200c200941dcadc0001030000b41c0adc000411941bcacc000102d000b41a795c7004118200741f0026a41dcaec00041c095c7001034000b200c417f6a2109202920266a417c6a211f4100211e4200210203404100210f024020150d004100210f2025201b201e6b22134d0d004100210f2013201b4b0d00202a20134102746a280200210f0b024002404200200fad22017d22044200520d00200420027d22032004560d00200342ffffffff0f832104420021020c010b428080808010200220017c7d2104420121020b200c20094d0d04201f20043e0200201f417c6a211f2009417f6a2109201e41016a221e2014490d000b0b41012113200250450d010b410021130b0240202741ffffffff0371450d00202810230b20072802d401221f20072802f401220f6a2215201f490d05200f20154f0d01200f417f7321090340200c200c200f6a20096a221e4d0d03200920072802e00122146a220f20094f0d0420072802d801200f4102746a2029201e4102746a2802003602002009417f6a210920072802f401210f201f417f6a221f0d000c050b0b2009200c41ecadc0001030000b201f450d020c030b20252019202520194b1b22074101200741014b1b200f6a20096a200c41dcadc0001030000b200f201441ecadc0001030000b200c200c2015417f7322096a200f6a220f4d0d0220072802e001220c20096a2209200c4f0d0320072802d80120094102746a2029200f4102746a28020036020020072802f401210f0b2018200f417f736a220920184f0d03201a20094102746a202436020002402013450d00201820072802f401417f736a220920184f0d05201a20094102746a22092009280200417f6a36020020072802f401210920072802d401210c200741003a00f8022007200c20096a3602f402200720093602f0022007200741d8016a3602fc02200741d0026a200741f0026a107f20072802f001220941ffffffff03712009470d0f2009410274220c417f4c0d0f20072802e801210f02400240200c0d004104211f0c010b200c1021221f450d1b0b200741003602f8022007201f3602f0022007200c4102763602f402200741f0026a41002009107920072802f00220072802f802221f4102746a200f200c10a1051a2023201f20096a360200200720072903f0023703e002200741f0026a200741e0026a200741d0026a107a024020072802d401220920072802f40122146a220c2009490d00024002402014200c4f0d00200c417f73210920072802f002211320072802f802210f2014211f0340200f200f201f6a20096a221f4d0d0a200920072802e00122156a221e20094f0d0b20072802d801201e4102746a2013201f4102746a280200360200200941016a210920072802f401211f2014200c417f6a220c490d000c020b0b20090d0120072802f802210f2014211f0b201f2014417f7322096a220c200f6a221f200c4f0d0920072802e001220c20096a2209200c4f0d0a20072802d80120094102746a20072802f002201f4102746a2802003602000b024020072802f40241ffffffff0371450d0020072802f00210230b20072802d40241ffffffff0371450d0020072802d00210230b02402026450d00202910230b024020072802c40241ffffffff0371450d0020072802c00210230b20220d000b0240201d0d0020072802e001211020072802dc01212020072802d801210f201c1023410021090c130b4101210920072802d401220c4101460d114100200c6b2114201d411f7121134100201d6b411f7121152010410274201c6a417c6a210c417f210903400240200920072802e001221f6a220f2009490d00200f201f41dcadc0001030000b201f200f417f6a221e4d0d09201020096a221f20104f0d0a200c20072802d801221f201e4102746a280200201574201f200f4102746a28020020137672360200200c417c6a210c20142009417f6a2209460d110c000b0b200f200c41dcadc0001030000b2009200c41ecadc0001030000b2009201841ecadc0001030000b2009201841dcadc0001030000b201f200f41dcadc0001030000b201e201541ecadc0001030000b201f200f41dcadc0001030000b2009200c41ecadc0001030000b200f417f6a201f41dcadc0001030000b201f201041ecadc0001030000b4100410041ccaec0001030000b200741286a200729035820032008200610a70520004100360200200041106a200741286a41086a290300370300200041086a20072903283703000c0f0b20074198026a41086a200741c8016a41086a280200221f360200200720072903c80137039802201f4101201f41014b1b221e41ffffffff0371201e470d00201e410274221b417f4c0d0002400240201b0d00410421170c010b201b10272217450d0c0b201f450d022017201e410274201f4102746b6a210c201f417f6a2114201e201f6b2113200f4101200f41014b1bad21024200210441002109200728029802210f0340201e201320096a22154d0d02200c2004422086200f35020084220420028022013e020020142009460d03200c41046a210c200f41046a210f2004200120027e7d2104201f200941016a22094b0d000b2009201f41dcadc0001030000b1032000b2015201e41ecadc0001030000b2007201e3602f8022007201b4102763602f402200720173602f002200728029c0241ffffffff0371450d0720072802980210230c070b20072802d40121090b20072802e001220c200c20096b220f4d0d012010201020096b22094d0d02201c20094102746a20072802d801200f4102746a280200201d411f717636020041012109201c210f0b024020072802ec0141ffffffff0371450d0020072802e80110230b2009450d0320072802dc0141ffffffff0371450d0320072802d80110230c030b200f200c41dcadc0001030000b2009201041ecadc0001030000b4100211a0240201341ffffffff0371450d00201410230b0b410410212209450d022009410036020041041021220c450d02200c41003602004101211e02400240201a0d002009211a4101212141012118200c210f41012120410121100c010b20091023200c10230b2007201836028002200720213602fc012007201a3602f801200720103602a0022007202036029c022007200f3602980220074198026a1078420021020240024020072802a00222094105744180014d0d00421d21040c010b4100211e024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211f0240200c200f470d00201fad21040c010b200c41786a210f201fad2104200741206a211f4120210c420021020340200741186a200f20096a3502004200200c41e0007110a405201f29030020027c2007290318220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c0241ffffffff0371450d0020072802980210230b201e0d030240200420084201882006423f8684562002200642018822045620022004511b450d0020074188026a41086a200741f8016a41086a280200360200200720072903f80137038802411010212209450d022007420437029c02200720093602980220074198026a410041041079200741f0026a41086a220920072802a002220c41046a360200200728029802200c4102746a220c428080808010370208200c420037020020072007290398023703f002200741f0026a107820074198026a41086a2009280200360200200720072903f00237039802200741f8016a20074188026a20074198026a107a200728029c0241ffffffff0371450d0020072802980210230b200741f0026a41086a200741f8016a41086a280200360200200720072903f8013703f0020b200741f0026a107820074198026a41086a2209200741f0026a41086a280200360200200720072903f0023703980220074198026a10784200210202400240200928020022094105744180014d0d00421d21044101211e0c010b4100211e024020090d00420021040c010b200728029802220c200941027422096a417c6a220f280200211f0240200c200f470d00201fad21040c010b200c41786a210f201fad2104200741106a211f4120210c420021020340200741086a200f20096a3502004200200c41e0007110a405201f29030020027c2007290308220220047c2204200254ad7c2102200c41206a210c2009417c6a22094104470d000b0b0240200728029c0241ffffffff0371450d0020072802980210230b02400240201e450d00200041ccafc000360204200041086a4119360200410121090c010b200041106a2002370300200041086a2004370300410021090b20002009360200201141ffffffff0371450d03201210230c030b1033000b102a000b200720043e029c02200741acaec0003602980241fcaec000412f20074198026a41acafc00041bcafc0001034000b20074180036a24000b1c00200128021841e4aac200410f2001411c6a28020028020c1100000bb00301047f230041c0006b2202240020002802002103410121000240200128021841b29cc000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11030042e4aec285979ba58811520d012002200036020c2002410936021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241c09cc0003602282002200241106a36023820042005200241286a10310d020c010b2002200036020c2002410836021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241c09cc0003602282002200241106a36023820042005200241286a10310d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241d09cc0003602282002200241106a36023820002001200241286a103121000b200241c0006a240020000bed04020b7f037e230041206b22022400024002400240024020012802082203410c6c41046a2204417f4c0d00200128020021050240024020040d00410121060c010b200410212206450d020b2002410036020820022004360204200220063602002003200210610240024020030d002002280208210420022802042107200228020021080c010b20052003410c6c6a21092005210603402006280200210a200641086a280200220420021061024002402002280204220b2002280208220c6b2004490d0020022802002108200b21070c010b200c20046a2208200c490d05200b41017422072008200720084b1b22074100480d0502400240200b0d00024020070d00410121080c020b2007102122080d010c080b20022802002108200b2007460d002008200b200710252208450d070b20022007360204200220083602000b2008200c6a200a200410a1051a2002200c20046a22043602082006410c6a22062009470d000b0b2004ad4220862008ad8410012204290000210d200441086a290000210e200441106a290000210f200241186a2206200441186a290000370300200241106a220c200f370300200241086a220b200e3703002002200d37030020041023200041186a2006290300370000200041106a200c290300370000200041086a200b2903003700002000200229030037000002402007450d00200810230b02402003450d002003410c6c21062005210403400240200441046a280200450d00200428020010230b2004410c6a2104200641746a22060d000b0b0240200141046a2802002204450d002004410c6c450d00200510230b200241206a24000f0b1032000b1033000b102c000b102a000b910301067f230041106b2202240002400240024002400240024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0120024100360208200242013703000c020b1032000b200410212205450d03200241003602082002200436020420022005360200024020030d00200541003a0000410121040c030b20040d010b410110212205450d0420024101360204200220053602000b200541013a000020024101360208200141086a2802002204200210610240024020022802042206200228020822056b2004490d00200228020021010c010b200520046a22012005490d03200641017422072001200720014b1b22074100480d030240024020060d00024020070d00410121010c020b2007102122010d010c060b2002280200210120062007460d0020012006200710252201450d050b20022007360204200220013602000b200120056a2003200410a1051a200520046a21040b20002002290300370200200041086a2004360200200241106a24000f0b1033000b102c000b102a000b900706017f017e067f017e057f017e230041306b220124000240024010022202422088a722030d00410121040c010b2002a721040b2001200336022420012004360220024002400240024002402003450d0020042d0000210520012003417f6a3602242001200441016a360220200541014b0d00024020050e020004000b200141186a200141206a10880120012802180d0020012802242206200128021c2205490d002005417f4c0d020240024020050d00410121070c010b200510272207450d02200720012802202208200510a1051a2001200620056b3602242001200820056a3602200b2007450d00200141106a200141206a1088012005ad22024220862002842209a7210a024020012802100d002001280214220b2001280224410c6e22052005200b4b1bad420c7e2202422088a70d032002a72205417f4c0d030240024020050d004104210c0c010b20051021220c450d030b2005410c6ead21020240200b450d00410021050340200141086a200141206a10880102400240024020012802080d002001280224220d200128020c2206490d002006417f4c0d080240024020060d00410121080c010b200610272208450d0820082001280220220e200610a1051a2001200d20066b3602242001200e20066a3602200b20052002a7470d02024002400240200541016a220d2005490d002005410174220e200d200e200d4b1bad420c7e220f422088a70d00200fa7220d4100480d00024020050d00200d0d024104210c0c050b2005410c6c2205200d460d04024020050d00200d0d024104210c0c050b200c2005200d1025220c450d020c040b102c000b200d1021220c0d020b102a000b02402005450d002005410c6c2106200c210503400240200541046a280200450d00200528020010230b2005410c6a2105200641746a22060d000b0b2002a72205450d042005410c6c450d04200c10230c040b2002422088a72105200d410c6ead21020b200c2005410c6c6a220d2006ad220f422086200f84370204200d2008360200200242ffffffff0f83200541016a2205ad422086842102200b417f6a220b0d000b0b200c450d002007450d012009422088a721050c050b200a450d00200710230b418cb2c000412e200141286a41bcb3c00041bcb2c0001034000b1033000b1032000b410021070b2000200a36020420002007360200200041106a20023702002000410c6a200c360200200041086a200536020002402003450d00200410230b200141306a24000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000b810103017f017e027f230041106b220324000240024002402002ad4220862000ad8410032204428080808010540d00410121022004a722052d0000220641014b0d0020060e020102010b418cb2c000412e200341086a41bcb3c00041bcb2c0001034000b410021020b2005102302402001450d00200010230b200341106a240020020b21002000417f6a41ff01712002ad4220862001ad842004ad4220862003ad8410000baa0201067f230041206b22022400024002402001422088a722030d00410121040c010b2001a721040b200220033602142002200436021002402003450d0020042d0000210520022003417f6a3602142002200441016a360210200541014b0d0041002103024002400240024020050e020100010b200241086a200241106a10880120022802080d0320022802142206200228020c2205490d032005417f4c0d010240024020050d00410121030c010b200510272203450d03200320022802102207200510a1051a2002200620056b3602142002200720056a3602100b2003450d032005ad220142208620018421010b200020013702042000200336020020041023200241206a24000f0b1032000b1033000b418cb2c000412e200241186a41bcb3c00041bcb2c0001034000b9d0102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510062207422088a72204450d002007a722052d0000220341014b0d00410021010240024020030e020100010b2004417f6a4104490d0120052800012102410121010b200510232000200236020420002001360200200641106a24000f0b418cb2c000412e200641086a41bcb3c00041bcb2c0001034000bcf0303017f017e037f230041d0006b2203240002402001200210072204422088a72201450d002004a722052d0000220241014b0d002001417f6a210602400240024020020e020001000b41002101200341003a0049200541016a21070240034020062001460d01200341286a20016a200720016a2d00003a00002003200141016a22023a00492002210120024121470d000b200341106a200341316a290000370300200341186a200341396a290000370300200341206a200341c1006a2900003703002003200329002937030820032d0028210241002106200341086a21010c020b200141ff0171450d02200341003a00490c020b2006450d0120052d0001220241034f0d01200341086a41186a200341286a41186a290000370300200341086a41106a200341286a41106a290000370300200341086a41086a200341286a41086a2900003703002003200329002837030841012106200341086a21010b200020023a0001200020063a0000200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a29000037000020051023200341d0006a24000f0b418cb2c000412e200341286a41bcb3c00041bcb2c0001034000be90503017f017e0b7f230041e0006b220224002002200136020c02400240024002402002410c6a10082203422088a722010d0020004100360208200042013702000c010b2002200136021420022003a722043602102002200241106a1088010240024020022802000d0020022802042205200228021422064105762201200120054b1b22014105742207417f4c0d040240024020010d00410121080c010b200710212208450d040b2001ad210302402005450d00410021094100210a03402006210b200241003a0058200a41016a210a410021010240024002400340200b2001460d01200241386a20016a200228021022072d00003a00002002200741016a3602102002200141016a22073a00582007210120074120470d000b200241186a41186a220c200241386a41186a290300370300200241186a41106a220d200241386a41106a290300370300200241186a41086a220e200241386a41086a2903003703002002200229033837031820092003a7470d020240200941016a22012009490d00200941017422062001200620014b1b220141ffffff3f712001470d002001410574220141004e0d020b102c000b200241003602140240200141ff0171450d00200241003a00580b200342ffffff3f83500d04200810230c040b024002400240024020090d0020010d01410121080c030b200941057422092001460d02024020090d0020010d01410121080c030b20082009200110252208450d010c020b2001102122080d010b102a000b2003422088a721092001410576ad21030b200b20076b2106200820094105746a22012002290318370000200141186a200c290300370000200141106a200d290300370000200141086a200e290300370000200342ffffffff0f83200941016a2209ad422086842103200a2005470d000b2002200b20076b3602140b20080d010b418cb2c000412e200241386a41fcb1c00041fcb0c0001034000b2000200337020420002008360200200410230b200241e0006a24000f0b1033000b1032000b970403017f017e017f23004190016b22052400200520013602040240200541046a20022004ad4220862003ad8410092206422088a72201450d002006a722072d0000220341014b0d004100210202400240024020030e020100010b41002102200541003a008801200741016a21042001417f6a2101034020012002460d02200541c8006a20026a200420026a2d00003a00002005200241016a22033a00880120032102200341c000470d000b200541086a41386a200541c8006a41386a290300370300200541086a41306a200541c8006a41306a290300370300200541086a41286a200541c8006a41286a290300370300200541086a41206a200541c8006a41206a290300370300200541086a41186a200541c8006a41186a290300370300200541086a41106a200541c8006a41106a290300370300200541086a41086a200541c8006a41086a29030037030020052005290348370308410121020b200020023a000020002005290308370001200041096a200541106a290300370000200041116a200541186a290300370000200041196a200541206a290300370000200041216a200541286a290300370000200041296a200541306a290300370000200041316a200541386a290300370000200041396a200541c0006a2903003700002007102320054190016a24000f0b200241ff0171450d00200541003a0088010b418cb2c000412e200541c8006a41bcb3c00041bcb2c0001034000b980401067f20012802042102024002400240024020012802004101470d002001410c6a280200220141046a2203417f4c0d0102400240024002400240024002400240024002402003450d00200310212204450d0c200141c000490d04200141808001490d052001418080808004490d06200441033a00002003417f6a41034d0d01200321050c030b41012103410110212204450d07200441033a0000410521050c010b200341017422064105200641054b1b22054100480d0720032005460d010b20042003200510252204450d050b20042001360001410521060c030b200420014102743a000041012106200321050c020b02400240200341014d0d00200321050c010b2003200341017422064102200641024b1b2205460d0020042003200510252204450d030b41022106200420014102744101723b00000c010b02400240200341034d0d00200321050c010b200341017422064104200641044b1b22054100480d0320032005460d0020042003200510252204450d020b20042001410274410272360000410421060b0240200520066b2001490d00200521030c060b200620016a22032006490d01200541017422072003200720034b1b22034100480d0120052003460d05200420052003102522040d050b102a000b102c000b20002002200141086a28020010740f0b1032000b1033000b200420066a2002200110a1051a2000200620016a36020820002003360204200020043602000b1c00200128021841e4aac200410f2001411c6a28020028020c1100000b8b0101017f4197acc500ad4280808080d00184100a024002400240024020002d00000e0400010203000b200041046a290200100a0f0b41a3b6c000ad4280808080e00184100a0f0b4199b6c000ad4280808080a00184100a0f0b2000310001100b200041026a310000100b0240200041046a2802002201450d00200041086a3502004220862001ad84100a0b0b1c00200128021841e4aac200410f2001411c6a28020028020c1100000bc10304017f027e067f017e230041206b22032400200229030021042001290300210520022802102106200141106a200141186a2207280200200241186a2208280200220910950120012802102007280200220a410c6c6a20062009410c6c10a1051a200841003602002007200a20096a2209360200200341086a200936020020032001290210370300200228021c21082001411c6a200141246a2207280200200241246a220a2802002209109501200128021c2007280200220b410c6c6a20082009410c6c10a1051a200a41003602002007200b20096a2209360200200341106a41086a20093602002003200129021c370310427f200520047c220420042005541b2105200229030822042001290308220c200c2004561b21040240024020012d0028450d004101210120022d00280d010b410021010b20002005370300200020032903003702102000200329031037021c200020013a002820002004370308200041186a200341086a280200360200200041246a200341106a41086a2802003602000240200241146a2802002201450d002001410c6c450d00200610230b0240200241206a2802002201450d002001410c6c450d00200810230b200341206a24000bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad420c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003410c6c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a2001410c6e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42e0007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341e0006c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141e0006e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff3f712001470d00200141057422014100480d00024020030d0020010d02410821020c040b20002802002102200341057422032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014105763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42287e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341286c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141286e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad4288027e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b2000280200210220034188026c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014188026e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff3f712001470d00200141057422014100480d00024020030d0020010d02410121020c040b20002802002102200341057422032001460d03024020030d0020010d02410121020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014105763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c4007e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341c4006c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141c4006e3602000b0bb40101027f0240200041046a280200220320016b20024f0d000240024002400240200120026a22042001490d00200341017422022004200220044b1b220420046a22012004490d0020014100480d00024020030d0020010d02410221030c040b2000280200210320022001460d03024020020d0020010d02410221030c040b20032002200110252203450d020c030b102c000b2001102122030d010b102a000b20002003360200200041046a20014101763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c1007e2204422088a70d002004a722014100480d00024020030d0020010d02410121020c040b20002802002102200341c1006c22032001460d03024020030d0020010d02410121020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141c1006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42147e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341146c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141146e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff1f712001470d00200141067422014100480d00024020030d0020010d02410821020c040b20002802002102200341067422032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014106763602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff00712001470d00200141047422014100480d00024020030d0020010d02410421020c040b20002802002102200341047422032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014104763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c8007e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341c8006c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141c8006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42247e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341246c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141246e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad421c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003411c6c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a2001411c6e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42307e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341306c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141306e3602000b0bc00101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffffff01712001470d00200141037422014100480d00024020030d0020010d02410421020c040b20002802002102200341037422032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014103763602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad422c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003412c6c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a2001412c6e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42347e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341346c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141346e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff3f712001470d00200141057422014100480d00024020030d0020010d02410421020c040b20002802002102200341057422032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014105763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42d8007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341d8006c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141d8006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42287e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341286c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141286e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42d0027e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341d0026c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141d0026e3602000b0bbc0102027f017e0240200041046a2802002001470d000240024002400240200141016a22022001490d00200141017422032002200320024b1bad42c8037e2204422088a70d002004a722024100480d00024020010d0020020d02410821030c040b20002802002103200141c8036c22012002460d03024020010d0020020d02410821030c040b20032001200210252203450d020c030b102c000b2002102122030d010b102a000b20002003360200200041046a200241c8036e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42b0027e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341b0026c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141b0026e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42387e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341386c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141386e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42227e2204422088a70d002004a722014100480d00024020030d0020010d02410221020c040b20002802002102200341226c22032001460d03024020030d0020010d02410221020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141226e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42187e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341186c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141186e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42c0017e2204422088a70d002004a722014100480d00024020030d0020010d02410121020c040b20002802002102200341c0016c22032001460d03024020030d0020010d02410121020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141c0016e3602000b0bb90102027f017e0240200041046a2802002001470d000240024002400240200141016a22022001490d00200141017422032002200320024b1bad42187e2204422088a70d002004a722024100480d00024020010d0020020d02410821030c040b20002802002103200141186c22012002460d03024020010d0020020d02410821030c040b20032001200210252203450d020c030b102c000b2002102122030d010b102a000b20002003360200200041046a200241186e3602000b0bbf0101017f0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1b220141ffffff1f712001470d00200141067422014100480d00024020030d0020010d02410421020c040b20002802002102200341067422032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a20014106763602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42d0007e2204422088a70d002004a722014100480d00024020030d0020010d02410821020c040b20002802002102200341d0006c22032001460d03024020030d0020010d02410821020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141d0006e3602000b0bc10102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42f0007e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341f0006c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141f0006e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad42307e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b20002802002102200341306c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a200141306e3602000b0bbe0102017f017e0240200041046a280200220320016b20024f0d000240024002400240200120026a22022001490d00200341017422012002200120024b1bad423c7e2204422088a70d002004a722014100480d00024020030d0020010d02410421020c040b200028020021022003413c6c22032001460d03024020030d0020010d02410421020c040b20022003200110252202450d020c030b102c000b2001102122020d010b102a000b20002002360200200041046a2001413c6e3602000b0bf90403027f017e057f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341eecec000ad4280808080800284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b8b0b04047f017e127f037e230041d0036b22012400200141f0006a41186a4200370300200141f0006a41106a22024200370300200141f0006a41086a2203420037030020014200370370418fcdc200ad4280808080f00084100c220429000021052003200441086a290000370300200120053703702004102341b8dbc100ad4280808080900184100c22042900002105200141206a41086a2206200441086a2900003703002001200537032020041023200220012903202205370300200141c0006a41086a22042003290300370300200141c0006a41106a2005370300200141c0006a41186a200629030037030020012001290370370340200141f0006a200141c0006a10ba0102400240024020012903704202510d002000280208210320002802042107200028020021082001200228020010b801200141f0006a200128020022092001280208220a10bb012004200141f0006a410c6a290200370300200120012902743703400240024020012802704101460d00200141106a410c6a4100360200200142003703100c010b200141106a41086a200141c0006a41086a290300370300200120012903403703100b02402003450d002008200341246c6a210b20014184016a210c2001411c6a210d200141106a410472210e200141e8006a210f200141c0006a41206a211020082111034020112802202112200141206a41186a2213201141186a290000370300200141206a41106a2214201141106a290000370300200141206a41086a2215201141086a290000370300200120112900003703200240024020012802142206450d00200128021821160c010b200141f0006a410041e00210a0051a200f410036020020104200370300200141c0006a41186a22004200370300200141c0006a41106a22034200370300200141c0006a41086a220442003703002001420037034041940310212206450d0541002116200641003b010620064100360200200641086a200141f0006a41e00210a1051a20064190036a200f28020036020020064188036a201029030037020020064180036a2000290300370200200641f8026a2003290300370200200641f0026a2004290300370200200620012903403702e80220014100360218200120063602140b201141246a2111024002400340200641086a210320062f01062217410574210041002104024003402000450d01200141206a2003412010a3052202450d03200041606a2100200441016a2104200341206a21032002417f4a0d000b2004417f6a21170b02402016450d002016417f6a2116200620174102746a4194036a28020021060c010b0b200141c0006a41186a20132903002205370300200141c0006a41106a20142903002218370300200141c0006a41086a2015290300221937030020012001290320221a370340200c201a370200200c41086a2019370200200c41106a2018370200200c41186a20053702002001200d360280012001201736027c2001200e3602782001200636027420014100360270200141f0006a410010bc0121000c010b200620044102746a41e8026a21000b2000200028020020126a3602002001200128021020126a3602102011200b470d000b0b02402007450d00200741246c450d00200810230b200141fc006a200141106a41086a290300370200200120012903102205370274200141013602702001410036024820014201370340410410212200450d0220002005a73600002001200036024020014284808080c000370244200141f0006a41086a2203200141c0006a10bd0120012802442100200aad4220862009ad84200135024842208620012802402204ad84100e02402000450d00200410230b02402001280270450d00200310be010b2001280204450d01200910230c010b200041046a2802002203450d00200341246c450d00200028020010230b200141d0036a24000f0b102a000bd60202057f027e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841010108b0102400240200228020822010d00200042023703000c010b200228020c210302400240200241106a28020022044104490d0020044104460d0020012d0004220541014b0d0020012800002106420021070240024020050e020100010b2004417b6a4108490d0120012900052108420121070b20002008370308200041106a20063602000c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024180c5c6003602382002200241286a360248200241346a4184a5c200200241386a10311a2002350220422086200235021884100a0240200228021c450d00200228021810230b420221070b200020073703002003450d00200110230b200241d0006a24000bcd0b030e7f047e087f230041a0046b220324002003200236021420032001360210200341186a2002ad4220862001ad841010108b0102400240200328021822040d00200041003602000c010b200328021c21052003200341206a280200220136022c2003200436022802400240024020014104490d0020032001417c6a36022c2003200441046a36022820042800002106200341086a200341286a10880120032802080d00200328020c21072003410036024820034100360240200341c0006a41086a210802400240024002402007450d00200341d4016a2109200328022c210a200341b8016a210b4100210c034041002101200341003a00e001200c41016a210c024002400340200a2001460d01200341c0016a20016a2003280228220d2d00003a00002003200d41016a3602282003200141016a22023a00e0012002210120024120470d000b20034190016a41086a220e200341c0016a41086a29030037030020034190016a41106a220f200341c0016a41106a29030037030020034190016a41186a2210200341c0016a41186a290300370300200320032903c001370390012003200a20026b220136022c200141044f0d010c050b2003410036022c200141ff0171450d04200341003a00e001410021010c050b200341d0006a41086a200e2903002211370300200341d0006a41106a200f2903002212370300200341d0006a41186a20102903002213370300200320032903900122143703502003200d41056a36022820032001417c6a220a36022c200d2800012115200341f0006a41186a22162013370300200341f0006a41106a22172012370300200341f0006a41086a22182011370300200320143703700240024020032802402219450d002003280244211a0c010b200341c0016a410041e00210a0051a200b410036020020034190016a41206a2201420037030020104200370300200f4200370300200e4200370300200342003703900141940310212219450d034100211a201941003b010620194100360200201941086a200341c0016a41e00210a1051a20194190036a200b28020036020020194188036a200129030037020020194180036a2010290300370200201941f8026a200f290300370200201941f0026a200e29030037020020192003290390013702e80220034100360244200320193602400b024002400340201941086a210220192f0106221b41057421014100210d024003402001450d01200341f0006a2002412010a305221c450d03200141606a2101200d41016a210d200241206a2102201c417f4a0d000b200d417f6a211b0b0240201a450d00201a417f6a211a2019201b4102746a4194036a28020021190c010b0b201020162903002211370300200f20172903002212370300200e201829030022133703002003200329037022143703900120092014370200200941086a2013370200200941106a2012370200200941186a2011370200200320083602d0012003201b3602cc01200320193602c401200341003602c0012003200341c0006a3602c801200341c0016a201510bc011a0c010b2019200d4102746a41e8026a20153602000b200c2007470d000b0b410121010c020b102a000b410021010b200341306a41086a20082802002202360200200320032903402211370330200341c0016a41086a2002360200200320113703c00120010d01200341c0016a10be010b41002101200341003602980120034201370390012003410a3602742003200341106a360270200320034190016a360250200341d4016a4101360200200342013702c40120034180c5c6003602c0012003200341f0006a3602d001200341d0006a4184a5c200200341c0016a10311a20033502980142208620033502900184100a200328029401450d0120032802900110230c010b20034190016a41086a200341c0016a41086a2802002201360200200320032903c00122113703900120002006360204200041086a2011370200200041106a2001360200410121010b200020013602002005450d00200410230b200341a0046a24000bed0701087f23004190046b2202240020002802102203200328020041016a360200200241086a2203200041086a29020037030020022000290200370300200241306a41186a2000412c6a290000370300200241306a41106a200041246a290000370300200241306a41086a2000411c6a29000037030020022000290014370330200241d0006a2002200241306a200110b40402400240024020022d00504101470d002003200241d9006a290000370300200241106a200241e1006a290000370300200241186a200241e9006a29000037030020022002290051370300200241d0006a412c6a280200210120024188016a280200210420024184016a280200210320024180016a2802002105200228028c012106200241f8006a28020022002802002207450d0120002f01042108200241f4006a2802002109200241d0006a410172210003402002200841ffff037136022c20022001360228200220073602242002200941016a360220200241306a41186a200241186a2201290300370300200241306a41106a200241106a2207290300370300200241306a41086a200241086a220829030037030020022002290300370330200241d0006a200241206a200241306a20052003200410b50420022d00504101470d032008200041086a2900003703002007200041106a2900003703002001200041186a29000037030020022000290000370300200228027c2101200228028801210420022802840121032002280280012105200228027822082802002207450d0220082f01042108200228027421090c000b0b200241d0006a41086a280200200241d0006a41106a2802004102746a41e8026a21060c010b200241d0006a410272410041be0310a0051a02400240024041c40310212200450d0020004100360200200041046a200241d0006a41c00310a1051a200020012802002207360294032001200036020020012001280204220841016a360204200741003b010420072000360200200241d0006a41186a200241186a290300370300200241d0006a41106a200241106a290300370300200241d0006a41086a200241086a2903003703002002200229030037035020082004470d0120002f01062201410a4b0d02200020014105746a220441206a200241d0006a41186a290300370000200441186a200241d0006a41106a290300370000200441106a200241d0006a41086a290300370000200441086a2002290350370000200020014102746a41e8026a20053602002000200141016a22014102746a4194036a2003360200200020013b0106200320013b0104200320003602000c030b102a000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000b20024190046a240020060bf90403067f027e017f230041c0006b22022400200041086a28020022032001106102400240024020002802002204450d00024020002802042205450d002005210620042107034020072802940321072006417f6a22060d000b200421060340200620062f01064102746a4194036a28020021062005417f6a22050d000b200241186a2105200721040c020b200241186a2105200421060c010b410021042002410036021c200241186a21050c010b2002200636021c200241246a20062f010636020020022000360220200241003602180b200241086a41086a200541086a2902002208370300200220052902002209370308200241246a4100360200200241306a2008370300200220003602202002200436021c20024100360218200220093703282002200336023802402003450d00034020022003417f6a360238200241186a410020041b2207280200210620072802082100024002400240200728020c2205200728020422032f01064f0d00200321040c010b0240034020032802002204450d01200641016a210620032f0104210520042103200520042f0106490d020c000b0b2000ad2108410021040c010b2005ad4220862000ad8421080b2008422088a7220041016a21052008a7210a0240024020060d00200421030c010b200420054102746a4194036a2802002103410021052006417f6a2206450d00034020032802940321032006417f6a22060d000b0b2007200536020c2007200a36020820072003360204200741003602002001200420004105746a41086a412010622002200420004102746a41e8026a28020036023c20012002413c6a4104106220022802382203450d01200228021c21040c000b0b200241c0006a24000bb50201047f024020002802002201450d0020002802082102024020002802042200450d00034020012802940321012000417f6a22000d000b0b02402002450d004100210303400240024002402001450d002002417f6a2102200320012f0106490d0141002104034002400240200128020022000d0041002103410021000c010b200441016a210420012f010421030b2001102320002101200320002f01064f0d000b200341016a2103024020040d00200021010c030b200020034102746a4194036a2802002101410021032004417f6a2200450d02034020012802940321012000417f6a22000d000c030b0b41d095c700412b41c491c700102d000b200341016a21030b20020d000b0b2001450d0020012802002100200110232000450d00034020002802002101200010232001210020010d000b0b0baa0703027f017e067f230041e0006b22032400418fcdc200ad4280808080f00084100c22042900002105200341086a200441086a290000370300200320053703002004102341ecc4c000ad4280808080b00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2201200341346a360200200341003a00582003200341c0006a41086a220636024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a1065024002400240024002400240412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2201200328023822086a2202417f4c0d01200328023021092003280220210a024002402002450d00200210212204450d022002410f4d0d01200221060c050b200241017422044110200441104b1b2206102122040d040c060b200241017422064110200641104b1b220641004e0d020c040b1033000b1032000b20022006460d0020042002200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062001200620014b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620016b2008490d002006210b0c010b200120086a2001490d012006410174220b2002200b20024b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420016a2009200810a1051a200020023602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000baa0703027f017e067f230041e0006b22032400418fcdc200ad4280808080f00084100c22042900002105200341086a200441086a290000370300200320053703002004102341ffc4c000ad4280808080b00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2201200341346a360200200341003a00582003200341c0006a41086a220636024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a1065024002400240024002400240412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2201200328023822086a2202417f4c0d01200328023021092003280220210a024002402002450d00200210212204450d022002410f4d0d01200221060c050b200241017422044110200441104b1b2206102122040d040c060b200241017422064110200641104b1b220641004e0d020c040b1033000b1032000b20022006460d0020042002200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062001200620014b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620016b2008490d002006210b0c010b200120086a2001490d012006410174220b2002200b20024b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420016a2009200810a1051a200020023602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000bae0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a29000037030020022004370300200310234192c5c000ad4280808080d00184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bf90403027f017e057f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a29000037030020022004370300200310234180dcc100ad4280808080d00284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bae0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341bbacc300ad4280808080a00184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bd70503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a2900003703002002200437030020031023419fc5c000ad4280808080900184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240410410212203450d0020034104412010252203450d0520032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a290000370000200128022021052003412041c00010252201450d052001200536002020022001ad4280808080c00484100d220329000037033020031023200241c4006a200141246a360200200241003a0048200220013602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200110232002280228220641206a2203417f4c0d0120022802202107024002402003450d00200310212201450d022003410f4d0d01200321080c050b200341017422014110200141104b1b2208102122010d040c060b200341017422054110200541104b1b220841004e0d020c040b1033000b1032000b20032008460d0020012003200810252201450d020b20012002290300370000200141086a200241086a2903003700000240024020084170714110460d00200821050c010b200841017422054120200541204b1b22054100480d0120082005460d0020012008200510252201450d020b20012002290310370010200141186a200241106a41086a29030037000002400240200541606a2006490d00200521080c010b2006415f4b0d01200541017422082003200820034b1b22084100480d0120052008460d0020012005200810252201450d020b200141206a2007200610a1051a20002003360208200020083602042000200136020002402002280224450d00200710230b200241d0006a24000f0b102c000b102a000bae0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341e2c4c000ad4280808080a00184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bcc0503027f017e047f230041e0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341dcc4c000ad4280808080e00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000bae0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341d6c4c000ad4280808080e00084100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bfc0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241186a41086a200341086a29000037030020022004370318200310234192c5c000ad4280808080d00184100c22032900002104200241286a41086a200341086a290000370300200220043703282003102320012802002101024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d2201290000370348200110232002410c6a200341206a360200200241003a0010200220033602082002200241c8006a41086a3602042002200241c8006a360200200241386a20021065200310232002280240220541206a2201417f4c0d0120022802382106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422074110200741104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290318370000200341086a200241186a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290328370010200341186a200241286a41086a2903003700000240200841606a20054f0d002005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a0240200228023c450d00200610230b20022003200110c901200241286a41086a2207200241086a280200360200200220022903003703280240200228020c2201450d002000200229032837020020002002290310370210200041086a20072802003602000b2000200136020c20031023200241d0006a24000f0b102c000b102a000b990502087f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d002000410036020c0c010b200328021421042003200341186a2802002202360224200320013602200240024020024104490d002003200141046a36022020032002417c6a220536022420054104490d00200128000021062003200141086a3602202003200241786a220536022420054104490d00200128000421052003200241746a36022420032001410c6a360220200128000821072003200341206a10880120032802000d002003280224220820032802044102742202490d0002400240024002402002417f4c0d000240024020020d00410121090c010b200210272209450d0220092003280220220a200210a1051a2003200820026b3602242003200a20026a3602200b2009450d0402402002ad220b422086200b84220b422088a722020d00200ba721020c030b024020092002724103710d00200ba722024103710d0020024102762208450d03200b422288a7210a0c040b200ba7450d04200910230c040b1032000b1033000b4100210a02402002450d00200910230b41002108410421090b41000d002009450d00200020083602102000200936020c200020073602082000200536020420002006360200200041146a200a3602000c010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b2000410036020c0b2004450d00200110230b200341e0006a24000bf90403027f017e057f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a29000037030020022004370300200310234191cfc000ad4280808080e00184100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bf90403027f017e057f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341fecec000ad4280808080b00284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bfa810112047f017e017f017e027f017e057f027e017f017e037f017e097f047e087f017e077f037e230041d0056b22022400200241d8016a41186a22034200370300200241d8016a41106a22044200370300200241d8016a41086a22054200370300200242003703d801418fcdc200ad4280808080f000842206100c22072900002108200241b0036a41086a2209200741086a290000370300200220083703b0032007102320052009290300370300200220022903b0033703d801418cdbc100ad4280808080a001842208100c220a290000210b200241f0036a41086a2207200a41086a2900003703002002200b3703f003200a1023200420022903f003220b370300200241d0046a41086a220a2005290300370300200241d0046a41106a220c200b370300200241d0046a41186a220d2007290300370300200220022903d8013703d004200241d0016a200241d0046a412010cd0120022802d001210e20022802d401210f200342003703002004420037030020054200370300200242003703d8012006100c2203290000210b2009200341086a2900003703002002200b3703b0032003102320052009290300370300200220022903b0033703d8012008100c220329000021082007200341086a290000370300200220083703f00320031023200420022903f0032208370300200a2005290300370300200c2008370300200d2007290300370300200220022903d8013703d0042002200f41016a4100200e1b22103602d801200241d0046aad42808080808004842211200241d8016aad22124280808080c00084100e2006100c220529000021062009200541086a290000370300200220063703b003200510234180dcc100ad4280808080d00284100c220529000021062007200541086a290000370300200220063703f00320051023200220103602a0052002200241a0056aad22064280808080c00084100d22052900003703d00420051023200241e4016a200241a4056a360200200241003a00e8012002200a3602dc012002200241a0056a3602e0012002200241d0046a3602d801200241f0026a200241d8016a106502400240024002400240024002400240024020022802f802220a41206a2209417f4c0d0020022802f002210c0240024002402009450d00200910212205450d062009410f4d0d01200921070c020b200941017422054110200541104b1b2207102122050d010c0a0b200941017422074110200741104b1b22074100480d0820092007460d0020052009200710252205450d090b200520022903b003370000200541086a200241b0036a41086a2903003700000240024020074170714110460d00200721030c010b200741017422034120200341204b1b22034100480d0820072003460d0020052007200310252205450d090b200520022903f003370010200541186a200241f0036a41086a2903003700000240200341606a200a4f0d00200a41206a2207200a490d082003410174220d2007200d20074b1b22074100480d0820032007460d0020052003200710252205450d090b200541206a200c200a10a1051a024020022802f402450d00200c10230b200220013602d8012009ad4220862005ad8420124280808080c00084100e20051023200241d8016a41186a220a4200370300200241d8016a41106a22134200370300200241d8016a41086a22054200370300200242003703d801418fcdc200ad4280808080f000842208100c2207290000210b200241b0036a41086a2209200741086a2900003703002002200b3703b0032007102320052009290300370300200220022903b0033703d8014190d8c100ad4280808080c00184100c2203290000210b200241f0036a41086a2207200341086a2900003703002002200b3703f00320031023200420022903f003370000200441086a2007290300370000200241d0046a41086a2005290300370300200241d0046a41106a2013290300370300200241d0046a41186a200a290300370300200220022903d8013703d004200241c8016a200241d0046a412010cd010240201020022802cc0141016a41d50020022802c8011b6b220320104b0d00200310ce010b200a42003703002013420037030020054200370300200242003703d8012008100c220a29000021082009200a41086a290000370300200220083703b003200a102320052009290300370300200220022903b0033703d80141d5cfc000ad4280808080d00184100c220929000021082007200941086a290000370300200220083703f00320091023201320022903f0032208370300200241a0056a41086a2005290300370300200241a0056a41106a2008370300200241a0056a41186a2007290300370300200220022903d8013703a005200241203602c4022002200241a0056a3602c002200241c8026a2006428080808080048422141010108b01024020022802c8022215450d0020022802cc0221162002200241c8026a41086a2802003602dc02200220153602d802200241d8016a200241d8026a10cf010240024020022802d8012217450d00200241d8016a41086a350200211820022802dc012119200241c0016a200241d8026a1088010240024020022802c0010d0020022802c401221a20022802dc02220741d0006e22052005201a4b1bad42d0007e2206422088a70d052006a72205417f4c0d050240024020050d004108211b0c010b20051021221b450d090b4100210a200241003602e8022002201b3602e0022002200541d0006e221c3602e4020240201a450d00200241f4046a211d200241d8016a41206a211e4100210a4100210302400340200241003a009004200341016a210341002105024002400240034020072005460d01200241f0036a20056a20022802d80222092d00003a00002002200941016a3602d8022002200541016a22093a0090042009210520094120470d000b200241b0046a41086a2205200241f0036a41086a220c290300370300200241b0046a41106a2201200241f0036a41106a220d290300370300200241b0046a41186a220e200241f0036a41186a220f290300370300200220022903f0033703b0042002200720096b3602dc02200241d0046a200241d8026a10d00120022802f00422090d01410021090c020b200241003602dc020240200541ff0171450d00200241003a0090040b410021090c010b201e20022903d004370300200241d8016a41186a2207200e290300370300200241d8016a41106a220e2001290300370300200241d8016a41086a22012005290300370300201e41086a200241d0046a41086a290300370300201e41106a200241d0046a41106a290300370300201e41186a200241d0046a41186a290300370300200241c0056a41086a201d41086a280200360200200220022903b0043703d8012002201d2902003703c005200241f0036a41386a200241d8016a41386a290300370300200241f0036a41306a200241d8016a41306a290300370300200241f0036a41286a200241d8016a41286a290300370300200241f0036a41206a201e290300370300200f2007290300370300200d200e290300370300200c2001290300370300200220022903d8013703f0030b200241b0036a41386a2205200241f0036a41386a290300370300200241b0036a41306a2207200241f0036a41306a290300370300200241b0036a41286a220c200241f0036a41286a290300370300200241b0036a41206a2201200241f0036a41206a290300370300200241b0036a41186a220d200241f0036a41186a290300370300200241b0036a41106a220e200241f0036a41106a290300370300200241b0036a41086a220f200241f0036a41086a29030037030020024190056a41086a221f200241c0056a41086a280200360200200220022903f0033703b003200220022903c0053703900502402009450d00200241f0026a41386a22202005290300370300200241f0026a41306a22212007290300370300200241f0026a41286a2207200c290300370300200241f0026a41206a220c2001290300370300200241f0026a41186a2201200d290300370300200241f0026a41106a220d200e290300370300200241f0026a41086a220e200f29030037030020024180056a41086a220f201f280200360200200220022903b0033703f0022002200229039005370380050240200a20022802e402470d00200241e0026a200a410110b40120022802e002211b20022802e802210a0b201b200a41d0006c6a220520022903f002370300200d290300210620012903002108200c290300210b200729030021222021290300212320202903002124200e290300212520052009360240200541086a20253703002005200229038005370244200541cc006a200f280200360200200541386a2024370300200541306a2023370300200541286a2022370300200541206a200b370300200541186a2008370300200541106a20063703002002200a41016a220a3602e8022003201a460d0220022802dc0221070c010b0b0240200a450d00200a41d0006c2109201b41c4006a21050340024020052802002207450d00200741306c450d002005417c6a28020010230b200541d0006a2105200941b07f6a22090d000b0b20022802e4022205450d02200541d0006c450d02201b10230c020b20022802e402211c0b201b450d000240024020022802dc022205450d0020022005417f6a3602dc02200220022802d802220541016a3602d80220052d000022264103490d010b0240200a450d00200a41d0006c2109201b41c4006a21050340024020052802002207450d00200741306c450d002005417c6a28020010230b200541d0006a2105200941b07f6a22090d000b0b0240201c450d00201c41d0006c450d00201b10230b201941ffffff3f71450d030c020b20184220862019ad8421240c030b201941ffffff3f71450d010b201710230b200241003602f803200242013703f0032002410a3602b4032002200241c0026a3602b0032002200241f0036a3602f002200241ec016a4101360200200242013702dc0120024180c5c6003602d8012002200241b0036a3602e801200241f0026a4184a5c200200241d8016a10311a20023502f80342208620023502f00384100a024020022802f403450d0020022802f00310230b410321260b02402016450d00201510230b20264103460d00201410110c070b200241003602d002200242083703c802200241003602e802200242013703e002418fcdc200ad4280808080f00084100c22052900002106200241b0036a41086a2209200541086a290000370300200220063703b0032005102341bbacc300ad4280808080a00184100c22052900002106200241f0036a41086a2207200541086a290000370300200220063703f00320051023412010212205450d03200520022903b003370000200520022903f003370010200541086a2009290300370000200541186a220a2007290300370000412010212209450d0320092005290000370000200941186a200a290000370000200941106a200541106a290000370000200941086a200541086a290000370000200241b0046a41026a220a200241d8016a41026a2d00003a0000200220022f00d8013b01b004200241a0056a41106a42a0808080800437030041002107200241003a00b805200220053602ac05200242a080808080043702a405200220093602a005200241bb056a200a2d00003a0000200220022f01b0043b00b905200241d8016a200241a0056a10d20141012115024020022802d8014101470d00200241d8016a410472210a41002107410121154108211a410021030340200241f0036a41206a200a41206a280200360200200241f0036a41186a2205200a41186a2902002206370300200241f0036a41106a2209200a41106a2902002208370300200241f0036a41086a2220200a41086a290200220b3703002002200a29020022223703f003200241f0026a41186a220e2006370300200241f0026a41106a220f2008370300200241f0026a41086a221f200b370300200220223703f002200241d8016a41186a220c2005290300370300200241d8016a41106a22012009290300370300200241d8016a41086a220d2020290300370300200220022903f0033703d801200241b0016a200241f0026a10d301200241b0016a41086a290300210620022903b0012108412010212209450d0a200920022903f002370000200941186a200e290300370000200941106a200f290300370000200941086a201f290300370000200241b0036a41086a200d290300220b370300200241b0036a41106a20012903002222370300200241b0036a41186a200c2903002223370300200220022903d80122243703b003200241d0046a41186a22202023370300200241d0046a41106a22212022370300200241d0046a41086a221e200b370300200220243703d0040240200320022802cc02470d00200241c8026a20034101109f0120022802c802211a20022802d00221030b201a20034106746a2205200637030820052008370300201e2903002106202129030021082020290300210b20022903d0042122200541346a4281808080103702002005200936023020052022370310200541286a200b370300200541206a2008370300200541186a20063703002002200341016a22033602d002200c200e2903003703002001200f290300370300200d201f290300370300200220022903f0023703d8010240200720022802e402470d00200241e0026a20074101109a0120022802e002211520022802e80221070b201520074105746a220520022903d801370000200541186a200c290300370000200541106a2001290300370000200541086a200d2903003700002002200741016a22073602e802200241d8016a200241a0056a10d20120022802d8014101460d000b0b024020022802a405450d0020022802a00510230b024020022802b005450d0020022802ac0510230b418fcdc200ad4280808080f00084100c22052900002106200241b0036a41086a2209200541086a290000370300200220063703b0032005102341e2c4c000ad4280808080a00184100c22052900002106200241f0036a41086a220a200541086a290000370300200220063703f00320051023412010212205450d03200520022903b003370000200520022903f003370010200541086a2009290300370000200541186a2203200a290300370000412010212209450d0320092005290000370000200941186a2003290000370000200941106a200541106a290000370000200941086a200541086a290000370000200241d8026a41026a2203200241d8016a41026a2d00003a0000200220022f00d8013b01d802200241d8016a41106a220a42a08080808004370300200241003a00f001200220053602e401200242a080808080043702dc01200220093602d801200241f3016a20032d00003a0000200220022f01d8023b00f101200241c8026a200241d8016a10d401200241d8016a41186a22094200370300200a4200370300200241d8016a41086a22054200370300200242003703d801418fcdc200ad4280808080f000842206100c220c2900002108200241b0036a41086a2203200c41086a290000370300200220083703b003200c102320052003290300370300200220022903b0033703d80141e4d8c100ad4280808080e00184100c22012900002108200241f0036a41086a220c200141086a290000370300200220083703f00320011023201320022903f003370000201341086a220d200c290300370000200241a0056a41086a220e2005290300370300200241a0056a41106a220f200a290300370300200241a0056a41186a221f2009290300370300200220022903d8013703a005200241a8016a200241a0056a412010cd0120022802ac01212720022802a801212820094200370300200a420037030020054200370300200242003703d8012006100c220129000021062003200141086a290000370300200220063703b0032001102320052003290300370300200220022903b0033703d801418cd9c100ad4280808080d00284100c22032900002106200c200341086a290000370300200220063703f00320031023201320022903f003370000200d200c290300370000200e2005290300370300200f200a290300370300201f2009290300370300200220022903d8013703a005200241a0016a200241a0056a412010cd0120022802a401210a20022802a001210320022802e402211620022802c802211a20022802cc02211d20022802d002211e200241003602c805200241003602c005201e20076aad42e0007e2206422088a70d002006a72205417f4c0d004108210902402005450d00200510212209450d040b200a410420031b221941014b2129200241003602a805200220093602a0052002200541e0006e3602a405200241003602b803200242083703b003200241b0036a41002007410574220a41057510a90120022802b803212102402007450d00200a41606a410576212a20022802b003202141d8006c6a210320024188026a210920024180026a212041002107201521050340200241b0046a41186a220c200541186a2201290000370300200241b0046a41106a220d200541106a220e290000370300200241b0046a41086a220f200541086a221f290000370300200220052900003703b004200241f0036a41186a2001290000370300200241f0036a41106a200e290000370300200241f0036a41086a201f290000370300200220052900003703f003200241c0056a200241f0036a200710d501200241d8016a41086a4200370300200241d8016a41106a4200370300200241d8016a41186a4200370300200241d8016a41206a420037030020204200370300200941186a200c290300370000200941106a200d290300370000200941086a200f290300370000200920022903b004370000200242003703d8012003200241d8016a41d00010a105220341d0006a41003a0000200341d8006a2103200541206a2105200741016a2107200a41606a220a0d000b2021202a6a41016a21210b2019410120291b2105200220213602b8030240201641ffffff3f71450d00201510230b200241d0046a41086a200241b0036a41086a2802002209360200200220022903b0033703d0040240024020092005490d00200241a0056a20022802a805201e410674220941067510960120022802a005210720022802a8052105200241f0016a200241c0026a360200200241ec016a200241d0046a3602002002201a20096a3602e4012002201a3602e0012002201d3602dc012002201a3602d8012002200241c0056a3602e801200241f0036a41086a20053602002002200241a8056a3602f40320022007200541e0006c6a3602f003200241d8016a200241f0036a10d6012027410020281b222bad42307e2206422088a70d022006a72209417f4c0d0220022802d80421050240024020090d00410821200c010b200910212220450d060b200241003602880520022020360280052002200941306e36028405202b412c6c2209417f4c0d020240024020090d004104212c0c010b20091021222c450d060b4100211a20024100360298052002202b360294052002202c36029005410021282005202b2005202b491b22290d010c030b024020022802d4042205450d00200541d8006c450d0020022802d00410230b024020022802a8052205450d00200541e0006c210920022802a00541346a21050340024020052802002207450d00200741c8006c450d002005417c6a28020010230b200541e0006a2105200941a07f6a22090d000b0b024020022802a4052205450d00200541e0006c450d0020022802a00510230b200241c0056a10be010240201e450d00201e4106742109201a41346a210503400240200528020041ffffff3f71450d002005417c6a28020010230b200541c0006a2105200941406a22090d000b0b410021200240201d41ffffff1f710d000c040b201a10230c030b200241f0026a41186a2116200241f0026a41106a211d200241f0026a41086a211941002115034020022802d004210702402005450d00200541d8006c21092007210503400240200541d0006a2d00000d0002400240200541206a2903002208200541286a290300220b8450450d0042002106427f2108427f210b0c010b427f210620024190016a427f427f2008200b10a70520024190016a41086a290300210b20022903900121080b200520083703002005200b370308200541106a2006370300200541186a20063703000b200541d8006a2105200941a87f6a22090d000b0b0240024020022802a8052205450d0020022802a005220a200541e0006c6a210d03400240200a2802382205450d00200541c8006c2107200a28023041206a2105034020022802d8042203200528020022094d0d04024020022802d004200941d8006c6a22092d00500d0020092903202206200941286a290300220884500d00200241d8016a200a290310200a41186a290300200a290300200a41086a29030020062008108201200920092903002206427f2006427f20022903e00120022802d80141014622031b220b7c22082008200654220c200941086a22012903002206427f200241d8016a41106a29030020031b22227c200cad7c220820065420082006511b22031b200b20228450220c1b37030020012006427f200820031b200c1b3703000b200541c8006a2105200741b87f6a22070d000b0b200a41e0006a220a200d470d000b20022802d00421070b201541016a211520022802d80441d8006c2105200741a87f6a210903402005450d04200541a87f6a2105200941d8006a2109200741d0006a210a200741d8006a22032107200a2d00000d000b02402005450d00200941186a2903002106200941106a2903002108200941086a290300210b200929030021224100210703400240200320076a220a41d0006a2d00000d00200a41086a2903002223200b2022200b20082006200a29030022242023200a41106a2903002225200a41186a290300221810800141ff0171410146220c1b210b20242022200c1b212220182006200c1b210620252008200c1b2108200a2009200c1b21090b2005200741d8006a2207470d000b0b2009450d03200941013a0050024020022802a8052205450d0020022802a0052207200541e0006c6a211e2009410c6a210f200941306a211f0340200741e0006a212102402007280238220a450d0020072802302105200a41c8006c210a034002400240200f2005460d00200541246a201f412010a3050d010b200741186a22032903002122200941086a220c29030021062007290310210b2009290300210820092903102123200541186a200941186a2201290300370300200541106a2023370300200520064200200620227d2008200b54ad7d22232008200b7d2224200856202320065620232006511b220d1b200b20228450220e1b3703082005200842002024200d1b200e1b370300200c2903002106200129030021082009290300210b20072009290310370320200741286a20083703002007200b370310200320063703000b200541c8006a2105200a41b87f6a220a0d000b0b202121072021201e470d000b0b2016200941c8006a290000370300201d200941c0006a2900003703002019200941386a290000370300200220092900303703f002200941286a29030021062009290320210802402028200228028405470d0020024180056a2028410110a401200228028005212020022802880521280b2020202841306c6a220520022903f0023703002019290300210b201d29030021222016290300212320052008370320200541286a2006370300200541186a2023370300200541106a2022370300200541086a200b3703002002202841016a222836028805201520294f0d0320022802d80421050c010b0b2009200341a4e4c4001030000b1032000b024020022802a8052205450d0020022802a0052215200541e0006c6a211d202841306c211e200241fc036a221641186a2119201641106a2129201641086a21274100211a034020162015221f29003c3700002019201f41d4006a2900003700002029201f41cc006a2900003700002027201f41c4006a290000370000200241003602f803200242043703f003201f41e0006a21150240201f2802382205450d00201f280230220d200541c8006c6a210f201f41106a2121410021014104210e0340200d220c41246a2107200c41c8006a210d4100210a201e210920202105024003402009450d01024020072005460d0020052007412010a3052103200a41016a210a200941506a2109200541306a210520030d010b0b418094ebdc03210902402021200c1081010d00410021050240200c290310201f29032085200c41186a290300201f41286a29030085844200520d00200241d8016a428094ebdc034200200c290300200c41086a2903002021290300202141086a290300108201427f20022903e00120022802d80141014622051b220842ffffffff0f56427f200241d8016a41106a29030020051b22064200522006501b0d012008a7220541ff93ebdc034b0d010b200521090b200241b0036a41186a2207200c413c6a290000370300200241b0036a41106a220a200c41346a290000370300200241b0036a41086a2203200c412c6a2900003703002002200c2900243703b0030240200120022802f403470d00200241f0036a2001410110a20120022802f003210e20022802f80321010b200e200141246c6a220520022903b00337020020032903002106200a29030021082007290300210b20052009360220200541186a200b370200200541106a2008370200200541086a20063702002002200141016a22013602f8030b200d200f470d000b02402001450d0002400240200141246c22070d00410021050c010b200e41206a2109410021050340417f200520092802006a220a200a2005491b2105200941246a21092007415c6a22070d000b0b02404100418094ebdc0320056b22052005418094ebdc034b1b220c20016e2205418094ebdc032005418094ebdc03491b2203450d004100210503402002417f200e200520017041246c6a2209280220220720036a220a200a2007491b22073602d8012002418094ebdc033602dc012009200241d8016a2007418094ebdc034b4102746a280200360220200541016a22052001490d000b0b0240200c200320016c6b2203450d004100210503402002417f200e200520017041246c6a2209280220220741016a220a200a2007491b22073602d8012002418094ebdc033602dc012009200241d8016a2007418094ebdc034b4102746a280200360220200541016a22052003490d000b0b200241d8016a41286a2209200241f0036a41286a280200360200200241d8016a41206a2207200241f0036a41206a290300370300200241d8016a41186a220a200241f0036a41186a290300370300200241d8016a41106a2203200241f0036a41106a290300370300200241d8016a41086a220c200241f0036a41086a290300370300200220022903f0033703d8010240201a200228029405470d0020024190056a201a410110a601200228029005212c200228029805211a0b202c201a412c6c6a220520022903d801370200200541286a2009280200360200200541206a2007290300370200200541186a200a290300370200200541106a2003290300370200200541086a200c2903003702002002201a41016a221a360298050c010b20022802f4032205450d00200541246c450d00200e10230b2015201d470d000b200228029405212b0b200228028405212d024020022802d4042205450d00200541d8006c450d0020022802d00410230b024020022802a8052205450d00200541e0006c210920022802a00541346a21050340024020052802002207450d00200741c8006c450d002005417c6a28020010230b200541e0006a2105200941a07f6a22090d000b0b024020022802a4052205450d00200541e0006c450d0020022802a00510230b200241c0056a10be010b024020200d00410321260c040b200241003602e001200242013703d801200241d8016a4100202841306c220741306e109a0120022802e00121210240024020070d0020022802d80121170c010b20022802d801221720214105746a210520202109034020052009290000370000200541186a200941186a290000370000200541106a200941106a290000370000200541086a200941086a290000370000202141016a2121200541206a2105200941306a2109200741506a22070d000b0b20023502dc01212e2002410036029805200242043703900520024190056a4100201a412c6c2205412c6d10a601202c20056a212a2002280298052128200228029005212f0240201a0d00202c21010c020b200241d8016a410c6a210f202f2028412c6c6a210d200241f0026a41106a211a200241d8016a410472211f200241f0036a41206a211b200241f0036a41186a2126200241f0036a41086a211c202c210103402001280200211e201b200141246a29020037030020262001411c6a290200370300200241f0036a41106a2205200141146a290200370300201c2001410c6a290200370300200220012902043703f0032001412c6a2101201e450d02201f20022903f003370200201f41086a201c290300370200201f41106a2005290300370200201f41186a2026290300370200201f41206a201b2903003702002002201e3602d80120024180016a200f10d30120024180016a41086a2903002108200229038001210b200241f0026a41186a22304200370300201a4200370300200241f0026a41086a22294200370300200242003703f00241bdadc500ad4280808080800184100c220529000021062029200541086a290000370300200220063703f0022005102341c5adc500ad4280808080d00184100c22052900002106200241d0046a41086a2215200541086a290000370300200220063703d00420051023201a20022903d004370000201a41086a2015290300370000200241b0036a41086a22162029290300370300200241b0036a41106a221d201a290300370300200241b0036a41186a22192030290300370300200220022903f0023703b003200241e8006a200241b0036a412010d701200241d8006a2002290370200241e8006a41106a290300427f420010a705200241c8006a200b200820022903584200200228026822051b220642012006420156200241d8006a41086a290300420020051b22064200522006501b22051b2006420020051b10a705200241a0056a41086a2231200f41086a290200370300200241a0056a41106a2232200f41106a290200370300200241a0056a41186a2233200f41186a2902003703002002200f2902003703a00520022802dc0121272002290348210802400240024020022802e00141246c2234450d0020342107201e21050340200541206a2802002109200241b0046a41186a220a200541186a290000370300200241b0046a41106a2203200541106a290000370300200241b0046a41086a220c200541086a290000370300200220052900003703b00420090d02200541246a21052007415c6a22070d000b0b42002106410021054108210e02402027450d00202741246c450d00201e1023420021060b4200210b410021150c010b200241386a20084200428094ebdc03420010a705200241286a20022903382223200241386a41086a29030022244280ec94a37c427f10a605200241186a202320242009ad2206420010a6052015200c290300370300200241d0046a41106a22092003290300370300200241d0046a41186a2235200a290300370300200220022903b004220b3703f0022002200b3703d0042006200820022903287c22187e2206428094ebdc0380210b20022903182122200241186a41086a290300212541301021220e450d02200e2022200ba7417f2006428080808080c0b2cd3b541b2006200b4280ec94a37c7e7c4280cab5ee01566aad7c2206370320200e20022903d004370300200e41286a20252006202254ad7c220b370300200e41186a2035290300370300200e41106a2009290300370300200e41086a201529030037030020024281808080103702c4052002200e3602c0050240024020074124470d00410121150c010b200541246a2135201e20346a2207415c6a21344101211503402035210502400340200541206a2802002109200a200541186a2900003703002003200541106a290000370300200c200541086a290000370300200220052900003703b00420090d012007200541246a2205470d000c030b0b200241086a202320242009ad2222420010a6052029200c2903002225370300201a200329030022363703002030200a2903002237370300200220022903b00422383703f00220192037370300201d203637030020162025370300200220383703b003200620022903082225202220187e2222428094ebdc03802236a7417f2022428080808080c0b2cd3b541b202220364280ec94a37c7e7c4280cab5ee01566aad7c22227c22362006542209200b200241086a41086a2903002022202554ad7c22257c2009ad7c2206200b542006200b511b21090240201520022802c405470d00200241c0056a2015410110a40120022802c005210e0b427f200620091b210b427f203620091b2106200541246a2135200e201541306c6a220920022903b00337030020162903002136201d29030021372019290300213820092022370320200941286a2025370300200941186a2038370300200941106a2037370300200941086a20363703002002201541016a22153602c80520342005470d000b0b02402027450d00202741246c450d00201e10230b20022802c40521050b02400240200820067d22232008564200200b2008200654ad7c7d22224200522022501b4101470d00200620087d2222200656200b2006200854ad7d2223200b56200620085a1b0d012015450d01201541306c200e6a41706a220942002009290300220620227d22082008200656200941086a2209290300220820237d2006202254ad7d220620085620062008511b22071b37030020094200200620071b3703000c010b2015450d00201541306c200e6a41706a2209427f2009290300220620237c220820082006542207200941086a2209290300220620227c2007ad7c220820065420082006511b22071b3703002009427f200820071b3703000b20192033290300370300201d203229030037030020162031290300370300200220022903a0053703b003200d2005360204200d2015360208200d200e360200200d20022903b00337020c200d41146a2016290300370200200d411c6a201d290300370200200d41246a2019290300370200202841016a2128200d412c6a210d2001202a470d000b20022028360298050c020b1033000b20022028360298052001202a460d00034020012205412c6a21010240200541046a2802002209450d00200941246c450d00200528020010230b202a2001470d000b0b0240202b450d00202b412c6c450d00202c10230b2002280294052103200241d8016a20172021202f202810d8010240024020022802d801220a0d00410021054100210a4100210c0c010b20022802e001210c0240024020022802dc0122090d00200a21050c010b20092105200a2107034020072802c80521072005417f6a22050d000b200a21050340200520052f01064102746a41c8056a28020021052009417f6a22090d000b2007210a0b20052f010621090b200241f4016a2009360200200241f0016a4100360200200241ec016a20053602002002200c3602f801200241003602e801200242003703e0012002200a3602dc01200241003602d8012021ad21062002200241c0026a3602fc01200241f0036a200241d8016a10d90120022802f003211b20022802f403211c20022802f803210a02402028450d002028412c6c2109202f210503400240200541046a2802002207450d00200741306c450d00200528020010230b2005412c6a2105200941546a22090d000b0b2006422086210602402003450d002003412c6c450d00202f10230b2006202e84212441002126202d450d00202d41306c450d00202010230b200241d8016a41186a22094200370300200241d8016a41106a22074200370300200241d8016a41086a22054200370300200242003703d801418fcdc200ad4280808080f000842208100c220c2900002106200241b0036a41086a2203200c41086a290000370300200220063703b003200c102320052003290300370300200220022903b0033703d80141b0e4c100ad4280808080b00184100c22012900002106200241f0036a41086a220c200141086a290000370300200220063703f00320011023201320022903f003370000201341086a200c290300370000200241a0056a41086a2005290300370300200241a0056a41106a2007290300370300200241a0056a41186a2009290300370300200220022903d8013703a0052014101141002101024020264103460d00200942003703002007420037030020054200370300200242003703d8012008100c220129000021062003200141086a290000370300200220063703b0032001102320052003290300370300200220022903b0033703d80141ccc5c000ad4280808080900284100c22032900002106200c200341086a290000370300200220063703f00320031023200420022903f003370000200441086a200c290300370000200241d0046a41086a2005290300370300200241d0046a41106a2007290300370300200241d0046a41186a2009290300370300200220022903d8013703d004410110212205450d02200541003a000020112005ad42808080801084100e2005102342002108200241d8016a41186a22284200370300200241d8016a41106a222a4200370300200241d8016a41086a22274200370300200242003703d801418fcdc200ad4280808080f000842206100c2205290000210b200241b0036a41086a2230200541086a2900003703002002200b3703b0032005102320272030290300370300200220022903b0033703d80141a8c5c000ad4280808080a00284100c2205290000210b200241f0036a41086a220e200541086a2900003703002002200b3703f00320051023200420022903f003370000200441086a2209200e290300370000200241d0046a41086a22212027290300370300200241d0046a41106a221e202a290300370300200241d0046a41186a22152028290300370300200220022903d8013703d0042011101120284200370300202a420037030020274200370300200242003703d8012006100c220529000021062030200541086a290000370300200220063703b0032005102320272030290300370300200220022903b0033703d80141bac5c000ad4280808080a00284100c22052900002106200e200541086a290000370300200220063703f00320051023200420022903f0033700002009200e29030037000020212027290300370300201e202a29030037030020152028290300370300200220022903d8013703d00420111011201b200a41d0006c6a2120024002400240200a0d00201b2101420021060c010b200241b0036a41106a211a200241f0026a41106a210f20024194036a2116200241d8016a41206a210d4200210842002106201b21010340200241f0036a41386a220a2001220541386a290300370300200241f0036a41306a2203200541306a290300370300200241f0036a41286a220c200541286a290300370300200241f0036a41206a221f200541206a290300370300200241f0036a41186a2209200541186a290300370300200241f0036a41106a2207200541106a290300370300200e200541086a2903003703002005290300210b20024190056a41086a221d200541cc006a2802003602002002200b3703f0032002200541c4006a29020037039005200541d0006a2101200541c0006a2802002205450d01200241d8016a41386a200a290300370300200241d8016a41306a2003290300370300200241d8016a41286a200c290300370300200d201f29030037030020282009290300370300202a20072903003703002027200e290300370300200220022903f0033703d801200241a0056a41186a2009290300370300200241a0056a41106a2007290300370300200241a0056a41086a200e290300370300200220022903f0033703a005200241f0026a41186a2219200d41186a290300370300200f200d41106a290300370300200241f0026a41086a2229200d41086a290300220b37030020022005360290032002200d29030022223703f0022016200229039005370200201641086a201d280200360200200241d0046a2010200241a0056a10da0120023502d804212320022802d004211f200241003602b803200242013703b0032002200241f0026a3602b004200241b0046a200241b0036a10db012002200f3602b004200241b0046a200241b0036a10db0120022802900321052002280298032209200241b0036a106102402009450d00200941306c210303400240024020022802b403220a20022802b80322096b4120490d0020022802b00321070c010b200941206a22072009490d07200a410174220c2007200c20074b1b220c4100480d0702400240200a0d000240200c0d00410121070c020b200c10212207450d0a0c010b20022802b0032107200a200c460d002007200a200c10252207450d090b2002200c3602b403200220073602b0030b200720096a2207200541106a290000370000200741186a200541286a290000370000200741106a200541206a290000370000200741086a200541186a2900003700002002200941206a3602b803200220053602b004200241b0046a200241b0036a10db01200541306a2105200341506a22030d000b0b20022802b40321052023422086201fad8420023502b80342208620022802b0032209ad84100e02402005450d00200910230b024020022802d404450d00201f10230b20152019290300370300201e200f29030037030020212029290300370300200220022903f0023703d004200228029c032107200228029403210a20022802900321090240200228029803220541c100490d0020092005410041202005676b10dc0141c00021050b200241b0036a41186a2015290300370300201a201e29030037030020302021290300370300200220022903d0043703b003200220073602dc03200220053602d8032002200a3602d403200220093602d003200241c0056a2010200241a0056a10dd0120023502c805212320022802c005211f200241003602b804200242013703b0042002200241b0036a3602800520024180056a200241b0046a10db012002201a3602800520024180056a200241b0046a10db0120022802d003210520022802d8032209200241b0046a106102402009450d00200941306c210303400240024020022802b404220a20022802b80422096b4120490d0020022802b00421070c010b200941206a22072009490d07200a410174220c2007200c20074b1b220c4100480d0702400240200a0d000240200c0d00410121070c020b200c10212207450d0a0c010b20022802b0042107200a200c460d002007200a200c10252207450d090b2002200c3602b404200220073602b0040b200720096a2207200541106a290000370000200741186a200541286a290000370000200741106a200541206a290000370000200741086a200541186a2900003700002002200941206a3602b804200220053602800520024180056a200241b0046a10db01200541306a2105200341506a22030d000b0b2006200b7c200820227c220b2008542205ad7c210820022802b40421092023422086201fad8420023502b80442208620022802b0042207ad84100e02402009450d00200710230b2008200651210920082006542107024020022802c405450d00201f10230b2005200720091b2105024020022802d4032209450d00200941306c450d0020022802d00310230b427f200820051b2106427f200b20051b210820012020470d000c020b0b20202001460d0003402001220541d0006a21010240200541c4006a2802002209450d00200941306c450d00200541c0006a28020010230b20202001470d000b0b0240201c450d00201c41d0006c450d00201b10230b200241f0036a201010ca0120022802f003210520023502f803210b200220063703e001200220083703d801200b4220862005ad8420124280808080800284100e024020022802f403450d00200510230b02402024422088a7410574220a450d00200241f0036aad210b201721050340200241d8016a200510c301200220022802d801220720022802e00110de012002280204410020022802001b2109024020022802dc01450d00200710230b200241d8016a2010200510df0120023502e001210620022802d8012107200241003a00f5030240024002400240200941c000490d00200941808001490d012009418080808004490d02200241053a00f503200241033a00f003200220093600f1034280808080d00021080c030b200241013a00f503200220094102743a00f00342808080801021080c020b200241023a00f503200220094102744101723b01f00342808080802021080c010b200241043a00f503200220094102744102723602f0034280808080c00021080b20064220862007ad842008200b84100e024020022d00f503450d00200241003a00f5030b024020022802dc01450d00200710230b200541206a2105200a41606a220a0d000b0b200241e1016a20263a0000200241e0016a41033a0000200241033a00d801200241d8016a10e001201721010b2000202437020420002001360200200241d0056a24000f0b102c000b102a000b8f0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034180c5c6003602382003200341286a360248200341346a4184a5c200200341386a10311a2003350220422086200335021884100a0240200328021c450d00200328021810230b0b2005450d00200410230b2000200236020420002001360200200341d0006a24000bd81604027f017e077f017e230041d0006b22012400418fcdc200ad4280808080f00084100c22022900002103200141086a200241086a29000037030020012003370300200210234186d0c000ad4280808080b00184100c22022900002103200141106a41086a200241086a29000037030020012003370310200210232001200036022c20012001412c6aad22034280808080c00084100d220229000037033020021023200141c4006a200141306a360200200141003a00482001200141306a41086a220436023c20012001412c6a3602402001200141306a360238200141206a200141386a106502400240024002402001280228220541206a2206417f4c0d00200128022021070240024002402006450d00200610212202450d042006410f4d0d01200621080c020b200641017422024110200241104b1b2208102122020d010c050b200641017422084110200841104b1b22084100480d0320062008460d0020022006200810252202450d040b20022001290300370000200241086a200141086a2903003700000240024020084170714110460d00200821090c010b200841017422094120200941204b1b22094100480d0320082009460d0020022008200910252202450d040b20022001290310370010200241186a200141106a41086a2903003700000240200941606a20054f0d00200541206a22082005490d032009410174220a2008200a20084b1b22084100480d0320092008460d0020022009200810252202450d040b200241206a2007200510a1051a02402001280224450d00200710230b2006ad4220862002ad84101220021023418fcdc200ad4280808080f00084100c2202290000210b200141086a200241086a2900003703002001200b3703002002102341f4cfc000ad4280808080a00284100c2202290000210b200141106a41086a200241086a2900003703002001200b370310200210232001200036022c200120034280808080c00084100d220229000037033020021023200141c4006a200141306a360200200141003a00482001200436023c20012001412c6a3602402001200141306a360238200141206a200141386a10652001280228220941206a2206417f4c0d00200128022021070240024002402006450d00200610212202450d042006410f4d0d01200621080c020b200641017422024110200241104b1b220810212202450d050c010b200641017422084110200841104b1b22084100480d0320062008460d0020022006200810252202450d040b20022001290300370000200241086a200141086a2903003700000240024020084170714110460d00200821050c010b200841017422054120200541204b1b22054100480d0320082005460d0020022008200510252202450d040b20022001290310370010200241186a200141106a41086a2903003700000240200541606a20094f0d002009415f4b0d03200541017422082006200820064b1b22084100480d0320052008460d0020022005200810252202450d040b200241206a2007200910a1051a02402001280224450d00200710230b2006ad4220862002ad84101220021023418fcdc200ad4280808080f00084100c2202290000210b200141086a200241086a2900003703002001200b3703002002102341e2cfc000ad4280808080a00284100c2202290000210b200141106a41086a200241086a2900003703002001200b370310200210232001200036022c200120034280808080c00084100d220229000037033020021023200141c4006a200141306a360200200141003a00482001200436023c20012001412c6a3602402001200141306a360238200141206a200141386a10652001280228220941206a2206417f4c0d00200128022021070240024002402006450d00200610212202450d042006410f4d0d01200621080c020b200641017422024110200241104b1b220810212202450d050c010b200641017422084110200841104b1b22084100480d0320062008460d0020022006200810252202450d040b20022001290300370000200241086a200141086a2903003700000240024020084170714110460d00200821050c010b200841017422054120200541204b1b22054100480d0320082005460d0020022008200510252202450d040b20022001290310370010200241186a200141106a41086a2903003700000240200541606a20094f0d002009415f4b0d03200541017422082006200820064b1b22084100480d0320052008460d0020022005200810252202450d040b200241206a2007200910a1051a02402001280224450d00200710230b2006ad4220862002ad84101220021023418fcdc200ad4280808080f00084100c2202290000210b200141086a200241086a2900003703002001200b3703002002102341fecec000ad4280808080b00284100c2202290000210b200141106a41086a200241086a2900003703002001200b370310200210232001200036022c200120034280808080c00084100d220229000037033020021023200141c4006a200141306a360200200141003a00482001200436023c20012001412c6a3602402001200141306a360238200141206a200141386a10652001280228220941206a2206417f4c0d00200128022021070240024002402006450d00200610212202450d042006410f4d0d01200621080c020b200641017422024110200241104b1b220810212202450d050c010b200641017422084110200841104b1b22084100480d0320062008460d0020022006200810252202450d040b20022001290300370000200241086a200141086a2903003700000240024020084170714110460d00200821050c010b200841017422054120200541204b1b22054100480d0320082005460d0020022008200510252202450d040b20022001290310370010200241186a200141106a41086a2903003700000240200541606a20094f0d002009415f4b0d03200541017422082006200820064b1b22084100480d0320052008460d0020022005200810252202450d040b200241206a2007200910a1051a02402001280224450d00200710230b2006ad4220862002ad84101120021023200141386a200010b801200135024042208620012802382202ad8410110240200128023c450d00200210230b418fcdc200ad4280808080f00084100c2202290000210b200141086a200241086a2900003703002001200b370300200210234191cfc000ad4280808080e00184100c2202290000210b200141106a41086a200241086a2900003703002001200b370310200210232001200036022c200120034280808080c00084100d220229000037033020021023200141c4006a200141306a360200200141003a00482001200436023c20012001412c6a3602402001200141306a360238200141206a200141386a10652001280228220541206a2206417f4c0d00200128022021090240024002402006450d00200610212202450d042006410f4d0d01200621040c020b200641017422024110200241104b1b220410212202450d050c010b200641017422044110200441104b1b22044100480d0320062004460d0020022006200410252202450d040b20022001290300370000200241086a200141086a2903003700000240024020044170714110460d00200421080c010b200441017422084120200841204b1b22084100480d0320042008460d0020022004200810252202450d040b20022001290310370010200241186a200141106a41086a2903003700000240200841606a20054f0d002005415f4b0d03200841017422042006200420064b1b22044100480d0320082004460d0020022008200410252202450d040b200241206a2009200510a1051a02402001280224450d00200910230b2006ad4220862002ad84101120021023200141386a200010c201200135024042208620012802382202ad8410110240200128023c450d00200210230b200141d0006a24000f0b1032000b1033000b102c000b102a000ba20401097f230041e0006b220224002002200110880102400240024002402002280200450d00200041003602000c010b2002280204220320012802044105762204200420034b1b22044105742205417f4c0d010240024020040d00410121060c010b200510212206450d030b41002107200241003602102002200436020c20022006360208024002402003450d0041002108034041002105200241003a0058200841016a21082001280204417f6a210403402004417f460d03200241386a20056a200128020022092d00003a0000200120043602042001200941016a3602002002200541016a22093a00582004417f6a21042009210520094120470d000b200241186a41186a2205200241386a41186a290300370300200241186a41106a2209200241386a41106a290300370300200241186a41086a220a200241386a41086a2903003703002002200229033837031802402007200228020c470d00200241086a20074101109a0120022802082106200228021021070b200620074105746a22042002290318370000200441186a2005290300370000200441106a2009290300370000200441086a200a2903003700002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b0240200541ff0171450d00200241003a00580b20004100360200200228020c41ffffff3f71450d00200610230b200241e0006a24000f0b1032000b1033000b990707017f047e027f017e057f047e017f23004190026b22022400200241c0006a200110800202400240024002400240024002402002290340a70d00200241c0006a41106a290300210320022903482104200241286a20011080022002290328a70d03200241286a41106a290300210520022903302106200241206a200110880120022802200d0220022802242207200128020441306e2208200820074b1bad42307e2209422088a7450d010c060b200041003602200c040b2009a72208417f4c0d040240024020080d004108210a0c010b20081021220a450d030b4100210b200241003602602002200a3602582002200841306e36025c0240024002402007450d004100210c03404100210d200241003a008802200c41016a210c2001280204417f6a210803402008417f460d03200241e8016a200d6a2001280200220e2d00003a0000200120083602042001200e41016a3602002002200d41016a220e3a0088022008417f6a2108200e210d200e4120470d000b200241c8016a41186a2208200241e8016a41186a290300370300200241c8016a41106a220d200241e8016a41106a290300370300200241c8016a41086a220e200241e8016a41086a290300370300200220022903e8013703c801200241086a20011080022002290308a70d03200241086a41106a29030021092002290310210f20024188016a41086a200e290300221037030020024188016a41106a200d290300221137030020024188016a41186a20082903002212370300200241e8006a41086a220d2010370300200241e8006a41106a220e2011370300200241e8006a41186a22132012370300200220022903c801221037038801200220103703680240200b200228025c470d00200241d8006a200b410110a4012002280258210a2002280260210b0b200a200b41306c6a220820093703082008200f37030020082002290368370310200841186a200d290300370300200841206a200e290300370300200841286a20132903003703002002200b41016a220b360260200c2007470d000b0b200a450d02200229025c210920002004370300200020093702242000200a3602202000200637031020002003370308200041186a20053703000c050b200d41ff0171450d00200241003a0088020b20024188016a41086a200241a8016a41086a290300370300200228025c2201450d00200141306c450d00200a10230b200041003602200c020b200041003602200c010b1033000b20024190026a24000f0b1032000bbd0101047f230041106b220224002000280204210320002802002100410121042001280218419b9ec00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41e0e4c200105a1a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d0020022802002200280218419a9ec00041012000411c6a28020028020c11000021040b200241106a240020040b8a0604057f017e047f037e230041f0006b22022400200241286a200141146a350200422086200135020c841019108b010240024020022802282203450d00200141086a2104200141106a210503400240024020042802002206200229022c2207422088a722084b0d00200128020022092003460d0120092003200610a305450d010b2007a7450d02200310230c020b02402005280200450d00200128020c10230b2001200336020c2005200737020020022003200810de01024002402002280200450d002002280204210a024020012d0018450d002001350214422086200135020c8410110b2001280214220820042802002203490d0102400240200820036b22084108490d00200841786a2106200128020c20036a41086a21090c010b4100210602404100280298ab470d00419ca8c70021090c010b41002106410028028880402103410028028480402108410028029cab47210b200241e000360268200242de80808010370360200241c79ec00036025c20024213370254200241b49ec00036025020024200370348419ca8c70021092002419ca8c70036024420024201370338200241ac9ec00036023420024113360230200241b49ec00036022c20024101360228200841a0a1c000200b410246220b1b200241286a200341b8a1c000200b1b2802101102000b41002103200241003a00480240034020062003460d01200241286a20036a200920036a2d00003a00002002200341016a22083a00482008210320084120470d000b200241086a41186a200241286a41186a2903002207370300200241086a41106a200241286a41106a290300220c370300200241086a41086a200241286a41086a290300220d37030020022002290328220e3703082000411c6a2007370000200041146a200c3700002000410c6a200d3700002000200e370004200041246a200a360200200041013602000c050b200341ff0171450d00200241003a00480b200241286a2001350214422086200135020c841019108b01200228022822030d010c020b0b2003200841dc96c7001044000b200041003602000b200241f0006a24000bf10804047f017e027f017e230041e0016b22022400200241d0016a200110c701200241c8006a20022802d001220120022802d80110e101200241286a41086a2203200241d1006a290000370300200241286a41106a2204200241d9006a290000370300200241286a41186a2205200241e1006a29000037030020022002290049370328024002400240024002400240024002400240024020022d00484101470d00200241086a41186a2005290300370300200241086a41106a2004290300370300200241086a41086a200329030037030020022002290328370308024020022802d401450d00200110230b200241c8006a41186a2203200241086a41186a290300370300200241c8006a41106a2204200241086a41106a290300370300200241c8006a41086a2205200241086a41086a29030037030020022002290308370348418fcdc200ad4280808080f00084100c22012900002106200241a0016a41086a200141086a290000370300200220063703a0012001102341dcc4c000ad4280808080e00084100c22012900002106200241b0016a41086a200141086a290000370300200220063703b00120011023412010212201450d0120012002290348370000200141186a2003290300370000200141106a2004290300370000200141086a20052903003700002001ad4280808080800484100f22032900002106200241d0016a41086a200341086a290000370300200220063703d00120031023200241346a200141206a360200200241003a0038200220013602302002200241d0016a41106a36022c2002200241d0016a360228200241c0016a200241286a10652001102320022802c801220741206a2203417f4c0d0220022802c0012108024002402003450d00200310212201450d032003410f4d0d01200321040c060b200341017422014110200141104b1b2204102122010d050c0a0b200341017422044110200441104b1b220441004e0d030c080b20022802d401450d04200110230c040b1033000b1032000b20032004460d0020012003200410252201450d050b200120022903a001370000200141086a200241a0016a41086a2903003700000240024020044170714110460d00200421050c010b200441017422054120200541204b1b22054100480d0420042005460d0020012004200510252201450d050b200120022903b001370010200141186a200241b0016a41086a2903003700000240200541606a20074f0d002007415f4b0d04200541017422042003200420034b1b22044100480d0420052004460d0020012005200410252201450d050b200141206a2008200710a1051a024020022802c401450d00200810230b200241c8006a2001200310e201200241c8006a41186a2903002106200241f8006a2802002105200241f4006a280200210720022903582109200228026c2104200228026821032001102320030d010b42002109420021060c010b02402004450d00200441186c450d00200310230b200541ffffffff0371450d00200710230b2000200937030020002006370308200241e0016a24000f0b102c000b102a000b860908097f017e0c7f017e017f017e017f047e23004180026b22022400200241186a41186a200141186a280200360200200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318200241f8006a200241186a10f203024020022d00a8014102460d00200041046a21030340200241b0016a41286a200241f8006a41286a280200360200200241b0016a41206a200241f8006a41206a2201290300370300200241b0016a41186a2204200241f8006a41186a2205290300370300200241b0016a41106a2206200241f8006a41106a2207290300370300200241b0016a41086a2208200241f8006a41086a2209290300370300200220022903783703b0012001280200210a0240200229029c01220b422088a7220c450d0020022802a401210d4100210e200a21014100210f024002400340200220013602dc01200241e0016a200241dc016a10c801024002400240024020022802ec012210450d0020022802e8012111024020022802f00141ffffffff0371450d00201010230b2011200d4b0d010b200e0d014100210e0c020b200e41016a210e0c010b200f200e6b2210200c4f0d02200241e0016a41186a22112001200e4105746b221041186a2212290000370300200241e0016a41106a2213201041106a2214290000370300200241e0016a41086a2215201041086a2216290000370300200220102900003703e001200141086a22172900002118200141106a2219290000211a200141186a221b290000211c201020012900003700002012201c3700002014201a37000020162018370000201b20112903003700002019201329030037000020172015290300370000200120022903e0013700000b200141206a2101200c200f41016a220f460d020c000b0b2010200c4184d9c4001030000b200e417f6a200c4f0d00200b42ffffffff0f83200c200e6bad42208684210b0b200241d8006a41186a22012004290300370300200241d8006a41106a220e2006290300370300200241d8006a41086a220f2008290300370300200220022903b001370358200a450d01200520012903003703002007200e2903003703002009200f29030037030020022002290358370378200241086a200241f8006a10d301200241386a41186a20012903002218370300200241386a41106a200e290300221a370300200241386a41086a200f290300221c37030020022002290358221d370338200241086a41086a290300211e2002290308211f200520183703002007201a3703002009201c3703002002201d3703780240200041086a220f280200220e2003280200470d002000200e4101109f010b2000280200200e4106746a2201201e3703082001201f370300200120022903783703102001200a360230200141186a2009290300370300200141206a2007290300370300200141286a2005290300370300200141346a200b370200200f200e41016a360200200241f8006a200241186a10f20320022d00a8014102470d000b0b0240200228021c450d00200228021810230b0240200241286a280200450d00200228022410230b20024180026a24000bf70c01087f230041c0046b22032400200341206a41186a200141186a290000370300200341206a41106a200141106a290000370300200341206a41086a200141086a290000370300200320012900003703200240024002400240024020002802002204450d00200028020421050c010b4100210520034180016a410041e00210a0051a200341f8006a22014100360200200341f0006a22064200370300200341d0006a41186a4200370300200341d0006a41106a4200370300200341d0006a41086a42003703002003420037035041940310212204450d01200441003b010620044100360200200441086a20034180016a41e00210a1051a20044190036a200128020036020020044188036a200629030037020020044180036a200341e8006a290300370200200441f8026a200341e0006a290300370200200441f0026a200341d0006a41086a290300370200200420032903503702e80220004100360204200020043602000b2003200036025820032004360254200320053602500240034020042f01062207410574210841002101410021060240024002400240034020082001460d010240200341206a200420016a41086a412010a30522090d0041002101200521090c030b200141206a2101200641016a21062009417f4a0d000b2006417f6a21070b20050d014101210141002109200721060b20034180016a41106a20063602002003418c016a200036020020034180016a41086a20043602002003200036025820032004360254200320053602502003200936028401200320013602800102402001450d00200341186a2201200341206a41186a2207290300370300200341106a2208200341206a41106a290300370300200341086a2205200341206a41086a290300370300200320032903203703002000200028020841016a3602082003200636024c200320003602482003200436024420032009360240200341d0006a41186a2001290300370300200341d0006a41106a2008290300370300200341d0006a41086a20052903003703002003200329030037035020034180016a200341c0006a200341d0006a200210b40420032d0080014101470d04200341206a41086a220520034189016a290000370300200341206a41106a220020034191016a290000370300200720034199016a2900003703002003200329008101370320200341ac016a2802002106200341b8016a2802002108200341b4016a2802002109200341b0016a2802002104200341a8016a28020022012802002207450d0220012f01042102200341a4016a280200210a20034180016a410172210103402003200241ffff037136024c20032006360248200320073602442003200a41016a360240200341d0006a41186a200341206a41186a2206290300370300200341d0006a41106a2000290300370300200341d0006a41086a20052903003703002003200329032037035020034180016a200341c0006a200341d0006a20042009200810b50420032d0080014101470d052005200141086a2900003703002000200141106a2900003703002006200141186a2900003703002003200129000037032020032802ac01210620032802b801210820032802b401210920032802b001210420032802a80122022802002207450d0320022f0104210220032802a401210a0c000b0b200420064102746a41e8026a20023602000c030b2005417f6a2105200420074102746a4194036a28020021040c010b0b20034180016a410272410041be0310a0051a41c40310212201450d0120014100360200200141046a20034180016a41c00310a1051a200120062802002205360294032006200136020020062006280204220041016a360204200541003b01042005200136020020034180016a41186a200341206a41186a29030037030020034180016a41106a200341206a41106a29030037030020034180016a41086a200341206a41086a290300370300200320032903203703800120002008470d0220012f01062206410a4b0d03200120064105746a220841206a20034180016a41186a290300370000200841186a20034180016a41106a290300370000200841106a20034180016a41086a290300370000200841086a200329038001370000200120064102746a41e8026a20043602002001200641016a22064102746a4194036a2009360200200120063b0106200920063b0104200920013602000b200341c0046a24000f0b102a000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000b9711080f7f027e047f017e057f027e057f017e230041a0026b22022400200141086a280200210320012802042104200028020421052000280200210602400240024020002802082207200028020c2208460d00200041146a28020021092001280200210a2000280210210b200241f0016a41106a210c0340200241f0006a41086a2201200741186a290300370300200241f0006a41106a220d200741206a290300370300200241f0006a41186a220e200741286a29030037030020022007290310370370200741c0006a210f0240200728023022100d00200f21070c020b200741086a2903002111200741386a280200210020072903002112200741346a280200211320024190016a41186a2214200e29030037030020024190016a41106a2215200d29030037030020024190016a41086a2216200129030037030020022002290370370390012000ad42c8007e2217422088a70d032017a72207417f4c0d030240024020070d00410821180c010b200710212218450d030b200741c8006e21190240024020000d004100211a0c010b201020004105746a211b4100211a2010211c0340201c41086a2900002117201c41106a290000211d201c290000211e200241b0016a41186a221f201c41186a290000370300200241b0016a41106a2220201d370300200241b0016a41086a222120173703002002201e3703b0010240200b280200220e450d00200b28020421220340200e41086a2100200e2f010622234105742107410021010240024003402007450d01200241b0016a2000412010a305220d450d02200741606a2107200141016a2101200041206a2100200d417f4a0d000b2001417f6a21230b2022450d022022417f6a2122200e20234102746a4194036a280200210e0c010b0b02400240024002402009280208220d200e20014102746a41e8026a220728020022004d0d002009280200200041d8006c6a22002903202117200041286a290300211d200241f0016a41186a22014200370300200c4200370300200241f0016a41086a22004200370300200242003703f00141bdadc500ad4280808080800184100c220d290000211e2000200d41086a2900003703002002201e3703f001200d102341c5adc500ad4280808080d00184100c220d290000211e20024190026a41086a220e200d41086a2900003703002002201e37039002200d1023200c200229039002370000200c41086a200e290300370000200241d0016a41086a2000290300370300200241d0016a41106a200c290300370300200241d0016a41186a2001290300370300200220022903f0013703d001200241d8006a200241d0016a412010d701200241c8006a2002290360200241d8006a41106a290300427f420010a7052009280208220e2007280200220d4d0d01200241386a20122011200229034842002002280258220e1b221e4201201e420156200241c8006a41086a2903004200200e1b221e420052201e501b220e1b201e4200200e1b10a7052009280200200d41d8006c6a220d41286a427f201d201720022903387c221e201754220ead7c2224200e2024201d54201e20175a1b220e1b370300200d427f201e200e1b3703202001201f290300370300200c202029030037030020002021290300370300200220022903b0013703f0012007280200210d201a2019470d03024002400240201a41016a2207201a490d00201a410174220e2007200e20074b1bad42c8007e2217422088a70d002017a722074100480d000240201a0d0020070d02410821180c060b201a41c8006c220e2007460d050240200e0d0020070d02410821180c060b2018200e200710252218450d020c050b102c000b2007102122180d030b102a000b2000200d41e4d8c4001030000b200d200e41f4d8c4001030000b200741c8006e21190b2018201a41c8006c6a220742003703002007200d360220200741186a4200370300200741106a4200370300200741086a4200370300200720022903f0013702242007412c6a2000290300370200200741346a200c2903003702002007413c6a2001290300370200201a41016a211a0b201c41206a221c201b470d000b0b0240201341ffffff3f71450d00201010230b200241f0016a41186a22074200370300200c4200370300200241f0016a41086a22004200370300200242003703f00141bdadc500ad4280808080800184100c220129000021172000200141086a290000370300200220173703f0012001102341c5adc500ad4280808080d00184100c2201290000211720024190026a41086a220d200141086a290000370300200220173703900220011023200c200229039002370000200c41086a200d290300370000200241d0016a41086a2000290300370300200241d0016a41106a200c290300370300200241d0016a41186a2007290300370300200220022903f0013703d001200241206a200241d0016a412010d701200241106a2002290328200241206a41106a290300427f420010a70520022012201120022903104200200228022022011b221742012017420156200241106a41086a290300420020011b22174200522017501b22011b2017420020011b10a705200020162903002217370300200c2015290300370300200720142903003703002002200229039001221d3703f001200a4200370310200a41186a4200370300200a4200370308200a41286a4200370300200a4201370320200a201a360238200a2019360234200a2018360230200a201d37023c200a41c4006a2017370200200a41cc006a200c290300370200200a41d4006a2007290300370200200a2002290300370300200341016a2103200a41e0006a210a200f2107200f2008470d000b200821070b200420033602000240200820076b2200450d0020004106754106742100200741346a210703400240200728020041ffffff3f71450d002007417c6a28020010230b200741c0006a2107200041406a22000d000b0b0240200541ffffff1f71450d00200610230b200241a0026a24000f0b1033000b1032000ba80202017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034180c5c6003602382003200341286a360248200341346a4184a5c200200341386a10311a2003350220422086200335021884100a0240200328021c450d00200328021810230b420021040b2002450d00200110230b2000200637030820002004370300200041106a2005370300200341d0006a24000ba628030d7f047e1d7f230022052106200541e00b6b41607122072400200741003602182007410036021002400240024002402002450d00200120024105746a2108200741e0056a41027221094100210a034020074200370348200742003703402007410036025820074208370350200741a8026a41186a220b200141186a290000370300200741a8026a41106a220c200141106a290000370300200741a8026a41086a220d200141086a290000370300200720012900003703a80202400240200a450d002007280214210e0c010b200741e0056a410041e00210a0051a200741f8026a410041e00210a0051a41c8051021220a450d054100210e200a41003b0106200a4100360200200a41086a200741e0056a41e00210a1051a200a41e8026a200741f8026a41e00210a1051a200741003602142007200a3602100b200141206a21010240024002400240024002400340200a41086a2105200a2f0106220f410574210241002110024003402002450d01200741a8026a2005412010a3052211450d03200241606a2102201041016a2110200541206a21052011417f4a0d000b2010417f6a210f0b0240200e450d00200e417f6a210e200a200f4102746a41c8056a280200210a0c010b0b200741f0006a41186a2202200b290300370300200741f0006a41106a200c2903002212370300200741f0006a41086a200d2903002213370300200720072903a80222143703702007200728021841016a360218200c2012370300200d2013370300200b2002290300370300200720143703a80220072903582112200729035021132007290348211420072903402115200a2f01062205410b490d01200741e0056a410041e00210a0051a200741f8026a410041e00210a0051a41c80510212216450d0a201641003b010620164100360200201641086a200741e0056a41e00210a1052105201641e8026a200741f8026a41e00210a1052110200741e0056a41086a2217200a41b0046a290300370300200741e0056a41106a2218200a41b8046a290300370300200741e0056a41186a2219200a41c0046a2903003703002007200a41db016a2900003703e0022007200a41e0016a2900003700e5022007200a41a8046a2903003703e0052007200a41c8016a2f00003b01f4022007200a41ca016a2d00003a00f602200a41cb016a280000211a200a41cf016a280000211b200a41d3016a280000211c200a41d7016a280000211d2005200a41e8016a200a2f010641796a2202410574221110a10521052010200a41c8046a201110a1052110200a41063b0106201620023b0106200720072f01f4023b01dc02200720072d00f6023a00de02200720072903e0023703c802200720072900e5023700cd02200741f8026a41186a221e2019290300370300200741f8026a41106a221f2018290300370300200741f8026a41086a22202017290300370300200720072903e0053703f80202400240200f4107490d002005200f41057441c07e6a220e6a2005200f41796a2211410574220f6a2205200241ffff037120116b41057410a2051a200541186a200b290300370000200541106a200c290300370000200541086a200d290300370000200520072903a8023700002010200e6a2010200f6a2205201641066a22022f010020116b41057410a2051a200541186a20123703002005201337031020052014370308200520153703000c010b200a41086a2202200f410574221041206a22116a200220106a2205200a41066a22022f0100200f6b41057410a2051a200541186a200b290300370000200541106a200c290300370000200541086a200d290300370000200520072903a802370000200a41e8026a220520116a200520106a220520022f0100200f6b41057410a2051a200541186a20123703002005201337031020052014370308200520153703000b200220022f010041016a3b010020074190026a41026a220220072d00de023a0000200741d8016a41086a22212020290300370300200741d8016a41106a2222201f290300370300200741d8016a41186a2223201e290300370300200720072f01dc023b019002200720072903c8023703c801200720072900cd023700cd01200720072903f8023703d801200741a4016a41026a222420022d00003a0000200720072f0190023b01a401200720072900cd0137009501200720072903c80137039001200741a8016a41186a22252023290300370300200741a8016a41106a22262022290300370300200741a8016a41086a22272021290300370300200720072903d8013703a8010240200a280200220e0d0041002128200741106a21020c040b200a2f01042129410021280340200741a4026a41026a222a20242d00003a0000200720072f01a4013b01a402200720072903900137039002200720072900950137009502200b2025290300370300200c2026290300370300200d2027290300370300200720072903a8013703a80241000d03202941ffff0371210a024002400240200e2f01062202410b490d002009410041f20510a0051a41f80510212211450d0e20114100360200201141046a200741e0056a41f40510a1051a2007200e2f00c8013b01f4022007200e41ca016a2d00003a00f6022007200e41db016a2900003703e0022007200e41e0016a2900003700e502200e41cb016a280000212b200e41cf016a280000212c200e41d3016a280000212d200e41d7016a280000212e2019200e41c0046a2903003703002018200e41b8046a2903003703002017200e41b0046a2903003703002007200e2903a8043703e005201141086a200e41e8016a200e2f0106220241796a2205410574221010a105212f201141e8026a200e41c8046a201010a1052130201141c8056a200e41e4056a2002417a6a220f41027410a1052131200e41063b0106201120053b01060240200f450d00410021022031210503402005280200221020023b010420102011360200200541046a2105200f200241016a2202470d000b0b201e2019290300370300201f201829030037030020202017290300370300200720072903e0053703f802200720072f01f4023b01dc02200720072d00f6023a00de02200720072903e0023703c802200720072900e5023700cd02200741dc056a41026a220f20072d00de023a0000200720072f01dc023b01dc05200720072903c8023703c801200720072900cd023700cd012019201e2903003703002018201f29030037030020172020290300370300200720072903f8023703e005202941ffff037122054107490d01202f200a417a6a221041057422296a202f200a41796a220241057422326a220520112f010620026b41057410a2051a200541186a2007290095023700002005201d36000f2005201c36000b2005201b3600072005201a360003200541026a202a2d00003a0000200520072f01a4023b00002005200729039002370013203020296a203020326a220520112f0106222920026b41057410a2051a200541186a200b290300370300200541106a200c290300370300200541086a200d290300370300200520072903a8023703002011202941016a22053b0106200a410274221a20316a416c6a203120104102746a2229200541ffff0371220a20106b41027410a2051a20292016360200200a2010490d022011201a6a41b0056a2105034020052802002210200241016a22023b010420102011360200200541046a21052002200a490d000c030b0b200e41086a2205200a41016a221041057422116a2005200a410574220f6a22052002200a6b410574221710a2051a2005201d36000f2005201c36000b2005201b3600072005201a360003200541026a202a2d00003a0000200520072f01a4023b00002005200729039002370013200541186a200729009502370000200e41e8026a220520116a2005200f6a2205201710a2051a200541186a200b290300370300200541106a200c290300370300200541086a200d290300370300200520072903a802370300200e200241016a22023b0106200a410274200e41c8056a22056a41086a200520104102746a2205200241ffff037120106b41027410a2051a20052016360200200a200e2f010622024f0d07201620103b01042016200e360200201020024f0d072002417f6a2111200e2010417f6a22024102746a41d0056a2105034020052802002210200241026a3b01042010200e360200200541046a21052011200241016a2202470d000c080b0b200e41086a2202200a41016a221041057422296a2002200a41057422316a2202200e2f0106222f200a6b410574223010a2051a2002201d36000f2002201c36000b2002201b3600072002201a360003200241026a202a2d00003a0000200220072f01a4023b00002002200729039002370013200241186a200729009502370000200e41e8026a220220296a200220316a2202203010a2051a200241186a200b290300370300200241106a200c290300370300200241086a200d290300370300200220072903a802370300200e202f41016a22023b0106200a4102742231200e41c8056a22296a41086a202920104102746a2229200241ffff037120106b41027410a2051a202920163602002005200e2f010622104f0d00200e20316a41cc056a2102034020022802002205200a41016a220a3b01042005200e360200200241046a21022010200a470d000b0b202841016a21282007418c026a41026a2202200f2d00003a0000202120172903003703002022201829030037030020232019290300370300200720072f01dc053b018c02200720072903c8013703f801200720072900cd013700fd01200720072903e0053703d801202420022d00003a0000200720072f018c023b01a401200720072900fd0137009501200720072903f80137039001202520232903003703002026202229030037030020272021290300370300200720072903d8013703a8010240200e28020022020d00200741106a2102202b211a202e211d202d211c202c211b201121160c050b200e2f01042129202b211a202e211d202d211c202c211b2002210e201121160c000b0b200a20104105746a22024180036a2205290300211320052007290358370300200241f8026a2205290300211220052007290350370300200241f0026a2205290300211420052007290348370300200241e8026a2202290300211520022007290340370300200720133703f805200720123703f005200720143703e805200720153703e0052012a72202450d0420072802f4052205450d04200541306c450d04200210230c040b200a41086a2202200f410574221041206a22116a200220106a22022005200f6b41057410a2051a200241186a200b290300370000200241106a200c290300370000200241086a200d290300370000200220072903a802370000200a41e8026a220220116a200220106a2202200a2f0106200f6b41057410a2051a200241186a2012370300200220133703102002201437030820022015370300200a200a2f010641016a3b0106200741003602f0050c030b41ecdbc4004135418c94c700102d000b2009410041f20510a0051a41f80510212205450d0620054100360200200541046a200741e0056a41f40510a1051a2005200228020022103602c8052002200536020020022002280204221141016a360204201041003b010420102005360200200741a8026a41026a220a20242d00003a0000200720072f01a4013b01a80220072007290390013703f80220072007290095013700fd02201920252903003703002018202629030037030020172027290300370300200720072903a8013703e00520112028470d0520052f01062210410a4b0d04200520104105746a2202410a6a200a2d00003a0000200241086a20072f01a8023b0000200241176a201d360000200241136a201c3600002002410f6a201b3600002002410b6a201a3600002002411b6a20072903f802370000200241206a20072900fd02370000200241e8026a20072903e005370300200241f0026a2017290300370300200241f8026a201829030037030020024180036a20192903003703002005201041016a22024102746a41c8056a2016360200200520023b0106201620023b0104201620053602000b200741003602f0050b20012008460d012007280210210a0c000b0b0240024020040d004100210d0c010b20032004412c6c6a21184100210d034020032202412c6a21030240200228020841306c2205450d002002280200220a20056a21172002410c6a210c0340200a41306a210b0240024002402007280210220e450d00200728021421010340200e41086a2105200e2f0106220f410574210241002110024003402002450d01200a2005412010a3052211450d04200241606a2102201041016a2110200541206a21052011417f4a0d000b2010417f6a210f0b2001450d012001417f6a2101200e200f4102746a41c8056a280200210e0c000b0b417f200d41016a22022002200d491b210d0c010b200e20104105746a220241e8026a2205427f20052903002212200a2903207c221320132012542205200241f0026a22102903002212200a41286a22112903007c2005ad7c221320125420132012511b22051b3703002010427f201320051b370300200c2900002112200741e0056a41086a220e200c41086a290000370300200741e0056a41106a2201200c41106a290000370300200741e0056a41186a220f200c41186a290000370300200720123703e00520112903002112200a2903202113200241f8026a2111024020024180036a22052802002210200241fc026a280200470d0020112010410110a401200528020021100b2011280200201041306c6a220220072903e00537030020022013370320200241186a200f290300370300200241106a2001290300370300200241086a200e290300370300200241286a20123703002005200528020041016a3602000b200b210a200b2017470d000b0b20032018470d000b0b200020072903103702002000200d36020c200041086a200741106a41086a280200360200200624000f0b41dcd9c4004127418c94c700102d000b4183dac4004130418c94c700102d000b102a000b841205077f017e057f017e087f230041a0026b2202240002400240024002400240024002400240024020012802202203450d0020012003417f6a220436022020012802042205450d022001280208210620012802002107024002402001410c6a280200220820052f01064f0d00200521030c010b034002400240200528020022030d002006ad2109410021030c010b200741016a210720053301044220862006ad8421090b200510232009a72106200321052009422088a7220820032f01064f0d000b0b20024190016a41186a220a200320084105746a220541206a29000037030020024190016a41106a220b200541186a29000037030020024190016a41086a220c200541106a2900003703002002200541086a29000037039001200541f8026a280200210d200241f0016a41086a220e20054184036a2802003602002002200541fc026a2902003703f001200841016a2108200541f0026a2903002109200541e8026a290300210f02402007450d00200320084102746a41c8056a2802002103410021082007417f6a2205450d00034020032802c80521032005417f6a22050d000b0b200241186a41186a200a290300370300200241186a41106a200b290300370300200241186a41086a200c29030037030020024190026a41086a200e2802003602002002200229039001370318200220022903f001370390022001200836020c200120063602082001200336020420014100360200200d0d010b20024180016a41003602000c060b200241b8016a2009370300200241c0016a200d360200200241c4016a20022903900237020020024190016a41186a200241186a41186a29030037030020024190016a41106a200241186a41106a29030037030020024190016a41086a200241186a41086a290300370300200241cc016a20024190026a41086a2802003602002002200f3703b0012002200229031837039001200241c0006a200141246a20024190016a10910220024180016a280200450d0520024190016a200241c0006a41d00010a1051a417f200441016a220320032004491bad42d0007e2209422088a70d012009a72203417f4c0d01200310212210450d02201020024190016a41d00010a1052105200241013602102002200341d0006e36020c20022005360208200241186a41206a200141206a2902002209370300200241186a41186a200141186a290200370300200241186a41106a200141106a290200370300200241186a41086a200141086a29020037030020022001290200370318024002402009a72203450d0020022003417f6a220d360238200228021c2205450d05200228022021062002280218210702400240200241246a280200220820052f01064f0d00200521030c010b034002400240200528020022030d002006ad2109410021030c010b200741016a210720053301044220862006ad8421090b200510232009a72106200321052009422088a7220820032f01064f0d000b0b20024190016a41186a2201200320084105746a220541206a29000037030020024190016a41106a220b200541186a29000037030020024190016a41086a220c200541106a2900003703002002200541086a29000037039001200541f8026a280200210a20024190026a41086a220e20054184036a2802003602002002200541fc026a29020037039002200841016a2108200541f0026a2903002109200541e8026a290300210f02402007450d00200320084102746a41c8056a2802002103410021082007417f6a2205450d00034020032802c80521032005417f6a22050d000b0b200241f0016a41186a2001290300370300200241f0016a41106a200b290300370300200241f0016a41086a200c290300370300200241e0016a41086a200e28020036020020022002290390013703f00120022002290390023703e00120022008360224200220063602202002200336021c20024100360218200a450d002002413c6a2111200241c4016a2104200241b8016a2112410121010340200420022903e0013702002012200937030020024190016a41186a220b200241f0016a41186a221329030037030020024190016a41106a220c200241f0016a41106a221429030037030020024190016a41086a220e200241f0016a41086a2215290300370300200441086a200241e0016a41086a22162802003602002002200f3703b001200220022903f001370390012002200a3602c001200241c0006a201120024190016a109102200228028001450d0220024190016a200241c0006a41d00010a1051a02402001200228020c470d00200241086a2001417f200d41016a22052005200d491b10b401200228020821100b2010200141d0006c6a20024190016a41d00010a1051a2002200141016a2201360210200d450d012002200d417f6a220d3602382003450d074100210702400240200820032f01064f0d00200321050c010b41002107034002400240200328020022050d002006ad2109410021050c010b200741016a210720033301044220862006ad8421090b200310232009a72106200521032009422088a7220820052f01064f0d000b0b200b200520084105746a220341206a290000370300200c200341186a290000370300200e200341106a2900003703002002200341086a29000037039001200341f8026a280200210a20024190026a41086a221720034184036a2802003602002002200341fc026a29020037039002200841016a2108200341f0026a2903002109200341e8026a290300210f0240024020070d00200521030c010b200520084102746a41c8056a2802002103410021082007417f6a2205450d00034020032802c80521032005417f6a22050d000b0b2013200b2903003703002014200c2903003703002015200e2903003703002016201728020036020020022002290390013703f00120022002290390023703e00120022008360224200220063602202002200336021c20024100360218200a0d000b0b20024100360280010b200241186a10a602200041086a200241086a41086a280200360200200020022903083702000c060b41d095c700412b41c491c700102d000b1032000b1033000b41d095c700412b41c491c700102d000b41d095c700412b41c491c700102d000b2000410036020820004208370200200110a6020b200241a0026a24000baa0703027f017e067f230041e0006b22032400418fcdc200ad4280808080f00084100c22042900002105200341086a200441086a29000037030020032005370300200410234186d0c000ad4280808080b00184100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2201200341346a360200200341003a00582003200341c0006a41086a220636024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a1065024002400240024002400240412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2201200328023822086a2202417f4c0d01200328023021092003280220210a024002402002450d00200210212204450d022002410f4d0d01200221060c050b200241017422044110200441104b1b2206102122040d040c060b200241017422064110200641104b1b220641004e0d020c040b1033000b1032000b20022006460d0020042002200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062001200620014b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620016b2008490d002006210b0c010b200120086a2001490d012006410174220b2002200b20024b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420016a2009200810a1051a200020023602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000ba50403017f027e027f230041e0006b220224000240024020002802002200290300220342c000544100200041086a29030022045022051b0d0002400240024020034280800154410020051b0d00200342808080800454410020051b0d01411020047920037942c0007c20044200521ba741037622056b4104490d022002413320054102746b3a00482001200241c8006a41011062200029030021032002200041086a290300220437030820022003370300200541706a21000340200220033c00482001200241c8006a410110622003420888200442388684210320044208882104200041016a22052000492106200521002006450d000b20022003370300200220043703082003200484500d04200241286a41146a410b360200200241346a410c360200200241106a41146a410336020020022002360240200241f8e5c200360244200241c8006a41146a4100360200200242033702142002418ca7c7003602102002410c36022c2002419ca8c7003602582002420137024c200241b0e5c2003602482002200241286a3602202002200241c8006a3602382002200241c4006a3602302002200241c0006a360228200241106a419ca8c700103a000b20022003a74102744101723b01482001200241c8006a410210620c030b20022003a74102744102723602482001200241c8006a410410620c020b41f0e4c2004136418c94c700102d000b20022003a74102743a00482001200241c8006a410110620b200241e0006a24000bf12c080a7f017e017f047e147f017e017f017e230041d0026b220424000240024020014115490d0041012105410121060240024002400340200121072000210820052006714101732109024002400240024002400240034002400240024002402003450d00024020054101710d0020002001109f042003417f6a21030b2001410276220a41036c210b200a410174210c4100210d024020014132490d00410241012000200a41306c6a220d290300220e200d41506a220f290300221056200d41086a2903002211200f41086a29030022125620112012511b220f1b200f200d41306a29030022132010200e200f1b221056200d41386a290300220e20122011200f1b221156200e2011511b22141b2013201020141b2000200a200a417f6a2215200f1b221641306c6a220d29030056200e201120141b2211200d41086a29030022125620112012511b22176a2000200c41306c6a220d290300220e200d41506a2218290300221056200d41086a2903002211201841086a29030022125620112012511b22186a2000200c410172221941306c6a220d29030022132010200e20181b221056200d41086a290300220e2012201120181b221156200e2011511b221a6a20132010201a1b2000200c200c417f6a221b20181b221c41306c6a220d29030056200e2011201a1b2211200d41086a29030022125620112012511b221d6a2000200b41306c6a220d290300220e200d41506a221e290300221056200d41086a2903002211201e41086a29030022125620112012511b221e6a200d41306a29030022132010200e201e1b221056200d41386a290300220e20122011201e1b221156200e2011511b221f6a20132010201f1b2000200b200b417f6a2220201e1b222141306c6a220d29030056200e2011201f1b2211200d41086a29030022125620112012511b22066a210d2021200b41016a2020200b201e1b201f1b20061b210b201c2019201b200c20181b201a1b201d1b210c2016200a41016a2015200a200f1b20141b20171b210a0b200d2000200c41306c6a220f290300220e2000200a41306c6a2218290300221056200f41086a2903002211201841086a29030022125620112012511b220f6a2000200b41306c6a220d29030022132010200e200f1b221056200d41086a290300220e20122011200f1b221156200e2011511b220d6a211820132010200d1b2000200c200a200f1b222141306c6a221e29030058200e2011200d1b2211201e41086a29030022125820112012511b450d01200b200a200c200f1b200d1b21210c020b2000200110a0040c0f0b201841016a2218410c490d0002402001410176220b450d002000200141306c6a41506a210a2000210c0340200441a0026a41286a220f200c41286a220d290300370300200441a0026a41206a2218200c41206a221e290300370300200441a0026a41186a2214200c41186a221a290300370300200441a0026a41106a221f200c41106a2215290300370300200441a0026a41086a2216200c41086a22172903003703002004200c2903003703a002200a41086a22192903002111200a41106a221b2903002112200a41186a221c290300210e200a41206a221d2903002110200a41286a22202903002113200c200a290300370300200d2013370300201e2010370300201a200e37030020152012370300201720113703002020200f290300370300201d2018290300370300201c2014290300370300201b201f29030037030020192016290300370300200a20042903a002370300200c41306a210c200a41506a210a200b417f6a220b0d000b0b20012021417f736a21214101210a0c010b201845210a0b0240200a452009724101710d002000200110a1040d0d0b2002450d02202120014f0d01024020022903002000202141306c6a220a29030056200241086a2903002211200a41086a220c29030022125620112012511b450d0020002108200121070c040b200441a0026a41286a221a200041286a2218290300370300200441a0026a41206a221f200041206a221e290300370300200441a0026a41186a2215200041186a2214290300370300200441a0026a41106a2216200041106a220b290300370300200441a0026a41086a2217200041086a220f290300370300200420002903003703a002200c2903002111200a41106a220d2903002112200a41186a2219290300210e200a41206a221b2903002110200a41286a221c29030021132000200a29030037030020182013370300201e20103703002014200e370300200b2012370300200f2011370300201c201a290300370300201b201f29030037030020192015290300370300200d2016290300370300200c2017290300370300200a20042903a002370300200f29030021112000290300210e200441186a221c2018290300370300200441106a221d201e290300370300200441086a222020142903003703002004200b290300370300200041506a2119200041306a211b4100210c2001210b03400240200c200b417f6a220f4f0d00201b200c41306c6a210a0340200e200a290300582011200a41086a29030022125820112012511b450d01200a41306a210a200f200c41016a220c470d000b200f210c0b2019200b41306c6a210a02400340200c200b417f6a220b4f0d01200a2903002112200a41086a210f200a41506a220d210a200e2012562011200f29030022125620112012511b0d000b201a201b200c41306c6a220a41286a220f290300370300201f200a41206a22212903003703002015200a41186a22062903003703002016200a41106a22222903003703002017200a41086a22232903003703002004200a2903003703a002200d41386a22242903002112200d41c0006a22252903002110200d41c8006a22262903002113200d41d0006a22272903002128200d41d8006a2229290300212a200a200d41306a220d290300370300200f202a370300202120283703002006201337030020222010370300202320123703002029201a2903003703002027201f290300370300202620152903003703002025201629030037030020242017290300370300200d20042903a002370300200c41016a210c0c010b0b2000200e370300200020113703082000200429030037031020142020290300370300201e201d2903003703002018201c29030037030002402001200c41016a220a490d002000200a41306c6a21002001200a6b220141154f0d010c0c0b0b200a200141e8c5c4001044000b2021200141ccc6c4001030000b2007450d010b202120074f0d01200441a0026a41286a2217200841286a2222290300370300200441a0026a41206a2219200841206a2223290300370300200441a0026a41186a221b200841186a2224290300370300200441a0026a41106a221c200841106a2225290300370300200441a0026a41086a221d200841086a2226290300370300200420082903003703a0022008202141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e370300202520123703002026201137030020002017290300370300200d2019290300370300200f201b290300370300200b201c290300370300200c201d290300370300200a20042903a0023703002026290300211120082903002112200441186a22272022290300370300200441106a22292023290300370300200441086a2205202429030037030020042025290300370300200841306a2101410021212007417f6a220f450d022001210a0340200a290300201256200a41086a290300220e201156200e2011511b450d03200a41306a210a200f202141016a2221470d000b200f21210c020b410041004184d9c4001030000b2021200741f8c5c4001030000b2008200741306c6a210a200f210b02400340200a2100200b220c20214d22060d01200c417f6a210b200041506a220a290300201258200a41086a290300220e201158200e2011511b0d000b0b0240200c2021490d00200f200c490d0241800121154100210d4100211a4100210f4100211441800121162001202141306c6a220921010340200020016b220a41306e210c0240200a41afe0004b22200d00200c41807f6a200c201a200d492014200f49220b7222181b210a02402018450d002016200a200b1b2116200a2015200b1b21150c010b200a200a41017622166b21150b02402014200f470d00024020160d00200441206a220f21140c010b4100210c200441206a2214210f2001210a0340200f200c3a0000200f410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b4102744198c6c4006a2802006a210f200a41306a210a2016200c41016a220c470d000b0b0240201a200d470d00024020150d00200441a0016a220d211a0c010b200041506a210a4100210c200441a0016a221a210d0340200d200c3a0000200d410041014102200a2903002210201285200a41086a290300220e20118584501b2010201254200e201154200e2011511b1b41027441a4c6c4006a2802006a210d200a41506a210a2015200c41016a220c470d000b0b0240200d201a6b220a200f20146b220c200c200a4b1b221f450d002017200120142d000041306c6a220a41286a2903003703002019200a41206a290300370300201b200a41186a290300370300201c200a41106a290300370300201d200a41086a2903003703002004200a2903003703a002200120142d000041306c6a220a2000201a2d0000417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703000240201f4101460d004100210b03402000201a200b6a22182d0000417f7341306c6a220a20012014200b6a41016a221e2d000041306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a2903003703002001201e2d000041306c6a220a2000201841016a2d0000417f7341306c6a220c290300370300200a41286a200c41286a290300370300200a41206a200c41206a290300370300200a41186a200c41186a290300370300200a41106a200c41106a290300370300200a41086a200c41086a290300370300200b41026a210a200b41016a220c210b200a201f490d000b201a200c6a211a2014200c6a21140b2000201a2d0000417f7341306c6a220a20042903a002370300200a41286a2017290300370300200a41206a2019290300370300200a41186a201b290300370300200a41106a201c290300370300200a41086a201d290300370300201a41016a211a201441016a21140b2001201641306c6a20012014200f461b21012000410020156b41306c6a2000201a200d461b210020200d000b024002402014200f4f0d002000210a034020172001200f417f6a220f2d000041306c6a220c41286a220b2903003703002019200c41206a220d290300370300201b200c41186a2200290300370300201c200c41106a2218290300370300201d200c41086a221e2903003703002004200c2903003703a002200a41506a220a41086a221a290300210e200a41106a221f2903002110200a41186a22152903002113200a41206a22162903002128200a41286a2220290300212a200c200a290300370300200b202a370300200d20283703002000201337030020182010370300201e200e37030020202017290300370300201620192903003703002015201b290300370300201f201c290300370300201a201d290300370300200a20042903a0023703002014200f490d000c020b0b2001210a201a200d4f0d000340200d417f6a220d2d0000210c2017200a41286a220b2903003703002019200a41206a220f290300370300201b200a41186a2201290300370300201c200a41106a2218290300370300201d200a41086a221e2903003703002004200a2903003703a0022000200c417f7341306c6a220c41086a2214290300210e200c41106a221f2903002110200c41186a22152903002113200c41206a22162903002128200c41286a2220290300212a200a200c290300370300200b202a370300200f20283703002001201337030020182010370300201e200e37030020202017290300370300201620192903003703002015201b290300370300201f201c2903003703002014201d290300370300200c20042903a002370300200a41306a210a201a200d490d000b0b2008201137030820082012370300200820042903003703102024200529030037030020232029290300370300202220272903003703002007200a20096b41306e20216a22014d0d032017202229030037030020192023290300370300201b2024290300370300201c2025290300370300201d2026290300370300200420082903003703a0022008200141306c6a220a41086a220c2903002111200a41106a220b2903002112200a41186a220f290300210e200a41206a220d2903002110200a41286a220029030021132008200a29030037030020222013370300202320103703002024200e370300202520123703002026201137030020002017290300370300200d2019290300370300200f201b290300370300200b201c290300370300200c201d290300370300200a20042903a002370300200720016b220c450d04200c20012001200c4b1b210b2007410376210f200a41306a2100024002402001200c417f6a220c490d002000200c200a200310dc01200821000c010b200820012002200310dc01200a2102200c21010b200b200f4f2105200141154f0d010c050b0b2021200c4188c6c4001044000b200c200f4188c6c4001043000b2001200741f8c5c4001030000b41b0c6c400411c418c94c700102d000b20014102490d00200041a07f6a210d410021184101210c0340200c41016a210f02402000200c41306c6a220b290300220e200b41506a220a29030058200b41086a221e2903002211200a41086a221429030022125820112012511b0d00200441186a221a200b41286a221f290300370300200441106a2215200b41206a2216290300370300200441086a2217200b41186a22192903003703002004200b290310370300200b200a290300370300201e2014290300370300200b41106a200a41106a2903003703002019200a41186a2903003703002016200a41206a290300370300201f200a41286a2903003703002000200c417f6a221e41306c6a211402400240201e0d004100211e0c010b2018210c200d210a200e200b41a07f6a220b290300582011200b41086a29030022125820112012511b0d00024002400340200a4188016a200a41d8006a290300370300200a4180016a200a41d0006a290300370300200a41f8006a200a41c8006a290300370300200a41f0006a200a41c0006a290300370300200a41e8006a200a41386a290300370300200a41e0006a200a41306a290300370300200c4101460d01200a2903002112200a41086a210b200c417f6a210c200a41506a210a200e2012562011200b29030022125620112012511b0d000c020b0b4100210c0b2000200c41306c6a2114200c211e0b2014200e370300201420113703082000201e41306c6a220a41286a201a290300370300200a41206a2015290300370300200a41186a2017290300370300200a20042903003703100b201841016a2118200d41306a210d200f210c200f2001470d000b0b200441d0026a24000baa0703027f017e067f230041e0006b22032400418fcdc200ad4280808080f00084100c22042900002105200341086a200441086a290000370300200320053703002004102341f4cfc000ad4280808080a00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2201200341346a360200200341003a00582003200341c0006a41086a220636024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a1065024002400240024002400240412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2201200328023822086a2202417f4c0d01200328023021092003280220210a024002402002450d00200210212204450d022002410f4d0d01200221060c050b200241017422044110200441104b1b2206102122040d040c060b200241017422064110200641104b1b220641004e0d020c040b1033000b1032000b20022006460d0020042002200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062001200620014b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620016b2008490d002006210b0c010b200120086a2001490d012006410174220b2002200b20024b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420016a2009200810a1051a200020023602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000bac0201037f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00410021020c010b200328021421042003200341186a280200360224200320013602202003200341206a1088010240024020032802000d0020032802042105410121020c010b4100210220034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b0b2004450d00200110230b2000200536020420002002360200200341e0006a24000baa0703027f017e067f230041e0006b22032400418fcdc200ad4280808080f00084100c22042900002105200341086a200441086a290000370300200320053703002004102341e2cfc000ad4280808080a00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2201200341346a360200200341003a00582003200341c0006a41086a220636024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a1065024002400240024002400240412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2201200328023822086a2202417f4c0d01200328023021092003280220210a024002402002450d00200210212204450d022002410f4d0d01200221060c050b200241017422044110200441104b1b2206102122040d040c060b200241017422064110200641104b1b220641004e0d020c040b1033000b1032000b20022006460d0020042002200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062001200620014b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620016b2008490d002006210b0c010b200120086a2001490d012006410174220b2002200b20024b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420016a2009200810a1051a200020023602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000b8b1606047f017e027f017e0a7f027e230041c0036b22012400200141b0026a41186a4200370300200141b0026a41106a22024200370300200141b0026a41086a22034200370300200142003703b00241e4dec400ad4280808080e00084100c22042900002105200141a0036a41086a2206200441086a290000370300200120053703a0032004102320032006290300370300200120012903a0033703b00241f3dec400ad4280808080e00084100c220429000021052006200441086a290000370300200120053703a00320041023200220012903a003220537030020014190026a41086a200329030037030020014190026a41106a200537030020014190026a41186a2006290300370300200120012903b00237039002200141086a20014190026a412010cd010240024002400240024002400240024002400240024002402001280208450d00200128020c450d00200141b0026a41186a22044200370300200141b0026a41106a22074200370300200141b0026a41086a22034200370300200142003703b00241e4dec400ad4280808080e000842208100c22092900002105200141a0036a41086a2206200941086a290000370300200120053703a0032009102320032006290300370300200120012903a0033703b00241d483c500ad4280808080e00184100c220929000021052006200941086a290000370300200120053703a00320091023200220012903a003370000200241086a220a200629030037000020014190026a41086a220b200329030037030020014190026a41106a220c200729030037030020014190026a41186a220d2004290300370300200120012903b002370390022001412036028c03200120014190026a36028803200141b0026a20014190026aad428080808080048422051010108b010240024020012802b002220e0d00410321090c010b20012802b402210f02400240024020032802002210450d00200e2d0000221141024b0d00410121090240024020110e03000401000b2010417f6a4104490d01200e2800012112410021090c030b410221090c010b20014100360218200142013703102001410a3602a403200120014188036a3602a0032001200141106a3602f002200141a4016a4101360200200142013702940120014180c5c600360290012001200141a0036a3602a001200141f0026a4184a5c20020014190016a10311a2001350218422086200135021084100a02402001280214450d00200128021010230b410321090b0b200f450d00200e10230b200141106a200041e80010a1051a2001410036029801200142013703900120014190016a41004100109a0120032001280298012200360200200141fc006a201236020020014188016a2000360200200120012903900122133703b00220014102200920094103461b3602782001201337038001200442003703002007420037030020034200370300200142003703b0022008100c220029000021082006200041086a290000370300200120083703a0032000102320032006290300370300200120012903a0033703b00241e481c500ad4280808080a001842213100c220029000021082006200041086a290000370300200120083703a00320001023200220012903a003370000200a2006290300370000200b2003290300370300200c2007290300370300200d2004290300370300200120012903b00237039002200120014190026a412010cd012001280204410020012802001b220641016a22072006490d01200141b0026a41186a22044200370300200141b0026a41106a22004200370300200141b0026a41086a22034200370300200142003703b00241e4dec400ad4280808080e000842208100c22092900002114200141a0036a41086a2206200941086a290000370300200120143703a0032009102320032006290300370300200120012903a0033703b0022013100c220929000021132006200941086a290000370300200120133703a00320091023200220012903a003370000200241086a2209200629030037000020014190026a41086a2212200329030037030020014190026a41106a220a200029030037030020014190026a41186a220b2004290300370300200120012903b002370390022001200736029001200520014190016aad4280808080c00084100e20014190016a200141106a41800110a1051a200442003703002000420037030020034200370300200142003703b0022008100c220729000021082006200741086a290000370300200120083703a0032007102320032006290300370300200120012903a0033703b00241c0e3c400ad4280808080e00084100c220729000021082006200741086a290000370300200120083703a00320071023200220012903a0033700002009200629030037000020122003290300370300200a2000290300370300200b2004290300370300200120012903b0023703900220014188036a20051010108b01024002402001280288030d00200142003702a403200141083602a003410410212202450d04200142043702b402200120023602b0024100200141b0026a1061200141d8026a20012802b802360200200120012903b0023703d002200141a0036a10af040c010b200141d0026a41086a20014188036a41086a28020036020020012001290388033703d0020b200141e0026a41086a200141d0026a41086a2802002202360200200120012903d0023703e002024002402002450d00200141b0026a20012802e00220024101107520012802b0024101470d0120012802e402450d0c20012802e00210230c0c0b4101200141e0026a106120014190016a200141e0026a10b7040c090b20012802b40221040240200141bc026a2802002202200141b0026a41086a2802002206460d0020012802e802200220066b6a220341046a2200417f4c0d040240024020000d00410121070c010b200010212207450d040b200120003602f402200120073602f002200120033602f8022001200141f0026a3602b0022004200141b0026a200210b20320032002490d0520012802f80222042003490d0620012802e80222042006490d0720012802f002210020012802e00221072001200320026b2203360280032001200420066b22043602840320032004470d08200020026a200720066a200310a1051a20014190016a200141f0026a10b70420012802f802210620012802f402210320012802f002210220012802e402450d0a20012802e00210230c0a0b2001200141e0026a3602b0022004200141b0026a200610b20320014190016a200141e0026a10b7040c080b200010b8040c0a0b200141106a10b80420014184016a28020041ffffff3f71450d0920012802800110230c090b1033000b1032000b2002200341c494c6001044000b2003200441c494c6001043000b2006200441d494c6001044000b200141a0036a41146a410b360200200141ac036a410d36020020014188036a41146a4103360200200120014180036a3602b803200120014184036a3602bc03200141b0026a41146a41003602002001420337028c032001418ca7c700360288032001410d3602a4032001419ca8c7003602c002200142013702b402200141e0a7c7003602b0022001200141a0036a360298032001200141b0026a3602b0032001200141bc036a3602a8032001200141b8036a3602a00320014188036a419ca8c700103a000b20012802e802210620012802e402210320012802e00221020b2002450d0020052006ad4220862002ad84100e02402003450d00200210230b20014190016a10b80420014184026a28020041ffffff3f71450d0120012802800210230c010b20014190016a10b80420014184026a28020041ffffff3f71450d0020012802800210230b200141c0036a24000bd50302047f047e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022040d00200041003a00000c010b200341186a28020021052003280214210641002101200341003a006802400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341206a41186a200341c8006a41186a2903002207370300200341206a41106a200341c8006a41106a2903002208370300200341206a41086a200341c8006a41086a290300220937030020032003290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200341003a00680b4100210120034100360228200342013703202003410a3602442003200341086a3602402003200341206a36026c200341dc006a41013602002003420137024c20034180c5c6003602482003200341c0006a360258200341ec006a4184a5c200200341c8006a10311a2003350228422086200335022084100a2003280224450d00200328022010230b200020013a00002006450d00200410230b200341f0006a24000bd20804047f047e047f047e230041d0016b220324002003200236024420032001360240200341c8006a2002ad4220862001ad841010108b0102400240200328024822040d00200041003602200c010b200328024c21052003200341d0006a280200220636027c2003200436027841002101200341003a00c8010240024002400240024002400240024002400240034020062001460d01200341a8016a20016a200420016a22022d00003a00002003200241016a3602782003200141016a22023a00c8012002210120024120470d000b20034188016a41086a200341a8016a41086a29030037030020034188016a41106a200341a8016a41106a29030037030020034188016a41186a200341a8016a41186a290300370300200320032903a801370388012003200620026b36027c200341286a200341f8006a1080022003290328a70d08200341286a41106a290300210720032903302108200341106a200341f8006a1080022003290310a70d08200341106a41106a29030021092003290318210a200341a8016a200341f8006a10b20420032802a8012202450d08200341b0016a280200210b20032802ac012101200341086a200341f8006a10880120032802080d07200328027c220c200328020c4102742206490d072006417f4c0d0320060d014101210d0c020b2003410036027c200141ff0171450d07200341003a00c8010c070b20061027220d450d02200d2003280278220e200610a1051a2003200c20066b36027c2003200e20066a3602780b200d450d0402402006ad220f422086200f84220f422088a722060d00200fa721060c030b0240200d2006724103710d00200fa722064103710d002006410276220c450d03200f422288a7210e0c040b200fa7450d04200d10230c040b1032000b1033000b4100210e02402006450d00200d10230b4100210c4104210d0b41000d00200d450d00200341d8006a41186a20034188016a41186a290300220f370300200341d8006a41106a20034188016a41106a2903002210370300200341d8006a41086a20034188016a41086a290300221137030020032003290388012212370358200041186a20093703002000200a3703102000200737030820002008370300200041346a200e360200200041306a200c3602002000412c6a200d360200200041286a200b3602002000200136022420002002360220200041386a2012370300200041c0006a2011370300200041c8006a2010370300200041d0006a200f3703000c020b2001450d00200141186c450d00200210230b200341003602900120034201370388012003410a36025c2003200341c0006a360258200320034188016a36028401200341bc016a4101360200200342013702ac0120034180c5c6003602a8012003200341d8006a3602b80120034184016a4184a5c200200341a8016a10311a20033502900142208620033502880184100a0240200328028c01450d0020032802880110230b200041003602200b2005450d00200410230b200341d0016a24000b883510047f017e017f017e017f017e057f017e097f017e037f017e017f017e0a7f077e23004190026b22012400200141a0016a41186a22024200370300200141a0016a41106a22034200370300200141a0016a41086a22044200370300200142003703a001418fcdc200ad4280808080f000842205100c2206290000210720014180016a41086a2208200641086a2900003703002001200737038001200610232004200829030037030020012001290380013703a00141b8dbc100ad42808080809001842207100c220629000021092008200641086a29000037030020012009370380012006102320032001290380012209370300200141286a41086a220a2004290300370300200141286a41106a220b2009370300200141286a41186a220c2008290300370300200120012903a001370328200141a0016a200141286a10ba012003280200210d20012903a0012109200242003703002003420037030020044200370300200142003703a0012005100c220629000021052008200641086a2900003703002001200537038001200610232004200829030037030020012001290380013703a0012007100c220629000021052008200641086a29000037030020012005370380012006102320032001290380012205370300200a2004290300370300200b2005370300200c2008290300370300200120012903a00137032802400240410410212208450d0020084100200d41016a20094202511b220e36000020084104410810252208450d0041002102200841003a0004200141286aad220f42808080808004842008ad4280808080d00084100e20081023200141a0016a41186a220a4200370300200141a0016a41106a220b4200370300200141a0016a41086a22044200370300200142003703a001418fcdc200ad4280808080f00084100c2206290000210520014180016a41086a2208200641086a2900003703002001200537038001200610232004200829030037030020012001290380013703a00141dce0c100ad4280808080a00184100c220629000021052008200641086a2900003703002001200537038001200610232003200129038001370000200341086a2008290300370000200141286a41086a2004290300370300200141286a41106a200b290300370300200141286a41186a200a290300370300200120012903a001370328200141e0006a200141286a10e401024002400240200128026022100d0020014100360220200142043703180c010b20012902642105200120103602182001200537021c2005422088a722082005a72202470d010b200141186a2002410110a50120012802182110200128022021080b201020084103746a220420003602042004200e3602002001200841016a22113602200240024002400240200e411d4f0d00201121120c010b024020110d0041002112200141003602200c010b200e41646a2104200841ffffffff017141016a2106410021132010210802400340200828020020044f0d01200841086a21082006201341016a2213470d000b0b0240024020112013490d0041002112200141003602202013450d0120134103742114200141fc016aad4280808080c00084210520014180026a211520014180026a41086a21162010210c0340200c280200210d418fcdc200ad4280808080f000842207100c22082900002109200141e0006a41086a2202200841086a290000370300200120093703602008102341ecc4c000ad4280808080b00284100c2208290000210920014180016a41086a2200200841086a2900003703002001200937038001200810232001200d3602fc0120012005100d22082900003703800220081023200141003a00b001200120153602ac01200120163602a4012001200141fc016a3602a801200120014180026a3602a001200141286a200141a0016a10652001280230220a41206a2204417f4c0d07200128022821170240024002402004450d00200410212208450d072004410f4d0d01200421060c020b200441017422084110200841104b1b2206102122080d010c080b200441017422064110200641104b1b22064100480d0620042006460d0020082004200610252208450d070b20082001290360370000200841086a20022903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d062006200b460d0020082006200b10252208450d070b2008200129038001370010200841186a20002903003700000240200b41606a200a4f0d00200a41206a2206200a490d06200b41017422182006201820064b1b22064100480d06200b2006460d002008200b200610252208450d070b200841206a2017200a10a1051a0240200128022c450d00201710230b2004ad4220862008ad841012200810232007100c220829000021072002200841086a290000370300200120073703602008102341ffc4c000ad4280808080b00284100c220829000021072000200841086a2900003703002001200737038001200810232001200d3602fc0120012005100d22082900003703800220081023200141003a00b001200120153602ac01200120163602a4012001200141fc016a3602a801200120014180026a3602a001200141286a200141a0016a10652001280230220a41206a2204417f4c0d072001280228210b0240024002402004450d00200410212208450d072004410f4d0d01200421060c020b200441017422084110200841104b1b220610212208450d080c010b200441017422064110200641104b1b22064100480d0620042006460d0020082004200610252208450d070b20082001290360370000200841086a20022903003700000240024020064170714110460d00200621020c010b200641017422024120200241204b1b22024100480d0620062002460d0020082006200210252208450d070b2008200129038001370010200841186a20002903003700000240200241606a200a4f0d00200a415f4b0d06200241017422062004200620044b1b22064100480d0620022006460d0020082002200610252208450d070b200841206a200b200a10a1051a0240200128022c450d00200b10230b200c41086a210c2004ad4220862008ad84101220081023201441786a22140d000c020b0b20132011103c000b201120136b2217450d0002402013450d002010201020134103746a201741037410a2051a0b2001201736022020102802042113200141a0016a41186a4200370300200141a0016a41106a22164200370300200141a0016a41086a22084200370300200142003703a00141db97c700ad4280808080f00084100c22042900002105200141e0006a41086a2206200441086a290000370300200120053703602004102320082006290300370300200120012903603703a00141a7a8c000ad4280808080b00184100c2204290000210520014180016a41086a2206200441086a29000037030020012005370380012004102320162001290380012205370300200141286a41086a2008290300370300200141286a41106a2005370300200141286a41186a2006290300370300200120012903a001370328200141a0016a200141286a412010e5014101210820012902a40121190240024020012802a00122044101460d00200441014621080c010b2019422088a722182013201320184b1b220d2019a72202490d000240200d20024d0d00200141fc016aad4280808080c00084210720014180026a211420014180026a41086a211541db97c700ad4280808080f00084210903402009100c22082900002105200141e0006a41086a2200200841086a290000370300200120053703602008102341e297c700ad4280808080a00284100c2208290000210520014180016a41086a220c200841086a290000370300200120053703800120081023200120023602fc0120012007100d22082900003703800220081023200141003a00b001200120143602ac01200120153602a4012001200141fc016a3602a801200120014180026a3602a001200141286a200141a0016a10652001280230220a41206a2204417f4c0d072001280228210b0240024002402004450d00200410212208450d072004410f4d0d01200421060c020b41102106411010212208450d080c010b200441017422064110200641104b1b22064100480d06024020042006470d00200421060c010b20082004200610252208450d070b20082001290360370000200841086a20002903003700000240024020064170714110460d00200621000c010b200641017422004120200041204b1b22004100480d0620062000460d0020082006200010252208450d070b2008200129038001370010200841186a200c2903003700000240200041606a200a4f0d00200a415f4b0d06200041017422062004200620044b1b22064100480d0620002006460d0020082000200610252208450d070b200241016a2102200841206a200b200a10a1051a0240200128022c450d00200b10230b2004ad4220862008ad84101120081023200d2002470d000b0b20132018492108201942808080807083200dad8421190b200120193702840220012008360280020240024020080d00200141a0016a41186a22064200370300200141a0016a41106a22024200370300200141a0016a41086a22084200370300200142003703a00141db97c700ad4280808080f00084100c22042900002105200141e0006a41086a2200200441086a290000370300200120053703602004102320082000290300370300200120012903603703a00141a7a8c000ad4280808080b00184100c2204290000210520014180016a41086a2200200441086a2900003703002001200537038001200410232016200129038001370000201641086a2000290300370000200141286a41086a2008290300370300200141286a41106a2002290300370300200141286a41186a2006290300370300200120012903a001370328200f428080808080048410110c010b200141a0016a41186a22064200370300200141a0016a41106a22024200370300200141a0016a41086a22084200370300200142003703a00141db97c700ad4280808080f00084100c22042900002105200141e0006a41086a2200200441086a290000370300200120053703602004102320082000290300370300200120012903603703a00141a7a8c000ad4280808080b00184100c2204290000210520014180016a41086a2200200441086a2900003703002001200537038001200410232016200129038001370000201641086a2000290300370000200141286a41086a2008290300370300200141286a41106a2002290300370300200141286a41186a2006290300370300200120012903a001370328200141203602a4012001200141286a3602a00120014180026a410472200141a0016a10e6010b201721120b200128021c2115200141a0016a41186a22024200370300200141a0016a41106a22004200370300200141a0016a41086a22044200370300200142003703a001418fcdc200ad4280808080f00084100c2206290000210520014180016a41086a2208200641086a2900003703002001200537038001200610232004200829030037030020012001290380013703a00141dce0c100ad4280808080a00184100c220629000021052008200641086a2900003703002001200537038001200610232003200129038001370000200341086a2008290300370000200141286a41086a2004290300370300200141286a41106a2000290300370300200141286a41186a2002290300370300200120012903a0013703280240024020100d00200f428080808080048410110c010b20124103744104722208417f4c0d04200810212204450d01200141003602a801200120083602a401200120043602a0012012200141a0016a10610240024020120d0020012802a801210820012802a00121020c010b201020124103746a2114410020012802a801220b6b210020012802a4012104410021080340200b20086a210a201020086a220c280200210d02400240200420006a4104490d0020012802a0012102200421060c010b200a41046a2206200a490d05200441017422022006200220064b1b22064100480d050240024020040d00024020060d00410121020c020b200610212202450d080c010b20012802a001210220042006460d0020022004200610252202450d070b200120063602a401200120023602a0010b2002200b6a20086a200d3600002001200a41046a22043602a801200c41046a280200210d02400240200620006a417c6a41034d0d00200621040c010b200441046a22172004490d05200641017422042017200420174b1b22044100480d050240024020060d00024020040d00410121020c020b200410212202450d080c010b20062004460d0020022006200410252202450d070b200120043602a401200120023602a0010b2002200b6a20086a41046a200d3600002001200a41086a3602a801200041786a2100200841086a2108200c41086a2014470d000b200b20086a21080b20012802a4012104200f42808080808004842008ad4220862002ad84100e02402004450d00200210230b201541ffffffff0171450d00201010230b200141a0016a41186a221a4200370300200141a0016a41106a221b4200370300200141a0016a41086a221c4200370300200142003703a001418fcdc200ad4280808080f00084221d100c2208290000210520014180016a41086a221e200841086a290000370300200120053703800120081023201c201e29030037030020012001290380013703a001419ce3c100ad4280808080e00284221f100c22082900002105201e200841086a2900003703002001200537038001200810232003200129038001370000200341086a2220201e290300370000200141286a41086a2221201c290300370300200141286a41106a2222201b290300370300200141286a41186a2223201a290300370300200120012903a001370328200141106a200141286a412010cd01200128021421240240200128021022254101470d00024020244100200e41646a22082008200e4b1b22264f0d00200141d8016a2127200141a0016a41246a2100200141a0016a41286a2117202421280340200141286a202810e701200141a0016a200128022822082001280230220410e8010240024020012802a00122290d004200212a410821290c010b2004ad4220862008ad84101120012902a401212a0b0240200128022c450d00200810230b2029202a422088a7220841d8006c6a210b2029210202402008450d00034020014180016a41186a220d200241186a29030037030020014180016a41106a2210200241106a29030037030020014180016a41086a220c200241086a2903003703002002280220210a20022903002105200141a0016a41206a2214200241c4006a2902003703002017200241cc006a290200370300200141a0016a41306a2215200241d4006a280200360200200141a0016a41086a22082002412c6a290200370300200141a0016a41106a2204200241346a290200370300200141a0016a41186a22062002413c6a29020037030020012005370380012001200241246a2902003703a001200241d8006a2102200a450d01200141e0006a41186a2216200d290300370300200141e0006a41106a220d2010290300370300200141e0006a41086a2210200c290300370300200141286a41086a22132008290300370300200141286a41106a22182004290300370300200141286a41186a220e2006290300370300200141286a41206a22122014290300370300200141286a41286a22142017290300370300200141286a41306a221120152802003602002001200129038001370360200120012903a001370328200620162903003703002004200d2903003703002008201029030037030020002001290328370200200041086a2013290300370200200041106a2018290300370200200041186a200e290300370200200041206a2012290300370200200041286a2014290300370200200041306a2011280200360200200120012903603703a0012001200a3602c0012001420037038802200142003703800220012006290300370388012001200429030037038001202720012903a001200829030020014180016a20014180026a10e901024020012802c8012208450d00200841306c2104200a210803402008200841206a290300200841286a29030020014180016a20014180026a10e901200841306a2108200441506a22040d000b0b20014180026a41086a290300212b200129038002212c20012802cc01210d02402001290380012207200c290300220584500d0020012802d4012208450d002001202c2007202c200754202b200554202b2005511b22041b222d202b200520041b222e2008ad420010a70520084105742104200141086a29030021092001290300212f202d2105202e2107200d210803402008202f20052005202f56200720095620072009511b22061b22192009200720061b223010ea01200720307d2005201954ad7d2107200520197d2105200841206a2108200441606a22040d000b427f202b202e7d202c202d54ad7d220920077c202c202d7d220720057c22192007542208ad7c22052008200520095420052009511b22081b212b427f201920081b212c0b202c202b10eb01024020012802c4012208450d00200841306c450d00200a10230b024020012802d00141ffffff3f71450d00200d10230b2002200b470d000b200b21020b202aa721040240200b2002460d0003400240200241246a2802002208450d00200841306c450d00200241206a28020010230b200241d8006a21080240200241306a28020041ffffff3f71450d002002412c6a28020010230b20082102200b2008470d000b0b202841016a212802402004450d00200441d8006c450d00202910230b20282026470d000b0b20242026202420264b1b21240b201a4200370300201b4200370300201c4200370300200142003703a001201d100c22082900002105201e200841086a290000370300200120053703800120081023201c201e29030037030020012001290380013703a001201f100c22082900002105201e200841086a29000037030020012005370380012008102320032001290380013700002020201e2903003700002021201c2903003703002022201b2903003703002023201a290300370300200120012903a0013703280240024020250d00200f428080808080048410110c010b200120243602a001200f4280808080800484200141a0016aad4280808080c00084100e0b20014190026a24000f0b1033000b102c000b102a000b1032000be30401097f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b010240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a1088010240024020022802000d0020022802042205200228022422064103762201200120054b1b22014103742207417f4c0d030240024020010d00410421080c010b200710212208450d050b200241003602502002200136024c20022008360248024002402005450d004100210103402002410036022820064104490d0220022006417c6a220636022420022002280220220741046a360220200728000021092002410036022820064104490d0220022006417c6a22063602242002200741086a3602202007280004210702402001200228024c470d00200241c8006a2001410110a50120022802482108200228025021010b200820014103746a220a2007360204200a20093602002002200141016a22013602502005417f6a22050d000b0b2008450d012000200229024c370204200020083602000c020b200228024c41ffffffff0171450d00200810230b20024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350230422086200235022884100a0240200228022c450d00200228022810230b200041003602000b2004450d00200310230b200241e0006a24000f0b1032000b1033000bba0201037f230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822010d00200041003602000c010b200341106a2802002102200328020c2104200341003602380240024020024104490d0020012800002105200341003602382002417c714104460d00200041086a200128000436020020002005360204200041013602000c010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034180c5c6003602382003200341286a360248200341346a4184a5c200200341386a10311a2003350220422086200335021884100a0240200328021c450d00200328021810230b200041003602000b2004450d00200110230b200341d0006a24000b3c01017f02404108102122020d001033000b200220002802003600002002200028020436000420012902002002ad4280808080800184100e200210230bf90403027f017e057f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a29000037030020022004370300200310234191d0c000ad4280808080800284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bfd0f06057f017e0b7f027e067f047e230041c0026b220324002003200236021c20032001360218200341206a2002ad4220862001ad841010108b0102400240200328022022040d00200041003602000c010b200328022421052003200341286a28020036023420032004360230200341106a200341306a1088010240024020032802100d00024002400240200328021422062003280234220741d8006e2201200120064b1bad42d8007e2208422088a70d002008a72201417f4c0d000240024020010d00410821090c010b200110212209450d020b4100210a20034100360240200320093602382003200141d8006e36023c02402006450d004100210b034041002101200341003a00b802200b41016a210b417f210202400240034020072001460d0120034198026a20016a2003280230220c2d00003a00002003200720026a3602342003200c41016a3602302003200141016a220d3a00b8022002417f6a2102200d2101200d4120470d000b200341a8016a41186a220e20034198026a41186a220f290300370300200341a8016a41106a221020034198026a41106a2211290300370300200341a8016a41086a221220034198026a41086a221329030037030020032003290398023703a8012007200d6b22014110490d062003200c41116a3602302003200141706a360234200c41096a2900002114200c2900012115200341086a200341306a1088012003280208450d010c060b200141ff0171450d05200341003a00b8020c050b200328020c22162003280234220741306e2201200120164b1bad42307e2208422088a70d022008a72201417f4c0d020240024020010d00410821170c010b200110212217450d040b41002118200341003602d001200320173602c8012003200141306e22023602cc01024002400240024002402016450d0041002118410021190340200341003a00b802201941016a2119417f210241002101034020072001460d0320034198026a20016a2003280230220c2d00003a00002003200720026a3602342003200c41016a3602302003200141016a220d3a00b8022002417f6a2102200d2101200d4120470d000b200341f8016a41186a2201200f290300370300200341f8016a41106a22022011290300370300200341f8016a41086a221a201329030037030020032003290398023703f8012007200d6b220d4110490d03200341d8016a41086a221b201a290300370300200341d8016a41106a221a2002290300370300200341d8016a41186a22022001290300370300200320032903f8013703d8012003200c41116a3602302003200d41706a2207360234200c41096a2900002108200c290001211c0240201820032802cc01470d00200341c8016a2018410110a40120032802c801211720032802d00121180b2017201841306c6a220120032903d801370300201b290300211d201a290300211e2002290300211f2001201c370320200141286a2008370300200141186a201f370300200141106a201e370300200141086a201d3703002003201841016a22183602d00120192016470d000b20032802cc0121020b2017450d0820034198026a200341306a10cf01200328029802220d450d02200328029c02210720032802342201410f4b0d030240200741ffffff3f71450d00200d10230b2002450d08200241306c450d08201710230c080b200141ff0171450d00200341003a00b8020b20032802cc012201450d06200141306c450d06201710230c060b2002450d05200241306c450d05201710230c050b20032802a002210c200341e8006a41086a20122903002208370300200341e8006a41106a2010290300221c370300200341e8006a41186a200e290300221d370300200341c8006a41186a2216201d370300200341c8006a41106a2219201c370300200341c8006a41086a220f20083703002003200141706a36023420032003280230220141106a360230200320032903a801220837036820032008370348200141086a29000021082001290000211c0240200a200328023c470d00200341386a200a410110a901200328023821092003280240210a0b2009200a41d8006c6a2201201c370310200120143703082001201537030020012017360220200141186a2008370300200141346a200c360200200141306a20073602002001412c6a200d360200200141286a2018360200200141246a2002360200200141386a2003290348370200200141c0006a200f290300370200200141c8006a2019290300370200200141d0006a20162903003702002003200a41016a220a360240200b2006460d01200328023421070c000b0b2009450d032000200329023c370204200020093602000c040b1032000b1033000b200341e8006a41086a20034188016a41086a2903003703000240200a450d00200a41d8006c2102200941306a210103400240200141746a280200220d450d00200d41306c450d00200141706a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141d8006a2101200241a87f6a22020d000b0b200328023c2201450d00200141d8006c450d00200910230b2003410036028002200342013703f8012003410a3602dc012003200341186a3602d8012003200341f8016a3602a801200341ac026a41013602002003420137029c0220034180c5c600360298022003200341d8016a3602a802200341a8016a4184a5c20020034198026a10311a20033502800242208620033502f80184100a024020032802fc01450d0020032802f80110230b200041003602000b2005450d00200410230b200341c0026a24000b961d020f7f137e23004180056b22052400200541206a200010c70120054198046a20052802202206200528022810e101200541b0036a41086a2207200541a1046a290000370300200541b0036a41106a2208200541a9046a290000370300200541b0036a41186a2209200541b1046a29000037030020052005290099043703b0034100210a024020052d0098044101470d00200541c8026a41186a2009290300370300200541c8026a41106a2008290300370300200541c8026a41086a2007290300370300200520052903b0033703c8024101210a0b02402005280224450d00200610230b02400240200a450d00200541186a200541c8026a41186a2206290300370300200541106a200541c8026a41106a2207290300370300200541086a200541c8026a41086a2208290300370300200520052903c802370300200541d8016a200510c60120054198046a20052802d801220920052802e00110e20120054188016a41086a220b20054198046a41086a29030037030020054188016a41106a220c20054198046a41106a29030037030020054188016a41186a220d20054198046a41186a290300370300200541b0036a41086a220e200541c4046a290200370300200541b0036a41106a220f200541cc046a290200370300200541b0036a41186a2210200541d4046a290200370300200541b0036a41206a2211200541dc046a290200370300200541b0036a41286a2212200541e4046a290200370300200541b0036a41306a2213200541ec046a280200360200200520052903980437038801200520052902bc043703b003024020052802b804220a450d0020054190026a41186a200d29030037030020054190026a41106a200c29030037030020054190026a41086a200b2903003703002008200e2903003703002007200f29030037030020062010290300370300200541c8026a41206a2011290300370300200541c8026a41286a2012290300370300200541c8026a41306a2013280200360200200520052903880137039002200520052903b0033703c8020b024020052802dc01450d00200910230b200a450d00200541c4006a20052903c802370200200541206a41186a220620054190026a41186a290300370300200541206a41106a220720054190026a41106a290300370300200541206a41086a220820054190026a41086a290300370300200541cc006a200541c8026a41086a290300370200200541d4006a200541c8026a41106a290300370200200541dc006a200541c8026a41186a290300370200200541e4006a200541e8026a290300370200200541ec006a200541c8026a41286a290300370200200541f4006a200541f8026a28020036020020052005290390023703202005200a36024020082903002114200529032021150240024020072903002216200120162001542006290300221720025420172002511b22071b22182017200220071b22198450450d002015211a2014211b0c010b2006201720197d2016201854ad7d221c3703002005201620187d221a37033002400240201a4280c8afa02556201c420052201c501b450d0020182116201921170c010b200541386a420037030020054200370330201c20027c201a20017c2201201a54ad7c21020b20054200201420177d2015201654ad7d2218201520167d221c201556201820145620182014511b22061b221b37032820054200201c20061b221a370320200220177d2001201654ad7d2102200120167d21010b02400240200541206a41286a28020022060d004100210a410021060c010b200641186c21084100210603400240200a2903002216200120012016562002200a41086a220929030022175620022017511b22071b22182017200220071b221984500d00200a201620187d221a370300200a201720197d2016201854ad7d221c37030802400240201a4280c8afa02556201c420052201c501b450d002001211c20182116201921170c010b200a4200370308200a42003703002002201c7c2001201a7c221c200154ad7c21020b200541206a41086a220742002007290300220120177d20052903202218201654ad7d2219201820167d221a201856201920015620192001511b22071b221b37030020054200201a20071b221a370320200220177d201c201654ad7d2102201c20167d210120092903002117200a29030021160b024020162017844200520d00200a41186a210a200641016a2106200841686a22080d010b0b2005280248220a2006490d020b200541003602480240200a20066b220a450d0002402006450d00200528024022072007200641186c6a200a41186c10a2051a0b2005200a3602480b024042002015201a7d221620162015562014201b7d2015201a54ad7d221620145620162014511b220a1b220242002016200a1b220184500d00200541f8006a200010970220054188016a200528027822062005280280012207109802200529038801211b2005420037038801200541d0016a280200210820052d00d401210902400240201b4201510d004200211c200541d8016a41306a4200370300200541d8016a41286a4200370300200541d8016a41206a4200370300200541d8016a41186a4200370300200541e8016a4200370300200541e0016a4200370300200542003703d8014200211942002117420021164200211d0c010b200541c0016a290300211820054188016a41306a290300211a20054188016a41206a290300211920054188016a41186a290300211c200541c8016a290300211d20052903980121162005290390012117200541d8016a41206a20054188016a41286a290300370300200541d8016a41286a201a370300200541d8016a41306a2018370300200541e8016a201c370300200520193703f001200520173703d801200520163703e0010b20052017200220172017200256201620015620162001511b220a1b221a7d22143703d8012005201620012016200a1b221e7d2017201a54ad7d22183703e001201620197c211f2017201c7c2220201754220bad2121200541d8016a41106a210a024002402002201a7d22152001201e7d2002201a54ad7d22228450450d004200211c420021222002211e200121230c010b200541f0016a201920222019201c201556201920225620192022511b220c1b22237d201c2015201c200c1b221754ad7d3703002005201c20177d3703e801202220237d2015201754ad7d21222023201e7c2017201a7c221e201754ad7c2123201520177d211c0b201f20217c211720054190026a41186a200a41086a290300221937030020054190026a41206a220c200a41106a290300370300200541b8026a220d200a41186a290300370300200541c0026a220e200a41206a2903003703002005200a290300221a3703a0022005201437039002200520183703980202400240427f2014201a7c221a201a201454220a201820197c200aad7c221920185420192018511b220a1b221a4280c8afa025544100427f2019200a1b2215501b0d00200541a0026a290300211a200e2903002115200d290300211f200c2903002121200529039802212420052903900221254201211920052903a80221260c010b420021190240201a201584500d00201a201510eb01200541d0046a2015370300200541c8046a201a37030020054198046a41086a41013a0000200541a1046a2000290000370000200541a9046a200041086a290000370000200541b1046a200041106a290000370000200541b9046a200041186a290000370000200541023a00980420054198046a10e0010b0b2017201651210a2017201654210c200541b0016a2021370300200541b8016a201f37030020054198016a2024370300200541c0016a2015370300200541a0016a201a370300200520263703a8012005201d3703c8012005202537039001200520094100201b420151220d1b3a00d401200520084100200d1b3602d001200520194201512208ad370388010240024020080d002007ad4220862006ad8410110c010b2005200736029c04200520063602980420054190016a20054198046a1098030b200b200c200a1b210a0240200528027c450d00200610230b427f2017200a1b2116427f2020200a1b21172019420152210a024002400240201b4201510d00200a0d0041032106200541b0036a210a0c010b201b420152200a410173720d0141042106200541c8026a210a0b200a41046a20063a0000200a41003a0000200a41056a2000290000370000200a410d6a200041086a290000370000200a41156a200041106a290000370000200a411d6a200041186a290000370000200a10e0010b024020172016844200520d00200541d0046a2018370300200541c8046a201437030020054198046a41086a41003a0000200541a1046a2000290000370000200541a9046a200041086a290000370000200541b1046a200041106a290000370000200541b9046a200041186a290000370000200541023a00980420054198046a10e0010b2004427f20042903002216201e7c22172017201654220a200441086a2206290300221620237c200aad7c221720165420172016511b220a1b3703002006427f2017200a1b3703000240201c202284500d002003420020032903002216201c7d22172017201656200341086a220a290300221720227d2016201c54ad7d221620175620162017511b22061b370300200a4200201620061b3703000b200542f3e885db96cddbb3203703c802200541c8026a200541206a41386a2005290320200541206a41086a290300411f10990220054198046a200510c601200528029804210a200520052802a0043602b4032005200a3602b003200541206a200541b0036a10ec010240200528029c04450d00200a10230b20054198046a41386a2001370300200541c8046a200237030020054198046a41086a41013a0000200541a1046a2000290000370000200541a9046a200041086a290000370000200541b1046a200041106a290000370000200541b9046a200041186a290000370000200541033a00980420054198046a10e0010b02402005280244220a450d00200a41186c450d00200528024010230b200541d0006a28020041ffffffff0371450d00200528024c10230b20054180056a24000f0b2006200a103c000bbb180e017f027e027f027e037f047e017f017e047f027e027f017e017f027e230041d0046b2203240002400240200120028450450d0042002104420021050c010b200341386a2000109702200341c8006a200328023822062003280240220710980220032903482108420021092003420037034820034190016a280200210a20032d009401210b024002402008420151220c0d0020034198016a41306a420037030020034198016a41286a420037030020034198016a41206a420037030020034198016a41186a4200370300200341a8016a4200370300200341a0016a420037030020034200370398014200210d42002105420021044200210e0c010b20034180016a290300210f200341c8006a41306a2903002110200341c8006a41206a290300210d200341c8006a41186a290300210920034188016a290300210e200329035821042003290350210520034198016a41206a200341c8006a41286a29030037030020034198016a41286a201037030020034198016a41306a200f370300200341a8016a20093703002003200d3703b0012003200537039801200320043703a0010b427f2004200d7c200520097c220d2005542211ad7c22092011200920045420092004511b22111b2110427f200d20111b21124200210902400240200142ffc7afa0255620024200522002501b0d00201220108450450d004100210c4100211342002104410121110c010b4200200420027c200520017c220d2005542211ad7c22052011200520045420052004511b22111b21044200200d20111b210f024020114101470d00200f421088200442308684210920044210882104200f420888a72113200fa7210c410121110c010b200341d8036a41186a22144200370300200341d8036a41106a22154200370300200341d8036a41086a22134200370300200342003703d80341bdadc500ad42808080808001842209100c22162900002117200341c0046a41086a2211201641086a290000370300200320173703c0042016102320132011290300370300200320032903c0043703d80341c5adc500ad4280808080d001842217100c221629000021182011201641086a290000370300200320183703c00420161023201520032903c0042218370300200341d0016a41086a22192013290300370300200341d0016a41106a221a2018370300200341d0016a41186a22162011290300370300200320032903d8033703d001200341206a200341d0016a412010d701200341206a41106a29030021182003290328211b2003280220211c201442003703002015420037030020134200370300200342003703d8032009100c221429000021092011201441086a290000370300200320093703c0042014102320132011290300370300200320032903c0043703d8032017100c221429000021092011201441086a290000370300200320093703c00420141023201520032903c004220937030020192013290300370300201a200937030020162011290300370300200320032903d8033703d001200320184200201c1b3703e0032003201b4200201c1b3703d803200341d0016aad4280808080800484200341d8036aad4280808080800284100e200320043703a0012003200f370398012016200341a8016a221141086a2903002209370300200341d0016a41206a2213201141106a290300370300200341f8016a2215201141186a29030037030020034180026a2216201141206a290300370300200320043703d8012003200f3703d0012003201129030022173703e00102400240427f200f20177c22172017200f542211200420097c2011ad7c220920045420092004511b22111b22044280c8afa025544100427f200920111b2209501b0d00201a2903002104201629030021092015290300210f2013290300211720032903d801211820032903d001211b4201211d20032903e801211e0c010b4200211d02402004200984500d002004200910eb0120034190046a200937030020034188046a2004370300200341d8036a41086a41013a0000200341e1036a2000290000370000200341e9036a200041086a290000370000200341f1036a200041106a290000370000200341f9036a200041186a290000370000200341023a00d803200341d8036a10e0010b0b200341f0006a2017370300200341f8006a200f370300200341d8006a201837030020034180016a2009370300200341e0006a20043703002003201e3703682003200e370388012003201b370350410021112003200b4100200842015122131b3a0094012003200a410020131b360290012003201d4201512213ad370348201220108450ad423086210942002104024020130d002007ad4220862006ad841011410021130c010b200320073602dc03200320063602d803200341d0006a200341d8036a10980341012113410021110b0240200328023c450d00200610230b024020110d0020094230882004421086842109024002400240200c41ff0171220c0d00201341ff0171450d0041032111200341f0026a210c0c010b200c450d01201341ff01710d014104211120034188026a210c0b200c41046a20113a0000200c41003a0000200c41056a2000290000370000200c410d6a200041086a290000370000200c41156a200041106a290000370000200c411d6a200041186a290000370000200c10e0010b200341c8006a41106a220c20053703002003200d37035020032009370348200121042002210520094201520d012003290350210420034190046a200c29030037030020034188046a2004370300200341d8036a41086a41003a0000200341e1036a2000290000370000200341e9036a200041086a290000370000200341f1036a200041106a290000370000200341f9036a200041186a290000370000200341023a00d803200341d8036a10e00120012104200221050c010b20032004421086200942308884220537035020032013ad42ff0183420886200cad42ff01838420094210868422043703480b200341d8036a41186a22064200370300200341d8036a41106a22114200370300200341d8036a41086a220c4200370300200342003703d80341bdadc500ad4280808080800184220f100c2213290000210920034188026a41086a2200201341086a290000370300200320093703880220131023200c200029030037030020032003290388023703d80341c5adc500ad4280808080d001842210100c221329000021092000201341086a29000037030020032009370388022013102320112003290388022209370300200341f0026a41086a220b200c290300370300200341f0026a41106a22072009370300200341f0026a41186a22152000290300370300200320032903d8033703f002200341086a200341f0026a412010d701200220057d2001200454ad7d200520027d2004200154ad7d20042001582005200258200520025122131b220a1b2112200120047d200420017d200a1b2108200341086a41106a29030042002003280208220a1b210920032903104200200a1b210d024002402004200156200520025620131b0d002006420037030020114200370300200c4200370300200342003703d803200f100c221329000021012000201341086a290000370300200320013703880220131023200c200029030037030020032003290388023703d8032010100c221329000021012000201341086a2900003703002003200137038802201310232011200329038802370000201141086a2000290300370000200b200c2903003703002007201129030037030020152006290300370300200320032903d8033703f00220034200200920127d200d200854ad7d2201200d20087d2202200d56200120095620012009511b22001b3703e00320034200200220001b3703d803200341d8036a21000c010b2006420037030020114200370300200c4200370300200342003703d803200f100c221329000021012000201341086a290000370300200320013703880220131023200c200029030037030020032003290388023703d8032010100c221329000021012000201341086a2900003703002003200137038802201310232011200329038802370000201141086a2000290300370000200b200c2903003703002007201129030037030020152006290300370300200320032903d8033703f0022003427f200920127c200d20087c2202200d542200ad7c22012000200120095420012009511b22001b3703e0032003427f200220001b3703d803200341d8036a21000b200341f0026aad42808080808004842000ad4280808080800284100e200341d0046a24000b800508017f017e047f017e017f017e037f017e23004180016b22022400200241186a2000200110cf0302402002290318a7450d00200241186a41106a290300210320022903202100200241d0006a41186a22044200370300200241d0006a41106a22054200370300200241d0006a41086a220642003703002002420037035041bdadc500ad42808080808001842201100c22072900002108200241f0006a41086a2209200741086a2900003703002002200837037020071023200620092903003703002002200229037037035041c5adc500ad4280808080d001842208100c2207290000210a2009200741086a2900003703002002200a3703702007102320052002290370220a370300200241306a41086a220b2006290300370300200241306a41106a220c200a370300200241306a41186a220d2009290300370300200220022903503703302002200241306a412010d701200241106a290300210a2002290308210e20022802002107200442003703002005420037030020064200370300200242003703502001100c220429000021012009200441086a290000370300200220013703702004102320062009290300370300200220022903703703502008100c220429000021012009200441086a2900003703002002200137037020041023200520022903702201370300200b2006290300370300200c2001370300200d20092903003703002002200229035037033020024200200a420020071b220120037d200e420020071b2203200054ad7d2208200320007d2200200356200820015620082001511b22091b37035820024200200020091b370350200241306aad4280808080800484200241d0006aad4280808080800284100e0b20024180016a24000bd80301067f230041106b2202240020024100360208200242013703000240412010212203450d0020032000290038370000200341086a200041c0006a290000370000200341106a200041c8006a290000370000200341186a200041d0006a29000037000020022003360200200242a080808080043702042002200036020c2002410c6a200210db012002200041106a36020c2002410c6a200210db0120002802202103200041286a28020022042002106102402004450d002003200441186c6a210403402002200336020c2002410c6a200210db01200341106a200210ed012004200341186a2203470d000b0b200028022c2105200041346a28020022032002106102400240024020022802042206200228020822046b20034102742200490d0020022802002103200621070c010b200420006a22032004490d01200641017422072003200720034b1b22074100480d010240024020060d00024020070d00410121030c020b2007102122030d010c040b2002280200210320062007460d0020032006200710252203450d030b20022007360204200220033602000b200320046a2005200010a1051a2001290200200420006aad4220862003ad84100e02402007450d00200310230b200241106a24000f0b102c000b102a000bb30101027f230041106b2202240002400240024002402000280200220341c000490d00200341808001490d012003418080808004490d02200241033a00032001200241036a41011062200220002802003602042001200241046a410410620c030b200220034102743a00032001200241036a410110620c020b200220034102744101723b010a20012002410a6a410210620c010b2002200341027441027236020c20012002410c6a410410620b200241106a24000b130020004118360204200041a4d0c0003602000bab0407047f017e017f017e017f017e037f230041d0006b22002400200041206a41186a22014200370300200041206a41106a22024200370300200041206a41086a2203420037030020004200370320418fcdc200ad4280808080f000842204100c22052900002106200041c0006a41086a2207200541086a2900003703002000200637034020051023200320072903003703002000200029034037032041fcdec100ad42808080808001842208100c220529000021062007200541086a2900003703002000200637034020051023200220002903402206370300200041086a22092003290300370300200041106a220a2006370300200041186a220b2007290300370300200020002903203703000240024002404100200010f0012205200541ff01714104461b41ff0171417f6a220541024b0d0020050e03010001010b200142003703002002420037030020034200370300200042003703202004100c220529000021062007200541086a290000370300200020063703402005102320032007290300370300200020002903403703202008100c220529000021062007200541086a290000370300200020063703402005102320022000290340370000200241086a200729030037000020092003290300370300200a2002290300370300200b200129030037030020002000290320370300410110212207450d01200741013a00002000ad42808080808004842007ad42808080801084100e200710230b200041d0006a24000f0b102a000b810201037f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841010108b0102400240200128020822020d00410421000c010b200128020c210302400240200141106a280200450d0020022d000022004104490d010b20014100360220200142013703182001410a36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c20014180c5c6003602382001200141286a360248200141346a4184a5c200200141386a10311a2001350220422086200135021884100a0240200128021c450d00200128021810230b410421000b2003450d00200210230b200141d0006a240020000b34002000418fcdc20036020420004100360200200041146a4124360200200041106a41b0bfc100360200200041086a42073702000b2b01017f02404101102122020d00102a000b200042818080801037020420002002360200200241023a00000b2b01017f02404101102122020d00102a000b200042818080801037020420002002360200200241003a00000b5301017f0240411010212202450d00200242003700082002420037000020024110412010252202450d0020024200370010200042a0808080800437020420002002360200200241186a42003700000f0b102a000b940302047f017e230041206b2203240002400240200241d8006c4104722204417f4c0d00200410212205450d0120034100360208200320043602042003200536020020022003106102402002450d002001200241d8006c6a210603402003200141386a41201062200129030021072003200141086a290300370318200320073703102003200341106a4110106220012802202102200128022822042003106102402004450d002002200441306c6a210403402003200241201062200241206a29030021072003200241286a290300370318200320073703102003200341106a411010622004200241306a2202470d000b0b200141d8006a2105200128022c2102200141346a28020022042003106102402004450d002004410574210403402003200241201062200241206a2102200441606a22040d000b0b200129031021072003200141186a290300370318200320073703102003200341106a411010622005210120052006470d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1032000b1033000b3301017f02404110102122020d001033000b2002420037000820024200370000200042908080808002370204200020023602000b860101027f230041206b220224002002410c6a410036020020024200370300200241003602182002420137031002404104102122030d00102a000b200341003600002002200336021020024284808080c00037021420024104722203200241106a10bd01200041086a200228021836020020002002290310370200200310be01200241206a24000be90101047f230041106b220224002002410036020c02400240410110212203450d000240024002400240200228020c220441c000490d00200441808001490d012004418080808004490d02200341033a0000200228020c21044105210520034101410510252203450d05200320043600010c030b200320044102743a0000410121050c020b4102210520034101410210252203450d03200320044102744101723b00000c010b4104210520034101410410252203450d02200320044102744102723600000b200020053602082000200536020420002003360200200241106a24000f0b1033000b102a000bf60301087f230041c0006b22022400200241186a4200370300200241106a22034200370300200241086a4200370300200241286a22044100360200200242003703002002420837032020024100360238200242013703302002200236023c2002413c6a200241306a10db012002200336023c2002413c6a200241306a10db012002280220210320042802002204200241306a10610240024002402004450d00200441306c210503400240024020022802342206200228023822046b4120490d00200441206a2107200228023021080c010b200441206a22072004490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102122080d010c060b2002280230210820062009460d0020082006200910252208450d050b20022009360234200220083602300b200820046a2204200341106a290000370000200441186a200341286a290000370000200441106a200341206a290000370000200441086a200341186a290000370000200220073602382002200336023c2002413c6a200241306a10db01200341306a2103200541506a22050d000b0b20002002290330370200200041086a200241306a41086a280200360200024020022802242203450d00200341306c450d00200228022010230b200241c0006a24000f0b102c000b102a000b4d01027f230041106b2202240002404104102122030d001033000b2002420437020420022003360200410020021061200041086a200228020836020020002002290300370200200241106a24000b2c01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241043600000b2d01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241d4003600000b130020004102360204200041ec86c2003602000b2c01017f02404104102122020d001033000b20004284808080c000370204200020023602002002411c3600000b2c01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241063600000bde0506067f017e017f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b024020054102762209410c4b0d0002400240024020090e0d00030303010303030303030302000b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210a0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210a0c050b20064110490d03200441096a290000210a2004290001210820012003416f6a3602042001200441116a360200200a428080808080808080015421070c040b200941046a220641104b0d022003417e6a2103200441026a21044100210541012107200241186a210b420021084200210a03402003417f460d01200241106a2004417f6a3100004200200541037441f8007110a40520012003360204200120043602002003417f6a2103200441016a2104200b290300200a84210a20022903102008842108200541016a220541ff01712006490d000b2002427f427f41e80020094103746b41f8007110a5052008200229030058200a200241086a290300220c58200a200c511b21070c030b0c020b4200210a410021070c010b410121070b20002008370308200041106a200a37030020002007ad370300200241206a24000bd53901037f230041106b2202240020002802002103200028020822042001106102402004450d00200320044103746a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a41021062200341086a22032004470d000b0b200028020c2103200041146a28020022042001106102402004450d0020032004410c6c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a410210622003410c6a22032004470d000b0b20002802182103200041206a28020022042001106102402004450d00200320044104746a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a41021062200341106a22032004470d000b0b200028022421032000412c6a28020022042001106102402004450d002003200441146c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a41021062200341146a22032004470d000b0b20002802302103200041386a28020022042001106102402004450d002003200441186c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a41021062200341186a22032004470d000b0b200028023c2103200041c4006a28020022042001106102402004450d0020032004411c6c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a410210622003411c6a22032004470d000b0b20002802482103200041d0006a28020022042001106102402004450d00200320044105746a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a41021062200341206a22032004470d000b0b20002802542103200041dc006a28020022042001106102402004450d002003200441246c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a41021062200341246a22032004470d000b0b20002802602103200041e8006a28020022042001106102402004450d002003200441286c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a41021062200341286a22032004470d000b0b200028026c2103200041f4006a28020022042001106102402004450d0020032004412c6c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a410210622003412c6a22032004470d000b0b2000280278210320004180016a28020022042001106102402004450d002003200441306c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a41021062200341306a22032004470d000b0b20002802840121032000418c016a28020022042001106102402004450d002003200441346c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a4102106220022003412e6a2f01003b010c20012002410c6a410210622002200341306a2f01003b010c20012002410c6a41021062200341346a22032004470d000b0b200028029001210320004198016a28020022042001106102402004450d002003200441386c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a4102106220022003412e6a2f01003b010c20012002410c6a410210622002200341306a2f01003b010c20012002410c6a410210622002200341326a2f01003b010c20012002410c6a410210622002200341346a2f01003b010c20012002410c6a41021062200341386a22032004470d000b0b200028029c012103200041a4016a28020022042001106102402004450d0020032004413c6c6a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a4102106220022003412e6a2f01003b010c20012002410c6a410210622002200341306a2f01003b010c20012002410c6a410210622002200341326a2f01003b010c20012002410c6a410210622002200341346a2f01003b010c20012002410c6a410210622002200341366a2f01003b010c20012002410c6a410210622002200341386a2f01003b010c20012002410c6a410210622003413c6a22032004470d000b0b20002802a8012103200041b0016a28020022042001106102402004450d00200320044106746a210403402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a4102106220022003412e6a2f01003b010c20012002410c6a410210622002200341306a2f01003b010c20012002410c6a410210622002200341326a2f01003b010c20012002410c6a410210622002200341346a2f01003b010c20012002410c6a410210622002200341366a2f01003b010c20012002410c6a410210622002200341386a2f01003b010c20012002410c6a4102106220022003413a6a2f01003b010c20012002410c6a4102106220022003413c6a2f01003b010c20012002410c6a41021062200341c0006a22032004470d000b0b20002802b4012103200041bc016a28020022002001106102402000450d002003200041c4006c6a210003402002200328020036020c20012002410c6a410410622002200341046a2f01003b010c20012002410c6a410210622002200341066a2f01003b010c20012002410c6a410210622002200341086a2f01003b010c20012002410c6a4102106220022003410a6a2f01003b010c20012002410c6a4102106220022003410c6a2f01003b010c20012002410c6a4102106220022003410e6a2f01003b010c20012002410c6a410210622002200341106a2f01003b010c20012002410c6a410210622002200341126a2f01003b010c20012002410c6a410210622002200341146a2f01003b010c20012002410c6a410210622002200341166a2f01003b010c20012002410c6a410210622002200341186a2f01003b010c20012002410c6a4102106220022003411a6a2f01003b010c20012002410c6a4102106220022003411c6a2f01003b010c20012002410c6a4102106220022003411e6a2f01003b010c20012002410c6a410210622002200341206a2f01003b010c20012002410c6a410210622002200341226a2f01003b010c20012002410c6a410210622002200341246a2f01003b010c20012002410c6a410210622002200341266a2f01003b010c20012002410c6a410210622002200341286a2f01003b010c20012002410c6a4102106220022003412a6a2f01003b010c20012002410c6a4102106220022003412c6a2f01003b010c20012002410c6a4102106220022003412e6a2f01003b010c20012002410c6a410210622002200341306a2f01003b010c20012002410c6a410210622002200341326a2f01003b010c20012002410c6a410210622002200341346a2f01003b010c20012002410c6a410210622002200341366a2f01003b010c20012002410c6a410210622002200341386a2f01003b010c20012002410c6a4102106220022003413a6a2f01003b010c20012002410c6a4102106220022003413c6a2f01003b010c20012002410c6a4102106220022003413e6a2f01003b010c20012002410c6a410210622002200341c0006a2f01003b010c20012002410c6a41021062200341c4006a22032000470d000b0b200241106a24000bd2ae0109097f017e067f037e217f027e0b7f017e047f23004190046b22022400200241f8006a20011088010240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802780d00200228027c220320012802044103762204200420034b1b22054103742204417f4c0d020240024020050d00410421060c010b200410212206450d040b41002104200241003602980320022005360294032002200636029003024002402003450d00410021040340200128020422054104490d0220012802002207280000210820012005417c6a22093602042001200741046a220736020020094102490d0220072f0000210920012005417a6a3602042001200741026a36020002402004200228029403470d0020024190036a2004410110a501200228029003210620022802980321040b200620044103746a220520093b0104200520083602002002200441016a2204360298032003417f6a22030d000b20022802940321050b2006450d01200241f0006a20011088012002280270450d020c180b20022802940341ffffffff0171450d00200610230b200041003602000c180b2002280274220a2001280204410c6e22072007200a4b1bad420c7e220b422088a70d00200ba72203417f4c0d000240024020030d004104210c0c010b20031021220c450d020b4100210720024100360298032002200c3602900320022003410c6e220d36029403024002400240200a450d00410021070340200128020422034104490d0220012802002209280000210e20012003417c6a220d3602042001200941046a2208360200200d4102490d0220082f0000210f20012003417a6a220d3602042001200841026a360200200d4102490d0220092f0006210d2001200341786a22083602042001200941086a220936020020084102490d0220092f000021082001200341766a3602042001200941026a36020002402007200228029403470d0020024190036a20074101109501200228029003210c20022802980321070b200c2007410c6c6a220320083b01082003200f3b01042003200e360200200341066a200d3b01002002200741016a220736029803200a417f6a220a0d000b200228029403210d0b200c450d17200241e8006a20011088012002280268450d010c160b2002280294032201450d162001410c6c450d16200c10230c160b4104210f200228026c220e200128020441047622032003200e4b1b22034104742209417f4c0d0002402003450d0020091021220f450d020b41002108200241003602980320022003360294032002200f36029003024002400240200e450d00410021080340200128020422034104490d0220012802002209280000211020012003417c6a22113602042001200941046a220a36020020114102490d02200a330000210b20012003417a6a22113602042001200a41026a36020020114102490d02200933000621122001200341786a22113602042001200941086a220a36020020114102490d02200a33000021132001200341766a22113602042001200a41026a36020020114102490d02200933000a21142001200341746a220a36020420012009410c6a2209360200200a4102490d0220092f0000210a2001200341726a3602042001200941026a3602002014423086201342208684201242108684200b84210b02402008200228029403470d0020024190036a2008410110a001200228029003210f20022802980321080b200f20084104746a2203200a3b010c2003200b370204200320103602002002200841016a220836029803200e417f6a220e0d000b20022802940321030b200f450d16200241e0006a20011088012002280260450d010c150b20022802940341ffffffff0071450d15200f10230c150b20022802642210200128020441146e2209200920104b1bad42147e220b422088a70d00200ba72209417f4c0d000240024020090d00410421150c010b200910212215450d020b4100210e200241003602980320022015360290032002200941146e2211360294030240024002402010450d004100210e0340200128020422094104490d022001280200220a280000211620012009417c6a22173602042001200a41046a221136020020174102490d0220112f0000211820012009417a6a22173602042001201141026a36020020174102490d02200a2f000621192001200941786a22173602042001200a41086a221136020020174102490d0220112f0000211a2001200941766a22173602042001201141026a36020020174102490d02200a2f000a211b2001200941746a22173602042001200a410c6a221136020020174102490d0220112f0000211c2001200941726a22173602042001201141026a36020020174102490d02200a2f000e21172001200941706a22113602042001200a41106a220a36020020114102490d02200a2f0000211120012009416e6a3602042001200a41026a3602000240200e200228029403470d0020024190036a200e4101109e012002280290032115200228029803210e0b2015200e41146c6a220920113b0110200920183b0104200920163602002009410e6a20173b01002009410c6a201c3b01002009410a6a201b3b0100200941086a201a3b0100200941066a20193b01002002200e41016a220e360298032010417f6a22100d000b20022802940321110b2015450d15200241d8006a20011088012002280258450d010c140b2002280294032201450d14200141146c450d14201510230c140b200228025c2217200128020441186e2209200920174b1bad42187e220b422088a70d00200ba72209417f4c0d000240024020090d00410421180c010b200910212218450d020b41002110200241003602980320022018360290032002200941186e2216360294030240024002402017450d00410021100340200128020422094104490d022001280200220a280000211a20012009417c6a22193602042001200a41046a221636020020194102490d0220162f0000211b20012009417a6a22193602042001201641026a36020020194102490d02200a2f0006211c2001200941786a22193602042001200a41086a221636020020194102490d0220162f0000211d2001200941766a22193602042001201641026a36020020194102490d02200a2f000a211e2001200941746a22193602042001200a410c6a221636020020194102490d0220162f0000211f2001200941726a22193602042001201641026a36020020194102490d02200a2f000e21202001200941706a22193602042001200a41106a221636020020194102490d0220162f0000212120012009416e6a22193602042001201641026a36020020194102490d02200a2f0012211920012009416c6a22163602042001200a41146a220a36020020164102490d02200a2f0000211620012009416a6a3602042001200a41026a36020002402010200228029403470d0020024190036a2010410110b001200228029003211820022802980321100b2018201041186c6a220920163b01142009201b3b01042009201a360200200941126a20193b0100200941106a20213b01002009410e6a20203b01002009410c6a201f3b01002009410a6a201e3b0100200941086a201d3b0100200941066a201c3b01002002201041016a2210360298032017417f6a22170d000b20022802940321160b2018450d14200241d0006a20011088012002280250450d010c130b2002280294032201450d13200141186c450d13201810230c130b200228025422192001280204411c6e2209200920194b1bad421c7e220b422088a70d00200ba72209417f4c0d000240024020090d004104211b0c010b20091021221b450d020b4100211720024100360298032002201b3602900320022009411c6e221a360294030240024002402019450d00410021170340200128020422094104490d022001280200220a280000211d20012009417c6a221c3602042001200a41046a221a360200201c4102490d02201a2f0000211e20012009417a6a221c3602042001201a41026a360200201c4102490d02200a2f0006211f2001200941786a221c3602042001200a41086a221a360200201c4102490d02201a2f000021202001200941766a221c3602042001201a41026a360200201c4102490d02200a2f000a21212001200941746a221c3602042001200a410c6a221a360200201c4102490d02201a2f000021222001200941726a221c3602042001201a41026a360200201c4102490d02200a2f000e21232001200941706a221c3602042001200a41106a221a360200201c4102490d02201a2f0000212420012009416e6a221c3602042001201a41026a360200201c4102490d02200a2f0012212520012009416c6a221c3602042001200a41146a221a360200201c4102490d02201a2f0000212620012009416a6a221c3602042001201a41026a360200201c4102490d02200a2f0016211c2001200941686a221a3602042001200a41186a220a360200201a4102490d02200a2f0000211a2001200941666a3602042001200a41026a36020002402017200228029403470d0020024190036a2017410110a301200228029003211b20022802980321170b201b2017411c6c6a2209201a3b01182009201e3b01042009201d360200200941166a201c3b0100200941146a20263b0100200941126a20253b0100200941106a20243b01002009410e6a20233b01002009410c6a20223b01002009410a6a20213b0100200941086a20203b0100200941066a201f3b01002002201741016a2217360298032019417f6a22190d000b200228029403211a0b201b450d13200241c8006a20011088012002280248450d010c120b2002280294032201450d122001411c6c450d12201b10230c120b200228024c221c200128020441057622092009201c4b1b2209410574220a417f4c0d000240024020090d004104211e0c010b200a1021221e450d020b41002119200241003602980320022009360294032002201e36029003024002400240201c450d00410021190340200128020422094104490d022001280200220a280000212020012009417c6a221f3602042001200a41046a221d360200201f4102490d02201d2f0000212120012009417a6a221f3602042001201d41026a360200201f4102490d02200a2f000621222001200941786a221f3602042001200a41086a221d360200201f4102490d02201d2f000021232001200941766a221f3602042001201d41026a360200201f4102490d02200a2f000a21242001200941746a221f3602042001200a410c6a221d360200201f4102490d02201d2f000021252001200941726a221f3602042001201d41026a360200201f4102490d02200a2f000e21262001200941706a221f3602042001200a41106a221d360200201f4102490d02201d2f0000212720012009416e6a221f3602042001201d41026a360200201f4102490d02200a2f0012212820012009416c6a221f3602042001200a41146a221d360200201f4102490d02201d2f0000212920012009416a6a221f3602042001201d41026a360200201f4102490d02200a2f0016212a2001200941686a221f3602042001200a41186a221d360200201f4102490d02201d2f0000212b2001200941666a221f3602042001201d41026a360200201f4102490d02200a2f001a211f2001200941646a221d3602042001200a411c6a220a360200201d4102490d02200a2f0000211d2001200941626a3602042001200a41026a36020002402019200228029403470d0020024190036a2019410110a801200228029003211e20022802980321190b201e20194105746a2209201d3b011c200920213b0104200920203602002009411a6a201f3b0100200941186a202b3b0100200941166a202a3b0100200941146a20293b0100200941126a20283b0100200941106a20273b01002009410e6a20263b01002009410c6a20253b01002009410a6a20243b0100200941086a20233b0100200941066a20223b01002002201941016a221936029803201c417f6a221c0d000b20022802940321090b201e450d12200241c0006a20011088012002280240450d010c110b20022802940341ffffff3f71450d11201e10230c110b2002280244221f200128020441246e220a200a201f4b1bad42247e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421210c010b200a10212221450d020b4100211d200241003602980320022021360290032002200a41246e222036029403024002400240201f450d004100211d03402001280204220a4104490d022001280200221c28000021232001200a417c6a22223602042001201c41046a222036020020224102490d0220202f000021242001200a417a6a22223602042001202041026a36020020224102490d02201c2f000621252001200a41786a22223602042001201c41086a222036020020224102490d0220202f000021262001200a41766a22223602042001202041026a36020020224102490d02201c2f000a21272001200a41746a22223602042001201c410c6a222036020020224102490d0220202f000021282001200a41726a22223602042001202041026a36020020224102490d02201c2f000e21292001200a41706a22223602042001201c41106a222036020020224102490d0220202f0000212a2001200a416e6a22223602042001202041026a36020020224102490d02201c2f0012212b2001200a416c6a22223602042001201c41146a222036020020224102490d0220202f0000212c2001200a416a6a22223602042001202041026a36020020224102490d02201c2f0016212d2001200a41686a22223602042001201c41186a222036020020224102490d0220202f0000212e2001200a41666a22223602042001202041026a36020020224102490d02201c2f001a212f2001200a41646a22223602042001201c411c6a222036020020224102490d0220202f000021302001200a41626a22223602042001202041026a36020020224102490d02201c2f001e21222001200a41606a22203602042001201c41206a221c36020020204102490d02201c2f000021202001200a415e6a3602042001201c41026a3602000240201d200228029403470d0020024190036a201d410110a2012002280290032121200228029803211d0b2021201d41246c6a220a20203b0120200a20243b0104200a2023360200200a411e6a20223b0100200a411c6a20303b0100200a411a6a202f3b0100200a41186a202e3b0100200a41166a202d3b0100200a41146a202c3b0100200a41126a202b3b0100200a41106a202a3b0100200a410e6a20293b0100200a410c6a20283b0100200a410a6a20273b0100200a41086a20263b0100200a41066a20253b01002002201d41016a221d36029803201f417f6a221f0d000b20022802940321200b2021450d11200241386a20011088012002280238450d010c100b2002280294032201450d10200141246c450d10202110230c100b200228023c2222200128020441286e220a200a20224b1bad42287e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421230c010b200a10212223450d020b4100211f200241003602980320022023360290032002200a41286e2224360294030240024002402022450d004100211f03402001280204220a4104490d022001280200221c28000021262001200a417c6a22253602042001201c41046a222436020020254102490d0220242f000021272001200a417a6a22253602042001202441026a36020020254102490d02201c2f000621282001200a41786a22253602042001201c41086a222436020020254102490d0220242f000021292001200a41766a22253602042001202441026a36020020254102490d02201c2f000a212a2001200a41746a22253602042001201c410c6a222436020020254102490d0220242f0000212b2001200a41726a22253602042001202441026a36020020254102490d02201c2f000e212c2001200a41706a22253602042001201c41106a222436020020254102490d0220242f0000212d2001200a416e6a22253602042001202441026a36020020254102490d02201c2f0012212e2001200a416c6a22253602042001201c41146a222436020020254102490d0220242f0000212f2001200a416a6a22253602042001202441026a36020020254102490d02201c2f001621302001200a41686a22253602042001201c41186a222436020020254102490d0220242f000021312001200a41666a22253602042001202441026a36020020254102490d02201c2f001a21322001200a41646a22253602042001201c411c6a222436020020254102490d0220242f000021332001200a41626a22253602042001202441026a36020020254102490d02201c2f001e21342001200a41606a22253602042001201c41206a222436020020254102490d0220242f000021352001200a415e6a22253602042001202441026a36020020254102490d02201c2f002221252001200a415c6a22243602042001201c41246a221c36020020244102490d02201c2f000021242001200a415a6a3602042001201c41026a3602000240201f200228029403470d0020024190036a201f410110aa012002280290032123200228029803211f0b2023201f41286c6a220a20243b0124200a20273b0104200a2026360200200a41226a20253b0100200a41206a20353b0100200a411e6a20343b0100200a411c6a20333b0100200a411a6a20323b0100200a41186a20313b0100200a41166a20303b0100200a41146a202f3b0100200a41126a202e3b0100200a41106a202d3b0100200a410e6a202c3b0100200a410c6a202b3b0100200a410a6a202a3b0100200a41086a20293b0100200a41066a20283b01002002201f41016a221f360298032022417f6a22220d000b20022802940321240b2023450d10200241306a20011088012002280230450d010c0f0b2002280294032201450d0f200141286c450d0f202310230c0f0b200228023422252001280204412c6e220a200a20254b1bad422c7e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421260c010b200a10212226450d020b41002122200241003602880120022026360280012002200a412c6e22273602840102402025450d004100212203402001280204220a4104490d0e2001280200221c280000212b2001200a417c6a22283602042001201c41046a2227360200200241003a00b403200241003b01d00320284102490d0e20272f000021292001200a417a6a22283602042001202741026a360200200241003b01d00320284102490d0e201c2f000621282001200a41786a222a3602042001201c41086a2227360200200220293b019003200241013a00b403200220283b019203200241003b01d003202a4102490d0d20272f000021292001200a41766a22283602042001202741026a360200200241003b01d003202841014d0d0d201c2f000a21282001200a41746a222a3602042001201c410c6a2227360200200220293b019403200220283b019603200241023a00b403200241003b01d003202a4102490d0d20272f000021292001200a41726a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f000e21282001200a41706a222a3602042001201c41106a2227360200200220293b019803200241033a00b403200220283b019a03200241003b01d003202a4102490d0d20272f000021292001200a416e6a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f001221282001200a416c6a222a3602042001201c41146a2227360200200220293b019c03200241043a00b403200220283b019e03200241003b01d003202a4102490d0d20272f000021292001200a416a6a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f001621282001200a41686a222a3602042001201c41186a2227360200200220293b01a003200241053a00b403200220283b01a203200241003b01d003202a4102490d0d20272f000021292001200a41666a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f001a21282001200a41646a222a3602042001201c411c6a2227360200200220293b01a403200241063a00b403200220283b01a603200241003b01d003202a4102490d0d20272f000021292001200a41626a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f001e21282001200a41606a222a3602042001201c41206a2227360200200220293b01a803200241073a00b403200220283b01aa03200241003b01d003202a4102490d0d20272f000021292001200a415e6a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f002221282001200a415c6a222a3602042001201c41246a2227360200200220293b01ac03200241083a00b403200220283b01ae03200241003b01d003202a4102490d0d20272f000021292001200a415a6a22283602042001202741026a360200200241003b01d00320284102490d0d201c2f002621272001200a41586a22283602042001201c41286a221c360200200220293b01b003200241093a00b403200220273b01b203200241d0036a41206a20022802b0032227360200200241d0036a41186a20024190036a41186a290300220b370300200241d0036a41106a20024190036a41106a2903002212370300200241d0036a41086a20024190036a41086a2903002213370300200220022903900322143703d003200241d0026a41206a22292027360200200241d0026a41186a2227200b370300200241d0026a41106a222a2012370300200241d0026a41086a222c2013370300200220143703d00220284102490d0e201c2f000021282001200a41566a3602042001201c41026a36020020024190026a41106a202a290300220b370300200241d0016a41086a202c2903002212370300200241d0016a41106a200b370300200241d0016a41186a20272903002213370300200241d0016a41206a2029280200220a360200200220022903d00222143703d00120024190016a41206a221c200a36020020024190016a41186a2227201337030020024190016a41106a2229200b37030020024190016a41086a222a2012370300200220143703900102402022200228028401470d0020024180016a2022410110a601200228028001212620022802880121220b20262022412c6c6a220a202b360200200a200229039001370204201c280200211c2027290300210b20292903002112202a2903002113200a20283b0128200a410c6a2013370200200a41146a2012370200200a411c6a200b370200200a41246a201c3602002002202241016a2222360288012025417f6a22250d000b20022802840121270b2026450d0d200241286a200110880120022802280d0a200228022c2228200128020441306e220a200a20284b1bad42307e220b422088a70d00200ba7220a417f4c0d0002400240200a0d00410421290c010b200a10212229450d020b41002125200241003602880120022029360280012002200a41306e222a3602840102402028450d004100212503402001280204220a4104490d0b2001280200221c280000212e2001200a417c6a222b3602042001201c41046a222a360200200241003a00b803200241003b01d003202b4102490d0b202a2f0000212c2001200a417a6a222b3602042001202a41026a360200200241003b01d003202b4102490d0b201c2f0006212b2001200a41786a222d3602042001201c41086a222a3602002002202c3b019003200241013a00b8032002202b3b019203200241003b01d003202d4102490d0a202a2f0000212c2001200a41766a222b3602042001202a41026a360200200241003b01d003202b41014d0d0a201c2f000a212b2001200a41746a222d3602042001201c410c6a222a3602002002202c3b0194032002202b3b019603200241023a00b803200241003b01d003202d4102490d0a202a2f0000212c2001200a41726a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f000e212b2001200a41706a222d3602042001201c41106a222a3602002002202c3b019803200241033a00b8032002202b3b019a03200241003b01d003202d4102490d0a202a2f0000212c2001200a416e6a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f0012212b2001200a416c6a222d3602042001201c41146a222a3602002002202c3b019c03200241043a00b8032002202b3b019e03200241003b01d003202d4102490d0a202a2f0000212c2001200a416a6a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f0016212b2001200a41686a222d3602042001201c41186a222a3602002002202c3b01a003200241053a00b8032002202b3b01a203200241003b01d003202d4102490d0a202a2f0000212c2001200a41666a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f001a212b2001200a41646a222d3602042001201c411c6a222a3602002002202c3b01a403200241063a00b8032002202b3b01a603200241003b01d003202d4102490d0a202a2f0000212c2001200a41626a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f001e212b2001200a41606a222d3602042001201c41206a222a3602002002202c3b01a803200241073a00b8032002202b3b01aa03200241003b01d003202d4102490d0a202a2f0000212c2001200a415e6a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f0022212b2001200a415c6a222d3602042001201c41246a222a3602002002202c3b01ac03200241083a00b8032002202b3b01ae03200241003b01d003202d4102490d0a202a2f0000212c2001200a415a6a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f0026212b2001200a41586a222d3602042001201c41286a222a3602002002202c3b01b003200241093a00b8032002202b3b01b203200241003b01d003202d4102490d0a202a2f0000212c2001200a41566a222b3602042001202a41026a360200200241003b01d003202b4102490d0a201c2f002a212a2001200a41546a222b3602042001201c412c6a221c3602002002202c3b01b4032002410a3a00b8032002202a3b01b603200241d0036a41206a20024190036a41206a290300220b370300200241d0036a41186a20024190036a41186a2903002212370300200241d0036a41106a20024190036a41106a2903002213370300200241d0036a41086a20024190036a41086a2903002214370300200220022903900322363703d003200241d0026a41206a222a200b370300200241d0026a41186a222c2012370300200241d0026a41106a222d2013370300200241d0026a41086a222f2014370300200220363703d002202b4102490d0b201c2f0000212b2001200a41526a3602042001201c41026a36020020024190026a41106a202d290300220b370300200241d0016a41086a202f2903002212370300200241d0016a41106a200b370300200241d0016a41186a202c2903002213370300200241d0016a41206a202a2903002214370300200220022903d00222363703d00120024190016a41206a221c201437030020024190016a41186a222a201337030020024190016a41106a222c200b37030020024190016a41086a222d2012370300200220363703900102402025200228028401470d0020024180016a2025410110b601200228028001212920022802880121250b2029202541306c6a220a202e360200200a200229039001370204201c290300210b202a2903002112202c2903002113202d2903002114200a202b3b012c200a410c6a2014370200200a41146a2013370200200a411c6a2012370200200a41246a200b3702002002202541016a2225360288012028417f6a22280d000b200228028401212a0b2029450d0a200241206a200110880120022802200d072002280224222b200128020441346e220a200a202b4b1bad42347e220b422088a70d00200ba7220a417f4c0d0002400240200a0d004104212c0c010b200a1021222c450d020b4100212820024100360288012002202c360280012002200a41346e222d360284010240202b450d004100212803402001280204220a4104490d082001280200221c28000021312001200a417c6a222e3602042001201c41046a222d360200200241003a00bc03200241003b01d003202e4102490d08202d2f0000212f2001200a417a6a222e3602042001202d41026a360200200241003b01d003202e4102490d08201c2f0006212e2001200a41786a22303602042001201c41086a222d3602002002202f3b019003200241013a00bc032002202e3b019203200241003b01d00320304102490d07202d2f0000212f2001200a41766a222e3602042001202d41026a360200200241003b01d003202e41014d0d07201c2f000a212e2001200a41746a22303602042001201c410c6a222d3602002002202f3b0194032002202e3b019603200241023a00bc03200241003b01d00320304102490d07202d2f0000212f2001200a41726a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f000e212e2001200a41706a22303602042001201c41106a222d3602002002202f3b019803200241033a00bc032002202e3b019a03200241003b01d00320304102490d07202d2f0000212f2001200a416e6a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f0012212e2001200a416c6a22303602042001201c41146a222d3602002002202f3b019c03200241043a00bc032002202e3b019e03200241003b01d00320304102490d07202d2f0000212f2001200a416a6a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f0016212e2001200a41686a22303602042001201c41186a222d3602002002202f3b01a003200241053a00bc032002202e3b01a203200241003b01d00320304102490d07202d2f0000212f2001200a41666a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f001a212e2001200a41646a22303602042001201c411c6a222d3602002002202f3b01a403200241063a00bc032002202e3b01a603200241003b01d00320304102490d07202d2f0000212f2001200a41626a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f001e212e2001200a41606a22303602042001201c41206a222d3602002002202f3b01a803200241073a00bc032002202e3b01aa03200241003b01d00320304102490d07202d2f0000212f2001200a415e6a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f0022212e2001200a415c6a22303602042001201c41246a222d3602002002202f3b01ac03200241083a00bc032002202e3b01ae03200241003b01d00320304102490d07202d2f0000212f2001200a415a6a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f0026212e2001200a41586a22303602042001201c41286a222d3602002002202f3b01b003200241093a00bc032002202e3b01b203200241003b01d00320304102490d07202d2f0000212f2001200a41566a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f002a212e2001200a41546a22303602042001201c412c6a222d3602002002202f3b01b4032002410a3a00bc032002202e3b01b603200241003b01d00320304102490d07202d2f0000212f2001200a41526a222e3602042001202d41026a360200200241003b01d003202e4102490d07201c2f002e212d2001200a41506a222e3602042001201c41306a221c3602002002202f3b01b8032002410b3a00bc032002202d3b01ba03200241d0036a41286a20022802b803222d360200200241d0036a41206a20024190036a41206a290300220b370300200241d0036a41186a20024190036a41186a2903002212370300200241d0036a41106a20024190036a41106a2903002213370300200241d0036a41086a20024190036a41086a2903002214370300200220022903900322363703d003200241d0026a41286a222f202d360200200241d0026a41206a222d200b370300200241d0026a41186a22302012370300200241d0026a41106a22322013370300200241d0026a41086a22332014370300200220363703d002202e4102490d08201c2f0000212e2001200a414e6a3602042001201c41026a36020020024190026a41106a2032290300220b37030020024190026a41186a20302903002212370300200241d0016a41086a220a2033290300370300200241d0016a41106a221c200b370300200241d0016a41186a22302012370300200241d0016a41206a2232202d290300370300200241d0016a41286a222d202f280200360200200220022903d0023703d00120024190016a41286a222f202d28020036020020024190016a41206a222d203229030037030020024190016a41186a2232203029030037030020024190016a41106a2230201c29030037030020024190016a41086a221c200a290300370300200220022903d0013703900102402028200228028401470d0020024180016a2028410110a701200228028001212c20022802880121280b202c202841346c6a220a2031360200200a200229039001370204202f280200212f202d290300210b2032290300211220302903002113201c2903002114200a202e3b0130200a410c6a2014370200200a41146a2013370200200a411c6a2012370200200a41246a200b370200200a412c6a202f3602002002202841016a222836028801202b417f6a222b0d000b200228028401212d0b202c450d07200241186a200110880120022802180d04200228021c222e200128020441386e220a200a202e4b1bad42387e220b422088a70d00200ba7220a417f4c0d0002400240200a0d004104212f0c010b200a1021222f450d020b4100212b20024100360288012002202f360280012002200a41386e2234360284010240202e450d004100212b03402001280204220a4104490d052001280200221c28000021342001200a417c6a22313602042001201c41046a2230360200200241003a00c003200241003b01d00320314102490d0520302f000021322001200a417a6a22313602042001203041026a360200200241003b01d00320314102490d05201c2f000621312001200a41786a22333602042001201c41086a2230360200200220323b019003200241013a00c003200220313b019203200241003b01d00320334102490d0420302f000021322001200a41766a22313602042001203041026a360200200241003b01d003203141014d0d04201c2f000a21312001200a41746a22333602042001201c410c6a2230360200200220323b019403200220313b019603200241023a00c003200241003b01d00320334102490d0420302f000021322001200a41726a22313602042001203041026a360200200241003b01d00320314102490d04201c2f000e21312001200a41706a22333602042001201c41106a2230360200200220323b019803200241033a00c003200220313b019a03200241003b01d00320334102490d0420302f000021322001200a416e6a22313602042001203041026a360200200241003b01d00320314102490d04201c2f001221312001200a416c6a22333602042001201c41146a2230360200200220323b019c03200241043a00c003200220313b019e03200241003b01d00320334102490d0420302f000021322001200a416a6a22313602042001203041026a360200200241003b01d00320314102490d04201c2f001621312001200a41686a22333602042001201c41186a2230360200200220323b01a003200241053a00c003200220313b01a203200241003b01d00320334102490d0420302f000021322001200a41666a22313602042001203041026a360200200241003b01d00320314102490d04201c2f001a21312001200a41646a22333602042001201c411c6a2230360200200220323b01a403200241063a00c003200220313b01a603200241003b01d00320334102490d0420302f000021322001200a41626a22313602042001203041026a360200200241003b01d00320314102490d04201c2f001e21312001200a41606a22333602042001201c41206a2230360200200220323b01a803200241073a00c003200220313b01aa03200241003b01d00320334102490d0420302f000021322001200a415e6a22313602042001203041026a360200200241003b01d00320314102490d04201c2f002221312001200a415c6a22333602042001201c41246a2230360200200220323b01ac03200241083a00c003200220313b01ae03200241003b01d00320334102490d0420302f000021322001200a415a6a22313602042001203041026a360200200241003b01d00320314102490d04201c2f002621312001200a41586a22333602042001201c41286a2230360200200220323b01b003200241093a00c003200220313b01b203200241003b01d00320334102490d0420302f000021322001200a41566a22313602042001203041026a360200200241003b01d00320314102490d04201c2f002a21312001200a41546a22333602042001201c412c6a2230360200200220323b01b4032002410a3a00c003200220313b01b603200241003b01d00320334102490d0420302f000021322001200a41526a22313602042001203041026a360200200241003b01d00320314102490d04201c2f002e21312001200a41506a22333602042001201c41306a2230360200200220323b01b8032002410b3a00c003200220313b01ba03200241003b01d00320334102490d0420302f000021322001200a414e6a22313602042001203041026a360200200241003b01d00320314102490d04201c2f003221302001200a414c6a22313602042001201c41346a221c360200200220323b01bc032002410c3a00c003200220303b01be03200241d0036a41286a20024190036a41286a290300220b370300200241d0036a41206a20024190036a41206a2903002212370300200241d0036a41186a20024190036a41186a2903002213370300200241d0036a41106a20024190036a41106a2903002214370300200241d0036a41086a20024190036a41086a2903002236370300200220022903900322373703d003200241d0026a41286a2230200b370300200241d0026a41206a22322012370300200241d0026a41186a22332013370300200241d0026a41106a22352014370300200241d0026a41086a22382036370300200220373703d00220314102490d05201c2f000021312001200a414a6a3602042001201c41026a36020020024190026a41106a2035290300220b37030020024190026a41186a20332903002212370300200241d0016a41086a220a2038290300370300200241d0016a41106a221c200b370300200241d0016a41186a22332012370300200241d0016a41206a22352032290300370300200241d0016a41286a22322030290300370300200220022903d0023703d00120024190016a41286a2230203229030037030020024190016a41206a2232203529030037030020024190016a41186a2235203329030037030020024190016a41106a2233201c29030037030020024190016a41086a221c200a290300370300200220022903d001370390010240202b200228028401470d0020024180016a202b410110ae01200228028001212f200228028801212b0b202f202b41386c6a220a2034360200200a2002290390013702042030290300210b203229030021122035290300211320332903002114201c2903002136200a20313b0134200a410c6a2036370200200a41146a2014370200200a411c6a2013370200200a41246a2012370200200a412c6a200b3702002002202b41016a222b36028801202e417f6a222e0d000b20022802840121340b202f450d04200241106a2001108801024002400240024002400240024020022802100d00200228021422392001280204413c6e220a200a20394b1bad423c7e220b422088a70d07200ba7220a417f4c0d0702400240200a0d004104213a0c010b200a1021223a450d090b4100213b20024100360288012002203a360280012002200a413c6e2235360284010240024002402039450d004100213b4100213c0340200128020422354104490d03203c41016a213c417c211c20012802002238280000213d20012035417c6a3602042001203841046a3602004100210a200241003a00c403410021310340200241003b01d0032035201c6a222e4102490d032038200a6a223041046a2f000021322001202e417e6a222e3602042001203041066a2230360200200241003b01d003202e4102490d0320024190036a200a6a223320323b0100203341026a20302f00003b01002001202e417e6a3602042001203041026a3602002002203141016a22313a00c403201c417c6a211c200a41046a220a4134470d000b200241d0036a41306a222e20024190036a41306a280200360200200241d0036a41286a223020024190036a41286a290300370300200241d0036a41206a223220024190036a41206a290300370300200241d0036a41186a223320024190036a41186a290300370300200241d0036a41106a223e20024190036a41106a290300370300200241d0036a41086a223f20024190036a41086a29030037030020022002290390033703d003203141ff0171410d490d03200241d0026a41306a2231202e280200360200200241d0026a41286a222e2030290300370300200241d0026a41206a22302032290300370300200241d0026a41186a22322033290300370300200241d0026a41106a2233203e290300370300200241d0026a41086a223e203f290300370300200220022903d0033703d0022035201c6a41014d0d032038200a6a221c41046a2f0000213820012035200a6b417a6a3602042001201c41066a36020020024190026a41086a203e290300220b37030020024190026a41106a2033290300221237030020024190026a41186a2032290300221337030020024190026a41206a2030290300221437030020024190026a41286a202e290300223637030020024190026a41306a2031280200220a360200200220022903d002223737039002200241d0016a41306a221c200a360200200241d0016a41286a220a2036370300200241d0016a41206a222e2014370300200241d0016a41186a22302013370300200241d0016a41106a22312012370300200241d0016a41086a2232200b370300200220373703d00120024190016a41306a2233201c28020036020020024190016a41286a221c200a29030037030020024190016a41206a2235202e29030037030020024190016a41186a222e203029030037030020024190016a41106a2230203129030037030020024190016a41086a22312032290300370300200220022903d001370390010240203b200228028401470d0020024180016a203b410110b701200228028001213a200228028801213b0b203a203b413c6c6a220a203d360200200a20022903900137020420332802002132201c290300210b20352903002112202e29030021132030290300211420312903002136200a20383b0138200a410c6a2036370200200a41146a2014370200200a411c6a2013370200200a41246a2012370200200a412c6a200b370200200a41346a20323602002002203b41016a223b36028801203c2039470d000b20022802840121350b203a450d02200241086a200110880120022802080d05200228020c223d2001280204410676220a200a203d4b1b221c410674220a417f4c0d09201c0d034104213c0c040b203141ff0171450d00200241003a00c4030b200241d0016a41306a20024190026a41306a280200360200200241d0016a41286a20024190026a41286a290300370300200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d002001413c6c450d00203a10230b2000410036020002402034450d00203441386c450d00202f10230b0240202d450d00202d41346c450d00202c10230b0240202a450d00202a41306c450d00202910230b02402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d1c0c1d0b200a1021223c450d060b4100213e20024100360288012002201c360284012002203c36028001024002400240203d450d004100213e4100213f0340200128020422384104490d03203f41016a213f417c211c20012802002239280000214020012038417c6a3602042001203941046a3602004100210a200241003a00c803410021310340200241003b01d0032038201c6a222e4102490d032039200a6a223041046a2f000021322001202e417e6a222e3602042001203041066a2230360200200241003b01d003202e4102490d0320024190036a200a6a223320323b0100203341026a20302f00003b01002001202e417e6a3602042001203041026a3602002002203141016a22313a00c803201c417c6a211c200a41046a220a4138470d000b200241d0036a41306a222e20024190036a41306a290300370300200241d0036a41286a223020024190036a41286a290300370300200241d0036a41206a223220024190036a41206a290300370300200241d0036a41186a223320024190036a41186a290300370300200241d0036a41106a224120024190036a41106a290300370300200241d0036a41086a224220024190036a41086a29030037030020022002290390033703d003203141ff0171410e490d03200241d0026a41306a2231202e290300370300200241d0026a41286a222e2030290300370300200241d0026a41206a22302032290300370300200241d0026a41186a22322033290300370300200241d0026a41106a22332041290300370300200241d0026a41086a22412042290300370300200220022903d0033703d0022038201c6a41014d0d032039200a6a221c41046a2f0000213920012038200a6b417a6a3602042001201c41066a36020020024190026a41086a2041290300220b37030020024190026a41106a2033290300221237030020024190026a41186a2032290300221337030020024190026a41206a2030290300221437030020024190026a41286a202e290300223637030020024190026a41306a20312903002237370300200220022903d002224337039002200241d0016a41306a220a2037370300200241d0016a41286a221c2036370300200241d0016a41206a222e2014370300200241d0016a41186a22302013370300200241d0016a41106a22312012370300200241d0016a41086a2232200b370300200220433703d00120024190016a41306a2233200a29030037030020024190016a41286a2238201c29030037030020024190016a41206a221c202e29030037030020024190016a41186a222e203029030037030020024190016a41106a2230203129030037030020024190016a41086a22312032290300370300200220022903d001370390010240203e200228028401470d0020024180016a203e410110b301200228028001213c200228028801213e0b203c203e4106746a220a2040360200200a2002290390013702042033290300210b20382903002112201c2903002113202e29030021142030290300213620312903002137200a20393b013c200a410c6a2037370200200a41146a2036370200200a411c6a2014370200200a41246a2013370200200a412c6a2012370200200a41346a200b3702002002203e41016a223e36028801203f203d470d000b200228028401211c0b203c450d022002200110880120022802000d0520022802042240200128020441c4006e220a200a20404b1bad42c4007e220b422088a70d06200ba7220a417f4c0d06200a0d034104213f0c040b203141ff0171450d00200241003a00c8030b200241d0016a41306a20024190026a41306a290300370300200241d0016a41286a20024190026a41286a290300370300200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a29030037030020022802840141ffffff1f71450d00203c10230b2000410036020002402035450d002035413c6c450d00203a10230b02402034450d00203441386c450d00202f10230b0240202d450d00202d41346c450d00202c10230b0240202a450d00202a41306c450d00202910230b02402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d190c1a0b200a1021223f450d030b20024100360288012002203f360280012002200a41c4006e360284010240024002402040450d0041002142410021410340200128020422394104490d03204141016a2141417c212e2001280200223d280000214420012039417c6a3602042001203d41046a3602004100210a200241003a00cc03410021320340200241003b01d0032039202e6a22304102490d03203d200a6a223141046a2f0000213320012030417e6a22303602042001203141066a2231360200200241003b01d00320304102490d0320024190036a200a6a223820333b0100203841026a20312f00003b010020012030417e6a3602042001203141026a3602002002203241016a22323a00cc03202e417c6a212e200a41046a220a413c470d000b200241d0036a41386a223020024190036a41386a280200360200200241d0036a41306a223120024190036a41306a290300370300200241d0036a41286a223320024190036a41286a290300370300200241d0036a41206a223820024190036a41206a290300370300200241d0036a41186a224520024190036a41186a290300370300200241d0036a41106a224620024190036a41106a290300370300200241d0036a41086a224720024190036a41086a29030037030020022002290390033703d003203241ff0171410f490d03200241d0026a41386a22322030280200360200200241d0026a41306a22302031290300370300200241d0026a41286a22312033290300370300200241d0026a41206a22332038290300370300200241d0026a41186a22382045290300370300200241d0026a41106a22452046290300370300200241d0026a41086a22462047290300370300200220022903d0033703d0022039202e6a41014d0d03203d200a6a222e41046a2f0000213d20012039200a6b417a6a3602042001202e41066a36020020024190026a41086a220a204629030037030020024190026a41106a222e204529030037030020024190026a41186a2239203829030037030020024190026a41206a2238203329030037030020024190026a41286a2233203129030037030020024190026a41306a2231203029030037030020024190026a41386a22302032280200360200200220022903d00237039002200241d0016a41086a200a290300220b370300200241d0016a41106a202e2903002212370300200241d0016a41186a20392903002213370300200241d0016a41206a20382903002214370300200241d0016a41286a20332903002236370300200241d0016a41306a20312903002237370300200241d0016a41386a2030280200220a36020020024190016a41086a222e200b37030020024190016a41106a2230201237030020024190016a41186a2231201337030020024190016a41206a2232201437030020024190016a41286a2233203637030020024190016a41306a2238203737030020024190016a41386a2239200a3602002002200229039002220b3703d0012002200b3703900102402042200228028401470d0020024180016a20424101109b01200228028001213f20022802880121420b203f204241c4006c6a220a2044360200200a200229039001370204203928020021392038290300210b20332903002112203229030021132031290300211420302903002136202e2903002137200a203d3b0140200a410c6a2037370200200a41146a2036370200200a411c6a2014370200200a41246a2013370200200a412c6a2012370200200a41346a200b370200200a413c6a20393602002002204241016a22423602880120412040470d000b0b203f450d02200229028401210b2000200536020420002006360200200041b8016a200b370200200041b4016a203f360200200041b0016a203e360200200041ac016a201c360200200041a8016a203c360200200041a4016a203b360200200041a0016a20353602002000419c016a203a36020020004198016a202b36020020004194016a203436020020004190016a202f3602002000418c016a202836020020004188016a202d36020020004184016a202c36020020004180016a2025360200200041fc006a202a360200200041f8006a2029360200200041f4006a2022360200200041f0006a2027360200200041ec006a2026360200200041e8006a201f360200200041e4006a2024360200200041e0006a2023360200200041dc006a201d360200200041d8006a2020360200200041d4006a2021360200200041d0006a2019360200200041cc006a2009360200200041c8006a201e360200200041c4006a2017360200200041c0006a201a3602002000413c6a201b360200200041386a2010360200200041346a2016360200200041306a20183602002000412c6a200e360200200041286a2011360200200041246a2015360200200041206a20083602002000411c6a2003360200200041186a200f360200200041146a2007360200200041106a200d3602002000410c6a200c360200200041086a20043602000c1a0b203241ff0171450d00200241003a00cc030b200241d0016a41386a20024190026a41386a280200360200200241d0016a41306a20024190026a41306a290300370300200241d0016a41286a20024190026a41286a290300370300200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d00200141c4006c450d00203f10230b200041003602000240201c41ffffff1f71450d00203c10230b02402035450d002035413c6c450d00203a10230b02402034450d00203441386c450d00202f10230b0240202d450d00202d41346c450d00202c10230b0240202a450d00202a41306c450d00202910230b02402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff0171450d170c160b1032000b1033000b200241003a00c0030b200241d0016a41286a20024190026a41286a290300370300200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d00200141386c450d00202f10230b200041003602000240202d450d00202d41346c450d00202c10230b0240202a450d00202a41306c450d00202910230b02402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d110c120b200241003a00bc030b200241d0016a41286a20024190026a41286a280200360200200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d00200141346c450d00202c10230b200041003602000240202a450d00202a41306c450d00202910230b02402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d0e0c0f0b200241003a00b8030b200241d0016a41206a20024190026a41206a290300370300200241d0016a41186a20024190026a41186a2903003703002002280284012201450d00200141306c450d00202910230b2000410036020002402027450d002027412c6c450d00202610230b02402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d0b0c0c0b200241003a00b4030b200241d0016a41206a20024190026a41206a280200360200200241d0016a41186a20024190026a41186a2903003703002002280284012201450d002001412c6c450d00202610230b2000410036020002402024450d00202441286c450d00202310230b02402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d080c090b2000410036020002402020450d00202041246c450d00202110230b0240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d070c080b200041003602000240200941ffffff3f71450d00201e10230b0240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d060c070b200041003602000240201a450d00201a411c6c450d00201b10230b02402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d050c060b2000410036020002402016450d00201641186c450d00201810230b02402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d040c050b2000410036020002402011450d00201141146c450d00201510230b0240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d030c040b200041003602000240200341ffffffff0071450d00200f10230b0240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d020c030b200041003602000240200d450d00200d410c6c450d00200c10230b200541ffffffff01710d010c020b20004100360200200541ffffffff0171450d010b200610230b20024190046a24000bf70301017f0240200041046a28020041ffffffff0171450d00200028020010230b0240200041106a2802002201450d002001410c6c450d00200028020c10230b02402000411c6a28020041ffffffff0071450d00200028021810230b0240200041286a2802002201450d00200141146c450d00200028022410230b0240200041346a2802002201450d00200141186c450d00200028023010230b0240200041c0006a2802002201450d002001411c6c450d00200028023c10230b0240200041cc006a28020041ffffff3f71450d00200028024810230b0240200041d8006a2802002201450d00200141246c450d00200028025410230b0240200041e4006a2802002201450d00200141286c450d00200028026010230b0240200041f0006a2802002201450d002001412c6c450d00200028026c10230b0240200041fc006a2802002201450d00200141306c450d00200028027810230b024020004188016a2802002201450d00200141346c450d0020002802840110230b024020004194016a2802002201450d00200141386c450d0020002802900110230b0240200041a0016a2802002201450d002001413c6c450d00200028029c0110230b0240200041ac016a28020041ffffff1f71450d0020002802a80110230b0240200041b8016a2802002201450d00200141c4006c450d0020002802b40110230b0be49301032a7f047e247f23004180026b22042400200441b8016a4200370300200441b0016a22054280808080c000370300200441a0016a420037030020044198016a22064280808080c00037030020044188016a420037030020044180016a22074280808080c000370300200441f0006a4200370300200441e8006a22084280808080c000370300200441d8006a4200370300200441d0006a22094280808080c000370300200441c0006a4200370300200441386a220a4280808080c000370300200441286a4200370300200441206a220b4280808080c000370300200441106a4200370300200442043703a8012004420437039001200442043703782004420437036020044204370348200442043703302004420437031820044280808080c000370308200442043703002001280200220c2001280208220d412c6c220e6a210f20012802042110200c2101024002400240200d450d00200441bc016a2111200441b4016a2112200441a8016a2113200441a4016a21142004419c016a211520044190016a21162004418c016a211720044184016a2118200441f8006a2119200441f4006a211a200441ec006a211b200441e0006a211c200441dc006a211d200441d4006a211e200441c8006a211f200441c4006a21202004413c6a2121200441306a21222004412c6a2123200441246a2124200441186a2125200441146a21262004410c6a2127200441086a2128200e41546a210d200441e0016a41086a2129200441e0016a41106a212a200441e0016a41186a212b200c210e0340200e280208212c200e280204212d2029200e41146a290200370300202a200e411c6a290200370300202b200e41246a2902003703002004200e29020c3703e001200e412c6a2101200e280200220e450d01200441c0016a41186a202b290300222e370300200441c0016a41106a202a290300222f370300200441c0016a41086a20292903002230370300200420042903e00122313703c001202b202e370300202a202f37030020292030370300200420313703e001024002400240202c41104d0d00410121320c010b024002400240024002400240024002400240024002400240024002400240024002400240202c0e11000102030405060708090a0b0c0d0e0f10000b0240202d450d00202d41226c450d00200e10230b2001200f460d150c120b4102213220022802082233450d102002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c120b0b20032802082234450d102003280200212c203441057421354100213402400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c120b0b2034418080044f0d1002402004280208222c2004280204470d002004202c410110a5012004280208212c0b2004280200202c4103746a222c20343b0104202c20333602002028212c0c0f0b4102213220022802082233450d0f2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c110b0b2003280208222c450d0f41002135202c4105742237213620032802002234212c02400340200e202c460d012035202c200e412010a30522384100476a21352038450d01202c41206a212c203641606a22360d000c110b0b203541ffff034b0d0f200e41226a2136200e2f012021394100212c0240034020362034460d01202c20342036412010a30522384100476a212c2038450d01203441206a2134203741606a22370d000c110b0b202c41ffff034b0d0f0240200428021422322004280210470d00202720324101109501200428021421320b200428020c2032410c6c6a2232202c3b0108203220353b010420322033360200203241066a20393b01002026212c0c0e0b4102213220022802082233450d0e2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c100b0b2003280208222c450d0e41002134202c410574223a213520032802002238212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c100b0b203441ffff034b0d0e200e41226a2136200e2f0120213b41002135203a21372038212c024003402036202c460d012035202c2036412010a30522394100476a21352039450d01202c41206a212c203741606a22370d000c100b0b203541ffff034b0d0e200e41c4006a2136200e41c2006a2f010021394100212c0240034020362038460d01202c20382036412010a30522374100476a212c2037450d01203841206a2138203a41606a223a0d000c100b0b202c41ffff034b0d0e024020042802202232200428021c470d0020252032410110a001200428022021320b200428021820324104746a2232202c3b010c203220343b0104203220333602002032410a6a20393b0100203241086a20353b0100203241066a203b3b0100200b212c0c0d0b4102213220022802082233450d0d2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0f0b0b2003280208222c450d0d41002134202c410574223b213520032802002237212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0f0b0b203441ffff034b0d0d200e41226a2136200e2f0120213c41002135203b21382037212c024003402036202c460d012035202c2036412010a30522394100476a21352039450d01202c41206a212c203841606a22380d000c0f0b0b203541ffff034b0d0d200e41c4006a2138200e41c2006a2f0100213d41002136203b21392037212c024003402038202c460d012036202c2038412010a305223a4100476a2136203a450d01202c41206a212c203941606a22390d000c0f0b0b203641ffff034b0d0d200e41e6006a2138200e41e4006a2f0100213a4100212c0240034020382037460d01202c20372038412010a30522394100476a212c2039450d01203741206a2137203b41606a223b0d000c0f0b0b202c41ffff034b0d0d0240200428022c22322004280228470d00202420324101109e01200428022c21320b2004280224203241146c6a2232202c3b0110203220343b0104203220333602002032410e6a203a3b01002032410c6a20363b01002032410a6a203d3b0100203241086a20353b0100203241066a203c3b01002023212c0c0c0b4102213220022802082233450d0c2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0e0b0b2003280208222c450d0c41002134202c410574223b213520032802002239212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0e0b0b203441ffff034b0d0c200e41226a2136200e2f0120213d41002135203b21382039212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c0e0b0b203541ffff034b0d0c200e41c4006a2138200e41c2006a2f0100213e41002136203b21372039212c024003402038202c460d012036202c2038412010a305223a4100476a2136203a450d01202c41206a212c203741606a22370d000c0e0b0b203641ffff034b0d0c200e41e6006a2137200e41e4006a2f0100213f41002138203b213a2039212c024003402037202c460d012038202c2037412010a305223c4100476a2138203c450d01202c41206a212c203a41606a223a0d000c0e0b0b203841ffff034b0d0c200e4188016a2137200e4186016a2f0100213c4100212c0240034020372039460d01202c20392037412010a305223a4100476a212c203a450d01203941206a2139203b41606a223b0d000c0e0b0b202c41ffff034b0d0c0240200428023822322004280234470d0020222032410110b001200428023821320b2004280230203241186c6a2232202c3b0114203220343b010420322033360200203241126a203c3b0100203241106a20383b01002032410e6a203f3b01002032410c6a20363b01002032410a6a203e3b0100203241086a20353b0100203241066a203d3b0100200a212c0c0b0b4102213220022802082233450d0b2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0d0b0b2003280208222c450d0b41002134202c410574223c21352003280200223a212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0d0b0b203441ffff034b0d0b200e41226a2136200e2f0120213e41002135203c2138203a212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c0d0b0b203541ffff034b0d0b200e41c4006a2138200e41c2006a2f0100213f41002136203c2137203a212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c0d0b0b203641ffff034b0d0b200e41e6006a2137200e41e4006a2f0100214041002138203c2139203a212c024003402037202c460d012038202c2037412010a305223b4100476a2138203b450d01202c41206a212c203941606a22390d000c0d0b0b203841ffff034b0d0b200e4188016a2139200e4186016a2f0100214141002137203c213b203a212c024003402039202c460d012037202c2039412010a305223d4100476a2137203d450d01202c41206a212c203b41606a223b0d000c0d0b0b203741ffff034b0d0b200e41aa016a2139200e41a8016a2f0100213d4100212c024003402039203a460d01202c203a2039412010a305223b4100476a212c203b450d01203a41206a213a203c41606a223c0d000c0d0b0b202c41ffff034b0d0b0240200428024422322004280240470d0020212032410110a301200428024421320b200428023c2032411c6c6a2232202c3b0118203220343b010420322033360200203241166a203d3b0100203241146a20373b0100203241126a20413b0100203241106a20383b01002032410e6a20403b01002032410c6a20363b01002032410a6a203f3b0100203241086a20353b0100203241066a203e3b01002020212c0c0a0b4102213220022802082233450d0a2002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0c0b0b2003280208222c450d0a41002134202c410574223c21352003280200223a212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0c0b0b203441ffff034b0d0a200e41226a2136200e2f0120213f41002135203c2138203a212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c0c0b0b203541ffff034b0d0a200e41c4006a2138200e41c2006a2f0100214041002136203c2137203a212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c0c0b0b203641ffff034b0d0a200e41e6006a2137200e41e4006a2f0100214141002138203c2139203a212c024003402037202c460d012038202c2037412010a305223b4100476a2138203b450d01202c41206a212c203941606a22390d000c0c0b0b203841ffff034b0d0a200e4188016a2139200e4186016a2f0100214241002137203c213b203a212c024003402039202c460d012037202c2039412010a305223d4100476a2137203d450d01202c41206a212c203b41606a223b0d000c0c0b0b203741ffff034b0d0a200e41aa016a213b200e41a8016a2f0100214341002139203c213d203a212c02400340203b202c460d012039202c203b412010a305223e4100476a2139203e450d01202c41206a212c203d41606a223d0d000c0c0b0b203941ffff034b0d0a200e41cc016a213b200e41ca016a2f0100213e4100212c02400340203b203a460d01202c203a203b412010a305223d4100476a212c203d450d01203a41206a213a203c41606a223c0d000c0c0b0b202c41ffff034b0d0a024020042802502232200428024c470d00201f2032410110a801200428025021320b200428024820324105746a2232202c3b011c203220343b0104203220333602002032411a6a203e3b0100203241186a20393b0100203241166a20433b0100203241146a20373b0100203241126a20423b0100203241106a20383b01002032410e6a20413b01002032410c6a20363b01002032410a6a20403b0100203241086a20353b0100203241066a203f3b01002009212c0c090b4102213220022802082233450d092002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0b0b0b2003280208222c450d0941002134202c410574223d21352003280200223b212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0b0b0b203441ffff034b0d09200e41226a2136200e2f0120214041002135203d2138203b212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c0b0b0b203541ffff034b0d09200e41c4006a2138200e41c2006a2f0100214141002136203d2137203b212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c0b0b0b203641ffff034b0d09200e41e6006a2137200e41e4006a2f0100214241002138203d2139203b212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a22390d000c0b0b0b203841ffff034b0d09200e4188016a2139200e4186016a2f0100214341002137203d213a203b212c024003402039202c460d012037202c2039412010a305223c4100476a2137203c450d01202c41206a212c203a41606a223a0d000c0b0b0b203741ffff034b0d09200e41aa016a213a200e41a8016a2f0100214441002139203d213c203b212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203c41606a223c0d000c0b0b0b203941ffff034b0d09200e41cc016a213c200e41ca016a2f010021454100213a203d213e203b212c02400340203c202c460d01203a202c203c412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c0b0b0b203a41ffff034b0d09200e41ee016a213c200e41ec016a2f0100213f4100212c02400340203c203b460d01202c203b203c412010a305223e4100476a212c203e450d01203b41206a213b203d41606a223d0d000c0b0b0b202c41ffff034b0d090240200428025c22322004280258470d00201e2032410110a201200428025c21320b2004280254203241246c6a2232202c3b0120203220343b0104203220333602002032411e6a203f3b01002032411c6a203a3b01002032411a6a20453b0100203241186a20393b0100203241166a20443b0100203241146a20373b0100203241126a20433b0100203241106a20383b01002032410e6a20423b01002032410c6a20363b01002032410a6a20413b0100203241086a20353b0100203241066a20403b0100201d212c0c080b4102213220022802082233450d082002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c0a0b0b2003280208222c450d0841002134202c410574223d21352003280200223b212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c0a0b0b203441ffff034b0d08200e41226a2136200e2f0120214141002135203d2138203b212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c0a0b0b203541ffff034b0d08200e41c4006a2138200e41c2006a2f0100214241002136203d2137203b212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c0a0b0b203641ffff034b0d08200e41e6006a2137200e41e4006a2f0100214341002138203d2139203b212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a22390d000c0a0b0b203841ffff034b0d08200e4188016a2139200e4186016a2f0100214441002137203d213a203b212c024003402039202c460d012037202c2039412010a305223c4100476a2137203c450d01202c41206a212c203a41606a223a0d000c0a0b0b203741ffff034b0d08200e41aa016a213a200e41a8016a2f0100214541002139203d213c203b212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203c41606a223c0d000c0a0b0b203941ffff034b0d08200e41cc016a213c200e41ca016a2f010021464100213a203d213e203b212c02400340203c202c460d01203a202c203c412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c0a0b0b203a41ffff034b0d08200e41ee016a213e200e41ec016a2f010021474100213c203d213f203b212c02400340203e202c460d01203c202c203e412010a30522404100476a213c2040450d01202c41206a212c203f41606a223f0d000c0a0b0b203c41ffff034b0d08200e4190026a213e200e418e026a2f010021404100212c02400340203e203b460d01202c203b203e412010a305223f4100476a212c203f450d01203b41206a213b203d41606a223d0d000c0a0b0b202c41ffff034b0d080240200428026822322004280264470d00201c2032410110aa01200428026821320b2004280260203241286c6a2232202c3b0124203220343b010420322033360200203241226a20403b0100203241206a203c3b01002032411e6a20473b01002032411c6a203a3b01002032411a6a20463b0100203241186a20393b0100203241166a20453b0100203241146a20373b0100203241126a20443b0100203241106a20383b01002032410e6a20433b01002032410c6a20363b01002032410a6a20423b0100203241086a20353b0100203241066a20413b01002008212c0c070b4102213220022802082233450d072002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c090b0b2003280208222c450d0741002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c090b0b203441ffff034b0d07200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c090b0b203541ffff034b0d07200e41c4006a2138200e41c2006a2f0100214341002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c090b0b203641ffff034b0d07200e41e6006a2137200e41e4006a2f0100214441002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a22390d000c090b0b203841ffff034b0d07200e4188016a2139200e4186016a2f0100214541002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a0d000c090b0b203741ffff034b0d07200e41aa016a213a200e41a8016a2f0100214641002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b0d000c090b0b203941ffff034b0d07200e41cc016a213b200e41ca016a2f010021474100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c090b0b203a41ffff034b0d07200e41ee016a213e200e41ec016a2f010021484100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f0d000c090b0b203b41ffff034b0d07200e4190026a213f200e418e026a2f010021494100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a22400d000c090b0b203e41ffff034b0d07200e41b2026a213f200e41b0026a2f010021414100212c02400340203f203c460d01202c203c203f412010a30522404100476a212c2040450d01203c41206a213c203d41606a223d0d000c090b0b202c41ffff034b0d070240200428027422322004280270470d00201b2032410110a601200428027421320b200428026c2032412c6c6a2232202c3b0128203220343b010420322033360200203241266a20413b0100203241246a203e3b0100203241226a20493b0100203241206a203b3b01002032411e6a20483b01002032411c6a203a3b01002032411a6a20473b0100203241186a20393b0100203241166a20463b0100203241146a20373b0100203241126a20453b0100203241106a20383b01002032410e6a20443b01002032410c6a20363b01002032410a6a20433b0100203241086a20353b0100203241066a20423b0100201a212c0c060b4102213220022802082233450d062002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a22340d000c080b0b2003280208222c450d0641002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a22350d000c080b0b203441ffff034b0d06200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a22380d000c080b0b203541ffff034b0d06200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a22370d000c080b0b203641ffff034b0d06200e41e6006a2137200e41e4006a2f0100214541002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a22390d000c080b0b203841ffff034b0d06200e4188016a2139200e4186016a2f0100214641002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a0d000c080b0b203741ffff034b0d06200e41aa016a213a200e41a8016a2f0100214741002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b0d000c080b0b203941ffff034b0d06200e41cc016a213b200e41ca016a2f010021484100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e0d000c080b0b203a41ffff034b0d06200e41ee016a213e200e41ec016a2f010021494100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f0d000c080b0b203b41ffff034b0d06200e4190026a213f200e418e026a2f0100214a4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a22400d000c080b0b203e41ffff034b0d06200e41b2026a2140200e41b0026a2f0100214b4100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d080c000b0b203f41ffff034b0d06200e41d4026a2140200e41d2026a2f010021434100212c024003402040203c460d01202c203c2040412010a30522414100476a212c2041450d01203c41206a213c203d41606a223d450d080c000b0b202c41ffff034b0d0602402004280280012232200428027c470d0020192032410110b60120042802800121320b2004280278203241306c6a2232202c3b012c203220343b0104203220333602002032412a6a20433b0100203241286a203f3b0100203241266a204b3b0100203241246a203e3b0100203241226a204a3b0100203241206a203b3b01002032411e6a20493b01002032411c6a203a3b01002032411a6a20483b0100203241186a20393b0100203241166a20473b0100203241146a20373b0100203241126a20463b0100203241106a20383b01002032410e6a20453b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002007212c0c050b4102213220022802082233450d052002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a2234450d070c000b0b2003280208222c450d0541002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a2235450d070c000b0b203441ffff034b0d05200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a2238450d070c000b0b203541ffff034b0d05200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a2237450d070c000b0b203641ffff034b0d05200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a2239450d070c000b0b203841ffff034b0d05200e4188016a2139200e4186016a2f0100214741002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a450d070c000b0b203741ffff034b0d05200e41aa016a213a200e41a8016a2f0100214841002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b450d070c000b0b203941ffff034b0d05200e41cc016a213b200e41ca016a2f010021494100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e450d070c000b0b203a41ffff034b0d05200e41ee016a213e200e41ec016a2f0100214a4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f450d070c000b0b203b41ffff034b0d05200e4190026a213f200e418e026a2f0100214b4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a2240450d070c000b0b203e41ffff034b0d05200e41b2026a2140200e41b0026a2f0100214c4100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d070c000b0b203f41ffff034b0d05200e41d4026a2141200e41d2026a2f0100214d41002140203d2143203c212c024003402041202c460d012040202c2041412010a30522454100476a21402045450d01202c41206a212c204341606a2243450d070c000b0b204041ffff034b0d05200e41f6026a2141200e41f4026a2f010021454100212c024003402041203c460d01202c203c2041412010a30522434100476a212c2043450d01203c41206a213c203d41606a223d450d070c000b0b202c41ffff034b0d050240200428028c012232200428028801470d0020182032410110a701200428028c0121320b200428028401203241346c6a2232202c3b0130203220343b0104203220333602002032412e6a20453b01002032412c6a20403b01002032412a6a204d3b0100203241286a203f3b0100203241266a204c3b0100203241246a203e3b0100203241226a204b3b0100203241206a203b3b01002032411e6a204a3b01002032411c6a203a3b01002032411a6a20493b0100203241186a20393b0100203241166a20483b0100203241146a20373b0100203241126a20473b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002017212c0c040b4102213220022802082233450d042002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a2234450d060c000b0b2003280208222c450d0441002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a2235450d060c000b0b203441ffff034b0d04200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a2238450d060c000b0b203541ffff034b0d04200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a2237450d060c000b0b203641ffff034b0d04200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a2239450d060c000b0b203841ffff034b0d04200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a450d060c000b0b203741ffff034b0d04200e41aa016a213a200e41a8016a2f0100214941002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b450d060c000b0b203941ffff034b0d04200e41cc016a213b200e41ca016a2f0100214a4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e450d060c000b0b203a41ffff034b0d04200e41ee016a213e200e41ec016a2f0100214b4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f450d060c000b0b203b41ffff034b0d04200e4190026a213f200e418e026a2f0100214c4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a2240450d060c000b0b203e41ffff034b0d04200e41b2026a2140200e41b0026a2f0100214d4100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d060c000b0b203f41ffff034b0d04200e41d4026a2141200e41d2026a2f0100214e41002140203d2143203c212c024003402041202c460d012040202c2041412010a30522454100476a21402045450d01202c41206a212c204341606a2243450d060c000b0b204041ffff034b0d04200e41f6026a2143200e41f4026a2f0100214f41002141203d2145203c212c024003402043202c460d012041202c2043412010a30522474100476a21412047450d01202c41206a212c204541606a2245450d060c000b0b204141ffff034b0d04200e4198036a2143200e4196036a2f010021474100212c024003402043203c460d01202c203c2043412010a30522454100476a212c2045450d01203c41206a213c203d41606a223d450d060c000b0b202c41ffff034b0d0402402004280298012232200428029401470d0020162032410110ae0120042802980121320b200428029001203241386c6a2232202c3b0134203220343b010420322033360200203241326a20473b0100203241306a20413b01002032412e6a204f3b01002032412c6a20403b01002032412a6a204e3b0100203241286a203f3b0100203241266a204d3b0100203241246a203e3b0100203241226a204c3b0100203241206a203b3b01002032411e6a204b3b01002032411c6a203a3b01002032411a6a204a3b0100203241186a20393b0100203241166a20493b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002006212c0c030b4102213220022802082233450d032002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a2234450d050c000b0b2003280208222c450d0341002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a2235450d050c000b0b203441ffff034b0d03200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a2238450d050c000b0b203541ffff034b0d03200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a2237450d050c000b0b203641ffff034b0d03200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a2239450d050c000b0b203841ffff034b0d03200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a450d050c000b0b203741ffff034b0d03200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b450d050c000b0b203941ffff034b0d03200e41cc016a213b200e41ca016a2f0100214b4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e450d050c000b0b203a41ffff034b0d03200e41ee016a213e200e41ec016a2f0100214c4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f450d050c000b0b203b41ffff034b0d03200e4190026a213f200e418e026a2f0100214d4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a2240450d050c000b0b203e41ffff034b0d03200e41b2026a2140200e41b0026a2f0100214e4100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d050c000b0b203f41ffff034b0d03200e41d4026a2141200e41d2026a2f0100214f41002140203d2143203c212c024003402041202c460d012040202c2041412010a30522454100476a21402045450d01202c41206a212c204341606a2243450d050c000b0b204041ffff034b0d03200e41f6026a2143200e41f4026a2f0100215041002141203d2145203c212c024003402043202c460d012041202c2043412010a30522474100476a21412047450d01202c41206a212c204541606a2245450d050c000b0b204141ffff034b0d03200e4198036a2145200e4196036a2f0100215141002143203d2147203c212c024003402045202c460d012043202c2045412010a30522494100476a21432049450d01202c41206a212c204741606a2247450d050c000b0b204341ffff034b0d03200e41ba036a2145200e41b8036a2f010021494100212c024003402045203c460d01202c203c2045412010a30522474100476a212c2047450d01203c41206a213c203d41606a223d450d050c000b0b202c41ffff034b0d03024020042802a401223220042802a001470d0020152032410110b70120042802a40121320b200428029c012032413c6c6a2232202c3b0138203220343b010420322033360200203241366a20493b0100203241346a20433b0100203241326a20513b0100203241306a20413b01002032412e6a20503b01002032412c6a20403b01002032412a6a204f3b0100203241286a203f3b0100203241266a204e3b0100203241246a203e3b0100203241226a204d3b0100203241206a203b3b01002032411e6a204c3b01002032411c6a203a3b01002032411a6a204b3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002014212c0c020b4102213220022802082233450d022002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a2234450d040c000b0b2003280208222c450d0241002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a2235450d040c000b0b203441ffff034b0d02200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a2238450d040c000b0b203541ffff034b0d02200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a2237450d040c000b0b203641ffff034b0d02200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a2239450d040c000b0b203841ffff034b0d02200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a450d040c000b0b203741ffff034b0d02200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b450d040c000b0b203941ffff034b0d02200e41cc016a213b200e41ca016a2f0100214c4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e450d040c000b0b203a41ffff034b0d02200e41ee016a213e200e41ec016a2f0100214d4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f450d040c000b0b203b41ffff034b0d02200e4190026a213f200e418e026a2f0100214e4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a2240450d040c000b0b203e41ffff034b0d02200e41b2026a2140200e41b0026a2f0100214f4100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d040c000b0b203f41ffff034b0d02200e41d4026a2141200e41d2026a2f0100215041002140203d2143203c212c024003402041202c460d012040202c2041412010a30522454100476a21402045450d01202c41206a212c204341606a2243450d040c000b0b204041ffff034b0d02200e41f6026a2143200e41f4026a2f0100215141002141203d2145203c212c024003402043202c460d012041202c2043412010a30522474100476a21412047450d01202c41206a212c204541606a2245450d040c000b0b204141ffff034b0d02200e4198036a2145200e4196036a2f0100215241002143203d2147203c212c024003402045202c460d012043202c2045412010a30522494100476a21432049450d01202c41206a212c204741606a2247450d040c000b0b204341ffff034b0d02200e41ba036a2147200e41b8036a2f0100215341002145203d2149203c212c024003402047202c460d012045202c2047412010a305224b4100476a2145204b450d01202c41206a212c204941606a2249450d040c000b0b204541ffff034b0d02200e41dc036a2147200e41da036a2f0100214b4100212c024003402047203c460d01202c203c2047412010a30522494100476a212c2049450d01203c41206a213c203d41606a223d450d040c000b0b202c41ffff034b0d02024020042802b001223220042802ac01470d0020132032410110b30120042802b00121320b20042802a80120324106746a2232202c3b013c203220343b0104203220333602002032413a6a204b3b0100203241386a20453b0100203241366a20533b0100203241346a20433b0100203241326a20523b0100203241306a20413b01002032412e6a20513b01002032412c6a20403b01002032412a6a20503b0100203241286a203f3b0100203241266a204f3b0100203241246a203e3b0100203241226a204e3b0100203241206a203b3b01002032411e6a204d3b01002032411c6a203a3b01002032411a6a204c3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002005212c0c010b4102213220022802082233450d012002280200212c203341057421344100213302400340200441e0016a202c460d012033202c200441e0016a412010a30522354100476a21332035450d01202c41206a212c203441606a2234450d030c000b0b2003280208222c450d0141002134202c410574223d21352003280200223c212c02400340200e202c460d012034202c200e412010a30522364100476a21342036450d01202c41206a212c203541606a2235450d030c000b0b203441ffff034b0d01200e41226a2136200e2f0120214241002135203d2138203c212c024003402036202c460d012035202c2036412010a30522374100476a21352037450d01202c41206a212c203841606a2238450d030c000b0b203541ffff034b0d01200e41c4006a2138200e41c2006a2f0100214441002136203d2137203c212c024003402038202c460d012036202c2038412010a30522394100476a21362039450d01202c41206a212c203741606a2237450d030c000b0b203641ffff034b0d01200e41e6006a2137200e41e4006a2f0100214641002138203d2139203c212c024003402037202c460d012038202c2037412010a305223a4100476a2138203a450d01202c41206a212c203941606a2239450d030c000b0b203841ffff034b0d01200e4188016a2139200e4186016a2f0100214841002137203d213a203c212c024003402039202c460d012037202c2039412010a305223b4100476a2137203b450d01202c41206a212c203a41606a223a450d030c000b0b203741ffff034b0d01200e41aa016a213a200e41a8016a2f0100214a41002139203d213b203c212c02400340203a202c460d012039202c203a412010a305223e4100476a2139203e450d01202c41206a212c203b41606a223b450d030c000b0b203941ffff034b0d01200e41cc016a213b200e41ca016a2f0100214c4100213a203d213e203c212c02400340203b202c460d01203a202c203b412010a305223f4100476a213a203f450d01202c41206a212c203e41606a223e450d030c000b0b203a41ffff034b0d01200e41ee016a213e200e41ec016a2f0100214e4100213b203d213f203c212c02400340203e202c460d01203b202c203e412010a30522404100476a213b2040450d01202c41206a212c203f41606a223f450d030c000b0b203b41ffff034b0d01200e4190026a213f200e418e026a2f0100214f4100213e203d2140203c212c02400340203f202c460d01203e202c203f412010a30522414100476a213e2041450d01202c41206a212c204041606a2240450d030c000b0b203e41ffff034b0d01200e41b2026a2140200e41b0026a2f010021504100213f203d2141203c212c024003402040202c460d01203f202c2040412010a30522434100476a213f2043450d01202c41206a212c204141606a2241450d030c000b0b203f41ffff034b0d01200e41d4026a2141200e41d2026a2f0100215141002140203d2143203c212c024003402041202c460d012040202c2041412010a30522454100476a21402045450d01202c41206a212c204341606a2243450d030c000b0b204041ffff034b0d01200e41f6026a2143200e41f4026a2f0100215241002141203d2145203c212c024003402043202c460d012041202c2043412010a30522474100476a21412047450d01202c41206a212c204541606a2245450d030c000b0b204141ffff034b0d01200e4198036a2145200e4196036a2f0100215341002143203d2147203c212c024003402045202c460d012043202c2045412010a30522494100476a21432049450d01202c41206a212c204741606a2247450d030c000b0b204341ffff034b0d01200e41ba036a2147200e41b8036a2f0100215441002145203d2149203c212c024003402047202c460d012045202c2047412010a305224b4100476a2145204b450d01202c41206a212c204941606a2249450d030c000b0b204541ffff034b0d01200e41dc036a2149200e41da036a2f0100215541002147203d214b203c212c024003402049202c460d012047202c2049412010a305224d4100476a2147204d450d01202c41206a212c204b41606a224b450d030c000b0b204741ffff034b0d01200e41fe036a2149200e41fc036a2f0100214d4100212c024003402049203c460d01202c203c2049412010a305224b4100476a212c204b450d01203c41206a213c203d41606a223d450d030c000b0b202c41ffff034b0d01024020042802bc01223220042802b801470d00201220324101109b0120042802bc0121320b20042802b401203241c4006c6a2232202c3b0140203220343b0104203220333602002032413e6a204d3b01002032413c6a20473b01002032413a6a20553b0100203241386a20453b0100203241366a20543b0100203241346a20433b0100203241326a20533b0100203241306a20413b01002032412e6a20523b01002032412c6a20403b01002032412a6a20513b0100203241286a203f3b0100203241266a20503b0100203241246a203e3b0100203241226a204f3b0100203241206a203b3b01002032411e6a204e3b01002032411c6a203a3b01002032411a6a204c3b0100203241186a20393b0100203241166a204a3b0100203241146a20373b0100203241126a20483b0100203241106a20383b01002032410e6a20463b01002032410c6a20363b01002032410a6a20443b0100203241086a20353b0100203241066a20423b01002011212c0b202c202c28020041016a3602000240202d450d00202d41226c450d00200e10230b2001200f460d040c010b200041013a0000200020323a00010240202d450d00202d41226c450d00200e10230b0240200f2001460d0003400240200141046a280200220e450d00200e41226c450d00200128020010230b2001412c6a2101200d41546a220d0d000b0b02402010450d002010412c6c450d00200c10230b20041083020c040b200d41546a210d2001210e0c000b0b200f2001460d0003402001220d412c6a21010240200d41046a280200220e450d00200e41226c450d00200d28020010230b200f2001470d000b0b02402010450d002010412c6c450d00200c10230b200041046a200441c00110a1051a200041003a00000b20044180026a24000bd80301067f230041106b2202240020024100360208200242013703000240412010212203450d0020032000290038370000200341086a200041c0006a290000370000200341106a200041c8006a290000370000200341186a200041d0006a29000037000020022003360200200242a080808080043702042002200036020c2002410c6a200210db012002200041106a36020c2002410c6a200210db0120002802202103200041286a28020022042002106102402004450d002003200441186c6a210403402002200336020c2002410c6a200210db01200341106a200210ed012004200341186a2203470d000b0b200028022c2105200041346a28020022032002106102400240024020022802042206200228020822046b20034102742200490d0020022802002103200621070c010b200420006a22032004490d01200641017422072003200720034b1b22074100480d010240024020060d00024020070d00410121030c020b2007102122030d010c040b2002280200210320062007460d0020032006200710252203450d030b20022007360204200220033602000b200320046a2005200010a1051a2001290200200420006aad4220862003ad84100e02402007450d00200310230b200241106a24000f0b102c000b102a000bdb0401097f230041c0016b2202240020024188016a200110c601200241306a200228028801220320022802900110e20120024198016a41086a2204200241ec006a29020037030020024198016a41106a2205200241f4006a29020037030020024198016a41186a2206200241fc006a29020037030020024198016a41206a220720024184016a2802003602002002200241e4006a290200370398010240024020022802502208450d00200241e0006a2802002109200241dc006a280200210a20022802542101200241086a41206a2007280200360200200241086a41186a2006290300370300200241086a41106a2005290300370300200241086a41086a200429030037030020022002290398013703080240200228028c01450d00200310230b200241306a41106a200241086a41106a290300370300200241306a41086a200241086a41086a290300370300200241306a41186a200241086a41186a290300370300200241306a41206a200241086a41206a28020036020020024198016a41086a2002413c6a29020037030020024198016a41106a200241c4006a29020037030020024198016a41186a200241cc006a29020037030020022002290308370330200220022902343703980102402001450d00200141186c450d00200810230b0240200941ffffffff0371450d00200a10230b2000200229039801370001200041196a200241b0016a290300370000200041116a200241a8016a290300370000200041096a200241a0016a290300370000410121010c010b0240200228028c01450d00200310230b410021010b200020013a0000200241c0016a24000bf84511047f017e017f017e0b7f017e017f017e077f027e027f037e017f017e037f017e017f23004180046b22052400200541f8026a41186a22064200370300200541f8026a41106a22074200370300200541f8026a41086a22084200370300200542003703f802418fcdc200ad4280808080f000842209100c220a290000210b200541a8026a41086a220c200a41086a2900003703002005200b3703a802200a10232008200c290300370300200520052903a8023703f80241ccc5c000ad4280808080900284100c220a290000210b200541b8026a41086a220d200a41086a2900003703002005200b3703b802200a1023200720052903b802220b370300200541b8036a41086a220a2008290300370300200541b8036a41106a220e200b370300200541b8036a41186a220f200d290300370300200520052903f8023703b803200541e0016a200541b8036a10880241012110024020052802e001417d710d00200642003703002007420037030020084200370300200542003703f8022009100c2210290000210b200c201041086a2900003703002005200b3703a802201010232008200c290300370300200520052903a8023703f80241a4dfc100ad4280808080b00284100c220c290000210b200d200c41086a2900003703002005200b3703b802200c1023200720052903b802370000200741086a200d290300370000200a2008290300370300200e2007290300370300200f2006290300370300200520052903f8023703b803200541203602bc022005200541b8036a3602b802200541e8016a200541b8036aad428080808080048422091010108b01410021100240024020052802e80122080d00410021110c010b20052802ec01210a02400240200541f0016a2802004104490d00410121112008280000220e418194ebdc03490d010b41002111200541003602900220054201370388022005410a3602e4032005200541b8026a3602e003200520054188026a3602a8022005418c036a4101360200200542013702fc0220054180c5c6003602f8022005200541e0036a36028803200541a8026a4184a5c200200541f8026a10311a20053502900242208620053502880284100a200528028c02450d0020052802880210230b200a450d00200810230b200541f8026a41186a220d4200370300200541f8026a41106a220c4200370300200541f8026a41086a22084200370300200542003703f802418fcdc200ad4280808080f00084100c220a290000210b200541a8026a41086a2206200a41086a2900003703002005200b3703a802200a102320082006290300370300200520052903a8023703f80241b8dbc100ad4280808080900184100c220a290000210b200541b8026a41086a2206200a41086a2900003703002005200b3703b802200a1023200720052903b802370000200741086a2006290300370000200541b8036a41086a2008290300370300200541b8036a41106a200c290300370300200541b8036a41186a200d290300370300200520052903f8023703b803200541f8026a200541b8036a10ba0120052903f8024202510d00200541f8026a200c280200221210c201200541d8016a20052802f802220a20052802800310cd0120052802dc01210c20052802d8012108024020052802fc02450d00200a10230b02400240024020080d00419fcfc000ad4280808080e00684100a4100201241646a2208200820124b1b2113201221140c010b4100201241646a2208200820124b1b21130240200c20044b0d00201221140c010b200541f8026a41186a220c4200370300200541f8026a41106a220d4200370300200541f8026a41086a22084200370300200542003703f802418fcdc200ad4280808080f00084100c220a290000210b200541a8026a41086a2206200a41086a2900003703002005200b3703a802200a102320082006290300370300200520052903a8023703f80241dce0c100ad4280808080a00184100c220a290000210b200541b8026a41086a2206200a41086a2900003703002005200b3703b802200a1023200720052903b802370000200741086a2006290300370000200541b8036a41086a2008290300370300200541b8036a41106a200d290300370300200541b8036a41186a200c290300370300200520052903f8023703b803200541f8026a200541b8036a10e40120052802f8022208410420081b220d20052902fc02420020081b220b422088a741037422086a210a03402008450d02200841786a2108200a417c6a210c200a41786a210a200c28020020044b0d000b200d20086a2802002114200b42ffffffff0183500d00200d10230b200541f8026a41186a22154200370300200541f8026a41106a22164200370300200541f8026a41086a220f4200370300200542003703f802418fcdc200ad4280808080f000842217100c2208290000210b200541a8026a41086a2218200841086a2900003703002005200b3703a80220081023200f2018290300370300200520052903a8023703f802419ce3c100ad4280808080e00284220b100c22082900002119200541b8026a41086a221a200841086a290000370300200520193703b80220081023200720052903b802370000200741086a221b201a290300370000200541b8036a41086a221c200f290300370300200541b8036a41106a221d2016290300370300200541b8036a41186a221e2015290300370300200520052903f8023703b803200541d0016a200541b8036a412010cd0120052802d401210a20052802d001210c2015420037030020164200370300200f4200370300200542003703f8022017100c220829000021192018200841086a290000370300200520193703a80220081023200f2018290300370300200520052903a8023703f802200b100c2208290000210b201a200841086a2900003703002005200b3703b80220081023200720052903b802370000201b201a290300370000201c200f290300370300201d2016290300370300201e2015290300370300200520052903f8023703b8032005200a2012200c4101461b3602f8022009200541f8026aad220b4280808080c00084100e20032001200120034b1b221f450d01200e410020111b2120200541a8036aad4280808080c000842121200b42808080808002842122200541a8036a41046a2123200541e0036a41086a2103200021014100212402400240024003402015420037030020164200370300200f4200370300200542003703f8022017100c2208290000210b2018200841086a2900003703002005200b3703a80220081023200f2018290300370300200520052903a8023703f80241bcd9c100ad4280808080d00184100c2208290000210b201a200841086a2900003703002005200b3703b80220081023200720052903b802370000201b201a290300370000201c200f290300370300201d2016290300370300201e2015290300370300200520052903f8023703b803200541f8026a200541b8036a412010890220052902fc02420020052802f80222081b220b422088a7410574210a2024220c41016a21242002200c4102746a21042000200c41e0006c6a21062008410120081b22102108024003400240200a0d004100210d0c020b4101210d20012008460d0120082006412010a305210c200a41606a210a200841206a2108200c0d000b0b0240200b42ffffff3f83500d00201010230b0240200d0d0020042802002108200542003703b002200542003703a802200541c0016a2006290320220b200641286a290300428094ebdc03420010a705200541a0016a20062903302209200641386a290300428094ebdc03420010a705200541b0016a20052903c0012219200541c0016a41086a29030022254280ec94a37c427f10a605200541f0006a201920252008ad2226420010a60520054190016a20052903a0012219200541a0016a41086a29030022254280ec94a37c427f10a60520054180016a201920252026420010a605200542003703c002200542003703b802202620092005290390017c7e2219428094ebdc0380212502400240200529037042002026200b20052903b0017c7e220b428094ebdc03802209a7417f200b428080808080c0b2cd3b541b200b20094280ec94a37c7e7c4280cab5ee01566a220aad7d85200541f0006a41086a2903004200200a410047ad7d8584500d00200529038001210920054180016a41086a2903002127200541e8016a2014200610bf0120052802e801210a200520052802f001220c3602f4032005200a3602f00320054188026a200cad422086200aad841010108b0102400240200528028802220c0d004200210b0c010b200528028c0221100240024020052802900222044104490d00200c280000220d418094ebdc034b0d004201210b2004417c6a410f4b0d010b200541003602c003200542013703b8032005410a3602e4032005200541f0036a3602e0032005200541b8036a3602a8032005410136028c03200542013702fc0220054180c5c6003602f8022005200541e0036a36028803200541a8036a4184a5c200200541f8026a10311a20053502c00342208620053502b80384100a024020052802bc03450d0020052802b80310230b4200210b2028210d0b02402010450d00200c10230b200d21280b024020052802ec01450d00200a10230b200820284100200b4200521b22044d0d02200541f8026a2014200610bf01200535028003212920052802f802210c41101021220a0d010c060b200542003703f001200542003703e80120054200370390022005420037038802200541f0036a200610c101200541b8036a20052802f003220a20052802f80310c9012003201c280200360200200520052903b8033703e003024020052802c4032208450d00200541a8036a41086a2003280200360200200520052903e0033703a80320052903c803210b0b024020052802f403450d00200a10230b0240024020080d00200542003703c80320054280808080c0003703c003200520133602bc03200541003602b803200541f0036a200610c10120052802f0032108200520052802f8033602e403200520083602e003200541b8036a200541e0036a108a02024020052802f403450d00200810230b2003201c280200360200200520052903b8033703e00320052903c803210b410421080c010b2003200541a8036a41086a280200360200200520052903a8033703e0030b200f20052903e003370200200f41086a2003280200360200200541003a00a403200520063602fc02200520133602f802200520203602a0032005200b370390032005200836028c03200520054188026a36029c032005200541e8016a36029803200541b8036a200541f8026a2014108b02024020052802c0034102460d0020052802b803200528028003470d00200f2012107221082005410120052d00a40320081b22083a00a403200541b8036a200610c30120053502c00342208620052802b803220aad841011024020052802bc03450d00200a10230b200541b8036a200610c50120053502c00342208620052802b803220aad841011024020052802bc03450d00200a10230b02402006108c0241ff0171220a4102460d00200a410171450d0010ef010b200841ff0171450d00200528028403210420052802f8022110024002400240200528029403220e450d00200528028c03210a2005280280032106200e410274210d4100210c2004210802400340200820104d0d01200c41016a210c2008200a2802006b2108200a41046a210a200d417c6a220d0d000c020b0b200e200c4f0d010b200520042010200420104b1b360284030c010b200520042010200420104b1b360284032005200c3602940341000d002006200e6b2006200c6b4f0d004100200e6b210a20052802fc0221080340201e200841186a290000370300201d200841106a290000370300201c200841086a290000370300200520082900003703b80320052006200a6a3602d803200541f0036a200541b8036a10c40120053502f80342208620052802f003220dad841011024020052802f403450d00200d10230b200c200a41016a220a6a0d000b0b200541b8036a20052802fc0210c10120052802b8032108200520052802c0033602f403200520083602f003200f200541f0036a108a0220052802bc03450d00200810230b20052802900341ffffffff0371450d01200528028c0310230c010b200a2008360000200a4110412010252208450d03200820092025a7417f2019428080808080c0b2cd3b541b201920254280ec94a37c7e7c4280cab5ee01566aad7c220b3700042008410c6a2027200b200954ad7c22193700002029422086200cad842008ad4280808080c00284100e20081023024020052802fc02450d00200c10230b20054188026a200610c101200541b8036a200528028802220a20052802900210c9012003201c280200360200200520052903b8033703e003024020052802c4032208450d00200541e8016a41086a2003280200360200200520052903e0033703e80120052903c80321090b0240200528028c02450d00200a10230b0240024020080d00200542003703c80320054280808080c0003703c003200520133602bc03200541003602b80320054188026a200610c101200528028802210820052005280290023602f403200520083602f003200541b8036a200541f0036a108a020240200528028c02450d00200810230b200541f0036a41086a201c280200360200200520052903b8033703f00320052903c8032109410421080c010b200541f0036a41086a200541e8016a41086a280200360200200520052903e8013703f0030b200f20052903f003370200200f41086a222a200541f0036a41086a280200360200200541003a00a403200520063602fc02200520133602f802200520203602a00320052009370390032005200836028c032005200541b8026a36029c032005200541a8026a36029803200541e8006a200541f8026a2014200b2019108d0202400240024020052802684101470d00200528026c200528028003460d010b20052d00a40321080c010b200f2012107221082005410120052d00a40320081b22083a00a403200541b8036a200610c30120053502c00342208620052802b803220aad841011024020052802bc03450d00200a10230b200541b8036a200610c50120053502c00342208620052802b803220aad841011024020052802bc03450d00200a10230b2006108c0241ff0171220a4102460d00200a410171450d0010ef010b0240200841ff0171450d00200528028403210e20052802f8022110024002400240200528029403222b450d00200528028c03210a2005280280032111202b410274210d4100210c200e210802400340200820104d0d01200c41016a210c2008200a2802006b2108200a41046a210a200d417c6a220d0d000c020b0b202b200c4f0d010b2005200e2010200e20104b1b360284030c010b2005200e2010200e20104b1b360284032005200c3602940341000d002011202b6b2011200c6b4f0d004100202b6b210a20052802fc0221080340201e200841186a290000370300201d200841106a290000370300201c200841086a290000370300200520082900003703b80320052011200a6a3602d80320054188026a200541b8036a10c401200535029002422086200528028802220dad8410110240200528028c02450d00200d10230b200c200a41016a220a6a0d000b0b200541b8036a20052802fc0210c10120052802b8032108200520052802c00336028c022005200836028802200f20054188026a108a0220052802bc03450d00200810230b024020052802900341ffffffff0371450d00200528028c0310230b200541003602d002200542083703c802200542003703f001200542003703e801200541c8026a4100200641c8006a220828020010a40102400240200828020022080d004200210920052802c802210c420021190c010b2006280240220e200841306c6a212c2004ad2127034020054200370390022005420037038802200541c0006a200e2903002219200e41086a290300428094ebdc03420010a705200541306a2005290340220b200541c0006a41086a29030022094280ec94a37c427f10a605200541206a200b20092027420010a605200541106a200b20092026420010a605200541f8026a2014200e41106a221010c001200541d0006a20052802f802220a20052802800310d7014200200541106a41086a290300200529031022092026201920052903307c22197e220b428094ebdc03802225a7417f200b428080808080c0b2cd3b541b200b20254280ec94a37c7e7c4280cab5ee01566aad7c220b200954ad7c2209200541206a41086a29030020052903202225202720197e2219428094ebdc03802229a7417f2019428080808080c0b2cd3b541b201920294280ec94a37c7e7c4280cab5ee01566aad7c2219202554ad7c7d200b201954ad7d2225200b20197d2219200b56202520095620252009511b22081b21094200201920081b210b200541d0006a41106a29030021192005290358212520052802502108024020052802fc02450d00200a10230b200541b8036a2014201010c00120052802b803210a20053502c003212920052025420020081b2225200b7c220b3703f80220052019420020081b20097c200b202554ad7c2209370380032029422086200aad842022100e024020052802bc03450d00200a10230b200541f0036a201010c101200541b8036a20052802f003220a20052802f80310c9012003201c280200360200200520052903b8033703e003024020052802c4032208450d00200541a8036a41086a2003280200360200200520052903e0033703a80320052903c803212d0b024020052802f403450d00200a10230b0240024020080d00200542003703c80320054280808080c0003703c003200520133602bc03200541003602b803200541f0036a201010c10120052802f0032108200520052802f8033602e403200520083602e003200541b8036a200541e0036a108a02024020052802f403450d00200810230b2003201c280200360200200520052903b8033703e00320052903c8032119410421080c010b2003200541a8036a41086a280200360200200520052903a8033703e003202d21190b200f20052903e003370200202a2003280200360200200541003a00a403200520103602fc02200520133602f802200520203602a00320052019370390032005200836028c03200520054188026a36029c032005200541e8016a36029803200541086a200541f8026a2014200b2009108d020240024020052802084101470d00200528020c200528028003470d00200f2012107221082005410120052d00a40320081b22083a00a4030c010b20052d00a40321080b0240200841ff0171450d00200528028403211120052802f8022104024002400240200528029403222e450d00200528028c03210a200528028003212b202e410274210d4100210c2011210802400340200820044d0d01200c41016a210c2008200a2802006b2108200a41046a210a200d417c6a220d0d000c020b0b202e200c4f0d010b200520112004201120044b1b360284030c010b200520112004201120044b1b360284032005200c3602940341000d00202b202e6b202b200c6b4f0d004100202e6b210a20052802fc0221080340201e200841186a290000370300201d200841106a290000370300201c200841086a290000370300200520082900003703b8032005202b200a6a3602d803200541f0036a200541b8036a10c40120053502f80342208620052802f003220dad841011024020052802f403450d00200d10230b200c200a41016a220a6a0d000b0b200541b8036a20052802fc0210c10120052802b8032108200520052802c0033602f403200520083602f003200f200541f0036a108a0220052802bc03450d00200810230b024020052802900341ffffffff0371450d00200528028c0310230b200e41306a210e201041086a290000210b201029000021092015201041186a2900003703002016201041106a290000370300200f200b370300200520093703f80220054188026a41086a290300210b2005290388022109024020052802d002220a20052802cc02470d00200541c8026a200a410110a40120052802d002210a0b20052802c802220c200a41306c6a22082009370320200820052903f802370300200841286a200b370300200841086a200f290300370300200841106a2016290300370300200841186a20152903003703002005200a41016a3602d002200e202c470d000b200541e8016a41086a290300211920052903e80121090b2018290300212520052903a802210b200541e8016a41086a2208200641086a290300370300200541e8016a41106a220a200641106a290300370300200541e8016a41186a220d200641186a290300370300200520062903003703e801200c450d00201a290300212620052903b802212720052902cc02212920054188026a41186a2210200d29030037030020054188026a41106a220d200a29030037030020054188026a41086a220a2008290300370300200520052903e80137038802200541f8026a200641d0006a108e02200528028003211120052802fc02212b20052802f802212e201e2010290300370300201d200d290300370300201c200a29030037030020052005290388023703b8032017100c2208290000212d2018200841086a2900003703002005202d3703a802200810234191d0c000ad4280808080800284100c2208290000212d201a200841086a2900003703002005202d3703b80220081023200520123602a80320052021100d22082900003703e00320081023200541003a0088032005202336028403200520033602fc022005200541a8036a360280032005200541e0036a3602f802200541f0036a200541f8026a106502400240024020052802f803220441206a220a417f4c0d0020052802f003210602400240200a450d00200a1021220d450d09200a410f4d0d01200a21100c040b4110211041101021220d0d030c070b200a41017422084110200841104b1b221041004e0d010c050b1032000b0240200a2010470d00200a21100c010b200d200a20101025220d450d040b200d20052903a802370000200d41086a20182903003700000240024020104170714110460d00201021080c010b201041017422084120200841204b1b22084100480d0320102008460d00200d201020081025220d450d040b200d20052903b802370010200d41186a201a29030037000002400240200841606a2004490d002008210e0c010b2004415f4b0d0320084101742210200a2010200a4b1b220e4100480d032008200e460d00200d2008200e1025220d450d040b200b20097c2209200b542108200d41206a2006200410a1051a024020052802f403450d00200610230b202520197c210b2008ad2119200541f8026a200d200a10e8010240024020052802f80222100d0041002106200541003602c002200542083703b80241082110410021040c010b200520052902fc0222253702bc02200520103602b8022025422088a721042025a721060b200b20197c210b2015201e2903003703002016201d290300370300200f201c290300370300200520052903b8033703f802024020042006470d00200541b8026a2004410110a90120052802bc02210620052802b802211020052802c00221040b2010200441d8006c222a6a2208200937031020082026370308200820273703002008202e36022c2008200c360220200841186a200b370300200841346a2011360200200841306a202b360200200841246a2029370200200841386a20052903f802370200200841c0006a200f290300370200200841c8006a2016290300370200200841d0006a20152903003702002005200441016a22083602c0020240024020100d00200aad422086200dad8410110c010b200541f8026a2010200810f501200aad422086200dad8420053502800342208620052802f802220aad84100e024020052802fc02450d00200a10230b02402008450d00201041306a2108202a41d8006a210a03400240200841746a280200220c450d00200c41306c450d00200841706a28020010230b0240200828020041ffffff3f71450d002008417c6a28020010230b200841d8006a2108200a41a87f6a220a0d000b0b02402006450d00200641d8006c450d00201010230b200e450d010b200d10230b200141e0006a21012024201f490d000b410021100c040b102c000b102a000b1033000b41002110200b42ffffffff0183500d00200d10230b20054180046a240020100bb40201067f230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841010108b0102400240200228020822030d00410221010c010b200228020c210402400240200241106a2802002205450d0020032d0000220641014b0d0041002101024020060e020200020b2005417f6a4104490d0020032800012107410121010c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024180c5c6003602382002200241286a360248200241346a4184a5c200200241386a10311a2002350220422086200235021884100a0240200228021c450d00200228021810230b410221010b2004450d00200310230b2000200736020420002001360200200241d0006a24000bbe0201017f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a10cf010240024020032802480d0020034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110230b200341e0006a24000b8f0301067f230041106b220224002002410036020820024201370300200028020021030240410410212204450d002004200336000020024284808080c000370204200220043602002000280204210320044104410810252204450d0020042003360004200242888080808001370204200220043602002000280208210320044108411010252204450d002004200336000820024290808080c00137020420022004360200200028020c2105200041146a28020022002002106102400240024020022802042206200228020822046b20004102742203490d0020022802002100200621070c010b200420036a22002004490d01200641017422072000200720004b1b22074100480d010240024020060d00024020070d00410121000c020b2007102122000d010c040b2002280200210020062007460d0020002006200710252200450d030b20022007360204200220003602000b200020046a2005200310a1051a2001290200200420036aad4220862000ad84100e02402007450d00200010230b200241106a24000f0b102c000b102a000bbd0101057f2001280208210302402001410c6a280200220420024b0d002000410036020820002004ad4220862003ad843702000f0b024002402001411c6a2802002205450d00200141146a2802002101200541027421062003417f6a2103034002402004200128020022076b220520024b0d00200420024b0d030b200141046a21012003417f6a2103200521042006417c6a22060d000b0b200041023602080f0b2000200736020c2000410136020820002005ad4220862003ad843702000bee0f07047f017e047f017e047f017e017f23004190016b22012400200141e8006a41186a4200370300200141e8006a41106a22024200370300200141e8006a41086a220342003703002001420037036841db97c700ad4280808080f00084100c220429000021052003200441086a290000370300200120053703682004102341bbacc300ad4280808080a00184100c22042900002105200141c8006a41086a2206200441086a2900003703002001200537034820041023200220012903482205370300200141286a41086a2003290300370300200141286a41106a2005370300200141286a41186a200629030037030020012001290368370328200141e8006a200141286a412010890220012802682203410120031b210741022108024002400240200129026c420020031b2205422088a72203450d002003410574210241002104200721030240034020002003460d01200420032000412010a30522064100476a21042006450d01200341206a2103200241606a22020d000c020b0b200141e8006a41186a4200370300200141e8006a41106a22094200370300200141e8006a41086a220042003703002001420037036841db97c700ad4280808080f00084100c2202290000210a200141c8006a41086a2203200241086a2900003703002001200a37034820021023200020032903003703002001200129034837036841c0bdc300ad4280808080a00284100c2202290000210a2003200241086a2900003703002001200a3703482002102320092001290348220a370300200141286a41086a2000290300370300200141286a41106a200a370300200141286a41186a200329030037030020012001290368370328200141186a200141286a10ed030240024002402001280218220b0d004100210c20014100360210200142043703084104210b4100210d410021030c010b200129021c210a2001200b3602082001200a37020c200aa7210d4100210302400240200a422088a7220c41014b0d00200c0e020201020b200c2100034020032000410176220220036a22062004200b20064102746a280200491b2103200020026b220041014b0d000b0b4100210802402004200b20034102746a2802002200470d00410021060c020b2003200420004b6a21030b200141e8006a41186a22084200370300200141e8006a41106a220e4200370300200141e8006a41086a220242003703002001420037036841db97c700ad4280808080f00084100c2206290000210a200141c8006a41086a2200200641086a2900003703002001200a37034820061023200220002903003703002001200129034837036841bbacc300ad4280808080a00184100c2206290000210a2000200641086a2900003703002001200a3703482006102320092001290348370000200941086a2000290300370000200141286a41086a2002290300370300200141286a41106a200e290300370300200141286a41186a200829030037030020012001290368370328200141186a200141286aad42808080808004841010108b01024002400240024020012802182202450d00200128021c21062001200141186a41086a28020036026c200120023602682001200141e8006a1088012001280200450d01410021000c020b2001420037024c20014101360248200141e8006a200141c8006a108e02200128027041057421000240200128026c41ffffff3f71450d00200128026810230b200041057521000c020b200128020421000b2006450d00200210230b20002000418094ebdc036e22024180ec94a37c6c6aad4280fd87d1007e220f428094ebdc0380210a200c2003490d0220024180fd87d1006c200f200a4280ec94a37c7e7c4280cab5ee015672200aa76a21020240200c200d470d00200141086a200d41011079200128020c210d2001280208210b0b200b20034102746a220041046a2000200c20036b41027410a2051a20002004360200410121062001200c41016a220c360210200c20024b21080b200141e8006a41186a220e4200370300200141e8006a41106a22104200370300200141e8006a41086a220042003703002001420037036841db97c700ad4280808080f00084100c2202290000210a200141c8006a41086a2203200241086a2900003703002001200a37034820021023200020032903003703002001200129034837036841c0bdc300ad4280808080a00284100c2202290000210a2003200241086a2900003703002001200a3703482002102320092001290348370000200941086a2003290300370000200141286a41086a2000290300370300200141286a41106a2010290300370300200141286a41186a200e2903003703002001200129036837032802400240200b0d00200141286aad428080808080048410110c010b2001412036026c2001200141286a360268200b200c200141e8006a10f603200d41ffffffff0371450d00200b10230b2006450d00200141f0006a2004ad37030020014102360268200141e8006a10f7032001410036027020014201370368410110212203450d02200341023a000020012003360268200142818080801037026c20034101410510252203450d02200120033602682003200128027022006a2004360000200141336a200041046a3600002001410536026c2001200129036837002b200141f4006a2001412f6a290000370000200141c28289aa04360069200141023a00682001200129002837006d200141e8006a10f8030b0240200542ffffff3f83500d00200710230b20014190016a240020080f0b2003200c1038000b102a000b9a0d04047f017e027f067e230041d0026b22052400200541c8016a20012002108b0202400240024002400240024020052802d0014102460d0020052802c8012106200541c8016a41086a2001280204220741086a290000370300200541c8016a41106a200741106a290000370300200541c8016a41186a200741186a290000370300200520063602e801200520072900003703c801200541f0016a200541c8016a10c40120052802f0012108200520052802f801220736028402200520083602800220054188026a2007ad4220862008ad841010108b010240024020052802880222070d00420021090c010b200528028c02210a02400240024020054188026a41086a280200220b4110490d00200b4170714110470d010b200541003602a00220054201370398022005410a3602ac02200520054180026a3602a802200520054198026a3602b402200541cc026a4101360200200542013702bc0220054180c5c6003602b8022005200541a8026a3602c802200541b4026a4184a5c200200541b8026a10311a20053502a00242208620053502980284100a0240200528029c02450d0020052802980210230b420021090c010b200741186a290000210c200741086a290000210d2007290010210e2007290000210f420121090b200a450d00200710230b200d4200200942005222071b210d200f420020071b210f024020052802f401450d00200810230b200c420020071b210c200e420020071b210e200f200354200d200454200d2004511b0d01200f200385200d2004858450450d03200541b8016a20032004428094ebdc03420010a705200541a8016a20052903b801220d200541b8016a41086a290300220f4280ec94a37c427f10a60520054198016a200d200f20013502282209420010a60520054188016a4200200529039801220f200920052903a80120037c7e220d428094ebdc03802209a7417f200d428080808080c0b2cd3b541b200d20094280ec94a37c7e7c4280cab5ee01566aad7c220d200e7d22092009200d5620054198016a41086a290300200d200f54ad7c220f200c7d200d200e54ad7d220d200f56200d200f511b22021b220f4200200d20021b428094ebdc03420010a705200541f8006a200529038801220d20054188016a41086a29030022094280ec94a37c427f10a605200541e8006a200d20094280cab5ee01420010a605200541e8006a41086a29030020052903682209200f20052903787c220d420188220fa7417f200d4280cab5ee017e220d428080808080c0b2cd3b541b200d200f4280ec94a37c7e7c4280cab5ee01566aad7c220d200954ad7c210f410021020c020b410021010c040b200541c8006a20032004428094ebdc03420010a705200541d8006a20032004428094ebdc03420010a805200541386a2005290348200541c8006a41086a29030020013502282209420010a605200541286a420020052903382210200920052903587e2209428094ebdc03802211a7417f2009428080808080c0b2cd3b541b200920114280ec94a37c7e7c4280cab5ee01566aad7c2209200e7d22112011200956200541386a41086a2903002009201054ad7c2210200c7d2009200e54ad7d220920105620092010511b22071b22104200200920071b428094ebdc03420010a705200541186a20052903282209200541286a41086a29030022114280ec94a37c427f10a605200541086a200920114280cab5ee01420010a605200128022422072003200f7d220920072903007c2211370300200741086a22072004200d7d2003200f54ad7d20072903007c2011200954ad7c370300200141106a2207200728020022072002200720024b1b360200200541086a41086a2903002005290308220f201020052903187c220d4201882209a7417f200d4280cab5ee017e220d428080808080c0b2cd3b541b200d20094280ec94a37c7e7c4280cab5ee01566aad7c220d200f54ad7c210f410121020b02400240200d200f84500d002001280220220220022903002209200d7c2210370300200241086a22022002290300200f7c2010200954ad7c370300200c200f7c200e200d7c220d200e54ad7c210c200d210e0c010b2002450d010b200141013a002c200541b8026a200541c8016a10c40120053502c002210d20052802b8022102411010212201450d01200120033700002001200437000820014110412010252201450d012001200e370010200141186a200c370000200d4220862002ad842001ad4280808080800484100e2001102320052802bc02450d00200210230b410121010c010b102a000b2000200636020420002001360200200541d0026a24000ba10201087f230041106b22022400024002402001280208220341ffffff3f712003470d0020034105742204417f4c0d00200128020021050240024020040d00410121060c010b200410212206450d020b41002101200241003602082002200636020020022004410576360204200241002003109a012002280208210702402003450d0020034105742108200228020020074105746a21090340200920016a2204200520016a2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a2900003700002008200141206a2201470d000b200341057441606a41057620076a41016a21070b20002002290300370200200041086a2007360200200241106a24000f0b1032000b1033000be70403057f017e037f23004180016b22022400200241206a41186a22034200370300200241206a41106a22044200370300200241206a41086a2205420037030020024200370320418fcdc200ad4280808080f00084100c220629000021072005200641086a290000370300200220073703202006102341b8dbc100ad4280808080900184100c22062900002107200241086a2208200641086a2900003703002002200737030020061023200420022903002207370300200241e0006a41086a22062005290300370300200241e0006a41106a22092007370300200241e0006a41186a220a200829030037030020022002290320370360200241206a200241e0006a10ba010240024020022903204202520d00200041003602200c010b200241d0006a2004280200200110da01200241206a200228025022082002280258109002200a2003290300370300200920042903003703002006200529030037030020022002290320370360200241cc006a280200210402400240200228024022050d0042002107200241186a4200370300200241106a420037030041082105200241086a4200370300200242003703000c010b200241086a200241e0006a41086a290300370300200241106a200241e0006a41106a290300370300200241186a200241e0006a41186a29030037030020022002290360370300200229024421070b02402002280254450d00200810230b2000200229030037030020002007370224200020053602202000412c6a2004360200200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a2903003703000b20024180016a24000b860301017f230041f0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822010d00200041003602200c010b200328020c21022003200341086a41086a28020036024c20032001360248200341186a200341c8006a10d0010240024020032802380d0020034100360258200342013703502003410a360264200320033602602003200341d0006a36026c2003412c6a41013602002003420137021c20034180c5c6003602182003200341e0006a360228200341ec006a4184a5c200200341186a10311a2003350258422086200335025084100a02402003280254450d00200328025010230b200041003602200c010b20002003290318370300200041286a200341186a41286a290300370300200041206a200341186a41206a290300370300200041186a200341186a41186a290300370300200041106a200341186a41106a290300370300200041086a200341186a41086a2903003703000b2002450d00200110230b200341f0006a24000bc00908057f047e027f027e067f017e037f017e230041e0016b22032400200241386a2802002104200241346a2802002105200241306a2802002106200341c0006a41186a200241186a290000370300200341c0006a41106a200241106a290000370300200341c0006a41086a200241086a290000370300200320022900003703404100210720034100360268200342083703600240024020040d0042002108420021094200210a4200210b0c010b200441306c210c200341b0016a41106a21044108210d42002108420021094200210a4200210b200621020340200241286a290300210e200241206a290300210f200341f0006a41186a2210200241186a290300370300200341f0006a41106a2211200241106a290300370300200341f0006a41086a2212200241086a29030037030020032002290300370370200341b0016a41186a2213420037030020044200370300200341b0016a41086a22144200370300200342003703b00141bdadc500ad4280808080800184100c221529000021162014201541086a290000370300200320163703b0012015102341c5adc500ad4280808080d00184100c22152900002116200341d0016a41086a2217201541086a290000370300200320163703d00120151023200420032903d001370000200441086a201729030037000020034190016a41086a2215201429030037030020034190016a41106a2217200429030037030020034190016a41186a22182013290300370300200320032903b00137039001200341286a20034190016a412010d701200341186a2003290330200341286a41106a290300427f420010a705200341086a20032903184200200328022822191b221642012016420156200341186a41086a290300420020191b22164200522016501b22191b2016420020191b200f200e10a6052018201029030037030020172011290300370300201520122903003703002003200329037037039001200341086a41086a29030021162003290308210e0240024020034190016a200341c0006a412010a305450d0020132018290300370300200420172903003703002014201529030037030020032003290390013703b001024020072003280264470d00200341e0006a2007410110a4012003280260210d200328026821070b200d200741306c6a221520163703082015200e370300201520032903b001370310201541186a2014290300370300201541206a2004290300370300201541286a20132903003703002003200741016a22073602680c010b427f200920167c2008200e7c221a2008542214ad7c220f2014200f200954200f2009511b22141b2109427f201a20141b21080b200241306a2102427f200b20167c200a200e7c2216200a542214ad7c220a2014200a200b54200a200b511b22141b210b427f201620141b210a200c41506a220c0d000b0b02402005450d00200541306c450d00200610230b2000200a37032020002003290340370000200041386a2009370300200041306a2008370300200041286a200b370300200041c0006a2003290360370200200041186a200341c0006a41186a290300370000200041106a200341c0006a41106a290300370000200041086a200341c0006a41086a290300370000200041c8006a200341e0006a41086a280200360200200341e0016a24000bfd1002057f047e230041d0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a220341174b0d0020030e180102030405060708090a0b0c0d0e0f101112131415161718010b41f58ac7004128418c94c700102d000b200041013a000020002001290001370001200041306a200141306a290300370300200041286a200141286a290300370300200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a2d00003a00000c170b200041023a0000200041106a200141106a290300370300200041086a200141086a2903003703000c160b200041033a0000200041106a200141106a290300370300200041086a200141086a2903003703000c150b200041043a00000c140b200041053a0000200041046a200141046a2802003602000c130b200241106a200141046a108e02200041063a00002000410c6a200241186a280200360200200041046a20022903103702000c120b200041073a00000c110b200041083a0000200020012d00013a00010c100b200041093a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c0f0b2000410a3a0000200041046a200141046a2802003602000c0e0b2000410b3a00000c0d0b2000410c3a00000c0c0b200241106a200141046a108e022000410d3a00002000410c6a200241186a280200360200200041046a20022903103702000c0b0b2000410e3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c0a0b2000410f3a00000c090b200141106a280200220341ffffffff03712003470d0920034102742204417f4c0d09200141046a2802002105200141086a28020021064104210102402004450d00200410212201450d0b0b200241003602182002200136021020022004410276360214200241106a4100200310792002280210200228021822014102746a2006200341027410a1051a200241086a200120036a2201360200200220022903102207370300200041046a2005360200200041086a2007370200200041106a2001360200200041103a00000c080b200141106a2802002203ad42247e2207422088a70d082007a72204417f4c0d08200141046a2802002106200141086a28020021010240024020040d00410421050c010b200410212205450d0a0b20024100360218200220053602102002200441246e360214200241106a4100200310a2012002280218210402402003450d00200341246c21052002280210200441246c6a21030340200141086a2902002107200141106a2902002108200141186a29020021092001290200210a200341206a200141206a280200360200200341186a2009370200200341106a2008370200200341086a20073702002003200a370200200341246a2103200441016a2104200141246a21012005415c6a22050d000b0b200241086a2004360200200220022903102207370300200041046a2006360200200041086a2007370200200041106a2004360200200041113a00000c070b200041123a0000200041046a200141046a2802003602000c060b200041133a000020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041246a200141246a2802003602000c050b200041143a0000200041106a200141106a290300370300200041086a200141086a2903003703000c040b200041153a0000200041046a200141046a2802003602000c030b200041163a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c020b2001410c6a280200220320036a22042003490d022004417f4c0d02200141046a28020021050240024020040d00410221060c010b200410212206450d040b200241003602182002200636021020022004410176360214200241106a41002003109c012002280210200228021822044101746a2005200341017410a1051a200241086a2205200420036a36020020022002290310370300200241106a200141106a109302200041046a20022903003702002000410c6a200528020036020020012802d0012103200041106a200241106a41c00110a1051a200041d0016a2003360200200041173a000020004180026a200141d8016a220141286a290300370300200041f8016a200141206a290300370300200041f0016a200141186a290300370300200041e8016a200141106a290300370300200041e0016a200141086a290300370300200041d8016a20012903003703000c010b2001410c6a280200220320036a22042003490d012004417f4c0d01200141046a28020021050240024020040d00410221060c010b200410212206450d030b200241003602182002200636021020022004410176360214200241106a41002003109c012002280210200228021822044101746a2005200341017410a1051a200241086a2205200420036a36020020022002290310370300200241106a200141106a109302200041046a20022903003702002000410c6a200528020036020020012802d0012103200041106a200241106a41c00110a1051a200041d0016a2003360200200041183a000020004180026a200141d8016a220141286a290300370300200041f8016a200141206a290300370300200041f0016a200141186a290300370300200041e8016a200141106a290300370300200041e0016a200141086a290300370300200041d8016a20012903003703000b200241d0016a24000f0b1032000b1033000bc11702057f017e23004180026b22022400024002402001280208220341ffffffff01712003470d0020034103742204417f4c0d00200128020021050240024020040d00410421060c010b200410212206450d020b200241003602f801200220063602f001200220044103763602f401200241f0016a4100200310a50120022802f00120022802f80122044103746a2005200341037410a1051a200041086a200420036a360200200020022903f001370200200141146a2802002204ad420c7e2207422088a70d002007a72203417f4c0d00200128020c21064104210502402003450d00200310212205450d020b200241003602f801200220053602f00120022003410c6e3602f401200241f0016a4100200410950120022802f00120022802f8012205410c6c6a2006200310a1051a200241086a200520046a360200200220022903f001370300200141206a280200220341ffffffff00712003470d0020034104742204417f4c0d00200128021821064104210502402004450d00200410212205450d020b200241003602f801200220053602f001200220044104763602f401200241f0016a4100200310a00120022802f00120022802f80122044104746a2006200341047410a1051a200241186a200420036a360200200220022903f0013703102001412c6a2802002204ad42147e2207422088a70d002007a72203417f4c0d00200128022421050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341146e3602f401200241f0016a41002004109e0120022802f00120022802f801220641146c6a2005200310a1051a200241286a200620046a360200200220022903f001370320200141386a2802002204ad42187e2207422088a70d002007a72203417f4c0d00200128023021050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341186e3602f401200241f0016a4100200410b00120022802f00120022802f801220641186c6a2005200310a1051a200241386a200620046a360200200220022903f001370330200141c4006a2802002204ad421c7e2207422088a70d002007a72203417f4c0d00200128023c21050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f00120022003411c6e3602f401200241f0016a4100200410a30120022802f00120022802f8012206411c6c6a2005200310a1051a200241c8006a200620046a360200200220022903f001370340200141d0006a280200220341ffffff3f712003470d0020034105742204417f4c0d00200128024821050240024020040d00410421060c010b200410212206450d020b200241003602f801200220063602f001200220044105763602f401200241f0016a4100200310a80120022802f00120022802f80122044105746a2005200341057410a1051a200241d8006a200420036a360200200220022903f001370350200141dc006a2802002204ad42247e2207422088a70d002007a72203417f4c0d00200128025421050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341246e3602f401200241f0016a4100200410a20120022802f00120022802f801220641246c6a2005200310a1051a200241e8006a200620046a360200200220022903f001370360200141e8006a2802002204ad42287e2207422088a70d002007a72203417f4c0d00200128026021050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341286e3602f401200241f0016a4100200410aa0120022802f00120022802f801220641286c6a2005200310a1051a200241f8006a200620046a360200200220022903f001370370200141f4006a2802002204ad422c7e2207422088a70d002007a72203417f4c0d00200128026c21050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f00120022003412c6e3602f401200241f0016a4100200410a60120022802f00120022802f8012206412c6c6a2005200310a1051a20024188016a200620046a360200200220022903f0013703800120014180016a2802002204ad42307e2207422088a70d002007a72203417f4c0d00200128027821050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341306e3602f401200241f0016a4100200410b60120022802f00120022802f801220641306c6a2005200310a1051a20024198016a200620046a360200200220022903f001370390012001418c016a2802002204ad42347e2207422088a70d002007a72203417f4c0d0020012802840121050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341346e3602f401200241f0016a4100200410a70120022802f00120022802f801220641346c6a2005200310a1051a200241a8016a200620046a360200200220022903f0013703a00120014198016a2802002204ad42387e2207422088a70d002007a72203417f4c0d0020012802900121050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f0012002200341386e3602f401200241f0016a4100200410ae0120022802f00120022802f801220641386c6a2005200310a1051a200241b8016a200620046a360200200220022903f0013703b001200141a4016a2802002204ad423c7e2207422088a70d002007a72203417f4c0d00200128029c0121050240024020030d00410421060c010b200310212206450d020b200241003602f801200220063602f00120022003413c6e3602f401200241f0016a4100200410b70120022802f00120022802f8012206413c6c6a2005200310a1051a200241c8016a200620046a360200200220022903f0013703c001200141b0016a280200220341ffffff1f712003470d0020034106742204417f4c0d0020012802a80121050240024020040d00410421060c010b200410212206450d020b200241003602f801200220063602f001200220044106763602f401200241f0016a4100200310b30120022802f00120022802f80122044106746a2005200341067410a1051a200241d8016a200420036a360200200220022903f0013703d001200141bc016a2802002204ad42c4007e2207422088a70d002007a72203417f4c0d0020012802b40121010240024020030d00410421050c010b200310212205450d020b200241003602f801200220053602f0012002200341c4006e3602f401200241f0016a41002004109b0120022802f00120022802f801220541c4006c6a2001200310a1051a200241e0016a41086a2201200520046a360200200220022903f0013703e001200041146a200241086a2802003602002000200229030037020c20002002290310370218200041206a200241106a41086a280200360200200020022903203702242000412c6a200241206a41086a28020036020020002002290330370230200041386a200241306a41086a280200360200200041c4006a200241c0006a41086a2802003602002000200229034037023c200041d0006a200241d0006a41086a28020036020020002002290350370248200041dc006a200241e0006a41086a28020036020020002002290360370254200041e8006a200241f0006a41086a28020036020020002002290370370260200041f4006a20024180016a41086a280200360200200020022903800137026c20004180016a20024190016a41086a28020036020020002002290390013702782000418c016a200241a0016a41086a280200360200200020022903a0013702840120004198016a200241b0016a41086a280200360200200020022903b00137029001200041a4016a200241c0016a41086a280200360200200020022903c00137029c01200041b0016a200241d0016a41086a280200360200200020022903d0013702a801200041bc016a2001280200360200200020022903e0013702b40120024180026a24000f0b1032000b1033000b92cb0206027f037e237f067e027f037e230041900b6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e19000102030405060708090a0b0c0d0e0f101112131415161718000b200341e4096a4101360200200342013702d409200341a4c5c6003602d009200341043602c406200341cccec6003602c0062003200341c0066a3602e009200341d0096a419ca8c700103a000b410221040240024020022d00000d0020022d00014101470d00200141306a2903002105200141286a2903002106200141196a2900002107200141186a2d00002108200141176a2d00002109200141156a2f0000210a200141146a2d0000210b200141136a2d0000210c200141116a2f0000210d200141106a2d0000210e2001410f6a2d0000210f2001410d6a2f000021102001410c6a2d000021112001410b6a2d00002112200141096a2f00002113200141086a2d00002114200141076a2d00002115200141056a2f00002116200141046a2d00002117200141036a2d00002118200141216a2d0000211920012f0001211a200241196a2d00002101200241186a2d00002104200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021202002410e6a2f010021212002410d6a2d000021222002410c6a2d000021232002410a6a2f01002124200241096a2d00002125200241086a2d00002126200241066a2f01002127200241056a2d00002128200241046a2d00002129200241026a2f0100212a20032002411a6a2901003703b809200320013a00b709200320043a00b6092003201b3b01b4092003201c3a00b3092003201d3a00b2092003201e3b01b0092003201f3a00af09200320203a00ae09200320213b01ac09200320223a00ab09200320233a00aa09200320243b01a809200320253a00a709200320263a00a609200320273b01a409200320283a00a309200320293a00a2092003202a3b01a009200341d0096a200341a0096a10c701200341206a20032802d009220220032802d809419ca8c70041004100108c0120032802202101024020032802d409450d00200210230b024020014101470d0041b7c1c0002101410d21024103210441808008211b0c020b200320073703d806200320083a00d706200320093a00d6062003200a3b01d4062003200b3a00d3062003200c3a00d2062003200d3b01d0062003200e3a00cf062003200f3a00ce06200320103b01cc06200320113a00cb06200320123a00ca06200320133b01c806200320143a00c706200320153a00c606200320163b01c406200320173a00c306200320183a00c2062003201a3b01c006200341d0096a200341c0066a10c601200341186a20032802d009220220032802d809419ca8c70041004100108c0120032802182101024020032802d409450d00200210230b024020014101470d00410d210241aac1c00021014180800c211b410321040c020b024020064280c8afa0255441002005501b450d004111210241eec0c00021014180801c211b410321040c020b200341d0096a200341a0096a10c70120033502d809210720032802d0092102412010212201450d19200120032903c006370000200141186a200341c0066a41186a290300370000200141106a200341c0066a41106a290300370000200141086a200341c0066a41086a29030037000020074220862002ad842001ad4280808080800484100e20011023024020032802d409450d00200210230b200341d0096a200341a0096a10950220033502d809210720032802d009210202400240201941037122014103470d00410121014200212b410121040c010b024002400240024020010e03000102000b410021040c020b410121040c010b410221040b200320043a008008410110212201450d45200120043a000041002104428080808010212b0b20074220862002ad84202b2001ad84100e024020040d00200110230b024020032802d409450d00200210230b200341a0096a109602418fcdc200ad4280808080f000842207100c220128000021022001290004212b200128000c210420011023418cdbc100ad4280808080a00184100c2201290000212c2001290008212d200110232003202d3701e8092003202c3701e009200320043601dc092003202b3701d409200320023601d009200341106a200341d0096a412010cd0120032802142102200328021021042007100c2201280000211b20012900042107200128000c211c200110234190d8c100ad4280808080c00184100c2201290000212b2001290008212c200110232003202c3701e8092003202b3701e0092003201c3601dc09200320073701d4092003201b3601d009200341086a200341d0096a412010cd01200328020c21012003280208211b20034180086a200341a0096a109702200341d0096a200328028008221c20032802880810980241002002410020041b2204200141d400201b1b6b2201200120044b1b2101200341d0096a41106a290300420020032903d00942015122021b210720032903d809420020021b212b0240200328028408450d00201c10230b200341d0096a41086a41043a0000200341d9096a20032903a009370000200341e1096a200341a0096a41086a2202290300370000200341e9096a200341a0096a41106a221b290300370000200341f1096a200341a0096a41186a221c290300370000200341880a6a221d20072005202b200654200720055420072005511b221e1b2205370300200341800a6a202b2006201e1b2206370300200341033a00d009200341d0096a10e00120022f0100211e201b2f0100211f201c290300210720032f01a009212020032d00a209212120032d00a309212220032f01a409212320032d00a609212420032d00a709212520032d00aa09212620032d00ab09212720032f01ac09212820032d00ae09212920032d00af09212a20032d00b209210820032d00b309210920032f01b409210a20032d00b609210b20032d00b709210c2003410036028808200342043703800820034180086a41004100200420016b221c201c20044b1b1079200328028808211b0240200420014d0d00200328028008201b4102746a2102034020022001360200200241046a21022004200141016a2201470d000b201c201b6a211b0b200341d8086a41086a2201201b360200200341a00a6a20073703002003419f0a6a200c3a00002003419e0a6a200b3a00002003419c0a6a200a3b01002003419b0a6a20093a00002003419a0a6a20083a0000200341980a6a201f3b0100200341970a6a202a3a0000200341960a6a20293a0000200341940a6a20283b0100200341930a6a20273a0000200341920a6a20263a0000200341900a6a201e3b01002003418f0a6a20253a00002003418e0a6a20243a00002003418c0a6a20233b01002003418b0a6a20223a00002003418a0a6a20213a000020032003290380083703d808200320203b01880a200341d0096a41186a2005370300200341f8096a4100360200200341840a6a2001280200360200200320063703e009200320053703d809200320063703d009200342083703f009200320032903d8083702fc09200342f3e885db96cddbb3203703b008200341b0086a201d20062005411f10990220034180086a200341c0066a10c601200328028008210120032003280288083602dc08200320013602d808200341d0096a200341d8086a10ec010240200328028408450d00200110230b024020032802f4092201450d00200141186c450d0020032802f00910230b200341800a6a28020041ffffffff0371450d4920032802fc0910230c490b4100211b0b20004100360204200041146a2002360200200041106a20013602002000410c6a201b4180801c71200472418010723602000c460b410221040240024020022d00000d0020022d00014101470d00200141106a2903002105200141086a2903002107200241196a2d00002104200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002129200241046a2d0000212a200241026a2f0100210120032002411a6a29010037039809200320043a0097092003201b3a0096092003201c3b0194092003201d3a0093092003201e3a0092092003201f3b019009200320203a008f09200320213a008e09200320223b018c09200320233a008b09200320243a008a09200320253b018809200320263a008709200320273a008609200320283b018409200320293a0083092003202a3a008209200320013a008009200320014108763a008109200341c0066a20034180096a10c701200341d0096a20032802c006220220032802c80610e10120032802c40621010240024020032d00d0094101470d00200341e9096a2900002106200341e8096a2d00002104200341e7096a2d0000211b200341e5096a2f0000211c200341e4096a2d0000211d200341e3096a2d0000211e200341e1096a2f0000211f200341e0096a2d00002120200341df096a2d00002121200341dd096a2f00002122200341dc096a2d00002123200341db096a2d00002124200341d9096a2f00002125200341d0096a41086a2d0000212620032d00d709212720032f00d509212820032d00d409212920032d00d309212a20032d00d209210820032d00d109210902402001450d00200210230b200320063703b809200320043a00b7092003201b3a00b6092003201c3b01b4092003201d3a00b3092003201e3a00b2092003201f3b01b009200320203a00af09200320213a00ae09200320223b01ac09200320233a00ab09200320243a00aa09200320253b01a809200320263a00a709200320273a00a609200320283b01a409200320293a00a3092003202a3a00a209200320083a00a109200320093a00a009200341a0066a200341a0096a10c601200341d0096a20032802a006220420032802a80610e20120034180086a41086a221b2003418c0a6a29020037030020034180086a41106a221c200341940a6a29020037030020034180086a41186a221d2003419c0a6a29020037030020034180086a41206a221e200341a40a6a2802003602002003200341840a6a29020037038008024020032802f0092202450d00200341d0096a41186a290300212e200341d0096a41086a290300212d200341800a6a280200211f200341fc096a2802002120200341f8096a280200212120032903e009212f20032903d009210620032802f4092101200341d8086a41206a201e280200360200200341d8086a41186a201d290300370300200341d8086a41106a201c290300370300200341d8086a41086a201b29030037030020032003290380083703d808024020032802a406450d00200410230b200341b0086a41086a2204200341d8086a41086a290300370300200341b0086a41106a221b200341d8086a41106a290300370300200341b0086a41186a221c200341d8086a41186a290300370300200341b0086a41206a221d200341d8086a41206a280200360200200341c0066a41186a202e370300200341f0066a201f360200200341e8066a2021360200200341e4066a2001360200200320032903d8083703b0082003202f3703d006200320063703c006200320203602ec06200320023602e0062003202d3703c80620034194076a201d2802003602002003418c076a201c29030037020020034184076a201b290300370200200341fc066a2004290300370200200341f4066a20032903b00837020020034180086a20034180096a109702200341d0096a200328028008221b200328028808109802200341d0096a41106a290300420020032903d00942015122041b212b20032903d809420020041b212c0240200328028408450d00201b10230b202c20067d2230202c56202b202d7d202c200654ad7d222c202b56202c202b511b0d022003202f200720302030200756202c200556202c2005511b22011b22077c222b3703d006200341c0066a41186a202e2005202c20011b22057c202b202f54ad7c3703002003200720067c22063703c00620032005202d7c2006200754ad7c222b3703c806200341d0096a41386a2005370300200341800a6a2007370300200341d0096a41086a41043a0000200341d9096a200329038009370000200341e1096a20034180096a41086a290300370000200341e9096a20034190096a290300370000200341f1096a20034180096a41186a290300370000200341033a00d009200341d0096a10e001200342f3e885db96cddbb3203703d808200341d8086a200341c0066a41386a2006202b411f109902200341d0096a200341a0096a10c60120032802d0092101200320032802d809360284082003200136028008200341c0066a20034180086a10ec01024020032802d409450d00200110230b024020032802e4062201450d00200141186c450d0020032802e00610230b20032802f00641ffffffff0371450d4b20032802ec0610230c4b0b024020032802a406450d00200410230b41ccc1c0002101410d21024100211b410321040c030b02402001450d00200210230b41c4c1c00021014108210241808004211b410321040c020b02402001450d00200141186c450d00200210230b201f41ffffffff0371450d48202010230c480b4100211b0b20004100360204200041146a2002360200200041106a20013602002000410c6a201b4180800471200472418010723602000c450b410221040240024020022d00000d0020022d00014101470d00200141106a2903002107200141086a290300212b200241196a2d00002101200241186a2d00002104200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021202002410e6a2f010021212002410d6a2d000021222002410c6a2d000021232002410a6a2f01002124200241096a2d00002125200241086a2d00002126200241066a2f01002127200241056a2d00002128200241046a2d00002129200241026a2f0100212a20032002411a6a2901003703b809200320013a00b709200320043a00b6092003201b3b01b4092003201c3a00b3092003201d3a00b2092003201e3b01b0092003201f3a00af09200320203a00ae09200320213b01ac09200320223a00ab09200320233a00aa09200320243b01a809200320253a00a709200320263a00a609200320273b01a409200320283a00a309200320293a00a2092003202a3b01a00920034180096a200341a0096a10c601200341d0096a200328028009221b20032802880910e20120034180086a41086a221c2003418c0a6a29020037030020034180086a41106a221d200341940a6a29020037030020034180086a41186a221e2003419c0a6a29020037030020034180086a41206a221f200341a40a6a2802003602002003200341840a6a2902003703800802400240024020032802f0092204450d00200341d0096a41186a2903002105200341d0096a41086a290300212c200341800a6a2802002120200341fc096a2802002121200341f8096a280200210120032903e009210620032903d009212d20032802f4092102200341d8086a41206a201f280200360200200341d8086a41186a201e290300370300200341d8086a41106a201d290300370300200341d8086a41086a201c29030037030020032003290380083703d8080240200328028409450d00201b10230b200341b0086a41086a221b200341d8086a41086a290300370300200341b0086a41106a221c200341d8086a41106a290300370300200341b0086a41186a221d200341d8086a41186a290300370300200341b0086a41206a221e200341d8086a41206a280200360200200341c0066a41186a2005370300200341f0066a2020360200200341e8066a2001360200200341e4066a2002360200200320032903d8083703b008200320063703d0062003202d3703c006200320213602ec06200320043602e0062003202c3703c80620034194076a201e2802003602002003418c076a201d29030037020020034184076a201c290300370200200341fc066a201b290300370200200341f4066a20032903b0083702002001411f4d0d0202402002450d00200241186c450d00200410230b41e2c0c0002101410c210241808020211b202041ffffffff0371450d0120211023410321040c040b0240200328028409450d00201b10230b41ccc1c0002101410d21024100211b0b410321040c020b200341c0066a41206a210102402006202b2006202b54200520075420052007511b22021b222b2005200720021b2207844200510d00200341c0066a41186a4200200520077d2006202b54ad7d222c2006202b7d222d4280c8afa025544100202c501b22021b37030020034200202d20021b3703d006418fcdc200ad4280808080f00084100c2204280000211b2004290004212c200428000c211c20041023418cdbc100ad4280808080a00184100c2204290000212d2004290008212f200410232003202f3701e8092003202d3701e0092003201c3601dc092003202c3701d4092003201b3601d009200341286a200341d0096a412010cd012005200720021b21052006202b20021b2106200328022c411c6a411c20032802281b2104024020032802e806220220032802e406470d002001200210b20120032802e80621020b20032802e006200241186c6a220220053703082002200637030020022004360210200320032802e80641016a3602e806200342f3e885db96cddbb3203703d808200341d8086a200341c0066a41386a20032903c006200341c0066a41086a290300411f109902200341d0096a200341a0096a10c60120032802d0092102200320032802d809360284082003200236028008200341c0066a20034180086a10ec01024020032802d409450d00200210230b200341d0096a41386a2005370300200341800a6a2006370300200341d0096a41086a41053a0000200341d9096a20032903f806370000200341e1096a20034180076a290300370000200341e9096a20034188076a290300370000200341f1096a20034190076a290300370000200341033a00d009200341d0096a10e0010b0240200141046a2802002202450d00200241186c450d00200128020010230b20032802f00641ffffffff0371450d4720032802ec0610230c470b4100211b0b20004100360204200041146a2002360200200041106a20013602002000410c6a201b4180803c71200472418010723602000c440b410221010240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021202002410e6a2f010021212002410d6a2d000021222002410c6a2d000021232002410a6a2f01002124200241096a2d00002125200241086a2d00002126200241066a2f01002127200241056a2d00002128200241046a2d00002129200241026a2f0100212a20032002411a6a29010037039809200320013a009709200320043a0096092003201b3b0194092003201c3a0093092003201d3a0092092003201e3b0190092003201f3a008f09200320203a008e09200320213b018c09200320223a008b09200320233a008a09200320243b018809200320253a008709200320263a008609200320273b018409200320283a008309200320293a0082092003202a3b018009200341a0096a20034180096a10c601200341d0096a20032802a009220120032802a80910e20120034180086a41086a22022003418c0a6a29020037030020034180086a41106a2204200341940a6a29020037030020034180086a41186a221b2003419c0a6a29020037030020034180086a41206a221c200341a40a6a2802003602002003200341840a6a2902003703800802400240024020032802f009221d450d00200341d0096a41186a2903002105200341d0096a41086a290300212c200341800a6a280200211e200341fc096a280200211f200341f8096a280200212020032903e009210620032903d009212d20032802f4092121200341d8086a41206a201c280200360200200341d8086a41186a201b290300370300200341d8086a41106a2004290300370300200341d8086a41086a200229030037030020032003290380083703d808024020032802a409450d00200110230b200341b0086a41086a2201200341d8086a41086a290300370300200341b0086a41106a2202200341d8086a41106a290300370300200341b0086a41186a2204200341d8086a41186a290300370300200341b0086a41206a221b200341d8086a41206a280200360200200341c0066a41186a221c2005370300200341f0066a201e360200200341e8066a2020360200200341e4066a2021360200200320032903d8083703b008200320063703d0062003202d3703c0062003201f3602ec062003201d3602e0062003202c3703c80620034194076a201b2802003602002003418c076a221e200429030037020020034184076a221f2002290300370200200341fc066a22202001290300370200200341f4066a20032903b008370200200341a0096a41186a20034190076a2221290300370300200341a0096a41106a20034188076a2222290300370300200341a0096a41086a20034180076a2223290300370300200320032903f8063703a009418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c210420011023418cdbc100ad4280808080a00184100c220129000021062001290008210720011023200320073701e809200320063701e009200320043601dc09200320053701d409200320023601d009200341306a200341d0096a412010cd0120032802304101460d01201c290300212f20032903d006212e20032802e80621040c020b024020032802a409450d00200110230b41ccc1c0002102410d2104410321014108211b4100211c0c030b2003280234211b20034180086a41086a200341ec066a221d41086a2802003602002003201d2902003703800820032802e0062124201c290300212f200341fa066a2d00002125200341fb066a2d0000212620202f01002127200341fe066a2d00002128200341ff066a2d0000212920232f0100212320034182076a2d0000212a20034183076a2d00002108201f2f0100210920034186076a2d0000210a20034187076a2d0000210b20222f010021222003418a076a2d0000210c2003418b076a2d0000210d201e2f0100210e2003418e076a2d0000210f2003418f076a2d000021102021290300213020032903d006212e20032f01f806212120032802e406211f202d2105202c210602400240024020032802e8062220450d002024202041186c6a211c202041186c41686a2102202d2105202c2106202421010340200141086a290300212b20012903002107201b200141106a2802002204490d0242002006202b7d2005200754ad7d222b200520077d2207200556202b200656202b2006511b22041b21064200200720041b2105200241686a2102200141186a2201201c470d000b0b410021014108211e0240201f450d00201f41186c450d00202410230b410021040c010b41181021221e450d18201e2007370300201e2004360210201e202b37030820034281808080103702d4092003201e3602d0090240024020020d00410121040c010b200141186a2111202041186c20246a41686a21124101210403402011210102400340200141086a290300212b20012903002107201b200141106a2802002202490d0142002006202b7d2005200754ad7d222b200520077d2207200556202b200656202b2006511b22021b21064200200720021b2105200141186a2201201c470d000c030b0b0240200420032802d409470d00200341d0096a200410b20120032802d009211e0b200141186a2111201e200441186c6a222020023602102020202b370308202020073703002003200441016a22043602d80920122001470d000b0b0240201f450d00201f41186c450d00202410230b20032802d40921010b201d200329038008370200200341d8066a202f370300201d41086a20034180086a41086a2802003602002003202e3703d006200320053703c006200320043602e806200320013602e4062003201e3602e0062003203037039007200320103a008f072003200f3a008e072003200e3b018c072003200d3a008b072003200c3a008a07200320223b0188072003200b3a0087072003200a3a008607200320093b018407200320083a0083072003202a3a008207200320233b018007200320293a00ff06200320283a00fe06200320273b01fc06200320263a00fb06200320253a00fa06200320213b01f806200320063703c8060b024002400240024020040d00202e202f84500d010b200342f3e885db96cddbb3203703d808200341d8086a200341f8066a20032903c006200341c8066a290300411f109902200341d0096a20034180096a10c60120032802d0092101200320032802d809360284082003200136028008200341c0066a20034180086a10ec0120032802d409450d01200110230c010b200341d0096a200341a0096a109a0220032d00d00922014104470d01200342f3e885db96cddbb3203703a006200341a0066a200341a0096a109b020b0240202d20032903c006220658202c200341c0066a41086a290300220558202c2005511b0d00200341800a6a202d20067d370300200341d0096a41086a41063a0000200341d9096a20032903a009370000200341e1096a200341a0096a41086a290300370000200341e9096a200341b0096a290300370000200341f1096a200341b8096a290300370000200341880a6a202c20057d202d200654ad7d370300200341033a00d009200341d0096a10e0010b024020032802e4062201450d00200141186c450d0020032802e00610230b20032802f00641ffffffff0371450d4720032802ec0610230c470b200341d0096a41086a280200210420032802d409210220032f00d10920032d00d30941107472221b41ffffff0771211c024020032802e406221d450d00201d41186c450d0020032802e00610230b201c411076211d201c410876211c20032802f00641ffffffff0371450d0120032802ec0610230c010b0b20004100360204200041146a2004360200200041106a20023602002000410c6a201d411074201c41ff017141087472201b41ff0171724108742001723602000c430b0240024020022d00000d0020022d00014101470d00200141046a2802002104200241196a2d0000211b200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241086a2d00002128200241066a2f01002129200241056a2d0000212a200241046a2d00002108200241026a2f0100210120032002411a6a2901003703b8092003201b3a00b7092003201c3a00b6092003201d3b01b4092003201e3a00b3092003201f3a00b209200320203b01b009200320213a00af09200320223a00ae09200320233b01ac09200320243a00ab09200320253a00aa09200320263b01a809200320273a00a709200320283a00a609200320293b01a4092003202a3a00a309200320083a00a209200320013a00a009200320014108763a00a10920034180096a200341a0096a10c601200341d0096a200328028009221d20032802880910e20120034180086a41086a221e2003418c0a6a29020037030020034180086a41106a221f200341940a6a29020037030020034180086a41186a22202003419c0a6a29020037030020034180086a41206a2221200341a40a6a2802003602002003200341840a6a29020037038008024020032802f0092202450d00200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a280200211b200341fc096a280200211c200341f8096a280200212220032903e009210720032903d009212b20032802f4092101200341d8086a41206a2021280200360200200341d8086a41186a2020290300370300200341d8086a41106a201f290300370300200341d8086a41086a201e29030037030020032003290380083703d8080240200328028409450d00201d10230b200341b0086a41086a221d200341d8086a41086a290300370300200341b0086a41106a221e200341d8086a41106a290300370300200341b0086a41186a221f200341d8086a41186a290300370300200341b0086a41206a2220200341d8086a41206a280200360200200341c0066a41186a2005370300200341f0066a201b360200200341e8066a2022360200200341e4066a2001360200200320032903d8083703b008200320073703d0062003202b3703c0062003201c3602ec06200320023602e006200320063703c80620034194076a20202802003602002003418c076a201f29030037020020034184076a201e290300370200200341fc066a201d290300370200200341f4066a20032903b008370200200341d0096a200341f8066a221d10c50120033502d80942208620032802d009221ead841011024020032802d409450d00201e10230b200341d0096a201d10c30120033502d809210520032802d009211d200341003a0085080240024002400240200441c000490d00200441808001490d012004418080808004490d02200341053a008508200341033a00800820032004360081084280808080d00021060c030b200341013a008508200320044102743a00800842808080801021060c020b200341023a008508200320044102744101723b01800842808080802021060c010b200341043a00850820032004410274410272360280084280808080c00021060b2005422086201dad84200620034180086aad84100e024020032d008508450d00200341003a0085080b024020032802d409450d00201d10230b02402001450d00200141186c450d00200210230b201b41ffffffff0371450d46201c10230c460b0240200328028409450d00201d10230b41831021010c010b41821021010b20004100360204200041146a410d360200200041106a41ccc1c0003602002000410c6a20013602000c420b200141086a280200211c200141046a280200211b4102210420022d00000d3e20022d00014101470d3e2001410c6a2802002101200241196a2d00002104200241186a2d0000211d200241166a2f0100211e200241156a2d0000211f200241146a2d00002120200241126a2f01002121200241116a2d00002122200241106a2d000021232002410e6a2f010021242002410d6a2d000021252002410c6a2d000021262002410a6a2f01002127200241096a2d00002128200241086a2d00002129200241066a2f0100212a200241056a2d00002108200241046a2d00002109200241026a2f0100210a20032002411a6a29010037039809200320043a0097092003201d3a0096092003201e3b0194092003201f3a009309200320203a009209200320213b019009200320223a008f09200320233a008e09200320243b018c09200320253a008b09200320263a008a09200320273b018809200320283a008709200320293a0086092003202a3b018409200320083a008309200320093a0082092003200a3b018009200341a0096a20034180096a10c601200341d0096a20032802a009220220032802a80910e20120034180086a41086a22042003418c0a6a29020037030020034180086a41106a221d200341940a6a29020037030020034180086a41186a221e2003419c0a6a29020037030020034180086a41206a221f200341a40a6a2802003602002003200341840a6a290200370380080240024020032802f0092226450d00200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a2802002127200341fc096a2802002128200341f8096a280200212020032903e009210720032903d009212b20032802f4092125200341d8086a41206a201f280200360200200341d8086a41186a201e290300370300200341d8086a41106a201d290300370300200341d8086a41086a200429030037030020032003290380083703d808024020032802a409450d00200210230b200341b0086a41086a2202200341d8086a41086a290300370300200341b0086a41106a2204200341d8086a41106a290300370300200341b0086a41186a221d200341d8086a41186a290300370300200341b0086a41206a221e200341d8086a41206a280200360200200341c0066a41186a2005370300200341f0066a2027360200200341e8066a2020360200200341e4066a2025360200200320032903d8083703b008200320073703d0062003202b3703c006200320283602ec06200320263602e006200320063703c80620034194076a201e2802003602002003418c076a201d29030037020020034184076a2004290300370200200341fc066a2002290300370200200341f4066a20032903b00837020020010d0102402025450d00202541186c450d00202610230b0240202741ffffffff0371450d00202810230b419ec1c000211d410c210241032104410421010c410b024020032802a409450d00200210230b41ccc1c000211d410d210241032104410021010c400b024020014105742202450d00200341d0096a41186a2204201b41186a290000370300200341d0096a41106a221d201b41106a290000370300200341d0096a41086a221e201b41086a2900003703002003201b2900003703d009412010212223450d13202320032903d009370000202341186a2004290300370000202341106a201d290300370000202341086a201e29030037000020034281808080103702840820032023360280080240201b20026a201b41206a2202470d00410121010c3c0b200341a0096a41186a221d200241186a290000370300200341a0096a41106a221e200241106a290000370300200341a0096a41086a221f200241086a290000370300200320022900003703a009200141057421244102210141c0002102410121040340200341d0096a41186a2220201d290300370300200341d0096a41106a2221201e290300370300200341d0096a41086a2222201f290300370300200320032903a0093703d00902402001417f6a2004470d0020034180086a20044101109a0120032802800821230b202320026a41606a220420032903d009370000200441186a2020290300370000200441106a2021290300370000200441086a2022290300370000200320013602880820242002460d3c20014110460d3c201d201b20026a220441186a290000370300201e200441106a290000370300201f200441086a290000370300200320042900003703a009200241206a2102200141016a210120032802840821040c000b0b41002101201c41ffffff3f710d1f0c390b0240024020022d00000d0020022d00014101470d00200241196a2d00002104200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002129200241046a2d0000212a200241026a2f0100210120032002411a6a2901003703b809200320043a00b7092003201b3a00b6092003201c3b01b4092003201d3a00b3092003201e3a00b2092003201f3b01b009200320203a00af09200320213a00ae09200320223b01ac09200320233a00ab09200320243a00aa09200320253b01a809200320263a00a709200320273a00a609200320283b01a409200320293a00a3092003202a3a00a209200320013a00a009200320014108763a00a10920034180096a200341a0096a10c601200341d0096a200328028009221c20032802880910e20120034180086a41086a221d2003418c0a6a29020037030020034180086a41106a221e200341940a6a29020037030020034180086a41186a221f2003419c0a6a29020037030020034180086a41206a2220200341a40a6a2802003602002003200341840a6a29020037038008024020032802f0092202450d00200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a2802002104200341fc096a280200211b200341f8096a280200212120032903e009210720032903d009212b20032802f4092101200341d8086a41206a2020280200360200200341d8086a41186a201f290300370300200341d8086a41106a201e290300370300200341d8086a41086a201d29030037030020032003290380083703d8080240200328028409450d00201c10230b200341b0086a41086a221c200341d8086a41086a290300370300200341b0086a41106a221d200341d8086a41106a290300370300200341b0086a41186a221e200341d8086a41186a290300370300200341b0086a41206a221f200341d8086a41206a280200360200200341c0066a41186a2005370300200341f0066a2004360200200341e8066a2021360200200341e4066a2001360200200320032903d8083703b008200320073703d0062003202b3703c0062003201b3602ec06200320023602e006200320063703c80620034194076a201f2802003602002003418c076a201e29030037020020034184076a201d290300370200200341fc066a201c290300370200200341f4066a20032903b008370200200341d0096a200341f8066a221c10c30120033502d80942208620032802d009221dad841011024020032802d409450d00201d10230b200341d0096a201c10c50120033502d80942208620032802d009221cad841011024020032802d409450d00201c10230b02402001450d00200141186c450d00200210230b200441ffffffff0371450d44201b10230c440b0240200328028409450d00201c10230b41831021010c010b41821021010b20004100360204200041146a410d360200200041106a41ccc1c0003602002000410c6a20013602000c400b0240024020022d00000d0020022d00014101470d0020012d00012108200241196a2d00002104200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002129200241046a2d0000212a200241026a2f0100210120032002411a6a2901003703b809200320043a00b7092003201b3a00b6092003201c3b01b4092003201d3a00b3092003201e3a00b2092003201f3b01b009200320203a00af09200320213a00ae09200320223b01ac09200320233a00ab09200320243a00aa09200320253b01a809200320263a00a709200320273a00a609200320283b01a409200320293a00a3092003202a3a00a209200320013a00a009200320014108763a00a10920034180096a200341a0096a10c601200341d0096a200328028009220220032802880910e20120034180086a41086a221d2003418c0a6a29020037030020034180086a41106a221e200341940a6a29020037030020034180086a41186a221f2003419c0a6a29020037030020034180086a41206a2220200341a40a6a2802003602002003200341840a6a29020037038008024020032802f0092204450d00200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a280200211b200341fc096a280200211c200341f8096a280200212120032903e009210720032903d009212b20032802f4092101200341d8086a41206a2020280200360200200341d8086a41186a201f290300370300200341d8086a41106a201e290300370300200341d8086a41086a201d29030037030020032003290380083703d8080240200328028409450d00200210230b200341b0086a41086a2202200341d8086a41086a290300370300200341b0086a41106a221d200341d8086a41106a290300370300200341b0086a41186a221e200341d8086a41186a290300370300200341b0086a41206a221f200341d8086a41206a280200360200200341c0066a41186a2005370300200341f0066a201b360200200341e8066a2021360200200341e4066a2001360200200320032903d8083703b008200320073703d0062003202b3703c0062003201c3602ec06200320043602e006200320063703c80620034194076a201f2802003602002003418c076a201e29030037020020034184076a201d290300370200200341fc066a2002290300370200200341f4066a20032903b008370200200341d0096a200341f8066a10950220033502d809210520032802d009211d02400240200841037122024103470d0041012102420021064101211e0c010b024002400240024020020e03000102000b4100211e0c020b4101211e0c010b4102211e0b2003201e3a008008410110212202450d3f2002201e3a00004100211e42808080801021060b2005422086201dad8420062002ad84100e0240201e0d00200210230b024020032802d409450d00201d10230b02402001450d00200141186c450d00200410230b201b41ffffffff0371450d43201c10230c430b0240200328028409450d00200210230b41831021010c010b41821021010b20004100360204200041146a410d360200200041106a41ccc1c0003602002000410c6a20013602000c3f0b200141196a2900002106200141186a2d00002109200141176a2d0000210a200141156a2f0000210b200141146a2d0000210c200141136a2d0000210d200141116a2f0000210e200141106a2d0000210f2001410f6a2d000021102001410d6a2f000021112001410c6a2d000021122001410b6a2d00002113200141096a2f00002114200141086a2d00002115200141076a2d00002116200141056a2f00002117200141046a2d00002118200141036a2d0000211a200141026a2d0000211920012d000121312002411a6a2901002105200241196a2d00002104200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002129200241046a2d0000212a200241026a2f0100210841012101024020022d00000d0020022d000141014721010b200320053701e809200320043a00e7092003201b3a00e6092003201c3b01e4092003201d3a00e3092003201e3a00e2092003201f3b01e009200320203a00df09200320213a00de09200320223b01dc09200320233a00db09200320243a00da09200320253b01d809200320263a00d709200320273a00d609200320283b01d409200320293a00d3092003202a3a00d209200320083b01d0090240024020010d0020034180096a41186a200341d0096a41186a220429010037030020034180096a41106a200341d0096a41106a221b29010037030020034180096a41086a200341d0096a41086a221c290100370300200320032901d00937038009200341c0066a20034180096a10c701200341d0096a20032802c006220220032802c80610e10120032802c40621010240024020032d00d0094101470d00200341e9096a290000210520042d00002104200341e7096a2d0000211d200341e5096a2f0000211e200341e4096a2d0000211f200341e3096a2d00002120200341e1096a2f00002121201b2d0000211b200341df096a2d00002122200341dd096a2f00002123200341dc096a2d00002124200341db096a2d00002125200341d9096a2f00002126201c2d0000211c20032d00d709212720032f00d509212820032d00d409212920032d00d309212a20032d00d209210820032d00d109213202402001450d00200210230b200320053703c808200320043a00c7082003201d3a00c6082003201e3b01c4082003201f3a00c308200320203a00c208200320213b01c0082003201b3a00bf08200320223a00be08200320233b01bc08200320243a00bb08200320253a00ba08200320263b01b8082003201c3a00b708200320273a00b608200320283b01b408200320293a00b3082003202a3a00b208200320083a00b108200320323a00b008200320063703f008200320093a00ef082003200a3a00ee082003200b3b01ec082003200c3a00eb082003200d3a00ea082003200e3b01e8082003200f3a00e708200320103a00e608200320113b01e408200320123a00e308200320133a00e208200320143b01e008200320153a00df08200320163a00de08200320173b01dc08200320183a00db082003201a3a00da08200320193a00d908200320313a00d808200341d0096a200341d8086a10c601200341c0006a20032802d009220220032802d809419ca8c70041004100108c0120032802402101024020032802d409450d00200210230b20014101470d0141aac1c0002104410d211b410321014180900c21020c030b02402001450d00200210230b41c4c1c00021044108211b410321014180900421020c020b200341d8086a200341b0086a412010a305450d41200341d0096a20034180096a10c70120033502d809210520032802d0092102412010212201450d11200120032903d808370000200141186a200341d8086a41186a290300370000200141106a200341d8086a41106a290300370000200141086a200341d8086a41086a29030037000020054220862002ad842001ad4280808080800484100e20011023024020032802d409450d00200210230b200341a0066a200341b0086a10c601200341d0096a20032802a006220220032802a806220410e201024020032802f0092201450d002004ad4220862002ad8410110b200341c0066a41086a22042003418c0a6a290200370300200341c0066a41106a221b200341940a6a290200370300200341c0066a41186a221c2003419c0a6a290200370300200341c0066a41206a221d200341a40a6a2802003602002003200341840a6a2902003703c006200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a280200211e200341fc096a280200211f200341f8096a280200212020032903e009210720032903d009212b20032802f409212120034180086a41206a2222201d28020036020020034180086a41186a221d201c29030037030020034180086a41106a221c201b29030037030020034180086a41086a221b2004290300370300200320032903c0063703800802402001450d00200341a0096a41206a2022280200360200200341a0096a41186a201d290300370300200341a0096a41106a201c290300370300200341a0096a41086a201b29030037030020032003290380083703a009024020032802a406450d00200210230b200341d0096a41186a2005370300200341800a6a201e360200200341f8096a2020360200200341f4096a2021360200200341840a6a20032903a0093702002003418c0a6a200341a8096a290300370200200341940a6a200341b0096a2903003702002003419c0a6a200341a0096a41186a290300370200200341a40a6a200341c0096a280200360200200320073703e009200320063703d8092003202b3703d0092003201f3602fc09200320013602f009200341c0066a200341d8086a10c60120032802c0062101200320032802c806360284082003200136028008200341d0096a20034180086a108502024020032802c406450d00200110230b024020032802f4092201450d00200141186c450d0020032802f00910230b20032802800a41ffffffff0371450d4220032802fc0910230c420b20032802a406450d41200210230c410b4102210141801021020b20004100360204200041146a201b360200200041106a20043602002000410c6a20022001723602000c3e0b41002104024020022d000120022d000041004772450d00200041003602042000410c6a41023602000c3e0b200141046a2802002102418fcdc200ad4280808080f00084100c2201280000211b20012900042105200128000c211c2001102341e4d8c100ad4280808080e00184100c220129000021062001290008210720011023200320073701e809200320063701e0092003201c3601dc09200320053701d4092003201b3601d009200320023602c006200341d0096aad4280808080800484200341c0066aad4280808080c00084100e200041003602040c3f0b024020022d000120022d0000410047720d00418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c21042001102341fcdec100ad4280808080800184100c220129000021062001290008210720011023200320073701e809200320063701e009200320043601dc09200320053701d409200320023601d009200341023a008008410110212201450d39200120032d0080083a0000200341d0096aad42808080808004842001ad42808080801084100e200110230c3e0b200041003602042000410c6a41023602000c3c0b024020022d000120022d0000410047720d00418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c21042001102341fcdec100ad4280808080800184100c220129000021062001290008210720011023200320073701e809200320063701e009200320043601dc09200320053701d409200320023601d009200341013a008008410110212201450d38200120032d0080083a0000200341d0096aad42808080808004842001ad42808080801084100e200110230c3d0b200041003602042000410c6a41023602000c3b0b200141086a2802002104200141046a280200211b024020022d000120022d0000410047720d002001410c6a2802002102418fcdc200ad4280808080f00084100c2201280000211c20012900042105200128000c211d2001102341bcd9c100ad4280808080d00184100c220129000021062001290008210720011023200320073701e809200320063701e0092003201d3601dc09200320053701d4092003201c3601d009200341203602c4062003200341d0096a3602c006201b2002200341c0066a109c02200441ffffff3f71450d3c201b10230c3c0b0240200441ffffff3f71450d00201b10230b200041003602042000410c6a41023602000c3a0b200341e8096a200141196a290000370300200341d0096a41106a200141116a290000370300200341d0096a41086a200141096a290000370300200320012900013703d00902400240024020022d000120022d0000410047720d00200341c0066a200341d0096a109a0220032d00c00622014104460d0220032f00c10620032d00c306411074722102200341c0066a41086a280200210420032802c406211b0c010b410221010b20004100360204200041146a2004360200200041106a201b3602002000410c6a20024108742001723602000c3a0b200342f3e885db96cddbb3203703a009200341a0096a200341d0096a109b020c3a0b024020022d000120022d0000410047720d00418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c21042001102341fcdec100ad4280808080800184100c220129000021062001290008210720011023200320073701e809200320063701e009200320043601dc09200320053701d409200320023601d009200341033a008008410110212201450d35200120032d0080083a0000200341d0096aad42808080808004842001ad42808080801084100e200110230c3a0b200041003602042000410c6a41023602000c380b4102211c200141106a280200211d2001410c6a2802002125200141086a2802002124200141046a280200212620022d000121040240024020022d0000220141024b0d00024020010e03000102000b200441ff0171450d010b200420014100477241ff0171450d0041801021010c2f0b4103211c0240201d0d00419ec1c0002104410c21024180901021010c2f0b201d41016a210220242101024003402002417f6a22024102490d01200141046a21042001280200211b200141046a2101201b2004280200490d000b418bc0c0002104411221024180903421010c2f0b200341d0096a202610e701200341c0066a20032802d009220220032802d80910e80120032902c406420020032802c00622011b2105024020032802d409450d00200210230b2001410820011b21230240201d410274221d20246a417c6a2802002005422088a722014f0d0041002102417f21042024211b03402002201b280200221e6a22012005422088a7221f4f0d0b2023200141d8006c6a220128022c212120012802202122200141306a2802002120200141246a280200211c2001200141d8006a2004201f6a201e6b41d8006c10a2051a0240201c450d00201c41306c450d00202210230b0240202041ffffff3f71450d00202110230b201b41046a211b20054280808080707c2105200441016a21042002417f6a2102201d417c6a221d0d000b0240202541ffffffff0371450d00202410230b200341c0066a202610e70120032802c006210120033502c8062106200341d0096a20232005422088a7220210f50120064220862001ad8420033502d80942208620032802d0092204ad84100e024020032802d409450d00200410230b024020032802c406450d00200110230b02402002450d00202341306a21012005422088a741d8006c210203400240200141746a2802002204450d00200441306c450d00200141706a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141d8006a2101200241a87f6a22020d000b0b2005a72201450d39200141d8006c450d39202310230c390b02402001450d00200141d8006c2102202341306a210103400240200141746a2802002204450d00200441306c450d00200141706a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141d8006a2101200241a87f6a22020d000b0b41ffc0c0002104411121024180901821012005a7221b450d2e201b41d8006c450d2e202310230c2e0b4102211b2001410c6a2802002104200141086a280200211d024020022d00000d0020022d00014101470d00200241196a2d0000211c200241186a2d0000211f200241166a2f01002120200241156a2d00002121200241146a2d00002122200241126a2f01002123200241116a2d00002124200241106a2d000021252002410e6a2f010021262002410d6a2d000021272002410c6a2d000021282002410a6a2f01002129200241096a2d0000212a200241086a2d00002108200241066a2f01002109200241056a2d0000210a200241046a2d0000210b200241026a2f0100210c200141106a280200211e200141046a280200211b20032002411a6a2901003703c8082003201c3a00c7082003201f3a00c608200320203b01c408200320213a00c308200320223a00c208200320233b01c008200320243a00bf08200320253a00be08200320263b01bc08200320273a00bb08200320283a00ba08200320293b01b8082003202a3a00b708200320083a00b608200320093b01b4082003200a3a00b3082003200b3a00b2082003200c3b01b0080240201e41104d0d00419dc0c0002101411a2102410c211c0c2c0b418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c211c2001102341f4e5c100ad4280808080a00184100c220129000021062001290008210720011023200320073701e809200320063701e0092003201c3601dc09200320053701d409200320023601d009200341f0016a200341d0096a412010cd0141b7c0c000210141122102410b211c20032802f001450d2b201b20032802f4014f0d2b418fcdc200ad4280808080f00084100c221f2800002120201f2900042105201f28000c2121201f1023418cdbc100ad4280808080a00184100c221f2900002106201f2900082107201f1023200320073701e809200320063701e009200320213601dc09200320053701d409200320203601d009200341e8016a200341d0096a412010cd0120032802e801450d2b201b20032802ec0122204b0d2b418fcdc200ad4280808080f00084100c221f2800002121201f2900042105201f28000c2122201f10234190d8c100ad4280808080c00184100c221f2900002106201f2900082107201f1023200320073701e809200320063701e009200320223601dc09200320053701d409200320213601d009200341e0016a200341d0096a412010cd01201b4100202020032802e40141d40020032802e0011b6b221f201f20204b1b2221490d2b200341d0096a201b10cb01200341c8016a20032802d009222020032802d80910d701200341d8016a290300212b20032903d001210720032802c801211f024020032802d409450d00202010230b201f450d2b200341a0096a200341b0086a10c601200341d0096a20032802a009220220032802a80910e20120034180086a41086a221c2003418c0a6a29020037030020034180086a41106a221f200341940a6a29020037030020034180086a41186a22202003419c0a6a29020037030020034180086a41206a2222200341a40a6a2802003602002003200341840a6a2902003703800802400240024020032802f0092223450d00200341d0096a41186a2903002105200341d0096a41086a2903002106200341800a6a2802002124200341fc096a2802002101200341f8096a280200212520032903e009212c20032903d009212d20032802f4092126200341d8086a41206a2022280200360200200341d8086a41186a2020290300370300200341d8086a41106a201f290300370300200341d8086a41086a201c29030037030020032003290380083703d808024020032802a409450d00200210230b200341c0066a41186a2005370300200341f0066a2024360200200341e8066a2025360200200341e4066a2026360200200341f4066a220220032903d808370200200341fc066a200341e0086a29030037020020034184076a200341e8086a2903003702002003418c076a200341d8086a41186a29030037020020034194076a200341f8086a2802003602002003202c3703d0062003202d3703c006200320013602ec06200320233602e006200320063703c80602402002280200221f0d00410021024100211c0c030b410021024100211c03400240024002402021200128020022204b0d0020020d01410021020c020b200241016a21020c010b201c20026b2222201f4f0d0f200120024102746b2222280200212320222020360200200120233602000b200141046a2101201f201c41016a221c470d000b024002402002450d0020032802f4062221201f20026b2201490d01200320013602f406200121210c010b20032802f40621210b20032802ec0621014100210202400240202141014b0d004100211c20210e020401040b2021211c03402002201c410176221f20026a2220201b200120204102746a280200491b2102201c201f6b221c41014b0d000b0b201b200120024102746a280200221c470d01024020032802e4062201450d00200141186c450d0020032802e00610230b024020032802f00641ffffffff0371450d0020032802ec0610230b41fdbfc0002101410e211c410e21020c2e0b024020032802a409450d00200210230b41ccc1c0002101410d21024100211c0c2d0b20212002201b201c4b6a2202490d0c2021211c0b0240201c20032802f006470d00200341ec066a201c4101107920032802ec0621010b200120024102746a220141046a2001201c20026b41027410a2051a2001201b3602002003201c41016a3602f406200341d0096a200341b0086a10c60120032802d0092101200320032802d8093602a409200320013602a009200341c0066a200341a0096a10ec01024020032802d409450d00200110230b200341d8086a201b109d020240201e41246c22010d00410021270c2b0b201d20016a2225415c6a212a200341f8066a2122201d2102410021270340200221010340200141206a2802002102200341a0096a41186a200141186a290000370300200341a0096a41106a200141106a290000370300200341a0096a41086a200141086a290000370300200320012900003703a009200341d0096a201b200341a0096a10df01200341c0016a20032802d009221c20032802d80910de0120032802c001212320032802c4012124024020032802d409450d00201c10230b20034180086a201b200341a0096a10dd01200341d0096a20032802800822202003280288081090020240024020032802f009221e0d00420021054100211f4108211e4100211c420021060c010b200341d0096a41086a290300210620032903d009210520032802f409211f20032802f809211c0b0240200328028408450d00202010230b02400240201c20024d0d00201e200241306c6a2202450d0002402022200241106a221c460d00201c2022412010a3050d020b2002290300200241086a29030020052006109e0221080240024020032802dc0822260d004100211c0c010b20032802e00821280340202641086a211c20262f010622294105742102410021200240024003402002450d01200341a0096a201c412010a3052221450d02200241606a2102202041016a2120201c41206a211c2021417f4a0d000b2020417f6a21290b024020280d004100211c0c030b2028417f6a2128202620294102746a4194036a28020021260c010b0b202620204102746a41e8026a280200211c0b20032802d80822024101200241014b1b2202418094ebdc036e222020022020418094ebdc036c476a22204101202041014b1b222020024b0d102003418094ebdc033602d40920032002201c2002201c491b20206ead428094ebdc037e200220206ead8042ffffffff0f834100418094ebdc032024410020231b6b22022002418094ebdc034b1bad7e428094ebdc0380a722023602d009200341d0096a2002418094ebdc034b4102746a35020021052003418094ebdc033602d409200320052008ad7e428094ebdc0380a722023602d009200341d0096a2002418094ebdc034b4102746a28020021022003418094ebdc033602d4092003417f202720026a220220022027491b22023602d009200341d0096a2002418094ebdc034b4102746a28020021270b0240201f450d00201f41306c450d00201e10230b200141246a2102202a2001460d2d0c020b200141246a21010240201f450d00201f41306c450d00201e10230b20252001460d2c0c000b0b0b2004450d28200441246c450d28201d10230c2b0b4102211b4100210420022d00000d2420022d00014101470d24200241196a2d00002104200241186a2d0000211c200241166a2f0100211d200241156a2d0000211e200241146a2d0000211f200241126a2f01002120200241116a2d00002121200241106a2d000021222002410e6a2f010021232002410d6a2d000021242002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241086a2d00002128200241066a2f01002129200241056a2d0000212a200241046a2d00002108200241026a2f01002109200141046a280200211b20032002411a6a2901003703c808200320043a00c7082003201c3a00c6082003201d3b01c4082003201e3a00c3082003201f3a00c208200320203b01c008200320213a00bf08200320223a00be08200320233b01bc08200320243a00bb08200320253a00ba08200320263b01b808200320273a00b708200320283a00b608200320293b01b4082003202a3a00b308200320083a00b208200320093b01b008418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c21042001102341f4e5c100ad4280808080a00184100c220129000021062001290008210720011023200320073701e809200320063701e009200320043601dc09200320053701d409200320023601d009200341a0036a200341d0096a412010cd0141b7c0c0002102411221014180802c210402400240024020032802a003450d0020032802a403201b4d0d00418fcdc200ad4280808080f00084100c221c280000211d201c2900042105201c28000c211e201c1023418cdbc100ad4280808080a00184100c221c2900002106201c2900082107201c1023200320073701e809200320063701e0092003201e3601dc09200320053701d4092003201d3601d00920034198036a200341d0096a412010cd01200328029803450d00200328029c03221d201b490d00418fcdc200ad4280808080f00084100c221c280000211e201c2900042105201c28000c211f201c10234190d8c100ad4280808080c00184100c221c2900002106201c2900082107201c1023200320073701e809200320063701e0092003201f3601dc09200320053701d4092003201e3601d00920034190036a200341d0096a412010cd014100201d20032802940341d4002003280290031b6b221c201c201d4b1b221e201b4b0d00200341d0096a201b10cb01200341f8026a20032802d009221d20032802d80910d70120034188036a2903002106200329038003210520032802f802211c024020032802d409450d00201d10230b201c450d00200341a0096a200341b0086a10c601200341d0096a20032802a009220220032802a80910e20120034180086a41086a22042003418c0a6a29020037030020034180086a41106a221c200341940a6a29020037030020034180086a41186a221d2003419c0a6a29020037030020034180086a41206a221f200341a40a6a2802003602002003200341840a6a29020037038008024020032802f0092220450d00200341d0096a41186a2903002107200341d0096a41086a290300212b200341800a6a2802002121200341fc096a2802002101200341f8096a280200212220032903e009212c20032903d009212d20032802f4092123200341d8086a41206a201f280200360200200341d8086a41186a201d290300370300200341d8086a41106a201c290300370300200341d8086a41086a200429030037030020032003290380083703d808024020032802a409450d00200210230b200341c0066a41186a2007370300200341f0066a2021360200200341e8066a2022360200200341e4066a2023360200200341f4066a220220032903d808370200200341fc066a200341e0086a29030037020020034184076a200341e8086a2903003702002003418c076a200341d8086a41186a29030037020020034194076a200341f8086a2802003602002003202c3703d0062003202d3703c006200320013602ec06200320203602e0062003202b3703c80602402002280200221c0d0041002102410021040c040b41002102410021040340024002400240201e2001280200221d4b0d0020020d01410021020c020b200241016a21020c010b200420026b221f201c4f0d11200120024102746b221f2802002120201f201d360200200120203602000b200141046a2101201c200441016a2204470d000b024002402002450d0020032802f406221e201c20026b2201490d01200320013602f4062001211e0c010b20032802f406211e0b20032802ec0621014100210202400240201e41014b0d0041002104201e0e020501050b201e2104034020022004410176221c20026a221d201b2001201d4102746a280200491b21022004201c6b220441014b0d000b0b201b200120024102746a2802002204470d02024020032802e4062201450d00200141186c450d0020032802e00610230b024020032802f00641ffffffff0371450d0020032802ec0610230b41fdbfc0002102410e21014103211b4180803821040c290b024020032802a409450d00200210230b41ccc1c0002102410d2101410021040b4103211b0c270b201e2002201b20044b6a2202490d0d201e21040b0240200420032802f006470d00200341ec066a20044101107920032802ec0621010b200120024102746a220141046a2001200420026b41027410a2051a2001201b3602002003200441016a3602f406200341d0096a200341b0086a10c60120032802d0092101200320032802d8093602a409200320013602a009200341c0066a200341a0096a10ec01024020032802d409450d00200110230b200341d8086a201b109d02200341d0096a201b200341f8066a221c10df01200341f0026a20032802d009220120032802d80910de0120032802f002212120032802f4022122024020032802d409450d00200110230b200341a0096a201b201c10dd01200341d0096a20032802a009220120032802a8091090020240024020032802f00922240d004200210741082124410021204200212b4200212c4200212d0c010b200341d8096a290300212b200341e8096a290300212d20032903d009210720032903e009212c20032802f40921200b024020032802a409450d00200110230b202c202d2007202b109e0221230240024020032802dc08221d0d00410021020c010b200341d8086a41086a280200211e0340201d41086a2102201d2f0106221f4105742101410021040240024003402001450d01201c2002412010a305221b450d02200141606a2101200441016a2104200241206a2102201b417f4a0d000b2004417f6a211f0b0240201e0d00410021020c030b201e417f6a211e201d201f4102746a4194036a280200211d0c010b0b201d20044102746a41e8026a28020021020b20032802d80822014101200141014b1b2201418094ebdc036e220420012004418094ebdc036c476a22044101200441014b1b220420014b0d0d200341c8026a20052006428094ebdc03420010a705200341b8026a20032903c8022206200341c8026a41086a29030022074280ec94a37c427f10a6052003418094ebdc033602d40920032023ad4100418094ebdc032022410020211b221b6b221d201d418094ebdc034b1bad7e428094ebdc0380a7221d3602d009200341d0096a201d418094ebdc034b4102746a280200211d2003418094ebdc033602d4092003417f201b201d6a221d201d201b491b221b3602d009200341d0096a201b418094ebdc034b4102746a350200212b2003418094ebdc033602d4092003202b2001200220012002491b20046ead428094ebdc037e200120046ead8042ffffffff0f837e428094ebdc0380a722013602d009200341a8026a20062007200341d0096a2001418094ebdc034b4102746a350200222b420010a605200341d8026a201c20032903a8022206202b200520032903b8027c7e2205428094ebdc03802207a7417f2005428080808080c0b2cd3b541b200520074280ec94a37c7e7c4280cab5ee01566aad7c2205200341a8026a41086a2903002005200654ad7c109f02200341d8026a41106a290300210520032903e0022106024020032903d8022207a74101470d0020032903b008210720032903b808212b20032903c008212c20032903c808212d200341880a6a2005370300200341800a6a2006370300200341f1096a202d370000200341e9096a202c370000200341e1096a202b370000200341d9096a2007370000200341d0096a41086a220241003a0000200341033a00d009200341d0096a10e001200341d0096a41186a221c4200370300200341d0096a41106a2204420037030020024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000212b20034180086a41086a2201201b41086a2900003703002003202b37038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d00184222b100c221b290000212c2001201b41086a2900003703002003202c37038008201b10232004200329038008222c370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e202c370300200341a0096a41186a221f2001290300370300200320032903d0093703a009200341f8016a200341a0096a412010d701200341f8016a41106a290300212c200329038002212d20032802f801211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d009202b100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f202c4200201b1b220720057c202d4200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020c230b20074201520d23200341d0096a41186a221c4200370300200341d0096a41106a22044200370300200341d0096a41086a22024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000212b20034180086a41086a2201201b41086a2900003703002003202b37038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d00184222b100c221b290000212c2001201b41086a2900003703002003202c37038008201b10232004200329038008222c370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e202c370300200341a0096a41186a221f2001290300370300200320032903d0093703a00920034190026a200341a0096a412010d70120034190026a41106a290300212c200329039802212d200328029002211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d009202b100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f202c4200201b1b220720057c202d4200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020c220b200141246a2802002104200341b8066a200141196a290000370300200341b0066a200141116a290000370300200341a8066a200141096a290000370300200320012900013703a00602400240024020022d00000d0020022d00014101470d0020034180096a41186a200341a0066a41186a29030037030020034180096a41106a200341a0066a41106a29030037030020034180096a41086a200341a0066a41086a290300370300200320032903a00637038009418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c211b20011023418cdbc100ad4280808080a00184100c220129000021062001290008210720011023200320073701e809200320063701e0092003201b3601dc09200320053701d409200320023601d00920034188066a200341d0096a412010cd0141b7c0c0002101411221024180802c211b200328028806450d02200328028c06221d2004490d02418fcdc200ad4280808080f00084222b100c221c280000211e201c2900042105201c28000c211f201c10234190d8c100ad4280808080c00184100c221c2900002106201c2900082107201c1023200320073701e809200320063701e0092003201f3601dc09200320053701d4092003201e3601d00920034180066a200341d0096a412010cd0120044100201d20032802840641d4002003280280061b6b221c201c201d4b1b221d490d02202b100c221c280000211e201c2900042105201c28000c211f201c102341f4e5c100ad4280808080a00184100c221c2900002106201c2900082107201c1023200320073701e809200320063701e0092003201f3601dc09200320053701d4092003201e3601d009200341f8056a200341d0096a412010cd01024020032802f8054101470d0020032802fc0520044b0d030b200341d0096a200410cb01200341e0056a20032802d009221e20032802d80910d701200341f0056a290300210620032903e805210520032802e005211c024020032802d409450d00201e10230b201c450d02200341c0066a20034180096a10c701200341d0096a20032802c006220220032802c80610e101200341e9096a2900002107200341e8096a2d0000211b200341e7096a2d0000211c200341e5096a2f0000211e200341e4096a2d0000211f200341e3096a2d00002120200341e1096a2f00002121200341e0096a2d00002122200341df096a2d00002123200341dd096a2f00002124200341dc096a2d00002125200341db096a2d00002126200341d9096a2f00002127200341d8096a2d0000212820032d00d709212920032f00d509212a20032d00d409210820032d00d309210920032d00d209210a20032d00d109210b20032d00d0092101024020032802c406450d00200210230b200141ff01714101470d01200320073703c8082003201b3a00c7082003201c3a00c6082003201e3b01c4082003201f3a00c308200320203a00c208200320213b01c008200320223a00bf08200320233a00be08200320243b01bc08200320253a00bb08200320263a00ba08200320273b01b808200320283a00b708200320293a00b6082003202a3b01b408200320083a00b308200320093a00b2082003200a3a00b1082003200b3a00b008200341a0096a200341b0086a10c601200341d0096a20032802a009220220032802a80910e20120034180086a41086a221b2003418c0a6a29020037030020034180086a41106a221c200341940a6a29020037030020034180086a41186a221e2003419c0a6a29020037030020034180086a41206a221f200341a40a6a2802003602002003200341840a6a2902003703800802400240024020032802f0092220450d00200341d0096a41186a2903002107200341d0096a41086a290300212b200341800a6a2802002121200341fc096a2802002101200341f8096a280200212220032903e009212c20032903d009212d20032802f4092123200341d8086a41206a201f280200360200200341d8086a41186a201e290300370300200341d8086a41106a201c290300370300200341d8086a41086a201b29030037030020032003290380083703d808024020032802a409450d00200210230b200341c0066a41186a2007370300200341f0066a2021360200200341e8066a2022360200200341e4066a2023360200200341f4066a220220032903d808370200200341fc066a200341e0086a29030037020020034184076a200341e8086a2903003702002003418c076a200341d8086a41186a29030037020020034194076a200341f8086a2802003602002003202c3703d0062003202d3703c006200320013602ec06200320203602e0062003202b3703c80602402002280200221c0d00410021024100211b0c030b410021024100211b0340024002400240201d2001280200221e4b0d0020020d01410021020c020b200241016a21020c010b201b20026b221f201c4f0d15200120024102746b221f2802002120201f201e360200200120203602000b200141046a2101201c201b41016a221b470d000b024002402002450d0020032802f406221e201c20026b2201490d01200320013602f4062001211e0c010b20032802f406211e0b20032802ec0621014100210202400240201e41014b0d004100211b201e0e020401040b201e211b03402002201b410176221c20026a221d20042001201d4102746a280200491b2102201b201c6b221b41014b0d000b0b4103211c2004200120024102746a280200221b470d010c230b024020032802a409450d00200210230b41ccc1c0002101410d21024103211c4100211b0c230b201e20022004201b4b6a2202490d12201e211b0b0240201b20032802f006470d00200341ec066a201b4101107920032802ec0621010b200120024102746a220141046a2001201b20026b41027410a2051a200120043602002003201b41016a3602f406200341a0096a2004200341f8066a221e10dd01200341d0096a20032802a009220120032802a8091090020240024020032802f00922270d00420021074100212641082127410021224200212e4200212b4200212c0c010b200341d8096a290300212c200341e8096a290300212e200341f8096a280200212220032903d009212b20032903e009210720032802f40921260b024020032802a409450d00200110230b200341d0096a200341b0086a10c60120032802d0092101200320032802d8093602a409200320013602a009200341c0066a200341a0096a10ec01024020032802d409450d00200110230b200341d8086a2004109d024104211c200341d8086a41047221280240024020032802dc08221f450d0020032802d8082123200341d8086a41086a28020021200340201f41086a2102201f2f0106222141057421014100211b0240024003402001450d01201e2002412010a305221d450d02200141606a2101201b41016a211b200241206a2102201d417f4a0d000b201b417f6a21210b2020450d022020417f6a2120201f20214102746a4194036a280200211f0c010b0b201f201b4102746a41e8026a2802002202450d0020234101202341014b1b2201418094ebdc036e221b2001201b418094ebdc036c476a221b4101201b41014b1b221b20014b0d14200341c8056a20052006428094ebdc03420010a705200341b8056a20032903c8052206200341c8056a41086a290300222d4280ec94a37c427f10a605200341a8056a2006202d2001200220012002491b201b6ead428094ebdc037e2001201b6ead8042ffffffff0f83222f420010a605200341d0096a200420034180096a10df01200341d8056a20032802d009220220032802d80910de01200341a8056a41086a29030020032903a8052206202f200520032903b8057c7e2205428094ebdc0380222da7417f2005428080808080c0b2cd3b541b2005202d4280ec94a37c7e7c4280cab5ee01566aad7c2205200654ad7c212d20032802dc05410020032802d8051b2101024020032802d409450d00200210230b20034180056a2005202d428094ebdc03420010a705200341f0046a200329038005220620034180056a41086a290300222f4280ec94a37c427f10a605200341e0046a2006202f2001ad2230420010a605200341d0046a200520032903e004222f2030200520032903f0047c7e2206428094ebdc03802230a7417f2006428080808080c0b2cd3b541b200620304280ec94a37c7e7c4280cab5ee01566aad7c22067d2230202d200341e0046a41086a2903002006202f54ad7c22337d2005200654ad7d428094ebdc03420010a705200341c0046a20032903d004222d200341d0046a41086a290300222f4280ec94a37c427f10a605200341b0046a202d202f2007202e202b202c109e02ad2207420010a60520034190056a201e20032903b004223420067c2205203020032903c0047c222e20077e2206428094ebdc03802207a7417f2006428080808080c0b2cd3b541b200620074280ec94a37c7e7c4280cab5ee01566aad7c2206200341b0046a41086a29030020337c2005203454ad7c2006200554ad7c109f0220034190056a41106a290300210520032903980521062003290390052207a74101470d0120034180076a290300210720034188076a290300213020034190076a290300213320032903f8062134200341880a6a2005370300200341800a6a2006370300200341f1096a2033370000200341e9096a2030370000200341e1096a2007370000200341d9096a2034370000200341d0096a41086a220241003a0000200341033a00d009200341d0096a10e001200341d0096a41186a221c4200370300200341d0096a41106a2204420037030020024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000213020034180086a41086a2201201b41086a2900003703002003203037038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d001842230100c221b29000021332001201b41086a2900003703002003203337038008201b102320042003290380082233370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e2033370300200341a0096a41186a221f2001290300370300200320032903d0093703a00920034180046a200341a0096a412010d70120034180046a41106a29030021332003290388042134200328028004211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d0092030100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f20334200201b1b220720057c20344200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020c200b202810be012026450d21202641306c450d21202710230c210b20074201520d1f200341d0096a41186a221c4200370300200341d0096a41106a22044200370300200341d0096a41086a22024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000213020034180086a41086a2201201b41086a2900003703002003203037038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d001842230100c221b29000021332001201b41086a2900003703002003203337038008201b102320042003290380082233370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e2033370300200341a0096a41186a221f2001290300370300200320032903d0093703a00920034198046a200341a0096a412010d70120034198046a41106a290300213320032903a0042134200328029804211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d0092030100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f20334200201b1b220720057c20344200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020c1e0b4102211c4100211b0c210b41c4c1c00021014108210241808004211b0b4103211c0c1f0b41022104024020022d00000d0020022d00014101470d00200141106a290300212b200141086a290300212c200241196a2d00002104200241186a2d0000211b200241166a2f0100211c200241156a2d0000211d200241146a2d0000211e200241126a2f0100211f200241116a2d00002120200241106a2d000021212002410e6a2f010021222002410d6a2d000021232002410c6a2d000021242002410a6a2f01002125200241096a2d00002126200241086a2d00002127200241066a2f01002128200241056a2d00002129200241046a2d0000212a200241026a2f0100210120032002411a6a29010037039809200320043a0097092003201b3a0096092003201c3b0194092003201d3a0093092003201e3a0092092003201f3b019009200320203a008f09200320213a008e09200320223b018c09200320233a008b09200320243a008a09200320253b018809200320263a008709200320273a008609200320283b018409200320293a0083092003202a3a008209200320013a008009200320014108763a008109200341c0066a20034180096a10c601200341d0096a20032802c006220120032802c80610e20120034180086a41086a22042003418c0a6a29020037030020034180086a41106a221c200341940a6a29020037030020034180086a41186a221d2003419c0a6a29020037030020034180086a41206a221e200341a40a6a2802003602002003200341840a6a2902003703800820032802f009221b450d18200341d0096a41186a290300212d200341d0096a41086a2903002134200341800a6a2802002120200341fc096a2802002121200341f8096a280200210220032903e009212f20032903d009213520032802f409211f200341d8086a41206a201e280200360200200341d8086a41186a201d290300370300200341d8086a41106a201c290300370300200341d8086a41086a200429030037030020032003290380083703d808024020032802c406450d00200110230b200341b0086a41106a200341d8086a41106a2903002205370300200341a0096a41086a2201200341d8086a41086a290300370300200341a0096a41106a22042005370300200341a0096a41186a221c200341d8086a41186a290300370300200341a0096a41206a221d200341d8086a41206a280200360200200320032903d8083703a00902402002450d00200341c0066a41206a201d280200360200200341c0066a41186a201c290300370300200341c0066a41106a2004290300370300200341c0066a41086a2001290300370300200320032903a0093703c006200241186c201b6a41686a21014200212e4200213002400340024020020d00410021020c020b024020012903002205202e7c2206202c58200141086a290300223320307c2006200554ad7c2207202b582007202b5122041b0d0020012005202c202e7d22067d37030020012033202b20307d202c202e54ad7d22077d2005200654ad7d3703082007202d7c2006202f7c222f200654ad7c212d0c020b2002417f6a21022033202d7c2005202f7c222f200554ad7c212d200141686a21012006212e200721302006202c542007202b5420041b0d000b0b200341d0096a41186a202d370300200341800a6a2020360200200341f8096a2002360200200341f4096a201f360200200341840a6a20032903c0063702002003418c0a6a200341c8066a290300370200200341940a6a200341d0066a2903003702002003419c0a6a200341c0066a41186a290300370200200341a40a6a200341e0066a2802003602002003202f3703e009200320353703d009200320213602fc092003201b3602f009200320343703d809200342f3e885db96cddbb3203703d808200341d8086a200341880a6a20352034411f109902200341c0066a20034180096a10c60120032802c0062101200320032802c806360284082003200136028008200341d0096a20034180086a10ec01024020032802c406450d00200110230b024020032802f4092201450d00200141186c450d0020032802f00910230b20032802800a41ffffffff0371450d3620032802fc0910230c360b0240201f450d00201f41186c450d00201b10230b41d5c0c0002101418080242102202041ffffffff0371450d1920211023410321040c1a0b410021020c190b20022d000120022d0000410047720d0e200141046a2802002104418fcdc200ad4280808080f00084222b100c2201280000210220012900042105200128000c211b20011023418cdbc100ad4280808080a00184100c220129000021062001290008210720011023200320073701e809200320063701e0092003201b3601dc09200320053701d409200320023601d00920034198066a200341d0096a412010cd012003280298064101470d33200328029c062102202b100c2201280000211b20012900042105200128000c211c200110234190d8c100ad4280808080c001842206100c220129000021072001290008212b200110232003202b3701e809200320073701e0092003201c3601dc09200320053701d4092003201b3601d00920034190066a200341d0096a412010cd0102404100200220032802940641d4002003280290061b6b2201200120024b1b22014100200220046b221b201b20024b1b22024f0d000340200110ce012002200141016a2201470d000b0b418fcdc200ad4280808080f00084100c2201280000210220012900042105200128000c211b200110232006100c220129000021062001290008210720011023200320073701e809200320063701e0092003201b3601dc09200320053701d409200320023601d009200320043602c006200341d0096aad4280808080800484200341c0066aad4280808080c00084100e0c330b200341c0066a41186a200141196a290000370300200341c0066a41106a200141116a290000370300200341c8066a200141096a290000370300200320012900013703c006200341a0096a200341c0066a109702200341d0096a20032802a009220220032802a809109802200341d0096a41106a290300420020032903d00942015122011b210520032903d809420020011b2106200341f0096a290300420020011b2107200341d0096a41186a290300420020011b212b024020032802a409450d00200210230b427f2006202b7c222b202b2006542201200520077c2001ad7c220620055420062005511b22011b427f200620011b844200520d0e200341d0096a200341c0066a109a02024020032d00d00922014104470d00200342f3e885db96cddbb3203703800820034180086a200341c0066a109b020c330b200341d0096a41086a280200210220032802d409210420032f00d10920032d00d30941107472410874221d4180fe0371211b201d418080fc0771211c201d418080807871211d0c140b2001410c6a280200211c200141086a2802002104200141046a280200211b200141d0016a280200211d200341c0066a200141106a41c00110a1051a200341a8086a20014180026a290300370300200341a0086a200141f8016a29030037030020034198086a200141f0016a29030037030020034180086a41106a200141e8016a29030037030020034180086a41086a200141e0016a2903003703002003200141d8016a290300370380080240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000d0020022d00014101470d002003201c3602e008200320043602dc082003201b3602d808200341d0096a200341c0066a41c00110a1051a200341a0096a41286a20034180086a41286a290300370300200341a0096a41206a20034180086a41206a290300370300200341a0096a41186a20034180086a41186a290300370300200341a0096a41106a20034180086a41106a290300370300200341a0096a41086a20034180086a41086a29030037030020032003290380083703a009200341d8086a200341d0096a4101200341a0096a201d10a002221b41ff0171411c460d4e4180bec000210141122104418080e8002102201b411f710e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c010b200341c0066a1083022004450d2d200441ffffffff0771450d2d201b10230c2d0b200341e4096a4101360200200342013702d409200341a4c5c6003602d009200341043602a409200341c8abc3003602a0092003200341a0096a3602e009200341d0096a419ca8c700103a000b41ccc1c0002101410d2104410021020c190b41c4c1c0002101410821044180800421020c180b41b7c1c0002101410d21044180800821020c170b41aac1c0002101410d21044180800c21020c160b419ec1c0002101410c21044180801021020c150b4190c1c0002101410e21044180801421020c140b41ffc0c0002101411121044180801821020c130b41eec0c0002101411121044180801c21020c120b41e2c0c0002101410c21044180802021020c110b41d5c0c0002101410d21044180802421020c100b41c9c0c0002101410c21044180802821020c0f0b41b7c0c00021014180802c21020c0e0b419dc0c0002101411a21044180803021020c0d0b418bc0c00021014180803421020c0c0b41fdbfc0002101410e21044180803821020c0b0b41e6bfc0002101411721044180803c21020c0a0b41d0bfc000210141162104418080c00021020c090b41bdbfc000210141132104418080c40021020c080b41a5bfc000210141182104418080c80021020c070b4192bfc000210141132104418080cc0021020c060b41febec000210141142104418080d00021020c050b41e8bec000210141162104418080d40021020c040b41d1bec000210141172104418080d80021020c030b41b8bec000210141192104418080dc0021020c020b41a3bec000210141152104418080e00021020c010b4192bec000210141112104418080e40021020b4103211b0c120b2001410c6a280200211c200141086a2802002104200141046a280200211b200141d0016a280200211d200341c0066a200141106a41c00110a1051a200341a8086a20014180026a290300370300200341a0086a200141f8016a29030037030020034198086a200141f0016a29030037030020034180086a41106a200141e8016a29030037030020034180086a41086a200141e0016a2903003703002003200141d8016a290300370380080240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00000d0020022d000141ff01714102470d002003201c3602e008200320043602dc082003201b3602d808200341d0096a200341c0066a41c00110a1051a200341a0096a41286a20034180086a41286a290300370300200341a0096a41206a20034180086a41206a290300370300200341a0096a41186a20034180086a41186a290300370300200341a0096a41106a20034180086a41106a290300370300200341a0096a41086a20034180086a41086a29030037030020032003290380083703a009200341d8086a200341d0096a4102200341a0096a201d10a002221b41ff0171411c460d4d4180bec000210141122104418080e8002102201b411f710e1c0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c010b200341c0066a1083022004450d2a200441ffffffff0771450d2a201b10230c2a0b200341e4096a4101360200200342013702d409200341a4c5c6003602d009200341043602a409200341c8abc3003602a0092003200341a0096a3602e009200341d0096a419ca8c700103a000b41ccc1c0002101410d2104410021020c190b41c4c1c0002101410821044180800421020c180b41b7c1c0002101410d21044180800821020c170b41aac1c0002101410d21044180800c21020c160b419ec1c0002101410c21044180801021020c150b4190c1c0002101410e21044180801421020c140b41ffc0c0002101411121044180801821020c130b41eec0c0002101411121044180801c21020c120b41e2c0c0002101410c21044180802021020c110b41d5c0c0002101410d21044180802421020c100b41c9c0c0002101410c21044180802821020c0f0b41b7c0c00021014180802c21020c0e0b419dc0c0002101411a21044180803021020c0d0b418bc0c00021014180803421020c0c0b41fdbfc0002101410e21044180803821020c0b0b41e6bfc0002101411721044180803c21020c0a0b41d0bfc000210141162104418080c00021020c090b41bdbfc000210141132104418080c40021020c080b41a5bfc000210141182104418080c80021020c070b4192bfc000210141132104418080cc0021020c060b41febec000210141142104418080d00021020c050b41e8bec000210141162104418080d40021020c040b41d1bec000210141172104418080d80021020c030b41b8bec000210141192104418080dc0021020c020b41a3bec000210141152104418080e00021020c010b4192bec000210141112104418080e40021020b4103211b0c0f0b1033000b2001201f103b000b2022201f4184d9c4001030000b200220211038000b41f0a6c700411941f4aac700102d000b201f201c4184d9c4001030000b2002201e1038000b41f0a6c700411941f4aac700102d000b201f201c4184d9c4001030000b2002201e1038000b41f0a6c700411941f4aac700102d000b200041003602042000410c6a41023602000c230b4100211d41808028211c41032101410c210241c9c0c0002104418010211b0c050b201b10230c190b4102211b410021020b20004100360204200041146a2004360200200041106a20013602002000410c6a2002418080fc0071201b72418010723602000c1f0b4102211b410021020b20004100360204200041146a2004360200200041106a20013602002000410c6a2002418080fc0071201b72418010723602000c1d0b20004100360204200041146a2002360200200041106a20043602002000410c6a201b200172201c72201d723602000c1c0b024020032802c406450d00200110230b41ccc1c0002101410021020b410321040b20004100360204200041146a410d360200200041106a20013602002000410c6a20024180803c71200472418010723602000c190b2002ad42808080808004842001ad4280808080800284100e0b0240202241306c2201450d00202720016a2120202741286a2101200341a0096aad42808080808004842135200341d0096a41106a2102200341880a6a21250340200341d8036a202d202f200141586a2204290300200441086a290300202b202c109e02ad2205420010a605200341e8036a200141686a221c20032903d80322062005202e7e2205428094ebdc03802207a7417f2005428080808080c0b2cd3b541b200520074280ec94a37c7e7c4280cab5ee01566aad7c2205200341d8036a41086a2903002005200654ad7c109f02200341e8036a41106a290300210520032903f003210602400240024020032903e8032207a74101470d00201c2900002107200141706a2900002130200141786a290000213320012900002134200320063703800a20252005370300200320343700f109200320333700e909200320303700e109200320073700d909200341003a00d809200341033a00d009200341d0096a10e001200341d0096a41186a221d420037030020024200370300200341d0096a41086a221b4200370300200342003703d00941bdadc500ad42808080808001842207100c221e290000213020034180086a41086a2204201e41086a2900003703002003203037038008201e1023201b200429030037030020032003290380083703d00941c5adc500ad4280808080d001842230100c221e29000021332004201e41086a2900003703002003203337038008201e10232002200329038008370000200241086a22212004290300370000200341a0096a41086a2222201b290300370300200341a0096a41106a22232002290300370300200341a0096a41186a2224201d290300370300200320032903d0093703a009200341a8036a200341a0096a412010d701200341a8036a41106a290300213320032903b003213420032802a803211e201d420037030020024200370300201b4200370300200342003703d0092007100c221f29000021072004201f41086a2900003703002003200737038008201f1023201b200429030037030020032003290380083703d0092030100c221f29000021072004201f41086a2900003703002003200737038008201f10232002200329038008370000202120042903003700002022201b290300370300202320022903003703002024201d290300370300200320032903d0093703a0092003427f20334200201e1b220720057c20344200201e1b220520067c22062005542204ad7c22052004200520075420052007511b22041b3703d8092003427f200620041b3703d009200341d0096a21040c010b20074201520d01200341d0096a41186a221d420037030020024200370300200341d0096a41086a221b4200370300200342003703d00941bdadc500ad42808080808001842207100c221e290000213020034180086a41086a2204201e41086a2900003703002003203037038008201e1023201b200429030037030020032003290380083703d00941c5adc500ad4280808080d001842230100c221e29000021332004201e41086a2900003703002003203337038008201e10232002200329038008370000200241086a22212004290300370000200341a0096a41086a2222201b290300370300200341a0096a41106a22232002290300370300200341a0096a41186a2224201d290300370300200320032903d0093703a009200341c0036a200341a0096a412010d701200341c0036a41106a290300213320032903c803213420032802c003211e201d420037030020024200370300201b4200370300200342003703d0092007100c221f29000021072004201f41086a2900003703002003200737038008201f1023201b200429030037030020032003290380083703d0092030100c221f29000021072004201f41086a2900003703002003200737038008201f10232002200329038008370000202120042903003700002022201b290300370300202320022903003703002024201d290300370300200320032903d0093703a0092003427f20334200201e1b220720057c20344200201e1b220520067c22062005542204ad7c22052004200520075420052007511b22041b3703d8092003427f200620041b3703d009200341d0096a21040b20352004ad4280808080800284100e0b200141306a2101201c41206a2020470d000b0b202810be0102402026450d00202641306c450d00202710230b024020032802e4062201450d00200141186c450d0020032802e00610230b024020032802f00641ffffffff0371450d0020032802ec0610230b410021040c030b024020032802e4062201450d00200141186c450d0020032802e00610230b41fdbfc0002101410e210241808038211b20032802f00641ffffffff0371450d0020032802ec0610230b41002104201c4104460d010b200041146a2002360200200041106a20013602002000410c6a201b4180803c71201c7241801072360200410121040b200041003602040c150b2002ad42808080808004842001ad4280808080800284100e0b200341d8086a410472210102402020450d00202041306c450d00202410230b200110be01024020032802e4062201450d00200141186c450d0020032802e00610230b024020032802f00641ffffffff0371450d0020032802ec0610230b410021040c020b0b200041146a2001360200200041106a20023602002000410c6a20044180803c71201b7241801072360200410121040b200041003602040c100b0c020b02402004450d00200441246c450d00201d10230b20034198016a2007202b428094ebdc03420010a70520034188016a200329039801220520034198016a41086a29030022064280ec94a37c427f10a605200341f8006a200520062027ad222b420010a605200341a8016a200341c0066a41386a20032903782206202b20072003290388017c7e2205428094ebdc03802207a7417f2005428080808080c0b2cd3b541b200520074280ec94a37c7e7c4280cab5ee01566aad7c2205200341f8006a41086a2903002005200654ad7c109f02200341a8016a41106a290300210520032903b001210602400240024020032903a8012207a74101470d0020032903b008210720032903b808212b20032903c008212c20032903c808212d200341d0096a41386a2005370300200341800a6a2006370300200341f1096a202d370000200341e9096a202c370000200341e1096a202b370000200341d9096a2007370000200341d0096a41086a220241003a0000200341033a00d009200341d0096a10e001200341d0096a41186a221c4200370300200341d0096a41106a2204420037030020024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000212b20034180086a41086a2201201b41086a2900003703002003202b37038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d00184222b100c221b290000212c2001201b41086a2900003703002003202c37038008201b10232004200329038008222c370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e202c370300200341a0096a41186a221f2001290300370300200320032903d0093703a009200341c8006a200341a0096a412010d701200341c8006a41106a290300212c2003290350212d2003280248211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d009202b100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f202c4200201b1b220720057c202d4200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020c010b20074201520d01200341d0096a41186a221c4200370300200341d0096a41106a22044200370300200341d0096a41086a22024200370300200342003703d00941bdadc500ad42808080808001842207100c221b290000212b20034180086a41086a2201201b41086a2900003703002003202b37038008201b10232002200129030037030020032003290380083703d00941c5adc500ad4280808080d00184222b100c221b290000212c2001201b41086a2900003703002003202c37038008201b10232004200329038008222c370300200341a0096a41086a221d2002290300370300200341a0096a41106a221e202c370300200341a0096a41186a221f2001290300370300200320032903d0093703a009200341e0006a200341a0096a412010d701200341e0006a41106a290300212c2003290368212d2003280260211b201c42003703002004420037030020024200370300200342003703d0092007100c221c29000021072001201c41086a2900003703002003200737038008201c10232002200129030037030020032003290380083703d009202b100c221c29000021072001201c41086a2900003703002003200737038008201c102320042003290380082207370300201d2002290300370300201e2007370300201f2001290300370300200320032903d0093703a0092003427f202c4200201b1b220720057c202d4200201b1b220520067c22062005542201ad7c22052001200520075420052007511b22011b3703d8092003427f200620011b3703d009200341d0096a2101200341a0096a21020b2002ad42808080808004842001ad4280808080800284100e0b200341d8086a41047210be01024020032802e4062201450d00200141186c450d0020032802e00610230b024020032802f00641ffffffff0371450d0020032802ec0610230b410021040c020b02402004450d00200441246c450d00201d10230b4103211b0b200041146a2002360200200041106a20013602002000410c6a201c41ff0171411074201b7241801072360200410121040b200041003602040c0b0b0240202541ffffffff0371450d00202410230b20004100360204200041146a2002360200200041106a20043602002000410c6a2001201c723602000c080b41012123410021210c010b0240201c41ffffff3f71450d00201b10230b2023450d0120032802840841ffffff3f7121210b418fcdc200ad4280808080f00084100c2202280000210420022900042105200228000c211b20021023418cdbc100ad4280808080a00184100c220229000021062002290008210720021023200320073701e809200320063701e0092003201b3601dc09200320053701d409200320043601d009200341386a200341d0096a412010cd01200328023c212220032802382124200341d0096a200341f8066a220210c30120033502d80942208620032802d0092204ad841011024020032802d409450d00200410230b200341a0096a200210c50120033502a809210520032802a0092120200341003602d809200342013703d0092001200341d0096a106102400240024020010d0020032802d409211b20032802d80921020c010b2001410574211d410020032802d80922026b211c20032802d009211f20032802d409211b2023211e0340201e21010240201b201c6a411f4b0d00200241206a22042002490d03201b410174221e2004201e20044b1b22044100480d030240024002400240201b0d00024020040d004101211f0c020b20041021211f0c030b201b2004470d010b2004211b0c020b201f201b20041025211f0b2004211b201f450d050b200141206a211e201f20026a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000201c41606a211c200241206a2102201d41606a221d0d000b2003201b3602d409200320023602d8092003201f3602d0090b02400240201b20026b4104490d0020032802d0092104201b21010c010b200241046a22012002490d01201b41017422042001200420014b1b22014100480d0102400240201b0d00024020010d00410121040c020b200110212204450d050c010b20032802d0092104201b2001460d002004201b200110252204450d040b200320013602d409200320043602d0090b200420026a2022410020241b3600002003200241046a22023602d8094100211b200341003a0080080240024020012002460d00200221010c010b200141016a22022001490d012001410174221b2002201b20024b1b22024100480d010240024020010d0041002101024020020d00410121040c020b200210212204450d050c010b20012002460d0020042001200210252204450d040b200320023602d409200320043602d00920032d008008211b0b200420016a201b3a000020032802d409210220054220862020ad84200141016aad42208620032802d0092201ad84100e02402002450d00200110230b024020032802a409450d00202010230b02402021450d00202310230b024020032802e4062201450d00200141186c450d0020032802e00610230b20032802f00641ffffffff0371450d0720032802ec0610230c070b102c000b02402025450d00202541186c450d00202610230b0240202741ffffffff0371450d00202810230b410121040c030b102a000b0b201c41ffffff3f71450d00201b10230b20004100360204200041146a2002360200200041106a201d3602002000410c6a200141ff0171411074200472418010723602000b410121040c010b41002104200041003602040b20002004360200200341900b6a24000bae0503027f017e047f230041d0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341b0dac100ad4280808080d00084100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bce0203027f017e037f23004180026b22012400200141086a2000109702200141e0006a200128020822002001280210220210980220012903602103200141b8016a200141e8006a41c40010a1051a200141b4016a41026a2204200141af016a2d00003a0000200120012f00ad013b01b4010240024020034201510d0041002105200141186a410041c40010a0051a0c010b20012d00ac012105200141186a200141b8016a41c40010a1051a200141146a41026a20042d00003a0000200120012f01b4013b01140b200141e8006a200141186a41c40010a1052104200141af016a200141166a2d00003a0000200142013703602001417f2005411874220541808080086a220620062005491b4118763a00ac01200120012f01143b00ad01200120023602bc01200120003602b8012004200141b8016a1098030240200128020c450d00200010230b20014180026a24000bcc0503027f017e047f230041e0006b2202240041e4dec400ad4280808080e00084100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341888ec600ad4280808080f00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000baa0406027f017e017f037e017f037e230041d0006b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044104490d0020044104460d002004417b6a4110490d002004416b6a4110490d002004415b6a4110490d002004414b6a410f4b0d010b20034100360220200342013703182003410a36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c20034180c5c6003602382003200341286a360248200341346a4184a5c200200341386a10311a2003350220422086200335021884100a0240200328021c450d00200328021810230b420021050c010b2001280000210420012d000421062001410d6a2900002105200129000521072001411d6a290000210820012900152109200341286a41026a220a200341386a41026a2d00003a0000200320032f00383b01282001412d6a290000210b2001290025210c2001290035210d200041c0006a2001413d6a290000370300200041386a200d370300200041306a200b370300200041286a200c370300200041206a2008370300200041186a2009370300200041106a200537030020002007370308200020063a004c200041c8006a2004360200200020032f01283b004d200041cf006a200a2d00003a0000420121050b200020053703002002450d00200110230b200341d0006a24000ba00f03037f017e0d7f230022052106200541e0016b41607122052400024002402002200384500d00200441ff01712207450d002000290000210841002109024020074101460d004102410120044101711b21090b20052002370300200520093a00182005200837031020052003370308200541c0016a200110d704200541a0016a20052802c001220720052802c80110da0420052902a401420020052802a00122041b2102024020052802c401450d00200710230b2004410820041b210a2002a7210b0240024002402002422088a7220c450d00200a200c4105746a210d200541a0016a411072210e200541a0016a411972210f410021070340200541e8006a41106a2210200a20076a220441106a290300370300200541e8006a41086a2211200441086a290300370300200520042903003703682005200441196a28000036023820052004411c6a28000036003b200441186a2d000022124103460d01200f2005280238360000200f41036a200528003b360000200520102903003703b001200520112903003703a801200520052903683703a001200520123a00b80102400240200e2000460d00200e2900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b2002a7221041ff01714103470d02200741206a2107200441206a200d470d000b0b200541003602a801200542083703a001200b41ffffff3f71450d01200a10230c010b200541d0006a41106a220f200529039001370300200541d0006a41086a22112005290388013703002005200528009c0136004320052005280099013602402005200529038001370350200520052802403602482005200528004336004b41201021220e450d02200e2005290350370300200e20103a0018200e2005280248360019200e411c6a200528004b360000200e41106a200f290300370300200e41086a2011290300370300200542818080801037022c2005200e3602280240200c41057441606a2007460d00200441206a2110200c410574200a6a41606a211320054180016a4119722114200541a0016a4110722112200541a0016a411972210f4101210c0340201021040340200541e8006a41106a2210200441106a290300370300200541e8006a41086a2211200441086a29030037030020052004290300370368200441186a2d000021072005200441196a28000036023820052004411c6a28000036003b20074103460d02200f2005280238360000200f41036a200528003b360000200520102903003703b001200520112903003703a801200520052903683703a001200520073a00b8010240024020122000460d0020122900002000290000510d00200520052903b801220237039801200520052903b00137039001200520052903a80137038801200520052903a001370380010c010b200541033a00d80120052005290318220237039801200520052903103703900120052005290308370388012005200529030037038001200520052903d001370310200520052903c801370308200520052903c001370300200520052903d80122033703182003a721090b02402002a7220741ff01714103470d00200441206a2204200d470d010c030b0b200541d0006a41106a2210200529039001370300200541d0006a41086a2211200529038801370300200520142800003602402005201441036a2800003600432005200529038001370350200520052802403602482005200528004336004b200541c0016a41086a22152011290300370300200541c0016a41106a22112010290300370300200520052903503703c001200520052802483602a0012005200528004b3600a3010240200c200528022c470d00200541286a200c41011097012005280228210e0b200441206a2110201529030021022011290300210320052903c0012108200e200c4105746a221120073a001820112008370300201120052802a0013600192011411c6a20052800a301360000201141106a2003370300201141086a20023703002005200c41016a220c36023020132004470d000b0b0240200b41ffffff3f71450d00200a10230b200541a0016a41086a200541286a41086a280200360200200520052903283703a0010b02400240200941ff01714103470d0020052802a801210420052802a0012107200541a0016a21050c010b200541c0016a41186a220f2005290318370300200541c0016a41106a22102005290310370300200541c0016a41086a22112005290308370300200520052903003703c001024020052802a801220420052802a401470d00200541a0016a2004410110970120052802a80121040b20052802a001220720044105746a220020052903c001370300200041086a2011290300370300200041106a2010290300370300200041186a200f2903003703002005200441016a22043602a801200541a0016a21050b20012007200410db04200541046a28020041ffffff3f71450d00200528020010230b200624000f0b1033000b960903057f027e057f230041a0016b22022400200241e8006a200110c701200241f8006a200228026822032002280270220410e101024020022d00782205450d002004ad4220862003ad8410110b200241086a41176a220420024191016a290000370000200241086a41106a22062002418a016a290100370300200241086a41086a20024182016a29010022073703002002200229017a220837030820022d00792109200241f8006a41176a220a2004290000370000200241f8006a41106a22042006290300370300200241f8006a41086a220620073703002002200837037802400240024002400240024020054101470d00200241c8006a41176a200a290000370000200241c8006a41106a2004290300370300200241c8006a41086a2006290300370300200220022903783703480240200228026c450d00200310230b200241286a41176a2203200241c8006a41176a290000370000200241286a41106a2205200241c8006a41106a290300370300200241116a200241d0006a290300370000200241196a2005290300370000200241206a2003290000370000200220093a000820022002290348370009200241f8006a200241086a10c60120023502800142208620022802782203ad8410110240200228027c450d00200310230b200241f8006a200110950220023502800142208620022802782203ad8410110240200228027c450d00200310230b200241f8006a200110c30120023502800142208620022802782203ad8410110240200228027c450d00200310230b200241f8006a200110c50120023502800142208620022802782203ad8410110240200228027c450d00200310230b200241c8006a200110c101200241f8006a200228024822032002280250220510c9010240200228028401220b450d002005ad4220862003ad8410110b20022903880121072002280278210c0240200228024c450d00200310230b200b450d04200b2007422088a74102746a210d200c210a200b2109410021040240410041ff01710e03020300020b410021030c030b0240200228026c450d00200310230b200041086a4108360200200041046a41c4c1c000360200200041026a41013a000020004183103b01000c040b410121030c010b410221030b0340024002400240024002400240024020030e03000102020b2009200d460d03200941046a21094102210320042105200a417f6a2206210a0c020b4102210541002103024020044102460d00200c21060c020b2009200d460d02200941046a210941022105200a417f6a2206210a410221030c010b4102210541012103200c210620044102460d010b200241f8006a41186a200141186a290000370300200241f8006a41106a200141106a290000370300200241f8006a41086a200141086a290000370300200220063602980120022001290000370378200241c8006a200241f8006a10c401200235025042208620022802482204ad8410110240200228024c450d00200410230b200521040240200341ff01710e03000203000b410121030c030b200742ffffffff0383500d03200b10230c030b410221030c010b410021030c000b0b200110a102200041043a00000b200241a0016a24000bea0306037f017e0d7f027e017f017e230041306b22022400200241106a200110d704200220022802102203200228021810da0420022902044200200228020022041b210502402002280214450d00200310230b2004410820041b2106024002402005422088a722070d00410021070c010b200041706a210841002103200621044100210902400240034002400240024020082004460d00200441106a220a2900002000290000510d0020030d01410021030c020b200341016a21030c010b200920036b220b20074f0d02200241106a41186a220c200420034105746b220b41186a220d290300370300200241106a41106a220e200b41106a220f290300370300200241106a41086a2210200b41086a22112903003703002002200b290300370310200441086a22122903002113200a2903002114200441186a22152903002116200b2004290300370300200d2016370300200f2014370300201120133703002015200c290300370300200a200e29030037030020122010290300370300200420022903103703000b200441206a21042007200941016a2209460d020c000b0b200b20074184d9c4001030000b2003417f6a20074f0d00200542ffffffff0f832105200720036b21070b20012006200710db040240200542ffffff3f83500d00200610230b200241306a24000ba30301067f230041106b22032400024020014105744104722204417f4c0d000240200410212205450d002003410036020820032004360204200320053602002001200310610240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020002101024002402006200522046b4120490d00200441206a21050c010b024002400240200441206a22052004490d00200641017422002005200020054b1b22004100480d000240024020060d00024020000d00410121070c020b2000102121070c040b20062000470d020b200021060c030b102c000b200720062000102521070b2000210620070d00102a000b200141206a2100200720046a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100e02402006450d00200710230b200341106a24000f0b1033000b1032000bd30503027f017e057f230041e0006b22022400418fcdc200ad4280808080f00084100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341eecec000ad4280808080800284100c22032900002104200241286a41086a200341086a29000037030020022004370328200310232002200136023c20022002413c6aad4280808080c00084100d220329000037034020031023200241d4006a200241c0006a360200200241003a00582002200241c0006a41086a36024c20022002413c6a3602502002200241c0006a360248200241186a200241c8006a10650240024002400240024002402002280220220541206a2201417f4c0d0020022802182106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422074110200741104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290328370010200341186a200241286a41086a2903003700000240200841606a20054f0d00200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a0240200228021c450d00200610230b200241c8006a2003200110bb01200241286a41086a2201200241c8006a410c6a2902003703002002200229024c3703280240024020022802484101460d00200042003702002000410c6a41003602000c010b20002002290328370200200041086a20012903003702000b20031023200241e0006a24000f0b102c000b102a000bbb0302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b2203428094ebdc03420010a705200441286a20042903382206200441386a41086a2903002207428094ebdc03420010a605200441186a20022003200620022004290328852003200441286a41086a2903008584420052ad7c22084201200842015620072008200654ad7c22064200522006501b22051b22082006420020051b220710a70502400240024020042903182206428080808010544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2008200710a70520042903082203428080808010544100200441086a41086a290300501b450d012006a7450d02200441d0006a2400200342ffffffff0f83428094ebdc037e200642ffffffff0f8380a70f0b2004411136024c20044184abc7003602484188a9c70041de00200441c8006a41f8a8c70041e8a9c7001034000b2004411136024c20044184abc7003602484188a9c70041de00200441c8006a41f8a8c70041e4aac7001034000b41f0a6c700411941f4aac700102d000b8f1b020c7f087e230041f0036b22042400200441386a2001109502200428023821052004200428024022063602dc02200420053602d80220044198016a2006ad4220862005ad841010108b01024002402004280298012207450d00200428029c01210802400240200441a0016a280200450d0020072d000022064103490d010b2004410036028002200442013703f8012004410a3602042004200441d8026a3602002004200441f8016a3602d8012004419c036a41013602002004420137028c0320044180c5c600360288032004200436029803200441d8016a4184a5c20020044188036a10311a20043502800242208620043502f80184100a024020042802fc01450d0020042802f80110230b410321060b02402008450d00200710230b20064103470d010b410021060b0240200428023c450d00200510230b0240024002400240024020060e03000201000b20044198016a200110c70120044188036a200428029801220520042802a00110e101200441f8016a41086a220620044191036a290000370300200441f8016a41106a220720044199036a290000370300200441f8016a41186a2208200441a1036a29000037030020042004290089033703f80102400240024020042d0088034101470d00200441f8006a41186a2008290300370300200441f8006a41106a2007290300370300200441f8006a41086a2006290300370300200420042903f8013703780240200428029c01450d00200510230b200441d8016a41186a200441f8006a41186a290300370300200441d8016a41106a200441f8006a41106a290300370300200441d8016a41086a200441f8006a41086a290300370300200420042903783703d801200441386a200441d8016a10c60120044188036a20042802382209200428024010e20120044198016a41086a220620044188036a41086a29030037030020044198016a41106a220720044188036a41106a29030037030020044198016a41186a220820044188036a41186a290300370300200441f8016a41086a220a200441b4036a290200370300200441f8016a41106a220b200441bc036a290200370300200441f8016a41186a220c200441c4036a290200370300200441f8016a41206a220d200441cc036a290200370300200441f8016a41286a220e200441d4036a290200370300200441f8016a41306a220f200441dc036a280200360200200420042903880337039801200420042902ac033703f80120042802a8032205450d01200441d8026a41186a2008290300370300200441d8026a41106a2007290300370300200441d8026a41086a2006290300370300200441086a200a290300370300200441106a200b290300370300200441186a200c290300370300200441206a200d290300370300200441286a200e290300370300200441306a200f28020036020020042004290398013703d802200420042903f8013703000240200428023c450d00200910230b200441f8016a41186a200441d8016a41186a2903002210370300200441f8016a41106a200441d8016a41106a2903002211370300200441f8016a41086a200441d8016a41086a2903002212370300200420042903d80122133703f80120044188036a41186a201037030020044188036a41106a201137030020044188036a41086a201237030020044188036a41286a200441d8026a41086a290300221437030020044188036a41306a200441d8026a41106a290300221537030020044188036a41386a200441d8026a41186a29030022163703002004201337038803200420042903d80222173703a803200441386a41386a2016370300200441386a41306a2015370300200441386a41286a2014370300200441d8006a2017370300200441386a41186a2010370300200441386a41106a2011370300200441386a41086a2012370300200420133703380c020b200428029c01450d04200510230c040b0240200428023c450d00200910230b200441f8016a41186a200441d8016a41186a290300370300200441f8016a41106a200441d8016a41106a290300370300200441f8016a41086a200441d8016a41086a290300370300200420042903d8013703f8010b2005450d0220044198016a41386a2207200441386a41386a29030037030020044198016a41306a2208200441386a41306a29030037030020044198016a41286a220a200441386a41286a29030037030020044198016a41206a220b200441386a41206a29030037030020044198016a41186a200441386a41186a220629030037030020044198016a41106a200441386a41106a220c29030037030020044198016a41086a200441386a41086a220d2903003703002004200429033837039801200441d8016a41186a2006290300370300200441d8016a41106a200c290300370300200441d8016a41086a200d290300370300200420042903383703d801200441f8016a41186a22062007290300370300200441f8016a41106a22072008290300370300200441f8016a41086a2208200a29030037030020042005360298022004200b2903003703f8012004419c026a2004290300370200200441a4026a200441086a290300370200200441ac026a200441106a290300370200200441b4026a200441186a290300370200200441bc026a200441206a290300370200200441c4026a200441286a290300370200200441cc026a200441306a2802003602002006290300211020072007290300221120027c22123703002006201020037c2012201154ad7c3703002008200829030020037c20042903f801221020027c2211201054ad7c2212370300200420113703f80120042003370380012004200237037802400240200220038450450d004200210342002110420021020c010b200420013602d402200441d8026a2001200441f8006a200441d4026a10a202024020042802d8024101470d004200211020042903e0022103420121020c010b20044180036a2903002110200441f8026a29030021034200210220042903e0024201520d00200441d8026a41106a2903002113200441c0036a200441d8026a41186a290300370300200441b8036a201337030020044188036a41086a41003a000020044191036a200129000037000020044199036a200141086a290000370000200441a1036a200141106a290000370000200441a9036a200141186a290000370000200441023a00880320044188036a10e0010b200442f3e885db96cddbb320370378200441f8006a200441f8016a41386a20112012411f10990220044188036a200441d8016a10c601200428028803210520042004280290033602dc02200420053602d802200441f8016a200441d8026a10ec010240200428028c03450d00200510230b0240200428029c022205450d00200541186c450d0020042802980210230b0240200441a8026a28020041ffffffff0371450d0020042802a40210230b200242018521020c030b20044198016a200110c70120044188036a200428029801220520042802a00110e101200441f8016a41086a220120044191036a290000370300200441f8016a41106a220620044199036a290000370300200441f8016a41186a2207200441a1036a29000037030020042004290089033703f801024020042d0088034101470d00200441386a41186a2007290300370300200441386a41106a2006290300370300200441386a41086a2001290300370300200420042903f8013703380240200428029c01450d00200510230b20044198016a41186a200441386a41186a29030037030020044198016a41106a200441386a41106a29030037030020044198016a41086a200441386a41086a2903003703002004200429033837039801200420023703002004200337030802400240200220038450450d004200210242002103420021100c010b200420044198016a3602d802200441f8016a20044198016a2004200441d8026a10a202024020042802f8014101470d00420021102004290380022103420121020c010b200441a0026a290300211020044198026a2903002103420021022004290380024201520d00200441f8016a41106a2903002111200441c0036a200441f8016a41186a290300370300200441b8036a201137030020044188036a41086a41003a000020044191036a20042903980137000020044199036a20044198016a41086a290300370000200441a1036a20044198016a41106a290300370000200441a9036a20044198016a41186a290300370000200441023a00880320044188036a10e0010b200242018521020c030b200428029c01450d0120051023420021020c020b2004200237039801200420033703a00102400240200220038450450d004200210342002110420021020c010b20042001360238200441f8016a200120044198016a200441386a10a202024020042802f8014101470d00420021102004290380022103420121020c010b200441a0026a290300211020044198026a2903002103420021022004290380024201520d00200441f8016a41106a2903002111200441c0036a200441f8016a41186a290300370300200441b8036a201137030020044188036a41086a41003a000020044191036a200129000037000020044199036a200141086a290000370000200441a1036a200141106a290000370000200441a9036a200141186a290000370000200441023a00880320044188036a10e0010b200242018521020c010b420021020b2000200337030820002002370300200041106a2010370300200441f0036a24000b91470b017f067e017f017e017f017e017f017e017f057e167f230041b0036b22052400200341286a2903002106200341186a2903002107200341086a2903002108200329032021092003290310210a2003290300210b20054190036a41086a220c42003703002005420037039003418fcdc200ad4280808080f00084220d100c220e290000210f200541a0036a41086a2210200e41086a2900003703002005200f3703a003200e1023200c2010290300370300200520052903a0033703900341ccc5c000ad4280808080900284100c220e290000210f200e2900082111200e1023200541f0026a41086a2212200c29030037030020052011370388032005200f3703800320052005290390033703f002200541386a200541f0026a108802024002400240024002400240024002400240024002400240024002400240024002402005280238417d710d004110210c0c010b200c42003703002005420037039003200d100c220e290000210f2010200e41086a2900003703002005200f3703a003200e1023200c2010290300370300200520052903a0033703900341b8dbc100ad4280808080900184100c2210290000210f20102900082111201010232012200c29030037030020052011370388032005200f3703800320052005290390033703f002200541e0006a200541f0026a10ba01024020052903604202510d004110210c200541e0006a41106a2802002004470d010b4200210f20054190036a41086a220c42003703002005420037039003418fcdc200ad4280808080f00084100c22102900002111200541a0036a41086a220e201041086a290000370300200520113703a00320101023200c200e290300370300200520052903a0033703900341b0e4c100ad4280808080b00184100c221029000021112010290008210d20101023200541f0026a41086a200c2903003703002005200d37038803200520113703800320052005290390033703f002200541203602e4022005200541f0026a3602e002200541a0036a200541f0026aad428080808080048422131010108b010240024020052802a003220c0d000c010b20052802a4032110024002400240200e280200220e4110490d00200e417071220e4110460d00200e4120470d010b200541003602b802200542013703b0022005410a360294032005200541e0026a360290032005200541b0026a3602a002200541f4006a41013602002005420137026420054180c5c600360260200520054190036a360270200541a0026a4184a5c200200541e0006a10311a20053502b80242208620053502b00284100a024020052802b402450d0020052802b00210230b4200210f0c010b200c41086a290000210d200c2900002114200c41286a2900002115200c41186a2900002111200c2900202116200c29001021174201210f0b2010450d00200c10230b024002400240200f500d0041031021220c450d0a200c417f20092016852006201585844200522009201654200620155420062015511b22121b3a0002200c417f200a201785200720118584420052200a201754200720115420072011511b1b220e3a0001200c417f200b2014852008200d8584420052200b2014542008200d542008200d511b1b22103a0000201041014b0d010240024020100e020001000b200e41014b0d020240200e0e020001000b200c10234111210c20120d010c040b200c10230b20054190036a41086a220c42003703002005420037039003418fcdc200ad4280808080f00084100c2210290000210f200541a0036a41086a220e201041086a2900003703002005200f3703a00320101023200c200e290300370300200520052903a0033703900341a8c5c000ad4280808080a00284100c2210290000210f2010290008211120101023200541f0026a41086a200c29030037030020052011370388032005200f3703800320052005290390033703f002200541e0006a20131010108b01024002402005280260220c450d00200528026421102005200541e0006a41086a2802003602b4022005200c3602b002200541306a200541b0026a108801024002402005280230450d0041012112419ca8c700210e0c010b2005280234210e410021120b02402010450d00200c10230b4112210c2012450d010c040b4100210e0b20054190036a41086a221042003703002005420037039003418fcdc200ad4280808080f00084220d100c220c290000210f200541a0036a41086a2212200c41086a2900003703002005200f3703a003200c102320102012290300370300200520052903a0033703900341e4d8c100ad4280808080e00184100c220c290000210f200c2900082111200c1023200541f0026a41086a2218201029030037030020052011370388032005200f3703800320052005290390033703f002200541286a200541f0026a412010cd014113210c200041086a280200200e200528022c410020052802281b22042004200e4b1b220e470d02201042003703002005420037039003200d100c220c290000210f2012200c41086a2900003703002005200f3703a003200c102320102012290300370300200520052903a0033703900341a8c5c000ad4280808080a00284100c220c290000210f200c2900082111200c10232018201029030037030020052011370388032005200f3703800320052005290390033703f002200541e0006a200541f0026a412010890220052802602210450d0120052005290264220f37024420052010360240200028020021192000280204211a0240200e0d00411c210c0c060b4114210c200f422088a720192f010022004d0d05200541e8006a2212201020004105746a220c41096a290000370300200541f0006a2210200c41116a290000370300200541f7006a2200200c41186a2900003700002005200c290001370360200c2d0000210c412010212204450d072004200c3a000020042005290360370001200441096a2012290300370000200441116a2010290300370000200441186a200029000037000020054281808080103702f402200520043602f00241012112411c210c200e4101460d04200528024820192f010222104d0d03200541b0026a41086a221b200528024020104105746a221041096a290000370300200541b0026a41106a221c201041116a290000370300200541b0026a41176a221d201041186a290000370000200520102900013703b002201941046a2118200e410174417c6a210e20102d0000211e4121210041022112410121100340200541e0006a41176a221f201d290000370000200541e0006a41106a2220201c290300370300200541e0006a41086a2221201b290300370300200520052903b00237036002402012417f6a2010470d00200541f0026a20104101109a0120052802f00221040b200420006a2210417f6a201e3a000020102005290360370000201041086a2021290300370000201041106a2020290300370000201041176a201f290000370000200520123602f802200e450d05200528024820182f010022104d0d04201b200528024020104105746a221041096a290000370300201c201041116a290000370300201d201041186a290000370000200520102900013703b002200e417e6a210e201841026a2118200041206a2100201241016a211220102d0000211e20052802f40221100c000b0b200c10234111210c0c010b4112210c0b2001108302200041046a28020041808080807872418080808078460d0e200028020010230c0e0b4114210c0b0240201a41808080807872418080808078460d00201910230b20052802f40241ffffff3f71211b0c010b4100211b410121040240201a41808080807872418080808078460d00201910230b410021120b0240200c411c460d0041012103201b450d0a0c090b20054190036a41086a220c42003703002005420037039003418fcdc200ad4280808080f00084100c2210290000210f200541a0036a41086a220e201041086a2900003703002005200f3703a00320101023200c200e290300370300200520052903a0033703900341bac5c000ad4280808080a00284100c2210290000210f2010290008211120101023200541f0026a41086a200c29030037030020052011370388032005200f3703800320052005290390033703f002200541e0006a200541f0026a41201089022005280260221e450d0520052005290264220f3702542005201e360250200541e0006a200141c00110a1051a200541b0026a200541e0006a200541d0006a200541c0006a10a302200fa7212120052d00b0024101460d0320052802b4022222200541b0026a410c6a2802002223412c6c22246a2125200541b0026a41086a2226280200212702402024450d00200541f0026a41086a2119418fcdc200ad4280808080f00084210f41bbacc300ad4280808080a00184210620222118024002400340200f100c220c2900002111200541a0036a41086a221c200c41086a290000370300200520113703a003200c10232006100c220c2900082111200c2800042128200c2800002129200c102341201021220c450d04200c2018410c6a220e290000370000200c41186a200e41186a222a290000370000200c41106a200e41106a222b290000370000200c41086a200e41086a222c2900003700002005200cad4280808080800484100d22102900003703f00220101023200541003a00702005200c41206a36026c2005200c360268200520193602642005200541f0026a360260200541b0026a200541e0006a1065200c102320052802b802221f41206a2210417f4c0d0b20052802b00221200240024002402010450d0020101021220c450d072010410f4d0d01201021000c020b4110210041101021220c0d010c080b201041017422004110200041104b1b22004100480d06024020102000470d00201021000c010b200c201020001025220c450d070b200c20052903a003370000200c41086a201c2903003700000240024020004170714110460d002000211d0c010b2000410174221d4120201d41204b1b221d4100480d062000201d460d00200c2000201d1025220c450d070b200c2011370018200c2028360014200c20293600100240201d41606a201f4f0d00201f415f4b0d06201d41017422002010200020104b1b22004100480d06201d2000460d00200c201d20001025220c450d070b200c41206a2020201f10a1051a024020052802b402450d00202010230b200541206a200c2010419ca8c70041004100108c0120052802202120200c1023200f100c220c2900002111201c200c41086a290000370300200520113703a003200c102341e2c4c000ad4280808080a00184100c220c2900082111200c2800042128200c2800002129200c102341201021220c450d04200c200e290000370000200c41186a202a290000370000200c41106a202b290000370000200c41086a202c2900003700002005200cad4280808080800484100d22102900003703f00220101023200541003a00702005200c41206a36026c2005200c360268200520193602642005200541f0026a360260200541b0026a200541e0006a1065200c102320052802b802221d41206a2210417f4c0d0b20052802b002211f0240024002402010450d0020101021220c450d072010410f4d0d01201021000c020b4110210041101021220c450d080c010b201041017422004110200041104b1b22004100480d06024020102000470d00201021000c010b200c201020001025220c450d070b200c20052903a003370000200c41086a201c2903003700000240024020004170714110460d002000211c0c010b2000410174221c4120201c41204b1b221c4100480d062000201c460d00200c2000201c1025220c450d070b200c2011370018200c2028360014200c20293600100240201c41606a201d4f0d00201d415f4b0d06201c41017422002010200020104b1b22004100480d06201c2000460d00200c201c20001025220c450d070b200c41206a201f201d10a1051a024020052802b402450d00201f10230b200541e0006a200c201010a402024020052d00702210410246221c0d002005280260211a2005280264212d2005290368210d0b200c10230240024002400240024002402020410146220c20104102472200460d00200c450d010240201841086a2802004101470d0002402018280200220c200e460d00200c200e412010a3050d010b200c2f012041ffff03460d030b4119210c20104102460d08202d41ffffff3f710d070c080b4116210c20104102460d07202d41ffffff3f71450d070c060b02402000450d0002402018280208220c450d002018280200221c200c41226c6a211f200d422088a72120200da7410574211d03402005201c220e3602b002200e41226a211c201d2110201a210c0340024020100d004117210c0c080b0240200e200c460d00200c200e412010a3052100201041606a2110200c41206a210c20000d010b0b200541e0006a200541b0026a10c8010240200528026c220c450d00200528026821100240200528027041ffffffff0371450d00200c10230b201020204d0d004118210c0c070b201c201f470d000b0b202d41ffffff3f71450d030c020b418189c20041fd0041808ac200104f000b201c0d01202d41ffffff3f71450d010b201a10230b2018412c6a22182025470d010c040b0b202d41ffffff3f71450d010b201a10230b02402023450d002023412c6c21102022210303400240200341046a280200220e450d00200e41226c450d00200328020010230b2003412c6a2103201041546a22100d000b0b2027450d052027412c6c450d05202210230c050b200541003602f802200542043703f002200541f0026a41002024412c6d10a60120052802f002211020052802f802210c200520223602682005202536026c20052027ad4220862022ad843703602005200541a0036a3602702026200c3602002005200541f0026a41086a3602b40220052010200c412c6c6a3602b002200541e0006a200541b0026a10a50220052802f4022119200541e0006a2004201220052802f002222820052802f802221a10d801200541a0026a41086a200541e0006a41086a280200360200200520052903603703a00202400240200528026c450d00411a210c20052802a802212020052802a002211f0c010b02400240024020052802a002221f450d00024020052802a402220e450d00200e210c201f2110034020102802c8052110200c417f6a220c0d000b201f210c0340200c200c2f01064102746a41c8056a280200210c200e417f6a220e0d000b200541e0006a210e0c020b200541e0006a210e201f2110201f210c0c010b4100211020054100360264200541e0006a210e0c010b2005200c360264200541ec006a200c2f0106360200200541003602602005200541a0026a360268200541a0026a210c0b200541f0026a41086a200e41086a290200220f3703002005200e29020022113703f00220052802a8022120200541ec006a4100360200200541e0006a41186a200f3703002005200c36026820052010360264200541003602602005201137037020052020360280010240024020200d00427f2107420021084200210d420021094200210a427f21060c010b20052020417f6a36028001200541e0006a410020101b2218280200210e2018280208211c0240024002400240201828020c22002018280204220c2f01064f0d00200c21100c010b0340200c2802002210450d02200e41016a210e200c2f010421002010210c200020102f01064f0d000b0b2000ad422086201cad84210f0c010b201cad210f410021100b200f422088a7221c41016a2100200fa7211d02400240200e0d002010210c0c010b201020004102746a41c8056a280200210c41002100200e417f6a220e450d000340200c2802c805210c200e417f6a220e0d000b0b2018200036020c2018201d3602082018200c360204201841003602002010201c4105746a41e8026a210c427f2107427f2106420021094200210a420021084200210d03402005200c41086a29030022114200200c290300220f420010a605200541106a200f4200200f420010a605427f200d427f200541106a41086a290300220b2005290300221520157c7c2215201120052903082217842017844200522015200b5472220c1b7c2008427f2005290310200c1b7c220b200854220cad7c2208200c2008200d542008200d511b220c1b210d427f200b200c1b210820112006200f200754201120065420112006511b220c1b2106200f2007200c1b21072011200a7c200f20097c2209200f54ad7c210a200528028001220c450d012005200c417f6a36028001200541e0006a410020052802641b2218280200210e2018280208211c024002400240201828020c22002018280204220c2f01064f0d00200c21100c010b02400340200c2802002210450d01200e41016a210e200c2f010421002010210c200020102f0106490d020c000b0b201cad210f410021100c010b2000ad422086201cad84210f0b200f422088a7221c41016a2100200fa7211d02400240200e0d002010210c0c010b201020004102746a41c8056a280200210c41002100200e417f6a220e450d000340200c2802c805210c200e417f6a220e0d000b0b2018200036020c2018201d3602082018200c360204201841003602002010201c4105746a41e8026a210c0c000b0b200541d8026a200d370300200541b0026a41186a200a370300200520083703d002200520093703c002200520073703b002200520063703b80202400240200541b0026a2003460d00200541b0026a2003413010a3050d010b02400240201f0d004100211f41002103410021200c010b0240024020052802a402220c0d00201f21030c010b200c2103201f2110034020102802c80521102003417f6a22030d000b201f21030340200320032f01064102746a41c8056a2802002103200c417f6a220c0d000b2010211f0b20032f0106210c0b200541fc006a200c360200200541e0006a41186a4100360200200541f4006a2003360200200520203602800120054100360270200542003703682005201f360264200541003602602005200541a0036a36028401200541e0026a200541e0006a10d90120052802e002211d20052802e402211f20052802e802211c20054190036a41086a220342003703002005420037039003418fcdc200ad4280808080f00084100c220c290000210f200541a0036a41086a2210200c41086a2900003703002005200f3703a003200c102320032010290300370300200520052903a0033703900341d5cfc000ad4280808080d00184100c220c290000210f200c2900082111200c1023200541f0026a41086a200329030037030020052011370388032005200f3703800320052005290390033703f00220054100360268200542013703602012200541e0006a106102402012450d002012410574211241002005280268220c6b210e20052802642100200421030340024002402000200e6a4120490d00200528026021100c010b200c41206a2210200c490d06200041017422012010200120104b1b22014100480d060240024020000d00024020010d00410121100c020b200110212210450d090c010b2005280260211020002001460d0020102000200110252210450d080b2005200136026420052010360260200121000b2010200c6a22102003290000370000201041186a200341186a290000370000201041106a200341106a290000370000201041086a200341086a2900003700002005200c41206a220c360268200e41606a210e200341206a2103201241606a22120d000b0b201c200541e0006a10610240201c450d00201d201c41d0006c6a2118201d211203400240024020052802642210200528026822036b4120490d002005280260210c0c010b200341206a220c2003490d062010410174220e200c200e200c4b1b220e4100480d060240024020100d000240200e0d004101210c0c020b200e1021220c450d090c010b2005280260210c2010200e460d00200c2010200e1025220c450d080b2005200e3602642005200c3602600b200c20036a220c2012290000370000200c41186a201241186a290000370000200c41106a201241106a290000370000200c41086a201241086a2900003700002005200341206a3602682005201241206a3602a003200541a0036a200541e0006a10db012005201241306a3602a003200541a0036a200541e0006a10db01201228024021032012280248220c200541e0006a10610240200c450d00200c41306c21000340024002402005280264220e2005280268220c6b4120490d00200528026021100c010b200c41206a2210200c490d08200e41017422012010200120104b1b22014100480d0802400240200e0d00024020010d00410121100c020b200110212210450d0b0c010b20052802602110200e2001460d002010200e200110252210450d0a0b20052001360264200520103602600b2010200c6a2210200341106a290000370000201041186a200341286a290000370000201041106a200341206a290000370000201041086a200341186a2900003700002005200c41206a360268200520033602a003200541a0036a200541e0006a10db01200341306a2103200041506a22000d000b0b2018201241d0006a2212470d000b0b024002400240024002400240200241ff0171220341024b0d0020030e03010203010b20052802682103200528026421102005280260210c0c040b4100210e0c020b4101210e0c010b4102210e0b2005200e3a00a003024002402005280264221020052802682203460d002005280260210c0c010b200341016a220c2003490d0520034101742210200c2010200c4b1b22104100480d050240024020030d0041002103024020100d004101210c0c020b20101021220c450d080c010b2005280260210c20032010460d00200c200320101025220c450d070b200520103602642005200c3602600b200c20036a200e3a00002005200341016a22033602680b20132003ad422086200cad84100e02402010450d00200c10230b0240201b450d00200410230b0240201c450d00201c41d0006c210c201d41c4006a21030340024020032802002210450d00201041306c450d002003417c6a28020010230b200341d0006a2103200c41b07f6a220c0d000b0b0240201f450d00201f41d0006c450d00201d10230b200541e0006a41286a2210200541b0026a41286a290300370300200541e0006a41206a220e200541b0026a41206a290300370300200541e0006a41186a2200200541b0026a41186a290300370300200541e0006a41106a2201200541b0026a41106a290300370300200541e0006a41086a2212200541b0026a41086a290300370300200520052903b00237036020054190036a41086a220342003703002005420037039003418fcdc200ad4280808080f00084100c220c290000210f200541a0036a41086a2204200c41086a2900003703002005200f3703a003200c102320032004290300370300200520052903a0033703900341b0e4c100ad4280808080b00184100c220c290000210f200c2900082111200c1023200541f0026a41086a200329030037030020052011370388032005200f3703800320052005290390033703f002413010212203450d0220032005290360370000200341286a2010290300370000200341206a200e290300370000200341186a2000290300370000200341106a2001290300370000200341086a201229030037000020132003ad4280808080800684100e200310230240201a450d00201a412c6c210c2028210303400240200341046a2802002210450d00201041306c450d00200328020010230b2003412c6a2103200c41546a220c0d000b0b02402019450d002019412c6c450d00202810230b0240202141ffffff3f71450d00201e10230b0240200528024441ffffff3f71450d00200528024010230b411c210c0c0c0b411b210c0b02400240201f450d000240024020052802a40222100d00201f21030c010b20102103201f210e0340200e2802c805210e2003417f6a22030d000b201f21030340200320032f01064102746a41c8056a28020021032010417f6a22100d000b200e211f0b200541fc006a20032f0106360200200541f8006a4100360200200541f4006a200336020020054100360270200542003703682005201f360264200541003602600c010b41002120200541f4006a4100360200200541003602640b2005202036028001200541e0006a10a6020240201a450d00201a412c6c21102028210303400240200341046a280200220e450d00200e41306c450d00200328020010230b2003412c6a2103201041546a22100d000b0b2019450d042019412c6c450d04202810230c040b1033000b102c000b102a000b4115210c0b41002103202141ffffff3f71450d01201e1023201b0d030c040b4112210c410121030b201b0d010c020b1032000b200410230b0240200528024441ffffff3f71450d00200528024010230b2003450d0020011083020b200541b0036a2400200c0bce0203027f017e037f23004180026b22012400200141086a2000109702200141e0006a200128020822002001280210220210980220012903602103200141b8016a200141e8006a41c40010a1051a200141b4016a41026a2204200141af016a2d00003a0000200120012f00ad013b01b4010240024020034201510d0041002105200141186a410041c40010a0051a0c010b20012d00ac012105200141186a200141b8016a41c40010a1051a200141146a41026a20042d00003a0000200120012f01b4013b01140b200141e8006a200141186a41c40010a1052104200141af016a200141166a2d00003a000020014201370360200141002005411874220541808080786a2206200620054b1b4118763a00ac01200120012f01143b00ad01200120023602bc01200120003602b8012004200141b8016a1098030240200128020c450d00200010230b20014180026a24000b9b0b06047f027e027f067e037f067e230041d0026b22042400200328020021052004200110970220044180016a20042802002206200428020822071098022004290380012108420021092004420037038001200441c8016a280200210a20042d00cc01210b02400240200842015122030d00200441106a41306a4200370300200441106a41286a4200370300200441106a41206a4200370300200441106a41186a4200370300200441206a4200370300200441186a4200370300200442003703104200210c4200210d4200210e4200210f0c010b200441b8016a290300211020044180016a41306a290300211120044180016a41206a290300210c20044180016a41186a2903002109200441c0016a290300210f200429039001210e200429038801210d200441106a41206a20044180016a41286a290300370300200441106a41286a2011370300200441106a41306a2010370300200441206a20093703002004200c3703282004200d3703102004200e3703180b0240024002400240427f200d20097c22092009200d542212200e200c7c2012ad7c2209200e542009200e511b22121b427f200920121b8450450d0041a4acc500ad4280808080b00184210e41838a1c21120c010b200d200229030022107c2209200d542212200e200241086a29030022117c2012ad7c220d200e54200d200e511b4101470d0141f4acc500ad4280808080800184210e41838a0821120b200e4280807c832108200e42088842ff0183210c200ea72103410121020c010b200420093703102004200d370318200441c8006a41186a200441206a220241086a290300220e370300200441c8006a41206a2212200241106a290300370300200441f0006a2213200241186a290300370300200441f8006a2214200241206a2903003703002004200d3703502004200937034820042002290300220c37035802400240427f2009200c7c220c200c2009542202200d200e7c2002ad7c220e200d54200e200d511b22021b220c4280c8afa025544100427f200e20021b220e501b0d00200441c8006a41106a290300210e2014290300210c20132903002115201229030021162004290350211720042903482118420121192004290360211a0c010b420021190240200c200e84500d00200c200e10eb01200441a0026a200e37030020044198026a200c370300200441e8016a41086a41013a0000200441f1016a2005290000370000200441f9016a200541086a29000037000020044181026a200541106a29000037000020044189026a200541186a290000370000200441023a00e801200441e8016a10e0010b0b200441a8016a2016370300200441b0016a201537030020044190016a2017370300200441b8016a200c37030020044198016a200e3703002004201a3703a0012004200f3703c00120042018370388014201210c410021022004200b4100200842015122121b3a00cc012004200a410020121b3602c801200420194201512212ad37038001024020120d002007ad4220862006ad8410114200210c420021080c010b200420073602ec01200420063602e80120044188016a200441e8016a109803420021080b02402004280204450d00200610230b024002402002450d0020002012360204200041086a200c4208862003ad42ff018384200884370200410121010c010b024002400240200341ff017122030d00200c4200510d0041032102200441e8016a21030c010b2003450d01200c4200520d014104210220044180016a21030b200341046a20023a0000200341003a0000200341056a20012900003700002003410d6a200141086a290000370000200341156a200141106a2900003700002003411d6a200141186a290000370000200310e0010b200041286a2011370300200041206a2010370300200041186a200d370300200041106a2009370300200041086a4200370300410021010b20002001360200200441d0026a24000bf6c8010e077f017e057f017e0b7f017e037f017e017f017e017f017e017f017e230041d0016b220424002004200336020c20044100360218200442043703102001280204210520012802002106024002400240024002400240024002400240024020012802082203450d0020034103742107200441b0016a41106a2108200441b0016a41176a21092006210a03402002280208200a290200220ba722034d0d07200441b0016a41086a220c200228020020034105746a220341096a2900003703002008200341116a2900003703002009200341186a290000370000200420032900013703b00120032d0000210d412210212203450d02200428020c220e280208200b422088a741ffff0371220f4d0d06200441c0006a41106a2210200e280200200f4105746a220e41116a290000370300200441c0006a41176a220f200e41186a290000370000200441c0006a41086a200e41096a2900002211370300200e290001210b2003200e2d00003a00002003200b370001200341096a2011370000200341ffff033b0120200341116a2010290300370000200341186a200f2900003700002004200b37034020044190016a41176a220f200929000037000020044190016a41106a2210200829030037030020044190016a41086a2212200c290300370300200420042903b0013703900102402004280218220e2004280214470d00200441106a200e410110a6012004280218210e0b200a41086a210a2004280210200e412c6c6a220e200d3a000c200e428180808010370204200e2003360200200e410d6a200429039001370000200e41156a2012290300370000200e411d6a2010290300370000200e41246a200f2900003700002004200428021841016a360218200741786a22070d000b0b0240200541ffffffff0171450d00200610230b200128020c2113200141106a2802002114200141146a2802002203450d0320132003410c6c6a211520044190016a41106a210720044190016a41176a210c2013210a034002400240200a41066a2f0100220841ffff03460d002002280208200a28020022034b0d0120004181043b01000c050b200041013b01000c040b200a41086a2f01002109200a41046a2f0100210e20044190016a41086a2210200228020020034105746a220341096a2900003703002007200341116a290000370300200c200341186a290000370000200420032900013703900120032d0000211241c40010212203450d01200428020c220d280208220f200e4d0d02200441b0016a41086a2206200d280200220d200e4105746a220e41096a290000370300200441b0016a41106a2205200e41116a290000370300200441b0016a41176a2216200e41186a2900003700002004200e2900013703b0010240200f20094d0d00200e2d0000210f200441c0006a41086a2217200d20094105746a220e41096a290000370300200441c0006a41106a2209200e41116a290000370300200441c0006a41176a220d200e41186a290000370000200e290001210b200e2d0000210e2003200f3a0000200320042903b001370001200341096a2006290300370000200341116a2005290300370000200341186a20162900003700002003200e3a0022200320083b01202004200b370340200320042903403700232003412b6a2017290300370000200341336a20092903003700002003413a6a200d29000037000020032008417f733b0142200441206a41176a2208200c290000370000200441206a41106a22092007290300370300200441206a41086a220d2010290300370300200420042903900137032002402004280218220e2004280214470d00200441106a200e410110a6012004280218210e0b2004280210200e412c6c6a220e20123a000c200e428280808020370204200e2003360200200e410d6a2004290320370000200e41156a200d290300370000200e411d6a2009290300370000200e41246a20082900003700002004200428021841016a360218200a410c6a220a2015470d010c050b0b20004181043b0100200310230c020b102a000b20004181043b0100200310230b4100210641012102200441106a210802402014450d002014410c6c450d00201310230b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f4101211041012112410121140c040b02402014450d002014410c6c450d00201310230b200128021821172001411c6a28020021150240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141206a2802002203450d00201720034104746a2116200441c0006a41086a210e200441c0006a41106a210a200441c0006a41176a2108201721090240024003402009410c6a2f0100210c2009280200210d2004200941046a290200220b3703800102400240200428020c2203280208200ba741ffff037122074d0d00200e200328020020074105746a220341096a290000370300200a200341116a2900003703002008200341186a2900003700002004200329000137034020032d00002107412210212203450d06200320073a0000200320042903403700012003200b421088a722123b0120200341096a200e290300370000200341116a200a290300370000200341186a20082900003700002004428180808010370294012004200336029001200428020c220f28020820042f01840122104b0d0141000d004122450d00200310230b20004181043b01000c3a0b20042f0186012107200441b0016a41176a2206200f28020020104105746a220341186a290000370000200441b0016a41106a2210200341116a290000370300200441b0016a41086a220f200341096a290000220b3703002004200329000122113703b00120032d0000210520082006290000370000200a2010290300370300200e200b3703002004201137034020044190016a4101410110af01200428029001220320053a0022200341236a20042903403700002003412b6a200e290300370000200341336a200a2903003700002003413a6a2008290000370000200341c2006a20073b01002004410236022820042004280294012210360224200420033602200240417f2012411074221220074110746a220720072012491b411076220741ffff03470d00200041013b01000c030b200428020c2212280208200c4d0d012007417f732106200e2012280200200c4105746a220741096a290000370300200a200741116a2900003703002008200741186a290000370000200420072900013703404102210c20072d00002107024020104102470d00200441206a4102410110af01200428022021032004280228210c0b2003200c41226c6a220320073a000020032004290340370001200320063b0120200341096a200e290300370000200341116a200a290300370000200341186a20082900003700002004200428022841016a36022802402002280208200d4d0d0020022802002103200f200441206a41086a280200360200200e2003200d4105746a220341096a290000370300200a200341116a2900003703002008200341186a290000370000200420042903203703b0012004200329000137034020032d000021070240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b001370200200320073a000c200341086a200f2802003602002003410d6a2004290340370000200341156a200e2903003700002003411d6a200a290300370000200341246a20082900003700002004200428021841016a360218200941106a22092016470d010c040b0b20004181043b0100200428022421100c010b20004181043b01000b2010450d36201041226c450d36200428022010230c360b0240201541ffffffff0071450d00201710230b20012802242118200141286a280200211902402001412c6a2802002203450d002018200341146c6a211a2004418a016a211b20044180016a41086a211c200441c0006a41106a2107200441c0006a41176a210c20182115024002400240034020152f01102114201528020021132015290104210b201c2015410c6a2801003602002004200b3703800102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f018201210e200441c0006a41086a220d2003280200200a4105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d0000210341221021220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200d290300370000200f41116a2007290300370000200f41186a200c2900003700002004428180808010370294012004200f360290010240200428020c220328020820042f018401220a4b0d00410221034101210a0c390b201541146a2115417f200e411074220e20042f01860122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201b21080340200c201629000037000020072005290300370300200d2012290300370300200420042903b0013703400240200e417f6a2003470d0020044190016a2003410110af01200428029001210f0b200f200a6a220941606a20173a0000200941616a22032004290340370000200c290000210b20072903002111200d290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e360298010240200a41e400470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d0000211720042802940121030c000b0b410221030c380b200428029401210a20034103470d362004200e3602282004200a3602242004200f3602200240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200d200328020020144105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d000021090240200a200e470d00200441206a200e410110af012004280220210f2004280228210e0b200f200e41226c6a220320093a000020032004290340370001200c290000210b20072903002111200d290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b3700002004200428022841016a360228200228020820134d0d03200228020021032012200441206a41086a280200360200200d200320134105746a220341096a2900003703002007200341116a290000370300200c200341186a290000370000200420042903203703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200d2903003700002003411d6a2007290300370000200341246a200c2900003700002004200428021841016a3602182015201a470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b01002004280224210a0b200a450d34200a41226c450d34200428022010230c340b02402019450d00201941146c450d00201810230b20012802302118200141346a28020021190240200141386a2802002203450d002018200341186c6a211a2004419a016a211b20044190016a41086a211c200441c0006a41106a2107200441c0006a41176a210c20182115024002400240034020152f01142114201528020021132015290104210b201c2015410c6a2901003703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220d2003280200200a4105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d0000210341221021220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200d290300370000200f41116a2007290300370000200f41186a200c29000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c350b201541186a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201b21080340200c201629000037000020072005290300370300200d2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a22032004290340370000200c290000210b20072903002111200d290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a418601470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c340b2004280224210a20034103470d322004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200d200328020020144105746a220341096a2900003703002007200341116a290000370300200c200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a000020032004290340370001200c290000210b20072903002111200d290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200d200320134105746a220341096a2900003703002007200341116a290000370300200c200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200d2903003700002003411d6a2007290300370000200341246a200c2900003700002004200428021841016a3602182015201a470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d30200a41226c450d3020042802800110230c300b02402019450d00201941186c450d00201810230b200128023c2119200141c0006a280200211e0240200141c4006a2802002203450d0020192003411c6c6a21182004419a016a211a20044190016a41106a211c20044190016a41086a211b200441c0006a41176a210720192115024002400240034020152f01182114201528020021132015410c6a29010021112015290104210b201c201541146a280100360200201b20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221021220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c310b2015411c6a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201a2108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41a801470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c300b2004280224210a20034103470d2e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152018470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d2c200a41226c450d2c20042802800110230c2c0b0240201e450d00201e411c6c450d00201910230b20012802482119200141cc006a280200211e0240200141d0006a2802002203450d00201920034105746a21182004419a016a211a20044190016a41106a211c20044190016a41086a211b200441c0006a41176a210720192115024002400240034020152f011c2114201528020021132015410c6a29010021112015290104210b201c201541146a290100370300201b20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221021220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c2d0b201541206a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e201a2108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41ca01470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c2c0b2004280224210a20034103470d2a2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152018470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d28200a41226c450d2820042802800110230c280b0240201e41ffffff3f71450d00201910230b2001280254211f200141d8006a280200211e0240200141dc006a2802002203450d00201f200341246c6a21192004419a016a211820044190016a41186a211c20044190016a41106a211b20044190016a41086a211a200441c0006a41176a2107201f2115024002400240034020152f01202114201528020021132015410c6a2901002111201541146a290100211d2015290104210b201c2015411c6a280100360200201b201d370300201a20113703002004200b3703900102400240200428020c2203280208200ba741ffff0371220a4d0d0020042f019201210e200441c0006a41086a220c2003280200200a4105746a220341096a290000370300200441c0006a41106a220d200341116a2900003703002007200341186a2900003700002004200329000137034020032d0000210341221021220f450d07200f20033a0000200f2004290340370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f019401220a4b0d00410221034101210a0c290b201541246a2115417f200e411074220e20042f01960122064110746a22082008200e491b4110762110200441b0016a41086a22122003280200200a4105746a220341096a290000370300200441b0016a41106a2205200341116a290000370300200441b0016a41176a2216200341186a290000370000200420032900013703b00120032d000021174101210341c200210a4102210e20182108034020072016290000370000200d2005290300370300200c2012290300370300200420042903b0013703400240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903403700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41ec01470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a290000370000200420032900013703b001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c280b2004280224210a20034103470d262004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a2900003700002004200329000137034020032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903403700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a29000037000020042004290380013703b0012004200329000137034020032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a220320042903b0013702002003200e3a000c200341086a20122802003602002003410d6a2004290340370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152019470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d24200a41226c450d2420042802800110230c240b0240201e450d00201e41246c450d00201f10230b2001280260211f200141e4006a280200211e0240200141e8006a2802002203450d00201f200341286c6a2119200441ca006a2118200441c0006a41186a211c200441c0006a41106a211b200441c0006a41086a211a200441b0016a41176a2107201f2115024002400240034020152f01242114201528020021132015410c6a2901002111201541146a290100211d2015290104210b201c2015411c6a290100370300201b201d370300201a20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c250b201541286a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20182108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a418e02470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c240b2004280224210a20034103470d222004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152019470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d20200a41226c450d2020042802800110230c200b0240201e450d00201e41286c450d00201f10230b200128026c211f200141f0006a28020021200240200141f4006a2802002203450d00201f2003412c6c6a211e200441ca006a2119200441e0006a211c200441c0006a41186a211b200441c0006a41106a211a200441c0006a41086a2118200441b0016a41176a2107201f2115024002400240034020152f01282114201528020021132015410c6a2901002111201541146a290100211d2015411c6a29010021212015290104210b201c201541246a280100360200201b2021370300201a201d370300201820113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c210b2015412c6a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20192108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41b002470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c200b2004280224210a20034103470d1e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201e470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d1c200a41226c450d1c20042802800110230c1c0b02402020450d002020412c6c450d00201f10230b20012802782120200141fc006a280200211f024020014180016a2802002203450d002020200341306c6a211e200441ca006a2119200441e0006a211c200441c0006a41186a211b200441c0006a41106a211a200441c0006a41086a2118200441b0016a41176a210720202115024002400240034020152f012c2114201528020021132015410c6a2901002111201541146a290100211d2015411c6a29010021212015290104210b201c201541246a290100370300201b2021370300201a201d370300201820113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c1d0b201541306a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20192108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41d202470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c1c0b2004280224210a20034103470d1a2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201e470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d18200a41226c450d1820042802800110230c180b0240201f450d00201f41306c450d00202010230b200128028401212020014188016a280200212202402001418c016a2802002203450d002020200341346c6a211f200441ca006a211e200441e8006a211c200441e0006a211b200441c0006a41186a211a200441c0006a41106a2118200441c0006a41086a2119200441b0016a41176a210720202115024002400240034020152f01302114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015290104210b201c2015412c6a280100360200201b2023370300201a20213703002018201d370300201920113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c190b201541346a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201e2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41f402470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c180b2004280224210a20034103470d162004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201f470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d14200a41226c450d1420042802800110230c140b02402022450d00202241346c450d00202010230b200128029001212020014194016a2802002122024020014198016a2802002203450d002020200341386c6a211f200441ca006a211e200441e8006a211c200441e0006a211b200441c0006a41186a211a200441c0006a41106a2118200441c0006a41086a2119200441b0016a41176a210720202115024002400240034020152f01342114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015290104210b201c2015412c6a290100370300201b2023370300201a20213703002018201d370300201920113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c150b201541386a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201e2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a419603470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c140b2004280224210a20034103470d122004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a3602182015201f470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d10200a41226c450d1020042802800110230c100b02402022450d00202241386c450d00202010230b200128029c012124200141a0016a28020021220240200141a4016a2802002203450d0020242003413c6c6a2120200441ca006a211f200441f0006a211c200441e8006a211b200441e0006a211a200441c0006a41186a2118200441c0006a41106a2119200441c0006a41086a211e200441b0016a41176a210720242115024002400240034020152f01382114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015412c6a29010021252015290104210b201c201541346a280100360200201b2025370300201a2023370300201820213703002019201d370300201e20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c110b2015413c6a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201f2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41b803470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c100b2004280224210a20034103470d0e2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152020470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d0c200a41226c450d0c20042802800110230c0c0b02402022450d002022413c6c450d00202410230b20012802a8012122200141ac016a28020021240240200141b0016a2802002203450d00202220034106746a2120200441ca006a211f200441f0006a211c200441e8006a211b200441e0006a211a200441c0006a41186a2118200441c0006a41106a2119200441c0006a41086a211e200441b0016a41176a210720222115024002400240034020152f013c2114201528020021132015410c6a2901002111201541146a290100211d2015411c6a2901002121201541246a29010021232015412c6a29010021252015290104210b201c201541346a290100370300201b2025370300201a2023370300201820213703002019201d370300201e20113703002004200b37034002400240200428020c2203280208200ba741ffff0371220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d07200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c0e0b201541c0006a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e201f2108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41da03470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c0d0b2004280224210a20034103470d0b2004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152020470d010c050b0b200041013b01000c020b20004181043b01000c010b20004181043b0100200428028401210a0b200a450d09200a41226c450d0920042802800110230c090b0240202441ffffff1f71450d00202210230b20012802b4012126200141b8016a2802002124200141bc016a2802002203450d022026200341c4006c6a2122200441ca006a2120200441f8006a211c200441f0006a211b200441e8006a211a200441e0006a2118200441c0006a41186a2119200441c0006a41106a211e200441c0006a41086a211f200441b0016a41176a21072026211502400240034020152f01402114201528020021132015410c6a290100210b201541146a29010021112015411c6a290100211d201541246a29010021212015412c6a2901002123201541346a290100212520152901042127201c2015413c6a280100360200201b2025370300201a2023370300201820213703002019201d370300201e2011370300201f200b3703002004202737034002400240200428020c220328020820042f0140220a4d0d0020042f0142210e200441b0016a41086a220c2003280200200a4105746a220341096a290000370300200441b0016a41106a220d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d0000210341221021220f450d05200f20033a0000200f20042903b001370001200f200e3b0120200f41096a200c290300370000200f41116a200d290300370000200f41186a200729000037000020044281808080103702242004200f3602200240200428020c220328020820042f0144220a4b0d00410221034101210a0c090b201541c4006a2115417f200e411074220e20042f014622064110746a22082008200e491b411076211020044190016a41086a22122003280200200a4105746a220341096a29000037030020044190016a41106a2205200341116a29000037030020044190016a41176a2216200341186a290000370000200420032900013703900120032d000021174101210341c200210a4102210e20202108034020072016290000370000200d2005290300370300200c201229030037030020042004290390013703b0010240200e417f6a2003470d00200441206a2003410110af012004280220210f0b200f200a6a220941606a20173a0000200941616a220320042903b0013700002007290000210b200d2903002111200c290300211d200920063b0100200341086a201d370000200341106a2011370000200341176a200b3700002004200e3602280240200a41fc03470d00410321030c030b417f2010411074220320082f010022064110746a220920092003491b41107621100240200428020c22032802082008417e6a2f010022094b0d00410221030c030b2012200328020020094105746a220341096a2900003703002005200341116a2900003703002016200341186a2900003700002004200329000137039001200e41016a210e200a41226a210a200841046a210820032d00002117200428022421030c000b0b410221030c080b2004280224210a20034103470d062004200e360288012004200a360284012004200f360280010240201041ffff037141ffff03460d00200428020c220328020820144d0d022010417f732108200c200328020020144105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420032900013703b00120032d000021090240200a200e470d0020044180016a200e410110af01200428028001210f200428028801210e0b200f200e41226c6a220320093a0000200320042903b0013700012007290000210b200d2903002111200c290300211d200320083b0120200341096a201d370000200341116a2011370000200341186a200b370000200420042802880141016a36028801200228020820134d0d0320022802002103201220044180016a41086a280200360200200c200320134105746a220341096a290000370300200d200341116a2900003703002007200341186a290000370000200420042903800137039001200420032900013703b00120032d0000210e0240200428021822032004280214470d00200441106a2003410110a601200428021821030b20042802102003412c6c6a22032004290390013702002003200e3a000c200341086a20122802003602002003410d6a20042903b001370000200341156a200c2903003700002003411d6a200d290300370000200341246a20072900003700002004200428021841016a36021820152022470d010c060b0b200041013b01000c030b20004181043b01000c020b20004181043b0100200428028401210a0c010b1033000b200a450d03200a41226c450d0320042802800110230c030b02402024450d00202441c4006c450d00202610230b200041003a0000200041046a20042903103702002000410c6a200441186a2802003602000c370b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b41002102200441106a210802402024450d00202441c4006c450d00202610230b41002109410021050c060b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210941012102200441106a21080240202441ffffff1f710d00410021050c040b20221023410021050c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210541012102200441106a210802402022450d002022413c6c450d00202410230b410121090b410021160c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100211641012102200441106a210802402022450d00202241386c450d00202010230b41012109410121050b410021170c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100211741012102200441106a210802402022450d00202241346c450d00202010230b4101210941012105410121160b410021150c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100211541012102200441106a21080240201f450d00201f41306c450d00202010230b410121094101210541012116410121170b410021070c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210741012102200441106a210802402020450d002020412c6c450d00201f10230b41012109410121054101211641012117410121150b4100210c0c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210c41012102200441106a21080240201e450d00201e41286c450d00201f10230b4101210941012105410121164101211741012115410121070b410021000c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210041012102200441106a21080240201e450d00201e41246c450d00201f10230b4101210941012105410121164101211741012115410121074101210c0b4100210d0c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210d41012102200441106a21080240201e41ffffff3f71450d00201910230b4101210941012105410121164101211741012115410121074101210c410121000b4100210f0c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100210f41012102200441106a21080240201e450d00201e411c6c450d00201910230b4101210941012105410121164101211741012115410121074101210c410121004101210d0b410021100c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100211041012102200441106a210802402019450d00201941186c450d00201810230b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f0b410021120c030b200a450d00200a41226c450d00200f10230b200041013a0000200020033a00010b4100211241012102200441106a210802402019450d00201941146c450d00201810230b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f410121100b41002114410021060c040b4100211441012102200441106a21080240201541ffffffff0071450d00201710230b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f4101211041012112410021060c030b20004181043b0100200310230c010b20004181043b01000b41012102200441106a21080240200541ffffffff0171450d00200610230b4101210941012105410121164101211741012115410121074101210c410121004101210d4101210f410121104101211241012114410121060b02402004280218220e450d0020042802102103200e412c6c210e03400240200341046a280200220a450d00200a41226c450d00200328020010230b2003412c6a2103200e41546a220e0d000b0b0240200841046a2802002203450d002003412c6c450d00200828020010230b02402006450d00200141106a2802002203450d002003410c6c450d00200128020c10230b02402014450d002001411c6a28020041ffffffff0071450d00200128021810230b02402012450d00200141286a2802002203450d00200341146c450d00200128022410230b02402010450d00200141346a2802002203450d00200341186c450d00200128023010230b0240200f450d00200141c0006a2802002203450d002003411c6c450d00200128023c10230b0240200d450d00200141cc006a28020041ffffff3f71450d00200128024810230b02402000450d00200141d8006a2802002203450d00200341246c450d00200128025410230b0240200c450d00200141e4006a2802002203450d00200341286c450d00200128026010230b02402007450d00200141f0006a2802002203450d002003412c6c450d00200128026c10230b02402015450d00200141fc006a2802002203450d00200341306c450d00200128027810230b02402017450d0020014188016a2802002203450d00200341346c450d0020012802840110230b02402016450d0020014194016a2802002203450d00200341386c450d0020012802900110230b02402005450d00200141a0016a2802002203450d002003413c6c450d00200128029c0110230b02402009450d00200141ac016a28020041ffffff1f71450d0020012802a80110230b2002450d00200141b8016a2802002203450d00200341c4006c450d0020012802b40110230b200441d0016a24000bb00401087f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041023a00100c010b200328021421042003200341106a41086a28020036022420032001360220200341c8006a200341206a10cf01024002400240024020032802482205450d00200328024c2106024002400240200328022422024104490d00200341c8006a41086a280200210720032002417c6a220836022420032003280220220941046a220a3602202008450d012009280000210920032002417b6a3602242003200a41016a360220200a2d0000220a41014b0d0141002102200a0e020504050b200641ffffff3f710d010c020b200641ffffff3f71450d010b200510230b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b410221020c020b410121020b200341386a41026a200341286a41026a2d0000220a3a0000200341c8006a41026a200a3a0000200320032f002822083b01382000200936020c200020073602082000200636020420002005360200200320083b0148200041136a200a3a0000200020083b00110b200020023a00102004450d00200110230b200341e0006a24000bab120a0d7f017e027f027e017f017e097f027e057f057e23004190036b22022400200141086a28020021032001280204210420002802042105200028020021060240024020002802082207200028020c2208460d0020012802002109200241b0016a410c6a210a200241f0026a41106a2101200241b0016a410472210b20024188016a41086a210c20024188016a41186a210d20024188016a41206a210e41bdadc500ad4280808080800184210f0340200c20072200410c6a29020037030020024188016a41106a2210200041146a290200370300200d2000411c6a290200370300200e200041246a29020037030020022000290204370388012000412c6a210720002802002211450d01200b200229038801370200200b41086a200c290300370200200b41106a2010290300370200200b41186a200d290300370200200b41206a200e290300370200200220113602b001200241f8006a200a10d301200241f8006a41086a290300211220022903782113200241f0026a41186a2214420037030020014200370300200241f0026a41086a22104200370300200242003703f002200f100c220029000021152010200041086a290000370300200220153703f0022000102341c5adc500ad4280808080d00184100c22002900002115200241b0026a41086a2216200041086a290000370300200220153703b00220001023200120022903b002370000200141086a2016290300370000200241d0026a41086a2010290300370300200241d0026a41106a2001290300370300200241d0026a41186a2014290300370300200220022903f0023703d002200241e0006a200241d0026a412010d701200241d0006a2002290368200241e0006a41106a290300427f420010a705200241c0006a2013201220022903504200200228026022001b221542012015420156200241d0006a41086a290300420020001b22154200522015501b22001b2015420020001b10a705200241e0016a41086a2217200a41086a290200370300200241e0016a41106a2218200a41106a290200370300200241e0016a41186a2219200a41186a2902003703002002200a2902003703e00120022802b401211a2002290340211202400240024020022802b80141226c221b450d00201b211c201121000340200041206a2f0100211d2014200041186a2900003703002001200041106a2900003703002010200041086a290000370300200220002900003703f002201d0d02200041226a2100201c415e6a221c0d000b0b420021154108211e410021000240201a450d00201a41226c450d0020111023420021150b420021134100211b0c010b200241306a2012420042ffff03420010a705200241206a2002290330221f200241306a41086a29030022204281807c427f10a605200241106a201f2020201dad420010a60520024190026a41086a2221201029030037030020024190026a41106a2222200129030037030020024190026a41186a22232014290300370300200220022903f00222153703b0022002201537039002201d201220022903207ca722246c221d41ffff036e212520022903102113200241106a41086a290300212641301021221e450d03201e20132025417f201d4180807c491b201d20254181807c6c6a41ffff014b6aad42ffff03837c2215370320201e200229039002370300201e41286a20262015201354ad7c2213370300201e41186a2023290300370300201e41106a2022290300370300201e41086a20212903003703002002428180808010370284022002201e3602800202400240201c4122470d004101211b0c010b200041226a21252011201b6a221c415e6a21214101211b03402025210002400340200041206a2f0100211d2014200041186a2900003703002001200041106a2900003703002010200041086a290000370300200220002900003703f002201d0d01201c200041226a2200470d000c030b0b2002201f2020201dad420010a605201620102903002226370300200241b0026a41106a20012903002227370300200241b0026a41186a20142903002228370300200220022903f00222293703b002201420283703002001202737030020102026370300200220293703f002201520022903002227201d20246c221d41ffff036e2225417f201d4180807c491b201d20254181807c6c6a41ffff014b6aad42ffff03837c22267c2228201554221d2013200241086a2903002026202754ad7c22277c201dad7c221520135420152013511b211d0240201b200228028402470d0020024180026a201b410110a401200228028002211e0b427f2015201d1b2113427f2028201d1b2115200041226a2125201e201b41306c6a221d20022903f00237030020102903002128200129030021292014290300212a201d2026370320201d41286a2027370300201d41186a202a370300201d41106a2029370300201d41086a20283703002002201b41016a221b3602880220212000470d000b0b0240201a450d00201a41226c450d00201110230b20022802840221000b02400240201220157d2220201256420020132012201554ad7c7d221f420052201f501b4101470d00201520127d221f20155620132015201254ad7d2220201356201520125a1b0d01201b450d01201b41306c201e6a41706a221d4200201d2903002215201f7d22122012201556201d41086a221d290300221220207d2015201f54ad7d221520125620152012511b221c1b370300201d42002015201c1b3703000c010b201b450d00201b41306c201e6a41706a221d427f201d290300221520207c22122012201554221c201d41086a221d2903002215201f7c201cad7c221220155420122015511b221c1b370300201d427f2012201c1b3703000b201420192903003703002001201829030037030020102017290300370300200220022903e0013703f002200920003602042009201b3602082009201e360200200920022903f00237020c200941146a20102903003702002009411c6a2001290300370200200941246a2014290300370200200341016a21032009412c6a210920072008470d000b200821070b20042003360200200820076b2200412c6d210102402000450d002001412c6c210003400240200741046a2802002201450d00200141226c450d00200728020010230b2007412c6a2107200041546a22000d000b0b02402005450d002005412c6c450d00200610230b20024190036a24000f0b1033000b8d0303057f017e027f02400240024020002802202201450d00034020002001417f6a36022020002802042202450d03200028020821032000280200210402400240200028020c220520022f01064f0d00200221010c010b034002400240200228020022010d002003ad2106410021010c010b200441016a210420023301044220862003ad8421060b200210232006a72103200121022006422088a7220520012f01064f0d000b0b200541016a2107200120054105746a220241fc026a2802002105200241f8026a280200210802402004450d00200120074102746a41c8056a2802002101410021072004417f6a2202450d00034020012802c80521012002417f6a22020d000b0b2000200736020c2000200336020820002001360204200041003602002008450d0202402005450d00200541306c450d00200810230b200028022022010d000b0b200028020421010b02402001450d0020012802002102200110232002450d00034020022802002101200210232001210220010d000b0b0f0b41d095c700412b41c491c700102d000b13002000411b360204200041f08ac2003602000b0f00200028020020012002106941000bfe0101017f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410676413f71418001723a000d20022001410c76410f7141e001723a000c410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d20022001410676411f7141c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a20011069200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a4184a5c200200241086a10312101200241206a240020010bea1003057f017e077f230041e0006b2202240020012802202103200241306a41186a4200370300200241306a41106a22044200370300200241306a41086a220542003703002002420037033041db97c700ad4280808080f00084100c220629000021072005200641086a290000370300200220073703302006102341bbacc300ad4280808080a00184100c22062900002107200241d0006a41086a2208200641086a2900003703002002200737035020061023200420022903502207370300200241106a41086a2005290300370300200241106a41106a2007370300200241106a41186a200829030037030020022002290330370310200241306a200241106a412010890220022802302205410120051b21060240024002400240024002400240024002400240024020032002290234420020051b2207422088a7490d00200742ffffff3f83500d01200610230c010b2003200620034105746a10ac0221030240200742ffffff3f83500d00200610230b20030d010b200241306a41186a22054200370300200241306a41106a22064200370300200241306a41086a220342003703002002420037033041db97c700ad4280808080f00084100c220829000021072003200841086a290000370300200220073703302008102341bcbcc300ad4280808080c00184100c22082900002107200241d0006a41086a2209200841086a290000370300200220073703502008102320042002290350370000200441086a22082009290300370000200241106a41086a220a2003290300370300200241106a41106a220b2006290300370300200241106a41186a220c200529030037030020022002290330370310200241086a200241106a412010cd01200128021c200228020c410020022802081b220d470d01200542003703002006420037030020034200370300200242003703304180cdc200ad4280808080800184100c220e29000021072003200e41086a29000037030020022007370330200e102341d7a1c200ad4280808080c00084100c220e29000021072009200e41086a29000037030020022007370350200e10232004200229035037000020082009290300370000200a2003290300370300200b2006290300370300200c200529030037030020022002290330370310200241306a200241106a10ad0220022802302204410120041b210c200128022022052002290234420020041b2207422088a74f0d03200c20054105746a220e450d032002410036023820024201370330200128020021034104102122040d020c080b20004180063b0001200041013a0000200041036a41003a00000c060b20004180063b0001200041013a0000200041036a41003a00000c050b20024104360234200220043602302004200336000020024104360238200128020421092001410c6a2802002204200241306a10610240024020022802342208200228023822036b2004490d00200228023021060c010b200320046a22062003490d032008410174220a2006200a20064b1b220a4100480d030240024020080d000240200a0d00410121060c020b200a10212206450d080c010b200228023021062008200a460d0020062008200a10252206450d070b2002200a360234200220063602300b200620036a2009200410a1051a2002200320046a360238200141106a2802002103200141186a2802002204200241306a10610240024020040d002002280234210920022802382104200d210a0c010b20032004410c6c6a210b03402003280200210a200341086a2802002204200241306a10610240024020022802342206200228023822056b2004490d0020022802302108200621090c010b200520046a22082005490d05200641017422092008200920084b1b22094100480d050240024020060d00024020090d00410121080c020b200910212208450d0a0c010b2002280230210820062009460d0020082006200910252208450d090b20022009360234200220083602300b200820056a200a200410a1051a2002200520046a22043602382003410c6a2203200b470d000b20012802202105200128021c210a0b02400240200920046b4104490d00200441046a210320022802302106200921080c010b200441046a22032004490d03200941017422062003200620034b1b22084100480d030240024020090d00024020080d00410121060c020b200810212206450d080c010b2002280230210620092008460d0020062009200810252206450d070b20022008360234200220063602300b200620046a200a360000200220033602380240200820036b41034b0d00200341046a22042003490d03200841017422092004200920044b1b22044100480d030240024020080d00024020040d00410121060c020b200410212206450d080c010b20082004460d0020062008200410252206450d070b20022004360234200220063602300b200620036a200536000020022802342104200141246a200341046aad42208620022802302205ad84200e1013210302402004450d00200510230b20034101460d010b20004180083b0001200041013a0000200041036a41003a0000200742ffffff3f83500d03200c10230c030b410c10212203450d03410410212204450d012004200d36000020044104412410252204450d032004200e2900003700042004411c6a200e41186a290000370000200441146a200e41106a2900003700002004410c6a200e41086a290000370000200041306a41013a0000200041286a428180808010370200200041246a2003360200200041206a4100360200200041186a4204370300200041106a42ac02370300200041086a427f370300200342a4808080c00437020420032004360200200041316a2002280030360000200041346a200241336a280000360000200041003a0000200742ffffff3f83500d02200c10230c020b102c000b1033000b200241e0006a24000f0b102a000b9a0a03047f017e047f23004190016b22022400200241d8006a41186a4200370300200241d8006a41106a22034200370300200241d8006a41086a220442003703002002420037035841db97c700ad4280808080f00084100c220529000021062004200541086a290000370300200220063703582005102341bcbcc300ad4280808080c00184100c22052900002106200241f8006a41086a2207200541086a2900003703002002200637037820051023200320022903782206370300200241386a41086a2004290300370300200241386a41106a2006370300200241386a41186a200729030037030020022002290358370338200241106a200241386a412010cd01200241d8006a2002280214410020022802101b2203200010ae02200241086a200228025822042002280260419ca8c70041004100108c01200228020821050240200228025c450d00200410230b4101210402400240024020054101460d004180cdc200ad4280808080800184100c22042900002106200241f8006a41086a200441086a290000370300200220063703782004102341b4a5c200ad4280808080e00184100c22042900002106200241386a41086a200441086a2900003703002002200637033820041023200220033602282002200241286aad4280808080c00084100d22042900003703880120041023200241e4006a22052002412c6a360200200241003a0068200220024188016a41086a220036025c2002200241286a360260200220024188016a360258200241186a200241d8006a10650240024002400240412010212204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020022004ad4280808080800484100d220129000037038801200110232005200441206a360200200241003a0068200220043602602002200036025c200220024188016a360258200241286a200241d8006a1065200410232002280220220741206a2205200228023022086a2201417f4c0d01200228022821092002280218210a024002402001450d00200110212204450d022001410f4d0d01200121000c050b200141017422044110200441104b1b2200102122040d040c070b200141017422004110200041104b1b220041004e0d020c050b1033000b1032000b20012000460d0020042001200010252204450d030b20042002290378370000200441086a200241f8006a41086a2903003700000240024020004170714110460d00200021030c010b200041017422034120200341204b1b22034100480d0220002003460d0020042000200310252204450d030b20042002290338370010200441186a200241386a41086a29030037000002400240200341606a2007490d00200321000c010b2007415f4b0d02200341017422002005200020054b1b22004100480d0220032000460d0020042003200010252204450d030b200441206a200a200710a1051a02400240200020056b2008490d00200021030c010b200520086a2005490d02200041017422032001200320014b1b22034100480d02024020000d00024020030d00410121040c020b200310212204450d040c010b20002003460d0020042000200310252204450d030b200420056a2009200810a1051a0240200228022c450d00200910230b0240200228021c450d00200a10230b20022004200110cd01200228020421012002280200210502402003450d00200410230b200141004720054100477121040b20024190016a240020040f0b102c000b102a000b8b06010d7f23004190016b220224002002412036021420022001360210200241186a2001ad42808080808004841010108b010240024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a1088010240024020022802080d00200228020c2205200228022c22064105762201200120054b1b22014105742207417f4c0d030240024020010d00410121080c010b200710212208450d050b41002109200241003602402002200136023c20022008360238024002402005450d004100210a03402006210b41002101200241003a008801200a41016a210a0340200b2001460d03200241e8006a20016a200228022822072d00003a00002002200741016a3602282002200141016a22073a0088012007210120074120470d000b200241c8006a41186a220c200241e8006a41186a290300370300200241c8006a41106a220d200241e8006a41106a290300370300200241c8006a41086a220e200241e8006a41086a2903003703002002200229036837034802402009200228023c470d00200241386a20094101109a0120022802382108200228024021090b200b20076b2106200820094105746a22012002290348370000200141186a200c290300370000200141106a200d290300370000200141086a200e2903003700002002200941016a2209360240200a2005470d000b2002200b20076b36022c0b2008450d012000200229023c370204200020083602000c020b2002410036022c0240200141ff0171450d00200241003a0088010b200228023c41ffffff3f71450d00200810230b20024100360250200242013703482002410a36023c2002200241106a3602382002200241c8006a360234200241fc006a41013602002002420137026c20024180c5c6003602682002200241386a360278200241346a4184a5c200200241e8006a10311a2002350250422086200235024884100a0240200228024c450d00200228024810230b200041003602000b2004450d00200310230b20024190016a24000f0b1032000b1033000bdc0603027f017e077f230041e0006b220324004180cdc200ad4280808080800184100c22042900002105200341086a200441086a290000370300200320053703002004102341d4bec200ad4280808080a00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023200320013602302003200341306aad4280808080c00084100d220429000037034020041023200341d4006a2204200341306a41046a360200200341003a00582003200341c0006a41086a220136024c2003200341306a3602502003200341c0006a360248200341206a200341c8006a10652003200236023c20032003413c6aad4280808080c00084100d22022900003703402002102320042003413c6a41046a360200200341003a00582003200136024c20032003413c6a3602502003200341c0006a360248200341306a200341c8006a10650240024002400240024002402003280228220641206a2207200328023822086a2202417f4c0d00200328023021092003280220210a024002402002450d00200210212204450d032002410f4d0d012002210b0c050b200241017422044110200441104b1b220b102122040d040c060b200241017422014110200141104b1b220b41004e0d020c040b1032000b1033000b2002200b460d0020042002200b10252204450d020b20042003290300370000200441086a200341086a29030037000002400240200b4170714110460d00200b21010c010b200b41017422014120200141204b1b22014100480d01200b2001460d002004200b200110252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200141606a2006490d002001210b0c010b200641206a220b2006490d012001410174220c200b200c200b4b1b220b4100480d012001200b460d0020042001200b10252204450d020b200441206a200a200610a1051a02400240200b20076b2008490d00200b21010c010b200720086a2007490d01200b41017422012002200120024b1b22014100480d01200b2001460d002004200b200110252204450d020b200420076a2009200810a1051a20002002360208200020013602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000bdd0201057f230041d0006b22022400024002400240410410212203450d00200341f0c2c98b06360000200128020021044108210120034104410810252205450d0120052004360004200241003a004820052106410021030340200241003a0008200241086a20062001410047220410a1051a024020010d00200241003a00080b20012004490d03200241286a20036a20022d00083a00002002200341016a22033a0048200120046b2101200620046a210620034120470d000b200241086a41186a2201200241286a41186a290300370300200241086a41106a2203200241286a41106a290300370300200241086a41086a2204200241286a41086a2903003703002002200229032837030820051023200041186a2001290300370000200041106a2003290300370000200041086a200429030037000020002002290308370000200241d0006a24000f0b1033000b102a000b2004200141a4b5c0001044000bfe21030b7f047e097f230041c0066b2202240002400240024020012802082203200128020c2204460d002001200341206a220536020820012802102106200241f8026a41186a200341186a290000370300200241f8026a41106a200341106a290000370300200241f8026a41086a200341086a290000370300200220032900003703f802200128021421074100210802400240024002402001411c6a280200220941014b0d0020090e020201020b2009210a0340200a410176220b20086a220c20082007200c4105746a200241f8026a412010a3054101481b2108200a200b6b220a41014b0d000b0b200720084105746a200241f8026a412010a3050d002006210c0c010b2001200641016a220c3602104108210820052004460d020240200941014d0d0003402001200541206a2203360208200241f8026a41186a200541186a290000370300200241f8026a41106a200541106a290000370300200241f8026a41086a200541086a290000370300200220052900003703f802410021082009210a0340200a410176220520086a220b20082007200b4105746a200241f8026a412010a3054101481b2108200a20056b220a41014b0d000b200720084105746a200241f8026a412010a305450d022001200c41016a220c3602102003210520032004460d030c000b0b0240024020090e020100010b03402001200541206a2208360208200241f8026a41186a200541186a290000370300200241f8026a41106a200541106a290000370300200241f8026a41086a200541086a290000370300200220052900003703f80202402007200241f8026a412010a3050d00410021080c030b2001200c41016a220c3602102008210520042008460d030c000b0b2001200436020820012006200420036b41406a4105766a41026a3602100c020b024002400240024002400240024002400240200920084d0d00200241186a200720084105746a220841186a290000220d370300200241106a200841106a290000220e370300200241086a200841086a290000220f3703002002200829000022103703002001200c41016a360210200141206a2802002108200141246a280200210a200241206a41186a200d370300200241206a41106a200e370300200241206a41086a200f370300200220103703202002200a36024c200220083602482002200c360244200241f8026a41186a4200370300200241f8026a41106a22054200370300200241f8026a41086a22084200370300200242003703f80241db97c700ad4280808080f00084100c220a290000210d2008200a41086a2900003703002002200d3703f802200a102341bbacc300ad4280808080a00184100c220a290000210d200241b8026a41086a220b200a41086a2900003703002002200d3703b802200a1023200520022903b802220d370300200241d0006a41086a2008290300370300200241d0006a41106a200d370300200241d0006a41186a200b290300370300200220022903f802370350200241f8026a200241d0006a412010890220022802f8022208410120081b210a02400240200c20022902fc02420020081b220d422088a7490d00200d42ffffff3f83500d01200a10232002280244210c0c010b200c200a200c4105746a10ac0221050240200d42ffffff3f83500d00200a10230b410221082002280244210c20050d0c0b200228024c210620022802482111411b10212208450d01200841176a41002800d7a942360000200841106a41002900d0a942370000200841086a41002900c8a942370000200841002900c0a94237000041041021220a450d01200a200c3600002008411b413610252209450d082009200a28000036001b200a1023200241b8026a41002009ad4280808080f00384220d1014108b01024002400240024020022802b8022208450d00200241c0026a280200220a4104490d00200a417c714104460d0041000d0020082800002011470d002008280004220a41036a20064b0d010b410410212208450d0b2008201136000020084104410810252208450d0b20082006360004200241d0006a41086a200241b8026a41086a280200360200200220022903b802370350200241f8026a200241d0006a10860120022802fc02210a4100200d20023502800342208620022802f802220bad842008ad4280808080800184101521050240200a450d00200b10230b02402002280250220a450d002002280254450d00200a10230b200810234104210820054101460d022006210a0c010b024020022802bc02450d00200810230b410121080b20091023200a210c0c0c0b200241f8026a10870120022802f8022212450d032002418c036a280200211320024188036a280200211420024184036a280200211520024180036a280200211620022802fc0221172002410036028003200242013703f802410410212208450d08200241043602fc02200220083602f8022008200636000020024104360280032016200241f8026a10610240024020022802fc02220520022802800322086b2016490d0020022802f802210a0c010b200820166a220a2008490d082005410174220b200a200b200a4b1b220b4100480d080240024020050d000240200b0d004101210a0c020b200b1021220a0d010c0b0b20022802f802210a2005200b460d00200a2005200b1025220a450d0a0b2002200b3602fc022002200a3602f8020b200a20086a2012201610a1051a2002200820166a360280032013200241f8026a10612013450d0220152013410c6c6a21032015210a0340200a2802002104200a41086a2802002208200241f8026a10610240024020022802fc02220b20022802800322056b2008490d0020022802f8022107200b21010c010b200520086a22072005490d09200b41017422012007200120074b1b22014100480d0902400240200b0d00024020010d00410121070c020b200110212207450d0c0c010b20022802f8022107200b2001460d002007200b200110252207450d0b0b200220013602fc02200220073602f8020b200720056a2004200810a1051a2002200520086a220836028003200a410c6a220a2003470d000c050b0b2008200941b0a9c2001030000b1033000b20022802fc02210120022802800321080c010b41012108410521060c010b02400240200120086b4104490d0020022802f802210a200121050c010b200841046a220a2008490d0320014101742205200a2005200a4b1b22054100480d030240024020010d00024020050d004101210a0c020b20051021220a450d060c010b20022802f802210a20012005460d00200a200120051025220a450d050b200220053602fc022002200a3602f8020b200a20086a20113600002002200841046a220b360280034103210702402005200b6b41034b0d00200b41046a2201200b490d03200541017422042001200420014b1b22014100480d030240024020050d00024020010d004101210a0c020b20011021220a450d060c010b20052001460d00200a200520011025220a450d050b200220013602fc022002200a3602f8020b200a200b6a200c36000020022802fc02210a200241f8026a41e9dabdf306200241206a20022802f802220b200841086a108f0141012108024020022d00f8024101470d00200241f6026a20022d00fb023a0000200241b8026a41086a2002418c036a290200370300200241c8026a20024194036a290200370300200241d0026a2002419c036a290200370300200241d8026a200241a4036a290200370300200241e0026a200241ac036a290200370300200241e5026a200241b1036a290000370000200220022f00f9023b01f402200220024184036a2902003703b802200241f8026a41086a28020021054100210820022802fc0221070b200241b4026a41026a2201200241f4026a41026a2d00003a0000200241f8016a41086a200241b8026a41086a290300370300200241f8016a41106a2204200241b8026a41106a290300370300200241f8016a41186a2203200241b8026a41186a290300370300200241f8016a41206a2218200241b8026a41206a290300370300200241f8016a41286a2219200241b8026a41286a290300370300200241f8016a41306a200241b8026a41306a290300370300200220022f01f4023b01b402200220022903b8023703f801024020080d00200241f4016a41026a20012d00003a0000200241f8026a41086a200241f8016a41086a290300370300200241f8026a41106a2004290300370300200241f8026a41186a2003290300370300200241f8026a41206a2018290300370300200241f8026a41286a2019290300370300200241f8026a412d6a200241f8016a412d6a290000370000200220022f01b4023b01f401200220022903f8013703f8020240200a450d00200b10230b200220022f01f4013b01b8022002200241f6016a2d00003a00ba02410021080c020b0240200a450d00200b10230b02402017450d00201210230b02402013450d002013410c6c210a2015210803400240200841046a280200450d00200828020010230b2008410c6a2108200a41746a220a0d000b0b4101210802402014450d002014410c6c450d00201510230b20072106200521120b0b200241b8016a41086a220a200241f8026a41086a290300370300200241b8016a41106a220b200241f8026a41106a290300370300200241b8016a41186a2201200241f8026a41186a290300370300200241b8016a41206a2204200241f8026a41206a290300370300200241b8016a41286a2203200241f8026a41286a290300370300200241b8016a412d6a2218200241f8026a412d6a290000370000200220022d00ba023a00f201200220022f01b8023b01f001200220022903f8023703b80102400240024020080d00200241d0006a41186a2013360200200241d0006a41146a2014360200200241d0006a41106a2015360200200241d0006a410c6a2016360200200241d0006a41086a2017360200200241f6006a20022d00f2013a0000200241fb006a2005360000200241f7006a2007360000200241ff006a20022903b80137000020024187016a200a2903003700002002418f016a200b29030037000020024197016a20012903003700002002419f016a2004290300370000200241a7016a2003290300370000200241ac016a20182900003700002002200c3602702002201136026c2002201236025420022006360250200220022f01f0013b017402404100280298ab474103490d00200241b8026a411c6a410e360200200241b8026a41146a410f360200200241b8026a410c6a410f3602002002410f3602bc022002200241d0006a3602d0022002200241c8006a3602c8022002200241cc006a3602c0022002200241c4006a3602b80241002802888040210841002802848040210a410028029cab472105200241b8036a41de03360200200241b0036a42df80808010370300200241ac036a41fca5c200360200200241a4036a4210370200200241a0036a41eca5c20036020020024198036a420437030020024188036a4204370300200241f8026a41086a4108360200200241f8026a411c6a200241b8026a360200200241dca9c20036028403200241e4a5c2003602fc02200241033602f802200a41a0a1c000200541024622051b200241f8026a200841b8a1c00020051b2802101102000b2002410b36029004200242023703e00320024194046a200241d0006a41e40010a1051a2002200241f8026a3602f801200241b8026a200241f8016a10b30220022802b80220022802bc0220022802c002108901210a20024190046a10b4024107210841062106200a0d010c020b4107210820064107460d010b410410212208450d022008201136000020084104410810252208450d02200841003600044100200d2008ad4280808080800184101620081023200621080b200910232012210c0c040b102c000b102a000b410821080b0b2000200c36020420002008360200200241c0066a24000bc60401067f23004190016b22022400024002402000410c6a2802002203417f4c0d0020002802042104200028020021050240024020030d0041012106410021070c010b20032107200310212206450d020b20062004200310a1052104200241f8006a200041106a10b702200241106a410c6a2003360200200241106a41086a22032007360200200241206a2002290378370300200241286a2206200241f8006a41086a280200360200200241106a412c6a2000412c6a290200370200200241106a41346a200041346a290200370200200241106a413c6a2000413c6a290200370200200241106a41c4006a200041c4006a290200370200200241106a41cc006a200041cc006a290200370200200241106a41d4006a200041d4006a290200370200200241106a41dc006a200041dc006a29020037020020022004360214200220053602102002200029021c37022c200220002902243702342002410c6a4110360200200241aca5c200360200200241043602042001411c6a28020021002002200241106a360208200128021821012002418c016a41023602002002420237027c200241b4aac200360278200220023602880120012000200241f8006a1031210102402003280200450d00200228021410230b024020062802002203450d00200228022021002003410c6c210303400240200041046a280200450d00200028020010230b2000410c6a2100200341746a22030d000b0b0240200241246a2802002200450d002000410c6c450d00200228022010230b20024190016a240020010f0b1032000b1033000bb30201037f23004180016b2202240002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001103e21000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000b20024180016a240020000f0b2004418001419889c0001044000b2004418001419889c0001044000bb31203077f027e057f230041c0006b22022400024002400240024041ca0310212203450d00200241ca0336020420022003360200200341003b0000200241023602082002280204210402400240200128020022032903684202520d00024020044102470d0020022802004102410410252201450d0620024104360204200220013602000b200228020041043a00022002200228020841016a3602080c010b024020044102470d0020022802004102410410252201450d0520024104360204200220013602000b20022802004184013a000220022002280208220141016a2205360208024002402002280204220620056b4120490d00200141216a210120022802002107200621040c010b200541206a22012005490d04200641017422042001200420014b1b22044100480d040240024020060d00024020040d00410121070c020b2004102122070d010c070b2002280200210720062004460d0020072006200410252207450d060b20022004360204200220073602000b200720056a22052003290000370000200541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a29000037000020022001360208024020032d0020220541024b0d000240024002400240024020050e03000102000b410021060c020b410121060c010b41022106200241023a001041c10021050c010b200220063a001041c00021050b024020042001470d00200141016a22042001490d05200141017422082004200820044b1b22044100480d050240024020010d0041002101024020040d00410121070c020b200410212207450d080c010b20012004460d0020072001200410252207450d070b20022004360204200220073602000b200720016a20063a00002002200141016a2201360208024002402002280204220620016b2005490d0020022802002107200621040c010b200120056a22042001490d05200641017422072004200720044b1b22044100480d050240024020060d00024020040d00410121070c020b200410212207450d080c010b2002280200210720062004460d0020072006200410252207450d070b20022004360204200220073602000b200720016a200341206a41016a200510a1051a2002200120056a22013602080b0240024020032903684201520d00200329037820032903702209420c88220a4201200a4201561b80210a0240200420016b41014b0d00200141026a22052001490d06200441017422062005200620054b1b22054100480d060240024020040d00024020050d00410121070c020b200510212207450d090c010b20042005460d0020072004200510252207450d080b20022005360204200220073602000b200720016a200aa741047420097aa7417f6a22044101200441014b1b2204410f2004410f491b723b00002002200141026a3602080c010b200241003a00100240024020042001460d00200121040c010b200441016a22012004490d05200441017422052001200520014b1b22014100480d050240024020040d0041002104024020010d00410121070c020b200110212207450d080c010b20042001460d0020072004200110252207450d070b20022001360204200220073602000b200720046a41003a00002002200441016a3602080b20034190016a200210ed01200220034180016a360210200241106a200210db010b20034198016a200210dd0220022802082103410410212201450d0020024204370214200220013602102003417e6a200241106a10612002280208220341014d0d012002280218210120022802142108200220022802102206360224200241286a200620016a2204360200200241023602102002411c6a2002280200220741026a2205360200410021012002410036020820022003417e6a22033602142002200536021820022002360220200241246a210b0240024002402003450d0020062103034020032004460d032002200341016a360224200720016a20032d00003a00002002200228020841016a36020820014101460d02200141016a210120022802242103200228022821040c000b0b2002200b1082040c010b024020022802282205200228022422036b2201450d00024002402002280220220741046a280200220c2002280214220d2002280210220e6a22046b2001490d00200728020021040c010b200420016a220f2004490d05200c4101742204200f2004200f4b1b220f4100480d0502400240200c0d000240200f0d00410121040c020b200f10212204450d080c010b20072802002104200c200f460d002004200c200f10252204450d070b20072004360200200741046a200f3602000b2004200e20016a22016a2004200e6a200d10a2051a20022001360210200120072802082204460d00200420036a417f732005200e6a6a2101200728020020046a2104034020032005460d022002200341016a360224200420032d00003a00002007200728020841016a3602082001450d01200441016a21042001417f6a210120022802242103200228022821050c000b0b2002410036023820024201370330200241306a200b1082042002280234210b2002280230210e024020022802382203450d00024002402002280220220741046a28020022052002280214220c200228021022046a22016b2003490d00200728020021010c010b200120036a220d2001490d0520054101742201200d2001200d4b1b220d4100480d050240024020050d000240200d0d00410121010c020b200d10212201450d080c010b200728020021012005200d460d0020012005200d10252201450d070b20072001360200200741046a200d3602000b2001200420036a22056a200120046a200c10a2051a20022005360210200520072802082201460d00200120046b2105200728020020016a2101200e210403402003450d01200120042d00003a00002007200728020841016a360208200441016a2104200141016a210120052003417f6a2203470d000b0b200b450d00200e10230b02402002280218200228021c2203460d00200220033602180b024020022802142203450d000240200228021022072002280220220541086a22042802002201460d002005280200220520016a200520076a200310a2051a0b2004200320016a3602000b02402008450d00200610230b20002002290300370200200041086a200241086a280200360200200241c0006a24000f0b1033000b41022003103c000b102c000b102a000b9b1201037f024002402000280200220141144b0d000240024002400240024002400240024002400240024020010e15000c0c0c0c01020c030c04050c060c0708090a0c0c000b200041086a280200417e6a220141074b0d0b02400240024002400240024020010e080011010211030405000b200041106a280200450d102000410c6a28020010230f0b200041106a280200450d0f2000410c6a28020010230f0b200041106a280200450d0e2000410c6a28020010230f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200241686a22020d000b0b200041106a2802002201450d0d200141186c450d0d200028020c10230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d0c2001410c6c450d0c200028020c10230f0b200041106a280200450d0b2000410c6a28020010230f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a2101034020011096030240200141046a2802002203450d00200341246c450d00200128020010230b200141f0006a2101200241907f6a22020d000b0b200041086a2802002201450d0a200141f0006c450d0a200028020410230f0b0240200041086a2d0000220141174b0d000240024002400240024020010e180f0f0f0f0f0f000f0f0f0f0f0f010f0f02030f0f0f0f0f040f0b200041106a28020041ffffff3f71450d0e2000410c6a28020010230f0b200041106a28020041ffffff3f71450d0d2000410c6a28020010230f0b200041146a28020041ffffffff0371450d0c200041106a28020010230f0b200041146a2802002201450d0b200141246c450d0b200041106a28020010230f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010230b200041186a1083020f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010230b200041186a1083020f0b20002802042201450d08200041086a280200450d08200110230f0b200041086a280200450d07200028020410230f0b02402000410c6a280200450d00200041086a28020010230b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041186a2802002201450d062001410c6c450d06200028021410230f0b02402000280204220141014b0d00024020010e020700070b0240200041106a2802002202450d00200041086a280200210120024188026c21020340200110a20320014188026a2101200241f87d6a22020d000b0b2000410c6a2802002201450d0620014188026c450d06200028020810230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d052001410c6c450d05200028020c10230f0b20002d0004417f6a220141034b0d040240024020010e0400060601000b0240200041106a280200450d002000410c6a28020010230b2000411c6a280200450d05200041186a28020010230f0b02402000410c6a280200450d00200041086a28020010230b200041186a280200450d04200041146a28020010230f0b024020002d0004220141044b0d00024002400240024020010e050800010203080b0240200041106a2802002202450d00200041086a2802002101200241b0026c210203402001109e03200141b0026a2101200241d07d6a22020d000b0b2000410c6a2802002201450d07200141b0026c450d07200028020810230f0b200041086a220128020010b402200128020010230f0b02402000410c6a28020041ffffff3f71450d00200041086a28020010230b200041206a220128020010b402200128020010230f0b2000412c6a28020041ffffff3f71450d04200041286a28020010230f0b2000412c6a28020041ffffff3f71450d03200041286a28020010230f0b200041086a2d0000417e6a220141014b0d020240024020010e020001000b0240200041146a2802002202450d002000410c6a2802002201200241c8006c6a21020340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b0240200041106a2802002201450d00200141c8006c450d00200028020c10230b0240200041186a2d00004101470d00200041206a280200450d002000411c6a28020010230b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a28020010230b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a28020010230b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a28020010230b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a28020010230b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a28020010230b200041f0016a2d00004101470d03200041f8016a280200450d03200041f4016a28020010230f0b0240200041146a2802002201450d00200141c4006c21022000410c6a28020041286a210103400240200141786a2d00004101470d002001280200450d002001417c6a28020010230b200141c4006a2101200241bc7f6a22020d000b0b200041106a2802002201450d02200141c4006c450d02200028020c10230f0b20002d0004417f6a220141024b0d010240024020010e03000301000b200041286a220128020010b402200128020010230f0b2000410c6a28020041ffffff3f71450d01200041086a28020010230c010b024020002d0004220141024b0d00024020010e03020002020b200041086a220128020010b402200128020010230f0b200041286a220128020010b402200128020010230f0b0bef0401017f230041306b220224000240024002400240024002400240024020002802000e0701020304050600010b2001411c6a2802002100200128021821012002412c6a41003602002002419ca8c7003602282002420137021c20024184a7c20036021820012000200241186a103121010c060b2002200041046a36020c2002410d3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420137021c2002418ca7c2003602182002200241106a36022820012000200241186a103121010c050b2002200041046a36020c2002410d3602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c20024194a7c2003602182002200241106a36022820012000200241186a103121010c040b2002200028020436020c200241013602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241a4a7c2003602182002200241106a36022820012000200241186a103121010c030b2001411c6a2802002100200128021821012002412c6a41003602002002419ca8c7003602282002420137021c200241b4a7c20036021820012000200241186a103121010c020b2001411c6a2802002100200128021821012002412c6a41003602002002419ca8c7003602282002420137021c200241bca7c20036021820012000200241186a103121010c010b2001411c6a2802002100200128021821012002412c6a41003602002002419ca8c7003602282002420137021c200241c4a7c20036021820012000200241186a103121010b200241306a240020010bba0201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d002000280200210420034120710d012004ad2001103e21000c020b20002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000b20024180016a240020000f0b2004418001419889c0001044000b2004418001419889c0001044000baf0203027f017e057f230041106b220224000240024020012802082203ad420c7e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410421060c010b200510212206450d020b200241003602082002200636020020022005410c6e3602042002410020031095012002280208210602402003450d0020012003410c6c6a210720022802002006410c6c6a21050340200141086a2802002203417f4c0d02200128020021080240024020030d00410121090c010b200310212209450d040b20092008200310a1052108200541086a2003360200200541046a2003360200200520083602002005410c6a2105200641016a21062001410c6a22012007470d000b0b20002002290300370200200041086a2006360200200241106a24000f0b1032000b1033000b980201027f230041206b2202240020022001280218419ca8c70041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041246a36021c200241086a200241186a41c4aac20010592002411c6a41d4aac20010591a20022d0010210002400240200228020c22030d00200021010c010b0240200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d0041012101200028021841979ec00041012000411c6a28020028020c1100000d010b2002280208220128021841989ec00041012001411c6a28020028020c11000021010b200220013a00100b200241206a2400200141ff01714100470b1c00200128021841e4aac200410f2001411c6a28020028020c1100000b130020004103360204200041f4aac2003602000b340020004196cdc20036020420004100360200200041146a4101360200200041106a41d8b5c200360200200041086a42073702000b130020004101360204200041f0b6c2003602000b3901017f02404110102122020d001033000b200242003700082002428080e983b1de16370000200042908080808002370204200020023602000bbd280e047f017e017f017e047f017e017f017e017f017e0e7f017e037f017e230041a0026b22012400200141286a200010bf0220014198016a41186a420037030020014198016a41106a2202420037030020014198016a41086a22034200370300200142003703980141e4dec400ad4280808080e00084100c220429000021052003200441086a290000370300200120053703980120041023419483c500ad4280808080a00284100c22042900002105200141c8006a41086a2206200441086a2900003703002001200537034820041023200220012903482205370300200141e8006a41086a2003290300370300200141e8006a41106a2005370300200141e8006a41186a200629030037030020012001290398013703682001412036023c2001200141e8006a36023820014190026a200141e8006aad220742808080808004841010108b0102400240024002400240024002400240024020012802900222040d00410221030c010b2001280294022108200120014190026a41086a28020036028c012001200436028801200141206a20014188016a108801200128022421090240024020012802200d00200141186a20014188016a10880120012802180d00200128028c01220a200128021c2203490d002003417f4c0d030240024020030d00410121060c010b200310272206450d062006200128028801220b200310a1051a2001200a20036b36028c012001200b20036a360288010b2006450d002003ad22054220862005842105410121030c010b20014100360250200142013703482001410a360284022001200141386a360280022001200141c8006a360244200141ac016a41013602002001420137029c0120014180c5c60036029801200120014180026a3602a801200141c4006a4184a5c20020014198016a10311a2001350250422086200135024884100a0240200128024c450d00200128024810230b410221030b2008450d00200410230b0240024020034102460d002005a721040240024020090d00410121030c010b4100210902402005422088a7200420034101461b4107470d00410121092006419cc9c200460d00419cc9c2002006410710a3054521090b200941017321030b02402004450d00200610230b2003450d010b200141a4016a41002902e8c8423702002001410136029801200141002902e0c84237029c01200141e8006a41186a4200370300200141e8006a41106a22064200370300200141e8006a41086a220342003703002001420037036841e4dec400ad4280808080e00084100c220429000021052003200441086a2900003703002001200537036820041023419483c500ad4280808080a00284100c2204290000210520014190026a41086a2209200441086a29000037030020012005370390022004102320062001290390022205370300200141c8006a41086a2003290300370300200141c8006a41106a2005370300200141c8006a41186a20092903003703002001200129036837034820014100360298022001420137039002410120014190026a1061200141e8006a20014198016a4104721090012001280268210a02400240200128029402220820012802980222046b20012802702206490d002001280290022103200821090c010b200420066a22032004490d07200841017422092003200920034b1b22094100480d070240024020080d00024020090d00410121030c020b2009102122030d010c0a0b200128029002210320082009460d0020032008200910252203450d090b200120093602940220012003360290020b200320046a200a200610a1051a2001200420066a2204360298020240200128026c450d00200a10230b200141c8006aad42808080808004842004ad4220862003ad84100e02402009450d00200310230b20014198016a41186a2208420037030020014198016a41106a2209420037030020014198016a41086a2206420037030020014200370398014189e3c400ad42808080808001842205100c2204290000210c200141c8006a41086a2203200441086a2900003703002001200c370348200410232006200329030037030020012001290348370398014191e3c400ad4280808080f00084100c2204290000210c2003200441086a2900003703002001200c3703482004102320092001290348220c370300200141e8006a41086a22042006290300370300200141e8006a41106a220a200c370300200141e8006a41186a220b2003290300370300200120012903980137036820074280808080800484220c101220084200370300200942003703002006420037030020014200370398012005100c220d290000210e2003200d41086a2900003703002001200e370348200d10232006200329030037030020012001290348370398014198e3c400ad4280808080e00284100c220d290000210e2003200d41086a2900003703002001200e370348200d102320092001290348220e37030020042006290300370300200a200e370300200b20032903003703002001200129039801370368200c101220084200370300200942003703002006420037030020014200370398012005100c220d29000021052003200d41086a29000037030020012005370348200d102320062003290300370300200120012903483703980141ac94c500ad4280808080a00284100c220d29000021052003200d41086a29000037030020012005370348200d102320092001290348220537030020042006290300370300200a2005370300200b20032903003703002001200129039801370368200c1012200141c8006a41186a220a4200370300200141c8006a41106a220f42003703002003420037030020014200370348418fcdc200ad4280808080f000842205100c220b290000210c2004200b41086a2900003703002001200c370368200b1023200320042903003703002001200129036837034841a48fc600ad4280808080e00184100c220b290000210c2004200b41086a2900003703002001200c370368200b1023200f2001290368220c370300200620032903003703002009200c37030020082004290300370300200120012903483703980141011021220b450d07200b41023a000020014198016aad42808080808004842210200bad42808080801084100e200b1023200a4200370300200f420037030020034200370300200142003703482005100c220b290000210c2004200b41086a2900003703002001200c370368200b10232003200429030037030020012001290368370348418cdbc100ad4280808080a00184100c220b290000210c2004200b41086a2900003703002001200c370368200b1023200f2001290368370000200f41086a220d2004290300370000200620032903003703002009200f2903003703002008200a2903003703002001200129034837039801200141106a20014198016a412010cd012001280214211120012802102112200a4200370300200f420037030020034200370300200142003703482005100c220b290000210c2004200b41086a2900003703002001200c370368200b102320032004290300370300200120012903683703484190d8c100ad4280808080c00184100c220b290000210c2004200b41086a2900003703002001200c370368200b1023200f2001290368370000200d2004290300370000200620032903003703002009200f2903003703002008200a2903003703002001200129034837039801200141086a20014198016a412010cd01200128020c2109200128020821082005100c2203290000210520014190026a41086a200341086a290000370300200120053703900220031023411010212203450d072003200129039002370000200341086a20014190026a41086a220429030037000041dcc4c000ad4280808080e00084100c220629000021052004200641086a29000037030020012005370390022006102320034110412010252203450d072003200129039002370010200341186a22062004290300370000412010212204450d032011410020121b211320042003290000370000200441186a2006290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141386a41026a220620014198016a41026a2d00003a0000200120012f0098013b0138200141c8006a41106a42a08080808004370300200141013a006020012004360254200142a0808080800437024c20012003360248200141e3006a20062d00003a0000200120012f01383b006120014198016a200141c8006a10c0020240200141d4016a28020022034102460d0041002013200941d40020081b6b2204200420134b1b2114200141d0016a2112200141c4016a211520014198016a41206a2116200141dc016a2117200141c8016a2118200141c0016a2119034020014188016a41086a221a201841086a280200360200200141e8006a41086a221b201741086a290200370300200141e8006a41106a221c201741106a290200370300200141e8006a41186a221d201741186a2902003703002001201829030037038801200120172902003703682019290300210520014198016a41186a221e290300210c20012903b801210e20012903a801211f20012802a0012120200128029c012121200128029801212220012802d8012106200141003602a001200142043703980141002104024002402006410020031b220320144922060d004100200320146b2204200420034b1b220941016a220420094f0d004104210d41012106410021084100210a201421040340200420034f210b200420042003496a210902402006417f6a200a470d0020014198016a200a417f41004100417f4100200320096b220d200d20034b1b220d41016a22112011200d491b200b1b20032009491b220d41016a22112011200d491b1079200128029801210d0b200d20086a2004360200200120063602a001200920034b200b720d02200841046a2108200641016a2106200128029c01210a200921040c000b0b20014198016a41002004107920012802a0012109024020060d0020012802980120094102746a210402400240200320144d0d0020142106034020042006360200200441046a21042003200641016a2206470d000b200320146b20096a21090c010b20032014470d010b20042003360200200941016a21090b200120093602a0010b20014180026a41086a20014198016a41086a28020022033602002001200129039801222337038002201e20053703002016200129038801370300201641086a201a28020036020020152023370200201541086a200336020020122001290368370200201241086a201b290300370200201241106a201c290300370200201241186a201d2903003702002001200e3703a8012001200c3703a0012001201f37039801202041206a2204417f4c0d032004450d04200410272203450d052004410f4d0d06418fcdc200ad4280808080f00084100c2209290000210520014190026a41086a2206200941086a290000370300200120053703900220091023200341086a200629030037000020032001290390023700002004411f4d0d0741dcc4c000ad4280808080e00084100c220929000021052006200941086a290000370300200120053703900220091023200341186a20062903003700002003200129039002370010200341206a2022202010a1051a2001200436029402200120033602900220014198016a20014190026a10850220031023024020012802bc012203450d00200341186c450d0020012802b80110230b024020012802c80141ffffffff0371450d0020012802c40110230b02402021450d00202210230b20014198016a200141c8006a10c00220012802d40122034102470d000b0b0240200128024c450d00200128024810230b02402001280258450d00200128025410230b200141c8006a41186a22094200370300200141c8006a41106a22084200370300200141c8006a41086a2204420037030020014200370348418fcdc200ad4280808080f00084100c22062900002105200141e8006a41086a2203200641086a2900003703002001200537036820061023200420032903003703002001200129036837034841f4e5c100ad4280808080a00184100c220629000021052003200641086a2900003703002001200537036820061023200f2001290368370000200f41086a200329030037000020014198016a41086a200429030037030020014198016a41106a200829030037030020014198016a41186a2009290300370300200120012903483703980120012013360268201020074280808080c00084100e4190ce0010c1020b20002802002203200041106a200041d0006a200141286a410110c202200310c30210c102200142003703900220014198016a41186a2206420037030020014198016a41106a2209420037030020014198016a41086a22034200370300200142003703980141e4dec400ad4280808080e00084100c220429000021052003200441086a29000037030020012005370398012004102341d483c500ad4280808080e00184100c22042900002105200141c8006a41086a2208200441086a290000370300200120053703482004102320022001290348370000200241086a2008290300370000200141e8006a41086a2003290300370300200141e8006a41106a2009290300370300200141e8006a41186a200629030037030020012001290398013703682001412036029c012001200141e8006a3602980120014190026a20014198016a10c40220012802282109024020012802302203450d00200341246c21042009210303400240024020032d0000220641044b0d0002400240024020060e050400010204040b2003410c6a280200450d03200341086a28020010230c030b2003410c6a280200450d02200341086a28020010230c020b2003410c6a280200450d01200341086a28020010230c010b200341086a280200450d00200341046a28020010230b200341246a21032004415c6a22040d000b0b0240200128022c2203450d00200341246c450d00200910230b200141a0026a24000f0b1032000b4110410041d492c7001043000b1033000b4110200441d492c7001043000b4120200441d093c7001043000b102c000b102a000bab03010c7f230041306b220224004100210320024100360208200242043703000240024002402001410c6a28020041246c2204450d0020012802042101410421050340024020012d00004101470d00200141106a2802002206417f4c0d03200141036a2d00002107200141016a2f00002108200141086a2802002109200141046a2d0000210a0240024020060d004101210b4100210c0c010b2006210c20061021220b450d050b20082007411074722108200b2009200610a1052109200241206a41086a220b200241106a41086a29020037030020022002290210370320200d41807e71200a72210d024020032002280204470d0020022003410110a20120022802002105200228020821030b2005200341246c6a220720063602102007200c36020c200720093602082007200d360204200720083b0001200741013a0000200741036a20084110763a0000200720022903203702142007411c6a200b2903003702002002200341016a22033602080b200141246a21012004415c6a22040d000b0b20002002290300370200200041086a200241086a280200360200200241306a24000f0b1032000b1033000bee0b09057f017e027f017e047f047e077f047e037f230041e0016b22022400200241b8016a200141146a350200422086200135020c841019108b010240024020022802b8012203450d00200141086a2104200141106a2105024002400340024002402004280200220620022902bc012207422088a722084b0d00200128020022092003460d0120092003200610a305450d010b2007a7450d04200310230c040b02402008417f4c0d000240024020080d0041012106410021090c010b20082109200810212206450d030b20062003200810a105210602402005280200450d00200128020c10230b200120083602142001200636020c200520093602002002200836025420022003360250200241d8006a2007428080808070832003ad84220a1010108b01024020022802582209450d00200228025c210b20022002280260220c36028c01200220093602880141002108200241003a00d8010240024002400240024002400340200c2008460d01200241b8016a20086a200920086a22062d00003a00002002200641016a360288012002200841016a22063a00d8012006210820064120470d000b20024198016a41086a2208200241b8016a41086a29030037030020024198016a41106a220d200241b8016a41106a29030037030020024198016a41186a220e200241b8016a41186a290300370300200220022903b801370398012002200c20066b36028c01200241186a20024188016a1080022002290318a70d04200241186a41106a290300210f20022903202110200220024188016a1080022002290300a70d04200241106a290300211120022903082112200241b8016a20024188016a10b20420022802b8012213450d0420022802bc01210c200228028c012214450d0320022802c001211520022014417f6a221636028c012002200228028801221741016a3602880120172d0000221841014b0d034100210620180e020201020b2002410036028c01200841ff0171450d03200241003a00d8010c030b20164104490d0120022014417b6a36028c012002201741056a3602880120172800012119410121060b200241e8006a41186a200e290300221a370300200241306a41086a2008290300370300200241306a41106a200d290300370300200241306a41186a201a3703002002200229039801370330410021082010211a200f211b2012211c2011211d2013211e200c211f201521200c020b200c450d00200c41186c450d00201310230b200241003602a00120024201370398012002410a36026c2002200241d0006a360268200220024198016a36029401200241013602cc01200242013702bc0120024180c5c6003602b8012002200241e8006a3602c80120024194016a4184a5c200200241b8016a10311a20023502a00142208620023502980184100a0240200228029c01450d0020022802980110230b41022106410121080b0240200b450d00200910230b20080d00200241b8016a41186a200241306a41186a290300370300200241b8016a41106a200241306a41106a290300370300200241b8016a41086a200241306a41086a290300370300200220022903303703b801024020012d0018450d00200a10110b20012802142208200141086a2802002209490d04200820096b2208417f4c0d01200128020c210c0240024020080d0041002101410121050c010b20082101200810212205450d040b2005200c20096a200810a1052109200041286a201d3702002000201c370220200041186a201b3702002000201a370210200020193602402000200636023c200020203602382000201f3602342000201e360230200020083602082000200136020420002009360200200041c4006a20022903b801370200200041cc006a200241c0016a290300370200200041d4006a200241c8016a290300370200200041dc006a200241b8016a41186a2903003702002007a7450d06200310230c060b02402007a7450d00200310230b200241b8016a2001350214422086200135020c841019108b0120022802b80122030d010c040b0b1032000b1033000b2009200841cc96c7001044000b2000410236023c0b200241e0016a24000bad0407047f017e017f017e017f017e057f230041e0006b22012400200141306a41186a22024200370300200141306a41106a22034200370300200141306a41086a220442003703002001420037033041e4dec400ad4280808080e000842205100c22062900002107200141d0006a41086a2208200641086a2900003703002001200737035020061023200420082903003703002001200129035037033041e8ffc400ad4280808080b002842207100c220629000021092008200641086a2900003703002001200937035020061023200320012903502209370300200141106a41086a220a2004290300370300200141106a41106a220b2009370300200141106a41186a220c200829030037030020012001290330370310200141086a200141106a412010cd01200128020c210d2001280208210e200242003703002003420037030020044200370300200142003703302005100c220629000021052008200641086a290000370300200120053703502006102320042008290300370300200120012903503703302007100c220629000021052008200641086a2900003703002001200537035020061023200320012903502205370300200a2004290300370300200b2005370300200c2008290300370300200120012903303703102001417f200d4100200e1b220820006a220420042008491b2208418094ebdc032008418094ebdc03491b360230200141106aad4280808080800484200141306aad4280808080c00084100e200141e0006a24000b931107047f017e017f017e037f017e017f230041e0006b2205240020054102360208200541306a41186a22064200370300200541306a41106a22074200370300200541306a41086a220842003703002005420037033041e4dec400ad4280808080e000842209100c220a290000210b200541d0006a41086a220c200a41086a2900003703002005200b370350200a10232008200c2903003703002005200529035037033041d483c500ad4280808080e00184100c220a290000210b200c200a41086a2900003703002005200b370350200a102320072005290350220b370300200541106a41086a220a2008290300370300200541106a41106a220d200b370300200541106a41186a220e200c29030037030020052005290330370310200541203602342005200541106a360230200541086a200541306a10c4022005410036023041d7ddc400ad4280808080800284200541306aad4280808080c00084220f100e200642003703002007420037030020084200370300200542003703302009100c2210290000210b200c201041086a2900003703002005200b370350201010232008200c2903003703002005200529035037033041f3dec400ad4280808080e00084100c2210290000210b200c201041086a2900003703002005200b3703502010102320072005290350220b370300200a2008290300370300200d200b370300200e200c2903003703002005200529033037031020052000360230200541106aad4280808080800484220b200f100e200642003703002007420037030020084200370300200542003703302009100c2210290000210f200c201041086a2900003703002005200f370350201010232008200c290300370300200520052903503703304191dfc400ad4280808080e00084100c2210290000210f200c201041086a2900003703002005200f3703502010102320072005290350220f370300200a2008290300370300200d200f370300200e200c29030037030020052005290330370310200541203602342005200541106a36023020032802002003280208200541306a10f802200642003703002007420037030020084200370300200542003703302009100c22062900002109200c200641086a29000037030020052009370350200610232008200c2903003703002005200529035037033041f9dec400ad4280808080a00184100c22062900002109200c200641086a2900003703002005200937035020061023200720052903502209370300200a2008290300370300200d2009370300200e200c29030037030020052005290330370310024041201021220c450d00200c2001290000370000200c41186a200141186a290000370000200c41106a200141106a290000370000200c41086a200141086a290000370000200b200cad4280808080800484100e200c1023200541306a2000417f6a10d403200535023821092005280230210841201021220c450d00200c2001290000370000200c41186a200141186a290000370000200c41106a200141106a290000370000200c41086a200141086a29000037000020094220862008ad84200cad4280808080800484100e200c102302402005280234450d00200810230b200541306a41186a22064200370300200541306a41106a220a4200370300200541306a41086a220842003703002005420037033041e4dec400ad4280808080e00084100c22012900002109200541d0006a41086a220c200141086a29000037030020052009370350200110232008200c290300370300200520052903503703304183dfc400ad4280808080e00184100c22012900002109200c200141086a290000370300200520093703502001102320072005290350370000200741086a200c290300370000200541106a41086a2008290300370300200541106a41106a200a290300370300200541106a41186a20062903003703002005200529033037031041201021220c450d00200c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200b200cad4280808080800484100e200c102302402004450d00200541306a41186a22014200370300200541306a41106a22024200370300200541306a41086a220842003703002005420037033041e4dec400ad4280808080e000842209100c2206290000210f200541d0006a41086a220c200641086a2900003703002005200f370350200610232008200c2903003703002005200529035037033041c0e3c400ad4280808080e00084100c2206290000210f200c200641086a2900003703002005200f3703502006102320072005290350370000200741086a2206200c290300370000200541106a41086a220a2008290300370300200541106a41106a220d2002290300370300200541106a41186a220e200129030037030020052005290330370310200b1011200142003703002002420037030020084200370300200542003703302009100c2203290000210f200c200341086a2900003703002005200f370350200310232008200c2903003703002005200529035037033041e481c500ad4280808080a00184100c2203290000210f200c200341086a2900003703002005200f37035020031023200720052903503700002006200c290300370000200a2008290300370300200d2002290300370300200e200129030037030020052005290330370310200b1011200142003703002002420037030020084200370300200542003703302009100c22032900002109200c200341086a29000037030020052009370350200310232008200c2903003703002005200529035037033041eae9c400ad4280808080b00184100c22032900002109200c200341086a2900003703002005200937035020031023200720052903503700002006200c290300370000200a2008290300370300200d2002290300370300200e200129030037030020052005290330370310200b10120b200541e0006a24000f0b1033000ba67e07047f017e047f017e1b7f097e037f230022012102200141e0196b41607122032400200320003602182003418094ebdc0336021c200341f8076a2000108a0420032802f8072104200320032802800822013602e407200320043602e007200341b00a6a2001ad4220862004ad8422051010108b01024002400240024002400240024020032802b00a22060d00410021010c010b20032802b40a21072003200341b80a6a2802003602a40f200320063602a00f200341106a200341a00f6a1088010240024002402003280210450d0041002101200341003602e80c410121080c010b2003280214220920032802a40f220141d0026e2208200820094b1bad42d0027e220a422088a70d04200aa7220b417f4c0d0402400240200b0d004108210c0c010b200b1021220c450d040b41002108200341003602b80f2003200c3602b00f2003200b41d0026e3602b40f0240024020090d000c010b2009417f6a210b0340024002402001450d0020032802a00f220d2d0000210e20032001417f6a220f3602a40f2003200d41016a3602a00f200e41014b0d00410221090240200e0e020200020b024002400240200f0d00410221090c010b200d2d0001210e20032001417e6a220f3602a40f410221092003200d41026a3602a00f02400240200e41014b0d0041002101024002400240200e0e020100010b200341086a200341a00f6a10880120032802080d0220032802a40f200328020c220e490d02200e417f4c0d0e02400240200e0d00410121010c010b200e10272201450d0e20032802a40f200e490d02200120032802a00f200e10a1051a20032802a40f220d200e490d042003200d200e6b3602a40f200320032802a00f200e6a3602a00f0b2001450d02200ead220a422086200a84210a20032802a40f210f0b200aa7210e02400240024002400240200f450d0020032802a00f22102d0000210d2003200f417f6a3602a40f2003201041016a3602a00f200341a0146a200341a00f6a10990320032802a0144116460d0320034180176a200341a0146a41b00210a1051a20032802a40f220f450d0420032802a00f22112d000021102003200f417f6a22123602a40f2003201141016a3602a00f201041014b0d044100210920100e020201020b2001450d07200e450d070c040b20124104490d02201128000121102003201141056a3602a00f2003200f417b6a22093602a40f20094104490d02201128000521132003200f41776a3602a40f2003201141096a3602a00f41012109201021140b200a422088a72115200341a0146a20034180176a41b00210a1051a200320032800f0073602d8072003200341f0076a41036a2800003600db070c060b2001450d04200e450d040c010b20034180176a10b4022001450d01200e450d010b200110230b2016210d2017210e20182101410221090c020b200e200d418ca9c0001044000b2016210d2017210e201821010b200341e8116a200341a0146a41b00210a1051a200320032800db0736008b05200320032802d80736028805024020094102460d00200341d8026a200341e8116a41b00210a1051a2003200328008b053600d30220032003280288053602d00220152119200e211a2001211b200d211c2013211d2014211e200d2116200e2117200121180c020b200d2116200e2117200121180b410321090b200341a0056a200341d8026a41b00210a1051a200320032800d30236009b05200320032802d00236029805024020094103460d00200341206a200341a0056a41b00210a1051a2003200328009b05360093052003200328029805360290050240200820032802b40f470d00200341b00f6a2008410110ab0120032802b00f210c20032802b80f21080b200c200841d0026c6a200341206a41b00210a105220141c8026a201c3a0000200141c4026a201d3602002001201e3602c002200120093602bc02200120193602b8022001201a3602b4022001201b3602b002200141c9026a200328029005360000200141cc026a2003280093053600002003200841016a22083602b80f200b450d02200b417f6a210b20032802a40f21010c010b0b200341003602e80c02402008450d00200841d0026c2108200c210103400240200141bc026a2802004102460d000240200141b0026a2802002209450d00200141b4026a280200450d00200910230b2001109e030b200141d0026a2101200841b07d6a22080d000b0b024020032802b40f2201450d00200141d0026c450d00200c10230b41002101410121080c010b200341e80c6a41086a200341b00f6a41086a280200360200200320032903b00f220a3703e80c200aa722014521082001450d0020032902ec0c210a0c010b200341003602881720034201370380172003410a3602ec112003200341e0076a3602e811200320034180176a3602b00f200341b4146a4101360200200342013702a41420034180c5c6003602a0142003200341e8116a3602b014200341b00f6a4184a5c200200341a0146a10311a20033502881742208620033502801784100a0240200328028417450d0020032802801710230b0b02402007450d00200610230b02402008450d00410021010c010b200510110b200a420020011b210a024020032802fc07450d00200410230b2001410820011b221f200a422088a7220841d0026c220b6a2109200aa72120201f2101024002402008450d00200b41b07d6a210c200341e8116a41046a2117200341b00f6a41046a210f200341e80c6a41046a21074100210b201f210102400340200341206a200141b00210a1051a200141c8026a2d00002104200141c4026a280200210d200141c0026a2802002119200141b8026a280200211a200141b4026a280200211b200141b0026a2802002106200141bc026a28020021082003200141cc026a280000360093052003200141c9026a28000036029005024020084103470d00200141d0026a21010c030b2007200341206a41b00210a1052116200341b00f6a200341e80c6a41b40210a1051a200341d8026a200f41b00210a1051a20032003280093053600d30220032003280290053602d0020240024020084102470d004101210e0c010b2017200341d8026a41b00210a1051a200341b00a6a200341e8116a41b40210a1051a200320032800d3023600f307200320032802d0023602f0074100210e20062118201b2115201a211320042114200d211020192111200b21120b200341f8076a200341b00a6a41b40210a1051a200320032800f3073600db07200320032802f0073602d807200e450d01200b41016a210b200c41b07d6a210c200141d0026a22012009470d000b200921010c010b200341a0056a200341f8076a41b40210a1051a200320032800db0736009b05200320032802d80736029805200341a0146a200341a0056a41b40210a1051a2003200328009b053600a30f20032003280298053602a00f200141d0026a210120084102460d0020034180176a200341a0146a41b40210a1051a200320032800a30f3600e307200320032802a00f3602e007200341a0146a20034180176a41b40210a1051a200320032800e3073600eb11200320032802e0073602e81141d80210212207450d0220072012360200200741046a200341a0146a41b40210a1051a200720143a00d002200720103602cc02200720113602c802200720083602c402200720133602c002200720153602bc02200720183602b802200720032802e8113600d102200741d4026a20032800eb113600002009210802400240200c450d00200b41016a210c200341e80c6a41046a210602400340200341a0056a200141b00210a1051a200141c8026a2d0000210e200141c4026a2802002104200141c0026a280200210d200141b8026a2802002119200141b4026a280200211a200141b0026a280200211b200141bc026a280200210b2003200141cc026a2800003600f3072003200141c9026a2800003602f0070240200b4103470d00200141d0026a21080c030b2006200341a0056a41b00210a1051a200341b00f6a200341e80c6a41b40210a1051a200341d8026a200f41b00210a1051a200320032800f3073600d302200320032802f0073602d00202400240200b4102470d00410121080c010b2017200341d8026a41b00210a1051a200341b00a6a200341e8116a41b40210a1051a200320032800d3023600a30f200320032802d0023602a00f200320032802a00f36029805200320032800a30f36009b0541002108201b2121201a212220192123200e211c2004211d200d211e200c21240b200341f8076a200341b00a6a41b40210a1051a2003200328009b05360093052003200328029805360290052008450d01200c41016a210c200141d0026a22012009470d000b200921080c010b200341a0146a200341f8076a41b40210a1051a2003412c6a200328009305360000200320233602dc16200320223602d816200320213602d4162003201c3a00282003201d3602242003201e3602202003200328029005360029200141d0026a21084101211c0240200b4102470d004101211d0c020b200c41016a210120034180176a200341a0146a41c00210a1051a200341e0076a41086a2206200341206a41086a290300370300200320032903203703e007200341a90f6a211e4101211d4101211c024002400340200341a0146a20034180176a41c00210a1051a200341e8116a41086a220e2006290300370300200320032903e0073703e8110240201c201d470d000240024002400240201d41016a220c201d490d00201d4101742204200c2004200c4b1bad42d8027e220a422088a70d00200aa7220c4100480d000240201d0d00200c0d02410821070c040b201d41d8026c2204200c460d0320040d02200c0d01410821070c030b102c000b200c102122070d010c040b20072004200c10252207450d030b200c41d8026e211d0b2007201c41d8026c6a220c2024360200200c41046a200341a0146a41c00210a1051a200c41c4026a200b360200200c41c8026a20032903e811370300200c41d0026a200e290300370300201c41016a211c024020082009470d00200921080c050b02400340200341206a200841b00210a1051a200841c8026a2d0000210e200841c4026a2802002104200841c0026a280200210d200841b8026a2802002119200841b4026a280200211a200841b0026a280200211b200841bc026a280200210b2003200841cc026a280000360093052003200841c9026a280000360290050240200b4103470d00200841d0026a21080c070b2016200341206a41b00210a1051a200341b00f6a200341e80c6a41b40210a1051a200341d8026a200f41b00210a1051a20032003280093053600d30220032003280290053602d00202400240200b4102470d004101210c0c010b2017200341d8026a41b00210a1051a200341b00a6a200341e8116a41b40210a1051a200320032800d30236008b05200320032802d0023602880520032003280288053602f0072003200328008b053600f3074100210c201b2118201a211520192113200e211420042110200d2111200121120b200341f8076a200341b00a6a41b40210a1051a200320032800f3073600db07200320032802f0073602d807200c450d01200141016a2101200841d0026a22082009470d000b200921080c050b200341a0056a200341f8076a41b40210a1051a200320032800db0736009b05200320032802d80736029805200341a0146a200341a0056a41b40210a1051a201e200328029805360000201e41036a200328009b05360000200320133602dc16200320153602d816200320183602d416200320143a00a80f200320103602a40f200320113602a00f200b4102460d02200841d0026a2108200141016a210120034180176a200341a0146a41c00210a1051a2006200341a00f6a41086a290300370300200320032903a00f3703e007201221240c000b0b102a000b200841d0026a21080c010b4101211c4101211d0b024020092008460d000340200841d0026a21010240200841bc026a2802004102460d000240200841b0026a280200220b450d00200841b4026a280200450d00200b10230b2008109e030b2001210820092001470d000b0b02402020450d00202041d0026c450d00201f10230b0240201c4115490d00201c410176ad42d8027e220a422088a70d04200aa72210417f4c0d04201010212215450d034100210120034100360288172003420437038017200741a87d6a2113200741c87a6a21144104210841002106201c210f0340200f21044100210f4101210e02402004417f6a2216450d000240024002400240024002402007201641d8026c6a41d0026a2d0000200441d8026c221920076a41a07d6a2d0000220b490d002004417e6a210d201420196a210c4100210f4100210903400240200d2009470d002004210e0c080b200941016a2109200b41ff0171210e200c2d0000210b200c41a87d6a210c200e200b4f0d000b200941016a210e2009417f7320046a21090c010b201420196a210c2016210902400340024020094101470d00410021090c020b2009417f6a2109200b41ff0171210e200c2d0000210b200c41a87d6a210c200e200b490d000b0b20042009490d022004201c4b0d01200420096b220e410176220d450d002007200941d8026c6a210b201320196a210c0340200341a0146a200b41d80210a1051a200b200c41d80210a20541d8026a210b200c200341a0146a41d80210a10541a87d6a210c200d417f6a220d0d000b0b024020090d002009210f0c050b0240200e41094d0d002009210f0c050b2004201c4b0d022007200941d8026c6a2119034020042009417f6a220f490d0402402004200f6b220e4102490d002007200941d8026c6a220c41d0026a2d00002007200f41d8026c6a220b41d0026a2d0000221b4f0d00200341a0146a200b41d00210a1051a2003200b41d4026a2800003600f3072003200b41d1026a2800003602f007200b200c41d80210a105211a0240200e4103490d002016210d2019210b201a4180086a2d0000201b4f0d000340200b200b41d8026a220c41d80210a105211a2009200d417f6a220d460d01200c210b201a4180086a2d0000201b490d000b0b200c200341a0146a41d00210a105220941d0026a201b3a0000200941d1026a20032802f007360000200941d4026a20032800f3073600000b200f450d05201941a87d6a2119200f2109200e410a4f0d050c000b0b2004201c41d089c7001043000b2009200441d089c7001044000b20042009417f6a220f490d002004201c41e089c7001043000b200f200441e089c7001044000b02402006200328028417470d0020034180176a2006410110a5012003280280172108200328028817220121060b200820064103746a2209200e3602042009200f3602002003200141016a22013602881720012106024020014102490d000240024003400240024002400240024020082001417f6a4103746a2209280200450d00200141037420086a220e41746a280200220c2009280204220b4b0d010b20014103490d022009280204210b20082001417d6a221a4103746a28020421090c010b41022106200141024d0d0620082001417d6a221a4103746a2802042209200b200c6a4d0d0041032106200141034d0d06200e41646a2802002009200c6a4b0d050b2009200b490d010b2001417e6a211a0b02400240024002400240024002402001201a41016a221b4d0d002001201a4d0d012008201a41037422166a2201280204221720012802006a22012008201b41037422186a22082802002206490d022001201c4b0d032007200641d8026c6a220d2008280204221941d8026c22086a210b200141d8026c210e200120066b220c20196b220120194f0d042015200b200141d8026c220810a105220c20086a210920194101480d0520014101480d052013200e6a210e200b21080340200e200841a87d6a220b200941a87d6a2204200941786a2d0000200841786a2d00004922011b41d80210a105210e2009200420011b21090240200d200b200820011b2208490d00200c21010c080b200e41a87d6a210e200c2101200c2009490d000c070b0b201b200141f089c7001030000b201a200141808ac7001030000b2006200141908ac7001044000b2001201c41908ac7001043000b2015200d200810a105220120086a2109024020194101480d00200c20194c0d002007200e6a210420012101200d21080340200b2001200b41d0026a2d0000200141d0026a2d000049220c1b210e2001200141d8026a200c1b21012008200e41d80210a10541d8026a2108200b41d8026a200b200c1b220b20044f0d03200920014b0d000c030b0b200d2108200121010c010b200b2108200c21010b20082001200920016b2209200941d802706b10a1051a02402003280288172201201a4d0d00200328028017220820166a2209201720196a360204200920063602002001201b4d0d02200820186a2209200941086a2001201b417f736a41037410a2051a20032001417f6a220136028817200141014b0d010c030b0b201a200141a08ac7001030000b201b2001103b000b200121060b200f0d000b024020032802841741ffffffff0171450d00200810230b201041d802702101201041d802490d0220102001460d02201510230c020b201c4102490d01201c417f6a21082007201c41d8026c6a210b4100210c0340024002400240201c20082201417f6a2208490d00201c20086b220e4102490d022007200141d8026c6a220141d0026a2d00002007200841d8026c6a220941d0026a2d000022044f0d02200341a0146a200941d00210a1051a2003200941d4026a2800003600f3072003200941d1026a2800003602f0072009200141d80210a105210d200e4103490d01200c2109200b210e200d4180086a2d000020044f0d010340200e220141a87d6a200141d80210a1051a2009417f6a2209450d02200141d8026a210e200141a8056a2d000020044f0d020c000b0b2008201c41c089c7001044000b2001200341a0146a41d00210a105220141d0026a20043a0000200141d1026a20032802f007360000200141d4026a20032800f3073600000b200c41016a210c200b41a87d6a210b20080d000c020b0b024020092001460d000340200141d0026a21080240200141bc026a2802004102460d000240200141b0026a280200220b450d00200141b4026a280200450d00200b10230b2001109e030b2008210120092008470d000b0b4100211d4108210702402020450d00202041d0026c450d00201f10230b4100211c0b200341003602b00a200341d00f6a200341b00a6a360200200341cc0f6a200341186a360200200342003703c00f20032007201c41d8026c6a3602bc0f200320073602b80f2003201d3602b40f200320073602b00f20032003411c6a3602c80f20034180176a200341b00f6a108b04024002400240024020032802bc194103460d00200341a0146a20034180176a41d00210a1051a41d0021021220b450d04200b200341a0146a41d00210a105210120034281808080103702ec0c200320013602e80c200341e8116a41206a200341b00f6a41206a280200360200200341e8116a41186a200341b00f6a41186a290300370300200341e8116a41106a200341b00f6a41106a290300370300200341e8116a41086a200341b00f6a41086a290300370300200320032903b00f3703e81120034180176a200341e8116a108b04024020032802bc194103470d00410121080c020b4102210841d0022101410121090340200341a0146a20034180176a41d00210a1051a02402008417f6a2009470d00200341e80c6a2009410110ab0120032802e80c210b0b200b20016a200341a0146a41d00210a1051a200320083602f00c20034180176a200341e8116a108b0420032802bc194103460d02200141d0026a2101200841016a210820032802ec0c21090c000b0b20032802bc0f20032802b80f22096b220141d8026d210802402001450d00200841d8026c2108200941bc026a2101034002402001417c6a2802002209450d002001280200450d00200910230b200141cc7d6a109e03200141d8026a2101200841a87d6a22080d000b0b024020032802b40f2201450d00200141d8026c450d0020032802b00f10230b4100210c4108210b0c010b20032802f41120032802f011220c6b220141d8026d210902402001450d00200941d8026c2109200c41bc026a2101034002402001417c6a280200220c450d002001280200450d00200c10230b200141cc7d6a109e03200141d8026a2101200941a87d6a22090d000b0b024020032802ec112201450d00200141d8026c450d0020032802e81110230b20032802ec0c210c2008450d00200328021841016a200b2008108c04200841d0026c210820032802b00a2125200b210103400240200141bc026a2802004102460d000240200141b0026a2802002209450d00200141b4026a280200450d00200910230b2001109e030b200141d0026a2101200841b07d6a22080d000c020b0b20032802b00a21250b0240200c450d00200c41d0026c450d00200b10230b200341e8116a41086a2208420037030041002104200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41fcdfc300ad4280808080f00184100c22012900002105200341a00f6a41086a220b200141086a290000370300200320053703a00f200110232008200b2903002205370300200341a0146a410c6a20032800b30a360000200341b8146a2005370200200320032903a00f22053703e811200320093a00a8142003200a3702a014200320032802b00a3600a914200320053702b01420034180176a200341a0146a108f03024002400240200328028017220b0d0041002109200341003602b80f200342043703b00f4104210b41002101410021084100210441002115410421180c010b200329028417210a2003200b3602b00f2003200a3702b40f200aa721090240200a422088a7220141024f0d004104211820012108410021150c010b200b2802082104200b2802042115200b2802002118200b200b410c6a2001417f6a2201410c6c10a2051a200320013602b80f41012108200141014b0d010b0340024020082009470d00200341b00f6a2009410110950120032802b00f210b20032802b80f220121080b200b2008410c6c6a22084100360208200842043702002003200141016a22013602b80f200141014b0d0120032802b40f2109200121080c000b0b200341b0146a2122200341a9146a212320034180176a41086a2208200341b00f6a41086a280200360200200320032903b00f220a3703801702400240200aa7220b0d00200341e8116a41086a22084200370300200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41fcdfc300ad4280808080f00184100c22012900002105200341a00f6a41086a220b200141086a290000370300200320053703a00f200110232008200b2903002205370300200320032903a00f22263703e811202320032802b00a360000202341036a20032800b30a36000020222026370000202241086a2005370000200320093a00a8142003200a3702a014200341a0146aad428080808080048410110c010b200341e8116a41086a22094200370300200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210c20011023200320032800a30f3600b30a200320032802a00f3602b00a41fcdfc300ad4280808080f00184100c22012900002105200341a00f6a41086a220e200141086a290000370300200320053703a00f200110232009200e2903002205370300200320032903a00f22263703e811202320032802b00a360000202341036a20032800b30a36000020222026370000202241086a20053700002003200c3a00a8142003200a3702a014200341203602ec112003200341a0146a3602e81120034180176a200341e8116a109003024020082802002201450d002001410c6c2108200b210103400240200141046a2802002209450d00200941246c450d00200128020010230b2001410c6a2101200841746a22080d000b0b2003280284172201450d002001410c6c450d00200b10230b200341e8116a41086a220842003703004100211a200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41a4e2c300ad4280808080a00184100c22012900002105200341a00f6a41086a220b200141086a290000370300200320053703a00f200110232008200b2903002205370300200320032903a00f22263703e811202320032802b00a360000202341036a20032800b30a36000020222026370000202241086a2005370000200320093a00a8142003200a3702a01420034180176a200341a0146a108f03200329028417420020032802801722081b220a422088a72219410c6c21012008410420081b220d41746a210841012109024003402009211b024020010d000c020b200141746a2101201b41016a2109200841146a210b2008410c6a220c2108200b280200220b450d000b20034180176a41086a200c2802002201410c6a29020037030020034190176a200141146a29020037030020032001290204370380172001411c6a29020021272001280200210e2001200141246a200b417f6a220841246c10a2051a200c41086a20083602004101211a0b2003200d3602e80c2003200a3702ec0c200341e8116a41086a22084200370300200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210520012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41a4e2c300ad4280808080a00184100c22012900002126200341a00f6a41086a220b200141086a290000370300200320263703a00f200110232008200b2903002226370300200320032903a00f22283703e811202320032802b00a360000202341036a20032800b30a36000020222028370000202241086a2026370000200320093a00a814200320053702a014200341203602ec112003200341a0146a3602e811200341e80c6a200341e8116a109003200aa7210b02402019450d002019410c6c2108200d210103400240200141046a2802002209450d00200941246c450d00200128020010230b2001410c6a2101200841746a22080d000b0b0240200b450d00200b410c6c450d00200d10230b200341b00f6a41086a220b20034180176a41086a290300370300200341b00f6a41106a220c20034180176a41106a29030037030020032003290380173703b00f410021060240201a450d00200441246c2101201821080340024020010d00410121060c020b2001415c6a210120082802002109200841246a21082009200e470d000b410021060b200341e8116a41086a22084200370300200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41b0dfc300ad4280808080a00184100c22012900002105200341a00f6a41086a220d200141086a290000370300200320053703a00f200110232008200d2903002205370300200320032903a00f22263703e811202320032802b00a360000202341036a20032800b30a36000020222026370000202241086a2005370000200320093a00a8142003200a3702a01420034180176a200341a0146a10c9032003280280172101200329028417210a200341003602f00c200342043703e80c200341e8116a41106a200c2903003703002008200b290300370300200320032903b00f3703e8112001410420011b211c2018200441246c22086a210f024002400240024002400240200a420020011b2229422088a7220b41027422094102752201200841246d6a22082001490d00200820066a220120084f0d010b201c20096a21072003200e360284172003200636028017200320032903e811370388172003200341f0116a290300370290172003200341e8116a41106a2903003703981741282108410421174104211a410021164100210d2018210b201c21190240410041ff01710e03020300020b410021010c030b200341e80c6a4100200110a60120032802e80c211720032802f00c21162003200e360284172003200636028017200320032903e811370388172003200341f0116a290300370290172003200341f8116a2903003703981720172016412c6c6a21010240200b450d002016200b4102742209417c6a4102766a210c201c210803402008280200210b200141246a41023602002001200b3602002001412c6a2101200841046a21082009417c6a22090d000b200c41016a21160b0240202942ffffffff0383500d00201c10230b02402004450d00200341b8146a2109200341b0146a210b200341a8146a210c2018210803402008280200210e20092008411c6a290200370300200b200841146a290200370300200c2008410c6a2902003703002003200841046a2902003703a0142001200e360200200141046a20032903a0143702002001410c6a200c290300370200200141146a200b2903003702002001411c6a2009290300370200200141246a42013702002001412c6a2101201641016a2116200841246a2208200f470d000b0b02402015450d00201541246c450d00201810230b200329038817210520032903901721262003290398172128200329038017210a200341003602a0140240200aa74101470d00200a422088a7210820032903b814212a20032903b014212b20032903a814212c20032903a014210a0340202a212d202b212e202c212920012008360200200141046a2005370200200141286a201b360200200141246a41013602002001411c6a20273702002001410c6a2026370200200141146a2028370200200341003602a0142001412c6a2101201641016a2116200aa72109200a422088a7210820032903b814212a20032903b014212b20032903a814212c20032903a014210a20292105202e2126202d212820094101460d000b0b200320163602f00c0c030b410121010c010b410221010b034002400240024002400240024002400240024020010e03000104040b200341003602a0142003290398172126200320032903b814370398172003290390172105200320032903b01437039017200329038817210a200320032903a814370388172003290380172128200320032903a014222a370380172028a74101470d042028422088a7210c202aa721060c010b0240024002400240200d41ff01710e03010200010b200f200b470d044102210d0c020b024020072019470d000240200f200b470d004102210d0c030b200b41146a2902002126200b410c6a2902002105200b411c6a290200212b200b290204210a4101210e4102210d200b2101200b41246a210b0c080b4102210e4100210d20192101201941046a21190c070b20072019470d054101210d0b200341003602a0142003290398172126200320032903b814370398172003290390172105200320032903b01437039017200329038817210a200320032903a814370388172003290380172128200320032903a014222a370380172028a74101470d032028422088a7210c202aa721060b4101210e4102210920272128201b21040c050b200b41146a2902002126200b410c6a2902002105200b411c6a290200212b200b290204210a4101210e4102210d200b2101200b41246a210b0c030b024002400240200d41ff01710e03010200010b200f200b460d02200b41146a2902002126200b410c6a2902002105200b411c6a2902002128200b290204210a200b280200210c41002104410121094102210d200b41246a210b4101210e0c050b024020072019470d00200f200b460d02200b41146a2902002126200b410c6a2902002105200b411c6a2902002128200b290204210a200b280200210c41002104410121094102210d200b41246a210b4101210e0c050b2019280200210c4102210e410121094100210d201941046a21190c040b20072019460d002019280200210c4102210e4101210d201941046a2119410121090c030b0240202942ffffffff0383500d00201c10230b2015450d04201541246c450d04201810230c040b4102210e4101210d20192101202c210a202d2105202e2126201941046a21190b2001280200210c41002109200a212c2005212d2026212e202b2128410021040b0240201620032802ec0c470d00024002400240024020090e03010200010b200641014621010c020b0240024002400240200d41ff01710e03010200010b200f200b6b41246d21010c020b417f200720196b4102752201200f200b6b41246d6a221a201a2001491b21010c010b200720196b41027521010b417f200120064101466a221a201a2001491b21010c010b024002400240200d41ff01710e03010200010b200f200b6b41246d21010c020b417f200720196b4102752201200f200b6b41246d6a221a201a2001491b21010c010b200720196b41027521010b200341e80c6a2016417f200141016a221a201a2001491b10a60120032802e80c2217211a0b201a20086a220120043602002001417c6a200e360200200141746a2028370200200141586a200c3602002001415c6a220120053702082001200a370200200141106a20263702002003201641016a22163602f00c2008412c6a2108024002400240200941ff01710e03000102000b410121010c020b410221010c010b410021010c000b0b20032802ec0c212f20164115490d032016410176ad422c7e220a422088a70d01200aa72230417f4c0d0120301021221f450d004100210120034100360288172003420437038017201741546a21212017412c6a2131201741fc7e6a212441042109410021202016210703402007210d41002107410121040240200d417f6a220c450d000240024002400240024002402017200c412c6c6a280200200d412c6c221a20176a41a87f6a2802002208490d00200d417e6a21192024201a6a210c410021074100210b034002402019200b470d00200d21040c080b200b41016a210b2008200c280200220e4f2104200c41546a210c200e210820040d000b200b41016a2104200b417f73200d6a210c0c010b2024201a6a210b024003400240200c4101470d004100210c0c020b200c417f6a210c2008200b280200220e492104200b41546a210b200e210820040d000b0b200d200c490d01200d20164b0d02200d200c6b2204410176220e450d002017200c412c6c6a21082021201a6a210b0340200341a0146a41286a2219200841286a221a280200360200200341a0146a41206a221b200841206a2206290200370300200341a0146a41186a220f200841186a2207290200370300200341a0146a41106a2218200841106a221c290200370300200341a0146a41086a2215200841086a2213290200370300200320082902003703a014200b41086a2214290200210a200b41106a22102902002105200b41186a22112902002126200b41206a22122902002128200b41286a221d280200211e2008200b290200370200201a201e3602002006202837020020072026370200201c20053702002013200a370200201d20192802003602002012201b2903003702002011200f2903003702002010201829030037020020142015290300370200200b20032903a0143702002008412c6a2108200b41546a210b200e417f6a220e0d000b0b0240200c0d00200c21070c050b0240200441094d0d00200c21070c050b200d20164b0d02200d200c6b210e2031200c412c6c6a21190340200d200c417f6a2207490d040240200d20076b22044102490d002017200c412c6c6a220828020020172007412c6c6a220c28020022064f0d00200341a0146a41206a220f200c41246a290200370300200341a0146a41186a2218200c411c6a290200370300200341a0146a41106a221c200c41146a290200370300200341a0146a41086a2215200c410c6a290200370300200c290204210a200c41286a200841286a2802003602002003200a3703a014200c41206a200841206a290200370200200c41186a200841186a290200370200200c41106a200841106a290200370200200c41086a200841086a290200370200200c20082902003702004101210b024020044103490d00200c28025820064f0d004102211a2019211b0340201b220841546a220b2008290200370200200b41286a200841286a280200360200200b41206a200841206a290200370200200b41186a200841186a290200370200200b41106a200841106a290200370200200b41086a200841086a290200370200200e201a220b460d01200b41016a211a2008412c6a221b2802002006490d000b0b20082006360200200c200b412c6c6a220820032903a014370204200841246a200f2903003702002008411c6a2018290300370200200841146a201c2903003702002008410c6a20152903003702000b2007450d05201941546a2119200e41016a210e2007210c2004410a4f0d050c000b0b200c200d41d089c7001044000b200d201641d089c7001043000b200d200c417f6a2207490d00200d201641e089c7001043000b2007200d41e089c7001044000b02402020200328028417470d0020034180176a2020410110a5012003280280172109200328028817220121200b200920204103746a22082004360204200820073602002003200141016a22013602881720012120024020014102490d000240024003400240024002400240024020092001417f6a4103746a2208280200450d00200141037420096a220e41746a280200220c2008280204220b4b0d010b20014103490d022008280204210b20092001417d6a221b4103746a28020421080c010b41022120200141024d0d0620092001417d6a221b4103746a2802042208200b200c6a4d0d0041032120200141034d0d06200e41646a2802002008200c6a4b0d050b2008200b490d010b2001417e6a211b0b02400240024002400240024002402001201b41016a22064d0d002001201b4d0d012009201b41037422186a2201280204221c20012802006a22012009200641037422156a2208280200220f490d02200120164b0d032017200f412c6c6a22192008280204221a412c6c22086a210b2001412c6c21092001200f6b220e201a6b2201201a4f0d04201f200b2001412c6c220810a105220d20086a210c201a4101480d0520014101480d05202120096a2108200b210103402008200141546a220b200c41546a220e200e280200200b2802004922041b2209290200370200200841286a200941286a280200360200200841206a200941206a290200370200200841186a200941186a290200370200200841106a200941106a290200370200200841086a200941086a290200370200200c200e20041b210c02402019200b200120041b2201490d00200d21090c080b200841546a2108200d2109200d200c490d000c070b0b2006200141f089c7001030000b201b200141808ac7001030000b200f200141908ac7001044000b2001201641908ac7001043000b201f2019200810a105220d20086a210c0240201a4101480d00200e201a4c0d00201720096a2104200d21092019210103402001200b2009200b280200200928020049220e1b2208290200370200200141286a200841286a280200360200200141206a200841206a290200370200200141186a200841186a290200370200200141106a200841106a290200370200200141086a200841086a29020037020020092009412c6a200e1b21092001412c6a2101200b412c6a200b200e1b220b20044f0d03200c20094b0d000c030b0b20192101200d21090c010b200b2101200d21090b20012009200c20096b22082008412c706b10a1051a02402003280288172201201b4d0d00200328028017220920186a2208201c201a6a3602042008200f360200200120064d0d02200920156a2208200841086a20012006417f736a41037410a2051a20032001417f6a220136028817200141014b0d010c030b0b201b200141a08ac7001030000b20062001103b000b200121200b2007450d030c000b0b1033000b1032000b024020032802841741ffffffff0171450d00200910230b2030412c7021012030412c490d0120302001460d01201f10230c010b20164102490d002016417f6a210920172016412c6c6a210e4101210c03400240024002400240201620092201417f6a2209490d00201620096b22084102490d0320172001412c6c6a220128020020172009412c6c6a220b28020022194f0d03200341a0146a41206a221a200b41246a290200370300200341a0146a41186a221b200b411c6a290200370300200341a0146a41106a2206200b41146a290200370300200341a0146a41086a220f200b410c6a290200370300200b290204210a200b41286a200141286a2802003602002003200a3703a014200b41206a200141206a290200370200200b41186a200141186a290200370200200b41106a200141106a290200370200200b41086a200141086a290200370200200b20012902003702004101210420084103490d02200b28025820194f0d0241002104200e210803402008220141546a22082001290200370200200841286a200141286a280200360200200841206a200141206a290200370200200841186a200141186a290200370200200841106a200141106a290200370200200841086a200141086a290200370200200c2004220d460d02200d417f6a21042001412c6a220828020020194f0d020c000b0b2009201641c089c7001044000b4102200d6b21040b20012019360200200b2004412c6c6a220120032903a014370204200141246a201a2903003702002001411c6a201b290300370200200141146a20062903003702002001410c6a200f2903003702000b200e41546a210e200c417f6a210c20090d000b0b200341e8116a41086a22084200370300200341003602b00a200341003600b30a200342003703e81120034196adc300ad4280808080900184100c22012800093602a00f20032001410c6a2800003600a30f2001290000210a20012d0008210920011023200320032800a30f3600b30a200320032802a00f3602b00a41bce0c300ad4280808080e00084100c22012900002105200341a00f6a41086a220b200141086a290000370300200320053703a00f200110232008200b2903002205370300200320032903a00f22263703e811202320032802b00a360000202341036a20032800b30a36000020222026370000202241086a2005370000200320093a00a8142003200a3702a01420034180176a2017201610d302200341a0146aad220a42808080808004842003350288174220862003280280172201ad84100e0240200328028417450d00200110230b0240202f450d00202f412c6c450d00201710230b20034180176a41086a220842003703002003420037038017200341003602e811200341003600eb11200841b0dfc300ad4280808080a00184100c220141086a290000370300200320012900003703801720011023200341a89ec700ad4280808080900184100c22012800093602880520032001410c6a28000036008b052001290000210520012d0008210920011023200341a0146a41086a20082903003703002003200328008b053600eb1120032003280288053602e811200341bc146a20032800eb11360000200320093a00b814200320053703b01420032003290380173703a014200320032802e8113600b914200a42808080808004841011200010e90320022400417f202541d0f7076a220120012025491b0bc30103017f017e027f0240024002402000280200220241024d0d004101210042002103410121020c010b024002400240024020020e03000102000b410110212204450d0441002102200441003a00002000280204210520044101410510252200450d04200020053600014280808080d00021030c030b410110212200450d03200041013a00000c010b410110212200450d02200041023a00000b4100210242808080801021030b200129020020032000ad84100e024020020d00200010230b0f0b102a000bdb1f07057f067e017f017e017f057e037f230041e00b6b22042400200441a0066a200141c80310a1051a20044198036a200441a0066a10c602410121050240024002400240024002400240024002400240024002400240024002400240024020042d0098034101460d00200441186a20044198036a41086a41800310a1051a024020032802002201450d00200341086a280200210620032802042107200441106a41d7ddc400411010cd0141002105200441a0066a2004280214410020042802101b10c70220042802a0062108200420042802a80636029c0320042008360298032001200620044198036a10c802024020042802a406450d00200810230b2007450d00200110230b200441e8096a200441186a41d0006a10c902200441a0066a200441186a41800310a1051a20042903e8092109024002400240024020042903c006220a4202520d0010ca02220841ff01714102470d0210ca02220841ff01714102470d0510ca021a10ca02220841ff01714102470d06200420093703980320044198036a200210cb02220841ff01714102470d0710ca02220841ff01714102460d0120084180feff077141087621020c0b0b200441c00b6a41186a200441a0066a41186a290300370300200441c00b6a41106a200441a0066a41106a290300370300200441c00b6a41086a200441a0066a41086a290300370300200420042903a0063703c00b024020042802f006410f470d004100210841870421020c0d0b200441e0066a290300210b200441d8066a290300210c200441e8066a280200210620042903c806210d024010ca02220841ff01714102470d0010ca021a4200210e20044198036a41186a420037030020044198036a41106a220f420037030020044198036a41086a22084200370300200442003703980341e4dec400ad4280808080e00084100c220729000021102008200741086a29000037030020042010370398032007102341f3dec400ad4280808080e00084100c22072900002110200441a00a6a41086a2211200741086a290000370300200420103703a00a20071023200f20042903a00a2210370300200441f80a6a41086a2008290300370300200441f80a6a41106a2010370300200441f80a6a41186a201129030037030020042004290398033703f80a200441086a200441f80a6a412010cd010240200a4201520d00200d500d090b200441f80a6a200441c00b6a10970220044198036a20042802f80a220720042802800b109802024002402004290398034201510d00410021084200210a4200210d42002110420021124200211342002114420021154100210f0c010b200441a8036a2903002115200441b8036a2903002113200441b0036a2903002112200441c8036a2903002110200441c0036a290300210d200441d8036a290300210a200441d0036a290300210e200441e0036a280200210820042903a003211420042802e403210f0b024020042802fc0a450d00200710230b0240024020082006470d0020044198036a200441c00b6a10970220043502a00321162004280298032107410410212208450d0b2008200641016a36000020084104410810252208450d0b2008200f3a000420084108411510252208450d0b200820143700052008410d6a201537000020084115412a10252208450d0b200820123700152008411d6a20133700002008412a41d40010252208450d0b2008200e3700352008200d3700252008413d6a200a3700002008412d6a201037000020164220862007ad842008ad4280808080d00884100e200810230240200428029c03450d00200710230b024020094280808080f01f83428080808020520d0041002108410921020c100b200420093703980320044198036a200210cb02220841ff01714102460d0120084180feff077141087621020c0f0b41034102200820064b1b2102410021080c0e0b200420093703f80a20044198036a200c200b200441c00b6a200441f80a6a200210cc02024020042d0098034101460d00200441c4036a280200210f200441c0036a2802002106200441bc036a2802002111200441b4036a2802002107200441b0036a28020021170240200441b8036a2802002202450d002002410c6c21082017210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b02402007450d002007410c6c450d00201710230b0240200f450d00200f410c6c21082011210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b2006450d0d2006410c6c450d0d201110230c0d0b20042d00990322084102460d0c20042f019a0321020c0d0b20084180feff077141087621020c0c0b4100210f20042802f006410b470d0e20044198036a200441f4066a10ab0220042d0098034101460d01200441c4036a2802002111200441c0036a2802002106200441bc036a2802002117200441b4036a2802002107200441b0036a28020021180240200441b8036a2802002202450d002002410c6c21082018210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b02402007450d002007410c6c450d00201810230b02402011450d002011410c6c21082017210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b2006450d0e2006410c6c450d0e201710230c0e0b20084180feff077141087621020c080b20042d00990322024102470d060c0c0b200020042f0099033b0001200041013a0000200041036a20042d009b033a000020032802002101410021000c0d0b20084180feff077141087621020c050b20084180feff077141087621020c040b20084180feff077141087621020c030b4180b4c0004119419cb4c000102d000b102a000b20042f019a0341087420027221020c030b2002410874200841ff01717221020c020b20044198036a200441a0066a41d0006a220610cd020240024020042d0098034101460d00200441c4036a2802002111200441c0036a2802002107200441bc036a2802002117200441b4036a280200210f200441b0036a28020021180240200441b8036a2802002202450d002002410c6c21082018210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b0240200f450d00200f410c6c450d00201810230b02402011450d002011410c6c21082017210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b2007450d012007410c6c450d01201710230c010b20042d00990322084102460d0020042f019a0321020c010b20044198036a200610ce02024020042d0098034101460d00200441c4036a280200210f200441c0036a2802002106200441bc036a2802002111200441b4036a2802002107200441b0036a28020021170240200441b8036a2802002202450d002002410c6c21082017210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b02402007450d002007410c6c450d00201710230b0240200f450d00200f410c6c21082011210203400240200241046a280200450d00200228020010230b2002410c6a2102200841746a22080d000b0b2006450d032006410c6c450d03201110230c030b20042d00990322084102460d0220042f019a0321020b2002410874200841ff01717221020b200441f0066a10b4020c020b200441a00b6a41186a200441c00b6a41186a290300370300200441a00b6a41106a200441c00b6a41106a290300370300200441a00b6a41086a200441c00b6a41086a290300370300200420042903c00b3703a00b4101210f0b200441a00a6a41186a2207200441a00b6a41186a2202290300370300200441a00a6a41106a2211200441a00b6a41106a2208290300370300200441a00a6a41086a2217200441a00b6a41086a2206290300370300200420042903a00b3703a00a20044198036a200441f0066a41b00210a1051a200441c00b6a41186a22182007290300370300200441c00b6a41106a22192011290300370300200441c00b6a41086a22112017290300370300200420042903a00a3703c00b410221070240200f450d00200220182903003703002008201929030037030020062011290300370300200420042903c00b3703a00b410121070b200441820b6a20062903003701002004418a0b6a2008290300370100200441920b6a2002290300370100200420073a00f90a200420042903a00b3701fa0a200441003a00f80a200441e00a6a20044198036a200441f80a6a10cf020240024020042802e00a4101470d00200420042900ed0a3703d00a2004200441f40a6a2800003600d70a20042802e40a4102470d010b410421020c030b200441ec0a6a2d00002102200420042800d70a3600c70a200420042903d00a3703c00a20094280808080f01f83428080808020520d02200241ff01714104460d0241801021020b200420042900900a3703800a2004200441970a6a2800003600870a200041036a20024110763a0000200020023b0001200041013a000020054521000b20000d012001450d01200341046a280200450d01200110230c010b200420042800c70a3600970a200420042903c00a3703900a200420042800970a3600870a200420042903900a3703800a200441f0096a41086a220620042800870a360000200420042903800a3700f109200420023a00f0092009210a410021070240200241ff01714104460d00200441f0096a109201200628020021084101210720042903f009210a0b200441b4066a2009370200200441a0066a41106a2008360200200441a0066a41086a200a370300200441bc066a200429029803370200200441c4066a20044198036a41086a2202280200360200200420073a00a406200420042f00f80a3b00a506200441003a00a0062004200441fa0a6a2d00003a00a706200441a0066a10e001200441d7ddc400411010cd012004200428020441016a410120042802001b22083602a00641d7ddc400ad4280808080800284200441a0066aad4280808080c00084100e200420083602c40b200441003602c00b20044198036a41186a420037030020044198036a41106a2207420037030020024200370300200442003703980341e4dec400ad4280808080e00084100c220829000021092002200841086a29000037030020042009370398032008102341d483c500ad4280808080e00184100c22082900002109200441a00a6a41086a220f200841086a290000370300200420093703a00a20081023200720042903a00a2209370300200441f80a6a41086a2002290300370300200441f80a6a41106a2009370300200441f80a6a41186a200f29030037030020042004290398033703f80a200441203602a4062004200441f80a6a3602a006200441c00b6a200441a0066a10c4022000410c6a2006280200360200200041046a20042903f009370200200041003a00002001450d002005450d00200341046a280200450d00200110230b200441e00b6a24000bc02205017f037e047f017e057f230041900f6b2202240042022103024002400240024002400240024002400240200129036822044202520d00200241b8076a20014198016a41b00210a1051a0c010b2002411e6a200141206a41c20010a1051a200241e0006a41186a200141186a290000370300200241e0006a41106a200141106a290000370300200241e0006a41086a200141086a29000037030020022001290000370360200241f0096a20014198016a41b00210a1051a200241a00c6a41086a20014188016a290300370300200241a00c6a41106a20014190016a290300370300200220014180016a2903003703a00c200141f8006a29030021032001290370210541002106200241f80d6a410010d403200241d80e6a20022802f80d220120022802800e10e101200241b80e6a41086a2207200241e40e6a290200370300200241b80e6a41106a2208200241ec0e6a290200370300200241b80e6a41156a2209200241f10e6a290000370000200220022902dc0e3703b80e0240024020022d00d80e4101460d00200241980e6a41156a4200370000200241980e6a41106a4200370300200241980e6a41086a4200370300200242003703980e0c010b20022f00d90e20022d00db0e411074722106200241980e6a41156a2009290000370000200241980e6a41106a2008290300370300200241980e6a41086a2007290300370300200220022903b80e3703980e0b024020022802fc0d450d00200110230b200241b80d6a41086a200241980e6a41086a2201290300370300200241b80d6a41106a200241980e6a41106a290300370300200241b80d6a41156a200241980e6a41156a290000370000200220022903980e3703b80d200241b80e6a41186a4200370300200241b80e6a41106a22094200370300200241b80e6a41086a22074200370300200242003703b80e41e4dec400ad4280808080e00084100c2208290000210a2007200841086a2900003703002002200a3703b80e2008102341f3dec400ad4280808080e00084100c2208290000210a2001200841086a2900003703002002200a3703980e20081023200920022903980e220a370300200241d80e6a41086a2007290300370300200241d80e6a41106a200a370300200241d80e6a41186a2001290300370300200220022903b80e3703d80e200241106a200241d80e6a412010cd0141002101024020044201520d0020054200510d042002280214410020022802101b2107417f21012007ad220a20032003200a541b220a200a20037d2005827d220a42ffffffff0f560d00200aa721010b200241d80e6a200110d403200241086a20022802d80e220820022802e00e419ca8c70041004100108c0120022802082107024020022802dc0e450d00200810230b20074101470d01200241800f6a200110d403200241d80e6a20022802800f220720022802880f10e101200241b80e6a41086a200241e10e6a290000370300200241b80e6a41106a200241e90e6a290000370300200241d00e6a2201200241f10e6a290000370300200220022900d90e3703b80e0240024020022d00d80e4101460d00200241ad0e6a4200370000200241980e6a41106a4200370300200241980e6a41086a4200370300200242003703980e410021010c010b200241980e6a41086a200241c30e6a290000370300200241980e6a41106a200241cb0e6a290000370300200241ad0e6a2001290000370000200220022900bb0e3703980e20022f01b80e20022d00ba0e4110747221010b024020022802840f450d00200710230b200241f80d6a41156a2207200241980e6a41156a290000370000200241f80d6a41106a2208200241980e6a41106a290300370300200241d80d6a41086a2209200241980e6a41086a290300370300200241d80d6a41106a220b2008290300370300200241d80d6a41156a22082007290000370000200241980d6a41086a2207200241b80d6a41086a290300370300200241980d6a41106a220c200241b80d6a41106a290300370300200241980d6a41156a220d200241b80d6a41156a290000370000200220022903980e3703d80d200220022903b80d3703980d200241f80c6a41156a220e2008290000370000200241f80c6a41106a2208200b290300370300200241f80c6a41086a220b2009290300370300200220022903d80d3703f80c200241d80c6a41156a2209200d290000370000200241d80c6a41106a220d200c290300370300200241d80c6a41086a220c2007290300370300200220022903980d3703d80c200241b80c6a41156a2207200e290000370000200241b80c6a41106a220e2008290300370300200241b80c6a41086a2208200b290300370300200220022903f80c3703b80c200241c8046a41156a220b2009290000370000200241c8046a41106a2209200d290300370300200241c8046a41086a220d200c290300370300200220022903d80c3703c804200241a8046a41156a220c2007290000370000200241a8046a41106a2207200e290300370300200241a8046a41086a220e2008290300370300200220022903b80c3703a804200241e8046a41106a2208200241a00c6a41106a290300370300200241e8046a41086a220f200241a00c6a41086a290300370300200220022903a00c3703e804200241b8076a41046a200241f0096a41b00210a1051a20024180056a200241b8076a41b40210a1051a20024180016a20024180056a41046a41b00210a1051a200241e6036a20064110763a0000200241e4036a20063b0100200241c0036a2003370300200241b8036a2005370300200241c8036a220620022903e804370300200241d0036a200f290300370300200241d8036a220f2008290300370300200241e7036a20022903c804370000200241ef036a200d290300370000200241f7036a2009290300370000200241fc036a200b290000370000200220043703b003200241013602e00320024186046a20014110763a000020024184046a20013b010020024187046a20022903a8043700002002418f046a200e29030037000020024197046a20072903003700002002419c046a200c290000370000410410212201450d04200242043702bc07200220013602b80720024180016a200241b8076a10dd020240024020022903b0034201520d0020022903c00320022903b8032203420c882204420120044201561b8021040240024020022802bc07220820022802c00722016b4102490d0020022802b80721070c010b200141026a22072001490d08200841017422092007200920074b1b22094100480d080240024020080d00024020090d00410121070c020b2009102122070d010c0c0b20022802b807210720082009460d0020072008200910252207450d0b20022802c00721010b200220093602bc07200220073602b8070b200720016a2004a741047420037aa7417f6a22074101200741014b1b2207410f2007410f491b723b0000200141026a21010c010b0240024020022802bc0720022802c0072201460d0020022802b80721070c010b200141016a22072001490d07200141017422082007200820074b1b22084100480d070240024020010d0041002101024020080d00410121070c020b200810212207450d0b0c010b20022802b807210720012008460d0020072001200810252207450d0a20022802c00721010b200220083602bc07200220073602b8070b200720016a41003a0000200141016a21010b200220013602c007200f200241b8076a10ed01200220063602800520024180056a200241b8076a10db0120022802e00321060240024020022802bc07220820022802c00722016b4104490d0020022802b80721070c010b200141046a22072001490d06200841017422092007200920074b1b22094100480d060240024020080d00024020090d00410121070c020b200910212207450d0a0c010b20022802b807210720082009460d0020072008200910252207450d0920022802c00721010b200220093602bc07200220073602b8070b200720016a20063600002002200141046a3602c007412010212201450d042001200241e4036a290200370000200141186a200241fc036a290200370000200141106a200241f4036a290200370000200141086a200241ec036a2902003700000240024020022802bc07220620022802c00722076b4120490d0020022802b80721080c010b200741206a22082007490d06200641017422092008200920084b1b22094100480d060240024020060d00024020090d00410121080c020b200910212208450d0a0c010b20022802b807210820062009460d0020082006200910252208450d0920022802c00721070b200220093602bc07200220083602b8070b200820076a22082001290000370000200841186a200141186a290000370000200841106a200141106a290000370000200841086a200141086a2900003700002002200741206a3602c00720011023412010212201450d04200120024184046a290200370000200141186a2002419c046a290200370000200141106a20024194046a290200370000200141086a2002418c046a2902003700000240024020022802bc07220620022802c00722076b4120490d0020022802b80721080c010b200741206a22082007490d06200641017422092008200920084b1b22094100480d060240024020060d00024020090d00410121080c020b200910212208450d0a0c010b20022802b807210820062009460d0020082006200910252208450d0920022802c00721070b200220093602bc07200220083602b8070b200820076a22082001290000370000200841186a200141186a290000370000200841106a200141106a290000370000200841086a200141086a2900003700002002200741206a3602c0072001102320022802bc07210820022802b80721010240024020022802c00722074180024b0d002002411e6a20012007200241e0006a10d50321070c010b2007ad4220862001ad84101822072900002103200741086a2900002104200741106a2900002105200241b80e6a41186a200741186a290000370300200241b80e6a41106a2005370300200241b80e6a41086a2004370300200220033703b80e200710232002411e6a200241b80e6a4120200241e0006a10d50321070b02402008450d00200110230b2007450d02200241f0096a41086a200241e0006a41086a290300370300200241f0096a41106a200241e0006a41106a290300370300200241f0096a41186a200241e0006a41186a29030037030020024180056a41086a200241c0036a29030037030020024180056a41106a200241c8036a29030037030020024180056a41186a200241d0036a290300370300200241a0056a200241d8036a290300370300200220022903603703f0092002200241b8036a2903003703800520022903b0032103200241b8076a20024180016a41b00210a1051a0b200041086a20022903f009370300200041286a2003370300200041306a200229038005370300200041206a200241f0096a41186a290300370300200041186a200241f0096a41106a290300370300200041106a200241f0096a41086a290300370300200041386a20024180056a41086a290300370300200041c0006a20024180056a41106a290300370300200041c8006a20024180056a41186a290300370300200041d0006a20024180056a41206a290300370300200041d8006a200241b8076a41b00210a1051a200041003a00000c050b200241d80d6a41156a200241f80d6a41156a290000370000200241d80c6a41086a200241980d6a41086a290000370300200241d80c6a41106a200241980d6a41106a290000370300200241d80c6a41156a200241980d6a41156a290000370000200241b80c6a41156a200241f80c6a41156a290000370000200220022900980d3703d80c200241f0096a10b402200041036a41003a0000200041800a3b0001200041013a00000c040b20004180083b0001200041013a0000200041036a41003a000020024180016a10b4020c030b4180b4c0004119419cb4c000102d000b1033000b102c000b200241900f6a24000f0b102a000bf90403027f017e057f230041d0006b2202240041e4dec400ad4280808080e00084100c22032900002104200241086a200341086a290000370300200220043703002003102341c480c500ad4280808080d00184100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bad0201057f230041106b220324000240024002400240200141046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b2003410036020820032004360204200320053602002001200310610240024020032802042206200328020822056b2001490d0020032802002104200621070c010b200520016a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d00024020070d00410121040c020b2007102122040d010c060b2003280200210420062007460d0020042006200710252204450d050b20032007360204200320043602000b200420056a2000200110a1051a2002290200200520016aad4220862004ad84100e02402007450d00200410230b200341106a24000f0b1032000b1033000b102c000b102a000baa1101057f230041206b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e16011112020304051106070809110a0b0c0d0e0f101100010b410021034190ce0021040240024002400240024020012d00040e0400010402000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b200241086a200141086a280200220110c90220022802082103200241086a200110c90220034190ce006a21040c010b200241086a200141286a280200220110c90220022802082103200241086a200110c90220034190ce006a21040b20022d000c21030b200041013a0005200020033a0004200020043602000c120b410021034190ce00210402400240024002400240024002400240200141086a2802000e0b0001070203030405050506000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b2001410c6a28020021040b410121030c040b4101210341c09a0c21040c030b4101210341a09c0121040c020b410121030c010b4101210341a8c30121040b200041013a0005200020033a0004200020043602000c110b20004180023b010420004190ce003602000c100b4100210341c0843d2104024002400240200141086a2d00000e050002010202000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b4101210341d0860321040b200041013a0005200020033a0004200020043602000c0f0b20004182023b010420004190ce003602000c0e0b4100210441a0c21e210302400240024002400240024002400240024002400240200141086a2d00000e19000a0a010102020a0a02030303030405060a0a0a0a07080909000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b4180b51821030c080b41b0e32d21030c070b41882721030c060b4190ce0021030c050b41882721030c040b41c0843d21030c030b410121040c020b4190ce0021030c010b4180c2d72f21030b200041013a0005200020043a0004200020033602000c0d0b20004180023b0104200041f093093602000c0c0b20004182023b010420004190ce003602000c0b0b20004180023b010420004190ce003602000c0a0b20004180023b010420004190ce003602000c090b02400240024020012802040e03000102000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b20004182023b0104200041c0843d3602000c090b20004180023b0104200041003602000c080b20004182023b010420004190ce003602000c070b41c096b102210341012104024002400240024020012d00040e080003010202020202000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b4190ce002103410121040c010b410021044190ce0021030b200041013a0005200020043a0004200020033602000c060b0240024002400240024002400240024020012d00040e06000102030405000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b200141086a28020021044190ce0021030240200141106a280200220541b0026c2206450d00200421010340200241086a200110c902200141b0026a2101200228020820036a2103200641d07d6a22060d000b0b200541b0026c21014101210603402001450d06200141d07d6a2101200241086a200410c902200441b0026a210420022d000c4101460d000c050b0b200241086a200141086a280200220110c90220022802082103200241086a200110c90220034190ce006a210320022d000c21060c040b200241086a200141206a280200220310c902200141106a280200210120022802082104200241086a200310c902200420014190ce006c6a4190ce006a210320022d000c21060c030b200141306a2802004190ce006c4190ce006a21030c010b200141306a2802004190ce006c4190ce006a21030b410021060b200041013a0005200020063a0004200020033602000c050b4190ce0021030240024002400240200141086a2d00000e0c000301010101010101010102000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b41d0860321030c010b41a08d0621030b20004180023b0104200020033602000c040b410021044190ce0021030240024002400240024020012d00040e0a00010402020202030304000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a000b200241086a200141286a280200220110c90220022802082103200241086a200110c90220034190ce006a210320022d000c21040c020b41a08d0621030c010b41b0ea0121030b200041013a0005200020043a0004200020033602000c030b4190ce0021030240200141086a2d00002201417f6a4102490d0002400240024020010e0400010102000b2002411c6a41013602002002420137020c200241a4c5c60036020820024104360204200241cccec60036020020022002360218200241086a419ca8c700103a0b000b41c0843d21030b20004180023b0104200020033602000c020b10f502000b20004182023b010420004190ce003602000b200241206a24000b040041020bda0607017f017e017f017e027f037e077f230041e0006b22022400200241306a20002902002203422088a72204200110c6040240024020022903302205a7220141ff01714101460d00200241306a41186a22064200370300200241306a41106a22074200370300200241306a41086a220042003703002002420037033041e4dec400ad4280808080e000842208100c220129000021092000200141086a290000370300200220093703302001102341e8ffc400ad4280808080b00284220a100c220b2900002109200241d0006a41086a2201200b41086a29000037030020022009370350200b1023200720022903502209370300200241106a41086a220c2000290300370300200241106a41106a220d2009370300200241106a41186a220e200129030037030020022002290330370310200241086a200241106a412010cd014100210b417f200228020c410020022802081b220f418094ebdc034180afd0e502200441ff017122041b22102003a7221120102011491b6a22112011200f491b210f024020044102460d0041800c2104200f20104b0d020b200642003703002007420037030020004200370300200242003703302008100c220b29000021032001200b41086a29000037030020022003370350200b10232000200129030037030020022002290350370330418c80c500ad4280808080800284100c220b29000021032001200b41086a29000037030020022003370350200b1023200720022903502203370300200c2000290300370300200d2003370300200e20012903003703002002200229033037031020022005422088a7360230200241106aad42808080808004842205200241306aad4280808080c000842203100e200642003703002007420037030020004200370300200242003703302008100c220b29000021082001200b41086a29000037030020022008370350200b10232000200129030037030020022002290350370330200a100c220b29000021082001200b41086a29000037030020022008370350200b1023200720022903502208370300200c2000290300370300200d2008370300200e2001290300370300200220022903303703102002200f36023020052003100e410021044102210b0c010b200141087641ff0171210b2005421088a741087421040b200241e0006a24002004200b720be90702017f057e230041e0016b22062400200641186a200520042902002207a72007422888a72001200210b6044200210702400240024020062903182208200641206a2903002209844200520d0020064198016a420037030020064190016a4280808080c000370300200642043703880120064200370378200641013a00a0012006427f37038001200641f8006a21030c010b200641003a004320062009370338200620083703302006200336022c410121052006410141112001200284501b3a0042200620033602442006200641c4006a360288012006200641c2006a3602840120062006412c6a360280012006200641c3006a36027c2006200641306a360278200641c8006a2003200641f8006a10c5030240024020062802484101470d004200210a200629035021070c010b200641f0006a290300210a200641e8006a2903002107024020062903504201510d00410021050c010b200641c8006a41106a290300210b20062802442103200641b0016a200641c8006a41186a290300370300200641a8016a200b37030041002105200641f8006a41086a41003a000020064181016a200329000037000020064189016a200341086a29000037000020064191016a200341106a29000037000020064199016a200341186a290000370000200641023a0078200641f8006a10e0010b02402005450d0020004180023b0001200041013a0000200041036a41003a00000c020b2006427f200720072007200120072007200156200a200256200a2002511b22031b22017d542205200a2002200a20031b220b7d2007200154ad7d2202200b7c2005ad7c220120025420012002511b22031b427f200120031b10cf0302402006290300a7450d00200641106a290300210220062903082101200641c8006a108503200641f8006a108503200641f8006a2001200210ea01200641b0016a2002370300200641a8016a2001370300200641f8006a41086a41043a000020064181016a200629034837000020064189016a200641c8006a41086a29030037000020064191016a200641c8006a41106a29030037000020064199016a200641e0006a290300370000200641023a0078200641f8006a10e0010b20064198016a420037030020064190016a4280808080c000370300200642043703880120064200370378200641013a00a0012006427f370380012008427f2009501b2107200641f8006a21030b200041003a000020062007370378200041086a2003290300370300200041106a200341086a290300370300200041186a200341106a290300370300200041206a200341186a290300370300200041286a200341206a290300370300200041306a200341286a2903003703000b200641e0016a24000bbf1705067f017e0a7f027e017f23004190016b22022400410421030240024002400240024002400240024002400240024002402001280200410f460d00410021040c010b41002104200141046a22052d00004105470d00200241e0006a200141c8006a280200108d03200228026022032002280268108e0341ff0171210402402002280264450d00200310230b0240024002400240024002400240024020044102460d002004410171450d00200241e0006a41186a4200370300200241e0006a41106a22064200370300200241e0006a41086a22034200370300200242003703604196adc300ad4280808080900184100c2207290000210820024180016a41086a2204200741086a29000037030020022008370380012007102320032004290300370300200220022903800137036041fcdfc300ad4280808080f00184100c220729000021082004200741086a29000037030020022008370380012007102320062002290380012208370300200241c0006a41086a2003290300370300200241c0006a41106a2008370300200241c0006a41186a200429030037030020022002290360370340200241206a200241c0006a108f030240200228022022090d0020024100360218200242043703100c030b2002290224210820022009360210200220083702142008422088a7220a450d01200a417f6a210b0c040b200041800e3b0001200041013a0000200041036a41013a00000c110b2008a7450d0041002104200a210b0c010b200241106a41004101109501200228021021092002280218220b21040b20092004410c6c6a22044100360208200442043702002002200b41016a220a360218200a200b490d010b200241e0006a41186a220c4200370300200241e0006a41106a220d4200370300200241e0006a41086a22034200370300200242003703604196adc300ad4280808080900184100c2207290000210820024180016a41086a2204200741086a29000037030020022008370380012007102320032004290300370300200220022903800137036041d8dfc300ad4280808080b00184100c220729000021082004200741086a2900003703002002200837038001200710232006200229038001370000200641086a2004290300370000200241c0006a41086a2003290300370300200241c0006a41106a200d290300370300200241c0006a41186a200c29030037030020022002290360370340200241086a200241c0006a412010cd01024002402009200b410c6c6a220e41086a220f2802002204200228020c410020022802081b4f0d00200e28020021100240200441014b0d00024020040e020300030b2001280248210d410021030c040b2001280248210d41002103034020032004410176220720036a220c200d2010200c41246c6a280200491b2103200420076b220441014b0d000c040b0b200041800c3b0001200041013a0000200041036a41003a00000c0d0b2001280248210d410021030c020b200b410041d8afc3001030000b200d2010200341246c6a2802002204460d032003200d20044b6a21030b200241e0006a200d10c30320022802602211450d0320022802642112200241e0006a41086a22073502004220862011ad84101822042900002108200441086a2900002113200441106a2900002114200241206a41186a200441186a290000370300200241206a41106a2014370300200241206a41086a201337030020022008370320200410230240200241206a200541216a2215460d00200241206a2015412010a3050d020b200241e0006a41186a200541196a290000370300200241e0006a41106a200541116a2900003703002007200541096a29000037030020022005290001370360200f28020022042003490d0420012802482107024020042009200b410c6c6a41046a280200470d00200e2004410110a2012002280218210a200228021021090b200e280200200341246c6a220141246a2001200420036b41246c10a2051a20012007360200200120022903603702042001410c6a200241e0006a41086a2203290300370200200141146a200241e0006a41106a22072903003702002001411c6a200241e0006a41186a220c2903003702004101210d200f200441016a3602002002280214210e200c42003703002007420037030020034200370300200242003703604196adc300ad4280808080900184100c2204290000210820024180016a41086a2201200441086a29000037030020022008370380012004102320032001290300370300200220022903800137036041fcdfc300ad4280808080f00184100c220429000021082001200441086a2900003703002002200837038001200410232006200229038001370000200641086a2001290300370000200241c0006a41086a2003290300370300200241c0006a41106a2007290300370300200241c0006a41186a200c29030037030020022002290360370340200a410c6c41046a2201417f4c0d0502402001450d0020011021220d450d070b20024100360268200220013602642002200d360260200a200241e0006a10610240200a450d002009200a410c6c6a210b2009210603402006280200210120062802082204200241e0006a106102402004450d002001200441246c6a21054100200228026822046b210d20022802642103034020012802002110024002402003200d6a4104490d002002280260210c200321070c010b200441046a22072004490d0c2003410174220c2007200c20074b1b22074100480d0c0240024020030d00024020070d004101210c0c020b20071021220c0d010c0f0b2002280260210c20032007460d00200c200320071025220c450d0e0b200220073602642002200c3602600b200c20046a20103600002002200441046a2203360268024002402007200d6a417c6a411f4d0d00200721030c010b200341206a22102003490d0c200741017422032010200320104b1b22034100480d0c0240024020070d00024020030d004101210c0c020b20031021220c450d0f0c010b20072003460d00200c200720031025220c450d0e0b200220033602642002200c3602600b200c20046a220741046a200141046a2900003700002007411c6a2001411c6a290000370000200741146a200141146a2900003700002007410c6a2001410c6a2900003700002002200441246a2204360268200d415c6a210d200141246a22012005470d000b0b2006410c6a2206200b470d000b0b20022802642101200241c0006aad4280808080800484200235026842208620022802602204ad84100e02402001450d00200410230b0240200a450d00200a410c6c21042009210103400240200141046a2802002203450d00200341246c450d00200128020010230b2001410c6a2101200441746a22040d000b0b0240200e450d00200e410c6c450d00200910230b410c10212203450d08412010212201450d0620012015290000370000200141186a2207201541186a290000370000200141106a220c201541106a290000370000200141086a220d201541086a290000370000412010212204450d0820042001290000370000200441186a2007290000370000200441106a200c290000370000200441086a200d29000037000020011023200342a080808080043702042003200436020002402012450d00201110230b410121040b200041003a0000200041306a41013a00002000412c6a2004360200200041286a2004360200200041246a2003360200200041206a4100360200200041186a4204370300200041106a427f370300200041086a4200370300200041316a2002280060360000200041346a200241e3006a2800003600000c090b20004180063b0001200041013a0000200041036a41003a00002012450d07201110230c070b200041800e3b0001200041013a0000200041036a41003a00000c060b200041800e3b0001200041013a0000200041036a41013a00000c050b200320041038000b1032000b1033000b102c000b102a000b0240200a450d00200a410c6c21042009210103400240200141046a2802002203450d00200341246c450d00200128020010230b2001410c6a2101200441746a22040d000b0b20022802142201450d002001410c6c450d00200910230b20024190016a24000be21304057f017e077f017e230041f0026b2202240002400240024002400240024002402001280200410d470d0020012802044102470d00200241f0006a41186a22034200370300200241f0006a41106a22044200370300200241f0006a41086a220542003703002002420037037041db97c700ad4280808080f00084100c220629000021072005200641086a290000370300200220073703702006102341bbacc300ad4280808080a00184100c22062900002107200241d8016a41086a2208200641086a290000370300200220073703d80120061023200420022903d8012207370300200241086a41086a22092005290300370300200241086a41106a220a2007370300200241086a41186a220b200829030037030020022002290370370308200241f0006a200241086a412010890220022902744200200228027022061b21072006410120061b210c02400240200141086a220d280200200141186a220e280200470d002003420037030020044200370300200542003703002002420037037041b0dfc300ad4280808080a00184100c2206290000210f2005200641086a2900003703002002200f3703702006102341bcbac500ad4280808080b00184100c2206290000210f2008200641086a2900003703002002200f3703d80120061023200420022903d801220f37030020092005290300370300200a200f370300200b200829030037030020022002290370370308200241f0006a200241086a10ad0220022802702205410120051b210a41800e21092002290274420020051b220f422088a72205450d062001413c6a21042005410574210841002106200a2105034020042005460d02200620052004412010a30522034100476a21062003450d02200541206a2105200841606a22080d000c070b0b20004180083b0001200041013a0000200041036a41003a00000c060b20062007422088a722054f0d01200241086a41186a200c20064105746a220541186a290000370300200241086a41106a200541106a290000370300200241086a41086a200541086a29000037030020022005290000370308200241f0006a200241086a108f020240024002402002280290012205450d0002402002280294012206450d00200641306c450d00200510230b0240024002400240200141dc006a2d00000e03010200010b20024188016a200d41ed006a29000037030020024180016a200d41e5006a290000370300200241f8006a200d41dd006a2900003703002002200d41d5006a29000037037041022106200241f0006a21050c020b20024188016a200d41ed006a29000037030020024180016a200d41e5006a290000370300200241f8006a200d41dd006a2900003703002002200d41d5006a29000037037041002106200241f0006a21050c010b20024188016a200d41ed006a29000037030020024180016a200d41e5006a290000370300200241f8006a200d41dd006a2900003703002002200d41d5006a29000037037041012106200241f0006a21050b200241216a200541186a290000370000200241196a200541106a290000370000200241116a200541086a290000370000200220063a000820022005290000370009200241316a200d41fd006a290000370000200241396a200d4185016a290000370000200241c1006a200d418d016a290000370000200241c9006a200d4195016a290000370000200241d1006a200d419d016a290000370000200241d9006a200d41a5016a290000370000200241e1006a200d41ad016a2900003700002002200d41f5006a2900003700290240024002400240200d2d00b5010e03010200010b200241d8016a41186a200d41ce016a290000370300200241d8016a41106a200d41c6016a290000370300200241d8016a41086a200d41be016a2900003703002002200d41b6016a2900003703d80141022106200241d8016a21050c020b200241d8016a41186a200d41ce016a290000370300200241d8016a41106a200d41c6016a290000370300200241d8016a41086a200d41be016a2900003703002002200d41b6016a2900003703d80141002106200241d8016a21050c010b200241d8016a41186a200d41ce016a290000370300200241d8016a41106a200d41c6016a290000370300200241d8016a41086a200d41be016a2900003703002002200d41b6016a2900003703d801200241d8016a2105410121060b20024189016a200541186a29000037000020024181016a200541106a290000370000200241f9006a200541086a290000370000200220063a00702002200529000037007120024199016a200d41de016a290000370000200241a1016a200d41e6016a290000370000200241a9016a200d41ee016a290000370000200241b1016a200d41f6016a290000370000200241b9016a200d41fe016a290000370000200241c1016a200d4186026a290000370000200241c9016a200d418e026a2900003700002002200d41d6016a29000037009101200241a8026a410c6a200441086a290200370200200241bc026a200441106a290200370200200241c4026a200441186a290200370200200241f0c2c98b063602a802200220042902003702ac0220012802082105200241e0026a2001410c6a10cd03200241d0026a410c6a200241e0026a41086a280200360200200220053602d002200220022903e0023702d402200241d8016a200241a8026a200241d0026a10b4032002280298022205450d050240200228029c022201450d00200141306c450d00200510230b41042105200d280200200e280200470d06200241086a200e200410ce0341ff017122054106470d06200241f0006a200e200410ce0341ff017122054106470d064103210520022d0008220141024b0d06200241086a4101722104200241f0006a41017221060240024002400240024002400240024020010e03000102000b20022d0070417f6a220141014b0d0d20010e020802080b20022d0070220141024b0d0c20010e03020c04020b20022d0070220141014b0d0b20010e020204020b20042006412010a3050d0a0c060b20062004412010a3050d090c050b20062004412010a3050d080c040b20042006412010a3050d070c030b20042006412010a305450d020c060b41808e0421090c060b20042006412010a3050d040b0240200f42ffffff3f83500d00200a10230b200742ffffff3f83500d00200c10230b200041003a0000200041306a41013a0000200041286a4200370300200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a4200370300200041316a2002280070360000200041346a200241f3006a2800003600000c050b20062005419c90c3001030000b410521050b200541107441800e7221090b200020093b0001200041013a0000200041036a20094110763a0000200f42ffffff3f83500d00200a10230b200742ffffff3f83500d00200c10230b200241f0026a24000bdec70208027f017e127f017e117f077e037f087e230022032104200341800d6b41607122032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e16020103040506070108090a0b010c0d0e0f1011120100020b2002411a6a2901002105200241196a2d00002106200241186a2d00002107200241166a2f01002108200241156a2d00002109200241146a2d0000210a200241126a2f0100210b200241116a2d0000210c200241106a2d0000210d2002410e6a2f0100210e2002410d6a2d0000210f2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f010021172001411d6a29000021182001411c6a2d00002119200141196a2f0000211a200141186a2d0000211b200141156a2f0000211c200141146a2d0000211d200141116a2f0000211e200141106a2d0000211f2001410d6a2f000021202001410c6a2d00002121200141086a2802002122200141056a2f0000212320022d0001212420022d0000210220012d001b212520012d0017212620012d0013212720012d000f212820012d00072129024002400240024020012d00040e0400010203000b200341c00a6a41146a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341cccec60036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b0240024002400240200241ff01710d00202441ff01714101470d00200320053703d806200320063a00d706200320073a00d606200320083b01d406200320093a00d3062003200a3a00d2062003200b3b01d0062003200c3a00cf062003200d3a00ce062003200e3b01cc062003200f3a00cb06200320103a00ca06200320113b01c806200320123a00c706200320133a00c606200320143b01c406200320153a00c306200320163a00c206200320173b01c006200341e0036a41186a22064200370300200341e0036a41106a22014200370300200341e0036a41086a22024200370300200342003703e003418c97c300ad4280808080c00084100c222429000021052002202441086a290000370300200320053703e003202410234190f1c400ad42808080803084100c2224290000210520034190026a41086a2207202441086a2900003703002003200537039002202410232001200329039002220537030020034180056a41086a200229030037030020034180056a41106a200537030020034180056a41186a2007290300370300200320032903e00337038005200341c00a6a20034180056a412010e10120032d00c00a21242006200341d90a6a2900003703002001200341d10a6a2900003703002002200341c90a6a290000370300200320032900c10a3703e0030240024020244101460d0020034188096a41186a420037030020034188096a41106a420037030020034188096a41086a420037030020034200370388090c010b20034188096a41186a200629030037030020034188096a41106a200129030037030020034188096a41086a2002290300370300200320032903e003370388090b200341c0066a20034188096a412010a3050d18200341c00a6a202241b00210a1051a200341003b018809200341e8076a200341c00a6a20034188096a10cf024101210220032802e8074101470d03200341d00a6a200341fc076a280200360200200341c80a6a2202200341f4076a290200370300200320032902ec073703c00a2002109201419db3c500ad4280808080a00184100a4186a0c000ad4280808080e00184100a20032802c00a4101460d0141fc9fc000ad4280808080a00184100a0c020b202210b4022022102341823021030c4c0b20033502c40a100b0b410021020b200320023a00c20a2003410e3b01c00a200341c00a6a10e001202210232000410036020420004100360200200424000f0b02400240200241ff01710d00202441ff01714101470d00200320053703d806200320063a00d706200320073a00d606200320083b01d406200320093a00d3062003200a3a00d2062003200b3b01d0062003200c3a00cf062003200d3a00ce062003200e3b01cc062003200f3a00cb06200320103a00ca06200320113b01c806200320123a00c706200320133a00c606200320143b01c406200320153a00c306200320163a00c206200320173b01c006200341e0036a41186a22064200370300200341e0036a41106a22014200370300200341e0036a41086a22024200370300200342003703e003418c97c300ad4280808080c00084100c222429000021052002202441086a290000370300200320053703e003202410234190f1c400ad42808080803084100c2224290000210520034190026a41086a2207202441086a2900003703002003200537039002202410232001200329039002220537030020034180056a41086a200229030037030020034180056a41106a200537030020034180056a41186a2007290300370300200320032903e00337038005200341c00a6a20034180056a412010e10120032d00c00a21242006200341d90a6a2900003703002001200341d10a6a2900003703002002200341c90a6a290000370300200320032900c10a3703e0030240024020244101460d0020034188096a41186a420037030020034188096a41106a420037030020034188096a41086a420037030020034200370388090c010b20034188096a41186a200629030037030020034188096a41106a200129030037030020034188096a41086a2002290300370300200320032903e003370388090b0240200341c0066a20034188096a412010a305450d0041833021030c020b2003201837018008200320193a00ff07200320253a00fe072003201a3b01fc072003201b3a00fb07200320263a00fa072003201c3b01f8072003201d3a00f707200320273a00f6072003201e3b01f4072003201f3a00f307200320283a00f207200320203b01f007200320213a00ef07200320223600eb07200320293a00ea07200320233b01e80742002105200341e0036a41186a22224200370300200341e0036a41106a22244200370300200341e0036a41086a22024200370300200342003703e003418c97c300ad4280808080c000842218100c2206290000212a2002200641086a2900003703002003202a3703e003200610234190f1c400ad42808080803084222a100c2206290000212b20034190026a41086a2207200641086a2900003703002003202b37039002200610232001200329039002370000200141086a200729030037000020034180056a41086a200229030037030020034180056a41106a202429030037030020034180056a41186a2022290300370300200320032903e00337038005200341c00a6a20034180056a412010e10120032d00c00a21142022200341d90a6a22152900003703002024200341d10a6a22162900003703002002200341c90a6a2217290000370300200320032900c10a3703e00341002102410021014100212241002124410021064100210741002108410021094100210a4100210b4100210c4100210d4100210e4100210f41002110410021114100211241002113024020144101470d0020032903f803210520032d00f703210220032d00f603210120032f01f403212220032d00f303212420032d00f203210620032f01f003210720032d00ef03210820032d00ee03210920032f01ec03210a20032d00eb03210b20032d00ea03210c20032f01e803210d20032d00e703210e20032d00e603210f20032f01e403211020032d00e303211120032d00e203211220032f01e00321130b200341da0a6a2005370100201520023a0000200341c00a6a41186a220220013a0000200341d60a6a20223b0100200341d50a6a20243a0000200341d40a6a20063a0000200341d20a6a20073b0100201620083a0000200341c00a6a41106a220120093a0000200341ce0a6a200a3b0100200341cd0a6a200b3a0000200341cc0a6a200c3a0000200341ca0a6a200d3b01002017200e3a0000200341c00a6a41086a2222200f3a0000200320103b01c60a200320113a00c50a200320123a00c40a200320133b01c20a2003418e023b01c00a200341c00a6a10e0012002200341e8076a41186a2901003703002001200341e8076a41106a2901003703002022200341e8076a41086a290100370300200320032901e8073703c00a2018100c220229000021052002290008211820021023202a100c2202290000212a2002290008212b200210232003202b3701b8052003202a3701b005200320183701a805200320053701a005412010212202450d3e200220032903c00a370000200241186a200341c00a6a41186a290300370000200241106a200341c00a6a41106a290300370000200241086a200341c00a6a41086a290300370000200341a0056aad42808080808004842002ad4280808080800484100e200210232000410036020420004100360200200424000f0b41823021030b20004100360204200041146a410b360200200041106a41a181c3003602002000410c6a200336020020004101360200200424000f0b200141286a280200210102400240024002400240200241ff01710d00202441ff01714101470d00200320053703d806200320063a00d706200320073a00d606200320083b01d406200320093a00d3062003200a3a00d2062003200b3b01d0062003200c3a00cf062003200d3a00ce062003200e3b01cc062003200f3a00cb06200320103a00ca06200320113b01c806200320123a00c706200320133a00c606200320143b01c406200320153a00c306200320163a00c206200320173b01c006200341e0036a41186a22074200370300200341e0036a41106a22244200370300200341e0036a41086a22024200370300200342003703e003418c97c300ad4280808080c00084100c220629000021052002200641086a290000370300200320053703e003200610234190f1c400ad42808080803084100c2206290000210520034190026a41086a2208200641086a2900003703002003200537039002200610232024200329039002220537030020034180056a41086a200229030037030020034180056a41106a200537030020034180056a41186a2008290300370300200320032903e00337038005200341c00a6a20034180056a412010e10120032d00c00a21062007200341d90a6a2900003703002024200341d10a6a2900003703002002200341c90a6a290000370300200320032900c10a3703e0030240024020064101460d0020034188096a41186a420037030020034188096a41106a420037030020034188096a41086a420037030020034200370388090c010b20034188096a41186a200729030037030020034188096a41106a202429030037030020034188096a41086a2002290300370300200320032903e003370388090b0240200341c0066a20034188096a412010a305450d00200110b4022001102341833021030c020b200320183701b805200320193a00b705200320253a00b6052003201a3b01b4052003201b3a00b305200320263a00b2052003201c3b01b0052003201d3a00af05200320273a00ae052003201e3b01ac052003201f3a00ab05200320283a00aa05200320203b01a805200320213a00a705200320224118763a00a605200320224108763b01a405200320223a00a305200320293a00a205200320233b01a005200341c00a6a200141b00210a1051a20034192096a20032901a8053701002003419a096a20032901b005370100200341a2096a20032901b80537010020034180023b018809200320032901a00537018a09200341e8076a200341c00a6a20034188096a10cf024101210220032802e8074101470d04200341d00a6a200341fc076a280200360200200341c80a6a2202200341f4076a290200370300200320032902ec073703c00a2002109201419db3c500ad4280808080a00184100a4186a0c000ad4280808080e00184100a20032802c00a4101460d0241fc9fc000ad4280808080a00184100a0c030b200110b4022001102341823021030b20004100360204200041146a410b360200200041106a41a181c3003602002000410c6a200336020020004101360200200424000f0b20033502c40a100b0b410021020b200320023a00c20a2003418e043b01c00a200341c00a6a10e001200110232000410036020420004100360200200424000f0b000b41022107200141106a29030021052001410c6a280200210620022d0001212420022d0000212202400240024002400240024002400240024002400240024002400240200141086a280200417f6a0e0a00010203040506070809000b41002103200041003602042024202241ff01714100477241ff0171450d512000410c6a41023602000c500b2005a721030240202241ff01710d00202441ff01714101470d002003450d09200610230c090b02402003450d00200610230b200041003602042000410c6a41023602000c4f0b02402024202241ff01714100477241ff01710d00410810212203450d452003200537000041aa9dc500ad4280808080a001842003ad4280808080800184100e200310230c080b200041003602042000410c6a41023602000c4e0b410021082005a721092024202241ff01714100477241ff01710d4c20034188096a2005428080808070832006ad8422051017108b012003280288092202450d4a200328028c092101200320034190096a2802003602ec07200320023602e807200341206a200341e8076a10880120032802200d4920032802ec07220720032802242222490d492022417f4c0d1b0240024020220d00410121240c010b202210272224450d44202420032802e8072208202210a1051a2003200720226b3602ec072003200820226a3602e8070b2024450d49200341186a200341e8076a1088012022ad22184220862018842218a7210720032802180d4720032802ec072208200328021c2222490d472022417f4c0d1b0240024020220d004101210a0c010b20221027220a450d44200a20032802e807220b202210a1051a2003200820226b22083602ec072003200b20226a3602e8070b200a450d472022ad222a422086202a84222aa7210b0240024002400240024020084104490d0020032802e807222228000021102003202241046a3602e80720032008417c6a220c3602ec07200c4104490d012003202241086a3602e807202228000421112003200841786a220c3602ec07200c4104490d032003200841746a3602ec0720032022410c6a3602e80720222800082112200341106a200341e8076a1088012003280210450d020c4b0b0240200b450d00200a10230b20070d4c0c4d0b0240200b450d00200a10230b20070d4b0c4c0b2003280214220820032802ec07410c6e2222202220084b1bad420c7e222b422088a70d1d202ba7220c417f4c0d1d02400240200c0d004104210d0c010b200c1021220d450d460b41002122200341003602c80a2003200d3602c00a2003200c410c6e3602c40a024002402008450d000340200341c0066a200341e8076a10f60220032d00c0064101460d0220032802ec07220c4104490d0220032900c106212b20032802e807220e280000210f2003200c417c6a3602ec072003200e41046a3602e8070240202220032802c40a470d00200341c00a6a2022410110950120032802c00a210d20032802c80a21220b200d2022410c6c6a220c200f360208200c202b3702002003202241016a22223602c80a2008417f6a22080d000b0b200d450d4920032902c40a212b2003200d36028c04200341013602880420032012360284042003201136028004200320103602fc032003202a422088a73602f8032003200b3602f4032003200a3602f003200341013602ec0320032018422088a7220c3602e803200320073602e403200320243602e0032003202b3703900402402001450d00200210230b202ba7210841c8ddc4002102410f210141002122200c4107470d482024419cc9c200460d022024419cc9c200410710a305450d020c480b20032802c40a2203450d482003410c6c450d48200d10230c480b0240200b450d00200a10230b2007450d4a0c490b0240201141024f0d0041aeddc4002102411a2101410121220c460b02402007450d00202410230b0240200b450d00200a10230b02402008450d002008410c6c450d00200d10230b41b49dc500ad4280808080d000842005100e41002102200341003a00c00a200341023a00c40a200341c00a6a10e0012009450d07200610232000410036020420004100360200200424000f0b2005a7210202402024202241ff01714100477241ff01710d0041b49dc500ad4280808080d000842005428080808070832006ad84100e200341003a00c00a200341023a00c40a200341c00a6a10e0012002450d06200610230c060b02402002450d00200610230b200041003602042000410c6a41023602000c4c0b2024202241ff01714100477241ff01710d1a2005422088a721072005a721080240024020064101460d0041b99dc500ad4280808080d0018410110c010b410410212202450d412002200836000020024104410810252202450d412002200736000441b99dc500ad4280808080d001842002ad4280808080800184100e200210230b200341e0036a41186a4200370300200341e0036a41106a22224200370300200341e0036a41086a22024200370300200342003703e00341e4dec400ad4280808080e00084100c220129000021052002200141086a290000370300200320053703e003200110234191dfc400ad4280808080e00084100c2201290000210520034190026a41086a2224200141086a2900003703002003200537039002200110232022200329039002220537030020034180056a41086a200229030037030020034180056a41106a200537030020034180056a41186a2024290300370300200320032903e00337038005200341c00a6a20034180056a10f7020240024020032802c00a22220d00410021242003410036029009200342043703880941042122410021010c010b200320032902c40a220537028c0920032022360288092005422088a721012005a721240b200341c0066a41026a2209200341e8076a41026a2d00003a0000200341a0056a41086a220a200341c00a6a41086a290200370300200341a0056a41106a220b200341c00a6a41106a280200360200200320032f00e8073b01c006200320032902c00a3703a005024020012024470d0020034188096a2024410110a201200328028c092124200328028809212220032802900921010b2022200141246c220c6a220241043a00002002200736020c2002200836020820022006360204200241036a20092d00003a0000200220032f01c0063b0001200220032903a005370210200241186a200a290300370200200241206a200b2802003602002003200141016a22023602900941e4dec400ad4280808080e00084100c2206290000210520062900082118200610234191dfc400ad4280808080e00084100c2206290000212a2006290008212b200610232003202b3703b8052003202a3703b005200320183703a805200320053703a005200341203602c4062003200341a0056a3602c00620222002200341c0066a10f802024020022001490d00200c41246a21022022210303400240024020032d0000220141044b0d0002400240024020010e050400010204040b2003410c6a280200450d03200341086a28020010230c030b2003410c6a280200450d02200341086a28020010230c020b2003410c6a280200450d01200341086a28020010230c010b200341086a280200450d00200341046a28020010230b200341246a21032002415c6a22020d000b0b2024450d04202441246c450d04202210230c040b2005422088a721012005a7210702402024202241ff01714100477241ff01710d000240200141186c2203450d00200620036a2102200621030340200341086a350200422086200335020084200341146a3502004220862003410c6a35020084100e200341186a22032002470d000b0b02402001450d00200141186c21022006210303400240200341046a280200450d00200328020010230b0240200341106a280200450d002003410c6a28020010230b200341186a2103200241686a22020d000b0b2007450d04200741186c450d04200610230c040b02402001450d00200141186c21022006210303400240200341046a280200450d00200328020010230b0240200341106a280200450d002003410c6a28020010230b200341186a2103200241686a22020d000b0b02402007450d00200741186c450d00200610230b200041003602042000410c6a41023602000c4a0b2005422088a721012005a7210702402024202241ff01714100477241ff01710d0002402001410c6c2203450d00200620036a2102200621030340200341086a35020042208620033502008410112003410c6a22032002470d000b0b02402001450d002001410c6c21022006210303400240200341046a280200450d00200328020010230b2003410c6a2103200241746a22020d000b0b2007450d032007410c6c450d03200610230c030b02402001450d002001410c6c21022006210303400240200341046a280200450d00200328020010230b2003410c6a2103200241746a22020d000b0b02402007450d002007410c6c450d00200610230b200041003602042000410c6a41023602000c490b2005a7210302402024202241ff01714100477241ff01710d002005428080808070832006ad8410122003450d02200610230c020b02402003450d00200610230b200041003602042000410c6a41023602000c480b202241ff01710d0241012101202441ff01714101470d022002411a6a2901002105200241196a2d00002122200241186a2d00002124200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f010021142003200241096a2d00003a00a705200320103a00a605200320113b01a405200320123a00a305200320133a00a205200320143b01a0052003200a3a00af052003200b3a00ae052003200c3b01ac052003200d3a00ab052003200e3a00aa052003200f3b01a805200320223a00b705200320243a00b605200320063b01b405200320073a00b305200320083a00b205200320093b01b005200320053703b80520034188096a41186a200537030020034188096a41106a20032903b00537030020034190096a20032903a805370300200320032903a00537038809200341c0066a20034188096a109702200341c00a6a20032802c006220220032802c80610980242002105420021184200212a4200212b4200212c4200212d4200212e4200212f024020032903c00a4201520d0020032d008c0b452101200341c00a6a41106a290300212f200341e00a6a2903002118200341c00a6a41186a2903002105200341f00a6a290300212b200341e80a6a290300212a200341800b6a290300212d200341f80a6a290300212c20032903c80a212e0b024020032802c406450d00200210230b024020010d00410f210341efdcc4002102418080102101410321220c040b0240202a200584202c84202e84202b201884202d84202f8484500d004113210341fedcc40021024180800c2101410321220c040b200341c00a6a41186a20034188096a41186a290300370300200341c00a6a41106a20034188096a41106a290300370300200341c00a6a41086a20034188096a41086a29030037030020032003290388093703c00a200341c0066a200341c00a6a10f90220033502c80642208620032802c0062202ad84101120032802c406450d00200210230b410021020b2000200236020420002002360200200424000f0b41002101410221220b20004100360204200041146a2003360200200041106a20023602002000410c6a20014180801c712022723602000c430b0240024020022d00000d0020022d000141ff01714102470d00200141086a2903002105200341e0036a41186a22244200370300200341e0036a41106a22024200370300200341e0036a41086a22014200370300200342003703e00341b494c700ad42808080809001842218100c2222290000212a2022290008212b202210232001202b3703002003202a3703e00341a89ec700ad4280808080900184100c2206290000212a20034190026a41086a2222200641086a2900003703002003202a37039002200610232002200329039002222a37030020034180056a41086a2207200129030037030020034180056a41106a2208202a37030020034180056a41186a22092022290300370300200320032903e00337038005200341c8006a20034180056a4120419ca8c70041004100108c0120032802484101460d14202442003703002002420037030020014200370300200342003703e0032018100c220629000021182006290008212a200610232001202a370300200320183703e00341bd94c700ad428080808030842218100c2206290000212a2022200641086a2900003703002003202a37039002200610232002200329039002370000200241086a2022290300370000200720012903003703002008200229030037030020092024290300370300200320032903e00337038005200341386a20034180056a10fa022003290340500d012003280238450d01200341e0036a41186a22244200370300200341e0036a41106a22064200370300200341e0036a41086a22014200370300200342003703e00341b494c700ad4280808080900184100c2222290000212a2022290008212b202210232001202b3703002003202a3703e00341bd94c700ad42808080803084100c2222290000212a20034190026a41086a2207202241086a2900003703002003202a37039002202210232002200329039002370000200241086a200729030037000020034180056a41086a200129030037030020034180056a41106a200629030037030020034180056a41186a2024290300370300200320032903e00337038005200341286a20034180056a10fa02200329033042b8177c42b81720032802281b2005580d0141f5a2c70041ce00418c94c700102d000b200041003602042000410c6a410236020020004101360200200424000f0b200341e0036a41186a22224200370300200341e0036a41106a22244200370300200341e0036a41086a22014200370300200342003703e00341b494c700ad4280808080900184222a100c2206290000212b2006290008212c200610232001202c3703002003202b3703e0032018100c2207290000211820034190026a41086a2206200741086a2900003703002003201837039002200710232002200329039002370000200241086a2208200629030037000020034180056a41086a2209200129030037030020034180056a41106a220a202429030037030020034180056a41186a220b2022290300370300200320032903e00337038005200320053703c00a20034180056aad42808080808004842205200341c00a6aad22184280808080800184100e202242003703002024420037030020014200370300200342003703e003202a100c2207290000212a2007290008212b200710232001202b3703002003202a3703e00341a89ec700ad4280808080900184100c2207290000212a2006200741086a2900003703002003202a370390022007102320022003290390023700002008200629030037000020092001290300370300200a2024290300370300200b2022290300370300200320032903e00337038005200341013a00c00a2005201842808080801084100e2000410036020420004100360200200424000f0b200141156a29000021052001410d6a29000021182002411a6a290100212c200241196a2d00002124200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f01002116200141286a28020021192001411d6a290000212a200141056a290000222b421888a7211720022d0001212220022d000021020240024002400240024020012d00040e050001020304000b200341c00a6a41146a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341cccec60036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b200241ff01710d15202241ff01714101470d152003202c37038008200320243a00ff07200320063a00fe07200320073b01fc07200320083a00fb07200320093a00fa072003200a3b01f8072003200b3a00f7072003200c3a00f6072003200d3b01f4072003200e3a00f3072003200f3a00f207200320103b01f007200320113a00ef07200320123a00ee07200320133b01ec07200320143a00eb07200320153a00ea07200320163b01e807200341e0036a201710fb02200341c00a6a20032802e003220920032802e803220a10fc0220034188096a41086a2202200341c00a6a41106a29030037030020034188096a41106a2201200341c00a6a41186a29030037030020034188096a41186a2222200341e00a6a290300370300200320032903c80a37038809024020032903c00a4201510d00200341c0066a41086a200341e8076a41086a290300370300200341c0066a41106a200341e8076a41106a290300370300200341c0066a41186a200341e8076a41186a290300370300200320032903e8073703c006200342003703a80520034280a094a58d1d3703a0052003200341e8076a360280052003200341e8076a3602a0022003200341a0026a3602c80a200320034180056a3602c40a2003200341a0056a3602c00a20034188096a200341e8076a200341c00a6a10fd0202402003280288094101470d0020034194096a280200210120034190096a280200212220032d008f09210720032d008e09212420032d008d09210620032d008c0921020c380b41042102024020034188096a41086a2903004201510d000c380b20034188096a41106a290300210520032802a0022101200341f80a6a20034188096a41186a290300370300200341f00a6a2005370300200341c00a6a41086a41003a0000200341c90a6a2001290000370000200341d10a6a200141086a290000370000200341d90a6a200141106a290000370000200341e10a6a200141186a290000370000200341023a00c00a200341c00a6a10e0010c370b200341c0066a41186a2022290300370300200341c0066a41106a2001290300370300200341c0066a41086a200229030037030020032003290388093703c0064105210141d0a4c6002122410221244104210641032102410021080c370b200341c0066a41106a20053703002003202b3703c0062003202a3703d806200320183703c8060240200241ff01710d00202241ff01714101470d002003202c3703a009200320243a009f09200320063a009e09200320073b019c09200320083a009b09200320093a009a092003200a3b0198092003200b3a0097092003200c3a0096092003200d3b0194092003200e3a0093092003200f3a009209200320103b019009200320113a008f09200320123a008e09200320133b018c09200320143a008b09200320153a008a09200320163b018809024020034188096a200341c0066a412010a3050d00410021014103210241042122410b212441c5a4c6002106410321070c360b200341a0056a201910fb02200341c00a6a20032802a005220820032802a805220910fc02410321024104212241002101024020032903c00a4201510d0041dda4c6002106410b2124410021070c350b200341f00a6a2903002105200341e80a6a2903002118200341d00a6a2224290300212b200341c00a6a41206a290300212a20032903c80a212c2024200341d80a6a2903003703002003202a3703d80a2003202c3703c00a2003202b3703c80a200341c00a6a20034188096a412010a3050d16200341e8076a20034188096a200341c0066a20182005410110fe02200341e8076a41086a290300212b0240024020032802e8074101460d0042002005200341e8076a41106a2903007d2018202b54ad7d222a2018202b7d222b201856202a200556202a2005511b22021b21054200202b20021b2118200341c0066a41106a290300212c20032903c806212d20032903c006212e20032903d806212a4201212b4100212241002107410021010c010b20032802ec07220241187621012002411076210720024108762122202b422088a72124202ba72106200241ff01714104470d354200212b0b200341f00a6a2005370300200341e80a6a2018370300200341e00a6a202a3703002003202b3703c00a200341d80a6a202c3703002003202e3703c80a2003202d3703d00a02400240202b4201510d002009ad4220862008ad8410110c010b411010212202450d3b20024110412010252202450d3a2002200341c80a6a220a290000370000200241186a200a41186a290000370000200241106a200a41106a290000370000200241086a200a41086a2900003700002002412041c00010252202450d3a20022018370020200241286a20053700002009ad4220862008ad842002ad4280808080800684100e200210230b410421020c340b410021224102210241002107410021010c340b0240200241ff01710d00202241ff01714101470d002003202c37038008200320243a00ff07200320063a00fe07200320073b01fc07200320083a00fb07200320093a00fa072003200a3b01f8072003200b3a00f7072003200c3a00f6072003200d3b01f4072003200e3a00f3072003200f3a00f207200320103b01f007200320113a00ef07200320123a00ee07200320133b01ec07200320143a00eb07200320153a00ea07200320163b01e807200341e0036a201710fb02200341c00a6a20032802e003220620032802e803222210fc024103210241002101024020032903c00a4201510d0041dda4c6002122410b21240c320b200341f00a6a290300212b200341e80a6a290300212c200341c00a6a41106a2903002105200341c00a6a41206a290300211820032903c80a212a200341c0066a41106a200341d80a6a290300370300200320183703d8062003202a3703c006200320053703c806200341c0066a200341e8076a412010a3050d162003202c3703a0052003202b3703a8050240202c202b84500d002003200341e8076a3602a00220034188096a200341e8076a200341a0056a200341a0026a10ff022003290388094201520d002003290390092105200341f80a6a20034188096a41106a290300370300200341f00a6a2005370300200341c00a6a41086a41003a0000200341c90a6a20032903e807370000200341d10a6a200341e8076a41086a290300370000200341d90a6a200341e8076a41106a290300370000200341e10a6a20034180086a290300370000200341023a00c00a200341c00a6a10e0010b2022ad4220862006ad841011410421020c310b41002101410221020c310b2022200241ff01714100477241ff01710d15200341a0056a201910fb02200341c00a6a20032802a005222220032802a805220710fc02200341f00a6a2102200341e80a6a2101200341d80a6a2124200341e00a6a2106024020032903c00a4201520d002002290300212c2001290300212d200341c00a6a41106a290300212e2006290300212f20032903c80a2130200341c0066a41106a20242903003703002003202f3703d806200320303703c0062003202e3703c8062003202d3703e8072003202c3703f007202d202c84500d002003200341c0066a3602e00320034188096a200341c0066a200341e8076a200341e0036a10ff022003290388094201520d00200329039009212c200341f80a6a20034188096a41106a290300370300200341f00a6a202c370300200341c00a6a41086a41003a0000200341c90a6a20032903c006370000200341d10a6a200341c0066a41086a290300370000200341d90a6a200341c0066a41106a290300370000200341e10a6a200341d8066a290300370000200341023a00c00a200341c00a6a10e0010b20024200370300200142003703002006202a370300202420053703002003202b3703c80a200342013703c00a200320183703d00a411010212202450d3720024110412010252202450d362002200341c80a6a2201290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002002412041c00010252202450d3620024200370020200241286a42003700002007ad4220862022ad842002ad4280808080800684100e20021023024020032802a405450d00202210230b200341cd0a6a2018370000200341c00a6a41286a2019360200200341dd0a6a202a370000200341d50a6a20053700002003202b3700c50a200341003a00c40a200341013a00c00a200341c00a6a10e0012000410036020420004100360200200424000f0b200141216a290000212a200141206a2d000021062001411d6a2f000021072001411c6a2d00002108200141196a2f00002109200141186a2d0000210a200141156a2f0000210b200141146a2d0000210c200141116a2f0000210d200141106a2d0000210e2001410d6a2f0000210f2001410c6a2d00002110200141096a2f00002111200141086a2d0000212220012d001f211220012d001b211320012d0017211420012d0013211520012d000f211620012d000b211720032001412c6a28000036008b022003200128002936028802200141c8006a290300212c200141c0006a290300212b200141386a2903002105200141306a29030021182002411a6a290100212d200241196a2d00002119200241186a2d0000211a200241166a2f0100211b200241156a2d0000211c200241146a2d0000211d200241126a2f0100211e200241116a2d0000211f200241106a2d000021202002410e6a2f010021212002410d6a2d000021232002410c6a2d000021252002410a6a2f01002126200241096a2d00002127200241086a2d00002128200241066a2f01002129200241056a2d00002131200241046a2d00002132200241026a2f0100213320022d0001212420022d000021020240024002400240024020220e050001020304000b200341c00a6a41146a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341cccec60036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b02400240200241ff01710d00202441ff01714101470d002003202d3703a009200320193a009f092003201a3a009e092003201b3b019c092003201c3a009b092003201d3a009a092003201e3b0198092003201f3a009709200320203a009609200320213b019409200320233a009309200320253a009209200320263b019009200320273a008f09200320283a008e09200320293b018c09200320313a008b09200320323a008a09200320333b0188092003202a3703d80a200320063a00d70a200320123a00d60a200320073b01d40a200320083a00d30a200320133a00d20a200320093b01d00a2003200a3a00cf0a200320143a00ce0a2003200b3b01cc0a2003200c3a00cb0a200320153a00ca0a2003200d3b01c80a2003200e3a00c70a200320163a00c60a2003200f3b01c40a200320103a00c30a200320173a00c20a200320113b01c00a200341c0066a20034188096a200341c00a6a2018200541011080034100210220032d00c00622014104460d32200341c0066a41086a280200210220032802c406212220032d00c106410874212420032d00c206411074210620032d00c30641187421030c010b410021244102210141002106410021030b200041146a2002360200200041106a20223602002000410c6a20032006722024722001723602000c2d0b2024200241ff01714100477241ff01710d182003202a3703b802200320063a00b702200320123a00b602200320073b01b402200320083a00b302200320133a00b202200320093b01b0022003200a3a00af02200320143a00ae022003200b3b01ac022003200c3a00ab02200320153a00aa022003200d3b01a8022003200e3a00a702200320173a00a202200320113b01a0022003200f4108742010722016411874723600a3024200212e20034200202c202b20187c222a4280c8afa025544100202c20057c202a202b54ad7c501b22021b222c3703c80320034200202b20021b222b3703c0032003200341a0026a3602ac0a200341b00a6a200341a0026a109702200341e8076a20032802b00a222420032802b80a220610980220032903e8072130200342003703e8074200200520021b21054200201820021b2118200341b0086a280200210720032d00b40821080240024020304201510d00200341a0056a41306a4200370300200341a0056a41286a4200370300200341a0056a41206a4200370300200341a0056a41186a4200370300200341b0056a4200370300200341a0056a41086a4200370300200342003703a0054200212f4200212d4200212a420021340c010b200341a0086a2903002135200341e8076a41306a2903002136200341e8076a41206a290300212f200341e8076a41186a290300212e200341a8086a290300213420032903f807212a20032903f007212d200341a0056a41206a200341e8076a41286a290300370300200341a0056a41286a2036370300200341a0056a41306a2035370300200341b0056a202e3703002003202f3703b8052003202d3703a0052003202a3703a8050b202d202e7c2236202d5421222018202d562005202a562005202a5122021b0d172018202d542005202a5420021b450d2e200341e0036a41186a220b4200370300200341e0036a41106a22014200370300200341e0036a41086a22024200370300200342003703e00341bdadc500ad4280808080800184222b100c2209290000212c2009290008213520091023200220353703002003202c3703e00341c5adc500ad4280808080d00184222c100c220a290000213520034190026a41086a2209200a41086a2900003703002003203537039002200a10232001200329039002223537030020034180056a41086a220c200229030037030020034180056a41106a220d203537030020034180056a41186a220e2009290300370300200320032903e0033703800520034198016a20034180056a412010d70120034198016a41106a290300213520032903a0012137200328029801210a200b42003703002001420037030020024200370300200342003703e003202b100c220b290000212b200b2900082138200b1023200220383703002003202b3703e003202c100c220b290000212b2009200b41086a2900003703002003202b37039002200b10232001200329039002222b370300200c2002290300370300200d202b370300200e2009290300370300200320032903e003370380052003420020354200200a1b222b202d201854ad2005202a7d7c7c20374200200a1b222c202d20187d223554ad7d222d202c20357d2235202c56202d202b56202d202b511b22021b3703c80a20034200203520021b3703c00a200341c00a6a210220034180056a21010c2d0b200141d8006a290300212d200141d0006a290300212e20034187086a202c3c0000200341f7076a20053700002003202b3700ff07200320183700ef072003200328008b023600eb0720032003280288023602e80741002101024002402024200241ff01714100477241ff01710d002003202a3703a009200320063a009f09200320123a009e09200320073b019c09200320083a009b09200320133a009a09200320093b0198092003200a3a009709200320143a0096092003200b3b0194092003200c3a009309200320153a0092092003200d3b0190092003200e3a008f09200320163a008e092003200f3b018c09200320103a008b09200320173a008a09200320113b018809200341c00a6a41186a200341e8076a41186a290300370300200341c00a6a41106a200341e8076a41106a290300370300200341c00a6a41086a200341e8076a41086a290300370300200320032903e8073703c00a200341c0066a20034188096a200341c00a6a202e202d41011080034100210220032d00c00622224104460d30200341c0066a41086a280200210220032802c406212420032d00c106410874210120032d00c206411074210620032d00c30641187421030c010b4102212241002106410021030b200041146a2002360200200041106a20243602002000410c6a20032006722001722022723602000c2b0b2003202a3703b805200320063a00b705200320123a00b605200320073b01b405200320083a00b305200320133a00b205200320093b01b0052003200a3a00af05200320143a00ae052003200b3b01ac052003200c3a00ab05200320153a00aa052003200d3b01a8052003200e3a00a705200320163a00a6052003200f3b01a405200320103a00a305200320173a00a205200320113b01a00502400240200241ff01710d00202441ff01714101470d002003202d3703a009200320193a009f092003201a3a009e092003201b3b019c092003201c3a009b092003201d3a009a092003201e3b0198092003201f3a009709200320203a009609200320213b019409200320233a009309200320253a009209200320263b019009200320273a008f09200320283a008e09200320293b018c09200320313a008b09200320323a008a09200320333b018809200341c00a6a41186a200341a0056a41186a290300370300200341c00a6a41106a200341a0056a41106a290300370300200341c00a6a41086a200341a0056a41086a290300370300200320032903a0053703c00a41002102200341c0066a20034188096a200341c00a6a20182005410010800320032d00c00622014104460d2f200341c0066a41086a280200210220032802c406212220032d00c106410874212420032d00c206411074210620032d00c30641187421030c010b410021244102210141002106410021030b200041146a2002360200200041106a20223602002000410c6a20032006722024722001723602000c2a0b2001410c6a2802002107200141086a28020021092001280204210b4102212202400240024020022d00000d0020022d000141ff01714102470d002007410a4b0d01200341a0056a41186a22244200370300200341a0056a41106a22064200370300200341a0056a41086a22024200370300200342003703a00541fea6c600ad4280808080a001842205100c220129000021182002200141086a290000370300200320183703a005200110234198bdc600ad4280808080c00184222b100c220129000821182001290000212a20011023200341e8076a41106a2201202a370300200341e8076a41186a22082018370300200341e8076a41086a220a2002290300370300200320032903a0053703e807200341e8076a108103220c41ff01714102460d0241032122200c410171450d020b4101210d4110210a41cfa7c600210e2007450d280c270b4102210d41032122410d210a41c2a7c600210e0c260b202442003703002006420037030020024200370300200342003703a0052005100c222229000021182002202241086a290000370300200320183703a00520221023202b100c222229000821182022290000212a202210232001202a37030020082018370300200a2002290300370300200320032903a0053703e807200341013a00c00a200341e8076aad4280808080800484222a200341c00a6aad42808080801084100e200341e0036a41186a4200370300200341e0036a41106a22194200370300200341e0036a41086a22224200370300200342003703e00341e4dec400ad4280808080e00084100c220c29000021182022200c41086a290000370300200320183703e003200c102341f3dec400ad4280808080e00084100c220c290000211820034190026a41086a220d200c41086a2900003703002003201837039002200c10232019200329039002221837030020034180056a41086a202229030037030020034180056a41106a201837030020034180056a41186a200d290300370300200320032903e00337038005200341b8016a20034180056a412010cd0120032802bc01210c20032802b801210d202442003703002006420037030020024200370300200342003703a0052005100c222229000021052002202241086a290000370300200320053703a00520221023419ca8c600ad4280808080e00084100c2222290008210520222900002118202210232001201837030020082005370300200a2002290300370300200320032903a0053703e807200341c00a6a200341e8076a1082030240024020032802c00a22100d00200341003602b80a200342043703b00a4104211041002101410021020c010b200320032902c40a22053702b40a200320103602b00a2005422088a721012005a721020b200c4100200d1b2122024020012002470d00200341b00a6a20014101109b0120032802b00a211020032802b80a21010b2010200141c4006c6a220241003a000020022022360204200241036a200341c0066a41026a2d00003a0000200220032f00c0063b0001200220032902c00a370208200241106a200341c00a6a41086a2225290200370200200241186a200341c00a6a41106a2226290200370200200241206a200341c00a6a41186a290200370200200241286a200341c00a6a41206a290200370200200241306a200341c00a6a41286a290200370200200241386a200341c00a6a41306a290200370200200241c0006a200341c00a6a41386a2802003602002003200141016a220f3602b80a200b200741f0006c22026a2123024020070d00200b21240c240b200b41f4006a2106200241907f6a210841e4dec400ad4280808080e000842118200b212403402024280204211120242802002122200341c00a6a202441086a41e80010a1051a202441f0006a21242011450d2420034188096a200341c00a6a41e80010a1051a200320113602c40a200320223602c00a202520034188096a41e80010a1051a200341e0036a41186a22134200370300200341e0036a41106a22144200370300200341e0036a41086a22124200370300200342003703e0032018100c220229000021052012200241086a290000370300200320053703e0032002102341f3dec400ad4280808080e00084100c2202290000210520034190026a41086a2201200241086a2900003703002003200537039002200210232019200329039002370000201941086a200129030037000020034180056a41086a2215201229030037030020034180056a41106a2216201429030037030020034180056a41186a22172013290300370300200320032903e00337038005200341b0016a20034180056a412010cd0120032802b001210220032802b4012101200341e8076a200341c00a6a108303410c210a024020220d0041b6a7c600210e4103210d0c240b024020222001410020021b22024d0d0041aaa7c600210e4104210d0c240b200341c0066a2022417f6a1084030240200341c0066a2026412010a305450d004112210a41dfa7c600210e4100210d0c240b0240202220024f0d004108210a418ea7c600210e4106210d0c240b0240024020102010200f41c4006c22016a460d00201041016a2102034002402002417f6a2d00004101470d004101210c200341e8076a2002460d032002200341e8076a412010a305450d030b200241c4006a2102200141bc7f6a22010d000b0b4100210c0b200341c0066a2022108403200341c0066a200341e8076a412010a30521024114210a4196a7c600210e4105210d200c0d232002450d23200341c0036a41086a220a200341a0056a41086a290200370300200341c0036a41106a220c200341a0056a41106a2f01003b0100200320032902a0053703c003200341e8076a200341c00a6a108303201742003703002016420037030020154200370300200342003703800541c80010212202450d35200341e0036a108503200241186a2013290300370200200241106a2014290300370200200241086a2012290300370200200220032903e003370200200241023602202002410136024420022003290380053701242002412c6a2015290300370100200241346a20162903003701002002413c6a2017290300370100200320023602c00620034282808080203702c406200341c0066a10b901200341c0066a41186a4200370300200341c0066a41106a22014200370300200341c0066a41086a22224200370300200342003703c006200341c0066a10d10220032f01e807210d20032d00ea07210e20032800eb07211220032d00ef07211320032f01f007211420032d00f207211520032d00f307211620032f01f407211720032d00f607211a20032d00f707211b20032f01f807211c20032d00fa07211d20032d00fb07211e20032f01fc07211f20032d00fe07212020032d00ff07212120032903800821052001200c2f01003b01002022200a290300370300200320032903c0033703c0060240200f20032802b40a470d00200341b00a6a200f4101109b0120032802b80a210f0b20032802b00a2210200f41c4006c6a220241003a002120022005370019200220213a0018200220203a00172002201f3b00152002201e3a00142002201d3a00132002201c3b00112002201b3a00102002201a3a000f200220173b000d200220163a000c200220153a000b200220143b0009200220133a0008200220123600042002200e3a00032002200d3b0001200241013a0000200241c0006a20012f01003b0000200241386a2022290300370000200220032903c0063700302003200f41016a220f3602b80a024020032802cc0a2202450d00200241246c21012011210203400240024020022d0000222241044b0d0002400240024020220e050400010204040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022001415c6a22010d000b0b024020032802c80a2202450d00200241246c450d00201110230b200841907f6a2108200641f0006a210620242023470d000c250b0b200341c00a6a200141086a41880210a1051a20034188096a41206a200241206a28020036020020034188096a41186a200241186a29020037030020034188096a41106a200241106a29020037030020034188096a41086a200241086a29020037030020032002290200370388092000200341c00a6a20034188096a109402200424000f0b200141086a280200211d2001280204211c200341c00a6a2001410c6a41a40110a1051a2002411a6a2901002105200241196a2d00002122200241186a2d00002124200241166a2f01002106200241156a2d00002107200241146a2d00002108200241126a2f01002109200241116a2d0000210a200241106a2d0000210b2002410e6a2f0100210c2002410d6a2d0000210d2002410c6a2d0000210e2002410a6a2f0100210f200241096a2d00002110200241086a2d00002111200241066a2f01002112200241056a2d00002113200241046a2d00002114200241026a2f0100211520022d0001210120022d000021020240201c450d00200341a0026a200341c00a6a41046a41a00110a1051a024002400240200241ff01710d00200141ff01714101460d010b0240201d450d00201c10230b41002103410221020c010b200320053703d803200320223a00d703200320243a00d603200320063b01d403200320073a00d303200320083a00d203200320093b01d0032003200a3a00cf032003200b3a00ce032003200c3b01cc032003200d3a00cb032003200e3a00ca032003200f3b01c803200320103a00c703200320113a00c603200320123b01c403200320133a00c303200320143a00c203200320153b01c003200341e0036a200341a0026a41a00110a1051a200341c0066a41186a20032903d803370300200341c0066a41106a20032903d003370300200341c8066a20032903c803370300200320032903c0033703c00620034188096a200341c0066a1086020240024020032d0088094101470d00200341ff076a2202200341a1096a290000370000200341e8076a41106a22012003419a096a29010037030020034189056a20034192096a29010037000020034191056a200129030037000020034180056a41186a2002290000370000200320032d0089093a0080052003200329018a0937008105200341a0056a200341e0036a41a00110a1051a20034190026a20034180056a10860320034188096a200328029002220120032802980210870320032d0088092102200341e8076a20034188096a41017241a00110a1051a0240024020024101460d00200341003a00c0060c010b200341013a00c006200341c0066a410172200341e8076a41a00110a1051a0b0240200328029402450d00200110230b200341a0056a41206a211e200341e0056a211f20034180066a2120200341a0066a2121200341e1066a212320034181076a2125200341a1076a2126200341c1076a2127200341c0066a4101722128416c2124034041002101419ca8c70021220240024002400240202441d8cac2006a280000220241e0ea91cb064a22080d00200241f0c2c98b06460d01200241e2c289ab06470d0341202101201e21220c030b200241e1ea91cb06460d010240200241e9dabdf306460d00200241e7e485f306470d0341202101200341a0056a21220c030b41202101201f21220c020b41202101202021220c010b41202101202121220b20032001360290092003202236028c092003200236028809200341e8076a20034188096a10880320034188096a20032802e807220720032802f00710e10120032802ec0721060240024020032d0088094101470d0020032900a109210520032d00a009210920032d009f09210a20032f009d09210b20032d009c09210c20032d009b09210d20032f009909210e20032d009809210f20032d009709211020032f009509211120032d009409211220032d009309211320032f009109211420032d009009211520032d008f09211620032f008d09211720032d008c09211920032d008b09211a20032f008909211b02402006450d00200710230b200320053703a009200320093a009f092003200a3a009e092003200b3b019c092003200c3a009b092003200d3a009a092003200e3b0198092003200f3a009709200320103a009609200320113b019409200320123a009309200320133a009209200320143b019009200320153a008f09200320163a008e09200320173b018c09200320193a008b092003201a3a008a092003201b3b01880920034188096a20034180056a412010a305450d0141808008210341f9abc3002101410d21220c040b2006450d00200710230b0240024020032d00c0064101470d0041002106419ca8c7002107024002400240024020080d00200241f0c2c98b06460d01200241e2c289ab06470d0341202106202321070c030b200241e1ea91cb06460d010240200241e9dabdf306460d00200241e7e485f306470d0341202106202821070c030b41202106202521070c020b41202106202621070c010b41202106202721070b024020012006470d0020222007460d0220222007200110a305450d020b20032006360290092003200736028c092003200236028809200341e8076a20034188096a10880320033502f00742208620032802e8072206ad84101120032802ec07450d00200610230b20032001360290092003202236028c092003200236028809200341e8076a20034188096a10880320032802e807210120033502f0072105412010212202450d392002200329038005370000200241186a20034180056a41186a290300370000200241106a20034180056a41106a290300370000200241086a20034180056a41086a29030037000020054220862001ad842002ad4280808080800484100e2002102320032802ec07450d00200110230b202441046a22240d000b20034188096a20034180056a10860320033502900921052003280288092101412010212202450d36200220032903a005370000200241186a200341a0056a41186a290300370000200241106a200341a0056a41106a290300370000200241086a200341a0056a41086a2903003700002002412041c00010252202450d36200220032903c005370020200241386a200341a0056a41386a290300370000200241306a200341a0056a41306a290300370000200241286a200341a0056a41286a290300370000200241c00041800110252202450d36200220032903e005370040200241d8006a200341a0056a41d8006a290300370000200241d0006a200341a0056a41d0006a290300370000200241c8006a200341a0056a41c8006a2903003700002002200329038006370060200241e8006a200341a0056a41e8006a290300370000200241f0006a200341a0056a41f0006a290300370000200241f8006a200341a0056a41f8006a290300370000200241800141800210252202450d36200220032903a0063700800120024198016a200341a0056a4198016a29030037000020024190016a200341a0056a4190016a29030037000020024188016a200341a0056a4188016a29030037000020054220862001ad842002ad4280808080801484100e200210230240200328028c09450d00200110230b024020032d00c0060d00200341c0036a1096020b0240201d450d00201c10230b2000410036020420004100360200200424000f0b4180800421034186acc3002101411721220b0240201d450d00201c10230b410321020b20004100360204200041146a2022360200200041106a20013602002000410c6a20034180800c712002724180167236020020004101360200200424000f0b02400240200241ff01710d00200141ff01714101470d00200320103a00a702200320113a00a602200320123b01a402200320133a00a302200320143a00a202200320153b01a0022003200a3a00af022003200b3a00ae022003200c3b01ac022003200d3a00ab022003200e3a00aa022003200f3b01a802200320223a00b702200320243a00b602200320063b01b402200320073a00b302200320083a00b202200320093b01b002200320053703b802200341c0066a41186a2005370300200341c0066a41106a20032903b002370300200341c8066a20032903a802370300200320032903a0023703c00620034188096a200341c0066a108602024020032d0088094101470d00200341ff076a2202200341a1096a290000370000200341e8076a41106a22012003419a096a290100370300200341e9036a20034192096a290100370000200341f1036a2001290300370000200341e0036a41186a2002290000370000200320032d0089093a00e0032003200329018a093700e10320034180056a200341e0036a10860320034188096a20032802800522022003280288052222108703024020032d0088092201450d002022ad4220862002ad8410110b20032d0089092122200341e8076a20034188096a410272419f0110a1051a20034188096a200341e8076a419f0110a1051a024020014101470d00200341a0056a20034188096a419f0110a1051a0240200328028405450d00200210230b200320223a00c006200341c0066a410172200341a0056a419f0110a1051a20034190096a4120360200200341e7e485f306360288092003200341c0066a36028c09200341e8076a20034188096a10880320033502f00742208620032802e8072202ad841011024020032802ec07450d00200210230b200341e2c289ab063602880920034120360290092003200341c0066a41206a36028c09200341e8076a20034188096a10880320033502f00742208620032802e8072202ad841011024020032802ec07450d00200210230b2003412036029009200320034180076a36028c09200341e9dabdf30636028809200341e8076a20034188096a10880320033502f00742208620032802e8072202ad841011024020032802ec07450d00200210230b20034120360290092003200341a0076a36028c09200341f0c2c98b0636028809200341e8076a20034188096a10880320033502f00742208620032802e8072202ad841011024020032802ec07450d00200210230b20034120360290092003200341c0076a36028c09200341e1ea91cb0636028809200341e8076a20034188096a10880320033502f00742208620032802e8072202ad841011024020032802ec07450d00200210230b200341a0026a10a1022000410036020420004100360200200424000f0b0240200328028405450d00200210230b4106210241f3abc30021014180800c2122410321030c020b411721024186acc3002101418080042122410321030c010b41002122410221030b20004100360204200041146a2002360200200041106a20013602002000410c6a20224180800c712003724180167236020020004101360200200424000f0b41801821244102212220022d00000d1d20022d000141ff01714102470d1d20012802042106200341a0056a41186a4200370300200341a0056a41106a4200370300200341a0056a41086a22024200370300200342003703a00541fee2c200ad4280808080f00184100c22012900002105200129000821182001102320022018370300200320053703a00541e1e6c200ad4280808080e00084100c220129000821052001290000211820011023200341e8076a41106a2018370300200341e8076a41186a2005370300200341e8076a41086a2002290300370300200320032903a0053703e807200341c8016a200341e8076a4120419ca8c70041004100108c0141032122024020032802c8014101470d0041d8e3c2002102410e21030c1f0b200341e0036a41186a4200370300200341e0036a41106a22244200370300200341e0036a41086a22024200370300200342003703e00341e4dec400ad4280808080e00084100c220129000021052002200141086a290000370300200320053703e0032001102341f3dec400ad4280808080e00084100c2201290000210520034190026a41086a2207200141086a2900003703002003200537039002200110232024200329039002220537030020034180056a41086a200229030037030020034180056a41106a200537030020034180056a41186a2007290300370300200320032903e00337038005200341c0016a20034180056a412010cd01024020032802c401410020032802c0011b20064f0d0041d1e3c2002102410721034180980421240c1f0b200341a0056a41186a4200370300200341a0056a41106a4200370300200341a0056a41086a22024200370300200342003703a00541fee2c200ad4280808080f00184100c22012900002105200129000821182001102320022018370300200320053703a00541e1e6c200ad4280808080e00084100c220129000821052001290000211820011023200341e8076a41106a2018370300200341e8076a41186a2005370300200341e8076a41086a2002290300370300200320032903a0053703e807200320063602c00a200341e8076aad4280808080800484200341c00a6aad4280808080c00084100e2000410036020420004100360200200424000f0b200141086a280200210320012802042101024020022d00000d0020022d000141ff01714101470d0002402003450d00200110230b2000410036020420004100360200200424000f0b02402003450d00200110230b200041003602042000410c6a410236020020004101360200200424000f0b2001411c6a280200210a200141186a280200210b200141146a280200210c2001410c6a280200210d200141086a280200210f410021224102212402400240024020022d0000450d000c010b20022d000141ff01714102470d00200141246a280200210e200141106a2802002124200341e0036a41186a22064200370300200341e0036a41106a22024200370300200341e0036a41086a22014200370300200342003703e00341db97c700ad4280808080f00084100c222229000021052001202241086a290000370300200320053703e0032022102341bcbcc300ad4280808080c00184100c2207290000210520034190026a41086a2222200741086a2900003703002003200537039002200710232002200329039002220537030020034180056a41086a2208200129030037030020034180056a41106a2209200537030020034180056a41186a22102022290300370300200320032903e00337038005200341d8016a20034180056a412010cd01200341c00a6a20032802dc01410020032802d8011b2212200e10ae02200341d0016a20032802c00a220720032802c80a419ca8c70041004100108c0120032802d0012111024020032802c40a450d00200710230b200642003703002002420037030020014200370300200342003703e0034180cdc200ad4280808080800184100c220729000021052001200741086a290000370300200320053703e0032007102341d7a1c200ad4280808080c00084100c220729000021052022200741086a2900003703002003200537039002200710232002200329039002370000200241086a2022290300370000200820012903003703002009200229030037030020102006290300370300200320032903e00337038005200341c00a6a20034180056a10ad0220032802c00a2202410120021b211020032902c40a420020021b21050240201141014622010d002010200e4105746a4100200e2005422088a7491b22020d020b41a3a1c20041b6a1c20020011b21064113410a20011b21072001411074212241032124200542ffffff3f83500d00201010230b0240200d450d00200f10230b0240200a450d00200a410c6c2102200c210303400240200341046a280200450d00200328020010230b2003410c6a2103200241746a22020d000b0b0240200b450d00200b410c6c450d00200c10230b20004100360204200041146a2007360200200041106a20063602002000410c6a202220247241801c7236020020004101360200200424000f0b200241086a2900002118200241106a290000212a2002290000212b200341a0056a41186a200241186a290000222c370300200341a0056a41106a202a370300200341a0056a41086a20183703002003202b3703a005200341cd0a6a2018370000200341d50a6a202a370000200341dd0a6a202c370000200341003a00c40a200341073a00c00a2003202b3700c50a200341c00a6a10e001200341003602c80a200342013703c00a2024200341c00a6a10610240024020032802c40a222220032802c80a22026b2024490d0020032802c00a21010c010b200220246a22012002490d13202241017422062001200620014b1b22064100480d130240024020220d00024020060d00410121010c020b2006102122010d010c320b20032802c00a210120222006460d0020012022200610252201450d310b200320063602c40a200320013602c00a0b200120026a200f202410a1051a2003200220246a3602c80a200a200341c00a6a1061200a450d11200c200a410c6c6a2109200c2101034020012802002108200141086a2802002202200341c00a6a10610240024020032802c40a222420032802c80a22226b2002490d0020032802c00a2106202421070c010b202220026a22062022490d14202441017422072006200720064b1b22074100480d140240024020240d00024020070d00410121060c020b200710212206450d330c010b20032802c00a210620242007460d0020062024200710252206450d320b200320073602c40a200320063602c00a0b200620226a2008200210a1051a2003202220026a22023602c80a2001410c6a22012009470d000c1b0b0b200341c00a6a200141046a419c0210a1051a20034188096a41206a200241206a28020036020020034188096a41186a200241186a29020037030020034188096a41106a200241106a29020037030020034188096a41086a200241086a29020037030020032002290200370388092000200341c00a6a20034188096a108903200424000f0b41822221010240024020022d00000d0020022d000141ff01714102470d00200341e0036a41186a22064200370300200341e0036a41106a22224200370300200341e0036a41086a22024200370300200342003703e00341b9f4c200ad4280808080c00184222a100c22012900002105200129000821182001102320022018370300200320053703e00341a89ec700ad42808080809001842218100c2201290000210520034190026a41086a2224200141086a2900003703002003200537039002200110232022200329039002220537030020034180056a41086a2207200229030037030020034180056a41106a2208200537030020034180056a41186a22092024290300370300200320032903e00337038005200341e0016a20034180056a4120419ca8c70041004100108c01418322210120032802e0014101470d010b20004100360204200041146a4113360200200041106a41ebe2c2003602002000410c6a200136020020004101360200200424000f0b200642003703002022420037030020024200370300200342003703e003202a100c220129000021052001290008212a200110232002202a370300200320053703e0032018100c220129000021052024200141086a2900003703002003200537039002200110232022200329039002370000202241086a2024290300370000200720022903003703002008202229030037030020092006290300370300200320032903e00337038005200341013a00c00a20034180056aad4280808080800484200341c00a6aad42808080801084100e2000410036020420004100360200200424000f0b200228020022224108762124200241046a28020021062001411c6a280200210b200141186a2802002108200141146a280200210c200141106a280200210a2001410c6a2802002109200141086a2802002107024002400240024002400240024002400240024020012d00040e080001020304050607000b200341c00a6a41146a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341cccec60036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b0240024002402024202241ff01714100477241ff01710d00200c41808080054b0d01200141206a28020022024180a0014d0d02200341c8066a41103602002003419fabc3003602c406200341043a00c20620034183243b01c0060c1f0b200341023a00c0060c1e0b200341c8066a410c36020020034193abc3003602c406200341033a00c20620034183243b01c0060c1d0b20012d000521012003200c360290092003200a36028c092003200936028809200320023602c80a2003200b3602c40a200320083602c00a41002102200341c0066a2007200141ff017141004720034188096a200341c00a6a108a0320032d00c0064104460d1e0c1d0b02400240024002402024202241ff01714100477241ff0171450d00200341023a00c00a0c010b200341c00a6a2007108b0320032d00c00a4104460d01200341c80a6a280200210220032802c40a21010b20032802c00a2103200041146a2002360200200041106a20013602002000410c6a2003360200410121030c010b410021030b2000410036020420002003360200200424000f0b4100210202402024202241ff01714100477241ff0171450d00200041003602042000410c6a410236020020004101360200200424000f0b20034198056a420037030020034190056a2224420037030020034180056a41086a2201420037030020034200370380054196adc300ad4280808080900184100c22222900002105202229000821182022102320012018370300200320053703800541d8dfc300ad4280808080b00184100c2222290000210520034190026a41086a2206202241086a2900003703002003200537039002202210232024200329039002220537030020032003290380053703c00a200320012903003703c80a200320053703d00a200320062903003703d80a2003200736028809200341c00a6aad428080808080048420034188096aad4280808080c00084100e0c040b410221010240202241ff0171450d000c190b202441ff01714101470d18200241196a2d00002101200241186a2d00002124200241166a2f0100210d200241156a2d0000210e200241146a2d0000210f200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d0000211920032002411a6a2901003703d806200320013a00d706200320243a00d6062003200d3b01d4062003200e3a00d3062003200f3a00d206200320103b01d006200320113a00cf06200320123a00ce06200320133b01cc06200320143a00cb06200320153a00ca06200320163b01c806200320173a00c706200320193a00c606200320064110763b01c406200320064108763a00c306200320063a00c206200320224110763b01c006200342003703f00720034280a0e5b9c291013703e8072003200341c0066a3602e0032003200341c0066a3602a0052003200341a0056a3602c80a2003200341e0036a3602c40a2003200341e8076a3602c00a20034188096a200341c0066a200341c00a6a10fd02024002402003280288094101470d0020034194096a280200210f20034190096a280200210e20032d008f09211120032d008e09211020032d008d09210d20032d008c0921010c010b41042101024020034188096a41086a2903004201520d0020034188096a41106a290300210520032802a0052102200341f80a6a20034188096a41186a290300370300200341f00a6a2005370300200341c00a6a41086a41003a0000200341c90a6a2002290000370000200341d10a6a200241086a290000370000200341d90a6a200241106a290000370000200341e10a6a200241186a290000370000200341023a00c00a200341c00a6a10e0010b0b200141ff01714104470d184112210d410321010240200a41808080054d0d00410c210f4193abc300210e410321100c190b0240200b4180a0014d0d00410421104110210f419fabc300210e0c190b20034180056a41186a2206420037030020034180056a41106a2201420037030020034180056a41086a2202420037030020034200370380054196adc300ad42808080809001842205100c222229000021182022290008212a202210232002202a370300200320183703800541b0e1c300ad4280808080a001842218100c2224290000212a20034190026a41086a2222202441086a2900003703002003202a37039002202410232001200329039002222a37030020032003290380053703c00a200320022903003703c80a2003202a3703d00a200320222903003703d80a200341e8016a200341c00a6a412010cd0120032802ec01210d20032802e801210e20064200370300200142003703002002420037030020034200370380052005100c222429000021052024290008212a202410232002202a37030020032005370380052018100c222429000021052022202441086a2900003703002003200537039002202410232001200329039002220537030020032003290380053703c00a200320022903003703c80a200320053703d00a200320222903003703d80a2003200d41e807200e1b220141016a36028809200341c00a6aad428080808080048420034188096aad4280808080c00084100e2003200a360290092003200936028c0920032007360288092003200b3602c80a200320083602c40a2003200c3602c00a200341e8076a2001410120034188096a200341c00a6a108a03200341c00a6a41186a2224200341c0066a41186a290300370300200341c00a6a41106a2206200341c0066a41106a290300370300200341c00a6a41086a2207200341c0066a41086a290300370300200320032903c0063703c00a20034188096a2001108c0320033502900921052003280288092122412010212202450d32200220032903c00a370000200241186a2024290300370000200241106a2006290300370000200241086a200729030037000020054220862022ad842002ad4280808080800484100e200210230240200328028c09450d00202210230b200341083a00c00a200341c00a6a41086a200136020041002102200341003602c40a200341c00a6a10e0010c030b41002102200041003602040240202241ff01710d00202441ff01714101460d040b2000410c6a410236020020004101360200200424000f0b02400240202241ff017122020d004102210641002124410021070c010b200341c00a6a2006202220021b2224108d0320032802c00a220220032802c80a108e0341ff01712101024020032802c40a450d00200210230b4102210241022001410171200141024622011b21060240024020010d0020064101710d01418024212441032106410f21224184abc3002101410021070c020b41e5aac300210141112122410021074100210202400240024020060e03000201000b200341d40a6a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341c8abc30036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b41f6aac3002101410e2122410121020b4180242124410321060c010b200341c00a6a2024108b03024020032d00c00a22064104470d00200342003703d80a200342003703d00a200342003703c80a200342003703c00a4196adc300ad4280808080900184222c100c220229000021052002290008211820021023200320183703c80a200320053703c00a41a4e2c300ad4280808080a00184222d100c2202290000210520034190026a41086a2201200241086a29000037030020032005370390022002102320034180056a41086a20032903c80a37030020034180056a41106a221c200329039002220537030020034180056a41186a221d2001290300370300200320053703d00a200320032903c00a37038005200341c00a6a20034180056a108f0320032802c00a2202410420021b211a024020032902c40a420020021b222b422088a7221b450d00201a201b410c6c6a2117201a211503400240201541086a22162802002207450d00201528020021024100210141002122034002400240024020242002280200460d0020010d01410021010c020b200141016a21010c010b202220016b220620074f0d1a200341c00a6a41206a220820022001415c6c6a220641206a2209280200360200200341c00a6a41186a220a200641186a220b290200370300200341c00a6a41106a220c200641106a220d290200370300200341c00a6a41086a220e200641086a220f290200370300200320062902003703c00a200241206a22102802002111200241186a22122902002105200241106a22132902002118200241086a2214290200212a20062002290200370200200f202a370200200d2018370200200b200537020020092011360200201020082802003602002012200a2903003702002013200c2903003702002014200e290300370200200220032903c00a3702000b200241246a21022007202241016a2222470d000b2001450d002016280200200720016b2202490d00201620023602000b2015410c6a22152017470d000b0b2003201a360288092003202b37028c09200342003703d80a200342003703d00a200342003703c80a200342003703c00a202c100c220229000021052002290008211820021023200320183703c80a200320053703c00a202d100c2202290000210520034190026a41086a2201200241086a290000370300200320053703900220021023200341c00a6a4110722219200329039002370000201941086a200129030037000020034180056a41086a20032903c80a370300201c20032903d00a370300201d20032903d80a370300200320032903c00a37038005200341203602c40a200320034180056a3602c00a20034188096a200341c00a6a109003202ba721060240201b450d00201b410c6c2101201a210203400240200241046a2802002222450d00202241246c450d00200228020010230b2002410c6a2102200141746a22010d000b0b02402006450d002006410c6c450d00201a10230b200342003703d80a200342003703d00a200342003703c80a200342003703c00a4196adc300ad4280808080900184222c100c220229000021052002290008211820021023200320183703c80a200320053703c00a41fcdfc300ad4280808080f00184222d100c2202290000210520034190026a41086a221b200241086a2900003703002003200537039002200210232019200329039002370000201941086a221d201b29030037000020034180056a41086a221e20032903c80a37030020034180056a41106a221f20032903d00a37030020034180056a41186a222020032903d80a370300200320032903c00a37038005200341c00a6a20034180056a108f0320032802c00a2202410420021b211a024020032902c40a420020021b222b422088a7221c450d00201a201c410c6c6a2117201a211503400240201541086a22162802002207450d00201528020021024100210141002122034002400240024020242002280200460d0020010d01410021010c020b200141016a21010c010b202220016b220620074f0d1b200341c00a6a41206a220820022001415c6c6a220641206a2209280200360200200341c00a6a41186a220a200641186a220b290200370300200341c00a6a41106a220c200641106a220d290200370300200341c00a6a41086a220e200641086a220f290200370300200320062902003703c00a200241206a22102802002111200241186a22122902002105200241106a22132902002118200241086a2214290200212a20062002290200370200200f202a370200200d2018370200200b200537020020092011360200201020082802003602002012200a2903003702002013200c2903003702002014200e290300370200200220032903c00a3702000b200241246a21022007202241016a2222470d000b2001450d002016280200200720016b2202490d00201620023602000b2015410c6a22152017470d000b0b2003201a360288092003202b37028c09200342003703d80a200342003703d00a200342003703c80a200342003703c00a202c100c220229000021052002290008211820021023200320183703c80a200320053703c00a202d100c22022900002105201b200241086a2900003703002003200537039002200210232019200329039002370000201d201b290300370000201e20032903c80a370300201f20032903d00a370300202020032903d80a370300200320032903c00a37038005200341203602c40a200320034180056a3602c00a20034188096a200341c00a6a109003202ba721060240201c450d00201c410c6c2101201a210203400240200241046a2802002222450d00202241246c450d00200228020010230b2002410c6a2102200141746a22010d000b0b02402006450d002006410c6c450d00201a10230b200342003703d80a200342003703d00a200342003703c80a200342003703c00a4196adc300ad42808080809001842205100c220229000021182002290008212a200210232003202a3703c80a200320183703c00a41bce0c300ad4280808080e000842218100c2202290000212a20034190026a41086a2206200241086a2900003703002003202a37039002200210232019200329039002370000201941086a2209200629030037000020034180056a41086a220a20032903c80a37030020034190056a220b20032903d00a37030020034198056a220c20032903d80a370300200320032903c00a37038005200341c00a6a20034180056a10910320032802c00a2202410420021b2107024020032902c40a420020021b222a422088a72208450d002008412c6c2101200721020340024020022802002024470d00200241246a22222802004102460d00202241003602000b2002412c6a2102200141546a22010d000b0b200342003703d80a200342003703d00a200342003703c80a200342003703c00a2005100c220229000021052002290008212b200210232003202b3703c80a200320053703c00a2018100c220229000021052006200241086a290000370300200320053703900220021023201920032903900237000020092006290300370000200a20032903c80a370300200b20032903d00a370300200c20032903d80a370300200320032903c00a37038005200341c00a6a2007200810d30220034180056aad428080808080048420033502c80a42208620032802c00a2201ad84100e202aa72102024020032802c40a450d00200110230b02402002450d002002412c6c450d00200710230b20034188096a2024108c03200341c00a6a2003280288092202200328029009222210e101024020032d00c00a2201450d002022ad4220862002ad8410110b200341e0036a41186a200341d90a6a2900002205370300200341e0036a41106a200341d10a6a2900002218370300200341e0036a41086a200341c90a6a290000222a370300200320032900c10a222b3703e003200320053703d80a200320183703d00a2003202a3703c80a2003202b3703c00a0240024020014101460d00200341c0066a41186a4200370300200341c0066a41106a4200370300200341c0066a41086a4200370300200342003703c0060c010b200341c0066a41186a20032903d80a370300200341c0066a41106a20032903d00a370300200341c0066a41086a20032903c80a370300200320032903c00a3703c0060b0240200328028c09450d00200210230b200342003703f00720034280a0e5b9c291013703e8072003200341c0066a3602a00520034188096a200341c0066a200341e8076a200341a0056a10ff0202402003290388094201520d002003290390092105200341f80a6a20034188096a41106a290300370300200341f00a6a2005370300200341c00a6a41086a41003a0000200341c90a6a20032903c006370000200341d10a6a200341c0066a41086a290300370000200341d90a6a200341c0066a41106a290300370000200341e10a6a200341d8066a290300370000200341023a00c00a200341c00a6a10e0010b200341083a00c00a200341c00a6a41086a202436020041002102200341003602c40a200341c00a6a10e0010c030b200341c00a6a41086a280200212220032802c40a210120032d00c20a210220032d00c10a410874212420032d00c30a41187421070b20004100360204200041146a2022360200200041106a20013602002000410c6a2007200241ff01714110747220247220067236020020004101360200200424000f0b0240202241ff017122020d00410221020c150b200341c00a6a2007109203200341f0016a20032802c00a220120032802c80a10cd0120032802f401210820032802f0012124024020032802c40a450d00200110230b2006202220021b2101024020244101470d004100210220082001460d150b200341c00a6a200110920320032802c00a210220033502c80a2105200320073602880920054220862002ad8420034188096aad4280808080c00084100e024020032802c40a450d00200210230b410021020b200020023602040b20002002360200200424000f0b200341f80a6a2001413c6a280200360200200341f00a6a200141346a290200370300200341e80a6a2001412c6a290200370300200341c00a6a41206a200141246a290200370300200341c00a6a41186a2001411c6a290200370300200341c00a6a41106a200141146a290200370300200341c00a6a41086a2001410c6a290200370300200320012902043703c00a20034188096a41206a200241206a28020036020020034188096a41186a200241186a29020037030020034188096a41106a200241106a29020037030020034188096a41086a200241086a29020037030020032002290200370388092000200341c00a6a20034188096a109303200424000f0b200341c00a6a200141086a41a80210a1051a20034188096a41206a200241206a28020036020020034188096a41186a200241186a29020037030020034188096a41106a200241106a29020037030020034188096a41086a200241086a29020037030020032002290200370388092000200341c00a6a20034188096a109403200424000f0b200341c00a6a200141046a41c40010a1051a20034188096a41206a200241206a28020036020020034188096a41186a200241186a29020037030020034188096a41106a200241106a29020037030020034188096a41086a200241086a29020037030020032002290200370388092000200341c00a6a20034188096a109503200424000f0b2002411a6a2901002105200241196a2d00002124200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f01002116200141216a2900002118200141206a2d000021172001411d6a2f000021192001411c6a2d0000211a200141196a2f0000211b200141186a2d0000211c200141156a2f0000211d200141146a2d0000211e200141116a2f0000211f200141106a2d000021202001410d6a2f000021212001410c6a2d00002123200141096a2f0000212520022d0001212220022d0000210220012d001f212620012d001b212720012d0017212820012d0013212920012d000f213120012d000b213202400240024002400240200141086a2d00000e0400010203000b200341c00a6a41146a4101360200200342013702c40a200341a4c5c6003602c00a2003410436028c09200341cccec60036028809200320034188096a3602d00a200341c00a6a419ca8c700103a000b02400240024002400240200241ff01710d00202241ff01714101460d010b200341023a0088090c010b200320053703d80a200320243a00d70a200320063a00d60a200320073b01d40a200320083a00d30a200320093a00d20a2003200a3b01d00a2003200b3a00cf0a2003200c3a00ce0a2003200d3b01cc0a2003200e3a00cb0a2003200f3a00ca0a200320103b01c80a200320113a00c70a200320123a00c60a200320133b01c40a200320143a00c30a200320153a00c20a200320163b01c00a20034188096a200341c00a6a10d80220032d0088094104460d010b2003290388092105200041146a20034190096a2802003602002000410c6a2005370200410121030c010b410021030b200041003602040c020b02400240024002400240200241ff01710d00202241ff01714101460d010b200341023a0088090c010b200320183703d80a200320173a00d70a200320263a00d60a200320193b01d40a2003201a3a00d30a200320273a00d20a2003201b3b01d00a2003201c3a00cf0a200320283a00ce0a2003201d3b01cc0a2003201e3a00cb0a200320293a00ca0a2003201f3b01c80a200320203a00c70a200320313a00c60a200320213b01c40a200320233a00c30a200320323a00c20a200320253b01c00a20034188096a200341c00a6a10d80220032d0088094104460d010b2003290388092105200041146a20034190096a2802003602002000410c6a2005370200410121030c010b410021030b200041003602040c010b024002400240200241ff01710d00202241ff01714101470d00200141c8006a290300212c200141c0006a290300212d200141386a290300212a200141306a290300212b200141d0006a2802002122200320053703d806200320243a00d706200320063a00d606200320073b01d406200320083a00d306200320093a00d2062003200a3b01d0062003200b3a00cf062003200c3a00ce062003200d3b01cc062003200e3a00cb062003200f3a00ca06200320103b01c806200320113a00c706200320123a00c606200320133b01c406200320143a00c306200320153a00c206200320163b01c0060240202b42ffffe883b1de1656202a420052202a501b0d004102210241162103410321014109212241f99dc20021240c020b200320183703a009200320173a009f09200320263a009e09200320193b019c092003201a3a009b09200320273a009a092003201b3b0198092003201c3a009709200320283a0096092003201d3b0194092003201e3a009309200320293a0092092003201f3b019009200320203a008f09200320313a008e09200320213b018c09200320233a008b09200320323a008a09200320253b018809200341c00a6a20034188096a10d90220034180026a20032802c00a220220032802c80a419ca8c70041004100108c012003280280022101024020032802c40a450d00200210230b41012102024020014101470d0041162103410321014117212241afacc50021240c020b200341c00a6a200341c0066a20034188096a202b202a4101108003024020032d00c00a22014104460d00200341c80a6a280200212220032802c40a212420032d00c30a210620032d00c20a210220032d00c10a21030c030b200341c00a6a20034188096a10d902200341f8016a20032802c00a220120032802c80a419ca8c70041004100108c0120032802f8012102024020032802c40a450d00200110230b024020024101460d00200341c00a6a20034188096a10d90220033502c80a210520032802c00a2101411010212202450d2d2002202b3700002002202a37000820024110412010252202450d2d2002202d370010200241186a202c3700002002412041c00010252202450d2d2002202236002020054220862001ad842002ad4280808080c00484100e20021023024020032802c40a450d00200110230b200341c00a6a41186a20034188096a41186a290300370300200341c00a6a41106a20034188096a41106a290300370300200341c00a6a41086a20034188096a41086a29030037030020032003290388093703c00a200341e8076a200341c00a6a10d80241002103200041003602040c040b200341c80a6a4117360200200341afacc5003602c40a200341013a00c20a200341832c3b01c00a4189c4c2004137200341c00a6a41c0c4c20041d0c4c2001034000b410221010b0b20004100360204200041146a2022360200200041106a20243602002000410c6a2006411874200241ff017141107472200341ff017141087472200172360200410121030b20002003360200200424000f0b202210b4022022102341833021030c340b1032000b200041003602042000410c6a41023602000c300b41c5a2c7004130418c94c700102d000b410221020c220b4101210741d5a4c6002106410821240c1d0b41808004210141d5a4c6002122410821240c1a0b200041003602042000410c6a410236020020004101360200200424000f0b200341e0036a41186a220b4200370300200341e0036a41106a22014200370300200341e0036a41086a22024200370300200342003703e00341bdadc500ad4280808080800184222b100c2209290000212c2009290008213520091023200220353703002003202c3703e00341c5adc500ad4280808080d00184222c100c220a290000213520034190026a41086a2209200a41086a2900003703002003203537039002200a10232001200329039002223537030020034180056a41086a220c200229030037030020034180056a41106a220d203537030020034180056a41186a220e2009290300370300200320032903e0033703800520034180016a20034180056a412010d70120034180016a41106a29030021352003290388012137200328028001210a200b42003703002001420037030020024200370300200342003703e003202b100c220b290000212b200b2900082138200b1023200220383703002003202b3703e003202c100c220b290000212b2009200b41086a2900003703002003202b37039002200b10232001200329039002222b370300200c2002290300370300200d202b370300200e2009290300370300200320032903e003370380052003427f20354200200a1b222b2005202a7d2018202d54ad7d7c20374200200a1b222c2018202d7d7c222d202c542202ad7c222c2002202c202b54202c202b511b22021b3703c80a2003427f202d20021b3703c00a200341c00a6a210220034180056a21010c150b2000410c6a41023602000c130b20032802c80a210220032802c40a210720032802c00a21060c080b102c000b200620074184d9c4001030000b200620074184d9c4001030000b20004100360204200041146a4111360200200041106a4183aac0003602002000410c6a200236020020004101360200200424000f0b02402008450d00200c10230b02402009450d00200710230b20004100360204200041146a200f360200200041106a200e3602002000410c6a2011411874201041ff017141107472200d41ff017141087472200141ff01717236020020004101360200200424000f0b0240200b450d00200810230b200a450d00200910230b20032903c0062105200041146a200341c8066a2802003602002000410c6a2005370200410121020b2000410036020420002002360200200424000f0b200341c00a6a2012200e10ae0220032802c00a2101200320032802c80a36028c0920032001360288092006200220034188096a10c802024020032802c40a450d00200110230b02402007450d00200610230b0240200542ffffff3f83500d00201010230b0240200d450d00200f10230b0240200a450d00200a410c6c2102200c210303400240200341046a280200450d00200328020010230b2003410c6a2103200241746a22020d000b0b0240200b450d00200b410c6c450d00200c10230b2000410036020420004100360200200424000f0b0b20004100360204200041146a2003360200200041106a20023602002000410c6a202420227236020020004101360200200424000f0b024020032802cc0a2202450d00200241246c21012011210203400240024020022d0000222241044b0d0002400240024020220e050400010204040b2002410c6a280200450d03200241086a28020010230c030b2002410c6a280200450d02200241086a28020010230c020b2002410c6a280200450d01200241086a28020010230c010b200241086a280200450d00200241046a28020010230b200241246a21022001415c6a22010d000b0b024020032802c80a2202450d00200241246c450d00201110230b024020232024460d00034020061096030240200641046a2802002202450d00200241246c450d00200628020010230b200641f0006a2106200841907f6a22080d000b0b02402009450d00200941f0006c450d00200b10230b024020032802b40a2203450d00200341c4006c450d00201010230b410321220c040b20232024460d00200b200741f0006c6a212203402024220241046a2201109603200241f0006a21240240200241086a2802002202450d00200241246c450d00200128020010230b20222024470d000b0b02402009450d00200941f0006c450d00200b10230b200341a0056a41186a4200370300200341a0056a41106a4200370300200341a0056a41086a22024200370300200342003703a00541fea6c600ad4280808080a00184100c220129000021052002200141086a290000370300200320053703a00520011023419ca8c600ad4280808080e00084100c220129000821052001290000211820011023200341e8076a41106a2018370300200341e8076a41186a2005370300200341e8076a41086a2002290300370300200320032903a0053703e807200341c00a6a2010200f109703202a20033502c80a42208620032802c00a2202ad84100e024020032802c40a450d00200210230b024020032802b40a2203450d00200341c4006c450d00201010230b410021030c030b200741f0006c2102200b41046a2103034020031096030240200341046a2802002201450d00200141246c450d00200328020010230b200341f0006a2103200241907f6a22020d000b0b2009450d00200941f0006c450d00200b10230b200041146a200a360200200041106a200e3602002000410c6a200d41107420227241800e72360200410121030b2000200336020020004100360204200424000f0b410121020c020b2001ad42808080808004842002ad4280808080800284100e20032903c803212c20032903c003212b0b202a202f7c212d2022ad2135200341a0056a41106a2102024002400240202b202e56202c202f56202c202f5122011b0d00202b202e54202c202f5420011b450d02200341e0036a41186a220c4200370300200341e0036a41106a22094200370300200341e0036a41086a22014200370300200342003703e00341bdadc500ad42808080808001842237100c220a2900002138200a2900082139200a102320012039370300200320383703e00341c5adc500ad4280808080d001842238100c220b290000213920034190026a41086a220a200b41086a2900003703002003203937039002200b10232009200329039002223937030020034180056a41086a220d200129030037030020034180056a41106a220e203937030020034180056a41186a220f200a290300370300200320032903e00337038005200341e8006a20034180056a412010d701200341e8006a41106a29030021392003290370213a2003280268210b200c42003703002009420037030020014200370300200342003703e0032037100c220c2900002137200c290008213b200c10232001203b370300200320373703e0032038100c220c2900002137200a200c41086a2900003703002003203737039002200c102320092003290390022237370300200d2001290300370300200e2037370300200f200a290300370300200320032903e003370380052003420020394200200b1b2237202e202b54ad202c202f7d7c7c203a4200200b1b222f202e202b7d223854ad7d222e202f20387d2238202f56202e203756202e2037511b22011b3703c80a20034200203820011b3703c00a200341c00a6a210120034180056a21090c010b200341e0036a41186a220c4200370300200341e0036a41106a22094200370300200341e0036a41086a22014200370300200342003703e00341bdadc500ad42808080808001842237100c220a2900002138200a2900082139200a102320012039370300200320383703e00341c5adc500ad4280808080d001842238100c220b290000213920034190026a41086a220a200b41086a2900003703002003203937039002200b10232009200329039002223937030020034180056a41086a220d200129030037030020034180056a41106a220e203937030020034180056a41186a220f200a290300370300200320032903e00337038005200341d0006a20034180056a412010d701200341d0006a41106a29030021392003290358213a2003280250210b200c42003703002009420037030020014200370300200342003703e0032037100c220c2900002137200c290008213b200c10232001203b370300200320373703e0032038100c220c2900002137200a200c41086a2900003703002003203737039002200c102320092003290390022237370300200d2001290300370300200e2037370300200f200a290300370300200320032903e003370380052003427f20394200200b1b2237202c202f7d202b202e54ad7d7c203a4200200b1b222f202b202e7d7c2238202f542201ad7c222e2001202e203754202e2037511b22011b3703c80a2003427f203820011b3703c00a200341c00a6a210120034180056a21090b2009ad42808080808004842001ad4280808080800284100e0b202d20357c212d200320183703a0052003202c3703b8052003202b3703b005200320053703a80520032802ac0a2101200341e0036a41186a200241086a290300222e370300200341e0036a41206a2209200241106a29030037030020034188046a220a200241186a29030037030020034190046a220b200241206a290300370300200320053703e803200320183703e00320032002290300222f3703f00302400240427f2018202f7c222f202f20185422022005202e7c2002ad7c222e200554202e2005511b22021b222f4280c8afa025544100427f202e20021b2235501b0d00200341e0036a41106a290300212f200b2903002135200a29030021372009290300213820032903e803213920032903e003213a4201212e20032903f803213b0c010b4200212e0240202f203584500d00202f203510eb01200341f80a6a2035370300200341f00a6a202f370300200341c00a6a41086a41013a0000200341c90a6a2001290000370000200341d10a6a200141086a290000370000200341d90a6a200141106a290000370000200341e10a6a200141186a290000370000200341023a00c00a200341c00a6a10e0010b0b202d202a512102202d202a54210920034190086a203837030020034198086a2037370300200341f8076a2039370300200341a0086a203537030020034180086a202f3703002003203b37038808200320343703a8082003203a3703f0072003200841002030420151220a1b3a00b408200320074100200a1b3602b0082003202e4201512207ad3703e8070240024020070d002006ad4220862024ad8410110c010b200320063602c40a200320243602c00a200341f0076a200341c00a6a1098030b2022200920021b2102024020032802b40a450d00202410230b427f202d20021b212a427f203620021b212d202e420152210202400240024020304201510d0020020d004103212220034188096a21020c010b20304201522002410173720d0141042122200341c0066a21020b200241046a20223a0000200241056a20032903a002370000200241003a00002002410d6a200341a8026a290300370000200241156a200341b0026a2903003700002002411d6a200341b8026a290300370000200210e0010b0240202d202a844200520d00200341f80a6a2005370300200341f00a6a2018370300200341c00a6a41086a41003a0000200341c90a6a2001290000370000200341d10a6a200141086a290000370000200341d90a6a200141106a290000370000200341e10a6a200141186a290000370000200341023a00c00a200341c00a6a10e0010b200341880b6a202c370300200341800b6a202b370300200341f80a6a2005370300200341f00a6a2018370300200341c00a6a41086a41033a0000200341c90a6a20032903a002370000200341d10a6a200341a0026a41086a290300370000200341d90a6a200341b0026a290300370000200341e10a6a200341b8026a290300370000200341023a00c00a200341c00a6a10e001410021020b2000200236020020004100360204200424000f0b024020032802e403450d00200610230b20024104470d00200341c80a6a2017360200200341013a00c40a200341013a00c00a200341c00a6a10e0012000410036020420004100360200200424000f0b20004100360204200041146a2024360200200041106a20223602002000410c6a200141808004712002724180087236020020004101360200200424000f0b024020032802a405450d00200810230b200241ff01714104470d00200341e80a6a2019360200200341cd0a6a200341c8066a290300370000200341d50a6a200341d0066a290300370000200341dd0a6a200341d8066a290300370000200341003a00c40a200341013a00c00a200320032903c0063700c50a200341c00a6a10e0012000410036020420004100360200200424000f0b20004100360204200041146a2024360200200041106a20063602002000410c6a20014118742007411074418080fc07717220224108744180fe037172200241ff01717236020020004101360200200424000f0b41002108200241ff01714104470d00200341f00a6a4200370300200341e80a6a4280a094a58d1d370300200341c00a6a41106a200341c0066a41086a290300370300200341c00a6a41186a200341c0066a41106a290300370300200341c00a6a41206a200341c0066a41186a290300370300200342013703c00a200320032903c0063703c80a411010212202450d0320024110412010252202450d022002200341c00a6a41086a2208290000370000200241186a200841186a290000370000200241106a200841106a290000370000200241086a200841086a2900003700002002412041c00010252202450d0220024280a094a58d1d370020200241286a4200370000200aad4220862009ad842002ad4280808080800684100e2002102341042102410121080b024020032802e403450d00200910230b02402008450d00200341e80a6a2017360200200341cd0a6a200341f0076a290300370000200341d50a6a200341f8076a290300370000200341dd0a6a20034180086a290300370000200341003a00c40a200341013a00c00a200320032903e8073700c50a200341c00a6a10e0010c040b200241ff01714104460d030b20004100360204200041146a2001360200200041106a20223602002000410c6a2007411874202441ff017141107472200641ff017141087472200241ff01717236020020004101360200200424000f0b102a000b1033000b2000410036020420004100360200200424000f0b02402007450d00202410230b0240200b450d00200a10230b2008450d052008410c6c450d05200d10230c050b200b450d00200a10230b2007450d010b202410230b2001450d00200210230b4191ddc4002102411d2101410221220b20224110742108410321070b02402009450d00200610230b20004100360204200041146a2001360200200041106a20023602002000410c6a20082007723602000b410121030b20002003360200200424000f0b20004100360204200041146a410b360200200041106a41a181c3003602002000410c6a200336020020004101360200200424000b130020004101360204200041e8b9c2003602000b930a03057f017e047f230041a0016b22012400200141e8006a41186a22024200370300200141e8006a41106a22034200370300200141e8006a41086a220442003703002001420037036841db97c700ad4280808080f00084100c220529000021062004200541086a290000370300200120063703682005102341bcbcc300ad4280808080c00184100c2205290000210620014188016a41086a2207200541086a29000037030020012006370388012005102320032001290388012206370300200141c8006a41086a2004290300370300200141c8006a41106a2006370300200141c8006a41186a200729030037030020012001290368370348200141106a200141c8006a412010cd0120012802142105200128021021082002200041186a2900003703002003200041106a2900003703002004200041086a290000370300200120002900003703684180cdc200ad4280808080800184100c22002900002106200141186a41086a200041086a290000370300200120063703182000102341b4a5c200ad4280808080e00184100c220029000021062007200041086a29000037030020012006370388012000102320012005410020081b3602382001200141386aad4280808080c00084100d22002900003703980120001023200141d4006a22052001413c6a360200200141003a0058200120014198016a41086a220736024c2001200141386a360250200120014198016a360248200141286a200141c8006a1065024002400240024002400240412010212200450d0020002001290368370000200041186a2002290300370000200041106a2003290300370000200041086a200429030037000020012000ad4280808080800484100d220429000037039801200410232005200041206a360200200141003a0058200120003602502001200736024c200120014198016a360248200141386a200141c8006a1065200010232001280230220741206a2203200128024022086a2204417f4c0d01200128023821092001280228210a024002402004450d00200410212200450d022004410f4d0d01200421020c050b200441017422004110200041104b1b2202102122000d040c060b200441017422024110200241104b1b220241004e0d020c040b1033000b1032000b20042002460d0020002004200210252200450d020b20002001290318370000200041086a200141186a41086a2903003700000240024020024170714110460d00200221050c010b200241017422054120200541204b1b22054100480d0120022005460d0020002002200510252200450d020b2000200129038801370010200041186a20014188016a41086a29030037000002400240200541606a2007490d00200521020c010b2007415f4b0d01200541017422022003200220034b1b22024100480d0120052002460d0020002005200210252200450d020b200041206a200a200710a1051a02400240200220036b2008490d00200221050c010b200320086a2003490d01200241017422052004200520044b1b22054100480d01024020020d00024020050d00410121000c020b200510212200450d030c010b20022005460d0020002002200510252200450d020b200020036a2009200810a1051a0240200128023c450d00200910230b0240200128022c450d00200a10230b200141086a2000200410cd012001200128020c41016a410120012802081b3602682004ad4220862000ad84200141e8006aad4280808080c00084100e02402005450d00200010230b200141a0016a24000f0b102c000b102a000b340020004180cdc20036020420004100360200200041146a4104360200200041106a4198bbc200360200200041086a42083702000bc60201037f230041106b22032400024002402002412c6c41046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b20034100360208200320043602042003200536020020022003106102402002450d002002412c6c210203402003200128020036020c20032003410c6a4104106202400240200141246a22042802004102470d00200341003a000c20032003410c6a410110620c010b200341013a000c20032003410c6a410110622003200141046a41201062024020042802004101460d00200341003a000c20032003410c6a410110620c010b200341013a000c20032003410c6a410110622003200141286a28020036020c20032003410c6a410410620b2001412c6a2101200241546a22020d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1032000b1033000b950202037f017e230041206b220324000240024020024106744104722204417f4c0d00200410212205450d0120034100360208200320043602042003200536020020022003106102402002450d002002410674210203400240024020012903004201510d00200341003a00102003200341106a410110620c010b200341013a00102003200341106a410110622003200141206a41201062200141086a29030021062003200141106a290300370318200320063703102003200341106a411010622003200141186a2903003703102003200341106a410810620b200141c0006a2101200241406a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1032000b1033000b8c0301077f230041106b220324000240024002400240200141027441046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b2003410036020820032004360204200320053602002001200310610240024020010d002003280208210120032802042106200328020021070c010b200141027421084100200328020822016b21052003280204210403402000280200210902400240200420056a4104490d0020032802002107200421060c010b200141046a22072001490d05200441017422062007200620074b1b22064100480d050240024020040d00024020060d00410121070c020b2006102122070d010c080b2003280200210720042006460d0020072004200610252207450d070b2003200636020420032007360200200621040b200041046a2100200720016a20093600002003200141046a22013602082005417c6a21052008417c6a22080d000b0b20022902002001ad4220862007ad84100e02402006450d00200710230b200341106a24000f0b1032000b1033000b102c000b102a000b5c01017f200028020022012001280200417f6a3602000240200028020022012802000d000240200128020c450d002001410c6a10d602200028020021010b20012001280204417f6a360204200028020022002802040d00200010230b0bbf0201067f230041106b22022400024002402001410c6a2802002203417f4c0d0020012802042104200128020021050240024020030d0041002106410121070c010b20032106200310212207450d020b20072004200310a10521042002200141106a10b7022000410c6a2003360200200041086a20063602002000200436020420002005360200200041106a2002290300370200200041186a200241086a2802003602002000200129021c37021c200020012902243702242000412c6a2001412c6a290200370200200041346a200141346a2902003702002000413c6a2001413c6a290200370200200041c4006a200141c4006a290200370200200041cc006a200141cc006a290200370200200041d4006a200141d4006a290200370200200041dc006a200141dc006a290200370200200241106a24000f0b1032000b1033000bb50905037f017e027f047e017f23004190026b22022400200241d0006a200110d902200228025021032002200228025822043602fc01200220033602f80120024180016a2004ad4220862003ad841010108b010240024020022802800122040d00420021050c010b200228028401210602400240024020024180016a41086a28020022074110490d0020074170714110460d002007417c714120470d010b20024100360268200242013703602002410a360284022002200241f8016a360280022002200241e0006a36028c02200241a4016a4101360200200242013702940120024180c5c60036029001200220024180026a3602a0012002418c026a4184a5c20020024190016a10311a2002350268422086200235026084100a02402002280264450d00200228026010230b420021050c010b200441086a290000210820042900002109200441186a290000210a2004290010210b20042800202107420121050b2006450d00200410230b02402002280254450d00200310230b02400240024002402005500d0020024190016a41186a420037030020024190016a41106a2206420037030020024190016a41086a22034200370300200242003703900141e4dec400ad4280808080e00084100c220429000021052003200441086a29000037030020022005370390012004102341f3dec400ad4280808080e00084100c2204290000210520024180016a41086a220c200441086a29000037030020022005370380012004102320062002290380012205370300200241e0006a41086a2003290300370300200241e0006a41106a2005370300200241e0006a41186a200c2903003703002002200229039001370360200241386a200241e0006a412010cd01200241186a200a42004100200228023c410020022802381b220320076b2204200420034b1bad2205420010a605200241286a20054200200b420010a605200241086a42004200200b420010a6052002290310200229032084420052200241286a41086a2903002205200229030820022903187c7c220b200554720d0142002009200229032822057d220a200a2009562008200b7d2009200554ad7d220920085620092008511b22031b22084200200920031b220984500d01200242f6cacda397cddbb320370348200241c8006a2001200820094106109902200241c8016a2009370300200241c0016a200837030020024190016a41086a41003a000020024199016a2001290000370000200241a1016a200141086a290000370000200241a9016a200141106a290000370000200241b1016a200141186a2900003700002002410c3a00900120024190016a21010c020b200041163b0001200041086a410a360200200041046a41829ec200360200410321010c020b200242f6cacda397cddbb320370340200241c0006a2001109b0220024190016a200110d9022002350298014220862002280290012203ad8410110240200228029401450d00200310230b20024190016a41086a41013a000020024199016a2001290000370000200241a1016a200141086a290000370000200241a9016a200141106a290000370000200241b1016a200141186a2900003700002002410c3a00900120024190016a21010b200110e001410421010b200020013a000020024190026a24000bc60505017f017e017f017e047f230041e0006b220224004196cdc200ad4280808080f000842203100c22042900002105200241086a41086a200441086a29000037030020022005370308200410232003100c22042900002103200241186a41086a200441086a2900003703002002200337031820041023024002400240024002400240412010212204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a2900003700002004ad4280808080800484100f22012900002103200241386a41086a200141086a2900003703002002200337033820011023200241d4006a200441206a360200200241003a0058200220043602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200410232002280230220641206a2201417f4c0d0120022802282107024002402001450d00200110212204450d022001410f4d0d01200121080c050b200141017422044110200441104b1b2208102122040d040c060b200141017422094110200941104b1b220841004e0d020c040b1033000b1032000b20012008460d0020042001200810252204450d020b20042002290308370000200441086a200241086a41086a2903003700000240024020084170714110460d00200821090c010b200841017422094120200941204b1b22094100480d0120082009460d0020042008200910252204450d020b20042002290318370010200441186a200241186a41086a29030037000002400240200941606a2006490d00200921080c010b2006415f4b0d01200941017422082001200820014b1b22084100480d0120092008460d0020042009200810252204450d020b200441206a2007200610a1051a2000200136020820002008360204200020043602000240200228022c450d00200710230b200241e0006a24000f0b102c000b102a000b130020004103360204200041c0c5c2003602000b130020004102360204200041e8c7c2003602000bb01105097f017e057f037e017f230041c0006b22032400024002400240024002400240024002402001280210220441016a22052004490d00200128020022062107024020064108490d00200641016a41037641076c21070b200520074101764d0d032005200741016a2207200520074b1b22050d01419ca1c0002108410021094104210a4100210b0c020b4194a0c000411c41b0a0c000102d000b024002400240024020054108490d00200541ffffffff01712005470d02200541037441076e21060c010b200541016a21060b417f2006417f6a6776220941086a2206200941056a2205490d04200941016a2207ad42307e220c422088a70d042006417c712206200ca76a22082006490d042008102122080d01102a000b4194a0c000411c41b0a0c000102d000b2009200741037641076c20094108491b210b200841ff01200510a00520066a210a20012802002106200128021021040b2001280204220541046a210d200620056a41016a210e2005280200417f7341808182847871210f2002280200211020012802082111024003400240200f0d000340200d200e4f0d03201141c0016a2111200d2802002106200d41046a2205210d2006418081828478712206418081828478460d000b200641808182847873210f2005210d0b2003201041086a29030022122010290300220c852213200c4218898520134210868520134225897c221342a0cbbf9599b5a19f0a7c22142011200f6841037641306c6a221529001885201529000020148542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852015290008201342efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852015290010201342bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010a605200341086a29030020032903007c2012200c7c85220ca72106410021050340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b200f417f6a21050240200820026841037620076a20097122066a2c00004100480d002008280200418081828478716841037621060b2005200f71210f200820066a200ca741197622053a00002006417c6a20097120086a41046a20053a0000200a200641306c6a220641286a201541286a290200370200200641206a201541206a290200370200200641186a201541186a290200370200200641106a201541106a290200370200200641086a201541086a290200370200200620152902003702000c000b0b200120043602102001200a360208200041003602002001200b20046b36020c200128020421052001200836020420012802002106200120093602002006450d040240200641086a200641056a490d00200641016aad42307e422088a71a0b200510230c040b200641016a21074100210541002106024003400240024020054101710d00200620074f0d0320062105200641016a21060c010b200641036a220520064922080d0220052007492209450d022007200641046a20081b200720091b21060b200128020420056a220520052802002205410776417f73418182840871200541fffefdfb07726a360200410121050c000b0b20012802042106200128020041016a220541044f0d01200641046a2006200510a2051a0c020b4194a0c000411c41b0a0c000102d000b200620056a20062800003600000b417f2106024002402001280200220541016a22102005490d00200228020021154100210f0340200f221141016a210f02402011200128020422096a2d0000418001470d0002400340200341106a201541086a29030022122015290300220c852213200c4218898520134210868520134225897c221342a0cbbf9599b5a19f0a7c22142001280208201141306c6a220d29001885200d29000020148542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85200d290008201342efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85200d290010201342bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010a6052001280200210841002106200341106a41086a29030020032903107c2012200c7c85220ca7220e21050340200641046a2206200520087122076a2105200920076a280000418081828478712202450d000b0240200920026841037620076a20087122066a2c00004100480d002009280200418081828478716841037621060b20062008200e7122056b201120056b732008714104490d01200920066a22052d000021072005200ca741197622023a00002006417c6a20087120096a41046a20023a00000240200741ff01460d002001280208200641306c6a2206290200210c2006200d290200370200200641186a220529020021132005200d41186a2207290200370200200641106a220529020021122005200d41106a2208290200370200200641086a220529020021142005200d41086a2209290200370200200920143702002008201237020020072013370200200d200c370200200641286a2205290200210c2005200d41286a2207290200370200200629022021132006200d290220370220200d20133702202007200c370200200128020421090c010b0b2001280204220520116a41ff013a0000200520012802002011417c6a716a41046a41ff013a00002001280208200641306c6a2206200d290200370200200641086a200d41086a290200370200200641106a200d41106a290200370200200641186a200d41186a290200370200200641206a200d41206a290200370200200641286a200d41286a2902003702000c010b200920116a200ca741197622063a000020082011417c6a7120096a41046a20063a00000b200f2010470d000b200128020022064108490d010b200641016a41037641076c21060b200041003602002001200620012802106b36020c0b200341c0006a24000bbe4003047f017e027f230041e0006b22022400024002402000280200220341154b0d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e16000102030405060708090a0b0c0d1514131211100f0e000b200241003a00402001200241c0006a41011062200041086a280200417f6a220341094b0d16024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a003c20012002413c6a4101106220022000410c6a2802003602402001200241c0006a410410620c1f0b200241013a003c20012002413c6a410110622000410c6a2802002103200041146a28020022002001106120012003200010620c1e0b200241023a003c20012002413c6a410110622002200041106a2903003703402001200241c0006a410810620c1d0b200241033a003c20012002413c6a410110622000410c6a2802002103200041146a28020022002001106120012003200010620c1c0b200241043a003c20012002413c6a410110622000410c6a2802002103200041146a28020022002001106120012003200010620c1b0b200241053a003c20012002413c6a4101106202402000410c6a2802004101460d00200241003a003c20012002413c6a410110620c1b0b200241013a003c20012002413c6a410110622002200041106a2802003602402001200241c0006a410410622002200041146a2802003602402001200241c0006a410410620c1a0b200241063a003c20012002413c6a410110622000410c6a2802002103200041146a2802002200200110612000450d192003200041186c6a2104034020032802002100200341086a28020022052001106120012000200510622003410c6a2802002100200341146a2802002205200110612001200020051062200341186a22032004470d000c1a0b0b200241073a003c20012002413c6a410110622000410c6a2802002103200041146a2802002200200110612000450d1820032000410c6c6a2104034020032802002100200341086a28020022052001106120012000200510622003410c6a22032004470d000c190b0b200241083a003c20012002413c6a410110622000410c6a2802002103200041146a28020022002001106120012003200010620c170b200241093a003c20012002413c6a410110620c160b200241013a00402001200241c0006a41011062200110de020c150b200241023a00402001200241c0006a41011062200241003a00402001200241c0006a410110620240024002400240200041086a290300220642c000540d00200642808001540d012006428080808004540d024108200679a741037622036b4104490d032002411320034102746b3a003c20012002413c6a41011062200220002903082206370300200341786a21000340200220063c003c20012002413c6a4101106220064208882106200041016a22032000492105200321002005450d000b200220063703002006500d18200241206a41146a410b3602002002412c6a4111360200200241086a41146a41033602002002200236023c200241a8e5c20036025c200241c0006a41146a41003602002002420337020c2002418ca7c700360208200241113602242002419ca8c70036025020024201370244200241b0e5c2003602402002200241206a3602182002200241c0006a3602302002200241dc006a36022820022002413c6a360220200241086a419ca8c700103a000b20022006a74102743a003c20012002413c6a410110620c170b20022006a74102744101723b01402001200241c0006a410210620c160b20022006a74102744102723602402001200241c0006a410410620c150b41f0e4c2004136418c94c700102d000b200241033a00402001200241c0006a4101106220002d0004417f6a220341034b0d13200041046a21050240024002400240024020030e0400010203000b200241003a003c20012002413c6a410110622002200041086a280200360240200241c0006a21000c030b200241013a003c20012002413c6a410110622001200541016a412010622002200041286a280200360240200241c0006a21000c020b200241023a003c20012002413c6a410110622002200041086a280200360240200241c0006a21000c010b200241033a003c20012002413c6a410110622001200541016a412010622002200041286a280200360240200241c0006a21000b20012000410410620c130b200241043a00402001200241c0006a41011062200041086a22032d0000417f6a220541034b0d120240024002400240024020050e0400010203000b200241003a003c20012002413c6a410110622001200341016a41201062200041306a2103200241dc006a21000c030b200241013a003c20012002413c6a410110622001200341016a412010622002200041306a3602002002200110db01200041c0006a2103200241086a21000c020b200241023a003c20012002413c6a410110622001200341016a412010622001200341216a41201062200041d0006a2103200241206a21000c010b200241033a003c20012002413c6a410110622001200341016a41201062200041306a2103200241c0006a21000b200020033602002000200110db010c120b200241053a00402001200241c0006a41011062200241003a00402001200241c0006a41011062200028020421032000410c6a2802002200200110612000450d112003200041f0006c6a21070340412010212200450d1320002003290010370000200041186a200341286a290000370000200041106a200341206a290000370000200041086a200341186a2900003700002001200041201062200010232003200110ed01412010212200450d1320002003290030370000200041186a200341c8006a290000370000200041106a200341c0006a290000370000200041086a200341386a290000370000200120004120106220001023412010212200450d13200341f0006a210420002003290050370000200041186a200341e8006a290000370000200041106a200341e0006a290000370000200041086a200341d8006a29000037000020012000412010622000102320032802042100200328020c22032001106102402003450d00200341246c21030340200241c0006a200010e0022001200228024022052002280248106202402002280244450d00200510230b200041246a21002003415c6a22030d000b0b2004210320042007470d000c120b0b200241063a00402001200241c0006a41011062200041086a22052d0000417f6a220341174b0d1002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e18000102030405060708090a0b0c0d0e0f1011121314151617000b200241003a00402001200241c0006a410110622001200541016a412010622002200041306a360240200241c0006a200110db0120002d0029220041024b0d2702400240024020000e03000102000b200241003a00402001200241c0006a410110620c290b200241013a00402001200241c0006a410110620c280b200241023a00402001200241c0006a410110620c270b200241013a00402001200241c0006a410110622002200041106a360240200241c0006a200110db010c260b200241023a00402001200241c0006a410110622002200041106a360240200241c0006a200110db010c250b200241033a00402001200241c0006a410110620c240b200241043a00402001200241c0006a410110620240024002402000410c6a280200220341c000490d00200341808001490d012003418080808004490d02200241033a003c20012002413c6a410110622002200028020c3602402001200241c0006a410410620c260b200220034102743a003c20012002413c6a410110620c250b200220034102744101723b01402001200241c0006a410210620c240b200220034102744102723602402001200241c0006a410410620c230b200241053a00402001200241c0006a410110622000410c6a2802002103200041146a2802002200200110612000450d222000410574210003402001200341201062200341206a2103200041606a22000d000c230b0b200241063a00402001200241c0006a410110620c210b200241073a00402001200241c0006a4101106220052d0001220041024b0d2002400240024020000e03000102000b200241003a00402001200241c0006a410110620c220b200241013a00402001200241c0006a410110620c210b200241023a00402001200241c0006a410110620c200b200241083a00402001200241c0006a410110622001200541016a412010620c1f0b200241093a00402001200241c0006a410110622000410c6a200110ed010c1e0b2002410a3a00402001200241c0006a410110620c1d0b2002410b3a00402001200241c0006a410110620c1c0b2002410c3a00402001200241c0006a410110622000410c6a2802002103200041146a2802002200200110612000450d1b2000410574210003402001200341201062200341206a2103200041606a22000d000c1c0b0b2002410d3a00402001200241c0006a410110622001200541016a412010620c1a0b2002410e3a00402001200241c0006a410110620c190b2002410f3a00402001200241c0006a4101106220022000410c6a2802003602402001200241c0006a41041062200041106a2802002103200041186a28020022002001106120012003200041027410620c180b200241103a00402001200241c0006a4101106220022000410c6a2802003602402001200241c0006a41041062200041106a2802002103200041186a2802002200200110612000450d172003200041246c6a2100034020012003412010622002200341206a2802003602402001200241c0006a410410622000200341246a2203470d000c180b0b200241113a00402001200241c0006a4101106220022000410c6a2802003602402001200241c0006a410410620c160b200241123a00402001200241c0006a410110622001200541016a4120106220022000412c6a2802003602402001200241c0006a410410620c150b200241133a00402001200241c0006a410110622002200041106a360240200241c0006a200110db010c140b200241143a00402001200241c0006a410110622000410c6a200110ed010c130b200241153a00402001200241c0006a410110622001200541016a412010620c120b200241163a00402001200241c0006a410110622000410c6a2802002103200041146a2802002205200110612001200320054101741062200041186a20011081022001200041e0016a413010622002200041d8016a2802003602402001200241c0006a410410620c110b200241173a00402001200241c0006a410110622000410c6a2802002103200041146a2802002205200110612001200320054101741062200041186a20011081022001200041e0016a413010622002200041d8016a2802003602402001200241c0006a410410620c100b200241073a00402001200241c0006a41011062200110de020c0f0b200241083a00402001200241c0006a4101106202402000280204450d00200241003a003c20012002413c6a410110622001200041106a412010622001200041306a412010622001200041d0006a412010622001200041f0006a41201062200120004190016a41201062200028020421032000410c6a28020022002001106120012003200010620c0f0b200241013a003c20012002413c6a410110620c0e0b200241093a00402001200241c0006a41011062200241003a00402001200241c0006a41011062200041046a200110ed010c0d0b2002410a3a00402001200241c0006a41011062200241003a00402001200241c0006a41011062200028020421032000410c6a28020022002001106120012003200010620c0c0b2002410b3a00402001200241c0006a41011062200241003a00402001200241c0006a41011062200220002802043602402001200241c0006a41041062200041086a2802002103200041106a2802002205200110612001200320051062200041146a28020021032000411c6a28020022052001106102402005450d0020032005410c6c6a2107034020032802002105200341086a28020022042001106120012005200410622003410c6a22032007470d000b0b2002200041206a2802003602402001200241c0006a410410622002200041246a2802003602402001200241c0006a410410622001200041286a41c00010620c0b0b2002410c3a00402001200241c0006a41011062200110de020c0a0b2002410d3a00402001200241c0006a410110622000280204417f6a220341014b0d09024020030e020009000b200241003a00402001200241c0006a41011062200041086a2802002104200041106a2802002200200110612000450d09200420004188026c6a2108034020042205200110e10220052802f001210020052802f80122032001106102402003450d002000200341c1006c6a2103034020024102410120002d00004101461b3a00402001200241c0006a410110622001200041016a41c0001062200041c1006a22002003470d000b0b20054180026a28020022034103762100024002402003418004490d002000410274210402402003418080084f0d00200220044101723b01402001200241c0006a410210620c020b200220044102723602402001200241c0006a410410620c010b200220004102743a003c20012002413c6a410110620b20054188026a210420052802fc0121070240024020000d00410021050c010b410121052000410820034107716b22034d0d0041024101200020036b22004107711b20004103766a21050b200120072005106220042008470d000c0a0b0b200241153a00402001200241c0006a4101106220002d0004417f6a220341024b0d08200041046a210502400240024020030e03000102000b200241003a003c20012002413c6a41011062200041086a280200200110dd020c0a0b200241013a003c20012002413c6a410110622001200541016a412010620c090b200241023a003c20012002413c6a410110622001200541016a41201062200041286a280200200110dd020c080b200241143a00402001200241c0006a41011062200110de020c070b200241133a00402001200241c0006a41011062200041086a22052d0000417f6a220341024b0d0602400240024020030e03000102000b200241003a003c20012002413c6a410110620c080b200241013a003c20012002413c6a410110622001200541016a412010620c070b200241023a003c20012002413c6a410110622001200541016a41201062200041306a29030021062002200041386a290300370348200220063703402001200241c0006a41101062200041c0006a29030021062002200041c8006a290300370348200220063703402001200241c0006a411010622002200041d0006a2802003602402001200241c0006a410410620c060b200241123a00402001200241c0006a4101106220002d0004417f6a220341084b0d05200041046a210502400240024002400240024002400240024020030e09000102030405060708000b200241003a003c20012002413c6a410110622001200541016a41201062200041286a280200200110dd020c0d0b200241013a003c20012002413c6a410110622001200541016a412010622001200541216a412010620c0c0b200241023a003c20012002413c6a41011062200041086a2802002103200041106a28020022052001106102402005450d002005410574210503402001200341201062200341206a2103200541606a22050d000b0b200220002f01063b01402001200241c0006a41021062200220002802143602402001200241c0006a410410620c0b0b200241033a003c20012002413c6a410110622001200541016a412010620c0a0b200241043a003c20012002413c6a410110622001200541016a412010622001200541216a412010620c090b200241053a003c20012002413c6a410110622001200541016a412010620c080b200241063a003c20012002413c6a410110622001200541016a412010620c070b200241073a003c20012002413c6a410110620c060b200241083a003c20012002413c6a410110622001200541016a412010620c050b200241113a00402001200241c0006a41011062200041086a22052d0000417f6a2203410a4b0d040240024002400240024002400240024002400240024020030e0b000102030405060708090a000b200241003a003c20012002413c6a410110622001200541016a412010620c0e0b200241013a003c20012002413c6a410110622000410c6a200110e2020c0d0b200241023a003c20012002413c6a410110622000410c6a2802002103200041146a2802002200200110612000450d0c2003200041c4006c6a210503402001200341201062200241c0006a200341206a220010702001200228024022032002280248106202402002280244450d00200310230b2005200041246a2203470d000c0d0b0b200241033a003c20012002413c6a410110620c0b0b200241043a003c20012002413c6a410110622000410c6a200110ed012002200041106a360240200241c0006a200110db010c0a0b200241053a003c20012002413c6a4101106220022000410c6a2802003602402001200241c0006a410410620c090b200241063a003c20012002413c6a410110622000410c6a200110ed012002200041106a360240200241c0006a200110db010c080b200241073a003c20012002413c6a410110622000412c6a200110ed012001200541016a412010620c070b200241083a003c20012002413c6a410110622000410c6a200110ed012002200041106a2903003703402001200241c0006a410810620c060b200241093a003c20012002413c6a410110622000412c6a200110ed012001200541016a41201062200041306a200110e3020c050b2002410a3a003c20012002413c6a410110622001200541016a412010620c040b200241103a00402001200241c0006a4101106220002d0004417f6a220341044b0d03200041046a21040240024002400240024020030e050001020304000b200241003a003c20012002413c6a41011062200041086a2802002103200041106a2802002200200110612000450d07200041b0026c210003402003200110dd02200341b0026a2103200041d07d6a22000d000c080b0b200241013a003c20012002413c6a41011062200220002f01063b01402001200241c0006a41021062200041086a280200200110dd020c060b200241023a003c20012002413c6a41011062200220002f01063b01402001200241c0006a41021062200041086a2802002103200041106a28020022052001106102402005450d002005410574210503402001200341201062200341206a2103200541606a22050d000b0b0240024020002802144101460d00200241003a003c20012002413c6a410110620c010b200241013a003c20012002413c6a410110622002200041186a2802003602402001200241c0006a4104106220022000411c6a2802003602402001200241c0006a410410620b2000280220200110dd020c050b200241033a003c20012002413c6a41011062200220002f01263b01402001200241c0006a41021062200041286a2802002103200041306a28020022052001106102402005450d002005410574210503402001200341201062200341206a2103200541606a22050d000b0b200441016a21030240024020002802344101460d00200241003a003c20012002413c6a410110620c010b200241013a003c20012002413c6a410110622002200041386a2802003602402001200241c0006a4104106220022000413c6a2802003602402001200241c0006a410410620b20012003412010620c040b200241043a003c20012002413c6a41011062200220002f01263b01402001200241c0006a41021062200041286a2802002103200041306a280200220520011061200441016a210402402005450d002005410574210503402001200341201062200341206a2103200541606a22050d000b0b200220002802343602402001200241c0006a410410622002200041386a2802003602402001200241c0006a4104106220012004412010620c030b2002410f3a00402001200241c0006a4101106220002d0004417f6a220341064b0d02024002400240024002400240024020030e0700010203040506000b200241003a003c20012002413c6a41011062200041086a200110ed01200220002d00054101463a003c20012002413c6a410110622000410c6a2802002103200041146a2802002205200110612001200320051062200041186a2802002103200041206a28020022002001106120012003200010620c080b200241013a003c20012002413c6a41011062200041086a200110ed010c070b200241023a003c20012002413c6a410110622002200041086a2802003602402001200241c0006a410410620c060b200241033a003c20012002413c6a41011062200041086a2802002103200041106a2802002205200110612001200320051062200041146a28020021032000411c6a28020022002001106120012003200010620c050b200241043a003c20012002413c6a41011062200041c8006a200110ed012001200041046a220341016a41201062412010212200450d05200041186a200341396a290000370000200041106a200341316a290000370000200041086a200341296a2900003700002000200341216a2900003700002001200041201062200010230c040b200241053a003c20012002413c6a410110620c030b200241063a003c20012002413c6a41011062200041086a200110ed010c020b2002410e3a00402001200241c0006a41011062200241003a00402001200241c0006a410110620c010b200241013a00402001200241c0006a4101106220012000413c6a41201062200041dc006a200110e402200041bd016a200110e4022002200041086a2802003602402001200241c0006a410410622000410c6a2802002103200041146a28020022052001106102402005450d0020032005410c6c6a2107034020032802002105200341086a28020022042001106120012005200410622003410c6a22032007470d000b0b2002200041186a2802003602402001200241c0006a41041062412010212203450d01200341186a200041346a290000370000200341106a2000412c6a290000370000200341086a200041246a29000037000020032000411c6a2900003700002001200341201062200310230b200241e0006a24000f0b1033000b4a01037f230041106b220124002001410036020820014201370300200110de02200128020421022000200128020022032001280208106202402002450d00200310230b200141106a24000bc30202027f017e23004180016b220224002000280200210002400240024002400240200128020022034110710d002000290300210420034120710d0120042001103e21000c020b20002903002104410021000340200220006a41ff006a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141a889c0004102200220006a4180016a410020006b104121000c010b410021000340200220006a41ff006a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004180016a22034181014f0d02200141a889c0004102200220006a4180016a410020006b104121000b20024180016a240020000f0b2003418001419889c0001044000b2003418001419889c0001044000bff1001067f230041106b22022400024002400240024002400240024002400240024020012d00000e06010402030500010b2002410036020820024201370300410110212203450d082002410136020420022003360200200341003a000020024101360208200141046a28020021042001410c6a2802002201200210610240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d08200541017422072006200720064b1b22074100480d080240024020050d00024020070d00410121060c020b2007102122060d010c0b0b2002280200210620052007460d0020062005200710252206450d0a0b20022007360204200220063602000b200620036a2004200110a1051a2002200320016a3602080c050b2002410036020820024201370300410110212203450d072002410136020420022003360200200341023a000020024101360208412010212203450d0520032001290001370000200341186a200141196a290000370000200341106a200141116a290000370000200341086a200141096a2900003700000240024020022802042206417f6a4120490d00200228020021010c010b200641017422014121200141214b1b22054100480d0720022802002101024020062005460d0020012006200510252201450d090b20022005360204200220013602000b20012003290000370001200141196a200341186a290000370000200141116a200341106a290000370000200141096a200341086a29000037000020024121360208200310230c040b2002410036020820024201370300410110212203450d062002410136020420022003360200200341043a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0620022802002103024020062005460d0020032006200510252203450d080b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210610240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d06200541017422072006200720064b1b22074100480d060240024020050d00024020070d00410121060c020b200710212206450d090c010b2002280200210620052007460d0020062005200710252206450d080b20022007360204200220063602000b200620036a2004200110a1051a2002200320016a3602080c030b2002410036020820024201370300410110212203450d052002410136020420022003360200200341053a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0520022802002103024020062005460d0020032006200510252203450d070b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210610240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d05200541017422072006200720064b1b22074100480d050240024020050d00024020070d00410121060c020b200710212206450d080c010b2002280200210620052007460d0020062005200710252206450d070b20022007360204200220063602000b200620036a2004200110a1051a2002200320016a3602080c020b2002410036020820024201370300410110212203450d042002410136020420022003360200200341063a0000200241013602080240024020022802042206417f6a4104490d00200228020021030c010b200641017422034105200341054b1b22054100480d0420022802002103024020062005460d0020032006200510252203450d060b20022005360204200220033602000b200320012800013600012002410536020820012802082104200141106a2802002201200210610240024020022802042205200228020822036b2001490d00200228020021060c010b200320016a22062003490d04200541017422072006200720064b1b22074100480d040240024020050d00024020070d00410121060c020b200710212206450d070c010b2002280200210620052007460d0020062005200710252206450d060b20022007360204200220063602000b200620036a2004200110a1051a2002200320016a3602080c010b2002410036020820024201370300410110212203450d032002410136020420022003360200200341073a00002002410136020820022802002103024020022802044101470d0020034101410210252203450d0420024102360204200220033602000b200341003a0001200241023602082002280200210320022802042106024020012802044101460d00024020064102470d0020034102410410252203450d0520024104360204200220033602000b200341003a0002200241033602080c010b024020064102470d0020034102410410252203450d0420024104360204200220033602000b200341013a000220024103360208200141086a28020021050240024020022802042206417d6a4104490d00200228020021030c010b200641017422034107200341074b1b22044100480d0320022802002103024020062004460d0020032006200410252203450d050b20022004360204200220033602000b20032005360003200241073602082001410c6a2802002106024002402002280204220341796a4104490d00200228020021010c010b20034101742201410b2001410b4b1b22054100480d0320022802002101024020032005460d0020012003200510252201450d050b20022005360204200220013602000b200120063600072002410b3602080b200020022201290200370200200041086a200141086a280200360200200241106a24000f0b1033000b102c000b102a000b930201037f230041106b220224002002200028024036020c20012002410c6a410410620240412010212203450d0020032000290050370000200341186a200041e8006a290000370000200341106a200041e0006a290000370000200341086a200041d8006a29000037000020012003412010622003102320002802442103200041cc006a28020022042001106120012003200410622001200041f0006a41201062200120004190016a41c0001062412010212203450d00200320002900d001370000200341186a200041e8016a290000370000200341106a200041e0016a290000370000200341086a200041d8016a2900003700002001200341201062200310232000200110e104200241106a24000f0b1033000bf10301047f230041106b2202240020002802002103200028020822042001106102402004450d002003200441c8006c6a210503402002200310702001200228020022042002280208106202402002280204450d00200410230b2002200341246a220310702001200228020022042002280208106202402002280204450d00200410230b200341246a22032005470d000b0b20022000410c6a10702001200228020022032002280208106202402002280204450d00200310230b2002200041306a10702001200228020022032002280208106202402002280204450d00200310230b2002200041d4006a10702001200228020022032002280208106202402002280204450d00200310230b2002200041f8006a10702001200228020022032002280208106202402002280204450d00200310230b20022000419c016a10702001200228020022032002280208106202402002280204450d00200310230b0240024020002d0088024101460d00200241003a000020012002410110620c010b200241013a00002001200241011062200120004189026a411410620b2002200041c0016a10702001200228020022032002280208106202402002280204450d00200310230b2002200041e4016a10702001200228020022032002280208106202402002280204450d00200310230b200241106a24000bde0102027f017e230041106b2202240002402000280200220341064b0d00024002400240024002400240024020030e0700010203040506000b200241003a000020012002410110620c060b200241013a00002001200241011062200029030821042002200041106a2903003703082002200437030020012002411010620c050b200241023a000020012002410110620c040b200241033a000020012002410110620c030b200241043a000020012002410110620c020b200241053a000020012002410110620c010b200241063a000020012002410110620b200241106a24000bee0201027f230041106b220224000240024020002d0000220341024b0d0002400240024020030e03000102000b200241013a000f20012002410f6a41011062412010212203450d0320032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201062200310230c020b200241023a000f20012002410f6a41011062412010212203450d0220032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201062200310230c010b200241033a000f20012002410f6a41011062412010212203450d0120032000290001370000200341186a200041196a290000370000200341106a200041116a290000370000200341086a200041096a2900003700002001200341201062200310230b2001200041216a41c0001062200241106a24000f0b1033000b880f020a7f017e230041d0036b2202240041002103200241003a002820012802042204417f6a2105417f210602400240024002400240024002400240024002400240034020042003460d01200241086a20036a200128020022072d00003a00002001200420066a3602042001200741016a22083602002002200341016a22093a00282005417f6a21052006417f6a21062009210320094120470d000b20024188036a41186a2206200241086a41186a29030037030020024188036a41106a220a200241086a41106a29030037030020024188036a41086a220b200241086a41086a2903003703002002200229030837038803200941ff01714120490d01200420096b2103200241a8016a41086a200b290300370300200241a8016a41106a200a290300370300200241a8016a41186a20062903003703002002200229038803220c3703c8022002200c3703a80141002106200241003a002803402003450d03200241086a20066a20082d00003a000020012003417f6a22033602042001200841016a22083602002002200641016a22093a00282009210620094120470d000b20024188036a41186a2203200241086a41186a29030037030020024188036a41106a2206200241086a41106a29030037030020024188036a41086a2204200241086a41086a2903003703002002200229030837038803200941ff01714120490d03200241c8016a41086a2004290300370300200241c8016a41106a2006290300370300200241c8016a41186a20032903003703002002200229038803220c3703c8022002200c3703c80141002106200241003a0028200520096b2103200720096a210403402003417f460d05200241086a20066a200820066a2d00003a0000200120033602042001200420066a41026a3602002002200641016a22093a00282003417f6a21032009210620094120470d000b20024188036a41186a2206200241086a41186a29030037030020024188036a41106a2207200241086a41106a29030037030020024188036a41086a220a200241086a41086a2903003703002002200229030837038803200941ff01714120490d05200820096a2105200241e8016a41086a200a290300370300200241e8016a41106a2007290300370300200241e8016a41186a20062903003703002002200229038803220c3703c8022002200c3703e80141002106200241003a0028200420096a210403402003417f460d07200241086a20066a20052d00003a0000200120033602042001200420066a41026a3602002002200641016a22093a00282003417f6a2103200541016a21052009210620094120470d000b20024188036a41186a2206200241086a41186a29030037030020024188036a41106a2204200241086a41106a29030037030020024188036a41086a2207200241086a41086a2903003703002002200229030837038803200941ff01714120490d0720024188026a41086a200729030037030020024188026a41106a200429030037030020024188026a41186a20062903003703002002200229038803220c3703c8022002200c3703880241002106200241003a00c80303402003417f460d09200241a8036a20066a20052d00003a0000200120033602042001200541016a22053602002002200641016a22093a00c8032003417f6a21032009210620094120470d000b20024188036a41186a2203200241a8036a41186a29030037030020024188036a41106a2201200241a8036a41106a29030037030020024188036a41086a2206200241a8036a41086a290300370300200220022903a80337038803200941ff01714120490d09200241a8026a41086a22092006290300370300200241a8026a41106a22062001290300370300200241a8026a41186a22012003290300370300200241086a41186a200241a8016a41186a290300370300200241086a41106a200241a8016a41106a290300370300200241086a41086a200241a8016a41086a2903003703002002200229038803220c3703c8022002200c3703a802200220022903a801370308200241c0006a200241c8016a41186a290300370300200241386a200241c8016a41106a290300370300200241306a200241c8016a41086a290300370300200220022903c801370328200241e0006a200241e8016a41186a290300370300200241d8006a200241e8016a41106a290300370300200241d0006a200241e8016a41086a290300370300200220022903e80137034820024180016a20024188026a41186a290300370300200241f8006a20024188026a41106a290300370300200241f0006a20024188026a41086a2903003703002002200229038802370368200241a0016a200129030037030020024198016a200629030037030020024190016a2009290300370300200220022903a80237038801200041016a200241086a41a00110a1051a200041003a00000c0a0b200341ff0171450d00200241003a00280b200041013a00000c080b200641ff0171450d00200241003a00280b200041013a00000c060b200641ff0171450d00200241003a00280b200041013a00000c040b200641ff0171450d00200241003a00280b200041013a00000c020b200641ff0171450d00200241003a00c8030b200041013a00000b200241d0036a24000b13002000410536020420004198dfc4003602000b13002000410236020420004188a5c6003602000b130020004105360204200041d8adc5003602000b130020004107360204200041e0c5c0003602000b13002000410136020420004194a4c0003602000b130020004101360204200041e8a6c0003602000b130020004103360204200041d0a1c0003602000b130020004103360204200041dca1c2003602000b130020004102360204200041b4aac0003602000b13002000410636020420004188a3c5003602000b13002000410736020420004184c8c6003602000b130020004106360204200041c4eec3003602000b130020004102360204200041ac9ec2003602000b130020004102360204200041e4f4c3003602000b130020004103360204200041c081c3003602000b4d01017f230041206b22002400200041146a410136020020004201370204200041a4c5c6003602002000410436021c200041cccec6003602182000200041186a3602102000419ca8c700103a000bf00204027f017e017f077e0240024020012802042202450d0020012802002203310000210420012002417f6a22053602042001200341016a3602002005450d012003310001210620012002417e6a22053602042001200341026a3602002005450d012003310002210720012002417d6a22053602042001200341036a3602002005450d012003310003210820012002417c6a22053602042001200341046a3602002005450d012003310004210920012002417b6a22053602042001200341056a3602002005450d012003310005210a20012002417a6a22053602042001200341066a3602002005450d012003310006210b2001200241796a22053602042001200341076a3602002005450d01200041003a00002003310007210c2001200241786a3602042001200341086a3602002000200c423886200b42308684200a422886842009422086842008421886842007421086842006420886842004843700010f0b200041013a00000f0b200041013a00000bb10201037f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b0102400240200228021022010d00200041003602000c010b200228021421032002200241186a28020036022420022001360220200241c8006a200241206a10b00402400240200228024822040d0020024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350230422086200235022884100a0240200228022c450d00200228022810230b200041003602000c010b2000200229024c370204200020043602000b2003450d00200110230b200241e0006a24000ba70301087f230041206b220324000240024002400240200141246c41046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b2003410036020820032004360204200320053602002001200310610240024020010d002003280208210420032802042106200328020021070c010b200141246c210820032802042105200328020821010340200341106a200010e0022003280210210902400240200520016b2003280218220a490d002001200a6a210420032802002107200521060c010b2001200a6a22042001490d05200541017422062004200620044b1b22064100480d050240024020050d00024020060d00410121070c020b2006102122070d010c080b2003280200210720052006460d0020072005200610252207450d070b20032006360204200320073602000b200720016a2009200a10a1051a2003200436020802402003280214450d00200910230b200041246a210020062105200421012008415c6a22080d000b0b20022902002004ad4220862007ad84100e02402006450d00200710230b200341206a24000f0b1032000b1033000b102c000b102a000bcc0503027f017e047f230041e0006b2202240041e4dec400ad4280808080e00084100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341888ec600ad4280808080f00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000b990204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001ad42808080808004841010108b0102400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024180c5c6003602382002200241286a360248200241346a4184a5c200200241386a10311a2002350220422086200235021884100a0240200228021c450d00200228021810230b420021030b2004450d00200110230b2000200537030820002003370300200241d0006a24000b950503027f017e057f230041e0006b2202240041fba7c600ad4280808080f00084100c22032900002104200241086a41086a200341086a29000037030020022004370308200310234194a8c600ad4280808080800184100c22032900002104200241186a41086a200341086a290000370300200220043703182003102320022001360234200241346aad4280808080c00084100f22032900002104200241386a41086a200341086a2900003703002002200437033820031023200241d4006a200241386a360200200241003a00582002200241c8006a36024c2002200241346a3602502002200241386a360248200241286a200241c8006a10650240024002400240024002402002280230220541206a2201417f4c0d0020022802282106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000bbb0402097f057e230041f0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022040d00200042003703000c010b200341186a28020021052003280214210641002101200341003a0068024002400240034020052001460d01200341c8006a20016a200420016a2d00003a00002003200141016a22023a00682002210120024120470d000b200341286a41186a2201200341c8006a41186a2207290300370300200341286a41106a2208200341c8006a41106a2209290300370300200341286a41086a220a200341c8006a41086a220b29030037030020032003290348370328200520026b410f4d0d01200b200a290300220c37030020092008290300220d37030020072001290300220e37030020032003290328220f370348200420026a22012900002110200041306a200141086a290000370300200041286a2010370300200041206a200e370300200041186a200d370300200041106a200c3703002000200f3703084201210c0c020b200141ff0171450d00200341003a00680b20034100360230200342013703282003410a3602242003200341086a3602202003200341286a36026c200341dc006a41013602002003420137024c20034180c5c6003602482003200341206a360258200341ec006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b4200210c0b2000200c3703002006450d00200410230b200341f0006a24000ba30f05067f027e037f0b7e027f23004180036b22032400200228020821042002280204210520022802002106200341086a2001109702200341b0016a200328020822072003280210220810980220032903b00121094200210a200342003703b001200341f8016a280200210b20032d00fc01210c024002402009420151220d0d00200341186a41306a4200370300200341186a41286a4200370300200341186a41206a4200370300200341186a41186a4200370300200341286a4200370300200341206a4200370300200342003703184200210e4200210f42002110420021110c010b200341e8016a2903002112200341b0016a41306a2903002113200341b0016a41206a2903002110200341b0016a41186a290300210f200341f0016a290300211120032903c001210e20032903b801210a200341186a41206a200341b0016a41286a290300370300200341186a41286a2013370300200341186a41306a2012370300200341286a200f370300200320103703302003200a3703182003200e3703200b200341186a41106a21020240024002400240024002400240200a200629030022137d2214200a56200e200641086a29030022157d200a201354ad7d2212200e562012200e511b450d004280808080b002211341e1acc500210d4180800c21060c010b2003201437031820032012370320200f20137c2216200f542206201020157c2006ad7c221720105420172010511b4101470d0142808080808001211341f4acc500210d4180800821062014210a2012210e0b200341d0006a41206a200241206a290300370300200341d0006a41186a200241186a290300370300200341d0006a41106a200241106a290300370300200341d0006a41086a200241086a290300370300200320022903003703500c010b200341186a41186a201737030020032016370328024002402013201584500d00200341f8006a200528020010970220034198026a20032802782205200328028001109802200341c8026a290300420020032903980242015122061b2113200341c0026a290300420020061b21150240200328027c450d00200510230b2015201456201320125620132012511b0d010b200341d0006a41206a200241206a2903002217370300200341d0006a41186a200241186a2903002216370300200341d0006a41106a200241106a2903002218370300200341d0006a41086a200241086a290300221337030020032002290300221537035020042802002102200341f8006a41186a2013370300200341f8006a41206a22052018370300200341a0016a22192016370300200341a8016a221a20173703002003201537038801200320143703782003201237038001427f200a200f7c220f200f200a542206200e20107c2006ad7c220a200e54200a200e511b22061b427f200a20061b84502106427f201420157c220a200a2014542204201220137c2004ad7c220a201254200a2012511b22041b220e4280c8afa025544100427f200a20041b220a501b0d02200341f8006a41106a290300210a201a290300210e201929030021102005290300210f2003290380012115200329037821174201211620032903900121180c030b200341d0006a41206a200241206a290300370300200341d0006a41186a200241186a290300370300200341d0006a41106a200241106a290300370300200341d0006a41086a200241086a2903003703002003200229030037035041808004210641fcacc500210d4280808080d00221132014210a2012210e0b20064180800c7141830a722106200dad221242088842ff018321102013201284428080fcffff0383210f410121020c020b420021160240200e200a84500d00200e200a10eb01200341d0026a200a370300200341c8026a200e37030020034198026a41086a41013a0000200341a1026a2002290000370000200341a9026a200241086a290000370000200341b1026a200241106a290000370000200341b9026a200241186a290000370000200341023a00980220034198026a10e0010b0b2006ad2113200341d8016a200f370300200341e0016a2010370300200341c0016a2015370300200341e8016a200e370300200341c8016a200a370300200320183703d001200320113703f001200320173703b80142012110410021022003200c4100200942015122061b3a00fc012003200b410020061b3602f801200320164201512206ad3703b001024020060d002008ad4220862007ad841011420021102014210a2012210e4200210f0c010b2003200836029c022003200736029802200341b8016a20034198026a1098034200210f2014210a2012210e0b0240200328020c450d00200710230b024002402002450d0020002006360204200041086a2010420886200dad42ff018384200f84370200410121020c010b024002400240200d41ff017122020d0020104200510d004103210d20034198026a21020c010b2002450d0120104200520d014104210d200341b0016a21020b200241046a200d3a0000200241003a0000200241056a20012900003700002002410d6a200141086a290000370000200241156a200141106a2900003700002002411d6a200141186a290000370000200210e0010b200041186a200e370300200041106a200a370300200041086a2013370300410021020b2000200236020020034180036a24000bb31d0e037f017e037f057e037f017e027f017e017f037e017f017e037f047e23004180086b220624002006200437031020062003370308200620053a001f02400240024002400240024002400240024002402003200484500d0020012002460d0320012002412010a305450d0320064188016a200210970220064198016a200628028801220720062802900122081098022006290398012109420021042006420037039801200641e0016a280200210a20062d00e401210b2009420151220c0d01200641e8016a41386a4200370300200641e8016a41306a4200370300200641e8016a41286a420037030020064188026a4200370300200641e8016a41186a4200370300200641f8016a4200370300200641f0016a4200370300200642003703e801420021034200210d4200210e0c020b20004100360200200041106a4200370300200041086a42003703000c080b20064198016a41386a290300210f20064198016a41306a290300211020064198016a41206a290300210e20064198016a41186a290300210d200641d8016a290300211120062903a801210320062903a001210420064188026a20064198016a41286a290300370300200641e8016a41286a2010370300200641e8016a41306a200f370300200641f8016a200d3703002006200e37038002200620113703a002200620043703e801200620033703f0010b42002110200641e8016a41106a21050240427f2004200d7c220d200d20045422122003200e7c2012ad7c220420035420042003511b22121b427f200420121b844200520d00200641c8056a41206a200541206a290300370300200641c8056a41186a200541186a290300370300200641c8056a41106a200541106a290300370300200641c8056a41086a200541086a290300370300200620052903003703c80541a4acc500ad4280808080b00184210341838a1c21050c040b200641f8036a200110970220064188046a20062802f8032213200628028004221410980220062903880421152006420037038804200641d0046a280200211620062d00d404211702400240201542015122120d004200210d200641d8046a41306a4200370300200641d8046a41286a4200370300200641d8046a41206a4200370300200641d8046a41186a4200370300200641e8046a4200370300200641e0046a4200370300200642003703d804420021034200210e42002104420021180c010b200641c0046a290300210f20064188046a41306a290300211020064188046a41206a290300210320064188046a41186a290300210d200641c8046a29030021182006290398042104200629039004210e200641d8046a41206a20064188046a41286a290300370300200641d8046a41286a2010370300200641d8046a41306a200f370300200641e8046a200d370300200620033703f0042006200e3703d804200620043703e0040b200641086a41086a29030022102003200d2006290308221156200320105620032010511b22191b211a2011200d20191b210f0240024020062d001f4101470d002005211920062903f801221b200f7c221c201b54221d20064180026a290300221e201a7c201dad7c221b201e54201b201e511b0d010c030b200641e8016a211920062903e801221b200f7c221c201b54221d200641e8016a41086a290300221e201a7c201dad7c221b201e54201b201e511b4101470d020b41f4acc500211241f4acc500ad42808080808001842203428080fcff8f0183210f200342088842ff0183210d410121190c020b02402005450d00200641b0066a200110970220064198076a20062802b006220220062802b806109802200641b8076a290300420020062903980742015122011b210e200641b0076a290300420020011b210d024020062802b406450d00200210230b20004100360200200041106a42002004200e7d2003200d54ad7d220e2003200d7d220d200356200e200456200e2004511b22011b370300200041086a4200200d20011b3703000c060b200620033703c805200620043703d0052006200136029003200641b0066a2001200641c8056a20064190036a10ff02200641d0066a290300210320062903c8062104024020062903b0064201520d0020062903b806210d200641d0076a200641b0066a41106a290300370300200641c8076a200d37030020064198076a41086a41003a0000200641a1076a2001290000370000200641a9076a200141086a290000370000200641b1076a200141106a290000370000200641b9076a200141186a290000370000200641023a00980720064198076a10e0010b200041106a2003370300200041086a2004370300200041003602000c050b2019201c3703002019201b370308200641d8046a41186a2003201a7d200d200f54ad7d3703002006200d200f7d3703e80420064190056a41186a200641e8046a221941086a290300221b37030020064190056a41206a221f201941106a290300370300200641b8056a2220201941186a290300370300200641c0056a2221201941206a29030037030020062019290300221c3703a0052006200e3703900520062004370398052010201a7d21102011200f54ad211a427f200e200d7c220d200d200e542219200420037c2019ad7c220320045420032004511b22191b427f200320191b8450211902400240427f200e201c7c22032003200e54221d2004201b7c201dad7c220320045420032004511b221d1b220d4280c8afa025544100427f2003201d1b2203501b0d0020064190056a41106a290300210d2021290300211b2020290300211c201f290300211e200629039805212220062903900521234201212420062903a80521250c010b420021240240200d200384500d00200d200310eb01200641d0076a2003370300200641c8076a200d37030020064198076a41086a41013a0000200641a1076a2001290000370000200641a9076a200141086a290000370000200641b1076a200141106a290000370000200641b9076a200141186a290000370000200641023a00980720064198076a10e0010b0b2010201a7d21102011200f7d21032019ad2111200641b0046a201e370300200641b8046a201c37030020064198046a2022370300200641c0046a201b370300200641a0046a200d370300200620253703a804200620183703c80420062023370390044201210d410021192006201741002015420151221d1b3a00d404200620164100201d1b3602d004200620244201512216ad370388040240024020160d002014ad4220862013ad8410114200210d0c010b2006201436029c07200620133602980720064190046a20064198076a1098030b4200210f0b024020062802fc03450d00201310230b0240024020190d00024002400240201241ff017122120d00200d4200510d0041032119200641b0066a21120c010b2012450d01200d4200520d0141042119200641c8056a21120b201241046a20193a0000201241003a0000201241056a20012900003700002012410d6a200141086a290000370000201241156a200141106a2900003700002012411d6a200141186a290000370000201210e0010b4100211220114201520d01200641d0076a2004370300200641c8076a200e3703004100211220064198076a41086a41003a0000200641a1076a2001290000370000200641a9076a200141086a290000370000200641b1076a200141106a290000370000200641b9076a200141186a290000370000200641023a00980720064198076a10e0010c010b200d4208862012ad42ff018384200f84210342002110410121120b200641e8016a41086a290300210420062903e801210d20062903a002210e200641c8056a41206a2201200541206a290300370300200641c8056a41186a2219200541186a290300370300200641c8056a41106a2213200541106a290300370300200641c8056a41086a2214200541086a290300370300200620052903003703c80541838a0821052012450d010b20034280807c83210d200342088842ff018321042003a7210c410121010c010b200641b0066a41186a2014290300220f370300200641b0066a41206a2013290300370300200641d8066a22052019290300370300200641e0066a22122001290300370300200620062903c80522113703c0062006200d3703b006200620043703b80602400240427f200d20117c22112011200d5422012004200f7c2001ad7c220d200454200d2004511b22011b22044280c8afa025544100427f200d20011b220d501b0d00200641c0066a29030021042012290300210d2005290300210f200641d0066a290300211120062903b806211a20062903b00621154201211b20062903c80621180c010b4200211b02402004200d84500d002004200d10eb01200641d0076a200d370300200641c8076a200437030020064198076a41086a41013a0000200641a1076a2002290000370000200641a9076a200241086a290000370000200641b1076a200241106a290000370000200641b9076a200241186a290000370000200641023a00980720064198076a10e0010b0b200641c0016a2011370300200641c8016a200f370300200641a8016a201a370300200641d0016a200d370300200641b0016a2004370300200620183703b8012006200e3703d801200620153703a00142012104410021012006200b4100200942015122051b3a00e4012006200a410020051b3602e0012006201b4201512205ad37039801024020050d002008ad4220862007ad8410114200210441838a0821054200210d0c010b2006200836029c072006200736029807200641a0016a20064198076a1098034200210d41838a0821050b0240200628028c01450d00200710230b024020010d00024002400240200c41ff017122010d0020044200510d004103210520064190036a21010c010b2001450d0120044200520d0141042105200641a8026a21010b200141046a20053a0000200141003a0000200141056a20022900003700002001410d6a200241086a290000370000200141156a200241106a2900003700002001411d6a200241186a290000370000200110e0010b200041106a2010370300200041086a2003370300200041003602000c010b20002005360204200041086a2004420886200cad42ff018384200d84370200200041013602000b20064180086a24000be40a06037f027e027f0c7e037f057e230041d0026b22042400200328020021052004200110970220044180016a20042802002203200428020822061098022004290380012107420021082004420037038001200441c8016a280200210920042d00cc01210a0240024020074201510d00200441106a41306a4200370300200441106a41286a4200370300200441106a41206a4200370300200441106a41186a4200370300200441206a4200370300200441186a4200370300200442003703104200210b4200210c4200210d4200210e0c010b200441b8016a290300210f20044180016a41306a290300211020044180016a41206a290300210b20044180016a41186a2903002108200441c0016a290300210e200429039001210d200429038801210c200441106a41206a20044180016a41286a290300370300200441106a41286a2010370300200441106a41306a200f370300200441206a20083703002004200b3703282004200c3703102004200d3703180b200441106a41186a200b200241086a2903002211200b20082002290300221256200b201156200b2011511b22021b22137d20082012200820021b221054ad7d22143703002004200820107d22153703202004427f200d20137c200c20107c2216200c542202ad7c220f2002200f200d54200f200d511b22021b220f3703182004427f201620021b2216370310200441c8006a41186a2014370300200441c8006a41206a2217200441106a41206a290300370300200441c8006a41286a2218200441106a41286a290300370300200441c8006a41306a2219200441106a41306a2903003703002004200f3703502004201637034820042015370358427f200d200b7c200c20087c220b200c542202ad7c220820022008200d542008200d511b22021b210c427f200b20021b211a02400240427f201620157c220d200d2016542202200f20147c2002ad7c220d200f54200d200f511b22021b22084280c8afa025544100427f200d20021b220b501b0d00200441d8006a290300210b20192903002114201829030021152017290300211b2004290350211c2004290348211d4201210d2004290360211e0c010b4200210d02402008200b84500d002008200b10eb01200441a0026a200b37030020044198026a2008370300200441e8016a41086a41013a0000200441f1016a2005290000370000200441f9016a200541086a29000037000020044181026a200541106a29000037000020044189026a200541186a290000370000200441023a00e801200441e8016a10e0010b0b20122010542102201a200c842108200441a8016a201b370300200441b0016a201537030020044190016a201c370300200441b8016a201437030020044198016a200b3703002004201e3703a0012004200e3703c0012004201d370388012004200a4100200742015122051b3a00cc0120042009410020051b3602c8012004200d4201512205ad370380010240024020050d002006ad4220862003ad8410110c010b200420063602ec01200420033602e80120044188016a200441e8016a1098030b201120137d210b2002ad210c200850210202402004280204450d00200310230b200b200c7d21082002ad210b201220107d210c200d420152210202400240024020074201510d0020020d0041032103200441e8016a21020c010b20074201522002410173720d014104210320044180016a21020b200241046a20033a0000200241003a0000200241056a20012900003700002002410d6a200141086a290000370000200241156a200141106a2900003700002002411d6a200141186a290000370000200210e0010b2000200c370318200020163703082000200b370300200041206a2008370300200041106a200f370300200441d0026a24000bb91e0b037f027e037f047e037f027e017f077e017f027e047f230041a0076b2206240020062004370318200620033703102006200136020c200620053a002702400240024002400240024020012002460d002003200484500d0020012002412010a305450d00200641286a2002109702200641386a2006280228220720062802302208109802200629033821094200210a2006420037033820064180016a280200210b20062d008401210c024002402009420151220d0d0020064188016a41386a420037030020064188016a41306a420037030020064188016a41286a4200370300200641a8016a420037030020064188016a41186a420037030020064198016a420037030020064190016a420037030020064200370388014200210e4200210f420021100c010b200641386a41386a2903002103200641386a41306a2903002104200641386a41206a290300210e200641386a41186a290300210a200641f8006a2903002111200629034821102006290340210f200641a8016a200641386a41286a29030037030020064188016a41286a200437030020064188016a41306a200337030020064198016a200a3703002006200e3703a001200620113703c0012006200f3703880120062010370390010b20064198036a200628020c2212109702200641a8036a200628029803221320062802a003221410980220062903a803211542002116200642003703a803200641f0036a280200210120062d00f403211702400240201542015122050d00200641f8036a41306a4200370300200641f8036a41286a4200370300200641f8036a41206a4200370300200641f8036a41186a4200370300200641f8036a41106a420037030020064180046a4200370300200642003703f803420021184200210442002103420021190c010b200641e0036a2903002111200641a8036a41306a290300211a200641a8036a41206a2903002118200641a8036a41186a2903002116200641e8036a290300211920062903b803210320062903b0032104200641f8036a41206a200641a8036a41286a290300370300200641f8036a41286a201a370300200641f8036a41306a2011370300200641f8036a41106a20163703002006201837039004200620043703f80320062003370380040b024020042006290310221b7d221a2004562003200641106a41086a290300221c7d2004201b54ad7d221120035620112003511b450d0041e1acc50021054280808080b002211141808a0c21010c030b2006201a3703f80320062011370380040240200629038801221d201b7c221e201d54221f20064188016a41086a2903002220201c7c201fad7c221d202054201d2020511b450d0041f4acc500210542808080808001211141808a0821010c030b2006201e37038801200641a0016a29030021202006201d370390010240427f201e2006290398017c22212021201e54221f201d20207c201fad7c2220201d542020201d511b221f1b4280c8afa025544100427f2020201f1b501b450d0041cfacc50021054280808080a002211141808a1021010c030b0240201b201c84500d00200641b0046a200628020c109702200641b8066a20062802b004222220062802b804109802200641e8066a290300420020062903b806420151221f1b211b200641e0066a2903004200201f1b211d024020062802b404450d00202210230b201d201a56201b201156201b2011511b0d020b0240024020062d00274101460d00201a4280c8afa0255441002011501b0d010c050b200641b0046a200628020c109702200641b8066a20062802b004221f20062802b80410980220062d008407212220062903b806211b024020062802b404450d00201f10230b201a42ffc7afa0255620114200522011501b0d04201b4201520d04202241ff0171450d040b41c6acc500210542808080809001211141808a1421010c020b200041043a00000c040b41fcacc50021054280808080d002211141808a0421010b200141037221172005ad220342088842ff018321042003428080fcff0f83201184211b4101211f0c010b200641b0046a41186a200641f8036a41186a290300221b370300200641b0046a41206a2223200641f8036a41206a290300370300200641b0046a41286a2224200641f8036a41286a290300370300200641b0046a41306a2225200641f8036a41306a2903003703002006200629038804221d3703c0042006201a3703b004200620113703b804427f200420167c22162016200454221f200320187c201fad7c220420035420042003511b221f1b427f2004201f1b8450211f02400240427f201a201d7c22032003201a5422222011201b7c2022ad7c220320115420032011511b22221b22044280c8afa025544100427f200320221b2203501b0d00200641c0046a29030021042025290300211b202429030021162023290300211d20062903b804211c20062903b00421184201212020062903c804211e0c010b4200212002402004200384500d002004200310eb01200641f0066a2003370300200641e8066a2004370300200641b8066a41086a41013a0000200641c1066a2012290000370000200641c9066a201241086a290000370000200641d1066a201241106a290000370000200641d9066a201241186a290000370000200641023a00b806200641b8066a10e0010b0b201fad2103200641d0036a201d370300200641d8036a2016370300200641b8036a201c370300200641e0036a201b370300200641c0036a20043703002006201e3703c803200620193703e803200620183703b003420121044100211f200620174100201542015122221b3a00f40320062001410020221b3602f003200620204201512201ad3703a803024020010d002014ad4220862013ad841011420021044200211b0c010b200620143602bc06200620133602b806200641b0036a200641b8066a1098034200211b0b0240200628029c03450d00201310230b20064188016a41106a210102400240201f0d00024002400240200541ff017122050d0020044200510d0041032117200641d0056a21050c010b2005450d0120044200520d0141042117200641e8046a21050b200541046a20173a0000200541003a0000200541056a20122900003700002005410d6a201241086a290000370000200541156a201241106a2900003700002005411d6a201241186a290000370000200510e0010b410421174100210520034201520d01200641f0066a2011370300200641e8066a201a37030041002105200641b8066a41086a41003a0000200641c1066a2012290000370000200641c9066a201241086a290000370000200641d1066a201241106a290000370000200641d9066a201241186a290000370000200641023a00b806200641b8066a10e0010c010b20044208862005ad42ff018384201b842103201741807e7121050b200641e8046a41086a2212200141086a290300370300200641e8046a41106a221f200141106a290300370300200641e8046a41186a2213200141186a290300370300200641e8046a41206a2214200141206a290300370300200620012903003703e80420064188016a41086a2903002104200629038801211102400240201741ff017122014104460d0020034280807c83211a200342088842ff01832110200520017221052003a7210d410121010c010b20062903c001211a200641d0056a41186a2012290300221b370300200641d0056a41206a201f290300370300200641f8056a2212201329030037030020064180066a22172014290300370300200620062903e80422153703e005200620113703d005200620043703d805427f200f200a7c22032003200f5422012010200e7c2001ad7c220320105420032010511b22011b427f200320011b8450210102400240427f201120157c2203200320115422052004201b7c2005ad7c220320045420032004511b22051b22104280c8afa025544100427f200320051b2203501b0d00200641e0056a29030021102017290300211b2012290300210a200641f0056a290300210f20062903d805211520062903d00521164201210e20062903e805211d0c010b4200210e02402010200384500d002010200310eb01200641f0066a2003370300200641e8066a2010370300200641b8066a41086a41013a0000200641c1066a2002290000370000200641c9066a200241086a290000370000200641d1066a200241106a290000370000200641d9066a200241186a290000370000200641023a00b806200641b8066a10e0010b0b2001ad2103200641e0006a200f370300200641e8006a200a370300200641c8006a2015370300200641f0006a201b370300200641d0006a20103703002006201d3703582006201a3703782006201637034042012110410021012006200c4100200942015122051b3a0084012006200b410020051b360280012006200e4201512205ad370338024020050d002008ad4220862007ad841011420021104200211a0c010b200620083602bc06200620073602b806200641c0006a200641b8066a1098034200211a0b0240200628022c450d00200710230b02400240024020010d00024002400240200d41ff017122010d0020104200510d0041032105200641b0026a21010c010b2001450d0120104200520d0141042105200641c8016a21010b200141046a20053a0000200141003a0000200141056a20022900003700002001410d6a200241086a290000370000200141156a200241106a2900003700002001411d6a200241186a290000370000200110e0010b20034201520d01200641f0066a2004370300200641e8066a2011370300200641b8066a41086a41003a0000200641c1066a2002290000370000200641c9066a200241086a290000370000200641d1066a200241106a290000370000200641d9066a200241186a290000370000200641023a00b806200641b8066a10e0010c010b200541ff01714104470d010b200628020c21012006290310210320064190076a200641106a41086a29030037030020064188076a2003370300200641b8066a41086a41023a0000200641c1066a2001290000370000200641c9066a200141086a290000370000200641d1066a200141106a290000370000200641d9066a200141186a290000370000200641e1066a2002290000370000200641e9066a200241086a290000370000200641f1066a200241106a290000370000200641f9066a200241186a290000370000200641023a00b806200641b8066a10e001200041043a00000c010b2000200541087622023b0001200020053a0000200041036a20024110763a0000200041046a2010420886200dad42ff018384201a843700000b200641a0076a24000b950201047f230041d0006b220124002001412036020420012000360200200141086a2000ad42808080808004841010108b0102400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0020022d0000220441014b0d0041002100024020040e020200020b410121000c010b20014100360220200142013703182001410a36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c20014180c5c6003602382001200141286a360248200141346a4184a5c200200141386a10311a2001350220422086200135021884100a0240200128021c450d00200128021810230b410221000b2003450d00200210230b200141d0006a240020000b901304057f017e107f027e230041e0026b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b010240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a1088010240024020022802000d00200228020422052002280224220641c4006e2201200120054b1bad42c4007e2207422088a70d032007a72201417f4c0d030240024020010d00410421080c010b200110212208450d050b20024100360230200220083602282002200141c4006e36022c0240024002402005450d00200241b8026a41077221094100210a4100210b03402006450d0220022006417f6a220c36022420022002280220220d41016a360220200d2d0000220141014b0d0202400240024020010e020001000b200c4104490d04200241f4016a41026a200241f8016a41026a2d00003a0000200241d8016a41086a20024198026a41086a290200370300200241d8016a41106a20024198026a41106a290200370300200241d8016a41186a20024198026a41186a2d00003a0000200241b8016a41086a200241b8026a41086a290100370300200241b8016a41106a200241b8026a41106a290100370300200241b8016a41186a200241b8026a41186a290100370300200220022f00f8013b01f40120022002290298023703d801200220022901b8023703b80120022006417b6a220e3602242002200d41056a360220200d280001210f200220022f0194023b01b601410021100c010b41002111200241003a00d8022006417e6a2110024002400240024002400340200c20112201460d01200241b8026a20016a200d20016a221141016a2d00003a00002002201141026a3602202002200141016a22113a00d802200220103602242010417f6a211020114120470d000b20024194026a41026a221220022d00ba023a0000200241f8016a41086a2213200941086a290000370300200241f8016a41106a2214200941106a290000370300200241f8016a41186a2215200941186a2d00003a0000200220022f01b8023b019402200220092900003703f8014100210e200c2011460d0220022800bb022116200220103602242002200d20116a220c41026a360220200c41016a2d0000221141014d0d012010210e410221100c050b0240200141ff0171450d00200241003a00d8020b4100210e410221100c040b024020110e020200020b41002111200241003a00d802200620016b417c6a21010240034020102011460d01200241b8026a20116a200c20116a220d41026a2d00003a00002002200d41036a3602202002201141016a220d3a00d802200220013602242001417f6a2101200d2111200d4120470d000b20024198026a41186a200241b8026a41186a29030037030020024198026a41106a200241b8026a41106a29030037030020024198026a41086a200241b8026a41086a290300370300200220022903b802370398022010200d6b210e410121170c030b0240201141ff0171450d00200241003a00d8020b4100210e0b410221100c020b410021172010210e0b200241b8016a41186a20024198026a41186a290300370300200241b8016a41106a20024198026a41106a290300370300200241b8016a41086a20024198026a41086a290300370300200241f4016a41026a20122d00003a0000200241d8016a41086a2013290300370300200241d8016a41106a2014290300370300200241d8016a41186a20152d00003a000020022002290398023703b801200220022f0194023b01f401200220022903f8013703d801410121102016210f0b200241b2016a41026a2201200241f4016a41026a2d00003a000020024198016a41086a2211200241d8016a41086a29030037030020024198016a41106a220d200241d8016a41106a29030037030020024198016a41186a220c200241d8016a41186a2d00003a0000200241f8006a41086a2206200241b8016a41086a290300370300200241f8006a41106a2212200241b8016a41106a290300370300200241f8006a41186a2213200241b8016a41186a290300370300200220022f01f4013b01b201200220022903d80137039801200220022903b801370378200220022f01b6013b017620104102460d03200b41016a210b200241f2006a41026a221420012d00003a0000200241d8006a41086a22152011290300370300200241d8006a41106a2211200d290300370300200241d8006a41186a220d200c2d00003a0000200241386a41086a220c2006290300370300200241386a41106a22062012290300370300200241386a41186a22122013290300370300200220022f01b2013b0172200220022903980137035820022002290378370338200220022f01763b01360240200a200228022c470d00200241286a200a4101109b01200228022821082002280230210a0b2008200a41c4006c6a220120103a00002001200f360004200141036a20142d00003a0000200120022f01723b0001200d2d00002110201129030021072015290300211820022903582119200120173a002120012019370008200141106a2018370000200141186a2007370000200141206a20103a000020012002290338370022200c29030021072006290300211820122903002119200120022f01363b00422001413a6a2019370000200141326a20183700002001412a6a20073700002002200a41016a220a360230200e2106200b2005470d000b0b2008450d022000200229022c370204200020083602000c030b200241b2016a41026a200241f4016a41026a2d00003a000020024198016a41086a200241d8016a41086a29030037030020024198016a41106a200241d8016a41106a29030037030020024198016a41186a200241d8016a41186a2d00003a0000200241f8006a41086a200241b8016a41086a290300370300200241f8006a41106a200241b8016a41106a290300370300200241f8006a41186a200241b8016a41186a290300370300200220022f01f4013b01b201200220022903d80137039801200220022903b801370378200220022f01b6013b01760b200228022c2201450d00200141c4006c450d00200810230b200241003602a00220024201370398022002410a3602bc012002200241086a3602b801200220024198026a360278200241cc026a4101360200200242013702bc0220024180c5c6003602b8022002200241b8016a3602c802200241f8006a4184a5c200200241b8026a10311a20023502a00242208620023502980284100a0240200228029c02450d0020022802980210230b200041003602000b2004450d00200310230b200241e0026a24000f0b1032000b1033000b9b0902097f037e230041206b220224002002410036020820024201370300024002400240412010212203450d0020032001290010370000200341186a2204200141286a290000370000200341106a2205200141206a290000370000200341086a2206200141186a290000370000412010212207450d02200241203602042002200736020020072003290000370000200741086a2006290000370000200741106a2005290000370000200741186a200429000037000020024120360208200310232001200210ed01412010212203450d0020032001290030370000200341186a200141c8006a290000370000200341106a200141c0006a290000370000200341086a200141386a2900003700000240024020022802042208200228020822066b4120490d00200641206a210720022802002104200821050c010b200641206a22072006490d02200841017422042007200420074b1b22054100480d020240024020080d00024020050d00410121040c020b2005102122040d010c050b2002280200210420082005460d0020042008200510252204450d040b20022005360204200220043602000b200420066a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a2900003700002002200736020820031023412010212203450d0020032001290050370000200341186a200141e8006a290000370000200341106a200141e0006a290000370000200341086a200141d8006a2900003700000240200520076b411f4b0d00200741206a22062007490d02200541017422082006200820064b1b22064100480d020240024020050d00024020060d00410121040c020b200610212204450d050c010b20052006460d0020042005200610252204450d040b20022006360204200220043602000b200420076a22042003290000370000200441186a200341186a290000370000200441106a200341106a290000370000200441086a200341086a2900003700002002200741206a36020820031023200128020421052001410c6a2802002201200210610240024020010d002002280208210320022802042104200228020021080c010b200141246c210920022802042107200228020821010340200241106a200510e0022002280210210a02400240200720016b20022802182206490d00200120066a210320022802002108200721040c010b200120066a22032001490d04200741017422042003200420034b1b22044100480d040240024020070d00024020040d00410121080c020b200410212208450d070c010b2002280200210820072004460d0020082007200410252208450d060b20022004360204200220083602000b200820016a200a200610a1051a2002200336020802402002280214450d00200a10230b200541246a210520042107200321012009415c6a22090d000b0b2003ad4220862008ad8410182201290000210b200141086a290000210c200141106a290000210d200041186a200141186a290000370000200041106a200d370000200041086a200c3700002000200b3700002001102302402004450d00200810230b200241206a24000f0b1033000b102c000b102a000bac0603027f017e057f23004180016b2202240041e4dec400ad4280808080e00084100c22032900002104200241306a41086a200341086a290000370300200220043703302003102341eadec400ad4280808080900184100c22032900002104200241d0006a41086a200341086a2900003703002002200437035020031023200220013602742002200241f4006aad4280808080c00084100d220329000037037820031023200241146a200241f8006a360200200241003a00182002200241f8006a41086a36020c2002200241f4006a3602102002200241f8006a360208200241c0006a200241086a10650240024002400240024002402002280248220541206a2201417f4c0d0020022802402106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422074110200741104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290330370000200341086a200241306a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290350370010200341186a200241d0006a41086a2903003700000240200841606a20054f0d00200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a02402002280244450d00200610230b200241086a2003200110e101200241d0006a41086a2201200241116a290000370300200241d0006a41106a2207200241196a290000370300200241d0006a41186a2205200241216a290000370300200220022900093703500240024020022d00084101460d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290350370000200041186a2005290300370000200041106a2007290300370000200041086a20012903003700000b2003102320024180016a24000f0b102c000b102a000beb0e05017f017e047f017e067f230041f0016b2201240042002102200141d8006a41186a22034200370300200141d8006a41106a22044200370300200141d8006a41086a220542003703002001420037035841fea6c600ad4280808080a00184100c220629000021072005200641086a29000037030020012007370358200610234188a7c600ad4280808080e00084100c22062900002107200141c8006a41086a2208200641086a2900003703002001200737034820061023200420012903482207370300200141286a41086a22062005290300370300200141286a41106a2007370300200141286a41186a200829030037030020012001290358370328200141f8006a200141286a412010e10120012d00782108200320014191016a290000370300200420014189016a290000370300200520014181016a290000370300200120012900793703580240024020084101470d0020002001290358370000200041186a2003290300370000200041106a2004290300370000200041086a20052903003700000c010b200141f8006a41186a4200370300200141f8006a41106a22094200370300200141f8006a41086a220842003703002001420037037841e4dec400ad4280808080e00084100c220a29000021072008200a41086a29000037030020012007370378200a10234191dfc400ad4280808080e00084100c220a29000021072006200a41086a29000037030020012007370328200a102320092001290328220737030020052008290300370300200420073703002003200629030037030020012001290378370358200141f8006a200141d8006a10f702024002402001280278220a0d004104210a410021050c010b200129027c2202422088a721050b02400240200541246c2205450d002005415c6a2103200a210503400240024020052d00004101460d002003450d030c010b200541016a2800002106200541086a28020021082001200541106a28020036025c200120083602580240200641c28289aa04460d0020030d010c030b200141f8006a200141d8006a10f90320012903784202510d02200141f8006a41106a22052802002108200141f8006a41186a420037030020054200370300200141f8006a41086a220342003703002001420037037841db97c700ad4280808080f00084100c220629000021072003200641086a290000370300200120073703782006102341bbacc300ad4280808080a00184100c22062900002107200141286a41086a2209200641086a2900003703002001200737032820061023200520012903282207370300200141d8006a41086a2003290300370300200141d8006a41106a2007370300200141d8006a41186a200929030037030020012001290378370358200141f8006a200141d8006a412010890220012802782205410120051b21064100210302402008200129027c420020051b2207422088a74f0d00200620084105746a2205450d00200141086a41186a200541186a290000370300200141086a41106a200541106a290000370300200141086a41086a200541086a29000037030020012005290000370308410121030b0240200742ffffff3f83500d00200610230b2003450d02200141f8006a41186a2203200141086a41186a290300370300200141f8006a41106a2206200141086a41106a290300370300200141f8006a41086a2208200141086a41086a29030037030020012001290308370378200141d8006a41186a220b4200370300200141d8006a41106a220c4200370300200141d8006a41086a220542003703002001420037035841fea6c600ad4280808080a00184100c220929000021072005200941086a29000037030020012007370358200910234188a7c600ad4280808080e00084100c22092900002107200141c8006a41086a220d200941086a290000370300200120073703482009102320042001290348370000200441086a200d290300370000200141286a41086a2005290300370300200141286a41106a200c290300370300200141286a41186a200b290300370300200120012903583703280240412010212205450d0020052001290378370000200541186a2003290300370000200541106a2006290300370000200541086a2008290300370000200141286aad42808080808004842005ad4280808080800484100e20051023200041186a2003290300370000200041106a2006290300370000200041086a2008290300370000200020012903783700000c040b1033000b200541246a21052003415c6a21030c000b0b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402002422088a72205450d00200541246c2103200a210503400240024020052d0000220641044b0d0002400240024020060e050400010204040b2005410c6a280200450d03200541086a28020010230c030b2005410c6a280200450d02200541086a28020010230c020b2005410c6a280200450d01200541086a28020010230c010b200541086a280200450d00200541046a28020010230b200541246a21052003415c6a22030d000b0b2002a72205450d00200541246c450d00200a10230b200141f0016a24000bae0503027f017e047f230041d0006b2202240041db97c700ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341c5acc300ad4280808080800184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bd60201027f23004180036b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041003a00000c010b200328021421042003200341186a2802003602ec02200320013602e802200341c0016a200341e8026a10e502410121020240024020032d00c0014101470d004100210220034100360228200342013703202003410a3602f4022003200341086a3602f0022003200341206a3602fc02200341d4016a4101360200200342013702c40120034180c5c6003602c0012003200341f0026a3602d001200341fc026a4184a5c200200341c0016a10311a2003350228422086200335022084100a2003280224450d01200328022010230c010b200341206a200341c0016a41017241a00110a1051a200041016a200341206a41a00110a1051a0b200020023a00002004450d00200110230b20034180036a24000bea0703027f017e057f230041d0006b2202240041db97c700ad4280808080f00084100c22032900002104200241086a200341086a290000370300200220043703002003102341cdacc300ad4280808080800184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240200141086a280200220541046a2203417f4c0d000240024002402003450d00200310212206450d0420024100360240200220063602382002200336023c200341034b0d02200341017422074104200741044b1b22074100480d0720032007460d0120062003200710252206450d080c010b20024100360240200241013602382002200336023c200341017422034104200341044b1b220710212206450d070b2002200736023c200220063602380b2006200128000036000020024104360240200128020421082005200241386a106102400240200228023c2207200228024022016b2005490d0020022802382103200721060c010b200120056a22032001490d05200741017422062003200620034b1b22064100480d050240024020070d00024020060d00410121030c020b200610212203450d080c010b2002280238210320072006460d0020032007200610252203450d070b2002200636023c200220033602380b200320016a2008200510a1051a2002200120056a2205ad4220862003ad84100d220129000037033020011023200241c4006a200320056a360200200241003a0048200220033602402002200241386a36023c2002200241306a360238200241206a200241386a106502402006450d00200310230b2002280228220741206a2205417f4c0d0020022802202108024002402005450d00200510212203450d032005410f4d0d01200521060c050b200541017422034110200341104b1b220610212203450d060c040b200541017422014110200141104b1b220641004e0d020c040b1032000b1033000b20052006460d0020032005200610252203450d020b20032002290300370000200341086a200241086a2903003700000240024020064170714110460d00200621010c010b200641017422014120200141204b1b22014100480d0120062001460d0020032006200110252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200141606a2007490d00200121060c010b200741206a22062007490d01200141017422092006200920064b1b22064100480d0120012006460d0020032001200610252203450d020b200341206a2008200710a1051a20002005360208200020063602042000200336020002402002280224450d00200810230b200241d0006a24000f0b102c000b102a000bc72606027f017e037f017e157f037e23004190066b220324000240024002400240024020012802000e03000102000b200341bc056a4101360200200342013702ac05200341a4c5c6003602a805200341043602ec01200341cccec6003602e8012003200341e8016a3602b805200341a8056a419ca8c700103a000b20022d0001210420022d00002102200341a8056a41086a2001410c6a280200360200200320012902043703a805200341e8016a20022004200341a8056a10b3030240024020032d00e8014104460d0020032903e8012105200041146a200341e8016a41086a2802003602002000410c6a2005370200410121010c010b410021010b200041003602040c010b200141106a28020021062001410c6a2802002104200141086a280200210720012802042108200341086a200141146a41c40010a1051a024002400240024002400240024002400240024002400240024020022d00000d0020022d00014101470d002002411a6a2901002109200241196a2d0000210a200241186a2d0000210b200241166a2f0100210c200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d00002119200241046a2d0000211a200241026a2f0100211b200341a8056a41186a4200370300200341a8056a41106a221c4200370300200341a8056a41086a22014200370300200342003703a80541db97c700ad4280808080f00084100c220229000021052001200241086a290000370300200320053703a8052002102341bbacc300ad4280808080a00184100c22022900002105200341c8046a41086a221d200241086a290000370300200320053703c80420021023201c20032903c8042205370300200341e8016a41086a2001290300370300200341e8016a41106a2005370300200341e8016a41186a201d290300370300200320032903a8053703e801200341a8056a200341e8016a412010890220032802a805210120032902ac052105200341e8016a410c6a200341346a290200370200200341fc016a2003413c6a29020037020020034184026a200341c4006a290200370200200341f0c2c98b063602e8012003200329022c3702ec01200341c8046a410c6a2006360200201d2004360200200320073602cc04200320083602c8042005420020011b21052001410120011b211e200341a8056a200341e8016a200341c8046a10b40320032802e805450d0220032802a8052101200341d0006a200341a8056a41047241cc0010a1051a2003419c016a200341d0006a41cc0010a1051a4120102122020d010c0e0b02402006450d002006410c6c21022007210103400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b410221012004450d0a2004410c6c450d0a200710230c0b0b200220093700182002200a3a00172002200b3a00162002200c3b00142002200d3a00132002200e3a00122002200f3b0010200220103a000f200220113a000e200220123b000c200220133a000b200220143a000a200220153b0008200220163a0007200220173a0006200220183b0004200220193a00032002201a3a00022002201b3b0000200320013602e801200341e8016a4104722003419c016a41cc0010a1051a20032005422088a73602bc02200320083602b80241d00010212201450d0c200341a8056a41086a2204200341e8016a41086a290300370300200341a8056a41106a2206200341e8016a41106a290300370300200341a8056a41186a2207200341e8016a41186a290300370300200320032903e8013703a805200341e8016a41286a290300210920034198026a290300211f200341e8016a41386a29030021202003290388022121200341c8046a200341a8026a10b503200141386a20203703002001201f370330200141286a200937030020012021370320200141186a2007290300370300200141106a2006290300370300200141086a2004290300370300200120032903a805370300200120032903c804370340200141c8006a200341c8046a41086a28020036020020034281808080103702d402200320023602d002410410212204450d082004200836000020034284808080c0003702dc03200320043602d803200341a8056a41a599c50010b603200341c8046a20032802a805220620032802b00510b70320032902cc04420020032802c80422041b21092004410120041b2107024020032802ac05450d00200610230b200320094220883e02cc04200320073602c804200341a8056a200341c8046a10b803200341a8056a41086a280200210620032802ac05211d20032802a8052104200341a8056a41a599c500200341d8036a10b903200341c8046a20032802a805220b20032802b0051089022006410020041b211c201d410020041b210a20032902cc04420020032802c80422061b211f2004410420041b211d2006410120061b2106024020032802ac05450d00200b10230b200341e0026a41206a201c360200200341fc026a200a360200200341e0026a41106a201f370300200341e0026a41086a200341d8036a41086a280200360200200320032903d8033703e0022003201d3602f802200320063602ec0202402009a7450d00200710230b200341a8056a41086a2204200141086a290300370300200341a8056a41106a200141106a290300370300200341a8056a41186a200141186a290300370300200341a8056a41206a200141206a290300370300200341a8056a41286a2207200141286a290300370300200341a8056a41306a220b200141306a290300370300200341a8056a41386a220c200141386a290300370300200341c8046a41086a220d200141cc006a280200360200200320012903003703a805200320012902443703c8042001280240220e450d0120034198036a41386a220f200c29030037030020034198036a41306a220c200b29030037030020034198036a41286a220b200729030037030020034198036a41206a2207200341a8056a41206a29030037030020034198036a41186a2210200341a8056a41186a29030037030020034198036a41106a2211200341a8056a41106a29030037030020034198036a41086a2212200429030037030020034188036a41086a2204200d280200360200200320032903a80537039803200320032903c80437038803200341d8036a41386a200f290300370300200341d8036a41306a200c290300370300200341d8036a41286a200b290300370300200341d8036a41206a2007290300370300200341d8036a41186a2010290300370300200341d8036a41106a2011290300370300200341d8036a41086a201229030037030020032003290398033703d8032003200e360298042003419c046a2207200329038803370200200741086a2004280200360200410410212204450d0820042008360000200341a8056a410c6a220741002900a59945370000200741086a41002900ad994537000020034284808080c0003702ac05200320043602a8052003200341d8036a3602c405200341a8046a200341a8056a10ba0320041023200341a8056a200341a8046a10bb03200320032802a805220720032802b005419ca8c70041004100108c0120032802002104024020032802ac05450d00200710230b024020044101460d00200341c8046a200341d8036a41d00010a1051a20034198056a200341d0026a108e02200341a8056a200341c8046a41d00010a1051a200341f8056a220241086a20034198056a41086a2802003602002002200329039805370200200341c8046a200341a8046a10bb0320032802c8042102200320032802d00436029c052003200236029805200341a8056a20034198056a10bc03024020032802cc04450d00200210230b024020032802ec052202450d00200241306c450d0020032802e80510230b024020032802fc0541ffffff3f71450d0020032802f80510230b200341c8046a41186a200341a8046a41186a290300370300200341c8046a41106a200341a8046a41106a290300370300200341c8046a41086a200341a8046a41086a290300370300200320032903a8043703c804410021020240201c41014b0d000240201c0e020005000b200341a8056a41186a200341c8046a41186a290300370300200341a8056a41106a200341c8046a41106a290300370300200341a8056a41086a200341c8046a41086a290300370300200320032903c8043703a805410021020c050b201c2104034020022004410176220620026a2207201d200741246c6a28020020084b1b2102200420066b220441014b0d000c040b0b200328029c042204450d01200441306c450d0120032802980410230c010b02402005a722060d00419084c300210441252102410021010c0a0b419084c30021044125210241002101200641ffffff3f710d060c090b20011023200341003602c002024020032802e402450d0020032802e00210230b0240201f42ffffff3f83500d00200610230b0240200a450d00200a41246c450d00201d10230b200210230c020b0240201d200241246c6a28020022042008460d00200220042008496a21020b200341a8056a41186a200341c8046a41186a290300370300200341a8056a41106a200341c8046a41106a290300370300200341a8056a41086a200341c8046a41086a290300370300200320032903c8043703a805201c20024f0d002002201c1038000b0240201c200a470d00200341e0026a41186a200a410110a20120032802f802211d0b201d200241246c6a220441246a2004201c20026b41246c10a2051a20042008360200200420032903a8053702042004410c6a200341a8056a41086a2202290300370200200441146a200341a8056a41106a22062903003702002004411c6a200341a8056a41186a22042903003702002003201c41016a360280032004200341c8046a41186a2903003703002006200341c8046a41106a2903003703002002200341c8046a41086a290300370300200320032903c8043703a805024020032802f402220720032802f002470d00200341e0026a410c6a20074101109a0120032802f40221070b20032802ec02221c20074105746a221d20032903a805370000201d41186a2004290300370000201d41106a2006290300370000201d41086a20022903003700002003200741016a22073602f40220011023200341c0026a201c201c20074105746a10bd03200341a8056a41206a200341e0026a41206a28020022013602002004200341e0026a41186a29030022093703002006200341e0026a41106a2903003703002002200341e0026a41086a290300370300200320032903e0023703a805200341d8036a2009a72204200110be03200341c8046a41a599c50010b60320032802c8042101200320032802d00436029c03200320013602980320032802d803220220032802e00320034198036a10c802024020032802cc04450d00200110230b024020032802dc03450d00200210230b200341c8046a41a599c500200341a8056a10b90320032802c8042101200320032802d0043602dc03200320013602d80320032802b4052202200341bc056a280200200341d8036a10bf03024020032802cc04450d00200110230b024020032802ac05450d0020032802a80510230b0240200341b8056a28020041ffffff3f71450d00200210230b0240200341c4056a2802002201450d00200141246c450d00200410230b20032802c0022106024020032802d40241ffffff3f71450d0020032802d00210230b20060d010b0240200341ac026a2802002201450d00200141306c450d0020032802a80210230b2005a722060d0141b584c300210441182102410021010c050b200341c8026a280200210420032802c402211d200341003602b005200342043703a805200341a8056a41002004107920032802a805210720032802b005211c0240024020040d0020032802ac052102200641002007201c20032802b80210c003211c0c010b2007201c4102746a21012004210203402001418094ebdc03360200200141046a21012002417f6a22020d000b20032802ac052102200620042007201c20046a20032802b80210c003211c0b410410212201450d0220012008360000200341b0056a4284808080c000370300200341b8056a41002900a59945370300200341c0056a41002900ad9945370300200341c8056a201c3a0000200320013602ac05200341043a00a805200341a8056a10e0010240200241ffffffff0371450d00200710230b02402004450d00200441e0006c2102200641d4006a210103400240200141706a2802002204450d00200441306c450d002001416c6a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141e0006a2101200241a07f6a22020d000b0b0240201d450d00201d41e0006c450d00200610230b0240200341ac026a2802002201450d00200141306c450d0020032802a80210230b02402005a72201450d00200141ffffff3f71450d00201e10230b41002101200041003602040c050b41b584c30021044118210241002101200641ffffff3f71450d030b201e10230c020b1033000b0b20004100360204200041146a2002360200200041106a20043602002000410c6a2001360200410121010b2000200136020020034190066a24000f0b102a000bca0b03057f017e067f23004180016b22052400200541d0006a2001108d0341002106200541086a200528025022072005280258419ca8c70041004100108c012005280208210802402005280254450d00200710230b02400240024020084101470d004111210841e5aac30021010c010b024020020d00200541d0006a41186a4200370300200541d0006a41106a22094200370300200541d0006a41086a22064200370300200542003703504196adc300ad4280808080900184100c2207290000210a200541f0006a41086a2208200741086a2900003703002005200a37037020071023200620082903003703002005200529037037035041b0dfc300ad4280808080a00184100c2207290000210a2008200741086a2900003703002005200a3703702007102320092005290370220a370300200541306a41086a2006290300370300200541306a41106a200a370300200541306a41186a200829030037030020052005290350370330200541206a200541306a10c90302400240024002400240024002402005280220220b0d004100210820054100360218200542043703104100210c4100210d0c010b2005290224210a2005200b3602102005200a370214200aa7210c41002108024002400240200a422088a7220d41014b0d00200d0e020201020b200d2106034020082006410176220720086a220e200b200e4102746a28020020014b1b2108200620076b220641014b0d000b0b4101210e200b20084102746a28020022062001460d03200d200820062001496a2208490d040b200d200c470d010b200541106a200c410110792005280214210c2005280210210b0b200b20084102746a220641046a2006200d20086b41027410a2051a200620013602002005200d41016a220d3602184106210e0b200541d0006a41186a220f4200370300200541d0006a41106a22104200370300200541d0006a41086a22064200370300200542003703504196adc300ad4280808080900184100c2207290000210a200541f0006a41086a2208200741086a2900003703002005200a37037020071023200620082903003703002005200529037037035041b0dfc300ad4280808080a00184100c2207290000210a2008200741086a2900003703002005200a3703702007102320092005290370370000200941086a2008290300370000200541306a41086a2006290300370300200541306a41106a2010290300370300200541306a41186a200f29030037030020052005290350370330200b0d01200541306aad428080808080048410110c020b2008200d1038000b200541203602542005200541306a360250200b200d200541d0006a10d502200c41ffffffff0371450d00200b10230b200e4106460d00419fabc300210141102108410421060240024002400240200e417f6a0e050001020305000b41e5aac300210141112108410021060c040b41f6aac3002101410e2108410121060c030b4184abc3002101410f2108410221060c020b4193abc3002101410c2108410321060c010b2004280208210e2004280204210b20042802002108200328020421042003280208210d20032802002106200541d0006a200110d2032005280250210720052005280258360234200520073602302006200d200541306a10c80202402005280254450d00200710230b02402004450d00200610230b200541d0006a200110ca032005280250210620052005280258360234200520063602302008200e200541306a10c80202402005280254450d00200610230b0240200b450d00200810230b200541d0006a2001108d032005350258210a200528025021010240410110212208450d00200820023a0000200a4220862001ad842008ad42808080801084100e2008102302402005280254450d00200110230b200041043a00000c020b102a000b20004183243b0100200041086a2008360200200041046a2001360200200041026a20063a00000240200441046a280200450d00200428020010230b200341046a280200450d00200328020010230b20054180016a24000bb80904067f017e047f017e230041d0006b22022400200241206a2001108d034102210302402002280220220420022802282205108e0341ff017122064102460d002005ad4220862004ad841011200621030b02402002280224450d00200410230b41022003410171200341024622031b21040240024002400240024002400240024020030d0020044101710d04200241206a41186a4200370300200241206a41106a22074200370300200241206a41086a22044200370300200242003703204196adc300ad4280808080900184100c22052900002108200241c0006a41086a2203200541086a2900003703002002200837034020051023200420032903003703002002200229034037032041b0dfc300ad4280808080a00184100c220529000021082003200541086a2900003703002002200837034020051023200720022903402208370300200241086a2004290300370300200241106a2008370300200241186a200329030037030020022002290320370300200241206a200210c9034101210920022802202203410420031b210a2002290224420020031b2208422088a7220b41014b0d0141002103200b0e020302030b41e5aac3002103411121014100210502400240024020040e03000201000b200241346a410136020020024201370224200241a4c5c60036022020024104360204200241c8abc30036020020022002360230200241206a419ca8c700103a000b41f6aac3002103410e2101410121050b200041123a0001200041086a2001360200200041046a2003360200200041026a20053a00000c050b41002103200b2104034020032004410176220520036a2206200a20064102746a28020020014b1b2103200420056b220441014b0d000b0b200a20034102746a22042802002001470d002003200b4f0d022004200441046a2003417f73200b6a41027410a2051a200842ffffffff0f832108200b417f6a210b410021090b200241206a41186a22064200370300200241206a41106a220c4200370300200241206a41086a22044200370300200242003703204196adc300ad4280808080900184100c2205290000210d200241c0006a41086a2203200541086a2900003703002002200d37034020051023200420032903003703002002200229034037032041b0dfc300ad4280808080a00184100c2205290000210d2003200541086a2900003703002002200d3703402005102320072002290340370000200741086a2003290300370000200241086a2004290300370300200241106a200c290300370300200241186a2006290300370300200220022903203703002002412036022420022002360220200a200b200241206a10d5020240200842ffffffff0383500d00200a10230b2009450d0020004192023b0001200041086a410e360200200041046a41f6aac3003602000c020b200241206a200110d203200235022842208620022802202203ad84101102402002280224450d00200310230b200241206a200110ca03200235022842208620022802202203ad84101102402002280224450d00200310230b200241206a2001108d03200235022842208620022802202203ad84101102402002280224450d00200310230b410421030c020b2003200b103b000b410321030b200020033a0000200241d0006a24000bf90403027f017e057f230041d0006b220224004196adc300ad4280808080900184100c22032900002104200241086a200341086a2900003703002002200437030020031023419fadc300ad4280808080f00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bf90403027f017e057f230041d0006b220224004196adc300ad4280808080900184100c22032900002104200241086a200341086a29000037030020022004370300200310234184e2c300ad4280808080d00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b940201037f230041d0006b220224002002200136020420022000360200200241086a2001ad4220862000ad841010108b0102400240200228020822010d00410221000c010b200228020c210302400240200241106a280200450d0020012d0000220441014b0d0041002100024020040e020200020b410121000c010b20024100360220200242013703182002410a36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c20024180c5c6003602382002200241286a360248200241346a4184a5c200200241386a10311a2002350220422086200235021884100a0240200228021c450d00200228021810230b410221000b2003450d00200110230b200241d0006a240020000bda0905047f017e0b7f027e027f230041e0016b220224002002412036021c20022001360218200241206a2001ad42808080808004841010108b010240024002400240200228022022030d00200041003602000c010b200228022421042002200241286a28020036023420022003360230200241106a200241306a1088010240024020022802100d00200228021422052002280234410c6e2201200120054b1bad420c7e2206422088a70d032006a72201417f4c0d030240024020010d00410421070c010b200110212207450d050b200241003602402002200736023820022001410c6e36023c02400240024002402005450d0041002108410021090340200241086a200241306a10880120022802080d04200228020c220a2002280234220141246e220b200b200a4b1bad42247e2206422088a70d082006a7220b417f4c0d0802400240200b0d004104210c0c010b200b1021220c450d0a0b200241003602502002200c3602482002200b41246e36024c0240200a450d004100210d4100210e034020014104490d05200e41016a210e20022001417c6a220f36023420022002280230221041046a3602302010280000211141002101200241003a00d8010340200f2001460d05200241b8016a20016a201020016a220b41046a2d00003a00002002200b41056a3602302002200141016a220b3a00d801200b2101200b4120470d000b200241f8006a41086a200241b8016a41086a2903002206370300200241f8006a41106a200241b8016a41106a2903002212370300200241f8006a41186a200241b8016a41186a2903002213370300200241d8006a41086a22102006370300200241d8006a41106a22142012370300200241d8006a41186a221520133703002002200f200b6b2201360234200220022903b8012206370378200220063703580240200d200228024c470d00200241c8006a200d410110a2012002280248210c2002280250210d0b200c200d41246c6a220b2011360200200b2002290358370204200b410c6a2010290300370200200b41146a2014290300370200200b411c6a20152903003702002002200d41016a220d360250200e200a470d000b0b200c450d04200941016a2109200229024c210602402008200228023c470d00200241386a2008410110950120022802382107200228024021080b20072008410c6c6a220120063702042001200c3602002002200841016a220836024020092005470d000b0b2007450d032000200229023c370204200020073602000c040b20024100360234200141ff0171450d00200241003a00d8010b200228024c2201450d00200141246c450d00200c10230b02402008450d002008410c6c210b2007210103400240200141046a280200220f450d00200f41246c450d00200128020010230b2001410c6a2101200b41746a220b0d000b0b200228023c2201450d002001410c6c450d00200710230b200241003602a00120024201370398012002410a36027c2002200241186a360278200220024198016a360258200241cc016a4101360200200242013702bc0120024180c5c6003602b8012002200241f8006a3602c801200241d8006a4184a5c200200241b8016a10311a20023502a00142208620023502980184100a0240200228029c01450d0020022802980110230b200041003602000b2004450d00200310230b200241e0016a24000f0b1032000b1033000bfb0401097f230041106b22022400024002400240024020002802082203410c6c41046a2204417f4c0d00200028020021050240024020040d00410121000c010b200410212200450d020b20024100360208200220043602042002200036020020032002106102402003450d0020052003410c6c6a2106034020052802002104200528020822032002106102402003450d002004200341246c6a2107200228020421002002280208210303402004280200210802400240200020036b4104490d00200228020021092000210a0c010b200341046a220a2003490d0720004101742209200a2009200a4b1b220a4100480d070240024020000d000240200a0d00410121090c020b200a102122090d010c0a0b200228020021092000200a460d0020092000200a10252209450d090b2002200a360204200220093602000b200920036a20083600002002200341046a220836020802400240200a20086b4120490d00200341246a2103200a21000c010b200841206a22032008490d07200a41017422002003200020034b1b22004100480d0702400240200a0d00024020000d00410121090c020b200010212209450d0a0c010b200a2000460d002009200a200010252209450d090b20022000360204200220093602000b200920086a220a200441046a290000370000200a41186a2004411c6a290000370000200a41106a200441146a290000370000200a41086a2004410c6a29000037000020022003360208200441246a22042007470d000b0b2005410c6a22052006470d000b0b200228020421032001290200200235020842208620022802002204ad84100e02402003450d00200410230b200241106a24000f0b1032000b1033000b102c000b102a000bd00a04057f017e0b7f027e230041c0026b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b0102400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a1088010240024020022802000d0002400240024002402002280204220520022802242206412c6e2201200120054b1bad422c7e2207422088a70d002007a72201417f4c0d000240024020010d00410421080c010b200110212208450d020b41002109200241003602302002200836022820022001412c6e36022c02402005450d004100210a034020064104490d0520022006417c6a220b36022420022002280220220c41046a2201360220200b450d05200c280000210d20022006417b6a220b3602242002200141016a36022020012d0000220141014b0d054102210e0240024020010e020100010b41002101200241003a00b8022006417b6a210f417a210b02400240024002400340200f2001460d0120024198026a20016a200c20016a220e41056a2d00003a000020022006200b6a3602242002200e41066a3602202002200141016a220e3a00b802200b417f6a210b200e2101200e4120470d000b200241f8016a41186a221020024198026a41186a290300370300200241f8016a41106a221120024198026a41106a290300370300200241f8016a41086a221220024198026a41086a29030037030020022002290398023703f801200f200e460d0920022006200b6a220b3602242002200c200e6a220141066a220f360220200141056a2d0000220c41014b0d09200c0e020201020b200141ff0171450d08200241003a00b8020c080b200b4104490d0720022006200e6b41766a220b36022420022001410a6a360220200f280000210f4101210e0c010b4100210e0b200241b8016a41086a2012290300220737030020024198016a41186a201029030037030020024198016a41106a201129030037030020024198016a41086a2007370300200220022903f80122073703b80120022007370398010b200a41016a210a200241d8006a41086a20024198016a41086a2903002207370300200241d8006a41106a20024198016a41106a2903002213370300200241d8006a41186a20024198016a41186a2903002214370300200241386a41086a22062007370300200241386a41106a220c2013370300200241386a41186a22102014370300200220022903980122073703582002200737033802402009200228022c470d00200241286a2009410110a60120022802282108200228023021090b20082009412c6c6a2201200d3602002001200229033837020420102903002107200c290300211320062903002114200141286a200f360200200141246a200e3602002001410c6a2014370200200141146a20133702002001411c6a20073702002002200941016a2209360230200b2106200a2005470d000b0b2008450d042000200229022c370204200020083602000c050b1032000b1033000b200241b8016a41186a200241d8016a41186a290300370300200241b8016a41106a200241d8016a41106a2903003703000b200228022c2201450d002001412c6c450d00200810230b2002410036028002200242013703f8012002410a3602dc012002200241086a3602d8012002200241f8016a3602b801200241ac026a41013602002002420137029c0220024180c5c600360298022002200241d8016a3602a802200241b8016a4184a5c20020024198026a10311a20023502800242208620023502f80184100a024020022802fc01450d0020022802f80110230b200041003602000b2004450d00200310230b200241c0026a24000bf90403027f017e057f230041d0006b220224004196adc300ad4280808080900184100c22032900002104200241086a200341086a290000370300200220043703002003102341e0e1c300ad4280808080b00184100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bc89001070c7f017e087f027e0c7f017e0b7f23004190106b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e06000102030405000b2003418c0d6a4101360200200342013702fc0c200341a4c5c6003602f80c2003410436028c0a200341cccec6003602880a2003200341880a6a3602880d200341f80c6a419ca8c700103a000b200341d80c6a41086a200241106a290200370300200341d80c6a41106a200241186a290200370300200341d80c6a41186a200241206a2802003602002003200241086a2902003703d80c200141046a28020022042001410c6a280200220541b0026c6a2106200141086a2802002107200421012005450d28200241046a2802002108200341f80c6a41047221090240024002400240024020022d000041ff01714101470d004100210220042101034020012802002105200341880a6a200141046a220a41ac0210a1051a200341f80c6a200a41ac0210a1051a20054116460d2c200341d8076a200341f80c6a41ac0210a1051a200341a8056a200341d8076a41ac0210a1051a200341f8026a200341a8056a41ac0210a1051a200341c8006a200341f8026a41ac0210a1051a200320053602f80c2009200341c8006a41ac0210a1051a2003200836028c0a200341013a00880a200341d8076a200341f80c6a200341880a6a10cf0220032802d8074101460d02200241016a2102200141b0026a22012006470d000c2d0b0b024020022d0001220141ff01710d004100210220042101034020012802002105200341880a6a200141046a220a41ac0210a1051a200341f80c6a200a41ac0210a1051a20054116460d2b200341d8076a200341f80c6a41ac0210a1051a200341a8056a200341d8076a41ac0210a1051a200341f8026a200341a8056a41ac0210a1051a200341c8006a200341f8026a41ac0210a1051a200320053602f80c2009200341c8006a41ac0210a1051a200341003b01880a200341d8076a200341f80c6a200341880a6a10cf0220032802d8074101460d03200241016a2102200141b0026a22012006470d000c2d0b0b200241026a2f0100210b200341880a6a4102722105200341b80c6a410672210c200141ff0171210d410021022004210103402001280200210a200341880a6a200141046a220e41ac0210a1051a200341f80c6a200e41ac0210a1051a0240200a4116470d00200141b0026a21010c2f0b200341d8076a200341f80c6a41ac0210a1051a200341a8056a200341d8076a41ac0210a1051a200341f8026a200341a8056a41ac0210a1051a200341c8006a200341f8026a41ac0210a1051a2003200a3602f80c2009200341c8006a41ac0210a1051a4102210a0240200d4102460d00200c20032903d80c370100200c41086a200341d80c6a41086a290300370100200c41106a200341d80c6a41106a290300370100200c41186a200341d80c6a41186a2f01003b0100200320083601ba0c2003200b3b01b80c4101210a0b200520032903b80c370000200541086a200341b80c6a41086a290300370000200541106a200341b80c6a41106a290300370000200541186a200341b80c6a41186a2903003700002003200a3a00890a200341003a00880a200341d8076a200341f80c6a200341880a6a10cf0220032802d8074101460d03200241016a2102200141b0026a22012006460d2c0c000b0b200141b0026a21010c020b200141b0026a21010c010b200141b0026a21010b200341980a6a200341d8076a41146a2802002205360200200341880a6a41086a200341d8076a410c6a290200220f370300200320032902dc073703880a200341f80c6a41086a2002360200200341f80c6a410c6a200f370200200341f80c6a41146a2005360200200341003a00fc0c200341093a00f80c200341f80c6a10e001024020062001460d0003402001109e032006200141b0026a2201470d000b0b02402007450d00200741b0026c450d00200410230b410021010c2a0b41022105200141046a280200210620022d00000d0520022d00014101470d052002411a6a290100210f200241196a2d00002105200241186a2d00002109200241166a2f0100210a200241156a2d00002108200241146a2d0000210c200241126a2f0100210e200241116a2d00002104200241106a2d000021072002410e6a2f0100210d2002410d6a2d0000210b2002410c6a2d000021102002410a6a2f01002111200241096a2d00002112200241086a2d00002113200241066a2f01002114200241056a2d00002115200241046a2d00002116200241026a2f01002102200141026a2f01002117411210212201450d03200141086a41002900d69546370000200141002900ce954637000020014112413010252201450d042001200f370028200120053a0027200120093a00262001200a3b0024200120083a00232001200c3a00222001200e3b0020200120043a001f200120073a001e2001200d3b001c2001200b3a001b200120103a001a200120113b0018200120123a0017200120133a0016200120143b0014200120153a0013200120163a0012200120023b00102001413041e00010252202450d04200220173b00302002ad4280808080a0068410182201290000210f200141086a2900002118200141106a2900002119200341b80c6a41186a2205200141186a290000370300200341b80c6a41106a22092019370300200341b80c6a41086a220a20183703002003200f3703b80c2001102320021023200341093a00980d2003410a3a00980d2003410b3a00980d200320032f01b80c3b01f80c200320032801ba0c3601fa0c200320032f01be0c3b01fe0c2003200a2f01003b01800d200320032d00c20c3a00820d2003410c3a00980d200320032d00c30c3a00830d2003410d3a00980d200320032d00c40c3a00840d2003410e3a00980d200320032d00c50c3a00850d2003410f3a00980d200320032d00c60c3a00860d200341103a00980d200320032d00c70c3a00870d200341113a00980d200320092d00003a00880d200320032d00c90c3a00890d200341123a00980d200341133a00980d200320032d00ca0c3a008a0d200341143a00980d200320032d00cb0c3a008b0d200341153a00980d200320032d00cc0c3a008c0d200341163a00980d200320032d00cd0c3a008d0d200341173a00980d200320032d00ce0c3a008e0d200341183a00980d200320032d00cf0c3a008f0d200341193a00980d200320052d00003a00900d200320032d00d10c3a00910d2003411a3a00980d2003411b3a00980d200320032d00d20c3a00920d2003411c3a00980d200320032d00d30c3a00930d2003411d3a00980d200320032d00d40c3a00940d2003411e3a00980d200320032d00d50c3a00950d2003411f3a00980d200320032d00d60c3a00960d200341203a00980d200320032d00d70c3a00970d200341a8056a41186a220520032903900d370300200341a8056a41106a220120032903880d370300200341a8056a41086a220220032903800d370300200320032903f80c3703a805200341d8076a41186a22092005290300370300200341d8076a41106a22052001290300370300200341d8076a41086a220a2002290300370300200320032903a8053703d807200341f80c6a200641b00210a1051a200341880a6a410a6a200a290300370100200341880a6a41126a2005290300370100200341880a6a411a6a200929030037010020034180023b01880a200320032903d80737018a0a200341a8056a200341f80c6a200341880a6a10cf020240024020032802a8054101470d0020032802ac054102470d010b20061023410021010c240b200341a8056a41146a28020021092001280200210a200341a8056a410c6a2802002105200228020021022006102341002101200541ff01714104460d23200541807e7121010c220b200141086a2802002109200141046a28020021042001411c6a280200210641022105024020022d00000d0020022d00014101470d002001410c6a2802002105200141186a280200211a200141146a280200211b200141106a280200211c200141026a2f0100210c200241196a2d00002101200241186a2d0000210a200241166a2f01002108200241156a2d0000210e200241146a2d00002107200241126a2f0100210d200241116a2d0000210b200241106a2d000021102002410e6a2f010021112002410d6a2d000021122002410c6a2d000021132002410a6a2f01002114200241096a2d00002115200241086a2d00002116200241066a2f01002117200241056a2d0000211d200241046a2d0000211e200241026a2f0100211f20032002411a6a2901003703f00c200320013a00ef0c2003200a3a00ee0c200320083b01ec0c2003200e3a00eb0c200320073a00ea0c2003200d3b01e80c2003200b3a00e70c200320103a00e60c200320113b01e40c200320123a00e30c200320133a00e20c200320143b01e00c200320153a00df0c200320163a00de0c200320173b01dc0c2003201d3a00db0c2003201e3a00da0c2003201f3b01d80c0240200c41ffff03710d0041de95c6002101410d210a410021080c1f0b024020050d0041eb95c60021014111210a410321080c1f0b0240200541e3004d0d0041fc95c60021014112210a410421080c1f0b200320053602e007200320093602dc07200320043602d807200341f80c6a41186a200341d80c6a41186a290300370300200341f80c6a41106a200341d80c6a41106a290300370300200341f80c6a41086a2201200341d80c6a41086a290300370300200320032903d80c3703f80c200341880a6a200341d8076a200341f80c6a10e40420032802880a4101460d06200341880a6a41086a2802002120200328028c0a21042001200341880a6a410c6a2802003602002003200c3b01840d200320043602fc0c200341ce95c6003602f80c200341b80c6a200341f80c6a10d603200341083a00980d2003410b3a00980d2003410c3a00980d200320032f01b80c3b01f80c200320032801ba0c3601fa0c200320032d00be0c3a00fe0c200320032800bf0c3600ff0c200320032d00c30c3a00830d2003410d3a00980d200320032d00c40c3a00840d2003410e3a00980d200320032d00c50c3a00850d2003410f3a00980d200320032d00c60c3a00860d200320032d00c70c3a00870d200341103a00980d200341113a00980d200320032d00c80c3a00880d200341123a00980d200320032d00c90c3a00890d200341133a00980d200320032d00ca0c3a008a0d200341143a00980d200320032d00cb0c3a008b0d200341153a00980d200320032d00cc0c3a008c0d200341163a00980d200320032d00cd0c3a008d0d200341173a00980d200320032d00ce0c3a008e0d200320032d00cf0c3a008f0d200341183a00980d200341193a00980d200320032d00d00c3a00900d2003411a3a00980d200320032d00d10c3a00910d2003411b3a00980d200320032d00d20c3a00920d2003411c3a00980d200320032d00d30c3a00930d2003411d3a00980d200320032d00d40c3a00940d2003411e3a00980d200320032d00d50c3a00950d2003411f3a00980d200320032d00d60c3a00960d200341203a00980d200320032d00d70c3a00970d200341a8056a41186a220120032903900d370300200341a8056a41106a220220032903880d370300200341a8056a41086a220520032903800d370300200320032903f80c3703a805200341c8006a41186a2001290300370300200341c8006a41106a2002290300370300200341c8006a41086a2005290300370300200320032903a805370348200341003602800d200342013703f80c2006200341f80c6a10dd0220032802fc0c210220033502800d42208620032802f80c2205ad8410182201290018210f20012d0017210720012d0016210d20012f0014210b20012d0013211020012d0012211120012f0010211220012d000f211320012d000e211420012f000c211520012d000b211620012d000a211720012f0008211d20012d0007211e20012d0006211f20012f0004212120012d0003212220012d0002212320012f000021242001102302402002450d00200510230b2003200f3703d00c200320073a00cf0c2003200d3a00ce0c2003200b3b01cc0c200320103a00cb0c200320113a00ca0c200320123b01c80c200320133a00c70c200320143a00c60c200320153b01c40c200320163a00c30c200320173a00c20c2003201d3b01c00c2003201e3a00bf0c2003201f3a00be0c200320213b01bc0c200320223a00bb0c200320233a00ba0c200320243b01b80c200341880a6a200341c8006a200341b80c6a10e504200341f80c6a20032802880a220120032802900a10e604200341b80c6a41086a2202200341f80c6a41086a290300370300200341b80c6a41106a2205200341f80c6a41106a290300370300200341a8056a41086a220a200341a00d6a290300370300200341a8056a41106a2208200341a80d6a290300370300200341a8056a41186a2225200341b00d6a290300370300200341a8056a41206a200341b80d6a290300370300200320032903f80c3703b80c2003200341f80c6a41206a2903003703a80520032802940d210e024020032802900d2209450d00200341c80f6a41106a2005290300370300200341c80f6a41086a2002290300370300200341f8026a41086a200a290300370300200341f8026a41106a2008290300370300200341f8026a41186a2025290300370300200341f8026a41206a200341a8056a41206a290300370300200320032903b80c3703c80f200320032903a8053703f8020b0240200328028c0a450d00200110230b02400240024020090d0041012109201c4101470d01418e96c60021014113210e41032105410b21084113210a0c020b200341a40a6a200e360200200341880a6a41206a20032903f802370300200341880a6a41106a200341c80f6a41106a290300370300200341880a6a41086a200341c80f6a41086a290300370300200341b00a6a200341f8026a41086a290300370300200341b80a6a200341f8026a41106a290300370300200341c00a6a200341f8026a41186a290300370300200341c80a6a200341f8026a41206a290300370300200320032903c80f3703880a200320093602a00a0240201c4101460d0041a196c6002101410b210a410921080c1c0b41ac96c6002101410e210a410a210820032802980a201b470d1b2003419c0a6a280200201a470d1b024002400240024020032802a80a220841014b0d004100210120080e020201020b410021012008210203402002410176220520016a220a20012009200a4105746a200341d80c6a412010a3054101481b2101200220056b220241014b0d000b0b200920014105746a200341d80c6a412010a3052202450d012002411f7620016a21010b200c417f6a41ffff0371200841ffff03714b0d1b0c190b200c41ffff0371200841ffff03714d0d1841ba96c6002101410f210a410121080c1b0b02400240200c41ffff037141014b0d00200341f80c6a200641b00210a1051a200341920a6a200341c8006a41086a2903003701002003419a0a6a200341c8006a41106a290300370100200341a20a6a200341e0006a29030037010020034180023b01880a2003200329034837018a0a200341d8076a200341f80c6a200341880a6a10cf02024020032802d8074101460d0041002109410421050c030b4100210920032802dc074102470d01410421050c020b200341186a200cad42ffff038342004280e8eda1ba01420010a6052003200329031822194280f092cbdd087c22183703d8072003200341186a41086a2903002018201954ad7c22193703e0072003200341d80c6a3602b80c2003200341d80c6a3602a8052003200341a8056a3602800d2003200341b80c6a3602fc0c2003200341d8076a3602f80c200341880a6a200341d80c6a200341f80c6a10fd020240024020032802880a4101470d00200341940a6a280200210a200341880a6a41086a280200210120032d008f0a210c20032d008e0a210820032d008d0a210e20032d008c0a21050c010b410421050240200341880a6a41086a2903004201520d00200341880a6a41106a290300212620032802a8052101200341b00d6a200341880a6a41186a290300370300200341a80d6a2026370300200341f80c6a41086a41003a0000200341810d6a2001290000370000200341890d6a200141086a290000370000200341910d6a200141106a290000370000200341990d6a200141186a290000370000200341023a00f80c200341f80c6a10e0010b0b0240200541ff01714104460d00410121090c020b200341880a6a41186a4200370300200341880a6a41106a22054200370300200341880a6a41086a22014200370300200342003703880a41e4dec400ad4280808080e00084100c220229000021262001200241086a290000370300200320263703880a2002102341f3dec400ad4280808080e00084100c22022900002126200341f80c6a41086a2209200241086a290000370300200320263703f80c20021023200520032903f80c2226370300200341a8056a41086a2001290300370300200341a8056a41106a2026370300200341a8056a41186a2009290300370300200320032903880a3703a805200341106a200341a8056a412010cd012003280214210220032802102105200341086a41d7ddc400411010cd01200328020c21092003280208210a20032f01d80c210820032d00da0c210c20032d00db0c210e20032f01dc0c211c20032d00de0c211b20032d00df0c211a20032f01e00c212520032d00e20c212720032d00e30c212820032f01e40c212920032d00e60c212a20032d00e70c212b20032f01e80c212c20032d00ea0c212d20032d00eb0c212e20032f01ec0c212f20032d00ee0c213020032d00ef0c213120032903f00c2126412010212201450d06200120032903d80c370000200141186a200341d80c6a41186a290300370000200141106a200341d80c6a41106a290300370000200141086a200341d80c6a41086a2903003700002003418c0d6a20094100200a1b360200200341b40d6a2026370200200341b30d6a20313a0000200341b20d6a20303a0000200341b00d6a202f3b0100200341af0d6a202e3a0000200341ae0d6a202d3a0000200341ac0d6a202c3b0100200341ab0d6a202b3a0000200341aa0d6a202a3a0000200341a80d6a20293b0100200341a70d6a20283a0000200341a60d6a20273a0000200341a40d6a20253b0100200341a30d6a201a3a0000200341a20d6a201b3a0000200341a00d6a201c3b01002003419f0d6a200e3a00002003419e0d6a200c3a0000200320193703800d200320183703f80c20032002410020051b3602880d200320083b019c0d200341940d6a428180808010370200200320013602900d2003200f3703d00c200320073a00cf0c2003200d3a00ce0c2003200b3b01cc0c200320103a00cb0c200320113a00ca0c200320123b01c80c200320133a00c70c200320143a00c60c200320153b01c40c200320163a00c30c200320173a00c20c2003201d3b01c00c2003201e3a00bf0c2003201f3a00be0c200320213b01bc0c200320223a00bb0c200320233a00ba0c200320243b01b80c200341880a6a200341c8006a200341b80c6a10e50420032802880a2101200320032802900a3602dc07200320013602d807200341f80c6a200341d8076a10e2040240200328028c0a450d00200110230b024020032802940d41ffffff3f71450d0020032802900d10230b2003419d0d6a2003290348370000200341850d6a200341d80c6a41086a2903003700002003418d0d6a200341d80c6a41106a290300370000200341950d6a200341d80c6a41186a290300370000200341a50d6a200341c8006a41086a290300370000200341ad0d6a200341c8006a41106a290300370000200341b50d6a200341c8006a41186a290300370000200341023a00fc0c200341093a00f80c200320032903d80c3700fd0c200341f80c6a10e0010240202041ffffff3f71450d00200410230b200610b4020c190b200341ec076a280200210a200341d8076a41106a2802002101200341d8076a41086a2802002102200341e4076a2802002205411876210c200541107621082005410876210e0b0240202041ffffff3f71450d00200410230b20090d1b0c1c0b200610b40220061023410021084100210e0c1e0b200141286a2802002105200141246a280200210c410221060240024020022d00000d0020022d00014101470d00200141196a290000210f200141186a2d0000211f200141176a2d0000211c200141156a2f0000211b200141146a2d0000211a200141136a2d00002121200141116a2f00002122200141106a2d000021232001410f6a2d000021242001410d6a2f000021202001410c6a2d000021252001410b6a2d00002127200141096a2f00002128200141086a2d00002129200141076a2d0000212a200141056a2f0000212b200141046a2d0000212c200141036a2d0000212d2001412c6a2802002106200141386a2802002131200141346a2802002130200141306a280200212f200141226a2f0100210a20012f0001212e200241196a2d00002101200241186a2d00002109200241166a2f01002108200241156a2d0000210e200241146a2d00002104200241126a2f01002107200241116a2d0000210d200241106a2d0000210b2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d0000211d200241026a2f0100211e20032002411a6a290100370360200320013a005f200320093a005e200320083b015c2003200e3a005b200320043a005a200320073b01582003200d3a00572003200b3a0056200320103b0154200320113a0053200320123a0052200320133b0150200320143a004f200320153a004e200320163b014c200320173a004b2003201d3a004a2003201e3b0148200a450d072006450d08200641e4004f0d09200320063602e007200320053602dc072003200c3602d807200341f80c6a41186a200341c8006a41186a290300370300200341f80c6a41106a2202200341c8006a41106a290300370300200341f80c6a41086a2201200341c8006a41086a290300370300200320032903483703f80c200341880a6a200341d8076a200341f80c6a10e40420032802880a4101460d01200341880a6a41086a280200210e200328028c0a210c2001200341880a6a410c6a2802003602002003200a3b01840d2003200c3602fc0c200341ce95c6003602f80c200341b80c6a200341f80c6a10d603200341083a00980d2003410b3a00980d2003410c3a00980d200320032f01b80c3b01f80c200320032801ba0c3601fa0c200320032d00be0c3a00fe0c200320032800bf0c3600ff0c200320032d00c30c3a00830d2003410d3a00980d200320032d00c40c3a00840d2003410e3a00980d200320032d00c50c3a00850d2003410f3a00980d200320032d00c60c3a00860d200320032d00c70c3a00870d200341103a00980d200341113a00980d200320032d00c80c3a00880d200341123a00980d200320032d00c90c3a00890d200341133a00980d200320032d00ca0c3a008a0d200341143a00980d200320032d00cb0c3a008b0d200341153a00980d200320032d00cc0c3a008c0d200341163a00980d200320032d00cd0c3a008d0d200341173a00980d200320032d00ce0c3a008e0d200320032d00cf0c3a008f0d200341183a00980d200341193a00980d200320032d00d00c3a00900d2003411a3a00980d200320032d00d10c3a00910d2003411b3a00980d200320032d00d20c3a00920d2003411c3a00980d200320032d00d30c3a00930d2003411d3a00980d200320032d00d40c3a00940d2003411e3a00980d200320032d00d50c3a00950d2003411f3a00980d200320032d00d60c3a00960d200320032d00d70c3a00970d200341203a00980d200341a8056a41186a220620032903900d370300200341a8056a41106a220520032903880d370300200341a8056a41086a220920032903800d370300200320032903f80c3703a805200341f8026a41186a2006290300370300200341f8026a41106a2005290300370300200341f8026a41086a2009290300370300200320032903a8053703f8022003200f3703d00c2003201f3a00cf0c2003201c3a00ce0c2003201b3b01cc0c2003201a3a00cb0c200320213a00ca0c200320223b01c80c200320233a00c70c200320243a00c60c200320203b01c40c200320253a00c30c200320273a00c20c200320283b01c00c200320293a00bf0c2003202a3a00be0c2003202b3b01bc0c2003202c3a00bb0c2003202d3a00ba0c2003202e3b01b80c200341880a6a200341f8026a200341b80c6a10e504200341f80c6a20032802880a220820032802900a10e604200341b80c6a41086a2001290300370300200341b80c6a41106a20022903003703002009200341a00d6a2903003703002005200341a80d6a2903003703002006200341b00d6a290300370300200341a8056a41206a2201200341b80d6a290300370300200320032903f80c3703b80c2003200341f80c6a41206a2903003703a80520032802940d2105024020032802900d2206450d00200341d80c6a41106a200341b80c6a41106a290300370300200341d80c6a41086a200341b80c6a41086a290300370300200341d8076a41086a200341a8056a41086a290300370300200341d8076a41106a200341a8056a41106a290300370300200341d8076a41186a200341a8056a41186a290300370300200341d8076a41206a2001290300370300200320032903b80c3703d80c200320032903a8053703d8070b0240200328028c0a450d00200810230b0240024020060d0041032106200a41014b0d0141c996c60021014111210241132108410221090c150b200341a40a6a2005360200200341880a6a41206a20032903d807370300200341880a6a41106a200341d80c6a41106a290300370300200341880a6a41086a200341d80c6a41086a290300370300200341b00a6a200341d8076a41086a290300370300200341b80a6a200341d8076a41106a290300370300200341c00a6a200341d8076a41186a290300370300200341c80a6a200341d8076a41206a290300370300200320032903d80c3703880a200320063602a00a0240202f4101460d0041a196c6002101410b2102410921090c140b41ac96c6002101410e2102410a210920032802980a2030470d132003419c0a6a2802002031470d13024020032802a80a2208200a490d0041c996c600210141112102410221090c140b410021010240200841014b0d00024020080e020011000b200341f80c6a41186a200341c8006a41186a290300370300200341f80c6a41106a200341c8006a41106a290300370300200341f80c6a41086a200341c8006a41086a290300370300200320032903483703f80c41002109200341f80c6a21020c110b2008210203402002410176220920016a220a20012006200a4105746a200341c8006a412010a3054101481b2101200220096b220241014b0d000c100b0b0240202f4101470d00418e96c600210141132108410b2109411321020c140b200341386a200aad42004280e8eda1ba01420010a6052003200329033822194280f092cbdd087c22183703a8052003200341386a41086a2903002018201954ad7c22193703b0052003200341c8006a3602c80f2003200341c8006a3602b80c2003200341b80c6a3602800d2003200341c80f6a3602fc0c2003200341a8056a3602f80c200341880a6a200341c8006a200341f80c6a10fd020240024020032802880a4101470d00200341940a6a2802002102200341880a6a41086a280200210120032d008f0a210a20032d008e0a210920032d008d0a210820032d008c0a21060c010b410421060240200341880a6a41086a2903004201520d00200341880a6a41106a290300212620032802b80c2101200341b00d6a200341880a6a41186a290300370300200341a80d6a2026370300200341f80c6a41086a41003a0000200341810d6a2001290000370000200341890d6a200141086a290000370000200341910d6a200141106a290000370000200341990d6a200141186a290000370000200341023a00f80c200341f80c6a10e0010b0b200641ff01714104470d13200341880a6a41186a4200370300200341880a6a41106a22064200370300200341880a6a41086a22014200370300200342003703880a41e4dec400ad4280808080e00084100c220229000021262001200241086a290000370300200320263703880a2002102341f3dec400ad4280808080e00084100c22022900002126200341f80c6a41086a2205200241086a290000370300200320263703f80c20021023200620032903f80c2226370300200341a8056a41086a2001290300370300200341a8056a41106a2026370300200341a8056a41186a2005290300370300200320032903880a3703a805200341306a200341a8056a412010cd012003280234210220032802302106200341286a41d7ddc400411010cd01200328022c21052003280228210920032f0148210a20032d004a210820032d004b210420032f014c210720032d004e210d20032d004f210b20032f0150211020032d0052211120032d0053211220032f0154211320032d0056211420032d0057211520032f0158211620032d005a211720032d005b211d20032f015c211e20032d005e212f20032d005f213020032903602126412010212201450d0420012003290348370000200141186a200341c8006a41186a290300370000200141106a200341c8006a41106a290300370000200141086a200341c8006a41086a2903003700002003418c0d6a2005410020091b360200200341b40d6a2026370200200341b30d6a20303a0000200341b20d6a202f3a0000200341b00d6a201e3b0100200341af0d6a201d3a0000200341ae0d6a20173a0000200341ac0d6a20163b0100200341ab0d6a20153a0000200341aa0d6a20143a0000200341a80d6a20133b0100200341a70d6a20123a0000200341a60d6a20113a0000200341a40d6a20103b0100200341a30d6a200b3a0000200341a20d6a200d3a0000200341a00d6a20073b01002003419f0d6a20043a00002003419e0d6a20083a0000200320193703800d200320183703f80c20032002410020061b3602880d2003200a3b019c0d200341940d6a428180808010370200200320013602900d2003200f3703d00c2003201f3a00cf0c2003201c3a00ce0c2003201b3b01cc0c2003201a3a00cb0c200320213a00ca0c200320223b01c80c200320233a00c70c200320243a00c60c200320203b01c40c200320253a00c30c200320273a00c20c200320283b01c00c200320293a00bf0c2003202a3a00be0c2003202b3b01bc0c2003202c3a00bb0c2003202d3a00ba0c2003202e3b01b80c200341880a6a200341f8026a200341b80c6a10e50420032802880a2101200320032802900a3602ac05200320013602a805200341f80c6a200341a8056a10e2040240200328028c0a450d00200110230b024020032802940d41ffffff3f71450d0020032802900d10230b2003419d0d6a20032903f802370000200341850d6a200341c8006a41086a2903003700002003418d0d6a200341c8006a41106a290300370000200341950d6a200341c8006a41186a290300370000200341a50d6a200341f8026a41086a290300370000200341ad0d6a200341f8026a41106a290300370000200341b50d6a200341f8026a41186a290300370000200341023a00fc0c200341093a00f80c200320032903483700fd0c200341f80c6a10e0010c100b41002109410021080c0c0b41002101200328028c0a220641ff01714104460d272006411876210a2006411076210920064108762108200341940a6a2802002102200341880a6a41086a28020021010c120b2001412c6a2802002109200141286a2802002105200141246a2802002108200141346a280200210e200141306a280200210c200141226a2f0100210a200341d80c6a41186a200141196a290000370300200341d80c6a41106a200141116a290000370300200341d80c6a41086a200141096a290000370300200320012900013703d80c410221064100210120022d00000d0720022d00014101470d07200241196a2d00002106200241186a2d00002104200241166a2f01002107200241156a2d0000210d200241146a2d0000210b200241126a2f01002110200241116a2d00002111200241106a2d000021122002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d00002117200241086a2d0000211d200241066a2f0100211e200241056a2d0000211f200241046a2d0000211c200241026a2f0100211b20032002411a6a290100370360200320063a005f200320043a005e200320073b015c2003200d3a005b2003200b3a005a200320103b0158200320113a0057200320123a0056200320133b0154200320143a0053200320153a0052200320163b0150200320173a004f2003201d3a004e2003201e3b014c2003201f3a004b2003201c3a004a2003201b3b014841132102410321060240200a41ffff03710d0041de95c600210a410d21090c090b024020090d004180800c210141eb95c600210a411121090c090b0240200941e3004d0d0041808010210141fc95c600210a411221090c090b200320093602e007200320053602dc07200320083602d807200341f80c6a41186a200341c8006a41186a290300370300200341f80c6a41106a2202200341c8006a41106a290300370300200341f80c6a41086a2201200341c8006a41086a290300370300200320032903483703f80c200341880a6a200341d8076a200341f80c6a10e404024020032802880a4101460d00200341880a6a41086a2802002104200328028c0a21082001200341880a6a410c6a2802003602002003200a3b01840d200320083602fc0c200341ce95c6003602f80c200341b80c6a200341f80c6a10d603200341083a00980d2003410b3a00980d2003410c3a00980d200320032f01b80c3b01f80c200320032801ba0c3601fa0c200320032d00be0c3a00fe0c200320032800bf0c3600ff0c200320032d00c30c3a00830d2003410d3a00980d200320032d00c40c3a00840d2003410e3a00980d200320032d00c50c3a00850d2003410f3a00980d200320032d00c60c3a00860d200320032d00c70c3a00870d200341103a00980d200341113a00980d200320032d00c80c3a00880d200341123a00980d200320032d00c90c3a00890d200341133a00980d200320032d00ca0c3a008a0d200341143a00980d200320032d00cb0c3a008b0d200341153a00980d200320032d00cc0c3a008c0d200341163a00980d200320032d00cd0c3a008d0d200341173a00980d200320032d00ce0c3a008e0d200320032d00cf0c3a008f0d200341183a00980d200341193a00980d200320032d00d00c3a00900d2003411a3a00980d200320032d00d10c3a00910d2003411b3a00980d200320032d00d20c3a00920d2003411c3a00980d200320032d00d30c3a00930d2003411d3a00980d200320032d00d40c3a00940d2003411e3a00980d200320032d00d50c3a00950d2003411f3a00980d200320032d00d60c3a00960d200320032d00d70c3a00970d200341203a00980d200341a8056a41186a220620032903900d370300200341a8056a41106a220520032903880d370300200341a8056a41086a220920032903800d370300200320032903f80c3703a805200341f8026a41186a2006290300370300200341f8026a41106a2005290300370300200341f8026a41086a2009290300370300200320032903a8053703f8022003200341d80c6a41186a2903003703d00c2003200341d80c6a41106a2903003703c80c2003200341d80c6a41086a2903003703c00c200320032903d80c3703b80c20034180106a200341f8026a200341b80c6a10e504200341f80c6a200328028010220a20032802881010e604200341b80c6a41086a2001290300370300200341b80c6a41106a20022903003703002009200341a00d6a2903003703002005200341a80d6a2903003703002006200341b00d6a290300370300200341a8056a41206a2201200341b80d6a290300370300200320032903f80c3703b80c2003200341f80c6a41206a2903003703a80502400240024020032802900d2206450d0020032802940d2105200341e80f6a41106a2202200341b80c6a41106a290300370300200341e80f6a41086a2207200341b80c6a41086a290300370300200341d8076a41086a220d200341a8056a41086a290300370300200341d8076a41106a220b200341a8056a41106a290300370300200341d8076a41186a2210200341a8056a41186a290300370300200341d8076a41206a2001290300370300200320032903b80c3703e80f200320032903a8053703d8070240200328028410450d00200a10230b200341c80f6a41166a2002290300220f370100410e2109200341c80f6a410e6a2007290300370100200341a80f6a41166a2201200f370100200341a80f6a41106a200341c80f6a41106a290100370300200320032903e80f3701ce0f200341a80f6a41086a200341c80f6a41086a290100370300200320032901c80f3703a80f200341880a6a41106a22022001290100370300200341880a6a41086a200341a80f6a410e6a290100370300200320032901ae0f3703880a200341a40a6a2005360200200320063602a00a200341c80a6a200341d8076a41206a290300370300200341c00a6a2010290300370300200341b80a6a200b290300370300200341b00a6a200d290300370300200341880a6a41206a20032903d80737030041808028210141ac96c600210a02402002280200200c470d002003419c0a6a280200200e470d00200341ac0a6a2201200341c8006a412010a305450d0341808020210141d5a4c600210a410821090b41132102200541ffffff3f71450d01200610230c010b0240200328028410450d00200a10230b4180801c210141930e210241cfc6c600210a410821090b0240200441ffffff3f71450d00200810230b41032106410021050c0b0b20032903880a210f2003200341880a6a41086a29030022183703b0052003200f3703a8050240200f201884500d00200320013602b80c200341d8076a2001200341a8056a200341b80c6a10ff0220032903d8074201520d0020032903e007210f200341b00d6a200341d8076a41106a290300370300200341a80d6a200f370300200341f80c6a41086a41003a0000200341810d6a2001290000370000200341890d6a200141086a290000370000200341910d6a200141106a290000370000200341990d6a200141186a290000370000200341023a00f80c200341f80c6a10e0010b200341b80c6a41186a200341d80c6a41186a290300370300200341b80c6a41106a200341d80c6a41106a290300370300200341b80c6a41086a200341d80c6a41086a290300370300200320032903d80c3703b80c200341f80c6a200341f8026a200341b80c6a10e50420033502800d42208620032802f80c2201ad841011024020032802fc0c450d00200110230b2003419d0d6a20032903f802370000200341850d6a200341c8006a41086a2903003700002003418d0d6a200341c8006a41106a290300370000200341950d6a200341c8006a41186a290300370000200341a50d6a200341f8026a41086a290300370000200341ad0d6a200341f8026a41106a290300370000200341b50d6a200341f8026a41186a290300370000200341053a00fc0c200341093a00f80c200320032903483700fd0c200341c40d6a200e360200200341c00d6a200c360200200341f80c6a10e001024020032802a40a41ffffff3f71450d0020032802a00a10230b0240200441ffffff3f71450d00200810230b410021010c270b41002101200328028c0a220641ff01714104460d262006418080807871210520064180807c71210120064108762102200341940a6a2802002109200341880a6a41086a280200210a0c090b1033000b102a000b200610b40220061023410021010c1c0b200341940a6a280200210a200341880a6a41086a2802002101200328028c0a2105200610b402200610232005411876210c200541107621082005410876210e0c160b41de95c6002101410d21024103210641132108410021090c050b41eb95c6002101411121024113210841032109410321060c040b41fc95c6002101411221024103210641132108410421090c030b410021020b0240200541ffffff3f71450d00200810230b410021050b200041146a2009360200200041106a200a3602002000410c6a2001418080fc0771200641ff01717220057220024108744180fe0371723602000c080b4100210a200541ffffff3f71450d06200c10230c060b0240200620014105746a200341c8006a412010a30522090d0041ba96c6002101410f2102410121090c040b200341f80c6a41186a200341c8006a41186a290300370300200341f80c6a41106a200341c8006a41106a290300370300200341f80c6a41086a200341c8006a41086a290300370300200320032903483703f80c200341f80c6a210220082009411f7620016a2209490d020b024020082005470d00200341880a6a41186a20054101109a0120032802a00a21060b200620094105746a220141206a2001200820096b41057410a2051a200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002003200841016a3602a80a200341f80c6a200341880a6a41c80010a1051a2003200f3703d00c2003201f3a00cf0c2003201c3a00ce0c2003201b3b01cc0c2003201a3a00cb0c200320213a00ca0c200320223b01c80c200320233a00c70c200320243a00c60c200320203b01c40c200320253a00c30c200320273a00c20c200320283b01c00c200320293a00bf0c2003202a3a00be0c2003202b3b01bc0c2003202c3a00bb0c2003202d3a00ba0c2003202e3b01b80c200341a8056a200341f8026a200341b80c6a10e50420032802a8052101200320032802b0053602bc0c200320013602b80c200341f80c6a200341b80c6a10e204024020032802ac05450d00200110230b0240200341940d6a28020041ffffff3f71450d0020032802900d10230b2003419d0d6a20032903f802370000200341850d6a200341c8006a41086a2903003700002003418d0d6a200341c8006a41106a290300370000200341950d6a200341c8006a41186a290300370000200341a50d6a200341f8026a41086a290300370000200341ad0d6a200341f8026a41106a290300370000200341b50d6a200341f8026a41186a290300370000200341033a00fc0c200341093a00f80c200320032903483700fd0c200341c40d6a2031360200200341c00d6a2030360200200341f80c6a10e0010b0240200e41ffffff3f71450d00200c10230b410021010c180b200920081038000b0240200541ffffff3f71450d00200610230b41032106411321084100210a0b200e41ffffff3f71450d00200c10230b200041146a2002360200200041106a20013602002000410c6a200941ff0171411074200a41187472200841ff017141087472200641ff0171723602000b410121010c130b200341f80c6a200641b00210a1051a200341e2076a200341c8006a41086a290300370100200341ea076a200341d8006a290300370100200341f2076a200341e0006a29030037010020034180023b01d807200320032903483701da07200341a8056a200341f80c6a200341d8076a10cf0220032903880a21182003200341880a6a41086a29030022193703c00c200320183703b80c02402018201984500d002003200341ac0a6a22013602a80f200341d8076a2001200341b80c6a200341a80f6a10ff0220032903d8074201520d0020032903e0072118200341b00d6a200341d8076a41106a290300370300200341a80d6a2018370300200341f80c6a41086a41003a0000200341810d6a2001290000370000200341890d6a200141086a290000370000200341910d6a200141106a290000370000200341990d6a200141186a290000370000200341023a00f80c200341f80c6a10e0010b2003200f3703d00c200320073a00cf0c2003200d3a00ce0c2003200b3b01cc0c200320103a00cb0c200320113a00ca0c200320123b01c80c200320133a00c70c200320143a00c60c200320153b01c40c200320163a00c30c200320173a00c20c2003201d3b01c00c2003201e3a00bf0c2003201f3a00be0c200320213b01bc0c200320223a00bb0c200320233a00ba0c200320243b01b80c200341f80c6a200341c8006a200341b80c6a10e50420033502800d42208620032802f80c2201ad841011024020032802fc0c450d00200110230b200341f80c6a41186a200341d80c6a41186a290300370300200341f80c6a41106a200341d80c6a41106a290300370300200341f80c6a41086a200341d80c6a41086a290300370300200320032903d80c3703f80c20032f0148210220032d004a210520032d004b210920032f014c210a20032d004e210820032d004f210c20032f0150210e20032d0052210720032d0053210d20032f0154210b20032d0056211020032d0057211120032f0158211220032d005a211320032d005b211420032f015c211520032d005e211620032d005f21172003290360210f200320032900b5053703d8072003200341bc056a2800003600df070240024020032802a8054101460d00410421010c010b200341b4056a2d0000211e20032802ac05211d200320032800df073600bf0c200320032903d8073703b80c41042101201d4102460d00200320032800bf0c3600af0f200320032903b80c3703a80f201e21010b200341d8076a41086a221d200341f80c6a41086a290300370300200341d8076a41106a221e200341f80c6a41106a290300370300200341d8076a41186a221f200341f80c6a41186a290300370300200320032903f80c3703d807200320032903a80f3703e80f200320032800af0f3600ef0f200341b50d6a200f370000200341b40d6a20173a0000200341b30d6a20163a0000200341b10d6a20153b0000200341b00d6a20143a0000200341af0d6a20133a0000200341ad0d6a20123b0000200341ac0d6a20113a0000200341ab0d6a20103a0000200341a90d6a200b3b0000200341a80d6a200d3a0000200341a70d6a20073a0000200341a50d6a200e3b0000200341a40d6a200c3a0000200341a30d6a20083a0000200341a10d6a200a3b0000200341a00d6a20093a00002003419f0d6a20053a00002003419d0d6a20023b0000200341043a00fc0c200341093a00f80c200341850d6a201d2903003700002003418d0d6a201e290300370000200341950d6a201f290300370000200320032903d8073700fd0c200341c80d6a20013a0000200341c40d6a201a360200200341c00d6a201b360200200341bf0d6a200341ba0c6a2d00003a0000200341bd0d6a20032f00b80c3b0000200341d00d6a20032800ef0f360000200341c90d6a20032903e80f370000200341f80c6a10e001024020032802a40a41ffffff3f71450d0020032802a00a10230b202041ffffff3f71450d002004102320061023410021010c0a0b20061023410021010c090b200341f80c6a41186a200341d80c6a41186a290300370300200341f80c6a41106a200341d80c6a41106a290300370300200341f80c6a41086a200341d80c6a41086a290300370300200320032903d80c3703f80c024020082001490d0002402008200e470d00200341880a6a41186a200e4101109a0120032802a00a21090b200920014105746a220241206a2002200820016b41057410a2051a200241186a200341f80c6a41186a290300370000200241106a200341f80c6a41106a290300370000200241086a200341f80c6a41086a290300370000200220032903f80c3700002003200841016a3602a80a200341f80c6a200341880a6a41c80010a1051a2003200f3703d00c200320073a00cf0c2003200d3a00ce0c2003200b3b01cc0c200320103a00cb0c200320113a00ca0c200320123b01c80c200320133a00c70c200320143a00c60c200320153b01c40c200320163a00c30c200320173a00c20c2003201d3b01c00c2003201e3a00bf0c2003201f3a00be0c200320213b01bc0c200320223a00bb0c200320233a00ba0c200320243b01b80c200341d8076a200341c8006a200341b80c6a10e50420032802d8072101200320032802e0073602ac05200320013602a805200341f80c6a200341a8056a10e204024020032802dc07450d00200110230b0240200341940d6a28020041ffffff3f71450d0020032802900d10230b2003419d0d6a2003290348370000200341850d6a200341d80c6a41086a2903003700002003418d0d6a200341d80c6a41106a290300370000200341950d6a200341d80c6a41186a290300370000200341a50d6a200341c8006a41086a290300370000200341ad0d6a200341c8006a41106a290300370000200341b50d6a200341c8006a41186a290300370000200341033a00fc0c200341093a00f80c200320032903d80c3700fd0c200341c40d6a201a360200200341c00d6a201b360200200341f80c6a10e001410421050c020b200120081038000b41032105200e41ffffff3f71450d00200910230b0240202041ffffff3f71450d00200410230b4113210e4100210c0b200610b4020b200610230b200541ff01714104470d02410021010c030b200610b40220061023410321054113210e0b4100210c0240200941ffffff3f71450d00200410230b0b200041146a200a360200200041106a20013602002000410c6a200841ff0171411074200c41187472200e41ff017141087472200541ff017172360200410121010b200041086a20023602000c070b200041146a2009360200200041106a200a3602002000410c6a2001200541ff017172360200410121010b200041086a20023602000c050b200141b0026a21010c030b200141b0026a21010c020b200621010b200341f80c6a200341880a6a41ac0210a1051a0b024020062001460d0003402001109e032006200141b0026a2201470d000b0b02402007450d00200741b0026c450d00200410230b200341013a00fc0c200341093a00f80c200341f80c6a10e001410021010b200020013602002000410036020420034190106a24000bd69c0109067f047e0c7f027e037f017e027f0b7e0f7f230041b0106b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0c000102030e0d0c0b0a090807000b200341840e6a4101360200200342013702f40d200341a4c5c6003602f00d2003410436029406200341cccec60036029006200320034190066a3602800e200341f00d6a419ca8c700103a000b200341b8036a200141196a290000370300200341b0036a200141116a290000370300200341a8036a200141096a290000370300200320012900013703a00320022d000121040240024020022d0000220141024b0d00024020010e03000102000b200441ff0171450d010b200420014100477241ff01710d050b200341f0006a109105200341f00d6a41186a2205200341a0036a41186a290300370300200341f00d6a41106a2206200341a0036a41106a290300370300200341f00d6a41086a2207200341a0036a41086a290300370300200320032903a0033703f00d02402003280278220220032802742208470d00200341f0006a20024101109f0120032802742108200328027821020b2003280270220420024106746a2201420037030820014201370300200141106a4200370300200141186a4200370300200141206a20032903f00d370300200141286a2007290300370300200141306a2006290300370300200141386a20052903003703002003200241016a220536027841f4c7c600ad4280808080800184100c220129000021092001290008210a2001102341a084c700ad4280808080a00184100c2201290000210b2001290008210c200110232003200c3702a8062003200b3702a0062003200a370298062003200937029006200341f00d6a2004200510d40220034190066aad428080808080048420033502f80d42208620032802f00d2201ad84100e024020032802f40d450d00200110230b0240200841ffffff1f71450d00200410230b200341fc0d6a2002360200200341f80d6a41063a00002003410a3a00f00d200341f00d6a10e0010c130b200341a0036a200141046a41a00210a1051a4102210120022d00000d0220022d00014101470d02200241196a2d00002101200241186a2d00002104200241166a2f01002108200241156a2d00002105200241146a2d00002106200241126a2f01002107200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a29010037038806200320013a008706200320043a008606200320083b018406200320053a008306200320063a008206200320073b0180062003200d3a00ff052003200e3a00fe052003200f3b01fc05200320103a00fb05200320113a00fa05200320123b01f805200320133a00f705200320143a00f605200320153b01f405200320163a00f305200320173a00f205200320183b01f005024020032802a803220141e4004b0d00200341086a2001ad42004280d0f29ce1c800420010a605200341f0006a200341f0056a109205200341f00d6a200328027022012003280278109305200341b80b6a200341f00d6a41a40210a1051a200341d0086a41086a22022003419d106a290000370300200341d0086a41106a2204200341a5106a290000370300200341d0086a41176a2208200341ac106a28000036000020032003290095103703d008200341086a41086a29030021192003290308211a0240024020032d00941022054102460d00200341f0086a200341b80b6a41a40210a1051a200341d0006a41176a2008280000360000200341d0006a41106a2004290300370300200341d0006a41086a2002290300370300200320032903d00837035002402003280274450d00200110230b200341f00d6a200341f0086a41a40210a1051a200341f00d6a41a4026a20053a000020034195106a20032903503700002003419d106a200341d0006a41086a290300370000200341a5106a200341d0006a41106a290300370000200341ac106a200341e7006a2800003600000240200341f00d6a41186a2802002206450d0020032802800e210141002102410021040340024002400240200141086a2205280200417f6a220841054b0d00024020080e06000101010100000b20020d01410021020c020b200241016a21020c010b200420026b220820064f0d07200341f0006a41186a2207200120024105746b220841186a220d290300370300200341f0006a41106a220e200841106a220f290300370300200341f0006a41086a2210200841086a22112903003703002003200829030037037020052903002109200141106a2212290300210a200141186a2213290300210b20082001290300370300200d200b370300200f200a37030020112009370300201320072903003703002012200e29030037030020052010290300370300200120032903703703000b200141206a21012006200441016a2204470d000b2002417f6a20064f0d002003200620026b3602880e0b2003418c0e6a2201108f052001200341a0036a41a00210a1051a20034190066a200341f00d6a41c00210a1051a20034190066a41086a290300210a200329039006210c0c010b02402003280274450d00200110230b200341a8066a41003602004200210c20034200370398062003420037039006200342083703a006200341ac066a200341a0036a41a00210a1051a4200210a0b2003201a4280c0caf384a3027c220937039006200320192009201a54ad7c220b3703980602402009200c58200b200a58200b200a5122071b0d002003200b200a7d2009200c54ad7d221a3703c00b20032009200c7d22193703b80b2003200341f0056a3602d0052019201a844200510d002003200341f0056a3602f0082003200341f0086a3602f80d2003200341d0056a3602f40d2003200341b80b6a3602f00d200341f0006a200341f0056a200341f00d6a10fd020240024020032802704101470d00200341fc006a2802002102200341f8006a280200210420032d0077210820032d0076210520032d0075210620032d007421010c010b410421010240200341f0006a41086a2903004201520d00200341f0006a41106a290300211a20032802f0082102200341a80e6a200341f0006a41186a290300370300200341a00e6a201a370300200341f00d6a41086a41003a0000200341f90d6a2002290000370000200341810e6a200241086a290000370000200341890e6a200241106a290000370000200341910e6a200241186a290000370000200341023a00f00d200341f00d6a10e0010b0b200141ff01714104460d000240200341a4066a28020041ffffff3f71450d0020032802a00610230b200341ac066a108f050c160b0240200c200958200a200b5820071b0d002003200a200b7d200c200954ad7d220a3703c00b2003200c20097d22093703b80b2009200a84500d002003200341f0056a3602f008200341f0006a200341f0056a200341b80b6a200341f0086a10ff0220032903704201520d0020032903782109200341a80e6a200341f0006a41106a290300370300200341a00e6a2009370300200341f00d6a41086a41003a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a200341f0056a41106a290300370000200341910e6a20034188066a290300370000200341023a00f00d200341f00d6a10e0010b200341f00d6a20034190066a41c00210a1051a200341f0056a200341f00d6a10940541002101200341f00d6a41086a41003a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003410a3a00f00d200341f00d6a10e0010c140b200341a0036a108f0541d6c5c6002104410d21024103210141142106410b21050c140b2001410c6a2802002108200141086a2802002104200141046a28020021054102210620022d00000d0f20022d00014101470d0f200241196a2d00002101200241186a2d00002106200241166a2f01002107200241156a2d0000210d200241146a2d0000210e200241126a2f0100210f200241116a2d00002110200241106a2d000021112002410e6a2f010021122002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d00002117200241066a2f01002118200241056a2d0000211b200241046a2d0000211c200241026a2f0100211d20032002411a6a29010037038809200320013a008709200320063a008609200320073b0184092003200d3a0083092003200e3a0082092003200f3b018009200320103a00ff08200320113a00fe08200320123b01fc08200320133a00fb08200320143a00fa08200320153b01f808200320163a00f708200320173a00f608200320183b01f4082003201b3a00f3082003201c3a00f2082003201d3b01f008200341f00d6a200341f0086a109205200341286a20032802f00d220220032802f80d419ca8c70041004100108c0120032802282101024020032802f40d450d00200210230b41012107410321064114210d024020014101460d0041cfc6c60021104108210f0c110b0240200841e4004d0d0041d7c6c60021104112210f410021070c110b20034190066a200341f0086a109505200341f00d6a2003280290062202200328029806109605200341f00d6a41086a290300420020032802800e22011b210920032903f00d420020011b210a20032902840e210b0240200328029406450d00200210230b200b420020011b211e2001410120011b211f200341186a2008ad42004280c0a8ca9a3a420010a6050240200a200329031822195a2009200341186a41086a290300221a5a2009201a5122011b0d002003201a20097d2019200a54ad7d220b3703a80320032019200a7d220c3703a0032003200341f0086a3602b80b200c200b844200510d002003200341f0086a3602702003200341f0006a3602f80d2003200341b80b6a3602f40d2003200341a0036a3602f00d20034190066a200341f0086a200341f00d6a10fd02024002402003280290064101470d002003419c066a280200210f20034198066a280200211020032d009706210e20032d009606210720032d009506210d20032d00940621060c010b41042106024020034190066a41086a2903004201520d0020034190066a41106a290300210b20032802702102200341a80e6a20034190066a41186a290300370300200341a00e6a200b370300200341f00d6a41086a41003a0000200341f90d6a2002290000370000200341810e6a200241086a290000370000200341890e6a200241106a290000370000200341910e6a200241186a290000370000200341023a00f00d200341f00d6a10e0010b0b200641ff01714104460d00201e42ffffff3f83500d11201f10230c110b0240200a2019582009201a5820011b0d0020032009201a7d200a201954ad7d22093703a8032003200a20197d220a3703a003200a200984500d002003200341f0086a36027020034190066a200341f0086a200341a0036a200341f0006a10ff022003290390064201520d002003290398062109200341a80e6a20034190066a41106a290300370300200341a00e6a2009370300200341f00d6a41086a41003a0000200341f90d6a20032903f008370000200341810e6a200341f0086a41086a290300370000200341890e6a200341f0086a41106a290300370000200341910e6a20034188096a290300370000200341023a00f00d200341f00d6a10e0010b0240201e422088a74105742202450d00201f21010340200341f00d6a2001108b0520033502f80d42208620032802f00d2206ad841011024020032802f40d450d00200610230b200141206a2101200241606a22020d000b0b200341003602d805200342013703d005200341d0056a4100200841c4006c221b41c4006d109a0120032802d805211020032802d005211d024002400240024002400240201b450d002005201b6a2120201d20104105746a2102200341f00d6a41206a211c200341f00d6a41216a210820034190066a411f6a21114100210d0340200341b80b6a41186a22062005200d6a220141186a290200370300200341b80b6a41106a2207200141106a290200370300200341b80b6a41086a220e200141086a29020037030020034190066a41086a220f200141296a29000037030020034190066a41106a2212200141316a29000037030020034190066a41186a2213200141396a2900003703002011200141c0006a280000360000200320012902003703b80b2003200141216a29000037039006200141206a2d000022144106460d02200341a0036a41186a22152006290300370300200341a0036a41106a22162007290300370300200341a0036a41086a2217200e290300370300200320032903b80b3703a003200341f00d6a41186a2206200341f0086a41186a290300370300200341f00d6a41106a2207200341f0086a41106a290300370300200341f00d6a41086a2218200341f0086a41086a290300370300200320032903f0083703f00d200320143a00900e2008200329039006370000200841086a200f290300370000200841106a2012290300370000200841186a20132903003700002008411f6a2011280000360000200341f0056a200341a0036a108b0520033502f805210920032802f005210e412010212201450d15200120032903f00d370000200141186a2006290300370000200141106a2007290300370000200141086a2018290300370000200341f0006a201c10702003280270210f02400240200328027822060d00200641206a21070c010b200641206a22072006490d05200741c000200741c0004b1b22124100480d0520014120201210252201450d160b200141206a200f200610a1051a02402003280274450d00200f10230b2009422086200ead842007ad4220862001ad84100e20011023024020032802f405450d00200e10230b024020032d00900e4101470d0020032802980e450d0020032802940e10230b200341f0006a41086a20172903002209370300200341f0006a41106a2016290300220a370300200341f0006a41186a2015290300220b370300200320032903a003220c370370200241186a200b370000200241106a200a370000200241086a20093700002002200c370000201041016a2110200241206a2102201b200d41c4006a220d470d000b0b200320103602d8050c010b200320103602d805200141c4006a2020460d00200141e4006a2101201b200d6b41bc7f6a21020340024020012d00004101470d00200141086a280200450d00200141046a28020010230b200141c4006a2101200241bc7f6a22020d000b0b02402004450d00200441c4006c450d00200510230b20032802d405210e2010450d0e20034190066a200341f0086a109505201041057422064114722202417f4c0d022003350298062109200328029006210f200210212201450d01200120193700002001201a370008200341103602f80d200320023602f40d200320013602f00d2010200341f00d6a1061410020032802f80d22026b210520032802f00d210d20032802f40d2108201d21070340200721010240200820056a411f4b0d00200241206a22042002490d02200841017422072004200720044b1b22044100480d02024002400240024020080d00024020040d004101210d0c020b20041021210d0c030b20082004470d010b200421080c020b200d200820041025210d0b20042108200d450d130b200141206a2107200d20026a22042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a290000370000200541606a2105200241206a2102200641606a22060d000b2009422086200fad842002ad422086200dad84100e02402008450d00200d10230b0240200328029406450d00200f10230b200e41ffffff3f710d0f0c100b102c000b1033000b1032000b200820064184d9c4001030000b200341a0036a108f050c110b200041003602042000410c6a4102360200410121010c110b200141196a2900002109200141186a2d00002108200141176a2d00002105200141156a2f00002106200141146a2d00002107200141136a2d0000210d200141116a2f0000210e200141106a2d0000210f2001410f6a2d000021102001410d6a2f000021112001410c6a2d000021122001410b6a2d00002113200141096a2f00002114200141086a2d00002115200141076a2d00002116200141056a2f00002117200141046a2d00002118200141036a2d0000211b20022d0001210420012f0001211c0240024002400240024020022d0000220141024b0d00024020010e03000102000b200441ff0171450d010b4182a8082102200420014100477241ff01710d010b2003200937038806200320083a008706200320053a008606200320063b018406200320073a0083062003200d3a0082062003200e3b0180062003200f3a00ff05200320103a00fe05200320113b01fc05200320123a00fb05200320133a00fa05200320143b01f805200320153a00f705200320163a00f605200320173b01f405200320183a00f3052003201b3a00f2052003201c3b01f00520034190066a200341f0056a109505200341f00d6a20032802900622012003280298062202109605024020032802800e2208450d002002ad4220862001ad8410110b20032903f00d210920032802840e2104200341f80d6a290300210a200341880e6a280200210e0240200328029406450d00200110230b200341e00d6a200341f0056a109205200341f00d6a20032802e00d220220032802e80d2206109305024020032d009410220141024622050d002006ad4220862002ad8410110b200341b80b6a200341f00d6a41a40210a1051a200341980b6a41176a2206200341ac106a280000360000200341980b6a41106a2207200341a5106a290000370300200341980b6a41086a220d2003419d106a29000037030020032003290095103703980b200341f00d6a200341b80b6a41a40210a1051a200341d0056a41176a220f2006280000360000200341d0056a41106a22062007290300370300200341d0056a41086a2207200d290300370300200320032903980b3703d005024020050d00200341f0086a200341f00d6a41a40210a1051a200341d0086a41176a200f280000360000200341d0086a41106a2006290300370300200341d0086a41086a2007290300370300200320032903d0053703d0080b024020032802e40d450d00200210230b2004410020081b21052008410120081b2106024020014102460d002009420020081b210c200a420020081b211a200341a0036a41066a200341f0086a41a40210a1051a200341d0006a41176a2202200341d0086a41176a280000360000200341d0006a41106a2204200341d0086a41106a290300370300200341d0006a41086a2207200341d0086a41086a290300370300200320032903d008370350200341f0006a200341a0036a41aa0210a1051a200341306a41176a220d2002280000360000200341306a41106a22022004290300370300200341306a41086a220420072903003703002003200329035037033020034190066a200341f0006a41066a41a40210a1051a20034190066a41a4026a20013a0000200341b5086a2003290330370000200341bd086a2004290300370000200341c5086a2002290300370000200341cc086a200d28000036000020034190066a41086a2903002119200329039006210b20032802a006210702400240200341a8066a28020041057422020d00420021094200210a0c010b200741106a2101420021094200210a0340200141086a2903004200200141786a29030042015122041b200a7c2001290300420020041b220a20097c2209200a54ad7c210a200141206a2101200241606a22020d000b0b200e410020081b21012019201a7c200b200c7c220c200b54ad7c200a7c210a200c20097c221a200c54ad21090240200341a4066a28020041ffffff3f71450d00200710230b200a20097c210a200341ac066a108f05024020014105742202450d00200621010340200341f00d6a2001108b0520033502f80d42208620032802f00d2204ad841011024020032802f40d450d00200410230b200141206a2101200241606a22020d000b0b201a200a8450450d0242002121420021220c030b0240200541ffffff3f71450d00200610230b4183a80821020b20004100360204200041146a4108360200200041106a41c7c6c6003602002000410c6a2002360200410121010c120b200341d0056a200341f0056a109702200341f0006a20032802d005220220032802d80522011098022003290370211e4200210b20034200370370200341b8016a280200210420032d00bc01210802400240201e4201510d00200341f0086a41306a4200370300200341f0086a41286a4200370300200341f0086a41206a4200370300200341f0086a41186a420037030020034180096a4200370300200341f8086a4200370300200342003703f008420021194200210c42002109420021230c010b200341a8016a2903002121200341f0006a41306a2903002122200341f0006a41206a2903002119200341f0006a41186a290300210b200341b0016a290300212320032903800121092003290378210c200341f0086a41206a200341f0006a41286a290300370300200341f0086a41286a2022370300200341f0086a41306a202137030020034180096a200b37030020032019370388092003200c3703f008200320093703f8080b200341f0086a41186a2019200a2019200b201a562019200a562019200a511b22071b22227d200b201a200b20071b222154ad7d22243703002003200b20217d222537038009200341b80b6a41186a2024370300200341b80b6a41206a220e200341f0086a41206a290300370300200341b80b6a41286a220f200341f0086a41286a290300370300200341b80b6a41306a2210200341f0086a41306a290300370300200320253703c80b2003200c3703b80b200320093703c00b200920197c200c200b7c2226200c542207ad7c210b02400240427f200c20257c22192019200c54220d200920247c200dad7c221920095420192009511b220d1b22244280c8afa025544100427f2019200d1b2225501b0d00200341c80b6a290300212420102903002125200f2903002127200e290300212820032903c00b212920032903b80b212a4201211920032903d00b212b0c010b4200211902402024202584500d002024202510eb01200341a80e6a2025370300200341a00e6a2024370300200341f00d6a41086a41013a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a290300370000200341023a00f00d200341f00d6a10e0010b0b200b200951210d200b200954210e20034198016a2028370300200341a0016a202737030020034180016a2029370300200341a8016a202537030020034188016a20243703002003202b37039001200320233703b0012003202a370378200320084100201e420151220f1b3a00bc01200320044100200f1b3602b801200320194201512204ad3703700240024020040d002001ad4220862002ad8410110c010b200320013602f40d200320023602f00d200341f8006a200341f00d6a1098030b2007200e200d1b2101024020032802d405450d00200210230b427f200b20011b210b427f202620011b212420194201522101024002400240201e4201510d0020010d004103210220034190066a21010c010b201e4201522001410173720d0141042102200341a0036a21010b200141046a20023a0000200141056a20032903f005370000200141003a00002001410d6a200341f8056a290300370000200141156a20034180066a2903003700002001411d6a20034188066a290300370000200110e0010b2024200b844200520d00200341a80e6a2009370300200341a00e6a200c370300200341f00d6a41086a41003a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a290300370000200341023a00f00d200341f00d6a10e0010b2021202210eb01200341a80e6a200a370300200341a00e6a201a370300200341f00d6a41086a41023a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003410a3a00f00d200341f00d6a10e001200541ffffff3f71450d0d200610230c0d0b200141386a290300210c200141306a290300211a200141196a290000210b200141186a2d0000211d200141176a2d0000211f200141156a2f00002120200141146a2d0000212c200141136a2d0000212d200141116a2f0000212e200141106a2d0000212f2001410f6a2d000021302001410d6a2f000021312001410c6a2d000021322001410b6a2d00002133200141096a2f00002134200141086a2d00002135200141076a2d00002136200141056a2f00002137200141046a2d00002138200141036a2d00002139200141286a290300210a200141246a280200211c20012f0001213a2002411a6a2901002109200241196a2d00002104200241186a2d00002108200241166a2f01002105200241156a2d00002106200241146a2d00002107200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b41012101024020022d00000d0020022d000141014721010b200320093702a806200320043a00a706200320083a00a606200320053b01a406200320063a00a306200320073a00a2062003200d3b01a0062003200e3a009f062003200f3a009e06200320103b019c06200320113a009b06200320123a009a06200320133b019806200320143a009706200320153a009606200320163b019406200320173a009306200320183a0092062003201b3b0190060240024002400240024020010d00200341d0056a41186a20034190066a41186a29020037030041102101200341d0056a41106a20034190066a41106a290200370300200341d0056a41086a20034190066a41086a29020037030020032003290290063703d0052003200b370388062003201d3a0087062003201f3a008606200320203b0184062003202c3a0083062003202d3a0082062003202e3b0180062003202f3a00ff05200320303a00fe05200320313b01fc05200320323a00fb05200320333a00fa05200320343b01f805200320353a00f705200320363a00f605200320373b01f405200320383a00f305200320393a00f2052003203a3b01f0050240200a4201520d0041fcc5c6002102418080202104410321080c020b200341f00d6a10910520032802f00d21010240024002400240024020032802f80d201c4d0d002001201c4106746a22022903004201520d000240200341d0056a200241206a2202460d002002200341d0056a412010a3050d010b024020032802f40d41ffffff1f71450d00200110230b200341306a200341f0056a109205200341f00d6a200328023022012003280238109305200341b80b6a200341f00d6a41a40210a1051a200341d0086a41086a22022003419d106a290000370300200341d0086a41106a2204200341a5106a290000370300200341d0086a41176a2208200341ac106a28000036000020032003290095103703d008024020032d00941022054102460d00200341f0086a200341b80b6a41a40210a1051a200341d0006a41176a2008280000360000200341d0006a41106a2004290300370300200341d0006a41086a2002290300370300200320032903d00837035002402003280234450d00200110230b200341a0036a41066a200341f0086a41a40210a1051a200341f0006a200341a0036a41aa0210a1051a200341980b6a41176a2201200341d0006a41176a280000360000200341980b6a41106a2202200341d0006a41106a290300370300200341980b6a41086a2204200341d0006a41086a290300370300200320032903503703980b20034190066a200341f0006a41066a41a40210a1051a20034190066a41a4026a20053a0000200341b5086a20032903980b370000200341bd086a2004290300370000200341c5086a2002290300370000200341cc086a200128000036000020032802a006210541002101200341a8066a280200220641014b0d0220060e020403040b02402003280234450d00200110230b41e3c5c6002102410d2101418080282104410321080c060b024020032802f40d41ffffff1f71450d00200110230b41f0c5c6002102410c2101418080242104410321080c050b20062102034020012002410176220420016a2208200520084105746a280200201c4b1b2101200220046b220241014b0d000b0b200520014105746a22022802002204201c460d01200620012004201c496a2201490d040b02402006200341a4066a280200470d0020034190066a41106a2006410110970120032802a00621050b200520014105746a220241206a2002200620016b41057410a2051a200241186a200c370300200241106a201a3703002002200a3703082002201c3602002003200641016a3602a8060c050b200620014d0d03200520014105746a220141086a2104024020012903084201520d00200341f00d6a200341f0056a200341d0056a200141106a290300200141186a290300410010fe020b2004200a3703002002201c360200200141186a200c370300200141106a201a3703000c040b41022108410021040b20004100360204200041146a2001360200200041106a20023602002000410c6a20044180803c7120087241802872360200410121010c120b200120061038000b2001200641b08bc7001030000b200341f00d6a20034190066a41c00210a1051a200341f0056a200341f00d6a109405200341f00d6a41086a41053a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003419c0e6a201c3602002003410a3a00f00d200341f00d6a10e0010c0c0b410221040240024020022d00000d0020022d00014101470d00200141086a2903002109200141046a2802002108200241196a2d00002101200241186a2d00002104200241166a2f01002105200241156a2d00002106200241146a2d00002107200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b20032002411a6a2901003703880e200320013a00870e200320043a00860e200320053b01840e200320063a00830e200320073a00820e2003200d3b01800e2003200e3a00ff0d2003200f3a00fe0d200320103b01fc0d200320113a00fb0d200320123a00fa0d200320133b01f80d200320143a00f70d200320153a00f60d200320163b01f40d200320173a00f30d200320183a00f20d2003201b3b01f00d200341f0006a109105410321042003280270210102402003280278220520084d0d00200120084106746a22022903004201520d000240200341f00d6a200241206a2202460d002002200341f00d6a412010a3050d010b200120084106746a2009370318410421040b2003280274210841f4c7c600ad4280808080800184100c220229000021092002290008210a2002102341a084c700ad4280808080a00184100c2202290000210b2002290008210c200210232003200c3702a8062003200b3702a0062003200a370298062003200937029006200341a0036a2001200510d40220034190066aad428080808080048420033502a80342208620032802a0032202ad84100e024020032802a403450d00200210230b0240200841ffffff1f71450d00200110230b4100210120044104460d010b200041146a410c360200200041106a41f0c5c6003602002000410c6a20044180a82472360200410121010b200041003602040c0e0b410221040240024020022d00000d0020022d00014101470d00200141196a2900002109200141186a2d0000211c200141176a2d0000211d200141156a2f0000211f200141146a2d00002120200141136a2d0000212c200141116a2f0000212d200141106a2d0000212e2001410f6a2d0000212f2001410d6a2f000021302001410c6a2d000021312001410b6a2d00002132200141096a2f00002133200141086a2d00002134200141076a2d00002135200141056a2f00002136200141046a2d00002137200141036a2d00002138200141246a280200210420012f00012139200241196a2d00002101200241186a2d00002108200241166a2f01002105200241156a2d00002106200241146a2d00002107200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b20032002411a6a2901003703880e200320013a00870e200320083a00860e200320053b01840e200320063a00830e200320073a00820e2003200d3b01800e2003200e3a00ff0d2003200f3a00fe0d200320103b01fc0d200320113a00fb0d200320123a00fa0d200320133b01f80d200320143a00f70d200320153a00f60d200320163b01f40d200320173a00f30d200320183a00f20d2003201b3b01f00d200341f0006a109105200328027021020240024002402003280278220820044d0d00200220044106746a22012903004201510d010b4103210420034190066a21050c010b200320093702a8062003201c3a00a7062003201d3a00a6062003201f3b01a406200320203a00a3062003202c3a00a2062003202d3b01a0062003202e3a009f062003202f3a009e06200320303b019c06200320313a009b06200320323a009a06200320333b019806200320343a009706200320353a009606200320363b019406200320373a009306200320383a009206200320393b0190060240200341f00d6a200141206a2201460d002001200341f00d6a412010a305450d004103210420034190066a21050c010b200120343a0007200120353a0006200120363b0104200120373a0003200120383a0002200120393b01002001202e3a000f2001202f3a000e200120303b010c200120313a000b200120323a000a2001201c3a00172001201d3a00162001201f3b0114200120203a00132001202c3a0012200220044106746a220120333b01282001202d3b0130200120093703384104210420034190066a21050b2003280274210641f4c7c600ad4280808080800184100c22012900022109200128000a210720012f000e210d20012f0000210e2001102341a084c700ad4280808080a00184100c2201290000210a2001290008210b200110232005200e3b01002003200b3702a8062003200a3702a0062003200d3b019e062003200736019a062003200937019206200341a0036a2002200810d40220034190066aad428080808080048420033502a80342208620032802a0032201ad84100e024020032802a403450d00200110230b0240200641ffffff1f71450d00200210230b4100210120044104460d010b200041146a410c360200200041106a41f0c5c6003602002000410c6a20044180a82472360200410121010b200041003602040c0d0b410221040240024020022d00000d0020022d00014101470d00200141106a2903002109200141086a290300210a200141046a2802002108200241196a2d00002101200241186a2d00002104200241166a2f01002105200241156a2d00002106200241146a2d00002107200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b20032002411a6a2901003703880e200320013a00870e200320043a00860e200320053b01840e200320063a00830e200320073a00820e2003200d3b01800e2003200e3a00ff0d2003200f3a00fe0d200320103b01fc0d200320113a00fb0d200320123a00fa0d200320133b01f80d200320143a00f70d200320153a00f60d200320163b01f40d200320173a00f30d200320183a00f20d2003201b3b01f00d200341f0006a109105410321042003280270210102402003280278220520084d0d00200120084106746a22022903004201520d000240200341f00d6a200241206a2208460d002008200341f00d6a412010a3050d010b200241086a2202200a37030020022009370308410421040b2003280274210841f4c7c600ad4280808080800184100c220229000021092002290008210a2002102341a084c700ad4280808080a00184100c2202290000210b2002290008210c200210232003200c3702a8062003200b3702a0062003200a370298062003200937029006200341a0036a2001200510d40220034190066aad428080808080048420033502a80342208620032802a0032202ad84100e024020032802a403450d00200210230b0240200841ffffff1f71450d00200110230b4100210120044104460d010b200041146a410c360200200041106a41f0c5c6003602002000410c6a20044180a82472360200410121010b200041003602040c0c0b4102210402400240024020022d00000d0020022d00014101470d00200141046a280200210d200241196a2d00002101200241186a2d00002104200241166a2f01002108200241156a2d00002105200241146a2d00002106200241126a2f01002107200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b20032002411a6a29010037038806200320013a008706200320043a008606200320083b018406200320053a008306200320063a008206200320073b0180062003200e3a00ff052003200f3a00fe05200320103b01fc05200320113a00fb05200320123a00fa05200320133b01f805200320143a00f705200320153a00f605200320163b01f405200320173a00f305200320183a00f2052003201b3b01f005200341d0056a200341f0056a109205200341f00d6a20032802d005220120032802d805109305200341b80b6a200341f00d6a41a40210a1051a200341d0086a41086a22022003419d106a290000370300200341d0086a41106a2204200341a5106a290000370300200341d0086a41176a2208200341ac106a28000036000020032003290095103703d0080240024002400240024020032d00941022054102460d00200341f0086a200341b80b6a41a40210a1051a200341d0006a41176a2008280000360000200341d0006a41106a2004290300370300200341d0006a41086a2002290300370300200320032903d008370350024020032802d405450d00200110230b200341a0036a41066a200341f0086a41a40210a1051a200341f0006a200341a0036a41aa0210a1051a200341980b6a41176a2201200341d0006a41176a280000360000200341980b6a41106a2202200341d0006a41106a29030037030041082108200341980b6a41086a2204200341d0006a41086a290300370300200320032903503703980b20034190066a200341f0006a41066a41a40210a1051a20034190066a41a4026a20053a0000200341b5086a20032903980b370000200341bd086a2004290300370000200341c5086a2002290300370000200341cc086a200128000036000041cfc6c600210541808004210620032802a006210e41002101200341a8066a280200220f41014b0d01200f0e020302030b024020032802d405450d00200110230b41a9c6c6002105410a2108418080142106410321040c050b200f2102034020012002410176220420016a2207200e20074105746a280200200d4b1b2101200220046b220241014b0d000b0b200e20014105746a280200200d470d00200f20014d0d04200e20014105746a220241186a2903002109200241106a290300210a2002290308210b2002200241206a2001417f73200f6a41057410a2051a2003200f417f6a3602a806200b4201510d01410e2108418cc6c60021054180801c21060b0240200341a4066a28020041ffffff3f71450d00200e10230b200341ac066a108f05410321040c020b2003200a370370200320093703780240200a200984500d002003200341f0056a3602b80b200341a0036a200341f0056a200341f0006a200341b80b6a10ff0220032903a0034201520d0020032903a8032109200341a80e6a200341a0036a41106a290300370300200341a00e6a2009370300200341f00d6a41086a41003a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a200341f0056a41106a290300370000200341910e6a20034188066a290300370000200341023a00f00d200341f00d6a10e0010b200341f00d6a20034190066a41c00210a1051a200341f0056a200341f00d6a109405200341f00d6a41086a41043a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003419c0e6a200d3602002003410a3a00f00d200341f00d6a10e0010c0b0b410021060b20004100360204200041146a2008360200200041106a20053602002000410c6a20064180801c7120047241802872360200410121010c0c0b2001200f103b000b410221040240024002400240024002400240024020022d00000d0020022d00014101470d00200141106a2903002109200141086a290300210a200141046a2802002107200241196a2d00002101200241186a2d00002104200241166a2f01002108200241156a2d00002105200241146a2d00002106200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d00002118200241026a2f0100211b20032002411a6a29010037038806200320013a008706200320043a008606200320083b018406200320053a008306200320063a0082062003200d3b0180062003200e3a00ff052003200f3a00fe05200320103b01fc05200320113a00fb05200320123a00fa05200320133b01f805200320143a00f705200320153a00f605200320163b01f405200320173a00f305200320183a00f2052003201b3b01f005200341306a10910541bdc6c6002101410a210241142108410321042003280230210d200328023820074d0d05200d20074106746a22052903004201520d0502402005290308200a58200541106a290300220a200958200a2009511b0d0041b3c6c6002101410421060c050b200341d0056a200341f0056a109205200341f00d6a20032802d005220120032802d805109305200341b80b6a200341f00d6a41a40210a1051a200341d0086a41086a2003419d106a290000370300200341d0086a41106a200341a5106a290000370300200341d0086a41176a2206200341ac106a28000036000020032003290095103703d00802400240024002400240024020032d009410220e4102460d00200541086a210f200341f0086a200341b80b6a41a40210a1051a200341d0006a41176a2006280000360000200341d0006a41106a2202200341d0086a41106a290300370300200341d0006a41086a2204200341d0086a41086a290300370300200320032903d008370350024020032802d405450d00200110230b200341a0036a41066a200341f0086a41a40210a1051a200341f0006a200341a0036a41aa0210a1051a200341980b6a41176a2201200341d0006a41176a280000360000200341980b6a41106a22082002290300370300200341980b6a41086a22022004290300370300200320032903503703980b20034190066a200341f0006a41066a41a40210a1051a20034190066a41a4026a200e3a0000200341b5086a20032903980b370000200341bd086a2002290300370000200341c5086a2008290300370000200341cc086a2001280000360000200f41086a2903002109200f290300210a20032802a006210e41002101200341a8066a280200220541014b0d0120050e020302030b024020032802d405450d00200110230b41a9c6c6002101410521060c090b20052102034020012002410176220420016a2208200e20084105746a28020020074b1b2101200220046b220241014b0d000b0b200e20014105746a221028020022022007460d012005200120022007496a2201490d040b02402005200341a4066a280200470d0020034190066a41106a2005410110970120032802a006210e0b200e20014105746a220241206a2002200520016b41057410a2051a200241186a2009370300200241106a200a37030020024201370308200220073602002003200541016a3602a8060c010b200520014d0d030240200e20014105746a2211280208417f6a221241054b0d00419ac6c6002101410f210241032104411421084106210620120e06050000000005050b201141086a420137030020102007360200201141186a2009370300201141106a200a3703000b200f29030021092003200f41086a290300220a370378200320093703702003200341f0056a3602f00802402009200a844200510d002003200341f0056a3602b80b2003200341b80b6a3602f80d2003200341f0086a3602f40d2003200341f0006a3602f00d200341a0036a200341f0056a200341f00d6a10fd020240024020032802a0034101470d00200341ac036a2802002102200341a8036a280200210120032d00a703210520032d00a603210620032d00a503210820032d00a40321040c010b410421040240200341a0036a41086a2903004201520d00200341a0036a41106a290300210920032802b80b2101200341a80e6a200341a0036a41186a290300370300200341a00e6a2009370300200341f00d6a41086a41003a0000200341f90d6a2001290000370000200341810e6a200141086a290000370000200341890e6a200141106a290000370000200341910e6a200141186a290000370000200341023a00f00d200341f00d6a10e0010b0b200441ff01714104470d040b200341f00d6a20034190066a41c00210a1051a200341f0056a200341f00d6a109405200341f00d6a41086a41033a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003419c0e6a20073602002003410a3a00f00d200341f00d6a10e001200328023441ffffff1f71450d0f200d10230c0f0b0c060b200120051038000b2001200541a08bc7001030000b0240200341a4066a28020041ffffff3f71450d00200e10230b200341ac066a108f050c020b0c010b410321060b200328023441ffffff1f71450d00200d10230b20004100360204200041146a2002360200200041106a20013602002000410c6a2005411874200641ff017141107472200841ff017141087472200441ff017172360200410121010c0a0b0240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002108200241156a2d00002105200241146a2d00002106200241126a2f01002107200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211820032002411a6a29010037038806200320013a008706200320043a008606200320083b018406200320053a008306200320063a008206200320073b0180062003200d3a00ff052003200e3a00fe052003200f3b01fc05200320103a00fb05200320113a00fa05200320123b01f805200320133a00f705200320143a00f605200320153b01f405200320163a00f305200320173a00f205200320183b01f00520034190066a200341f0056a109505200341f00d6a20032802900622012003280298062202109605024020032802800e2208450d002002ad4220862001ad8410110b20032903f00d210920032802840e2104200341f80d6a290300210a200341880e6a280200210e0240200328029406450d00200110230b200341e00d6a200341f0056a109205200341f00d6a20032802e00d220220032802e80d2206109305024020032d009410220141024622050d002006ad4220862002ad8410110b200341b80b6a200341f00d6a41a40210a1051a200341980b6a41176a2206200341ac106a280000360000200341980b6a41106a2207200341a5106a290000370300200341980b6a41086a220d2003419d106a29000037030020032003290095103703980b200341f00d6a200341b80b6a41a40210a1051a200341d0056a41176a220f2006280000360000200341d0056a41106a22062007290300370300200341d0056a41086a2207200d290300370300200320032903980b3703d005024020050d00200341f0086a200341f00d6a41a40210a1051a200341d0086a41176a200f280000360000200341d0086a41106a2006290300370300200341d0086a41086a2007290300370300200320032903d0053703d0080b024020032802e40d450d00200210230b2004410020081b21052008410120081b2106024020014102460d002009420020081b210c200a420020081b211a200341a0036a41066a200341f0086a41a40210a1051a200341d0006a41176a2202200341d0086a41176a280000360000200341d0006a41106a2204200341d0086a41106a290300370300200341d0006a41086a2207200341d0086a41086a290300370300200320032903d008370350200341f0006a200341a0036a41aa0210a1051a200341306a41176a220d2002280000360000200341306a41106a22022004290300370300200341306a41086a220420072903003703002003200329035037033020034190066a200341f0006a41066a41a40210a1051a20034190066a41a4026a20013a0000200341b5086a2003290330370000200341bd086a2004290300370000200341c5086a2002290300370000200341cc086a200d28000036000020034190066a41086a2903002119200329039006210b20032802a006210702400240200341a8066a28020041057422020d00420021094200210a0c010b200741106a2101420021094200210a0340200141086a2903004200200141786a29030042015122041b200a7c2001290300420020041b220a20097c2209200a54ad7c210a200141206a2101200241606a22020d000b0b200e410020081b21012019201a7c200b200c7c220c200b54ad7c200a7c210a200c20097c2209200c54ad210b0240200341a4066a28020041ffffff3f71450d00200710230b200a200b7c210a200341ac066a108f05024020014105742202450d00200621010340200341f00d6a2001108b0520033502f80d42208620032802f00d2204ad841011024020032802f40d450d00200410230b200141206a2101200241606a22020d000b0b200320093703a0032003200a3703a80302402009200a84500d002003200341f0056a36027020034190066a200341f0056a200341a0036a200341f0006a10ff022003290390064201520d00200329039806210b200341a80e6a20034190066a41106a290300370300200341a00e6a200b370300200341f00d6a41086a41003a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a200341f0056a41106a290300370000200341910e6a20034188066a290300370000200341023a00f00d200341f00d6a10e0010b200341a80e6a200a370300200341a00e6a2009370300200341f00d6a41086a41013a0000200341f90d6a20032903f005370000200341810e6a200341f0056a41086a290300370000200341890e6a20034180066a290300370000200341910e6a20034188066a2903003700002003410a3a00f00d200341f00d6a10e001200541ffffff3f71450d09200610230c090b0240200541ffffff3f71450d00200610230b4183a80821010c010b4182a80821010b20004100360204200041146a4108360200200041106a41c7c6c6003602002000410c6a2001360200410121010c090b200341f00d6a200341f0086a10950520033502f80d42208620032802f00d2201ad841011024020032802f40d450d00200110230b200e41ffffff3f71450d010b201d10230b201e42ffffff3f83500d03201f10230c030b102a000b0b02402008450d00200841c4006c2102200541286a210103400240200141786a2d00004101470d002001280200450d002001417c6a28020010230b200141c4006a2101200241bc7f6a22020d000b0b02402004450d00200441c4006c450d00200510230b200641ff017122014104460d0020004100360204200041146a200f360200200041106a20103602002000410c6a200e411874200741ff017141107472200d41ff017141087472200172360200410121010c030b410021010b200020013602040c010b20004100360204200041146a2002360200200041106a20043602002000410c6a2008411874200541ff017141107472200641ff017141087472200141ff017172360200410121010b20002001360200200341b0106a24000bf06304147f017e037f027e230041b0046b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0a00010203040506070809000b200341b4016a4101360200200342013702a401200341a4c5c6003602a001200341043602f403200341cccec6003602f0032003200341f0036a3602b001200341a0016a419ca8c700103a000b200141246a2802002104200341c0006a41186a200141196a290000370300200341c0006a41106a200141116a290000370300200341c0006a41086a200141096a29000037030020032001290001370340410a2105410221060240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620032002411a6a290100370378200320013a0077200320063a0076200320073b0174200320083a0073200320093a00722003200a3b01702003200b3a006f2003200c3a006e2003200d3b016c2003200e3a006b2003200f3a006a200320103b0168200320113a0067200320123a0066200320133b0164200320143a0063200320153a0062200320163b016020034198046a200341e0006a10a604200341a0016a200328029804220120032802a00410e101200341f0036a41086a2202200341aa016a290100370300200341f0036a41106a2206200341b2016a290100370300200341f0036a41176a2207200341b9016a290000370000200320032901a2013703f0030240024020032d00a0014101470d0020032d00a101210820034180016a41176a200729000037000020034180016a41106a200629030037030020034180016a41086a2002290300370300200320032903f003370380010240200328029c04450d00200110230b200341d9036a20034180016a41086a290300370000200341e1036a20034180016a41106a290300370000200341d0036a41186a20034197016a290000370000200320083a00d00320032003290380013700d103200341d0036a200341c0006a412010a3050d01200341a0016a200441b00210a1051a200341fa036a200341c0006a41086a29030037010020034182046a200341c0006a41106a2903003701002003418a046a200341c0006a41186a29030037010020034180023b01f003200320032903403701f20320034180016a200341a0016a200341f0036a10cf022003280280014101460d030c240b200328029c04450d00200110230b410321060b200410b40241b6edc300210941802a210841002102410021070c220b2003280284014102460d2020034194016a280200210520034190016a28020021092003418c016a2802002206418080807871210220064180807c712107200641807e7121080c210b200341d0036a41186a200141196a290000370300200341d0036a41106a200141116a290000370300200341d0036a41086a200141096a290000370300200320012900013703d003200341f0036a41186a200141396a290000370300200341f0036a41106a200141316a290000370300200341f0036a41086a200141296a2900003703002003200141216a2900003703f00320022d000120022d0000410047720d07200341a0016a200341f0036a10a60420033502a801211720032802a0012102412010212201450d0c200120032903d003370000200141186a200341d0036a41186a2204290300370000200141106a200341d0036a41106a2206290300370000200141086a200341d0036a41086a220529030037000020174220862002ad842001ad4280808080800484100e20011023024020032802a401450d00200210230b200341c2016a20032903f003370100200341aa016a2005290300370100200341b2016a2006290300370100200341ba016a2004290300370100200341ca016a200341f0036a41086a290300370100200341d2016a200341f0036a41106a290300370100200341da016a200341f0036a41186a2903003701002003418b083b01a001200320032903d0033701a201200341a0016a10e0010c150b200141086a2802002107200141046a28020021094102210620022d00000d1b20022d00014101470d1b2001410c6a2802002118200141106a2802002119200141026a2f0100211a200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002108200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620032002411a6a2901003703e803200320013a00e703200320043a00e603200320063b01e403200320053a00e303200320083a00e2032003200a3b01e0032003200b3a00df032003200c3a00de032003200d3b01dc032003200e3a00db032003200f3a00da03200320103b01d803200320113a00d703200320123a00d603200320133b01d403200320143a00d303200320153a00d203200320163b01d003200341a0016a200341d0036a10a704200341106a20032802a001220120032802a801419ca8c70041004100108c0120032802102102024020032802a401450d00200110230b410121014103210641152105024020024101470d0041f3ecc300210441122102410621010c1d0b0240201a0d0041de95c6002104410d21020c1d0b41a6edc30021044110210241022101024020180d000c1d0b02402018201a4f0d000c1d0b410321060240201841094d0d00419cedc3002104410a2102410321010c1d0b201841016a210a2009210802400340200a417f6a220a4102490d012008200841206a220b412010a305210c4193edc30021044109210241042101200b2108200c4100480d000b0c1d0b20032018ad4200428090cad2c60e420010a60520032003290300221b4280a0e5b9c291017c22173703602003200341086a2903002017201b54ad7c221b3703682003200341d0036a360280012003200341d0036a3602402003200341c0006a3602a801200320034180016a3602a4012003200341e0006a3602a001200341f0036a200341d0036a200341a0016a10fd020240024020032802f0034101470d00200341fc036a2802002102200341f0036a41086a280200210420032d00f703210820032d00f603210120032d00f503210520032d00f40321060c010b410421060240200341f0036a41086a2903004201520d00200341f0036a41106a290300211c20032802402101200341d8016a200341f0036a41186a290300370300200341d0016a201c370300200341a0016a41086a41003a0000200341a9016a2001290000370000200341b1016a200141086a290000370000200341b9016a200141106a290000370000200341c1016a200141186a290000370000200341023a00a001200341a0016a10e0010b0b200641ff01714104470d1c200341f0036a200341d0036a10a70420033502f803211c20032802f003210e200341003602a801200342013703a001410410212201450d1a200341043602a401200320013602a00120012019360000200341043602a80120014104411410252201450d1a200120173700042001410c6a201b370000200320013602a00120034294808080c0023702a4012018200341a0016a10612018410574210c410020032802a801220b6b210d20032802a401210641002105410021010340200b20016a210802400240200d20066a20056a4120490d0020032802a00121022006210a0c010b200841206a22022008490d0e200641017422042002200420024b1b220a4100480d0e0240024020060d000240200a0d00410121020c020b200a102122020d010c1e0b20032802a00121022006200a460d0020022006200a10252202450d1d0b2003200a3602a401200320023602a001200a21060b2002200b6a20016a2202200920016a2204290000370000200241186a200441186a290000370000200241106a200441106a290000370000200241086a200441086a2900003700002003200841206a3602a801200541606a2105200c200141206a2201470d000b200b20016a210602400240200a200b6b20016b4102490d0020032802a0012102200a21040c010b200641026a22022006490d0d200a41017422042002200420024b1b22044100480d0d02400240200a0d00024020040d00410121020c020b200410212202450d1d0c010b20032802a0012102200a2004460d002002200a200410252202450d1c0b200320043602a401200320023602a0010b2002200b6a20016a201a3b0000201c422086200ead84200641026aad4220862002ad84100e02402004450d00200210230b024020032802f403450d00200e10230b0240200741ffffff3f71450d00200910230b200341aa016a200341d8036a290300370100200341b2016a200341e0036a290300370100200341ba016a200341e8036a2903003701002003410b3b01a001200320032903d0033701a201200341a0016a10e0010c140b200341e0006a41186a200141196a290000370300200341e0006a41106a200141116a290000370300200341e0006a41086a200141096a29000037030020032001290001370360410221010240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a2901003703e803200320013a00e703200320043a00e603200320063b01e403200320053a00e303200320073a00e203200320083b01e003200320093a00df032003200a3a00de032003200b3b01dc032003200c3a00db032003200d3a00da032003200e3b01d8032003200f3a00d703200320103a00d603200320113b01d403200320123a00d303200320133a00d203200320143b01d003200341a0016a200341e0006a10a704200341286a20032802a001220120032802a801419ca8c70041004100108c0120032802282106024020032802a401450d00200110230b410e21024103210141152104024020064101460d004185edc3002106410521050c020b200341a0016a200341e0006a200341d0036a10a804200341206a20032802a001220520032802a801419ca8c70041004100108c0120032802202106024020032802a401450d00200510230b024020064101470d0041e5ecc3002106410721050c020b2003420037034820034280a0e5b9c291013703402003200341d0036a360298042003200341d0036a36028001200320034180016a3602a801200320034198046a3602a4012003200341c0006a3602a001200341f0036a200341d0036a200341a0016a10fd020240024020032802f0034101470d00200341fc036a2802002102200341f8036a280200210620032d00f703210720032d00f603210520032d00f503210420032d00f40321010c010b410421010240200341f0036a41086a2903004201520d00200341f0036a41106a29030021172003280280012102200341d8016a200341f0036a41186a290300370300200341d0016a2017370300200341a0016a41086a41003a0000200341a9016a2002290000370000200341b1016a200241086a290000370000200341b9016a200241106a290000370000200341c1016a200241186a290000370000200341023a00a001200341a0016a10e0010b0b200141ff01714104470d01200341a0016a41186a4200370300200341a0016a41106a22044200370300200341a0016a41086a22014200370300200342003703a00141e4dec400ad4280808080e00084100c220229000021172001200241086a290000370300200320173703a0012002102341f3dec400ad4280808080e00084100c22022900002117200341c0006a41086a2206200241086a2900003703002003201737034020021023200420032903402217370300200341f0036a41086a2001290300370300200341f0036a41106a2017370300200341f0036a41186a2006290300370300200320032903a0013703f003200341186a200341f0036a412010cd01200328021c21022003280218210441002101200341bc016a4100360200200342003703a80120034280a0e5b9c291013703a001200342013702b40120032002410020041b3602b001200341f0036a200341e0006a200341d0036a10a80420032802f0032102200320032802f80336024420032002360240200341a0016a200341c0006a10a304024020032802f403450d00200210230b200341aa016a200341e0006a41086a290300370100200341b2016a200341e0006a41106a290300370100200341ba016a200341e0006a41186a290300370100200341c2016a20032903d003370100200341ca016a200341d0036a41086a290300370100200341d2016a200341d0036a41106a290300370100200341da016a200341d0036a41186a2903003701002003418b023b01a001200320032903603701a201200341a0016a10e001200041003602040c210b0b20004100360204200041146a2002360200200041106a20063602002000410c6a2007411874200541ff017141107472200441ff017141087472200141ff0171723602000c1c0b200341c0006a41186a200141196a290000370300200341c0006a41106a200141116a290000370300200341c0006a41086a200141096a29000037030020032001290001370340200341e0006a41186a200141396a290000370300200341e0006a41106a200141316a290000370300200341e0006a41086a200141296a2900003703002003200141216a2900003703604102210120022d00000d1620022d00014101470d16200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a2901003703e803200320013a00e703200320043a00e603200320063b01e403200320053a00e303200320073a00e203200320083b01e003200320093a00df032003200a3a00de032003200b3b01dc032003200c3a00db032003200d3a00da032003200e3b01d8032003200f3a00d703200320103a00d603200320113b01d403200320123a00d303200320133a00d203200320143b01d003200341f0036a200341c0006a10a704200341a0016a20032802f003220420032802f80310a90420032802f40321020240024020032802b4012207450d00200341bc016a280200210120032802b801210902402002450d00200410230b20034180016a200341c0006a200341e0006a10a804200341a0016a200328028001220220032802880110aa0441082104200341a0016a41086a290300211b20032903a001211c20032903b801211720032802b401210820032802b00121060240200328028401450d00200210230b20080d0141dbecc3002105410a21060c170b02402002450d00200410230b4185edc3002105410e210641032101410521040c180b20034188046a20173703002003201c3703f003200320083602840420032006360280042003201b3703f8032017a7210a41d2ecc30021054100210202400240200141014b0d00410921044109210620010e021101110b03402001410176220420026a22062002200720064105746a200341d0036a412010a3054101481b2102200120046b220141014b0d000b0b4109210441092106200720024105746a200341d0036a412010a3050d0f4100210102402017422088a7220541014b0d00024020050e020010000b200341a0016a41186a200341d0036a41186a290300370300200341a0016a41106a200341d0036a41106a290300370300200341a0016a41086a200341d0036a41086a290300370300200320032903d0033703a00141002104200341a0016a21020c120b2005210203402002410176220420016a22062001200820064105746a200341d0036a412010a3054101481b2101200220046b220241014b0d000c0f0b0b200341e0006a41186a200141196a290000370300200341e0006a41106a200141116a290000370300200341e0006a41086a200141096a29000037030020032001290001370360410e210441052106410221010240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002105200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620032002411a6a2901003703e803200320013a00e703200320053a00e603200320073b01e403200320083a00e303200320093a00e2032003200a3b01e0032003200b3a00df032003200c3a00de032003200d3b01dc032003200e3a00db032003200f3a00da03200320103b01d803200320113a00d703200320123a00d603200320133b01d403200320143a00d303200320153a00d203200320163b01d003200341f0036a200341e0006a10a704200341a0016a20032802f003220120032802f80310a904024020032802b4012205450d0020032802b801210720032802b0012108200341c0016a2f01002109024020032802f403450d00200110230b200341f0036a200341e0006a200341d0036a10a804200341a0016a20032802f003220220032802f80310aa0420032903b801211720032802b401210120032802b0012106024020032802f403450d00200210230b20010d0241dbecc3002102410a2104410821060c0e0b024020032802f403450d00200110230b410321010b4185edc30021020c0d0b200341a0016a200341d0036a10a604200341386a20032802a001220420032802a801419ca8c70041004100108c0120032802382102024020032802a401450d00200410230b024020024101470d00410c21044199ecc3002102410f21060c0b0b200341a0016a41186a4200370300200341a0016a41106a220b420037030041082104200341a0016a41086a22024200370300200342003703a00141e4dec400ad4280808080e00084100c220a290000211b2002200a41086a2900003703002003201b3703a001200a102341f3dec400ad4280808080e00084100c220a290000211b200341c0006a41086a220c200a41086a2900003703002003201b370340200a1023200b2003290340221b370300200341f0036a41086a2002290300370300200341f0036a41106a201b370300200341f0036a41186a200c290300370300200320032903a0013703f003200341306a200341f0036a412010cd010240200620086a220220064f0d0041f4acc5002102410e21060c0b0b024020022003280234410020032802301b4d0d00410b210441c7ecc3002102410a21060c0b0b024020092017422088a74d0d004109210441b0ecc3002102410c21060c0b0b200341a0016a200341d0036a10a60420033502a801211b20032802a0012104412010212202450d0820022003290360370000200241186a200341e0006a41186a2206290300370000200241106a200341e0006a41106a2208290300370000200241086a200341e0006a41086a2209290300370000201b4220862004ad842002ad4280808080800484100e20021023024020032802a401450d00200410230b200341d0036a109602200341aa016a2009290300370100200341b2016a2008290300370100200341ba016a2006290300370100200341c2016a20032903d003370100200341ca016a200341d0036a41086a290300370100200341d2016a200341d0036a41106a290300370100200341da016a200341d0036a41186a2903003701002003418b083b01a001200320032903603701a201200341a0016a10e0010240201742ffffff3f83500d00200110230b200741ffffff3f71450d11200510230c110b200341d0036a41186a200141196a290000370300200341d0036a41106a200141116a290000370300200341d0036a41086a200141096a290000370300200320012900013703d0030240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a29010037038804200320013a008704200320043a008604200320063b018404200320053a008304200320073a008204200320083b018004200320093a00ff032003200a3a00fe032003200b3b01fc032003200c3a00fb032003200d3a00fa032003200e3b01f8032003200f3a00f703200320103a00f603200320113b01f403200320123a00f303200320133a00f203200320143b01f003200341e0006a200341f0036a200341d0036a10a804200341a0016a200328026022012003280268220210aa04024020032802b4012204450d002002ad4220862001ad841011200341a0016a41086a290300211720032903a001211b20032903b801211c02402003280264450d00200110230b41002101200341a0016a200341d0036a200341f0036a201b2017410010fe02200341aa016a200341f0036a41086a290300370100200341b2016a200341f0036a41106a290300370100200341ba016a200341f0036a41186a290300370100200341c2016a20032903d003370100200341ca016a200341d0036a41086a290300370100200341d2016a200341d0036a41106a290300370100200341da016a200341d0036a41186a2903003701002003418b063b01a001200320032903f0033701a201200341a0016a10e001201c42ffffff3f83500d1420041023200041003602040c1f0b02402003280264450d00200110230b4183aa2021010c010b4182aa2021010b20004100360204200041146a410a360200200041106a41dbecc3003602002000410c6a20013602000c190b41022101024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a2901003703e803200320013a00e703200320043a00e603200320063b01e403200320053a00e303200320073a00e203200320083b01e003200320093a00df032003200a3a00de032003200b3b01dc032003200c3a00db032003200d3a00da032003200e3b01d8032003200f3a00d703200320103a00d603200320113b01d403200320123a00d303200320133a00d203200320143b01d00341aeb9c400ad4280808080800184100c22012900002117200341f0036a41086a200141086a290000370300200320173703f0032001102341a0bcc400ad4280808080800284100c220128000c210820012f000a210920012f0008210a2001280004210b2001280000210c20011023412010212201450d07200120032903d003370000200141186a200341d0036a41186a290300370000200141106a200341d0036a41106a290300370000200141086a200341d0036a41086a29030037000020032001ad4280808080800484100d22022900003703800120021023200341ac016a200141206a360200200341003a00b001200320013602a801200320034180016a41086a3602a401200320034180016a3602a001200341c0006a200341a0016a1065200110232003280248220541206a2202417f4c0d0320032802402107024002402002450d00200210212201450d092002410f4d0d01200221060c070b200241017422014110200141104b1b220610212201450d170c060b200241017422044110200441104b1b220641004e0d040c080b410021060c050b200341e0006a41186a200141196a290000370300200341e0006a41106a200141116a290000370300200341e0006a41086a200141096a290000370300200320012900013703600240024020022d00000d0020022d00014101470d00200241196a2d00002101200241186a2d00002104200241166a2f01002106200241156a2d00002105200241146a2d00002107200241126a2f01002108200241116a2d00002109200241106a2d0000210a2002410e6a2f0100210b2002410d6a2d0000210c2002410c6a2d0000210d2002410a6a2f0100210e200241096a2d0000210f200241086a2d00002110200241066a2f01002111200241056a2d00002112200241046a2d00002113200241026a2f0100211420032002411a6a2901003703e803200320013a00e703200320043a00e603200320063b01e403200320053a00e303200320073a00e203200320083b01e003200320093a00df032003200a3a00de032003200b3b01dc032003200c3a00db032003200d3a00da032003200e3b01d8032003200f3a00d703200320103a00d603200320113b01d403200320123a00d303200320133a00d203200320143b01d003200341c0006a200341d0036a10a604200341a0016a20032802402202200328024810e1010240024020032d00a0014101460d0041002101200341003a00f0030c010b200341f0036a41196a200341a0016a41196a290000370000200341f0036a41096a200341a0016a41096a290000370000200341f0036a41116a200341a0016a41116a29000037000041012101200341013a00f003200320032900a1013700f1030b02402003280244450d00200210230b200341b9016a200341f8006a290300370000200341b1016a200341f0006a290300370000200341a9016a200341e8006a290300370000200320032903603700a101200341013a00a00102402001450d00200341f0036a410172200341a0016a410172412010a3050d00200341a0016a200341d0036a10a60420033502a80142208620032802a0012201ad841011024020032802a401450d00200110230b200341d0036a10a1020c110b41832a21010c010b41822a21010b20004100360204200041146a410a360200200041106a41b6edc3003602002000410c6a20013602000c170b2000410c6a4102360200200041003602040c160b1032000b20022006460d0020012002200610252201450d110b200120032903f003370000200141086a200341f0036a41086a2903003700000240024020064170714110460d00200621040c010b200641017422044120200441204b1b22044100480d0320062004460d0020012006200410252201450d110b2001200836001c200120093b001a2001200a3b00182001200b3600142001200c36001002400240200441606a2005490d00200421060c010b2005415f4b0d03200441017422062002200620024b1b22064100480d0320042006460d0020012004200610252201450d110b200141206a2007200510a1051a02402003280244450d00200710230b0240024020020d0041012104410021050c010b20022105200210212204450d020b20042001200210a1052104200341f4006a2002360200200341f0006a20063602002003200136026c200320023602682003200536026420032004360260200341a0016a2002ad4220862001ad841019108b0102400240024020032802a0012201450d0020032802a401210202400240200341a8016a280200220420032802682206490d00200328026022052001460d0120052001200610a305450d010b2002450d01200110230c010b200341ec006a2106200320043602a0042003200236029c042003200136029804200341a0016a2001200410aa04024020032802b40122010d0020034100360288012003420137038001200341cc006a4112360200200320063602a404200341123602442003200341a8046a3602482003200341a4046a360240200320034198046a3602a804200320034180016a3602ac0420034184046a4102360200200342023702f403200341c8e3c4003602f0032003200341c0006a36028004200341ac046a4184a5c200200341f0036a10311a20033502880142208620033502800184100a200328028401450d0020032802800110230b200341f0036a41086a220220034198046a41086a28020036020020032003290398043703f00302402003280270450d00200328026c10230b200620032903f003370200200641086a200228020036020020010d010b200341f0036a200341d0036a10a704200341a0016a20032802f003220220032802f803220410a904024020032802b4012201450d002004ad4220862002ad8410110b20032802f403210402402001450d00200341a8016a290300211720032903a001211b20032802b801210602402004450d00200210230b2003201b370340200320173703480240201b201784500d002003200341d0036a36028001200341f0036a200341d0036a200341c0006a20034180016a10ff0220032903f0034201520d0020032903f8032117200341d8016a200341f0036a41106a290300370300200341d0016a2017370300200341a0016a41086a41003a0000200341a9016a20032903d003370000200341b1016a200341d0036a41086a290300370000200341b9016a200341d0036a41106a290300370000200341c1016a200341e8036a290300370000200341023a00a001200341a0016a10e0010b200341aa016a200341d8036a290300370100200341b2016a200341e0036a290300370100200341ba016a200341e8036a2903003701002003418b0a3b01a001200320032903d0033701a201200341a0016a10e0010240200641ffffff3f71450d00200110230b02402003280264450d00200328026010230b2003280270450d0d200328026c10230c0d0b02402004450d00200210230b410e21024185edc30021044180801421060c010b410b210241a5ecc300210441808034210620032802b80141ffffff3f71450d00200110230b02402003280264450d00200328026010230b02402003280270450d00200328026c10230b410321010b20004100360204200041146a2002360200200041106a20043602002000410c6a20064180803c7120017241802a723602000c120b1033000b102c000b201742ffffff3f83500d00200110230b0240200741ffffff3f71450d00200510230b410321010b20004100360204200041146a2004360200200041106a20023602002000410c6a200641107420017241802a723602000c0d0b200820014105746a200341d0036a412010a30522040d01410e210641b9ecc3002105410b21040b200a41ffffff3f71450d05200810230c050b200341a0016a41186a200341d0036a41186a290300370300200341a0016a41106a200341d0036a41106a290300370300200341a0016a41086a200341d0036a41086a290300370300200320032903d0033703a001200341a0016a21022004411f7620016a220420054b0d030b02402005200a470d0020034184046a20054101109a0120032802840421080b200820044105746a220141206a2001200520046b41057410a2051a200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a290000370000200120022900003700002003200541016a36028c04200341a0016a41186a2202200341f0036a41186a290300370300200341a0016a41106a200341f0036a41106a290300370300200341a0016a41086a200341f0036a41086a290300370300200320032903f0033703a00120034180016a200341c0006a200341e0006a10a8042003280280012101200320032802880136029c042003200136029804200341a0016a20034198046a10a3040240200328028401450d00200110230b0240200228020041ffffff3f71450d0020032802b40110230b200341c2016a2003290360370100200341aa016a200341c0006a41086a290300370100200341b2016a200341c0006a41106a290300370100200341ba016a200341c0006a41186a290300370100200341ca016a200341e0006a41086a290300370100200341d2016a200341e0006a41106a290300370100200341da016a200341e0006a41186a2903003701002003418b043b01a001200320032903403701a201200341fa016a200341d0036a41186a290300370100200341f2016a200341d0036a41106a290300370100200341ea016a200341d0036a41086a290300370100200341e2016a20032903d003370100200341a0016a10e001200941ffffff3f71450d00200710230b410021010b200020013602040c0a0b200420051038000b41032101200941ffffff3f71450d01200710230c010b0b200041146a2006360200200041106a2005360200200041003602042000410c6a200441ff017141107420017241802a723602000c030b102a000b0b0240200741ffffff3f71450d00200910230b20004100360204200041146a2002360200200041106a20043602002000410c6a2008411874200141ff017141107472200541ff017141087472200641ff0171723602000b410121010c020b410421064100210241002107410021080b20041023410021010240200641ff017122044104460d00200041146a2005360200200041106a20093602002000410c6a20022007418080fc07717220084180fe037172200472360200410121010b200041003602040b20002001360200200341b0046a24000bb10101027f024020002802082201450d0020002802002100200141246c210103400240024020002d0000220241044b0d0002400240024020020e050400010204040b2000410c6a280200450d03200041086a28020010230c030b2000410c6a280200450d02200041086a28020010230c020b2000410c6a280200450d01200041086a28020010230c010b200041086a280200450d00200041046a28020010230b200041246a21002001415c6a22010d000b0b0bfb0201037f230041206b2203240002400240200241c4006c41046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b20034100360208200320043602042003200536020020022003106102402002450d00200241c4006c210203400240024020012d00004101460d00200341003a00102003200341106a410110622003200141046a2802003602102003200341106a410410620c010b200341013a00102003200341106a41011062412010212204450d042003422037021420032004360210200341106a200141016a41201062200328021421042003200328021022052003280218106202402004450d00200510230b0240200141216a2d00004101460d00200341003a00102003200341106a410110620c010b200341013a00102003200341106a410110622003200141226a412010620b200141c4006a2101200241bc7f6a22020d000b0b20002003290300370200200041086a200341086a280200360200200341206a24000f0b1032000b1033000bfd0102027f027e200028024021020240410410212203450d002003200236000020002d0044210220034104410810252203450d00200320023a0004200041086a29030021042000290300210520034108411510252203450d00200320053700052003410d6a2004370000200041186a29030021042000290310210520034115412a10252203450d00200320053700152003411d6a2004370000200041286a2903002104200029032021052003412a41d40010252203450d00200320053700252003412d6a2004370000200320002903303700352003413d6a200041386a29030037000020012902002003ad4280808080d00884100e200310230f0b102a000b98980207087f017e027f027e057f0a7e287f230041b0116b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200200541154b0d16200141046a210720050e160102030405060708090a0b0c0d0e0f10111213141517010b200041163602000c450b2006450d4320042d0001210520012003417e6a22083602042001200441026a360200200541094b0d43410a2109024002400240024002400240024002400240024020050e0a00010203040506070809000b20084104490d4c2004280002210620012003417a6a3602042001200441066a3602002006418194ebdc034f0d4c410121090c080b2002200110880120022802000d4b200728020020022802042204490d4b2004417f4c0d1e0240024020040d00410121060c010b200410272206450d3420072802002004490d4b20062001280200200410a1051a200128020422032004490d202001200320046b3602042001200128020020046a3602000b2006450d4b2004ad220a422086200a84220a422088a7210b200aa7210c410221090c070b20084108490d4a2004290002210a2001200341766a36020420012004410a6a360200200a422088a7210b200aa7210c410321090c060b200241086a200110880120022802080d492007280200200228020c2204490d492004417f4c0d1c0240024020040d00410121060c010b200410272206450d3220072802002004490d4920062001280200200410a1051a200128020422032004490d1f2001200320046b3602042001200128020020046a3602000b2006450d492004ad220a422086200a84220a422088a7210b200aa7210c410421090c050b200241106a200110880120022802100d48200728020020022802142204490d482004417f4c0d1b0240024020040d00410121060c010b200410272206450d3120072802002004490d4820062001280200200410a1051a200128020422032004490d1f2001200320046b3602042001200128020020046a3602000b2006450d482004ad220a422086200a84220a422088a7210b200aa7210c410521090c040b2008450d4720042d0002210520012003417d6a22073602042001200441036a360200200541014b0d47410021060240024020050e020100010b20074104490d482004350003210a2001200341796a22053602042001200441076a36020020054104490d482004350007210d2001200341756a36020420012004410b6a360200200d422086200a84210a410121060b200a422088a7210b200aa7210c410621090c030b200241286a200110880120022802280d46200228022c220c200728020041186e22042004200c4b1bad42187e220a422088a70d19200aa72204417f4c0d190240024020040d00410421060c010b200410212206450d2f0b41002105200241003602d80c200220063602d00c2002200441186e3602d40c02400240024002400240200c450d000340200241206a200110880120022802200d05200728020020022802242204490d052004417f4c0d1f0240024020040d004101210b0c010b20041027220b450d3520072802002004490d05200b2001280200200410a1051a200128020422032004490d242001200320046b3602042001200128020020046a3602000b200241186a200110880120022802180d032007280200200228021c2203490d032003417f4c0d1f0240024020030d00410121090c010b200310272209450d3520072802002003490d0320092001280200200310a1051a200128020422082003490d252001200820036b3602042001200128020020036a3602000b2004ad220a422086200a84210a2003ad220d422086200d84210d0240200520022802d40c470d00200241d00c6a2005410110b00120022802d00c210620022802d80c21050b2006200541186c6a2204200936020c2004200a3702042004200b360200200441106a200d3702002002200541016a22053602d80c200c417f6a220c0d000b0b2006450d4a20022902d40c220a422088a7210b200aa7210c410721090c060b200910230b2004450d010b200b10230b02402005450d00200541186c21042006210103400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200441686a22040d000b0b20022802d40c2201450d46200141186c450d460c450b200241d00c6a2001109a0320022802d00c2206450d4541082109200241d00c6a41086a280200210b20022802d40c210c0c010b200241306a200110880120022802300d44200728020020022802342204490d442004417f4c0d170240024020040d00410121060c010b200410272206450d2d20072802002004490d4420062001280200200410a1051a200128020422032004490d1e2001200320046b3602042001200128020020046a3602000b2006450d442004ad220a422086200a84220a422088a7210b200aa7210c410921090b200041003602002000410c6a2006360200200041086a2009360200200041106a200bad422086200cad84370200200041186a200241800f6a41980210a1051a0c440b02402006450d0020012003417e6a3602042001200441026a3602000b200041163602000c430b2006450d3f20042d0001210520012003417e6a22063602042001200441026a36020020050d3f2006450d3f20042d0002210520012003417d6a22073602042001200441036a360200024002400240200541037122064103460d000240024020060e03030001030b2007450d4320042d0003210620012003417c6a3602042001200441046a3602002006410874200572220141ffff0371418002490d43200141fcff0371410276ad210a0c030b20074103490d42200441056a2d0000210620042f0003210720012003417a6a3602042001200441066a3602002007200641107472410874200572220141808004490d422001410276ad210a0c020b02402005410276220c41044b0d0002400240200c0e050002020201000b20074104490d43200428000321052001200341796a3602042001200441076a3602002005418080808004490d432005ad210a0c030b20074108490d422004290003210a2001200341756a36020420012004410b6a360200200a42ffffffffffffffff00560d020c420b200c41046a220641084b0d412003417c6a2103200441046a2104410021054200210a03402003417f460d422004417f6a310000210d20012003360204200120043602002003417f6a2103200441016a2104200d2005410374413871ad86200a84210a200541016a220541ff01712006490d000b200a427f4128200c4103746b413871ad88580d410c010b2005410276ad210a0b20004102360200200041086a200a370300200041106a200241800f6a41a00210a1051a0c420b02402006450d0020042d0001210520012003417e6a22063602042001200441026a360200200541034b0d0002400240024002400240024020050e0400010203000b20064104490d052004280002210620012003417a6a3602042001200441066a36020041012105410021034200210a4200210d4200210e410021010c030b41002105200241003a00f00c2003417e6a210c417d210602400340200c2005460d01200241d00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00f00c2006417f6a21062007210520074120470d000b200320076b220f417e6a4104490d0520022d00ef0c210920022900e70c210a20022800e30c210320022800df0c210820022800db0c211020022800d70c211120022800d30c210620022f00d10c210c20022d00d00c210b41022105200420076a220741026a28000021042001200f417a6a3602042001200741066a360200200a4280808080808080807f83210e200a428080807883210d200341808080787121010c030b200541ff0171450d04200241003a00f00c0c040b20064104490d032004280002210620012003417a6a3602042001200441066a36020041032105410021034200210a4200210d4200210e4100210141002109410021040c010b41002105200241003a00f00c2003417e6a210c417d21060340200c2005460d02200241d00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00f00c2006417f6a21062007210520074120470d000b41042105200320076b220f417e6a4104490d0220022d00ef0c210920022900e70c210a20022800e30c210320022800df0c210820022800db0c211020022800d70c211120022800d30c210620022f00d10c210c20022d00d00c210b200420076a220741026a28000021042001200f417a6a3602042001200741066a360200200a4280808080808080807f83210e200a428080807883210d200341808080787121010b200041003b0026200041003a00252000200c3b00062000200b3a0005200020053a000420004103360200200041286a2004360200200041246a20093a0000200041146a2008360200200041106a20103602002000410c6a2011360200200041086a2006360200200041186a2001200341ffffff0771723602002000411c6a200e200d42808080f8ffffffff008384200a42ffffff0783843702002000412c6a200241800f6a41840210a1051a0c430b200541ff0171450d00200241003a00f00c0b200041163602000c410b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541034b0d00024002400240024020050e0400010203000b41002105200241003a00f00c2003417e6a21072003417d6a21030240034020072005460d01200241d00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f00c2003417f6a21032006210520064120470d000b20022d00ef0c210b20022900e70c210a20022800e30c210920022800df0c210820022800db0c211020022800d70c211120022800d30c210f20022f00d10c211220022d00d00c2113200241386a20011080022002290338a70d04200241c8006a290300210e2002290340211442002115410121010c400b200541ff0171450d03200241003a00f00c0c030b41002105200241003a00f00c2003417e6a21072003417d6a21030240034020072005460d01200241d00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f00c2003417f6a21032006210520064120470d000b20022d00ef0c210b20022900e70c210a20022800e30c210920022800df0c210820022800db0c211020022800d70c211120022800d30c210f20022f00d10c211220022d00d00c2113200241e8006a20011080022002290368a70d03200241e8006a41106a290300210e20022903702114200241d0006a20011080022002290350a70d032002290358210d200241d0006a41106a29030022164280808080808080807f832117420021154102210142002118420021194200211a4200211b4200211c4200211d0c400b200541ff0171450d02200241003a00f00c0c020b41002105200241003a00f00c410220036b210c2003417d6a2106024002400340200c20056a450d01200241d00c6a20056a200420056a220741026a2d00003a0000200120063602042001200741036a3602002002200541016a22073a00f00c2006417f6a21062007210520074120470d000b20022d00ef0c210b20022900e70c210a20022800e30c210920022800df0c210820022800db0c211020022800d70c211120022800d30c210f20022f00d10c211220022d00d00c211341002105200241003a00f00c200420076a210c200720036b41026a21030340200320056a450d02200241d00c6a20056a200c20056a220441026a2d00003a0000200120063602042001200441036a3602002002200541016a22043a00f00c2006417f6a21062004210520044120470d000b20022d00ef0c210620022900e70c210d20022800e30c210720022800df0c210c20022800db0c211e20022800d70c211f20022800d30c210420022f00d10c210520022d00d00c210320024180016a2001108002200229038001a70d0320024190016a290300211c200229038801220e42ffffff07832115200e42808080f8ffffffff00832119200e4280808080808080807f83211b2006ad42ff018321162007ad422086200cad84210e201ead422086201fad84211442002118410321014200211a4200211d420021170c400b200541ff0171450d02200241003a00f00c0c020b200541ff0171450d01200241003a00f00c0c010b41002105200241003a00f00c2003417e6a21072003417d6a21030240034020072005460d01200241d00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f00c2003417f6a21032006210520064120470d000b20022d00ef0c210b20022900e70c210a20022800e30c210920022800df0c210820022800db0c211020022800d70c211120022800d30c210f20022f00d10c211220022d00d00c211320024198016a2001108002200229039801a70d01200241a8016a290300210e20022903a001211442002115410421010c3d0b200541ff0171450d00200241003a00f00c0b200041163602000c400b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241b0016a200110880120022802b0010d0020022802b4012206200728020041f0006e2204200420064b1bad42f0007e220a422088a70d12200aa72203417f4c0d120240024020030d004104210c0c010b20031021220c450d280b41002104200241003602b8042002200c3602b0042002200341f0006e3602b404024002402006450d00200241d00c6a41086a210b0340200241d00c6a2001109b0320022802d40c210320022802d00c2107200241a00a6a200b41e80010a1051a2003450d02200241b0056a200241a00a6a41e80010a1051a0240200420022802b404470d00200241b0046a2004410110b50120022802b004210c20022802b80421040b200c200441f0006c6a2205200336020420052007360200200541086a200241b0056a41e80010a1051a2002200441016a22043602b8042006417f6a22060d000b0b200c450d0120022902b404210a2000200c36020420004105360200200041086a200a370200200041106a200241800f6a41a00210a1051a0c410b02402004450d00200441f0006c2104200c41046a2101034020011096030240200141046a2802002203450d00200341246c450d00200128020010230b200141f0006a2101200441907f6a22040d000b0b20022802b4042201450d00200141f0006c450d00200c10230b200041163602000c3f0b2006450d3620042d0001210520012003417e6a22203602042001200441026a360200200541174b0d36410421130240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020050e180001024f030405060708090a0b0c0d0e0f10111213141516000b41002105200241003a00a00f2003417e6a210c2003417d6a210302400340200c2005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b20022d009f0f211120022900970f210e20022800930f2110200228008f0f2109200228008b0f210820022800870f210c20022800830f210620022f00810f210f20022d00800f210b200241b8016a200110800220022903b801a70d4d20072802002204450d4d200241c8016a290300210d20022903c001210a200128020022032d0000211220012004417f6a360204410121132001200341016a360200201241024b0d4d20024190096a41106a200241d00c6a41106a29020037030020024190096a41086a200241d00c6a41086a290200370300200241f8086a41086a200241a00a6a41086a290300370300200241f8086a41106a200241a00a6a41106a290300370300200241c8086a41086a200241b0046a41086a290200370300200241c8086a41106a200241b0046a41106a290200370300200220022902d00c37039009200220022903a00a3703f808200220022902b0043703c808200241b0086a41106a200241a8096a41106a290300370300200241b0086a41086a200241a8096a41086a290300370300200220022903a8093703b008200e422088a72121200ea721220c4f0b200541ff0171450d4c200241003a00a00f0c4c0b200241d0016a200110800220022903d001a70d4b200241d0016a41106a290300210a20022903d801210d20024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008200d422088a72108200a422088a72110200da7210c200aa72109410221130c4d0b200241e8016a200110800220022903e801a70d4a200241e8016a41106a290300210a20022903f001210d20024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008200d422088a72108200a422088a72110200da7210c200aa72109410321130c4c0b20024180026a20011088012002280280020d49200228028402210620024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008410521130c4a0b200241a8096a200110cf0120022802a8092206450d4820024190096a41086a200241800f6a41086a29020037030020024190096a41106a200241800f6a41106a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241a8096a41086a280200210820022802ac09210c200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008410621130c4a0b410721130c490b2020450d4620042d0002210b20012003417d6a3602042001200441036a360200200b41024b0d4620024190096a41106a200241800f6a41106a2901003703004108211320024190096a41086a200241800f6a41086a290100370300200241f8086a41086a200241d00c6a41086a290100370300200241f8086a41106a200241d00c6a41106a290100370300200241c8086a41086a200241a00a6a41086a290100370300200241c8086a41106a200241a00a6a41106a290100370300200220022901800f37039009200220022901d00c3703f808200220022901a00a3703c808200241b0086a41106a200241b0046a41106a290100370300200241b0086a41086a200241b0046a41086a290100370300200220022901b0043703b0084100211041002109410021080c480b41002105200241003a00a00f2003417e6a21072003417d6a21030240034020072005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b20024190096a41086a200241d00c6a41086a29000037030020024190096a41106a200241d00c6a41106a290000370300200241f8086a41086a200241a00a6a41086a290000370300200241f8086a41106a200241a00a6a41106a290000370300200220022900d00c37039009200220022900a00a3703f80820022d009f0f211120022800930f2110200228008f0f2109200228008b0f210820022800870f210c20022800830f210620022f00810f210f20022d00800f210b20022900970f210a200241c8086a41106a200241b0046a41106a290000370300200241c8086a41086a200241b0046a41086a290000370300200220022900b0043703c808200241b0086a41106a200241a8096a41106a290000370300200241b0086a41086a200241a8096a41086a290000370300200220022900a8093703b008200a422088a72121200aa72122410921130c430b200541ff0171450d45200241003a00a00f0c450b20024188026a20011088012002280288020d44200228028c02210620024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008410a21130c450b410b21130c450b410c21130c440b200241a8096a200110cf0120022802a8092206450d4120024190096a41086a200241800f6a41086a29020037030020024190096a41106a200241800f6a41106a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c80820022902ac09210a200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008200a422088a72108200aa7210c410d21130c430b41002105200241003a00a00f2003417e6a21072003417d6a21030240034020072005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b20024190096a41086a200241d00c6a41086a29000037030020024190096a41106a200241d00c6a41106a2900003703002002200229008f0f220a3700af0a200220022900870f220d3700a70a200220022800830f22063600a30a200220022f00810f220f3b00a10a200220022d00800f220b3a00a00a200220022d009f0f22113a00bf0a200220022900970f220e3700b70a200220022900d00c37039009200241f8086a41106a200241b0046a41106a290000370300200241f8086a41086a200241b0046a41086a290000370300200220022900b0043703f808200241c8086a41106a200241a8096a41106a290000370300200241c8086a41086a200241a8096a41086a290000370300200220022900a8093703c808200241b0086a41106a200241880a6a41106a290000370300200241b0086a41086a200241880a6a41086a290000370300200220022900880a3703b008200e422088a72121200a422088a72110200d422088a72108200ea72122200aa72109200da7210c410e21130c3e0b200541ff0171450d40200241003a00a00f0c400b410f21130c410b20204104490d3e2004280002210620012003417a6a3602042001200441066a36020020024190026a20011088012002280290020d3e20072802002002280294024102742204490d3e2004417f4c0d180240024020040d004101210c0c010b20041027220c450d2e20072802002004490d21200c2001280200200410a1051a200128020422032004490d202001200320046b3602042001200128020020046a3602000b200c450d3e02402004ad220a422086200a84220a422088a722010d00200aa721010c3d0b0240200c2001724103710d00200aa722014103710d0020014102762208450d3d200a422288a721090c3e0b200aa7450d3e200c10230c3e0b20204104490d3d2004280002210620012003417a6a3602042001200441066a36020020024198026a20011088012002280298020d3d200228029c022210200728020041246e2204200420104b1bad42247e220a422088a70d17200aa72204417f4c0d170240024020040d004104210c0c010b20041021220c450d2d0b41002109200241003602900a2002200c3602880a2002200441246e220836028c0a0240024002402010450d0041002109410021110340200241003a00a00f201141016a21112007280200210b417f2103410021040340200b2004460d03200241800f6a20046a200128020022082d00003a00002001200b20036a3602042001200841016a3602002002200441016a22053a00a00f2003417f6a21032005210420054120470d000b200b20056b22044104490d0320022d009f0f210320022900970f210a20022800930f2105200228008f0f210b200228008b0f210f20022800870f211220022800830f211320022f00810f211e20022d00800f211f200828000121232001200841056a36020020012004417c6a36020402402009200228028c0a470d00200241880a6a2009410110a20120022802880a210c20022802900a21090b200c200941246c6a22042023360220200420033a001f2004200a370017200420053600132004200b36000f2004200f36000b20042012360007200420133600032004201e3b00012004201f3a00002002200941016a22093602900a20112010470d000b200228028c0a21080b200c450d3f20024190096a41106a200241d00c6a41106a29020037030020024190096a41086a200241d00c6a41086a290200370300200241f8086a41086a200241a00a6a41086a290200370300200241f8086a41106a200241a00a6a41106a290200370300200241c8086a41086a200241b0046a41086a290200370300200241c8086a41106a200241b0046a41106a290200370300200220022902d00c37039009200220022902a00a3703f808200220022902b0043703c808200241b0086a41106a200241a8096a41106a290200370300200241b0086a41086a200241a8096a41086a290200370300200220022902a8093703b008411121130c410b200441ff0171450d00200241003a00a00f0b200228028c0a2201450d3d200141246c450d3d200c10230c3d0b20204104490d3c2004280002210620012003417a6a3602042001200441066a36020020024190096a41086a200241800f6a41086a29020037030020024190096a41106a200241800f6a41106a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008411221130c3d0b41002105200241003a00a00f2003417e6a210c417d210602400340200c2005460d01200241800f6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00a00f2006417f6a21062007210520074120470d000b200320076b2203417e6a4104490d3c20022d009f0f211120022900970f210a20022800930f2110200228008f0f2109200228008b0f210820022800870f210c20022800830f210620022f00810f210f20022d00800f210b200420076a220441026a280000212420012003417a6a3602042001200441066a36020020024190096a41086a200241d00c6a41086a29020037030020024190096a41106a200241d00c6a41106a290200370300200241f8086a41086a200241a00a6a41086a290300370300200241f8086a41106a200241a00a6a41106a290300370300200241c8086a41086a200241b0046a41086a290200370300200241c8086a41106a200241b0046a41106a290200370300200220022902d00c37039009200220022903a00a3703f808200220022902b0043703c808200241b0086a41106a200241a8096a41106a290300370300200241b0086a41086a200241a8096a41086a290300370300200220022903a8093703b008200a422088a72121200aa72122411321130c390b200541ff0171450d3b200241003a00a00f0c3b0b200241a0026a200110800220022903a002a70d3a200241a0026a41106a290300210a20022903a802210d20024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290300370300200241f8086a41106a200241d00c6a41106a290300370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022903d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0046a41086a290300370300200220022903b0043703b008200d422088a72108200a422088a72110200da7210c200aa72109411421130c3c0b200241b8026a200110880120022802b8020d3920022802bc02210620024190096a41106a200241d00c6a41106a29020037030020024190096a41086a200241d00c6a41086a290200370300200241f8086a41086a200241a00a6a41086a290300370300200241f8086a41106a200241a00a6a41106a290300370300200241c8086a41086a200241b0046a41086a290200370300200241c8086a41106a200241b0046a41106a290200370300200220022902d00c37039009200220022903a00a3703f808200220022902b0043703c808200241b0086a41106a200241a8096a41106a290300370300200241b0086a41086a200241a8096a41086a290300370300200220022903a8093703b00842002115411521134100211041002109410021084100210c420021180c3b0b41002105200241003a00a00f2003417e6a21072003417d6a21030240034020072005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b20024190096a41086a200241d00c6a41086a29000037030020024190096a41106a200241d00c6a41106a2900003703002002200229008f0f220a3700ef08200220022900870f220d3700e708200220022800830f22063600e308200220022f00810f220f3b00e108200220022d00800f220b3a00e008200220022900d00c3703900920022d009f0f211120022900970f210e200241f8086a41106a200241a00a6a41106a290000370300200241f8086a41086a200241a00a6a41086a290000370300200220022900a00a3703f808200241c8086a41106a200241b0046a41106a290000370300200241c8086a41086a200241b0046a41086a290000370300200220022900b0043703c808200241b0086a41106a200241a8096a41106a290000370300200241b0086a41086a200241a8096a41086a290000370300200220022900a8093703b008200e422088a72121200a422088a72110200d422088a72108200ea72122200aa72109200da7210c411621130c360b200541ff0171450d38200241003a00a00f0c380b200241c0026a200110880120022802c0020d37200728020020022802c4024101742204490d372004417f4c0d110240024020040d00410121060c010b200410272206450d2720072802002004490d3420062001280200200410a1051a200128020422032004490d1b2001200320046b3602042001200128020020046a3602000b2006450d3702402004ad220a422086200a84220a422088a722040d00200aa721040c320b024020062004724101710d00200aa722044101710d002004410176220c450d32200a422188a721080c330b200aa70d330c370b200241c8026a200110880120022802c8020d36200728020020022802cc024101742204490d362004417f4c0d100240024020040d00410121060c010b200410272206450d2620072802002004490d3320062001280200200410a1051a200128020422032004490d1b2001200320046b3602042001200128020020046a3602000b2006450d3602402004ad220a422086200a84220a422088a722040d00200aa721040c2f0b024020062004724101710d00200aa722044101710d002004410176220c450d2f200a422188a721080c300b200aa70d320c360b02402006450d0020012003417e6a3602042001200441026a3602000b200041163602000c3d0b2006450d1b20042d0001210520012003417e6a3602042001200441026a360200200541014b0d1b410021040240024020050e020001000b200241800f6a200110e50220022d00800f4101460d1c200241d00c6a200241800f6a41017241a00110a1051a200241d0026a200110880120022802d0020d1c200728020020022802d4022203490d1c2003417f4c0d0f0240024020030d00410121040c010b200310272204450d2520072802002003490d1c20042001280200200310a1051a200128020422052003490d1b2001200520036b3602042001200128020020036a3602000b2004450d1c2003ad220a422086200a84210a200241a00a6a200241d00c6a41a00110a1051a0b200241b0056a200241a00a6a41a00110a1051a200041086a200a3702002000200436020420004108360200200041106a200241b0056a41a00110a1051a200041b0016a200241b0046a41800110a1051a0c3c0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241d8026a200110880120022802d8020d0020022802dc0221012000410936020020002001360204200041086a200241800f6a41a80210a1051a0c3c0b200041163602000c3b0b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d00200241e0026a200110880120022802e0020d00200728020020022802e4022204490d002004417f4c0d0d02400240024020040d00410121030c010b200410272203450d2420072802002004490d0120032001280200200410a1051a200128020422052004490d1d2001200520046b3602042001200128020020046a3602000b2003450d01200020033602042000410a360200200041086a2004ad220a422086200a84370200200041106a200241800f6a41a00210a1051a0c3c0b200310230b200041163602000c3a0b02402006450d0020042d0001210520012003417e6a22063602042001200441026a36020020050d0020064104490d002004280002210520012003417a6a3602042001200441066a360200200241f8026a200110880120022802f8020d00200728020020022802fc022204490d002004417f4c0d0c0240024002400240024002400240024020040d00410121060c010b200410272206450d2820072802002004490d0120062001280200200410a1051a200128020422032004490d222001200320046b3602042001200128020020046a3602000b2006450d06200241f0026a20011088012004ad220a422086200a84220da72110024020022802f0020d0020022802f402220b2007280200410c6e22042004200b4b1bad420c7e220a422088a70d13200aa72204417f4c0d130240024020040d00410421090c010b200410212209450d290b41002103200241003602d80c200220093602d00c20022004410c6e22083602d40c024002400240200b450d00410021030340200241e8026a200110880120022802e8020d03200728020020022802ec022204490d032004417f4c0d170240024020040d004101210c0c010b20041027220c450d2d20072802002004490d03200c2001280200200410a1051a200128020422082004490d282001200820046b3602042001200128020020046a3602000b2004ad220a422086200a84210a0240200320022802d40c470d00200241d00c6a2003410110950120022802d00c210920022802d80c21030b20092003410c6c6a2204200a3702042004200c3602002002200341016a22033602d80c200b417f6a220b0d000b20022802d40c21080b2009450d022006450d09200728020022074104490d042001280200220b280000210f20012007417c6a22043602042001200b41046a36020020044104490d05200d422088a72112200b28000421132001200741786a22113602042001200b41086a36020041002104200241003a00900d200741776a2107034020112004460d07200241d00c6a20046a200b20046a220c41086a2d00003a0000200120073602042001200c41096a3602002002200441016a220c3a00900d2007417f6a2107200c2104200c41c000470d000b200c41ff017141c000490d072006450d09200228028c0d210120022f018a0d210420022d00890d210720022d00880d210c20022802840d210b20022802800d211120022802fc0c211e20022802f80c211f20022f01f60c212320022d00f50c212520022d00f40c212620022802f00c212720022802ec0c212820022d00e80c212920022903e00c210a20022802dc0c212a20022802d80c212b20022802d40c212c20022802d00c212d200020022f00e90c200241eb0c6a2d000041107472222e3b0041200020073a0061200020233b004e200020253a004d200020053602042000410b360200200041c3006a202e4110763a0000200041e4006a2001360200200041e2006a20043b0100200041e0006a200c3a0000200041dc006a200b360000200041d8006a2011360000200041d4006a201e360000200041d0006a201f360000200041cc006a20263a0000200041c8006a2027360000200041c4006a2028360000200041c0006a20293a0000200041386a200a370200200041346a202a360200200041306a202b3602002000412c6a202c360200200041286a202d360200200041246a2013360200200041206a200f3602002000411c6a2003360200200041186a2008360200200041146a2009360200200041106a20123602002000410c6a2010360200200041086a2006360200200041e8006a200241800f6a41c80110a1051a0c430b200c10230b02402003450d002003410c6c21042009210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b20022802d40c2201450d002001410c6c450d00200910230b2010450d060b200610230c050b02402010450d00200610230b02402003450d002003410c6c21042009210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b2008450d042008410c6c0d030c040b02402010450d00200610230b02402003450d002003410c6c21042009210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b2008450d032008410c6c0d020c030b200441ff0171450d00200241003a00900d0b02402010450d00200610230b02402003450d002003410c6c21042009210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b2008450d012008410c6c450d010b200910230b200041163602000c390b02402006450d0020012003417e6a3602042001200441026a3602000b200041163602000c380b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541014b0d0002400240024002400240024020050e020001000b200241b0056a2001109c0320022802b0052210450d05200241b8056a280200210f20022802b4052111200241d00c6a200241800f6a41c30110a1051a410121010c010b41002105200241003a00d0052003417e6a210c2003417d6a21030340200c2005460d02200241b0056a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00d0052003417f6a21032006210520064120470d000b20022d00cf05212820022900c705210a20022800c305210920022800bf05210b20022800bb05210c20022800b705210620022800b305210520022f00b105210320022d00b0052104200241b0056a2001109d0320022d00b00522084103460d04200241a8096a200241b0056a41017241e00010a1051a200241b0056a2001109d0320022d00b0054103460d04200241b0046a200241b0056a41e10010a1051a200728020022114104490d042001280200220f280000211020012011417c6a3602042001200f41046a360200200241b0056a2001109a0320022802b0052211450d04200241b8056a280200211220022802b405210f2007280200221e4104490d032001280200222328000021132001201e417c6a22253602042001202341046a36020041002107200241003a00d005201e417b6a211e034020252007460d03200241b0056a20076a202320076a221f41046a2d00003a00002001201e3602042001201f41056a3602002002200741016a221f3a00d005201e417f6a211e201f2107201f4120470d000b20023100cf05211420022900c705210e20022800c305212720022800bf05212620022800bb05212520022800b705212320022800b305211f20022f00b105211e20022d00b0052107200241800f6a200241a8096a41e00010a1051a200241800f6a41e0006a200241b0046a41e10010a1051a200241d00c6a200241800f6a41c30110a1051a2028ad210d410221010b200241a00a6a200241d00c6a41c30110a1051a200041db006a200d3c0000200041d3006a200a3700002000413b6a20143c0000200041336a200e370000200041dc006a20083a0000200041cf006a2009360000200041cb006a200b360000200041c7006a200c360000200041c3006a20063600002000413f6a20053600002000413d6a20033b00002000413c6a20043a00002000412f6a20273600002000412b6a2026360000200041276a2025360000200041236a20233600002000411f6a201f3600002000411d6a201e3b00002000411c6a20073a0000200041186a2013360200200041146a2012360200200041106a200f3602002000410c6a2011360200200041086a2010360200200020013602042000410d360200200041dd006a200241a00a6a41c30110a1051a200041a8026a200241880a6a41086a290300370300200041a0026a20022903880a3703000c3b0b200541ff0171450d02200241003a00d0050c020b200741ff0171450d00200241003a00d0050b02402012450d002012410c6c21042011210103400240200141046a280200450d00200128020010230b2001410c6a2101200441746a22040d000b0b200f450d00200f410c6c450d00201110230b200041163602000c370b02402006450d0020042d0001210520012003417e6a3602042001200441026a36020020050d002000410e360200200041046a200241800f6a41ac0210a1051a0c370b200041163602000c360b2006450d2420042d0001210520012003417e6a222e3602042001200441026a3602004106210c200541064b0d244200210a02400240024002400240024002400240024020050e0700010203040805000b20024190036a20011088012002280290030d2c20072802002203450d2c200228029403210b200128020022052d0000210420012003417f6a3602042001200541016a360200200441014b0d2c410021090240024020040e020100010b410121090b20024188036a20011088012002280288030d2c2007280200200228028c032204490d2c2004417f4c0d0f02400240024020040d00410121080c010b200410272208450d2620072802002004490d0120082001280200200410a1051a200128020422032004490d222001200320046b3602042001200128020020046a3602000b2008450d2d20024180036a20011088012004ad220a422086200a84220aa7210f02402002280280030d0020072802002002280284032204490d002004417f4c0d1102400240024020040d00410121130c010b200410272213450d2820072802002004490d0120132001280200200410a1051a200128020422032004490d252001200320046b3602042001200128020020046a3602000b2013450d01200a422088a721112004ad220a422086200a84220d42808080807083210a200da721124101210c0c0a0b201310230b200f450d2d0b200810230c2c0b20024198036a20011088012002280298030d2b200228029c03210b4102210c0c040b202e4104490d2a2004280002210b20012003417a6a3602042001200441066a3602004103210c0c030b200241a8036a200110880120022802a8030d29200728020020022802ac032204490d292004417f4c0d0c02400240024020040d004101210b0c010b20041027220b450d2320072802002004490d01200b2001280200200410a1051a200128020422032004490d212001200320046b3602042001200128020020046a3602000b200b450d2a200241a0036a20011088012004ad220d422086200d84220da72108024020022802a0030d00200728020020022802a4032212490d002012417f4c0d0e02400240024020120d00410121110c010b201210272211450d2520072802002012490d0120112001280200201210a1051a200128020422042012490d242001200420126b3602042001200128020020126a3602000b2011450d01200d422088a7210f4104210c201221130c060b201110230b2008450d2a0b200b10230c290b200241b0036a200110880120022802b0030d2820022802b403211041002104200241003a00f00c20072802002107417f210302400240034020072004460d01200241d00c6a20046a200128020022062d00003a00002001200720036a3602042001200641016a3602002002200441016a22053a00f00c2003417f6a21032005210420054120470d000b20022d00ef0c211f20022900e70c210d20022800e30c211320022800df0c211120022800db0c210f20022800d70c210820022800d30c210b20022f00d10c211e20022d00d00c210941002104200241003a00f00c200720056b210c200720036a21030340200c2004460d02200241d00c6a20046a200620046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00f00c2003417f6a21032005210420054120470d000b200220022f00d10c3b00e108200220022d00d00c3a00e00820022800db0c2223411076212820234108762127200d42808080807083210a20022f01e00820022d00e20841107472210620022900e70c220e422088a7212c20022d00ef0c212d20022800e30c212a20022800df0c212920022800d70c212620022800d30c2125200ea7212b200da721124105210c0c050b200441ff0171450d29200241003a00f00c0c290b200441ff0171450d28200241003a00f00c0c280b200241b8036a200110880120022802b8030d2720022802bc03210b4107210c0b0b0b200020063b0025200020283b0032200020273a00312000201e3b0106200020093a00052000200c3a00042000410f360200200041276a20064110763a0000200041c8006a2010360200200041c4006a202d3a0000200041c0006a202c3600002000413c6a202b360000200041386a202a360000200041346a2029360000200041306a20233a00002000412c6a2026360000200041286a2025360000200041246a201f3a0000200041186a2013360200200041146a2011360200200041106a200f3602002000410c6a2008360200200041086a200b3602002000411c6a200a2012ad84370200200041cc006a200241800f6a41e40110a1051a0c350b2006450d2120042d0001210520012003417e6a22063602042001200441026a360200200541044b0d2102400240024002400240024002400240024020050e050001020304000b200241c0036a200110880120022802c0030d2920022802c4032206200728020041b0026e2204200420064b1bad42b0027e220a422088a70d0e200aa72203417f4c0d0e0240024020030d00410821050c010b200310212205450d240b41002104200241003602b804200220053602b0042002200341b0026e3602b404024002402006450d00200241800f6a410472210c0340200241800f6a200110990320022802800f2103200241d00c6a200c41ac0210a1051a20034116460d02200241a00a6a200241d00c6a41ac0210a1051a0240200420022802b404470d00200241b0046a2004410110ad0120022802b004210520022802b80421040b2005200441b0026c6a22072003360200200741046a200241a00a6a41ac0210a1051a2002200441016a22043602b8042006417f6a22060d000b0b2005450d2a20022902b404220a422088a72103200aa721044101211e41002107410021110c060b02402004450d00200441b0026c21042005210103402001109e03200141b0026a2101200441d07d6a22040d000b0b20022802b4042201450d29200141b0026c450d29200510230c290b20064102490d2820042f0002210920012003417c6a3602042001200441046a360200200241800f6a200110990320022802800f2101200241d00c6a200241800f6a41047241ac0210a1051a20014116460d28200241800f6a200241d00c6a41ac0210a1051a41b002102122050d030c290b20064102490d2720042f0002210920012003417c6a3602042001200441046a360200200241800f6a200110cf0120022802800f2205450d2720022802840f2104024020072802002206450d00200241880f6a28020021032001280200220b2d0000210c20012006417f6a22083602042001200b41016a360200200c41014b0d004100211302400240200c0e020100010b20084104490d01200b280001210720012006417b6a220c3602042001200b41056a360200200c4104490d01200b28000521122001200641776a3602042001200b41096a360200410121130b200241800f6a200110990320022802800f2106200241d00c6a200241800f6a41047241ac0210a1051a20064116460d06200241800f6a200241d00c6a41ac0210a1051a41b00210212201450d2920012006360200200141046a200241800f6a41ac0210a1051a4103211e0c040b200441ffffff3f71450d270c260b20064102490d2620042f0002210b20012003417c6a3602042001200441046a360200200241800f6a200110cf0120022802800f2206450d2620022802840f210c024020072802002204450d00200241880f6a2802002108200128020022052d0000210320012004417f6a22073602042001200541016a360200200341014b0d00410021100240024020030e020100010b20074104490d012005280001211120012004417b6a22033602042001200541056a36020020034104490d012005280005210f2001200441776a22073602042001200541096a360200410121100b41002103200241003a00a00f2007417f6a2104024003402004417f460d01200241800f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a00f2004417f6a21042005210320054120470d000b20022900970f220a422088a7210120022d009f0f211f20022800930f2107200228008f0f2113200228008b0f210320022800870f210420022800830f210520022f00810f210920022d00800f2123200aa721124104211e0c050b0240200341ff0171450d00200241003a00a00f0b200c41ffffff3f71450d27200610230c270b200c41ffffff3f71450d26200610230c260b20064102490d2520042f0002210b20012003417c6a3602042001200441046a360200200241800f6a200110cf0120022802800f2206450d2520022802840f210c0240200728020022034104490d00200241880f6a280200210820012802002207280000211020012003417c6a22043602042001200741046a36020020044104490d00200728000421112001200341786a22093602042001200741086a36020041002104200241003a00a00f200341776a21030240034020092004460d01200241800f6a20046a200720046a220541086a2d00003a0000200120033602042001200541096a3602002002200441016a22053a00a00f2003417f6a21032005210420054120470d000b20022900970f220a422088a7210120022d009f0f211f20022800930f2107200228008f0f2113200228008b0f210320022800870f210420022800830f210520022f00810f210920022d00800f2123200aa721124105211e0c040b0240200441ff0171450d00200241003a00a00f0b200c41ffffff3f71450d26200610230c260b200c41ffffff3f71450d25200610230c250b20052001360200200541046a200241800f6a41ac0210a1051a4102211e0b0b200020233a00052000201e3a0004200041103602002000413c6a200f360200200041386a2011360200200041346a2010360200200041306a20083602002000412c6a200c360200200041286a2006360200200041266a200b3b0100200041246a201f3a0000200041206a20013602002000411c6a2012360200200041186a2007360200200041146a2013360200200041106a20033602002000410c6a2004360200200041086a2005360200200041066a20093b0100200041c0006a200241b0056a41f00110a1051a0c350b200441ffffff3f710d200c210b2006450d1e20042d0001210620012003417e6a222f3602042001200441026a3602002006410a4b0d1e410421304200211d0240024002400240024002400240024002400240024020060e0b0001022803040506070809000b41002105200241003a00a00f2003417e6a21072003417d6a21030240034020072005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b200241c8086a41086a200241d00c6a41086a290000370300200241c8086a41106a200241d00c6a41106a290000370300200241b0086a41086a200241a00a6a41086a290000370300200241b0086a41106a200241a00a6a41106a290000370300200220022900d00c3703c808200220022900a00a3703b0082002418f0f6a290000210a2002419f0f6a310000210e20022800830f210c20022f00810f211320022d00800f211e20022900870f210d20022900970f211420024198086a41106a200241b0056a41106a29000037030020024198086a41086a200241b0056a41086a290000370300200220022900b0053703980820024180086a41106a200241b0046a41106a29000037030020024180086a41086a200241b0046a41086a290000370300200220022900b004370380082014422088200e42208684210e200d422088a72105200a422088a7210f200a4280feffff0f83420888a721312014a72110200da7210b200aa7210841012130410021120c280b200541ff0171450d28200241003a00a00f0c280b200241c8036a200110880120022802c8030d2720022802cc032206200728020041c8006e2204200420064b1bad42c8007e220a422088a70d0e200aa72204417f4c0d0e0240024020040d004104210c0c010b20041021220c450d240b41002105200241003602e8082002200c3602e0082002200441c8006e220b3602e4080240024002402006450d00200241d00c6a410c6a2113410021050340200241d00c6a2001109f030240024020022d00d00c22034106470d00410621030c010b200241a8096a41086a2209201341086a290200370300200241a8096a41106a2208201341106a290200370300200220132902003703a80920022802d80c210420022802d40c210b20022f01d20c211020022d00d10c2111200241800f6a2001109f03024020022d00800f4106470d00024020034101470d002004450d00200b10230b410621030c010b200241880a6a41106a2008290300370300200241880a6a41086a2009290300370300200241a00a6a41086a200241800f6a41086a290300370300200241a00a6a41106a200241800f6a41106a290300370300200241a00a6a41186a200241800f6a41186a290300370300200241a00a6a41206a200241800f6a41206a280200360200200220022903a8093703880a200220022903800f3703a00a2011211e2010211f20042123200b21250b20024190096a41086a2204200241880a6a41086a29030037030020024190096a41106a220b200241880a6a41106a290300370300200241b0056a41086a2209200241a00a6a41086a290300370300200241b0056a41106a2208200241a00a6a41106a290300370300200241b0056a41186a2210200241a00a6a41186a290300370300200241b0056a41206a2211200241a00a6a41206a280200360200200220022903880a37039009200220022903a00a3703b00520034106460d02200241f8086a41106a220f200b290300370300200241f8086a41086a220b2004290300370300200241b0046a41086a22122009290300370300200241b0046a41106a22092008290300370300200241b0046a41186a22082010290300370300200241b0046a41206a2210201128020036020020022002290390093703f808200220022903b0053703b0040240200520022802e408470d00200241e0086a2005410110a10120022802e008210c20022802e80821050b200c200541c8006c6a2204201e3a0001200420033a0000200441086a2023360000200441046a2025360000200441026a201f3b00002004410c6a20022903f808370000200441146a200b2903003700002004411c6a200f290300370000200441246a20022903b0043700002004412c6a2012290300370000200441346a20092903003700002004413c6a2008290300370000200441c4006a20102802003600002002200541016a22053602e8082006417f6a22060d000b20022802e408210b0b200c0d010c290b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b20022802e4082201450d28200141c8006c450d28200c10230c280b200241800f6a2001109f0302400240024002400240024002400240024020022d00800f22084106460d00200241a00f6a280200211f200241980f6a290300210d200241940f6a220428020021092002418c0f6a2203290200210e200241880f6a2206280200211020022802840f210f20022f00810f211320022d00830f211e200241800f6a2001109f0320022d00800f22124106460d012002419c0f6a222a290200211520042902002114200241800f6a41106a28020021282002418e0f6a2f010021292002418d0f6a2d0000212720032d000021262006280200211120022802840f212320023301820f211d20023100810f2117200241800f6a2001109f0320022d00800f22254106460d02200241b0046a41086a200241940f6a2204290200370300200241b0046a41106a202a29020037030020022002418c0f6a22032902003703b004200241800f6a41086a2206280200212a20022802840f212b20022f01820f212e20022d00810f212d200241800f6a2001109f0320022d00800f222c4106460d03200241b0056a41086a2004290200370300200241b0056a41106a2002419c0f6a2204290200370300200220032902003703b0052006280200213220022802840f213320022f01820f213420022d00810f2135200241800f6a2001109f0320022d00800f22364106460d06200241a00a6a41086a200241940f6a290200370300200241b00a6a200429020037030020022002418c0f6a2902003703a00a200241800f6a41086a280200213720022802840f213820072802002204450d0720022f01820f213920022d00810f213a200128020022032d0000210620012004417f6a22073602042001200341016a360200200641014b0d0742002118410021244200211920060e020504050b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d2f200b41c8006c450d2f200c10230c2f0b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d2e200b41c8006c450d2e200c10230c2e0b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d2d200b41c8006c450d2d200c10230c2d0b024020254101470d00202a450d00202b10230b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d2c200b41c8006c450d2c200c10230c2c0b2007450d0220032d0001210720012004417e6a22063602042001200341026a3602002006450d0220032d0002212420012004417d6a22063602042001200341036a3602002006450d0220032d0003212220012004417c6a22063602042001200341046a3602002006450d0220032d0004212120012004417b6a22063602042001200341056a3602002006450d0220032d0005212020012004417a6a22063602042001200341066a3602002006450d0220032d0006213b2001200441796a22063602042001200341076a3602002006450d0220032d0007213c2001200441786a22063602042001200341086a3602002006450d0220032d000821302001200441776a22063602042001200341096a3602002006450d0220032d0009213d2001200441766a220636020420012003410a6a3602002006450d0220032d000a213e2001200441756a220636020420012003410b6a3602002006450d0220032d000b213f2001200441746a220636020420012003410c6a3602002006450d0220032d000c21312001200441736a220636020420012003410d6a3602002006450d0220032d000d212f2001200441726a220636020420012003410e6a3602002006450d0220032d000e21402001200441716a220636020420012003410f6a3602002006450d0220032d000f21412001200441706a22063602042001200341106a3602002006450d0220032d0010214220012004416f6a22063602042001200341116a3602002006450d0220032d0011214320012004416e6a22063602042001200341126a3602002006450d0220032d0012214420012004416d6a22063602042001200341136a3602002006450d0220032d0013214520012004416c6a22063602042001200341146a3602002006450d022003310014211920012004416b6a3602042001200341156a360200203fad421086203ead42ff018342088684203dad42ff018384210a202fad42ff01834208862031ad42ff0183842040ad42ff0183421086842041ad42ff0183421886842042ad42ff0183422086842043ad42ff0183422886842044ad42ff0183423086842045ad4238868421182030ad423886203cad42ff018342308684203bad42ff0183422886842020ad42ff0183422086842021ad42ff0183421886842022ad42ff0183421086842024ad42ff0183420886842007ad42ff018384211a410121240b200241800f6a2001109f0320022d00800f22224106460d02200241d00c6a41086a2204200241940f6a290200370300200241d00c6a41106a22032002419c0f6a29020037030020022002418c0f6a22062902003703d00c200241800f6a41086a2207280200212120022802840f212020022f01820f213c20022d00810f213b200241800f6a2001109f0320022d00800f4106470d0b024020224101470d002021450d00202010230b024020364101470d002037450d00203810230b0240202c4101470d002032450d00203310230b024020254101470d00202a450d00202b10230b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d2a200b41c8006c450d2a200c10230c2a0b0240202c4101470d002032450d00203310230b024020254101470d00202a450d00202b10230b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d29200b41c8006c450d29200c10230c290b024020364101470d002037450d00203810230b0240202c4101470d002032450d00203310230b024020254101470d00202a450d00202b10230b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d28200b41c8006c450d28200c10230c280b024020364101470d002037450d00203810230b0240202c4101470d002032450d00203310230b024020254101470d00202a450d00202b10230b024020124101470d002011450d00202310230b024020084101470d002010450d00200f10230b02402005450d00200c200541c8006c6a2104200c21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012004470d000b0b200b450d27200b41c8006c450d27200c10230c270b200241d0036a200110880120022802d0030d2620022802d403220b200728020041c4006e22042004200b4b1bad42c4007e220a422088a70d0d200aa72204417f4c0d0d0240024020040d004104210c0c010b20041021220c450d230b4100210620024100360280092002200c3602f8082002200441c4006e3602fc08024002400240200b450d00200241800f6a410172210841002109034041002103200241003a00a00f200941016a21092007280200417f6a210403402004417f460d03200241800f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a00f2004417f6a21042005210320054120470d000b20022d009f0f210420022900970f210a20022800930f2103200228008f0f2105200228008b0f211020022800870f211120022800830f210f20022f00810f211220022d00800f2113200241800f6a2001109f0320022d00800f221e4106460d03200241d00c6a411f6a221f2008411f6a280000360000200241d00c6a41186a2223200841186a290000370300200241a00a6a41086a2225200841086a290000370300200241a00a6a41106a2226200841106a290000370300200241a00a6a41186a22272023290300370300200241a00a6a411f6a2223201f280000360000200220082900003703a00a200220033600f308200220053600ef08200220103600eb08200220113600e7082002200f3600e308200220123b00e108200220133a00e008200241b0056a411f6a22032023280000360000200241b0056a41186a22052027290300370300200241b0056a41106a22102026290300370300200241b0056a41086a22112025290300370300200220022903a00a3703b0052004ad210d0240200620022802fc08470d00200241f8086a20064101109b0120022802f808210c20022802800921060b200241e0086a41086a290300210e200241e0086a410f6a290000211420022903e0082115200c200641c4006c6a2204201e3a00202004200a370017200420153702002004411f6a200d3c00002004410f6a2014370000200441086a200e370200200420022903b005370021200441296a2011290300370000200441316a2010290300370000200441396a2005290300370000200441c0006a20032800003600002002200641016a2206360280092009200b470d000b0b200c450d2820022902fc08210a200241c8086a41106a200241b0046a41106a290200370300200241c8086a41086a200241b0046a41086a290200370300200241b0086a41086a200241a8096a41086a290300370300200241b0086a41106a200241a8096a41106a29030037030020024198086a41086a200241880a6a41086a29020037030020024198086a41106a200241880a6a41106a290200370300200220022902b0043703c808200220022903a8093703b008200220022902880a3703980820024180086a41106a20024190096a41106a29030037030020024180086a41086a20024190096a41086a290300370300200220022903900937038008200a422088a72105200aa7210b41032130410021120c270b200341ff0171450d00200241003a00a00f0b200241a00a6a411f6a200241d00c6a411f6a280000360000200241a00a6a41186a200241d00c6a41186a29030037030002402006450d00200641c4006c2104200c41286a210103400240200141786a2d00004101470d002001280200450d002001417c6a28020010230b200141c4006a2101200441bc7f6a22040d000b0b20022802fc082201450d26200141c4006c450d26200c10230c260b200241f0036a200110880120022802f0030d2520022802f403210c200241d8036a200110800220022903d803a70d25200241d8036a41106a290300210a20022903e003210d200241c8086a41106a200241800f6a41106a290200370300200241c8086a41086a200241800f6a41086a290200370300200241b0086a41086a200241d00c6a41086a290300370300200241b0086a41106a200241d00c6a41106a29030037030020024198086a41086a200241a00a6a41086a29020037030020024198086a41106a200241a00a6a41106a290200370300200220022902800f3703c808200220022903d00c3703b008200220022902a00a3703980820024180086a41106a200241b0056a41106a29030037030020024180086a41086a200241b0056a41086a290300370300200220022903b00537038008200d422088a72105200a422088a7210f200a4280feffff0f83420888a72131200da7210b200aa7210841052130410021120c240b202f4104490d242004280002210c20012003417a6a360204410621302001200441066a360200200241c8086a41086a200241800f6a41086a290200370300200241c8086a41106a200241800f6a41106a290200370300200241b0086a41086a200241d00c6a41086a290300370300200241b0086a41106a200241d00c6a41106a29030037030020024198086a41086a200241a00a6a41086a29020037030020024198086a41106a200241a00a6a41106a290200370300200220022902800f3703c808200220022903d00c3703b008200220022902a00a3703980820024180086a41106a200241b0056a41106a29030037030020024180086a41086a200241b0056a41086a290300370300200220022903b00537038008410021054100213141002108410021120c230b20024190046a20011088012002280290040d23200228029404210c200241f8036a200110800220022903f803a70d23200241f8036a41106a290300210a200229038004210d200241c8086a41106a200241800f6a41106a290200370300200241c8086a41086a200241800f6a41086a290200370300200241b0086a41086a200241d00c6a41086a290300370300200241b0086a41106a200241d00c6a41106a29030037030020024198086a41086a200241a00a6a41086a29020037030020024198086a41106a200241a00a6a41106a290200370300200220022902800f3703c808200220022903d00c3703b008200220022902a00a3703980820024180086a41106a200241b0056a41106a29030037030020024180086a41086a200241b0056a41086a290300370300200220022903b00537038008200d422088a72105200a422088a7210f200a4280feffff0f83420888a72131200da7210b200aa7210841072130410021120c220b20024198046a20011088012002280298040d22200228029c04210941002103200241003a00a00f2007280200417f6a2104024003402004417f460d01200241800f6a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00a00f2004417f6a21042005210320054120470d000b41082130200241c8086a41086a200241d00c6a41086a290200370300200241c8086a41106a200241d00c6a41106a290200370300200241b0086a41086a200241a00a6a41086a290300370300200241b0086a41106a200241a00a6a41106a290300370300200220022902d00c3703c808200220022903a00a3703b0082002418f0f6a290000210a2002419f0f6a310000210e20022800830f210c20022f00810f211320022d00800f211e20022900870f210d20022900970f211420024198086a41106a200241b0046a41106a29020037030020024198086a41086a200241b0046a41086a290200370300200220022902b0043703980820024180086a41106a200241a8096a41106a29030037030020024180086a41086a200241a8096a41086a290300370300200220022903a809370380082014422088200e42208684210e200d422088a72105200a422088a7210f200a4280feffff0f83420888a721312014a72110200da7210b200aa72108410021120c220b200341ff0171450d22200241003a00a00f0c220b200241a0046a200110880120022802a0040d21200728020022044108490d2120022802a404210c20012802002203290000210a2001200441786a3602042001200341086a360200200a4280025a0d21200241c8086a41106a200241800f6a41106a290200370300200241c8086a41086a200241800f6a41086a290200370300200241b0086a41086a200241d00c6a41086a290300370300200241b0086a41106a200241d00c6a41106a29030037030020024198086a41086a200241a00a6a41086a29020037030020024198086a41106a200241a00a6a41106a290200370300200220022902800f3703c808200220022903d00c3703b008200220022902a00a3703980820024180086a41106a200241b0056a41106a29030037030020024180086a41086a200241b0056a41086a290300370300200220022903b00537038008200a422088a72105200aa7210b41092130410021120c200b200241a8046a200110880120022802a8040d2020022802ac04210941002104200241003a00a00f20072802002106417f21030240024002400240024002400240034020062004460d01200241800f6a20046a200128020022072d00003a00002001200620036a3602042001200741016a3602002002200441016a22053a00a00f2003417f6a21032005210420054120470d000b200241a00a6a411f6a200241800f6a411f6a310000220e3c0000200241a00a6a410f6a200241800f6a410f6a290000220a370000200220022900970f22153700b70a200220022900870f22183700a70a200220022800830f220c3600a30a200220022f00810f22133b00a10a200220022d00800f221e3a00a00a20062005460d2720072d000121042001200620036a22033602042001200741026a360200200441064b0d274200210d410021234100211120040e0725010203040506250b200441ff0171450d26200241003a00a00f0c260b20034110490d252007410a6a290000210d200729000221142001200620056b416f6a3602042001200741126a360200200da72123200d422088a721114201210d0c230b4202210d410021110c220b4203210d410021110c210b4204210d410021110c200b4205210d410021110c1f0b4206210d410021110c1e0b41002105200241003a00a00f2003417e6a21072003417d6a21030240034020072005460d01200241800f6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00a00f2003417f6a21032006210520064120470d000b200241c8086a41086a200241d00c6a41086a290000370300200241c8086a41106a200241d00c6a41106a290000370300200241b0086a41086a200241a00a6a41086a290000370300200241b0086a41106a200241a00a6a41106a290000370300200220022900d00c3703c808200220022900a00a3703b0082002418f0f6a290000210a2002419f0f6a310000210e20022800830f210c20022f00810f211320022d00800f211e20022900870f210d20022900970f211420024198086a41106a200241b0056a41106a29000037030020024198086a41086a200241b0056a41086a290000370300200220022900b0053703980820024180086a41106a200241b0046a41106a29000037030020024180086a41086a200241b0046a41086a290000370300200220022900b004370380082014422088200e42208684210e200d422088a72105200a422088a7210f200a4280feffff0f83420888a721312014a72110200da7210b200aa72108410b2130410021120c1f0b200541ff0171450d1f200241003a00a00f0c1f0b2013201e411074722131200241c8086a41086a200241b0046a41086a290300370300200241c8086a41106a200241b0046a41106a290300370300200241b0086a41086a200241b0056a41086a290300370300200241b0086a41106a200241b0056a41106a290300370300200220022903b0043703c808200220022903b0053703b008200241980f6a290300211c200241800f6a41106a290300211b200241a00f6a280200213d2006280200213e2007280200213f20022903800f211620024198086a41106a200241a00a6a41106a29030037030020024198086a41086a200241a00a6a41086a290300370300200220022903a00a3703980820024180086a41106a200329030037030020024180086a41086a2004290300370300200220022903d00c37038008201d420886201784211d410221300c1d0b200241d00c6a200110a003024020022d00d00c410a460d00200241a00a6a200241d00c6a41c40010a1051a20004112360200200041046a200241a00a6a41c40010a1051a200041c8006a200241800f6a41e80110a1051a0c330b200041163602000c320b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200541024b0d0041012107024002400240024020050e03020001020b41002105200241003a00f00c2003417e6a21072003417d6a21030240034020072005460d01200241d00c6a20056a200420056a220641026a2d00003a0000200120033602042001200641036a3602002002200541016a22063a00f00c2003417f6a21032006210520064120470d000b20022d00ef0c210620022900e70c210a20022800e30c210c20022800df0c210b20022800db0c210920022800d70c210820022800d30c211020022f00d10c211120022d00d00c210f410221070c020b200541ff0171450d03200241003a00f00c0c030b41002105200241003a00f00c2003417e6a210c417d21060340200c2005460d02200241d00c6a20056a200420056a220741026a2d00003a00002001200320066a3602042001200741036a3602002002200541016a22073a00f00c2006417f6a21062007210520074120470d000b200320076b2203417e6a4110490d0220022d00ef0c210620022900e70c210a20022800e30c210c20022800df0c210b20022800db0c210920022800d70c210820022800d30c211020022f00d10c211120022d00d00c210f200420076a2204410a6a290000210e200441026a290000210d20012003416e6a22053602042001200441126a220736020020054110490d022004411a6a29000021152007290000211420012003415e6a22053602042001200441226a220736020020054104490d022007280000211220012003415a6a3602042001200441266a360200410321070b200020113b000a2000200f3a000920004113360200200041c8006a2015370200200041c0006a2014370200200041386a200e370200200041306a200d370200200041d0006a2012360200200041286a20063a0000200041206a200a3700002000411c6a200c360000200041186a200b360000200041146a2009360000200041106a20083600002000410c6a2010360000200041086a20073a0000200041d8006a200241800f6a41d80110a1051a0c330b200541ff0171450d00200241003a00f00c0b200041163602000c310b02402006450d0020012003417e6a3602042001200441026a3602000b200041163602000c300b200041163602000c2f0b200241d00c6a200110a10320022d00d00c4104470d16200041163602000c2e0b1032000b20042003418ca9c0001044000b20042003418ca9c0001044000b20042003418ca9c0001044000b20042003418ca9c0001044000b20032008418ca9c0001044000b20042003418ca9c0001044000b20042003418ca9c0001044000b200c10230c1d0b20042003418ca9c0001044000b20042003418ca9c0001044000b20032005418ca9c0001044000b200410230b200041163602000c200b20042005418ca9c0001044000b20042003418ca9c0001044000b20042008418ca9c0001044000b20042003418ca9c0001044000b20042003418ca9c0001044000b20042003418ca9c0001044000b20122004418ca9c0001044000b1033000b200241a00a6a41206a200241d00c6a41206a290300220a370300200241a00a6a41186a200241d00c6a41186a290300220d370300200241a00a6a41106a200241d00c6a41106a290300220e370300200241a00a6a41086a200241d00c6a41086a2903002214370300200220022903d00c22153703a00a20004115360200200020153702042000410c6a2014370200200041146a200e3702002000411c6a200d370200200041246a200a3702002000412c6a200241800f6a41840210a1051a0c170b200241c8086a41086a200241d00c6a41086a290200370300200241c8086a41106a200241d00c6a41106a290200370300200241b0086a41086a200241b0056a41086a290300370300200241b0086a41106a200241b0056a41106a29030037030020024198086a41086a200241b0046a41086a29020037030020024198086a41106a200241b0046a41106a290200370300200220022902d00c3703c808200220022903b0053703b008200220022902b0043703980820024180086a41106a200241a8096a41106a29030037030020024180086a41086a200241a8096a41086a290300370300200220022903a809370380082015422088200e42ff018342208684210e2014422888211d2014422088a721122018422088a72105200a422088a7210f200a4280feffff0f83420888a721312014a7211f2015a721102018a7210b200aa72108410a21300b200241e8076a41106a2201200241c8086a41106a290300370300200241e8076a41086a2204200241c8086a41086a290300370300200241d0076a41086a2203200241b0086a41086a290300370300200241d0076a41106a2206200241b0086a41106a290300370300200241b8076a41086a220720024198086a41086a290300370300200241b8076a41106a222f20024198086a41106a290300370300200220022903c8083703e807200220022903b0083703d00720022002290398083703b807200241a0076a41106a224020024180086a41106a290300370300200241a0076a41086a224120024180086a41086a29030037030020022002290380083703a007200041d8006a2015370200200041d0006a2014370200200041186a2031410874ad2008ad42ff0183843e0200200041106a2005ad422086200bad84370200200041e8006a202a360200200041e4006a202b3602002000202e3b00622000202d3a0061200041e0006a20253a0000200041cc006a2028360200200020293b014a200020273a0049200041c8006a20263a0000200041c4006a2011360200200041c0006a2023360200200041386a201d4228862012ad42ff018342208684201fad84370200200041306a200d3702002000412c6a2009360200200041246a200e370200200041206a20103602002000411c6a200f3602002000410c6a200c360200200020133b000a2000201e3a0009200041086a20303a00002000411136020020004188016a20333602002000418c016a2032360200200020343b008601200020353a00850120004184016a202c3a0000200041a8016a20363a00002000203a3a00a901200020393b00aa01200041b0016a2037360200200041ac016a2038360200200041fc006a2001290300370200200041f4006a2004290300370200200041ec006a20022903e80737020020004190016a20022903d00737020020004198016a2003290300370200200041a0016a2006290300370200200041cc016a20223a00002000203b3a00cd012000203c3b00ce01200041d4016a2021360200200041d0016a20203602002000419f026a200a4210883c00002000419d026a200a3d0000200041a8026a20193e0000200041a0026a20183700002000201a3700950220004188026a201c37020020004180026a201b37020020004194026a20243a0000200041ac026a410036020020004190026a203d360200200041fc016a203e360200200041f8016a203f360200200041f0016a2016370200200041c4016a202f290300370200200041bc016a2007290300370200200041b4016a20022903b807370200200041d8016a20022903a007370200200041e0016a2041290300370200200041e8016a20402903003702000c150b200041163602000c140b200510230b200041163602000c120b102a000b200041163602000c100b4100210c02402004450d00200610230b41022106410021080b41000d062006450d06200241800f6a200110820202400240024020022802800f450d00200241d00c6a200241800f6a41c00110a1051a200728020022034110490d012001280200220441086a29000021142004290000210e2001200441106a3602002001200341706a220536020420054110490d01200441186a2900002118200429001021152001200341606a22053602042001200441206a36020020054110490d01200441286a290000211a200429002021192001200341506a22053602042001200441306a36020020054104490d022004280030213920012003414c6a3602042001200441346a36020020024190096a41086a2002418c0d6a29020037030020024190096a41106a200241940d6a2902003703002002200241d00c6a41346a29020037039009200241f00c6a290300210d200241d00c6a41106a2d00002111200241e40c6a2802002124200241d00c6a41286a2d0000211e200241fc0c6a280200211f20022903e80c210a20022802d00c210920022802d40c211020022802d80c212220022802dc0c212120022d00e10c211220022f01e20c213a20022d00f90c212e20022f01fa0c213220022802800d2123200241f8086a41086a200241b00d6a290300370300200241f8086a41106a200241b80d6a290300370300200241c8086a41086a200241d40d6a290200370300200241c8086a41106a200241dc0d6a2902003703002002200241a80d6a2903003703f8082002200241cc0d6a2902003703c808200241a00d6a28020021262002419c0d6a2d00002125200241c40d6a2802002129200241c00d6a2d0000212820022802a40d212720022f019e0d213620022d009d0d213320022802c80d212a20022f01c20d213420022d00c10d2135200241b0086a41106a200241800e6a290300370300200241b0086a41086a200241f80d6a2903003703002002200241f00d6a2903003703b008200241e80d6a280200212c200241e40d6a2d0000212b200241880e6a290300211b20022802ec0d212d20022f01e60d213820022d00e50d2137411821130c0b0b200c0d040c080b200241d00c6a108302200c41808080807872418080808078470d030c070b200241d00c6a108302200c450d060c020b4100210c02402004450d00200610230b41022106410021080b41000d042006450d04200241800f6a200110820202400240024020022802800f450d00200241d00c6a200241800f6a41c00110a1051a200728020022034110490d012001280200220441086a29000021142004290000210e2001200441106a3602002001200341706a220536020420054110490d01200441186a2900002118200429001021152001200341606a22053602042001200441206a36020020054110490d01200441286a290000211a200429002021192001200341506a22053602042001200441306a36020020054104490d022004280030213920012003414c6a3602042001200441346a36020020024190096a41086a2002418c0d6a29020037030020024190096a41106a200241940d6a2902003703002002200241d00c6a41346a29020037039009200241f00c6a290300210d200241d00c6a41106a2d00002111200241e40c6a2802002124200241d00c6a41286a2d0000211e200241fc0c6a280200211f20022903e80c210a20022802d00c210920022802d40c211020022802d80c212220022802dc0c212120022d00e10c211220022f01e20c213a20022d00f90c212e20022f01fa0c213220022802800d2123200241f8086a41086a200241b00d6a290300370300200241f8086a41106a200241b80d6a290300370300200241c8086a41086a200241d40d6a290200370300200241c8086a41106a200241dc0d6a2902003703002002200241a80d6a2903003703f8082002200241cc0d6a2902003703c808200241a00d6a28020021262002419c0d6a2d00002125200241c40d6a2802002129200241c00d6a2d0000212820022802a40d212720022f019e0d213620022d009d0d213320022802c80d212a20022f01c20d213420022d00c10d2135200241b0086a41106a200241800e6a290300370300200241b0086a41086a200241f80d6a2903003703002002200241f00d6a2903003703b008200241e80d6a280200212c200241e40d6a2d0000212b200241880e6a290300211b20022802ec0d212d20022f01e60d213820022d00e50d2137411721130c090b200c0d020c060b200241d00c6a108302200c41808080807872418080808078470d010c050b200241d00c6a108302200c450d040b200610230c030b0c040b4100210802402001450d00200c10230b4104210c410021090b41000d00200c450d004110211320024190096a41106a200241800f6a41106a29020037030020024190096a41086a200241800f6a41086a290200370300200241f8086a41086a200241d00c6a41086a290200370300200241f8086a41106a200241d00c6a41106a290200370300200241c8086a41086a200241a00a6a41086a290200370300200241c8086a41106a200241a00a6a41106a290200370300200220022902800f37039009200220022902d00c3703f808200220022902a00a3703c808200241b0086a41106a200241b0046a41106a290200370300200241b0086a41086a200241b0046a41086a290200370300200220022902b0043703b0080c020b200041163602000c070b4100211041002109410021080b20024198086a41106a220120024190096a41106a29030037030020024198086a41086a220420024190096a41086a29030037030020024180086a41086a2203200241f8086a41086a29030037030020024180086a41106a2205200241f8086a41106a290300370300200241e8076a41086a2207200241c8086a41086a290300370300200241e8076a41106a2220200241c8086a41106a290300370300200220022903900937039808200220022903f80837038008200220022903c8083703e807200241d0076a41106a223b200241b0086a41106a290300370300200241d0076a41086a223c200241b0086a41086a290300370300200220022903b0083703d007200041386a200d370200200041306a200a370200200041186a2010ad4220862009ad84370200200041106a2008ad422086200cad84370200200041c8006a2023360200200041c4006a201f360200200020323b00422000202e3a0041200041c0006a201e3a00002000412c6a20243602002000203a3b012a200020123a0029200041286a20113a0000200041246a2021360200200041206a20223602002000410c6a20063602002000200f3b010a2000200b3a0009200041086a20133a000020004106360200200041e8006a2026360200200041ec006a2027360200200020363b0066200020333a0065200041e4006a20253a0000200041cc006a200229039808370200200041d4006a2004290300370200200041dc006a20012903003702002000418c016a202936020020004190016a202a360200200020343b008a01200020353a00890120004188016a20283a0000200041f0006a200229038008370200200041f8006a200329030037020020004180016a2005290300370200200041a4016a20202903003702002000419c016a200729030037020020004194016a20022903e807370200200041b4016a202d360200200041b0016a202c360200200020383b00ae01200020373a00ad01200041ac016a202b3a0000200041c8016a203b290300370200200041c0016a203c290300370200200041b8016a20022903d00737020020004188026a201a37020020004180026a2019370200200041f8016a2018370200200041f0016a2015370200200041e8016a2014370200200041e0016a200e370200200041d8016a2039360200200041d0016a201b370200200041a8026a200241b0056a41186a290300370300200041a0026a200241b0056a41106a29030037030020004198026a200241b0056a41086a29030037030020004190026a20022903b0053703000c050b42002118420021194200211a4200211b4200211c4200211d420021170b200020053b002a200020033a0029200020123b000a200020133a000920004104360200200041c0006a201d200d84370200200041386a200e370200200041306a20143702002000412c6a2004360000200041286a200b3a0000200041206a200a3700002000411c6a2009360000200041186a2008360000200041146a2010360000200041106a20113600002000410c6a200f360000200041086a20013a0000200041d0006a201b201984201584370200200041d8006a201c201a84201884370200200041c8006a2017201642ffffffffffffffff008384370200200041e0006a200241800f6a41d00110a1051a0c030b200041163602000c020b200610230b200041163602000b200241b0116a24000b990403037f017e047f230041206b22022400200241086a2001108801024002400240024002402002280208450d00200041003602000c010b200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410212206450d030b41002107200241003602182002200636021020022004410c6e3602140240024002402003450d0003402002200110880120022802000d03200128020420022802042204490d032004417f4c0d050240024020040d00410121080c010b200410272208450d0720012802042004490d0320082001280200200410a1051a200128020422092004490d082001200920046b3602042001200128020020046a3602000b2004ad22054220862005842105024020072002280214470d00200241106a2007410110950120022802102106200228021821070b20062007410c6c6a22042005370204200420083602002002200741016a22073602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c020b200810230b2000410036020002402007450d002007410c6c21012006210403400240200441046a280200450d00200428020010230b2004410c6a2104200141746a22010d000b0b20022802142204450d002004410c6c450d00200610230b200241206a24000f0b1032000b1033000b20042009418ca9c0001044000ba00a03077f037e057f230041d0026b2202240041002103200241003a00c8022001280204417f6a210402400240024002400240024003402004417f460d01200241a8026a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c8022004417f6a21042005210320054120470d000b200241e8006a41086a200241a8026a41086a290300370300200241e8006a41106a200241a8026a41106a290300370300200241e8006a41186a200241a8026a41186a290300370300200220022903a8023703682002200110880120022802000d022002280204210641002104200241003a00c80220012802042107417f2103034020072004460d02200241a8026a20046a200128020022082d00003a00002001200720036a3602042001200841016a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241a8016a41086a200241a8026a41086a2903002209370300200241a8016a41106a200241a8026a41106a290300220a370300200241a8016a41186a200241a8026a41186a290300220b37030020024188016a41086a200937030020024188016a41106a200a37030020024188016a41186a200b370300200220022903a80222093703a801200220093703880141002104200241003a00c802200720056b210c200720036a21030340200c2004460d04200241a8026a20046a200820046a220541016a2d00003a0000200120033602042001200541026a3602002002200441016a22053a00c8022003417f6a21032005210420054120470d000b200241e8016a41086a200241a8026a41086a2903002209370300200241e8016a41106a200241a8026a41106a290300220a370300200241e8016a41186a200241a8026a41186a290300220b370300200241c8016a41086a22042009370300200241c8016a41106a2203200a370300200241c8016a41186a2205200b370300200220022903a80222093703e801200220093703c801200241a8026a200110b00420022802a8022201450d04200241c8006a41086a2208200241e8006a41086a290300370300200241c8006a41106a2207200241e8006a41106a290300370300200241c8006a41186a220c200241e8006a41186a290300370300200241286a41086a220d20024188016a41086a290300370300200241286a41106a220e20024188016a41106a290300370300200241286a41186a220f20024188016a41186a29030037030020022002290368370348200220022903880137032820022902ac022109200241086a41186a22102005290300370300200241086a41106a22052003290300370300200241086a41086a22032004290300370300200220022903c801370308200020093702082000200136020420002006360200200041106a2002290348370200200041186a2008290300370200200041206a2007290300370200200041286a200c290300370200200041306a2002290328370200200041386a200d290300370200200041c0006a200e290300370200200041c8006a200f290300370200200041e8006a2010290300370200200041e0006a2005290300370200200041d8006a2003290300370200200041d0006a20022903083702000c050b0240200341ff0171450d00200241003a00c8020b200041003602040c040b0240200441ff0171450d00200241003a00c8020b200041003602040c030b200041003602040c020b0240200441ff0171450d00200241003a00c8020b200041003602040c010b200041003602040b200241d0026a24000bba3308037f017e217f027e1b7f067e0d7f027e230041e0076b22022400200241186a200110880102400240024002402002280218450d00200041003602000c010b200228021c220320012802044188026e2204200420034b1bad4288027e2205422088a70d022005a72204417f4c0d020240024020040d00410821060c010b200410212206450d020b2002410036022820022006360220200220044188026e360224024002402003450d004100210741002108034002400240200128020422094104490d002001280200220a280000210b20012009417c6a220c3602042001200a41046a36020041002104200241003a00b8072009417b6a21090240024002400240024002400240024002400240024002400240024002400240024002400340200c2004460d0120024198076a20046a200a20046a220d41046a2d00003a0000200120093602042001200d41056a3602002002200441016a220d3a00b8072009417f6a2109200d2104200d4120470d000b20024198056a41186a220e20024198076a41186a220f29030037030020024198056a41106a221020024198076a41106a221129030037030020024198056a41086a221220024198076a41086a2213290300370300200220022903980737039805200241106a200110880120022802100d12200128020420022802142209490d122009417f4c0d1920090d01410121140c020b200441ff0171450d11200241003a00b8070c110b200910272214450d1620012802042009490d0120142001280200200910a1051a200128020422042009490d072001200420096b3602042001200128020020096a3602000b2014450d0f41002104200241003a00b8072009ad22054220862005842205422088a721152005a721162001280204210c417f210902400340200c2004460d0120024198076a20046a2001280200220a2d00003a00002001200c20096a3602042001200a41016a3602002002200441016a220d3a00b8072009417f6a2109200d2104200d4120470d000b200241d8056a41186a2217200f290300370300200241d8056a41106a22182011290300370300200241d8056a41086a2219201329030037030020022002290398073703d80541002104200241003a00d807200d200c6b211a200c200d6b21090340201a20046a450d0320024198076a20046a200a20046a220d41016a2d00003a000020012009417f6a22093602042001200d41026a3602002002200441016a220d3a00d807200d2104200d41c000470d000b200241d8066a41386a221b20024198076a41386a221c290300370300200241d8066a41306a221d20024198076a41306a221e290300370300200241d8066a41286a221f20024198076a41286a2220290300370300200241d8066a41206a220c20024198076a41206a2221290300370300200241d8066a41186a221a200f290300370300200241d8066a41106a22222011290300370300200241d8066a41086a2223201329030037030020022002290398073703d80641002104200241003a00b807200a200d6a210a03402009450d0420024198076a20046a200a20046a220d41016a2d00003a000020012009417f6a22093602042001200d41026a3602002002200441016a220d3a00b807200d2104200d4120470d000b20024198066a41186a2224200f29030037030020024198066a41106a2225201129030037030020024198066a41086a2226201329030037030020022002290398073703980620094110490d05200a200d6a220441096a2900002127200441016a29000021282001200941706a3602042001200441116a36020020024198076a200110cb032002280298072209450d05200229029c0721054100210d200241003a00b8072001280204417f6a210403402004417f460d0520024198076a200d6a2001280200220a2d00003a0000200120043602042001200a41016a3602002002200d41016a220a3a00b8072004417f6a2104200a210d200a4120470d000b200241e0046a41186a2229200f290300370300200241e0046a41106a222a2011290300370300200241e0046a41086a222b2013290300370300200241c0046a41086a222c2012290300370300200241c0046a41106a222d2010290300370300200241c0046a41186a222e200e29030037030020022002290398073703e00420022002290398053703c004200241a0046a41186a222f2017290300370300200241a0046a41106a22302018290300370300200241a0046a41086a22312019290300370300200220022903d8053703a004200241e0036a41386a2232201b290300370300200241e0036a41306a2233201d290300370300200241e0036a41286a2234201f290300370300200241e0036a41206a2235200c290300370300200241e0036a41186a2236201a290300370300200241e0036a41106a22372022290300370300200241e0036a41086a22382023290300370300200220022903d8063703e003200241c0036a41186a22392024290300370300200241c0036a41106a223a2025290300370300200241c0036a41086a223b202629030037030020022002290398063703c003200241086a20011088012005422088a7213c2005a7213d2002280208450d060c0e0b0240200441ff0171450d00200241003a00b8070b2016450d0f0b201410230c0e0b0240200441ff0171450d00200241003a00d8070b2016450d0d201410230c0d0b0240200441ff0171450d00200241003a00b8070b2016450d0c201410230c0c0b0240200d41ff0171450d00200241003a00b8070b02402005422088a72204450d002004410474210d2009210403400240200441046a280200450d00200428020010230b200441106a2104200d41706a220d0d000b0b200542ffffffff0083500d00200910230b2016450d0a201410230c0a0b200228020c223e200128020441c1006e22042004203e4b1bad42c1007e2205422088a70d102005a72204417f4c0d100240024020040d004101213f0c010b20041021223f450d100b4100214020024100360290052002203f360288052002200441c1006e220436028c05024002400240024002400240024002400240203e450d00410021404100214103402001280204220d450d04200128020022422d000021042001200d417f6a22433602042001204241016a3602002004417f6a220441014b0d0402400240024020040e020001000b41002104200241003a00d807200d417e6a210d0240034020432004460d0120024198076a20046a204220046a220a41016a2d00003a00002001200d3602042001200a41026a3602002002200441016a220a3a00d807200d417f6a210d200a2104200a41c000470d000b201b201c2903002205370300201d201e2903002244370300201f20202903002245370300200c20212903002246370300201a200f290300224737030020262013290300370300202520112903003703002024204737030020024198066a41206a204637030020024198066a41286a204537030020024198066a41306a204437030020024198066a41386a20053703002002200229039807370398064100210d0c020b200441ff01710d050c060b41002104200241003a00d807200d417e6a210d034020432004460d0420024198076a20046a204220046a220a41016a2d00003a00002001200d3602042001200a41026a3602002002200441016a220a3a00d807200d417f6a210d200a2104200a41c000470d000b201b201c2903002205370300201d201e2903002244370300201f20202903002245370300200c20212903002246370300201a200f290300224737030020262013290300370300202520112903003703002024204737030020024198066a41206a204637030020024198066a41286a204537030020024198066a41306a204437030020024198066a41386a20053703002002200229039807370398064101210d0b204141016a2141200241d8056a41386a20024198066a41386a2903002205370300200241d8056a41306a20024198066a41306a2903002244370300200241d8056a41286a20024198066a41286a2903002245370300200241d8056a41206a20024198066a41206a29030022463703002017202429030022473703002018202529030022483703002019202629030022493703002012204937030020102048370300200e204737030020024198056a41206a220a204637030020024198056a41286a2242204537030020024198056a41306a2243204437030020024198056a41386a224a2005370300200220022903980622053703d805200220053703980502402040200228028c05470d0020024188056a20404101109d01200228028805213f20022802900521400b203f204041c1006c6a2204200d3a00002004200229039805370001200441096a2012290300370000200441116a2010290300370000200441196a200e290300370000200441216a200a290300370000200441296a2042290300370000200441316a2043290300370000200441396a204a2903003700002002204041016a2240360290052041203e470d000b200228028c0521040b203f450d0f2002200110880120022802000d072002280204220a41076a221b410376220d450d04200d1027221d450d172001280204200d490d06201d2001280200200d10a10521432001280204221f200d4f0d03200d201f418ca9c0001044000b200441ff0171450d010b200241003a00d8070b200228028c052204450d0c200441c1006c450d0c203f10230c0c0b2001201f200d6b36020420012001280200200d6a360200200d1021221f450d13200d2142204321430c010b419ca8c700211d4101211f41002142410121430b201f201d200d10a105211d2002200d3602dc07201b4188808080024f0d032002201b417871223e36028805201b41ffffffff014b0d0402400240200d0d004100211f0c010b4101211f200d4101460d00203e41786a41037641016a211f0b2002201f360298052002201d201f6a221f3602d805201f201d490d05201b41f8ffffff0171221b200a490d082002200a3602d805200a41ffffffff014b0d0620022042410374221f36029806201f200a490d07201d4101201b1b211b0240200d450d00204310230b201b450d01200a410374214b200c200241e0046a41206a280200360200201a20292903003703002022202a2903003703002023202b2903003703002026202c2903003703002025202d2903003703002024202e290300370300200220022903e0043703d806200220022903c004370398062017202f2903003703002018203029030037030020192031290300370300201c2032290300370300201e20332903003703002020203429030037030020212035290300370300200f20362903003703002011203729030037030020132038290300370300200220022903a0043703d805200220022903e00337039807200e20392903003703002010203a2903003703002012203b290300370300200220022903c00337039805201b214c2042214d2040214e2004214f203f2150201521512016215220142153200b2154203c2155203d215620282157202721580c0c0b201d10230b02402004450d00200441c1006c450d00203f10230b02402016450d00201410230b0240203c450d00203c410474210d2009210403400240200441046a280200450d00200428020010230b200441106a2104200d41706a220d0d000b0b203d41ffffffff0071450d090c080b20092004418ca9c0001044000b200241e4066a4101360200200241ac076a41023602002002420237029c07200241e0e9c20036029807200241dce9c2003602e006200241013602dc062002200241d8066a3602a8072002200241dc076a3602d80620024198076a419ca8c700103a000b200241e4066a4101360200200241ac076a41023602002002420237029c07200241ccc7c40036029807200241c8c7c4003602e006200241013602dc062002200241d8066a3602a807200220024188056a3602d80620024198076a419ca8c700103a000b20024198076a41146a411336020020024198076a410c6a4114360200200241d8066a41146a4103360200200241d8066a410c6a4103360200200241f4c7c4003602e006200241033602dc06200241dcc7c4003602d8062002411336029c072002201d36029806200220024198076a3602e8062002200241d8056a3602a807200220024198056a3602a007200220024198066a36029807200241d8066a419ca8c700103a000b200241e4066a4101360200200241ac076a41023602002002420237029c07200241f0e9c20036029807200241c8c7c4003602e006200241013602dc062002200241d8066a3602a8072002200241d8056a3602d80620024198076a419ca8c700103a000b200241e4066a4101360200200241ac076a41023602002002420237029c0720024180eac20036029807200241013602dc062002200241d8066a3602a807200220024198066a3602e0062002200241d8056a3602d80620024198076a419ca8c700103a000b4190eac2004126418c94c700102d000b02402016450d00201410230b0240203c450d00203c410474210d2009210403400240200441046a280200450d00200428020010230b200441106a2104200d41706a220d0d000b0b203d41ffffffff0071450d010b200910230b410021090b20024198036a41206a2204200241d8066a41206a28020036020020024198036a41186a220d200241d8066a41186a29030037030020024198036a41106a220a200241d8066a41106a29030037030020024198036a41086a220c200241d8066a41086a290300370300200241f8026a41086a220b20024198066a41086a290300370300200241f8026a41106a220f20024198066a41106a290300370300200241f8026a41186a221120024198066a41186a290300370300200220022903d8063703980320022002290398063703f802200241d8026a41186a2213200241d8056a41186a290300370300200241d8026a41106a220e200241d8056a41106a290300370300200241d8026a41086a2210200241d8056a41086a29030037030020024198026a41086a221220024198076a41086a29030037030020024198026a41106a221a20024198076a41106a29030037030020024198026a41186a221420024198076a41186a29030037030020024198026a41206a221620024198076a41206a29030037030020024198026a41286a221520024198076a41286a29030037030020024198026a41306a221720024198076a41306a29030037030020024198026a41386a221820024198076a41386a290300370300200220022903d8053703d802200220022903980737039802200241f8016a41186a221920024198056a41186a290300370300200241f8016a41106a221b20024198056a41106a290300370300200241f8016a41086a221d20024198056a41086a29030037030020022002290398053703f8012009450d02200841016a2108200241d0016a41206a221f2004280200360200200241d0016a41186a2222200d290300370300200241d0016a41106a220d200a290300370300200241d0016a41086a220a200c290300370300200241b0016a41086a220c200b290300370300200241b0016a41106a220b200f290300370300200241b0016a41186a220f201129030037030020022002290398033703d001200220022903f8023703b00120024190016a41186a2211201329030037030020024190016a41106a2213200e29030037030020024190016a41086a220e2010290300370300200241d0006a41086a22102012290300370300200241d0006a41106a2212201a290300370300200241d0006a41186a221a2014290300370300200241d0006a41206a22142016290300370300200241d0006a41286a22162015290300370300200241d0006a41306a22152017290300370300200241d0006a41386a22172018290300370300200220022903d802370390012002200229039802370350200241306a41186a22182019290300370300200241306a41106a2219201b290300370300200241306a41086a221b201d290300370300200220022903f801370330024020072002280224470d00200241206a2007410110990120022802202106200228022821070b200620074188026c6a220420583703082004205737030020042009360210200441186a2055360200200441146a2056360200200a2903002105200d290300212720222903002128201f280200210920022903d0012144200441cc006a2051360200200441c8006a2052360200200441c4006a2053360200200441c0006a20543602002004413c6a2009360200200441346a20283702002004412c6a2027370200200441246a20053702002004411c6a2044370200200441e8006a200f290300370200200441e0006a200b290300370200200441d8006a200c290300370200200441d0006a20022903b00137020020044188016a201129030037020020044180016a2013290300370200200441f8006a200e290300370200200441f0006a200229039001370200200441a8016a201a290300370200200441a0016a201229030037020020044198016a201029030037020020044190016a2002290350370200200441c0016a2015290300370200200441b8016a2016290300370200200441b0016a2014290300370200200441c8016a2017290300370200200441e8016a2018290300370200200441e0016a2019290300370200200441d8016a201b290300370200200441d0016a200229033037020020044184026a204d36020020044180026a204b360200200441fc016a204c360200200441f8016a204e360200200441f4016a204f360200200441f0016a20503602002002200741016a220736022820082003470d000b0b20002002290320370200200041086a200241206a41086a2802003602000c010b2000410036020002402007450d0020074188026c2109200621040340200410a20320044188026a2104200941f87d6a22090d000b0b20022802242204450d0020044188026c450d00200610230b200241e0076a24000f0b1033000b1032000bd10b010b7f230041d0016b2202240002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a3602002005417f6a220541024b0d000240024002400240024020050e03000102000b41002105200241003a00a8012003417f6a2106417e21070240034020062005460d0120024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a2107200420086a41016a210841002106200241c8006a21050c030b200541ff0171450d04200241003a00a8010c040b41002105200241003a00a8012003417f6a2106417e21070240034020062005460d0120024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a210741012106200420086a41016a2108200241c8006a21050c020b200541ff0171450d03200241003a00a8010c030b41002105200241003a00a8012003417f6a2106417e2107034020062005460d0220024188016a20056a200420056a220841016a2d00003a00002001200320076a3602042001200841026a3602002002200541016a22083a00a8012007417f6a21072008210520084120470d000b200241c8006a41186a20024188016a41186a290300370300200241c8006a41106a20024188016a41106a290300370300200241c8006a41086a20024188016a41086a29030037030020022002290388013703482008417f7320036a2107200420086a41016a210841022106200241c8006a21050b200241286a41186a200541186a290000370300200241286a41106a200541106a290000370300200241286a41086a200541086a2900003703002002200529000037032841002105200241003a00c8012007417f6a2103034020072005460d0320024188016a20056a200820056a22042d00003a0000200120033602042001200441016a3602002002200541016a22043a00c8012003417f6a210320042105200441c000470d000b200241c8006a41386a220120024188016a41386a290300370300200241c8006a41306a220520024188016a41306a290300370300200241c8006a41286a220320024188016a41286a290300370300200241c8006a41206a220420024188016a41206a290300370300200241c8006a41186a220720024188016a41186a290300370300200241c8006a41106a220820024188016a41106a290300370300200241c8006a41086a220920024188016a41086a290300370300200241086a41086a220a200241286a41086a290300370300200241086a41106a220b200241286a41106a290300370300200241086a41186a220c200241286a41186a290300370300200220022903880137034820022002290328370308200020063a000020002002290308370001200041096a200a290300370000200041116a200b290300370000200041196a200c290300370000200041216a2002290348370000200041296a2009290300370000200041316a2008290300370000200041396a2007290300370000200041c1006a2004290300370000200041c9006a2003290300370000200041d1006a2005290300370000200041d9006a20012903003700000c030b200541ff0171450d00200241003a00a8010b200041033a00000c010b0240200541ff0171450d00200241003a00c8010b200041033a00000b200241d0016a24000b9b1201037f024002402000280200220141144b0d000240024002400240024002400240024002400240024020010e15000c0c0c0c01020c030c04050c060c0708090a0c0c000b200041086a280200417e6a220141074b0d0b02400240024002400240024020010e080011010211030405000b200041106a280200450d102000410c6a28020010230f0b200041106a280200450d0f2000410c6a28020010230f0b200041106a280200450d0e2000410c6a28020010230f0b0240200041146a2802002202450d002000410c6a2802002101200241186c210203400240200141046a280200450d00200128020010230b0240200141106a280200450d002001410c6a28020010230b200141186a2101200241686a22020d000b0b200041106a2802002201450d0d200141186c450d0d200028020c10230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d0c2001410c6c450d0c200028020c10230f0b200041106a280200450d0b2000410c6a28020010230f0b02402000410c6a2802002201450d00200141f0006c2102200028020441046a2101034020011096030240200141046a2802002203450d00200341246c450d00200128020010230b200141f0006a2101200241907f6a22020d000b0b200041086a2802002201450d0a200141f0006c450d0a200028020410230f0b0240200041086a2d0000220141174b0d000240024002400240024020010e180f0f0f0f0f0f000f0f0f0f0f0f010f0f02030f0f0f0f0f040f0b200041106a28020041ffffff3f71450d0e2000410c6a28020010230f0b200041106a28020041ffffff3f71450d0d2000410c6a28020010230f0b200041146a28020041ffffffff0371450d0c200041106a28020010230f0b200041146a2802002201450d0b200141246c450d0b200041106a28020010230f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010230b200041186a1083020f0b0240200041106a28020041808080807872418080808078460d002000410c6a28020010230b200041186a1083020f0b20002802042201450d08200041086a280200450d08200110230f0b200041086a280200450d07200028020410230f0b02402000410c6a280200450d00200041086a28020010230b02402000411c6a2802002202450d00200041146a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041186a2802002201450d062001410c6c450d06200028021410230f0b02402000280204220141014b0d00024020010e020700070b0240200041106a2802002202450d00200041086a280200210120024188026c21020340200110a20320014188026a2101200241f87d6a22020d000b0b2000410c6a2802002201450d0620014188026c450d06200028020810230f0b0240200041146a2802002202450d002000410c6a28020021012002410c6c210203400240200141046a280200450d00200128020010230b2001410c6a2101200241746a22020d000b0b200041106a2802002201450d052001410c6c450d05200028020c10230f0b20002d0004417f6a220141034b0d040240024020010e0400060601000b0240200041106a280200450d002000410c6a28020010230b2000411c6a280200450d05200041186a28020010230f0b02402000410c6a280200450d00200041086a28020010230b200041186a280200450d04200041146a28020010230f0b024020002d0004220141044b0d00024002400240024020010e050800010203080b0240200041106a2802002202450d00200041086a2802002101200241b0026c210203402001109e03200141b0026a2101200241d07d6a22020d000b0b2000410c6a2802002201450d07200141b0026c450d07200028020810230f0b200041086a2201280200109e03200128020010230f0b02402000410c6a28020041ffffff3f71450d00200041086a28020010230b200041206a2201280200109e03200128020010230f0b2000412c6a28020041ffffff3f71450d04200041286a28020010230f0b2000412c6a28020041ffffff3f71450d03200041286a28020010230f0b200041086a2d0000417e6a220141014b0d020240024020010e020001000b0240200041146a2802002202450d002000410c6a2802002201200241c8006c6a21020340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b0240200041106a2802002201450d00200141c8006c450d00200028020c10230b0240200041186a2d00004101470d00200041206a280200450d002000411c6a28020010230b02402000413c6a2d00004101470d00200041c4006a280200450d00200041c0006a28020010230b0240200041e0006a2d00004101470d00200041e8006a280200450d00200041e4006a28020010230b024020004184016a2d00004101470d002000418c016a280200450d0020004188016a28020010230b0240200041a8016a2d00004101470d00200041b0016a280200450d00200041ac016a28020010230b0240200041cc016a2d00004101470d00200041d4016a280200450d00200041d0016a28020010230b200041f0016a2d00004101470d03200041f8016a280200450d03200041f4016a28020010230f0b0240200041146a2802002201450d00200141c4006c21022000410c6a28020041286a210103400240200141786a2d00004101470d002001280200450d002001417c6a28020010230b200141c4006a2101200241bc7f6a22020d000b0b200041106a2802002201450d02200141c4006c450d02200028020c10230f0b20002d0004417f6a220141024b0d010240024020010e03000301000b200041286a2201280200109e03200128020010230f0b2000410c6a28020041ffffff3f71450d01200041086a28020010230c010b024020002d0004220141024b0d00024020010e03020002020b200041086a2201280200109e03200128020010230f0b200041286a2201280200109e03200128020010230f0b0b8611010a7f23004180016b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a2207360200200541254b0d014100210820050e261301010101010101010101010101010101010101010101010101010101010101010102030405130b200041063a00000c130b02402005417f6a41ff01714121490d00200041063a00000c130b02402005417f6a22090d0020012006360204200120073602004101210a410021094100210b410121080c120b0240024020091027220a450d0020012802042009490d01200a2001280200200910a1051a200128020422052009490d062001200520096b3602042001200128020020096a360200410121082009210b0c130b1033000b200041063a0000200a10230c120b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c100b41012101200541ff01710d040c0e0b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c0d0b41012101200541ff01710d040c0b0b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c0a0b41012101200541ff01710d040c080b41002105200241003a00782003417f6a210a2003417e6a210302400340200a2005460d01200241d8006a20056a200420056a220941016a2d00003a0000200120033602042001200941026a3602002002200541016a22093a00782003417f6a21032009210520094120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632109200228005f210b200228005b210a0c070b41012101200541ff01710d040c050b20092005418ca9c0001044000b200241003a00780c090b200241003a00780c060b200241003a00780c030b200241003a00780b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410521080c070b200041063a00000c070b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410421080c050b200041063a00000c050b0b2002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b012420022002290328370310410321080c030b200041063a00000c030b0b410221082002413c6a41026a2205200241d4006a41026a2d00003a0000200241286a41086a2204200241c0006a41086a290300370300200241286a41106a2203200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20052d00003a0000200241106a41086a2004290300370300200241106a41106a20032d00003a0000200220022f013c3b0124200220022903283703100c010b200041063a00000c010b200020083a0000200020022f01243b00012000410c6a2009360000200041086a200b360000200041046a200a360000200041106a2002290310370000200041216a20022f000d3b0000200041036a200241246a41026a2d00003a0000200041186a200241106a41086a290300370000200041206a200241106a41106a2d00003a0000200041236a2002410d6a41026a2d00003a00000b20024180016a24000bbc1e03077f047e017f230041e0056b2202240002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541084b0d0a20050e09010203040506070809010b2000410a3a00000c0a0b41002105200241003a00d0032003417f6a21062003417e6a2107024002400240034020062005460d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b200241c0006a41086a200241b0036a41086a290300370300200241c0006a41106a200241b0036a41106a290300370300200241c0006a41186a200241b0036a41186a290300370300200220022903b003370340200241b0036a200110990320022802b003210120024180016a200241b0036a41047241ac0210a1051a20014116460d01200241b0036a20024180016a41ac0210a1051a41b002102122040d02102a000b200541ff0171450d00200241003a00d0030b2000410a3a00000c0a0b20042001360200200441046a200241b0036a41ac0210a1051a200241206a41186a200241c0006a41186a2903002209370300200241206a41106a200241c0006a41106a290300220a370300200241206a41086a200241c0006a41086a290300220b37030020022002290340220c370320200041013a00002000200c370001200041096a200b370000200041116a200a370000200041196a2009370000200041216a20022f001d3b0000200041236a2002411f6a2d00003a0000200041246a2004360200200041286a2002290200370200200041306a200241086a290200370200200041386a200241106a290200370200200041c0006a200241186a2802003602000c090b41002105200241003a00d003410120036b21062003417e6a21070240024002400340200620056a450d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b20024180016a41086a200241b0036a41086a29030037030020024180016a41106a200241b0036a41106a29030037030020024180016a41186a200241b0036a41186a290300370300200220022903b0033703800141002105200241003a00d003200420086a2106200820036b41016a21080340200820056a450d02200241b0036a20056a200620056a220441016a2d00003a0000200120073602042001200441026a3602002002200541016a22043a00d0032007417f6a21072004210520044120470d000b200241206a41086a2201200241b0036a41086a290300370300200241206a41106a2204200241b0036a41106a290300370300200241206a41186a2205200241b0036a41186a290300370300200241c0006a41086a220720024180016a41086a290300370300200241c0006a41106a220820024180016a41106a290300370300200241c0006a41186a220320024180016a41186a290300370300200220022903b0033703202002200229038001370340200041023a000020002002290340370001200041096a2007290300370000200041116a2008290300370000200041196a2003290300370000200041216a2002290320370000200041296a2001290300370000200041316a2004290300370000200041396a2005290300370000200041c1006a20022f00003b0000200041c3006a200241026a2d00003a00000c0b0b200541ff0171450d01200241003a00d0030c010b200541ff0171450d00200241003a00d0030b2000410a3a00000c080b20024180016a200110cf010240024002402002280280012204450d002002280284012105200128020422074102490d0120024188016a2802002106200128020022082f0000210d20012007417e6a22033602042001200841026a36020020034104490d022008280002210320012007417a6a3602042001200841066a360200200041106a20033602002000410c6a2006360200200041086a2005360200200041046a2004360200200041026a200d3b0100200041033a0000200041146a20022902b0033702002000411c6a200241b0036a41086a290200370200200041246a200241b0036a41106a2902003702002000412c6a200241c8036a290200370200200041346a200241d0036a2902003702002000413c6a200241d8036a2902003702000c0a0b2000410a3a00000c090b2000410a3a0000200541ffffff3f71450d08200410230c080b2000410a3a0000200541ffffff3f71450d07200410230c070b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041043a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c070b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c060b41002105200241003a00d003410120036b21062003417e6a21070240024002400340200620056a450d01200241b0036a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00d0032007417f6a21072008210520084120470d000b20024180016a41086a200241b0036a41086a29030037030020024180016a41106a200241b0036a41106a29030037030020024180016a41186a200241b0036a41186a290300370300200220022903b0033703800141002105200241003a00d003200420086a2106200820036b41016a21080340200820056a450d02200241b0036a20056a200620056a220441016a2d00003a0000200120073602042001200441026a3602002002200541016a22043a00d0032007417f6a21072004210520044120470d000b200241206a41086a2201200241b0036a41086a290300370300200241206a41106a2204200241b0036a41106a290300370300200241206a41186a2205200241b0036a41186a290300370300200241c0006a41086a220720024180016a41086a290300370300200241c0006a41106a220820024180016a41106a290300370300200241c0006a41186a220320024180016a41186a290300370300200220022903b0033703202002200229038001370340200041053a000020002002290340370001200041096a2007290300370000200041116a2008290300370000200041196a2003290300370000200041216a2002290320370000200041296a2001290300370000200041316a2004290300370000200041396a2005290300370000200041c1006a20022f00003b0000200041c3006a200241026a2d00003a00000c080b200541ff0171450d01200241003a00d0030c010b200541ff0171450d00200241003a00d0030b2000410a3a00000c050b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041063a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c050b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c040b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041073a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c040b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c030b200041083a00000c020b41002105200241003a00a0012003417f6a21062003417e6a21070240034020062005460d0120024180016a20056a200420056a220841016a2d00003a0000200120073602042001200841026a3602002002200541016a22083a00a0012007417f6a21072008210520084120470d000b200241c0006a41086a20024180016a41086a2903002209370300200241c0006a41106a20024180016a41106a290300220a370300200241c0006a41186a20024180016a41186a290300220b3703002002200229038001220c370340200041093a00002000200c370001200041096a2009370000200041116a200a370000200041196a200b370000200041216a20022900b003370000200041296a200241b0036a41086a290000370000200041316a200241b0036a41106a290000370000200041396a200241b0036a41186a290000370000200041c0006a200241cf036a2800003600000c020b0240200541ff0171450d00200241003a00a0010b2000410a3a00000c010b2000410a3a00000b200241e0056a24000bfc0802067f047e230041b0056b22022400024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200541024b0d0420050e03010203010b200041043a00000c050b20024180036a20011099032002280280032101200241d0006a20024180036a41047241ac0210a1051a024020014116460d0020024180036a200241d0006a41ac0210a1051a41b00210212205450d0420052001360200200541046a20024180036a41ac0210a1051a200041013a0000200020022f00103b0001200041036a200241126a2d00003a0000200041046a2005360200200041086a2002290230370200200041106a200241306a41086a290200370200200041186a200241306a41106a290200370200200041206a200241306a41186a2902003702000c050b200041043a00000c040b41002105200241003a00a0032003417f6a21062003417e6a21030240034020062005460d0120024180036a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00a0032003417f6a21032007210520074120470d000b200241306a41086a20024180036a41086a2903002208370300200241306a41106a20024180036a41106a2903002209370300200241306a41186a20024180036a41186a290300220a3703002002200229038003220b370330200041023a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041216a2002280010360000200041246a200241136a2800003600000c040b0240200541ff0171450d00200241003a00a0030b200041043a00000c030b41002105200241003a00a0032003417f6a21062003417e6a210302400240034020062005460d0120024180036a20056a200420056a220741016a2d00003a0000200120033602042001200741026a3602002002200541016a22073a00a0032003417f6a21032007210520074120470d000b200241306a41086a20024180036a41086a290300370300200241306a41106a20024180036a41106a290300370300200241306a41186a20024180036a41186a290300370300200220022903800337033020024180036a20011099032002280280032101200241d0006a20024180036a41047241ac0210a1051a20014116460d0120024180036a200241d0006a41ac0210a1051a41b00210212205450d0320052001360200200541046a20024180036a41ac0210a1051a200241106a41186a200241306a41186a2903002208370300200241106a41106a200241306a41106a2903002209370300200241106a41086a200241306a41086a290300220a37030020022002290330220b370310200041033a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041216a20022f000d3b0000200041236a2002410f6a2d00003a0000200041246a20053602000c040b200541ff0171450d00200241003a00a0030b200041043a00000c020b200041043a00000c010b102a000b200241b0056a24000bcc0101027f0240200041c8006a280200450d00200028024410230b0240200041186a2802002201450d00200028021021022001410474210103400240200241046a280200450d00200228020010230b200241106a2102200141706a22010d000b0b0240200041146a28020041ffffffff0071450d00200028021010230b0240200041f4016a2802002202450d00200241c1006c450d0020002802f00110230b20004180026a410036020020002802fc012102200041013602fc01024020004184026a280200450d00200210230b0bd90401057f230041106b22022400200241003a000502400240024002400240024020012802002203280204220420044100472205490d00200241056a20032802002206200510a1051a2003200420056b3602042003200620056a360200024020040d00410021040c050b024020022d0005220441037122034103460d000240024020030e03070001070b200241003b0106200220043a00064101210420012802002201280204220320034100472205490d04200241066a41017220012802002204200510a10521062001200320056b3602042001200420056a360200024020030d00200620056a22044100200241066a20046b41026a10a0051a0b20022f0106220441ff014d0d0220044102762103410021040c070b20024100360208200220043a0008200241086a4101722001280200220428020020042802042205410320054103491b220310a1052106200428020422012003490d042004200120036b3602042004200428020020036a3602000240200541024b0d00200620036a22044100200241086a20046b41046a10a0051a0b2002280208220341808004492104200341027621030c060b200441034d0d010b410121040c040b2002410036020c2002410c6a20012802002204280200220120042802042203410420034104491b220510a1051a2004200320056b3602042004200120056a3602000240200341034b0d002002410c6a20056a4100410420056b10a0051a0b200228020c22034180808080044921040c030b0c020b20032001418ca9c0001044000b20044102762103410021040b2000200336020420002004360200200241106a24000b890301077f41012102024002402001280208220341016a2204200128020422054d0d000c010b0240024002400240200320054f0d002001280200220620036a2d00002107200120043602080240200741037122084103460d0002400240024020080e03000102000b20074102762108410021020c070b0240200341026a220320054d0d000c070b200120033602082004417f460d03200620046a2d0000410874200772220141ffff0371418002490d06200141fcff03714102762108410021020c060b200341046a220320054b0d05200120033602082004417d4f0d03200620046a22012f0000200141026a2d000041107472410874200772220141808004492102200141027621080c050b0240200741034d0d000c050b200341056a220320054b0d04200120033602082004417c4f0d03200620046a28000022084180808080044921020c040b2003200541b0bbc0001030000b417f200341a0bbc0001044000b2004200341a0bbc0001044000b2004200341a0bbc0001044000b20002008360204200020023602000b850605027f027e017f027e027f230041a0016b220224002000280200210002400240024002400240024002400240200128020022034110710d00200041086a29030021042000290300210520034120710d0220054290ce005441002004501b450d012005a72103412721000c060b200041086a2903002105200029030021044180012100024003402000450d01200241206a20006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020044204882005423c8684220420054204882205844200520d000b0b20004181014f0d02200141a889c0004102200241206a20006a41800120006b104121000c060b41272100200241186a21060340200241106a200520044290ce00420010a7052002200229031022072006290300220842f0b17f427f10a605200241206a20006a2203417c6a200520022903007ca7220941ffff037141e4006e220a41017441ea84c0006a2f00003b00002003417e6a200a419c7f6c20096a41ffff037141017441ea84c0006a2f00003b0000200542ffc1d72f56210320044200522109200450210a2000417c6a2100200721052008210420032009200a1b0d000c040b0b4180012100024003402000450d01200241206a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b0b20004181014f0d01200141a889c0004102200241206a20006a41800120006b104121000c040b2000418001419889c0001044000b2000418001419889c0001044000b2007a721030b02400240200341e3004a0d00200321090c010b200241206a2000417e6a22006a2003200341ffff037141e4006e2209419c7f6c6a41ffff037141017441ea84c0006a2f00003b00000b024002402009410a480d00200241206a2000417e6a22006a200941017441ea84c0006a2f00003b00000c010b200241206a2000417f6a22006a200941306a3a00000b2001419ca8c7004100200241206a20006a412720006b104121000b200241a0016a240020000b1300200041003602042000419ca8c7003602000b13002000410136020420004188e6c2003602000be51b06037f017e077f017e277f027e230041a00d6b220324002003200236020c20032001360208200341206a41186a22044200370300200341206a41106a22024200370300200341206a41086a220142003703002003420037032041e4dec400ad4280808080e00084100c220529000021062001200541086a290000370300200320063703202005102341f3dec400ad4280808080e00084100c22072900002106200341106a41086a2205200741086a2900003703002003200637031020071023200220032903102206370300200341800d6a41086a22082001290300370300200341800d6a41106a22092006370300200341800d6a41186a220a2005290300370300200320032903203703800d2003200341800d6a412010cd012003280204210b2003280200210c2004420037030020024200370300200142003703002003420037032041abe3c200ad4280808080800384100c220729000021062001200741086a290000370300200320063703202007102341c3e3c200ad4280808080e00184100c220729000021062005200741086a29000037030020032006370310200710232002200329031022063703002008200129030037030020092006370300200a2005290300370300200320032903203703800d200341206a200341800d6a412010890220032802202201410120011b210d0240024002402003290224420020011b220e422088a722020d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b200341206a410041e00c10a0051a200b417f6a41d100704130200c1b2101200d41206a210f200d20024105746a21104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f4100210b200d21024100213041d1002131024003402030210720022105024002402001450d00200141016a2101200521020340024020102002470d00200d21020b2002220541206a21022001417f6a22010d000b20050d010c030b024020052010460d00200541206a21020c010b200f2102200d21050b0240024002400240200328020c220141056a2204417f4c0d0020032802082132024002402004450d0020041021220c450d0320034100360218200320043602140c010b20034100360218200320043602142003410136021041011021220c450d08200341013602140b2003200c360210200c20073a0000200341013602182001200341106a10610240024020032802142233200328021822306b2001490d00200328021021042033210c0c010b203020016a22042030490d032033410174220c2004200c20044b1b220c4100480d030240024020330d000240200c0d00410121040c020b200c102122040d010c0a0b200328021021042033200c460d0020042033200c10252204450d090b2003200c360214200320043602100b200420306a2032200110a1051a2003203020016a2230360218412010212201450d0120012005290000370000200141186a2232200541186a290000370000200141106a2234200541106a290000370000200141086a2235200541086a29000037000002400240200c20306b411f4d0d00200c21330c010b203041206a22052030490d03200c41017422332005203320054b1b22334100480d0302400240200c0d00024020330d00410121040c020b203310212204450d0a0c010b200c2033460d002004200c203310252204450d090b20032033360214200320043602100b200420306a22052001290000370000200541186a2032290000370000200541106a2034290000370000200541086a20352900003700002003203041206a2205360218200110232005ad4220862004ad84101822012900002106200141086a2900002136200141106a2900002137200a200141186a2900003703002009203737030020082036370300200320063703800d2001102302402033450d00200410230b2031417f6a2131200741016a2130200341206a20074103704105746a220120032903800d370000200141186a200a290300370000200141106a2009290300370000200141086a20082903003700004100210503402007200741036e2204417d6c6a4102470d04200341206a20056a220141df006a2d0000220b2001411f6a2d0000220c71200b200c722001413f6a2d000071722128200141de006a2d0000220b2001411e6a2d0000220c71200b200c722001413e6a2d000071722127200141dd006a2d0000220b2001411d6a2d0000220c71200b200c722001413d6a2d000071722126200141dc006a2d0000220b2001411c6a2d0000220c71200b200c722001413c6a2d000071722125200141db006a2d0000220b2001411b6a2d0000220c71200b200c722001413b6a2d000071722124200141da006a2d0000220b2001411a6a2d0000220c71200b200c722001413a6a2d000071722123200141d9006a2d0000220b200141196a2d0000220c71200b200c72200141396a2d000071722122200141d8006a2d0000220b200141186a2d0000220c71200b200c72200141386a2d000071722121200141d7006a2d0000220b200141176a2d0000220c71200b200c72200141376a2d000071722120200141d6006a2d0000220b200141166a2d0000220c71200b200c72200141366a2d00007172211f200141d5006a2d0000220b200141156a2d0000220c71200b200c72200141356a2d00007172211e200141d4006a2d0000220b200141146a2d0000220c71200b200c72200141346a2d00007172211d200141d3006a2d0000220b200141136a2d0000220c71200b200c72200141336a2d00007172211c200141d2006a2d0000220b200141126a2d0000220c71200b200c72200141326a2d00007172211b200141d1006a2d0000220b200141116a2d0000220c71200b200c72200141316a2d00007172211a200141d0006a2d0000220b200141106a2d0000220c71200b200c72200141306a2d000071722119200141cf006a2d0000220b2001410f6a2d0000220c71200b200c722001412f6a2d000071722118200141ce006a2d0000220b2001410e6a2d0000220c71200b200c722001412e6a2d000071722117200141cd006a2d0000220b2001410d6a2d0000220c71200b200c722001412d6a2d000071722116200141cc006a2d0000220b2001410c6a2d0000220c71200b200c722001412c6a2d000071722115200141cb006a2d0000220b2001410b6a2d0000220c71200b200c722001412b6a2d000071722114200141ca006a2d0000220b2001410a6a2d0000220c71200b200c722001412a6a2d000071722113200141c9006a2d0000220b200141096a2d0000220c71200b200c72200141296a2d000071722112200141c8006a2d0000220b200141086a2d0000220c71200b200c72200141286a2d000071722111200141c7006a2d0000220b200141076a2d0000220c71200b200c72200141276a2d000071722129200141c6006a2d0000220b200141066a2d0000220c71200b200c72200141266a2d00007172212a200141c5006a2d0000220b200141056a2d0000220c71200b200c72200141256a2d00007172212b200141c4006a2d0000220b200141046a2d0000220c71200b200c72200141246a2d00007172212c200141c3006a2d0000220b200141036a2d0000220c71200b200c72200141236a2d00007172212d200141c2006a2d0000220b200141026a2d0000220c71200b200c72200141226a2d00007172212e200141c1006a2d0000220b200141016a2d0000220c71200b200c72200141216a2d00007172212f200141c0006a2d0000220b20012d0000220c71200b200c72200141206a2d00007172210b200541800c460d04200341206a20052004410574200741096e41e0006c6b6a6a220141ff006a20283a0000200141fe006a20273a0000200141fd006a20263a0000200141fc006a20253a0000200141fb006a20243a0000200141fa006a20233a0000200141f9006a20223a0000200141f8006a20213a0000200141f7006a20203a0000200141f6006a201f3a0000200141f5006a201e3a0000200141f4006a201d3a0000200141f3006a201c3a0000200141f2006a201b3a0000200141f1006a201a3a0000200141f0006a20193a0000200141ef006a20183a0000200141ee006a20173a0000200141ed006a20163a0000200141ec006a20153a0000200141eb006a20143a0000200141ea006a20133a0000200141e9006a20123a0000200141e8006a20113a0000200141e7006a20293a0000200141e6006a202a3a0000200141e5006a202b3a0000200141e4006a202c3a0000200141e3006a202d3a0000200141e2006a202e3a0000200141e1006a202f3a0000200141e0006a200b3a000020042107200541e0006a220541e00c470d000c040b0b1032000b1033000b102c000b4100210120310d000b0b200020283a001f200020273a001e200020263a001d200020253a001c200020243a001b200020233a001a200020223a0019200020213a0018200020203a00172000201f3a00162000201e3a00152000201d3a00142000201c3a00132000201b3a00122000201a3a0011200020193a0010200020183a000f200020173a000e200020163a000d200020153a000c200020143a000b200020133a000a200020123a0009200020113a0008200020293a00072000202a3a00062000202b3a00052000202c3a00042000202d3a00032000202e3a00022000202f3a00012000200b3a00000b0240200e42ffffff3f83500d00200d10230b200341a00d6a24000f0b102a000b13002000410136020420004198ebc2003602000b3400200041fee2c20036020420004100360200200041146a4105360200200041106a41e0ecc200360200200041086a420f3702000b130020004102360204200041f0f1c2003602000b2d01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241e5003600000bf90403027f017e057f230041d0006b2202240041b9f4c200ad4280808080c00184100c22032900002104200241086a200341086a290000370300200220043703002003102341daf4c200ad4280808080800284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b130020004101360204200041ecf4c2003602000b3400200041b9f4c20036020420004100360200200041146a4103360200200041106a41c8f5c200360200200041086a420c3702000b3400200041abe3c20036020420004100360200200041146a4101360200200041106a41e0f9c200360200200041086a42183702000b130020004102360204200041c0fcc2003602000ba40301027f230041e0006b22032400200341003a00050240024002400240200041c000490d00200041808001490d012000418080808004490d0241052104200341053a0005200341033a0000200320003600010c030b41012104200341013a0005200320004102743a00000c020b41022104200341023a0005200320004102744101723b01000c010b41042104200341043a0005200320004102744102723602000b024002402001280200220028020822012002490d0020002802002100200320023602082003200436020c20042002470d0120002003200210a1051a200341e0006a24000f0b200220014190e3c2001043000b200341286a41146a410b360200200341346a410d360200200341106a41146a41033602002003200341086a36024020032003410c6a360244200341c8006a41146a4100360200200342033702142003418ca7c7003602102003410d36022c2003419ca8c7003602582003420137024c200341e0a7c7003602482003200341286a3602202003200341c8006a3602382003200341c4006a3602302003200341c0006a360228200341106a419ca8c700103a000b8cc2010f027f017e067f017e107f017e067f027e077f037e057f017e067f017e067f230041b00a6b2204240002400240024002400240024002400240200141ff01710d00200241ff01714102470d00200441d0076a41186a4200370300200441d0076a41106a22054200370300200441d0076a41086a22014200370300200442003703d00741b0dfc300ad4280808080a00184100c22022900002106200441b0066a41086a2207200241086a290000370300200420063703b0062002102320012007290300370300200420042903b0063703d00741a89ec700ad4280808080900184100c22022900002106200441d0016a41086a2208200241086a290000370300200420063703d00120021023200520042903d001220637030020044180046a41086a2202200129030037030020044180046a41106a2209200637030020044180046a41186a220a2008290300370300200420042903d00737038004200441386a20044180046a4120419ca8c70041004100108c0120042802384101460d01200a4200370300200942003703002002420037030020044200370380044196adc300ad4280808080900184100c220829000021062002200841086a29000037030020042006370380042008102341bce0c300ad4280808080e00084100c220829000021062001200841086a290000370300200420063703d00720081023200920042903d007220637030020072002290300370300200441b0066a41106a2006370300200441b0066a41186a200129030037030020042004290380043703b006200441d0076a200441b0066a10910320042802d0072201410420011b210b200341086a280200220c20042902d407420020011b220d422088a7220e4b0d03200c41ffffffff0371200c460d020c070b200041023a00000c040b20004183203b0100200041086a4112360200200041046a41f5fec200360200200041026a41003a00000c030b200c4102742201417f4c0d040240024002400240024020010d004104210f0c010b20011021220f450d010b41002102200441003602482004200f3602402004200141027622013602440240200e450d0020032802002210200c4188026c6a2111024002400240200c450d00200b200e412c6c6a210a4100211241012101200b210720102113034020132802402108024002400240024020014101710d00200220084f0d010b20134188026a2114200721010340200a2001460d02200128020021022001412c6a2207210120022008470d000b200741786a2802004102460d0220134198016a2007460d02200741586a201341f0006a412010a305450d0220004183203b0100200041086a410f360200200041046a41bbffc200360200200041026a41043a0000200441c0006a21010c050b20004183203b0100200041086a410f360200200041046a419cffc200360200200041026a41023a0000200441c0006a21010c040b20004183203b0100200041086a4110360200200041046a41abffc200360200200041026a41033a0000200441c0006a21010c030b024020132802182215450d0020132802102116200441d0076a200810c10320044180046a20042802d007220220042802d80710e501200428028404410020042802800441014622171b21012004280288042118024020042802d407450d00200210230b02400240200120156a22014101460d004105211941caffc200211a4109211b200141e4004b0d012018410020171b210220154104742117201641086a21010340200128020020026a2102200141106a2101201741706a22170d000b200241a09c014b0d010b200841e807490d012015410474210103402001450d02200141706a210120162d000c2102201641106a211620024102470d000b4106211941d3ffc200211a4114211b0b20004183203b0100200041086a201b360200200041046a201a360200200041026a20193a0000200441c0006a21010c030b20132802402102024020122004280244470d00200441c0006a2012410110792004280240210f200428024821120b200f20124102746a20023602002004201241016a2212360248410021012014211320142011470d000b0b200441d0076a41186a22074200370300200441d0076a41106a22084200370300200441d0076a41086a22014200370300200442003703d00741b0dfc300ad4280808080a00184100c22022900002106200441b0066a41086a220a200241086a290000370300200420063703b006200210232001200a290300370300200420042903b0063703d00741bcbac500ad4280808080b00184100c22022900002106200441d0016a41086a220a200241086a290000370300200420063703d00120021023200520042903d001370000200541086a200a29030037000020044180046a41086a200129030037030020044180046a41106a200829030037030020044180046a41186a2007290300370300200420042903d00737038004200441d0076a20044180046a10ad0220042802d007211420042902d4072106200441d0076a10c20320042802d407211c20042802d007211b20042802d8072101200441b0016a41186a200441f4076a290200370300200441b0016a41106a200441ec076a290200370300200441b0016a41086a200441e4076a290200370300200420042902dc073703b0012001200141ffffffff0171470d0a20014103742202417f4c0d0a0240024020020d00410421170c010b200210212217450d040b41002107200441003602d807200420173602d00720042002410376221d3602d407024020014103742201450d00201b20016a211241002107201b210f4100211303400240200f2802004101470d00024002400240200741014b0d000240024020070e020001000b200f2802042116410021010c030b200f2802042116410021010c010b200f28020421164100210120072102034020012002410176220820016a220a2017200a4103746a28020420164b1b2101200220086b220241014b0d000b0b0240201720014103746a28020422022016460d00200120022016496a21010b200720014f0d00200120071038000b0240200720042802d407470d00200441d0076a2007410110a50120042802d00721170b201720014103746a220241086a2002200720016b41037410a2051a20022016360204200220133602002004200741016a22073602d8070b201341016a21132012200f41086a220f470d000b20042802d407211d0b20044180046a41186a2202420037030020044180046a41106a2208420037030020044180046a41086a22014200370300200442003703800441e4dec400ad4280808080e00084100c220a290000211e2001200a41086a2900003703002004201e37038004200a102341f9dec400ad4280808080a00184100c220a290000211e200441d0076a41086a2216200a41086a2900003703002004201e3703d007200a1023200920042903d007370000200941086a2016290300370000200441b0066a41086a2001290300370300200441b0066a41106a2008290300370300200441b0066a41186a200229030037030020042004290380043703b006200441d0076a200441b0066a412010e10120042d00d007210a2002200441e9076a2900003703002008200441e1076a2900003703002001200441d9076a290000370300200420042900d1073703800402400240200a4101460d0020044190076a41186a420037030020044190076a41106a420037030020044190076a41086a420037030020044200370390070c010b20044190076a41186a200229030037030020044190076a41106a200829030037030020044190076a41086a20012903003703002004200429038004370390070b20044180046a41186a2202420037030020044180046a41106a2208420037030020044180046a41086a22014200370300200442003703800441db97c700ad4280808080f00084100c220a290000211e2001200a41086a2900003703002004201e37038004200a102341bcbcc300ad4280808080c00184100c2216290000211e200441d0076a41086a220a201641086a2900003703002004201e3703d00720161023200920042903d007370000200941086a2215200a290300370000200441b0066a41086a220f2001290300370300200441b0066a41106a22132008290300370300200441b0066a41186a2212200229030037030020042004290380043703b006200441306a200441b0066a412010cd012004280234211820042802302119200242003703002008420037030020014200370300200442003703800441e4dec400ad4280808080e00084100c2216290000211e2001201641086a2900003703002004201e370380042016102341f9dec400ad4280808080a00184100c2216290000211e200a201641086a2900003703002004201e3703d00720161023200920042903d0073700002015200a290300370000200f2001290300370300201320082903003703002012200229030037030020042004290380043703b006200441d0076a200441b0066a412010e10120042d00d007210a2002200441e9076a2900003703002008200441e1076a2900003703002001200441d9076a290000370300200420042900d107370380042018410020191b211602400240200a4101460d002012420037030020134200370300200f4200370300200442003703b0060c010b2012200229030037030020132008290300370300200f200129030037030020042004290380043703b0060b2006420020141b21062014410120141b211f200441d0016a410c6a200441b0066a41086a2220290300370200200441e4016a200441b0066a41106a2221290300370200200441ec016a200441b0066a41186a2222290300370200200420163602d001200420042903b0063702d4012004410036028807200442013703800741012123200c450d01201f41606a21242017410c6a2119200441d0076aad42808080808002842125200441b0066aad428080808080048421262006422088a72127200441d0076a4101722128200441d0076a41106a211a200441d9076a2129410121234100210c410021020240034041e7ffc20021134183a01c21124110211420022007460d0120104188026a212a2010280240210f2002210a024002400240024002400240024002400340024002402007200a4d0d002017200a41037422166a221528020421082007200a41016a22024d0d01201920166a2101034020012802002008470d02200141086a21012007200241016a2202470d000b200721020c010b200a200741a4aac0001030000b2002200a490d010240200720024f0d00200220074194aac0001043000b02402008200f460d002002210a20022007460d0b0c010b0b024020044190076a201041d0006a2208460d00200820044190076a412010a305450d0041f380c30021134183a0c0002112411521140c0a0b0240201041f8016a222b28020022132002200a6b220141017620014101716a4f0d0041f7ffc20021134183a0202112411621140c0a0b0240201320274d0d00418d80c30021134183a0242112411721140c0a0b0240201041cc006a22132802004180a0014d0d00419fabc30021134183a03821120c0a0b200441d0076a200f10c3030240024020042802d007222c450d0020042802d407212d2004200f3602b00720044180046a200441b0076a10af02200441b0066a20044180046a109702200441d0076a20042802b006220120042802b80610980220042903d007212e201a290300212f20042903d8072130024020042802b406450d00200110230b20132802002201417f4c0d162010280244210a0240024020010d0041002131410121120c010b20012131200110212212450d100b2012200a200110a105213220044180046a41186a223320104188016a29000037030020044180046a41106a223420104180016a29000037030020044180046a41086a2235201041f8006a2900003703002004201029007037038004201041086a2212290300211e20102903002136200441b0066a201041106a10c403200441d0076a41186a2237201041346a2238290000370300201a2010412c6a223929000037030020042802b006213a20042802b406213b20042802b806213c20304200202e42015122011b203654202f420020011b222e201e54202e201e511b450d0141e680c30021134183a03c2112410d21140c090b41d880c30021134183a0342112410e21140c0a0b2004200f3602d806200441b0076a200441d8066a10af0241002101200441003a00df06200441083a00de06200420363703b0062004201e3703b8062004200441b0076a3602f0060240024002402036201e8450450d004200211e420021360c010b2004200441b0076a3602e0062004200441e0066a3602e0072004200441de066a3602dc072004200441f0066a3602d8072004200441df066a3602d4072004200441b0066a3602d00720044180046a200441b0076a200441d0076a10c50302402004280280044101470d0042002136200429038804211e41012101200428028404210a0c020b20044180046a41286a290300213620042903a004211e410021012004290388044201520d00200429039004212e20042802e0062101200441d0076a41386a203329030037030020292001290000370000202941086a200141086a290000370000202941106a200141106a290000370000202941186a200141186a2900003700002004202e3703800841002101200441003a00d807200441023a00d007200441d0076a10e0010b0b0240024020010d0020374200370300201a4200370300200441d0076a41086a22014200370300200442003703d00741bdadc500ad4280808080800184222e100c220a290000212f2035200a41086a2900003703002004202f37038004200a10232001203529030037030020042004290380043703d00741c5adc500ad4280808080d00184222f100c220f2900002130200441e0066a41086a220a200f41086a290000370300200420303703e006200f1023201a20042903e006370000201a41086a2218200a290300370000202020012903003703002021201a29030037030020222037290300370300200420042903d0073703b006200441186a200441b0066a412010d701200441186a41106a29030021302004290320213d2004280218210f20374200370300201a420037030020014200370300200442003703d007202e100c2214290000212e2035201441086a2900003703002004202e37038004201410232001203529030037030020042004290380043703d007202f100c2214290000212e200a201441086a2900003703002004202e3703e00620141023201a20042903e0063700002018200a290300370000202020012903003703002021201a29030037030020222037290300370300200420042903d0073703b0062004420020304200200f1b222e20367d203d4200200f1b2236201e54ad7d222f2036201e7d221e203656202f202e56202f202e511b22011b3703d80720044200201e20011b3703d00720262025100e0c010b200a41ff01714104470d020b200441003602d807200442013703d0072010280240210a410410212201450d0f200441043602d407200420013602d0072001200a360000200441043602d807412010212201450d0d20012008290000370000200141186a2214200841186a290000370000200141106a2218200841106a290000370000200141086a223e200841086a2900003700000240024020042802d407220f20042802d80722086b4120490d0020042802d007210a0c010b200841206a220a2008490d0f200f410174223f200a203f200a4b1b223f4100480d0f02400240200f0d000240203f0d004101210a0c020b203f1021220a0d010c120b20042802d007210a200f203f460d00200a200f203f1025220a450d1120042802d80721080b2004203f3602d4072004200a3602d0070b200a20086a220a2001290000370000200a41186a2014290000370000200a41106a2018290000370000200a41086a203e2900003700002004200841206a3602d807200110232010280244211420132802002201200441d0076a10610240024020042802d407220f20042802d80722086b2001490d0020042802d007210a0c010b200820016a220a2008490d0f200f4101742213200a2013200a4b1b22134100480d0f02400240200f0d00024020130d004101210a0c020b20131021220a450d120c010b20042802d007210a200f2013460d00200a200f20131025220a450d1120042802d80721080b200420133602d4072004200a3602d0070b200a20086a2014200110a1051a2004200820016a22013602d8070240024020042802d407220a20016b4120490d0020042802d0072108200a210f0c010b200141206a22082001490d0f200a410174220f2008200f20084b1b220f4100480d0f02400240200a0d000240200f0d00410121080c020b200f10212208450d120c010b20042802d0072108200a200f460d002008200a200f10252208450d1120042802d80721010b2004200f3602d407200420083602d0070b200820016a220a201041f0006a2213290000370000200a41186a201341186a290000370000200a41106a201341106a290000370000200a41086a201341086a2900003700002004200141206a220a3602d8070240200f200a6b413f4b0d00200a41c0006a2201200a490d0f200f41017422132001201320014b1b22014100480d0f02400240200f0d00024020010d00410121080c020b200110212208450d120c010b200f2001460d002008200f200110252208450d1120042802d807210a0b200420013602d407200420083602d0070b2008200a6a220120104190016a2208290000370000200141386a200841386a290000370000200141306a200841306a290000370000200141286a200841286a290000370000200141206a200841206a290000370000200141186a200841186a290000370000200141106a200841106a290000370000200141086a200841086a2900003700002004200a41c0006a3602d807412010212201450d0d2001201041d0016a2208290000370000200141186a2213200841186a290000370000200141106a2214200841106a290000370000200141086a2218200841086a2900003700000240024020042802d407220f20042802d80722086b4120490d0020042802d007210a0c010b200841206a220a2008490d0f200f410174223e200a203e200a4b1b223e4100480d0f02400240200f0d000240203e0d004101210a0c020b203e1021220a450d120c010b20042802d007210a200f203e460d00200a200f203e1025220a450d1120042802d80721080b2004203e3602d4072004200a3602d0070b200a20086a220a2001290000370000200a41186a2013290000370000200a41106a2014290000370000200a41086a20182900003700002004200841206a3602d807200110232012290300211e201029030021360240024020042802d407220a20042802d80722016b4110490d0020042802d00721080c010b200141106a22082001490d0f200a410174220f2008200f20084b1b220f4100480d0f02400240200a0d000240200f0d00410121080c020b200f10212208450d120c010b20042802d0072108200a200f460d002008200a200f10252208450d1120042802d80721010b2004200f3602d407200420083602d0070b200820016a2208201e370008200820363700002004200141106a3602d8072010280210210120102802182208200441d0076a106102402008450d0020084104742112034002402001410c6a2d000022084103714103460d004100210a02400240024020080e03020001020b4101210a0c010b4102210a0b2004200a3a00f0060240024020042802d40720042802d8072208460d0020042802d007210f0c010b200841016a220f2008490d1220084101742213200f2013200f4b1b22134100480d120240024020080d0041002108024020130d004101210f0c020b20131021220f450d150c010b20042802d007210f20082013460d00200f200820131025220f450d1420042802d80721080b200420133602d4072004200f3602d0070b200f20086a200a3a00002004200841016a3602d8070b20012802002114200141086a2802002208200441d0076a10610240024020042802d407221320042802d807220a6b2008490d0020042802d007210f0c010b200a20086a220f200a490d1120134101742218200f2018200f4b1b22184100480d110240024020130d00024020180d004101210f0c020b20181021220f450d140c010b20042802d007210f20132018460d00200f201320181025220f450d1320042802d807210a0b200420183602d4072004200f3602d0070b200141106a2101200f200a6a2014200810a1051a2004200a20086a3602d807201241706a22120d000b0b412010212201450d0d2001201029001c370000200141186a22132038290000370000200141106a22122039290000370000200141086a2214201041246a2900003700000240024020042802d407220f20042802d80722086b4120490d0020042802d007210a0c010b200841206a220a2008490d0f200f4101742218200a2018200a4b1b22184100480d0f02400240200f0d00024020180d004101210a0c020b20181021220a450d120c010b20042802d007210a200f2018460d00200a200f20181025220a450d1120042802d80721080b200420183602d4072004200a3602d0070b200a20086a220a2001290000370000200a41186a2013290000370000200a41106a2012290000370000200a41086a20142900003700002004200841206a3602d8072001102320042802d4072108203320043502d80742208620042802d007220aad841018220141186a2900003703002034200141106a2900003703002035200141086a29000037030020042001290000370380042001102302402008450d00200a10230b41002138200441003602e006200441003602b007200241037420166b213e201028028002210120102802fc01211641002139410021144100211803402014417f6a210a202420144105746a2112034020014108490d064101210f200441013602d8062004200141037622133602f00602400240201341014b0d002001210841002101024020130e020002000b200441bc066a4101360200200441e4076a4102360200200442023702d4072004419c96c7003602d007200441013602b4062004200441b0066a3602e0072004200441f0066a3602b8062004200441d8066a3602b006200441d0076a419ca8c700103a000b2001410771220f41087221082016200f4107466a210f200141016a410771200141786a4178717221010b2016410120081b2113201241206a2112200a41016a210a200f2116410120084107717420132d000071450d000b202b28020020184d0d04200a41016a2114201841016a214020102802f001201841c1006c6a213f203e2108201521160340024020080d0041a480c3002113411721144183a02821120c080b200841786a210820162802002113201641086a21162013200a470d000b02400240203f2d00004101470d00200441b0076a210820390d012028200429038004370000202841086a2035290300370000202841106a2034290300370000202841186a2033290300370000200441013a00d007200441b0076a200441d0076a200441d0016a107620042802b00721390c010b200441e0066a210820380d002028200429038004370000202841086a2035290300370000202841106a2034290300370000202841186a2033290300370000200441003a00d007200441e0066a200441d0076a200441d0016a107620042802e00621380b200a20274f0d03200f211620402118203f41016a2008350208422086200835020084201210134101460d000b41bb80c3002113411021144183a02c21120c050b200a20024194aac0001044000b200a410876410874200a41ff0171722112201e422088a72114201ea721130c050b200a202741d084c3001030000b41f7ffc2002113411621144183a02021120c010b202b2802002018460d0141cb80c3002113410d21144183a03021120b02402039450d0020042802b407450d00203910230b2038450d0120042802e406450d01203810230c010b20372033290300370300201a2034290300370300200441d0076a41086a2208203529030037030020042004290380043703d0070240200c200428028407470d0020044180076a200c4101109a012004280280072123200428028807210c0b2023200c4105746a220120042903d007370000200141186a2037290300370000200141106a201a290300370000200141086a20082903003700002004200c41016a220c3602880702402039450d0020042802b407450d00203910230b02402038450d0020042802e406450d00203810230b02402031450d00203210230b0240202d450d00202c10230b0240203c450d00203c4104742108203a210103400240200141046a280200450d00200128020010230b200141106a2101200841706a22080d000b0b0240203b41ffffffff0071450d00203a10230b202a2110202a2011470d010c040b0b02402031450d00203210230b0240202d450d00202c10230b0240203c450d00203c4104742102203a210103400240200141046a280200450d00200128020010230b200141106a2101200241706a22020d000b0b203b41ffffffff0071450d00203a10230b024020042802840741ffffff3f71450d00202310230b0240201d41ffffffff0171450d00201710230b0240201c41ffffffff0171450d00201b10230b0240200642ffffff3f83500d00201f10230b200441f0006a41186a20044190016a41186a290200370300200441f0006a41106a20044190016a41106a290200370300200441f0006a41086a20044190016a41086a2902003703002004200429029001370370200041086a2014360200200041046a201336020020002012360200200441c0006a21010b200141046a28020041ffffffff0371450d06200128020010230c060b20044180046a41186a2202420037030020044180046a41106a2207420037030020044180046a41086a22014200370300200442003703800441e4dec400ad4280808080e00084100c2208290000211e2001200841086a2900003703002004201e370380042008102341f3dec400ad4280808080e00084100c220a290000211e200441d0076a41086a2208200a41086a2900003703002004201e3703d007200a1023200920042903d007370000200941086a2216200829030037000020202001290300370300202120072903003703002022200229030037030020042004290380043703b006200441106a200441b0066a412010cd012004280214210f20042802102113200242003703002007420037030020014200370300200442003703800441db97c700ad4280808080f00084100c220a290000211e2001200a41086a2900003703002004201e37038004200a102341bcbcc300ad4280808080c00184100c220a290000211e2008200a41086a2900003703002004201e3703d007200a1023200920042903d0073700002016200829030037000020202001290300370300202120072903003703002022200229030037030020042004290380043703b006200441086a200441b0066a412010cd01200428020c214020042802082141200441003602d807200442043703d007200441d0076a4100200e1079200e412c6c210820042802d007223220042802d80722074102746a2101200b2102034020012002280200360200200741016a2107200141046a21012002412c6a2102200841546a22080d000b20044190016a41086a200441b0016a41086a29030037030020044190016a41106a200441b0016a41106a29030037030020044190016a41186a200441b0016a41186a290300370300200420073602d807200420042903b0013703900120042902d40721302004280284072142200428028807212c0240201d41ffffffff0171450d00201710230b0240201c41ffffffff0171450d00201b10230b200f410020131b21310240200642ffffff3f83500d00201f10230b200441d0006a41086a20044190016a41086a2903002206370300200441d0006a41106a20044190016a41106a290300221e370300200441d0006a41186a20044190016a41186a290300223637030020042004290390012225370350200341086a280200210c2003280200211d200441b0016a41186a2036370300200441b0016a41106a201e370300200441b0016a41086a2006370300200420253703b00120044190076a2031413270224310ad032004280290072108200420042802980722013602e406200420083602e006200441b0076a2001ad4220862008ad8422061010108b0102400240024002400240024020042802b0072207450d0020042802b40721172004200441b0076a41086a28020022013602742004200736027002400240024020014104490d002004200741046a36027020042001417c6a220236027420024104490d002007350000211e2004200141786a220a3602742004200741086a360270200441003a00f0074100210102400340200441003a00f006200a2001460d01200441d0076a20016a200720016a220241086a2d00003a00002004200241096a3602702004200141016a22023a00f0072002210120024120470d000b20044180046a41086a200441d0076a41086a29030037030020044180046a41106a200441d0076a41106a29030037030020044180046a41186a200441d0076a41186a2903003703002004200a20026b360274200420042903d00737038004200441d0076a200441f0006a10c60320042802d007220a450d0120042802d4072116200441d0076a200441f0006a10cf0120042802d00722130d02201641ffffffff0371450d01200a10230c010b20044100360274200141ff0171450d00200441003a00f0070b4100210a200441003602880420044201370380042004410a360294012004200441e0066a36029001200420044180046a3602d00141012101200441e4076a4101360200200442013702d40720044180c5c6003602d007200420044190016a3602e007200441d0016a4184a5c200200441d0076a10311a20043502880442208620043502800484100a0240200428028404450d0020042802800410230b0c010b200441d0016a41086a20044180046a41086a290300370300200441d0016a41106a20044180046a41106a29030037030020042802d407210f410021010b02402017450d00200710230b2001450d010b2004280294070d010c040b2006101120042802940721010240200a450d0002402001450d00200810230b41b9f4c200ad4280808080c00184100c22012900002106200441b0066a41086a200141086a290000370300200420063703b0062001102341c5f4c200ad4280808080d00284100c22012900002106200441d0016a41086a200141086a290000370300200420063703d001200110232004201e3e02b0072004200441b0076aad4280808080c00084100d22012900003703900120011023200441dc076a200441b4076a360200200441003a00e007200420044190016a41086a3602d4072004200441b0076a3602d807200420044190016a3602d00720044180046a200441d0076a1065200428028804221741206a2202417f4c0d0d2004280280042109024002402002450d00200210212201450d082002410f4d0d01200221070c050b200241017422014110200141104b1b220710212201450d090c040b200241017422074110200741104b1b220741004e0d020c070b2001450d030b200810230c020b20022007460d0020012002200710252201450d050b200120042903b006370000200141086a200441b0066a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0420072008460d0020012007200810252201450d050b200120042903d001370010200141186a200441d0016a41086a2903003700000240200841606a20174f0d002017415f4b0d04200841017422072002200720024b1b22074100480d0420082007460d0020012008200710252201450d050b200141206a2009201710a1051a0240200428028404450d00200910230b2002ad4220862001ad841012200110230240201641ffffffff0371450d00200a10230b200f41ffffff3f71450d00201310230b200441d0076a41186a4200370300200441d0076a41106a22074200370300200441d0076a41086a22014200370300200442003703d00741db97c700ad4280808080f00084100c220229000021062001200241086a290000370300200420063703d0072002102341bbacc300ad4280808080a00184100c22022900002106200441d0016a41086a2208200241086a290000370300200420063703d00120021023200720042903d001220637030020044180046a41086a200129030037030020044180046a41106a200637030020044180046a41186a2008290300370300200420042903d00737038004200441d0076a20044180046a41201089020240024020042802d00722010d00200441003602f806200442013703f0060c010b200420042902d4073702f406200420013602f0060b0240202c200c202c200c491b223b450d0020044190076aad4280808080c00084212f20044190076a41046a213e20044190016a41086a2127200441d0076a41086a2129200441d0076a410472212d200441d0076a41146a213a200441d0076a4101722113200441b0076a41146a211a2004419c076a213f20044190076a4104722128200441d0016a41106a210e200441b0066a41106a2110200441c0096a212a200441a0096a211c200441e0086a211b200441c0086a2122200441a0086a2121200441ec076a2120200441d0076a41106a21354100211f034020044100360288072004420137038007201d201f4188026c6a220f2802fc012107200f4180026a2802002108200441b0066a41186a2215420037030020104200370300200441b0066a41086a22094200370300200442003703b00641db97c700ad4280808080f00084100c220129000021062009200141086a290000370300200420063703b0062001102341bbacc300ad4280808080a00184100c22012900002106200441e0066a41086a2202200141086a290000370300200420063703e00620011023201020042903e006370000201041086a200229030037000020044180046a41086a2214200929030037030020044180046a41106a2219201029030037030020044180046a41186a22112015290300370300200420042903b00637038004200441d0076a20044180046a41201089020240024020042802d00722010d004100210220044100360278200442013703700c010b200420042902d4072206370274200420013602702006a721020b200441d0016a41186a22184200370300200e4200370300200441d0016a41086a22124200370300200442003703d001418fcdc200ad4280808080f00084100c220129000021062012200141086a290000370300200420063703d0012001102341b8dbc100ad4280808080900184100c220129000021062014200141086a290000370300200420063703800420011023200e200429038004370000200e41086a2014290300370000202920122903003703002035200e290300370300200441d0076a41186a2018290300370300200420042903d0013703d00720044180046a200441d0076a10ba01203720042802900420042903800442025122011b2137024020010d0020044190016a203710b801200441d0076a2004280290012233200428029801222410bb012014202d41086a22342902003703002004202d290200370380040240024020042802d0074101460d002004410036029c0720044200370390070c010b20044190076a41086a20142903003703002004200429038004370390070b200441003602b807200420083602b407200420073602b0072004200441f0006a3602c407200420044180076a3602c0072004200441f0066a3602bc07200441d0076a200441b0076a201a10c703024020042d00d0074101470d0003402009201341086a29000022063703002010201341106a290000221e3703002015201341186a29000022363703002004201329000022253703b00620182036370300200e201e37030020122006370300200420253703d00102400240200428029407220a450d0020042802980721170c010b200441d0076a410041e00210a0051a20044180046a41286a2201410036020020044180046a41206a2202420037030020114200370300201942003703002014420037030020044200370380044194031021220a450d0941002117200a41003b0106200a4100360200200a41086a200441d0076a41e00210a1051a200a4190036a2001280200360200200a4188036a2002290300370200200a4180036a2011290300370200200a41f8026a2019290300370200200a41f0026a2014290300370200200a2004290380043702e80220044100360298072004200a360294070b024002400340200a41086a2102200a2f01062216410574210141002107024003402001450d01200441d0016a2002412010a3052208450d03200141606a2101200741016a2107200241206a21022008417f4a0d000b2007417f6a21160b02402017450d002017417f6a2117200a20164102746a4194036a280200210a0c010b0b2011201829030022063703002019200e290300221e370300201420122903002236370300200420042903d001222537038004203a2025370200203a41086a2036370200203a41106a201e370200203a41186a20063702002004203f3602e007200420163602dc07200420283602d8072004200a3602d407200441003602d007200441d0076a410010bc0121010c010b200a20074102746a41e8026a21010b2001200128020041146a360200200420042802900741146a36029007200441d0076a200441b0076a201a10c70320042d00d0074101460d000b0b203420044190076a41086a290300370200202d200429039007370200200441013602d0072004410036028804200442013703800420042802d4072102410410212201450d0620012002360000200420013602800420044284808080c00037028404202920044180046a10bd0120042802840421012024ad4220862033ad842004350288044220862004280280042202ad84100e02402001450d00200210230b024020042802d007450d00202910be010b0240200428029401450d00203310230b200428027421020b0240200241ffffff3f71450d00200428027010230b2009200f41d8006a2900003703002010200f41e0006a2900003703002015200f41e8006a2900003703002004200f2900503703b006200f41cc006a2802002201417f4c0d0a200f2802442102200f28024021070240024020010d00410021084101210a0c010b2001210820011021220a450d040b200a2002200110a1052102200441b0076a41186a220a200f4188016a290300370300200441b0076a41106a2217200f4180016a290300370300200441b0076a41086a2216200f41f8006a2903003703002014200f4198016a2900003703002019200f41a0016a2900003703002011200f41a8016a29000037030020044180046a41206a2233200f41b0016a29000037030020044180046a41286a2224200f41b8016a29000037030020044180046a41306a2234200f41c0016a29000037030020044180046a41386a223c200f41c8016a2900003703002004200f2903703703b0072004200f290090013703800420044190076a41186a2238200f41e8016a29000037030020044190076a41106a2239200f41e0016a29000037030020044190076a41086a222b200f41d8016a2900003703002004200f2900d00137039007200f41086a290300211e200f290300213620044190016a200f41106a10c4032018200f41346a2900002225370300200e200f412c6a29000022263703002012200f41246a290000222e370300200f29001c21062035200429039001370300203541086a202728020036020020202006370200202041086a202e370200202041106a2026370200202041186a20253702002004201e3703d807200420363703d007200420063703d0012004200736029008200420023602940820042008360298082004200136029c08202141186a2015290300370300202141106a2010290300370300202141086a2009290300370300202120042903b006370300202220042903b007370300202241086a2016290300370300202241106a2017290300370300202241186a200a290300370300201b200429038004370300201b41086a2014290300370300201b41106a2019290300370300201b41186a2011290300370300201b41206a2033290300370300201b41286a2024290300370300201b41306a2034290300370300201b41386a203c290300370300201c41186a2038290300370300201c41106a2039290300370300201c41086a202b290300370300201c200429039007370300202a41086a20044180076a41086a280200360200202a200429038007370200200442013702cc09200441003602d40941b9f4c200ad4280808080c00184100c220129000021062009200141086a290000370300200420063703b0062001102341c5f4c200ad4280808080d00284100c220129000021062012200141086a290000370300200420063703d0012001102320042031360290072004202f100d22012900003703900120011023200441003a0090042004203e36028c042004202736028404200420044190076a36028804200420044190016a36028004200441b0076a20044180046a1065412010212201450d0320012023201f4105746a2202290000370000200141186a2207200241186a290000370000200141106a2208200241106a290000370000200141086a220a200241086a290000370000412010212202450d0320022001290000370000200241186a22162007290000370000200241106a220f2008290000370000200241086a2218200a2900003700002001102320042802b807220841c0006a2215417f4c0d0a20042802b00721170240024002402015450d00201510212214450d062015410f4d0d01201521010c020b41102101411010212214450d070c010b201541017422014110200141104b1b22014100480d05024020152001470d00201521010c010b20142015200110252214450d060b201420042903b006370000201441086a20092903003700000240024020014170714110460d002001210a0c010b200141017422074120200741204b1b220a4100480d052001200a460d0020142001200a10252214450d060b200841206a2101201420042903d001370010201441186a201229030037000002400240200a41606a2008490d00200a21070c010b2008415f4b0d05200a41017422072001200720014b1b22074100480d05200a2007460d002014200a200710252214450d060b201441206a2017200810a1051a02400240200720016b411f4d0d00200721090c010b200141206a22082001490d052007410174220a2008200a20084b1b22094100480d05024020070d00024020090d00410121140c020b200910212214450d070c010b20072009460d0020142007200910252214450d060b201420016a22012002290000370000200141186a2016290000370000200141106a200f290000370000200141086a201829000037000020021023024020042802b407450d00201710230b20044100360288042004420137038004200441d0076a20044180046a10e10220042802c009211720042802c809220120044180046a106102402001450d0020014105742116410020042802880422026b210a200428028004210f200428028404210803402017210102402008200a6a411f4b0d00200241206a22072002490d07200841017422172007201720074b1b22074100480d07024002400240024020080d00024020070d004101210f0c020b20071021210f0c030b20082007470d010b200721080c020b200f200820071025210f0b20072108200f450d080b200141206a2117200f20026a22072001290000370000200741186a200141186a290000370000200741106a200141106a290000370000200741086a200141086a290000370000200a41606a210a200241206a2102201641606a22160d000b200420083602840420042002360288042004200f360280040b20042802cc09211720042802d409220120044180046a10610240024020010d0020042802880421022004280284042108200428028004210f0c010b20014105742116410020042802880422026b210a200428028004210f200428028404210803402017210102402008200a6a411f4b0d00200241206a22072002490d07200841017422172007201720074b1b22074100480d07024002400240024020080d00024020070d004101210f0c020b20071021210f0c030b20082007470d010b200721080c020b200f200820071025210f0b20072108200f450d080b200141206a2117200f20026a22072001290000370000200741186a200141186a290000370000200741106a200141106a290000370000200741086a200141086a290000370000200a41606a210a200241206a2102201641606a22160d000b200420083602840420042002360288042004200f360280040b2015ad4220862014ad842002ad422086200fad84100e02402008450d00200f10230b02402009450d00201410230b0240200428029808450d0020042802940810230b024020042802e8072202450d0020042802e00721012002410474210203400240200141046a280200450d00200128020010230b200141106a2101200241706a22020d000b0b024020042802e40741ffffffff0071450d0020042802e00710230b024020042802c40941ffffff3f71450d0020042802c00910230b201f41016a211f024020042802d00941ffffff3f71450d0020042802cc0910230b201f203b490d000b0b20044180046a204310ad0320043502880421062004280280042113200441003602d807200442013703d007410410212201450d03200441043602d407200420013602d00720012031360000200441043602d80720014104410810252201450d03200441083602d40720012040410020411b360004200420013602d007200441083602d80720014108412810252201450d03200120042903b001370008200141106a200441b8016a290300370000200141186a200441b0016a41106a290300370000200141206a200441b0016a41186a290300370000200441283602d407200420013602d007200441283602d8072030422088a72201200441d0076a106102402001450d0020014102742116410020042802d80722016b210220042802d40721082032210703402007280200210f02400240200820026a4104490d0020042802d007210a0c010b200141046a220a2001490d0520084101742217200a2017200a4b1b22174100480d050240024020080d00024020170d004101210a0c020b20171021220a450d080c010b20042802d007210a20082017460d00200a200820171025220a450d070b200420173602d4072004200a3602d007201721080b200741046a2107200a20016a200f3600002004200141046a22013602d8072002417c6a21022016417c6a22160d000b0b2023202c200441d0076a10c80320042802d407210120064220862013ad8420043502d80742208620042802d0072202ad84100e02402001450d00200210230b0240200428028404450d00201310230b024020042802f40641ffffff3f71450d0020042802f00610230b0240203042ffffffff0383500d00203210230b0240204241ffffff3f71450d00202310230b200441d0076a41186a22074200370300200441d0076a41106a22084200370300200441d0076a41086a22014200370300200442003703d00741b0dfc300ad4280808080a00184100c22022900002106200441b0066a41086a220a200241086a290000370300200420063703b006200210232001200a290300370300200420042903b0063703d00741fca2c300ad4280808080d00184100c22022900002106200441d0016a41086a220a200241086a290000370300200420063703d00120021023200520042903d001370000200541086a200a29030037000020044180046a41086a200129030037030020044180046a41106a200829030037030020044180046a41186a2007290300370300200420042903d00737038004200441d0076a20044180046a10c9030240024020042802d00722090d00410021102004410036029807200442043703900741042109410021160c010b20042902d4072106200420093602900720042006370294072006422088a721102006a721160b0240024002400240200c450d00201d200c4188026c6a2115200441b0076aad4280808080c00084211e200441b0076a41046a211820044190016a41086a2119200441d0076a410472211141b0dfc300ad4280808080a0018421360340200441d0076a201d280240221310ca0320042802d0072101200420042802d807360284042004200136028004201d280244201d41cc006a28020020044180046a10c802024020042802d407450d00200110230b0240201d2802182217450d00201d280210210120044180046a201310c103200441d0076a2004280280042216200428028804220f10e5014100210720042802d807410020042802d00741014622121b210e200141086a210220042802d40721142017410474220a21080340200228020020076a2107200241106a2102200841706a22080d000b20042007200e6a3602d807200441013602d00720042014410020121b20176a3602d4072004200f3602d401200420163602d0012011200441d0016a10e6010240200428028404450d00201610230b2036100c22022900002106200441b0066a41086a2207200241086a290000370300200420063703b0062002102341f0a1c300ad4280808080a00284100c22022900002106200441d0016a41086a220e200241086a290000370300200420063703d00120021023200420133602b0072004201e100d22022900003703900120021023200441003a00e007200420183602dc07200420193602d4072004200441b0076a3602d807200420044190016a3602d00720044180046a200441d0076a1065200428028804221641206a2202417f4c0d0e200428028004210f0240024002402002450d00200210212212450d0a2002410f4d0d01200221080c020b41102108411010212212450d0b0c010b200241017422084110200841104b1b22084100480d09024020022008470d00200221080c010b20122002200810252212450d0a0b201220042903b006370000201241086a20072903003700000240024020084170714110460d00200821070c010b200841017422074120200741204b1b22074100480d0920082007460d0020122008200710252212450d0a0b201220042903d001370010201241186a200e29030037000002400240200741606a2016490d002007210e0c010b2016415f4b0d09200741017422082002200820024b1b220e4100480d092007200e460d0020122007200e10252212450d0a0b201241206a200f201610a1051a0240200428028404450d00200f10230b20044180046a2002ad4220862012ad8422061010108b010240024020042802800422070d00410410212202450d09200442043702d407200420023602d0074100200441d0076a106120042802d807210220042802d407210820042802d00721070c010b200428028804210220042802840421080b200420023602b807200420083602b407200420073602b00702400240024002400240024002400240024002400240024002402002450d00200441d0076a200720022017107520042802d0074101460d0420042802d407211620042802dc07220720042802d8072208460d032002200720086b6a220220174102746a2217417f4c0d1b20170d014101210f0c020b2017200441b0076a1061034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200420073a00f0060240024020042802b40720042802b8072202460d0020042802b00721080c010b200241016a22072002490d17200241017422082007200820074b1b22074100480d170240024020020d0041002102024020070d00410121080c020b200710212208450d1a0c010b20042802b007210820022007460d0020082002200710252208450d1920042802b80721020b200420073602b407200420083602b00720042d00f00621070b200820026a20073a00002004200241016a3602b8070b20012802002116200141086a2802002202200441b0076a10610240024020042802b407221720042802b80722076b2002490d0020042802b00721080c010b200720026a22082007490d162017410174220f2008200f20084b1b220f4100480d160240024020170d000240200f0d00410121080c020b200f10212208450d190c010b20042802b00721082017200f460d0020082017200f10252208450d1820042802b80721070b2004200f3602b407200420083602b0070b200141106a2101200820076a2016200210a1051a2004200720026a22023602b807200a41706a220a0d000c090b0b20171021220f450d120b200420173602b4062004200f3602b006200420023602b8062004200441b0066a3602d0072016200441d0076a200710b20320022007490d0220042802b80622172002490d0320042802b80722172008490d0420042802b006211620042802b007210f2004200220076b22023602e0062004201720086b221736027020022017470d05201620076a200f20086a200210a1051a034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200420073a00f0060240024020042802b40620042802b8062202460d0020042802b00621080c010b200241016a22072002490d15200241017422082007200820074b1b22074100480d150240024020020d0041002102024020070d00410121080c020b200710212208450d180c010b20042802b006210820022007460d0020082002200710252208450d1720042802b80621020b200420073602b406200420083602b00620042d00f00621070b200820026a20073a00002004200241016a3602b8060b20012802002116200141086a2802002202200441b0066a10610240024020042802b406221720042802b80622076b2002490d0020042802b00621080c010b200720026a22082007490d142017410174220f2008200f20084b1b220f4100480d140240024020170d000240200f0d00410121080c020b200f10212208450d170c010b20042802b00621082017200f460d0020082017200f10252208450d1620042802b80621070b2004200f3602b406200420083602b0060b200141106a2101200820076a2016200210a1051a2004200720026a22023602b806200a41706a220a0d000b20042802b406210720042802b006210120042802b407450d0720042802b00710230c070b2004200441b0076a3602d0072016200441d0076a200810b203034002402001410c6a2d000022024103714103460d00024002400240024020020e03000102000b410021070c020b410121070c010b410221070b200420073a00f0060240024020042802b40720042802b8072202460d0020042802b00721080c010b200241016a22072002490d14200241017422082007200820074b1b22074100480d140240024020020d0041002102024020070d00410121080c020b200710212208450d170c010b20042802b007210820022007460d0020082002200710252208450d1620042802b80721020b200420073602b407200420083602b00720042d00f00621070b200820026a20073a00002004200241016a3602b8070b20012802002116200141086a2802002202200441b0076a10610240024020042802b407221720042802b80722076b2002490d0020042802b00721080c010b200720026a22082007490d132017410174220f2008200f20084b1b220f4100480d130240024020170d000240200f0d00410121080c020b200f10212208450d160c010b20042802b00721082017200f460d0020082017200f10252208450d1520042802b80721070b2004200f3602b407200420083602b0070b200141106a2101200820076a2016200210a1051a2004200720026a22023602b807200a41706a220a450d060c000b0b20042802b407450d0620042802b00710230c060b2007200241c494c6001044000b2002201741c494c6001043000b2008201741d494c6001044000b20044180046a41146a410b3602002004418c046a410d360200200441d0016a41146a41033602002004200441e0066a360290012004200441f0006a3602b001200441d0076a41146a4100360200200442033702d4012004418ca7c7003602d0012004410d360284042004419ca8c7003602e007200442013702d407200441e0a7c7003602d007200420044180046a3602e0012004200441d0076a360290042004200441b0016a36028804200420044190016a36028004200441d0016a419ca8c700103a000b20042802b407210720042802b00721010b02402001450d0020062002ad4220862001ad84100e2007450d00200110230b200e450d010b201210230b41002101024002400240201041014b0d0020100e020201020b20102102034020012002410176220720016a22082013200920084102746a280200491b2101200220076b220241014b0d000b0b02402013200920014102746a2802002202470d0041e084c300ad4280808080c00484100a0c020b20102001201320024b6a2201490d040b02402010200428029407470d0020044190076a20104101107920042802900721090b200920014102746a220241046a2002201020016b41027410a2051a200220133602002004201041016a2210360298070b201d4188026a221d2015470d000b20042802940721160b200441d0076a41186a22024200370300200441d0076a41106a22074200370300200441d0076a41086a22014200370300200442003703d00741b0dfc300ad4280808080a001842206100c220a290000211e200441b0066a41086a2208200a41086a2900003703002004201e3703b006200a102320012008290300370300200420042903b0063703d00741fca2c300ad4280808080d00184221e100c22172900002136200441d0016a41086a220a201741086a290000370300200420363703d00120171023200520042903d001370000200541086a220f200a29030037000020044180046a41086a2213200129030037030020044180046a41106a2212200729030037030020044180046a41186a220e2002290300370300200420042903d00737038004200441203602d407200420044180046a3602d00720092010200441d0076a10d5020240201641ffffffff0371450d00200910230b200242003703002007420037030020014200370300200442003703d0072006100c221729000021062008201741086a290000370300200420063703b0062017102320012008290300370300200420042903b0063703d007201e100c22082900002106200a200841086a290000370300200420063703d00120081023200520042903d001370000200f200a2903003700002013200129030037030020122007290300370300200e2002290300370300200420042903d00737038004200441d0076a20044180046a10c90320042802d0072201410420011b2121024020042902d407420020011b2225422088a722200d00410021150c030b202120204102746a211b200441b0076aad4280808080c000842136200441b0076a41046a211d20044190016a41086a211f200441b0066a41086a2108200441d0076a41067221104100211541002114410021112021210f034020152119200441d0076a200f28020010c10320044180046a20042802d007220a20042802d80710e501200428028004410146210120042802840421022004280288042107024020042802d407450d00200a10230b2002410020011b210e2007410020011b21180240024020140d00410121010c010b200e20146a41e50049201820116a41a19c01497121010b201941016a21150240200e450d002001450d00200441d0076a200f28020010c10320043502d80742208620042802d0072201ad841011024020042802d407450d00200110230b41b0dfc300ad4280808080a00184100c220129000021062008200141086a290000370300200420063703b0062001102341f0a1c300ad4280808080a00284100c22012900002106200441d0016a41086a2213200141086a290000370300200420063703d001200110232004200f2802003602b00720042036100d22012900003703900120011023200441003a00e0072004201d3602dc072004201f3602d4072004200441b0076a3602d807200420044190016a3602d00720044180046a200441d0076a1065200428028804221741206a2202417f4c0d0d20042802800421160240024002402002450d00200210212201450d092002410f4d0d01200221070c020b41102107411010212201450d0a0c010b200241017422074110200741104b1b22074100480d08024020022007470d00200221070c010b20012002200710252201450d090b200120042903b006370000200141086a20082903003700000240024020074170714110460d002007210a0c010b2007410174220a4120200a41204b1b220a4100480d082007200a460d0020012007200a10252201450d090b200120042903d001370010200141186a20132903003700000240200a41606a20174f0d002017415f4b0d08200a41017422072002200720024b1b22074100480d08200a2007460d002001200a200710252201450d090b200141206a2016201710a1051a0240200428028404450d00201610230b200420023602b407200420013602b007200441d0016a2002ad4220862001ad84221e1010108b010240024020042802d00122070d00410021020c010b20042802d401210a200420042802d8013602b406200420073602b006200441d0076a200441b0066a10cb030240024020042802d00722020d00200441003602880420044201370380042004410a360294012004200441b0076a36029001200420044180046a36029007200441013602e407200442013702d40720044180c5c6003602d007200420044190016a3602e00720044190076a4184a5c200200441d0076a10311a20043502880442208620043502800484100a200428028404450d0120042802800410230c010b20042902d40721060b0240200a450d00200710230b024020020d00410021020c010b201e10110b200110232002410420021b221a2006420020021b2206422088a722014104746a210702400240024020010d00201a21010c010b201a2101034002402001410c6a2d000022134103470d00200141106a21010c020b200141046a280200210a20012802002102200141086a28020021172004200f280200221636029001200420173602b401200420023602b001200441d0016a200441b0016a109903024020042802d0014116460d0020044180046a200441d0016a41b00210a1051a4101211702400240024020134103710e03010200010b41002117410021120c010b200441d0076a20044190016a10af02200441b0076a41086a201041086a290100370300200441b0076a41106a201041106a290100370300200441b0076a41186a201041186a2f01003b0100200420102901003703b00720042801d207211620042f01d007210941012112410021170b200441d0076a20044180046a41b00210a1051a200820042903b007370200200841086a200441b0076a41086a290300370200200841106a200441b0076a41106a290300370200200841186a200441b0076a41186a280200360200200420163602b406200420093b01b206200420123a00b106200420173a00b00620044190076a200441d0076a200441b0066a10cf020b0240200a450d00200210230b200141106a22012007470d000c020b0b20072001460d000340200141106a21020240200141046a280200450d00200128020010230b2002210120072002470d000b0b0240200642ffffffff0083500d00201a10230b200e20146a221441e3004b0d03201820116a2211419f9c014b0d030b200f41046a220f201b470d000c020b0b200120101038000b20192020490d0020152020418485c3001044000b200441d0076a41186a22074200370300200441d0076a41106a22084200370300200441d0076a41086a22014200370300200442003703d00741b0dfc300ad4280808080a00184100c22022900002106200441b0066a41086a220a200241086a290000370300200420063703b006200210232001200a290300370300200420042903b0063703d00741fca2c300ad4280808080d00184100c22022900002106200441d0016a41086a220a200241086a290000370300200420063703d00120021023200520042903d001370000200541086a200a29030037000020044180046a41086a200129030037030020044180046a41106a200829030037030020044180046a41186a2007290300370300200420042903d00737038004202020156b220241027441046a2201417f4c0d080240024020010d00410121070c010b200110212207450d020b200441003602d807200420013602d407200420073602d0072002200441d0076a10610240024020020d0020042802d807210120042802d407211720042802d007210a0c010b202120154102746a2107202041027420154102746b2116410020042802d80722016b210820042802d407210203402007280200210f02400240200220086a4104490d0020042802d007210a200221170c010b200141046a220a2001490d0520024101742217200a2017200a4b1b22174100480d050240024020020d00024020170d004101210a0c020b20171021220a450d080c010b20042802d007210a20022017460d00200a200220171025220a450d070b200420173602d4072004200a3602d007201721020b200741046a2107200a20016a200f3600002004200141046a22013602d8072008417c6a21082016417c6a22160d000b0b20044180046aad42808080808004842001ad422086200aad84100e02402017450d00200a10230b0240202542ffffffff0383500d00202110230b200428024821022004280240210f200428024421010b200441d0076a41186a220a4200370300200441d0076a41106a22174200370300200441d0076a41086a22074200370300200442003703d00741b0dfc300ad4280808080a00184100c22082900002106200441b0066a41086a2216200841086a290000370300200420063703b0062008102320072016290300370300200420042903b0063703d00741a89ec700ad4280808080900184100c22082900002106200441d0016a41086a2216200841086a290000370300200420063703d00120081023200520042903d001370000200541086a201629030037000020044180046a41086a200729030037030020044180046a41106a201729030037030020044180046a41186a200a290300370300200420042903d00737038004200441203602d407200420044180046a3602d007200f2002200441d0076a10d5020240200141ffffffff0371450d00200f10230b200041043a00000240200da72201450d002001412c6c450d00200b10230b200328020021070240200c450d00200c4188026c2102200721010340200110a20320014188026a2101200241f87d6a22020d000b0b200341046a2802002201450d0620014188026c450d06200710230c060b1033000b102c000b102a000b20004183203b0100200041086a4115360200200041046a4187ffc200360200200041026a41013a00000b200da72201450d002001412c6c450d00200b10230b20032802002107024020032802082201450d0020014188026c2102200721010340200110a20320014188026a2101200241f87d6a22020d000b0b200341046a2802002201450d0020014188026c450d00200710230b200441b00a6a24000f0b1032000bad3409057f017e017f017e027f027e097f037e077f230041d0036b2203240020012800002104200341186a41186a2001411c6a290000370300200341186a41106a200141146a290000370300200341186a41086a2001410c6a290000370300200320012900043703182002280200210520034198036a41186a2206420037030020034198036a41106a2207420037030020034198036a41086a22014200370300200342003703980341db97c700ad4280808080f000842208100c2209290000210a2001200941086a2900003703002003200a370398032009102341bcbcc300ad4280808080c00184100c2209290000210a200341d8006a41086a220b200941086a2900003703002003200a3703582009102320072003290358220a370300200341f8026a41086a220c2001290300370300200341f8026a41106a200a370300200341f8026a41186a200b29030037030020032003290398033703f802200341106a200341f8026a412010cd01410021090240024002400240024002400240024002400240024002400240024020052003280214410020032802101b460d002008100c2201290000210a200341d0016a41086a200141086a2900003703002003200a3703d0012001102341e297c700ad4280808080a00284100c2201290000210a200c200141086a2900003703002003200a3703f80220011023200320053602bc032003200341bc036aad4280808080c00084100d22012900003703c00320011023200341d8006a410c6a200341c0036a360200200341003a00682003200341c0036a41086a36025c2003200341bc036a3602602003200341c0036a360258200341386a200341d8006a10652003280240220741206a2201417f4c0d042003280238210c024002402001450d0020011021220b450d052001410f4d0d01200121050c040b200141017422094110200941104b1b22051021220b0d030c0e0b200141017422094110200941104b1b220541004e0d010c0c0b200b4120360200200320043602582003200341186a36025c200341f0016a200341d8006a108803200341d8006a20032802f001220520032802f80110e1012001200341e1006a2900003703002007200341e9006a2900003703002006200341f1006a2900003703002003200329005937039803024020032d00584101470d00200341f8026a41186a20034198036a41186a290300370300200341f8026a41106a20034198036a41106a290300370300200341f8026a41086a20034198036a41086a29030037030020032003290398033703f802410121090b024020032802f401450d00200510230b0240024020090d00200041003602400c010b20034198036a41186a2201200341f8026a41186a290300220a37030020034198036a41106a2209200341f8026a41106a290300220837030020034198036a41086a2205200341f8026a41086a290300220d370300200320032903f802220e37039803200341d8006a41186a2207200a370300200341d8006a41106a220b2008370300200341d8006a41086a2206200d3703002003200e370358200341f0016a200341d8006a108f02200341c8026a41186a220c2001290300370300200341c8026a41106a22012009290300370300200341c8026a41086a2209200529030037030020032003290398033703c80202402003280290020d00200041003602400c010b2007200c290300370300200b200129030037030020062009290300370300200341d8006a41286a200341f0016a41086a29030037030020034188016a200341f0016a41106a29030037030020034190016a200341f0016a41186a29030037030020034198016a20034190026a290300370300200341a0016a200341f0016a41286a290300370300200320032903c802370358200320032903f0013703782000200341d8006a41d00010a1051a0b2002410c6a280200210f200228020421100c080b20012005460d00200b200120051025220b450d0b0b200b20032903d001370000200b41086a200341d0016a41086a2903003700000240024020054170714110460d00200521090c010b200541017422094120200941204b1b22094100480d0a20052009460d00200b200520091025220b450d0b0b200b20032903f802370010200b41186a200341f8026a41086a29030037000002400240200941606a2007490d00200921060c010b200741206a22052007490d0a200941017422062005200620054b1b22064100480d0a20092006460d00200b200920061025220b450d0b0b200b41206a200c200710a1051a0240200328023c450d00200c10230b200320013602c4032003200b3602c003200341d0016a2001ad422086200bad841010108b010240024020032802d00122050d00410021010c010b200341d8016a280200210720032802d401210c41002101200341003a0078024002400240034020072001460d01200341d8006a20016a200520016a2d00003a00002003200141016a22093a00782009210120094120470d000b200341f8026a41186a2201200341d8006a41186a290300370300200341f8026a41106a2211200341d8006a41106a290300370300200341f8026a41086a2212200341d8006a41086a290300370300200320032903583703f802200720096b41034d0d01200341f0016a41186a2001290300370300200341f0016a41106a2011290300370300200341f0016a41086a2012290300370300200320032903f8023703f001410121010c020b200141ff0171450d00200341003a00780b410021012003410036028003200342013703f8022003410a36023c2003200341c0036a3602382003200341f8026a3602bc03200341ec006a41013602002003420137025c20034180c5c6003602582003200341386a360268200341bc036a4184a5c200200341d8006a10311a20033502800342208620033502f80284100a20032802fc02450d0020032802f80210230b200c450d00200510230b200341d8006a41186a2209200341f0016a41186a290300370300200341d8006a41106a2205200341f0016a41106a290300370300200341d8006a41086a2207200341f0016a41086a290300370300200320032903f0013703582001450d07200341c8026a41186a2009290300370300200341c8026a41106a2005290300370300200341c8026a41086a2007290300370300200320032903583703c80202402006450d00200b10230b20034198036a41086a200341c8026a41086a290300220a37030020034198036a41106a200341c8026a41106a290300220837030020034198036a41186a200341c8026a41186a290300220d370300200320032903c802220e37039803200341386a41186a200d370300200341386a41106a2008370300200341386a41086a200a3703002003200e370338200341d0016a41186a200d370300200341d0016a41106a2008370300200341d0016a41086a200a3703002003200e3703d0012002410c6a280200210f20022802042110410110212209450d00200941003a000041004100350280804042adfed5e4d485fda8d8007e200341d8006aad7c421f89220a3e02808040200341d8006a41186a220541eedcc400ad428080808010841018220141186a290000370300200341d8006a41106a2207200141106a290000370300200341d8006a41086a220b200141086a2900003703002003200129000037035820011023200341f0016a41206a4100360200200341f0016a41186a420437030020034184026a419ca1c000360200200341f0016a412c6a428180808010370200200341ac026a200b290300370200200341b4026a2007290300370200200341bc026a200529030037020020034100360280022003200a3703f8012003418080c000ad3703f0012003200936029802200320032903583702a4020240200f450d002010200f410c6c6a2113200341f0016a41106a2114200341d8006a41077221152010210c0340200c2802082205417f4c0d03200c2802002101410021090240024020050d00410121074100210b0c010b2005210b200510212207450d030b20072001200510a10521070240200520032802a002470d00024020032802980222092007470d00410121090c010b20072009200510a3054521090b0240200b450d00200710230b024020090d0020034198036a41186a22072005ad4220862001ad841018220941186a29000037030020034198036a41106a220b200941106a29000037030020034198036a41086a2206200941086a290000370300200320092900003703980320091023200341c8026a41186a22112007290300370300200341c8026a41106a2207200b290300370300200341c8026a41086a220b200629030037030020032003290398033703c8020240024020050d0041012109410021160c010b20052116200510212209450d040b20092001200510a1052117024002400240200520032802a002470d0020032802980222012017460d0120172001200510a305450d010b200320032903f801220d20032903f001220a852208200a4218898520084210868520084225897c220842a0cbbf9599b5a19f0a7c220e201129030022188520032903c8022219200e8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85200b290300220e200842efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852007290300221a200842bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010a605200341d8006a41186a221b2018370300200341d8006a41106a221c201a370300200341d8006a41086a221d200e37030020032019370358200341086a29030020032903007c200d200a7c85220a421988a741ff0071221e410874201e722201411074200172211f200328028002220b200aa72220712107410021212003280288022106200328028402211203400240201220076a2800002211201f732201417f73200141fffdfb776a71418081828478712201450d0002400340200620016841037620076a200b7141306c6a2209200341d8006a460d012009200341d8006a412010a305450d012001417f6a2001712201450d020c000b0b200341f8026a41186a201541186a2d00003a0000200341f8026a41106a201541106a290000370300200341f8026a41086a201541086a290000370300200320152900003703f80202402009412c6a2201280200220741004a0d00200941206a210b0240200941246a2206280200450d00200b2802001023200128020021070b20062016360200200b20173602002001200741016a360200200941286a20053602000c050b2001200741016a3602002016450d040c030b202141046a222120076a200b712107201120114101747141808182847871450d000b200341f8026a41186a201b290300220a370300200341f8026a41106a201c2903002208370300200341f8026a41086a201d290300220d37030020032003290358220e3703f8022003200341f0016a3602bc03201b200a370300201c2008370300201d200d3703002003200e37035841002101202021090340200141046a22012009200b7122076a2109201220076a280000418081828478712206450d000b0240201220066841037620076a200b7122016a2c000022094100480d0020122012280200418081828478716841037622016a2d000021090b024020094101712207450d00200328028c020d00200341c0036a2014200341bc036a10dc02410021012003280284022112200328028002210b0340200141046a22012020200b7122096a2120201220096a280000418081828478712206450d000b201220066841037620096a200b7122016a2c00004100480d002012280200418081828478716841037621010b2003200328028c0220076b36028c022003280288022109201220016a201e3a00002001417c6a200b7120126a41046a201e3a00002009200141306c6a2201410136022c200120053602282001201636022420012017360220200141186a201b290300370200200141106a201c290300370200200141086a201d29030037020020012003290358370200200320032802900241016a360290020c020b2016450d010b201710230b200c410c6a220c2013470d000b0b200341d8006a200341f0016a41d80010a1051a200341c8016a200341d0016a41186a290300370300200341c0016a200341d0016a41106a290300370300200341b8016a200341d0016a41086a290300370300200320032903d0013703b001024002400240200341d8006a41d8006a22012003418c016a412010a305450d00200341f0016a41186a200141186a290000370300200341f0016a41106a200141106a290000370300200341f0016a41086a200141086a290000370300200320012900003703f001200341d8006a200341f0016a10ce042209450d01200928020c4101480d010b412410212209450d0220092004360000200320093602f001200342a4808080c0003702f4014120200341f0016a10610240024020032802f401220720032802f80122056b4120490d0020032802f00121092007210b0c010b200541206a22092005490d0c2007410174220b2009200b20094b1b220b4100480d0c0240024020070d000240200b0d00410121090c020b200b10212209450d0f0c010b20032802f00121092007200b460d0020092007200b10252209450d0e0b2003200b3602f401200320093602f0010b200920056a22072003290318370000200741186a200341186a41186a290300370000200741106a200341186a41106a290300370000200741086a200341186a41086a290300370000200341f0016a41106a200141086a290200370300200341f0016a41186a200141106a290200370300200341f0016a41206a200141186a290200370300200341f497c7003602f401200320012902003703f8012003200341d8006a3602f001200341003602a0032003200541206a36029c032003200936029803200341c8026a200341f0016a20034198036a1099050240200b450d00200910230b20032802c8024101470d01024020032802cc0222012d0000220941034b0d00024020090e0407070007070b200141086a280200450d06200141046a28020010230c060b200141286a280200450d05200141246a28020010230c050b200041003602400c060b20032802cc022209450d0402400240200341d0026a290300220a422088a741044f0d0041012105410021070c010b20092800002107410021050b0240200aa7450d00200910230b20050d04200320073602f802200341f0016a41106a200141086a290200370300200341f0016a41186a200141106a29020037030020034190026a200141186a290200370300200341f497c7003602f401200320012902003703f8012003200341d8006a3602f0012003420437029c032003200341f8026a36029803200341c8026a200341f0016a20034198036a109905024020032802c8024101470d00024020032802cc0222012d0000220941034b0d00024020090e0405050005050b200141086a280200450d04200141046a28020010230c040b200141286a280200450d03200141246a28020010230c030b024020032802cc0222050d00200041003602400c060b200341c8026a41086a290300210a200320053602d0012003200a422088a722073602d40141002101200341003a00e802024002400240034020072001460d01200341c8026a20016a200520016a22092d00003a00002003200941016a3602d0012003200141016a22093a00e8022009210120094120470d000b200341f8026a41086a2201200341c8026a41086a220b290300370300200341f8026a41106a2206200341c8026a41106a220c290300370300200341f8026a41186a2211200341c8026a41186a22122903003703002003200720096b3602d401200320032903c8023703f802200341c8026a200341d0016a10d00120032802e8022209450d01200341f0016a41186a22072011290300370300200341f0016a41106a22112006290300370300200341f0016a41086a22062001290300370300200341f0016a41286a2201200b290300370300200341f0016a41306a220b200c290300370300200341f0016a41386a220c201229030037030020034198036a41086a2212200341f4026a280200360200200320032903f8023703f001200320032903c802370390022003200341ec026a29020037039803200041386a200c290300370300200041306a200b290300370300200041286a2001290300370300200041206a200329039002370300200041186a2007290300370300200041106a2011290300370300200041086a2006290300370300200020032903f001370300200020093602402000200329039803370244200041cc006a20122802003602000c020b200341003602d401200141ff0171450d00200341003a00e8020b200041003602400b200aa7450d05200510230c050b1033000b1032000b20011023200041003602400c020b200110230b200041003602400b024020032802682205450d00200341ec006a280200220941046a2101200520096a41016a21072009280200417f7341808182847871210b200341f0006a28020021090240034002400240200b450d00200b21050c010b0340200120074f0d03200941c0016a210920012802002105200141046a220b21012005418081828478712205418081828478460d000b2005418081828478732105200b21010b2005417f6a200571210b200920056841037641306c6a220541246a280200450d00200528022010230c000b0b02402003280268220141086a200141056a490d00200141016aad42307e422088a71a0b200328026c10230b20034184016a280200450d0020032802800110230b0240200f450d00200f410c6c21092010210103400240200141046a280200450d00200128020010230b2001410c6a2101200941746a22090d000b0b200241086a2802002201450d012001410c6c450d01201010230c010b02402006450d00200b10230b200041003602402002280204210502402002410c6a2802002201450d002001410c6c21092005210103400240200141046a280200450d00200128020010230b2001410c6a2101200941746a22090d000b0b200241086a2802002201450d002001410c6c450d00200510230b200341d0036a24000f0b102c000b102a000bb10203027f017e027f230041106b220224000240024020012802082203ad42307e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510212206450d020b20024100360208200220063602002002200541306e36020420024100200310a4012002280208210502402003450d002001200341306c6a21062002280200200541306c6a21030340200320012903003703002003200141086a290300370308200341106a200141106a290300370300200341186a200141186a290300370300200341206a200141206a290300370300200341286a200141286a290300370300200341306a2103200541016a2105200141306a22012006470d000b0b20002002290300370200200041086a2005360200200241106a24000f0b1032000b1033000b930503027f017e057f230041d0006b220224004189e3c400ad4280808080800184100c22032900002104200241086a200341086a290000370300200220043703002003102341ac94c500ad4280808080a00284100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240411010212203450d0020032001290000370000200341086a200141086a29000037000020022003ad4280808080800284100d220129000037033020011023200241c4006a200341106a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b9a0302057f017e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b010240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10880102400240024020032802000d002003280224220420032802042205490d002005417f4c0d040240024020050d00410121060c010b200510272206450d06200620032802202207200510a1051a2003200420056b3602242003200720056a3602200b20060d010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b200041003602000c010b20002005ad2208422086200884370204200020063602000b2002450d00200110230b200341e0006a24000f0b1032000b1033000bec0403037f017e087f230041e0006b220224002002200110880102400240024002402002280200450d00200041003602000c010b20022802042203200128020441246e2204200420034b1bad42247e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410212206450d030b4100210720024100360210200220063602082002200441246e36020c0240024002402003450d00410021080340200128020422094104490d03200841016a21082001280200220a280000210b20012009417c6a220c3602042001200a41046a36020041002104200241003a00582009417b6a21090340200c2004460d03200241386a20046a200a20046a220d41046a2d00003a0000200120093602042001200d41056a3602002002200441016a220d3a00582009417f6a2109200d2104200d4120470d000b200241186a41186a2209200241386a41186a290300370300200241186a41106a220d200241386a41106a290300370300200241186a41086a220a200241386a41086a2903003703002002200229033837031802402007200228020c470d00200241086a2007410110a20120022802082106200228021021070b2006200741246c6a2204200b360200200420022903183702042004410c6a200a290300370200200441146a200d2903003702002004411c6a20092903003702002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c020b200441ff0171450d00200241003a00580b20004100360200200228020c2204450d00200441246c450d00200610230b200241e0006a24000f0b1032000b1033000b9c0603027f017e077f230041d0006b220324004189e3c400ad4280808080800184100c22042900002105200341086a200441086a29000037030020032005370300200410234198e3c400ad4280808080e00284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023024002400240024002400240411010212204450d0020042001290000370000200441086a200141086a29000037000020032004ad4280808080800284100d220129000037033020011023200341c4006a200441106a360200200341003a0048200320043602402003200341306a41086a36023c2003200341306a360238200341206a200341386a106520041023200341386a20022802002002280208109e042003280228220641206a2207200328024022086a2201417f4c0d01200328023821092003280220210a024002402001450d00200110212204450d022001410f4d0d012001210b0c050b200141017422044110200441104b1b220b102122040d040c060b200141017422024110200241104b1b220b41004e0d020c040b1033000b1032000b2001200b460d0020042001200b10252204450d020b20042003290300370000200441086a200341086a29030037000002400240200b4170714110460d00200b21020c010b200b41017422024120200241204b1b22024100480d01200b2002460d002004200b200210252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200241606a2006490d002002210b0c010b200641206a220b2006490d012002410174220c200b200c200b4b1b220b4100480d012002200b460d0020042002200b10252204450d020b200441206a200a200610a1051a02400240200b20076b2008490d00200b21020c010b200720086a2007490d01200b41017422022001200220014b1b22024100480d01200b2002460d002004200b200210252204450d020b200420076a2009200810a1051a2000200136020820002002360204200020043602000240200328023c450d00200910230b02402003280224450d00200a10230b200341d0006a24000f0b102c000b102a000bc30802077f037e230041106b220224000240024002400240024002402001280208220341146a2204417f4c0d0002402004450d00200410212205450d022002410036020820022005360200200220043602042004410f4b0d04200441017422064110200641104b1b22064100480d0520042006460d0320052004200610252205450d060c030b200241003602082002410136020020022004360204200441017422044110200441104b1b2206102122050d020c050b1032000b1033000b20022006360204200220053602000b2005200129000c370000200541086a200141146a29000037000020024110360208200128020021072003200210610240024020022802042208200228020822066b2003490d0020022802002104200821050c010b200620036a22042006490d01200841017422052004200520044b1b22054100480d010240024020080d00024020050d00410121040c020b200510212204450d040c010b2002280200210420082005460d0020042008200510252204450d030b20022005360204200220043602000b200420066a2007200310a1051a2002200620036a2206360208200128021c210302400240200520066b4120490d00200641206a21080c010b200641206a22082006490d01200541017422012008200120084b1b22014100480d010240024020050d00024020010d00410121040c020b200110212204450d040c010b20052001460d0020042005200110252204450d030b20022001360204200220043602000b200420066a22012003290000370000200141186a200341186a290000370000200141106a200341106a290000370000200141086a200341086a290000370000200220083602082002200341206a36020c2002410c6a200210db012002200341306a36020c2002410c6a200210db01200341c0006a2802002101200341c8006a28020022032002106102402003450d00200341306c210603400240024020022802042205200228020822036b4120490d00200228020021040c010b200341206a22042003490d03200541017422082004200820044b1b22084100480d030240024020050d00024020080d00410121040c020b200810212204450d060c010b2002280200210420052008460d0020042005200810252204450d050b20022008360204200220043602000b200420036a2204200141106a290000370000200441186a200141286a290000370000200441106a200141206a290000370000200441086a200141186a2900003700002002200341206a3602082002200136020c2002410c6a200210db01200141306a2101200641506a22060d000b0b20022802042103200235020842208620022802002204ad84101822012900002109200141086a290000210a200141106a290000210b200041186a200141186a290000370000200041106a200b370000200041086a200a370000200020093700002001102302402003450d00200410230b200241106a24000f0b102c000b102a000bae0503027f017e047f230041d0006b220224004189e3c400ad4280808080800184100c22032900002104200241086a200341086a29000037030020022004370300200310234191e3c400ad4280808080f00084100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bbc0601087f230041106b2202240020024100360208200242013703000240412010212203450d00200241203602042002200336020020032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a290000370000200241203602082002200041206a36020c2002410c6a200210db012002200041306a36020c2002410c6a200210db01200041c0006a2802002103200041c8006a280200220420021061024002402004450d00200441306c210503400240024020022802042206200228020822046b4120490d00200441206a2107200228020021080c010b200441206a22072004490d03200641017422082007200820074b1b22094100480d030240024020060d00024020090d00410121080c020b2009102122080d010c060b2002280200210820062009460d0020082006200910252208450d050b20022009360204200220083602000b200820046a2204200341106a290000370000200441186a200341286a290000370000200441106a200341206a290000370000200441086a200341186a290000370000200220073602082002200336020c2002410c6a200210db01200341306a2103200541506a22050d000b0b20002802502103200041d8006a2802002204200210610240024020040d002002280208210420022802042109200228020021050c010b200441057421004100200228020822046b210620022802042108034002400240200820066a4120490d0020022802002105200821090c010b200441206a22072004490d03200841017422052007200520074b1b22094100480d030240024020080d00024020090d00410121050c020b200910212205450d060c010b2002280200210520082009460d0020052008200910252205450d050b2002200936020420022005360200200921080b200520046a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a2900003700002002200441206a2204360208200641606a2106200341206a2103200041606a22000d000b0b20012902002004ad4220862005ad84100e02402009450d00200510230b200241106a24000f0b102c000b102a000bc017021b7f057e23004180046b22032400024002400240024020012002460d00200341d4036a21040340200341f0036a200110bb0320034190036a20032802f003220520032802f80310b304200341d0026a41086a220620034190036a41086a290300370300200341d0026a41106a220720034190036a41106a290300370300200341d0026a41186a220820034190036a41186a290300370300200341d0026a41206a220920034190036a41206a290300370300200341d0026a41286a220a20034190036a41286a290300370300200341d0026a41306a220b20034190036a41306a290300370300200341d0026a41386a220c20034190036a41386a290300370300200341b0026a41086a220d200441086a290200370300200341b0026a41106a220e200441106a290200370300200341b0026a41186a220f200441186a28020036020020032003290390033703d002200320042902003703b002024020032802d0032210450d00200341f0016a41386a200c290300370300200341f0016a41306a200b290300370300200341f0016a41286a200a290300370300200341f0016a41206a2009290300370300200341f0016a41186a2008290300370300200341f0016a41106a2007290300370300200341f0016a41086a2006290300370300200341d0016a41086a200d290300370300200341d0016a41106a200e290300370300200341d0016a41186a200f280200360200200320032903d0023703f001200320032903b0023703d0010b024020032802f403450d00200510230b20100d022002200141206a2201470d000b0b20004100360208200042083702000c010b200341306a41386a2204200341f0016a41386a290300370300200341306a41306a2205200341f0016a41306a290300370300200341306a41286a2206200341f0016a41286a290300370300200341306a41206a2207200341f0016a41206a290300370300200341306a41186a2208200341f0016a41186a290300370300200341306a41106a2209200341f0016a41106a290300370300200341306a41086a220a200341f0016a41086a290300370300200341106a41086a220b200341d0016a41086a290300370300200341106a41106a220c200341d0016a41106a290300370300200341106a41186a220d200341d0016a41186a280200360200200320032903f001370330200320032903d00137031020034190016a41086a220e200a29030037030020034190016a41106a220a200929030037030020034190016a41186a2209200829030037030020034190016a41206a2208200729030037030020034190016a41286a2207200629030037030020034190016a41306a2206200529030037030020034190016a41386a22052004290300370300200341f0006a41086a2204200b290300370300200341f0006a41106a220b200c290300370300200341f0006a41186a220c200d28020036020020032003290330370390012003200329031037037020034190036a41086a220d200e29030037030020034190036a41106a220e200a29030037030020034190036a41186a220a200929030037030020034190036a41206a2209200829030037030020034190036a41286a2208200729030037030020034190036a41306a2207200629030037030020034190036a41386a22062005290300370300200320032903900137039003200341d0026a41086a22052004290300370300200341d0026a41106a2204200b290300370300200341d0026a41186a220b200c280200360200200320032903703703d00241e00010212211450d01201120032903900337030020112010360240201120032903d002370244201141386a2006290300370300201141306a2007290300370300201141286a2008290300370300201141206a2009290300370300201141186a200a290300370300201141106a200e290300370300201141086a200d290300370300201141cc006a2005290300370200201141d4006a2004290300370200201141dc006a200b2802003602002003428180808010370204200320113602000240200241606a2001460d00200141206a2109200241606a211220034190036a41c4006a2104410121130340200921010340200341f0036a200110bb0320034190036a20032802f003220820032802f80310b304200341d0026a41086a220520034190036a41086a2214290300370300200341d0026a41106a220620034190036a41106a2215290300370300200341d0026a41186a220720034190036a41186a2216290300370300200341d0026a41206a220920034190036a41206a2217290300370300200341d0026a41286a220a20034190036a41286a2218290300370300200341d0026a41306a220b20034190036a41306a2219290300370300200341d0026a41386a220c20034190036a41386a221a290300370300200341b0026a41086a220d200441086a290200370300200341b0026a41106a220e200441106a290200370300200341b0026a41186a220f200441186a28020036020020032003290390033703d002200320042902003703b002024020032802d0032210450d00200341f0016a41386a200c290300370300200341f0016a41306a200b290300370300200341f0016a41286a200a290300370300200341f0016a41206a2009290300370300200341f0016a41186a2007290300370300200341f0016a41106a2006290300370300200341f0016a41086a2005290300370300200341d0016a41086a200d290300370300200341d0016a41106a200e290300370300200341d0016a41186a200f280200360200200320032903d0023703f001200320032903b0023703d0010b024020032802f403450d00200810230b024020100d002002200141206a2201470d010c030b0b200341306a41386a2208200341f0016a41386a290300370300200341306a41306a2209200341f0016a41306a290300370300200341306a41286a220a200341f0016a41286a290300370300200341306a41206a220b200341f0016a41206a290300370300200341306a41186a220c200341f0016a41186a290300370300200341306a41106a220d200341f0016a41106a290300370300200341306a41086a220e200341f0016a41086a290300370300200341106a41086a220f200341d0016a41086a290300370300200341106a41106a221b200341d0016a41106a290300370300200341106a41186a221c200341d0016a41186a280200360200200320032903f001370330200320032903d00137031020034190016a41086a221d200e29030037030020034190016a41106a220e200d29030037030020034190016a41186a220d200c29030037030020034190016a41206a220c200b29030037030020034190016a41286a220b200a29030037030020034190016a41306a220a200929030037030020034190016a41386a22092008290300370300200341f0006a41086a2208200f290300370300200341f0006a41106a220f201b290300370300200341f0006a41186a221b201c2802003602002003200329033037039001200320032903103703702014201d2903003703002015200e2903003703002016200d2903003703002017200c2903003703002018200b2903003703002019200a290300370300201a2009290300370300200320032903900137039003200520082903003703002006200f2903003703002007201b280200360200200320032903703703d002024020132003280204470d00200320134101109601200328020021110b200141206a21092011201341e0006c6a2208200329039003370300200841106a2015290300370300200841086a20142903003703002019290300211e201a290300211f201829030021202017290300212120162903002122200841c0006a2010360200200841186a2022370300200841206a2021370300200841286a2020370300200841c4006a20032903d002370200200841386a201f370300200841306a201e370300200841cc006a2005290300370200200841d4006a2006290300370200200841dc006a20072802003602002003201341016a221336020820122001470d000b0b20002003290300370200200041086a200341086a2802003602000b20034180046a24000f0b1033000bef04010a7f230041106b220324000240024002400240200241246c41046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b20034100360208200320043602042003200536020020022003106102402002450d002001200241246c6a2106200328020421052003280208210203402001280200210402400240200520026b4104490d0020032802002107200521080c010b200241046a22082002490d05200541017422072008200720084b1b22084100480d050240024020050d00024020080d00410121070c020b2008102122070d010c080b2003280200210720052008460d0020072005200810252207450d070b20032008360204200320073602000b200720026a20043600002003200241046a2209360208412010212204450d03200441186a220a2001411c6a290000370000200441106a220b200141146a290000370000200441086a220c2001410c6a2900003700002004200141046a29000037000002400240200820096b4120490d00200241246a2102200821050c010b200941206a22022009490d05200841017422052002200520024b1b22054100480d050240024020080d00024020050d00410121070c020b200510212207450d080c010b20082005460d0020072008200510252207450d070b20032005360204200320073602000b200720096a22082004290000370000200841186a200a290000370000200841106a200b290000370000200841086a200c2900003700002003200236020820041023200141246a22012006470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1032000b1033000b102c000b102a000be503010a7f230041106b22032400024020014105744104722204417f4c0d000240200410212205450d002003410036020820032004360204200320053602002001200310610240024020010d002003280208210520032802042106200328020021070c010b20014105742108200328020021072003280204210620032802082105034020052104412010212201450d0220012000290000370000200141186a2209200041186a290000370000200141106a220a200041106a290000370000200141086a220b200041086a29000037000002400240200620046b4120490d00200441206a21050c010b024002400240200441206a22052004490d002006410174220c2005200c20054b1b220c4100480d000240024020060d000240200c0d00410121070c020b200c102121070c040b2006200c470d020b200c21060c030b102c000b20072006200c102521070b200c210620070d00102a000b200041206a2100200720046a22042001290000370000200441186a2009290000370000200441106a200a290000370000200441086a200b29000037000020011023200841606a22080d000b2003200636020420032005360208200320073602000b20022902002005ad4220862007ad84100e02402006450d00200710230b200341106a24000f0b1033000b1032000bf70b04047f017e077f077e23004180016b220524004101210602400240024020002001200220032004108702450d00200541e0006a41186a4200370300200541e0006a41106a22074200370300200541e0006a41086a22064200370300200542003703604189e3c400ad4280808080800184100c220829000021092006200841086a29000037030020052009370360200810234193e4c400ad4280808080800284100c22082900002109200541c0006a41086a220a200841086a2900003703002005200937034020081023200720052903402209370300200541206a41086a2006290300370300200541206a41106a2009370300200541206a41186a200a29030037030020052005290360370320200541e0006a200541206a10ef03024002402005280260220b0d004100210c20054100360208200542043703004104210b4100210d0c010b2005200529026422093702042005200b3602002009422088a7210d2009a7210c0b2001ad42e0007e2209422088a70d012009a72206417f4c0d010240024020060d00410821080c010b200610212208450d030b20054100360218200520083602102005200641e0006e360214200541106a410020011096012005280218210e02402001450d002000200141e0006c6a210f2005280210200e41e0006c6a2106200141057441606a4105762110200541246a21010340200541e0006a41086a2208200041086a290300370300200541e0006a41106a2207200041106a290300370300200541e0006a41186a220a200041186a29030037030020052000290300370360200041206a2903002109200041286a2903002111200041306a2903002112200041386a2903002113200541d0006a200041c0006a10b503200541c0006a200041d0006a108e02200141086a200541c0006a41086a28020036020020012005290340370200200a2903002114200729030021152008290300211620052903602117200641386a2013370300200641306a2012370300200641286a2011370300200641206a2009370300200641086a201637030020062017370300200641106a2015370300200641c0006a2005290350370300200641c8006a200541d0006a41086a280200360200200641186a2014370300200641cc006a2005290220370200200641d4006a200541206a41086a290200370200200641e0006a2106200041e0006a2200200f470d000b200e20106a41016a210e0b200541e8006a200e36020020052005290310370360200341ffffffff03712003470d0120034102742206417f4c0d010240024020060d00410421000c010b200610212200450d030b200541003602282005200036022020052006410276360224200541206a4100200310792005280220200528022822064102746a2002200341027410a1051a200541c0006a41086a2201200620036a2206360200200541f4006a20063602002005200529032037026c0240200d200c470d002005200d410110a3012005280204210c2005280200210b2005280208210d0b200b200d411c6c6a22062005290360370200200541e0006a41086a22002903002109200541e0006a41106a2208290300211120062004360218200641106a2011370200200641086a20093702002005200d41016a2207360208200541e0006a41186a42003703002008420037030020004200370300200542003703604189e3c400ad4280808080800184100c220629000021092000200641086a29000037030020052009370360200610234193e4c400ad4280808080800284100c220629000021092001200641086a2900003703002005200937034020061023200820052903402209370300200541206a41086a2000290300370300200541206a41106a2009370300200541206a41186a20012903003703002005200529036037032002400240200b0d00200541206aad428080808080048410110c010b200541e0006a200b200710f103200541206aad4280808080800484200535026842208620052802602206ad84100e02402005280264450d00200610230b200b200710f003200c450d00200c411c6c450d00200b10230b410021060b20054180016a240020060f0b1032000b1033000bf90403027f017e057f230041d0006b2202240041b0dfc300ad4280808080a00184100c22032900002104200241086a200341086a290000370300200220043703002003102341b4a2c300ad4280808080e00284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000ba20b07057f017e047f027e047f017e077f230041e0006b22012400200141c0006a41186a22024200370300200141c0006a41106a22034200370300200141c0006a41086a22044200370300200142003703404196adc300ad4280808080900184100c220529000021062004200541086a290000370300200120063703402005102341bce0c300ad4280808080e00084100c22072900002106200141086a2205200741086a2900003703002001200637030020071023200320012903002206370300200141206a41086a22082004290300370300200141206a41106a22092006370300200141206a41186a220a200529030037030020012001290340370320200141c0006a200141206a10910320012802402107200129024421062002420037030020034200370300200442003703002001420037034041b0dfc300ad4280808080a00184100c2202290000210b2004200241086a2900003703002001200b3703402002102341bcbac500ad4280808080b00184100c2202290000210b2005200241086a2900003703002001200b3703002002102320032001290300220b370300200820042903003703002009200b370300200a2005290300370300200120012903403703202006420020071b220c422088a7210d200141c0006a200141206a10ad0220012902444200200128024022041b2206422088210b0240200642ffffff3f83500d002004410120041b10230b200ba721044100210e0240200d450d002004417f6a200d6e210e0b2007410420071b210f2001410036024820014204370340200141c0006a4100200410a5012001280248210802400240024002400240024020040d00200128024021090c010b2001280240220920084103746a21030240200e450d00200e200d6c210a410021050340410021070240200a20054d0d002005200e6e2207200d4f0d04200f2007412c6c6a2802002102410121070b20032007360200200341046a2002360200200341086a21032004200541016a2205470d000b200820056a21080c010b20042105034020034100360200200341086a21032005417f6a22050d000b200820046a21080b20012802442110200141c0006a419485c300411410a8034100210341204100412020044102746b2205200541204b1b22056bad422086200141c0006a20056aad84101822052900002106200541086a290000210b200541106a2900002111200141186a2212200541186a290000370300200141106a22132011370300200141086a2214200b3703002001200637030020051023200141206a41186a22152012290300370300200141206a41106a22162013290300370300200141206a41086a2217201429030037030020012001290300370320024041002004417f6a2205200520044b1b2202450d002001ad4280808080800484210b03402003411c71220541046a220741214f0d03200120056a2800002004410120041b220a70210702402005411c470d00200141c0006a41186a220d200b1018220541186a290000370300200141c0006a41106a220e200541106a290000370300200141c0006a41086a2218200541086a29000037030020012005290000370340200510232012200d2903003703002013200e29030037030020142018290300370300200120012903403703000b200a417f6a220520084f0d04200720084f0d05200920054103746a220529020021062005200920074103746a220729020037020020072006370200200341046a21032004417f6a21042002417f6a22020d000b0b2000200836020820002010360204200020093602002000200129032037000c200041146a20172903003700002000411c6a2016290300370000200041246a20152903003700000240200ca72204450d002004412c6c450d00200f10230b200141e0006a24000f0b2007200d41e8f6c3001030000b2007412041a885c3001043000b200520084184d9c4001030000b2007200841f8c5c4001030000b940503027f017e057f230041d0006b2202240041b0dfc300ad4280808080a00184100c22032900002104200241086a200341086a290000370300200220043703002003102341d0a1c300ad4280808080d00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422074110200741104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a2903003700000240200841606a20054f0d00200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a02402002280224450d00200610230b200241386a2003200110b70302400240200228023822010d00200041003602000c010b2000200229023c370204200020013602000b20031023200241d0006a24000f0b102c000b102a000bfd0201097f230041106b22022400024002402001280208220341ffffffff00712003470d0020034104742204417f4c0d00200128020021014104210502402004450d00200410212205450d020b20024100360208200220053602002002200441047636020420024100200310a0012002280208210602402003450d0020034104742107200228020020064104746a21032002410f6a21080340410221050240024002402001410c6a2d00004103710e03000102000b410021050c010b410121050b200141086a2802002204417f4c0d02200128020021090240024020040d004101210a0c010b20041021220a450d040b200141106a2101200a2009200410a10521092003410c6a20053a0000200341086a2004360200200341046a2004360200200320093602002003410d6a20022f000d3b00002003410f6a20082d00003a0000200341106a2103200641016a2106200741706a22070d000b0b20002002290300370200200041086a2006360200200241106a24000f0b1032000b1033000ba80e06077f027e037f0a7e017f037e230041d0026b2203240020022802102104200228020c21052002280208210620022802042107200228020021022003200110970220034180016a2003280200220820032802082209109802200329038001210a4200210b2003420037038001200341c8016a280200210c20032d00cc01210d02400240200a420151220e0d00200341106a41306a4200370300200341106a41286a4200370300200341106a41206a4200370300200341106a41186a4200370300200341206a4200370300200341186a4200370300200342003703104200210f4200211042002111420021120c010b200341b8016a290300211320034180016a41306a290300211420034180016a41206a290300210f20034180016a41186a290300210b200341c0016a290300211220032903900121112003290388012110200341106a41206a20034180016a41286a290300370300200341106a41286a2014370300200341106a41306a2013370300200341206a200b3703002003200f37032820032010370310200320113703180b02400240024002402010200229030022157d22142010562011200241086a29030022167d2010201554ad7d221320115620132011511b450d0041e1acc500ad4280808080b00284211141838a0c21040c010b02402010200b7c22174280c8afa0255441002011200f7c22182017200b54ad7c501b0d002014200b7c220b42ffc7afa025562013200f7c200b201454ad7c220b420052200b501b0d0020072d00004101460d0041c6acc500ad4280808080900184211141838a1421040c010b2015201684500d0120052d00002105200341c8006a2006280200109702200341e8016a20032802482206200328025010980220032903e801420151210720034198026a290300211520034190026a2903002116200341a8026a290300210b200341a0026a290300210f0240200328024c450d00200610230b200b420020071b210b200f420020071b210f0240200541ff01714101460d002015420020071b21152016420020071b2116024020054101710d002016210f2015210b0c010b2015200b2016200f562015200b562015200b511b22071b210b2016200f20071b210f0b200f201458200b201358200b2013511b0d0141fcacc500ad4280808080d00284211141838a0421040b20114280807c832115201142088842ff018321102011a7210e410121020c010b2003201437031020032013370318200241086a290300210f2002290300210b20042802002104200341c8006a41186a200341206a220241086a2903002215370300200341c8006a41206a2205200241106a290300370300200341f0006a2206200241186a290300370300200341f8006a2219200241206a2903003703002003201337035020032014370348200320022903002216370358427f20172017201054220220182002ad7c221020115420102011511b22021b427f201020021b8450210202400240427f201420167c221120112014542207201320157c2007ad7c221120135420112013511b22071b22104280c8afa025544100427f201120071b2211501b0d00200341c8006a41106a2903002110201929030021152006290300211720052903002116200329035021182003290348211a4201211b2003290360211c0c010b4200211b02402010201184500d002010201110eb01200341a0026a201137030020034198026a2010370300200341e8016a41086a41013a0000200341f1016a2004290000370000200341f9016a200441086a29000037000020034181026a200441106a29000037000020034189026a200441186a290000370000200341023a00e801200341e8016a10e0010b0b2002ad2111200341a8016a2016370300200341b0016a201737030020034190016a2018370300200341b8016a201537030020034198016a20103703002003201c3703a001200320123703c0012003201a3703880142012110410021022003200d4100200a42015122041b3a00cc012003200c410020041b3602c8012003201b4201512204ad37038001024020040d002009ad4220862008ad84101142002110420021150c010b200320093602ec01200320083602e80120034188016a200341e8016a109803420021150b02402003280204450d00200810230b024002402002450d0020002004360204200041086a2010420886200ead42ff018384201584370200410121020c010b024002400240200e41ff017122020d0020104200510d004103210e200341e8016a21020c010b2002450d0120104200520d014104210e20034180016a21020b200241046a200e3a0000200241003a0000200241056a20012900003700002002410d6a200141086a290000370000200241156a200141106a2900003700002002411d6a200141186a290000370000200210e0010b200041286a200f370300200041206a200b370300200041186a2013370300200041106a2014370300200041086a2011370300410021020b20002002360200200341d0026a24000bd20201077f230041206b22022400200241086a200110880102400240024002402002280208450d00200041003602000c010b200228020c220320012802044102762204200420034b1b22054102742204417f4c0d010240024020050d00410421060c010b200410212206450d030b41002104200241003602182002200536021420022006360210024002402003450d000340200128020422054104490d0220012802002207280000210820012005417c6a3602042001200741046a360200024020042002280214470d00200241106a20044101107920022802102106200228021821040b200620044102746a20083602002002200441016a22043602182003417f6a22030d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b20004100360200200228021441ffffffff0371450d00200610230b200241206a24000f0b1032000b1033000bef0602077f047e230041f0006b22032400024002400240200128020422044108490d000340200128020021052003410136026c20032004410376220636020802400240200641014b0d004100210741012108024020060e020002000b200341346a4101360200200341dc006a41023602002003420237024c2003419c96c7003602482003410136022c2003200341286a3602582003200341086a3602302003200341ec006a360228200341c8006a419ca8c700103a000b200441016a410771200441786a4178717221072005410120041b2205200441077122044107466a2108200441087221040b2005410120041b2d000021062001200736020420012008360200200128020821050240024020064101200441077174710d00410021040c010b0240200128020c220628020820054d0d0020012802102104200341c8006a41186a2207200628020020054105746a220641186a290000370300200341c8006a41106a2208200641106a290000370300200341c8006a41086a2209200641086a29000037030020032006290000370348024020042802082206200441046a280200470d00200420064101109a01200428020821060b200428020020064105746a22062003290348370000200641186a2007290300370000200641106a2008290300370000200641086a20092903003700002004200428020841016a3602080b4100210402402002280200220628020820054d0d00200341c8006a41086a200628020020054105746a220441086a290000370300200341c8006a41106a200441106a290000370300200341c8006a41186a200441186a29000037030020032004290000370348410121040b200128020821050b2001200541016a360208200341286a41086a200341c8006a41086a290300370300200341286a41106a200341c8006a41106a290300370300200341286a41186a200341c8006a41186a2903003703002003200329034837032820040d022001280204220441084f0d000b0b200041003a00000c010b200341086a41186a200341286a41186a290300220a370300200341086a41106a200341286a41106a290300220b370300200341086a41086a200341286a41086a290300220c37030020032003290328220d370308200041196a200a370000200041116a200b370000200041096a200c3700002000200d370001200041013a00000b200341f0006a24000b820101017f200120021061024002402001450d00200141057421030340412010212201450d0220012000290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a290000370000200220014120106220011023200041206a2100200341606a22030d000b0b0f0b1033000bbf0201027f230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b0102400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10c6030240024020022802480d0020024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350230422086200235022884100a0240200228022c450d00200228022810230b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110230b200241e0006a24000bf90403027f017e057f230041d0006b2202240041b0dfc300ad4280808080a00184100c22032900002104200241086a200341086a290000370300200220043703002003102341d0a1c300ad4280808080d00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bf70503087f017e017f230041306b22022400200241086a200110880102400240024002402002280208450d00200041003602000c010b41042103200228020c220420012802044104762205200520044b1b22064104742205417f4c0d0202402006450d00200510212203450d020b41002105200241003602182002200636021420022003360210024002402004450d00034002400240200128020422060d00410321070c010b200128020022072d0000210820012006417f6a3602042001200741016a3602000240200841024d0d00410321070c010b2002200110880102402002280200450d00410321070c010b02402001280204200228020422064f0d00410321070c010b2006417f4c0d06024002400240024020060d00410121090c010b200610272209450d0820012802042006490d0220092001280200200610a1051a200128020422072006490d012001200720066b3602042001200128020020066a3602000b410321072009450d022006ad220a422086200a84210a2002412a6a41026a2002412d6a41026a2d00003a0000200220022f002d3b012a2009210b200821070c020b20062007418ca9c0001044000b20091023410321070b200241266a41026a22062002412a6a41026a2d00003a0000200220022f012a3b012620074103460d02200241226a41026a220820062d00003a0000200220022f01263b0122024020052002280214470d00200241106a2005410110a00120022802102103200228021821050b200320054104746a220620073a000c2006200a3702042006200b360200200620022f01223b000d2006410f6a20082d00003a00002002200541016a22053602182004417f6a22040d000b0b20002002290310370200200041086a200241106a41086a2802003602000c010b2000410036020002402005450d00200541047421062003210503400240200541046a280200450d00200528020010230b200541106a2105200641706a22060d000b0b200228021441ffffffff0071450d00200310230b200241306a24000f0b1033000b1032000b130020004111360204200041b885c3003602000baf0203027f017e057f230041106b220224000240024020012802082203ad420c7e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410421060c010b200510212206450d020b200241003602082002200636020020022005410c6e3602042002410020031095012002280208210602402003450d0020012003410c6c6a210720022802002006410c6c6a21050340200141086a2802002203417f4c0d02200128020021080240024020030d00410121090c010b200310212209450d040b20092008200310a1052108200541086a2003360200200541046a2003360200200520083602002005410c6a2105200641016a21062001410c6a22012007470d000b0b20002002290300370200200041086a2006360200200241106a24000f0b1032000b1033000b8a0301037f230041d0006b22032400024002400240024020002d00000e03010200010b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041022104200341306a21050c020b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041002104200341306a21050c010b200341c8006a200041196a290000370300200341c0006a200041116a290000370300200341386a200041096a2900003703002003200029000137033041012104200341306a21050b200341216a200541186a290000370000200341196a200541106a290000370000200341116a200541086a290000370000200320043a000820032005290000370009200341306a200341086a20011076200041216a200335023842208620032802302205ad8420021013210002402003280234450d00200510230b200341d0006a24004106410220004101461b0bd70408027f017e037f017e017f027e037f017e230041f0006b2203240020012002844200522204ad2105024020040d00200341c0006a41186a22064200370300200341c0006a41106a22074200370300200341c0006a41086a220842003703002003420037034041bdadc500ad42808080808001842209100c220a290000210b200341e0006a41086a2204200a41086a2900003703002003200b370360200a1023200820042903003703002003200329036037034041c5adc500ad4280808080d00184220b100c220a290000210c2004200a41086a2900003703002003200c370360200a102320072003290360220c370300200341206a41086a220d2008290300370300200341206a41106a220e200c370300200341206a41186a220f200429030037030020032003290340370320200341086a200341206a412010d701200341086a41106a290300210c200329031021102003280208210a200642003703002007420037030020084200370300200342003703402009100c220629000021092004200641086a29000037030020032009370360200610232008200429030037030020032003290360370340200b100c220629000021092004200641086a2900003703002003200937036020061023200720032903602209370300200d2008290300370300200e2009370300200f2004290300370300200320032903403703202003200c4200200a1b370348200320104200200a1b370340200341206aad4280808080800484200341c0006aad4280808080800284100e0b2000200137030820002005370300200041106a2002370300200341f0006a24000b130020004103360204200041ac90c3003602000b34002000418c97c30036020420004100360200200041146a4101360200200041106a419097c300360200200041086a42043702000bf90403027f017e057f230041d0006b2202240041b0dfc300ad4280808080a00184100c22032900002104200241086a200341086a290000370300200220043703002003102341c4a1c300ad4280808080c00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b8b1304057f017e047f047e23004190086b22022400200241206a2001108801024002400240024002400240024020022802200d0020012802042203450d01200128020022042d0000210520012003417f6a3602042001200441016a360200200541ff00714104470d024100210620054118744118754100480d03420221070c040b200042033703680c050b200042033703680c040b200042033703680c030b200241003a00d0042003417f6a2108200321050240024002400240024002400240024002400240034020082006460d01200241b0046a20066a200420066a220941016a2d00003a000020012005417e6a3602042001200941026a3602002002200641016a22093a00d0042005417f6a21052009210620094120470d000b200241e8066a41186a200241b0046a41186a290300370300200241e8066a41106a200241b0046a41106a290300370300200241e8066a41086a200241b0046a41086a290300370300200220022903b0043703e8062003417f6a2009460d08200420096a220441016a2d0000210620012005417e6a3602042001200441026a360200200641024b0d0820060e03010203010b200641ff0171450d07200241003a00d0040c070b41002106200241003a00f0042003417e6a210a200920036b41026a210b200320096b417d6a210902400340200b20066a450d01200241b0046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00f0042009417f6a2109200a417f6a210a20082106200841c000470d000b200241d0076a41386a200241b0046a41386a2903002207370300200241d0076a41306a200241b0046a41306a290300220c370300200241d0076a41286a200241b0046a41286a290300220d370300200241d0076a41206a200241b0046a41206a290300220e370300200241d0076a41186a200241b0046a41186a290300220f37030020024180026a41086a200241b0046a41086a29030037030020024180026a41106a200241b0046a41106a29030037030020024180026a41186a200f37030020024180026a41206a200e37030020024180026a41286a200d37030020024180026a41306a200c37030020024180026a41386a2007370300200220022903b00437038002200520086b417e6a2105200420086a41026a2109410021060c030b200641ff0171450d06200241003a00f004420221070c070b41002106200241003a00f0042003417e6a210a200920036b41026a210b200320096b417d6a210902400340200b20066a450d01200241b0046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00f0042009417f6a2109200a417f6a210a20082106200841c000470d000b200241d0076a41386a200241b0046a41386a2903002207370300200241d0076a41306a200241b0046a41306a290300220c370300200241d0076a41286a200241b0046a41286a290300220d370300200241d0076a41206a200241b0046a41206a290300220e370300200241d0076a41186a200241b0046a41186a290300220f37030020024180026a41086a200241b0046a41086a29030037030020024180026a41106a200241b0046a41106a29030037030020024180026a41186a200f37030020024180026a41206a200e37030020024180026a41286a200d37030020024180026a41306a200c37030020024180026a41386a2007370300200220022903b00437038002200520086b417e6a2105200420086a41026a2109410121060c020b200641ff0171450d05200241003a00f004420221070c060b41002106200241003a00f1042003417e6a210a200920036b41026a210b200320096b417d6a21090340200b20066a450d02200241b0046a20066a200420066a220841026a2d00003a0000200120093602042001200841036a3602002002200641016a22083a00f1042009417f6a2109200a417f6a210a20082106200841c100470d000b20024180026a200241b0046a41c10010a1051a200520086b417e6a210541022106200420086a41026a21090b2002418f076a20024180026a41c10010a1051a2005450d032009310000210d20012005417f6a22043602042001200941016a360200200d50450d01420021070c020b200641ff0171450d02200241003a00f104420221070c030b2004450d012009310001210e20012005417e6a3602042001200941026a3602004202200d420f8386220c4204540d0142012107200e420886200d84420488200c420c88220d4201200d4201561b7e220d200c5a0d010b200241186a200110880120022802180d00200228021c2105200220011080022002290300a70d00200241106a290300210f2002290308210e200241d0076a41186a200241e8066a41186a290300370300200241d0076a41106a200241e8066a41106a290300370300200241d0076a41086a200241e8066a41086a290300370300200220022903e8063703d007200241b0046a2002418f076a41c10010a1051a200241f8016a41046a200241e2066a41046a2f01003b0100200220022801e2063602f8010c010b420221070b200241d8016a41186a2209200241d0076a41186a290300370300200241d8016a41106a2204200241d0076a41106a290300370300200241d8016a41086a2208200241d0076a41086a290300370300200220022903d0073703d80120024197016a200241b0046a41c10010a1051a20024190016a41046a2203200241f8016a41046a2f01003b0100200220022802f8013602900120074202510d01200241f0006a41186a2009290300370300200241f0006a41106a2004290300370300200241f0006a41086a2008290300370300200220022903d8013703702002412f6a20024197016a41c10010a1051a200241286a41046a20032f01003b010020022002280290013602280b200241b0046a200110990320022802b004210120024180026a200241b0046a41047241ac0210a1051a024020014116460d0020002002290370370300200020063a0020200041186a200241f0006a41186a290300370300200041106a200241f0006a41106a290300370300200041086a200241f0006a41086a290300370300200041216a2002412f6a41c10010a1051a200041e6006a200241286a41046a2f01003b01002000200228022836016220004188016a200f37030020004180016a200e37030020004198016a200136020020004190016a2005360200200041f8006a200d3703002000200c370370200020073703682000419c016a20024180026a41ac0210a1051a0c020b200042033703680c010b200042033703680b20024190086a24000bf90403027f017e057f230041d0006b2202240041e4dec400ad4280808080e00084100c22032900002104200241086a200341086a290000370300200220043703002003102341eadec400ad4280808080900184100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bc90402017f037e23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101c41014621000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a2002ad4220862001ad84200441206a101341014621000c010b2002ad4220862001ad84101822012900002105200141086a2900002106200141106a2900002107200441186a200141186a290000370300200441106a2007370300200441086a2006370300200420053703002001102341012101200441206a200041016a2004108d014100210020042d00200d00200441c8006a41206a200441c1006a2d00003a0000200441c8006a41186a200441396a290000370300200441c8006a41106a200441316a290000370300200441c8006a41086a200441296a29000037030020042004290021370348200441c8006aad4280808080900484101822002900002105200041086a2900002106200041106a2900002107200441f0006a41186a200041186a290000370300200441f0006a41106a2007370300200441f0006a41086a200637030020042005370370200010230240200441f0006a2003460d00200441f0006a2003412010a3054521010b200121000b20044190016a240020000bba0502087f037e230041106b2202240002400240200141086a28020022034105744116722204417f4c0d000240200410212205450d00200520012802002206290000370000200541086a200641086a290000370000200241103602082002200436020420022005360200200141046a280200210720032002106102400240024020030d0020022802042106200228020821040c010b20034105742108200228020021092002280204210620022802082104034020072105024002402006200422036b4120490d00200341206a21040c010b200341206a22042003490d03200641017422072004200720044b1b22074100480d03024002400240024020060d00024020070d00410121090c020b2007102121090c030b20062007470d010b200721060c020b200920062007102521090b200721062009450d060b200541206a2107200920036a22032005290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a290000370000200841606a22080d000b2002200636020420022004360208200220093602000b20012f010c210802400240200620046b4102490d00200441026a210520022802002103200621070c010b200441026a22052004490d01200641017422032005200320054b1b22074100480d010240024020060d00024020070d00410121030c020b200710212203450d060c010b2002280200210320062007460d0020032006200710252203450d050b20022007360204200220033602000b200320046a20083b00002005ad4220862003ad8410182205290000210a200541086a290000210b200541106a290000210c200041186a200541186a290000370000200041106a200c370000200041086a200b3700002000200a3700002005102302402007450d00200310230b200241106a24000f0b102c000b1033000b1032000b102a000b130020004102360204200041a498c3003602000b3400200041b0dfc30036020420004100360200200041146a4107360200200041106a41c49cc300360200200041086a420a3702000b2c01017f02404108102122020d001033000b20024200370000200042888080808001370204200020023602000b2201017f230041106b220224002002410036020020002002108601200241106a24000bd60201057f230041206b2202240002400240024002400240024020012d0000417f6a220341024b0d0020030e03010203010b41f58ac7004128418c94c700102d000b41b00210212203450d032003200141046a28020010dc03200041013a0000200041046a20033602000c020b200041023a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c010b200241186a2204200141196a290000370300200241106a2205200141116a290000370300200241086a2206200141096a2900003703002002200129000137030041b00210212203450d012003200141246a28020010dc03200041246a2003360200200041033a0000200041196a2004290300370000200041116a2005290300370000200041096a2006290300370000200020022903003700010b200241206a24000f0b102a000b881703047f067e027f230041d0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e16001101020304051106070809110a0b0c0d0e0f101112000b200241a8016a200141086a10dd0320004100360200200041106a200241a8016a41086a290300370300200041086a20022903a8013703000c120b20004102360200200041086a200141086a2903003703000c110b02400240024002400240024020012d0004417f6a220341034b0d00200141046a210420030e0401020304010b41f58ac7004128418c94c700102d000b200141086a2802002103410121050c030b41022105200241086a41026a200441036a2d00003a0000200241a8016a41086a200141146a290200370300200241b8016a2001411c6a290200370300200241c0016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703a801200141086a2802002103200141286a28020021010c020b200141086a2802002103410321050c010b2002410a6a200441036a2d00003a0000200241a8016a41086a200141146a290200370300200241b8016a2001411c6a290200370300200241c0016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703a801200141086a2802002103200141286a2802002101410421050b200020053a0004200020022f01083b000520004103360200200041086a20033602002000410c6a20022903a801370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a200241a8016a41086a2903003702002000411c6a200241b8016a290300370200200041246a200241c0016a2802003602000c100b02400240024002400240024002400240200141086a22032d0000417f6a220441034b0d0020040e0401020304010b41f58ac7004128418c94c700102d000b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141386a2903002106200141306a2903002107410121010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141c8006a2903002108200141c0006a2903002109200141386a2903002106200141306a2903002107410221010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a8012002200341216a2800003602082002200341246a28000036000b200141c8006a3100002108200141c0006a2902002109200141386a2902002106200141306a2902002107200141d8006a290300210a200141d0006a290300210b410321010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141386a2903002106200141306a2903002107410421010b0b0b200020022903a8013700092000200228020836002920004104360200200041d8006a200a370300200041d0006a200b370300200041c8006a2008370300200041c0006a2009370300200041386a2006370300200041306a2007370300200041086a20013a00002000412c6a200228000b360000200041116a200241a8016a41086a290300370000200041196a200241b8016a290300370000200041216a200241c0016a2903003700000c0f0b200241a8016a200141046a10de03200041053602002000410c6a200241b0016a280200360200200020022903a8013702040c0e0b200241a8016a200141086a109202200041086a200241a8016a41880210a1051a200041063602000c0d0b02400240200128020422040d00410021030c010b200241a8016a41186a200141286a290000370300200241a8016a41106a200141206a290000370300200241b0016a200141186a290000370300200241a8016a41286a200141386a290000370300200241a8016a41306a200141c0006a290000370300200241a8016a41386a200141c8006a290000370300200241a8016a41c8006a200141d8006a290000370300200241a8016a41d0006a200141e0006a290000370300200241a8016a41d8006a200141e8006a2900003703002002200141106a2900003703a8012002200141306a2900003703c8012002200141d0006a2900003703e801200241a8016a41f8006a20014188016a290000370300200241a8016a41f0006a20014180016a290000370300200241a8016a41e8006a200141f8006a290000370300200241a8016a4198016a200141a8016a290000370300200241a8016a4190016a200141a0016a290000370300200241a8016a4188016a20014198016a2900003703002002200141f0006a29000037038802200220014190016a2900003703a8022001410c6a2802002201417f4c0d0e0240024020010d0020024200370308410121030c010b200110212203450d102002410036020c200220013602080b20032004200110a1051a2002200136020c20022903082106200241086a200241a8016a41a00110a1051a0b20002003360204200041086a2006370200200041106a200241086a41a00110a1051a200041083602000c0c0b20004109360200200020012802043602040c0b0b2001410c6a2802002203417f4c0d0b200128020421050240024020030d0041002101410121040c010b20032101200310212204450d0d0b20042005200310a10521042000410c6a2003360200200041086a2001360200200020043602042000410a3602000c0a0b200241a8016a200141046a10d702200041046a200241a8016a41e40010a1051a2000410b3602000c090b200241a8016a200141046a10df03200041046a200241a8016a419c0210a1051a2000410d3602000c080b2000410e3602000c070b200241a8016a200141046a10e003200041046a200241a8016a41c80010a1051a2000410f3602000c060b200241a8016a200141046a10e103200041103602002000413c6a200241e0016a280200360200200041346a200241d8016a2903003702002000412c6a200241d0016a290300370200200041246a200241c8016a2903003702002000411c6a200241c0016a290300370200200041146a200241a8016a41106a2903003702002000410c6a200241b0016a290300370200200020022903a8013702040c050b200241a8016a200141086a10e203200041086a200241a8016a41a80210a1051a200041113602000c040b200241a8016a200141046a10e303200041046a200241a8016a41c40010a1051a200041123602000c030b4102210c0240024002400240200141086a22032d0000417f6a220d41024b0d0041012104200d0e03030201030b41f58ac7004128418c94c700102d000b200141c8006a2903002107200141c0006a2903002106200141386a2903002109200141306a2903002108200141d0006a28020021054103210c0b200241c0016a200341196a290000370300200241b8016a200341116a290000370300200241b0016a200341096a290000370300200220032900013703a801200c21040b200020022903a8013700092000200228000836002920004113360200200041c8006a2007370300200041c0006a2006370300200041386a2009370300200041306a2008370300200041086a20043a0000200041d0006a2005360200200041116a200241a8016a41086a290300370000200041196a200241b8016a290300370000200041216a200241c0016a2903003700002000412c6a2002410b6a2800003600000c020b10e403000b200241a8016a200141046a10db0320004115360200200041246a200241c8016a2903003702002000411c6a200241c0016a290300370200200041146a200241b8016a2903003702002000410c6a200241b0016a290300370200200020022903a8013702040b200241d0036a24000f0b1032000b1033000bae0803047f017e077f230041206b22022400024002400240024002400240024002400240024002400240024002402001280200417f6a220341094b0d0020030e0a0102030405060708090a010b41f58ac7004128418c94c700102d000b20004101360200200020012802043602040c090b2001410c6a2802002203417f4c0d09200128020421010240024020030d0041002104410121050c010b20032104200310212205450d0b0b20052001200310a10521012000410c6a2003360200200041086a200436020020002001360204200041023602000c080b20004103360200200041086a200141086a2903003703000c070b2001410c6a2802002203417f4c0d07200128020421010240024020030d0041002104410121050c010b20032104200310212205450d090b20052001200310a10521012000410c6a2003360200200041086a200436020020002001360204200041043602000c060b2001410c6a2802002203417f4c0d06200128020421010240024020030d0041002104410121050c010b20032104200310212205450d080b20052001200310a10521012000410c6a2003360200200041086a200436020020002001360204200041053602000c050b20004106360200200020012902043702042000410c6a2001410c6a2802003602000c040b2001410c6a2802002204ad42187e2206422088a70d042006a72205417f4c0d04200128020421030240024020050d00410421010c010b200510212201450d060b20024100360218200220013602102002200541186e360214200241106a4100200410b0012002280218210702402004450d002003200441186c6a21082002280210200741186c6a21010340200341086a2802002204417f4c0d06200328020021050240024020040d00410021094101210a0c010b2004210920041021220a450d080b200a2005200410a105210a200341146a2802002205417f4c0d062003410c6a280200210b0240024020050d004100210c4101210d0c010b2005210c20051021220d450d080b200d200b200510a105210b200141146a2005360200200141106a200c3602002001410c6a200b360200200141086a2004360200200141046a20093602002001200a360200200141186a2101200741016a2107200341186a22032008470d000b0b200241086a20073602002002200229031022063703002000410c6a200736020020002006370204200041073602000c030b200241106a200141046a10cd03200041083602002000410c6a200241106a41086a280200360200200020022903103702040c020b2001410c6a2802002203417f4c0d02200128020421010240024020030d0041012104410021050c010b20032105200310212204450d040b20042001200310a10521012000410c6a2003360200200041086a200536020020002001360204200041093602000c010b2000410a3602000b200241206a24000f0b1032000b1033000bda0b03027f017e177f230041a0016b220224000240024020012802082203ad42f0007e2204422088a70d002004a72205417f4c0d00200128020021060240024020050d00410421010c010b200510212201450d020b20024100360208200220013602002002200541f0006e36020420024100200310b5012002280208210502402003450d002006200341f0006c6a21072002280200200541f0006c6a21082005200341047441706a4104766a21090340200241d0006a41086a220a200641186a290000370300200241d0006a41106a220b200641206a290000370300200241d0006a41186a220c200641286a290000370300200241306a41086a220d200641386a29000037030020062900102104200241306a41106a220e200641c0006a290000370300200241306a41186a220f200641c8006a290000370300200241106a41186a2210200641e8006a290000370300200241106a41106a2211200641e0006a290000370300200241106a41086a2212200641d8006a290000370300200220043703502002200629003037033020022006290050370310200628020c2203ad42247e2204422088a70d022004a72205417f4c0d0220062802002113200628020421140240024020050d00410421010c010b200510212201450d040b20024100360278200220013602702002200541246e360274200241f0006a4100200310a2012002280278211502402003450d00200341246c21162002280270201541246c6a211741002105034002400240024002400240024002400240201420056a22032d00000e06010203040500010b2003410c6a2802002218417f4c0d0b200341046a28020021030240024020180d0041012101410021190c010b20182119201810212201450d0d0b200220012003201810a105360093014105211a0c050b2002200341046a28000036009b012002200341016a280000360298012002200341146a290000370380012002200341196a290000370085012002200228029801360290012002200228009b0136009301200341086a28000021192003410c6a2800002118200341106a28000021014100211a0c050b200341106a2802002201417f4c0d09200341086a280200211b200341016a28000021034101211a0240024020010d0041002118410121190c010b20012118200110212219450d0b0b2019201b200110a1051a20022003360290010c040b200341106a2802002201417f4c0d08200341086a280200211a200341016a28000021030240024020010d0041002118410121190c010b20012118200110212219450d0a0b2019201a200110a1051a20022003360290014102211a0c030b200341106a2802002201417f4c0d07200341086a280200211a200341016a28000021030240024020010d0041002118410121190c010b20012118200110212219450d090b2019201a200110a1051a20022003360290014103211a0c020b4104211a2002200341046a280200360093012003410c6a2802002118200341086a28020021190b0b201720056a2203201a3a0000200341016a200228029001360000200341046a200228009301360000200341106a20013602002003410c6a2018360200200341086a2019360200200341146a2002290380013702002003411c6a20024180016a41086a290300370200201541016a21152016200541246a2205470d000b0b20024180016a41086a2015360200200220022903702204370380012008410c6a20153602002008200437020420082002290350370210200841186a200a29030037020020082013360200200841206a200b290300370200200841286a200c29030037020020082002290330370230200841386a200d290300370200200841c0006a200e290300370200200841c8006a200f290300370200200841e8006a2010290300370200200841e0006a2011290300370200200841d8006a201229030037020020082002290310370250200841f0006a2108200641f0006a22062007470d000b200941016a21050b20002002290300370200200041086a2005360200200241a0016a24000f0b1032000b1033000baf1f07027f017e197f017e047f017e097f230041f0026b220224000240024002400240024002402001280200417f6a220341014b0d0020030e020102010b41f58ac7004128418c94c700102d000b2001410c6a2802002203ad4288027e2204422088a70d022004a72205417f4c0d02200128020421060240024020050d00410821010c010b200510212201450d040b20024100360288012002200136028001200220054188026e3602840120024180016a41002003109901200228028801210702402003450d00200620034188026c6a210820022802800120074188026c6a210920024190026a41086a210a20024190026a41106a210b20024190026a41186a210c0340200a200641d8006a290000370300200b200641e0006a290000370300200c200641e8006a2900003703002002200629005037039002200641cc006a280200220d417f4c0d04200628024421032006280240210e02400240200d0d004100210f410121010c010b200d210f200d10212201450d060b20012003200d10a1052110200241f0016a41186a221120064188016a290300370300200241f0016a41106a221220064180016a290300370300200241f0016a41086a2213200641f8006a290300370300200241b0016a41086a221420064190016a220341086a290000370300200241b0016a41106a2215200341106a290000370300200241b0016a41186a2216200341186a290000370300200241b0016a41206a2217200341206a290000370300200241b0016a41286a2218200341286a290000370300200241b0016a41306a2219200341306a290000370300200241b0016a41386a221a200341386a290000370300200220062903703703f001200220032900003703b00120024190016a41186a221b200641d0016a220341186a29000037030020024190016a41106a221c200341106a29000037030020024190016a41086a221d200341086a2900003703002002200329000037039001200641086a29030021042006290300211e200241c0006a200641106a10c403200241186a221f200641346a290000370300200241106a22202006412c6a290000370300200241086a2221200641246a2900003703002002200629001c37030020062802f8012222ad42c1007e2223422088a70d042023a72201417f4c0d0420062802f00121030240024020010d00410121050c010b200110212205450d060b20024100360268200220053602602002200141c1006e360264200241e0006a41002022109d012002280268212402402022450d002003202241c1006c6a21252002280260202441c1006c6a2101034020032d00002105200241b0026a41386a2226200341396a290000370300200241b0026a41306a2227200341316a290000370300200241b0026a41286a2228200341296a290000370300200241b0026a41206a2229200341216a290000370300200241b0026a41186a222a200341196a290000370300200241b0026a41106a222b200341116a290000370300200241b0026a41086a222c200341096a2900003703002002200341016a2900003703b002200120053a0000200141016a20022903b002370000200141096a202c290300370000200141116a202b290300370000200141196a202a290300370000200141216a2029290300370000200141296a2028290300370000200141316a2027290300370000200141396a2026290300370000200141c1006a2101200341c1006a22032025470d000b202420226a21240b200241b0026a41086a22052024360200200220022903603703b00220062802fc0121260240024020064180026a280200220141037622270d0041012127410021030c010b4101210302402027410820014107716b22284d0d0041024101202720286b22034107711b20034103766a21030b200310212227450d060b20272026200310a105212620092002290340370310200941186a200241c0006a41086a2802003602002009200229030037021c200920043703082009201e370300200941cc006a200d360200200941c8006a200f360200200920103602442009200e360240200941246a20212903003702002009200229039002370350200941d8006a200a2903003703002009412c6a2020290300370200200941346a201f290300370200200941e0006a200b290300370300200941e8006a200c29030037030020094188016a201129030037030020094180016a2012290300370300200941f8006a2013290300370300200920022903f001370370200920022903b0013703900120094198016a2014290300370300200941a0016a2015290300370300200941a8016a2016290300370300200941b0016a2017290300370300200941b8016a2018290300370300200941c0016a2019290300370300200941c8016a201a29030037030020094184026a200336020020094180026a2001360200200920263602fc01200941e8016a201b290300370300200941e0016a201c290300370300200941d8016a201d29030037030020092002290390013703d001200941f8016a2005280200360200200920022903b0023703f001200741016a210720094188026a210920064188026a22062008470d000b0b200241b8026a2007360200200220022903800122043703b0022000410c6a200736020020002004370204200041013602000c010b200241f0016a41186a200141d0006a290000370300200241f0016a41106a200141c8006a290000370300200241f0016a41086a200141c0006a2900003703002002200141386a2900003703f001200141046a21030240024002400240200141d8006a2d00000e03010200010b200241b0026a41186a200341ed006a290000370300200241b0026a41106a200341e5006a290000370300200241b0026a41086a200341dd006a2900003703002002200341d5006a2900003703b00241022126200241b0026a21050c020b200241b0026a41186a200341ed006a290000370300200241b0026a41106a200341e5006a290000370300200241b0026a41086a200341dd006a2900003703002002200341d5006a2900003703b00241002126200241b0026a21050c010b200241b0026a41186a200341ed006a290000370300200241b0026a41106a200341e5006a290000370300200241b0026a41086a200341dd006a2900003703002002200341d5006a2900003703b00241012126200241b0026a21050b20024190026a41186a200541186a29000037030020024190026a41106a200541106a29000037030020024190026a41086a200541086a2900003703002002200529000037039002200241b0026a41086a200341fd006a290000370300200241b0026a41106a20034185016a290000370300200241b0026a41186a2003418d016a290000370300200241d0026a20034195016a290000370300200241d8026a2003419d016a290000370300200241e0026a200341a5016a290000370300200241e8026a200341ad016a2900003703002002200341f5006a2900003703b002024002400240024020032d00b5010e03010200010b200241b0016a41186a200341ce016a290000370300200241b0016a41106a200341c6016a290000370300200241b0016a41086a200341be016a2900003703002002200341b6016a2900003703b00141022127200241b0016a21050c020b200241b0016a41186a200341ce016a290000370300200241b0016a41106a200341c6016a290000370300200241b0016a41086a200341be016a2900003703002002200341b6016a2900003703b00141002127200241b0016a21050c010b200241b0016a41186a200341ce016a290000370300200241b0016a41106a200341c6016a290000370300200241b0016a41086a200341be016a2900003703002002200341b6016a2900003703b00141012127200241b0016a21050b200241c0006a41186a2228200541186a290000370300200241c0006a41106a2229200541106a290000370300200241c0006a41086a222a200541086a29000037030020022005290000370340200241086a2205200341de016a290000370300200241106a222b200341e6016a290000370300200241186a222c200341ee016a290000370300200241206a2209200341f6016a290000370300200241286a2206200341fe016a290000370300200241306a222520034186026a290000370300200241386a220d2003418e026a2900003703002002200341d6016a2900003703002001280204210320024180016a200141086a10cd0320024190016a41086a2222200241f0016a41086a29030037030020024190016a41106a2224200241f0016a41106a29030037030020024190016a41186a2207200241f0016a41186a290300370300200241e0006a41086a220a20024190026a41086a290300370300200241e0006a41106a220b20024190026a41106a290300370300200241e0006a41186a220c20024190026a41186a290300370300200241b0016a41086a220e200241b0026a41086a290300370300200241b0016a41106a220f200241b0026a41106a290300370300200241b0016a41186a2210200241b0026a41186a290300370300200241b0016a41206a2211200241b0026a41206a290300370300200241b0016a41286a2212200241b0026a41286a290300370300200241b0016a41306a2213200241b0026a41306a290300370300200241b0016a41386a2214200241b0026a41386a290300370300200220022903f001370390012002200229039002370360200220022903b0023703b001200141146a280200211520002003360204200041086a200229038001370200200041106a20024180016a41086a280200360200200041146a2015360200200041386a200229039001370200200041c0006a2022290300370200200041c8006a2024290300370200200041d0006a2007290300370200200041186a200141186a290200370200200041206a200141206a290200370200200041286a200141286a290200370200200041306a200141306a290200370200200041d8006a20263a0000200041f1006a200c290300370000200041e9006a200b290300370000200041e1006a200a29030037000020002002290360370059200041b1016a2014290300370000200041a9016a2013290300370000200041a1016a201229030037000020004199016a201129030037000020004191016a201029030037000020004189016a200f29030037000020004181016a200e290300370000200020022903b001370079200020273a00b901200041d2016a2028290300370000200041ca016a2029290300370000200041c2016a202a290300370000200020022903403700ba0120004192026a200d2903003700002000418a026a202529030037000020004182026a2006290300370000200041fa016a2009290300370000200041f2016a202c290300370000200041ea016a202b290300370000200041e2016a2005290300370000200020022903003700da01200041023602000b200241f0026a24000f0b1032000b1033000bf50501087f024002400240024002400240024002400240024020012d0000417f6a220241064b0d0020020e0701020304050607010b41f58ac7004128418c94c700102d000b200141106a2802002202417f4c0d06200141086a2802002103200141046a280200210420012d000121050240024020020d0041002106410121070c010b20022106200210212207450d080b20072003200210a10521072001411c6a2802002203417f4c0d06200128021421010240024020030d0041002108410121090c010b20032108200310212209450d080b20092001200310a10521012000411c6a2003360200200041186a2008360200200041146a2001360200200041106a20023602002000410c6a2006360200200041086a2007360200200041046a2004360200200041013a00002000200541ff01714101463a00010f0b200041023a0000200041046a200141046a2802003602000f0b200041033a0000200041046a200141046a2802003602000f0b2001410c6a2802002202417f4c0d03200141046a28020021030240024020020d0041012104410021050c010b20022105200210212204450d050b20042003200210a1052104200141186a2802002203417f4c0d03200128021021010240024020030d0041012106410021070c010b20032107200310212206450d050b20062001200310a1052101200041186a2003360200200041146a2007360200200041106a20013602002000410c6a2002360200200041086a2005360200200041046a2004360200200041043a00000f0b20002001290001370001200041c4006a200141c4006a280200360200200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a290000370000200041053a00000f0b200041063a00000f0b200041073a0000200041046a200141046a2802003602000f0b1032000b1033000b830703037f017e037f230041c0026b22022400024002400240024002400240024002400240024020012d0000417f6a220341044b0d0020030e050102030405010b41f58ac7004128418c94c700102d000b2001410c6a2802002204ad42b0027e2205422088a70d052005a72203417f4c0d05200141046a28020021010240024020030d00410821060c010b200310212206450d070b20024100360208200220063602002002200341b0026e36020420024100200410ad012002280208210702402004450d00200441b0026c21032002280200200741b0026c6a2106200441047441706a41047621040340200241106a200110dc032006200241106a41b00210a10541b0026a2106200141b0026a2101200341d07d6a22030d000b200720046a41016a21070b200241186a20073602002002200229030022053703102000410c6a2007360200200041046a2005370200200041013a00000c040b200141026a2f0100210641b00210212203450d062003200141046a28020010e304200041046a2003360200200041026a20063b0100200041023a00000c030b200141026a2f01002106200241106a200141046a108e02200141186a2802002107200141146a2802002104200141106a280200210841b00210212203450d0520032001411c6a28020010e304200041026a20063b01002000411c6a2003360200200041186a2007360200200041146a2004360200200041106a2008360200200041033a0000200041046a20022903103702002000410c6a200241186a2802003602000c020b200141226a2f01002103200241106a200141246a108e02200041226a20033b0100200041043a0000200041246a20022903103702002000412c6a200241186a280200360200200041386a200141386a280200360200200041306a200141306a29020037020020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c010b200141226a2f01002103200241106a200141246a108e02200041226a20033b0100200041053a0000200041246a20022903103702002000412c6a200241186a280200360200200041306a200141306a29020037020020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000b200241c0026a24000f0b1032000b1033000b102a000be24e03027f017e3a7f230041d0036b2202240002400240024002400240024002400240024002400240024002400240024020012d0000417f6a2203410a4b0d0020030e0b0102030405060708090a0b010b41f58ac7004128418c94c700102d000b200041013a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c0a0b2001410c6a2802002203ad42c8007e2204422088a70d0a2004a72205417f4c0d0a200141046a28020021060240024020050d00410421070c010b200510212207450d0c0b41002108200241003602c003200220073602b8032002200541c8006e3602bc03200241b8036a4100200310a10120022802c003210902402003450d002006200341c8006c6a210a20022802b803200941c8006c6a210b0340410021074100210c024002400240024002400240200620086a22052d00000e06050102030400050b20024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541036a2d00003a00a2032002200541016a2f00003b01a0032002200541106a290000370388032005410c6a280000210d200541086a280000210e200541046a280000210f4105210c0c040b2005410c6a280200220d417f4c0d10200541046a28020021034101210c0240200d0d004100210e4101210f41012003200d10a1051a0c040b200d210e200d1021220f450d11200f2003200d10a1051a0c030b20024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541036a2d00003a00a2032002200541016a2f00003b01a0032002200541106a290000370388032005410c6a280000210d200541086a280000210e200541046a280000210f4102210c0c020b20024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00004103210c2002200541036a2d00003a00a2032002200541016a2f00003b01a0032002200541106a290000370388032005410c6a280000210d200541086a280000210e200541046a280000210f0c010b20024188036a41086a200541186a29000037030020024188036a41106a200541206a2d00003a00002002200541036a2d00003a00a2032002200541016a2f00003b01a0032002200541106a290000370388032005410c6a280000210d200541086a280000210e4104210c200541046a280000210f0b024002400240024002400240200541246a2d00000e06050102030400050b200241d8026a41026a200541276a2d00003a0000200241086a2005413c6a290000370300200241106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a290000370300200541306a28000021102005412c6a2800002111200541286a2800002112410521070c040b200541306a2802002210417f4c0d10200541286a280200210341012107024020100d00410021114101211241012003201010a1051a0c040b20102111201010212212450d1120122003201010a1051a0c030b41022107200241d8026a41026a200541276a2d00003a0000200241086a2005413c6a290000370300200241106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a290000370300200541306a28000021102005412c6a2800002111200541286a28000021120c020b200241d8026a41026a200541276a2d00003a0000200241086a2005413c6a290000370300200241106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a290000370300200541306a28000021102005412c6a2800002111200541286a2800002112410321070c010b200241d8026a41026a200541276a2d00003a0000200241086a2005413c6a290000370300200241106a200541c4006a2d00003a00002002200541256a2f00003b01d8022002200541346a290000370300200541306a28000021102005412c6a2800002111200541286a2800002112410421070b200b20086a2203200c3a0000200341016a20022f01a0033b0000200341036a20022d00a2033a00002003410c6a200d360000200341086a200e360000200341046a200f360000200341106a200229038803370000200341216a20022f00f0023b0000200341186a20024188036a41086a290300370000200341206a20024188036a41106a2d00003a0000200341236a200241f0026a41026a2d00003a0000200341246a20073a0000200341286a20123600002003412c6a2011360000200341306a2010360000200341256a20022f01d8023b0000200341276a200241d8026a41026a2d00003a0000200341346a20022903003700002003413c6a200241086a290300370000200341c4006a200241106a2d00003a0000200341c5006a20022f00c0023b0000200341c7006a200241c0026a41026a2d00003a0000200841c8006a2108200941016a2109200541c8006a200a470d000b0b20024180026a41086a2009360200200220022903b803370380024100210b41002113024002400240024002400240200141106a2d00000e06050102030400050b200241a4026a200141136a2d00003a000020024190026a41086a200141286a29000037030020024190026a41106a200141306a2d00003a00002002200141116a2f00003b01a2022002200141206a290000370390022001411c6a2800002103200141186a2800002114200141146a2800002109410521130c040b2001411c6a2802002203417f4c0d0e200141146a280200210541012113024020030d00410021144101210941012005200310a1051a0c040b20032114200310212209450d0f20092005200310a1051a0c030b41022113200241a2026a41026a200141136a2d00003a000020024190026a41086a200141286a29000037030020024190026a41106a200141306a2d00003a00002002200141116a2f00003b01a2022002200141206a290000370390022001411c6a2800002103200141186a2800002114200141146a28000021090c020b200241a4026a200141136a2d00003a000020024190026a41086a200141286a29000037030020024190026a41106a200141306a2d00003a00002002200141116a2f00003b01a2022002200141206a290000370390022001411c6a2800002103200141186a2800002114200141146a2800002109410321130c010b200241a4026a200141136a2d00003a000020024190026a41086a200141286a29000037030020024190026a41106a200141306a2d00003a00002002200141116a2f00003b01a2022002200141206a290000370390022001411c6a2800002103200141186a2800002114200141146a2800002109410421130b024002400240024002400240200141346a2d00000e06050102030400050b200241bc026a200141376a2d00003a0000200241b0026a200141cc006a290000370300200241b8026a200141d4006a2d00003a00002002200141356a2f00003b01ba022002200141c4006a2900003703a802200141c0006a28000021052001413c6a2800002115200141386a280000210f4105210b0c040b200141c0006a2802002205417f4c0d0e200141386a28020021084101210b024020050d00410021154101210f41012008200510a1051a0c040b2005211520051021220f450d0f200f2008200510a1051a0c030b4102210b200241ba026a41026a200141376a2d00003a0000200241b0026a200141cc006a290000370300200241b8026a200141d4006a2d00003a00002002200141356a2f00003b01ba022002200141c4006a2900003703a802200141c0006a28000021052001413c6a2800002115200141386a280000210f0c020b200241bc026a200141376a2d00003a0000200241b0026a200141cc006a290000370300200241b8026a200141d4006a2d00003a00002002200141356a2f00003b01ba022002200141c4006a2900003703a802200141c0006a28000021052001413c6a2800002115200141386a280000210f4103210b0c010b200241bc026a200141376a2d00003a0000200241b0026a200141cc006a290000370300200241b8026a200141d4006a2d00003a00002002200141356a2f00003b01ba022002200141c4006a2900003703a802200141c0006a28000021052001413c6a2800002115200141386a280000210f4104210b0b4100211641002117024002400240024002400240200141d8006a2d00000e06050102030400050b200241d4026a200141db006a2d00003a0000200241c8026a200141f0006a290000370300200241d0026a200141f8006a2d00003a00002002200141d9006a2f00003b01d2022002200141e8006a2900003703c002200141e4006a2800002108200141e0006a2800002118200141dc006a2800002112410521170c040b200141e4006a2802002208417f4c0d0e200141dc006a280200210741012117024020080d00410021184101211241012007200810a1051a0c040b20082118200810212212450d0f20122007200810a1051a0c030b41022117200241d2026a41026a200141db006a2d00003a0000200241c8026a200141f0006a290000370300200241d0026a200141f8006a2d00003a00002002200141d9006a2f00003b01d2022002200141e8006a2900003703c002200141e4006a2800002108200141e0006a2800002118200141dc006a28000021120c020b200241d4026a200141db006a2d00003a0000200241c8026a200141f0006a290000370300200241d0026a200141f8006a2d00003a00002002200141d9006a2f00003b01d2022002200141e8006a2900003703c002200141e4006a2800002108200141e0006a2800002118200141dc006a2800002112410321170c010b200241d4026a200141db006a2d00003a0000200241c8026a200141f0006a290000370300200241d0026a200141f8006a2d00003a00002002200141d9006a2f00003b01d2022002200141e8006a2900003703c002200141e4006a2800002108200141e0006a2800002118200141dc006a2800002112410421170b024002400240024002400240200141fc006a2d00000e06050102030400050b200241ec026a200141ff006a2d00003a0000200241e0026a20014194016a290000370300200241e8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ea0220022001418c016a2900003703d80220014188016a280000210720014184016a280000211920014180016a280000210e410521160c040b20014188016a2802002207417f4c0d0e20014180016a280200210c41012116024020070d00410021194101210e4101200c200710a1051a0c040b2007211920071021220e450d0f200e200c200710a1051a0c030b41022116200241ea026a41026a200141ff006a2d00003a0000200241e0026a20014194016a290000370300200241e8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ea0220022001418c016a2900003703d80220014188016a280000210720014184016a280000211920014180016a280000210e0c020b200241ec026a200141ff006a2d00003a0000200241e0026a20014194016a290000370300200241e8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ea0220022001418c016a2900003703d80220014188016a280000210720014184016a280000211920014180016a280000210e410321160c010b200241ec026a200141ff006a2d00003a0000200241e0026a20014194016a290000370300200241e8026a2001419c016a2d00003a00002002200141fd006a2f00003b01ea0220022001418c016a2900003703d80220014188016a280000210720014184016a280000211920014180016a280000210e410421160b4100211a4100211b024002400240024002400240200141a0016a2d00000e06050102030400050b20024186036a200141a3016a2d00003a0000200241f8026a200141b8016a29000037030020024180036a200141c0016a2d00003a00002002200141a1016a2f00003b0184032002200141b0016a2900003703f002200141ac016a280000210c200141a8016a280000211c200141a4016a28000021114105211b0c040b200141ac016a280200220c417f4c0d0e200141a4016a280200210d4101211b0240200c0d004100211c410121114101200d200c10a1051a0c040b200c211c200c10212211450d0f2011200d200c10a1051a0c030b4102211b20024184036a41026a200141a3016a2d00003a0000200241f8026a200141b8016a29000037030020024180036a200141c0016a2d00003a00002002200141a1016a2f00003b0184032002200141b0016a2900003703f002200141ac016a280000210c200141a8016a280000211c200141a4016a28000021110c020b20024186036a200141a3016a2d00003a0000200241f8026a200141b8016a29000037030020024180036a200141c0016a2d00003a00002002200141a1016a2f00003b0184032002200141b0016a2900003703f002200141ac016a280000210c200141a8016a280000211c200141a4016a28000021114103211b0c010b20024186036a200141a3016a2d00003a0000200241f8026a200141b8016a29000037030020024180036a200141c0016a2d00003a00002002200141a1016a2f00003b0184032002200141b0016a2900003703f002200141ac016a280000210c200141a8016a280000211c200141a4016a28000021114104211b0b02402001418c026a2d00004101470d0020024198036a2001419d026a28000036020020024190036a20014195026a29000037030020022001418d026a290000370388034101211a0b4100211d4100211e024002400240024002400240200141c4016a2d00000e06050102030400050b200241b4036a200141c7016a2d00003a0000200241a8036a200141dc016a290000370300200241b0036a200141e4016a2d00003a00002002200141c5016a2f00003b01b2032002200141d4016a2900003703a003200141d0016a280000210d200141cc016a280000211f200141c8016a28000021064105211e0c040b200141d0016a280200220d417f4c0d0e200141c8016a28020021104101211e0240200d0d004100211f4101210641012010200d10a1051a0c040b200d211f200d10212206450d0f20062010200d10a1051a0c030b4102211e200241b2036a41026a200141c7016a2d00003a0000200241a8036a200141dc016a290000370300200241b0036a200141e4016a2d00003a00002002200141c5016a2f00003b01b2032002200141d4016a2900003703a003200141d0016a280000210d200141cc016a280000211f200141c8016a28000021060c020b200241b4036a200141c7016a2d00003a0000200241a8036a200141dc016a290000370300200241b0036a200141e4016a2d00003a00002002200141c5016a2f00003b01b2032002200141d4016a2900003703a003200141d0016a280000210d200141cc016a280000211f200141c8016a28000021064103211e0c010b200241b4036a200141c7016a2d00003a0000200241a8036a200141dc016a290000370300200241b0036a200141e4016a2d00003a00002002200141c5016a2f00003b01b2032002200141d4016a2900003703a003200141d0016a280000210d200141cc016a280000211f200141c8016a28000021064104211e0b024002400240024002400240200141e8016a2d00000e06050102030400050b200241ce036a200141eb016a2d00003a0000200241c0036a20014180026a290000370300200241c8036a20014188026a2d00003a00002002200141e9016a2f00003b01cc032002200141f8016a2900003703b803200141f4016a2800002110200141f0016a2800002120200141ec016a280000210a4105211d0c040b200141f4016a2802002210417f4c0d0e200141ec016a28020021014101211d024020100d00410021204101210a41012001201010a1051a0c040b2010212020101021220a450d0f200a2001201010a1051a0c030b4102211d200241cc036a41026a200141eb016a2d00003a0000200241c0036a20014180026a290000370300200241c8036a20014188026a2d00003a00002002200141e9016a2f00003b01cc032002200141f8016a2900003703b803200141f4016a2800002110200141f0016a2800002120200141ec016a280000210a0c020b200241ce036a200141eb016a2d00003a0000200241c0036a20014180026a290000370300200241c8036a20014188026a2d00003a00002002200141e9016a2f00003b01cc032002200141f8016a2900003703b803200141f4016a2800002110200141f0016a2800002120200141ec016a280000210a4103211d0c010b200241ce036a200141eb016a2d00003a0000200241c0036a20014180026a290000370300200241c8036a20014188026a2d00003a00002002200141e9016a2f00003b01cc032002200141f8016a2900003703b803200141f4016a2800002110200141f0016a2800002120200141ec016a280000210a4104211d0b200241f0016a41086a220120024180026a41086a280200360200200241ec016a41026a2221200241a2026a41026a2d00003a0000200241d8016a41086a222220024190026a41086a290300370300200241d8016a41106a222320024190026a41106a2d00003a0000200241d4016a41026a22242002418d026a41026a2d00003a000020022002290380023703f001200220022f01a2023b01ec0120022002290390023703d801200220022f008d023b01d401200241d0016a41026a2225200241ba026a41026a2d00003a0000200241b8016a41086a2226200241a8026a41086a290300370300200241b8016a41106a2227200241a8026a41106a2d00003a0000200241b4016a41026a2228200241a5026a41026a2d00003a0000200241b0016a41026a2229200241d2026a41026a2d00003a0000200220022f01ba023b01d001200220022903a8023703b801200220022f00a5023b01b401200220022f01d2023b01b00120024198016a41106a222a200241c0026a41106a2d00003a000020024198016a41086a222b200241c0026a41086a29030037030020024194016a41026a222c200241bd026a41026a2d00003a000020024190016a41026a222d200241ea026a41026a2d00003a0000200241f8006a41106a222e200241d8026a41106a2d00003a0000200241f8006a41086a222f200241d8026a41086a290300370300200220022903c00237039801200220022f00bd023b019401200220022f01ea023b019001200220022903d802370378200241f4006a41026a2230200241d5026a41026a2d00003a0000200220022f00d5023b0174200241f0006a41026a223120024184036a41026a2d00003a0000200220022f0184033b0170200241d8006a41106a2232200241f0026a41106a2d00003a0000200241d8006a41086a2233200241f0026a41086a290300370300200220022903f002370358200241d4006a41026a2234200241ed026a41026a2d00003a0000200220022f00ed023b0154200241106a223520024188036a41106a280200360200200241086a223620024188036a41086a2903003703002002200229038803370300200241d0006a41026a2237200241b2036a41026a2d00003a0000200220022f01b2033b0150200241386a41106a2238200241a0036a41106a2d00003a0000200241386a41086a2239200241a0036a41086a290300370300200220022903a003370338200241346a41026a223a2002419d036a41026a2d00003a0000200220022f009d033b0134200241306a41026a223b200241cc036a41026a2d00003a0000200220022f01cc033b0130200241186a41106a223c200241b8036a41106a2d00003a0000200241186a41086a223d200241b8036a41086a290300370300200220022903b803370318200241146a41026a223e200241b5036a41026a2d00003a0000200220022f00b5033b0114200041106a20133a00002000410c6a2001280200360200200041046a20022903f0013702002000411c6a2003360000200041186a2014360000200041146a2009360000200041116a20022f01ec013b0000200041136a20212d00003a0000200041206a20022903d801370000200041286a2022290300370000200041306a20232d00003a0000200041336a20242d00003a0000200041316a20022f01d4013b0000200041346a200b3a0000200041376a20252d00003a0000200041356a20022f01d0013b0000200041c0006a20053600002000413c6a2015360000200041386a200f360000200041d4006a20272d00003a0000200041cc006a2026290300370000200041c4006a20022903b801370000200041d7006a20282d00003a0000200041d5006a20022f01b4013b0000200041d8006a20173a0000200041db006a20292d00003a0000200041d9006a20022f01b0013b0000200041e4006a2008360000200041e0006a2018360000200041dc006a2012360000200041f8006a202a2d00003a0000200041f0006a202b290300370000200041e8006a200229039801370000200041fb006a202c2d00003a0000200041f9006a20022f0194013b0000200041fc006a20163a0000200041ff006a202d2d00003a0000200041fd006a20022f0190013b000020004188016a200736000020004184016a201936000020004180016a200e3600002000419c016a202e2d00003a000020004194016a202f2903003700002000418c016a20022903783700002000419f016a20302d00003a00002000419d016a20022f01743b0000200041a0016a201b3a0000200041a3016a20312d00003a0000200041a1016a20022f01703b0000200041ac016a200c360000200041a8016a201c360000200041a4016a2011360000200041c0016a20322d00003a0000200041b8016a2033290300370000200041b0016a2002290358370000200041c3016a20342d00003a0000200041c1016a20022f01543b0000200041c4016a201e3a0000200041c7016a20372d00003a0000200041c5016a20022f01503b0000200041d0016a200d360000200041cc016a201f360000200041c8016a2006360000200041e4016a20382d00003a0000200041dc016a2039290300370000200041d4016a2002290338370000200041e7016a203a2d00003a0000200041e5016a20022f01343b0000200041e8016a201d3a0000200041eb016a203b2d00003a0000200041e9016a20022f01303b0000200041f4016a2010360000200041f0016a2020360000200041ec016a200a36000020004188026a203c2d00003a000020004180026a203d290300370000200041f8016a20022903183700002000418b026a203e2d00003a000020004189026a20022f01143b00002000418c026a201a3a00002000419d026a203528020036000020004195026a20362903003700002000418d026a2002290300370000200041a3026a20024188036a41026a2d00003a0000200041a1026a20022f0088033b0000200041023a00000c090b2001410c6a2802002203ad42c4007e2204422088a70d092004a72205417f4c0d09200141046a28020021060240024020050d00410421080c010b200510212208450d0b0b41002101200241003602c003200220083602b8032002200541c4006e3602bc03200241b8036a41002003109b0120022802c003210c02402003450d002006200341c4006c6a210a20022802b803200c41c4006c6a210b20024188036a41086a210d20024188036a41106a21100340200d200620016a220541176a29000037030020102005411f6a2d00003a0000200220052f01003b01a0032002200541026a2d00003a00a20320022005410f6a290000370388032005410b6a2800002109200541076a280000210f200541036a280000211241002108024002400240024002400240200541206a2d00000e06050102030400050b200241d8026a41026a200541236a2d00003a0000200241086a200541386a290000370300200241106a200541c0006a2d00003a00002002200541216a2f00003b01d8022002200541306a2900003703002005412c6a2800002107200541286a2800002111200541246a280000210e410521080c040b2005412c6a2802002207417f4c0d0f200541246a280200210341012108024020070d00410021114101210e41012003200710a1051a0c040b2007211120071021220e450d10200e2003200710a1051a0c030b41022108200241d8026a41026a200541236a2d00003a0000200241086a200541386a290000370300200241106a200541c0006a2d00003a00002002200541216a2f00003b01d8022002200541306a2900003703002005412c6a2800002107200541286a2800002111200541246a280000210e0c020b200241d8026a41026a200541236a2d00003a0000200241086a200541386a290000370300200241106a200541c0006a2d00003a00002002200541216a2f00003b01d8022002200541306a2900003703002005412c6a2800002107200541286a2800002111200541246a280000210e410321080c010b200241d8026a41026a200541236a2d00003a0000200241086a200541386a290000370300200241106a200541c0006a2d00003a00002002200541216a2f00003b01d8022002200541306a2900003703002005412c6a2800002107200541286a2800002111200541246a280000210e410421080b200b20016a220320022f01a0033b0100200341026a20022d00a2033a00002003410b6a2009360000200341076a200f360000200341036a20123600002003410f6a200229038803370000200341176a200d2903003700002003411f6a20102d00003a0000200341206a20083a0000200341216a20022f01d8023b0000200341236a200241d8026a41026a2d00003a00002003412c6a2007360000200341286a2011360000200341246a200e360000200341306a2002290300370000200341386a200241086a290300370000200341c0006a200241106a2d00003a0000200341c1006a20022f00f0023b0000200341c3006a200241f0026a41026a2d00003a0000200141c4006a2101200c41016a210c200541c4006a200a470d000b0b20024190036a200c360200200220022903b8032204370388032000410c6a200c360200200041046a2004370200200041033a00000c080b200041043a00000c070b200041053a0000200041106a200141106a290300370300200041086a200141086a290300370300200041046a200141046a2802003602000c060b200041063a0000200041046a200141046a2802003602000c050b200041073a0000200041106a200141106a290300370300200041086a200141086a290300370300200041046a200141046a2802003602000c040b200041083a000020002001290001370001200041246a200141246a280200360200200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000c030b200041093a0000200041086a200141086a290300370300200041046a200141046a2802003602000c020b2000410a3a000020002001290001370001200041386a200141386a290300370300200041306a200141306a290300370300200041246a200141246a280200360200200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a290000370000200041286a200141286a3502003703000c010b2000410b3a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000b200241d0036a24000f0b1032000b1033000bec0601057f230041206b2202240002400240024002400240024002400240024002400240024020012d0000417f6a220341084b0d0020030e09010203040506070809010b41f58ac7004128418c94c700102d000b200241186a2204200141196a290000370300200241106a2205200141116a290000370300200241086a2206200141096a2900003703002002200129000137030041b00210212203450d092003200141246a28020010dc03200041246a2003360200200041013a0000200041196a2004290300370000200041116a2005290300370000200041096a2006290300370000200020022903003700010c080b200041023a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000c070b2002200141046a108e02200041033a0000200041046a20022903003702002000410c6a200241086a280200360200200041106a200141106a280200360200200041026a200141026a2f01003b01000c060b200041043a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c050b200041053a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a290000370000200041216a200141216a290000370000200041296a200141296a290000370000200041316a200141316a290000370000200041396a200141396a2900003700000c040b200041063a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c030b200041073a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000c020b200041083a00000c010b200041093a000020002001290001370001200041196a200141196a290000370000200041116a200141116a290000370000200041096a200141096a2900003700000b200241206a24000f0b102a000b110041f58ac7004128418c94c700102d000b130020004101360204200041b8a9c3003602000b130020004105360204200041a8adc3003602000bad150f047f017e017f027e057f017e077f017e057f017e027f017e027f037e077f230041e0016b22012400200141c0016a41186a22024200370300200141c0016a41106a22034200370300200141c0016a41086a22044200370300200142003703c00141b0dfc300ad4280808080a001842205100c220629000021072004200641086a290000370300200120073703c0012006102341a89ec700ad42808080809001842208100c22062900002107200141d0006a41086a2209200641086a2900003703002001200737035020061023200320012903502207370300200141a0016a41086a220a2004290300370300200141a0016a41106a220b2007370300200141a0016a41186a220c2009290300370300200120012903c0013703a001200141c0016a200141a0016a10c903024020012802c001220d450d000240024020012902c401220e422088a7220f0d0041002110200d21110c010b200d41046a2111200d2802002112410121100b200141c0016a41186a22134200370300200141c0016a41106a22144200370300200141c0016a41086a22154200370300200142003703c0014196adc300ad42808080809001842216100c22062900002107200141f0006a41086a2217200641086a290000370300200120073703702006102320152017290300370300200120012903703703c00141bce0c300ad4280808080e00084100c220629000021072017200641086a2900003703002001200737037020061023201420012903702207370300200141a0016a41086a22182015290300370300200141a0016a41106a22192007370300200141a0016a41186a221a2017290300370300200120012903c0013703a001200141c0016a200141a0016a10910320012802c0012206410420061b211b024020012902c401420020061b221c422088a72206450d00200d200f4102746a211d201b2006412c6c6a211e200141a0016aad4280808080800484211f201b2106034020152006410c6a2902003703002014200641146a29020037030020132006411c6a290200370300200120062902043703c001200641246a280200220f4103460d01200641286a280200212020062802002121200141106a41186a20132903002207370300200141106a41106a20142903002222370300200141106a41086a20152903002223370300200120012903c0012224370310200141306a41186a22252007370300200141306a41106a22262022370300200141306a41086a222720233703002001202437033002400240024002400240024020104101470d0020122021460d010b200f4101470d03200141d0006a41186a220f2025290300370300200141d0006a41106a22282026290300370300200141d0006a41086a2226202729030037030020012001290330370350202041024b0d03201342003703002014420037030020154200370300200142003703c0012016100c222529000021072017202541086a290000370300200120073703702025102320152017290300370300200120012903703703c00141a4e2c300ad4280808080a001842222100c222529000021072017202541086a290000370300200120073703702025102320142001290370370000201441086a222920172903003700002018201529030037030020192014290300370300201a2013290300370300200120012903c0013703a001200141c0016a200141a0016a108f0320012802c001222a0d0141002125200141003602880120014204370380014104212a0c020b02402011201d470d0041002110201d21110c030b2011280200211241012110201141046a21110c020b20012902c40121072001202a3602800120012007370284012007422088a721250b201a200f2903003703002019202829030037030020182026290300370300200120012903503703a0010240024020254103490d0041032126200141033602880120254103460d01202a41246a210f2025410c6c415c6a212503400240200f41046a2802002227450d00202741246c450d00200f28020010230b200f410c6a210f202541746a22250d000c020b0b20014180016a2025410320256b222b109501200128028001222a2001280288012226410c6c6a210f02400240202b4102490d002025417e6a21250340200141003602c801200142043703c001200141c0016a4100410010a201201720012802c8012227360200200120012903c0012207370370200f41086a2027360200200f2007370200202641016a2126200f410c6a210f202541016a222720254f21282027212520280d000b202b450d010b200f4204370200200f4100360208202641016a21260b20012026360288010b202620204d0d012013201a2903003703002014201929030037030020152018290300370300200120012903a0013703c001202a2020410c6c6a220f41086a21250240200f2802082226200f41046a280200470d00200f2026410110a201202528020021260b200f280200202641246c6a220f20012903c001370204200f2021360200200f410c6a2015290300370200200f41146a2014290300370200200f411c6a20132903003702002025202528020041016a36020020014190016a41086a20014180016a41086a2802003602002001200129038001220737039001201342003703002014420037030020154200370300200142003703c0012016100c220f29000021232017200f41086a29000037030020012023370370200f102320152017290300370300200120012903703703c0012022100c220f29000021222017200f41086a29000037030020012022370370200f102320142001290370370000202920172903003700002018201529030037030020192014290300370300201a2013290300370300200120012903c0013703a00102402007a722270d00201f10110c010b200141203602c4012001200141a0016a3602c00120014190016a200141c0016a1090030240200128029801220f450d00200f410c6c21252027210f03400240200f41046a2802002226450d00202641246c450d00200f28020010230b200f410c6a210f202541746a22250d000b0b200128029401220f450d00200f410c6c450d00202710230b2006412c6a2206201e470d010c020b0b2020202641e8afc3001030000b0240201ca72206450d002006412c6c450d00201b10230b200e42ffffffff0383500d00200d10230b200242003703002003420037030020044200370300200142003703c00141b9f4c200ad4280808080c00184100c220629000021072004200641086a290000370300200120073703c001200610232008100c220629000021072009200641086a290000370300200120073703502006102320032001290350370000200341086a2009290300370000200a2004290300370300200b2003290300370300200c2002290300370300200120012903c0013703a001200141a0016aad42808080808004841011200242003703002003420037030020044200370300200142003703c0012005100c220629000021072004200641086a290000370300200120073703c001200610232008100c220629000021072009200641086a2900003703002001200737035020061023200320012903502207370300200a2004290300370300200b2007370300200c2009290300370300200120012903c0013703a001200141086a200141a0016a4120419ca8c70041004100108c01024020012802084101470d00200010e803200141e0016a24000f0b41ce83c3004131418c94c700102d000bc36008047f017e017f027e077f017e057f047e230041e0026b22012400200141e0006a41186a4200370300200141e0006a41106a22024200370300200141e0006a41086a220342003703002001420037036041ecf7c300ad4280808080f00184100c22042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102320032006290300370300200120012903c00237036041fbf7c300ad4280808080d00184100c220429000021052006200441086a290000370300200120053703c00220041023200220012903c0022205370300200141a0026a41086a2003290300370300200141a0026a41106a2005370300200141a0026a41186a2006290300370300200120012903603703a002200141203602cc012001200141a0026a3602c801200141c0026a200141a0026aad2207428080808080048422081010108b010240024020012802c00222030d004102210620014102360294020c010b20012802c40221092001200628020022063602d401200120033602d0010240024020064104490d002001200341046a3602d00120012006417c6a22043602d40120044104490d002003280000210a2001200641786a3602d4012001200341086a3602d0012003280004210b200141e0006a200141d0016a1084042001280260220c450d0020012902642105410021060240024020012802d401220d0d000c010b2001200d417f6a220e3602d401200120012802d001220f41016a3602d0010240200f2d00004101460d000c010b200e4104490d002001200d417b6a3602d4012001200f41056a3602d001200f2800012104410121060b20012004360298022001200537028c022001200c360288022001200b360284022001200a360280020c010b200141003602e801200142013703e0012001410a3602d4022001200141c8016a3602d0022001200141e0016a3602dc01200141f4006a41013602002001420137026420014180c5c6003602602001200141d0026a360270200141dc016a4184a5c200200141e0006a10311a20013502e80142208620013502e00184100a024020012802e401450d0020012802e00110230b410221060b20012006360294022009450d00200310230b200141e0006a41106a220320014180026a41106a2209280200360200200141e0006a41086a220a20014180026a41086a220b29030037030020012001290380023703600240024002400240024002400240024020064102460d00200141e0016a41106a20032802002203360200200141e0016a41086a200a29030022103703002001200129036022053703e00120092003360200200b201037030020014198026a20043602002001200537038002200120063602940202402005a722032000470d00410121030240024020064101460d002001280284022106200141a0026a20014180026a41086a108504200141f0006a2006360200200141ec006a200141a0026a41086a280200360200200120012903a00237026441002103200141e0006a21060c010b2001280284022106200141a0026a20014180026a41086a108504200141f4006a2006360200200141e0006a41086a20012903a002370300200141f0006a200141a0026a41086a28020036020020012004360264200141e0006a21060b20062003360200200610f70320012802800221030b024020012802840220036a2000470d00200120014188026a220d3602642001410036026020014190026a28020041286c4105722206417f4c0d02200610212203450d03200341013a0000200120063602a402200120033602a002200141013602a80220012802880221062001280290022203200141a0026a10610240024020030d0020012802a802210320012802a002210b0c010b2006200341286c6a210c20012802a402210920012802a8022103034002400240200920036b4120490d00200341206a210420012802a002210b2009210a0c010b200341206a22042003490d072009410174220a2004200a20044b1b220a4100480d070240024020090d000240200a0d004101210b0c020b200a1021220b0d010c0d0b20012802a002210b2009200a460d00200b2009200a1025220b450d0c0b2001200a3602a4022001200b3602a0020b200b20036a22032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a290000370000200120043602a802200641206a290300210502400240200a20046b4108490d00200441086a2103200a21090c010b200441086a22032004490d07200a41017422092003200920034b1b22094100480d0702400240200a0d00024020090d004101210b0c020b20091021220b450d0d0c010b200a2009460d00200b200a20091025220b450d0c0b200120093602a4022001200b3602a0020b200b20046a2005370000200120033602a802200c200641286a2206470d000b0b20012802a402210641eeebc300ad4280808080c002842003ad422086200bad84100e02402006450d00200b10230b02402001280260450d00200141e8006a2802002206450d00200641286c450d00200128026410230b200141e0006a41086a2206200d290000370300200141e0006a41106a2204200d41086a28000036020020014100360264200141063a0060200141e0006a10e001200141e0006a41186a220a420037030020044200370300200642003703002001420037036041ecf7c300ad4280808080f00184100c22092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102320062003290300370300200120012903c00237036041fbf7c300ad4280808080d00184100c220929000021052003200941086a290000370300200120053703c00220091023200220012903c002370000200241086a2003290300370000200141a0026a41086a2006290300370300200141a0026a41106a2004290300370300200141a0026a41186a200a290300370300200120012903603703a002200810110c010b2001418c026a2802002206450d00200641286c450d0020012802880210230b200141e0006a41186a22094200370300200141e0006a41106a220a4200370300200141e0006a41086a220342003703002001420037036041ecf7c300ad4280808080f00184100c22042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102320032006290300370300200120012903c0023703604188f8c300ad4280808080d00084100c220429000021052006200441086a290000370300200120053703c00220041023200220012903c002370000200241086a2006290300370000200141a0026a41086a2003290300370300200141a0026a41106a200a290300370300200141a0026a41186a2009290300370300200120012903603703a002200141203602c4022001200141a0026a3602c002200141e0016a20081010108b0120012802e0012206450d0520012802e4012104024002400240200141e0016a41086a2802002209450d0020062d0000220a41034b0d0041002103024002400240200a0e0405000102050b2009417f6a4108490d0220062900012105410121030c040b410221030c020b2009417f6a4108490d0020062900012105410321030c020b200141003602880220014201370380022001410a3602d4022001200141c0026a3602d002200120014180026a3602d001200141f4006a41013602002001420137026420014180c5c6003602602001200141d0026a360270200141d0016a4184a5c200200141e0006a10311a20013502880242208620013502800284100a0240200128028402450d0020012802800210230b410421030b0b02402004450d00200610230b2003417f6a220641024b0d0520060e03040503040b1032000b1033000b102c000b2005422088a7210602402005a722032000470d002001410436026020012006360264200141e0006a10f7030b200620036a2000470d012001410036028002200141e0006a41186a22094200370300200141e0006a41106a220a4200370300200141e0006a41086a220342003703002001420037036041ecf7c300ad4280808080f00184100c22042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102320032006290300370300200120012903c0023703604188f8c300ad4280808080d00084100c220429000021052006200441086a290000370300200120053703c00220041023200220012903c002370000200241086a2006290300370000200141a0026a41086a2003290300370300200141a0026a41106a200a290300370300200141a0026a41186a2009290300370300200120012903603703a002200141e0006a20014180026a1086042008200135026842208620012802602206ad84100e02402001280264450d00200610230b20014102360264200141063a0060200141e0006a10e0010c010b2005422088a7210602402005a722032000470d002001410336026020012006360264200141e0006a10f7030b200620036a2000470d002001410236028002200141e0006a41186a22094200370300200141e0006a41106a220a4200370300200141e0006a41086a220342003703002001420037036041ecf7c300ad4280808080f00184100c22042900002105200141c0026a41086a2206200441086a290000370300200120053703c0022004102320032006290300370300200120012903c0023703604188f8c300ad4280808080d00084100c220429000021052006200441086a290000370300200120053703c00220041023200220012903c002370000200241086a2006290300370000200141a0026a41086a2003290300370300200141a0026a41106a200a290300370300200141a0026a41186a2009290300370300200120012903603703a002200141e0006a20014180026a1086042008200135026842208620012802602206ad84100e02402001280264450d00200610230b20014101360264200141063a0060200141e0006a10e0010b200141e0006a41186a22044200370300200141e0006a41106a220d4200370300200141e0006a41086a220342003703002001420037036041fee2c200ad4280808080f001842205100c2209290000210820014180026a41086a2206200941086a29000037030020012008370380022009102320032006290300370300200120012903800237036041e1e6c200ad4280808080e00084100c220929000021082006200941086a290000370300200120083703800220091023200d2001290380022208370300200141a0026a41086a220a2003290300370300200141a0026a41106a220b2008370300200141a0026a41186a220c2006290300370300200120012903603703a002200141d8006a200141a0026a412010cd01200128025c210f0240200128025822024101470d002007428080808080048410110b20044200370300200d420037030020034200370300200142003703602005100c220929000021052006200941086a29000037030020012005370380022009102320032006290300370300200120012903800237036041f4bdc500ad4280808080b00184100c220929000021052006200941086a290000370300200120053703800220091023200d200129038002370000200d41086a2006290300370000200a2003290300370300200b200d290300370300200c2004290300370300200120012903603703a00202400240200141a0026a108103220641ff01714102460d0020064101710d010b41041021220a450d01200a4100360200200141e0006a41186a22044200370300200141e0006a41106a22094200370300200141e0006a41086a220342003703002001420037036041fee2c200ad4280808080f001842205100c220b290000210820014180026a41086a2206200b41086a2900003703002001200837038002200b102320032006290300370300200120012903800237036041a0e3c200ad4280808080b00184100c220b29000021082006200b41086a2900003703002001200837038002200b1023200d200129038002370000200d41086a220b2006290300370000200141a0026a41086a220c2003290300370300200141a0026a41106a22002009290300370300200141a0026a41186a220e2004290300370300200120012903603703a002200141203602642001200141a0026a360260200a4101200141e0006a10f603200a102341041021220a450d01200a4100360200200442003703002009420037030020034200370300200142003703602005100c221129000021082006201141086a29000037030020012008370380022011102320032006290300370300200120012903800237036041e7e6c200ad4280808080c00184100c221129000021082006201141086a290000370300200120083703800220111023200d200129038002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903603703a002200141203602642001200141a0026a360260200a4101200141e0006a10f603200a1023200442003703002009420037030020034200370300200142003703602005100c220a29000021082006200a41086a2900003703002001200837038002200a102320032006290300370300200120012903800237036041f3e6c200ad4280808080e00084100c220a29000021082006200a41086a2900003703002001200837038002200a1023200d200129038002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903603703a00220014100360260200742808080808004842208200141e0006aad22104280808080c00084100e200442003703002009420037030020034200370300200142003703602005100c220a29000021052006200a41086a2900003703002001200537038002200a102320032006290300370300200120012903800237036041f4bdc500ad4280808080b00184100c220a29000021052006200a41086a2900003703002001200537038002200a1023200d200129038002370000200b2006290300370000200c200329030037030020002009290300370300200e2004290300370300200120012903603703a002200141013a00602008201042808080801084100e0b200141e0006a41186a4200370300200141e0006a41106a22124200370300200141e0006a41086a220642003703002001420037036041fee2c200ad4280808080f00184100c220329000021052006200341086a290000370300200120053703602003102341a0e3c200ad4280808080b00184100c2203290000210520014180026a41086a2204200341086a29000037030020012005370380022003102320122001290380022205370300200141a0026a41086a2006290300370300200141a0026a41106a2005370300200141a0026a41186a2004290300370300200120012903603703a002200141e0006a200141a0026a10ed03024002402001280260220e0d0041002113200141003602c802200142043703c0024104210e410021110c010b2001200129026422053702c4022001200e3602c0022005422088a721112005a721130b200141e0006a41186a22094200370300200141e0006a41106a220a4200370300200141e0006a41086a220342003703002001420037036041fee2c200ad4280808080f00184100c2204290000210520014180026a41086a2206200441086a29000037030020012005370380022004102320032006290300370300200120012903800237036041e7e6c200ad4280808080c00184100c220429000021052006200441086a290000370300200120053703800220041023200d200129038002370000200d41086a2006290300370000200141a0026a41086a2003290300370300200141a0026a41106a200a290300370300200141a0026a41186a2009290300370300200120012903603703a002200141e0006a200141a0026a10ed03024002402001280260220a0d0041002114200141003602e801200142043703e0014104210a4100210c0c010b2001200129026422053702e4012001200a3602e0012005422088a7210c2005a721140b0240024002400240024020020d002011450d012011410274200e6a417c6a280200210f0b201141002011419c7f6a22062006201141016a4b1b2215490d01200141003602c8022015450d03200e20154102746a2100200e210203402002280200210b02400240024002400240200c41014b0d0041002106200c0e020201020b41002106200c2103034020062003410176220420066a2209200b200a20094102746a280200491b2106200320046b220341014b0d000b0b200b200a200641027422036a2802002204460d022006200b20044b6a21060c010b410021060b2001200636026041b0e7c200412e200141e0006a41e0e7c20041f0e7c2001034000b200c20064d0d03200a20036a2203200341046a2006417f73200c6a41027410a2051a2001200c417f6a220c3602e801200241046a22022000470d000c040b0b41f9e6c200412641a0e7c200104f000b20152011103c000b2006200c103b000b410021064100210b0240201120156b2203450d0002402015450d00200e200e20154102746a200341027410a2051a0b200120033602c8022003210b0b024002400240200c41014b0d00200c0e020201020b41002106200c2103034020062003410176220420066a2209200f200a20094102746a280200491b2106200320046b220341014b0d000b0b0240200f200a20064102746a2802002203460d002006200f20034b6a21060b200c20064f0d002006200c1038000b0240200c2014470d00200141e0016a20144101107920012802e001210a0b200a20064102746a220341046a2003200c20066b41027410a2051a2003200f3602002001200c41016a22033602e8010240200b2013470d00200141c0026a20134101107920012802c002210e20012802c802210b0b200e200b4102746a200f3602002001200b41016a220b3602c80202400240024002400240024002402003450d00200341017621062003410171450d01200320064d0d03200a20064102746a28020021000c020b4180e8c20041c300418c94c700102d000b200320064d0d0220032006417f6a22044d0d03200a20044102746a280200200a20064102746a2802006a41017621000b20012802c4022102200141e0006a41186a22094200370300200141e0006a41106a220a4200370300200141e0006a41086a220442003703002001420037036041fee2c200ad4280808080f001842205100c220c290000210820014180026a41086a2206200c41086a2900003703002001200837038002200c102320042006290300370300200120012903800237036041a0e3c200ad4280808080b00184100c220c29000021082006200c41086a2900003703002001200837038002200c1023200d200129038002370000200d41086a220f2006290300370000200141a0026a41086a22112004290300370300200141a0026a41106a2215200a290300370300200141a0026a41186a22132009290300370300200120012903603703a002200141203602642001200141a0026a360260200e200b200141e0006a10f6030240200241ffffffff0371450d00200e10230b20012802e401210e20012802e001210220094200370300200a420037030020044200370300200142003703602005100c220c29000021052006200c41086a2900003703002001200537038002200c102320042006290300370300200120012903800237036041e7e6c200ad4280808080c00184100c220c29000021052006200c41086a2900003703002001200537038002200c1023200d200129038002370000200f2006290300370000201120042903003703002015200a29030037030020132009290300370300200120012903603703a002200141203602642001200141a0026a36026020022003200141e0006a10f6030240200e41ffffffff0371450d00200210230b200141e0006a41186a22094200370300200141e0006a41106a22044200370300200141e0006a41086a220342003703002001420037036041fee2c200ad4280808080f00184100c220a290000210520014180026a41086a2206200a41086a2900003703002001200537038002200a102320032006290300370300200120012903800237036041f3e6c200ad4280808080e00084100c220a29000021052006200a41086a2900003703002001200537038002200a1023200d200129038002370000200d41086a2006290300370000200141a0026a41086a220a2003290300370300200141a0026a41106a220c2004290300370300200141a0026a41186a22022009290300370300200120012903603703a0022001200036026020074280808080800484200141e0006aad22084280808080c00084100e0240200b41e500470d002009420037030020044200370300200342003703002001420037036041e4dec400ad4280808080e00084100c220b29000021052003200b41086a29000037030020012005370360200b102341f3dec400ad4280808080e00084100c220b29000021052006200b41086a2900003703002001200537038002200b10232012200129038002370000201241086a2006290300370000200a2003290300370300200c200429030037030020022009290300370300200120012903603703a002200141d0006a200141a0026a412010cd010b20094200370300200442003703002003420037030020014200370360418fcdc200ad4280808080f000842210100c220929000021052006200941086a29000037030020012005370380022009102320032006290300370300200120012903800237036041b8dbc100ad42808080809001842216100c220929000021052006200941086a29000037030020012005370380022009102320042001290380022205370300200a2003290300370300200c200537030020022006290300370300200120012903603703a002200141e0006a200141a0026a10ba01024002402001290360427f7c4201560d00200141a0026a21020c010b20042903002117200141e0006a41186a220a4200370300200141e0006a41106a22094200370300200141e0006a41086a220642003703002001420037036041b494c700ad4280808080900184100c220329000021052006200341086a290000370300200120053703602003102341bd94c700ad42808080803084100c220b290000210520014180026a41086a2203200b41086a2900003703002001200537038002200b102320092001290380022205370300200141a0026a41086a220c2006290300370300200141a0026a41106a22022005370300200141a0026a41186a22002003290300370300200120012903603703a002200141c0006a200141a0026a10fa02200141306a2001290348420020012802401b221842e807802219420042e807420010a605200a42003703002009420037030020064200370300200142003703602010100c220b29000021052003200b41086a2900003703002001200537038002200b10232006200329030037030020012001290380023703602016100c220b29000021052003200b41086a2900003703002001200537038002200b10232004200129038002370000200441086a2003290300370000200c2006290300370300200220092903003703002000200a290300370300200120012903603703a00220012903302105200141306a41086a2903002110410410212206450d05200620173e000020064104410810252206450d05200641013a000420064108411010252206450d0520062005201820194298787e7c42ff07837c2216427f20102016200554ad7c501b370005200742808080808004842006ad4280808080d00184100e20061023200141a0026a21020b200141e0006a41186a22094200370300200141e0006a41106a22044200370300200141e0006a41086a220342003703002001420037036041fea6c600ad4280808080a001842205100c220629000021102003200641086a29000037030020012010370360200610234188a7c600ad4280808080e00084100c220a290000211020014180026a41086a2206200a41086a2900003703002001201037038002200a102320042001290380022210370300200141a0026a41086a220a2003290300370300200141a0026a41106a220b2010370300200141a0026a41186a220c2006290300370300200120012903603703a0022002ad428080808080048422101011200942003703002004420037030020034200370300200142003703602005100c220229000021052003200241086a29000037030020012005370360200210234198bdc600ad4280808080c00184100c220229000021052006200241086a29000037030020012005370380022002102320042001290380022205370300200a2003290300370300200b2005370300200c2006290300370300200120012903603703a002201010112009420037030020044200370300200342003703002001420037036041c599c500ad4280808080a00284100c220229000021052006200241086a29000037030020012005370380022002102320032006290300370300200120012903800237036041b09ac500ad4280808080900284100c220229000021052006200241086a29000037030020012005370380022002102320042001290380022205370300200a2003290300370300200b2005370300200c2006290300370300200120012903603703a002200141206a200141a0026a10fa02200129032821102001280220210b20014180026a41186a420037030020014180026a41106a220c420037030020064200370300200142003703800241e4dec400ad4280808080e00084100c220a29000021052006200a41086a2900003703002001200537038002200a102341e8ffc400ad4280808080b00284100c220a2900002105200141c0026a41086a2202200a41086a290000370300200120053703c002200a1023200c20012903c00222053703002003200629030037030020042005370300200920022903003703002001200129038002370360200141186a200141e0006a412010cd01200141086a200128021c410020012802181b22064180e59af70020064180e59af7004b22031b4180e59af700200620031b6bad220542002005420010a605200542a8c30180211620104200200b1b210542092001290308221042808090bbbad6adf00d7f20012903102010423f87521b211002400240200641ffe49af7004b0d0042ffffffffffffffffff00428080808080808080807f2005201620107d22167d22104200531b20102005427f5522062016427f554720062010427f5547711b22054280ec94a37c20054280ec94a37c551b21050c010b42ffffffffffffffffff00428080808080808080807f2005201620107c22167c22104200531b20102005427f5522062016427f554620062010427f5547711b21050b200141e0006a41186a220a4200370300200141e0006a41106a22094200370300200141e0006a41086a220642003703002001420037036041c599c500ad4280808080a00284100c220b290000211020014180026a41086a2203200b41086a2900003703002001201037038002200b102320062003290300370300200120012903800237036041b09ac500ad4280808080900284100c220b29000021102003200b41086a2900003703002001201037038002200b10232004200129038002370000200441086a2003290300370000200141a0026a41086a220b2006290300370300200141a0026a41106a220c2009290300370300200141a0026a41186a2202200a290300370300200120012903603703a0022001200537036020074280808080800484220520084280808080800184100e200a420037030020094200370300200642003703002001420037036041b494c700ad4280808080900184100c220429000021102006200441086a290000370300200120103703602004102341a89ec700ad4280808080900184100c220429000021102003200441086a29000037030020012010370380022004102320092001290380022210370300200b2006290300370300200c201037030020022003290300370300200120012903603703a002200141a0026a108103220641ff01714102460d03200510112006410171450d03200141e0006a41186a4200370300200141e0006a41106a22064200370300200141e0006a41086a220442003703002001420037036041a7b3c500ad4280808080c00084100c22092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102320042003290300370300200120012903c00237036041f4bdc500ad4280808080b00184100c220929000021052003200941086a290000370300200120053703c00220091023200620012903c0022205370300200141a0026a41086a2004290300370300200141a0026a41106a2005370300200141a0026a41186a2003290300370300200120012903603703a002200141e0006a200141a0026a108704024020012d006022034102460d00200742808080808004841011200141e0016a41086a200141e9006a290000370300200141e0016a41106a200141f1006a290000370300200141e0016a41186a200141f9006a290000370300200120012900613703e0010240200341037122034103460d0020030e03010001010b20014180026a41186a200141e0016a41186a29030037030020014180026a41106a200141e0016a41106a29030037030020014180026a41086a200141e0016a41086a290300370300200120012903e00137038002200141e0006a41186a220a4200370300200141e0006a41106a220b4200370300200141e0006a41086a220442003703002001420037036041a7b3c500ad4280808080c00084100c22092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102320042003290300370300200120012903c00237036041e0bcc500ad4280808080c00184100c220929000021052003200941086a290000370300200120053703c00220091023200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200b290300370300200141a0026a41186a200a290300370300200120012903603703a0022001200141a0026a412010cd0141002109200141e0006a2001280204410020012802001b220a108804200141a0026a2001280260220b20012802681089040240024020012802a00222040d00200141003602d802200142013703d00241012104410021030c010b200120012902a40222053702d402200120043602d0022005422088a721032005a721090b02402001280264450d00200b10230b024002402003418002490d00412010212203450d072003200129038002370000200341186a20014180026a41186a290300370000200341106a20014180026a41106a290300370000200341086a20014180026a41086a290300370000200141e0006a200a41016a220a10880420012802602104200120012802683602a402200120043602a00220034101200141a0026a109c0202402001280264450d00200410230b20031023200141e0006a41186a220b4200370300200141e0006a41106a220c4200370300200141e0006a41086a220442003703002001420037036041a7b3c500ad4280808080c00084100c22092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102320042003290300370300200120012903c00237036041e0bcc500ad4280808080c00184100c220929000021052003200941086a290000370300200120053703c00220091023200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200c290300370300200141a0026a41186a200b290300370300200120012903603703a0022001200a3602602007428080808080048420084280808080c00084100e200141d0026a21030c010b200141e0006a41186a220b20014180026a41186a290300370300200141e0006a41106a220c20014180026a41106a290300370300200141e0006a41086a220220014180026a41086a2903003703002001200129038002370360024020032009470d00200141d0026a20094101109a0120012802d002210420012802d80221030b200420034105746a22092001290360370000200941186a200b290300370000200941106a200c290300370000200941086a20022903003700002001200341016a22093602d802200141e0006a200a10880420012802602103200120012802683602a402200120033602a00220042009200141a0026a109c0202402001280264450d00200310230b200141d0026a21030b200341046a28020041ffffff3f71450d00200328020010230b200141e0006a41186a220a4200370300200141e0006a41106a220b4200370300200141e0006a41086a220442003703002001420037036041a7b3c500ad4280808080c00084100c22092900002105200141c0026a41086a2203200941086a290000370300200120053703c0022009102320042003290300370300200120012903c00237036041abb3c500ad4280808080800184100c220929000021052003200941086a290000370300200120053703c00220091023200620012903c002370000200641086a2003290300370000200141a0026a41086a2004290300370300200141a0026a41106a200b290300370300200141a0026a41186a200a290300370300200120012903603703a002200742808080808004841011200141e0026a24000f0b2006200341c4e8c2001030000b2006200341d4e8c2001030000b2004200341e4e8c2001030000b41e093c700412b418c94c700102d000b102a000ba383020c047f017e017f017e037f017e097f017e1f7f047e067f027e230041800d6b2201240010ea030240024002400240024002400240024002400240024020004101460d00200141e8036a41186a4200370300200141e8036a41106a22024200370300200141e8036a41086a22034200370300200142003703e80341a7b3c500ad4280808080c00084100c220429000021052003200441086a290000370300200120053703e8032004102341a4bbc500ad4280808080b00184100c22042900002105200141d8076a41086a2206200441086a290000370300200120053703d80720041023200220012903d8072205370300200141c8036a41086a2003290300370300200141c8036a41106a2005370300200141c8036a41186a2006290300370300200120012903e8033703c803200141b8036a200141c8036a10fa02420020012903c003420020012802b8031b220510eb037d220720072005561b42d804540d00200141c00b6a41186a22084200370300200141c00b6a41106a22094200370300200141c00b6a41086a22034200370300200142003703c00b41db97c700ad4280808080f000842205100c220a290000210720014198066a41086a2204200a41086a2900003703002001200737039806200a10232003200429030037030020012001290398063703c00b41bcbcc300ad4280808080c001842207100c220a290000210b2004200a41086a2900003703002001200b37039806200a10232009200129039806220b370300200141a00a6a41086a220c2003290300370300200141a00a6a41106a220d200b370300200141a00a6a41186a220e2004290300370300200120012903c00b3703a00a200141b0036a200141a00a6a412010cd0120012802b403210f20012802b0032110200842003703002009420037030020034200370300200142003703c00b2005100c220a290000210b2004200a41086a2900003703002001200b37039806200a10232003200429030037030020012001290398063703c00b41d0bcc300ad4280808080d00184100c220a290000210b2004200a41086a2900003703002001200b37039806200a10232009200129039806220b370300200c2003290300370300200d200b370300200e2004290300370300200120012903c00b3703a00a200141a00a6a1081032111200842003703002009420037030020034200370300200142003703c00b2005100c220a290000210b2003200a41086a2900003703002001200b3703c00b200a10232007100c220a29000021072006200a41086a290000370300200120073703d807200a1023200920012903d80722073703002004200329030037030020014198066a41106a220a200737030020014198066a41186a220c2006290300370300200120012903c00b37039806200141a8036a20014198066a412010cd0120012802ac03211220012802a8032113200842003703002009420037030020034200370300200142003703c00b4180cdc200ad4280808080800184100c220d29000021072003200d41086a290000370300200120073703c00b200d102341d7a1c200ad4280808080c00084100c220d29000021072006200d41086a290000370300200120073703d807200d1023200920012903d807220737030020042003290300370300200a2007370300200c2006290300370300200120012903c00b37039806200141c00b6a20014198066a10ad0220012802c00b211420012902c40b2115200842003703002009420037030020034200370300200142003703c00b2005100c220829000021052003200841086a290000370300200120053703c00b2008102341bbacc300ad4280808080a00184100c220829000021052006200841086a290000370300200120053703d80720081023200920012903d807220537030020042003290300370300200a2005370300200c2006290300370300200120012903c00b37039806200141c00b6a20014198066a412010890220012802c00b2203410120031b211620012902c40b420020031b2205a721170240024002402005422088a72203450d002016200341057422186a2119200141dc056a211a200141c00b6a41206a210d20014190056a410472210a200141e8046a410472210441002108410221030340200141b8046a41186a201620086a220641186a220c290000370300200141b8046a41106a200641106a220e290000370300200141b8046a41086a200641086a221b290000370300200120062900003703b80420042006290000370000200441086a201b290000370000200441106a200e290000370000200441186a200c29000037000020012003417e6a220e3602e8044100210c0240200e200410ac020d0020014190056a41206a200141e8046a41206a28020036020020014190056a41186a200141e8046a41186a29030037030020014190056a41106a200141e8046a41106a29030037030020014190056a41086a200141e8046a41086a290300370300200120012903e80437039005200141c8036a41186a220c200a41186a221b290200370300200141c8036a41106a221c200a41106a221d290200370300200141c8036a41086a221e200a41086a221f2902003703002001200a2902003703c803200141c00b6a41186a220e201b290000370300200141c00b6a41106a221b201d290000370300200141c00b6a41086a221d201f2900003703002001200a2900003703c00b200141b8056a200141c00b6a108f02200141e8036a41186a221f200c290300370300200141e8036a41106a2220201c290300370300200141e8036a41086a221c201e290300370300200120012903c8033703e80320012802d805220c450d00200d20012903b805370300200d41186a200141b8056a41186a290300370300200d41106a200141b8056a41106a290300370300200d41086a200141b8056a41086a290300370300200e201f290300370300201b2020290300370300201d201c290300370300200141d8046a41086a221c201a41086a280200360200200120012903e8033703c00b2001201a2902003703d804200141a00a6a41386a221e200141c00b6a41386a290300370300200141a00a6a41306a221f200141c00b6a41306a290300370300200141a00a6a41286a2220200141c00b6a41286a290300370300200141a00a6a41206a2221200d290300370300200141a00a6a41186a2222200e290300370300200141a00a6a41106a220e201b290300370300200141a00a6a41086a221b201d290300370300200120012903c00b3703a00a20014198066a41386a201e29030037030020014198066a41306a201f29030037030020014198066a41286a202029030037030020014198066a41206a202129030037030020014198066a41186a202229030037030020014198066a41106a200e29030037030020014198066a41086a201b290300370300200120012903a00a3703980620014188066a41086a201c280200360200200120012903d804370388060b200141d8076a41086a20014198066a41086a290300370300200141d8076a41106a20014198066a41106a290300370300200141d8076a41186a20014198066a41186a290300370300200141d8076a41206a20014198066a41206a290300370300200141d8076a41286a20014198066a41286a290300370300200141d8076a41306a20014198066a41306a290300370300200141d8076a41386a20014198066a41386a290300370300200141f8056a41086a20014188066a41086a28020036020020012001290398063703d80720012001290388063703f805200c0d02200341016a21032018200841206a2208470d000b0b20014100360290042001420837038804201741ffffff3f71450d01201610230c010b20014180096a41386a2204200141d8076a41386a29030037030020014180096a41306a220a200141d8076a41306a29030037030020014180096a41286a220e200141d8076a41286a29030037030020014180096a41206a221b200141d8076a41206a29030037030020014180096a41186a221d200141d8076a41186a29030037030020014180096a41106a221c200141d8076a41106a29030037030020014180096a41086a221e200141d8076a41086a290300370300200141a8046a41086a221f200141f8056a41086a280200360200200120012903d80737038009200120012903f8053703a804200141e8056a41086a2220201f280200360200200120012903a8043703e805200141c00b6a41086a221f201e290300370300200141c00b6a41106a221e201c290300370300200141c00b6a41186a221c201d290300370300200141c00b6a41206a221a201b290300370300200141c00b6a41286a221b200e290300370300200141c00b6a41306a220e200a290300370300200141c00b6a41386a220a200429030037030020012001290380093703c00b20014198066a41086a22042020280200360200200120012903e8053703980641d0001021221d450d07201d20012903c00b370300201d200c360240201d200129039806370244201d41386a200a290300370300201d41306a200e290300370300201d41286a201b290300370300201d41206a201a290300370300201d41186a201c290300370300201d41106a201e290300370300201d41086a201f290300370300201d41cc006a2004280200360200200142818080801037029c042001201d360298040240201841606a2008460d00200641206a2104201820086b41606a211b200141dc056a211a20014190056a410472210a200141e8046a41047221060340200141b8046a41186a200441186a2208290000370300200141b8046a41106a200441106a220c290000370300200141b8046a41086a200441086a220e290000370300200120042900003703b80420042900002105200641186a200829000037000020062005370000200641086a200e290000370000200641106a200c29000037000020012003417f6a220c3602e804410021080240200c200610ac020d0020014190056a41206a200141e8046a41206a28020036020020014190056a41186a200141e8046a41186a29030037030020014190056a41106a200141e8046a41106a29030037030020014190056a41086a200141e8046a41086a290300370300200120012903e80437039005200141c8036a41186a2208200a41186a220e290200370300200141c8036a41106a221c200a41106a2218290200370300200141c8036a41086a221e200a41086a221f2902003703002001200a2902003703c803200141c00b6a41186a220c200e290000370300200141c00b6a41106a220e2018290000370300200141c00b6a41086a2218201f2900003703002001200a2900003703c00b200141b8056a200141c00b6a108f02200141e8036a41186a221f2008290300370300200141e8036a41106a2220201c290300370300200141e8036a41086a221c201e290300370300200120012903c8033703e80320012802d8052208450d00200d20012903b805370300200d41186a200141b8056a41186a290300370300200d41106a200141b8056a41106a290300370300200d41086a200141b8056a41086a290300370300200c201f290300370300200e20202903003703002018201c290300370300200141d8046a41086a221c201a41086a280200360200200120012903e8033703c00b2001201a2902003703d804200141a00a6a41386a221e200141c00b6a41386a290300370300200141a00a6a41306a221f200141c00b6a41306a290300370300200141a00a6a41286a2220200141c00b6a41286a290300370300200141a00a6a41206a2221200141c00b6a41206a290300370300200141a00a6a41186a2222200c290300370300200141a00a6a41106a220c200e290300370300200141a00a6a41086a220e2018290300370300200120012903c00b3703a00a20014198066a41386a201e29030037030020014198066a41306a201f29030037030020014198066a41286a202029030037030020014198066a41206a202129030037030020014198066a41186a202229030037030020014198066a41106a200c29030037030020014198066a41086a200e290300370300200120012903a00a3703980620014188066a41086a201c280200360200200120012903d804370388060b200141d8076a41086a20014198066a41086a290300370300200141d8076a41106a20014198066a41106a290300370300200141d8076a41186a20014198066a41186a290300370300200141d8076a41206a20014198066a41206a290300370300200141d8076a41286a20014198066a41286a290300370300200141d8076a41306a20014198066a41306a290300370300200141d8076a41386a20014198066a41386a290300370300200141f8056a41086a20014188066a41086a28020036020020012001290398063703d80720012001290388063703f805024020080d00200441206a2104200341016a2103201b41606a221b0d010c020b0b20014180096a41386a2223200141d8076a41386a221f29030037030020014180096a41306a2224200141d8076a41306a222029030037030020014180096a41286a2225200141d8076a41286a221a29030037030020014180096a41206a2226200141d8076a41206a222129030037030020014180096a41186a2227200141d8076a41186a222229030037030020014180096a41106a2228200141d8076a41106a222929030037030020014180096a41086a222a200141d8076a41086a222b290300370300200141a8046a41086a222c200141f8056a41086a222d280200360200200120012903d80737038009200120012903f8053703a804200141e8056a41086a222e202c280200360200200120012903a8043703e805200441206a2104200141dc056a212f20014190056a410472210a200141e8046a41047221064101210c410121300340200141c00b6a41086a2218202a290300370300200141c00b6a41106a221c2028290300370300200141c00b6a41186a221e2027290300370300200141c00b6a41206a22312026290300370300200141c00b6a41286a22322025290300370300200141c00b6a41306a22332024290300370300200141c00b6a41386a2234202329030037030020012001290380093703c00b20014198066a41086a221b202e280200360200200120012903e8053703980602402030200c470d0020014198046a200c410110b401200128029804211d0b201d203041d0006c6a220c20012903c00b370300201c2903002105201e29030021072031290300210b20322903002135203329030021362034290300213720182903002138200c2008360240200c41086a2038370300200c200129039806370244200c41cc006a201b280200360200200c41386a2037370300200c41306a2036370300200c41286a2035370300200c41206a200b370300200c41186a2007370300200c41106a20053703002001203041016a22303602a00420042019460d010340200141b8046a41186a200441186a2208290000370300200141b8046a41106a200441106a220c290000370300200141b8046a41086a200441086a220e290000370300200120042900003703b804200120033602e804200e2900002105200c29000021072004290000210b200641186a2008290000370000200641106a2007370000200641086a20053700002006200b3700004100210802402003200610ac020d0020014190056a41206a200141e8046a41206a28020036020020014190056a41186a200141e8046a41186a29030037030020014190056a41106a200141e8046a41106a29030037030020014190056a41086a200141e8046a41086a290300370300200120012903e80437039005200141c8036a41186a2208200a41186a220c290200370300200141c8036a41106a220e200a41106a2239290200370300200141c8036a41086a223a200a41086a223b2902003703002001200a2902003703c803201e200c290000370300201c20392900003703002018203b2900003703002001200a2900003703c00b200141b8056a200141c00b6a108f02200141e8036a41186a220c2008290300370300200141e8036a41106a2239200e290300370300200141e8036a41086a220e203a290300370300200120012903c8033703e80320012802d8052208450d00200d20012903b805370300200d41186a200141b8056a41186a290300370300200d41106a200141b8056a41106a290300370300200d41086a200141b8056a41086a290300370300201e200c290300370300201c20392903003703002018200e290300370300200141d8046a41086a220c202f41086a280200360200200120012903e8033703c00b2001202f2902003703d804200141a00a6a41386a220e2034290300370300200141a00a6a41306a22392033290300370300200141a00a6a41286a223a2032290300370300200141a00a6a41206a223b2031290300370300200141a00a6a41186a223c201e290300370300200141a00a6a41106a223d201c290300370300200141a00a6a41086a223e2018290300370300200120012903c00b3703a00a20014198066a41386a200e29030037030020014198066a41306a203929030037030020014198066a41286a203a29030037030020014198066a41206a203b29030037030020014198066a41186a203c29030037030020014198066a41106a203d290300370300201b203e290300370300200120012903a00a3703980620014188066a41086a200c280200360200200120012903d804370388060b202b201b290300370300202920014198066a41106a290300370300202220014198066a41186a290300370300202120014198066a41206a290300370300201a20014198066a41286a290300370300202020014198066a41306a290300370300201f20014198066a41386a290300370300202d20014188066a41086a28020036020020012001290398063703d80720012001290388063703f805024020080d00200341016a21032019200441206a2204470d010c030b0b2023201f290300370300202420202903003703002025201a290300370300202620212903003703002027202229030037030020282029290300370300202a202b290300370300202c202d280200360200200120012903d80737038009200120012903f8053703a804202e202c280200360200200120012903a8043703e805200441206a2104200341016a2103200128029c04210c0c000b0b0240201741ffffff3f71450d00201610230b20014188046a41086a20014198046a41086a2802003602002001200129039804370388040b200141c00b6a41186a22084200370300200141c00b6a41106a220a4200370300200141c00b6a41086a22034200370300200142003703c00b41db97c700ad4280808080f00084100c220429000021052003200441086a290000370300200120053703c00b2004102341bcbcc300ad4280808080c00184100c22042900002105200141d8076a41086a2206200441086a290000370300200120053703d80720041023200920012903d807370000200941086a200629030037000020014198066a41086a200329030037030020014198066a41106a200a29030037030020014198066a41186a2008290300370300200120012903c00b37039806200141a0036a20014198066a412010cd0120012802a403210420012802a00321084180cdc200ad4280808080800184100c22032900002105200141a00a6a41086a200341086a290000370300200120053703a00a2003102341d4bec200ad4280808080a00284100c220329000021052006200341086a290000370300200120053703d8072003102320012004410020081b3602b8052001200141b8056aad22054280808080c00084100d22032900003703800920031023200141cc0b6a200141bc056a360200200141003a00d00b200120014180096a41086a220d3602c40b2001200141b8056a3602c80b200120014180096a3602c00b20014198066a200141c00b6a106520012802a006220a41206a2204417f4c0d01200128029806210c0240024002402004450d00200410212203450d092004410f4d0d01200421060c020b200441017422034110200341104b1b2206102122030d010c0c0b200441017422064110200641104b1b22064100480d0a20042006460d0020032004200610252203450d0b0b200320012903a00a370000200341086a200141a00a6a41086a2903003700000240024020064170714110460d00200621080c010b200641017422084120200841204b1b22084100480d0a20062008460d0020032006200810252203450d0b0b200320012903d807370010200341186a200141d8076a41086a2903003700000240200841606a200a4f0d00200a415f4b0d0a200841017422062004200620044b1b22064100480d0a20082006460d0020032008200610252203450d0b0b200341206a200c200a10a1051a0240200128029c06450d00200c10230b2004ad4220862003ad84101220031023200141c00b6a41186a22084200370300200141c00b6a41106a220a4200370300200141c00b6a41086a22034200370300200142003703c00b41db97c700ad4280808080f00084100c220429000021072003200441086a290000370300200120073703c00b2004102341bcbcc300ad4280808080c00184100c22042900002107200141d8076a41086a2206200441086a290000370300200120073703d80720041023200920012903d807370000200941086a200629030037000020014198066a41086a200329030037030020014198066a41106a200a29030037030020014198066a41186a2008290300370300200120012903c00b3703980620014198036a20014198066a412010cd01200128029c03210420012802980321084180cdc200ad4280808080800184100c22032900002107200141a00a6a41086a200341086a290000370300200120073703a00a2003102341b4a5c200ad4280808080e00184100c220329000021072006200341086a290000370300200120073703d8072003102320012004410020081b3602b805200120054280808080c00084100d22032900003703800920031023200141cc0b6a200141bc056a360200200141003a00d00b2001200d3602c40b2001200141b8056a3602c80b200120014180096a3602c00b20014198066a200141c00b6a106520012802a006220a41206a2204417f4c0d01200128029806210c0240024002402004450d00200410212203450d092004410f4d0d01200421060c020b200441017422034110200341104b1b220610212203450d0c0c010b200441017422064110200641104b1b22064100480d0a20042006460d0020032004200610252203450d0b0b200320012903a00a370000200341086a200141a00a6a41086a2903003700000240024020064170714110460d00200621080c010b200641017422084120200841204b1b22084100480d0a20062008460d0020032006200810252203450d0b0b200320012903d807370010200341186a200141d8076a41086a2903003700000240200841606a200a4f0d00200a415f4b0d0a200841017422062004200620044b1b22064100480d0a20082006460d0020032008200610252203450d0b0b200341206a200c200a10a1051a0240200128029c06450d00200c10230b2015420020141b21052004ad4220862003ad841012200310230240024002400240024002400240200128029004450d00200141c00b6a20014188046a10ec03200141a3066a200141c00b6a41086a280200360000200120012903c00b37009b06200141073a00c00b200141cc0b6a20014198066a41076a290000370000200141023a00c40b20012001290098063700c50b200141c00b6a10e001200141a0056a20014188046a41086a28020036020020012005422088a722393602940520012012410020131b220a36029005200120012903880437039805200141e8056a20014190056a41086a10ec032001410036029006200142013703880620012802e805212b20012802ec05212d20012802f0052106410410212203450d0d2003200a36000020014284808080c0003702dc07200120033602d807200141c00b6a41b599c50010b60320014198066a20012802c00b220420012802c80b10b703200129029c06420020012802980622031b21072003410120031b2108024020012802c40b450d00200410230b200120074220883e029c062001200836029806200141c00b6a20014198066a10b803200141c00b6a41086a280200210420012802c40b210c20012802c00b2103200141c00b6a41b599c500200141d8076a10b90320014198066a20012802c00b220e20012802c80b1089022004410020031b210d200c410020031b210c200129029c06420020012802980622041b210b2003410420031b21032004410120041b2121024020012802c40b450d00200e10230b200141a0096a200d3602002001419c096a200c36020020014190096a200b37030020014180096a41086a200141d8076a41086a280200360200200120012903d8073703800920012003360298092001202136028c0902402007a7450d00200810230b2006450d01200b422088a7211b20014198096a211920014180096a410c6a2129202b200641d0006c6a2116200141c00b6a41d0006a211a200141c00b6a410c6a211d200141d8076a41c4006a211841002122202b210c0340200141c00b6a41386a2204200c220341386a290300370300200141c00b6a41306a2206200341306a290300370300200141c00b6a41286a2208200341286a290300370300200141c00b6a41206a220d200341206a290300370300200141c00b6a41186a220e200341186a290300370300200141c00b6a41106a221c200341106a290300370300200141c00b6a41086a221e200341086a290300370300200141d8046a41086a221f200341cc006a280200360200200120032903003703c00b2001200341c4006a2902003703d804200341d0006a210c200341c0006a2802002203450d03200141a00a6a41386a22202004290300370300200141a00a6a41306a22042006290300370300200141a00a6a41286a22062008290300370300200141a00a6a41206a2208200d290300370300200141a00a6a41186a220d200e290300370300200141a00a6a41106a220e201c290300370300200141a00a6a41086a221c201e290300370300200141a8046a41086a221e201f280200360200200120012903c00b3703a00a200120012903d8043703a804200141d8076a41386a2020290300370300200141d8076a41306a2004290300370300200141d8076a41286a2006290300370300200141d8076a41206a2008290300370300200141d8076a41186a200d290300370300200141d8076a41106a200e290300370300200141d8076a41086a201c290300370300200120012903a00a3703d8072001200336029808201820012903a804370200201841086a201e280200360200410410212203450d0e2003200a360000201d41002900b59945370000201d41086a41002900bd994537000020014284808080c0003702c40b200120033602c00b2001200141d8076a3602dc0b200141b8056a200141c00b6a10ba0320031023200141c00b6a200141b8056a10bb0320014190036a20012802c00b220420012802c80b419ca8c70041004100108c012001280290032103024020012802c40b450d00200410230b024002400240024020034101460d0020014198066a200141d8076a41d00010a1051a200141e8046a20014188066a108e02200141c00b6a20014198066a41d00010a1051a201a41086a200141e8046a41086a280200360200201a20012903e80437020020014198066a200141b8056a10bb032001280298062103200120012802a0063602ec04200120033602e804200141c00b6a200141e8046a10bc030240200128029c06450d00200310230b024020012802840c2203450d00200341306c450d0020012802800c10230b024020012802940c41ffffff3f71450d0020012802900c10230b200141b8046a41186a221c200141b8056a41186a290300370300200141b8046a41106a221e200141b8056a41106a290300370300200141b8046a41086a221f200141b8056a41086a290300370300200120012903b8053703b804200128029809210d41002103024020012802a009220e41014b0d000240200e0e020003000b200141c8036a41186a201c290300370300200141c8036a41106a201e290300370300200141c8036a41086a201f290300370300200120012903b8043703c803410021030c030b200e2104034020032004410176220620036a2208200d200841246c6a280200200a4b1b2103200420066b220441014b0d000c020b0b200128029c082203450d02200341306c450d0220012802980810230c020b0240200d200341246c6a2802002204200a460d0020032004200a496a21030b200141c8036a41186a201c290300370300200141c8036a41106a201e290300370300200141c8036a41086a201f290300370300200120012903b8043703c803200e20034f0d002003200e1038000b0240200e200128029c09470d002019200e410110a201200128029409211b200128029809210d0b200d200341246c6a220441246a2004200e20036b41246c10a2051a2004200a360200200420012903c8033702042004410c6a200141c8036a41086a290300370200200441146a200141c8036a41106a2903003702002004411c6a200141c8036a41186a2903003702002001200e41016a3602a009200141e8036a41186a2204201c290300370300200141e8036a41106a2206201e290300370300200141e8036a41086a2208201f290300370300200120012903b8043703e8030240201b200128029009470d002029201b4101109a01200128029409211b0b200128028c092221201b4105746a220320012903e803370000200341186a2004290300370000200341106a2006290300370000200341086a2008290300370000410121222001201b41016a221b360294090b200c2016470d000b2016210c0c020b200141013a00c40b200141073a00c00b200141c00b6a10e001200128028c042203450d05200341d0006c450d0520012802880410230c050b202d450d01202d41d0006c450d01202b10230c010b02402016200c460d000340200c220341d0006a210c0240200341c4006a2802002204450d00200441306c450d00200341c0006a28020010230b2016200c470d000b0b0240202d450d00202d41d0006c450d00202b10230b2022410171450d00200141f8056a20212021201b4105746a10bd03200141c00b6a41206a20014180096a41206a2802002203360200200141c00b6a41186a20014180096a41186a2903002207370300200141c00b6a41106a20014180096a41106a290300370300200141c00b6a41086a20014180096a41086a29030037030020012001290380093703c00b200141d8076a2007a72206200310be0320014198066a41b599c50010b6032001280298062103200120012802a0063602a40a200120033602a00a20012802d807220420012802e007200141a00a6a10c8020240200128029c06450d00200310230b024020012802dc07450d00200410230b20014198066a41b599c500200141c00b6a10b9032001280298062103200120012802a0063602dc07200120033602d80720012802cc0b2204200141d40b6a280200200141d8076a10bf030240200128029c06450d00200310230b024020012802c40b450d0020012802c00b10230b0240200141d00b6a28020041ffffff3f71450d00200410230b0240200141dc0b6a2802002203450d00200341246c450d00200610230b20012802f805220c0d010c020b200141003602f8050240200128028409450d0020012802800910230b024020012802900941ffffff3f71450d00202110230b200128029c092203450d01200341246c450d0120012802980910230c010b20012802fc05210e41002106024002402039410a6e417f7320014180066a28020022086a220420084b0d0020394101203941014b1b2203418094ebdc036e220620032006418094ebdc036c476a22064101200641014b1b220620034b0d0120012003200441036c220420032004491b20066ead428094ebdc037e200320066ead8042ffffffff0f834280bbb0217e428094ebdc0380a722033602c00b2001418094ebdc033602c40b200141c00b6a2003418094ebdc034b4102746a28020021060b200141003602c80b200142043703c00b200141c00b6a41002008107920012802c00b210d20012802c80b211b0240024020080d0020012802c40b2104200c4100200d201b200a10c00321060c010b200d201b4102746a210320082104034020032006360200200341046a21032004417f6a22040d000b20012802c40b2104200c2008200d201b20086a200a10c00321060b410410212203450d092003200a360000200141c80b6a4284808080c000370300200141d00b6a41002900b59945370300200141d80b6a41002900bd9945370300200141e00b6a20063a0000200120033602c40b200141043a00c00b200141c00b6a10e0010240200441ffffffff0371450d00200d10230b02402008450d00200841e0006c2104200c41d4006a210303400240200341706a2802002206450d00200641306c450d002003416c6a28020010230b0240200328020041ffffff3f71450d002003417c6a28020010230b200341e0006a2103200441a07f6a22040d000b0b0240200e450d00200e41e0006c450d00200c10230b20012802980521080240200141a0056a2802002203450d00200341d0006c2104200841c4006a21030340024020032802002206450d00200641306c450d002003417c6a28020010230b200341d0006a2103200441b07f6a22040d000b0b2001419c056a2802002203450d02200341d0006c450d02200810230c020b41f0a6c700411941f4aac700102d000b20012802980521080240200141a0056a2802002203450d00200341d0006c2104200841c4006a21030340024020032802002206450d00200641306c450d002003417c6a28020010230b200341d0006a2103200441b07f6a22040d000b0b02402001419c056a2802002203450d00200341d0006c450d00200810230b4193bbc000ad4280808080c00184100a4184bbc000ad4280808080f00184100a0b0240200542ffffff3f83500d002014410120141b10230b200f410020101b210c200141b8046a41186a4200370300200141b8046a41106a22064200370300200141b8046a41086a22034200370300200142003703b804418fcdc200ad4280808080f00084100c220429000021052003200441086a290000370300200120053703b8042004102341b8dbc100ad4280808080900184100c22042900002105200141d8076a41086a220e200441086a290000370300200120053703d80720041023200620012903d8072205370300200141c00b6a41086a22082003290300370300200141c00b6a41106a220a2005370300200141c00b6a41186a220d200e290300370300200120012903b8043703c00b20014198066a200141c00b6a10ba01024020012903980622054202510d0020012903a0062107200141c00b6a20014198066a41106a280200220e41016a10c20120014188036a20012802c00b220420012802c80b10cd01200128028c0321062001280288032103024020012802c40b450d00200410230b20034101470d002006200c41016a470d0020054201520d00200141e8036a41186a22044200370300200141e8036a41106a22064200370300200141e8036a41086a22034200370300200142003703e80341b494c700ad4280808080900184100c221b29000021052003201b41086a290000370300200120053703e803201b102341bd94c700ad42808080803084100c22162900002105200141d8076a41086a221b201641086a290000370300200120053703d80720161023200220012903d807370000200241086a221d201b290300370000200141c8036a41086a22182003290300370300200141c8036a41106a221c2006290300370300200141c8036a41186a221e2004290300370300200120012903e8033703c803200141f8026a200141c8036a10fa02200141d0026a200129038003420020012802f8021b220542e80780220b420042e807420010a605200141c00b6a200e10ca01200141e0026a20012802c00b221f20012802c80b10d70120012903d00222152005200b4298787e7c42ff07837c2205427f200141d0026a41086a2903002005201554ad7c501b20077d2135200141e0026a41106a290300420020012802e00222161b210520012903e802420020161b2115024020012802c40b450d00201f10230b200442003703002006420037030020034200370300200142003703e80341bdadc500ad4280808080800184100c221629000021072003201641086a290000370300200120073703e8032016102341c5adc500ad4280808080d00184100c22162900002107201b201641086a290000370300200120073703d80720161023200220012903d807370000201d201b29030037000020182003290300370300201c2006290300370300201e2004290300370300200120012903e8033703c803200141b8026a200141c8036a412010d701200141a8026a20012903c002420020012802b80222031b2207200141b8026a41106a290300420020031b220b428094ebdc03420010a70520014198026a20012903a8022237200141a8026a41086a29030022384280ec94a37c427f10a605200b200520152007562005200b562005200b511b22031b21052007201520031b211520012903980220077c21362035428086ebc7f5002035428086ebc7f500541b42058842ffffffff0f83428094ebdc037e4298ac9fd60380213f4100210441d87d210302400240034020014188026a2037203820034180cdc2006a3502002207420010a60520042015200129038802220b200720367e2207428094ebdc03802235a7417f2007428080808080c0b2cd3b541b200720354280ec94a37c7e7c4280cab5ee01566aad7c22075a200520014188026a41086a2903002007200b54ad7c220b5a2005200b5122061b6a210420152007542005200b5420061b0d01200341086a22030d000b200141f8016a2037203842e8aafa0b420010a60520014180026a29030020012903f8012207203642e8aafa0b7e2205428094ebdc0380220ba7417f2005428080808080c0b2cd3b541b2005200b4280ec94a37c7e7c4280cab5ee01566aad7c2205200754ad7c21070c010b02402004417f6a220320044d0d00200141f8006a2037203842c0f0f50b420010a60520014180016a2903002001290378220720364228802205a7417f203642c0f0f50b7e220b428080808080c0b2cd3b541b200b20054280ec94a37c7e7c4280cab5ee01566aad7c2205200754ad7c21070c010b02400240200341244b0d00200141e8016a203720382003410374220641d8cac2006a280200221bad2207420010a605200141c8016a201520012903e801220b200720367e2207428094ebdc03802235a7417f2007428080808080c0b2cd3b541b200720354280ec94a37c7e7c4280cab5ee01566aad7c220720152007562005200141e8016a41086a2903002007200b54ad7c220b562005200b511b22031b22352007201520031b22077d22152005200b20031b200b200520031b7d2035200754ad7d41002004410374221641d8cac2006a2802002204201b6b221b201b20044b1b22044101200441014b1bad2205420010a705200141b8016a20012903c8012207200141c8016a41086a29030022352005420010a605200141d8016a20372038200641dccac2006a2802002204ad2240420010a60520014188016a20354200201641dccac2006a28020022062004200620044b221b1b20042006201b1b6bad220b420010a605200141a8016a20074200200b420010a60520014198016a420042002007420010a605427f427f200141a8016a41086a29030022072001290388012001290398017c7c223520012903900120012903a00184420052203520075472221b1b2235427f20012903a801201b1b2207201520012903b8017d200b7e2005807c2205200754221bad7c220b201b200b203554200520075a1b221b1b2115427f2005201b1b210b200141d8016a41086a29030020012903d8012235204020367e2205428094ebdc03802207a7417f2005428080808080c0b2cd3b541b200520074280ec94a37c7e7c4280cab5ee01566aad7c2207203554ad7c2105200620044d2003730d014200200520157d2007200b54ad7d22152007200b7d220b200756201520055620152005511b22031b21074200200b20031b21050c020b2003412541f8f6c3001030000b427f200520157c2007200b7c220b2007542203ad7c22072003200720055420072005511b22031b2107427f200b20031b21050b200141e8006a20052007428094ebdc03420010a705200141d8006a20012903682207200141e8006a41086a290300220b4280ec94a37c427f10a605200141c8006a2007200b203f420010a60520014198066a200e10cb01200128029806210320013502a006210720012001290348220b203f200520012903587c7e2205428094ebdc03802215a7417f2005428080808080c0b2cd3b541b200520154280ec94a37c7e7c4280cab5ee01566aad7c22053703c00b2001200141c8006a41086a2903002005200b54ad7c3703c80b20074220862003ad84200141c00b6aad4280808080800284100e200128029c06450d00200310230b200d4200370300200a420037030020084200370300200142003703c00b41db97c700ad4280808080f00084100c2204290000210520014198066a41086a2203200441086a2900003703002001200537039806200410232008200329030037030020012001290398063703c00b41f8afc300ad4280808080a00184100c220429000021052003200441086a2900003703002001200537039806200410232009200129039806370000200941086a2003290300370000200141a00a6a41086a2008290300370300200141a00a6a41106a200a290300370300200141a00a6a41186a200d290300370300200120012903c00b3703a00a200141203602ec042001200141a00a6a3602e804200141b8056a200141a00a6aad428080808080048422151010108b010240024020012802b805220a0d00410021080c010b20012802bc05210d2001200141c0056a280200360294052001200a36029005200141c0006a20014190056a1088010240024020012802400d002001280244220e200128029405220641c0016e22032003200e4b1bad42c0017e2205422088a70d042005a72203417f4c0d040240024020030d00410121080c010b200310212208450d0a0b200141003602880920012008360280092001200341c0016e360284090240200e450d00200141c00b6a41206a211d200141d8076a4101722118410021164100211b0240034041002103200141003a00f807201b41016a211b02400340200141003a00b80420062003460d01200141d8076a20036a20012802900522042d00003a00002001200441016a360290052001200341016a22043a00f8072004210320044120470d000b200141e8036a41086a2203200141d8076a41086a290300370300200141e8036a41106a221c200141d8076a41106a290300370300200141e8036a41186a221e200141d8076a41186a290300370300200120012903d8073703e8032001200620046b36029405200141d8076a20014190056a10e50220012d00d8074101460d02200141c00b6a41186a201e290300370300200141c00b6a41106a201c290300370300200141c00b6a41086a2003290300370300200120012903e8033703c00b201d201841a00110a1051a20014198066a200141c00b6a41c00110a1051a02402016200128028409470d0020014180096a2016410110b101200128028009210820012802880921160b2008201641c0016c6a20014198066a41c00110a1051a2001201641016a221636028809201b200e460d0320012802940521060c010b0b2001410036029405200341ff0171450d00200141003a00f8070b02402001280284092203450d00200341c0016c450d00200810230b0c010b200129028409210520080d010b41002108200141003602a00620014201370398062001410a3602dc072001200141e8046a3602d807200120014198066a36028009200141d40b6a4101360200200142013702c40b20014180c5c6003602c00b2001200141d8076a3602d00b20014180096a4184a5c200200141c00b6a10311a20013502a00642208620013502980684100a200128029c06450d0020012802980610230b200d450d00200a10230b2011201141ff0171410247712121200141003602c80b200142013703c00b200141c00b6a41002005420020081b2236422088a7222241c0016c220e41c0016e109a012008410120081b211c20012802c80b210620012802c00b212002402022450d00202020064105746a2103200e2108201c2104034020032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200641016a2106200341206a2103200441c0016a2104200841c07e6a22080d000b0b20012802c40b212d200141c00b6a41186a220a4200370300200141c00b6a41106a22084200370300200141c00b6a41086a22044200370300200142003703c00b41db97c700ad4280808080f000842205100c220d290000210720014198066a41086a2203200d41086a2900003703002001200737039806200d10232004200329030037030020012001290398063703c00b41bbacc300ad4280808080a00184100c220d29000021072003200d41086a2900003703002001200737039806200d10232009200129039806370000200941086a220d2003290300370000200141a00a6a41086a221b2004290300370300200141a00a6a41106a22162008290300370300200141a00a6a41186a221d200a290300370300200120012903c00b3703a00a200141203602c40b2001200141a00a6a3602c00b20202006200141c00b6a109c0202402021450d00200a42003703002008420037030020044200370300200142003703c00b2005100c220629000021072003200641086a2900003703002001200737039806200610232004200329030037030020012001290398063703c00b41c0bdc300ad4280808080a00284100c220629000021072003200641086a2900003703002001200737039806200610232009200129039806370000200d2003290300370000201b200429030037030020162008290300370300201d200a290300370300200120012903c00b3703a00a200141c00b6a200141a00a6a10ed0320012802c00b2206450d002015101120012902c40b42ffffffff0383500d00200610230b200a42003703002008420037030020044200370300200142003703c00b2005100c220629000021052003200641086a2900003703002001200537039806200610232004200329030037030020012001290398063703c00b41bcbcc300ad4280808080c00184100c220629000021052003200641086a2900003703002001200537039806200610232009200129039806370000200d2003290300370000201b200429030037030020162008290300370300201d200a290300370300200120012903c00b3703a00a2001200c41016a221a3602c00b2015200141c00b6aad22374280808080c00084100e200141e8036a41186a22064200370300200141e8036a41106a220a4200370300200141e8036a41086a22034200370300200142003703e803418fcdc200ad4280808080f00084100c220429000021052003200441086a290000370300200120053703e8032004102341b8dbc100ad4280808080900184100c22042900002105200141d8076a41086a220d200441086a290000370300200120053703d80720041023200220012903d807370000200241086a200d290300370000200141c8036a41086a2003290300370300200141c8036a41106a200a290300370300200141c8036a41186a2006290300370300200120012903e8033703c803200141c00b6a200141c8036a10ba01200141c00b6a4100200828020041016a20012903c00b4202511b10c201200141386a20012802c00b220620012802c80b10cd01200128023c210420012802382103024020012802c40b450d00200610230b024020034101470d0002402004201a460d002004201a4f0d0141d9c1c000ad4280808080800684100a0b201a10e3010b200141e8036a41186a22084200370300200141e8036a41106a220a4200370300200141e8036a41086a22044200370300200142003703e803418fcdc200ad4280808080f00084100c22062900002105200141d8076a41086a2203200641086a290000370300200120053703d8072006102320042003290300370300200120012903d8073703e803418cdbc100ad4280808080a00184100c220629000021052003200641086a290000370300200120053703d80720061023200220012903d807370000200241086a2003290300370000200141c8036a41086a2004290300370300200141c8036a41106a200a290300370300200141c8036a41186a2008290300370300200120012903e8033703c803200141306a200141c8036a412010cd01200c41026a21030240024020012802304101460d00200141b8046a200310cc010c010b200141c00b6a200128023410c201200141286a20012802c00b220620012802c80b10cd01200128022c210a20012802282104024020012802c40b450d00200610230b024020040d00419fcfc000ad4280808080e00684100a4100210a0b200141e8036a41186a220c4200370300200141e8036a41106a220d4200370300200141e8036a41086a22064200370300200142003703e803418fcdc200ad4280808080f00084100c22082900002105200141d8076a41086a2204200841086a290000370300200120053703d8072008102320062004290300370300200120012903d8073703e80341fcdec100ad4280808080800184100c220829000021052004200841086a290000370300200120053703d80720081023200220012903d807370000200241086a2004290300370000200141c8036a41086a2006290300370300200141c8036a41106a200d290300370300200141c8036a41186a200c290300370300200120012903e8033703c80341002003200a6b2204200420034b1b21060240024002404100200141c8036a10f0012204200441ff01714104461b41ff0171220441034b0d00024020040e0400020103000b200641064f0d020b0240200641016a4106490d00200141e8036a41186a22084200370300200141e8036a41106a220a4200370300200141e8036a41086a22044200370300200142003703e803418fcdc200ad4280808080f00084100c22062900002105200141d8076a41086a2203200641086a290000370300200120053703d8072006102320042003290300370300200120012903d8073703e8034194e5c100ad4280808080d00284100c220629000021052003200641086a290000370300200120053703d80720061023200220012903d807370000200241086a2003290300370000200141c8036a41086a2004290300370300200141c8036a41106a200a290300370300200141c8036a41186a2008290300370300200120012903e8033703c803200141013a00b804200141c8036aad4280808080800484200141b8046aad42808080801084100e0b200141003602b8040c020b200141e8036a41186a220a4200370300200141e8036a41106a220c4200370300200141e8036a41086a22064200370300200142003703e803418fcdc200ad4280808080f00084100c22082900002105200141d8076a41086a2204200841086a290000370300200120053703d8072008102320062004290300370300200120012903d8073703e80341fcdec100ad4280808080800184100c220829000021052004200841086a290000370300200120053703d80720081023200220012903d807370000200241086a2004290300370000200141c8036a41086a2006290300370300200141c8036a41106a200c290300370300200141c8036a41186a200a290300370300200120012903e8033703c803200141c8036aad428080808080048410110b200141e8036a41186a220a4200370300200141e8036a41106a220c4200370300200141e8036a41086a22064200370300200142003703e803418fcdc200ad4280808080f00084100c22082900002105200141d8076a41086a2204200841086a290000370300200120053703d8072008102320062004290300370300200120012903d8073703e8034194e5c100ad4280808080d00284100c220829000021052004200841086a290000370300200120053703d80720081023200220012903d807370000200241086a2004290300370000200141c8036a41086a2006290300370300200141c8036a41106a200c290300370300200141c8036a41186a200a290300370300200120012903e8033703c803200141003a00b804200141c8036aad4280808080800484200141b8046aad42808080801084100e200141b8046a200310cc010b201c200e6a21030240024020012802b80422190d00200141c00b6a41186a4200370300200141c00b6a41106a22084200370300200141c00b6a41086a22044200370300200142003703c00b41db97c700ad4280808080f00084100c220629000021052004200641086a290000370300200120053703c00b2006102341bbacc300ad4280808080a00184100c22062900002105200141d8076a41086a220a200641086a290000370300200120053703d80720061023200820012903d807220537030020014198066a41086a200429030037030020014198066a41106a200537030020014198066a41186a200a290300370300200120012903c00b37039806200141c00b6a20014198066a412010890220012902c40b420020012802c00b22041b21352004410120041b212b410021020c010b4101210220012902bc0421352019212b0b200120023a008806200120033602cc032001201c3602c8032001200141c8036a3602ec03200120014188066a3602e803200141003602f004200142013703e804200141e8046a41002035422088a72203410574220641057510b10120012802f004211820012802e804211e02402003450d00201e201841c0016c6a21082018200641606a4105766a213920014198066a4101722116200141c00b6a41206a211d20014180096a4180016a211420014180096a41e0006a212920014180096a41c0006a211f20014180096a41206a2118202b21030340200341086a2900002105200341106a29000021072003290000210b200141b8056a41186a220a200341186a290000370300200141b8056a41106a220c2007370300200141b8056a41086a220d20053703002001200b3703b80520014190056a200141b8056a10860320014198066a200128029005221b20012802980510870320012d009806210e200141d8076a201641a00110a1051a410021040240200e4101470d00200141a00a6a200141d8076a41a00110a1051a410121040b0240200128029405450d00201b10230b0240024020040d0020014180096a410041a00110a0051a0c010b20014180096a200141a00a6a41a00110a1051a0b024020012802e8032d00000d0020012802ec03220e2802002204200e280204460d00200e200441c0016a3602000240024020014180096a200441206a220e460d00200e20014180096a412010a3050d010b02402018200441c0006a220e460d00200e2018412010a3050d010b0240201f200441e0006a220e460d00200e201f412010a3050d010b0240202920044180016a220e460d00200e2029412010a3050d010b2014200441a0016a2204460d0120042014412010a305450d010b20012802e80341013a00000b200341206a2103200141c00b6a41186a200a290300370300200141c00b6a41106a200c290300370300200141c00b6a41086a200d290300370300200120012903b8053703c00b201d20014180096a41a00110a1051a2008200141c00b6a41c00110a10541c0016a2108200641606a22060d000b203941016a21180b200120183602f0040240203542ffffff3f83500d00202b10230b2018ad42c0017e2205422088a70d012005a72203417f4c0d0120012802ec04211f20012d008806212b0240024020030d00410121040c010b200310212204450d070b200141003602a00620012004360298062001200341c0016e36029c0620014198066a4100201810b10120012802a006210d0240024020180d0020012802980621160c010b201e201841c0016c6a211b2001280298062216200d41c0016c6a210e200141c00b6a41a0016a2104200141c00b6a4180016a2106200141c00b6a41e0006a2108200141c00b6a41c0006a210a200141c00b6a41206a210c201e21030340200141c00b6a41186a200341186a290000370300200141c00b6a41106a200341106a290000370300200141c00b6a41086a200341086a290000370300200120032900003703c00b200c41186a200341386a290000370000200c41106a200341306a290000370000200c41086a200341286a290000370000200c200341206a290000370000200a200341c0006a290000370000200a41086a200341c8006a290000370000200a41106a200341d0006a290000370000200a41186a200341d8006a2900003700002008200341e0006a290000370000200841086a200341e8006a290000370000200841106a200341f0006a290000370000200841186a200341f8006a290000370000200620034180016a290000370000200641086a20034188016a290000370000200641106a20034190016a290000370000200641186a20034198016a2900003700002004200341a0016a290000370000200441086a200341a8016a290000370000200441186a200341b8016a290000370000200441106a200341b0016a290000370000200d41016a210d200e200141c00b6a41c00110a10541c0016a210e200341c0016a2203201b470d000b0b200128029c062129200141c00b6a41186a22084200370300200141c00b6a41106a220a4200370300200141c00b6a41086a22044200370300200142003703c00b41db97c700ad4280808080f00084100c2206290000210520014198066a41086a2203200641086a2900003703002001200537039806200610232004200329030037030020012001290398063703c00b41f8afc300ad4280808080a00184100c220629000021052003200641086a2900003703002001200537039806200610232009200129039806370000200941086a2003290300370000200141a00a6a41086a2004290300370300200141a00a6a41106a200a290300370300200141a00a6a41186a2008290300370300200120012903c00b3703a00a200d41c0016c4104722203417f4c0d01200310212204450d06200141003602c80b200120033602c40b200120043602c00b200d200141c00b6a106102400240200d0d0020012802c80b210320012802c40b210d20012802c00b21040c010b2016200d41c0016c6a211d410020012802c80b220c6b210820012802c40b210d410021060340200c20066a210a02400240200d20086a4120490d0020012802c00b2104200d210e0c010b200a41206a2203200a490d0c200d41017422042003200420034b1b220e4100480d0c02400240200d0d000240200e0d00410121040c020b200e10212204450d0f0c010b20012802c00b2104200d200e460d002004200d200e10252204450d0e0b2001200e3602c40b200120043602c00b0b2004200c6a20066a220d201620066a2203290000370000200d41186a200341186a290000370000200d41106a200341106a290000370000200d41086a200341086a2900003700002001200a41206a220d3602c80b02400240200e20086a41606a411f4d0d00200e210d0c010b200d41206a221b200d490d0c200e410174220d201b200d201b4b1b220d4100480d0c02400240200e0d000240200d0d00410121040c020b200d10212204450d0f0c010b200e200d460d002004200e200d10252204450d0e0b2001200d3602c40b200120043602c00b0b2004200c6a20066a220e41206a200341206a290000370000200e41386a200341386a290000370000200e41306a200341306a290000370000200e41286a200341286a2900003700002001200a41c0006a220e3602c80b02400240200d20086a41406a411f4d0d00200d210e0c010b200e41206a221b200e490d0c200d410174220e201b200e201b4b1b220e4100480d0c02400240200d0d000240200e0d00410121040c020b200e10212204450d0f0c010b200d200e460d002004200d200e10252204450d0e0b2001200e3602c40b200120043602c00b0b2004200c6a20066a220d41c0006a200341c0006a290000370000200d41d8006a200341d8006a290000370000200d41d0006a200341d0006a290000370000200d41c8006a200341c8006a2900003700002001200a41e0006a220d3602c80b02400240200e20086a41a07f6a411f4d0d00200e210d0c010b200d41206a221b200d490d0c200e410174220d201b200d201b4b1b220d4100480d0c02400240200e0d000240200d0d00410121040c020b200d10212204450d0f0c010b200e200d460d002004200e200d10252204450d0e0b2001200d3602c40b200120043602c00b0b2004200c6a20066a220e41e0006a200341e0006a290000370000200e41f8006a200341f8006a290000370000200e41f0006a200341f0006a290000370000200e41e8006a200341e8006a2900003700002001200a4180016a220e3602c80b02400240200d20086a41807f6a411f4d0d00200d210e0c010b200e41206a221b200e490d0c200d410174220e201b200e201b4b1b220e4100480d0c02400240200d0d000240200e0d00410121040c020b200e10212204450d0f0c010b200d200e460d002004200d200e10252204450d0e0b2001200e3602c40b200120043602c00b0b2004200c6a20066a220d4180016a20034180016a290000370000200d4198016a20034198016a290000370000200d4190016a20034190016a290000370000200d4188016a20034188016a2900003700002001200a41a0016a220d3602c80b02400240200e20086a41e07e6a411f4d0d00200e210d0c010b200d41206a221b200d490d0c200e410174220d201b200d201b4b1b220d4100480d0c02400240200e0d000240200d0d00410121040c020b200d10212204450d0f0c010b200e200d460d002004200e200d10252204450d0e0b2001200d3602c40b200120043602c00b0b2004200c6a20066a220e41a0016a200341a0016a290000370000200e41b8016a200341b8016a290000370000200e41b0016a200341b0016a290000370000200e41a8016a200341a8016a2900003700002001200a41c0016a3602c80b200841c07e6a2108200641c0016a2106200341c0016a201d470d000b200c20066a21030b20152003ad4220862004ad84100e0240200d450d00200410230b02402029450d00202941c0016c450d00201610230b200141c00b6a41186a22084200370300200141c00b6a41106a220a4200370300200141c00b6a41086a22044200370300200142003703c00b41db97c700ad4280808080f00084100c2206290000210520014198066a41086a2203200641086a2900003703002001200537039806200610232004200329030037030020012001290398063703c00b41d0bcc300ad4280808080d00184100c220629000021052003200641086a2900003703002001200537039806200610232009200129039806370000200941086a2003290300370000200141a00a6a41086a2004290300370300200141a00a6a41106a200a290300370300200141a00a6a41186a2008290300370300200120012903c00b3703a00a2001202b3a00c00b2015203742808080801084100e2001201a3602c40b200141053a00c00b200141c00b6a10e0012021201c2022201e201810ee030240201f450d00201f41c0016c450d00201e10230b02402002201945720d0020012802bc0441ffffff3f71450d00201910230b0240202d41ffffff3f71450d00202010230b2036a72203450d00200341c0016c450d00201c10230b200141c00b6a41186a221a4200370300200141c00b6a41106a221b4200370300200141c00b6a41086a220e4200370300200142003703c00b418fcdc200ad4280808080f00084220b100c22032900002105200e200341086a290000370300200120053703c00b2003102341ccc5c000ad42808080809002842215100c22032900002105200141d8076a41086a2209200341086a290000370300200120053703d80720031023201b20012903d807220537030020014198066a41086a2221200e29030037030020014198066a41106a2222200537030020014198066a41186a22192009290300370300200120012903c00b37039806200141206a20014198066a1088022001280220417d710d04201a4200370300201b4200370300200e4200370300200142003703c00b4189e3c400ad42808080808001842236100c22032900002105200e200341086a290000370300200120053703c00b200310234193e4c400ad42808080808002842237100c220329000021052009200341086a290000370300200120053703d80720031023201b20012903d807370000201b41086a20092903003700002021200e2903003703002022201b2903003703002019201a290300370300200120012903c00b37039806200141c00b6a20014198066a10ef03200120012802c00b2203410420031b22293602a00a20012902c40b420020031b2235422088a7220d450d0341002104202921034100210603400240024002402003280200200341086a22082802002003410c6a280200200341146a280200200341186a220a280200108702450d0020040d01410021040c020b200441016a21040c010b200620046b220c200d4f0d03200141c00b6a41186a22162003200441646c6a220c41186a221d280200360200200141c00b6a41106a2218200c41106a221c290200370300200141c00b6a41086a221e200c41086a221f2902003703002001200c2902003703c00b20082902002105200341106a22202902002107200a2802002102200c2003290200370200201d2002360200201c2007370200201f2005370200200a2016280200360200202020182903003702002008201e290300370200200320012903c00b3702000b2003411c6a2103200d200641016a2206460d030c000b0b1032000b200c200d4184d9c4001030000b2004450d00200d2004490d002029200d20046b220d411c6c6a200410f003203542ffffffff0f8321350b20012802a00a2103200141c00b6a41186a4200370300200141c00b6a41106a22084200370300200141c00b6a41086a22044200370300200142003703c00b2036100c220629000021052004200641086a290000370300200120053703c00b200610232037100c22062900002105200141d8076a41086a220a200641086a290000370300200120053703d80720061023200820012903d807220537030020014198066a41086a200429030037030020014198066a41106a200537030020014198066a41186a200a290300370300200120012903c00b37039806024020030d0020014198066aad428080808080048410110c010b2035a72104200141c00b6a2003200d10f10320014198066aad428080808080048420013502c80b42208620012802c00b2206ad84100e024020012802c40b450d00200610230b2003200d10f0032004450d002004411c6c450d00200310230b201a4200370300201b4200370300200e4200370300200142003703c00b200b100c22032900002105200141a00a6a41086a2204200341086a290000370300200120053703a00a20031023200e2004290300370300200120012903a00a3703c00b2015100c220329000021052009200341086a290000370300200120053703d80720031023201b20012903d80722053703002021200e2903003703002022200537030020192009290300370300200120012903c00b37039806200141186a20014198066a10880202402001280218417d710d00200141c00b6a41186a22064200370300200141c00b6a41106a22084200370300200141c00b6a41086a22034200370300200142003703c00b418fcdc200ad4280808080f00084100c22042900002105200141a00a6a41086a220a200441086a290000370300200120053703a00a200410232003200a290300370300200120012903a00a3703c00b4194e5c100ad4280808080d00284100c22042900002105200141d8076a41086a220a200441086a290000370300200120053703d80720041023201b20012903d807370000201b41086a200a29030037000020014198066a41086a200329030037030020014198066a41106a200829030037030020014198066a41186a2006290300370300200120012903c00b3703980620014198066a108103220341ff01714102460d002003410171450d0010eb03210520014198066a41186a420037030020014198066a41106a2206420037030020014198066a41086a22034200370300200142003703980641a7b3c500ad4280808080c00084100c220429000021072003200441086a29000037030020012007370398062004102341a4bbc500ad4280808080b00184100c22042900002107200141a00a6a41086a2208200441086a290000370300200120073703a00a20041023200620012903a00a2207370300200141d8076a41086a2003290300370300200141d8076a41106a2007370300200141d8076a41186a200829030037030020012001290398063703d807200141086a200141d8076a10fa02427f200542d8047c220720072005541b22052001290310420020012802081b7d22072005560d00417f20002007a7417f2007428080808010541b6a220320032000491b220320006b220420034b0d002004417f6a4195014b0d00418fcdc200ad4280808080f00084100c22032900002105200141a00a6a41086a2204200341086a290000370300200120053703a00a2003102341bbacc300ad4280808080a00184100c22032900002105200141d8076a41086a2206200341086a290000370300200120053703d80720031023412010212203450d01200320012903a00a370000200320012903d807370010200341086a2004290300370000200341186a22082006290300370000412010212204450d0120042003290000370000200441186a2008290000370000200441106a200341106a290000370000200441086a200341086a29000037000020014190056a41026a2206200141c00b6a41026a2d00003a0000200120012f00c00b3b01900520014180096a41106a42a08080808004370300200141003a0098092001200336028c09200142a080808080043702840920012004360280092001419b096a20062d00003a0000200120012f0190053b009909200141c00b6a20014180096a10d2010240024020012802c00b4101470d0020014198066a41186a2203200141dc0b6a29020037030020014198066a41106a200141d40b6a29020037030020014198066a41086a200141cc0b6a290200370300200120012902c40b3703980641201021220e450d03200e200129039806370000200e41186a2003290300370000200e41106a20014198066a41106a220a290300370000200e41086a20014198066a41086a220c29030037000020014281808080103702bc052001200e3602b805200141a00a6a41186a20014180096a41186a280200360200200141a00a6a41106a20014180096a41106a290300370300200141a00a6a41086a20014180096a41086a29030037030020012001290380093703a00a200141c00b6a200141a00a6a10d201024020012802c00b4101470d00200141c00b6a41047221034102210641202108410121040340200141d8076a41186a200341186a2902002205370300200141d8076a41106a200341106a2902002207370300200141d8076a41086a200341086a290200220b3703002001200329020022153703d80720014198066a41186a220d2005370300200a2007370300200c200b370300200120153703980602402006417f6a2004470d00200141b8056a20044101109a0120012802b805210e0b200e20086a2204200129039806370000200441186a200d290300370000200441106a200a290300370000200441086a200c290300370000200120063602c005200141c00b6a200141a00a6a10d20120012802c00b4101470d01200841206a2108200641016a210620012802bc0521040c000b0b024020012802a40a450d0020012802a00a10230b0240200141b00a6a280200450d0020012802ac0a10230b200141e8046a41086a200141b8056a41086a280200360200200120012903b8053703e8040c010b200141003602f004200142013703e8040240200128028409450d0020012802800910230b200128029009450d00200128028c0910230b418fcdc200ad4280808080f00084100c22032900002105200141a00a6a41086a2204200341086a290000370300200120053703a00a2003102341e2c4c000ad4280808080a00184100c22032900002105200141d8076a41086a2206200341086a290000370300200120053703d80720031023412010212203450d01200320012903a00a370000200320012903d807370010200341086a2004290300370000200341186a22082006290300370000412010212204450d0120042003290000370000200441186a2008290000370000200441106a200341106a290000370000200441086a200341086a290000370000200141b8046a41026a2206200141c00b6a41026a2d00003a0000200120012f00c00b3b01b80420014180096a41106a42a08080808004370300200141003a0098092001200336028c09200142a080808080043702840920012004360280092001419b096a20062d00003a0000200120012f01b8043b009909200141c00b6a20014180096a10f2030240024020012d00f00b4102460d0020014198066a41186a200141c00b6a41186a29030037030020014198066a41106a200141c00b6a41106a29030037030020014198066a41086a200141c00b6a41086a290300370300200120012903c00b37039806024020012802e40b41ffffff3f71450d0020012802e00b10230b412010212209450d032009200129039806370000200941186a20014198066a41186a2208290300370000200941106a20014198066a41106a220a290300370000200941086a20014198066a41086a220c29030037000020014281808080103702bc05200120093602b805200141a00a6a41186a20014180096a41186a280200360200200141a00a6a41106a20014180096a41106a290300370300200141a00a6a41086a20014180096a41086a29030037030020012001290380093703a00a200141c00b6a200141a00a6a10f203024020012d00f00b4102460d0041202106410121040340200141d8076a41186a2203200141c00b6a41186a290300370300200141d8076a41106a220d200141c00b6a41106a290300370300200141d8076a41086a220e200141c00b6a41086a290300370300200120012903c00b3703d807024020012802e40b41ffffff3f71450d0020012802e00b10230b20082003290300370300200a200d290300370300200c200e290300370300200120012903d807370398060240200420012802bc05470d00200141b8056a20044101109a0120012802b80521090b200920066a2203200129039806370000200341186a2008290300370000200341106a200a290300370000200341086a200c2903003700002001200441016a22043602c005200641206a2106200141c00b6a200141a00a6a10f20320012d00f00b4102470d000b0b024020012802a40a450d0020012802a00a10230b0240200141b00a6a280200450d0020012802ac0a10230b20014190056a41086a200141b8056a41086a280200360200200120012903b805370390050c010b200141003602980520014201370390050240200128028409450d0020012802800910230b200128029009450d00200128028c0910230b024020012802f004220c41808004490d00024020012802940541ffffff3f71450d0020012802900510230b20012802ec0441ffffff3f71450d0120012802e80410230c010b200141c00b6a200141e8046a108e0220012802c40b210420012802c00b210320014190056a20012802980520012802c80b41057422064105752208109a01200128029005220e200128029805220a4105746a2003200610a1051a2001200a20086a2216360298050240200441ffffff3f71450d00200310230b20012802ec04211d20012802e8042109200141c00b6a41186a22044200370300200141c00b6a41106a22064200370300200141c00b6a41086a22034200370300200142003703c00b418fcdc200ad4280808080f000842205100c220a2900002107200141a00a6a41086a2208200a41086a290000370300200120073703a00a200a102320032008290300370300200120012903a00a3703c00b41a8c5c000ad4280808080a00284100c220d2900002107200141d8076a41086a220a200d41086a290000370300200120073703d807200d1023201b20012903d807370000201b41086a220d200a29030037000020014198066a41086a2218200329030037030020014198066a41106a221c200629030037030020014198066a41186a221e2004290300370300200120012903c00b37039806200141203602c40b200120014198066a3602c00b2009200c200141c00b6a109c020240201d41ffffff3f71450d00200910230b2001280294052109200442003703002006420037030020034200370300200142003703c00b2005100c220c29000021052008200c41086a290000370300200120053703a00a200c102320032008290300370300200120012903a00a3703c00b41bac5c000ad4280808080a00284100c22082900002105200a200841086a290000370300200120053703d80720081023201b20012903d807370000200d200a29030037000020182003290300370300201c2006290300370300201e2004290300370300200120012903c00b37039806200141203602c40b200120014198066a3602c00b200e2016200141c00b6a109c020240200941ffffff3f71450d00200e10230b200141c00b6a41186a22064200370300200141c00b6a41106a22084200370300200141c00b6a41086a22034200370300200142003703c00b418fcdc200ad4280808080f00084100c22042900002105200141a00a6a41086a220a200441086a290000370300200120053703a00a200410232003200a290300370300200120012903a00a3703c00b41ccc5c000ad4280808080900284100c22042900002105200141d8076a41086a220a200441086a290000370300200120053703d80720041023201b20012903d807370000201b41086a200a29030037000020014198066a41086a200329030037030020014198066a41106a200829030037030020014198066a41186a2006290300370300200120012903c00b37039806410110212203450d05200341013a000020034101410510252203450d052003200036000120014198066aad42808080808004842003ad4280808080d00084100e200310230b200141c00b6a41186a4200370300200141c00b6a41106a220e4200370300200141c00b6a41086a22034200370300200142003703c00b41fea6c600ad4280808080a00184100c220429000021052003200441086a290000370300200120053703c00b20041023419ca8c600ad4280808080e00084100c22042900002105200141d8076a41086a2206200441086a290000370300200120053703d80720041023200e20012903d807220537030020014198066a41086a200329030037030020014198066a41106a200537030020014198066a41186a2006290300370300200120012903c00b37039806200141c00b6a20014198066a10820320012802c00b2203410420031b210d0240024020012902c40b420020031b2205422088a7220641c4006c22030d004100210a0c010b200d20036a21044100210a200d210302400340024020032d00004101460d00200341046a28020020004f0d020b200a41016a210a2004200341c4006a2203470d000b0b200a20064b0d020b2006200a6b211b200542ffffffff0f832105200d200a41c4006c22046a210c200d210602400340024020040d00200c21030c020b200441bc7f6a210420062d00002108200641c4006a2203210620084102470d000b0b02400340200c2003460d0120032d00002104200341c4006a210320044102470d000b0b0240201b450d000240200a450d00200d200d200a41c4006c6a201b41c4006c10a2051a0b201bad42208620058421050b200141c00b6a41186a22064200370300200141c00b6a41106a22084200370300200141c00b6a41086a22034200370300200142003703c00b41fea6c600ad4280808080a00184100c220429000021072003200441086a290000370300200120073703c00b20041023419ca8c600ad4280808080e00084100c22042900002107200141d8076a41086a220a200441086a290000370300200120073703d80720041023200e20012903d807370000200e41086a200a29030037000020014198066a41086a200329030037030020014198066a41106a200829030037030020014198066a41186a2006290300370300200120012903c00b37039806200141c00b6a200d2005422088a710970320014198066aad220b4280808080800484220720013502c80b42208620012802c00b2204ad84100e2005a72103024020012802c40b450d00200410230b02402003450d00200341c4006c450d00200d10230b200141c00b6a41186a22064200370300200141c00b6a41106a22084200370300200141c00b6a41086a22044200370300200142003703c00b41fea6c600ad4280808080a00184100c220329000021052004200341086a290000370300200120053703c00b200310234198bdc600ad4280808080c00184100c22032900002105200141d8076a41086a220a200341086a290000370300200120053703d80720031023200e20012903d807370000200e41086a200a29030037000020014198066a41086a220a200429030037030020014198066a41106a220c200829030037030020014198066a41186a220d2006290300370300200120012903c00b37039806200141003a00b8042007200141b8046aad42808080801084100e20014198066a108503200141b8046a41186a220e200d290300370300200141b8046a41106a221b200c290300370300200141b8046a41086a2209200a29030037030020012001290398063703b804412410212203450d04200320012903b80437000020034114360220200341186a200e290300370000200341106a201b290300370000200341086a200929030037000020014281808080103702c40b200120033602c00b200141c00b6a10b9012006200d2903003703002008200c2903003703002004200a29030037030020012001290398063703c00b200141c00b6a10d102412010272203450d0041fba7c600ad4280808080f00084100c22042900002105200141d8076a41086a2206200441086a290000370300200120053703d80720041023200341086a2006290300370000200320012903d8073700004182a8c600ad4280808080b00184100c22042900002105200141a00a6a41086a2206200441086a290000370300200120053703a00a20041023200341186a2006290300370000200320012903a00a37001020012003412010cd010240024020012802004101470d002001280204211f2003ad4280808080800484101120031023201f450d01200b4280808080c0008421354100211c4100211803402001201836029806200141c00b6a41186a220920351018220341186a290000370300200141c00b6a41106a220a200341106a290000370300200141c00b6a41086a2216200341086a290000370300200120032900003703c00b2003102341c00010272203450d0341fba7c600ad4280808080f00084100c22042900002105200141d8076a41086a220c200441086a290000370300200120053703d80720041023200341086a200c290300370000200320012903d807370000418da8c600ad4280808080f00084100c22042900002105200141a00a6a41086a2206200441086a290000370300200120053703a00a20041023200341186a2006290300370000200320012903a00a370010200341386a2009290300370000200341306a200a290300370000200341286a2016290300370000200320012903c00b37002020014198066a200341c0001089020240200128029806221d450d002003ad428080808080088410110b20012802a0062104200128029c06211e20031023201d450d0202402004450d0020044105742108201c2106201d21030340200141d8076a41186a220d200341186a290000370300200141d8076a41106a220e200341106a290000370300200c200341086a290000370300200120032900003703d80720014198066a41186a420037030020014198066a41106a420037030020014198066a41086a420037030020014200370398060240200141d8076a20014198066a412010a305450d00200141a00a6a200141d8076a109702200141c00b6a20012802a00a221b20012802a80a109802200a290300420020012903c00b42015122041b210520012903c80b420020041b2107200141c00b6a41206a290300420020041b210b20012903d80b420020041b2115024020012802a40a450d00201b10230b427f200720157c2215201520075422042005200b7c2004ad7c220720055420072005511b22041b427f200720041b84500d002009200d290300370300200a200e2903003703002016200c290300370300200120012903d8073703c00b20014198066a200610fb0220013502a0062105200128029806210d411010212204450d0620044110412010252204450d0a200420012903c00b370000200441186a2009290300370000200441106a200a290300370000200441086a20162903003700002004412041c00010252204450d0a20044200370020200441286a42003700002005422086200dad842004ad4280808080800684100e20041023200128029c06450d00200d10230b200341206a2103200641016a2106200841606a22080d000b0b0240201e41ffffff3f71450d00201d10230b201c41c0006a211c201841016a2218201f470d000c020b0b200310230b10ea0320014198066a41186a2208420037030020014198066a41106a2203420037030020014198066a41086a22044200370300200142003703980641e4dec400ad4280808080e00084100c220629000021052004200641086a29000037030020012005370398062006102341f9dec400ad4280808080a00184100c22062900002105200141a00a6a41086a220a200641086a290000370300200120053703a00a20061023200320012903a00a2205370300200141d8076a41086a2004290300370300200141d8076a41106a2005370300200141d8076a41186a200a29030037030020012001290398063703d807200141c00b6a200141d8076a412010e10120012d00c00b21062008200141d90b6a2900003703002003200141d10b6a2900003703002004200141c90b6a290000370300200120012900c10b370398060240024020064101460d00200141c8036a41186a4200370300200141c8036a41106a4200370300200141c8036a41086a4200370300200142003703c8030c010b200141c8036a41186a2008290300370300200141c8036a41106a2003290300370300200141c8036a41086a200429030037030020012001290398063703c8030b20014198066a41186a2208420037030020014198066a41106a220a420037030020014198066a41086a22044200370300200142003703980641abe3c200ad4280808080800384100c220629000021052004200641086a29000037030020012005370398062006102341c3e3c200ad4280808080e00184100c22062900002105200141a00a6a41086a220c200641086a290000370300200120053703a00a20061023200320012903a00a370000200341086a200c290300370000200141d8076a41086a2004290300370300200141d8076a41106a200a290300370300200141d8076a41186a200829030037030020012001290398063703d807200141c00b6a200141d8076a4120108902024002400240024020012802c00b22040d0041002103200141003602a80a200142013703a00a200141e8036a41186a200141c8036a41186a290300370300200141e8036a41106a200141c8036a41106a290300370300200141e8036a41086a200141c8036a41086a290300370300200120012903c8033703e803200141e8036a21060c010b200120012902c40b22053702a40a200120043602a00a2005a7210a02402005422088a7220341d100490d0020014198066a41186a2208200141c8036a41186a29030037030020014198066a41106a220c200141c8036a41106a29030037030020014198066a41086a220d200141c8036a41086a290300370300200120012903c803370398062000417f6a41d10070220620034f0d06200420064105746a2206200129039806370000200641186a2008290300370000200641106a200c290300370000200641086a200d2903003700000c030b200141e8036a41186a200141c8036a41186a290300370300200141e8036a41106a200141c8036a41106a290300370300200141e8036a41086a200141c8036a41086a290300370300200120012903c8033703e803200141e8036a21062003200a470d010b200141a00a6a20034101109a0120012802a40a210a20012802a00a210420012802a80a21030b200420034105746a22082006290000370000200841186a200641186a290000370000200841106a200641106a290000370000200841086a200641086a2900003700002001200341016a22033602a80a0b20014198066a41186a420037030020014198066a41106a220c420037030020014198066a41086a22064200370300200142003703980641abe3c200ad4280808080800384100c220829000021052006200841086a29000037030020012005370398062008102341c3e3c200ad4280808080e00184100c22082900002105200141d8076a41086a220d200841086a290000370300200120053703d80720081023200c20012903d8072205370300200141e8036a41086a2006290300370300200141e8036a41106a2005370300200141e8036a41186a200d29030037030020012001290398063703e8030240024020040d00200141e8036aad428080808080048410110c010b200141203602c40b2001200141e8036a3602c00b20042003200141c00b6a10bf03200a41ffffff3f71450d00200410230b200141800d6a24000f0b1033000b200a2006103c000b2006200341e0fdc2001030000b102c000b102a000baa2309057f017e037f017e017f037e037f037e017f230041c0046b22002400200041f0016a41186a22014200370300200041f0016a41106a22024200370300200041f0016a41086a22034200370300200042003703f00141a7b3c500ad4280808080c00084100c22042900002105200041d0036a41086a2206200441086a290000370300200020053703d0032004102320032006290300370300200020002903d0033703f00141f4bdc500ad4280808080b00184100c220429000021052006200441086a290000370300200020053703d00320041023200220002903d0032205370300200041a0046a41086a2003290300370300200041a0046a41106a2005370300200041a0046a41186a2006290300370300200020002903f0013703a004200041f0016a200041a0046a108704024002400240024020002d00f0014102470d00200142003703002002420037030020034200370300200042003703f00141e4dec400ad4280808080e00084100c220629000021052003200641086a290000370300200020053703f001200610234191dfc400ad4280808080e00084100c2206290000210520004188016a41086a2204200641086a29000037030020002005370388012006102320022000290388012205370300200041e8026a41086a2003290300370300200041e8026a41106a2005370300200041e8026a41186a2004290300370300200020002903f0013703e802200041206a200041e8026a10f70202400240200028022022070d0041002108200041003602f002200042043703e8024202210941042107200041e8026a210a0c010b2000200029022422053702ec02200020073602e8022005a72108200041e8026a210a02402005422088a72203450d00200341246c21062007210302400340024020032d00004101470d00200341016a2800002104200341086a28020021012000200341106a28020036028c012000200136028801200441c28289aa04470d00200041f0016a20004188016a10f90320002903f00122094202520d020b200341246a21032006415c6a2206450d020c000b0b20002903f801210b200041206a20004180026a41e80010a1051a0c010b420221090b200a10960302402008450d00200841246c450d00200710230b20004188016a200041206a41e80010a1051a0240024020094202520d0041002101200041a0046a21070c010b200041e8026a20004188016a41e80010a1051a200041f0016a41186a22044200370300200041f0016a41106a22014200370300200041f0016a41086a22064200370300200042003703f00141a7b3c500ad4280808080c000842205100c2207290000210c200041d0036a41086a2203200741086a2900003703002000200c3703d0032007102320062003290300370300200020002903d0033703f0014188bbc500ad4280808080b00184220d100c2207290000210c2003200741086a2900003703002000200c3703d00320071023200220002903d003370000200241086a220e2003290300370000200041a0046a41086a22072006290300370300200041a0046a41106a22082001290300370300200041a0046a41186a220a2004290300370300200020002903f0013703a004200041106a200041a0046a10fa02024002402000280210450d002000290318500d00200041a0046aad4280808080800484210c200041a0046a21070c010b200442003703002001420037030020064200370300200042003703f0012005100c220f290000210c2003200f41086a2900003703002000200c3703d003200f102320062003290300370300200020002903d0033703f001200d100c220f290000210c2003200f41086a2900003703002000200c3703d003200f1023200220002903d003370000200e20032903003700002007200629030037030020082001290300370300200a2004290300370300200020002903f0013703a0042000200b3703f001200041a0046aad4280808080800484220c200041f0016aad4280808080800184100e200442003703002001420037030020064200370300200042003703f0012005100c220f290000210d2003200f41086a2900003703002000200d3703d003200f102320062003290300370300200020002903d0033703f00141bcbac500ad4280808080b00184100c220f290000210d2003200f41086a2900003703002000200d3703d003200f1023200220002903d003370000200e20032903003700002007200629030037030020082001290300370300200a2004290300370300200020002903f0013703a004200041f0016a200041a0046a10d10420002902f401210d20002802f001210f200442003703002001420037030020064200370300200042003703f0012005100c221029000021052003201041086a290000370300200020053703d0032010102320062003290300370300200020002903d0033703f00141c8bbc500ad4280808080a00184100c221029000021052003201041086a290000370300200020053703d00320101023200220002903d003370000200e20032903003700002007200629030037030020082001290300370300200a2004290300370300200020002903f0013703a004200041f0016a200041a0046a10970420002d00f0012103200a20004189026a290000370300200820004181026a2900003703002007200041f9016a290000370300200020002900f1013703a0040240024020034101460d0020004188046a420037030020004180046a4200370300200041f8036a4200370300200042003703f0030c010b200041f0036a41186a200041a0046a41186a290300370300200041f0036a41106a200041a0046a41106a290300370300200041f0036a41086a200041a0046a41086a290300370300200020002903a0043703f0030b200041d0036a41086a200041f0036a41086a2903002205370300200041d0036a41106a200041f0036a41106a2903002211370300200041d0036a41186a200041f0036a41186a2903002212370300200020002903f00322133703d003200041a0046a41186a2012370300200041a0046a41106a2011370300200041a0046a41086a2005370300200020133703a004200042013703f001200041003602f801410110212203450d05200f4108200f1b210e200041013602f401200020033602f001200341013a0000200041013602f801200d422088a74100200f1b2203200041f0016a10610240024020030d0020002802f80121060c010b200e200341286c6a210a20002802f401210120002802f8012106200e2103034002400240200120066b4120490d00200641206a210420002802f0012108200121070c010b200641206a22042006490d06200141017422072004200720044b1b22074100480d060240024020010d00024020070d00410121080c020b2007102122080d010c0a0b20002802f001210820012007460d0020082001200710252208450d090b200020073602f401200020083602f0010b200820066a22062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a290000370000200020043602f801200341206a290300210502400240200720046b4108490d00200441086a2106200721010c010b200441086a22062004490d06200741017422012006200120064b1b22014100480d060240024020070d00024020010d00410121080c020b200110212208450d0a0c010b20072001460d0020082007200110252208450d090b200020013602f401200020083602f0010b200820046a2005370000200020063602f801200a200341286a2203470d000b0b0240024020002802f401220420066b4120490d0020002802f00121030c010b200641206a22032006490d04200441017422012003200120034b1b22014100480d040240024020040d00024020010d00410121030c020b200110212203450d080c010b20002802f001210320042001460d0020032004200110252203450d070b200020013602f401200020033602f0010b200320066a220320002903a004370000200341086a200041a0046a41086a290300370000200341186a200041a0046a41186a290300370000200341106a200041a0046a41106a290300370000200041fb036a200641206a360000200020002903f0013700f303200041fc016a200041f7036a290000370000200041c28289aa043600f101200041023a00f001200020002900f0033700f501200041f0016a10f8030240200da74100200f1b2203450d00200341286c450d00200e10230b200041a0046a21070b200041f0016a41186a22044200370300200041f0016a41106a22014200370300200041f0016a41086a22064200370300200042003703f00141a7b3c500ad4280808080c000842205100c2208290000210d200041d0036a41086a2203200841086a2900003703002000200d3703d0032008102320062003290300370300200020002903d0033703f00141a4bbc500ad4280808080b00184220d100c220829000021112003200841086a290000370300200020113703d00320081023200220002903d003370000200241086a22082003290300370000200041a0046a41086a220a2006290300370300200041a0046a41106a220e2001290300370300200041a0046a41186a220f2004290300370300200020002903f0013703a0042000200041a0046a10fa022000280200211420002903082111200442003703002001420037030020064200370300200042003703f0012005100c221029000021122003201041086a290000370300200020123703d0032010102320062003290300370300200020002903d0033703f00141abb3c500ad4280808080800184100c221029000021122003201041086a290000370300200020123703d00320101023200220002903d00337000020082003290300370000200a2006290300370300200e2001290300370300200f2004290300370300200020002903f0013703a00420004200200b201142017c420120141b7d22112011200b561b3e02f001200c200041f0016aad22114280808080c00084100e200442003703002001420037030020064200370300200042003703f0012005100c221029000021052003201041086a290000370300200020053703d0032010102320062003290300370300200020002903d0033703f001200d100c221029000021052003201041086a290000370300200020053703d00320101023200220002903d00337000020082003290300370000200a2006290300370300200e2001290300370300200f2004290300370300200020002903f0013703a0042000200b3703f001200c20114280808080800184100e4100210120094200520d00200041f0016a200041e8026a41e80010a1051a200041f0036a41186a2000418c026a290200370300200041f0036a41106a20004184026a290200370300200041f0036a41086a200041fc016a290200370300200020002902f4013703f003410121010b200041e8026a41186a200041f0036a41186a290300370300200041e8026a41106a200041f0036a41106a290300370300200041e8026a41086a200041f0036a41086a290300370300200020002903f0033703e802200041f0016a41186a22084200370300200041f0016a41106a220a4200370300200041f0016a41086a22064200370300200042003703f00141a7b3c500ad4280808080c00084100c22042900002105200041d0036a41086a2203200441086a290000370300200020053703d0032004102320062003290300370300200020002903d0033703f00141f4bdc500ad4280808080b00184100c220429000021052003200441086a290000370300200020053703d00320041023200220002903d003370000200241086a2003290300370000200041a0046a41086a2006290300370300200041a0046a41106a200a290300370300200041a0046a41186a2008290300370300200020002903f0013703a004410110212203450d020240024020010d00200341003a000042808080801021050c010b200341013a000020034101412110252203450d04200320002903e802370001200341196a20004180036a290300370000200341116a200041f8026a290300370000200341096a200041f0026a2903003700004280808080900421050b2007ad428080808080048420052003ad84100e200310230b200041c0046a24000f0b102c000b1033000b102a000b940405047f017e017f017e057f230041f0006b22002400200041c0006a41186a22014200370300200041c0006a41106a22024200370300200041c0006a41086a220342003703002000420037034041a7b3c500ad4280808080c000842204100c22052900002106200041e0006a41086a2207200541086a2900003703002000200637036020051023200320072903003703002000200029036037034041a4bac500ad4280808080a00184100c220529000021062007200541086a2900003703002000200637036020051023200220002903602206370300200041206a41086a22082003290300370300200041206a41106a22092006370300200041206a41186a220a200729030037030020002000290340370320200041106a200041206a10fa022000280210210b20002903182106200142003703002002420037030020034200370300200042003703402004100c220529000021042007200541086a290000370300200020043703602005102320032007290300370300200020002903603703404188bbc500ad4280808080b00184100c220529000021042007200541086a29000037030020002004370360200510232002200029036022043703002008200329030037030020092004370300200a2007290300370300200020002903403703202000200041206a10fa022000280200210720002903082104200041f0006a24002004420020071b200642d8047e4200200b1b7c0bfe0304027f017e067f077e230041c0006b220224000240024020012802082203ad42d0007e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510212206450d020b20024100360208200220063602002002200541d0006e36020420024100200310b4012002280208210702402003450d002001200341d0006c6a21082002280200200741d0006c6a2105200341047441706a41047621090340200241206a41086a2203200141086a290300370300200241206a41106a2206200141106a290300370300200241206a41186a220a200141186a29030037030020022001290300370320200141206a2903002104200141286a290300210b200141306a290300210c200141386a290300210d200241106a200141c0006a10b503200a290300210e2006290300210f2003290300211020022903202111200541386a200d370300200541306a200c370300200541286a200b370300200541206a2004370300200541086a201037030020052011370300200541106a200f370300200541186a200e370300200541c0006a2002290310370300200541c8006a200241106a41086a280200360200200541d0006a2105200141d0006a22012008470d000b200720096a41016a21070b20002002290300370200200041086a2007360200200241c0006a24000f0b1032000b1033000b990402067f017e230041e0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b0102400240200228021022010d00200041003602000c010b200228021421032002200241186a280200360224200220013602202002200241206a1088010240024020022802000d002002280224220420022802044102742205490d0002400240024002402005417f4c0d000240024020050d00410121060c010b200510272206450d02200620022802202207200510a1051a2002200420056b3602242002200720056a3602200b2006450d0402402005ad22084220862008842208422088a722050d002008a721050c030b024020062005724103710d002008a722054103710d0020054102762204450d032008422288a721070c040b2008a7450d04200610230c040b1032000b1033000b4100210702402005450d00200610230b41002104410421060b41000d002006450d002000200436020420002006360200200041086a20073602000c010b20024100360230200242013703282002410a36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350230422086200235022884100a0240200228022c450d00200228022810230b200041003602000b2003450d00200110230b200241e0006a24000bff740a067f017e057f017e047f027e017f027e037f017e230041f0026b220524000240410810212206450d0020062001200241c0016c6a220736020420062001360200024002400240024020000d00200541a8026a41186a22084200370300200541a8026a41106a22094200370300200541a8026a41086a22024200370300200542003703a80241ecf7c300ad4280808080f00184100c220a290000210b200541f8016a41086a220c200a41086a2900003703002005200b3703f801200a10232002200c290300370300200520052903f8013703a80241bcfec300ad4280808080c00184100c220a290000210b200c200a41086a2900003703002005200b3703f801200a1023200920052903f801220b370300200541d0026a41086a220d2002290300370300200541d0026a41106a220e200b370300200541d0026a41186a220f200c290300370300200520052903a8023703d002200541c8006a200541d0026a10fa022005290350210b20052802482110200842003703002009420037030020024200370300200542003703a80241db97c700ad4280808080f00084100c220a29000021112002200a41086a290000370300200520113703a802200a102341bcbcc300ad4280808080c00184100c220a2900002111200c200a41086a290000370300200520113703f801200a1023200920052903f8012211370300200d2002290300370300200e2011370300200f200c290300370300200520052903a8023703d002200541c0006a200541d0026a412010cd01200b420020101b2005280244410020052802401b109404200610230c010b0240024002402002450d002006200141c0016a3602002005200141226a2900003701aa0220052001412a6a2900003701b20220054198016a41086a220220052903b0023703002005200141326a2900003701ba0220054198016a41106a220c20052903b80237030020052001413a6a2800003601c20220052001413e6a2f00003b01c60220054198016a41186a220920052903c002370300200520012f00203b01a802200520052903a80237039801200541d0026a41186a220a2009290300370300200541d0026a41106a2209200c290300370300200541d0026a41086a220c200229030037030020052005290398013703d002200541f8016a41186a200a290300370300200541f8016a41106a2009290300370300200541f8016a41086a200c290300370300200520052903d0023703f801200628020420062802006b41c0016e41286c41286a2202417f4c0d05200210212212450d04201220052903f80137030020124201370320201241186a200541f8016a41186a2213290300370300201241106a200541f8016a41106a2214290300370300201241086a200541f8016a41086a22152903003703004101210c200541013602e001200520123602d8012005200241286e22023602dc01200628020022092006280204460d012006200941c0016a3602002005200941226a2900003701aa0220052009412a6a2900003701b20220054198016a41086a220e20052903b0023703002005200941326a2900003701ba0220054198016a41106a220f20052903b80237030020052009413a6a2800003601c20220052009413e6a2f00003b01c60220054198016a41186a221020052903c002370300200541003a00c8022005200941216a2d00003a00a902200520092d00203a00a802200520052903a80237039801200541d0026a41186a22092010290300370300200541d0026a41106a220a200f290300370300200541d0026a41086a2208200e29030037030020052005290398013703d0024102210c41c800210d034020132009290300220b3703002014200a2903002211370300201520082903002216370300200520052903d00222173703f8012009200b370300200a201137030020082016370300200520173703d0020240200c417f6a2002470d00200541d8016a2002200628020420062802006b41c0016e41016a10980120052802d80121120b2012200d6a221841606a220220052903d0023703002008290300210b200a29030021112009290300211620184201370300200241186a2016370300200241106a2011370300200241086a200b3703002005200c3602e0010240200628020022022006280204470d0020052802dc0121020c030b2006200241c0016a3602002005200241226a2900003701aa0220052002412a6a2900003701b202200e20052903b0023703002005200241326a2900003701ba02200f20052903b80237030020052002413a6a2800003601c20220052002413e6a2f00003b01c602201020052903c002370300200541003a00c8022005200241216a2d00003a00a902200520022d00203a00a802200520052903a8023703980120092010290300370300200a200f2903003703002008200e29030037030020052005290398013703d002200d41286a210d200c41016a210c20052802dc0121020c000b0b20061023410821124100210c410021020c010b200610230b200541a8026a41186a4200370300200541a8026a41106a22094200370300200541a8026a41086a220a4200370300200542003703a80241ecf7c300ad4280808080f00184100c2208290000210b200541f8016a41086a2206200841086a2900003703002005200b3703f80120081023200a2006290300370300200520052903f8013703a802418cfec300ad4280808080f00084100c2208290000210b2006200841086a2900003703002005200b3703f80120081023200920052903f801220b370300200541d0026a41086a200a290300370300200541d0026a41106a200b370300200541d0026a41186a2006290300370300200520052903a8023703d002200541a8026a200541d0026a412010e5010240024020052802a8024101460d002005200c3602b002200520023602ac02200520123602a802200541d0026a200541a8026a410041002005109504200541d0026aad4280808080800484210b0c010b200541d0026aad4280808080800484220b101120052902ac0221112005200c3602b002200520023602ac02200520123602a802200541d0026a200541a8026a2011a741012011422088a71095040b200541a8026a41186a220a4200370300200541a8026a41106a220c4200370300200541a8026a41086a22064200370300200542003703a80241ecf7c300ad4280808080f001842211100c22082900002116200541f8016a41086a2202200841086a290000370300200520163703f8012008102320062002290300370300200520052903f8013703a80241bcfec300ad4280808080c001842216100c220829000021172002200841086a290000370300200520173703f80120081023200920052903f801370000200941086a22102002290300370000200541d0026a41086a22082006290300370300200541d0026a41106a220d200c290300370300200541d0026a41186a220e200a290300370300200520052903a8023703d002200541306a200541d0026a10fa022005280230211820052903382117200a4200370300200c420037030020064200370300200542003703a8022011100c220f29000021112002200f41086a290000370300200520113703f801200f102320062002290300370300200520052903f8013703a8022016100c220f29000021112002200f41086a290000370300200520113703f801200f1023200920052903f8013700002010200229030037000020082006290300370300200d200c290300370300200e200a290300370300200520052903a8023703d0022005201742017c420120181b22113703a802200b200541a8026aad4280808080800184100e200a4200370300200c420037030020064200370300200542003703a80241db97c700ad4280808080f00084100c2209290000210b2006200941086a2900003703002005200b3703a8022009102341bcbcc300ad4280808080c00184100c2209290000210b2002200941086a2900003703002005200b3703f80120091023200c20052903f801220b37030020082006290300370300200d200b370300200e2002290300370300200520052903a8023703d002200541286a200541d0026a412010cd012011200528022c410020052802281b1094040b410810212202450d022002200736020420022001360200410810212206450d0220062003200441c0016c6a221436020420062003360200200541b8016a200241fcbfc400109604200541c8016a200641fcbfc40010960420052802d001211820052802cc01211220052802c801211020052802c001210920052802bc01210f20052802b801211520054198016a41186a220c420037030020054198016a41106a2213420037030020054198016a41086a22064200370300200542003703980141a7b3c500ad4280808080c00084220b100c220a2900002111200541d0026a41086a2202200a41086a290000370300200520113703d002200a102320062002290300370300200520052903d0023703980141a4bac500ad4280808080a001842216100c220a29000021112002200a41086a290000370300200520113703d002200a1023201320052903d0022211370300200541d8006a41086a220a2006290300370300200541d8006a41106a22082011370300200541d8006a41186a220d20022903003703002005200529039801370358200541186a200541d8006a10fa02024002400240024002402005290320420020052802181b221742017c22112017540d00200c420037030020134200370300200642003703002005420037039801200b100c220e29000021172002200e41086a290000370300200520173703d002200e102320062002290300370300200520052903d002370398012016100c220e29000021162002200e41086a290000370300200520163703d002200e1023201320052903d002370000201341086a22042002290300370000200a200629030037030020082013290300370300200d200c2903003703002005200529039801370358200520113703a802200541d8006aad42808080808004842219200541a8026aad22164280808080800184100e200c420037030020134200370300200642003703002005420037039801200b100c220e290000210b2002200e41086a2900003703002005200b3703d002200e102320062002290300370300200520052903d0023703980141bcbac500ad4280808080b00184100c220e290000210b2002200e41086a2900003703002005200b3703d002200e1023201320052903d00237000020042002290300370000200a200629030037030020082013290300370300200d200c2903003703002005200529039801370358200941286c4104722202417f4c0d06200210212206450d05200541003602b002200520023602ac02200520063602a8022009200541a8026a10610240024020090d0020052802b002210220052802a802210a0c010b2015200941286c6a210d20052802ac02210c20052802b002210220152106034002400240200c20026b4120490d0020052802a802210a200c21090c010b200241206a22092002490d07200c410174220a2009200a20094b1b22094100480d0702400240200c0d00024020090d004101210a0c020b20091021220a0d010c0c0b20052802a802210a200c2009460d00200a200c20091025220a450d0b0b200520093602ac022005200a3602a8020b200a20026a220c2006290000370000200c41186a200641186a290000370000200c41106a200641106a290000370000200c41086a200641086a2900003700002005200241206a22083602b002200641206a290300210b02400240200920086b4108490d00200241286a21022009210c0c010b200841086a22022008490d072009410174220c2002200c20024b1b220c4100480d070240024020090d000240200c0d004101210a0c020b200c1021220a450d0c0c010b2009200c460d00200a2009200c1025220a450d0b0b2005200c3602ac022005200a3602a8020b200a20086a200b370000200520023602b002200d200641286a2206470d000b0b20052802ac02210620192002ad422086200aad84100e02402006450d00200a10230b0240200f450d00200f41286c450d00201510230b0240201142017c220b2011540d0020054198016a41186a220c420037030020054198016a41106a2209420037030020054198016a41086a22024200370300200542003703980141a7b3c500ad4280808080c00084100c220a2900002111200541d0026a41086a2206200a41086a290000370300200520113703d002200a102320022006290300370300200520052903d0023703980141b8bcc500ad4280808080e00184100c220a29000021112006200a41086a290000370300200520113703d002200a1023201320052903d002370000201341086a2006290300370000200541d8006a41086a2002290300370300200541d8006a41106a2009290300370300200541d8006a41186a200c2903003703002005200529039801370358200541a8026a200541d8006a10970420052d00a8022106200c200541c1026a2900003703002009200541b9026a2900003703002002200541b1026a290000370300200520052900a902370398010240024020064101460d00200541f8006a41186a4200370300200541f8006a41106a4200370300200541f8006a41086a4200370300200542003703780c010b200541f8006a41186a200c290300370300200541f8006a41106a2009290300370300200541f8006a41086a200229030037030020052005290398013703780b20054198016a41186a220c420037030020054198016a41106a2209420037030020054198016a41086a22064200370300200542003703980141a7b3c500ad4280808080c000842211100c220a2900002117200541d0026a41086a2202200a41086a290000370300200520173703d002200a102320062002290300370300200520052903d0023703980141e0bcc500ad4280808080c001842217100c220a290000211a2002200a41086a2900003703002005201a3703d002200a1023201320052903d002370000201341086a22082002290300370000200541d8006a41086a220d2006290300370300200541d8006a41106a220e2009290300370300200541d8006a41186a220f200c2903003703002005200529039801370358200541106a200541d8006a412010cd012005280214211520052802102104200c4200370300200942003703002006420037030020054200370398012011100c220a29000021112002200a41086a290000370300200520113703d002200a102320062002290300370300200520052903d002370398012017100c220a29000021112002200a41086a290000370300200520113703d002200a1023201320052903d00237000020082002290300370000200d2006290300370300200e2009290300370300200f200c2903003703002005200529039801370358200541003602a802201920164280808080c00084100e200541d0026a41186a200541f8006a41186a290300370300200541d0026a41106a200541f8006a41106a2903003703002002200541f8006a41086a290300370300200520052903783703d002417f2015410020041b220841016a220220022008491b410d74412872220f417f4c0d07200f1021220d450d06200d20052903d002370000200d200b370020200d41186a200541d0026a41186a290300370000200d41106a200541d0026a41106a290300370000200d41086a200541d0026a41086a2903003700004128210e410021064100210202400340024002402002450d00200c2009470d01200a41ffffff3f71450d00200210230b200620084f0d02200541d8016a2006108804200541a8026a20052802d801220c20052802e0012209108904024020052802a8022202450d002009ad422086200cad8410110b20052902ac02420020021b210b2002410120021b2102024020052802dc01450d00200c10230b200641016a21062002200b422088a74105746a2109200ba7210a2002210c0c010b20054198016a41186a200c41186a221529000037030020054198016a41106a200c41106a220429000037030020054198016a41086a200c41086a221b2900003703002005200c29000037039801201b290000210b20042900002111200c2900002117200541d8006a41186a22042015290000370300200541d8006a41106a22152011370300200541d8006a41086a221b200b37030020052017370358200541a8026a41186a221c2004290300370300200541a8026a41106a22042015290300370300200541a8026a41086a221d201b290300370300200520052903583703a8020240200f200e6b411f4b0d00200e41206a2215200e490d08200f410174221b2015201b20154b1b22154100480d0802400240200f0d00024020150d004101210d0c020b20151021220d450d0d0c010b200f2015460d00200d200f20151025220d450d0c0b2015210f0b200c41206a210c200d200e6a221520052903a802370000201541186a201c290300370000201541106a2004290300370000201541086a201d290300370000200e41206a210e0c000b0b200ead422086200dad8410182202290000210b200241086a2900002111200241106a2900002117200541f8016a41186a200241186a290000370300200541f8016a41106a2017370300200541f8016a41086a20113703002005200b3703f801200210230240200f450d00200d10230b20054198016a41186a2209420037030020054198016a41106a220a420037030020054198016a41086a22064200370300200542003703980141a7b3c500ad4280808080c00084220b100c220c2900002111200541d0026a41086a2202200c41086a290000370300200520113703d002200c102320062002290300370300200520052903d0023703980141b8bcc500ad4280808080e00184100c220c29000021112002200c41086a290000370300200520113703d002200c1023201320052903d002370000201341086a2002290300370000200541d8006a41086a2006290300370300200541d8006a41106a200a290300370300200541d8006a41186a20092903003703002005200529039801370358412010212202450d06200220052903f801370000200241186a200541f8016a41186a290300370000200241106a200541f8016a41106a290300370000200241086a200541f8016a41086a29030037000020192002ad4280808080800484100e20021023200541d8016a41186a200541f8006a41186a2903002211370300200541d8016a41106a200541f8006a41106a2903002217370300200541d8016a41086a200541f8006a41086a290300221a37030020052005290378221e3703d801200541a8026a41186a22082011370300200541a8026a41106a220d2017370300200541a8026a41086a220e201a3703002005201e3703a80220054198016a41186a2209420037030020054198016a41106a220a420037030020054198016a41086a220642003703002005420037039801200b100c220c290000210b200541d0026a41086a2202200c41086a2900003703002005200b3703d002200c102320062002290300370300200520052903d0023703980141c8bbc500ad4280808080a00184100c220c290000210b2002200c41086a2900003703002005200b3703d002200c1023201320052903d002370000201341086a220f2002290300370000200541d8006a41086a22152006290300370300200541d8006a41106a2204200a290300370300200541d8006a41186a221b2009290300370300200520052903980137035841201021220c450d06200c20052903a802370000200c41186a2008290300370000200c41106a200d290300370000200c41086a200e2903003700002019200cad4280808080800484100e200c102320094200370300200a420037030020064200370300200542003703980141a7b3c500ad4280808080c00084100c220c290000210b2002200c41086a2900003703002005200b3703d002200c102320062002290300370300200520052903d0023703980141b8bcc500ad4280808080e00184100c220c290000210b2002200c41086a2900003703002005200b3703d002200c1023201320052903d002370000200f2002290300370000201520062903003703002004200a290300370300201b20092903003703002005200529039801370358200541a8026a200541d8006a10970420052d00a80221022009200541c1026a290000370300200a200541b9026a2900003703002006200541b1026a290000370300200520052900a902370398010240024020024101460d0020054190026a420037030020054188026a420037030020054180026a4200370300200542003703f8010c010b200541f8016a41186a20054198016a41186a290300370300200541f8016a41106a20054198016a41106a290300370300200541f8016a41086a20054198016a41086a29030037030020052005290398013703f8010b200541d0026a41186a200541f8016a41186a290300370300200541d0026a41106a200541f8016a41106a290300370300200541d0026a41086a200541f8016a41086a290300370300200520052903f8013703d002200541003602b002200542013703a802410110212202450d08200541013602ac02200520023602a802200241013a0000200541013602b0022018200541a8026a10610240024020180d0020052802b00221020c010b2010201841286c6a2118410020052802b002220e6b210820052802ac02210c410021020340200e20026a210d02400240200c20086a4120490d0020052802a802210a200c21090c010b200d41206a2206200d490d08200c41017422092006200920064b1b22094100480d0802400240200c0d00024020090d004101210a0c020b20091021220a450d0d0c010b20052802a802210a200c2009460d00200a200c20091025220a450d0c0b200520093602ac022005200a3602a8020b200a200e6a20026a220c201020026a2206290000370000200c41186a200641186a290000370000200c41106a200641106a290000370000200c41086a200641086a2900003700002005200d41206a220c3602b002200641206a290300210b02400240200920086a41606a41074d0d002009210c0c010b200c41086a220f200c490d082009410174220c200f200c200f4b1b220c4100480d080240024020090d000240200c0d004101210a0c020b200c1021220a450d0d0c010b2009200c460d00200a2009200c1025220a450d0c0b2005200c3602ac022005200a3602a8020b200a200e6a20026a41206a200b3700002005200d41286a3602b002200841586a2108200241286a21022018200641286a470d000b200e20026a21020b0240024020052802ac02220c20026b4120490d0020052802a80221060c010b200241206a22062002490d06200c41017422092006200920064b1b22094100480d0602400240200c0d00024020090d00410121060c020b200910212206450d0b0c010b20052802a8022106200c2009460d002006200c200910252206450d0a0b200520093602ac02200520063602a8020b200620026a220620052903d002370000200641086a200541d0026a41086a290300370000200641186a200541d0026a41186a290300370000200641106a200541d0026a41106a290300370000200541a3016a200241206a360000200520052903a80237009b01200541b4026a2005419f016a290000370000200541c28289aa043600a902200541023a00a80220052005290098013700ad02200541a8026a10f80302402012450d00201241286c450d00201010230b410810212206450d082006200736020420062001360200410810212215450d08201520143602042015200336020020054198016a41186a220c420037030020054198016a41106a2209420037030020054198016a41086a220a4200370300200542003703980141e4dec400ad4280808080e00084100c2202290000210b200a200241086a2900003703002005200b370398012002102341f3dec400ad4280808080e00084100c2208290000210b200541d0026a41086a2202200841086a2900003703002005200b3703d00220081023201320052903d002370000201341086a2002290300370000200541d8006a41086a200a290300370300200541d8006a41106a2009290300370300200541d8006a41186a200c2903003703002005200529039801370358200541086a200541d8006a412010cd012005280208210d200528020c210e200541f8016a41186a4200370300200541f8016a41106a22044200370300200541f8016a41086a220a4200370300200542003703f8014180cdc200ad4280808080800184100c2208290000210b2002200841086a2900003703002005200b3703d00220081023200a2002290300370300200520052903d0023703f80141c9a1c200ad4280808080e00184100c2208290000210b2002200841086a2900003703002005200b3703d00220081023200420052903d002220b370300200541a8026a41086a200a290300370300200541a8026a41106a200b370300200541a8026a41186a2002290300370300200520052903f8013703a8022005200e41ac026a41ac02200d1b3602d00220164280808080800484221a200541d0026aad4280808080c00084100e200628020022022006280204460d022006200241c0016a3602002005200241e2006a2900003701aa022005200241ea006a2900003701b20220054198016a41086a220a20052903b0023703002005200241f2006a2900003701ba02200920052903b8023703002005200241fa006a2800003601c2022005200241fe006a2f00003b01c602200c20052903c0023703002005200241e0006a2f00003b01a802200520052903a80237039801200541d0026a41186a2202200c290300370300200541d0026a41106a220c2009290300370300200541d0026a41086a2209200a29030037030020052005290398013703d002200541f8006a41186a2002290300370300200541f8006a41106a200c290300370300200541f8006a41086a22022009290300370300200520052903d002370378200628020420062802006b41c0016e41057441206a220910212212450d0620122005290378370000201241186a200541f8006a41186a290300370000201241106a200541f8006a41106a290300370000201241086a20022903003700004101210c200541013602e001200520123602d80120052009410576220f3602dc01200628020022022006280204460d032006200241c0016a3602002005200241e2006a2900003701aa022005200241ea006a2900003701b20220054198016a41086a220e20052903b0023703002005200241f2006a2900003701ba0220054198016a41106a221020052903b8023703002005200241fa006a2800003601c2022005200241fe006a2f00003b01c60220054198016a41186a221820052903c0023703002005200241e0006a2f00003b01a802200520052903a80237039801200541d0026a41186a22092018290300370300200541d0026a41106a220a2010290300370300200541d0026a41086a2208200e29030037030020052005290398013703d0024102210c4120210d0340200541f8016a41186a2009290300220b370300200541f8016a41106a200a2903002211370300200541f8016a41086a20082903002216370300200520052903d00222173703f8012009200b370300200a201137030020082016370300200520173703d0020240200c417f6a200f470d00200541d8016a200f200628020420062802006b41c0016e41016a109a0120052802d80121120b2012200d6a220220052903d002370000200241186a2009290300370000200241106a200a290300370000200241086a20082903003700002005200c3602e0010240200628020022022006280204470d0020052802dc01210f0c050b2006200241c0016a3602002005200241e2006a2900003701aa022005200241ea006a2900003701b202200e20052903b0023703002005200241f2006a2900003701ba02201020052903b8023703002005200241fa006a2800003601c2022005200241fe006a2f00003b01c602201820052903c0023703002005200241e0006a2f00003b01a802200520052903a8023703980120092018290300370300200a20102903003703002008200e29030037030020052005290398013703d002200d41206a210d200c41016a210c20052802dc01210f0c000b0b41cacec50041c90041a4cfc500104f000b41cacec50041c9004194cfc500104f000b200610234100210f410121124100210c0c010b200610230b200541f8016a41186a220a4200370300200541f8016a41106a22084200370300200541f8016a41086a22064200370300200542003703f8014180cdc200ad4280808080800184100c2209290000210b200541d0026a41086a2202200941086a2900003703002005200b3703d0022009102320062002290300370300200520052903d0023703f80141d7a1c200ad4280808080c00084100c2209290000210b2002200941086a2900003703002005200b3703d00220091023200420052903d002370000200441086a2002290300370000200541a8026a41086a2006290300370300200541a8026a41106a2008290300370300200541a8026a41186a200a290300370300200520052903f8013703a802200c41057422084104722202417f4c0d02200210212206450d01200541003602d802200520023602d402200520063602d002200c200541d0026a106102400240200c0d0020052802d802210620052802d402210920052802d002210e0c010b410020052802d80222066b210a20052802d002210e20052802d40221092012210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d032009410174220d200c200d200c4b1b220c4100480d03024002400240024020090d000240200c0d004101210e0c020b200c1021210e0c030b2009200c470d010b200c21090c020b200e2009200c1025210e0b200c2109200e450d060b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b200520093602d402200520063602d8022005200e3602d0020b201a2006ad422086200ead84100e02402009450d00200e10230b0240200f41ffffff3f71450d00201210230b20151023410810212206450d032006200736020420062001360200410810212215450d032015201436020420152003360200024002400240024002402000450d00200628020022022006280204460d012006200241c0016a360200200520024182016a2900003701aa0220052002418a016a2900003701b20220054198016a41086a220c20052903b002370300200520024192016a2900003701ba0220054198016a41106a220920052903b80237030020052002419a016a2800003601c20220052002419e016a2f00003b01c60220054198016a41186a220a20052903c002370300200520024180016a2f00003b01a802200520052903a80237039801200541d0026a41186a2202200a290300370300200541d0026a41106a220a2009290300370300200541d0026a41086a2209200c29030037030020052005290398013703d002200541f8006a41186a220c2002290300370300200541f8006a41106a2202200a290300370300200541f8006a41086a220a2009290300370300200520052903d002370378200628020420062802006b41c0016e41057441206a220910212212450d0620122005290378370000201241186a200c290300370000201241106a2002290300370000201241086a200a2903003700004101210c200541013602e001200520123602d80120052009410576220f3602dc01200628020022022006280204460d022006200241c0016a360200200520024182016a2900003701aa0220052002418a016a2900003701b20220054198016a41086a220e20052903b002370300200520024192016a2900003701ba0220054198016a41106a221020052903b80237030020052002419a016a2800003601c20220052002419e016a2f00003b01c60220054198016a41186a221820052903c002370300200520024180016a2f00003b01a802200520052903a80237039801200541d0026a41186a22092018290300370300200541d0026a41106a220a2010290300370300200541d0026a41086a2208200e29030037030020052005290398013703d0024102210c4120210d0340200541f8016a41186a2009290300220b370300200541f8016a41106a200a2903002211370300200541f8016a41086a20082903002216370300200520052903d00222173703f8012009200b370300200a201137030020082016370300200520173703d0020240200c417f6a200f470d00200541d8016a200f200628020420062802006b41c0016e41016a109a0120052802d80121120b2012200d6a220220052903d002370000200241186a2009290300370000200241106a200a290300370000200241086a20082903003700002005200c3602e0010240200628020022022006280204470d0020052802dc01210f0c040b2006200241c0016a360200200520024182016a2900003701aa0220052002418a016a2900003701b202200e20052903b002370300200520024192016a2900003701ba02201020052903b80237030020052002419a016a2800003601c20220052002419e016a2f00003b01c602201820052903c002370300200520024180016a2f00003b01a802200520052903a8023703980120092018290300370300200a20102903003703002008200e29030037030020052005290398013703d002200d41206a210d200c41016a210c20052802dc01210f0c000b0b20151023200610230c030b200610234100210f410121124100210c0c010b200610230b20054198016a41186a2209420037030020054198016a41106a220a420037030020054198016a41086a22024200370300200542003703980141b0dfc300ad4280808080a00184100c2206290000210b2002200641086a2900003703002005200b370398012006102341bcbac500ad4280808080b00184100c2206290000210b200541d0026a41086a2208200641086a2900003703002005200b3703d00220061023201320052903d002370000201341086a2008290300370000200541d8006a41086a2002290300370300200541d8006a41106a200a290300370300200541d8006a41186a20092903003703002005200529039801370358200c41057422084104722202417f4c0d03200210212206450d02200541003602b002200520023602ac02200520063602a802200c200541a8026a106102400240200c0d0020052802b002210620052802ac02210920052802a802210e0c010b410020052802b00222066b210a20052802a802210e20052802ac0221092012210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d042009410174220d200c200d200c4b1b220c4100480d04024002400240024020090d000240200c0d004101210e0c020b200c1021210e0c030b2009200c470d010b200c21090c020b200e2009200c1025210e0b200c2109200e450d070b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b200520093602ac02200520063602b0022005200e3602a8020b20192006ad422086200ead84100e02402009450d00200e10230b0240200f41ffffff3f71450d00201210230b201510230b410810212206450d032006200736020420062001360200410810212201450d032001201436020420012003360200024002400240024002402000450d00200628020022022006280204460d012006200241c0016a3602002005200241a2016a2900003701aa022005200241aa016a2900003701b20220054198016a41086a220c20052903b0023703002005200241b2016a2900003701ba0220054198016a41106a220920052903b8023703002005200241ba016a2800003601c2022005200241be016a2f00003b01c60220054198016a41186a220a20052903c0023703002005200241a0016a2f00003b01a802200520052903a80237039801200541d0026a41186a2202200a290300370300200541d0026a41106a220a2009290300370300200541d0026a41086a2209200c29030037030020052005290398013703d002200541f8006a41186a220c2002290300370300200541f8006a41106a2202200a290300370300200541f8006a41086a220a2009290300370300200520052903d002370378200628020420062802006b41c0016e41057441206a220910212212450d0620122005290378370000201241186a200c290300370000201241106a2002290300370000201241086a200a2903003700004101210c200541013602e001200520123602d80120052009410576220f3602dc01200628020022022006280204460d022006200241c0016a3602002005200241a2016a2900003701aa022005200241aa016a2900003701b20220054198016a41086a220e20052903b0023703002005200241b2016a2900003701ba0220054198016a41106a221020052903b8023703002005200241ba016a2800003601c2022005200241be016a2f00003b01c60220054198016a41186a221820052903c0023703002005200241a0016a2f00003b01a802200520052903a80237039801200541d0026a41186a22092018290300370300200541d0026a41106a220a2010290300370300200541d0026a41086a2208200e29030037030020052005290398013703d0024102210c4120210d0340200541f8016a41186a2009290300220b370300200541f8016a41106a200a2903002211370300200541f8016a41086a20082903002216370300200520052903d00222173703f8012009200b370300200a201137030020082016370300200520173703d0020240200c417f6a200f470d00200541d8016a200f200628020420062802006b41c0016e41016a109a0120052802d80121120b2012200d6a220220052903d002370000200241186a2009290300370000200241106a200a290300370000200241086a20082903003700002005200c3602e0010240200628020022022006280204470d0020052802dc01210f0c040b2006200241c0016a3602002005200241a2016a2900003701aa022005200241aa016a2900003701b202200e20052903b0023703002005200241b2016a2900003701ba02201020052903b8023703002005200241ba016a2800003601c2022005200241be016a2f00003b01c602201820052903c0023703002005200241a0016a2f00003b01a802200520052903a8023703980120092018290300370300200a20102903003703002008200e29030037030020052005290398013703d002200d41206a210d200c41016a210c20052802dc01210f0c000b0b20011023200610230c030b20061023410121124100210c4100210f0c010b200610230b20054198016a41186a2209420037030020054198016a41106a220a420037030020054198016a41086a220242003703002005420037039801419dcdc200ad4280808080a00284100c2206290000210b2002200641086a2900003703002005200b370398012006102341d7a1c200ad4280808080c00084100c2206290000210b200541d0026a41086a2208200641086a2900003703002005200b3703d00220061023201320052903d002370000201341086a2008290300370000200541d8006a41086a2002290300370300200541d8006a41106a200a290300370300200541d8006a41186a20092903003703002005200529039801370358200c41057422084104722202417f4c0d03200210212206450d02200541003602b002200520023602ac02200520063602a802200c200541a8026a106102400240200c0d0020052802b002210620052802ac02210920052802a802210e0c010b410020052802b00222066b210a20052802a802210e20052802ac0221092012210d0340200d210202402009200a6a411f4b0d00200641206a220c2006490d042009410174220d200c200d200c4b1b220c4100480d04024002400240024020090d000240200c0d004101210e0c020b200c1021210e0c030b2009200c470d010b200c21090c020b200e2009200c1025210e0b200c2109200e450d070b200241206a210d200e20066a220c2002290000370000200c41186a200241186a290000370000200c41106a200241106a290000370000200c41086a200241086a290000370000200a41606a210a200641206a2106200841606a22080d000b200520093602ac02200520063602b0022005200e3602a8020b20192006ad422086200ead84100e02402009450d00200e10230b0240200f41ffffff3f71450d00201210230b200110230b200541f0026a24000f0b102c000b1033000b1032000b102a000bdb1104047f017e137f047e23004180036b220224002002412036022420022001360220200241286a2001ad42808080808004841010108b010240024002400240200228022822030d00200041003602000c010b200228022c21042002200241306a28020036023c20022003360238200241186a200241386a1088010240024020022802180d00200228021c2205200228023c411c6e2201200120054b1bad421c7e2206422088a70d032006a72201417f4c0d030240024020010d00410421070c010b200110212207450d050b200241003602482002200736024020022001411c6e3602440240024002400240024002402005450d00200241a0026a41c4006a2108410021094100210a0340200241106a200241386a10880120022802100d062002280214220b200228023c41e0006e22012001200b4b1bad42e0007e2206422088a70d0a2006a72201417f4c0d0a0240024020010d004108210c0c010b20011021220c450d0c0b200241003602582002200c3602502002200141e0006e3602540240024002400240200b450d004100210d0340200241a0026a200241386a108304200241e0016a41386a2201200241a0026a41386a290300370300200241e0016a41306a220e200241a0026a41306a290300370300200241e0016a41286a220f200241a0026a41286a290300370300200241e0016a41206a2210200241a0026a41206a290300370300200241e0016a41186a2211200241a0026a41186a290300370300200241e0016a41106a2212200241a0026a41106a290300370300200241e0016a41086a2213200241a0026a41086a290300370300200241c0016a41086a2214200841086a290200370300200241c0016a41106a2215200841106a290200370300200241c0016a41186a2216200841186a280200360200200220022903a0023703e001200220082902003703c00120022802e0022217450d0220024180016a41386a2218200129030037030020024180016a41306a2219200e29030037030020024180016a41286a220e200f29030037030020024180016a41206a220f201029030037030020024180016a41186a2210201129030037030020024180016a41106a2211201229030037030020024180016a41086a22122013290300370300200241e0006a41086a22132014290300370300200241e0006a41106a22142015290300370300200241e0006a41186a22152016280200360200200220022903e00137038001200220022903c0013703600240200d2002280254470d00200241d0006a200d41011096012002280250210c2002280258210d0b200c200d41e0006c6a2201200229038001370300200141106a2011290300370300200141086a2012290300370300201929030021062018290300211a200e290300211b200f290300211c2010290300211d200141c0006a2017360200200141186a201d370300200141206a201c370300200141286a201b370300200141c4006a2002290360370200200141386a201a370300200141306a2006370300200141cc006a2013290300370200200141d4006a2014290300370200200141dc006a20152802003602002002200d41016a220d360258200b417f6a220b0d000b0b200c450d0920022902542106200241086a200241386a10880120022802080d06200228020c220b200228023c220d41027622012001200b4b1b2201410274220e417f4c0d0d20010d014104210f0c020b0240200d450d00200d41e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141e0006a2101200d41a07f6a220d0d000b0b20022802542201450d08200141e0006c0d070c080b200e1021220f450d0c0b200241003602a802200220013602a4022002200f3602a0020240200b450d00410021010340200d4104490d042002200d417c6a220d36023c20022002280238220e41046a360238200e280000220e418094ebdc034b0d040240200120022802a402470d00200241a0026a20014101107920022802a002210f20022802a80221010b200f20014102746a200e3602002002200141016a22013602a802200b417f6a220b0d000b0b200f450d0320022902a402211a200d4104490d04200a41016a210a2002200d417c6a36023c20022002280238220141046a3602382001280000210d024020092002280244470d00200241c0006a2009410110a30120022802402107200228024821090b20072009411c6c6a2201200d360218200120063702042001200c360200200141106a201a3702002001410c6a200f3602002002200941016a2209360248200a2005470d000b0b2007450d0520002002290244370204200020073602000c060b20022802a40241ffffffff0371450d00200f10230b02402006422088a72201450d00200141e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141e0006a2101200d41a07f6a220d0d000b0b2006a72201450d02200141e0006c0d010c020b0240201a42ffffffff0383500d00200f10230b02402006422088a72201450d00200141e0006c210d200c41d4006a210103400240200141706a2802002208450d00200841306c450d002001416c6a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141e0006a2101200d41a07f6a220d0d000b0b2006a72201450d01200141e0006c450d010b200c10230b2007200910f00320022802442201450d002001411c6c450d00200710230b200241003602e801200242013703e0012002410a360284012002200241206a360280012002200241e0016a3602c001200241b4026a4101360200200242013702a40220024180c5c6003602a002200220024180016a3602b002200241c0016a4184a5c200200241a0026a10311a20023502e80142208620023502e00184100a024020022802e401450d0020022802e00110230b200041003602000b2004450d00200310230b20024180036a24000f0b1032000b1033000bd90101037f02402001450d0020002001411c6c6a21020340024020002802082201450d00200141e0006c2103200028020041d4006a210103400240200141706a2802002204450d00200441306c450d002001416c6a28020010230b0240200128020041ffffff3f71450d002001417c6a28020010230b200141e0006a2101200341a07f6a22030d000b0b0240200041046a2802002201450d00200141e0006c450d00200028020010230b2000411c6a21010240200041106a28020041ffffffff0371450d00200028020c10230b2001210020012002470d000b0b0bfa0301067f230041106b22032400024002402002411c6c41046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b20034100360208200320043602042003200536020020022003106102402002450d0020012002411c6c6a2106034020012802002105200128020822022003106102402002450d002005200241e0006c6a2107034020032005412010622003200541206a36020c2003410c6a200310db012003200541306a36020c2003410c6a200310db0120052802402102200528024822042003106102402004450d00200441306c210403402003200241106a412010622003200236020c200241306a21022003410c6a200310db01200441506a22040d000b0b200541e0006a210820052802502102200528025822042003106102402004450d002004410574210403402003200241201062200241206a2102200441606a22040d000b0b2008210520082007470d000b0b2001411c6a2105200128020c2102200128021422042003106102402004450d002004410274210403402003200228020036020c20032003410c6a41041062200241046a21022004417c6a22040d000b0b2003200128021836020c20032003410c6a410410622005210120052006470d000b0b20002003290300370200200041086a200341086a280200360200200341106a24000f0b1032000b1033000ba90603067f017e047f230041f0006b22022400200241286a200141146a350200422086200135020c841019108b010240024020022802282203450d00200241086a2104200141106a2105034002400240200141086a22062802002207200229022c2208422088a722094b0d002001280200220a2003460d01200a2003200710a305450d010b2008a7450d02200310230c020b02402005280200450d00200128020c10230b2001200336020c2005200837020020022003200910a4020240024020022d00104102460d00200241186a41086a200441086a280200360200200220042902003703182002280204210b2002280200210c024020012d0018450d002001350214422086200135020c8410110b2001280214220920062802002203490d0102400240200920036b22094108490d00200941786a2107200128020c20036a41086a210a0c010b4100210702404100280298ab470d00419ca8c700210a0c010b41002107410028028880402103410028028480402109410028029cab472106200241e000360268200242de80808010370360200241c79ec00036025c20024213370254200241b49ec00036025020024200370348419ca8c700210a2002419ca8c70036024420024201370338200241ac9ec00036023420024113360230200241b49ec00036022c20024101360228200941a0a1c000200641024622061b200241286a200341b8a1c00020061b2802101102000b41002103200241003a00480240034020072003460d01200241286a20036a200a20036a2d00003a00002002200341016a22093a00482009210320094120470d000b20002002290328370000200041186a200241286a41186a290300370000200041106a200241286a41106a290300370000200041086a200241286a41086a2903003700002000200b3602242000200c36022020002002290318370228200041306a200241186a41086a2802003602000c050b0240200341ff0171450d00200241003a00480b200b41ffffff3f71450d00200c10230b200241286a2001350214422086200135020c841019108b01200228022822030d010c020b0b2003200941dc96c7001044000b200041023a00300b200241f0006a24000b13002000410236020420004184b0c3003602000b3400200041db97c70036020420004100360200200041146a4107360200200041106a41b8b7c300360200200041086a42073702000b2c01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241003600000bb20201057f230041106b2203240002400240024002402001410274220441046a2205417f4c0d000240024020050d00410121060c010b200510212206450d020b2003410036020820032005360204200320063602002001200310610240024020032802042207200328020822016b2004490d0020032802002105200721060c010b200120046a22052001490d03200741017422062005200620054b1b22064100480d030240024020070d00024020060d00410121050c020b2006102122050d010c060b2003280200210520072006460d0020052007200610252205450d050b20032006360204200320053602000b200520016a2000200410a1051a2002290200200120046aad4220862005ad84100e02402006450d00200510230b200341106a24000f0b1032000b1033000b102c000b102a000b9111030b7f017e017f230041d0006b2201240020014100360230200142013703280240024002402000280200220241044b0d000240024002400240024020020e050001020304000b410110212202450d062001410136022c20012002360228200241013a000020014101360230200028020421032000410c6a2802002202200141286a10610240024020020d00200128023021020c010b2003200241286c6a21044100200128023022056b2106410021020340200520026a2107024002402006200128022c22086a4120490d00200128022821092008210a0c010b200741206a22092007490d082008410174220a2009200a20094b1b220a4100480d080240024020080d000240200a0d00410121090c020b200a102122090d010c0b0b200128022821092008200a460d0020092008200a10252209450d0a0b2001200a36022c200120093602280b200920056a20026a220b200320026a2208290000370000200b41186a200841186a290000370000200b41106a200841106a290000370000200b41086a200841086a2900003700002001200741206a220b360230200841206a290300210c0240200a20066a41606a41074b0d00200b41086a220d200b490d08200a410174220b200d200b200d4b1b220b4100480d0802400240200a0d000240200b0d00410121090c020b200b10212209450d0b0c010b200a200b460d002009200a200b10252209450d0a0b2001200b36022c200120093602280b200920056a20026a41206a200c3700002001200741286a360230200641586a2106200241286a21022004200841286a470d000b200520026a21020b200041106a280200210a02400240200128022c220920026b4104490d00200128022821080c010b200241046a22082002490d06200941017422062008200620084b1b22064100480d060240024020090d00024020060d00410121080c020b200610212208450d090c010b2001280228210820092006460d0020082009200610252208450d080b2001200636022c200120083602280b200820026a200a3600002001200241046a3602300c040b410110212202450d052001410136022c20012002360228200241023a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d052001280228210202402008200a460d0020022008200a10252202450d070b2001200a36022c200120023602280b200220093600012001410536023020002802082102200041106a2802002208200141286a10610240024020080d002001280230210a0c010b2002200841286c6a210b2001280230210a034002400240200128022c2207200a6b4120490d00200a41206a210820012802282109200721060c010b200a41206a2208200a490d07200741017422092008200920084b1b22064100480d070240024020070d00024020060d00410121090c020b200610212209450d0a0c010b2001280228210920072006460d0020092007200610252209450d090b2001200636022c200120093602280b2009200a6a220a2002290000370000200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a29000037000020012008360230200241206a290300210c0240200620086b41074b0d00200841086a220a2008490d0720064101742207200a2007200a4b1b220a4100480d070240024020060d000240200a0d00410121090c020b200a10212209450d0a0c010b2006200a460d0020092006200a10252209450d090b2001200a36022c200120093602280b200920086a200c3700002001200841086a220a360230200b200241286a2202470d000b0b200041146a280200210902400240200128022c2208200a6b4104490d00200128022821020c010b200a41046a2202200a490d05200841017422062002200620024b1b22064100480d050240024020080d00024020060d00410121020c020b200610212202450d080c010b2001280228210220082006460d0020022008200610252202450d070b2001200636022c200120023602280b2002200a6a20093600002001200a41046a3602300c030b410110212202450d042001410136022c20012002360228200241033a000020014101360230200041086a290300210c02400240200128022c2208417f6a4108490d00200128022821020c010b200841017422024109200241094b1b22094100480d0420012802282102024020082009460d0020022008200910252202450d060b2001200936022c200120023602280b2002200c370001200141093602300c020b410110212202450d032001410136022c20012002360228200241043a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d032001280228210202402008200a460d0020022008200a10252202450d050b2001200a36022c200120023602280b20022009360001200141053602300c010b410110212202450d022001410136022c20012002360228200241053a0000200141013602302000280204210902400240200128022c2208417f6a4104490d00200128022821020c010b200841017422024105200241054b1b220a4100480d022001280228210202402008200a460d0020022008200a10252202450d040b2001200a36022c200120023602280b20022009360001200141053602300b200141146a200141306a2802003600002001200129032837000c200141346a200141106a290000370000200141c6a4b9da04360029200141023a00282001200129000937002d200141286a10f80302402000280200220241014b0d000240024020020e020001000b200041086a2802002202450d01200241286c450d01200028020410230c010b2000410c6a2802002202450d00200241286c450d00200041086a28020010230b200141d0006a24000f0b102c000b102a000bd00703047f017e057f230041f0006b22012400200141c8006a41186a4200370300200141c8006a41106a22024200370300200141c8006a41086a220342003703002001420037034841e4dec400ad4280808080e00084100c220429000021052003200441086a29000037030020012005370348200410234191dfc400ad4280808080e00084100c22042900002105200141386a41086a2206200441086a2900003703002001200537033820041023200220012903382205370300200141186a41086a2003290300370300200141186a41106a2005370300200141186a41186a200629030037030020012001290348370318200141c8006a200141186a10f70202400240200128024822020d0041002106200141003602102001420437030841042102410021030c010b2001200129024c220537020c200120023602082005422088a721032005a721060b200141c8006a41206a2207200041206a280200360200200141c8006a41186a2208200041186a290200370300200141c8006a41106a2209200041106a290200370300200141c8006a41086a2204200041086a29020037030020012000290200370348024020032006470d00200141086a2003410110a201200128020c210620012802082102200128021021030b2002200341246c220a6a22002001290348370200200041206a2007280200360200200041186a2008290300370200200041106a2009290300370200200041086a20042903003702002001200341016a22003602102008420037030020094200370300200442003703002001420037034841e4dec400ad4280808080e00084100c220829000021052004200841086a29000037030020012005370348200810234191dfc400ad4280808080e00084100c22082900002105200141386a41086a2207200841086a2900003703002001200537033820081023200920012903382205370300200141186a41086a2004290300370300200141186a41106a2005370300200141186a41186a2007290300370300200120012903483703182001412036024c2001200141186a36024820022000200141c8006a10f802024020002003490d00200a41246a21032002210003400240024020002d0000220441044b0d0002400240024020040e050400010204040b2000410c6a280200450d03200041086a28020010230c030b2000410c6a280200450d02200041086a28020010230c020b2000410c6a280200450d01200041086a28020010230c010b200041086a280200450d00200041046a28020010230b200041246a21002003415c6a22030d000b0b02402006450d00200641246c450d00200210230b200141f0006a24000bed0803067f017e057f230041f0016b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a220541014b0d0320050e020102010b200042023703000c040b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a36020420012004410d6a36020041002105200241003a008801410d20036b2109200341726a2106024002400340200920056a450d01200241e8006a20056a200420056a220a410d6a2d00003a0000200120063602042001200a410e6a3602002002200541016a220a3a0088012006417f6a2106200a2105200a4120470d000b200241d0016a41186a200241e8006a41186a290300370300200241d0016a41106a200241e8006a41106a290300370300200241d0016a41086a200241e8006a41086a290300370300200220022903683703d00141002105200241003a00a8012004200a6a2109200a20036b410d6a210a0340200a20056a450d02200241e8006a20056a200920056a2204410d6a2d00003a00002001200636020420012004410e6a3602002002200541016a22043a00a8012006417f6a210620042105200441c000470d000b200241086a41386a2201200241e8006a41386a290300370300200241086a41306a2205200241e8006a41306a290300370300200241086a41286a2206200241e8006a41286a290300370300200241086a41206a2204200241e8006a41206a290300370300200241086a41186a220a200241e8006a41186a290300370300200241086a41106a2203200241e8006a41106a290300370300200241086a41086a2209200241e8006a41086a290300370300200241c8006a41086a220b200241d0016a41086a290300370300200241c8006a41106a220c200241d0016a41106a290300370300200241c8006a41186a220d200241d0016a41186a29030037030020022002290368370308200220022903d001370348200041106a20073602002000200837030820004200370300200020022903483702142000411c6a200b290300370200200041246a200c2903003702002000412c6a200d290300370200200020022903083702342000413c6a2009290300370200200041c4006a2003290300370200200041cc006a200a290300370200200041d4006a2004290300370200200041dc006a2006290300370200200041e4006a2005290300370200200041ec006a20012903003702000c060b200541ff0171450d01200241003a0088010c010b200541ff0171450d00200241003a00a8010b200042023703000c030b20064104490d012004280001210620012003417b6a22053602042001200441056a36020020054108490d0120004201370300200429000521082001200341736a36020420012004410d6a360200200041106a200636020020002008370308200041146a200241e8006a41e40010a1051a0c020b200042023703000c010b200042023703000b200241f0016a24000b130020004107360204200041dcc2c3003602000b340020004196adc30036020420004100360200200041146a4109360200200041106a4198d9c300360200200041086a42093702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102122060d001033000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b2d01017f02404104102122020d001033000b20004284808080c00037020420002002360200200241e8073600000b13002000410436020420004188e9c3003602000bcd0505067f017e047f017e027f23004180026b22022400024002400240024002402000280200220320002802044f0d00200028020c2104200141086a2105200241a0016a4102722106024003402000200341016a360200200241186a2000280208280200220710f60220022d00184101460d0120022900192108200241086a200710880120022802080d012007280204200228020c2203490d012003417f4c0d0302400240024020030d00410121090c010b200310272209450d0820072802042003490d0120092007280200200310a1051a2007280204220a2003490d062007200a20036b3602042007200728020020036a3602000b20022008370310024002402001280200220b450d002001280204210c0c010b2006410041da0010a0051a200241186a410041840110a0051a41e4011021220b450d074100210c200b4100360200200b41046a200241a0016a41dc0010a1051a200b41e0006a200241186a41840110a1051a200141003602042001200b3602000b2003ad220d422086200d84210d024002400340200b41086a2107200b2f0106220e41037421034100210a024003402003450d01200241106a2007410810a305220f450d03200341786a2103200a41016a210a200741086a2107200f417f4a0d000b200a417f6a210e0b0240200c450d00200c417f6a210c200b200e4102746a41e4016a280200210b0c010b0b2002200837022c200220053602282002200e360224200220013602202002200b36021c200241003602182002200d3702a401200220093602a001200241186a200241a0016a1080040c010b200b200a410c6c6a220341e4006a2207280200210a2007200d370200200341e0006a22072802002103200720093602002003450d00200a450d00200310230b200028020022032000280204490d010c030b0b200910230b200441013a00000b20024180026a24000f0b1032000b2003200a418ca9c0001044000b102a000b1033000bc91305027f017e067f037e0a7f230041b0036b2202240020002802102203200328020041016a36020020002902142104200028020c2105200028020821062000280200210320002802042100200241f0016a41086a2207200141086a280200360200200220012902003703f001024002400240024002400240024020002f01062201410b490d00200241d0026a410272410041da0010a0051a200241386a410041840110a0051a41e40110212208450d0420084100360200200841046a200241d0026a41dc0010a1051a200841e0006a200241386a41840110a1052107200241386a41086a2209200041b0016a280200360200200220002902a8013703382000413f6a2d0000210a200041386a350000210b2000413c6a330000210c2000413e6a310000210d200841086a200041c0006a20002f010641796a220141037410a105210e2007200041b4016a2001410c6c10a1052107200041063b0106200820013b0106200241d0026a41086a2009280200360200200220022903383703d002200b200c200d4210868442208684210b0240024020054107490d002005410374200e6a41506a200e200541796a22094103746a220e200141ffff037120096b41037410a2051a200e20043700002005410c6c20076a220541b87f6a200541ac7f6a2205200841066a22012f010020096b410c6c10a2051a200541086a200241f0016a41086a280200360200200520022903f0013702000c010b200041086a20054103746a220741086a2007200041066a22012f010020056b41037410a2051a20072004370000200041e0006a2005410c6c6a2207410c6a200720012f010020056b410c6c10a2051a200741086a200241f0016a41086a280200360200200720022903f0013702000b200120012f010041016a3b0100200241286a41086a220f200241d0026a41086a22102802002205360200200241086a221120053602002002200a3a0017200220022903d00222043703282002200b3e02102002200b4230883c00162002200b4220883d01142002200437030020022903102104200028020022090d01410021120c020b200020054103746a220341106a200341086a2203200120056b41037410a2051a2003200437000020002005410c6c6a220341ec006a200341e0006a220120002f010620056b410c6c10a2051a200341e8006a2007280200360200200120022903f001370200200020002f010641016a3b01060c020b20002f01042113200241d0026a41027221144100210002400340200220093602242002200341016a2212360220200f20112802003602002002200229030037032820032000470d01201341ffff0371210702400240024020092f01062203410b490d002014410041da0010a0051a200241f0016a200241d0026a41dc0010a1051a200241386a410041b40110a0051a41940210212201450d0720014100360200200141046a200241f0016a41dc0010a1051a200141e0006a200241386a41b40110a10521002009290038210b200241386a41086a220e200941b0016a280200360200200220092902a801370338200141086a200941c0006a20092f0106220541796a220341037410a10521152000200941b4016a2003410c6c10a1052116200141e4016a20094180026a2005417a6a220a41027410a1052117200941063b0106200120033b01060240200a450d00410021032017210003402000280200220520033b010420052001360200200041046a2100200a200341016a2203470d000b0b2010200e280200220336020020022002290338220c3703d002200e20033602002002200c370338201341ffff037122004107490d0120152007417a6a22004103746a2015200741796a22034103746a220520012f010620036b41037410a2051a200520043700002007410c6c20166a220541b87f6a200541ac7f6a220520012f0106220a20036b410c6c10a2051a200541086a200f280200360200200520022903283702002001200a41016a22053b01062007410274221320176a416c6a201720004102746a220a200541ffff0371220720006b41027410a2051a200a200836020020072000490d02200120136a41cc016a2100034020002802002205200341016a22033b010420052001360200200041046a210020032007490d000c030b0b200941086a2205200741016a22004103746a200520074103746a2205200320076b220141037410a2051a2005200437000020092007410c6c6a220541ec006a200541e0006a220a2001410c6c10a2051a200541e8006a200241286a41086a280200360200200a20022903283702002009200341016a22033b01062007410274200941e4016a22056a41086a200520004102746a2205200341ffff0371220120006b41027410a2051a20052008360200201341ffff037120014f0d0520092000417f6a22034102746a41e8016a2100034020002802002205200341016a22033b010420052009360200200041046a210020032001490d000c060b0b200941086a2203200741016a220a4103746a200320074103746a220320092f0106220520076b221341037410a2051a20032004370000200941e0006a2007410c6c6a2203410c6a20032013410c6c10a2051a200341086a200f280200360200200320022903283702002009200541016a22033b010620074102742217200941e4016a22056a41086a2005200a4102746a2213200341ffff03712205200a6b41027410a2051a20132008360200200020054f0d00200920176a41e8016a2103034020032802002200200741016a22073b010420002009360200200341046a210320052007470d000b0b200241106a41086a200e280200220336020020112003360200200220022903382204370310200220043703000240200928020022030d0020012108200b21040c030b20092f0104211320032109200b21042001210820122100201221030c000b0b41ecdbc4004135418c94c700102d000b200241d0026a410272410041da0010a0051a200241f0016a200241d0026a41dc0010a1051a200241386a410041b40110a0051a41940210212203450d0120034100360200200341046a200241f0016a41dc0010a1051a200341e0006a200241386a41b40110a10521052003200628020022003602e4012006200336020020062006280204220141016a360204200041003b010420002003360200200241386a41086a200241086a2802003602002002200229030037033820012012470d0220032f01062200410a4b0d0320052000410c6c6a22052002290338370200200320004103746a41086a2004370000200541086a200241386a41086a2802003602002003200041016a22004102746a41e4016a2008360200200320003b0106200820003b0104200820033602000b200241b0036a24000f0b102a000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000bb30301027f230041106b220224000240024020002d00004101460d00200241003a000e20012002410e6a4101106220002d0001220341094b0d010240024002400240024002400240024002400240024020030e0a00010203040506070809000b200241003a000f2002410f6a21000c090b200241013a000f2002410f6a21000c080b200241023a000f2002410f6a21000c070b200241033a000f2002410f6a21000c060b200241043a000f2002410f6a21000c050b200241053a000f2002410f6a21000c040b200241063a000f2002410f6a21000c030b200241073a000f20012002410f6a410110622002200041026a2d00003a000f2002410f6a21000c020b200241083a000f2002410f6a21000c010b200241093a000f2002410f6a21000b20012000410110620c010b200241013a000e20012002410e6a4101106220002d0001220341024b0d0002400240024020030e03000102000b200241003a000e20012002410e6a410110620c020b200241013a000e20012002410e6a410110620c010b200241023a000e20012002410e6a410110622002200041026a2d00003a000e20012002410e6a410110620b200241106a24000bbc0201057f024002400240200041046a2802002202200041086a28020022036b20012802042204200128020022056b22064f0d00200320066a22052003490d01200241017422042005200420054b1b22054100480d010240024020020d00024020050d00410121040c020b2005102122040d010c040b2000280200210420022005460d0020042002200510252204450d03200041086a28020021030b20002004360200200041046a200536020020012802002105200128020421040b024020052004460d00200028020021042001200541016a360200200420036a20052d00003a0000200341016a2103200128020022052001280204460d0003402001200541016a360200200420036a20052d00003a0000200341016a2103200128020022052001280204470d000b0b200041086a20033602000f0b102c000b102a000b9e06020a7f017e230041d0016b2202240041002103200241003a00c0012001280204417f6a2104024002400240024003402004417f460d01200241a0016a20036a200128020022052d00003a0000200120043602042001200541016a3602002002200341016a22053a00c0012004417f6a21042005210320054120470d000b20024180016a41186a2204200241a0016a41186a220329030037030020024180016a41106a2205200241a0016a41106a220629030037030020024180016a41086a2207200241a0016a41086a2208290300370300200220022903a00137038001200241a0016a200110d00120022802c0012209450d01200241c0006a41186a220a2004290300370300200241c0006a41106a220b2005290300370300200241c0006a41086a22052007290300370300200241c0006a41286a22072008290300370300200241c0006a41306a22082006290300370300200241c0006a41386a220620032903003703002002200229038001370340200220022903a001370360200241c4016a2802002104200241a0016a41286a290300210c200241086a2005290300370300200241106a200b290300370300200241186a200a290300370300200241206a22032002290360370300200241286a22052007290300370300200241306a22072008290300370300200241386a2208200629030037030020022002290340370300200241c0006a200110cf012002280240450d02200241a0016a41086a2201200241c0006a41086a280200360200200220022903403703a001200041386a2008290300370300200041306a2007290300370300200041286a2005290300370300200041206a2003290300370300200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a29030037030020002002290300370300200041c8006a200c3703002000200436024420002009360240200041d0006a20022903a001370300200041d8006a20012802003602000c030b200341ff0171450d00200241003a00c0010b200041003602400c010b200041003602402004450d00200441306c450d00200910230b200241d0016a24000bbb0504037f017e087f037e23004180016b220224002002200110880102400240024002402002280200450d00200041003602000c010b20022802042203200128020441286e2204200420034b1bad42287e2205422088a70d012005a72204417f4c0d010240024020040d00410821060c010b200410212206450d030b4100210720024100360210200220063602082002200441286e36020c0240024002402003450d0041002108034041002104200241003a0078200841016a210820012802042109417f210a034020092004460d03200241d8006a20046a2001280200220b2d00003a000020012009200a6a3602042001200b41016a3602002002200441016a220c3a0078200a417f6a210a200c2104200c4120470d000b200241386a41186a2204200241d8006a41186a290300370300200241386a41106a220a200241d8006a41106a290300370300200241386a41086a220d200241d8006a41086a290300370300200220022903583703382009200c6b220c4108490d03200b29000121052001200b41096a3602002001200c41786a360204200241186a41086a220c200d290300370300200241186a41106a2209200a290300370300200241186a41186a220a20042903003703002002200229033837031802402007200228020c470d00200241086a2007410110980120022802082106200228021021070b2006200741286c6a22042002290318370300200c290300210e2009290300210f200a290300211020042005370320200441186a2010370300200441106a200f370300200441086a200e3703002002200741016a220736021020082003470d000b0b20002002290308370200200041086a200241086a41086a2802003602000c020b200441ff0171450d00200241003a00780b20004100360200200228020c2204450d00200441286c450d00200610230b20024180016a24000f0b1032000b1033000bb70204027f017e027f037e230041106b220224000240024020012802082203ad42287e2204422088a70d002004a72205417f4c0d00200128020021010240024020050d00410821060c010b200510212206450d020b20024100360208200220063602002002200541286e3602042002410020031098012002280208210502402003450d00200341286c21062002280200200541286c6a21030340200141086a2903002104200141106a2903002107200141186a290300210820012903002109200341206a200141206a290300370300200341186a2008370300200341106a2007370300200341086a200437030020032009370300200341286a2103200541016a2105200141286a2101200641586a22060d000b0b20002002290300370200200041086a2005360200200241106a24000f0b1032000b1033000b8c0201037f024002400240024002400240024020012802000e0400010203000b41012102410110212201450d05200141003a0000410121030c040b410110212202450d04200241013a00002001280204210320024101410510252202450d042002200336000120012802082104410a210320024105410a10252201450d04200120043600050c020b41012102410110212201450d03200141023a0000410121030c020b410110212202450d02200241033a00002001280204210320024101410510252202450d022002200336000120012802082104410a210320024105410a10252201450d02200120043600050b410921020b2000200236020820002003360204200020013602000f0b102a000bd20402067f047e230041f0006b220224002002412036020420022001360200200241086a2001ad42808080808004841010108b0102400240200228020822030d00200041023a00000c010b200228020c210402400240200241106a2802002205450d0020032d0000220641014b0d004100210102400240024020060e020100010b41002101200241003a0068200341016a21072005417f6a2106034020062001460d02200241c8006a20016a200720016a2d00003a00002002200141016a22053a00682005210120054120470d000b200241186a41186a200241c8006a41186a290300370300200241186a41106a200241c8006a41106a290300370300200241186a41086a200241c8006a41086a29030037030020022002290348370318410121010b200241c8006a41186a200241186a41186a2903002208370300200241c8006a41106a200241186a41106a2903002209370300200241c8006a41086a200241186a41086a290300220a37030020022002290318220b370348200041196a2008370000200041116a2009370000200041096a200a3700002000200b3700010c020b200141ff0171450d00200241003a00680b20024100360220200242013703182002410a36023c200220023602382002200241186a360244200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350220422086200235021884100a0240200228021c450d00200228021810230b410221010b200020013a00002004450d00200310230b200241f0006a24000bf90403027f017e057f230041d0006b2202240041a7b3c500ad4280808080c00084100c22032900002104200241086a200341086a290000370300200220043703002003102341b4bdc500ad4280808080900284100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b8a06010c7f23004190016b220324002003200236021420032001360210200341186a2002ad4220862001ad841010108b010240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a1088010240024020032802080d00200328020c2206200328022c22074105762201200120064b1b22014105742202417f4c0d030240024020010d00410121080c010b200210212208450d050b41002109200341003602402003200136023c20032008360238024002402006450d004100210a03402007210b41002101200341003a008801200a41016a210a0340200b2001460d03200341e8006a20016a200328022822022d00003a00002003200241016a3602282003200141016a22023a0088012002210120024120470d000b200341c8006a41186a220c200341e8006a41186a290300370300200341c8006a41106a220d200341e8006a41106a290300370300200341c8006a41086a220e200341e8006a41086a2903003703002003200329036837034802402009200328023c470d00200341386a20094101109a0120032802382108200328024021090b200b20026b2107200820094105746a22012003290348370000200141186a200c290300370000200141106a200d290300370000200141086a200e2903003700002003200941016a2209360240200a2006470d000b2003200b20026b36022c0b2008450d012000200329023c370204200020083602000c020b2003410036022c0240200141ff0171450d00200341003a0088010b200328023c41ffffff3f71450d00200810230b20034100360250200342013703482003410a36023c2003200341106a3602382003200341c8006a360234200341fc006a41013602002003420137026c20034180c5c6003602682003200341386a360278200341346a4184a5c200200341e8006a10311a2003350250422086200335024884100a0240200328024c450d00200328024810230b200041003602000b2005450d00200410230b20034190016a24000f0b1032000b1033000bf90403027f017e057f230041d0006b22022400418df8c300ad4280808080900184100c22032900002104200241086a200341086a29000037030020022004370300200310234196f8c300ad4280808080e00084100c22032900002104200241106a41086a200341086a29000037030020022004370310200310232002200136022c20022002412c6aad4280808080c00084100d220329000037033020031023200241c4006a200241306a360200200241003a00482002200241306a41086a36023c20022002412c6a3602402002200241306a360238200241206a200241386a10650240024002400240024002402002280228220541206a2201417f4c0d0020022802202106024002402001450d00200110212203450d032001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1032000b1033000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000be50f04107f017e067f017e230041b0106b220224000240024002400240024020012802082203200128020c460d00200241d00d6a41c0026a2104200241c00a6a41046a2105200241ed0d6a2106200241c00a6a41b0026a2107200241c00a6a41c0026a210820024180086a41046a2109200241106a41086a210a200241900d6a410d6a220b41076a210c03402001200341d8026a3602082003280200210d200241206a200341046a41c00210a1051a200a200341d0026a2903003703002002200341c8026a290300370310200341c4026a28020022034102460d012001280210210e20024180086a200241206a41c00210a1051a200241d00d6a200941bc0210a1051a20042002290310370300200441086a200a2903003703002002200336028c10200241c00a6a200241d00d6a10c9022001200128021420022802c00a6a220f3602142005200941bc0210a1051a200241b0056a41086a2210200a290300370300200220022903103703b005200241c0056a200241c00a6a41c00210a1051a20024180086a200241c0056a41c00210a1051a200241c00a6a200941bc0210a1051a200841086a22112010290300370300200820022903b005370300200220033602fc0c02400240024020022d00880d41c000490d00200e450d00200f20012802182802004b0d010b200241d00d6a200241c00a6a10dc034100210e200241003b01a80d200241900d6a200241d00d6a200241a80d6a10cf02024020022802f00c2210450d0020022802f80c2203417f4c0d070240024020030d004101210e410021110c010b2003211120031021220e450d090b200241003602d40d200220113602d00d200e2010200310a1051a200220033602d40d20022903d00d21120b0240024020022802fc0c4101460d004101211020022802f00c450d01200241d00d6a2007109d0420023502d80d42208620022802d00d2203ad84101120022802d40d450d01200310230c010b20022802800d21030240024020022802840d221041014b0d00200241003602fc0c0c010b200241013602fc0c20022010417f6a3602840d0b200128021c28020020036a2113024020022802f00c450d00200241a0106a2013108a04200241a80d6a20023502a81042208620022802a0102214ad841010108b010240024020022802a80d22150d00200241003602d80d200242083703d00d200241d00d6a4100410010ab0120022802d80d41d0026c220341d0026d211620022802d40d211720022802d00d211802402003450d00201641d0026c21102018210303400240200341bc026a2802004102460d000240200341b0026a2802002211450d00200341b4026a280200450d00201110230b2003109e030b200341d0026a2103201041b07d6a22100d000b0b41002111024020170d00410021030c020b0240201741d0026c0d00410021030c020b2018102341002111410021030c010b20022802ac0d2110200220022802b00d3602d40d200220153602d00d200241086a200241d00d6a108801024002402002280208450d0041012111419ca8c70021160c010b200228020c2116410021110b410121032010450d00201510230b024020022802a410450d00201410230b02402015452003720d0020022802ac0d450d00201510230b200241d00d6a2007109d0420023502d80d211920022802d00d2110410810212203450d092003201336000020034100201620111b36000420194220862010ad842003ad4280808080800184100e2003102320022802d40d450d00201010230b200241d00d6a200241c00a6a41d00210a1051a2013200241d00d6a4101108c040240200228028c104102460d0002402002280280102203450d00200228028410450d00200310230b200241d00d6a10b4020b410021100b200128021c28020021112002200b2900003703d00d2002200c2800003600d70d0240024020022802900d4101460d00410421030c010b20022d009c0d211520022802940d2113200220022800d70d3600af0d200220022903d00d3703a80d4104210320134102460d00200220022800af0d3600d70d200220022903a80d3703d00d201521030b200220022903d00d3703a010200220022800d70d3600a710200620022903a010370000200641076a20022800a710360000200220033a00ec0d200220123702e40d2002200e3602e00d2002200d3602dc0d200220113602d80d200241013602d40d2002410d3a00d00d200241d00d6a10e0012001280220200f36020002402010450d00024020022802f00c2203450d0020022802f40c450d00200310230b200241c00a6a10b4020b410421100c010b200241d00d6a200241c00a6a41bc0210a1051a200241a80d6a41086a220e2011290300370300200220082903003703a80d4104211020034103460d00200241c00a6a200241d00d6a41bc0210a1051a20024180086a41086a200e290300370300200220022903a80d37038008200321100b2001200128021041016a360210200241f0026a200241c00a6a41bc0210a1051a200241e0026a41086a20024180086a41086a29030037030020022002290380083703e00220104104470d0220012802082203200128020c470d000b0b200041033602bc020c010b200241d00d6a200241f0026a41bc0210a1051a200241c00a6a41086a2203200241e0026a41086a290300370300200220022903e0023703c00a2000200241d00d6a41bc0210a105220120103602bc02200120022903c00a3703c002200141c8026a20032903003703000b200241b0106a24000f0b1032000b1033000bc21903027f017e087f23004190016b22032400418df8c300ad4280808080900184100c22042900002105200341c0006a41086a200441086a29000037030020032005370340200410234196f8c300ad4280808080e00084100c22042900002105200341d8006a41086a200441086a2900003703002003200537035820041023200320003602082003200341086aad4280808080c00084100d22042900003703182004102320034184016a2003410c6a360200200341003a0088012003200341186a41086a36027c2003200341086a360280012003200341186a360278200341286a200341f8006a106502400240024002402003280230220641206a2204417f4c0d00200328022821070240024002402004450d00200410212208450d042004410f4d0d01200421090c020b2004410174220a4110200a41104b1b2209102122080d010c050b2004410174220a4110200a41104b1b22094100480d0320042009460d0020082004200910252208450d040b20082003290340370000200841086a200341c0006a41086a2903003700000240024020094170714110460d002009210a0c010b2009410174220a4120200a41204b1b220a4100480d032009200a460d0020082009200a10252208450d040b20082003290358370010200841186a200341d8006a41086a29030037000002400240200a41606a2006490d00200a210b0c010b200641206a22092006490d03200a410174220b2009200b20094b1b220b4100480d03200a200b460d002008200a200b10252208450d040b200841206a2007200610a1051a0240200328022c450d00200710230b200341d8006a2004ad4220862008ad8422051010108b010240024020032802580d00410410212204450d032003420437027c200320043602784100200341f8006a1061200341106a200328028001360200200320032903783703080c010b200341086a41086a200341d8006a41086a280200360200200320032903583703080b200341186a41086a200341086a41086a2802002204360200200320032903083703182001200241d0026c6a210a02400240024002400240024002402004450d00200341f8006a200328021820042002107520032802784101470d01200328021c450d04200328021810230c040b2002200341186a1061200a2001460d01200241d0026c210920012104034002400240200441bc026a2802004102470d0002400240200328021c2003280220220a460d00200328021821060c010b200a41016a2206200a490d0c200a41017422072006200720064b1b22074100480d0c02400240200a0d004100210a024020070d00410121060c020b200710212206450d0f0c010b20032802182106200a2007460d002006200a200710252206450d0e2003280220210a0b2003200736021c200320063602180b2006200a6a41003a00002003200a41016a3602200c010b02400240200328021c2003280220220a460d00200328021821060c010b200a41016a2206200a490d0b200a41017422072006200720064b1b22074100480d0b02400240200a0d004100210a024020070d00410121060c020b200710212206450d0e0c010b20032802182106200a2007460d002006200a200710252206450d0d2003280220210a0b2003200736021c200320063602180b2006200a6a41013a00002003200a41016a3602202004200341186a108d040b200441d0026a2104200941b07d6a22090d000c020b0b200328027c21070240024002400240024020034184016a2802002204200341f8006a41086a2802002209460d002003280220200420096b6a220620024102746a220c417f4c0d0a02400240200c0d004101210d0c010b200c1021220d450d0c0b2003200c36022c2003200d360228200320063602302003200341286a3602782007200341f8006a200410b20320062004490d01200328023022072006490d02200328022022072009490d032003280228210c2003280218210d2003200620046b22063602382003200720096b220736023c20062007470d04200c20046a200d20096a200610a1051a0240200a2001460d00200241d0026c210920012104034002400240200441bc026a2802004102470d0002400240200328022c2003280230220a460d00200328022821060c010b200a41016a2206200a490d11200a41017422072006200720064b1b22074100480d1102400240200a0d004100210a024020070d00410121060c020b200710212206450d140c010b20032802282106200a2007460d002006200a200710252206450d132003280230210a0b2003200736022c200320063602280b2006200a6a41003a00002003200a41016a3602300c010b02400240200328022c2003280230220a460d00200328022821060c010b200a41016a2206200a490d10200a41017422072006200720064b1b22074100480d1002400240200a0d004100210a024020070d00410121060c020b200710212206450d130c010b20032802282106200a2007460d002006200a200710252206450d122003280230210a0b2003200736022c200320063602280b2006200a6a41013a00002003200a41016a3602302004200341286a108d040b200441d0026a2104200941b07d6a22090d000b0b2003280230210a200328022c210920032802282104200328021c450d06200328021810230c060b2003200341186a3602782007200341f8006a200910b203200a2001460d04200241d0026c210920012104034002400240200441bc026a2802004102470d0002400240200328021c2003280220220a460d00200328021821060c010b200a41016a2206200a490d0f200a41017422072006200720064b1b22074100480d0f02400240200a0d004100210a024020070d00410121060c020b200710212206450d120c010b20032802182106200a2007460d002006200a200710252206450d112003280220210a0b2003200736021c200320063602180b2006200a6a41003a00002003200a41016a3602200c010b02400240200328021c2003280220220a460d00200328021821060c010b200a41016a2206200a490d0e200a41017422072006200720064b1b22074100480d0e02400240200a0d004100210a024020070d00410121060c020b200710212206450d110c010b20032802182106200a2007460d002006200a200710252206450d102003280220210a0b2003200736021c200320063602180b2006200a6a41013a00002003200a41016a3602202004200341186a108d040b200441d0026a2104200941b07d6a2209450d050c000b0b2004200641c494c6001044000b2006200741c494c6001043000b2009200741d494c6001044000b200341d8006a41146a410b360200200341e4006a410d360200200341c0006a41146a41033602002003200341386a36027020032003413c6a360274200341f8006a41146a4100360200200342033702442003418ca7c7003602402003410d36025c2003419ca8c700360288012003420137027c200341e0a7c7003602782003200341d8006a3602502003200341f8006a3602682003200341f4006a3602602003200341f0006a360258200341c0006a419ca8c700103a000b2003280220210a200328021c2109200328021821040b02402004450d002005200aad4220862004ad84100e02402009450d00200410230b200b450d03200810230c030b200b450d010b200810230b200341d8006a2000108a04200241d0026c4104722204417f4c0d01200335026021052003280258210820041021220a450d0220034100360280012003200436027c2003200a3602782002200341f8006a106102402002450d00200241d0026c210a034002400240200141bc026a2802004102470d0002400240200328027c2003280280012204460d00200328027821090c010b200441016a22092004490d08200441017422062009200620094b1b22064100480d080240024020040d0041002104024020060d00410121090c020b200610212209450d0b0c010b2003280278210920042006460d0020092004200610252209450d0a20032802800121040b2003200636027c200320093602780b200920046a41003a00002003200441016a360280010c010b02400240200328027c2003280280012204460d00200328027821090c010b200441016a22092004490d07200441017422062009200620094b1b22064100480d070240024020040d0041002104024020060d00410121090c020b200610212209450d0a0c010b2003280278210920042006460d0020092004200610252209450d0920032802800121040b2003200636027c200320093602780b200920046a41013a00002003200441016a360280012001200341f8006a108d040b200141d0026a2101200a41b07d6a220a0d000b0b200328027c210120054220862008ad8420033502800142208620032802782204ad84100e02402001450d00200410230b200328025c450d00200810230b20034190016a24000f0b1032000b1033000b102c000b102a000bec0101037f230041106b220224000240024020002802b00222030d00200241003a00072001200241076a41011062200241076a21030c010b200241013a00072001200241076a41011062200041b8026a2802002204200110612001200320041062200241076a21030b200220002d00c8023a000720012003410110622000200110dd020240024020002802bc024101460d00200241003a000720012003410110620c010b200241013a000720012003410110622002200041c0026a2802003602082001200241086a410410622002200041c4026a28020036020c20012002410c6a410410620b200241106a24000b1300200041013602042000419cf8c3003602000b3400200041ecf7c30036020420004100360200200041146a4106360200200041106a4188f9c300360200200041086a420f3702000b2c01017f02404108102122020d001033000b20004288808080800137020420002002360200200242003700000b2201017f230041106b220224002002410036020020002002108604200241106a24000b130020004109360204200041c882c4003602000b3400200041aeb9c40036020420004100360200200041146a4103360200200041106a41b8b9c400360200200041086a42083702000b8d0503027f017e067f230041e0006b2202240041ecf7c300ad4280808080f00184100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341f0fec300ad4280808080c00184100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023200220003703382002200241386aad4280808080800184100d220329000037034020031023200241d4006a200241386a41086a360200200241003a00582002200241c0006a41086a36024c2002200241386a3602502002200241c0006a360248200241286a200241c8006a10650240024002400240024002402002280230220541206a2206417f4c0d0020022802282107024002402006450d00200610212203450d032006410f4d0d01200621080c050b200641017422034110200341104b1b2208102122030d040c060b200641017422084110200841104b1b220841004e0d020c040b1032000b1033000b20062008460d0020032006200810252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020084170714110460d00200821090c010b200841017422094120200941204b1b22094100480d0120082009460d0020032008200910252203450d020b20032002290318370010200341186a200241186a41086a2903003700000240200941606a20054f0d00200541206a22082005490d012009410174220a2008200a20084b1b22084100480d0120092008460d0020032009200810252203450d020b200341206a2007200510a1051a0240200228022c450d00200710230b200220013602482006ad4220862003ad84200241c8006aad4280808080c00084100e20031023200241e0006a24000f0b102c000b102a000be91305057f017e047f027e037f230041f0006b22052400200541c0006a41186a22064200370300200541c0006a41106a22074200370300200541c0006a41086a220842003703002005420037034041ecf7c300ad4280808080f00184100c2209290000210a200541e0006a41086a220b200941086a2900003703002005200a370360200910232008200b2903003703002005200529036037034041fbf7c300ad4280808080d00184100c2209290000210a200b200941086a2900003703002005200a3703602009102320072005290360220a370300200541206a41086a22092008290300370300200541206a41106a220c200a370300200541206a41186a220d200b29030037030020052005290340370320200541186a200541206a4120419ca8c70041004100108c01024002400240024002400240024020052802184101470d00410d210b41b8ebc3002108410221070c010b2006420037030020074200370300200842003703002005420037034041e4dec400ad4280808080e00084100c2206290000210a2008200641086a2900003703002005200a3703402006102341f3dec400ad4280808080e00084100c2206290000210a200b200641086a2900003703002005200a3703602006102320072005290360220a37030020092008290300370300200c200a370300200d200b29030037030020052005290340370320200541106a200541206a412010cd012005280214410020052802101b2109024020034101460d00200541206a210e0c030b200541c0006a41186a22064200370300200541c0006a41106a220c4200370300200541c0006a41086a220842003703002005420037034041ecf7c300ad4280808080f00184220f100c220d290000210a200541e0006a41086a220b200d41086a2900003703002005200a370360200d10232008200b2903003703002005200529036037034041f8fdc300ad4280808080a001842210100c220d290000210a200b200d41086a2900003703002005200a370360200d102320072005290360370000200741086a220d200b290300370000200541206a41086a220e2008290300370300200541206a41106a2211200c290300370300200541206a41186a2212200629030037030020052005290340370320200541086a200541206a412010cd012005280208450d01200528020c20094d0d014107210b41b1ebc3002108410321070b200041831a3b0100200041086a200b360200200041046a2008360200200041026a20073a0000200141046a280200220b450d02200b41286c450d02200128020010230c020b20064200370300200c42003703002008420037030020054200370340200f100c2213290000210a200b201341086a2900003703002005200a370360201310232008200b290300370300200520052903603703402010100c2213290000210a200b201341086a2900003703002005200a3703602013102320072005290360370000200d200b290300370000200e20082903003703002011200c29030037030020122006290300370300200520052903403703202005200920024101746a360240200541206aad4280808080800484200541c0006aad4280808080c00084100e200541206a210e0b200128020821082001280204210c2001280200210d200541c0006a41186a22114200370300200541c0006a41106a22124200370300200541c0006a41086a220142003703002005420037034041ecf7c300ad4280808080f00184100c2206290000210a200541e0006a41086a220b200641086a2900003703002005200a370360200610232001200b2903003703002005200529036037034041fbf7c300ad4280808080d00184100c2206290000210a200b200641086a2900003703002005200a3703602006102320072005290360370000200741086a200b290300370000200541206a41086a2001290300370300200541206a41106a2012290300370300200541206a41186a201129030037030020052005290340370320200541003602482005420137034041041021220b450d02200541043602442005200b360240200b200936000020054104360248200b410441081025220b450d0220054108360244200b20023600042005200b360240200541083602482008200541c0006a10612005280248210702402008450d00200d200841286c6a2106200d210b0340024002402005280244220220076b4120490d00200741206a210820052802402101200221090c010b200741206a22082007490d04200241017422012008200120084b1b22094100480d040240024020020d00024020090d00410121010c020b2009102122010d010c070b2005280240210120022009460d0020012002200910252201450d060b20052009360244200520013602400b200120076a2207200b290000370000200741186a200b41186a290000370000200741106a200b41106a290000370000200741086a200b41086a29000037000020052008360248200b41206a290300210a0240200920086b41074b0d00200841086a22072008490d04200941017422022007200220074b1b22074100480d040240024020090d00024020070d00410121010c020b200710212201450d070c010b20092007460d0020012009200710252201450d060b20052007360244200520013602400b200120086a200a3700002005200841086a22073602482006200b41286a220b470d000b0b2005280244210b0240024020034101460d0002400240200b2007460d00200528024021080c010b200741016a220b2007490d0420074101742208200b2008200b4b1b220b4100480d040240024020070d00410021070240200b0d00410121080c020b200b10212208450d070c010b200528024021082007200b460d0020082007200b10252208450d060b2005200b360244200520083602400b200820076a41003a00002005200741016a22073602480c010b02400240200b2007460d00200528024021080c010b200741016a220b2007490d0320074101742208200b2008200b4b1b220b4100480d030240024020070d00410021070240200b0d00410121080c020b200b10212208450d060c010b200528024021082007200b460d0020082007200b10252208450d050b2005200b360244200520083602400b200820076a41013a00002005200741016a22013602480240200b20016b41034b0d00200141046a22092001490d03200b41017422022009200220094b1b22094100480d0302400240200b0d00024020090d00410121080c020b200910212208450d060c010b200b2009460d002008200b200910252208450d050b20052009360244200520083602400b200820016a20043600002005200741056a22073602482005280244210b200528024021080b200ead42808080808004842007ad4220862008ad84100e0240200b450d00200810230b0240200c450d00200c41286c450d00200d10230b200041043a00000b200541f0006a24000f0b102c000b102a000baa0704057f017e0a7f027e23004180016b22032400200341306a2001200228020c220411020002400240024002402003280230450d00200341d8006a41106a200341306a41106a290300370300200341d8006a41086a200341306a41086a290300370300200341d8006a41186a200341306a41186a290300370300200341d8006a41206a200341306a41206a280200360200200341106a41086a200341e4006a290200370300200341106a41106a200341ec006a290200370300200341106a41186a200341f4006a290200370300200320032903303703582003200329025c370310200341d8006a200120022802102205110200417f2003280258220641016a220720072006491bad42287e2208422088a70d022008a72206417f4c0d02200610212209450d032009200329031037030020094201370320200941186a200341106a41186a220a290300370300200941106a200341106a41106a220b290300370300200941086a200341106a41086a220c29030037030020034101360208200320093602002003200641286e2207360204200341306a2001200411020002402003280230450d00200341d8006a41047221064102210d41c800210e0340200341d8006a41206a200341306a41206a280200360200200341d8006a41186a220f200341306a41186a290300370300200341d8006a41106a2210200341306a41106a290300370300200341d8006a41086a2211200341306a41086a29030037030020032003290330370358200c200641086a290200370300200b200641106a290200370300200a200641186a29020037030020032006290200370310200f200a2903003703002010200b2903003703002011200c290300370300200320032903103703580240200d417f6a2007470d00200341306a2001200511020020032007417f2003280230221241016a220920092012491b109801200328020021090b2009200e6a221241606a220720032903583703002011290300210820102903002113200f290300211420124201370300200741186a2014370300200741106a2013370300200741086a20083703002003200d360208200341306a200120041102002003280230450d01200e41286a210e200d41016a210d200328020421070c000b0b2001200228020011040002402002280204450d00200110230b20002003290300370200200041086a200341086a2802003602000c010b2000410036020820004208370200200120022802001104002002280204450d00200110230b20034180016a24000f0b1032000b1033000bd60302057f047e230041f0006b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b0102400240200228021022030d00200041003a00000c010b200241186a28020021042002280214210541002101200241003a006802400240034020042001460d01200241c8006a20016a200320016a2d00003a00002002200141016a22063a00682006210120064120470d000b200241206a41186a200241c8006a41186a2903002207370300200241206a41106a200241c8006a41106a2903002208370300200241206a41086a200241c8006a41086a290300220937030020022002290348220a370320200041196a2007370000200041116a2008370000200041096a20093700002000200a370001410121010c010b0240200141ff0171450d00200241003a00680b4100210120024100360228200242013703202002410a3602442002200241086a3602402002200241206a36026c200241dc006a41013602002002420137024c20024180c5c6003602482002200241c0006a360258200241ec006a4184a5c200200241c8006a10311a2002350228422086200235022084100a2002280224450d00200228022010230b200020013a00002005450d00200310230b200241f0006a24000b290020004101360204200041086a200128020420012802006b41c0016e2201360200200020013602000bf40101047f230041d0006b21020240200128020022032001280204470d00200041003602000f0b2001200341c0016a3602002002200341c2006a29000037012a2002200341ca006a290000370132200241106a220120022903303703002002200341d2006a29000037013a200241186a220420022903383703002002200341da006a2800003601422002200341de006a2f00003b0146200241206a220520022903403703002002200341c0006a2f00003b01282002200229032837030820002003360200200020022903083700042000410c6a2001290300370000200041146a20042903003700002000411c6a20052903003700000bf30801087f230041f0006b2103024002402001280200220420012802042205460d00200241016a210603402001200441c0016a2202360200200341003a0068200441c0006a2d00002107200341013a0068200320073a0048200441c1006a2d00002107200341023a0068200320073a0049200441c2006a2d00002107200341033a0068200320073a004a200441c3006a2d00002107200341043a0068200320073a004b200441c4006a2d00002107200341053a0068200320073a004c200441c5006a2d00002107200341063a0068200320073a004d200441c6006a2d00002107200341073a0068200320073a004e2003200441c7006a2d00003a004f200341083a0068200441c8006a2d00002107200341093a0068200320073a0050200441c9006a2d000021072003410a3a0068200320073a0051200441ca006a2d000021072003410b3a0068200320073a0052200441cb006a2d000021072003410c3a0068200320073a0053200441cc006a2d000021072003410d3a0068200320073a0054200441cd006a2d000021072003410e3a0068200320073a0055200441ce006a2d000021072003410f3a0068200320073a00562003200441cf006a2d00003a0057200341103a0068200441d0006a2d00002107200341113a0068200320073a0058200441d1006a2d00002107200341123a0068200320073a0059200441d2006a2d00002107200341133a0068200320073a005a200441d3006a2d00002107200341143a0068200320073a005b200441d4006a2d00002107200341153a0068200320073a005c200441d5006a2d00002107200341163a0068200320073a005d200441d6006a2d00002107200341173a0068200320073a005e2003200441d7006a2d00003a005f200341183a0068200441d8006a2d00002107200341193a0068200320073a0060200441d9006a2d000021072003411a3a0068200320073a0061200441da006a2d000021072003411b3a0068200320073a0062200441db006a2d000021072003411c3a0068200320073a0063200441dc006a2d000021072003411d3a0068200320073a0064200441dd006a2d000021072003411e3a0068200320073a0065200441de006a2d000021072003411f3a0068200320073a0066200441df006a2d00002107200341203a0068200320073a0067200341286a41086a22072003290350370300200341286a41106a22082003290358370300200341286a41186a2209200329036037030020032003290348370328200341086a41086a220a2007290300370300200341086a41106a22072008290300370300200341086a41186a2208200929030037030020032003290328370308200341c8006a41186a2008290300370300200341c8006a41106a2007290300370300200341c8006a41086a200a290300370300200320032903083703482006417f6a2206450d022002210420052002470d000b0b200041003602000f0b20002004360200200020032903483702042000410c6a200341d0006a290300370200200041146a200341d8006a2903003702002000411c6a200341e0006a2903003702000b34002000418df8c30036020420004100360200200041146a4102360200200041106a4194c2c400360200200041086a42093702000bc40201037f23004180016b220224002000280200210002400240024002400240200128020022034110710d0020002d0000210420034120710d012004ad42ff01832001103e21000c020b20002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000c010b410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d02200141a889c0004102200220006a4180016a410020006b104121000b20024180016a240020000f0b2004418001419889c0001044000b2004418001419889c0001044000ba20403027f017e057f230041306b22022400418df8c300ad4280808080900184100c22032900002104200241086a200341086a29000037030020022004370300200310234198c4c400ad4280808080e00084100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023200241206a20012802002001280208109e040240024002400240024002402002280228220541206a2203417f4c0d0020022802202106024002402003450d00200310212201450d032003410f4d0d01200321070c050b200341017422014110200141104b1b2207102122010d040c060b200341017422084110200841104b1b220741004e0d020c040b1032000b1033000b20032007460d0020012003200710252201450d020b20012002290300370000200141086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020012007200810252201450d020b20012002290310370010200141186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b200541206a22072005490d01200841017422092007200920074b1b22074100480d0120082007460d0020012008200710252201450d020b200141206a2006200510a1051a20002003360208200020073602042000200136020002402002280224450d00200610230b200241306a24000f0b102c000b102a000bf00201057f230041206b220324000240024002400240200241046a2204417f4c0d000240024020040d00410121050c010b200410212205450d020b200341003602102003200436020c200320053602082002200341086a106102400240200328020c2206200328021022056b2002490d0020032802082104200621070c010b200520026a22042005490d03200641017422072004200720044b1b22074100480d030240024020060d00024020070d00410121040c020b2007102122040d010c060b2003280208210420062007460d0020042006200710252204450d050b2003200736020c200320043602080b200420056a2001200210a1051a2003200520026a2202ad4220862004ad84100d220529000037030020051023200341146a200420026a360200200341003a0018200320043602102003200341086a36020c200320033602082000200341086a106502402007450d00200410230b200341206a24000f0b1032000b1033000b102c000b102a000b88090b107f017e017f017e017f017e017f017e017f017e017f230041306b2202240002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d022001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200241286a22082000200441306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e2903003703002013201029030037030020052002290300370300024020032001490d00200321040c030b2006410d7420067322044111762004732204410574200473220620077122044100200120042001491b6b220520014f0d01200241286a22082000200341306c6a220441286a2209290300370300200241206a220a200441206a220b290300370300200241186a220c200441186a220d290300370300200241106a220e200441106a220f290300370300200241086a2210200441086a2211290300370300200220042903003703002000200541306c6a22052903002112200541086a22132903002114200541106a22152903002116200541186a22172903002118200541206a2219290300211a2009200541286a221b290300370300200b201a370300200d2018370300200f20163703002011201437030020042012370300201b20082903003703002019200a2903003703002017200c2903003703002015200e29030037030020132010290300370300200520022903003703002003410172220420014f0d022006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200241286a22032000200441306c6a220141286a2204290300370300200241206a2206200141206a2207290300370300200241186a2208200141186a2209290300370300200241106a220a200141106a220b290300370300200241086a220c200141086a220d290300370300200220012903003703002000200541306c6a22002903002112200041086a22052903002114200041106a220e2903002116200041186a220f2903002118200041206a2210290300211a2004200041286a22112903003703002007201a37030020092018370300200b2016370300200d2014370300200120123703002011200329030037030020102006290300370300200f2008290300370300200e200a2903003703002005200c290300370300200020022903003703000b200241306a24000f0b2005200141f8c5c4001030000b200420014184d9c4001030000bf20907077f027e0b7f017e017f027e017f230041306b22022400024020014101762203450d0003402003417f6a2203210402400240024003402004410174220541017221060240200541026a220520014f0d00200620014f0d02200520062000200641306c6a22072903002000200541306c6a220829030056200741086a2903002209200841086a290300220a562009200a511b1b21060b200620014f0d03200420014f0d022000200441306c6a22042903002000200641306c6a220529030056200441086a22072903002209200541086a2208290300220a562009200a511b450d03200241286a220b200441286a220c290300370300200241206a220d200441206a220e290300370300200241186a220f200441186a2210290300370300200241106a2211200441106a2212290300370300200241086a221320072903003703002002200429030037030020082903002109200541106a2214290300210a200541186a22152903002116200541206a2217290300211820052903002119200c200541286a221a290300370300200e2018370300201020163703002012200a3703002007200937030020042019370300201a200b2903003703002017200d2903003703002015200f290300370300201420112903003703002008201329030037030020052002290300370300200621040c000b0b2006200141a8c7c4001030000b2004200141b8c7c4001030000b20030d000b0b0240024020014102490d002001210703402007417f6a220720014f0d02200241286a220b200041286a2205290300370300200241206a220c200041206a2206290300370300200241186a220d200041186a2208290300370300200241106a220e200041106a2210290300370300200241086a220f200041086a2211290300370300200220002903003703002000200741306c6a22042903002109200441086a290300210a200441106a2903002116200441186a2903002118200441206a29030021192005200441286a2903003703002006201937030020082018370300201020163703002011200a3703002000200937030041002105024002400240034020042002290300370300200441286a200b290300370300200441206a200c290300370300200441186a200d290300370300200441106a200e290300370300200441086a200f2903003703002005410174220441017221060240200441026a220420074f0d00200620074f0d02200420062000200641306c6a22082903002000200441306c6a221029030056200841086a2903002209201041086a290300220a562009200a511b1b21060b200620074f0d03200520074f0d022000200541306c6a22052903002000200641306c6a220429030056200541086a22082903002209200441086a2210290300220a562009200a511b450d03200b200541286a2211290300370300200c200541206a2212290300370300200d200541186a2213290300370300200e200541106a2214290300370300200f20082903003703002002200529030037030020102903002109200441106a290300210a200441186a2903002116200441206a2903002118200429030021192011200441286a29030037030020122018370300201320163703002014200a3703002008200937030020052019370300200621050c000b0b2006200741a8c7c4001030000b2005200741b8c7c4001030000b200741014b0d000b0b200241306a24000f0b2007200141f8c5c4001030000bb80c050a7f017e017f037e0f7f230041306b22022400200041c07e6a21032001417f6a2104200041306a2105410021062001413249210741012108024003400240024020082001490d00410021090c010b410121092000200841306c220a6a220b290300220c200b41506a220d29030056200b41086a290300220e200d41086a290300220f56200e200f511b0d002005200a6a210903404101210b20042008460d03200841016a210820092903002210200c58210b200941086a290300220f200e51210d200f200e58210a200941306a21092010210c200f210e200b200a200d1b0d000b200820014921090b2008200146210b20070d0120082001460d010240024002400240024002402008417f6a220b20014f0d002009450d012000200b41306c6a2209290300210e20092000200841306c22116a220b290300370300200241286a220a200941286a2212290300370300200241206a2213200941206a2214290300370300200241186a2215200941186a2216290300370300200241106a2217200941106a2218290300370300200241086a2219200941086a220d290300370300200d200b41086a221a2903003703002018200b41106a221b2903003703002016200b41186a221c2903003703002014200b41206a221d2903003703002012200b41286a221e2903003703002002200e370300200b2002290300370300201e200a290300370300201d2013290300370300201c2015290300370300201b2017290300370300201a201929030037030020084102490d052009290300220c20002008417e6a221341306c6a220a29030058200d290300220e200a41086a221f290300220f58200e200f511b0d052009200a290300370300200d201f2903003703002009290310210f2018200a41106a2903003703002015201229030037030020172014290300370300201920162903003703002016200a41186a2903003703002014200a41206a2903003703002012200a41286a2903003703002002200f370300024020130d00410021130c050b200c20002008417d6a220d41306c6a220929030058200e200941086a290300220f58200e200f511b0d04200320116a2109034020094188016a200941d8006a29030037030020094180016a200941d0006a290300370300200941f8006a200941c8006a290300370300200941f0006a200941c0006a290300370300200941e8006a200941386a290300370300200941e0006a200941306a290300370300200d450d032009290300210f200941086a210a200941506a2109200d417f6a210d200c200f56200e200a290300220f56200e200f511b0d000b200d41016a21130c030b200b20014184d9c4001030000b2008200141f8c5c4001030000b410021130b2000201341306c6a210a0b200a200c370300200a200e3703082000201341306c6a22092002290300370310200941286a2015290300370300200941206a2017290300370300200941186a20192903003703000b200641016a21060240200120086b22144102490d00200b290330200b290300220c58200b41386a290300220f201a290300220e58200f200e511b0d00200b200b41306a2212290300370300201a201241086a290300370300200b290310210f201b201241106a2903003703002015201e2903003703002017201d2903003703002019201c290300370300201c201241186a290300370300201d201241206a290300370300201e201241286a2903003703002002200f3703004101211a024020144103490d00200b290360200c58200b41e8006a290300220f200e58200f200e511b0d00200b41e0006a21094103210a4102210d0340200d221a41306c200b6a221241506a220d2009290300370300200d41286a200941286a290300370300200d41206a200941206a290300370300200d41186a200941186a290300370300200d41106a200941106a290300370300200d41086a200941086a290300370300200a20144f0d01200a41306c2109200a210d200a41016a210a200b20096a2209290300200c56200941086a290300220f200e56200f200e511b0d000b0b2012200c3703002012200e370308200b201a41306c6a22092002290300370310200941286a2015290300370300200941206a2017290300370300200941186a20192903003703000b20064105470d000b4100210b0b200241306a2400200b0b8f0201027f20014180feff07714108762102024002402001410171450d00411f210341e5bac000210102400240200241ff01710e03000103000b41c100210341a4bac00021010c020b41c100210341e3b9c00021010c010b411f210341c4b9c0002101024002400240024002400240024002400240200241ff01710e0a00060102030405090708000b4120210341a4b9c00021010c080b4127210341c4b8c00021010c070b4117210341adb8c00021010c060b418eb8c00021010c050b4126210341e8b7c00021010c040b412b210341bdb7c00021010c030b4139210341ebb8c00021010c020b413b21034182b7c00021010c010b41d100210341b1b6c00021010b20002003360204200020013602000bfd0303037f027e047f230041106b220224002002410036020820024201370300200028021021030240410410212204450d0020024104360204200220043602002004200336000020024104360208200041086a29030021052000290300210620044104411410252204450d00200420063700042004410c6a200537000020024294808080c00237020420022004360200200028021421072000411c6a2802002200200210610240024020000d002002280208210320022802042108200228020021090c010b2000410574210a200228020021092002280204210820022802082103034020072100024002402008200322046b4120490d00200441206a21030c010b024002400240200441206a22032004490d00200841017422072003200720034b1b22074100480d000240024020080d00024020070d00410121090c020b2007102121090c040b20082007470d020b200721080c030b102c000b200920082007102521090b200721082009450d030b200041206a2107200920046a22042000290000370000200441186a200041186a290000370000200441106a200041106a290000370000200441086a200041086a290000370000200a41606a220a0d000b2002200836020420022003360208200220093602000b20012902002003ad4220862009ad84100e02402008450d00200910230b200241106a24000f0b102a000bfa0101067f23004180016b220224002001410c6a2802002103200141086a280200210420012802002205210602402005410471450d0020012005410872220636020020040d00200141086a4281808080a0013702000b2001200641047236020020002802002100410021060340200220066a41ff006a2000410f712207413072200741d7006a2007410a491b3a00002006417f6a2106200041047622000d000b024020064180016a2200418101490d002000418001419889c0001044000b200141a889c0004102200220066a4180016a410020066b104121062001200336020c200141086a20043602002001200536020020024180016a240020060bbd1103077f017e0e7f230041e0076b2203240041002104200341003602a803200320023602a403200320013602a0034101210541012106024002400240024002400240024002400240024002400240024002400240024002400240024002402002450d0041012107200341013602a803024020012d000022080d000c020b0240024002400240024002400240024002400240024002400240200841c00171220741c001460d0002402007418001460d0041012106200741c000470d0e410121072008413f712204413f470d0541022107414121044101210603402007417f6a20024f0d0f200320073602a803200120076a417f6a2d0000220841ff01470d05200441817e6a2104200741016a2207418302470d000b2007417f6a210741ffff032104410121090c0c0b4200210a410121072008413f712204413f470d0641022107414121044101210603402007417f6a20024f0d0e200320073602a803200120076a417f6a2d0000220841ff01470d06200441817e6a2104200741016a2207418302470d000b2007417f6a21074200210a0c010b428002210a410121072008413f712204413f470d0541022107414121044101210603402007417f6a20024f0d0d200320073602a803200120076a417f6a2d0000220841ff01470d02200441817e6a2104200741016a2207418302470d000b2007417f6a2107428002210a0b200a50210841ffff032104410121090c050b200820046b21040c030b200820046b21040b200441017122090d060c070b200820046b21040b200a50210820044101712209450d010b200720024f0d0141002106200120076a2d000041104f0d050b410121062007200441016a4101766a220b20024b0d042003200b3602a803200b41026a220420024b0d04200320043602a803200b417e4f0d012001200b6a2f0000210c410021044100210d024020080d00200341106a200341a0036a10a40320032802100d0520032802a803220e20032802146a220f20032802a4034b0d052003200f3602a8034101210d0b200341023602f402200341023602e802200341023602dc02200341023602d002200341023602c402200341023602b802200341023602ac02200341023602a00220034102360294022003410236028802200341023602fc01200341023602f001200341023602e401200341023602d801200341023602cc01200341023602c001200341c0016a210603400240200c41012004410f71747141ffff0371450d00200341086a200341a0036a10a4030240024020032802080d0020032802a8032210200328020c22116a220820032802a4034d0d010b410121060c070b200320083602a803200641086a2008360200200641046a2010360200200620114120473602000b2006410c6a2106200441016a22044110470d000b200341a0066a200341c0016a41c00110a1051a410421040c050b2007200241d4c9c40010300c060b200b200441b4c9c4001044000b200720024f0d0341002106200120076a2d000041104f0d010b410121062007200441016a4101766a220b20024b0d002003200b3602a8032003200341a0036a10a40320032802000d0020032802a803220d20032802046a220e20032802a4034b0d002003200e3602a803200341a0066a200341c0016a41c00110a1051a410121040c010b200341a0036a200341a0066a41c00110a1051a200020063a00010c0e0b200341a0036a200341a0066a41c00110a1051a200341c0016a41186a200f360200200341c0016a41146a200e360200200341c0016a41106a200d360200200341c0016a410c6a2009360200200341c0016a41086a200b360200200320073602c401200320043602c001200341c0016a411c6a200341a0036a41c00110a1052112410021054100211320040e050c020101030c0b2007200241c4c9c4001030000b000b200b2007490d01200b20024b0d02200e200d490d03200e20024b0d04200b20076b2114200120076a21152001200d6a2116200e200d6b2117410121130c090b200341023602d407200341023602c807200341023602bc07200341023602b007200341023602a40720034102360298072003410236028c072003410236028007200341023602f406200341023602e806200341023602dc06200341023602d006200341023602c406200341023602b806200341023602ac06200341023602a006410021060340410221080240201220066a2204280200410246220c0d0041002004200c1b220841086a2802002104200841046a28020021100240024020082802004101470d0020042010490d0841012108200420024d0d012004200241d8bcc0001043000b20042010490d0841002108200420024b0d090b200420106b2111200120106a21100b200341a0066a20066a22042008360200200441086a2011360200200441046a20103602002006410c6a220641c001460d080c000b0b2007200b41d0bdc0001044000b200b200241d0bdc0001043000b200d200e41e0bdc0001044000b200e200241e0bdc0001043000b2010200441d8bcc0001044000b2010200441e8bcc0001044000b2004200241e8bcc0001043000b02400240200d4101460d00410021080c010b200f200e490d03200f20024b0d04200f200e6b21062001200e6a21080b200b2007490d04200b20024b0d05200341a8066a280200211820032802a406211720032802a0062116200341186a200341ac066a41a80110a1051a200b20076b2114200120076a2115200341dc076a2802002110200341d8076a280200211120032802d407210c410421130b2000411c6a2018360200200041186a2017360200200041146a2016360200200041106a20093602002000410c6a2014360200200041086a2015360200200041046a2013360200200041206a200341186a41a80110a1051a200041d8016a2006360200200041d4016a2008360200200041d0016a2010360200200041cc016a2011360200200041c8016a200c3602000b200020053a0000200341e0076a24000f0b200e200f41f0bdc0001044000b200f200241f0bdc0001043000b2007200b41d0bdc0001044000b200b200241d0bdc0001043000bcc0503027f017e047f230041e0006b2202240041aeb9c400ad4280808080800184100c22032900002104200241086a41086a200341086a2900003703002002200437030820031023419cbdc400ad4280808080d00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000bae0503027f017e047f230041d0006b2202240041aeb9c400ad4280808080800184100c22032900002104200241086a200341086a290000370300200220043703002003102341c0bbc400ad4280808080b00184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000be40703027f017e067f230041e0006b2203240041aeb9c400ad4280808080800184100c22042900002105200341086a200441086a290000370300200320053703002004102341a0bcc400ad4280808080800284100c22042900002105200341106a41086a200441086a2900003703002003200537031020041023024002400240024002400240412010212204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020032004ad4280808080800484100d220129000037034020011023200341d4006a2201200441206a360200200341003a0058200320043602502003200341c0006a41086a220636024c2003200341c0006a360248200341206a200341c8006a106520041023412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020032004ad4280808080800484100d2202290000370340200210232001200441206a360200200341003a0058200320043602502003200636024c2003200341c0006a360248200341306a200341c8006a1065200410232003280228220741206a2202200328023822086a2201417f4c0d01200328023021092003280220210a024002402001450d00200110212204450d022001410f4d0d01200121060c050b200141017422044110200441104b1b2206102122040d040c060b200141017422064110200641104b1b220641004e0d020c040b1033000b1032000b20012006460d0020042001200610252204450d020b20042003290300370000200441086a200341086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290310370010200441186a200341106a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062002200620024b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620026b2008490d002006210b0c010b200220086a2002490d012006410174220b2001200b20014b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420026a2009200810a1051a200020013602082000200b3602042000200436020002402003280234450d00200910230b02402003280224450d00200a10230b200341e0006a24000f0b102c000b102a000bb20403037f027e057f230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041003602140c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d002003200141046a36022020032002417c6a220536022420054110490d002001280000210520032002416c6a3602242003200141146a3602202001410c6a290000210620012900042107200341c8006a200341206a10cf0120032802482202450d00200328024c21082003280224220941024f0d01200841ffffff3f71450d00200210230b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b200041003602140c010b200341d0006a280200210a200341386a41046a200341286a41046a2f0100220b3b010020032003280128220c36023820032009417e6a36022420032003280220220941026a36022020092f000021092000200637030820002007370300200041206a20093b01002000411c6a200a3602002000200836021820002002360214200020053602102000200c360122200041266a200b3b01000b2004450d00200110230b200341e0006a24000ba00302037f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041003602140c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d002003200141046a36022020032002417c6a220536022420054110490d002001280000210520032002416c6a3602242003200141146a3602202001410c6a290000210620012900042107200341c8006a200341206a10cf01200328024822020d010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b200041003602140c010b200329024c210820002006370308200020073703002000200837031820002002360214200020053602100b2004450d00200110230b200341e0006a24000bc20101047f230041106b2202240020002802002200280208210320002802002100410121042001280218419b9ec00041012001411c6a28020028020c1100002105200241003a0005200220053a00042002200136020002402003450d0003402002200036020c20022002410c6a41e0e4c200105a1a200041016a21002003417f6a22030d000b20022d000421050b0240200541ff01710d0020022802002200280218419a9ec00041012000411c6a28020028020c11000021040b200241106a240020040b130020004104360204200041cccac4003602000b130020004110360204200041b4cec4003602000b950302087f017e230041106b220224000240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002006450d0020042d0001210720012003417e6a22063602042001200441026a3602002006450d0020042d0002210820012003417d6a22063602042001200441036a36020020060d010b200041003602040c010b20042d0003210620012003417c6a3602042001200441046a360200200241086a2001108801024020022802080d002001280204200228020c2204490d002004417f4c0d02024002400240024020040d00410121030c010b200410272203450d0120012802042004490d0220032001280200200410a1051a200128020422092004490d062001200920046b3602042001200128020020046a3602000b2003450d0220002004ad220a422086200a8437020820002003360204200020074108742005722008411074722006411874723602000c030b1033000b200310230b200041003602040b200241106a24000f0b1032000b20042009418ca9c0001044000bee0201047f024020002802082201450d002000280200220220014107746a21030340024020022d0000417c6a220041094b0d00024002400240024020000e0a00040102040404040403000b200241086a280200450d03200241046a28020010230c030b200241046a2802000d022002410c6a2802002200450d02200041286c450d02200241086a28020010230c020b200241046a2d00004102490d010240200241106a2802002200450d00200041d0006c2101200241086a28020041c4006a21000340024020002802002204450d00200441306c450d002000417c6a28020010230b200041d0006a2100200141b07f6a22010d000b0b2002410c6a2802002200450d01200041d0006c450d01200228020810230c010b200241046a280200450d00200241106a2802002200450d00200241146a280200450d00200010230b20024180016a21000240200241f4006a28020041ffffff3f71450d00200228027010230b2000210220002003470d000b0b0b880d05037f017e0b7f017e037f23004180016b22022400200241086a2001108801024002400240024002402002280208450d00200041003602000c010b200228020c2203200128020441246e2204200420034b1bad42247e2205422088a70d012005a72204417f4c0d010240024020040d00410421060c010b200410212206450d030b4100210720024100360218200220063602102002200441246e3602140240024002402003450d00200241cd006a2108200241eb006a220941056a210a4100210b03402001280204220c450d032001280200220d2d000021042001200c417f6a220e3602042001200d41016a360200200441074b0d030240024002400240024002400240024020040e08000b010b03040205000b2002200110880120022802000d0a200128020420022802042204490d0a2004417f4c0d0c0240024020040d004101210f41010d010c0c0b20041027220f450d0e20012802042004490d0a200f2001280200200410a105210c2001280204220d2004490d0f2001200d20046b3602042001200128020020046a360200200c450d0b0b200241c0006a41086a200241d8006a41086a29020037030020022002290258370340200f41087621104105210e420021052004210d0c050b41002104200241003a0078200c417e6a210c02400340200e2004460d01200241d8006a20046a200d20046a220f41016a2d00003a00002001200c3602042001200f41026a3602002002200441016a220f3a0078200c417f6a210c200f2104200f4120470d000b200220092900003703402002200a290000370045200228005f210d20022f0158210420022d005a210c200228005b210f20022900632111200841026a200241d5006a41026a2d00003a0000200820022f00553b00002011428080808070832105200f41087621102004200c41107472210c2011a721044100210e0c060b200441ff0171450d09200241003a00780c090b200241d8006a200110ae04200228025c220d450d0820022f015820022d005a41107472210c20022d005b210f200229036022114280808080708321052011a721044101210e0c040b200241d8006a200110ae04200228025c220d450d0720022f015820022d005a41107472210c20022d005b210f200229036022114280808080708321052011a721044102210e0c030b200241d8006a200110ae04200228025c220d450d0620022f015820022d005a41107472210c20022d005b210f200229036022114280808080708321052011a721044103210e0c020b200e450d05200d2d000121042001200c417e6a220f3602042001200d41026a36020020040d05200f450d05200d2d000221042001200c417d6a220e3602042001200d41036a360200200441014b0d054100210f0240024020040e020100010b200e4104490d06200d28000321122001200c41796a22043602042001200d41076a36020020044104490d06200d28000721132001200c41756a3602042001200d410b6a3602004101210f0b200241c0006a41086a200241d8006a41086a290200370300200220022902583703404104210e4200210541002110201321042012210d0b0b200b41016a210b200241306a41086a200241c0006a41086a2903002211370300200241206a41086a22142011370300200220022903402211370330200220113703202010410874200f41ff017172210f20052004ad842105024020072002280214470d00200241106a2007410110a20120022802102106200228021821070b2006200741246c6a2204200537000c2004200d3600082004200f3600042004200c3b00012004200e3a0000200441036a200c4110763a0000200420022903203700142004411c6a20142903003700002002200741016a2207360218200b2003470d000b0b20002002290310370200200041086a200241106a41086a2802003602000c020b200f10230b200241306a41086a200241c0006a41086a290300370300200220022903403703302000410036020002402007450d00200741246c21042006210103400240024020012d0000220c41044b0d00024002400240200c0e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012004415c6a22040d000b0b20022802142201450d00200141246c450d00200610230b20024180016a24000f0b1032000b1033000b2004200d418ca9c0001044000bfc0303037f017e037f230041e00a6b220224002002200110880102400240024002402002280200450d00200041003602000c010b20022802042203200128020441c8036e2204200420034b1bad42c8037e2205422088a70d012005a72206417f4c0d010240024020060d00410821070c010b200610212207450d030b4100210420024100360210200220073602082002200641c8036e36020c024002402003450d0020024198076a41f0006a2108034020024198076a200110d303200241b0066a20024198076a41e80010a1051a2002290380082105200241d8036a200841d80210a1051a20054203510d02200241f0026a200241b0066a41e80010a1051a200241186a200241d8036a41d80210a1051a02402004200228020c470d00200241086a200410ac0120022802082107200228021021040b2007200441c8036c6a200241f0026a41e80010a10522062005370368200641f0006a200241186a41d80210a1051a2002200441016a22043602102003417f6a22030d000b0b20002002290308370200200041086a200241086a41086a2802003602000c010b2000410036020002402004450d00200441c8036c210320074198016a210403402004109e03200441c8036a2104200341b87c6a22030d000b0b200228020c2204450d00200441c8036c450d00200710230b200241e00a6a24000f0b1032000b1033000b8e0305037f017e037f017e017f230041c0006b22022400200241286a200110880102400240024002402002280228450d00200041003602000c010b200228022c2203200128020441186e2204200420034b1bad42187e2205422088a70d012005a72206417f4c0d010240024020060d00410821070c010b200610212207450d030b4100210420024100360238200220073602302002200641186e360234024002402003450d00200241206a21080340200241106a20011080022002290310a70d022008290300210520022903182109200241086a200110880120022802080d02200228020c210a024020042002280234470d00200241306a200410b20120022802382104200228023021070b2007200441186c6a2206200a36021020062005370308200620093703002002200441016a22043602382003417f6a22030d000b0b20002002290330370200200041086a200241306a41086a2802003602000c010b2000410036020020022802342204450d00200441186c450d00200710230b200241c0006a24000f0b1032000b1033000bb10201017f230041a0016b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822010d00200041003602400c010b200328020c21022003200341106a28020036027c20032001360278200341186a200341f8006a1083040240024020032802580d00200341003602880120034201370380012003410a360294012003200336029001200320034180016a36029c012003412c6a41013602002003420137021c20034180c5c600360218200320034190016a3602282003419c016a4184a5c200200341186a10311a20033502880142208620033502800184100a0240200328028401450d0020032802800110230b200041003602400c010b2000200341186a41e00010a1051a0b2002450d00200110230b200341a0016a24000b8709010f7f23004190036b2204240002400240200141046a28020022052f01062206410b490d002001280208210720012802002108200441306a410041e00210a0051a200441286a22064100360200200441206a22094200370300200441186a220a4200370300200441106a220b4200370300200441086a220c42003703002004420037030002404194031021220d450d00200d41003b0106200d4100360200200d41086a200441306a41e00210a105210e200d4190036a2006280200360200200d4188036a2009290300370200200d4180036a200a290300370200200d41f8026a200b290300370200200d41f0026a200c290300370200200d20042903003702e802200441306a41086a2209200541d0016a290000370300200441306a41106a220f200541d8016a290000370300200441306a41186a2210200541e0016a290000370300200420052900c8013703302005280280032111200e200541e8016a20052f010641796a220641057410a105210e200d41e8026a20054184036a200641027410a1052112200541063b0106200d20063b0106200a2010290300370300200b200f290300370300200c20092903003703002004200429033037030002400240200128020c22014107490d00200d41066a210a200e2001417a6a220c4105746a200e200141796a22014105746a220b200641ffff037120016b41057410a2051a200b41186a200241186a290000370000200b41106a200241106a290000370000200b41086a200241086a290000370000200b20022900003700002012200c4102746a2106201220014102746a21020c010b200541086a220a200141016a220b4105746a200a20014105746a2206200541066a220a2f010020016b41057410a2051a200641186a200241186a290000370000200641106a200241106a290000370000200641086a200241086a29000037000020062002290000370000200541e8026a220620014102746a21022006200b4102746a2106200121010b20062002200a2f010020016b41027410a2051a20022003360200200041013a00002000200236023c200041386a4100360200200041346a200d360200200041306a20113602002000412c6a2007360000200041286a2005360000200041246a200836000020002004290300370001200041096a200441086a290300370000200041116a200441106a290300370000200041196a200441186a290300370000200a200a2f010041016a3b01000c020b102a000b200541086a220a200128020c220d41016a220b4105746a200a200d4105746a220a2006200d6b41057410a2051a200a41186a200241186a290000370000200a41106a200241106a290000370000200a41086a200241086a290000370000200a2002290000370000200541e8026a2202200b4102746a2002200d4102746a220220052f0106200d6b41027410a2051a20022003360200200520052f010641016a3b0106200441306a410b6a200141086a280000360000200041003a00002000200236023c200041106a200d3600002004200129000037003320002004290030370001200041086a200441376a2900003700000b20044190036a24000be60b020f7f047e23004180046b220624000240024020012802002207417f6a2005470d000240024002400240200141046a28020022082f01062209410b490d002001280208210a200641c0006a410272410041be0310a0051a41c4031021220b450d05200b4100360200200b41046a200641c0006a41c00310a1051a200641c0006a41186a220c200841e0016a290000370300200641c0006a41106a220d200841d8016a290000370300200641c0006a41086a220e200841d0016a290000370300200620082900c801370340200828028003210f200b41086a200841e8016a20082f0106221041796a220541057410a1052111200b41e8026a20084184036a200541027410a1052112200b4194036a200841b0036a2010417a6a221341027410a1052114200841063b0106200b20053b010602402013450d00410021052014211003402010280200220920053b01042009200b360200201041046a21102013200541016a2205470d000b0b200641206a41186a200c2903002215370300200641206a41106a200d2903002216370300200641206a41086a200e2903002217370300200620062903402218370320200641186a2015370300200641106a2016370300200641086a201737030020062018370300200128020c22054107490d0120112005417a6a22014105746a2011200541796a22104105746a2209200b2f010620106b41057410a2051a200941186a200241186a290000370000200941106a200241106a290000370000200941086a200241086a290000370000200920022900003700002012200141027422096a201220104102746a2213200b2f010620106b41027410a2051a20132003360200200b200b2f010641016a22133b01062005410274220220146a416c6a201420096a2205201341ffff037120016b41027410a2051a200520043602002001200b2f010622134b0d022002200b6a41fc026a2105034020052802002209201041016a22103b01042009200b360200200541046a210520102013490d000c030b0b200841086a2205200128020c221341016a22104105746a200520134105746a2205200920136b41057410a2051a200541186a200241186a290000370000200541106a200241106a290000370000200541086a200241086a29000037000020052002290000370000200841e8026a22092010410274220b6a2009201341027422056a220920082f010620136b41027410a2051a20092003360200200820082f010641016a22093b0106200520084194036a22026a41086a2002200b6a220b200941ffff037120106b41027410a2051a200b20043602000240201020082f0106220b4b0d00200820056a4198036a210520132110034020052802002209201041016a22103b010420092008360200200541046a21052010200b490d000b0b200041003a0000200041046a2001290200370200200041106a20133602002000410c6a200141086a2802003602000c020b200841086a2210200541016a22094105746a201020054105746a221020082f010620056b41057410a2051a201041186a200241186a290000370000201041106a200241106a290000370000201041086a200241086a29000037000020102002290000370000200841e8026a2213200941027422016a2013200541027422106a221320082f010620056b41027410a2051a20132003360200200820082f010641016a22133b0106201020084194036a22026a41086a200220016a2201201341ffff037120096b41027410a2051a20012004360200200520082f010622134f0d00200820106a4198036a2110034020102802002209200541016a22053b010420092008360200201041046a211020132005470d000b0b20002006290300370001200041013a00002000412c6a200a360200200041286a2008360200200041246a2007360200200041386a2007360200200041346a200b360200200041306a200f360200200041096a200641086a290300370000200041116a200641106a290300370000200041196a200641186a2903003700000b20064180046a24000f0b41ecdbc4004135418c94c700102d000b102a000bb30604017f017e017f047e230041a0016b220624000240200341ff0171450d00200641306a2001ad42004280c2d72f420010a605200641206a2002418094ebdc032002418094ebdc03491bad420042a08d06420010a605200641f0006a41186a4200370300200641f0006a41106a22014200370300200641f0006a41086a220242003703002006420037037041c599c500ad4280808080a00284100c220329000021072002200341086a290000370300200620073703702003102341b09ac500ad4280808080900284100c2203290000210720064190016a41086a2208200341086a29000037030020062007370390012003102320012006290390012207370300200641d0006a41086a2002290300370300200641d0006a41106a2007370300200641d0006a41186a200829030037030020062006290370370350200641206a41086a290300200641306a41086a2903007c2006290320220920062903307c2207200954ad7c2109200641c0006a200641d0006a10fa020240024020062802400d00410021024200210a0c010b2006290348220a4200552102200a427f550d00428080808080808080807f4200200a7d200a428080808080808080807f511b210a0b200641106a20072009200a428094ebdc0380220b420010a6052006200a200b4280ec94a37c7e7ca722033602702006418094ebdc0336027420062007428094ebdc03804200200641f0006a2003418094ebdc034b4102746a350200220a420010a605427f200641086a290300200641106a41086a2903007c2006290300220c20062903107c220b200c54ad7c200b200a2007428094ebdc03827e220a428094ebdc0380220ca7417f200a428080808080c0b2cd3b541b200a200c4280ec94a37c7e7c4280cab5ee01566aad7c220a200b54ad7c220b20097c200a20077c220c200a54ad7c42002009200b7d2007200a54ad7d220b2007200a7d220a200756200b200956200b2009511b22031b20021b200c4200200a20031b20021b22094280c8afa0257c2207200954ad7c220920057c200720047c22042007542202ad7c22072002200720095420072009511b22021b2105427f200420021b21040b2000200437030020002005370308200641a0016a24000bb62103027f017e037f230041106b2202240002402000280268220341024b0d0002400240024020030e03000102000b200241003a000020012002410110622002200041ec006a28020036020020012002410410620c020b200241013a000020012002410110620c010b200241023a000020012002410110620b024020002d00002203410e4b0d0002400240024002400240024002400240024002400240024002400240024020030e0f000102030405060708090a0b0c0d0e000b200241003a00002001200241011062200041046a2d0000220341044b0d0e0240024002400240024020030e050001020304000b200241003a00002001200241011062200041086a200110cb040c120b200241013a00002001200241011062200041146a210302400240024002400240200041086a2d00000e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a000020012002410110622002200041096a2d00003a0000200120024101106220022000410a6a2d00003a00000b20012002410110622003200110cb040c110b200241023a000020012002410110620c100b200241033a000020012002410110622001200041056a412010620c0f0b200241043a000020012002410110622001200041056a412010620c0e0b200241013a000020012002410110620240200041046a2d00004101460d00200241003a000020012002410110622001200041056a412010622002200041286a28020036020020012002410410620c0e0b200241013a000020012002410110622002200041086a28020036020020012002410410620c0d0b200241023a00002001200241011062200041086a2d0000220341044b0d0c02400240024002400240024020030e050001020304000b200241003a000020012002410110622001200041096a41201062200041306a29030021042002200041386a290300370308200220043703000c040b200241013a000020012002410110622001200041096a41201062200041306a29030021042002200041386a290300370308200220043703000c030b200241023a000020012002410110622001200041096a412010622001200041296a41201062200041d0006a29030021042002200041d8006a290300370308200220043703000c020b200241033a000020012002410110622001200041096a41201062200041306a29030021042002200041386a290300370308200220043703002001200241101062200041c0006a29030021042002200041c8006a290300370308200220043703000c010b200241043a000020012002410110622001200041096a41201062200041306a29030021042002200041386a290300370308200220043703000b20012002411010620c0c0b200241033a00002001200241011062200041086a2d0000220341064b0d0b024002400240024002400240024020030e0700010203040506000b200241003a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c110b200241013a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c100b200241023a0000200120024101106220022000410c6a28020036020020012002410410620c0f0b200241033a00002001200241011062200041096a2d0000220341024b0d0e02400240024020030e03000102000b200241003a000020012002410110620c100b200241013a000020012002410110620c0f0b200241023a000020012002410110620c0e0b200241043a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c0d0b200241053a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c0c0b200241063a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c0b0b200241043a00002001200241011062200241003a000020012002410110622001200041106a41101062200041046a28020021032000410c6a28020022052001106120012003200510622002200041206a2d00003a000020012002410110620c0a0b200241053a00002001200241011062200241003a000020012002410110622002200041046a28020036020020012002410410620c090b200241063a00002001200241011062200041046a280200220341024b0d0802400240024020030e03000102000b200241003a00002001200241011062200041086a2802002103200041106a2802002205200110612005450d0a2003200541286c6a2105034020012003412010622002200341206a29030037030020012002410810622005200341286a2203470d000c0b0b0b200241013a000020012002410110620c090b200241023a000020012002410110620c080b200241073a00002001200241011062200041046a2d0000220341024b0d0702400240024020030e03000102000b200241003a000020012002410110622001200041056a412010620c090b200241013a000020012002410110620c080b200241023a00002001200241011062200041086a2802002106200041106a2802002203200110612003450d072006200341d0006c6a2107034020012006412010622002200641206a3602002002200110db012002200641306a3602002002200110db01200628024021032006280248220520011061200641d0006a210602402005450d00200541306c210503402001200341106a41201062200220033602002002200110db01200341306a2103200541506a22050d000b0b20072006470d000c080b0b200241083a000020012002410110620240200041046a2802004101460d00200241003a000020012002410110622002200028020836020020012002410410620c070b200241013a000020012002410110622002200028020836020020012002410410620c060b200241093a00002001200241011062200041046a2d0000220341054b0d0502400240024002400240024020030e06000102030405000b200241003a000020012002410110622002200041086a2802003602002001200241041062024002400240024002402000410c6a2d00000e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a0000200120024101106220022000410d6a2d00003a0000200120024101106220022000410e6a2d00003a00000b20012002410110620c0a0b200241013a000020012002410110620c090b200241023a000020012002410110622001200041056a412010622001200041256a412010620c080b200241033a000020012002410110622001200041056a412010622002200041c8006a28020036020020012002410410622002200041cc006a28020036020020012002410410622001200041256a412010620c070b200241043a000020012002410110622001200041056a412010622002200041c8006a28020036020020012002410410622002200041cc006a28020036020020012002410410622001200041256a412010620240200041d0006a2d000022034104460d00200241013a000020012002410110620240024002400240024020030e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a000020012002410110622002200041d1006a2d00003a000020012002410110622002200041d2006a2d00003a00000b20012002410110620c070b200241003a000020012002410110620c060b200241053a000020012002410110622001200041056a412010622002200041c8006a28020036020020012002410410622002200041cc006a28020036020020012002410410622001200041256a412010620c050b2002410a3a00002001200241011062200041086a2d0000220341064b0d04024002400240024002400240024020030e0700010203040506000b200241003a000020012002410110622001200041096a412010620c0a0b200241013a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c090b200241023a000020012002410110622001200041096a41201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c080b200241033a000020012002410110622001200041096a4120106220022000412c6a28020036020020012002410410620c070b200241043a000020012002410110622001200041096a4120106220022000412c6a28020036020020012002410410620c060b200241053a000020012002410110622001200041096a4120106220022000412c6a28020036020020012002410410620c050b200241063a0000200120024101106220022000410c6a28020036020020012002410410620c040b2002410b3a0000200120024101106220002d0001220341054b0d03024002400240024002400240024020030e06000102030405000b200241003a00002001200241011062200041026a21030c050b200241013a000020012002410110622001200041026a41201062200041226a21030c040b200241023a000020012002410110622001200041026a412010622001200041226a41201062200041c2006a21030c030b200241033a000020012002410110622001200041026a41201062200041226a21030c020b200241043a000020012002410110622001200041026a41201062200041226a21030c010b200241053a00002001200241011062200041026a21030b20012003412010620c030b2002410c3a00002001200241011062200041096a21030240200041086a2d00004101460d00200241003a000020012002410110622001200341201062200041306a29030021042002200041386a2903003703082002200437030020012002411010620c030b200241013a0000200120024101106220012003412010620c020b2002410d3a000020012002410110620240200041046a2802004101460d00200241003a000020012002410110622002200041086a28020036020020012002410410620c020b200241013a000020012002410110622002200041086a280200360200200120024104106220022000410c6a280200360200200120024104106202400240200041106a28020022030d00200241003a000020012002410110620c010b200241013a00002001200241011062200041186a28020022052001106120012003200510620b024020002d001c22034104460d00200241013a000020012002410110620240024002400240024020030e0400010203000b200241003a00000c030b200241013a00000c020b200241023a00000c010b200241033a0000200120024101106220022000411d6a2d00003a0000200120024101106220022000411e6a2d00003a00000b20012002410110620c020b200241003a000020012002410110620c010b2002410e3a0000200120024101106220002d0001220341024b0d0002400240024020030e03000102000b200241003a000020012002410110622002200041026a2d00003a000020012002410110620c020b200241013a000020012002410110622001200041026a412010620c010b200241023a000020012002410110622002200041026a2d00003a000020012002410110620b2000280270200041f8006a280200200110c803200241106a24000b9f0201037f024020002d0000417c6a220141094b0d00024002400240024020010e0a00040102040404040403000b200041086a280200450d03200041046a28020010230c030b200041046a2802000d022000410c6a2802002201450d02200141286c450d02200041086a28020010230f0b200041046a2d00004102490d010240200041106a2802002201450d00200141d0006c2102200041086a28020041c4006a21010340024020012802002203450d00200341306c450d002001417c6a28020010230b200141d0006a2101200241b07f6a22020d000b0b2000410c6a2802002201450d01200141d0006c450d01200028020810230f0b200041046a280200450d00200041106a2802002201450d00200041146a280200450d00200110230f0b0bf8f00102517f0d7e230041d0106b22012400200141003602102001410036020802400240200041086a22022802002203450d00200141f8076a4102722104200141fd026a2105200141d0026a41206a2106200141386a41206a2107200141f8076a41206a2108200141186a41186a2109200141186a41106a210a4100210b0340024002402002280200220c200b4d0d0020092000280200200b412c6c220d6a220e41246a290000370300200a200e411c6a290000370300200141186a41086a220f200e41146a2900003703002001200e29000c370318200e280200210c200e280208210e2001410036028008200142013703f807200141f8076a4100200e109a01200128028008211002400240200e41306c22110d0020012802f80721120c010b20012802f807221220104105746a210e0340200e200c290000370000200e41186a200c41186a290000370000200e41106a200c41106a290000370000200e41086a200c41086a290000370000201041016a2110200e41206a210e200c41306a210c201141506a22110d000b0b20012802fc07211320104102490d0102402010417f6a221420106c410176220c41ffffff1f71200c470d00200c410674220c417f4c0d00024002400240200c0d00410121150c010b200c10212215450d010b201241206a2116200c4106762117410021184100210c034002400240200c41016a221920104f0d002018410674211a2012200c4105746a21112014211b2016210e0340200141f8076a41186a221c201141186a290000370300200141f8076a41106a221d201141106a290000370300200141f8076a41086a221e201141086a290000370300200120112900003703f8072008200e290000370000200841086a200e41086a290000370000200841106a200e41106a290000370000200841186a200e41186a290000370000024020182017470d00024002400240201741016a220c2017490d002017410174221f200c201f200c4b1b220c41ffffff1f71200c470d00200c410674220c4100480d00024020170d00200c0d02410121150c030b20174106742217200c460d02024020170d00200c0d02410121150c030b20152017200c10252215450d0e0c020b102c000b200c10212215450d0c0b200c41067621170b2015201a6a220c20012903f807370000200c41386a200141f8076a41386a290300370000200c41306a200141f8076a41306a290300370000200c41286a200141f8076a41286a290300370000200c41206a2008290300370000200c41186a201c290300370000200c41106a201d290300370000200c41086a201e290300370000200e41206a210e201a41c0006a211a201841016a2118201b417f6a221b450d020c000b0b02402018450d00201520184106746a21202015211e02400340200141386a41386a201e41386a290000370300200141386a41306a201e41306a290000370300200141386a41286a201e41286a2900003703002007201e41206a290000370300200141386a41186a201e41186a220c290000370300200141386a41106a201e41106a220e290000370300200141386a41086a201e41086a22112900003703002001201e290000370338200141f8006a41186a2218200c290000370300200141f8006a41106a220c200e290000370300200141f8006a41086a220e20112900003703002001201e29000037037820014198016a41186a200741186a221129000037030020014198016a41106a200741106a221a29000037030020014198016a41086a200741086a221b2900003703002001200729000037039801200141d0026a41186a22192018290300370300200141d0026a41106a2221200c290300370300200141d0026a41086a2222200e29030037030020062007290000370000200641086a201b290000370000200641106a201a290000370000200641186a2011290000370000200120012903783703d002024002402001280208221b450d00200128020c211c0c010b200141f8076a410041c00510a0051a200141e8046a410041e00210a0051a41a8081021221b450d0c4100211c201b41003b0106201b4100360200201b41086a200141f8076a41c00510a1051a201b41c8056a200141e8046a41e00210a1051a2001410036020c2001201b3602080b201e41c0006a211e024002400240024002400240024002400240024002400240024003400240201b2f0106221a410674220e450d00201b41286a210c41002111034002400240200141d0026a200c41606a412010a3052218450d00201841004e0d012011211a0c030b2006200c412010a3052218450d04201841004e0d002011211a0c020b201141016a2111200c41c0006a210c200e41406a220e0d000b0b201c450d02201c417f6a211c201b201a4102746a41a8086a280200211b0c000b0b20022802002210200b4d0d032000280200221d200d6a220c28020841306c221a450d0a201b201141057422236a41c8056a211f200c280200210c4100211803404101210e0240200141f8006a200c460d00200c200141f8006a412010a305450d00024020014198016a200c470d004101210e0c010b200c20014198016a412010a30545210e0b200c41306a210c200e20186a2118201a41506a221a0d000b20184102470d0a2010412c6c210e0340201d210c200e450d0b0240200c410c6a2218201f460d00200e41546a210e200c412c6a211d2018201f412010a3050d010b0b0240200c41086a280200220e450d00200e41306c211a200141f8006a200c28020022186b211d20014198016a20186b21104100210c0340201d200c460d032018200c6a220e200141f8006a412010a305450d032010200c460d03200e20014198016a412010a305450d03201a200c41306a220c470d000b0b41082124410021250c070b200141b8016a41386a220c200141d0026a41386a290300370300200141b8016a41306a220e200141d0026a41306a290300370300200141b8016a41286a2211200141d0026a41286a290300370300200141b8016a41206a22182006290300370300200141b8016a41186a221c2019290300370300200141b8016a41106a221d2021290300370300200141b8016a41086a221f2022290300370300200120012903d0023703b8012001200128021041016a360210200141a0036a41386a2226200c290300370300200141a0036a41306a2227200e290300370300200141a0036a41286a22282011290300370300200141a0036a41206a22242018290300370300200141a0036a41186a2223201c290300370300200141a0036a41106a2225201d290300370300200141a0036a41086a2229201f290300370300200120012903b8013703a003200141d0076a41186a222a2009290300370300200141d0076a41106a222b200a290300370300200141d0076a41086a222c200f290300370300200120012903183703d0070240201b2f0106220e410b490d00200141f8076a410041c00510a0051a200141e8046a410041e00210a0051a41a8081021220c450d17200c41003b0106200c4100360200200c41086a200141f8076a41c00510a105210e200c41c8056a200141e8046a41e00210a1052118200141f8076a41086a221f201b41a3036a290000370300200141f8076a41106a2210201b41ab036a290000370300200141f8076a41186a2214201b41b3036a2900003703002008201b41bb036a290000370300200141f8076a41256a2216201b41c0036a2900003700002001201b4188036a2f00003b0188042001201b418a036a2d00003a008a042001201b419b036a2900003703f807201b418b036a280000212d201b418f036a280000212e201b4193036a280000212f201b4197036a2800002130200141c8046a41186a2231201b41a0076a290000370300200141c8046a41106a2232201b4198076a290000370300200141c8046a41086a2233201b4190076a2900003703002001201b290088073703c804200e201b41c8036a201b2f010641796a221141067410a105210e2018201b41a8076a201141057410a1052118201b41063b0106200c20113b0106200141e0036a41026a221c20012d008a043a0000200141e8046a41086a2234201f290300370300200141e8046a41106a22352010290300370300200141e8046a41186a22362014290300370300200141e8046a41206a22372008290300370300200141e8046a41256a22382016290000370000200120012f0188043b01e003200120012903f8073703e804200141a8046a41186a22392031290300370300200141a8046a41106a223a2032290300370300200141a8046a41086a223b2033290300370300200120012903c8043703a80402400240201a4107490d00200e201a417a6a221d4106746a200e201a41796a221a4106746a220e201141ffff0371201a6b41067410a2051a200e41386a2026290300370000200e41306a2027290300370000200e41286a2028290300370000200e41206a2024290300370000200e41186a2023290300370000200e41106a2025290300370000200e41086a2029290300370000200e20012903a0033700002018201d4105746a2018201a4105746a220e200c2f0106201a6b41057410a2051a200e41186a202a290300370000200e41106a202b290300370000200e41086a202c290300370000200e20012903d007370000200c200c2f010641016a3b01060c010b201b41086a220e201a41016a22114106746a200e201a4106746a220e201b2f0106201a6b41067410a2051a200e41386a2026290300370000200e41306a2027290300370000200e41286a2028290300370000200e41206a2024290300370000200e41186a2023290300370000200e41106a2025290300370000200e41086a2029290300370000200e20012903a003370000201b41c8056a220e20114105746a200e201a4105746a220e201b2f0106201a6b41057410a2051a200e41186a202a290300370000200e41106a202b290300370000200e41086a202c290300370000200e20012903d007370000201b201b2f010641016a3b01060b200520012903a804370000200141f4076a41026a220e201c2d00003a000020222034290300370300202120352903003703002019203629030037030020062037290300370300200141d0026a41256a22282038290000370000200541086a2211203b290300370000200541106a2218203a290300370000200541186a221a2039290300370000200120012f01e0033b01f407200120012903e8043703d002200141ac026a41026a223c200e2d00003a0000200141f8016a41086a223d2022290300370300200141f8016a41106a223e2021290300370300200141f8016a41186a223f2019290300370300200141f8016a41206a22402006290300370300200141f8016a41256a22412028290000370000200120012f01f4073b01ac02200120012903d0023703f801200141b0026a41186a2242201a290000370300200141b0026a41106a22432018290000370300200141b0026a41086a22442011290000370300200120052900003703b0020240201b28020022180d004100211d200141086a210e200c21180c0a0b201b2f0104212641002145200c2146034020014184046a41026a2247203c2d00003a00002022203d2903003703002021203e2903003703002019203f2903003703002006204029030037030020282041290000370000200120012f01ac023b018404200120012903f8013703d00220014188046a41186a2248204229030037030020014188046a41106a2249204329030037030020014188046a41086a224a2044290300370300200120012903b0023703880441000d03202641ffff0371211c02400240024020182f0106220c410b490d002004410041d20810a0051a41d8081021221a450d1b201a4100360200201a41046a200141f8076a41d40810a1051a200141d0076a41026a224b2018418a036a2d00003a0000201f201841a3036a2900003703002010201841ab036a2900003703002014201841b3036a2900003703002008201841bb036a2900003703002016201841c0036a290000370000200120184188036a2f00003b01d00720012018419b036a2900003703f8072018418b036a280000214c2018418f036a280000214d20184193036a280000214e20184197036a280000214f2031201841a0076a290000370300203220184198076a290000370300203320184190076a29000037030020012018290088073703c804201a41086a201841c8036a20182f0106220e41796a220c41067410a1052150201a41c8056a201841a8076a200c41057410a1052151201a41a8086a201841c4086a200e417a6a221d41027410a1052127201841063b0106201a200c3b01060240201d450d004100210c2027210e0340200e2802002211200c3b01042011201a360200200e41046a210e201d200c41016a220c470d000b0b2034201f29030037030020352010290300370300203620142903003703002037200829030037030020382016290000370000203b2033290300370300203a203229030037030020392031290300370300200120012f01d0073b01f407200120012903f8073703e804200120012903c8043703a8042001204b2d00003a00f607200141cc076a41026a221d20012d00f6073a0000201f203429030037030020102035290300370300201420362903003703002008203729030037030020162038290000370000200120012f01f4073b01cc07200120012903e8043703f807202a2039290300370300202b203a290300370300202c203b290300370300200120012903a8043703d007202641ffff037122264107490d012050201c417a6a22114106746a2050201c41796a220c4106746a220e201a2f0106200c6b41067410a2051a200e203036000f200e202f36000b200e202e360007200e202d360003200e41026a20472d00003a0000200e20012f0184043b0000200e20012903d002370013200e411b6a2022290300370000200e41236a2021290300370000200e412b6a2019290300370000200e41336a2006290300370000200e41386a2028290000370000205120114105746a2051200c4105746a220e201a2f01062226200c6b41057410a2051a200e41186a2048290300370000200e41106a2049290300370000200e41086a204a290300370000200e200129038804370000201a202641016a220e3b0106201c410274222d20276a416c6a202720114102746a2226200e41ffff0371221c20116b41027410a2051a20262046360200201c2011490d02201a202d6a4190086a210e0340200e2802002211200c41016a220c3b01042011201a360200200e41046a210e200c201c490d000c030b0b201841086a220e201c41016a22114106746a200e201c4106746a220e200c201c6b41067410a2051a200e203036000f200e202f36000b200e202e360007200e202d360003200e41026a20472d00003a0000200e20012f0184043b0000200e20012903d002370013200e411b6a2022290300370000200e41236a2021290300370000200e412b6a2019290300370000200e41336a2006290300370000200e41386a2028290000370000201841c8056a220c20114105746a200c201c4105746a220c20182f0106220e201c6b41057410a2051a200c41186a2048290300370000200c41106a2049290300370000200c41086a204a290300370000200c2001290388043700002018200e41016a220c3b0106201c410274201841a8086a220e6a41086a200e20114102746a220e200c41ffff0371221a20116b41027410a2051a200e20463602000240201c201a4f0d0020182011417f6a220c4102746a41ac086a210e0340200e2802002211200c41016a220c3b010420112018360200200e41046a210e200c201a490d000b0b41001a200141086a1a201b1a0c0d0b201841086a220c201c41016a220e4106746a200c201c4106746a220c20182f0106201c6b41067410a2051a200c203036000f200c202f36000b200c202e360007200c202d360003200c41026a20472d00003a0000200c20012f0184043b0000200c20012903d002370013200c411b6a2022290300370000200c41236a2021290300370000200c412b6a2019290300370000200c41336a2006290300370000200c41386a2028290000370000201841c8056a220c200e4105746a200c201c4105746a220c20182f01062211201c6b41057410a2051a200c41186a2048290300370000200c41106a2049290300370000200c41086a204a290300370000200c2001290388043700002018201141016a220c3b0106201c410274222d201841a8086a22116a41086a2011200e4102746a2227200c41ffff03712211200e6b41027410a2051a20272046360200202620114f0d002018202d6a41ac086a210c0340200c280200220e201c41016a221c3b0104200e2018360200200c41046a210c2011201c470d000b0b204541016a210c20014180046a41026a220e201d2d00003a00002029201f290300370300202520102903003703002023201429030037030020242008290300370300200141a0036a41256a22112016290000370000200141e0036a41086a221c202c290300370300200141e0036a41106a221d202b290300370300200141e0036a41186a2226202a290300370300200120012f01cc073b018004200120012903f8073703a003200120012903d0073703e003203c200e2d00003a0000203d2029290300370300203e2025290300370300203f20232903003703002040202429030037030020412011290000370000200120012f0180043b01ac02200120012903a0033703f801204220262903003703002043201d2903003703002044201c290300370300200120012903e0033703b00202402018280200220e0d00204d212e204e212f204f213020181a200141086a220e1a204c212d200c211d201a21180c0b0b20182f01042126200141086a1a204d212e204e212f204f213020181a204c212d200e2118201a2146200c21450c000b0b201b41086a220c201a41016a22114106746a200c201a4106746a220c200e201a6b41067410a2051a200c41386a2026290300370000200c41306a2027290300370000200c41286a2028290300370000200c41206a2024290300370000200c41186a2023290300370000200c41106a2025290300370000200c41086a2029290300370000200c20012903a003370000201b41c8056a220c20114105746a200c201a4105746a220c201b2f0106201a6b41057410a2051a200c41186a202a290300370000200c41106a202b290300370000200c41086a202c290300370000200c20012903d007370000201b201b2f010641016a3b01060c090b200141f8076a41086a22292018200c6a220e41086a290300370300200141f8076a41106a222a200e41106a290300370300200141f8076a41186a222b200e41186a2903003703002001200e2903003703f807200e41286a2903002152200e41206a2903002153413010212224450d0f20242053370320202420012903f807370300202441286a2052370300202441186a202b290300370300202441106a202a290300370300202441086a202929030037030020014281808080103702ec04200120243602e8040240201a41506a200c470d00410121250c060b200e41306a211d2018201a6a220e41506a21194101211a0340201d210c024002400340200141f8006a200c460d01200c200141f8006a412010a305450d0120014198016a200c460d01200c20014198016a412010a305450d01200e200c41306a220c470d000c020b0b200c41286a2903002152200c41206a2903002153200141d0076a41186a2210200c41186a290300370300200141d0076a41106a2214200c41106a290300370300200141d0076a41086a2216200c41086a2903003703002001200c2903003703d0070240201a20012802ec04470d00200141e8046a201a410110a40120012802e80421240b200c41306a211d2024201a41306c6a221820012903d00737030020162903002154201429030021552010290300215620182053370320201841286a2052370300201841186a2056370300201841106a2055370300201841086a20543703002001201a41016a221a3602f0042019200c470d010b0b20012802ec042125201a4102490d05201a4102470d0441e0001021221d450d0f200142023702fc012001201d3602f80102402002280200220c200b4d0d000240024002402000280200200d6a220c28020841306c221a0d004102210c0c010b200c280200210c41002118034002400240200141f8006a200c460d00200c200141f8006a412010a305210e20014198016a200c460d00200e450d00200c20014198016a412010a3050d010b200141c8046a41186a2210200c41186a290300370300200141c8046a41106a2214200c41106a290300370300200141c8046a41086a2216200c41086a2903003703002001200c2903003703c804200c41286a2903002152200c41206a29030021530240201820012802fc01470d00200141f8016a2018410110a40120012802f801211d20012802800221180b201d201841306c6a220e20012903c804370300201629030021542014290300215520102903002156200e2053370320200e41286a2052370300200e41186a2056370300200e41106a2055370300200e41086a20543703002001201841016a2218360280020b200c41306a210c201a41506a221a0d000b20184102460d0120012802fc01210c0b200c450d08200c41306c450d08201d10230c080b0240201d2024460d002024201d412010a305450d00200141f8076a41286a220c202441286a220e2903003703002008202441206a2218290300370300202b202441186a221a290300370300202a202441106a22102903003703002029202441086a2214290300370300200120242903003703f807200e202441d8006a22162903003703002018202441d0006a220e290300370300201a202441c8006a22182903003703002010202441c0006a221a2903003703002014202441386a2210290300370300202420242903303703002016200c290300370300200e20082903003703002018202b290300370300201a202a29030037030020102029290300370300202420012903f8073703300b2001427f3703f0042001427f3703e8044100211a200141003602c8042001410036028008200142083703f807200141f8076a4100410410a401202441e0006a211420012802f8072235200128028008221641306c6a211020012903f004215420012903e80421574100211803400240201d201a6a220c41206a2903002253205756200c41286a290300225220545620522054511b0d00200120533703e804200120183602c804200120523703f00420532157205221540b2010201a6a220e200c290300370300200c41086a2903002155200c41106a2903002156200c41186a2903002158200e41286a2052370300200e41206a2053370300200e41186a2058370300200e41106a2056370300200e41086a2055370300201841016a2118201a41306a221a41e000470d000b024020242014460d002010201a6a210c200141e8046a41086a290300215420012903e80421572024210e0340200e41306a211a0240200e41206a2903002253205756200e41286a290300225220545620522054511b0d00200120533703e804200120183602c804200120523703f00420532157205221540b200c200e290300370300200e41086a2903002155200e41106a2903002156200e41186a2903002158200c41286a2052370300200c41206a2053370300200c41186a2058370300200c41106a2056370300200c41086a2055370300200c41306a210c201841016a2118201a210e2014201a470d000b0b201620186a211620012802fc07212d200141003602c001200142043703b801200141003602a803200142043703a00320012802c804210c200141a0036a41004101107920012802a003222820012802a803220e4102746a200c3602002001200e41016a220c3602a80302400240024020012802c80422184102490d00200141b8016a41004101107920012802b80120012802c001220e4102746a201841017141037322183602002001200e41016a220e3602c0012018417e6a21180240200c20012802a403470d00200141a0036a200c4101107920012802a003212820012802a803210c0b2028200c4102746a20183602002001200c41016a22343602a80320012802c804417e6a210c200e20012802bc01470d02200141b8016a200e410110790c010b200141b8016a41004101107920012802b80120012802c001220e4102746a410120186b3602002001200e41016a220e3602c001410320186b21180240200c20012802a403470d00200141a0036a200c4101107920012802a003212820012802a803210c0b2028200c4102746a20183602002001200c41016a22343602a80320012802c80441026a210c200e20012802bc01470d01200141b8016a200e410110790b20012802c001210e0b20012802b8012227200e4102746a200c3602002001200e41016a220c3602c00141041021222c450d10200142013702d4022001202c3602d00220012802bc0121360240200c450d002027200c4102746a212620272122034002400240202228020022214102490d00202b201f41186a290000370300202a201f41106a2900003703002029201f41086a2900003703002001201f2900003703f8070c010b202b2009290300370300202a200a2903003703002029200f290300370300200120012903183703f8070b02402002280200220c450d0020002802002210200c412c6c6a21142035202141306c6a211a034002400240200141f8076a2010410c6a220c460d00200c200141f8076a412010a3050d010b2010280208210c0240201620214d0d00200c41306c210e4100211820102802002219210c02400340200e450d03201a200c460d01200c201a412010a305211d201841016a2118200e41506a210e200c41306a210c201d0d000b201d4541016a41017120186a417f6a21180b2019201841306c6a220c427f200c290320225220012903e8047c22532053205254220e200c41286a220c2903002252200141e8046a41086a2903007c200ead7c225320525420532052511b220e1b370320200c427f2053200e1b3703000c010b200c450d002021201641c4e6c4001030000b2010412c6a22102014470d000b0b202241046a22222026470d000b0b0240203641ffffffff0371450d00202710230b20012802a403212e0240024020340d00410021270c010b202820344102746a21364100212720282134034002400240203428020022224102490d00202b201f41186a290000370300202a201f41106a2900003703002029201f41086a2900003703002001201f2900003703f8070c010b202b2009290300370300202a200a2903003703002029200f290300370300200120012903183703f8070b02402002280200220c450d0020002802002210200c412c6c6a21192035202241306c6a211a034002400240200141f8076a2010410c6a220c460d00200c200141f8076a412010a3050d010b201041086a2226280200211402400240201620224d0d00201441306c210e4100211820102802002221210c02400340200e450d04201a200c460d01200c201a412010a305211d201841016a2118200e41506a210e200c41306a210c201d0d000b201d4541016a41017120186a417f6a21180b42002021201841306c6a220c290320225220012903e80422547d22532053205256200c41286a2903002253200141e8046a41086a2903007d2052205454ad7d225220535620522053511b220e1b225342002052200e1b225284500d01200c41206a220c2053370300200c20523703080c020b2014450d012022201641d4e6c4001030000b200c200c41306a20142018417f736a41306c10a2051a20262014417f6a3602000240202720012802d402470d00200141d0026a20274101107920012802d80221270b20012802d002222c20274102746a20223602002001202741016a22273602d8020b2010412c6a22102019470d000b0b203441046a22342036470d000b0b0240202e41ffffffff0371450d00202810230b202c417c6a21182027410274220c210e024003400240200e0d00410021180c020b200e417c6a210e201841046a221828020041014b0d000b0b20012802d402211d202c210e024003400240200c0d004100210c0c020b200c417c6a210c200e280200211a200e41046a210e201a4102490d000b4101210c0b0240201d41ffffffff0371450d00202c10230b024020180d00200c450d05201f2001290318370000201f41186a2009290300370000201f41106a200a290300370000201f41086a200f2903003700000c050b200c450d0420012001280210417f6a360210201b41086a210c02400240201c450d00201c417f6a210e200c20114106746a2118201b20114102746a41a8086a280200210c02400340200c2f01062111200e450d01200e417f6a210e200c20114102746a41a8086a280200210c0c000b0b200c410020111b221b41086a220e2011417f6a410020111b22114106746a220c2900002152200c2900082153200c2900102154200c41186a2900002155200c2900202156200c41286a2900002158200c41306a2900002157200c41386a290000215941012130200c200e201141016a221a4106746a2011417f73220e201b2f01066a41067410a2051a201b41c8056a221c20114105746a220c290000215a200c290008215b200c290010215c200c41186a290000215d200c201c201a4105746a200e201b2f01066a41057410a2051a201b201b2f0106417f6a3b0106201841386a2059370000201841306a2057370000201841286a205837000020182056370020201841186a2055370000201820543700102018205337000820182052370000201f41186a205d370000201f205c370010201f205b370008201f205a370000201b2f0106210c0c010b200c20114106746a200c201141016a220e4106746a2011417f73220c201b2f01066a41067410a2051a201b41c8056a221820236a2018200e4105746a200c201b2f01066a41057410a2051a201b201b2f0106417f6a220c3b0106410021300b200c41ffff037141044b0d0341002122200141086a210e201b210c410021190240024002400240024002400240024002400240024002400240024002400340200c280200221a450d1302400240200c33010422524200520d0041002121201a4100201a2f0106220c1b211a42002052422086200c1b200ead8421520c010b2052422086200ead844280808080707c2152410121210b02400240201a41a8086a220e2052422088a7221841016a220c41027422276a221c28020022102f0106221f200e201841027422236a2226280200221d2f010622146a222f410b490d0020210d05201f450d01201041c0006a2900002158201041386a2900002157201041306a2900002159201041286a290000215a201041206a2900002153201041186a2900002154201041106a290000215520102900082156201041086a201041c8006a201f41067441406a10a2051a201041e0056a290000215e201041d8056a290000215b201041d0056a290000215c20102900c805215d201041c8056a201041e8056a201f41057441606a10a2051a20190d034100211d0c040b201941016a2119201a2f01062116200141f8076a41386a222c201a41086a223420184106746a220e41386a290000370300200141f8076a41306a2236200e41306a290000370300200141f8076a41286a2228200e41286a2900003703002008200e41206a290000370300202b200e41186a290000370300202a200e41106a2900003703002029200e41086a2900003703002001200e2900003703f807200e2034200c4106746a20162018417f7322346a41067410a2051a201d41086a222e20144106746a220e41386a202c290300370000200e41306a2036290300370000200e41286a2028290300370000200e41206a2008290300370000200e41186a202b290300370000200e41106a202a290300370000200e41086a2029290300370000200e20012903f807370000202e201441016a22164106746a201041086a201f41067410a1051a201a2f0106212c200141d0076a41186a2236201a41c8056a222820184105746a220e41186a290000370300200141d0076a41106a2218200e41106a290000370300200141d0076a41086a222e200e41086a2900003703002001200e2900003703d007200e2028200c4105746a2034202c6a41057410a2051a201d41c8056a222c20144105746a220e41186a2036290300370000200e41106a2018290300370000200e41086a202e290300370000200e20012903d007370000202c20164105746a201041c8056a201f41057410a1051a201c202641086a412c20276b10a2051a0240200c201a2f0106221c4f0d00201a20236a41ac086a210e0340200e2802002218200c3b01042018201a360200200e41046a210e201c200c41016a220c470d000b201a2f0106211c0b201a201c417f6a3b0106201d201f201d2f01066a41016a3b0106024020194102490d00201d20164102746a41a8086a201041a8086a201f41027441046a10a1051a2016202f41026a4f0d00201f41016a2118201d20144102746a41ac086a210c2016210e0340200c280200221c200e3b0104201c201d360200200c41046a210c200e41016a210e2018417f6a22180d000b0b20101023024020222021417f73724101710d0020194101470d102016410020211b20116a2111201a20236a41a8086a280200211b0b2052a7210e201a220c2f01062218450d064101212220184105490d010c140b0b41d4dac4004120418c94c700102d000b20102802a808211d201041a8086a220c201041ac086a201f41027410a2051a4100210e201d41003602000340200c280200221c200e3b0104201c2010360200200c41046a210c201f200e41016a220e470d000b2019417f6a211c20102f0106211f0b2010201f417f6a3b0106201a20184106746a220c41206a220e2900002152200e2053370000200c41186a220e2900002153200e2054370000200c41106a220e2900002154200e2055370000200c41086a220e2900002155200e2056370000200c41c0006a220e2900002156200e2058370000200c41386a220e2900002158200e2057370000200c41306a220e2900002157200e2059370000200c41286a220c2900002159200c205a370000201a20184105746a220c41d8056a220e290000215a200e205b370000200c41d0056a220e290000215b200e205c370000200c41c8056a220e290000215c200e205d370000200c41e0056a220c290000215d200c205e3700002026280200210c02402019450d00201d450d052019417f6a201c470d06200c2f01062218410a4b0d07200c20184106746a220e41c0006a2056370000200e41386a2058370000200e41306a2057370000200e41286a2059370000200e41206a2052370000200e41186a2053370000200e41106a2054370000200e41086a2055370000200c20184105746a220e41e0056a205d370000200e41d8056a205a370000200e41d0056a205b370000200e41c8056a205c370000200c201841016a220e4102746a41a8086a2218201d360200200c200c2f010641016a3b010620182802002218200e3b01042018200c3602000c020b200c2f01062218410b4f0d07200c20184106746a220e41c0006a2056370000200e41386a2058370000200e41306a2057370000200e41286a2059370000200e41206a2052370000200e41186a2053370000200e41106a2054370000200e41086a2055370000200c20184105746a220e41d8056a205a370000200e41d0056a205b370000200e41c8056a205c370000200e41e0056a205d370000200c200c2f010641016a3b01060c010b0240024002402014450d00201d2014417f6a220e4105746a220c41e0056a290000215e200c41d8056a290000215b200c41d0056a290000215c200c41c8056a290000215d201d200e4106746a220c41c0006a2900002158200c41386a2900002157200c41306a2900002159200c41286a290000215a200c41206a2900002153200c41186a2900002154200c41106a2900002155200c41086a290000215620190d014100210e0c020b41d4dac4004120418c94c700102d000b201d20144102746a41a8086a280200220e41003602002019417f6a211f201d2f010621140b201d2014417f6a3b0106201a20184106746a220c41206a221d2900002152201d2053370000200c41186a221d2900002153201d2054370000200c41106a221d2900002154201d2055370000200c41086a221d2900002155201d2056370000200c41c0006a221d2900002156201d2058370000200c41386a221d2900002158201d2057370000200c41306a221d2900002157201d2059370000200c41286a220c2900002159200c205a370000201a20184105746a220c41d8056a2218290000215a2018205b370000200c41d0056a2218290000215b2018205c370000200c41c8056a2218290000215c2018205d370000200c41e0056a220c290000215d200c205e370000201c280200211802402019450d00200e450d082019417f6a201f470d09024020182f0106220c410a4b0d00201841c8006a201841086a200c41067410a2051a201841386a2058370000201841306a2057370000201841286a2059370000201841186a2053370000201841106a205437000020182055370008201841c0006a2056370000201841206a2052370000201841e8056a201841c8056a200c41057410a2051a201841e0056a205d370000201841d8056a205a370000201841d0056a205b3700002018205c3700c805201841ac086a201841a8086a220c20182f010641027441046a10a2051a2018200e3602a808201820182f010641016a220e3b0106200e41ffff037141016a211c4100210e0340200c280200221a200e3b0104201a2018360200200c41046a210c201c200e41016a220e470d000c030b0b41dcd9c4004127418c94c700102d000b20182f0106220c410b4f0d09201841c8006a201841086a200c41067410a2051a201841386a2058370000201841306a2057370000201841286a2059370000201841186a2053370000201841106a205437000020182055370008201841c0006a2056370000201841206a2052370000201841e8056a201841c8056a200c41057410a2051a201841e0056a205d370000201841d8056a205a370000201841d0056a205b3700002018205c3700c805201820182f010641016a3b01060b2022417f732021710d010c0e0b0240200e2802042218450d00200e280200221a2802a808210c200e2018417f6a360204200e200c360200200c4100360200201a10230c0e0b41b3dac4004121418c94c700102d000b2011201b2f0106490d084100210e024003400240201b280200220c0d00410021114100210c0c020b200e41016a210e201b2f01042111200c211b2011200c2f01064f0d000b0b201141016a21110240200e0d00200c211b0c0d0b200c20114102746a41a8086a280200211b41002111200e417f6a220c450d0c0340201b2802a808211b200c417f6a220c0d000c0d0b0b41d095c700412b41dcdbc400102d000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000b41dcd9c4004127418c94c700102d000b41d095c700412b41f4dac400102d000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000b41f58ac7004128418c94c700102d000b201141016a21110c030b200b200c41b4e6c4001030000b41ecdbc4004135418c94c700102d000b200b201041a4e6c4001030000b2030450d002011201b2f0106490d000340201b280200220c450d01201b2f0104210e200c211b200e200c2f01064f0d000b0b0240202d450d00202d41306c450d00203510230b20012802fc01220c450d00200c41306c450d0020012802f80110230b2025450d03202541306c450d03202410230c030b201f2001290318370000201f41186a2009290300370000201f41106a200a290300370000201f41086a200f2903003700000b2025450d01202541306c450d01202410230c010b2004410041d20810a0051a41d8081021220c450d0d200c4100360200200c41046a200141f8076a41d40810a1051a200c200e28020022113602a808200e200c360200200e200e280204221a41016a360204201141003b01042011200c360200200141d0026a41026a221c203c2d00003a0000201f203d2903003703002010203e2903003703002014203f2903003703002008204029030037030020162041290000370000200120012f01ac023b01d002200120012903f8013703f807203620422903003703002035204329030037030020342044290300370300200120012903b0023703e804201a201d470d01200c2f01062211410a4b0d03200c20114106746a220e410a6a201c2d00003a0000200e41086a20012f01d0023b0000200e41176a2030360000200e41136a202f360000200e410f6a202e360000200e410b6a202d360000200e41c0006a2016290000370000200e413b6a2008290300370000200e41236a201f290300370000200e411b6a20012903f807370000200e41336a2014290300370000200e412b6a2010290300370000200c20114105746a220e41e0056a2036290300370000200e41d8056a2035290300370000200e41d0056a2034290300370000200e41c8056a20012903e804370000200c201141016a220e4102746a41a8086a2018360200200c200e3b01062018200c3602002018200e3b010441001a201b1a0b201e2020470d010c030b0b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000b201741ffffff1f71450d05201510230c050b2014417f6a2114201641206a21162019210c0c000b0b1033000b1032000b200b200c4194e6c4001030000b200b41016a210b0240201341ffffff3f71450d00201210230b200b2003470d000b2001280208220c450d00200128021021170240200128020c220e450d000340200c2802a808210c200e417f6a220e0d000b0b02402017450d00410021080340024002400240200c450d002017417f6a21172008200c2f0106490d0141002111034002400240200c280200220e0d00410021084100210e0c010b201141016a2111200c2f010421080b200c1023200e210c2008200e2f01064f0d000b200841016a2108024020110d00200e210c0c030b200e20084102746a41a8086a280200210c410021082011417f6a220e450d020340200c2802a808210c200e417f6a220e0d000c030b0b41d095c700412b41c491c700102d000b200841016a21080b20170d000b0b200c450d00200c280200210e200c1023200e450d000340200e280200210c200e1023200c210e200c0d000b0b200141003602b004200141003602a80402402002280200220b450d00200141a8046a41086a21422000280200210c200141e8046a41186a2133200141d0076a41106a2146200141d0076a41086a2147200141d0026a41016a223b41286a2149203b41206a214a200141f5026a2145200b210e41002125024002400340200e20254d0d01200141d0076a41186a2248200c2025412c6c22416a220841246a29000037030020462008411c6a2900003703002047200841146a2900003703002001200829000c3703d00702402008280208450d00410021300340200141c8046a41186a200c20416a280200203041306c6a220c41186a220e290300370300200141c8046a41106a200c41106a2208290300370300200141c8046a41086a200c41086a22112903003703002001200c2903003703c804200141386a41186a221e2048290300370300200141386a41106a22152046290300370300200141386a41086a221f2047290300370300200120012903d007370338200141003a0058200141b8016a41186a2206200e290000370300200141b8016a41106a22102008290000370300200141b8016a41086a220720112900003703004101211d200141013a00d8012001200c2900003703b8010240024020012802a80422180d0041002118410021140c010b2018211a20012802ac04221b211c02400340201a41286a210c201a2f0106221d41216c210e41002111024002400340201121080240200e0d00201d21080c020b02400240200141386a200c41606a412010a3052211450d0041012117201141004e0d010c030b200c2d00002211450d03417f410120111b21170b200841016a2111200e415f6a210e200c41216a210c2017417f470d000b0b0240201c0d004101211d0c030b201c417f6a211c201a20084102746a41a0036a280200211a0c010b0b4100211d0b2018211a0340201a41286a210c201a2f0106221c41216c210e41002111024002400340201121080240200e0d00201c21080c020b02400240200141b8016a200c41606a412010a3052211450d0041012117201141004e0d010c030b200c2d000022114101460d03417f4101201141014b1b21170b200841016a2111200e415f6a210e200c41216a210c2017417f470d000b0b0240201b0d00410021140c030b201b417f6a211b201a20084102746a41a0036a280200211a0c010b0b201a20084102746a41f4026a21140b200141a0036a41186a2238201e290300370300200141a0036a41106a22392015290300370300200141a0036a41086a223a201f290300370300200120012903383703a003200141003a00c003024002402018450d0020012802ac04211a0c010b200141f8076a410041eb0210a0051a20494100360000204a4200370000203b41186a4200370000203b41106a4200370000203b41086a4200370000203b420037000041a00310212218450d074100211a201841003b010620184100360200201841086a200141f8076a41eb0210a1051a20184198036a204529000037000020184193036a200141d0026a41206a2900003700002018418b036a200141d0026a41186a29000037000020184183036a200141d0026a41106a290000370000201841fb026a200141d0026a41086a290000370000201820012900d0023700f302200141003602ac04200120183602a8040b024002400340201841286a210c20182f0106221b41216c210e4100211102400340201121080240200e0d00201b21080c020b02400240200141a0036a200c41606a412010a3052211450d0041012117201141004e0d010c030b200c2d00002211450d04417f410120111b21170b200841016a2111200e415f6a210e200c41216a210c2017417f470d000b0b0240201a450d00201a417f6a211a201820084102746a41a0036a28020021180c010b0b203320012903a003370000203341086a203a290300370000203341106a2039290300370000203341186a2038290300370000203341206a200141a0036a41206a2d00003a0000200120423602fc04200120083602f804200120183602f0044100210c200141003602ec042001200141a8046a3602f4040c010b200120423602fc04200120083602f804200120183602f0042001201a3602ec042001200141a8046a3602f4044101210c0b2001200c3602e804200141f8076a41086a2235201f290300370300200141f8076a41106a22362015290300370300200141f8076a41186a2228201e290300370300200141f8076a41206a221c200141386a41206a2d00003a0000200120012903383703f80741341021220c450d06200c4200370208200c428180808010370200200c20012903f807370210200c20012f00d0023b0031200c41186a2035290300370200200c41206a2036290300370200200c41286a2028290300370200200c41306a201c2d00003a0000200c41336a200141d0026a41026a221e2d00003a000002400240024002400240200141e8046a200c10ba04280200222428020041016a220c41014d0d002024200c3602002038200629030037030020392010290300370300203a2007290300370300200120012903b8013703a003200141013a00c0030240024020012802a8042218450d0020012802ac04211a0c010b200141f8076a410041eb0210a0051a20494100360000204a4200370000203b41186a4200370000203b41106a4200370000203b41086a4200370000203b420037000041a00310212218450d0c4100211a201841003b010620184100360200201841086a200141f8076a41eb0210a1051a20184198036a204529000037000020184193036a200141d0026a41206a2900003700002018418b036a200141d0026a41186a29000037000020184183036a200141d0026a41106a290000370000201841fb026a200141d0026a41086a290000370000201820012900d0023700f302200141003602ac04200120183602a8040b024002400340201841286a210c20182f0106221b41216c210e4100211102400340201121080240200e0d00201b21080c020b02400240200141a0036a200c41606a412010a3052211450d0041012117201141004e0d010c030b200c2d000022114101460d04417f4101201141014b1b21170b200841016a2111200e415f6a210e200c41216a210c2017417f470d000b0b0240201a450d00201a417f6a211a201820084102746a41a0036a28020021180c010b0b203320012903a003370000203341086a203a290300370000203341106a2039290300370000203341186a2038290300370000203341206a200141a0036a41206a2d00003a0000200120423602fc04200120083602f804200120183602f0044100210c200141003602ec042001200141a8046a3602f4040c010b200120423602fc04200120083602f804200120183602f0042001201a3602ec042001200141a8046a3602f4044101210c0b2001200c3602e804203520072903003703002036201029030037030020282006290300370300201c200141b8016a41206a2d00003a0000200120012903b8013703f80741341021220c450d0b200c4200370208200c428180808010370200200c20012903f807370210200c20012f00d0023b0031200c41186a2035290300370200200c41206a2036290300370200200c41286a2028290300370200200c41306a201c2d00003a0000200c41336a201e2d00003a0000200141e8046a200c10ba042802002223280200220e41016a220c41014d0d002023200c36020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240201d450d0020140d03202428020041016a220c41014d0d172024200c36020020232802080d0a2023417f360208202328020c220c0d014100210c0c020b2014450d03200141f8076a202410bb042001280284082144200128028008214e20012802fc07213120012802f807213c200141f8076a202310bb042001280284082143200128028008214f20012802fc0721400240203c20012802f807223f460d00203c28020841016a220c41004c0d08203c200c360208203f280208220c41016a220e41004c0d09203f200e360208203c41106a203f41106a412010a3050d07203c2d0030203f2d0030470d07203f200c360208203c203c280208417f6a3602080b20402043410274222c6a211c20312044410274222b6a210c4100211d41002118202b450d0541002118201c2111200c2117034020402011460d0602402017417c6a2217280200220e2011417c6a22112802002208460d00200e28020841016a221a41004c0d0e200e201a3602082008280208221a41016a221b41004c0d0f2008201b360208200e41106a200841106a412010a3050d06200e2d003020082d0030470d062008201a360208200e200e280208417f6a3602080b201841016a211820312017470d000c060b0b200c200c280200417f6a3602000240202328020c220c2802000d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d000240200e28020c450d00200e410c6a10d602200c28020c210e0b200e200e280204417f6a360204200c28020c220c2802040d00200c10230b202328020c220c200c280204417f6a360204202328020c220c2802040d00200c10230b202328020841016a210c0b2023200c3602080c150b200e417e4f0d132023200e41026a36020020242802080d072024417f36020802400240202428020c220c0d004100210c0c010b200c200c280200417f6a3602000240202428020c220c2802000d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d000240200e28020c450d00200e410c6a10d602200c28020c210e0b200e200e280204417f6a360204200c28020c220c2802040d00200c10230b202428020c220c200c280204417f6a360204202428020c220c2802040d00200c10230b202428020841016a210c0b2024200c3602082024202336020c0c150b202428020041016a220c41014d0d122024200c36020020232802080d072023417f3602080240202328020c220c0d00202341003602080c140b200c200c280200417f6a3602000240202328020c220c2802000d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d000240200e28020c450d00200e410c6a10d602200c28020c210e0b200e200e280204417f6a360204200c28020c220c2802040d00200c10230b202328020c220c200c280204417f6a360204202328020c220c2802040d00200c10230b2023202328020841016a3602080c130b2008201a360208200e200e280208417f6a3602080b2001410036028008200142043703f807204420186b210e0240204320186b221241016a2217450d002017201c20406b4102762208200820174b1b211d0b02400240200e0d00410021080c010b200e200c20316b41027622082008200e4b1b21080b0240201d20086a2208201d4f0d0041002111410421224100211e2040211a0240410041ff01710e030d0e000d0b410021080c0e0b200141f8076a41002008107920012802f8072222200128028008221e4102746a210802402017450d002040202c6a211b2043417f7320186a2117204021110340201b2011460d012011280200221828020041016a221a41014d0d122018201a36020020082018360200201e41016a211e200841046a2108201141046a2111201741016a221820174f211a20182117201a0d000b0b0240200e450d000240200c20316b4102762211200e4d0d002011200e417f736a220e20114f0d01200c200e4102746b417c6a210c0b200c2031460d000340200c417c6a220c280200220e28020041016a221141014d0d12200e20113602002008200e360200201e41016a211e200841046a21082031200c470d000b0b2001201e360280080c0e0b203f200c360208203c203c280208417f6a360208204fad4220862040ad842252204ead4220862031ad842253204420434b221e1b2254a7211d024020432044201e1b2215410274220e450d00201d200e6a211c41012117201d2108201d21110340024002402017450d00201c20086b41027620174d0d03200820174102746a21080c010b201c2008460d020b2011280200221828020041016a220c41014d0d112018200c3602002008280200220c2802080d09201141046a2111200c417f360208410021174100211a0240200c28020c221b450d00201b201b280200417f6a3602000240200c28020c221a2802000d000240201a28020c221b450d00201b201b280200417f6a360200201a28020c221b2802000d000240201b28020c450d00201b410c6a10d602201a28020c211b0b201b201b280204417f6a360204201a28020c221a2802040d00201a10230b200c28020c221a201a280204417f6a360204200c28020c221a2802040d00201a10230b200c28020841016a211a0b200841046a2108200c201a360208200c201836020c201c2011470d000b0b2015450d08024020442043201e1b22170d004100410041a4e7c4001030000b20532052201e1b2252a72218280200220828020041016a220c41014d0d0f2008200c360200201d280200220c2802080d09200c417f36020802400240200c28020c22110d00410021110c010b20112011280200417f6a3602000240200c28020c22112802000d000240201128020c221a450d00201a201a280200417f6a360200201128020c221a2802000d000240201a28020c450d00201a410c6a10d602201128020c211a0b201a201a280204417f6a360204201128020c22112802040d00201110230b200c28020c22112011280204417f6a360204200c28020c22112802040d00201110230b200c28020841016a21110b2052422088215220544220882153200c2011360208200c200836020c201741027421082018210c0340200c28020022112011280200417f6a3602000240200c28020022112802000d000240201128020c2217450d0020172017280200417f6a360200201128020c22172802000d000240201728020c450d002017410c6a10d602201128020c21170b20172017280204417f6a360204201128020c22112802040d00201110230b200c28020022112011280204417f6a360204200c28020022112802040d00201110230b200c41046a210c2008417c6a22080d000b02402052500d002052a7410274450d00201810230b201d210c0340200c28020022082008280200417f6a3602000240200c28020022082802000d000240200828020c2211450d0020112011280200417f6a360200200828020c22112802000d000240201128020c450d002011410c6a10d602200828020c21110b20112011280204417f6a360204200828020c22082802040d00200810230b200c28020022082008280204417f6a360204200c28020022082802040d00200810230b200c41046a210c200e417c6a220e0d000b02402053500d002053a7410274450d00201d10230b203f203f280200417f6a220c360200203041016a2130200c0d0e0240203f28020c220c450d00200c200c280200417f6a360200203f28020c220c2802000d000240200c28020c450d00200c410c6a10d602203f28020c210c0b200c200c280204417f6a360204203f28020c220c2802040d00200c10230b203f203f280204417f6a220c360204200c0d0e203f10230c0e0b41a795c700411820014188046a4184e7c40041c095c7001034000b41a795c700411820014188046a4184e7c40041c095c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b41a795c700411820014188046a4184e7c40041c095c7001034000b41a795c700411820014188046a4184e7c40041c095c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b410041004194e7c4001030000b41c394c700411020014188046a41fc95c70041d494c7001034000b410121080c010b410221080b034002400240024002400240024020080e03000103030b200e450d06200c20316b410276220841002008200e6b2218201820084b1b22084d0d06200c20084102746b417c6a220c2802002208280200221b41016a41014b0d010c080b0240024020170d00410021170c010b2017417f6a2117201c201a460d00201a280200220828020041016a221841014d0d08201a41046a211a200820183602004100211820080d040b200e450d05200c20316b410276220841002008200e6b2218201820084b1b22084d0d05200c20084102746b417c6a220c2802002208280200221b41016a41014d0d070b200e417f6a210e410221180c010b2017450d03201c201a460d03201a2802002208280200221b41016a41014d0d052017417f6a2117201a41046a211a410121180b2008201b41016a3602000b0240201e20012802fc07470d00024002400240024020180e03010200010b0240200e0d004100211b0c030b200e200c20316b410276221b201b200e4b1b211b0c020b4100211d4100211b02402017450d002017201c201a6b410276221b201b20174b1b211b0b0240200e450d00200e200c20316b410276221d201d200e4b1b211d0b417f201b201d6a221d201d201b491b211b0c010b024020170d004100211b0c010b2017201c201a6b410276221b201b20174b1b211b0b200141f8076a201e417f201b41016a221d201d201b491b107920012802f80721220b202220116a20083602002001201e41016a221e36028008201141046a2111024002400240201841ff01710e03000102000b410121080c020b410221080c010b410021080c000b0b20012802fc072151200141f8016a41186a224b4200370300200141f8016a41106a224c4200370300200141f8016a41086a224d4200370300200142003703f8012038420037030020394200370300203a4200370300200142003703a0034100211402400240201e0d00427f2154427f215541002126410021344100213241002127410021290c010b201e417f6a2110427f21544101210c41002126427f2155410021344100211b427f2158427f2152427f21530240024002400240024002400340200c211a2022201b4102746a220e280200220c28020841016a41004c0d010240200c2d00300d00200e280200220c28020841016a220e41004c0d03200c200e360208200141d0026a41186a221c200c41286a290000370300200141d0026a41106a221d200c41206a290000370300200141d0026a41086a2215200c41186a290000370300200c200c280208417f6a3602082001200c2900103703d002201e201a41002010201b4b1b220c4d0d042022200c4102746a280200220c28020841016a220e41004c0d05200c200e3602082033200c41286a290000370300200141e8046a41106a221f200c41206a290000370300200141e8046a41086a2206200c41186a290000370300200c200c280208417f6a3602082001200c2900103703e804201e201b201e201b1b417f6a220c4d0d062022200c4102746a280200220c28020841016a220e41004c0d07200c200e3602082028200c41286a2900003703002036200c41206a2900003703002035200c41186a290000370300200c200c280208417f6a3602082001200c2900103703f807200041086a280200412c6c220e2108200028020022112117024003402017210c2008450d010240200141d0026a200c410c6a2218460d00200841546a2108200c412c6a21172018200141d0026a412010a3050d010b0b200c41086a28020041306c2108200c280200211703402017210c2008450d010240200141e8046a200c460d00200841506a2108200c41306a2117200c200141e8046a412010a3050d010b0b2058200c41206a2903002257582052200c41286a29030022565820522056511b0d00204b2033290300370300204c201f290300370300204d2006290300370300203a20152903003703002039201d2903003703002038201c290300370300200120012903e8043703f801200120012903d0023703a003410121342057215420562155201b21262056215320572158205621520b03402011210c200e450d010240200141d0026a200c410c6a2208460d00200e41546a210e200c412c6a21112008200141d0026a412010a3050d010b0b200c41086a28020041306c210e200c280200210803402008210c200e450d010240200141f8076a200c460d00200e41506a210e200c41306a2108200c200141f8076a412010a3050d010b0b20542158205321522054200c41206a2903002257582053200c41286a29030022565820532056511b0d00204b2028290300370300204c2036290300370300204d2035290300370300203a20152903003703002039201d2903003703002038201c290300370300200120012903f8073703f801200120012903d0023703a003410021342057215420562155201b21262056215320572158205621520b0240201a201e470d00201e213220342127202621290c080b201a41016a210c201a211b0c000b0b41a795c700411820014188046a4184e7c40041c095c7001034000b41a795c700411820014188046a4184e7c40041c095c7001034000b200c201e41b4e7c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b200c201e41c4e7c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b200141003602d802200142043703d002202920276a21500240024020320d00410121214100210c0c010b201e417f6a21374101210c205041017121074100211441002110410121210240024002400240024002400240024002400340200c2119202220104102746a222a280200221c28020841016a220c41004c0d01201c200c3602080240201c2d00300d00201e2010417f6a203720101b223d4b222e450d032022203d4102746a222f280200222d28020841016a220c41004c0d04202d200c36020802400240200041086a223e280200220c0d002019210c2010211d0c010b20002802002218200c412c6c6a211b202d41106a211120102026462034457121164100211a2010211d034002400240201c41106a220c2018410c6a220e460d00200e200c412010a3050d010b201841086a2206280200221f41306c210e4100210820182802002215210c02400340200e450d022011200c460d01200c2011412010a3052117200841016a2108200e41506a210e200c41306a210c20170d000b20174541016a41017120086a417f6a21080b2015200841306c6a220c2903202153200c41286a2903002152024002400240201d410171450d0020070d01427f205220557c205320547c2256205354220ead7c2253200e205320525420532052511b220e1b2152427f2056200e1b21530c020b024020070d004200205220557d2053205454ad7d2256205320547d2258205356205620525620562052511b220e1b215242002058200e1b21530c020b427f205220557c205320547c2256205354220ead7c2253200e205320525420532052511b220e1b2152427f2056200e1b21530c010b4200205220557d2053205454ad7d2256205320547d2258205356205620525620562052511b220e1b215242002058200e1b21530b02402053205284500d00200c41206a220c2053370300200c20523703080c010b200c200c41306a201f2008417f736a41306c10a2051a2006201f417f6a36020041002127410020212025201a461b212102402016450d00202621292026211d0c010b201e20104d0d08202a280200220c28020041016a220e41014d0d10200c200e360200202e450d09202f280200220e28020041016a220841014d0d10200e20083602000240201420012802d402470d00200141d0026a2014410110a50120012802d80221140b20012802d00220144103746a2208200e3602042008200c3602002001201441016a22143602d80220342127202621292010211d0b02402018412c6a2218201b460d00201a41016a211a0c010b0b201d41016a210c0b201e200c41002037201d4b1b220c4d0d072022200c4102746a280200222e28020841016a220c41004c0d08202e200c3602080240203e280200220e450d0020002802002218200e412c6c6a21152010202646203441014671212f4100211a2022201041016a4100203720104b1b223d4102746a213e202e41106a2111201c41106a211b034002400240201b2018410c6a220c460d00200c201b412010a3050d010b201841086a2216280200220641306c210e410021082018280200221f210c02400340200e450d022011200c460d01200c2011412010a3052117200841016a2108200e41506a210e200c41306a210c20170d000b20174541016a41017120086a417f6a21080b201f200841306c6a220c2903202153200c41286a2903002152024002400240201d410171450d0020070d014200205220557d2053205454ad7d2256205320547d2258205356205620525620562052511b220e1b215242002058200e1b21530c020b024020070d00427f205220557c205320547c2256205354220ead7c2253200e205320525420532052511b220e1b2152427f2056200e1b21530c020b4200205220557d2053205454ad7d2256205320547d2258205356205620525620562052511b220e1b215242002058200e1b21530c010b427f205220557c205320547c2256205354220ead7c2253200e205320525420532052511b220e1b2152427f2056200e1b21530b02402053205284500d00200c41206a220c2053370300200c20523703080c010b200c200c41306a20062008417f736a41306c10a2051a20162006417f6a360200410020212025201a461b2121410121270240202f450d00202621292026211d0c010b201e20104d0d0c202a280200220c28020041016a220e41014d0d10200c200e360200201e203d4d0d0d203e280200220e28020041016a220841014d0d10200e20083602000240201420012802d402470d00200141d0026a2014410110a50120012802d80221140b20012802d00220144103746a2208200e3602042008200c3602002001201441016a22143602d80220342127202621292010211d0b201a41016a211a2018412c6a22182015470d000b202e280208210c0b202e200c417f6a360208202d202d280208417f6a360208201c280208210c0b201c200c417f6a360208024020192032470d00201e210c0c0b0b201941016a210c20192110201e20194b0d000b2019201e41d4e7c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b203d201e41e4e7c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b2010201e41f4e7c4001030000b203d201e4184e8c4001030000b200c201e4194e8c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b2010201e41a4e8c4001030000b203d201e41b4e8c4001030000b0240024020274101470d002029200c417f6a460d010b41c0001021220e450d0d200e20012903a003370000200e20012903f801370020200e41186a2038290300370000200e41106a2039290300370000200e41086a203a290300370000200e41286a204d290300370000200e41306a204c290300370000200e41386a204b29030037000002400240205020124b0d002043417f6a221b450d014100211102400240024002400240034020112043460d01204020114102746a2218280200220c280200220841016a221741014d0d0a200c2017360200200c28020841016a41004c0d02200c20083602002033200c41286a290000370300200141e8046a41106a200c41206a290000370300200141e8046a41086a200c41186a2900003703002001200c2900103703e8042043201141016a22114d0d03204020114102746a221a280200220c280200220841016a221741014d0d0a200c2017360200200c28020841016a41004c0d04200c20083602002028200c41286a2900003703002036200c41206a2900003703002035200c41186a2900003703002001200c2900103703f8074100210c02400340200c41c000460d01200e200c6a2108200c41206a210c2008200141e8046a412010a3050d000b4100210c0340200c41c000460d01200e200c6a2108200c41206a210c2008200141f8076a412010a3050d000c090b0b2018280200220828020041016a220c41014d0d0a2008200c360200201a280200220c2802080d05200c417f36020802400240200c28020c22170d00410021170c010b20172017280200417f6a3602000240200c28020c22172802000d000240201728020c2218450d0020182018280200417f6a360200201728020c22182802000d000240201828020c450d002018410c6a10d602201728020c21180b20182018280204417f6a360204201728020c22172802040d00201710230b200c28020c22172017280204417f6a360204200c28020c22172802040d00201710230b200c28020841016a21170b200c2017360208200c200836020c2011201b470d000c070b0b2043204341e4e8c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b2011204341f4e8c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b02402044417f6a221b450d004100211102400240024002400240034020112044460d01203120114102746a2218280200220c280200220841016a221741014d0d0a200c2017360200200c28020841016a41004c0d02200c20083602002033200c41286a290000370300200141e8046a41106a200c41206a290000370300200141e8046a41086a200c41186a2900003703002001200c2900103703e8042044201141016a22114d0d03203120114102746a221a280200220c280200220841016a221741014d0d0a200c2017360200200c28020841016a41004c0d04200c20083602002028200c41286a2900003703002036200c41206a2900003703002035200c41186a2900003703002001200c2900103703f8074100210c02400340200c41c000460d01200e200c6a2108200c41206a210c2008200141e8046a412010a3050d000b4100210c0340200c41c000460d01200e200c6a2108200c41206a210c2008200141f8076a412010a3050d000c080b0b2018280200220828020041016a220c41014d0d0a2008200c360200201a280200220c2802080d05200c417f36020802400240200c28020c22170d00410021170c010b20172017280200417f6a3602000240200c28020c22172802000d000240201728020c2218450d0020182018280200417f6a360200201728020c22182802000d000240201828020c450d002018410c6a10d602201728020c21180b20182018280204417f6a360204201728020c22172802040d00201710230b200c28020c22172017280204417f6a360204200c28020c22172802040d00201710230b200c28020841016a21170b200c2017360208200c200836020c2011201b470d000c060b0b2044204441c4e8c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b2011204441d4e8c4001030000b41a795c700411820014188046a4184e7c40041c095c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b202328020041016a220c41014d0d032023200c360200024020242802080d002024417f36020802400240202428020c220c0d004100210c0c010b200c200c280200417f6a3602000240202428020c220c2802000d000240200c28020c2208450d0020082008280200417f6a360200200c28020c22082802000d000240200828020c450d002008410c6a10d602200c28020c21080b20082008280204417f6a360204200c28020c220c2802040d00200c10230b202428020c220c200c280204417f6a360204202428020c220c2802040d00200c10230b202428020841016a210c0b2024200c3602082024202336020c200e10230c020b41c394c700411020014188046a41fc95c70041d494c7001034000b202428020041016a220c41014d0d022024200c360200024020232802080d002023417f36020802400240202328020c220c0d004100210c0c010b200c200c280200417f6a3602000240202328020c220c2802000d000240200c28020c2208450d0020082008280200417f6a360200200c28020c22082802000d000240200828020c450d002008410c6a10d602200c28020c21080b20082008280204417f6a360204200c28020c220c2802040d00200c10230b202328020c220c200c280204417f6a360204202328020c220c2802040d00200c10230b202328020841016a210c0b2023200c3602082023202436020c200e10230c010b41c394c700411020014188046a41fc95c70041d494c7001034000b20012802d002221820144103746a211120012802d402211b2018210e02400240024002402014450d0020182108024003402008280200220c450d010240024002400240200c200841046a280200220e10bc040d00200e200c10bc04450d03200e2802080d09200e417f360208200e28020c22170d01410021170c020b200c2802080d07200c417f36020802400240200c28020c22170d00410021170c010b20172017280200417f6a3602000240200c28020c22172802000d000240201728020c221a450d00201a201a280200417f6a360200201728020c221a2802000d000240201a28020c450d00201a410c6a10d602201728020c211a0b201a201a280204417f6a360204201728020c22172802040d00201710230b200c28020c22172017280204417f6a360204200c28020c22172802040d00201710230b200c28020841016a21170b200c2017360208200c410036020c0c020b20172017280200417f6a3602000240200e28020c22172802000d000240201728020c221a450d00201a201a280200417f6a360200201728020c221a2802000d000240201a28020c450d00201a410c6a10d602201728020c211a0b201a201a280204417f6a360204201728020c22172802040d00201710230b200e28020c22172017280204417f6a360204200e28020c22172802040d00201710230b200e28020841016a21170b200e2017360208200e410036020c0b200e200e280200417f6a2217360200024020170d000240200e28020c2217450d0020172017280200417f6a360200200e28020c22172802000d000240201728020c450d002017410c6a10d602200e28020c21170b20172017280204417f6a360204200e28020c22172802040d00201710230b200e200e280204417f6a221736020420170d00200e10230b200c200c280200417f6a220e3602000240200e0d000240200c28020c220e450d00200e200e280200417f6a360200200c28020c220e2802000d000240200e28020c450d00200e410c6a10d602200c28020c210e0b200e200e280204417f6a360204200c28020c220e2802040d00200e10230b200c200c280204417f6a220e360204200e0d00200c10230b200841086a22082011470d000c030b0b200841086a210e0b2011200e460d000340200e220c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2208450d0020082008280200417f6a360200200e28020c22082802000d000240200828020c450d002008410c6a10d602200e28020c21080b20082008280204417f6a360204200e28020c220e2802040d00200e10230b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10230b200c41086a210e200c41046a220c28020022082008280200417f6a3602000240200c28020022082802000d000240200828020c2217450d0020172017280200417f6a360200200828020c22172802000d000240201728020c450d002017410c6a10d602200828020c21170b20172017280204417f6a360204200828020c22082802040d00200810230b200c28020022082008280204417f6a360204200c280200220c2802040d00200c10230b2011200e470d000b0b0240201b41ffffffff0171450d00201810230b0240201e450d00201e410274210e2022210c0340200c28020022082008280200417f6a3602000240200c28020022082802000d000240200828020c2211450d0020112011280200417f6a360200200828020c22112802000d000240201128020c450d002011410c6a10d602200828020c21110b20112011280204417f6a360204200828020c22082802040d00200810230b200c28020022082008280204417f6a360204200c28020022082802040d00200810230b200c41046a210c200e417c6a220e0d000b0b0240205141ffffffff0371450d00202210230b02402043450d002040210c0340200c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2208450d0020082008280200417f6a360200200e28020c22082802000d000240200828020c450d002008410c6a10d602200e28020c21080b20082008280204417f6a360204200e28020c220e2802040d00200e10230b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10230b200c41046a210c202c417c6a222c0d000b0b0240204f41ffffffff0371450d00204010230b203f203f280200417f6a220c3602000240200c0d000240203f28020c220c450d00200c200c280200417f6a360200203f28020c220c2802000d000240200c28020c450d00200c410c6a10d602203f28020c210c0b200c200c280204417f6a360204203f28020c220c2802040d00200c10230b203f203f280204417f6a220c360204200c0d00203f10230b202141ff0171211102402044450d002031210c0340200c280200220e200e280200417f6a3602000240200c280200220e2802000d000240200e28020c2208450d0020082008280200417f6a360200200e28020c22082802000d000240200828020c450d002008410c6a10d602200e28020c21080b20082008280204417f6a360204200e28020c220e2802040d00200e10230b200c280200220e200e280204417f6a360204200c280200220e2802040d00200e10230b200c41046a210c202b417c6a222b0d000b0b203020116a2130204e41ffffffff0371450d02203110230c020b41c394c700411020014188046a41fc95c70041d494c7001034000b41c394c700411020014188046a41fc95c70041d494c7001034000b203c203c280200417f6a220c3602000240200c0d000240203c28020c220c450d00200c200c280200417f6a360200203c28020c220c2802000d000240200c28020c450d00200c410c6a10d602203c28020c210c0b200c200c280204417f6a360204203c28020c220c2802040d00200c10230b203c203c280204417f6a220c360204200c0d00203c10230b20232023280200417f6a220c3602000240200c0d000240202328020c220c450d00200c200c280200417f6a360200202328020c220c2802000d000240200c28020c450d00200c410c6a10d602202328020c210c0b200c200c280204417f6a360204202328020c220c2802040d00200c10230b20232023280204417f6a220c360204200c0d00202310230b20242024280200417f6a220c360200200c0d040240202428020c220c450d00200c200c280200417f6a360200202428020c220c2802000d000240200c28020c450d00200c410c6a10d602202428020c210c0b200c200c280204417f6a360204202428020c220c2802040d00200c10230b20242024280204417f6a220c360204200c0d040c030b00000b2023202436020c0b20232023280200417f6a220c3602000240200c0d000240202328020c220c450d00200c200c280200417f6a360200202328020c220c2802000d000240200c28020c450d00200c410c6a10d602202328020c210c0b200c200c280204417f6a360204202328020c220c2802040d00200c10230b20232023280204417f6a220c360204200c0d00202310230b203041016a213020242024280200417f6a220c360200200c0d010240202428020c220c450d00200c200c280200417f6a360200202428020c220c2802000d000240200c28020c450d00200c410c6a10d602202428020c210c0b200c200c280204417f6a360204202428020c220c2802040d00200c10230b20242024280204417f6a220c360204200c0d010b202410230b0240200041086a280200220e20254d0d002000280200220c20416a28020820304d0d020c010b0b2025200e41f4e6c4001030000b202541016a2225200b470d000b20012802a804220c450d0220012802b0042118024020012802ac04220e450d000340200c2802a003210c200e417f6a220e0d000b0b2018450d014100210802400340200c450d014100211102402008200c2f0106490d00034002400240200c280200220e0d00410021084100210e0c010b201141016a2111200c2f010421080b200c1023200e210c2008200e2f01064f0d000b200e210c0b200841016a210e200c20084102746a41f4026a2802002117200c200841216c6a41286a2d0000211a0240024020110d00200e21080c010b200c200e4102746a41a0036a280200210c410021082011417f6a220e450d000340200c2802a003210c200e417f6a220e0d000b0b201a41ff01714102460d032018417f6a211820172017280200417f6a220e3602000240200e0d000240201728020c220e450d00200e200e280200417f6a360200201728020c220e2802000d000240200e28020c450d00200e410c6a10d602201728020c210e0b200e200e280204417f6a360204201728020c220e2802040d00200e10230b20172017280204417f6a220e360204200e0d00201710230b20180d000c030b0b41d095c700412b41c491c700102d000b2025200e41e4e6c4001030000b200c450d00200c280200210e200c1023200e450d000340200e280200210c200e1023200c210e200c0d000b0b200141d0106a24000f0b102a000bdb21011d7f230041b0046b220224000240024002400240024002400240024020002802004101460d00200041146a2802002203200328020041016a360200200041106a28020021042000410c6a2802002105200041086a280200210320002802042106200241e0006a41206a2207200041386a2d00003a0000200241e0006a41186a2208200041306a290000370300200241e0006a41106a2209200041286a290000370300200241e0006a41086a220a200041206a2900003703002002200041186a29000037036020032f0106220b410b490d01200241c0016a410041eb0210a0051a200241d9006a4100360000200241306a41216a4200370000200241c9006a4200370000200241c1006a4200370000200241396a42003700002002420037003141a0031021220c450d05200c41003b0106200c4100360200200c41086a200241c0016a41eb0210a1052107200c4198036a200241d5006a290000370000200c4193036a200241306a41206a290000370000200c418b036a200241306a41186a290000370000200c4183036a200241306a41106a290000370000200c41fb026a200241306a41086a290000370000200c20022900303700f3022002200341ce016a2f00003b01182002200341d0016a2d00003a001a200341d1016a280000210d200341d5016a280000210e200341d9016a280000210f200341dd016a28000021102002200341e7016a2900003701c6012002200341e1016a2900003703c001200328028c0321112007200341ef016a20032f010641796a220041216c10a1052107200c41f4026a20034190036a200041027410a1052108200341063b0106200c20003b01062002412c6a41026a20022d001a3a0000200220022f01183b012c200220022903c001370330200220022901c6013701360240024020044107490d00200441216c20076a220741ba7e6a200741997e6a2207200041ffff0371200441796a22096b41216c10a2051a200741206a200241e0006a41206a2d00003a0000200741186a200241e0006a41186a290300370000200741106a200241e0006a41106a290300370000200741086a200241e0006a41086a29030037000020072002290360370000200441027420086a41686a2107200820094102746a2112200c41066a22002f010020096b21040c010b200341086a200441216c6a220741216a2007200341066a22002f010020046b41216c10a2051a200741206a200241e0006a41206a2d00003a0000200741186a200241e0006a41186a290300370000200741106a200241e0006a41106a290300370000200741086a200241e0006a41086a29030037000020072002290360370000200341f4026a20044102746a221241046a210720002f010020046b21040b20072012200441027410a2051a20122001360200200241146a41026a2002412c6a41026a22132d000022013a0000200020002f010041016a3b0100200241106a41026a221420013a000020022002290136370196012002200229033037039001200220022f012c22003b0114200220003b0110200220022903900137030020022002290196013701060240200328020022070d00410021000c040b20032f01042115200241c0016a4102722116200241306a41016a210a410021000340201320142d00003a0000200220022f01103b012c200220022903003703182002200229010637011e20062000470d03201541ffff0371210802400240024020072f01062200410b490d00200a41286a4100360000200a41206a4200370000200a41186a4200370000200a41106a4200370000200a41086a4200370000200a42003700002016410041ed0210a0051a200241e0006a41086a22004200370300200241e0006a41106a22034200370300200241e0006a41186a22044200370300200241e0006a41206a22094200370300200241e0006a41286a220b420037030020024190016a41256a2217200241306a41256a29000037000020024190016a41206a2218200241306a41206a29000037030020024190016a41186a2219200241306a41186a29000037030020024190016a41106a221a200241306a41106a29000037030020024190016a41086a221b200241306a41086a29000037030020024200370360200220022900303703900141d00310212201450d0920014100360200200141046a200241c0016a41ef0210a1051a20014198036a201729000037000020014193036a20182903003700002001418b036a201929030037000020014183036a201a290300370000200141fb026a201b29030037000020012002290390013700f302200120022903603702a003200141a8036a2000290300370200200141b0036a2003290300370200200141b8036a2004290300370200200141c0036a2009290300370200200141c8036a200b29030037020020024190016a41026a220b200741d0016a2d00003a00002002200741ce016a2f00003b0190012002200741e1016a2900003703c0012002200741e7016a2900003701c601200741d1016a2800002118200741d5016a2800002119200741d9016a280000211a200741dd016a280000211b200728028c03211c200141086a200741ef016a20072f0106220341796a220041216c10a105211d200141f4026a20074190036a200041027410a105211e200141a0036a200741bc036a2003417a6a220941027410a1052117200741063b0106200120003b010602402009450d00410021002017210303402003280200220420003b010420042001360200200341046a21032009200041016a2200470d000b0b200220022f01900122003b0130200220022903c001370360200220022901c6013701662002200b2d000022033a0032200b20033a0000200220003b019001200220022903603703c001200220022901663701c601201541ffff037122034107490d01200841216c201d6a220041ba7e6a200041997e6a220320012f0106200841796a22006b41216c10a2051a2003201036000f2003200f36000b2003200e3600072003200d360003200341026a20132d00003a0000200320022f012c3b000020032002290318370013200341196a200229011e370000201e2008417a6a220341027422046a201e20004102746a220920012f0106221520006b41027410a2051a200920113602002001201541016a22093b01062008410274221520176a416c6a201720046a2204200941ffff0371220820036b41027410a2051a2004200c36020020082003490d02200120156a4188036a2103034020032802002204200041016a22003b010420042001360200200341046a210320002008490d000c030b0b2007200841216c6a220341296a200341086a2201200020086b41216c10a2051a200341176a2010360000200341136a200f3600002003410f6a200e3600002003410b6a200d3600002003410a6a2002412c6a41026a2d00003a0000200120022f012c3b00002003411b6a2002290318370000200341216a200229011e370000200741f4026a2203200841016a220041027422016a2003200841027422046a220320072f0106220920086b41027410a2051a200320113602002007200941016a22033b01062004200741a0036a22086a41086a200820016a2201200341ffff0371220420006b41027410a2051a2001200c360200201541ffff037120044f0d0720072000417f6a22004102746a41a4036a2103034020032802002201200041016a22003b010420012007360200200341046a210320002004490d000c080b0b200741086a200841216c6a220041216a200020072f010620086b41216c10a2051a2000201036000f2000200f36000b2000200e3600072000200d360003200041026a20132d00003a0000200020022f012c3b000020002002290318370013200041196a200229011e370000200741f4026a2204200841016a220941027422156a2004200841027422006a220420072f0106221720086b41027410a2051a200420113602002007201741016a22043b01062000200741a0036a22176a41086a201720156a2215200441ffff0371220420096b41027410a2051a2015200c360200200320044f0d00200720006a41a4036a2100034020002802002203200841016a22083b010420032007360200200041046a210020042008470d000b0b200641016a21002014200b2d00003a0000200220022f0190013b0110200220022903c001370300200220022901c6013701060240200728020022030d002018210d201b2110201a210f2019210e2001210c201c21110c050b20072f010421152018210d201b2110201a210f2019210e20032107201c21112001210c200021060c000b0b20012001280200417f6a2203360200200041086a280200200041106a2802004102746a41f4026a211220030d030240200128020c2200450d0020002000280200417f6a360200200128020c22002802000d000240200028020c450d002000410c6a10d602200128020c21000b20002000280204417f6a360204200128020c22002802040d00200010230b20012001280204417f6a220036020420000d03200110230c030b2003200441216c6a220041296a200041086a220c200b20046b41216c10a2051a200041286a20072d00003a0000200041206a2008290300370000200041186a2009290300370000200041106a200a290300370000200c2002290360370000200320044102746a220041f8026a200041f4026a221220032f010620046b41027410a2051a20122001360200200320032f010641016a3b01060c020b41ecdbc4004135418c94c700102d000b200241b9016a4100360000200241b1016a4200370000200241a9016a4200370000200241a1016a420037000020024199016a42003700002002420037009101200241c0016a410272410041ed0210a0051a200241e0006a41086a22014200370300200241e0006a41106a22044200370300200241e0006a41186a22074200370300200241e0006a41206a2208420037030020024188016a22094200370300200241306a41256a220a20024190016a41256a290000370000200241306a41206a220b20024190016a41206a290000370300200241306a41186a220620024190016a41186a290000370300200241306a41106a221520024190016a41106a290000370300200241306a41086a221720024190016a41086a29000037030020024200370360200220022900900137033041d00310212203450d0120034100360200200341046a200241c0016a41ef0210a1051a20034198036a200a29000037000020034193036a200b2903003700002003418b036a200629030037000020034183036a2015290300370000200341fb026a2017290300370000200320022903303700f302200320022903603702a003200341a8036a2001290300370200200341b0036a2004290300370200200341b8036a2007290300370200200341c0036a2008290300370200200341c8036a20092903003702002003200528020022013602a0032005200336020020052005280204220441016a360204200141003b010420012003360200200241e0006a41026a200241106a41026a2d00003a0000200220022f01103b0160200220022903003703c001200220022901063701c60120042000470d0220032f01062201410a4b0d032003200141216c6a2200410a6a200241e0006a41026a2d00003a0000200041086a20022f01603b0000200041176a2010360000200041136a200f3600002000410f6a200e3600002000410b6a200d3600002000411b6a20022903c001370000200041216a20022901c6013700002003200141016a22004102746a41a0036a200c360200200320014102746a41f4026a2011360200200320003b0106200c20003b0104200c20033602000b200241b0046a240020120f0b102a000b4183dac4004130418c94c700102d000b41dcd9c4004127418c94c700102d000bab0b010c7f230041306b220224002002410036021020024204370308200241003602202002420437031802400240024002400240200128020041016a220341014d0d0020012003360200200241086a41004101107920022802082204200228021022034102746a20013602002002200341016a22053602102001280200220341016a41014d0d002001200341016a360200200241186a41004101107920022802182206200228022022034102746a20013602002002200341016a2207360220200128020041016a220841014d0d00200120083602000340200841016a220341014d0d0120012003360200200128020841016a220941004c0d0220012009360208200128020c2208450d0502402007450d002007410274210a200841106a210b20062109034002400240200928020022032008460d00200328020841016a220c41004c0d072003200c3602082008280208220c41016a220d41004c0d082008200d360208200341106a200b412010a3050d0120032d003020082d0030470d012008200c36020820032003280208417f6a3602080b20012802002103200128020821090c080b200941046a21092008200c36020820032003280208417f6a360208200a417c6a220a0d000b200128020c21080b200828020041016a220341014d0d012008200336020002402005200228020c470d00200241086a20054101107920022802082104200228021021050b200420054102746a20083602002002200541016a2205360210200128020c220328020041016a220841014d0d012003200836020020012001280200417f6a2208360200024020080d000240200128020c2208450d0020082008280200417f6a360200200128020c22082802000d000240200828020c450d002008410c6a10d602200128020c21080b20082008280204417f6a360204200128020c22082802040d00200810230b20012001280204417f6a220836020420080d00200110230b200328020041016a220841014d0d012003200836020002402007200228021c470d00200241186a20074101107920022802182106200228022021070b200620074102746a200336020020012001280208417f6a36020820012001280200417f6a22083602002002200741016a2207360220024020080d000240200128020c2208450d0020082008280200417f6a360200200128020c22082802000d000240200828020c450d002008410c6a10d602200128020c21080b20082008280204417f6a360204200128020c22082802040d00200810230b20012001280204417f6a220836020420080d00200110230b20032802002108200321010c000b0b00000b41a795c7004118200241286a418c96c70041c095c7001034000b41a795c7004118200241286a419ca5c20041c095c7001034000b41a795c7004118200241286a419ca5c20041c095c7001034000b20012003417f6a220336020020012009417f6a360208024020030d000240200128020c2203450d0020032003280200417f6a360200200128020c22032802000d000240200328020c450d002003410c6a10d602200128020c21030b20032003280204417f6a360204200128020c22032802040d00200310230b20012001280204417f6a220336020420030d00200110230b20002001360200200020022903083702042000410c6a200241106a28020036020002402007450d0020074102742108200621030340200328020022092009280200417f6a3602000240200328020022092802000d000240200928020c2201450d0020012001280200417f6a360200200928020c22012802000d000240200128020c450d002001410c6a10d602200928020c21010b20012001280204417f6a360204200928020c22092802040d00200910230b200328020022092009280204417f6a360204200328020022092802040d00200910230b200341046a21032008417c6a22080d000b0b0240200228021c41ffffffff0371450d00200610230b200241306a24000ba50201047f230041106b22022400410021030240024002400240024002400240200028020841016a220441004c0d00200028020c2205450d0620002004360208024020052001470d00410121030c060b200528020841016a220341004c0d01200520033602082001280208220441016a220341004c0d0220012003360208200541106a200141106a412010a3050d034101210320052d003020012d0030470d030c040b41a795c7004118200241086a418c96c70041c095c7001034000b41a795c7004118200241086a418c96c70041c095c7001034000b41a795c7004118200241086a418c96c70041c095c7001034000b410021030b2001200436020820052005280208417f6a360208200028020821040b20002004417f6a3602080b200241106a240020030b13002000410a360204200041f8e9c4003602000b3400200041e4dec40036020420004100360200200041146a410f360200200041106a41e8f4c400360200200041086a42063702000b2b01017f02404101102122020d001033000b200042818080801037020420002002360200200241003a00000b6301027f230041206b22022400200241003602082002420837030002404104102122030d001033000b20024204370214200220033602104100200241106a1061200041086a200228021836020020002002290310370200200210af04200241206a24000be00101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002400240412010212206450d0020062002290300370000200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000412010212203450d0120032006290000370000200341186a200641186a290000370000200341106a200641106a290000370000200341086a200641086a29000037000020061023200042a0808080800437020420002003360200200241206a24000f0b1033000b102a000bae0101017f0240410410212202450d002002410036000020024104410810252202450d00200241003a000420024108411510252202450d00200242003700052002410d6a420037000020024115412a10252202450d00200242003700152002411d6a42003700002002412a41d40010252202450d002002420037003520024200370025200042d4808080d008370204200020023602002002413d6a42003700002002412d6a42003700000f0b102a000bcc0405067f017e017f017e047f230041e0006b22002400200041d7ddc400411010cd01200028020421010240200028020022024101470d0041d7ddc400ad428080808080028410110b200041306a41186a22034200370300200041306a41106a22044200370300200041306a41086a220542003703002000420037033041e4dec400ad4280808080e000842206100c22072900002108200041d0006a41086a2209200741086a2900003703002000200837035020071023200520092903003703002000200029035037033041d0ffc400ad4280808080e00184100c220729000021082009200741086a2900003703002000200837035020071023200420002903502208370300200041106a41086a220a2005290300370300200041106a41106a220b2008370300200041106a41186a220c20092903003703002000200029033037031020002001410020021b360230200041106aad4280808080800484200041306aad4280808080c00084100e20004101360208200342003703002004420037030020054200370300200042003703302006100c220729000021062009200741086a2900003703002000200637035020071023200520092903003703002000200029035037033041d483c500ad4280808080e00184100c220729000021062009200741086a2900003703002000200637035020071023200420002903502206370300200a2005290300370300200b2006370300200c200929030037030020002000290330370310200041203602342000200041106a360230200041086a200041306a10c402200041e0006a24000ba41d08047f017e017f017e047f017e047f017e230041f0016b22012400200141a8016a41186a22024200370300200141a8016a41106a22034200370300200141a8016a41086a22044200370300200142003703a80141e4dec400ad4280808080e000842205100c22062900002107200141c8016a41086a2208200641086a290000370300200120073703c8012006102320042008290300370300200120012903c8013703a80141d483c500ad4280808080e00184100c220629000021072008200641086a290000370300200120073703c80120061023200320012903c801220737030020014188016a41086a2206200429030037030020014188016a41106a2209200737030020014188016a41186a220a2008290300370300200120012903a8013703880120014188016aad428080808080048422071011200242003703002003420037030020044200370300200142003703a8012005100c220b290000210c2008200b41086a2900003703002001200c3703c801200b102320042008290300370300200120012903c8013703a80141d0ffc400ad4280808080e00184100c220b290000210c2008200b41086a2900003703002001200c3703c801200b1023200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a8013703880120071011200242003703002003420037030020044200370300200142003703a8012005100c220b290000210c2008200b41086a2900003703002001200c3703c801200b102320042008290300370300200120012903c8013703a80141e8ffc400ad4280808080b00284100c220b290000210c2008200b41086a2900003703002001200c3703c801200b1023200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a8013703880120071011200242003703002003420037030020044200370300200142003703a8012005100c220b290000210c2008200b41086a2900003703002001200c3703c801200b102320042008290300370300200120012903c8013703a801418c80c500ad4280808080800284100c220b290000210c2008200b41086a2900003703002001200c3703c801200b1023200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a8013703880120071011200242003703002003420037030020044200370300200142003703a8012005100c220b290000210c2008200b41086a2900003703002001200c3703c801200b102320042008290300370300200120012903c8013703a80141f3dec400ad4280808080e00084100c220b290000210c2008200b41086a2900003703002001200c3703c801200b1023200320012903c801220c370300200620042903003703002009200c370300200a2008290300370300200120012903a80137038801200120014188016a412010cd012001280204210d02402001280200220e4101470d00200710110b200242003703002003420037030020044200370300200142003703a8012005100c220b29000021052008200b41086a290000370300200120053703c801200b102320042008290300370300200120012903c8013703a80141f9dec400ad4280808080a00184100c220b29000021052008200b41086a290000370300200120053703c801200b1023200320012903c801370000200341086a20082903003700002006200429030037030020092003290300370300200a2002290300370300200120012903a80137038801200141c8016a20014188016a412010e101024002400240024020012d00c80122080d00200141c0016a200141e1016a290000370300200141b8016a200141d9016a290000370300200141b0016a200141d1016a290000370300200120012900c9013703a8010c010b20071011200141a8016a41186a2204200141e1016a290000370300200141a8016a41106a2202200141d9016a290000370300200141a8016a41086a2206200141d1016a290000370300200120012900c9013703a80120084101460d010b200141206a4200370300200141186a4200370300200141106a4200370300200142003703080c010b200141086a41186a2004290300370300200141086a41106a2002290300370300200141086a41086a2006290300370300200120012903a8013703080b200141a8016a41186a22064200370300200141a8016a41106a22094200370300200141a8016a41086a22044200370300200142003703a80141e4dec400ad4280808080e00084100c22022900002105200141c8016a41086a2208200241086a290000370300200120053703c8012002102320042008290300370300200120012903c8013703a8014191dfc400ad4280808080e00084100c220229000021052008200241086a290000370300200120053703c80120021023200320012903c801370000200341086a200829030037000020014188016a41086a200429030037030020014188016a41106a200929030037030020014188016a41186a2006290300370300200120012903a80137038801200141c8016a20014188016a10f7020240024020012802c801220f0d004100210a20014100360230200142043703284104210f410021100c010b200710112001200f360228200120012902cc01220537022c2005422088a7210a2005a721100b200d4100200e1b2106200141a8016a41186a22024200370300200141a8016a41106a22094200370300200141a8016a41086a22084200370300200142003703a80141e4dec400ad4280808080e00084100c220b2900002105200141c8016a41086a2204200b41086a290000370300200120053703c801200b102320082004290300370300200120012903c8013703a8014183dfc400ad4280808080e00184100c220b29000021052004200b41086a290000370300200120053703c801200b1023200320012903c801370000200341086a200429030037000020014188016a41086a200829030037030020014188016a41106a200929030037030020014188016a41186a2002290300370300200120012903a80137038801200141c8016a20014188016a412010e101024002400240024020012d00c80122030d002002200141e1016a2900003703002009200141d9016a2900003703002008200141d1016a290000370300200120012900c9013703a8010c010b200710112002200141e1016a2900003703002009200141d9016a2900003703002008200141d1016a290000370300200120012900c9013703a80120034101460d010b200141d0006a4200370300200141c8006a4200370300200141c0006a4200370300200142003703380c010b200141386a41186a200141a8016a41186a290300370300200141386a41106a200141a8016a41106a290300370300200141386a41086a200141a8016a41086a290300370300200120012903a8013703380b0240200641fb01490d00200641857e6a2208450d00200141c8016a200810d40320013502d00142208620012802c8012208ad84101120012802cc01450d00200810230b410121090240101a2207422088a72202450d002007a721090b41002108200141003a00e801200921030240024002400240034020022008460d01200141c8016a20086a20032d00003a00002001200841016a22043a00e801200341016a21032004210820044120470d000b200141d8006a41086a200141c8016a41086a290300370300200141d8006a41106a200141c8016a41106a290300370300200141d8006a41186a200141c8016a41186a290300370300200120012903c80137035802402002450d00200910230b412010212208450d0220082001290308370000200841186a2204200141086a41186a290300370000200841106a2202200141086a41106a290300370000200841086a2209200141086a41086a290300370000412010212203450d0320032008290000370000200341186a2004290000370000200341106a2002290000370000200341086a200929000037000020081023200141f8006a2003ad4280808080800484101b108b0120031023024020012802782204450d0020014180016a2802002102200128027c210b41002108200141003a00e801034020022008460d03200141c8016a20086a200420086a2d00003a00002001200841016a22033a00e8012003210820034120470d000b20014188016a41086a200141c8016a41086a2203290300220737030020014188016a41106a200141c8016a41106a2202290300220537030020014188016a41186a200141c8016a41186a2209290300220c370300200120012903c80122113703880120032007370300200220053703002009200c370300200120113703c801200141a8016a41026a220d20014185016a41026a2d00003a0000200120012f0085013b01a8010240200a2010470d00200141286a2010410110a2012001280228210f2001280230210a0b200f200a41246c6a220841003a0000200820012903c80137000120092903002107200229030021052003290300210c200820012f01a8013b0021200841236a200d2d00003a0000200841096a200c370000200841116a2005370000200841196a20073700002001200a41016a360230200b450d00200410230b200020012903083700102000200636020020002001290358370030200041286a200141086a41186a290300370000200041206a200141086a41106a290300370000200041186a200141086a41086a290300370000200041386a200141d8006a41086a290300370000200041c0006a200141d8006a41106a290300370000200041c8006a200141d8006a41186a290300370000200041e8006a200141386a41186a290300370000200041e0006a200141386a41106a290300370000200041d8006a200141386a41086a290300370000200020012903383700502000410c6a200141286a41086a28020036020020002001290328370204200141f0016a24000f0b0240200841ff0171450d00200141003a00e8010b41d08ec500412c200141c8016a41b0e3c40041fc8ec5001034000b0240200841ff0171450d00200141003a00e8010b41d08ec500412c200141c8016a41b0e3c400418c8fc5001034000b1033000b102a000bcf0405017f027e027f017e017f230041e0006b22032400200341306a20012902002204422088a72201200210c6040240024002400240024002402003290330a7220241ff01714101460d0042002105200341306a41186a4200370300200341306a41106a22064200370300200341306a41086a220242003703002003420037033041e4dec400ad4280808080e00084100c220729000021082002200741086a290000370300200320083703302007102341e8ffc400ad4280808080b00284100c22072900002108200341d0006a41086a2209200741086a2900003703002003200837035020071023200620032903502208370300200341106a41086a2002290300370300200341106a41106a2008370300200341106a41186a200929030037030020032003290330370310200341086a200341106a412010cd010240200141ff017122024102460d00417f200328020c410020032802081b2207418094ebdc034180afd0e50220021b22022004a7220620022006491b6a220620062007491b20024b0d050b200141ff01710e03010203010b200041013a0000200041036a20024118763a0000200020024108763b00010c040b200442ffffffff0f8321050c010b427f21050b200041003a0000200041306a41013a0000200041286a4200370200200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a2005370300200041316a2003280030360000200041346a200341336a2800003600000c010b200041800c3b0001200041013a0000200041036a41003a00000b200341e0006a24000b920303047f017e017f230041e0006b22032400200341306a41186a4200370300200341306a41106a22044200370300200341306a41086a220542003703002003420037033041e4dec400ad4280808080e00084100c220629000021072005200641086a2900003703002003200737033020061023418c80c500ad4280808080800284100c22062900002107200341d0006a41086a2208200641086a2900003703002003200737035020061023200420032903502207370300200341106a41086a2005290300370300200341106a41106a2007370300200341106a41186a200829030037030020032003290330370310200341086a200341106a412010cd014100210502400240417f200328020c410020032802081b220620026a220220022006491b22064280808080f28ba80942808080c0f588fe06200141ff01711b22072007428094ebdc038022074280ec94a37c7e7c4280cab5ee01562007a76a4b0d00200041046a20063602000c010b200041800c3b0001200041036a41003a0000410121050b200020053a0000200341e0006a24000b340020004189e3c40036020420004100360200200041146a4104360200200041106a41f88fc500360200200041086a42083702000b3400200041c599c50036020420004100360200200041146a4101360200200041106a41d899c500360200200041086a42123702000b130020004102360204200041dc9ac5003602000b3601017f02404110102122020d001033000b2002420037000820024280c2d72f370000200042908080808002370204200020023602000bb60101027f230041106b22022400200220002802003602082001200241086a410410620240024002400240024020002d0004220341024b0d0020030e03010203010b2002410f6a21030c030b200241003a000f20012002410f6a410110622002410f6a21030c020b200241013a000f20012002410f6a410110622002410f6a21030c010b200241023a000f20012002410f6a410110622002410f6a21030b200220002d00053a000f2001200341011062200241106a24000b130020004105360204200041c89dc5003602000bd10201037f230041206b220424000240024002400240024002402002200141346a2205460d0020022005412010a305450d00200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410ce0422020d010c040b200141306a2802002202417f4c0d01200128022821010240024020020d0041002105410121060c010b20022105200210212206450d030b20062001200210a1052101200041086a200236020020002005360204200020013602000c040b200228020c4101480d0220022802082201417f4c0d00200228020021020240024020010d0041002105410121060c010b20012105200110212206450d020b20062002200110a1052102200041086a200136020020002005360204200020023602000c030b1032000b1033000b200041003602000b200441206a24000bdb0303017f047e097f230041106b220224002002200041086a29030022032000290300220485220520044218898520054210868520054225897c220542a0cbbf9599b5a19f0a7c2206200129001885200129000020068542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852001290008200542efcdddd088a580a21e7c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e852001290010200542bed0fb8bf894dfa4327c8542adfed5e4d485fda8d8007e42178942adfed5e4d485fda8d8007e85420042adfed5e4d485fda8d800420010a605200241086a29030020022903007c200320047c85a722074119762208410874200872220841107420087221092000280210220a2007712108200041186a280200210b200041146a280200210c4100210d024003400240200c20086a280000220e2009732200417f73200041fffdfb776a71418081828478712200450d00024003402001200b20006841037620086a200a71220f41306c6a2207460d0120012007412010a305450d012000417f6a2000712200450d020c000b0b200b200f41306c6a41206a21000c020b200d41046a220d20086a200a712108200e200e4101747141808182847871450d000b410021000b200241106a240020000b8d0101037f230041206b220324004101210402402001200041346a2205460d0020012005412010a305450d00200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310ce0422010d00410021040c010b200128020c41004a21040b200341206a240020040b02000b8e0704057f017e087f037e230041a0016b220224002002412036020c20022001360208200241106a2001ad42808080808004841010108b010240024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a1088010240024020022802000d00200228020422052002280224220641286e2201200120054b1bad42287e2207422088a70d032007a72201417f4c0d030240024020010d00410821080c010b200110212208450d050b4100210920024100360230200220083602282002200141286e36022c0240024002402005450d004100210a034041002101200241003a009801200a41016a210a034020062001460d03200241f8006a20016a2002280220220b2d00003a00002002200b41016a3602202002200141016a220c3a009801200c2101200c4120470d000b200241d8006a41086a220d200241f8006a41086a290300370300200241d8006a41106a220e200241f8006a41106a290300370300200241d8006a41186a220f200241f8006a41186a2903003703002002200229037837035820022006200c6b220136022420014108490d03200241386a41086a220c200d290300370300200241386a41106a220d200e290300370300200241386a41186a220e200f290300370300200220022903583703382002200b41096a3602202002200141786a2206360224200b290001210702402009200228022c470d00200241286a2009410110980120022802282108200228023021090b2008200941286c6a22012002290338370300200c2903002110200d2903002111200e290300211220012007370320200141186a2012370300200141106a2011370300200141086a20103703002002200941016a2209360230200a2005470d000b0b2008450d022000200229022c370204200020083602000c030b20024100360224200141ff0171450d00200241003a0098010b200228022c2201450d00200141286c450d00200810230b20024100360260200242013703582002410a36023c2002200241086a3602382002200241d8006a3602282002418c016a41013602002002420137027c20024180c5c6003602782002200241386a36028801200241286a4184a5c200200241f8006a10311a2002350260422086200235025884100a0240200228025c450d00200228025810230b200041003602000b2004450d00200310230b200241a0016a24000f0b1032000b1033000b3400200041a7b3c50036020420004100360200200041146a410a360200200041106a41b4b3c500360200200041086a42043702000b910101057f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a220542003703002002420037030002404120102122060d001033000b20062002290300370000200042a0808080800437020420002006360200200641186a2003290300370000200641106a2004290300370000200641086a2005290300370000200241206a24000b130020004102360204200041acc9c5003602000b2d01017f02404108102122020d001033000b20004288808080800137020420002002360200200242f02e3700000b2d01017f02404108102122020d001033000b20004288808080800137020420002002360200200242d8043700000bcc0503027f017e047f230041e0006b2202240041bdadc500ad4280808080800184100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341d2adc500ad4280808080d00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000b13002000410536020420004190d0c5003602000b34002000419df5c50036020420004100360200200041146a4101360200200041106a41a4f5c500360200200041086a42073702000b9b0604067f017e027f057e230041f0006b220324002003200236021420032001360210200341186a2002ad4220862001ad841010108b010240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a1088010240024020032802080d00200328020c2206200328022c4105762201200120064b1b22014105742202417f4c0d040240024020010d00410821070c010b200210212207450d040b41002102200341003602502003200136024c20032007360248024002402006450d000340200341306a200341286a10f6020240024020032d00304101460d0041032108200328022c22014110490d01200329003121092003200141706a220a36022c20032003280228220b41106a360228200a450d01200b41086a290000210c200b290000210d20032001416f6a36022c2003200b41116a36022841032108200b2d0010220141034f0d01200320032800303602402003200341306a41036a2800003600432009210e200d210f200c2110200121080c010b410321080b200320032802403602682003200328004336006b20084103460d022003200328006b3600632003200328026836026002402002200328024c470d00200341c8006a2002410110970120032802482107200328025021020b200720024105746a220120083a00182001200e370310200120032802603600192001411c6a2003280063360000200120103703082001200f3703002003200241016a22023602502006417f6a22060d000b0b2007450d012000200329024c370204200020073602000c020b200328024c41ffffff3f71450d00200710230b20034100360238200342013703302003410a3602442003200341106a3602402003200341306a360268200341dc006a41013602002003420137024c20034180c5c6003602482003200341c0006a360258200341e8006a4184a5c200200341c8006a10311a2003350238422086200335023084100a02402003280234450d00200328023010230b200041003602000b2005450d00200410230b200341f0006a24000f0b1033000b1032000bc5130c037f027e027f067e027f027e017f017e027f017e037f027e230041a0046b22032400200341106a2000109702200341206a2003280210220420032802182205109802200329032021064200210720034200370320200341e8006a280200210820032d006c21090240024020064201510d00200341f0006a41386a4200370300200341f0006a41306a4200370300200341f0006a41286a4200370300200341f0006a41206a4200370300200341f0006a41186a420037030020034180016a4200370300200341f8006a4200370300200342003703704200210a4200210b4200210c0c010b200341206a41386a290300210d200341206a41306a290300210e200341206a41206a290300210a200341206a41186a2903002107200341e0006a290300210f2003290330210c2003290328210b200341f0006a41206a200341206a41286a290300370300200341f0006a41286a200e370300200341f0006a41306a200d37030020034180016a20073703002003200a370388012003200f3703a8012003200b3703702003200c3703780b4200210d200341a8016a22104200370300200341f0006a41306a4200370300200341f0006a41286a221142003703002003420037039001200c200a7c2112200b20077c2213200b542214ad2115200341f0006a41106a211602402002450d00200241057421174200210d4200210f420021184200210e200121190340024002400240201941186a221a2d0000221b417f6a41ff017141014b0d002011200e201941086a290300220720182019290300220a56200e200756200e2007511b221b1b220e37030020032018200a201b1b221837039001201a2d0000221b4102460d010b201b41ff01710d01201941086a29030021072019290300210a0b2010200d2007200f200a56200d200756200d2007511b221b1b220d3703002003200f200a201b1b220f3703a0010b201941206a2119201741606a22170d000b0b201220157c2107200341b0016a41186a201641086a290300220a370300200341b0016a41206a221b201641106a290300370300200341b0016a41286a201641186a290300370300200341b0016a41306a201641206a29030037030020032016290300220e3703c0012003200b3703b0012003200c3703b80102400240427f200b200e7c220e200e200b542219200c200a7c2019ad7c220a200c54200a200c511b22191b220e4280c8afa025544100427f200a20191b220f501b0d00200341c0016a290300210e200341e0016a290300210f200341d8016a2903002118201b290300211220032903b801211520032903b001211c4201210a20032903c801211d0c010b4200210a0240200e200f84500d00200e200f10eb01200341f0036a200f370300200341e8036a200e370300200341b8036a41086a41013a0000200341c1036a2000290000370000200341c9036a200041086a290000370000200341d1036a200041106a290000370000200341d9036a200041186a290000370000200341023a00b803200341b8036a10e0010b0b2007200c5121192007200c54211b200341c8006a2012370300200341d0006a2018370300200341306a2015370300200341d8006a200f370300200341386a200e3703002003201d3703402003200d3703602003201c370328200320094100200642015122171b3a006c20032008410020171b3602682003200a4201512217ad3703200240024020170d002005ad4220862004ad8410110c010b200320053602bc03200320043602b803200341286a200341b8036a1098030b2014201b20191b211902402003280214450d00200410230b427f200720191b2107427f201320191b210d200a420152211902400240024020064201510d0020190d004103211b200341d0026a21190c010b20064201522019410173720d014104211b200341e8016a21190b201941046a201b3a0000201941003a0000201941056a20002900003700002019410d6a200041086a290000370000201941156a200041106a2900003700002019411d6a200041186a290000370000201910e0010b0240200d2007844200520d00200341f0036a200c370300200341e8036a200b370300200341b8036a41086a41003a0000200341c1036a2000290000370000200341c9036a200041086a290000370000200341d1036a200041106a290000370000200341d9036a200041186a290000370000200341023a00b803200341b8036a10e0010b200341b8036a200010d704200341086a20032802b803221920032802c003419ca8c70041004100108c0120032802082104024020032802bc03450d00201910230b0240024002400240024002402002450d00200341d0026a200010d70420024105744104722219417f4c0d0220033502d802210d20032802d002210520191021221b450d03200341003602c003200320193602bc032003201b3602b8032002200341b8036a10612002410574211120032802bc03211a20032802c0032117034002400240201a20176b4108490d0020032802b803211b201a21100c010b201741086a22192017490d06201a410174221b2019201b20194b1b22104100480d0602400240201a0d00024020100d004101211b0c020b20101021221b0d010c090b20032802b803211b201a2010460d00201b201a20101025221b450d080b200320103602bc032003201b3602b8030b201b20176a200141106a2900003700002003201741086a221a3602c003200141086a29030021072001290300210a024002402010201a6b410f4d0d00201021190c010b201a41106a2219201a490d06201041017422162019201620194b1b22194100480d060240024020100d00024020190d004101211b0c020b20191021221b450d090c010b20102019460d00201b201020191025221b450d080b200320193602bc032003201b3602b8030b201b201a6a221a2007370008201a200a3700002003201741186a22173602c003200141186a2d000021100240024020192017460d002019211a201721190c010b201941016a22172019490d062019410174221a2017201a20174b1b221a4100480d060240024020190d00410021190240201a0d004101211b0c020b201a1021221b450d090c010b2019201a460d00201b2019201a1025221b450d080b2003201a3602bc032003201b3602b8030b200141206a2101201b20196a20103a00002003201941016a22173602c003201141606a22110d000b20032802bc032119200d4220862005ad842017ad42208620032802b803221bad84100e02402019450d00201b10230b024020032802d402450d00200510230b20044101460d0120001096020c010b200341b8036a200010d70420033502c00342208620032802b8032219ad841011024020032802bc03450d00201910230b20044101470d00200010a1020b200341a0046a24000f0b1032000b1033000b102c000b102a000b130020004104360204200041fcf6c5003602000b3400200041bdadc50036020420004100360200200041146a4104360200200041106a41848bc600360200200041086a42083702000b830101017f0240411010212202450d00200242003700082002420037000020024110412010252202450d0020024200370010200241186a42003700002002412041c00010252202450d002002420037003020024200370020200042c0808080800837020420002002360200200241386a4200370000200241286a42003700000f0b102a000b130020004101360204200041bc93c6003602000b3701017f02404110102122020d001033000b2002420037000820024280c8afa025370000200042908080808002370204200020023602000ba60203017f017e047f230041106b22022400200029030021032002200041086a29030037030820022003370300200120024110106220002802102104200041186a28020022052001106102402005450d0020054104742105034002402004410c6a2d000022064103714103460d004100210702400240024020060e03020001020b410121070c010b410221070b200220073a000020012002410110620b20042802002107200441086a2802002206200110612001200720061062200441106a2104200541706a22050d000b0b02404120102122040d001033000b2004200029001c370000200441186a200041346a290000370000200441106a2000412c6a290000370000200441086a200041246a290000370000200120044120106220041023200241106a24000b960503037f027e057f230041106b220224002002410036020820024201370300200028021021030240410410212204450d0020024104360204200220043602002004200336000020024104360208200041146a280200210320044104410810252204450d0020024108360204200420033600042002200436020020024108360208200041086a29030021052000290300210620044108411810252204450d0020042006370008200441106a200537000020022004360200200242988080808003370204024041000d0020044118413810252204450d010b20042000290024370018200441206a2000412c6a290000370000200441286a200041346a290000370000200441306a2000413c6a29000037000020024138360204200220043602002002413836020820002802182104200041206a28020022002002106102400240024020000d002002280208210020022802042107200228020021080c010b200041057421094100200228020822006b210a2002280204210b034002400240200b200a6a4120490d0020022802002108200b21070c010b200041206a22032000490d03200b41017422082003200820034b1b22074100480d0302400240200b0d00024020070d00410121080c020b2007102122080d010c060b20022802002108200b2007460d002008200b200710252208450d050b20022007360204200220083602002007210b0b200820006a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002002200041206a2200360208200a41606a210a200441206a2104200941606a22090d000b0b20012902002000ad4220862008ad84100e02402007450d00200810230b200241106a24000f0b102c000b102a000b881703047f067e027f230041d0036b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e16001101020304051106070809110a0b0c0d0e0f101112000b200241a8016a200141086a10dd0320004100360200200041106a200241a8016a41086a290300370300200041086a20022903a8013703000c120b20004102360200200041086a200141086a2903003703000c110b02400240024002400240024020012d0004417f6a220341034b0d00200141046a210420030e0401020304010b41f58ac7004128418c94c700102d000b200141086a2802002103410121050c030b41022105200241086a41026a200441036a2d00003a0000200241a8016a41086a200141146a290200370300200241b8016a2001411c6a290200370300200241c0016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703a801200141086a2802002103200141286a28020021010c020b200141086a2802002103410321050c010b2002410a6a200441036a2d00003a0000200241a8016a41086a200141146a290200370300200241b8016a2001411c6a290200370300200241c0016a200141246a2d00003a0000200220042f00013b010820022001410c6a2902003703a801200141086a2802002103200141286a2802002101410421050b200020053a0004200020022f01083b000520004103360200200041086a20033602002000410c6a20022903a801370200200041286a2001360200200041076a2002410a6a2d00003a0000200041146a200241a8016a41086a2903003702002000411c6a200241b8016a290300370200200041246a200241c0016a2802003602000c100b02400240024002400240024002400240200141086a22032d0000417f6a220441034b0d0020040e0401020304010b41f58ac7004128418c94c700102d000b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141386a2903002106200141306a2903002107410121010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141c8006a2903002108200141c0006a2903002109200141386a2903002106200141306a2903002107410221010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a8012002200341216a2800003602082002200341246a28000036000b200141c8006a3100002108200141c0006a2902002109200141386a2902002106200141306a2902002107200141d8006a290300210a200141d0006a290300210b410321010c030b200241b0016a200341096a290000370300200241b8016a200341116a290000370300200241c0016a200341196a290000370300200220032900013703a801200141386a2903002106200141306a2903002107410421010b0b0b200020022903a8013700092000200228020836002920004104360200200041d8006a200a370300200041d0006a200b370300200041c8006a2008370300200041c0006a2009370300200041386a2006370300200041306a2007370300200041086a20013a00002000412c6a200228000b360000200041116a200241a8016a41086a290300370000200041196a200241b8016a290300370000200041216a200241c0016a2903003700000c0f0b200241a8016a200141046a10de03200041053602002000410c6a200241b0016a280200360200200020022903a8013702040c0e0b200241a8016a200141086a109202200041086a200241a8016a41880210a1051a200041063602000c0d0b02400240200128020422040d00410021030c010b200241a8016a41186a200141286a290000370300200241a8016a41106a200141206a290000370300200241b0016a200141186a290000370300200241a8016a41286a200141386a290000370300200241a8016a41306a200141c0006a290000370300200241a8016a41386a200141c8006a290000370300200241a8016a41c8006a200141d8006a290000370300200241a8016a41d0006a200141e0006a290000370300200241a8016a41d8006a200141e8006a2900003703002002200141106a2900003703a8012002200141306a2900003703c8012002200141d0006a2900003703e801200241a8016a41f8006a20014188016a290000370300200241a8016a41f0006a20014180016a290000370300200241a8016a41e8006a200141f8006a290000370300200241a8016a4198016a200141a8016a290000370300200241a8016a4190016a200141a0016a290000370300200241a8016a4188016a20014198016a2900003703002002200141f0006a29000037038802200220014190016a2900003703a8022001410c6a2802002201417f4c0d0e0240024020010d0020024200370308410121030c010b200110212203450d102002410036020c200220013602080b20032004200110a1051a2002200136020c20022903082106200241086a200241a8016a41a00110a1051a0b20002003360204200041086a2006370200200041106a200241086a41a00110a1051a200041083602000c0c0b20004109360200200020012802043602040c0b0b2001410c6a2802002203417f4c0d0b200128020421050240024020030d0041002101410121040c010b20032101200310212204450d0d0b20042005200310a10521042000410c6a2003360200200041086a2001360200200020043602042000410a3602000c0a0b200241a8016a200141046a10d702200041046a200241a8016a41e40010a1051a2000410b3602000c090b200241a8016a200141046a10df03200041046a200241a8016a419c0210a1051a2000410d3602000c080b2000410e3602000c070b200241a8016a200141046a10e003200041046a200241a8016a41c80010a1051a2000410f3602000c060b200241a8016a200141046a10e103200041103602002000413c6a200241e0016a280200360200200041346a200241d8016a2903003702002000412c6a200241d0016a290300370200200041246a200241c8016a2903003702002000411c6a200241c0016a290300370200200041146a200241a8016a41106a2903003702002000410c6a200241b0016a290300370200200020022903a8013702040c050b200241a8016a200141086a10e203200041086a200241a8016a41a80210a1051a200041113602000c040b200241a8016a200141046a10e303200041046a200241a8016a41c40010a1051a200041123602000c030b4102210c0240024002400240200141086a22032d0000417f6a220d41024b0d0041012104200d0e03030201030b41f58ac7004128418c94c700102d000b200141c8006a2903002107200141c0006a2903002106200141386a2903002109200141306a2903002108200141d0006a28020021054103210c0b200241c0016a200341196a290000370300200241b8016a200341116a290000370300200241b0016a200341096a290000370300200220032900013703a801200c21040b200020022903a8013700092000200228000836002920004113360200200041c8006a2007370300200041c0006a2006370300200041386a2009370300200041306a2008370300200041086a20043a0000200041d0006a2005360200200041116a200241a8016a41086a290300370000200041196a200241b8016a290300370000200041216a200241c0016a2903003700002000412c6a2002410b6a2800003600000c020b10e403000b200241a8016a200141046a10db0320004115360200200041246a200241c8016a2903003702002000411c6a200241c0016a290300370200200041146a200241b8016a2903003702002000410c6a200241b0016a290300370200200020022903a8013702040b200241d0036a24000f0b1032000b1033000b8f0403027f017e077f230041306b22032400200341086a200141086a28020022043602002003200129020022053703002005a72106024002400240024020040d00410021070c010b200441057421084100210941002107200621010240034002402009450d0020092001412010a3054100480d004115210a41ed96c600210b4105210c0c020b024020012002412010a305220941004a0d004113210a41da96c600210b4106210c20022001460d022009450d02200741016a21070b20012109200141206a2101200841606a2208450d020c000b0b2000200c3a000620004183263b0104200041013602002000410c6a200a360200200041086a200b360200200328020441ffffff3f71450d01200610230c010b200341106a41186a200241186a290000370300200341106a41106a200241106a290000370300200341106a41086a200241086a2900003703002003200229000037031020042007490d01024020042003280204470d00200320044101109a01200328020021060b200620074105746a220141206a2001200420076b41057410a2051a200141186a200341106a41186a290300370000200141106a200341106a41106a290300370000200141086a200341106a41086a290300370000200120032903103700002003200441016a22013602082000410c6a200136020020002003290300370204200041003602000b200341306a24000f0b200720041038000b870803027f017e067f230041f0006b22032400419df5c500ad4280808080f00084100c22042900002105200341086a41086a200441086a290000370300200320053703082004102341fcf5c500ad4280808080900184100c22042900002105200341186a41086a200441086a2900003703002003200537031820041023024002400240024002400240412010212204450d0020042001290000370000200441186a200141186a290000370000200441106a200141106a290000370000200441086a200141086a29000037000020032004ad4280808080800484100d220129000037034820011023200341e4006a2206200441206a360200200341003a0068200320043602602003200341c8006a41086a36025c2003200341c8006a360258200341286a200341d8006a106520041023412010212204450d0020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a2900003700002004ad4280808080800484100f22012900002105200341c8006a41086a200141086a29000037030020032005370348200110232006200441206a360200200341003a0068200320043602602003200341c8006a41106a36025c2003200341c8006a360258200341386a200341d8006a1065200410232003280230220741206a2202200328024022086a2201417f4c0d01200328023821092003280228210a024002402001450d00200110212204450d022001410f4d0d01200121060c050b200141017422044110200441104b1b2206102122040d040c060b200141017422064110200641104b1b220641004e0d020c040b1033000b1032000b20012006460d0020042001200610252204450d020b20042003290308370000200441086a200341086a41086a2903003700000240024020064170714110460d002006210b0c010b2006410174220b4120200b41204b1b220b4100480d012006200b460d0020042006200b10252204450d020b20042003290318370010200441186a200341186a41086a29030037000002400240200b41606a2007490d00200b21060c010b2007415f4b0d01200b41017422062002200620024b1b22064100480d01200b2006460d002004200b200610252204450d020b200441206a200a200710a1051a02400240200620026b2008490d002006210b0c010b200220086a2002490d012006410174220b2001200b20014b1b220b4100480d01024020060d000240200b0d00410121040c020b200b10212204450d030c010b2006200b460d0020042006200b10252204450d020b200420026a2009200810a1051a200020013602082000200b360204200020043602000240200328023c450d00200910230b0240200328022c450d00200a10230b200341f0006a24000f0b102c000b102a000b850604067f027e027f057e23004190016b220324002003200236020420032001360200200341086a2002ad4220862001ad841010108b0102400240200328020822020d00200041003602180c010b200328020c21042003200341106a280200220136023c200320023602380240024020014104490d002003200241046a36023820032001417c6a220536023c20054104490d00200228000021062003200241086a3602382003200141786a220536023c20054110490d00200228000421072003200141686a220836023c2003200241186a360238200241106a29000021092002290008210a41002101200341003a0088010240034020082001460d01200341e8006a20016a200220016a220541186a2d00003a00002003200541196a3602382003200141016a22053a0088012005210120054120470d000b200341c8006a41086a2201200341e8006a41086a290300370300200341c8006a41106a220b200341e8006a41106a290300370300200341c8006a41186a220c200341e8006a41186a290300370300200320032903683703482003200820056b36023c200341e8006a200341386a10cf0120032802682205450d01200341186a41086a2001290300220d370300200341186a41106a200b290300220e370300200341186a41186a200c290300220f370300200320032903482210370318200329026c2111200020093703082000200a3703002000201137021c200020053602182000200736021420002006360210200041246a20103702002000412c6a200d370200200041346a200e3702002000413c6a200f3702000c020b2003410036023c200141ff0171450d00200341003a0088010b20034100360250200342013703482003410a36021c200320033602182003200341c8006a360244200341fc006a41013602002003420137026c20034180c5c6003602682003200341186a360278200341c4006a4184a5c200200341e8006a10311a2003350250422086200335024884100a0240200328024c450d00200328024810230b200041003602180b2004450d00200210230b20034190016a24000b13002000410c3602042000418497c6003602000b130020004108360204200041dc9fc6003602000b130020004104360204200041a4a8c6003602000b3400200041fba7c60036020420004100360200200041146a4101360200200041106a41f4b7c600360200200041086a42073702000b130020004101360204200041a4b9c6003602000b3400200041fea6c60036020420004100360200200041146a4103360200200041106a41a4bac600360200200041086a420a3702000b1300200041073602042000418cbec6003602000ba30c02097f027e230041e0006b22022400200241386a4100280298c942360200200241306a4100290290c942370300200241286a4100290288c942370300200241206a4100290280c942370300200241186a41002902f8c842370300200241106a41002902f0c842370300200241086a41002902e8c842370300200241002902e0c8423703002002410036024820024201370340200241d0006a200210900120022802502103024002400240024020022802442204200228024822056b20022802582206490d00410121070c010b200520066a22072005490d01200441017422082007200820074b1b22084100480d010240024020040d00024020080d00410121070c020b2008102122070d010c040b4101210720042008460d0041012004200810252207450d030b20022008360244200220073602400b200720056a2003200610a1051a2002200520066a36024802402002280254450d00200310230b200241d0006a200241106a109001200228025021080240024020022802442204200228024822056b20022802582203490d00200421060c010b200520036a22062005490d01200441017422092006200920064b1b22064100480d010240024020040d00024020060d00410121070c020b200610212207450d040c010b20042006460d0020072004200610252207450d030b20022006360244200220073602400b200720056a2008200310a1051a2002200520036a220336024802402002280254450d00200810230b02400240200620036b4104490d00200341046a21050c010b200341046a22052003490d01200641017422042005200420054b1b22044100480d010240024020060d00024020040d00410121070c020b200410212207450d040c010b20062004460d0020072006200410252207450d030b20022004360244200220073602400b200720036a41023600002002200536024820022802242103024002402002280244220620056b4104490d00200228024021070c010b200541046a22072005490d01200641017422042007200420074b1b22044100480d010240024020060d00024020040d00410121070c020b200410212207450d040c010b2002280240210720062004460d0020072006200410252207450d030b20022004360244200220073602400b200720056a20033600002002200541046a22063602482002280228210402402002280244220320066b41034b0d00200641046a22082006490d01200341017422092008200920084b1b22084100480d010240024020030d00024020080d00410121070c020b200810212207450d040c010b20032008460d0020072003200810252207450d030b20022008360244200220073602400b200720066a20043600002002200541086a360248200241306a2802002108200241386a200241346a200228022c4101461b2802002205200241c0006a10610240024020050d00200228024821040c010b20082005410c6c6a21092002280244210720022802482104034002400240200720046b4108490d00200441086a210520022802402103200721060c010b200441086a22052004490d03200741017422062005200620054b1b22064100480d030240024020070d00024020060d00410121030c020b200610212203450d060c010b2002280240210320072006460d0020032007200610252203450d050b20022006360244200220033602400b200320046a200829000037000020022005360248200841086a280200210402400240200620056b41034d0d00200621070c010b200541046a22072005490d032006410174220a2007200a20074b1b22074100480d030240024020060d00024020070d00410121030c020b200710212203450d060c010b20062007460d0020032006200710252203450d050b20022007360244200220033602400b200320056a20043600002002200541046a220436024820092008410c6a2208470d000b0b2004ad210b2002350240210c02402002280200450d00200241086a280200450d00200228020410230b200b422086210b02402002280210450d00200241186a280200450d00200241146a28020010230b200b200c84210b0240200228022c450d0020022802342205450d002005410c6c450d00200228023010230b200241e0006a2400200b0f0b102c000b102a000bd41c03057f017e037f230041f00d6b22022400024002402001450d00200220003602100c010b2002419ca8c7003602100b20022001360214200241900a6a200241106a109b030240024020022802940a2203450d00200241900a6a410c6a280200210120022802980a210420022802900a2100200241b8066a200241900a6a41106a41e00010a1051a200241900a6a200241106a10b10420022802900a0d0102402001450d00200141246c21002003210103400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b2004450d00200441246c450d00200310230b200241a40a6a4102360200200241c4066a4104360200200242023702940a200241e8c1c6003602900a200241043602bc06200241e0c1c6003602b806200241003602fc022002419ca8c7003602f8022002200241b8066a3602a00a2002200241f8026a3602c006200241900a6a41f8c1c600103a000b200241f8026a41086a2205200241900a6a41086a280200360200200220022903900a3703f802200241900a6a200241b8066a41e00010a1051a200241286a200241900a6a41e00010a1051a200241186a41086a22062005280200360200200220022903f80237031820024188016a410c6a200136020020024188016a41086a20043602002002200336028c01200220003602880120024188016a41106a200241286a41e00010a105210120024180026a2006280200360200200220022903183703f80120024188016a10be020240024002402002280288012200450d0020024188026a2000417f6a10d403200241900a6a200228028802220020022802900210e101200241b8066a41086a200241990a6a290000370300200241b8066a41106a2205200241a10a6a290000370300200241b8066a41186a2204200241a90a6a290000370300200220022900910a3703b8060240024020022d00900a4101460d00200241f8026a41186a4200370300200241f8026a41106a420037030020024180036a4200370300200242003703f8020c010b200241f8026a41186a2004290300370300200241f8026a41106a2005290300370300200241f8026a41086a200241b8066a41086a290300370300200220022903b8063703f8020b0240200228028c02450d00200010230b200241f8026a2001412010a3050d0020024180026a280200210120022802f8012100200241003602c006200242043703b806200241b8066a4100200110950120022802c006210402402001450d00200141c8036c21052001410374210320022802b8062004410c6c6a21010340200220003602f802200241900a6a200241f8026a10b302200141086a200241900a6a41086a280200360200200120022903900a3702002001410c6a2101200041c8036a2100200541b87c6a22050d000b200341786a41037620046a41016a21040b200241f8026a41086a2004360200200220022903b80622073703f802200241b8066a41086a2004360200200220073703b806200241900a6a200241b8066a1085010240200241d8016a2201200241900a6a412010a305450d004196b5c000ad4280808080e00184100a2001ad4280808080800484101d200241900a6aad4280808080800484101d0b02402001200241900a6a412010a3050d00200241fc016a280200210620022802f8012103200228028002210520024188026a20024188016a41f00010a1051a2003200541c8036c6a21002002280288022108200321010240024002402005450d00200241b8066a41f0006a21042003210102400340200241d0056a200141e80010a1051a200141e8006a2903002107200241f8026a200141f0006a41d80210a1051a20074203510d01200241b8066a200241d0056a41e80010a1051a200220073703a0072004200241f8026a41d80210a1051a2002200241b8066a3602800a200241900a6a200241800a6a10b30220022802980a2105024020022802940a450d0020022802900a10230b200241900a6a200241b8066a41c80310a1051a200241003602d80d200241800a6a200241900a6a2005200241d80d6a10c50220022d00800a4101460d04200141c8036a22012000470d000c030b0b200141c8036a21010b20002001460d00034020014198016a109e032000200141c8036a2201470d000b0b02402006450d00200641c8036c450d00200310230b10c304200810e703200241900a6a10c404200220024188026a410c6a28020022043602e80d200228028c0221032002200241900a6a410c6a28020022013602ec0d20042001470d042004450d0320022802940a210641002105419debc300ad4280808080c0028421070340024002400240024002400240024002400240200320056a22012d00002208200620056a22002d0000470d0002400240024002400240024020080e06000102030405000b20032006460d0d200141016a200041016a412010a3050d050c060b024020032006460d00200141016a280000200041016a280000470d050b200141106a2802002208200041106a280200470d04200141086a2802002209200041086a280200220a460d0a2009200a200810a3050d040c0a0b024020032006460d00200141016a280000200041016a280000470d040b200141106a2802002208200041106a280200470d03200141086a2802002209200041086a280200220a460d082009200a200810a3050d030c080b024020032006460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002209200041086a280200220a460d062009200a200810a3050d020c060b200141046a2802002208200041046a280200470d012008450d04200141086a280200200041086a280200470d012001410c6a2802002000410c6a280200470d010c040b2001410c6a28020022082000410c6a280200470d00200141046a2802002209200041046a280200220a460d022009200a200810a305450d020b2007100a200241b8066a200110e00220023502c00642208620022802b8062208ad84101d024020022802bc06450d00200810230b200241b8066a200010e00220023502c00642208620022802b8062208ad84101d024020022802bc06450d00200810230b20012d000020002d00002208470d06024020080e06000605040302000b20032006460d070b200141016a200041016a412010a3050d050c060b2001410c6a28020022082000410c6a280200470d04200141046a2802002201200041046a2802002200460d0520012000200810a3050d040c050b200141046a2802002208200041046a280200470d032008450d04200141086a280200200041086a280200470d032001410c6a2802002000410c6a280200460d040c030b024020032006460d00200141016a280000200041016a280000470d030b200141106a2802002208200041106a280200470d02200141086a2802002201200041086a2802002200460d0320012000200810a3050d020c030b024020032006460d00200141016a280000200041016a280000470d020b200141106a2802002208200041106a280200470d01200141086a2802002201200041086a2802002200460d0220012000200810a3050d010c020b024020032006460d00200141016a280000200041016a280000470d010b200141106a2802002208200041106a280200470d00200141086a2802002201200041086a2802002200460d0120012000200810a305450d010b41e4b8c2004127418c94c700102d000b200541246a21052004417f6a22040d000c040b0b200241086a20022f00810a20022d00830a4110747210a2042002280208200228020c418c94c700102d000b41b7b8c2004124418c94c700102d000b419bb8c200411c418c94c700102d000b024020024188026a41306a2201200241900a6a41306a2200412010a305450d004196b5c000ad4280808080e00184100a2001ad4280808080800484101d2000ad4280808080800484101d0b024020012000412010a305450d00418bb9c2004128418c94c700102d000b0240200228029c0a2200450d0020022802940a2101200041246c210003400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241980a6a2802002201450d00200141246c450d0020022802940a10230b02402002280294022200450d00200228028c022101200041246c210003400240024020012d0000220541044b0d0002400240024020050e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b024020024190026a2802002201450d00200141246c450d00200228028c0210230b200241f00d6a240042010f0b200241f8026a41146a410b360200200241f8026a410c6a410d360200200241d0056a41146a41033602002002200241e80d6a3602d80d2002200241ec0d6a3602800a200241b8066a41146a4100360200200242033702d4052002418ca7c7003602d0052002410d3602fc022002419ca8c7003602c806200242013702bc06200241dcb8c2003602b8062002200241f8026a3602e0052002200241b8066a360288032002200241800a6a360280032002200241d80d6a3602f802200241d0056a419ca8c700103a000bb10301037f23004180026b22022400024002402001450d00200220003602000c010b2002419ca8c7003602000b20022001360204200241f8006a2002109b030240200228027c450d00200241086a200241f8006a41f00010a1051a200241086a10be02200228020c21030240200241086a410c6a2802002201450d00200141246c21002003210103400240024020012d0000220441044b0d0002400240024020040e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241106a2802002201450d00200141246c450d00200310230b20024180026a240042010f0b200241f4016a41043602002002411c6a41023602002002420237020c200241e8c1c600360208200241043602ec01200241b4c2c6003602e801200241003602fc012002419ca8c7003602f8012002200241e8016a3602182002200241f8016a3602f001200241086a41f8c1c600103a000b8b3a020f7f017e230041d0006b2202240020024100360238200242043703300240410810212203450d0020034115360204200341afcdc200360200200241306a4100410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d002003410c360204200341e2dcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d002003410c360204200341bedcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d0020034108360204200341acdcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d002003410a360204200341b4dcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d002003410b360204200341a1dcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d0020034118360204200341cadcc400360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d0020034116360204200341afabc300360200200241306a2002280238410110a501200228023020022802384103746a20032902003702002002200228023841016a36023820031023410810212203450d00200341193602042003418881c300360200200241306a2002280238410110a501200228023020022802384103746a200329020037020020022002280238220441016a22053602382003102320022802342106200228023021072002410036023820024204370330200241306a41002005410374220341037510950120022802382108024020052004490d00200720036a210920022802302008410c6c6a210320072105034020052802002204450d01200341086a200541046a280200360200200341046a2004360200200341003602002003410c6a2103200841016a2108200541086a22052009470d000b0b200220083602380240200641ffffffff0171450d00200710230b2002280234210a2002280230210b2002410036022820024201370320410410212203450d002002410436022420022003360220200341edcad18b063600002002410436022820022802202103024020022802244104470d0020034104410810252203450d0120024108360224200220033602200b2003410b3a0004200241053602284119200241206a106141c4cdc200210c02400340200c2802042106200c2802082204200241206a10610240024020022802242207200228022822096b2004490d0020022802202105200721030c010b200920046a22032009490d02200741017422052003200520034b1b22034100480d020240024020070d00024020030d00410121050c020b2003102122050d010c050b2002280220210520072003460d0020052007200310252205450d040b20022003360224200220053602200b200520096a2006200410a1051a2002200920046a220436022802400240200c28020c4102470d000240024020032004460d00200421030c010b200341016a22042003490d04200341017422092004200920044b1b22044100480d040240024020030d0041002103024020040d00410121050c020b200410212205450d070c010b20032004460d0020052003200410252205450d060b20022004360224200220053602200b200520036a41003a00002002200341016a22033602280c010b0240024020032004460d00200421030c010b200341016a22042003490d03200341017422092004200920044b1b22044100480d030240024020030d0041002103024020040d00410121050c020b200410212205450d060c010b20032004460d0020052003200410252205450d050b20022004360224200220053602200b200520036a41013a00002002200341016a36022802400240200c28020c4101470d00200c2802142107200c2802182203200241206a10610240024020022802242209200228022822056b2003490d00200228022021040c010b200520036a22042005490d05200941017422062004200620044b1b22064100480d050240024020090d00024020060d00410121040c020b200610212204450d080c010b2002280220210420092006460d0020042009200610252204450d070b20022006360224200220043602200b200420056a2007200310a1051a2002200520036a360228200c28022021030240200c28021c4101470d002003200c280228200241206a10640c020b2003200c41246a280200200241206a10640c010b200241306a200c2802101104002002280234210720022802382203200241206a10610240024020022802242209200228022822056b2003490d00200228022021040c010b200520036a22042005490d04200941017422062004200620044b1b22064100480d040240024020090d00024020060d00410121040c020b200610212204450d070c010b2002280220210420092006460d0020042009200610252204450d060b20022006360224200220043602200b200420056a2007200310a1051a2002200520036a360228200228024021040240200228023c4101460d0020042002280244200241206a10640c010b200420022802482203200241206a106402402003450d00200341d8006c21094100210503400240200420056a220341346a280200450d002003413c6a280200450d00200341386a28020010230b0240200341c4006a280200450d00200341cc006a28020041ffffffff0171450d00200341c8006a28020010230b2009200541d8006a2205470d000b0b20022802442203450d00200341d8006c450d00200410230b200228022821030b2002280224210502400240200c28022c4102470d000240024020052003460d00200228022021050c010b200341016a22052003490d04200341017422042005200420054b1b22044100480d040240024020030d0041002103024020040d00410121050c020b200410212205450d070c010b2002280220210520032004460d0020052003200410252205450d060b20022004360224200220053602200b200520036a41003a00002002200341016a22033602280c010b0240024020052003460d00200228022021050c010b200341016a22052003490d03200341017422042005200420054b1b22044100480d030240024020030d0041002103024020040d00410121050c020b200410212205450d060c010b2002280220210520032004460d0020052003200410252205450d050b20022004360224200220053602200b200520036a41013a00002002200341016a36022802400240200c28022c4101470d00200c2802302105200c2802382203200241206a10612003450d012003412c6c21062005411c6a21030340200341686a280200210d2003416c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d062007410174220e2009200e20094b1b220e4100480d060240024020070d000240200e0d00410121090c020b200e10212209450d090c010b200228022021092007200e460d0020092007200e10252209450d080b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a360228200341706a200241206a10632003200241206a10602003412c6a2103200641546a22060d000c020b0b200241186a200c28023011040020022802182105200228021c2203200241206a10612003450d002003412c6c21062005411c6a21030340200341686a280200210d2003416c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d052007410174220e2009200e20094b1b220e4100480d050240024020070d000240200e0d00410121090c020b200e10212209450d080c010b200228022021092007200e460d0020092007200e10252209450d070b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a360228200341706a200241206a10632003200241206a10602003412c6a2103200641546a22060d000b0b200228022821030b2002280224210502400240200c28023c4102470d000240024020052003460d00200228022021050c010b200341016a22052003490d04200341017422042005200420054b1b22044100480d040240024020030d0041002103024020040d00410121050c020b200410212205450d070c010b2002280220210520032004460d0020052003200410252205450d060b20022004360224200220053602200b200520036a41003a00002002200341016a3602280c010b0240024020052003460d00200228022021050c010b200341016a22052003490d03200341017422042005200420054b1b22044100480d030240024020030d0041002103024020040d00410121050c020b200410212205450d060c010b2002280220210520032004460d0020052003200410252205450d050b20022004360224200220053602200b200520036a41013a00002002200341016a3602280240200c28023c4101470d00200c2802402105200c2802482203200241206a10612003450d012003412c6c21062005411c6a21030340200341686a280200210d2003416c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d052007410174220e2009200e20094b1b220e4100480d050240024020070d000240200e0d00410121090c020b200e10212209450d080c010b200228022021092007200e460d0020092007200e10252209450d070b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a360228200341706a200241206a10602003200241206a10602003412c6a2103200641546a22060d000c020b0b200241106a200c2802401104002002280210210520022802142203200241206a10612003450d002003412c6c21062005411c6a21030340200341686a280200210d2003416c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d042007410174220e2009200e20094b1b220e4100480d040240024020070d000240200e0d00410121090c020b200e10212209450d070c010b200228022021092007200e460d0020092007200e10252209450d060b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a360228200341706a200241206a10602003200241206a10602003412c6a2103200641546a22060d000b0b02400240200c28024c4101470d00200c280250210f200c2802582203200241206a10612003450d01200341386c2110410021090340200f20096a220341046a280200210d200341086a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d052006410174220e2007200e20074b1b220e4100480d050240024020060d000240200e0d00410121070c020b200e10212207450d080c010b200228022021072006200e460d0020072006200e10252207450d070b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a360228200341106a280200210d200341146a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d052006410174220e2007200e20074b1b220e4100480d050240024020060d000240200e0d00410121070c020b200e10212207450d080c010b200228022021072006200e460d0020072006200e10252207450d070b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a36022802400240200341186a2802004101470d002003411c6a280200210d200341246a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d072006410174220e2007200e20074b1b220e4100480d070240024020060d000240200e0d00410121070c020b200e10212207450d0a0c010b200228022021072006200e460d0020072006200e10252207450d090b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a3602280c010b200241306a2003411c6a280200200341206a28020028020c1102002002280230210620022802382205200241206a1061024002402002280224220d200228022822046b2005490d00200228022021070c010b200420056a22072004490d06200d410174220e2007200e20074b1b220e4100480d0602400240200d0d000240200e0d00410121070c020b200e10212207450d090c010b20022802202107200d200e460d002007200d200e10252207450d080b2002200e360224200220073602200b200720046a2006200510a1051a2002200420056a3602282002280234450d00200610230b200341286a200241206a10602010200941386a2209470d000c020b0b200241086a200c2802501104002002280208210f200228020c2203200241206a10612003450d00200341386c2110410021090340200f20096a220341046a280200210d200341086a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d042006410174220e2007200e20074b1b220e4100480d040240024020060d000240200e0d00410121070c020b200e10212207450d070c010b200228022021072006200e460d0020072006200e10252207450d060b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a360228200341106a280200210d200341146a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d042006410174220e2007200e20074b1b220e4100480d040240024020060d000240200e0d00410121070c020b200e10212207450d070c010b200228022021072006200e460d0020072006200e10252207450d060b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a36022802400240200341186a2802004101470d002003411c6a280200210d200341246a2802002205200241206a10610240024020022802242206200228022822046b2005490d00200228022021070c010b200420056a22072004490d062006410174220e2007200e20074b1b220e4100480d060240024020060d000240200e0d00410121070c020b200e10212207450d090c010b200228022021072006200e460d0020072006200e10252207450d080b2002200e360224200220073602200b200720046a200d200510a1051a2002200420056a3602280c010b200241306a2003411c6a280200200341206a28020028020c1102002002280230210620022802382205200241206a1061024002402002280224220d200228022822046b2005490d00200228022021070c010b200420056a22072004490d05200d410174220e2007200e20074b1b220e4100480d0502400240200d0d000240200e0d00410121070c020b200e10212207450d080c010b20022802202107200d200e460d002007200d200e10252207450d070b2002200e360224200220073602200b200720046a2006200510a1051a2002200420056a3602282002280234450d00200610230b200341286a200241206a10602010200941386a2209470d000b0b02400240200c28025c4101470d00200c2802602105200c2802682203200241206a10612003450d012003411c6c21062005410c6a21030340200341786a280200210d2003417c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d052007410174220e2009200e20094b1b220e4100480d050240024020070d000240200e0d00410121090c020b200e10212209450d080c010b200228022021092007200e460d0020092007200e10252209450d070b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a3602282003200241206a10602003411c6a2103200641646a22060d000c020b0b2002200c2802601104002002280200210520022802042203200241206a10612003450d002003411c6c21062005410c6a21030340200341786a280200210d2003417c6a2802002205200241206a10610240024020022802242207200228022822046b2005490d00200228022021090c010b200420056a22092004490d042007410174220e2009200e20094b1b220e4100480d040240024020070d000240200e0d00410121090c020b200e10212209450d070c010b200228022021092007200e460d0020092007200e10252209450d060b2002200e360224200220093602200b200920046a200d200510a1051a2002200420056a3602282003200241206a10602003411c6a2103200641646a22060d000b0b200c41ec006a220c41d0e2c200470d000b02400240200228022420022802282203460d00200228022021050c010b200341016a22052003490d01200341017422042005200420054b1b22044100480d010240024020030d0041002103024020040d00410121050c020b200410212205450d040c010b2002280220210520032004460d0020052003200410252205450d030b20022004360224200220053602200b200520036a41043a00002002200341016a3602282008200241206a1061024002402008450d002008410c6c210d200b41086a210503402005417c6a280200210e20052802002203200241206a10610240024020022802242209200228022822046b2003490d0020022802202107200921060c010b200420036a22072004490d04200941017422062007200620074b1b22064100480d040240024020090d00024020060d00410121070c020b200610212207450d070c010b2002280220210720092006460d0020072009200610252207450d060b20022006360224200220073602200b200720046a200e200310a1051a2002200420036a22033602282005410c6a2105200d41746a220d0d000c020b0b2002280228210320022802242106200228022021070b0240200a450d00200a410c6c450d00200b10230b02400240200341046a2209417f4c0d000240024002400240024002400240024002402009450d00200910212205450d0a200341c000490d04200341808001490d0520034180808080044f0d01200941034d0d062009210d0c070b41012109410110212205450d0b200541033a00004105210d0c010b200541033a000002402009417f6a4104490d002009210d0c020b200941017422044105200441054b1b220d4100480d092009200d460d010b20052009200d10252205450d090b20052003360001410521040c040b200520034102743a0000410121042009210d0c030b02400240200941014d0d002009210d0c010b2009200941017422044102200441024b1b220d460d0020052009200d10252205450d070b41022104200520034102744101723b00000c020b200941017422044104200441044b1b220d4100480d042009200d460d0020052009200d10252205450d050b20052003410274410272360000410421040b0240200d20046b20034f0d00200420036a22092004490d03200d410174220e2009200e20094b1b22094100480d03200d2009460d002005200d200910252205450d040b200520046a2007200310a1051a200420036aad4220862005ad84211102402006450d00200710230b200241d0006a240020110f0b1032000b1033000b102c000b102a000bbb0601057f230041900b6b22022400024002402001450d00200220003602000c010b2002419ca8c7003602000b20022001360204200241b8076a200210d303024002400240024020022903a0084203510d00200241186a200241b8076a41c80310a1051a200241e0036a200241186a41c80310a1051a2002200241e0036a3602b807200241a8076a200241b8076a10b30220022802b0072101200241b8076a200241e0036a41c80310a1051a200241880b6a20022802b007360200200220022903a8073703800b200241086a200241b8076a2001200241800b6a10c5024101410220022d000822034101461b220010212201450d01200241003602c007200220003602bc07200220013602b8070240024020034101470d00200141013a0000200241013602c007200241086a410172200241b8076a10810420022802c007210020022802b80721010c010b200141003a0000200241013602c0070240024020022d000c22044104460d00200141013a000141022103200241023602c00702400240024002400240024020040e0400010203000b410021040c030b410121040c020b200241023a00e003410221040c020b200241033a00e0034104210020014102410410252201450d07200141033a0002200220013602b80720024284808080303702bc07200220022d000d22033a00e003024041010d004106210020014103410610252201450d08200241063602bc07200220013602b8070b200120033a000341042103200241043602c00720022d000e21040b200220043a00e0030b024020002003470d0041000d070240200020004101742205200041016a2206200520064b1b2205460d0020012000200510252201450d070b200220053602bc07200220013602b8070b200120036a20043a0000200341017221000c010b200141003a0001410221000b200220003602c0070b200241900b6a24002000ad4220862001ad840f0b200241246a4104360200200241f4036a4102360200200242023702e403200241e8c1c6003602e0032002410436021c200241ccc2c6003602182002410036020c2002419ca8c7003602082002200241186a3602f0032002200241086a360220200241e0036a41f8c1c600103a000b1033000b102a000b102c000bcb1305047f017e017f017e0b7f23004180026b2202240010c304200241106a41186a22034200370300200241106a41106a22044200370300200241106a41086a220542003703002002420037031041e4dec400ad4280808080e000842206100c220729000021082005200741086a290000370300200220083703102007102341f3dec400ad4280808080e00084100c22072900002108200241b0016a41086a2209200741086a290000370300200220083703b00120071023200420022903b0012208370300200241d0016a41086a220a2005290300370300200241d0016a41106a220b2008370300200241d0016a41186a220c2009290300370300200220022903103703d001200241086a200241d0016a412010cd0141002107200228020c410020022802081b10e703200342003703002004420037030020054200370300200242003703102006100c220d2900002108200241f0016a41086a220e200d41086a290000370300200220083703f001200d10232005200e290300370300200220022903f00137031041d0ffc400ad4280808080e00184100c220d2900002108200e200d41086a290000370300200220083703f001200d1023200420022903f0012208370300200a2005290300370300200b2008370300200c200e290300370300200220022903103703d0012002200241d0016a412010cd012002280204210d2002280200210f200241003602b801200242043703b001200241b0016a4100200d4100200f1b221010950120022802b801211102402010450d0020022802b0012011410c6c6a210d0340200241d0016a200710c702200241106a20022802d001221220022802d801221310b70302402002280210220f450d002013ad4220862012ad8410110b200741016a210720022902144200200f1b2108200f4101200f1b210f024020022802d401450d00201210230b200d200f360200200d41046a2008370200200d410c6a210d20102007470d000b201120106a21110b20024180016a41086a2011360200200220022903b001220837038001200520113602002002200837031020024190016a200241106a108501200241b0016a41186a20024190016a41186a290300370300200241b0016a41106a20024190016a41106a290300370300200920024190016a41086a29030037030020022002290390013703b001200342003703002004420037030020054200370300200242003703102006100c22072900002108200e200741086a290000370300200220083703f001200710232005200e290300370300200220022903f0013703104183dfc400ad4280808080e00184100c22072900002108200e200741086a290000370300200220083703f00120071023200420022903f001370000200441086a200e290300370000200a2005290300370300200b2004290300370300200c2003290300370300200220022903103703d001024002400240412010212207450d00200720022903b001370000200741186a200241b0016a41186a290300370000200741106a200241b0016a41106a290300370000200741086a200241b0016a41086a290300370000200241d0016aad42808080808004842007ad4280808080800484100e20071023200241106a10c404200241003602b801200242013703b001412010212207450d0020072002290320370000200741186a200241386a290300370000200741106a200241106a41206a290300370000200741086a200241106a41186a29030037000041201021220d450d02200241203602b4012002200d3602b001200d2007290000370000200d41086a200741086a290000370000200d41106a200741106a290000370000200d41186a200741186a290000370000200241203602b80120071023200241106a200241b0016a10ed01412010212207450d0020072002290340370000200741186a200241d8006a290300370000200741106a200241d0006a290300370000200741086a200241c8006a2903003700000240024020022802b401221020022802b80122136b4120490d00201341206a210d20022802b001210f201021120c010b201341206a220d2013490d022010410174220f200d200f200d4b1b22124100480d020240024020100d00024020120d004101210f0c020b20121021220f0d010c050b20022802b001210f20102012460d00200f201020121025220f450d040b200220123602b4012002200f3602b0010b200f20136a22132007290000370000201341186a200741186a290000370000201341106a200741106a290000370000201341086a200741086a2900003700002002200d3602b80120071023412010212207450d0020072002290360370000200741186a200241f8006a290300370000200741106a200241f0006a290300370000200741086a200241e8006a29030037000002402012200d6b411f4b0d00200d41206a2213200d490d02201241017422102013201020134b1b22134100480d020240024020120d00024020130d004101210f0c020b20131021220f450d050c010b20122013460d00200f201220131025220f450d040b200220133602b4012002200f3602b0010b200f200d6a220f2007290000370000200f41186a200741186a290000370000200f41106a200741106a290000370000200f41086a200741086a2900003700002002200d41206a3602b80120071023200228021421032002411c6a2802002211200241b0016a10610240024020110d0020022802b801210d20022802b00121050c010b201141246c210e20022802b401210f20022802b8012107200321130340200241d0016a201310e00220022802d001210402400240200f20076b20022802d8012210490d00200720106a210d20022802b0012105200f21120c010b200720106a220d2007490d04200f4101742212200d2012200d4b1b22124100480d0402400240200f0d00024020120d00410121050c020b201210212205450d070c010b20022802b0012105200f2012460d002005200f201210252205450d060b200220123602b401200220053602b0010b200520076a2004201010a1051a2002200d3602b801024020022802d401450d00200410230b201341246a21132012210f200d2107200e415c6a220e0d000b0b200dad42208621082005ad210602402011450d00201141246c210d2003210703400240024020072d0000220f41044b0d00024002400240200f0e050400010204040b2007410c6a280200450d03200741086a28020010230c030b2007410c6a280200450d02200741086a28020010230c020b2007410c6a280200450d01200741086a28020010230c010b200741086a280200450d00200741046a28020010230b200741246a2107200d415c6a220d0d000b0b200820068421080240200241186a2802002207450d00200741246c450d00200310230b20024180026a240020080f0b1033000b102c000b102a000bd81405017f017e017f017e0a7f230041a0066b22022400024002402001450d00200220003602180c010b2002419ca8c7003602180b2002200136021c200241106a200241186a1088010240024020022802100d00200228021421012002200241186a36029005200241003a008005200241003602f802200241003602f0022002200136025420024100360250200220024180056a36025c200220024190056a360258200241d0006a200241f0026a10ff03200241b8056a41086a20022802f8022201360200200220022903f00222033703b80520022d0080052100200241d0006a41086a22042001360200200220033703502000450d01200241d0006a10f5040b200241fc026a4104360200200241e4006a410236020020024202370254200241e8c1c600360250200241043602f402200241e4c2c6003602f002200241003602bc052002419ca8c7003602b8052002200241f0026a3602602002200241b8056a3602f802200241d0006a41f8c1c600103a000b200241206a41086a20042802002201360200200220022903502203370320200241306a41086a2001360200200220033703302002410036024820024208370340200241d0006a200241306a10730240024002400240024020022802504101460d00200241d0006a41086a22012903002103200241d0006a41186a4200370300200241d0006a41106a22044200370300200142003703002002420037035041b494c700ad4280808080900184100c220029000021052001200041086a290000370300200220053703502000102341bd94c700ad42808080803084100c22002900002105200241b8056a41086a2206200041086a290000370300200220053703b80520001023200420022903b8052205370300200241f0026a41086a2001290300370300200241f0026a41106a2005370300200241f0026a41186a2006290300370300200220022903503703f0022002200241f0026a10fa022002280200210020022903082105200241c0006a410010ac01200228024022072002280248220441c8036c6a220141023602980120014202370368200141a0016a2003200542b8177c42b81720001b220520032005561b3703002002200441016a22083602480240024020022802302209450d002002280234210a02400340200941086a210020092f0106220b4103742101410021040240024003402001450d0141c296c7002000410810a3052206450d02200141786a2101200441016a2104200041086a21002006417f4a0d000b2004417f6a210b0b200a450d02200a417f6a210a2009200b4102746a41e4016a28020021090c010b0b200941e0006a2004410c6c6a22012802084104490d0020012802002800002106200241d0006a41186a4200370300200241d0006a41106a22044200370300200241d0006a41086a220142003703002002420037035041fee2c200ad4280808080f00184100c220029000021032001200041086a290000370300200220033703502000102341a0e3c200ad4280808080b00184100c22002900002103200241b8056a41086a2209200041086a290000370300200220033703b80520001023200420022903b8052203370300200241f0026a41086a2001290300370300200241f0026a41106a2003370300200241f0026a41186a2009290300370300200220022903503703f002200241d0006a200241f0026a10ed0320022802502201410420011b21044100210002402002290254420020011b2203422088a72201450d00200141027420046a417c6a2201450d00200128020020064721000b0240200342ffffffff0383500d00200410230b2000450d00024020082002280244470d00200241c0006a200810ac0120022802402107200228024821080b2007200841c8036c6a200241f0026a41e80010a105220142023703682001419c016a20063602002001410936029801200120022903b805370370200141f8006a200241c0056a29030037030020014180016a200241c8056a29030037030020014188016a200241d0056a29030037030020014190016a200241d8056a290300370300200141a8016a200241d0006a41a00210a1051a2002200841016a22083602480b20022802302209450d002002280234210a0340200941086a210020092f0106220b4103742101410021040240024003402001450d0141f0fdc2002000410810a3052206450d02200141786a2101200441016a2104200041086a21002006417f4a0d000b2004417f6a210b0b200a450d02200a417f6a210a2009200b4102746a41e4016a28020021090c010b0b200220092004410c6c6a220141e8006a2802003602bc052002200141e0006a2802003602b805200241d0006a200241b8056a109c03200228025022000d0120024129360254200241a992c70036025041f8fdc2004125200241d0006a418084c30041a0fec2001034000b41b0fec200412a41a0fec200104f000b200241d0006a41086a280200210420022802542106200241d0006a200241f0026a418c0210a1051a024020082002280244470d00200241c0006a200810ac0120022802402107200228024821080b2007200841c8036c22096a200241b8056a41e80010a105220142023703682001200229039005370370200141f8006a20024190056a41086a29030037030020014180016a200241a0056a29030037030020014188016a200241a8056a29030037030020014190016a200241b0056a290300370300200141a8016a2004360200200141a4016a2006360200200141a0016a20003602002001428d8080801037039801200141ac016a200241d0006a418c0210a1051a200141c0036a20024180056a41086a290300370300200141b8036a2002290380053703002002280244210c200241306a10f504200941cc036a2201417f4c0d01200110212200450d02200241003602f802200220013602f402200220003602f002200841016a220d200241f0026a106102400240200d0d0020022802f802210020022802f002210b0c010b200841c8036c41c8036a210e20022802f402210420022802f8022101200721090340200220093602b805200241d0006a200241b8056a10b3022002280250210f02400240200420016b2002280258220a490d002001200a6a210020022802f002210b200421060c010b2001200a6a22002001490d06200441017422062000200620004b1b22064100480d060240024020040d00024020060d004101210b0c020b20061021220b0d010c090b20022802f002210b20042006460d00200b200420061025220b450d080b200220063602f4022002200b3602f0020b200b20016a200f200a10a1051a200220003602f80202402002280254450d00200f10230b200941c8036a21092006210420002101200e41b87c6a220e0d000b0b2000ad4220862103200bad21050240200d450d0020074198016a2101200841c8036c41c8036a210003402001109e03200141c8036a2101200041b87c6a22000d000b0b200320058421030240200c450d00200c41c8036c450d00200710230b200241a0066a240020030f0b200241f8026a200241dc006a290200370300200220022902543703f00241c3a3c7004128200241f0026a41eca3c70041fca3c7001034000b1032000b1033000b102c000b102a000be60203047f017e017f024020002802002201450d0020002802082102024020002802042200450d00034020012802e40121012000417f6a22000d000b0b02402002450d0041002103024003402001450d01410021040240200320012f0106490d00034002400240200128020022000d0041002103410021000c010b200441016a210420012f010421030b2001102320002101200320002f01064f0d000b200021010b200341016a210020012003410c6c6a220341e4006a2902002105200341e0006a28020021060240024020040d00200021030c010b200120004102746a41e4016a2802002101410021032004417f6a2200450d00034020012802e40121012000417f6a22000d000b0b2006450d022002417f6a210202402005a7450d00200610230b20020d000c020b0b41d095c700412b41c491c700102d000b2001450d0020012802002100200110232000450d00034020002802002101200010232001210020010d000b0b0bc82109087f017e0c7f017e017f037e017f017e017f230041e0026b22022400024002402001450d00200220003602180c010b2002419ca8c7003602180b2002200136021c200241f8006a200241186a109b0302400240200228027c2203450d0020024184016a28020021042002280280012105200241f8006a200241186a10b104200228027822060d0102402004450d00200441246c21002003210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b2005450d00200541246c450d00200310230b2002418c026a41043602002002418c016a41023602002002420237027c200241e8c1c600360278200241043602840220024180c3c60036028002200241003602642002419ca8c700360260200220024180026a360288012002200241e0006a36028802200241f8006a41f8c1c600103a000b200241f8006a41086a22012802002108200228027c2109200241106a200241186a1088010240024020022802100d00200228021421002002200241186a360250200241003a0020200241003602880220024100360280022002200036027c200241003602782002200241206a360284012002200241d0006a36028001200241f8006a20024180026a10ff03200241e0006a41086a20022802880222003602002002200229038002220a37036020022d00202107200120003602002002200a3703782007450d01200241f8006a10f5040b2002418c026a41043602002002418c016a41023602002002420237027c200241e8c1c600360278200241043602840220024180c3c60036028002200241003602642002419ca8c700360260200220024180026a360288012002200241e0006a36028802200241f8006a41f8c1c600103a000b200241306a41086a200241f8006a41086a220b280200220136020020022002290378220a370330200241c0006a41086a20013602002002200a370340200241013b015c2002410036025820024100360250200241d0006a41086a210c0240024002400240024002402008450d002006200841c8036c6a210d20024180026a410272210e200241e0006a410472210f200241f8006a41106a2110200621110340201141e8006a2903004202520d01024020112802980141024722120d00024002400240024020022802402213450d0020112903a001210a200228024421140340201341086a210020132f010622154103742101410021070240024003402001450d0141d5b0c0002000410810a3052216450d02200141786a2101200741016a2107200041086a21002016417f4a0d000b2007417f6a21150b2014450d022014417f6a2114201320154102746a41e4016a28020021130c010b0b0240201341e0006a2007410c6c6a220128020841074b0d00201742808080807083422984210a41a992c70021140c020b200a42f02e8020012802002900002217510d034131211841ecb2c50021140c020b201742808080807083421c84210a41ddb0c00021140b200aa721180b0240024020022d005d450d004182a6c7002101413121000c010b200241d0006a10f5042002410036025820024100360250200242e2c289abb68edbb7f40037036020024180026a410272410041da0010a0051a200241f8006a410041840110a0051a41e40110212216450d0920164100360200201641046a20024180026a41dc0010a1051a201641e0006a200241f8006a41840110a1051a200241003602542002201636025020162f010622114103742113417f210041002101024002400340024020132001470d00201121000c020b200241e0006a201620016a41086a410810a3052207450d02200141086a2101200041016a2100200741004e0d000b0b200242e2c289abb68edbb7f40037028c012002200c3602880120022000360284012002201636027c200241003602782002200241d0006a3602800120024180026a201420181074200241f8006a20024180026a10800420024180023b015c200241206a41086a200241d0006a41086a290300370300200220022903503703200c060b41d5a5c7002101412d21000b2002200036027c2002200136027841eba4c7004122200241f8006a4190a5c70041a0a5c7001034000b20120d0020112903a0012119200241f8006a200241c0006a10730240024020022802784101460d00200229038001210a200241f8006a41186a2200420037030020104200370300200b42003703002002420037037841b494c700ad4280808080900184100c2201290000211a200b200141086a2900003703002002201a3703782001102341bd94c700ad42808080803084100c2201290000211a200241e0006a41086a2207200141086a2900003703002002201a3703602001102320102002290360370000201041086a200729030037000020024180026a41086a200b29030037030020024180026a41106a201029030037030020024180026a41186a20002903003703002002200229037837038002200220024180026a10fa0202402019200a42b0ea017c560d004200211a2019200229030842b8177c42b81720022802001b220a540d020c030b41b0a5c700ad4280808080d00484210a201b428080808070832018ad84211b4201211a4100211c0c010b200229038001210a200228027c211c4201211a201d4280808080708320023502880184221d211b0b2002201b3703702002201cad422086201a843703602002200a37036802400240024020022d005d450d00413121014182a6c70021000c010b024002400240201aa72215450d00200241d0006a10f5042002410036025820024100360250200242f4d2b59bc7ae98b8303703200c010b20022802502113200242f4d2b59bc7ae98b8303703202013450d00200228025421140c010b200e410041da0010a0051a200241f8006a410041840110a0051a41e40110212213450d0a4100211420134100360200201341046a20024180026a41dc0010a1051a201341e0006a200241f8006a41840110a1051a20024100360254200220133602500b200a422088a72112200aa7211e02400340201341086a210020132f01062218410374210141002107024003402001450d01200241206a2000410810a3052216450d03200141786a2101200741016a2107200041086a21002016417f4a0d000b2007417f6a21180b02402014450d002014417f6a2114201320184102746a41e4016a28020021130c010b0b200242f4d2b59bc7ae98b83037028c012002200c3602880120022018360284012002201336027c200241003602782002200241d0006a360280014101102121010240024020150d002001450d0c200141003a000020014101410910252201450d0c2001200a37000141092107410921000c010b2001450d0b200141013a000020024180026a200f10900120022802800221130240024020022802880222160d0041012107201641016a21000c010b201641016a22002016490d0920004102200041024b1b22074100480d0920014101200710252201450d0c0b200141016a2013201610a1051a200228028402450d00201310230b200220003602880220022007360284022002200136028002200241f8006a20024180026a1080042002201a3c005d200241003a005c20150d022015450d03201c450d032012450d03201e10230c030b412d210141d5a5c70021000b200220003602782002200136027c41eba4c7004122200241f8006a4190a5c70041a0a5c7001034000b200241206a41086a200241d0006a41086a29030037030020022002290350370320201c450d032012450d03201e10230c030b201141c8036a2211200d470d000b0b200241206a41086a200c290300370300200220022903503703200b200241c0006a10f50402402004450d00200441246c21002003210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b02402005450d00200541246c450d00200310230b02402008450d00200841c8036c210020064198016a210103402001109e03200141c8036a2101200041b87c6a22000d000b0b02402009450d00200941c8036c450d00200610230b200241003602682002420137036020022d002c2100410110212201450d032002410136026420022001360260200120003a00002002410136026820022d002d210020014101410210252201450d032002410236026420022001360260200120003a00012002410236026820022802282200200241e0006a106102400240024020022802202201450d00024020022802242216450d002016210720012113034020132802e40121132007417f6a22070d000b200121070340200720072f01064102746a41e4016a28020021072016417f6a22160d000b200241f8006a2116201321010c020b200241f8006a2116200121070c010b410021012002410036027c200241f8006a21160c010b2002200736027c20024184016a20072f0106360200200241003602782002200241206a36028001200241206a21070b20024180026a41086a201641086a290200220a37030020022016290200221a37038002200241f8006a410c6a410036020020024190016a200a37030020022007360280012002200136027c200241003602782002201a3703880120022000360298012000450d01034020022000417f6a36029801200241f8006a410020011b2213280200210720132802082114024002400240201328020c2216201328020422002f01064f0d00200021010c010b0240034020002802002201450d01200741016a210720002f0104211620012100201620012f0106490d020c000b0b2014ad210a410021010c010b2016ad4220862014ad84210a0b200a422088a7221441016a2116200aa721180240024020070d00200121000c010b200120164102746a41e4016a2802002100410021162007417f6a2207450d00034020002802e40121002007417f6a22070d000b0b2013201636020c2013201836020820132000360204201341003602000240024020022802642216200228026822006b4108490d00200228026021070c010b200041086a22072000490d02201641017422132007201320074b1b22134100480d020240024020160d00024020130d00410121070c020b2013102122070d010c070b2002280260210720162013460d0020072016201310252207450d060b20022013360264200220073602600b200720006a200120144103746a41086a2900003700002002200041086a360268200141e0006a2014410c6c6a2201280200211320012802082201200241e0006a10610240024020022802642216200228026822006b2001490d00200228026021070c010b200020016a22072000490d02201641017422142007201420074b1b22144100480d020240024020160d00024020140d00410121070c020b201410212207450d070c010b2002280260210720162014460d0020072016201410252207450d060b20022014360264200220073602600b200720006a2013200110a1051a2002200020016a22013602682002280298012200450d03200228027c21010c000b0b102c000b20022802682101200228026021070b200241206a10f504200241e0026a24002001ad4220862007ad840f0b102a000bbf0101067f230041206b220224002002419ca8c700410010a80302400240412010212203450d0020032002290300370000200341186a2204200241186a290300370000200341106a2205200241106a290300370000200341086a2206200241086a290300370000412010212207450d0120072003290000370000200741186a2004290000370000200741106a2005290000370000200741086a200629000037000020031023200241206a24002007ad42808080808004840f0b1033000b102a000bc44705037f017e067f047e077f230041d0126b220224000240024020010d002002200136020c2002419ca8c7003602080c010b2002200136020c20022001417f6a36020c200220003602082002200041016a36020820002d000041034f0d00200241e00a6a200241086a10d303024002400240024002400240024002400240024020022903c80b4203510d00200241c8006a200241e00a6a41c80310a1051a20024190046a200241c8006a41c80310a1051a200220024190046a3602d807200241e00a6a200241d8076a10b30220022802e80a2103024020022802e40a450d0020022802e00a10230b200241e00a6a20024190046a41c80310a1051a200241d8076a200241e00a6a10c60241012101024020022d00d8074101460d00200241e00a6a200241d8076a41086a41800310a1051a200241a80e6a200241b00b6a220410c90220022903a80e210502400240024020022903800b4202520d00200241a0126a41206a22004200370300200241a0126a41186a22014280808080c000370300200241013a00c812200242043703b0122002427f3703a812200242003703a012200241d8076a41206a22064200370300200241d8076a41186a22074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241f00e6a200241a0126a200241d8076a109401200241a0126a41286a2208200241f00e6a41286a2903003703002000200241f00e6a41206a2903003703002001200241f00e6a41186a290300370300200241a0126a41106a2209200241f00e6a41106a290300370300200241a0126a41086a220a200241f00e6a41086a290300370300200220022903f00e3703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241a00f6a200241a0126a200241d8076a1094012008200241a00f6a41286a2903003703002000200241a00f6a41206a2903003703002001200241a00f6a41186a2903003703002009200241a00f6a41106a290300370300200a200241a00f6a41086a290300370300200220022903a00f3703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241d00f6a200241a0126a200241d8076a1094012008200241d00f6a41286a2903003703002000200241d00f6a41206a2903003703002001200241d00f6a41186a2903003703002009200241d00f6a41106a290300370300200a200241d00f6a41086a290300370300200220022903d00f3703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d80720024180106a200241a0126a200241d8076a109401200820024180106a41286a290300370300200020024180106a41206a290300370300200120024180106a41186a290300370300200920024180106a41106a290300370300200a20024180106a41086a29030037030020022002290380103703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241b0106a200241a0126a200241d8076a109401200241f0116a41286a200241b0106a41286a290300370300200241f0116a41206a220b200241b0106a41206a290300370300200241f0116a41186a220a200241b0106a41186a290300370300200241f0116a41106a200241b0106a41106a290300370300200241f0116a41086a200241b0106a41086a290300370300200220022903b0103703f011200220053703c011200241d8076a200241c0116a200310c504024020022d00d8074101470d0020022d00db07210720022f00d907210820022802801221060240200a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024190126a2802002200450d002000410c6c450d00200610230b4101450d02200820074110747221000c090b200820024188086a2903003703002000200241d8076a41286a2903003703002001200629030037030020092007290300370300200241a0126a41086a2203200241d8076a41106a290300370300200220022903e0073703a012200241e0106a200241f0116a200241a0126a1094012008200241e0106a41286a2903003703002000200241e0106a41206a2903003703002001200241e0106a41186a2903003703002009200241e0106a41106a2903003703002003200241e0106a41086a290300370300200220022903e0103703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d80720024190116a200241a0126a200241d8076a109401200820024190116a41286a290300370300200020024190116a41206a290300370300200120024190116a41186a290300370300200920024190116a41106a290300370300200320024190116a41086a29030037030020022002290390113703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241c0116a200241a0126a200241d8076a1094012008200241c0116a41286a2903003703002000200241c0116a41206a2903003703002001200241c0116a41186a2903003703002009200241c0116a41106a2903003703002003200241c0116a41086a290300370300200220022903c0113703a0122006420037030020074280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241f0116a200241a0126a200241d8076a109401200241cc0e6a200241f0116a41086a290300370200200220022903f0113702c40e41000d0820024184126a2802002106200a2802002100200b280200210720024194126a28020021082002280280122109200228028c12210320022903981221050c020b200241a0126a41206a22004200370300200241a0126a41186a22014280808080c000370300200241013a00c812200242043703b012427f210c2002427f3703a812200242003703a012200220022800f0113602c0112002200241f3116a2800003600c311024020022802b00b410f470d00200241023a0013200241800e3b0011200241013a00100c090b200241d8076a41206a22074200370300200241d8076a41186a22064280808080c00037030020024184086a20022800c311360000200241013a008008200242043703e8072002427f3703e007200242003703d807200220022802c01136008108200241c00e6a200241a0126a200241d8076a109401200241a0126a41286a2208200241c00e6a41286a2903003703002000200241c00e6a41206a2903003703002001200241c00e6a41186a290300370300200241a0126a41106a2209200241c00e6a41106a290300370300200241a0126a41086a220a200241c00e6a41086a290300370300200220022903c00e3703a0122007420037030020064280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241f00e6a200241a0126a200241d8076a1094012008200241f00e6a41286a2903003703002000200241f00e6a41206a2903003703002001200241f00e6a41186a2903003703002009200241f00e6a41106a290300370300200a200241f00e6a41086a290300370300200220022903f00e3703a0122007420037030020064280808080c000370300200241013a008008200242043703e8072002427f3703e007200242003703d807200241a00f6a200241a0126a200241d8076a1094012008200241a00f6a41286a2903003703002000200241a00f6a41206a2903003703002001200241a00f6a41186a2903003703002009200241a00f6a41106a290300370300200a200241a00f6a41086a290300370300200220022903a00f3703a01220064200370300200241d8076a41106a22074200370300200241d8076a41086a22014200370300200242003703d80741e4dec400ad4280808080e00084100c2206290000210d200241f0116a41086a2200200641086a2900003703002002200d3703f0112006102320012000290300370300200220022903f0113703d80741f3dec400ad4280808080e00084100c2206290000210d200241c0116a41086a2208200641086a2900003703002002200d3703c01120061023200720022903c011220d37030020002001290300370300200241f0116a41106a2201200d370300200241f0116a41186a2008290300370300200220022903d8073703f0112002200241f0116a412010cd012002280204410020022802001bad210d024020022903800b4201520d0020022903880b220c4200510d05200d200241900b6a290300220e200e200d541b220f200c7c200f200e7d200c827d210c0b200241d8076a41206a4200370300200241d8076a41186a4280808080c000370300200241013a008008200242043703e807200242003703d80720024200200c200d7d220d200d200c561b3703e007200241d00f6a200241a0126a200241d8076a109401200241f0116a41286a200241d00f6a41286a290300370300200241f0116a41206a200241d00f6a41206a290300370300200241f0116a41186a200241d00f6a41186a2903003703002001200241d00f6a41106a2903003703002000200241d00f6a41086a290300370300200220022903d00f3703f011200241c0116a200241e00a6a109702200241d8076a20022802c011220020022802c811109802200241a0086a280200410020022903d8074201511b2101024020022802c411450d00200010230b0240024020022802a80b22062001490d00410c10212207450d0e410410212200450d0c20004104412010252200450d0e200020022903e00a370000200041186a200241e00a6a41186a290300370000200041106a200241e00a6a41106a290300370000200041086a200241e00a6a41086a2903003700002000412041c00010252200450d0e20002006360020200742c0808080c004370204200720003602000240024020012006490d0041002100410421010c010b410c10212201450d0f410410212200450d0d20004104412010252200450d0f200020022903e00a370000200041186a200241e00a6a41186a290300370000200041106a200241e00a6a41106a290300370000200041086a200241e00a6a41086a2903003700002000412041c00010252200450d0f20002006417f6a360020200142c0808080c00437020420012000360200410121000b200241a0126a41206a428180808010370300200241a0126a41186a2000360200200241b4126a2000360200200241cc126a20024193116a280000360000200241013a00c812200220073602bc12200220013602b0122002427f3703a81220022002280090113600c9122002200542ffffffff0f833703a01220024180106a200241f0116a200241a0126a109401200241f0116a41286a20024180106a41286a290300370300200241f0116a41206a20024180106a41206a290300370300200241f0116a41186a20024180106a41186a290300370300200241f0116a41106a20024180106a41106a290300370300200241f0116a41086a20024180106a41086a29030037030020022002290380103703f0110240024020054280808080f01f83428080808020520d00200241003a00db07418012210020024180123b00d907200241013a00d8070c010b200220053703c011200241d8076a200241c0116a200310c50420022d00d8074101470d0220022f00d90720022d00db074110747221000b200241013a0010200220003b0011200220004110763a00132002280280122106024020024188126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b20024190126a2802002200450d0a2000410c6c450d0a200610230c0a0b200241003a001320024180063b0011200241013a00102002280280122106024020024188126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b20024190126a2802002200450d092000410c6c450d09200610230c090b200241a0126a41286a220120024188086a2206290300370300200241a0126a41206a2207200241d8076a41286a2208290300370300200241a0126a41186a2209200241d8076a41206a220a290300370300200241a0126a41106a220b200241d8076a41186a2210290300370300200241a0126a41086a2211200241d8076a41106a2212290300370300200220022903e0073703a012200241b0106a200241f0116a200241a0126a109401200241f0116a41286a2213200241b0106a41286a290300370300200241f0116a41206a2214200241b0106a41206a290300370300200241f0116a41186a2200200241b0106a41186a290300370300200241f0116a41106a2215200241b0106a41106a290300370300200241f0116a41086a2216200241b0106a41086a290300370300200220022903b0103703f011200220053703c011200241d8076a20022903980b200241a00b6a290300200241e00a6a200241c0116a200310cc02024020022d00d8074101470d00200220022d00db073a0013200220022f00d9073b0011200241013a00102002280280122106024020002802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b20024190126a2802002200450d092000410c6c450d09200610230c090b20012006290300370300200720082903003703002009200a290300370300200b201029030037030020112012290300370300200220022903e0073703a012200241e0106a200241f0116a200241a0126a1094012013200241e0106a41286a2903003703002014200241e0106a41206a2903003703002000200241e0106a41186a2903003703002015200241e0106a41106a2903003703002016200241e0106a41086a290300370300200220022903e0103703f011200241d8076a200410cd02024020022d00d8074101470d00200220022d00db073a0013200220022f00d9073b0011200241013a00102002280280122106024020024188126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b20024190126a2802002200450d092000410c6c450d09200610230c090b200241a0126a41286a2200200241d8076a41306a2201290300370300200241a0126a41206a2206200241d8076a41286a2207290300370300200241a0126a41186a2208200241d8076a41206a2209290300370300200241a0126a41106a2203200241d8076a41186a220a290300370300200241a0126a41086a220b200241d8076a41106a2210290300370300200220022903e0073703a01220024190116a200241f0116a200241a0126a109401200241f0116a41286a20024190116a41286a290300370300200241f0116a41206a20024190116a41206a290300370300200241f0116a41186a221120024190116a41186a290300370300200241f0116a41106a20024190116a41106a290300370300200241f0116a41086a20024190116a41086a29030037030020022002290390113703f011200241d8076a200410ce0220022d00d8074101470d06200220022d00db073a0013200220022f00d9073b0011200241013a00102002280280122106024020112802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b024020024184126a2802002200450d002000410c6c450d00200610230b200228028c122106024020024194126a2802002200450d002000410c6c21012006210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b20024190126a2802002200450d082000410c6c450d08200610230c080b0b200241b80e6a200241cc0e6a290200370300200220022902c40e3703b00e0240024020022802b00b410b460d00200241003a00db07418102210120024181023b00d907200241013a00d8070c010b200241d8076a200241b40b6a10ab0220022d00d8074101470d0420022f00d90720022d00db074110747221010b200241013a0010200220013b0011200220014110763a001302402000450d002000410c6c21012009210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b02402006450d002006410c6c450d00200910230b02402008450d002008410c6c21012003210003400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b2007450d062007410c6c450d06200310230c060b200220022d00db073a0013200220022f00d9073b0011200241013a00100c060b200241d4006a4104360200200241a4046a41023602002002420237029404200241e8c1c600360290042002410436024c20024198c3c600360248200241003602dc072002419ca8c7003602d8072002200241c8006a3602a0042002200241d8076a36025020024190046a41f8c1c600103a000b4180b4c0004119419cb4c000102d000b200241c0116a41286a2201200241d8076a41306a290300370300200241c0116a41206a220a200241d8076a41286a220b290300370300200241c0116a41186a2210200241d8076a41206a2211290300370300200241c0116a41106a2212200241d8076a41186a2213290300370300200241c0116a41086a2214200241d8076a41106a2215290300370300200220022903e0073703c011200241a0126a41086a200241b00e6a41086a290300370300200241c4126a2008360200200241a0126a41206a2007360200200241a0126a41186a2000360200200241b4126a2006360200200220022903b00e3703a012200220053703c812200220033602bc12200220093602b012200b20012903003703002011200a2903003703002013201029030037030020152012290300370300200241d8076a41086a2014290300370300200220022903c0113703d807200241f0116a200241a0126a200241d8076a109401200241106a41086a20022903f011370300200241106a41106a200241f0116a41086a290300370300200241106a41186a200241f0116a41106a290300370300200241106a41206a200241f0116a41186a290300370300200241106a41286a200241f0116a41206a290300370300200241106a41306a200241f0116a41286a290300370300200241003a00100c020b2000200129030037030020062007290300370300200820092903003703002003200a290300370300200b2010290300370300200220022903e0073703a012200241c0116a200241f0116a200241a0126a109401200241106a41086a20022903c011370300200241106a41106a200241c0116a41086a290300370300200241106a41186a200241c0116a41106a290300370300200241106a41206a200241c0116a41186a290300370300200241106a41286a200241c0116a41206a290300370300200241106a41306a200241c0116a41286a290300370300200241003a00100c010b200241013a0010200220003b0011200220004110763a00130b200410b40220022d001021010b410110212200450d00200242013702e40a200220003602e00a02400240200141ff01714101470d00200041013a0000200241013602e80a200241106a410172200241e00a6a10810420022802e80a21000c010b200041003a0000200241013602e80a200241186a2903002105024020022802e40a2201417f6a41074b0d00200141017422064109200641094b1b22064100480d03024020012006460d0020002001200610252200450d050b200220063602e40a200220003602e00a0b20002005370001200241093602e80a200241286a2802002101200241306a2802002200200241e00a6a106102402000450d0020012000410c6c6a2104034020012802002109200141086a2802002200200241e00a6a10610240024020022802e40a220820022802e80a22066b2000490d0020022802e00a21070c010b200620006a22072006490d05200841017422032007200320074b1b22034100480d050240024020080d00024020030d00410121070c020b2003102122070d010c080b20022802e00a210720082003460d0020072008200310252207450d070b200220033602e40a200220073602e00a0b200720066a2009200010a1051a2002200620006a3602e80a2001410c6a22012004470d000b0b200241346a28020021012002413c6a2802002200200241e00a6a10610240024020000d0020022802e40a210920022802e80a21000c010b20012000410c6c6a2104034020012802002103200141086a2802002200200241e00a6a10610240024020022802e40a220720022802e80a22066b2000490d0020022802e00a2108200721090c010b200620006a22082006490d05200741017422092008200920084b1b22094100480d050240024020070d00024020090d00410121080c020b200910212208450d080c010b20022802e00a210820072009460d0020082007200910252208450d070b200220093602e40a200220083602e00a0b200820066a2003200010a1051a2002200620006a22003602e80a2001410c6a22012004470d000b0b200241206a290300210502400240200920006b4108490d0020022802e00a21010c010b200041086a22012000490d03200941017422062001200620014b1b22064100480d030240024020090d00024020060d00410121010c020b200610212201450d060c010b20022802e00a210120092006460d0020012009200610252201450d050b200220063602e40a200220013602e00a0b200120006a20053700002002200041086a22003602e80a200241c0006a2d00002106024020022802e40a2000470d00200041016a22072000490d03200041017422082007200820074b1b22074100480d030240024020000d0041002100024020070d00410121010c020b200710212201450d060c010b20002007460d0020012000200710252201450d050b200220073602e40a200220013602e00a0b200120006a20063a00002002200041016a22003602e80a0b2000ad42208620023502e00a842105024020022d00100d000240200241306a2802002201450d00200241286a28020021002001410c6c210103400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b02402002412c6a2802002200450d002000410c6c450d00200228022810230b02402002413c6a2802002201450d00200241346a28020021002001410c6c210103400240200041046a280200450d00200028020010230b2000410c6a2100200141746a22010d000b0b200241386a2802002200450d002000410c6c450d00200228023410230b200241d0126a240020050f0b1033000b102c000b102a000b2002419c046a4104360200200241f40a6a4102360200200242023702e40a200241e8c1c6003602e00a200241043602940420024198c3c600360290042002410036024c2002419ca8c700360248200220024190046a3602f00a2002200241c8006a36029804200241e00a6a41f8c1c600103a000ba5360a047f017e017f017e087f017e037f017e0d7f017e230022022103200241a0046b41607122022400024002402001450d00200220003602300c010b2002419ca8c7003602300b20022001360234200241a8026a200241306a109b03024002400240024002400240024020022802ac02450d00200241386a200241a8026a41f00010a1051a200241a8016a200241386a10bf022002280238200241c8006a20024188016a200241a8016a410010c2024100410028029cab472201410120011b36029cab470240200141014b0d000240024020010e020001000b410041e49fc00036028880404100419ca8c70036028480404100410236029cab470c010b0340410028029cab474101460d000b0b2002410020022802382201417f6a2200200020014b1b22043602b401101e4101470d01200241a8026a41186a22054200370300200241a8026a41106a22004200370300200241a8026a41086a22014200370300200242003703a8024180cdc200ad42808080808001842206100c220729000021082001200741086a290000370300200220083703a8022007102341c9a1c200ad4280808080e00184100c22092900002108200241e0016a41086a2207200941086a290000370300200220083703e00120091023200020022903e0012208370300200241c0036a41086a22092001290300370300200241c0036a41106a220a2008370300200241c0036a41186a220b2007290300370300200220022903a8023703c003200241286a200241c0036a412010cd010240200228022c410020022802281b220c20044d0d0041002107200241c0036a2100200241b8016a21010c060b200542003703002000420037030020014200370300200242003703a80241db97c700ad4280808080f00084100c220d29000021082001200d41086a290000370300200220083703a802200d102341bcbcc300ad4280808080c00184100c220d29000021082007200d41086a290000370300200220083703e001200d1023200020022903e001220837030020092001290300370300200a2008370300200b2007290300370300200220022903a8023703c003200241206a200241c0036a412010cd012002280224210e2002280220210f200542003703002000420037030020014200370300200242003703a8022006100c220529000021082001200541086a290000370300200220083703a8022005102341d7a1c200ad4280808080c00084100c220529000021082007200541086a290000370300200220083703e00120051023200020022903e001220837030020092001290300370300200a2008370300200b2007290300370300200220022903a8023703c003200241a8026a200241c0036a10ad0220022802a802211020022902ac022111200241a8026a41e9dabdf306108e0120022802a802210920022802ac02210a02400240024020022802b00222000d004101211241002113410021140c010b02400240024020004105742201410575220741ffffff3f712007470d0020014100480d0020010d01410121120c020b102c000b200110212212450d020b200920016a210b2000410574210520014105762113410021010340200920016a22002900002108200041086a2900002106200041106a2900002115201220016a220741186a200041186a290000370000200741106a2015370000200741086a2006370000200720083700002005200141206a2201470d000b200b20096b41606a41057641016a21140b0240200a41ffffff3f71450d00200910230b20144115490d0402404101450d0020144104744160712216417f4c0d000240201610212217450d00200241003602e801200242043703e001201241606a2118201241a07f6a211941042107410021014100211a2014211b0340201b210d4100211b4101210b0240200d417f6a2205450d00024002400240024002400240201220054105746a200d410574221c20126a41406a412010a3054100480d00200d417e6a210a2019201c6a21004100211b4100210903400240200a2009470d00200d210b0c080b200941016a2109200041206a2000412010a3052105200041606a21002005417f4a0d000b200941016a210b2009417f73200d6a21050c010b2019201c6a210002400340024020054101470d00410021050c020b2005417f6a2105200041206a2000412010a3052109200041606a210020094100480d000b0b200d2005490d01200d20144b0d02200d20056b220b410176220a450d002018201c6a2100201220054105746a21090340200241c0036a41186a221c200941186a220c290000370300200241c0036a41106a221d200941106a221e290000370300200241c0036a41086a221f200941086a221b290000370300200220092900003703c003200041086a22202900002108200041106a22212900002106200041186a2222290000211520092000290000370000200c2015370000201e2006370000201b20083700002022201c2903003700002021201d2903003700002020201f290300370000200020022903c003370000200041606a2100200941206a2109200a417f6a220a0d000b0b024020050d002005211b0c050b0240200b41094d0d002005211b0c050b200d20144b0d02200d20056b210a201220054105746a211c0340200d2005417f6a221b490d040240200d201b6b220b4102490d00201220054105746a22002012201b4105746a2205412010a305417f4a0d00200241a8026a41186a221f200541186a2209290000370300200241a8026a41106a2220200541106a220c290000370300200241a8026a41086a2221200541086a221d290000370300200220052900003703a80220052000290000370000201d200041086a290000370000200c200041106a2900003700002009200041186a2900003700004101211e0240200b4103490d00200541c0006a200241a8026a412010a305417f4a0d0041022109201c210002400340200041186a200041386a290000370000200041106a200041306a290000370000200041086a200041286a2900003700002000200041206a220c290000370000200a2009460d01200041c0006a211d2009211e200c2100200941016a2109201d200241a8026a412010a305417f4a0d020c000b0b2009211e0b2005201e4105746a220020022903a802370000200041186a201f290300370000200041106a2020290300370000200041086a20212903003700000b201b450d05201c41606a211c200a41016a210a201b2105200b410a4f0d050c000b0b2005200d41d089c7001044000b200d201441d089c7001043000b200d2005417f6a221b490d00200d201441e089c7001043000b201b200d41e089c7001044000b0240201a20022802e401470d00200241e0016a201a410110a50120022802e001210720022802e8012201211a0b2007201a4103746a2200200b3602042000201b3602002002200141016a22013602e8012001211a024020014102490d000240024003400240024002400240024020072001417f6a4103746a2200280200450d00200141037420076a220a41746a2802002205200028020422094b0d010b20014103490d022000280204210920072001417d6a221d4103746a28020421000c010b4102211a200141024d0d0620072001417d6a221d4103746a2802042200200920056a4d0d004103211a200141034d0d06200a41646a280200200020056a4b0d050b20002009490d010b2001417e6a211d0b02400240024002400240024002402001201d41016a221e4d0d002001201d4d0d012007201d41037422206a2201280204222120012802006a22012007201e41037422226a2200280200221f490d02200120144b0d032012201f4105746a221c2000280204220c41057422006a2109200141057421072001201f6b220a200c6b2201200c4f0d04201720092001410574220010a105220d20006a2105200c4101480d0520014101480d05201820076a21072009210103402007200141606a2209200541606a220a200a2009412010a305410048220b1b2200290000370000200741186a200041186a290000370000200741106a200041106a290000370000200741086a200041086a2900003700002005200a200b1b21050240201c20092001200b1b2201490d00200d21000c080b200741606a2107200d2100200d2005490d000c070b0b201e200141f089c7001030000b201d200141808ac7001030000b201f200141908ac7001044000b2001201441908ac7001043000b2017201c200010a105220d20006a21050240200c4101480d00200a200c4c0d00201220076a210b200d2100201c2101034020012009200020092000412010a305410048220a1b2207290000370000200141186a200741186a290000370000200141106a200741106a290000370000200141086a200741086a2900003700002000200041206a200a1b2100200141206a2101200941206a2009200a1b2209200b4f0d03200520004b0d000c030b0b201c2101200d21000c010b20092101200d21000b20012000200520006b41607110a1051a024020022802e8012201201d4d0d0020022802e001220720206a22002021200c6a3602042000201f3602002001201e4d0d02200720226a2200200041086a2001201e417f736a41037410a2051a20022001417f6a22013602e801200141014b0d010c030b0b201d200141a08ac7001030000b201e2001103b000b2001211a0b201b450d060c000b0b1033000b1032000b102a000b200241cc036a4104360200200241cc006a41023602002002420237023c200241e8c1c600360238200241043602c403200241b4c3c6003602c003200241003602e4012002419ca8c7003602e0012002200241c0036a3602482002200241e0016a3602c803200241386a41f8c1c600103a000b4100280298ab474105490d042002410f3602c4032002200241b4016a3602c003410028028880402101410028028480402100410028029cab472107200241e8026a41e902360200200241e0026a42df80808010370300200241dc026a41fca5c200360200200241d4026a4210370200200241d0026a41eca5c200360200200241c8026a4201370300200241b8026a4202370300200241a8026a41086a4108360200200241c4026a200241c0036a360200200241d4a5c2003602b402200241e4a5c2003602ac02200241053602a802200041a0a1c000200741024622071b200241a8026a200141b8a1c00020071b2802101102000c040b024020022802e40141ffffffff0171450d00200710230b2016450d01201710230c010b20144102490d0020122014417f6a22004105746a21054101210703400240024002400240201420002201417f6a2200490d00201420006b220a4102490d03201220014105746a2201201220004105746a2209412010a305417f4a0d03200241a8026a41186a220c200941186a220b290000370300200241a8026a41106a221d200941106a220d290000370300200241a8026a41086a221e200941086a221c290000370300200220092900003703a80220092001290000370000201c200141086a290000370000200d200141106a290000370000200b200141186a29000037000041012101200a4103490d02200941c0006a200241a8026a412010a305417f4a0d024100210a200521010340200141186a200141386a290000370000200141106a200141306a290000370000200141086a200141286a2900003700002001200141206a220d2900003700002007200a220b460d02200b417f6a210a200141c0006a211c200d2101201c200241a8026a412010a305417f4a0d020c000b0b2000201441c089c7001044000b4102200b6b21010b200920014105746a220120022903a802370000200141186a200c290300370000200141106a201d290300370000200141086a201e2903003700000b200541606a21052007417f6a210720000d000b0b200220043602d4012002200e4100200f1b22013602d001200220143602cc01200220133602c801200220123602c401200241003602c001200220043602dc03200220013602d803200220143602d403200220133602d003200220123602cc03200241003602c80320022010410120101b22073602c003200220073602b801200220072011420020101b2208422088a74105746a22013602c403200220013602bc012008a7210c200241c0036a2100200241b8016a21010b20024188026a41086a220a200141086a29020037030020024188026a41106a220b200141106a29020037030020024188026a41186a220d200141186a290200370300200241e0016a41086a221c200241a8026a41086a2209290200370300200241e0016a41106a221d200241a8026a41106a290200370300200241e0016a41186a221e200241a8026a41186a290200370300200241e0016a41206a221f200241a8026a41206a2802003602002002200129020037038802200220022902a8023703e001200241b8016a41206a2201200241c0036a41206a280200360200200241b8016a41186a221b200241c0036a41186a290200370300200241b8016a41106a2212200241c0036a41106a290200370300200241b8016a41086a2220200241c0036a41086a290200370300200220022902c0033703b8012009200c360200200220073602ac02200241013602a802200241b4026a2209200229038802370200200241bc026a2205200a290300370200200241c4026a220a200b290300370200200241cc026a200d290300370200200241003602d402200241d8026a20022903e001370300200241e0026a201c290300370300200241e8026a201d290300370300200241f0026a201e290300370300200241f8026a201f280200360200200241003602fc02200241a0036a200128020036020020024198036a201b29030037030020024190036a201229030037030020024188036a202029030037030020024180036a20022903b801370300200241dc026a2101200241fc026a211f200241d4026a211c200241e4026a210b200241ec026a210d41002107034002400240024002400240024002402007450d00200241186a201c10b0020240200228021822074108460d00200228021c211e0c020b024020022802d4022207450d00024020022802d80241ffffff3f71450d00200710230b20022802ec0241ffffff3f71450d0020022802e80210230b20012000290200370200200141086a200041086a290200370200200141106a200041106a290200370200200141186a200041186a2902003702002002200c3602d802200241003602d4020b200a2902002106200a20022903d80337020020052902002115200520022903d00337020020092902002111200920022903c803370200200241003602c00320022902ac022108200220022903c00322233702ac0202402008a72207450d0020022902cc02212320012011370200200b2015370200200d2006370200200220083702d402200220233702f4020c070b20022802fc02450d01200241106a201f10b0022002280214211e200228021021070b200741796a221d41014b0d030240201d0e020500050b20022802a802450d0220022802ac0221010c010b2023a721010b2001450d00024020022802b00241ffffff3f71450d00200110230b200241c4026a28020041ffffff3f71450d00200241c0026a28020010230b024020022802d4022201450d00024020022802d80241ffffff3f71450d00200110230b20022802ec0241ffffff3f71450d0020022802e80210230b20022802fc022201450d03024020024180036a28020041ffffff3f71450d00200110230b20024194036a28020041ffffff3f71450d0320024190036a28020010230c030b200220073602a8032002201e3602ac034100280298ab474104490d00200241153602bc032002410f3602b4032002200241a8036a3602b8032002200241b4016a3602b00341002802888040210741002802848040211d410028029cab47211e200241e00236028004200242df808080103703f803200241fca5c2003602f403200242103702ec03200241eca5c2003602e803200242023703e003200242023703d003200241c4a5c2003602cc03200241083602c803200241e4a5c2003602c403200241043602c003200741b8a1c000201e410246221e1b28021021072002200241b0036a3602dc03201d41a0a1c000201e1b200241c0036a20071102000b20022802d40221070c000b0b200241c0036a41186a4200370300200241c0036a41106a22074200370300200241c0036a41086a22014200370300200242003703c003418fcdc200ad4280808080f00084100c220029000021082001200041086a290000370300200220083703c0032000102341ccc5c000ad4280808080900284100c22002900002108200241e0016a41086a2209200041086a290000370300200220083703e00120001023200720022903e0012208370300200241a8026a41086a2001290300370300200241a8026a41106a2008370300200241a8026a41186a2009290300370300200220022903c0033703a802200241086a200241a8026a108802024020022802084101470d00200228020c2004470d00200241e0016a4100419c94c700ad42808080808003841014108b0102400240024020022802e0012201450d00200241e8016a2802004104490d004182ecc3002100200420012800002207490d014187ecc3002100200741056a20044f0d010b2002200436028802200220043602b801200241c0036a41086a200241e0016a41086a280200360200200220022903e0013703c003200241a8026a200241c0036a10860120022802ac0221014100419c94c700ad428080808080038420023502b00242208620022802a8022207ad84200241b8016aad4280808080c000841015210002402001450d00200710230b024020022802c0032201450d0020022802c403450d00200110230b20004101460d010c020b024020022802e401450d00200110230b20000d010b10fa040b20022802a8012109024020022802b0012201450d00200141246c21002009210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b024020022802ac012201450d00200141246c450d00200910230b200228023c21090240200241386a410c6a2802002201450d00200141246c21002009210103400240024020012d0000220741044b0d0002400240024020070e050400010204040b2001410c6a280200450d03200141086a28020010230c030b2001410c6a280200450d02200141086a28020010230c020b2001410c6a280200450d01200141086a28020010230c010b200141086a280200450d00200141046a28020010230b200141246a21012000415c6a22000d000b0b0240200241c0006a2802002202450d00200241246c450d00200910230b2003240042010be36f0d027f017e087f017e017f027e037f027e0a7f027e0b7f037e1c7f230041d0066b22002400200041003602f004200042083703e8042000410036028005200042013703f804418fcdc200ad4280808080f00084100c22012900002102200041f8056a41086a2203200141086a290000370300200020023703f8052001102341bbacc300ad4280808080a00184100c22012900002102200041a8066a41086a2204200141086a290000370300200020023703a806200110230240024002400240024002400240412010212201450d00200120002903f805370000200120002903a806370010200141086a2003290300370000200141186a22052004290300370000412010212203450d0020032001290000370000200341186a2005290000370000200341106a200141106a290000370000200341086a200141086a290000370000200041b8056a41026a2204200041a0016a41026a2d00003a0000200020002f00a0013b01b805200041d8056a41106a42a0808080800437030041002106200041003a00f005200020013602e405200042a080808080043702dc05200020033602d805200041f3056a20042d00003a0000200020002f01b8053b00f105200041a0016a200041d8056a10d20141012107024002400240024020002802a0014101470d00200041a0016a410472210841012107410821094100210a034020004188056a41206a200841206a28020036020020004188056a41186a2201200841186a290200220237030020004188056a41106a2205200841106a290200220b37030020004188056a41086a220c200841086a290200220d37030020002008290200220e37038805200041f8056a41186a220f2002370300200041f8056a41106a2210200b370300200041f8056a41086a2211200d3703002000200e3703f805200041a0016a41186a22032001290300370300200041a0016a41106a22042005290300370300200041a0016a41086a2205200c29030037030020002000290388053703a001200041c0006a200041f8056a10d301200041c0006a41086a29030021022000290340210b41201021220c450d02200c20002903f805370000200c41186a200f290300370000200c41106a2010290300370000200c41086a2011290300370000200041a8066a41086a2005290300220d370300200041a8066a41106a2004290300220e370300200041a8066a41186a20032903002212370300200020002903a00122133703a806200320123703002004200e3703002005200d370300200020133703a0010240200a20002802ec04470d00200041e8046a200a4101109f0120002802e804210920002802f004210a0b2009200a4106746a220120023703082001200b370300200529030021022004290300210b2003290300210d20002903a001210e200141346a4281808080103702002001200c3602302001200e370310200141286a200d370300200141206a200b370300200141186a20023703002000200a41016a220a3602f0042003200f2903003703002004201029030037030020052011290300370300200020002903f8053703a0010240200620002802fc04470d00200041f8046a20064101109a0120002802f804210720002802800521060b200720064105746a220120002903a001370000200141186a2003290300370000200141106a2004290300370000200141086a20052903003700002000200641016a220636028005200041a0016a200041d8056a10d20120002802a0014101460d000b0b024020002802dc05450d0020002802d80510230b024020002802e805450d0020002802e40510230b418fcdc200ad4280808080f00084100c22012900002102200041f8056a41086a2203200141086a290000370300200020023703f8052001102341e2c4c000ad4280808080a00184100c22012900002102200041a8066a41086a2204200141086a290000370300200020023703a80620011023412010212201450d03200120002903f805370000200120002903a806370010200141086a2003290300370000200141186a22052004290300370000412010212203450d0320032001290000370000200341186a2005290000370000200341106a200141106a290000370000200341086a200141086a29000037000020004190016a41026a2205200041a0016a41026a2d00003a0000200020002f00a0013b019001200041a0016a41106a220442a08080808004370300200041003a00b801200020013602ac01200042a080808080043702a401200020033602a001200041bb016a20052d00003a0000200020002f0190013b00b901200041e8046a200041a0016a10d401200041a0016a41186a2206420037030020044200370300200041a0016a41086a22014200370300200042003703a001418fcdc200ad4280808080f000842202100c2205290000210b200041f8056a41086a2203200541086a2900003703002000200b3703f8052005102320012003290300370300200020002903f8053703a00141e4d8c100ad4280808080e00184100c220c290000210b200041a8066a41086a2205200c41086a2900003703002000200b3703a806200c1023200420002903a806220b37030020004188056a41086a2208200129030037030020004188056a41106a220a200b37030020004188056a41186a220f2005290300370300200020002903a00137038805200041386a20004188056a412010cd01200028023c211420002802382115200642003703002004420037030020014200370300200042003703a0012002100c220c29000021022003200c41086a290000370300200020023703f805200c102320012003290300370300200020002903f8053703a001418cd9c100ad4280808080d00284100c220329000021022005200341086a290000370300200020023703a80620031023200420002903a806220237030020082001290300370300200a2002370300200f2005290300370300200020002903a00137038805200041306a20004188056a412010cd01200028023421052000280230210c20002802fc04211620002802e804211720002802ec042118200028028005210120002802f00421192000410036027020004100360268201920016aad42e0007e2202422088a70d042002a72203417f4c0d044108210402402003450d00200310212204450d040b20054104200c1b221a41014b211b200041003602e005200020043602d8052000200341e0006e3602dc05200041003602b006200042083703a806200041a8066a41002001410574220541057510a90120002802b006211c02402001450d00200541606a410576211d20002802a806201c41d8006c6a210c200041d0016a2103200041c8016a210941002104200721010340200041b8056a41186a2206200141186a2208290000370300200041b8056a41106a220a200141106a220f290000370300200041b8056a41086a2210200141086a2211290000370300200020012900003703b80520004188056a41186a200829000037030020004188056a41106a200f29000037030020004188056a41086a20112900003703002000200129000037038805200041e8006a20004188056a200410d501200041a0016a41086a4200370300200041a0016a41106a4200370300200041a0016a41186a4200370300200041a0016a41206a420037030020094200370300200341186a2006290300370000200341106a200a290300370000200341086a2010290300370000200320002903b805370000200042003703a001200c200041a0016a41d00010a105220c41d0006a41003a0000200c41d8006a210c200141206a2101200441016a2104200541606a22050d000b201c201d6a41016a211c0b201a4101201b1b21012000201c3602b0060240201641ffffff3f71450d00200710230b200041f8056a41086a200041a8066a41086a2802002203360200200020002903a8063703f8050240024020032001490d00200041d8056a20002802e0052019410674220341067510960120002802d805210420002802e0052101200041b8016a200041c8066a360200200041b4016a200041f8056a3602002000201720036a3602ac01200020173602a801200020183602a401200020173602a0012000200041e8006a3602b00120004188056a41086a20013602002000200041e0056a36028c0520002004200141e0006c6a36028805200041a0016a20004188056a10d6012014410020151b2216ad42307e2202422088a70d062002a72203417f4c0d0620002802800621010240024020030d00410821070c010b200310212207450d060b200041003602a00620002007360298062000200341306e36029c062016412c6c2203417f4c0d060240024020030d00410421140c010b200310212214450d060b41002119200041003602582000201636025420002014360250410021152001201620012016491b221d0d010c030b024020002802fc052201450d00200141d8006c450d0020002802f80510230b024020002802e0052201450d00200141e0006c210320002802d80541346a21010340024020012802002204450d00200441c8006c450d002001417c6a28020010230b200141e0006a2101200341a07f6a22030d000b0b024020002802dc052201450d00200141e0006c450d0020002802d80510230b200041e8006a10be0102402019450d0020194106742103201741346a210103400240200128020041ffffff3f71450d002001417c6a28020010230b200141c0006a2101200341406a22030d000b0b410021070240201841ffffff1f710d000c040b201710230c030b200041a0016a41186a211a200041a0016a41106a2109200041a0016a41086a211b41002118034020002802f805210402402001450d00200141d8006c21032004210103400240200141d0006a2d00000d0002400240200141206a290300220b200141286a290300220d8450450d0042002102427f210b427f210d0c010b427f2102200041206a427f427f200b200d10a705200041206a41086a290300210d2000290320210b0b2001200b3703002001200d370308200141106a2002370300200141186a20023703000b200141d8006a2101200341a87f6a22030d000b0b0240024020002802e0052201450d0020002802d8052205200141e0006c6a210a0340024020052802382201450d00200141c8006c2104200528023041206a21010340200028028006220c200128020022034d0d04024020002802f805200341d8006c6a22032d00500d0020032903202202200341286a290300220b84500d00200041a0016a2005290310200541186a2903002005290300200541086a2903002002200b108201200320032903002202427f2002427f20002903a80120002802a001410146220c1b220d7c220b200b2002542206200341086a22082903002202427f2009290300200c1b220e7c2006ad7c220b200254200b2002511b220c1b200d200e845022061b37030020082002427f200b200c1b20061b3703000b200141c8006a2101200441b87f6a22040d000b0b200541e0006a2205200a470d000b20002802f80521040b201841016a211820002802800641d8006c2101200441a87f6a210303402001450d04200141a87f6a2101200341d8006a2103200441d0006a2105200441d8006a220c210420052d00000d000b02402001450d00200341186a2903002102200341106a290300210b200341086a290300210d2003290300210e4100210403400240200c20046a220541d0006a2d00000d00200541086a2903002212200d200e200d200b2002200529030022132012200541106a290300221e200541186a290300221f10800141ff017141014622061b210d2013200e20061b210e201f200220061b2102201e200b20061b210b2005200320061b21030b2001200441d8006a2204470d000b0b2003450d03200341013a0050024020002802e0052201450d0020002802d8052204200141e0006c6a21172003410c6a2110200341306a21110340200441e0006a211c024020042802382205450d0020042802302101200541c8006c210503400240024020102001460d00200141246a2011412010a3050d010b200441186a220c290300210e200341086a220629030021022004290310210d2003290300210b20032903102112200141186a200341186a2208290300370300200141106a20123703002001200242002002200e7d200b200d54ad7d2212200b200d7d2213200b56201220025620122002511b220a1b200d200e8450220f1b3703082001200b42002013200a1b200f1b370300200629030021022008290300210b2003290300210d20042003290310370320200441286a200b3703002004200d370310200c20023703000b200141c8006a2101200541b87f6a22050d000b0b201c2104201c2017470d000b0b201a200341c8006a2900003703002009200341c0006a290000370300201b200341386a290000370300200020032900303703a001200341286a29030021022003290320210b02402015200028029c06470d0020004198066a2015410110a401200028029806210720002802a00621150b2007201541306c6a220120002903a001370300201b290300210d2009290300210e201a29030021122001200b370320200141286a2002370300200141186a2012370300200141106a200e370300200141086a200d3703002000201541016a22153602a0062018201d4f0d0320002802800621010c010b0b2003200c41a4e4c4001030000b102a000b024020002802e0052201450d0020002802d8052210200141e0006c6a2116201541306c211c20004194056a221741186a2118201741106a211a201741086a211b4100211903402017201029003c3700002018201041d4006a290000370000201a201041cc006a290000370000201b201041c4006a29000037000020004100360290052000420237038805024020102802382201450d002010280230220a200141c8006c6a2111201041106a2109410021084102210f0340200a220641246a2104200641c8006a210a41002105201c210320072101024003402003450d01024020042001460d0020012004412010a305210c200541016a2105200341506a2103200141306a2101200c0d010b0b41ffff0321030240200920061081010d00410021032006290310201029032085200641186a290300201041286a29030085844200520d00200041a0016a42ffff0342002006290300200641086a2903002009290300200941086a290300108201427f20002903a80120002802a00141014622011b2202a7417f200242808004544100427f200041a0016a41106a29030020011b501b1b21030b200041a0016a41186a22042006413c6a290000370300200041a0016a41106a2205200641346a290000370300200041a0016a41086a220c2006412c6a290000370300200020062900243703a00102402008200028028c05470d0020004188056a2008410110af01200028028805210f20002802900521080b200f200841226c6a220120002903a001370100200c29030021022005290300210b2004290300210d200120033b0120200141186a200d370100200141106a200b370100200141086a20023701002000200841016a2208360290050b200a2011470d000b024002402008450d002008417f200841808004491b210c02400240200841226c22040d00410021030c010b200f41206a2101410021030340417f2003411074220320012f01004110746a220520052003491b4110762103200141226a21012004415e6a22040d000b0b200c41ffff03712201450d012003417f73220641ffff0371220320016e21050240200120034b0d00410021010340200f200120087041226c6a2203417f20032f0120411074220320054110746a220420042003491b4110763b0120200141016a22012008490d000b0b024020062005200c6c6b41ffff03712205450d00410021010340200f200120087041226c6a2203417f20032f01204110742203418080046a220420042003491b4110763b0120200141016a22012005490d000b0b200041a0016a41286a220320004188056a41286a280200360200200041a0016a41206a220420004188056a41206a290300370300200041a0016a41186a220520004188056a41186a290300370300200041a0016a41106a220c20004188056a41106a290300370300200041a0016a41086a220620004188056a41086a29030037030020002000290388053703a001024020192000280254470d00200041d0006a2019410110a60120002802502114200028025821190b20142019412c6c6a220120002903a001370200200141286a2003280200360200200141206a2004290300370200200141186a2005290300370200200141106a200c290300370200200141086a20062903003702002000201941016a22193602580c020b200028028c052201450d01200141226c450d01200f10230c010b41a0e5c400411941bce5c400102d000b201041e0006a22102016470d000b200028025421160b200028029c062105024020002802fc052201450d00200141d8006c450d0020002802f80510230b024020002802e0052201450d00200141e0006c210320002802d80541346a21010340024020012802002204450d00200441c8006c450d002001417c6a28020010230b200141e0006a2101200341a07f6a22030d000b0b024020002802dc052201450d00200141e0006c450d0020002802d80510230b200041e8006a10be010b2007450d06200041a0016a41186a220c4200370300200041a0016a41106a221d4200370300200041a0016a41086a22014200370300200042003703a001418fcdc200ad4280808080f00084220b100c220329000021022001200341086a290000370300200020023703a0012003102341a8c5c000ad4280808080a00284100c22042900002102200041a8066a41086a2203200441086a290000370300200020023703a80620041023201d20002903a806220237030020004188056a41086a2208200129030037030020004188056a41106a220a200237030020004188056a41186a220f2003290300370300200020002903a00137038805200041f8056a20004188056a412010890202400240024020002802f8052206450d00200020002902fc05220d370284012000200636028001200c4200370300201d420037030020014200370300200042003703a001200b100c220429000021022001200441086a290000370300200020023703a0012004102341bac5c000ad4280808080a00284100c220429000021022003200441086a290000370300200020023703a80620041023201d20002903a806370000201d41086a200329030037000020082001290300370300200a201d290300370300200f200c290300370300200020002903a00137038805200041f8056a20004188056a4120108902024020002802f8052201450d00200020002902fc05370294012000200136029001200041003602a801200042013703a001200041a0016a4100201541306c220441306d109a0120002802a801210902402004450d0020002802a00120094105746a2101200721030340200341086a2900002102200341106a290000210b2003290000210d200141186a200341186a290000370000200141106a200b370000200141086a20023700002001200d370000200941016a2109200141206a2101200341306a2103200441506a22040d000b0b200020093602a80102402005450d00200541306c450d00200710230b20002802a401212020002802a0012121200041003602b006200042043703a806200041a8066a41002019412c6c2203412c6d10a60120002802a806210420002802b0062101200020143602a8012000201420036a3602ac0120002016ad4220862014ad843703a0012000200041c8066a3602b00120004188056a41086a222220013602002000200041a8066a41086a222336028c05200020042001412c6c6a36028805200041a0016a20004188056a10a502200041e8046a41086a220120002802b006360200200020002903a8063703e804200041e8046a10b9042001280200210120002802ec04212420002802e80421252000410036028005200042043703f804200041f8046a41002001412c6c2203412c6d10a601202520036a21192000280280052107024020010d002025210f0c030b20002802f8042007412c6c6a2108200041d8056a41086a2117200041d8056a41106a2116200041d8056a41186a21182025210f0340200f220128020821042001280204211c2017200141146a29020037030020162001411c6a2902003703002018200141246a2902003703002000200129020c3703d8052001412c6a210f20012802002210450d03200041f8056a41186a221a2018290300370300200041f8056a41106a221b2016290300370300200041f8056a41086a22142017290300370300200020002903d8053703f8052010200441306c22036a210a0240024020030d00420021024200210b0c010b201041206a2101420021024200210b0340200141086a290300200b7c2001290300220b20027c2202200b54ad7c210b200141306a2101200341506a22030d000b0b024002400240200a2010460d00200441306c2103201021010340200141286a290300210d200141206a290300210e200041b8056a41186a2204200141186a290000370300200041b8056a41106a2205200141106a290000370300200041b8056a41086a220c200141086a290000370300200020012900003703b805200e200d2002200b109805220641ffff03710d02200141306a2101200341506a22030d000b0b4200210d41002101410221110240201c450d00201c41306c450d00201010234200210d0b42002112410021060c010b2023200c290300370300200041a8066a41106a22152005290300370300200041a8066a41186a22262004290300370300200020002903b805220d370388052000200d3703a806412210212211450d06201120002903a806370100201120063b0120201141186a2026290300370100201141106a2015290300370100201141086a2023290300370100200042818080801037029c0620002011360298062006ad210d0240024020034130470d00200d42ffff0383210d42002112410121060c010b200141306a2126200a41506a2127200d42ffff0383210d42002112410121060340200d21132026210102400340200141286a290300210d200141206a290300210e2004200141186a2900003703002005200141106a290000370300200c200141086a290000370300200020012900003703b805200e200d2002200b109805220341ffff03710d01200a200141306a2201470d000b2013210d0c020b2022200c290300220d37030020004188056a41106a2005290300220e37030020004188056a41186a2004290300221e370300200020002903b805221f37038805200041a0016a41186a2228201e370300200041a0016a41106a2229200e370300200041a0016a41086a222a200d3703002000201f3703a00120132003ad42ffff03837c220d201354ad210e02402006200028029c06470d0020004198066a2006410110af0120002802980621110b200141306a21262012200e7c21122011200641226c6a221520002903a001370100202a290300210e202929030021132028290300211e201520033b0120201541186a201e370100201541106a2013370100201541086a200e3701002000200641016a22063602a00620272001470d000b0b0240201c450d00201c41306c450d00201010230b200028029c0621010b0240024042ffff03200d7d220b42ffff035642002012200d42ffff0356ad7c7d220242005220025022031b4101470d00200d4281807c7c2202200d562012200d42ffff0354ad7d220b201256200d42feff03561b0d012006450d01200641226c20116a417e6a2203410020032f010041107422032002a7417f200242808004544100200b501b1b4110746b2204200420034b1b4110763b01000c010b2006450d00200641226c20116a417e6a2204417f20042f01004110742204200ba7417f200b4280800454410020031b1b4110746a220320032004491b4110763b01000b200041a0016a41186a2203201a290300370300200041a0016a41106a2204201b290300370300200041a0016a41086a22052014290300370300200020002903f8053703a001200820013602042008200636020820082011360200200820002903a00137020c200841146a20052903003702002008411c6a2004290300370200200841246a2003290300370200200741016a21072008412c6a2108200f2019470d000b20002007360280050c030b200d42ffffff3f83500d00200610230b02402005450d00200541306c450d00200710230b02402019450d002019412c6c21032014210103400240200141046a2802002204450d00200441226c450d00200128020010230b2001412c6a2101200341546a22030d000b0b2016450d072016412c6c450d07201410230c070b2000200736028005200f2019460d000340200f2201412c6a210f0240200141046a2802002203450d00200341306c450d00200128020010230b2019200f470d000b0b02402024450d002024412c6c450d00202510230b2007ad422c7e2202422088a70d012002a72201417f4c0d0120002802fc04211720002802f80421190240024020010d00410421030c010b200110212203450d010b200041003602b006200020033602a80620002001412c6e3602ac06200041a8066a4100200710a60120002802b00621010240024020070d0020002802a806211c0c010b20192007412c6c6a211120002802a806221c2001412c6c6a210620012007410274417c6a4102766a2116200041ac016a2108200041b8056a41186a210a200041b8056a41106a210f200041b8056a41086a21102019210c0340200a200c41246a290000370300200f200c411c6a2900003703002010200c41146a2900003703002000200c29000c3703b805200c2802082203ad42227e2202422088a70d032002a72204417f4c0d03200c28020021010240024020040d00410221050c010b200410212205450d030b200c412c6a210c200041003602900520002005360288052000200441226e36028c0520004188056a4100200310af01200028029005210402402003450d00200341226c2105200028028805200441226c6a21030340200141086a2901002102200141106a290100210b200141186a290100210d2001290100210e200341206a200141206a2f01003b0100200341186a200d370100200341106a200b370100200341086a20023701002003200e370100200341226a2103200441016a2104200141226a21012005415e6a22050d000b0b200041a0016a41086a22012004360200200020002903880522023703a001200841186a200a290300370000200841106a200f290300370000200841086a2010290300370000200820002903b805370000200641286a200041a0016a41286a280200360200200641206a200041a0016a41206a290300370200200641186a200041a0016a41186a290300370200200641106a200041a0016a41106a290300370200200641086a2001290300370200200620023702002006412c6a2106200c2011470d000b201641016a21010b20003502ac06210241002103200041003602b006200042043703a806200041a8066a41002001412c6c2204412c6d10a60120002802a806210520002802b00621012000201c3602a8012000201c20046a3602ac0120002002422086201cad843703a0012000200041c8066a3602b00120004188056a41086a20013602002000200041a8066a41086a220436028c05200020052001412c6c6a36028805200041a0016a20004188056a10a50220002802ac062110200041a0016a2021200920002802a806221c20002802b006221110d8012004200041a0016a41086a280200360200200020002903a00122023703a8060240024002402002a7220a450d00024020002802ac062204450d0020042101200a2103034020032802c80521032001417f6a22010d000b200a21010340200120012f01064102746a41c8056a28020021012004417f6a22040d000b200041a0016a21040c020b200041a0016a2104200a2103200a21010c010b200041003602a401200041a0016a21040c010b200020013602a401200041ac016a20012f0106360200200041003602a0012000200041a8066a3602a801200041a8066a21010b20004188056a41086a200441086a290200220237030020002004290200220b3703880520002802b006210f200041ac016a4100360200200041b8016a2002370300200020013602a801200020033602a401200041003602a0012000200b3703b0012000200f3602c00102400240200f0d00427f2112420021134200210d4200211e4200211f427f210e0c010b2000200f417f6a3602c001200041a0016a410020031b220c2802002104200c28020821060240024002400240200c28020c2205200c28020422012f01064f0d00200121030c010b034020012802002203450d02200441016a210420012f0104210520032101200520032f01064f0d000b0b2005ad4220862006ad8421020c010b2006ad2102410021030b2002422088a7220641016a21052002a721080240024020040d00200321010c010b200320054102746a41c8056a2802002101410021052004417f6a2204450d00034020012802c80521012004417f6a22040d000b0b200c200536020c200c2008360208200c2001360204200c4100360200200320064105746a41e8026a2101427f2112427f210e4200211e4200211f420021134200210d03402000200141086a290300220b420020012903002202420010a605200041106a200242002002420010a605427f200d427f200041106a41086a290300222b2000290300222c202c7c7c222c200b2000290308222d84202d84420052202c202b547222011b7c2013427f200029031020011b7c222b2013542201ad7c221320012013200d542013200d511b22011b210d427f202b20011b2113200b200e2002201254200b200e54200b200e511b22011b210e2002201220011b2112200b201f7c2002201e7c221e200254ad7c211f20002802c0012201450d0120002001417f6a3602c001200041a0016a410020002802a4011b220c2802002104200c2802082106024002400240200c28020c2205200c28020422012f01064f0d00200121030c010b0240034020012802002203450d01200441016a210420012f0104210520032101200520032f0106490d020c000b0b2006ad2102410021030c010b2005ad4220862006ad8421020b2002422088a7220641016a21052002a721080240024020040d00200321010c010b200320054102746a41c8056a2802002101410021052004417f6a2204450d00034020012802c80521012004417f6a22040d000b0b200c200536020c200c2008360208200c2001360204200c4100360200200320064105746a41e8026a21010c000b0b02400240200a450d000240024020002802ac0622030d00200a21010c010b20032101200a2104034020042802c80521042001417f6a22010d000b200a21010340200120012f01064102746a41c8056a28020021012003417f6a22030d000b2004210a0b200041bc016a20012f0106360200200041b8016a4100360200200041b4016a2001360200200041003602b001200042003703a8012000200a3602a401200041003602a0010c010b4100210f200041b4016a4100360200200041003602a4010b2000200f3602c001200041a0016a10a60202402011450d002011412c6c2103201c210103400240200141046a2802002204450d00200441306c450d00200128020010230b2001412c6a2101200341546a22030d000b0b02402010450d002010412c6c450d00201c10230b20002007360290052000201736028c052000201936028805200041a0016a20004188056a20004190016a20004180016a108402024020002d00a0014101470d00202041ffffff3f71450d05202110230c050b200920096a22012009490d012001417f4c0d01200041e0026a280200212e200041dc026a280200210a200041d8026a2802002124200041d4026a280200212f200041d0026a2802002126200041cc026a2802002129200041c8026a2802002130200041c4026a280200210f200041c0026a2802002131200041bc026a2802002132200041b8026a2802002110200041b4026a2802002133200041b0026a2802002134200041ac026a2802002111200041a8026a2802002135200041a4026a2802002136200041a0026a28020021072000419c026a280200213720004198026a280200213820004194026a280200211c20004190026a28020021392000418c026a280200213a20004188026a280200211920004184026a280200213b20004180026a280200213c200041fc016a2802002117200041f8016a280200213d200041f4016a280200213e200041f0016a2802002123200041ec016a280200212a200041e8016a280200213f200041e4016a2802002116200041e0016a2802002140200041dc016a2802002141200041d8016a2802002118200041d4016a2802002142200041d0016a2802002143200041cc016a280200211a200041c8016a2802002144200041c4016a2802002145200041c0016a2802002127200041bc016a2802002125200041b8016a2802002146200041b4016a280200211b200041b0016a2802002147200041ac016a2802002148200041a8016a280200212820002802a40121220240024020010d00410221080c010b200110212208450d010b200041003602900520002008360288052000200141017636028c052009450d02202120094105746a2149200028028801220941057421142000280280012115410021062021210c0340200c41086a2900002102200c41106a290000210b200c290000212b200041a0016a41186a200c41186a290000370300200041a0016a41106a200b370300200041a0016a41086a20023703002000202b3703a0012009450d04200c41206a210c41002103201421042015210102400340200041a0016a2001460d0120032001200041a0016a412010a30522054100476a21032005450d01200141206a2101200441606a22040d000c060b0b200341ffff034b0d0402402006200028028c05470d0020004188056a20064101109c01200028028805210820002802900521060b200820064101746a20033b01002000200641016a220636029005200c2049470d000c030b0b1033000b1032000b0240202041ffffff3f71450d00202110230b200041f6006a20004190056a280200360100200020002903880537016e024020002802940141ffffff3f71450d0020002802900110230b024020002802840141ffffff3f71450d0020002802800110230b200041d0006a41106a200041e8006a41106a2f01003b0100200041d0006a41086a200041e8006a41086a29010037030020002000290168370350200041f8056a41086a2205200041de006a280100360200200020002901563703f805200041a0016a41186a220c4200370300200041a0016a41106a22014200370300200041a0016a41086a22034200370300200042003703a001418fcdc200ad4280808080f00084100c220429000021022003200441086a290000370300200020023703a0012004102341b8dbc100ad4280808080900184100c22042900002102200041a8066a41086a2206200441086a290000370300200020023703a80620041023201d20002903a806370000201d41086a200629030037000020004188056a41086a2204200329030037030020004188056a41106a2203200129030037030020004188056a41186a2206200c290300370300200020002903a00137038805200041a0016a20004188056a10ba012001280200210120002903a0012102200041ab016a2005280200360000200020002903f8053700a301200020002900a0013703a8062000200041a7016a2900003700af06200041c0046a200d370300200041b8046a2013370300200041b0046a201f370300200041a8046a201e370300200041a0046a200e37030020004198046a2012370300200041c0026a41183a0000200041c8026a20002900af063700002000418c046a202e36020020004188046a200a36020020004184046a202436020020004180046a202f360200200041fc036a2026360200200041f8036a2029360200200041f4036a2030360200200041f0036a200f360200200041ec036a2031360200200041e8036a2032360200200041e4036a2010360200200041e0036a2033360200200041dc036a2034360200200041d8036a2011360200200041d4036a2035360200200041d0036a2036360200200041cc036a2007360200200041c8036a2037360200200041c4036a2038360200200041c0036a201c360200200041bc036a2039360200200041b8036a203a360200200041b4036a2019360200200041b0036a203b360200200041ac036a203c360200200041a8036a2017360200200041a4036a203d360200200041a0036a203e3602002000419c036a202336020020004198036a202a36020020004194036a203f36020020004190036a20163602002000418c036a204036020020004188036a204136020020004184036a201836020020004180036a2042360200200041fc026a2043360200200041f8026a201a360200200041f4026a2044360200200041f0026a2045360200200041ec026a2027360200200041e8026a2025360200200041e4026a2046360200200041e0026a201b360200200041dc026a2047360200200041d8026a2048360200200041d4026a2028360200200041d0026a2022360200200042023703880220004190046a4100200120024202511b360200200041063602b802200020002903a8063700c102200041e0046a2006290300370300200041d8046a2003290300370300200041d0046a2004290300370300200041c8046a2000290388053703002000200041a0016a3602d80520004188056a200041d8056a10b302200028028805200028028c052000280290051089011a200041b8026a10b4020c030b0240202041ffffff3f71450d00202110230b0240200028028c0541808080807872418080808078460d00200810230b0240202841ffffffff0171450d00202210230b0240201b450d00201b410c6c450d00204710230b0240202741ffffffff0071450d00202510230b0240201a450d00201a41146c450d00204410230b02402018450d00201841186c450d00204210230b02402016450d002016411c6c450d00204010230b0240202341ffffff3f71450d00202a10230b02402017450d00201741246c450d00203d10230b02402019450d00201941286c450d00203b10230b0240201c450d00201c412c6c450d00203910230b02402007450d00200741306c450d00203710230b02402011450d00201141346c450d00203510230b02402010450d00201041386c450d00203310230b0240200f450d00200f413c6c450d00203110230b0240202641ffffff1f71450d00202910230b200a450d00200a41c4006c450d00202410230b024020002802940141ffffff3f71450d0020002802900110230b20002802840141ffffff3f71450d0020002802800110230b200041d0006a41106a200041e8006a41106a2f01003b01000b200041d0066a24000ba90504047f017e057f017e230041d0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a220442003703002002420037032041b0dfc300ad4280808080a00184100c220529000021062004200541086a290000370300200220063703202005102341bcbac500ad4280808080b00184100c22052900002106200241c0006a41086a2207200541086a2900003703002002200637034020051023200320022903402206370300200241086a2004290300370300200241106a2006370300200241186a200729030037030020022002290320370300200241206a200210ad02024020022902244200200228022022051b2206422088a722044105744104722203417f4c0d000240200310212207450d002005410120051b21082002410036022820022003360224200220073602202004200241206a10610240024020040d0020022802282103200228022021090c010b2004410574210a2002280220210920022802242107200228022821032008210b0340200b2104024002402007200322056b4120490d00200541206a21030c010b024002400240200541206a22032005490d002007410174220b2003200b20034b1b220b4100480d000240024020070d000240200b0d00410121090c020b200b102121090c040b2007200b470d020b200b21070c030b102c000b20092007200b102521090b200b210720090d00102a000b200441206a210b200920056a22052004290000370000200541186a200441186a290000370000200541106a200441106a290000370000200541086a200441086a290000370000200a41606a220a0d000b2002200736022420022003360228200220093602200b2003ad4220862009ad84210c0240200642ffffff3f83500d00200810230b200241d0006a2400200c0f0b1033000b1032000bbe05020c7f017e230041306b22022400200210c203024002400240024002400240200228020822034103744104722204417f4c0d002002280204210520022802002106200410212207450d012002410036020820022004360204200220073602002003200210612003450d02200341037421082006210303400240024020032802004101460d0002400240200228020420022802082204460d00200228020021070c010b200441016a22072004490d07200441017422092007200920074b1b22094100480d070240024020040d0041002104024020090d00410121070c020b2009102122070d010c0b0b2002280200210720042009460d0020072004200910252207450d0a0b20022009360204200220073602000b200720046a41003a0000200441016a21040c010b024002402002280204220720022802082204460d00200228020021090c010b200441016a22072004490d06200441017422092007200920074b1b22074100480d060240024020040d0041002104024020070d00410121090c020b200710212209450d0a0c010b2002280200210920042007460d0020092004200710252209450d090b20022007360204200220093602000b200920046a41013a00002002200441016a220a360208200341046a280200210b02402007200a6b41034b0d00200a41046a220c200a490d062007410174220d200c200d200c4b1b220c4100480d060240024020070d000240200c0d00410121090c020b200c10212209450d0a0c010b2007200c460d0020092007200c10252209450d090b2002200c360204200220093602000b2009200a6a200b360000200441056a21040b200341086a210320022004360208200841786a22080d000c050b0b1032000b1033000b200228020821040c010b102c000b2004ad422086200235020084210e0240200541ffffffff0171450d00200610230b200241306a2400200e0f0b102a000bc80204047f017e017f017e230041d0006b22022400200241206a41186a4200370300200241206a41106a22034200370300200241206a41086a22044200370300200242003703204196adc300ad4280808080900184100c220529000021062004200541086a290000370300200220063703202005102341bce0c300ad4280808080e00084100c22052900002106200241c0006a41086a2207200541086a2900003703002002200637034020051023200320022903402206370300200241086a2004290300370300200241106a2006370300200241186a200729030037030020022002290320370300200241206a2002109103200241206a20022802202204410420041b22052002290224420020041b2206422088a710d3022002350228422086200235022084210802402006a72204450d002004412c6c450d00200510230b200241d0006a240020080b3f01017f0240410410212202450d002002418080800536000020024104410810252202450d0020024180a0013600042002ad42808080808001840f0b102a000bfd0503027f037e047f23004190016b2202240002400240024020014104490d0020022000419ca8c70020011b280000220110c303200228020022000d01410021000c020b2002411c6a4104360200200241c4006a410236020020024202370234200241e8c1c60036023020024104360214200241ccc3c60036021020024100360284012002419ca8c700360280012002200241106a360240200220024180016a360218200241306a41f8c1c600103a000b2002200136020c200241106a2002410c6a10af0220024180016a200241106a109702200241306a200228028001220320022802880110980220022903304201512101200241c0006a2903002104200229033821050240200228028401450d00200310230b2004420020011b21062005420020011b2104200241086a2802002103200228020421070b024002400240410110212201450d0020024201370234200220013602300240024020000d0041002103200141003a0000410121080c010b200141013a0000200241013602382003200241306a10610240024020022802342209200228023822086b2003490d00200228023021012009210a0c010b200820036a22012008490d032009410174220a2001200a20014b1b220a4100480d030240024020090d000240200a0d00410121010c020b200a102122010d010c060b200228023021012009200a460d0020012009200a10252201450d050b2002200a360234200220013602300b200120086a2000200310a1051a2002200820036a220336023802400240200a20036b4110490d00200341106a21080c010b200341106a22082003490d03200a41017422092008200920084b1b22094100480d0302400240200a0d00024020090d00410121010c020b200910212201450d060c010b200a2009460d002001200a200910252201450d050b20022009360234200220013602300b200120036a2203200637000820032004370000200021030b2008ad4220862001ad84210402402000450d002007450d00200310230b20024190016a240020040f0b1033000b102c000b102a000bd10603017f017e057f230041d0006b22022400024002400240024002400240024020014104490d002000419ca8c70020011b280000210041b0dfc300ad4280808080a00184100c22012900002103200241186a41086a200141086a290000370300200220033703182001102341c4a1c300ad4280808080c00084100c22012900002103200241286a41086a200141086a2900003703002002200337032820011023200220003602442002200241c4006aad4280808080c00084100d2201290000370348200110232002410c6a200241c4006a41046a3602002002200241c8006a41086a3602042002200241c4006a3602082002200241c8006a360200200241003a0010200241386a200210652002280240220441206a22004100480d0120022802382105024002402000450d00200010212201450d042000410f4d0d01200021060c060b200041017422014110200141104b1b2206102122010d050c070b200041017422064110200641104b1b220641004e0d030c050b200241346a4104360200200241146a410236020020024202370204200241e8c1c6003602002002410436022c200241ecc3c6003602282002410036021c2002419ca8c7003602182002200241286a3602102002200241186a360230200241f8c1c600103a000b1032000b1033000b20002006460d0020012000200610252201450d020b20012002290318370000200141086a200241186a41086a2903003700000240024020064170714110460d00200621070c010b200641017422074120200741204b1b22074100480d0120062007460d0020012006200710252201450d020b20012002290328370010200141186a200241286a41086a2903003700000240200741606a20044f0d00200441206a22062004490d01200741017422082006200820064b1b22064100480d0120072006460d0020012007200610252201450d020b200141206a2005200410a1051a0240200228023c450d00200510230b20022001200010b70302400240200228020022000d0041002100200241003602280c010b20022002290204220337022c200220003602282003a721060b200110232002200241286a1086012002350208422086200235020084210302402000450d002006450d00200010230b200241d0006a240020030f0b102c000b102a000b8f1907097f017e057f017e027f027e047f230041f0116b22022400024002402001450d00200220003602000c010b2002419ca8c7003602000b20022001360204200241c8036a200210b1040240024020022802c8032203450d002003200241c8036a41086a280200220441c8036c6a210520022802cc032106024002400240024020040d00200321070c010b200241c8036a4198016a2108200241f00a6a4198016a2109200241c8036a41f0006a210a200321070340200241e0026a200741e80010a1051a2007290368210b200241086a200741f0006a41d80210a1051a200741c8036a2107200b4203510d01200241c8036a200241e0026a41e80010a1051a2002200b3703b004200a200241086a41d80210a1051a2002200241c8036a3602f00a200241e00a6a200241f00a6a10b302200220022802e80a3602dc0a200220022802e00a220c3602d80a20024190076a200241d80a6a10d3030240024020022903f8074203520d00024020022802e40a450d00200c10230b200810b4020c010b200241f00a6a20024190076a41c80310a1051a410121004100210d024020022802880c2201410d470d00200228028c0c4101470d0020022802900c210e20022802940c210f0240024020022802980c22104188026c22010d004108210d420021110c010b20014188026dad42f0017e220b422088a70d06200ba722004100480d060240024020000d004108210d0c010b20001021220d450d090b200041f0016ead21110b200e20016a21124100211302400240024020100d00200e21010c010b4200210b200e2101200d21000340200141086a2903002114200141106a280200211020012903002115200241b80e6a200141146a41dc0110a1051a024020100d0020014188026a21010c020b20014184026a2802002116200141fc016a2802002117200141f4016a2802002118200141f0016a280200211920024194106a200241b80e6a41dc0110a1051a02402018450d00201841c1006c450d00201910230b02402016450d00201710230b2000201537030020002014370308200041106a2010360200200041146a20024194106a41dc0110a1051a200041f0016a2100200b4280808080107c210b201341016a211320014188026a22012012470d000b2011200b8421140c010b20112013ad42208684211420012012460d000340200110a203201220014188026a2201470d000b0b0240200f450d00200f4188026c450d00200e10230b4100210020022802880c21010b024002402001410d470d000240200228028c0c4101470d002000450d02024020022802980c2200450d0020022802900c210120004188026c21000340200110a20320014188026a2101200041f87d6a22000d000b0b20022802940c2201450d0220014188026c450d0220022802900c10230c020b0240200228029c0c2200450d0020022802940c21012000410c6c210003400240200141046a280200450d00200128020010230b2001410c6a2101200041746a22000d000b0b20022802980c2201450d012001410c6c450d0120022802940c10230c010b200910b4020b024020022802e40a450d00200c10230b200810b402200d0d030b20072005470d000b200521070b4100210d0b024020052007460d002003200441c8036c6a2101034020074198016a109e032001200741c8036a2207470d000b0b02402006450d00200641c8036c450d00200310230b0240024002400240200d0d00410121010c010b2014422088a741f0016c4105722201417f4c0d010b200110212200450d01200241003602f80a200220013602f40a200220003602f00a02400240200d0d00200041003a0000200241013602f80a0c010b200041013a0000200241013602f80a2014422088a72201200241f00a6a10612001450d00200141f0016c2105410021160340200d20166a220141c0006a28020021120240024020022802f40a220020022802f80a22186b4104490d0020022802f00a2107200021100c010b201841046a22072018490d05200041017422102007201020074b1b22104100480d050240024020000d00024020100d00410121070c020b2010102122070d010c090b20022802f00a210720002010460d0020072000201010252207450d080b200220103602f40a200220073602f00a0b200720186a20123600002002201841046a22123602f80a412010212200450d03200041186a2213200141e8006a290000370000200041106a2217200141e0006a290000370000200041086a2219200141d8006a2900003700002000200141d0006a29000037000002400240201020126b4120490d00201841246a21180c010b201241206a22182012490d052010410174220c2018200c20184b1b220c4100480d050240024020100d000240200c0d00410121070c020b200c10212207450d090c010b2010200c460d0020072010200c10252207450d080b2002200c3602f40a200220073602f00a0b200720126a22072000290000370000200741186a2013290000370000200741106a2017290000370000200741086a2019290000370000200220183602f80a20001023200141c4006a2802002113200141cc006a2802002207200241f00a6a10610240024020022802f40a221220022802f80a22186b2007490d0020022802f00a2100201221100c010b201820076a22002018490d05201241017422102000201020004b1b22104100480d050240024020120d00024020100d00410121000c020b201010212200450d090c010b20022802f00a210020122010460d0020002012201010252200450d080b200220103602f40a200220003602f00a0b200020186a2013200710a1051a2002201820076a22073602f80a02400240201020076b411f4d0d00201021180c010b200741206a22182007490d05201041017422122018201220184b1b22184100480d050240024020100d00024020180d00410121000c020b201810212200450d090c010b20102018460d0020002010201810252200450d080b200220183602f40a200220003602f00a0b200020076a2210200141f0006a290000370000201041186a20014188016a290000370000201041106a20014180016a290000370000201041086a200141f8006a2900003700002002200741206a22133602f80a02400240201820136b41c000490d00200741e0006a2110201821120c010b201341c0006a22102013490d05201841017422072010200720104b1b22124100480d050240024020180d00024020120d00410121000c020b201210212200450d090c010b20182012460d0020002018201210252200450d080b200220123602f40a200220003602f00a0b200020136a220720014190016a290000370000200741386a200141c8016a290000370000200741306a200141c0016a290000370000200741286a200141b8016a290000370000200741206a200141b0016a290000370000200741186a200141a8016a290000370000200741106a200141a0016a290000370000200741086a20014198016a290000370000200220103602f80a412010212207450d03200741186a2218200141e8016a290000370000200741106a2213200141e0016a290000370000200741086a2217200141d8016a2900003700002007200141d0016a2900003700000240201220106b411f4b0d00201041206a22192010490d052012410174220c2019200c20194b1b22194100480d050240024020120d00024020190d00410121000c020b201910212200450d090c010b20122019460d0020002012201910252200450d080b200220193602f40a200220003602f00a0b200020106a22002007290000370000200041186a2018290000370000200041106a2013290000370000200041086a20172900003700002002201041206a3602f80a200710232001200241f00a6a10e1042005201641f0016a2216470d000b0b20023502f80a42208620023502f00a84210b0240200d450d0002402014422088a72201450d00200d200141f0016c6a2110200d210703400240200741c8006a280200450d00200728024410230b0240200741186a2802002200450d00200728021021012000410474210003400240200141046a280200450d00200128020010230b200141106a2101200041706a22000d000b0b200741f0016a21010240200741146a28020041ffffffff0071450d00200728021010230b2001210720012010470d000b0b2014a72201450d00200141f0016c450d00200d10230b200241f0116a2400200b0f0b1032000b1033000b102c000b2002419c076a4104360200200241840b6a4102360200200242023702f40a200241e8c1c6003602f00a200241043602940720024184c4c600360290072002410036020c2002419ca8c700360208200220024190076a3602800b2002200241086a36029807200241f00a6a41f8c1c600103a000b102a000bf20603057f017e067f23004190016b22022400200241c8006a41186a22034200370300200241c8006a41106a22044200370300200241c8006a41086a220542003703002002420037034841db97c700ad4280808080f00084100c220629000021072005200641086a290000370300200220073703482006102341bcbcc300ad4280808080c00184100c22082900002107200241e8006a41086a2206200841086a2900003703002002200737036820081023200420022903682207370300200241286a41086a22082005290300370300200241286a41106a22092007370300200241286a41186a220a2006290300370300200220022903483703282002200241286a412010cd012002280204210b2002280200210c2003420037030020044200370300200542003703002002420037034841e4dec400ad4280808080e00084100c220d29000021072005200d41086a29000037030020022007370348200d102341f9dec400ad4280808080a00184100c220d29000021072006200d41086a29000037030020022007370368200d10232004200229036822073703002008200529030037030020092007370300200a200629030037030020022002290348370328200241e8006a200241286a412010e10120022d00682106200320024181016a2900003703002004200241f9006a2900003703002005200241f1006a290000370300200220022900693703480240024020064101460d00200a42003703002009420037030020084200370300200242003703280c010b200a20032903003703002009200429030037030020082005290300370300200220022903483703280b200241086a41086a200241286a41086a290300370300200241086a41106a200241286a41106a290300370300200241086a41186a200241286a41186a29030037030020022002290328370308024002400240410410212204450d002004200b4100200c1b360000412010212205450d0120052002290308370000200541186a2206200241086a41186a290300370000200541106a2203200241086a41106a290300370000200541086a2208200241086a41086a290300370000200441044124102522040d020b102a000b1033000b200420052900003700042004411c6a2006290000370000200441146a20032900003700002004410c6a20082900003700002005102320024190016a24002004ad4280808080c004840ba50a07027f017e047f017e017f047e027f230041e0006b220224002002411436020c200241eeebc300360208200241106a41eeebc300ad4280808080c002841010108b01024002400240024002400240200228021022030d0042002104410821050c010b200228021421062002200241186a2802002207360224200220033602200240024002402007450d0020022007417f6a3602242002200341016a36022020032d00002107200241c8006a200241206a10840420022802482208450d00200229024c2109200741ff01714101460d012009a72207450d00200741286c450d00200810230b20024100360230200242013703282002410a36023c2002200241086a3602382002200241286a36024441012107200241dc006a41013602002002420137024c20024180c5c6003602482002200241386a360258200241c4006a4184a5c200200241c8006a10311a2002350230422086200235022884100a0240200228022c450d00200228022810230b4102210a0c010b4101210a410021070b02402006450d00200310230b4108200820071b21054200200920071b210420070d00200a4101460d0020052802082203ad42287e2209422088a70d012009a72207417f4c0d01200528020021060240024020070d00410821050c010b200710212205450d030b02400240024002400240200741286e220820034f0d002008410174220a2003200a20034b1bad42287e2209422088a70d082009a7220a4100480d08200741274d0d01200841286c2207200a460d022007450d0120052007200a10252205450d090c020b2008ad210b20030d02420021090c030b200a10212205450d070b200a41286ead210b0b200341286c210a42002109410021080340200620086a22032903002104200341086a290300210c200341106a290300210d200341186a290300210e200520086a220741206a200341206a290300370300200741186a200e370300200741106a200d370300200741086a200c3703002007200437030020094280808080107c2109200a200841286a2208470d000b0b200b20098421040b2004422088a7220341286c4104722207417f4c0d00200710212208450d01200241003602502002200736024c200220083602482003200241c8006a10612002280250210702402003450d002005200341286c6a210f200228024c210620052103034002400240200620076b4120490d00200741206a2108200228024821102006210a0c010b200741206a22082007490d052006410174220a2008200a20084b1b220a4100480d050240024020060d000240200a0d00410121100c020b200a10212210450d080c010b200228024821102006200a460d0020102006200a10252210450d070b2002200a36024c200220103602480b201020076a22072003290000370000200741186a200341186a290000370000200741106a200341106a290000370000200741086a200341086a29000037000020022008360250200341206a290300210902400240200a20086b4108490d00200841086a2107200a21060c010b200841086a22072008490d05200a41017422062007200620074b1b22064100480d0502400240200a0d00024020060d00410121100c020b200610212210450d080c010b200a2006460d002010200a200610252210450d070b2002200636024c200220103602480b201020086a200937000020022007360250200f200341286a2203470d000b0b2007ad422086200235024884210902402004a72203450d00200341286c450d00200510230b200241e0006a240020090f0b1032000b1033000b102c000b102a000bb40f05047f017e017f017e077f23004190016b22022400200241c8006a41186a22034200370300200241c8006a41106a22044200370300200241c8006a41086a220542003703002002420037034841a7b3c500ad4280808080c000842206100c22072900002108200241286a41086a2209200741086a2900003703002002200837032820071023200520092903003703002002200229032837034841bcbac500ad4280808080b00184100c220729000021082009200741086a2900003703002002200837032820071023200420022903282208370300200241f0006a41086a220a2005290300370300200241f0006a41106a220b2008370300200241f0006a41186a220c200929030037030020022002290348370370200241c8006a200241f0006a10d10420022802482107200229024c2108200342003703002004420037030020054200370300200242003703482006100c220329000021062009200341086a2900003703002002200637032820031023200520092903003703002002200229032837034841c8bbc500ad4280808080a00184100c220329000021062009200341086a2900003703002002200637032820031023200420022903282206370300200a2005290300370300200b2006370300200c200929030037030020022002290348370370200241c8006a200241f0006a10970420022d00482105200c200241e1006a290000370300200b200241d9006a290000370300200a200241d1006a290000370300200220022900493703700240024020054101460d00200241286a41186a4200370300200241286a41106a420037030020094200370300200242003703280c010b200241286a41186a200c290300370300200241286a41106a200b2903003703002009200a290300370300200220022903703703280b200241086a41086a200241286a41086a290300370300200241086a41106a200241286a41106a290300370300200241086a41186a200241286a41186a2903003703002002200229032837030820024100360250200242013703480240410810212209450d002002410836024c20022009360248200942f02e3700002002410836025020094108411010252209450d00200942d8043700082002411036024c20022009360248200241103602500240024002404100450d00411021050c010b411041017422054118200541184b1b22054100480d010240024041100d002005102122090d010c040b41102005460d0020094110200510252209450d030b2002200536024c200220093602480b2009420137001020024118360250024020054138714118470d00200541017422044120200441204b1b22044100480d010240024020050d00200410212209450d040c010b20052004460d0020092005200410252209450d030b2002200436024c200220093602480b2007410820071b210d20094204370018200241203602502008420020071b2208422088a72209200241c8006a10612002280250210302402009450d00200d200941286c6a210e410020036b210b200228024c2104410021090340200320096a210c024002402004200b6a4120490d002002280248210a200421070c010b200c41206a2205200c490d03200441017422072005200720054b1b22074100480d030240024020040d00024020070d004101210a0c020b20071021220a450d060c010b2002280248210a20042007460d00200a200420071025220a450d050b2002200736024c2002200a3602480b200a20036a20096a2204200d20096a2205290000370000200441186a200541186a290000370000200441106a200541106a290000370000200441086a200541086a2900003700002002200c41206a2204360250200541206a2903002106024002402007200b6a41606a41074d0d00200721040c010b200441086a220f2004490d0320074101742204200f2004200f4b1b22044100480d030240024020070d00024020040d004101210a0c020b20041021220a450d060c010b20072004460d00200a200720041025220a450d050b2002200436024c2002200a3602480b200a20036a20096a41206a20063700002002200c41286a360250200b41586a210b200941286a2109200e200541286a470d000b200320096a21030b02400240200228024c220420036b4120490d0020022802482105200421090c010b200341206a22092003490d01200441017422052009200520094b1b22094100480d010240024020040d00024020090d00410121050c020b200910212205450d040c010b2002280248210520042009460d0020052004200910252205450d030b2002200936024c200220053602480b200520036a22042002290308370000200441186a200241086a41186a290300370000200441106a200241086a41106a290300370000200441086a200241086a41086a2903003700002002200341206a22043602500240024020092004460d00200421090c010b200941016a22042009490d01200941017422072004200720044b1b22044100480d010240024020090d0041002109024020040d00410121050c020b200410212205450d040c010b20092004460d0020052009200410252205450d030b2002200436024c200220053602480b200520096a41013a0000200941016aad422086200235024884210602402008a72209450d00200941286c450d00200d10230b20024190016a240020060f0b102c000b102a000b2b02017e017f10eb03210202404108102122030d001033000b200320023700002003ad42808080808001840b9b0b04047f017e0a7f017e230041b0016b2202240020024188016a41186a420037030020024188016a41106a2203420037030020024188016a41086a220442003703002002420037038801419dcdc200ad4280808080a00284100c220529000021062004200541086a29000037030020022006370388012005102341d7a1c200ad4280808080c00084100c22052900002106200241e8006a41086a2207200541086a2900003703002002200637036820051023200320022903682206370300200241106a41086a2004290300370300200241106a41106a2006370300200241106a41186a20072903003703002002200229038801370310200241203602342002200241106a360230200241386a200241106aad42808080808004841010108b010240024002400240200228023822080d00410021070c010b200228023c21092002200241386a41086a28020036024c20022008360248200241086a200241c8006a1088010240024020022802080d00200228020c220a200228024c220b41057622042004200a4b1b22044105742205417f4c0d040240024020040d00410121070c010b200510212207450d040b4100210c200241003602602002200436025c2002200736025802400240200a450d004100210d0340200b210341002104200241003a00a801200d41016a210d034020032004460d0320024188016a20046a200228024822052d00003a00002002200541016a3602482002200441016a22053a00a8012005210420054120470d000b200241e8006a41186a220e20024188016a41186a290300370300200241e8006a41106a220f20024188016a41106a290300370300200241e8006a41086a221020024188016a41086a29030037030020022002290388013703680240200c200228025c470d00200241d8006a200c4101109a01200228025821072002280260210c0b200320056b210b2007200c4105746a22042002290368370000200441186a200e290300370000200441106a200f290300370000200441086a20102903003700002002200c41016a220c360260200d200a470d000b2002200320056b36024c0b200229025c21062007450d010c020b2002410036024c0240200441ff0171450d00200241003a00a8010b0240200228025c41ffffff3f71450d00200710230b0b4100210720024100360270200242013703682002410a36025c2002200241306a3602582002200241e8006a3602542002419c016a41013602002002420137028c0120024180c5c600360288012002200241d8006a36029801200241d4006a4184a5c20020024188016a10311a2002350270422086200235026884100a200228026c450d00200228026810230b2009450d00200810230b2006420020071b2206422088a7220441057422094104722205417f4c0d01200510212203450d002007410120071b210a20024100360290012002200536028c012002200336028801200420024188016a10610240024020040d002002280290012105200228028801210d0c010b410020022802900122056b2107200228028801210d200228028c012108200a210c0340200c21040240200820076a411f4b0d00024002400240200541206a22032005490d002008410174220c2003200c20034b1b22034100480d000240024020080d00024020030d004101210d0c020b20031021210d0c040b20082003470d020b200321080c030b102c000b200d200820031025210d0b20032108200d0d00102a000b200441206a210c200d20056a22032004290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a290000370000200741606a2107200541206a2105200941606a22090d000b2002200836028c0120022005360290012002200d360288010b2005ad422086200dad8421110240200642ffffff3f83500d00200a10230b200241b0016a240020110f0b1033000b1032000bf41705037f037e017f027e037f230041e0026b220224000240024020010d002002200136020c2002419ca8c7003602080c010b20022001417f6a36020c2002200041016a36020820002d0000220141014b0d004100210002400240024002400240024020010e020100010b2002200241086a10880120022802000d05200228020c220320022802042201490d052001417f4c0d010240024020010d00410121000c010b200110272200450d03200020022802082204200110a1051a2002200320016b36020c2002200420016a3602080b2000450d052001ad220542208620058421050b0240024020000d004100210342002106420021070c010b20054220882206a72201417f4c0d01024020010d0041012103420021070c010b200110212203450d0220032000200110a1051a200621070b200220033602b002200220064220862007843702b402200241e7e485f30636029002200241106a200241b0026a1086012002280214210420024190026a200235021842208620022802102208ad84101f22012900002106200141086a2900002109200141106a290000210a200241106a41186a220b200141186a290000370300200241106a41106a220c200a370300200241106a41086a220d20093703002002200637031020011023200241b0016a41186a200b290300370300200241b0016a41106a200c290300370300200241b0016a41086a200d290300370300200220022903103703b00102402004450d00200810230b02402003450d002007a7450d00200310230b0240024020000d004100210342002106420021070c010b20054220882206a72201417f4c0d01024020010d0041012103420021070c010b200110212203450d0220032000200110a1051a200621070b200220033602b002200220064220862007843702b402200241e2c289ab0636029002200241106a200241b0026a1086012002280214210420024190026a200235021842208620022802102208ad84102022012900002106200141086a2900002109200141106a290000210a200241106a41186a220b200141186a290000370300200241106a41106a220c200a370300200241106a41086a220d20093703002002200637031020011023200241d0016a41186a200b290300370300200241d0016a41106a200c290300370300200241d0016a41086a200d290300370300200220022903103703d00102402004450d00200810230b02402003450d002007a7450d00200310230b0240024020000d004100210342002106420021070c010b20054220882206a72201417f4c0d01024020010d0041012103420021070c010b200110212203450d0220032000200110a1051a200621070b200220033602b002200220064220862007843702b402200241e9dabdf30636029002200241106a200241b0026a1086012002280214210420024190026a200235021842208620022802102208ad84102022012900002106200141086a2900002109200141106a290000210a200241106a41186a220b200141186a290000370300200241106a41106a220c200a370300200241106a41086a220d20093703002002200637031020011023200241f0016a41186a200b290300370300200241f0016a41106a200c290300370300200241f0016a41086a200d290300370300200220022903103703f00102402004450d00200810230b02402003450d002007a7450d00200310230b0240024020000d004100210342002106420021070c010b20054220882206a72201417f4c0d01024020010d0041012103420021070c010b200110212203450d0220032000200110a1051a200621070b200220033602b002200220064220862007843702b402200241f0c2c98b063602d002200241106a200241b0026a10860120022802142104200241d0026a200235021842208620022802102208ad84102022012900002106200141086a2900002109200141106a290000210a200241106a41186a220b200141186a290000370300200241106a41106a220c200a370300200241106a41086a220d2009370300200220063703102001102320024190026a41186a200b29030037030020024190026a41106a200c29030037030020024190026a41086a200d290300370300200220022903103703900202402004450d00200810230b02402003450d002007a7450d00200310230b0240024020000d004200210741002103420021060c010b20054220882207a72201417f4c0d010240024020010d0042002107410121030c010b200110212203450d0320032000200110a1051a0b20054280808080708321060b200220033602d002200220062007843702d402200241e1ea91cb063602dc02200241106a200241d0026a10860120022802142104200241dc026a200235021842208620022802102208ad84102022012900002106200141086a2900002109200141106a290000210a200241106a41186a220b200141186a290000370300200241106a41106a220c200a370300200241106a41086a220d20093703002002200637031020011023200241b0026a41186a200b290300370300200241b0026a41106a200c290300370300200241b0026a41086a200d290300370300200220022903103703b00202402004450d00200810230b02402003450d002007a7450d00200310230b200241106a41086a2203200241b0016a41086a290300370300200241106a41106a2204200241b0016a41106a290300370300200241106a41186a220b200241b0016a41186a290300370300200241386a200241d0016a41086a290300370300200241c0006a200241d0016a41106a290300370300200241c8006a200241d0016a41186a290300370300200220022903b001370310200220022903d001370330200241e8006a200241f0016a41186a290300370300200241e0006a200241f0016a41106a290300370300200241d8006a200241f0016a41086a290300370300200241f8006a20024190026a41086a29030037030020024180016a20024190026a41106a29030037030020024188016a20024190026a41186a29030037030020024198016a200241b0026a41086a290300370300200241a0016a200241b0026a41106a290300370300200241a8016a200241b0026a41186a290300370300200220022903f0013703502002200229039002370370200220022903b00237039001412010212201450d0320012002290310370000200141186a200b290300370000200141106a2004290300370000200141086a20032903003700002001412041c00010252201450d032001200241106a41206a2203290000370020200141386a200341186a290000370000200141306a200341106a290000370000200141286a200341086a290000370000200141c00041800110252201450d032001200241106a41c0006a22032900003700402001200241f0006a2204290000370060200141d8006a200341186a290000370000200141d0006a200341106a290000370000200141c8006a200341086a290000370000200141e8006a200441086a290000370000200141f0006a200441106a290000370000200141f8006a200441186a290000370000200141800141800210252201450d03200120024190016a22032900003700800120014198016a200341186a29000037000020014190016a200341106a29000037000020014188016a200341086a29000037000002402000450d002005a7450d00200010230b41a40110212200450d01200242a4013702142002200036021041a001200241106a1061024002402002280214220b200228021822036b41a001490d00200341a0016a2104200228021021000c010b200341a0016a22042003490d03200b41017422002004200020044b1b220c4100480d0302400240200b0d000240200c0d00410121000c020b200c102122000d010c060b20022802102100200b200c460d002000200b200c10252200450d050b2002200c360214200220003602100b200020036a200141a00110a1051a20011023200241e0026a24002004ad4220862000ad840f0b1032000b1033000b102c000b102a000b200241bc026a4104360200200241246a410236020020024202370214200241e8c1c600360210200241043602b40220024198c4c6003602b00220024100360294022002419ca8c700360290022002200241b0026a360220200220024190026a3602b802200241106a41f8c1c600103a000bbd0d03037f017e077f23004180036b22022400024002402001450d00200220003602080c010b2002419ca8c7003602080b2002200136020c2002200241086a108801024002400240024020022802000d00200228020c220320022802042201490d0002402001417f4c0d000240024020010d00410121000c010b200110272200450d03200020022802082204200110a1051a2002200320016b36020c2002200420016a3602080b2000450d0120022001ad220542208620058422054220883e02dc02200220003602d802200241b0016a200241d8026a10e5020240024020022d00b0014101470d00410021060c010b200241106a200241b0016a41017241a00110a1051a200241b0016a200241106a41a00110a1051a200241003602e802200242043703e002412010212201450d03200120022903b001370000200141186a200241b0016a41186a290300370000200141106a200241b0016a41106a290300370000200141086a200241b0016a41086a290300370000200241e0026a4100410110a00120022802e402210720022802e002220620022802e80222044104746a220341e7e485f30636020c200342a08080808004370204200320013602002002200441016a22013602e802200241f0026a200241b0016a41206a1077024020012007470d00200241e0026a2007410110a00120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200341e2c289ab0636020c200341086a200241f0026a41086a2802003602002002200141016a22013602e802200241f0026a200241f0016a1077024020012007470d00200241e0026a2007410110a00120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200241f0026a41086a22042802002108200341e9dabdf30636020c200341086a20083602002002200141016a22013602e802200241f0026a20024190026a1077024020012007470d00200241e0026a2007410110a00120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f00237020020042802002104200341f0c2c98b0636020c200341086a20043602002002200141016a22013602e802200241f0026a200241b0026a1077024020012007470d00200241e0026a2007410110a00120022802e402210720022802e002210620022802e80221010b200620014104746a220320022903f002370200200241f0026a41086a2802002104200341e1ea91cb0636020c200341086a2004360200200141016a21090b02402005a7450d00200010230b0240024020060d00410121010c010b20094104744105722201417f4c0d010b200110212200450d02200241003602b801200220013602b401200220003602b0010240024020060d00200041003a000041012100200241013602b8010c010b200041013a0000200241013602b8012009200241b0016a1061024020090d0020022802b80121000c010b200620094104746a210a2006210103402001280200210b200141086a2802002200200241b0016a10610240024020022802b401220c20022802b80122086b2000490d0020022802b0012103200c21040c010b200820006a22032008490d06200c41017422042003200420034b1b22044100480d0602400240200c0d00024020040d00410121030c020b2004102122030d010c090b20022802b0012103200c2004460d002003200c200410252203450d080b200220043602b401200220033602b0010b200320086a200b200010a1051a2002200820006a22003602b8010240200420006b41034b0d00200041046a22082000490d062004410174220c2008200c20084b1b22084100480d060240024020040d00024020080d00410121030c020b200810212203450d090c010b20042008460d0020032004200810252203450d080b200220083602b401200220033602b0010b200320006a2001410c6a2800003600002002200041046a22003602b801200141106a2201200a470d000b0b2000ad42208620023502b00184210502402006450d0002402009450d00200941047421002006210103400240200141046a280200450d00200128020010230b200141106a2101200041706a22000d000b0b200741ffffffff0071450d00200610230b20024180036a240020050f0b1032000b2002411c6a4104360200200241c4016a4102360200200242023702b401200241e8c1c6003602b00120024104360214200241b8c4c600360210200241003602f4022002419ca8c7003602f0022002200241106a3602c0012002200241f0026a360218200241b0016a41f8c1c600103a000b1033000b102c000b102a000bb70302037f047e23004180016b2202240041002103200241003a00402000419ca8c70020011b210402400240034020012003460d01200241206a20036a200420036a2d00003a00002002200341016a22003a00402000210320004120470d000b200241186a200241206a41186a22032903002205370300200241106a200241206a41106a22002903002206370300200241086a200241206a41086a2201290300220737030020022002290320220837030020032005370300200020063703002001200737030020022008370320200241f0006a200241206a10f902200241206a20022802702203200228027810980220022903202105200241e8006a280200210002402002280274450d00200310230b4104102122030d011033000b0240200341ff0171450d00200241003a00400b200241346a41023602002002410c6a410436020020024202370224200241e8c1c60036022020024104360204200241d4c4c600360200200241003602742002419ca8c700360270200220023602302002200241f0006a360208200241206a41f8c1c600103a000b20032000410020054201511b36000020024180016a24002003ad4280808080c000840bac0505027f017e017f017e017f230041c0076b22022400024002402001450d00200220003602100c010b2002419ca8c7003602100b20022001360214200241f8036a200241106a10d30302400240024020022903e0044203510d00200241186a200241f8036a41c80310a1051a200228021422014104490d0120022802102200280000210320022001417c6a3602142002200041046a360210200241f8036a200241186a41c80310a1051a200241e0036a20024190056a220110c9022002200320022903e0032204a722052004422888a74200420010b604200241086a29030021042002290300210620022d00e4032100200110b402410410212201450d022001200536000002400240200041024d0d0041042103410421000c010b024002400240024020000e03000102000b410021000c020b410121000c010b410221000b200220003a00f8034108210320014104410810252201450d03200120003a0004410521000b200041107221050240200320006b410f4b0d002003200341017422072005200720054b1b2207460d0020012003200710252201450d030b200120006a2200200437000820002006370000200241c0076a24002005ad4220862001ad840f0b200241ec036a41043602002002412c6a41023602002002420237021c200241e8c1c600360218200241043602e403200241ecc4c6003602e003200241003602f4032002419ca8c7003602f0032002200241e0036a3602282002200241f0036a3602e803200241186a41f8c1c600103a000b200241ec036a41043602002002418c046a4102360200200242023702fc03200241e8c1c6003602f803200241043602e403200241ecc4c6003602e003200241003602f4032002419ca8c7003602f0032002200241e0036a360288042002200241f0036a3602e803200241f8036a41f8c1c600103a000b102a000bcc0503027f017e047f230041e0006b2202240041f4c7c600ad4280808080800184100c22032900002104200241086a41086a200341086a290000370300200220043703082003102341fcc7c600ad4280808080f00084100c22032900002104200241186a41086a200341086a2900003703002002200437031820031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a2900003700002003ad4280808080800484100f22012900002104200241386a41086a200141086a2900003703002002200437033820011023200241d4006a200341206a360200200241003a0058200220033602502002200241386a41106a36024c2002200241386a360248200241286a200241c8006a1065200310232002280230220541206a2201417f4c0d0120022802282106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290308370000200341086a200241086a41086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290318370010200341186a200241186a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a2000200136020820002007360204200020033602000240200228022c450d00200610230b200241e0006a24000f0b102c000b102a000b13002000410b360204200041f8cec6003602000b3400200041f4c7c60036020420004100360200200041146a4104360200200041106a418080c700360200200041086a42083702000b6001027f230041106b2202240002404114102122030d001033000b200342003700082003420037000020024294808080800237020420022003360200410020021061200041086a200228020836020020002002290300370200200241106a24000b930301027f024020002802082201450d0020002802002202200141c8006c6a21010340024020022d00004101470d00200241086a280200450d00200241046a28020010230b0240200241246a2d00004101470d002002412c6a280200450d00200241286a28020010230b200241c8006a22022001470d000b0b0240200041046a2802002202450d00200241c8006c450d00200028020010230b024020002d000c4101470d00200041146a280200450d00200041106a28020010230b024020002d00304101470d00200041386a280200450d00200041346a28020010230b024020002d00544101470d00200041dc006a280200450d00200041d8006a28020010230b024020002d00784101470d0020004180016a280200450d00200041fc006a28020010230b024020002d009c014101470d00200041a4016a280200450d00200041a0016a28020010230b024020002d00c0014101470d00200041c8016a280200450d00200041c4016a28020010230b024020002d00e4014101470d00200041ec016a280200450d00200041e8016a28020010230b0bf112010b7f23004180016b22022400200241003a004002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802002203280204220420044100472205490d00200241c0006a20032802002206200510a1051a2003200420056b3602042003200620056a360200024020040d00410021062002410d6a2107200241106a2108200241246a21090c140b2002410d6a2107200241106a2108200241246a210920022d0040220a41254b0d0141002106200a0e261301010101010101010101010101010101010101010101010101010101010101010102030405130b200041063a00000c130b0240200a417f6a220441ff01714121490d00200041063a00000c130b024020040d00410121034100210441002105410121060c120b0240200410272203450d002003200128020022012802002001280204220a2004200a2004491b220510a105210b200128020422062005490d052001200620056b3602042001200128020020056a360200410121060240200a20044f0d00200b20056a22014100200b20046a20016b10a0051a0b200421050c120b1033000b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610a1051a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c100b41012101200441ff01710d040c0e0b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610a1051a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c0d0b41012101200441ff01710d040c0b0b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610a1051a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c0a0b41012101200441ff01710d040c080b200241003a00784100210402400340200241003a004020012802002205280204220320034100472206490d01200241c0006a2005280200220a200610a1051a2005200320066b3602042005200a20066a360200024002402003450d0020022d004021030c010b41002103200241003a00400b200241d8006a20046a20033a00002002200441016a22043a007820044120470d000b200241d6006a20022d005a3a0000200241c8006a200241ef006a290000370300200241d0006a200241f7006a2d00003a0000200220022f01583b0154200220022900673703404100210120022800632104200228005f2105200228005b21030c070b41012101200441ff01710d040c050b20052006418ca9c0001044000b200241003a00780c090b200241003a00780c060b200241003a00780c030b200241003a00780b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410521060c070b200041063a00000c070b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410421060c050b200041063a00000c050b0b2002413c6a41026a2206200241d4006a41026a2d00003a0000200241286a41086a220a200241c0006a41086a290300370300200241286a41106a220b200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a20062d00003a0000200241106a41086a200a290300370300200241106a41106a200b2d00003a0000200220022f013c3b012420022002290328370310410321060c030b200041063a00000c030b0b410221062002413c6a41026a220a200241d4006a41026a2d00003a0000200241286a41086a220b200241c0006a41086a290300370300200241286a41106a220c200241c0006a41106a2d00003a0000200220022f01543b013c20022002290340370328024020010d00200241246a41026a200a2d00003a0000200241106a41086a200b290300370300200241106a41106a200c2d00003a0000200220022f013c3b0124200220022903283703100c010b200041063a00000c010b200020063a0000200020092f00003b00012000410c6a2004360000200041086a2005360000200041046a2003360000200041106a2008290000370000200041216a20072f00003b0000200041036a200941026a2d00003a0000200041186a200841086a290000370000200041206a200841106a2d00003a0000200041236a200741026a2d00003a00000b20024180016a24000b9e0c04047f017e0a7f037e230041b0026b2201240020014188026a41186a420037030020014188026a41106a2202420037030020014188026a41086a22034200370300200142003703880241f4c7c600ad4280808080800184100c220429000021052003200441086a29000037030020012005370388022004102341a084c700ad4280808080a00184100c22042900002105200141e8016a41086a2206200441086a290000370300200120053703e80120041023200220012903e8012205370300200141086a41086a2003290300370300200141086a41106a2005370300200141086a41186a200629030037030020012001290388023703082001412036022c2001200141086a360228200141306a200141086aad42808080808004841010108b010240024002400240200128023022070d00410021030c010b200128023421082001200141306a41086a280200360254200120073602502001200141d0006a1088010240024002402001280200450d0041002103200141003602400c010b200128020422092001280254220a4106762203200320094b1b22034106742204417f4c0d030240024020030d004108210b0c010b20041021220b450d050b4100210c200141003602602001200336025c2001200b36025802400240024002402009450d004100210d0340200a450d042001200a417f6a220436025420012001280250220241016a36025020022d0000220341014b0d04420021050240024020030e020100010b41002103200141003a00a802200a417f6a2106034020062003460d0420014188026a20036a200220036a220441016a2d00003a00002001200441026a3602502001200341016a22043a00a8022004210320044120470d000b200141e8016a41086a220620014188026a41086a290300370300200141e8016a41106a220e20014188026a41106a290300370300200141e8016a41186a220f20014188026a41186a29030037030020012001290388023703e80120012004417f73200a6a220336025420034110490d042001200220046a220341116a22023602502001200a20046b220a416f6a220436025420044108490d04200341096a2900002110200341016a29000021112001200a41676a22043602542001200341196a360250200229000022124280025a0d04200141a8016a41086a2006290300220537030020014188016a41186a200f29030037030020014188016a41106a200e29030037030020014188016a41086a2005370300200120012903e80122053703a8012001200537038801420121050b200d41016a210d200141e8006a41186a220220014188016a41186a290300370300200141e8006a41106a220620014188016a41106a290300370300200141e8006a41086a220a20014188016a41086a29030037030020012001290388013703680240200c200128025c470d00200141d8006a200c4101109f012001280258210b2001280260210c0b200b200c4106746a2203201137030820032005370300200341106a2010370300200341186a2012370300200341206a2001290368370300200341286a200a290300370300200341306a2006290300370300200341386a20022903003703002001200c41016a220c3602602004210a200d2009470d000b0b200141c0006a41086a200141d8006a41086a2802003602002001200129035822053703402005a72203450d03200129024421050c040b20014100360254200341ff0171450d00200141003a00a8020b200141a8016a41086a200141c8016a41086a290300370300200141a8016a41106a200141c8016a41106a2903003703000b4100210320014100360240200128025c41ffffff1f71450d00200b10230b200141003602f001200142013703e8012001410a3602cc012001200141286a3602c8012001200141e8016a3602a8012001419c026a41013602002001420137028c0220014180c5c600360288022001200141c8016a36029802200141a8016a4184a5c20020014188026a10311a20013502f00142208620013502e80184100a024020012802ec01450d0020012802e80110230b0b2008450d00200710230b0240024020030d0020004100360208200042083702000c010b20002005370204200020033602000b200141b0026a24000f0b1032000b1033000bae0503027f017e047f230041d0006b2202240041f4c7c600ad4280808080800184100c22032900002104200241086a200341086a290000370300200220043703002003102341e082c700ad4280808080a00184100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000b934f07087f017e017f017e017f027e4f7f230041f0066b220324002003200236021c20032001360218200341206a2002ad4220862001ad841010108b0102400240200328022022040d00200041023a00a4020c010b200328022421052003200341206a41086a280200360234200320043602302003200341306a3602a802200341106a200341a8026a10a3030240024020032802100d004108210602400240200328021422074180012007418001491b2201450d00200141057410212206450d010b200341003602a806200320013602a406200320063602a0060240024002400240024002402007450d00200341d0066a2108410021010340200341003602c806200341c8066a2003280230220920032802342202410420024104491b220a10a1051a20032002200a6b36023420032009200a6a3602300240200241034b0d00200341c8066a200a6a41004104200a6b10a0051a0b20033502c806210b200341003a00c806200328023422022002410047220a490d02200341c8066a20032802302209200a10a1051a20032002200a6b220c36023420032009200a6a220a36023002400240024020020d004200210d0c010b20032d00c806220241064b0d044200210d02400240024002400240024020020e0707000102030405070b200341c8066a200c4110200c4110491b22026a41004100411020026b22092002410f4b1b10a005210e200341c8066a200a200210a1051a2003200c20026b3602342003200a20026a3602300240200c410f4b0d00200e4100200910a0051a0b2008290300210f20032903c80621104201210d0c060b4202210d0c040b4203210d0c030b4204210d0c020b4205210d0c010b4206210d0b0b0240200120032802a406470d00200341a0066a2001410110970120032802a006210620032802a80621010b200620014105746a2202200d3703082002200b370300200241186a200f370300200241106a20103703002003200141016a22013602a8062007417f6a22070d000b0b2006450d0620032902a406210d200341d0066a220a4200370300200342003703c806200341c8066a2003280230220720032802342201411020014110491b220210a1051a2003200120026b3602342003200720026a36023002402001410f4b0d00200341c8066a20026a4100411020026b10a0051a0b200a290300210f20032903c8062110200341086a200341a8026a10a30320032802080d03200328020c2209413820094138491b22110d014104210a0c020b20032802a40641ffffff3f71450d0520061023410221010c060b201141c8006c1021220a450d030b41002102200341003602a0042003201136029c042003200a36029804024002400240024002400240024002402009450d00200341a0066a410c6a2112200341a0066a4101722113410021020340200341a0066a200341a8026a1090050240024020032d00a00622074106470d00410621070c010b2003419c066a41026a2208201341026a2d00003a000020034180066a41086a220e201241086a29020037030020034180066a41106a2214201241106a290200370300200320132f00003b019c06200320122902003703800620032802a406210c20032802a8062101200341c8066a200341a8026a109005024020032d00c8064106470d00024020074101470d002001450d00200c10230b410621070c010b200341fc056a41026a20082d00003a0000200341e0056a41086a200e290300370300200341e0056a41106a2014290300370300200341b8056a41086a200341c8066a41086a290300370300200341b8056a41106a200341c8066a41106a290300370300200341b8056a41186a200341c8066a41186a290300370300200341b8056a41206a200341c8066a41206a280200360200200320032f019c063b01fc0520032003290380063703e005200320032903c8063703b80520012115200c21160b200341b4056a41026a2201200341fc056a41026a2d00003a000020034198056a41086a220c200341e0056a41086a29030037030020034198056a41106a2208200341e0056a41106a290300370300200341f0046a41086a220e200341b8056a41086a290300370300200341f0046a41106a2214200341b8056a41106a290300370300200341f0046a41186a2217200341b8056a41186a290300370300200341f0046a41206a2218200341b8056a41206a280200360200200320032f01fc053b01b405200320032903e00537039805200320032903b8053703f00420074106460d02200341ec046a41026a221120012d00003a0000200341d0046a41086a2219200c290300370300200341d0046a41106a220c2008290300370300200341a8046a41086a2208200e290300370300200341a8046a41106a220e2014290300370300200341a8046a41186a22142017290300370300200341a8046a41206a22172018280200360200200320032f01b4053b01ec0420032003290398053703d004200320032903f0043703a80402402002200328029c04470d0020034198046a2002410110a101200328029804210a20032802a00421020b200a200241c8006c6a220120073a0000200141086a2015360000200141046a2016360000200141036a20112d00003a0000200120032f01ec043b0001200141146a20192903003700002001411c6a200c2903003700002001410c6a20032903d004370000200141246a20032903a804370000200141346a200e2903003700002001412c6a20082903003700002001413c6a2014290300370000200141c4006a20172802003600002003200241016a22023602a0042009417f6a22090d000b200328029c0421110b200a450d07200341c8066a200341a8026a10900520032d00c80622194106460d01200341b4056a41026a20032d00cb063a0000200341e0056a41086a200341dc066a2201290200370300200341e0056a41106a200341e4066a2207290200370300200320032f00c9063b01b4052003200341d4066a22092902003703e005200341c8066a41086a220c280200211220032802cc062115200341c8066a200341a8026a10900520032d00c80622164106460d02200341fc056a41026a20032d00cb063a000020034180066a41086a200129020037030020034180066a41106a2007290200370300200320032f00c9063b01fc052003200929020037038006200c280200211320032802cc06211a200341c8066a200341a8026a10900520032d00c806221b4106460d032003419c066a41026a20032d00cb063a0000200341a8046a41086a200341dc066a2201290200370300200341a8046a41106a200341e4066a2207290200370300200320032f00c9063b019c062003200341d4066a22092902003703a804200341c8066a41086a220c280200211c20032802cc06211d200341c8066a200341a8026a10900520032d00c806221e4106460d0420034198046a41026a20032d00cb063a0000200341f0046a41086a2001290200370300200341f0046a41106a2007290200370300200320032f00c9063b019804200320092902003703f004200c280200211f20032802cc062120200341c8066a200341a8026a10900520032d00c80622214106470d050240201e4101470d00201f450d00202010230b0240201b4101470d00201c450d00201d10230b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d07201141c8006c0d060c070b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b200328029c042201450d06200141c8006c0d050c060b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d05201141c8006c0d040c050b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d04201141c8006c0d030c040b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d03201141c8006c0d020c030b0240201b4101470d00201c450d00201d10230b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d02201141c8006c0d010c020b200341d2046a20032d00cb063a0000200341b8056a41086a200341dc066a290200370300200341c8056a200341e4066a290200370300200320032f00c9063b01d0042003200341d4066a2902003703b805200341c8066a41086a280200212220032802cc062123200341003a00c806024002402003280234220120014100472207490d00200341c8066a20032802302209200710a1051a2003200120076b220c3602342003200920076a22073602300240024020010d00410021010c010b20032d00c806220941014b0d0141002101024020090e020100010b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621240c010b41002124200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621250c010b41002125200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621260c010b41002126200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621270c010b41002127200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621280c010b41002128200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621290c010b41002129200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c806212a0c010b4100212a200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c806212b0c010b4100212b200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c806212c0c010b4100212c200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c806212d0c010b4100212d200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c806212e0c010b4100212e200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c806212f0c010b4100212f200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621300c010b41002130200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621310c010b41002131200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621320c010b41002132200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621330c010b41002133200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621340c010b41002134200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b220c3602342003200720016a2207360230024002402009450d0020032d00c80621350c010b41002135200341003a00c8060b200341003a00c806200c200c4100472201490d01200341c8066a2007200110a1051a2003200c20016b22093602342003200720016a220736023002400240200c450d0020032d00c80621360c010b41002136200341003a00c8060b200341003a00c806200920094100472201490d01200341c8066a2007200110a1051a2003200920016b3602342003200720016a360230024002402009450d0020032d00c80621370c010b41002137200341003a00c8060b410121010b200341c8066a200341a8026a10900520032d00c80622384106460d0120034198056a41026a220720032d00cb063a0000200341a0066a41086a2209200341dc066a290200370300200341a0066a41106a220c200341e4066a290200370300200320032f00c9063b0198052003200341d4066a2902003703a006200341c8066a41086a2208280200213920032802cc06213a200341c8066a200341a8026a10900520032d00c8064106470d04024020384101470d002039450d00203a10230b024020214101470d002022450d00202310230b0240201e4101470d00201f450d00202010230b0240201b4101470d00201c450d00201d10230b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d03201141c8006c0d020c030b024020214101470d002022450d00202310230b0240201e4101470d00201f450d00202010230b0240201b4101470d00201c450d00201d10230b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d02201141c8006c0d010c020b024020214101470d002022450d00202310230b0240201e4101470d00201f450d00202010230b0240201b4101470d00201c450d00201d10230b024020164101470d002013450d00201a10230b024020194101470d002012450d00201510230b02402002450d00200a200241c8006c6a2102200a21010340024020012d00004101470d00200141086a280200450d00200141046a28020010230b0240200141246a2d00004101470d002001412c6a280200450d00200141286a28020010230b200141c8006a22012002470d000b0b2011450d01201141c8006c450d010b200a10230b200d42ffffff3f83500d0220061023410221010c030b200341b0026a41206a220e200341c8066a41206a2214280200360200200341b0026a41186a2217200341c8066a41186a2218290300370300200341b0026a41106a223b200341c8066a41106a223c290300370300200341b0026a41086a223d200829030037030020034192046a41026a223e200341b4056a41026a223f2d00003a0000200341f8036a41086a2240200341e0056a41086a2241290300370300200341f8036a41106a2242200341e0056a41106a2243290300370300200320032903c8063703b002200320032f01b4053b019204200320032903e0053703f803200341f4036a41026a2244200341fc056a41026a22452d00003a0000200320032f01fc053b01f403200341d8036a41106a224620034180066a41106a2247290300370300200341d8036a41086a224820034180066a41086a224929030037030020032003290380063703d803200341d4036a41026a224a2003419c066a41026a224b2d00003a0000200320032f019c063b01d403200341b8036a41106a224c200341a8046a41106a224d290300370300200341b8036a41086a224e200341a8046a41086a224f290300370300200320032903a8043703b803200341b4036a41026a225020034198046a41026a22512d00003a0000200320032f0198043b01b40320034198036a41106a2252200341f0046a41106a225329030037030020034198036a41086a2254200341f0046a41086a2255290300370300200320032903f0043703980320034194036a41026a2256200341d0046a41026a22572d00003a0000200320032f01d0043b019403200341f8026a41106a2258200341b8056a41106a2259290300370300200341f8026a41086a225a200341b8056a41086a225b290300370300200320032903b8053703f802200341f4026a41026a225c20072d00003a0000200320032f0198053b01f402200341d8026a41106a225d200c290300370300200341d8026a41086a225e2009290300370300200320032903a0063703d802200341ac026a41026a225f20034195046a41026a2d00003a0000200320032f0095043b01ac022007203e2d00003a0000200320032f0192043b019805200c204229030037030020092040290300370300200320032903f8033703a006205720442d00003a0000200320032f01f4033b01d00420592046290300370300205b2048290300370300200320032903d8033703b8052051204a2d00003a0000200320032f01d4033b0198042053204c2903003703002055204e290300370300200320032903b8033703f004204b20502d00003a0000200320032f01b4033b019c06204d2052290300370300204f205429030037030020032003290398033703a804204520562d00003a0000200320032f0194033b01fc05204720582903003703002049205a290300370300200320032903f80237038006203f205c2d00003a0000200320032f01f4023b01b4052043205d2903003703002041205e290300370300200320032903d8023703e0052014200e28020036020020182017290300370300203c203b2903003703002008203d290300370300200320032903b0023703c806200341ec046a41026a205f2d00003a0000200320032f01ac023b01ec040c020b1033000b410221010b200341a4026a41026a20034198056a41026a2d00003a000020034188026a41086a200341a0066a41086a29030037030020034188026a41106a223b200341a0066a41106a220729030037030020034184026a41026a200341d0046a41026a2d00003a0000200341e8016a41086a200341b8056a41086a290300370300200341e8016a41106a223c200341b8056a41106a2209290300370300200320032f0198053b01a402200320032903a00637038802200320032f01d0043b018402200320032903b8053703e801200341e4016a41026a20034198046a41026a2d00003a0000200341c8016a41086a200341f0046a41086a290300370300200341c8016a41106a223d200341f0046a41106a220c290300370300200341c4016a41026a2003419c066a41026a2d00003a0000200341a8016a41086a200341a8046a41086a290300370300200341a8016a41106a223e200341a8046a41106a2208290300370300200320032f0198043b01e401200320032903f0043703c801200320032f019c063b01c401200320032903a8043703a801200341a4016a41026a200341fc056a41026a2d00003a000020034188016a41106a223f20034180066a41106a220e29030037030020034188016a41086a20034180066a41086a29030037030020034184016a41026a200341b4056a41026a2d00003a0000200341e8006a41106a2240200341e0056a41106a290300370300200341e8006a41086a200341e0056a41086a290300370300200320032f01fc053b01a401200320032903800637038801200320032f01b4053b018401200320032903e005370368200341c0006a41206a2241200341c8066a41206a2214280200360200200341c0006a41186a2242200341c8066a41186a2217290300370300200341c0006a41106a2243200341c8066a41106a2218290300370300200341c0006a41086a200341c8066a41086a290300370300200320032903c8063703402003413c6a41026a200341ec046a41026a2d00003a0000200320032f01ec043b013c0240024020014102470d00200341003602a806200342013703a0062003410a3602bc052003200341186a3602b8052003200341a0066a3602f004200341dc066a4101360200200342013702cc0620034180c5c6003602c8062003200341b8056a3602d806200341f0046a4184a5c200200341c8066a10311a20033502a80642208620033502a00684100a024020032802a406450d0020032802a00610230b410221010c010b200341e0056a41026a2244200341a4026a41026a2d00003a0000200341a0066a41086a224520034188026a41086a2903003703002007203b29030037030020034198056a41026a223b20034184026a41026a2d00003a0000200341b8056a41086a2246200341e8016a41086a2903003703002009203c290300370300200320032f01a4023b01e00520032003290388023703a006200320032f0184023b019805200320032903e8013703b805200341d0046a41026a223c200341e4016a41026a2d00003a0000200341f0046a41086a2247200341c8016a41086a290300370300200c203d290300370300200341f8036a41026a223d200341c4016a41026a2d00003a0000200341a8046a41086a2248200341a8016a41086a2903003703002008203e290300370300200320032f01e4013b01d004200320032903c8013703f004200320032f01c4013b01f803200320032903a8013703a804200341d8036a41026a223e200341a4016a41026a2d00003a0000200341b0026a41106a2249203f290300370300200341b0026a41086a223f20034188016a41086a290300370300200341b8036a41026a224a20034184016a41026a2d00003a0000200e204029030037030020034180066a41086a2240200341e8006a41086a290300370300200320032f01a4013b01d80320032003290388013703b002200320032f0184013b01b8032003200329036837038006201420412802003602002017204229030037030020182043290300370300200341c8066a41086a2241200341c0006a41086a290300370300200320032903403703c80620034198036a41026a22422003413c6a41026a2d00003a0000200320032f013c3b0198032000200f37030820002010370300200020193a002820002002360224200020113602202000200a36021c2000200d37021420002006360210200020123602302000201536022c200020032f01e0053b00292000412b6a20442d00003a0000200020032903a0063702342000413c6a2045290300370200200041c4006a2007290300370200200020163a004c200041cf006a203b2d00003a0000200020032f0198053b004d200020133602542000201a360250200041e8006a2009290300370200200041e0006a2046290300370200200020032903b8053702582000201b3a0070200041f3006a203c2d00003a0000200020032f01d0043b00712000201c3602782000201d3602742000418c016a200c29030037020020004184016a2047290300370200200020032903f00437027c2000201e3a00940120004197016a203d2d00003a0000200020032f01f8033b0095012000201f36029c012000202036029801200041b0016a2008290300370200200041a8016a2048290300370200200020032903a8043702a001200020213a00b801200041bb016a203e2d00003a0000200020032f01d8033b00b901200020223602c001200020233602bc01200041d4016a2049290300370200200041cc016a203f290300370200200020032903b0023702c401200020383a00dc01200041df016a204a2d00003a0000200020032f01b8033b00dd01200020393602e4012000203a3602e001200041f8016a200e290300370200200041f0016a204029030037020020002003290380063702e801200041a0026a201428020036020020004198026a201729030037020020004190026a201829030037020020004188026a2041290300370200200020032903c80637028002200041b8026a20373a0000200041b7026a20363a0000200041b6026a20353a0000200041b5026a20343a0000200041b4026a20333a0000200041b3026a20323a0000200041b2026a20313a0000200041b1026a20303a0000200041b0026a202f3a0000200041af026a202e3a0000200041ae026a202d3a0000200041ad026a202c3a0000200041ac026a202b3a0000200041ab026a202a3a0000200041aa026a20293a0000200041a9026a20283a0000200041a8026a20273a0000200041a7026a20263a0000200041a6026a20253a0000200020243a00a502200041bb026a20422d00003a0000200041b9026a20032f0198033b00000b200020013a00a4022005450d00200410230b200341f0066a24000be90404017f017e077f027e230041206b22022400200220001092052002350208210320022802002104200241003602182002420137031020012802102100200141186a2802002205200241106a10610240024002402005450d00200020054105746a21060340200028020021070240024020022802142208200228021822056b4104490d00200228021021090c010b200541046a22092005490d032008410174220a2009200a20094b1b220a4100480d030240024020080d000240200a0d00410121090c020b200a102122090d010c060b200228021021092008200a460d0020092008200a10252209450d050b2002200a360214200220093602100b200920056a20073600002002200541046a360218200041086a200241106a10e3022006200041206a2200470d000b0b200141086a290300210b2001290300210c0240024020022802142208200228021822006b4110490d00200041106a2105200228021021090c010b200041106a22052000490d01200841017422092005200920054b1b22074100480d010240024020080d00024020070d00410121090c020b200710212209450d040c010b2002280210210920082007460d0020092008200710252209450d030b20022007360214200220093602100b200920006a2200200b3700082000200c370000200220053602182001411c6a2200200241106a10e2022002280214210520034220862004ad84200235021842208620022802102209ad84100e02402005450d00200910230b02402002280204450d00200410230b0240200141146a28020041ffffff3f71450d00200128021010230b2000108f05200241206a24000f0b102c000b102a000bae0503027f017e047f230041d0006b2202240041f4c7c600ad4280808080800184100c22032900002104200241086a200341086a290000370300200220043703002003102341d083c700ad4280808080e00084100c22032900002104200241106a41086a200341086a2900003703002002200437031020031023024002400240024002400240412010212203450d0020032001290000370000200341186a200141186a290000370000200341106a200141106a290000370000200341086a200141086a29000037000020022003ad4280808080800484100d220129000037033020011023200241c4006a200341206a360200200241003a0048200220033602402002200241306a41086a36023c2002200241306a360238200241206a200241386a1065200310232002280228220541206a2201417f4c0d0120022802202106024002402001450d00200110212203450d022001410f4d0d01200121070c050b200141017422034110200341104b1b2207102122030d040c060b200141017422084110200841104b1b220741004e0d020c040b1033000b1032000b20012007460d0020032001200710252203450d020b20032002290300370000200341086a200241086a2903003700000240024020074170714110460d00200721080c010b200741017422084120200841204b1b22084100480d0120072008460d0020032007200810252203450d020b20032002290310370010200341186a200241106a41086a29030037000002400240200841606a2005490d00200821070c010b2005415f4b0d01200841017422072001200720014b1b22074100480d0120082007460d0020032008200710252203450d020b200341206a2006200510a1051a20002001360208200020073602042000200336020002402002280224450d00200610230b200241d0006a24000f0b102c000b102a000bf80202027f037e230041e0006b220324002003200236020c20032001360208200341106a2002ad4220862001ad841010108b0102400240200328021022010d00200041003602100c010b200328021421042003200341106a41086a28020022023602242003200136022002400240024020024110490d002003200241706a3602242003200141106a360220200141086a290000210520012900002106200341c8006a200341206a10cf01200328024822020d010b20034100360230200342013703282003410a36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c20034180c5c6003602482003200341386a360258200341c4006a4184a5c200200341c8006a10311a2003350230422086200335022884100a0240200328022c450d00200328022810230b200041003602100c010b200329024c2107200020053703082000200637030020002007370214200020023602100b2004450d00200110230b200341e0006a24000b13002000410c360204200041a08cc7003602000bad0302027f037e230041d0006b22042400200441386a20024201200242015620034200522003501b22051b22022003420020051b220342ffff03420010a705200441286a20042903382206200441386a41086a290300220742ffff03420010a605200441186a20022003200620022004290328852003200441286a41086a2903008584420052ad7c22084201200842015620072008200654ad7c22064200522006501b22051b22082006420020051b220610a7050240024002402004290318220742808004544100200441186a41086a290300501b450d00200441086a200220002002200054200320015420032001511b22051b2003200120051b2008200610a7052004290308220342808004544100200441086a41086a290300501b450d012007a741ffff037122050d0241f0a6c700411941f4aac700102d000b2004411136024c20044184abc7003602484188a9c70041de00200441c8006a41f8a8c70041e8a9c7001034000b2004411136024c20044184abc7003602484188a9c70041de00200441c8006a41f8a8c70041e4aac7001034000b200441d0006a24002003a741ffff037141ffff036c20056e0bde17021e7f037e230041e0036b22032400200228020821042002280200210520022802042106200341186a2207200141206a290000370300200341106a2208200141186a290000370300200341086a2209200141106a290000370300200320012900083703002006410174210a2003410772210b200341c8016a41186a210c200341c8016a410c6a210d200341c8016a41206a210e2001280204210f20012802002110200421024100211141002112024002400240024002400240024002400240024002400240024002400240024002400240024002400340200420126a22134101762101024002402013410171450d0020062001490d03200120064f0d05200341013a00d001200320053602c801200320013602cc012003200520016a2d000041f001713a00d1010c010b20062001490d03200341003a00d001200320013602cc01200320053602c8010b200341b8036a20102003200341c8016a200f28020c11050002400240024020032802b80322140d00200341c8016a41086a2202200341086a290300370300200341c8016a41106a2206200341106a290300370300200341c8016a41186a2213200341186a290300370300200320032903003703c8014130102122010d010c170b20032802bc032115200341c8016a201420032802c00310a50420032d00c8014101460d13201141016a21110c010b200120032903c80137000120012003290020370021200120114100473a0000200141096a2002290300370000200141116a2006290300370000200141196a2013290300370000200141286a200341276a29000037000020004101360200200020013602040c140b034020032802e401211620032802e001211720032802dc01211820032802d801211920032802d401211320032802d001211a20032802cc012101200341206a200e41a80110a1051a200328029403211b200328029003211c024002400240024020010e05150f000102150b410021010240201341017420196b221d200a20026b221b201b201d4b1b221e450d000340200220016a221b410176221c20064f0d0a201920016a221f410176222020134f0d0b2005201c6a2d0000221c410f71201c41f00171410476201b4101711b201a20206a2d0000221b410f71201b410476201f4101711b470d01200141016a2201201e490d000b0b02402001201d460d00200042003702002015450d180c170b201d21010c020b200320163602dc01200320173602d801200320183602d401200320193602d001200320133602cc012003201a3602c801200c200341206a41a80110a1051a02400240200a2002460d00200241017622012006490d0120012006418898c7001030000b02400240201c0d00410021010c010b201b417f4c0d1302400240201b0d00200342003703b80341012101410021020c010b201b10212201450d15200341003602bc032003201b3602b803201b21020b2001201c200210a1051a2003201b3602bc0320032903b80321210b20002001360204200041086a20213702000c0d0b0240200341c8016a200520016a2d00002201410f71200141047620024101711b410c6c6a220128020022184102470d00200041003602040c0d0b20012802042117200141086a28020021164101211d410121010c010b20032802a003211e200328029c03211d2003280298032101200320163602d001200320173602cc01200320183602c801200d200341206a41a80110a1051a20032001360284032003201b360280032003201c3602fc02410021010240201341017420196b2216200a20026b2218201820164b1b2217450d000340200220016a221b410176221c20064f0d0a201920016a221f410176222020134f0d0b2005201c6a2d0000221c410f71201c41f00171410476201b4101711b201a20206a2d0000221b410f71201b410476201f4101711b470d01200141016a22012017490d000b0b0240024002400240024020012016470d0020182016470d01201d0d02410021010c030b200041003602040c0e0b201620026a220141017622132006490d0220132006418898c7001030000b201e417f4c0d1202400240201e0d00200342003703b80341012101410021020c010b201e10212201450d14200341003602bc032003201e3602b803201e21020b2001201d200210a1051a2003201e3602bc0320032903b80321210b20002001360204200041086a20213702000c0b0b0240200341c8016a200520136a2d00002213410f71201341047620014101711b410c6c6a221328020022184102470d00200041003602040c0b0b201641016a211d201641016a210120132802042117201341086a28020021160b200120126a21122002201d6a210202402018450d00200341c8016a2017201610a50420032d00c8014101460d130c010b0b0240024020164120460d00200341c8016a41086a22192009290300370300200341c8016a41106a221a2008290300370300200c2007290300370300200320032903003703c8012016417f4c0d100240024020160d0041012101410021130c010b20162113201610212201450d120b20012017201310a105211b413010212201450d16200141043a0000200120032903c801370001200120032f00aa033b00212001201636002c200120133600282001201b360024200141096a2019290300370000200141116a201a290300370000200141196a200c290300370000200141236a200341aa036a41026a2d00003a0000410121130c010b201741026a2d000021132017410f6a2900002121201741176a29000021222017280003210120172f0000211920172900072123200c2017411f6a2d00003a0000200341c8016a41106a2022370300200341c8016a41086a2021370300200341aa036a41026a20133a0000200320233703c801200320193b01aa03410021130b200341dc036a41026a2219200341aa036a41026a2d00003a0000200341b8036a41086a221a200341c8016a41086a290300370300200341b8036a41106a221b200341c8016a41106a290300370300200341b8036a41186a221c200c280200360200200320032f01aa033b01dc03200320032903c8013703b803024020130d00200b20032903b803370000200b41086a201a290300370000200b41106a201b290300370000200b41186a201c2d00003a0000200320032f01dc033b010020032001360003200320192d00003a00022015450d01201410230c010b0b200041013602002000200136020420150d110c120b2001200641a8bcc0001043000b2001200641b8bcc0001043000b2001200641c8bcc0001030000b201c2006418898c7001030000b20202013418898c7001030000b201c2006418898c7001030000b20202013418898c7001030000b200041003602000c020b200041003602000c010b4100211e0240201341017420196b200a20026b2216470d004100211e41002101024002402016450d00410021010340201920016a221b410176221c20134f0d05200220016a221f410176222020064f0d06201a201c6a2d0000221c410f71201c41f00171410476201b4101711b200520206a2d0000221b410f71201b410476201f4101711b470d012016200141016a2201470d000c020b0b20012016470d010b2017417f4c0d040240024020170d00200342003703c8014101211e410021010c010b20171021221e450d06200341003602cc01200320173602c801201721010b201e2018200110a1051a200320173602cc0120032903c80121210b2000201e36020420004100360200200041086a20213702000b02402015450d00201410230b200341e0036a24000f0b201c2013418898c7001030000b20202006418898c7001030000b1032000b1033000b2000420037020020150d010c020b20032d00c9012102200341b8036a41086a2206200341086a290300370300200341b8036a41106a2213200341106a290300370300200341b8036a41186a2219200341186a290300370300200320032903003703b803413010212201450d02200141033a0000200120032903b803370001200120023a0021200120032901aa03370122200141096a2006290300370000200141116a2013290300370000200141196a2019290300370000200141286a200341b0036a29010037010020004101360200200020013602042015450d010b201410230b200341e0036a24000f0b102a000b8a0201057f024020002802102201450d00200041146a280200220241046a2103200120026a41016a21042002280200417f73418081828478712105200041186a280200210202400340024002402005450d00200521010c010b0340200320044f0d03200241c0016a210220032802002101200341046a220521032001418081828478712201418081828478460d000b2001418081828478732101200521030b2001417f6a2001712105200220016841037641306c6a220141246a280200450d00200128022010230c000b0b02402000280210220341086a200341056a490d00200341016aad42307e422088a71a0b200028021410230b02402000412c6a280200450d00200028022810230b0b130020004101360204200041f898c7003602000b3400200041b494c70036020420004100360200200041146a4102360200200041106a41d49cc700360200200041086a42093702000b130020004101360204200041a49fc7003602000b2d01017f02404108102122020d001033000b20004288808080800137020420002002360200200242b8173700000b1f0002402000280200450d00200041086a280200450d00200028020410230b0b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b3601017f02402002450d00200021030340200320012d00003a0000200341016a2103200141016a21012002417f6a22020d000b0b20000b7101017f0240024020012000490d002002450d01200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000c020b0b2002450d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5701017e02400240200341c000710d002003450d012001410020036b413f71ad8820022003413f71ad220486842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080b5701017e02400240200341c000710d002003450d0120012003413f71ad2204882002410020036b413f71ad86842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b7501027e200020034220882205200142208822067e200320027e7c200420017e7c200342ffffffff0f832203200142ffffffff0f8322017e2204422088200320067e7c22034220887c200342ffffffff0f83200520017e7c22034220887c37030820002003422086200442ffffffff0f83843703000b3e01017f230041106b2205240020052001200220032004410010a905200529030021012000200541086a29030037030820002001370300200541106a24000b4c01017f230041206b22052400200542003703182005420037031020052001200220032004200541106a10a905200529031021012000200529031837030820002001370300200541206a24000be20502037f067e230041306b2206240002400240024002400240024002400240024002402002500d002003500d012004500d02200479a7200279a76b2207413f4b0d0341ff0020076b2108200741016a21070c080b02402004500d0020050d040c060b024002402005450d0020034200510d0620054200370308200520012003823703000c010b20034200510d050b200120038021010c060b2004500d030240024002402001500d0020047b4201510d01200479a7200279a76b2207413e4b0d0241ff0020076b2108200741016a21070c090b02402005450d0020054200370300200520022004823703080b200220048021010c070b02402005450d002005200137030020052004427f7c2002833703080b200220047a423f838821010c060b2005450d040c020b024020037b4201510d0041bf7f200379a7200279a76b22076b2108200741c1006a21070c060b02402005450d002005420037030820052003427f7c2001833703000b20034201510d06200641206a2001200220037aa710a505200641286a2903002102200629032021010c060b2005450d020b2005200137030020052002370308420021010c020b00000b420021010b420021020c010b200620012002200841ff007110a405200641106a20012002200741ff007110a505200641086a2903002102200641106a41086a2903002109200629030021012006290310210a0240024020070d004200210b4200210c0c010b4200210c4200210d03402009420186200a423f8884220b200b427f8520047c200a4201862002423f8884220a427f85220b20037c200b54ad7c423f87220b2004837d200a200b200383220e54ad7d2109200a200e7d210a420020024201862001423f8884842102200d2001420186842101200b420183220b210d2007417f6a22070d000b0b02402005450d002005200a370300200520093703080b200c20024201862001423f8884842102200b20014201868421010b2000200137030020002002370308200641306a24000b0bb4ab070300418080c0000b0c318d0596a0101000a010100000419080c0000b85ab076361706163697479206f766572666c6f7700000034001000170000006e020000050000007372632f6c6962616c6c6f632f7261775f7665632e727300db0010004600000068010000130000001600000004000000040000001700000018000000190000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72001600000000000000010000001a000000c8001000130000004a020000050000007372632f6c6962616c6c6f632f666d742e72732f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f666d742f6d6f642e72737372632f6c6962616c6c6f632f7665632e7273292073686f756c64206265203c206c656e2028697320000074011000140000008801100017000000180f1000010000002101100013000000f10300000d000000696e73657274696f6e20696e6465782028697320292073686f756c64206265203c3d206c656e202869732000c8011000120000003401100016000000180f1000010000002101100013000000210400000d00000072656d6f76616c20696e6465782028697320000004021000140000008801100017000000180f1000010000002101100013000000330500000d000000656e6420647261696e20696e6465782028697320380210002000000058021000120000001600000000000000010000001b000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973203030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939000044031000060000004a03100022000000696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468207c03100016000000920310000d000000736c69636520696e64657820737461727473206174202062757420656e64732061742000030e100016000000040800002f0000005b2e2e2e5d000000180410000b000000ed0d1000160000005704100001000000cb0d10000e000000d90d100004000000dd0d1000100000005704100001000000180410000b00000023041000260000004904100008000000510410000600000057041000010000006279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f6620606096041000020000008004100016000000560400002400000080041000160000004c040000110000007372632f6c6962636f72652f666d742f6d6f642e72732e2eaa04100016000000540000001400000030787372632f6c6962636f72652f666d742f6e756d2e727300010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a840600280a1000200000000a0000001c000000280a1000200000001a000000280000007372632f6c6962636f72652f756e69636f64652f7072696e7461626c652e72730003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf55a80d100023000000520000003e00000000700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f000000000a80d1000230000004b00000028000000a80d10002300000057000000160000007372632f6c6962636f72652f756e69636f64652f756e69636f64655f646174612e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f6620607372632f6c6962636f72652f7374722f6d6f642e7273426f72726f774572726f72426f72726f774d75744572726f7270616e69636b6564206174200000690e1000010000006a0e1000030000001cd4110000000000680e100001000000680e1000010000003a27272c2020202020000000940e10001a0000006a01000026000000030e100016000000c30700002f0000007372632f6c6962636f72652f7374722f7061747465726e2e72730000c00e10001b00000052000000050000007372632f6c6962636f72652f736c6963652f6d656d6368722e72732c20000000160000000c000000040000001c0000001d0000001e0000002c0a00001600000004000000040000001f000000200000002100000028280a2c290a5d5b030e100016000000800700002f000000a50f1000260000006672616d655f737570706f72743a3a686173682f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f737570706f72742f7372632f686173682e7273496e76616c696420726576657273653a2068617368206c656e67746820746f6f2073686f7274001600000004000000040000002200000023000000240000001600000000000000010000002500000026000000270000006d61782d77656967687461637475616c5f7765696768743d48617368207461626c65206361706163697479206f766572666c6f77401010005b000000500000001b0000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6861736862726f776e2d302e362e332f7372632f7261772f6d6f642e727300ffffffff16000000000000000100000028000000290000002700000016000000000000000100000028000000290000002700000000000000541110000e00000000000000641110000100000000000000000000006c1110000100000000000000000000007411100006000000000000001cd411000000000000000000000000007c1110000100000000000000000000008411100007000000000000001cd411000000000000000000000000008c11100001000000000000004e6577417574686f7269746965730000071210000d000000e3111000240000005061757365640000bc11100027000000526573756d65640094111000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e417574686f726974794c69737400000000401210000700000000000000481210000300000000000000000000006012100003000000000000004f6666656e636500f049110004000000f44911000e00000031cf1100040000007812100055000000cd12100053000000201310004700000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c61737420656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c7365292e0000000000941310000a0000000000000050241000010000000000000000000000a013100002000000000000004e657753657373696f6e0000b0131000550000000514100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53746f72656452616e676574696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e009c1410006200000088000000120000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e332e302f7372632f636f6465632e72734572726f725377617070696e672064697361626c656426fb100042000000590300002200000026fb1000420000005303000020000000000000008c1510001400000000000000a0151000010000000000000000000000a8151000010000000000000000000000b01510001600000000000000a0151000010000000000000000000000c815100001000000000000005061726174687265616452656769737465726564baf01000060000000516100035000000506172617468726561644465726567697374657265640000d015100035000000205468652070617261746872656164206f662074686520737570706c696564204944207761732064652d726567697374657265642e204120706172617468726561642077617320726567697374657265643b20697473206e657720494420697320737570706c6965642e00004c16100069000000440000000d0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e72730000000000000000000000617474656d707420746f20646976696465206279207a65726f0000004c161000690000006d000000090000004c161000690000007e000000090000004c161000690000009c0000001b0000004c16100069000000d40100001c0000004c16100069000000d50100001c00000063616e6e6f74206669742061206e756d62657220696e746f20753132380000004c1610006900000090000000090000001600000000000000010000002a0000001600000000000000010000002b00000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564001600000008000000040000002c000000e517100070000000680000001b000000726573756c742063616e6e6f742066697420696e20753132382f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e727362616265736c6f744241424520696e686572656e742064617461206e6f7420666f756e640000008c1810006e000000cd0000000d0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e727300001600000000000000010000001a000000486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b2071656400004c1910007000000008010000090000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e72731600000000000000010000001a0000001cd411000000000072756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e67000000617474656d707420746f20646976696465206279207a65726f0000002c1a10006a0000005f0000002b0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e727348617368206e6f7420657175616cb41a100065000000f6030000130000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f72756e74696d652f7372632f7472616974732e7273426164206f726967696e43616e206e6f74206c6f6f6b75705472616e616374696f6e206469737061746368206973206d616e6461746f72793b207472616e73616374696f6e73206d6179206e6f742068617665206d616e6461746f727920646973706174636865732e412063616c6c20776173206c6162656c6c6564206173206d616e6461746f72792c2062757420726573756c74656420696e20616e204572726f722e5472616e73616374696f6e20776f756c642065786861757374732074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f724475706c69636174655265706f72744f6666656e63654572726f7200e424110066000000460000001f000000e4241100660000004f000000140000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e302f7372632f6e6962626c652f6e6962626c65736c6963652e7273000000c01d100065000000e10000000f000000c01d100065000000df0000000f000000c01d100065000000e10000003d000000781e1000570000004b00000042000000781e1000570000004a0000003e0000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e302f7372632f6e6f64652e727300781e1000570000006b00000022000000781e1000570000009a00000032000000781e100057000000aa0000003e00000050687261676d656e426f67757353636f726550687261676d656e426f6775734564676550687261676d656e426f67757353656c66566f746550687261676d656e536c61736865644e6f6d696e6174696f6e50687261676d656e426f6775734e6f6d696e6174696f6e50687261676d656e426f6775734e6f6d696e61746f7250687261676d656e426f677573436f6d7061637450687261676d656e426f67757357696e6e657250687261676d656e426f67757357696e6e6572436f756e74536e617073686f74556e617661696c61626c6550687261676d656e5765616b5375626d697373696f6e50687261676d656e4561726c795375626d697373696f6e416c7265616479436c61696d65644e6f74536f72746564416e64556e69717565496e76616c69644e756d6265724f664e6f6d696e6174696f6e73496e76616c6964457261546f52657761726446756e6465645461726765744e6f556e6c6f636b4368756e6b4e6f4d6f72654368756e6b73496e73756666696369656e7456616c7565496e76616c6964536c617368496e6465784475706c6963617465496e646578456d70747954617267657473416c7265616479506169726564416c7265616479426f6e6465644e6f7453746173684e6f74436f6e74726f6c6c65725761726e696e673a20412073657373696f6e206170706561727320746f2068617665206265656e20736b69707065642e626f6e64626f6e645f6578747261756e626f6e6477697468647261775f756e626f6e64656476616c69646174656e6f6d696e6174656368696c6c7365745f70617965657365745f636f6e74726f6c6c65727365745f76616c696461746f725f636f756e74666f7263655f6e6f5f65726173666f7263655f6e65775f6572617365745f696e76756c6e657261626c6573666f7263655f756e7374616b65666f7263655f6e65775f6572615f616c7761797363616e63656c5f64656665727265645f736c6173687061796f75745f6e6f6d696e61746f727061796f75745f76616c696461746f727061796f75745f7374616b6572737265626f6e647365745f686973746f72795f6465707468726561705f73746173687375626d69745f656c656374696f6e5f736f6c7574696f6e7375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e6564426f6e6465644c65646765724e6f6d696e61746f727356616c696461746f72536c617368496e4572614e6f6d696e61746f72536c617368496e457261536c617368696e675370616e735370616e536c617368536e617073686f7456616c696461746f7273536e617073686f744e6f6d696e61746f7273457261456c656374696f6e5374617475730000000000000014241000060000000000000064a511000200000000000000000000001c24100001000000000000000000000024241000050000000000000064a511000200000000000000000000002c241000010000000000000000000000342410001a000000000000005024100001000000000000000000000058241000020000000000000000000000682410000f00000000000000782410000100000000000000000000008024100001000000000000000000000056221000060000000000000064a5110002000000000000000000000088241000040000000000000000000000a8241000080000000000000064a51100020000000000000000000000b0241000010000000000000000000000b8241000090000000000000064a51100020000000000000000000000c4241000020000000000000052657761726400001f2710004f000000536c617368000000d6261000490000004f6c64536c617368696e675265706f727444697363617264656400007cff10000c0000007d26100047000000c4261000120000005374616b696e67456c656374696f6e006e2610000f0000002a261000440000006a251000230000001cd41100000000008d25100054000000e125100049000000556e626f6e646564452510002500000057697468647261776e000000d4241000570000002b2510001a00000020416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365602066726f6d2074686520756e6c6f636b696e672071756575652e20416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e20416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e204e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c2069742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e2041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e20636f6d7075746174696f6e206d6574686f642e456c656374696f6e436f6d7075746520416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64206e6f742062652070726f6365737365642e204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e20546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e20604163636f756e7449646020697320746865207374617368206163636f756e742e45726173526577617264506f696e74734572617356616c696461746f7252657761726445726173546f74616c5374616b654572726f723a2073746172745f73657373696f6e5f696e646578206d7573742062652073657420666f722063757272656e745f657261517565756564456c65637465644572617356616c696461746f725072656673457261735374616b657273436c6970706564457261735374616b657273556e6170706c696564536c617368657300000000000000092110000400000000000000442c10000300000000000000000000008c2c10001100000000000000000000000d2110000a00000000000000142d10000100000000000000000000002c2d1000100000000000000000000000172110000600000000000000ac2d1000010000000000000000000000c42d10001a00000000000000000000001d21100011000000000000001cd41100000000000000000000000000942e10001200000000000000000000002e2110000800000000000000242f10000100000000000000000000003c2f10000b0000000000000000000000362110000800000000000000942f1000010000000000000000000000ac2f10000b00000000000000000000003e21100005000000000000001cd41100000000000000000000000000043010000b00000000000000000000004321100009000000000000005c301000010000000000000000000000743010000b00000000000000000000004c2110000e00000000000000cc301000010000000000000000000000e43010000b00000000000000000000005a21100013000000000000003c311000010000000000000000000000543110000100000000000000000000006d2110000d000000000000001cd411000000000000000000000000005c3110000500000000000000000000007a2110000d000000000000001cd4110000000000000000000000000084311000060000000000000000000000872110001100000000000000b4311000010000000000000000000000cc311000010000000000000000000000982110000d00000000000000d4311000010000000000000000000000ec311000010000000000000000000000a521100014000000000000001cd41100000000000000000000000000f4311000050000000000000000000000b921100015000000000000001c3210000200000000000000000000004c321000070000000000000000000000ce211000100000000000000084321000020000000000000000000000b43210001e0000000000000000000000de2110001000000000000000a4331000010000000000000000000000bc331000130000000000000000000000ee2110000e0000000000000054341000020000000000000000000000843410000d0000000000000000000000fc2110000600000000000000ac2d1000010000000000000000000000ec3410000600000000000000000000000222100011000000000000001c35100001000000000000000000000034351000030000000000000000000000132210000a00000000000000d43110000100000000000000000000004c3510000700000000000000000000001d221000180000000000000084351000040000000000000000000000e43510004a00000000000000000000003522100021000000000000008435100004000000000000000000000034381000050000000000000000000000f85310000a00000000000000d9b211002300000000000000817f1100050000000000000009b7110015000000000000008554100005000000000000008a54100011000000ac5d100059000000055e1000210000001cd4110000000000265e10004c0000001cd4110000000000725e1000490000001cd41100000000008e5d1000100000001cd41100000000005fb211000b000000bb5e10003500000065ca100008000000f05e10001a0000001cd41100000000000a5f1000540000005e5f100050000000c7b211000c000000000000009e5d10000e0000000000000009b7110015000000685c100059000000c15c10000d0000001cd4110000000000ce5c100054000000225d1000590000007b5d1000130000001cd411000000000011531000550000001cd41100000000008e5d1000100000001cd41100000000005fb211000b000000665310003a00000065ca1000080000004e5c100010000000c7b211000c00000000000000817f1100050000000000000009b71100150000006958100055000000be58100040000000fe581000490000001cd4110000000000475910005200000099591000300000001cd4110000000000c95910004f000000185a10004f000000675a10003f0000001cd411000000000030541000550000001cd4110000000000a65a1000120000001cd4110000000000b85a1000260000001cd41100000000005fb211000b000000de5a100050000000a0531000260000002e5b100059000000875b10005c000000e35b100054000000375c1000170000004e5c1000100000005e5c10000a0000004f5610004b0000001cd41100000000009a5610004d000000e7561000130000001cd411000000000030541000550000001cd4110000000000fa561000130000001cd41100000000000d5710001b0000001cd41100000000005fb211000b00000028571000550000007d57100051000000ce5710003d0000000b5810005e000000c653100032000000c7b211000c000000000000003c5610000500000000000000415610000e000000025610003a0000001cd4110000000000da521000370000001cd411000000000030541000550000001cd41100000000005fb211000b000000665310003a000000a053100026000000c653100032000000c7b211000c00000000000000d35510000700000000000000da55100028000000e2541000440000001cd4110000000000da521000370000001cd411000000000030541000550000001cd41100000000005fb211000b00000026551000490000006f5510002e0000009d55100036000000c7b211000c0000009b541000320000001cd4110000000000da521000370000001cd411000000000030541000550000001cd41100000000005fb211000b000000665310003a000000cd54100015000000c653100032000000c7b211000c000000000000008554100005000000000000008a54100011000000025410002e0000001cd4110000000000da521000370000001cd411000000000030541000550000001cd41100000000005fb211000b000000665310003a000000a053100026000000c653100032000000c7b211000c00000000000000f85310000a00000000000000d9b2110023000000b6521000240000001cd4110000000000da521000370000001cd411000000000011531000550000001cd41100000000005fb211000b000000665310003a000000a053100026000000c653100032000000c7b211000c000000000000009ab611000300000000000000aa5210000c0000008a521000200000005e5210002c0000001cd41100000000005fb211000b0000004e52100010000000c7b211000c000000d35110005300000026521000280000001cd41100000000005fb211000b0000004e52100010000000c7b211000c00000000000000115010000a000000000000007671110011000000a051100033000000000000009b51100005000000000000009db611000c000000585110004300000003511000410000001cd41100000000005fb211000b0000004451100014000000c7b211000c000000000000004a45100003000000000000004d4510000800000000000000f65010000d00000000000000d2de1000080000003350100051000000845010001c000000a0501000410000001cd41100000000005fb211000b000000e150100015000000c7b211000c000000000000004a45100003000000000000004d4510000800000000000000115010000a000000000000001b501000180000008149100058000000d949100057000000304a1000310000001cd41100000000003d4c1000290000001cd4110000000000664c10003f000000c94a100059000000224b10004c000000a54c100056000000fb4c100049000000444d100022000000664d100042000000a84d100048000000f04d1000280000001cd41100000000006e4b100057000000c54b10000e0000001cd4110000000000d34b1000510000001cd41100000000005fb211000b000000184e1000570000006f4e100027000000964e10004e000000e44e1000370000001b4f1000500000006b4f100052000000bd4f100054000000c7b211000c000000000000004a45100003000000000000004d451000080000008149100058000000d949100057000000304a1000310000001cd4110000000000614a1000290000001cd41100000000008a4a10003f000000c94a100059000000224b10004c0000001cd41100000000006e4b100057000000c54b10000e0000001cd4110000000000d34b1000510000001cd41100000000005fb211000b000000244c1000190000001b81110031000000c7b211000c00000000000000724910000f000000000000009db611000c000000000000004a45100003000000000000004d4510000800000090471000440000001cd4110000000000d447100053000000274810004a000000714810004d0000001cd4110000000000be48100056000000144910001e0000001cd41100000000005fb211000b00000032491000400000001b81110031000000c7b211000c000000df461000380000001cd41100000000005fb211000b000000174710003c000000534710003d000000c7b211000c00000000000000bd4610001100000000000000ce461000110000008f461000190000001cd4110000000000a846100015000000554510004e000000a345100058000000fb451000300000001cd41100000000002b461000240000001cd41100000000004f4610004000000000000000f944100007000000000000000045100013000000000000001345100013000000000000002645100012000000000000003845100005000000000000003d4510000d000000000000004a45100003000000000000004d4510000800000055391000380000001cd41100000000008d3910000d0000009a391000450000001cd4110000000000df391000210000001cd4110000000000003a10002b0000001cd41100000000002b3a10003d000000683a100054000000bc3a10000c0000001cd4110000000000c83a10004a0000001cd4110000000000123b10002a0000001cd41100000000003c3b1000320000001cd41100000000006e3b100053000000c13b100047000000083c10004c000000543c100054000000a83c100058000000003d1000260000001cd4110000000000263d1000180000001cd41100000000003e3d100039000000773d10003e000000b53d10002b000000e03d100055000000353e1000570000008c3e1000100000009c3e100043000000df3e10001b0000001cd4110000000000fa3e1000300000001cd41100000000002a3f100059000000833f100059000000dc3f1000500000002c401000270000001cd41100000000005fb211000b0000005340100059000000ac401000390000001cd4110000000000e5401000590000003e411000520000001cd411000000000090411000380000001cd4110000000000c841100027000000ef4110002600000015421000270000003c421000370000001cd41100000000007342100045000000b84210003f000000f74210004200000039431000450000001cd41100000000007e4310004f000000cd431000570000001cd4110000000000244410002300000047441000220000001cd4110000000000694410002b00000094441000270000001cd4110000000000bb4410003e000000c7b211000c0000005c381000300000001cd41100000000008c38100057000000e3381000580000003b3910001a00000020556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e204e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e732066726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061207472616e73616374696f6e20696e2074686520626c6f636b2e205375626d697420612070687261676d656e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a20312e2069732076616c69642e20322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e207468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e204120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a20312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e20322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f64657320746865206564676520202020776569676874732e20426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205b6070687261676d656e605d2c206f7220616e79206f7468657220616c676f726974686d2e204164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a202d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e20426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e2054686520696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e64205b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f205b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c2063617573652074686520736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64206d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e204120736f6c7574696f6e2069732076616c69642069663a20302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602e20312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2e20322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e20332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d75737420202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e20323536202020206f722062696c6c696f6e292e20342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e20352e2048617320636f72726563742073656c662d766f7465732e204120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a20312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e20322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e20332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265202020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e63652920453a206e756d626572206f662065646765732e206d3a2073697a65206f662077696e6e657220636f6d6d69747465652e206e3a206e756d626572206f66206e6f6d696e61746f72732e20643a2065646765206465677265652028313620666f72206e6f772920763a206e756d626572206f66206f6e2d636861696e2076616c696461746f722063616e646964617465732e204e4f54453a20676976656e206120736f6c7574696f6e20776869636820697320726564756365642c2077652063616e20656e61626c652061206e657720636865636b2074686520656e7375726520607c457c203c206e202b206d602e20576520646f6e277420646f2074686973205f7965745f2c20627574206f7572206f6666636861696e20776f726b657220636f6465206578656375746573206974206e6f6e657468656c6573732e206d616a6f722073746570732028616c6c20646f6e6520696e2060636865636b5f616e645f7265706c6163655f736f6c7574696f6e60293a202d2053746f726167653a204f28312920726561642060456c656374696f6e537461747573602e202d2053746f726167653a204f2831292072656164206050687261676d656e53636f7265602e202d2053746f726167653a204f2831292072656164206056616c696461746f72436f756e74602e202d2053746f726167653a204f283129206c656e67746820726561642066726f6d2060536e617073686f7456616c696461746f7273602e202d2053746f726167653a204f287629207265616473206f6620604163636f756e7449646020746f2066657463682060736e617073686f745f76616c696461746f7273602e202d204d656d6f72793a204f286d2920697465726174696f6e7320746f206d61702077696e6e657220696e64657820746f2076616c696461746f722069642e202d2053746f726167653a204f286e2920726561647320604163636f756e7449646020746f2066657463682060736e617073686f745f6e6f6d696e61746f7273602e202d204d656d6f72793a204f286e202b206d2920726561647320746f206d617020696e64657820746f20604163636f756e7449646020666f7220756e2d636f6d706163742e202d2053746f726167653a204f286529206163636f756e7469642072656164732066726f6d20604e6f6d696e6174696f6e6020746f207265616420636f7272656374206e6f6d696e6174696f6e732e202d2053746f726167653a204f2865292063616c6c7320696e746f2060736c61736861626c655f62616c616e63655f6f665f657874656e6465646020746f20636f6e7665727420726174696f20746f207374616b65642e202d204d656d6f72793a206275696c645f737570706f72745f6d61702e204f2865292e202d204d656d6f72793a206576616c756174655f737570706f72743a204f2845292e202d2053746f726167653a204f2865292077726974657320746f2060517565756564456c6563746564602e202d2053746f726167653a204f28312920777269746520746f206051756575656453636f7265602054686520776569676874206f6620746869732063616c6c20697320312f31307468206f662074686520626c6f636b7320746f74616c207765696768742e77696e6e6572735665633c56616c696461746f72496e6465783e636f6d706163745f61737369676e6d656e7473436f6d7061637441737369676e6d656e747373636f726550687261676d656e53636f7265657261457261496e6465782052656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e6365206973207a65726f2e205468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e6520616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c6566742e20546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e202d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e2053657420686973746f72795f64657074682076616c75652e204f726967696e206d75737420626520726f6f742e6e65775f686973746f72795f6465707468436f6d706163743c457261496e6465783e205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e202d2054696d6520636f6d706c65786974793a204f2831292e20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602e202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e20506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e202d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f20202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e202d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e20546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966206974206973206e6f74206f6e65206f6620746865207374616b6572732e202d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292e76616c696461746f725f7374617368202a2a546869732065787472696e7369632077696c6c2062652072656d6f76656420616674657220604d6967726174696f6e457261202b20486973746f727944657074686020686173207061737365642c20676976696e67206f70706f7274756e69747920666f7220757365727320746f20636c61696d20616c6c2072657761726473206265666f7265206d6f76696e6720746f2053696d706c65205061796f7574732e20416674657220746869732074696d652c20796f752073686f756c642075736520607061796f75745f7374616b6572736020696e73746561642e2a2a204d616b65206f6e652076616c696461746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f66207468652076616c696461746f7220746f20706179206f75742e202d206065726160206d6179206e6f74206265206c6f776572207468616e206f6e6520666f6c6c6f77696e6720746865206d6f737420726563656e746c792070616964206572612e204966206974206973206869676865722c2020207468656e20697420696e6469636174657320616e20696e737472756374696f6e20746f20736b697020746865207061796f7574206f6620616c6c2070726576696f757320657261732e205741524e494e473a206f6e636520616e2065726120697320706179656420666f7220612076616c696461746f7220737563682076616c696461746f722063616e277420636c61696d20746865207061796f7574206f662070726576696f7573206572612e205741524e494e473a20496e636f727265637420617267756d656e747320686572652063616e20726573756c7420696e206c6f7373206f66207061796f75742e2042652076657279206361726566756c2e202d2054696d6520636f6d706c65786974793a204f2831292e204d616b65206f6e65206e6f6d696e61746f722773207061796f757420666f72206f6e65206572612e202d206077686f602069732074686520636f6e74726f6c6c6572206163636f756e74206f6620746865206e6f6d696e61746f7220746f20706179206f75742e202d206076616c696461746f72736020697320746865206c697374206f6620616c6c2076616c696461746f72732074686174206077686f6020686164206578706f7375726520746f20647572696e672060657261602c202020616c6f6e67736964652074686520696e646578206f66206077686f6020696e2074686520636c6970706564206578706f73757265206f66207468652076616c696461746f722e202020492e652e206561636820656c656d656e742069732061207475706c65206f66202020602876616c696461746f722c20696e646578206f66206077686f6020696e20636c6970706564206578706f73757265206f662076616c696461746f7229602e202020496620697420697320696e636f6d706c6574652c207468656e206c657373207468616e207468652066756c6c207265776172642077696c6c2062652070616964206f75742e2020204974206d757374206e6f742065786365656420604d41585f4e4f4d494e4154494f4e53602e202d204e756d626572206f662073746f726167652072656164206f6620604f2876616c696461746f727329603b206076616c696461746f7273602069732074686520617267756d656e74206f66207468652063616c6c2c202020616e6420697320626f756e64656420627920604d41585f4e4f4d494e4154494f4e53602e202d20456163682073746f72616765207265616420697320604f284e29602073697a6520616e64206465636f646520636f6d706c65786974793b20604e602069732074686520206d6178696d756d2020206e6f6d696e6174696f6e7320746861742063616e20626520676976656e20746f20612073696e676c652076616c696461746f722e202d20436f6d7075746174696f6e20636f6d706c65786974793a20604f284d41585f4e4f4d494e4154494f4e53202a206c6f674e29603b20604d41585f4e4f4d494e4154494f4e5360206973207468652020206d6178696d756d206e756d626572206f662076616c696461746f72732074686174206d6179206265206e6f6d696e6174656420627920612073696e676c65206e6f6d696e61746f722c206974206973202020626f756e646564206f6e6c792065636f6e6f6d6963616c6c792028616c6c206e6f6d696e61746f72732061726520726571756972656420746f20706c6163652061206d696e696d756d207374616b65292e76616c696461746f72735665633c28543a3a4163636f756e7449642c20753332293e2043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f72207468652060543a3a536c61736843616e63656c4f726967696e602e2070617373696e67207468652065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e202d204f6e652073746f726167652077726974652e736c6173685f696e646963657320466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e202d204f6e652073746f7261676520777269746520466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e737461736820536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e20466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c20626520726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e202d204e6f20617267756d656e74732e20466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e2054686520696465616c206e756d626572206f662076616c696461746f72732e436f6d706163743c7533323e202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e636f6e74726f6c6c6572202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e706179656552657761726444657374696e6174696f6e204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e202d20436f6e7461696e73206f6e6520726561642e204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c2077686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d49542e202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e746172676574735665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e707265667356616c696461746f7250726566732052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f2077686174657665722069742077616e74732e20456d697473206057697468647261776e602e2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e2020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c2077686963682069732020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602e205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e6420706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e20543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360292063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e65656420746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e20456d6974732060556e626f6e646564602e2053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e6365602920202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669612020206077697468647261775f756e626f6e646564602e202d204f6e6520444220656e7472792e203c2f7765696768743e2041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757020666f72207374616b696e672e20557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e20556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e20456d6974732060426f6e646564602e6d61785f6164646974696f6e616c2054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c20626520746865206163636f756e74207468617420636f6e74726f6c732069742e206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e202d20546872656520657874726120444220656e74726965732e204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e000000000000106c10000c00000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd411001c6c100000000000000000002c6c100007000000000000000100000000000000646c10000e00000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd41100746c10000000000000000000846c1000010000000000000001000000000000008c6c10001500000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd41100a46c10000000000000000000b46c100001000000000000000100000000000000bc6c10000d00000000000000000000007671110011000000000000000000000000000000000000000000000000000000000000001cd41100cc6c10000000000000000000dc6c100003000000000000000100000000000000562210000600000001050000000000009db611000c000000000000009db611000c000000000000000000000000000000000000001cd411003c7210000000000000000000f46c1000010000000000000000000000000000005c2210000600000001020000000000009db611000c00000000000000fc6c100029000000000000000000000000000000000000001cd411003c7210000000000000000000286d100001000000000000000000000000000000306d10000500000001050000000000009db611000c000000000000008a54100011000000000000000000000000000000000000001cd41100386d10000000000000000000486d1000010000000000000001000000000000003bd610000a00000001050000000000009db611000c00000000000000415610000e000000000000000000000000000000000000001cd41100dc6e10000000000000000000506d100001000000000000000100000000000000622210000a00000001050000000000009db611000c00000000000000586d100019000000000000000000000000000000000000001cd41100746d10000000000000000000846d1000010000000000000000000000000000008c6d10000a00000000000000000000004d45100008000000000000000000000000000000000000000000000000000000000000001cd41100007310000000000000000000986d100004000000000000000000000000000000b86d1000090000000000000000000000c16d10000d000000000000000000000000000000000000000000000000000000000000001cd41100d06d10000000000000000000e06d100004000000000000000000000000000000006e10001500000001050000000000004d45100008000000000000007cff10000c000000000000000000000000000000000000001cd41100007310000000000000000000186e100001000000000000000000000000000000062810000b00000002050500000000004d45100008000000000000009db611000c00000000000000206e100024000000000000001cd41100746e10000000000000000000446e100006000000000000000100000000000000f42710001200000002050500000000004d45100008000000000000009db611000c00000000000000206e100024000000000000001cd41100746e10000000000000000000846e10000b000000000000000100000000000000e22710001200000002050500000000004d45100008000000000000009db611000c00000000000000415610000e000000000000001cd41100dc6e10000000000000000000ec6e1000050000000000000001000000000000007e2710001300000001050000000000004d4510000800000000000000de4d11000c000000000000000000000000000000000000001cd41100ec7010000000000000000000146f1000030000000000000000000000000000006e2710001000000001050000000000004d45100008000000000000002c6f10001d000000000000000000000000000000000000001cd411004c6f100000000000000000005c6f100002000000000000000100000000000000912710000e00000001050000000000004d4510000800000000000000de4d11000c000000000000000000000000000000000000001cd41100f46f100000000000000000006c6f1000020000000000000001000000000000007c6f1000080000000000000000000000846f100007000000000000000000000000000000000000000000000000000000000000001cd411008c6f100000000000000000009c6f100001000000000000000100000000000000a46f10001300000000000000000000005f3a110007000000000000000000000000000000000000000000000000000000000000001cd41100b86f10000000000000000000c86f100003000000000000000100000000000000e06f1000130000000000000000000000de4d11000c000000000000000000000000000000000000000000000000000000000000001cd41100f46f100000000000000000000470100002000000000000000100000000000000112810001000000001050000000000004d4510000800000000000000147010002f000000000000000000000000000000000000001cd4110044701000000000000000000054701000010000000000000001000000000000005c7010000a0000000000000000000000667010001d000000000000000000000000000000000000000000000000000000000000001cd4110084701000000000000000000094701000040000000000000001000000000000006c2210001300000002050500000000004d45100008000000000000009db611000c00000000000000b470100017000000000000001cd41100cc7010000000000000000000dc701000020000000000000000000000000000007f2210001300000002050500000000004d45100008000000000000009db611000c00000000000000de4d11000c000000000000001cd41100ec7010000000000000000000fc70100001000000000000000000000000000000922210000d00000001050000000000009db611000c000000000000000471100017000000000000000000000000000000000000001cd411001c71100000000000000000002c711000010000000000000000000000000000009f2210000900000001050000000000003471100023000000000000005771100022000000000000000000000000000000000000001cd411007c71100000000000000000008c711000020000000000000001000000000000009c7110001600000000000000000000004d45100008000000000000000000000000000000000000000000000000000000000000001cd41100007310000000000000000000b471100001000000000000000000000000000000a82210001200000000000000000000007671110011000000000000000000000000000000000000000000000000000000000000001cd41100cc7110000000000000000000bc71100002000000000000000000000000000000ba2210001200000000000000000000007671110011000000000000000000000000000000000000000000000000000000000000001cd41100cc7110000000000000000000dc71100002000000000000000000000000000000d52710000d0000000000000000000000ec7110002a000000000000000000000000000000000000000000000000000000000000001cd411003c72100000000000000000001872100003000000000000000000000000000000307210000b00000000000000000000003d4510000d000000000000000000000000000000000000000000000000000000000000001cd411003c72100000000000000000004c72100001000000000000000000000000000000cc221000110000000000000000000000547210001e000000000000000000000000000000000000000000000000000000000000001cd4110074721000000000000000000084721000020000000000000001000000000000009472100015000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd41100ac7210000000000000000000bc72100001000000000000000100000000000000a48711000e0000000000000000000000b287110008000000000000000000000000000000000000000000000000000000000000001cd41100c47210000000000000000000d472100004000000000000000100000000000000f47210000a00000000000000000000004d45100008000000000000000000000000000000000000000000000000000000000000001cd4110000731000000000000000000010731000010000000000000000000000486973746f727944657074681600000000000000010000002d00000048821000230000001cd41100000000006b8210004e0000001cd4110000000000b982100043000000fc8210002b000000278310004400000056616c696461746f72436f756e7400001600000000000000010000002e0000001e8210002a0000004d696e696d756d56616c696461746f72436f756e740000001600000000000000010000002f000000ce81100050000000496e76756c6e657261626c657300000016000000000000000100000030000000fa801000560000005081100053000000a38110002b000000ba801000400000005374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e00000069801000510000005061796565000000160000000000000001000000310000003080100039000000df7f1000510000004e6f6d696e6174696f6e733c543a3a4163636f756e7449643e00000016000000000000000100000032000000867f10005900000043757272656e744572610000f67e1000170000001cd41100000000000d7f100059000000667f100020000000416374697665457261416374697665457261496e666f000016000000000000000100000032000000477e1000360000001cd41100000000007d7e10002e000000ab7e10004b00000045726173537461727453657373696f6e496e646578000000fb7d10004c0000004578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3edd7d10001e0000001cd41100000000007d7b1000580000001cd4110000000000d57b10002a0000008d7d10005000000016000000000000000100000033000000ff7b1000260000001cd4110000000000257c1000560000007b7c100037000000b27c100047000000f97c10003d0000001cd4110000000000367d1000570000001cd4110000000000d57b10002a0000008d7d10005000000016000000000000000100000034000000397b1000440000001cd41100000000007d7b1000580000001cd4110000000000d57b10002a000000af7a1000420000001cd4110000000000f17a100048000000457261526577617264506f696e74733c543a3a4163636f756e7449643e000000160000000000000001000000350000003b7a10002b000000667a100049000000b97910003b000000f479100047000000466f726365457261466f7263696e670016000000000000000100000031000000a479100015000000536c6173685265776172644672616374696f6e001600000000000000010000002e0000002d7910003e0000001cd41100000000006b7910003900000043616e63656c6564536c6173685061796f75740016000000000000000100000036000000ad78100045000000f27810003b0000005665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00160000000000000001000000300000007c78100031000000426f6e646564457261735665633c28457261496e6465782c2053657373696f6e496e646578293e0016000000000000000100000030000000d2771000490000001cd41100000000001b781000320000004d7810002f0000002850657262696c6c2c2042616c616e63654f663c543e2900160000000000000001000000320000006577100051000000b67710001c000000160000000000000001000000320000000d77100058000000736c617368696e673a3a536c617368696e675370616e730016000000000000000100000032000000ea7610002300000028543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e64657829736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e000000160000000000000001000000370000006d7610004f000000bc7610002e0000004561726c69657374556e6170706c696564536c61736800002e7610003f000000d5751000590000008f751000460000001600000000000000010000003200000036751000590000008f75100046000000456c656374696f6e526573756c743c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e00007874100059000000d174100058000000297510000d00000051756575656453636f726500160000000000000001000000320000004c7410002c000000456c656374696f6e5374617475733c543a3a426c6f636b4e756d6265723e000016000000000000000100000031000000df73100052000000317410001b000000497343757272656e7453657373696f6e46696e616c00000016000000000000000100000032000000b17310002e000000160000000000000001000000380000005673100033000000e48711001f0000001cd411000000000089731000280000004d696772617465457261000016000000000000000100000032000000187310003e0000002054686520657261207768657265207765206d696772617465642066726f6d204c617a79205061796f75747320746f2053696d706c65205061796f7574732054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e20546869732069732073657420746f2076332e302e3020666f72206e6577206e6574776f726b732e2054727565206966207468652063757272656e7420706c616e6e65642073657373696f6e2069732066696e616c2e20466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c2077652061636365707420736f6c7574696f6e7320746f206265207375626d69747465642e205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e20546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d2074686520726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e2069732065786563757465642e20536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c79206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e20536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c7920546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2c2061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e20416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e20416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e20616e6420736c6173682076616c7565206f6620746865206572612e2041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653a20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d6020416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e2054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e74207768696368207761732063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e204d6f6465206f662065726120666f7263696e672e2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e20496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e2054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e2045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e2053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e2054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e2049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e20436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e20546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f207468652060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e20284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292e2054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e2054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e204578706f73757265206f662076616c696461746f72206174206572612e205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e20546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e20546865206163746976652065726120697320746865206572612063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d75737420626520657175616c20746f206053657373696f6e496e746572666163653a3a76616c696461746f7273602e205468652063757272656e742065726120696e6465782e205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f72207365742c206974206d6967687420626520616374697665206f72206e6f742e20546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e20546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e2057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e20416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e63652074686579277265206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f757220696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e2054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e20496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e0000000000dc8310000e000000000000007cff10000c000000000000001cd41100ec8310000000000000000000fc831000010000000000000000000000048410000f000000000000004d45100008000000000000001cd4110014841000000000000000000024841000010000000000000053657373696f6e73506572457261000016000000000000000100000039000000658410001c000000426f6e64696e674475726174696f6e001600000000000000010000003a0000002c84100039000000204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e204e756d626572206f662073657373696f6e7320706572206572612e65786163746c79206f6e65206f6620606d617962655f76616c696461746f726020616e6420606d617962655f6e6f6d696e6174696f6e2e69735f736f6d656020697320747275652e2069735f76616c696461746f722069732066616c73653b206d617962655f6e6f6d696e6174696f6e20697320736f6d653b207165640000108510005d00000063090000220000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f7374616b696e672f7372632f6c69622e727300000000000000cc2010000d0000000000000064881000010000000000000000000000c420100008000000000000006c881000010000000000000000000000b72010000d0000000000000074881000010000000000000000000000aa2010000d000000000000007c8810000100000000000000000000009e2010000c0000000000000084881000010000000000000000000000902010000e000000000000008c8810000100000000000000000000007f2010001100000000000000948810000100000000000000000000006e20100011000000000000009c881000010000000000000000000000622010000c00000000000000a4881000010000000000000000000000552010000d00000000000000ac881000010000000000000000000000492010000c00000000000000b4881000010000000000000000000000372010001200000000000000bc8810000100000000000000000000001d2010001a00000000000000c48810000100000000000000000000000b2010001200000000000000cc881000010000000000000000000000fd1f10000e00000000000000d4881000010000000000000000000000e61f10001700000000000000dc881000010000000000000000000000d01f10001600000000000000e4881000010000000000000000000000bd1f10001300000000000000ec881000010000000000000000000000a51f10001800000000000000f4881000010000000000000000000000921f10001300000000000000fc8810000200000000000000000000007e1f100014000000000000000c891000020000000000000000000000681f100016000000000000001c891000010000000000000000000000511f1000170000000000000024891000010000000000000000000000381f100019000000000000002c891000020000000000000000000000231f100015000000000000003c891000010000000000000000000000121f1000110000000000000044891000010000000000000000000000001f100012000000000000004c8910000100000000000000df8e10001a000000ca8e100015000000b18e100019000000938e10001e0000007a8e100019000000698e100011000000478e100022000000148e100033000000ef8d100025000000c68d100029000000938d1000330000007c8d1000170000005d8d10001f0000003c8d100021000000f98c100043000000c08c100039000000808c1000400000004c8c100034000000208c10002c000000ba8b100058000000128c10000e000000398b100057000000908b10002a000000f48a100045000000a18a100053000000348a1000580000008c8a100015000000eb891000490000009a8910005100000054891000460000002054686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e20546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e20412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f20736c617368206f6620746865207461726765742e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e204f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e204572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e64657820697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e204f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676520696e20736e617073686f74292e20496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e2054686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e20546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e20546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e205265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e204974656d7320617265206e6f7420736f7274656420616e6420756e697175652e20496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e20496e76616c69642065726120746f207265776172642e20417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e2043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e2043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e20536c617368207265636f726420696e646578206f7574206f6620626f756e64732e204475706c696361746520696e6465782e20546172676574732063616e6e6f7420626520656d7074792e20436f6e74726f6c6c657220697320616c7265616479207061697265642e20537461736820697320616c726561647920626f6e6465642e204e6f742061207374617368206163636f756e742e204e6f74206120636f6e74726f6c6c6572206163636f756e742e416d6f756e744c6f774e6f7456657374696e6776657374766573745f6f746865727665737465645f7472616e7366657200000000000000848f10000e0000000000000064a51100020000000000000000000000948f1000020000000000000000000000a48f1000100000000000000044a51100010000000000000000000000b48f1000010000000000000056657374696e6755706461746564000007901000560000005d9010004600000056657374696e67436f6d706c65746564bc8f10004b00000020416e206163636f756e742028676976656e2920686173206265636f6d652066756c6c79207665737465642e204e6f20667572746865722076657374696e672063616e2068617070656e2e2054686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e646963617465206d6f72652066756e64732061726520617661696c61626c652e205468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e4475706c696361746564486561727462656174496e76616c69644b657968656172746265617448656172746265617441667465724b6579730000000000609110001100000000000000749110000100000000000000000000007c9110000100000000000000000000008491100007000000000000001cd411000000000000000000000000008c911000010000000000000000000000949110000b00000000000000a0911000010000000000000000000000a891100001000000000000004865617274626561745265636569766564000000799210000b0000004992100030000000416c6c476f6f64001492100035000000536f6d654f66666c696e6500fc91100018000000b09110004c0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460417574686f7269747949641600000004000000040000003b0000003c0000003d0000001600000000000000010000002a000000c090100009000000417574686f726564426c6f636b7300005b9310001600000023a11100020000005b931000160000007193100012000000696d6f6e6c696e6570616c6c65745f696d5f6f6e6c696e652f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e7273536b697070696e6720686561727462656174206174202e204e6f7420612076616c696461746f722e00939410001c000000659410002e000000339410001a0000004d94100018000000179410000a0000002194100012000000ff93100018000000e993100016000000cc9310001d0000004661696c656420746f206665746368206e6574776f726b2073746174654661696c656420746f2061637175697265206c6f636b4661696c656420746f207369676e20686561727462656174417574686f726974792020697320616c7265616479206f6e6c696e6548656172746265617420616c72656164792073656e74206174202e2057616974696e6720666f7220696e636c7573696f6e2e546f6f206561726c7920746f2073656e64206865617274626561742c206e657874206578706563746564206174204661696c656420746f207375626d6974207472616e73616374696f6e00fc9210005f000000fa010000340000007061726974792f696d2d6f6e6c696e652d6865617274626561742f00fc941000080000000495100020000000249510000b0000002f951000030000005b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20202873657373696f6e3a20293a2000001cd41100000000001cd41100000000001600000004000000040000003e0000001600000004000000040000003e0000003c7761736d3a73747269707065643e00000000000c8f100004000000000000001cd41100000000000000000000000000f89510000d0000000000000000000000108f10000a00000000000000acaf1100010000000000000000000000609610001000000000000000000000001a8f10000f00000000000000e0961000020000000000000000000000109710000e000000000000004e9a10002f0000001cd41100000000007d9a1000580000008c9910001a0000001cd4110000000000a6991000350000001cd41100000000005fb211000b000000869811000a000000f79910001e000000159a100039000000bab211000d000000c7b211000c000000089910002f0000001cd4110000000000b09a1100340000001cd411000000000037991000550000008c9910001a0000001cd4110000000000a6991000350000001cd41100000000005fb211000b000000869811000a000000db9910001c000000f79910001e000000159a100039000000bab211000d000000c7b211000c00000000000000d3b211000600000000000000d9b211002300000000000000d79810000800000000000000df98100029000000809710001a0000001cd4110000000000b09a1100340000001cd41100000000009a97100045000000df971000400000001f9810003d0000001cd41100000000005c981000180000001cd41100000000005fb211000b0000007498100046000000ba9810001d000000c7b211000c00000020437265617465206120766573746564207472616e736665722e202d2060746172676574603a20546865206163636f756e7420746861742073686f756c64206265207472616e7366657272656420746865207665737465642066756e64732e202d2060616d6f756e74603a2054686520616d6f756e74206f662066756e647320746f207472616e7366657220616e642077696c6c206265207665737465642e202d20607363686564756c65603a205468652076657374696e67207363686564756c6520617474616368656420746f20746865207472616e736665722e20456d697473206056657374696e6743726561746564602e202d20437265617465732061206e65772073746f7261676520656e7472792c206275742069732070726f7465637465642062792061206d696e696d756d207472616e7366657209202020616d6f756e74206e656564656420746f20737563636565642e7363686564756c6556657374696e67496e666f3c42616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265723e20556e6c6f636b20616e79207665737465642066756e6473206f662061206074617267657460206163636f756e742e202d2060746172676574603a20546865206163636f756e742077686f7365207665737465642066756e64732073686f756c6420626520756e6c6f636b65642e204d75737420686176652066756e6473207374696c6c206c6f636b656420756e6465722074686973206d6f64756c652e20456d69747320656974686572206056657374696e67436f6d706c6574656460206f72206056657374696e6755706461746564602e202d20557020746f206f6e65206163636f756e74206c6f6f6b75702e202d204f6e652062616c616e63652d6c6f636b206f7065726174696f6e2e202d204f6e652073746f7261676520726561642028636f64656320604f283129602920616e6420757020746f206f6e652072656d6f76616c2e20556e6c6f636b20616e79207665737465642066756e6473206f66207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652066756e6473207374696c6c0000000000000096a610000700000001020000000000009db611000c00000000000000df98100029000000000000000000000000000000000000001cd41100709f10000000000000000000309b1000010000000000000000000000389b10003600000020496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e000000000000a89b10001100000000000000de4d11000c000000000000001cd41100bc9b10000000000000000000cc9b100001000000000000004d696e5665737465645472616e736665720000001600000000000000010000003f000000d49b10004700000020546865206d696e696d756d20616d6f756e7420746f206265207472616e7366657272656420746f206372656174652061206e65772076657374696e67207363686564756c652e506172656e7420686173682073686f756c642062652076616c69642e5472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e00b39c100032000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e4e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e00000000000000c09010000900000000000000149d10000200000000000000000000001cd41100000000000000000000000000c09010000900000000000000449d100019000000000000005d9d10000a00000000000000679d10002f0000004865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e6174757265000000000000c99010000e0000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd41100909f10000000000000000000f89e100006000000000000000100000000000000d7901000040000000000000000000000289f100013000000000000000000000000000000000000000000000000000000000000001cd411003c9f100000000000000000004c9f100001000000000000000100000000000000549f10001200000002050500000000007cff10000c00000000000000669f10000900000000000000aa39110007000000000000001cd41100709f10000000000000000000809f100002000000000000000000000000000000b49210000e00000002050500000000007cff10000c0000000000000004df10000e000000000000001456110003000000000000001cd41100909f10000000000000000000a09f1000020000000000000001000000b7a010004c0000001cd411000000000003a110004400000047a11000340000007ba1100040000000bba110004e0000005665633c543a3a417574686f7269747949643e001600000000000000010000003000000083a010003400000052656365697665644865617274626561747341757468496e646578001600000000000000010000003200000027a010003c00000063a01000200000001600000000000000010000002e000000b09f100045000000f59f10003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e7573657220646f6573206e6f74206861766520616e206578697374696e672076657374696e67207363686564756c653b20712e652e642e160000000c000000040000004000000060a210005d000000fd0000000d0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f76657374696e672f7372632f6c69622e727300000000000000028f10000a0000000000000014a310000100000000000000000000002f56110017000000000000001ca31000010000000000000000000000f98e1000090000000000000024a310000100000000000000c5a31000220000006ea31000570000002ca310004200000020416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e20416e206578697374696e672076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e7420746861742063616e6e6f7420626520636c6f6262657265642e20546865206163636f756e7420676976656e206973206e6f742076657374696e672e0000000000b69010000a0000000000000020a41000010000000000000000000000a3901000130000000000000028a41000010000000000000046a410001900000030a4100016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e00000000009ca41000070000000000000000000000a3a410000e0000000000000002000000010000000100000000000000b4a410000c0000000000000077657374656e647061726974792d77657374656e64000000df6acb689907609b0200000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d03000000ed99c5acb25eedf502000000cbca25e39f14238701000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a8010000006772616e62616265696d6f6e70617261617564690000000040787d010065cd1d00e1f505d85aae1ec0542205b0508f1f38e4750488467020d853e903603c5121d0bf760338323222a8591903402013236039cd02480ef423a82a8f0268f8d42470955c02b8dab525c05a3302d8c4962648bd1102e0b27727a855f601e8a05828e8fedf0180773929c0cacd01586d1a2af8f1be019053fb2a50d8b201d00edc2be0fca80138edbc2c48f2a001e06d9d2d80669a01c80d7e2e500f9501c0575e2f08b6900140323f30e0278d0148202031b0418a0108a3ff3120e8870120bedf32f0fb85013856c03398698401f0fda03478218301b8d87f35d8178201d8c26036183d8101b8223e37508d800188d21c38c8fc7f0168b5f93898877f01a829d139d8297f0120d6ab3ab8db7e0168ae803b389d7e0100ca9a3b68957e01496d4f6e6c696e654772616e6470615374616b696e6756657374696e67417574686f72697479446973636f76657279526573747269637446756e6374696f6e616c69747900000000642f11000600000000000000410000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000430000000000000000000000000000004400000000000000000000000000000045000000000000000000000000000000abb110001800000000000000460000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004400000000000000000000000000000044000000000000000000000000000000a7591100040000000000000047000000000000000000000000000000000000000000000000000000000000004400000000000000000000000200000000000000000000000000000000000000480000000000000000000000000000004400000000000000000000000000000034ca1100090000000000000049000000000000000000000000000000000000000000000000000000000000004a000000000000000000000002000000000000000000000000000000000000004b00000000000000000000000000000044000000000000000000000000000000fb93110007000000000000004c000000000000000000000000000000000000000000000000000000000000004d0000000000000000000000000000004e0000000000000000000000000000004400000000000000000000000000000044000000000000000000000000000000bd56110008000000000000004f0000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000510000000000000000000000000000005200000000000000000000000000000053000000000000000000000000000000c54c110012000000000000005400000000000000000000000000000000000000000000000000000002000000000000000000000000000000020000000000000000000000000000000000000055000000000000000000000000000000440000000000000000000000000000007e9311000a000000000000005600000000000000000000000000000000000000000000000000000000000000570000000000000000000000020000000000000000000000000000000000000044000000000000000000000000000000580000000000000000000000000000008fa61000070000000000000059000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000005b0000000000000000000000000000005c0000000000000000000000000000005d0000000000000000000000000000008931110008000000000000005e00000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000005f000000000000000000000000000000440000000000000000000000000000004400000000000000000000000000000050b110000a00000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004400000000000000000000000000000044000000000000000000000000000000dbcb110007000000000000006000000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000006200000000000000000000000000000044000000000000000000000000000000630000000000000000000000000000007eb110000f0000000000000064000000000000000000000000000000000000000000000000000000000000006500000000000000000000000200000000000000000000000000000000000000660000000000000000000000000000006700000000000000000000000000000088a6100007000000000000006800000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000006a000000000000000000000000000000440000000000000000000000000000006b00000000000000000000000000000080a6100008000000000000006c000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000006e000000000000000000000000000000440000000000000000000000000000006f0000000000000000000000000000009da610001200000002000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000002000000000000000000000000000000000000004400000000000000000000000000000044000000000000000000000000000000b0ef10000a0000000000000070000000000000000000000000000000000000000000000000000000000000007100000000000000000000000200000000000000000000000000000000000000440000000000000000000000000000007200000000000000000000000000000039ba10000c0000000000000073000000000000000000000000000000000000000000000000000000000000007400000000000000000000000200000000000000000000000000000000000000440000000000000000000000000000007500000000000000000000000000000096d6100009000000000000007600000000000000000000000000000000000000000000000000000000000000770000000000000000000000000000007800000000000000000000000000000044000000000000000000000000000000790000000000000000000000000000009d7a110007000000000000007a000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000007c000000000000000000000000000000440000000000000000000000000000007d000000000000000000000000000000f4a3110008000000000000007e000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000800000000000000000000000000000004400000000000000000000000000000081000000000000000000000000000000ae1c1100080000000000000082000000000000000000000000000000000000000000000000000000000000008300000000000000000000000000000084000000000000000000000000000000440000000000000000000000000000008500000000000000000000000000000096a61000070000000000000086000000000000000000000000000000000000000000000000000000000000008700000000000000000000000000000088000000000000000000000000000000890000000000000000000000000000008a0000000000000000000000000000000dfc100009000000000000008b00000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000008c00000000000000000000000000000044000000000000000000000000000000440000000000000000000000000000008ccb100004000000000000008d000000000000000000000000000000000000000000000000000000000000008e0000000000000000000000000000008f00000000000000000000000000000044000000000000000000000000000000900000000000000000000000486973746f726963616c6d6f72655f6174746573746174696f6e73546f6f4d616e794174746573746174696f6e7346696e616c697479547261636b6572000000648a11006a000000910000000d000000526563656e7448696e747352616e646f6d6e657373436f6c6c656374697665466c697052616e646f6d4d6174657269616c42616448696e74416c72656164795570646174656466696e616c5f68696e742f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f72616e646f6d6e6573732d636f6c6c6563746976652d666c69702f7372632f6c69622e72731600000004000000040000009100000050726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b2071656400000000000000000000b8b210003d000000736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b2071656400000000000000000000000000000000000000000000006bb11000130000000000000024b3100001000000000000002cb3100035000000204d6f7265206174746573746174696f6e732063616e206265206164646564206f6e6c79206f6e636520696e206120626c6f636b2e5570646174654f72646572656448696e74734d656469616e616c77617973206174206c65617374206f6e6520726563656e742073616d706c653b207165640074b41000660000006e0000002b000000726563656e7420616e64206f72646572656420636f6e7461696e207468652073616d65206974656d733b2071656400001600000004000000040000000f00000074b4100066000000790000001b0000007072756e696e672064696374617465642062792077696e646f775f73697a6520776869636820697320616c776179732073617475726174656420617420313b207165640074b4100066000000940000001100000074b41000660000008e0000001900000074b41000660000008f000000190000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f66696e616c6974792d747261636b65722f7372632f6c69622e72730000000000047eb510000e0000008cb510000b00000036b510001300000064b510001a00000036b510001300000049b510001b000000617373657274696f6e206661696c65643a2062697473203c3d20726573756c742e6c656e28294361706163697479206f766572666c6f773a20206f766572666c6f777320616c6c6f636174696f6e2073697a6520206f766572666c6f7773206d6178696d756d206c656e67746820566563746f72206c656e67746820206f766572666c6f7773200000000000e6b110000a00000000000000c4b51000010000000000000000000000dcb5100002000000000000000000000044b61000040000000000000048b6100017000000ecb510003d00000029b610001b0000002048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a656420626c6f636b2069732074686520676976656e206e756d6265722e68696e74436f6d706163743c543a3a426c6f636b4e756d6265723e0000000000a0b110000b000000000000000000000018b8100013000000000000000000000000000000000000000000000000000000000000001cd4110034b8100000000000000000002cb810000100000000000000010000000000000067b310000c000000000000000000000018b8100013000000000000000000000000000000000000000000000000000000000000001cd4110034b81000000000000000000044b810000100000000000000010000000000000073b31000060000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd411004cb8100000000000000000005cb810000100000000000000010000000000000061b31000060000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd4110064b81000000000000000000074b8100001000000000000000000000000000000f45e11000b000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd4110034bc100000000000000000001cd411000000000000000000010000005665633c543a3a426c6f636b4e756d6265723e00dfb810000e00000016000000000000000100000030000000c9b81000160000001600000000000000010000002e000000bdb810000c000000160000000000000001000000320000007cb81000410000002046696e616c2068696e7420746f206170706c7920696e2074686520626c6f636b2e20604e6f6e6560206d65616e73202273616d6520617320706172656e74222e20546865206d656469616e2e204f72646572656420726563656e742068696e74732e20526563656e742068696e74732e0000000000000060b910000a00000000000000285f11000e000000000000001cd411006cb9100000000000000000007cb9100001000000000000000000000084b910000d00000000000000285f11000e000000000000001cd4110094b910000000000000000000a4b91000010000000000000057696e646f7753697a65000016000000000000000100000092000000f3b91000460000005265706f72744c6174656e637900000016000000000000000100000093000000acb9100047000000205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e20546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e4174746573746174696f6e7350617261426c6f636b4174746573746174696f6e73526563656e7450617261426c6f636b730000000000005ab11000110000000000000098ba100001000000000000000000000094cc1000010000000000000000000000b0ba10000500000000000000b5ba1000100000005f6d6f72654d6f72654174746573746174696f6e73000000000000005aba1000100000000105000000000000285f11000e00000000000000d0bb100011000000000000000000000000000000000000001cd41100e4bb10000000000000000000f4bb10000200000000000000000000000000000045ba1000150000000205060000000000285f11000e0000000000000004bc1000040000000000000008bc100014000000000000001cd411001cbc100000000000000000002cbc10000100000000000000000000000000000028cf110009000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd4110034bc100000000000000000001cd41100000000000000000001000000496e636c75646564426c6f636b733c543e000000160000000000000001000000320000006ebc10003c000000aabc10003300000048617368426c6f636b4174746573746174696f6e733c543e1600000000000000010000003200000044bc10002a00000016000000000000000100000032000000204174746573746174696f6e73206f6e206120726563656e742070617261636861696e20626c6f636b2e2041206d617070696e672066726f6d206d6f64756c617220626c6f636b206e756d62657220286e2025204174746573746174696f6e506572696f642920746f2073657373696f6e20696e64657820616e6420746865206c697374206f662063616e646964617465206861736865732e00000000000000c3b110000e000000000000000000000038bd10000c000000000000000000000000000000000000000000000000000000000000001cd4110044bd1000000000000000000054bd10000300000000000000010000005665633c543a3a486173683e160000000000000001000000300000006cbd100058000000c4bd1000580000001cbe10001100000020536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e0000001cd411000000000023a111000200000000000000d8b110000e0000000000000078be1000010000000000000000000000d1b11000070000000000000080be10000100000000000000acbe10003200000088be1000240000002046696e616c697a6564206865696768742061626f766520626c6f636b206e756d6265722046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b0000f0b110007000000053000000110000006e6577686561647350617261636861696e20686561647320636f756c64206e6f74206265206465636f6465642e00000026fb10004200000037040000140000004e6f2070617261636861696e20686561647320666f756e6420696e20696e686572656e7420646174612e7265706f72745f646f75626c655f766f74657365745f6865616473546f6f4d616e794865616455706461746573546f6f4d616e795061726143616e6469646174657348656164734f75744f664f72646572556e7265676973746572656450617261496e76616c6964436f6c6c61746f72517565756546756c6c496e76616c69644d6573736167654f726967696e4e6f56616c696461746f7247726f75704e6f74456e6f75676856616c6964697479566f746573566f74657345786365656473417574686f72697469657357726f6e6756616c696461746f72417474657374696e67496e76616c69645369676e6174757265556e746167676564566f746573506172656e744d69736d6174636843616e6e6f7450617946656573556e657870656374656452656c6179506172656e7456616c6964617465446f75626c65566f74655265706f727473526571756972655375646f7375646f7365745f6b65797375646f5f617300000000000044c1100005000000000000004cc1100001000000000000000000000054c110000100000000000000000000005cc110000a0000000000000044a5110001000000000000000000000068c1100001000000000000000000000070c110000a000000000000004cc1100001000000000000000000000054c110000100000000000000537564696400000031cf110004000000b6c11000180000004b65794368616e67656400007ac110003c0000005375646f4173446f6e6520546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e50617261636861696e206865616473206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b0016000000080000000400000094000000496e76616c69642f6f75746461746564206b6579206f776e6572736869702070726f6f662e4661696c656420746f207265706f7274206f6666656e636500000026fb100042000000e90300002f0000006f7264657265645f6e656564735f646973706174636820636f6e7461696e732069643f2126fb100042000000d20200001d00000076616c696461746f725f726f6c655f706169727326fb100042000000090300002f0000000000000075bf1000120000000000000094c4100001000000000000000000000087bf100015000000000000009cc410000100000000000000000000009cbf10000f00000000000000a4c41000010000000000000000000000abbf10001000000000000000acc41000010000000000000000000000bbbf10000f00000000000000b4c41000010000000000000000000000cabf10000900000000000000bcc41000010000000000000000000000d3bf10001400000000000000c4c41000010000000000000000000000e7bf10001000000000000000ccc41000010000000000000000000000f7bf10001600000000000000d4c410000100000000000000000000000dc010001700000000000000dcc4100001000000000000000000000024c010001700000000000000e4c410000100000000000000000000003bc010001000000000000000ecc410000100000000000000000000004bc010000d00000000000000f4c4100001000000000000000000000058c010000e00000000000000fcc410000100000000000000000000009fd51000100000000000000004c5100001000000000000000000000066c010000d000000000000000cc5100001000000000000000000000073c01000150000000000000014c510000100000000000000e2c7100038000000c3c710001f00000079c710004a0000004dc710002c0000003bc7100012000000f4c6100047000000d5c610001f000000b3c61000220000008ac61000290000004cc610003e00000013c6100039000000f2c5100021000000bec510003400000095c51000290000007cc51000190000004dc510002f0000001cc510003100000020556e65787065637465642072656c61792d706172656e7420666f7220612063616e64696461746520726563656970742e205061726120646f6573206e6f74206861766520656e6f7567682062616c616e636520746f2070617920666565732e204865616420646174612077617320746f6f206c617267652e2057726f6e6720706172656e74206865616420666f722070617261636861696e20726563656970742e20457874726120756e7461676765642076616c696469747920766f74657320616c6f6e6720776974682063616e6469646174652e20496e76616c6964207369676e61747572652066726f6d2061747465737465722e20417474657374696e672076616c696461746f72206e6f74206f6e207468697320636861696e27732076616c69646174696f6e20647574792e20546865206e756d626572206f66206174746573746174696f6e73206578636565647320746865206e756d626572206f6620617574686f7269746965732e204e6f7420656e6f7567682076616c696469747920766f74657320666f722063616e6469646174652e204e6f2076616c696461746f722067726f757020666f722070617261636861696e2e20546865206d657373616765206f726967696e20697320696e76616c69642e20546865206d6573736167652071756575652069732066756c6c2e204d657373616765732077696c6c206265206164646564207768656e2074686572652069732073706163652e20496e76616c696420636f6c6c61746f722e2043616e64696461746520697320666f7220616e20756e726567697374657265642070617261636861696e2e2050726f706f736564206865616473206d75737420626520617363656e64696e67206f726465722062792070617261636861696e20494420776974686f7574206475706c69636174652e20546f6f206d616e792070617261636861696e2063616e646964617465732e2050617261636861696e206865616473206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b2e000026fb100042000000990400003500000000000000acc010000400000000000000b0c81000010000000000000000000000c8c810000a0000000000000000000000b0c01000070000000000000018c9100001000000000000000000000030c91000090000000000000000000000b7c01000070000000000000078c91000020000000000000000000000a8c910000b0000000000000000000000c97711000400000000000000cd771100170000003ecb10004e0000001cd4110000000000b09a1100340000001cd41100000000005fb211000b00000065ca1000080000006dca10001900000086ca1000180000009eca100032000000c7b211000c000000000000009ab611000300000000000000d9b2110023000000d0ca10005d0000001cd4110000000000b09a1100340000001cd41100000000005fb211000b00000065ca1000080000006dca1000190000002dcb100011000000c7b211000c000000000000004c8111000300000000000000d9b211002300000000000000c97711000400000000000000cd7711001700000000ca10005400000054ca1000110000001cd4110000000000b09a1100340000001cd41100000000005fb211000b00000065ca1000080000006dca10001900000086ca1000180000009eca100032000000c7b211000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204f2831292e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e5375646f00000000903811000300000000000000000000009db611000c000000000000000000000000000000000000000000000000000000000000001cd41100e8cb10000000000000000000f8cb10000100000000000000010000001600000000000000010000009500000000cc1000210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e000000000000006cbf100009000000000000007ccc100001000000000000000000000094cc10000100000000000000000000005abf100012000000000000009ccc1000010000000000000000000000b4cc100004000000000000000000000028ce100005000000000000002dce100016000000e3cd100045000000000000006acd1000060000000000000070cd100073000000d4cc1000400000001cd411000000000014cd1000460000005acd1000100000002050726f7669646520612070726f6f66207468617420736f6d652076616c696461746f722068617320636f6d6d69746564206120646f75626c652d766f74652e205468652077656967687420697320303b20696e206f7264657220746f2061766f696420446f53206120605369676e6564457874656e73696f6e602076616c69646174696f6e20697320696d706c656d656e7465642e7265706f7274446f75626c65566f74655265706f72743c3c543a3a4b65794f776e657250726f6f6653797374656d2061730a20202020202020202020202020202020204b65794f776e657250726f6f6653797374656d3c284b65795479706549642c2056616c696461746f724964293e3e3a3a50726f6f663e2050726f766964652063616e64696461746520726563656970747320666f722070617261636861696e732c20696e20617363656e64696e67206f726465722062792069642e68656164735665633c417474657374656443616e6469646174653e00000000003c5d11000b0000000000000000000000acd0100010000000000000000000000000000000000000000000000000000000000000001cd411008cd110000000000000000000bcd0100001000000000000000100000000000000c4d01000040000000105000000000000baf010000600000000000000aa39110007000000000000000000000000000000000000001cd41100d8d010000000000000000000c8d0100001000000000000000000000000000000d0d01000050000000105000000000000baf010000600000000000000aa39110007000000000000000000000000000000000000001cd41100d8d010000000000000000000e8d0100001000000000000000000000000000000f0d01000120000000105000000000000baf01000060000000000000002d1100012000000000000000000000000000000000000001cd4110014d11000000000000000000024d110000200000000000000010000000000000034d11000160000000105000000000000baf0100006000000000000004ad110000a000000000000000000000000000000000000001cd4110054d11000000000000000000064d11000030000000000000001000000000000007cd110000d0000000000000000000000baef10000b000000000000000000000000000000000000000000000000000000000000001cd411008cd1100000000000000000009cd110000100000000000000010000000000000028cf1100090000000000000000000000baef10000b000000000000000000000000000000000000000000000000000000000000001cd41100a4d110000000000000000000b4d110000400000000000000000000005665633c56616c696461746f7249643e93d4100025000000436f64656dd41000260000004865616473000000160000000000000001000000960000003ad410003300000052656c6179446973706174636851756575655665633c5570776172644d6573736167653e16000000000000000100000030000000c1d310004700000008d410003200000052656c61794469737061746368517565756553697a65287533322c207533322916000000000000000100000097000000dbd21000510000002cd310005600000082d310003f0000004e6565647344697370617463680000001600000000000000010000003000000097d210004400000016000000000000000100000032000000d4d11000560000002ad21000520000001cd41100000000007cd210001b0000002060536f6d6560206966207468652070617261636861696e20686561647320676574207570646174656420696e207468697320626c6f636b2c20616c6f6e672077697468207468652070617261636861696e20494473207468617420646964207570646174652e204f72646572656420696e207468652073616d652077617920617320607265676973747261723a3a416374697665602028692e652e20627920506172614964292e20604e6f6e6560206966206e6f742079657420757064617465642e20546865206f726465726564206c697374206f662050617261496473207468617420686176652061206052656c6179446973706174636851756575656020656e7472792e2053697a65206f6620746865206469737061746368207175657565732e205365706172617465642066726f6d2061637475616c206461746120696e206f7264657220746f2061766f696420636f73746c79206465636f64696e67207768656e20636865636b696e6720726563656970742076616c69646974792e204669727374206974656d20696e207475706c652069732074686520636f756e74206f66206d65737361676573207365636f6e642069662074686520746f74616c206c656e6774682028696e20627974657329206f6620746865206d657373616765207061796c6f6164732e204d6573736167657320726561647920746f2062652064697370617463686564206f6e746f207468652072656c617920636861696e2e204974206973207375626a65637420746f20604d41585f4d4553534147455f434f554e546020616e64206057415445524d41524b5f4d4553534147455f53495a45602e20546865206865616473206f66207468652070617261636861696e7320726567697374657265642061742070726573656e742e205468652070617261636861696e7320726567697374657265642061742070726573656e742e20416c6c20617574686f72697469657327206b65797320617420746865206d6f6d656e742e00000000a1c010000b00000000000000d4d410000100000000000000dcd41000200000002053656e646572206d75737420626520746865205375646f206163636f756e7473776170646572656769737465725f7061726174687265616473656c6563745f7061726174687265616472656769737465725f706172617468726561647365745f7468726561645f636f756e74646572656769737465725f7061726172656769737465725f7061726150617261416c7265616479457869737473496e76616c6964436861696e4964496e76616c69645468726561644964436f6465546f6f4c617267654865616444617461546f6f4c617267654c696d697450617261746872656164436f6d6d697473000000d0d5100023000000605f5f49676e6f7265602063616e206e6576657220626520636f6e73747275637465644e6f4b6579734475706c6963617465644b65794e6f4173736f63696174656456616c696461746f724964496e76616c696450726f6f667365745f6b65797370757267655f6b65797356616c696461746f72734e6578744b6579734b65794f776e65722f686f6d652f6461766964642f6465762f706f6c6b61646f742d77657374656e642f72756e74696d652f636f6d6d6f6e2f7372632f7265676973747261722e7273526567697374726172446562746f727300000000000065d51000110000000000000034d7100001000000000000000000000076d510000e000000000000003cd7100001000000000000000000000084d510000f0000000000000044d7100001000000000000000000000093d510000c000000000000004cd710000100000000000000000000009fd51000100000000000000054d710000100000000000000bed710001a000000a8d710001600000091d710001700000079d71000180000005cd710001d00000020496e76616c69642070617261206865616420646174612073697a652e20496e76616c6964207061726120636f64652073697a652e20496e76616c696420706172617468726561642049442e20496e76616c69642070617261636861696e2049442e2050617261636861696e20616c7265616479206578697374732e55d6100041000000640200002d00000055d610004100000002020000110000005175657565644b65797300000000000029d6100008000000000000005cd810000200000000000000000000008cd810000c000000000000000000000031d610000a000000000000001cd41100000000000000000000000000ecd810000a0000000000000000000000b13811000400000000000000a9db10000700000000000000b0db10000500000000000000aa3911000700000041da10003a0000007bda1000480000006fd91000310000001cd4110000000000a0d91000350000001cd41100000000005fb211000b000000c3da100022000000e5da100016000000fbda10005900000054db100055000000c7b211000c0000003cd91000330000006fd91000310000001cd4110000000000a0d91000350000001cd41100000000005fb211000b000000d5d910001f000000f4d910001c00000010da100031000000c7b211000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d204f284e2920696e206e756d626572206f66206b65792074797065732e202d2052656d6f766573204e202b203120444220656e74726965732e202d20526564756365732073797374656d206163636f756e742072656673206279206f6e65206f6e20737563636573732e2053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e202d204f6e6520657874726120444220656e7472792e202d20496e637265617365732073797374656d206163636f756e742072656673206279206f6e65206f6e20737563636573732069666620746865726520776572652070726576696f75736c79206e6f206b657973207365742e202020496e207468697320636173652c2070757267655f6b6579732077696c6c206e65656420746f2062652063616c6c6564206265666f726520746865206163636f756e742063616e2062652072656d6f7665642e543a3a4b65797370726f6f66000000000000003bd610000a000000000000000000000020de100013000000000000000000000000000000000000000000000000000000000000001cd41100c8ef1000000000000000000034de1000010000000000000001000000000000003cde10000c00000000000000000000007cff10000c000000000000000000000000000000000000000000000000000000000000001cd41100e4ef1000000000000000000048de10000100000000000000010000000000000050de10000d000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd4110060de1000000000000000000070de100002000000000000000100000000000000f8d710000a000000000000000000000080de10001e000000000000000000000000000000000000000000000000000000000000001cd41100a0de10000000000000000000b0de100002000000000000000100000000000000c0de1000120000000000000000000000d2de100008000000000000000000000000000000000000000000000000000000000000001cd41100dcde10000000000000000000ecde10000300000000000000010000000000000045d6100008000000010500000000000004df10000e00000000000000a9db100007000000000000000000000000000000000000001cd4110014df1000000000000000000024df1000010000000000000000000000000000004dd610000800000001050000000000002cdf1000140000000000000004df10000e000000000000000000000000000000000000001cd41100ecf01000000000000000000040df10000100000000000000000000005665633c543a3a56616c696461746f7249643e003ae110001f00000043757272656e74496e6465781ce110001e0000005175657565644368616e67656400000016000000000000000100000032000000a5e010004e000000f3e01000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0000160000000000000001000000300000001ee010004f0000006de010003800000044697361626c656456616c696461746f72735665633c7533323e000016000000000000000100000030000000b1df1000200000001cd4110000000000d1df10004d000000543a3a56616c696461746f7249640000160000000000000001000000320000008adf100027000000284b65795479706549642c205665633c75383e2948df10004200000020546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e0000000000000058d510000d0000000000000090e21000040000000000000000000000f0e2100005000000000000000000000049d510000f0000000000000018e3100001000000000000000000000030e3100001000000000000000000000039d51000100000000000000038e3100001000000000000000000000050e3100005000000000000000000000026d51000130000000000000078e31000020000000000000000000000a8e3100008000000000000000000000015d510001100000000000000e8e3100003000000000000000000000030e4100005000000000000000000000000d5100015000000000000001cd4110000000000000000000000000058e41000070000000000000000000000fcd41000040000000000000090e41000010000000000000000000000a8e41000080000000000000000000000bbeb100002000000000000001ae710000f00000000000000d2be110004000000000000008eec10000800000000000000a63911000400000000000000aa3911000700000000000000e9ea10001100000000000000aa39110007000000bdeb10003e000000fbeb1000230000001cd41100000000001eec10003d0000005bec10003300000000000000bbeb100002000000000000001ae710000f00000096eb1000250000000000000091eb100005000000000000001456110003000000faea1000500000001cd41100000000004aeb1000260000001cd411000000000070eb10002100000000000000a63911000400000000000000aa3911000700000000000000e9ea10001100000000000000aa3911000700000081e91000290000001cd4110000000000aae9100053000000fde910004e0000001cd41100000000004bea10004c00000097ea10004a000000e1ea1000080000000000000061e9100003000000000000001ae710000f0000000000000064e9100009000000000000006de910000a0000000000000077e910000a00000000000000344011000700000064e81000410000001cd4110000000000a5e8100050000000f5e81000570000004ce910001500000029e71000320000001cd41100000000005be71000480000001cd4110000000000a3e7100056000000f9e71000510000004ae810001a0000000000000015e7100005000000000000001ae710000f000000e8e410005900000041e51000590000009ae51000570000001cd4110000000000f1e510005800000049e610005000000099e6100056000000efe6100026000000205377617020612070617261636861696e207769746820616e6f746865722070617261636861696e206f7220706172617468726561642e20546865206f726967696e206d7573742062652061206050617261636861696e602e2054686520737761702077696c6c2068617070656e206f6e6c7920696620746865726520697320616c726561647920616e206f70706f7369746520737761702070656e64696e672e204966207468657265206973206e6f742c2074686520737761702077696c6c2062652073746f72656420696e207468652070656e64696e67207377617073206d61702c20726561647920666f722061206c6174657220636f6e6669726d61746f727920737761702e20546865206050617261496460732072656d61696e206d617070656420746f207468652073616d652068656164206461746120616e6420636f646520736f2065787465726e616c20636f64652063616e2072656c79206f6e20605061726149646020746f2062652061206c6f6e672d7465726d206964656e746966696572206f662061206e6f74696f6e616c202270617261636861696e222e20486f77657665722c207468656972207363686564756c696e6720696e666f2028692e652e2077686574686572207468657927726520612070617261746872656164206f722070617261636861696e292c2061756374696f6e20696e666f726d6174696f6e20616e64207468652061756374696f6e206465706f736974206172652073776974636865642e6f74686572436f6d706163743c5061726149643e20446572656769737465722061207061726174687265616420616e6420726574726965766520746865206465706f7369742e204d7573742062652073656e742066726f6d2061206050617261636861696e60206f726967696e2077686963682069732063757272656e746c79206120706172617468726561642e20456e737572652074686174206265666f72652063616c6c696e672074686973207468617420616e792066756e647320796f752077616e7420656d70746965642066726f6d2074686520706172617468726561642773206163636f756e74206973206d6f766564206f75743b20616674657220746869732069742077696c6c20626520696d706f737369626c6520746f207265747269657665207468656d2028776974686f757420676f7665726e616e636520696e74657276656e74696f6e292e20506c61636520612062696420666f722061207061726174687265616420746f2062652070726f6772657373656420696e20746865206e65787420626c6f636b2e20546869732069732061206b696e64206f66207370656369616c207472616e73616374696f6e20746861742073686f756c642062652068656176696c79207072696f726974697a656420696e20746865207472616e73616374696f6e20706f6f6c206163636f7264696e6720746f20746865206076616c7565603b206f6e6c792060546872656164436f756e7460206f66207468656d206d61792062652070726573656e74656420696e20616e792073696e676c6520626c6f636b2e5f69645f636f6c6c61746f72436f6c6c61746f7249645f686561645f686173682052656769737465722061207061726174687265616420666f7220696d6d656469617465207573652e204d7573742062652073656e742066726f6d2061205369676e6564206f726967696e20746861742069732061626c6520746f206861766520506172617468726561644465706f7369742072657365727665642e2060636f64656020616e642060696e697469616c5f686561645f646174616020617265207573656420746f20696e697469616c697a6520746865207061726174687265616427732073746174652e20556e6c696b65206072656769737465725f70617261602c20746869732066756e6374696f6e20646f657320636865636b207468617420746865206d6178696d756d20636f64652073697a6520616e64206865616420646174612073697a6520617265207265737065637465642c206173207061726174687265616420726567697374726174696f6e20697320616e2061746f6d696320616374696f6e2e696e697469616c5f686561645f6461746120526573657420746865206e756d626572206f6620706172617468726561647320746861742063616e2070617920746f206265207363686564756c656420696e20612073696e676c6520626c6f636b2e202d2060636f756e74603a20546865206e756d626572206f662070617261746872656164732e204d7573742062652063616c6c65642066726f6d20526f6f74206f726967696e2e636f756e74204465726567697374657220612070617261636861696e207769746820676976656e206964696420526567697374657220612070617261636861696e207769746820676976656e20636f64652e204d7573742062652063616c6c656420627920726f6f742e204661696c7320696620676976656e20494420697320616c726561647920757365642e20556e6c696b65207468652060526567697374726172602074726169742066756e6374696f6e206f66207468652073616d65206e616d652c207468697320636865636b732074686520636f646520616e642068656164206461746120616761696e73742073697a65206c696d6974732e50617261496e666f000000000000b0ef10000a0000000000000000000000baef10000b000000000000000000000000000000000000000000000000000000000000001cd41100c8ef100000000000000000001cd4110000000000000000000100000000000000d8ef10000b00000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd41100e4ef10000000000000000000f4ef100001000000000000000100000000000000fcef10000f00000000000000000000000bf010001e000000000000000000000000000000000000000000000000000000000000001cd4110030f1100000000000000000002cf01000020000000000000001000000000000003cf0100006000000000000000000000042f010002e000000000000000000000000000000000000000000000000000000000000001cd4110070f01000000000000000000080f0100006000000000000000100000000000000b0f010000a0000000000000000000000baf0100006000000000000000000000000000000000000000000000000000000000000001cd41100c0f010000000000000000000d0f0100002000000000000000100000000000000e0f010000b0000000105000000000000baf010000600000000000000baf0100006000000000000000000000000000000000000001cd41100ecf010000000000000000000fcf010000100000000000000000000000000000004f11000050000000105000000000000baf0100006000000000000008eec100008000000000000000000000000000000000000001cd411000cf1100000000000000000001cf110000100000000000000000000000000000024f110000a00000000000000000000000bf010001e000000000000000000000000000000000000000000000000000000000000001cd4110030f11000000000000000000040f11000010000000000000001000000000000009fd61000070000000105000000000000baf0100006000000000000009db611000c000000000000000000000000000000000000001cd4110048f11000000000000000000058f1100001000000000000000100000050617261636861696e735665633c5061726149643e00000016000000000000000100000030000000546872656164436f756e74001600000000000000010000002e00000058f410002d00000053656c6563746564546872656164735665633c5665633c285061726149642c20436f6c6c61746f724964293e3e000000b8f31000540000000cf410004c0000004163746976655665633c285061726149642c204f7074696f6e3c28436f6c6c61746f7249642c20526574726961626c65293e293e160000000000000001000000300000006cf2100057000000c3f21000580000001bf310005600000071f31000340000001cd4110000000000a5f31000130000004e6578744672656549645061726149641600000000000000010000009300000008f210004f00000057f210001500000050656e64696e67537761700016000000000000000100000032000000eff1100019000000506172617300000016000000000000000100000032000000c5f110002a000000526574727951756575650000160000000000000001000000300000008bf110003a0000001600000000000000010000009500000060f110002b0000002055736572732077686f20686176652070616964206120706172617468726561642773206465706f736974205468652063757272656e7420717565756520666f7220706172617468726561647320746861742073686f756c6420626520726574726965642e204d6170206f6620616c6c20726567697374657265642070617261746872656164732f636861696e732e2050656e64696e672073776170206f7065726174696f6e732e20546865206e65787420756e75736564205061726149642076616c75652e2053746172742074686973206869676820696e206f7264657220746f206b656570206c6f77206e756d6265727320666f722073797374656d2d6c6576656c20636861696e732e2050617261746872656164732f636861696e73207363686564756c656420666f7220657865637574696f6e207468697320626c6f636b2e2049662074686520636f6c6c61746f72204944206973207365742c207468656e206120706172746963756c617220636f6c6c61746f722068617320616c7265616479206265656e2063686f73656e20666f7220746865206e65787420626c6f636b2c20616e64206e6f206f7468657220636f6c6c61746f72206d61792070726f766964652074686520626c6f636b2e20496e2074686973206361736520776520616c6c6f772074686520706f73736962696c697479206f662074686520636f6d62696e6174696f6e206265696e67207265747269656420696e2061206c6174657220626c6f636b2c206578707265737365642062792060526574726961626c65602e204f726465726564206279205061726149642e20416e206172726179206f6620746865207175657565206f6620736574206f662074687265616473207363686564756c656420666f722074686520636f6d696e6720626c6f636b733b206f72646572656420627920617363656e64696e6720706172612049442e2054686572652063616e206265206e6f206475706c696361746573206f66207061726120494420696e2065616368206c697374206974656d2e20546865206e756d626572206f66207468726561647320746f207363686564756c652070657220626c6f636b2e000000000000001dd610000c00000000000000f8f4100001000000000000000000000006d61000170000000000000000f51000010000000000000000000000f9d510000d0000000000000008f51000010000000000000000000000f3d51000060000000000000010f51000010000000000000084f51000190000005cf510002800000042f510001a00000018f510002a000000204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e4469676573744974656d206e6f7420657175616c546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65647265706f72745f6d69736265686176696f723a6772616e6470615f617574686f726974696573666f726b2e726563656e746c792065786563757465642e416c726561647950726f78795374696c6c4163746976655468726573686f6c64416c7265616479566f756368656444656c6179506572696f644e6f74467269656e644e6f7453746172746564416c726561647953746172746564416c72656164795265636f76657261626c654e6f745265636f76657261626c654e6f74536f727465644d6178467269656e64734e6f74456e6f756768467269656e64734e6f74416c6c6f77656461735f7265636f76657265647365745f7265636f76657265646372656174655f7265636f76657279696e6974696174655f7265636f76657279766f7563685f7265636f76657279636c61696d5f7265636f76657279636c6f73655f7265636f7665727972656d6f76655f7265636f7665727963616e63656c5f7265636f76657265640000000000004cf810000f0000000000000044a511000100000000000000000000005cf8100001000000000000000000000064f810001100000000000000e452110002000000000000000000000078f8100001000000000000000000000080f810000f0000000000000090f81000030000000000000000000000a8f81000010000000000000000000000b0f810000e00000000000000e4521100020000000000000000000000c0f81000010000000000000000000000c8f810001000000000000000e4521100020000000000000000000000d8f81000010000000000000000000000e0f810000f0000000000000044a51100010000000000000000000000f0f8100001000000000000005265636f76657279437265617465640031fa1000320000005265636f76657279496e69746961746564000000f0f91000410000005265636f76657279566f7563686564009aa61100090000009aa61100090000009aa6110009000000a0f91000500000005265636f76657279436c6f736564000062f910003e0000004163636f756e745265636f76657265642bf91000370000005265636f7665727952656d6f76656400f8f81000330000002041207265636f766572792070726f6365737320686173206265656e2072656d6f76656420666f7220616e206163636f756e74204163636f756e745f3120686173206265656e207375636365737366756c6c79207265636f7665726564206279206163636f756e745f322041207265636f766572792070726f6365737320666f72206163636f756e745f31206279206163636f756e745f3220686173206265656e20636c6f7365642041207265636f766572792070726f6365737320666f72206163636f756e745f31206279206163636f756e745f3220686173206265656e20766f756368656420666f72206279206163636f756e745f332041207265636f766572792070726f6365737320686173206265656e20696e6974696174656420666f72206163636f756e745f31206279206163636f756e745f322041207265636f766572792070726f6365737320686173206265656e2073657420757020666f7220616e206163636f756e740000000000bcfa10000900000000000000c8fa10000100000000000000000000001cd41100000000000000000000000000d0fa10000a00000000000000dcfa10000300000000000000000000001cd4110000000000000000005363686564756c65640000001bfb10000b000000446973706174636865640000f4fa1000180000000cfb10000f000000a25411000e0000005461736b416464726573733c426c6f636b4e756d6265723e4f7074696f6e3c5665633c75383e3e426c6f636b4e756d6265722f686f6d652f6461766964642f6465762f706f6c6b61646f742d77657374656e642f72756e74696d652f636f6d6d6f6e2f7372632f70617261636861696e732e727326fb100042000000e70200002200000088fb10006400000033000000120000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f72756e74696d652f7372632f63757276652e72734772616e64706146696e616c69747950656e64696e674368616e676553746174655363686564756c65724167656e646100000000dcf51000120000000000000048fc100001000000000000000000000060fc100001000000000000000000000081fc10000700000000000000aa3911000700000068fc100019000000205265706f727420736f6d65206d69736265686176696f722e5f7265706f72740000000008fc100005000000000000000000000098fe10001b000000000000000000000000000000000000000000000000000000000000001cd41100b4fe10000000000000000000c4fe100001000000000000000100000000000000fbfb10000d0000000000000000000000ccfe100023000000000000000000000000000000000000000000000000000000000000001cd41100a41e11000000000000000000f0fe100001000000000000000000000000000000f8fe10000a0000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd4110088ff1000000000000000000004ff1000010000000000000000000000000000000cff100007000000000000000000000013ff100020000000000000000000000000000000000000000000000000000000000000001cd411003c221100000000000000000034ff1000010000000000000000000000000000003cff10000c000000000000000000000048ff100005000000000000000000000000000000000000000000000000000000000000001cd4110050ff1000000000000000000060ff10000200000000000000010000000000000070ff10000c000000010500000000000048ff100005000000000000007cff10000c000000000000000000000000000000000000001cd4110088ff1000000000000000000098ff100002000000000000000000000053746f72656453746174653c543a3a426c6f636b4e756d6265723e0016000000000000000100000098000000240111002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e00f3001100310000004e657874466f726365640000c40011002f0000005374616c6c656428543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d6265722900a00011002400000043757272656e74536574496453657449640000001600000000000000010000009900000018001100570000006f00110031000000536574496453657373696f6e53657373696f6e496e64657816000000000000000100000032000000a8ff100056000000feff10001a0000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e00000000c0f610000c00000000000000d4021100020000000000000000000000040311000d0000000000000000000000ccf610000d000000000000006c0311000200000000000000000000009c0311000d0000000000000000000000d9f610000f00000000000000040411000300000000000000000000004c0411001b0000000000000000000000e8f6100011000000000000005ca9110001000000000000000000000024051100160000000000000000000000f9f610000e000000000000006c031100020000000000000000000000d405110019000000000000000000000007f710000e000000000000005ca911000100000000000000000000009c06110014000000000000000000000015f710000e000000000000003c0711000100000000000000000000005407110014000000000000000000000023f710000f000000000000001cd41100000000000000000000000000f407110015000000000000000000000032f7100010000000000000005ca911000100000000000000000000009c0811000b0000000000000000000000f9bf110007000000000000009db611000c00000000000000c97711000400000000000000cd77110017000000ba1b1100290000001cd41100000000002c09110045000000710911003a0000001cd4110000000000ab0911000c000000e31b1100490000002c1c1100400000001cd41100000000005fb211000b0000001c781100250000006c1c110042000000c7b211000c00000000000000b61b110004000000000000009db611000c00000000000000570f110007000000000000009db611000c000000861a110047000000cd1a11001d0000001cd4110000000000ea1a1100320000001cd4110000000000ab0911000c0000001c1b11002e0000004a1b1100470000001cd41100000000005fb211000b000000911b110019000000aa1b11000c000000c7b211000c00000000000000731a110007000000000000007671110011000000000000005971110009000000000000006271110003000000000000007a1a11000c00000000000000285f11000e000000c9161100570000001cd4110000000000201711004c0000006c17110052000000be1711002f0000001cd4110000000000b09a1100340000001cd4110000000000ab0911000c000000ed1711004900000036181100350000006b1811004c000000b718110047000000fe18110025000000231911004f000000721911003a0000001cd41100000000005fb211000b000000ac1911001a000000c61911004b000000111a11003b00000087161100270000004c1a110027000000bab211000d0000001cd41100000000001c0d11001b000000c7b211000c000000771411003b0000001cd4110000000000b214110047000000f914110049000000421511002e0000001cd4110000000000b09a1100340000001cd4110000000000ab0911000c0000007015110045000000b5151100400000001cd41100000000005fb211000b000000f51511003e00000033161100540000008716110027000000a611110039000000ae1611001b000000bab211000d0000001cd41100000000001c0d11001b000000c7b211000c000000211211004a0000006b1211001a0000001cd4110000000000851211004a000000cf1211001d0000001cd4110000000000ab0911000c000000ec12110035000000211311004400000065131100150000001cd41100000000007a13110049000000c3131100090000001cd41100000000005fb211000b000000d81011003f00000017111100470000005e11110048000000cc1311003b0000000714110047000000df11110027000000bab211000d0000001cd41100000000004e14110029000000c7b211000c0000005e0f11003d0000001cd41100000000009b0f11004b000000e60f1100470000002d1011004c0000001cd4110000000000ab0911000c000000791011004b000000c4101100140000001cd41100000000005fb211000b000000d81011003f00000017111100470000005e11110048000000a611110039000000df11110027000000bab211000d0000001cd4110000000000061211001b000000c7b211000c00000000000000570f110007000000000000009db611000c000000370d1100450000007c0d11001a0000001cd4110000000000960d110048000000de0d11003e0000001cd4110000000000cb0b1100410000001c0e11003c0000001cd4110000000000ab0911000c000000580e1100440000001cd41100000000005fb211000b0000009c0e110021000000bd0e11004f0000000c0f110030000000bab211000d0000001cd41100000000003c0f11001b000000c7b211000c000000410a1100570000001cd4110000000000980a110045000000dd0a1100420000001cd41100000000001f0b110049000000680b1100260000008e0b11003d0000001cd4110000000000cb0b1100410000000c0c1100390000001cd41100000000005fb211000b000000450c1100180000005d0c11004a000000a70c11004e000000f50c110027000000bab211000d0000001cd41100000000001c0d11001b000000c7b211000c000000f4081100380000001cd41100000000002c09110045000000710911003a0000001cd4110000000000ab0911000c000000b7091100460000001cd41100000000005fb211000b000000fd09110044000000c7b211000c0000002043616e63656c20746865206162696c69747920746f20757365206061735f7265636f76657265646020666f7220606163636f756e74602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207265676973746572656420746f2062652061626c6520746f206d616b652063616c6c73206f6e20626568616c66206f6620746865207265636f7665726564206163636f756e742e20506172616d65746572733a202d20606163636f756e74603a20546865207265636f7665726564206163636f756e7420796f75206172652061626c6520746f2063616c6c206f6e2d626568616c662d6f662e202d204f6e652073746f72616765206d75746174696f6e20746f20636865636b206163636f756e74206973207265636f7665726564206279206077686f602e204f2831292052656d6f766520746865207265636f766572792070726f6365737320666f7220796f7572206163636f756e742e205265636f7665726564206163636f756e747320617265207374696c6c2061636365737369626c652e204e4f54453a205468652075736572206d757374206d616b65207375726520746f2063616c6c2060636c6f73655f7265636f7665727960206f6e20616c6c20616374697665207265636f7665727920617474656d707473206265666f72652063616c6c696e6720746869732066756e6374696f6e20656c73652069742077696c6c206661696c2e205061796d656e743a2042792063616c6c696e6720746869732066756e6374696f6e20746865207265636f76657261626c65206163636f756e742077696c6c20756e72657365727665207468656972207265636f7665727920636f6e66696775726174696f6e206465706f7369742e202860436f6e6669674465706f7369744261736560202b2060467269656e644465706f736974466163746f7260202a20235f6f665f667269656e64732920546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d7573742062652061207265636f76657261626c65206163636f756e742028692e652e206861732061207265636f7665727920636f6e66696775726174696f6e292e204b65793a204620286c656e206f6620667269656e647329202d204f6e652073746f72616765207265616420746f206765742074686520707265666978206974657261746f7220666f7220616374697665207265636f7665726965732e204f283129202d204f6e652073746f7261676520726561642f72656d6f766520746f2067657420746865207265636f7665727920636f6e66696775726174696f6e2e204f2831292c20436f646563204f284629202d204f6e652062616c616e63652063616c6c20746f20756e72657365727665642e204f28582920546f74616c20436f6d706c65786974793a204f2846202b2058292041732074686520636f6e74726f6c6c6572206f662061207265636f76657261626c65206163636f756e742c20636c6f736520616e20616374697665207265636f766572792070726f6365737320666f7220796f7572206163636f756e742e205061796d656e743a2042792063616c6c696e6720746869732066756e6374696f6e2c20746865207265636f76657261626c65206163636f756e742077696c6c207265636569766520746865207265636f76657279206465706f73697420605265636f766572794465706f7369746020706c616365642062792074686520726573637565722e207265636f76657261626c65206163636f756e74207769746820616e20616374697665207265636f766572792070726f6365737320666f722069742e202d206072657363756572603a20546865206163636f756e7420747279696e6720746f207265736375652074686973207265636f76657261626c65206163636f756e742e204b65793a205620286c656e206f6620766f756368696e6720667269656e647329202d204f6e652073746f7261676520726561642f72656d6f766520746f206765742074686520616374697665207265636f766572792070726f636573732e204f2831292c20436f646563204f285629202d204f6e652062616c616e63652063616c6c20746f20726570617472696174652072657365727665642e204f28582920546f74616c20436f6d706c65786974793a204f2856202b2058297265736375657220416c6c6f772061207375636365737366756c207265736375657220746f20636c61696d207468656972207265636f7665726564206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d7573742062652061202272657363756572222077686f20686173207375636365737366756c6c7920636f6d706c6574656420746865206163636f756e74207265636f766572792070726f636573733a20636f6c6c656374656420607468726573686f6c6460206f72206d6f726520766f75636865732c20776169746564206064656c61795f706572696f646020626c6f636b732073696e636520696e6974696174696f6e2e202d20606163636f756e74603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f20636c61696d20686173206265656e207375636365737366756c6c792020207265636f766572656420627920796f752e204b65793a204620286c656e206f6620667269656e647320696e20636f6e666967292c205620286c656e206f6620766f756368696e6720667269656e647329202d204f6e652073746f72616765207265616420746f2067657420746865207265636f7665727920636f6e66696775726174696f6e2e204f2831292c20436f646563204f284629202d204f6e652073746f72616765207265616420746f206765742074686520616374697665207265636f766572792070726f636573732e204f2831292c20436f646563204f285629202d204f6e652073746f72616765207265616420746f20676574207468652063757272656e7420626c6f636b206e756d6265722e204f283129202d204f6e652073746f726167652077726974652e204f2831292c20436f646563204f2856292e20546f74616c20436f6d706c65786974793a204f2846202b20562920416c6c6f7720612022667269656e6422206f662061207265636f76657261626c65206163636f756e7420746f20766f75636820666f7220616e20616374697665207265636f766572792070726f6365737320666f722074686174206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520612022667269656e642220666f7220746865207265636f76657261626c65206163636f756e742e202d20606c6f7374603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f207265636f7665722e202d206072657363756572603a20546865206163636f756e7420747279696e6720746f2072657363756520746865206c6f7374206163636f756e74207468617420796f7520202077616e7420746f20766f75636820666f722e2054686520636f6d62696e6174696f6e206f662074686573652074776f20706172616d6574657273206d75737420706f696e7420746f20616e20616374697665207265636f766572792070726f636573732e202d204f6e652062696e6172792073656172636820746f20636f6e6669726d2063616c6c6572206973206120667269656e642e204f286c6f674629202d204f6e652062696e6172792073656172636820746f20636f6e6669726d2063616c6c657220686173206e6f7420616c726561647920766f75636865642e204f286c6f67562920546f74616c20436f6d706c65786974793a204f2846202b206c6f6746202b2056202b206c6f67562920496e697469617465207468652070726f6365737320666f72207265636f766572696e672061207265636f76657261626c65206163636f756e742e205061796d656e743a20605265636f766572794465706f736974602062616c616e63652077696c6c20626520726573657276656420666f7220696e6974696174696e6720746865207265636f766572792070726f636573732e2054686973206465706f7369742077696c6c20616c7761797320626520726570617472696174656420746f20746865206163636f756e7420747279696e6720746f206265207265636f76657265642e205365652060636c6f73655f7265636f76657279602e202d20606163636f756e74603a20546865206c6f7374206163636f756e74207468617420796f752077616e7420746f207265636f7665722e2054686973206163636f756e742020206e6565647320746f206265207265636f76657261626c652028692e652e20686176652061207265636f7665727920636f6e66696775726174696f6e292e202d204f6e652073746f72616765207265616420746f20636865636b2074686174206163636f756e74206973207265636f76657261626c652e204f284629202d204f6e652073746f72616765207265616420746f20636865636b20746861742074686973207265636f766572792070726f63657373206861736e277420616c726561647920737461727465642e204f283129202d204f6e652063757272656e63792072657365727665206f7065726174696f6e2e204f285829202d204f6e652073746f726167652077726974652e204f2831292e204372656174652061207265636f7665727920636f6e66696775726174696f6e20666f7220796f7572206163636f756e742e2054686973206d616b657320796f7572206163636f756e74207265636f76657261626c652e205061796d656e743a2060436f6e6669674465706f7369744261736560202b2060467269656e644465706f736974466163746f7260202a20235f6f665f667269656e64732062616c616e63652077696c6c20626520726573657276656420666f722073746f72696e6720746865207265636f7665727920636f6e66696775726174696f6e2e2054686973206465706f7369742069732072657475726e656420696e2066756c6c207768656e2074686520757365722063616c6c73206072656d6f76655f7265636f76657279602e202d2060667269656e6473603a2041206c697374206f6620667269656e647320796f7520747275737420746f20766f75636820666f72207265636f7665727920617474656d7074732e20202053686f756c64206265206f72646572656420616e6420636f6e7461696e206e6f206475706c69636174652076616c7565732e202d20607468726573686f6c64603a20546865206e756d626572206f6620667269656e64732074686174206d75737420766f75636820666f722061207265636f7665727920617474656d70742020206265666f726520746865206163636f756e742063616e206265207265636f76657265642e2053686f756c64206265206c657373207468616e206f7220657175616c20746f202020746865206c656e677468206f6620746865206c697374206f6620667269656e64732e202d206064656c61795f706572696f64603a20546865206e756d626572206f6620626c6f636b732061667465722061207265636f7665727920617474656d707420697320696e697469616c697a656420202074686174206e6565647320746f2070617373206265666f726520746865206163636f756e742063616e206265207265636f76657265642e202d204b65793a204620286c656e206f6620667269656e647329202d204f6e652073746f72616765207265616420746f20636865636b2074686174206163636f756e74206973206e6f7420616c7265616479207265636f76657261626c652e204f2831292e202d204120636865636b20746861742074686520667269656e6473206c69737420697320736f7274656420616e6420756e697175652e204f284629202d204f6e652073746f726167652077726974652e204f2831292e20436f646563204f2846292e667269656e647364656c61795f706572696f6420416c6c6f7720524f4f5420746f2062797061737320746865207265636f766572792070726f6365737320616e642073657420616e20612072657363756572206163636f756e7420666f722061206c6f7374206163636f756e74206469726563746c792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f524f4f545f2e202d20606c6f7374603a2054686520226c6f7374206163636f756e742220746f206265207265636f76657265642e202d206072657363756572603a20546865202272657363756572206163636f756e74222077686963682063616e2063616c6c20617320746865206c6f7374206163636f756e742e202d204f6e652073746f72616765207772697465204f283129202d204f6e65206576656e746c6f73742053656e6420612063616c6c207468726f7567682061207265636f7665726564206163636f756e742e202d20606163636f756e74603a20546865207265636f7665726564206163636f756e7420796f752077616e7420746f206d616b6520612063616c6c206f6e2d626568616c662d6f662e202d206063616c6c603a205468652063616c6c20796f752077616e7420746f206d616b65207769746820746865207265636f7665726564206163636f756e742e202d204f6e652073746f72616765206c6f6f6b757020746f20636865636b206163636f756e74206973207265636f7665726564206279206077686f602e204f2831295265636f76657279000000000000c01d11000b00000001050000000000009db611000c00000000000000cb1d11003a000000000000000000000000000000000000001cd41100081e11000000000000000000181e110001000000000000000000000000000000201e11001000000002050500000000009db611000c000000000000009db611000c00000000000000301e11003a000000000000001cd411006c1e110000000000000000007c1e1100040000000000000000000000000000009c1e11000500000001020000000000009db611000c000000000000009db611000c000000000000000000000000000000000000001cd41100a41e11000000000000000000b41e11000300000000000000000000005265636f76657261626c655265636f76657279436f6e6669673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e00000016000000000000000100000032000000b81f1100420000004163746976655265636f7665726965734163746976655265636f766572793c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e0000160000000000000001000000320000002e1f11001a0000001cd4110000000000481f1100450000008d1f11002b00000050726f787900000016000000000000000100000032000000cc1e1100240000001cd4110000000000f01e11003e00000020546865206c697374206f6620616c6c6f7765642070726f7879206163636f756e74732e204d61702066726f6d2074686520757365722077686f2063616e2061636365737320697420746f20746865207265636f7665726564206163636f756e742e20416374697665207265636f7665727920617474656d7074732e204669727374206163636f756e7420697320746865206163636f756e7420746f206265207265636f76657265642c20616e6420746865207365636f6e64206163636f756e7420697320746865207573657220747279696e6720746f207265636f76657220746865206163636f756e742e2054686520736574206f66207265636f76657261626c65206163636f756e747320616e64207468656972207265636f7665727920636f6e66696775726174696f6e2e00001600000008000000040000009a0000009b00000000000000000000009c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016fc1000060000000105000000000000285f11000e00000000000000c42111003a000000000000000000000000000000000000001cd41100002211000000000000000000102211000100000000000000010000000000000018221100060000000105000000000000aa39110007000000000000001e2211001b000000000000000000000000000000000000001cd411003c22110000000000000000004c2211000100000000000000000000005665633c4f7074696f6e3c5363686564756c65643c3c542061732054726169743e3a3a43616c6c2c20543a3a426c6f636b4e756d6265723e3e3e00001600000000000000010000003000000094221100530000004c6f6f6b75705461736b416464726573733c543a3a426c6f636b4e756d6265723e000000160000000000000001000000320000005422110040000000204c6f6f6b75702066726f6d206964656e7469747920746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e005c23110049000000920200001a000000942c11004800000002020000230000005c23110049000000a301000027000000010000000100000000000000000000000000000001000000617373657274696f6e206661696c65643a206d6964203c3d206c656e5c231100490000008e0200001d0000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f736c6963652f736f72742e72730000005c23110049000000a1000000300000005c23110049000000a400000030000000ffffff1f87241100160000009d24110016000000542411002d0000008124110003000000842411000300000000000000200000000000000002000000000000000200000000000000030000000100000020000000080000000200000000000000000000000200000003000000020000002000000000000000020000000000000002000000000000000300000042697450747220726567696f6e2063616e6e6f7420777261702074686520616464726573732073706163653a20202b20203d204269745074722063616e6e6f7420616464726573732020626974733b20746865206d6178696d756d2069732000e424110066000000700000002e000000e4241100660000008f00000034000000e42411006600000068000000340000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f747269652f7372632f6e6f64655f636f6465632e7273000000000000d1f510000b00000000000000bc251100020000000000000000000000c5f510000c00000000000000cc251100020000000000000000000000b8f510000d00000000000000dc251100010000000000000000000000b1f510000700000000000000e42511000100000000000000c526110042000000072711002a00000057261100450000009c261100290000001c2611003b000000ec251100300000002043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e00000000000000b6f610000a00000000000000f4281100010000000000000000000000de8a11000d00000000000000fc281100010000000000000000000000a6f610001000000000000000042911000100000000000000000000009cf610000a000000000000000c29110001000000000000000000000093f6100009000000000000001429110001000000000000000000000085f610000e000000000000001c29110001000000000000000000000073f6100012000000000000002429110001000000000000000000000065f610000e000000000000002c2911000100000000000000000000005bf610000a000000000000003429110001000000000000000000000052f6100009000000000000003c29110001000000000000000000000047f610000b000000000000004429110001000000000000000000000039f610000e000000000000004c29110001000000000000000000000030f6100009000000000000005429110001000000000000000000000025f610000b000000000000005c2911000100000000000000000000007456110008000000000000006429110001000000000000000000000019f610000c00000000000000242911000100000000000000272c11003d000000032c110024000000ce2b110035000000a32b11002b000000702b110033000000482b1100280000001c2b11002c000000e42a110038000000b02a110034000000852a11002b0000003e2a1100470000000e2a110030000000d32911003b00000093291100400000006c291100270000002054686572652077617320616e206f766572666c6f7720696e20612063616c63756c6174696f6e20546865726520617265207374696c6c20616374697665207265636f7665727920617474656d7074732074686174206e65656420746f20626520636c6f73656420546865207468726573686f6c6420666f72207265636f766572696e672074686973206163636f756e7420686173206e6f74206265656e206d6574205468697320757365722068617320616c726561647920766f756368656420666f722074686973207265636f766572792054686520667269656e64206d757374207761697420756e74696c207468652064656c617920706572696f6420746f20766f75636820666f722074686973207265636f766572792054686973206163636f756e74206973206e6f74206120667269656e642077686f2063616e20766f7563682041207265636f766572792070726f6365737320686173206e6f74207374617274656420666f72207468697320726573637565722041207265636f766572792070726f636573732068617320616c7265616479207374617274656420666f722074686973206163636f756e742054686973206163636f756e7420697320616c72656164792073657420757020666f72207265636f766572792054686973206163636f756e74206973206e6f742073657420757020666f72207265636f7665727920467269656e6473206c697374206d75737420626520736f7274656420616e642066726565206f66206475706c69636174657320467269656e6473206c697374206d757374206265206c657373207468616e206d617820667269656e647320467269656e6473206c697374206d7573742062652067726561746572207468616e207a65726f20616e64207468726573686f6c64205468726573686f6c64206d7573742062652067726561746572207468616e207a65726f2055736572206973206e6f7420616c6c6f77656420746f206d616b6520612063616c6c206f6e20626568616c66206f662074686973206163636f756e743432110063000000720100003300000034321100630000007201000011000000942c11004800000001020000230000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f736c6963652f6d6f642e7273617373657274696f6e206661696c65643a2073656c662e6c656e2829203c204341504143495459617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d2031617373657274696f6e206661696c65643a2073656c662e686569676874203e2030617373657274696f6e206661696c65643a2073656c662e6c656e2829203e2030842d110056000000a5040000520000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962616c6c6f632f636f6c6c656374696f6e732f62747265652f6e6f64652e72730000842d110056000000b60400004c000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d2031436865636b576569676874436865636b457261436865636b4e6f6e6365436865636b47656e657369734368617267655472616e73616374696f6e5061796d656e74436865636b56657273696f6e004e6f6e5a65726f526566436f756e744e6f6e44656661756c74436f6d706f736974654661696c6564546f4578747261637452756e74696d6556657273696f6e5370656356657273696f6e4e65656473546f496e637265617365496e76616c6964537065634e616d653a65787472696e7369635f696e64657866696c6c5f626c6f636b72656d61726b7365745f686561705f70616765737365745f636f64657365745f636f64655f776974686f75745f636865636b737365745f6368616e6765735f747269655f636f6e6669677365745f73746f726167656b696c6c5f73746f726167656b696c6c5f7072656669787375696369646553797374656d426c6f636b486173684e756d626572506172656e744861736845787472696e73696373526f6f744469676573740000000000743011001000000000000000843011000100000000000000000000008c301100010000000000000000000000943011000f00000000000000a4301100020000000000000000000000b4301100010000000000000000000000bc3011000b000000000000001cd41100000000000000000000000000c8301100010000000000000000000000d03011000a0000000000000044a51100010000000000000000000000dc301100010000000000000000000000e43011000d0000000000000044a51100010000000000000000000000f4301100010000000000000045787472696e73696353756363657373583111000c000000643111002500000045787472696e7369634661696c656400175611000d000000583111000c0000004331110015000000436f646555706461746564002e311100150000004e65774163636f756e740000133111001b0000004b696c6c65644163636f756e74000000fc3011001700000020416e206163636f756e7420776173207265617065642e2041206e6577206163636f756e742077617320637265617465642e20603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e4469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e4f6666656e6365735265706f727473436f6e63757272656e745265706f727473496e64657800001600000000000000010000001a0000004576656e74730000d83111002e000000063211000d0000004552524f523a2072657475726e6564206e6578745f6b657920686173206e6f2076616c75653a0a6b6579206973200a6e6578745f6b65792069732044656665727265644f6666656e636573003432110063000000980100001e0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f70687261676d656e2f7372632f6c69622e7273000000000000000000617474656d707420746f20646976696465206279207a65726f000000cc32110048000000bb0100002d0000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f6f70732f61726974682e727384341100660000007100000013000000843411006600000088000000180000008434110066000000b4000000190000008434110066000000ff00000042000000843411006600000013010000420000008434110066000000570100001500000084341100660000005c0100001e0000001600000000000000010000002a00000084341100660000005f0000001a00000084341100660000005f0000002c0000008434110066000000cc010000240000008434110066000000cd010000240000008434110066000000f1010000230000008434110066000000f30100002400000084341100660000001602000035000000843411006600000017020000350000008434110066000000200200002400000084341100660000004202000035000000843411006600000043020000350000008434110066000000580200002b000000843411006600000059020000280000008434110066000000630200002b000000843411006600000064020000280000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f70687261676d656e2f7372632f7265647563652e72734576656e74546f7069637300000000000000e72e11000a00000000000000b0361100010000000000000000000000c8361100010000000000000000000000f12e11000600000000000000d0361100010000000000000000000000e8361100010000000000000000000000f72e11000e00000000000000f036110001000000000000000000000008371100010000000000000000000000052f1100080000000000000010371100010000000000000000000000283711000100000000000000000000000d2f110017000000000000001037110001000000000000000000000030371100010000000000000000000000242f1100170000000000000038371100010000000000000000000000503711000100000000000000000000003b2f11000b000000000000005837110001000000000000000000000070371100010000000000000000000000462f11000c000000000000007837110001000000000000000000000090371100010000000000000000000000522f11000b0000000000000098371100010000000000000000000000b03711000100000000000000000000005d2f110007000000000000001cd41100000000000000000000000000b8371100020000000000000000000000593a110006000000000000005f3a110007000000173a11004200000000000000103a11000700000000000000aa39110007000000f53911001b00000000000000f039110005000000000000002e5d110003000000b13911003f00000000000000a63911000400000000000000aa391100070000008c3911001a0000004539110047000000000000001239110013000000000000002539110020000000ea3811002800000000000000d83811000500000000000000dd3811000d000000bd3811001b00000000000000b13811000400000000000000b538110008000000933811001e000000000000008a381100060000000000000090381100030000004538110045000000c8371100590000002138110024000000204b696c6c207468652073656e64696e67206163636f756e742c20617373756d696e6720746865726520617265206e6f207265666572656e636573206f75747374616e64696e6720616e642074686520636f6d706f73697465206461746120697320657175616c20746f206974732064656661756c742076616c75652e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e7072656669784b6579204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e6b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e6974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e6368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e2053657420746865206e65772072756e74696d6520636f64652e636f64655665633c75383e2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e7061676573204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f50657262696c6c000000000000088711000700000001020000000000009db611000c00000000000000903f110025000000000000000000000000000000000000001cd41100b83f11000000000000000000c83f110001000000000000000100000000000000d03f11000e00000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd411001c4011000000000000000000e03f110001000000000000000000000000000000e83f1100130000000000000000000000fb3f110006000000000000000000000000000000000000000000000000000000000000001cd411001c401100000000000000000004401100010000000000000000000000000000000c4011001000000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd411001c40110000000000000000002c401100010000000000000000000000000000006a2f1100090000000105000000000000285f11000e000000000000003440110007000000000000000000000000000000000000001cd411006c40110000000000000000003c40110001000000000000000100000000000000444011000d0000000105000000000000145611000300000000000000aa39110007000000000000000000000000000000000000001cd41100404a110000000000000000005440110001000000000000000100000000000000732f1100060000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd41100f840110000000000000000005c40110001000000000000000100000000000000792f11000a00000000000000000000003440110007000000000000000000000000000000000000000000000000000000000000001cd411006c40110000000000000000006440110001000000000000000100000000000000832f11000e00000000000000000000003440110007000000000000000000000000000000000000000000000000000000000000001cd411006c40110000000000000000007c40110001000000000000000100000000000000912f1100060000000000000000000000844011000b000000000000000000000000000000000000000000000000000000000000001cd41100904011000000000000000000a040110001000000000000000100000000000000c0311100060000000000000000000000a840110023000000000000000000000000000000000000000000000000000000000000001cd41100cc4011000000000000000000dc40110001000000000000000100000000000000e44011000a0000000000000000000000ee4011000a000000000000000000000000000000000000000000000000000000000000001cd41100f840110000000000000000000841110001000000000000000100000000000000ea3411000b00000001020000000000003440110007000000000000001041110021000000000000000000000000000000000000001cd41100344111000000000000000000444111000a00000000000000010000000000000094411100120000000000000000000000a641110016000000000000000000000000000000000000000000000000000000000000001cd41100bc4111000000000000000000cc41110001000000000000000000000000000000d44111000e0000000000000000000000e241110005000000000000000000000000000000000000000000000000000000000000001cd41100e84111000000000000000000f84111000100000000000000000000004163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e0000001600000000000000010000009d000000164711003a00000045787472696e736963436f756e740000e84611002e000000416c6c45787472696e73696373576569676874576569676874000000a346110045000000416c6c45787472696e736963734c656e160000000000000001000000320000005346110050000000543a3a48617368002d4611002600000045787472696e73696344617461000000de4511004f0000009c45110042000000804511001c0000001600000000000000010000009e0000003b451100450000004469676573744f663c543e0016000000000000000100000030000000ff4411003c0000005665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e001600000000000000010000009f000000d7441100280000004576656e74436f756e744576656e74496e6465781600000000000000010000002e000000a94411002e0000005665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e000000160000000000000001000000300000007742110049000000c0421100250000001cd4110000000000e54211005400000039431100510000008a431100390000001cd4110000000000c343110053000000164411005300000069441100400000004c61737452756e74696d65557067726164654c61737452756e74696d6555706772616465496e666f160000000000000001000000320000002242110055000000457865637574696f6e50686173655068617365001600000000000000010000003200000000421100220000002054686520657865637574696f6e207068617365206f662074686520626c6f636b2e2053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e4e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b207165649c4711005c000000750300001c0000009c4711005c0000007d030000110000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f73797374656d2f7372632f6c69622e72730000000091311100070000000105000000000000584911000d000000000000006549110034000000000000000000000000000000000000001cd411009c4911000000000000000000ac4911000100000000000000000000000000000013321100100000000000000000000000b449110019000000000000000000000000000000000000000000000000000000000000001cd41100d04911000000000000000000e04911000200000000000000010000000000000098311100160000000205050000000000f04911000400000000000000f44911000e00000000000000024a110012000000000000001cd41100144a11000000000000000000244a1100010000000000000001000000000000002c4a1100120000000105000000000000f04911000400000000000000aa39110007000000000000000000000000000000000000001cd41100404a11000000000000000000504a11000600000000000000010000005265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e00000016000000000000000100000032000000534c1100520000005665633c44656665727265644f6666656e63654f663c543e3e00000016000000000000000100000030000000e94b110059000000424c1100110000004b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e160000000000000001000000300000009f4b11004a0000005265706f72747342794b696e64496e646578000016000000000000000100000030000000804a1100440000001cd4110000000000c44a11002f0000001cd4110000000000f34a110052000000454b11005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d69747465642061742061206c617465722074696d652e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e706172613a646f75626c652d766f7465696d2d6f6e6c696e653a6f66666c696e5472616e73616374696f6e5061796d656e740000000000304d1100110000000000000000000000414d11000a000000000000000000000000000000000000000000000000000000000000001cd411004c4d110000000000000000001cd411000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572001600000000000000010000009900000000000000cc4d11001200000000000000de4d11000c000000000000001cd41100ec4d11000000000000000000fc4d1100010000000000000000000000044e11001200000000000000de4d11000c000000000000001cd41100184e11000000000000000000284e110001000000000000005472616e73616374696f6e4261736546656542616c616e63654f663c543e0000160000000000000001000000a0000000734e1100370000005472616e73616374696f6e427974654665650000160000000000000001000000a1000000304e110043000000205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e3a6865617070616765733a636f64653a6368616e6765735f74726965000000000000c82e11000f00000000000000544f1100020000000000000000000000ae2e11001a00000000000000644f1100020000000000000000000000912e11001d00000000000000744f11000300000000000000000000007e2e110013000000000000008c4f11000100000000000000000000006f2e11000f00000000000000944f110001000000000000000f51110045000000fa50110015000000a950110051000000fa501100150000002a5011003c0000001cd41100000000006650110043000000ea4f1100400000009c4f11004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e20546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d65626174636861735f73756261735f6d756c7469617070726f76655f61735f6d756c746963616e63656c5f61735f6d756c7469000000000000905211001000000000000000a0521100020000000000000000000000b0521100020000000000000000000000c05211000e000000000000001cd41100000000000000000000000000d0521100010000000000000000000000d85211000b00000000000000e4521100020000000000000000000000f4521100020000000000000000000000045311001000000000000000145311000300000000000000000000002c5311000200000000000000000000003c53110010000000000000004c5311000400000000000000000000006c5311000200000000000000000000007c5311001100000000000000145311000300000000000000000000009053110002000000000000004261746368496e7465727275707465641456110003000000175611000d000000ab5511005600000001561100130000004261746368436f6d706c65746564000078551100330000004e65774d756c7469736967009aa61100090000009aa6110009000000065511005200000058551100200000004d756c7469736967417070726f76616c9aa61100090000008c541100160000009aa6110009000000b054110056000000625411002a0000004d756c746973696745786563757465649aa61100090000008c541100160000009aa6110009000000a25411000e000000175411004b000000625411002a0000004d756c746973696743616e63656c6c6564000000a05311004c000000ec5311002b0000002041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e20466972737420706172616d20697320746865206163636f756e7420746861742069732063616e63656c6c696e672c20746869726420697320746865206d756c7469736967206163636f756e742e2041206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742e54696d65706f696e743c426c6f636b4e756d6265723e4469737061746368526573756c742041206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e20466972737420706172616d20697320746865206163636f756e7420746861742069732041206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c207365636f6e6420697320746865206d756c7469736967206163636f756e742e204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e75333244697370617463684572726f72446561644163636f756e744578697374696e6756657374696e675363686564756c654b656570416c6976654578697374656e7469616c4465706f736974496e73756666696369656e7442616c616e63654f766572666c6f774c69717569646974795265737472696374696f6e7356657374696e6742616c616e63657365745f62616c616e63657472616e736665725f6b6565705f616c69766542616c616e636573546f74616c49737375616e63654c6f636b730000000000b4571100070000000000000064a51100020000000000000000000000bc571100010000000000000000000000c4571100080000000000000064a51100020000000000000000000000cc571100020000000000000000000000dc5711000800000000000000e4571100030000000000000000000000fc571100010000000000000000000000045811000a00000000000000105811000300000000000000000000002858110001000000000000000000000030581100070000000000000064a51100020000000000000000000000385811000100000000000000456e646f776564003d5911002f000000447573744c6f7374ce581100500000001e5911001f0000005472616e736665729aa61100090000009aa611000900000009a7110007000000a85811002600000042616c616e636553657400009aa611000900000009a711000700000009a711000700000077581100310000004465706f73697400405811003700000020536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20412062616c616e6365207761732073657420627920726f6f74202877686f2c20667265652c207265736572766564292e205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c7565292e20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e74696d657374616d702073657420696e20626c6f636b20646f65736e2774206d6174636820736c6f7420696e207365616c506f7374496e666f3a20426162654c6174656e6573730000000000245d11000a00000000000000000000002e5d110003000000000000000000000000000000000000000000000000000000000000001cd41100b05d11000000000000000000345d1100010000000000000001000000000000003c5d11000b0000000000000000000000475d110027000000000000000000000000000000000000000000000000000000000000001cd41100705d11000000000000000000805d110001000000000000000100000000000000885d11000b00000000000000000000002e5d110003000000000000000000000000000000000000000000000000000000000000001cd41100b05d11000000000000000000945d110002000000000000000100000000000000a45d11000b00000000000000000000002e5d110003000000000000000000000000000000000000000000000000000000000000001cd41100b05d11000000000000000000c05d110001000000000000000100000000000000c85d11000a0000000000000000000000d25d110016000000000000000000000000000000000000000000000000000000000000001cd41100485e11000000000000000000e85d11000a000000000000000100000000000000385e11000e0000000000000000000000d25d110016000000000000000000000000000000000000000000000000000000000000001cd41100485e11000000000000000000585e110001000000000000000100000000000000605e11000c00000000000000000000001456110003000000000000000000000000000000000000000000000000000000000000001cd41100385f110000000000000000006c5e110009000000000000000100000000000000b45e1100110000000105000000000000145611000300000000000000c55e11001d000000000000000000000000000000000000001cd41100e45e110000000000000000001cd4110000000000000000000100000000000000f45e11000b0000000000000000000000ff5e110008000000000000000000000000000000000000000000000000000000000000001cd41100085f11000000000000000000185f110002000000000000000000000000000000ab591100080000000000000000000000285f11000e000000000000000000000000000000000000000000000000000000000000001cd41100385f11000000000000000000485f110005000000000000000100000045706f6368496e6465787536340000009664110015000000417574686f7269746965735665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e0000160000000000000001000000300000007b6411001b00000047656e65736973536c6f7400196411003e000000576411002400000043757272656e74536c6f740016000000000000000100000099000000046411001500000052616e646f6d6e6573737363686e6f72726b656c3a3a52616e646f6d6e6573733e6211002e0000001cd41100000000006c6211000b0000001cd41100000000007762110041000000b86211003e000000f6621100450000003b631100450000008063110041000000c1631100430000004e65787452616e646f6d6e6573730000160000000000000001000000a200000027621100170000005365676d656e74496e646578e26011001f0000001cd4110000000000016111003d0000003e611100400000007e611100250000001cd4110000000000a36111003b000000de611100420000002062110007000000556e646572436f6e737472756374696f6e5665633c7363686e6f72726b656c3a3a5261775652464f75747075743e000016000000000000000100000030000000496e697469616c697a65644d6179626556726600160000000000000001000000320000005b601100400000009b60110047000000543a3a426c6f636b4e756d62657200001600000000000000010000002e000000705f1100360000001cd4110000000000a65f110045000000eb5f1100440000002f6011002c00000020486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e6564207570206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636b20657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f63682072616e646f6d6e6573732e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e00000000001c6511000d000000000000002e5d110003000000000000001cd411002c65110000000000000000003c6511000200000000000000000000004c651100110000000000000004cf110009000000000000001cd4110060651100000000000000000070651100050000000000000045706f63684475726174696f6e000000160000000000000001000000a3000000c8661100430000000b6711003f0000004578706563746564426c6f636b54696d65000000160000000000000001000000a40000009865110041000000d9651100440000001d661100410000005e66110042000000a06611002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e20546865206e756d626572206f66202a2a736c6f74732a2a207468617420616e2065706f63682074616b65732e20576520636f75706c652073657373696f6e7320746f2065706f6368732c20692e652e2077652073746172742061206e65772073657373696f6e206f6e636520746865206e65772065706f636820626567696e732e65706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b2071656400b46711005a0000006a0100001b000000b46711005a00000072010000200000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f626162652f7372632f6c69622e7273000000000000545111000500000000000000ec6811000100000000000000000000000469110012000000000000000000000059511100060000000000000094691100020000000000000000000000c46911000700000000000000000000005f5111000800000000000000fc6911000400000000000000000000005c6a1100290000000000000000000000675111001000000000000000a46b1100040000000000000000000000046c1100200000000000000000000000775111000f00000000000000046d1100040000000000000000000000646d1100160000000000000000000000817a11000500000000000000867a11001700000041781100200000001cd4110000000000617811003b0000001cd41100000000009c7811001f0000001cd4110000000000bb7811003c0000001cd41100000000005fb211000b000000f778110029000000bab211000d000000c7b211000c0000001cd41100000000002079110056000000767911004d000000c379110056000000197a1100540000006d7a1100140000000000000034b611000500000000000000627111000300000000000000c97711000400000000000000cd77110017000000e4771100380000001cd4110000000000b09a1100340000001cd41100000000005fb211000b0000001c78110025000000c7b211000c000000000000005971110009000000000000006271110003000000000000006571110011000000000000007671110011000000000000005b7511000f000000000000006a7511002100000000000000c97711000400000000000000cd77110017000000ba71110056000000107211003f0000001cd41100000000008b7511002d0000001cd41100000000004f72110054000000a372110058000000fb7211000e0000001cd4110000000000b09a1100340000001cd41100000000009c6e110056000000f26e110051000000436f11001c00000009731100570000006073110055000000b573110036000000b8751100230000001cd4110000000000db7511004800000023761100470000001cd41100000000006a76110057000000c17611005600000017771100380000001cd41100000000005fb211000b0000004f771100150000001470110034000000487011005000000098701100520000006477110049000000ea7011003000000039741100360000006f7411003f000000bab211000d000000ad7711001c000000ae7411004c000000fa741100240000001e7511003d000000c7b211000c000000000000005971110009000000000000006271110003000000000000006571110011000000000000007671110011000000000000005b7511000f000000000000006a7511002100000000000000a97111000900000000000000b271110008000000ba71110056000000107211003f0000001cd41100000000004f72110054000000a372110058000000fb7211000e0000001cd4110000000000b09a1100340000001cd41100000000009c6e110056000000f26e110051000000436f11001c00000009731100570000006073110055000000b573110036000000d66f1100340000001cd4110000000000eb7311004e0000001cd41100000000005fb211000b0000000a7011000a000000147011003400000048701100500000009870110052000000ea7011003000000039741100360000006f7411003f000000bab211000d000000ae7411004c000000fa741100240000001e7511003d000000c7b211000c00000000000000597111000900000000000000627111000300000000000000657111001100000000000000767111001100000000000000877111000900000000000000907111001900000000000000a97111000900000000000000b271110008000000146e1100560000006a6e1100320000001cd4110000000000b09a1100340000001cd41100000000009c6e110056000000f26e110051000000436f11001c0000005f6f110058000000b76f11001f000000d66f1100340000001cd41100000000005fb211000b0000000a7011000a000000147011003400000048701100500000009870110052000000ea70110030000000bab211000d0000001a711100220000003c7111001d000000c7b211000c0000002043616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c7920666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869732064697370617463682e204d6179206e6f7420626520656d7074792e202d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e20666f7220746869732064697370617463682e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e202d20604f285329602e202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f662020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e202d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e202d2053746f726167653a2072656d6f766573206f6e65206974656d2e7468726573686f6c647531366f746865725f7369676e61746f726965735665633c543a3a4163636f756e7449643e74696d65706f696e7454696d65706f696e743c543a3a426c6f636b4e756d6265723e63616c6c5f686173685b75383b2033325d20526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e7420696620617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e205061796d656e743a20604d756c74697369674465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c757320607468726573686f6c64602074696d657320604d756c74697369674465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f722069732063616e63656c6c65642e202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e204966206974206973206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e204e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292e202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c207769746820612020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66202020604d756c74697369674465706f73697442617365202b207468726573686f6c64202a204d756c74697369674465706f736974466163746f72602e6d617962655f74696d65706f696e744f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e2049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e202d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e204e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f207573652060617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e20526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f7468657277697365206f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642c206d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e202d20604f2853202b205a202b2043616c6c29602e202d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2e202d2054686520776569676874206f6620746865206063616c6c602e63616c6c426f783c3c542061732054726169743e3a3a43616c6c3e2053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e202d2054686520776569676874206f6620746865206063616c6c60202b2031302c3030302e2053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e20546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c542061732054726169743e3a3a43616c6c3e5574696c69747900000000fc7a11000900000002050200000000009db611000c00000000000000b27111000800000000000000057b110034000000000000001cd411003c7b110000000000000000004c7b11000100000000000000000000004d756c7469736967734d756c74697369673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e00000016000000000000000100000032000000547b1100250000002054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e000000000000006d92110008000000000000002c7c11000200000000000000000000005c7c11001800000000000000000000009f5611000b000000000000001c7d1100030000000000000000000000647d11000d0000000000000000000000799211000e00000000000000cc7d1100030000000000000000000000147e1100020000000000000000000000aa56110013000000000000002c7c1100020000000000000000000000247e11000600000000000000000000007d7f11000400000000000000d9b211002300000000000000817f11000500000000000000867f11001300000063811100360000001cd41100000000009981110042000000db811100480000002382110045000000688211002d0000001cd411000000000095821100460000001cd41100000000005fb211000b000000db8211004c00000027831100330000005a8311005a0000001cd4110000000000b4831100130000001cd4110000000000c7831100540000001b8411004b00000066841100350000009b84110058000000f384110052000000458511003e0000001cd4110000000000c7b211000c000000000000004c8111000300000000000000d9b2110023000000000000004f8111000800000000000000867f11001300000000000000578111000c00000000000000867f110013000000997f1100250000001cd4110000000000be7f110048000000068011004200000048801100460000008e801100400000001cd4110000000000ce8011002d0000001cd41100000000005fb211000b000000fb801100200000001b81110031000000c7b211000c00000000000000777f11000600000000000000d9b2110023000000000000007d7f11000400000000000000d9b211002300000000000000817f11000500000000000000867f110013000000187f1100540000006c7f11000b000000547e110054000000a87e1100100000001cd4110000000000b87e11002f0000001cd4110000000000e77e1100310000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665722045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e736f757263656465737476616c7565436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e77686f6e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e0000000000c55611000d0000000000000000000000e48611000a000000000000000000000000000000000000000000000000000000000000001cd41100f086110000000000000000000087110001000000000000000100000000000000088711000700000001020000000000009db611000c000000000000000f87110017000000000000000000000000000000000000001cd411002887110000000000000000003887110006000000000000000100000000000000d25611000500000001020000000000009db611000c00000000000000688711001c000000000000000000000000000000000000001cd411008487110000000000000000009487110002000000000000000100000000000000a48711000e0000000000000000000000b287110008000000000000000000000000000000000000000000000000000000000000001cd41100bc8711000000000000000000cc871100030000000000000001000000543a3a42616c616e636500001600000000000000010000003600000093891100260000004163636f756e744163636f756e74446174613c543a3a42616c616e63653e0000160000000000000001000000a5000000a28811001b0000001cd4110000000000bd8811005600000013891100300000001cd411000000000043891100500000005665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e160000000000000001000000300000002b8811002e000000598811004900000053746f7261676556657273696f6e52656c6561736573000016000000000000000100000031000000e48711001f0000001cd411000000000003881100280000002053746f726167652076657273696f6e206f66207468652070616c6c65742e20546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054484953204d4159204e4556455220424520494e204558495354454e434520414e4420594554204841564520412060746f74616c28292e69735f7a65726f2829602e2049662074686520746f74616c2069732065766572207a65726f2c207468656e2074686520656e747279202a4d5553542a2062652072656d6f7665642e204e4f54453a2054686973206973206f6e6c79207573656420696e20746865206361736520746861742074686973206d6f64756c65206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e000000000000004f5611001200000000000000e48611000a000000000000001cd41100f48911000000000000000000048a11000100000000000000160000000000000001000000a00000000c8a11003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e000000648a11006a000000a700000009000000648a11006a000000a7000000350000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d312e332e302f7372632f656e636f64655f617070656e642e72736d6f646c70792f7574696c69737562615a65726f5468726573686f6c64546f6f4665775369676e61746f72696573546f6f4d616e795369676e61746f72696573556e657870656374656454696d65706f696e744e6f54696d65706f696e7457726f6e6754696d65706f696e74416c7265616479417070726f7665644e6f417070726f76616c734e656564656453656e646572496e5369676e61746f726965735369676e61746f726965734f75744f664f72646572000000000000de8a11000d00000000000000d48c11000100000000000000000000003a8b11000f00000000000000dc8c1100010000000000000000000000498b11001100000000000000e48c1100010000000000000000000000eb8a11001100000000000000ec8c1100010000000000000000000000fc8a11001200000000000000f48c11000100000000000000000000006d8b11001500000000000000fc8c11000100000000000000000000005a8b11001300000000000000048d11000100000000000000000000004fa3110008000000000000000c8d1100010000000000000000000000559211000800000000000000148d1100010000000000000000000000218b11000b000000000000001c8d11000100000000000000000000002c8b11000e00000000000000248d11000100000000000000000000000e8b110013000000000000002c8d11000100000000000000bd8f11001d000000918f11002c000000698f1100280000003e8f11002b000000128f11002c000000ce8e1100440000008a8e110044000000528e110038000000068e11004c000000be8d110048000000728d11004c000000348d11003e00000020412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e204120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e204e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e204f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e204d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e205468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e20546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e2054686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e2054686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e2043616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e2043616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e205468726573686f6c6420697320746f6f206c6f7720287a65726f292e000000000000915611000e00000000000000bc9011000100000000000000000000007c5611001500000000000000c4901100010000000000000000000000745611000800000000000000cc901100010000000000000000000000615611001300000000000000d49011000100000000000000000000004f5611001200000000000000dc901100010000000000000000000000465611000900000000000000e49011000100000000000000000000002f5611001700000000000000ec901100010000000000000000000000245611000b00000000000000f490110001000000000000001e92110027000000ec91110032000000cf9111001d000000b19111001e000000769111003b00000052911100240000001f91110033000000fc901100230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c756520476f7420616e206f766572666c6f7720616674657220616464696e67204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75654e6f745472616e73666572496e5573654e6f744f776e65724e6f7441737369676e6564636c61696d7472616e7366657266726565666f7263655f7472616e736665720000000000e09211000d00000000000000f092110002000000000000000000000000931100010000000000000000000000089311000a00000000000000149311000100000000000000000000001c9311000100000000000000496e64657841737369676e65640000009aa6110009000000549311000c000000609311001e000000496e64657846726565640000549311000c00000024931100300000002041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e4163636f756e74496e6465782041206163636f756e7420696e646578207761732061737369676e65642e417574686f7273686970417574686f724f6c64556e636c65556e636c65416c7265616479496e636c75646564546f6f48696768556e636c6547656e65736973556e636c65546f6f4d616e79556e636c6573556e636c6573416c7265616479536574496e76616c6964556e636c65506172656e747365745f756e636c6573496e64696365734e657874456e756d536574456e756d5365744163636f756e7473556e636c6573000000000000689211000500000000000000d4941100010000000000000000000000ec9411001000000000000000000000006d92110008000000000000006c9511000200000000000000000000009c951100100000000000000000000000759211000400000000000000d49411000100000000000000000000001c961100100000000000000000000000799211000e000000000000006c9511000200000000000000000000009c96110010000000000000000000000034b611000500000000000000489b11000f000000579b1100270000001cd41100000000007e9b1100380000001cd4110000000000b09a1100340000001cd4110000000000b69b11003d0000001cd411000000000061981100250000001cd41100000000005fb211000b000000869811000a0000009098110027000000109a110019000000bab211000d000000c7b211000c000000000000009ab6110003000000000000009db611000c0000000000000034b611000500000000000000489b11000f000000299a110058000000819a11002f0000001cd4110000000000b09a1100340000001cd4110000000000e49a11004a00000009981100580000001cd411000000000061981100250000001cd41100000000005fb211000b000000869811000a00000090981100270000002e9b11001a000000bab211000d000000c7b211000c000000d6981100260000001cd4110000000000fc981100580000001cd411000000000054991100560000001cd4110000000000aa991100440000001cd4110000000000ee991100220000001cd41100000000005fb211000b000000869811000a0000009098110027000000109a110019000000bab211000d000000c7b211000c0000001c97110056000000729711003b0000001cd4110000000000ad971100320000001cd4110000000000df9711002a00000009981100580000001cd411000000000061981100250000001cd41100000000005fb211000b000000869811000a0000009098110027000000b79811001f000000bab211000d000000c7b211000c00000020466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e202d20604f283129602e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e543a3a4163636f756e74496e6465782041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e000000000014941100080000000102000000000000489b11000f000000000000004c9c11001c000000000000000000000000000000000000001cd41100689c11000000000000000000789c110001000000000000000000000028543a3a4163636f756e7449642c2042616c616e63654f663c543e2916000000000000000100000032000000809c11002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e000000000000f19311000a00000000000000d09c1100010000000000000000000000e89c1100010000000000000000000000099d11000a00000000000000139d11000e000000f09c1100190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e000000000000001c9411000600000000000000000000002c9e11003a000000000000000000000000000000000000000000000000000000000000001cd41100689e11000000000000000000789e110001000000000000000100000000000000889311000600000000000000000000009db611000c000000000000000000000000000000000000000000000000000000000000001cd41100809e11000000000000000000909e110001000000000000000000000000000000989e11000c000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd41100a49e11000000000000000000b49e11000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e000016000000000000000100000030000000049f11000700000016000000000000000100000032000000eb9e110019000000446964536574556e636c657316000000000000000100000032000000bc9e11002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c65730000000000df9311001200000000000000d09f1100010000000000000000000000cf9311001000000000000000d89f1100010000000000000000000000c29311000d00000000000000e09f1100010000000000000000000000b69311000c00000000000000e89f1100010000000000000000000000aa9311000c00000000000000f09f1100010000000000000000000000969311001400000000000000f89f11000100000000000000000000008e931100080000000000000000a011000100000000000000bda01100230000009ca01100210000008ba011001100000075a011001600000055a011002000000036a011001f00000008a011002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e25a111000d00000008a111001b00000023a111000200000033d311003c000000310200000100000042616420696e70757420646174612070726f766964656420746f203a20657865637574655f626c6f636b00003ca1110010000000696e697469616c697a655f626c6f636b54a111000f0000006170706c795f65787472696e736963006ca1110013000000696e686572656e745f65787472696e736963730088a111000f000000636865636b5f696e686572656e747300a0a111001400000076616c69646174655f7472616e73616374696f6ebca111000f0000006f6666636861696e5f776f726b657200d4a11100150000006c6f63616c5f76616c69646174696f6e5f64617461000000f4a111000e00000070617261636861696e5f636f646500000ca21100090000006765745f686561647300000020a211001500000067656e65726174655f73657373696f6e5f6b65797300000040a21100130000006465636f64655f73657373696f6e5f6b657973005ca211000d0000006163636f756e745f6e6f6e636500000074a211000a00000071756572795f696e666f000088a211001a0000004552524f523a20436f72727570746564207374617465206174200000aca211002a000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a20546f6f4d616e794669656c6473496e76616c6964546172676574496e76616c6964496e646578496e76616c69644a756467656d656e744a756467656d656e74476976656e537469636b794a756467656d656e744e6f4964656e746974794665654368616e676564456d707479496e6465784e6f744e616d65644e6f74466f756e64546f6f4d616e795375624163636f756e74736164645f7265676973747261727365745f6964656e746974797365745f73756273636c6561725f6964656e74697479726571756573745f6a756467656d656e7463616e63656c5f726571756573747365745f6665657365745f6163636f756e745f69647365745f6669656c647370726f766964655f6a756467656d656e746b696c6c5f6964656e746974794964656e7469747953757065724f66000000000038a511000b0000000000000044a511000100000000000000000000004ca5110001000000000000000000000054a511000f0000000000000064a5110002000000000000000000000074a511000100000000000000000000007ca511000e0000000000000064a511000200000000000000000000008ca5110001000000000000000000000094a511001200000000000000a8a51100020000000000000000000000b8a51100010000000000000000000000c0a511001400000000000000a8a51100020000000000000000000000d4a511000100000000000000000000000ca311000e00000000000000a8a51100020000000000000000000000dca51100010000000000000000000000e4a511000e00000000000000f4a51100010000000000000000000000fca5110001000000000000004964656e74697479536574009aa611000900000010a711003c0000004964656e74697479436c6561726564009aa611000900000009a7110007000000d5a61100340000004964656e746974794b696c6c65640000a3a61100320000004a756467656d656e7452657175657374656400009aa61100090000001ba611000e00000072a61100280000004a756467656d656e74556e7265717565737465644fa611002300000029a6110026000000526567697374726172416464656400001ba611000e00000004a6110017000000204120726567697374726172207761732061646465642e526567697374726172496e6465782041206a756467656d656e742077617320676976656e2062792061207265676973747261722e2041206a756467656d656e74207265717565737420776173207265747261637465642e2041206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e4163636f756e7449642041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e2041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e42616c616e63652041206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e54a71100230000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e000000000069a311000d000000000000005ca9110001000000000000000000000074a911000d000000000000000000000076a311000c00000000000000dca91100010000000000000000000000f4a9110012000000000000000000000082a31100080000000000000084aa11000100000000000000000000009caa11001000000000000000000000008aa311000e000000000000001cd411000000000000000000000000001cab11000f000000000000000000000098a31100110000000000000094ab1100020000000000000000000000c4ab1100170000000000000000000000a9a311000e000000000000007cac110001000000000000000000000094ac1100110000000000000000000000b7a3110007000000000000001cad11000200000000000000000000004cad11000c0000000000000000000000bea311000e00000000000000acad1100020000000000000000000000dcad11000c0000000000000000000000cca311000a000000000000003cae11000200000000000000000000006cae11000c0000000000000000000000d6a311001100000000000000ccae110003000000000000000000000014af1100130000000000000000000000e7a311000d00000000000000acaf1100010000000000000000000000c4af1100130000000000000000000000f9bf110007000000000000009db611000c000000e2be11001f0000001cd411000000000001bf1100470000001cd411000000000048bf11002b0000001cd411000000000073bf1100260000001cd41100000000005fb211000b00000099bf110039000000d2bf110027000000bab211000d000000c7b211000c00000000000000d2be11000400000000000000d6be11000c00000035bd11004b0000001cd411000000000080bd110056000000d6bd1100150000001cd4110000000000c1ba1100590000001abb11000a0000001cd4110000000000ebbd1100240000001cd41100000000000fbe1100230000001cd41100000000005fb211000b00000032be11005700000090bc11002200000089be110049000000bab211000d000000c7b211000c0000000000000018bd110004000000000000001cbd11001900000068bb1100240000001cd41100000000008cbb110056000000e2bb11004c0000001cd4110000000000c1ba1100590000001abb11000a0000001cd41100000000002ebc1100270000001cd41100000000005fb211000b00000055bc11003b00000090bc110022000000b2bc11005000000002bd110016000000c7b211000c00000037ba11004e0000001cd411000000000085ba11003c0000001cd4110000000000c1ba1100590000001abb11000a0000001cd411000000000024bb1100270000001cd41100000000005fb211000b0000006ab21100120000007cb21100210000004bbb11001d000000bab211000d000000c7b211000c00000000000000f5b411000900000000000000feb41100170000000000000030ba1100070000000000000009b71100150000007cb81100260000001cd4110000000000a2b8110056000000f8b81100070000001cd411000000000078b711004e000000c6b71100150000001cd4110000000000ffb811004800000047b91100560000001cd41100000000009db911000d000000aab9110029000000d3b91100040000001cd4110000000000d7b911002a0000001cd41100000000005fb211000b00000070b411000e0000007cb211002100000001ba11002f000000bab211000d000000c7b211000c00000000000000f5b4110009000000000000001ba611000e0000001eb711001b0000001cd411000000000039b711003f0000001cd411000000000078b711004e000000c6b71100150000001cd4110000000000dbb71100520000001cd41100000000002db811002c0000001cd41100000000005fb211000b00000070b411000e0000007cb211002100000059b8110023000000bab211000d000000c7b211000c0000000000000034b611000500000000000000feb41100170000000000000006b71100030000000000000009b7110015000000a9b61100470000001cd41100000000002bb311005600000060b51100290000001cd411000000000089b511003e000000f0b61100160000001cd41100000000005fb211000b0000000bb611000a00000015b611001f000000c7b211000c0000000000000034b611000500000000000000feb4110017000000000000009ab6110003000000000000009db611000c0000004db61100300000001cd41100000000002bb311005600000060b51100290000001cd411000000000089b511003e0000007db611001d0000001cd41100000000005fb211000b0000000bb611000a00000015b611001f000000c7b211000c0000000000000034b611000500000000000000feb41100170000000000000039b6110006000000000000003fb611000e00000035b511002b0000001cd41100000000002bb311005600000060b51100290000001cd411000000000089b511003e000000c7b51100440000001cd41100000000005fb211000b0000000bb611000a00000015b611001f000000c7b211000c00000000000000f5b411000900000000000000feb411001700000000000000d3b211000600000000000000d9b21100230000000000000015b5110009000000000000001eb5110017000000fcb211002f0000001cd41100000000002bb311005600000081b311002d0000001cd4110000000000aeb3110049000000c5b11100560000001bb211001e000000f7b31100530000001cd41100000000004ab41100260000001cd41100000000005fb211000b00000070b411000e0000007eb4110022000000a0b4110026000000c6b411002f000000bab211000d000000c7b211000c00000000000000d3b211000600000000000000d9b21100230000005cb01100510000001cd4110000000000adb011005900000006b111005200000058b11100210000001cd411000000000079b111004c0000001cd4110000000000c5b11100560000001bb211001e0000001cd411000000000039b21100260000001cd41100000000005fb211000b0000006ab21100120000007cb21100210000009db211001d000000bab211000d000000c7b211000c0000002052656d6f766520616e206163636f756e742773206964656e7469747920616e64207375622d6163636f756e7420696e666f726d6174696f6e20616e6420736c61736820746865206465706f736974732e205061796d656e743a2052657365727665642062616c616e6365732066726f6d20607365745f737562736020616e6420607365745f6964656e74697479602061726520736c617368656420616e642068616e646c65642062792060536c617368602e20566572696669636174696f6e2072657175657374206465706f7369747320617265206e6f742072657475726e65643b20746865792073686f756c642062652063616e63656c6c6564206d616e75616c6c79207573696e67206063616e63656c5f72657175657374602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e202d2060746172676574603a20746865206163636f756e742077686f7365206964656e7469747920746865206a756467656d656e742069732075706f6e2e2054686973206d75737420626520616e206163636f756e742020207769746820612072656769737465726564206964656e746974792e20456d69747320604964656e746974794b696c6c656460206966207375636365737366756c2e2023203c7765696768743e202d20604f2852202b2053202b205829602e202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e202d206053202b2032602073746f72616765206d75746174696f6e732e202d204f6e65206576656e742e2023203c2f7765696768743e7461726765743c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652050726f766964652061206a756467656d656e7420666f7220616e206163636f756e742773206964656e746974792e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74206f6620746865207265676973747261722077686f736520696e64657820697320607265675f696e646578602e202d20607265675f696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206265696e67206d6164652e202d20606a756467656d656e74603a20746865206a756467656d656e74206f662074686520726567697374726172206f6620696e64657820607265675f696e646578602061626f75742060746172676574602e20456d69747320604a756467656d656e74476976656e60206966207375636365737366756c2e202d20604f2852202b205829602e202d204f6e652062616c616e63652d7472616e73666572206f7065726174696f6e2e202d20557020746f206f6e65206163636f756e742d6c6f6f6b7570206f7065726174696f6e2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2852202b205829602e7265675f696e646578436f6d706163743c526567697374726172496e6465783e6a756467656d656e744a756467656d656e743c42616c616e63654f663c543e3e2053657420746865206669656c6420696e666f726d6174696f6e20666f722061207265676973747261722e206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e202d20606669656c6473603a20746865206669656c64732074686174207468652072656769737472617220636f6e6365726e73207468656d73656c76657320776974682e202d20604f285229602e202d204f6e652073746f72616765206d75746174696f6e20604f285229602e696e6465786669656c64734964656e746974794669656c6473204368616e676520746865206163636f756e74206173736f63696174656420776974682061207265676973747261722e202d20606e6577603a20746865206e6577206163636f756e742049442e6e6577543a3a4163636f756e74496420536574207468652066656520726571756972656420666f722061206a756467656d656e7420746f206265207265717565737465642066726f6d2061207265676973747261722e202d2060666565603a20746865206e6577206665652e666565436f6d706163743c42616c616e63654f663c543e3e2043616e63656c20612070726576696f757320726571756573742e205061796d656e743a20412070726576696f75736c79207265736572766564206465706f7369742069732072657475726e6564206f6e20737563636573732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206861766520612072656769737465726564206964656e746974792e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206e6f206c6f6e676572207265717565737465642e20456d69747320604a756467656d656e74556e72657175657374656460206966207375636365737366756c2e202d204f6e652073746f72616765206d75746174696f6e20604f2852202b205829602e20526571756573742061206a756467656d656e742066726f6d2061207265676973747261722e205061796d656e743a204174206d6f737420606d61785f666565602077696c6c20626520726573657276656420666f72207061796d656e7420746f2074686520726567697374726172206966206a756467656d656e7420676976656e2e202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973207265717565737465642e202d20606d61785f666565603a20546865206d6178696d756d206665652074686174206d617920626520706169642e20546869732073686f756c64206a757374206265206175746f2d706f70756c617465642061733a206060606e6f636f6d70696c652053656c663a3a72656769737472617273287265675f696e646578292e756e7772617028292e6665652060606020456d69747320604a756467656d656e7452657175657374656460206966207375636365737366756c2e202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2858202b205229602e6d61785f66656520436c65617220616e206163636f756e742773206964656e7469747920696e666f20616e6420616c6c207375622d6163636f756e7420616e642072657475726e20616c6c206465706f736974732e205061796d656e743a20416c6c2072657365727665642062616c616e636573206f6e20746865206163636f756e74206172652072657475726e65642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206861766520612072656769737465726564206964656e746974792e20456d69747320604964656e74697479436c656172656460206966207375636365737366756c2e202d206053202b2032602073746f726167652064656c6574696f6e732e2053657420746865207375622d6163636f756e7473206f66207468652073656e6465722e205061796d656e743a20416e79206167677265676174652062616c616e63652072657365727665642062792070726576696f757320607365745f73756273602063616c6c732077696c6c2062652072657475726e656420616e6420616e20616d6f756e7420605375624163636f756e744465706f736974602077696c6c20626520726573657276656420666f722065616368206974656d20696e206073756273602e202d206073756273603a20546865206964656e746974792773207375622d6163636f756e74732e202d20604f285329602077686572652060536020737562732d636f756e742028686172642d20616e64206465706f7369742d626f756e646564292e202d204174206d6f73742074776f2062616c616e6365206f7065726174696f6e732e202d204174206d6f7374204f2832202a2053202b2031292073746f72616765206d75746174696f6e733b20636f64656320636f6d706c657869747920604f2831202a2053202b2053202a20312960293b2020206f6e652073746f726167652d6578697374732e737562735665633c28543a3a4163636f756e7449642c2044617461293e2053657420616e206163636f756e742773206964656e7469747920696e666f726d6174696f6e20616e6420726573657276652074686520617070726f707269617465206465706f7369742e20496620746865206163636f756e7420616c726561647920686173206964656e7469747920696e666f726d6174696f6e2c20746865206465706f7369742069732074616b656e2061732070617274207061796d656e7420666f7220746865206e6577206465706f7369742e202d2060696e666f603a20546865206964656e7469747920696e666f726d6174696f6e2e20456d69747320604964656e7469747953657460206966207375636365737366756c2e202d20604f2858202b205827202b2052296020776865726520605860206164646974696f6e616c2d6669656c642d636f756e7420286465706f7369742d626f756e64656420616e6420636f64652d626f756e646564292e202d204f6e652073746f72616765206d75746174696f6e2028636f6465632d7265616420604f285827202b205229602c20636f6465632d777269746520604f2858202b20522960292e696e666f4964656e74697479496e666f2041646420612072656769737472617220746f207468652073797374656d2e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605265676973747261724f726967696e60206f722060526f6f74602e202d20606163636f756e74603a20746865206163636f756e74206f6620746865207265676973747261722e20456d6974732060526567697374726172416464656460206966207375636365737366756c2e202d20604f2852296020776865726520605260207265676973747261722d636f756e742028676f7665726e616e63652d626f756e646564292e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28522960292e6163636f756e740000000060c111000a00000001050000000000009db611000c000000000000006ac111001a000000000000000000000000000000000000001cd4110084c11100000000000000000094c1110001000000000000000000000000000000fca311000700000001020000000000009db611000c000000000000009cc1110014000000000000000000000000000000000000001cd41100b0c111000000000000000000c0c1110002000000000000000000000000000000d0c111000600000001050000000000009db611000c00000000000000d6c1110021000000000000000000000000000000000000001cd41100f8c11100000000000000000008c211000300000000000000010000000000000020c211000a00000000000000000000002ac2110036000000000000000000000000000000000000000000000000000000000000001cd4110060c21100000000000000000070c211000400000000000000010000004964656e746974794f66526567697374726174696f6e3c42616c616e63654f663c543e3e1600000000000000010000003200000078c411004800000028543a3a4163636f756e7449642c20446174612916000000000000000100000032000000ccc311005800000024c4110054000000537562734f662842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e2900160000000000000001000000a600000057c311002e0000001cd411000000000085c3110047000000526567697374726172735665633c4f7074696f6e3c526567697374726172496e666f3c42616c616e63654f663c543e2c20543a3a4163636f756e7449643e3e3e1600000000000000010000003000000090c2110053000000e3c211002a0000001cd41100000000000dc311004a0000002054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e2054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e20416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e20546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e207468617420636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e20496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e30c5110045000000be0300002200000030c5110045000000da0300001500000030c5110045000000e80300001e00000030c5110045000000f10300001800000030c5110045000000f20300001900000030c5110045000000f50300001a00000030c5110045000000fb0300000d0000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962616c6c6f632f736c6963652e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f6465000000c0c511005e0000008f0200001d000000c0c511005e00000039030000360000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f6964656e746974792f7372632f6c69622e727300000000000057a31100120000000000000070c711000100000000000000000000004fa31100080000000000000078c7110001000000000000000000000047a31100080000000000000080c711000100000000000000000000003da311000a0000000000000088c7110001000000000000000000000033a311000a0000000000000090c7110001000000000000000000000029a311000a0000000000000098c711000100000000000000000000001aa311000f00000000000000a0c711000100000000000000000000000ca311000e00000000000000a8c71100010000000000000000000000fca211001000000000000000b0c71100010000000000000000000000f0a211000c00000000000000b8c71100010000000000000000000000e3a211000d00000000000000c0c71100010000000000000000000000d6a211000d00000000000000c8c711000100000000000000a9c811001800000094c81100150000007fc811001500000072c811000d00000062c81100100000004fc81100130000003dc81100120000002cc811001100000019c811001300000003c8110016000000ecc7110017000000d0c711001c00000020546f6f206d616e79206164646974696f6e616c206669656c64732e205468652074617267657420697320696e76616c69642e2054686520696e64657820697320696e76616c69642e20496e76616c6964206a756467656d656e742e204a756467656d656e7420676976656e2e20537469636b79206a756467656d656e742e204e6f206964656e7469747920666f756e642e20466565206973206368616e6765642e20456d70747920696e6465782e204163636f756e742069736e2774206e616d65642e204163636f756e742069736e277420666f756e642e20546f6f206d616e7920737562732d6163636f756e74732e000000d4c8110055000000310600001b0000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962616c6c6f632f636f6c6c656374696f6e732f62747265652f6d61702e7273436f756c64206e6f74206465636f64652072657175657374656420696e686572656e74207479706521000064c911006b000000ae000000050000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f737570706f72742f7372632f73746f726167652f6d6967726174696f6e2e72730064c911006b000000af0000000500000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b002cd411004900000022000000090000007061726974792f7374616b696e672d656c656374696f6e2f54696d657374616d704e6f77736574616c726561647920626f72726f7765640064ca1100430000006e030000090000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f63656c6c2e7273616c7265616479206d757461626c7920626f72726f7765640064ca1100430000001e0300000900000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c7565001600000000000000010000002b0000001600000000000000010000002a0000002ccb11000600000032cb110010000000496e64657820206f7574206f6620626f756e64733a2066696e616c6e756d000064c911006b00000047000000230000006ccb11006f00000075000000450000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f737570706f72742f7372632f73746f726167652f67656e657261746f722f6d61702e727353657373696f6e486973746f726963616c53657373696f6e73a70000005800000008000000a8000000a900000018cc11005d0000004d0000001c0000002f686f6d652f6461766964642f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32302e302f7372632f6e6962626c652f6d6f642e72730000000000000040ca11000300000000000000a4cc1100010000000000000000000000bccc11000900000000000000000000003ece1100030000000000000041ce11001200000004cd1100160000001cd41100000000001acd11005600000070cd1100360000001cd4110000000000a6cd110051000000f7cd1100110000001cd411000000000008ce11003600000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e6e6f77436f6d706163743c543a3a4d6f6d656e743e00000000003dca110003000000000000000000000004cf110009000000000000000000000000000000000000000000000000000000000000001cd4110010cf1100000000000000000020cf11000100000000000000010000000000000028cf110009000000000000000000000031cf110004000000000000000000000000000000000000000000000000000000000000001cd4110038cf1100000000000000000048cf1100010000000000000001000000543a3a4d6f6d656e74000000160000000000000001000000990000007dcf110024000000446964557064617465626f6f6c0000001600000000000000010000003200000050cf11002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000dccf11000d0000000000000004cf110009000000000000001cd41100eccf11000000000000000000fccf110004000000000000004d696e696d756d506572696f64000000160000000000000001000000aa0000001cd011005a00000076d011005a000000d0d011005900000029d111001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e54696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b54696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b734765747320616e64206465636f6465732074696d657374616d7020696e686572656e74206461746100ab0000001000000004000000ac0000000cd211005f000000d00000001f0000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f6672616d652f74696d657374616d702f7372632f6c69622e72735468657265206973206f6e6c79206f6e6520666174616c206572726f723b207165640000001600000008000000040000009400000033d311003c000000dd0100000100000054696d657374616d7020746f6f2066617220696e2066757475726520746f20616363657074496e686572656e7420776974682073616d65206964656e74696669657220616c726561647920657869737473214e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f72212f686f6d652f6461766964642f6465762f706f6c6b61646f742d77657374656e642f72756e74696d652f77657374656e642f7372632f6c69622e727300617474656d707420746f20646976696465206279207a65726f000000a4d311002d000000d1d311000c000000ddd3110003000000617373657274696f6e206661696c65643a2060286c656674203d3d20726967687429600a20206c6566743a2060602c0a2072696768743a2060603a20e8d311003400000064657374696e6174696f6e20616e6420736f7572636520736c69636573206861766520646966666572656e74206c656e677468732cd411004900000028000000090000002f72757374632f366465653566313132366466643563393331346565356165396439656230313065333565663235372f7372632f6c6962636f72652f6d6163726f732f6d6f642e72730000001600000008000000040000002c00000071202f206365696c28712f246d617829203c20246d61782e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165640000f8d411006c00000064010000270000002f686f6d652f6461766964642f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f316439373339372f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e7273f8d411006c0000006b01000027000000f8d411006c00000076010000210000004661696c656420746f20636f6e76657274004198abc7000b08000000000000000000f69f03046e616d6501ed9f03aa0500196578745f6c6f6767696e675f6c6f675f76657273696f6e5f31012a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f3102246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3103296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31041e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31051c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31061a6578745f73746f726167655f726561645f76657273696f6e5f3107376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f3108286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3109216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f310a1d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f310b1c6578745f6d6973635f7072696e745f6e756d5f76657273696f6e5f310c1e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f310d1d6578745f68617368696e675f74776f785f36345f76657273696f6e5f310e196578745f73746f726167655f7365745f76657273696f6e5f310f206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f3110196578745f73746f726167655f6765745f76657273696f6e5f31111b6578745f73746f726167655f636c6561725f76657273696f6e5f3112226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3113236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f3214286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f3115346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f3116286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f3117226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f3118206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31191e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f311a1a6578745f73746f726167655f726f6f745f76657273696f6e5f311b226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f311c236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f311d1c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f311e236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f311f256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3120256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31210c5f5f727573745f616c6c6f63220a5f5f72675f616c6c6f63230e5f5f727573745f6465616c6c6f63240c5f5f72675f6465616c6c6f63250e5f5f727573745f7265616c6c6f63260c5f5f72675f7265616c6c6f6327135f5f727573745f616c6c6f635f7a65726f656428115f5f72675f616c6c6f635f7a65726f65642909686173685f746573742a33616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68613566306535653834326364613163302b08727573745f6f6f6d2c34616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68333466326439363261306133656336382d29636f72653a3a70616e69636b696e673a3a70616e69633a3a68363666663863623431656237393339322e673c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c26542c636f72653a3a736c6963653a3a497465723c543e3e3e3a3a737065635f657874656e643a3a68643134313632623662636165643561392f25616c6c6f633a3a666d743a3a666f726d61743a3a68383765613432376665623761323738653036636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68303262666133616364666639366234373123636f72653a3a666d743a3a77726974653a3a68376435353637373938616236653862383248616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303333623066313762636138353139633348616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303030303461356163313563353166393433636f72653a3a6f7074696f6e3a3a6578706563745f6e6f6e655f6661696c65643a3a6835373432343139313566633864343931353a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6835653233323038336335343963653133363b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6861326264383531623736356263653636373a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6839653534623965393531623637353032383c616c6c6f633a3a7665633a3a5665633c543e3a3a696e736572743a3a6173736572745f6661696c65643a3a6837623736633238353166313361343339394e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a68353033646134666265376565343631353a2d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a68363561333939373462633735646131633b3c616c6c6f633a3a7665633a3a5665633c543e3a3a72656d6f76653a3a6173736572745f6661696c65643a3a68303134313932333463366237343964383c3f616c6c6f633a3a7665633a3a5665633c543e3a3a647261696e3a3a656e645f6173736572745f6661696c65643a3a68363563643736346262663266323636613d39636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a68646338643634393661373862643066333e2f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68393738396630323639633064616665643f11727573745f626567696e5f756e77696e6440313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68356430383831303839366462353536324135636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68333034343734646238383737386466344243636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a68326165326132306532373661633532334334636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a68623532376436336130376365343861384436636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a6833666139386131373562356566303330452c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a6863376136613262346230386533623339462e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a686438346436643138336338303230356147323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6834666233316133633762663631626138484a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683362333865333364373738623631333949323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68353835643432366237393961616636664a47636f72653a3a756e69636f64653a3a756e69636f64655f646174613a3a6772617068656d655f657874656e643a3a6c6f6f6b75703a3a68313030666232373836323430336137394b32636f72653a3a756e69636f64653a3a7072696e7461626c653a3a636865636b3a3a68316533316630666162356466373231394c49636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68613266303731633335633466623437354d453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68336136393861346565626438306261334e483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68363430343466643666663439646637354f2e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683762353636393261313435626665656150303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683233386463363831353065393366393051323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683136393133643238656262376364396452533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6831653333623633613261643465323036532e636f72653a3a736c6963653a3a6d656d6368723a3a6d656d6368723a3a6834616435376236623738633262663264542f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a6861383962343039653035353263356439552e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a6833373932646664386336376430633834563a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6838323430376561663662663939633330573b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6865373233653834313363656164393266583a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68393630336533353761316331373136305939636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a68653930303364656631636662623461315a37636f72653a3a666d743a3a6275696c646572733a3a44656275675365743a3a656e7472793a3a68666664653036363031663966383231615b443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68663066336439353534333334333736365c313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68653366393638646530643165353739635d8001636f72653a3a7374723a3a7472616974733a3a3c696d706c20636f72653a3a736c6963653a3a536c696365496e6465783c7374723e20666f7220636f72653a3a6f70733a3a72616e67653a3a52616e67653c7573697a653e3e3a3a696e6465783a3a7b7b636c6f737572657d7d3a3a68663163333665343366373434383062645e4a636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a557070657248657820666f72206933323e3a3a666d743a3a68306566613962626536663832373035625f3e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686363643639613534353464323764663160693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866393237336565633130363664363332616c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683831363537383736353164303031623962543c616c6c6f633a3a7665633a3a5665633c75383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4f75747075743e3a3a77726974653a3a683831663631373464316234396461626263693c6672616d655f6d657461646174613a3a4465636f6465446966666572656e743c422c4f3e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683465323863386362363432393166663864483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a683561636630613031653733626661643265513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6835666331623361363635616636646635663a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6866323433643738363163353565643432673b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6837363933613834333232363936333435683a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a683030336338373633653031613564393369503c6672616d655f737570706f72743a3a64656275673a3a57726974657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68393138666634306466623732653137666a4d3c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68373438616538653039663533353263346b493c6672616d655f737570706f72743a3a64656275673a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68353833383562353631393061373138346c323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68326437616361633934393938386663666d383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68313635636264653130373738626661366e343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68316537646531373862303632353066646f363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a686330386661623861626464323931353670573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a683166393166363335356463663439333871513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6837343166373632333632653630396463724470616c6c65745f7374616b696e673a3a736c617368696e673a3a536c617368696e675370616e733a3a656e645f7370616e3a3a6834316632383830393436626164636130733a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a683762343364383634633038303235643974453c737472206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a683738393536623938373434353332616675497061726974795f7363616c655f636f6465633a3a656e636f64655f617070656e643a3a657874726163745f6c656e6774685f646174613a3a68626562323562623531333530323231377649706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a6c6f63616c697a65645f7061796c6f61643a3a6833383634376435326266336530653564778f0173705f6170706c69636174696f6e5f63727970746f3a3a737232353531393a3a3c696d706c2073705f6170706c69636174696f6e5f63727970746f3a3a7472616974733a3a52756e74696d655075626c696320666f722073705f636f72653a3a737232353531393a3a5075626c69633e3a3a746f5f7261775f7665633a3a6830323336333330373665666133393437783a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a68653631613634643963353264626661337937616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68303338373933363166386665623939667a3773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a68643366623862373461373433306636307b3773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a68663562373933353463313266626130347c4473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a68396630616564646264323235393838647d4b3c73705f61726974686d657469633a3a62696775696e743a3a42696755696e7420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a68616639346234613463396436613637337e303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68343338323065613565383161376164667f513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68616337353132373437623231633331328001533c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a68333961353536316231313935646535328101583c73705f61726974686d657469633a3a726174696f6e616c3132383a3a526174696f6e616c31323820617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a683635663962613162653061386461663582014673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a68353631336631643166653764376130648301413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68653966306436343262373237303338338401323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a683932383631623732643636373830303685015373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a683237353166653436323632626363663086013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683135393463663930333639613536363887014d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a683861323231326432316162643535363688016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683135633235363439303230313262373689015273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a68316138356633396338396461356432358a014273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a68643061646133306361666263646662658b017c3c73705f72756e74696d655f696e746572666163653a3a706173735f62793a3a436f6465633c543e2061732073705f72756e74696d655f696e746572666163653a3a706173735f62793a3a506173734279496d706c3c543e3e3a3a66726f6d5f6666695f76616c75653a3a68386139333065303664303835323036318c014373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a68323232633565356466636531326539328d016073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a68613662616263396135373562666662668e015173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a68396538393663383766313161663966638f014a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a686161323163336361383964343539356390016b3c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e67206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a68383762316535643134643833353861369101573c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68373962343532323633623762333434309201563c73705f72756e74696d653a3a44697370617463684572726f722061732073705f72756e74696d653a3a7472616974733a3a5072696e7461626c653e3a3a7072696e743a3a68653532633735643832376263393837379301473c73705f72756e74696d653a3a44697370617463684572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683432313763363131306163363733313694015373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6863313236323538333436393737316233950137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6830656266303934386562353161656662960137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6830323864626364336261323465376165970137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6830346165646465316238656461656263980137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6830366133316534643838346265663937990137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68306465323236643037383231376261659a0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68313063316434636466306162353034619b0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68313662656237383266336137616234359c0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68313663326163383733306431306163369d0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68313663653363616631623862326338309e0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a68313738396537646266633964656364639f0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832343231303632316130363633613431a00137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6832626236363631366531653331646535a10137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833333164323936613962353331396563a20137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833333361353236306363336133653431a30137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833386533343739656634333431376533a40137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833653333353535383965393733623366a50137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6833663165663462316532393738643463a60137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6834323334386532333735386132383464a70137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6835343137393662316566653439353563a80137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6836303065633731313864646564326161a90137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6836613366336437653962363163336139aa0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6837623362353933356564666635383661ab0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6838346162383335386563333632626336ac0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6838623162653838663535653931393433ad0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6838663231386161646630656236373166ae0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6839623230386430323934316635396236af0137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6839653933623431643436313532653334b00137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6862303866636166383838376464366631b10137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6863323036643834636438373161313330b20137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6863363432666365613430306632306639b30137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6863396339336238353137383466633263b40137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6864626635386530323162353737343735b50137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6864663937313135633231653236396233b60137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6865353161616562636535656435633565b70137616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6866303438623961346238326237373730b8015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839613863363232393032313264393064b9013b70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a7265776172645f62795f6964733a3a6830306561316432343034306133643162ba01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838326239383031383336303662326137bb01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830333037303132623534363464613363bc014b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6863356536386137343264353734663234bd01723c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6838373437626530383763326131616336be01613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6865313163353764643239336165356663bf01706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6833646134613838393766663064643263c001706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6838663461646337313934333639613966c1015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834363833636532653735653861323139c2015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836396462666264633533383163303834c3015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838656239386662656262336237313063c4015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863303635313435636430353265316237c5015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864343237313535616237363232323466c6015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865303539653965343561333634303634c7015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866656332313335656630373333386231c801746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6864666262356366663062653536636663c901386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835323363313333323765303438326266ca015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832333662383662323763363339323330cb015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864333534313630333032316663376433cc013570616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6e65775f6572613a3a6832393366393663646338616233313366cd01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836323630366538656161663937626434ce014370616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636c6561725f6572615f696e666f726d6174696f6e3a3a6831316338326363633735366330333032cf01543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861643530643064653130303131663431d001860170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a4578706f737572653c4163636f756e7449642c42616c616e63653e3e3a3a6465636f64653a3a6836663235373639653330666264376361d101303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837343463396664633263333139396335d2018b013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61704974657261746f723c4b2c562c4861736865723e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835613263666334326538626534353165d3014270616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a736c61736861626c655f62616c616e63655f6f663a3a6838353036356239653438636231353732d401533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6834656136343735313539303434623265d50148616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6833366165383765323137636162333536d601633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6836386133653736323666303732306131d701386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864343765656537313161623363306134d8013173705f70687261676d656e3a3a6275696c645f737570706f72745f6d61703a3a6834303731633439383437383934643037d901513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6862313830303239316633366339643337da01706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863373464656161333362323066343862db01723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6861303533613666646362636437316637dc012d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6838316566343264643165656634626237dd01706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6864336136306435333062353538646639de01386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837346533313037313266323235383037df01706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6862363661636232386331343538373638e001416672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6576656e745f696e64657865643a3a6831623763393439636230613135666264e101386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836333338363337363464356338616463e201386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838613262346631303237346362646231e3013770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746172745f6572613a3a6863616164396463616561326336306332e401386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864633430623162363962646439636237e501386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830636262636437363861393638306565e6014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6864396433363235356565353731636632e7015c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6833376533646636656631316233363531e801386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865633165366363623935343639343731e9013570616c6c65745f7374616b696e673a3a736c617368696e673a3a646f5f736c6173683a3a6830303132353063623334393936663731ea01446672616d655f737570706f72743a3a7472616974733a3a43757272656e63793a3a7265736f6c76655f6372656174696e673a3a6839626266613262366431303362343436eb01456672616d655f737570706f72743a3a7472616974733a3a4f6e556e62616c616e6365643a3a6f6e5f756e62616c616e6365643a3a6863613939313838386631356433383831ec014a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833333738316434643864666436656234ed016f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6834393865383166633130613134653763ee013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832363132323231393639373462373631ef013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a656e737572655f6e65775f6572613a3a6830363535633030383037383564383039f001386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834623762623735643362636133653030f1013e70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866623230626262373533363362393533f201723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862396436373939613536386130396334f301753c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261456c656374696f6e5374617475733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862666164653262383364383065643234f4016d3c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563745370616e536c6173683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832306135316261636461633439373964f5013c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6834306363633634636639663264353439f601723c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173546f74616c5374616b653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832383938303336373164343965363932f701743c70616c6c65745f7374616b696e673a3a5f5f4765744279746553747275637445726173526577617264506f696e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834636163303865623366323366376130f801763c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744572617356616c696461746f7250726566733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838303234326639353265353966306430f901763c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374457261735374616b657273436c69707065643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832373364643466356232333461633036fa01713c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374496e76756c6e657261626c65733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834383238626465343434643963386536fb01793c70616c6c65745f7374616b696e673a3a5f5f476574427974655374727563744d696e696d756d56616c696461746f72436f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838393031373062333438306562363634fc01703c70616c6c65745f7374616b696e673a3a5f5f47657442797465537472756374486973746f727944657074683c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832633761363061613730323930393431fd014770616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6863303036396166623837663465643964fe019b013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426f6e64696e674475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866386365323530313835643336366136ff019a013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53657373696f6e7350657245726144656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686430363465366535396131666639653180026c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a683661333863376663326237613064633981028e0170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e3e3a3a656e636f64655f746f3a3a683533303135303263616637316232373482028b0170616c6c65745f7374616b696e673a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e3e3a3a6465636f64653a3a683139663031303035363032313939363383022b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a686534663835313733336437616337393984025b70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c41636375726163793e3a3a66726f6d5f61737369676e6d656e743a3a68333032663139373933663437643236668502437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68636532646130613864366534613561328602ba013c70616c6c65745f7374616b696e673a3a53746173684f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3e3a3a636f6e766572743a3a68363063343330623233356162303131668702f4013c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e2061732073705f7374616b696e673a3a6f6666656e63653a3a4f6e4f6666656e636548616e646c65723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c283c542061732070616c6c65745f73657373696f6e3a3a54726169743e3a3a56616c696461746f7249642c203c542061732070616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a54726169743e3a3a46756c6c4964656e74696669636174696f6e293e3e3a3a6f6e5f6f6666656e63653a3a68306361313930623832303762366565328802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68616361303163663938303839306638318902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68613030623436633335663836396138338a024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68396534353037353364356138363764328b024970616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a6572615f7370616e3a3a68333931363230356161316237356234308c023570616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a64697361626c653a3a68633862643266363665303163343162358d025e70616c6c65745f7374616b696e673a3a736c617368696e673a3a496e7370656374696e675370616e733c543e3a3a636f6d706172655f616e645f7570646174655f7370616e5f736c6173683a3a68653061633232363038313230363733658e02443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68373332383233396561356330336530308f02d3023c70616c6c65745f7374616b696e673a3a4578706f737572654f663c543e2061732073705f72756e74696d653a3a7472616974733a3a436f6e766572743c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c70616c6c65745f7374616b696e673a3a4578706f737572653c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c3c542061732070616c6c65745f7374616b696e673a3a54726169743e3a3a43757272656e6379206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a42616c616e63653e3e3e3e3a3a636f6e766572743a3a68303130306136653633333963356433399002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683436646136656337363839323561623491026a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a68653733373063386438393865323662669202493c70616c6c65745f7374616b696e673a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68323332316635313138326632383437309302623c70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c573e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683165363633373562633563343064313694025a3c70616c6c65745f7374616b696e673a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683432313735363364633661303461653295025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68643331336138303734346235613461669602336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e635f7265663a3a686130303164613161613336386361366397025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68363034626331623838346165653839399802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683937383334303861656239333735366699028d013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7365745f6c6f636b3a3a68386539383332376637323535393236369a023870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6b696c6c5f73746173683a3a68323333393139343937306562613430339b0290013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a4c6f636b61626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656d6f76655f6c6f636b3a3a68363961643363353963643762383465379c02437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68306466376134383931643832313030659d02746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a68356230373362656432643965646163649e025273705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a68373466396162323963616135663864389f023970616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a6d616b655f7061796f75743a3a6838393134303834366562636466316661a0024870616c6c65745f7374616b696e673a3a4d6f64756c653c543e3a3a636865636b5f616e645f7265706c6163655f736f6c7574696f6e3a3a6862633632386362623665313235396437a102336672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465635f7265663a3a6862653566623830666433656563346362a202b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6830613365386630326430373963633961a3025b70616c6c65745f7374616b696e673a3a47656e65726963436f6d7061637441737369676e6d656e74733c562c542c41636375726163793e3a3a696e746f5f61737369676e6d656e743a3a6832633837316139373664333966626261a402386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831303330643066333562623236623965a502633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a666f6c643a3a6831383937373036323634316465666333a602613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836383338636633653235316565353364a7025f3c70616c6c65745f7374616b696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836623635316564353564306138663366a8023a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6832313737373264343165626362333138a9023b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6833383163666139626161343636636633aa023a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6863336561646439653661643733643939ab026b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6831636137396631333866383436353632ac023d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6830616539396237623730316133373062ad02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835633933616362336564343535386339ae02706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6839353233663435373937333366353239af024873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6838663264656433613038356665646366b002633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6837366338653630653661353637656362b102473c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830386439333236346161336261633561b20247636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a6830363038633233636664376438363635b3023e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6836333262383438636565646538616130b4022b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6864623061353930353239353338636562b502583c70616c6c65745f696d5f6f6e6c696e653a3a4f6666636861696e4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6861353839626230393239316431363836b602303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831366531613666633830663231663161b702443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835653461373432356165306430643935b802383c285431302c205431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834616266313431303864333838623738b902303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836376630333365363637316261613236ba023c70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864393465373664343030643338633233bb023e70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836386163343933303665666639313563bc024770616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6830333237373033343137313633356264bd029d013c70616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e5665737465645472616e7366657244656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861323636306361373430326265616535be02726672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a696e697469616c697a655f626c6f636b3a3a6863643463666166376535353431346365bf02746672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a657874726163745f7072655f6469676573743a3a6833333765663764386636303130663635c0027a3c6672616d655f737570706f72743a3a73746f726167653a3a6d6967726174696f6e3a3a53746f726167654974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834623438383235366462373035646664c1024b6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6835653737393733616231633161353561c202366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a696e697469616c697a653a3a6864613031323530616631313861366264c302763c285475706c65456c656d656e74302c205475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6834366136643866386634653361663664c402437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6837623966633166393539646134653835c5027a6672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c4d6f64756c65733e3a3a6170706c795f65787472696e7369635f776974685f6c656e3a3a6864316265623562356236616436623135c6029f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6865613461663166653232626138326232c7025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832663965613735386464333938653866c802437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6830643062366662623139376334383939c902683c77657374656e645f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6861396639393066333166633764643834ca024473705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3a3a7072655f64697370617463683a3a6861623030383763383361343632653335cb02406672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6833343336363434376463393039376432cc027d3c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6838363463356664323865393665313137cd0283013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4c696d697450617261746872656164436f6d6d6974733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6837323261396236303866393538333263ce0287013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a56616c6964617465446f75626c65566f74655265706f7274733c543e2061732073705f72756e74696d653a3a7472616974733a3a5369676e6564457874656e73696f6e3e3a3a76616c69646174653a3a6862623064663361663631326263643333cf02583c77657374656e645f72756e74696d653a3a43616c6c2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6838666138646561643934626565386332d0023e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864333161373836333434396133303730d1023f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6837633932623065653739323664613663d2024070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861343434663866616263636131316634d3023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6830386332653738326433666263646537d4023c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6863636238336434663762386364653161d502437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6839626466333166383536626164373164d6022b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6861653134343765363062363238366364d7024b3c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832336332343831363835316538353236d8023970616c6c65745f76657374696e673a3a4d6f64756c653c543e3a3a7570646174655f6c6f636b3a3a6839633661653839323364646139626539d9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863396663333838316434633432343931da025f3c70616c6c65745f76657374696e673a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862373863376234626130326535616461db02613c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6831366234633334383031333332626231dc023e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6838316634653564306332306135613264dd027477657374656e645f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722077657374656e645f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6863323263616264306266663465343537de023f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6833393733623236666363646331626466df02303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863663361333164356334363164663335e0026f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6863306634346334343836663062306662e102a601706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a416272696467656443616e646964617465526563656970743e3a3a656e636f64655f746f3a3a6835356334383535666438393831653163e2027c70616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a4964656e74697479496e666f3e3a3a656e636f64655f746f3a3a6830633764363063626239613466323632e302820170616c6c65745f6964656e746974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6964656e746974793a3a4a756467656d656e743c42616c616e63653e3e3a3a656e636f64655f746f3a3a6834623163336531623136343735316437e40280017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c205230293e3a3a656e636f64655f746f3a3a6832346536616661646135336463363062e5027877657374656e645f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722077657374656e645f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6865633439393436613965326366353034e6024377657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73797374656d3a3a6832346435333666366461626236393765e7024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696e64696365733a3a6866633661353633616565366633633163e8024577657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f62616c616e6365733a3a6862613266663464313662636133306162e9024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7374616b696e673a3a6865663235343139393034336237643632ea024577657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6f6666656e6365733a3a6832373630396165336130376336656566eb024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f73657373696f6e3a3a6835316263613032383363376262366239ec024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6772616e6470613a3a6866323865613437343165313139343763ed024677657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f696d5f6f6e6c696e653a3a6839663632353335613265353763333965ee024677657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7265676973747261723a3a6861646565313332366263663535633066ef024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7574696c6974793a3a6830303930363738613734656561613137f0024577657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6964656e746974793a3a6835653262356539656138366439626337f1024577657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7265636f766572793a3a6865383166613666626239623061376438f2024477657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f76657374696e673a3a6837333163653763323138623361623564f3024677657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7363686564756c65723a3a6837363662666335326661363563663061f4024177657374656e645f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f7375646f3a3a6839633637393530383165366262336537f502763c70616c6c65745f617574686f726974795f646973636f766572793a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6862346132303338303264373132333332f602483c5b543b20385d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864353563616664363062633430326563f702386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865663632383331666261343036396334f802437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836633163333262386138626638343838f9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839663966373864363864396633666565fa02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863333337373430666433393630623433fb025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839363532613637656266613538623236fc02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838653163616234366630346464346137fd02b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6837333634333666396561646561363235fe029a013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a726570617472696174655f72657365727665643a3a6835303166306264353435643562646464ff02b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6861623766393830623235353766666639800385013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a7472616e736665723a3a68373733613264663466313732333662668103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68353463376132386339303938376233308203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68613231343762633834306437623934388303437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68383133333565346536306663303139638403366672616d655f73797374656d3a3a4d6f64756c653c543e3a3a626c6f636b5f686173683a3a683438316662646431653531353538666485033770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a683766656462353664643538663166393186035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68613530343866373037373566633330618703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683537326337326435633065653236366488035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683263316262303437373632373165613289036f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68633437663333373962646235383435328a03a9013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a72656769737465725f706172613a3a68626334646437613537656663616563318b03ab013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5265676973747261723c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449643e3e3a3a646572656769737465725f706172613a3a68393233373964346332643734633466348c035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68336162353738373235623434356239668d035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68383034363963653237356439336463618e03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333361646264396262666638623762348f03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683530376333323962316161366330623390034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a68616438303435353636616431346165669103386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686464356539383932336635326661346692035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683732613563393362643335613263343393035a3c70616c6c65745f7574696c6974793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a683964323632313336633738653139383494035b3c70616c6c65745f6964656e746974793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a686465633235643263656664336461316495035b3c70616c6c65745f7265636f766572793a3a43616c6c3c543e2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a68313664376163353764326230393465329603463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a686235313832343065303735343136356397033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a683133353763646134656134386162346598034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a683830373135613532616337396233316499037177657374656e645f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722077657374656e645f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a68313535643236333238303832333366349a03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68373062323731633463656365646430369b03723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68366330316364386532326265373434639c03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68626635636437343038323133303739669d037d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a68386533346461656232333533316666639e032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68646230613539303532393533386365629f03573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863653164666161613635383031663332a0037470616c6c65745f7265636f766572793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7265636f766572793a3a43616c6c3c543e3e3a3a6465636f64653a3a6839373732326330333436613331623634a1036c70616c6c65745f7375646f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7375646f3a3a43616c6c3c543e3e3a3a6465636f64653a3a6831393365616535646134336231616563a2032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6864633736316466333637353061383365a3036b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830333763626638343266363865313530a4036b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866333066376131326331366538613331a503303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836323333386363366161636331313162a603723c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839383030656631656236386433326130a703763c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6832646534653030616234303332616133a80390013c70616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a52616e646f6d6e6573733c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a486173683e3e3a3a72616e646f6d3a3a6837663830396237633632663038356336a9034570616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6863306465323763633639363361643032aa034770616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832396536373561316661656430643531ab035070616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832333362353563326532376639653736ac039f013c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a57696e646f7753697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866323365663438333961643661336239ad035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861386534636262323531643562633462ae0353706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832623161363264346239326463643566af0355706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6174746573746174696f6e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839333737616233633638626537386130b0035170616c6c65745f72616e646f6d6e6573735f636f6c6c6563746976655f666c69703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832323062623265313965303364616438b103683c70616c6c65745f66696e616c6974795f747261636b65723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866396239653535633464646632623034b203703c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833656664313965663539633034393536b3034c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a7365745f68656164733a3a6861386530613062346134336265386265b40396013c70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a4b65794f776e657250726f6f6653797374656d3c2873705f636f72653a3a63727970746f3a3a4b65795479706549642c2044293e3e3a3a636865636b5f70726f6f663a3a6832653235396162666266613963626335b503443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837346661336532656565623661383130b6035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837313739326233386233306262323262b703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838303435373830376663643664626639b803543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836643161643639623136373765376638b903706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6861303564303466386161633161343737ba03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6861633766366633643137333062363235bb035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834396163373630336132633863396561bc03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6866373433323432663234666461626131bd03513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a6833663937646633666166623266626231be033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6832643539323066303437623832373765bf03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831343164613565373239663538376330c0034670616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a7265706f72745f6f725f73746f72655f6f6666656e63653a3a6866666666353335636530396562306135c1035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836636637623266393962396233663564c20358706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c63756c6174655f647574795f726f737465723a3a6838633863616661666431316533653937c30351706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a70617261636861696e5f686561643a3a6866373330386437333561623063383662c403443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832353339356239383562393539393232c503b2013c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a53746f7265644d61703c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e7449642c3c54206173206672616d655f73797374656d3a3a54726169743e3a3a4163636f756e74446174613e3e3a3a7472795f6d75746174655f6578697374733a3a6833316637636639333137303431646531c603543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6833653462646165353333303061353962c703673c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6864353234353863663730303736363534c803483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865643563323235333931663131626530c903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864386164303463643931336565613233ca035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832303637616432333063353465383035cb03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864633332343762333263396233643564cc03743c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861343337656232666530663466633466cd03443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835663361393566313430653332373339ce035c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a446f75626c65566f74655265706f72743c50726f6f663e3a3a7665726966795f766f74653a3a6861376562626331643836346534376335cf03743c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a4e65676174697665496d62616c616e63653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a54727944726f703e3a3a7472795f64726f703a3a6834383137313033376235656238386432d0033970616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6834656230353466396636383836333564d1033b70616c6c65745f7375646f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862613332386138623232346231656666d2035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862643066656461386639626461653561d3039c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861326463663262633531323432316437d4035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838333035633737643263333033616161d503553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6839363539393963306538306538636638d603437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6834623535653535616163343638333533d70351706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836363739333134333232623130333332d80353706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6838633233386639323365303030356534d9038f013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a5f5f4765744279746553747275637452656c61794469737061746368517565756553697a653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834323531343861623431656538356662da037d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a5f5f47657442797465537472756374436f64653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832303138313937666634643530633961db03463c70616c6c65745f7375646f3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832316164313664663231656366373635dc03473c77657374656e645f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830396565323463616234396531356234dd03473c6672616d655f73797374656d3a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6865633738353835643832376633376332de03443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6837356233613430306536636366656339df035e3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261636861696e733a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836366233326438393032353862393565e0035d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6838633762623133346463636265666535e103493c70616c6c65745f7574696c6974793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6862343633353532376530613737353732e2034a3c70616c6c65745f6964656e746974793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835363863663332663362336664636365e3034a3c70616c6c65745f7265636f766572793a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6866336333643130653334383937326230e403463c70616c6c65745f626162653a3a43616c6c3c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6832376237653633303766306562373461e5035c3c70616c6c65745f7375646f3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6834376666373434353035626533613933e603733c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6837636261346264646233356538633333e703723c285475706c65456c656d656e74302c205475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6866653166663835333730643764623566e803723c285475706c65456c656d656e74302c205475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e46696e616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f66696e616c697a653a3a6838643438393732346230623835373031e903763c285475706c65456c656d656e74302c205475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6836643730313435656138363465343039ea033870616c6c65745f626162653a3a4d6f64756c653c543e3a3a646f5f696e697469616c697a653a3a6863313639333265316539646334383938eb033e70616c6c65745f626162653a3a4d6f64756c653c543e3a3a63757272656e745f65706f63685f73746172743a3a6830373732396230316338653565366130ec03443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833666566643462626637303732633330ed03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835653966396662663031646530326135ee0397013c285475706c65456c656d656e74302c205475706c65456c656d656e74312c205475706c65456c656d656e74322c205475706c65456c656d656e74332c205475706c65456c656d656e7434292061732070616c6c65745f73657373696f6e3a3a53657373696f6e48616e646c65723c4149643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6836353964363235663337363135363964ef03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866343932383231643365316335353735f0032b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6863376165663463396437633432616163f1033c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6838373461333364643537303635343134f2038b013c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61704974657261746f723c4b2c562c4861736865723e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6833356439313663346137373334666435f3033c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6837323766346532336264313239626138f4033e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836643339383630666435366266343239f503703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866323632303134386538396238356430f603437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6831363262383630633164306337326235f7033970616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6866643836333638366363376430386335f803376672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6866363862646634616133346563646661f903a30173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5261775072654469676573743c5652464f75747075742c56524650726f6f663e3e3a3a6465636f64653a3a6830333933303135333438333235373930fa0350706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6830386666623339346561333630346461fb0352706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839373462373833353934393965396635fc037f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5f5f47657442797465537472756374446562746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834303336323939353964653239363063fd0382013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7265676973747261723a3a5f5f476574427974655374727563744e6578744672656549643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830646663313362636630633061646461fe035f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866306164623565353834626362336665ff036f3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a686364393761623362373131396133653980044b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a68343431643131663731366137326133358104aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a68323331373265323032653537383961668204533c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a68363038633231326632616265363439638304960173705f7374616b696e673a3a6f6666656e63653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f7374616b696e673a3a6f6666656e63653a3a4f6666656e636544657461696c733c5265706f727465722c4f6666656e6465723e3e3a3a6465636f64653a3a68613437393866343064653439303061368404543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68646633663261343163386261613465348504443c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a683863636339343062306362326461653786043c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68383461313935306432313861643133648704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683365363864386237313862336139653988045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68656138666363333238666335663862308904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68356439626539336639613564646565398a045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68346162373032646233626536646632328b04693c636f72653a3a697465723a3a61646170746572733a3a46696c7465724d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68316537386336383537656139643765318c0481016672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a617070656e645f6f725f696e736572743a3a68313662663335633833616138626338648d048d0170616c6c65745f7363686564756c65723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f7363686564756c65723a3a5363686564756c65643c43616c6c2c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a68653433633761653333393633396536338e043c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68383638326363643363393231316362308f043e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68393231663133383035633839353532339004703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68636634323434666662613066623262669104693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686561333837313265653039396463306192043d70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a686234303036343263393862656538643093043f70616c6c65745f7265636f766572793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68316633383262633566393734656531349404776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a683131626136396634666531663633653795043d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a68346230626131353835313565626135349604513c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c493e3e3a3a66726f6d5f697465723a3a68383030386234363334313736366663349704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68663433616639653630633134646565649804683c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a68303532623931626462366163383962329904633c636f72653a3a697465723a3a61646170746572733a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68303237303534663136386436616238649a043e636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723a3a6e74683a3a68636166373230303961643530383139649b044070616c6c65745f7363686564756c65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68656638623161623963346562366531659c04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68393965613964626233313864626662649d045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68353062383633386266393239623237309e04437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a68663038333539633663383066643435329f0434636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6836663236633362653936356338383130a0042e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6838376264373861323363313663336637a1043c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6839376539366435393130356231373665a204363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6832653462386566633138613364666664a3044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6837303430383466646230363130666231a404383c2a636f6e7374205420617320636f72653a3a666d743a3a506f696e7465723e3a3a666d743a3a6833323130373634663365323961666332a50439747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633a3a6465636f64653a3a6865363830636630653131393666356361a6045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838643466313333613261363564373933a7045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865313563316562623733306164316634a804706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6864333665663038336162643935306439a904386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835396166326363663336343432656135aa04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862633264386630653765663965383663ab04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862336530636438653263363265663961ac045f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6832613835633139653135326333316666ad04603c70616c6c65745f7265636f766572793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6831643235333030336236393730363939ae047d7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c205230293e3a3a6465636f64653a3a6862363037633537366133313937353164af04463c616c6c6f633a3a7665633a3a5665633c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6862343061306663613965623062383264b004543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6835306461326334396234636335636137b104543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837323165353634373030363463613131b204543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838383937393538363832653038613330b304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863343866626435386461313934366139b404fa01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a6831643963333537383266356533646163b504fe01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3a3a696e736572743a3a6830353364366539336239383837616263b6045770616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4368617267655472616e73616374696f6e5061796d656e743c543e3a3a636f6d707574655f6665653a3a6866303163393331643264633538343163b704463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6862643231396366663430393464613462b8042b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6836363336316239393639313432386636b9042e73705f70687261676d656e3a3a7265647563653a3a7265647563653a3a6861616365313962373439616434396339ba0448616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a456e7472793c4b2c563e3a3a6f725f696e736572743a3a6838343433373537626163643430666535bb043373705f70687261676d656e3a3a6e6f64653a3a4e6f64653c413e3a3a726f6f743a3a6835333134653065333036393035326365bc043b73705f70687261676d656e3a3a6e6f64653a3a4e6f64653c413e3a3a69735f706172656e745f6f663a3a6837383862373133313232633231633062bd043a6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836306137353232323565373536313839be043c6672616d655f73797374656d3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832393132643862623237633438393134bf04703c6672616d655f73797374656d3a3a5f5f47657442797465537472756374457865637574696f6e50686173653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865386566643232383530633436613638c004683c6672616d655f73797374656d3a3a5f5f476574427974655374727563744576656e74733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866346232323530323635313832383132c104703c6672616d655f73797374656d3a3a5f5f4765744279746553747275637445787472696e73696373526f6f743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866633536336237363561373862393638c204693c6672616d655f73797374656d3a3a5f5f476574427974655374727563744163636f756e743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831303338316531376539373439363439c304446672616d655f73797374656d3a3a4d6f64756c653c543e3a3a6e6f74655f66696e69736865645f65787472696e736963733a3a6864353664363839306333366264333562c404346672616d655f73797374656d3a3a4d6f64756c653c543e3a3a66696e616c697a653a3a6839356337303365386535333635343233c5043c6672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a646f5f76616c69646174653a3a6839626237313132646231333438326462c604436672616d655f73797374656d3a3a436865636b5765696768743c543e3a3a636865636b5f626c6f636b5f6c656e6774683a3a6836663830333530626130343636663333c7043f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862353636633166313335386434333834c8044a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836303639353032623934626266303430c9045370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839663866343432633235663333393765ca04aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866646530343262643633643235316663cb048a016672616d655f737570706f72743a3a776569676874733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a776569676874733a3a4469737061746368496e666f3e3a3a656e636f64655f746f3a3a6831306364616566323763653735343065cc045d3c6672616d655f73797374656d3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862326435663537313338323633386131cd04503c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a6765743a3a6838613035383333643833366661653239ce04366861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a6765743a3a6861623866333639343364643934376535cf04553c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c543e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a636f6e7461696e733a3a6830356231663661303965326333376463d0042b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6830306331306537613566373265616235d104386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863633262633663663830636432333566d2043b70616c6c65745f626162653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862306334336135396638323234653965d3046b3c70616c6c65745f626162653a3a5f5f4765744279746553747275637452616e646f6d6e6573733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6830366261343130623232653865353937d4044470616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6838393236313637663639356438653362d5049a013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836383562353761346335663739373937d60496013c70616c6c65745f626162653a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833343362383237656437623262616635d7045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839363265653638643836653666396432d8043c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6835656631313033396634366233306665d9043e70616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6866666433366363636233393966306334da04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862323339613066636363656262336432db043d70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a7570646174655f6c6f636b733a3a6866323135316336323238386434656661dc043f70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6832303961663563336439373639663637dd044170616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6838613339336266633562383730643961de046e3c70616c6c65745f62616c616e6365733a3a5f5f476574427974655374727563744163636f756e743c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832316166346565313133633731626464df044a70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6831373634376137326664343566373038e004a3013c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578697374656e7469616c4465706f73697444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865616135313935326363623131663239e104a201706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a70617261636861696e3a3a43616e646964617465436f6d6d69746d656e74733e3a3a656e636f64655f746f3a3a6834613139353731633733653931336365e2044a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6836333734366230393430316636373732e304473c77657374656e645f72756e74696d653a3a43616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6830396565323463616234396531356234e4044670616c6c65745f7574696c6974793a3a4d6f64756c653c543e3a3a656e737572655f736f727465645f616e645f696e736572743a3a6864383236356365626363643632353862e504706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863393235333435303431386263613761e604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839303633626661383232643737356339e7045f3c70616c6c65745f7574696c6974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836393962346366316666323234303265e804623c70616c6c65745f62616c616e6365733a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6865336436363664656637653632396264e9043c70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6838343234376161656662613766353934ea043e70616c6c65745f696e64696365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863346566393238373432643236646331eb043f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6839323263626633633432633737626237ec044170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865313266346335383331393639303634ed04623c70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6861633033653861636538363961316532ee040c436f72655f76657273696f6eef0412436f72655f657865637574655f626c6f636bf00415436f72655f696e697469616c697a655f626c6f636bf104114d657461646174615f6d65746164617461f2041c426c6f636b4275696c6465725f6170706c795f65787472696e736963f3041b426c6f636b4275696c6465725f66696e616c697a655f626c6f636bf40420426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373f504613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836303338663465646366326363336266f6041c426c6f636b4275696c6465725f636865636b5f696e686572656e7473f70418426c6f636b4275696c6465725f72616e646f6d5f73656564f8042b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6ef904214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572fa044f70616c6c65745f7374616b696e673a3a6f6666636861696e5f656c656374696f6e3a3a636f6d707574655f6f6666636861696e5f656c656374696f6e3a3a6834383334623634346166643238373665fb041850617261636861696e486f73745f76616c696461746f7273fc041950617261636861696e486f73745f647574795f726f73746572fd041f50617261636861696e486f73745f6163746976655f70617261636861696e73fe042850617261636861696e486f73745f676c6f62616c5f76616c69646174696f6e5f7363686564756c65ff042350617261636861696e486f73745f6c6f63616c5f76616c69646174696f6e5f6461746180051c50617261636861696e486f73745f70617261636861696e5f636f646581051750617261636861696e486f73745f6765745f686561647382051d50617261636861696e486f73745f7369676e696e675f636f6e7465787483051e4772616e6470614170695f6772616e6470615f617574686f726974696573840515426162654170695f636f6e66696775726174696f6e85051b426162654170695f63757272656e745f65706f63685f7374617274860521417574686f72697479446973636f766572794170695f617574686f72697469657387052153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797388051f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797389051d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e63658a05205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f8b055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68393835383237656637346337323137378c053d70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68653934616232383534663163656238308d053f70616c6c65745f6964656e746974793a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68643633636233613865393830663564648e056b3c70616c6c65745f6964656e746974793a3a5f5f47657442797465537472756374537562734f663c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68316230653639333861336238653238378f052b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68383165366232623438353063353134359005573c70616c6c65745f6964656e746974793a3a44617461206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68616435393861323831653633643538379105766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a686330393131303234383639643737363592055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68346135366636343439346332373436399305386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68363638303138376461623132323336369405776672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a696e736572743a3a686239663732623565326132653639396495055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68313763613266373339356137643932399605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68343833356166303561656432633263669705603c70616c6c65745f6964656e746974793a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683264643764343333306362383263353298057a3c73705f61726974686d657469633a3a7065725f7468696e67733a3a5065725531362061732073705f61726974686d657469633a3a7065725f7468696e67733a3a5065725468696e673e3a3a66726f6d5f726174696f6e616c5f617070726f78696d6174696f6e3a3a6862636531663964396162633362613864990538747269655f64623a3a6c6f6f6b75703a3a4c6f6f6b75703c4c2c513e3a3a6c6f6f6b5f75703a3a68343734383732396130333534363166659a052b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a68366537646636383631343332626234629b053e70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68306238396539363431393734303762649c054070616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68313563616332663836386539616632659d054970616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68383439306665633062363266306230379e059b013c70616c6c65745f74696d657374616d703a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68653766393235383866303335336539619f052b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6862623937363635666436376331643830a005066d656d736574a105066d656d637079a205076d656d6d6f7665a3050462636d70a405095f5f6173686c746933a505095f5f6c736872746933a605085f5f6d756c746933a705095f5f75646976746933a805095f5f756d6f64746933a9050c5f5f756469766d6f6474693400550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e34342e302d6e696768746c79202836646565356631313220323032302d30342d303629", - "0x5f3e4907f716ac89b6347d15ececedca487df464e44a534ba6b0cbb32407b587": "0x0000000000", - "0x0b76934f4cc08dee01012d059e1b83ee5e0621c4869aa60c02be9adcc98a0d1d": "0x10a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a72bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300174bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bd5e21ce53b32bef696d6f6e8072bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950775c11433d27a3e6696d6f6e80a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169034245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x00", - "0x3fba98689ebed1138735e0e7a5a790ab0b76934f4cc08dee01012d059e1b83ee": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb303adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x9fc415cce1d0b2eed702c9e05f476217d23b46a8723fd56f08cddad650be7c2da8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x00", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950cf58e078d2188b43617564698074bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d6dc0db87ce29bd36261626580a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99406b1b580f3fd70373207c005e38adff268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x000000000300407a10f35a000000000000000000000000000000000000000000000000000000407a10f35a0000000000000000000000407a10f35a00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e696c69c865d348f61756469807ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da937af01a62f70176413143d943b7d30b9aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x000000000300407a10f35a000000000000000000000000000000000000000000000000000000407a10f35a0000000000000000000000407a10f35a00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195093c237b163af4d50617564698072bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195053c90cc3c184c72c6772616e80feca0be2c87141f6074b221c919c0161a1c468d9173c5c1be59b68fab9a0ff93": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00004de97f22e20d0000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60566b5cb12e1bb0dd3301e8ab40c6d0508264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x047374616b696e672000407a10f35a0000000000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502c959753b2d73959696d6f6e8074bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195071eb6ac6f0e199fd7061726180a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000005c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508f3986108b781adb6772616e809fc415cce1d0b2eed702c9e05f476217d23b46a8723fd56f08cddad650be7c2d": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x5f3e4907f716ac89b6347d15ececedcaa141c4fe67c2d11f4a10c6aca7a79a04b4def25cfda6ef3a00000000": "0x0000e941cc6b01000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x02", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4d92e108794d5f65011d80545fd17e2b58671d451c3d4f6de8c16ea0bc61cf714914d6b2ffa2899872620525419327478": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d0b00407a10f35a0b00407a10f35a0000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x1008264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606daebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c439349ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81df268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe705c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x8011fb3641f0641f5570ba8787a64a0ff7d9c9999481f333d7207c4abd7e981c", - "0x5f3e4907f716ac89b6347d15ececedcaac0a2cbf8e355f5ea6cb2de8727bfb0c": "0x54000000", - "0x5f3e4907f716ac89b6347d15ececedcae1791577e4efcb083fdc3cb21e85b2e4": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195004564cbf88f48197626162658074bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4b807e5088f44d540645b9875a5c73c31caf27345aebc2fefeca85c9a67f4859eab3178d28ef92244714402290f3f415a": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c439340b00407a10f35a0b00407a10f35a0000", - "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x0b00407a10f35a0b00407a10f35a00", - "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a0000000003adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000005c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x0b00407a10f35a0b00407a10f35a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504e2a9aebc209c0bf706172618072bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d", - "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a0000000003adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x0b00407a10f35a0b00407a10f35a00", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x4c17a9bfdd19411f452fa32420fa7acab622e87e57351f4ba3248ae40ce75123", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc46095c93c32e331c00441c72d2b5397df8011fb3641f0641f5570ba8787a64a0ff7d9c9999481f333d7207c4abd7e981c": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d0b00407a10f35a0b00407a10f35a0000", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade984245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e944edfdfb59968570617261807ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade985c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb34245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0xfeca0be2c87141f6074b221c919c0161a1c468d9173c5c1be59b68fab9a0ff937ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a", - "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", - "0x3a6772616e6470615f617574686f726974696573": "0x01109fc415cce1d0b2eed702c9e05f476217d23b46a8723fd56f08cddad650be7c2d0100000000000000feca0be2c87141f6074b221c919c0161a1c468d9173c5c1be59b68fab9a0ff930100000000000000959cebf18fecb305b96fd998c95f850145f52cbbb64b3ef937c0575cc7ebd6520100000000000000fc9d33059580a69454179ffa41cbae6de2bc8d2bd2c3f1d018fe5484a5a919560100000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9afdf816f281ad669fe59fe0f725f72759ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x000000000300407a10f35a000000000000000000000000000000000000000000000000000000407a10f35a0000000000000000000000407a10f35a00000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x1008264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d9fc415cce1d0b2eed702c9e05f476217d23b46a8723fd56f08cddad650be7c2da8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4fa8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4faebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934feca0be2c87141f6074b221c919c0161a1c468d9173c5c1be59b68fab9a0ff937ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d959cebf18fecb305b96fd998c95f850145f52cbbb64b3ef937c0575cc7ebd65272bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300172bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836fc9d33059580a69454179ffa41cbae6de2bc8d2bd2c3f1d018fe5484a5a9195674bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e", - "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000005c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x0b00407a10f35a0b00407a10f35a00", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7003adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x8671d451c3d4f6de8c16ea0bc61cf714914d6b2ffa2899872620525419327478", - "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000004245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x00", - "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x04000000", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x10a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f7ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a72bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e300174bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x02", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d9ed59755f843d8706172618074bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690303adc196911e491e08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169035c69b53821debaa39ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc472e2b7edbdd300480b61e7ad485ddb234c17a9bfdd19411f452fa32420fa7acab622e87e57351f4ba3248ae40ce75123": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f58360b00407a10f35a0b00407a10f35a0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f2f72e2480caa5c862616265807ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a": "0xaebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0xfc9d33059580a69454179ffa41cbae6de2bc8d2bd2c3f1d018fe5484a5a9195674bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e74bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x10a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f01000000000000007ca58770eb41c1a68ef77e92255e4635fc11f665cb89aee469e920511c48343a010000000000000072bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001010000000000000074bfb70627416e6e6c4785e928ced384c6c06e5c8dd173a094bc3118da7b673e0100000000000000", - "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000004245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x0b00407a10f35a0b00407a10f35a00", - "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", - "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98ce6a96a3775ab416f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836": "0x00", - "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe704245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0xcaf27345aebc2fefeca85c9a67f4859eab3178d28ef92244714402290f3f415a", - "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000004245138345ca3fd8aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x0b00407a10f35a0b00407a10f35a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195072134b407e7eb75c626162658072bae70a1398c0ba52f815cc5dfbc9ec5c013771e541ae28e05d1129243e3001": "0x9ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d47edb55da4253996175646980a8ddd0891e14725841cd1b5581d23806a97f41c28a25436db6473c86e15dcd4f": "0x08264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x109ae581fef1fc06828723715731adcf810e42ce4dadad629b1b7fa5c3c144a81daebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934f268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f583608264834504a64ace1373f0c8ed5d57381ddf54a2f67a318fa42b1352681606d", - "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950eb4a0fcc18f0aed36772616e80fc9d33059580a69454179ffa41cbae6de2bc8d2bd2c3f1d018fe5484a5a91956": "0xf268995cc38974ce0686df1364875f26f2c32b246ddc18835512c3f9969f5836", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x6648d7f3382690650c681aba1b993cd11e54deb4df21a3a18c3e2177de9f7342", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc637af01a62f70176413143d943b7d30b9aebb0211dbb07b4d335a657257b8ac5e53794c901e4f616d4a254f2490c43934": "0x047374616b696e672000407a10f35a0000000000000000000002", - "0x5f3e4907f716ac89b6347d15ececedcaad811cd65a470ddc5f1d628ff0550982b4def25cfda6ef3a00000000": "0x00000000" - }, - "childrenDefault": {} - } - } -} diff --git a/node/service/res/wococo.json b/node/service/res/wococo.json deleted file mode 100644 index 37147ee3ba4b..000000000000 --- a/node/service/res/wococo.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "name": "Wococo", - "id": "wococo", - "chainType": "Live", - "bootNodes": [ - - ], - "telemetryEndpoints": [ - [ - "/dns/telemetry.polkadot.io/tcp/443/x-parity-wss/%2Fsubmit%2F", - 0 - ] - ], - "protocolId": "wococo", - "properties": { - "ss58Format": 42, - "tokenDecimals": 12, - "tokenSymbol": "WOOK" - }, - "forkBlocks": null, - "badBlocks": null, - "consensusEngine": null, - "lightSyncState": null, - "genesis": { - "raw": { - "top": { - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x6a0da05ca59913bc38a8630590f2627c878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xd5c41b52a371aa36c9254ce34324f2a5878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xd8bbe27baf3aa64bb483afabc240f68e878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x08c41974a97dbf15cfbec28365bea2da878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0x2762c81376aaa894b6f64c67e58cc650878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0xca32a41f4b3ed515863dc0a38697f84e878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3db7a24cfdc9de785974746c14a99df9878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x2371e21684d2fae99bcb4d579242f74ad47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xc2261276cc9d1f8598ea4b6a74b15c2f878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x7a75e50a187151745b2af2e74fefd23d878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xda7d4185f8093e80caceb64da45219e3878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000040010004000000286bee0000000004000000040000000500000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c80000000200000019000000000000000200000002000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0x3d9cad2baf702e20b136f4c8900cd802878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x3fba98689ebed1138735e0e7a5a790ab878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcd710b30bd2eab0352ddcc26417aa194878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xf9922c78cfa3c316d27a3eb48145ab1b878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x2b06af9719ac64d755623cda8ddd9b94878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da983e7c454a9671126847a8c1d80db230a2cc68f11008dde8a52b9c506b51e8b990eed79ed56de7c3735b8c5d78e605c02": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x1cb6f36e027abb2091cfb5110ab5087f878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x26aa394eea5630e07c48ae0c9558cef7878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xa6b4d5720c90ecd39576e0b9b422f799878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", - "0x6ac983d82528bf1595ab26438ae5b2cf878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xd5e1a2fa16732ce6906189438c0a82c6878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x2ce461329fdf4be12bce01afc0af09bc878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xf0c365c3cf59d671eb72da0e7a4113c4878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x1089acb60cf7c46d5f1dbbe708118d9e878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0x509fc563e49ed9cb767129896846f57f878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00009ad2ff44c41b0000000000000000", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x1809d78346727a0ef58c0fa03bafa323878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0x3a636f6465": "0x0061736d01000000018c033860037f7f7f017f60027f7f017f60017f0060027f7f0060057f7f7f7f7f0060047f7f7f7f0060037f7f7f0060017f017e60027e7e0060027f7e017f60037f7e7f017f6000017f60027f7f017e60037f7f7e017e60000060027e7e017e60037e7e7e0060017e017f60017e0060017e017e60017f017f60047f7e7e7e017f60027f7e017e60037f7e7e006000017e60037e7e7f017e60027f7e0060027e7f017f60057f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f0060037e7f7f0060047f7f7f7e0060047e7e7f7f0060047e7f7f7f0060067f7f7e7e7f7f017f60047f7f7e7e0060087f7f7f7f7f7f7e7e0060087f7f7e7e7e7f7f7f0060037e7e7f0060047f7f7f7f017e60067f7f7f7e7e7f0060037e7f7f017f60047f7e7f7f0060037f7f7e0060077f7f7e7e7e7f7f0060077f7e7e7e7e7e7e00600b7f7f7f7f7f7f7f7f7f7f7f0060067f7f7e7e7f7f0060047f7e7e7f0060087f7f7f7f7f7e7e7f0060047e7f7e7f0060067f7f7f7f7f7f017f60037f7e7e017f60057f7f7f7e7e0060057f7e7e7e7e0002c20f3003656e76066d656d6f727902001303656e76206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f31000803656e76236578745f63727970746f5f65636473615f67656e65726174655f76657273696f6e5f31000903656e76256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f31000903656e76236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f31000a03656e76286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f31000b03656e76376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f31000c03656e76256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f31000903656e76286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f31000703656e76216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f31000d03656e76236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f32000a03656e76276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f31000e03656e76296578745f64656661756c745f6368696c645f73746f726167655f636c6561725f76657273696f6e5f31000803656e76276578745f64656661756c745f6368696c645f73746f726167655f6765745f76657273696f6e5f31000f03656e762c6578745f64656661756c745f6368696c645f73746f726167655f6e6578745f6b65795f76657273696f6e5f31000f03656e76276578745f64656661756c745f6368696c645f73746f726167655f7365745f76657273696f6e5f31001003656e76206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f31001103656e76206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f31001103656e76206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31001103656e761e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31001103656e761d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31001103656e762a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31001103656e762a6578745f747269655f6b656363616b5f3235365f6f7264657265645f726f6f745f76657273696f6e5f31001103656e761c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31001203656e761d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f31001203656e76226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31001303656e761e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f31001403656e761c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f31000203656e76236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f31000b03656e76346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f31001503656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f31001603656e76286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f31001703656e76246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f31001803656e76296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31001303656e761c6578745f73746f726167655f617070656e645f76657273696f6e5f31000803656e76226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31001303656e761b6578745f73746f726167655f636c6561725f76657273696f6e5f31001203656e76226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f31001203656e76286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31000e03656e761c6578745f73746f726167655f6578697374735f76657273696f6e5f31001103656e76196578745f73746f726167655f6765745f76657273696f6e5f31001303656e761e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31001303656e761a6578745f73746f726167655f726561645f76657273696f6e5f31001903656e762a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f31000e03656e761a6578745f73746f726167655f726f6f745f76657273696f6e5f31001803656e76196578745f73746f726167655f7365745f76657273696f6e5f31000803656e76276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f31000e03656e76196578745f6c6f6767696e675f6c6f675f76657273696f6e5f310017039709950914140202000014140e0e0e0e0e0606030600040001010301030303030100020501001a011b02071c1d06000401010114140106061e010101010601001c01010001011f0101010301140606030303030606030606060606010503030201030205060604200401030101030306140106010101060302060302060303020306020303020603020603060306030303030306020606060303060606030606030606060303070306030321030303020303030303030303030303030303030322050303020202020202020202020202020202020202020202020101010102030103020e0e0e0e0e0e0e0e0e060206020202140305060306060606030606020602011403011414060004062303062403021703060606032504030326060c060303030603060606060302270e030203060c280306060603060306020202020202020202020202020202020202020202020202020212020202020202020202020202021406010205020306030306030603140203030229020203010203062406030305022006030303030303030303030303030303030303030303030303030303030303030203030206060503060202030604030003060306020e0303030606020202030503060302030305030603060506030306060202020205020704030306060306050203060602010606030703020203030202020203030303031d0303020202030202030303030300012401060406050603030602020202060302020202032a2b0e0301030606030306030603010303030602040202030303020303020303032c03020303030303060601010301030702020202070302032d1a032e011d03020202030303031a2c1a0202020303020303021e0306060306030303020302030303010303062f010503031e04030403010303030403030103030303030503061402020202030305060603030303300324030202020303030203030303020303030301031d060103020203030303030303030101030106050201010302020303030203030303030303070303030602030103020203060603030603030303060631060303030606013203030301010306010604030606032403030103030202020303020333030102030101030303020203030e0e05020c0c03020e0303020b0203030c0c030c0c0c030c060c0c0602030c050b03030103010c0c030c03030c06020c0c0c030c030c0c020c0c0c030c0c0c14020c050c0c0c0c0c0c0c0c0606060c0c0c0103030c03030c0c060c0c1a021402020305340204010401010203060303040303030302020303050202030304030303060303030202020303030302020203030202020605030303050303030118020206030303030203030303030602020203020203020203030202030302040203030302010101041e05010202060606060103030305030203032004140502030e0e0e040101020312030e0202020303030305031d0302011e1e041e0603050b0606020203020302040505010500060306020500060303020202030201010102030302030306020202030303030303030202030202030101020302060614011a03030101030403010103000101010103031401050302350236050624063137373737000000003104070170019c029c020619037f01418080c0000b7f0041889aca000b7f0041889aca000b07ac0c2f195f5f696e6469726563745f66756e6374696f6e5f7461626c6501000c436f72655f76657273696f6e00e20612436f72655f657865637574655f626c6f636b00e30615436f72655f696e697469616c697a655f626c6f636b00ee06114d657461646174615f6d6574616461746100ef061c426c6f636b4275696c6465725f6170706c795f65787472696e73696300f1061b426c6f636b4275696c6465725f66696e616c697a655f626c6f636b00f20620426c6f636b4275696c6465725f696e686572656e745f65787472696e7369637300f3061c426c6f636b4275696c6465725f636865636b5f696e686572656e747300f50618426c6f636b4275696c6465725f72616e646f6d5f7365656400f7062b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6e00f806214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b657200fc061850617261636861696e486f73745f76616c696461746f72730084071e50617261636861696e486f73745f76616c696461746f725f67726f7570730085072050617261636861696e486f73745f617661696c6162696c6974795f636f7265730087072750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f64617461008a072650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f757470757473008d072550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c64008e071d50617261636861696e486f73745f76616c69646174696f6e5f636f6465008f072850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f64650091072c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c6974790093071e50617261636861696e486f73745f63616e6469646174655f6576656e74730094071a50617261636861696e486f73745f73657373696f6e5f696e666f0096071a50617261636861696e486f73745f646d715f636f6e74656e74730097072c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e74730098072550617261636861696e486f73745f76616c69646174696f6e5f636f64655f62795f68617368009a071e4772616e6470614170695f6772616e6470615f617574686f726974696573009b07384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963009c07274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66009f0715426162654170695f636f6e66696775726174696f6e00a1071b426162654170695f63757272656e745f65706f63685f737461727400a20715426162654170695f63757272656e745f65706f636800a30712426162654170695f6e6578745f65706f636800a40724426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f6600a50735426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e73696300a60721417574686f72697479446973636f766572794170695f617574686f72697469657300a7072153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b65797300a8071f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b65797300ac071642656566794170695f76616c696461746f725f73657400ad07154d6d724170695f67656e65726174655f70726f6f6600ae07134d6d724170695f7665726966795f70726f6f6600b2071d4d6d724170695f7665726966795f70726f6f665f73746174656c65737300b5071d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e636500b607205472616e73616374696f6e5061796d656e744170695f71756572795f696e666f00b807275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c7300b9070a5f5f646174615f656e6403010b5f5f686561705f62617365030209a404010041010b9b024652645b9f095c5d65739f01c302da04cd07ae089701dc034f9401b30587049404729e01860696018601ee05a3088107f2058307c407c607a001d206af078106c707b805ba059c0169a009e904424344744b556a6c6d6e6f708b018c018d01b604840285028602870288028b0284098309ef0185099509cf05ce05d005f4058c088b088d08e008df05de05f001e005f505cb06ca06f101ce06840698059b0590088f08a808e604f201e204e104f301fe04d307d207f401f007d807d707f501f10791099009ff089a08a805f6018305af04ae0485049c0897089608f701fe078e098d09ef04d30693089208f801fd07e905e407e307f901e507bd078d058c05fa018e058005eb07ea07fb01ec07bb07ab04aa04fc01ac04cf03e405cd059f069e06fd01e1068906e208f608c304c404fe01ca08c908ff01df08f508f4088002fc08c3088102a0049f048202a104c104c904c8048302ff0492069106a404a304a204cc08ad04cb08e504e404e304ea04e704f0048f069205910590058f059a0599059d059c05a905a208f704d506a108d40793068e069406d205d105e105ea05f908fe05a006cd06cc06cf06d406fa08fb08d507e907e807e707e607ee07ed078e089108940898089f089e089d08ff05d606a708a908a409ce08cd08df04e908ea08ef08f008e508e708f108f208f308f7089b0990068b068c068b098a0989098809870986098f099209a709930994096667a509a609a809a909aa09ab090a8fa36995090600200010300b0600200010190b0600200010320b06002000101a0b0a0020002001200210340b2801017f0240200210192203450d002003200020022001200120024b1b10bf091a2000101a0b20030b0600200010360b1c01017f0240200010192201450d0020014100200010c1091a0b20010b05001038000b0500103a000b05001037000b1700410141b8f3c900410741bff3c900412210a20900000b110041b087ca004111418080c000103c000b4701017f230041206b22032400200341146a4100360200200341f8fac900360210200342013702042003200136021c200320003602182003200341186a360200200320021047000b950101017f02400240200141004e0d0041012102410021010c010b0240024002400240200228020022030d002001450d022001102f21020c010b0240200228020422020d002001450d022001102f21020c010b200320022001103321020b20020d012000200136020441012101410121020c020b410121020b20002002360204410021020b20002002360200200041086a20013602000bde0201067f230041206b2202240020012802002103024002402001280204220441037422050d00410021060c010b200341046a2107410021060340200728020020066a2106200741086a2107200541786a22050d000b0b024002400240200141146a2802000d00200621070c010b02402004450d00410021054101210402402006410f4b0d00200341046a280200450d030b200620066a220720064f0d010c020b4100410041ac80c000103f000b02402007417f4c0d00024020070d0041002105410121040c020b200721052007102f22040d011039000b103b000b20004100360208200020043602002000200536020420022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a290200370300200220012902003703080240200241046a41bc80c000200241086a10400d00200241206a24000f0b41d480c0004133200241086a418881c000419881c0001041000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341ac85c000360208200341013602242003200341206a360218200320033602282003200341046a360220200341086a20021047000bc20501097f230041306b22032400200341246a2001360200200341033a00282003428080808080043703082003200036022020034100360218200341003602100240024002400240024020022802082204450d0020022802002105200228020422062002410c6a2802002207200720064b1b2208450d01200020052802002005280204200128020c1100000d03200541086a2100200228021021092008210a034020032004411c6a2d00003a00282003200441046a290200422089370308200441186a28020021014100210741002102024002400240200441146a2802000e03010002010b2001410374210b410021022009200b6a220b2802044102470d01200b28020028020021010b410121020b2003200136021420032002360210200441106a28020021020240024002402004410c6a2802000e03010002010b20024103742101200920016a22012802044102470d01200128020028020021020b410121070b2003200236021c20032007360218200920042802004103746a2202280200200341086a20022802041101000d04200a417f6a220a450d03200441206a2104200041046a210220002802002101200041086a2100200328022020012002280200200328022428020c110000450d000c040b0b2002280200210520022802042206200241146a2802002204200420064b1b2208450d0020022802102104200020052802002005280204200128020c1100000d02200541086a21002008210203402004280200200341086a200441046a2802001101000d032002417f6a2202450d02200441086a2104200041046a210120002802002107200041086a2100200328022020072001280200200328022428020c110000450d000c030b0b410021080b0240200620084d0d002003280220200520084103746a22042802002004280204200328022428020c1100000d010b410021040c010b410121040b200341306a240020040b7e01017f230041c0006b220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c20054184f3c900360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041047000b8d0201047f230041206b22032400024002402000280200220041046a2802002204200041086a28020022056b2002490d00200028020021040c010b0240200520026a22062005490d00200441017422052006200520064b1b22054108200541084b1b21050240024020040d00200341003602100c010b200341106a41086a410136020020032004360214200320002802003602100b20032005200341106a103d200341086a2802002105024020032802004101460d00200020032802042204360200200041046a2005360200200041086a28020021050c020b2005450d001039000b103b000b200420056a2001200210bf091a200041086a2200200028020020026a360200200341206a240041000bbf0501047f230041306b2202240020002802002100024002400240024002400240024002402001418001490d002002410036020c2001418010490d0102402001418080044f0d0020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c040b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010c030b024020002802082203200041046a280200460d00200028020021040c020b200341016a22042003490d04200341017422052004200520044b1b22044108200441084b1b21040240024020030d00200241003602200c010b200241206a41086a410136020020022003360224200220002802003602200b200241106a2004200241206a103d200241186a2802002103024020022802104101460d00200020022802142204360200200041046a2003360200200028020821030c020b20030d030c040b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200420036a20013a00002000200028020841016a3602080c040b0240200041046a2802002204200041086a28020022036b2001490d00200028020021040c030b200320016a22052003490d01200441017422032005200320054b1b22034108200341084b1b21030240024020040d00200241003602200c010b200241206a41086a410136020020022004360224200220002802003602200b200241106a2003200241206a103d200241106a41086a2802002103024020022802104101460d00200020022802142204360200200041046a2003360200200041086a28020021030c030b2003450d010b1039000b103b000b200420036a2002410c6a200110bf091a200041086a2200200028020020016a3602000b200241306a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41bc80c000200241086a10402101200241206a240020010b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c2002418c82c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a482c0001047000b0b002000350200200110530b3401017f230041106b220224002002200136020c20022000360208200241bc85c000360204200241f8fac90036020020021054000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241fc82c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a419483c0001047000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c200241d083c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41e883c0001047000b6f01017f230041306b2202240020022001360204200220003602002002411c6a41023602002002412c6a41013602002002420337020c2002418c84c000360208200241013602242002200241206a3602182002200241046a36022820022002360220200241086a41a484c0001047000b15002000280200220028020020002802082001104c0bd108020b7f017e4101210302400240200228021841222002411c6a2802002802101101000d000240024020010d00410021040c010b200020016a21052000210641002104200021074100210802400340200641016a210902400240024020062c0000220a4100480d00200a41ff0171210b0c010b0240024020092005470d004100210b200521060c010b20062d0001413f71210b200641026a220921060b200a411f7121030240200a41ff0171220a41e0014f0d00200b200341067472210b0c010b0240024020062005470d004100210c2005210d0c010b20062d0000413f71210c200641016a2209210d0b200c200b41067472210b0240200a41f0014f0d00200b2003410c7472210b0c010b02400240200d2005470d004100210a200921060c010b200d41016a2106200d2d0000413f71210a0b200b4106742003411274418080f0007172200a72220b418080c400470d010c030b200921060b4102210941f400210d02400240024002400240024002400240200b41776a0e1f06010303000303030303030303030303030303030303030303040303030304020b41f200210d0c050b41ee00210d0c040b200b41dc00460d010b0240200b105e0d00200b105f0d040b200b41017267410276410773ad4280808080d00084210e410321090c010b0b200b210d0b0240024020082004490d0002402004450d0020042001460d00200420014f0d01200020046a2c000041bf7f4c0d010b02402008450d0020082001460d00200820014f0d01200020086a2c000041bf7f4c0d010b2002280218200020046a200820046b200228021c28020c110000450d0141010f0b200020012004200841dca0c000105a000b03402009210a4101210341dc00210441012109024002400240024002400240200a0e0402010500020b0240024002400240200e422088a741ff01710e06050302010006050b200e42ffffffff8f608342808080803084210e4103210941f50021040c070b200e42ffffffff8f608342808080802084210e4103210941fb0021040c060b413041d700200d200ea72209410274411c7176410f712204410a491b20046a2104024020090d00200e42ffffffff8f608342808080801084210e0c050b200e427f7c42ffffffff0f83200e4280808080708384210e0c040b200e42ffffffff8f6083210e4103210941fd0021040c040b41002109200d21040c030b410121090240200b418001490d0041022109200b418010490d0041034104200b41808004491b21090b200920086a21040c040b200e42ffffffff8f60834280808080c00084210e0b410321090b20022802182004200228021c2802101101000d050c000b0b200820076b20066a21082006210720052006470d000b0b2004450d0020042001460d00200420014f0d02200020046a2c000041bf7f4c0d020b410121032002280218200020046a200120046b200228021c28020c1100000d0020022802184122200228021c28021011010021030b20030f0b200020012004200141cca0c000105a000be40101047f230041206b22012400024002400240200041046a28020020002802082202470d00200241016a22032002490d02200241017422042003200420034b1b22034104200341044b1b220341ffffffff01712003464103742104200341037421030240024020020d00200141003602100c010b200141106a41086a410836020020012002410374360214200120002802003602100b200120032004200141106a104e200141086a280200210220012802004101460d0120002001280204360200200041046a20024103763602000b200141206a24000f0b2002450d001039000b103b000bbd0101017f0240024002400240024002402002450d0020014100480d01024002400240200328020022040d002001450d010c050b200328020422030d0120010d040b200221030c050b20042003200110332203450d030c040b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2001102f22030d010b2000200136020441012103200221010c010b20002003360204410021030b20002003360200200041086a20013602000b920301027f230041106b2202240002400240024002400240024020002802000e050102030400010b200128021841c984c00041182001411c6a28020028020c11000021010c040b200128021841e184c000410e2001411c6a28020028020c11000021010c030b200128021841ef84c00041112001411c6a28020028020c11000021010c020b20022001280218418085c000410a2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a418c85c00010501a20022d0008210120022802042203450d01200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c010b2001280218419c85c000410e2001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bd40202047f027e230041c0006b2203240041012104024020002d00080d00200028020421050240200028020022062d0000410471450d00024020050d004101210420062802184198a0c00041022006411c6a28020028020c1100000d02200028020021060b41012104200341013a0017200341346a41e09fc000360200200320062902183703082003200341176a3602102006290208210720062902102108200320062d00203a00382003200837032820032007370320200320062902003703182003200341086a3602302001200341186a200228020c1101000d01200328023041f89fc0004102200328023428020c11000021040c010b41012104200628021841db9fc0004197a0c00020051b4102410120051b2006411c6a28020028020c1100000d0020012000280200200228020c11010021040b200020043a00082000200028020441016a360204200341c0006a240020000b920203017f027e037f41002102200041003602082000420837020042002103024020014203540d004202210441002105034020042103200541036a2106200541016a2202210542012006413f71ad86427e7c22042001540d000b0b2000104d20002000280208220741016a22053602082000280200220620074103746a200337030002402002450d002001427f7c2104200041046a210703400240200342022002413f71ad867c427f7c22032004580d0003402002450d03427e2002417f6a2202413f71ad8620037c22032004560d000b0b024020052007280200470d002000104d20002802002106200028020821050b200620054103746a20033703002000200028020841016a220536020820020d000b0b0b0d0020002802001a037f0c000b0bd20203027f017e037f230041306b22022400412721030240024020004290ce005a0d00200021040c010b412721030340200241096a20036a2205417c6a20004290ce0080220442f0b17f7e20007ca7220641ffff037141e4006e220741017441fe85c0006a2f00003b00002005417e6a2007419c7f6c20066a41ffff037141017441fe85c0006a2f00003b00002003417c6a2103200042ffc1d72f5621052004210020050d000b0b02402004a7220541e3004c0d00200241096a2003417e6a22036a2004a7220641ffff037141e4006e2205419c7f6c20066a41ffff037141017441fe85c0006a2f00003b00000b02400240200541094a0d00200241096a2003417f6a22036a200541306a3a00000c010b200241096a2003417e6a22036a200541017441fe85c0006a2f00003b00000b200141f8fac9004100200241096a20036a412720036b10562103200241306a240020030b6f01017f230041c0006b220124002001200036020c200141346a410136020020014201370224200141f0fac9003602202001410536023c2001200141386a36023020012001410c6a360238200141106a200141206a103e410141b8f3c90041072001280210200128021810a20900000b0c0042f3a38eecb2fea7f4570bea0501067f20002802002205410171220620046a21070240024020054104710d00410021010c010b4100210802402002450d00200221092001210a03402008200a2d000041c00171418001476a2108200a41016a210a2009417f6a22090d000b0b200820076a21070b412b418080c40020061b21080240024020002802084101460d004101210a200020082001200210570d012000280218200320042000411c6a28020028020c1100000f0b02402000410c6a280200220920074b0d004101210a200020082001200210570d012000280218200320042000411c6a28020028020c1100000f0b024002400240024002402005410871450d00200028020421052000413036020420002d002021064101210a200041013a0020200020082001200210570d054100210a200920076b22092101410120002d0020220820084103461b4103710e0403020102030b4100210a200920076b22092105024002400240410120002d0020220720074103461b4103710e0402010001020b2009410176210a200941016a41017621050c010b410021052009210a0b200a41016a210a0340200a417f6a220a450d0420002802182000280204200028021c280210110100450d000b41010f0b2009410176210a200941016a41017621010c010b410021012009210a0b200a41016a210a02400340200a417f6a220a450d0120002802182000280204200028021c280210110100450d000b41010f0b200028020421094101210a200028021820032004200028021c28020c1100000d01200141016a2108200028021c210120002802182102024003402008417f6a2208450d014101210a200220092001280210110100450d000c030b0b200020063a00202000200536020441000f0b200028020421094101210a200020082001200210570d00200028021820032004200028021c28020c1100000d00200541016a2108200028021c210120002802182100034002402008417f6a22080d0041000f0b4101210a200020092001280210110100450d000b0b200a0b5401017f024002402001418080c400460d0041012104200028021820012000411c6a2802002802101101000d010b024020020d0041000f0b2000280218200220032000411c6a28020028020c11000021040b20040b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341c887c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021047000b8908010a7f20002802102103024002400240200028020822044101470d0020034101470d020c010b20034101460d002000280218200120022000411c6a28020028020c1100000f0b200120026a2105024002400240200041146a28020022060d0041002107200121080c010b41002107200121080340200520082203460d02200341016a2108024020032c00002209417f4a0d00200941ff017121090240024020082005470d004100210a2005210b0c010b20032d0001413f71210a200341026a2208210b0b200941e001490d0002400240200b2005470d004100210c2005210b0c010b200b2d0000413f71210c200b41016a2208210b0b200941f001490d0002400240200b2005470d004100210b0c010b200b41016a2108200b2d0000413f71210b0b200a410c742009411274418080f0007172200c41067472200b72418080c400460d030b200820036b20076a21072006417f6a22060d000b0b20052008460d00024020082c00002203417f4a0d0002400240200841016a2005470d0041002108200521060c010b200841026a210620082d0001413f7141067421080b200341ff017141e001490d000240024020062005470d0041002106200521090c010b200641016a210920062d0000413f7121060b200341ff017141f001490d00200341ff01712103200620087221080240024020092005470d00410021050c010b20092d0000413f7121050b20084106742003411274418080f0007172200572418080c400460d010b024002402007450d0020072002460d0041002103200720024f0d01200120076a2c00004140480d010b200121030b2007200220031b21022003200120031b21010b20044101460d002000280218200120022000411c6a28020028020c1100000f0b0240024002402002450d004100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000b2008200028020c22054f0d014100210820022107200121030340200820032d000041c00171418001476a2108200341016a21032007417f6a22070d000c030b0b41002108200028020c22050d010b2000280218200120022000411c6a28020028020c1100000f0b41002103200520086b22052107024002400240410020002d0020220820084103461b4103710e0402010001020b20054101762103200541016a41017621070c010b41002107200521030b200341016a210302400240024003402003417f6a2203450d0120002802182000280204200028021c280210110100450d000c020b0b2000280204210841012103200028021820012002200028021c28020c1100000d01200741016a2103200028021c210720002802182100034002402003417f6a22030d0041000f0b200020082007280210110100450d000b0b410121030b20030be00801067f230041f0006b220524002005200336020c20052002360208410121062001210702402001418102490d00410020016b2108418002210903400240200920014f0d0041002106200020096a2c000041bf7f4c0d00200921070c020b2009417f6a21074100210620094101460d01200820096a210a20072109200a4101470d000b0b200520073602142005200036021020054100410520061b36021c200541f8fac900418a88c00020061b3602180240024002400240200220014b22060d00200320014b0d00200220034b0d01024002402002450d0020012002460d00200120024d0d01200020026a2c00004140480d010b200321020b20052002360220024002402002450d0020022001470d010b200221060c030b200141016a210903400240200220014f0d00200020026a2c00004140480d00200541246a2109200221060c050b2002417f6a210620024101460d03200920024621032006210220030d030c000b0b20052002200320061b360228200541306a41146a4103360200200541c8006a41146a4104360200200541d4006a4104360200200542033702342005419088c0003602302005410136024c2005200541c8006a3602402005200541186a3602582005200541106a3602502005200541286a360248200541306a20041047000b200541e4006a4104360200200541c8006a41146a4104360200200541d4006a4101360200200541306a41146a410436020020054204370234200541a888c0003602302005410136024c2005200541c8006a3602402005200541186a3602602005200541106a36025820052005410c6a3602502005200541086a360248200541306a20041047000b200541246a21090b024020062001460d00410121034100210802400240200020066a22072c000022024100480d002005200241ff0171360224200541286a21010c010b200020016a220121030240200741016a2001460d00200741026a210320072d0001413f7121080b2002411f71210702400240200241ff017141e0014f0d00200820074106747221020c010b410021002001210a024020032001460d00200341016a210a20032d0000413f7121000b200020084106747221030240200241ff017141f0014f0d0020032007410c747221020c010b410021020240200a2001460d00200a2d0000413f7121020b20034106742007411274418080f00071722002722202418080c400460d020b2005200236022441012103200541286a21012002418001490d00410221032002418010490d0041034104200241808004491b21030b200520063602282005200320066a36022c200541306a41146a4105360200200541ec006a4104360200200541e4006a4104360200200541c8006a41146a4106360200200541d4006a410736020020054205370234200541c888c00036023020052001360258200520093602502005410136024c2005200541c8006a3602402005200541186a3602682005200541106a3602602005200541206a360248200541306a20041047000b418a98ca00412b2004103c000b100020012000280200200028020410590b7c01037f230041206b2202240002402000280200200110600d002001411c6a2802002103200128021821042002411c6a4100360200200241f8fac9003602182002420137020c200241b089c00036020820042003200241086a10400d002000280204200110602101200241206a240020010f0b200241206a240041010ba40403037f017e017f410121020240200128021841272001411c6a2802002802101101000d0041f4002103410221040240024002400240024002402000280200220041776a0e1f05010303000303030303030303030303030303030303030303040303030304020b41f2002103410221040c040b41ee002103410221040c030b200041dc00460d010b02400240024002402000105e0d002000105f450d01410121040c030b200041017267410276410773ad4280808080d0008421050c010b200041017267410276410773ad4280808080d0008421050b410321040b200021030c010b20002103410221040b03402004210641dc002100410121024101210402400240024002400240024020060e0402010500020b02400240024002402005422088a741ff01710e06050302010006050b200542ffffffff8f608342808080803084210541f50021000c060b200542ffffffff8f608342808080802084210541fb0021000c050b413041d70020032005a72204410274411c7176410f712200410a491b20006a2100024020040d00200542ffffffff8f60834280808080108421050c050b2005427f7c42ffffffff0f832005428080808070838421050c040b200542ffffffff8f6083210541fd0021000c030b41002104200321000c030b20012802184127200128021c2802101101000f0b200542ffffffff8f60834280808080c0008421050b410321040b20012802182000200128021c280210110100450d000b0b20020ba60301047f0240024002404100410f200041a49a04491b2201200141086a2201200141027441cc95c0006a280200410b742000410b7422014b1b2202200241046a2202200241027441cc95c0006a280200410b7420014b1b2202200241026a2202200241027441cc95c0006a280200410b7420014b1b2202200241016a2202200241027441cc95c0006a280200410b7420014b1b220241027441cc95c0006a280200410b74220320014620032001496a20026a2201411e4b0d0041b105210402402001411e460d00200141027441d095c0006a28020041157621040b4100210202402001417f6a220320014b0d002003411f4f0d03200341027441cc95c0006a28020041ffffff007121020b02402004200141027441cc95c0006a280200411576220141016a460d00200020026b2102200141b105200141b1054b1b21032004417f6a210441002100034020032001460d032000200141d896c0006a2d00006a220020024b0d012004200141016a2201470d000b200421010b20014101710f0b2001411f418c9cc000103f000b200341b105419c9cc000103f000b2003411f41c896c000103f000be20601077f024002400240024002400240024002400240200041ffff034b0d0020004180fe0371410876210141898ac000210241002103200041ff0171210402400340200241026a2105200320022d000122066a21070240024020022d000022022001470d0020072003490d06200741a3024f0d07200341ec8ac0006a210203402006450d022006417f6a210620022d00002103200241016a210220032004470d000b410021060c050b200220014b0d022007210320052102200541db8ac000470d010c020b2007210320052102200541db8ac000470d000b0b200041ffff03712104418e8dc0002102410121060340200241016a21000240024020022d000022034118744118752207417f4a0d00200041c38fc000460d07200741ff007141087420022d0001722103200241026a21020c010b200021020b200420036b22044100480d0220064101732106200241c38fc000470d000c020b0b0240200041ffff074b0d0020004180fe0371410876210141d48fc000210241002103200041ff0171210402400340200241026a2105200320022d000122066a21070240024020022d000022022001470d0020072003490d09200741b0014f0d0a200341a090c0006a210203402006450d022006417f6a210620022d00002103200241016a210220032004470d000b410021060c050b200220014b0d022007210320052102200541a090c000470d010c020b2007210320052102200541a090c000470d000b0b200041ffff0371210441cf91c0002102410121060340200241016a21000240024020022d000022034118744118752207417f4a0d00200041f294c000460d0a200741ff007141087420022d0001722103200241026a21020c010b200021020b200420036b22044100480d0220064101732106200241f294c000470d000c020b0b41002106200041b5d9736a41b5db2b490d00200041e28b746a41e20b490d002000419fa8746a419f18490d00200041dee2746a410e490d00200041feffff0071419ef00a460d00200041a2b2756a4122490d00200041cb91756a410b4f0d070b20064101710f0b2003200741dc8ac0001062000b200741a20241dc8ac0001058000b418a98ca00412b41c48fc000103c000b2003200741dc8ac0001062000b200741af0141dc8ac0001058000b418a98ca00412b41c48fc000103c000b200041f08338490ba70201037f23004180016b22022400024002400240024020012802002203411071450d00410021030340200220036a41ff006a2000410f712204413072200441d7006a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d0220014181c6c0004102200220036a4180016a410020036b105621000c010b02402003412071450d00410021030340200220036a41ff006a2000410f712204413072200441376a2004410a491b3a00002003417f6a2103200041047622000d000b20034180016a22004181014f0d0320014181c6c0004102200220036a4180016a410020036b105621000c010b2000ad2001105321000b20024180016a240020000f0b200041800141bc89c0001061000b200041800141bc89c0001061000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c200341cc89c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021047000b6c01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41013602002003420237020c2003419895c000360208200341013602242003200341206a3602182003200341046a36022820032003360220200341086a20021047000bec0201017f230041f0006b220624002006200136020c2006200036020820062003360214200620023602102006410236021c2006418c9dc000360218024020042802000d00200641386a41146a4103360200200641c4006a4103360200200641d8006a41146a41033602002006420437025c200641909dc0003602582006410436023c2006200641386a3602682006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051047000b200641206a41106a200441106a290200370300200641206a41086a200441086a29020037030020062004290200370320200641d8006a41146a4104360200200641d4006a4108360200200641386a41146a4103360200200641c4006a41033602002006420537025c200641b09dc0003602582006410436023c2006200641386a3602682006200641206a3602502006200641106a3602482006200641086a3602402006200641186a360238200641d8006a20051047000b140020002802002001200028020428020c1101000b6401027f230041206b220224002001411c6a280200210320012802182101200241086a41106a200041106a290200370300200241086a41086a200041086a2902003703002002200029020037030820012003200241086a10402100200241206a240020000b1c002001280218418f9ec000410b2001411c6a28020028020c1100000b1c002001280218419a9ec000410e2001411c6a28020028020c1100000b5b01017f230041306b220324002003200136020c20032000360208200341246a410136020020034201370214200341f0fac9003602102003410436022c2003200341286a3602202003200341086a360228200341106a20021047000b1500200120002802002200280200200028020410590b8a0501077f0240024002402002450d000340024020002802082d0000450d00200028020041e19ec0004104200028020428020c110000450d0041010f0b4100210320022104024002400340200120036a210502400240200441074b0d002004450d03200220036b2106410021070340200520076a2d0000410a460d022006200741016a2207470d000c040b0b024002400240200541036a417c7120056b2207450d0020042007200720044b1b2106410021070340200520076a2d0000410a460d042006200741016a2207470d000b2006200441786a22084b0d020c010b200441786a2108410021060b02400340200520066a220741046a2802002209417f732009418a94a8d0007341fffdfb776a7120072802002207417f732007418a94a8d0007341fffdfb776a7172418081828478710d01200641086a220620084d0d000b0b200620044b0d070b20042006460d02200420066b21092001200620036a6a21054100210702400340200520076a2d0000410a460d012009200741016a2207470d000c040b0b200620076a21070b200720036a220741016a21030240200720024f0d00200120076a2d0000410a470d00410121070c030b200220036b2104200220034f0d000b0b41002107200221030b200028020820073a0000200028020421072000280200210602400240024020022003460d000240200220034d0d00200120036a22052c000041bf7f4a0d020b200120024100200341e89ec000105a000b200620012002200728020c110000450d0141010f0b0240200620012003200728020c110000450d0041010f0b20052c000041bf7f4c0d040b200120036a2101200220036b22020d000b0b41000f0b2006200441a89fc0001061000b200120022003200241f89ec000105a000bbc0302047f027e230041c0006b2205240041012106024020002d00040d0020002d000521070240200028020022082d0000410471450d000240200741ff01710d0041012106200828021841dd9fc00041032008411c6a28020028020c1100000d02200028020021080b41012106200541013a0017200541346a41e09fc000360200200520082902183703082005200541176a360210200829020821092008290210210a200520082d00203a00382005200a37032820052009370320200520082902003703182005200541086a360230200541086a20012002106a0d01200541086a4194f3c9004102106a0d012003200541186a200428020c1101000d01200528023041f89fc0004102200528023428020c11000021060c010b41012106200828021841db9fc00041d89fc000200741ff017122071b4102410320071b2008411c6a28020028020c1100000d004101210620002802002208280218200120022008411c6a28020028020c1100000d0041012106200028020022082802184194f3c90041022008411c6a28020028020c1100000d0020032000280200200428020c11010021060b200041013a0005200020063a0004200541c0006a240020000b850201027f230041106b220224002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b200020032001106a2101200241106a240020010b6001017f230041206b2202240020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41fc9fc000200241086a10402101200241206a240020010b0d00200028020020012002106a0b8c0201027f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b200020032001106a2101200241106a240020010b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41fc9fc000200241086a10402101200241206a240020010b840703017f027e027f02402002280200220341134c0d00024002400240200042808084fea6dee111540d002002200341706a2203360200200120036a200042808084fea6dee111802204428080fc81d9a19e6e7e20007c2200428080e983b1de1680a741ff017141e4007041017441fe85c0006a2f00003b0000200228020020016a41026a20004280a094a58d1d80a741ffff037141e4007041017441fe85c0006a2f00003b0000200228020020016a41046a20004280c8afa02580a741e4007041017441fe85c0006a2f00003b0000200228020020016a41066a20004280c2d72f80a741e4007041017441fe85c0006a2f00003b0000200228020020016a41086a200042c0843d8042e40082a741017441fe85c0006a2f00003b0000200228020020016a410a6a20004290ce008042e40082a741017441fe85c0006a2f00003b0000200228020020016a410c6a200042e40080220542e40082a741017441fe85c0006a2f00003b00002005429c7f7e20007ca72103410e21060c010b024020004280c2d72f5a0d00200021040c020b2002200341786a2203360200200120036a20004280c2d72f8022044280bea8507e20007ca7220341c0843d6e41ff017141e4007041017441fe85c0006a2f00003b0000200228020020016a41026a20034190ce006e41ffff037141e4007041017441fe85c0006a2f00003b0000200228020020016a41046a200341e4006e220641e4007041017441fe85c0006a2f00003b00002006419c7f6c20036a2103410621060b2001200228020020066a6a200341017441fe85c0006a2f00003b00000b024002402004a722064190ce004f0d00200621030c010b20022002280200417c6a2203360200200120036a20064190ce006e220341f0b17f6c20066a220641ffff037141e4006e220741017441fe85c0006a2f00003b0000200228020020016a41026a2007419c7f6c20066a41ffff037141017441fe85c0006a2f00003b00000b0240200341ffff0371220641e400490d0020022002280200417e6a2207360200200120076a200641e4006e2206419c7f6c20036a41ffff037141017441fe85c0006a2f00003b0000200621030b0240200341ffff037141094b0d0020022002280200417f6a2206360200200120066a200341306a3a00000f0b20022002280200417e6a2206360200200120066a200341ffff037141017441fe85c0006a2f00003b00000f0b419da0c000411c41bca0c000103c000b0b002000310000200110530b870101027f23004180016b2202240020002d00002103410021000340200220006a41ff006a20034101714130723a00002000417f6a2100200341017641ff007122030d000b024020004180016a2203418101490d00200341800141bc89c0001061000b20014187a1c0004102200220006a4180016a410020006b1056210020024180016a240020000b1c00200128021841b7b4c00041052001411c6a28020028020c1100000bcf0401067e2000420037001720002001290320220242338842137e2001290300220342ffffffffffffff03837c220442137c4233882001290308220542ffffffffffffff038320034233887c22037c4233882001290310220642ffffffffffffff038320054233887c22057c4233882001290318220742ffffffffffffff038320064233887c22067c423388200242ffffffffffffff038320074233887c22077c42338842137e20047c22023c0000200020024228883c0005200020024220883c0004200020024218883c0003200020024210883c0002200020024208883c00012000200242338820037c22044225883c000b20002004421d883c000a200020044215883c000920002004420d883c0008200020044205883c00072000200442338820057c2203422a883c0012200020034222883c001120002003421a883c0010200020034212883c000f20002003420a883c000e200020034202883c000d2000200442ffffffffffffff038322044203862002423088420783843c00062000200342338820067c2202421f883c0017200020024227883c0018200020024217883c001620002002420f883c0015200020024207883c00142000200342ffffffffffffff038322054206862004422d88843c000c2000200242338820077c22034204883c001a20002003420c883c001b200020034214883c001c20002003421c883c001d200020034224883c001e2000200242ffffffffffffff038322024201862005423288843c00132000200342ffffffffffffff03832203422c883c001f200020034204862002422f88843c00190b7101027f230041c0006b22022400200220001075200241206a2001107541002101410121000340200241206a20016a2d0000200220016a2d0000732203410020036b72417f734180017141077610772000712100200141016a22014120470d000b200010772101200241c0006a240020010b1501017f230041106b220120003a000f20012d000f0bd00702017f147e230041f0016b2203240020012903202104200129031821052001290310210620012903082107200129030021080340200341b0016a200842002008420010be0920034180016a20074200200442137e2209420010be09200341c0006a200542137e220a42002006420010be09200341e0016a200a42002005420010be09200341f0006a200842002007420010be09200341306a200642002009420010be09200341e0006a200742002007420010be09200341206a200842002006420010be09200341d0016a200a42002004420010be09200341c0016a200942002004420010be09200341a0016a200842002005420010be09200341106a200742002006420010be092003200642002006420010be0920034190016a200842002004420010be09200341d0006a200742002005420010be09200329039001220b20032903507c2206420186220c20032903007c220720032903a001220d20032903107c2208420186220e20032903c0017c22042003290320220f20032903d0017c2205420186221020032903607c22092003290370221120032903307c220a420186221220032903e0017c2213200329038001221420032903407c2215420186221620032903b0017c221742338820034180016a41086a290300200341c0006a41086a2903007c2015201454ad7c4201862015423f8884200341b0016a41086a2903007c2017201654ad7c420d86847c2215423388200341f0006a41086a290300200341306a41086a2903007c200a201154ad7c420186200a423f8884200341e0016a41086a2903007c2013201254ad7c2015201354ad7c420d86847c220a423388200341206a41086a290300200341d0016a41086a2903007c2005200f54ad7c4201862005423f8884200341e0006a41086a2903007c2009201054ad7c200a200954ad7c420d86847c2205423388200341a0016a41086a290300200341106a41086a2903007c2008200d54ad7c4201862008423f8884200341c0016a41086a2903007c2004200e54ad7c2005200454ad7c420d86847c220442338820034190016a41086a290300200341d0006a41086a2903007c2006200b54ad7c4201862006423f8884200341086a2903007c2007200c54ad7c2004200754ad7c420d868442137e201742ffffffffffffff03837c220642ffffffffffffff038321082006423388201542ffffffffffffff03837c2107200442ffffffffffffff03832104200542ffffffffffffff03832105200a42ffffffffffffff038321062002417f6a22020d000b2000200437032020002005370318200020063703102000200737030820002008370300200341f0016a24000bbbd40103017f297e037f230041d0c1006b22032400200341a8c1006a200241011078200341a0386a20022903002204420020032903a8412205420010be09200341b0396a20032903c841220642002002290308220742137e2208420010be09200341f0396a20032903c041220942002002290310220a42137e220b420010be09200341b03a6a20032903b841220c42002002290318220d42137e220e420010be09200341f03a6a20032903b041220f42002002290320221042137e2211420010be09200341f0386a200f42002004420010be09200341b0386a200542002007420010be09200341c0396a20064200200b420010be09200341803a6a20094200200e420010be09200341c03a6a200c42002011420010be0920034180396a200c42002004420010be09200341803b6a200f42002007420010be09200341c0386a20054200200a420010be09200341d0396a20064200200e420010be09200341903a6a200942002011420010be0920034190396a200942002004420010be09200341d03a6a200c42002007420010be09200341903b6a200f4200200a420010be09200341d0386a20054200200d420010be09200341e0396a200642002011420010be09200341a0396a200642002004420010be09200341a03a6a200942002007420010be09200341e03a6a200c4200200a420010be09200341a03b6a200f4200200d420010be09200341e0386a200542002010420010be09200320032903d039221220032903c0387c220520032903903a7c22062003290380397c220920032903803b7c220c20032903c039221320032903b0387c220f20032903803a7c221420032903c03a7c221520032903f0387c221620032903b039221720032903a0387c221820032903f0397c221920032903b03a7c221a20032903f03a7c221b423388200341b0396a41086a290300200341a0386a41086a2903007c2018201754ad7c200341f0396a41086a2903007c2019201854ad7c200341b03a6a41086a2903007c201a201954ad7c200341f03a6a41086a2903007c201b201a54ad7c420d86847c2219423388200341c0396a41086a290300200341b0386a41086a2903007c200f201354ad7c200341803a6a41086a2903007c2014200f54ad7c200341c03a6a41086a2903007c2015201454ad7c200341f0386a41086a2903007c2016201554ad7c2019201654ad7c420d86847c220f42ffffffffffffff038322143703c03b200320032903e039221720032903d0387c22152003290390397c221620032903d03a7c221a20032903903b7c2213200f423388200341d0396a41086a290300200341c0386a41086a2903007c2005201254ad7c200341903a6a41086a2903007c2006200554ad7c20034180396a41086a2903007c2009200654ad7c200341803b6a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c220542ffffffffffffff038322183703c83b200320032903a039221220032903e0387c220620032903a03a7c220920032903e03a7c220c20032903a03b7c220f2005423388200341e0396a41086a290300200341d0386a41086a2903007c2015201754ad7c20034190396a41086a2903007c2016201554ad7c200341d03a6a41086a2903007c201a201654ad7c200341903b6a41086a2903007c2013201a54ad7c2005201354ad7c420d86847c220542ffffffffffffff0383221a3703d03b20032005423388200341a0396a41086a290300200341e0386a41086a2903007c2006201254ad7c200341a03a6a41086a2903007c2009200654ad7c200341e03a6a41086a2903007c200c200954ad7c200341a03b6a41086a2903007c200f200c54ad7c2005200f54ad7c420d868442137e201b42ffffffffffffff03837c220542ffffffffffffff0383220c3703b03b20032005423388201942ffffffffffffff03837c220f3703b83b200341a8c1006a200341b03b6a4101107820034190356a20032903a841220542002004420010be09200341e0356a20032903c841220642002008420010be09200341b0366a20032903c04122094200200b420010be0920034180376a20032903b84122154200200e420010be09200341d0376a20032903b041221642002011420010be09200341e0376a201642002004420010be09200341a0356a200542002007420010be09200341f0356a20064200200b420010be09200341c0366a20094200200e420010be0920034190376a201542002011420010be09200341a0376a201542002004420010be09200341f0376a201642002007420010be09200341b0356a20054200200a420010be0920034180366a20064200200e420010be09200341d0366a200942002011420010be09200341e0366a200942002004420010be09200341b0376a201542002007420010be0920034180386a20164200200a420010be09200341c0356a20054200200d420010be0920034190366a200642002011420010be09200341a0366a200642002004420010be09200341f0366a200942002007420010be09200341c0376a20154200200a420010be0920034190386a20164200200d420010be09200341d0356a200542002010420010be09200341800d6a200c420020012903002211420010be0920034190346a200f42137e42002001290320220e420010be09200341d0336a200129031822054200201442137e220b420010be0920034190336a200129031022064200201842137e2216420010be09200341c0326a200129030822094200201a42137e2215420010be09200341f00c6a20094200200c420010be0920034180356a200f42002011420010be0920034180346a200e4200200b420010be09200341c0336a200542002016420010be0920034180336a200642002015420010be09200341e00c6a200c42002006420010be09200341b0326a200f42002009420010be09200341f0346a201142002014420010be09200341f0336a200e42002016420010be09200341b0336a200542002015420010be09200341800c6a200c42002005420010be09200341f0326a200f42002006420010be09200341a0326a200942002014420010be09200341e0346a201142002018420010be09200341e0336a20154200200e420010be09200341a00b6a200c4200200e420010be09200341a0336a200f42002005420010be09200341e0326a200642002014420010be0920034190326a200942002018420010be09200341d0346a201a42002011420010be0920034180306a20032903a036221c20032903d0357c220c20032903f0367c220f20032903c0377c22142003290390387c2215200329039036221d20032903c0357c221620032903e0367c220b20032903b0377c22182003290380387c2219200329038036221e20032903b0357c221a20032903d0367c221b20032903a0377c221320032903f0377c220820032903f035221f20032903a0357c221220032903c0367c22172003290390377c222020032903e0377c222120032903e03522222003290390357c222320032903b0367c22242003290380377c222520032903d0377c2226423388200341e0356a41086a29030020034190356a41086a2903007c2023202254ad7c200341b0366a41086a2903007c2024202354ad7c20034180376a41086a2903007c2025202454ad7c200341d0376a41086a2903007c2026202554ad7c420d86847c2223423388200341f0356a41086a290300200341a0356a41086a2903007c2012201f54ad7c200341c0366a41086a2903007c2017201254ad7c20034190376a41086a2903007c2020201754ad7c200341e0376a41086a2903007c2021202054ad7c2023202154ad7c420d86847c221242338820034180366a41086a290300200341b0356a41086a2903007c201a201e54ad7c200341d0366a41086a2903007c201b201a54ad7c200341a0376a41086a2903007c2013201b54ad7c200341f0376a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a42338820034190366a41086a290300200341c0356a41086a2903007c2016201d54ad7c200341e0366a41086a2903007c200b201654ad7c200341b0376a41086a2903007c2018200b54ad7c20034180386a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2216423388200341a0366a41086a290300200341d0356a41086a2903007c200c201c54ad7c200341f0366a41086a2903007c200f200c54ad7c200341c0376a41086a2903007c2014200f54ad7c20034190386a41086a2903007c2015201454ad7c2016201554ad7c420d868442137e202642ffffffffffffff03837c220f42ffffffffffffff0383220c42002011420010be09200341d0306a200f423388202342ffffffffffffff03837c220f42137e4200200e420010be09200341f0306a201242ffffffffffffff0383221442137e221942002005420010be09200341a0316a201a42ffffffffffffff0383220b42137e221842002006420010be09200341e0316a201642ffffffffffffff0383221642137e221542002009420010be09200341f02f6a200c42002009420010be09200341c0306a200f42002011420010be09200341e0306a20194200200e420010be0920034190316a201842002005420010be09200341d0316a201542002006420010be09200341e02f6a200c42002006420010be09200341b0306a200f42002009420010be09200341c0346a201442002011420010be0920034180316a20184200200e420010be09200341c0316a201542002005420010be09200341d02f6a200c42002005420010be09200341a0306a200f42002006420010be0920034180326a201442002009420010be09200341b0346a200b42002011420010be09200341b0316a20154200200e420010be09200341c02f6a200c4200200e420010be0920034190306a200f42002005420010be09200341d0326a201442002006420010be09200341f0316a200b42002009420010be09200341a0346a201642002011420010be092003200329038031221220032903c0347c220f20032903c0317c221420032903e02f7c221520032903b0307c2216200329039031221720032903e0307c220c20032903d0317c220b20032903f02f7c221820032903c0307c221920032903a031222020032903f0307c221a20032903e0317c221b2003290380307c221320032903d0307c2208423388200341a0316a41086a290300200341f0306a41086a2903007c201a202054ad7c200341e0316a41086a2903007c201b201a54ad7c20034180306a41086a2903007c2013201b54ad7c200341d0306a41086a2903007c2008201354ad7c420d86847c221a42338820034190316a41086a290300200341e0306a41086a2903007c200c201754ad7c200341d0316a41086a2903007c200b200c54ad7c200341f02f6a41086a2903007c2018200b54ad7c200341c0306a41086a2903007c2019201854ad7c201a201954ad7c420d86847c220b42ffffffffffffff0383220c3703e83b200320032903b03422172003290380327c221820032903b0317c221920032903d02f7c221b20032903a0307c2213200b42338820034180316a41086a290300200341c0346a41086a2903007c200f201254ad7c200341c0316a41086a2903007c2014200f54ad7c200341e02f6a41086a2903007c2015201454ad7c200341b0306a41086a2903007c2016201554ad7c200b201654ad7c420d86847c221442ffffffffffffff0383220f3703f03b200320032903f031222020032903d0327c221520032903a0347c221620032903c02f7c220b2003290390307c22122014423388200341b0346a41086a29030020034180326a41086a2903007c2018201754ad7c200341b0316a41086a2903007c2019201854ad7c200341d02f6a41086a2903007c201b201954ad7c200341a0306a41086a2903007c2013201b54ad7c2014201354ad7c420d86847c221842ffffffffffffff038322143703f83b20032018423388200341f0316a41086a290300200341d0326a41086a2903007c2015202054ad7c200341a0346a41086a2903007c2016201554ad7c200341c02f6a41086a2903007c200b201654ad7c20034190306a41086a2903007c2012200b54ad7c2018201254ad7c420d868442137e200842ffffffffffffff03837c221642ffffffffffffff038322153703d83b20032016423388201a42ffffffffffffff03837c22163703e03b200341803c6a200341d83b6a41011078200341a8c1006a200341803c6a41011078200341a83c6a200341a8c1006a41011078200341b02f6a20032903a83c220b42002015420010be09200341b02c6a2014420020032903b03c221842137e420010be09200341902d6a200f420020032903b83c221942137e2208420010be09200341f02d6a200c420020032903c03c221b42137e2213420010be09200341d02e6a2016420020032903c83c221242137e221a420010be09200341a02f6a20164200200b420010be09200341f02c6a201542002018420010be09200341802d6a201442002008420010be09200341e02d6a200f42002013420010be09200341c02e6a200c4200201a420010be09200341902f6a200c4200200b420010be09200341e02c6a201642002018420010be09200341c02d6a201542002019420010be09200341d02d6a201442002013420010be09200341b02e6a200f4200201a420010be09200341802f6a200f4200200b420010be09200341d02c6a200c42002018420010be09200341b02d6a201642002019420010be09200341902e6a20154200201b420010be09200341a02e6a20144200201a420010be09200341f02e6a20144200200b420010be09200341c02c6a200f42002018420010be09200341a02d6a200c42002019420010be09200341802e6a20164200201b420010be09200341e02e6a201542002012420010be09200341e0296a20032903f02e222720032903e02e7c220b20032903c02c7c221820032903a02d7c221920032903802e7c221a20032903a02e222820032903902e7c221b20032903802f7c221320032903d02c7c220820032903b02d7c221220032903d02d222920032903c02d7c221720032903b02e7c222020032903902f7c222120032903e02c7c222320032903802d222a20032903f02c7c222420032903e02d7c222520032903c02e7c222620032903a02f7c221c20032903b02c222b20032903b02f7c221d20032903902d7c221e20032903f02d7c221f20032903d02e7c2222423388200341b02c6a41086a290300200341b02f6a41086a2903007c201d202b54ad7c200341902d6a41086a2903007c201e201d54ad7c200341f02d6a41086a2903007c201f201e54ad7c200341d02e6a41086a2903007c2022201f54ad7c420d86847c221d423388200341802d6a41086a290300200341f02c6a41086a2903007c2024202a54ad7c200341e02d6a41086a2903007c2025202454ad7c200341c02e6a41086a2903007c2026202554ad7c200341a02f6a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341d02d6a41086a290300200341c02d6a41086a2903007c2017202954ad7c200341b02e6a41086a2903007c2020201754ad7c200341902f6a41086a2903007c2021202054ad7c200341e02c6a41086a2903007c2023202154ad7c2024202354ad7c420d86847c2217423388200341a02e6a41086a290300200341902e6a41086a2903007c201b202854ad7c200341802f6a41086a2903007c2013201b54ad7c200341d02c6a41086a2903007c2008201354ad7c200341b02d6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b423388200341f02e6a41086a290300200341e02e6a41086a2903007c200b202754ad7c200341c02c6a41086a2903007c2018200b54ad7c200341a02d6a41086a2903007c2019201854ad7c200341802e6a41086a2903007c201a201954ad7c201b201a54ad7c420d868442137e202242ffffffffffffff03837c221842ffffffffffffff0383220b420020032903803c2213420010be09200341b02a6a2018423388201d42ffffffffffffff03837c221842137e420020032903a03c2208420010be09200341d02a6a202442ffffffffffffff0383221942137e2224420020032903983c2212420010be09200341802b6a201742ffffffffffffff0383221a42137e2223420020032903903c2217420010be09200341c02b6a201b42ffffffffffffff0383221b42137e2221420020032903883c2220420010be09200341d0296a200b42002020420010be09200341a02a6a201842002013420010be09200341c02a6a202442002008420010be09200341f02a6a202342002012420010be09200341b02b6a202142002017420010be09200341c0296a200b42002017420010be09200341902a6a201842002020420010be09200341d02b6a201942002013420010be09200341e02a6a202342002008420010be09200341a02b6a202142002012420010be09200341b0296a200b42002012420010be09200341802a6a201842002017420010be09200341e02b6a201942002020420010be09200341802c6a201a42002013420010be09200341902b6a202142002008420010be09200341a0296a200b42002008420010be09200341f0296a201842002012420010be09200341f02b6a201942002017420010be09200341902c6a201a42002020420010be09200341a02c6a201b42002013420010be09200320032903e02a221e20032903d02b7c221320032903a02b7c220820032903c0297c221220032903902a7c221720032903f02a221f20032903c02a7c222020032903b02b7c222120032903d0297c222320032903a02a7c222420032903802b222220032903d02a7c222520032903c02b7c222620032903e0297c221c20032903b02a7c221d423388200341802b6a41086a290300200341d02a6a41086a2903007c2025202254ad7c200341c02b6a41086a2903007c2026202554ad7c200341e0296a41086a2903007c201c202654ad7c200341b02a6a41086a2903007c201d201c54ad7c420d86847c2225423388200341f02a6a41086a290300200341c02a6a41086a2903007c2020201f54ad7c200341b02b6a41086a2903007c2021202054ad7c200341d0296a41086a2903007c2023202154ad7c200341a02a6a41086a2903007c2024202354ad7c2025202454ad7c420d86847c222042ffffffffffffff03833703e03c200320032903802c221c20032903e02b7c222120032903902b7c222320032903b0297c222420032903802a7c22262020423388200341e02a6a41086a290300200341d02b6a41086a2903007c2013201e54ad7c200341a02b6a41086a2903007c2008201354ad7c200341c0296a41086a2903007c2012200854ad7c200341902a6a41086a2903007c2017201254ad7c2020201754ad7c420d86847c221342ffffffffffffff03833703e83c200320032903902c221e20032903f02b7c220820032903a02c7c221220032903a0297c221720032903f0297c22202013423388200341802c6a41086a290300200341e02b6a41086a2903007c2021201c54ad7c200341902b6a41086a2903007c2023202154ad7c200341b0296a41086a2903007c2024202354ad7c200341802a6a41086a2903007c2026202454ad7c2013202654ad7c420d86847c221342ffffffffffffff03833703f03c20032013423388200341902c6a41086a290300200341f02b6a41086a2903007c2008201e54ad7c200341a02c6a41086a2903007c2012200854ad7c200341a0296a41086a2903007c2017201254ad7c200341f0296a41086a2903007c2020201754ad7c2013202054ad7c420d868442137e201d42ffffffffffffff03837c221342ffffffffffffff03833703d03c20032013423388202542ffffffffffffff03837c3703d83c200341f83c6a200341d03c6a4101107820034190296a200b420020032903f83c2213420010be0920034190266a201b420020032903803d220842137e420010be09200341f0266a20032903883d221242137e22234200201a420010be09200341d0276a20032903903d222042137e222142002019420010be09200341b0286a2018420020032903983d222442137e2217420010be0920034180296a201842002013420010be09200341d0266a200b42002008420010be09200341e0266a201b42002023420010be09200341c0276a20214200201a420010be09200341a0286a201742002019420010be09200341f0286a201342002019420010be09200341c0266a201842002008420010be09200341a0276a200b42002012420010be09200341b0276a20214200201b420010be0920034190286a20174200201a420010be09200341e0286a20134200201a420010be09200341b0266a200842002019420010be0920034190276a201842002012420010be09200341f0276a200b42002020420010be0920034180286a20174200201b420010be09200341d0286a20134200201b420010be09200341a0266a20084200201a420010be0920034180276a201242002019420010be09200341e0276a201842002020420010be09200341c0286a200b42002024420010be092003200329039028222520032903b0277c220b20032903f0287c221820032903a0277c221a20032903c0267c221b20032903c027222420032903e0267c221920032903a0287c221320032903d0267c22082003290380297c221220032903f02622262003290390267c221720032903d0277c22202003290390297c222120032903b0287c2223423388200341f0266a41086a29030020034190266a41086a2903007c2017202654ad7c200341d0276a41086a2903007c2020201754ad7c20034190296a41086a2903007c2021202054ad7c200341b0286a41086a2903007c2023202154ad7c420d86847c2220423388200341c0276a41086a290300200341e0266a41086a2903007c2019202454ad7c200341a0286a41086a2903007c2013201954ad7c200341d0266a41086a2903007c2008201354ad7c20034180296a41086a2903007c2012200854ad7c2020201254ad7c420d86847c221342ffffffffffffff038322193703b03d2003200329038028222620032903b0267c220820032903e0287c221220032903f0277c22212003290390277c2224201342338820034190286a41086a290300200341b0276a41086a2903007c200b202554ad7c200341f0286a41086a2903007c2018200b54ad7c200341a0276a41086a2903007c201a201854ad7c200341c0266a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff038322173703b83d2003200329038027222520032903a0267c221820032903d0287c221a20032903c0287c221b20032903e0277c2213200b42338820034180286a41086a290300200341b0266a41086a2903007c2008202654ad7c200341e0286a41086a2903007c2012200854ad7c200341f0276a41086a2903007c2021201254ad7c20034190276a41086a2903007c2024202154ad7c200b202454ad7c420d86847c220b42ffffffffffffff038322213703c03d2003200b42338820034180276a41086a290300200341a0266a41086a2903007c2018202554ad7c200341d0286a41086a2903007c201a201854ad7c200341c0286a41086a2903007c201b201a54ad7c200341e0276a41086a2903007c2013201b54ad7c200b201354ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703a03d20032018423388202042ffffffffffffff03837c22183703a83d200341c83d6a200341a03d6a41051078200341c0236a200b420020032903c83d221a420010be09200341c0246a201842137e420020032903e83d221b420010be0920034180256a201942137e2224420020032903e03d2213420010be09200341c0256a201742137e2223420020032903d83d2208420010be0920034180266a202142137e2220420020032903d03d2212420010be09200341b0236a200b42002012420010be0920034180246a20184200201a420010be09200341b0246a20244200201b420010be09200341f0246a202342002013420010be09200341b0256a202042002008420010be09200341a0236a200b42002008420010be09200341f0256a201842002012420010be09200341f0236a20194200201a420010be09200341a0246a20234200201b420010be09200341e0246a202042002013420010be0920034190236a200b42002013420010be09200341a0256a201842002008420010be09200341e0256a201942002012420010be09200341e0236a20174200201a420010be0920034190246a20204200201b420010be0920034180236a200b4200201b420010be09200341d0246a201842002013420010be0920034190256a201942002008420010be09200341d0256a201742002012420010be09200341d0236a20214200201a420010be09200320032903a024222420032903f0237c220b20032903e0247c221820032903a0237c221a20032903f0257c221b20032903f024222520032903b0247c221920032903b0257c221320032903b0237c22082003290380247c221220032903c02522262003290380257c22172003290380267c222020032903c0237c222120032903c0247c2223423388200341c0256a41086a29030020034180256a41086a2903007c2017202654ad7c20034180266a41086a2903007c2020201754ad7c200341c0236a41086a2903007c2021202054ad7c200341c0246a41086a2903007c2023202154ad7c420d86847c2217423388200341f0246a41086a290300200341b0246a41086a2903007c2019202554ad7c200341b0256a41086a2903007c2013201954ad7c200341b0236a41086a2903007c2008201354ad7c20034180246a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703803e200320032903e023222520032903e0257c22082003290390247c22122003290390237c222020032903a0257c22212013423388200341a0246a41086a290300200341f0236a41086a2903007c200b202454ad7c200341e0246a41086a2903007c2018200b54ad7c200341a0236a41086a2903007c201a201854ad7c200341f0256a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703883e200320032903d025221c2003290390257c221820032903d0237c221a2003290380237c221320032903d0247c2224200b423388200341e0236a41086a290300200341e0256a41086a2903007c2008202554ad7c20034190246a41086a2903007c2012200854ad7c20034190236a41086a2903007c2020201254ad7c200341a0256a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff038322263703903e2003200b423388200341d0256a41086a29030020034190256a41086a2903007c2018201c54ad7c200341d0236a41086a2903007c201a201854ad7c20034180236a41086a2903007c2013201a54ad7c200341d0246a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703f03d20032018423388201742ffffffffffffff03837c22183703f83d200341983e6a200341f03d6a410a1078200341b0206a200b420020032903983e2208420010be0920034180216a201842137e2228420020032903b83e2212420010be09200341d0216a201942137e221c420020032903b03e2217420010be09200341a0226a201b42137e2213420020032903a83e2220420010be09200341f0226a202642137e221a420020032903a03e2221420010be09200341e0226a200b42002021420010be09200341a0206a201842002008420010be09200341f0206a201c42002012420010be09200341c0216a201342002017420010be0920034190226a201a42002020420010be0920034180226a200b42002020420010be09200341d0226a201842002021420010be0920034190206a201942002008420010be09200341e0206a201342002012420010be09200341b0216a201a42002017420010be09200341a0216a200b42002017420010be09200341f0216a201842002020420010be09200341c0226a201942002021420010be0920034180206a201b42002008420010be09200341d0206a201a42002012420010be09200341c0206a200b42002012420010be0920034190216a201842002017420010be09200341e0216a201942002020420010be09200341b0226a201b42002021420010be09200341f01f6a202642002008420010be09200320032903e02022292003290390207c220820032903b0217c22122003290380227c222020032903d0227c222120032903c021222720032903f0207c22172003290390227c222320032903e0227c222420032903a0207c222520032903a022222a20032903d0217c221d20032903f0227c221e20032903b0207c221f2003290380217c2222423388200341a0226a41086a290300200341d0216a41086a2903007c201d202a54ad7c200341f0226a41086a2903007c201e201d54ad7c200341b0206a41086a2903007c201f201e54ad7c20034180216a41086a2903007c2022201f54ad7c420d86847c221e423388200341c0216a41086a290300200341f0206a41086a2903007c2017202754ad7c20034190226a41086a2903007c2023201754ad7c200341e0226a41086a2903007c2024202354ad7c200341a0206a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703d03e2003200329038020222a20032903c0227c222420032903d0207c222520032903a0217c221f20032903f0217c22272023423388200341e0206a41086a29030020034190206a41086a2903007c2008202954ad7c200341b0216a41086a2903007c2012200854ad7c20034180226a41086a2903007c2020201254ad7c200341d0226a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703d83e200320032903b022222920032903e0217c221220032903f01f7c222020032903c0207c22212003290390217c2223200842338820034180206a41086a290300200341c0226a41086a2903007c2024202a54ad7c200341d0206a41086a2903007c2025202454ad7c200341a0216a41086a2903007c201f202554ad7c200341f0216a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703e03e20032008423388200341b0226a41086a290300200341e0216a41086a2903007c2012202954ad7c200341f01f6a41086a2903007c2020201254ad7c200341c0206a41086a2903007c2021202054ad7c20034190216a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703c03e20032012423388201e42ffffffffffffff03837c22123703c83e200341e83e6a200341c03e6a41141078200341a01d6a2008420020032903e83e2220420010be09200341f01d6a201242137e420020032903883f2221420010be09200341c01e6a201742137e2227420020032903803f2223420010be09200341901f6a201d42137e2222420020032903f83e2224420010be09200341e01f6a201f42137e221e420020032903f03e2225420010be09200341d01f6a200842002025420010be09200341901d6a201242002020420010be09200341e01d6a202742002021420010be09200341b01e6a202242002023420010be09200341801f6a201e42002024420010be09200341f01e6a200842002024420010be09200341c01f6a201242002025420010be09200341801d6a201742002020420010be09200341d01d6a202242002021420010be09200341a01e6a201e42002023420010be09200341901e6a200842002023420010be09200341e01e6a201242002024420010be09200341b01f6a201742002025420010be09200341f01c6a201d42002020420010be09200341c01d6a201e42002021420010be09200341b01d6a200842002021420010be09200341801e6a201242002023420010be09200341d01e6a201742002024420010be09200341a01f6a201d42002025420010be09200341e01c6a201f42002020420010be09200320032903d01d222720032903801d7c220820032903a01e7c221220032903f01e7c221720032903c01f7c222020032903b01e222920032903e01d7c222120032903801f7c222320032903d01f7c222420032903901d7c222520032903901f222a20032903c01e7c221d20032903e01f7c221e20032903a01d7c221f20032903f01d7c2222423388200341901f6a41086a290300200341c01e6a41086a2903007c201d202a54ad7c200341e01f6a41086a2903007c201e201d54ad7c200341a01d6a41086a2903007c201f201e54ad7c200341f01d6a41086a2903007c2022201f54ad7c420d86847c221d423388200341b01e6a41086a290300200341e01d6a41086a2903007c2021202954ad7c200341801f6a41086a2903007c2023202154ad7c200341d01f6a41086a2903007c2024202354ad7c200341901d6a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff03833703a03f200320032903f01c221f20032903b01f7c222320032903c01d7c222420032903901e7c222520032903e01e7c221e2021423388200341d01d6a41086a290300200341801d6a41086a2903007c2008202754ad7c200341a01e6a41086a2903007c2012200854ad7c200341f01e6a41086a2903007c2017201254ad7c200341c01f6a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff03833703a83f200320032903a01f222720032903d01e7c221220032903e01c7c221720032903b01d7c222020032903801e7c22212008423388200341f01c6a41086a290300200341b01f6a41086a2903007c2023201f54ad7c200341c01d6a41086a2903007c2024202354ad7c200341901e6a41086a2903007c2025202454ad7c200341e01e6a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703b03f20032008423388200341a01f6a41086a290300200341d01e6a41086a2903007c2012202754ad7c200341e01c6a41086a2903007c2017201254ad7c200341b01d6a41086a2903007c2020201754ad7c200341801e6a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703903f20032008423388201d42ffffffffffffff03837c3703983f200341b83f6a200341903f6a410a1078200341901a6a200b420020032903b83f2208420010be09200341e01a6a2028420020032903d83f2212420010be09200341b01b6a20032903d03f22174200201c420010be09200341801c6a20032903c83f222042002013420010be09200341d01c6a20032903c03f22214200201a420010be09200341c01c6a20214200200b420010be09200341801a6a201842002008420010be09200341d01a6a20124200201c420010be09200341a01b6a201742002013420010be09200341f01b6a20204200201a420010be09200341e01b6a20204200200b420010be09200341b01c6a202142002018420010be09200341f0196a200842002019420010be09200341c01a6a201242002013420010be09200341901b6a20174200201a420010be09200341801b6a20174200200b420010be09200341d01b6a202042002018420010be09200341a01c6a202142002019420010be09200341e0196a20084200201b420010be09200341b01a6a20124200201a420010be09200341a01a6a20124200200b420010be09200341f01a6a201742002018420010be09200341c01b6a202042002019420010be09200341901c6a20214200201b420010be09200341d0196a200842002026420010be09200320032903c01a222420032903f0197c220b20032903901b7c221820032903e01b7c221a20032903b01c7c221b20032903801a222520032903d01a7c221920032903a01b7c221320032903f01b7c220820032903c01c7c221220032903b01b222620032903901a7c221720032903e01a7c222020032903801c7c222120032903d01c7c2223423388200341b01b6a41086a290300200341901a6a41086a2903007c2017202654ad7c200341e01a6a41086a2903007c2020201754ad7c200341801c6a41086a2903007c2021202054ad7c200341d01c6a41086a2903007c2023202154ad7c420d86847c2217423388200341801a6a41086a290300200341d01a6a41086a2903007c2019202554ad7c200341a01b6a41086a2903007c2013201954ad7c200341f01b6a41086a2903007c2008201354ad7c200341c01c6a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221342ffffffffffffff038322193703f03f200320032903b01a222520032903e0197c220820032903801b7c221220032903d01b7c222020032903a01c7c22212013423388200341c01a6a41086a290300200341f0196a41086a2903007c200b202454ad7c200341901b6a41086a2903007c2018200b54ad7c200341e01b6a41086a2903007c201a201854ad7c200341b01c6a41086a2903007c201b201a54ad7c2013201b54ad7c420d86847c220b42ffffffffffffff0383221b3703f83f200320032903a01a221c20032903d0197c221820032903f01a7c221a20032903c01b7c221320032903901c7c2224200b423388200341b01a6a41086a290300200341e0196a41086a2903007c2008202554ad7c200341801b6a41086a2903007c2012200854ad7c200341d01b6a41086a2903007c2020201254ad7c200341a01c6a41086a2903007c2021202054ad7c200b202154ad7c420d86847c220b42ffffffffffffff03832226370380402003200b423388200341a01a6a41086a290300200341d0196a41086a2903007c2018201c54ad7c200341f01a6a41086a2903007c201a201854ad7c200341c01b6a41086a2903007c2013201a54ad7c200341901c6a41086a2903007c2024201354ad7c200b202454ad7c420d868442137e202342ffffffffffffff03837c221842ffffffffffffff0383220b3703e03f20032018423388201742ffffffffffffff03837c22183703e83f20034188c0006a200341e03f6a4132107820034180176a200b42002003290388402208420010be09200341d0176a201842137e2228420020032903a8402212420010be09200341a0186a201942137e221c420020032903a0402217420010be09200341f0186a201b42137e221342002003290398402220420010be09200341c0196a202642137e221a42002003290390402221420010be09200341b0196a200b42002021420010be09200341f0166a201842002008420010be09200341c0176a201c42002012420010be0920034190186a201342002017420010be09200341e0186a201a42002020420010be09200341d0186a200b42002020420010be09200341a0196a201842002021420010be09200341e0166a201942002008420010be09200341b0176a201342002012420010be0920034180186a201a42002017420010be09200341f0176a200b42002017420010be09200341c0186a201842002020420010be0920034190196a202142002019420010be09200341d0166a201b42002008420010be09200341a0176a201a42002012420010be0920034190176a200b42002012420010be09200341e0176a201842002017420010be09200341b0186a201942002020420010be0920034180196a201b42002021420010be09200341c0166a202642002008420010be09200320032903b017222920032903e0167c22082003290380187c221220032903d0187c222020032903a0197c2221200329039018222720032903c0177c221720032903e0187c222320032903b0197c222420032903f0167c222520032903f018222a20032903a0187c221d20032903c0197c221e2003290380177c221f20032903d0177c2222423388200341f0186a41086a290300200341a0186a41086a2903007c201d202a54ad7c200341c0196a41086a2903007c201e201d54ad7c20034180176a41086a2903007c201f201e54ad7c200341d0176a41086a2903007c2022201f54ad7c420d86847c221e42338820034190186a41086a290300200341c0176a41086a2903007c2017202754ad7c200341e0186a41086a2903007c2023201754ad7c200341b0196a41086a2903007c2024202354ad7c200341f0166a41086a2903007c2025202454ad7c201e202554ad7c420d86847c222342ffffffffffffff038322173703c040200320032903d016222a2003290390197c222420032903a0177c222520032903f0177c221f20032903c0187c22272023423388200341b0176a41086a290300200341e0166a41086a2903007c2008202954ad7c20034180186a41086a2903007c2012200854ad7c200341d0186a41086a2903007c2020201254ad7c200341a0196a41086a2903007c2021202054ad7c2023202154ad7c420d86847c220842ffffffffffffff0383221d3703c8402003200329038019222920032903b0187c221220032903c0167c22202003290390177c222120032903e0177c22232008423388200341d0166a41086a29030020034190196a41086a2903007c2024202a54ad7c200341a0176a41086a2903007c2025202454ad7c200341f0176a41086a2903007c201f202554ad7c200341c0186a41086a2903007c2027201f54ad7c2008202754ad7c420d86847c220842ffffffffffffff0383221f3703d0402003200842338820034180196a41086a290300200341b0186a41086a2903007c2012202954ad7c200341c0166a41086a2903007c2020201254ad7c20034190176a41086a2903007c2021202054ad7c200341e0176a41086a2903007c2023202154ad7c2008202354ad7c420d868442137e202242ffffffffffffff03837c221242ffffffffffffff038322083703b04020032012423388201e42ffffffffffffff03837c22123703b840200341d8c0006a200341b0c0006a41e4001078200341f0136a2008420020032903d8402220420010be09200341c0146a201242137e420020032903f8402221420010be0920034190156a201742137e2227420020032903f0402223420010be09200341e0156a201d42137e2222420020032903e8402224420010be09200341b0166a201f42137e221e420020032903e0402225420010be09200341a0166a200842002025420010be09200341e0136a201242002020420010be09200341b0146a202742002021420010be0920034180156a202242002023420010be09200341d0156a201e42002024420010be09200341c0156a200842002024420010be0920034190166a201242002025420010be09200341d0136a201742002020420010be09200341a0146a202242002021420010be09200341f0146a201e42002023420010be09200341e0146a200842002023420010be09200341b0156a201242002024420010be0920034180166a201742002025420010be09200341c0136a201d42002020420010be0920034190146a201e42002021420010be0920034180146a200842002021420010be09200341d0146a201242002023420010be09200341a0156a201742002024420010be09200341f0156a201d42002025420010be09200341b0136a201f42002020420010be09200320032903a014222720032903d0137c220820032903f0147c221220032903c0157c22172003290390167c2220200329038015222920032903b0147c222120032903d0157c222320032903a0167c222420032903e0137c222520032903e015222a2003290390157c221d20032903b0167c221e20032903f0137c221f20032903c0147c2222423388200341e0156a41086a29030020034190156a41086a2903007c201d202a54ad7c200341b0166a41086a2903007c201e201d54ad7c200341f0136a41086a2903007c201f201e54ad7c200341c0146a41086a2903007c2022201f54ad7c420d86847c221d42338820034180156a41086a290300200341b0146a41086a2903007c2021202954ad7c200341d0156a41086a2903007c2023202154ad7c200341a0166a41086a2903007c2024202354ad7c200341e0136a41086a2903007c2025202454ad7c201d202554ad7c420d86847c222142ffffffffffffff038337039041200320032903c013221f2003290380167c22232003290390147c222420032903e0147c222520032903b0157c221e2021423388200341a0146a41086a290300200341d0136a41086a2903007c2008202754ad7c200341f0146a41086a2903007c2012200854ad7c200341c0156a41086a2903007c2017201254ad7c20034190166a41086a2903007c2020201754ad7c2021202054ad7c420d86847c220842ffffffffffffff038337039841200320032903f015222720032903a0157c221220032903b0137c22172003290380147c222020032903d0147c22212008423388200341c0136a41086a29030020034180166a41086a2903007c2023201f54ad7c20034190146a41086a2903007c2024202354ad7c200341e0146a41086a2903007c2025202454ad7c200341b0156a41086a2903007c201e202554ad7c2008201e54ad7c420d86847c220842ffffffffffffff03833703a04120032008423388200341f0156a41086a290300200341a0156a41086a2903007c2012202754ad7c200341b0136a41086a2903007c2017201254ad7c20034180146a41086a2903007c2020201754ad7c200341d0146a41086a2903007c2021202054ad7c2008202154ad7c420d868442137e202242ffffffffffffff03837c220842ffffffffffffff03833703804120032008423388201d42ffffffffffffff03837c37038841200341a8c1006a20034180c1006a41321078200341a0106a20032903a84122084200200b420010be09200341f0106a20032903c841221242002028420010be09200341c0116a20032903c04122174200201c420010be0920034190126a20032903b841222042002013420010be09200341e0126a20032903b04122214200201a420010be09200341f0126a20214200200b420010be09200341b0106a200842002018420010be0920034180116a20124200201c420010be09200341d0116a201742002013420010be09200341a0126a20204200201a420010be09200341b0126a20204200200b420010be0920034180136a202142002018420010be09200341c0106a200842002019420010be0920034190116a201242002013420010be09200341e0116a20174200201a420010be09200341f0116a20174200200b420010be09200341c0126a202042002018420010be0920034190136a202142002019420010be09200341d0106a20084200201b420010be09200341a0116a20124200201a420010be09200341b0116a20124200200b420010be0920034180126a201742002018420010be09200341d0126a202042002019420010be09200341a0136a20214200201b420010be09200341e0106a200842002026420010be092003200329039011222420032903c0107c220b20032903e0117c221820032903b0127c22192003290380137c221a200329038011222520032903b0107c221b20032903d0117c221320032903a0127c220820032903f0127c221220032903f010222620032903a0107c221720032903c0117c22202003290390127c222120032903e0127c2223423388200341f0106a41086a290300200341a0106a41086a2903007c2017202654ad7c200341c0116a41086a2903007c2020201754ad7c20034190126a41086a2903007c2021202054ad7c200341e0126a41086a2903007c2023202154ad7c420d86847c221742338820034180116a41086a290300200341b0106a41086a2903007c201b202554ad7c200341d0116a41086a2903007c2013201b54ad7c200341a0126a41086a2903007c2008201354ad7c200341f0126a41086a2903007c2012200854ad7c2017201254ad7c420d86847c221b42ffffffffffffff038337039041200320032903a011222120032903d0107c221320032903f0117c220820032903c0127c22122003290390137c2220201b42338820034190116a41086a290300200341c0106a41086a2903007c200b202454ad7c200341e0116a41086a2903007c2018200b54ad7c200341b0126a41086a2903007c2019201854ad7c20034180136a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c220b42ffffffffffffff038337039841200320032903b011222420032903e0107c22182003290380127c221920032903d0127c221a20032903a0137c221b200b423388200341a0116a41086a290300200341d0106a41086a2903007c2013202154ad7c200341f0116a41086a2903007c2008201354ad7c200341c0126a41086a2903007c2012200854ad7c20034190136a41086a2903007c2020201254ad7c200b202054ad7c420d86847c220b42ffffffffffffff03833703a0412003200b423388200341b0116a41086a290300200341e0106a41086a2903007c2018202454ad7c20034180126a41086a2903007c2019201854ad7c200341d0126a41086a2903007c201a201954ad7c200341a0136a41086a2903007c201b201a54ad7c200b201b54ad7c420d868442137e202342ffffffffffffff03837c220b42ffffffffffffff0383370380412003200b423388201742ffffffffffffff03837c37038841200341a8c1006a20034180c1006a41021078200341900d6a2015420020032903a841220b420010be0920034190106a2014420020032903b041221842137e420010be09200341c00f6a200f420020032903b841221942137e2208420010be09200341f00e6a200c420020032903c041221b42137e2213420010be09200341a00e6a2016420020032903c841221242137e221a420010be09200341a00d6a20164200200b420010be0920034180106a201542002018420010be09200341b00f6a201442002008420010be09200341e00e6a200f42002013420010be09200341900e6a200c4200201a420010be09200341b00d6a200c4200200b420010be09200341f00f6a201642002018420010be09200341a00f6a201542002019420010be09200341d00e6a201442002013420010be09200341800e6a200f4200201a420010be09200341c00d6a200f4200200b420010be09200341e00f6a200c42002018420010be09200341900f6a201642002019420010be09200341c00e6a20154200201b420010be09200341f00d6a20144200201a420010be09200341d00d6a20144200200b420010be09200341d00f6a200f42002018420010be09200341800f6a200c42002019420010be09200341b00e6a20164200201b420010be09200341e00d6a201542002012420010be09200341f0096a20032903d00f221c20032903800f7c220c20032903d00d7c220f20032903e00d7c221420032903b00e7c221520032903c00d221d20032903e00f7c221620032903f00d7c220b20032903c00e7c221820032903900f7c221920032903800e221e20032903b00d7c221a20032903d00e7c221b20032903a00f7c221320032903f00f7c220820032903e00e221f20032903900e7c221220032903b00f7c22172003290380107c222020032903a00d7c222120032903c00f222220032903f00e7c22232003290390107c222420032903900d7c222520032903a00e7c2226423388200341c00f6a41086a290300200341f00e6a41086a2903007c2023202254ad7c20034190106a41086a2903007c2024202354ad7c200341900d6a41086a2903007c2025202454ad7c200341a00e6a41086a2903007c2026202554ad7c420d86847c2223423388200341e00e6a41086a290300200341900e6a41086a2903007c2012201f54ad7c200341b00f6a41086a2903007c2017201254ad7c20034180106a41086a2903007c2020201754ad7c200341a00d6a41086a2903007c2021202054ad7c2023202154ad7c420d86847c2212423388200341800e6a41086a290300200341b00d6a41086a2903007c201a201e54ad7c200341d00e6a41086a2903007c201b201a54ad7c200341a00f6a41086a2903007c2013201b54ad7c200341f00f6a41086a2903007c2008201354ad7c2012200854ad7c420d86847c221a423388200341c00d6a41086a290300200341e00f6a41086a2903007c2016201d54ad7c200341f00d6a41086a2903007c200b201654ad7c200341c00e6a41086a2903007c2018200b54ad7c200341900f6a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2218423388200341d00f6a41086a290300200341800f6a41086a2903007c200c201c54ad7c200341d00d6a41086a2903007c200f200c54ad7c200341e00d6a41086a2903007c2014200f54ad7c200341b00e6a41086a2903007c2015201454ad7c2018201554ad7c420d868442137e202642ffffffffffffff03837c222742ffffffffffffff0383220c420020032903e032222820032903d0347c220f20032903a00b7c22142003290390327c221520032903a0337c221620032903e033222920032903e0347c220b20032903800c7c221920032903a0327c221b20032903f0327c221320032903f033222a20032903f0347c220820032903b0337c221720032903e00c7c222020032903b0327c222120032903c033222b2003290380347c22242003290380337c222520032903f00c7c22262003290380357c221c200329039033222c20032903d0337c221d20032903800d7c221e20032903c0327c221f2003290390347c222242338820034190336a41086a290300200341d0336a41086a2903007c201d202c54ad7c200341800d6a41086a2903007c201e201d54ad7c200341c0326a41086a2903007c201f201e54ad7c20034190346a41086a2903007c2022201f54ad7c420d86847c221d423388200341c0336a41086a29030020034180346a41086a2903007c2024202b54ad7c20034180336a41086a2903007c2025202454ad7c200341f00c6a41086a2903007c2026202554ad7c20034180356a41086a2903007c201c202654ad7c201d201c54ad7c420d86847c2224423388200341f0336a41086a290300200341f0346a41086a2903007c2008202a54ad7c200341b0336a41086a2903007c2017200854ad7c200341e00c6a41086a2903007c2020201754ad7c200341b0326a41086a2903007c2021202054ad7c2024202154ad7c420d86847c2208423388200341e0336a41086a290300200341e0346a41086a2903007c200b202954ad7c200341800c6a41086a2903007c2019200b54ad7c200341a0326a41086a2903007c201b201954ad7c200341f0326a41086a2903007c2013201b54ad7c2008201354ad7c420d86847c220b423388200341e0326a41086a290300200341d0346a41086a2903007c200f202854ad7c200341a00b6a41086a2903007c2014200f54ad7c20034190326a41086a2903007c2015201454ad7c200341a0336a41086a2903007c2016201554ad7c200b201654ad7c420d868442137e202242ffffffffffffff03837c221742ffffffffffffff0383220f420010be09200341900b6a200b42ffffffffffffff0383221442002027423388202342ffffffffffffff03837c221542137e420010be09200341f00b6a200842ffffffffffffff038322164200201242ffffffffffffff0383221942137e2208420010be09200341d00c6a202442ffffffffffffff0383220b4200201a42ffffffffffffff0383221b42137e2213420010be09200341c00a6a201842ffffffffffffff0383221242137e221a42002017423388201d42ffffffffffffff03837c2218420010be09200341b00a6a200c42002018420010be09200341e0096a20154200200f420010be09200341800b6a201442002008420010be09200341e00b6a201642002013420010be09200341c00c6a200b4200201a420010be09200341b00c6a200b4200200c420010be09200341a00a6a201542002018420010be09200341d0096a20194200200f420010be09200341f00a6a201442002013420010be09200341d00b6a20164200201a420010be09200341c00b6a20164200200c420010be09200341a00c6a200b42002015420010be09200341900a6a201942002018420010be09200341c0096a201b4200200f420010be09200341e00a6a20144200201a420010be09200341d00a6a20144200200c420010be09200341b00b6a201642002015420010be09200341900c6a200b42002019420010be09200341800a6a201b42002018420010be09200341b0096a20124200200f420010be09200320032903f00a221220032903d0097c220c20032903d00b7c220f20032903b00c7c221420032903a00a7c221520032903e00b221720032903800b7c221620032903c00c7c220b20032903b00a7c221820032903e0097c221920032903d00c222020032903f00b7c221a20032903c00a7c221b20032903f0097c221320032903900b7c2208423388200341d00c6a41086a290300200341f00b6a41086a2903007c201a202054ad7c200341c00a6a41086a2903007c201b201a54ad7c200341f0096a41086a2903007c2013201b54ad7c200341900b6a41086a2903007c2008201354ad7c221b420d86847c221a423388200341e00b6a41086a290300200341800b6a41086a2903007c2016201754ad7c200341c00c6a41086a2903007c200b201654ad7c200341b00a6a41086a2903007c2018200b54ad7c200341e0096a41086a2903007c2019201854ad7c201b4233887c201a201954ad7c2213420d86847c221642ffffffffffffff03833703e840200320032903c009221720032903900a7c220b20032903e00a7c221820032903c00b7c221920032903a00c7c221b2016423388200341f00a6a41086a290300200341d0096a41086a2903007c200c201254ad7c200341d00b6a41086a2903007c200f200c54ad7c200341b00c6a41086a2903007c2014200f54ad7c200341a00a6a41086a2903007c2015201454ad7c20134233887c2016201554ad7c2213420d86847c220c42ffffffffffffff03833703f040200320032903800a221220032903900c7c220f20032903b0097c221420032903d00a7c221520032903b00b7c2216200c423388200341c0096a41086a290300200341900a6a41086a2903007c200b201754ad7c200341e00a6a41086a2903007c2018200b54ad7c200341c00b6a41086a2903007c2019201854ad7c200341a00c6a41086a2903007c201b201954ad7c20134233887c200c201b54ad7c220b420d86847c220c42ffffffffffffff03833703f8402003200c423388200341800a6a41086a290300200341900c6a41086a2903007c200f201254ad7c200341b0096a41086a2903007c2014200f54ad7c200341d00a6a41086a2903007c2015201454ad7c200341b00b6a41086a2903007c2016201554ad7c200b4233887c200c201654ad7c420d868442137e200842ffffffffffffff03837c220c42ffffffffffffff03833703d8402003200c423388201a42ffffffffffffff03837c3703e040200341a8c1006a200341d8c0006a41011078200341a0066a20032903a841220c42002004420010be09200341a0096a20032903b041220f42137e42002010420010be09200341d0086a20032903b841221442137e22184200200d420010be0920034180086a20032903c041221642137e220b4200200a420010be09200341b0076a20032903c841221942137e221542002007420010be09200341b0066a200c42002007420010be0920034190096a200f42002004420010be09200341c0086a201842002010420010be09200341f0076a200b4200200d420010be09200341a0076a20154200200a420010be09200341c0066a200c4200200a420010be0920034180096a200f42002007420010be09200341b0086a201442002004420010be09200341e0076a200b42002010420010be0920034190076a20154200200d420010be09200341d0066a200c4200200d420010be09200341f0086a200f4200200a420010be09200341a0086a201442002007420010be09200341d0076a201642002004420010be0920034180076a201542002010420010be09200341e0066a200c42002010420010be09200341e0086a200f4200200d420010be0920034190086a20144200200a420010be09200341c0076a201642002007420010be09200341f0066a201942002004420010be09200320032903b00822102003290380097c220420032903e0077c22072003290390077c220a20032903c0067c220c20032903c008221a2003290390097c220f20032903f0077c221420032903a0077c221520032903b0067c221620032903d008221b20032903a0097c220b2003290380087c220d20032903a0067c221820032903b0077c2219423388200341d0086a41086a290300200341a0096a41086a2903007c200b201b54ad7c20034180086a41086a2903007c200d200b54ad7c200341a0066a41086a2903007c2018200d54ad7c200341b0076a41086a2903007c2019201854ad7c420d86847c220b423388200341c0086a41086a29030020034190096a41086a2903007c200f201a54ad7c200341f0076a41086a2903007c2014200f54ad7c200341a0076a41086a2903007c2015201454ad7c200341b0066a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220f42ffffffffffffff038337039041200320032903a008221820032903f0087c221420032903d0077c22152003290380077c221620032903d0067c220d200f423388200341b0086a41086a29030020034180096a41086a2903007c2004201054ad7c200341e0076a41086a2903007c2007200454ad7c20034190076a41086a2903007c200a200754ad7c200341c0066a41086a2903007c200c200a54ad7c200f200c54ad7c420d86847c220442ffffffffffffff0383370398412003200329039008221020032903e0087c220720032903c0077c220a20032903f0067c220c20032903e0067c220f2004423388200341a0086a41086a290300200341f0086a41086a2903007c2014201854ad7c200341d0076a41086a2903007c2015201454ad7c20034180076a41086a2903007c2016201554ad7c200341d0066a41086a2903007c200d201654ad7c2004200d54ad7c420d86847c220442ffffffffffffff03833703a0412003200442338820034190086a41086a290300200341e0086a41086a2903007c2007201054ad7c200341c0076a41086a2903007c200a200754ad7c200341f0066a41086a2903007c200c200a54ad7c200341e0066a41086a2903007c200f200c54ad7c2004200f54ad7c420d868442137e201942ffffffffffffff03837c220442ffffffffffffff03833703804120032004423388200b42ffffffffffffff03837c37038841200341b0c0006a20034180c1006a107520034188c0006a20011075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b202d1077212f200341a8c1006a41086a42f0ffffffffffff3f200141086a2903007d220442ffffffffffffff038342d0fdffffffffff3f20012903007d22074233887c370300200341a8c1006a41106a42f0ffffffffffff3f200141106a2903007d220a42ffffffffffffff038320044233887c370300200341a8c1006a41186a42f0ffffffffffff3f200141186a2903007d220442ffffffffffffff0383200a4233887c370300200341a8c1006a41206a42f0ffffffffffff3f200141206a2903007d220a42ffffffffffffff038320044233887c3703002003200a42338842137e200742ffffffffffffff03837c3703a841200341b0c0006a20034180c1006a107520034188c0006a200341a8c1006a1075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b200341a0046a42f0ffffffffffff3f200e7d220742338842137e42d0fdffffffffff3f20117d220e42ffffffffffffff03837c2204420042b0c1bad0f4e48603420010be09200341d0036a42f0ffffffffffff3f20057d220a423388200742ffffffffffffff03837c2207420042a7a7fbf49beaf607420010be09200341f0046a42f0ffffffffffff3f20067d2211423388200a42ffffffffffffff03837c220a420042a0d69f90da80b1cb00420010be09200341c0056a42f0ffffffffffff3f20097d2205423388201142ffffffffffffff03837c2211420042badf96dcb5c3bac700420010be0920034190066a200542ffffffffffffff0383200e4233887c220e420042a7ecfac2b5f7ea19420010be0920034180066a200e420042b0c1bad0f4e48603420010be0920034190046a20044200429db1bce4dfb435420010be09200341c0036a2007420042a0d69f90da80b1cb00420010be09200341e0046a200a420042badf96dcb5c3bac700420010be09200341b0056a2011420042a7ecfac2b5f7ea19420010be09200341a0056a2011420042b0c1bad0f4e48603420010be09200341f0056a200e4200429db1bce4dfb435420010be0920034180046a2004420042e098f4e5e9ebfb03420010be09200341b0036a2007420042badf96dcb5c3bac700420010be09200341d0046a200a420042a7ecfac2b5f7ea19420010be09200341c0046a200a420042b0c1bad0f4e48603420010be0920034190056a20114200429db1bce4dfb435420010be09200341e0056a200e420042e098f4e5e9ebfb03420010be09200341f0036a20044200429e9981b4dab2e103420010be09200341a0036a2007420042a7ecfac2b5f7ea19420010be0920034190036a2007420042b0c1bad0f4e48603420010be09200341b0046a200a4200429db1bce4dfb435420010be0920034180056a2011420042e098f4e5e9ebfb03420010be09200341d0056a200e4200429e9981b4dab2e103420010be09200341e0036a20044200429df893c0a486ae01420010be09200341c0036a41086a290300211820034190046a41086a290300211920032903c00321042003290390042109200341e0046a41086a290300211020032903e004210c200341b0056a41086a290300211a20032903b005210f20034180066a41086a290300211b2003290380062114200341d0036a41086a2903002113200341a0046a41086a290300210820032903d003210720032903a0042115200341f0046a41086a290300211220032903f0042116200341c0056a41086a290300211720032903c005210b20034190066a41086a2903002120200329039006210d20032903b003210a200329038004211120032903d004210e20032903a005210520032903f0052106202d10772101200320062005200e200a20117c22117c220e7c22057c22062014200f200c200420097c22097c220c7c220f7c2214200d200b2016200720157c22157c22167c220b7c220d423388202020172012201320087c2015200754ad7c7c2016201554ad7c7c200b201654ad7c7c200d200b54ad7c2215420d86847c2207423388201b201a2010201820197c2009200454ad7c7c200c200954ad7c7c200f200c54ad7c7c2014200f54ad7c20154233887c2007201454ad7c2215420d86847c220442ffffffffffffff03833703b841200320032903a003221620032903f0037c220920032903c0047c220c2003290390057c220f20032903e0057c22142004423388200341b0036a41086a29030020034180046a41086a2903007c2011200a54ad7c200341d0046a41086a2903007c200e201154ad7c200341a0056a41086a2903007c2005200e54ad7c200341f0056a41086a2903007c2006200554ad7c20154233887c2004200654ad7c2206420d86847c220442ffffffffffffff03833703c0412003200329039003221520032903e0037c220a20032903b0047c22112003290380057c220e20032903d0057c22052004423388200341a0036a41086a290300200341f0036a41086a2903007c2009201654ad7c200341c0046a41086a2903007c200c200954ad7c20034190056a41086a2903007c200f200c54ad7c200341e0056a41086a2903007c2014200f54ad7c20064233887c2004201454ad7c2206420d86847c220442ffffffffffffff03833703c8412003200442338820034190036a41086a290300200341e0036a41086a2903007c200a201554ad7c200341b0046a41086a2903007c2011200a54ad7c20034180056a41086a2903007c200e201154ad7c200341d0056a41086a2903007c2005200e54ad7c20064233887c2004200554ad7c420d868442137e200d42ffffffffffffff03837c220442ffffffffffffff03833703a84120032004423388200742ffffffffffffff03837c3703b041200341b0c0006a20034180c1006a107520034188c0006a200341a8c1006a1075410021024101212d034020034188c0006a20026a2d0000200341b0c0006a20026a2d000073222e4100202e6b72417f73418001714107761077202d71212d200241016a22024120470d000b202d1077210220034180036a20032903d8402204420042b0c1bad0f4e48603420010be09200320032903e040220742137e4200429df893c0a486ae01420010be09200341e0006a20032903e840220a42137e22064200429e9981b4dab2e103420010be09200341c0016a20032903f040220e42137e2205420042e098f4e5e9ebfb03420010be09200341a0026a20032903f840220942137e22114200429db1bce4dfb435420010be09200341f0026a20044200429db1bce4dfb435420010be09200341c0006a2007420042b0c1bad0f4e48603420010be09200341d0006a20064200429df893c0a486ae01420010be09200341b0016a20054200429e9981b4dab2e103420010be0920034190026a2011420042e098f4e5e9ebfb03420010be09200341e0026a2004420042e098f4e5e9ebfb03420010be09200341306a20074200429db1bce4dfb435420010be0920034190016a200a420042b0c1bad0f4e48603420010be09200341a0016a20054200429df893c0a486ae01420010be0920034180026a20114200429e9981b4dab2e103420010be09200341d0026a20044200429e9981b4dab2e103420010be09200341206a2007420042e098f4e5e9ebfb03420010be0920034180016a200a4200429db1bce4dfb435420010be09200341e0016a200e420042b0c1bad0f4e48603420010be09200341f0016a20114200429df893c0a486ae01420010be09200341c0026a20044200429df893c0a486ae01420010be09200341106a20074200429e9981b4dab2e103420010be09200341f0006a200a420042e098f4e5e9ebfb03420010be09200341d0016a200e4200429db1bce4dfb435420010be09200341b0026a2009420042b0c1bad0f4e48603420010be092003200420042003290370220820032903107c220720032903d0017c220a20032903b0027c221120032903c0027c220e200329038001221220032903207c220520032903e0017c220620032903f0017c220920032903d0027c220c200329039001221720032903307c220f20032903a0017c22142003290380027c221520032903e0027c22162003290350222020032903407c220b20032903b0017c220d2003290390027c221820032903f0027c22192003290360222120032903007c221020032903c0017c221a2003290380037c221b20032903a0027c2213423388200341e0006a41086a290300200341086a2903007c2010202154ad7c200341c0016a41086a2903007c201a201054ad7c20034180036a41086a2903007c201b201a54ad7c200341a0026a41086a2903007c2013201b54ad7c420d86847c2210423388200341d0006a41086a290300200341c0006a41086a2903007c200b202054ad7c200341b0016a41086a2903007c200d200b54ad7c20034190026a41086a2903007c2018200d54ad7c200341f0026a41086a2903007c2019201854ad7c2010201954ad7c420d86847c220b42338820034190016a41086a290300200341306a41086a2903007c200f201754ad7c200341a0016a41086a2903007c2014200f54ad7c20034180026a41086a2903007c2015201454ad7c200341e0026a41086a2903007c2016201554ad7c200b201654ad7c420d86847c220f42338820034180016a41086a290300200341206a41086a2903007c2005201254ad7c200341e0016a41086a2903007c2006200554ad7c200341f0016a41086a2903007c2009200654ad7c200341d0026a41086a2903007c200c200954ad7c200f200c54ad7c420d86847c2205423388200341f0006a41086a290300200341106a41086a2903007c2007200854ad7c200341d0016a41086a2903007c200a200754ad7c200341b0026a41086a2903007c2011200a54ad7c200341c0026a41086a2903007c200e201154ad7c2005200e54ad7c420d868442137e201342ffffffffffffff03837c221142ffffffffffffff038385420020022001721077ad42ff01837d22078385220a3703d84020032011423388201042ffffffffffffff03837c20032903e04022048520078320048522113703e0402003200542ffffffffffffff038320032903f840220485200783200485220e3703f8402003200f42ffffffffffffff038320032903f04022048520078320048522053703f0402003200b42ffffffffffffff038320032903e84022048520078320048522073703e84020034188c0006a200341d8c0006a1075200342f0ffffffffffff3f200e7d220642ffffffffffffff038342f0ffffffffffff3f20057d22094233887c200e85420020032d0088404101711077ad42ff01837d220483200e853703f8402003200942ffffffffffffff038342f0ffffffffffff3f20077d220e4233887c2005852004832005853703f0402003200e42ffffffffffffff038342f0ffffffffffff3f20117d220e4233887c2007852004832007853703e8402003200e42ffffffffffffff038342d0fdffffffffff3f200a7d22074233887c2011852004832011853703e0402003200642338842137e200742ffffffffffffff03837c200a85200483200a853703d84020002001202f7210773a0000200020032903d840370308200041106a20032903e040370300200041186a20032903e840370300200041206a20032903f040370300200041286a20032903f840370300200341d0c1006a24000bd003011a7e200131001221022001310011210320013100102104200131000f2105200131000d2106200131000e2107200131001f2108200131001e2109200131001d210a200131001c210b200131001b210c200131001a210d200131000c210e200131000b210f200131000a21102001310009211120013100072112200131000821132001310019211420013100182115200131001721162001310016211720013100132118200131001421192001310015211a200020013500002001310004422086842001310005422886842001310006221b4230868442ffffffffffffff038337030020002018201942088684201a4210868420174218868420164220868420154228868420144230868442018842ffffffffffffff03833703182000201b201242088684201342108684201142188684201042208684200f42288684200e4230868442038842ffffffffffffff038337030820002015201442088684200d42108684200c42188684200b42208684200a42288684200942308684200842388684420c8842ffffffffffffff03833703202000200e20064208868420074210868420054218868420044220868420034228868420024230868420184238868442068842ffffffffffffff03833703100ba5990104017f237e057f0d7e230041f02b6b22022400200242003703e028200242013703d828200242003703e828200242003703f028200242003703f828200241c82a6a200141011078200241c8256a20022903c82a2203420042b0c1bad0f4e48603420010be09200241c8286a20022903d02a220442137e4200429df893c0a486ae01420010be09200241f8276a20022903d82a220542137e22064200429e9981b4dab2e103420010be09200241a8276a20022903e02a220742137e2208420042e098f4e5e9ebfb03420010be09200241d8266a20022903e82a220942137e220a4200429db1bce4dfb435420010be09200241d8256a20034200429db1bce4dfb435420010be09200241b8286a2004420042b0c1bad0f4e48603420010be09200241e8276a20064200429df893c0a486ae01420010be0920024198276a20084200429e9981b4dab2e103420010be09200241c8266a200a420042e098f4e5e9ebfb03420010be09200241e8256a2003420042e098f4e5e9ebfb03420010be09200241a8286a20044200429db1bce4dfb435420010be09200241d8276a2005420042b0c1bad0f4e48603420010be0920024188276a20084200429df893c0a486ae01420010be09200241b8266a200a4200429e9981b4dab2e103420010be09200241f8256a20034200429e9981b4dab2e103420010be0920024198286a2004420042e098f4e5e9ebfb03420010be09200241c8276a20054200429db1bce4dfb435420010be09200241f8266a2007420042b0c1bad0f4e48603420010be09200241a8266a200a4200429df893c0a486ae01420010be0920024188266a20034200429df893c0a486ae01420010be0920024188286a20044200429e9981b4dab2e103420010be09200241b8276a2005420042e098f4e5e9ebfb03420010be09200241e8266a20074200429db1bce4dfb435420010be0920024198266a2009420042b0c1bad0f4e48603420010be09200241b81d6a200229038826220b2002290398267c22032002290388287c220420022903b8277c220520022903e8267c220a20022903a826220c20022903f8267c220720022903f8257c22082002290398287c220620022903c8277c2209200229038827220d20022903d8277c220e20022903b8267c220f20022903e8257c221020022903a8287c221120022903e827221220022903b8287c22132002290398277c221420022903c8267c221520022903d8257c221620022903c828221720022903c8257c221820022903f8277c221920022903a8277c221a20022903d8267c221b423388200241c8286a41086a290300200241c8256a41086a2903007c2018201754ad7c200241f8276a41086a2903007c2019201854ad7c200241a8276a41086a2903007c201a201954ad7c200241d8266a41086a2903007c201b201a54ad7c420d86847c2218423388200241e8276a41086a290300200241b8286a41086a2903007c2013201254ad7c20024198276a41086a2903007c2014201354ad7c200241c8266a41086a2903007c2015201454ad7c200241d8256a41086a2903007c2016201554ad7c2018201654ad7c420d86847c221342338820024188276a41086a290300200241d8276a41086a2903007c200e200d54ad7c200241b8266a41086a2903007c200f200e54ad7c200241e8256a41086a2903007c2010200f54ad7c200241a8286a41086a2903007c2011201054ad7c2013201154ad7c420d86847c220e423388200241a8266a41086a290300200241f8266a41086a2903007c2007200c54ad7c200241f8256a41086a2903007c2008200754ad7c20024198286a41086a2903007c2006200854ad7c200241c8276a41086a2903007c2009200654ad7c200e200954ad7c420d86847c220742338820024188266a41086a29030020024198266a41086a2903007c2003200b54ad7c20024188286a41086a2903007c2004200354ad7c200241b8276a41086a2903007c2005200454ad7c200241e8266a41086a2903007c200a200554ad7c2007200a54ad7c420d868442137e201b42ffffffffffffff03837c220442ffffffffffffff0383220320022903d8287c2208420042f682ffa299b88202420010be09200241d81c6a200742ffffffffffffff0383220720022903f8287c2206420042ddf396f0fbf7b9c300420010be09200241e81c6a200e42ffffffffffffff0383220a20022903f0287c2209420042ccf7d9e9fbcee010420010be0920024188236a201342ffffffffffffff0383220520022903e8287c220e4200428df582a3b0868004420010be09200241e8216a2004423388201842ffffffffffffff03837c220420022903e0287c220f4200429aebd0c282f1c201420010be09200241f8216a200f420042f682ffa299b88202420010be09200241c81d6a2008420042cff887b5bcb5c603420010be09200241c81c6a2006420042ccf7d9e9fbcee010420010be09200241f81c6a20094200428df582a3b0868004420010be0920024198236a200e4200429aebd0c282f1c201420010be09200241a8236a200e420042f682ffa299b88202420010be0920024188226a200f420042cff887b5bcb5c603420010be09200241d81d6a2008420042848dc885f9eff000420010be09200241b81c6a20064200428df582a3b0868004420010be09200241881d6a20094200429aebd0c282f1c201420010be09200241981d6a2009420042f682ffa299b88202420010be09200241b8236a200e420042cff887b5bcb5c603420010be0920024198226a200f420042848dc885f9eff000420010be09200241e81d6a2008420042dfddd7d2ccf91a420010be09200241a81c6a20064200429aebd0c282f1c201420010be09200241981c6a2006420042f682ffa299b88202420010be09200241a81d6a2009420042cff887b5bcb5c603420010be09200241c8236a200e420042848dc885f9eff000420010be09200241a8226a200f420042dfddd7d2ccf91a420010be09200241f81d6a2008420042bed6acd4f2a00a420010be09200220022903b81c221920022903d81d7c220820022903881d7c220620022903a8237c22092002290388227c220e20022903c81c221a20022903c81d7c220f20022903f81c7c22102002290398237c221120022903f8217c221320022903d81c221b20022903b81d7c221420022903e81c7c22152002290388237c221620022903e8217c2218423388200241d81c6a41086a290300200241b81d6a41086a2903007c2014201b54ad7c200241e81c6a41086a2903007c2015201454ad7c20024188236a41086a2903007c2016201554ad7c200241e8216a41086a2903007c2018201654ad7c420d86847c2214423388200241c81c6a41086a290300200241c81d6a41086a2903007c200f201a54ad7c200241f81c6a41086a2903007c2010200f54ad7c20024198236a41086a2903007c2011201054ad7c200241f8216a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f42ffffffffffffff038337039029200220022903a81c221620022903e81d7c221020022903981d7c221120022903b8237c22132002290398227c2215200f423388200241b81c6a41086a290300200241d81d6a41086a2903007c2008201954ad7c200241881d6a41086a2903007c2006200854ad7c200241a8236a41086a2903007c2009200654ad7c20024188226a41086a2903007c200e200954ad7c200f200e54ad7c420d86847c220842ffffffffffffff038337039829200220022903981c221920022903f81d7c220620022903a81d7c220920022903c8237c220e20022903a8227c220f2008423388200241a81c6a41086a290300200241e81d6a41086a2903007c2010201654ad7c200241981d6a41086a2903007c2011201054ad7c200241b8236a41086a2903007c2013201154ad7c20024198226a41086a2903007c2015201354ad7c2008201554ad7c420d86847c220842ffffffffffffff03833703a02920022008423388200241981c6a41086a290300200241f81d6a41086a2903007c2006201954ad7c200241a81d6a41086a2903007c2009200654ad7c200241c8236a41086a2903007c200e200954ad7c200241a8226a41086a2903007c200f200e54ad7c2008200f54ad7c420d868442137e201842ffffffffffffff03837c220842ffffffffffffff03833703802920022008423388201442ffffffffffffff03837c37038829200241d8216a2003420042a3f1e59aa1b9d301420010be09200241f8226a200442137e221c420042ffed8af7ec86c802420010be09200241e8236a200542137e2210420042bbf9809de6b8ce03420010be0920024198246a200a42137e2211420042a9808780a6f4f902420010be09200241d8246a200742137e2208420042bdddd5d88385ea00420010be09200241c8216a2003420042bdddd5d88385ea00420010be09200241e8226a2004420042a3f1e59aa1b9d301420010be09200241d8236a2010420042ffed8af7ec86c802420010be0920024188246a2011420042bbf9809de6b8ce03420010be09200241c8246a2008420042a9808780a6f4f902420010be09200241b8216a2003420042a9808780a6f4f902420010be09200241d8226a2004420042bdddd5d88385ea00420010be09200241e8246a2005420042a3f1e59aa1b9d301420010be09200241f8236a2011420042ffed8af7ec86c802420010be09200241b8246a2008420042bbf9809de6b8ce03420010be09200241a8216a2003420042bbf9809de6b8ce03420010be09200241c8226a2004420042a9808780a6f4f902420010be09200241f8246a2005420042bdddd5d88385ea00420010be0920024198256a200a420042a3f1e59aa1b9d301420010be09200241a8246a2008420042ffed8af7ec86c802420010be09200241d8206a2003420042ffed8af7ec86c802420010be09200241b8226a2004420042bbf9809de6b8ce03420010be0920024188256a2005420042a9808780a6f4f902420010be09200241a8256a200a420042bdddd5d88385ea00420010be09200241b8256a2007420042a3f1e59aa1b9d301420010be09200241881e6a200342a3f1e59aa1b9d3017c2206420042efffffffffffffc30020022903d820221d20022903b8257c220920022903b8227c220e2002290388257c220f20022903a8257c221320022903a824221e2002290398257c221420022903a8217c221520022903c8227c221620022903f8247c221820022903f823221f20022903e8247c221920022903b8247c221a20022903b8217c221b20022903d8227c220b20022903d823222020022903e8227c220c2002290388247c220d20022903c8247c221220022903c8217c221720022903f822222120022903d8217c222220022903e8237c22232002290398247c222420022903d8247c2225423388200241f8226a41086a290300200241d8216a41086a2903007c2022202154ad7c200241e8236a41086a2903007c2023202254ad7c20024198246a41086a2903007c2024202354ad7c200241d8246a41086a2903007c2025202454ad7c420d86847c2222423388200241d8236a41086a290300200241e8226a41086a2903007c200c202054ad7c20024188246a41086a2903007c200d200c54ad7c200241c8246a41086a2903007c2012200d54ad7c200241c8216a41086a2903007c2017201254ad7c2022201754ad7c420d86847c220c423388200241f8236a41086a290300200241e8246a41086a2903007c2019201f54ad7c200241b8246a41086a2903007c201a201954ad7c200241b8216a41086a2903007c201b201a54ad7c200241d8226a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241a8246a41086a29030020024198256a41086a2903007c2014201e54ad7c200241a8216a41086a2903007c2015201454ad7c200241c8226a41086a2903007c2016201554ad7c200241f8246a41086a2903007c2018201654ad7c2019201854ad7c420d86847c221442ffffffffffffff03837d221542338842137e42bcfdffffffffffc3002014423388200241d8206a41086a290300200241b8256a41086a2903007c2009201d54ad7c200241b8226a41086a2903007c200e200954ad7c20024188256a41086a2903007c200f200e54ad7c200241a8256a41086a2903007c2013200f54ad7c2014201354ad7c420d868442137e202542ffffffffffffff03837c221342ffffffffffffff03837d221642ffffffffffffff03837c2209420010be09200241881f6a201542ffffffffffffff038342efffffffffffffc300201942ffffffffffffff03837d220f4233887c220e4200201c4287f0dc94c6dfde0f7c420010be0920024198216a200f42ffffffffffffff038342efffffffffffffc300200c42ffffffffffffff03837d22144233887c220f42002010428b868581d2a18c387c2215420010be09200241c8206a201442ffffffffffffff038342efffffffffffffc3002013423388202242ffffffffffffff03837c7d22134233887c22104200201142e18392a796b7d2c4007c2214420010be0920024188206a201342ffffffffffffff038320164233887c22114200200842eda9ced69582d9307c2208420010be09200241981e6a201142002006420010be09200241c81f6a20094200200442bdddd5d88385ea007c2213420010be09200241f81e6a200e42002015420010be0920024188216a200f42002014420010be09200241b8206a201042002008420010be09200241a81e6a201042002006420010be09200241f81f6a201142002013420010be09200241b81f6a20094200200542a9808780a6f4f9027c2215420010be09200241e81e6a200e42002014420010be09200241f8206a200f42002008420010be09200241b81e6a200f42002006420010be09200241a8206a201042002013420010be09200241e81f6a201142002015420010be09200241a81f6a20094200200a42bbf9809de6b8ce037c2214420010be09200241d81e6a200e42002008420010be09200241c81e6a200e42002006420010be09200241e8206a200f42002013420010be0920024198206a201042002015420010be09200241d81f6a201142002014420010be09200241981f6a20094200200742ffed8af7ec86c8027c420010be09200220022903e81e221920022903b81f7c220820022903f8207c220620022903a81e7c220920022903f81f7c220e20022903f81e221a20022903c81f7c220f2002290388217c221020022903b8207c221120022903981e7c221320022903881f221b20022903881e7c22142002290398217c221520022903c8207c22162002290388207c2218423388200241881f6a41086a290300200241881e6a41086a2903007c2014201b54ad7c20024198216a41086a2903007c2015201454ad7c200241c8206a41086a2903007c2016201554ad7c20024188206a41086a2903007c2018201654ad7c420d86847c2214423388200241f81e6a41086a290300200241c81f6a41086a2903007c200f201a54ad7c20024188216a41086a2903007c2010200f54ad7c200241b8206a41086a2903007c2011201054ad7c200241981e6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f42ffffffffffffff03833703e029200220022903d81e221620022903a81f7c221020022903b81e7c221120022903a8207c221320022903e81f7c2215200f423388200241e81e6a41086a290300200241b81f6a41086a2903007c2008201954ad7c200241f8206a41086a2903007c2006200854ad7c200241a81e6a41086a2903007c2009200654ad7c200241f81f6a41086a2903007c200e200954ad7c200f200e54ad7c420d86847c220842ffffffffffffff03833703e829200220022903c81e221920022903981f7c220620022903e8207c22092002290398207c220e20022903d81f7c220f2008423388200241d81e6a41086a290300200241a81f6a41086a2903007c2010201654ad7c200241b81e6a41086a2903007c2011201054ad7c200241a8206a41086a2903007c2013201154ad7c200241e81f6a41086a2903007c2015201354ad7c2008201554ad7c420d86847c220842ffffffffffffff03833703f02920022008423388200241c81e6a41086a290300200241981f6a41086a2903007c2006201954ad7c200241e8206a41086a2903007c2009200654ad7c20024198206a41086a2903007c200e200954ad7c200241d81f6a41086a2903007c200f200e54ad7c2008200f54ad7c420d868442137e201842ffffffffffffff03837c220842ffffffffffffff03833703d02920022008423388201442ffffffffffffff03837c3703d829200241c82a6a20024180296a200241d0296a107920022d00c82a2126200241a02a6a41206a2227200241f02a6a2903002208370300200241a02a6a41186a2228200241c82a6a41206a2903002206370300200241a02a6a41106a2229200241c82a6a41186a2903002209370300200241a02a6a41086a222a200241c82a6a41106a290300220e370300200220022903d02a220f3703a02a20024188196a200129030022104200200f420010be09200241881c6a200842002001290308221142137e420010be09200241b81b6a200642002001290310221342137e2218420010be09200241e81a6a200942002001290318221542137e2216420010be09200241981a6a200e42002001290320221942137e2214420010be0920024198196a200e42002010420010be09200241f81b6a200f42002011420010be09200241a81b6a200842002018420010be09200241d81a6a200642002016420010be09200241881a6a200942002014420010be09200241a8196a200942002010420010be09200241e81b6a200e42002011420010be09200241981b6a200f42002013420010be09200241c81a6a200842002016420010be09200241f8196a200642002014420010be09200241b8196a200642002010420010be09200241d81b6a200942002011420010be09200241881b6a200e42002013420010be09200241b81a6a200f42002015420010be09200241e8196a200842002014420010be09200241c8196a200842002010420010be09200241c81b6a200642002011420010be09200241f81a6a200942002013420010be09200241a81a6a200e42002015420010be09200241d8196a200f42002019420010be09200220022903c819222220022903d8197c220820022903c81b7c220620022903f81a7c220920022903a81a7c220e20022903e819222320022903b81a7c220f20022903b8197c221020022903d81b7c221120022903881b7c221320022903c81a222420022903981b7c221420022903f8197c221520022903a8197c221620022903e81b7c221820022903a81b222520022903f81b7c221920022903d81a7c221a20022903881a7c221b2002290398197c220b20022903881c221c2002290388197c220c20022903b81b7c220d20022903e81a7c221220022903981a7c2217423388200241881c6a41086a29030020024188196a41086a2903007c200c201c54ad7c200241b81b6a41086a2903007c200d200c54ad7c200241e81a6a41086a2903007c2012200d54ad7c200241981a6a41086a2903007c2017201254ad7c420d86847c220c423388200241a81b6a41086a290300200241f81b6a41086a2903007c2019202554ad7c200241d81a6a41086a2903007c201a201954ad7c200241881a6a41086a2903007c201b201a54ad7c20024198196a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241c81a6a41086a290300200241981b6a41086a2903007c2014202454ad7c200241f8196a41086a2903007c2015201454ad7c200241a8196a41086a2903007c2016201554ad7c200241e81b6a41086a2903007c2018201654ad7c2019201854ad7c420d86847c2214423388200241e8196a41086a290300200241b81a6a41086a2903007c200f202354ad7c200241b8196a41086a2903007c2010200f54ad7c200241d81b6a41086a2903007c2011201054ad7c200241881b6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220f423388200241c8196a41086a290300200241d8196a41086a2903007c2008202254ad7c200241c81b6a41086a2903007c2006200854ad7c200241f81a6a41086a2903007c2009200654ad7c200241a81a6a41086a2903007c200e200954ad7c200f200e54ad7c420d868442137e201742ffffffffffffff03837c220842ffffffffffffff03833703f82a20022008423388200c42ffffffffffffff03837c22063703802b2002200f42ffffffffffffff038322093703982b2002201442ffffffffffffff0383220e3703902b2002201942ffffffffffffff0383220f3703882b200241c82a6a200241f82a6a107520022d00c82a4101711077417f73410171107721012002200642f0ffffffffffff3f20067d221142ffffffffffffff038342d0fdffffffffff3f20022903f82a22107d22134233887c8542002001ad42ff01837d22088320068522063703802b2002200942f0ffffffffffff3f20097d221442ffffffffffffff038342f0ffffffffffff3f200e7d22154233887c8520088320098522093703982b2002200f42f0ffffffffffff3f200f7d221642ffffffffffffff038320114233887c85200883200f85220f3703882b200220102010201442338842137e201342ffffffffffffff03837c852008838522103703f82a2002200e201542ffffffffffffff038320164233887c85200883200e85220e3703902b2026417f73410171220110772126202a202a290300221120068542002026ad42ff01837d220883201185370300202920292903002206200f85200883200685370300202820282903002206200e85200883200685370300202720272903002206200985200883200685370300200220022903a02a22062010852008832006853703a02a200110772101200241c80f6a200720022903f8287d42f0ffffffffffff3f7c221142338842137e200320022903d8287d42d0fdffffffffff3f7c220942ffffffffffffff03837c22084200200342ecffffffffffff038542002001ad42ff01837d22038342ecffffffffffff03852206420010be09200241880d6a200742ffffffffffffff038520038342ffffffffffffff038522074200200420022903e0287d42f0ffffffffffff3f7c220f42ffffffffffffff038320094233887c220942137e420010be09200241d80d6a200a42ffffffffffffff038520038342ffffffffffffff0385220e4200200520022903e8287d42f0ffffffffffff3f7c221042ffffffffffffff0383200f4233887c220f42137e2213420010be09200241a80e6a200542ffffffffffffff038520038342ffffffffffffff038522054200200a20022903f0287d42f0ffffffffffff3f7c221442ffffffffffffff038320104233887c220a42137e2210420010be09200241f80e6a200442ffffffffffffff038520038342ffffffffffffff038522034200201142ffffffffffffff038320144233887c221142137e2204420010be09200241e80e6a200342002008420010be09200241b80f6a200642002009420010be09200241f80c6a200742002013420010be09200241c80d6a200e42002010420010be09200241980e6a200542002004420010be09200241880e6a200542002008420010be09200241d80e6a200342002009420010be09200241a80f6a20064200200f420010be09200241e80c6a200742002010420010be09200241b80d6a200e42002004420010be09200241a80d6a200e42002008420010be09200241f80d6a200542002009420010be09200241c80e6a20034200200f420010be09200241980f6a20064200200a420010be09200241880c6a200742002004420010be09200241a80b6a200742002008420010be09200241980d6a200e42002009420010be09200241e80d6a20054200200f420010be09200241b80e6a20034200200a420010be09200241880f6a200642002011420010be09200241f8096a20022903a80b220b20022903880f7c220320022903980d7c220420022903e80d7c220520022903b80e7c220a20022903880c220c20022903980f7c220720022903a80d7c220820022903f80d7c220620022903c80e7c220920022903e80c220d20022903a80f7c220e20022903b80d7c220f20022903880e7c221020022903d80e7c221120022903f80c221220022903b80f7c221320022903c80d7c221420022903980e7c221520022903e80e7c221620022903880d221720022903c80f7c221820022903d80d7c221920022903a80e7c221a20022903f80e7c221b423388200241880d6a41086a290300200241c80f6a41086a2903007c2018201754ad7c200241d80d6a41086a2903007c2019201854ad7c200241a80e6a41086a2903007c201a201954ad7c200241f80e6a41086a2903007c201b201a54ad7c420d86847c2218423388200241f80c6a41086a290300200241b80f6a41086a2903007c2013201254ad7c200241c80d6a41086a2903007c2014201354ad7c200241980e6a41086a2903007c2015201454ad7c200241e80e6a41086a2903007c2016201554ad7c2018201654ad7c420d86847c2213423388200241e80c6a41086a290300200241a80f6a41086a2903007c200e200d54ad7c200241b80d6a41086a2903007c200f200e54ad7c200241880e6a41086a2903007c2010200f54ad7c200241d80e6a41086a2903007c2011201054ad7c2013201154ad7c420d86847c220e423388200241880c6a41086a290300200241980f6a41086a2903007c2007200c54ad7c200241a80d6a41086a2903007c2008200754ad7c200241f80d6a41086a2903007c2006200854ad7c200241c80e6a41086a2903007c2009200654ad7c200e200954ad7c420d86847c2207423388200241a80b6a41086a290300200241880f6a41086a2903007c2003200b54ad7c200241980d6a41086a2903007c2004200354ad7c200241e80d6a41086a2903007c2005200454ad7c200241b80e6a41086a2903007c200a200554ad7c2007200a54ad7c420d868442137e201b42ffffffffffffff03837c220842ffffffffffffff03832203420042a09ab5a7a4d5d602420010be09200241980b6a200742ffffffffffffff03832204420042efabafe6f7c88835420010be09200241f80b6a200e42ffffffffffffff03832205420042f8fb9b94e0ed8617420010be09200241d80c6a201342ffffffffffffff0383220a4200428b83d98ea38bdb0a420010be09200241c80a6a2008423388201842ffffffffffffff03837c2207420042e6c09290d28a8b35420010be09200241b80a6a2007420042a09ab5a7a4d5d602420010be09200241e8096a2003420042b5cccc99bcc0e502420010be09200241880b6a2004420042f8fb9b94e0ed8617420010be09200241e80b6a20054200428b83d98ea38bdb0a420010be09200241c80c6a200a420042e6c09290d28a8b35420010be09200241b80c6a200a420042a09ab5a7a4d5d602420010be09200241a80a6a2007420042b5cccc99bcc0e502420010be09200241d8096a2003420042a8f2a9fabaa79b01420010be09200241f80a6a20044200428b83d98ea38bdb0a420010be09200241d80b6a2005420042e6c09290d28a8b35420010be09200241c80b6a2005420042a09ab5a7a4d5d602420010be09200241a80c6a200a420042b5cccc99bcc0e502420010be09200241980a6a2007420042a8f2a9fabaa79b01420010be09200241c8096a2003420042a9afa6f3e694c800420010be09200241e80a6a2004420042e6c09290d28a8b35420010be09200241d80a6a2004420042a09ab5a7a4d5d602420010be09200241b80b6a2005420042b5cccc99bcc0e502420010be09200241980c6a200a420042a8f2a9fabaa79b01420010be09200241880a6a2007420042a9afa6f3e694c800420010be09200241b8096a2003420042c2cdbdbdb3d1e502420010be0920022903f029210f20022903e829210e20022903e029210520022903d829210320022903d0292104200241a02b6a200241a02a6a41011078200241c82b6a41106a220120292903002207370300200241c82b6a41086a202a290300220a200a7c220a3703002001200720077c2207370300200241c82b6a41186a2028290300220820087c2208370300200241c82b6a41206a2027290300220620067c2206370300200220022903a02a220920097c22093703c82b200241c8176a200442002009420010be09200241b8176a20064200200342137e420010be09200241c8166a20084200200542137e2213420010be0920024188186a20074200200e42137e2211420010be09200241b8166a200a4200200f42137e2210420010be09200241c8186a200a42002004420010be09200241d8176a200942002003420010be09200241a8176a200642002013420010be09200241d8166a200842002011420010be09200241a8166a200742002010420010be0920024198186a200742002004420010be09200241d8186a200a42002003420010be09200241e8176a200942002005420010be0920024198176a200642002011420010be0920024198166a200842002010420010be09200241e8166a200842002004420010be09200241a8186a200742002003420010be09200241e8186a200a42002005420010be09200241f8176a20094200200e420010be09200241e8146a200642002010420010be0920024188176a200642002004420010be09200241f8166a200842002003420010be09200241b8186a200742002005420010be09200241f8186a200a4200200e420010be09200241b8136a20094200200f420010be09200241e8066a20022903d80a222220022903b8097c220a20022903b80b7c220720022903980c7c220820022903880a7c220620022903e80a222320022903c8097c220920022903c80b7c221020022903a80c7c221120022903980a7c221320022903f80a222420022903d8097c221420022903d80b7c221520022903b80c7c221620022903a80a7c221820022903880b222520022903e8097c221920022903e80b7c221a20022903c80c7c221b20022903b80a7c220b20022903980b221c20022903f8097c220c20022903f80b7c220d20022903d80c7c221220022903c80a7c2217423388200241980b6a41086a290300200241f8096a41086a2903007c200c201c54ad7c200241f80b6a41086a2903007c200d200c54ad7c200241d80c6a41086a2903007c2012200d54ad7c200241c80a6a41086a2903007c2017201254ad7c420d86847c220c423388200241880b6a41086a290300200241e8096a41086a2903007c2019202554ad7c200241e80b6a41086a2903007c201a201954ad7c200241c80c6a41086a2903007c201b201a54ad7c200241b80a6a41086a2903007c200b201b54ad7c200c200b54ad7c420d86847c2219423388200241f80a6a41086a290300200241d8096a41086a2903007c2014202454ad7c200241d80b6a41086a2903007c2015201454ad7c200241b80c6a41086a2903007c2016201554ad7c200241a80a6a41086a2903007c2018201654ad7c2019201854ad7c420d86847c2214423388200241e80a6a41086a290300200241c8096a41086a2903007c2009202354ad7c200241c80b6a41086a2903007c2010200954ad7c200241a80c6a41086a2903007c2011201054ad7c200241980a6a41086a2903007c2013201154ad7c2014201354ad7c420d86847c220942ffffffffffffff0383200f7d42f0ffffffffffff3f7c220f42338842137e2009423388200241d80a6a41086a290300200241b8096a41086a2903007c200a202254ad7c200241b80b6a41086a2903007c2007200a54ad7c200241980c6a41086a2903007c2008200754ad7c200241880a6a41086a2903007c2006200854ad7c2009200654ad7c420d868442137e201742ffffffffffffff03837c220742ffffffffffffff038320047d42d0fdffffffffff3f7c220842ffffffffffffff03837c22044200429bdceccb84d4fd03420010be09200241b8076a200f42ffffffffffffff0383201442ffffffffffffff0383200e7d42f0ffffffffffff3f7c22064233887c220a420042969988cadca7b00e420010be09200241a8096a200642ffffffffffffff0383201942ffffffffffffff038320057d42f0ffffffffffff3f7c22064233887c2205420042a88c8b81f5cabeca00420010be09200241d8086a200642ffffffffffffff03832007423388200c42ffffffffffffff03837c20037d42f0ffffffffffff3f7c22074233887c2203420042c8ee859b8cd29829420010be0920024188086a200742ffffffffffffff038320084233887c2207420042dcd78e98b19df320420010be09200241f8076a20074200429bdceccb84d4fd03420010be09200241d8066a2004420042d2dfded4f0ede000420010be09200241a8076a200a420042a88c8b81f5cabeca00420010be0920024198096a2005420042c8ee859b8cd29829420010be09200241c8086a2003420042dcd78e98b19df320420010be09200241b8086a20034200429bdceccb84d4fd03420010be09200241e8076a2007420042d2dfded4f0ede000420010be09200241c8066a2004420042b8ecf9b5ffe8f503420010be0920024198076a200a420042c8ee859b8cd29829420010be0920024188096a2005420042dcd78e98b19df320420010be09200241f8086a20054200429bdceccb84d4fd03420010be09200241a8086a2003420042d2dfded4f0ede000420010be09200241d8076a2007420042b8ecf9b5ffe8f503420010be0920024198056a200442004298c9f9f3f9c09502420010be0920024188076a200a420042dcd78e98b19df320420010be09200241f8066a200a4200429bdceccb84d4fd03420010be09200241e8086a2005420042d2dfded4f0ede000420010be0920024198086a2003420042b8ecf9b5ffe8f503420010be09200241c8076a200742004298c9f9f3f9c09502420010be09200241e8036a2004420042b4f0cadfb1d2dd01420010be0920022903b82b212320022903b02b212420022903a82b212520022903c02b211c20022903a02b211d200242003703d02a200242013703c82a200242003703d82a200242003703e02a200242003703e82a200220022903a02b42017c22033703c82a200220022903a82b22043703d02a200220022903b02b22103703d82a200220022903b82b22153703e02a200241e8106a20034200200229038817221720022903b8137c220520022903f8167c220a20022903b8187c220720022903f8187c220820022903e814222220022903f8177c220620022903e8167c220920022903a8187c220e20022903e8187c220f200229039817221e20022903e8177c22112002290398167c22132002290398187c221420022903d8187c221620022903a817221f20022903d8177c221820022903d8167c221920022903a8167c221a20022903c8187c221b20022903b817222020022903c8177c220b20022903c8167c220c2002290388187c220d20022903b8167c2212423388200241b8176a41086a290300200241c8176a41086a2903007c200b202054ad7c200241c8166a41086a2903007c200c200b54ad7c20024188186a41086a2903007c200d200c54ad7c200241b8166a41086a2903007c2012200d54ad7c420d86847c220b423388200241a8176a41086a290300200241d8176a41086a2903007c2018201f54ad7c200241d8166a41086a2903007c2019201854ad7c200241a8166a41086a2903007c201a201954ad7c200241c8186a41086a2903007c201b201a54ad7c200b201b54ad7c420d86847c221942338820024198176a41086a290300200241e8176a41086a2903007c2011201e54ad7c20024198166a41086a2903007c2013201154ad7c20024198186a41086a2903007c2014201354ad7c200241d8186a41086a2903007c2016201454ad7c2019201654ad7c420d86847c2211423388200241e8146a41086a290300200241f8176a41086a2903007c2006202254ad7c200241e8166a41086a2903007c2009200654ad7c200241a8186a41086a2903007c200e200954ad7c200241e8186a41086a2903007c200f200e54ad7c2011200f54ad7c420d86847c220642338820024188176a41086a290300200241b8136a41086a2903007c2005201754ad7c200241f8166a41086a2903007c200a200554ad7c200241b8186a41086a2903007c2007200a54ad7c200241f8186a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e201242ffffffffffffff03837c220942ffffffffffffff03832205420010be09200241a8136a200642ffffffffffffff0383220a4200200442137e222b420010be09200241d8146a201142ffffffffffffff038322074200201042137e2218420010be0920024188166a201942ffffffffffffff038322084200201542137e2216420010be0920024188126a2009423388200b42ffffffffffffff03837c2206420020022903c02b221a42137e2211420010be09200241f8116a200642002003420010be09200241d8106a200542002004420010be0920024198136a200a42002018420010be09200241c8146a200742002016420010be09200241f8156a200842002011420010be09200241e8156a200842002003420010be09200241e8116a200642002004420010be09200241c8106a200542002010420010be0920024188136a200a42002016420010be09200241b8146a200742002011420010be09200241a8146a200742002003420010be09200241d8156a200842002004420010be09200241d8116a200642002010420010be09200241b8106a200542002015420010be09200241f8126a200a42002011420010be09200241e8126a200a42002003420010be0920024198146a200742002004420010be09200241c8156a200842002010420010be09200241c8116a200642002015420010be09200241a8106a20054200201a420010be092000200229038813222c20022903c8107c221b20022903b8147c220b20022903e8157c220c20022903e8117c220d200229039813222220022903d8107c220920022903c8147c220e20022903f8157c220f20022903f8117c221320022903a813221e20022903e8107c221420022903d8147c22192002290388167c22122002290388127c2217423388200241a8136a41086a290300200241e8106a41086a2903007c2014201e54ad7c200241d8146a41086a2903007c2019201454ad7c20024188166a41086a2903007c2012201954ad7c20024188126a41086a2903007c2017201254ad7c420d86847c221242338820024198136a41086a290300200241d8106a41086a2903007c2009202254ad7c200241c8146a41086a2903007c200e200954ad7c200241f8156a41086a2903007c200f200e54ad7c200241f8116a41086a2903007c2013200f54ad7c2012201354ad7c420d86847c222242ffffffffffffff038337031020024198106a42f0ffffffffffff3f201c7d221442338842137e42d1fdffffffffff3f201d7d220e42ffffffffffffff03837c220942002005420010be09200241d8126a200a420042f0ffffffffffff3f20257d220f42ffffffffffffff0383200e4233887c220e42137e420010be0920024188146a2007420042f0ffffffffffff3f20247d221342ffffffffffffff0383200f4233887c220f42137e2224420010be09200241b8156a2008420042f0ffffffffffff3f20237d221942ffffffffffffff038320134233887c221342137e2223420010be09200241b8116a20064200201442ffffffffffffff038320194233887c221442137e2219420010be09200241a8116a200642002009420010be0920024188106a20054200200e420010be09200241c8126a200a42002024420010be09200241f8136a200742002023420010be09200241a8156a200842002019420010be0920024198156a200842002009420010be0920024198116a20064200200e420010be09200241f80f6a20054200200f420010be09200241b8126a200a42002023420010be09200241e8136a200742002019420010be09200241d8136a200742002009420010be0920024188156a20084200200e420010be0920024188116a20064200200f420010be09200241e80f6a200542002013420010be09200241a8126a200a42002019420010be0920004190016a20022903a812222d20022903e80f7c221920022903d8137c22232002290388157c22242002290388117c222520022903b812222e20022903f80f7c221c20022903e8137c221d2002290398157c221e2002290398117c221f20022903c812222f2002290388107c222020022903f8137c222120022903a8157c223020022903a8117c223120022903d81222322002290398107c22332002290388147c223420022903b8157c223520022903b8117c2236423388200241d8126a41086a29030020024198106a41086a2903007c2033203254ad7c20024188146a41086a2903007c2034203354ad7c200241b8156a41086a2903007c2035203454ad7c200241b8116a41086a2903007c2036203554ad7c420d86847c2233423388200241c8126a41086a29030020024188106a41086a2903007c2020202f54ad7c200241f8136a41086a2903007c2021202054ad7c200241a8156a41086a2903007c2030202154ad7c200241a8116a41086a2903007c2031203054ad7c2033203154ad7c420d86847c2220423388200241b8126a41086a290300200241f80f6a41086a2903007c201c202e54ad7c200241e8136a41086a2903007c201d201c54ad7c20024198156a41086a2903007c201e201d54ad7c20024198116a41086a2903007c201f201e54ad7c2020201f54ad7c420d86847c221c42ffffffffffffff0383370300200020022903f812223020022903b8107c221d20022903a8147c221e20022903d8157c221f20022903d8117c2221202242338820024188136a41086a290300200241c8106a41086a2903007c201b202c54ad7c200241b8146a41086a2903007c200b201b54ad7c200241e8156a41086a2903007c200c200b54ad7c200241e8116a41086a2903007c200d200c54ad7c2022200d54ad7c420d86847c221b42ffffffffffffff038337031820024198126a200a42002009420010be09200241c8136a20074200200e420010be09200241f8146a20084200200f420010be09200241f8106a200642002013420010be09200241d80f6a200542002014420010be0920004198016a200229039812222c20022903d80f7c220b20022903c8137c220c20022903f8147c220d20022903f8107c2222201c423388200241a8126a41086a290300200241e80f6a41086a2903007c2019202d54ad7c200241d8136a41086a2903007c2023201954ad7c20024188156a41086a2903007c2024202354ad7c20024188116a41086a2903007c2025202454ad7c201c202554ad7c420d86847c222342ffffffffffffff0383370300200020022903e812221920022903a8107c22052002290398147c220a20022903c8157c220720022903c8117c2208201b423388200241f8126a41086a290300200241b8106a41086a2903007c201d203054ad7c200241a8146a41086a2903007c201e201d54ad7c200241d8156a41086a2903007c201f201e54ad7c200241d8116a41086a2903007c2021201f54ad7c201b202154ad7c420d86847c220642ffffffffffffff038337032020002006423388200241e8126a41086a290300200241a8106a41086a2903007c2005201954ad7c20024198146a41086a2903007c200a200554ad7c200241c8156a41086a2903007c2007200a54ad7c200241c8116a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e201742ffffffffffffff03837c220542ffffffffffffff038337030020002005423388201242ffffffffffffff03837c370308200241d8016a20022903f806222d20022903e8037c220520022903e8087c220a2002290398087c220720022903c8077c2208200229038807222e2002290398057c220620022903f8087c221920022903a8087c221b20022903d8077c2212200229039807222f20022903c8067c22172002290388097c222420022903b8087c222520022903e8077c221c20022903a807223220022903d8067c221d2002290398097c221e20022903c8087c221f20022903f8077c222120022903b807223720022903e8067c223020022903a8097c223120022903d8087c22342002290388087c2235423388200241b8076a41086a290300200241e8066a41086a2903007c2030203754ad7c200241a8096a41086a2903007c2031203054ad7c200241d8086a41086a2903007c2034203154ad7c20024188086a41086a2903007c2035203454ad7c420d86847c2230423388200241a8076a41086a290300200241d8066a41086a2903007c201d203254ad7c20024198096a41086a2903007c201e201d54ad7c200241c8086a41086a2903007c201f201e54ad7c200241f8076a41086a2903007c2021201f54ad7c2030202154ad7c420d86847c221d42338820024198076a41086a290300200241c8066a41086a2903007c2017202f54ad7c20024188096a41086a2903007c2024201754ad7c200241b8086a41086a2903007c2025202454ad7c200241e8076a41086a2903007c201c202554ad7c201d201c54ad7c420d86847c221742338820024188076a41086a29030020024198056a41086a2903007c2006202e54ad7c200241f8086a41086a2903007c2019200654ad7c200241a8086a41086a2903007c201b201954ad7c200241d8076a41086a2903007c2012201b54ad7c2017201254ad7c420d86847c2206423388200241f8066a41086a290300200241e8036a41086a2903007c2005202d54ad7c200241e8086a41086a2903007c200a200554ad7c20024198086a41086a2903007c2007200a54ad7c200241c8076a41086a2903007c2008200754ad7c2006200854ad7c420d868442137e203542ffffffffffffff03837c220a42ffffffffffffff0383220542002009420010be09200241f8026a20144200200a423388203042ffffffffffffff03837c220a42137e420010be09200241b8056a20134200201d42ffffffffffffff0383220742137e2212420010be0920024198046a200f4200201742ffffffffffffff0383220842137e221b420010be09200241386a200e4200200642ffffffffffffff0383220642137e2219420010be09200241c8016a200e42002005420010be09200241e8026a20094200200a420010be09200241a8056a201442002012420010be0920024188046a20134200201b420010be09200241286a200f42002019420010be09200241b8016a200f42002005420010be09200241d8026a200e4200200a420010be09200241c8056a200942002007420010be09200241f8036a20144200201b420010be09200241186a201342002019420010be09200241a8016a201342002005420010be09200241c8026a200f4200200a420010be09200241d8056a200e42002007420010be09200241a8046a200942002008420010be09200241086a201442002019420010be0920024198016a201442002005420010be09200241b8026a20134200200a420010be09200241e8056a200f42002007420010be09200241b8046a200e42002008420010be0920024188036a200942002006420010be0920024188016a200342002005420010be0920024198036a20064200202b420010be09200241c8046a200842002018420010be09200241f8056a200742002016420010be09200241a8026a200a42002011420010be0920024198026a200a42002003420010be09200241f8006a200542002004420010be09200241a8036a200642002018420010be09200241d8046a200842002016420010be0920024188066a200742002011420010be0920024198066a200742002003420010be0920024188026a200a42002004420010be09200241e8006a200542002010420010be09200241b8036a200642002016420010be09200241e8046a200842002011420010be09200241f8046a200842002003420010be09200241a8066a200742002004420010be09200241f8016a200a42002010420010be09200241d8006a200542002015420010be09200241c8036a200642002011420010be09200241d8036a200642002003420010be0920024188056a200842002004420010be09200241b8066a200742002010420010be09200241e8016a200a42002015420010be09200241c8006a20054200201a420010be0920004188016a202042ffffffffffffff03833703002000202342338820024198126a41086a290300200241d80f6a41086a2903007c200b202c54ad7c200241c8136a41086a2903007c200c200b54ad7c200241f8146a41086a2903007c200d200c54ad7c200241f8106a41086a2903007c2022200d54ad7c2023202254ad7c420d868442137e203642ffffffffffffff03837c220342ffffffffffffff038337037820004180016a2003423388203342ffffffffffffff03837c370300200041e0006a20022903b803221b20022903687c220320022903e8047c22042002290398067c22052002290388027c220a20022903a803221320022903787c220720022903d8047c22082002290388067c22062002290398027c220920022903980322142002290388017c220e20022903c8047c220f20022903f8057c221020022903a8027c221142338820024198036a41086a29030020024188016a41086a2903007c200e201454ad7c200241c8046a41086a2903007c200f200e54ad7c200241f8056a41086a2903007c2010200f54ad7c200241a8026a41086a2903007c2011201054ad7c420d86847c220e423388200241a8036a41086a290300200241f8006a41086a2903007c2007201354ad7c200241d8046a41086a2903007c2008200754ad7c20024188066a41086a2903007c2006200854ad7c20024198026a41086a2903007c2009200654ad7c200e200954ad7c420d86847c220742ffffffffffffff0383370300200041386a20022903f803220b20022903c8057c220820022903187c220620022903b8017c220920022903d8027c220f20022903a805220c20022903e8027c22102002290388047c221320022903287c221420022903c8017c221520022903f802220d20022903d8017c221620022903b8057c22182002290398047c221920022903387c221a423388200241f8026a41086a290300200241d8016a41086a2903007c2016200d54ad7c200241b8056a41086a2903007c2018201654ad7c20024198046a41086a2903007c2019201854ad7c200241386a41086a2903007c201a201954ad7c420d86847c2216423388200241a8056a41086a290300200241e8026a41086a2903007c2010200c54ad7c20024188046a41086a2903007c2013201054ad7c200241286a41086a2903007c2014201354ad7c200241c8016a41086a2903007c2015201454ad7c2016201554ad7c420d86847c221042ffffffffffffff0383370300200041e8006a20022903c803221920022903587c221320022903f8047c221420022903a8067c221520022903f8017c22182007423388200241b8036a41086a290300200241e8006a41086a2903007c2003201b54ad7c200241e8046a41086a2903007c2004200354ad7c20024198066a41086a2903007c2005200454ad7c20024188026a41086a2903007c200a200554ad7c2007200a54ad7c420d86847c220342ffffffffffffff0383370300200041c0006a2002290308221b20022903a8047c220420022903a8017c220520022903c8027c220a20022903d8057c22072010423388200241f8036a41086a290300200241c8056a41086a2903007c2008200b54ad7c200241186a41086a2903007c2006200854ad7c200241b8016a41086a2903007c2009200654ad7c200241d8026a41086a2903007c200f200954ad7c2010200f54ad7c420d86847c220842ffffffffffffff0383370300200041f0006a20022903d803220b20022903487c22062002290388057c220920022903b8067c220f20022903e8017c22102003423388200241c8036a41086a290300200241d8006a41086a2903007c2013201954ad7c200241f8046a41086a2903007c2014201354ad7c200241a8066a41086a2903007c2015201454ad7c200241f8016a41086a2903007c2018201554ad7c2003201854ad7c420d86847c220342ffffffffffffff0383370300200041c8006a20022903980122192002290388037c221320022903b8027c221420022903e8057c221520022903b8047c22182008423388200241086a41086a290300200241a8046a41086a2903007c2004201b54ad7c200241a8016a41086a2903007c2005200454ad7c200241c8026a41086a2903007c200a200554ad7c200241d8056a41086a2903007c2007200a54ad7c2008200754ad7c420d86847c220442ffffffffffffff038337030020002003423388200241d8036a41086a290300200241c8006a41086a2903007c2006200b54ad7c20024188056a41086a2903007c2009200654ad7c200241b8066a41086a2903007c200f200954ad7c200241e8016a41086a2903007c2010200f54ad7c2003201054ad7c420d868442137e201142ffffffffffffff03837c220342ffffffffffffff0383370350200041d8006a2003423388200e42ffffffffffffff03837c3703002000200442338820024198016a41086a29030020024188036a41086a2903007c2013201954ad7c200241b8026a41086a2903007c2014201354ad7c200241e8056a41086a2903007c2015201454ad7c200241b8046a41086a2903007c2018201554ad7c2004201854ad7c420d868442137e201a42ffffffffffffff03837c220342ffffffffffffff0383370328200041306a2003423388201642ffffffffffffff03837c370300200241f02b6a24000bd32004047f017e027f1c7e23004190066b220224000240024020012c001f417f4a0d00200041003a00000c010b20024180056a41186a2203200141186a29000037030020024180056a41106a2204200141106a29000037030020024180056a41086a2205200141086a29000037030020022001290000220637038005200220022d009f0541ff00713a009f05200241c0056a41186a22074200370300200241c0056a41106a22084200370300200241c0056a41086a220142003703002002200231008205421086200231008105420886200642ff0183848422063703c005200220023100830542188620068422063703c005200220023100840542208620068422063703c005200220023100850542288620068422063703c005200220023100860542308620068422063703c00520022002310087054238862006843703c005200120012903002005310000842206370300200120023100890542088620068422063703002001200231008a0542108620068422063703002001200231008b0542188620068422063703002001200231008c0542208620068422063703002001200231008d0542288620068422063703002001200231008e0542308620068422063703002001200231008f0542388620068437030020082008290300200431000084220637030020082002310091054208862006842206370300200820023100920542108620068422063703002008200231009305421886200684220637030020082002310094054220862006842206370300200820023100950542288620068422063703002008200231009605423086200684220637030020082002310097054238862006842209370300200720072903002003310000842206370300200720023100990542088620068422063703002007200231009a0542108620068422063703002007200231009b0542188620068422063703002007200231009c0542208620068422063703002007200231009d0542288620068422063703002007200231009e0542308620068422063703002007200231009f05423886200684220a37030020024180036a20022903c005220b42ffffffffffffff07832206420042edcd87b9d697d207420010be09200241c0026a2006420042dac89fe3dad6ee01420010be0920024180026a2001290300220c420c864280e0ffffffffff0783200b42348884220b420042edcd87b9d697d207420010be09200241b0026a20064200429bcad7d9feffff07420010be09200241c0016a200b420042dac89fe3dad6ee01420010be09200241d0036a200942188642808080f8ffffff0783200c42288884220c420042edcd87b9d697d207420010be09200241a0026a2006420042ffffffffffffff07420010be0920024180016a200b4200429bcad7d9feffff07420010be09200241c0036a200c420042dac89fe3dad6ee01420010be09200241a0046a200a422486428080808080feff07832009421c88842209420042edcd87b9d697d207420010be0920024190026a2006420042ffffffffffff03420010be09200241c0006a200b420042ffffffffffffff07420010be09200241b0036a200c4200429bcad7d9feffff07420010be0920024190046a2009420042dac89fe3dad6ee01420010be09200241f0046a200a4210882206420042edcd87b9d697d207420010be092002200b420042ffffffffffff03420010be09200241a0036a200c420042ffffffffffffff07420010be0920024180046a20094200429bcad7d9feffff07420010be09200241e0046a2006420042dac89fe3dad6ee01420010be0920024190036a200c420042ffffffffffff03420010be09200241f0036a2009420042ffffffffffffff07420010be09200241d0046a20064200429bcad7d9feffff07420010be09200241e0036a2009420042ffffffffffff03420010be09200241c0046a2006420042ffffffffffffff07420010be09200241b0046a2006420042ffffffffffff03420010be09200241f0026a200229038003220b429bfcd192b1b4c7027e42ffffffffffffff07832206420042eda7d7e7a5e39801420010be09200241e0026a200642004281cbb5cef7c5fa06420010be09200241f0016a200229038002220d20022903c0027c220c200b20022903f00222097c220b423488200241f0026a41086a29030020024180036a41086a2903007c200b200954ad7c220e420c86847c220920022903e0027c220a429bfcd192b1b4c7027e42ffffffffffffff0783220b420042eda7d7e7a5e39801420010be09200241d0026a2006420042f9bdd300420010be09200241e0016a200b42004281cbb5cef7c5fa06420010be09200241b0016a20022903c001220f20022903b0027c221020022903d0037c221120022903d0027c221220022903e0017c221320022903f0012214200a7c2215423488200241f0016a41086a29030020024180026a41086a290300200241c0026a41086a2903007c200c200d54ad7c200e4234887c2009200c54ad7c200241e0026a41086a2903007c200a200954ad7c7c2015201454ad7c2216420c86847c2209429bfcd192b1b4c7027e42ffffffffffffff0783220c420042eda7d7e7a5e39801420010be09200241d0016a200b420042f9bdd300420010be09200241a0016a200c42004281cbb5cef7c5fa06420010be09200241f0006a200229038001221720022903a0027c220a20022903c0037c220d20022903a0047c220e20022903d0017c221420022903a0017c221520022903b001221820097c2219423488200241b0016a41086a290300200241c0016a41086a290300200241b0026a41086a2903007c2010200f54ad7c200241d0036a41086a2903007c2011201054ad7c200241d0026a41086a2903007c2012201154ad7c200241e0016a41086a2903007c2013201254ad7c20164234887c2009201354ad7c7c2019201854ad7c221a420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff07832209420042eda7d7e7a5e39801420010be0920024190016a200c420042f9bdd300420010be09200241e0006a200942004281cbb5cef7c5fa06420010be09200241306a2002290340221b2002290390027c221120022903b0037c22122002290390047c221320022903f0047c220f2006422c867c22162002290390017c221820022903607c22192002290370221c20107c221d423488200241f0006a41086a29030020024180016a41086a290300200241a0026a41086a2903007c200a201754ad7c200241c0036a41086a2903007c200d200a54ad7c200241a0046a41086a2903007c200e200d54ad7c200241d0016a41086a2903007c2014200e54ad7c200241a0016a41086a2903007c2015201454ad7c201a4234887c2010201554ad7c7c201d201c54ad7c221e420c86847c2210429bfcd192b1b4c7027e42ffffffffffffff0783220a420042eda7d7e7a5e39801420010be09200241d0006a2009420042f9bdd300420010be09200241206a200a42004281cbb5cef7c5fa06420010be09200241106a200a420042f9bdd300420010be09200120022903f003221f2002290390037c220d20022903d0047c220e200c422c867c221420022903107c221520022903a003222020022903007c22172002290380047c221a20022903e0047c221c200b422c867c221d20022903507c222120022903207c22222002290330222320107c2224423488200241306a41086a290300200241c0006a41086a29030020024190026a41086a2903007c2011201b54ad7c200241b0036a41086a2903007c2012201154ad7c20024190046a41086a2903007c2013201254ad7c200241f0046a41086a2903007c200f201354ad7c20064214887c2016200f54ad7c20024190016a41086a2903007c2018201654ad7c200241e0006a41086a2903007c2019201854ad7c201e4234887c2010201954ad7c7c2024202354ad7c2210420c86847c2206423488200241a0036a41086a290300200241086a2903007c2017202054ad7c20024180046a41086a2903007c201a201754ad7c200241e0046a41086a2903007c201c201a54ad7c200b4214887c201d201c54ad7c200241d0006a41086a2903007c2021201d54ad7c200241206a41086a2903007c2022202154ad7c20104234887c2006202254ad7c2212420c86847c220b42ffffffffffffff0783200642ffffffffffffff07834293d8a898da9ce77e7c2206423f877c42ffb4cab188ba85797c221342ffffffffffffff0783200642ffffffffffffff0783200a422c86220f20022903b0047c220620022903c004221620022903e0037c22102009422c867c2211200b423488200241f0036a41086a29030020024190036a41086a2903007c200d201f54ad7c200241d0046a41086a2903007c200e200d54ad7c200c4214887c2014200e54ad7c200241106a41086a2903007c2015201454ad7c20124234887c200b201554ad7c220c420c86847c220b423488200241c0046a41086a290300200241e0036a41086a2903007c2010201654ad7c20094214887c2011201054ad7c200c4234887c200b201154ad7c2209420c86847c220c423488200a421488200241b0046a41086a2903007c2006200f54ad7c20094234887c200c200654ad7c420c8684200c42ffffffffffffff0783200b42ffffffffffffff07832013423f877c4287c2ac7f7c220c423f877c2209423f877c428080808080807c7c2210423f87220a42eda7d7e7a5e39801837c22064234887c200a4281cbb5cef7c5fa06837c220b42ffffffffffffff078322113703002008200c42ffffffffffffff0783200b4234887c200a42f9bdd300837c220c42ffffffffffffff078322123703002007200942ffffffffffffff0783200c4234887c220942ffffffffffffff07832213370300200241e0056a201042ffffffffffffff078320094234887c200a4280808080808004837c220a42ffffffffffffff07833703002002200642ffffffffffffff078322103703c0052002200a4228883c00bf052002200a4220883c00be052002200a4218883c00bd052002200a4210883c00bc052002200a4208883c00bb052002200a3c00ba0520022009422c883c00b905200220094224883c00b80520022009421c883c00b705200220094214883c00b60520022009420c883c00b505200220094204883c00b405200220134204862012423088843c00b3052002200c4228883c00b2052002200c4220883c00b1052002200c4218883c00b0052002200c4210883c00af052002200c4208883c00ae052002200c3c00ad052002200b422c883c00ac052002200b4224883c00ab052002200b421c883c00aa052002200b4214883c00a9052002200b420c883c00a8052002200b4204883c00a705200220114204862010423088843c00a605200220064228883c00a505200220064220883c00a405200220064218883c00a305200220064210883c00a205200220064208883c00a105200220063c00a0052006a72108200241a0056a4101722103410021014101210702400340200820024180056a20016a2d0000732208410020086b72417f7341800171410776107720077121072001411f460d01200320016a2d00002108200141016a21010c000b0b4100210102402007107741ff01714101470d002000200229038005370001200041196a20024198056a290300370000200041116a20024190056a290300370000200041096a20024188056a290300370000410121010b200020013a00000b20024190066a24000bc60101017f230041106b2202240002400240024002400240024002400240200041ff01710e0700010203040506070b200241003a000f20012002410f6a4101107e0c060b200241013a000f20012002410f6a4101107e0c050b200241023a000f20012002410f6a4101107e0c040b200241033a000f20012002410f6a4101107e0c030b200241043a000f20012002410f6a4101107e0c020b200241053a000f20012002410f6a4101107e0c010b200241063a000f20012002410f6a4101107e0b200241106a24000b880201047f230041206b2203240002400240200041046a2802002204200041086a28020022056b2002490d00200028020021040c010b0240200520026a22062005490d00200441017422052006200520064b1b22054108200541084b1b21050240024020040d00200341003602100c010b200341106a41086a410136020020032004360214200320002802003602100b200320054101200341106a104e200341086a2802002105024020032802004101460d00200020032802042204360200200041046a2005360200200041086a28020021050c020b2005450d001039000b103b000b200420056a2001200210bf091a200041086a2200200028020020026a360200200341206a24000bcb0701057f230041c0006b2203240002402001450d002000200141f0006c6a2104034020002802042101200028020822052002108001200220012005107e02400240200028020c22014102470d00200341003a00202002200341206a4101107e0c010b200341013a00202002200341206a4101107e024020014101470d0020002802142101200028021822052002108001200220012005107e200028022021010240200028021c4101470d002000280228220520021080012001200520021081010c020b200041246a280200220520021080012001200520021081010c010b200341206a200028021011020020032802242101200328022822052002108001200220012005107e200328023021060240200328022c4101460d002003280234220120021080012006200120021081010c010b200328023822012002108001200620012002108101024020032802382201450d00200141d8006c21074100210503400240200620056a220141346a280200450d002001413c6a280200450d00200141386a28020010310b0240200141c4006a280200450d00200141cc006a28020041ffffffff0171450d00200141c8006a28020010310b2007200541d8006a2205470d000b0b20032802342201450d00200141d8006c450d00200610310b02400240200028022c22014102470d00200341003a00202002200341206a4101107e0c010b200341013a00202002200341206a4101107e024020014101470d00200028023021012000280238220520021080012001200520021082010c010b200341186a200028023011020020032802182101200328021c220520021080012001200520021082010b02400240200028023c22014102470d00200341003a00202002200341206a4101107e0c010b200341013a00202002200341206a4101107e024020014101470d00200028024021012000280248220520021080012001200520021083010c010b200341106a2000280240110200200328021021012003280214220520021080012001200520021083010b02400240200028024c4101470d00200028025021012000280258220520021080012001200520021084010c010b200341086a200028025011020020032802082101200328020c220520021080012001200520021084010b200041f0006a210102400240200028025c4101470d00200028026021052000280268220620021080012005200620021085010c010b20032000280260110200200328020021052003280204220620021080012005200620021085010b200320002d006c3a00202002200341206a4101107e2001210020012004470d000b0b200341c0006a24000bab0101017f230041106b220224000240024002400240200041c000490d00200041808001490d012000418080808004490d02200241033a00032001200241036a4101107e200220003602042001200241046a4104107e0c030b200220004102743a00032001200241036a4101107e0c020b200220004102744101723b010a20012002410a6a4102107e0c010b2002200041027441027236020c20012002410c6a4104107e0b200241106a24000bce0501057f230041106b2203240002402001450d002000200141d8006c6a21040340200022052802042101200528020822062002108001200220012006107e0240024020052d00544101460d00200341003a000f20022003410f6a4101107e0c010b200341013a000f20022003410f6a4101107e0b024002400240024020052d000c0e03000102030b200341003a000f20022003410f6a4101107e20052802142101200528021822062002108001200220012006107e0c020b200341013a000f20022003410f6a4101107e2005410d6a2d00002002107d20052802142101200528021822062002108001200220012006107e20052802202101200528022422062002108001200220012006107e20032005410e6a2d00003a000f20022003410f6a4101107e0c010b200341023a000f20022003410f6a4101107e2005410d6a2d00002002107d20052802142101200528021822062002108001200220012006107e20052802202101200528022422062002108001200220012006107e200528022c2101200528023022062002108001200220012006107e2005410e6a2d00002002107d0b0240024020052802344101470d0020052802382101200528024022062002108001200220012006107e0c010b20032005280238200528023c28020c11030020032802002101200328020822062002108001200220012006107e2003280204450d00200110310b200541d8006a2100200528024821010240024020052802444101470d0020052802502205200210800120054103742205450d01200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000c020b0b200528024c2205200210800120054103742205450d00200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000b0b20002004470d000b0b200341106a24000bef0301057f02402001450d0020002001412c6c6a21030340200022042802042101200428020822052002108001200220012005107e2004280210210102400240200428020c4101470d002004280218220520021080012005450d01200541186c2105200141146a21010340200141706a2802002106200141746a28020022072002108001200220062007107e2001417c6a2802002106200128020022072002108001200220062007107e200141186a2101200541686a22050d000c020b0b200441146a280200220520021080012005450d00200541186c2105200141146a21010340200141706a2802002106200141746a28020022072002108001200220062007107e2001417c6a2802002106200128020022072002108001200220062007107e200141186a2101200541686a22050d000b0b2004412c6a21002004280220210102400240200428021c4101470d0020042802282205200210800120054103742205450d01200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000c020b0b20042802242205200210800120054103742205450d00200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000b0b20002003470d000b0b0b9e0301057f02402001450d0020002001412c6c6a21030340200022042802042101200428020822052002108001200220012005107e2004280210210102400240200428020c4101470d0020042802182205200210800120054103742205450d01200120056a2106034020012802002105200141046a28020022072002108001200220052007107e200141086a22012006470d000c020b0b20042802142205200210800120054103742205450d00200120056a2106034020012802002105200141046a28020022072002108001200220052007107e200141086a22012006470d000b0b2004412c6a21002004280220210102400240200428021c4101470d0020042802282205200210800120054103742205450d01200120056a2106034020012802002105200141046a28020022072002108001200220052007107e200141086a22012006470d000c020b0b20042802242205200210800120054103742205450d00200120056a2106034020012802002105200141046a28020022072002108001200220052007107e200141086a22012006470d000b0b20002003470d000b0b0b820301057f230041106b2203240002402001450d002000200141386c6a21040340200022052802042101200528020822062002108001200220012006107e20052802102101200528021422062002108001200220012006107e0240024020052802184101470d00200528021c2101200528022422062002108001200220012006107e0c010b2003200528021c200528022028020c11030020032802002101200328020822062002108001200220012006107e2003280204450d00200110310b200541386a2100200528022c21010240024020052802284101470d0020052802342205200210800120054103742205450d01200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000c020b0b20052802302205200210800120054103742205450d00200120056a2107034020012802002105200141046a28020022062002108001200220052006107e200141086a22012007470d000b0b20002004470d000b0b200341106a24000bf10101047f02402001450d0020002001411c6c6a21030340200022042802042101200428020822052002108001200220012005107e2004411c6a21002004280210210102400240200428020c4101470d0020042802182204200210800120044103742204450d01200120046a2106034020012802002104200141046a28020022052002108001200220042005107e200141086a22012006470d000c020b0b20042802142204200210800120044103742204450d00200120046a2106034020012802002104200141046a28020022052002108001200220042005107e200141086a22012006470d000b0b20002003470d000b0b0b1c00200128021841c8fac900410f2001411c6a28020028020c1100000bbb010002400240024002402002450d0020014100480d01024002400240200328020022020d0020010d01410121020c020b0240200328020422030d0020010d01410121020c020b200220032001103322020d010c040b2001102f2202450d030b20002002360204410021020c030b2000200136020420004101360200200041086a41003602000f0b20004101360200200041086a41003602000f0b2000200136020441012101410121020b20002002360200200041086a20013602000be407010c7f230041206b220224002001410c6a2802002103200128020821042001280204210502400240024002400240024002400240024002400240200128020022060d002004450d01200320046b21070c020b200520066b2101024020040d00200121070c020b2001200320046b6a220720014f0d012000420137020041002107200041086a22084100360200200520066b2109410121010c040b2000420137020041002107200041086a22084100360200410121010c010b2007417f4c0d070240024020070d00410121010c010b2007102f2201450d050b20002001360200200041086a22084100360200200041046a200736020020060d010b200320046b410020041b21090c020b200520066b21092004450d010b02402009200320046b6a220a2009490d00200a21090c010b0240024020052006460d00200641016a210b0c010b2004450d0420032004460d044100210b20042106200441016a21040b200041046a210c4100210d034020042109200b210a20062d0000210602400240024002400240200d2007470d0002400240200a0d00200320096b410020091b21040c010b2005200a6b21042009450d00417f2004200320096b6a220b200b2004491b21040b200720076b417f200441016a220b200b2004491b22044f0d00200720046a22042007490d0a2007410174220b2004200b20044b1b22044108200441084b1b21040240024020070d00200241003602100c010b2002410136021820022007360214200220013602100b200220044101200241106a1087012002280208210720022802004101460d01200020022802042201360200200c20073602000b2001200d6a20063a00002008200d41016a220d360200200a0d01200a210b0c020b2007450d080c050b200a2005470d014100210b0b2009450d0520092003460d05200941016a2104200921060c010b200a41016a210b20092104200a21060c000b0b200720094f0d012007410174220a2009200a20094b1b22094108200941084b1b21090240024020070d00200241003602100c010b200241106a41086a410136020020022007360214200220013602100b200220094101200241106a108701200241086a2802002109024020022802004101460d00200020022802042201360200200041046a20093602000c020b2009450d030b1039000b4100210902402006450d0020052006460d00200520066b21090340200120062d00003a0000200141016a21012005200641016a2206470d000b0b02402004450d0020032004460d00200920046b21060340200120042d00003a0000200141016a21012003200441016a2204470d000b200320066a21090b200820093602000b200241206a24000f0b103b000b9f0904017f017e017f087e230041b0046b22022400200141bc016a350200210320012802b8012104200241c0016a200141b80110bf091a024002400240200241e8016a2903004201510d0020022903c80121050c010b200241f0016a290300220620022903c8012205560d010b200521060b200220063703c801024002400240200241a0026a2903004201510d0020022903c80121050c010b200241a8026a290300220620022903c8012205560d010b200521060b200220063703c801024002400240200241d8026a2903004201510d0020022903c80121050c010b200241e0026a290300220620022903c8012205560d010b200521060b200220063703c80102402004450d002006428094ebdc038020037e2006428094ebdc038220037e2206428094ebdc038042ffffffff0f2006428080808080c0b2cd3b541b2006428094ebdc03824280cab5ee0156ad7c42ffffffff0f837c21060240200241d8016a2903004201510d00200241e0016a42004200200241f0016a290300220320067d220520052003561b220320022903d0017d220520052003561b3703002002200241e8016a2903003703d8010b024020024190026a2903004201510d0020024198026a42004200200241a8026a290300220320067d220520052003561b220320024188026a2903007d220520052003561b3703002002200241a0026a290300370390020b200241c8026a2903004201510d00200241d0026a42004200200241e0026a290300220320067d220620062003561b2206200241c0026a2903007d220320032006561b3703002002200241d8026a2903003703c8020b200241f8026a200241c0016a41b80110bf091a02400240200229038003220620022903f8022203200241f8036a29030022077c580d002006420020024198046a290300220520024190046a2903005022011b540d00427e200241a8046a290300427f7c200241a0046a290300501b2007540d0020024188046a29030022085020024180046a2903002209420052710d00420020082009501b4200427f200520011b220520077d220820082005561b560d0020062003200241c0036a29030022097c580d0020064200200241e0036a2903002208200241f8026a41e0006a2903005022011b540d00427e200241f0036a290300427f7c200241e8036a290300501b2009540d00200241d0036a290300220a50200241c8036a290300220b420052710d004200200a200b501b4200427f200820011b220820097d220a200a2008561b560d0020062003200229038803220a7c580d0020064200200241a8036a290300220b200241a0036a2903005022011b540d00427e200241b8036a290300427f7c200241b0036a290300501b200a540d0020024198036a29030022065020024190036a290300220c420052710d0042002006200c501b4200427f200b20011b2206200a7d220b200b2006561b560d002006502006200a5620062003567172450d00200850200820095620082003567172450d002005502005200756200520035671720d010b200241013a0002419aa3c00041e000200241026a41aca2c00041fca3c0001041000b2000200241086a200241f8026a41b80110bf0941b80110bf091a200241b0046a24000ba90803197e017f147e20002903c0012101200029039801210220002903702103200029034821042000290320210520002903b8012106200029039001210720002903682108200029034021092000290318210a20002903b001210b200029038801210c2000290360210d2000290338210e2000290310210f20002903a8012110200029038001211120002903582112200029033021132000290308211420002903a00121152000290378211620002903502117200029032821182000290300211941c07e211a0340200b200c200d200e200f85858585221b4201892015201620172018201985858585221c85221d201385211e20012006200720082009200a85858585221f201c42018985221c85212020012002200320042005858585852221420189201b85221b2009854237892222201f4201892010201120122013201485858585220985221f200f85423e892223427f8583201d201085420289222485210120222021200942018985220f20168542298922212003201c854227892225427f8583852110201b2006854238892226201f200c85420f892227427f8583201d201285420a89222885210c2028200f2018854224892229427f85832005201c85421b89222a852116200f2015854212892215201f200e85420689222b201d201485420189222c427f85838521032002201c85420889222d201b200885421989222e427f8583202b8521122004201c85421489221c201b200a85421c89220a427f8583201f200b85423d89220e852104200a200e427f8583201d201185422d89221d852109200f2017854203892214200e201d427f858385210e201d2014427f8583201c852113200a2014201c427f8583852118201b200785421589221d200f201985221c2020420e89221b427f858385210a201b201d427f8583201f200d85422b89221f85210f201d201f427f8583201e422c89221d852114201a41e8a5c0006a290300201c201f201d427f85838585211920262029202a427f858385221f2102201d201c427f8583201b85221d2105202120232024427f858385221c2106202a2026427f8583202785221b2107202c2015427f8583202d852226210820242021427f85832025852224210b202e2015202d427f8583852221210d202920272028427f8583852227211120252022427f858320238522222115202e202b427f8583202c8522232117201a41086a221a0d000b200020223703a00120002016370378200020233703502000201837032820002019370300200020103703a8012000202737038001200020123703582000201337033020002014370308200020243703b0012000200c37038801200020213703602000200e3703382000200f3703102000201c3703b8012000201b3703900120002026370368200020093703402000200a370318200020013703c0012000201f3703980120002003370370200020043703482000201d3703200b040041000b02000b02000b6601017f230041206b220424002004200136020420042000360200200441086a41106a200241106a290200370300200441086a41086a200241086a2902003703002004200229020037030820044198a6c000200441046a4198a6c000200441086a20031063000bd30501027f230041306b22032400200320013a000702400240024002402002450d0020002d00ca01200141ff0171460d01200341086a410c6a41093602002003412c6a4102360200200341186a410c6a4102360200200341206a41b4a7c0003602002003410236021c200341a4a7c0003602182003410936020c2003200041ca016a2200360208200341286a200341086a3602002003200341076a3602102000200341076a200341186a41f4a7c000108e01000b2003200141087122023a00080240024020020d00200020013a00ca0120002d00c9012104200020002d00c801220241016a3a00c901200320013a0019200320043a00180240200241c7014b0d00200020026a220120012d000020032d0018733a0000200020002d00c80141016a22023a00c8010240200241ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002102200041003b01c8010c030b200141c801490d020b200241ff017141c80141bca6c000103f000b2003412c6a4100360200200341286a41f8fac9003602002003420137021c20034184a8c000360218200341086a41d6b2c800200341186a418ca8c000108e01000b2000200241ff01716a220120012d000020032d0019733a0000200020002d00c80141016a22013a00c8010240200141ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002101200041003b01c8010b20032d0007412471450d00200141ff01712201450d00200141c7014b0d01200020016a220120012d000020002d00c901733a000020002d00c80141016a41ff0171220141c8014f0d02200020016a220120012d00004104733a0000200020002d00a701418001733a00a7012000108a01200041003b01c8010b200341306a24000f0b200141c801419ca8c000103f000b200141c80141aca8c000103f000be61801037f230041f0016b22032400200341106a41126a410041b60110c1091a2003411e6a41002800b6a640360100200341002f00aca6403b0114200341002800a8a640360210200341002900aea640370116200341106a108a012000200341106a41c80110bf09220041003a00ca01200041003b01c801200041124100108f01024020002d00c801220441c7014b0d00200020046a220420042d000041cd00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c8014f0d010b200020046a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041f200733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041ec00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041e900733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041ee00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004120733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d000041f600733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004131733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d0000412e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220441a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441c7014b0d010b200020046a220420042d00004130733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b2003200236020c200041124100108f01024020002d00c801220441c8014f0d00200020046a220420042d000041e400733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c8014f0d010b2000200441ff01716a220420042d000041ef00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041ed00733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d0000412d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041f300733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000041e500733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b200041ca016a21052000200441ff01716a220420042d000041f000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010b200341123a00df01024020052d00004112460d00200341e0016a410c6a4109360200200341246a4102360200200341106a410c6a4102360200200341186a41b4a7c00036020020034102360214200341a4a7c000360210200341093602e401200320053602e001200341206a200341e0016a3602002003200341df016a3602e8012005200341df016a200341106a41f4a7c000108e01000b0240200441ff0171220541c7014b0d00200020056a220420042d000020032d000c733a0000200020002d00c80141016a22043a00c80102400240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200441ff017141c8014f0d010b2000200441ff01716a220420042d000020032d000d733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000e733a0000200020002d00c80141016a22043a00c80102400240200441ff0171220541a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010c010b200541c7014b0d010b2000200441ff01716a220420042d000020032d000f733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b200041024100108f01024002402002450d0020002d00c80121040340200441ff0171220441c7014b0d02200020046a220420042d000020012d0000733a0000200020002d00c80141016a22043a00c8010240200441ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002104200041003b01c8010b200141016a21012002417f6a22020d000b0b200341f0016a24000f0b200441c80141bca6c000103f000b200441ff017141c80141bca6c000103f000b200441ff017141c80141bca6c000103f000b200441c80141bca6c000103f000b960801027f230041306b2205240020052004360200200041124100108f01024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c030b200141c801490d020c030b200641c80141bca6c000103f000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41b4a7c0003602002005410236020c200541a4a7c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a41f4a7c000108e01000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b200041024100108f01024002402004450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020032d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010b200341016a21032004417f6a22040d000b0b200541306a24000f0b200641c80141bca6c000103f000b200641ff017141c80141bca6c000103f000be00e01027f230041c0006b220424002004200337030820044108360210200041124100108f01024002400240024002402002450d0020002d00c80121050340200541ff0171220541c7014b0d02200020056a220520052d000020012d0000733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010b200141016a21012002417f6a22020d000b0b200441123a001720002d00ca014112470d0120002d00c801220541c7014b0d03200020056a220520052d000020042d0010733a0000200020002d00c80141016a22053a00c8010240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c030b200141c801490d020c030b200541c80141bca6c000103f000b200441306a410c6a41093602002004412c6a4102360200200441186a410c6a4102360200200441206a41b4a7c0003602002004410236021c200441a4a7c000360218200441093602342004200041ca016a2200360230200441286a200441306a3602002004200441176a3602382000200441176a200441186a41f4a7c000108e01000b2000200541ff01716a220520052d000020042d0011733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0012733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d0013733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b200041024100108f01024020002d00c801220541c8014f0d00200020056a220520052d000020042d0008733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c8014f0d010b2000200541ff01716a220520052d000020042d0009733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000a733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000b733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000c733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000d733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000e733a0000200020002d00c80141016a22053a00c80102400240200541ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002105200041003b01c8010c010b200141c7014b0d010b2000200541ff01716a220520052d000020042d000f733a0000200020002d00c80141016a22053a00c8010240200541ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b200441c0006a24000f0b200541ff017141c80141bca6c000103f000b200541ff017141c80141bca6c000103f000bb80801027f230041306b2205240020052004360200200041124100108f01024002400240024002402002450d0020002d00c80121060340200641ff0171220641c7014b0d02200020066a220620062d000020012d0000733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010b200141016a21012002417f6a22020d000b0b200541123a000720002d00ca014112470d0120002d00c801220641c7014b0d03200020066a220620062d000020052d0000733a0000200020002d00c80141016a22063a00c8010240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c030b200141c801490d020c030b200641c80141bca6c000103f000b200541206a410c6a41093602002005411c6a4102360200200541086a410c6a4102360200200541106a41b4a7c0003602002005410236020c200541a4a7c000360208200541093602242005200041ca016a2200360220200541186a200541206a3602002005200541076a3602282000200541076a200541086a41f4a7c000108e01000b2000200641ff01716a220620062d000020052d0001733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0002733a0000200020002d00c80141016a22063a00c80102400240200641ff0171220141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010c010b200141c7014b0d010b2000200641ff01716a220620062d000020052d0003733a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a01200041003b01c8010b200041074100108f0102402004450d0020002d00c8012106024002400340200641ff0171220641c7014b0d012003200020066a2d00003a000020002d00c801220641c7014b0d02200020066a41003a0000200020002d00c80141016a22063a00c8010240200641ff017141a601470d00200020002d00a60120002d00c901733a00a601200020002d00a701418401733a00a7012000108a0141002106200041003b01c8010b200341016a21032004417f6a22040d000c030b0b200641c80141aca9c000103f000b200641c80141bca9c000103f000b200541306a24000f0b200641ff017141c80141bca6c000103f000b1c00200128021841c8fac900410f2001411c6a28020028020c1100000b810201057f0240024020012802042202450d002001280200210303402002418c016a210420022f018a012105410021010240034020052001460d0141f2b0c0002004410810c2092206450d04200141016a2101200441086a21042006417f4a0d000b2001417f6a21050b2003450d012003417f6a2103200220054102746a41e4016a28020021020c000b0b200041003602042000410c6a4128360200200041086a41fab0c000360200200041013602000f0b024020022001410c6c6a2201410c6a2802004108490d00200041086a200141046a280200290000370300200041003602000f0b20004201370300200041086a41a2b1c000ad42808080809005843702000b1c00200128021841acb4c000410b2001411c6a28020028020c1100000b1c00200128021841b7b4c00041052001411c6a28020028020c1100000b800201047f230041206b2202240002400240200041046a280200200041086a2802002203460d00200028020021040c010b0240200341016a22042003490d00200341017422052004200520044b1b22044108200441084b1b21040240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220044101200241106a104e200241086a2802002103024020022802004101460d00200020022802042204360200200041046a2003360200200041086a28020021030c020b2003450d001039000b103b000b200420036a20013a0000200041086a2200200028020041016a360200200241206a24000b950301057f230041106b2202240020024100360208200242013703002001280200210320012802082204200210800102402004450d0020032004410c6c6a2105034020032802002104200341086a28020022062002108001200220042006107e2003410c6a22032005470d000b0b200128020c2103200141146a2802002204200210800102402004450d00200320044104746a210503402002200328020036020c20022002410c6a4104107e200341046a28020021042003410c6a28020022062002108001200220042006107e200341106a22032005470d000b0b02400240200128021822030d00200241003a000c20022002410c6a4101107e0c010b200241013a000c20022002410c6a4101107e200141206a28020022042002108001200220032004107e0b200128022421032001412c6a28020022042002108001200220032004107e2002200128023036020c20022002410c6a4104107e2002200128023436020c20022002410c6a4104107e2000200228020022032002280208109a0102402002280204450d00200310310b200241106a24000b4c0020002002ad4220862001ad8410102201290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a290000370000200110310bbe0101017f41012101024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000413f710e2416150001020304051615060708090a16150b0c0d0e16150f101116151213161514161516160b41030f0b41040f0b41050f0b41060f0b41070f0b41080f0b41030f0b41040f0b41050f0b41060f0b41070f0b41030f0b41040f0b41050f0b41060f0b41030f0b41040f0b41050f0b41030f0b41040f0b41030f0b410221010b20010b0e002000280200350200200110530bd20302077f017e230041d0006b22032400024002402002450d002000200028020c220441016a20027036020c200341086a41206a2202200141206a290200370300200341086a41186a2205200141186a290200370300200341086a41106a2206200141106a290200370300200341086a41086a2207200141086a290200370300200320012902003703080240024020002802082201200041046a280200470d00200141016a22082001490d03200141017422092008200920084b1b22084104200841044b1bad422c7e220a422088a7454102742108200aa721090240024020010d00200341003602400c010b200341c8006a410436020020032001412c6c360244200320002802003602400b200341306a20092008200341c0006a104e200341386a280200210120032802304101460d0120002003280234360200200041046a2001412c6e360200200028020821010b20002802002001412c6c6a2201200329030837020020012004360228200141206a2002290300370200200141186a2005290300370200200141106a2006290300370200200141086a20072903003702002000200028020841016a360208200341d0006a24000f0b2001450d011039000b41b0c4c000413941ecc4c000103c000b103b000bfe0101047f230041306b22022400200028020021030240024020012d0000410471450d002001411c6a2802002104200128021821052002412c6a4100360200200241f8fac9003602282002420137021c20024184c6c0003602184101210020052004200241186a10400d010b41002100024003402002200320006a36020c2002410a36021420022002410c6a36021020012802182104200128021c21052002410136022c20024101360224200241acc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820042005200241186a10400d01200041016a22004120470d000b410021000c010b410121000b200241306a240020000b970101037f23004180016b2202240020002802002d00002103410021000340200220006a41ff006a2003410f712204413072200441d7006a2004410a491b3a00002000417f6a21002003410476410f7122030d000b024020004180016a2203418101490d00200341800141bc89c0001061000b20014181c6c0004102200220006a4180016a410020006b1056210020024180016a240020000bdb0401057f230041306b220224002001411c6a2802002103200128021821042002412c6a22054100360200200241f8fac9003602282002420137021c20024184c6c00036021841012106024020042003200241186a10400d002002200036020c2002410a36021420022002410c6a36021020012802182103200128021c21044101210620054101360200200241246a4101360200200241acc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820032004200241186a10400d002002200041016a36020c2002410a36021420022002410c6a36021020012802182103200128021c21042002410136022c20024101360224200241acc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820032004200241186a10400d00200128021c2103200128021821042002412c6a22054100360200200241f8fac9003602282002420137021c200241ccc6c0003602184101210620042003200241186a10400d0020022000411e6a36020c2002410a36021420022002410c6a36021020012802182103200128021c21044101210620054101360200200241246a4101360200200241acc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820032004200241186a10400d0020022000411f6a36020c2002410a36021420022002410c6a36021020012802182103200128021c21012002410136022c20024101360224200241acc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820032001200241186a10400d00410021060b200241306a240020060bcc0403027f017e077f230041d00b6b2203240002400240024002400240024002402002200128020028020441e8036e2204200420024b1bad42e8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a2207360204200441e8036e210802400240200720012802084b0d0020020d01410021020c070b200041003602000c030b200341d8076a41017221094100210a41002104410021070340200341d8076a200110a20120032d00d807210b200341f1036a200941e70310bf091a200b410b460d022003410a6a200341f1036a41e70310bf091a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42e8037e2205422088a74541037421082005a7210c0240024020070d00200341003602d8070c010b200341083602e007200320043602dc07200320063602d8070b200341c00b6a200c2008200341d8076a104e20032802c80b210820032802c00b4101460d0120032802c40b2106200841e8036e21080b200620046a220c200b3a0000200c41016a2003410a6a41e70310bf091a200a41026a210a200441e8036a21042002200741016a2207460d060c010b0b20080d030b103b000b200041003602002007450d00200621070340200710a301200741e8036a2107200441987c6a22040d000b0b2008450d03200841e8036c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200236020020012007417f6a3602040b200341d00b6a24000bd91a03057f027e017f230041f00f6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0b0102030405060708090a0c0b0b2000410b3a00000c1f0b200241a0086a200110a80120022802a0082204450d10200241a8086a280200210320022802a40821052002200110ab01024002402002280200450d00200241003602a0080c010b200241a0086a2001200228020410ac0120022802a0080d1e0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1e200541f8036c450d1e200410310c1e0b200241a0086a200110a80120022802a0082204450d0e200241a8086a280200210320022802a4082105200241086a200110ab01024002402002280208450d00200241003602a0080c010b200241a0086a2001200228020c10ac0120022802a0080d1c0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1d200541f8036c450d1d200410310c1d0b200241a0086a200110a80120022802a0082204450d0c200241a8086a280200210320022802a4082105200241106a200110ab01024002402002280210450d00200241003602a0080c010b200241a0086a2001200228021410ac0120022802a0080d1a0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1c200541f8036c450d1c200410310c1c0b200241186a200110ae012002290318a70d0e0240200128020022032802042204450d0020022903202107200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241a0086a200110a80120022802a0082201450d0020022902a4082108200041033a0000200020022f00d8043b0001200041106a2007370300200041086a2008370000200041046a2001360000200041036a200241da046a2d00003a0000200041186a200241880c6a41d00310bf091a0c1c0b2000410b3a00000c1b0b200241880c6a200110a80120022802880c2204450d09200241880c6a41086a2802002103200228028c0c2105200241880c6a200110a901024020022903880c4209510d00200241a0086a200241880c6a41c80310bf091a200041043a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a200241a0086a41c80310bf091a200041e0036a200241d8046a41086a290300370300200041d8036a20022903d8043703000c1b0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1a200541f8036c450d1a200410310c1a0b200241a0086a200110a80120022802a0082204450d0d200241a8086a280200210320022802a4082105200241a0086a200110a90120022903a0084209510d06200241d8046a200241a0086a41c80310bf091a200241286a200110ab01024002402002280228450d00200241003602a0080c010b200241a0086a2001200228022c10ac0120022802a0080d160b2000410b3a0000200241d8046a10ad010c070b200128020022032802042204450d0d200328020022052d0000210620032004417f6a3602042003200541016a3602004100210402400240024020060e03020001100b410121040c010b410221040b02400240024002402001280200220328020422054108490d002003280200220629000021072003200541786a3602042003200641086a360200200241306a200110ab0120022802300d0320012802002205280204220620022802342203490d032003417f4c0d120240024020030d00410121090c010b200310352209450d182001280200220528020421060b20062003490d0220092005280200200310bf0921012005280204220620034f0d0120032006419cb4c0001061000b2000410b3a00000c1b0b2005200620036b3602042005200528020020036a3602002001450d01200241d8046a41026a200241a0086a41026a2d000022053a0000200220022f00a00822063b01d804200020043a0001200041063a0000200041106a41003a0000200041086a2003ad2208422086200884370100200041046a2001360100200041026a20022f0188013b0100200041116a20063b0000200041136a20053a0000200041186a2007370300200041206a200241880c6a41c80310bf091a0c1a0b200910310b2000410b3a00000c180b200241c8006a200110ab0120022802480d0e200228024c2103200241c0006a200110ab0120022802400d0f20022802442104200241386a200110ab01024020022802380d00200228023c2101200041073a0000200020022f00a0083b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a2086a2d00003a0000200041106a200241880c6a41d80310bf091a0c180b2000410b3a00000c170b200241d0006a200110ab01024020022802500d0020022802542101200041083a0000200020022f00a0083b0001200041046a2001360200200041036a200241a2086a2d00003a0000200041086a200241880c6a41e00310bf091a0c170b2000410b3a00000c160b200241e8006a200110ab0120022802680d0e200228026c2103200241e0006a200110ab0120022802600d0f20022802642104200241d8006a200110ab01024020022802580d00200228025c2101200041093a0000200020022f00a0083b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a2086a2d00003a0000200041106a200241880c6a41d80310bf091a0c160b2000410b3a00000c150b2000410b3a00000c140b200241880c6a200110a9010240024020022903880c4209510d00200241d8046a200241880c6a41c80310bf091a2001200128020441016a2203360204200320012802084b0d01200241880c6a200110a20120022d00880c2103200241a0086a200241880c6a41017241e70310bf091a2003410b460d01200241880c6a200241a0086a41e70310bf091a41e803102f2204450d10200420033a0000200441016a200241880c6a41e70310bf091a20012001280204417f6a36020420024188016a200241d8046a41c80310bf091a2000410a3a0000200020022f00d5043b0001200041036a200241d7046a2d00003a0000200041046a2004360200200041086a20024188016a41c80310bf091a200041e0036a20024180016a290300370300200041d8036a200241f0006a41086a290300370300200041d0036a20022903703703000c150b2000410b3a00000c140b2000410b3a0000200241d8046a10ad010c130b2000410b3a00000b02402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d11200541f8036c450d11200410310c110b2000410b3a00000c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b103b000b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b1039000b20024188016a41086a2201200241a0086a41086a280200360200200220022903a00837038801200241880c6a41046a200241d8046a41c80310bf091a200041053a0000200020022f00703b0001200041036a200241f2006a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a200229038801370300200041186a20012802003602002000411c6a200241880c6a41cc0310bf091a0c030b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041023a0000200020022f0088013b0001200041036a20024188016a41026a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0c020b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041013a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0c010b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041003a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0b200241f00f6a24000b820801027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0620024198046c450d06200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0420024198046c450d04200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041086a280200450d00200041046a28020010310b0f0b200041086a10ad01200041046a220228020010a301200228020010310bcc0403027f017e077f230041b0176b2203240002400240024002400240024002402002200128020028020441e0076e2204200420024b1bad42e0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a2207360204200441e0076e210802400240200720012802084b0d0020020d01410021020c070b200041003602000c030b200341c00f6a41017221094100210a41002104410021070340200341c00f6a200110a50120032d00c00f210b200341e1076a200941df0710bf091a200b410b460d02200341026a200341e1076a41df0710bf091a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42e0077e2205422088a74541037421082005a7210c0240024020070d00200341003602c00f0c010b200341083602c80f200320043602c40f200320063602c00f0b200341a0176a200c2008200341c00f6a104e20032802a817210820032802a0174101460d0120032802a4172106200841e0076e21080b200620046a220c200b3a0000200c41016a200341026a41df0710bf091a200a41026a210a200441e0076a21042002200741016a2207460d060c010b0b20080d030b103b000b200041003602002007450d00200621070340200710a601200741e0076a2107200441a0786a22040d000b0b2008450d03200841e0076c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200236020020012007417f6a3602040b200341b0176a24000b9d1a03057f027e017f230041e01b6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0b0102030405060708090a0c0b0b2000410b3a00000c1f0b200241a00c6a200110a80120022802a00c2204450d10200241a80c6a280200210320022802a40c2105200241086a200110ab01024002402002280208450d00200241003602a00c0c010b200241a00c6a2001200228020c10a70120022802a00c0d1e0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1e200541f8036c450d1e200410310c1e0b200241a00c6a200110a80120022802a00c2204450d0e200241a80c6a280200210320022802a40c2105200241106a200110ab01024002402002280210450d00200241003602a00c0c010b200241a00c6a2001200228021410a70120022802a00c0d1c0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1d200541f8036c450d1d200410310c1d0b200241a00c6a200110a80120022802a00c2204450d0c200241a80c6a280200210320022802a40c2105200241186a200110ab01024002402002280218450d00200241003602a00c0c010b200241a00c6a2001200228021c10a70120022802a00c0d1a0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1c200541f8036c450d1c200410310c1c0b200241206a200110ae012002290320a70d0e0240200128020022032802042204450d0020022903282107200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241a00c6a200110a80120022802a00c2201450d0020022902a40c2108200041033a0000200020022f00783b0001200041106a2007370300200041086a2008370000200041046a2001360000200041036a200241fa006a2d00003a0000200041186a20024180146a41c80710bf091a0c1c0b2000410b3a00000c1b0b200241a00c6a200110a80120022802a00c2204450d09200241a00c6a41086a280200210320022802a40c2105200241a00c6a200110a901024020022903a00c4209510d00200241f8006a200241a00c6a41c80310bf091a200041043a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a200241f8006a41c80310bf091a200041d8036a20024180146a41880410bf091a0c1b0b2000410b3a000002402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d1a200541f8036c450d1a200410310c1a0b200241f8006a200110a80120022802782204450d0d20024180016a2802002103200228027c2105200241f8006a200110a90120022903784209510d06200241d8086a200241f8006a41c80310bf091a200241306a200110ab01024002402002280230450d00200241003602780c010b200241f8006a2001200228023410ac0120022802780d160b2000410b3a0000200241d8086a10ad010c070b200128020022032802042204450d0d200328020022052d0000210620032004417f6a3602042003200541016a3602004100210402400240024020060e03020001100b410121040c010b410221040b02400240024002402001280200220328020422054108490d002003280200220629000021072003200541786a3602042003200641086a360200200241386a200110ab0120022802380d03200128020022052802042206200228023c2203490d032003417f4c0d120240024020030d00410121090c010b200310352209450d182001280200220528020421060b20062003490d0220092005280200200310bf0921012005280204220620034f0d0120032006419cb4c0001061000b2000410b3a00000c1b0b2005200620036b3602042005200528020020036a3602002001450d01200241a00c6a20024180146a41bc0710bf091a200020043a0001200041063a0000200041026a2002280178360100200041066a200241fc006a2f01003b0100200041106a4123360200200041086a2007370300200041146a200241a00c6a41bc0710bf091a200041d4076a2003ad2207422086200784370200200041d0076a20013602000c1a0b200910310b2000410b3a00000c180b200241d0006a200110ab0120022802500d0e20022802542103200241c8006a200110ab0120022802480d0f200228024c2104200241c0006a200110ab01024020022802400d0020022802442101200041073a0000200020022f00a00c3b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a20c6a2d00003a0000200041106a20024180146a41d00710bf091a0c180b2000410b3a00000c170b200241d8006a200110ab01024020022802580d00200228025c2101200041083a0000200020022f00a00c3b0001200041046a2001360200200041036a200241a20c6a2d00003a0000200041086a20024180146a41d80710bf091a0c170b2000410b3a00000c160b200241f0006a200110ab0120022802700d0e20022802742103200241e8006a200110ab0120022802680d0f200228026c2104200241e0006a200110ab01024020022802600d0020022802642101200041093a0000200020022f00a00c3b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a20c6a2d00003a0000200041106a20024180146a41d00710bf091a0c160b2000410b3a00000c150b2000410b3a00000c140b20024180146a200110a901024002402002290380144209510d00200241d8086a20024180146a41c80310bf091a2001200128020441016a2203360204200320012802084b0d0120024180146a200110a50120022d0080142103200241a00c6a20024180146a41017241df0710bf091a2003410b460d0120024180146a200241a00c6a41df0710bf091a41e007102f2204450d10200420033a0000200441016a20024180146a41df0710bf091a20012001280204417f6a36020420024188056a200241d8086a41c80310bf091a2000410a3a0000200020022f00d5083b0001200041036a200241d7086a2d00003a0000200041046a2004360200200041086a20024188056a41c80310bf091a200041d0036a200241f8006a41900410bf091a0c150b2000410b3a00000c140b2000410b3a0000200241d8086a10ad010c130b2000410b3a00000b02402003450d00200341f8036c2103200421010340200110aa01200141f8036a2101200341887c6a22030d000b0b2005450d11200541f8036c450d11200410310c110b2000410b3a00000c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b103b000b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b1039000b20024188056a41086a2201200241f8006a41086a2802003602002002200229037837038805200241a00c6a41046a200241d8086a41c80310bf091a200041053a0000200020022f00d5083b0001200041036a200241d7086a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a200229038805370300200041186a20012802003602002000411c6a200241a00c6a41cc0310bf091a200041e8036a20024180146a41f80310bf091a0c030b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041023a0000200020022f00d8083b0001200041036a200241d8086a41026a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0c020b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041013a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0c010b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041003a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2003360000200041086a2005360000200041046a2004360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0b200241e01b6a24000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d00200210b3010b0f0b200041086a10ad01200041046a220228020010a601200228020010310bf11807027f017e0c7f017e047f037e017f230041f0176b22032400024002400240024002400240200220012802002802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d00024002400240024020040d00410821060c010b2004102f2206450d010b2001200128020441016a22073602042003410036024020032006360238200320044198046e220436023c200720012802084b0d052002450d04200341a0086a41bc036a2108200341f8136a410c6a2109200341f8136a41046a210a200341a0086a41cc036a210b200341a0086a41c4036a210c20034180106a410472210d20034180106a410c6a210e41002106034002400240024002400240024002400240200128020022042802042207450d002004280200220f2d0000211020042007417f6a3602042004200f41016a36020002400240024002400240024002400240024020100e080001020304050607090b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a4100210f0c0f0b200341f8136a200110a80120032802f8132210450d09200328028014210720032802fc132111200341f8136a200110a901024020032903f81322124209510d002003280280142113200341a0086a200941bc0310bf091a2008200329038010370200200841086a20034180106a41086a290300370200200841106a20034180106a41106a290300370200200841186a20034180106a41186a290300370200200841206a20034180106a41206a290300370200200841286a20034180106a41286a290300370200200320032f01b80c3b018e0c4101210f41002104201021142011211520072116201221170c0e0b02402007450d00200741f8036c2107201021040340200410aa01200441f8036a2104200741887c6a22070d000b0b2011450d09201141f8036c450d09201010310c090b20034180106a200110a8012003280280102210450d082003280288102107200328028410211120034180106a200110a90102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341086a200110ab01024002402003280208450d0020034100360280100c010b20034180106a2001200328020c10ac012003280280100d0d0b200341b80c6a10ad010b02402007450d00200741f8036c2107201021040340200410aa01200441f8036a2104200741887c6a22070d000b0b2011450d08201141f8036c450d08201010310c080b20034180106a200110a8012003280280102210450d072003280288102107200328028410211120034180106a200110a8010240200328028010450d00200320032f01b80c3b018e0c20032802881021132003290380102117200341a0086a200341f8136a41ec0310bf091a4103210f410021042010211420112115200721160c0c0b02402007450d00200741f8036c2107201021040340200410aa01200441f8036a2104200741887c6a22070d000b0b2011450d07201141f8036c450d07201010310c070b20034180106a200110a8012003280280102210450d062003280288102107200328028410211120034180106a200110a90102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341106a200110ab01024002402003280210450d0020034100360280100c010b20034180106a2001200328021410ac012003280280100d0a0b200341b80c6a10ad010b02402007450d00200741f8036c2107201021040340200410aa01200441f8036a2104200741887c6a22070d000b0b2011450d06201141f8036c450d06201010310c060b20034180106a200110a8012003280280102210450d052003280288102107200328028410211120034180106a200110a90102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341186a200110ab01024002402003280218450d0020034100360280100c010b20034180106a2001200328021c10ac012003280280100d080b200341b80c6a10ad010b02402007450d00200741f8036c2107201021040340200410aa01200441f8036a2104200741887c6a22070d000b0b2011450d05201141f8036c450d05201010310c050b200341206a200110ae012003290320a70d0420032903282112200341f8136a200110a90120032903f8134209510d0420034180106a200341f8136a41c80310bf091a200341f8136a200110a80120032802f8132207450d01200328028014211620032802fc1321152003280280102113200341a0086a200d41c40310bf091a200c20032903b80c370200200c41086a200341b80c6a41086a290300370200200c41106a200341b80c6a41106a290300370200200c41186a200341b80c6a41186a290300370200200c41206a200341b80c6a41206a290300370200200320032f01900c3b018e0c4106210f4100210420072114201221170c080b200341f8136a200110af0120032802f813410c460d0320034180106a200341f8136a41f80310bf091a2001280200220428020422074108490d022004280200220f29000021122004200741786a3602042004200f41086a3602002001280200220428020422074108490d022004280200220f29000021182004200741786a3602042004200f41086a360200200128020022042802042207450d022004280200220f2d0000211020042007417f6a3602042004200f41016a360200410021070240024020100e020100040b410121070b200341306a200110ab0102402003280230450d00200341003602f8130c030b200341f8136a2001200328023410a40120032802f8132210450d02200328028014211620032802fc13211520032903801021172003280288102113200341a0086a200e41ec0310bf091a200320032f01b80c3b018e0c4107210f410021042010211420182105201221192007211a0c070b20034180106a10ad010c020b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a0c090b20034180106a10aa010b4108210f410121040c030b20032802881021132003290380102117200a200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200b41186a200341900c6a41186a290300370200200b41106a200341900c6a41106a290300370200200b41086a200341900c6a41086a290300370200200b20032903900c3702004105210f410021042010211420112115200721160c020b20032802881021132003290380102117200a200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200b41186a200341900c6a41186a290300370200200b41106a200341900c6a41106a290300370200200b41086a200341900c6a41086a290300370200200b20032903900c3702004104210f410021042010211420112115200721160c010b20032802881021132003290380102117200a200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200b41186a200341900c6a41186a290300370200200b41106a200341900c6a41106a290300370200200b41086a200341900c6a41086a290300370200200b20032903900c3702004102210f410021042010211420112115200721160b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a20040d030b200320032f019e083b01b004200341c4006a200341b2046a41ec0310bf091a0240024020032802402207200328023c470d00200741016a22042007490d05200741017422102004201020044b1b22044104200441044b1bad4298047e2212422088a74541037421042012a721100240024020070d00200341003602f8130c010b2003410836028014200320032802383602f813200320074198046c3602fc130b20034180106a20102004200341f8136a104e20032802881021042003280280104101460d012003200328028410360238200320044198046e36023c0b200328023820074198046c6a2204201a3a00012004200f3a000020042013360018200420173700102004201636000c2004201536000820042014360004200420032f01b0043b00022004411c6a200341c4006a41ec0310bf091a200420053700900420042019370088042003200741016a360240200641016a22062002460d050c010b0b2004450d020b1039000b20004100360200200328023c21040c040b103b000b200128020421070b2000200329033837020020012007417f6a360204200041086a200341386a41086a2802003602000c020b200041003602000b200341386a10b0012004450d0020044198046c450d00200328023810310b200341f0176a24000bef0403037f017e077f230041800c6b22022400200241086a200110ab01024002402002280208450d00200041003602000c010b024002400240024002400240200228020c2203200128020028020441f8036e2204200420034b1bad42f8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a2207360204200441f8036e210802400240200720012802084b0d0020030d01410021030c070b200041003602000c030b200241f8076a41047221094100210a41002104410021070340200241f8076a200110af0120022802f807210b20024184046a200941f40310bf091a200b410c460d02200241106a20024184046a41f40310bf091a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42f8037e2205422088a74541037421082005a7210c0240024020070d00200241003602f8070c010b2002410836028008200220043602fc07200220063602f8070b200241f00b6a200c2008200241f8076a104e20022802f80b210820022802f00b4101460d0120022802f40b2106200841f8036e21080b200620046a220c200b360200200c41046a200241106a41f40310bf091a200a41026a210a200441f8036a21042003200741016a2207460d060c010b0b20080d030b103b000b200041003602002007450d00200621070340200710aa01200741f8036a2107200441887c6a22040d000b0b2008450d03200841f8036c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b200241800c6a24000b967503057f077e2c7f230041d0096b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0901020304050607080a090b200042093703000c3b0b200042003703000c3a0b20024198096a200110b304024020022d009809410a460d00200241e0086a41306a20024198096a41306a2903002207370300200241e0086a41286a20024198096a41286a2903002208370300200241e0086a41206a20024198096a41206a2903002209370300200241e0086a41186a20024198096a41186a290300220a370300200241e0086a41106a20024198096a41106a290300220b370300200241e0086a41086a20024198096a41086a290300220c3703002002200229039809220d3703e008200042013703002000200d370308200041106a200c370300200041186a200b370300200041206a200a370300200041286a2009370300200041306a2008370300200041386a2007370300200041c0006a200241880310bf091a0c3a0b200042093703000c390b20024198096a200110b30420022d009809410a460d11200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a2206290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b304024020022d009809410a460d00200241f0076a41306a22012004290300370300200241f0076a41286a22042006290300370300200241f0076a41206a2206200f290300370300200241f0076a41186a220f2011290300370300200241f0076a41106a22112013290300370300200241f0076a41086a22132015290300370300200241a8086a41086a22152014290300370300200241a8086a41106a22142012290300370300200241a8086a41186a22122010290300370300200241a8086a41206a2210200e290300370300200241a8086a41286a220e2005290300370300200241a8086a41306a2205200329030037030020022002290398093703f007200220022903e0083703a80820004202370300200020022903a808370308200041106a2015290300370300200041186a2014290300370300200041206a2012290300370300200041286a2010290300370300200041306a200e290300370300200041386a2005290300370300200041c0006a20022903f007370300200041c8006a2013290300370300200041d0006a2011290300370300200041d8006a200f290300370300200041e0006a2006290300370300200041e8006a2004290300370300200041f0006a2001290300370300200041f8006a200241d00210bf091a0c390b20004209370300200241e0086a10ca040c380b20024198096a200110b30420022d009809410a460d11200241a8086a41306a20024198096a41306a2203290300370300200241a8086a41286a20024198096a41286a2204290300370300200241a8086a41206a20024198096a41206a2205290300370300200241a8086a41186a20024198096a41186a2206290300370300200241a8086a41106a20024198096a41106a220e290300370300200241a8086a41086a20024198096a41086a220f29030037030020022002290398093703a80820024198096a200110b30420022d009809410a460d0e200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a2006290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f29030037030020022002290398093703e00820024198096a200110b304024020022d009809410a460d0020024180076a41306a220120024198096a41306a29030037030020024180076a41286a220320024198096a41286a29030037030020024180076a41206a220420024198096a41206a29030037030020024180076a41186a220520024198096a41186a29030037030020024180076a41106a220620024198096a41106a29030037030020024180076a41086a220e20024198096a41086a290300370300200241f0076a41086a220f200241a8086a41086a290300370300200241f0076a41106a2210200241a8086a41106a290300370300200241f0076a41186a2211200241a8086a41186a290300370300200241f0076a41206a2212200241a8086a41206a290300370300200241f0076a41286a2213200241a8086a41286a290300370300200241f0076a41306a2214200241a8086a41306a290300370300200220022903980937038007200220022903a8083703f007200241b8076a41306a2215200241e0086a41306a290300370300200241b8076a41286a2216200241e0086a41286a290300370300200241b8076a41206a2217200241e0086a41206a290300370300200241b8076a41186a2218200241e0086a41186a290300370300200241b8076a41106a2219200241e0086a41106a290300370300200241b8076a41086a221a200241e0086a41086a290300370300200220022903e0083703b80720004203370300200020022903f007370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a20022903b807370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a2001290300370300200041a0016a200329030037030020004198016a200429030037030020004190016a200529030037030020004188016a200629030037030020004180016a200e290300370300200041f8006a200229038007370300200041b0016a200241980210bf091a0c380b20004209370300200241e0086a10ca040c0f0b20024198096a200110b30420022d009809410a460d11200241f0076a41306a20024198096a41306a2203290300370300200241f0076a41286a20024198096a41286a2204290300370300200241f0076a41206a20024198096a41206a2205290300370300200241f0076a41186a20024198096a41186a2206290300370300200241f0076a41106a20024198096a41106a220e290300370300200241f0076a41086a20024198096a41086a220f29030037030020022002290398093703f00720024198096a200110b30420022d009809410a460d12200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a2006290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f29030037030020022002290398093703a80820024198096a200110b30420022d009809410a460d0b200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a2206290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b304024020022d009809410a460d0020024190066a41306a2201200429030037030020024190066a41286a2204200629030037030020024190066a41206a2206200f29030037030020024190066a41186a220f201129030037030020024190066a41106a2211201329030037030020024190066a41086a22132015290300370300200241b8076a41086a2215200241f0076a41086a290300370300200241b8076a41106a2216200241f0076a41106a290300370300200241b8076a41186a2217200241f0076a41186a290300370300200241b8076a41206a2218200241f0076a41206a290300370300200241b8076a41286a2219200241f0076a41286a290300370300200241b8076a41306a221a200241f0076a41306a290300370300200220022903980937039006200220022903f0073703b80720024180076a41306a221b200241a8086a41306a29030037030020024180076a41286a221c200241a8086a41286a29030037030020024180076a41206a221d200241a8086a41206a29030037030020024180076a41186a221e200241a8086a41186a29030037030020024180076a41106a221f200241a8086a41106a29030037030020024180076a41086a2220200241a8086a41086a290300370300200220022903a80837038007200241c8066a41306a22212003290300370300200241c8066a41286a22032005290300370300200241c8066a41206a2205200e290300370300200241c8066a41186a220e2010290300370300200241c8066a41106a22102012290300370300200241c8066a41086a22122014290300370300200220022903e0083703c80620004204370300200020022903b807370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a200229038007370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a200329030037030020004198016a200529030037030020004190016a200e29030037030020004188016a201029030037030020004180016a2012290300370300200041f8006a20022903c806370300200041e0016a2001290300370300200041d8016a2004290300370300200041d0016a2006290300370300200041c8016a200f290300370300200041c0016a2011290300370300200041b8016a2013290300370300200041b0016a200229039006370300200041e8016a200241e00110bf091a0c370b20004209370300200241e0086a10ca040c0c0b20024198096a200110b30420022d009809410a460d12200241b8076a41306a20024198096a41306a2203290300370300200241b8076a41286a20024198096a41286a2204290300370300200241b8076a41206a20024198096a41206a2205290300370300200241b8076a41186a20024198096a41186a2206290300370300200241b8076a41106a20024198096a41106a220e290300370300200241b8076a41086a20024198096a41086a220f29030037030020022002290398093703b80720024198096a200110b30420022d009809410a460d13200241f0076a41306a2003290300370300200241f0076a41286a2004290300370300200241f0076a41206a2005290300370300200241f0076a41186a2006290300370300200241f0076a41106a200e290300370300200241f0076a41086a200f29030037030020022002290398093703f00720024198096a200110b30420022d009809410a460d14200241a8086a41306a20024198096a41306a2203290300370300200241a8086a41286a20024198096a41286a2204290300370300200241a8086a41206a20024198096a41206a2205290300370300200241a8086a41186a20024198096a41186a2206290300370300200241a8086a41106a20024198096a41106a220e290300370300200241a8086a41086a20024198096a41086a220f29030037030020022002290398093703a80820024198096a200110b30420022d009809410a460d08200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a2006290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f29030037030020022002290398093703e00820024198096a200110b304024020022d009809410a460d00200241a0056a41306a220120024198096a41306a290300370300200241a0056a41286a220320024198096a41286a290300370300200241a0056a41206a220420024198096a41206a290300370300200241a0056a41186a220520024198096a41186a290300370300200241a0056a41106a220620024198096a41106a290300370300200241a0056a41086a220e20024198096a41086a29030037030020024180076a41086a220f200241b8076a41086a29030037030020024180076a41106a2210200241b8076a41106a29030037030020024180076a41186a2211200241b8076a41186a29030037030020024180076a41206a2212200241b8076a41206a29030037030020024180076a41286a2213200241b8076a41286a29030037030020024180076a41306a2214200241b8076a41306a29030037030020022002290398093703a005200220022903b80737038007200241c8066a41306a2215200241f0076a41306a290300370300200241c8066a41286a2216200241f0076a41286a290300370300200241c8066a41206a2217200241f0076a41206a290300370300200241c8066a41186a2218200241f0076a41186a290300370300200241c8066a41106a2219200241f0076a41106a290300370300200241c8066a41086a221a200241f0076a41086a290300370300200220022903f0073703c80620024190066a41306a221b200241a8086a41306a29030037030020024190066a41286a221c200241a8086a41286a29030037030020024190066a41206a221d200241a8086a41206a29030037030020024190066a41186a221e200241a8086a41186a29030037030020024190066a41106a221f200241a8086a41106a29030037030020024190066a41086a2220200241a8086a41086a290300370300200220022903a80837039006200241d8056a41306a2221200241e0086a41306a290300370300200241d8056a41286a2222200241e0086a41286a290300370300200241d8056a41206a2223200241e0086a41206a290300370300200241d8056a41186a2224200241e0086a41186a290300370300200241d8056a41106a2225200241e0086a41106a290300370300200241d8056a41086a2226200241e0086a41086a290300370300200220022903e0083703d805200042053703002000200229038007370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a20022903c806370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a201b290300370300200041a0016a201c29030037030020004198016a201d29030037030020004190016a201e29030037030020004188016a201f29030037030020004180016a2020290300370300200041f8006a200229039006370300200041e0016a2021290300370300200041d8016a2022290300370300200041d0016a2023290300370300200041c8016a2024290300370300200041c0016a2025290300370300200041b8016a2026290300370300200041b0016a20022903d80537030020004198026a200129030037030020004190026a200329030037030020004188026a200429030037030020004180026a2005290300370300200041f8016a2006290300370300200041f0016a200e290300370300200041e8016a20022903a005370300200041a0026a200241a80110bf091a0c360b20004209370300200241e0086a10ca040c090b20024198096a200110b30420022d009809410a460d1420024180076a41306a20024198096a41306a220329030037030020024180076a41286a20024198096a41286a220429030037030020024180076a41206a20024198096a41206a220529030037030020024180076a41186a20024198096a41186a220629030037030020024180076a41106a20024198096a41106a220e29030037030020024180076a41086a20024198096a41086a220f29030037030020022002290398093703800720024198096a200110b30420022d009809410a460d15200241b8076a41306a2003290300370300200241b8076a41286a2004290300370300200241b8076a41206a2005290300370300200241b8076a41186a2006290300370300200241b8076a41106a200e290300370300200241b8076a41086a200f29030037030020022002290398093703b80720024198096a200110b30420022d009809410a460d16200241f0076a41306a20024198096a41306a2203290300370300200241f0076a41286a20024198096a41286a2204290300370300200241f0076a41206a20024198096a41206a2205290300370300200241f0076a41186a20024198096a41186a2206290300370300200241f0076a41106a20024198096a41106a220e290300370300200241f0076a41086a20024198096a41086a220f29030037030020022002290398093703f00720024198096a200110b30420022d009809410a460d17200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a2006290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f29030037030020022002290398093703a80820024198096a200110b30420022d009809410a460d05200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a2206290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b304024020022d009809410a460d00200241b0046a41306a22012004290300370300200241b0046a41286a22042006290300370300200241b0046a41206a2206200f290300370300200241b0046a41186a220f2011290300370300200241b0046a41106a22112013290300370300200241b0046a41086a22132015290300370300200241c8066a41086a221520024180076a41086a290300370300200241c8066a41106a221620024180076a41106a290300370300200241c8066a41186a221720024180076a41186a290300370300200241c8066a41206a221820024180076a41206a290300370300200241c8066a41286a221920024180076a41286a290300370300200241c8066a41306a221a20024180076a41306a29030037030020022002290398093703b00420022002290380073703c80620024190066a41306a221b200241b8076a41306a29030037030020024190066a41286a221c200241b8076a41286a29030037030020024190066a41206a221d200241b8076a41206a29030037030020024190066a41186a221e200241b8076a41186a29030037030020024190066a41106a221f200241b8076a41106a29030037030020024190066a41086a2220200241b8076a41086a290300370300200220022903b80737039006200241d8056a41306a2221200241f0076a41306a290300370300200241d8056a41286a2222200241f0076a41286a290300370300200241d8056a41206a2223200241f0076a41206a290300370300200241d8056a41186a2224200241f0076a41186a290300370300200241d8056a41106a2225200241f0076a41106a290300370300200241d8056a41086a2226200241f0076a41086a290300370300200220022903f0073703d805200241a0056a41306a2227200241a8086a41306a290300370300200241a0056a41286a2228200241a8086a41286a290300370300200241a0056a41206a2229200241a8086a41206a290300370300200241a0056a41186a222a200241a8086a41186a290300370300200241a0056a41106a222b200241a8086a41106a290300370300200241a0056a41086a222c200241a8086a41086a290300370300200220022903a8083703a005200241e8046a41306a222d2003290300370300200241e8046a41286a22032005290300370300200241e8046a41206a2205200e290300370300200241e8046a41186a220e2010290300370300200241e8046a41106a22102012290300370300200241e8046a41086a22122014290300370300200220022903e0083703e80420004206370300200020022903c806370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a200229039006370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a202229030037030020004198016a202329030037030020004190016a202429030037030020004188016a202529030037030020004180016a2026290300370300200041f8006a20022903d805370300200041e0016a2027290300370300200041d8016a2028290300370300200041d0016a2029290300370300200041c8016a202a290300370300200041c0016a202b290300370300200041b8016a202c290300370300200041b0016a20022903a00537030020004198026a202d29030037030020004190026a200329030037030020004188026a200529030037030020004180026a200e290300370300200041f8016a2010290300370300200041f0016a2012290300370300200041e8016a20022903e804370300200041d0026a2001290300370300200041c8026a2004290300370300200041c0026a2006290300370300200041b8026a200f290300370300200041b0026a2011290300370300200041a8026a2013290300370300200041a0026a20022903b004370300200041d8026a200241f00010bf091a0c350b20004209370300200241e0086a10ca040c060b2002200110b30420022d0000410a460d1720024180076a41306a200241306a220329030037030020024180076a41286a200241286a220429030037030020024180076a41206a200241206a220529030037030020024180076a41186a200241186a220629030037030020024180076a41106a200241106a220e29030037030020024180076a41086a200241086a220f29030037030020022002290300370380072002200110b30420022d0000410a460d18200241b8076a41306a2003290300370300200241b8076a41286a2004290300370300200241b8076a41206a2005290300370300200241b8076a41186a2006290300370300200241b8076a41106a200e290300370300200241b8076a41086a200f290300370300200220022903003703b8072002200110b30420022d0000410a460d19200241f0076a41306a200241306a2203290300370300200241f0076a41286a200241286a2204290300370300200241f0076a41206a200241206a2205290300370300200241f0076a41186a200241186a2206290300370300200241f0076a41106a200241106a220e290300370300200241f0076a41086a200241086a220f290300370300200220022903003703f0072002200110b30420022d0000410a460d1a200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a2006290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f290300370300200220022903003703a8082002200110b30420022d0000410a460d1b200241e0086a41306a200241306a2203290300370300200241e0086a41286a200241286a2204290300370300200241e0086a41206a200241206a2205290300370300200241e0086a41186a200241186a2206290300370300200241e0086a41106a200241106a220e290300370300200241e0086a41086a200241086a220f290300370300200220022903003703e0082002200110b30420022d0000410a460d0220024198096a41306a200329030037030020024198096a41286a200429030037030020024198096a41206a200529030037030020024198096a41186a200629030037030020024198096a41106a200e29030037030020024198096a41086a200f29030037030020022002290300370398092002200110b304024020022d0000410a460d00200241f8036a41306a2201200241306a290300370300200241f8036a41286a2203200241286a290300370300200241f8036a41206a2204200241206a290300370300200241f8036a41186a2205200241186a290300370300200241f8036a41106a2206200241106a290300370300200241f8036a41086a220e200241086a290300370300200241c8066a41086a220f20024180076a41086a290300370300200241c8066a41106a221020024180076a41106a290300370300200241c8066a41186a221120024180076a41186a290300370300200241c8066a41206a221220024180076a41206a290300370300200241c8066a41286a221320024180076a41286a290300370300200241c8066a41306a221420024180076a41306a290300370300200220022903003703f80320022002290380073703c80620024190066a41306a2215200241b8076a41306a29030037030020024190066a41286a2216200241b8076a41286a29030037030020024190066a41206a2217200241b8076a41206a29030037030020024190066a41186a2218200241b8076a41186a29030037030020024190066a41106a2219200241b8076a41106a29030037030020024190066a41086a221a200241b8076a41086a290300370300200220022903b80737039006200241d8056a41306a221b200241f0076a41306a290300370300200241d8056a41286a221c200241f0076a41286a290300370300200241d8056a41206a221d200241f0076a41206a290300370300200241d8056a41186a221e200241f0076a41186a290300370300200241d8056a41106a221f200241f0076a41106a290300370300200241d8056a41086a2220200241f0076a41086a290300370300200220022903f0073703d805200241a0056a41306a2221200241a8086a41306a290300370300200241a0056a41286a2222200241a8086a41286a290300370300200241a0056a41206a2223200241a8086a41206a290300370300200241a0056a41186a2224200241a8086a41186a290300370300200241a0056a41106a2225200241a8086a41106a290300370300200241a0056a41086a2226200241a8086a41086a290300370300200220022903a8083703a005200241e8046a41306a2227200241e0086a41306a290300370300200241e8046a41286a2228200241e0086a41286a290300370300200241e8046a41206a2229200241e0086a41206a290300370300200241e8046a41186a222a200241e0086a41186a290300370300200241e8046a41106a222b200241e0086a41106a290300370300200241e8046a41086a222c200241e0086a41086a290300370300200220022903e0083703e804200241b0046a41306a222d20024198096a41306a290300370300200241b0046a41286a222e20024198096a41286a290300370300200241b0046a41206a222f20024198096a41206a290300370300200241b0046a41186a223020024198096a41186a290300370300200241b0046a41106a223120024198096a41106a290300370300200241b0046a41086a223220024198096a41086a29030037030020022002290398093703b00420004207370300200020022903c806370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a200229039006370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a201b290300370300200041a0016a201c29030037030020004198016a201d29030037030020004190016a201e29030037030020004188016a201f29030037030020004180016a2020290300370300200041f8006a20022903d805370300200041e0016a2021290300370300200041d8016a2022290300370300200041d0016a2023290300370300200041c8016a2024290300370300200041c0016a2025290300370300200041b8016a2026290300370300200041b0016a20022903a00537030020004198026a202729030037030020004190026a202829030037030020004188026a202929030037030020004180026a202a290300370300200041f8016a202b290300370300200041f0016a202c290300370300200041e8016a20022903e804370300200041d0026a202d290300370300200041c8026a202e290300370300200041c0026a202f290300370300200041b8026a2030290300370300200041b0026a2031290300370300200041a8026a2032290300370300200041a0026a20022903b00437030020004188036a200129030037030020004180036a2003290300370300200041f8026a2004290300370300200041f0026a2005290300370300200041e8026a2006290300370300200041e0026a200e290300370300200041d8026a20022903f803370300200041c0036a200241c0036a41306a290300370300200041b8036a200241c0036a41286a290300370300200041b0036a200241c0036a41206a290300370300200041a8036a200241c0036a41186a290300370300200041a0036a200241c0036a41106a29030037030020004198036a200241c0036a41086a29030037030020004190036a20022903c0033703000c340b2000420937030020024198096a10ca040c030b200042093703000c320b2002200110b30420022d0000410a460d1a200241c8066a41306a200241306a2203290300370300200241c8066a41286a200241286a2204290300370300200241c8066a41206a200241206a2205290300370300200241c8066a41186a200241186a2206290300370300200241c8066a41106a200241106a220e290300370300200241c8066a41086a200241086a220f290300370300200220022903003703c8062002200110b30420022d0000410a460d1b20024180076a41306a200329030037030020024180076a41286a200429030037030020024180076a41206a200529030037030020024180076a41186a200629030037030020024180076a41106a200e29030037030020024180076a41086a200f29030037030020022002290300370380072002200110b30420022d0000410a460d1c200241b8076a41306a200241306a2203290300370300200241b8076a41286a200241286a2204290300370300200241b8076a41206a200241206a2205290300370300200241b8076a41186a200241186a2206290300370300200241b8076a41106a200241106a220e290300370300200241b8076a41086a200241086a220f290300370300200220022903003703b8072002200110b30420022d0000410a460d1d200241f0076a41306a2003290300370300200241f0076a41286a2004290300370300200241f0076a41206a2005290300370300200241f0076a41186a2006290300370300200241f0076a41106a200e290300370300200241f0076a41086a200f290300370300200220022903003703f0072002200110b30420022d0000410a460d1e200241a8086a41306a200241306a2203290300370300200241a8086a41286a200241286a2204290300370300200241a8086a41206a200241206a2205290300370300200241a8086a41186a200241186a2206290300370300200241a8086a41106a200241106a220e290300370300200241a8086a41086a200241086a220f290300370300200220022903003703a8082002200110b30420022d0000410a460d1f200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a2006290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f290300370300200220022903003703e0082002200110b30420022d0000410a460d2020024198096a41306a2203200241306a220429030037030020024198096a41286a2205200241286a220629030037030020024198096a41206a220e200241206a220f29030037030020024198096a41186a2210200241186a221129030037030020024198096a41106a2212200241106a221329030037030020024198096a41086a2214200241086a221529030037030020022002290300370398092002200110b304024020022d0000410a460d0020024188036a41306a2201200429030037030020024188036a41286a2204200629030037030020024188036a41206a2206200f29030037030020024188036a41186a220f201129030037030020024188036a41106a2211201329030037030020024188036a41086a2213201529030037030020024190066a41086a2215200241c8066a41086a29030037030020024190066a41106a2216200241c8066a41106a29030037030020024190066a41186a2217200241c8066a41186a29030037030020024190066a41206a2218200241c8066a41206a29030037030020024190066a41286a2219200241c8066a41286a29030037030020024190066a41306a221a200241c8066a41306a2903003703002002200229030037038803200220022903c80637039006200241d8056a41306a221b20024180076a41306a290300370300200241d8056a41286a221c20024180076a41286a290300370300200241d8056a41206a221d20024180076a41206a290300370300200241d8056a41186a221e20024180076a41186a290300370300200241d8056a41106a221f20024180076a41106a290300370300200241d8056a41086a222020024180076a41086a29030037030020022002290380073703d805200241a0056a41306a2221200241b8076a41306a290300370300200241a0056a41286a2222200241b8076a41286a290300370300200241a0056a41206a2223200241b8076a41206a290300370300200241a0056a41186a2224200241b8076a41186a290300370300200241a0056a41106a2225200241b8076a41106a290300370300200241a0056a41086a2226200241b8076a41086a290300370300200220022903b8073703a005200241e8046a41306a2227200241f0076a41306a290300370300200241e8046a41286a2228200241f0076a41286a290300370300200241e8046a41206a2229200241f0076a41206a290300370300200241e8046a41186a222a200241f0076a41186a290300370300200241e8046a41106a222b200241f0076a41106a290300370300200241e8046a41086a222c200241f0076a41086a290300370300200220022903f0073703e804200241b0046a41306a222d200241a8086a41306a290300370300200241b0046a41286a222e200241a8086a41286a290300370300200241b0046a41206a222f200241a8086a41206a290300370300200241b0046a41186a2230200241a8086a41186a290300370300200241b0046a41106a2231200241a8086a41106a290300370300200241b0046a41086a2232200241a8086a41086a290300370300200220022903a8083703b004200241f8036a41306a2233200241e0086a41306a290300370300200241f8036a41286a2234200241e0086a41286a290300370300200241f8036a41206a2235200241e0086a41206a290300370300200241f8036a41186a2236200241e0086a41186a290300370300200241f8036a41106a2237200241e0086a41106a290300370300200241f8036a41086a2238200241e0086a41086a290300370300200220022903e0083703f803200241c0036a41306a22392003290300370300200241c0036a41286a22032005290300370300200241c0036a41206a2205200e290300370300200241c0036a41186a220e2010290300370300200241c0036a41106a22102012290300370300200241c0036a41086a2212201429030037030020022002290398093703c003200042083703002000200229039006370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a20022903d805370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a202229030037030020004198016a202329030037030020004190016a202429030037030020004188016a202529030037030020004180016a2026290300370300200041f8006a20022903a005370300200041e0016a2027290300370300200041d8016a2028290300370300200041d0016a2029290300370300200041c8016a202a290300370300200041c0016a202b290300370300200041b8016a202c290300370300200041b0016a20022903e80437030020004198026a202d29030037030020004190026a202e29030037030020004188026a202f29030037030020004180026a2030290300370300200041f8016a2031290300370300200041f0016a2032290300370300200041e8016a20022903b004370300200041d0026a2033290300370300200041c8026a2034290300370300200041c0026a2035290300370300200041b8026a2036290300370300200041b0026a2037290300370300200041a8026a2038290300370300200041a0026a20022903f80337030020004188036a203929030037030020004180036a2003290300370300200041f8026a2005290300370300200041f0026a200e290300370300200041e8026a2010290300370300200041e0026a2012290300370300200041d8026a20022903c003370300200041c0036a2001290300370300200041b8036a2004290300370300200041b0036a2006290300370300200041a8036a200f290300370300200041a0036a201129030037030020004198036a201329030037030020004190036a2002290388033703000c320b2000420937030020024198096a10ca040c2b0b200042093703000b200241e0086a10ca040c250b200042093703000b200241a8086a10ca040c200b200042093703000b200241a8086a10ca040c1c0b200042093703000b200241a8086a10ca040c190b200042093703000b200241a8086a10ca040c270b200042093703000c260b200042093703000c250b200042093703000c240b200042093703000c130b200042093703000c220b200042093703000c130b200042093703000c110b200042093703000c1f0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c1b0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c0d0b200042093703000c160b200042093703000c140b200042093703000c120b200042093703000c100b200042093703000c0e0b200042093703000c0c0b200042093703000c0a0b200241f0076a10ca040c0f0b200241f0076a10ca040b200241b8076a10ca040c0d0b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040c0a0b200241a8086a10ca040b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040c060b200241e0086a10ca040b200241a8086a10ca040b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040b200241c8066a10ca040b200241d0096a24000beb010002400240024002400240024002400240024020002802000e0b0808080800010203040506070b200041086a280200450d07200028020410310f0b200041086a280200450d06200028020410310f0b200041086a10ad010f0b200041086a10ad010f0b200041086a280200450d03200028020410310f0b0240200041086a280200450d00200028020410310b200041106a2d00004106490d02200041186a280200450d02200041146a28020010310f0b200041086a10ad010c010b200041086a10ad01200041d0036a2d00004106490d00200041d8036a280200450d00200041d4036a28020010310f0b0bfb0201057f02400240200128020022022802042203450d00200228020022042d0000210520022003417f6a360204410121032002200441016a3602000240200541037122024103460d0002400240024020020e03000102000b20054102762102410021030c040b200128020022022802042203450d02200228020022012d0000210420022003417f6a360204410121032002200141016a3602002004410874200572220141ffff0371418002490d03200141fcff03714102762102410021030c030b2001280200220228020422034103490d012002280200220141026a2d0000210420012f000021062002200141036a36020020022003417d6a3602042006200441107472410874200572220241808004492103200241027621020c020b0240200541034d0d000c020b2001280200220128020422054104490d0120012802002203280000210220012005417c6a3602042001200341046a36020020024180808080044921030c010b410121030b20002002360204200020033602000bd71807027f017e0f7f017e047f037e017f230041e0176b220324000240024002400240024002400240200220012802002802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a220736020420044198046e210802400240200720012802084b0d0020020d01410021020c070b200041003602000c030b20034190086a41bc036a2109200341e8136a410c6a210a200341e8136a41046a210b20034190086a41cc036a210c20034190086a41c4036a210d200341f00f6a410472210e200341f00f6a410c6a210f41002110410021070340024002400240024002400240024002400240200128020022042802042211450d00200428020022122d0000211320042011417f6a3602042004201241016a3602000240024002400240024002400240024020130e080001020304050607080b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a410021110c0f0b200341e8136a200110a80120032802e8132212450d0920032802f013211420032802ec132113200341e8136a200110a901024020032903e81322154209510d0020032802f013211620034190086a200a41bc0310bf091a200920032903f00f370200200941086a200341f00f6a41086a290300370200200941106a200341f00f6a41106a290300370200200941186a200341f00f6a41186a290300370200200941206a200341f00f6a41206a290300370200200941286a200341f00f6a41286a290300370200200320032f01a80c3b01fe0b41012111410021042012211720132118201421192015211a0c0e0b02402014450d00201441f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2013450d09201341f8036c450d09201210310c090b200341f00f6a200110a80120032802f00f2212450d0820032802f80f211420032802f40f2113200341f00f6a200110a901024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a2003200110ab01024002402003280200450d00200341003602f00f0c010b200341f00f6a2001200328020410ac0120032802f00f0d0d0b200341a80c6a10ad010b02402014450d00201441f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2013450d08201341f8036c450d08201210310c080b200341f00f6a200110a80120032802f00f2212450d0720032802f80f211420032802f40f2113200341f00f6a200110a801024020032802f00f450d00200320032f01a80c3b01fe0b20032802f80f211620032903f00f211a20034190086a200341e8136a41ec0310bf091a41032111410021042012211720132118201421190c0c0b02402014450d00201441f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2013450d07201341f8036c450d07201210310c070b200341f00f6a200110a80120032802f00f2212450d0620032802f80f211420032802f40f2113200341f00f6a200110a901024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a200341086a200110ab01024002402003280208450d00200341003602f00f0c010b200341f00f6a2001200328020c10ac0120032802f00f0d0a0b200341a80c6a10ad010b02402014450d00201441f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2013450d06201341f8036c450d06201210310c060b200341f00f6a200110a80120032802f00f2212450d0520032802f80f211420032802f40f2113200341f00f6a200110a901024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a200341106a200110ab01024002402003280210450d00200341003602f00f0c010b200341f00f6a2001200328021410ac0120032802f00f0d080b200341a80c6a10ad010b02402014450d00201441f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2013450d05201341f8036c450d05201210310c050b200341186a200110ae012003290318a70d0420032903202115200341e8136a200110a90120032903e8134209510d04200341f00f6a200341e8136a41c80310bf091a200341e8136a200110a80120032802e8132212450d0220032802f013211920032802ec13211820032802f00f211620034190086a200e41c40310bf091a200d20032903a80c370200200d41086a200341a80c6a41086a290300370200200d41106a200341a80c6a41106a290300370200200d41186a200341a80c6a41186a290300370200200d41206a200341a80c6a41206a290300370200200320032f01800c3b01fe0b4106211141002104201221172015211a0c080b200341e8136a200110af0120032802e813410c460d03200341f00f6a200341e8136a41f80310bf091a2001280200220428020422114108490d022004280200221229000021152004201141786a3602042004201241086a3602002001280200220428020422114108490d0220042802002212290000211b2004201141786a3602042004201241086a360200200128020022042802042211450d02200428020022122d0000211320042011417f6a3602042004201241016a360200410021120240024020130e020100040b410121120b200341286a200110ab0102402003280228450d00200341003602e8130c030b200341e8136a2001200328022c10a10120032802e8132213450d0220032802f013211920032802ec13211820032903f00f211a20032802f80f211620034190086a200f41ec0310bf091a200320032f01a80c3b01fe0b410721114100210420132117201b21052015211c2012211d0c070b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a0c0a0b200341f00f6a10ad010c010b200341f00f6a10aa010b41082111410121040c030b20032802f80f211620032903f00f211a200b200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200c41186a200341800c6a41186a290300370200200c41106a200341800c6a41106a290300370200200c41086a200341800c6a41086a290300370200200c20032903800c37020041052111410021042012211720132118201421190c020b20032802f80f211620032903f00f211a200b200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200c41186a200341800c6a41186a290300370200200c41106a200341800c6a41106a290300370200200c41086a200341800c6a41086a290300370200200c20032903800c37020041042111410021042012211720132118201421190c010b20032802f80f211620032903f00f211a200b200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200c41186a200341800c6a41186a290300370200200c41106a200341800c6a41106a290300370200200c41086a200341800c6a41086a290300370200200c20032903800c37020041022111410021042012211720132118201421190b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a20040d030b200320032f018e083b01a004200341346a200341a2046a41ec0310bf091a0240024020072008470d0020074101742204200741016a2208200420084b1b22044104200441044b1bad4298047e2215422088a74541037421042015a721080240024020070d00200341003602e8130c010b200341083602f013200320063602e813200320074198046c3602ec130b200341f00f6a20082004200341e8136a104e20032802f80f210420032802f00f4101460d0120032802f40f210620044198046e21080b200620074198046c6a2204201d3a0001200420113a0000200420163600182004201a3700102004201936000c2004201836000820042017360004200420032f01a0043b00022004411c6a200341346a41ec0310bf091a20042005370090042004201c3700880420104198046a2110200741016a2204210720042002460d060c010b0b20040d030b103b000b200041003602002007450d00200621040340200410bf0120044198046a2104201041e87b6a22100d000b0b2008450d0320084198046c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200236020020012007417f6a3602040b200341e0176a24000bf0020002400240024002400240024002400240024020002802000e080700010203040506080b200041086a10ca040f0b200041086a10ca04200041c0006a10ca040f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca040f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca04200041b0016a10ca040f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca04200041b0016a10ca04200041e8016a10ca040f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca04200041b0016a10ca04200041e8016a10ca04200041a0026a10ca040f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca04200041b0016a10ca04200041e8016a10ca04200041a0026a10ca04200041d8026a10ca040b0f0b200041086a10ca04200041c0006a10ca04200041f8006a10ca04200041b0016a10ca04200041e8016a10ca04200041a0026a10ca04200041d8026a10ca0420004190036a10ca040be70404047f017e037f017e02400240200128020022022802042203450d00200228020022042d0000210520022003417f6a3602042002200441016a3602000240200541037122024103460d0002400240024020020e03000102000b2005410276ad2106410021020c040b200128020022012802042202450d02200128020022032d0000210420012002417f6a360204410121022001200341016a3602002004410874200572220141ffff0371418002490d03200141fcff0371410276ad2106410021020c030b41012102024020012802002201280204220341034f0d000c030b2001280200220441026a2d0000210720042f000021082001200441036a36020020012003417d6a3602042008200741107472410874200572220141808004490d022001410276ad2106410021020c020b024002400240200541027622090e050002020201020b2001280200220228020422014104490d0220022802002205350000210620022001417c6a3602042002200541046a36020020064280808080045421020c030b2001280200220228020422014108490d012002280200220529000021062002200141786a3602042002200541086a3602002006428080808080808080015421020c020b200541134b0d00200941046a2108410021034200210641012102034002402001280200220528020422040d000c030b20052802002207310000210a20052004417f6a3602042005200741016a360200200a2003410374413871ad862006842106200341016a22052103200541ff01712008490d000b2006427f412820094103746b413871ad885821020c010b410121020b2000200637030820002002ad3703000bdd1202057f067e230041f00b6b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0c0102030405060708090a0b0d0c0b2000410c3602000c150b200041003602000c140b200041013602000c130b200041023602000c120b200041033602000c110b2002200110ab01024020022802000d0020012802002204280204220520022802042203490d002003417f4c0d090240024020030d00410121060c010b200310352206450d0b2001280200220428020421050b024020052003490d0020062004280200200310bf092101200428020422052003490d0e2004200520036b3602042004200428020020036a3602002001450d012000200136020420004104360200200041086a2003ad2207422086200784370200200041106a200241d0006a41e80310bf091a0c120b200610310b2000410c3602000c100b200241086a200110ab01024020022802080d00200128020022042802042205200228020c2203490d002003417f4c0d080240024020030d00410121060c010b200310352206450d0a2001280200220428020421050b024020052003490d0020062004280200200310bf092101200428020422052003490d0e2004200520036b3602042004200428020020036a3602002001450d012000200136020420004105360200200041086a2003ad2207422086200784370200200041106a200241d0006a41e80310bf091a0c110b200610310b2000410c3602000c0f0b200241a8086a200110a901024020022903a8084209510d00200241e0046a200241a8086a41c80310bf091a200241d0006a41046a200241e0046a41c80310bf091a20004106360200200041046a200241d0006a41cc0310bf091a200041f0036a200241d8046a290300370300200041e8036a200241d0046a290300370300200041e0036a200241c8046a290300370300200041d8036a200241c0046a290300370300200041d0036a20022903b8043703000c0f0b2000410c3602000c0e0b200241a8086a200110a901024020022903a8084209510d00200241e0046a200241a8086a41c80310bf091a200241d0006a41046a200241e0046a41c80310bf091a20004107360200200041046a200241d0006a41cc0310bf091a200041f0036a200241d8046a290300370300200041e8036a200241d0046a290300370300200041e0036a200241c8046a290300370300200041d8036a200241c0046a290300370300200041d0036a20022903b8043703000c0e0b2000410c3602000c0d0b200241286a200110ab010240024020022802280d00200128020022042802042205200228022c2203490d002003417f4c0d060240024020030d00410121060c010b200310352206450d082001280200220428020421050b024020052003490d0020062004280200200310bf092105200428020422062003490d0d2004200620036b3602042004200428020020036a3602002005450d01200241106a200110c5032003ad22074220862007842207a721032002290310a70d02200241106a41106a2903002108200229031821092000200536020420004108360200200041106a20093703002000410c6a20074220883e0200200041086a2003360200200041186a2008370300200041206a200241d0006a41d80310bf091a0c0f0b200610310b2000410c3602000c0d0b2000410c3602002003450d0c200510310c0c0b200241306a200110ab010240024020022802300d0020012802002204280204220520022802342203490d002003417f4c0d050240024020030d00410121060c010b200310352206450d072001280200220428020421050b024020052003490d0020062004280200200310bf092105200428020422062003490d0d2004200620036b3602042004200428020020036a3602002005450d01200241a8086a200110fc052003ad22074220862007842207a7210320022d00a8084107460d02200241e0046a41206a200241a8086a41206a2903002208370300200241e0046a41186a200241a8086a41186a2903002209370300200241e0046a41106a200241a8086a41106a290300220a370300200241e0046a41086a200241a8086a41086a290300220b370300200220022903a808220c3703e0042000410c6a20074220883e0200200041086a20033602002000200536020420004109360200200041106a200c370300200041186a200b370300200041206a200a370300200041286a2009370300200041306a2008370300200041386a200241d0006a41c00310bf091a0c0e0b200610310b2000410c3602000c0c0b2000410c3602002003450d0b200510310c0b0b200241a8086a200110a90120022903a8084209510d04200241e0046a200241a8086a41c80310bf091a200241386a200110c50302402002290338a70d00200241386a41106a290300210720022903402108200241d0006a41046a200241e0046a41c80310bf091a2000410a360200200041046a200241d0006a41cc0310bf091a200041d8036a2007370300200041d0036a2008370300200041e0036a20022903b804370300200041e8036a200241c0046a290300370300200041f0036a200241b8046a41106a2903003703000c0b0b2000410c360200200241e0046a10ad010c0a0b2000410c3602000c090b200241a8086a200110a90120022903a8084209510d03200241e0046a200241a8086a41c80310bf091a200241a8086a200110fc05024020022d00a8084107460d00200241b8046a41206a2203200241a8086a41206a290300370300200241b8046a41186a2201200241a8086a41186a290300370300200241b8046a41106a2204200241a8086a41106a290300370300200241b8046a41086a2205200241a8086a41086a290300370300200220022903a8083703b804200241d0006a41046a200241e0046a41c80310bf091a2000410b360200200041046a200241d0006a41cc0310bf091a200041f0036a2003290300370300200041e8036a2001290300370300200041e0036a2004290300370300200041d8036a2005290300370300200041d0036a20022903b8043703000c090b2000410c360200200241e0046a10ad010c080b103b000b1039000b2000410c3602000c050b2000410c3602000c040b20032005419cb4c0001061000b20032005419cb4c0001061000b20032006419cb4c0001061000b20032006419cb4c0001061000b200241f00b6a24000bfa0801047f024020002802082201450d002000280200220220014198046c6a21030340200222014198046a21020240024002400240024002400240024020012d00000e0707000102030405060b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410310b200141106a10ad010c060b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410310b200141206a10ad010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0520004198046c450d05200128021010310c050b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410310b0240200141186a2802002204450d00200141106a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b200141146a2802002200450d04200041f8036c450d04200128021010310c040b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410310b200141206a10ad010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0320004198046c450d03200128021010310c030b02402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b0240200141086a2802002200450d00200041f8036c450d00200128020410310b200141206a10ad010240200141186a2802002204450d00200141106a280200210020044198046c21040340200010bf0120004198046a2100200441e87b6a22040d000b0b200141146a2802002200450d0220004198046c450d02200128021010310c020b200141186a10ad0102402001410c6a2802002204450d00200141046a2802002100200441f8036c21040340200010aa01200041f8036a2100200441887c6a22040d000b0b200141086a2802002200450d01200041f8036c450d01200128020410310c010b200141106a10aa0102402001410c6a2802002204450d00200141046a2802002100200441e0076c21040340200010a601200041e0076a2100200441a0786a22040d000b0b200141086a2802002200450d00200041e0076c450d00200128020410310b20022003470d000b0b0bcc0403027f017e077f230041d0166b2203240002400240024002400240024002402002200128020028020441c0076e2204200420024b1bad42c0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a2207360204200441c0076e210802400240200720012802084b0d0020020d01410021020c070b200041003602000c030b200341800f6a41047221094100210a41002104410021070340200341800f6a200110b20120032802800f210b200341c4076a200941bc0710bf091a200b4123460d02200341086a200341c4076a41bc0710bf091a0240024020072008470d00200a200741016a2208200a20084b1b22084104200841044b1bad42c0077e2205422088a74541037421082005a7210c0240024020070d00200341003602800f0c010b200341083602880f200320043602840f200320063602800f0b200341c0166a200c2008200341800f6a104e20032802c816210820032802c0164101460d0120032802c4162106200841c0076e21080b200620046a220c200b360200200c41046a200341086a41bc0710bf091a200a41026a210a200441c0076a21042002200741016a2207460d060c010b0b20080d030b103b000b200041003602002007450d00200621070340200710b301200741c0076a2107200441c0786a22040d000b0b2008450d03200841c0076c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200236020020012007417f6a3602040b200341d0166a24000bf7ff0109057f017e037f027e027f017e077f067e437f230041902f6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e6401020304052406072408090a0b240c0d0e0f101112131415161718191a1b1c1d24241e2424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241f20242424242424242421222424242424242423240b200041233602000c490b200128020022032802042204450d47200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024002400240024020060e0a00010203040506070809530b2001280200220128020422034104490d5220012802002205280000210420012003417c6a3602042001200541046a3602002004418194ebdc034f0d5241012101410021030c0a0b200241086a200110ab0120022802080d51200128020022052802042206200228020c2203490d512003417f4c0d4e0240024020030d00410121040c010b200310352204450d4d2001280200220528020421060b20062003490d5020042005280200200310bf092101200528020422062003490d2f2005200620036b3602042005200528020020036a3602002001450d512003ad220742208620078421074102410b20011b21010c080b2001280200220128020422034108490d502001280200220429000021072001200341786a3602042001200441086a360200410321010c080b200241106a200110ab0120022802100d4f20012802002205280204220620022802142203490d4f2003417f4c0d4c0240024020030d00410121040c010b200310352204450d4b2001280200220528020421060b20062003490d4e20042005280200200310bf092101200528020422062003490d382005200620036b3602042005200528020020036a3602002001450d4f2003ad220742208620078421074104410b20011b21010c060b200241186a200110ab0120022802180d4e200128020022052802042206200228021c2203490d4e2003417f4c0d4b0240024020030d00410121040c010b200310352204450d4a2001280200220528020421060b20062003490d4d20042005280200200310bf092101200528020422062003490d382005200620036b3602042005200528020020036a3602002001450d4e2003ad220742208620078421074105410b20011b21010c050b200241901f6a200110c00320022802901f22044102460d4d20022902941f2107410621010c040b200241306a200110ab0120022802300d4c20022802342206200128020028020441186e2203200320064b1bad42187e2207422088a70d492007a72203417f4c0d490240024020030d00410421040c010b2003102f2204450d480b2001200128020441016a2205360204200341186ead2107200520012802084b0d4a024002402006450d000340200241286a200110ab0120022802280d4d200128020022052802042208200228022c2203490d4d2003417f4c0d4c0240024020030d00410121090c010b200310352209450d4b2001280200220528020421080b0240024020082003490d0020092005280200200310bf0921082005280204220a2003490d302005200a20036b3602042005200528020020036a3602002008450d4f200241206a200110ab012003ad220b422086200b84220ca7210d024020022802200d0020012802002205280204220a20022802242203490d002003417f4c0d4f0240024020030d004101210e0c010b20031035220e450d4e20012802002205280204210a0b02400240200a2003490d00200e2005280200200310bf09210a2005280204220e20034f0d012003200e419cb4c0001061000b200e10310c010b2005200e20036b3602042005200528020020036a360200200a0d020b200d450d4f0b200910310c4e0b02402007422088220ba722052007a7470d00200541016a22092005490d4d2005410174220e20092009200e491b22094104200941044b1bad42187e220b422088a7454102742109200ba7210e0240024020050d00200241003602901f0c010b200241043602981f200220043602901f2002200541186c3602941f0b200241c8066a200e2009200241901f6a104e20022802d006210920022802c8064101460d0320022802cc0621042007422088220ba72105200941186ead21070b2004200541186c6a2205200d36020420052008360200200541106a2003ad220f422086200f843702002005410c6a200a360200200541086a200c422088a7360200200b422086200742ffffffff0f83844280808080107c21072006417f6a22060d000b200128020421050b20012005417f6a3602042004450d4d4107410b20041b21010c040b20090d470c490b200241901f6a200110c10320022802901f2204450d4b20022902941f2107410821010c020b200241386a200110ab0120022802380d4a200128020022052802042206200228023c2203490d4a2003417f4c0d470240024020030d00410121040c010b200310352204450d462001280200220528020421060b20062003490d4920042005280200200310bf092106200528020422082003490d352005200820036b3602042005200528020020036a3602002006450d4a2003ad2207422086200784210702402001280200220128020422054104490d0020012802002206280000210320012005417c6a3602042001200641046a360200410921010c030b2007a70d490c4a0b200241c0006a200110ab0120022802400d4920012802002205280204220620022802442203490d492003417f4c0d460240024020030d00410121040c010b200310352204450d452001280200220528020421060b20062003490d4820042005280200200310bf092101200528020422062003490d352005200620036b3602042005200528020020036a3602002001450d492003ad22074220862007842107410a410b20011b21010b0b20004100360200200041186a2003360200200041106a20073702002000410c6a2004360200200041086a2001360200200041206a200241f0266a41a00710bf091a0c480b200128020022032802042204450d42200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e03000103470b200241901f6a200110c2032002419c1f6a2802002204450d46200241a41f6a2802002103200241a01f6a280200210520022802981f210920022903901f2107200241d01b6a200241a81f6a41e40010bf091a20024194206a2802002108200241901f6a4180016a28020021062002418c206a280200210a200241c8066a20024198206a41800110bf091a200241901f6a200110c303024020022802941f2201450d002002419c1f6a290200210b20022802981f210e20022802901f211020024190116a200241d01b6a41e40010bf091a20024190186a200241c8066a41800110bf091a4101210d0c040b02402003450d00200341246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200410310b02402008450d00200841246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2006450d46200641246c0d010c460b200241901f6a200110c2032002419c1f6a2802002204450d45200241a41f6a2802002103200241a01f6a280200210520022802981f210920022903901f2107200241d01b6a200241a81f6a41e40010bf091a20024194206a2802002108200241901f6a4180016a28020021062002418c206a280200210a200241c8066a20024198206a41800110bf091a200241901f6a200110c303024020022802941f2201450d002002419c1f6a290200210b20022802981f210e20022802901f211020024190116a200241d01b6a41e40010bf091a20024190186a200241c8066a41800110bf091a4102210d0c030b02402003450d00200341246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200410310b02402008450d00200841246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2006450d45200641246c450d450b200a10310c440b200128020022032802042204450d43200328020022052d0000210620032004417f6a3602042003200541016a36020020064101470d432001280200220328020422044108490d4320032802002205290000210c2003200441786a3602042003200541086a3602002001280200220328020422044108490d4320032802002205290000210b2003200441786a3602042003200541086a360200200128020022012802042203450d43200128020022042d0000210520012003417f6a3602042001200441016a3602004100210102400240024020050e03020001460b410121010c010b410221010b4103210d20014103460d43200c422088a7210e2001ad2107200ca7210120024190116a200241d00d6a41e40010bf091a20024190186a200241d01b6a41800110bf091a0b200241a8056a20024190116a41e40010bf091a200241d0146a20024190186a41800110bf091a200041206a2007370200200041186a200b370200200041346a2003360200200041306a20053602002000412c6a2004360200200041286a2009360200200041146a200e360200200041106a20013602002000410c6a2010360200200041086a200d36020020004101360200200041386a200241a8056a41e40010bf091a200041a4016a2008360200200041a0016a20063602002000419c016a200a360200200041a8016a200241d0146a41800110bf091a200041a8026a200241f0266a41980510bf091a0c470b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241c8006a200110ae012002290348a70d002002290350210720004102360200200041086a2007370300200041106a200241f0266a41b00710bf091a0c470b200041233602000c460b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024020060e050001020304080b2001280200220128020422034104490d0720012802002204280000210e20012003417c6a3602042001200441046a360200410121110c040b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d07200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021112002419f1f6a2d00002112200241a01f6a2f01002113200241a21f6a2801002104200241a61f6a2d00002105200241a71f6a2f00002106200241a91f6a2800002108200241ad1f6a2d0000210a200241ae1f6a2f01002109200241b01f6a280200210d200241981f6a2d0000210e20022802941f21032002200241991f6a2f00003b00cd062002200e3a00cc06200220033602c8062001280200220128020422144104490d0620022800cb06210e20012802002215280000211020012014417c6a3602042001201541046a360200200220133b00d51b200220123a00d41b200220113602d01b410221110c040b2001280200220128020422034104490d0520012802002204280000210e20012003417c6a3602042001200441046a360200410321110c020b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d05200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021132002419f1f6a2d00002114200241a01f6a2f01002115200241a21f6a2801002104200241a61f6a2d00002105200241a71f6a2f00002106200241a91f6a2800002108200241ad1f6a2d0000210a200241ae1f6a2f01002109200241b01f6a280200210d200241981f6a2d0000210e20022802941f21032002200241991f6a2f00003b00cd062002200e3a00cc06200220033602c8062001280200221128020422124104490d0420022800cb06210e20112802002216280000211020112012417c6a3602042011201641046a360200200128020022012802042211450d04200128020022122d0000211620012011417f6a3602042001201241016a360200410021010240024020160e020100060b410121010b200220153b00d51b200220143a00d41b200220133602d01b410421110c030b2001280200220128020422034104490d0320012802002204280000210e20012003417c6a3602042001200441046a360200410521110b0b0b200220022800d31b36009318200220022802d01b36029018200041076a20034110763a0000200020033b0005200041086a200e360200200020113a0004200041033602002000410c6a2002280290183602002000410f6a200228009318360000200041286a2010360200200020013a0025200041216a200d360000200020093b001f2000200a3a001e2000411a6a2008360100200041186a20063b0100200020053a0017200041136a20043600002000412c6a200241f0266a41940710bf091a0c460b200041233602000c450b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024020060e0400010203080b200241901f6a200110c40320022d00901f22034105460d07200241ac1f6a2902002107200241a41f6a290200210b2002419c1f6a290200210c200241981f6a280200210420022802941f210520022f00911f210620022d00931f2108200241d8006a200110c50302402002290358a70d0020062008411074722101200241d8006a41106a29030021172002290360211841012106410021084100210a0c040b20034102470d0720040d060c070b200241901f6a200110c40320022d00901f22034105460d06200241ac1f6a2902002107200241a41f6a290200210b2002419c1f6a290200210c200241981f6a280200210420022802941f210520022f00911f210620022d00931f210820024188016a200110c503200229038801a70d0420024188016a41106a29030021172002290390012118200241f0006a200110c5032002290370a70d0420062008411074722101200241f0006a41106a29030021192002290378211a41022106410021084100210a0c020b200241901f6a200110c40320022d00901f4105460d05200241ac1f6a2902002107200241a41f6a290200210b2002419c1f6a2206290200210c200241981f6a2208280200210420022802941f210520022802901f2103200241901f6a200110c403024020022d00901f4105460d00200241a81f6a2903002119200241901f6a41106a290300211a200241b01f6a350200210f200628020021092008280200210820022802941f210a20022802901f2106200241a0016a200110c503024020022903a001a70d0020022903a801211b200341087621012009ad4220862008ad842117200aad4220862006ad842118200241a0016a41106a290300221c422088a7210a201ca72108410321060c030b200641ff01714102470d002008450d00200a10310b200341ff01714102470d0520040d040c050b200241901f6a200110c40320022d00901f4105460d04200241ac1f6a2902002107200241a41f6a290200210b2002419c1f6a290200210c200241901f6a41086a280200210420022802941f210520022802901f2103200241b8016a200110c50320022903b801a70d01200241c8016a290300211720022903c0012118200341087621014200211a41042106420021190b200020013b000d200041043602002000410f6a20014110763a0000200041d8006a201b370200200041c8006a2019370200200041c0006a201a370200200041386a2017370200200041306a2018370200200041d0006a200f370200200041286a2007370200200041206a200b370200200041186a200c370200200041146a2004360200200041106a20053602002000410c6a20033a0000200041086a2006360200200041e0006a200aad4220862008ad84370200200041e8006a200241f0266a41d80610bf091a0c480b200341ff01714102470d0220040d010c020b20034102470d012004450d010b200510310b200041233602000c440b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d00200241d0016a200110ab0120022802d0010d0020022802d4012205200128020028020441f0006e2203200320054b1bad42f0007e2207422088a70d402007a72203417f4c0d400240024020030d00410421060c010b2003102f2206450d3f0b2001200128020441016a2204360204200341f0006ead21070240200420012802084b0d00024002402005450d00200241901f6a41086a21090340200241901f6a200110c60320022802941f210420022802901f2108200241c8066a200941e80010bf091a2004450d03200241d01b6a200241c8066a41e80010bf091a02402007422088220ba722032007a7470d00200341016a220a2003490d452003410174220d200a200a200d491b220a4104200a41044b1bad42f0007e220b422088a745410274210a200ba7210d0240024020030d00200241003602901f0c010b200241043602981f200220063602901f2002200341f0006c3602941f0b20024190186a200d200a200241901f6a104e200228029818210a2002280290184101460d0320022802941821062007422088220ba72103200a41f0006ead21070b2006200341f0006c6a2203200436020420032008360200200341086a200241d01b6a41e80010bf091a200b422086200742ffffffff0f83844280808080107c21072005417f6a22050d000b200128020421040b20012004417f6a3602042006450d022000200636020420004105360200200041086a2007370200200041106a200241f0266a41b00710bf091a0c460b200a450d410c3f0b02402007422088a72201450d002006200141f0006c6a2105200621010340024020012204410c6a2802002203450d0020042802042101200341246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b200441f0006a21010240200441086a2802002203450d00200341246c450d00200428020410310b20012005470d000b0b2007a72201450d00200141f0006c450d00200610310b200041233602000c430b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c420b200128020022032802042204450d3a200328020022052d0000210620032004417f6a3602042003200541016a3602004102211d0240024020060e0200013c0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d3c200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a280000210e2002419f1f6a2d00002110200241a01f6a2f01002111200241a21f6a2801002112200241a61f6a2d00002113200241a71f6a2f00002114200241a91f6a2800002115200241ad1f6a2d00002116200241ae1f6a2f0100211e200241901f6a41206a280200211f200241981f6a2d0000210320022802941f21092002200241991f6a2f00003b00cd06200220033a00cc06200220093602c80620022800cb06210d41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d3c200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021202002419f1f6a2d00002121200241a01f6a2f01002122200241a21f6a2801002123200241a61f6a2d00002124200241a71f6a2f00002125200241a91f6a2800002126200241ad1f6a2d00002127200241ae1f6a2f01002128200241901f6a41206a2802002129200241981f6a2d0000210320022802941f210a2002200241991f6a2f00003b00cd06200220033a00cc062002200a3602c80620022800cb06212a41002104200241003602901f200241901f6a410472212b0340200128020022032802042205450d3c200328020022062d0000210820032005417f6a3602042003200641016a360200202b20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a280000212c2002419f1f6a2d0000212d200241a01f6a2f0100212e200241a21f6a280100212f200241a61f6a2d00002130200241a71f6a2f00002131200241a91f6a2800002132200241ad1f6a2d00002133200241ae1f6a2f01002134200241901f6a41206a2802002135200241981f6a2d0000210320022802941f21052002200241991f6a2f00003b00cd06200220033a00cc06200220053602c80620022800cb06212b41002104200241003602901f200241901f6a41047221360340200128020022032802042206450d3c200328020022082d0000213720032006417f6a3602042003200841016a360200203620046a20373a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021362002419f1f6a2d00002138200241a01f6a2f01002139200241a21f6a280100213a200241a61f6a2d0000213b200241a71f6a2f0000213c200241a91f6a280000213d200241ad1f6a2d0000213e200241ae1f6a2f0100213f200241901f6a41206a2802002140200241981f6a2d0000210420022802941f21032002200241991f6a2f00003b00cd06200220043a00cc06200220033602c80620022800cb06213741002106200241003602901f200241901f6a41047221410340200128020022042802042208450d3c200428020022422d0000214320042008417f6a3602042004204241016a360200204120066a20433a00002002200641016a22043602901f2004210620044120470d000b2002419b1f6a28000021432002419f1f6a2d00002141200241a01f6a2f01002144200241a21f6a2801002145200241a61f6a2d00002146200241a71f6a2f00002147200241a91f6a2800002148200241ad1f6a2d00002149200241ae1f6a2f0100214a200241901f6a41206a280200214b200241981f6a2d0000210620022802941f21042002200241991f6a2f00003b00cd06200220063a00cc06200220043602c80620022800cb06214241002108200241003602901f200241901f6a410472214c034020012802002206280204224d450d3c2006280200224e2d0000214f2006204d417f6a3602042006204e41016a360200204c20086a204f3a00002002200841016a22063602901f2006210820064120470d000b2002419b1f6a280000214e2002419f1f6a2d0000214f200241a01f6a2f0100214c200241a21f6a2801002150200241a61f6a2d00002151200241a71f6a2f00002152200241a91f6a2800002153200241ad1f6a2d00002154200241ae1f6a2f01002155200241b01f6a2802002156200241981f6a2d0000210620022802941f21082002200241991f6a2f00003b00cd06200220063a00cc06200220083602c80620022800cb06214d200241003602901f410421060340200128020022572802042258450d3c200241901f6a20066a205728020022592d00003a000020572058417f6a3602042057205941016a36020020022006417d6a3602901f200641016a22064125470d000b200241d01b6a41026a22062002419d1f6a2d00003a0000200220022f01941f3b01c806200220022d00961f3a00ca0620022002419b1f6a2f00003b01d01b20022800971f21572002419e1f6a280100215820024190186a41026a225a200241a41f6a2d00003a00002002200241a21f6a2f01003b019018200241a51f6a2800002159200241d0146a41026a221d200241ab1f6a2d00003a00002002200241a91f6a2f00003b01d014200241ac1f6a280200215b20024190116a41026a225c200241b21f6a2d00003a00002002200241b01f6a2f01003b019011200241b31f6a2f0000215d200220022d00ca063a008a2f200220022f01c8063b01882f200241d00d6a41026a225e20062d00003a0000200220022f01d01b3b01d00d200241a8056a41026a2206205a2d00003a0000200220022f0190183b01a805200241c4046a41026a225a201d2d00003a0000200220022f01d0143b01c4042002418c2f6a41026a221d205c2d00003a0000200220022f0190113b018c2f200241842f6a41026a225c205e2d00003a0000200220022f01d00d3b01842f200241802f6a41026a225e20062d00003a0000200220022f01a8053b01802f200241fc2e6a41026a2206205a2d00003a0000200220022f01c4043b01fc2e200241f82e6a41026a225a201d2d00003a0000200220022f018c2f3b01f82e200241f42e6a41026a221d20022d008a2f3a0000200220022f01882f3b01f42e200241f02e6a41026a225f205c2d00003a0000200220022f01842f3b01f02e200241ec2e6a41026a225c205e2d00003a0000200220022f01802f3b01ec2e200241e82e6a41026a225e20062d00003a0000200220022f01fc2e3b01e82e200241e42e6a41026a2206205a2d00003a0000200220022f01f82e3b01e42e200241e02e6a41026a201d2d00003a0000200220022f01f42e3b01e02e200241dc2e6a41026a205f2d00003a0000200220022f01f02e3b01dc2e200241d82e6a41026a205c2d00003a0000200220022f01ec2e3b01d82e200241d42e6a41026a205e2d00003a0000200220022f01e82e3b01d42e200241d02e6a41026a20062d00003a0000200220022f01e42e3b01d02e200241d8016a200110ab0120022802d8010d3b2001280200221d280204225c20022802dc012206490d3b2006417f4c0d3e0240024020060d004101215a0c010b20061035225a450d3d2001280200221d280204215c0b02400240205c2006490d00205a201d280200200610bf092101201d280204225c20064f0d012006205c419cb4c0001061000b205a10310c3c0b201d205c20066b360204201d201d28020020066a3602002001450d3b2006ad22074220862007842107200241c4066a41026a200241e02e6a41026a2d00003a0000200241c0066a41026a200241dc2e6a41026a2d00003a0000200241bc066a41026a200241d82e6a41026a2d00003a0000200241b8066a41026a200241d42e6a41026a2d00003a0000200241b4066a41026a200241d02e6a41026a2d00003a0000200220022f01e02e3b01c406200220022f01dc2e3b01c006200220022f01d82e3b01bc06200220022f01d42e3b01b806200220022f01d02e3b01b406200220022f019c063b0198064101211d0b200241b0066a41026a2201200241c4066a41026a2d00003a0000200241ac066a41026a2206200241c0066a41026a2d00003a0000200241a8066a41026a225c200241bc066a41026a2d00003a0000200241a4066a41026a225e200241b8066a41026a2d00003a0000200241a0066a41026a225f200241b4066a41026a2d00003a0000200220022f01c4063b01b006200220022f01c0063b01ac06200220022f01bc063b01a806200220022f01b8063b01a406200220022f01b4063b01a006200220022f0198063b019406200041a7016a20084110763a0000200020083b00a50120004187016a20044110763a0000200020043b008501200041e7006a20034110763a0000200020033b0065200041c7006a20054110763a0000200020053b0045200041276a200a4110763a00002000200a3b0025200041076a20094110763a0000200020093b0005200020563600c101200020553b00bf01200020543a00be01200020533600ba01200041b8016a20523b0000200020513a00b701200020503600b3012000204c3b00b101200041b0016a204f3a0000200041ac016a204e360000200041a8016a204d3600002000204b3600a1012000204a3b009f01200020493a009e012000204836009a0120004198016a20473b0000200020463a0097012000204536009301200020443b00910120004190016a20413a00002000418c016a204336000020004188016a204236000020002040360081012000203f3b007f2000203e3a007e2000203d36007a200041f8006a203c3b00002000203b3a00772000203a360073200020393b0071200041f0006a20383a0000200041ec006a2036360000200041e8006a203736000020002035360061200020343b005f200020333a005e2000203236005a200041d8006a20313b0000200020303a00572000202f3600532000202e3b0051200041d0006a202d3a0000200041cc006a202c360000200041c8006a202b36000020002029360041200020283b003f200020273a003e2000202636003a200041386a20253b0000200020243a003720002023360033200020223b0031200041306a20213a00002000412c6a2020360000200041286a202a3600002000201f3600212000201e3b001f200020163a001e2000201536001a200041186a20143b0000200020133a001720002012360013200020113b0011200041106a20103a00002000410c6a200e360000200041086a200d3600002000201d3a000420004107360200200041c8016a2057360000200041cf016a2058360000200041d6016a2059360000200041c7016a20012d00003a0000200020022f01b0063b00c501200041cc016a20022f01ac063b0000200041ce016a20062d00003a0000200020022f01a8063b00d301200041d5016a205c2d00003a0000200020022f01a4063b00da01200041dc016a205e2d00003a0000200041dd016a205b360000200041e4016a205d3b0000200041e8016a205a360100200041ec016a2007370100200041e3016a205f2d00003a0000200020022f01a0063b00e101200020022f0194063b01e601200041f4016a200241f0266a41cc0510bf091a0c410b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e03000102040b200241901f6a200110c70320022903981f22074202510d03200228029c1f210320022802941f210420022802901f2105200241d01b6a200241a01f6a41e40010bf091a20024188206a2802002106200228028c202108200228028420210a200241c8066a200241901f6a4180016a41800110bf091a200241901f6a200110c30320022802941f2201450d032007a7210d2002419c1f6a290200210720022802981f210e20022802901f2109200241a8056a200241d01b6a41e40010bf091a20024190186a200241c8066a41800110bf091a410121100c020b200241901f6a200110c70320022903981f22074202510d02200228029c1f210320022802941f210420022802901f210520024190116a200241a01f6a41e40010bf091a20024188206a2802002106200228028c202108200228028420210a200241c8066a200241901f6a4180016a41800110bf091a200241901f6a200110c30320022802941f2201450d022007a7210d2002419c1f6a290200210720022802981f210e20022802901f2109200241d00d6a20024190116a41e40010bf091a200241d01b6a200241c8066a41800110bf091a200241a8056a200241d00d6a41e40010bf091a20024190186a200241d01b6a41800110bf091a410221100c010b2001280200220328020422044104490d0120032802002205280000210920032004417c6a3602042003200541046a3602002001280200220328020422044104490d0120032802002205280000210120032004417c6a3602042003200541046a360200200241a8056a200241c8066a41e40010bf091a20024190186a200241901f6a41800110bf091a410321100b200241c4046a200241a8056a41e40010bf091a200241d0146a20024190186a41800110bf091a2000412c6a2003360200200041286a200d360200200041246a2004360200200041206a2005360200200041186a2007370200200041146a200e360200200041106a20013602002000410c6a2009360200200041086a201036020020004108360200200041306a200241c4046a41e40010bf091a2000419c016a200836020020004198016a200636020020004194016a200a360200200041a0016a200241d0146a41800110bf091a200041a0026a200241f0266a41a00510bf091a0c410b200041233602000c400b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d002001280200220328020422044104490d0020032802002205280000210620032004417c6a3602042003200541046a360200200241f0016a200110ab0120022802f0010d0020012802002204280204220520022802f4012203490d002003417f4c0d3c0240024020030d00410121080c010b200310352208450d3b2001280200220428020421050b024002400240024020052003490d0020082004280200200310bf0921052004280204220a2003490d232004200a20036b3602042004200428020020036a3602002005450d042003ad2207422086200784220fa7210e200241e8016a200110ab01024020022802e8010d0020022802ec01220a2001280200280204410c6e22032003200a4b1bad420c7e2207422088a70d412007a72203417f4c0d410240024020030d004104210d0c010b2003102f220d450d400b2001200128020441016a22043602042003410c6ead21070240200420012802084b0d00024002400240200a450d000340200241e0016a200110ab0120022802e0010d0420012802002204280204220920022802e4012203490d042003417f4c0d460240024020030d00410121100c010b200310352210450d452001280200220428020421090b20092003490d0320102004280200200310bf092109200428020422102003490d2a2004201020036b3602042004200428020020036a3602002009450d0402402007422088220ba722042007a7470d00200441016a22102004490d4720044101742211201020102011491b22104104201041044b1bad420c7e220b422088a7454102742110200ba721110240024020040d00200241003602901f0c010b200241043602981f2002200d3602901f20022004410c6c3602941f0b200241c8066a20112010200241901f6a104e20022802d006211020022802c8064101460d0320022802cc06210d2007422088220ba721042010410c6ead21070b200d2004410c6c6a22042003ad220c422086200c8437020420042009360200200b422086200742ffffffff0f83844280808080107c2107200a417f6a220a0d000b200128020421040b20012004417f6a360204200d450d032005450d082001280200220328020422044104490d0520032802002208280000211120032004417c6a3602042003200841046a3602002001280200220328020422044104490d0520032802002208280000211220032004417c6a3602042003200841046a3602002001280200220328020422044104490d05200f422088a7211520032802002208280000211620032004417c6a3602042003200841046a36020041002104200241003602901f2007422088a72114200241901f6a41047221102007a721130340200128020022032802042208450d072003280200220a2d0000210920032008417f6a3602042003200a41016a360200201020046a20093a00002002200441016a22033602901f20032104200341c000470d000b200220022f01941f3b01d01b200220022d00961f3a00d21b20022800971f211420024190186a41026a22012002419d1f6a2d00003a000020022002419b1f6a2f00003b0190182002419e1f6a280100211e200241d0146a41026a2203200241901f6a41146a2d00003a00002002200241a21f6a2f01003b01d014200241a51f6a280000211f20024190116a41026a2204200241ab1f6a2d00003a00002002200241a91f6a2f00003b019011200241ac1f6a280200212b200241d00d6a41026a2208200241b21f6a2d00003a00002002200241901f6a41206a2f01003b01d00d200241b31f6a280000212a200241a8056a41026a220a200241b91f6a2d00003a00002002200241b71f6a2f00003b01a805200241ba1f6a2801002120200241c4046a41026a2209200241c01f6a2d00003a00002002200241901f6a412e6a2f01003b01c404200241c11f6a28000021212002200241901f6a413c6a2900003700cf062002200241901f6a41356a2900003703c806200220022d00d21b3a00f22e200220022f01d01b3b01f02e2002418c2f6a41026a221020012d00003a0000200220022f0190183b018c2f200241882f6a41026a220120032d00003a0000200220022f01d0143b01882f200241842f6a41026a220320042d00003a0000200220022f0190113b01842f200241802f6a41026a220420082d00003a0000200220022f01d00d3b01802f200241fc2e6a41026a2208200a2d00003a0000200220022f01a8053b01fc2e200241f82e6a41026a220a20092d00003a0000200220022f01c4043b01f82e200241f42e6a41026a220920022d00ca063a0000200220022f01c8063b01f42e20022900cf06210b20022800cb062122200241ec2e6a41026a221320102d00003a0000200220022f018c2f3b01ec2e200241e82e6a41026a221020012d00003a0000200220022f01882f3b01e82e200241e42e6a41026a220120032d00003a0000200220022f01842f3b01e42e200241e02e6a41026a220320042d00003a0000200220022f01802f3b01e02e200241dc2e6a41026a220420082d00003a0000200220022f01fc2e3b01dc2e200241d82e6a41026a2208200a2d00003a0000200220022f01f82e3b01d82e200241d42e6a41026a220a20092d00003a0000200220022f01f42e3b01d42e200220022d00f22e3a00d22e200220022f01f02e3b01d02e200241c4066a41026a220920132d00003a0000200220022f01ec2e3b01c406200241c0066a41026a221320102d00003a0000200220022f01e82e3b01c006200241bc066a41026a221020012d00003a0000200220022f01e42e3b01bc06200241b8066a41026a220120032d00003a0000200220022f01e02e3b01b806200241b4066a41026a220320042d00003a0000200220022f01dc2e3b01b406200241b0066a41026a220420082d00003a0000200220022f01d82e3b01b006200241ac066a41026a2208200a2d00003a0000200220022f01d42e3b01ac062005450d08200241a4066a41026a220a20092d00003a0000200241a0066a41026a220920132d00003a00002002419c066a41026a221320102d00003a000020024198066a41026a221020012d00003a0000200220022d00d22e3a00aa06200220022f01d02e3b01a806200220022f01c4063b01a406200220022f01c0063b01a006200220022f01bc063b019c06200220022f01b8063b01980620024194066a41026a220120032d00003a000020024190066a41026a220320042d00003a00002002418c066a41026a220420082d00003a0000200220022f01b4063b019406200220022f01b0063b019006200220022f01ac063b018c06200041286a2016360200200041246a2012360200200041206a2011360200200041186a2007370200200041146a200d360200200041106a20153602002000410c6a200e360200200041086a200536020020002006360204200041093602002000412f6a20143600002000412c6a20022f01a8063b01002000412e6a20022d00aa063a0000200020022f01a4063b0033200041356a200a2d00003a00002000201e3600362000413c6a20092d00003a0000200020022f01a0063b003a2000201f36003d200041c3006a20132d00003a0000200020022f019c063b0041200041c4006a202b360000200041ca006a20102d00003a0000200041c8006a20022f0198063b00002000202a36004b200041d1006a20012d00003a0000200020022f0194063b004f20002020360052200041d8006a20032d00003a0000200020022f0190063b005620002021360059200041df006a20042d00003a0000200020022f018c063b005d200041e4006a200b370000200041e0006a2022360000200041ec006a200241f0266a41d40610bf091a0c480b2010450d430c410b201010310b02402007422088a72201450d002001410c6c2103200d210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2007a72201450d002001410c6c450d00200d10310b200e450d040b200810310c030b0240200e450d00200510310b02402007422088a72201450d002001410c6c2103200d210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2007a72201450d022001410c6c0d010c020b0240200e450d00200510310b02402014450d002014410c6c2103200d210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2013450d012013410c6c450d010b200d10310b200041233602000c3f0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c3e0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627290b2001280200220128020422044104490d2820012802002205280000210320012004417c6a3602042001200541046a360200410121040c270b2001280200220128020422044104490d2720012802002205280000210320012004417c6a3602042001200541046a360200410221040c260b2001280200220128020422044104490d2620012802002205280000210320012004417c6a3602042001200541046a360200410321040c250b410421042001280200220128020422054104490d2520012802002206280000210320012005417c6a3602042001200641046a3602000c240b2001280200220128020422044104490d2420012802002205280000210320012004417c6a3602042001200541046a360200410521040c230b2001280200220128020422044104490d2320012802002205280000210320012004417c6a3602042001200541046a360200410621040c220b2001280200220128020422044104490d2220012802002205280000210320012004417c6a3602042001200541046a360200410721040c210b2001280200220128020422044104490d2120012802002205280000210320012004417c6a3602042001200541046a360200410821040c200b2001280200220128020422044104490d2020012802002205280000210320012004417c6a3602042001200541046a360200410921040c1f0b2001280200220128020422044104490d1f20012802002205280000210320012004417c6a3602042001200541046a360200410a21040c1e0b2001280200220128020422044104490d1e20012802002205280000210320012004417c6a3602042001200541046a360200410b21040c1d0b2001280200220128020422044104490d1d20012802002205280000210320012004417c6a3602042001200541046a360200410c21040c1c0b200128020022032802042204450d1c200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e0201001e0b2001280200220128020422034104490d1d20012802002205280000210420012003417c6a3602042001200541046a360200410121030b2004ad21074200210b410d21040c1b0b200128020022032802042204450d1b200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e0201001d0b2001280200220128020422034104490d1c20012802002205280000210420012003417c6a3602042001200541046a360200410121030b2004ad21074200210b410e21040c1a0b2001280200220128020422044104490d1a20012802002205280000210320012004417c6a3602042001200541046a360200410f21040c190b2001280200220128020422044104490d1920012802002205280000210320012004417c6a3602042001200541046a360200411021040c180b2001280200220128020422044104490d1820012802002205280000210320012004417c6a3602042001200541046a360200411121040c170b2001280200220128020422044104490d1720012802002205280000210320012004417c6a3602042001200541046a360200411221040c160b2001280200220128020422044104490d1620012802002205280000210320012004417c6a3602042001200541046a360200411321040c150b2001280200220128020422044104490d1520012802002205280000210320012004417c6a3602042001200541046a360200411421040c140b2001280200220128020422044104490d1420012802002205280000210320012004417c6a3602042001200541046a360200411521040c130b2001280200220128020422044104490d1320012802002205280000210320012004417c6a3602042001200541046a360200411621040c120b2001280200220128020422044104490d1220012802002205280000210320012004417c6a3602042001200541046a360200411721040c110b2001280200220128020422044104490d1120012802002205280000210320012004417c6a3602042001200541046a360200411821040c100b2001280200220128020422044104490d1020012802002205280000210320012004417c6a3602042001200541046a360200411921040c0f0b2001280200220128020422044104490d0f20012802002205280000210320012004417c6a3602042001200541046a360200411a21040c0e0b2001280200220128020422034108490d0e2001280200220429000021072001200341786a3602042001200441086a3602004200210b411b21040c0d0b2001280200220128020422044104490d0d20012802002205280000210320012004417c6a3602042001200541046a360200411c21040c0c0b2001280200220128020422044104490d0c20012802002205280000210320012004417c6a3602042001200541046a360200411d21040c0b0b2001280200220128020422044104490d0b20012802002205280000210320012004417c6a3602042001200541046a360200411e21040c0a0b2001280200220128020422034110490d0a2001280200220441086a290000210b200429000021072001200441106a3602002001200341706a360204411f21040c090b2001280200220128020422034110490d092001280200220441086a290000210b200429000021072001200441106a3602002001200341706a360204412021040c080b2001280200220128020422044104490d0820012802002205280000210320012004417c6a3602042001200541046a360200412121040c070b2001280200220128020422044104490d0720012802002205280000210320012004417c6a3602042001200541046a360200412221040c060b2001280200220128020422044104490d0620012802002205280000210320012004417c6a3602042001200541046a360200412321040c050b2001280200220128020422044104490d0520012802002205280000210320012004417c6a3602042001200541046a360200412421040c040b2001280200220128020422044104490d0420012802002205280000210320012004417c6a3602042001200541046a360200412521040c030b2001280200220128020422044104490d0320012802002205280000210320012004417c6a3602042001200541046a360200412621040c020b2001280200220128020422044104490d0220012802002205280000210320012004417c6a3602042001200541046a360200412721040c010b2001280200220128020422044104490d0120012802002205280000210320012004417c6a3602042001200541046a36020042002107412821044200210b0b2000410b360200200041186a200b370200200041106a20073702002000410c6a2003360200200041086a2004360200200041206a200241f0266a41a00710bf091a0c3e0b200041233602000c3d0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c3c0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c3b0b200241901f6a200110c803024020022802901f450d00200241c8066a200241901f6a41940110bf091a2000410e360200200041046a200241c8066a41940110bf091a20004198016a200241f0266a41a80610bf091a0c3b0b200041233602000c3a0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c390b200128020022032802042204450d30200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e050001020304370b2001280200220428020422054104490d3620042802002206280000210320042005417c6a3602042004200641046a360200200241f8016a200110ab0120022802f8010d3620012802002206280204220820022802fc012205490d362005417f4c0d3a0240024020050d00410121040c010b200510352204450d392001280200220628020421080b20082005490d3520042006280200200510bf092101200628020422082005490d1f2006200820056b3602042006200628020020056a3602002001450d362005ad22074220862007842107410121010c040b2001280200220428020422054104490d3520042802002206280000210320042005417c6a3602042004200641046a36020020024180026a200110ab012002280280020d352001280200220628020422082002280284022205490d352005417f4c0d390240024020050d00410121040c010b200510352204450d382001280200220628020421080b20082005490d3420042006280200200510bf092101200628020422082005490d292006200820056b3602042006200628020020056a3602002001450d352005ad22074220862007842107410221010c030b2001280200220428020422054104490d3420042802002206280000210320042005417c6a3602042004200641046a36020020024188026a200110ab012002280288020d34200128020022062802042208200228028c022205490d342005417f4c0d380240024020050d00410121040c010b200510352204450d372001280200220628020421080b20082005490d3320042006280200200510bf0921082006280204220a2005490d292006200a20056b3602042006200628020020056a3602002008450d342005ad2207422086200784210702402001280200220128020422064104490d0020012802002208280000210520012006417c6a3602042001200841046a360200410321010c040b2007a7450d340c330b2001280200220428020422054104490d3320042802002206280000210320042005417c6a3602042004200641046a36020020024190026a200110ab012002280290020d332001280200220628020422082002280294022205490d332005417f4c0d370240024020050d00410121040c010b200510352204450d362001280200220628020421080b20082005490d3220042006280200200510bf092101200628020422082005490d292006200820056b3602042006200628020020056a3602002001450d332005ad22074220862007842107410421010c010b2001280200220128020422044104490d3220012802002205280000210320012004417c6a3602042001200541046a36020041052101420021070b0b2000200136020420004110360200200041186a2005360200200041106a20073702002000410c6a2004360200200041086a20033602002000411c6a200241f0266a41a40710bf091a0c380b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d002001280200220128020422034104490d0020012802002204280000210520012003417c6a3602042001200441046a3602002000200536020420004111360200200041086a200241f0266a41b80710bf091a0c380b200041233602000c370b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c360b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c350b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004105210402400240024002400240024020060e06000102030504060b2001280200220428020422054104490d0520042802002206280000210320042005417c6a3602042004200641046a3602002001280200220428020422064104490d0520042802002208280000210520042006417c6a3602042004200841046a3602002001280200220128020422044104490d0520012802002206280000210820012004417c6a3602042001200641046a360200410121040c040b2001280200220128020422044104490d0420012802002205280000210320012004417c6a3602042001200541046a360200410221040c030b2001280200220428020422054104490d0320042802002206280000210320042005417c6a3602042004200641046a3602002001280200220128020422044104490d0320012802002206280000210520012004417c6a3602042001200641046a360200410321040c020b410421042001280200220128020422054104490d0220012802002206280000210320012005417c6a3602042001200641046a3602000c010b410621040b2000200436020420004114360200200041106a20083602002000410c6a2005360200200041086a2003360200200041146a200241f0266a41ac0710bf091a0c350b200041233602000c340b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c330b200128020022032802042204450d27200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e0500010203042c0b2001280200220328020422054104490d2b20032802002206280000210420032005417c6a3602042003200641046a360200200241a0026a200110ab0120022802a0020d2b20012802002206280204220820022802a4022203490d2b2003417f4c0d320240024020030d00410121050c010b200310352205450d312001280200220628020421080b024020082003490d0020052006280200200310bf0921082006280204220a2003490d192006200a20036b3602042006200628020020036a3602002008450d2c20024198026a200110ab012003ad22074220862007842207a7210602402002280298020d002001280200220a2802042209200228029c022203490d002003417f4c0d340240024020030d00410121080c010b200310352208450d332001280200220a28020421090b024020092003490d002008200a280200200310bf092101200a28020422092003490d1c200a200920036b360204200a200a28020020036a3602002001450d012007421888a7210a2007420888a721092007423888a7210d2003ad22074220862007842207a7411074200141107672210e2007422888a721102007421888a721112007421088a721124200210c410121164200210f0c2f0b200810310b2006450d2c0b200510310c2b0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d2b200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021052002419f1f6a2d00002106200241901f6a41106a2f01002109200241a21f6a280100210a200241a61f6a2d0000210d200241a71f6a2f00002108200241a91f6a280000210e200241ad1f6a2d00002112200241ae1f6a2f01002111200241b01f6a2802002110200241901f6a41086a2d0000210420022802941f21032002200241991f6a2f00003b00cd06200220043a00cc06200220033602c8062001280200221328020422144110490d2a20022800cb0621042013280200221541086a290000210b201529000021072013201541106a3602002013201441706a3602042001280200221428020422154104490d2a20142802002216280000211320142015417c6a3602042014201641046a360200200241b0026a200110ab0120022802b0020d2a20012802002216280204221e20022802b4022215490d2a2015417f4c0d310240024020150d00410121140c010b201510352214450d3020012802002216280204211e0b0240201e2015490d0020142016280200201510bf09211e2016280204221f2015490d252016201f20156b3602042016201628020020156a360200201e450d2b2015ad220c422086200c84220ca72115200241a8026a200110ab01024020022802a8020d002001280200221e280204221f20022802ac022216490d002016417f4c0d330240024020160d004101212b0c010b20161035222b450d322001280200221e280204211f0b0240201f2016490d00202b201e280200201610bf092101201e280204221f2016490d1c201e201f20166b360204201e201e28020020166a3602002001450d01200c422088a7211e2016ad220c422086200c84220c422088210f200c4220862001ad84210c410221160c2e0b202b10310b2015450d2b0b201410310c2a0b2001280200220128020422034104490d2920012802002205280000210420012003417c6a3602042001200541046a36020041032116410021030c2a0b2001280200220328020422054104490d2820032802002206280000210420032005417c6a3602042003200641046a3602002001280200220128020422034104490d2820012802002206280000210520012003417c6a360204410421162001200641046a36020020022f009e1f200241901f6a41106a2d000041107472210120022f00c906210920022800cb06210a20022f00911f210820022800931f210e20022d00971f211220022f00981f2111200228009a1f21100c290b2001280200220128020422034104490d2720012802002205280000210420012003417c6a3602042001200541046a360200410521160c280b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004103210a02400240024020060e03000102030b200241c0026a200110ab0120022802c0020d0220022802c4022103200241b8026a200110ab0120022802b8020d0220022802bc0221044101210a0c010b200241f8026a200110ab0120022802f8020d0120022802fc022103200241f0026a200110ab0120022802f0020d0120022802f4022104200241e8026a200110ab0120022802e8020d0120022802ec022105200241e0026a200110ab0120022802e0020d0120022802e4022108200241c8026a200110c50320022903c802a70d01200241d8026a290300210b20022903d00221074102210a0b20004117360200200041286a200b370200200041206a2007370200200041186a2008360200200041146a2005360200200041106a20043602002000410c6a2003360200200041086a200a360200200041306a200241f0266a41900710bf091a0c320b200041233602000c310b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024002400240024020060e080001020304050607090b200241b0036a200110ab0120022802b0030d0820022802b403210520024198036a200110c503200229039803a70d08200241a8036a290300210b20022903a003210720024190036a200110ab012002280290030d08200228029403211620024188036a200110ab012002280288030d08200228028c03211e20024180036a200110ab012002280280030d08200228028403211f200241901f6a200110c90320022d00901f4104460d0820022f01901f20022d00921f411074722103200b422088a7210a200241b01f6a2f01002104200241ac1f6a2802002109200241aa1f6a2f0100210d200241a91f6a2d0000210e200241a51f6a2800002110200241a31f6a2f00002111200241a21f6a2d000021122002419e1f6a28010021132002419c1f6a2f010021142002419b1f6a2d0000211520022800971f210820022800931f2106410121010c2d0b200241d0036a200110ab0120022802d0030d0720022802d403210a200241b8036a200110c50320022903b803a70d07200128020022032802042204450d07200241c8036a290300210f20022903c003210c200328020022052d0000212a20032004417f6a3602042003200541016a3602004103210302400240202a0e020100090b200241901f6a200110ca0320022d00901f22034103460d08200241cf1f6a330000200241d11f6a31000042108684210b200241b01f6a2f0100200241b21f6a2d0000411074722104200241c71f6a2900002107200241c31f6a280000212b200241bf1f6a280000211f200241bb1f6a280000211e200241b71f6a2800002116200241b31f6a2800002105200241ac1f6a2802002109200241aa1f6a2f0100210d200241a91f6a2d0000210e200241a51f6a2800002110200241a31f6a2f00002111200241a21f6a2d000021122002419e1f6a28010021132002419c1f6a2f010021142002419b1f6a2d0000211520022800971f210820022800931f210620022f00911f21200b200b42ffffff0783210b20204108742003722103410221010c2c0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d07200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021082002419f1f6a2d00002115200241a01f6a2f01002114200241a21f6a2801002113200241a61f6a2d00002112200241a71f6a2f00002111200241a91f6a2800002110200241ad1f6a2d0000210e200241ae1f6a2f0100210d200241b01f6a2802002109200241981f6a2d0000210420022802941f21032002200241901f6a41096a2f00003b00cd06200220043a00cc06200220033602c80620022800cb062106200241d8036a200110ab0120022802d80322010d064109410320011b21014100211620022802dc0321054100210a0c2b0b200241e0036a200110ab0120022802e0030d0520022802e40321064100210a410421010c2a0b200241e8036a200110ab0120022802e8030d0420022802ec0321064100210a41052101410021030c290b200241a0046a200110ab0120022802a0040d0320022802a404210520024188046a200110c503200229038804a70d0320024198046a290300210b200229039004210720024180046a200110ab012002280280040d032002280284042116200241f8036a200110ab0120022802f8030d0320022802fc03211e200241f0036a200110ab0120022802f0030d0320022802f403211f200241901f6a200110c90320022d00901f4104460d0320022f01901f20022d00921f411074722103200b422088a7210a200241b01f6a2f01002104200241ac1f6a2802002109200241aa1f6a2f0100210d200241a91f6a2d0000210e200241a51f6a2800002110200241a31f6a2f00002111200241a21f6a2d000021122002419e1f6a28010021132002419c1f6a2f010021142002419b1f6a2d0000211520022800971f210820022800931f2106410621010c280b2001280200220328020422044104490d0220032802002205280000210620032004417c6a3602042003200541046a360200200241a8046a200110ab0120022802a8040d0220012802002204280204220520022802ac042203490d022003417f4c0d2f0240024020030d00410121080c010b200310352208450d2e2001280200220428020421050b20052003490d0120082004280200200310bf092101200428020422052003490d182004200520036b3602042004200428020020036a3602002001450d0220022f00961f200241981f6a2d00004110747221042003ad22074220862007842207423888a721122007421888a721132007420888a72114200228009d1f211620022800991f210520022800921f210920022d00ce06210e20022801ca0621102007a72115420021074100210a410721014200210b0c270b2001280200220128020422034104490d0120012802002204280000210620012003417c6a3602042001200441046a3602004100210a410821010c260b200810310b200041233602000c300b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024002400240024020060e03000102050b2001280200220328020422044104490d0420032802002205280000210920032004417c6a3602042003200541046a36020041002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d05200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021042002419f1f6a2d00002105200241901f6a41106a2f01002106200241a21f6a2801002108200241a61f6a2d0000210a200241a71f6a2f0000210d200241a91f6a280000210e200241ad1f6a2d00002110200241ae1f6a2f01002111200241b01f6a2802002112200241901f6a41086a2d0000211320022802941f21032002200241991f6a2f00003b00cd06200220133a00cc06200220033602c8062001280200221428020422154110490d0420022800cb0621132014280200221641086a29000021072016290000210b2014201641106a3602002014201541706a3602042001280200221528020422164104490d042015280200221e280000211420152016417c6a3602042015201e41046a3602002001280200221528020422164104490d042015280200221e280000210120152016417c6a3602042015201e41046a360200410121150c030b2001280200220128020422034104490d0320012802002204280000211320012003417c6a3602042001200441046a360200410221150c010b2001280200220128020422034104490d0220012802002204280000211320012003417c6a3602042001200441046a360200410321150b0b200020033b0009200020113b0023200020103a00222000200a3a001b200020063b0015200041193602002000410b6a20034110763a0000200041c0006a2007370200200041386a200b370200200041346a2001360200200041306a20143602002000412c6a2009360200200041256a20123600002000411e6a200e3601002000411c6a200d3b0100200041176a2008360000200041146a20053a0000200041106a20043602002000410c6a2013360200200041086a20153a0000200041c8006a200241f0266a41f80610bf091a0c300b200041233602000c2f0b200128020022032802042204450d21200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024002400240024020060e06000102030405270b2001280200220428020422054104490d2620042802002206280000210320042005417c6a3602042004200641046a360200200241b8046a200110ab0120022802b8040d2620012802002206280204220820022802bc042204490d262004417f4c0d2f0240024020040d00410121050c010b200410352205450d2e2001280200220628020421080b02400240024020082004490d0020052006280200200410bf0921082006280204220a2004490d1c2006200a20046b3602042006200628020020046a3602002008450d292004ad2207422086200784220ba72106200241b0046a200110ab01024020022802b0040d0020012802002208280204220a20022802b4042204490d002004417f4c0d330240024020040d00410121090c010b200410352209450d3220012802002208280204210a0b0240200a2004490d0020092008280200200410bf09210a2008280204220d2004490d1f2008200d20046b3602042008200828020020046a360200200a450d012004ad22074220862007842207a721040240200128020022012802042208450d002001280200220d2d0000210e20012008417f6a3602042001200d41016a36020041002101200e0e020504000b2004450d010b200910310b2006450d290b200510310c280b410121010b20074220882001ad4220868422074280808080108342808080802084500d26200b422088a721012004ad422086200aad84210b20024190186a200241c8066a41c00310bf091a410121040c250b2001280200220128020422044104490d2520012802002205280000210320012004417c6a3602042001200541046a36020020024190186a200241f0266a41c00310bf091a410221040c240b2001280200220128020422044104490d2420012802002205280000210320012004417c6a3602042001200541046a36020020024190186a200241f0266a41c00310bf091a410321040c230b410421042001280200220128020422054104490d2320012802002206280000210320012005417c6a3602042001200641046a36020020024190186a200241f0266a41c00310bf091a0c220b2001280200220428020422054104490d2220042802002206280000210320042005417c6a3602042004200641046a360200200128020022042802042205450d22200428020022062d0000210820042005417f6a3602042004200641016a36020020080d22200241f0266a200110a20120022d00f026410b460d2220024184276a2902002107200241fc266a290200210b20024190276a290300210c2002418c276a2802002108200241f8266a280200210120022802f426210620022802f0262105200241c8066a20024198276a41c00310bf091a200541ff0171410b460d22200241d01b6a200241c8066a41c00310bf091a20024190186a200241d01b6a41c00310bf091a410521040c210b2001280200220428020422054104490d2120042802002206280000210320042005417c6a3602042004200641046a3602002001280200220428020422064104490d2120042802002208280000210520042006417c6a3602042004200841046a3602002001280200220428020422084104490d212004280200220a280000210620042008417c6a3602042004200a41046a3602002001280200220428020422084104490d212004280200220a280000210120042008417c6a3602042004200a41046a36020020024190186a200241f0266a41c00310bf091a410621040c200b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024002400240024020060e0400010203070b2001200128020441016a2203360204200320012802084b0d06200241f0266a200110b20120022802f0262104200241901f6a200241f0266a41047241bc0710bf091a20044123460d06200241f0266a200241901f6a41bc0710bf091a41c007102f2203450d2e20032004360200200341046a200241f0266a41bc0710bf091a20012001280204417f6a36020441012108410021040c030b2001200128020441016a2203360204200320012802084b0d05200241f0266a200110b20120022802f0262104200241901f6a200241f0266a41047241bc0710bf091a20044123460d05200241f0266a200241901f6a41bc0710bf091a41c007102f2203450d2d20032004360200200341046a200241f0266a41bc0710bf091a20012001280204417f6a3602042001280200220128020422044108490d042001280200220529000021072001200441786a3602042001200541086a3602002007422088a721042007a72105410221080c020b200241f0266a200110c40320022d00f0264105460d042002418c276a290200210c20024184276a290200210b200241fc266a2902002107200241f8266a280200210420022802f426210520022802f0262103410321080c010b200241f0266a200110c40320022d00f0264105460d032002418c276a290200210c20024184276a290200210b200241fc266a2902002107200241f8266a280200210420022802f426210520022802f02621032001200128020441016a2206360204200620012802084b0d01200241f0266a200110b20120022802f0262108200241901f6a200241f0266a41047241bc0710bf091a20084123460d01200241f0266a200241901f6a41bc0710bf091a41c007102f2206450d2b2006200836020041042108200641046a200241f0266a41bc0710bf091a20012001280204417f6a3602040b2000411b360200200041306a2006360200200041286a200c370200200041206a200b370200200041186a20073702002000410c6a2003360200200041086a2008360200200041106a2004ad4220862005ad84370200200041386a200241c8066a41880710bf091a0c300b200341ff01714102470d012004450d01200510310c010b200310ab02200310310b200041233602000c2d0b0240200128020022012802042203450d0020012003417f6a3602042001200128020041016a3602000b200041233602000c2c0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240024020060e020001030b200241901f6a200110cb0320022802901f2201450d0220022902941f2107410121030c010b200241901f6a200110cb0320022802901f2201450d0120022902941f2107410221030b200020033602042000411d3602002000410c6a2007370200200041086a2001360200200041146a200241f0266a41ac0710bf091a0c2c0b200041233602000c2b0b200241c8066a200110cc03024020022d00c8064107460d00200241d01b6a41306a200241c8066a41306a2903002207370300200241d01b6a41286a200241c8066a41286a290300220b370300200241d01b6a41206a200241c8066a41206a290300220c370300200241d01b6a41186a200241c8066a41186a290300220f370300200241901f6a410c6a200241c8066a41086a290300370200200241901f6a41146a200241c8066a41106a290300370200200241901f6a411c6a200f370200200241901f6a41246a200c370200200241901f6a412c6a200b370200200241901f6a41346a2007370200200220022903c8063702941f2000411e360200200020022902901f3702042000410c6a200241901f6a41086a290200370200200041146a200241901f6a41106a2902003702002000411c6a200241901f6a41186a290200370200200041246a200241901f6a41206a2902003702002000412c6a200241901f6a41286a290200370200200041346a200241901f6a41306a2902003702002000413c6a200241c81f6a280200360200200041c0006a200241f0266a41800710bf091a0c2b0b200041233602000c2a0b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004107210402400240024002400240024020060e0700010203040521060b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d06200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120460d200c000b0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d05200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021132002419f1f6a2d00002112200241a01f6a2f01002110200241a21f6a2801002111200241a61f6a2d00002115200241a71f6a2f0000210e200241a91f6a2800002114200241ad1f6a2d0000211e200241ae1f6a2f0100210d200241b01f6a2802002116200241981f6a2d0000210120022802941f21052002200241991f6a2f00003b00cd06200220013a00cc06200220053602c80620022800cb062109410221040c1f0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d04200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021132002419f1f6a2d00002112200241a01f6a2f01002110200241a21f6a2801002111200241a61f6a2d00002115200241a71f6a2f0000210e200241a91f6a2800002114200241ad1f6a2d0000211e200241ae1f6a2f0100210d200241901f6a41206a2802002116200241981f6a2d0000210320022802941f21052002200241991f6a2f00003b00cd06200220033a00cc06200220053602c80620022800cb06210941002104200241003602901f200241901f6a410472211f0340200128020022032802042206450d04200328020022082d0000210a20032006417f6a3602042003200841016a360200201f20046a200a3a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021242002419f1f6a2d00002123200241a01f6a2f0100211f200241a21f6a2801002122200241a61f6a2d00002121200241a71f6a2f0000210a200241a91f6a2800002120200241ad1f6a2d0000212a200241ae1f6a2f01002108200241b01f6a280200212b200241981f6a2d0000210120022802941f21032002200241991f6a2f00003b00cd06200220013a00cc06200220033602c80620022800cb062125410321040c1e0b200241901f6a200110cb0320022802901f2209450d02200241981f6a2d0000211220022d009b1f211120022f00991f211020022802941f2113410421040c1d0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d02200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021132002419f1f6a2d00002112200241a01f6a2f01002110200241a21f6a2801002111200241a61f6a2d00002115200241a71f6a2f0000210e200241a91f6a2800002114200241ad1f6a2d0000211e200241ae1f6a2f0100210d200241b01f6a2802002116200241981f6a2d0000210120022802941f21052002200241991f6a2f00003b00cd06200220013a00cc06200220053602c80620022800cb062109410521040c1c0b41002104200241003602901f200241901f6a410472210a0340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200a20046a20083a00002002200441016a22033602901f2003210420034120470d000b2002419b1f6a28000021132002419f1f6a2d00002112200241a01f6a2f01002110200241a21f6a2801002111200241a61f6a2d00002115200241a71f6a2f0000210e200241a91f6a2800002114200241ad1f6a2d0000211e200241ae1f6a2f0100210d200241b01f6a2802002116200241981f6a2d0000210120022802941f21052002200241991f6a2f00003b00cd06200220013a00cc06200220053602c80620022800cb062109410621040c1b0b200041233602000c290b200241901f6a200110cd03024020022f01901f4104460d00200241c8066a41086a200241901f6a41086a2903002207370300200220022903901f220b3703c806200041203602002000200b3702042000410c6a2007370200200041146a200241f0266a41ac0710bf091a0c290b200041233602000c280b200241901f6a200110ce03024020022d00901f410b460d00200241c8066a200241901f6a41c80010bf091a20004121360200200041046a200241c8066a41c80010bf091a200041cc006a200241f0266a41f40610bf091a0c280b200041233602000c270b200128020022032802042204450d02200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e020001060b200241f0266a200110a90120022903f0264209510d05200241901f6a200241f0266a41c80310bf091a200241f0266a200110a20120022d00f026410b460d0420024184276a2902002107200241fc266a290200210b20024190276a290300210c2002418c276a2802002101200241f0266a41086a280200210420022802f426210520022802f0262106200241d01b6a20024198276a41c00310bf091a20022903901f210f200241c8066a200241901f6a41086a41c00310bf091a20024190186a200241c8066a41c00310bf091a200241d0146a200241d01b6a41c00310bf091a410121080c010b2001200128020441016a2203360204200320012802084b0d04200241f0266a200110a50120022d00f0262104200241901f6a200241f0266a41017241df0710bf091a2004410b460d04200241f0266a200241901f6a41df0710bf091a41e007102f2203450d22200320043a0000200341016a200241f0266a41df0710bf091a20012001280204417f6a3602042001280200220128020422044108490d0120012802002205290000210f2001200441786a3602042001200541086a36020020024190186a200241c8066a41c00310bf091a200241d0146a200241d01b6a41c00310bf091a410221080b20024190116a20024190186a41c00310bf091a200241d00d6a200241d0146a41c00310bf091a200041106a200f3702002000410c6a2003360200200041086a200836020020004122360200200041186a20024190116a41c00310bf091a200041ec036a2007370200200041e4036a200b370200200041f8036a200c370200200041f4036a2001360200200041e0036a2004360200200041dc036a2005360200200041d8036a200636020020004180046a200241d00d6a41c00310bf091a0c270b200310ad03200310310c020b200041233602000c250b200241901f6a10ad010b200041233602000c230b20032006419cb4c0001061000b2003200a419cb4c0001061000b2003200a419cb4c0001061000b20032010419cb4c0001061000b20052008419cb4c0001061000b2003200a419cb4c0001061000b20032009419cb4c0001061000b2016201f419cb4c0001061000b20032005419cb4c0001061000b2004200a419cb4c0001061000b2004200d419cb4c0001061000b20032006419cb4c0001061000b20032006419cb4c0001061000b20032008419cb4c0001061000b20032006419cb4c0001061000b20052008419cb4c0001061000b2005200a419cb4c0001061000b20052008419cb4c0001061000b2015201f419cb4c0001061000b2002419b1f6a28000021132002419f1f6a2d00002112200241a01f6a2f01002110200241a21f6a2801002111200241a61f6a2d00002115200241a71f6a2f0000210e200241a91f6a2800002114200241ad1f6a2d0000211e200241ae1f6a2f0100210d200241b01f6a2802002116200241981f6a2d0000210120022802941f21052002200241991f6a2f00003b00cd06200220013a00cc06200220053602c80620022800cb062109410121040b200020033b0025200020053b00052000202b360041200020083b003f2000202a3a003e2000202036003a200020213a0037200020223600332000201f3b0031200020163600212000200d3b001f2000201e3a001e2000201436001a200020153a001720002011360013200020103b0011200020043a00042000411f360200200041276a20034110763a0000200041076a20054110763a0000200041386a200a3b0000200041306a20233a00002000412c6a2024360000200041286a2025360000200041186a200e3b0000200041106a20123a00002000410c6a2013360000200041086a2009360000200041c8006a200241f0266a41f80610bf091a0c0e0b200241d0146a20024190186a41c00310bf091a200041246a20073702002000411c6a200b370200200041306a200c3702002000412c6a2008360200200041186a2001360200200041146a2006360200200041106a20053602002000410c6a2003360200200041086a20043602002000411a360200200041386a200241d0146a41c00310bf091a200041f8036a200241901f6a41c80310bf091a0c0d0b200041233602000c0c0b200020043b0029200020033b00092000200d3b00232000200e3a0022200020123a001b200020143b0015200041183602002000412b6a20044110763a00002000410b6a20034110763a0000200041d8006a200f370200200041d0006a200c370200200041c0006a20073702002000413c6a202b360200200041386a201f360200200041346a201e360200200041306a20163602002000412c6a2005360200200041256a20093600002000411e6a20103601002000411c6a20113b0100200041176a2013360000200041146a20153a0000200041106a20083602002000410c6a2006360200200041086a20013a0000200041c8006a200aad422086200b42ffffffff0f8384370200200041e0006a200241f0266a41e00610bf091a0c0b0b200041233602000c0a0b200020013b0029200020033b0009200020113b0023200020123a00222000200d3a001b200020093b0015200041163602002000412b6a20014110763a00002000410b6a20034110763a0000200041d0006a200b370200200041c8006a2007370200200041c4006a200f3e02002000413c6a200c370200200041386a201e360200200041346a2015360200200041306a20143602002000412c6a2013360200200041256a20103600002000411e6a200e3601002000411c6a20083b0100200041176a200a360000200041146a20063a0000200041106a20053602002000410c6a2004360200200041086a20163a0000200041d8006a200241f0266a41e80610bf091a0c090b200410310b200041233602000c070b200041233602000c060b1039000b200041233602000c040b103b000b02402007422088a72201450d00200141186c21032004210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200341686a22030d000b0b2007a72201450d01200141186c450d010b200410310b200041233602000b200241902f6a24000b9a1f01057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10310b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b0240200041306a2802002202450d00200241246c450d00200028022c10310b0240200041a4016a2802002201450d002000419c016a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b0240200041a0016a2802002202450d00200241246c450d00200028029c0110310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b0240200041346a2802002201450d002000412c6a2802002102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200041306a2802002202450d0b200241246c450d0b200028022c10310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a220228020010b301200228020010310f0b2000410c6a220228020010b301200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a220228020010b301200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a220228020010b301200228020010310f0b200041106a220228020010b301200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a220228020010b301200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a220228020010b301200228020010310f0b200041c8006a220228020010b301200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010a601200228020010310f0b0bce0504027f017e0a7f037e230041b0016b22032400024002400240024002402002200128020441286e2204200420024b1bad42287e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441286e2107024020020d00410021020c040b20034188016a4101722108410021094100210a4100210b034020034188016a200110b50120032d0088014101460d02200341e8006a41186a2204200841186a290000370300200341e8006a41106a220c200841106a290000370300200341e8006a41086a220d200841086a290000370300200320082900003703682001280204220e4108490d022001280200220f29000021052001200e41786a3602042001200f41086a360200200341286a41086a200d2903002210370300200341286a41106a200c2903002211370300200341286a41186a20042903002212370300200341086a41186a220c2012370300200341086a41106a220d2011370300200341086a41086a220e20103703002003200329036822103703282003201037030802400240200b2007470d002009200b41016a2204200920044b1b22044104200441044b1bad42287e2210422088a74541037421042010a7210f02400240200b0d0020034100360288010c010b20034108360290012003200a36028c0120032006360288010b200341e8006a200f200420034188016a104e2003280270210420032802684101460d01200328026c2106200441286e21070b2006200a6a22042003290308370300200441186a200c290300370300200441106a200d290300370300200441086a200e290300370300200441206a2005370300200941026a2109200a41286a210a2002200b41016a220b460d050c010b0b20040d020b103b000b200041003602002007450d02200741286c450d02200610310c020b1039000b2000200736020420002006360200200041086a20023602000b200341b0016a24000bf405010a7f41002102230041f0006b22034100360228200341286a410472210420012802042105024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420026a20073a00002003200241016a22063602282006210220064120470d000b200341e8006a41026a2201200341356a2d00003a0000200341e4006a41026a22052003413c6a2d00003a0000200320032f012c3b016c200320032d002e3a006e2003200341286a410b6a2f00003b01682003200341286a41126a2f01003b0164200341366a2801002102200328002f21062003413d6a28000021072003200341286a41196a28000036025c2003200341c4006a28000036005f200341c8006a2802002104200320032d006e3a0026200320032f016c3b0124200341d8006a41026a220820012d00003a0000200320032f01683b0158200341d4006a41026a220120052d00003a0000200320032f01643b0154200341d0006a41026a220520032d005e3a0000200320032f015c3b0150200328005f2109200341206a41026a220a20082d00003a0000200320032f01583b01202003411c6a41026a220820012d00003a0000200320032f01543b011c200341186a41026a220120052d00003a0000200320032f01503b0118200341146a41026a220520032d00263a0000200320032f01243b0114200341106a41026a220b200a2d00003a0000200320032f01203b01102003410c6a41026a220a20082d00003a0000200320032f011c3b010c200341086a41026a220820012d00003a0000200320032f01183b0108200041046a2006360000200041036a20052d00003a0000200020032f01143b00012000410b6a2002360000200041086a20032f01103b00002000410a6a200b2d00003a0000200041126a20073600002000410f6a20032f010c3b0000200041116a200a2d00003a0000200041166a20032f01083b0000200041186a20082d00003a00002000411d6a2004360000200041196a2009360000200041003a00000f0b200041013a00000b900403027f017e077f230041d0166b22032400024002400240024002402002200128020441c0076e2204200420024b1bad42c0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441c0076e2107024020020d00410021020c040b200341800f6a410472210841002109410021044100210a0340200341800f6a200110b70120032802800f210b200341c4076a200841bc0710bf091a200b4123460d02200341086a200341c4076a41bc0710bf091a02400240200a2007470d002009200a41016a220c2009200c4b1b220c4104200c41044b1bad42c0077e2205422088a745410374210c2005a7210702400240200a0d00200341003602800f0c010b200341083602880f200320043602840f200320063602800f0b200341c0166a2007200c200341800f6a104e20032802c816210c20032802c0164101460d0120032802c4162106200c41c0076e21070b200620046a220c200b360200200c41046a200341086a41bc0710bf091a200941026a2109200441c0076a21042002200a41016a220a460d050c010b0b200c0d020b103b000b200041003602000240200a450d002006210a0340200a10b301200a41c0076a210a200441c0786a22040d000b0b2007450d02200741c0076c450d02200610310c020b1039000b2000200736020420002006360200200041086a20023602000b200341d0166a24000bcdc50109067f017e027f027e037f017e0b7f067e107f230041802e6b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200141046a2104200128020022052d0000210620012003417f6a22073602042001200541016a36020020060e6401020304052406072408090a0b240c0d0e0f101112131415161718191a1b1c1d24241e2424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241f20242424242424242421222424242424242423240b200041233602000c470b2007450d4520052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024002400240024020060e0a00010203040506070809510b20074104490d502005280002210620012003417a6a3602042001200541066a3602002006418194ebdc034f0d5041012101410021030c0a0b2002200110bb0120022802000d4f2004280200220520022802042203490d4f2003417f4c0d4d0240024020030d00410121060c010b200310352206450d4c200428020021050b20052003490d4e20062001280200200310bf092105200128020422072003490d302001200720036b3602042001200128020020036a3602002005450d4f2003ad220842208620088421084102410b20051b21010c080b20074108490d4e200529000221082001200341766a36020420012005410a6a360200410321010c080b200241086a200110bb0120022802080d4d20042802002205200228020c2203490d4d2003417f4c0d4b0240024020030d00410121060c010b200310352206450d4a200428020021050b20052003490d4c20062001280200200310bf092105200128020422072003490d372001200720036b3602042001200128020020036a3602002005450d4d2003ad220842208620088421084104410b20051b21010c060b200241106a200110bb0120022802100d4c2004280200220520022802142203490d4c2003417f4c0d4a0240024020030d00410121060c010b200310352206450d49200428020021050b20052003490d4b20062001280200200310bf092105200128020422072003490d372001200720036b3602042001200128020020036a3602002005450d4c2003ad220842208620088421084105410b20051b21010c050b200241c01e6a200110b00320022802c01e22064102460d4b20022902c41e2108410621010c040b200241286a200110bb0120022802280d4a200228022c2207200428020041186e2203200320074b1bad42187e2208422088a70d482008a72203417f4c0d480240024020030d00410421060c010b2003102f2206450d470b200341186ead2108024002402007450d000340200241206a200110bb010240024020022802200d002004280200220520022802242203490d002003417f4c0d4d0240024020030d00410121090c010b200310352209450d4c200428020021050b024020052003490d0020092001280200200310bf09210a200128020422052003490d322001200520036b3602042001200128020020036a360200200a450d01200241186a200110bb012003ad220b422086200b84220ca7210d024020022802180d0020042802002205200228021c2203490d002003417f4c0d4f0240024020030d004101210e0c010b20031035220e450d4e200428020021050b0240024020052003490d00200e2001280200200310bf09210e2001280204220520034f0d0120032005419cb4c0001061000b200e10310c010b2001200520036b3602042001200128020020036a360200200e0d030b200d450d010b200910310b02402008422088a72201450d00200141186c21032006210103400240200141046a280200450d00200128020010310b0240200141106a280200450d002001410c6a28020010310b200141186a2101200341686a22030d000b0b2008a72201450d4e200141186c450d4e0c4d0b02402008422088220ba722052008a7470d00200541016a22092005490d4c2005410174220f20092009200f491b22094104200941044b1bad42187e220b422088a7454102742109200ba7210f0240024020050d00200241003602c01e0c010b200241043602c81e200220063602c01e2002200541186c3602c41e0b200241f8056a200f2009200241c01e6a104e200228028006210920022802f8054101460d0320022802fc0521062008422088220ba72105200941186ead21080b2006200541186c6a2205200d3602042005200a360200200541106a2003ad22104220862010843702002005410c6a200e360200200541086a200c422088a7360200200b422086200842ffffffff0f83844280808080107c21082007417f6a22070d000b0b2006450d4b4107410b20061b21010c040b20090d460c480b200241c01e6a200110b10320022802c01e2206450d4920022902c41e2108410821010c020b200241306a200110bb0120022802300d482004280200220520022802342203490d482003417f4c0d460240024020030d00410121060c010b200310352206450d45200428020021050b20052003490d4720062001280200200310bf092105200128020422072003490d342001200720036b3602042001200128020020036a3602002005450d482003ad220842208620088421080240200428020022054104490d0020012802002207280000210320012005417c6a3602042001200741046a360200410921010c030b2008a70d470c480b200241386a200110bb0120022802380d4720042802002205200228023c2203490d472003417f4c0d450240024020030d00410121060c010b200310352206450d44200428020021050b20052003490d4620062001280200200310bf092105200128020422072003490d342001200720036b3602042001200128020020036a3602002005450d472003ad22084220862008842108410a410b20051b21010b0b20004100360200200041186a2003360200200041106a20083702002000410c6a2006360200200041086a2001360200200041206a200241a0266a41a00710bf091a0c460b2007450d4120052d0001210620012003417e6a3602042001200541026a3602000240024002400240024020060e03000103460b200241c01e6a200110b203200241cc1e6a2802002205450d45200241d41e6a2802002103200241d01e6a280200210620022802c81e210e20022903c01e2108200241801b6a200241d81e6a41e40010bf091a200241c41f6a2802002104200241c01e6a4180016a2802002107200241bc1f6a280200210a200241f8056a200241c81f6a41800110bf091a200241c01e6a200110b303024020022802c41e2209450d00200241cc1e6a290200210b20022802c81e210d20022802c01e210f200241c0106a200241801b6a41e40010bf091a200241c0176a200241f8056a41800110bf091a410121010c040b02402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200510310b02402004450d00200441246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2007450d45200741246c0d010c450b200241c01e6a200110b203200241cc1e6a2802002205450d44200241d41e6a2802002103200241d01e6a280200210620022802c81e210e20022903c01e2108200241801b6a200241d81e6a41e40010bf091a200241c41f6a2802002104200241c01e6a4180016a2802002107200241bc1f6a280200210a200241f8056a200241c81f6a41800110bf091a200241c01e6a200110b303024020022802c41e2209450d00200241cc1e6a290200210b20022802c81e210d20022802c01e210f200241c0106a200241801b6a41e40010bf091a200241c0176a200241f8056a41800110bf091a410221010c030b02402003450d00200341246c21032005210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200510310b02402004450d00200441246c2103200a210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2007450d44200741246c450d440b200a10310c430b200241c01e6a200110b4034103210120022d00d01e4103460d42200241d01e6a290300210820022903c81e210b20022802c41e210d20022802c01e2109200241c0106a200241800d6a41e40010bf091a200241c0176a200241801b6a41800110bf091a0b20024190056a200241c0106a41e40010bf091a20024180146a200241c0176a41800110bf091a200041206a2008370200200041186a200b370200200041346a2003360200200041306a20063602002000412c6a2005360200200041286a200e360200200041146a200d360200200041106a20093602002000410c6a200f360200200041086a200136020020004101360200200041386a20024190056a41e40010bf091a200041a4016a2004360200200041a0016a20073602002000419c016a200a360200200041a8016a20024180146a41800110bf091a200041a8026a200241a0266a41980510bf091a0c450b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241c0006a200110bc012002290340a70d002002290348210820004102360200200041086a2008370300200041106a200241a0266a41b00710bf091a0c450b200041233602000c440b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024020060e050001020304080b20074104490d072005280002210620012003417a6a3602042001200541066a360200410121110c040b200241c01e6a200110b50120022d00c01e4101460d06200428020022114104490d06200241dd1e6a2800002103200241dc1e6a2d00002105200241db1e6a2d00002107200241da1e6a2d00002104200241d61e6a280100210a200241d51e6a2d0000210e200241d41e6a2d00002109200241d31e6a2d0000210d200241cf1e6a280000210f200241ce1e6a2d00002112200241cd1e6a2d00002113200241cc1e6a2d00002114200241c81e6a280200211520022802c41e210620022d00c31e211620022d00c21e211720022d00c11e211820012802002219280000211a20012011417c6a3602042001201941046a360200200220123a00fe05200220133a00fd05200220143a00fc05200220153602f805410221110c040b20074104490d052005280002210620012003417a6a3602042001200541066a360200410321110c020b200241c01e6a200110b50120022d00c01e4101460d04200428020022114104490d04200241dd1e6a2800002103200241dc1e6a2d00002105200241db1e6a2d00002107200241da1e6a2d00002104200241d61e6a280100210a200241d51e6a2d0000210e200241d41e6a2d00002109200241d31e6a2d0000210d200241cf1e6a280000210f200241ce1e6a2d00002114200241cd1e6a2d00002115200241cc1e6a2d00002119200241c81e6a280200211b20022802c41e210620022d00c31e211620022d00c21e211720022d00c11e211820012802002212280000211a20012011417c6a22133602042001201241046a22123602002013450d0420122d0000211320012011417b6a3602042001201241016a360200410021010240024020130e020100060b410121010b200220143a00fe05200220153a00fd05200220193a00fc052002201b3602f805410421110c030b20074104490d032005280002210620012003417a6a3602042001200541066a360200410521110b0b0b200220022800fb053600831b200220022802f8053602801b200041086a2006360200200020163a0007200020173a0006200020183a0005200020113a0004200041033602002000410c6a20022802801b3602002000410f6a20022800831b360000200041286a201a360200200020013a0025200041216a2003360000200041206a20053a0000200020073a001f200020043a001e2000411a6a200a3601002000200e3a0019200041186a20093a00002000200d3a0017200041136a200f3600002000412c6a200241a0266a41940710bf091a0c440b200041233602000c430b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602000240024002400240024002400240024020060e0400010203080b200241c01e6a200110b50320022d00c01e22034105460d07200241dc1e6a2902002108200241d41e6a290200210b200241cc1e6a290200210c200241c81e6a280200210520022802c41e210620022f00c11e210720022d00c31e2104200241d0006a200110b60302402002290350a70d0020072004411074722101200241d0006a41106a290300211c2002290358211d41012107410021044100210a0c040b20034102470d0720050d060c070b200241c01e6a200110b50320022d00c01e22034105460d06200241dc1e6a2902002108200241d41e6a290200210b200241cc1e6a290200210c200241c81e6a280200210520022802c41e210620022f00c11e210720022d00c31e210420024180016a200110b603200229038001a70d0420024180016a41106a290300211c200229038801211d200241e8006a200110b6032002290368a70d0420072004411074722101200241e8006a41106a290300211e2002290370211f41022107410021044100210a0c020b200241c01e6a200110b50320022d00c01e4105460d05200241dc1e6a2902002108200241d41e6a290200210b200241cc1e6a2207290200210c200241c81e6a2204280200210520022802c41e210620022802c01e2103200241c01e6a200110b503024020022d00c01e4105460d00200241d81e6a290300211e200241c01e6a41106a290300211f200241e01e6a35020021102007280200210e2004280200210420022802c41e210a20022802c01e210720024198016a200110b6030240200229039801a70d0020022903a001212020034108762101200ead4220862004ad84211c200aad4220862007ad84211d20024198016a41106a2903002221422088a7210a2021a72104410321070c030b200741ff01714102470d002004450d00200a10310b200341ff01714102470d0520050d040c050b200241c01e6a200110b50320022d00c01e4105460d04200241dc1e6a2902002108200241d41e6a290200210b200241cc1e6a290200210c200241c01e6a41086a280200210520022802c41e210620022802c01e2103200241b0016a200110b60320022903b001a70d01200241c0016a290300211c20022903b801211d200341087621014200211f410421074200211e0b200020013b000d200041043602002000410f6a20014110763a0000200041d8006a2020370200200041c8006a201e370200200041c0006a201f370200200041386a201c370200200041306a201d370200200041d0006a2010370200200041286a2008370200200041206a200b370200200041186a200c370200200041146a2005360200200041106a20063602002000410c6a20033a0000200041086a2007360200200041e0006a200aad4220862004ad84370200200041e8006a200241a0266a41d80610bf091a0c460b200341ff01714102470d0220050d010c020b20034102470d012005450d010b200610310b200041233602000c420b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241c8016a200110bb0120022802c8010d0020022802cc012206200428020041f0006e2203200320064b1bad42f0007e2208422088a70d3f2008a72203417f4c0d3f0240024020030d00410421070c010b2003102f2207450d3e0b200341f0006ead21080240024002402006450d00200241c01e6a41086a210e0340200241c01e6a200110b70320022802c41e210520022802c01e2104200241f8056a200e41e80010bf091a2005450d03200241801b6a200241f8056a41e80010bf091a02402008422088220ba722032008a7470d00200341016a220a2003490d4420034101742209200a200a2009491b220a4104200a41044b1bad42f0007e220b422088a745410274210a200ba721090240024020030d00200241003602c01e0c010b200241043602c81e200220073602c01e2002200341f0006c3602c41e0b200241c0176a2009200a200241c01e6a104e20022802c817210a20022802c0174101460d0320022802c41721072008422088220ba72103200a41f0006ead21080b2007200341f0006c6a2203200536020420032004360200200341086a200241801b6a41e80010bf091a200b422086200842ffffffff0f83844280808080107c21082006417f6a22060d000b0b2007450d022000200736020420004105360200200041086a2008370200200041106a200241a0266a41b00710bf091a0c440b200a450d400c3e0b02402008422088a72201450d002007200141f0006c6a2106200721010340024020012205410c6a2802002203450d0020052802042101200341246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b200541f0006a21010240200541086a2802002203450d00200341246c450d00200528020410310b20012006470d000b0b2008a72201450d00200141f0006c450d00200710310b200041233602000c410b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c400b2007450d3920052d0001210620012003417e6a360204410221072001200541026a3602000240024020060e0200013b0b200241c01e6a200110e30120022d00c01e4101460d3a200241f8056a200241c01e6a41017241e10110bf091a200241d0016a200110bb0120022802d0010d3a2004280200220620022802d4012205490d3a2005417f4c0d3d0240024020050d00410121030c010b200510352203450d3c200428020021060b0240024020062005490d0020032001280200200510bf0921062001280204220720054f0d0120052007419cb4c0001061000b200310310c3b0b2001200720056b3602042001200128020020056a3602002006450d3a2005ad22084220862008842108200241801b6a200241f8056a41e10110bf091a200220022f0180143b01c010410121070b200241c0176a200241801b6a41e10110bf091a200220022f01c0103b01800d200020073a000420004107360200200041056a200241c0176a41e10110bf091a200041ec016a2008370100200041e8016a2003360100200020022f01800d3b01e601200041f4016a200241a0266a41cc0510bf091a0c3f0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b200241c01e6a200110b80320022903c81e22084202510d0320022802cc1e210320022802c41e210520022802c01e2106200241801b6a200241d01e6a41e40010bf091a200241b81f6a280200210720022802bc1f210420022802b41f210a200241f8056a200241c01e6a4180016a41800110bf091a200241c01e6a200110b30320022802c41e220e450d032008a72101200241cc1e6a290200210820022802c81e210d20022802c01e210920024190056a200241801b6a41e40010bf091a200241c0176a200241f8056a41800110bf091a4101210f0c020b200241c01e6a200110b80320022903c81e22084202510d0220022802cc1e210320022802c41e210520022802c01e2106200241c0106a200241d01e6a41e40010bf091a200241b81f6a280200210720022802bc1f210420022802b41f210a200241f8056a200241c01e6a4180016a41800110bf091a200241c01e6a200110b30320022802c41e220e450d022008a72101200241cc1e6a290200210820022802c81e210d20022802c01e2109200241800d6a200241c0106a41e40010bf091a200241801b6a200241f8056a41800110bf091a20024190056a200241800d6a41e40010bf091a200241c0176a200241801b6a41800110bf091a4102210f0c010b20074104490d012005280002210920012003417a6a22063602042001200541066a36020020064104490d012005280006210e2001200341766a36020420012005410a6a36020020024190056a200241f8056a41e40010bf091a200241c0176a200241c01e6a41800110bf091a4103210f0b200241ac046a20024190056a41e40010bf091a20024180146a200241c0176a41800110bf091a2000412c6a2003360200200041286a2001360200200041246a2005360200200041206a2006360200200041186a2008370200200041146a200d360200200041106a200e3602002000410c6a2009360200200041086a200f36020020004108360200200041306a200241ac046a41e40010bf091a2000419c016a200436020020004198016a200736020020004194016a200a360200200041a0016a20024180146a41800110bf091a200041a0026a200241a0266a41a00510bf091a0c3f0b200041233602000c3e0b2007450d3620052d0001210620012003417e6a22073602042001200541026a36020020060d3620074104490d362005280002210620012003417a6a3602042001200541066a360200200241e8016a200110bb0120022802e8010d362004280200220520022802ec012203490d362003417f4c0d3a0240024020030d00410121070c010b200310352207450d39200428020021050b02400240024020052003490d0020072001280200200310bf09210d200128020422052003490d222001200520036b3602042001200128020020036a360200200d450d392003ad22084220862008842210a72116200241e0016a200110bb01024020022802e0010d0020022802e401220e2004280200410c6e22032003200e4b1bad420c7e2208422088a70d3e2008a72203417f4c0d3e0240024020030d00410421090c010b2003102f2209450d3d0b2003410c6ead21080240024002400240200e450d000340200241d8016a200110bb0120022802d8010d042004280200220520022802dc012203490d042003417f4c0d430240024020030d004101210a0c010b20031035220a450d42200428020021050b20052003490d03200a2001280200200310bf09210a200128020422052003490d292001200520036b3602042001200128020020036a360200200a450d0402402008422088220ba722052008a7470d00200541016a220f2005490d4420054101742217200f200f2017491b220f4104200f41044b1bad420c7e220b422088a745410274210f200ba721170240024020050d00200241003602c01e0c010b200241043602c81e200220093602c01e20022005410c6c3602c41e0b200241f8056a2017200f200241c01e6a104e200228028006210f20022802f8054101460d0320022802fc0521092008422088220ba72105200f410c6ead21080b20092005410c6c6a22052003ad220c422086200c843702042005200a360200200b422086200842ffffffff0f83844280808080107c2108200e417f6a220e0d000b0b2009450d03200d450d3d200428020022034104490d0520012802002205280000210420012003417c6a22073602042001200541046a36020020074104490d052005280004210a2001200341786a22073602042001200541086a36020020074104490d05200528000821072001200341746a36020420012005410c6a360200200241c01e6a200110b90320022d00c01e4101470d062008422088a7210102402016450d00200d10310b2008a7210502402001450d002001410c6c21032009210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2005450d3d2005410c6c450d3d0c3c0b200f450d400c3e0b200a10310b02402008422088a72201450d002001410c6c21032009210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2008a72201450d002001410c6c450d00200910310b2016450d390b200710310c380b02402016450d00200d10310b02402008422088a72201450d002001410c6c21032009210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b2008a72201450d372001410c6c0d360c370b200241cb1e6a2f00002101200241cd1e6a2d00002103200241ce1e6a2801002105200241d21e6a2f0100210e200241c01e6a41146a2d0000210f200241d51e6a2800002117200241d91e6a2f00002118200241db1e6a2d0000211a200241dc1e6a2802002111200241c01e6a41206a2f01002112200241e21e6a2d00002113200241e31e6a290000210b200241eb1e6a290000210c200241f31e6a2800002114200241f71e6a290000211f20022f00c11e211520022900c31e211e200041ea006a200241ff1e6a3300003d0100200041e2006a201f370100200041de006a2014360100200041d6006a200c370100200041ce006a200b370100200020133a004d200020123b004b200041c7006a20113600002000201a3a0046200041c4006a20183b0100200041c0006a20173602002000200f3a003f2000200e3b003d200041396a2005360000200041386a20033a0000200020013b01362000412e6a201e3701002000412c6a20153b0100200041286a2007360200200041246a200a360200200041206a2004360200200041186a2008370200200041146a2009360200200041106a2010422088a73602002000410c6a2016360200200041086a200d3602002000200636020420004109360200200041ec006a200241a0266a41d40610bf091a0c3d0b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c3c0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627290b20074104490d282005280002210620012003417a6a3602042001200541066a360200410121040c270b20074104490d272005280002210620012003417a6a3602042001200541066a360200410221040c260b20074104490d262005280002210620012003417a6a3602042001200541066a360200410321040c250b4104210420074104490d252005280002210620012003417a6a3602042001200541066a3602000c240b20074104490d242005280002210620012003417a6a3602042001200541066a360200410521040c230b20074104490d232005280002210620012003417a6a360204410621042001200541066a3602000c220b20074104490d222005280002210620012003417a6a3602042001200541066a360200410721040c210b20074104490d212005280002210620012003417a6a3602042001200541066a360200410821040c200b20074104490d202005280002210620012003417a6a3602042001200541066a360200410921040c1f0b20074104490d1f2005280002210620012003417a6a3602042001200541066a360200410a21040c1e0b20074104490d1e2005280002210620012003417a6a3602042001200541066a360200410b21040c1d0b20074104490d1d2005280002210620012003417a6a3602042001200541066a360200410c21040c1c0b2007450d1c20052d0002210720012003417d6a220a3602042001200541036a360200410021060240024020070e0201001e0b200a4104490d1d200528000321042001200341796a3602042001200541076a360200410121060b2004ad21084200210b410d21040c1b0b2007450d1b20052d0002210720012003417d6a220a3602042001200541036a360200410021060240024020070e0201001d0b200a4104490d1c200528000321042001200341796a3602042001200541076a360200410121060b2004ad21084200210b410e21040c1a0b20074104490d1a2005280002210620012003417a6a3602042001200541066a360200410f21040c190b20074104490d192005280002210620012003417a6a3602042001200541066a360200411021040c180b20074104490d182005280002210620012003417a6a3602042001200541066a360200411121040c170b20074104490d172005280002210620012003417a6a3602042001200541066a360200411221040c160b20074104490d162005280002210620012003417a6a3602042001200541066a360200411321040c150b20074104490d152005280002210620012003417a6a3602042001200541066a360200411421040c140b20074104490d142005280002210620012003417a6a3602042001200541066a360200411521040c130b20074104490d132005280002210620012003417a6a3602042001200541066a360200411621040c120b20074104490d122005280002210620012003417a6a3602042001200541066a360200411721040c110b20074104490d112005280002210620012003417a6a3602042001200541066a360200411821040c100b20074104490d102005280002210620012003417a6a3602042001200541066a360200411921040c0f0b20074104490d0f2005280002210620012003417a6a3602042001200541066a360200411a21040c0e0b20074108490d0e200529000221082001200341766a36020420012005410a6a3602004200210b411b21040c0d0b20074104490d0d2005280002210620012003417a6a3602042001200541066a360200411c21040c0c0b20074104490d0c2005280002210620012003417a6a3602042001200541066a360200411d21040c0b0b20074104490d0b2005280002210620012003417a6a3602042001200541066a360200411e21040c0a0b20074110490d0a2005410a6a290000210b2005290002210820012003416e6a3602042001200541126a360200411f21040c090b20074110490d092005410a6a290000210b2005290002210820012003416e6a3602042001200541126a360200412021040c080b20074104490d082005280002210620012003417a6a3602042001200541066a360200412121040c070b20074104490d072005280002210620012003417a6a3602042001200541066a360200412221040c060b20074104490d062005280002210620012003417a6a3602042001200541066a360200412321040c050b20074104490d052005280002210620012003417a6a3602042001200541066a360200412421040c040b20074104490d042005280002210620012003417a6a3602042001200541066a360200412521040c030b20074104490d032005280002210620012003417a6a3602042001200541066a360200412621040c020b20074104490d022005280002210620012003417a6a3602042001200541066a360200412721040c010b20074104490d012005280002210620012003417a6a3602042001200541066a36020042002108412821044200210b0b2000410b360200200041186a200b370200200041106a20083702002000410c6a2006360200200041086a2004360200200041206a200241a0266a41a00710bf091a0c3c0b200041233602000c3b0b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c3a0b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c390b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d00200241c01e6a200110ba0320022802c01e2201450d00200241f8056a200241c01e6a41047241900110bf091a200241801b6a200241f8056a41900110bf091a200020013602042000410e360200200041086a200241801b6a41900110bf091a20004198016a200241a0266a41a80610bf091a0c390b200041233602000c380b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c370b2007450d2d20052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024020060e050001020304340b20074104490d332005280002210620012003417a6a3602042001200541066a360200200241f0016a200110bb0120022802f0010d332004280200220720022802f4012205490d332005417f4c0d390240024020050d00410121030c010b200510352203450d38200428020021070b20072005490d3220032001280200200510bf092107200128020422042005490d202001200420056b3602042001200128020020056a3602002007450d332005ad22084220862008842108410121010c040b20074104490d322005280002210620012003417a6a3602042001200541066a360200200241f8016a200110bb0120022802f8010d322004280200220720022802fc012205490d322005417f4c0d380240024020050d00410121030c010b200510352203450d37200428020021070b20072005490d3120032001280200200510bf092107200128020422042005490d282001200420056b3602042001200128020020056a3602002007450d322005ad22084220862008842108410221010c030b20074104490d312005280002210620012003417a6a3602042001200541066a36020020024180026a200110bb012002280280020d31200428020022072002280284022205490d312005417f4c0d370240024020050d00410121030c010b200510352203450d36200428020021070b20072005490d3020032001280200200510bf0921072001280204220a2005490d282001200a20056b3602042001200128020020056a3602002007450d312005ad220842208620088421080240200428020022074104490d0020012802002204280000210520012007417c6a3602042001200441046a360200410321010c040b2008a7450d310c300b20074104490d302005280002210620012003417a6a3602042001200541066a36020020024188026a200110bb012002280288020d3020042802002207200228028c022205490d302005417f4c0d360240024020050d00410121030c010b200510352203450d35200428020021070b20072005490d2f20032001280200200510bf092107200128020422042005490d282001200420056b3602042001200128020020056a3602002007450d302005ad22084220862008842108410421010c010b20074104490d2f2005280002210620012003417a6a3602042001200541066a36020041052101420021080b0b2000200136020420004110360200200041186a2005360200200041106a20083702002000410c6a2003360200200041086a20063602002000411c6a200241a0266a41a40710bf091a0c360b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d0020074104490d002005280002210620012003417a6a3602042001200541066a3602002000200636020420004111360200200041086a200241a0266a41b80710bf091a0c360b200041233602000c350b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c340b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c330b02402007450d0020052d0001210620012003417e6a22093602042001200541026a3602004105210402400240024002400240024020060e06000102030504060b20094104490d052005280002210720012003417a6a22063602042001200541066a36020020064104490d052005280006210a2001200341766a220636020420012005410a6a36020020064104490d05200528000a210e2001200341726a36020420012005410e6a360200410121040c040b20094104490d042005280002210720012003417a6a3602042001200541066a360200410221040c030b20094104490d032005280002210720012003417a6a22063602042001200541066a36020020064104490d032005280006210a2001200341766a36020420012005410a6a360200410321040c020b4104210420094104490d022005280002210720012003417a6a3602042001200541066a3602000c010b410621040b2000200436020420004114360200200041106a200e3602002000410c6a200a360200200041086a2007360200200041146a200241a0266a41ac0710bf091a0c330b200041233602000c320b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c310b2007450d2420052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024020060e050001020304290b20074104490d282005280002210620012003417a6a3602042001200541066a36020020024198026a200110bb012002280298020d2820042802002205200228029c022203490d282003417f4c0d310240024020030d00410121070c010b200310352207450d30200428020021050b024020052003490d0020072001280200200310bf0921052001280204220a2003490d1a2001200a20036b3602042001200128020020036a3602002005450d2920024190026a200110bb012003ad22084220862008842208a7210302402002280290020d002004280200220a200228029402220f490d00200f417f4c0d3302400240200f0d00410121050c010b200f10352205450d322004280200210a0b0240200a200f490d0020052001280200200f10bf0921042001280204220a200f490d1d2001200a200f6b36020420012001280200200f6a3602002004450d012008421888a7210a2008421088a7210e2008420888a721092008423888a7210d200fad22084220862008842208a7411074200441107672210f200441087621162008422888a721172008422088a721182008421888a7211a2008421088a721114200210c41012104420021100c2c0b200510310b2003450d290b200710310c280b200241c01e6a200110b50120022d00c01e4101460d272004280200221b4110490d27200241dd1e6a2800002117200241dc1e6a2d00002118200241db1e6a2d0000211a200241da1e6a2d00002111200241d61e6a280100210f200241d51e6a2d00002116200241d41e6a2d00002105200241d31e6a2d0000210d200241cf1e6a280000210a200241ce1e6a2d0000210e200241cd1e6a2d00002109200241cc1e6a2d00002103200241c01e6a41086a280200210720022802c41e210620022d00c31e211220022d00c21e211320022d00c11e21142001280200221941086a290000210b201929000021082001201941106a3602002001201b41706a221536020420154104490d27201928001021152001201b416c6a3602042001201941146a360200200241a8026a200110bb0120022802a8020d272004280200222220022802ac02221b490d27201b417f4c0d3002400240201b0d00410121190c010b201b10352219450d2f200428020021220b02402022201b490d0020192001280200201b10bf09212220012802042223201b490d2420012023201b6b36020420012001280200201b6a3602002022450d28201bad220c422086200c84220ca7211b200241a0026a200110bb01024020022802a0020d002004280200222220022802a4022223490d002023417f4c0d320240024020230d00410121240c010b202310352224450d31200428020021220b024020222023490d0020242001280200202310bf092104200128020422222023490d1d2001202220236b3602042001200128020020236a3602002004450d01200c422088a721222023ad220c422086200c84220c4220882110200c4220862004ad84210c41022104410021010c2b0b202410310b201b450d280b201910310c270b20074104490d262005280002210620012003417a6a3602042001200541066a360200410321040c270b20074104490d252005280002210620012003417a6a22073602042001200541066a36020020074104490d25200528000621072001200341766a36020420012005410a6a36020020022f00c51e20022d00c71e41107472210120022800f905210a20022800811b210f20022800c11e2117410421040c260b20074104490d242005280002210620012003417a6a3602042001200541066a360200410521040c250b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004103210a02400240024020060e03000102030b200241b8026a200110bb0120022802b8020d0220022802bc022103200241b0026a200110bb0120022802b0020d0220022802b40221054101210a0c010b200241f0026a200110bb0120022802f0020d0120022802f4022103200241e8026a200110bb0120022802e8020d0120022802ec022105200241e0026a200110bb0120022802e0020d0120022802e4022107200241d8026a200110bb0120022802d8020d0120022802dc022104200241c0026a200110b60320022903c002a70d01200241d0026a290300210b20022903c80221084102210a0b20004117360200200041286a200b370200200041206a2008370200200041186a2004360200200041146a2007360200200041106a20053602002000410c6a2003360200200041086a200a360200200041306a200241a0266a41900710bf091a0c300b200041233602000c2f0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024002400240024020060e080001020304050607090b200241a8036a200110bb0120022802a8030d0820022802ac03210320024190036a200110b603200229039003a70d08200241a0036a290300210b200229039803210820024188036a200110bb012002280288030d08200228028c03211920024180036a200110bb012002280280030d08200228028403211b200241f8026a200110bb0120022802f8020d0820022802fc022123200241c01e6a200110bb0320022d00c01e22044104460d08200b422088a72107200241e11e6a2d00002124200241e01e6a2d00002122200241dc1e6a2802002117200241db1e6a2d00002118200241da1e6a2d0000211a200241d91e6a2d0000210a200241d51e6a2800002111200241d41e6a2d00002112200241d31e6a2d00002113200241d21e6a2d0000210e200241ce1e6a2801002109200241cd1e6a2d0000210d200241cc1e6a2d0000210f200241cb1e6a2d0000211620022800c71e210520022800c31e210620022d00c21e211420022d00c11e2115410121010c2a0b200241c8036a200110bb0120022802c8030d0720022802cc032107200241b0036a200110b60320022903b003a70d0720042802002225450d07200241c0036a290300211020022903b803210c200128020022262d0000212720012025417f6a22283602042001202641016a360200410321040240024020270e020100090b2028450d0820262d0001210320012025417e6a220a3602042001202641026a36020002400240024020030e030001020b0b200241c01e6a200110b90320022d00c01e4101460d0a200241ff1e6a330000210b200241f71e6a2900002108200241f31e6a2800002129200241ef1e6a2800002123200241eb1e6a280000211b200241e71e6a2800002119200241e31e6a2800002103200241e21e6a2d0000212a200241e11e6a2d00002124200241e01e6a2d00002122200241dc1e6a2802002117200241db1e6a2d00002118200241da1e6a2d0000211a200241d91e6a2d0000210a200241d51e6a2800002111200241d41e6a2d00002112200241d31e6a2d00002113200241d21e6a2d0000210e200241ce1e6a2801002109200241cd1e6a2d0000210d200241cc1e6a2d0000210f200241cb1e6a2d0000211620022800c71e210520022800c31e210620022d00c21e211420022d00c11e2115410021040c020b200241c01e6a200110b9034101210420022d00c01e4101460d09200241ff1e6a330000210b200241f71e6a2900002108200241f31e6a2800002129200241ef1e6a2800002123200241eb1e6a280000211b200241e71e6a2800002119200241e31e6a2800002103200241e21e6a2d0000212a200241e11e6a2d00002124200241e01e6a2d00002122200241dc1e6a2802002117200241db1e6a2d00002118200241da1e6a2d0000211a200241d91e6a2d0000210a200241d51e6a2800002111200241d41e6a2d00002112200241d31e6a2d00002113200241d21e6a2d0000210e200241ce1e6a2801002109200241cd1e6a2d0000210d200241cc1e6a2d0000210f200241cb1e6a2d0000211620022800c71e210520022800c31e210620022d00c21e211420022d00c11e21150c010b41002103200241003602c01e2025417d6a2105200241c01e6a410472210e0340200a2003460d09202620036a220641026a2d00002104200120053602042001200641036a360200200e20036a20043a00002002200341016a22063602c01e2005417f6a210520062103200641c100470d000b200220022802c01e3602c017200220022800c31e3600c317200241f31e6a2900002108200241c01e6a41086a2d00002101200241c91e6a2d00002103200241ca1e6a2801002105200241ce1e6a2d00002116200241cf1e6a2d0000210f200241c01e6a41106a2d0000210d200241d11e6a2800002109200241d51e6a2d0000210e200241d61e6a2d00002113200241d71e6a2d00002112200241c01e6a41186a2802002111200241dc1e6a2d0000210a200241dd1e6a2d0000211a200241c01e6a411e6a2d00002118200241c01e6a411f6a2800002117200241e31e6a2800002122200241e71e6a2800002106200241eb1e6a2800002104200241ef1e6a2800002114200241fb1e6a330000210b200241fd1e6a310000211f20022d00c71e2115200241801b6a41086a200241861f6a2f01003b01002002200241fe1e6a2901003703801b20022802c01741c100490d16200241f8056a411e6a20022800831b3600002002200837028806200241f8056a41186a200b201f42108684220b3d010020024192066a200b4210883c000020022014360284062002200436028006200220063602fc05200220223602f805200220022802801b36009306200341187420014110747220154108747220022d00c6177221062022411076212a20224108762124200241f8056a411f6a33000020024199066a31000042108684210b2008421888a7212920022d00c417211520022d00c5172114200228008706212320022800ff052119200228008306211b20022800fb052103200229008f062108410221040b200b42ffffff0783210b410221010c290b200241c01e6a200110b50120022d00c01e4101460d06200241dd1e6a2800002117200241dc1e6a2d00002118200241db1e6a2d0000211a200241da1e6a2d0000210a200241d61e6a2801002111200241d51e6a2d00002112200241d41e6a2d00002113200241d31e6a2d0000210e200241cf1e6a2800002109200241ce1e6a2d0000210d200241cd1e6a2d0000210f200241cc1e6a2d00002116200241c81e6a280200210520022802c41e210620022d00c31e211420022d00c21e211520022d00c11e2104200241d0036a200110bb0120022802d00322010d064109410320011b21014100211920022802d4032103410021070c280b200241d8036a200110bb0120022802d8030d0520022802dc03210641002107410421010c270b200241e0036a200110bb0120022802e0030d0420022802e403210641002107410521010c260b20024198046a200110bb012002280298040d03200228029c04210320024180046a200110b603200229038004a70d0320024190046a290300210b2002290388042108200241f8036a200110bb0120022802f8030d0320022802fc032119200241f0036a200110bb0120022802f0030d0320022802f403211b200241e8036a200110bb0120022802e8030d0320022802ec032123200241c01e6a200110bb0320022d00c01e22044104460d03200b422088a72107200241e11e6a2d00002124200241e01e6a2d00002122200241dc1e6a2802002117200241db1e6a2d00002118200241da1e6a2d0000211a200241d91e6a2d0000210a200241d51e6a2800002111200241d41e6a2d00002112200241d31e6a2d00002113200241d21e6a2d0000210e200241ce1e6a2801002109200241cd1e6a2d0000210d200241cc1e6a2d0000210f200241cb1e6a2d0000211620022800c71e210520022800c31e210620022d00c21e211420022d00c11e2115410621010c250b20074104490d022005280002210620012003417a6a3602042001200541066a360200200241a0046a200110bb0120022802a0040d022004280200220720022802a4042203490d022003417f4c0d2e0240024020030d00410121050c010b200310352205450d2d200428020021070b20072003490d0120052001280200200310bf092107200128020422042003490d192001200420036b3602042001200128020020036a3602002007450d022003ad22084220862008842208423888a7210e2008421888a721092008421088a7210d2008420888a7210f20022802c41e211920022d00841b212220022d00fc05210a2008a721164200210841002107410721014200210b0c240b20074104490d012005280002210620012003417a6a3602042001200541066a36020041002107410821010c230b200510310b200041233602000c2e0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024020060e03000102050b20074104490d042005280002210620012003417a6a3602042001200541066a360200200241c01e6a200110b50120022d00c01e4101460d04200428020022224110490d04200241dd1e6a2800002103200241dc1e6a2d00002105200241db1e6a2d00002107200241da1e6a2d00002104200241d61e6a280100210a200241d51e6a2d0000210e200241d41e6a2d00002109200241d31e6a2d0000210d200241cf1e6a280000210f200241ce1e6a2d00002116200241cd1e6a2d00002117200241cc1e6a2d00002118200241c01e6a41086a280200211a20022802c41e211120022d00c31e211220022d00c21e211320022d00c11e21142001280200221b41086a2900002108201b290000210b2001201b41106a3602002001202241706a221536020420154104490d04201b280010211520012022416c6a22193602042001201b41146a36020020194104490d04201b28001421192001202241686a3602042001201b41186a360200410121010c030b20074104490d032005280002211120012003417a6a3602042001200541066a360200410221010c010b20074104490d022005280002211120012003417a6a3602042001200541066a360200410321010b0b200020073a0023200020043a00222000200e3a001d2000200d3a001b200020163a0016200020173a0015200020123a000b200020133a000a200020143a000920004119360200200041c0006a2008370200200041386a200b370200200041346a2019360200200041306a20153602002000412c6a2006360200200041256a2003360000200041246a20053a00002000411e6a200a3601002000411c6a20093a0000200041176a200f360000200041146a20183a0000200041106a201a3602002000410c6a2011360200200041086a20013a0000200041c8006a200241a0266a41f80610bf091a0c2e0b200041233602000c2d0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024020060e06000102030405060b20074104490d052005280002210620012003417a6a3602042001200541066a360200200241a0266a200110bc0320022d00b8264102460d05200241b4266a290200210820022902ac26210b20022802a826210e20022802a426210a20022802a0262107200241c0176a200241f8056a41c00310bf091a410121040c240b20074104490d042005280002210620012003417a6a3602042001200541066a360200200241c0176a200241a0266a41c00310bf091a410221040c230b20074104490d032005280002210620012003417a6a3602042001200541066a360200200241c0176a200241a0266a41c00310bf091a410321040c220b4104210420074104490d022005280002210620012003417a6a3602042001200541066a360200200241c0176a200241a0266a41c00310bf091a0c210b20074104490d012005280002210620012003417a6a22073602042001200541066a3602002007450d0120052d000621072001200341796a3602042001200541076a36020020070d01200241a0266a200110c30120022d00a026410b460d01200241b4266a2902002108200241ac266a290200210b200241c0266a290300210c200241bc266a2802002101200241a8266a280200210e20022802a426210a20022802a0262107200241f8056a200241c8266a41c00310bf091a200741ff0171410b460d01200241801b6a200241f8056a41c00310bf091a200241c0176a200241801b6a41c00310bf091a410521040c200b20074104490d002005280002210620012003417a6a22073602042001200541066a36020020074104490d00200528000621072001200341766a220436020420012005410a6a36020020044104490d00200528000a210a2001200341726a220436020420012005410e6a36020020044104490d00200528000e210e20012003416e6a3602042001200541126a360200200241c0176a200241a0266a41c00310bf091a410621040c1f0b200041233602000c2c0b02402007450d0020052d0001210620012003417e6a3602042001200541026a360200024002400240024002400240024020060e0400010203070b200241a0266a200110b70120022802a0262101200241c01e6a200241a0266a41047241bc0710bf091a20014123460d06200241a0266a200241c01e6a41bc0710bf091a41c007102f2203450d2d20032001360200200341046a200241a0266a41bc0710bf091a41012107410021050c030b200241a0266a200110b70120022802a0262105200241c01e6a200241a0266a41047241bc0710bf091a20054123460d05200241a0266a200241c01e6a41bc0710bf091a41c007102f2203450d2c20032005360200200341046a200241a0266a41bc0710bf091a200428020022054108490d042001280200220629000021082001200541786a3602042001200641086a3602002008422088a721052008a72106410221070c020b200241a0266a200110b50320022d00a0264105460d04200241bc266a290200210c200241b4266a290200210b200241ac266a2902002108200241a8266a280200210520022802a426210620022802a0262103410321070c010b200241a0266a200110b50320022d00a0264105460d03200241bc266a290200210c200241b4266a290200210b200241ac266a2902002108200241a8266a280200210520022802a426210620022802a0262103200241a0266a200110b70120022802a0262107200241c01e6a200241a0266a41047241bc0710bf091a20074123460d01200241a0266a200241c01e6a41bc0710bf091a41c007102f2201450d2a2001200736020041042107200141046a200241a0266a41bc0710bf091a0b2000411b360200200041306a2001360200200041286a200c370200200041206a200b370200200041186a20083702002000410c6a2003360200200041086a2007360200200041106a2005ad4220862006ad84370200200041386a200241f8056a41880710bf091a0c2e0b200341ff01714102470d012005450d01200610310c010b200310ab02200310310b200041233602000c2b0b02402007450d0020012003417e6a3602042001200541026a3602000b200041233602000c2a0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024020060e020001030b200241c01e6a200110e80120022802c01e2201450d0220022902c41e2108410121030c010b200241c01e6a200110e80120022802c01e2201450d0120022902c41e2108410221030b200020033602042000411d3602002000410c6a2008370200200041086a2001360200200041146a200241a0266a41ac0710bf091a0c2a0b200041233602000c290b200241f8056a200110bd03024020022d00f8054107460d00200241801b6a41306a200241f8056a41306a2903002208370300200241801b6a41286a200241f8056a41286a290300220b370300200241801b6a41206a200241f8056a41206a290300220c370300200241801b6a41186a200241f8056a41186a2903002210370300200241c01e6a410c6a200241f8056a41086a290300370200200241c01e6a41146a200241f8056a41106a290300370200200241c01e6a411c6a2010370200200241c01e6a41246a200c370200200241c01e6a412c6a200b370200200241c01e6a41346a2008370200200220022903f8053702c41e2000411e360200200020022902c01e3702042000410c6a200241c01e6a41086a290200370200200041146a200241c01e6a41106a2902003702002000411c6a200241c01e6a41186a290200370200200041246a200241c01e6a41206a2902003702002000412c6a200241c01e6a41286a290200370200200041346a200241c01e6a41306a2902003702002000413c6a200241f81e6a280200360200200041c0006a200241a0266a41800710bf091a0c290b200041233602000c280b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004107210502400240024002400240024020060e070001020304051f060b200241c01e6a200110b5014101210520022d00c01e4101460d05200241dd1e6a2800002114200241dc1e6a2d0000210d200241db1e6a2d00002109200241da1e6a2d00002115200241d61e6a2801002112200241d51e6a2d0000210e200241d41e6a2d0000210a200241d31e6a2d00002113200241cf1e6a2800002118200241ce1e6a2d00002104200241cd1e6a2d00002107200241cc1e6a2d0000211a200241c81e6a280200211120022802c41e210320022d00c31e210f20022d00c21e211620022d00c11e21170c1e0b200241c01e6a200110b50120022d00c01e4101460d04200241dd1e6a2800002114200241dc1e6a2d0000210d200241db1e6a2d00002109200241da1e6a2d00002115200241d61e6a2801002112200241d51e6a2d0000210e200241d41e6a2d0000210a200241d31e6a2d00002113200241cf1e6a2800002118200241ce1e6a2d00002104200241cd1e6a2d00002107200241cc1e6a2d0000211a200241c81e6a280200211120022802c41e210320022d00c31e210f20022d00c21e211620022d00c11e2117410221050c1d0b200241c01e6a200110b50120022d00c01e4101460d03200241dd1e6a22052800002114200241dc1e6a22062d0000210d200241db1e6a22192d00002109200241da1e6a221b2d00002115200241d61e6a22222801002112200241d51e6a22232d0000210e200241d41e6a222a2d0000210a200241d31e6a22262d00002113200241cf1e6a22252800002118200241ce1e6a222b2d00002104200241cd1e6a222c2d00002107200241cc1e6a222d2d0000211a200241c81e6a222e280200211120022802c41e210320022d00c31e210f20022d00c21e211620022d00c11e2117200241c01e6a200110b50120022d00c01e4101460d032005280000212720062d0000212920192d00002124201b2d000021282022280100212f20232d00002123202a2d0000212220262d0000213020252800002131202b2d0000211b202c2d00002119202d2d0000212b202e280200212c20022802c41e212d20022d00c31e212a20022d00c21e212620022d00c11e2125410321050c1c0b200241c01e6a200110e80120022802c01e2203450d02200241c81e6a2d0000211a20022d00cb1e211820022d00ca1e210420022d00c91e210720022802c41e2111410421050c1b0b200241c01e6a200110b50120022d00c01e4101460d01200241dd1e6a2800002114200241dc1e6a2d0000210d200241db1e6a2d00002109200241da1e6a2d00002115200241d61e6a2801002112200241d51e6a2d0000210e200241d41e6a2d0000210a200241d31e6a2d00002113200241cf1e6a2800002118200241ce1e6a2d00002104200241cd1e6a2d00002107200241cc1e6a2d0000211a200241c81e6a280200211120022802c41e210320022d00c31e210f20022d00c21e211620022d00c11e2117410521050c1a0b200241c01e6a200110b50120022d00c01e4101460d00200241dd1e6a2800002114200241dc1e6a2d0000210d200241db1e6a2d00002109200241da1e6a2d00002115200241d61e6a2801002112200241d51e6a2d0000210e200241d41e6a2d0000210a200241d31e6a2d00002113200241cf1e6a2800002118200241ce1e6a2d00002104200241cd1e6a2d00002107200241cc1e6a2d0000211a200241c81e6a280200211120022802c41e210320022d00c31e210f20022d00c21e211620022d00c11e2117410621050c190b200041233602000c270b200241c01e6a200110be03024020022f01c01e4104460d00200241f8056a41086a200241c01e6a41086a2903002208370300200220022903c01e220b3703f805200041203602002000200b3702042000410c6a2008370200200041146a200241a0266a41ac0710bf091a0c270b200041233602000c260b200241c01e6a200110bf03024020022d00c01e410b460d00200241f8056a200241c01e6a41c80010bf091a20004121360200200041046a200241f8056a41c80010bf091a200041cc006a200241a0266a41f40610bf091a0c260b200041233602000c250b2007450d0220052d0001210620012003417e6a3602042001200541026a360200024002400240024020060e020001060b200241a0266a200110ba0120022903a0264209510d05200241c01e6a200241a0266a41c80310bf091a200241a0266a200110c30120022d00a026410b460d04200241b4266a2902002108200241ac266a290200210b200241c0266a290300210c200241bc266a2802002101200241a0266a41086a280200210520022802a426210620022802a0262107200241801b6a200241c8266a41c00310bf091a20022903c01e2110200241f8056a200241c01e6a41086a41c00310bf091a200241c0176a200241f8056a41c00310bf091a20024180146a200241801b6a41c00310bf091a410121040c010b200241a0266a200110c40120022d00a0262105200241c01e6a200241a0266a41017241df0710bf091a2005410b460d04200241a0266a200241c01e6a41df0710bf091a41e007102f2203450d21200320053a0000200341016a200241a0266a41df0710bf091a200428020022054108490d012001280200220629000021102001200541786a3602042001200641086a360200200241c0176a200241f8056a41c00310bf091a20024180146a200241801b6a41c00310bf091a410221040b200241c0106a200241c0176a41c00310bf091a200241800d6a20024180146a41c00310bf091a200041106a20103702002000410c6a2003360200200041086a200436020020004122360200200041186a200241c0106a41c00310bf091a200041ec036a2008370200200041e4036a200b370200200041f8036a200c370200200041f4036a2001360200200041e0036a2005360200200041dc036a2006360200200041d8036a200736020020004180046a200241800d6a41c00310bf091a0c250b200310ad03200310310c020b200041233602000c230b200241c01e6a10ad010b200041233602000c210b41fdefc900411b4198f0c900103c000b20032007419cb4c0001061000b20032005419cb4c0001061000b20032005419cb4c0001061000b20032005419cb4c0001061000b20052004419cb4c0001061000b2003200a419cb4c0001061000b200f200a419cb4c0001061000b20232022419cb4c0001061000b20032004419cb4c0001061000b20032007419cb4c0001061000b20032007419cb4c0001061000b20032007419cb4c0001061000b20032007419cb4c0001061000b20052004419cb4c0001061000b2005200a419cb4c0001061000b20052004419cb4c0001061000b201b2023419cb4c0001061000b20002027360041200020243a003f200020283a003e2000202f36003a200020233a0039200020303a0037200020313600332000201b3a0032200020193a00312000202a3a0027200020263a0026200020253a002520002014360021200020093a001f200020153a001e2000201236001a2000200e3a0019200020133a001720002018360013200020043a0012200020073a00112000200f3a0007200020163a0006200020173a0005200020053a00042000411f360200200041c0006a20293a0000200041386a20223a0000200041306a202b3a00002000412c6a202c360000200041286a202d360000200041206a200d3a0000200041186a200a3a0000200041106a201a3a00002000410c6a2011360000200041086a2003360000200041c8006a200241a0266a41f80610bf091a0c0e0b20024180146a200241c0176a41c00310bf091a200041246a20083702002000411c6a200b370200200041306a200c3702002000412c6a2001360200200041186a200e360200200041146a200a360200200041106a20073602002000410c6a2006360200200041086a20043602002000411a360200200041386a20024180146a41c00310bf091a200041f8036a200241c01e6a41c80310bf091a0c0d0b2000202a3a002b200020243a002a200020223a00292000201a3a00232000200a3a0022200020123a001d2000200e3a001b2000200d3a00162000200f3a0015200020143a000b200020153a000a200020043a000920004118360200200041d8006a2010370200200041d0006a200c370200200041c0006a20083702002000413c6a2029360200200041386a2023360200200041346a201b360200200041306a20193602002000412c6a2003360200200041256a2017360000200041246a20183a00002000411e6a20113601002000411c6a20133a0000200041176a2009360000200041146a20163a0000200041106a20053602002000410c6a2006360200200041086a20013a0000200041c8006a2007ad422086200b42ffffffff0f8384370200200041e0006a200241a0266a41e00610bf091a0c0c0b200041233602000c0b0b200020013b00292000201a3a0023200020113a0022200020163a001d2000200d3a001b2000200e3a0016200020093a0015200020123a000b200020133a000a200020143a0009200041163602002000412b6a20014110763a0000200041d0006a200b370200200041c8006a2008370200200041c4006a20103e02002000413c6a200c370200200041386a2022360200200041346a201b360200200041306a20193602002000412c6a2015360200200041256a2017360000200041246a20183a00002000411e6a200f3601002000411c6a20053a0000200041176a200a360000200041146a20033a0000200041106a20073602002000410c6a2006360200200041086a20043a0000200041d8006a200241a0266a41e80610bf091a0c0a0b200310310b200041233602000c080b200910310b200041233602000c060b200041233602000c050b1039000b200041233602000c030b103b000b200610310b200041233602000b200241802e6a24000bf91707027f017e0f7f017e047f037e017f230041e0176b2203240002400240024002400240200220012802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b20044198046e2107024020020d00410021020c040b20034190086a41bc036a2108200341e8136a410c6a2109200341e8136a41046a210a20034190086a41cc036a210b20034190086a41c4036a210c200341f00f6a410472210d200341f00f6a410c6a210e4100210f41002110034002400240024002400240024002400240024020012802042204450d00200128020022112d0000211220012004417f6a3602042001201141016a3602000240024002400240024002400240024020120e080001020304050607080b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a410021110c0f0b200341e8136a200110b90120032802e8132212450d0920032802f013211320032802ec132114200341e8136a200110ba01024020032903e81322154209510d0020032802f013211620034190086a200941bc0310bf091a200820032903f00f370200200841086a200341f00f6a41086a290300370200200841106a200341f00f6a41106a290300370200200841186a200341f00f6a41186a290300370200200841206a200341f00f6a41206a290300370200200841286a200341f00f6a41286a290300370200200320032f01a80c3b01fe0b41012111410021042012211720142118201321192015211a0c0e0b02402013450d00201341f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2014450d09201441f8036c450d09201210310c090b200341f00f6a200110b90120032802f00f2212450d0820032802f80f211320032802f40f2114200341f00f6a200110ba01024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a2003200110bb01024002402003280200450d00200341003602f00f0c010b200341f00f6a2001200328020410b80120032802f00f0d0d0b200341a80c6a10ad010b02402013450d00201341f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2014450d08201441f8036c450d08201210310c080b200341f00f6a200110b90120032802f00f2212450d0720032802f80f211320032802f40f2114200341f00f6a200110b901024020032802f00f450d00200320032f01a80c3b01fe0b20032802f80f211620032903f00f211a20034190086a200341e8136a41ec0310bf091a41032111410021042012211720142118201321190c0c0b02402013450d00201341f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2014450d07201441f8036c450d07201210310c070b200341f00f6a200110b90120032802f00f2212450d0620032802f80f211320032802f40f2114200341f00f6a200110ba01024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a200341086a200110bb01024002402003280208450d00200341003602f00f0c010b200341f00f6a2001200328020c10b80120032802f00f0d0a0b200341a80c6a10ad010b02402013450d00201341f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2014450d06201441f8036c450d06201210310c060b200341f00f6a200110b90120032802f00f2212450d0520032802f80f211320032802f40f2114200341f00f6a200110ba01024020032903f00f4209510d00200341a80c6a200341f00f6a41c80310bf091a200341106a200110bb01024002402003280210450d00200341003602f00f0c010b200341f00f6a2001200328021410b80120032802f00f0d080b200341a80c6a10ad010b02402013450d00201341f8036c2111201221040340200410aa01200441f8036a2104201141887c6a22110d000b0b2014450d05201441f8036c450d05201210310c050b200341186a200110bc012003290318a70d0420032903202115200341e8136a200110ba0120032903e8134209510d04200341f00f6a200341e8136a41c80310bf091a200341e8136a200110b90120032802e8132212450d0220032802f013211920032802ec13211820032802f00f211620034190086a200d41c40310bf091a200c20032903a80c370200200c41086a200341a80c6a41086a290300370200200c41106a200341a80c6a41106a290300370200200c41186a200341a80c6a41186a290300370200200c41206a200341a80c6a41206a290300370200200320032f01800c3b01fe0b4106211141002104201221172015211a0c080b200341e8136a200110bd0120032802e813410c460d03200341f00f6a200341e8136a41f80310bf091a200128020422044108490d022001280200221129000021152001200441786a22123602042001201141086a36020020124108490d022011290008211b2001200441706a22123602042001201141106a22113602002012450d0220112d0000211220012004416f6a3602042001201141016a360200410021140240024020120e020100040b410121140b200341286a200110bb0102402003280228450d00200341003602e8130c030b200341e8136a2001200328022c10be0120032802e8132212450d0220032802f013211920032802ec13211820032903f00f211a20032802f80f211620034190086a200e41ec0310bf091a200320032f01a80c3b01fe0b410721114100210420122117201b21052015211c2014211d0c070b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a0c0a0b200341f00f6a10ad010c010b200341f00f6a10aa010b41082111410121040c030b20032802f80f211620032903f00f211a200a200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200b41186a200341800c6a41186a290300370200200b41106a200341800c6a41106a290300370200200b41086a200341800c6a41086a290300370200200b20032903800c37020041052111410021042012211720142118201321190c020b20032802f80f211620032903f00f211a200a200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200b41186a200341800c6a41186a290300370200200b41106a200341800c6a41106a290300370200200b41086a200341800c6a41086a290300370200200b20032903800c37020041042111410021042012211720142118201321190c010b20032802f80f211620032903f00f211a200a200341a80c6a41c80310bf091a200320032f01a60c3b01fe0b20034190086a200341e8136a41cc0310bf091a200b41186a200341800c6a41186a290300370200200b41106a200341800c6a41106a290300370200200b41086a200341800c6a41086a290300370200200b20032903800c37020041022111410021042012211720142118201321190b200320032f01fe0b3b018e08200341a2046a20034190086a41ec0310bf091a20040d030b200320032f018e083b01a004200341346a200341a2046a41ec0310bf091a0240024020102007470d0020104101742204201041016a2212200420124b1b22044104200441044b1bad4298047e2215422088a74541037421042015a721120240024020100d00200341003602e8130c010b200341083602f013200320063602e813200320104198046c3602ec130b200341f00f6a20122004200341e8136a104e20032802f80f210420032802f00f4101460d0120032802f40f210620044198046e21070b200620104198046c6a2204201d3a0001200420113a0000200420163600182004201a3700102004201936000c2004201836000820042017360004200420032f01a0043b00022004411c6a200341346a41ec0310bf091a20042005370090042004201c37008804200f4198046a210f201041016a2204211020042002460d050c010b0b20040d020b103b000b2000410036020002402010450d00200621040340200410bf0120044198046a2104200f41e87b6a220f0d000b0b2007450d0220074198046c450d02200610310c020b1039000b2000200736020420002006360200200041086a20023602000b200341e0176a24000bb30403037f017e077f230041800c6b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240200228020c2203200128020441f8036e2204200420034b1bad42f8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441f8036e2107024020030d00410021030c040b200241f8076a410472210841002109410021044100210a0340200241f8076a200110bd0120022802f807210b20024184046a200841f40310bf091a200b410c460d02200241106a20024184046a41f40310bf091a02400240200a2007470d002009200a41016a220c2009200c4b1b220c4104200c41044b1bad42f8037e2205422088a745410374210c2005a7210702400240200a0d00200241003602f8070c010b2002410836028008200220043602fc07200220063602f8070b200241f00b6a2007200c200241f8076a104e20022802f80b210c20022802f00b4101460d0120022802f40b2106200c41f8036e21070b200620046a220c200b360200200c41046a200241106a41f40310bf091a200941026a2109200441f8036a21042003200a41016a220a460d050c010b0b200c0d020b103b000b200041003602000240200a450d002006210a0340200a10aa01200a41f8036a210a200441887c6a22040d000b0b2007450d02200741f8036c450d02200610310c020b1039000b2000200736020420002006360200200041086a20033602000b200241800c6a24000b917503047f077e2d7f230041d0096b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a36020020050e0901020304050607080a090b200042093703000c3b0b200042003703000c3a0b20024198096a200110b204024020022d009809410a460d00200241e0086a41306a20024198096a41306a2903002206370300200241e0086a41286a20024198096a41286a2903002207370300200241e0086a41206a20024198096a41206a2903002208370300200241e0086a41186a20024198096a41186a2903002209370300200241e0086a41106a20024198096a41106a290300220a370300200241e0086a41086a20024198096a41086a290300220b3703002002200229039809220c3703e008200042013703002000200c370308200041106a200b370300200041186a200a370300200041206a2009370300200041286a2008370300200041306a2007370300200041386a2006370300200041c0006a200241880310bf091a0c3a0b200042093703000c390b20024198096a200110b20420022d009809410a460d11200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a220d290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b204024020022d009809410a460d00200241f0076a41306a22012004290300370300200241f0076a41286a2204200d290300370300200241f0076a41206a220d200f290300370300200241f0076a41186a220f2011290300370300200241f0076a41106a22112013290300370300200241f0076a41086a22132015290300370300200241a8086a41086a22152014290300370300200241a8086a41106a22142012290300370300200241a8086a41186a22122010290300370300200241a8086a41206a2210200e290300370300200241a8086a41286a220e2005290300370300200241a8086a41306a2205200329030037030020022002290398093703f007200220022903e0083703a80820004202370300200020022903a808370308200041106a2015290300370300200041186a2014290300370300200041206a2012290300370300200041286a2010290300370300200041306a200e290300370300200041386a2005290300370300200041c0006a20022903f007370300200041c8006a2013290300370300200041d0006a2011290300370300200041d8006a200f290300370300200041e0006a200d290300370300200041e8006a2004290300370300200041f0006a2001290300370300200041f8006a200241d00210bf091a0c390b20004209370300200241e0086a10ca040c380b20024198096a200110b20420022d009809410a460d11200241a8086a41306a20024198096a41306a2203290300370300200241a8086a41286a20024198096a41286a2204290300370300200241a8086a41206a20024198096a41206a2205290300370300200241a8086a41186a20024198096a41186a220d290300370300200241a8086a41106a20024198096a41106a220e290300370300200241a8086a41086a20024198096a41086a220f29030037030020022002290398093703a80820024198096a200110b20420022d009809410a460d0e200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a200d290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f29030037030020022002290398093703e00820024198096a200110b204024020022d009809410a460d0020024180076a41306a220120024198096a41306a29030037030020024180076a41286a220320024198096a41286a29030037030020024180076a41206a220420024198096a41206a29030037030020024180076a41186a220520024198096a41186a29030037030020024180076a41106a220d20024198096a41106a29030037030020024180076a41086a220e20024198096a41086a290300370300200241f0076a41086a220f200241a8086a41086a290300370300200241f0076a41106a2210200241a8086a41106a290300370300200241f0076a41186a2211200241a8086a41186a290300370300200241f0076a41206a2212200241a8086a41206a290300370300200241f0076a41286a2213200241a8086a41286a290300370300200241f0076a41306a2214200241a8086a41306a290300370300200220022903980937038007200220022903a8083703f007200241b8076a41306a2215200241e0086a41306a290300370300200241b8076a41286a2216200241e0086a41286a290300370300200241b8076a41206a2217200241e0086a41206a290300370300200241b8076a41186a2218200241e0086a41186a290300370300200241b8076a41106a2219200241e0086a41106a290300370300200241b8076a41086a221a200241e0086a41086a290300370300200220022903e0083703b80720004203370300200020022903f007370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a20022903b807370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a2001290300370300200041a0016a200329030037030020004198016a200429030037030020004190016a200529030037030020004188016a200d29030037030020004180016a200e290300370300200041f8006a200229038007370300200041b0016a200241980210bf091a0c380b20004209370300200241e0086a10ca040c0f0b20024198096a200110b20420022d009809410a460d11200241f0076a41306a20024198096a41306a2203290300370300200241f0076a41286a20024198096a41286a2204290300370300200241f0076a41206a20024198096a41206a2205290300370300200241f0076a41186a20024198096a41186a220d290300370300200241f0076a41106a20024198096a41106a220e290300370300200241f0076a41086a20024198096a41086a220f29030037030020022002290398093703f00720024198096a200110b20420022d009809410a460d12200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a200d290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f29030037030020022002290398093703a80820024198096a200110b20420022d009809410a460d0b200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a220d290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b204024020022d009809410a460d0020024190066a41306a2201200429030037030020024190066a41286a2204200d29030037030020024190066a41206a220d200f29030037030020024190066a41186a220f201129030037030020024190066a41106a2211201329030037030020024190066a41086a22132015290300370300200241b8076a41086a2215200241f0076a41086a290300370300200241b8076a41106a2216200241f0076a41106a290300370300200241b8076a41186a2217200241f0076a41186a290300370300200241b8076a41206a2218200241f0076a41206a290300370300200241b8076a41286a2219200241f0076a41286a290300370300200241b8076a41306a221a200241f0076a41306a290300370300200220022903980937039006200220022903f0073703b80720024180076a41306a221b200241a8086a41306a29030037030020024180076a41286a221c200241a8086a41286a29030037030020024180076a41206a221d200241a8086a41206a29030037030020024180076a41186a221e200241a8086a41186a29030037030020024180076a41106a221f200241a8086a41106a29030037030020024180076a41086a2220200241a8086a41086a290300370300200220022903a80837038007200241c8066a41306a22212003290300370300200241c8066a41286a22032005290300370300200241c8066a41206a2205200e290300370300200241c8066a41186a220e2010290300370300200241c8066a41106a22102012290300370300200241c8066a41086a22122014290300370300200220022903e0083703c80620004204370300200020022903b807370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a200229038007370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a200329030037030020004198016a200529030037030020004190016a200e29030037030020004188016a201029030037030020004180016a2012290300370300200041f8006a20022903c806370300200041e0016a2001290300370300200041d8016a2004290300370300200041d0016a200d290300370300200041c8016a200f290300370300200041c0016a2011290300370300200041b8016a2013290300370300200041b0016a200229039006370300200041e8016a200241e00110bf091a0c370b20004209370300200241e0086a10ca040c0c0b20024198096a200110b20420022d009809410a460d12200241b8076a41306a20024198096a41306a2203290300370300200241b8076a41286a20024198096a41286a2204290300370300200241b8076a41206a20024198096a41206a2205290300370300200241b8076a41186a20024198096a41186a220d290300370300200241b8076a41106a20024198096a41106a220e290300370300200241b8076a41086a20024198096a41086a220f29030037030020022002290398093703b80720024198096a200110b20420022d009809410a460d13200241f0076a41306a2003290300370300200241f0076a41286a2004290300370300200241f0076a41206a2005290300370300200241f0076a41186a200d290300370300200241f0076a41106a200e290300370300200241f0076a41086a200f29030037030020022002290398093703f00720024198096a200110b20420022d009809410a460d14200241a8086a41306a20024198096a41306a2203290300370300200241a8086a41286a20024198096a41286a2204290300370300200241a8086a41206a20024198096a41206a2205290300370300200241a8086a41186a20024198096a41186a220d290300370300200241a8086a41106a20024198096a41106a220e290300370300200241a8086a41086a20024198096a41086a220f29030037030020022002290398093703a80820024198096a200110b20420022d009809410a460d08200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a200d290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f29030037030020022002290398093703e00820024198096a200110b204024020022d009809410a460d00200241a0056a41306a220120024198096a41306a290300370300200241a0056a41286a220320024198096a41286a290300370300200241a0056a41206a220420024198096a41206a290300370300200241a0056a41186a220520024198096a41186a290300370300200241a0056a41106a220d20024198096a41106a290300370300200241a0056a41086a220e20024198096a41086a29030037030020024180076a41086a220f200241b8076a41086a29030037030020024180076a41106a2210200241b8076a41106a29030037030020024180076a41186a2211200241b8076a41186a29030037030020024180076a41206a2212200241b8076a41206a29030037030020024180076a41286a2213200241b8076a41286a29030037030020024180076a41306a2214200241b8076a41306a29030037030020022002290398093703a005200220022903b80737038007200241c8066a41306a2215200241f0076a41306a290300370300200241c8066a41286a2216200241f0076a41286a290300370300200241c8066a41206a2217200241f0076a41206a290300370300200241c8066a41186a2218200241f0076a41186a290300370300200241c8066a41106a2219200241f0076a41106a290300370300200241c8066a41086a221a200241f0076a41086a290300370300200220022903f0073703c80620024190066a41306a221b200241a8086a41306a29030037030020024190066a41286a221c200241a8086a41286a29030037030020024190066a41206a221d200241a8086a41206a29030037030020024190066a41186a221e200241a8086a41186a29030037030020024190066a41106a221f200241a8086a41106a29030037030020024190066a41086a2220200241a8086a41086a290300370300200220022903a80837039006200241d8056a41306a2221200241e0086a41306a290300370300200241d8056a41286a2222200241e0086a41286a290300370300200241d8056a41206a2223200241e0086a41206a290300370300200241d8056a41186a2224200241e0086a41186a290300370300200241d8056a41106a2225200241e0086a41106a290300370300200241d8056a41086a2226200241e0086a41086a290300370300200220022903e0083703d805200042053703002000200229038007370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a20022903c806370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a201b290300370300200041a0016a201c29030037030020004198016a201d29030037030020004190016a201e29030037030020004188016a201f29030037030020004180016a2020290300370300200041f8006a200229039006370300200041e0016a2021290300370300200041d8016a2022290300370300200041d0016a2023290300370300200041c8016a2024290300370300200041c0016a2025290300370300200041b8016a2026290300370300200041b0016a20022903d80537030020004198026a200129030037030020004190026a200329030037030020004188026a200429030037030020004180026a2005290300370300200041f8016a200d290300370300200041f0016a200e290300370300200041e8016a20022903a005370300200041a0026a200241a80110bf091a0c360b20004209370300200241e0086a10ca040c090b20024198096a200110b20420022d009809410a460d1420024180076a41306a20024198096a41306a220329030037030020024180076a41286a20024198096a41286a220429030037030020024180076a41206a20024198096a41206a220529030037030020024180076a41186a20024198096a41186a220d29030037030020024180076a41106a20024198096a41106a220e29030037030020024180076a41086a20024198096a41086a220f29030037030020022002290398093703800720024198096a200110b20420022d009809410a460d15200241b8076a41306a2003290300370300200241b8076a41286a2004290300370300200241b8076a41206a2005290300370300200241b8076a41186a200d290300370300200241b8076a41106a200e290300370300200241b8076a41086a200f29030037030020022002290398093703b80720024198096a200110b20420022d009809410a460d16200241f0076a41306a20024198096a41306a2203290300370300200241f0076a41286a20024198096a41286a2204290300370300200241f0076a41206a20024198096a41206a2205290300370300200241f0076a41186a20024198096a41186a220d290300370300200241f0076a41106a20024198096a41106a220e290300370300200241f0076a41086a20024198096a41086a220f29030037030020022002290398093703f00720024198096a200110b20420022d009809410a460d17200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a200d290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f29030037030020022002290398093703a80820024198096a200110b20420022d009809410a460d05200241e0086a41306a220320024198096a41306a2204290300370300200241e0086a41286a220520024198096a41286a220d290300370300200241e0086a41206a220e20024198096a41206a220f290300370300200241e0086a41186a221020024198096a41186a2211290300370300200241e0086a41106a221220024198096a41106a2213290300370300200241e0086a41086a221420024198096a41086a221529030037030020022002290398093703e00820024198096a200110b204024020022d009809410a460d00200241b0046a41306a22012004290300370300200241b0046a41286a2204200d290300370300200241b0046a41206a220d200f290300370300200241b0046a41186a220f2011290300370300200241b0046a41106a22112013290300370300200241b0046a41086a22132015290300370300200241c8066a41086a221520024180076a41086a290300370300200241c8066a41106a221620024180076a41106a290300370300200241c8066a41186a221720024180076a41186a290300370300200241c8066a41206a221820024180076a41206a290300370300200241c8066a41286a221920024180076a41286a290300370300200241c8066a41306a221a20024180076a41306a29030037030020022002290398093703b00420022002290380073703c80620024190066a41306a221b200241b8076a41306a29030037030020024190066a41286a221c200241b8076a41286a29030037030020024190066a41206a221d200241b8076a41206a29030037030020024190066a41186a221e200241b8076a41186a29030037030020024190066a41106a221f200241b8076a41106a29030037030020024190066a41086a2220200241b8076a41086a290300370300200220022903b80737039006200241d8056a41306a2221200241f0076a41306a290300370300200241d8056a41286a2222200241f0076a41286a290300370300200241d8056a41206a2223200241f0076a41206a290300370300200241d8056a41186a2224200241f0076a41186a290300370300200241d8056a41106a2225200241f0076a41106a290300370300200241d8056a41086a2226200241f0076a41086a290300370300200220022903f0073703d805200241a0056a41306a2227200241a8086a41306a290300370300200241a0056a41286a2228200241a8086a41286a290300370300200241a0056a41206a2229200241a8086a41206a290300370300200241a0056a41186a222a200241a8086a41186a290300370300200241a0056a41106a222b200241a8086a41106a290300370300200241a0056a41086a222c200241a8086a41086a290300370300200220022903a8083703a005200241e8046a41306a222d2003290300370300200241e8046a41286a22032005290300370300200241e8046a41206a2205200e290300370300200241e8046a41186a220e2010290300370300200241e8046a41106a22102012290300370300200241e8046a41086a22122014290300370300200220022903e0083703e80420004206370300200020022903c806370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a200229039006370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a202229030037030020004198016a202329030037030020004190016a202429030037030020004188016a202529030037030020004180016a2026290300370300200041f8006a20022903d805370300200041e0016a2027290300370300200041d8016a2028290300370300200041d0016a2029290300370300200041c8016a202a290300370300200041c0016a202b290300370300200041b8016a202c290300370300200041b0016a20022903a00537030020004198026a202d29030037030020004190026a200329030037030020004188026a200529030037030020004180026a200e290300370300200041f8016a2010290300370300200041f0016a2012290300370300200041e8016a20022903e804370300200041d0026a2001290300370300200041c8026a2004290300370300200041c0026a200d290300370300200041b8026a200f290300370300200041b0026a2011290300370300200041a8026a2013290300370300200041a0026a20022903b004370300200041d8026a200241f00010bf091a0c350b20004209370300200241e0086a10ca040c060b2002200110b20420022d0000410a460d1720024180076a41306a200241306a220329030037030020024180076a41286a200241286a220429030037030020024180076a41206a200241206a220529030037030020024180076a41186a200241186a220d29030037030020024180076a41106a200241106a220e29030037030020024180076a41086a200241086a220f29030037030020022002290300370380072002200110b20420022d0000410a460d18200241b8076a41306a2003290300370300200241b8076a41286a2004290300370300200241b8076a41206a2005290300370300200241b8076a41186a200d290300370300200241b8076a41106a200e290300370300200241b8076a41086a200f290300370300200220022903003703b8072002200110b20420022d0000410a460d19200241f0076a41306a200241306a2203290300370300200241f0076a41286a200241286a2204290300370300200241f0076a41206a200241206a2205290300370300200241f0076a41186a200241186a220d290300370300200241f0076a41106a200241106a220e290300370300200241f0076a41086a200241086a220f290300370300200220022903003703f0072002200110b20420022d0000410a460d1a200241a8086a41306a2003290300370300200241a8086a41286a2004290300370300200241a8086a41206a2005290300370300200241a8086a41186a200d290300370300200241a8086a41106a200e290300370300200241a8086a41086a200f290300370300200220022903003703a8082002200110b20420022d0000410a460d1b200241e0086a41306a200241306a2203290300370300200241e0086a41286a200241286a2204290300370300200241e0086a41206a200241206a2205290300370300200241e0086a41186a200241186a220d290300370300200241e0086a41106a200241106a220e290300370300200241e0086a41086a200241086a220f290300370300200220022903003703e0082002200110b20420022d0000410a460d0220024198096a41306a200329030037030020024198096a41286a200429030037030020024198096a41206a200529030037030020024198096a41186a200d29030037030020024198096a41106a200e29030037030020024198096a41086a200f29030037030020022002290300370398092002200110b204024020022d0000410a460d00200241f8036a41306a2201200241306a290300370300200241f8036a41286a2203200241286a290300370300200241f8036a41206a2204200241206a290300370300200241f8036a41186a2205200241186a290300370300200241f8036a41106a220d200241106a290300370300200241f8036a41086a220e200241086a290300370300200241c8066a41086a220f20024180076a41086a290300370300200241c8066a41106a221020024180076a41106a290300370300200241c8066a41186a221120024180076a41186a290300370300200241c8066a41206a221220024180076a41206a290300370300200241c8066a41286a221320024180076a41286a290300370300200241c8066a41306a221420024180076a41306a290300370300200220022903003703f80320022002290380073703c80620024190066a41306a2215200241b8076a41306a29030037030020024190066a41286a2216200241b8076a41286a29030037030020024190066a41206a2217200241b8076a41206a29030037030020024190066a41186a2218200241b8076a41186a29030037030020024190066a41106a2219200241b8076a41106a29030037030020024190066a41086a221a200241b8076a41086a290300370300200220022903b80737039006200241d8056a41306a221b200241f0076a41306a290300370300200241d8056a41286a221c200241f0076a41286a290300370300200241d8056a41206a221d200241f0076a41206a290300370300200241d8056a41186a221e200241f0076a41186a290300370300200241d8056a41106a221f200241f0076a41106a290300370300200241d8056a41086a2220200241f0076a41086a290300370300200220022903f0073703d805200241a0056a41306a2221200241a8086a41306a290300370300200241a0056a41286a2222200241a8086a41286a290300370300200241a0056a41206a2223200241a8086a41206a290300370300200241a0056a41186a2224200241a8086a41186a290300370300200241a0056a41106a2225200241a8086a41106a290300370300200241a0056a41086a2226200241a8086a41086a290300370300200220022903a8083703a005200241e8046a41306a2227200241e0086a41306a290300370300200241e8046a41286a2228200241e0086a41286a290300370300200241e8046a41206a2229200241e0086a41206a290300370300200241e8046a41186a222a200241e0086a41186a290300370300200241e8046a41106a222b200241e0086a41106a290300370300200241e8046a41086a222c200241e0086a41086a290300370300200220022903e0083703e804200241b0046a41306a222d20024198096a41306a290300370300200241b0046a41286a222e20024198096a41286a290300370300200241b0046a41206a222f20024198096a41206a290300370300200241b0046a41186a223020024198096a41186a290300370300200241b0046a41106a223120024198096a41106a290300370300200241b0046a41086a223220024198096a41086a29030037030020022002290398093703b00420004207370300200020022903c806370308200041106a200f290300370300200041186a2010290300370300200041206a2011290300370300200041286a2012290300370300200041306a2013290300370300200041386a2014290300370300200041c0006a200229039006370300200041c8006a201a290300370300200041d0006a2019290300370300200041d8006a2018290300370300200041e0006a2017290300370300200041e8006a2016290300370300200041f0006a2015290300370300200041a8016a201b290300370300200041a0016a201c29030037030020004198016a201d29030037030020004190016a201e29030037030020004188016a201f29030037030020004180016a2020290300370300200041f8006a20022903d805370300200041e0016a2021290300370300200041d8016a2022290300370300200041d0016a2023290300370300200041c8016a2024290300370300200041c0016a2025290300370300200041b8016a2026290300370300200041b0016a20022903a00537030020004198026a202729030037030020004190026a202829030037030020004188026a202929030037030020004180026a202a290300370300200041f8016a202b290300370300200041f0016a202c290300370300200041e8016a20022903e804370300200041d0026a202d290300370300200041c8026a202e290300370300200041c0026a202f290300370300200041b8026a2030290300370300200041b0026a2031290300370300200041a8026a2032290300370300200041a0026a20022903b00437030020004188036a200129030037030020004180036a2003290300370300200041f8026a2004290300370300200041f0026a2005290300370300200041e8026a200d290300370300200041e0026a200e290300370300200041d8026a20022903f803370300200041c0036a200241c0036a41306a290300370300200041b8036a200241c0036a41286a290300370300200041b0036a200241c0036a41206a290300370300200041a8036a200241c0036a41186a290300370300200041a0036a200241c0036a41106a29030037030020004198036a200241c0036a41086a29030037030020004190036a20022903c0033703000c340b2000420937030020024198096a10ca040c030b200042093703000c320b2002200110b20420022d0000410a460d1a200241c8066a41306a200241306a2203290300370300200241c8066a41286a200241286a2204290300370300200241c8066a41206a200241206a2205290300370300200241c8066a41186a200241186a220d290300370300200241c8066a41106a200241106a220e290300370300200241c8066a41086a200241086a220f290300370300200220022903003703c8062002200110b20420022d0000410a460d1b20024180076a41306a200329030037030020024180076a41286a200429030037030020024180076a41206a200529030037030020024180076a41186a200d29030037030020024180076a41106a200e29030037030020024180076a41086a200f29030037030020022002290300370380072002200110b20420022d0000410a460d1c200241b8076a41306a200241306a2203290300370300200241b8076a41286a200241286a2204290300370300200241b8076a41206a200241206a2205290300370300200241b8076a41186a200241186a220d290300370300200241b8076a41106a200241106a220e290300370300200241b8076a41086a200241086a220f290300370300200220022903003703b8072002200110b20420022d0000410a460d1d200241f0076a41306a2003290300370300200241f0076a41286a2004290300370300200241f0076a41206a2005290300370300200241f0076a41186a200d290300370300200241f0076a41106a200e290300370300200241f0076a41086a200f290300370300200220022903003703f0072002200110b20420022d0000410a460d1e200241a8086a41306a200241306a2203290300370300200241a8086a41286a200241286a2204290300370300200241a8086a41206a200241206a2205290300370300200241a8086a41186a200241186a220d290300370300200241a8086a41106a200241106a220e290300370300200241a8086a41086a200241086a220f290300370300200220022903003703a8082002200110b20420022d0000410a460d1f200241e0086a41306a2003290300370300200241e0086a41286a2004290300370300200241e0086a41206a2005290300370300200241e0086a41186a200d290300370300200241e0086a41106a200e290300370300200241e0086a41086a200f290300370300200220022903003703e0082002200110b20420022d0000410a460d2020024198096a41306a2203200241306a220429030037030020024198096a41286a2205200241286a220d29030037030020024198096a41206a220e200241206a220f29030037030020024198096a41186a2210200241186a221129030037030020024198096a41106a2212200241106a221329030037030020024198096a41086a2214200241086a221529030037030020022002290300370398092002200110b204024020022d0000410a460d0020024188036a41306a2201200429030037030020024188036a41286a2204200d29030037030020024188036a41206a220d200f29030037030020024188036a41186a220f201129030037030020024188036a41106a2211201329030037030020024188036a41086a2213201529030037030020024190066a41086a2215200241c8066a41086a29030037030020024190066a41106a2216200241c8066a41106a29030037030020024190066a41186a2217200241c8066a41186a29030037030020024190066a41206a2218200241c8066a41206a29030037030020024190066a41286a2219200241c8066a41286a29030037030020024190066a41306a221a200241c8066a41306a2903003703002002200229030037038803200220022903c80637039006200241d8056a41306a221b20024180076a41306a290300370300200241d8056a41286a221c20024180076a41286a290300370300200241d8056a41206a221d20024180076a41206a290300370300200241d8056a41186a221e20024180076a41186a290300370300200241d8056a41106a221f20024180076a41106a290300370300200241d8056a41086a222020024180076a41086a29030037030020022002290380073703d805200241a0056a41306a2221200241b8076a41306a290300370300200241a0056a41286a2222200241b8076a41286a290300370300200241a0056a41206a2223200241b8076a41206a290300370300200241a0056a41186a2224200241b8076a41186a290300370300200241a0056a41106a2225200241b8076a41106a290300370300200241a0056a41086a2226200241b8076a41086a290300370300200220022903b8073703a005200241e8046a41306a2227200241f0076a41306a290300370300200241e8046a41286a2228200241f0076a41286a290300370300200241e8046a41206a2229200241f0076a41206a290300370300200241e8046a41186a222a200241f0076a41186a290300370300200241e8046a41106a222b200241f0076a41106a290300370300200241e8046a41086a222c200241f0076a41086a290300370300200220022903f0073703e804200241b0046a41306a222d200241a8086a41306a290300370300200241b0046a41286a222e200241a8086a41286a290300370300200241b0046a41206a222f200241a8086a41206a290300370300200241b0046a41186a2230200241a8086a41186a290300370300200241b0046a41106a2231200241a8086a41106a290300370300200241b0046a41086a2232200241a8086a41086a290300370300200220022903a8083703b004200241f8036a41306a2233200241e0086a41306a290300370300200241f8036a41286a2234200241e0086a41286a290300370300200241f8036a41206a2235200241e0086a41206a290300370300200241f8036a41186a2236200241e0086a41186a290300370300200241f8036a41106a2237200241e0086a41106a290300370300200241f8036a41086a2238200241e0086a41086a290300370300200220022903e0083703f803200241c0036a41306a22392003290300370300200241c0036a41286a22032005290300370300200241c0036a41206a2205200e290300370300200241c0036a41186a220e2010290300370300200241c0036a41106a22102012290300370300200241c0036a41086a2212201429030037030020022002290398093703c003200042083703002000200229039006370308200041106a2015290300370300200041186a2016290300370300200041206a2017290300370300200041286a2018290300370300200041306a2019290300370300200041386a201a290300370300200041c0006a20022903d805370300200041c8006a2020290300370300200041d0006a201f290300370300200041d8006a201e290300370300200041e0006a201d290300370300200041e8006a201c290300370300200041f0006a201b290300370300200041a8016a2021290300370300200041a0016a202229030037030020004198016a202329030037030020004190016a202429030037030020004188016a202529030037030020004180016a2026290300370300200041f8006a20022903a005370300200041e0016a2027290300370300200041d8016a2028290300370300200041d0016a2029290300370300200041c8016a202a290300370300200041c0016a202b290300370300200041b8016a202c290300370300200041b0016a20022903e80437030020004198026a202d29030037030020004190026a202e29030037030020004188026a202f29030037030020004180026a2030290300370300200041f8016a2031290300370300200041f0016a2032290300370300200041e8016a20022903b004370300200041d0026a2033290300370300200041c8026a2034290300370300200041c0026a2035290300370300200041b8026a2036290300370300200041b0026a2037290300370300200041a8026a2038290300370300200041a0026a20022903f80337030020004188036a203929030037030020004180036a2003290300370300200041f8026a2005290300370300200041f0026a200e290300370300200041e8026a2010290300370300200041e0026a2012290300370300200041d8026a20022903c003370300200041c0036a2001290300370300200041b8036a2004290300370300200041b0036a200d290300370300200041a8036a200f290300370300200041a0036a201129030037030020004198036a201329030037030020004190036a2002290388033703000c320b2000420937030020024198096a10ca040c2b0b200042093703000b200241e0086a10ca040c250b200042093703000b200241a8086a10ca040c200b200042093703000b200241a8086a10ca040c1c0b200042093703000b200241a8086a10ca040c190b200042093703000b200241a8086a10ca040c270b200042093703000c260b200042093703000c250b200042093703000c240b200042093703000c130b200042093703000c220b200042093703000c130b200042093703000c110b200042093703000c1f0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c1b0b200042093703000c130b200042093703000c110b200042093703000c0f0b200042093703000c0d0b200042093703000c160b200042093703000c140b200042093703000c120b200042093703000c100b200042093703000c0e0b200042093703000c0c0b200042093703000c0a0b200241f0076a10ca040c0f0b200241f0076a10ca040b200241b8076a10ca040c0d0b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040c0a0b200241a8086a10ca040b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040c060b200241e0086a10ca040b200241a8086a10ca040b200241f0076a10ca040b200241b8076a10ca040b20024180076a10ca040b200241c8066a10ca040b200241d0096a24000bcf0201067f0240024020012802042202450d00200128020022032d0000210420012002417f6a2205360204410121062001200341016a3602000240200441037122074103460d0002400240024020070e03000102000b20044102762107410021060c040b41012106024020050d000c040b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d03200141fcff03714102762107410021060c030b20054103490d01200341036a2d0000210620032f0001210720012002417c6a3602042001200341046a3602002007200641107472410874200472220141808004492106200141027621070c020b0240200441034d0d000c020b20054104490d012003280001210720012002417b6a3602042001200341056a36020020074180808080044921060c010b410121060b20002007360204200020063602000bb40404057f017e027f017e0240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a360200024002400240200441037122064103460d000240024020060e03030001030b41012106024020050d000c060b20032d0001210520012002417e6a3602042001200341026a3602002005410874200472220141ffff0371418002490d05200141fcff0371410276ad21070c030b410121060240200541034f0d000c050b200341036a2d0000210520032f0001210820012002417c6a3602042001200341046a3602002008200541107472410874200472220141808004490d042001410276ad21070c020b024002400240200441027622090e050002020201020b20054104490d042003350001210720012002417b6a3602042001200341056a36020020074280808080045421060c050b20054108490d03200329000121072001200241776a3602042001200341096a3602002007428080808080808080015421060c040b200441134b0d02200941046a21082002417e6a2102200341026a2103410021044200210741012106034002402002417f470d000c050b2003417f6a310000210a20012002360204200120033602002002417f6a2102200341016a2103200a2004410374413871ad862007842107200441016a22052104200541ff01712008490d000b2007427f412820094103746b413871ad885821060c030b2004410276ad21070b410021060c010b410121060b2000200737030820002006ad3703000bb01202047f067e230041f00b6b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a36020020050e0c0102030405060708090a0b0d0c0b2000410c3602000c150b200041003602000c140b200041013602000c130b200041023602000c120b200041033602000c110b2002200110bb01024020022802000d002001280204220420022802042203490d002003417f4c0d090240024020030d00410121050c010b200310352205450d0b200128020421040b024020042003490d0020052001280200200310bf092104200128020422052003490d0e2001200520036b3602042001200128020020036a3602002004450d012000200436020420004104360200200041086a2003ad2206422086200684370200200041106a200241d0006a41e80310bf091a0c120b200510310b2000410c3602000c100b200241086a200110bb01024020022802080d0020012802042204200228020c2203490d002003417f4c0d080240024020030d00410121050c010b200310352205450d0a200128020421040b024020042003490d0020052001280200200310bf092104200128020422052003490d0e2001200520036b3602042001200128020020036a3602002004450d012000200436020420004105360200200041086a2003ad2206422086200684370200200041106a200241d0006a41e80310bf091a0c110b200510310b2000410c3602000c0f0b200241a8086a200110ba01024020022903a8084209510d00200241e0046a200241a8086a41c80310bf091a200241d0006a41046a200241e0046a41c80310bf091a20004106360200200041046a200241d0006a41cc0310bf091a200041f0036a200241d8046a290300370300200041e8036a200241d0046a290300370300200041e0036a200241c8046a290300370300200041d8036a200241c0046a290300370300200041d0036a20022903b8043703000c0f0b2000410c3602000c0e0b200241a8086a200110ba01024020022903a8084209510d00200241e0046a200241a8086a41c80310bf091a200241d0006a41046a200241e0046a41c80310bf091a20004107360200200041046a200241d0006a41cc0310bf091a200041f0036a200241d8046a290300370300200041e8036a200241d0046a290300370300200041e0036a200241c8046a290300370300200041d8036a200241c0046a290300370300200041d0036a20022903b8043703000c0e0b2000410c3602000c0d0b200241286a200110bb010240024020022802280d0020012802042204200228022c2203490d002003417f4c0d060240024020030d00410121050c010b200310352205450d08200128020421040b024020042003490d0020052001280200200310bf092104200128020422052003490d0d2001200520036b3602042001200128020020036a3602002004450d01200241106a200110b6032003ad22064220862006842206a721012002290310a70d02200241106a41106a2903002107200229031821082000200436020420004108360200200041106a20083703002000410c6a20064220883e0200200041086a2001360200200041186a2007370300200041206a200241d0006a41d80310bf091a0c0f0b200510310b2000410c3602000c0d0b2000410c3602002001450d0c200410310c0c0b200241306a200110bb010240024020022802300d002001280204220420022802342203490d002003417f4c0d050240024020030d00410121050c010b200310352205450d07200128020421040b024020042003490d0020052001280200200310bf092104200128020422052003490d0d2001200520036b3602042001200128020020036a3602002004450d01200241a8086a200110fb052003ad22064220862006842206a7210120022d00a8084107460d02200241e0046a41206a200241a8086a41206a2903002207370300200241e0046a41186a200241a8086a41186a2903002208370300200241e0046a41106a200241a8086a41106a2903002209370300200241e0046a41086a200241a8086a41086a290300220a370300200220022903a808220b3703e0042000410c6a20064220883e0200200041086a20013602002000200436020420004109360200200041106a200b370300200041186a200a370300200041206a2009370300200041286a2008370300200041306a2007370300200041386a200241d0006a41c00310bf091a0c0e0b200510310b2000410c3602000c0c0b2000410c3602002001450d0b200410310c0b0b200241a8086a200110ba0120022903a8084209510d04200241e0046a200241a8086a41c80310bf091a200241386a200110b60302402002290338a70d00200241386a41106a290300210620022903402107200241d0006a41046a200241e0046a41c80310bf091a2000410a360200200041046a200241d0006a41cc0310bf091a200041d8036a2006370300200041d0036a2007370300200041e0036a20022903b804370300200041e8036a200241c0046a290300370300200041f0036a200241b8046a41106a2903003703000c0b0b2000410c360200200241e0046a10ad010c0a0b2000410c3602000c090b200241a8086a200110ba0120022903a8084209510d03200241e0046a200241a8086a41c80310bf091a200241a8086a200110fb05024020022d00a8084107460d00200241b8046a41206a2201200241a8086a41206a290300370300200241b8046a41186a2203200241a8086a41186a290300370300200241b8046a41106a2204200241a8086a41106a290300370300200241b8046a41086a2205200241a8086a41086a290300370300200220022903a8083703b804200241d0006a41046a200241e0046a41c80310bf091a2000410b360200200041046a200241d0006a41cc0310bf091a200041f0036a2001290300370300200041e8036a2003290300370300200041e0036a2004290300370300200041d8036a2005290300370300200041d0036a20022903b8043703000c090b2000410c360200200241e0046a10ad010c080b103b000b1039000b2000410c3602000c050b2000410c3602000c040b20032005419cb4c0001061000b20032005419cb4c0001061000b20032005419cb4c0001061000b20032005419cb4c0001061000b200241f00b6a24000b900403027f017e077f230041d00b6b22032400024002400240024002402002200128020441e8036e2204200420024b1bad42e8037e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441e8036e2107024020020d00410021020c040b200341d8076a410172210841002109410021044100210a0340200341d8076a200110c30120032d00d807210b200341f1036a200841e70310bf091a200b410b460d022003410a6a200341f1036a41e70310bf091a02400240200a2007470d002009200a41016a220c2009200c4b1b220c4104200c41044b1bad42e8037e2205422088a745410374210c2005a7210702400240200a0d00200341003602d8070c010b200341083602e007200320043602dc07200320063602d8070b200341c00b6a2007200c200341d8076a104e20032802c80b210c20032802c00b4101460d0120032802c40b2106200c41e8036e21070b200620046a220c200b3a0000200c41016a2003410a6a41e70310bf091a200941026a2109200441e8036a21042002200a41016a220a460d050c010b0b200c0d020b103b000b200041003602000240200a450d002006210a0340200a10a301200a41e8036a210a200441987c6a22040d000b0b2007450d02200741e8036c450d02200610310c020b1039000b2000200736020420002006360200200041086a20023602000b200341d00b6a24000bc50801027f0240024002400240024002400240024020002d00000e0707000102030405060b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041146a2802002202450d04200241f8036c450d04200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0320024198046c450d03200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0220024198046c450d02200028021010310f0b200041186a10ad0102402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d01200241f8036c450d01200028020410310c010b200041106a10aa0102402000410c6a2802002201450d00200041046a2802002102200141e8036c21010340200210a301200241e8036a2102200141987c6a22010d000b0b200041086a2802002202450d00200241e8036c450d00200028020410310f0b0b8b1807027f017e0c7f017e047f037e017f230041f0176b220324000240200220012802044198046e2204200420024b1bad4298047e2205422088a70d002005a72204417f4c0d000240024002400240024020040d00410821060c010b2004102f2206450d010b2003410036024020032006360238200320044198046e36023c024002402002450d00200341a0086a41bc036a2107200341f8136a410c6a2108200341f8136a41046a2109200341a0086a41cc036a210a200341a0086a41c4036a210b20034180106a410472210c20034180106a410c6a210d4100210e03400240024002400240024002400240024020012802042204450d00200128020022062d0000210f20012004417f6a3602042001200641016a360200024002400240024002400240024002400240200f0e080001020304050607090b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a4100210f0c0f0b200341f8136a200110b90120032802f8132210450d09200328028014210620032802fc132111200341f8136a200110ba01024020032903f81322124209510d002003280280142113200341a0086a200841bc0310bf091a2007200329038010370200200741086a20034180106a41086a290300370200200741106a20034180106a41106a290300370200200741186a20034180106a41186a290300370200200741206a20034180106a41206a290300370200200741286a20034180106a41286a290300370200200320032f01b80c3b018e0c4101210f41002104201021142011211520062116201221170c0e0b02402006450d00200641f8036c2106201021040340200410aa01200441f8036a2104200641887c6a22060d000b0b2011450d09201141f8036c450d09201010310c090b20034180106a200110b9012003280280102210450d082003280288102106200328028410211120034180106a200110ba0102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341086a200110bb01024002402003280208450d0020034100360280100c010b20034180106a2001200328020c10b8012003280280100d0d0b200341b80c6a10ad010b02402006450d00200641f8036c2106201021040340200410aa01200441f8036a2104200641887c6a22060d000b0b2011450d08201141f8036c450d08201010310c080b20034180106a200110b9012003280280102210450d072003280288102106200328028410211120034180106a200110b9010240200328028010450d00200320032f01b80c3b018e0c20032802881021132003290380102117200341a0086a200341f8136a41ec0310bf091a4103210f410021042010211420112115200621160c0c0b02402006450d00200641f8036c2106201021040340200410aa01200441f8036a2104200641887c6a22060d000b0b2011450d07201141f8036c450d07201010310c070b20034180106a200110b9012003280280102210450d062003280288102106200328028410211120034180106a200110ba0102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341106a200110bb01024002402003280210450d0020034100360280100c010b20034180106a2001200328021410b8012003280280100d0a0b200341b80c6a10ad010b02402006450d00200641f8036c2106201021040340200410aa01200441f8036a2104200641887c6a22060d000b0b2011450d06201141f8036c450d06201010310c060b20034180106a200110b9012003280280102210450d052003280288102106200328028410211120034180106a200110ba0102402003290380104209510d00200341b80c6a20034180106a41c80310bf091a200341186a200110bb01024002402003280218450d0020034100360280100c010b20034180106a2001200328021c10b8012003280280100d080b200341b80c6a10ad010b02402006450d00200641f8036c2106201021040340200410aa01200441f8036a2104200641887c6a22060d000b0b2011450d05201141f8036c450d05201010310c050b200341206a200110bc012003290320a70d0420032903282112200341f8136a200110ba0120032903f8134209510d0420034180106a200341f8136a41c80310bf091a200341f8136a200110b90120032802f8132206450d01200328028014211620032802fc1321152003280280102113200341a0086a200c41c40310bf091a200b20032903b80c370200200b41086a200341b80c6a41086a290300370200200b41106a200341b80c6a41106a290300370200200b41186a200341b80c6a41186a290300370200200b41206a200341b80c6a41206a290300370200200320032f01900c3b018e0c4106210f4100210420062114201221170c080b200341f8136a200110bd0120032802f813410c460d0320034180106a200341f8136a41f80310bf091a200128020422044108490d022001280200220629000021122001200441786a220f3602042001200641086a360200200f4108490d02200629000821182001200441706a220f3602042001200641106a2206360200200f450d0220062d0000210f20012004416f6a3602042001200641016a3602004100210602400240200f0e020100040b410121060b200341306a200110bb0102402003280230450d00200341003602f8130c030b200341f8136a2001200328023410c10120032802f8132210450d02200328028014211620032802fc13211520032903801021172003280288102113200341a0086a200d41ec0310bf091a200320032f01b80c3b018e0c4107210f410021042010211420182105201221192006211a0c070b20034180106a10ad010c020b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a0c0b0b20034180106a10aa010b4108210f410121040c030b200328028810211320032903801021172009200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200a41186a200341900c6a41186a290300370200200a41106a200341900c6a41106a290300370200200a41086a200341900c6a41086a290300370200200a20032903900c3702004105210f410021042010211420112115200621160c020b200328028810211320032903801021172009200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200a41186a200341900c6a41186a290300370200200a41106a200341900c6a41106a290300370200200a41086a200341900c6a41086a290300370200200a20032903900c3702004104210f410021042010211420112115200621160c010b200328028810211320032903801021172009200341b80c6a41c80310bf091a200320032f01b60c3b018e0c200341a0086a200341f8136a41cc0310bf091a200a41186a200341900c6a41186a290300370200200a41106a200341900c6a41106a290300370200200a41086a200341900c6a41086a290300370200200a20032903900c3702004102210f410021042010211420112115200621160b200320032f018e0c3b019e08200341b2046a200341a0086a41ec0310bf091a20040d050b200320032f019e083b01b004200341c4006a200341b2046a41ec0310bf091a024020032802402206200328023c470d00200641016a22042006490d07200641017422102004201020044b1b22044104200441044b1bad4298047e2212422088a74541037421042012a721100240024020060d00200341003602f8130c010b2003410836028014200320032802383602f813200320064198046c3602fc130b20034180106a20102004200341f8136a104e20032802881021042003280280104101460d032003200328028410360238200320044198046e36023c0b200328023820064198046c6a2204201a3a00012004200f3a000020042013360018200420173700102004201636000c2004201536000820042014360004200420032f01b0043b00022004411c6a200341c4006a41ec0310bf091a200420053700900420042019370088042003200641016a360240200e41016a220e2002470d000b0b20002003290338370200200041086a200341386a41086a2802003602000c030b2004450d030b1039000b20004100360200200341386a10b001200328023c2204450d0020044198046c450d00200328023810310b200341f0176a24000f0b103b000b900403027f017e077f230041b0176b22032400024002400240024002402002200128020441e0076e2204200420024b1bad42e0077e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441e0076e2107024020020d00410021020c040b200341c00f6a410172210841002109410021044100210a0340200341c00f6a200110c40120032d00c00f210b200341e1076a200841df0710bf091a200b410b460d02200341026a200341e1076a41df0710bf091a02400240200a2007470d002009200a41016a220c2009200c4b1b220c4104200c41044b1bad42e0077e2205422088a745410374210c2005a7210702400240200a0d00200341003602c00f0c010b200341083602c80f200320043602c40f200320063602c00f0b200341a0176a2007200c200341c00f6a104e20032802a817210c20032802a0174101460d0120032802a4172106200c41e0076e21070b200620046a220c200b3a0000200c41016a200341026a41df0710bf091a200941026a2109200441e0076a21042002200a41016a220a460d050c010b0b200c0d020b103b000b200041003602000240200a450d002006210a0340200a10a601200a41e0076a210a200441a0786a22040d000b0b2007450d02200741e0076c450d02200610310c020b1039000b2000200736020420002006360200200041086a20023602000b200341b0176a24000b950301097f230041206b2203240002400240024002400240200220012802044102762204200420024b1b22054102742204417f4c0d000240024020050d00410421060c010b2004102f2206450d030b024020020d00410021020c040b4100210741002108410021040340200128020422094104490d022001280200220a280000210b20012009417c6a3602042001200a41046a3602000240024020042005470d002007200441016a2209200720094b1b22094104200941044b1b220941ffffffff0371200946410274210a200941027421090240024020040d00200341003602100c010b2003410436021820032008360214200320063602100b20032009200a200341106a104e2003280208210920032802004101460d0120032802042106200941027621050b200620086a200b360200200741026a2107200841046a21082002200441016a2204460d050c010b0b20090d020b103b000b20004100360200200541ffffffff0371450d02200610310c020b1039000b2000200536020420002006360200200041086a20023602000b200341206a24000b871a03057f027e017f230041f00f6b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0b0102030405060708090a0c0b0b2000410b3a00000c220b200241a0086a200110b90120022802a0082203450d14200241a8086a280200210520022802a40821042002200110bb01024002402002280200450d00200241003602a0080c010b200241a0086a2001200228020410b80120022802a0080d210b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d21200441f8036c450d21200310310c210b200241a0086a200110b90120022802a0082203450d12200241a8086a280200210520022802a4082104200241086a200110bb01024002402002280208450d00200241003602a0080c010b200241a0086a2001200228020c10b80120022802a0080d1f0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d20200441f8036c450d20200310310c200b200241a0086a200110b90120022802a0082203450d10200241a8086a280200210520022802a4082104200241106a200110bb01024002402002280210450d00200241003602a0080c010b200241a0086a2001200228021410b80120022802a0080d1d0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d1f200441f8036c450d1f200310310c1f0b200241186a200110bc012002290318a70d12024020012802042203450d0020022903202107200128020022042d0000210520012003417f6a3602042001200441016a36020020050d00200241a0086a200110b90120022802a0082201450d0020022902a4082108200041033a0000200020022f00d8043b0001200041106a2007370300200041086a2008370000200041046a2001360000200041036a200241da046a2d00003a0000200041186a200241880c6a41d00310bf091a0c1f0b2000410b3a00000c1e0b200241880c6a200110b90120022802880c2203450d0d200241880c6a41086a2802002105200228028c0c2104200241880c6a200110ba01024020022903880c4209510d00200241a0086a200241880c6a41c80310bf091a200041043a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a200241a0086a41c80310bf091a200041e0036a200241d8046a41086a290300370300200041d8036a20022903d8043703000c1e0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d1d200441f8036c450d1d200310310c1d0b200241a0086a200110b90120022802a0082203450d11200241a8086a280200210520022802a4082104200241a0086a200110ba0120022903a0084209510d0a200241d8046a200241a0086a41c80310bf091a200241286a200110bb01024002402002280228450d00200241003602a0080c010b200241a0086a2001200228022c10b80120022802a0080d190b2000410b3a0000200241d8046a10ad010c0b0b2006450d1120042d0001210520012003417e6a22063602042001200441026a3602004100210902400240024020050e03020001140b410121090c010b410221090b024002400240024020064108490d00200429000221072001200341766a36020420012004410a6a360200200241306a200110bb0120022802300d032001280204220420022802342203490d032003417f4c0d160240024020030d00410121050c010b200310352205450d0a200128020421040b20042003490d0220052001280200200310bf0921042001280204220520034f0d0120032005419cb4c0001061000b2000410b3a00000c1e0b2001200520036b3602042001200128020020036a3602002004450d01200241d8046a41026a200241a0086a41026a2d000022013a0000200220022f00a00822053b01d804200020093a0001200041063a0000200041106a41003a0000200041086a2003ad2208422086200884370100200041046a2004360100200041026a20022f0188013b0100200041116a20053b0000200041136a20013a0000200041186a2007370300200041206a200241880c6a41c80310bf091a0c1d0b200510310b2000410b3a00000c1b0b200241c8006a200110bb0120022802480d12200228024c2103200241c0006a200110bb0120022802400d1320022802442104200241386a200110bb01024020022802380d00200228023c2101200041073a0000200020022f00a0083b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a2086a2d00003a0000200041106a200241880c6a41d80310bf091a0c1b0b2000410b3a00000c1a0b200241d0006a200110bb01024020022802500d0020022802542101200041083a0000200020022f00a0083b0001200041046a2001360200200041036a200241a2086a2d00003a0000200041086a200241880c6a41e00310bf091a0c1a0b2000410b3a00000c190b200241e8006a200110bb0120022802680d12200228026c2103200241e0006a200110bb0120022802600d1320022802642104200241d8006a200110bb01024020022802580d00200228025c2101200041093a0000200020022f00a0083b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a2086a2d00003a0000200041106a200241880c6a41d80310bf091a0c190b2000410b3a00000c180b2000410b3a00000c170b200241880c6a200110ba0120022903880c4209510d03200241d8046a200241880c6a41c80310bf091a200241880c6a200110c30120022d00880c2101200241a0086a200241880c6a41017241e70310bf091a2001410b460d01200241880c6a200241a0086a41e70310bf091a41e803102f22030d020b1039000b2000410b3a0000200241d8046a10ad010c140b200320013a0000200341016a200241880c6a41e70310bf091a20024188016a200241d8046a41c80310bf091a2000410a3a0000200020022f00d5043b0001200041036a200241d7046a2d00003a0000200041046a2003360200200041086a20024188016a41c80310bf091a200041e0036a20024180016a290300370300200041d8036a200241f0006a41086a290300370300200041d0036a20022903703703000c130b2000410b3a00000c120b2000410b3a00000b02402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d10200441f8036c450d10200310310c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b103b000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b20024188016a41086a2201200241a0086a41086a280200360200200220022903a00837038801200241880c6a41046a200241d8046a41c80310bf091a200041053a0000200020022f00703b0001200041036a200241f2006a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a200229038801370300200041186a20012802003602002000411c6a200241880c6a41cc0310bf091a0c030b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041023a0000200020022f0088013b0001200041036a20024188016a41026a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0c020b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041013a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0c010b200241d8046a41086a200241a0086a41086a2802002201360200200220022903a00822073703d804200041003a0000200020022f0088013b0001200041036a2002418a016a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a200241880c6a41cc0310bf091a0b200241f00f6a24000bcb1903057f027e017f230041e01b6b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0b0102030405060708090a0c0b0b2000410b3a00000c220b200241a00c6a200110b90120022802a00c2203450d14200241a80c6a280200210520022802a40c2104200241086a200110bb01024002402002280208450d00200241003602a00c0c010b200241a00c6a2001200228020c10c00120022802a00c0d210b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d21200441f8036c450d21200310310c210b200241a00c6a200110b90120022802a00c2203450d12200241a80c6a280200210520022802a40c2104200241106a200110bb01024002402002280210450d00200241003602a00c0c010b200241a00c6a2001200228021410c00120022802a00c0d1f0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d20200441f8036c450d20200310310c200b200241a00c6a200110b90120022802a00c2203450d10200241a80c6a280200210520022802a40c2104200241186a200110bb01024002402002280218450d00200241003602a00c0c010b200241a00c6a2001200228021c10c00120022802a00c0d1d0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d1f200441f8036c450d1f200310310c1f0b200241206a200110bc012002290320a70d12024020012802042203450d0020022903282107200128020022042d0000210520012003417f6a3602042001200441016a36020020050d00200241a00c6a200110b90120022802a00c2201450d0020022902a40c2108200041033a0000200020022f00783b0001200041106a2007370300200041086a2008370000200041046a2001360000200041036a200241fa006a2d00003a0000200041186a20024180146a41c80710bf091a0c1f0b2000410b3a00000c1e0b200241a00c6a200110b90120022802a00c2203450d0d200241a00c6a41086a280200210520022802a40c2104200241a00c6a200110ba01024020022903a00c4209510d00200241f8006a200241a00c6a41c80310bf091a200041043a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a200241f8006a41c80310bf091a200041d8036a20024180146a41880410bf091a0c1e0b2000410b3a000002402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d1d200441f8036c450d1d200310310c1d0b200241f8006a200110b90120022802782203450d1120024180016a2802002105200228027c2104200241f8006a200110ba0120022903784209510d0a200241d8086a200241f8006a41c80310bf091a200241306a200110bb01024002402002280230450d00200241003602780c010b200241f8006a2001200228023410b80120022802780d190b2000410b3a0000200241d8086a10ad010c0b0b2006450d1120042d0001210520012003417e6a22063602042001200441026a3602004100210902400240024020050e03020001140b410121090c010b410221090b024002400240024020064108490d00200429000221072001200341766a36020420012004410a6a360200200241386a200110bb0120022802380d0320012802042204200228023c2203490d032003417f4c0d160240024020030d00410121050c010b200310352205450d0a200128020421040b20042003490d0220052001280200200310bf0921042001280204220520034f0d0120032005419cb4c0001061000b2000410b3a00000c1e0b2001200520036b3602042001200128020020036a3602002004450d01200241a00c6a20024180146a41bc0710bf091a200020093a0001200041063a0000200041026a2002280178360100200041066a200241fc006a2f01003b0100200041106a4123360200200041086a2007370300200041146a200241a00c6a41bc0710bf091a200041d4076a2003ad2207422086200784370200200041d0076a20043602000c1d0b200510310b2000410b3a00000c1b0b200241d0006a200110bb0120022802500d1220022802542103200241c8006a200110bb0120022802480d13200228024c2104200241c0006a200110bb01024020022802400d0020022802442101200041073a0000200020022f00a00c3b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a20c6a2d00003a0000200041106a20024180146a41d00710bf091a0c1b0b2000410b3a00000c1a0b200241d8006a200110bb01024020022802580d00200228025c2101200041083a0000200020022f00a00c3b0001200041046a2001360200200041036a200241a20c6a2d00003a0000200041086a20024180146a41d80710bf091a0c1a0b2000410b3a00000c190b200241f0006a200110bb0120022802700d1220022802742103200241e8006a200110bb0120022802680d13200228026c2104200241e0006a200110bb01024020022802600d0020022802642101200041093a0000200020022f00a00c3b00012000410c6a2001360200200041086a2004360200200041046a2003360200200041036a200241a20c6a2d00003a0000200041106a20024180146a41d00710bf091a0c190b2000410b3a00000c180b2000410b3a00000c170b20024180146a200110ba012002290380144209510d03200241d8086a20024180146a41c80310bf091a20024180146a200110c40120022d0080142101200241a00c6a20024180146a41017241df0710bf091a2001410b460d0120024180146a200241a00c6a41df0710bf091a41e007102f22030d020b1039000b2000410b3a0000200241d8086a10ad010c140b200320013a0000200341016a20024180146a41df0710bf091a20024188056a200241d8086a41c80310bf091a2000410a3a0000200020022f00d5083b0001200041036a200241d7086a2d00003a0000200041046a2003360200200041086a20024188056a41c80310bf091a200041d0036a200241f8006a41900410bf091a0c130b2000410b3a00000c120b2000410b3a00000b02402005450d00200541f8036c2100200321010340200110aa01200141f8036a2101200041887c6a22000d000b0b2004450d10200441f8036c450d10200310310c100b2000410b3a00000c0f0b2000410b3a00000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b103b000b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b20024188056a41086a2201200241f8006a41086a2802003602002002200229037837038805200241a00c6a41046a200241d8086a41c80310bf091a200041053a0000200020022f00d5083b0001200041036a200241d7086a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a200229038805370300200041186a20012802003602002000411c6a200241a00c6a41cc0310bf091a200041e8036a20024180146a41f80310bf091a0c030b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041023a0000200020022f00d8083b0001200041036a200241d8086a41026a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0c020b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041013a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0c010b200241f8006a41086a200241a00c6a41086a2802002201360200200220022903a00c2207370378200041003a0000200020022f00d8083b0001200041036a200241da086a2d00003a00002000410c6a2005360000200041086a2004360000200041046a2003360000200041106a2007370300200041186a20013602002000411c6a20024180146a41c40710bf091a0b200241e01b6a24000bd60101017f230041106b2203240002402001450d002000200141346c6a210103402003200028020036020c20022003410c6a4104107e2003200041046a28020036020c20022003410c6a4104107e02400240200041086a2d00004101460d00200341003a000c20022003410c6a4101107e0c010b200341013a000c20022003410c6a4101107e2002200041096a4120107e20032000412c6a28020036020c20022003410c6a4104107e0b2003200041306a28020036020c20022003410c6a4104107e200041346a22002001470d000b0b200341106a24000bd90101027f230041106b2203240002402001450d002001412c6c2101034002400240200028020022044102470d00200341003a00072002200341076a4101107e0c010b200341013a00072002200341076a4101107e024020044101460d00200341003a00072002200341076a4101107e2003200041046a2802003602082002200341086a4104107e2002200041086a4120107e2003200041286a28020036020c20022003410c6a4104107e0c010b200341013a00072002200341076a4101107e0b2000412c6a2100200141546a22010d000b0b200341106a24000b80010002402001450d00200020014181026c6a21010340200220004120107e2002200041206a4120107e2002200041c0006a4120107e2002200041e0006a4120107e200220004180016a4120107e2002200041a0016a4120107e2002200041c0016a4120107e2002200041e0016a4121107e20004181026a22002001470d000b0b0ba60102037f017e230041106b2202240041002103034002400240200020036a22042903004201510d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e20012004410c6a4120107e2002200441086a280200360200200120024104107e200441306a29030021052002200441386a29030037030820022005370300200120024110107e0b200341c0006a2203418012470d000b200241106a24000bff0101027f230041106b2203240002400240200141c4006c2201450d0003400240024020002d00004101460d00200341003a0000200220034101107e2003200041046a280200360200200220034104107e0c010b200341013a0000200220034101107e4120102f2204450d0320034220370204200320043602002003200041016a4120107e2002200328020022042003280208107e02402003280204450d00200410310b0240200041216a2d00004101460d00200341003a0000200220034101107e0c010b200341013a0000200220034101107e2002200041226a4120107e0b200041c4006a2100200141bc7f6a22010d000b0b200341106a24000f0b1039000bca0101047f230041106b2203240002402001450d0020002001411c6c6a210403402000280200210120022000280208220510cb0102402005450d00200541057421050340200220014120107e200141206a2101200541606a22050d000b0b2000411c6a2106200028020c210120022000280214220510cb0102402005450d00200541057421050340200220014120107e200141206a2101200541606a22050d000b0b2003200028021836020c20022003410c6a4104107e2006210020062004470d000b0b200341106a24000bab0101017f230041106b220224000240024002400240200141c000490d00200141808001490d012001418080808004490d02200241033a00032000200241036a4101107e200220013602042000200241046a4104107e0c030b200220014102743a000d20002002410d6a4101107e0c020b200220014102744101723b010e20002002410e6a4102107e0c010b200220014102744102723602082000200241086a4104107e0b200241106a24000b980201057f230041106b2203240002402001450d0020002001411c6c6a210403402000280200210520022000280208220110cb0102402001450d0020052001412c6c6a2106034020022005410c6a4120107e2005280200210120022005280208220710cb012005412c6a210502402007450d00200741057421070340200220014120107e200141206a2101200741606a22070d000b0b20052006470d000b0b2000411c6a2105200028020c210120022000280214220710cb0102402007450d00200741027421070340200320012802003602082002200341086a4104107e200141046a21012007417c6a22070d000b0b2003200028021836020c20022003410c6a4104107e2005210020052004470d000b0b200341106a24000bb30101017f230041106b220324000240024002400240200141c000490d00200141808001490d012001418080808004490d02200341033a00032002200341036a4101107e200320013602042002200341046a4104107e0c030b200320014102743a000d20022003410d6a4101107e0c020b200320014102744101723b010e20022003410e6a4102107e0c010b200320014102744102723602082002200341086a4104107e0b200220002001107e200341106a24000bb30101017f230041106b220324000240024002400240200141c000490d00200141808001490d012001418080808004490d02200341033a00032002200341036a4101107e200320013602042002200341046a4104107e0c030b200320014102743a000d20022003410d6a4101107e0c020b200320014102744101723b010e20022003410e6a4102107e0c010b200320014102744102723602082002200341086a4104107e0b200220002001107e200341106a24000b9205010a7f41002102230041d0006b220341003602002003410472210420012802042105024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420026a20073a00002003200241016a22063602002006210220064121470d000b200341c8006a41026a22012003410d6a2d00003a0000200320032f01043b014c200320032d00063a004e20032003410b6a2f00003b0148200328000721052003410e6a2801002102200341c4006a41026a2206200341146a2d00003a00002003200341126a2f01003b0144200341156a2800002107200341c0006a41026a22042003411b6a2d00003a00002003200341196a2f00003b01402003411c6a28020021082003413c6a41026a2209200341226a2d00003a00002003200341206a2f01003b013c200341236a2f0000210a200320032d004e3a003a200320032f014c3b0138200341346a41026a220b20012d00003a0000200320032f01483b0134200341306a41026a220120062d00003a0000200320032f01443b01302003412c6a41026a220620042d00003a0000200320032f01403b012c200341286a41026a220420092d00003a0000200320032f013c3b0128200041046a2005360000200041036a20032d003a3a0000200020032f01383b00012000410b6a2002360000200041086a20032f01343b00002000410a6a200b2d00003a0000200041126a20073600002000410f6a20032f01303b0000200041116a20012d00003a0000200041166a20032f012c3b0000200041186a20062d00003a0000200041196a20083600002000411f6a20042d00003a00002000411d6a20032f01283b0000200041206a200a3b0000200041003a00000f0b200041013a000002402002450d00200341003602000b0ba80a01067f230041306b2202410036020802400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013602082001200441016a360200200220053a000c20060d01200041013a00000c020b200041013a00000f0b200128020022042d0000210520012003417e6a22063602042001200441016a360200200220053a000d20024102360208024002400240024002400240024002400240024002400240024002402006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200220053a000e200241033602082006450d01200128020022042d0000210520012003417c6a22063602042001200441016a360200200220053a000f200241043602082006450d02200128020022042d0000210520012003417b6a22063602042001200441016a360200200241106a20053a0000200241053602082006450d03200128020022042d0000210520012003417a6a22063602042001200441016a360200200241116a20053a0000200241063602082006450d04200128020022042d000021052001200341796a22063602042001200441016a360200200241126a20053a0000200241073602082006450d05200128020022042d000021052001200341786a22063602042001200441016a360200200241136a20053a0000200241083602082006450d06200128020022042d000021052001200341776a22063602042001200441016a360200200241146a20053a0000200241093602082006450d07200128020022042d000021052001200341766a22063602042001200441016a360200200241156a20053a00002002410a3602082006450d08200128020022042d000021052001200341756a22063602042001200441016a360200200241166a20053a00002002410b3602082006450d09200128020022042d000021052001200341746a22063602042001200441016a360200200241176a20053a00002002410c3602082006450d0a200128020022042d000021052001200341736a22063602042001200441016a360200200241186a20053a00002002410d3602082006450d0b200128020022042d000021052001200341726a22063602042001200441016a360200200241196a20053a00002002410e3602082006450d0c200128020022042d000021052001200341716a22063602042001200441016a3602002002411a6a220420053a00002002410f3602082006450d0d200128020022052d000021062001200341706a3602042001200541016a3602002002411b6a20063a000020024110360208200241286a41026a200241156a2d000022033a0000200220022f010c22013b012c200220022d000e22053a002e2002200241086a410b6a2f000022063b0128200220013b0124200220053a0026200228000f2105200241166a280100210720042f01002101200241206a41026a220420033a0000200220063b0120200220013b011c200041046a2005360000200041036a20022d00263a0000200020022f01243b00012000410b6a20073600002000410f6a20013b0000200041003a0000200041086a20022f01203b00002000410a6a20042d00003a00000f0b200041013a00000c0d0b200041013a00000c0c0b200041013a00000c0b0b200041013a00000c0a0b200041013a00000c090b200041013a00000c080b200041013a00000c070b200041013a00000c060b200041013a00000c050b200041013a00000c040b200041013a00000c030b200041013a00000c020b200041013a00000c010b200041013a00000b200241003602080bc30202057f017e230041106b22012400200142003703080240024020002802042202450d00200028020022032d0000210420002002417f6a2205360204200141013602082000200341016a360200200120043a000c02402005450d00200028020022032d0000210420002002417e6a22053602042000200341016a36020020014102360208200120043a000d2005450d00200028020022032d0000210420002002417d6a22053602042000200341016a36020020014103360208200120043a000e2005450d00200028020022032d0000210420002002417c6a3602042000200341016a360200200120043a000f20014104360208024020012903082206a741044f0d0041fdefc900411b4198f0c900103c000b2006422088a72102410021000c020b200141003602080b41012100410021020b200141106a24002002ad4208862000ad840b9e0d01087f230041306b2202410036020002400240024020012802042203450d00200128020022042d0000210520012003417f6a2206360204200241013602002001200441016a360200200220053a000420060d01200041013a00000c020b200041013a00000f0b200128020022042d0000210520012003417e6a22063602042001200441016a360200200220053a0005200241023602000240024002400240024002400240024002400240024002400240024002400240024002402006450d00200128020022042d0000210520012003417d6a22063602042001200441016a360200200220053a0006200241033602002006450d01200128020022042d0000210520012003417c6a22063602042001200441016a360200200220053a0007200241043602002006450d02200128020022042d0000210520012003417b6a22063602042001200441016a360200200241086a20053a0000200241053602002006450d03200128020022042d0000210520012003417a6a22063602042001200441016a360200200241096a20053a0000200241063602002006450d04200128020022042d000021052001200341796a22063602042001200441016a3602002002410a6a20053a0000200241073602002006450d05200128020022042d000021052001200341786a22063602042001200441016a3602002002410b6a20053a0000200241083602002006450d06200128020022042d000021052001200341776a22063602042001200441016a3602002002410c6a20053a0000200241093602002006450d07200128020022042d000021052001200341766a22063602042001200441016a3602002002410d6a20053a00002002410a3602002006450d08200128020022042d000021052001200341756a22063602042001200441016a3602002002410e6a20053a00002002410b3602002006450d09200128020022042d000021052001200341746a22063602042001200441016a3602002002410f6a20053a00002002410c3602002006450d0a200128020022042d000021052001200341736a22063602042001200441016a360200200241106a20053a00002002410d3602002006450d0b200128020022042d000021052001200341726a22063602042001200441016a360200200241116a20053a00002002410e3602002006450d0c200128020022042d000021052001200341716a22063602042001200441016a360200200241126a20053a00002002410f3602002006450d0d200128020022042d000021052001200341706a22063602042001200441016a360200200241136a20053a0000200241103602002006450d0e200128020022042d0000210520012003416f6a22063602042001200441016a360200200241146a20053a0000200241113602002006450d0f200128020022042d0000210520012003416e6a22063602042001200441016a360200200241156a20053a0000200241123602002006450d10200128020022042d0000210520012003416d6a22063602042001200441016a360200200241166a20053a0000200241133602002006450d11200128020022042d0000210520012003416c6a3602042001200441016a360200200241176a220120053a000020024114360200200220022f010422033b012c200220022d000622043a002e20022800072105200241286a41026a22062002410d6a2d00003a000020022002410b6a2f00003b01282002410e6a2801002107200241246a41026a2208200241146a2d00003a00002002200241126a2f01003b0124200241156a2f0000210920012d00002101200220043a0022200220033b01202002411c6a41026a220320062d00003a0000200220022f01283b011c200241186a41026a220420082d00003a0000200220022f01243b0118200041046a2005360000200041036a20022d00223a0000200020022f01203b00012000410b6a2007360000200041086a20022f011c3b00002000410a6a20032d00003a0000200041146a20013a0000200041126a20093b0000200041003a00002000410f6a20022f01183b0000200041116a20042d00003a00000f0b200041013a00000c110b200041013a00000c100b200041013a00000c0f0b200041013a00000c0e0b200041013a00000c0d0b200041013a00000c0c0b200041013a00000c0b0b200041013a00000c0a0b200041013a00000c090b200041013a00000c080b200041013a00000c070b200041013a00000c060b200041013a00000c050b200041013a00000c040b200041013a00000c030b200041013a00000c020b200041013a00000c010b200041013a00000b200241003602000be70101027f4100210341f8fac90021040240024002400240024002400240200241e0ea91cb064a0d00200241f0c2c98b06460d01200241e2c289ab06460d05200241e2ca95b306470d06200141c0016a2104412121030c060b0240200241e0e69df3064a0d00200241e1ea91cb06460d03200241e7e485f306470d0641202103200121040c060b200241e1e69df306460d01200241e9dabdf306470d05200141c0006a21040c030b200141e0006a21040c020b20014180016a21040c010b200141a0016a21040b412021030c010b41202103200141206a21040b20002003360204200020043602000bd85503047f017e037f230041106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e23000102030405060708090a0b0c0d0e232221201f1e1d1c1b1a1918171615131211100f240b200241003a0000200120024101107e0240024002400240024002400240024002400240200041086a280200417f6a0e0a000102030405060708092d0b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e0c2c0b200241013a0000200120024101107e2000410c6a280200200041146a280200200110ce010c2b0b200241023a0000200120024101107e2002200041106a290300370300200120024108107e0c2a0b200241033a0000200120024101107e2000410c6a280200200041146a280200200110ce010c290b200241043a0000200120024101107e2000410c6a280200200041146a280200200110ce010c280b200241053a0000200120024101107e02402000410c6a2802004101460d00200241003a0000200120024101107e0c280b200241013a0000200120024101107e2002200041106a280200360200200120024104107e2002200041146a280200360200200120024104107e0c270b200241063a0000200120024101107e2000410c6a28020021032001200041146a280200220410cb012004450d262003200441186c6a210403402003280200200341086a280200200110ce012003410c6a280200200341146a280200200110ce01200341186a22032004470d000c270b0b200241073a0000200120024101107e2000410c6a28020021032001200041146a280200220410cb012004450d2520032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000c260b0b200241083a0000200120024101107e2000410c6a280200200041146a280200200110ce012002200041186a280200360200200120024104107e0c240b200241093a0000200120024101107e2000410c6a280200200041146a280200200110ce010c230b200241013a0000200120024101107e024002400240200041086a280200417f6a0e03000102250b200241003a0000200120024101107e200120004188026a4120107e2002200041206a290300370300200120024108107e200041286a200110d50120004198016a200110d50120022000410c6a280200360200200120024104107e200041106a28020021032001200041186a280200220410cb0102402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b20022000411c6a280200360200200120024104107e0c240b200241013a0000200120024101107e200120004188026a4120107e2002200041206a290300370300200120024108107e200041286a200110d50120004198016a200110d50120022000410c6a280200360200200120024104107e200041106a28020021032001200041186a280200220410cb0102402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b20022000411c6a280200360200200120024104107e0c230b200241023a0000200120024101107e200041106a290300200041186a290300200041206a2d0000200110d6010c220b200241023a0000200120024101107e200241003a0000200120024101107e200041086a200110d7010c210b200241033a0000200120024101107e200041046a21030240024002400240024020002d0004417f6a0e050001020304250b200241003a0000200120024101107e2002200041086a280200360200200120024104107e0c240b200241013a0000200120024101107e2001200341016a4120107e2002200041286a280200360200200120024104107e0c230b200241023a0000200120024101107e2002200041086a280200360200200120024104107e0c220b200241033a0000200120024101107e2001200341016a4120107e2002200041286a280200360200200120024104107e200220002d00253a0000200120024101107e0c210b200241043a0000200120024101107e2002200041086a280200360200200120024104107e0c200b200241043a0000200120024101107e0240024002400240200041086a280200417f6a0e0400010203230b200241003a0000200120024101107e2000410c6a200110d8012002200041306a3602002002200110d9010c220b200241013a0000200120024101107e2000410c6a200110d8012002200041306a3602002002200110d9012002200041c0006a3602002002200110d9010c210b200241023a0000200120024101107e2000410c6a200110d801200041306a200110d8012002200041d8006a3602002002200110d9010c200b200241033a0000200120024101107e2000410c6a200110d8012002200041306a3602002002200110d9010c1f0b200241063a0000200120024101107e200241003a0000200120024101107e2000280204210320012000410c6a280200220410cb012004450d1e200441f0006c210403402003200110d501200341f0006a2103200441907f6a22040d000c1f0b0b200241073a0000200120024101107e200110da010c1d0b200241093a0000200120024101107e0240024020002d0004417f6a0e0200011e0b200241003a0000200120024101107e2001200041046a220341016a4120107e2001200341216a4120107e2001200341c1006a4120107e2001200341e1006a4120107e200120034181016a4120107e2001200341a1016a4120107e2001200341c1016a4121107e200041e8016a280200200041f0016a280200200110ce010c1d0b200241013a0000200120024101107e0c1c0b2002410a3a0000200120024101107e024002400240200041086a280200417f6a0e030001021e0b200241003a0000200120024101107e200041206a200110db0120022000410c6a280200360200200120024104107e200041106a28020021032001200041186a280200220410cb0102402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b20022000411c6a280200360200200120024104107e0c1d0b200241013a0000200120024101107e200041206a200110db0120022000410c6a280200360200200120024104107e200041106a28020021032001200041186a280200220410cb0102402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b20022000411c6a280200360200200120024104107e0c1c0b200241023a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c1b0b2002410b3a0000200120024101107e200241003a0000200120024101107e20022000280204360200200120024104107e200041086a280200200041106a280200200110ce01200041146a280200210320012000411c6a280200220410cb012000412c6a210502402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b2002200041206a280200360200200120024104107e2002200041246a280200360200200120024104107e2002200041286a280200360200200120024104107e2001200541c000107e0c1a0b2002410c3a0000200120024101107e200110da010c190b2002410e3a0000200120024101107e0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041086a280200417f6a0e28000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627400b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e0c3f0b200241013a0000200120024101107e20022000410c6a280200360200200120024104107e0c3e0b200241023a0000200120024101107e20022000410c6a280200360200200120024104107e0c3d0b200241033a0000200120024101107e20022000410c6a280200360200200120024104107e0c3c0b200241043a0000200120024101107e20022000410c6a280200360200200120024104107e0c3b0b200241053a0000200120024101107e20022000410c6a280200360200200120024104107e0c3a0b200241063a0000200120024101107e20022000410c6a280200360200200120024104107e0c390b200241073a0000200120024101107e20022000410c6a280200360200200120024104107e0c380b200241083a0000200120024101107e20022000410c6a280200360200200120024104107e0c370b200241093a0000200120024101107e20022000410c6a280200360200200120024104107e0c360b2002410a3a0000200120024101107e20022000410c6a280200360200200120024104107e0c350b2002410b3a0000200120024101107e20022000410c6a280200360200200120024104107e0c340b2002410c3a0000200120024101107e02402000410c6a2802004101460d00200241003a0000200120024101107e0c340b200241013a0000200120024101107e2002200041106a280200360200200120024104107e0c330b2002410d3a0000200120024101107e02402000410c6a2802004101460d00200241003a0000200120024101107e0c330b200241013a0000200120024101107e2002200041106a280200360200200120024104107e0c320b2002410e3a0000200120024101107e20022000410c6a280200360200200120024104107e0c310b2002410f3a0000200120024101107e20022000410c6a280200360200200120024104107e0c300b200241103a0000200120024101107e20022000410c6a280200360200200120024104107e0c2f0b200241113a0000200120024101107e20022000410c6a280200360200200120024104107e0c2e0b200241123a0000200120024101107e20022000410c6a280200360200200120024104107e0c2d0b200241133a0000200120024101107e20022000410c6a280200360200200120024104107e0c2c0b200241143a0000200120024101107e20022000410c6a280200360200200120024104107e0c2b0b200241153a0000200120024101107e20022000410c6a280200360200200120024104107e0c2a0b200241163a0000200120024101107e20022000410c6a280200360200200120024104107e0c290b200241173a0000200120024101107e20022000410c6a280200360200200120024104107e0c280b200241183a0000200120024101107e20022000410c6a280200360200200120024104107e0c270b200241193a0000200120024101107e20022000410c6a280200360200200120024104107e0c260b2002411a3a0000200120024101107e2002200041106a290300370300200120024108107e0c250b2002411b3a0000200120024101107e20022000410c6a280200360200200120024104107e0c240b2002411c3a0000200120024101107e20022000410c6a280200360200200120024104107e0c230b2002411d3a0000200120024101107e20022000410c6a280200360200200120024104107e0c220b2002411e3a0000200120024101107e200041106a29030021062002200041186a29030037030820022006370300200120024110107e0c210b2002411f3a0000200120024101107e200041106a29030021062002200041186a29030037030820022006370300200120024110107e0c200b200241203a0000200120024101107e20022000410c6a280200360200200120024104107e0c1f0b200241213a0000200120024101107e20022000410c6a280200360200200120024104107e0c1e0b200241223a0000200120024101107e20022000410c6a280200360200200120024104107e0c1d0b200241233a0000200120024101107e20022000410c6a280200360200200120024104107e0c1c0b200241243a0000200120024101107e20022000410c6a280200360200200120024104107e0c1b0b200241253a0000200120024101107e20022000410c6a280200360200200120024104107e0c1a0b200241263a0000200120024101107e20022000410c6a280200360200200120024104107e0c190b200241273a0000200120024101107e20022000410c6a280200360200200120024104107e0c180b2002410f3a0000200120024101107e200110da010c170b200241103a0000200120024101107e200110da010c160b200241113a0000200120024101107e200241003a0000200120024101107e2000280204210320012000410c6a280200220410cb010240200441d0006c2204450d00200320046a21070340200341046a2802002204410376210520032802002108024002402004418004490d002005410274210902402004418080084f0d00200220094101723b0100200120024102107e0c020b20022009410272360200200120024104107e0c010b200220054102743a0000200120024101107e0b20012008200520044107716a220441037620044107714100476a107e20022003410c6a280200360200200120024104107e2001200341106a41c000107e200341d0006a22032007470d000b0b200041106a28020021042001200041186a280200220310cb0102402003450d002004200341f4026c6a2107034020042205200110dc0120052802dc022103200120052802e402220410cb0102402004450d00200441c1006c210403400240024020032d00004101460d00200241013a0000200120024101107e2001200341016a41c000107e0c010b200241023a0000200120024101107e2001200341016a41c000107e0b200341c1006a2103200441bf7f6a22040d000b0b200541f4026a210420052802ec022203410376210820052802e8022105024002402003418004490d002008410274210902402003418080084f0d00200220094101723b0100200120024102107e0c020b20022009410272360200200120024104107e0c010b200220084102743a0000200120024101107e0b20012005200820034107716a220341037620034107714100476a107e20042007470d000b0b2000411c6a28020021032001200041246a280200220410cb0102402004450d002003200441306c6a210703404120102f2204450d0720024220370204200220043602002002200341106a4120107e2001200228020022042002280208107e02402002280204450d00200410310b200341306a210820022003280200360200200120024104107e200328020421042001200328020c220310cb0102402003450d00200341c8006c210503400240024002402004220341046a2d000022044104460d00200241003a0000200120024101107e02400240024020040e0404000102040b200241013a00000c040b200241023a00000c030b200241033a00000c020b200241013a0000200120024101107e0b200241003a00000b200120024101107e200341c8006a210420022003280200360200200120024104107e2001200341056a41c000107e200541b87f6a22050d000b0b2008210320082007470d000b0b200041286a200110d5010c150b200241e3003a0000200120024101107e02400240200041086a280200417f6a0e020001160b200241003a0000200120024101107e200041106a200110dd01200041d8036a200110de010c150b200241013a0000200120024101107e2000410c6a280200200110df012002200041106a290300370300200120024108107e0c140b200241db003a0000200120024101107e200041046a2103024002400240024002400240024002400240024020002d0004417f6a0e0a000102030405060708091d0b200241003a0000200120024101107e2001200341016a4120107e0240024020002d002522034102470d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0240024020034101460d00200241003a00000c010b200241013a00000b200120024101107e0b2000280228200110d4010c1c0b200241013a0000200120024101107e2001200341016a4120107e0240024020002d00254101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0b20022000280228360200200120024104107e0c1b0b200241023a0000200120024101107e2001200341016a4120107e0240024020002d00254101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0b20022000280228360200200120024104107e0c1a0b200241033a0000200120024101107e0c190b200241043a0000200120024101107e0240024020002d00054101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0b20022000280208360200200120024104107e200220002f01063b0100200120024102107e0c180b200241053a0000200120024101107e2001200341016a4120107e2000412c6a2104200041286a21050240024020002d00254101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0b200220032f01223b0100200120024102107e2005200110e0012004200110e0010c170b200241063a0000200120024101107e2001200341016a4120107e4120102f2204450d0620024220370204200220043602002002200341216a4120107e2001200228020022032002280208107e2002280204450d16200310310c160b200241073a0000200120024101107e2001200341016a4120107e4120102f2204450d0520024220370204200220043602002002200341216a4120107e2001200228020022032002280208107e2002280204450d15200310310c150b200241083a0000200120024101107e2001200341016a4120107e4120102f2204450d0420024220370204200220043602002002200341216a4120107e2001200228020022032002280208107e2002280204450d14200310310c140b200241093a0000200120024101107e2001200341016a4120107e2001200341216a4120107e0240024020002d004522034102470d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0240024020034101460d00200241003a00000c010b200241013a00000b200120024101107e0b2000280248200110d4010c130b200241da003a0000200120024101107e02400240024020002f0104417f6a0e03000102150b200241003a0000200120024101107e200041086a28020021032001200041106a280200220410cb01200441c0076c2204450d1403402003200110d401200341c0076a2103200441c0786a22040d000c150b0b200241013a0000200120024101107e200220002f01063b0100200120024102107e200041086a280200200110d4010c130b200241023a0000200120024101107e200041086a28020021032001200041106a280200220410cb01200441c0076c2204450d1203402003200110d401200341c0076a2103200441c0786a22040d000c130b0b200241d1003a0000200120024101107e200041046a2103024002400240024002400240024020002d0004417f6a0e0700010203040506180b200241003a0000200120024101107e2001200341016a4120107e0c170b200241013a0000200120024101107e2001200341016a4120107e0c160b200241023a0000200120024101107e2001200341016a4120107e2001200341216a4120107e0c150b200241033a0000200120024101107e200041086a28020021032001200041106a280200220410cb012004450d14200441057421040340200120034120107e200341206a2103200441606a22040d000c150b0b200241043a0000200120024101107e2001200341016a4120107e0c130b200241053a0000200120024101107e2001200341016a4120107e0c120b200241063a0000200120024101107e0c110b200241d0003a0000200120024101107e024002400240024002400240200041086a22052d0000417f6a0e06000102030405160b200241003a0000200120024101107e2000412c6a28020021032001200041346a280200220410cb0102402004450d00200441057421040340200120034120107e200341206a2103200441606a22040d000b0b0240024020052d00014101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e2001200541026a4120107e0b20022000280238360200200120024104107e0c150b200241013a0000200120024101107e2000410c6a280200200110d401200041106a200110e0010c140b200241023a0000200120024101107e2000410c6a200110e001200041106a280200200110d401200041146a200110e0010c130b200241033a0000200120024101107e4120102f2203450d022000412c6a210420024220370204200220033602002002200541016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2004200110e001200220052d00213a0000200120024101107e0c120b200241043a0000200120024101107e4120102f2203450d01200041306a2104200041386a21082000412c6a210020024220370204200220033602002002200541016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2000200110e0012008200110d7012004200110e0010c110b200241053a0000200120024101107e4120102f2203450d0020024220370204200220033602002002200541016a4120107e2001200228020022032002280208107e2002280204450d10200310310c100b1039000b200241223a0000200120024101107e024002402000280204417f6a0e020001100b200241003a0000200120024101107e200041086a28020021032001200041106a280200220410cb012004450d0f200441057421040340200120034120107e200341206a2103200441606a22040d000c100b0b200241013a0000200120024101107e200041086a28020021032001200041106a280200220410cb012004450d0e200441057421040340200120034120107e200341206a2103200441606a22040d000c0f0b0b2002411f3a0000200120024101107e200110da010c0d0b2002411e3a0000200120024101107e0240024002400240200041086a280200417f6a0e0400010203100b200241003a0000200120024101107e2000410c6a280200200110d4010c0f0b200241013a0000200120024101107e2000410c6a280200200110d4012002200041106a290300370300200120024108107e0c0e0b200241023a0000200120024101107e2000410c6a200110d8010c0d0b200241033a0000200120024101107e2000410c6a200110d801200041306a280200200110d4010c0c0b2002411d3a0000200120024101107e024002400240024002400240200041086a280200417f6a0e06000102030405110b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e200041106a280200200041186a280200200110ce012000411c6a280200200041246a280200200110ce012002200041286a2d00003a0000200120024101107e0c100b200241013a0000200120024101107e20022000410c6a280200360200200120024104107e0c0f0b200241023a0000200120024101107e20022000410c6a280200360200200120024104107e0c0e0b200241033a0000200120024101107e20022000410c6a280200360200200120024104107e0c0d0b200241043a0000200120024101107e20022000410c6a280200360200200120024104107e200241003a0000200120024101107e200041106a200110de010c0c0b200241053a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e2002200041146a280200360200200120024104107e2002200041186a280200360200200120024104107e0c0b0b2002411c3a0000200120024101107e024002400240200041086a22032d0000417f6a0e030001020d0b200241003a0000200120024101107e20022000412c6a280200360200200120024104107e2001200341016a4120107e200041386a29030021062002200041c0006a29030037030820022006370300200120024110107e2002200041306a280200360200200120024104107e2002200041346a280200360200200120024104107e0c0c0b200241013a0000200120024101107e20022000410c6a280200360200200120024104107e0c0b0b200241023a0000200120024101107e20022000410c6a280200360200200120024104107e0c0a0b2002411b3a0000200120024101107e02400240024002400240024002400240200041086a22032d0000417f6a0e080001020304050607110b200241003a0000200120024101107e2000412c6a200110e0012002200041c0006a3602002002200110d901200041306a200110e001200041346a200110e001200041386a200110e001200341016a200110e1010c100b200241013a0000200120024101107e200041cc006a200110e0012002200041d0006a3602002002200110d901024020002d00094103470d00200241003a0000200120024101107e0c100b200241013a0000200120024101107e200341016a200110e2010c0f0b200241023a0000200120024101107e2001200341016a4120107e2000412c6a200110e0010c0e0b200241033a0000200120024101107e2000410c6a200110e0010c0d0b200241043a0000200120024101107e2000410c6a200110e0010c0c0b200241053a0000200120024101107e2000412c6a200110e0012002200041c0006a3602002002200110d901200041306a200110e001200041346a200110e001200041386a200110e001200341016a200110e1010c0b0b200241063a0000200120024101107e20022000410c6a280200360200200120024104107e200041106a280200200041186a280200200110ce010c0a0b200241073a0000200120024101107e20022000410c6a280200360200200120024104107e0c090b2002411a3a0000200120024101107e024002400240200041086a280200417f6a0e030001020b0b200241003a0000200120024101107e2000410c6a200110e001200041106a200110e0010c0a0b200241013a0000200120024101107e2000410c6a200110e001200041106a200110e001200041146a200110e001200041186a200110e0012002200041206a3602002002200110d9010c090b200241023a0000200120024101107e0c080b200241193a0000200120024101107e02400240024002400240200041086a22032d0000417f6a0e0500010203040c0b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e200041106a280200200041186a280200200110ce012000411c6a280200200041246a280200200110ce010c0b0b200241013a0000200120024101107e2001200341016a4120107e200041c8006a29030021062002200041d0006a29030037030820022006370300200120024110107e20022000412c6a280200360200200120024104107e200041306a280200200041386a280200200110ce012000413c6a280200200041c4006a280200200110ce010c0a0b200241023a0000200120024101107e20022000410c6a280200360200200120024104107e0c090b200241033a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c080b200241043a0000200120024101107e20022000410c6a280200360200200120024104107e0c070b200241183a0000200120024101107e200110da010c060b200241173a0000200120024101107e0240024002400240024002402000280204417f6a0e060001020304050b0b200241003a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c0a0b200241013a0000200120024101107e2002200041086a280200360200200120024104107e0c090b200241023a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e0c080b200241033a0000200120024101107e2002200041086a280200360200200120024104107e0c070b200241043a0000200120024101107e0c060b200241053a0000200120024101107e0c050b200241163a0000200120024101107e200110da010c040b200241153a0000200120024101107e200110da010c030b200241143a0000200120024101107e200241003a0000200120024101107e20022000280204360200200120024104107e0c020b200241133a0000200120024101107e024002400240024002402000280204417f6a0e050001020304060b200241003a0000200120024101107e2002200041086a280200360200200120024104107e2000410c6a280200200041146a280200200110ce010c050b200241013a0000200120024101107e2002200041086a280200360200200120024104107e2000410c6a280200200041146a280200200110ce010c040b200241023a0000200120024101107e2002200041086a280200360200200120024104107e2000410c6a280200200041146a280200200110ce012002200041186a280200360200200120024104107e0c030b200241033a0000200120024101107e2002200041086a280200360200200120024104107e2000410c6a280200200041146a280200200110ce010c020b200241043a0000200120024101107e2002200041086a280200360200200120024104107e0c010b200241123a0000200120024101107e200110da010b200241106a24000bc20201037f230041106b2202240002404120102f2203450d0020024220370204200220033602002002200041106a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2000200110e0014120102f2203450d0020024220370204200220033602002002200041306a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d0020024220370204200220033602002002200041d0006a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2000280204210320012000410c6a280200220010cb010240200041246c2200450d0003402002200310ec062001200228020022042002280208107e02402002280204450d00200410310b200341246a21032000415c6a22000d000b0b200241106a24000f0b1039000b9c0101017f230041106b22042400200441013a00082003200441086a4101107e200420003703082003200441086a4108107e200420013703082003200441086a4108107e0240024002400240200241ff01710e03000102030b200441003a00082003200441086a4101107e0c020b200441013a00082003200441086a4101107e0c010b200441023a00082003200441086a4101107e0b200441106a24000bd60203017f017e027f230041206b220224000240024002400240024002402000290300220342c000540d00200342808001540d012003428080808004540d024108200379a741037622046b41044f0d0341e6a7c8004136419ca8c800103c000b20022003a74102743a00082001200241086a4101107e0c030b20022003a74102744101723b01082001200241086a4102107e0c020b20022003a74102744102723602082001200241086a4104107e0c010b2002411320044102746b3a00082001200241086a4101107e200220002903002203370300200441786a21000340200220033c00082001200241086a4101107e20034208882103200041016a22042000492105200421002005450d000b20022003370300200350450d010b200241206a24000f0b2002411c6a4100360200200241186a41f8fac9003602002002420137020c200241aca8c8003602082002200241086a10d706000bcb0101017f230041106b2202240002400240024002400240024020002d00000e050001020304050b200241003a000f20012002410f6a4101107e2001200041016a4120107e0c040b200241013a000f20012002410f6a4101107e0c030b200241023a000f20012002410f6a4101107e200041046a2802002000410c6a280200200110ce010c020b200241033a000f20012002410f6a4101107e2001200041016a4120107e0c010b200241043a000f20012002410f6a4101107e2001200041016a4114107e0b200241106a24000bad0303017f027e027f230041306b2202240002400240024002400240024020002802002200290300220342c000544100200041086a29030022045022051b0d0020034280800154410020051b0d01200342808080800454410020051b0d02411020047920037942c0007c20044200521ba741037622056b41044f0d0341e6a7c800413641f0a9c800103c000b20022003a74102743a00182001200241186a4101107e0c030b20022003a74102744101723b01182001200241186a4102107e0c020b20022003a74102744102723602182001200241186a4104107e0c010b2002413320054102746b3a00182001200241186a4101107e200029030021032002200041086a290300220437031020022003370308200541706a21000340200220033c00182001200241186a4101107e2003420888200442388684210320044208882104200041016a22052000492106200521002006450d000b2002200337030820022004370310200320048450450d010b200241306a24000f0b2002412c6a4100360200200241286a41f8fac9003602002002420137021c200241aca8c800360218200241086a200241186a10d806000b4601027f230041106b220124002001410036020820014201370300200110da012000200128020022022001280208107e02402001280204450d00200210310b200141106a24000bae0401047f230041106b2202240020022000290300370300200120024108107e200041106a210302400240024020002903084201510d00200241003a0000200120024101107e20022000290310370300200120024108107e2001200041e0016a4120107e4120102f2204450d02200242203702042002200436020020022003410c6a4120107e2001200228020022042002280208107e02402002280204450d00200410310b2002200041186a280200360200200120024104107e20012003412c6a41c000107e4120102f2204450d02200041a0016a21052002422037020420022004360200200220004180016a4120107e2001200228020022002002280208107e02402002280204450d00200010310b2002200328026c360200200120024104107e2001200541c000107e0c010b200241013a0000200120024101107e20022000290310370300200120024108107e2001200041e0016a4120107e4120102f2204450d01200242203702042002200436020020022003410c6a4120107e2001200228020022042002280208107e02402002280204450d00200410310b2002200041186a280200360200200120024104107e20012003412c6a41c000107e4120102f2204450d01200041a0016a21052002422037020420022004360200200220004180016a4120107e2001200228020022002002280208107e02402002280204450d00200010310b2002200328026c360200200120024104107e2001200541c000107e0b200241106a24000f0b1039000b840601037f230041106b2202240020022000280200360200200120024104107e02404120102f2203450d0020024220370204200220033602002002200041046a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2001200041246a4120107e4120102f2203450d0020024220370204200220033602002002200041c4006a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d0020024220370204200220033602002002200041e4006a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d002002422037020420022003360200200220004184016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2001200041a4016a41c000107e4120102f2203450d0020024220370204200220033602002002200041e4016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d002002422037020420022003360200200220004184026a4120107e2001200228020022032002280208107e02402002280204450d00200310310b20002802a40221032001200041ac026a280200220410cb0102402004450d0020032004410c6c6a210403402003280200200341086a280200200110ce012003410c6a22032004470d000b0b200041b0026a28020021032001200041b8026a280200220410cb0102402004450d00200320044104746a2104034020022003280200360200200120024104107e200341046a2802002003410c6a280200200110ce01200341106a22032004470d000b0b02400240200041bc026a28020022030d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e2003200041c4026a280200200110ce010b200041c8026a280200200041d0026a280200200110ce012002200041d4026a280200360200200120024104107e2002200041d8026a280200360200200120024104107e200241106a24000f0b1039000bf90401017f230041106b22022400024002400240024002400240024002400240024020002802000e09000102030405060708090b200241003a000f20012002410f6a4101107e0c080b200241013a000f20012002410f6a4101107e200041086a200110b4040c070b200241023a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b4040c060b200241033a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b4040c050b200241043a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b404200041b0016a200110b4040c040b200241053a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b404200041b0016a200110b404200041e8016a200110b4040c030b200241063a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b404200041b0016a200110b404200041e8016a200110b404200041a0026a200110b4040c020b200241073a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b404200041b0016a200110b404200041e8016a200110b404200041a0026a200110b404200041d8026a200110b4040c010b200241083a000f20012002410f6a4101107e200041086a200110b404200041c0006a200110b404200041f8006a200110b404200041b0016a200110b404200041e8016a200110b404200041a0026a200110b404200041d8026a200110b40420004190036a200110b4040b200241106a24000bb50901047f230041106b2202240002400240024002400240024002400240024002400240024020002d00000e0b000102030405060708090a0b0b200241003a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0a03402003200110be0520034198046a2103200041e87b6a22000d000c0b0b0b200241013a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0903402003200110be0520034198046a2103200041e87b6a22000d000c0a0b0b200241023a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0803402003200110be0520034198046a2103200041e87b6a22000d000c090b0b200241033a00072001200241076a4101107e200041106a200110d701200241003a00072001200241076a4101107e200041046a280200210320012000410c6a280200220010cb01200041f8036c2200450d0703402003200110bd05200341f8036a2103200041887c6a22000d000c080b0b200241043a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb01200041106a21050240200441f8036c2200450d0003402003200110bd05200341f8036a2103200041887c6a22000d000b0b2005200110dd010c060b200241053a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0503402003200110be0520034198046a2103200041e87b6a22000d000c060b0b200241063a00072001200241076a4101107e024002400240024020002d00010e03000102030b200241003a00072001200241076a4101107e0c020b200241013a00072001200241076a4101107e0c010b200241023a00072001200241076a4101107e0b200220002903183703082001200241086a4108107e20002802042000410c6a280200200110ce010c040b200241073a00072001200241076a4101107e200041046a200110e001200041086a200110e0012000410c6a200110e0010c030b200241083a00072001200241076a4101107e200041046a200110e0010c020b200241093a00072001200241076a4101107e200041046a200110e001200041086a200110e0012000410c6a200110e0010c010b2002410a3a00072001200241076a4101107e200041086a200110dd01200041046a280200200110de010b200241106a24000bba0901047f230041106b2202240002400240024002400240024002400240024002400240024020002d00000e0b000102030405060708090a0b0b200241003a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0a03402003200110bf0520034198046a2103200041e87b6a22000d000c0b0b0b200241013a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0903402003200110bf0520034198046a2103200041e87b6a22000d000c0a0b0b200241023a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb0120004198046c2200450d0803402003200110bf0520034198046a2103200041e87b6a22000d000c090b0b200241033a00072001200241076a4101107e200041106a200110d701200241003a00072001200241076a4101107e200041046a280200210320012000410c6a280200220010cb01200041f8036c2200450d0703402003200110bd05200341f8036a2103200041887c6a22000d000c080b0b200241043a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb01200041106a21050240200441f8036c2200450d0003402003200110bd05200341f8036a2103200041887c6a22000d000b0b2005200110dd010c060b200241053a00072001200241076a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0503402003200110be0520034198046a2103200041e87b6a22000d000c060b0b200241063a00072001200241076a4101107e024002400240024020002d00010e03000102030b200241003a00072001200241076a4101107e0c020b200241013a00072001200241076a4101107e0c010b200241023a00072001200241076a4101107e0b200220002903083703082001200241086a4108107e200041d0076a280200200041d8076a280200200110ce010c040b200241073a00072001200241076a4101107e200041046a200110e001200041086a200110e0012000410c6a200110e0010c030b200241083a00072001200241076a4101107e200041046a200110e0010c020b200241093a00072001200241076a4101107e200041046a200110e001200041086a200110e0012000410c6a200110e0010c010b2002410a3a00072001200241076a4101107e200041086a200110dd01200041046a280200200110df010b200241106a24000bb30101027f230041106b2202240002400240024002402000280200220341c000490d00200341808001490d012003418080808004490d02200241033a00032001200241036a4101107e200220002802003602042001200241046a4104107e0c030b200220034102743a00032001200241036a4101107e0c020b200220034102744101723b010a20012002410a6a4102107e0c010b2002200341027441027236020c20012002410c6a4104107e0b200241106a24000bb80101027f230041106b220224000240024020002d000022034103470d00200241003a000f20012002410f6a4101107e0c010b200241013a000f20012002410f6a4101107e02400240024020030e03000102030b200241003a000f20012002410f6a4101107e2001200041016a4120107e0c020b200241013a000f20012002410f6a4101107e2001200041016a4120107e0c010b200241023a000f20012002410f6a4101107e2001200041016a4121107e0b200241106a24000b890101017f230041106b22022400024002400240024020002d00000e03000102030b200241003a000f20012002410f6a4101107e2001200041016a41c000107e0c020b200241013a000f20012002410f6a4101107e2001200041016a41c000107e0c010b200241023a000f20012002410f6a4101107e2001200041016a41c100107e0b200241106a24000bba0a01047f23004180046b22022400200241d8036a200110b501024002400240024002400240024020022d00d8034101460d00200241f0016a41086a200241e1036a2203290000370300200241f0016a41106a200241e9036a2204290000370300200241f0016a41186a200241f1036a2205290000370300200220022900d9033703f001200241d8036a200110b50120022d00d8034101460d0120024190026a41086a200329000037030020024190026a41106a200429000037030020024190026a41186a2005290000370300200220022900d90337039002200241d8036a200110b50120022d00d8034101460d02200241b0026a41086a200241e1036a2203290000370300200241b0026a41106a200241e9036a2204290000370300200241b0026a41186a200241f1036a2205290000370300200220022900d9033703b002200241d8036a200110b50120022d00d8034101460d03200241d0026a41086a2003290000370300200241d0026a41106a2004290000370300200241d0026a41186a2005290000370300200220022900d9033703d002200241d8036a200110b50120022d00d8034101460d04200241f0026a41086a200241e1036a2203290000370300200241f0026a41106a200241e9036a2204290000370300200241f0026a41186a200241f1036a2205290000370300200220022900d9033703f002200241d8036a200110b50120022d00d8034101460d0520024190036a41086a200329000037030020024190036a41106a200429000037030020024190036a41186a2005290000370300200220022900d90337039003200241d8036a200110cf01024020022d00d8034101460d00200241d0036a2201200241f9036a2d00003a0000200241b0036a41186a2203200241f1036a290000370300200241b0036a41106a2204200241e9036a290000370300200241b0036a41086a2205200241e1036a290000370300200241086a41086a200241f0016a41086a290300370300200241086a41106a200241f0016a41106a290300370300200241086a41186a200241f0016a41186a290300370300200220022900d9033703b003200220022903f001370308200241c0006a20024190026a41186a290300370300200241386a20024190026a41106a290300370300200241306a20024190026a41086a2903003703002002200229039002370328200241e0006a200241b0026a41186a290300370300200241d8006a200241b0026a41106a290300370300200241d0006a200241b0026a41086a290300370300200220022903b00237034820024180016a200241d0026a41186a290300370300200241f8006a200241d0026a41106a290300370300200241f0006a200241d0026a41086a290300370300200220022903d002370368200241a0016a200241f0026a41186a29030037030020024198016a200241f0026a41106a29030037030020024190016a200241f0026a41086a290300370300200220022903f00237038801200241c0016a20024190036a41186a290300370300200241b8016a20024190036a41106a290300370300200241b0016a20024190036a41086a29030037030020022002290390033703a801200241e8016a20012d00003a0000200241e0016a2003290300370300200241d8016a2004290300370300200241d0016a2005290300370300200220022903b0033703c801200041016a200241086a41e10110bf091a200041003a00000c070b200041013a00000c060b200041013a00000c050b200041013a00000c040b200041013a00000c030b200041013a00000c020b200041013a00000c010b200041013a00000b20024180046a24000b8bcb010b087f027e027f017e057f017e037f027e027f057e017f230041d0286b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200141046a2104200128020022052d0000210620012003417f6a22073602042001200541016a36020020060e6401171702031717041705060717171717081717091717170a170b0c0d0e170f171717101717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171112171717171717171713141717171717171715170b200041153a00000c240b02402007450d0020052d0001210620012003417e6a2208360204410221092001200541026a360200024002400240024002400240024020060e06000106020304070b20084108490d062005290002210a2001200341766a220636020420012005410a6a3602002006450d0620052d000a21062001200341756a220436020420012005410b6a3602004100210702400240024020060e03020001090b410121070c010b410221070b2004450d0620052d000b21062001200341746a36020420012005410c6a360200410021094200210b4100210c20060e020504060b20024198216a200110e50120022d0098214107460d05200428020022054108490d05200229029c21210a200228029821210d20012802002203290000210e2001200541786a22063602042001200341086a22033602002006450d0520032d000021062001200541776a22043602042001200341016a3602004100210702400240024020060e03020001080b410121070c010b410221070b2004450d0520032d000121062001200541766a3602042001200341026a360200410021010240024020060e020100070b410121010b200e421088210b2001410874200772210f200e420888a7210c200ea72107410121090c040b20024198216a200110b50120022d0098214101460d04200241aa216a350100200241ae216a33010042208684210b200241b8216a2d00002110200241b4216a2802002111200241b0216a280200210f200241a9216a2d0000210c200241a8216a2d00002107200241a0216a290300210a200228029c21210d20022f019a21211220022d0099212113410321090c030b20024198216a200110b50120022d0098214101460d03200241c8146a41086a20024198216a41106a290300220e370300200241c8146a41106a200241b0216a290300221437030020023501d214200241d6146a33010042208684210b20024198216a41086a290300210a200241b8216a2d00002110200228029c21210d20022f019a21211220022d009921211320022802dc14211120022d00d114210c2014a7210f200ea72107410421090c020b20024198216a200110b50120022d0098214101460d022002418e1c6a200241a7216a290000370100200241881c6a200241a1216a29000037030020022002290099213703801c200241af216a2d00002115200241b0216a2f0100210c200241b2216a2d00002116200241b3216a2f00002110200241b5216a280000211741002103200241003602982120024198216a410472210d2004280200210503402005450d03200128020022062d0000210720012005417f6a22053602042001200641016a360200200d20036a20073a00002002200341016a2206360298212006210320064120470d000b2002200241b5216a280000360280032002200241b8216a28000036008303200241a4216a290200210a200241ac216a2902002118200229029c21210b200241c8146a41186a20024198216a411c6a3100003c0000200241c8146a411c6a2002280083033600002002200b3703c814200220183703d8142002200a3703d01420022002280280033600e1142002419a1c6a220120022d00ca143a00002002200b3d01981c200241e7146a310000211920022800d714211a20022900df14211420022900cf14210e200220012d00003a00c21e200220022f01981c3b01c01e2002200b421888a7221b3600c31e20022900871c210a20022800831c210d20022f00811c211220022d00801c21132002200241921c6a2800003600930d2002200228008f1c3602900d200220153a00970d200220103b009b0d200220163a009a0d2002200c3b01980d2002201736009d0d2017411876211020023501920d20023301960d42208684210b2018421888a7211620022802980d210f200228029c0d211120022f00c11e211720022d00c01e211520022d00910d210c20022d00900d2107410521090c010b4101210c0b200041003a0000200020022800403600012000411e6a200b4220883d00002000411a6a200b3e0000200041c8006a2019370000200041c0006a20143700002000413c6a2016360000200041386a201a360000200041306a200e3700002000412c6a201b3600002000412a6a20173b0000200041296a20153a0000200041286a20103a0000200041246a2011360000200041206a200f360000200041196a200c3a0000200041186a20073a0000200041106a200a3700002000410c6a200d3600002000410a6a20123b0000200041096a20133a0000200041086a20093a0000200041046a200241c3006a280000360000200041d0006a200241c0056a41800710bf091a0c240b200041153a00000c230b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b20024198216a200110b50120022d0098214101460d032002200228009c213600c31e20022002280099213602c01e200428020022054104490d03200241b8216a310000210b20024198216a41186a290300210a200241a0216a290300210e200241a8216a2802002107200241ac216a280200210320012802002204280000210620012005417c6a3602042001200441046a360200200220073602d014200a422888200b42188684a72101200220033602d41420034118762105200a421888a72103200a421088a721072002200e3703c814200e421888a72104200e420888a7210d20022d00c01e211a20022f00c11e211720022800c31e211b20022900cf14210b200aa72115200ea7210c410021160c020b20074104490d022005280002211b20012003417a6a3602042001200541066a36020041012116410021174200210b0c010b20074104490d012005280002210620012003417a6a3602042001200541066a36020020024198216a200110b50120022d0098214101460d012002418e1c6a2204200241a7216a290000370100200241881c6a200241a1216a290000220a3703002002200229009921220e3703801c200241af216a2d00002105200241b0216a2f01002115200241b2216a2d00002107200241b3216a2f00002103200241b5216a28000021012004290100210b20022f00811c211720022800831c211b20022d00871c210c200228018a1c2104200ea7211a200aa7210d410221160b200041013a0000200020022f0080033b0001200041286a2006360000200041216a20013600002000411f6a20033b00002000411e6a20073a00002000411c6a20153b00002000411b6a20053a0000200041136a200b3700002000410f6a20043600002000410d6a200d3b00002000410c6a200c3a0000200041086a201b360000200041066a20173b0000200041056a201a3a0000200041046a20163a0000200041036a20024182036a2d00003a00002000412c6a200241c0056a41a40710bf091a0c230b200041153a00000c220b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602000240024002400240024002400240024020060e080001020304050607080b20024198216a200110b50120022d0098214101460d072004280200220d4110490d07200241b8216a310000210e200241b0216a2903002114200241ac216a280200210720024198216a41106a280200210420024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200221a41086a2900002119201a29000021182001201a41106a3602002001200d41706a360204410021014200211c4100210d0c280b20024198216a200110b50120022d0098214101460d062004280200220d4110490d06200241b8216a310000210e200241b0216a2903002114200241ac216a280200210720024198216a41106a280200210420024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200221a41086a2900002119201a29000021182001201a41106a3602002001200d41706a3602044101210d410021014200211c0c270b20024198216a200110b50120022d0098214101460d05200241900d6a41086a200241b0216a2207290300370300200241900d6a41106a200241b8216a220d2d00003a0000200220024198216a41106a221a2903003703900d20024198216a41086a2217290300210b200228029c21210520022f019a21210320022d009921210620024198216a200110b50120022d0098214101460d05200428020022044110490d05200d310000210a2007290300211d201a290300211920172903002118200228029c21211a20022f019a21211720022d009921211b2001280200220741086a290000211e2007290000211f2001200741106a3602002001200441706a360204200241900d6a41106a310000210e20022903980d211420022802900d210420022802940d21074102210d0c260b20024198216a200110b50120022d0098214101460d04200428020022044110490d04200241b8216a310000210e200241b0216a290300211420024198216a41106a290300211f20024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200220741086a2900002119200729000021182001200741106a3602002001200441706a220d360204200d4110490d04200741186a290000210a2007290010211d2001200441606a3602042001200741206a360200200a421088211c201f422088a72107200a420888a72101201fa721044103210d0c250b20024198216a200110b50120022d0098214101460d03200428020022074110490d03200241b8216a310000210e200241b0216a290300211420024198216a41106a290300210a20024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200220441086a2900002119200429000021182001200441106a3602002001200741706a360204200a422088a72107200aa721044200211d4104210d0c230b20024198216a200110b50120022d0098214101460d02200241c01e6a41086a20024198216a41186a290300370300200241c01e6a41106a220d200241b8216a2d00003a0000200220024198216a41106a2903003703c01e200428020022074110490d0220024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200220441086a2900002119200429000021182001200441106a3602002001200741706a360204200241900d6a41086a290300220a421088211c20022903c01e2220422088a72107200a420888a72101200d310000210e20022903c81e2114200241900d6a41186a290300211e20022903900d211d20022903a00d211f2020a721044105210d0c230b20024198216a200110b50120022d0098214101460d01200428020022074110490d01200241ae216a330100210a200241aa216a350100210e200241b8216a2d0000210d200241b4216a280200211a200241b0216a2802002117200241a9216a2d0000211b20024198216a41106a2d0000211520024198216a41086a290300210b200228029c21210520022f019a21210320022d00992121062001280200220441086a2900002119200429000021182001200441106a3602002001200741706a3602042002201b3a00d814200220153a00d7142002201a3600e314200220173600df142002200d3a00e7142002200e200a42208684220a3e00d914200a421088a7210720022800d714210420022900df14211420023100e714210e4200211d4106210d0c210b20024198216a200110b50120022d0098214101460d00200241900d6a41086a200241b0216a2207290300370300200241900d6a41106a200241b8216a2d00003a0000200220024198216a41106a2903003703900d20024198216a41086a290300210b200228029c21210520022f019a21210320022d009921210620024198216a200110b50120022d0098214101460d002002418e1c6a200241a7216a290000370100200241801c6a41086a200241a1216a29000037030020022002290099213703801c200428020022044110490d00200241af216a2d0000211a20072f01002117200241b2216a2d0000211b200241b3216a2f00002115200241b5216a280000210c2001280200220741086a290000211e2007290000211f2001200741106a3602002001200441706a220d360204200d450d0020072d0010210d20012004416f6a3602042001200741116a3602004100210102400240200d0e020100020b410121010b200220022900871c3703c8142002201a3a00d7142002200c3600dd14200220153b00db142002201b3a00da14200220173b01d81420022002418e1c6a2900003700cf14200241a00d6a310000210e20022903980d211420022800831c211a20022f00811c211720022d00801c211b20022802940d210720022802900d2104200241e0146a310000210a200241d0146a290300211920022903d814211d20022903c81421184107210d4200211c0c210b200041153a00000c210b0240024002402007450d0020052d0001210620012003417e6a3602042001200541026a36020020060d0020024198216a200110d00120022d0098214101460d00200241a1216a290000210b200229009921210a200241086a200110bb0120022802080d0020042802002203200228020c2205490d002005417f4c0d140240024020050d00410121060c010b200510352206450d1f200428020021030b024020032005490d0020062001280200200510bf092103200128020422072005490d172001200720056b3602042001200128020020056a3602002003450d012005ad220e422086200e84220ea72105024020042802002207450d00200128020022042d0000210d20012007417f6a3602042001200441016a36020041002101200d0e020403000b2005450d010b200610310b200041153a00000c220b410121010b200041033a0000200020022f00c8143b0001200041186a200b370000200041106a200a370000200041206a20013a00002000410c6a200e422088a7360000200041086a2005360000200041046a2003360000200041036a200241ca146a2d00003a0000200041246a200241c0056a41ac0710bf091a0c200b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d0020074104490d002005280002210620012003417a6a3602042001200541066a360200200041043a0000200020022f0098213b0001200041046a2006360200200041036a2002419a216a2d00003a0000200041086a200241c0056a41c80710bf091a0c200b200041153a00000c1f0b2007450d1b20052d0001210620012003417e6a3602042001200541026a3602004101210302400240024020060e030002011e0b200241106a200110bb0102402002280210450d0020024100360298210c1e0b20024198216a2001200228021410b4012002280298212205450d1d200241a0216a2802002104200228029c212107410021030c010b410221030b200041053a0000200020022f00c8143b0001200041106a20043600002000410c6a2007360000200041086a2005360000200041046a2003360000200041036a200241c8146a41026a2d00003a0000200041146a200241c0056a41bc0710bf091a0c1e0b02402007450d0020052d0001210720012003417e6a3602042001200541026a360200410121050240024020070e03001c01020b20024198216a200110b50120022d0098214101460d01200241900d6a41106a2201200241b8216a2d00003a0000200220024198216a41106a29030022143703900d200241a0216a290300210b200241b0216a290300210a200228029c21210620022f019a21211a20022d00992121172001310000210e20022802940d21032014a7210d410021050c1b0b200241186a200110bb0120022802180d00200228021c220d200428020041057622052005200d4b1b22054105742203417f4c0d0f0240024020050d00410121060c010b2003102f2206450d1a0b2005ad210b024002400240200d450d0020024198216a41106a21072002418f1c6a220c41036a2116034020024198216a200110e601200241900d6a41086a200741086a290000370300200241900d6a41106a200741106a2d00003a0000200220072900003703900d20022d0098214101460d0320022903a021210a200228029c21210520022f019a21210320022d0099212104200c20022802900d360000201620022800930d3600002002200a3700871c200220053600831c200220033b00811c200220043a00801c200228009d0d210420022f009b0d211a20022d009a0d211720022f01980d211b20022d00970d21150240200b422088220aa72203200ba7470d00200341016a22052003490d1420034101742212200520052012491b22054104200541044b1b220541ffffff3f712005462112200541057421050240024020030d0020024100360298210c010b200241013602a02120022006360298212002200a4205863e029c210b200241c8146a2005201220024198216a104e20022802d014210520022802c8144101460d0320022802cc1421062005410576ad210b0b200620034105746a220520022903801c370000200241801c6a41086a290300210a200241801c6a410e6a290100210e2005200436001c2005201a3b001a200520173a00192005201b3b0017200520153a00162005410e6a200e370000200541086a200a370000200b42ffffffff0f83200341016aad42208684210b200d417f6a220d0d000b0b2006450d024200210a410221054200210e0c1c0b2005450d100c1a0b200b42ffffff3f83500d00200610310b200041153a00000c1d0b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024002400240024020060e03000102060b200241c01e6a200110e70120022802c01e4101460d05200241981c6a200241c01e6a410472220d41a40210bf091a41002103200241003602c01e2004280200210503402005450d06200128020022062d0000210720012005417f6a22053602042001200641016a360200200d20036a20073a00002002200341016a22063602c01e2006210320064120470d000b200220022902c41e220b3703e8202002200241cb1e6a2900003700ef202002200b3d019021200220022d00ea203a009221200241e01e6a2802002105200241de1e6a2f01002103200241dd1e6a2d00002106200241d31e6a2d0000210d200241d41e6a2f0100211a200241d61e6a2d00002117200241d71e6a2f0000211b200241d91e6a280000210720022800eb20211520022900ef20210b200220022d0092213a00821c200220022f0190213b01801c200220073a00951c2002201b3b00931c200220173a00921c2002201a3b01901c2002200d3a008f1c2002200b3700871c200220153600831c20024198216a200241981c6a41a40210bf091a200241ca236a2002418e1c6a290100370100200241c4236a200241801c6a41086a290300370200200220022903801c3702bc23200241c8146a20024198216a41ba0210bf091a200241900d6a200241c8146a41ba0210bf091a200241206a200110bb0120022802200d05200428020022172002280224220d490d05200d417f4c0d1302400240200d0d004101211a0c010b200d1035221a450d1e200428020021170b2017200d490d04201a2001280200200d10bf0921172001280204221b200d490d162001201b200d6b36020420012001280200200d6a3602002017450d05200dad220b422086200b84220ba7210d2004280200220c4104490d032001280200221628000021042001200c417c6a22173602042001201641046a36020020174104490d032007411076211720074108762107200b422088a7211b201628000421152001200c41786a3602042001201641086a36020020024180036a200241900d6a41ba0210bf091a410021010c020b200241c01e6a200110e70120022802c01e4101460d04200241981c6a200241c01e6a410472220d41a40210bf091a41002103200241003602c01e2004280200210503402005450d05200128020022062d0000210720012005417f6a22053602042001200641016a360200200d20036a20073a00002002200341016a22063602c01e2006210320064120470d000b200220022902c41e220b3703e8202002200241cb1e6a2900003700ef202002200b3d019021200220022d00ea203a009221200241e01e6a2802002105200241de1e6a2f01002103200241dd1e6a2d00002106200241d31e6a2d0000210d200241d41e6a2f0100211a200241d61e6a2d00002117200241d71e6a2f0000211b200241d91e6a280000210720022800eb20211520022900ef20210b200220022d0092213a00821c200220022f0190213b01801c200220073a00951c2002201b3b00931c200220173a00921c2002201a3b01901c2002200d3a008f1c2002200b3700871c200220153600831c20024198216a200241981c6a41a40210bf091a200241ca236a2002418e1c6a290100370100200241c4236a200241801c6a41086a290300370200200220022903801c3702bc23200241c8146a20024198216a41ba0210bf091a200241900d6a200241c8146a41ba0210bf091a200241286a200110bb0120022802280d0420042802002217200228022c220d490d04200d417f4c0d1202400240200d0d004101211a0c010b200d1035221a450d1d200428020021170b2017200d490d03201a2001280200200d10bf0921172001280204221b200d490d162001201b200d6b36020420012001280200200d6a3602002017450d04200dad220b422086200b84220ba7210d2004280200220c4104490d022001280200221628000021042001200c417c6a22173602042001201641046a36020020174104490d022007411076211720074108762107200b422088a7211b201628000421152001200c41786a3602042001201641086a36020020024180036a200241900d6a41ba0210bf091a410121010c010b200241c01e6a200110e70120022802c01e4101460d03200241981c6a200241c01e6a410472220d41a40210bf091a41002103200241003602c01e2004280200210503402005450d04200128020022062d0000210720012005417f6a22053602042001200641016a360200200d20036a20073a00002002200341016a22063602c01e2006210320064120470d000b200220022902c41e220b3703e8202002200241cb1e6a2900003700ef202002200b3d019021200220022d00ea203a009221200241e01e6a2802002105200241de1e6a2f01002103200241dd1e6a2d00002106200241d31e6a2d0000210d200241d41e6a2f0100211a200241d61e6a2d00002117200241d71e6a2f0000211b200241d91e6a280000210720022800eb20211520022900ef20210b200220022d0092213a00821c200220022f0190213b01801c200220073a00951c2002201b3b00931c200220173a00921c2002201a3b01901c2002200d3a008f1c2002200b3700871c200220153600831c20024198216a200241981c6a41a40210bf091a200241ca236a2002418e1c6a290100370100200241c4236a200241801c6a41086a290300370200200220022903801c3702bc23200241c8146a20024198216a41ba0210bf091a200241900d6a200241c8146a41ba0210bf091a200241306a200110bb0120022802300d03200428020022172002280234220d490d03200d417f4c0d1102400240200d0d004101211a0c010b200d1035221a450d1c200428020021170b2017200d490d02201a2001280200200d10bf0921172001280204221b200d490d162001201b200d6b36020420012001280200200d6a3602002017450d03200dad220b422086200b84220ba7210d200428020022154104490d012007411076211720074108762107200b422088a7211b2001280200220c280000210420012015417c6a3602042001200c41046a36020020024180036a200241900d6a41ba0210bf091a410221010b200241c0006a20024180036a41ba0210bf091a200041073a0000200020022f008c213b0001200041036a2002418e216a2d00003a0000200041046a2001360000200041086a200241c0006a41ba0210bf091a200041dc026a2015360000200041d8026a2004360000200041d4026a201b360000200041d0026a200d360000200041cc026a201a360000200041c8026a2005360000200041c6026a20033b0000200041c5026a20063a0000200041c3026a20173b0000200041c2026a20073a0000200041e0026a200241c0056a41f00410bf091a0c1f0b200d450d010b201a10310b200041153a00000c1c0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024002400240024020060e050001020304060b20074104490d052005280002210620012003417a6a3602042001200541066a360200410021010c040b20074104490d042005280002210620012003417a6a3602042001200541066a360200410121010c030b20074104490d032005280002210620012003417a6a3602042001200541066a360200410221010c020b20074104490d022005280002210620012003417a6a3602042001200541066a360200410321010c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621072001200341766a36020420012005410a6a360200410421010b200041083a0000200020022f0098213b00012000410c6a2007360000200041086a2006360000200041046a2001360000200041036a2002419a216a2d00003a0000200041106a200241c0056a41c00710bf091a0c1c0b200041153a00000c1b0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b20074104490d032005280002210620012003417a6a22073602042001200541066a36020020074104490d03200528000621072001200341766a220436020420012005410a6a36020020044104490d03200528000a21042001200341726a220d36020420012005410e6a360200200d4104490d03200528000e210d20012003416e6a3602042001200541126a360200410021010c020b20074104490d022005280002210620012003417a6a22073602042001200541066a36020020074104490d02200528000621072001200341766a36020420012005410a6a360200410121010c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621072001200341766a220436020420012005410a6a36020020044104490d01200528000a21042001200341726a36020420012005410e6a360200410221010b200041093a0000200020022f0098213b0001200041146a200d360000200041106a20043600002000410c6a2007360000200041086a2006360000200041046a2001360000200041036a2002419a216a2d00003a0000200041186a200241c0056a41b80710bf091a0c1b0b200041153a00000c1a0b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024020060e020001030b20074104490d022005280002210620012003417a6a3602042001200541066a36020020024198216a200110b50120022d0098214101460d02200241900d6a41086a200241b0216a290300370300200241900d6a41106a200241b8216a2d00003a0000200220024198216a41106a290300220b3703900d2002200b3703c814200220022901960d3701ce1420024198216a41086a290300210b200228029c21210720022f019a21210120022d009921210520022d009e0d210320022f009f0d21044100210d0c010b20074104490d012005280002210720012003417a6a3602042001200541066a360200200220022903881c3703c81420022002418e1c6a2901003701ce144101210d0b200220022901ce1437018603200220022903c814370380032000410a3a0000200020022f00403b0001200041036a200241c2006a2d00003a00002000410c6a200b370000200041086a2007360000200041066a20013b0000200041056a20053a0000200041046a200d3a0000200041146a2002290380033700002000411a6a200229018603370000200041286a2006360000200041266a41003b0000200041236a20043b0000200041226a20033a00002000412c6a200241c0056a41a40710bf091a0c1a0b200041153a00000c190b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024002400240024020060e090001020304050607080a0b20074104490d092005280002210620012003417a6a22073602042001200541066a36020020074104490d09200528000621042001200341766a220736020420012005410a6a36020020074104490d09200528000a211a2001200341726a36020420012005410e6a36020020024180036a41086a20024198216a41086a29030037030020024180036a41106a20024198216a41106a29030037030020024180036a41186a20024198216a41186a290300370300200220022903982137038003410021010c080b20074104490d082005280002210620012003417a6a3602042001200541066a36020020024180036a41086a20024198216a41086a29030037030020024180036a41106a20024198216a41106a29030037030020024180036a41186a20024198216a41186a290300370300200220022903982137038003410121010c070b20024198216a200110b50120022d0098214101460d072004280200221a450d07200241b8216a3100002114200241b0216a290300210a200241a8216a290300210b200241a0216a290300210e200228029c21210620022f019a21210320022d009921210d200128020022042d000021072001201a417f6a22173602042001200441016a3602004100210502400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020070e242322000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212b0b410221050c220b410321050c210b410421050c200b410521050c1f0b410621050c1e0b410721050c1d0b410821050c1c0b410921050c1b0b410a21050c1a0b410b21050c190b410c21050c180b410d21050c170b410e21050c160b410f21050c150b411021050c140b411121050c130b411221050c120b411321050c110b411421050c100b411521050c0f0b411621050c0e0b411721050c0d0b411821050c0c0b411921050c0b0b411a21050c0a0b411b21050c090b411c21050c080b411d21050c070b411e21050c060b411f21050c050b412021050c040b412121050c030b412221050c020b412321050c010b410121050b20174104490d07200428000121072001201a417b6a22173602042001200441056a36020020174110490d072004410d6a2900002119200429000521182001201a416b6a3602042001200441156a36020020024198036a200241d0146a290300370300200220022903c81437039003200220183703800320022019370388032014a741ff01712117200e422088a7211a200ea72104410221010c060b20074104490d062005280002210620012003417a6a22073602042001200541066a36020020074104490d06200528000621042001200341766a220736020420012005410a6a36020020074104490d06200528000a211a2001200341726a220736020420012005410e6a36020020074110490d06200541166a290000210a200529000e210b2001200341626a36020420012005411e6a360200410321010c050b20024198216a200110b50120022d0098214101460d05200428020022074110490d05200229009921210e200241a1216a2900002114200241b1216a290000210b200241a9216a290000210a2001280200220541086a2900002119200529000021182001200541106a3602002001200741706a220336020420034110490d05200e421888a72106200e420888a72103200ea7210d2005290010211f200241c91e6a200b37000020024180036a41186a200541186a2900003703002001200741606a3602042001200541206a3602002002200a3700c11e20022014423888a73a00c01e20022018370380032002201f370390032002201937038803200b423888a721172014421888a7211a200241c01e6a41086a290300210a20022903c01e210b200e423888201442088684a72104410421010c040b20024198216a200110b50120022d0098214101460d04200428020022054110490d04200241b8216a2d00002117200241b4216a280200210420024198216a41186a280200211a200241a9216a2d0000211b20024198216a41106a2d0000211520024198216a41086a290300210e200228029c21210620022f019a21210320022d009921210d2001280200220741086a290000210b2007290000210a2002200241aa216a350100200241ae216a3301004220868422143e00d914200241dd146a20144220883d000020024180036a41186a200241900d6a41086a2903003703002001200741106a3602002001200541706a360204200220043600e3142002201a3600df142002201b3a00d814200220153a00d714200220022903900d370390032002200a370380032002200b37038803200e422088a7211a20022900df14210a20022900d714210b200ea72104410521010c030b20074104490d032005280002210720012003417a6a3602042001200541066a36020020024198216a200110b50120022d0098214101460d032002200228009c213600c31e20022002280099213602c01e200428020022054110490d03200241b8216a310000210b200241b0216a290300210a20024198216a41086a290300210e20024198216a41106a2802002106200241ac216a28020021042001280200220341086a2900002114200329000021192001200341106a3602002001200541706a360204200220043602d414200220063602d01420022019370380032002201437038803200ba741ff01712117200e422088a7211a20022d00c01e210d20022f00c11e210320022800c31e210620022903d014210b200ea72104410621010c020b20024198216a200110b50120022d0098214101460d022002418e1c6a200241a7216a290000370100200241881c6a200241a1216a29000037030020022002290099213703801c200428020022034104490d02200241af216a2d0000210d200241b0216a2f0100211a200241b2216a2d00002117200241b3216a2f0000211b200241b5216a280000210420012802002205280000210720012003417c6a22063602042001200541046a36020020064110490d022005410c6a290000210e2005290004211420012003416c6a22063602042001200541146a36020020064104490d02200528001421152001200341686a22063602042001200541186a36020020064104490d022005280018210c2001200341646a36020420012005411c6a3602002002200228008f1c3602900d2002201b3b009b0d200220173a009a0d2002201a3b01980d2002200d3a00970d2002200241921c6a2800003600930d2002200436009d0d20022d00801c210d20022f00811c210320022800831c210620022900871c211920022903980d210a20022903900d210b20024190036a200e37030020022014370388032002200c360284032002201536028003200441187621172019422088a7211a2019a72104410721010c010b20074104490d012005280002210620012003417a6a22073602042001200541066a36020020074104490d01200528000621042001200341766a36020420012005410a6a3602004108210120024180036a41086a20024198216a41086a29020037030020024180036a41106a20024198216a41106a29020037030020024180036a41186a20024198216a41186a2902003703002002200229029821370380030b200241c0006a41186a221b20024180036a41186a290300370300200241c0006a41106a221520024180036a41106a290300370300200241c0006a41086a220c20024180036a41086a2903003703002002200229038003370340200041206a200a370000200041186a200b3700002000410b3a0000200020022800981c360001200041046a2002419b1c6a2800003600002000412c6a20073600002000412a6a41003b0000200041296a20053a0000200041286a20173a0000200041146a201a360000200041106a20043600002000410c6a20063600002000410a6a20033b0000200041096a200d3a0000200041086a20013a0000200041306a2002290340370000200041386a200c290300370000200041c0006a2015290300370000200041c8006a201b290300370000200041d0006a200241c0056a41800710bf091a0c190b200041153a00000c180b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024002400240024002400240024002400240024020060e0c000102030405060708090a0b0d0b20074104490d0c2005280002210620012003417a6a3602042001200541066a360200410021040c1e0b20024198216a200110b50120022d0098214101460d0b200428020022044104490d0b200241ae216a330100210b200241aa216a3501002119200241b8216a2d00002117200241b4216a280200210c200241b0216a2802002116200241a9216a2d0000210720024198216a41106a2d00002105200241a0216a2903002114200228029c21210620022f019a21211b20022d00992121152001280200220d280000210320012004417c6a221a3602042001200d41046a360200201a4110490d0b200d410c6a290000210e200d290004210a20012004416c6a3602042001200d41146a3602002002200c3600e314200220163600df142019200b422086842219421088a7210c2014422088a7211a20022900df14210b2019a7210d2014a72116410121040c1d0b20024198216a200110b50120022d0098214101460d0a2002200228009c213600c31e20022002280099213602c01e200428020022064104490d0a200241b8216a3100002119200241b0216a290300210b200241a0216a290300211420024198216a41106a2802002105200241ac216a280200210c20012802002207280000210320012006417c6a22043602042001200741046a36020020044110490d0a2007410c6a290000210e2007290004210a20012006416c6a3602042001200741146a3602002005411076210d200541087621072019a741ff017121172014422088a7211a20022d00c01e211520022f00c11e211b20022800c31e21062014a72116410221040c1c0b20074104490d092005280002210620012003417a6a3602042001200541066a360200410321040c1b0b4104210420074104490d082005280002210620012003417a6a3602042001200541066a3602000c1a0b20074104490d072005280002210620012003417a6a3602042001200541066a360200410521040c190b20074104490d062005280002210620012003417a6a360204410621042001200541066a3602000c180b20074104490d052005280002210620012003417a6a22073602042001200541066a36020020074104490d05200528000621162001200341766a36020420012005410a6a360200410721040c170b20074104490d042005280002210620012003417a6a22073602042001200541066a3602002007450d0420052d000621042001200341796a360204410721032001200541076a360200410021170240024020040e020100060b20024198216a200110e50120022d00982122034107460d0520022f00992120022d009b21411074724108742117200241a2216a2f0100210d200241a1216a2d0000210720024198216a41086a2d00002105200228029c21211a0b20172003722116410821040c160b20074104490d032005280002210620012003417a6a3602042001200541066a360200410921040c150b20024198216a200110b50120022d0098214101460d022002418e1c6a200241a7216a290000370100200241881c6a200241a1216a29000037030020022002290099213703801c200428020022054104490d02200241af216a2d0000210d200241b0216a2f0100211a200241b2216a2d00002117200241b3216a2f0000211b200241b5216a280000210720012802002206280000210320012005417c6a3602042001200641046a360200200241386a200110bb0120022802380d0220042802002205200228023c2206490d022006417f4c0d0b0240024020060d00410121150c010b200610352215450d16200428020021050b20052006490d0120152001280200200610bf092104200128020422052006490d112001200520066b3602042001200128020020066a3602002004450d022002200228008f1c22053602900d2002200d3a00970d2002201b3b009b0d200220173a009a0d2002201a3b01980d2002200241921c6a2800003600930d2006ad220b422086200b84220b422088210e200b4220862004ad84210a2002200736009d0d2007411876211720022900871c2214422088a7211a20022800831c210620022f00811c211b20022d00801c211520022d00910d210720022903980d210b20022f01920d210d20022802940d210c2014a72116410a21040c140b20074104490d012005280002210620012003417a6a3602042001200541066a360200410b21040c130b201510310b200041153a00000c170b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020002400240024020060e020001030b20074104490d022005280002210720012003417a6a3602042001200541066a360200200241c8146a41086a20024198216a41086a290300370300200241c8146a41106a20024198216a41106a2d00003a000020022002290398213703c814410021014100210d0c010b20074104490d012005280002210620012003417a6a3602042001200541066a36020020024198216a200110b50120022d0098214101460d012002418e1c6a200241a7216a290000370100200241881c6a200241a1216a29000037030020022002290099213703801c200428020022044104490d01200241af216a2d0000210d200241b0216a2f0100211a200241b2216a2d00002117200241b3216a2f0000211b200241b5216a280000211520012802002207280000210520012004417c6a22033602042001200741046a36020020034104490d01200728000421032001200441786a220c3602042001200741086a360200200c4110490d01200741106a290000210a2007290008210b2001200441686a220c3602042001200741186a360200200c4110490d01200741206a2900002119200729001821142001200441586a3602042001200741286a3602002002200228008f1c3602900d2002200d3a00970d2002201536009d0d2002201b3b009b0d200220173a009a0d2002201a3b01980d2002200241921c6a2800003600930d20022d00801c210420022f00811c210120022800831c210720022900871c210e200241c8146a41106a200241900d6a41106a2d00003a0000200241d0146a20022903980d370300200220022903900d3703c8144101210d0b20024180036a41106a200241c8146a41106a2d0000221a3a000020024180036a41086a200241c8146a41086a2903002218370300200220022903c814221f37038003200041d0006a2019370000200041c8006a2014370000200041c0006a200a370000200041386a200b3700002000410d3a000020002002280040360001200041046a200241c3006a280000360000200041106a200e3700002000410c6a20073600002000410a6a20013b0000200041096a20043a0000200041086a200d3a0000200041186a201f370000200041206a2018370000200041286a201a3a0000200041346a2003360000200041306a20053600002000412c6a2006360000200041d8006a200241c0056a41f80610bf091a0c170b200041153a00000c160b02402007450d0020052d0001210620012003417e6a22073602042001200541026a3602000240024002400240024020060e03000102050b2007450d0420052d0002210620012003417d6a3602042001200541036a36020041002105410721034200210b410021070240024020060e020100060b20024198216a200110e50120022d00982122034107460d0520022f00992120022d009b21411074724108742107200229029c21210b0b200720037221010c020b20024198216a200110b5014101210520022d0098214101460d032002418e1c6a200241a7216a290000370100200241881c6a200241a1216a2900003703002002200229009921220a3703801c200241af216a2d000041187420022f00931c200241951c6a2d00004110747272210320024198216a41186a2f01002106200241b2216a2d00002107200241b3216a2f00002104200241b5216a280000210d20022f00811c211a20022800831c210120022900871c210b200228008f1c2117200aa7211b0c020b2007450d0220052d0002210620012003417d6a3602042001200541036a36020041002103410721054200210b0240024020060e020100040b20024198216a200110e50120022d00982122054107460d0320022f00992120022d009b21411074724108742103200229029c21210b0b20032005722101410221050b0b2000410e3a0000200020022f00c8143b0001200041216a200d3600002000411f6a20043b00002000411e6a20073a00002000411c6a20063b0000200041186a2003360000200041146a20173600002000410c6a200b370000200041086a2001360000200041066a201a3b0000200041056a201b3a0000200041046a20053a0000200041036a200241ca146a2d00003a0000200041286a200241c0056a41a80710bf091a0c160b200041153a00000c150b02402007450d0020052d0001210620012003417e6a3602042001200541026a36020002400240024020060e020001030b20024198216a200110e8012002280298212201450d02200241a0216a2802002105200228029c212103410021060c010b20024198216a200110e8012002280298212201450d01200241a0216a2802002105200228029c212103410121060b2000410f3a0000200020022f00c8143b0001200041106a20053600002000410c6a2003360000200041086a2001360000200041046a2006360000200041036a200241ca146a2d00003a0000200041146a200241c0056a41bc0710bf091a0c150b200041153a00000c140b02402007450d0020052d0001210720012003417e6a22063602042001200541026a3602000240024002400240024002400240024020070e0700010203040506080b20024198216a200110b50120022d0098214101460d072004280200220d4104490d0720024198216a41206a310000210e200241b0216a2903002118200241a8216a2903002114200241a0216a290300210b200228029c21211a20022f019a21211520022d009921210c2001280200221728000021162001200d417c6a22043602042001201741046a22033602004100210520024100360298212004411f2004411f491b20036a41016a211220024198216a410472211b417b2103034020042005460d08201720056a220641046a2d000021072001200d20036a3602042001200641056a360200201b20056a20073a00002002200541016a2206360298212003417f6a21032006210520064120470d000b2002200241b5216a280000360280032002200241b8216a28000036008303200241a4216a290200210a200241ac216a290200211f20024198216a411c6a310000211e200229029c212119200241c8146a411c6a200228008303360000200241e0146a201e3c00002002201f3703d8142002200a3703d01420022002280280033600e114200220193703c814200d20066b2205417c6a4104490d07200241e7146a310000210a200241d7146a290000211f20022900df14211e20022900cf14211c2012280000210d2001200541786a3602042001201720066a41086a3602002002201e3703980d201e423888200a42ff018342088684a721012014421088210a2018422088a7211b201c422088a721122019420888a721132019421888a72107201e421888a72110201f420888a72111200e42ff0183a721052014420888a721032002201f3703900d20022900930d210e2018a7210f201ca721092019a72108201fa721212014a72106410021170c060b20024198216a200110b50120022d0098214101460d0620024198216a41206a3100002118200241b0216a2903002119200241a8216a2903002114200241a0216a290300210b200228029c21211a20022f019a21211520022d009921210c41002105200241003602982120024198216a410472210d20042802002107417f2103034020072005460d07200128020022062d000021042001200720036a3602042001200641016a360200200d20056a20043a00002002200541016a2206360298212003417f6a21032006210520064120470d000b200241c0006a41026a2205200241a5216a2d00003a0000200241c01e6a41026a2204200241ac216a2d00003a0000200220022f019c213b018003200220022d009e213a0082032002200241a3216a2f00003b01402002200241aa216a2f01003b01c01e200241a6216a280100210d200228009f212117200241ad216a280000211b2002200241b1216a2800003602c8142002200241b4216a2800003600cb14200241b8216a2802002116200220022d0082033a009221200220022f0180033b019021200241981c6a41026a221220052d00003a0000200220022f01403b01981c200241801c6a41026a220520042d00003a0000200220022f01c01e3b01801c200241e8206a41026a220420022d00ca143a0000200220022f01c8143b01e82020022800cb1421132002418c216a41026a221020122d00003a0000200220022f01981c3b018c2120024188216a41026a221220052d00003a0000200220022f01801c3b01882120024184216a41026a220520042d00003a0000200220022f01e8203b018421200220022d0092213a00920d200220022f0190213b01900d20024180216a41026a220420102d00003a0000200220022f018c213b018021200241fc206a41026a221020122d00003a0000200220022f0188213b01fc20200241f8206a41026a221220052d00003a0000200220022f0184213b01f820200220173600930d200241990d6a20042d00003a0000200220022f0180213b00970d2002200d36019a0d200241a00d6a20102d00003a0000200220022f01fc203b019e0d2002201b3600a10d200241a70d6a20122d00003a0000200220022f01f8203b00a50d200220163602ac0d200220133602a80d20072006460d06200128020022052d0000210d2001200720036a22033602042001200541016a3602004100210402400240200d0e020100080b410121040b20034104490d06200528000121162001200541056a3602002001200720066b2206417b6a220336020420034104490d062005280005210d2001200541096a3602002001200641776a36020420022903a00d221d421088200241a80d6a290300221e42308684210e20022903900d221f423888200241980d6a290300221c42088684a721092014421088210a2019422088a7211b2014420888a72103201f421888a72107201f420888a72113201842ff0183a72105201e423088a72101201e421088a72110201c423888a72121201c421888a72112201da721112019a7210f2014a72106201fa72108410121170c130b4100210720024100360298212003417d6a210320024198216a410472211a034020062007460d06200520076a220441026a2d0000210d200120033602042001200441036a360200201a20076a200d3a00002002200741016a2204360298212003417f6a21032004210720044120460d120c000b0b4100210720024100360298212003417d6a210320024198216a410472211a034020062007460d05200520076a220441026a2d0000210d200120033602042001200441036a360200201a20076a200d3a00002002200741016a2204360298212003417f6a21032004210720044120470d000b200241900d6a41086a200241ac216a290200370300200241900d6a41106a200241b4216a2d00003a00002002200241a4216a290200220b3703900d2002200241b5216a2800003602801c2002200241b8216a2800003600831c200229029c21210e200241a31c6a20022800930d360000200241c8146a41086a22012002419f0d6a2f00003b01002002200e3703981c2002200b3e02a01c200220022900970d220a3703c814200241d5146a20022800831c360000200220022802801c3601d214200229009f1c210b20024180036a41106a2205200241c8146a41106a2d00003a000020024180036a41086a220320012903003703002002200a37038003200241c0006a41106a220120052d00003a0000200241c0006a41086a220520032903003703002002200229038003370340200241c01e6a41106a220320012d00003a0000200241c01e6a41086a22012005290300370300200220022903403703c01e20023501c21e20023301c61e42208684210a200e421888a7211a200e420888a7211520032d000021052001280200210f20022802cc1e211b20022d00c11e210320022d00c01e2106200ea7210c410321170c110b4100210720024100360298212003417d6a210420024198216a4104722117034020062007460d04200520076a220d41026a2d0000211a200120043602042001200d41036a360200201720076a201a3a00002002200741016a220d360298212004417f6a2104200d2107200d4120470d000b200241c0006a41026a2206200241a5216a2d00003a0000200241c01e6a41026a2207200241ac216a2d00003a0000200220022f019c213b018003200220022d009e213a0082032002200241a3216a2f00003b01402002200241aa216a2f01003b01c01e200241a6216a280100211a200228009f212117200241ad216a280000211b2002200241b1216a2800003602900d2002200241b4216a2800003600930d200241b8216a2802002115200220022d0082033a009221200220022f0180033b019021200241981c6a41026a220c20062d00003a0000200220022f01403b01981c200241801c6a41026a220620072d00003a0000200220022f01c01e3b01801c200241e8206a41026a220720022d00920d3a0000200220022f01900d3b01e82020022800930d21162002418c216a41026a2212200c2d00003a0000200220022f01981c3b018c2120024188216a41026a220c20062d00003a0000200220022f01801c3b01882120024184216a41026a220620072d00003a0000200220022f01e8203b018421200220022d0092213a00ca14200220022f0190213b01c81420024180216a41026a220720122d00003a0000200220022f018c213b018021200241fc206a41026a2212200c2d00003a0000200220022f0188213b01fc20200241f8206a41026a220c20062d00003a0000200220022f0184213b01f820200220173600cb14200241d1146a20072d00003a0000200220022f0180213b00cf142002201a3601d214200241d8146a20122d00003a0000200220022f01fc203b01d6142002201b3600d914200241df146a200c2d00003a0000200220022f01f8203b00dd14200220153602e414200220163602e0142003417e6a200d460d032005200d6a220541026a2d00002103200120043602042001200541036a36020041002106410721054200210e0240024020030e020100050b20024198216a200110e50120022d00982122054107460d0420022f00992120022d009b21411074724108742106200229029c21210e0b20022903d8142218420888200241e0146a290300221442388684210a20022903c8142219423888200241d0146a290300221f42088684210b2018423888201442088684a7210f20062005722107200e422088a721122019421888a7211a2019420888a721152014423888a721052014421888a7211b201f423888a72106200ea721092018a721032019a7210c410421170c020b4100210720024100360298212003417d6a210420024198216a4104722117034020062007460d03200520076a220d41026a2d0000211a200120043602042001200d41036a360200201720076a201a3a00002002200741016a220d360298212004417f6a2104200d2107200d4120470d000b200241960d6a200241b7216a2d00003a00002002200241b1216a28000022173602900d2002200241b5216a2f00003b01940d200241b8216a2802002107200241a3216a2d0000211b200241a4216a2f01002116200241aa216a2d00002112200241ab216a2f00002106200241ad216a2800002113200241a6216a280100211020022d009c21210c20022f009d212115200228009f21211a2002201736028003200220022800930d3600830320022002280280033602402002200228008303360043200220103600cb14200220133601d214200220063b01d014200220123a00cf14200220163b00c9142002201b3a00c814200241d9146a2002280043360000200220022802403601d614200220073600dd142003417e6a200d460d022005200d6a220541026a2d0000210d200120043602042001200541036a3602002007411876210520064180fe0371410876210341002104410721074200210e02400240200d0e020100040b20024198216a200110e50120022d00982122074107460d0320022f00992120022d009b21411074724108742104200229029c21210e20022d00e014210520022d00d114210320022d00d01421060b2004200772210720023501d214200241d6146a33010042208684210a200e422088a7211220022802dc14211b20022802d814210f20022903c814210b200ea72109410521170c010b4100210720024100360298212006411f2006411f491b20056a41036a211b20024198216a4104722117417d2104034020062007460d02200520076a220d41026a2d0000211a2001200320046a3602042001200d41036a360200201720076a201a3a00002002200741016a220d360298212004417f6a2104200d2107200d4120470d000b2002200229029c21220b3703c8142002200241a3216a2900003700cf142002200b3d018003200220022d00ca143a008203200241b8216a280200210c200241b6216a2f01002116200241b5216a2d00002112200241ab216a2d00002106200241ac216a2f01002107200241ae216a2d00002117200241af216a2f00002115200241b1216a280000210420022800cb14211a20022900cf14210b200220022d0082033a00821c200220022f0180033b01801c200220043a00951c200220153b00931c200220173a00921c200220073b01901c200220063a008f1c2002200b3700871c2002201a3600831c2003200d6b2203417e6a4104490d01201b280000210720012003417a6a22063602044106211720012005200d6a220541066a220d36020020064104490d01200d28000021092001200341766a36020420012005410a6a36020020022002418f1c6a220141036a2800003600930d200220044108763a00970d2002200128000022063602900d200220163b009b0d200220123a009a0d200220044110763b01980d2002200c36009d0d200c411876210520023501920d20023301960d42208684210a20022d00801c210c20022f00811c211520022d00910d2103200228029c0d211b20022802980d210f4100210d410021160b0c0d0b200041153a00000c130b02402007450d0020052d0001210620012003417e6a3602042001200541026a3602004100210102400240024002400240024020060e06050001020304060b410121010c040b410221010c030b410321010c020b410421010c010b410521010b200020013a0001200041113a0000200041026a200241c0056a41ce0710bf091a0c130b200041153a00000c120b02402007450d0020052d0001210620012003417e6a220d3602042001200541026a360200410721070240024020060e020001020b200d4104490d012005280002210420012003417a6a3602042001200541066a36020020024198216a200110e50120022d00982122074107460d0120022002290099213703c8142002200241a0216a2800003600cf140b200220022800cf143600970d200220022903c8143703900d200041123a0000200020022f0080033b0001200041036a20024180036a41026a2d00003a0000200041086a20073a0000200041046a2004360000200041096a20022903900d370000200041106a20022800970d360000200041146a200241c0056a41bc0710bf091a0c120b200041153a00000c110b02402007450d0020052d0001210620012003417e6a22073602042001200541026a360200024002400240024020060e03000102040b2007450d0320052d0002210620012003417d6a3602042001200541036a36020041002105410721034200210b410021070240024020060e020100050b20024198216a200110e50120022d00982122034107460d0420022f00992120022d009b21411074724108742107200229029c21210b0b2007200372211a0c020b20024198216a200110b50120022d0098214101460d02200241b1216a22052900002114200241a9216a2203290000210e200241a1216a2206290000210a200229009921210b20024198216a200110b50120022d0098214101460d02200241e0146a2005290000370300200241d8146a2003290000370300200241d0146a200629000037030020022002290099213703c81420042802002205450d02200128020022062d0000210720012005417f6a22043602042001200641016a360200410021030240024020070e020100040b410121030b20044102490d02200b421888a7211a200b420888a72117200ba7211b20062f0001210920012005417d6a3602042001200641036a3602002002200a423888a73a00c01e200a42088642808080807083200b423888200a4208868442ffffffff0f8384210b2002200e3700c11e200e423888201442088684211f2014423888211e200235019e0d200241a20d6a33010042208684210a200e421888a72104200241e7146a310000211820022900df14211920022d00c814211620022f00c914210c20022800cb14211520022900cf14210e20022900d714211420022802900d210f20022902940d211c20022d009c0d211120022d009d0d210120022802a40d211020022802a80d211320022d00ac0d211220022d00ad0d210720022f01ae0d210620022802c01e210d410121050c010b20024198216a200110b50120022d0098214101460d01200241900d6a41086a200241b0216a2205290300370300200241900d6a41106a20024198216a41206a2d00003a0000200220024198216a41106a2903003703900d20024198216a41086a290300210b200228029c21211a20022f019a21211720022d009921211b20024198216a200110b50120022d0098214101460d012002418e1c6a200241a7216a290000370100200241801c6a41086a200241a1216a29000037030020022002290099213703801c200241af216a2d0000211120052f0100210f200241b2216a2d00002109200241b3216a2f00002108200241b5216a280000212141002103200241003602982120024198216a410472210d2004280200210503402005450d02200128020022062d0000210720012005417f6a22053602042001200641016a360200200d20036a20073a00002002200341016a2206360298212006210320064120470d000b2002200241b5216a2f000022053b01e820200241bb216a2d00002112200241b7216a2800002113200241ac216a2802002101200241b4216a2d00002103200241a4216a2f0100210620024198216a410e6a350100210a20024198216a41186a2802002107200229029c21211d20024180036a410e6a200241aa216a330100220e3d0100200220073602442002200a3e018a03200220063b0188032002201d37038003200220033a0048200220053b004920022001360240200241c5006a330000210a200229008703211c2002280047211020023500412114200241a00d6a310000211e20022903980d211f20022800831c211520022f00811c210c20022d00801c211620022802940d210420022802900d210d2002200241801c6a410e6a2900003700cf14200220022900871c3703c814200220113a00d714200220213600dd14200220083b00db14200220093a00da142002200f3b01d8142014200a42208684210a201d421888a7210f201d420888a72109200e422086422888a72111200241c8146a41186a310000211820022903d014211420022903d814211920022903c814210e201da72103410221050b200041133a0000200020022f00981c3b0001200041da006a200a4220883d0000200041d6006a200a3e0000200041c4006a20183c00002000413c6a2019370000200041246a201e3c00002000411c6a201f370000200041e6006a20063b0000200041e5006a20073a0000200041e4006a20123a0000200041e0006a2013360000200041dc006a2010360000200041d5006a20013a0000200041d4006a20113a0000200041cc006a201c370000200041c8006a200f360000200041c6006a20093b0000200041c5006a20033a0000200041346a20143700002000412c6a200e370000200041286a2015360000200041266a200c3b0000200041256a20163a0000200041186a2004360000200041146a200d3600002000410c6a200b370000200041086a201a360000200041066a20173b0000200041056a201b3a0000200041046a20053a0000200041036a2002419a1c6a2d00003a0000200041e8006a200241c0056a41e80610bf091a0c110b200041153a00000c100b02402007450d0020052d0001210620012003417e6a22073602042001200541026a36020020060d002007450d0020052d0002210620012003417d6a22073602042001200541036a360200024002400240024020060e03000102040b20074108490d032005290003210b2001200341756a36020420012005410b6a36020020024198216a200241c0056a41b80710bf091a4200210a0c020b20074108490d022005290003210b2001200341756a36020420012005410b6a360200200241c0056a200110e90120022802c0054119460d0220024198216a200241c0056a41b80710bf091a4201210a0c010b200241c0056a200110e90120022802c0054119460d0120022903c005210b20024198216a200241c8056a41b00710bf091a4202210a0b200241c8146a20024198216a41b80710bf091a200241900d6a200241c8146a41b80710bf091a200041143a00002000200228008003360001200041046a20024183036a280000360000200041106a200b370000200041086a200a370000200041186a200241900d6a41b80710bf091a0c100b200041153a00000c0f0b103b000b200041153a00000c0d0b20052007419cb4c0001061000b200d201b419cb4c0001061000b200d201b419cb4c0001061000b200d201b419cb4c0001061000b20062005419cb4c0001061000b2002200241b5216a2800003602900d2002200241b8216a2800003600930d200241a4216a290200210b200241ac216a290200210a200229029c21210e200241e0146a20024198216a411c6a3100003c0000200241c8146a411c6a20022800930d3600002002200a3703d8142002200b3703d014200220022802900d3600e1142002200e3703c81420022900d7142214421088210a200e421888a7211a200e420888a721152014420888a7210320022900df142219422088a7211b200241e7146a2d0000210520022900cf14210b200ea7210c2014a721062019a7210f410221170b200041103a0000200020022f00bd053b00012000411a6a200a4220883d0000200041166a200a3e0000200041cc006a200d360000200041c8006a2016360000200041c5006a20043a0000200041c3006a20013b00002000413f6a2010360000200041376a200e370000200041356a20113b0000200041346a20213a0000200041306a20123600002000412c6a2009360000200041286a2007360000200041266a20133b0000200041256a20083a0000200041246a20053a0000200041206a201b3600002000411c6a200f360000200041156a20033a0000200041146a20063a00002000410c6a200b370000200041086a201a360000200041066a20153b0000200041056a200c3a0000200041046a20173a0000200041036a200241bf056a2d00003a0000200041d0006a200241c0056a41800710bf091a0c060b2000410c3a00002000200228008003360001200041386a200e370000200041306a200a3700002000412c6a2003360000200041286a2017360000200041206a200b3700002000411c6a200c3600002000411a6a200d3b0000200041196a20073a0000200041186a20053a0000200041146a201a360000200041106a20163600002000410c6a20063600002000410a6a201b3b0000200041096a20153a0000200041086a20043a0000200041046a20024183036a280000360000200041c0006a200241c0056a41900710bf091a0c050b1039000b200041063a0000200020022f0080033b0001200041246a200e3c00002000411c6a200a370000200041186a2003360000200041146a200d3600002000410c6a200b370000200041086a2006360000200041066a201a3b0000200041056a20173a0000200041046a20053a0000200041036a20024180036a41026a2d00003a0000200041286a200241c0056a41a80710bf091a0c030b200041153a00000c020b410021014200210a4200211c0b200041023a00002000200228008003360001200041d8006a201e370000200041d0006a201f370000200041c0006a201d370000200041386a2019370000200041306a2018370000200041286a200e3c0000200041206a20143700002000412c6a201a3600002000412a6a20173b0000200041296a201b3a00002000411c6a2007360000200041186a2004360000200041106a200b3700002000410c6a20053600002000410a6a20033b0000200041096a20063a0000200041086a200d3a0000200041046a20024183036a280000360000200041c8006a201c4210862001ad42ff018342088684200a42ff018384370000200041e0006a200241c0056a41f00610bf091a0b200241d0286a24000bcf0301057f230041106b2102024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0701020304050607080b200041073a00000f0b200041003a0000200041086a4100360200200041046a41f8fac9003602000f0b200041013a00000f0b200041023a00000f0b2006450d0720042d0001210220012003417e6a22053602042001200441026a36020002402005450d00200020023a0001200041033a000020042d0002210520012003417d6a3602042001200441036a360200200041046a4100360200200041026a20053a00000f0b200041073a00000f0b200041043a00000f0b200041053a00000f0b2006450d0320042d0001210520012003417e6a3602042001200441026a3602004100210102400240024002400240024020050e080807000102030405090b410221010c070b410321010c060b410421010c050b410521010c040b410621010c030b410721010c020b200041073a00000f0b410121010b200020013a0001200041063a0000200041026a20022901063701002000410a6a2002410e6a2f01003b01000f0b200041073a00000f0b200041073a00000bf405010a7f41002102230041f0006b22034100360228200341286a410472210420012802042105024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420026a20073a00002003200241016a22063602282006210220064120470d000b200341e8006a41026a2201200341356a2d00003a0000200341e4006a41026a22052003413c6a2d00003a0000200320032f012c3b016c200320032d002e3a006e2003200341286a410b6a2f00003b01682003200341286a41126a2f01003b0164200341366a2801002102200328002f21062003413d6a28000021072003200341286a41196a28000036025c2003200341c4006a28000036005f200341c8006a2802002104200320032d006e3a0026200320032f016c3b0124200341d8006a41026a220820012d00003a0000200320032f01683b0158200341d4006a41026a220120052d00003a0000200320032f01643b0154200341d0006a41026a220520032d005e3a0000200320032f015c3b0150200328005f2109200341206a41026a220a20082d00003a0000200320032f01583b01202003411c6a41026a220820012d00003a0000200320032f01543b011c200341186a41026a220120052d00003a0000200320032f01503b0118200341146a41026a220520032d00263a0000200320032f01243b0114200341106a41026a220b200a2d00003a0000200320032f01203b01102003410c6a41026a220a20082d00003a0000200320032f011c3b010c200341086a41026a220820012d00003a0000200320032f01183b0108200041046a2006360000200041036a20052d00003a0000200020032f01143b00012000410b6a2002360000200041086a20032f01103b00002000410a6a200b2d00003a0000200041126a20073600002000410f6a20032f010c3b0000200041116a200a2d00003a0000200041166a20032f01083b0000200041186a20082d00003a00002000411d6a2004360000200041196a2009360000200041003a00000f0b200041013a00000ba730013b7f230041f0036b22022400024002400240024002400240024002400240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a3602004100210720024100360288032003417b6a210320024188036a41047221080240034020062007460d01200420076a220941046a2d0000210a200120033602042001200941056a360200200820076a200a3a00002002200741016a2209360288032003417f6a21032009210720094120470d000b200241dc036a41026a220720024195036a2d00003a0000200241ec036a41026a22032002419c036a2d00003a0000200220022f018c033b01d801200220022d008e033a00da01200220024193036a2f00003b01dc0320022002419a036a2f01003b01ec0320024196036a2801002108200228008f03210b2002419d036a280000210c2002200241a1036a22042800003602a8022002200241a4036a2800003600ab02200241a8036a280200210d200220022d00da013a00d603200220022f01d8013b01d403200241e8036a41026a220920072d00003a0000200220022f01dc033b01e803200241e4036a41026a220720032d00003a0000200220022f01ec033b01e403200241d8036a41026a220320022d00aa023a0000200220022f01a8023b01d80320022800ab02210e200241d0036a41026a220a20092d00003a0000200220022f01e8033b01d00320024184036a41026a220920072d00003a0000200220022f01e4033b01840320024180036a41026a220720032d00003a0000200220022f01d8033b018003200241d4016a41026a20022d00d6033a0000200220022f01d4033b01d401200241d0016a41026a200a2d00003a0000200220022f01d0033b01d001200241cc016a41026a20092d00003a0000200220022f0184033b01cc01200241c8016a41026a20072d00003a0000200220022f0180033b01c80120024188036a200110b50120022d0088034101460d03200241f0016a2004290000370300200241e8016a20024199036a290000370300200241e0016a20024191036a29000037030020022002290089033703d8012002410036028803200128020421074104210303402007450d0320024188036a20036a200128020022092d00003a000020012007417f6a22073602042001200941016a36020020022003417d6a36028803200341016a22034124470d000b200241ec036a41026a220320024195036a2d00003a0000200241e8036a41026a22092002419c036a2d00003a0000200220022f018c033b01dc03200220022d008e033a00de03200220024193036a2f00003b01ec0320022002419a036a2f01003b01e80320024196036a280100210f200228008f0321102002419d036a28000021112002200241a1036a2800003602a8022002200241a4036a2800003600ab0220024188036a41206a2802002112200220022d00de033a00d203200220022f01dc033b01d003200241e4036a41026a220a20032d00003a0000200220022f01ec033b01e403200241d8036a41026a220320092d00003a0000200220022f01e8033b01d803200241d4036a41026a220920022d00aa023a0000200220022f01a8023b01d40320022800ab02211320024184036a41026a2204200a2d00003a0000200220022f01e4033b01840320024180036a41026a220a20032d00003a0000200220022f01d8033b018003200241fc026a41026a220320092d00003a0000200220022f01d4033b01fc0220024184026a41026a20022d00d2033a0000200220022f01d0033b01840220024180026a41026a20042d00003a0000200220022f0184033b018002200241fc016a41026a200a2d00003a0000200220022f0180033b01fc01200241f8016a41026a20032d00003a0000200220022f01fc023b01f80141002103200241003602880320024188036a4104722106417f210a034020072003460d05200128020022092d0000210420012003417f7320076a3602042001200941016a360200200620036a20043a00002002200341016a220936028803200a417f6a210a2009210320094120470d000b200241ec036a41026a220320024195036a2d00003a0000200241e8036a41026a220a2002419c036a2d00003a0000200220022f018c033b01dc03200220022d008e033a00de03200220024193036a2f00003b01ec0320022002419a036a2f01003b01e80320024196036a2801002114200228008f0321152002419d036a28000021162002200241a1036a2800003602a8022002200241a4036a2800003600ab0220024188036a41206a2802002117200220022d00de033a00d203200220022f01dc033b01d003200241e4036a41026a220420032d00003a0000200220022f01ec033b01e403200241d8036a41026a2203200a2d00003a0000200220022f01e8033b01d803200241d4036a41026a220a20022d00aa023a0000200220022f01a8023b01d40320022800ab02211820024184036a41026a220620042d00003a0000200220022f01e4033b01840320024180036a41026a220420032d00003a0000200220022f01d8033b018003200241fc026a41026a2203200a2d00003a0000200220022f01d4033b01fc0220024194026a41026a20022d00d2033a0000200220022f01d0033b01940220024190026a41026a20062d00003a0000200220022f0184033b0190022002418c026a41026a20042d00003a0000200220022f0180033b018c0220024188026a41026a20032d00003a0000200220022f01fc023b018802410021032002410036028803200720096b210720024188036a410472210403402007450d09200128020022092d0000210a20012007417f6a22073602042001200941016a360200200420036a200a3a00002002200341016a2209360288032009210320094120470d000b200241ec036a41026a220720024195036a2d00003a0000200241e8036a41026a22032002419c036a2d00003a0000200220022f018c033b01dc03200220022d008e033a00de03200220024193036a2f00003b01ec0320022002419a036a2f01003b01e80320024196036a2801002119200228008f03211a2002419d036a280000211b2002200241a1036a22042800003602a8022002200241a4036a2800003600ab0220024188036a41206a280200211c200220022d00de033a00d203200220022f01dc033b01d003200241e4036a41026a220920072d00003a0000200220022f01ec033b01e403200241d8036a41026a220720032d00003a0000200220022f01e8033b01d803200241d4036a41026a220320022d00aa023a0000200220022f01a8023b01d40320022800ab02211d20024184036a41026a220a20092d00003a0000200220022f01e4033b01840320024180036a41026a220920072d00003a0000200220022f01d8033b018003200241fc026a41026a220720032d00003a0000200220022f01d4033b01fc02200241a4026a41026a20022d00d2033a0000200220022f01d0033b01a402200241a0026a41026a200a2d00003a0000200220022f0184033b01a0022002419c026a41026a20092d00003a0000200220022f0180033b019c0220024198026a41026a20072d00003a0000200220022f01fc023b01980220024188036a200110b90320022d0088034101460d06200241e0026a200241c1036a290000370300200241d8026a200241b9036a290000370300200241d0026a200241b1036a290000370300200241a8026a41206a200241a9036a290000370300200241c0026a2004290000370300200241b8026a20024199036a290000370300200241b0026a20024191036a29000037030020022002290089033703a80241002103200241003602880320024188036a41047221042001280204210703402007450d06200128020022092d0000210a20012007417f6a22073602042001200941016a360200200420036a200a3a00002002200341016a2209360288032009210320094120470d000b200241e8036a41026a220320024195036a2d00003a0000200241e4036a41026a22092002419c036a2d00003a0000200220022f018c033b01ec03200220022d008e033a00ee03200220024193036a2f00003b01e80320022002419a036a2f01003b01e40320024196036a280100211e200228008f03211f2002419d036a28000021202002200241a1036a2800003602dc032002200241a4036a2800003600df0320024188036a41206a2802002121200220022d00ee033a008603200220022f01ec033b018403200241d8036a41026a220a20032d00003a0000200220022f01e8033b01d803200241d4036a41026a220320092d00003a0000200220022f01e4033b01d403200241d0036a41026a220920022d00de033a0000200220022f01dc033b01d00320022800df03212220024180036a41026a2204200a2d00003a0000200220022f01d8033b018003200241fc026a41026a220a20032d00003a0000200220022f01d4033b01fc02200241f8026a41026a220320092d00003a0000200220022f01d0033b01f802200241f4026a41026a20022d0086033a0000200220022f0184033b01f402200241f0026a41026a20042d00003a0000200220022f0180033b01f002200241ec026a41026a200a2d00003a0000200220022f01fc023b01ec02200241e8026a41026a20032d00003a0000200220022f01f8023b01e8024100210320024100360288032007417f6a210920024188036a4104722106034020072003460d082001280200220a2d00002104200120093602042001200a41016a360200200620036a20043a00002002200341016a220a360288032009417f6a2109200a2103200a4120470d000b200241e8036a41026a220720024195036a2d00003a0000200241e4036a41026a22012002419c036a2d00003a0000200220022f018c033b01ec03200220022d008e033a00ee03200220024188036a410b6a2f00003b01e80320022002419a036a2f01003b01e40320024196036a2801002103200228008f0321092002419d036a280000210a2002200241a1036a2800003602dc032002200241a4036a2800003600df0320024188036a41206a2802002104200220022d00ee033a008603200220022f01ec033b018403200241d8036a41026a220620072d00003a0000200220022f01e8033b01d803200241d4036a41026a220720012d00003a0000200220022f01e4033b01d403200241d0036a41026a220120022d00de033a0000200220022f01dc033b01d00320022800df03212320024180036a41026a222420062d00003a0000200220022f01d8033b018003200241fc026a41026a220620072d00003a0000200220022f01d4033b01fc02200241f8026a41026a220720012d00003a0000200220022f01d0033b01f802200220022d0086033a0016200220022f0184033b0114200241106a41026a220120242d00003a0000200220022f0180033b01102002410c6a41026a222420062d00003a0000200220022f01fc023b010c200241086a41026a220620072d00003a0000200220022f01f8023b01082002200241d4016a41026a2d00003a00c601200220022f01d4013b01c401200241c0016a41026a2207200241d0016a41026a2d00003a0000200220022f01d0013b01c001200241bc016a41026a2225200241cc016a41026a2d00003a0000200220022f01cc013b01bc01200241b8016a41026a2226200241c8016a41026a2d00003a0000200220022f01c8013b01b80120024198016a41186a2227200241d8016a41186a29030037030020024198016a41106a2228200241d8016a41106a29030037030020024198016a41086a2229200241d8016a41086a290300370300200220022903d80137039801200220024184026a41026a2d00003a009601200220022f0184023b01940120024190016a41026a222a20024180026a41026a2d00003a0000200220022f0180023b0190012002418c016a41026a222b200241fc016a41026a2d00003a0000200220022f01fc013b018c0120024188016a41026a222c200241f8016a41026a2d00003a0000200220022f01f8013b018801200220024194026a41026a2d00003a008601200220022f0194023b01840120024180016a41026a222d20024190026a41026a2d00003a0000200220022f0190023b018001200241fc006a41026a222e2002418c026a41026a2d00003a0000200220022f018c023b017c200241f8006a41026a222f20024188026a41026a2d00003a0000200220022f0188023b01782002200241a4026a41026a2d00003a0076200220022f01a4023b0174200241f0006a41026a2230200241a0026a41026a2d00003a0000200220022f01a0023b0170200241ec006a41026a22312002419c026a41026a2d00003a0000200220022f019c023b016c200241e8006a41026a223220024198026a41026a2d00003a0000200220022f0198023b0168200241286a41386a2233200241a8026a41386a290300370300200241286a41306a2234200241a8026a41306a290300370300200241286a41286a2235200241a8026a41286a290300370300200241286a41206a2236200241a8026a41206a290300370300200241286a41186a2237200241a8026a41186a290300370300200241286a41106a2238200241a8026a41106a290300370300200241286a41086a2239200241a8026a41086a290300370300200220022903a8023703282002200241f4026a41026a2d00003a0026200220022f01f4023b0124200241206a41026a223a200241f0026a41026a2d00003a0000200220022f01f0023b01202002411c6a41026a223b200241ec026a41026a2d00003a0000200220022f01ec023b011c200241186a41026a223c200241e8026a41026a2d00003a0000200220022f01e8023b0118200020053602042000410b6a200b360000200041086a20022f01c4013b01002000410a6a20022d00c6013a000020002008360012200020022f01c0013b000f200041116a20072d00003a00002000200c360019200020022f01bc013b0016200041186a20252d00003a0000200020022f01b8013b001d2000411f6a20262d00003a0000200041246a200d360000200041206a200e360000200041c0006a2027290300370200200041386a2028290300370200200041306a2029290300370200200041286a200229039801370200200041ca006a20022d0096013a0000200041c8006a20022f0194013b0100200041cb006a2010360000200041d1006a202a2d00003a0000200020022f0190013b004f2000200f360052200041d8006a202b2d00003a0000200020022f018c013b005620002011360059200041df006a202c2d00003a0000200020022f0188013b005d200041e4006a2012360000200041e0006a2013360000200041ea006a20022d0086013a0000200041e8006a20022f0184013b0100200041eb006a2015360000200041f1006a202d2d00003a0000200020022f0180013b006f20002014360072200041f8006a202e2d00003a0000200020022f017c3b007620002016360079200041ff006a202f2d00003a0000200020022f01783b007d20004184016a201736000020004180016a20183600002000418a016a20022d00763a000020004188016a20022f01743b01002000418b016a201a36000020004191016a20302d00003a0000200020022f01703b008f01200020193600920120004198016a20312d00003a0000200020022f016c3b0096012000201b360099012000419f016a20322d00003a0000200020022f01683b009d01200041a4016a201c360000200041a0016a201d360000200041e0016a2033290300370200200041d8016a2034290300370200200041d0016a2035290300370200200041c8016a2036290300370200200041c0016a2037290300370200200041b8016a2038290300370200200041b0016a2039290300370200200041a8016a2002290328370200200041ea016a20022d00263a0000200041e8016a20022f01243b0100200041eb016a201f360000200041f1016a203a2d00003a0000200020022f01203b00ef012000201e3600f201200041f8016a203b2d00003a0000200020022f011c3b00f601200020203600f901200041ff016a203c2d00003a0000200020022f01183b00fd0120004184026a202136000020004180026a20223600002000418a026a20022d00163a000020004188026a20022f01143b01002000418b026a200936000020004191026a20012d00003a0000200020022f01103b008f02200020033600920220004198026a20242d00003a0000200020022f010c3b0096022000200a360099022000419f026a20062d00003a0000200020022f01083b009d02200041a4026a2004360000200041a0026a2023360000200041003602000c090b200041013602000c080b200041013602000c070b200041013602000c060b200041013602000c050b200041013602000c040b200041013602000c030b200041013602000c020b200041013602000c010b200041013602000b200241f0036a24000be004010c7f23004180016b220224002002200110bb01024002402002280200450d00200041003602000c010b02400240024002402002280204220320012802044105762204200420034b1b22054105742204417f4c0d000240024020050d00410121060c010b2004102f2206450d030b024020030d00410021030c040b200241c8006a41017221044100210741002108410021090340200241c8006a200110b501200241286a41086a220a200441086a290000370300200241286a41106a220b200441106a290000370300200241286a41186a220c200441186a2900003703002002200429000037032820022d00484101460d02200241086a41186a220d200c290300370300200241086a41106a220c200b290300370300200241086a41086a220b200a290300370300200220022903283703080240024020092005470d002007200941016a220a2007200a4b1b220a4104200a41044b1b220a41ffffff3f71200a462105200a410574210a0240024020090d00200241003602480c010b200241013602502002200836024c200220063602480b200241f0006a200a2005200241c8006a104e2002280278210a20022802704101460d0120022802742106200a41057621050b200620086a220a2002290308370000200a41186a200d290300370000200a41106a200c290300370000200a41086a200b290300370000200741026a2107200841206a21082003200941016a2209460d050c010b0b200a0d020b103b000b20004100360200200541ffffff3f71450d02200610310c020b1039000b2000200536020420002006360200200041086a20033602000b20024180016a24000bf70401047f230041f00e6b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a36020020050e190102030405060708090a0b0c0d0e0f101112131415161718191a0b200041193602000c1b0b200041003602000c1a0b200041013602000c190b200041023602000c180b200041033602000c170b200041043602000c160b200041053602000c150b200041063602000c140b200041073602000c130b200041083602000c120b200041093602000c110b200041f8fac9003602042000410a360200200041086a41003602000c100b200241880b6a200110ba0120022903880b4209510d0e200241c0076a200241880b6a41c80310bf091a200241880b6a200110c301024020022d00880b410b460d00200241086a200241880b6a41e80310bf091a200241f4036a41046a200241c0076a41c80310bf091a2000410b360200200041046a200241f4036a41cc0310bf091a200041d0036a200241086a41e80310bf091a0c100b20004119360200200241c0076a10ad010c0f0b2000410c3602000c0e0b2000410d3602000c0d0b2000410e3602000c0c0b2000410f3602000c0b0b200041f8fac90036020420004110360200200041086a41003602000c0a0b200041113602000c090b200041123602000c080b200041133602000c070b200041143602000c060b200041153602000c050b200041163602000c040b200041173602000c030b200041183602000c020b200041193602000c010b200041193602000b200241f00e6a24000baf3a02027f017e230041106b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00000e15000102030405060708090a0b0c0d0e0f1011121314150b200241003a0000200120024101107e024002400240024002400240200041086a2d00000e060001020304051a0b200241003a0000200120024101107e200041106a290300200041186a2d0000200041196a2d0000200110eb010c190b200241013a0000200120024101107e2000410c6a2d00002000410d6a2d00002000410e6a2d0000200110ec01200041186a290300200041206a2d0000200041216a2d0000200110eb010c180b200241023a0000200120024101107e0c170b200241033a0000200120024101107e2001200041096a4120107e0c160b200241043a0000200120024101107e2001200041096a4120107e0c150b200241053a0000200120024101107e2001200041096a4120107e4120102f2203450d1520024220370204200220033602002002200041296a4120107e2001200228020022002002280208107e2002280204450d14200010310c140b200241033a0000200120024101107e024002400240200041046a2d00000e03000102160b200241003a0000200120024101107e2001200041056a4120107e2002200041286a280200360200200120024104107e0c150b200241013a0000200120024101107e2002200041086a280200360200200120024104107e0c140b200241023a0000200120024101107e2002200041286a280200360200200120024104107e2001200041056a4120107e0c130b200241043a0000200120024101107e02400240024002400240024002400240200041086a2d00000e080001020304050607000b200241003a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c190b200241013a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c180b200241023a0000200120024101107e2001200041096a4120107e2001200041296a4120107e200041d0006a29030021042002200041d8006a29030037030820022004370300200120024110107e0c170b200241033a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e200041c0006a29030021042002200041c8006a29030037030820022004370300200120024110107e0c160b200241043a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c150b200241053a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c140b200241063a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c130b200241073a0000200120024101107e2001200041096a4120107e2001200041296a4120107e200041d0006a29030021042002200041d8006a29030037030820022004370300200120024110107e0240200041c9006a2d00004101460d00200241003a0000200120024101107e0c130b200241013a0000200120024101107e0c120b200241073a0000200120024101107e200241003a0000200120024101107e2001200041106a4110107e200041046a2802002000410c6a280200200110ce012002200041206a2d00003a0000200120024101107e0c110b200241093a0000200120024101107e200241003a0000200120024101107e2002200041046a280200360200200120024104107e0c100b2002410a3a0000200120024101107e024002400240200041046a2802000e03000102120b200241003a0000200120024101107e200041086a28020021032001200041106a280200220010cb01200041286c2200450d11200320006a21000340200120034120107e2002200341206a290300370300200120024108107e200341286a22032000470d000c120b0b200241013a0000200120024101107e0c100b200241023a0000200120024101107e0c0f0b2002410b3a0000200120024101107e024002400240200041046a2d00000e03000102110b200241003a0000200120024101107e2001200041056a4120107e0c100b200241013a0000200120024101107e0c0f0b200241023a0000200120024101107e200041086a28020021032001200041106a280200220010cb012000450d0e200041057421000340200120034120107e200341206a2103200041606a22000d000c0f0b0b200241103a0000200120024101107e024002400240200041046a2802000e03000102100b200241003a0000200120024101107e200041086a200110ed01200041cc026a280200200041d4026a280200200110ce012002200041d8026a280200360200200120024104107e2002200041dc026a280200360200200120024104107e0c0f0b200241013a0000200120024101107e200041086a200110ed01200041cc026a280200200041d4026a280200200110ce012002200041d8026a280200360200200120024104107e2002200041dc026a280200360200200120024104107e0c0e0b200241023a0000200120024101107e200041086a200110ed01200041cc026a280200200041d4026a280200200110ce012002200041d8026a280200360200200120024104107e0c0d0b200241133a0000200120024101107e02400240024002400240200041046a2802000e050001020304110b200241003a0000200120024101107e2002200041086a280200360200200120024104107e0c100b200241013a0000200120024101107e2002200041086a280200360200200120024104107e0c0f0b200241023a0000200120024101107e2002200041086a280200360200200120024104107e0c0e0b200241033a0000200120024101107e2002200041086a280200360200200120024104107e0c0d0b200241043a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e0c0c0b200241173a0000200120024101107e024002400240200041046a2802000e030001020e0b200241003a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e2002200041146a280200360200200120024104107e0c0d0b200241013a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e0c0c0b200241023a0000200120024101107e2002200041086a280200360200200120024104107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c0b0b200241193a0000200120024101107e0240200041046a2d00004101460d00200241003a0000200120024101107e2002200041286a280200360200200120024104107e2001200041056a4120107e0c0b0b200241013a0000200120024101107e2002200041086a280200360200200120024104107e0c0a0b2002411a3a0000200120024101107e024002400240024002400240024002400240200041086a2d00000e09000102030405060708120b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e2002200041146a280200360200200120024104107e0c110b200241013a0000200120024101107e20022000410c6a280200360200200120024104107e0c100b200241023a0000200120024101107e2001200041096a4120107e0240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041296a2d00000e24000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223240b200241003a0000200120024101107e0c230b200241013a0000200120024101107e0c220b200241023a0000200120024101107e0c210b200241033a0000200120024101107e0c200b200241043a0000200120024101107e0c1f0b200241053a0000200120024101107e0c1e0b200241063a0000200120024101107e0c1d0b200241073a0000200120024101107e0c1c0b200241083a0000200120024101107e0c1b0b200241093a0000200120024101107e0c1a0b2002410a3a0000200120024101107e0c190b2002410b3a0000200120024101107e0c180b2002410c3a0000200120024101107e0c170b2002410d3a0000200120024101107e0c160b2002410e3a0000200120024101107e0c150b2002410f3a0000200120024101107e0c140b200241103a0000200120024101107e0c130b200241113a0000200120024101107e0c120b200241123a0000200120024101107e0c110b200241133a0000200120024101107e0c100b200241143a0000200120024101107e0c0f0b200241153a0000200120024101107e0c0e0b200241163a0000200120024101107e0c0d0b200241173a0000200120024101107e0c0c0b200241183a0000200120024101107e0c0b0b200241193a0000200120024101107e0c0a0b2002411a3a0000200120024101107e0c090b2002411b3a0000200120024101107e0c080b2002411c3a0000200120024101107e0c070b2002411d3a0000200120024101107e0c060b2002411e3a0000200120024101107e0c050b2002411f3a0000200120024101107e0c040b200241203a0000200120024101107e0c030b200241213a0000200120024101107e0c020b200241223a0000200120024101107e0c010b200241233a0000200120024101107e0b2002200028022c360200200120024104107e200029033021042002200041386a29030037030820022004370300200120024110107e0c0f0b200241033a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e2002200041146a280200360200200120024104107e200041186a29030021042002200041206a29030037030820022004370300200120024110107e0c0e0b200241043a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e200041c0006a29030021042002200041c8006a29030037030820022004370300200120024110107e0c0d0b200241053a0000200120024101107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c0c0b200241063a0000200120024101107e20022000412c6a280200360200200120024104107e2001200041096a4120107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c0b0b200241073a0000200120024101107e2001200041096a4120107e20022000412c6a280200360200200120024104107e200041386a29030021042002200041c0006a29030037030820022004370300200120024110107e2002200041306a280200360200200120024104107e2002200041346a280200360200200120024104107e0c0a0b200241083a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c090b2002411b3a0000200120024101107e024002400240024002400240024002400240024002400240200041086a2d00000e0c000102030405060708090a0b140b200241003a0000200120024101107e20022000410c6a280200360200200120024104107e0c130b200241013a0000200120024101107e2001200041096a4120107e20022000412c6a280200360200200120024104107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c120b200241023a0000200120024101107e2001200041096a4120107e20022000412c6a280200360200200120024104107e200041306a29030021042002200041386a29030037030820022004370300200120024110107e0c110b200241033a0000200120024101107e20022000410c6a280200360200200120024104107e0c100b200241043a0000200120024101107e20022000410c6a280200360200200120024104107e0c0f0b200241053a0000200120024101107e20022000410c6a280200360200200120024104107e0c0e0b200241063a0000200120024101107e20022000410c6a280200360200200120024104107e0c0d0b200241073a0000200120024101107e20022000410c6a280200360200200120024104107e2002200041106a280200360200200120024104107e0c0c0b200241083a0000200120024101107e20022000410c6a280200360200200120024104107e0240200041106a2d00004107460d00200241013a0000200120024101107e20002d0010200041116a2d0000200041126a2d0000200110ec010c0c0b200241003a0000200120024101107e0c0b0b200241093a0000200120024101107e20022000410c6a280200360200200120024104107e0c0a0b2002410a3a0000200120024101107e2001200041096a4120107e20022000412c6a280200360200200120024104107e200041306a280200200041386a280200200110ce010c090b2002410b3a0000200120024101107e20022000410c6a280200360200200120024104107e0c080b2002411c3a0000200120024101107e0240200041086a2d00004101460d00200241003a0000200120024101107e20022000410c6a280200360200200120024104107e0c080b200241013a0000200120024101107e20022000412c6a280200360200200120024104107e2001200041096a4120107e2002200041306a280200360200200120024104107e2002200041346a280200360200200120024104107e200041386a29030021042002200041c0006a29030037030820022004370300200120024110107e200041c8006a29030021042002200041d0006a29030037030820022004370300200120024110107e0c070b2002411e3a0000200120024101107e024002400240200041046a2d00000e03000102090b200241003a0000200120024101107e0240200041086a2d00004107460d00200241013a0000200120024101107e20002d0008200041096a2d00002000410a6a2d0000200110ec010c090b200241003a0000200120024101107e0c080b200241013a0000200120024101107e2001200041056a4120107e0c070b200241023a0000200120024101107e0240200041086a2d00004107460d00200241013a0000200120024101107e20002d0008200041096a2d00002000410a6a2d0000200110ec010c070b200241003a0000200120024101107e0c060b200241223a0000200120024101107e0240200041046a2802004101460d00200241003a0000200120024101107e200028020821032001200041106a280200220010cb012000450d06200041057421000340200120034120107e200341206a2103200041606a22000d000c070b0b200241013a0000200120024101107e200028020821032001200041106a280200220010cb012000450d05200041057421000340200120034120107e200341206a2103200041606a22000d000c060b0b200241d0003a0000200120024101107e0240024002400240024002400240200041046a2d00000e07000102030405060b0b200241003a0000200120024101107e2001200041056a4120107e2002200041c8006a280200360200200120024104107e4120102f2203450d0b20024220370204200220033602002002200041256a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2002200028024c360200200120024104107e0c0a0b200241013a0000200120024101107e2001200041056a4120107e4120102f2203450d0a20024220370204200220033602002002200041256a4120107e2001200228020022032002280208107e02402002280204450d00200310310b200220002d00453a0000200120024101107e20022000280248360200200120024104107e2002200028024c360200200120024104107e0c090b200241023a0000200120024101107e4120102f2203450d0920024220370204200220033602002002200041056a4120107e2001200228020022002002280208107e2002280204450d08200010310c080b200241033a0000200120024101107e4120102f2203450d0820024220370204200220033602002002200041056a4120107e2001200228020022002002280208107e2002280204450d07200010310c070b200241043a0000200120024101107e4120102f2203450d0720024220370204200220033602002002200041056a4120107e2001200228020022032002280208107e02402002280204450d00200310310b024020002d00284107460d00200241013a0000200120024101107e20002d0028200041296a2d00002000412a6a2d0000200110ec010c070b200241003a0000200120024101107e0c060b200241053a0000200120024101107e4120102f2203450d0620024220370204200220033602002002200041056a4120107e2001200228020022032002280208107e02402002280204450d00200310310b024020002d00284107460d00200241013a0000200120024101107e20002d0028200041296a2d00002000412a6a2d0000200110ec010c060b200241003a0000200120024101107e0c050b200241063a0000200120024101107e4120102f2203450d0520024220370204200220033602002002200041056a4120107e2001200228020022032002280208107e02402002280204450d00200310310b20022000280228360200200120024104107e2002200028022c360200200120024104107e0c040b200241d1003a0000200120024101107e02400240024002400240024020002d00010e06000102030405090b200241003a0000200120024101107e0c080b200241013a0000200120024101107e0c070b200241023a0000200120024101107e0c060b200241033a0000200120024101107e0c050b200241043a0000200120024101107e0c040b200241053a0000200120024101107e0c030b200241da003a0000200120024101107e0240200041086a2d00004107460d00200241003a0000200120024101107e2002200041046a280200360200200120024104107e20002d0008200041096a2d00002000410a6a2d0000200110ec010c030b200241013a0000200120024101107e0c020b200241db003a0000200120024101107e024002400240200041046a2d00000e03000102040b200241003a0000200120024101107e0240200041086a2d00004107460d00200241013a0000200120024101107e20002d0008200041096a2d00002000410a6a2d0000200110ec010c040b200241003a0000200120024101107e0c030b200241013a0000200120024101107e2001200041056a4120107e2001200041256a4120107e02400240200041c5006a2d00004101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e0b200220002f01463b0100200120024102107e0c020b200241023a0000200120024101107e2001200041056a4120107e2001200041256a4120107e4120102f2203450d0220024220370204200220033602002002200041c5006a4120107e2001200228020022002002280208107e2002280204450d01200010310c010b200241e3003a0000200120024101107e200241003a0000200120024101107e024002400240200041086a2802000e03000102030b200241003a0000200120024101107e2002200041106a290300370300200120024108107e0c020b200241013a0000200120024101107e2002200041106a290300370300200120024108107e200041186a200110ee010c010b200241023a0000200120024101107e200041106a200110ee010b200241106a24000f0b1039000baf0101017f230041106b22042400200420003703082003200441086a4108107e0240024002400240200141ff01710e03000102030b200441003a00072003200441076a4101107e0c020b200441013a00072003200441076a4101107e0c010b200441023a00072003200441076a4101107e0b02400240200241ff01714101460d00200441003a00072003200441076a4101107e0c010b200441013a00072003200441076a4101107e0b200441106a24000bb10301017f230041106b2204240002400240024002400240024002400240200041ff01710e0700010203040506070b200441003a000f20032004410f6a4101107e0c060b200441013a000f20032004410f6a4101107e0c050b200441023a000f20032004410f6a4101107e0c040b200441033a000f20032004410f6a4101107e200420013a000f20032004410f6a4101107e200420023a000f20032004410f6a4101107e0c030b200441043a000f20032004410f6a4101107e0c020b200441053a000f20032004410f6a4101107e0c010b200441063a000f20032004410f6a4101107e02400240024002400240024002400240200141ff01710e080001020304050607000b200441003a000f20032004410f6a4101107e0c070b200441013a000f20032004410f6a4101107e0c060b200441023a000f20032004410f6a4101107e0c050b200441033a000f20032004410f6a4101107e0c040b200441043a000f20032004410f6a4101107e0c030b200441053a000f20032004410f6a4101107e0c020b200441063a000f20032004410f6a4101107e0c010b200441073a000f20032004410f6a4101107e0b200441106a24000b920401027f230041106b2202240020022000280200360200200120024104107e02404120102f2203450d0020024220370204200220033602002002200041046a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2001200041246a4120107e4120102f2203450d0020024220370204200220033602002002200041c4006a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d0020024220370204200220033602002002200041e4006a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d002002422037020420022003360200200220004184016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b2001200041a4016a41c000107e4120102f2203450d0020024220370204200220033602002002200041e4016a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d002002422037020420022003360200200220004184026a4120107e2001200228020022032002280208107e02402002280204450d00200310310b4120102f2203450d0020024220370204200220033602002002200041a4026a4120107e2001200228020022002002280208107e02402002280204450d00200010310b200241106a24000f0b1039000b8a0501017f230041106b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e19000102030405060708090a0b0c0d0e0f101112131415161718190b200241003a000f20012002410f6a4101107e0c180b200241013a000f20012002410f6a4101107e0c170b200241023a000f20012002410f6a4101107e0c160b200241033a000f20012002410f6a4101107e0c150b200241043a000f20012002410f6a4101107e0c140b200241053a000f20012002410f6a4101107e0c130b200241063a000f20012002410f6a4101107e0c120b200241073a000f20012002410f6a4101107e0c110b200241083a000f20012002410f6a4101107e0c100b200241093a000f20012002410f6a4101107e0c0f0b2002410a3a000f20012002410f6a4101107e0c0e0b2002410b3a000f20012002410f6a4101107e200041086a200110dd01200041d0036a200110de010c0d0b2002410c3a000f20012002410f6a4101107e0c0c0b2002410d3a000f20012002410f6a4101107e0c0b0b2002410e3a000f20012002410f6a4101107e0c0a0b2002410f3a000f20012002410f6a4101107e0c090b200241103a000f20012002410f6a4101107e0c080b200241113a000f20012002410f6a4101107e0c070b200241123a000f20012002410f6a4101107e0c060b200241133a000f20012002410f6a4101107e0c050b200241143a000f20012002410f6a4101107e0c040b200241153a000f20012002410f6a4101107e0c030b200241163a000f20012002410f6a4101107e0c020b200241173a000f20012002410f6a4101107e0c010b200241183a000f20012002410f6a4101107e0b200241106a24000b130020004106360204200041fce4c8003602000b13002000410336020420004188bdc3003602000b130020004108360204200041ac9cc4003602000b130020004101360204200041a4acc0003602000b1300200041013602042000419cafc0003602000b130020004103360204200041cca9c0003602000b130020004103360204200041a4bac5003602000b130020004103360204200041e0f6c2003602000b130020004105360204200041a4bfc0003602000b130020004103360204200041fcb8c0003602000b130020004102360204200041e4d7c5003602000b130020004109360204200041f8d6c2003602000b13002000410c360204200041d8f8c5003602000b130020004102360204200041e8d0c1003602000b130020004103360204200041dc8dc4003602000b130020004102360204200041a0dec1003602000b130020004107360204200041d08fc8003602000b130020004106360204200041e8c1c8003602000b130020004102360204200041ccb1c0003602000b130020004103360204200041f4f8c0003602000b1300200041013602042000419ce8c1003602000b7201017f200028020022012001280200417f6a3602000240200028020022012802000d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200028020041046a22012001280200417f6a3602002000280200220041046a2802000d00200010310b0bb40101017f0240200028020022022802082001200228020c28020c110100450d00200041286a2d000021000240024020012802004121460d0041012101200041ff01714101460d020c010b0240024002400240024020012d00042202417e6a0e050001020403040b200041ff01710d0541010f0b200041ff01710d0441010f0b200041ff01710d0341010f0b200041ff01710d0241010f0b41012101200041ff01714101470d0020024109470d010b20010f0b41000baf0201027f02400240200028020022022802082001200228020c28020c110100450d00200041286a2d00002103024020012802004121460d0041012102200341ff01714101460d010c020b0240024002400240024020012d00042201417e6a0e050001020403040b200341ff01710d04410121020c050b200341ff01710d03410121020c040b200341ff01710d02410121020c030b200341ff01710d01410121020c020b41012102200341ff01714101470d0120014109460d010b410021020b200028020022012001280200417f6a3602000240200028020022012802000d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200028020041046a22012001280200417f6a3602002000280200220041046a2802000d00200010310b20020b040041010b040041010b3c01017f200041003b010002404110102f22010d001039000b200141f8c8c00036020c200141013602082001428180808010370200200020013602280bff0101027f20004180023b0100200041026a20012900003700002000410a6a200141086a290000370000200041126a200141106a2900003700002000411a6a200141186a29000037000002404110102f2201450d00200141f8c8c00036020c200141013602082001428180808010370200200020013602284110102f2202450d00200241e0c8c00036020c20024101360208200242818080801037020020012001280200417f6a2203360200024020030d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22032003280200417f6a220336020020030d00200110310b200020023602280f0b1039000b040041010bd73603017f027e067f230041d0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e230102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212200010b024002400240200141086a2802000e03000102000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41f49ac2001047000b200041003b0108200042e8073703000c230b200041003b01082000427f200141106a290300220342e8077c220420042003541b3703000c220b02400240024002400240024002400240024002400240200141086a2802000e0b000102030405060708090a000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41ccd1c8001047000b2001410c6a3502002103200241086a108d0220022903102104200041003b0108200020032004428094ebdc03807e20032004428094ebdc03827e2203428094ebdc038042ffffffff0f2003428080808080c0b2cd3b541b2003428094ebdc03824280cab5ee0156ad7c42ffffffff0f837c3703000c2a0b200041003b0108200042e88bd2003703000c290b200041013b0108200042f0edd5303703000c280b200241086a108d0220022903102103200041013b0108200020033703000c270b200241086a108d0220022903102103200041013b0108200020033703000c260b200041013b0108200042d8848ef0003703000c250b200041013b01082000200141146a35020042f8a5fd2f7e3703000c240b200041013b01082000200141146a350200220342e0891c7e20034280c2d72f7e7c4298c3e4007c3703000c230b200041013b01082000417f200141186a280200220141016a220520052001491bad220342b0ce347e20034280c2d72f7e7c42f0dd8b057c3703000c220b200041003b01082000200141146a35020042e8077e42e8edcf047c3703000c210b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41a480c3001047000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c220b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e4280a9f3bbb0027c3703000c210b200041003b010820004280c2d72f3703000c200b200041023b0108200042d0aa8acd003703000c1f0b02400240024002400240024020012d00040e06000102030405000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41fcfbc2001047000b200041003b01082000429883a1d5003703000c220b200041003b0108200042f0ebfa93013703000c210b200041003b0108200042a89de5d2003703000c200b200041003b0108200042d082f88e013703000c1f0b200041003b0108200042c8fdffd0003703000c1e0b02400240024002400240200141086a2802000e050001020304000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41f4fec3001047000b200041003b0108200042c8dcd4e2003703000c200b200041003b0108200042a885fccd003703000c1f0b200041003b010820004280f9c89d013703000c1e0b200041003b0108200042f88eddd8003703000c1d0b200041023b0108200042003703000c1c0b108e02000b02400240024020012d00040e03000102000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41dce7c1001047000b200041003b0108200042e8f1fbde023703000c1b0b200041003b0108200042b0cf95a0023703000c1a0b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41a4eac4001047000b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c1b0b200041003b010820002001411c6a280200220141e400200141e4004b1bad4298d70a7e42c0c6cbccb0027c3703000c1a0b200041003b0108200042c0cf8e313703000c190b200041003b01082000200141286a35020042f8ae0d7e2001411c6a35020042e8ad1d7e7c42f895f495017c3703000c180b108f02000b02400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141086a2802000e29000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41e4d8c8001047000b200041013b0108200042e8073703000c3d0b200041013b0108200042e8073703000c3c0b200041013b0108200042e8073703000c3b0b200041013b0108200042e8073703000c3a0b200041013b0108200042e8073703000c390b200041013b0108200042e8073703000c380b200041013b0108200042e8073703000c370b200041013b0108200042e8073703000c360b200041013b0108200042e8073703000c350b200041013b0108200042e8073703000c340b200041013b0108200042e8073703000c330b200041013b0108200042e8073703000c320b200041013b0108200042e8073703000c310b200041013b0108200042e8073703000c300b200041013b0108200042e8073703000c2f0b200041013b0108200042e8073703000c2e0b200041013b0108200042e8073703000c2d0b200041013b0108200042e8073703000c2c0b200041013b0108200042e8073703000c2b0b200041013b0108200042e8073703000c2a0b200041013b0108200042e8073703000c290b200041013b0108200042e8073703000c280b200041013b0108200042e8073703000c270b200041013b0108200042e8073703000c260b200041013b0108200042e8073703000c250b200041013b0108200042e8073703000c240b200041013b0108200042e8073703000c230b200041013b0108200042e8073703000c220b200041013b0108200042e8073703000c210b200041013b0108200042e8073703000c200b200041013b0108200042e8073703000c1f0b200041013b0108200042e8073703000c1e0b200041013b0108200042e8073703000c1d0b200041013b0108200042e8073703000c1c0b200041013b0108200042e8073703000c1b0b200041013b0108200042e8073703000c1a0b200041013b0108200042e8073703000c190b200041013b0108200042e8073703000c180b200041013b0108200042e8073703000c170b200041013b0108200042e8073703000c160b109002000b109102000b200041023b01082000200141186a35020042a08d067e4280e59af7007c3703000c130b109202000b02400240024002400240024020012802040e06000102030405000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a419ca3c6001047000b200041003b0108200042003703000c150b200041003b0108200042003703000c140b200041003b0108200042003703000c130b200041003b0108200042003703000c120b200041003b0108200042003703000c110b200041013b0108200042003703000c100b109302000b109402000b024002400240024002400240024020012802040e0700010203040506000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a418ca3c6001047000b200041003b0108200042003703000c120b200041003b0108200042003703000c110b200041003b0108200042003703000c100b200041003b0108200042003703000c0f0b200041003b0108200042003703000c0e0b200041003b0108200042003703000c0d0b109502000b024002400240024002400240200141086a2d00000e06000102030405000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a419086c5001047000b200041003b0108200042003703000c0f0b200041003b0108200042003703000c0e0b200041003b0108200042003703000c0d0b200041003b0108200042003703000c0c0b200041003b0108200042c0b2cd3b3703000c0b0b0240024002400240200141086a2802000e0400010203000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41c4a6c2001047000b200041013b0108200042003703000c0c0b200041003b0108200042003703000c0b0b200041003b0108200042003703000c0a0b024002400240024002400240024002400240200141086a2d00000e09000102030405060708000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41b8fdc4001047000b200041003b0108200042003703000c100b200041003b0108200042003703000c0f0b200041003b0108200042003703000c0e0b200041003b0108200042003703000c0d0b200041003b0108200042003703000c0c0b200041003b0108200042003703000c0b0b200041003b0108200042003703000c0a0b200041003b0108200042003703000c090b0240024002400240200141086a2d00000e0400010203000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a4180f3c0001047000b200041003b0108200042003703000c0a0b200041003b0108200042003703000c090b200041003b0108200042003703000c080b0240024002400240024002400240200141086a2802000e0700010203040506000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41a887c3001047000b200041013b0108200042e8073703000c0c0b200041013b0108200042e8073703000c0b0b200041013b0108200042e8073703000c0a0b200041013b0108200042e8073703000c090b200041013b0108200042e8073703000c080b200041013b0108200042e8073703000c070b02400240024002400240200141086a2802000e050001020304000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41a48bc4001047000b200241086a2001410c6a280200108c022002290308210320022d00102101200041003a0009200020013a00082000427f20034290ce007c220420042003541b3703000c090b200141106a2903002103200241086a2001410c6a280200108c0220022d00102101200041003a0009200020013a0008200020033703000c080b200041003b0108200042003703000c070b200241086a200141306a280200108c022002290308210320022d00102101200041003a0009200020013a00082000427f200342d080ce3b7c220420042003541b3703000c060b109602000b02400240024020012802040e03000102000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41d8e2c1001047000b200041003b0108200042a08d063703000c050b200041003b0108200042a08d063703000c040b0240024002400240024002400240200141086a2d00000e0700010203040506000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41acb7c7001047000b200041013b01082000200141346a35020042b0c00f7e200141386a3502004288d3fd097e7c42a0e6f6813a7c3703000c080b200141106a3502002103200241086a2001410c6a280200108c0220022903082104200041013b01082000427f2004200342a01f7e4298eca0207c22037c220420042003541b3703000c070b200141146a2802002105024002402001410c6a28020041014b0d00200241086a200141106a280200108c02427f2005ad42a01f7e42b0dd8d357c220320022903087c220420042003541b21030c010b2005ad4288277e42d08b80b2027c21030b200041013b0108200020033703000c060b200041013b0108200042f8949ced003703000c050b200041013b01082000427f200141306a35020042e8077e42d0ddeba1027c2203200141386a2903007c220420042003541b3703000c040b200041003b0108200042e0a2faca013703000c030b0240024002400240024002400240024020012d00040e080001020304050607000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c401200241dcd8c8003602c0012002200241c0016a360218200241086a41c8a3c8001047000b200041003b010820004280e1eb173703000c080b200041003b010820004280e1eb173703000c070b200041003b010820004280e1eb173703000c060b200041003b010820004280e1eb173703000c050b200041003b010820004280e1eb173703000c040b200041003b010820004280e1eb173703000c030b200041003b010820004280e1eb173703000c020b024002400240024002400240024020012f01040e0400010203000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a41fcbbc7001047000b200141106a280200220641ffffffff00712006470d0741082107200141086a2802002105024020064104742201450d002001102f2207450d030b02400240024002402001410476220820064f0d00200141037622092006200920064b1b22094104200941044b1b220941ffffffff00712009464103742108200941047421090240024020010d00200241003602080c010b200241086a41086a41083602002002200136020c200220073602080b200241c0016a20092008200241086a104e200241c8016a280200210120022802c0014101460d0120022802c4012107200141047621080b20052005200641c0076c6a470d0142002103200721090c020b20010d040c090b200641c0076c2109200641067441406a410676210a200721010340200241086a2005108c02200141086a200241086a41086a29030037030020012002290308370300200141106a2101200541c0076a2105200941c0786a22090d000b2007200a41016a41047422056a2109420021034100210141000d000340427f2003200720016a2903007c220420042003541b21032005200141106a2201470d000b0b427f2006ad42b896a7017e20037c42d884c9097c220420042003541b21032009200722056b210141012106024003402001450d01200141706a2101200541086a2109200541106a210520092d00004101460d000b410021060b02402008450d00200710310b200041003a0009200020063a0008200020033703000c060b200241086a200141086a280200108c022002290308210320022d00102101200041003a0009200020013a00082000427f200342e8c9aa3e7c220420042003541b3703000c050b200141106a280200220641ffffffff00712006470d0541082107200141086a2802002105024020064104742201450d002001102f2207450d010b024002402001410476220820064f0d00200141037622092006200920064b1b22094104200941044b1b220941ffffffff00712009464103742108200941047421090240024020010d00200241003602080c010b200241086a41086a41083602002002200136020c200220073602080b200241c0016a20092008200241086a104e200241c8016a280200210120022802c0014101460d0120022802c4012107200141047621080b20052005200641c0076c6a470d0242002103200721090c030b2001450d050b1039000b200641c0076c2109200641067441406a410676210a200721010340200241086a2005108c02200141086a200241086a41086a29030037030020012002290308370300200141106a2101200541c0076a2105200941c0786a22090d000b2007200a41016a41047422056a2109420021034100210141000d000340427f2003200720016a2903007c220420042003541b21032005200141106a2201470d000b0b427f2006ad42d08ea7017e20037c4280cc9c0a7c220420042003541b21032009200722056b210141012106024003402001450d01200141706a2101200541086a2109200541106a210520092d00004101460d000b410021060b02402008450d00200710310b200041003a0009200020063a0008200020033703000c010b0240024002400240024002400240024002400240024020012d00040e0b000102030405060708090a000b2002411c6a41013602002002420137020c200241d897ca00360208200241043602c40120024198e4c9003602c0012002200241c0016a360218200241086a4190eec0001047000b200241086a200141286a280200108c022002290308210320022d00102101200041003a0009200020013a00082000427f200342d09494da007c220420042003541b3703000c090b200041003b010820004288d7ebd4003703000c080b200041003b0108200042b0ab97d3003703000c070b200041003b0108200042f080c0d1003703000c060b200041003b0108200042b8dd81e7003703000c050b200041003b010820004298eddad2003703000c040b200041003b0108200042d8c184b2013703000c030b200041003b01082000428081fc99013703000c020b200041003b0108200042f0caf698013703000c010b200241086a200141c8006a280200108c022002290308210320022d00102101200041003a0009200020013a00082000427f200342d0fda6ef017c220420042003541b3703000b200241d0016a24000f0b103b000b940501047f230041a0036b22012400200141106a4200370300200141186a4200370300200141206a4200370300200141286a4200370300200120012903c801370308200142c0b2cd3b37039803200142c0b2cd3b37039003200142c0b2cd3b370388034100210241012103034020014188036a2104024002400240200241ff01710e03010002010b20014190036a21040c010b20014198036a21040b200442c0b2cd3b370300024020034103460d0020034189a1c0006a2104200341016a210320042d000022024103470d010b0b200141d0026a4200370300200141c8026a200129038803370300200141c8016a41f8006a4200370300200141c8016a41f0006a4201370300200141c8016a41e8006a4200370300200141c8016a41e0006a420137030020014198026a420037030020014190026a20012903900337030020014188026a420037030020014180026a4201370300200141f8016a22034200370300200141f0016a22044201370300200141c8016a41186a420037030020012001290398033703d801200142003703d00120014280e497d0123703c801200141f8026a200141286a290300370300200141f0026a200141086a41186a290300370300200141e8026a200141186a290300370300200141e0026a200141106a290300370300200141d8026a20012903083703002004420137030020034280b0def7d32b3703002001410036028003200141086a200141c8016a41c00110bf091a200141086a41f8006a428090cad2c60e370300200141086a41f0006a4201370300200141086a41e8006a4280c0a8ca9a3a370300200141086a41e0006a4201370300200141c8016a200141086a41b80110bf091a2001428180808080d0a5cc00370380032000200141c8016a108901200141a0036a24000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041ac9ac2001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c20004198e4c9003602182000200041186a3602102000419085c4001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041aca3c6001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041f8bac2001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041bca4c6001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041f4e7c1001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a3602102000418085c4001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a3602102000419887c3001047000b4d01017f230041206b22002400200041146a410136020020004201370204200041d897ca003602002000410436021c200041dcd8c8003602182000200041186a360210200041d8dcc4001047000bbb0201027f230041f0076b2203240002400240200228022822042802082001200428020c28020c1101000d002000420037030820004201370300200041206a41023a0000200041186a41003a000020042004280200417f6a2202360200024020020d002004280208200428020c2802001102000240200428020c280204450d00200428020810310b200441046a22022002280200417f6a220236020020020d00200410310b20011098020c010b2003200141c00710bf09220441c0076a41286a200241286a280200360200200441c0076a41206a200241206a290200370300200441c0076a41186a200241186a290200370300200441c0076a41106a200241106a290200370300200441c0076a41086a200241086a290200370300200420022902003703c00720002004200441c0076a1099020b200341f0076a24000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a2202280200109802200228020010310f0b2000410c6a2202280200109802200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2202280200109802200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a2202280200109802200228020010310f0b200041106a2202280200109802200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a2202280200109802200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a2202280200109802200228020010310f0b200041c8006a2202280200109802200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a2202280200109c02200228020010310f0b0bdefa050e027f017e067f017e027f017e027f017e0b7f017e047f037e017f177e230022032104200341e03a6b4160712203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e23021b1a19181601151413011201011101100f01010e010d0c0b0a090801070605040300020b200141106a29030021052001410c6a2802002106200141086a2802002107200341b0026a200141186a41a80710bf091a2002410d6a2f00002002410f6a2d0000411074722108200241246a2802002109200241206a280200210a2002411c6a280200210b200241146a290200210c200241106a280200210d2002410c6a2d0000210e200241046a290200210f2002280228210120022802002102024020074101470d00200320053703800b200341800b6a41086a200341b0026a41c00310bf091a200341d8236a200341b0026a41c0036a41e80310bf091a200320083b00f911200341fb116a20084110763a00002003200e3a00f8112003200b3602e80a2003200f3703f011200fa721072003200c3703e00a200ca721100240200241ff01714102460d00200241807e71211120032802f811220641087621080c320b20032902f4112105200320032902e40a22123702e40a200320103602e00a0240200fa741ff0171450d0020032903e00a210c200320073602f0112012422088a7210b200320053702f4112005422888a721082005422088a72106200ca7211020032903f011220fa7210741002111410221020c320b200341a00a6a41086a2202200341c00a6a41086a280200360200200320032902c00a3703a00a20034180336a200341a02b6a41880310bf091a20012001280200417f6a22083602002005422088a72106024020080d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22082008280200417f6a220836020020080d00200110310b200341d8096a41086a2002280200360200200320032903a00a3703d80920034190206a20034180336a41880310bf091a4102210b410021084109210a0c320b20034180336a410f6a20084110763a000020034180336a410d6a20083b000020034180336a41246a200936020020034180336a41206a200a36020020034180336a411c6a200b36020020034180336a41146a200c37020020034180336a41106a200d36020020034180336a410c6a200e3a0000200320013602a83320032002360280332003200f37028433200341a02b6a10890202400240024020032d00a02b200241ff01712208470d00200fa7210b02400240024002400240024020080e03000201000b20032d00a12b200241087641ff01712202470d0620024101470d0320034180336a410272200341a02b6a410272412010c2094521080c020b20032d00a42b200b41ff01712202470d06410121080240024020020e03010003010b20034180336a410572200341a02b6a410572412010c2094521080c020b200341a82b6a280200200f422088a7460d030c340b20032802a42b200b4621080b20032802c82b22022002280200417f6a220b3602000240200b0d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a220b200b280200417f6a220b360200200b0d00200210310b2008450d330c310b20032802c82b22022002280200417f6a220836020020080d302002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d30200210310c300b200328028c33200341ac2b6a280200470d3020032802c82b22022002280200417f6a220836020020080d2f2002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d2f200210310c2f0b20032802c82b22022002280200417f6a220836020020080d302002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d30200210310c300b20032802c82b22022002280200417f6a220836020020080d2f2002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d2f200210310c2f0b20032802c82b22022002280200417f6a220836020020080d2e2002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d2e200210310c2e0b000b2001410c6a280200210a200141106a290300210f200141086a280200210120034180336a41286a2208200241286a28020036020020034180336a41206a220b200241206a29020037030020034180336a41186a2206200241186a29020037030020034180336a41106a2207200241106a29020037030020034180336a41086a220e200241086a2902003703002003200229020037038033200fa7210d200f422088a7210902400240024002402001417f6a0e0a000102032221201f1e1d000b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d0020032003280090203602c81c200320032900d8233703b002200320034193206a2800003600cb1c2003200341df236a2800003600b702200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c360000200041206a41023a0000200020032903b002370021200041286a20032800b70236000020004201370300200424000f0b20032003280090203602c81c200320034193206a2800003600cb1c200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c36000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341d8236a200341a02b6a109e02024020032d00d8234101470d000240200d450d00200a10310b200320032800c81c36028019200320032900b002370390202003200341cb1c6a280000360083192003200341b7026a28000036009720200041186a41003a00002000420037030820002003280280193600192000411c6a200328008319360000200041206a41023a00002000200329039020370021200041286a20032800972036000020004201370300200424000f0b0240200d450d00200a10310b200320032800c81c360280192003200341cb1c6a28000036008319200041186a41003a00002000420037030820002003280280193600192000411c6a20032800831936000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d00200320032800c81c36028019200320032900d8233703b0022003200341cb1c6a280000360083192003200341df236a2800003600b702200041186a41003a00002000420037030820002003280280193600192000411c6a200328008319360000200041206a41023a0000200020032903b002370021200041286a20032800b70236000020004201370300200424000f0b4108102f2202450d37200342083702a42b200320023602a02b2003200f37039020200341a02b6a20034190206a4108107e41acd7c800410a20032802a02b220220032802a82b109f02024020032802a42b450d00200210310b200320032800c81c360280192003200341cb1c6a28000036008319200041186a41003a00002000420037030820002003280280193600192000411c6a20032800831936000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d00410221020c290b200341b0026a200a200910a00220032802b0022202450d2620032802b40221012003200341b8026a2802003602cc1c200320023602c81c200341286a200341c81c6a10bb0120032802280d2520032802cc1c220b200328022c2208490d252008417f4c0d140240024020080d00410121060c010b200810352206450d3720032802cc1c210b0b200b2008490d24200620032802c81c200810bf092107024020032802cc1c220b2008490d002003200b20086b3602cc1c200320032802c81c20086a3602c81c200341206a200341c81c6a10bb0120032802200d2420032802cc1c220e2003280224220b490d24200b417f4c0d1502400240200b0d00410121100c010b200b10352210450d3820032802cc1c210e0b200e200b490d23201020032802c81c200b10bf092113024020032802cc1c220e200b490d002003200e200b6b220e3602cc1c200320032802c81c200b6a22113602c81c200e4104490d232003201141046a3602c81c2003200e417c6a22143602cc1c20144104490d23201128000421152003201141086a3602c81c2003200e41786a22143602cc1c20144104490d232003200e41746a3602cc1c20032011410c6a3602c81c200341186a200341c81c6a10bb0120032802180d23200328021c221420032802cc1c410c6e220e200e20144b1bad420c7e220f422088a70d16200fa7220e417f4c0d1602400240200e0d00410421160c010b200e102f2216450d390b200e410c6ead210f0240024002402014450d00200341a82b6a2117200341a92b6a2118200341aa2b6a2119200341ab2b6a211a0340200341003602a02b20032802cc1c210e200341003a00f011200e450d2520032802c81c22112d0000211b2003200e417f6a221c3602cc1c200341013602a02b2003201141016a3602c81c2003201b3a00a42b200341003a00f011201c450d2520032802c81c22112d0000211b2003200e417e6a221c3602cc1c2003201141016a3602c81c2003201b3a00a52b200341023602a02b200341003a00f011201c450d2520032802c81c22112d0000211b2003200e417d6a221c3602cc1c2003201141016a3602c81c2003201b3a00a62b200341033602a02b200341003a00f011201c450d2520032802c81c22112d0000211b2003200e417c6a221c3602cc1c2003201141016a3602c81c2003201b3a00a72b200341043602a02b200341003a00f011201c450d25201720032802c81c22112d00003a00002003200e417b6a221b3602cc1c2003201141016a3602c81c200341053602a02b200341003a00f011201b450d25201820032802c81c22112d00003a00002003200e417a6a221b3602cc1c2003201141016a3602c81c200341063602a02b200341003a00f011201b450d25201920032802c81c22112d00003a00002003200e41796a221b3602cc1c2003201141016a3602c81c200341073602a02b200341003a00f011201b450d25201a20032802c81c22112d00003a00002003201141016a3602c81c2003200e41786a221b3602cc1c201b4104490d2520032902a42b210c2011280001211b2003200e41746a3602cc1c2003201141056a3602c81c0240200f422088a7220e200fa7470d00200e41016a2211200e490d1b200e410174221c20112011201c491b22114104201141044b1bad420c7e2205422088a74541027421112005a7211c02400240200e0d00200341003602a02b0c010b200341043602a82b200320163602a02b2003200e410c6c3602a42b0b200341d8236a201c2011200341a02b6a104e20032802e023211120032802d8234101460d0320032802dc232116200f428080808070832011410c6ead84210f0b2016200e410c6c6a220e201b360208200e200c422088a7360204200e200ca7360200200f4280808080107c210f2014417f6a22140d000b0b2016450d25200fa7210e20032802cc1c41034b0d01200e450d25200e410c6c450d250c240b2011450d170c390b02402001450d00200210310b02400240024020084106470d000240200741d0ecc000410610c209450d0020034190206a410110a1020c020b0240201541e7014b0d0020034190206a410210a1020c020b200341073a009020200710310240200b450d00201310310b200e450d2e200e410c6c450d2e201610310c2e0b20034190206a410110a1022008450d010b200710310b0240200b450d00201310310b200e450d29200e410c6c450d29201610310c290b200b200e419cb4c0001061000b2008200b419cb4c0001061000b200341a02b6a200141046a41c80010bf091a20034180336a41286a200241286a28020036020020034180336a41206a200241206a29020037030020034180336a41186a200241186a29020037030020034180336a41106a200241106a29020037030020034180336a41086a200241086a29020037030020032002290200370380332000200341a02b6a20034180336a10a202200424000f0b20034180336a41086a2001410c6a2902003703002003200129020437038033200341a02b6a41286a200241286a280200360200200341a02b6a41206a200241206a290200370300200341a02b6a41186a200241186a290200370300200341a02b6a41106a200241106a290200370300200341a02b6a41086a200241086a290200370300200320022902003703a02b200020034180336a200341a02b6a10a302200424000f0b200341a02b6a200141046a41c40010bf091a20034180336a41286a200241286a28020036020020034180336a41206a200241206a29020037030020034180336a41186a200241186a29020037030020034180336a41106a200241106a29020037030020034180336a41086a200241086a29020037030020032002290200370380332000200341a02b6a20034180336a10a402200424000f0b200341a02b6a41306a200141386a290300370300200341a02b6a41286a200141306a290300370300200341a02b6a41206a200141286a290300370300200341a02b6a41186a200141206a290300370300200341a02b6a41106a200141186a290300370300200341a02b6a41086a200141106a2903003703002003200141086a2903003703a02b20034180336a41286a200241286a28020036020020034180336a41206a200241206a29020037030020034180336a41186a200241186a29020037030020034180336a41106a200241106a29020037030020034180336a41086a200241086a29020037030020032002290200370380332000200341a02b6a20034180336a10a502200424000f0b20034190206a41086a220b200141106a2802003602002003200141086a290200370390202002411a6a290100210f200241196a2d00002106200241186a2d00002107200241166a2f0100210e200241156a2d0000210a200241146a2d0000210d200241126a2f01002109200241116a2d00002110200241106a2d000021112002410e6a2f010021132002410d6a2d000021142002410c6a2d000021152002410a6a2f01002116200241096a2d0000211b200241086a2d0000211c200241066a2f01002117200241056a2d00002118200241046a2d00002119200241026a2f0100211a2002280228210820022d0001211d20022d00002102024020012802044101470d00200341b0026a41086a200b28020036020020032003290390203703b0020240200241ff01710d0020082008280200417f6a2202360200024020020d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a22022002280200417f6a220236020020020d00200810310b2003200f3703980a200320063a00970a200320073a00960a2003200e3b01940a2003200a3a00930a2003200d3a00920a200320093b01900a200320103a008f0a200320113a008e0a200320133b018c0a200320143a008b0a200320153a008a0a200320163b01880a2003201b3a00870a2003201c3a00860a200320173b01840a200320183a00830a200320193a00820a2003201a3b01800a0240201d41ff01710d00410321020c010b4110102f2201450d33200141f8c8c00036020c2001410136020820014281808080103702004110102f2208450d33200841e0c8c00036020c20084101360208200842818080801037020020012001280200417f6a220b36020041002102200b0d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a220b200b280200417f6a220b360200200b0d00200110310b0240200241ff01714103460d0020082008280200417f6a2202360200024020020d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a22022002280200417f6a220236020020020d00200810310b024020032802b4022202450d00200241ffffff3f71450d0020032802b00210310b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a200341b0026a10a60220032802a42b210720032802a02b2106024020032802a82b2202450d0020024105742108200341d8096a41106a2101200621020340200341a02b6a41186a200241186a290000370300200341a02b6a41106a200241106a290000370300200341a02b6a41086a200241086a290000370300200320022900003703a02b200341d8096a41186a420037030020014200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a41edddc100411110a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a4190dec100410f10a702200141086a200341800b6a41086a290300370000200120032903800b3700004120102f220b450d34200241206a2102200342203702dc232003200b3602d823200341d8236a200341a02b6a4120107e20034180336a41086a20032802e023360200200320032903d82337038033200341d8096a412020034180336a10a802200841606a22080d000b0b0240200741ffffff3f71450d00200610310b200341a02b6a41086a20032903b002370300200341b02b6a200341b0026a41086a280200360200200341003602a42b2003410f3a00a02b200341a02b6a10a902200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b200341b0026a41086a200b28020036020020032003290390203703b0020240200241ff01710d0020082008280200417f6a2202360200024020020d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a22022002280200417f6a220236020020020d00200810310b2003200f3703980a200320063a00970a200320073a00960a2003200e3b01940a2003200a3a00930a2003200d3a00920a200320093b01900a200320103a008f0a200320113a008e0a200320133b018c0a200320143a008b0a200320153a008a0a200320163b01880a2003201b3a00870a2003201c3a00860a200320173b01840a200320183a00830a200320193a00820a2003201a3b01800a0240201d41ff01710d00410321020c010b4110102f2201450d32200141f8c8c00036020c2001410136020820014281808080103702004110102f2208450d32200841e0c8c00036020c20084101360208200842818080801037020020012001280200417f6a220b36020041002102200b0d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a220b200b280200417f6a220b360200200b0d00200110310b0240200241ff01714103460d0020082008280200417f6a2202360200024020020d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a22022002280200417f6a220236020020020d00200810310b024020032802b4022202450d00200241ffffff3f71450d0020032802b00210310b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a200341b0026a10a60220032802a42b210720032802a02b2106024020032802a82b2202450d0020024105742108200341d8096a41106a2101200621020340200341a02b6a41186a200241186a290000370300200341a02b6a41106a200241106a290000370300200341a02b6a41086a200241086a290000370300200320022900003703a02b200341d8096a41186a420037030020014200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a41edddc100411110a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41feddc100411210a702200141086a200341800b6a41086a290300370000200120032903800b3700004120102f220b450d33200241206a2102200342203702dc232003200b3602d823200341d8236a200341a02b6a4120107e20034180336a41086a20032802e023360200200320032903d82337038033200341d8096a412020034180336a10a802200841606a22080d000b0b0240200741ffffff3f71450d00200610310b200341a02b6a41086a20032903b002370300200341b02b6a200341b0026a41086a280200360200200341013602a42b2003410f3a00a02b200341a02b6a10a902200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b20034180196a41086a220d200141206a29030037030020034180196a41106a2209200141286a2903003703002003200141186a29030037038019200141146a2802002111200141106a28020021132001410c6a2802002108200141086a280200210b200141306a2802002110200341b0026a41286a2201200241286a280200360200200341b0026a41206a2206200241206a290200370300200341b0026a41186a2207200241186a290200370300200341b0026a41106a220e200241106a290200370300200341b0026a41086a220a200241086a290200370300200320022902003703b00202400240024002400240200b0e050001020304000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341a484c4003602c81c2003200341c81c6a3602b02b200341a02b6a41a48bc4001047000b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341b8156a41086a20034180336a41146a290200370300200341c5156a220220034180336a41196a290000370000200320034180336a410c6a2902003703b8150240024020032d0080334101460d0020032d008333210120032f008133210b20034180336a41086a28020021062003280284332107200341a3206a200341b8156a41086a29030037000020034190206a41186a200229000037000020032006360097202003200736009320200320032903b81537009b202003200b20014110747222023b019020200320024110763a009220200341d8096a41186a22024200370300200341d8096a41106a22014200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a4194c8c000410410a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41acf8c800410310a7022002200341800b6a41086a290300370300200120032903800b370300200341a02b6a200341d8096a412010aa0220032d00a02b2102200341800a6a41186a2201200341a02b6a41196a290000370300200341800a6a41106a220b200341b12b6a2900003703002003200341a92b6a2900003703880a200320032900a12b3703800a0240024020024101460d0020034180336a41186a420037030020034180336a41106a420037030020034180336a41086a420037030020034200370380330c010b20034180336a41086a20032903880a37030020034180336a41186a200129030037030020034180336a41106a200b290300370300200320032903800a370380330b024020034190206a20034180336a412010c209450d0041d08dc400ad4280808080b00184210f410321020c020b200341a02b6a200841c00710bf091a200341003b01d8234110102f2202450d35200241f8c8c00036020c200241013602082002428180808010370200200320023602802420034180336a200341a02b6a200341d8236a109902200341a0336a2d00002102200329038033210f200329038833210c20032f00a133210120032d00a333210b200341ac2b6a20032902a433370200200341ab2b6a200b3a0000200341a92b6a20013b0000200341a02b6a41086a41072002200c4202511b4107200f4201511b3a0000200341b42b6a20032902f011370200200341a02b6a411c6a200341f0116a41086a290200370200200341c42b6a200341f0116a41106a280200360200200341003a00a42b2003410e3a00a02b200320032f01d8093b00a52b2003200341da096a2d00003a00a72b200341a02b6a10a902200810312003200341e30a6a2800003600c30a200320032800e00a3602c00a200041186a41013a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b41d08dc400ad210f410221020b200810ab02200810312003200341e30a6a2800003600c30a200320032800e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a200f3702002000411e3b0021200041206a20023a000020004201370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341b8156a41086a20034180336a41146a290200370300200341c5156a220220034180336a41196a290000370000200320034180336a410c6a2902003703b8150240024020032d0080334101460d0020032d008333210120032f008133210b20034180336a41086a28020021062003280284332107200341a3206a200341b8156a41086a29030037000020034190206a41186a200229000037000020032006360097202003200736009320200320032903b81537009b202003200b20014110747222023b019020200320024110763a009220200341d8096a41186a22024200370300200341d8096a41106a22014200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a4194c8c000410410a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41acf8c800410310a7022002200341800b6a41086a290300370300200120032903800b370300200341a02b6a200341d8096a412010aa0220032d00a02b2102200341800a6a41186a2201200341a02b6a41196a290000370300200341800a6a41106a220b200341b12b6a2900003703002003200341a92b6a2900003703880a200320032900a12b3703800a0240024020024101460d0020034180336a41186a420037030020034180336a41106a420037030020034180336a41086a420037030020034200370380330c010b20034180336a41086a20032903880a37030020034180336a41186a200129030037030020034180336a41106a200b290300370300200320032903800a370380330b4103210220034190206a20034180336a412010c2090d01200341a02b6a200841c00710bf091a200341003b01d8234110102f2202450d34200241f8c8c00036020c200241013602082002428180808010370200200320023602802420034180336a200341a02b6a200341d8236a109902200341a0336a2d00002102200329038033210f200329038833210c20032f00a133210120032d00a333210b200341ac2b6a20032902a433370200200341ab2b6a200b3a0000200341a92b6a20013b0000200341a02b6a41086a41072002200c4202511b4107200f4201511b3a0000200341b42b6a20032902f011370200200341a02b6a411c6a200341f0116a41086a290200370200200341c42b6a200341f0116a41106a280200360200200341003a00a42b2003410e3a00a02b200320032f01d8093b00a52b2003200341da096a2d00003a00a72b200341a02b6a10a902200810312003200341e30a6a2800003600c30a200320032800e00a3602c00a200041186a41013a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b410221020b200810ab02200810312003200341e30a6a2800003600c30a200320032800e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041286a410b360000200041d08dc4003600242000411e3b0021200041206a20023a000020004201370300200424000f0b20034190206a41106a200929030037030020034190206a41086a200d290300370300200320032903801937039020200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341c81c6a41086a20034180336a41146a290200370300200341d51c6a220220034180336a41196a290000370000200320034180336a410c6a2902003703c81c024002400240024020032d0080334101460d0020032d008333210120032f008133210b20034180336a41086a28020021062003280284332107200341eb236a200341c81c6a41086a290300370000200341d8236a41186a2002290000370000200320063600df23200320073600db23200320032903c81c3700e3232003200b20014110747222023b01d823200320024110763a00da23200341d8096a41186a22014200370300200341d8096a41106a22024200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a4194c8c000410410a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41acf8c800410310a7022001200341800b6a41086a290300370300200220032903800b370300200341a02b6a200341d8096a412010aa0220032d00a02b2101200341800a6a41186a220b200341a02b6a41196a290000370300200341800a6a41106a2206200341b12b6a2900003703002003200341a92b6a2900003703880a200320032900a12b3703800a0240024020014101460d0020034180336a41186a420037030020034180336a41106a420037030020034180336a41086a420037030020034200370380330c010b20034180336a41086a20032903880a37030020034180336a41186a200b29030037030020034180336a41106a2006290300370300200320032903800a370380330b0240200341d8236a20034180336a412010c209450d00410b2102410321010c020b200341a02b6a41106a20034190206a41106a290300370300200341a02b6a41086a220620034190206a41086a29030037030020032003290390203703a02b4101210b024002400240200841ff01710e03000201020b20034180336a410d6a200341a02b6a410d6a29000037000020034180336a41086a2006290300370300200320032903a02b37038033200841087621014100210b0c010b02402011450d00201310310b0b200341db0e6a20034180336a41086a290300370000200341c80e6a41186a20034180336a410d6a290000370000200320113600cf0e200320133600cb0e20032003290380333700d30e200320013b01c80e200320014110763a00ca0e200b450d0341002102410121010c020b41002102410221010b200841ff01714102470d002011450d00201310310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a2002ad42208641d08dc400ad843702002000411e3b0021200041206a20013a000020004201370300200424000f0b200341f0116a410d6a200341d30e6a2208410d6a290000370000200341f0116a41086a200841086a290000370300200320082900003703f011200341d8096a41186a4200370300200341d8096a41106a4200370300200341d8096a41086a22084200370300200342003703d809200341c80e6a4194c8c000410410a7022008200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41acf8c800410310a702200241086a200341800b6a41086a290300370000200220032903800b370000200341a02b6a200341d8096a412010aa0220032d00a02b2102200341800a6a41186a200341b92b6a290000370300200341800a6a41106a200341b12b6a2900003703002003200341a92b6a2900003703880a200320032900a12b3703800a0240024020024101460d00200341c5156a4200370000200341b8156a41086a4200370300200342003703b815410021084100210b410021020c010b200341b8156a41086a200341930a6a290000370300200341c5156a200341980a6a2900003700002003200329008b0a3703b81520032f01800a20032d00820a41107472210220032800870a210820032800830a210b0b200341ac2b6a2008360200200341a02b6a41086a200b360200200341a02b6a41106a20032903b815370300200341a02b6a41186a2208200341b8156a41086a290300370300200341bd2b6a200341b8156a410d6a290000370000200341013a00a42b2003410e3a00a02b200320023b00a52b200320024110763a00a72b200341a02b6a10a902200341b32b6a200341f0116a41086a2903003700002008200341f0116a410d6a290000370000200320113600a72b200320133600a32b200320032903f0113700ab2b200320013b01a02b200320014110763a00a22b200341800a6a41186a22024200370300200341800a6a41106a22014200370300200342003703880a200342003703800a200341c80e6a4194c8c000410410a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41acf8c800410310a7022002200341800b6a41086a290300370300200120032903800b3703004120102f2202450d312003422037028433200320023602803320034180336a200341a02b6a4120107e200341800a6a41202003280280332202200328028833109f020240200328028433450d00200210310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41013a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200341c81c6a41106a2009290300370300200341c81c6a41086a200d29030037030020032003290380193703c81c200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341f0116a41086a20034180336a41146a290200370300200341fd116a220220034180336a41196a290000370000200320034180336a410c6a2902003703f01102400240024020032d0080334101460d0020032d008333210120032f008133210b20034180336a41086a28020021062003280284332107200341a3206a200341f0116a41086a29030037000020034190206a41186a200229000037000020032006360097202003200736009320200320032903f01137009b202003200b20014110747222023b019020200320024110763a009220200341d8096a41186a22024200370300200341d8096a41106a22014200370300200341d8096a41086a220b4200370300200342003703d809200341c80e6a4194c8c000410410a702200b200341c80e6a41086a290300370300200320032903c80e3703d809200341800b6a41acf8c800410310a7022002200341800b6a41086a290300370300200120032903800b370300200341a02b6a200341d8096a412010aa0220032d00a02b2102200341800a6a41186a2201200341a02b6a41196a290000370300200341800a6a41106a220b200341b12b6a2900003703002003200341a92b6a2900003703880a200320032900a12b3703800a0240024020024101460d0020034180336a41186a420037030020034180336a41106a420037030020034180336a41086a420037030020034200370380330c010b20034180336a41086a20032903880a37030020034180336a41186a200129030037030020034180336a41106a200b290300370300200320032903800a370380330b024020034190206a20034180336a412010c209450d00201010ab0220101031410b2102410321010c020b200341a02b6a41106a200341c81c6a41106a290300370300200341a02b6a41086a2202200341c81c6a41086a290300370300200320032903c81c3703a02b024002400240200841ff01710e03020100010b2011450d00201310310b200341b8156a41086a20034180336a41086a290300370300201010ab022010103141002102410121010c030b20034180336a410d6a2201200341a02b6a410d6a29000037000020034180336a41086a220b2002290300370300200341b8156a410d6a22022001290000370000200341b8156a41086a2201200b290300370300200320032903a02b220f3703b815200320113600cf0e200320133600cb0e200320084118763a00ca0e200320084108763b01c80e200341c80e6a41186a22082002290000370000200341db0e6a20012903003700002003200f3700d30e200341a02b6a201041c00710bf091a200341e2236a200341c80e6a41086a290200370100200341ea236a200341c80e6a41106a290200370100200341f2236a200829020037010020034180023b01d823200320032902c80e3701da234110102f2202450d33200241f8c8c00036020c20024101360208200242818080801037020020032002360280244110102f2201450d33200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a2208360200024020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d00200210310b200320013602802420034180336a200341a02b6a200341d8236a109902200341a0336a2d00002102200329038033210f200329038833210c20032f00a133210120032d00a3332108200341ac2b6a20032902a433370200200341ab2b6a20083a0000200341a92b6a20013b0000200341a02b6a41086a41072002200c4202511b4107200f4201511b3a0000200341b42b6a20032902f011370200200341a02b6a411c6a200341f0116a41086a290200370200200341c42b6a20034180126a2802003602002003410e3a00a02b200320032f01d8093b00a52b200341023a00a42b2003200341d8096a41026a2d00003a00a72b200341a02b6a10a90220101031200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41013a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b201010ab022010103141002102410221010b200841ff01714102470d002011450d00201310310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a2002ad42208641d08dc400ad843702002000411e3b0021200041206a20013a000020004201370300200424000f0b200141246a290200210f200141206a28020021102001411c6a2802002113200141186a2802002111200141146a2802002109200141106a280200210d2001410c6a280200210a200141086a280200210820034180336a2001412c6a41cc0310bf091a200341b0026a41286a2201200241286a280200360200200341b0026a41206a220b200241206a290200370300200341b0026a41186a2206200241186a290200370300200341b0026a41106a2207200241106a290200370300200341b0026a41086a220e200241086a290200370300200320022902003703b0020240024002400240024002402008417f6a0e06000102030405000b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b0023703a02b02400240200341a02b6a109d020d00200341b42b6a200f370200200341b02b6a2010360200200320133602ac2b200320113602a82b200320093602a42b2003200d3602a02b41032102200a200341a02b6a10ac020d0120004200370308200020032800d823360019200041186a41003a00002000411c6a200341db236a28000036000020004200370300200424000f0b02402009450d00200d10310b410221022010450d00201310310b200041c883c3003600242000419d023b002120004200370308200041286a4111360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b0023703a02b4102210202400240200341a02b6a109d020d0041032102200a10ad02450d010b2000418c84c3003600242000419d063b002120004200370308200041286a410e360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200042003703082000200328008019360019200041186a41003a00002000411c6a20034183196a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b0023703a02b024002400240200341a02b6a109d02450d00410221080c010b200341a02b6a200a10ae0220032802a02b220220032802a82b10af0241ff0171210b024020032802a42b450d00200210310b4103210841042101419081c5002102200b4107460d000240200b417f6a0e0700010101010100010b200a10b002450d014106210141e4a0c60021020b20002002360024200020013a00222000411d3a002120004200370308200041286a410d360000200041206a20083a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b0023703a02b024002400240200341a02b6a109d02450d004102210b0c010b200341a02b6a200a10ae0220032802a02b220220032802a82b10af0241ff01712106024020032802a42b450d00200210310b4103210b41052108419cf2c4002101410c210220064107460d0002402006417e6a0e06000101010100010b200a10b102450d014107210841fca0c6002101410f21020b20002001360024200020083a00222000411d3a002120004200370308200041286a2002360000200041206a200b3a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f011360019200041186a41003a00002000411c6a200341f3116a28000036000020004200370300200424000f0b200341a02b6a41146a200f370200200341a02b6a41106a2010360200200341a02b6a410c6a2013360200200341a02b6a41086a2011360200200320093602a42b2003200d3602a02b200341a02b6a411c6a20034180336a41cc0310bf091a200341d8236a41286a2001280200360200200341d8236a41206a200b290300370300200341d8236a41186a2006290300370300200341d8236a41106a2007290300370300200341d8236a41086a200e290300370300200320032903b0023703d82341022102024002400240200341d8236a109d020d00200341d8236a200a10ae0220032802d823220120032802e02310af022102024020032802dc23450d00200110310b200241ff0171210841032102024041000d0020080e080100000000000001010b410221012008417b6a4102490d00200341800a6a41186a22024200370300200341900a6a22084200370300200342003703880a200342003703800a200341c80e6a41b5d8c800410d10a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41cfd8c800410c10a7022002200341800b6a41086a290300370300200820032903800b370300200341d8236a200341800a6a412010b20220032802a824210220032802e8242108200341003602e023200342013703d823200341003a00f011200341d8236a200341f0116a4101107e200341a02b6a200341d8236a10de014100200220084102461b200a200341d8236a10b3022102200341a02b6a10a3012002450d024103210241e483c3002103411521080c010b200341a02b6a10a3014100210141b083c3002103410f21080b20002003360024200020013a00222000411d3a002120004200370308200041286a2008360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b0023703a02b024002400240200341a02b6a109d02450d00410221020c010b200341a02b6a200a200d2009201110b402024020032d00a02b22024107470d00200341a02b6a200d200a10b50220032d00a02b22024107460d020b20032902a42b210f20032d00a32b210120032d00a22b210820032d00a12b21030b2000200f3e0024200020013a0023200020083a0022200020033a002120004200370308200041286a200f4220883e0000200041206a20023a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b4102210a200341b8156a41026a2001410b6a2d00003a0000200341b0026a41086a220d200141186a290300370300200341b0026a41106a2209200141206a290300370300200341b0026a41186a2210200141286a280200360200200320012f00093b01b8152003200141106a2903003703b002200141c0006a290300210f200141386a290300210c200141086a2d000021082001410c6a280200211b2001412c6a2802002111200141306a2802002113200141346a280200211420034180336a41286a2201200241286a28020036020020034180336a41206a220b200241206a29020037030020034180336a41186a2206200241186a29020037030020034180336a41106a2207200241106a29020037030020034180336a41086a220e200241086a2902003703002003200229020037038033024002400240024002400240024020080e0400010203000b200341b42b6a4101360200200342013702a42b200341d897ca003602a02b200341043602dc23200341dcd8c8003602d8232003200341d8236a3602b02b200341a02b6a4180f3c0001047000b200341e7236a200d290300370000200341ef236a2009290300370000200341f7236a20102d00003a0000200320032f01b8153b01d8232003201b3600db23200320032903b0023700df23410221022003200341b8156a41026a2d00003a00da23200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b02400240200341a02b6a109d020d00410321022011200341d8236a200c200f2013201410b60241ff01714103460d010b200041dcefc0003600242000419c023b002120004200370308200041286a410a360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f011360019200041186a41003a00002000411c6a200341f3116a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341a02b6a109d020d012003420037028419200341a02b6a201b10b702200341d8236a20032802a02b220120032802a82b10b80220032902dc23420020032802d82322021b210f024020032802a42b450d00200110310b2002410820021b2116200fa721150240200f422088a72202450d002016200241386c6a2110200341800a6a41086a210a2016210203402002290300210f200341800a6a41186a2201200241206a290300370300200341800a6a41106a2208200241186a290300370300200a200241106a290300370300200320022903083703800a200f4202510d01200241386a210e200241306a290300210c200241286a2903002105200341f0116a41186a22022001290300370300200341f0116a41106a22012008290300370300200341f0116a41086a2208200a290300370300200320032903800a3703f0110240200f4201520d00200341d8236a41186a22112002290300370300200341d8236a41106a22132001290300370300200341d8236a41086a22142008290300370300200320032903f0113703d823024002402003280284192207450d00200328028019210d0340200741b8016a210120072f01b60122094105742102417f21082007210b02400340024020020d00200921080c020b200341d8236a2001412010c2092206450d04200841016a2108200b41106a210b200241606a2102200141206a21012006417f4a0d000b0b200d450d01200d417f6a210d200720084102746a4198046a28020021070c000b0b200341a02b6a41186a2011290300370300200341a02b6a41106a2013290300370300200341a02b6a41086a2014290300370300200320032903d8233703a02b20034180196a200341a02b6a2005200c10b9020c010b2005200b29030056200c200b41086a290300220f56200c200f511b450d00200341a02b6a41186a2011290300370300200341a02b6a41106a2013290300370300200341a02b6a41086a2014290300370300200320032903d8233703a02b20034180196a200341a02b6a2005200c10b9020b200e2102200e2010470d000b0b02402015450d00201541386c450d00201610310b2003280284192201450d032003280280192108200328028819211c20012102024003402008450d012008417f6a2108200120012f01b6014102746a4198046a280200210120022802980421020c000b0b0240201c450d00201c417f6a21064100210841012101024002400340200820022f01b601490d01024020022802b001220b0d0020021031410021020c030b20022f01b4012108200210312001417f6a2101200b21020c000b0b200220084105746a220b41bf016a280000210e200b41bb016a2800002107200b41b8016a2f0000210a200b41ba016a2d0000210d200341c81c6a410d6a2209200b41d0016a290000370000200341c81c6a41086a2210200b41cb016a2900003703002003200b41c3016a2900003703c81c200d411074210d200841016a210b200220084104746a220841086a290300210c2008290300210f024020014101460d002002200b4102746a4198046a280200210202402001450d000340200141016a220820014f210b200228029804210220082101200b0d000b0b4100210b0b200a200d722101200341a02b6a410d6a2009290000370000200341a02b6a41086a2010290300370300200320032903c81c3703a02b0b200341d8236a410d6a200341a02b6a410d6a290000370000200341d8236a41086a200341a02b6a41086a290300370300200320032903a02b3703d823417f200641016a220820082006491bad42307e2205422088a70d112005a72208417f4c0d112008102f2213450d33201320013b01002013200f3703202013200e36000720132007360003201320032903d82337000b201341026a20014110763a0000201341286a200c370300201341136a200341e0236a290300370000201341186a200341e5236a290000370000200841306e210d024020060d004101211c0c040b201c417e6a210741012101024002400340200b20022f01b601490d01024020022802b00122080d0020021031410021020c030b20022f01b401210b200210312001417f6a2101200821020c000b0b2002200b4105746a220841bf016a2800002115200841bb016a2800002114200841b8016a2f00002106200841ba016a2d0000210e200341f0116a410d6a220a200841d0016a290000370000200341f0116a41086a2210200841cb016a2900003703002003200841c3016a2900003703f011200e411074210e200b41016a21082002200b4104746a220b41086a290300210c200b290300210f024020014101460d00200220084102746a4198046a280200210202402001450d000340200141016a220820014f210b200228029804210220082101200b0d000b0b410021080b2006200e722109200341a02b6a410d6a200a290000370000200341a02b6a41086a2010290300370300200320032903f0113703a02b0b200341d8236a410d6a2210200341a02b6a410d6a220e290000370000200341d8236a41086a2211200341a02b6a41086a220a290300370300200320032903a02b3703d823200341d30e6a2116410121060340200e2010290000370000200a2011290300370300200320032903d8233703a02b024002400240200d2006470d00200d20066b417f200741016a220120012007491b22014f0d00200620016a22012006490d15200d410174220b2001200b20014b1b22014104200141044b1bad42307e2205422088a74541037421012005a7210b02400240200d0d0020034100360290200c010b200341083602982020032013360290202003200d41306c360294200b200341c81c6a200b200120034190206a104e20032802d01c210120032802c81c4101460d0120032802cc1c2113200141306e210d0b2013200641306c6a2201201536000720012014360003200120093b0100200141026a20094110763a0000200e2900002105200a290300211220032903a02b211e200141286a200c3703002001200f3703202001201e37000b200141136a2012370000200141186a20053700002007450d06200641016a21062007417f6a2107410121010c010b20010d350c130b024002400340200820022f01b601490d01024020022802b001220b450d0020022f01b4012108200210312001417f6a2101200b21020c010b0b20021031410021020c010b200341c80e6a41186a200220084105746a220b41d0016a290000370300200341c80e6a41106a200b41c8016a290000370300200341c80e6a41086a200b41c0016a2900003703002003200b41b8016a2900003703c80e200841016a210b200220084104746a220841086a290300210c2008290300210f0240024020014101470d00200b21080c010b2002200b4102746a4198046a280200210202402001450d000340200141016a220820014f210b200228029804210220082101200b0d000b0b410021080b200a201641086a290000370300200e2016410d6a290000370000200320162900003703a02b20032f01c80e20032d00ca0e41107472210920032800cf0e211520032800cb0e21140b2010200e2900003700002011200a290300370300200320032903a02b3703d8230c000b0b034020022802b0012101200210312001210220010d000c040b0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341d8236a200341a02b6a109e020240024020032d00d8234101470d004200210f0c010b200341a02b6a201b10b702200341d8236a20032802a02b220120032802a82b10b80220032902dc23420020032802d82322021b210c024020032802a42b450d00200110310b2002410820021b21064103210a411c210b41002108419ca1c200210242808080809002210f02400240200c4280808080105a0d000c010b20062903004201520d00200341a02b6a201b10ae0220032802a02b220120032802a82b10af0241ff01712102024020032802a42b450d00200110310b0240024002400240024020024107460d002002417f6a0e0701000000000001000b200341d8236a410710ba020c010b0240201b10b0020d00201b10bb020c020b200341d8236a410a10ba020b20032d00d823220a4107470d010b0240200ca72202450d00200241386c450d00200610310b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b20032d00db23210120032d00da23210820032d00d923210b20032902dc23220542808080807083210f2005a721020b200ca72203450d00200341386c450d00200610310b200020013a0023200020083a00222000200b3a002120004200370308200041206a200a3a0000200041186a41003a00002000200f428080808070832002ad8437002420004201370300200424000f0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b034020022802b0012101200210312001210220010d000b201c41306c2101201321020340200241286a290300210f200241206a290300210c200241086a2900002105200241106a29000021122002290000211e200341a02b6a41186a200241186a290000370300200341a02b6a41106a2012370300200341a02b6a41086a20053703002003201e3703a02b200341a02b6a200c200f10bc02200241306a2102200141506a22010d000b200d450d00200d41306c450d00201310310b200341a02b6a201b10b70220032802a02b220220032802a82b10bd02024020032802a42b450d00200210310b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a200141086a41d80010bf091a20034180336a41286a200241286a28020036020020034180336a41206a200241206a29020037030020034180336a41186a200241186a29020037030020034180336a41106a200241106a29020037030020034180336a41086a200241086a29020037030020032002290200370380332000200341a02b6a20034180336a10be02200424000f0b200141286a290300210c200141206a2903002105200141186a280200211f200141146a2802002120200141106a28020021212001410c6a2802002122200141086a28020021082002411a6a290100210f200241196a2d0000210b200241186a2d00002106200241166a2f01002107200241156a2d0000210e200241146a2d0000210a200241126a2f0100210d200241116a2d00002109200241106a2d000021102002410e6a2f010021112002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d0000211b200241066a2f0100211c200241056a2d00002117200241046a2d00002118200241026a2f0100211920022d0001211a20022d0000210120034190206a41046a221d200241266a2f01003b01002003200241226a280100360290202002280228210202400240024002400240024002400240024020080e0400010203000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a41c4a6c2001047000b0240200141ff01710d0020022002280200417f6a2201360200024020010d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a220136020020010d00200210310b2003200f3703980a2003200b3a00970a200320063a00960a200320073b01940a2003200e3a00930a2003200a3a00920a2003200d3b01900a200320093a008f0a200320103a008e0a200320113b018c0a200320133a008b0a200320143a008a0a200320153b01880a200320163a00870a2003201b3a00860a2003201c3b01840a200320173a00830a200320183a00820a200320193b01800a0240201a41ff01710d00410321010c010b4110102f2208450d34200841f8c8c00036020c2008410136020820084281808080103702004110102f2202450d34200241e0c8c00036020c20024101360208200242818080801037020020082008280200417f6a220b36020041002101200b0d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a220b200b280200417f6a220b360200200b0d00200810310b0240200141ff01714103460d0020022002280200417f6a2201360200024020010d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a220136020020010d00200210310b41022102200341023a00b0020c070b200341c80e6a41186a22084200370300200341c80e6a41106a22024200370300200341c80e6a41086a22014200370300200342003703c80e200341d8236a4188bbc200410810a7022001200341d8236a41086a290000370300200320032900d8233703c80e200341a02b6a4190bbc200410b10a7022008200341a02b6a41086a290000370300200220032900a02b37030020034180336a200341c80e6a412010bf0202402003280280334101460d00200341800a6a210b0c030b200329028433210f200341800a6a41186a22084200370300200341800a6a41106a220b4200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a702200320012903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a7022008200341800b6a41086a290300370300200b20032903800b37030020034188026a200341800a6a412010c0020240200328028802450d00200341800a6a210b200328028c02417f200f422088a7220141d8046a220820082001491b4f0d030b200341b0026a410110c1020c030b200341a02b6a411a6a200f370100200341a02b6a41196a200b3a0000200341a02b6a41186a20063a0000200341a02b6a41166a20073b0100200341a02b6a41156a200e3a0000200341a02b6a41146a200a3a0000200341a02b6a41126a200d3b0100200341a02b6a41116a20093a0000200341a02b6a41106a20103a0000200341a02b6a410e6a20113b0100200341a02b6a410d6a20133a0000200341a02b6a410c6a20143a0000200341a02b6a410a6a20153b0100200341a02b6a41096a20163a0000200341a02b6a41086a201b3a00002003201c3b01a62b200320173a00a52b200320183a00a42b200320193b01a22b2003201a3a00a12b200320013a00a02b200341a02b6a41266a201d2f01003b0100200341a02b6a41226a200328029020360100200320023602c82b20034180336a200341a02b6a109e02200341c80e6a41086a20034180336a41096a290000370300200341c80e6a41106a20034180336a41116a290000370300200341c80e6a41186a20034180336a41196a29000037030020032003290081333703c80e02400240024020032d0080334101460d00200341d8096a41186a200341c80e6a41186a290300220f370300200341d8096a41106a200341c80e6a41106a2903002212370300200341d8096a41086a200341c80e6a41086a290300221e370300200320032903c80e22233703d809200341a02b6a41186a200f370300200341a02b6a41106a2012370300200341a02b6a41086a201e370300200320233703a02b20034180336a200341a02b6a202220212020201f2005200c10c20220032d00803322024107460d0220032d008133210120032d008233210820032d008333210b200329028433210f0c010b410221020b2000200f3700242000200b3a0023200020083a0022200020013a002120004200370308200041206a20023a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a411a6a200f370100200341a02b6a41196a200b3a0000200341a02b6a41186a20063a0000200341a02b6a41166a20073b0100200341a02b6a41156a200e3a0000200341a02b6a41146a200a3a0000200341a02b6a41126a200d3b0100200341a02b6a41116a20093a0000200341a02b6a41106a20103a0000200341a02b6a410e6a20113b0100200341a02b6a410d6a20133a0000200341a02b6a410c6a20143a0000200341a02b6a410a6a20153b0100200341a02b6a41096a20163a0000200341a02b6a41086a201b3a00002003201c3b01a62b200320173a00a52b200320183a00a42b200320193b01a22b2003201a3a00a12b200320013a00a02b200341a02b6a41266a201d2f01003b0100200341a02b6a41226a200328029020360100200320023602c82b0240200341a02b6a109d020d00200341d8236a4188bbc200410810a702200341a02b6a419bbbc200410f10a7024120102f2202450d322003422037028433200320023602803320034180336a200341d8236a4110107e20034180336a200341a02b6a4110107e2003280288332202417f4c0d1020032802803321084101210102402002450d002002102f2201450d330b20012008200210bf092108200341b0026a41086a20034180336a41086a2201280200220b360200200341c81c6a41026a2206200341a02b6a41026a2d00003a00002003200329038033220f3703b002200320032f00a02b3b01c81c200341ec236a200b360200200320023602e023200320023602dc23200320083602d8232003200f3702e423200341013a00f4232003410b3602f023200341f7236a20062d00003a0000200320032f01c81c3b00f523200341a02b6a200341d8236a10c402024020032903a02b4201520d00200341a02b6a41086a2102200341d82b6a210803402001200241086a290300220f37030020034180336a41106a200241106a290300220c37030020034180336a41186a200241186a290300220537030020034180336a41206a200241206a290300370300200320022903002212370380332008290300211e20032903d02b2123200341a02b6a41186a2005370300200341a02b6a41106a200c3703002002200f370300200320123703a02b200341a02b6a2023201e10bc02200341a02b6a200341d8236a10c40220032903a02b4201510d000b0b024020032802dc23450d0020032802d82310310b0240200341d8236a41106a280200450d0020032802e42310310b200341c80e6a41186a22024200370300200341c80e6a41106a22014200370300200341c80e6a41086a22084200370300200342003703c80e200341d8236a4188bbc200410810a7022008200341d8236a41086a220b290000370300200320032900d8233703c80e200341a02b6a41aabbc200410710a7022002200341a02b6a41086a2206290000370300200120032900a02b370300200341c80e6a412010c502200242003703002001420037030020084200370300200342003703c80e200341d8236a4188bbc200410810a7022008200b290000370300200320032900d8233703c80e200341a02b6a4190bbc200410b10a70220022006290000370300200120032900a02b370300200341c80e6a412010bd02200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341800a6a41186a22064200370300200341800a6a41106a22084200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a7022003200341c80e6a41086a22012903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a7022006200341800b6a41086a2207290300370300200820032903800b37030020034180026a200b412010c00220032802840241c0f0006e41002003280280021b20214d0d01200341b0026a410210c1020b20032d00b00222024107470d020c010b200341c80e6a41186a220e4200370300200341c80e6a41106a220a420037030020014200370300200342003703c80e200341d8236a4188bbc200410810a7022001200341d8236a41086a220d290000370300200320032900d8233703c80e200341a02b6a41f4ccc200410e10a702200241086a2209200341a02b6a41086a2210290000370000200220032900a02b370000200341f8016a200341c80e6a412010c00220032802f801211120032802fc012113200e4200370300200a420037030020014200370300200342003703c80e200341d8236a4188bbc200410810a7022001200d290000370300200320032900d8233703c80e200341a02b6a41f4ccc200410e10a70220092010290000370000200220032900a02b3700002003201341016a410120111b22113602a02b200341c80e6a4120200341a02b6a4104109f022006420037030020084200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a702200320012903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a702200841086a2007290300370300200820032903800b370300200341f0016a200b412010c00220032802f401210820032802f001210b200e4200370300200a420037030020014200370300200342003703c80e200341d8236a4188bbc200410810a7022001200d290000370300200320032900d8233703c80e200341a02b6a4190bbc200410b10a70220092010290000370000200220032900a02b3700004108102f2202450d2e200342083702a42b200320023602a02b2003202136028033200341a02b6a20034180336a4104107e2003417f20084100200b1b220220226a220120012002491b220236028033200341a02b6a20034180336a4104107e200341c80e6a412020032802a02b220120032802a82b109f02024020032802a42b450d00200110310b200341b42b6a2002360200200341b02b6a2021360200200341ac2b6a2011360200200341a82b6a41003a00002003410b3a00a02b200341a02b6a10a902200341073a00b0020b20004200370308200020032800f011360019200041186a41003a00002000411c6a200341f3116a28000036000020004200370300200424000f0b20032f00b102210120032d00b3022108200020032902b402370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b200341e20a6a22152001410b6a2d00003a0000200320012f00093b01e00a200141d0006a290300210f200141c8006a290300210c200141086a2d0000210b2001410c6a2802002108200141106a280200210d200141146a2802002109200141186a28020021132001411c6a2802002111200141206a2802002110200141246a2802002114200141286a28020021162001412c6a2802002119200141306a2802002117200141346a280200211b200141386a280200211a2001413c6a2802002118200141c0006a280200211c200141c4006a280200211d200341b0026a41286a2201200241286a280200360200200341b0026a41206a2206200241206a290200370300200341b0026a41186a2207200241186a290200370300200341b0026a41106a220e200241106a290200370300200341b0026a41086a220a200241086a290200370300200320022902003703b002024002400240024002400240024002400240200b0e06000102030405000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a419086c5001047000b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341800a6a41106a20034191336a290000370300200341800a6a41186a20034199336a29000037030020032003290081333703800a200320034189336a2900003703880a02400240024020032d0080334101460d00200341d8096a41086a220220032903880a370300200341d8096a41186a2201200341800a6a41186a290300370300200341d8096a41106a220b200341800a6a41106a290300370300200320032903800a3703d8090240200841e7074b0d0020034190206a410c10ba020c020b200341a02b6a41186a2001290300370300200341a02b6a41106a200b290300370300200341a02b6a41086a2002290300370300200320032903d8093703a02b200320133602e023200320093602dc232003200d3602d82320032014360288332003201036028433200320113602803320034190206a200341a02b6a4200200f200f2008200341d8236a20034180336a10c6020c020b200341023a0090200b02402010450d00201110310b2009450d00200d10310b024020032d00902022024107460d0020032f009120210120032d00932021082000200329029420370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b200042003703082000200328008019360019200041186a41003a00002000411c6a20034183196a28000036000020004200370300200424000f0b200320152d00003a00ca0e200320032f01e00a3b01c80e200320163a00e70e200320143600e30e200320103600df0e200320113600db0e200320133600d70e200320093600d30e2003200d3600cf0e200320083600cb0e200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b024002400240200341a02b6a109d02450d00200341023a0090200240201c450d00201810310b0240201b450d00201710310b410221020c010b200341a02b6a41186a200341c80e6a41186a290300370300200341a02b6a41106a200341c80e6a41106a290300370300200341a02b6a41086a200341c80e6a41086a290300370300200320032903c80e3703a02b2003201a3602e0232003201b3602dc23200320173602d8232003201d360288332003201c36028433200320183602803320034190206a200341a02b6a4201200c200f2019200341d8236a20034180336a10c60220032d00902022024107460d010b20032f009120210120032d00932021082000200329029420370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a200810c7020240024020032d00803322024107470d00200341a02b6a200810ae0220032802a02b220120032802a82b10af0241ff01712102024020032802a42b450d00200110310b024002402002417f6a0e0701000000000001000b200341c81c6a410710ba020c020b024002400240200810ad020d00200341c80e6a41e28bc500410910a702200341800b6a41b0a8c600410510a7022003200836028019200320034180196a410410c8023703d823200341ac2b6a20034180196a41046a3602002003200341e0236a3602a42b200320034180196a3602a82b2003200341d8236a3602a02b20034180336a200341a02b6a108801200328028833220141206a2202417f4c0d130240024020020d004101210b0c010b2002102f220b450d360b200341003602982020032002360294202003200b3602902020034190206a200341c80e6a4110107e20034190206a200341800b6a4110107e20034190206a20032802803322022001107e0240200328028433450d00200210310b200341a02b6a2003280290202202200328029820220b10c902024020032d00d02b220641024622010d002002200b10bd020b200341d8236a41086a220b200341a02b6a41086a290300370300200341d8236a41106a2207200341a02b6a41106a290300370300200341d8236a41186a220e200341a02b6a41186a290300370300200341d8236a41206a220a200341a02b6a41206a290300370300200341d8236a41286a220d200341a02b6a41286a290300370300200320032903a02b3703d823200320032800d12b360280192003200341d42b6a2800003600831920010d0120034180336a41286a200d29030037030020034180336a41206a200a29030037030020034180336a41186a200e29030037030020034180336a41106a200729030037030020034180336a41086a200b290300370300200320032903d8233703803320032003280280193602b81520032003280083193600bb150240200328029420450d00200210310b200341d42b6a20032800bb15360000200341a02b6a41086a20034180336a41086a290300220f370300200341a02b6a41286a20034180336a41286a290300370300200341a02b6a41206a20034180336a41206a290300370300200341a02b6a41186a20034180336a41186a290300370300200341a02b6a41106a220220034180336a41106a2903003703002003200329038033220c3703a02b200320063a00d02b200320032802b8153600d12b2002200c200f10bc020c020b200341c81c6a410810ba020c030b200328029420450d00200210310b200341a02b6a200810ca0220032802a02b220220032802a82b10bd02024020032802a42b450d00200210310b200341a82b6a2008360200200341013a00a42b2003410a3a00a02b200341a02b6a10a902200341073a00c81c0c060b20032d008133210120032d008233210820032d008333210b20032003290284333702cc1c2003200b3a00cb1c200320083a00ca1c200320013a00c91c200320023a00c81c0b20032d00c81c22024107460d0420032f00c91c210120032d00cb1c2108200020032902cc1c370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b20034180336a200341a02b6a200810c70220032d00803322024107470d01200341a02b6a200d10ca02200341e8016a20032802a02b220b20032802a82b10c00220032802ec01210120032802e8012102024020032802a42b450d00200b10310b02400240024002400240024020024101470d0020012008470d00200341a02b6a200d10ae0220032802a02b220120032802a82b10af0241ff01712102024020032802a42b450d00200110310b20024107460d05200341a02b6a200810ae0220032802a02b220b20032802a82b10af0241ff01712101024020032802a42b450d00200b10310b20014107460d05200141064b0d044101200174220b412a710d02200b41d40071450d04200241054b0d014101200274412a71450d01200810b1021a200d10b0021a0c030b200341a02b6a200810ca0220032802a82b210120032802a02b21022003200d360280332002200120034180336a4104109f0220032802a42b450d04200210310c040b200141054b0d024101200174412a71450d020b200241064b0d01410120027441d40071450d01200d10b1021a200810b0021a0b2008200d10cb020b200341a02b6a200d10ca0220032802a02b220220032802a82b10bd0220032802a42b450d00200210310b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2006290300370300200341a02b6a41186a2007290300370300200341a02b6a41106a200e290300370300200341a02b6a41086a200a290300370300200320032903b0023703a02b200341a02b6a109d020d0120034190206a200810cc02200341a02b6a2003280290202202200328029820220810c902200341d8236a41086a220b200341a02b6a41086a290300370300200341d8236a41106a2206200341a02b6a41106a290300370300200341d8236a41186a2207200341a02b6a41186a290300370300200341d8236a41206a220e200341a02b6a41206a290300370300200341d8236a41286a220a200341a02b6a41286a290300370300200320032903a02b3703d823200320032800d12b360280192003200341d42b6a28000036008319410221010240024020032d00d02b4102470d004101210b0c010b20034180336a41286a200a29030037030020034180336a41206a200e29030037030020034180336a41186a200729030037030020034180336a41106a200629030037030020034180336a41086a200b290300370300200320032903d8233703803320032003280280193602b81520032003280083193600bb154100210b410021010b200341d42b6a20032800bb15360000200341a02b6a41286a20034180336a41286a290300370300200341a02b6a41206a20034180336a41206a290300370300200341a02b6a41186a20034180336a41186a290300370300200341a02b6a41106a20034180336a41106a290300370300200341a02b6a41086a20034180336a41086a29030037030020032003290380333703a02b200320013a00d02b200320032802b8153600d12b02400240200b450d002002200810bd020c010b20022008200341a02b6a10cd020b0240200328029420450d00200210310b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b20032d008133210120032d008233210820032d008333210b20002003290284333700242000200b3a0023200020083a0022200020013a002120004200370308200041206a20023a0000200041186a41003a000020004201370300200424000f0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b20004200370308200020032800f011360019200041186a41003a00002000411c6a200341f3116a28000036000020004200370300200424000f0b200141106a28020021092001410c6a280200210d200141086a280200210a2001280204210120034180336a41286a2208200241286a28020036020020034180336a41206a220b200241206a29020037030020034180336a41186a2206200241186a29020037030020034180336a41106a2207200241106a29020037030020034180336a41086a220e200241086a29020037030020032002290200370380330240024002400240024002400240024002402001417f6a0e06000102030405000b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341d0016a200341a02b6a10ce0202400240024020032802d001450d00410221020c010b200341a02b6a20032802d4012201200a200d200910b40220032d00a02b22024107460d0120032d00a32b210b20032d00a22b210820032d00a12b210120032902a42b220f422088a72106200fa721030b200020033600242000200b3a0023200020083a0022200020013a002120004200370308200041286a2006360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200341b42b6a2009360200200341b02b6a200d360200200341ac2b6a200a360200200341a82b6a2001360200200341003602a42b200341093a00a02b200341a02b6a10a902200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341d8016a200341a02b6a10ce0202400240024020032802d801450d00410221020c010b200341a02b6a20032802dc012201200a10b50220032d00a02b22024107460d0120032d00a32b210b20032d00a22b210820032d00a12b210120032902a42b220f422088a72106200fa721030b200020033600242000200b3a0023200020083a0022200020013a002120004200370308200041286a2006360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200341ac2b6a2001360200200341a82b6a200a360200200341013602a42b200341093a00a02b200341a02b6a10a902200041186a41003a00002000420037030820002003280080193600192000411c6a20034183196a28000036000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341e0016a200341a02b6a10ce0220032802e0010d030240024020032802e4012201200a4622080d00410d21022001200d470d010b200341d8236a200a200d10cf02200341a02b6a20032802d823220220032802e02310d00220032d00d42b210b024020032802dc23450d00200210310b410e2102200b41ff01714102460d00200341d8236a200a200d10d102200341a02b6a20032802d823220220032802e02310d2020240024020032802a02b22060d004100210b0c010b4101210b20032802a42b450d00200610310b024020032802dc23450d00200210310b410f2102200b0d00200341a02b6a200a200d10d10220032802a02b220220032802a82b41f8fac9004100109f02024020032802a42b450d00200210310b200341d8096a41186a220b4200370300200341d8096a41106a22064200370300200341d8096a41086a22024200370300200342003703d809200341d8236a419aa7c600410410a7022002200341d8236a41086a290000370300200320032900d8233703d809200341a02b6a41b8d7c600411c10a702200b200341a02b6a41086a2202290000370300200620032900a02b370300200341003602e023200342013703d8232003200a3602a02b200341d8236a200341a02b6a4104107e2003200d3602a02b200341d8236a200341a02b6a4104107e200220032802e023360200200320032903d8233703a02b200341d8096a4120200341a02b6a10a802200341800a6a41186a220b4200370300200341800a6a41106a22064200370300200342003703880a200342003703800a200341c80e6a41b5d8c800410d10a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41cfd8c800410c10a702200b200341800b6a41086a290300370300200620032903800b370300200341a02b6a200341800a6a412010b20220032802f02b210b20032802b02c2106200341a02b6a410c6a2207200d3602002002200a360200200341003602e023200342013703d823200320013602a42b200341093a00a02b200341003a00f011200341d8236a200341f0116a4101107e200341a02b6a200341d8236a10de01200341a02b6a10a301200220032802e023360200200320032903d8233703a02b4100200b20064102461b200d200a20081b200341a02b6a10b3021a200341a02b6a41106a200d3602002007200a36020020022001360200200341023602a42b200341093a00a02b200341a02b6a10a902200341073a00b0020c060b200341b0026a200210d30220032d00b00222024107460d050c040b2003200a3602d823200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d0020004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341d8236a10d402200041186a41003a000020004200370308200020032800f0113600192000411c6a200341f3116a28000036000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d020d00200341800a6a41186a22024200370300200341900a6a22014200370300200342003703880a200342003703800a200341c80e6a41b5d8c800410d10a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41cfd8c800410c10a7022002200341800b6a41086a290300370300200120032903800b370300200341a02b6a200341800a6a412010b202420020032903b82b20032802b02c41024622021b4200200341a02b6a41206a29030020021b410020032802fc2b20021b10d502200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d002000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b10d60220004200370308200041186a41003a0000200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b41022102200341023a00b0020b20032f00b102210120032d00b3022108200020032902b402370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b200228022821082001280204210b024020022d000022010d002002411a6a290100210f200241196a2d00002101200241186a2d00002106200241166a2f01002107200241156a2d0000210e200241146a2d0000210a200241126a2f0100210d200241116a2d00002109200241106a2d000021102002410e6a2f010021112002410d6a2d000021132002410c6a2d000021142002410a6a2f01002115200241096a2d00002116200241086a2d0000211b200241066a2f0100211c200241056a2d00002117200241046a2d00002118200241026a2f0100211920022d0001210220082008280200417f6a221a3602000240201a0d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a221a201a280200417f6a221a360200201a0d00200810310b2003200f3703980a200320013a00970a200320063a00960a200320073b01940a2003200e3a00930a2003200a3a00920a2003200d3b01900a200320093a008f0a200320103a008e0a200320113b018c0a200320133a008b0a200320143a008a0a200320153b01880a200320163a00870a2003201b3a00860a2003201c3b01840a200320173a00830a200320183a00820a200320193b01800a0240200241ff01710d00410321010c010b4110102f2202450d2a200241f8c8c00036020c2002410136020820024281808080103702004110102f2208450d2a200841e0c8c00036020c20084101360208200842818080801037020020022002280200417f6a22063602004100210120060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b024020014103460d0020082008280200417f6a2202360200024020020d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a22022002280200417f6a220236020020020d00200810310b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341023a00a02b2003200b3602a42b20034180336a200341a02b6a10d702200341a02b6a41206a20034180336a41206a280200360200200341a02b6a41186a20034180336a41186a290300370300200341a02b6a41106a20034180336a41106a290300370300200341a02b6a41086a20034180336a41086a29030037030020032003290380333703a02b200341a02b6a10d802200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a00a6a41036a28000036000020004200370300200424000f0b200141186a2802002111200141146a2802002110200141106a280200210b2001410c6a2802002109200141086a28020021082001280204210120034180336a41286a2206200241286a28020036020020034180336a41206a2207200241206a29020037030020034180336a41186a220e200241186a29020037030020034180336a41106a220a200241106a29020037030020034180336a41086a220d200241086a290200370300200320022902003703803302400240024002400240024020010e06000102030405000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a419ca3c6001047000b200320103602d01c2003200b3602cc1c200320093602c81c200341a02b6a41286a2006280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380333703a02b0240200341a02b6a109d020d00200341b0026a200810d902200341a02b6a20032802b002220120032802b80210da02200341800a6a41106a2206200341b12b6a290000370300200341800a6a41186a2207200341b92b6a290000370300200320032900a12b3703800a2003200341a92b6a2900003703880a41002102024020032d00a02b4101470d00200341e0236a20032903880a370300200341d8236a41186a2007290300370300200341d8236a41106a2006290300370300200320032903800a3703d823410121020b024020032802b402450d00200110310b0240024020020d00200341f0096a4200370300200341e8096a4200370300200341e0096a4200370300200342003703d8090c010b200341d8096a41186a200341d8236a41186a290300370300200341d8096a41106a200341d8236a41106a290300370300200341d8096a41086a200341d8236a41086a290300370300200320032903d8233703d8090b200341800a6a20092010109a01200341d8236a41186a2202200341800a6a41186a290300370300200341d8236a41106a2201200341800a6a41106a290300370300200341d8236a41086a220620032903880a370300200320032903800a3703d823200341d8236a200341c81c6a10db021a200341a02b6a41186a2002290300370300200341a02b6a41106a2001290300370300200341a02b6a41086a2006290300370300200320032903d8233703a02b20034190206a200810d902200328029820210120032802902021024120102f2206450d2d200342203702b402200320063602b002200341b0026a200341a02b6a4120107e2002200120032802b002220620032802b802109f02024020032802b402450d00200610310b0240200328029420450d00200210310b200341800a6a41186a22024200370300200341800a6a41106a22014200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a7022002200341800b6a41086a290300370300200120032903800b370300200341b8016a200341800a6a412010c00220032802bc01210220032802b8012101200341a02b6a41186a200341d8096a41186a290300370300200341a02b6a41106a200341d8096a41106a290300370300200341a02b6a41086a2206200341d8096a41086a290300370300200320032903d8093703a02b20082002410020011b22022002200341a02b6a10dc021a20062008360200200341003602a42b200341083a00a02b200341a02b6a10a9020240200b450d00200910310b200042003703082000200328008019360019200041186a41003a00002000411c6a20034183196a28000036000020004200370300200424000f0b0240200b450d00200910310b20004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a41286a2006280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380333703a02b0240200341a02b6a109d020d00200320103602e0232003200b3602dc23200320093602d823200341a02b6a200810dd0220032802a02b220220032802a82b200341d8236a10de02024020032802a42b450d00200210310b0240200b450d00200910310b200341083a00a02b200341a02b6a41086a2008360200200341013602a42b200341a02b6a10a902200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b0240200b450d00200910310b20004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a41286a2006280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380333703a02b0240200341a02b6a109d02450d000240200b450d00200910310b20004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200320103602a82b2003200b3602a42b200320093602a02b2008200341a02b6a201110df02200341083a00a02b200341a02b6a41086a2008360200200341023602a42b200341a02b6a10a902200041186a41003a000020004200370308200020032800f0113600192000411c6a200341f3116a28000036000020004200370300200424000f0b200341a02b6a41286a2006280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380333703a02b0240200341a02b6a109d020d00200341800a6a41186a22024200370300200341900a6a22014200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a7022002200341800b6a41086a290300370300200120032903800b370300200341c0016a200341800a6a412010c00220032802c401210220032802c0012101200320103602a82b2003200b3602a42b200320093602a02b2008200341a02b6a2002410020011b10e002200341a02b6a41086a2008360200200341083a00a02b200341033602a42b200341a02b6a10a902200041186a41003a000020004200370308200020032800f9093600192000411c6a200341f9096a41036a28000036000020004200370300200424000f0b0240200b450d00200910310b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200341a02b6a41286a2006280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380333703a02b0240024002400240024002400240200341a02b6a109d020d00200341f0096a22024200370300200341e8096a22014200370300200341d8096a41086a220b4200370300200342003703d809200341d8236a41b490c700410b10a702200b200341d8236a41086a290000370300200320032900d8233703d809200341a02b6a41c892c700411310a7022002200341a02b6a41086a2206290000370300200120032900a02b370300200341c8016a200341d8096a412010c00241002102200341b0026a417f20032802cc01410020032802c8011b220141016a220b200b2001491b220d10e102200341a02b6a20032802b00220032802b80210e202024020032802a02b220b0d004104210b410021024100210e0c040b20032802a42b210e02402006280200220a0e020302000b41002102200a2101034020022001410176220620026a22072008200b20074102746a280200491b2102200120066b220141014b0d000c020b0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b2008200b20024102746a2802002201460d03200a2002200820014b6a22024f0d002002200a1048000b200a200e470d010b200e41016a2201200e490d09200e41017422062001200620014b1b22014104200141044b1b220141ffffffff037120014641027421062001410274210102400240200e0d00200341003602a02b0c010b200341a82b6a41043602002003200b3602a02b2003200e4102743602a42b0b200341d8236a20012006200341a02b6a104e200341e0236a280200210120032802d8234101460d0220032802dc23210b200e210a2001410276210e0b200b20024102746a220141046a2001200a20026b41027410c0091a20012008360200200a41016a210a0b200341a82b6a200a3602002003200e3602a42b2003200b3602a02b02400240200b0d0020032802b002220220032802b80210bd020c010b20032802b0022102200320032802b8023602dc23200320023602d823200341a02b6a200341d8236a10e302200b450d00200e41ffffffff0371450d00200b10310b024020032802b402450d00200210310b200341ac2b6a200d360200200341083a00a02b200341a02b6a41086a2008360200200341043602a42b200341a02b6a10a902200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b20010d280c060b200341d8236a41286a200241286a280200360200200341d8236a41206a200241206a290200370300200341d8236a41186a200241186a290200370300200341d8236a41106a200241106a290200370300200341d8236a41086a200241086a290200370300200320022902003703d823200341a02b6a200141046a41940110bf091a20034180336a200341d8236a200341a02b6a10e40202402003290380334201520d0020032003280099333602e00a200320034180336a411c6a2800003600e30a20034180336a41206a280200210220034180336a412c6a280200210120034180336a41106a290300210f20032902a433210c2003290388332105200041186a20034180336a41186a2d00003a0000200041106a200f37030020002005370308200020032802e00a3600192000411c6a20032800e30a3600002000412c6a2001360200200041246a200c370200200041206a200236020020004201370300200424000f0b20032003280099333602e00a200320034180336a411c6a2800003600e30a20034180336a41106a290300210f200329038833210c200041186a20034180336a41186a2d00003a0000200041106a200f3703002000200c370308200020032802e00a3600192000411c6a20032800e30a36000020004200370300200424000f0b200141186a290300210c200141106a290300210f2001410c6a280200210a200141086a280200210e20034180336a41286a2201200241286a28020036020020034180336a41206a2208200241206a29020037030020034180336a41186a220b200241186a29020037030020034180336a41106a2206200241106a29020037030020034180336a41086a2207200241086a290200370300200320022902003703803302400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200e0e29000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728000b200341b42b6a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a41e4d8c8001047000b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10e502200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10e602200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10e702200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10e802200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10e902200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10ea02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10eb02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10ec02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b4102210202400240200341a02b6a109d020d00200a0d01410321020b200041e0d7c8003600242000410e3b002120004200370308200041286a410f360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200a10ed02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b4102210202400240200341a02b6a109d020d00200a0d01410321020b200041e0d7c8003600242000410e3b002120004200370308200041286a410f360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200a10ee02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b4102210202400240200341a02b6a109d020d00200a0d01410321020b200041e0d7c8003600242000410e3b002120004200370308200041286a410f360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200a10ef02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f002200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b2003200f3e02dc232003200a3602d823200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d00200341c81c6a41026a20034190206a41026a2d000022023a0000200320032f00902022013b01c81c200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341d8236a10f102200041186a41003a000020004200370308200020032800b0023600192000411c6a200341b3026a28000036000020004200370300200424000f0b2003200f3e02dc232003200a3602d823200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d00200341c81c6a41026a20034190206a41026a2d000022023a0000200320032f00902022013b01c81c200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341d8236a10f202200041186a41003a000020004200370308200020032800b0023600192000411c6a200341b3026a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f302200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f402200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f502200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f602200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b4102210202400240200341a02b6a109d020d00200a0d01410321020b200041e0d7c8003600242000410e3b002120004200370308200041286a410f360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200a10f702200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f802200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10f902200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10fa02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10fb02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10fc02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10fd02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a10fe02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200f10ff02200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a108003200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a108103200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a108203200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b2003200c3703e0232003200f3703d823200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d00200341c81c6a41026a20034190206a41026a2d000022023a0000200320032f00902022013b01c81c200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341d8236a108303200041186a41003a000020004200370308200020032800b0023600192000411c6a200341b3026a28000036000020004200370300200424000f0b2003200c3703e0232003200f3703d823200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d00200341c81c6a41026a20034190206a41026a2d000022023a0000200320032f00902022013b01c81c200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200341d8236a108403200041186a41003a000020004200370308200020032800b0023600192000411c6a200341b3026a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a108503200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020034190206a41026a200341b0026a41026a2d000022023a0000200320032f00b00222013b019020200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a000020004201370300200424000f0b200a108603200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108703200041186a41003a000020004200370308200020032800d8233600192000411c6a200341db236a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108803200041186a41003a00002000420037030820002003280080193600192000411c6a20034183196a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108903200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d0020004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108a03200041186a41003a000020004200370308200020032800f0113600192000411c6a200341f3116a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d002000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108b03200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2008290300370300200341a02b6a41186a200b290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200729030037030020032003290380333703a02b0240200341a02b6a109d02450d002000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b200a108c03200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b200141246a280200210b2001411c6a2802002108200141186a2802002106200141146a2802002107200141106a280200210d2001410c6a280200210e200141086a280200210a200341a02b6a41286a200241286a280200360200200341a02b6a41206a200241206a290200370300200341a02b6a41186a200241186a290200370300200341a02b6a41106a200241106a290200370300200341a02b6a41086a200241086a290200370300200320022902003703a02b024002400240200341a02b6a108d03450d004200210f4102210b4200210c0c010b200341800a6a41186a22024200370300200341800a6a41106a22014200370300200342003703880a200342003703800a200341c80e6a41d7b2c800410710a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41b0ffc100410c10a7022002200341800b6a41086a290300370300200120032903800b370300200341b0016a200341800a6a412010c002200341a02b6a20032802b401410020032802b0011b2210200b108e0320032802a02b220220032802a82b108f032101024020032802a42b450d00200210310b200341b0026a1090032001417f7320032802b0022209200b4105746a410020032802b802200b4b1b2202410047710d01024020032802b40241ffffff3f71450d00200910310b4280808080b0024280808080a00120011b210c41b0aac500ad41a6aac500ad20011b210f4103210b0b0240200e450d00200a10310b02402008450d002008410c6c21032007210203400240200241046a280200450d00200228020010310b2002410c6a2102200341746a22030d000b0b02402006450d002006410c6c450d00200710310b200020013a00222000410b3a0021200042003703082000200c200f84370024200041206a200b3a0000200041186a41003a000020004201370300200424000f0b200241086a290000210f200241106a290000210c20022900002105200341d8096a41186a200241186a2900002212370300200341d8096a41106a200c370300200341d8096a41086a200f370300200320053703d809200341ad2b6a200f370000200341b52b6a200c370000200341bd2b6a2012370000200341003a00a42b200341063a00a02b200320053700a52b200341a02b6a10a902200341003602e023200342013703d823200a200d200341d8236a10ce01200341d8236a200810cb0102402008450d0020072008410c6c6a21012007210203402002280200200241086a280200200341d8236a10ce012002410c6a22022001470d000b0b20034180336a2010200b108e0320032802e023220241046a2201417f4c0d0320032802d823210b2003280288332110200328028033210d02400240024002400240024020010d00200341003602a82b200342013703a02b0c010b2001102f2211450d2a200341003602a82b200320013602a42b200320113602a02b200241c000490d01200241808001490d022002418080808004490d030b200341033a009020200341a02b6a20034190206a4101107e2003200236029020200341a02b6a20034190206a4104107e0c030b200320024102743a00f011200341a02b6a200341f0116a4101107e0c020b200320024102744101723b019020200341a02b6a20034190206a4102107e0c010b2003200241027441027236029020200341a02b6a20034190206a4104107e0b200341a02b6a200b2002107e200d201020032802a02b220220032802a82b109f02024020032802a42b450d00200210310b0240200328028433450d00200d10310b024020032802dc23450d00200b10310b024020032802b40241ffffff3f71450d00200910310b0240200e450d00200a10310b02402008450d002008410c6c21012007210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b02402006450d002006410c6c450d00200710310b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b2001411c6a2802002111200141186a280200210d200141146a280200210a200141106a28020021092001410c6a2802002110200141086a2802002108200341d8236a200141206a41800210bf091a20034190206a41286a2201200241286a28020036020020034190206a41206a220b200241206a29020037030020034190206a41186a2206200241186a29020037030020034190206a41106a2207200241106a29020037030020034190206a41086a220e200241086a2902003703002003200229020037039020024002400240024020080e0400010203000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a41a4eac4001047000b20034180336a200341d8236a41800210bf091a200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290390203703a02b200341c81c6a200341a02b6a109e02200341800a6a41106a200341d91c6a2202290000370300200341800a6a41186a200341e11c6a2201290000370300200320032900c91c3703800a2003200341d11c6a22082900003703880a02400240024020032d00c81c4101470d00200341d0026a41023a0000200341c8026a41003a0000200342003703b802200342013703b0020240200d450d00200d410c6c21012009210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b0240200a450d00200a410c6c450d00200910310b200341b8026a210241002101410221080c010b200341d8096a41086a20032903880a220f370300200341d8096a41186a200341800a6a41186a290300220c370300200341d8096a41106a200341800a6a41106a2903002205370300200320032903800a22123703d8092001200c370000200220053700002008200f370000200320123700c91c200341013a00c81c200341a02b6a20034180336a41800210bf091a2003418c196a200d36020020034180196a41086a200a360200200320113602901920032009360284192003201036028019200341b0026a200341c81c6a200341a02b6a20034180196a10910320032903b0024201520d01200341b0026a41086a2102200341d0026a2d0000210820032d00c80221010b200320022800113602c00a2003200241146a2800003600c30a20022f0019210b20022d001b2106200229001c210f2002280224210220032903b802210c20032903c0022105200041186a20013a0000200041106a20053703002000200c370308200020032802c00a3600192000411c6a20032800c30a3600002000412c6a20023602002000200f370024200020063a00232000200b3b0021200041206a20083a000020004201370300200424000f0b200320032800c9023602c00a2003200341b0026a411c6a2800003600c30a20032903b802210f20032903c002210c200041186a20032d00c8023a0000200041106a200c3703002000200f370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b20034180336a200341d8236a41800210bf091a200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290390203703a02b024002400240200341a02b6a108d03450d00200341d0026a41023a0000200341c8026a41003a0000200342003703b802200342013703b0020240200d450d00200d410c6c21012009210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b0240200a450d00200a410c6c450d00200910310b200341b8026a210241002101410221080c010b200341a02b6a109203200341e11c6a200341a02b6a41186a290300370000200341d91c6a200341a02b6a41106a290300370000200341d11c6a200341a02b6a41086a290300370000200341013a00c81c200320032903a02b3700c91c200341a02b6a20034180336a41800210bf091a2003418c196a200d36020020034180196a41086a200a360200200320113602901920032009360284192003201036028019200341b0026a200341c81c6a200341a02b6a20034180196a10910320032903b0024201520d01200341b0026a41086a2102200341d0026a2d0000210820032d00c80221010b200320022800113602e00a2003200241146a2800003600e30a20022f0019210b20022d001b2106200229001c210f2002280224210220032903b802210c20032903c0022105200041186a20013a0000200041106a20053703002000200c370308200020032802e00a3600192000411c6a20032800e30a3600002000412c6a20023602002000200f370024200020063a00232000200b3b0021200041206a20083a000020004201370300200424000f0b200320032800c9023602e00a2003200341b0026a411c6a2800003600e30a20032903b802210f20032903c002210c200041186a20032d00c8023a0000200041106a200c3703002000200f370308200020032802e00a3600192000411c6a20032800e30a36000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290390203703a02b0240200341a02b6a109d020d00200341980a6a22024200370300200341900a6a22014200370300200342003703880a200342003703800a200341c80e6a41b4eac400410f10a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41c3eac400410710a7022002200341800b6a41086a290300370300200120032903800b3703004108102f2202450d25200342083702a42b200320023602a02b2003201036028033200341a02b6a20034180336a4104107e2003200936028033200341a02b6a20034180336a4104107e200341800a6a412020032802a02b220220032802a82b109f02024020032802a42b450d00200210310b200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b2000420037002420004200370308200041206a41023a0000200041186a41003a000020004201370300200424000f0b20012d00042108200341f0116a200141056a41e10110bf091a200141ec016a280100210d200141e8016a2801002109200341800b6a41286a2201200241286a280200360200200341800b6a41206a220b200241206a290200370300200341800b6a41186a2206200241186a290200370300200341800b6a41106a2207200241106a290200370300200341800b6a41086a220e200241086a290200370300200320022902003703800b02400240024002400240024020080e03000102000b200341b42b6a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341dcd8c8003602c81c2003200341c81c6a3602b02b200341a02b6a41dce7c1001047000b200341b8156a200341f0116a41e10110bf091a200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903800b3703a02b20034180336a200341a02b6a109e02200341c80e6a41086a20034180336a41096a290000370300200341c80e6a41106a20034180336a41116a290000370300200341c80e6a41186a20034199336a29000037030020032003290081333703c80e024020032d0080334101470d00410221020c040b200341e00a6a41186a2202200341c80e6a41186a2201290300370300200341e00a6a41106a200341c80e6a41106a290300370300200341e00a6a41086a200341c80e6a41086a290300370300200320032903c80e3703e00a20034180196a200341b8156a41e10110bf091a200341c80e6a41096a200341e00a6a41096a290000370000200341c80e6a41116a200341e00a6a41116a29000037000020012002290000370000200320032d00e00a3a00c80e200320032900e10a3700c90e20034180336a200341e00a6a109303200341a02b6a2003280280332201200328028833109403200341f02b6a280200210220032903a02b210f0240200328028433450d00200110310b02400240200f4201520d0020020d010b200341a02b6a41051095030c020b200341b0026a20034180196a41e10110bf091a200341c00a6a200341c80e6a109603200341a02b6a20032802c00a220120032802c80a10970320032d00a02b2102200341d8236a200341a02b6a41017241e10110bf091a0240024020024101460d00200341003a0080330c010b200341013a00803320034180336a410172200341d8236a41e10110bf091a0b024020032802c40a450d00200110310b41642101200341a02b6a410172220241086a21070340200341f0006a200341b0026a200141f3c6c0006a280000220810d301200320032903703702dc23200320083602d823200341c00a6a200341d8236a109803200341a02b6a20032802c00a220820032802c80a10aa02200341800a6a41106a220b200241106a290000370300200341800a6a41186a2206200241186a290000370300200320022900003703800a200320072900003703880a02400240024020032d00a02b4101470d00200341d8096a41086a220e20032903880a370300200341d8096a41186a220a2006290300370300200341d8096a41106a2206200b290300370300200320032903800a3703d809024020032802c40a450d00200810310b200341a02b6a41186a200a290300370300200341a02b6a41106a2006290300370300200341a02b6a41086a200e290300370300200320032903d8093703a02b200341a02b6a200341c80e6a412010c2090d010c020b20032802c40a450d01200810310c010b200341a02b6a410310950320034190206a410a6a200341a82b6a2202280200360000200320032903a02b37009220200341c81c6a20034190206a41e10110bf091a2002200341c81c6a410a6a280000360200200320032900ca1c3703a02b0c030b200141046a22010d000b20034180336a410172210e416421020340200341e8006a200341b0026a200241f3c6c0006a280000220110d301200328026c21082003280268210b0240024020032d0080334101470d00200341e0006a200e200110d30120032802602206450d000240200820032802642207470d00200b2006200810c209450d020b200320073602a82b200320063602a42b200320013602a02b200341d8236a200341a02b6a10980320032802d823220620032802e02310bd0220032802dc23450d00200610310b200320083602a82b2003200b3602a42b200320013602a02b200341d8236a200341a02b6a10980320032802d823210120032802e02321084120102f220b450d29200342203702a42b2003200b3602a02b200341a02b6a200341c80e6a4120107e2001200820032802a02b220b20032802a82b109f02024020032802a42b450d00200b10310b20032802dc23450d00200110310b200241046a22020d000b200341d8236a200341c80e6a10960320032802e023210120032802d8232102200341003602a82b200342013703a02b200341a02b6a200341b0026a4120107e200341a02b6a200341b0026a41206a4120107e200341a02b6a200341f0026a4120107e200341a02b6a20034190036a4120107e200341a02b6a200341b0036a4120107e200341a02b6a200341d0036a4120107e200341a02b6a200341f0036a4121107e2002200120032802a02b220820032802a82b109f02024020032802a42b450d00200810310b024020032802dc23450d00200210310b024020032d0080330d0020034180336a200341e00a6a109303200341a02b6a20032802803322022003280288332201109403024020032903a02b4201520d00200341f02b6a220b2802002206450d00200341b82b6a2207290300210f200341b02b6a220e290300210c200341d82b6a220a2903002105200341d02b6a22102903002112200341c02b6a2211290300211e200341e02b6a22132903002123200341e82b6a2214280200211520032903a82b212420032802ec2b210820032802f42b2116200341c82b6a221b201b2903003703002011201e370300200e200c370300200341f42b6a2016360200200b20063602002014201536020020132023370300201020123703002007200f370300200a2005370300200341ec2b6a417f200841016a220b200b2008491b360200200320243703a82b200342013703a02b20022001200341a82b6a1099030b200328028433450d00200210310b41072102200341073a00a02b0c020b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903800b3703a02b20034180336a200341a02b6a109e02200341800a6a41106a20034180336a41116a290000370300200341800a6a41186a20034199336a29000037030020032003290081333703800a200320034180336a41096a2900003703880a02400240024002400240024020032d0080334101460d00200341d01c6a20032903880a370300200341c81c6a41186a200341800a6a41186a290300220f370300200341c81c6a41106a200341800a6a41106a290300370300200320032903800a220c3703c81c20034190206a41096a200341c81c6a41096a29000037000020034190206a41116a200341c81c6a41116a29000037000020034190206a41186a200f3700002003200c3c009020200320032900c91c3700912020034180196a20034190206a109603200341a02b6a20032802801922022003280288192208109703024020032d00a02b2201450d002002200810bd020b20032d00a12b2108200341d8236a200341a02b6a41027241e00110bf091a024020014101470d00200341b0026a200341d8236a41e00110bf091a0240200328028419450d00200210310b200320083a00803320034180336a410172200341b0026a41e00110bf091a200341a8016a20034180336a41e7e485f30610d301200320032903a8013702a42b200341e7e485f3063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b200341a0016a20034180336a41e2c289ab0610d301200320032903a0013702a42b200341e2c289ab063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b20034198016a20034180336a41e9dabdf30610d30120032003290398013702a42b200341e9dabdf3063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b20034190016a20034180336a41f0c2c98b0610d30120032003290390013702a42b200341f0c2c98b063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b20034188016a20034180336a41e1e69df30610d30120032003290388013702a42b200341e1e69df3063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b20034180016a20034180336a41e1ea91cb0610d30120032003290380013702a42b200341e1ea91cb063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b200341f8006a20034180336a41e2ca95b30610d301200320032903783702a42b200341e2ca95b3063602a02b200341d8236a200341a02b6a10980320032802d823220220032802e02310bd02024020032802dc23450d00200210310b200341d8236a200341c81c6a109303200341a02b6a20032802d823220220032802e023220110940320032903a02b4201520d03200341b82b6a290300210f200341b02b6a290300210c200341d82b6a2903002105200341d02b6a2903002112200341c82b6a290300211e200341c02b6a2903002123200341e02b6a2903002124200341e82b6a280200210b200341f02b6a280200210620032903a82b212520032802f42b210720032802ec2b2208450d042008417f6a21080c050b0240200328028419450d00200210310b200341b8156a410410950320032d00b81522024107460d0520032d00b915210120032d00ba15210820032d00bb15210b20032902bc15210f0c010b410221020b2000200f3700242000200b3a0023200020083a0022200020013a002120004200370308200041206a20023a0000200041186a41003a000020004201370300200424000f0b420021244100210b420021234200211e4200211242002105420021254200210c4200210f41002106410021070b4100210841002802809a4a450d004100210841002802fc994a210241002802f8994a210141002802849a4a210e200341e02b6a41b909360200200341d82b6a42db80808010370300200341d42b6a41e3d2c800360200200341cc2b6a420c370200200341c82b6a41d3e2c800360200200341c02b6a4200370300200341bc2b6a41f8fac900360200200341b02b6a4201370300200341a82b6a410f360200200341ec8dc5003602ac2b200341c4e2c8003602a42b200341013602a02b200141f8fac900200e410246220e1b200341a02b6a20024180a6c000200e1b28021011030020032802d823210220032802e02321010b200341c82b6a201e370300200341c02b6a2023370300200341b02b6a200c370300200341f42b6a2007360200200341f02b6a2006360200200341ec2b6a2008360200200341e82b6a200b360200200341e02b6a2024370300200341d02b6a2012370300200341b82b6a200f370300200341d82b6a2005370300200320253703a82b200342013703a02b20022001200341a82b6a10990320032802dc23450d00200210310b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b20032d00a02b21020b0240200241ff01714107460d0020032d00a12b210120032d00a22b210820032d00a32b210b20032902a42b210f0c010b0240200d450d00200910310b20004200370308200020032800f909360019200041186a41003a00002000411c6a200341fc096a28000036000020004200370300200424000f0b0240200d450d00200910310b2000200f3700242000200b3a0023200020083a0022200020013a002120004200370308200041206a20023a0000200041186a41003a000020004201370300200424000f0b2001410c6a2802002107200141086a280200210d20012802042106200341a02b6a41286a200241286a280200360200200341a02b6a41206a200241206a290200370300200341a02b6a41186a200241186a290200370300200341a02b6a41106a200241106a290200370300200341a02b6a41086a200241086a290200370300200320022902003703a02b024002400240024002400240024002400240200341a02b6a108d030d0002402007410a4d0d00200341c00a6a4103109a030c030b200341d8096a41186a22014200370300200341d8096a41106a22174200370300200341d8096a41086a22024200370300200342003703d809200341d8236a41fba2c600410a10a7022002200341d8236a41086a220b290000370300200320032900d8233703d809200341a02b6a41a8bbc600410c10a7022001200341a02b6a41086a220e290000370300201720032900a02b3703000240200341d8096a109b03220841ff01714102460d002008410171450d00200341c00a6a4102109a030c020b200142003703002017420037030020024200370300200342003703d809200341d8236a41fba2c600410a10a7022002200b290000370300200320032900d8233703d809200341a02b6a41a8bbc600410c10a702201741086a200e290000370000201720032900a02b370000200341013a00f011200341d8096a4120200341f0116a4101109f02200341800a6a41186a22024200370300200341800a6a41106a22184200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a7022002200341800b6a41086a290300370300201820032903800b370300200341d8006a200341800a6a412010c00220032802582108200328025c210b200341e00a6a109c0302400240024020032802e80a220220032802e40a2215470d00200241016a22012002490d0c2002410174220e2001200e20014b1b22014104200141044b1bad42c4007e220f422088a7454102742101200fa7210e0240024020020d00200341003602a02b0c010b200341a82b6a4104360200200320032802e00a3602a02b2003200241c4006c3602a42b0b20034180336a200e2001200341a02b6a104e20034188336a28020021012003280280334101460d0120032003280284333602e00a2003200141c4006e22153602e40a0b20032802e00a2219200241c4006c6a220141003a0000200120032f01d8093b00012001200b410020081b360204200141036a200341d8096a41026a22202d00003a00002003200241016a22103602e80a2006200741f0006c22026a212220070d01200621080c080b20010d2c0c0a0b200641f4006a210b200241907f6a210e200341c81c6a410372211b200341d8236a4101722111200341a02b6a41106a2126200341a02b6a41086a211f200341800a6a41186a21132006210803402008280204211620082802002109200341a02b6a200841086a41e80010bf091a200841f0006a21082016450d0720034180336a200341a02b6a41e80010bf091a200320163602a42b200320093602a02b201f20034180336a41e80010bf091a20134200370300200341800a6a41106a22144200370300200342003703880a200342003703800a200341c80e6a41f3c6c000410610a7022003200341c80e6a41086a221c2903003703880a200320032903c80e3703800a200341800b6a41ec90c900410610a702201841086a200341800b6a41086a290300370300201820032903800b370300200341d0006a200341800a6a412010c002200328025021022003280254210120034190206a200341a02b6a109d03024020090d00200341d8236a4104109a03200341da096a200341e3236a2d00003a00002003200341e1236a2f00003b01d8090c070b024020092001410020021b22024d0d00200341d8236a4105109a03200341da096a200341e3236a2d00003a00002003200341e1236a2f00003b01d8090c070b200341c81c6a2009417f6a109e03200341d8236a20032802c81c220a20032802d01c10da0220032d00d82321012013201141186a221a2900003703002014201141106a221d2900003703002003201141086a22212900003703880a200320112900003703800a0240024020014101460d00200341b0026a41186a4200370300200341b0026a41106a4200370300200341b0026a41086a4200370300200342003703b0020c010b200341b0026a41086a20032903880a370300200341b0026a41186a2013290300370300200341b0026a41106a2014290300370300200320032903800a3703b0020b024020032802cc1c450d00200a10310b0240200341b0026a2026412010c209450d00200341d8236a4101109a03200341da096a200341e3236a2d00003a00002003200341e1236a2f00003b01d8090c070b0240200920024f0d00200341d8236a4107109a03200341da096a200341e3236a2d00003a00002003200341e1236a2f00003b01d8090c070b024002402010450d00201041c4006c2101201921020340024020022d00004101470d004101210a200241016a20034190206a412010c209450d030b200241c4006a2102200141bc7f6a22010d000b0b4100210a0b200341c81c6a2009109e03200341d8236a20032802c81c220120032802d01c10da0220032d00d82321022013201a2900003703002014201d290000370300200320212900003703880a200320112900003703800a0240024020024101460d00200341b0026a41186a4200370300200341b0026a41106a4200370300200341b0026a41086a4200370300200342003703b0020c010b200341b0026a41086a20032903880a370300200341b0026a41186a2013290300370300200341b0026a41106a2014290300370300200320032903800a3703b0020b024020032802cc1c450d00200110310b0240200a417f73200341b0026a20034190206a412010c209410047710d00200341d8236a4106109a03200341da096a200341e3236a2d00003a00002003200341e1236a2f00003b01d8090c070b20034190026a41026a20202d000022023a000020034180196a41086a200341f0116a41086a2201290200220f37030020034180196a41106a200341f0116a41106a2f0100220a3b0100200320032f01d80922093b019002200320032902f011220c37038019201b41106a200a3b0000201b41086a200f370000201b200c370000200320023a00ca1c200320093b01c81c200341b8156a410d6a2202200341c81c6a410d6a290000370000200341b8156a41086a220a200341c81c6a41086a290300370300200320032903c81c3703b815200341b0026a200341a02b6a109d03200341d8236a41186a4200370300200341d8236a41106a4200370300200341d8236a41086a4200370300200342003703d823200341d8236a109f03201c200341b0026a41086a290300370300200341c80e6a41106a2209200341b0026a41106a290300370300200341c80e6a41186a2214200341b0026a41186a2903003703002001200a290300370300200341f0116a410d6a220a2002290000370000200320032903b0023703c80e200320032903b8153703f011024020102015470d0020152015470d00201541016a22022015490d0b201541017422162002201620024b1b22024104200241044b1bad42c4007e220f422088a7454102742102200fa721160240024020150d00200341003602d8230c010b200341043602e023200320193602d8232003201541c4006c3602dc230b20034190206a20162002200341d8236a104e20032802982021022003280290204101460d06200320032802942022193602e00a2003200241c4006e22153602e40a0b2019201041c4006c6a220241013a0000200241096a201c290300370000200220032903c80e3700012014290300210f2009290300210c200241003a0021200241116a200c370000200241196a200f370000200220032903f01137002d2002413a6a200a290000370000200241356a2001290300370000200320032802e80a41016a22103602e80a20032802a42b210a024020032802ac2b2202450d00200241246c2101200a210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b024020032802a82b2202450d00200241246c450d00200a10310b200e41907f6a210e200b41f0006a210b20082022470d000c080b0b200341023a00c00a0b2007450d010b2006200741f0006c6a210b200621020340024020022208410c6a2802002201450d0020082802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200841f0006a21020240200841086a2802002201450d00200141246c450d00200828020410310b2002200b470d000b0b200d450d04200d41f0006c450d04200610310c040b20020d260c040b20032800dd23210220032800d923210120032d00d8232107200341c90a6a20032f01d8093b0000200341cb0a6a200341da096a2d00003a0000200320023600c50a200320013600c10a200320073a00c00a024020032802ac2b2202450d00200241246c21012016210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b024020032802a82b2202450d00200241246c450d00201610310b024020222008460d000340200b109a020240200b41046a2802002202450d00200241246c450d00200b28020010310b200b41f0006a210b200e41907f6a220e0d000b0b0240200d450d00200d41f0006c450d00200610310b20032802e40a2202450d02200241c4006c450d0220032802e00a10310c020b20222008460d002006200741f0006c6a210b03402008220241046a2201109a02200241f0006a21080240200241086a2802002202450d00200241246c450d00200128020010310b200b2008470d000b0b0240200d450d00200d41f0006c450d00200610310b200341f0096a4200370300200341e8096a4200370300200341d8096a41086a22024200370300200342003703d809200341d8236a41fba2c600410a10a7022002200341d8236a41086a290000370300200320032900d8233703d809200341a02b6a4185a3c600410610a702201741086a200341a02b6a41086a290000370000201720032900a02b370000201041c4006c41046a2202417f4c0d0120032802e00a21010240024020020d00410121080c010b2002102f2208450d240b200341003602a82b200320023602a42b200320083602a02b200341a02b6a201010cb0120012010200341a02b6a10c901200341d8096a412020032802a02b220220032802a82b109f02024020032802a42b450d00200210310b200341073a00c00a20032802e40a2202450d00200241c4006c450d00200110310b024020032d00c00a22024107460d0020032f00c10a210120032d00c30a2108200020032902c40a370024200020083a0023200020013b0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000f0b20004200370308200020032800a00a360019200041186a41003a00002000411c6a200341a30a6a28000036000020004200370300200424000f0b103b000b200341c80e6a41026a22062001410f6a2d00003a000020034180196a41086a2207200141206a29020037030020034180196a41106a220e200141286a290200370300200320012f000d3b01c80e2003200141186a29020037038019200141c8006a2903002112200141c0006a2903002105200141e0006a290300211e200141d8006a29030021232001410c6a2d0000210b200141086a280200210a200141106a2802002113200141146a2802002108200141d0006a2903002124200141306a290300210f200141386a290300210c200341b0026a41286a2201200241286a280200360200200341b0026a41206a220d200241206a290200370300200341b0026a41186a2209200241186a290200370300200341b0026a41106a2210200241106a290200370300200341b0026a41086a2211200241086a290200370300200320022902003703b002024002400240024002400240024002400240024002400240200a0e050001020304000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341a484c4003602c81c2003200341c81c6a3602b02b200341a02b6a41f4fec3001047000b200341800b6a41026a20062d00003a000020034190206a41086a200729030037030020034190206a41106a200e290300370300200320032f01c80e3b01800b200320032903801937039020200341a02b6a41286a2001280200360200200341a02b6a41206a200d290300370300200341a02b6a41186a2009290300370300200341a02b6a41106a2010290300370300200341a02b6a41086a2011290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d809410121020240024002400240024020032d0080334101460d00200341d8236a41186a200341d8096a41186a290300370300200341d8236a41106a200341d8096a41106a290300370300200341d8236a41086a200341d8096a41086a290300370300200320032903d8093703d823200341b8156a41026a2201200341800b6a41026a2d00003a0000200320032f01800b3b01b81520034180336a41086a220620034190206a41086a29030037030020034180336a41106a20034190206a41106a290300370300200320032903902037038033024002400240200b0e03000201020b200341f0116a41026a20012d00003a0000200341c81c6a41086a2006290300370300200341c81c6a410d6a20034180336a410d6a290000370000200320032f01b8153b01f01120032003290380333703c81c410021020c010b2008450d00201310310b200341930a6a200341c81c6a41086a290300370000200341800a6a41186a200341d51c6a290000370000200320032f01f0113b01800a200320083600870a200320133600830a200320032903c81c37008b0a2003200341f0116a41026a2d00003a00820a20020d01200341a82b6a20032903880a370300200341a02b6a41186a200341800a6a41186a290300370300200341a02b6a41106a200341800a6a41106a290300370300200320032903800a3703a02b20034180336a200341d8236a200341a02b6a200f200c410110a00320032d00803322024107460d0420032d008333210120032d008233210820032d008133210b200329028433220f42808080807083210c0c030b410221024200210f200b4102470d012008450d01201310310c010b4200210f410121020b4200210c0b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a200c42808080807083200f42ffffffff0f8384370200200020013a0023200020083a00222000200b3a0021200041206a20023a000020004201370300200424000f0b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200341800b6a41026a20062d00003a0000200341c81c6a41086a2007290300370300200341c81c6a41106a200e290300370300200320032f01c80e3b01800b20032003290380193703c81c200341a02b6a41286a2001280200360200200341a02b6a41206a200d290300370300200341a02b6a41186a2009290300370300200341a02b6a41106a2010290300370300200341a02b6a41086a2011290300370300200320032903b0023703a02b0240024002400240200341a02b6a109d020d00200341d8236a41026a2201200341800b6a41026a2d00003a0000200341a02b6a41086a2206200341c81c6a41086a290300370300200341a02b6a41106a200341c81c6a41106a290300370300200320032f01800b3b01d823200320032903c81c3703a02b41012102024002400240200b0e03000201020b200341b8156a41026a20012d00003a000020034180336a41086a200629030037030020034180336a410d6a200341a02b6a410d6a290000370000200320032f01d8233b01b815200320032903a02b37038033410021020c010b2008450d00201310310b200341930a6a20034180336a41086a290300370000200341800a6a41186a22012003418d336a290000370000200320032f01b8153b01800a200320083600870a200320133600830a200320032903803337008b0a2003200341b8156a41026a2d00003a00820a20020d0120034190206a41086a20032903880a37030020034190206a41186a200129030037030020034190206a41106a200341800a6a41106a290300370300200320032903800a3703902020034180336a20034190206a109303200341a02b6a20032802803322082003280288331094032012200c7c2005200f7c2227200554ad7c212820032903a02b4201510d0220034190246a420037030020034188246a420037030020034180246a4200370300200341f8236a4200370300200341f0236a4200370300200341d8236a41106a4200370300200341d8236a41086a4200370300200342003703d82342002129420021244200212a4200212b4200212c420021234200211e420021254200212d4200212e4200212f420021300c030b41022102200b4102470d0b2008450d0b201310310c0b0b410121020c0a0b200341d8236a41306a200341d82b6a290300222c370300200341d8236a41286a200341a02b6a41306a290300222b370300200341d8236a41206a200341a02b6a41286a290300222a370300200341d8236a41106a200341b82b6a2903002225370300200320032903a82b22233703d8232003200341a02b6a41206a29030022243703f0232003200341a02b6a41106a290300221e3703e0232003200341e02b6a290300222937039024202a212d202b212e2023212f201e21300b202850210220274280c8afa0255421010240200328028433450d00200810310b2001410020021b210202400240202f2030844200520d00202d20032903e82384202e200341f0236a29030084844200520d0020032903882420034190246a2903008450450d0042002127410021010c010b42012127410121010b4200200c20021b210c4200200f20021b210f024020274201510d004200212a4200212b4200212c420021294200212542002124420021234200211e0b4200201220021b21124200200520021b210502400240200f202358200c201e58200c201e5122021b0d002003200f20237d3703a02b2003200c201e7d200f202354ad7d3703a82b200341a02b6a10a1030c010b200f20235a200c201e5a20021b0d0020032023200f7d3703a02b2003201e200c7d2023200f54ad7d3703a82b2003200341a02b6a3602b815200341b8156a10a2030b0240024020052025582012202458201220245122021b0d002003200520257d3703a02b2003201220247d2005202554ad7d3703a82b200341a02b6a10a1030c010b200520255a201220245a20021b0d002003202520057d3703a02b2003202420127d2025200554ad7d3703a82b2003200341a02b6a3602b815200341b8156a10a2030b200341c82b6a2208202b370300200341d02b6a220b202c3703002003202a3703c02b200320123703b82b200320053703b02b2003200f3703a02b2003200c3703a82b42002123420121242027420152ad212502400240427f200f20057c221e201e200f542202200c20127c2002ad7c221e200c54201e200c511b22021b222a42ffc7afa02556427f201e20021b221e420052201e501b0d00200f200584200c201284842223502102420021242023420052ad21230c010b200b290300212d20082903002130200341c02b6a290300212f200341b02b6a290300212c20032903b82b212820032903a82b212720032903a02b212b410121020b200341c8336a2012370300200341c0336a2005370300200341b8336a200c370300200341a8336a201e370300200341a0336a2208202a37030020034190336a200c3703002003200f3703b0332003200f3703883320032023370398332003202537038033024020012024420152720d00200320034190206a3602a02b20034190206a200341a02b6a10a3030c070b02400240200141017322012024420151720d00200320034190206a3602a02b20034190206a200341a02b6a10a40341ff017122014103460d08024020010e03020900020b024020020d00200320083602a02b200341a02b6a10a2030b410421020c0a0b2024420152200171450d070b200f212b200c21240c070b200ca7210a200fa72102200f422088a72114200341f0116a41026a20062d00003a0000200341d8236a41086a2007290300370300200341d8236a41106a200e290300370300200320032f01c80e3b01f01120032003290380193703d823200341a02b6a41286a2001280200360200200341a02b6a41206a200d290300370300200341a02b6a41186a2009290300370300200341a02b6a41106a2010290300370300200341a02b6a41086a2011290300370300200320032903b0023703a02b02400240200341a02b6a109d020d00200341c81c6a41026a2206200341f0116a41026a2d00003a0000200341a02b6a41086a2207200341d8236a41086a290300370300200341a02b6a41106a200341d8236a41106a290300370300200320032f01f0113b01c81c200320032903d8233703a02b41012101024002400240200b0e03000201020b200341b8156a41026a20062d00003a000020034190206a41086a200729030037030020034190206a410d6a200341a02b6a410d6a290000370000200320032f01c81c3b01b815200320032903a02b37039020410021010c010b2008450d00201310310b200341eb096a20034190206a41086a290300370000200341d8096a41186a220b2003419d206a290000370000200320032f01b8153b01d809200320083600df09200320133600db0920032003290390203700e3092003200341b8156a41026a2d00003a00da0920010d01200c422088a7210620034180336a41186a200b29030037030020034180336a41106a200341d8096a41106a29030037030020034180336a41086a200341d8096a41086a290300370300200320032903d80937038033200241087621014101210b024002400240200241ff01710e03000201020b2024a721084100210b0c010b0240200a450d00201410310b0b200341970a6a20123700002003200537008f0a200320083a009f0a2003200636008b0a2003200a3600870a200320143600830a200320013b01800a200320014110763a00820a200b0d03200341a82b6a20032903880a370300200341a02b6a41186a200341800a6a41186a290300370300200341a02b6a41106a200341800a6a41106a290300370300200320032903800a3703a02b20034190206a20034180336a200341a02b6a2023201e410110a003024020032d00902022014107470d00200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b20032d009320210220032d009220210820032d009120210b200329029420220f42808080807083210c0c060b410221010240200241ff01714102470d00200a450d00201410310b4200210f200b4102470d042008450d04201310310c040b4200210f41012101200241ff01714102470d03200a0d020c030b200341800b6a41026a20062d00003a000020034190206a41086a200729030037030020034190206a41106a200e290300370300200320032f01c80e3b01800b200320032903801937039020200341a02b6a41286a2001280200360200200341a02b6a41206a200d290300370300200341a02b6a41186a2009290300370300200341a02b6a41106a2010290300370300200341a02b6a41086a2011290300370300200320032903b0023703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d809410121020240024002400240024020032d0080334101460d00200341d8236a41186a200341d8096a41186a290300370300200341d8236a41106a200341d8096a41106a290300370300200341d8236a41086a200341d8096a41086a290300370300200320032903d8093703d823200341b8156a41026a2201200341800b6a41026a2d00003a0000200320032f01800b3b01b81520034180336a41086a220620034190206a41086a29030037030020034180336a41106a20034190206a41106a290300370300200320032903902037038033024002400240200b0e03000201020b200341f0116a41026a20012d00003a0000200341c81c6a41086a2006290300370300200341c81c6a410d6a20034180336a410d6a290000370000200320032f01b8153b01f01120032003290380333703c81c410021020c010b2008450d00201310310b200341930a6a200341c81c6a41086a290300370000200341800a6a41186a200341d51c6a290000370000200320032f01f0113b01800a200320083600870a200320133600830a200320032903c81c37008b0a2003200341f0116a41026a2d00003a00820a20020d01200341a82b6a20032903880a370300200341a02b6a41186a200341800a6a41186a290300370300200341a02b6a41106a200341800a6a41106a290300370300200320032903800a3703a02b20034180336a200341d8236a200341a02b6a200f200c410010a00320032d00803322024107460d0420032d008333210120032d008233210820032d008133210b200329028433220f42808080807083210c0c030b410221024200210f200b4102470d012008450d01201310310c010b4200210f410121020b4200210c0b200320032802e00a3602c00a200320032800e30a3600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a3600002000200c42808080807083200f42ffffffff0f8384370024200020013a0023200020083a00222000200b3a0021200041206a20023a000020004201370300200424000f0b200320032802e00a3602c00a200320032800e30a3600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b4200210f410121010c010b201410310b4200210c0b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a200c42808080807083200f42ffffffff0f8384370200200020023a0023200020083a00222000200b3a0021200041206a20013a000020004201370300200424000f0b200341b8156a20034190206a109303200341a02b6a20032802b815220120032802c015220710940341002102410021084100210b41002106024020032903a02b4201520d00200341e82b6a2802002106200341f02b6a280200210820032802ec2b210b20032802f42b21020b200341f42b6a2002360200200341f02b6a2008360200200341ec2b6a200b360200200341a02b6a41c8006a2006360200200342013703a02b200341a02b6a41386a202d4200202442015122021b370300200341d02b6a2030420020021b370300200341a02b6a41286a202f420020021b370300200341c02b6a2028420020021b370300200341b82b6a202c420020021b370300200341a02b6a41106a2027420020021b370300200341e02b6a2029420020021b3703002003202b420020021b3703a82b20012007200341a82b6a109903024020032802bc15450d00200110310b20034180336a41106a290300212420034180336a41286a290300211e20034180336a41386a290300210c20034180336a41c8006a2903002112200329038833212b20032903a033212a20032903b033210f20032903c0332105200329038033212520032903983321230b024020254201520d00200341d82b6a2024370300200341d02b6a202b370300200341a02b6a41086a41003a0000200341a92b6a200329039020370000200341b12b6a20034190206a41086a290300370000200341b92b6a200341a0206a290300370000200341c12b6a200341a8206a290300370000200341023a00a02b200341a02b6a10a9020b02400240202350450d00420021230c010b200341f0116a41186a20034190206a41186a290300370300200341f0116a41106a20034190206a41106a290300370300200341f0116a41086a20034190206a41086a29030037030020032003290390203703f011420121230b200341800a6a41186a200341f0116a41186a2903002224370300200341800a6a41106a200341f0116a41106a2903002225370300200341800a6a41086a200341f0116a41086a290300222b370300200320032903f01122273703800a200341d02b6a2202201e370300200341c82b6a2201202a370300200341a02b6a41106a202b370300200341a02b6a41186a2025370300200341c02b6a2024370300200320233703a02b200320273703a82b200341a02b6a10a503024020032903a02b500d00200320013602803320034180336a10a2030b200341e82b6a2012370300200341e02b6a2005370300200341d82b6a200c3703002002200f370300200341a02b6a41086a41033a0000200341a92b6a200329039020370000200341b12b6a20034190206a41086a290300370000200341b92b6a20034190206a41106a290300370000200341c12b6a20034190206a41186a290300370000200341023a00a02b200341a02b6a10a902200320032800e00a3602c00a2003200341e00a6a41036a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041206a20023a000020004201370300200424000f0b200341ac026a41026a220d200141076a2d00003a000020034190026a41086a2209200141146a29020037030020034190026a41106a22102001411c6a29020037030020034190026a41186a2211200141246a2d00003a0000200320012f00053b01ac0220032001410c6a29020037039002200141086a280200210a200141286a280200211320012d0004210820012d00252114200341b8156a41286a2201200241286a280200360200200341b8156a41206a220b200241206a290200370300200341b8156a41186a2206200241186a290200370300200341b8156a41106a2207200241106a290200370300200341b8156a41086a220e200241086a290200370300200320022902003703b81502400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020080e06000102030405000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341a484c4003602c81c2003200341c81c6a3602b02b200341a02b6a41fcfbc2001047000b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b8153703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d80902400240024020032d0080334101460d00200341d8236a41186a2202200341d8096a41186a290300370300200341d8236a41106a2201200341d8096a41106a290300370300200341d8236a41086a2208200341d8096a41086a290300370300200320032903d8093703d82320034190206a200a10a603200341a02b6a2003280290202206200328029820220d10a70320034180336a41186a220b200341c82b6a29030037030020034180336a41106a2207200341c02b6a29030037030020034180336a41086a220e200341a02b6a41186a290300370300200320032903b02b37038033200320032800d12b3602c81c2003200341d42b6a2800003600cb1c0240024020032d00d02b4102460d00200341b0026a41086a4105360200200341ecbcc3003602b402200341023a00b20220034183063b01b002410321020c010b200b200229030037030020072001290300370300200e2008290300370300200320032903d82337038033200341b0026a200341d8236a4280a094a58d1d420010a80320032d00b00222024107470d00200341d42b6a20032800cb1c360000200341a02b6a41186a20034188336a290300370300200341c02b6a20034190336a290300370300200341c82b6a20034180336a41186a290300370300200342003703a82b20034280a094a58d1d3703a02b20032003290380333703b02b200341003a00d02b200320032802c81c3600d12b2006200d200341a02b6a10a903410721020b20032902b402210f20032d00b302210120032d00b202210820032d00b102210b0240200328029420450d00200610310b20024107460d02200f422088a72103200fa721060c010b410221020b20002006360024200020013a0023200020083a00222000200b3a002120004200370308200041286a2003360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200341c82b6a200a360200200341ad2b6a200341e0236a290300370000200341b52b6a200341e8236a290300370000200341bd2b6a200341d8236a41186a290300370000200341003a00a42b200341013a00a02b200320032903d8233700a52b200341a02b6a10a902200041186a41003a00002000420037030820002003280080193600192000411c6a20034183196a28000036000020004200370300200424000f0b200341af0a6a2009290300370000200341b70a6a2010290300370000200341bf0a6a20112d00003a0000200320032f01ac023b01a00a2003200a3600a30a20032003290390023700a70a2003200d2d00003a00a20a200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b8153703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d809024020032d0080334101460d00200341c00a6a41186a200341d8096a41186a290300370300200341c00a6a41106a200341d8096a41106a290300370300200341c00a6a41086a200341d8096a41086a2202290300370300200320032903d8093703c00a0240200341c00a6a200341a00a6a412010c2090d00410b210341c581c30021064103210241032108410321010c150b200341e0116a201310a603200341a02b6a20032802e01120032802e81110a7032002200341c82b6a290300220f370300200320032903c02b220c3703d809200320032800d12b3602d0112003200341d42b6a2800003600d311200341a02b6a41186a290300211e20032903b02b212320032903a82b210520032903a02b211220032d00d02b2102200341800b6a41086a200f3703002003200c3703800b0240024020024102460d00200341c80e6a41086a200341800b6a41086a290300220f370300200320032903800b220c3703c80e200341f80a6a200f3703002003201e3703e80a200320233703e00a2003200c3703f00a4101210102402002410171450d0041fcbcc300ad210f4209210c410421010c020b0240200341e00a6a200341c00a6a412010c209450d0041cc80c500ad210f4208210c0c020b4200210f0240201220058450450d00420021244200210c0c130b024002400240200341c00a6a200341a00a6a412010c2090d0020034180336a200341c00a6a109303200341a02b6a200328028033220220032802883310940320032903a02b4201510d014200210c4200211e0c020b20034180336a200341a00a6a109303200341a02b6a20032802803322022003280288331094030240024020032903a02b4201510d0042002131200341c8206a4200370300200341c0206a4200370300200341b8206a4200370300200341b0206a4200370300200341a8206a4200370300200341a0206a420037030020034198206a420037030020034200370390204200212e4200212c42002129420021324200212a42002125420021274200212b420021284200210c420021240c010b20034190206a41306a200341d82b6a290300223237030020034190206a41286a200341a02b6a41306a290300222937030020034190206a41206a200341a02b6a41286a290300222c37030020034190206a41106a200341b82b6a2903002227370300200320032903a82b222a370390202003200341a02b6a41206a290300222e3703a8202003200341a02b6a41106a2903002225370398202003200341e02b6a29030022313703c820202c212b20292128202a210c202521240b0240200328028433450d00200210310b02400240200c2024844200520d00202b20032903a020842028200341a8206a29030084844200520d0020032903c020200341c8206a2903008450450d004200212b410021080c010b4201212b410121080b02400240202b4201510d004200212a200341f81c6a4200370300200341f01c6a4200370300200341e81c6a4200370300200341e01c6a4200370300200341d81c6a4200370300200341d01c6a4200370300200342003703c81c42002125420021330c010b200341e81c6a202c370300200341f01c6a2029370300200341f81c6a2032370300200341d81c6a20273703002003202e3703e01c2003202a3703c81c200320253703d01c203121330b0240202b4201510d00200341a02b6a410810aa030c120b200341d8236a200341c00a6a109303200341a02b6a20032802d823220220032802e0231094030240024020032903a02b4201510d0042002134200341e8026a4200370300200341e0026a4200370300200341d8026a4200370300200341d0026a4200370300200341c8026a4200370300200341c0026a4200370300200341b8026a4200370300200342003703b002420021284200213542002136420021374200212f42002127420021304200212d420021384200210c420021240c010b200341b0026a41306a200341d82b6a2903002237370300200341b0026a41286a200341a02b6a41306a2903002236370300200341b0026a41206a200341a02b6a41286a2903002235370300200341b0026a41106a200341b82b6a2903002230370300200320032903a82b222f3703b0022003200341a02b6a41206a29030022283703c8022003200341a02b6a41106a29030022273703b8022003200341e02b6a29030022343703e8022035212d20362138202f210c202721240b024020032802dc23450d00200210310b02400240200c2024844200520d00202d20032903c002842038200341c8026a29030084844200520d0020032903e002200341e8026a2903008450450d00420021394100210b0c010b420121394101210b0b024020394201510d004200212842002130420021344200213542002136420021374200212f420021270b024020032903d81c220c201220302030201256202820055620282005511b22021b22247c223a200c542201200341c81c6a41186a2206290300222d2005202820021b220c7c2001ad7c2238202d542038202d511b4101470d00200341a02b6a410310aa030c120b200620383703002003203a3703d81c200341d02b6a22012037370300200341c82b6a22062036370300200341a02b6a41186a2028200c7d2030202454ad7d2236370300200320353703c02b2003203020247d22373703b02b2003202f3703a02b200320273703a82b42002128420121302039420152ad213502400240427f202f20377c222d202d202f542202202720367c2002ad7c222d202754202d2027511b22021b223842ffc7afa02556427f202d20021b222d420052202d501b0d00202f2037842027203684842228502101420021302028420052ad21280c010b2001290300213b2006290300213c200341c02b6a290300213d200341b02b6a290300213720032903b82b213a20032903a82b213920032903a02b2136410121010b20034190246a200c37030020034180246a202d370300200341f8236a22062038370300200341e8236a202737030020032024370388242003202f3703e023200320283703f023200320353703d82302400240024002400240200b2030420152720d002003200341c00a6a3602a02b200341c00a6a200341a02b6a10a3030c010b0240200b41017322022030420151720d002003200341c00a6a3602a02b200341c00a6a200341a02b6a10a40341ff017122024103460d01024020020e03040200040b410421022001450d020c170b20304201522002710d030b200341f0116a200341c00a6a109303200341a02b6a20032802f011220120032802f811220e109403410021024100210b4100210641002107024020032903a02b4201520d00200341e82b6a2802002107200341f02b6a280200210b20032802ec2b210620032802f42b21020b200341f42b6a2002360200200341f02b6a200b360200200341ec2b6a2006360200200341e82b6a2007360200200342013703a02b200341a02b6a41386a203b4200203042015122021b370300200341d02b6a203c420020021b370300200341a02b6a41286a203d420020021b370300200341c02b6a203a420020021b370300200341b82b6a2037420020021b370300200341a02b6a41106a2039420020021b370300200341e02b6a2034420020021b37030020032036420020021b3703a82b2001200e200341a82b6a109903024020032802f411450d00200110310b200341d8236a41106a2903002127200341d8236a41286a290300212d200341d8236a41386a290300210c20032903e023212f20032903f8232138200329038824212420032903d823213520032903f02321280c020b200320063602a02b200341a02b6a10a2030c140b20034180246a290300212d200341e8236a290300212720034190246a290300210c20032903f823213820032903e023212f200329038824212420032903f023212820032903d82321350b024020354201520d00200341d82b6a2027370300200341d02b6a202f370300200341a02b6a41086a41003a0000200341a92b6a20032903c00a370000200341b12b6a200341c00a6a41086a290300370000200341b92b6a200341d00a6a290300370000200341c12b6a200341d80a6a290300370000200341023a00a02b200341a02b6a10a9020b4200213502402028500d00200341f0116a41186a200341c00a6a41186a290300370300200341f0116a41106a200341c00a6a41106a290300370300200341f0116a41086a200341c00a6a41086a290300370300200320032903c00a3703f011420121350b200341b0026a41086a200341f0116a41086a290300370300200341b0026a41106a200341f0116a41106a290300370300200341b0026a41186a200341f0116a41186a290300370300200320032903f0113703b002200341c81c6a41086a290300212520032903c81c212a200341d8236a41206a200341c81c6a41306a2903002227370300200341d8236a41186a200341c81c6a41286a2903002228370300200341d8236a41106a200341c81c6a41206a290300222f370300200341d8236a41086a200341c81c6a41186a290300222c370300200320032903d81c22293703d823200341a02b6a41186a202c370300200341a02b6a41206a220b202f370300200341a02b6a41286a22062028370300200341a02b6a41306a22072027370300200320253703a82b2003202a3703a02b200320293703b02b42012130202b420152210202400240427f202a20297c222b202b202a5422012025202c7c2001ad7c222b202554202b2025511b22011b222f42ffc7afa02556427f202b20011b22274200522027501b0d0042002130202a2029842025202c8484420052ad21280c010b2007290300213220062903002129200b290300212c200341a02b6a41106a290300213720032903b82b212e20032903a82b213920032903a02b2136420021280b2002ad212b200341f0116a41086a200341b0026a41086a290300370300200341f0116a41106a200341b0026a41106a290300370300200341f0116a41186a200341b0026a41186a290300370300200320032903b0023703f01141002101203321310c130b200341b82b6a290300210c200341c02b6a290300211e0b0240200328028433450d00200210310b42002005201e7d2012200c54ad7d221e2012200c7d2223201256201e200556201e2005511b22021b210c4200202320021b21240c120b41f1bcc300ad210f420b210c410021010b41032102410321080c130b410221020c130b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b8153703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d8090240024020032d0080334101460d00200341d8236a41186a200341d8096a41186a290300370300200341d8236a41106a200341d8096a41106a290300370300200341d8236a41086a200341d8096a41086a290300370300200320032903d8093703d823200341b0026a200a10a603200341a02b6a20032802b002220720032802b802220b10a70320034180336a41086a200341c82b6a290300220f370300200320032903c02b220c37038033200341a02b6a41186a2202290300210520032903b02b211220032903a82b211e20032903a02b212320032d00d02b2101200341800b6a41086a2208200f3703002003200c3703800b0240024002400240024020014102460d00200341c80e6a41086a2008290300220f370300200320032903800b220c3703c80e2002200f370300200320053703a82b200320123703a02b2003200c3703b02b410121022001410171450d014109210141fcbcc3002108410421020c020b410b210141f1bcc3002108410021064103210b410021020c030b200341a02b6a200341d8236a412010c209450d014108210141cc80c50021080b4103210b410021060c010b200341d8236a2023201e10bc022007200b10bd02410021084107210b41012106410021010b024020032802b402450d00200710310b2006450d01200341a82b6a200a360200200341013a00a42b200341013a00a02b200341a02b6a10a902200041186a41003a000020004200370308200020032800f0113600192000411c6a200341f3116a28000036000020004200370300200424000f0b4102210b0b20002008360024200020023a0022200041033a002120004200370308200041286a2001360000200041206a200b3a0000200041186a41003a000020004201370300200424000f0b20034180196a41026a200d2d00003a0000200341d8236a41086a2009290300370300200341d8236a41106a2010290300370300200341d8236a41186a20112d00003a0000200320032f01ac023b01801920032003290390023703d823200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b8153703a02b200341a02b6a109d020d0120034190206a201310a603200341a02b6a2003280290202202200328029820220810a703200341b0026a41086a220b200341c82b6a2206290300220f370300200320032903c02b220c3703b0022003200341b82b6a2201290300220537039833200320032903b02b221237039033200320032903a82b221e37038833200320032903a02b222337038033200320032800d12b3602c81c2003200341d42b6a22072800003600cb1c20032d00d02b210e200341800b6a41086a220d200f3703002003200c3703800b0240200e4102460d002001200d290300370300200320032903800b3703b02b200320123703a02b200320053703a82b200341a02b6a2023201e10bc020b200b200341e9236a220e29000037030020034200370388332003420037038033200320032f0180193b0190332003200a36009333200320032903d82337009733200320032900e1233703b002200320034180196a41026a2d00003a0092332003200341d8236a41086a2d00003a009f33200120032903983337030020032003290390333703b02b200342003703a82b200342003703a02b200341c02b6a20032900e1233703002006200e290000370300200320143a00d02b200720032800cb1c360000200320032802c81c3600d12b02400240201441ff01714102470d002002200810bd020c010b20022008200341a02b6a10a9030b0240200328029420450d00200210310b200341a02b6a41086a200a360200200341ac2b6a20032903d823370200200341c82b6a2013360200200341b42b6a200341d8236a41086a290300370200200341a02b6a411c6a200341e8236a290300370200200341c42b6a200341d8236a41186a2d00003a0000200341003a00a42b200341013a00a02b200320032f0180193b00a52b200320034182196a2d00003a00a72b200341a02b6a10a902200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e290300370300200320032903b8153703a02b20034180336a200341a02b6a109e02200341d8096a41086a20034189336a290000370300200341d8096a41106a20034191336a290000370300200341d8096a41186a20034199336a29000037030020032003290081333703d809024020032d0080334101460d0020034190206a41186a200341d8096a41186a29030037030020034190206a41106a200341d8096a41106a29030037030020034190206a41086a200341d8096a41086a290300370300200320032903d80937039020200341e00a6a200a10a603200341a02b6a20032802e00a220b20032802e80a10a703200341c81c6a41086a200341c82b6a290300220f370300200320032903c02b22123703c81c200320032800d12b3602c00a2003200341d42b6a2800003600c30a200341a02b6a41186a290300212420032903b02b212520032903a82b210c20032903a02b210520032d00d02b2101200341800b6a41086a2202200f370300200320123703800b0240024020014102460d00200341c80e6a41086a2002290300220f370300200320032903800b22123703c80e200341b0026a41186a200f370300200320243703b802200320253703b002200320123703c002410121022001410171450d0141fcbcc300ad212b42808080809001210f410421020c080b41f1bcc300ad212b4280808080b001210f4100210841032101410021020c080b0240200341b0026a20034190206a412010c209450d0041cc80c500ad212b42808080808001210f0c070b200341b0026a41106a21114200212b02402005200c8450450d00420021234200212a420021274200212c0c060b20034180336a20034190206a109303200341a02b6a20032802803322022003280288331094030240024020032903a02b4201510d004200210f420021124200211e420021230c010b200341b82b6a290300211e200341b02b6a2903002112200341c02b6a290300212320032903a82b210f0b0240200328028433450d00200210310b201e200f84202320128484500d0420034180336a41306a211020034180336a41206a211541002106200341a02b6a41386a2113200341a02b6a41186a2107200341c8336a2109200341e0236a211441012101034020034180336a20034190206a109303200341a02b6a20032802803322022003280288331094030240024020032903a02b4201510d004200212e200341d8236a41386a4200370300200341d8236a41306a4200370300200341d8236a41286a4200370300200341d8236a41206a4200370300200341d8236a41186a4200370300200341d8236a41106a420037030020144200370300200342003703d82342002123420021274200212a4200212c420021124200210f4200211e4200212d4200213242002129420021280c010b200341d8236a41306a2013290300222c370300200341d8236a41286a200341a02b6a41306a290300222a370300200341d8236a41206a200341a02b6a41286a2903002227370300200341d8236a41106a2007290300221e370300200320032903c02b22233703f023200320032903a82b22123703d823200320032903e02b222e370390242003200341a02b6a41106a290300220f3703e0232027212d202a213220122129200f21280b0240200328028433450d00200210310b0240024020292028844200520d00202d20032903e82384200329038824842032200341d8236a41186a29030084200341d8236a41386a290300848450450d0042002129410021020c010b42012129410121020b024020294201522208450d00420021274200212a4200212c4200212e4200211e42002123420021124200210f0b200341a02b6a41286a220e202a370300200341a02b6a41306a220d202c370300200320123703a02b2003200f3703a82b20072023200c42002023200f7c201e20127c222a201e54ad7c222c202a4280c8afa02554ad7d2229202a4280b8d0df5a7c2228202a562029202c56202a42ffc7afa025561b220b1b222a200c200542002028200b1b222c56200c202a56200c202a511b220b1b200141017122011b222a2023201e2005202c2005200b1b20011b222c562023202a562023202a511b22011b222a7d201e202c201e20011b222354ad7d2229370300200320273703c02b2003201e20237d22283703b02b200c202a7d2005202354ad7d212c200520237d21272008ad212d02400240427f201220287c221e201e2012542201200f20297c2001ad7c221e200f54201e200f511b22011b223242ffc7afa02556427f201e20011b221e420052201e501b0d002030201e2012202884200f2029848422295022011b2130202f203220011b212f4200211e2029420052ad21290c010b200d2903002133200e2903002137200341a02b6a41206a2903002139200341a02b6a41106a290300213520032903b82b213620032903a82b213820032903a02b21314201211e4200212941012101202e21340b2009202c37030020034180336a41386a202a37030020034180336a41286a203037030020034180336a41106a200f370300200320273703c033200320233703b0332003202f3703a033200320123703883320032029370398332003202d3703803302402002201e420152720d00200320034190206a3602a02b20034190206a200341a02b6a10a3030c040b024002402002410173201e420151720d00200320034190206a3602a02b20034190206a200341a02b6a10a40341ff017122024102460d0120020d05200341c8336a290300212c200341b8336a290300212a200341a8336a290300213020034190336a290300210f20032903c033212720032903b033212320032903a033212f20032903883321122003290398332129200329038033212d0c060b201e4201510d042002410173450d040c050b024020010d00200320153602a02b200341a02b6a10a2030b200320103602a02b20064101712102200341a02b6a10a203410021014101210620020d050c000b0b410221010c070b20004200370024200041206a41023a0000200041186a41003a00002000420037030820004201370300200424000f0b20034180196a20034190206a109303200341a02b6a2003280280192201200328028819220710940341002102410021084100210b41002106024020032903a02b4201520d00200341e82b6a2802002106200341f02b6a280200210820032802ec2b210b20032802f42b21020b200341f42b6a2002360200200341f02b6a2008360200200341ec2b6a200b360200200341a02b6a41c8006a2006360200200342013703a02b200341a02b6a41386a20334200201e42015122021b370300200341d02b6a2037420020021b370300200341a02b6a41286a2039420020021b370300200341c02b6a2036420020021b370300200341b82b6a2035420020021b370300200341a02b6a41106a2038420020021b370300200341e02b6a2034420020021b37030020032031420020021b3703a82b20012007200341a82b6a1099030240200328028419450d00200110310b20034180336a41106a290300210f20034180336a41286a290300213020034180336a41386a290300212a20034180336a41c8006a290300212c200329038833211220032903a033212f20032903b033212320032903c0332127200329038033212d20032903983321290b0240202d4201520d00200341d82b6a200f370300200341d02b6a2012370300200341a02b6a41086a41003a0000200341a92b6a200329039020370000200341b12b6a20034190206a41086a290300370000200341b92b6a200341a0206a290300370000200341c12b6a200341a8206a290300370000200341023a00a02b200341a02b6a10a9020b02400240202950450d004200210f0c010b200341f0116a41186a20034190206a41186a290300370300200341f0116a41106a20034190206a41106a290300370300200341f0116a41086a20034190206a41086a29030037030020032003290390203703f0114201210f0b200341800a6a41186a200341f0116a41186a290300220c370300200341800a6a41106a200341f0116a41106a2903002205370300200341800a6a41086a200341f0116a41086a2903002212370300200320032903f011221e3703800a200341d02b6a2030370300200341c82b6a2202202f370300200341a02b6a41106a2012370300200341a02b6a41186a2005370300200341c02b6a200c3703002003200f3703a02b2003201e3703a82b200341a02b6a10a503024020032903a02b500d00200320023602803320034180336a10a2030b20032903b802212420032903b00221250c010b420021234200212a20052127200c212c0b200341b82b6a2202202c370300200320273703b02b200320233703a02b2003202a3703a82b2003200341a02b6a3602803320034180336a10a203200341c81c6a41086a201141086a290300220f37030020032011290300220c3703c81c20022024370300200341c02b6a200c370300200341c82b6a200f370300200341d42b6a20032800c30a360000200320253703b02b200342003703a82b200342003703a02b41012108200341013a00d02b200320032802c00a3600d12b20032802e00a220b20032802e80a200341a02b6a10a903410721014200210f0c010b41032101410021080b024020032802e40a450d00200b10310b20080d01200f4280808080f00183202b42ffffffff0f8384210f0b2000200f3e0024200020023a0022200041033a002120004200370308200041286a200f4220883e0000200041206a20013a0000200041186a41003a000020004201370300200424000f0b200341c82b6a200a360200200341ad2b6a20034198206a290300370000200341b52b6a200341a0206a290300370000200341bd2b6a20034190206a41186a290300370000200341023a00a42b200341013a00a02b20032003290390203700a52b200341a02b6a10a902200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b20032902a42b212b20032802a02b21020b200341d8236a41206a200341f81c6a290300370300200341d8236a41186a200341f01c6a290300370300200341e8236a200341c81c6a41206a290300370300200341e0236a200341c81c6a41186a290300370300200320032903d81c3703d82342002130410121010b200341800b6a41086a220b200341f0116a41086a290300370300200341800b6a41106a2206200341f0116a41106a290300370300200341800b6a41186a2207200341f0116a41186a290300370300200320032903f0113703800b02400240024002400240024020010d00200341b8336a200c370300200341a8336a2027370300200341a0336a2202202f37030020034180336a41106a2025370300200341f0336a202d370300200341e8336a22012038370300200341c0336a2035370300200341c8336a20032903800b370300200341d0336a200b290300370300200341d8336a2006290300370300200341e0336a2007290300370300200320243703b0332003202a3703883320032028370398332003202b370380330240024020082030420152720d002003200341a00a6a3602a02b200341a00a6a200341a02b6a10a3030c010b0240200841017322082030420151720d002003200341a00a6a3602a02b200341a00a6a200341a02b6a10a40341ff017122084103460d010240024020080e03010300010b02402028500d00200320023602a02b200341a02b6a10a2030b200341c0336a220b10a5034200210c4104210241012108200b290300500d04200320013602a02b200341a02b6a10a2030c040b200341e0026a200341f0336a290300370300200341d8026a200341e8336a290300370300200341d0026a200341e0336a290300370300200341c8026a200341d8336a290300370300200341c0026a200341d0336a290300370300200341b8026a200341c8336a2903003703002003200341c0336a2903003703b002410021080c050b20304201522008710d030b200341d8236a200341a00a6a109303200341a02b6a20032802d823220120032802e023220710940341002102410021084100210b41002106024020032903a02b4201520d00200341e82b6a2802002106200341f02b6a280200210820032802ec2b210b20032802f42b21020b200341f42b6a2002360200200341a02b6a41d0006a2008360200200341ec2b6a200b360200200341a02b6a41c8006a2006360200200342013703a02b200341a02b6a41386a20324200203042015122021b370300200341a02b6a41306a2029420020021b370300200341a02b6a41286a202c420020021b370300200341a02b6a41206a202e420020021b370300200341a02b6a41186a2037420020021b370300200341a02b6a41106a2039420020021b370300200341a02b6a41c0006a2031420020021b37030020032036420020021b3703a82b20012007200341a02b6a41086a109903024020032802dc23450d00200110310b200341b0026a41086a220220034180336a41c8006a290300370300200341b0026a41106a220120034180336a41d0006a290300370300200341b0026a41186a2208200341d8336a290300370300200341b0026a41206a220b200341e0336a290300370300200341b0026a41286a2206200341e8336a290300370300200341b0026a41306a2207200341f0336a290300370300200320034180336a41c0006a2903003703b00220034180336a41106a290300212520034180336a41286a290300212720034180336a41386a290300210c200329038833212a20032903a033212f20032903b0332124200329038033212b2003290398332128200341d8236a41306a2007290300370300200341d8236a41286a2006290300370300200341d8236a41206a200b290300370300200341d8236a41186a2008290300370300200341d8236a41106a2001290300370300200341d8236a41086a2002290300370300200320032903b0023703d823200341d8236a21010c040b4200210c410121080b0c010b200341e0026a200341f0336a290300370300200341d8026a200341e8336a290300370300200341d0026a200341e0336a290300370300200341c8026a200341d8336a290300370300200341c0026a200341d0336a290300370300200341b8026a200341c8336a2903003703002003200341c0336a2903003703b002410021080b200341d8236a41306a200341b0026a41306a290300370300200341d8236a41286a200341b0026a41286a290300370300200341d8236a41206a200341b0026a41206a290300370300200341d8236a41186a200341b0026a41186a290300370300200341d8236a41106a200341b0026a41106a290300370300200341d8236a41086a200341b0026a41086a290300370300200320032903b0023703d823200341d8236a21012008450d0041012101202b21240c010b20034180336a41306a200141306a29030037030020034180336a41286a200141286a29030037030020034180336a41206a200141206a29030037030020034180336a41186a200141186a29030037030020034180336a41106a200141106a29030037030020034180336a41086a200141086a29030037030020032001290300370380330240202b4201520d00200341d82b6a2025370300200341a02b6a41306a202a370300200341a02b6a41086a41003a0000200341a92b6a20032903a00a370000200341b12b6a200341a00a6a41086a290300370000200341b92b6a200341a00a6a41106a290300370000200341c12b6a200341a00a6a41186a290300370000200341023a00a02b200341a02b6a10a9020b02400240202850450d00420021250c010b20034190206a41186a200341a00a6a41186a29030037030020034190206a41106a200341a00a6a41106a29030037030020034190206a41086a200341a00a6a41086a290300370300200320032903a00a37039020420121250b200341c81c6a41186a20034190206a41186a290300370300200341c81c6a41106a20034190206a41106a290300370300200341c81c6a41086a20034190206a41086a290300370300200341a02b6a41086a20034180336a41086a290300370300200341a02b6a41106a20034180336a41106a290300370300200341a02b6a41186a20034180336a41186a290300370300200341a02b6a41206a20034180336a41206a290300370300200341a02b6a41286a20034180336a41286a290300370300200341a02b6a41306a20034180336a41306a29030037030020032003290390203703c81c20032003290380333703a02b410021010b20034180196a41086a2208200341a02b6a41086a220b29030037030020034180196a41106a2206200341a02b6a41106a29030037030020034180196a41186a2207200341a02b6a41186a29030037030020034180196a41206a220e200341a02b6a41206a29030037030020034180196a41286a220a200341a02b6a41286a29030037030020034180196a41306a220d200341a02b6a41306a290300370300200341c80e6a41086a2209200341c81c6a41086a290300370300200341c80e6a41106a2210200341c81c6a41106a290300370300200341c80e6a41186a2211200341c81c6a41186a290300370300200320032903a02b37038019200320032903c81c3703c80e20010d01200341d8236a41306a200d290300370300200341d8236a41286a200a290300370300200341d8236a41206a200e290300370300200341d8236a41186a2007290300370300200341d8236a41106a2006290300370300200341d8236a41086a200829030037030020032003290380193703d82320034180336a41306a202737030020034180336a41286a2202202f37030020034180336a41106a200929030037030020034180336a41186a201029030037030020034180336a41206a20112903003703002003202537038033200320032903c80e37038833200b41073a0000200341023a00a02b200341a92b6a20032903c00a370000200341b12b6a200341c00a6a41086a290300370000200341b92b6a200341c00a6a41106a290300370000200341c12b6a200341c00a6a41186a290300370000200341c92b6a20032903a00a370000200341d12b6a200341a00a6a41086a290300370000200341d92b6a200341a00a6a41106a290300370000200341e12b6a200341a00a6a41186a290300370000200341f82b6a200c370300200341f02b6a2024370300200341e92b6a41013a0000200341a02b6a10a90220034180336a10a5030240200329038033500d00200320023602a02b200341a02b6a10a2030b200341d8236a10a50320032903d823500d00200320034180246a3602a02b200341a02b6a10a2030b200341d8096a41086a200341b80a6a2903003703002003200341b00a6a2903003703d8094200200542002005200c7d2012202454ad7d220c201220247d221e201256200c200556200c2005511b22021b7d20124200201e20021b221e54ad7d220c2012201e7d221e201256200c200556200c2005511b22021b21054200201e20021b2112200341a00a6a41086a290300211e20032903a00a212341002102410021064200210c0c010b2024422088210c2002411876210b20024110762101200241087621080240200241ff01714107460d002024210f0c020b41022106410121022024210f0b200341c02b6a20032903d809370300200341d42b6a20032800d311360000200341c82b6a200341e0096a290300370300200341b82b6a201e370300200320123703a02b200320063a00d02b200320032802d0113600d12b200320053703a82b200320233703b02b20032802e811210620032802e0112107024002402002450d002007200610bd020c010b20072006200341a02b6a10a9030b410721020b024020032802e411450d0020032802e01110310b200241ff01714107460d01200ca72103200fa721060b200020063600242000200b3a0023200020013a0022200020083a002120004200370308200041286a2003360000200041206a20023a0000200041186a41003a000020004201370300200424000f0b200341c82b6a2013360200200341ad2b6a200341a80a6a290300370000200341b52b6a200341b00a6a290300370000200341bd2b6a200341a00a6a41186a290300370000200341003a00a42b200341013a00a02b200320032903a00a3700a52b200341a02b6a10a902200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b200141086a290300210f200341a02b6a41286a200241286a280200360200200341a02b6a41206a200241206a290200370300200341a02b6a41186a200241186a290200370300200341a02b6a41106a200241106a290200370300200341a02b6a41086a200241086a290200370300200320022902003703a02b0240024002400240200341a02b6a108d030d00200341800a6a41186a22014200370300200341800a6a41106a22024200370300200342003703880a200342003703800a200341c80e6a41fdc6c000410910a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a4198b2c600410910a7022001200341800b6a41086a290300370300200220032903800b370300200341800a6a4120108f030d02200341980a6a22014200370300200341900a6a22084200370300200342003703880a200342003703800a200341c80e6a41fdc6c000410910a7022003200341c80e6a41086a220b2903003703880a200320032903c80e3703800a200341800b6a41f4b1c600410310a702200241086a2206200341800b6a41086a2207290300370300200220032903800b370300200341c0006a200341800a6a10ab032003280240450d012003290348220c500d01200c42b8177c200f580d0141f8a5c60041ce0041c8a6c600103c000b200320032800e30a3600c30a200320032802e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a4200370200200041206a41023a000020004201370300200424000f0b2001420037030020084200370300200342003703880a200342003703800a200341c80e6a41fdc6c000410910a7022003200b2903003703880a200320032903c80e3703800a200341800b6a41f4b1c600410310a70220062007290300370300200220032903800b3703002003200f3703a02b200341800a6a4120200341a02b6a4108109f022001420037030020084200370300200342003703880a200342003703800a200341c80e6a41fdc6c000410910a7022003200b2903003703880a200320032903c80e3703800a200341800b6a4198b2c600410910a70220062007290300370300200220032903800b370300200341013a00f011200341800a6a4120200341f0116a4101109f022001420037030020084200370300200342003703880a200342003703800a200341c80e6a41f9c6c000410410a7022003200b2903003703880a200320032903c80e3703800a200341800b6a41d890c500410b10a70220062007290300370300200220032903800b370300200341306a200341800a6a10ab032003290338420020032802301b200f42f02e80520d01200320032800e30a3600c30a200320032802e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b41b8a5c600413041e8a5c600103c000b41e488c3004127418c89c300103c000b200320012800213602a00a2003200141246a2800003600a30a200141206a2d0000211b2001411c6a280200211c200141186a280200210b200141146a2802002108200141106a28020021112001410c6a2802002117200141086a2802002106200141286a28020021182001412c6a2802002115200141306a2802002109200141346a280200211320034190206a200141386a41e40010bf091a200141a4016a2802002114200141a0016a28020021102001419c016a2802002116200341d8236a200141a8016a41800110bf091a20034180196a41286a2201200241286a28020036020020034180196a41206a2207200241206a29020037030020034180196a41186a220e200241186a29020037030020034180196a41106a220a200241106a29020037030020034180196a41086a220d200241086a2902003703002003200229020037038019024002400240024020060e0400010203000b200341a02b6a41146a4101360200200342013702a42b200341d897ca003602a02b200341043602cc1c200341a484c4003602c81c2003200341c81c6a3602b02b200341a02b6a41a480c3001047000b200320032802a00a3602800b200320032800a30a3600830b200341b0026a20034190206a41e40010bf091a20034180336a200341d8236a41800110bf091a200341a02b6a41286a2001280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380193703a02b200341b8156a200341a02b6a109e02200341d8096a41086a200341c1156a2202290000370300200341d8096a41106a200341c9156a2201290000370300200341d8096a41186a200341d1156a2206290000370300200320032900b9153703d80902400240024020032d00b8154101470d00200341e81c6a41023a0000200341e01c6a41003a0000200342003703d01c200342013703c81c0240200b450d00200b410c6c21012011210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b02402008450d002008410c6c450d00201110310b02402013450d00201341246c21012015210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b02402009450d00200941246c450d00201510310b02402014450d00201441246c21012016210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b02402010450d00201041246c450d00201610310b200341d01c6a210241002101410221080c010b200341c80e6a41186a200341d8096a41186a290300220f370300200341c80e6a41106a200341d8096a41106a290300220c370300200341c80e6a41086a200341d8096a41086a2903002205370300200320032903d80922123703c80e2006200f3700002001200c37000020022005370000200320123700b915200341013a00b815200341b42b6a2013360200200341a02b6a41106a2009360200200341a02b6a410c6a20153602002003201b3a00a02b200320183602a82b200320032802800b3600a12b200320032800830b3600a42b200341a02b6a41186a200341b0026a41e40010bf091a200341a42c6a2014360200200341a02b6a4180016a20103602002003419c2c6a2016360200200341a82c6a20034180336a41800110bf091a200341f0116a410c6a200b360200200341f0116a41086a20083602002003201c36028012200320113602f411200320173602f011200341c81c6a200341b8156a200341a02b6a200341f0116a10ac0320032903c81c4201520d01200341c81c6a41086a2102200341e81c6a2d0000210820032d00e01c21010b200320022800113602c00a2003200241146a2800003600c30a20022f0019210b20022d001b2106200229001c210f2002280224210220032903d01c210c20032903d81c2105200041186a20013a0000200041106a20053703002000200c370308200020032802c00a3600192000411c6a20032800c30a3600002000412c6a20023602002000200f370024200020063a00232000200b3b0021200041206a20083a000020004201370300200424000f0b200320032800e11c3602c00a2003200341c81c6a411c6a2800003600c30a20032903d01c210f20032903d81c210c200041186a20032d00e01c3a0000200041106a200c3703002000200f370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200320032802a00a3602800b200320032800a30a3600830b200341b0026a20034190206a41e40010bf091a20034180336a200341d8236a41800110bf091a200341a02b6a41286a2001280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380193703a02b024002400240200341a02b6a108d03450d00200341e81c6a41023a0000200341e01c6a41003a0000200342003703d01c200342013703c81c0240200b450d00200b410c6c21012011210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b02402008450d002008410c6c450d00201110310b02402013450d00201341246c21012015210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b02402009450d00200941246c450d00201510310b02402014450d00201441246c21012016210203400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b02402010450d00201041246c450d00201610310b200341d01c6a210241002101410221080c010b200341a02b6a109203200341d1156a200341a02b6a41186a2202290300370000200341c9156a200341a02b6a41106a2201290300370000200341c1156a200341a02b6a41086a290300370000200341013a00b815200320032903a02b3700b915200341b42b6a201336020020012009360200200341a02b6a410c6a20153602002003201b3a00a02b200320032802800b3600a12b200320032800830b3600a42b200320183602a82b2002200341b0026a41e40010bf091a200341a42c6a2014360200200341a02b6a4180016a20103602002003419c2c6a2016360200200341a82c6a20034180336a41800110bf091a200341f0116a410c6a200b360200200341f0116a41086a20083602002003201c36028012200320113602f411200320173602f011200341c81c6a200341b8156a200341a02b6a200341f0116a10ac0320032903c81c4201520d01200341c81c6a41086a2102200341e81c6a2d0000210820032d00e01c21010b200320022800113602e00a2003200241146a2800003600e30a20022f0019210b20022d001b2106200229001c210f2002280224210220032903d01c210c20032903d81c2105200041186a20013a0000200041106a20053703002000200c370308200020032802e00a3600192000411c6a20032800e30a3600002000412c6a20023602002000200f370024200020063a00232000200b3b0021200041206a20083a000020004201370300200424000f0b200320032800e11c3602e00a2003200341c81c6a411c6a2800003600e30a20032903d01c210f20032903d81c210c200041186a20032d00e01c3a0000200041106a200c3703002000200f370308200020032802e00a3600192000411c6a20032800e30a36000020004200370300200424000f0b200341a02b6a41286a2001280200360200200341a02b6a41206a2007290300370300200341a02b6a41186a200e290300370300200341a02b6a41106a200a290300370300200341a02b6a41086a200d29030037030020032003290380193703a02b0240200341a02b6a109d02450d00200320032800b0023602c81c2003200341b3026a2800003600cb1c200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c360000200041206a41023a000020004201370300200424000f0b200341800a6a41186a22024200370300200341900a6a22014200370300200342003703880a200342003703800a200341c80e6a41f9c6c000410410a7022003200341c80e6a41086a2903003703880a200320032903c80e3703800a200341800b6a418691c500411810a7022002200341800b6a41086a290300370300200120032903800b370300200341003602a82b200342013703a02b200341013a00f011200341a02b6a200341f0116a4101107e20032008360284332003201136028033200341a02b6a20034180336a4108107e2003201cad422086200bad8437038033200341a02b6a20034180336a4108107e0240024002400240201b0e03000102030b200341003a00f011200341a02b6a200341f0116a4101107e0c020b200341013a00f011200341a02b6a200341f0116a4101107e0c010b200341023a00f011200341a02b6a200341f0116a4101107e0b200341800a6a412020032802a02b220220032802a82b109f02024020032802a42b450d00200210310b200320032800b0023602c81c2003200341b3026a2800003600cb1c200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c36000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b200341d8236a200341a02b6a109e02200341d8096a41086a200341d8236a41096a290000370300200341d8096a41106a200341d8236a41116a290000370300200341d8096a41186a200341d8236a41196a290000370300200320032900d9233703d809024020032d00d8234101470d000240200d450d00200a10310b200320032800e30a3600c30a200320032802e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a4200370200200041206a41023a000020004201370300200424000f0b200341c80e6a41186a2202200341d8096a41186a290300370300200341c80e6a41106a2201200341d8096a41106a290300370300200341c80e6a41086a2208200341d8096a41086a290300370300200320032903d8093703c80e200341800a6a200a2009109a01200341d8236a41186a220b200341800a6a41186a290300370300200341d8236a41106a2206200341800a6a41106a290300370300200341d8236a41086a220720032903880a370300200320032903800a3703d823200341a02b6a41086a41053a0000200341a02b6a41096a20032903c80e370000200341a02b6a41116a2008290300370000200341a02b6a41196a2001290300370000200341c12b6a2002290300370000200341c92b6a20032903d823370000200341d12b6a2007290300370000200341d92b6a2006290300370000200341e12b6a200b290300370000200341003a00a02b200341a02b6a10a9020240200d450d00200a10310b200320032800e30a3600c30a200320032802e00a3602c00a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d02450d000240200d450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a4200370200200041206a41023a000020004201370300200424000f0b200a200910c5020240200d450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d020d0002402009450d00200a2009410c6c6a2101200a210203402002280200200241086a28020010bd022002410c6a22022001470d000b2009450d002009410c6c2101200a210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b0240200d450d00200d410c6c450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b02402009450d002009410c6c2101200a210203400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b0240200d450d00200d410c6c450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041206a41023a000020004201370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d020d0002402009450d00200a200941186c6a2101200a210203402002280200200241086a2802002002410c6a280200200241146a280200109f02200241186a22022001470d000b2009450d00200941186c2101200a210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b0240200d450d00200d41186c450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a36000020004200370300200424000f0b02402009450d00200941186c2101200a210203400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b0240200d450d00200d41186c450d00200a10310b200320032800e00a3602c00a2003200341e30a6a2800003600c30a200041186a41003a000020004200370308200020032802c00a3600192000411c6a20032800c30a360000200041246a4200370200200041206a41023a000020004201370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d020d0002400240200a4101460d0041b6d7c800410d10bd020c010b200341003602a82b200342013703a02b2003200d36028019200341a02b6a20034180196a4104107e2003200936028019200341a02b6a20034180196a4104107e41b6d7c800410d20032802a02b220220032802a82b109f0220032802a42b450d00200210310b200341ac2b6a2009360200200341a82b6a200d3602002003200a3602a42b200341043a00a02b200341a02b6a10d80220032003280090203602c81c200320034193206a2800003600cb1c200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c36000020004200370300200424000f0b20032003280090203602c81c200320032900d8233703b002200320034193206a2800003600cb1c2003200341df236a2800003600b702200041186a41003a000020004200370308200020032802c81c3600192000411c6a20032800cb1c360000200041206a41023a0000200020032903b002370021200041286a20032800b70236000020004201370300200424000f0b200341a02b6a41286a2008280200360200200341a02b6a41206a200b290300370300200341a02b6a41186a2006290300370300200341a02b6a41106a2007290300370300200341a02b6a41086a200e29030037030020032003290380333703a02b0240200341a02b6a109d020d00418ca4c0004105200a2009109f020240200d450d00200a10310b200341a82b6a41023a0000200341003a00a02b200341a02b6a10a902200320032800d8233602b0022003200341db236a2800003600b302200041186a41003a000020004200370308200020032802b0023600192000411c6a20032800b30236000020004200370300200424000f0b0240200d450d00200a10310b200320032800d8233602b0022003200341db236a2800003600b302200041186a41003a000020004200370308200020032802b0023600192000411c6a20032800b302360000200041206a41023a000020004201370300200424000f0b200fa72207450d012007410c6c450d010b201610310b200b450d010b201010310b2008450d010b200610310b2001450d00200210310b20034190206a410310a1020b20032d00902022024107460d01200329029420210f20032d009320210b20032d009220210820032d00912021010b0240200d450d00200a10310b20032003280080193602b815200320034183196a2800003600bb15200041186a41003a000020004200370308200020032802b8153600192000411c6a20032800bb15360000200041246a200f3702002000200b3a0023200020083a0022200020013a0021200041206a20023a000020004201370300200424000f0b418ca4c0004105200a2009109f020240200d450d00200a10310b200341a82b6a41023a0000200341003a00a02b200341a02b6a10a90220032003280080193602b815200320034183196a2800003600bb15200041186a41003a000020004200370308200020032802b8153600192000411c6a20032800bb1536000020004200370300200424000f0b20012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b200341d8236a41086a20034190026a41086a28020036020020032003290390023703d823200341a02b6a200341c81c6a41880310bf091a4200210f410021020c020b20032802c82b22022002280200417f6a220836020020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d00200210310b20012001280200417f6a22083602004209210f4101210220080d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22082008280200417f6a220836020020080d00200110310b200341e0116a41086a2201200341d8236a41086a280200360200200320032903d8233703e01120034180196a200341a02b6a41880310bf091a02402002450d00200610ad032006103120004200370024200041206a41023a0000200041186a41003a00002000420037030820004201370300200424000f0b200341d0116a41086a22022001280200360200200320032903e0113703d011200341c80e6a20034180196a41880310bf091a200341b0336a20032903d011370300200341b8336a20022802003602002003200f37038033200341c0336a200341c80e6a41880310bf091a200341a02b6a200641e00710bf091a200341d8236a20034180336a200341a02b6a200510ae0320034187336a200341d8236a41c80710bf091a200341143a00a02b200341a02b6a41017220034180336a41cf0710bf091a200341a02b6a10a90220061031200041186a41003a000020004200370308200020032800a00a3600192000411c6a200341a30a6a28000036000020004200370300200424000f0b200320083b00f911200341fb116a20084110763a0000200320063a00f8112003200f3703f0112003200b3602e80a2003200c3703e00a2011410876210e200241ff01710d022011411076210220032902e40a210f20032902f411210c200e41ff01714101470d012003200d41087622083b008f0a200341910a6a20084110763a0000200341a00a6a41086a2209200341c00a6a41086a2802003602002003200c3701860a2003200d3a008e0a200320073601820a200320103601920a200320032902c00a3703a00a2003200a3b019e0a2003200f3701960a20032900870a210c20032800830a210820032800930a210b200328009b0a2106200328008f0a210720032d00820a210e20034180336a200341a02b6a41880310bf091a20012001280200417f6a220d360200200a410876210a200e41107421100240200d0d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a220e200e280200417f6a220e360200200e0d00200110310b200f4208882105200a41ff0171210e20022010722102200341d8096a41086a2009280200360200200320032903a00a3703d80920034190206a20034180336a41880310bf091a4102210a0b20034190026a41086a200341d8096a41086a280200360200200320032903d80937039002200341c81c6a20034190206a41880310bf091a2005a7210d4201210f0c020b200320103602e00a200320073602f0112002410874200e41ff017172210e2003200c3702f411200c422888a72108200c422088a721062003200f3702e40a200f422088a7210b20032903e00a210c20032903f011220fa72107410021020b200341c7156a20084110763a0000200341c5156a20083b0000200341dc156a2009360200200341d8156a200a360200200341d4156a200b360200200341cc156a200c370200200341b8156a41106a200d360200200341c4156a20063a0000200320013602e0152003200e410874200241ff01712202723602b8152003200f3702bc15200341a02b6a108902024002400240024020032d00a02b2002470d0002400240024002400240024020020e03000201000b20032d00a12b200e41ff01712202470d0620024101470d03200341b8156a410272200341a02b6a410272412010c2094521080c020b20032d00a42b200fa741ff01712202470d06410121080240024020020e03010003010b200341b8156a410572200341a02b6a410572412010c2094521080c020b200341a82b6a280200200f422088a7460d030c090b200720032802a42b4621080b20032802c82b22022002280200417f6a220b3602000240200b0d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a220b200b280200417f6a220b360200200b0d00200210310b2008450d080c050b20032802c82b22022002280200417f6a220836020020080d042002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d04200210310c040b20032802c415200341ac2b6a280200470d0520032802c82b22022002280200417f6a220836020020080d032002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d03200210310c030b20032802c82b22022002280200417f6a220836020020080d052002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d05200210310c050b20032802c82b22022002280200417f6a220836020020080d042002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d04200210310c040b20032802c82b22022002280200417f6a220836020020080d032002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d03200210310c030b20012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b4200210f0b20034180336a41086a20034190026a41086a280200360200200320032903900237038033200341a02b6a200341c81c6a41880310bf091a0c020b20032802c82b22022002280200417f6a220836020020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d00200210310b20012001280200417f6a22023602004209210f024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310c010b0b200341e0116a41086a220120034180336a41086a28020036020020032003290380333703e01120034180196a200341a02b6a41880310bf091a200f4209510d01200341d0116a41086a22092001280200360200200320032903e0113703d011200341c80e6a20034180196a41880310bf091a200341fb116a20024110763a0000200341f9116a20023b00002003419c126a410236020020034198126a200e36020020034194126a200636020020034190126a200d3602002003418c126a200b36020020034188126a2007360200200341f0116a41106a200c370300200341fc116a2008360200200341a0126a20032903d011370300200341a8126a20092802003602002003200a3a00f8112003200f3703f011200341b0126a200341c80e6a41880310bf091a200341b8156a200341800b6a41c80310bf091a200341800a6a41026a220220032d00db233a0000200320032f00d9233b01800a20032d00d823210120032802dc23210820034180196a200341d8236a41086a41c80310bf091a200341c00a6a41106a220b200341b8276a290300370300200341c00a6a41086a200341b0276a2903003703002003200341a8276a2903003703c00a02400240200f500d0020034190206a200341f0116a41c80310bf091a200341d8096a41026a20022d00003a0000200320032f01800a3b01d809200341a02b6a20034180196a41c80310bf091a200341c81c6a41106a200b290300370300200341c81c6a41086a220b200341c00a6a41086a290300370300200320032903c00a3703c81c41e803102f2202450d02200220013a0000200220032f01d8093b000120022008360204200241036a200341da096a2d00003a0000200241086a200341a02b6a41c80310bf091a200241e0036a200341d81c6a290300370300200241d8036a200b290300370300200220032903c81c3703d003200341c81c6a20034190206a41c80310bf091a410a21014100210b0c010b200341a00a6a41026a20022d00003a0000200320032f01800a3b01a00a200341c81c6a20034180196a41c80310bf091a200341e00a6a41106a200b290300370300200341e00a6a41086a200341c00a6a41086a290300370300200320032903c00a3703e00a4101210b200821020b20034190206a200341b8156a41c80310bf091a200320013a00a02b200320032f01a00a3b00a12b2003200341a20a6a2d00003a00a32b200320023602a42b200341a02b6a41086a200341c81c6a41c80310bf091a200341802f6a200341f00a6a290300370300200341f82e6a200341e00a6a41086a290300370300200341f02e6a20032903e00a37030020034180336a20034190206a200341a02b6a10af030240200b450d00200341f0116a10ad010b02402003280280334119460d00200341a02b6a20034180336a41b80710bf091a0240024020032802a02b410b460d00418fe8c1002102410121030c010b200341a82b6a10ad01200341f02e6a10a3014184e8c1002102410021030b2002ad4280808080b00184210f410321020c030b200041186a41003a000020004200370308200020032800f9093600192000411c6a200341fc096a28000036000020004200370300200424000f0b1039000b200341d8236a10a301200341800b6a10ad014280808080b001210f410221020b2000200f370024200020033a0022200041e3003a0021200041206a20023a0000200041186a41003a00002000420037030820004201370300200424000ba80101017f024020002802082201450d0020002802002100200141246c210103400240024002400240024020002d00000e050400010204030b2000410c6a280200450d03200041086a28020010310c030b2000410c6a280200450d02200041086a28020010310c020b2000410c6a280200450d01200041086a28020010310c010b200041086a280200450d00200041046a28020010310b200041246a21002001415c6a22010d000b0b0be30201027f0240200041ac026a2802002201450d0020002802a40221022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b0240200041a8026a2802002202450d002002410c6c450d0020002802a40210310b0240200041b8026a2802002202450d0020024104742101200041b0026a28020041086a2102034002402002280200450d002002417c6a28020010310b200241106a2102200141706a22010d000b0b0240200041b4026a28020041ffffffff0071450d0020002802b00210310b0240200041bc026a2802002202450d00200041c0026a280200450d00200210310b0240200041cc026a280200450d00200041c8026a28020010310b0240200041e0026a2802002202450d00200241c1006c450d0020002802dc0210310b20002802e80221020240200041f0026a2802002201450d00200210310b200020013602f002200020023602e8020b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d0020021098020b0f0b200041086a10ad01200041046a2202280200109c02200228020010310bcc0101037f200028022822012001280200417f6a220236020020002d0001210302400240024020002d00000d004100210020020d022001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a22023602002002450d010c020b4101210020020d012001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d010b200110310b200341ff01714100472000720bbe06030d7f017e037f230041306b220224002002200141026a2f01003b012e2002200141066a2f01003b012c20022001410a6a2f01003b012a200141046a2d00002103200141056a2d00002104200141086a2d00002105200141096a2d000021062001410c6a2d000021072001410d6a2d0000210820012d0001210920012d0000210a20022001410e6a2f01003b0128200141116a2d0000210b200141106a2d0000210c2002200141126a2f01003b0126200141156a2d0000210d200141146a2d0000210e2002200141166a2f01003b01242001411a6a290100210f200141196a2d00002110200141186a2d000021112001280228210120022f012e211202400240200a0d0020012001280200417f6a220a360200200220123b0122200220022f012c3b0120200220022f012a3b011e200220022f01283b011c200220022f01263b011a200220022f01243b01182002200f3703080240200a0d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a220a200a280200417f6a220a360200200a0d00200110310b0240200941ff01714101460d00200041013a00000c020b200020022f01223b0001200041046a20043a0000200041036a20033a0000200041086a20063a0000200041076a20053a0000200041056a20022f01203b00002000410c6a20083a00002000410b6a20073a0000200041096a20022f011e3b0000200041106a200b3a00002000410f6a200c3a00002000410d6a20022f011c3b0000200041146a200d3a0000200041136a200e3a0000200041116a20022f011a3b0000200041186a20103a0000200041176a20113a0000200041003a0000200041156a20022f01183b0000200041196a20022903083700000c010b200220123b0120200220022f012c3b011e200220022f012a3b011c200220022f01283b011a200220022f01263b01182002200f37020c200220103a000b200220113a000a200220022f01243b0108200041013a000020012001280200417f6a220036020020000d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22002000280200417f6a220036020020000d00200110310b200241306a24000b18002001ad4220862000ad842003ad4220862002ad84102c0b130020002002ad4220862001ad841018109c090bec0101047f230041c0006b22022400410f210341ece4c800210441042105024002400240024002400240200141ff01710e06000102030405000b2002411c6a41013602002002420137020c200241d897ca0036020820024104360224200241d8e3c8003602202002200241206a360218200241086a41e0e3c8001047000b41dde4c8002104410021050c030b411a210341c3e4c8002104410121050c020b411d210341a6e4c8002104410221050c010b411321034193e4c8002104410321050b200041033b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000bd18f01040a7f047e047f037e230022032104200341800d6b416071220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0b00010203040506070d1817000b200341b4056a4101360200200342013702a405200341d897ca003602a005200341043602e402200341a484c4003602e0022003200341e0026a3602b005200341a0056a4190eec0001047000b200141246a2802002105200141216a2d0000210620034198046a41186a200141196a29000037030020034198046a41106a200141116a29000037030020034198046a41086a200141096a2900003703002003200129000137039804200341a0056a41286a2201200241286a280200360200200341a0056a41206a2207200241206a290200370300200341a0056a41186a2208200241186a290200370300200341a0056a41106a2209200241106a290200370300200341a0056a41086a220a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341c0026a41086a2202200341e0026a41096a290000370300200341c0026a41106a220b200341e0026a41116a290000370300200341c0026a41186a220c200341e0026a41196a290000370300200320032900e1023703c00220032d00e0024101460d14200341a0016a41186a200c290300370300200341a0016a41106a200b290300370300200341a0016a41086a2002290300370300200320032903c0023703a001200341a0056a20034198046a200341a0016a200610f503200341e0026a41086a2008290300370300200341e0026a41106a2007290300370300200341e0026a41186a2001280200360200200320092903003703e002200a290300210d20032802a405210120032802a0054101460d2f200341f8036a41186a2202200341e0026a41186a280200360200200341f8036a41106a2206200341e0026a41106a290300370300200341f8036a41086a2207200341e0026a41086a290300370300200320032903e0023703f80302402001450d00200341a0056a410710f60320032902a405210d20032802a00521010c300b200341ec026a20032903f803370200200341f4026a2007290300370200200341e0026a411c6a200629030037020020034184036a20022802003602002003200d3702e402200341003602e002200341b8046a41186a20034198046a41186a290300370300200341b8046a41106a20034198046a41106a290300370300200341b8046a41086a20034198046a41086a29030037030020032003290398043703b804200341a0056a200541c00710bf091a200341e0026a200341b8046a200341a0056a10f70320051031200320032800d8033602b8032003200341db036a2800003600bb03200041186a41003a000020004200370308200020032802b8033600192000411c6a20032800bb0336000020004200370300200424000f0b200141246a2802002109200141216a2d0000210a200341a0026a41186a2205200141196a290000370300200341a0026a41106a2206200141116a290000370300200341a0026a41086a2207200141096a290000370300200320012900013703a002200341e0026a41286a200241286a280200360200200341e0026a41206a200241206a290200370300200341e0026a41186a200241186a290200370300200341e0026a41106a200241106a290200370300200341e0026a41086a200241086a290200370300200320022902003703e002200341b8046a200341e0026a109e02200341c0026a41086a2201200341b8046a41096a290000370300200341c0026a41106a2202200341b8046a41116a290000370300200341c0026a41186a2208200341b8046a41196a290000370300200320032900b9043703c00220032d00b8044101460d11200341b8036a41186a2008290300370300200341b8036a41106a2002290300370300200341b8036a41086a2001290300370300200320032903c0023703b803200341d8036a41186a2005290300370300200341d8036a41106a2006290300370300200341d8036a41086a2007290300370300200320032903a0023703d8030240200341b8036a200341d8036a412010c2090d00200341b8046a410810f603200341ef026a200341b8046a41086a2802002201360000200341b8056a41003a0000200341c8056a2001360000200320032903b8043700e702200341c1056a200341e0026a41086a290000370000200342003703a805200342013703a005200320032900e0023700b905410121020c2c0b200341f8036a41186a2206200341d8036a41186a290300370300200341f8036a41106a2207200341d8036a41106a290300370300200341f8036a41086a2208200341d8036a41086a290300370300200320032903d8033703f80320034190056a200341b8036a10f803200341e0026a20032802900520032802980510f903200341ec026a280200210b0240024020032802e00222050d004200210e4100210141042105410021024200210d0c010b200341e0026a41186a290300210d200341e0026a41106a290300210e200341e0026a41086a280200210220032802e40221010b20034198046a41186a200629030037030020034198046a41106a200729030037030020034198046a41086a2008290300370300200320032903f80337039804024020024120490d00200341e0026a410110f60320032f00e10220032d00e3024110747221020c290b200341d4046a20034198046a41186a290300370200200341cc046a20034198046a41106a290300370200200341c4046a20034198046a41086a29030037020020032003290398043702bc042003200a3a00dc04200320093602b804200341206a20052002200341b8046a10fa032003280220450d0b20032802242107200341e0026a41206a200341b8046a41206a290300370300200341e0026a41186a200341b8046a41186a290300370300200341e0026a41106a200341b8046a41106a290300370300200341e0026a41086a200341b8046a41086a290300370300200320032903b8043703e00220022007490d12024002400240024020022001470d00200141016a22062001490d09200141017422082006200820064b1b22064104200641044b1bad42287e220f422088a7454102742106200fa721080240024020010d00200341003602c0020c010b200341c8026a4104360200200320053602c0022003200141286c3602c4020b20034180026a20082006200341c0026a104e20034188026a28020021012003280280024101460d012003280284022105200141286e21010b2005200741286c6a220641286a2006200220076b41286c10c0091a200641206a200341e0026a41206a290300370200200641186a200341e0026a41186a290300370200200641106a200341e0026a41106a290300370200200641086a200341e0026a41086a290300370200200620032903e002370200200341106a200241016a2202ad4200420a420010be0920032903102210420a7c220f200e56200341106a41086a290300200f201054ad7c2210200d562010200d5122061b450d01200341e0026a200341b8036a200f200e7d2010200d7d200f200e54ad7d10a80320032d00e00222064107460d0220032f00e10220032d00e30241107472210220032902e402210d0c2c0b2001450d070c290b200e200f58200d20105820061b0d00200341b8036a200e200f7d200d20107d200e200f54ad7d10bc020b200341f8026a20103703002003200f3703f0022003200b3602ec02200320023602e802200320013602e402200320053602e002200328029805210220032802900521060240024020050d002006200210bd020c010b20062002200341e0026a10fb032005450d002001450d00200141286c450d00200510310b200341b8056a41003a0000200341bc056a20034183056a280000360000200342003703a005200342003703a80520032003280080053600b9050c2a0b200141246a2802002109200141216a2d0000210a200341d8036a41186a2205200141196a290000370300200341d8036a41106a2206200141116a290000370300200341d8036a41086a2207200141096a290000370300200320012900013703d803200341e0026a41286a200241286a280200360200200341e0026a41206a200241206a290200370300200341e0026a41186a200241186a290200370300200341e0026a41106a200241106a290200370300200341e0026a41086a200241086a290200370300200320022902003703e002200341a0016a200341e0026a109e02200341c0026a41086a2201200341a0016a41096a290000370300200341c0026a41106a2202200341a0016a41116a290000370300200341c0026a41186a2208200341a0016a41196a290000370300200320032900a1013703c002024020032d00a0014101470d00200341a0056a41206a41023a0000200341a0056a41186a41003a0000200342003703a805200342013703a005200341a0056a41086a21010c250b200341f8036a41186a2008290300370300200341f8036a41106a2002290300370300200341f8036a41086a2001290300370300200320032903c0023703f803200341a0026a200341f8036a10f803200341a0016a20032802a00220032802a80210f90320034198046a41186a200529030037030020034198046a41106a200629030037030020034198046a41086a2007290300370300200320032903d80337039804200341a0016a41186a2201290300210e200120032903f802370300200341003602e00220032903b0012110200320032903f0023703b00120032903a801210f200320032903e8023703a80120032903a001210d200320032903e0023703a001200da72201450d0f200341fc026a20034198046a41186a290300370200200341f4026a200341a8046a290300370200200341ec026a20034198046a41086a29030037020020032003290398043702e4022003200a3a008403200320093602e002200341386a2001200fa72205200341e0026a10fa03200d422088a721020240024020032802380d00200328023c220620054f0d102001200641286c6a2207200741286a20052006417f736a41286c10c0091a02402005417f6a22050d004200210f4200210d0c220b200341286a2005ad4200420a420010be092003290328220d420a7c220f201056200341306a290300200f200d54ad7c220d200e56200d200e511b450d21200341b8036a200341f8036a200f20107d200d200e7d200f201054ad7d10a80320032d00b80322064107460d2220032d00bb03210520032f00b903210720032902bc03210d200341c0056a20063a0000200341b8056a41003a00002003200720054110747222053b00c105200341c3056a20054110763a00002003200d3702c405200342003703a805200342013703a0050c010b200341c0026a410210f603200341c7036a200341c0026a41086a2802002205360000200341a0056a41186a41003a0000200341c8056a2005360000200320032903c0023700bf03200341c1056a200341b8036a41086a290000370000200342003703a805200342013703a005200320032900b8033700b9050b2002450d23200241286c450d23200110310c230b200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341c0026a41086a2201200341e9026a290000370300200341c0026a41106a2202200341f1026a290000370300200341c0026a41186a2205200341f9026a290000370300200320032900e1023703c002024020032d00e0024101470d00200320032800f8033602d803200320032900a001370398042003200341fb036a2800003600db032003200341a7016a28000036009f04200041186a41003a000020004200370308200020032802d8033600192000411c6a20032800db03360000200041206a41023a00002000200329039804370021200041286a200328009f0436000020004201370300200424000f0b200341b8046a41186a2005290300370300200341b8046a41106a2002290300370300200341b8046a41086a2001290300370300200320032903c0023703b804200341e0026a200341b8046a10f803200341a0056a20032802e002220220032802e802220110f9030240024020032802a00522050d004200210d41042105410021014200210e0c010b2002200110bd02200341b8056a290300210e200341b0056a290300210d20032802a40521010b024020032802e402450d00200210310b02402001450d00200141286c450d00200510310b200341b8046a200d200e10bc02200320032800f8033602d8032003200341fb036a2800003600db03200041186a41003a000020004200370308200020032802d8033600192000411c6a20032800db0336000020004200370300200424000f0b41022105200141026a2f01002106200141046a2802002109200320012d00013a009005200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a2201200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341b8046a41086a2202200341e9026a290000370300200341b8046a41106a2207200341f1026a290000370300200341b8046a41186a2208200341f9026a290000370300200320032900e1023703b80402400240024020032d00e0024101460d00200341a0016a41186a2008290300370300200341a0016a41106a2007290300370300200341a0016a41086a2002290300370300200320032903b8043703a00120034198046a41186a2202420037030020034198046a41106a2205420037030020034198046a41086a220742003703002003420037039804200341a0056a41f3c6c000410610a70220072001290000370300200320032900a00537039804200341a0056a41ec90c900410610a70220022001290000370300200520032900a005370300200341c8006a20034198046a412010c002200328024c210120032802482102200341c0006a41a1e2c800411010c0022003280244210520032802402107200320063b01b40520032005410020071b3602ac0520032001410020021b3602a8052003418ff5c0003602a005200320034190056a3602b0052003200341a0016a3602a405200341c0026a200341a0056a10fc03200341203602bc042003200341c0026a3602b804200341a0056a200341b8046a10b5010240024020032d00a0054101470d00200341f8026a4200370300200341f0026a4200370300200341e8026a4200370300200342003703e0020c010b200341f8026a200341b9056a290000370300200341f0026a200341b1056a290000370300200341e8026a200341a9056a290000370300200320032900a1053703e0020b200341a0056a200341e0026a10f80320032802a005220220032802a805108f032101024020032802a405450d00200210310b02402001450d00200341a0056a410510f603200320032900a1053703f8032003200341a8056a2800003600ff0320032d00a00521050c010b200341a0056a200341a0016a4214420010a803200320032900a1053703a8032003200341a0056a41086a2800003600af03024020032d00a00522054107470d00200341b8036a41086a200341a0016a41086a290300370300200341b8036a41106a2202200341a0016a41106a290300370300200341b8036a41186a2205200341a0016a41186a290300370300200320032903a0013703b80320032d00900521074128102f2201450d2820012009360200200120032903b803370204200120032f01c0023b00252001410c6a200341c0036a290300370200200141146a20022903003702002001411c6a20052903003702002001200741ff01714100473a0024200141276a200341c2026a2d00003a000020034198046a200341e0026a10f80320032802a00421052003280298042102413c102f2207450d282003423c3702bc04200320073602b804200341b8046a410110cb01200341b8046a200141046a4120107e20012d00244101460d02200341003a00a005200341b8046a200341a0056a4101107e0c030b200320032800af033600ff03200320032903a8033703f8030b200320032800a00236028002200320032903f8033703d803200320032800ff033600df032003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a200328008302360000200041206a20053a0000200020032903d803370021200041286a20032800df0336000020004201370300200424000f0b200341013a00a005200341b8046a200341a0056a4101107e0b200320012802003602a005200341b8046a200341a0056a4104107e200342003703a805200342143703a005200341b8046a200341a0056a4110107e2002200520032802b804220720032802c004109f02024020032802bc04450d00200710310b0240200328029c04450d00200210310b2001103120032d0090052101200341ad056a200341e0026a41086a290300370000200341b5056a200341e0026a41106a290300370000200341bd056a200341e0026a41186a290300370000200341c5056a20032903a001370000200341cd056a200341a0016a41086a290300370000200341d5056a200341a0016a41106a290300370000200341dd056a200341a0016a41186a290300370000200341e6056a20063b0100200341e5056a20013a0000200341013a00a405200341133a00a005200320032903e0023700a505200341a0056a10a902200320032800a002360280022003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a20032800830236000020004200370300200424000f0b200141286a2802002106200141246a2802002107200141226a2f01002108200141216a2d00002105200341a0016a41186a200141196a290000370300200341a0016a41106a200141116a290000370300200341a0016a41086a200141096a290000370300200320012900013703a001200320053a009005200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341b8036a41086a2201200341e0026a41096a290000370300200341b8036a41106a2202200341e0026a41116a290000370300200341b8036a41186a2205200341e0026a41196a290000370300200320032900e1023703b8030240024020032d00e0024101460d00200341b8046a41186a2005290300370300200341b8046a41106a2002290300370300200341b8046a41086a2001290300370300200320032903b8033703b804200320083b01b405200320063602ac05200320073602a8052003418ff5c0003602a005200320034190056a3602b0052003200341a0016a3602a405200341c0026a200341a0056a10fc032003412036029c042003200341c0026a36029804200341a0056a20034198046a10b5010240024020032d00a0054101470d00200341f8026a4200370300200341f0026a4200370300200341e8026a4200370300200342003703e0020c010b200341f8026a200341b9056a290000370300200341f0026a200341b1056a290000370300200341e8026a200341a9056a290000370300200320032900a1053703e0020b0240200341e0026a200341b8046a412010c209450d00200341a0056a410610f603200320032900a1053703f8032003200341a8056a2800003600ff0320032d00a00521010c020b20034198046a200341b8046a10f803200341a0056a200328029804220220032802a004220110f9030240024020032802a00522050d004200210d41002101410421054200210e0c010b2002200110bd02200341b8056a290300210e200341b0056a290300210d20032802a40521010b0240200328029c04450d00200210310b02402001450d00200141286c450d00200510310b200341a0016a200d200e10bc02200320032800a002360280022003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a20032800830236000020004200370300200424000f0b410221010b200320032800a00236028002200320032903f8033703d803200320032800ff033600df032003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a200328008302360000200041206a20013a0000200020032903d803370021200041286a20032800df0336000020004201370300200424000f0b20034180026a41186a200141196a29000037030020034180026a41106a200141116a29000037030020034180026a41086a200141096a2900003703002003200129000137038002200341a0026a41186a200141396a290000370300200341a0026a41106a200141316a290000370300200341a0026a41086a200141296a2900003703002003200141216a2900003703a002200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a2201200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341b8046a41086a2202200341e0026a41096a290000370300200341b8046a41106a2205200341e0026a41116a290000370300200341b8046a41186a2206200341e0026a41196a290000370300200320032900e1023703b80420032d00e0024101460d09200341d8036a41186a2006290300370300200341d8036a41106a2005290300370300200341d8036a41086a2002290300370300200320032903b8043703d803200341e0026a20034180026a10f803200341a0056a20032802e002220620032802e80210f9032001280200410020032802a00522011b210220032802a4052105024020032802e402450d00200610310b2001410420011b21112005410020011b2112024002402002450d002011200241286c6a210c200341a0056a410472210b200341a0056a41256a2105201121010340200341e0026a41206a2206200141206a280200360200200341e0026a41186a2207200141186a290200370300200341e0026a41106a2208200141106a290200370300200341e0026a41086a2209200141086a290200370300200320012902003703e002200141246a2d00002102200341b8046a41026a220a200141276a2d00003a00002003200141256a2f00003b01b80420024102460d01200520032f01b8043b0000200341a0056a41206a2006280200360200200341a0056a41186a2007290300370300200341a0056a41106a2008290300370300200341a0056a41086a2009290300370300200541026a200a2d00003a0000200320032903e0023703a005200320023a00c405200b200341d8036a412010c209450d02200141286a2201200c470d000b0b200341a0056a410310f603200320032900a1053703e8012003200341a8056a2800003600ef0120032d00a00521012012450d1b201241286c450d1b201110310c1b0b02402012450d00201241286c450d00201110310b200341c0026a41086a220520034180026a41086a290300370300200341c0026a41106a220620034180026a41106a290300370300200341c0026a41186a220920034180026a41186a290300370300200341b8036a41086a220a200341a0026a41086a290300370300200341b8036a41106a220b200341a0026a41106a290300370300200341b8036a41186a220c200341a0026a41186a29030037030020032003290380023703c002200320032903a0023703b8034200210d20034198046a41186a2201420037030020034198046a41106a2207420037030020034198046a41086a220842003703002003420037039804200341a0056a41f3c6c000410610a7022008200341a0056a41086a2202290000370300200320032900a00537039804200341a0056a41ec90c900410610a70220012002290000370300200720032900a005370300200341e0006a20034198046a412010c0022003280264211220032802602111200820052903003703002007200629030037030020012009290300370300200341f8036a41086a2209200a290300370300200341f8036a41106a220a200b290300370300200341f8036a41186a220b200c290300370300200320032903c00237039804200320032903b8033703f803200341e0046a200341d8036a10fd03200341a0056a20032802e00420032802e80410fe03200341ac056a280200210c0240024020032802a00522060d004104210641002102410021054200210e0c010b200341a0056a41186a290300210e200341a0056a41106a290300210d2002280200210520032802a40521020b200341b8046a41086a2008290300370300200341b8046a41106a2007290300370300200341b8046a41186a2001290300370300200341a0016a41086a2009290300370300200341a0016a41106a200a290300370300200341a0016a41186a200b29030037030020032003290398043703b804200320032903f8033703a0012005411f4b0d03200341a0056a41086a2207200341b8046a41086a290300370300200341a0056a41106a2208200341b8046a41106a290300370300200341a0056a41186a2209200341b8046a41186a290300370300200341e0026a41086a220a200341a0016a41086a290300370300200341e0026a41106a220b200341a0016a41106a290300370300200341e0026a41186a2213200341a0016a41186a290300370300200320032903b8043703a005200320032903a0013703e00220052002470d02200241016a22012002490d00200241017422142001201420014b1b22014104200141044b1bad42c4007e220f422088a7454102742101200fa721140240024020020d0020034100360290050c010b20034198056a410436020020032006360290052003200241c4006c360294050b20034180056a2014200120034190056a104e20034188056a28020021012003280280054101470d0120010d220b103b000b2003280284052106200141c4006e21020b2006200541c4006c6a22012012410020111b360200200120032903a0053702042001410c6a2007290300370200200141146a20082903003702002001411c6a2009290300370200200120032903e0023702242001412c6a200a290300370200200141346a200b2903003702002001413c6a2013290300370200200341d0006a200541016a2205ad4200420a420010be090240024020032903502210420a7c220f200d58200341d0006a41086a290300200f201054ad7c2210200e582010200e5122011b0d00200341a0056a200341d8036a200f200d7d2010200e7d200f200d54ad7d10a80320032d00a00522014107460d0120032d00a305210520032f00a1052107200320032902a4053702f404200320072005411074724108742001723602f0040c170b200d200f58200e20105820011b0d00200341d8036a200d200f7d200e20107d200d200f54ad7d10bc020b41072101200341073a00f0040c010b200341f0046a410110f603200d210f200e211020032d00f00422014107470d140b200341b8056a20103703002003200f3703b0052003200c3602ac05200320053602a805200320023602a405200320063602a00520032802e804210520032802e00421070240024020060d002007200510bd020c010b20072005200341a0056a10ff032006450d002002450d00200241c4006c450d00200610310b200320032900f1043703e0022003200341f8046a2800003600e7020c140b20034198046a41186a200141196a29000037030020034198046a41106a200141116a29000037030020034198046a41086a200141096a2900003703002003200129000137039804200341a0016a41186a200141396a290000370300200341a0016a41106a200141316a290000370300200341a0016a41086a200141296a2900003703002003200141216a2900003703a001200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341c0026a41086a2201200341e0026a41096a290000370300200341c0026a41106a2202200341e0026a41116a290000370300200341c0026a41186a2205200341e0026a41196a290000370300200320032900e1023703c00220032d00e0024101460d01200341b8046a41186a2005290300370300200341b8046a41106a2002290300370300200341b8046a41086a2001290300370300200320032903c0023703b804200341f8036a200341b8046a10fd03200341e0026a20032802f80320032802800410fe03200341e0026a41186a2201290300210e200120032903b80537030041002108200341003602a00520032903f0022110200320032903b0053703f00220032903e802210f200320032903a8053703e80220032903e002210d200320032903a0053703e002200da72207450d02200d422088210d0240200fa72206450d00200741246a210a41002109410021084100210202400340024002402008450d002007200241c4006c6a21012007200220096a41c4006c6a210503400240200141046a20034198046a412010c2090d00200141246a200341a0016a412010c209450d030b2005200141c40010bf0941c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141606a20034198046a412010c2090d002001200341a0016a412010c209450d020b200141c4006a2101200241016a22022006490d000b410021080c030b2009417f6a2109200841016a2108200241016a22022006490d000b0b024020080d00410021080c010b2007200220086b41c4006c6a2007200241c4006c6a200620026b41c4006c10c0091a0b200da7210202400240200620086b22012006490d00200341a0056a410210f6030c010b200d200f422086842115024020010d004200210f4200210d0c0e0b200341e8006a2001ad22164200420a420010be092003290368220d420a7c220f201058200341f0006a290300200f200d54ad7c220d200e58200d200e511b0d0d200341a0056a200341b8046a200f20107d200d200e7d200f201054ad7d10a803024020032d00a00522014107470d002016422086201542ffffffff0f8384210e0c0f0b20032d00a305210520032f00a1052106200320032902a4053702a405200320062005411074724108742001723602a0050b2002450d0b200241c4006c450d0b200710310c0b0b200341e0026a410510f60320032f00e10220032d00e3024110747221020c1c0b410221010c0f0b200341a0056a410210f6030c080b410221010c100b200620051049000b200341b8036a410210f603200341ef026a200341b8036a41086a2802002201360000200341b8056a41003a0000200341c8056a2001360000200320032903b8033700e702200341c1056a200341e0026a41086a290000370000200342003703a805200342013703a005200320032900e0023700b9050c130b200341a0056a41206a41023a0000200341a0056a41186a41003a0000200342003703a805200342013703a005200341a0056a41086a21010c1a0b200720021048000b410221010c1a0b200141c4006a2802002107200141c1006a2d00002105200341d8036a41186a200141196a290000370300200341d8036a41106a200141116a290000370300200341d8036a41086a200141096a290000370300200320012900013703d803200341f8036a41186a200141396a290000370300200341f8036a41106a200141316a290000370300200341f8036a41086a200141296a2900003703002003200141216a2900003703f803200341a0056a41286a2201200241286a280200360200200341a0056a41206a2206200241206a290200370300200341a0056a41186a2208200241186a290200370300200341a0056a41106a2209200241106a290200370300200341a0056a41086a220a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e0202400240024020032d00e0024101470d00410221090c010b200341a0056a200341f8036a200341d8036a200510f503200341e0026a41086a2008290300370300200341e0026a41106a2006290300370300200341e0026a41186a2001280200360200200320092903003703e00220032f00a50520032d00a705411074722108200a290300210d20032d00a405210920032802a0054101460d00200341b8036a41186a200341e0026a41186a2201280200360200200341b8036a41106a200341e0026a41106a290300370300200341b8036a41086a200341e0026a41086a290300370300200320032903e0023703b803200341003602a805200342013703a0052007200341a0056a10d40120034198046a20032802a00520032802a805109a01200341a0016a41186a20034198046a41186a2202290200370300200341a0016a41106a20034198046a41106a2205290200370300200341a0016a41086a20034198046a41086a220629020037030020032003290298043703a001024020032802a405450d0020032802a00510310b2002420037030020054200370300200642003703002003420037039804200341a0056a41f3c6c000410610a7022006200341a0056a41086a220a290000370300200320032900a00537039804200341a0056a41ec90c900410610a7022002200a290000370300200520032900a00537030020034198016a20034198046a412010c002200328029c0121022003280298012105200341b8046a200341d8036a10fd03200341e0026a20032802b80420032802c00410fe032001290300210f200120032903b80537030020032903f0022115200320032903b0053703f00220032903e8022110200320032903a8053703e802200341003602a00520032903e002210e200320032903a0053703e0020240024002400240024002400240200ea7220a450d00200e422088210e024002402010a722060d004100210c0c010b2002410020051b210b20084108742009722111410021134100210c410021020240034002400240200c450d00200a200241c4006c6a2101200a200220136a41c4006c6a210503400240200141046a200341f8036a412010c2090d00200141246a200341a0016a412010c2090d004100200b20012802006b22122012200b4b1b20114f0d030b2005200141c40010bf0941c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141046a200341f8036a412010c2090d00200141246a200341a0016a412010c2090d004100200b20012802006b22052005200b4b1b20114f0d020b200141c4006a2101200241016a22022006490d000b4100210c0c030b2013417f6a2113200c41016a210c200241016a22022006490d000b0b0240200c0d004100210c0c010b200a2002200c6b41c4006c6a200a200241c4006c6a200620026b41c4006c10c0091a0b200ea72102024002402006200c6b22012006490d00200341a0056a410210f6030c010b200e2010422086842116024020010d00420021104200210e0c040b20034188016a2001ad22174200420a420010be09200329038801220e420a7c221020155820034190016a2903002010200e54ad7c220e200f58200e200f511b0d03200341a0056a200341d8036a201020157d200e200f7d2010201554ad7d10a803024020032d00a00522014107470d002017422086201642ffffffff0f8384210f0c050b20032d00a305210520032f00a1052106200320032902a4053702a405200320062005411074724108742001723602a0050b2002450d01200241c4006c450d01200a10310c010b200341a0056a410210f6030b20032d00a0052202410746210120032802e002210a20024107460d02200a450d040c030b02402015201058200f200e58200f200e511b0d00200341d8036a201520107d200f200e7d2015201054ad7d10bc020b2001ad422086201642ffffffff0f8384210f20010d0002402002450d00200241c4006c450d00200a10310b4100210a0b024020032802e0022201450d0020032802e4022202450d00200241c4006c450d00200110310b200341f8026a200e370300200341f0026a20103703002003200f3702e4022003200a3602e002200341073a00a005410121010b20032802c004210220032802b80421050240200a0d002005200210bd020c020b20052002200341e0026a10ff030b20032802e4022202450d00200241c4006c450d00200a10310b024020032802bc04450d0020032802b80410310b02402001450d00200341ec026a20032903b803370200200341f4026a200341b8036a41086a290300370200200341e0026a411c6a200341b8036a41106a29030037020020034184036a200341b8036a41186a2802003602002003200d3702e402200320084108742009723602e002200341b8046a41186a200341f8036a41186a290300370300200341b8046a41106a200341f8036a41106a290300370300200341b8046a41086a200341f8036a41086a290300370300200320032903f8033703b804200341a0056a200741c00710bf091a200341e0026a200341b8046a200341a0056a10f70320071031200320032800c0023602a0052003200341c3026a2800003600a305200041186a41003a00004200210d20004200370308200020032802a0053600192000411c6a20032800a3053600000c020b200341a0056a410710f60320032f00a10520032d00a30541107472210820032902a405210d20032d00a00521090b200710800420071031200320032800c0023602a0052003200341c3026a2800003600a305200041236a20084110763a0000200020083b0021200041186a41003a000020004200370308200020032802a0053600192000411c6a20032800a3053600002000200d370024200041206a20093a00004201210d0b2000200d370300200424000f0b20034198046a41186a200141196a29000037030020034198046a41106a200141116a29000037030020034198046a41086a200141096a2900003703002003200129000137039804200341a0016a41186a200141396a290000370300200341a0016a41106a200141316a290000370300200341a0016a41086a200141296a2900003703002003200141216a2900003703a001200341a0056a41286a200241286a280200360200200341a0056a41206a200241206a290200370300200341a0056a41186a200241186a290200370300200341a0056a41106a200241106a290200370300200341a0056a41086a200241086a290200370300200320022902003703a005200341e0026a200341a0056a109e02200341c0026a41086a2201200341e0026a41096a290000370300200341c0026a41106a2202200341e0026a41116a290000370300200341c0026a41186a2205200341e0026a41196a290000370300200320032900e1023703c00202400240024002400240024002400240024020032d00e0024101460d00200341b8046a41186a2005290300370300200341b8046a41106a2002290300370300200341b8046a41086a2001290300370300200320032903c0023703b804200341f8036a20034198046a10fd03200341e0026a20032802f80320032802800410fe03200341e0026a41186a2201290300210e200120032903b80537030041002108200341003602a00520032903f0022110200320032903b0053703f00220032903e802210f200320032903a8053703e80220032903e002210d200320032903a0053703e002200da72207450d01200d422088210d0240200fa72206450d00200741246a210a41002109410021084100210202400340024002402008450d002007200241c4006c6a21012007200220096a41c4006c6a210503400240200141046a200341b8046a412010c2090d00200141246a200341a0016a412010c209450d030b2005200141c40010bf0941c4006a2105200141c4006a2101200241016a22022006490d000c040b0b200a200241c4006c6a210103400240200141606a200341b8046a412010c2090d002001200341a0016a412010c209450d020b200141c4006a2101200241016a22022006490d000b410021080c030b2009417f6a2109200841016a2108200241016a22022006490d000b0b024020080d00410021080c010b2007200220086b41c4006c6a2007200241c4006c6a200620026b41c4006c10c0091a0b200da7210202400240200620086b22012006490d00200341a0056a410210f6030c010b200d200f422086842115024020010d004200210f4200210d0c050b200341f8006a2001ad22164200420a420010be092003290378220d420a7c220f20105820034180016a290300200f200d54ad7c220d200e58200d200e511b0d04200341a0056a20034198046a200f20107d200d200e7d200f201054ad7d10a803024020032d00a00522014107470d002016422086201542ffffffff0f8384210e0c060b20032d00a305210520032f00a1052106200320032902a4053702a405200320062005411074724108742001723602a0050b2002450d02200241c4006c450d02200710310c020b410221010c070b200341a0056a410210f6030b20032d00a0052201410746210220032802e002210720014107460d022007450d040c030b02402010200f58200e200d58200e200d511b0d0020034198046a2010200f7d200e200d7d2010200f54ad7d10bc020b2001ad422086201542ffffffff0f8384210e20010d0002402002450d00200241c4006c450d00200710310b410021070b024020032802e0022201450d0020032802e4022202450d00200241c4006c450d00200110310b200341f8026a200d370300200341f0026a200f3703002003200e3702e402200320073602e00241072101200341073a00a005410121020b200328028004210520032802f8032106024020070d002006200510bd020c020b20062005200341e0026a10ff030b20032802e4022205450d00200541c4006c450d00200710310b024020032802fc03450d0020032802f80310310b200320032900a1053703a8032003200341a8056a2800003600af0302402002450d00200320032800a002360280022003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a20032800830236000020004200370300200424000f0b200320032800af033600df03200320032903a8033703d8030b200320032800a00236028002200320032903d8033703b803200320032800df033600bf032003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a200328008302360000200041206a20013a0000200020032903b803370021200041286a20032800bf0336000020004201370300200424000f0b20032d00a0052201410746210220032802e002210720014107460d022007450d040c030b02402010200f58200e200d58200e200d511b0d00200341b8046a2010200f7d200e200d7d2010200f54ad7d10bc020b2001ad422086201542ffffffff0f8384210e20010d0002402002450d00200241c4006c450d00200710310b410021070b024020032802e0022201450d0020032802e4022202450d00200241c4006c450d00200110310b200341f8026a200d370300200341f0026a200f3703002003200e3702e402200320073602e00241072101200341073a00a005410121020b200328028004210520032802f8032106024020070d002006200510bd020c020b20062005200341e0026a10ff030b20032802e4022205450d00200541c4006c450d00200710310b024020032802fc03450d0020032802f80310310b200320032900a1053703a8032003200341a8056a2800003600af0302402002450d00200320032800a002360280022003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a20032800830236000020004200370300200424000f0b200320032800af033600df03200320032903a8033703d8030b200320032800a00236028002200320032903d8033703b803200320032800df033600bf032003200341a3026a28000036008302200041186a41003a00002000420037030820002003280280023600192000411c6a200328008302360000200041206a20013a0000200020032903b803370021200041286a20032800bf0336000020004201370300200424000f0b200320032900f1043703e0022003200341f8046a2800003600e7022002450d00200241c4006c450d00200610310b024020032802e404450d0020032802e00410310b200320032903e0023703a803200320032800e7023600af03024020014107470d00200341c5056a20032903d803370000200341ad056a20034180026a41086a290300370000200341b5056a20034180026a41106a290300370000200341bd056a20034180026a41186a290300370000200341cd056a200341d8036a41086a290300370000200341d5056a200341d8036a41106a290300370000200341dd056a200341d8036a41186a290300370000200341023a00a405200341133a00a00520032003290380023700a505200341fd056a200341a0026a41186a290300370000200341f5056a200341a0026a41106a290300370000200341ed056a200341a0026a41086a290300370000200341e5056a20032903a002370000200341a0056a10a902200320032800f9013602e0012003200341fc016a2800003600e301200041186a41003a000020004200370308200020032802e0013600192000411c6a20032800e30136000020004200370300200424000f0b200320032800af033600ef01200320032903a8033703e8010b200320032800f9013602e001200320032903e8013703d001200320032800ef013600d7012003200341fc016a2800003600e301200041186a41003a000020004200370308200020032802e0013600192000411c6a20032800e301360000200041206a20013a0000200020032903d001370021200041286a20032800d70136000020004201370300200424000f0b02402010200f56200e200d56200e200d511b450d00200341f8036a2010200f7d200e200d7d2010200f54ad7d10bc020b2005450d010b024020032802a0012206450d0020032802a4012207450d00200741286c450d00200610310b200341a0016a41186a200d370300200341b0016a200f370300200341a0056a41186a41003a0000200320053602a801200320023602a401200320013602a001200342003703a005200342003703a8050c010b200341b8056a41003a0000200342003703a005200342003703a80502402002450d00200241286c450d00200110310b20032802a00121010b20032802a802210220032802a0022105024020010d002005200210bd020c010b20052002200341a0016a10fb030b024020032802a001450d0020032802a4012201450d00200141286c450d0020032802a00110310b024020032802a402450d0020032802a00210310b200341a0056a41086a210120032903a0054201520d010b200341b8046a41206a200141206a290300220d370300200341b8046a41186a200141186a290300220e370300200341b8046a41106a200141106a290300220f370300200341b8046a41086a200141086a29030022103703002003200129030022153703b804200041286a200d370300200041206a200e370300200041186a200f370300200041106a20103703002000201537030820004201370300200424000f0b200341b8046a41106a200141106a290300220d370300200341b8046a41086a200141086a290300220e37030020032001290300220f3703b804200041186a200d370300200041106a200e3703002000200f37030820004200370300200424000f0b1039000b20032902e402210d20032d00e00221060b200341b8056a41003a0000200341c0056a20063a0000200320023b00c105200341c3056a20024110763a0000200341bc056a20034183056a280000360000200342003703a805200342013703a00520032003280080053600b9052003200d3702c4052001450d00200141286c450d00200510310b0240200328029405450d0020032802900510310b20032903a00542015121020b200341a0056a41086a21012002450d010b200341a0016a41206a200141206a290300220d370300200341a0016a41186a200141186a290300220e370300200341a0016a41106a200141106a290300220f370300200341a0016a41086a200141086a29030022103703002003200129030022153703a001200041286a200d370300200041206a200e370300200041186a200f370300200041106a20103703002000201537030820004201370300200424000f0b200341a0016a41106a200141106a290300220d370300200341a0016a41086a200141086a290300220e37030020032001290300220f3703a001200041186a200d370300200041106a200e3703002000200f37030820004200370300200424000f0b200510800420051031200320032800d8033602b8032003200341db036a2800003600bb03200041186a41003a000020004200370308200020032802b8033600192000411c6a20032800bb03360000200041246a200d370200200041206a200136020020004201370300200424000bf944050f7f017e047f037e047f23004190276b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012f0100417f6a0e03000102000b2001410c6a2802002104200141086a2802002105200141046a2802002106200341186a41086a200241186a290200370300200341256a2002411d6a2900003700002003200241106a2902003703182002410c6a2802002107200241086a280200210841022109200241026a2f0100210a20022d0001210b2002280228210c200241046a280200220d210e4101210f02400240024020022d000022100e03000201000b41022101024002400240200b0e03000102000b410021010c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121010b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4100210f200d210e0c010b024002400240200d41ff01710e03000102000b410021090c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121090b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4102210f2009210e0b200c280200220241016a41014d0d15200c200241016a360200200341cc1f6a2007360200200341c01f6a41086a2008360200200341c01f6a41106a20032903901f370300200341d81f6a200341901f6a41086a290300370300200341e01f6a200341901f6a41106a2903003703002003200a3b01c21f200320013a00c11f2003200f3a00c01f2003200c3602e81f2003200d41807e712211200e41ff0171723602c41f2006200441c0076c6a2101200341c01f6a109d022102024020040d0042002112200621020c0e0b200341c0176a410472211320020d0b200341f0076a41106a210f42002112410021022006210e0340200e2802002109200341c0176a200e41046a221441bc0710bf091a200341c01f6a201441bc0710bf091a024020094123470d00200e41c0076a21020c110b200341b00f6a200341c01f6a41bc0710bf091a200341f0076a200341b00f6a41bc0710bf091a200341306a200341f0076a41bc0710bf091a200320093602c0172013200341306a41bc0710bf091a200341801f6a200341c0176a108c02200341c01f6a200341c0176a41c00710bf091a200d21094101211502400240024020100e03000201000b41022114024002400240200b0e03000102000b410021140c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121140b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f41002115200d21090c010b4102211541022109024002400240200d41ff01710e03000102000b410021090c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121090b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f0b200c28020041016a221641014d0d16200c2016360200200f20032903901f370200200f41086a200341901f6a41086a290300370200200f41106a200341901f6a41106a290300370200200320073602fc07200320083602f8072003200a3b01f207200320143a00f107200320153a00f0072003200c3602980820032011200941ff0171723602f407200341b00f6a200341c01f6a200341f0076a1099020240024020032903b80f4201510d0020032903801f21170c010b20032903801f221720032903c00f221820182017561b21170b427f201220177c221720172012541b2112024020032903b00f4201510d00200241016a2102200e41c0076a220e2001470d010c0e0b0b200e41c0076a210e0c110b200141046a280200210e20012f01022114200341306a41086a200241186a2902003703002003413d6a2002411d6a2900003700004102210a200341026a200241276a2d00003a00002003200241106a2902003703302003200241256a2f00003b01002002410c6a2802002115200241086a2802002107200241026a2f0100210820022802282101200241046a2802002209210d4101210f02400240024020022d00000e03000201000b4102210c02400240024020022d00010e03000102000b4100210c0c010b200341a81f6a41106a200341306a41106a2f01003b0100200341a81f6a41086a200341306a41086a290300370300200320032903303703a81f4101210c0b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4100210f2009210d0c010b024002400240200941ff01710e03000102000b4100210a0c010b200341a81f6a410d6a200341306a410d6a290000370000200341a81f6a41086a200341306a41086a290300370300200320032903303703a81f4101210a0b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4102210f200a210d0b2001280200220241016a41014d0d142001200241016a360200200341cc1f6a22022015360200200341c01f6a41086a2007360200200341c01f6a41106a20032903901f370300200341c01f6a41186a200341901f6a41086a290300370300200341e01f6a200341901f6a41106a290300370300200320083b01c21f2003200c3a00c11f2003200f3a00c01f200320013602e81f2003200941807e71200d41ff0171723602c41f200341c0176a200341c01f6a109e02200341b00f6a41086a220c200341c9176a290000370300200341b00f6a41106a220d200341d1176a290000370300200341b00f6a41186a220f200341d9176a290000370300200320032900c1173703b00f0240024020032d00c0174101460d00200341f0076a41186a200f2903002212370300200341f0076a41106a200d2903002217370300200341f0076a41086a200c2903002218370300200320032903b00f22193703f00720022018370200200341d41f6a2017370200200341dc1f6a2012370200200341abc1c7003602c01f200320193702c41f200320143b01e41f4112102f2202450d03200342123702b40f200320023602b00f200341b00f6a41abc1c7004110107e200341b00f6a200341c01f6a4104724120107e200320143b01c017200341b00f6a200341c0176a4102107e200341c0176a20032802b00f220220032802b80f109a01024020032802b40f450d00200210310b200341203602b40f2003200341c0176a3602b00f200341c01f6a200341b00f6a10b5010240024020032d00c01f4101470d004100210d200341b81f6a41003b0100200341b01f6a4200370300200342003703a81f4100210f41002109410021140c010b200341b01f6a200341d71f6a290000370300200341b81f6a200341df1f6a2f00003b01002003200341cf1f6a2900003703a81f200341cb1f6a280000210d20032800c71f210f20032800c31f210920032f00c11f21140b200341c01f6a41086a200341a81f6a41086a290300370300200341c01f6a41106a200341a81f6a41106a2f01003b0100200320032903a81f3703c01f4110102f2202450d03200241f8c8c00036020c2002410136020820024281808080103702004110102f220c450d03200c41e0c8c00036020c200c4101360208200c42818080801037020020022002280200417f6a2215360200024020150d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22152015280200417f6a221536020020150d00200210310b200341306a410d6a2202200341c01f6a410d6a290000370000200341306a41086a2215200341c01f6a41086a290300370300200341026a2207200341c0176a41026a2d00003a0000200c200c280200417f6a2208360200200320032903c01f370330200320032f00c0173b0100024020080d00200c280208200c28020c2802001102000240200c28020c280204450d00200c28020810310b200c41046a22082008280200417f6a220836020020080d00200c10310b200341901f6a200e108c02200341c01f6a200e41c00710bf091a200341bc0f6a200d360200200341b00f6a41086a200f360200200341b00f6a41106a2003290330370300200341c80f6a2015290300370300200341cd0f6a2002290000370000200341d50f6a20032f01003b0000200341d70f6a20072d00003a0000200320093602b40f200320143b01b20f20034180023b01b00f200320013602d80f200341c0176a200341c01f6a200341b00f6a1097020240024020032903c8174201510d0020032903901f21120c010b20032903901f2212200341c0176a41106a290300221720172012561b21120b200320032800d917360288172003200341c0176a411c6a28000036008b17200320032900e1173703c01f2003200341e8176a2800003600c71f427f201242e8c9aa3e7c221720172012541b211242012117024020032903c0174201520d00200341e0176a2d000021022003200328008b1736008317200320032802881736028017200320032800c71f3600f716200320032903c01f3703f01620032003280280173602a81720032003280083173600ab17200320032903f016370318200320032800f71636001f200341ec176a2802002101200e10310c020b200e10312003200341ab176a28000036009317200320032800a81736029017200041186a41003a0000200041106a20123703002000420137030820002003280290173600192000411c6a200328009317360000200042003703000c150b20012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b200e10fa06200e103141022102420021170b200320032800ab1736009317200320032802a81736029017200320032903183703801f2003200328001f3600871f200041186a41003a0000200041106a20123703002000201737030820002003280290173600192000411c6a200328009317360000200041206a20023a00002000412c6a2001360200200020032903801f370021200041286a20032800871f360000200042013703000c130b2001410c6a2802002104200141086a280200211a200141046a280200211b200341186a41086a200241186a290200370300200341256a2002411d6a2900003700002003200241106a290200370318200241046a280200210e2002410c6a2802002107200241086a28020021084102210f200241026a2f0100210a20022d0001211c20022d000021102002280228210c10bd08200e21014101210d02400240024020100e03000201000b41022102024002400240201c0e03000102000b410021020c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121020b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4100210d200e21010c010b024002400240200e41ff01710e03000102000b4100210f0c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f4101210f0b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f4102210d200f21010b200c280200220f41016a41014d0d13200c200f41016a360200200341cc1f6a2007360200200341c01f6a41086a2008360200200341c01f6a41106a20032903901f370300200341d81f6a200341901f6a41086a290300370300200341e01f6a200341901f6a41106a2903003703002003200a3b01c21f200320023a00c11f2003200d3a00c01f2003200c3602e81f2003200e41807e712211200141ff0171723602c41f201b200441c0076c6a2101200341c01f6a109d022102024020040d0042002112201b21020c040b200341c0176a410472211320020d01200341f0076a41106a210f420021124100210d200341c90f6a220b41036a2106200341d10f6a220541076a211d201b21020240034020022802002109200341c0176a200241046a221441bc0710bf091a200341c01f6a201441bc0710bf091a20094123460d01200341b00f6a200341c01f6a41bc0710bf091a200341f0076a200341b00f6a41bc0710bf091a200341306a200341f0076a41bc0710bf091a200320093602c0172013200341306a41bc0710bf091a200341801f6a200341c0176a108c02200341c01f6a200341c0176a41c00710bf091a200e21094101211502400240024020100e03000201000b41022114024002400240201c0e03000102000b410021140c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121140b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f41002115200e21090c010b4102211541022109024002400240200e41ff01710e03000102000b410021090c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121090b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f0b200c28020041016a221641014d0d15200c2016360200200f20032903901f370200200f41086a200341901f6a41086a290300370200200f41106a200341901f6a41106a290300370200200320073602fc07200320083602f8072003200a3b01f207200320143a00f107200320153a00f0072003200c3602980820032011200941ff0171723602f407200341b00f6a200341c01f6a200341f0076a1099020240024020032903b80f4201510d0020032903801f21170c010b20032903801f221720032903c00f221820182017561b21170b2003200b280000360288172003200628000036008b17200320052900003703c01f2003201d2800003600c71f427f201220177c221720172012541b2112024020032903b00f4201510d00200d41016a210d200241c0076a22022001470d010c050b0b20032d00d00f210e200241c0076a21020c060b200241c0076a21020c070b1039000b200341f0076a41106a210f420021124100210d200341c90f6a220b41036a2106200341d10f6a220541076a211d201b2102034020022802002109200341c0176a200241046a221441bc0710bf091a200341c01f6a201441bc0710bf091a20094123460d05200341b00f6a200341c01f6a41bc0710bf091a200341f0076a200341b00f6a41bc0710bf091a200341306a200341f0076a41bc0710bf091a200320093602c0172013200341306a41bc0710bf091a200341801f6a200341c0176a108c02200341c01f6a200341c0176a41c00710bf091a200e21094101211502400240024020100e03000201000b41022114024002400240201c0e03000102000b410021140c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121140b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f41002115200e21090c010b4102211541022109024002400240200e41ff01710e03000102000b410021090c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121090b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f0b200c28020041016a221641014d0d12200c2016360200200f20032903901f370200200f41086a200341901f6a41086a290300370200200f41106a200341901f6a41106a290300370200200320073602fc07200320083602f8072003200a3b01f207200320143a00f107200320153a00f0072003200c3602980820032011200941ff0171723602f407200341b00f6a200341c01f6a200341f0076a1097020240024020032903b80f4201510d0020032903801f21170c010b20032903801f221720032903c00f221820182017561b21170b2003200b280000360288172003200628000036008b17200320052900003703c01f2003201d2800003600c71f427f201220177c221720172012541b211220032903b00f4201510d03200d41016a210d200241c0076a22022001470d000b0b200121020b200341c01f6a200341c0176a41bc0710bf091a0c030b20032d00d00f210e200241c0076a21020b2003200328008b1736008317200320032802881736028017200320032800c71f3600f716200320032903c01f3703f01620032003280280173602b81720032003280083173600bb17200320032903f0163703a817200320032800f7163600af17200d41016aad42d08ea7017e211720032802dc0f210d024020012002460d000340200210c7042001200241c0076a2202470d000b0b201720127c21120240201a450d00201a41c0076c450d00201b10310b20124280cc9c0a7c2112200320032800bb173600a317200320032802b8173602a017200320032903a81737039017200320032800af173600971710be08200320032800a317360013200320032802a01736021020032003290390173703002003200328009717360007200c200c280200417f6a2202360200024020020d00200c280208200c28020c2802001102000240200c28020c280204450d00200c28020810310b200c41046a22022002280200417f6a220236020020020d00200c10310b200320032802103602c017200320032800133600c317200320032903003703c01f200320032800073600c71f200041186a41003a0000200041106a20123703004201211220004201370308200020032802c0173600192000411c6a20032800c317360000200041206a200e3a00002000412c6a200d360200200020032903c01f370021200041286a20032800c71f3600000c020b200241c0076a21020b024020012002460d000340200210c7042001200241c0076a2202470d000b0b0240201a450d00201a41c0076c450d00201b10310b200341c81f6a41073a0000200341123a00c01f200341c01f6a10a902200320032802b8173602a017200320032800bb173600a317200320032903a81737039017200320032800af173600971710bf08200320032800a317360013200320032802a01736021020032003290390173703002003200328009717360007200c200c280200417f6a22023602002004ad42d08ea7017e20127c4280cc9c0a7c2112024020020d00200c280208200c28020c2802001102000240200c28020c280204450d00200c28020810310b200c41046a22022002280200417f6a220236020020020d00200c10310b200320032802103602c017200320032800133600c317200041186a41003a0000200041106a201237030020004201370308200020032802c0173600192000411c6a20032800c317360000420021120b200020123703000c090b200341f0076a41106a210f42002112410021022006210e0340200e2802002109200341c0176a200e41046a221441bc0710bf091a200341c01f6a201441bc0710bf091a20094123460d03200341b00f6a200341c01f6a41bc0710bf091a200341f0076a200341b00f6a41bc0710bf091a200341306a200341f0076a41bc0710bf091a200320093602c0172013200341306a41bc0710bf091a200341801f6a200341c0176a108c02200341c01f6a200341c0176a41c00710bf091a200d21094101211502400240024020100e03000201000b41022114024002400240200b0e03000102000b410021140c010b200341a81f6a41106a200341186a41106a2f01003b0100200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121140b200341901f6a41106a200341a81f6a41106a2f01003b0100200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f41002115200d21090c010b4102211541022109024002400240200d41ff01710e03000102000b410021090c010b200341a81f6a410d6a200341186a410d6a290000370000200341a81f6a41086a200341186a41086a290300370300200320032903183703a81f410121090b200341901f6a41106a200341a81f6a41106a290300370300200341901f6a41086a200341a81f6a41086a290300370300200320032903a81f3703901f0b200c28020041016a221641014d0d0a200c2016360200200f20032903901f370200200f41086a200341901f6a41086a290300370200200f41106a200341901f6a41106a290300370200200320073602fc07200320083602f8072003200a3b01f207200320143a00f107200320153a00f0072003200c3602980820032011200941ff0171723602f407200341b00f6a200341c01f6a200341f0076a1097020240024020032903b80f4201510d0020032903801f21170c010b20032903801f221720032903c00f221820182017561b21170b427f201220177c221720172012541b211220032903b00f4201510d05200241016a2102200e41c0076a220e2001470d000b0b200121020b200341c01f6a200341c0176a41bc0710bf091a0c010b200e41c0076a21020b024020012002460d000340200210c7042001200241c0076a2202470d000b0b02402005450d00200541c0076c450d00200610310b200341c81f6a41073a0000200341123a00c01f200341c01f6a10a902200c200c280200417f6a22023602002004ad42b896a7017e20127c42d884c9097c211220020d03200c280208200c28020c2802001102000240200c28020c280204450d00200c28020810310b200c41046a22022002280200417f6a22023602002002450d020c030b200e41c0076a210e0b200341f0076a41206a200341d80f6a2903002217370300200341f0076a41186a200341b00f6a41206a2903002218370300200341f0076a41106a200341b00f6a41186a290300370300200341f0076a41086a200341b00f6a41106a290300370300200320032903b80f3703f007200341c01f6a41086a2018370300200341c01f6a41106a20173e0200200341123a00c01f200320023602c41f200241016aad42b896a7017e2117200341c01f6a10a90202402001200e460d000340200e10c7042001200e41c0076a220e470d000b0b201720127c211202402005450d00200541c0076c450d00200610310b201242d884c9097c2112200c200c280200417f6a220236020020020d01200c280208200c28020c2802001102000240200c28020c280204450d00200c28020810310b200c41046a22022002280200417f6a220236020020020d010b200c10310b200320032800c01f3602c0172003200341c31f6a2800003600c317200041186a41003a0000200041106a201237030020004201370308200020032802c0173600192000411c6a20032800c317360000200042003703000b20034190276a24000f0b00000bb77b06027f017e127f037e037f017e230041c0096b22032400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e080001020304050607000b20034184026a4101360200200342013702f401200341d897ca003602f001200341043602cc01200341dcd8c8003602c8012003200341c8016a36028002200341f0016a41c8a3c8001047000b200341c8016a41186a200141196a290000370300200341c8016a41106a200141116a290000370300200341c8016a41086a200141096a290000370300200320012900013703c80120022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22172017280200417f6a221736020020170d00200110310b2003200537039001200320043a008f01200320063a008e01200320073b018c01200320083a008b01200320093a008a012003200a3b0188012003200b3a0087012003200c3a0086012003200d3b0184012003200e3a0083012003200f3a008201200320103b018001200320113a007f200320123a007e200320133b017c200320143a007b200320153a007a200320163b01780240200241ff01710d00410321040c010b4110102f2202450d18200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d18200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22063602004100210420060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b0240024020044103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b410221020c010b20034188026a2202420037030020034180026a22014200370300200341f0016a41086a22044200370300200342003703f001200341f8006a41d4aac800410a10a7022004200341f8006a41086a2206290000370300200320032900783703f001200341f8006a41deaac800410710a7022002200629000037030020012003290078370300200341a8016a200341f0016a10cf04024020032802a80122070d0041002109200341003602602003420137035841012107410021080c170b200320032902ac01220537025c200320073602582005a7210841002102024002402005422088a722090e021801000b410021022009210103402001410176220620026a210420042002200720044105746a200341c8016a412010c2094101481b2102200120066b220141014b0d000b0b0240200720024105746a200341c8016a412010c2092201450d00200341f0016a41186a200341c8016a41186a290300370300200341f0016a41106a200341c8016a41106a290300370300200341f0016a41086a200341c8016a41086a290300370300200320032903c8013703f001200920022001411f766a2204490d08200341f0016a21010c180b02402008450d00200841ffffff3f71450d00200710310b410321020b200041e9b3c800360024200041d1003b002120004200370308200041286a410d360000200041206a20023a0000200041186a41003a0000200042013703000c180b200341a8016a41186a200141196a290000370300200341a8016a41106a200141116a290000370300200341a8016a41086a200141096a290000370300200320012900013703a80120022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22172017280200417f6a221736020020170d00200110310b2003200537038802200320043a008702200320063a008602200320073b018402200320083a008302200320093a0082022003200a3b0180022003200b3a00ff012003200c3a00fe012003200d3b01fc012003200e3a00fb012003200f3a00fa01200320103b01f801200320113a00f701200320123a00f601200320133b01f401200320143a00f301200320153a00f201200320163b01f0010240200241ff01710d00410321040c010b4110102f2202450d17200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d17200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22063602004100210420060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b0240024020044103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b410221020c010b20034188026a2202420037030020034180026a22014200370300200341f0016a41086a22044200370300200342003703f001200341f8006a41d4aac800410a10a7022004200341f8006a41086a2206290000370300200320032900783703f001200341f8006a41deaac800410710a7022002200629000037030020012003290078370300200341c8016a200341f0016a10cf040240024020032802c80122070d0020034100360210200342013703080c010b200320032902cc01220537020c20032007360208410021020240024002402005422088a722080e020201000b410021022008210103402001410176220620026a210420042002200720044105746a200341a8016a412010c2094101481b2102200120066b220141014b0d000b0b200720024105746a200341a8016a412010c2090d00200820024d0d09200720024105746a2201200141206a20082002417f736a41057410c0091a20032008417f6a22023602100240200241e500490d0041002802809a4a450d0020034184016a4101360200200320023602582003410136027c200341e4003602c8012003200341c8016a360280012003200341d8006a36027841002802fc994a210241002802f8994a210141002802849a4a2104200341b0026a41a302360200200341a8026a42df80808010370300200341a4026a41a5a4c8003602002003419c026a421137020020034198026a41d5a7c80036020020034190026a420237030020034180026a4203370300200341f8016a41133602002003418c026a200341f8006a360200200341bcaac8003602fc01200341fcabc8003602f401200341013602f001200141f8fac900200441024622041b200341f0016a20024180a6c00020041b28021011030020032802082107200328021021020b200341f0016a41186a22044200370300200341f0016a41106a22064200370300200341f0016a41086a22084200370300200342003703f001200341f8006a41d4aac800410a10a7022008200341f8006a41086a2201290000370300200320032900783703f001200341f8006a41deaac800410710a7022004200129000037030020062003290078370300200341f0016a200341086a10db042004200341a8016a41186a2903003703002006200341a8016a41106a2903003703002008200341a8016a41086a290300370300200320032903a8013703f001200341f0016a41012007200210ba08200341d8006a41186a22064200370300200341d8006a41106a22084200370300200341d8006a41086a2209420037030020034200370358200341c8016a41d4aac800410a10a7022009200341c8016a41086a2204290000370300200320032900c801370358200341c8016a41e5aac800410510a70220062004290000370300200820032900c801370300200341f0016a200341d8006a412010aa0220032d00f0012106200341f8006a41186a220820034189026a290000370300200341f8006a41106a220920034181026a2900003703002001200341f9016a290000370300200320032900f101370378024020064101470d00200341386a41186a20082903002205370300200341386a41106a20092903002218370300200341386a41086a2001290300221937030020032003290378221a370338200341c8016a41186a2005370300200341c8016a41106a2018370300200420193703002003201a3703c80141002101024002400240024020020e020201000b4100210103402002410176220620016a210420042001200720044105746a200341c8016a412010c2094101481b2101200220066b220241014b0d000b0b200720014105746a200341c8016a412010c209450d010b20034190016a2202420037030020034188016a22014200370300200341f8006a41086a2204420037030020034200370378200341286a41d4aac800410a10a7022004200341286a41086a220629000037030020032003290028370378200341286a41e5aac800410510a7022002200629000037030020012003290028370300200341f8006a412010bd020c010b20034189026a200341e0016a29030037000020034181026a200341d8016a290300370000200341f9016a200341d0016a290300370000200320032903c8013700f101200341013a00f001200341f0016a10c8080b20034191023b01f001200341f0016a10a9020240200328020c41ffffff3f71450d00200710310b200041186a41003a00002000420037030820002003280098013600192000411c6a2003419b016a280000360000200042003703000c1a0b2005a72202450d00200241ffffff3f71450d00200710310b410321020b200041f6b3c800360024200041d1023b002120004200370308200041286a4109360000200041206a20023a0000200041186a41003a0000200042013703000c170b200341086a41186a200141196a290000370300200341086a41106a200141116a290000370300200341086a41086a200141096a29000037030020032001290001370308200341a8016a41186a200141396a290000370300200341a8016a41106a200141316a290000370300200341a8016a41086a200141296a2900003703002003200141216a2900003703a80120022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22172017280200417f6a221736020020170d00200110310b2003200537038802200320043a008702200320063a008602200320073b018402200320083a008302200320093a0082022003200a3b0180022003200b3a00ff012003200c3a00fe012003200d3b01fc012003200e3a00fb012003200f3a00fa01200320103b01f801200320113a00f701200320123a00f601200320133b01f401200320143a00f301200320153a00f201200320163b01f0010240200241ff01710d00410321040c010b4110102f2202450d16200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d16200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22063602004100210420060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b024020044103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b410221020c130b200341086a200341a8016a412010c209450d1020034188026a2202420037030020034180026a22014200370300200341f0016a41086a22044200370300200342003703f001200341f8006a41d4aac800410a10a7022004200341f8006a41086a2206290000370300200320032900783703f001200341f8006a41deaac800410710a7022002200629000037030020012003290078370300200341c8016a200341f0016a10cf04024020032802c80122070d00200341003602a0012003420137039801410921094101210841f6b3c800210a410321020c130b200320032902cc01220537029c012003200736029801410121084100210241f6b3c800210a41092109024002402005422088a7220b0e021001000b41002102200b210103402001410176220620026a210420042002200720044105746a200341086a412010c2094101481b2102200120066b220141014b0d000b0b200720024105746a200341086a412010c2090d0e41002108410021010240200b0e02100e000b41002101200b210403402004410176220920016a210620062001200720064105746a200341a8016a412010c2094101481b2101200420096b220441014b0d000c0e0b0b2001410c6a2802002108200141086a2802002109200141046a280200210620022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002107200241166a2f0100210a200241156a2d0000210b200241146a2d0000210c200241126a2f0100210d200241116a2d0000210e200241106a2d0000210f2002410e6a2f010021102002410d6a2d000021112002410c6a2d000021122002410a6a2f01002113200241096a2d00002114200241086a2d00002115200241066a2f01002116200241056a2d00002117200241046a2d0000211b200241026a2f0100211c20022d0001210220012001280200417f6a221d3602000240201d0d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a221d201d280200417f6a221d360200201d0d00200110310b20032005370150200320043a004f200320073a004e2003200a3b014c2003200b3a004b2003200c3a004a2003200d3b01482003200e3a00472003200f3a0046200320103b0144200320113a0043200320123a0042200320133b0140200320143a003f200320153a003e200320163b013c200320173a003b2003201b3a003a2003201c3b01380240200241ff01710d00410321040c010b4110102f2202450d15200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d15200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22073602004100210420070d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22072007280200417f6a220736020020070d00200210310b024020044103470d002006200810b108200341f0016a41186a22014200370300200341f0016a41106a22044200370300200341f0016a41086a22074200370300200342003703f001200341f8006a41d4aac800410a10a7022007200341f8006a41086a2202290000370300200320032900783703f001200341f8006a41deaac800410710a7022001200229000037030020042003290078370300200341c8016a200341f0016a10cf042006200820032802c8012201410120011b220b20032902cc01420020011b2205422088a710b208200341f8006a41186a22014200370300200341f8006a41106a220442003703002002420037030020034200370378200341c8016a41d4aac800410a10a7022002200341c8016a41086a2207290000370300200320032900c801370378200341c8016a41e5aac800410510a70220012007290000370300200420032900c801370300200341f0016a200341f8006a412010aa0220032d00f001210a200120034189026a290000370300200420034181026a2900003703002002200341f9016a290000370300200320032900f1013703780240200a4101470d00200341d8006a41186a20012903002218370300200341d8006a41106a20042903002219370300200341d8006a41086a2002290300221a37030020032003290378221e370358200341c8016a41186a2018370300200341c8016a41106a20193703002007201a3703002003201e3703c80141002102024002400240024020080e020201000b410021022008210103402001410176220720026a210420042002200620044105746a200341c8016a412010c2094101481b2102200120076b220141014b0d000b0b200620024105746a200341c8016a412010c209450d010b200341d0006a22024200370300200341c8006a22014200370300200341386a41086a2204420037030020034200370338200341286a41d4aac800410a10a7022004200341286a41086a220729000037030020032003290028370338200341286a41e5aac800410510a7022002200729000037030020012003290028370300200341386a412010bd020c010b20034189026a200341e0016a29030037000020034181026a200341d8016a290300370000200341f9016a200341d0016a290300370000200320032903c8013700f101200341013a00f001200341f0016a10c8080b0240200841e500490d0041002802809a4a450d0020034184016a4101360200200320083602582003410136027c200341e4003602c8012003200341c8016a360280012003200341d8006a36027841002802fc994a210241002802f8994a210141002802849a4a2104200341b0026a41a302360200200341a8026a42df80808010370300200341a4026a41a5a4c8003602002003419c026a421137020020034198026a41d5a7c80036020020034190026a420237030020034180026a4203370300200341f8016a41133602002003418c026a200341f8006a360200200341bcaac8003602fc01200341fcabc8003602f401200341013602f001200141f8fac900200441024622041b200341f0016a20024180a6c00020041b2802101103000b2008ad4220862009ad8421180240200542ffffff3f83500d00200b10310b200320183702f401200320063602f001200341386a41186a22024200370300200341c8006a22014200370300200341386a41086a2204420037030020034200370338200341286a41d4aac800410a10a7022004200341286a41086a220729000037030020032003290028370338200341286a41deaac800410710a7022002200729000037030020012003290028370300200341386a200341f0016a10db040240200941ffffff3f71450d00200610310b20034191063b01f001200341f0016a10a902200041186a41003a000020004200370308200020032800a8013600192000411c6a200341ab016a280000360000200042003703000c160b20012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b0240200941ffffff3f71450d00200610310b20034198016a41026a200341086a41026a2d000022023a0000200320032f000822013b019801200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000200042013703000c150b200341086a41186a200141196a290000370300200341086a41106a200141116a290000370300200341086a41086a200141096a290000370300200320012900013703082002411a6a2901002105200241196a2d00002107200241186a2d00002108200241166a2f01002109200241156a2d0000210a200241146a2d0000210b200241126a2f0100210c200241116a2d0000210d200241106a2d0000210e2002410e6a2f0100210f2002410d6a2d000021102002410c6a2d000021112002410a6a2f01002112200241096a2d00002113200241086a2d00002114200241066a2f01002115200241056a2d00002116200241046a2d00002117200241026a2f0100211b20022d0001210620022d00002101200228022822022002280200417f6a220436020002400240024020010d00024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a220136020020010d00200210310b200641ff01714101470d01200320133a003f200320143a003e200320153b013c200320163a003b200320173a003a2003201b3b01382003200d3a00472003200e3a00462003200f3b0144200320103a0043200320113a0042200320123b0140200320073a004f200320083a004e200320093b014c2003200a3a004b2003200b3a004a2003200c3b014820032005370150200341f0016a41186a22022005370300200341f0016a41106a22012003290148370300200341f0016a41086a22042003290140370300200320032901383703f001200341a8016a41186a2002290300370300200341a8016a41106a2001290300370300200341a8016a41086a2004290300370300200320032903f0013703a801200341a8016a200341086a412010c209450d0c200242003703002001420037030020044200370300200342003703f001200341f8006a41d4aac800410a10a7022004200341f8006a41086a2206290000370300200320032900783703f001200341f8006a41deaac800410710a7022002200629000037030020012003290078370300200341c8016a200341f0016a10cf0420032802c801220a0d022003410036024020034201370338410921044101210141f6b3c80021060c090b024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a220136020020010d00200210310b200341f0016a41186a200341386a41186a290100370300200341f0016a41106a200341386a41106a290100370300200341f0016a41086a200341386a41086a290100370300200320032901383703f001410221020c090b200341f0016a41186a200341386a41186a290100370300200341f0016a41106a200341386a41106a290100370300200341f0016a41086a200341386a41086a290100370300200320032901383703f001410221020c080b200320032902cc01220537023c2003200a360238410121014100210241f6b3c800210641092104024002402005422088a7220b0e020701000b41002102200b210703402007410176220920026a210820082002200a20084105746a200341a8016a412010c2094101481b2102200720096b220741014b0d000b0b200a20024105746a200341a8016a412010c2090d0541002101410021040240200b0e020905000b41002104200b210603402006410176220820046a210720072004200a20074105746a200341086a412010c2094101481b2104200620086b220641014b0d000c050b0b200341c8016a41186a200141196a290000370300200341c8016a41106a200141116a290000370300200341c8016a41086a200141096a290000370300200320012900013703c80120022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22172017280200417f6a221736020020170d00200110310b2003200537039001200320043a008f01200320063a008e01200320073b018c01200320083a008b01200320093a008a012003200a3b0188012003200b3a0087012003200c3a0086012003200d3b0184012003200e3a0083012003200f3a008201200320103b018001200320113a007f200320123a007e200320133b017c200320143a007b200320153a007a200320163b01780240200241ff01710d00410321040c010b4110102f2202450d13200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d13200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22063602004100210420060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b0240024020044103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b410221020c010b20034188026a2202420037030020034180026a22014200370300200341f0016a41086a22044200370300200342003703f001200341f8006a41d4aac800410a10a7022004200341f8006a41086a2206290000370300200320032900783703f001200341f8006a41deaac800410710a7022002200629000037030020012003290078370300200341a8016a200341f0016a10cf0420032802a8012201410120011b21074100210202400240024020032902ac01420020011b2205422088a722010e020201000b4100210203402001410176220620026a210420042002200720044105746a200341c8016a412010c2094101481b2102200120066b220141014b0d000b0b200720024105746a200341c8016a412010c2090d000240200542ffffff3f83500d00200710310b20034190016a2202420037030020034188016a22014200370300200341f8006a41086a2204420037030020034200370378200341286a41d4aac800410a10a7022004200341286a41086a220629000037030020032003290028370378200341286a41e5aac800410510a70220022006290000370300200120032900283703004120102f2202450d14200342203702f401200320023602f001200341f0016a200341c8016a4120107e200341f8006a412020032802f001220220032802f801109f02024020032802f401450d00200210310b20034189026a200341c8016a41186a29030037000020034181026a200341d8016a290300370000200341f9016a200341d0016a290300370000200320032903c8013700f101200341013a00f001200341f0016a10c808200041186a41003a000020004200370308200020032800583600192000411c6a200341db006a280000360000200042003703000c150b02402005a72202450d00200241ffffff3f71450d00200710310b410321020b200041f6b3c800360024200041d1023b002120004200370308200041286a4109360000200041206a20023a0000200041186a41003a0000200042013703000c130b20022802282101024020022d000022040d002002411a6a2901002105200241196a2d00002104200241186a2d00002106200241166a2f01002107200241156a2d00002108200241146a2d00002109200241126a2f0100210a200241116a2d0000210b200241106a2d0000210c2002410e6a2f0100210d2002410d6a2d0000210e2002410c6a2d0000210f2002410a6a2f01002110200241096a2d00002111200241086a2d00002112200241066a2f01002113200241056a2d00002114200241046a2d00002115200241026a2f0100211620022d0001210220012001280200417f6a2217360200024020170d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22172017280200417f6a221736020020170d00200110310b2003200537019001200320043a008f01200320063a008e01200320073b018c01200320083a008b01200320093a008a012003200a3b0188012003200b3a0087012003200c3a0086012003200d3b0184012003200e3a0083012003200f3a008201200320103b018001200320113a007f200320123a007e200320133b017c200320143a007b200320153a007a200320163b01780240200241ff01710d00410321040c010b4110102f2202450d12200241f8c8c00036020c2002410136020820024281808080103702004110102f2201450d12200141e0c8c00036020c20014101360208200142818080801037020020022002280200417f6a22063602004100210420060d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22062006280200417f6a220636020020060d00200210310b0240024020044103460d0020012001280200417f6a2202360200024020020d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d00200110310b200341f0016a41026a200341c8016a41026a2d000022023a0000200320032f00c80122013b01f001200041206a41023a0000200041186a41003a000020004200370308200020013b0021200041236a20023a0000420121050c010b42002105200341f8006a41186a2202420037030020034188016a22014200370300200341f8006a41086a2204420037030020034200370378200341286a41d4aac800410a10a7022004200341286a41086a220629000037030020032003290028370378200341286a41e5aac800410510a7022002200629000037030020012003290028370300200341f8006a412010bd02200341003a00f001200341f0016a10c808200041186a41003a000020004200370308200020032800f0013600192000411c6a200341f0016a41036a2800003600000b200020053703000c120b200420091048000b200220081049000b200a20044105746a200341086a412010c2090d0341e9b3c8002106410d21040b2005a741ffffff3f71450d00200a10310b410321020b20002006360024200020013a0022200041d1003a002120004200370308200041286a2004360000200041206a20023a0000200041186a41003a0000200042013703000c0c0b200341d8006a41186a2201200341086a41186a290300370300200341d8006a41106a2204200341086a41106a290300370300200341d8006a41086a2206200341086a41086a29030037030020032003290308370358200b20024d0d01200a20024105746a22022003290358370000200241186a2001290300370000200241106a2004290300370000200241086a2006290300370000200a200b10b1080240200b41e500490d0041002802809a4a450d0020034184016a41013602002003200b3602582003410136027c200341e4003602c8012003200341c8016a360280012003200341d8006a36027841002802fc994a210241002802f8994a210141002802849a4a2104200341b0026a41a302360200200341a8026a42df80808010370300200341a4026a41a5a4c8003602002003419c026a421137020020034198026a41d5a7c80036020020034190026a420237030020034180026a4203370300200341f8016a41133602002003418c026a200341f8006a360200200341bcaac8003602fc01200341fcabc8003602f401200341013602f001200141f8fac900200441024622041b200341f0016a20024180a6c00020041b2802101103002003280238210a2003280240210b0b200341f8006a41186a22014200370300200341f8006a41106a22024200370300200341f8006a41086a2204420037030020034200370378200341286a41d4aac800410a10a7022004200341286a41086a220629000037030020032003290028370378200341286a41deaac800410710a7022001200629000037030020022003290028370300200341f8006a200341386a10db04200341f0016a41186a200341a8016a41186a290300370300200341f0016a41106a200341a8016a41106a290300370300200341f0016a41086a200341a8016a41086a290300370300200320032903a8013703f00141012107200341f0016a4101200a200b10ba0820014200370300200242003703002004420037030020034200370378200341286a41d4aac800410a10a7022004200629000037030020032003290028370378200341286a41e5aac800410510a7022001200629000037030020022003290028370300200341f0016a200341f8006a412010aa0220032d00f00121062001200341f0016a41196a2900003703002002200341f0016a41116a2900003703002004200341f0016a41096a290000370300200320032900f1013703780240024020064101460d0041002107200341003a00c8010c010b200341c8016a41096a2004290300370000200341c8016a41116a2002290300370000200341c8016a41196a2001290300370000200341013a00c801200320032903783700c9010b20034189026a200341c0016a29030037000020034181026a200341b8016a290300370000200341f9016a200341b0016a290300370000200320032903a8013700f101200341013a00f00102402007450d00200341c8016a410172200341f0016a410172412010c2090d0020034190016a420037030020034188016a4200370300200341f8006a41086a2201420037030020034200370378200341286a41d4aac800410a10a7022001200341286a41086a220429000037030020032003290028370378200341286a41e5aac800410510a702200241086a2004290000370000200220032900283700004120102f2202450d0b200342203702f401200320023602f001200341f0016a200341086a4120107e200341f8006a412020032802f001220220032802f801109f02024020032802f401450d00200210310b20034189026a200341206a29030037000020034181026a200341186a290300370000200341f9016a200341106a290300370000200320032903083700f101200341013a00f001200341f0016a10c8080b200328023c41ffffff3f71450d00200a10310b20034191083b01f001200341f0016a10a902200041186a41003a00002000420037030820002003280098013600192000411c6a2003419b016a280000360000200042003703000c0a0b2002200b41fcaac800103f000b200720014105746a200341a8016a412010c2090d0141e9b3c800210a410d21090b02402005a741ffffff3f71450d00200710310b410321020c030b200341f0016a41186a2201200341a8016a41186a290300370300200341f0016a41106a2204200341a8016a41106a290300370300200341f0016a41086a2206200341a8016a41086a290300370300200320032903a8013703f001200b20024d0d01200720024105746a220220032903f001370000200241186a2001290300370000200241106a2004290300370000200241086a20062903003700002007200b10b1080240200b41e500490d0041002802809a4a450d0020034184016a41013602002003200b3602582003410136027c200341e4003602c8012003200341c8016a360280012003200341d8006a36027841002802fc994a210241002802f8994a210141002802849a4a2104200341b0026a41a302360200200341a8026a42df80808010370300200341a4026a41a5a4c8003602002003419c026a421137020020034198026a41d5a7c80036020020034190026a420237030020034180026a4203370300200341f8016a41133602002003418c026a200341f8006a360200200341bcaac8003602fc01200341fcabc8003602f401200341013602f001200141f8fac900200441024622041b200341f0016a20024180a6c00020041b280210110300200328029801210720032802a001210b0b200341f0016a41186a22024200370300200341f0016a41106a22014200370300200341f0016a41086a22044200370300200342003703f001200341c8016a41d4aac800410a10a7022004200341c8016a41086a2206290000370300200320032900c8013703f001200341c8016a41deaac800410710a70220022006290000370300200120032900c801370300200341f0016a20034198016a10db042002200341086a41186a2903003703002001200341086a41106a2903003703002004200341086a41086a290300370300200320032903083703f001200341f0016a41012007200b10ba08200341f8006a41186a22024200370300200341f8006a41106a22014200370300200341f8006a41086a2204420037030020034200370378200341286a41d4aac800410a10a7022004200341286a41086a220829000037030020032003290028370378200341286a41e5aac800410510a7022002200829000037030020012003290028370300200341f0016a200341f8006a412010aa0220032d00f0012108200220034189026a290000370300200120034181026a2900003703002004200341f9016a290000370300200320032900f101370378024020084101470d00200341386a41186a20022903002205370300200341386a41106a20012903002218370300200341386a41086a2004290300221937030020032003290378221a370338200341c8016a41186a2005370300200341c8016a41106a2018370300200620193703002003201a3703c801410021020240024002400240200b0e020201000b410021020340200b410176220420026a210120012002200720014105746a200341c8016a412010c2094101481b2102200b20046b220b41014b0d000b0b200720024105746a200341c8016a412010c209450d010b200341f0006a22024200370300200341e8006a22014200370300200341d8006a41086a2204420037030020034200370358200341f8006a41d4aac800410a10a7022004200341f8006a41086a220629000037030020032003290078370358200341f8006a41e5aac800410510a7022002200629000037030020012003290078370300200341d8006a412010bd020c010b20034189026a200341e0016a29030037000020034181026a200341d8016a290300370000200341f9016a200341d0016a290300370000200320032903c8013700f101200341013a00f001200341f0016a10c8080b20034191043b01f001200341f0016a10a902200328029c0141ffffff3f71450d00200710310b2000420037030820002003280001360019200041186a41003a00002000411c6a200341046a280000360000200042003703000c050b2002200b41ecaac800103f000b2000200a360024200020083a0022200041d1003a002120004200370308200041286a2009360000200041206a20023a0000200041186a41003a0000200042013703000c030b200341f0016a41186a200341c8016a41186a290300370300200341f0016a41106a200341c8016a41106a290300370300200341f0016a41086a200341c8016a41086a290300370300200320032903c8013703f00141002104200341f0016a21010b0240024020092008470d00200841016a22022008490d04200841017422062002200620024b1b22024104200241044b1b220241ffffff3f712002462106200241057421020240024020080d00200341003602a8010c010b200341b0016a4101360200200320073602a801200320084105743602ac010b200341f8006a20022006200341a8016a104e20034180016a280200210220032802784101460d012003200328027c22073602582003200241057636025c0b200720044105746a220241206a2002200920046b41057410c0091a20022001290000370000200241186a200141186a290000370000200241106a200141106a290000370000200241086a200141086a2900003700002003200941016a22023602600240200241e500490d0041002802809a4a450d0020034184016a4101360200200320023602082003410136027c200341e4003602a8012003200341a8016a360280012003200341086a36027841002802fc994a210241002802f8994a210141002802849a4a2104200341b0026a41a302360200200341a8026a42df80808010370300200341a4026a41a5a4c8003602002003419c026a421137020020034198026a41d5a7c80036020020034190026a420237030020034180026a4203370300200341f8016a41133602002003418c026a200341f8006a360200200341bcaac8003602fc01200341fcabc8003602f401200341013602f001200141f8fac900200441024622041b200341f0016a20024180a6c00020041b280210110300200328026021020b200341f8006a41186a22014200370300200341f8006a41106a22044200370300200341f8006a41086a2206420037030020034200370378200341286a41d4aac800410a10a7022006200341286a41086a220729000037030020032003290028370378200341286a41deaac800410710a7022001200729000037030020042003290028370300200341f8006a200341d8006a10db04200341f0016a41186a200341c8016a41186a290300370300200341f0016a41106a200341c8016a41106a290300370300200341f0016a41086a200341c8016a41086a290300370300200320032903c8013703f00141f8fac900410020032802582201200210ba08200341113b01f001200341f0016a10a9020240200328025c41ffffff3f71450d00200110310b200041186a41003a000020004200370308200020032800383600192000411c6a2003413b6a280000360000200042003703000c020b2002450d020b1039000b200341c0096a24000f0b103b000b8f7a04087f047e087f037e230041a0196b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e0700010203040506000b200341e4116a4101360200200342013702d411200341d897ca003602d011200341043602ec09200341dcd8c8003602e8092003200341e8096a3602e011200341d0116a41acb7c7001047000b200141306a280200210420012d000121052001412c6a2802002106200141286a2802002107200141246a2802002108200341e8096a41186a2001411a6a290000370300200341e8096a41106a200141126a290000370300200341e8096a41086a2001410a6a2900003703002003200141026a2900003703e80920032004360260200341d0116a41286a200241286a280200360200200341d0116a41206a200241206a290200370300200341d0116a41186a200241186a290200370300200341d0116a41106a200241106a290200370300200341d0116a41086a200241086a290200370300200320022902003703d011024002400240200341d0116a109d020d000240200641e4004d0d0041002802809a4a450d00200341b4026a41013602002003200636029801200341013602ac02200341e4003602b8012003200341b8016a3602b002200320034198016a3602a80241002802fc994a210141002802f8994a210241002802849a4a210420034190126a41cb0236020020034188126a42df8080801037030020034184126a41f1b7c700360200200341fc116a4211370200200341f8116a4199bdc700360200200341f0116a4202370300200341e0116a4203370300200341d8116a4113360200200341ec116a200341a8026a360200200341acbfc7003602dc112003418cc0c7003602d411200341013602d011200241f8fac900200441024622041b200341d0116a20014180a6c00020041b280210110300200328026021040b200341d0116a41186a22014200370300200341d0116a41106a22024200370300200341d0116a41086a22094200370300200342003703d011200341b8016a41dcbfc700410a10a7022009200341b8016a41086a220a290000370300200320032900b8013703d011200341b8016a41deaac800410710a7022001200a290000370300200220032900b801370300200341a8026a200341d0116a10cf0420032802a8022201410120011b21020240200420032902ac02420020011b220b422088220ca722014f0d0041002802809a4a4102490d00200341b4026a4101360200200341013602ac02200320013602b8012003200341b8016a3602b0022003200341e0006a3602a80241002802fc994a210441002802f8994a210941002802849a4a210a20034190126a41d50236020020034188126a42df8080801037030020034184126a41f1b7c700360200200341fc116a4211370200200341f8116a4199bdc700360200200341f0116a4202370300200341e0116a4203370300200341d8116a4113360200200341ec116a200341a8026a360200200341c4bfc7003602dc112003418cc0c7003602d411200341023602d011200941f8fac900200a410246220a1b200341d0116a20044180a6c000200a1b2802101103000b2008200610b108200820062002200110b208200341f8006a41186a200341e8096a41186a290300370300200341f8006a41106a200341e8096a41106a290300370300200341f8006a41086a200341e8096a41086a290300370300200320032903e809370378200541ff01710d01200341d0016a22014200370300200341c8016a22044200370300200341b8016a41086a22054200370300200342003703b801200341d8016a41dcbfc700410a10a7022005200341d8016a41086a2209290000370300200320032900d8013703b801200341d8016a41e5aac800410510a70220012009290000370300200420032900d801370300200341b8016a412010bd020c020b0240200741ffffff3f71450d00200810310b200320032800f8013602e801200320032900b011370388022003200341fb016a2800003600eb012003200341b7116a28000036008f02200041186a41003a000020004200370308200020032802e8013600192000411c6a20032800eb01360000200041206a41023a00002000200329038802370021200041286a200328008f02360000200042013703000c1c0b200341d0116a41186a200341f8006a41186a290300370300200341d0116a41106a200341f8006a41106a290300370300200341d0116a41086a200341f8006a41086a290300370300200320032903783703d01120034198016a41186a2201420037030020034198016a41106a2204420037030020034198016a41086a220542003703002003420037039801200341a8026a41dcbfc700410a10a7022005200341a8026a41086a2209290000370300200320032900a80237039801200341a8026a41e5aac800410510a70220012009290000370300200420032900a8023703004120102f2201450d16200342203702ac02200320013602a802200341a8026a200341d0116a4120107e20034198016a412020032802a802220120032802b002109f0220032802ac02450d00200110310b2006ad42b0c00f7e200c4288d3fd097e7c210c0240200741ffffff3f71450d00200810310b200c42a0e6f6813a7c210c0240200b42ffffff3f83500d00200210310b200320032800f8013602e8012003200341fb016a2800003600eb01200041186a41003a0000200041106a200c37030020004201370308200020032802e8013600192000411c6a20032800eb01360000200042003703000c1a0b200141086a2802002109200141046a2802002104200341d0116a41286a200241286a280200360200200341d0116a41206a200241206a290200370300200341d0116a41186a2201200241186a290200370300200341d0116a41106a2206200241106a290200370300200341d0116a41086a2208200241086a290200370300200320022902003703d011200341e8096a200341d0116a109e02200341f8006a41086a2202200341f1096a290000370300200341f8006a41106a2207200341f9096a290000370300200341f8006a41186a2205200341810a6a290000370300200320032900e90937037820032d00e8094101460d0720034188026a41186a200529030037030020034188026a41106a200729030037030020034188026a41086a20022903003703002003200329037837038802200142003703002006420037030020084200370300200342003703d011200341b8016a41dcbfc700410a10a7022008200341b8016a41086a2202290000370300200320032900b8013703d011200341b8016a41deaac800410710a70220012002290000370300200620032900b801370300200341e8096a200341d0116a10cf0420032902ec09420020032802e80922021b220b422088220ca741057421012002410120021b22082102024002400240024003402001450d01200141606a2101200220034188026a412010c2092106200241206a210220060d000b200341003602d811200342013703d0112004200341d0116a10d40120032802d8112106024020032802d411450d0020032802d01110310b0240200620094d0d00200341d0116a410a10e205200320032900d1113703602003200341d8116a2800003600670c020b200341003602f009200342013703e8092004200341e8096a10d401200341d0116a20032802e80920032802f009109a01200341b0116a41186a200341d0116a41186a290300370300200341b0116a41106a200341d0116a41106a290300370300200341b0116a41086a200341d0116a41086a290300370300200320032903d0113703b011024020032802ec09450d0020032802e80910310b200341d0116a200441c00710bf091a200341b5026a20034188026a41086a290300370000200341bd026a20034188026a41106a290300370000200341c5026a20034188026a41186a290300370000200341013a00ac0220032003290388023700ad02200341023a00a8024110102f2201450d18200141f8c8c00036020c200141013602082001428180808010370200200320013602d0024110102f2202450d18200241e0c8c00036020c20024101360208200242818080801037020020012001280200417f6a2207360200024020070d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22072007280200417f6a220736020020070d00200110310b200320023602d002200341e8096a200341d0116a200341a8026a109702200341b8016a41186a200341b0116a41186a290300370300200341b8016a41106a200341b0116a41106a290300370300200341b8016a41086a200341b0116a41086a290300370300200320032903b0113703b801200341880a6a2d0000210220032903f009210d20032903e809210e200320032900890a3703d0112003200341900a6a2800003600d71102400240200e4201510d00410721010c010b200320032800d7113600df01200320032903d0113703d80141072101200d4202510d00200320032800df013600ff01200320032903d8013703f801200221010b20034198016a41086a2202200341b8016a41086a29030037030020034198016a41106a2207200341b8016a41106a29030037030020034198016a41186a2205200341b8016a41186a290300370300200320032903b80137039801200320032903f8013703e801200320032800ff013600ef01200341053a00d411200341103a00d011200341dd116a2002290300370000200341e5116a2007290300370000200341ed116a2005290300370000200341f8116a20013a000020032003290398013700d511200341f5116a20032f00f5013b0000200341f7116a200341f7016a2d00003a0000200341f9116a20032903e80137000020034180126a20032800ef013600002003419c126a200341a8026a41186a28020036020020034194126a200341a8026a41106a2902003702002003418c126a200341a8026a41086a29020037020020034184126a20032902a802370200200341d0116a10a902200da70d024200210c0c030b200341d0116a410110e205200320032900d1113703602003200341d8116a2800003600670b20032d00d0112101200b42ffffff3f83500d1a200810310c1a0b427f2006ad42a01f7e200c42b882077e7c42b8f8e21a7c220c200341e8096a41106a2903007c220d200d200c541b210d4201210c0b0240200b42ffffff3f83500d00200810310b200410312003200341f4006a28000036005b20032003280071360258200041186a41003a0000200041106a200d3703002000200c370308200020032802583600192000411c6a200328005b360000200042003703000c190b2001410c6a2802002109200141086a2802002104200141046a280200210a200341d0116a41286a200241286a280200360200200341d0116a41206a200241206a290200370300200341d0116a41186a2201200241186a290200370300200341d0116a41106a2208200241106a290200370300200341d0116a41086a2206200241086a290200370300200320022902003703d011200341e8096a200341d0116a109e02200341a8026a41086a2202200341f1096a290000370300200341a8026a41106a2207200341f9096a290000370300200341a8026a41186a2205200341810a6a290000370300200320032900e9093703a80202400240024020032d00e8094101460d0020034188026a41186a200529030037030020034188026a41106a200729030037030020034188026a41086a2002290300370300200320032903a80237038802200142003703002008420037030020064200370300200342003703d011200341b8016a41dcbfc700410a10a7022006200341b8016a41086a2202290000370300200320032900b8013703d011200341b8016a41deaac800410710a70220012002290000370300200820032900b801370300200341e8096a200341d0116a10cf0420032902ec09420020032802e80922021b220c422088220ba741057421012002410120021b2207210203402001450d02200141606a2101200220034188026a412010c2092106200241206a210220060d000b200341003602d811200342013703d0112004200341d0116a10d40120032802d8112101024020032802d411450d0020032802d01110310b200120094d0d02200341d0116a410a10e2050c170b410221010c180b200341d0116a410110e2050c150b200341003602f009200342013703e8092004200341e8096a10d401200341d0116a20032802e80920032802f009109a01200341b0116a41186a2202200341d0116a41186a2206290300370300200341b0116a41106a2205200341d0116a41106a2209290300370300200341b0116a41086a220f200341d0116a41086a2210290300370300200320032903d0113703b011024020032802ec09450d0020032802e80910310b20062002290300370300200920052903003703002010200f290300370300200320032903b0113703d011200341e8096a200341d0116a10b30820032802e809220620032802f009108f032102024020032802ec09450d00200610310b02402002450d00200341d0116a410210e2050c150b024002400240200a41014b0d00200341e8116a4200370300200341e0116a4200370300200341d0116a41086a22024200370300200342003703d011200341b8016a41dcbfc700410a10a7022002200341b8016a41086a2206290000370300200320032900b8013703d011200341b8016a41deaac800410710a702200841086a2006290000370000200820032900b801370000200341e8096a200341d0116a10cf040240024020032802e80922060d00410021020c010b20032902ec09220d422088a72102200d42ffffff3f83500d00200610310b200341d0116a200441c00710bf091a200341b4026a2002360200200341b0026a4101360200200341003a00ac02200341023a00a8024110102f2202450d16200241f8c8c00036020c200241013602082002428180808010370200200320023602d0024110102f2206450d16200641e0c8c00036020c20064101360208200642818080801037020020022002280200417f6a2208360200024020080d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22082008280200417f6a220836020020080d00200210310b200320063602d002200341e8096a200341d0116a200341a8026a10970220034198016a41186a200341b0116a41186a29030037030020034198016a41106a200341b0116a41106a29030037030020034198016a41086a200341b0116a41086a290300370300200320032903b01137039801200341880a6a2d0000210620032903f009210d20032903e809210e200320032900890a3703d0112003200341900a6a2800003600d71102400240200e4201510d00410721020c010b200320032800d7113600df01200320032903d0113703d80141072102200d4202510d00200320032800df013600ff01200320032903d8013703f801200621020b200341f8006a41086a220620034198016a41086a290300370300200341f8006a41106a220820034198016a41106a290300370300200341f8006a41186a220520034198016a41186a2903003703002003200329039801370378200320032903f8013703e801200320032800ff013600ef01200341043a00d411200341103a00d011200341dd116a2006290300370000200341e5116a2008290300370000200341ed116a2005290300370000200341f8116a20023a0000200320032903783700d511200341f5116a20032f00f5013b0000200341f7116a200341f7016a2d00003a0000200341f9116a20032903e80137000020034180126a20032800ef013600002003419c126a200341a8026a41186a28020036020020034194126a200341a8026a41106a2902003702002003418c126a200341a8026a41086a29020037020020034184126a20032902a802370200200341d0116a10a9020240200da70d004200210d0c020b427f2001ad42a01f7e200b42d0e50d7e7c42f0aaaa2a7c220b200341e8096a41106a2903007c220d200d200b541b210b4201210d0c010b20034198016a10b408200341e8096a41186a2206200341b0116a41186a290300370300200341e8096a41106a2205200341b0116a41106a290300370300200341e8096a41086a2209200341b0116a41086a290300370300200320032903b0113703e80920032802a001220241e3004b0d01200341d0116a41186a2006290300370300200341d0116a41106a2005290300370300200341d0116a41086a2009290300370300200320032903e8093703d01102400240024002402002200328029c01470d00200241016a22062002490d14200241017422052006200520064b1b22064104200641044b1b220641ffffff3f712006462105200641057421060240024020020d00200341003602a8020c010b200341b0026a410136020020032003280298013602a802200320024105743602ac020b200341b8016a20062005200341a8026a104e200341c0016a280200210620032802b8014101460d01200320032802bc01360298012003200641057636029c010b20032802980120024105746a220620032903d011370000200641086a200341d0116a41086a290300370000200641106a200341d0116a41106a290300370000200641186a200341d0116a41186a2903003700002003200241016a220f3602a001200341e8096a41086a200f3602002003200329039801220d3703e809200341b8016a41186a22024200370300200341b8016a41106a4200370300200341b8016a41086a22064200370300200342003703b801200da722050d01200341d8016a41dcbfc700410a10a7022006200341d8016a41086a2205290000370300200320032900d8013703b801200341d8016a41e6bfc700410910a70220022005290000370300200320032900d8013703c801200341b8016a412010bd020c020b2006450d120c170b200341d8016a41dcbfc700410a10a7022006200341d8016a41086a2209290000370300200320032900d8013703b801200341d8016a41e6bfc700410910a70220022009290000370300200320032900d8013703c801200341003602d811200342013703d011200341e8096a200341d0116a10b107200341b8016a412020032802d011220220032802d811109f02024020032802d411450d00200210310b20032802ec0941ffffff3f71450d00200510310b200341b8016a41186a22024200370300200341b8016a41106a22064200370300200341b8016a41086a22054200370300200342003703b801200341d8016a41dcbfc700410a10a7022005200341d8016a41086a2209290000370300200320032900d8013703b801200341d8016a41efbfc700410d10a70220022009290000370300200620032900d801370300200341186a200341b8016a412010c002200328021c211020032802182111200242003703002006420037030020054200370300200342003703b801200341d8016a41dcbfc700410a10a70220052009290000370300200320032900d8013703b801200341d8016a41efbfc700410d10a70220022009290000370300200620032900d801370300200341106a200341b8016a412010c0022003280210211220032802142113200242003703002006420037030020054200370300200342003703b801200341d8016a41dcbfc700410a10a70220052009290000370300200320032900d8013703b801200341d8016a41efbfc700410d10a70220022009290000370300200620032900d8013703002003201341016a410120121b3602d011200341b8016a4120200341d0116a4104109f02200341d0116a200441c00710bf091a200341e8096a41186a200341b0116a41186a290300370300200341e8096a41106a200341b0116a41106a290300370300200341e8096a41086a200341b0116a41086a290300370300200320032903b0113703e809200341a8026a200341e8096a10b30820032802a802210220032802b0022106200342013703e809200341003602f009200341d0116a200341e8096a10d4012002200620032802e80920032802f009109f02024020032802ec09450d0020032802e80910310b024020032802ac02450d00200210310b200341d0116a10fa06200341d0116a41186a4200370300200341d0116a41106a4200370300200341d0116a41086a22024200370300200342003703d011200341b8016a41f3c6c000410610a7022002200341b8016a41086a2206290000370300200320032900b8013703d011200341b8016a41ec90c900410610a702200841086a2006290000370000200820032900b801370000200341086a200341d0116a412010c002200328020c2106200328020821084120102f2202450d152002200329038802370000200241186a20034188026a41186a290300370000200241106a20034188026a41106a290300370000200241086a20034188026a41086a290300370000200341ec116a4100360200200341dc116a4281808080103702002003200641056a410520081b3602f0114201210d200342013702e411200320023602d8112003200a3602d41120032010410020111b22063602d011200341e8096a41186a200341b0116a41186a290300370300200341e8096a41106a200341b0116a41106a290300370300200341e8096a41086a200341b0116a41086a290300370300200320032903b0113703e809200341a8026a200341e8096a10b50820032802a802220820032802b002200341d0116a10b106024020032802ac02450d00200810310b20021031200341dd116a20034188026a41086a290300370000200341ed116a20034188026a41186a290300370000200341f5116a20032903b011370000200341fd116a200341b0116a41086a2903003700002003418d126a200341b0116a41186a2903003700002003419c126a200a36020020034198126a2006360200200341103a00d011200341e5116a20034188026a41106a29030037000020034185126a200341b0116a41106a290300370000200341003a00d41120032003290388023700d5112001ad4288277e200b4290b6087e7c200fad42c8f0267e7c42f0ee858d027c210b200341d0116a10a9020b0240200c42ffffff3f83500d00200710310b200410312003200341e3006a28000036004b20032003280060360248200041186a41003a0000200041106a200b3703002000200d370308200020032802483600192000411c6a200328004b360000200042003703000c190b200341d0116a410810e20520032902d411210b20032802d0112101200328029c0141ffffff3f71450d1520032802980110310c150b200141216a2d00002109200141246a2802002105200341b0116a41186a200141196a290000370300200341b0116a41106a200141116a290000370300200341b0116a41086a200141096a290000370300200320012900013703b011200341d0116a41286a200241286a280200360200200341d0116a41206a200241206a290200370300200341d0116a41186a2201200241186a290200370300200341d0116a41106a2206200241106a290200370300200341d0116a41086a2204200241086a290200370300200320022902003703d011200341e8096a200341d0116a109e02200341f8006a41086a2202200341e8096a41096a290000370300200341f8006a41106a2208200341e8096a41116a290000370300200341f8006a41186a2207200341e8096a41196a290000370300200320032900e909370378024002400240024002400240024020032d00e8094101460d00200341a8026a41186a2007290300370300200341a8026a41106a2008290300370300200341a8026a41086a2002290300370300200320032903783703a802200142003703002006420037030020044200370300200342003703d011200341b8016a41dcbfc700410a10a7022004200341b8016a41086a2202290000370300200320032900b8013703d011200341b8016a41deaac800410710a70220012002290000370300200620032900b801370300200341e8096a200341d0116a10cf0420032902ec09420020032802e80922021b220b422088220ca741057421012002410120021b2207210203402001450d02200141606a21012002200341a8026a412010c2092106200241206a210220060d000b200341e8096a200341b0116a10b608200341d0116a20032802e809220220032802f00910ab0620032802ec09210120032802d811220a450d02200341f0116a2802002114200341ec116a2802002110200341e8116a2802002112200341e4116a2802002113200341e0116a280200210f20032802dc11211120032903d011210d02402001450d00200210310b2005200da7460d03200341d0116a410410e205200320032900d111370388022003200341d8116a28000036008f020c040b410221010c050b200341d0116a410110e205200320032900d111370388022003200341d8116a28000036008f0220032d00d01121010c030b02402001450d00200210310b200341d0116a410310e205200320032900d111370388022003200341d8116a28000036008f0220032d00d01121010c020b4100210202400240200f0d004101210841002106410021050c010b200f41057441606a41057641016a210441002106200a2101034002402001200341a8026a412010c2090d0041002108410121050c020b200141206a2101410121082004200641016a2206470d000b41002105200421060b024002400240024002400240024002402010450d00201041057441606a41057641016a2104410021022013210103402001200341a8026a412010c209450d02200141206a21012004200241016a2202470d000b200421020b2005450d01200941ff01710d06410021040c020b200941ff0171450d022008450d0541002104410121080c150b4100210841012104200941ff01710d140b200341b8016a41186a2202200341a8026a41186a290300370300200341b8016a41106a2208200341a8026a41106a290300370300200341b8016a41086a2215200341a8026a41086a290300370300200320032903a8023703b80120102012470d02201241016a22012012490d14201241017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020120d00200341003602d0110c010b200341d8116a4101360200200320133602d011200320124105743602d4110b200341e8096a20012016200341d0116a104e200341f0096a280200210120032802e8094101470d0120010d190c140b200341d0116a410510e205200320032900d111370388022003200341d8116a28000036008f020c030b20032802ec092113200141057621120b201320104105746a220120032903b801370000200141186a2002290300370000200141106a2008290300370000200141086a2015290300370000201041016a21102005450d14200f20064d0d06200a200f417f6a220f4105746a2201290000210e2001290008211720012900102118200a20064105746a220241186a200141186a29000037000020022018370010200220173700082002200e3700000c140b200341d0116a410510e205200320032900d111370388022003200341d8116a28000036008f020b20032d00d01121010240201141ffffff3f71450d00200a10310b201241ffffff3f71450d00201310310b200b42ffffff3f83500d00200710310b200320032800f8013602e80120032003290388023703d8012003200328008f023600df012003200341fb016a2800003600eb01200041186a41003a000020004200370308200020032802e8013600192000411c6a20032800eb01360000200041206a20013a0000200020032903d801370021200041286a20032800df01360000200042013703000c170b200141286a2802002107200141306a290300210c200141246a280200210620034188026a41186a200141196a29000037030020034188026a41106a200141116a29000037030020034188026a41086a200141096a2900003703002003200129000137038802200341d0116a41286a200241286a280200360200200341d0116a41206a2201200241206a290200370300200341d0116a41186a2204200241186a290200370300200341d0116a41106a2208200241106a290200370300200341d0116a41086a200241086a290200370300200320022902003703d011200341e8096a200341d0116a109e0202400240024020032d00e8094101460d00200341e8096a20034188026a10b608200341d0116a20032802e809220520032802f00910ab0620032802ec092102024020032802d8112209450d0020012802002110200341ec116a280200210a20042802002104200341e4116a280200210f2008280200210120032802dc11210820032903d011210d02402002450d00200510310b2006200da7460d03200341d0116a410410e205200320032900d1113703f8012003200341d8116a2800003600ff0120032d00d0112102410121060c0b0b02402002450d00200510310b200341d0116a410310e205200320032900d1113703f8012003200341d8116a2800003600ff0120032d00d01121020c010b410221020b4200210b410021010c0a0b200d422088a721054200210e200341e8116a22064200370300200341e0116a22024200370300200341d0116a41086a22114200370300200342003703d011200341b8016a41dcbfc700410a10a7022011200341b8016a41086a2212290000370300200320032900b8013703d011200341b8016a41deaac800410710a70220062012290000370300200220032900b801370300200341e8096a200341d0116a10cf040240024020032802e80922060d00410021110c010b20032902ec09220b422088220ea72111200b42ffffff3f83500d00200610310b0240024020012005490d00200341d0116a20034188026a2007200c10b70820032d00d411210220032802d0112107200341e8096a200341d0116a41057241c30710bf091a41012106024020074101460d0020034198196a350200210b200341a8026a200341eb096a41c00710bf091a200341dd116a20034188026a41086a2202290300370000200341ed116a20034188026a41186a2206290300370000200341fc116a200a360200200341f8116a2001360200200341103a00d011200341e5116a20034188026a41106a2207290300370000200341063a00d41120032003290388023700d511200341d0116a10a902200341840a6a200a360200200341e8096a41186a2004360200200341e8096a41106a2001360200200341f4096a2008360200200320103602880a2003200f3602fc09200320093602f0092003200d3703e809200341b0116a41186a2006290300370300200341b0116a41106a2007290300370300200341b0116a41086a200229030037030020032003290388023703b011200341d0116a200341a8026a41c00710bf091a200341386a2011200341e8096a200341b0116a200341d0116a10b808427f200b42e8077e200e42a89c0e7e7c20033502404288b8247e7c42808482eb017c220b20032903387c220c200c200b541b210c0c020b200320032900e8093703f8012003200341ef096a2800003600ff010c090b4100210641002011200a6b2212201220114b1b2005490d064200210b200341d0116a41186a4200370300200341d0116a41106a4200370300200341d0116a41086a22064200370300200342003703d011200341b8016a41f3c6c000410610a7022006200341b8016a41086a2212290000370300200320032900b8013703d011200341b8016a41ec90c900410610a702200241086a2012290000370000200220032900b801370000200341306a200341d0116a412010c00202402003280234410020032802301b20104f0d00200341d0116a410710e205200320032900d1113703f801200320062800003600ff0120032d00d011210241012106410021010c0a0b20034198016a41186a2202420037030020034198016a41106a2206420037030020034198016a41086a221342003703002003420037039801200341d8016a41dcbfc700410a10a7022013200341d8016a41086a2214290000370300200320032900d80137039801200341d8016a41e5aac800410510a70220022014290000370300200620032900d801370300200341d0116a20034198016a412010aa0220032d00d0112102200341b8016a41186a200341e9116a290000370300200341b8016a41106a200341e1116a2900003703002012200341d9116a290000370300200320032900d1113703b8010240024020024101460d00410221020c010b200341a8026a41186a200341b8016a41186a290300220b370300200341a8026a41106a200341b8016a41106a2903002217370300200341a8026a41086a200341b8016a41086a2903002218370300200320032903b80122193703a802200341d0116a41186a200b370300200341d0116a41106a2017370300200341d0116a41086a2018370300200320193703d01120014105742102200921060340024020020d00410021020c020b200241606a21022006200341d0116a412010c2092112200641206a210620120d000b410121020b41002106410020112001200a6a6b2212200220024102477122021b200a6a21132012410020021b20016a22122005490d03200341d0116a20034188026a2007200c10b70820032d00d411210220032802d0112107200341e8096a200341d0116a41057241c30710bf091a4101210620074101460d0420034198196a350200210b200341a8026a200341eb096a41c00710bf091a200341dd116a20034188026a41086a2202290300370000200341ed116a20034188026a41186a2206290300370000200341fc116a2013360200200341f8116a2012360200200341103a00d011200341e5116a20034188026a41106a2207290300370000200341063a00d41120032003290388023700d511200341d0116a10a902200341840a6a200a360200200341e8096a41186a2004360200200341e8096a41106a2001360200200341f4096a2008360200200320103602880a2003200f3602fc09200320093602f0092003200d3703e809200341b0116a41186a2006290300370300200341b0116a41106a2007290300370300200341b0116a41086a200229030037030020032003290388023703b011200341d0116a200341a8026a41c00710bf091a200341206a2011200341e8096a200341b0116a200341d0116a10b808427f200b42e8077e200e42a89c0e7e7c200335022842f0bf247e7c42f0da9bfa017c220b20032903207c220c200c200b541b210c0b4201210b410021010c0a0b200341e8096a41186a2206200141196a290000370300200341e8096a41106a2204200141116a290000370300200341e8096a41086a2208200141096a290000370300200320012900013703e809200341d0116a41286a200241286a280200360200200341d0116a41206a200241206a290200370300200341d0116a41186a2201200241186a290200370300200341d0116a41106a2207200241106a290200370300200341d0116a41086a2205200241086a290200370300200320022902003703d01102400240200341d0116a109d02450d00200320032800b01136028802200320032900a8023703d0112003200341b3116a28000036008b022003200341af026a2800003600d711200041186a41003a00002000420037030820002003280288023600192000411c6a200328008b02360000200041206a41023a0000200020032903d011370021200041286a20032800d7113600004201210b0c010b200341b8016a41186a22022006290300220b370300200341b8016a41106a22062004290300220c370300200341b8016a41086a22042008290300220d370300200320032903e809220e3703b801200341dd116a200d370000200341e5116a200c370000200341ed116a200b370000200341103a00d0112003200e3700d511200341033a00d411200341d0116a10a902200120022903003703002007200629030037030020052004290300370300200320032903b8013703d011200341d0116a10b9082101200320032800b011360288022003200341b0116a41036a28000036008b02200041186a41003a0000200041106a2001ad428088277e42e082b8ac017c3703002000420137030820002003280288023600192000411c6a200328008b023600004200210b0b2000200b3703000c150b2006200f1045000b200341fc116a2013360200200341f8116a2012360200200341dd116a220120034188026a41086a2202290300370000200341e5116a220720034188026a41106a2205290300370000200341ed116a220a20034188026a41186a2210290300370000200341063a00d411200341103a00d01120032003290388023700d511200341d0116a10a902200341f8006a41186a22112010290300220b370300200341f8006a41106a22102005290300220c370300200341f8006a41086a22052002290300220d370300200320032903880222173703782001200d3700002007200c370000200a200b370000200341033a00d411200341103a00d011200320173700d511200341d0116a10a902200341d0116a41186a2011290300370300200341d0116a41106a2010290300370300200341d0116a41086a2005290300370300200320032903783703d011200e42c0940e7e200341d0116a10b908ad42e0e8267e7c42f0f490df017c210c0c030b200320032900e8093703f8012003200341ef096a2800003600ff010c030b410221010c100b200341fc116a200a360200200341f8116a2001360200200341dd116a220120034188026a41086a2202290300370000200341e5116a220720034188026a41106a2205290300370000200341ed116a220a20034188026a41186a2210290300370000200341063a00d411200341103a00d01120032003290388023700d511200341d0116a10a902200341e8096a41186a22112010290300220b370300200341e8096a41106a22102005290300220c370300200341e8096a41086a22052002290300220d370300200320032903880222173703e8092001200d3700002007200c370000200a200b370000200341033a00d411200341103a00d011200320173700d511200341d0116a10a902200341d0116a41186a2011290300370300200341d0116a41106a2010290300370300200341d0116a41086a2005290300370300200320032903e8093703d011200e42e8dd0d7e200341d0116a10b908ad42f0b9267e7c42f08d8cd0017c210c0b4201210b410121010c010b4200210b410021010b0240200841ffffff3f71450d00200910310b0240200441ffffff3f71450d00200f10310b2006450d010b20032003280060360248200320032903f8013703e801200320032800ff013600ef012003200341e3006a28000036004b200041186a20013a0000200041106a200c3703002000200b370308200020032802483600192000411c6a200328004b360000200041206a20023a0000200020032903e801370021200041286a20032800ef01360000200042013703000c0c0b200320032800603602482003200341e3006a28000036004b200041186a20013a0000200041106a200c3703002000200b370308200020032802483600192000411c6a200328004b360000200042003703000c0b0b20034198016a41186a2206200341a8026a41186a29030037030020034198016a41106a2205200341a8026a41106a29030037030020034198016a41086a2215200341a8026a41086a290300370300200320032903a80237039801200f2011470d02201141016a22012011490d00201141017422162001201620014b1b22014104200141044b1b220141ffffff3f712001462116200141057421010240024020110d00200341003602d0110c010b200341d8116a41013602002003200a3602d011200320114105743602d4110b200341e8096a20012016200341d0116a104e200341f0096a280200210120032802e8094101470d0120010d050b103b000b20032802ec09210a200141057621110b200a200f4105746a2201200329039801370000200141186a2006290300370000200141106a2005290300370000200141086a2015290300370000200f41016a210f2008450d00201020024d0d0120132010417f6a22104105746a2201290000210e2001290008211720012900102118201320024105746a220241186a200141186a29000037000020022018370010200220173700082002200e3700000b200341f5116a20032903b011370000200341dd116a200341a8026a41086a290300370000200341ed116a200341a8026a41186a290300370000200341fd116a200341b0116a41086a2903003700002003418d126a200341b0116a41186a290300370000200341103a00d011200341e5116a200341a8026a41106a29030037000020034185126a200341b0116a41106a290300370000200341013a00d411200320032903a8023700d5112003419c126a201036020020034198126a200f36020020034195126a20093a0000200341d0116a10a902200341ec116a2010360200200341d0116a41186a2012360200200341d0116a41106a200f360200200341dc116a2011360200200320143602f011200320133602e4112003200a3602d8112003200d3703d011200341e8096a200341b0116a10b60820032802e809220120032802f009200341d0116a10b106024020032802ec09450d00200110310b0240201141ffffff3f71450d00200a10310b0240201241ffffff3f71450d00201310310b200c42e0b60d7e42f8b1dde2007c210c0240200b42ffffff3f83500d00200710310b200320032800f8013602e8012003200341fb016a2800003600eb01200041186a20043a0000200041106a200c37030020004201370308200020032802e8013600192000411c6a20032800eb01360000200042003703000c060b200220101045000b1039000b20032902d411210b20032802d01121010b200c42ffffff3f83500d00200710310b200410fa06200410312003200341e3006a28000036004b20032003280060360248200041186a41003a000020004200370308200020032802483600192000411c6a200328004b360000200041246a200b370200200041206a2001360200200042013703000c010b200410fa06200410312003200341f4006a28000036005b20032003280071360258200320032903603703482003200328006736004f200041186a41003a000020004200370308200020032802583600192000411c6a200328005b360000200041206a20013a000020002003290348370021200041286a200328004f360000200042013703000b200341a0196a24000be20102047f037e024002402001280208220241ffffff3f712002470d0020024105742203417f4c0d00200128020021040240024020030d00410121010c010b2003102f2201450d020b2000410036020820002001360200200041046a2003410576220536020002402003450d0003402005450d01200441086a2900002106200441106a290000210720042900002108200141186a200441186a290000370000200141106a2007370000200141086a200637000020012008370000200141206a2101200441206a21042005417f6a22050d000b0b200020023602080f0b103b000b1039000b2c0020002002ad4220862001ad8410122201290000370000200041086a200141086a290000370000200110310b31002001ad4220862000ad84200235020842208620022802002200ad8410210240200241046a280200450d00200010310b0b800b010c7f230041d0086b2201240020014190086a2202420037030020014188086a22034200370300200141f8076a41086a22044200370300200142003703f80720014198086a41f3c6c000410610a702200420014198086a41086a220529000037030020012001290098083703f80720014198086a41ec90c900410610a702200220052900003703002003200129009808370300200141086a200141f8076a412010c002024002402001280208450d00200128020c450d0020014190086a2206420037030020014188086a22074200370300200141f8076a41086a22024200370300200142003703f80720014198086a41f3c6c000410610a702200220014198086a41086a220429000037030020012001290098083703f80720014198086a41d494c900410e10a702200341086a220820042900003700002003200129009808370000200141203602ac082001200141f8076a3602a808200141c0086a200141f8076a412010d2020240024020012802c00822090d00410321050c010b200141c0086a41086a280200210a20012802c408210b200141003a009808024002400240200a450d00410121050240024020092d00000e03000401020b200a417f6a4104490d012009280001210c410021050c030b410221050c010b200141003602a00820014201370398082001410c3602b4082001200141a8086a3602b008200120014198086a3602bc08200141246a4101360200200142013702142001419086c4003602102001200141b0086a360220200141bc086a41d8ddc900200141106a10401a20012802980820012802a00810d9040240200128029c08450d0020012802980810310b410321050b0b200b450d00200910310b200141106a200041d00710bf091a200141f0076a4100360200200141e4076a200c360200200142013703e80720014102200520054103461b3602e007200642003703002007420037030020024200370300200142003703f80720014198086a41f3c6c000410610a7022002200429000037030020012001290098083703f80720014198086a419092c900410a10a7022008200429000037000020032001290098083700002001200141f8076a412010c0020240024002402001280204410020012802001b220241016a22052002490d00200141e8076a210020014190086a220c420037030020014188086a22064200370300200141f8076a41086a22044200370300200142003703f80720014198086a41f3c6c000410610a702200420014198086a41086a220229000037030020012001290098083703f80720014198086a419092c900410a10a702200341086a2207200229000037000020032001290098083700002001200536029808200141f8076a412020014198086a4104109f02200c42003703002006420037030020044200370300200142003703f80720014198086a41f3c6c000410610a7022004200229000037030020012001290098083703f80720014198086a41cc91c900410610a702200720022900003700002003200129009808370000200141003602c808200142013703c0080240024020012802e0070e03030001040b200141013a009808200141c0086a20014198086a4101107e0c030b200141023a009808200141c0086a20014198086a4101107e0c020b200141106a10950720012802ec0741ffffff3f71450d0320012802e80710310c030b200141003a009808200141c0086a20014198086a4101107e200120012802e40736029808200141c0086a20014198086a4104107e0b200141106a200141c0086a10ea012000200141c0086a10b1072002200141c0086a41086a280200360200200120012903c00837039808200141f8076a412020014198086a10a802200141106a10950720012802ec0741ffffff3f71450d0120012802e80710310c010b20001095070b200141d0086a24000b970302027f047e23004180016b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003a00000c010b200328021421042003200341106a41086a28020036026c20032001360268200341c0006a200341e8006a10b501410121020240024020032d00404101470d004100210220034100360228200342013703202003410c3602742003200341086a3602702003200341206a36027c200341d4006a4101360200200342013702442003419086c4003602402003200341f0006a360250200341fc006a41d8ddc900200341c0006a10401a2003280220200328022810d9042003280224450d01200328022010310c010b200341386a200341c0006a41196a2900002205370300200341306a200341c0006a41116a2900002206370300200341206a41086a200341c0006a41096a2900002207370300200320032900412208370320200041196a2005370000200041116a2006370000200041096a2007370000200020083700010b200020023a00002004450d00200110310b20034180016a24000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a220228020010ab02200228020010310f0b2000410c6a220228020010ab02200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a220228020010ab02200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a220228020010ab02200228020010310f0b200041106a220228020010ab02200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a220228020010ab02200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a220228020010ab02200228020010310f0b200041c8006a220228020010ab02200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010f203200228020010310f0b0b960903017f017e097f230041d0006b22022400200141146a2902002103200141106a2802002104200128020c2105200128020821062001280204210720012802002101200241286a22084200370300200241106a41106a22094200370300200241106a41086a420037030020024200370310200241106a41b490c700410b10a702200241306a41c892c700411310a7022008200241306a41086a29000037030020092002290030370300200241086a200241106a412010c002200228020c210a2002280208210b200241106a200010ae0220022802102209200228021810af0241ff0171210802402002280214450d00200910310b02400240024020084107460d00200241106a410210ed0502402007450d00200110310b2004450d01200510310c010b200241306a200010ae02200228023821092002280230210820024100360218200242013703104100200241106a107d200820092002280210220c2002280218109f0202402002280214450d00200c10310b02402002280234450d00200810310b200a4100200b1b2108200241306a2000109908200228023821092002280230210a200241003602182002420137031020012006200241106a10ce0120052003a7200241106a10ce01200220034220883c0040200241106a200241c0006a4101107e200a2009200228021022062002280218109f0202402002280214450d00200610310b200841026a210902402002280234450d00200a10310b2009200849210802402007450d00200110310b417f200920081b210102402004450d00200510310b200241c0006a200110e102200241106a2002280240200228024810e202024002400240024002400240024002400240200228021022040d004104210441002107410021090c010b41012105200228021421094100210141002107024002400240200241186a28020022060e020201000b4100210120062105034020012005410176220720016a2208200420084102746a28020020004b1b2101200520076b220541014b0d000b200621050b200420014102746a28020022072000460d052005200120072000496a2207490d02200521010b20012009470d030b200941016a220120094f0d010c080b200720051048000b200941017422052001200520014b1b22014104200141044b1b220141ffffffff03712001464102742105200141027421010240024020090d00200241003602100c010b200241186a410436020020022004360210200220094102743602140b200241306a20012005200241106a104e200241386a280200210520022802304101460d022002280234210420092101200541027621090b200420074102746a220541046a2005200120076b41027410c0091a20052000360200200141016a21050b200241186a2005360200200220093602142002200436021020040d0120022802402201200228024810bd020c020b2005450d031039000b200228024021012002200228024836023420022001360230200241106a200241306a10e3022004450d00200941ffffffff0371450d00200410310b02402002280244450d00200110310b200241073a00100b20022d00102101200241d0006a240020014107470f0b103b000baf0801087f230041d0006b22012400200141106a200010ae0220012802102202200128021810af0241ff0171210302402001280214450d00200210310b0240024002400240024002400240024002400240024002400240024002400240024020034107460d002003417f6a0e020102040b200141073a0010410021030c0e0b200141306a200010ae02200128023821022001280230210320014100360218200142013703104105200141106a107d20032002200128021022042001280218109f0202402001280214450d00200410310b2001280234450d01200310310c010b200141306a200010ae02200128023821022001280230210320014100360218200142013703104106200141106a107d20032002200128021022042001280218109f0202402001280214450d00200410310b2001280234450d00200310310b200141286a22034200370300200141206a22024200370300200141106a41086a2205420037030020014200370310200141306a41b490c700410b10a7022005200141306a41086a220429000037030020012001290030370310200141306a41c892c700411310a7022003200429000037030020022001290030370300200141086a200141106a412010c00241002103200141c0006a417f200128020c410020012802081b220241026a220420042002491b10e102200141106a2001280240200128024810e2020240200128021022040d004104210441002106410021070c040b4101210220012802142107410021060240200528020022080e020302000b4100210320082102034020032002410176220620036a2205200420054102746a28020020004b1b2103200220066b220241014b0d000b200821020c010b200141106a410310ed0520012d001041074721030c0a0b200420034102746a28020022062000460d052002200320062000496a2206490d02200221030b20032007470d030b200741016a220320074f0d010c080b200620021048000b200741017422022003200220034b1b22034104200341044b1b220341ffffffff03712003464102742102200341027421030240024020070d00200141003602100c010b200141186a410436020020012004360210200120074102743602140b200141306a20032002200141106a104e200141386a280200210220012802304101460d022001280234210420072103200241027621070b200420064102746a220241046a2002200320066b41027410c0091a20022000360200200341016a21020b200141186a2002360200200120073602142001200436021020040d0120012802402203200128024810bd020c020b2002450d031039000b200128024021032001200128024836023420012003360230200141106a200141306a10e3022004450d00200741ffffffff0371450d00200410310b02402001280244450d00200310310b200141073a0010410021030b200141d0006a240020030f0b103b000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41b4fdc600410e10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bb20201027f230041d0006b220224002002200136020420022000360200200241086a2000200110d20202400240200228020822010d00410721000c010b200228020c210302400240200241106a280200450d004100210002400240024002400240024020012d00000e0707000102030405060b410121000c060b410221000c050b410321000c040b410421000c030b410521000c020b410621000c010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c2002419086c4003602382002200241286a360248200241346a41d8ddc900200241386a10401a2002280218200228022010d9040240200228021c450d00200228021810310b410721000b2003450d00200110310b200241d0006a240020000bc80701087f230041d0006b22012400200141286a22024200370300200141206a22034200370300200141106a41086a420037030020014200370310200141106a41b490c700410b10a702200141306a41c892c700411310a7022002200141306a41086a29000037030020032001290030370300200141086a200141106a412010c002200128020c210420012802082105200141106a200010ae0220012802102203200128021810af0241ff0171210202402001280214450d00200310310b41012002200241074622031b2102024002400240024002400240024002400240024002400240024020030d00024020024101460d00200141106a410410ed050c0c0b2004410020051b220241026a22032002492104200141306a200010ae02200128023821052001280230210220014100360218200142013703104103200141106a107d20022005200128021022062001280218109f0202402001280214450d00200610310b417f200320041b210302402001280234450d00200210310b200141c0006a200310e102200141106a2001280240200128024810e2020240200128021022040d004104210441002105410021070c040b410121032001280214210741002102410021050240200141186a28020022080e020302000b4100210220082103034020022003410176220520026a2206200420064102746a28020020004b1b2102200320056b220341014b0d000b200821030c010b200141106a200210ed050c0a0b200420024102746a28020022052000460d052003200220052000496a2205490d02200321020b20022007470d030b200741016a220220074f0d010c080b200520031048000b200741017422032002200320024b1b22024104200241044b1b220241ffffffff03712002464102742103200241027421020240024020070d00200141003602100c010b200141186a410436020020012004360210200120074102743602140b200141306a20022003200141106a104e200141386a280200210320012802304101460d022001280234210420072102200341027621070b200420054102746a220341046a2003200220056b41027410c0091a20032000360200200241016a21030b200141186a2003360200200120073602142001200436021020040d0120012802402202200128024810bd020c020b2003450d031039000b200128024021022001200128024836023420012002360230200141106a200141306a10e3022004450d00200741ffffffff0371450d00200410310b02402001280244450d00200210310b200141073a00100b20012d00102102200141d0006a240020024107470f0b103b000bc80701087f230041d0006b22012400200141286a22024200370300200141206a22034200370300200141106a41086a420037030020014200370310200141106a41b490c700410b10a702200141306a41c892c700411310a7022002200141306a41086a29000037030020032001290030370300200141086a200141106a412010c002200128020c210420012802082105200141106a200010ae0220012802102203200128021810af0241ff0171210202402001280214450d00200310310b41012002200241074622031b2102024002400240024002400240024002400240024002400240024020030d00024020024102460d00200141106a410510ed050c0c0b2004410020051b220241026a22032002492104200141306a200010ae02200128023821052001280230210220014100360218200142013703104104200141106a107d20022005200128021022062001280218109f0202402001280214450d00200610310b417f200320041b210302402001280234450d00200210310b200141c0006a200310e102200141106a2001280240200128024810e2020240200128021022040d004104210441002105410021070c040b410121032001280214210741002102410021050240200141186a28020022080e020302000b4100210220082103034020022003410176220520026a2206200420064102746a28020020004b1b2102200320056b220341014b0d000b200821030c010b200141106a200210ed050c0a0b200420024102746a28020022052000460d052003200220052000496a2205490d02200321020b20022007470d030b200741016a220220074f0d010c080b200520031048000b200741017422032002200320024b1b22024104200241044b1b220241ffffffff03712002464102742103200241027421020240024020070d00200141003602100c010b200141186a410436020020012004360210200120074102743602140b200141306a20022003200141106a104e200141386a280200210320012802304101460d022001280234210420072102200341027621070b200420054102746a220341046a2003200220056b41027410c0091a20032000360200200241016a21030b200141186a2003360200200120073602142001200436021020040d0120012802402202200128024810bd020c020b2003450d031039000b200128024021022001200128024836023420012002360230200141106a200141306a10e3022004450d00200741ffffffff0371450d00200410310b02402001280244450d00200210310b200141073a00100b20012d00102102200141d0006a240020024107470f0b103b000bb90a060f7f017e037f047e157f017e230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d0020004102360290010c010b200328020c2102024002400240200341106a28020022044104490d002004417c7122054104460d0020054108460d002005410c460d0020054110460d0020054114460d0020054118460d002005411c460d0020054120460d0020054124460d0020054128460d00200441546a4108490d0020054134460d0020054138460d002005413c460d002004417071220641c000460d00200641d000460d00200541e000460d00200541e400460d00200541e800460d00200541ec00460d00200541f000460d00200541f400460d00200541f800460d00200541fc00460d002005418001460d002005418401460d002005418801460d002005418c01460d002004419001460d00200128000021072001280004210820012800082109200128000c210a2001280010210b2001280014210c2001280018210d200128001c210e2001280020210f2001280024211020012800282111200129002c21122001280034211320012800382114200128003c2115200141c8006a290000211620012900402117200141d8006a2900002118200129005021192001280060211a2001280064211b2001280068211c200128006c211d2001280070211e2001280074211f20012800782120200128007c2121200128008001212220012800840121232001280088012124200128008c012125200441ef7e6a210620014191016a2126410021050240024020012d0090010e020100020b20064104490d01200441eb7e6a210620014195016a21262001280091012127410121050b2006450d002006417f6a2104202641016a2128410021290240024020262d00000e020100020b20044104490d012006417b6a2104202641056a21282026280001212a410121290b20044104490d002004417c7122044104460d0020044108460d002004410c460d0020044110460d0020044114460d0020282800002106202828000421262028280008212b202828000c212c2028280010212d2028280014212e200441686a220441084b0d01410120047441910271450d010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d9040240200328021c450d00200328021810310b410221050c010b2028290018212f20282800202104200041106a201637030020002017370308200041206a201837030020002019370318200020073602282000200836022c200020093602302000200a3602342000200b3602382000200c36023c2000200d3602402000200e3602442000200f3602482000201036024c2000201136025020002013360254200020143602582000201536025c2000201a3602602000201b3602642000201c3602682000201d36026c2000201e3602702000201f360274200020203602782000202136027c2000202236028001200020233602840120002024360288012000202536028c01200020273602940120004198016a20293602002000419c016a202a360200200041a0016a2006360200200041a4016a2026360200200041a8016a202b360200200041ac016a202c360200200041b0016a202d360200200041b4016a202e360200200041c0016a2004360200200041b8016a202f370200200020123703000b20002005360290012002450d00200110310b200341d0006a24000b930d02057f027e230041d0016b22032400024002400240200241086a220428020020004d0d0041012101200241046a280200450d01200228020010310c010b200341306a41086a2200200428020036020020032002290200370330200341b0016a22024200370300200341a8016a2204420037030020034198016a41086a220542003703002003420037039801200341d0006a41f3c6c000410610a7022005200341d0006a41086a22062900003703002003200329005037039801200341d0006a41ec90c900410610a7022002200629000037030020042003290050370300200341086a20034198016a412010c002200341106a410c6a2000280200360200200320032903303702142003200328020c410020032802081b2200360210200341306a41c491c200410310a70220034198016a41d093c200411910a702200320013602bc012003200341bc016a410410c802370320200341d0006a410c6a200341bc016a41046a3602002003200341206a41086a3602542003200341bc016a3602582003200341206a360250200341c0016a200341d0006a10880102400240024020032802c801220441206a2202417f4c0d000240024020020d00410121050c010b2002102f2205450d050b200341003602282003200236022420032005360220200341206a200341306a4110107e200341206a20034198016a4110107e200341206a20032802c00122022004107e024020032802c401450d00200210310b200341d0006a200328022022022003280228220410da0220034198016a41086a2205200341d9006a29000037030020034198016a41106a200341e1006a29000037030020034198016a41186a2206200341e9006a29000037030020032003290051370398010240024020032d00504101460d00200341306a41186a4200370300200341c0006a4200370300200341306a41086a4200370300200342003703300c010b200341306a41186a2006290300370300200341306a41106a20034198016a41106a290300370300200341306a41086a200529030037030020032003290398013703300b20034198016a200341106a41047210f204200341ec006a200341306a41186a2205290300370200200341e4006a200341306a41106a2206290300370200200341dc006a200341306a41086a2207290300370200200341fc006a20034198016a41086a29030037020020034184016a20034198016a41106a2903003702002003418c016a20034198016a41186a29030037020020032000360250200320032903303702542003200329039801370274200341306a200341d0006a10f304200341e9006a2005290300370000200341e1006a2006290300370000200341d9006a200729030037000020032003290330370051200341013a00504120102f2200450d042003422037029c01200320003602980120034198016a200341d0006a4101724120107e20022004200328029801220020032802a001109f020240200328029c01450d00200010310b02402003280224450d00200210310b20034198016a41086a2202200341106a41086a2903003703002003200329031037039801200341206a200110f404200341d0006a200328022022042003280228220510f50402400240200328025022000d00410021014104210042002108410021060c010b20032902542208422088a721012008a721060b200341d0006a41086a200229030037030020032003290398013703500240024020012006470d002008a720084220882209a72201470d00200141016a22022001490d0220014101742206200220022006491b22024104200241044b1b220241ffffffff00712002464102742106200241047421020240024020010d00200341003602300c010b200341386a410436020020032000360230200320094204863e02340b200341c0016a20022006200341306a104e200341c8016a280200210220032802c0014101460d0120032802c40121002008422088a721012002410476ad21080b200020014104746a22022003290350370200200241086a200341d0006a41086a2903003702002003200842ffffffff0f83200141016a2202ad422086843702542003200036025020000d022004200510bd020c030b20020d040b103b000b20042005200341d0006a10f60402402002450d00200041086a2102200141047441106a2101034002402002280200450d002002417c6a28020010310b200241106a2102200141706a22010d000b0b200842ffffffff0083500d00200010310b02402003280224450d00200410310b410021010b200341d0016a240020010f0b1039000be10c05037f017e047f017e047f230041c0046b22052400200520013602240240024020012002470d002000410110d3020c010b200541286a200210ae0220052802282206200528023010af0221070240200528022c450d00200610310b200741ff0171210702400240024041000d0020070e080100000000000001010b2007417b6a41014b0d010b2000410210d3020c010b42002108200541b8046a22074200370300200541a0046a41106a22064200370300200541a0046a41086a22094200370300200542003703a004200541286a41b5d8c800410d10a7022009200541286a41086a220a290000370300200520052900283703a004200541286a41cfd8c800410c10a7022007200a29000037030020062005290028370300200541286a200541a0046a412010b2020240024020052802b8014102470d00410021094100210a410021074100210b410021064100210c4200210d0c010b200541286a41106a290300210d200529033021082005280278210c200528027c2109200528028001210a2005280288012107200528028c01210b20052802980121060b024020030d002000410310d3020c010b0240200720034f0d002000410410d3020c010b024020040d002000410510d3020c010b0240200620044f0d002000410610d3020c010b20054190046a2001200210ff07200541286a200528029004220620052802980410a50620052d004821070240200528029404450d00200610310b0240200741ff01714102460d002000410710d3020c010b200541a0046a2001200210cf02200541286a20052802a004220620052802a80410d00220052d005c2107024020052802a404450d00200610310b0240200741ff01714102460d002000410810d3020c010b200541286a20052802241080082005280230210e200528022821074100210620054194046a41003a00002005410036029004200541186a2007200e20054190046a4105410010b705024002402005280218450d002005200528021c2206410520064105491b3602a404200520054190046a3602a004200541106a200541a0046a10bb012005280214210f20052802104521060c010b0b0240200528022c450d00200710310b200541286a20052802242207108108200541086a20052802282210200528023010c0022005280208210e200528020c21110240200528022c450d0020101031200528022421070b200541286a200710ae0220052802282210200528023010af0241ff017121070240200528022c450d00201010310b200f410020061b210f20114100200e1b2106024020074107460d00200741054b0d004101200774412a71450d00200a21090b02402006200f6a2009490d002000410910d3020c010b200541286a200541246a10d905200541a0046a200541286a2008200d10a803200520052900a104370390042005200541a0046a41086a28000036009704024020052d00a00422074107460d00200020073a00002000200529039004370001200041086a2005280097043600000c010b200541286a200528022410810820052802302109200528022821072005200641016a3602a00420072009200541a0046a4104109f020240200528022c450d00200710310b2005200d3703302005200837032820054100360238200541003a00482005200b360244200520033602402005200436023c200541a0046a2001200210ff0720052802a004220720052802a804200541286a10b206024020052802a404450d00200710310b200541c0006a22064200370300200541386a22094200370300200541286a41086a2207420037030020054200370328200541286a419aa7c600410410a702200541a0046a418cd5c600411b10a7022006200541a0046a41086a220a290000370300200920052900a00437030020054100360298042005420137039004200520013602a00420054190046a200541a0046a4104107e200520023602a00420054190046a200541a0046a4104107e200a20052802980436020020052005290390043703a004200541286a4120200541a0046a10a802200541346a200336020020072004360200200541003602a804200542013703a0042005200528022436022c200541073a0028200541003a009004200541a0046a20054190046a4101107e200541286a200541a0046a10de01200541286a10a301200720052802a804360200200520052903a004370328200c2002200541286a10b3021a200041073a00000b200541c0046a24000bf30c04067f017e017f017e230041e0056b220324002003200136021c200341a8056a2002200110ff07200341c0016a20032802a805220420032802b00510a506200341c0056a41086a2205200341c0016a41086a290300370300200341c0056a41106a2206200341c0016a41106a290300370300200341c0056a41186a2207200341c0016a41186a290300370300200320032903c0013703c005200320032800e1013602b8052003200341e4016a2800003600bb05024020032d00e00122084102460d00200341a0016a41186a2007290300370300200341a0016a41106a2006290300370300200341a0016a41086a2005290300370300200320032903c0053703a001200320032802b80536029801200320032800bb0536009b010b024020032802ac05450d00200410310b0240024020084102460d00200341f0006a410e6a200341a0016a41086a290300370100200341f0006a41166a200341a0016a41106a290300370100200341f0006a411e6a200341a0016a41186a2903002209370100200341c8006a411e6a22042009370100200320032903a001370176200341c8006a41086a200341f0006a41086a290100370300200341c8006a41106a200341f0006a41106a290100370300200341c8006a41186a200341f0006a41186a29010037030020032003280298013602202003200328009b0136002320032003290170370348200341286a41186a2004290100370300200341286a41106a200341c8006a41166a290100370300200341286a41086a200341c8006a410e6a2901003703002003200329014e37032802402008450d002000410b10d3020c020b42002109200341c0056a41186a22084200370300200341c0056a41106a22044200370300200341c0056a41086a4200370300200342003703c005200341c0056a41b5d8c800410d10a702200341c0016a41cfd8c800410c10a7022008200341c0016a41086a290000370300200420032900c001370300200341c0016a200341c0056a412010b2020240024020032802d0024102470d0041002106410021054100210a4200210b0c010b200341c0016a41206a290300210b20032903d8012109200328029002210a20032802a802210520032802ac0221060b200341c0016a200110ae0220032802c001220420032802c80110af0241ff01712108024020032802c401450d00200410310b024020084107460d00200841054b0d004101200874412a71450d00200621050b200341c0016a200328021c10990720032802c801210620032802c001210441002108200341cc006a41003a000020034100360248200341106a20042006200341c8006a4105410010b705024002402003280210450d00200320032802142208410520084105491b3602742003200341c8006a360270200341086a200341f0006a10bb01200328020c210620032802084521080c010b0b024020032802c401450d00200410310b200341c0016a200328021c108208200320032802c001220720032802c80110c0022006410020081b21042003280204410020032802001b2108024020032802c401450d00200710310b0240200820046a2005490d002000410c10d3020c020b200341c0016a2003411c6a10d905200341f0006a200341c0016a2009200b10a803200320032900713703482003200341f0006a41086a28000036004f024020032d007022044107460d00200020043a000020002003290348370001200041086a200328004f3600000c020b200341c0016a41186a200341286a41186a290300370300200341c0016a41106a200341286a41106a290300370300200341c0016a41086a200341286a41086a290300370300200341e4016a2003280023360000200320032903283703c001200341013a00e001200320032802203600e101200341f0006a2002200110ff07200328027022012003280278200341c0016a10b20602402003280274450d00200110310b200341c0016a200328021c10820820032802c801210420032802c00121012003200841016a36027020012004200341f0006a4104109f02024020032802c401450d00200110310b20034100360278200342013703702003200328021c3602c401200341083a00c001200341003a0048200341f0006a200341c8006a4101107e200341c0016a200341f0006a10de01200341c0016a10a301200341c0016a41086a2003280278360200200320032903703703c001200a2002200341c0016a10b3021a200041073a00000c010b2000410a10d3020b200341e0056a24000baf0e04047f027e097f037e230041a0086b22062400200641e8006a22074200370300200641e0006a22084200370300200641d0006a41086a420037030020064200370350200641d0006a41f3c6c000410610a702200641306a41ec90c900410610a7022007200641306a41086a29000037030020082006290030370300200641186a200641d0006a412010c0024102210802402004200628021c41c0f0006e410020062802181b22096b220720044b0d00200641206a200010b702200641d0006a2006280220200628022810b8022006290254220a4200200628025022081b210b2008410820081b210c024002400240024002400240200a422088a7410020081b20074f0d00024002402007200b422088a7220d4b0d002007210e0c010b02400240200ba72208200d6b2007200d6b220f490d00200d210e0c010b200d200f6a2210200d490d05200841017422112010201120104b1b22104104201041044b1bad42387e220a422088a7454103742110200aa721110240024020080d00200641003602500c010b200641d0006a41086a41083602002006200c3602502006200841386c3602540b200641306a20112010200641d0006a104e200641386a280200210820062802304101460d032006280234210c200b422088a7210e200841386ead210b0b200c200e41386c6a21080240200f4102490d002009200d6a20046b41016a210d034020084200370300200841386a2108200d41016a2210200d4921112010210d2011450d000b200f200e6a417f6a210e0b200f450d0020084200370300200e41016a210e0b200b42ffffffff0f83200ead42208684210b0b02402007200720056a4f0d00200441017420094101746b2110200441386c200941386c6b210d2005211103400240024002402007200b422088a722084f0d00200c200d6a2208290300500d01410121080c080b20072008470d01200641d0006a41186a220e200141186a290000370300200641d0006a41106a220f200141106a290000370300200641d0006a41086a2212200141086a290000370300200620012900003703500240024002402007200ba7460d00200721080c010b200741016a22132007490d0820102013201020134b1b22134104201341044b1bad42387e220a422088a7454103742113200aa721140240024020070d00200641003602300c010b200641083602382006200d3602342006200c3602300b200641c0006a20142013200641306a104e2006280248211320062802404101460d012006280244210c200b42808080807083201341386ead84210b0b200c200841386c6a22084201370300200e290300210a200f29030021152012290300211620062903502117200841306a2003370300200841286a200237030020082017370308200841106a2016370300200841186a2015370300200841206a200a370300200b4280808080107c210b0c020b20130d050c060b200641d0006a41186a220e200141186a290000370300200641d0006a41106a220f200141106a290000370300200641d0006a41086a2212200141086a29000037030020062001290000370350200842013703002012290300210a200f2903002115200e290300211620062903502117200841306a2003370300200841286a2002370300200841206a2016370300200841186a2015370300200841106a200a370300200841086a20173703000b200741016a2107201041026a2110200d41386a210d2011417f6a22110d000b0b200641086a2000200110d303024020022006290308220a7d22152002562003200641106a2903007d2002200a54ad7d220a200356200a2003511b22070d00200641d0006a20012015200a10a8034100210820062d00504107470d040b4200200a20071b210a4200201520071b2115024020092004470d00200641d0006a200010ae0220062802502208200628025810af0241ff0171210702402006280254450d00200810310b0240024020074107460d002007417f6a0e0701000000000001000b200641d0006a410710ba020c010b0240200010b0020d00200010bb02200641073a00500c010b200641d0006a410a10ba020b200641a0016a200337030020064198016a200237030020064190016a200a370300200641d0006a41386a2015370300200641d0006a41086a41013a0000200641d9006a200129000037000020064184016a200536020020064180016a2004360200200641fc006a2000360200200641e1006a200141086a290000370000200641e9006a200141106a290000370000200641f1006a200141186a2900003700002006410d3a0050200641d0006a10a9022006200c3602502006200b370254200628022821072006280220210802400240200c0d002008200710bd020c010b20082007200641d0006a10d403200c450d00200ba72207450d00200741386c450d00200c10310b410321080c040b2008450d010b1039000b103b000b200ba72207450d00200741386c450d00200c10310b2006280224450d00200628022010310b200641a0086a240020080b860201037f230041d0006b22022400200241086a4190f3c000410510a702200241186a4195f3c000410610a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bb30201017f230041e0006b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a1099040240024020032802480d0020034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341386a360258200341c4006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110310b200341e0006a24000b9c1b03067f037e157f230041b0016b22042400200441186a41186a200141186a290000370300200441186a41106a200141106a290000370300200441186a41086a200141086a2900003703002004200129000037031802400240024002400240024002400240024002400240024002400240024020002802042205450d00200028020021060c010b419804102f2205450d0141002106200541003b01b601200541003602b00120002005360204200041003602000b02400340200541b8016a210720052f01b6012108410021010240034020082001460d01200441186a2007412010c2092209450d03200141016a2101200741206a21072009417f4a0d000b2001417f6a21080b02402006450d002006417f6a2106200520084102746a4198046a28020021050c010b0b200441086a200441186a41106a2207290300220a370300200441106a200441306a290300220b37030020042004290320220c370300200428021c21062004280218210d20044180016a41106a2209200b37030020044180016a41086a220e200a3703002004200c3703800102400240024002400240024020052f01b6012201410a4b0d0020072009290300370300200441186a41086a200e2903003703002004200429038001370318200541b8016a2107200141016a2109200841016a220e20014b0d012007200e4105746a200720084105746a220120092008417f736a220741057410c0091a200120063600042001200d36000020012004290318370008200141106a200441206a290300370000200141186a200441186a41106a2903003700002005200e4104746a200520084104746a200741047410c0091a0c020b410521014100210f02400240200841054f0d0041042101200821070c010b41052107024002402008417b6a0e020201000b200841796a21074101210f410621010c010b410021074101210f0b419804102f220e450d06200e41003b01b601200e41003602b001200e20052f01b60122102001417f736a22093b01b601200541b8016a221120014105746a2208280004211220082800002113200441186a41106a200841186a290000370300200441186a41086a200841106a290000370300200420082900083703182009410c4f0d072010200141016a22086b2009470d08200520014104746a221041086a290300210a2010290300210b200e41b8016a201120084105746a200941057410bf091a200e200520084104746a200941047410bf092114200520013b01b60120044198016a41086a200441186a41086a220829030037030020044198016a41106a200441186a41106a2210290300370300200420042903183703980120142005200f1b22092f01b6012101201020044180016a41106a290300370300200820044180016a41086a2903003703002004200429038001370318200941b8016a210f200141016a21110240200741016a221520014b22160d00200f20154105746a200f20074105746a20112007417f736a41057410c0091a0b200f20074105746a220120063600042001200d36000020012004290318370008200141106a2008290300370000200141186a2010290300370000024020160d00200920154104746a200920074104746a20112007417f736a41047410c0091a0b200920074104746a2201200337030820012002370300200920113b01b601200441e8006a41086a221720044198016a41086a22182903002202370300200441e8006a41106a221920044198016a41106a221a29030022033703002004200429039801220c370368200441d0006a41106a22152003370300200441d0006a41086a221620023703002004200c37035020052802b001220d0d024100211b0c030b200720084105746a220120063600042001200d36000020012004290318370008200141106a200441206a290300370000200141186a200441186a41106a2903003700000b200520084104746a2201200337030820012002370300200520093b01b6010c0f0b200b2102200a21034100211b201421142012211c2013211d034020052f01b401210520044180016a41106a221e201529030037030020044180016a41086a221f201629030037030020042004290350370380014101450d07200d2f01b6012211410b490d024100210641042101024020054105490d0020052101024002402005417b6a0e020201000b200541796a210541012106410621010c010b4100210541012106410521010b41c804102f220e450d04200e41003b01b601200e41003602b001200e200d2f01b60122202001417f736a22073b01b601200d41b8016a222120014105746a2209280004211220092800002113200441186a41106a2210200941186a290000370300200441186a41086a220f200941106a290000370300200420092900083703182007410c4f0d082020200141016a22086b2007470d09200d20014104746a220941086a290300210a2009290300210b200e41b8016a202120084105746a200741057410bf091a200e200d20084104746a200741047410bf092107200d20013b01b6012018200f290300370300201a2010290300370300200420042903183703980120072f01b601220941016a21202009410c4f0d0a201120016b22012020470d0b201b41016a211b20074198046a200d20084102746a4198046a200141027410bf091a4100210102400340200720014102746a4198046a280200220820013b01b401200820073602b0012001200120094922086a220120094b0d0120080d000b0b2019201a2903003703002017201829030037030020042004290398013703682007200d20061b22082f01b60121112010201e290300370300200f201f2903003703002004200429038001370318200841b8016a2109201141016a21060240200541016a220120114b221e0d00200920014105746a200920054105746a2005417f7320066a41057410c0091a0b200920054105746a2209201c3600042009201d36000020092004290318370008200941106a200f290300370000200941186a20102903003700000240201e0d00200820014104746a200820054104746a2005417f7320066a41047410c0091a0b200820054104746a220920033703082009200237030020084198046a21090240200541026a220f201141026a22104f0d002009200f4102746a200920014102746a2001417f7320106a41027410c0091a0b200920014102746a2014360200200820063b01b6010240200120104f0d00200820054102746a419c046a2101034020012802002209200541016a22053b01b401200920083602b001200141046a210120062005470d000b0b201620172903003703002015201929030037030020042004290368370350200d2105200d2802b0012201210d200b2102200a2103200721142012211c2013211d20010d000b0b200441386a41106a20152903002202370300200441386a41086a2016290300220337030020042004290350220c370338201a2002370300201820033703002004200c3703980120002802042207450d0a2000280200210941c804102f2201450d022001200736029804200141003b01b601200141003602b001200741003b01b401200720013602b001200020013602042000200941016a360200200441186a41106a20044198016a41106a290300370300200441186a41086a20044198016a41086a29030037030020042004290398013703182009201b470d0b20012f01b6012209410b4f0d0c2001200941016a22083b01b601200120094105746a220741c0016a2004290318370000200741c8016a200441206a290300370000200741d0016a200441286a290300370000200741bc016a2012360000200741b8016a2013360000200120094104746a2207200b3703002007200a370308200120084102746a4198046a200e360200200e20083b01b401200e20013602b0012000200028020841016a3602080c0e0b200d2f01b6012109200441186a41106a220e20044180016a41106a290300370300200441186a41086a221020044180016a41086a2903003703002004200429038001370318200541016a2101200d41b8016a2107200941016a21080240200520094f22060d00200720014105746a200720054105746a2005417f7320086a41057410c0091a0b200720054105746a2207201c3600042007201d36000020072004290318370008200741106a2010290300370000200741186a200e290300370000024020060d00200d20014104746a200d20054104746a2005417f7320086a41047410c0091a0b200d20054104746a2207200337030820072002370300200d4198046a2107200941026a210e024020060d00200541027420076a41086a200720014102746a2001417f73200e6a41027410c0091a0b200720014102746a2014360200200d20083b01b6012001200e4f0d0c200941016a2108200d2001417f6a22014102746a419c046a2107034020072802002209200141016a22013b01b4012009200d3602b001200741046a210720082001470d000c0d0b0b200520014104746a22012003370308200120023703000c0c0b1039000b2009410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2007410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2020410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b2000200028020841016a3602080b200441b0016a24000bf80201047f230041c0006b2202240041b8f1c4002103410d2104410b21050240024002400240024002400240024002400240024002400240200141ff01710e0d000102030405060708090a0b0c000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41f0bdc5001047000b419ca0c6002103410021050c0a0b41b080c500210341112104410121050c090b41cc80c500210341082104410221050c080b41dc80c5002103410c2104410321050c070b41f080c500210341102104410421050c060b419cf2c4002103410c2104410521050c050b419081c5002103410621050c040b41a881c500210341102104410721050c030b41fca0c6002103410f2104410821050c020b41e4a0c6002103410921050c010b41d081c5002103410a2105410a21040b20004183323b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bc10401087f230041c0016b22012400200141086a200010cc02200141d0006a200128020822002001280210220210c90220014190016a41086a2203200141d0006a41086a29030037030020014190016a41106a2204200141d0006a41106a29030037030020014190016a41186a2205200141d0006a41186a29030037030020014190016a41206a2206200141d0006a41206a29030037030020014190016a41286a2207200141d0006a41286a2903003703002001200129035037039001200120012800810136028801200120014184016a28000036008b01410221080240024020012d0080014102470d00410121030c010b200141206a41286a2007290300370300200141206a41206a2006290300370300200141206a41186a2005290300370300200141206a41106a2004290300370300200141206a41086a2003290300370300200120012903900137032020012001280288013602182001200128008b0136001b41012108410021030b20014184016a200128001b360000200141d0006a41286a200141206a41286a290300370300200141d0006a41206a200141206a41206a290300370300200141d0006a41186a200141206a41186a290300370300200141d0006a41106a200141206a41106a290300370300200141d0006a41086a200141206a41086a29030037030020012001290320370350200120083a0080012001200128021836008101024002402003450d002000200210bd020c010b20002002200141d0006a10cd020b0240200128020c450d00200010310b200141c0016a24000bc11104027f097e047f067e230041a0096b2203240002402001200284500d00200341f0006a2000109303200341d0016a200328027022042003280278109403200341f0016a2903002105200341e8016a2903002106200341e0016a290300210720032903d801210820032903d001210902402003280274450d00200410310b20094201520d002008200684200720058484500d00200341f0006a2000109303200341d0016a200328027022042003280278109403200341d0016a41386a290300210a200341d0016a41306a2903002106200341d0016a41286a2903002107200341d0016a41206a290300210b200341d0016a41186a290300210c200341d0016a41106a290300210920034190026a290300210d20032903d801210520032903d0012108200341206a41086a200341a0026a290300370300200320034198026a2903003703200240024020084201510d004200210d200341306a41386a4200370300200341306a41306a4200370300200341306a41286a4200370300200341306a41206a4200370300200341306a41186a4200370300200341306a41106a4200370300200341306a41086a420037030020034200370330420021074200210642002105420021090c010b200341306a41286a2006370300200341306a41306a200a37030020032007370350200320053703302003200d3703682003200c370340200320093703382003200b3703480b02402003280274450d00200410310b0240024020052009844200520d0020072003290340842006200341c8006a29030084844200520d002003290360200341e8006a2903008450450d004200210c410021040c010b200341c0006a2903002105200341e0006a290300210a200341d8006a2903002106200341d0006a290300210b20032903382107200329033021084201210c20032903482109410121040b0240200c420152220e450d004200210b420021064200210a4200210d420021054200210942002108420021070b200341f8016a220f200637030020034180026a2210200a370300200341e8016a2009200220092005200156200920025620092002511b22111b22067d20052001200520111b220954ad7d220a3703002003200b3703f0012003200520097d220b3703e0012003427f200720067c200820097c22012008542211ad7c22022011200220075420022007511b22111b22023703d8012003427f200120111b22013703d001200ead210702400240427f2001200b7c22052005200154220e2002200a7c200ead7c220520025420052002511b220e1b220842ffc7afa02556427f2005200e1b22054200522005501b0d002001200b842002200a8484220a50210e4200210b200a420052ad210a0c010b20102903002112200f2903002113200341f0016a2903002114200341e0016a290300211520032903e801211620032903d801211720032903d001210c4201210b4200210a4101210e0b200341a8016a200637030020034198016a200537030020034190016a2211200837030020034180016a2002370300200320093703a001200320013703782003200a37038801200320073703700240024002402004200b420152720d00200320003602d0012000200341d0016a10a3030c010b024020044101732204200b420151720d00200320003602d0012000200341d0016a10a40341ff017122044103460d01024020040e03030200030b200e0d03200320113602d001200341d0016a10a2030c030b200b4201522004710d010b200341b0016a2000109303200341d0016a20032802b001220420032802b801220e10940320032903d0012102200341206a41086a2211200341a0026a290300370300200320034198026a2903003703200240024020024201510d00200341c0016a41086a4200370300200342003703c0010c010b200341c0016a41086a2011290300370300200320032903203703c0010b0240200b4201510d004200210c420021174200211442002113420021124200210d42002115420021160b20034180026a2013370300200341d0016a41286a2014370300200341f0016a2016370300200341e8016a2015370300200341d0016a41106a201737030020034190026a200d37030020034198026a20032903c001370300200341d0016a41386a2012370300200341a0026a200341c0016a41086a2903003703002003200c3703d801200342013703d0012004200e200341d0016a41086a109903024020032802b401450d00200410310b200341f0006a41106a2903002102200341f0006a41286a2903002105200341f0006a41386a290300210620032903782101200329039001210820032903a001210920032903702107200329038801210a0b024020074201520d0020034188026a200237030020034180026a2001370300200341d0016a41086a41003a0000200341d9016a2000290000370000200341e1016a200041086a290000370000200341e9016a200041106a290000370000200341f1016a200041186a290000370000200341023a00d001200341d0016a10a9020b02400240200a50450d00420021020c010b200341d0016a41186a200041186a290000370300200341d0016a41106a200041106a290000370300200341d0016a41086a200041086a290000370300200320002900003703d001420121020b200341186a200341d0016a41186a22042903002201370300200341106a200341d0016a41106a220e2903002207370300200341086a200341d0016a41086a2211290300220a370300200320032903d001220d37030020034180026a220f2005370300200341f8016a22102008370300200e200a37030020042007370300200341f0016a2001370300200320023703d0012003200d3703d801200341d0016a10a503024020032903d001500d0020032010360270200341f0006a10a2030b20034188026a2006370300200f2009370300201141063a0000200341d9016a2000290000370000200341e1016a200041086a290000370000200341e9016a200041106a290000370000200341f1016a200041186a290000370000200341023a00d001200341d0016a10a9020b200341a0096a24000b0e002001ad4220862000ad8410230bb5860108017f027e067f017e027f027e017f057e230041d00e6b2203240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d00000e09000102030405060708000b20034194076a41013602002003420137028407200341d897ca0036028007200341043602f405200341dcd8c8003602f0052003200341f0056a3602900720034180076a41b8fdc4001047000b200141c0006a2903002104200141386a2903002105200141306a28020021062001412c6a2802002107200141286a2802002108200141246a2802002109200341f0056a41206a200141216a2f00003b0100200341f0056a41186a200141196a290000370300200341f0056a41106a200141116a290000370300200341f0056a41086a200141096a290000370300200320012900013703f00520034180076a41286a200241286a28020036020020034180076a41206a200241206a29020037030020034180076a41186a200241186a29020037030020034180076a41106a200241106a29020037030020034180076a41086a200241086a2902003703002003200229020037038007200341e0046a20034180076a109e02200341d8036a41086a2202200341e0046a41096a290000370300200341d8036a41106a2201200341e0046a41116a290000370300200341d8036a41186a220a200341e0046a41196a290000370300200320032900e1043703d80320032d00e0044101460d0720034180036a41186a200a29030037030020034180036a41106a200129030037030020034180036a41086a2002290300370300200320032903d803370380030240200820074d0d00200341b8056a410310e5050c2b0b200841076a22022008490d080240200220074f0d00200341b8056a410410e5050c2b0b200341f0036a22014200370300200341e8036a22024200370300200341d8036a41086a220a4200370300200342003703d80320034180076a41f3c6c000410610a702200a20034180076a41086a220b29000037030020032003290080073703d80320034180076a41ec90c900410610a7022001200b2900003703002002200329008007370300200341106a200341d8036a412010c00202402003280214410020032802101b2006490d00200341b8056a410510e5050c2b0b0240417f417f200841016a220120012008491bad42c0f0007e220ca7200c422088a71b20064f0d00200341b8056a410610e5050c2b0b200341f0036a4200370300200341e8036a4200370300200341d8036a41086a22014200370300200342003703d80320034180076a41f3c6c000410610a702200120034180076a41086a220a29000037030020032003290080073703d80320034180076a41ec90c900410610a702200241086a200a2900003700002002200329008007370000200341086a200341d8036a412010c0020240200328020c41c0f0006e410020032802081b20084d0d00200341b8056a410110e5050c2b0b20034180076a20091089042003280280072201200328028807108f0321020240200328028407450d00200110310b02402002450d00200341b8056a411110e5050c2b0b200341c0026a200910cc0220034180076a20032802c002220120032802c80210c902200341e8016a41086a220a20034199076a290000370300200341e8016a41106a220b200341a1076a290000370300200341e8016a41176a220d200341a8076a29000037000020032003290091073703e801200320032800b107360298042003200341b4076a28000036009b0420032d009007210e024020032d00b00722024102460d00200341f8006a41176a200d290000370000200341f8006a41106a200b290300370300200341f8006a41086a200a290300370300200320032903e80137037820032003280298043602c8012003200328009b043600cb010b024020032802c402450d00200110310b200341e8016a41086a2201200341f8006a41086a290300370300200341e8016a41106a220a200341f8006a41106a290300370300200341e8016a41176a220b200341f8006a41176a290000370000200320032903783703e801200320032802c80136029804200320032800cb0136009b0420024102460d09200341d8036a41176a2202200b290000370000200341d8036a41106a220b200a290300370300200341e0046a41096a2001290300370000200341f1046a200b290300370000200341e0046a41186a20022900003700002003200e3a00e004200320032903e8013700e104024020034180036a200341e0046a412010c209450d00200341b8056a410c10e5050c2b0b200341e8016a41186a220a4200370300200341f8016a22024200370300200341e8016a41086a220b4200370300200342003703e80120034180076a41c686c500410910a702200b20034180076a41086a220129000037030020032003290080073703e80120034180076a4188f4c500410d10a702200a200129000037030020022003290080073703002003200341e8016a412010c0022003280204410020032802001b220a41016a220b200a490d0a20034180076a20034180036a428080e983b1de16420010a80320032003290081073703d803200320012800003600df03024020032d00800722014107470d00200341e0076a20034180036a41186a290300370300200341d8076a20034180036a41106a290300370300200341d0076a20034180036a41086a290300370300200341f0076a200341f0056a41086a290300370300200341f8076a200341f0056a41106a29030037030020034180086a200341f0056a41186a29030037030020034188086a20034190066a2f01003b010020032003290380033703c807200320032903f0053703e80720034180076a41186a4200370300200341a8076a2004370300200342003703900720034200370388072003428080e983b1de1637038007200320063602b007200341003602b407200320083602bc07200320073602c0072003200a3602c407200320053703a007200341f8006a2009108904200328028001210820032802782101200341003602f001200342013703e80120034180076a200341e8016a10c9072001200820032802e801220720032802f001109f02024020032802ec01450d00200710310b0240200328027c450d00200110310b20034180026a4200370300200341f8016a4200370300200341e8016a41086a22084200370300200342003703e80120034180076a41c686c500410910a702200820034180076a41086a220129000037030020032003290080073703e80120034180076a4188f4c500410d10a702200241086a200129000037000020022003290080073700002003200b36028007200341e8016a412020034180076a4104109f02200910bb02200141003a00002003410c3a00800720034180076a410c6a200936020020034180076a10a902200341073a00b8050c2d0b200341c0056a20032800df03360000200320013a00b805200320032903d8033700b9050c2a0b200141d0006a2903002104200141c8006a2903002105200141c4006a280200210720012d0001210a200341f8006a200141026a41c10010bf091a20034180076a41286a200241286a28020036020020034180076a41206a200241206a29020037030020034180076a41186a200241186a29020037030020034180076a41106a200241106a29020037030020034180076a41086a200241086a2902003703002003200229020037038007200341f0056a20034180076a109e02200341d8036a41086a2202200341f9056a290000370300200341d8036a41106a220120034181066a290000370300200341d8036a41186a220820034189066a290000370300200320032900f1053703d80320032d00f0054101460d0a200341c8016a41186a2008290300370300200341c8016a41106a2001290300370300200341c8016a41086a2002290300370300200320032903d8033703c801024020054280a094a58d1d5441002004501b450d00200341e8006a410810e5050c270b200341d0046a200710890420034180076a20032802d004220120032802d804108a04200341b8056a41086a220820034180076a41086a290300370300200341b8056a41106a220620034180076a41106a290300370300200341b8056a41186a220920034180076a41186a290300370300200341b8056a41206a220b20034180076a41206a290300370300200341b8056a41286a220d20034180076a41286a290300370300200341b8056a41306a220e20034180076a41306a28020036020020032003290380073703b80520032802b4072102200341e0046a200341b8076a41d80010bf091a02400240024020024103460d0020034198046a41306a200e28020036020020034198046a41286a200d29030037030020034198046a41206a200b29030037030020034198046a41186a200929030037030020034198046a41106a200629030037030020034198046a41086a2008290300370300200320032903b8053703980420034180036a200341e0046a41d80010bf091a024020032802d404450d00200110310b200341d8036a410e6a20034198046a41086a290300370100200341d8036a41166a20034198046a41106a290300370100200341d8036a411e6a20034198046a41186a290300370100200341d8036a41266a20034198046a41206a290300370100200341d8036a412e6a20034198046a41286a290300370100200341d8036a41366a20034198046a41306a28020036010020032003290398043701de03200341c0026a41086a200341d8036a41086a290100370300200341c0026a41106a200341d8036a41106a290100370300200341c0026a41186a200341d8036a41186a290100370300200341c0026a41206a200341d8036a41206a290100370300200341c0026a41286a200341d8036a41286a290100370300200341c0026a41306a200341d8036a41306a290100370300200341c0026a41386a200341d8036a41386a2f01003b0100200320032901d8033703c002200341e8016a20034180036a41d80010bf091a200341f0056a41086a200341c0026a410e6a290100370300200341f0056a41106a2208200341c0026a41166a290100370300200341f0056a41186a2201200341c0026a411e6a290100370300200341f0056a41206a200341c0026a41266a290100370300200341f0056a41286a2206200341c0026a412e6a290100370300200341f0056a41306a200341c0026a41366a280100360200200320023602a406200320032901c6023703f005200341f0056a41386a200341e8016a41d80010bf091a2008290300220c20057c220f200c5422082001290300221020047c2008ad7c220c201054200c2010511b0d012003200f370380062001200c370300200f20032903900656200c2006290300221056200c2010511b450d02200341e8006a410a10e5050c290b024020032802d404450d00200110310b200341e8006a410910e5050c280b200341e8006a410710e5050c270b200341f0036a22094200370300200341e8036a22014200370300200341d8036a41086a22084200370300200342003703d80320034180076a41f3c6c000410610a702200820034180076a41086a220629000037030020032003290080073703d80320034180076a41ec90c900410610a702200920062900003703002001200329008007370300200341386a200341d8036a412010c0020240200328023c410020032802381b220b20032802a006490d00200341e8006a410b10e5050c270b200942003703002001420037030020084200370300200342003703d80320034180076a41f3c6c000410610a7022008200629000037030020032003290080073703d80320034180076a41ec90c900410610a702200141086a20062900003700002001200329008007370000200341306a200341d8036a412010c0020240200328023441c0f0006e410020032802301b20032802ac064d0d00200341e8006a410b10e5050c270b200342f0f2bd99e6ac9db7e40037038007200341c0026a20034180076a2007108b04200341206a2007200341c0026a10d30302402003290320200341206a41086a29030084500d00200341e8006a410f10e5050c270b20034180076a200341c8016a20032802b406220910ca0720034180076a41086a290300210c20034198076a280200210d20034194076a2802002108200329038007211020032802900721060240024020032d00d806220e4103460d00200341e0046a200341f8006a41c10010bf091a200a41ff01714103460d0120034180036a200341e0046a41c10010bf091a2003200a3a00800720034181076a20034180036a41c10010bf091a4120102f220a450d20200342203702bc052003200a3602b805200320073602e004200341b8056a200341e0046a4104107e200341b8056a200341c8016a4120107e2003200c3703e804200320103703e004200341b8056a200341e0046a4110107e200320043703e804200320053703e004200341b8056a200341e0046a4110107e20032802b805210a20032802c00521110240024002400240200e0e03010200010b20034180056a200341f9066a2d00003a0000200341e0046a41186a200341f1066a290000370300200341e0046a41106a200341e9066a290000370300200341e0046a41086a200341e1066a2900003703002003200341d9066a2900003703e00420034180036a200341e0046a4121109a01200341e8016a41086a20034180036a41086a290000370300200341e8016a41106a20034180036a41106a290000370300200341e8016a41186a20034180036a41186a29000037030020032003290080033703e8010c020b200341f0016a200341e1066a290000370300200341e8016a41106a200341e9066a29000037030020034180026a200341f1066a2900003703002003200341d9066a2900003703e8010c010b200341f0016a200341e1066a290000370300200341e8016a41106a200341e9066a29000037030020034180026a200341f1066a2900003703002003200341d9066a2900003703e8010b20034180076a200a2011200341e8016a10a704210e024020032802bc05450d00200a10310b200e0d00200341e8006a411510e5050c270b20034180076a200341c8016a200341c0026a20052004410110a00320032003290081073703d803200320034180076a41086a220a2800003600df0320032d008007220e4107470d0c2003427f200c20047c201020057c220f201054220ead7c2210200e2010200c542010200c511b220e1b3703e8042003427f200f200e1b3703e0042003200d360284032003200636028003200320093602d8032003200341e0046a3602e801200320034180036a360288072003200341e8016a360284072003200341d8036a36028007200341c8016a20034180076a10cb07200341f0036a4200370300200341e8036a4200370300200341d8036a41086a22094200370300200342003703d80320034180076a4188bbc200410810a7022009200a29000037030020032003290080073703d80320034180076a4190bbc200410b10a702200141086a200a290000370000200120032900800737000020034180036a200341d8036a412010bf02024002402003280280034101470d00200b20034188036a2802006b220141d7044b0d002001200b4b0d00024020024102470d0020032802a806200b460d020b20034180026a22014200370300200341f8016a220a4200370300200341e8016a41086a22094200370300200342003703e80120034180076a41c686c500410910a702200920034180076a41086a220229000037030020032003290080073703e80120034180076a41bcf3c500410810a70220012002290000370300200a2003290080073703004104102f2201450d2120034204370284032003200136028003200320073602800720034180036a20034180076a4104107e2002200328028803360200200320032903800337038007200341e8016a412020034180076a10a8022003200b3602a806200341023602a4060c010b20034180026a220b4200370300200341f8016a22014200370300200341e8016a41086a220a4200370300200342003703e80120034180076a41c686c500410910a702200a20034180076a41086a220929000037030020032003290080073703e80120034180076a41e4f3c500410c10a702200b20092900003703002001200329008007370300200341186a200341e8016a412010c002200328021c410020032802181b210d024020024101470d0020032802a806200d460d010b200b420037030020014200370300200a4200370300200342003703e80120034180076a41c686c500410910a702200a200929000037030020032003290080073703e80120034180076a41bcf3c500410810a702200141086a200929000037000020012003290080073700004104102f2202450d2020034204370284032003200236028003200320073602800720034180036a20034180076a4104107e20034188076a200328028803360200200320032903800337038007200341e8016a412020034180076a10a8022003200d3602a806200341013602a4060b20034180036a20071089042003280288032101200328028003210220034100360288072003420137038007200341f0056a20034180076a10c90720022001200328028007220a200328028807109f020240200328028407450d00200a10310b0240200328028403450d00200210310b200341b8076a2004370300200341b0076a200537030020034180076a41086a41013a000020034189076a20032903c801370000200341ac076a200736020020034191076a200341c8016a41086a29030037000020034199076a200341d8016a290300370000200341a1076a200341e0016a2903003700002003410c3a00800720034180076a10a90202402008450d00200610310b200341073a00680c290b200341e8006a411510e5050c250b200141246a2802002108200341f8006a41186a200141196a290000370300200341f8006a41106a200141116a290000370300200341f8006a41086a200141096a2900003703002003200129000137037820034180076a41286a2201200241286a28020036020020034180076a41206a2207200241206a29020037030020034180076a41186a220a200241186a29020037030020034180076a41106a2206200241106a29020037030020034180076a41086a2209200241086a2902003703002003200229020037038007200341f0056a20034180076a109e0202400240024020032d00f0054101460d00200341c8016a200810890420034180076a20032802c801220b20032802d001108a04200341b8056a41086a2009290300370300200341b8056a41106a2006290300370300200341b8056a41186a200a290300370300200341b8056a41206a2007290300370300200341b8056a41286a2001290300370300200341b8056a41306a220120034180076a41306a28020036020020032003290380073703b80520032802b4072102200341e0046a200341b8076a41d80010bf091a024020024103460d0020034198046a41306a200128020036020020034198046a41286a2201200341b8056a41286a29030037030020034198046a41206a2207200341b8056a41206a29030037030020034198046a41186a220a200341b8056a41186a29030037030020034198046a41106a2206200341b8056a41106a29030037030020034198046a41086a2209200341b8056a41086a290300370300200320032903b8053703980420034180036a200341e0046a41d80010bf091a024020032802cc01450d00200b10310b200341d8036a410e6a2009290300370100200341d8036a41166a2006290300370100200341d8036a411e6a200a290300370100200341d8036a41266a2007290300370100200341d8036a412e6a2001290300370100200341d8036a41366a20034198046a41306a28020036010020032003290398043701de03200341c0026a41086a200341d8036a41086a2201290100370300200341c0026a41106a200341d8036a41106a2207290100370300200341c0026a41186a200341d8036a41186a220a290100370300200341c0026a41206a200341d8036a41206a290100370300200341c0026a41286a200341d8036a41286a290100370300200341c0026a41306a200341d8036a41306a290100370300200341c0026a41386a200341d8036a41386a2f01003b0100200320032901d8033703c002200341e8016a20034180036a41d80010bf091a200341f0056a41086a200341c0026a410e6a290100370300200341f0056a41106a2206200341c0026a41166a290100370300200341f0056a41186a2209200341c0026a411e6a290100370300200341f0056a41206a200341c0026a41266a290100370300200341f0056a41286a200341c0026a412e6a290100370300200341f0056a41306a220b200341c0026a41366a280100360200200320023602a406200320032901c6023703f005200341f0056a41386a200341e8016a41d80010bf091a200a42003703002007420037030020014200370300200342003703d80320034180076a41f3c6c000410610a702200120034180076a41086a220229000037030020032003290080073703d80320034180076a41ec90c900410610a702200a20022900003703002007200329008007370300200341c8006a200341d8036a412010c002200328024c210d2003280248210e200342f0f2bd99e6ac9db7e40037038007200341e0046a20034180076a2008108b04200929030021042006290300210c200b280200210620032802ac062109200a42003703002007420037030020014200370300200342003703d80320034180076a41f3c6c000410610a7022001200229000037030020032003290080073703d80320034180076a41ec90c900410610a702200a20022900003703002007200329008007370300200341c0006a200341d8036a412010c002200328024441c0f0006e2102200d4100200e1b20064f0d022002410020032802401b20094b0d02200341e8016a411110e5050c030b024020032802cc01450d00200b10310b200341d0046a410910e5050c240b200341023a00d0040c240b20034180036a200341e0046a10930320034180076a200328028003220120032802880310940320034190076a290300420020032903800742015122021b2105200329038807420020021b21100240200328028403450d00200110310b2010200c5a200520045a20052004511b0d0c200341e8016a410f10e5050b200320032900e9013703c0022003200341e8016a41086a2800003600c70220032d00e80122024107470d0c0c200b200141046a280200210920034180076a41286a2201200241286a28020036020020034180076a41206a2208200241206a29020037030020034180076a41186a2207200241186a29020037030020034180076a41106a220a200241106a29020037030020034180076a41086a2206200241086a2902003703002003200229020037038007200341f0056a20034180076a109e024102210220032d00f0054101460d1b200341f8006a200910890420034180076a2003280278220b200328028001108a04200341b8056a41086a2006290300370300200341b8056a41106a200a290300370300200341b8056a41186a2007290300370300200341b8056a41206a2008290300370300200341b8056a41286a2001290300370300200341b8056a41306a220120034180076a41306a28020036020020032003290380073703b80520032802b4072102200341e0046a200341b8076a41d80010bf091a02400240024020024103460d0020034198046a41306a200128020036020020034198046a41286a2201200341b8056a41286a29030037030020034198046a41206a2208200341b8056a41206a29030037030020034198046a41186a2207200341b8056a41186a29030037030020034198046a41106a220a200341b8056a41106a29030037030020034198046a41086a2206200341b8056a41086a290300370300200320032903b8053703980420034180036a200341e0046a41d80010bf091a0240200328027c450d00200b10310b200341d8036a410e6a2006290300370100200341d8036a41166a200a290300370100200341d8036a411e6a2007290300370100200341d8036a41266a2008290300370100200341d8036a412e6a2001290300370100200341d8036a41366a20034198046a41306a28020036010020032003290398043701de03200341c0026a41086a200341d8036a41086a2201290100370300200341c0026a41106a200341d8036a41106a2208290100370300200341c0026a41186a200341d8036a41186a2207290100370300200341c0026a41206a200341d8036a41206a290100370300200341c0026a41286a200341d8036a41286a290100370300200341c0026a41306a200341d8036a41306a290100370300200341c0026a41386a200341d8036a41386a2f01003b0100200320032901d8033703c002200341e8016a20034180036a41d80010bf091a200341f0056a41086a200341c0026a410e6a290100370300200341f0056a41106a220a200341c0026a41166a290100370300200341f0056a41186a2206200341c0026a411e6a290100370300200341f0056a41206a200341c0026a41266a290100370300200341f0056a41286a200341c0026a412e6a290100370300200341f0056a41306a220b200341c0026a41366a280100360200200320023602a406200320032901c6023703f005200341f0056a41386a200341e8016a41d80010bf091a200742003703002008420037030020014200370300200342003703d80320034180076a41f3c6c000410610a702200120034180076a41086a220229000037030020032003290080073703d80320034180076a41ec90c900410610a702200720022900003703002008200329008007370300200341d8006a200341d8036a412010c002200328025c210d2003280258210e200342f0f2bd99e6ac9db7e40037038007200341e8016a20034180076a2009108b0420062903002104200a2903002105200b280200210a20032802ac062106200742003703002008420037030020014200370300200342003703d80320034180076a41f3c6c000410610a7022001200229000037030020032003290080073703d80320034180076a41ec90c900410610a702200720022900003703002008200329008007370300200341d0006a200341d8036a412010c002200328025441c0f0006e2102200d4100200e1b200a4f0d012002410020032802501b20064b0d0120034180036a411110e5050c020b0240200328027c450d00200b10310b20034180076a410910e50520032003290081073703c801200320034188076a2800003600cf0120032d00800721020c1d0b200341e0046a200341e8016a10930320034180076a20032802e004220120032802e80410940320034190076a290300420020032903800742015122021b210c200329038807420020021b2110024020032802e404450d00200110310b201020055a200c20045a200c2004511b0d0d20034180036a410f10e5050b20032003290081033703c002200320034188036a2800003600c70220032d00800322024107460d1a200320032800c7023600cf01200320032903c0023703c8010c1b0b200141046a280200210120034180076a41286a2208200241286a28020036020020034180076a41206a2207200241206a29020037030020034180076a41186a220a200241186a29020037030020034180076a41106a2206200241106a29020037030020034180076a41086a2209200241086a2902003703002003200229020037038007200341f0056a20034180076a109e02200341e8016a41086a2202200341f9056a290000370300200341e8016a41106a220b20034181066a290000370300200341e8016a41186a220d20034189066a290000370300200320032900f1053703e8010240024020032d00f0054101460d00200341f8006a41186a200d290300370300200341f8006a41106a200b290300370300200341f8006a41086a2002290300370300200320032903e801370378200341c8016a200110890420034180076a20032802c801220b20032802d001108a04200341b8056a41086a2009290300370300200341b8056a41106a2006290300370300200341b8056a41186a200a290300370300200341b8056a41206a2007290300370300200341b8056a41286a2008290300370300200341b8056a41306a220820034180076a41306a28020036020020032003290380073703b80520032802b4072102200341e0046a200341b8076a41d80010bf091a024020024103460d0020034198046a41306a200828020036020020034198046a41286a2208200341b8056a41286a29030037030020034198046a41206a2207200341b8056a41206a29030037030020034198046a41186a220a200341b8056a41186a29030037030020034198046a41106a2206200341b8056a41106a29030037030020034198046a41086a2209200341b8056a41086a290300370300200320032903b8053703980420034180036a200341e0046a41d80010bf091a024020032802cc01450d00200b10310b200341d8036a410e6a2009290300370100200341d8036a41166a2006290300370100200341d8036a411e6a200a290300370100200341d8036a41266a2007290300370100200341d8036a412e6a2008290300370100200341d8036a41366a20034198046a41306a28020036010020032003290398043701de03200341c0026a41086a200341d8036a41086a2208290100370300200341c0026a41106a200341d8036a41106a2207290100370300200341c0026a41186a200341d8036a41186a220a290100370300200341c0026a41206a200341d8036a41206a290100370300200341c0026a41286a200341d8036a41286a290100370300200341c0026a41306a200341d8036a41306a290100370300200341c0026a41386a200341d8036a41386a2f01003b0100200320032901d8033703c002200341e8016a20034180036a41d80010bf091a200341f0056a41086a200341c0026a410e6a290100370300200341f0056a41106a200341c0026a41166a290100370300200341f0056a41186a200341c0026a411e6a290100370300200341f0056a41206a200341c0026a41266a290100370300200341f0056a41286a200341c0026a412e6a290100370300200341f0056a41306a200341c0026a41366a280100360200200320023602a406200320032901c6023703f005200341f0056a41386a200341e8016a41d80010bf091a200a42003703002007420037030020084200370300200342003703d80320034180076a41f3c6c000410610a702200820034180076a41086a220229000037030020032003290080073703d80320034180076a41ec90c900410610a702200a20022900003703002007200329008007370300200341e0006a200341d8036a412010c002200328026421022003280260210802400240200341f8006a200341b8066a2207412010c209450d002002410020081b20032802a006490d010b20032903800620034188066a29030084500d030b200341d0046a411410e5050c190b024020032802cc01450d00200b10310b200341d0046a410910e5050c180b200341023a00d0040c180b200720032903f005200341f0056a41086a29030010bc0220034180076a2001108904200328028007220220032802880710bd020240200328028407450d00200210310b20034180076a41086a41053a00002003410c3a00800720034180076a410c6a200136020020034180076a10a902200341073a00d0040c180b200141c0006a2903002104200141386a2903002105200141306a28020021072001412c6a280200210a200141286a2802002106200141246a2802002108200341f0056a41206a200141216a2f00003b0100200341f0056a41186a200141196a290000370300200341f0056a41106a200141116a290000370300200341f0056a41086a200141096a290000370300200320012900013703f00520034180076a41286a200241286a28020036020020034180076a41206a200241206a29020037030020034180076a41186a2201200241186a29020037030020034180076a41106a200241106a29020037030020034180076a41086a2209200241086a290200370300200320022902003703800720034180076a109d020d0b200341f8006a200810890420034180076a20032802782202200328028001108a04200341e0046a41086a200341d0076a290300370300200341e0046a41106a200341d8076a290300370300200341e0046a41186a200341e0076a2903003703002003200341c8076a2903003703e004024020032802b407220b4103460d002001290300210c20092903002110200341c4076a2802002101200329039007210f200329038007211220032802b807210920034180036a41186a220d200341e0046a41186a29030037030020034180036a41106a220e200341e0046a41106a29030037030020034180036a41086a2211200341e0046a41086a290300370300200320032903e004370380030240200328027c450d00200210310b200341d8036a41086a20112903002213370300200341d8036a41106a200e2903002214370300200341d8036a41186a200d2903002215370300200320032903800322163703d803200341e0076a2015370300200341d8076a2014370300200341d0076a201337030020034180076a41186a200c370300200320163703c807200341f0076a200341f0056a41086a290300370300200341f8076a200341f0056a41106a29030037030020034180086a200341f0056a41186a29030037030020034188086a20034190066a2f01003b0100200320103703880720032012370380072003200f37039007200320073602b007200320032903f0053703e807200341a8076a2004370300200341b8076a2009360200200320053703a007200320013602c4072003200a3602c007200320063602bc072003200b3602b40720034180036a200810890420032802880321012003280280032102200341003602e804200342013703e00420034180076a200341e0046a10c9072002200120032802e004220720032802e804109f02024020032802e404450d00200710310b0240200328028403450d00200210310b20034188076a41093a00002003410c3a00800720034180076a410c6a200836020020034180076a10a902200341073a00c0020c150b0240200328027c450d00200210310b200341c0026a410910e50520032d00c0024107460d1420032902c40221040c130b200141046a2802002109200141106a28020021072001410c6a2802002108200141086a280200210120034180076a41286a200241286a28020036020020034180076a41206a200241206a29020037030020034180076a41186a200241186a29020037030020034180076a41106a200241106a29020037030020034180076a41086a200241086a2902003703002003200229020037038007200341f0056a20034180076a109e02200341e8016a41086a2202200341f9056a290000370300200341e8016a41106a220a20034181066a290000370300200341e8016a41186a220620034189066a290000370300200320032900f1053703e8010240024020032d00f0054101460d00200341e0046a41186a2006290300370300200341e0046a41106a200a290300370300200341e0046a41086a2002290300370300200320032903e8013703e0040240200741204d0d0020034180036a411610e5050c130b200341f0056a200910890420034180076a20032802f005220620032802f805108a04200341c4076a280200210a20032802b4072102024020032802f405450d00200610310b20024103460d0d20034180076a200341e0046a200a10ca07200320034188076a29030022043703f805200320032903800722053703f005024020034194076a280200450d0020032802900710310b200520048450450d0120034180036a411210e5050c120b200341023a0080030c110b200320073602ec01200320013602e8012003200a3602c0022003200341f0056a3602d8032003200341e8016a360288072003200341d8036a360284072003200341c0026a36028007200341e0046a20034180076a10cb0720034180076a41086a410a3a000020034189076a20032903e00437000020034191076a200341e0046a41086a29030037000020034199076a200341f0046a290300370000200341a1076a200341f8046a290300370000200341b8076a2007360200200341b4076a2008360200200341b0076a2001360200200341ac076a20093602002003410c3a00800720034180076a10a902200341073a0080030c110b200141046a280200210720034180076a41286a200241286a28020036020020034180076a41206a200241206a29020037030020034180076a41186a2201200241186a29020037030020034180076a41106a200241106a29020037030020034180076a41086a200241086a2902003703002003200229020037038007200341f0056a20034180076a109e0220032d00f0054101460d0b200341f0056a200710890420034180076a20032802f005220820032802f805108a0420012903002104200329039007210520032802b4072102024020032802f405450d00200810310b0240024020024103460d000240200520048450450d00200341e0046a411210e5050c020b20034180026a22024200370300200341f8016a220a4200370300200341e8016a41086a22014200370300200342003703e80120034180076a41c686c500410910a702200120034180076a41086a220829000037030020032003290080073703e80120034180076a41bcf3c500410810a70220022008290000370300200a20032900800737030020034180076a200341e8016a412010e202200329028407420020032802800722011b2204422088a741027421022001410420011b2206210102400340024020020d00410021020c020b2002417c6a210220012802002108200141046a210120072008470d000b410121020b0240200442ffffffff0383500d00200610310b02402002450d00200341e0046a411710e5050c020b20034180026a4200370300200341f8016a4200370300200341e8016a41086a22014200370300200342003703e80120034180076a41c686c500410910a702200120034180076a41086a220229000037030020032003290080073703e80120034180076a41bcf3c500410810a702200a41086a2002290000370000200a2003290080073700004104102f2201450d1a200342043702f405200320013602f0052003200736028007200341f0056a20034180076a4104107e200220032802f805360200200320032903f00537038007200341e8016a412020034180076a10a8022002410b3a00002003410c3a00800720034180076a410c6a200736020020034180076a10a902200341073a00e0040c0f0b200341e0046a410910e5050b20032d00e0044107460d0d20032902e40421040c0c0b200341023a00b8050c230b200341b8056a410210e5050c210b200341b8056a410910e5050c200b200341b8056a410710e5050c1f0b200341023a00680c1c0b200341e8006a41086a20032800df033600002003200e3a0068200320032903d8033700690c190b200320032900e9013703c0022003200341f0016a2800003600c7020c140b200341d0046a41086a20032800c702360000200320023a00d004200320032903c0023700d1040c140b20032003290081033703c002200320034188036a2800003600c7020c0d0b200341023a00c0020c070b20034180036a410910e5050c040b200341023a00e0040b20032802e004210220002004370024200041206a2002360000200041186a41003a000020004200370308420121040c010b42002104200042003703082000200328008007360019200041186a41003a00002000411c6a20034183076a2800003600000b200020043703000c170b02402008450d00200110310b20032d0080034107460d0020032802800321022000200329028403370024200041206a2002360000200041186a41003a000020004200370308200042013703000c160b2000420037030820002003280078360019200041186a41003a00002000411c6a200341fb006a280000360000200042003703000c150b20032802c002210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c140b20004200370308200020032800b805360019200041186a41003a00002000411c6a200341bb056a280000360000200042003703000c130b20032d00d0044107460d0120032902d40421040b20032802d004210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c110b2000420037030820002003280068360019200041186a41003a00002000411c6a200341eb006a280000360000200042003703000c100b20034180076a20032802b406220e10cc072003280288072202417f4c0d0220032802800721010240024020020d00410121080c010b2002102f2208450d020b20082001200210bf0921080240200328028407450d00200110310b20034180056a4100360200200341f4046a2002360200200341e0046a41106a200236020020034180023b0188052003410d36028405200342013703f804200320083602ec04200341003602e804200342013703e00420034180076a200341e0046a10ce07024002400240200341b0076a280200220b450d00200341f8006a410172210841f5032101200341a8076a210d034020034180036a41186a20034180076a41186a2202290300220f37030020034180036a41106a20034180076a41106a2207290300221237030020034180036a41086a20034180076a41086a220a29030022133703002003200329038007221437038003200d290300211020032903a007210c20032802b40721062002200f37030020072012370300200a201337030020032014370380072001417f6a2201450d03200341f8006a200341e8016a20034180076a200c2010410110a003200320082900003703d8032003200841076a2800003600df0320032d007822024107470d0220034180076a200e10cf072005200c7d220f200556200420107d2005200c54ad7d220520045620052004511b210202402006450d00200b10310b4200200520021b21044200200f20021b210520034180076a200341e0046a10ce0720032802b007220b0d000b20034188066a200437030020032005370380060b410121080c050b20034188066a20043703002003200537038006200320032903d8033703c801200320032800df033600cf0102402006450d00200b10310b024020032802e404450d0020032802e00410310b024020032802f004450d0020032802ec0410310b20032802fc04450d0120032802f80410310c010b20034188066a20043703002003200537038006410021082006450d03200b10310c030b200320032800683602c001200320032903c8013703d004200320032800cf013600d7042003200341eb006a2800003600c301200041186a41003a0000200041106a420037030020004200370308200020032802c0013600192000411c6a20032800c301360000200041206a20023a0000200020032903d004370021200041286a20032800d704360000200042013703000c0e0b1039000b103b000b024020032802e404450d0020032802e00410310b024020032802f004450d0020032802ec0410310b024020032802fc04450d0020032802f80410310b200341e0046a200910890420032802e804210120032802e004210220034100360288072003420137038007200341f0056a20034180076a10c907200220012003280280072207200328028807109f020240200328028407450d00200710310b024020032802e404450d00200210310b024002402008450d0020034188076a41043a00002003410c3a00800720034180076a410c6a200936020020034180076a10a902420121040c010b20034188076a41033a00002003410c3a00800720034180076a410c6a200936020020034180076a10a902420021040b200320032800683602c0012003200341eb006a2800003600c301200041186a41003a0000200041106a420037030020002004370308200020032802c0013600192000411c6a20032800c301360000200042003703000c0b0b20034180076a200341f8006a20032802b406220210ca0720034188076a29030021102003290380072105024020034194076a280200450d0020032802900710310b0240200520108450450d00200341d0046a411210e5050c010b20034180076a200341e0046a200341f8006a20052010410110a00320032003290081073703d803200320034180076a41086a2800003600df03024020032d00800722014107470d00200341f8006a200210cf0720034188066a4200200420107d200c200554ad7d220f200c20057d2212200c56200f200456200f2004511b22021b37030020034200201220021b3703800620034180036a20081089042003280288032101200328028003210220034100360288072003420137038007200341f0056a20034180076a10c907200220012003280280072207200328028807109f020240200328028407450d00200710310b0240200328028403450d00200210310b200341b8076a2010370300200341b0076a200537030020034180076a41086a41023a000020034189076a2003290378370000200341ac076a200836020020034191076a200341f8006a41086a29030037000020034199076a20034188016a290300370000200341a1076a20034190016a2903003700002003410c3a00800720034180076a10a902200341073a00d0040c030b200341d0046a41086a20032800df03360000200320013a00d004200320032903d8033700d1040b20032d00d0044107460d0120032902d40421040b20032802d004210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c080b2000420037030820002003280068360019200041186a41003a00002000411c6a200341eb006a280000360000200042003703000c070b2008450d00200610310b20032d00684107460d01200329026c21040b2003280268210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c040b20004200370308200020032800c001360019200041186a41003a00002000411c6a200341c3016a280000360000200042003703000c030b20032d00b8054107460d0120032902bc0521040b20032802b805210220002004370024200041206a2002360000200041186a41003a000020004200370308200042013703000c010b20004200370308200020032800d004360019200041186a41003a00002000411c6a200341d3046a280000360000200042003703000b200341d00e6a24000b8f0201027f230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041003602000c010b200328020c2102024002400240200341106a28020022044104490d002004417c714104470d010b4100210420034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d904200328021c450d01200328021810310c010b20002001290000370204410121040b200020043602002002450d00200110310b200341d0006a24000b840201037f230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822040d00410021010c010b200328020c210502400240200341106a2802004104490d0020042800002102410121010c010b4100210120034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d9040240200328021c450d00200328021810310b0b2005450d00200410310b2000200236020420002001360200200341d0006a24000baa0301047f230041c0006b2202240041b4a2c2002103410c2104410d2105024002400240024002400240024002400240024002400240024002400240200141ff01710e0f000102030405060708090a0b0c0d0e000b2002411c6a41013602002002420137020c200241d897ca0036020820024104360224200241d8e3c8003602202002200241206a360218200241086a41c4bcc2001047000b41b0a0c200210341112104410021050c0c0b41cca0c200210341112104410121050c0b0b41e8a0c2002103410d2104410221050c0a0b4180a1c200210341112104410321050c090b419ca1c200210341112104410421050c080b4184f2c4002103410d2104410521050c070b41b080c500210341112104410621050c060b41c8a1c2002103410b2104410721050c050b41dca1c2002103410f2104410821050c040b41f4a1c200210341112104410921050c030b4190a2c2002103410a2105410a21040c020b41dc80c5002103410b21050c010b41f080c500210341102104410c21050b20004183343b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b981b04067f017e047f087e230022082109200841a0db006b41607122082400200841a0c9006a200210ae0220082802a049220a20082802a84910af0241ff0171210b024020082802a449450d00200a10310b02400240200b4107460d00200b41054b0d004101200b74412a710d010b200841a0c9006a200210ae0220082802a049220a20082802a84910af0241ff0171210b024020082802a449450d00200a10310b0240200b4107460d00200b41064b0d004101200b7441d400710d010b2000410410c102200924000f0b200841b8c9006a220c4200370300200841b0c9006a220b4200370300200841a0c9006a41086a220a4200370300200842003703a049200841f0006a4188bbc200410810a702200a200841f0006a41086a220d290000370300200820082900703703a049200841f0006a41f4ccc200410e10a702200c200d290000370300200b2008290070370300200841e8006a200841a0c9006a412010c0020240200828026c410020082802681b2003460d002000410a10c102200924000f0b200c4200370300200b4200370300200a4200370300200842003703a049200841f0006a4188bbc200410810a702200a200d290000370300200820082900703703a049200841f0006a4190bbc200410b10a702200b41086a200d290000370000200b2008290070370000200841a8376a200841a0c9006a412010bf020240024002400240024020082802a8374101470d0020082902ac37210e200841b8c9006a220d4200370300200841b0c9006a220b4200370300200841a0c9006a41086a220a4200370300200842003703a049200841f0006a41f3c6c000410610a702200a200841f0006a41086a2203290000370300200820082900703703a049200841f0006a41ec90c900410610a702200d2003290000370300200b2008290070370300200841e0006a200841a0c9006a412010c00202402008280260450d002008280264417f200e422088a7220d41d8046a22032003200d491b490d002000410e10c102200924000f0b200841a0c9006a200ea720042005108e0402400240024020082d00a0494101460d0020082d00a1492103200841b8c9006a220c4200370300200841b0c9006a220f4200370300200841a0c9006a41086a220a4200370300200842003703a049200841f0006a41f3c6c000410610a702200a200841f0006a41086a220d290000370300200820082900703703a049200841f0006a41ec90c900410610a702200b41086a2210200d290000370000200b2008290070370000200841d8006a200841a0c9006a412010c002200828025c211120082802582112200c4200370300200f4200370300200a4200370300200842003703a049200841f0006a4188bbc200410810a702200a200d290000370300200820082900703703a049200841f0006a4190bbc200410b10a7022010200d290000370000200b2008290070370000200841a8376a200841a0c9006a412010bf020240024020082802a8374101460d004100210d0c010b41002011410020121b220a200841a8376a41086a2802006b220b200b200a4b1b4100200b41d804491b210d0b200841f0126a200d108c04200841a0c9006a20082802f012220b20082802f812108d0420082903a049210e200841a8376a200841a8c9006a41f81110bf091a02400240200e4202510d00200841e8246a200841a8376a41f81110bf091a024020082802f412450d00200b10310b200841f0126a200841e8246a41f81110bf091a0c010b024020082802f412450d00200b10310b4202210e200d417f6a220b200d4b0d00200841e8246a200b108c04200841a0c9006a20082802e824220b20082802f024108d0420082903a049210e200841a8376a200841a8c9006a41f81110bf091a0240200e4202510d00200841f0126a200841a8376a41f81110bf091a0b20082802ec24450d00200b10310b200841a0c9006a410041801210c1091a200e4202520d01200841f0006a200841a0c9006a41801210bf091a0c020b200a280200210b20082802a4492108200041003a0000200041086a200b360200200041046a2008360200200924000f0b2008200e370370200841f8006a200841f0126a41f81110bf091a0b200841f0006a20034106746a220b2903004201520d01200b41306a290300200654200b41386a290300220e200754200e2007511b0d010c020b2000410b10c102200924000f0b200841c8006a2002200110d303200841c8006a41086a29030021132008290348210e200841e8246a41186a200141186a290000370300200841e8246a41106a200141106a290000370300200841e8246a41086a200141086a2900003703002008200236028825200820012900003703e824200841a0c9006a200841e8246a108405200841306a20082802a049220c20082802a84910c5044200200720137d2006200e54ad7d22132006200e7d2214200656201320075620132007511b220a1b210e42002014200a1b2113200841306a41106a2903002114200829033821152008280230210a024020082802a449450d00200c10310b0240201320154200200a1b22157d2216201356200e20144200200a1b7d2013201554ad7d2214200e562014200e511b0d00200841a0c9006a20012016201410a803200820082900a1493703a8372008200841a0c9006a41086a2800003600af3720082d00a049220a4107470d02200841a8376a200841e8246a10840520082802b037210c20082802a837210a2008200e3703a849200820133703a049200a200c200841a0c9006a4110109f02024020082802ac37450d00200a10310b200841e8c9006a200e370300200841e0c9006a2013370300200841d8c9006a2014370300200841d0c9006a2016370300200841a0c9006a41086a41043a0000200841a9c9006a2001290000370000200841b1c9006a200141086a290000370000200841b9c9006a200141106a290000370000200841c1c9006a200141186a2900003700002008410b3a00a049200841a0c9006a10a9020b200841a0c9006a41186a200141186a290000370300200841a0c9006a41106a200141106a220a290000370300200841a0c9006a41086a200141086a290000220e37030020082002360288372008200129000022133703a0492008201337028c372008200e370294372008200a28000036029c37200820082902b4493703e0362008200841a0c9006a411c6a2802003602e836200820073703f836200820063703f0362008420137038037200b41186a220a2903002114200a200829039837370300200b2903102115200b200829039037370310200b2903082113200b200829038837370308200b290300210e200b4201370300200820143703983720082015370390372008200e370380372008201337038837200841f0006a20034106746a220b41206a220a2903002114200b41286a22032903002115200b41306a220c2903002116200b41386a220b290300211720082903e036211820082903e836211920082903f036211a200b20082903f836370300200c201a37030020032019370300200a2018370300200820173703f836200820163703f036200820153703e836200820143703e0360240200e4201520d00200841f0126a411c6a20082802e836360200200841f0126a41106a20084180376a410c72220b41106a280000360200200841f0126a41086a200b41086a290000370300200820082903e036370284132008200b2900003703f0122013a721034100210b03400240200841f0006a200b6a220a2903004201520d00200a410c6a200841f0126a412010c2090d00200a41086a2802002003460d020b200b41c0006a220b418012470d000b200841a8376a41186a200841f0126a41186a290300370300200841a8376a41106a200841f0126a41106a290300370300200841a8376a41086a200841f0126a41086a290300370300200820082903f0123703a837200820033602c837200841a0c9006a200841a8376a108405200841186a20082802a049220b20082802a849220a10c504200841186a41106a290300210e200829032021130240200829031822144201520d00200b200a10bd020b2014a7210a024020082802a449450d00200b10310b200a4101470d00200841f0126a2013200e10bc02200841d8c9006a200e370300200841d0c9006a2013370300200841a0c9006a41086a41053a0000200841a9c9006a20082903f012370000200841b1c9006a200841f0126a41086a290300370000200841b9c9006a20084180136a290300370000200841c1c9006a20084188136a2903003700002008410b3a00a049200841a0c9006a10a9020b200841a8376a200d108c0420082802b037210a20082802a837210b418012102f220d450d0220084280123702a4492008200d3602a049200841f0006a200841a0c9006a10c801200b200a20082802a049220d20082802a849109f02024020082802a449450d00200d10310b024020082802ac37450d00200b10310b200841e0c9006a2007370300200841d8c9006a2006370300200841a0c9006a41086a41073a0000200841d4c9006a2005360200200841d0c9006a2004360200200841ccc9006a2002360200200841a9c9006a2001290000370000200841b1c9006a200141086a290000370000200841b9c9006a200141106a290000370000200841c1c9006a200141186a2900003700002008410b3a00a049200841a0c9006a10a9020b200041073a0000200924000f0b2000200a3a0000200020082903a837370001200041086a20082800af37360000200924000f0b1039000bb00c020d7f027e230041c0016b220524000240024020024108490d00200141086a2106200241786a21070c010b41002107024041002802809a4a0d0041f8fac90021060c010b4100210741002802fc994a210241002802f8994a210141002802849a4a2108200541f8006a41e900360200200541f0006a42dd80808010370300200541ec006a41a7a1c000360200200541e4006a4213370200200541e0006a4194a1c000360200200541d8006a420037030041f8fac9002106200541d4006a41f8fac900360200200541c8006a4201370300200541c0006a41133602002005418ca1c00036024420054194a1c00036023c20054101360238200141f8fac900200841024622081b200541386a20024180a6c00020081b2802101103000b4100210220054100360238200541386a410472210802400240034020072002460d01200820026a200620026a2d00003a00002005200241016a22013602382001210220014120470d000b200541b8016a41026a2202200541c5006a2d00003a0000200541b4016a41026a2209200541cc006a2d00003a0000200520052f013c3b01bc01200520052d003e3a00be012005200541c3006a2f00003b01b8012005200541ca006a2f01003b01b401200541c6006a2801002108200528003f210a200541cd006a280000210b2005200541d1006a2800003602ac012005200541d4006a2800003600af01200541d8006a280200210c200520052d00be013a009e01200520052f01bc013b019c01200541a8016a41026a220d20022d00003a0000200520052f01b8013b01a801200541a4016a41026a220e20092d00003a0000200520052f01b4013b01a401200541a0016a41026a220f20052d00ae013a0000200520052f01ac013b01a00120052800af01210920054198016a41026a2210200d2d00003a0000200520052f01a8013b01980120054194016a41026a220d200e2d00003a0000200520052f01a4013b01940120054190016a41026a220e200f2d00003a0000200520052f01a0013b0190012005418c016a41026a220f20052d009e013a0000200520052f019c013b018c0120054188016a41026a221120102d00003a0000200520052f0198013b01880120054184016a41026a2210200d2d00003a0000200520052f0194013b01840120054180016a41026a220d200e2d00003a0000200520052f0190013b018001200720016b4104490d00200541ac016a41026a20112d00003a0000200541bc016a41026a20102d00003a00002002200d2d00003a0000200520052f018c013b0138200520052f0188013b01ac01200520052f0184013b01bc01200520052f0180013b01b8012005200f2d00003a003a200620016a280000210d410021020c010b410121020b200541306a41026a2201200541ac016a41026a2d00003a00002005412c6a41026a2207200541bc016a41026a2d00003a0000200541286a41026a2206200541b8016a41026a2d00003a0000200520052d003a3a0036200520052f01383b0134200520052f01ac013b0130200520052f01bc013b012c200520052f01b8013b01280240024020020d00200541206a41026a20012d00003a00002005411c6a41026a20072d00003a0000200541186a41026a20062d00003a0000200520052d00363a0026200520052f01343b0124200520052f01303b0120200520052f012c3b011c200520052f01283b0118024020044110490d002005410c6a41026a2202200541206a41026a2d00003a0000200541086a41026a22012005411c6a41026a2d00003a0000200541046a41026a2207200541186a41026a2d00003a0000200520052f01243b0110200520052d00263a0012200520052f01203b010c200520052f011c3b0108200520052f01183b0104200341086a2900002112200329000021132000410a6a20052d00123a0000200020052f01103b01082000410b6a200a360000200020052f010c3b000f200041116a20022d00003a000020002008360112200020052f01083b0016200041186a20012d00003a00002000200b360019200020052f01043b001d2000411f6a20072d00003a0000200041386a2012370300200041306a2013370300200041286a200d3602002000200c360224200041206a2009360200200042003703000c020b200042013703000c010b200042013703000b200541c0016a24000ba20804067f017e037f067e230041e0016b2202240020024190016a200128020c200141146a28020010ad08024002402002280290012203450d002001410c6a2104200141086a2105200141106a2106034002400240200528020022072002290294012208422088a722094b0d0020012802002003200710c209450d010b2008a7450d02200310310c020b02402006280200450d00200428020010310b2001200336020c20062008370200200241c0006a2003200910d202024002400240024020022802402203450d00200228024821092002280244210a024020012d001c450d00200128020c200128021410bd020b2001280214220b20052802002207490d03200241c0006a200128020c20076a200b20076b20032009200128021811040020022903404201510d01200241086a41306a200241c0006a41386a2903002208370300200241086a41286a200241c0006a41306a290300220c370300200241086a41206a200241c0006a41286a290300220d370300200241086a41186a200241c0006a41206a290300220e370300200241086a41106a200241c0006a41186a290300220f370300200241106a200241c0006a41106a2903002210370300200220022903482211370308200041386a2008370300200041306a200c370300200041286a200d370300200041206a200e370300200041186a200f370300200041106a20103703002000201137030820004201370300200a450d06200310310c060b41002802809a4a450d012002410e36020c2002200436020841002802fc994a210341002802f8994a210741002802849a4a2109200241a4043602d001200242e4808080103703c801200241eabdc7003602c401200242163702bc01200241d4bdc7003602b801200242013703b001200242013703a001200241acbdc70036029c012002411636029801200241d4bdc70036029401200241013602900120034180a6c000200941024622091b28021021032002200241086a3602ac01200741f8fac90020091b20024190016a20031103000c010b024041002802809a4a450d002002410f36028c012002410e3602840120022004360280012002200241d8016a3602880141002802fc994a210741002802f8994a210941002802849a4a210b200241b2043602d001200242e4808080103703c801200241eabdc7003602c401200242163702bc01200241d4bdc7003602b801200242023703b001200242023703a001200241c4bdc70036029c012002411636029801200241d4bdc70036029401200241013602900120074180a6c000200b410246220b1b2802102107200220024180016a3602ac01200941f8fac900200b1b20024190016a20071103000b200a450d00200310310b20024190016a200128020c200128021410ad0820022802900122030d010c020b0b2007200b41b4bdc7001061000b200042003703000b200241e0016a24000b0e002001ad4220862000ad8410240ba50903057f027e037f230041b0086b22082400200841c0006a200510cc02200828024022092008280248108f03210a02402008280244450d00200910310b0240024002400240200a450d002000410210ba020c010b200841c0006a200510ae0220082802402209200828024810af0241ff0171210a02402008280244450d00200910310b200a4107460d012000410210ba020b0240200741046a280200450d00200728020010310b200641046a280200450d01200628020010310c010b2007280204210a2007280200210b200628020421092006280200210c024002400240024020072802082207418180c001490d00200841c0006a410410ba020c010b200628020822064181a001490d01200841c0006a410510ba020b0240200a450d00200b10310b4101210702402009450d00200c10310b0c010b2008200636024c200841186a2006ad42004280e1eb17420010be0920082007360258200841086a2007ad42004280e1eb17420010be092008200a3602542008200b360250200820093602482008200c360244200841186a41086a290300200841086a41086a2903007c2008290318220d20082903087c220e200d54ad7c200e4280a0e5b9c291017c220d200e54ad7c210e410021070b200820082800a008360290082008200841a3086a28000036009308200828024821062008280244210a024020070d002008280258210c200828025421092008280250210b200828024c210f2008412e6a20082d0092083a0000200820082f0190083b012c200841c0006a20012003200d2002a722071b22022004200e20071b220310a803200820082900413703a0082008200841c0006a41086a2800003600a708024020082d004022074107470d00200841c0006a41186a200141086a290000370300200841c0006a41206a200141106a290000370300200841e8006a200141186a2900003703002008200337034820082002370340200841003a007020082001290000370350200841306a200510cc0220082802382110200828023021072008410036029808200842013703900820084190086a200841c0006a41106a4120107e200820033703a808200820023703a00820084190086a200841a0086a4110107e200841003a00a00820084190086a200841a0086a4101107e200720102008280290082211200828029808109f020240200828029408450d00201110310b02402008280234450d00200710310b200841d4006a200c360200200841c0006a41106a2009360200200841db006a2008412e6a2d00003a0000200841003a00582008200b36024c2008200f360248200820063602442008200a360240200820082f012c3b00592005200841c0006a10ac021a200841e8006a2005360200200841cd006a200141086a290000370000200841d5006a200141106a290000370000200841dd006a200141186a290000370000200841003a00442008410a3a004020082001290000370045200841c0006a10a902200041073a00000c020b200020073a0000200020082903a008370001200041086a20082800a70836000002402006450d00200a10310b2009450d01200b10310c010b20002008280240360200200041086a2006360200200041046a200a3602000b200841b0086a24000ba21a020b7f037e230041c0036b220324000240024002400240024020012d00000e03000102000b4102210402400240024020012d00010e03000102000b410021040c010b200341c0026a41086a200141186a290000370300200341c0026a41106a200141206a2f00003b01002003200141106a2900003703c0022001410c6a2800002105200141086a2800002106200141046a2800002107200141026a2f00002108410121040b200341d8016a41106a200341c0026a41106a2f01003b0100200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d801200741087621094100210a0c030b200141046a280200220741087621094101210a0c010b4102210a41022107024002400240200141046a2d00000e03000102000b2001410c6a2802002105200141086a2802002106410021070c010b200341c0026a41086a200141186a290000370300200341cd026a2001411d6a2900003700002003200141106a2900003703c002200141056a2f0000200141076a2d00004110747221092001410c6a2800002105200141086a2800002106410121070b200341d8016a41106a200341c0026a41106a290300370300200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d8010b0b0240024002402001280228220b28020041016a220c41014d0d00200341c0026a410c6a2005360200200341c0026a41086a22052006360200200b200c360200200341c0026a41106a220620032903d801370300200341c0026a41186a220c200341d8016a41086a290300370300200341c0026a41206a220d200341d8016a41106a290300370300200320083b01c202200320043a00c1022003200a3a00c0022003200b3602e80220032009410874200741ff0171723602c402200341e0006a200341c0026a109e020240024020032d00604101470d00200341086a41086a20032800373600004102210b200341023a0008200320032903303700090c010b2003413c6a41026a20032d0063220b3a0000200341186a41086a2207200341e0006a41186a290300370300200341186a41106a2204200341e0006a41206a2d00003a0000200320032f006122083b013c200320032900653703302003200341e0006a410c6a2800003600372003200341e0006a41106a29030037031820032d006421092003200b3a0042200320083b0140200320093a0043200341cb006a200328003736000020032003290330370244200341d7006a2007290300370000200341df006a20042d00003a00002003200329031837004f200341f8026a200210cc02200341c0026a20032802f802220720032802800310c90220034190036a41086a200529030037030020034190036a41106a200629030037030020034190036a41186a200c29030037030020034190036a41206a200d29030037030020034190036a41286a2205200341c0026a41286a290300370300200320032903c00237039003200320032800f102360288032003200341f4026a28000036008b03024002400240024020032d00f002220b4102460d0020034190026a41286a200529030037030020034190026a41206a220520034190036a41206a29030037030020034190026a41186a220620034190036a41186a29030037030020034190026a41106a220420034190036a41106a29030037030020034190026a41086a220820034190036a41086a2903003703002003200329039003370390022003200328028803360298012003200328008b0336009b01024020032802fc02450d00200710310b200341d8016a410e6a2008290300370100200341d8016a41166a2004290300370100200341d8016a411e6a2006290300370100200341d8016a41266a2005290300370100200341d8016a412e6a20034190026a41286a290300220e370100200341a0016a412e6a2207200e37010020032003290390023701de01200341a0016a41086a200341d8016a41086a290100370300200341a0016a41106a200341d8016a41106a290100370300200341a0016a41186a200341d8016a41186a290100370300200341a0016a41206a200341d8016a41206a290100370300200341a0016a41286a200341d8016a41286a290100370300200320032901d8013703a001200341e0006a41286a2007290100370300200341e0006a41206a200341a0016a41266a290100370300200341e0006a41186a200341a0016a411e6a290100370300200341e0006a41106a200341a0016a41166a290100370300200341e0006a41086a200341a0016a410e6a290100370300200320032901a6013703602003200b3a00900120034194016a200328009b01360000200320032802980136009101200b450d01200341086a410b10ba020c020b024020032802fc02450d00200710310b200341086a410110ba020c010b200341f0006a200341c0006a412010c209450d01200341086a410310ba020b20032d0008210b0c010b4107210b200341073a00080b0240024002400240200b41ff01714107460d000240024002400240024020012d00000e03000102000b4102210402400240024020012d00010e03000102000b410021040c010b200341c0026a41086a200141186a290000370300200341c0026a41106a200141206a2f00003b01002003200141106a2900003703c0022001410c6a2800002105200141086a2800002106200141046a2800002107200141026a2f00002108410121040b200341d8016a41106a200341c0026a41106a2f01003b0100200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d801200741087621094100210a0c030b200141046a280200220741087621094101210a0c010b4102210a41022107024002400240200141046a2d00000e03000102000b2001410c6a2802002105200141086a2802002106410021070c010b200341c0026a41086a200141186a290000370300200341cd026a2001411d6a2900003700002003200141106a2900003703c002200141056a2f0000200141076a2d00004110747221092001410c6a2800002105200141086a2800002106410121070b200341d8016a41106a200341c0026a41106a290300370300200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d8010b0b2001280228220b28020041016a220c41014d0d04200b200c360200200341e0006a41086a200341d8016a41086a290300220e370300200341e0006a41106a200341d8016a41106a290300220f370300200341cc026a2005360200200341c0026a41086a2006360200200341c0026a41106a20032903d8012210370300200341d8026a200e370300200341e0026a200f37030020032010370360200320083b01c202200320043a00c1022003200a3a00c00220032009410874200741ff0171723602c4022003200b3602e8022003200341c0026a10ce0220032802000d0220032802042002470d010b200341073a00600c040b200341e0006a410310ba0220032d00604107460d030c010b200341023a00600b0240024002400240024020012d00000e03000102000b4102210402400240024020012d00010e03000102000b410021040c010b200341c0026a41086a200141186a290000370300200341c0026a41106a200141206a2f00003b01002003200141106a2900003703c0022001410c6a2800002105200141086a2800002106200141046a2800002107200141026a2f00002108410121040b200341d8016a41106a200341c0026a41106a2f01003b0100200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d801200741087621094100210c0c030b200141046a280200220741087621094101210c0c010b4102210c41022107024002400240200141046a2d00000e03000102000b2001410c6a2802002105200141086a2802002106410021070c010b200341c0026a41086a200141186a290000370300200341cd026a2001411d6a2900003700002003200141106a2900003703c002200141056a2f0000200141076a2d00004110747221092001410c6a2800002105200141086a2800002106410121070b200341d8016a41106a200341c0026a41106a290300370300200341d8016a41086a200341c0026a41086a290300370300200320032903c0023703d8010b0b2001280228220b28020041016a220a41014d0d00200341cc026a2005360200200341c0026a41086a2006360200200b200a360200200341c0026a41106a20032903d801370300200341d8026a200341d8016a41086a290300370300200341e0026a200341d8016a41106a290300370300200320083b01c202200320043a00c1022003200c3a00c0022003200b3602e80220032009410874200741ff0171723602c4020240200341c0026a109d02450d00200041023a00000c030b200041073a00000c020b00000b200041073a00000b2001280228220b200b280200417f6a36020002402001280228220b2802000d00200b280208200b28020c2802001102000240200b28020c280204450d00200b28020810310b200128022841046a220b200b280200417f6a3602002001280228220141046a2802000d00200110310b200341c0036a24000b1d01017e2001ad4220862000ad841013220029000021022000103120020b860502057f067e23004190016b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041023a00300c010b200328020c21042003200341086a41086a28020036023c20032001360238200341e8006a200341386a10b501024002400240024020032d00684101460d00200341e0006a20034181016a290000370300200341c8006a41106a200341f9006a290000370300200341c8006a41086a200341f1006a29000037030020032003290069370348200328023c22024110490d002003200241706a220536023c20032003280238220641106a22073602382005450d00200641086a29000021082006290000210920032002416f6a36023c2003200741016a3602384100210220072d00000e020201000b20034100360250200342013703482003410c36021c200320033602182003200341c8006a360240200341fc006a41013602002003420137026c2003419086c4003602682003200341186a360278200341c0006a41d8ddc900200341e8006a10401a2003280248200328025010d9040240200328024c450d00200328024810310b410221020c020b410121020b200341186a41186a200341c8006a41186a290300220a370300200341186a41106a200341c8006a41106a290300220b370300200341186a41086a200341c8006a41086a290300220c37030020032003290348220d370318200320032800403602682003200341c3006a28000036006b20002008370308200020093703002000200d370310200041186a200c370300200041206a200b370300200041286a200a370300200041346a200328006b360000200020032802683600310b200020023a00302004450d00200110310b20034190016a24000b860201037f230041d0006b22022400200241086a41e28bc500410910a702200241186a4188d2c500410b10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bdf0d140c7f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f047e017f157e230022022103200241e0026b416071220224002002200010890420024188016a2002280200220420022802082205108a04200241e0006a41086a2206200241b0016a2207290300370300200241e0006a41106a2208200241b8016a2209280200360200200241a8026a41086a220a20024190026a220b290300370300200220022903a801370360200220024188026a220c2903003703a80220024180026a220d290300210e200241f8016a220f2903002110200241f0016a22112903002112200241e8016a22132903002114200241e0016a22152903002116200241d8016a22172903002118200241d0016a2219290300211a200241c8016a221b290300211c200241a0016a221d290300211e200229039801211f20022903900121202002290388012121024020022802bc0122224103460d0020022903c0012123200241106a41086a200a2903003703002002200229036037032020022023370338200220022903a80237031020022008280200360230200220062903003703280b20022022360234200241c0006a200110890420024188016a2002280240222220022802482206108a04200a2007290300370300200241a8026a41106a200928020036020020024198026a41086a200b290300370300200220022903a8013703a8022002200c29030037039802200d2903002124200f2903002125201129030021262013290300212720152903002128201729030021292019290300212a201b290300212b201d290300212c200229039801212d200229039001212e200229038801212f024020022802bc0122074103460d0020022903c0012123200241d0006a41086a20024198026a41086a290300370300200220022903a8023703602002202337037820022002290398023703502002200241b8026a2802003602702002200241a8026a41086a2903003703680b200241106a41086a220929030021232009200241d0006a41086a220a290300370300200a202337030020022007360274200229033821302002200229037822313703382002290328213220022002290368223337032820022903202134200220022903602235370320200220303703782002203237036820022034370360200229033021232002200229037022363703302002202337037020022903102137200220022903503703102002203737035020024180026a200e370300200241f8016a2010370300200241f0016a2012370300200241e8016a2014370300200241e0016a2016370300200241d8016a2018370300200241d0016a201a370300200241c0016a2030370300200241b8016a2023370300200241b0016a2032370300200241a0016a201e3703002002201c3703c801200220343703a8012002201f370398012002202037039001200220213703880120024188026a200229035037030020024190026a200a290300370300024002402023422088a74103470d002022200610bd020c010b200241003602b002200242013703a80220024188016a200241a8026a10c9072022200620022802a802220a20022802b002109f0220022802ac02450d00200a10310b02402002280244450d00202210310b200241f0016a2026370300200241e8016a2027370300200241d0016a202a370300200241b0016a203337030020024188026a2002290310370300200241f8016a2025370300200241d8016a2029370300200241b8016a203637030020024190026a200241186a29030037030020024180026a2024370300200241e0016a2028370300200241c0016a2031370300200241a0016a202c3703002002202b3703c801200220353703a8012002202e370390012002202f370388012002202d37039801024002402036422088a74103470d002004200510bd020c010b200241003602682002420137036020024188016a200241e0006a10c907200420052002280260220a2002280268109f022002280264450d00200a10310b02402002280204450d00200410310b200241206a200010b70220024188016a2002280220220a2002280228222210b802200229028c0121232002280288012100200241e0006a200110b70220024188016a200228026022042002280268220710b802200229028c012130200228028801210120022000410820001b22093602880120022023420020001b222337028c012004200720024188016a10d40302402023a72200450d00200041386c450d00200910310b2030420020011b21232001410820011b210002402002280264450d00200410310b20022000360288012002202337028c01200a202220024188016a10d40302402023a72201450d00200141386c450d00200010310b02402002280224450d00200a10310b200324000b860201037f230041d0006b22022400200241086a41e28bc500410910a702200241186a41b0a8c600410510a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b8c0102017f017e230041206b2203240020034100360208200342013703002003200241106a4120107e200229030021042003200241086a290300370318200320043703102003200341106a4110107e200320022d00303a00102003200341106a4101107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000bda0101047f200128022822022002280200417f6a2203360200410121040240024002402001280200220541ff01714101470d00200141046a28020021054100210420030d022002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a22013602002001450d010c020b20030d012002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22012001280200417f6a220136020020010d010b200210310b20002005360204200020043602000bcd0201027f230041e0006b22032400200341086a419aa7c600410410a702200341186a418cd8c600410c10a702200341003602402003420137033820032001360250200341386a200341d0006a4104107e20032002360250200341386a200341d0006a4104107e2003200328023822022003280240220110c802370348200341d0006a410c6a200220016a360200200320023602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a1088010240200328023c450d00200210310b024002402003280230220141206a2202417f4c0d000240024020020d00410121040c010b2002102f2204450d020b2000410036020820002002360204200020043602002000200341086a4110107e2000200341186a4110107e2000200328022822022001107e0240200328022c450d00200210310b200341e0006a24000f0b103b000b1039000bd01102117f047e23004190016b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041023a00340c010b200328020c2104024002400240200341106a28020022054104490d002005417c7122024104460d0020024108460d002002410c460d0020024110460d0020054114460d00200128000021062001280004210720012800082108200128000c21092001280010210a2005416b6a210b200141156a210c410021020240024020012d00140e020100020b20034100360258200b450d01200341013602582003200c2d00003a005c20054116460d0120034102360258200320012d00163a005d20054117460d0120034103360258200320012d00173a005e20054118460d0120034104360258200320012d00183a005f20054119460d01200341e0006a20012d00193a0000200341053602582005411a460d01200341e1006a20012d001a3a0000200341063602582005411b460d01200341e2006a20012d001b3a0000200341073602582005411c460d01200341e3006a20012d001c3a0000200341083602582005411d460d01200341e4006a20012d001d3a0000200341093602582005411e460d01200341e5006a20012d001e3a00002003410a3602582005411f460d01200341e6006a20012d001f3a00002003410b36025820054120460d01200341e7006a20012d00203a00002003410c36025820054121460d01200341e8006a20012d00213a00002003410d36025820054122460d01200341e9006a20012d00223a00002003410e36025820054123460d01200341ea006a20012d00233a00002003410f36025820054124460d01200341eb006a20012d00243a00002003411036025820054125460d01200341ec006a20012d00253a00002003411136025820054126460d01200341ed006a20012d00263a00002003411236025820054127460d01200341ee006a20012d00273a00002003411336025820054128460d01200341ef006a20012d00283a00002003411436025820054129460d01200341f0006a20012d00293a0000200341153602582005412a460d01200341f1006a20012d002a3a0000200341163602582005412b460d01200341f2006a20012d002b3a0000200341173602582005412c460d01200341f3006a20012d002c3a0000200341183602582005412d460d01200341f4006a20012d002d3a0000200341193602582005412e460d01200341f5006a20012d002e3a00002003411a3602582005412f460d01200341f6006a20012d002f3a00002003411b36025820054130460d01200341f7006a20012d00303a00002003411c36025820054131460d01200341f8006a20012d00313a00002003411d36025820054132460d01200341f9006a20012d00323a00002003411e36025820054133460d01200341fa006a20012d00333a00002003411f36025820054134460d01200341fb006a20012d00343a000020034120360258200341286a41026a2202200341e5006a2d00003a0000200320032f015c3b0118200320032d005e3a001a2003200341e3006a2f00003b0128200328005f210d200341e6006a280100210e2003418c016a41026a220b200341ec006a2d00003a00002003200341ea006a2f01003b018c01200341ed006a280000210f20034188016a41026a220c200341f3006a2d00003a00002003200341f1006a2f00003b018801200341d8006a41206a2802002110200341f4006a2802002111200320032d001a3a0056200320032f01183b015420034184016a41026a221220022d00003a0000200320032f01283b01840120034180016a41026a2202200b2d00003a0000200320032f018c013b018001200341fc006a41026a220b200c2d00003a0000200320032f0188013b017c200341d0006a41026a20122d00003a0000200320032f0184013b0150200341cc006a41026a20022d00003a0000200320032f0180013b014c200341c8006a41026a200b2d00003a0000200320032f017c3b01482005414b6a210b200141356a210c410121020b200341c4006a41026a20032d00563a0000200341c0006a41026a200341d0006a41026a2d00003a00002003413c6a41026a200341cc006a41026a2d00003a0000200341386a41026a200341c8006a41026a2d00003a0000200320032f01543b0144200320032f01503b0140200320032f014c3b013c200320032f01483b0138200b4110490d00200b4170714110470d010b20034100360220200342013703182003410c36022c200320033602282003200341186a36028c01200341ec006a41013602002003420137025c2003419086c4003602582003200341286a3602682003418c016a41d8ddc900200341d8006a10401a2003280218200328022010d9040240200328021c450d00200328021810310b410221020c010b200341d8006a41026a2205200341c4006a41026a2d00003a0000200341186a41026a220b200341c0006a41026a2d00003a0000200341286a41026a22122003413c6a41026a2d00003a00002003418c016a41026a2213200341386a41026a2d00003a0000200320032f01443b0158200320032f01403b0118200320032f013c3b0128200320032f01383b018c01200c41086a2900002114200c41186a2900002115200c2900002116200c290010211720034188016a41026a220c200341356a41026a2d00003a0000200320032f00353b018801200041186a20153703002000201737031020002014370308200020163703002000200a3602302000200936022c200020083602282000200736022420002006360220200041386a200d360000200020032f01583b0035200041376a20052d00003a00002000413f6a200e3600002000413c6a20032f01183b00002000413e6a200b2d00003a0000200041c3006a20032f01283b0000200041c5006a20122d00003a0000200041c6006a200f360000200041cc006a20132d00003a0000200041ca006a20032f018c013b0000200041d1006a2010360000200041cd006a2011360000200041d7006a200c2d00003a0000200041d5006a20032f0188013b00000b200020023a00342004450d00200110310b20034190016a24000bca0201027f230041e0006b22032400200341086a419aa7c600410410a702200341186a41d8d6c600411810a702200341003602402003420137033820032001360250200341386a200341d0006a4104107e20032002360250200341386a200341d0006a4104107e2003200328023822022003280240220110c802370348200341dc006a200220016a360200200320023602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a1088010240200328023c450d00200210310b024002402003280230220141206a2202417f4c0d000240024020020d00410121040c010b2002102f2204450d020b2000410036020820002002360204200020043602002000200341086a4110107e2000200341186a4110107e2000200328022822022001107e0240200328022c450d00200210310b200341e0006a24000f0b103b000b1039000b130020002002ad4220862001ad841027109c090bbb0301047f230041c0006b2202240041e098c6002103411f2104410e21050240024002400240024002400240024002400240024002400240024002400240200141ff01710e10000102030405060708090a0b0c0d0e0f000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a419cbcc6001047000b41c094c600210341152104410021050c0d0b41e094c6002103410121050c0c0b418895c6002103411b2104410221050c0b0b41ac95c600210341232104410321050c0a0b41d895c6002103411e2104410421050c090b418096c600210341262104410521050c080b41b096c6002103411c2104410621050c070b41d496c6002103410721050c060b41fc96c6002103411c2104410821050c050b41a097c6002103411c2104410921050c040b41c497c600210341212104410a21050c030b41f097c6002103411e2104410b21050c020b419898c6002103411c2104410c21050c010b41bc98c6002103411b2104410d21050b200041832e3b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b811b05057f017e037f017e157f230041206b22012400200141106a2000280200220210810820012802102203200128021810bd0202402001280214450d00200310310b200141106a200210820820012802102203200128021810bd0202402001280214450d00200310310b20012002109907200141106a200128020022032001280208220410e20202400240200128021022050d0041042105420021060c010b2003200410bd02200129021421060b02402001280204450d00200310310b20012002108008200141106a200128020022032001280208220710e2022006422088a72208410274210402400240200128021022090d00410421094200210a0c010b2003200710bd022001290214210a0b200520046a210b02402001280204450d00200310310b2006a7210c200aa7210d024002400240024002400240200b20056b4102752204200a422088a72207410274220e4102756a22032004490d00200341ffffffff01712003470d0420034103742204417f4c0d04024020040d004104210f0c020b2004102f220f0d010c050b2009200e6a2107200c41ffffffff0371210e41042102410021104104210f4100211120052104200921030340024002400240024020050d00200521080c010b200b2004470d0141002108200e450d00200510310b024020072003460d002003350200422086200035020084210620082105200341046a21030c020b200d41ffffffff03710d040c050b20003502004220862004350200842106200441046a21040b0240024020112010470d00024002402005450d00417f200b20046b4102752208200720036b4102756a220c200c2008491b21080c010b200720036b41027521080b2010417f200841016a220c200c2008491b6a22082010490d062010410174220c2008200c20084b1b22084104200841044b1b220841ffffffff0171200846410274210c200841037421080240024020100d00200141003602100c010b200141043602182001200f360210200120104103743602140b20012008200c200141106a104e2001280208210820012802004101460d012001280204210f200841037621100b200f20026a22082006422088a73602002008417c6a2006a7360200200241086a2102201141016a21110c010b0b20080d040c030b02400240024002402004410376221020034f0d00201041017422042003200420034b1b22034104200341044b1b220341ffffffff01712003464102742104200341037421030240024020100d00200141003602100c010b200141186a41043602002001200f360210200120104103743602140b200120032004200141106a104e200141086a280200210320012802004101460d012001280204210f200341037621100b20080d0141002111200f21020c020b20030d050c040b20052802002103200f2002360204200f2003360200200f41086a21024101211120084101460d00200541046a210320084102742208417c6a2104200841786a410276210b034020032802002108200241046a200028020036020020022008360200200241086a2102200341046a21032004417c6a22040d000b200b41026a21110b0240200c41ffffffff0371450d00200510310b02402007450d002007410274210520092103034020002802002104200241046a200328020036020020022004360200200241086a2102201141016a2111200341046a21032005417c6a22050d000b0b200d41ffffffff0371450d010b200910310b024002400240024002400240201141144b0d00201141014b0d010c040b2011410176220241ffffffff01712002470d0520024103742212417f4c0d052012102f2213450d06200f41786a2114200f41686a2115410421164100211741002109201121180240024003402018210e41002118410121030240200e417f6a2204450d00024002400240024002400240417f200f20044103746a22032802002205200e4103742219200f6a41706a220828020022024720052002491b2205417f200341046a2802002200200841046a28020022034720002003491b20051b417f460d00200e417e6a210d201520196a2105410021184100210403400240200d2004470d00200e21030c080b200220052802002208492100200220084721072003200541046a280200220249210b2003200247210c200541786a2105200441016a21042002210320082102417f200720001b2208417f200c200b1b20081b417f470d000b200441016a21032004417f73200e6a21040c010b201520196a210502400340024020044101470d00410021040c020b200220052802002208492100200220084721072003200541046a280200220249210b2003200247210c200541786a21052004417f6a21042002210320082102417f200720001b2208417f200c200b1b20081b417f460d000b0b200e2004490d01200e20114b0d02200e20046b22034101762208450d00200f20044103746a2102201420196a21050340200229020021062002200529020037020020052006370200200241086a2102200541786a21052008417f6a22080d000b0b024020040d00200421180c050b0240200341094d0d00200421180c050b200e20114b0d02200e20046b21032004417f6a2102201420044103746a21050340200e2002490d072005200341016a22031083082002417f6a220420024f0d04200541786a2105200421022003410a490d000c040b0b2004200e419cabc8001062000b200e2011419cabc8001058000b200e2004417f6a2202490d03200e201141acabc8001058000b200441016a21180b024020092017470d00201741016a22022017490d09201741017422052002200520024b1b22024104200241044b1b220241ffffffff01712002464102742105200241037421020240024020170d00200141003602100c010b2001410436021820012016360210200120174103743602140b200120022005200141106a104e20012802082102024020012802004101470d0020020d0b0c0a0b20012802042116200241037621170b201620094103746a2202200336020420022018360200200941016a221a21090240201a4102490d00024002400240034002400240024002402016201a2209417f6a221a4103746a2202280200450d00200941037420166a220841746a2802002204200228020422034d0d00200941024d0d0820162009417d6a22024103746a2802042205200320046a4d0d01200941034d0d08200841646a280200200520046a4b0d080c010b20094103490d012002280204210320162009417d6a22024103746a28020421050b20052003490d010b2009417e6a21020b02402009200241016a221b4d0d00200920024d0d02201620024103746a2219280204221c20192802006a22022016201b4103746a221d280200221e490d03200220114b0d04201941046a211f200f201e4103746a220e201d280204220d41037422056a210320024103742108024002402002201e6b2200200d6b2202200d490d002013200e200510bf09220220056a210402400240200d4101480d002000200d4a0d010b200e2105200221020c020b200f20086a210b20022102200e21050340200520032002417f20032802002208200228020022004720082000491b2208417f200341046a2802002200200241046a28020022074720002007491b20081b417f4622081b2902003702002002200241086a20081b2102200541086a2105200341086a200320081b2203200b4f0d02200420024b0d000c020b0b201320032002410374220510bf09220720056a210402400240200d4101480d00200241014e0d010b20032105200721020c010b201420086a21082003210503402008200541786a2202200441786a2203417f200328020022002002280200220b472000200b491b2200417f200341046a280200220b200241046a280200220c47200b200c491b20001b417f4622001b2902003702002004200320001b21040240200e2002200520001b2205490d00200721020c020b200841786a21082007210220072004490d000b0b20052002200420026b41787110bf091a201f201c200d6a3602002019201e360200201d201d41086a2009201b417f736a41037410c0091a41012109201a41014d0d050c010b0b201b200941bcabc800103f000b2002200941ccabc800103f000b201e200241dcabc8001062000b2002201141dcabc8001058000b2018450d020c000b0b2002200e41acabc8001062000b0240201741ffffffff0171450d00201610310b2012450d01201310310c010b200f2011417e6a22024103746a210341022105034020112002490d0220032005108308200341786a2103200541016a21052002417f6a2202417f470d000b0b20114102490d01200f410c6a210341012105410121020340024002402003417c6a2204280200200f2002417f6a4103746a2208280200470d0020032802002008280204460d010b024020052002460d00200429020021062004200f20024103746a2208290200370200200820064220883e0204200820063e02000b200241016a21020b200341086a21032011200541016a2205470d000b200220114d0d0241facdc800412341d0cfc800103c000b20022011418cabc8001061000b201121020b02402002450d0020024103742103200f210203402001200229020022064220883e0214200120063e0210200241086a2102200141106a108408200341786a22030d000b0b0240201041ffffffff0171450d00200f10310b200141206a24000f0b103b000b1039000bd51907067f027e077f027e087f047e037f230041b0016b22032400200341d0006a22044200370300200341c8006a22054200370300200341386a41086a220642003703002003420037033820034190016a419aa7c600410410a702200620034190016a41086a2207290000370300200320032900900137033820034190016a418cd5c600411b10a702200420072900003703002005200329009001370300200341a0016a200341386a10a60602400240024020032802a0012208450d000240024020032902a401220942ffffffff0f560d00200942ffffffff018350450d010c020b02402009422088220aa72204450d00200341d9006a210b200341e4006a210c200341386a41086a210d200341d0006a210e0240024003400240024002400240024002400240024002400240024002400240024002402004417f6a22042009422088a7220f4f0d00200820044103746a220728020021062003200741046a28020022103602242003200636022020034190016a2006201010ff07200341386a200328029001221020032802980110a5062003200b2800003602a0012003200b41036a22112800003600a301024020032d005822064102460d00200d2903002112200329033821132003280254211420032802502115200328024c211620032802482117200320032800a301360033200320032802a0013602300b0240200328029401450d00201010310b20064102460d012003200328003336002b2003200328023036022802402006450d00200341386a200328022010ae0220032802382210200328024010af0221060240200328023c450d00201010310b200641ff01712106024041000d0020060e081000000000000010100b2006417b6a4102490d0f200341386a200328022410ae0220032802382210200328024010af0221060240200328023c450d00201010310b200641ff01712106024041000d0020060e081000000000000010100b2006417b6a4102490d0f200c4200370200200e2001370300200c41086a41003a00002003200037034820032013370338200320163602602003201436025c200320153602582003201237034020034190016a2003280220200328022410cf022003280290012206200328029801200341386a10a4050240200328029401450d00200610310b200341a0016a2003280224109907200341386a20032802a001221820032802a801221910e202200328023822110d034100211a410421110c090b201741016a22062002460d03200b20032802283600002011200328002b36000020032013370338200341003a005820032014360254200320153602502003201636024c200320063602482003201237034020034190016a2003280220200328022410ff072003280290012206200328029801200341386a10b206200328029401450d04200610310c040b2004200f41b4a7c600103f000b41c4a7c60041da0041a0a8c6001068000b200328023c211a2003280240221b0e020503020b200341386a2003280220108108200341086a200328023822062003280240221010c0022003200328020c417f6a417f20032802081b360290012006201020034190016a4104109f020240200328023c450d00200610310b20072008200f417f6a22064103746a29020037020020034190016a2003280220200328022410ff07200341386a2003280290012207200328029801221010a5062006ad210a024020032d005841024622060d002007201010bd020b200942ffffffff0f832109200a422086210a2003290338211c200d290300211d0240200328029401450d00200710310b2009200a842109201e201c20061b211e201f201d20061b211f20060d00200341386a200341206a10d905200341386a201e201f10bc022004450d0d0c0b0b2004450d0c0c0a0b4100210620032802202120201b2110034020062010410176222120066a22222020201120224102746a280200491b2106201020216b221041014b0d000c020b0b410021064101211b200328022021200b2020201120064102746a2802002210460d02201b2006202020104b6a22064f0d012006201b1048000b4100211b20032802202120410021060b0240201b201a470d00201a41016a2210201a490d0c201a41017422212010202120104b1b22104104201041044b1b221041ffffffff037120104641027421212010410274211002400240201a0d00200341003602380c010b20034104360240200320113602382003201a41027436023c0b20034190016a20102021200341386a104e20032802980121102003280290014101460d0220032802940121112010410276211a0b201120064102746a221041046a2010201b20066b41027410c0091a20102020360200201b41016a211b20032802a801211920032802a00121180b2003201b3602402003201a36023c2003201136023820110d012018201910bd020c020b2010450d090c0a0b20032019360294012003201836029001200341386a20034190016a10e3022011450d00201a41ffffffff0371450d00201110310b024020032802a401450d00201810310b200341a0016a2003280220108008200341386a20032802a001221820032802a801221910e2020240024002400240200328023822110d004104211141002106200328022421204100211b0c010b200328023c211b024002400240024002402003280240221a0e020200010b410021064101211a200328022421200c020b4100210620032802242120201a2110034020062010410176222120066a22222020201120224102746a280200491b2106201020216b221041014b0d000c020b0b4100211a20032802242120410021060c010b2020201120064102746a2802002210460d03201a2006202020104b6a22064f0d002006201a1048000b201a201b470d010b201b41016a2210201b490d09201b41017422212010202120104b1b22104104201041044b1b221041ffffffff037120104641027421212010410274211002400240201b0d00200341003602380c010b20034104360240200320113602382003201b41027436023c0b20034190016a20102021200341386a104e20032802980121102003280290014101460d042003280294012111201b211a2010410276211b0b201120064102746a221041046a2010201a20066b41027410c0091a20102020360200201a41016a211a20032802a801211920032802a00121180b2003201a3602402003201b36023c200320113602380240024020110d002018201910bd020c010b20032019360294012003201836029001200341386a20034190016a10e3022011450d00201b41ffffffff0371450d00201110310b20032802a401450d00201810310b200341386a2003280220108108200341186a20032802382210200328024010c002200328021c410020032802181b21060240200328023c450d00201010310b0240024020064102490d00200341386a2003280220108108200328024021112003280238211020032006417f6a360290012010201120034190016a4104109f02200328023c450d01201010310c010b200341386a200328022010810820032802382206200328024010bd02200328023c450d00200610310b200341386a2003280224108208200341106a20032802382210200328024010c0022003280214410020032802101b21060240200328023c450d00201010310b0240024020064102490d00200341386a2003280224108208200328024021112003280238211020032006417f6a360290012010201120034190016a4104109f02200328023c450d01201010310c010b200341386a200328022410820820032802382206200328024010bd02200328023c450d00200610310b20072008200f417f6a22064103746a290200370200200341386a2003280220200328022410ff0720032802382207200328024010bd02200942ffffffff0f8321092006ad422086210a0240200328023c450d00200710310b2009200a8421092004450d020c000b0b2010450d040c050b2009422088220aa721040b200341d0006a4200370300200341c8006a4200370300200341386a41086a220642003703002003420037033820034190016a419aa7c600410410a702200620034190016a41086a2207290000370300200320032900900137033820034190016a418cd5c600411b10a702200541086a20072900003700002005200329009001370000200aa74103744104722206417f4c0d022006102f2207450d0320034100360298012003200636029401200320073602900120034190016a200410cb0102402004450d00200820044103746a2106200821040340200320042802003602a00120034190016a200341a0016a4104107e2003200441046a2802003602a00120034190016a200341a0016a4104107e200441086a22042006470d000b0b200341386a41202003280290012204200328029801109f020240200328029401450d00200410310b200942ffffffff0183500d010b200810310b200341b0016a24000f0b103b000b1039000bb50205017f017e037f017e027f230041306b2200240042002101200041186a22024200370300200041106a22034200370300200041086a420037030020004200370300410421042000419aa7c600410410a702200041206a41b8d7c600411c10a7022002200041206a41086a29000037030020032000290020370300200041206a200010a606024020002802202202450d002000412010bd0220002902242101200221040b02402001422088a72202450d0020024103742103200421020340200020022902002205a7220636022020002005422088a7220736022420002006200710d10220002802002206200028020810bd0202402000280204450d00200610310b200241086a2102200041206a108408200341786a22030d000b0b0240200142ffffffff0183500d00200410310b200041306a24000b910402017f017e230041d0006b22022400200241286a200141286a280200360200200241206a200141206a290200370300200241186a200141186a290200370300200241106a200141106a290200370300200241086a200141086a2902003703002002200129020022033703002002410036023820024201370330024002400240024002402003a741ff01710e03000102030b200241013a0040200241306a200241c0006a4101107e2002200241246a280200360240200241306a200241c0006a4104107e4120102f2201450d032002422037024420022001360240200241c0006a20024101724120107e200241306a200228024022012002280248107e2002280244450d02200110310c020b200241023a0040200241306a200241c0006a4101107e2002200241246a280200360240200241306a200241c0006a4104107e4120102f2201450d022002422037024420022001360240200241c0006a20024101724120107e200241306a200228024022012002280248107e02402002280244450d00200110310b20022002280228360240200241306a200241c0006a4104107e0c010b200241033a0040200241306a200241c0006a4101107e20022002280204360240200241306a200241c0006a4104107e0b200041d09eb18a03360001200041023a0000200041086a2002290330370200200041106a200241306a41086a280200360200200241d0006a24000f0b1039000b850301047f230041f0006b22012400200141086a41206a200041206a280200360200200141086a41186a200041186a290200370300200141086a41106a200041106a290200370300200141086a41086a2202200041086a29020037030020012000290200370308200141306a41186a22004200370300200141306a41106a22034200370300200141306a41086a420037030020014200370330200141306a41f3c6c000410610a702200141e0006a41a091c900410610a7022000200141e0006a41086a220429000037030020032001290060370300200141d0006a200141086a10ec062004200141d0006a41086a28020036020020012001290350370360200141306a4120200141e0006a10a8020240024002400240024020012d00080e050400010204030b200141146a280200450d03200141106a28020010310c030b200141146a280200450d02200141106a28020010310c020b200141146a280200450d01200141106a28020010310c010b2002280200450d00200128020c10310b200141f0006a24000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a4188fec600410f10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bdf0c03077f017e037f230041f0006b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003a00000c010b200341186a28020021022003280214210420034100360238024002402002450d00200320012d00003a003c2003410136023820024101460d00200320012d00013a003d2003410236023820024102460d00200320012d00023a003e2003410336023820024103460d00200320012d00033a003f2003410436023820024104460d00200341c0006a20012d00043a00002003410536023820024105460d00200341c1006a20012d00053a00002003410636023820024106460d00200341c2006a20012d00063a00002003410736023820024107460d00200341c3006a20012d00073a00002003410836023820024108460d00200341c4006a20012d00083a00002003410936023820024109460d00200341c5006a20012d00093a00002003410a3602382002410a460d00200341c6006a20012d000a3a00002003410b3602382002410b460d00200341c7006a20012d000b3a00002003410c3602382002410c460d00200341c8006a20012d000c3a00002003410d3602382002410d460d00200341c9006a20012d000d3a00002003410e3602382002410e460d00200341ca006a20012d000e3a00002003410f3602382002410f460d00200341cb006a20012d000f3a00002003411036023820024110460d00200341cc006a20012d00103a00002003411136023820024111460d00200341cd006a20012d00113a00002003411236023820024112460d00200341ce006a20012d00123a00002003411336023820024113460d00200341cf006a20012d00133a00002003411436023820024114460d00200341d0006a20012d00143a00002003411536023820024115460d00200341d1006a20012d00153a00002003411636023820024116460d00200341d2006a20012d00163a00002003411736023820024117460d00200341d3006a20012d00173a00002003411836023820024118460d00200341d4006a20012d00183a00002003411936023820024119460d00200341d5006a20012d00193a00002003411a3602382002411a460d00200341d6006a20012d001a3a00002003411b3602382002411b460d00200341d7006a20012d001b3a00002003411c3602382002411c460d00200341d8006a20012d001c3a00002003411d3602382002411d460d00200341d9006a20012d001d3a00002003411e3602382002411e460d00200341da006a20012d001e3a00002003411f3602382002411f460d00200341db006a20012d001f3a000020034120360238200341306a41026a2202200341c5006a2d00003a0000200320032f013c3b0120200320032d003e3a00222003200341386a410b6a2f00003b0130200328003f2105200341c6006a2801002106200341ec006a41026a2207200341cc006a2d00003a00002003200341386a41126a2f01003b016c200341cd006a2800002108200341e8006a41026a2209200341d3006a2d00003a00002003200341386a41196a2f00003b0168200341d4006a290200210a200320032d00223a001e200320032f01203b011c200341e4006a41026a220b20022d00003a0000200320032f01303b0164200341e0006a41026a220c20072d00003a0000200320032f016c3b0160200341dc006a41026a220d20092d00003a0000200320032f01683b015c200341206a41026a2209200b2d00003a0000200320032f01643b01202002200c2d00003a0000200320032f01603b01302007200d2d00003a0000200320032f015c3b016c200041046a2005360000200041036a20032d001e3a0000200020032f011c3b00012000410b6a2006360000200041086a20032f01203b00002000410a6a20092d00003a0000200041126a20083600002000410f6a20032f01303b0000200041116a20022d00003a0000200041166a20032f016c3b0000200041186a20072d00003a0000200041196a200a370000410121020c010b20034100360228200342013703202003410c3602342003200341086a3602302003200341206a36026c200341cc006a41013602002003420137023c2003419086c4003602382003200341306a360248200341ec006a41d8ddc900200341386a10401a2003280220200328022810d90402402003280224450d00200328022010310b410021020b200020023a00002004450d00200110310b200341f0006a24000bd60303037f017e057f230041c0006b22022400200241106a2000108508200241086a200228021022032002280218220410c00242012105024002400240200228020c410020022802081b22060d00200241206a20001092072001280208220041046a2207417f4c0d0120012802002108200228022821092002280220210102400240024002400240024020070d0020024100360238200242013703300c010b2007102f220a450d0720024100360238200220073602342002200a360230200041c000490d01200041808001490d022000418080808004490d030b200241033a003c200241306a2002413c6a4101107e2002200036023c200241306a2002413c6a4104107e0c030b200220004102743a003c200241306a2002413c6a4101107e0c020b200220004102744101723b013c200241306a2002413c6a4102107e0c010b2002200041027441027236023c200241306a2002413c6a4104107e0b200241306a20082000107e20012009200228023022002002280238109f0202402002280234450d00200010310b02402002280224450d00200110310b420221050b2002200641016a36023020032004200241306a4104109f0202402002280214450d00200310310b200241c0006a240020050f0b103b000b1039000b9f0a02077f017e230041d0006b22042400200441106a2000109004200441206a200428021020042802181091040240024002400240024002400240200428022c22054102470d004104210641002105410021070c010b20042802302108200428022021062004280228220720042802242209470d010b200741016a22092007490d012007410174220a2009200a20094b1b22094104200941044b1b220941ffffffff0171200946410274210a200941037421090240024020070d00200441003602200c010b200441286a410436020020042006360220200420074103743602240b200441c0006a2009200a200441206a104e200441c8006a2802002109024020042802404101470d002009450d020c050b20042802442106200941037621090b200620074103746a220a2002360204200a2001360200200420083602302004200741016a360228200420063602202004200536022c20042009360224200428021022072004280218200441206a109604024020054102460d00200941ffffffff0171450d00200610310b02402004280214450d00200710310b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200441106a2000200110920420042802182103200428021021074120102f2206450d032004422037024420042006360240200441c0006a200441206a4120107e20072003200428024022062004280248109f0202402004280244450d00200610310b02402004280214450d00200710310b2004108f044100210720042802002109024002400240200428020822080e020201000b4100210720082103034020072003410176220620076a2205200920054103746a41046a28020020014b1b2107200320066b220341014b0d000b0b20082007200920074103746a41046a2802002001496a22074f0d00200720081048000b0240024020082004280204470d00200841016a22032008490d02200841017422062003200620034b1b22034104200341044b1b220341ffffffff01712003464102742106200341037421030240024020080d00200441003602200c010b200441286a410436020020042009360220200420084103743602240b200441c0006a20032006200441206a104e200441c8006a280200210320042802404101460d01200420042802442209360200200420034103763602040b200920074103746a220341086a2003200820076b41037410c0091a20032002360204200320003602002004200841016a2207360208200441106a41086a200736020020042004290300220b370310200ba722070d02200441386a22074200370300200441306a22034200370300200441206a41086a2206420037030020044200370320200441c0006a41b0a8c600410510a7022006200441c0006a41086a220529000037030020042004290040370320200441c0006a41c7a8c600410f10a7022007200529000037030020032004290040370300200441206a412010bd020c030b20030d030b103b000b200441386a22034200370300200441306a22064200370300200441206a41086a2205420037030020044200370320200441c0006a41b0a8c600410510a7022005200441c0006a41086a220129000037030020042004290040370320200441c0006a41c7a8c600410f10a7022003200129000037030020062004290040370300200441206a200441106a109704200428021441ffffffff0171450d00200710310b200441d0006a24004280a7f2a6010f0b1039000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41e8fdc600410510a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bb20201047f230041106b22032400024002402002280208220441046a2205417f4c0d002002280200210202400240024002400240024020050d0020034100360208200342013703000c010b2005102f2206450d06200341003602082003200536020420032006360200200441c000490d01200441808001490d022004418080808004490d030b200341033a000c20032003410c6a4101107e2003200436020c20032003410c6a4104107e0c030b200320044102743a000c20032003410c6a4101107e0c020b200320044102744101723b010c20032003410c6a4102107e0c010b2003200441027441027236020c20032003410c6a4104107e0b200320022004107e20002001200328020022042003280208109f0202402003280204450d00200410310b200341106a24000f0b103b000b1039000bae0401097f230041a0016b22032400200341086a20001086082003200328020822042003280210220510c00202400240024020032802004101470d00200328020421020c010b200341186a20012802002001280208109a01200341e9006a200341186a41086a2206290300370000200341f1006a200341186a41106a2207290300370000200341f9006a200341186a41186a220829030037000020034188016a200236020020034184016a2000360200200341013a006020032003290318370061200341386a200341e0006a10d702200341e0006a41206a200341386a41206a280200360200200341e0006a41186a2209200341386a41186a290300370300200341e0006a41106a220a200341386a41106a290300370300200341e0006a41086a220b200341386a41086a29030037030020032003290338370360200341e0006a10d802200341186a200110db021a20092008290300370300200a2007290300370300200b20062903003703002003200329031837036020034190016a2000108708200328029801210620032802900121004120102f2207450d012003422037023c20032007360238200341386a200341e0006a4120107e20002006200328023822072003280240109f020240200328023c450d00200710310b200328029401450d00200010310b2003200236026020042005200341e0006a4104109f020240200328020c450d00200410310b0240200141046a280200450d00200128020010310b200341a0016a24000f0b1039000bd10b01067f230041d0016b22032400200341f8006a41086a200141086a28020036020020032001290200370378200341a0016a200010dd0220032802a001220120032802a801200341f8006a10de02024020032802a401450d00200110310b0240200328027c450d00200328027810310b200341a0016a2000108608200341106a20032802a001220420032802a80110c0022003280214210520032802102101024020032802a401450d00200410310b0240024020014101470d00200520024b0d00200341a0016a200010860820032802a001220120032802a80110bd02024020032802a401450d00200110310b200341386a2000108708200341a0016a200328023822042003280240220110da02024020032d00a0012202450d002004200110bd020b200341f8006a41186a2206200341b9016a290000370300200341f8006a41106a2207200341b1016a290000370300200341f8006a41086a2208200341a9016a290000370300200320032900a10137037841002101024020024101470d00200341d8006a41186a2006290300370300200341d8006a41106a2007290300370300200341d8006a41086a200829030037030020032003290378370358410121010b0240200328023c450d00200410310b0240024020010d00200341306a4200370300200341286a4200370300200341206a4200370300200342003703180c010b200341186a41186a200341d8006a41186a290300370300200341186a41106a200341d8006a41106a290300370300200341186a41086a200341d8006a41086a290300370300200320032903583703180b200341386a200010d902200341a0016a20032802382204200328024010da02200341f8006a41086a2202200341a9016a290000370300200341f8006a41106a2206200341b1016a290000370300200341f8006a41186a2207200341b9016a290000370300200320032900a10137037841002101024020032d00a0014101470d00200341d8006a41186a2007290300370300200341d8006a41106a2006290300370300200341d8006a41086a200229030037030020032003290378370358410121010b0240200328023c450d00200410310b0240024020010d00200341d0006a4200370300200341c8006a4200370300200341c0006a4200370300200342003703380c010b200341386a41186a200341d8006a41186a290300370300200341386a41106a200341d8006a41106a290300370300200341386a41086a200341d8006a41086a290300370300200320032903583703380b200341f8006a200010d9022003280280012104200328027821014120102f2202450d01200342203702a401200320023602a001200341a0016a200341186a4120107e2001200420032802a001220220032802a801109f02024020032802a401450d00200210310b0240200328027c450d00200110310b200341a9016a200341186a41086a290300370000200341b1016a200341186a41106a290300370000200341b9016a200341186a41186a290300370000200341c4016a2000360200200320032903183700a101200341003a00a001200341f8006a200341a0016a10d702200341a0016a41206a200341f8006a41206a280200360200200341a0016a41186a2206200341f8006a41186a2201290300370300200341a0016a41106a2207200341f8006a41106a2204290300370300200341a0016a41086a2202200341f8006a41086a2208290300370300200320032903783703a001200341a0016a10d80220014200370300200442003703002008420037030020034200370378200341f8006a41f3c6c000410610a702200341a0016a41ec90c900410610a70220012002290000370300200420032900a001370300200341086a200341f8006a412010c002200328020c2101200328020821042006200341386a41186a2903003703002007200341386a41106a2903003703002002200341386a41086a290300370300200320032903383703a001200020052001410020041b200341a0016a10dc021a0b200341d0016a24000f0b1039000b890201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a419081c700410c10a702200220013602342002200241346a410410c802370338200241c0006a410c6a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bd60201017f230041e0006b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10bb0102400240024002402003280200450d00200341003602480c010b200341c8006a200341206a200328020410c20120032802480d010b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341386a360258200341c4006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110310b200341e0006a24000bd00101047f230041106b22022400024002402000280208220341027441046a2204417f4c0d00200028020021000240024020040d00410121050c010b2004102f2205450d020b2002410036020820022004360204200220053602002002200310cb0102402003450d002003410274210303402002200028020036020c20022002410c6a4104107e200041046a21002003417c6a22030d000b0b20012802002001280204200228020022002002280208109f0202402002280204450d00200010310b200241106a24000f0b103b000b1039000bbf9e010c0d7f017e097f017e117f017e057f027e027f017e017f037e230022032104200341801d6b41607122032400200241146a2802002105200241106a2802002106200228020c210720022802082108200228020421092002280200210a200341306a200241246a41f00010bf091a200341a0156a41286a200141286a280200360200200341a0156a41206a200141206a290200370300200341a0156a41186a220b200141186a290200370300200341a0156a41106a220c200141106a290200370300200341a0156a41086a220d200141086a290200370300200320012902003703a0150240024002400240024002400240200341a0156a108d030d00200b4200370300200c4200370300200d4200370300200342003703a015200341a0026a41e6d4c100410c10a702200d200341a0026a41086a2201290000370300200320032900a0023703a015200341a0026a41ccd5c100410810a702200b2001290000370300200c20032900a002370300200341a0156a4120108f03450d0220004180f6c000360024200041003a00222000420037030820004201370300200041286a4119360000200041206a4183223b0000200041186a41003a00000c010b2000420037030820004201370300200041206a41023a0000200041186a41003a00000b4101210c4101210d0c010b200341d8116a41186a22014200370300200341d8116a41106a220e4200370300200341d8116a41086a220b4200370300200342003703d81120034188026a41f3c6c000410610a702200b20034188026a41086a29000037030020032003290088023703d811200341d0016a418c91c900410a10a7022001200341d0016a41086a290000370300200e20032900d001370300200341a0156a200341d8116a412010da0220032d00a0152101200341a0026a41186a220b200341b9156a290000370300200341a0026a41106a220c200341b1156a290000370300200341a0026a41086a220d200341a9156a290000370300200320032900a1153703a0020240024020014101460d00200341a0016a41186a4200370300200341a0016a41106a4200370300200341a0016a41086a4200370300200342003703a0010c010b200341a0016a41186a200b290300370300200341a0016a41106a200c290300370300200341a0016a41086a200d290300370300200320032903a0023703a0010b200341a0156a200341306a109d030240200341a0156a200341a0016a412010c209450d00200041a4f6c0003600244101210c200041013a00222000420037030820004201370300200041286a4113360000200041206a4183223b0000200041186a41003a00004101210d0c010b200341b8026a22014200370300200341b0026a220f4200370300200341a0026a41086a220b4200370300200342003703a00220034188026a41a996c700410d10a702200b20034188026a41086a29000037030020032003290088023703a002200341d0016a41849cc700411110a7022001200341d0016a41086a290000370300200f20032900d001370300200341a0156a200341a0026a10da030240024020032802a015220b0d00410021010c010b20032902a4152210422088a721012010a7220c450d00200c412c6c450d00200b10310b200320083602a802200320093602a4022003200a3602a002200341a0156a2001200341a0026a10db034101210c200341a0156a41086a220b2802002111200341a0156a410c6a280200211220032802a415210d02400240024020032802a0154101460d0042002110200341b8026a220c4200370300200341b0026a22134200370300200341a0026a41086a22014200370300200342003703a0024106211420034188026a41f3c6c000410610a702200120034188026a41086a221529000037030020032003290088023703a002200341d0016a41ec90c900410610a702200f41086a2216200341d0016a41086a2217290000370000200f20032900d001370000200341286a200341a0026a412010c002200328022c211820032802282119200c42003703002013420037030020014200370300200342003703a00220034188026a41b5d8c800410d10a7022001201529000037030020032003290088023703a002200341d0016a41cfd8c800410c10a70220162017290000370000200f20032900d001370000200341a0156a200341a0026a412010b20220032802b016211620032903a015211a200341a0026a200b41f00010bf091a41022117200341e4166a280200211b200341bc166a280200211c20032802b416211d0240024020164102470d00200341900a6a410041f00010c1091a41e400211e41c801211f410121204100212141002122410021234100212441002125410021264101210c41012113410121154200211a410021160c010b200341b8166a2802002125200341c0166a2802002114200341c4166a280200211e200341c8166a2802002117200341cc166a280200211f200341d0166a2802002120200341d4166a2802002122200341d8166a2802002121200341dc166a29020021102003280298162124200328029c16212320032802a016211520032802a416211320032802a816210c20032802ac162126200341900a6a200341a0026a41f00010bf091a0b200341f0116a22274200370300200341e8116a22284200370300200341d8116a41086a22014200370300200342003703d811200341c0016a41a996c700410d10a7022001200341c0016a41086a220b290000370300200320032900c0013703d811200341c0016a41c49dc700411110a702200e41086a2229200b290000370000200e20032900c001370000200341206a200341d8116a412010c00202402015450d002003280224212a2003280220212b202742003703002028420037030020014200370300200342003703d811200341c0016a41a996c700410d10a7022001200b290000370300200320032900c0013703d811200341c0016a41849cc700411110a7022029200b290000370000200e20032900c001370000200341a0156a200341d8116a10da0320032902a415420020032802a01522011b212c2001410420011b21270240024041002018410020191b2201202a4100202b1b6b220b200b20014b1b201570220b2013200c2013200c4b1b4f0d00200341a0156a200341900a6a41f00010bf091a41e001102f22180d010c090b0240202ca72201450d002001412c6c450d00202710310b41002118410421144101212d410021154100212e4100212f0c040b2018201a370300201841086a200341a0156a41f00010bf091a201820013602d8012018200b3602d4012018202c3702cc01201820273602c8012018201b3602c401201820103702bc01201820213602b801201820223602b401201820203602b0012018201f3602ac01201820173602a8012018201e3602a401201820143602a0012018201c36029c0120182025360298012018201d3602940120182016360290012018202636028c012018200c36028801201820133602840120182015360280012018202336027c2018202436027820034188026a41a4bcc200410d10a702200341d0016a41b1bcc200411310a7024120102f2201450d07200342203702a415200320013602a015200341a0156a20034188026a4110107e200341a0156a200341d0016a4110107e20032802a8152201417f4c0d0620032802a015210b0240024020010d004101210c0c010b2001102f220c450d080b200c200b200110bf09210b200341d8116a41086a200341a0156a41086a280200220c360200200341d0016a41026a2213200341a0026a41026a2d00003a0000200320032903a01522103703d811200320032f00a0023b01d001200341b4026a200c360200200320013602a802200320013602a4022003200b3602a002200320103702ac0241002101200341003a00bc02200341103602b802200341bf026a20132d00003a0000200320032f01d0013b00bd02200341a0156a200341a0026a10dd03024020032802cc1722130d004104212441002130410021154100212e410421140c030b410021014100213041042124410021154100212e41042114034020032802e017210b20032802d817211620032802d417210c20032802a01521170240201820032802a415221920032802e81710de03450d00024020012030470d00200141016a22272001490d09200141017422282027202820274b1b22274104202741044b1b222741ffffffff03712027464102742128202741027421270240024020010d00200341003602a0150c010b200341043602a815200320243602a015200320014102743602a4150b200341900a6a20272028200341a0156a104e20032802980a2127024020032802900a4101470d0020270d0b0c0a0b20032802940a2124202741027621300b202420014102746a201736020002402015202e470d00201541016a22172015490d09201541017422272017202720174b1b22174104201741044b1b221741ffffffff03712017464102742127201741027421170240024020150d00200341003602a0150c010b200341043602a815200320143602a015200320154102743602a4150b200341900a6a20172027200341a0156a104e20032802980a2117024020032802900a4101470d0020170d0b0c0a0b20032802940a21142017410276212e0b200141016a2101201420154102746a2019360200201541016a21150b0240200c450d00201310310b0240200b450d00201610310b200341a0156a200341a0026a10dd0320032802cc172213450d030c000b0b4190aac600413941d09dc800103c000b200020113600242000420037030820004201370300200041286a2012360000200041206a200d3600004100210d200041186a41003a00000c020b024020032802a402450d0020032802a00210310b0240200341b0026a280200450d0020032802ac0210310b02402001450d00202420014102746a2125200341ec176a2126200341a0156a41086a2131200341f4016a212d200341a0156a410472212f200341a0026a41a4026a212a202421130340200341900a6a2013280200220b10df03200341a0156a20032802900a220120032802980a220c10e0030240024020032802c81722160d00200341a0026a202f41a40210bf091a0c010b2001200c10bd0220032802a0152123200341a0026a202f41a40210bf091a20032802d017211d20032802d417212020032802dc17211e200341d8116a200341a0026a41a40210bf091a0b024020032802940a450d00200110310b200341a0026a200b10e103200341a0156a20032802a002220120032802a802220b10e2030240024020032802a015220c0d004100210c0c010b2001200b10bd0220032802a415211720032802a815212720032802ac15212920032802b015212b20032802b415211920032802b815212820032802bc15211b20032802c015212120032802c415211f20032802c815211c20032902cc15211020032802d41521220b024020032802a402450d00200110310b201341046a2113200341900a6a200341d8116a41a40210bf091a024002402016450d00200c450d002003202236028402200320103702fc012003201c3602f8012003201f3602f401200320213602f0012003201b3602ec01200320283602e801200320193602e4012003202b3602e001200320293602dc01200320273602d801200320173602d4012003200c3602d001200341a0026a200341900a6a41a40210bf091a200341a0156a200341d0016a109901202a41186a200341a0156a41186a290300370000202a41106a200341a0156a41106a290300370000202a41086a2031290300370000202a20032903a015370000200341023602a415200341073a00a0152031200341a0026a41c40210bf091a202641086a202d41086a2802003602002026202d290200370200200320233602f817200341a0156a10a90202402027450d002027410c6c210b200c210103400240200141046a280200450d00200128020010310b2001410c6a2101200b41746a220b0d000b0b02402017450d002017410c6c450d00200c10310b02402019450d002019410474210b202941086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200b41706a220b0d000b0b0240202b41ffffffff0071450d00202910310b02402028450d00201b450d00202810310b0240201d450d00201610310b201e450d01202010310c010b024002402016450d000240201d450d00201610310b201e450d0020201031200c0d010c020b200c450d010b02402027450d002027410c6c210b200c210103400240200141046a280200450d00200128020010310b2001410c6a2101200b41746a220b0d000b0b02402017450d002017410c6c450d00200c10310b02402019450d002019410474210b202941086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200b41706a220b0d000b0b0240202b41ffffffff0071450d00202910310b02402028450d00201b450d00202810310b201c450d00201f10310b20132025470d000b0b0240203041ffffffff0371450d00202410310b201810e303201810314101212f4100212d0b10e403200341a0026a41186a220c4200370300200341a0026a41106a22134200370300200341a0026a41086a22014200370300200342003703a00220034188026a41f3c6c000410610a702200120034188026a41086a221629000037030020032003290088023703a002200341d0016a41ec90c900410610a702200f41086a2217200341d0016a41086a2221290000370000200f20032900d001370000200341186a200341a0026a412010c002200328021c211920032802182127200341d8116a41186a221d4200370300200341d8116a41106a221e4200370300200341d8116a41086a222b4200370300200342003703d811200341c0016a41a996c700410d10a702202b200341c0016a41086a221b290000370300200320032900c0013703d811200341c0016a41849cc700411110a702200e41086a221f201b290000370000200e20032900c001370000200341a0156a200341d8116a10da0320032802a015210b20032902a4152110200c42003703002013420037030020014200370300200342003703a00220034188026a41b5d8c800410d10a7022001201629000037030020032003290088023703a002200341d0016a41cfd8c800410c10a70220172021290000370000200f20032900d001370000200341a0156a200341a0026a412010b20220032802b0162101200341a0026a200341a0156a41086a222641f00010bf091a2019410020271b213020104200200b1b2232422088a72117410020032802981620014102461b2131201141ffffffff03712120201420154102746a2129200d20124102746a2128200b4104200b1b212a200341a0156a4104722122200341a0026a410872211c200d210b20142101034002400240200d450d000240200b2028460d004101211620012113200b210c200b41046a2215210b0c020b2020450d00200d10310b02402014450d00024020012029460d004100210d200b2115410021162001210c200141046a221321010c020b202e41ffffffff0371450d00201410310b200341f0116a220d4200370300200341e8116a22134200370300200341d8116a41086a22014200370300200342003703d811200341c0016a41b0a8c600410510a7022001200341c0016a41086a220b290000370300200320032900c0013703d811200341c0016a4190fdc600410a10a702200e41086a2215200b290000370000200e20032900c001370000200341a0156a200341d8116a412010e20220032802a015210c20032902a4152110200d42003703002013420037030020014200370300200342003703d811200341c0016a41a996c700410d10a7022001200b290000370300200320032900c0013703d811200341c0016a41989ec700410910a7022015200b290000370000200e20032900c001370000200341a0156a200341d8116a10e5030240024020032802a015220d0d0041002119200341003602d801200342043703d0014104210d41002127410421140c010b200320032902a415221a3702d4012003200d3602d001201a422088a72127201aa72119200d21140b200341f0116a22134200370300200341e8116a22154200370300200341d8116a41086a22014200370300200342003703d811200341c0016a41a996c700410d10a7022001200341c0016a41086a220b290000370300200320032900c0013703d811200341c0016a41b09bc700410f10a702200e41086a2216200b290000370000200e20032900c001370000200341a0156a200341d8116a10e6030240024020032802a015221b0d004100211f4104211b41002123410021250c010b200341a0156a41086a2802002123200341ac156a280200212520032802a415211f0b201342003703002015420037030020014200370300200342003703d811200341c0016a41a996c700410d10a7022001200b290000370300200320032900c0013703d811200341c0016a41c89ac700410f10a7022016200b290000370000200e20032900c001370000200341a0156a200341d8116a10e70320032802a0152201410420011b2115024020032902a415420020011b221a422088a72213450d002013410c6c210b2015210103400240200141046a28020041ffffffff0371450d00200128020010310b2001410c6a2101200b41746a220b0d000b0b0240201aa72201450d002001410c6c450d00201510310b20104200200c1b2133200c4104200c1b21200240024020130d000240201f450d00201f412c6c450d00201b10310b02402019450d00201941346c450d00200d10310b0240203342ffffffff0383500d00202010310b2032a72201450d012001412c6c450d01202a10310c010b201b41286a21212020417c6a2124202a2017412c6c6a21152014202741346c6a21192033422088a7211c200341c0026a21264100211641002127410421224100211d4100211e4100212b202a2101024002400340202b417f6a210b2024202b4102746a210c034020152001460d03200c41046a210c200b41016a210b2001280200210d2001412c6a22172101200d4102470d000b200b41016a212b2016210d2027210102400340024002402001450d00200d2116200121270c010b41002014201420194622011b2113200d20142019476a2116410121272019201441346a20011b2114200d21290b024020130d0020032802d80121280c020b410021012016210d20132802002228200b490d000b201721012028200b460d01202921280b200b41016a212b024002400240200b201c4f0d00200c2802002111200341086a200b203010e8032003280208450d02200328020c2112200341a0026a411f6a200341a0156a411f6a280000360000200341a0026a41186a200341a0156a41186a290000370300200341a0026a41106a200341a0156a41106a290000370300200341a0026a41086a200341a0156a41086a290000370300200320032900a0153703a002410021340c010b024002402023450d002023410274417c6a41027641016a210d410021014100210c0340201c202120016a2802006a200b460d022001412c6a2101200d200c41016a220c470d000b0b201721010c030b201b20016a220c2802002111200341a0156a41186a220d200c411c6a290200370300200341a0156a41106a2231200c41146a290200370300200341a0156a41086a222e200c410c6a2902003703002003200c41046a2902003703a015200c41246a2802002135200c200c412c6a2023412c6c20016b41546a10c0091a200341900a6a41186a200d2903002210370300200341900a6a41106a2031290300221a370300200341900a6a41086a202e290300222c370300200320032903a01522363703900a200341d8116a41086a2201202c370300200341d8116a41106a220c201a370300200341d8116a41186a220d2010370300200320363703d811200341106a200b203010e8032003280210450d0320032802142112200341a0026a41186a200d290300370300200341a0026a41106a200c290300370300200341a0026a41086a200129030037030020034188026a41026a200341a0156a41026a2d000022013a0000200320032903d8113703a002200320032f00a015220c3b018802202641026a20013a00002026200c3b00002023417f6a2123410121340b200341a0156a411f6a220c200341a0026a411f6a280000360000200341a0156a41186a220d200341a0026a41186a290300370300200341a0156a41106a2231200341a0026a41106a290300370300200341a0156a41086a222e200341a0026a41086a290300370300200320032903a0023703a0150240201e201d470d00201d41016a2201201d490d0a201d41017422372001203720014b1b22014104200141044b1bad42387e2210422088a74541027421012010a7213702400240201d0d00200341003602900a0c010b200341043602980a200320223602900a2003201d41386c3602940a0b200341d8116a20372001200341900a6a104e20032802e0112101024020032802d8114101470d0020010d0c0c0b0b20032802dc112122200141386e211d0b2022201e41386c6a2201200b360204200120283602002001410c6a20343a0000200141086a20113602002001410d6a20032903a015370000200141156a202e2903003700002001411d6a2031290300370000200141256a200d2903003700002001412c6a200c280000360000200141346a2012360200200141306a2035360200201e41016a211e201721010c010b0b41acafc70041de00418cb0c7001068000b41acafc70041de00419cb0c7001068000b02400240201e450d002022201e41386c6a2129200341a9156a210b4100210d202221010340200141046a29020021102001410c6a2d0000210c20012802002127200341a0026a41276a200141346a2213280000360000200341a0026a41206a2001412d6a2215290000370300200341a0026a41186a200141256a2216290000370300200341a0026a41106a2001411d6a2214290000370300200341a0026a41086a200141156a221729000037030020032001410d6a22192900003703a002200341a0156a41276a22282013280000360000200341a0156a41206a22132015290000370300200341a0156a41186a22152016290000370300200341a0156a41106a22162014290000370300200341a0156a41086a22142017290000370300200320192900003703a015200c4102460d02200341900a6a41276a22172028280000360000200341900a6a41206a22192013290300370300200341900a6a41186a2015290300221a370300200341900a6a41106a2016290300222c370300200341900a6a41086a20142903002236370300200320032903a01522383703900a200b2038370000200b41086a2036370000200b41106a202c370000200b41186a201a370000200b41206a2019290300370000200b41276a20172800003600002003200c3a00a815200320103703a015200341d0016a200d20276a200341a0156a10e903200d41016a210d200141386a22012029470d000b0b200341a0156a41276a200341a0026a41276a280000360000200341a0156a41206a200341a0026a41206a290300370300200341a0156a41186a200341a0026a41186a290300370300200341a0156a41106a200341a0026a41106a290300370300200341a0156a41086a200341a0026a41086a290300370300200320032903a0023703a0150b0240201d450d00201d41386c450d00202210310b200341a0156a41086a200341d0016a41086a280200360200200320032903d0013703a015200341a0156a10ea03200320253602ac15200320233602a8152003201f3602a4152003201b3602a015200341a0156a10eb03200320323702a4152003202a3602a015200341a0156a10ec03203342ffffffff0383500d00202010310b0240024020050d00410021150c010b410021164100210c410021154100210b02400340024002402015450d002007200b41f4026c6a21012007200b20166a41f4026c6a210d034002400240200141bc026a2802000d00200c21130c010b41012113200c0d030b200d200141f40210bf09210c200141f4026a2101200c41f4026a210d2013210c2005200b41016a220b4b0d000c040b0b2007200b41f4026c6a2101034002400240200141bc026a2802000d00200c210d0c010b4101210d200c0d020b200141f4026a2101200d210c2005200b41016a220b4b0d000b410021150c030b2001109b022016417f6a2116201541016a21152005200b41016a220b4b0d000b0b024020150d00410021150c010b2007200b20156b41f4026c6a2007200b41f4026c6a2005200b6b41f4026c10c0091a0b200341a0026a41186a220d4200370300200341a0026a41106a22134200370300200341a0026a41086a220c4200370300200342003703a00220034188026a41f3c6c000410610a702200c20034188026a41086a221629000037030020032003290088023703a002200341d0016a41c08fc900410b10a702200f41086a2214200341d0016a41086a2217290000370000200f20032900d001370000200341a0156a200341a0026a10ed0320032903a0152110200341a0156a41106a2219290300211a20032903a815212c200341a0156a41186a22272903002136200341a0156a108d02200520156b212902400240427f427f202c4200201042015122011b2210201a420020011b7c221a201a2010541b22102036420020011b7c221a201a2010541b20032903a815560d00200721012006210b0c010b02402029450d00200541f4026c201541f4026c6b210b2007210103402001109b02200141f4026a2101200b418c7d6a220b0d000b0b4100210b4104210102402006450d00200641f4026c450d00200710310b410021290b2027200341f8006a2903003703002019200341f0006a290300370300200341a0156a41086a200341e8006a290300370300200320032903603703a015200320293602c8012003200b3602c401200320013602c001200d420037030020134200370300200c4200370300200342003703a00220034188026a41a996c700410d10a702200c201629000037030020032003290088023703a002200341d0016a41989ec700410910a70220142017290000370000200f20032900d001370000200341900a6a200341a0026a10e5030240024020032802900a22010d00200341003602e011200342043703d8110c010b200320032902940a3702dc11200320013602d8110b200341a0026a200341a0156a200341c0016a200341d8116a10ee03200341a8026a280200211b200341ac026a280200210120032802a402212b024002400240024020032802a0024101460d002001450d03200341a0026a41186a220a4200370300200341a0026a41106a22164200370300200341a0026a41086a22084200370300200342003703a00220034188026a41a996c700410d10a702200820034188026a41086a221429000037030020032003290088023703a002200341d0016a41849cc700411110a702200f41086a2217200341d0016a41086a2219290000370000200f20032900d001370000200341a0156a200341a0026a10da0320032802a015210b20032902a4152110200a42003703002016420037030020084200370300200342003703a00220034188026a41a996c700410d10a7022008201429000037030020032003290088023703a002200341d0016a41989ec700410910a70220172019290000370000200f20032900d00137000020104200200b1b211a200341a0156a200341a0026a10e503200b4104200b1b212720032802a015220b4104200b1b2107024020032902a4154200200b1b222c422088a722090d00410021150c030b202b20014102746a2106201a422088a7212041002128200341a0156a41186a212a200341a0156a41106a211c200341a0156a41086a211d202b210d41002115410021050340024002402015450d002007200541346c6a21012007200520286a41346c6a210b42022110034002402010a7220c4102470d0002400240200d2006470d004100210c2006210d0c010b200d28020021134101210c200d41046a210d0b2013ad422086200cad8421100b0240200c4101470d0020012802002010422088a7220c460d030b200b2001290200370200200b41306a200141306a280200360200200b41286a200141286a290200370200200b41206a200141206a290200370200200b41186a200141186a290200370200200b41106a200141106a290200370200200b41086a200141086a290200370200200141346a2101200b41346a210b200541016a22052009490d000c050b0b2007200541346c6a21014102210b4202211003400240200b4102470d0002400240200d2006470d004100210b2006210d0c010b200d280200210c4101210b200d41046a210d0b200cad422086200bad8421100b0240200b4101470d0020012802002010422088a7220c460d020b200141346a2101200541016a22052009490d000b410021150c040b02402010a74102470d002006200d41046a200d2006461b210d0b4101210b024020012d00084101470d002001280204211e202a200141216a290000370300201c200141196a290000370300201d200141116a2900003703002003200141096a2900003703a0152001412c6a280200211f2001280200210c4100210b0b0240200c20204f0d002027200c412c6c6a2201201e3602042001200b360200200141086a20032903a015370200200141106a201d290300370200200141186a201c290300370200200141206a202a290300370200200141286a201f3602002028417f6a2128201541016a2115200541016a22052009490d010c030b0b200c202041f8d0c800103f000b2000201b3600242000420037030820004201370300200041286a2001360000200041206a202b3600004100210c200041186a41003a00000240202d202f724101460d000240201841cc016a2802002201450d002001412c6c450d0020182802c80110310b201810310b4100210d0c050b024020150d00410021150c010b2007200520156b41346c6a2007200541346c6a200920056b41346c10c0091a0b200a42003703002016420037030020084200370300200342003703a00220034188026a41a996c700410d10a7022008201429000037030020032003290088023703a002200341d0016a41989ec700410910a70220172019290000370000200f20032900d001370000200920156b220b41346c41046a2201417f4c0d050240024020010d00410121050c010b2001102f2205450d070b200341003602a815200320013602a415200320053602a015200341a0156a200b10cb012007200b200341a0156a10c501200341a0026a412020032802a015220120032802a815109f02024020032802a415450d00200110310b0240202ca72201450d00200141346c450d00200710310b2003201a3702a415200320273602a015200341a0156a10ec030b200341a0026a41186a4200370300200341a0026a41106a4200370300200341a0026a41086a22014200370300200342003703a00220034188026a41b5d8c800410d10a702200120034188026a41086a29000037030020032003290088023703a002200341d0016a41cfd8c800410c10a702200f41086a200341d0016a41086a290000370000200f20032900d001370000200341a0156a200341a0026a412010b20220032802b016210920032903a015211a200341a0026a200341a0156a41086a220141f00010bf091a200341a0156a41186a220b4200370300200341a0156a41106a222a420037030020014200370300200342003703a015200341c0016a419acbc400410310a7022001200341c0016a41086a2205290000370300200320032900c0013703a015200341c0016a41f4cfc400410d10a702200b2005290000370300202a20032900c001370300200341a0026a200341a0156a412010e20220032802a002210c20032902a4022110200b4200370300202a420037030020014200370300200342003703a015200341c0016a419acbc400410310a70220012005290000370300200320032900c0013703a015200341c0016a41bcd0c400411a10a702200b2005290000370300202a20032900c0013703002003200341a0156a412010c00220104200200c1b2133200c4104200c1b21160240024020032802000d002033422088a72107410021150c010b2003280204210d4100211541002101024002402033422088a722070e020201000b410021012007210b03402001200b410176220520016a220c200d2016200c4102746a280200491b2101200b20056b220b41014b0d000b0b20014100200d201620014102746a280200461b21150b0240024020152007490d004100210f4100210b0c010b4200201a20094102461b221a42e4007e42e400802138200341f00d6a2125200341900a6a41186a2126200341e80d6a2131200341a00a6a212e420021104100210f4100210b0340201a2010580d01201620154102746a222828020021130240200b0d0041bc02102f220b450d0841002105200b41003b01ba02200b41003602000b2038201a20107d2010501b2136200b210d2005210a02400340200d41046a2127200d2f01ba02221941027421084100210141682109417f210c02400340024020082001470d002019210c0c020b200d20016a2106200c41016a210c200941686a2109200141046a21010240417f200641046a2802002206201347200620134b1b41016a0e03020001020b0b200d20096b21080c020b0240200a450d00200a417f6a210a200d200c4102746a41bc026a280200210d0c010b0b200341a0026a201310ef03200341a0156a20032802a002220120032802a80210f0030240024020032802a815220a0d0041e000102f220a450d0a4200213241082119420021390c010b20032903a015223242808080807083213920032802ac1521190b024020032802a402450d00200110310b200341a0156a201310f103200341a0026a20032802a015220820032802a81510bf0220032802a002410146210120032802a402210920032802a8022106024020032802a415450d00200810310b2009410020011b211f2006410020011b21202039203242ffffffff0f8384213a0240024002400240024002400240024002400240024002400240024002400240200d2f01ba022201410a4b0d00200141016a21092027200c4102746a2106200c2001490d0120062013360200200d41306a21060c020b410021224104210102400240200c41054f0d00200c21090c010b410521014105210902400240200c417b6a0e020201000b200c41796a210941012122410621010c010b41002109410121220b41bc02102f220c450d17200c41003b01ba02200c4100360200200c200d2f01ba0222082001417f736a22063b01ba022006410c4f0d052008200141016a22216b2006470d06200d41306a2223200141186c6a22082902102132200828020c211d2008280208211e20082902002139202720014102746a280200211c200c41046a202720214102746a200641027410bf091a200c41306a2023202141186c6a200641186c10bf091a200d20013b01ba02200c200d20221b220141046a222220094102746a210620012f01ba02220841016a212702400240200941016a222120084d0d0020062013360200200141306a21060c010b202220214102746a200620272009417f736a41027410c0091a20062013360200200141306a2206202141186c6a2006200941186c6a200820096b41186c10c0091a0b2006200941186c6a220820203602142008201f3602102008201936020c2008200a3602082008203a370200200120273b01ba02200d28020022190d02410021200c030b2027200c41016a22084102746a20062009200c417f736a41027410c0091a20062013360200200d41306a2206200841186c6a2006200c41186c6a2001200c6b41186c10c0091a0b2006200c41186c6a220820203602142008201f3602102008201936020c2008200a3602082008203a370200200d20093b01ba020c0c0b410021202032213a201c2122200c21210340200d2f01b802210620192f01ba02221f410b490d024100212741042101024020064105490d0020062101024002402006417b6a0e020201000b200641796a210641012127410621010c010b4100210641012127410521010b41ec02102f220c450d15200c41003b01ba02200c4100360200200c20192f01ba0222092001417f736a220d3b01ba02200d410c4f0d052009200141016a220a6b200d470d06201941306a2223200141186c6a22092902102132200928020c2114200928020821172009290200212c201941046a220920014102746a280200211c200c41046a2009200a41027422246a200d41027410bf091a200c41306a2023200a41186c6a200d41186c10bf091a201920013b01ba02200c2f01ba02220d41016a2109200d410c4f0d07201f20016b22012009470d08202041016a2120200c41bc026a201920246a41bc026a200141027410bf091a4100210102400340200c20014102746a41bc026a280200220920013b01b8022009200c36020020012001200d4922096a2201200d4b0d0120090d000b0b200c201920271b220941046a221f200641027422236a210d20092f01ba02222741016a210a02400240200641016a220120274d0d00200d2022360200200941306a210d0c010b201f20014102746a200d2006417f73200a6a41027410c0091a200d2022360200200941306a220d200141186c6a200d200641186c6a202720066b41186c10c0091a0b200d200641186c6a220d203a370210200d201d36020c200d201e360208200d2039370200200941bc026a210d0240200641026a221d202741026a22274f0d00200d201d4102746a200d20014102746a2001417f7320276a41027410c0091a0b200d20014102746a20213602002009200a3b01ba020240200120274f0d00200920236a41c0026a210103402001280200220d200641016a22063b01b802200d2009360200200141046a2101200a2006470d000b0b2019210d202c21392017211e2014211d2032213a201928020022012119201c2122200c212120010d000b0b200b450d0741ec02102f2201450d132001200b3602bc02200141003b01ba0220014100360200200b41003b01b802200b200136020020052020470d0820012f01ba02220b410b4f0d09200541016a21052001200b41016a22093b01ba022001200b41186c6a220d41c0006a2032370200200d413c6a201d360200200d41386a201e360200200d41306a20393702002001200b4102746a41046a201c360200200141bc026a20094102746a200c360200200c20093b01b802200c2001360200200f41016a210f2001210b0c0b0b201941046a210c201f41016a210d02400240201f20064b0d00200c20064102746a2022360200200641016a2101201941306a210c0c010b200c200641016a22014102746a200c20064102746a220c2006417f73200d6a41027410c0091a200c2022360200201941306a220c200641186c6a220941186a2009201f20066b41186c10c0091a0b200c200641186c6a220c203a370210200c201d36020c200c201e360208200c2039370200201941bc026a210c201f41026a21090240201f20064d0d002006410274200c6a41086a200c20014102746a2001417f7320096a41027410c0091a0b200c200141027422066a20213602002019200d3b01ba02200120094f0d09201920066a41bc026a210c0340200c280200220d20013b01b802200d2019360200200c41046a210c2009200141016a2201470d000c0a0b0b2006410b419c90ca001058000b41ac90ca00412841d490ca00103c000b200d410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2009410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b200f41016a210f0b0240024002400240024002400240024002402008280200220c200841046a2802002209470d000c010b20082008410c6a280200417f6a200c41016a71220a3602002008280208200c410c6c6a220c280204210d200c28020022010d01200a210c0b4100210641002101200c2009470d040c010b200c280208210c20082008280210417f6a36021020082008280214200c6b3602142003200c3602d401200320013602d0010240024002400240200c0d002003410b3a00a0020c010b20012d000021062003200c417f6a3602d4012003200141016a3602d001024020060d00200341a0156a200341d0016a10c401024020032d00a015410b470d002003410b3a00a0020c020b200341a0026a200341a0156a41e00710bf091a20032d00a002410b460d01200320133602e411200341013a00e011200342013703d811200341a0156a200341a0026a41e00710bf091a200341900a6a200341d8116a200341a0156a203610ae030240024020032802900a0e03040001040b4201213620032903980a213220032802a00a410b470d04202610ad01202510a3010c040b20032802980a220c411147ad213642002132200c410b470d03202e10ad01203110a3010c030b2003410b3a00a0020b41002802809a4a450d0741002802fc994a210c41002802f8994a210941002802849a4a2106200341e0156a41d200360200200341d8156a42bd80808010370300200341d4156a41e583c400360200200341cc156a4220370200200341c8156a41c583c400360200200341c0156a4200370300200341bc156a41f8fac900360200200341b0156a4201370300200341a8156a4111360200200341b0dac4003602ac15200341b8dac4003602a415200341013602a015200941f8fac900200641024622061b200341a0156a200c4180a6c00020061b28021011030020032d00a002410b470d030c070b4201213620032903980a21320b2036500d05203220107c21100240200d450d002001103141012106200a2009460d010c040b4100210d41012106200a2009470d030b024020070d00410021070c040b200720154d0d012028202841046a20072015417f736a41027410c0091a201541002007417f6a220720154b1b21150c030b200341a0026a10f2030c030b201520071049000b024020070d00410021070c010b201541016a20077021150b024020060d002001450d00200d450d00200110310b200720154b0d010c020b0b200d450d00200110310b2033a7210102400240200720154b0d00200341b8156a4200370300200341b0156a4200370300200341a0156a41086a220c4200370300200342003703a015200341c0016a419acbc400410310a702200c200341c0016a41086a220d290000370300200320032900c0013703a015200341c0016a41bcd0c400411a10a702202a41086a200d290000370000202a20032900c001370000200341a0156a412010bd020c010b201620154102746a280200210c200341f0116a4200370300200341e8116a4200370300200341d8116a41086a220d4200370300200342003703d811200341c0016a419acbc400410310a702200d200341c0016a41086a2209290000370300200320032900c0013703d811200341c0016a41bcd0c400411a10a702200e41086a2009290000370000200e20032900c0013700002003200c3602a015200341d8116a4120200341a0156a4104109f020b200320073602a802200320163602a002200320013602a402200341b8156a4200370300200341b0156a4200370300200341a0156a41086a220c4200370300200342003703a015200341c0016a419acbc400410310a702200c200341c0016a41086a220d290000370300200320032900c0013703a015200341c0016a41f4cfc400410d10a702202a41086a200d290000370000202a20032900c001370000200341203602940a2003200341a0156a3602900a200341a0026a200341900a6a10f3030240200141ffffffff0371450d00201610310b0240200b450d00200b210102400240024002400340024020050d000240200f450d00200f417f6a21134100210c4101210502400340200c20012f01ba02490d012001280200220b450d0520012f01b802210c200110312005417f6a2105200b21010c000b0b200c41016a210b2001200c41186c6a220d41c4006a2802002116200d41c0006a280200210e200d413c6a2802002108200d41386a2802002109200d41306a29020021102001200c4102746a41046a2802002107024020054101460d002001200b4102746a41bc026a280200210102402005450d000340200541016a220b20054f210c20012802bc022101200b2105200c0d000b0b4100210b0b02402009450d000340024002402010422088a7220d2010a72215470d00200341a0156a200710ef0320032802a015220520032802a81510bd02024020032802a415450d00200510310b200341a0156a200710f10320032802a015220520032802a81510bd02024020032802a415450d00200510310b20082015490d082008450d012008410c6c450d01200910310c010b200341a0026a200710ef032008417f6a2206200d20156b71220c410c6c41046a2205417f4c0d0f20032802a802211920032802a002210a0240024020050d00410121270c010b2005102f2227450d110b200341003602a815200320053602a415200320273602a015200341a0156a200c10cb0120152105034020092005410c6c6a220c280200200c280208200341a0156a10ce01200541016a2006712205200d470d000b200a201920032802a015220520032802a815109f02024020032802a415450d00200510310b024020032802a402450d00200a10310b02400240200d2015490d0002402008200d490d00200d21054100210d0c020b200d200841c0cfc8001058000b2008210520082015490d090b024020052015460d002005410c6c2015410c6c22056b210c200920056a210503400240200541046a280200450d00200528020010310b2005410c6a2105200c41746a220c0d000b0b0240200d450d00200d410c6c210c2009210503400240200541046a280200450d00200528020010310b2005410c6a2105200c41746a220c0d000b0b02402008450d002008410c6c450d00200910310b200341a0026a200710f10320032802a802210c20032802a00221054108102f220d450d10200342083702a4152003200d3602a0152003200e3602900a200341a0156a200341900a6a4104107e200320163602900a200341a0156a200341900a6a4104107e2005200c20032802a015220d20032802a815109f02024020032802a415450d00200d10310b20032802a402450d00200510310b2013450d022013417f6a211341012105024002400340200b20012f01ba02490d0102402001280200220c0d0020011031410021010c030b20012f01b802210b200110312005417f6a2105200c21010c000b0b200b41016a210d2001200b41186c6a220c41c4006a2802002116200c41c0006a280200210e200c413c6a2802002108200c41386a2802002109200c41306a29020021102001200b4102746a41046a2802002107024020054101470d00200d210b0c010b2001200d4102746a41bc026a280200210102402005450d000340200541016a220b20054f210c20012802bc022101200b2105200c0d000b0b4100210b0b20090d000b0b2013450d0003402013417f6a211341012105024002400340200b20012f01ba02490d0102402001280200220c0d0020011031410021010c030b20012f01b802210b200110312005417f6a2105200c21010c000b0b200b41016a210c2001200b41186c6a220b413c6a2802002114200b41386a2802002117200b41306a290200212c024020054101470d00200c210b0c010b2001200c4102746a41bc026a280200210102402005450d000340200541016a220b20054f210c20012802bc022101200b2105200c0d000b0b4100210b0b2017450d0802400240202c422088a7220d202ca72205490d0002402014200d490d00200d210c4100210d0c020b200d201441c0cfc8001058000b2014210c20142005490d080b0240200c2005460d00200c410c6c2005410c6c22056b210c201720056a210503400240200541046a280200450d00200528020010310b2005410c6a2105200c41746a220c0d000b0b0240200d450d00200d410c6c210c2017210503400240200541046a280200450d00200528020010310b2005410c6a2105200c41746a220c0d000b0b02402014450d002014410c6c450d00201710310b20130d000b0b03402001280200210b20011031200b2101200b0d000c070b0b2005417f6a2105200b200b2f01ba024102746a41bc026a280200210b20012802bc0221010c000b0b2001103100000b2015200841c0cfc8001058000b41facdc800412341d0cfc800103c000b41facdc800412341d0cfc800103c000b200341a0156a41186a22014200370300200341a0156a41106a220b4200370300200341a0156a41086a22054200370300200342003703a015200341a0026a41e6d4c100410c10a7022005200341a0026a41086a220c290000370300200320032900a0023703a015200341a0026a41ccd5c100410810a7022001200c290000370300200b20032900a002370300200341a0156a412041f8fac9004100109f02200041186a41003a0000200041106a2029ad42a08d067e4280e59af7007c37030020004201370308200042003703000240201b41ffffffff0371450d00202b10310b0240202d202f720d000240201841cc016a2802002201450d002001412c6c450d0020182802c80110310b201810310b200328023421000240200341306a410c6a2802002201450d00200141246c210b2000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a2101200b415c6a220b0d000b0b0240200341386a2802002203450d00200341246c450d00200010310b200228021821000240200241206a2802002203450d00200341306c2101200041086a2103034002402003280200220b450d00200b41c8006c450d002003417c6a28020010310b200341306a2103200141506a22010d000b0b2002411c6a2802002203450d03200341306c450d0320001031200424000f0b200c280200220c20174f0d00200341023602a015202a200c412c6c6a2201290200211020032903b815211a20032903b015212c20032903a8152136200120032903a0153702002001290208213820012036370208200129021021362001202c370210200141186a220b290200212c200b201a370200200320363703b002200320383703a802200320103703a0022003202c3703b802024002402010a7417f6a0e020101000b200141206a280200210b200141246a280200210c200141286a28020021012010422088a72119200341d0016a41106a2227201c41106a2902003703002021201c41086a2902003703002003201c2902003703d001024020160d00200341900a6a41106a22162027290300370300200341900a6a41086a22272021290300370300200320032903d0013703900a201d4200370300201e4200370300202b4200370300200342003703d811200341c0016a41a996c700410d10a702202b201b290000370300200320032900c0013703d811200341c0016a41b09bc700410f10a702201f201b290000370000200e20032900c001370000200341a0156a200341d8116a10e6030240024020032802a01522230d0020034104360288024100212341002124410021250c010b200320233602880220032802a415212320032802a815212420032802ac1521250b200320253602940220032024360290022003202336028c02202220032903900a370200202241086a2027290300370200202241106a2016290300370200200320193602a015200320013602c4152003200c3602c0152003200b3602bc1520034188026a200341a0156a2031109d012026200329039002370300200320032903880222103703a015201d4200370300201e4200370300202b4200370300200342003703d811200341c0016a41a996c700410d10a702202b201b290000370300200320032900c0013703d811200341c0016a41b09bc700410f10a702201f201b290000370000200e20032900c00137000002402010a722010d00200341d8116a412010bd020c020b200341003602c801200342013703c001200341a0156a200341c0016a10f403200320032802ac1536029c02200341c0016a2003419c026a4104107e200341d8116a412020032802c001220b20032802c801109f02024020032802c401450d00200b10310b20032802a415220b450d01200b412c6c450d01200110310c010b201d4200370300201e4200370300202b4200370300200342003703d811200341c0016a41a996c700410d10a702202b201b290000370300200320032900c0013703d811200341c0016a41809dc700411410a702201f201b290000370000200e20032900c001370000200341a0156a200341d8116a412010e20220032802a0152201410420011b2127024002400240024020032902a415420020011b2210422088a722230e020300010b4100210120192027280200470d020c010b410021012023210b03402001200b410176220c20016a22162019202720164102746a280200491b2101200b200c6b220b41014b0d000b2019202720014102746a280200470d0120012023490d00200120231049000b202720014102746a220b200b41046a2001417f7320236a41027410c0091a20104280808080707c21100b200320273602a015200320103702a415201d4200370300201e4200370300202b4200370300200342003703d811200341c0016a41a996c700410d10a702202b201b290000370300200320032900c0013703d811200341c0016a41809dc700411410a702201f201b290000370000200e20032900c001370000200341203602940a2003200341d8116a3602900a200341a0156a200341900a6a10e302201042ffffffff0383500d00202710310b2015210b201321010c000b0b200328023421000240200341306a410c6a2802002201450d00200141246c210b2000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a2101200b415c6a220b0d000b0b0240200341386a2802002203450d00200341246c450d00200010310b0240200c450d0002402005450d00200541f4026c21012007210303402003109b02200341f4026a21032001418c7d6a22010d000b0b2006450d00200641f4026c450d00200710310b0240200d450d0002402008450d00200841d0006c210b200a21030340200328020021010240200341086a22002802002205450d00200110310b2003200136020020002005360200200341d0006a2103200b41b07f6a220b0d000b0b2009450d00200941d0006c450d00200a10310b200228021821000240200241206a2802002203450d00200341306c2101200041086a2103034002402003280200220b450d00200b41c8006c450d002003417c6a28020010310b200341306a2103200141506a22010d000b0b2002411c6a2802002203450d00200341306c450d00200010310b200424000f0b103b000b1039000b9413011a7f23004190066b22012400200141c8056a41186a22024200370300200141c8056a41106a22034200370300200141c8056a41086a22044200370300200142003703c805200141e0016a41b490c700410b10a7022004200141e0016a41086a2205290000370300200120012900e0013703c805200141e0016a41c892c700411310a70220022005290000370300200320012900e0013703002001200141c8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141c8056a200141b8036a41c40010bf091a200141f0026a41086a220820014188046a290300370300200141f0026a41106a220920014190046a290300370300200141f0026a41186a220a20014198046a290300370300200141f0026a41206a220b200141a0046a290300370300200141f0026a41286a220c200141a8046a290300370300200141f0026a41306a220d200141b0046a29030037030020012001290380043703f002200141d0046a280200210e200141d4046a280200210f200141d8046a2802002110200141dc046a2802002111200141e0046a2802002112200141e4046a2802002113200141e8046a280200211420012802fc03210420012802b804211520012802bc04211620012802c004211720012802c404211820012802cc04211920012802c80421022005200141f4046a2902003703002001200141ec046a2902003703e001200141fc046a280200211a024020024102460d00200141d0006a200141c8056a41c40010bf091a200141186a41306a200d290300370300200141186a41286a200c290300370300200141186a41206a200b290300370300200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903f002370318200120012903e0013703080b0240200128029405450d00200710310b200141f0026a200141d0006a41c40010bf091a200141b8026a41306a2205200141186a41306a290300370300200141b8026a41286a2207200141186a41286a290300370300200141b8026a41206a2208200141186a41206a290300370300200141b8026a41186a2209200141186a41186a290300370300200141b8026a41106a220a200141186a41106a290300370300200141b8026a41086a220b200141186a41086a290300370300200141a8026a41086a220c200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c8056a41186a4200370300200141c8056a41106a4200370300200141c8056a41086a22024200370300200142003703c805200141e0016a41b5d8c800410d10a7022002200141e0016a41086a2205290000370300200120012900e0013703c805200141e0016a41cfd8c800410c10a702200341086a2005290000370000200320012900e001370000200141b8036a200141c8056a412010b20220012802c8042102200141c8056a200141b8036a41c40010bf091a20014190056a41086a20014188046a29030037030020014190056a41106a20014190046a29030037030020014190056a41186a20014198046a29030037030020014190056a41206a200141a0046a29030037030020014190056a41286a200141a8046a29030037030020014190056a41306a200141b0046a290300370300200120012903800437039005200141d0046a280200210e200141d4046a280200210f200141d8046a2802002110200141dc046a2802002111200141e0046a2802002112200141e4046a2802002113200141e8046a280200211420012802fc03210420012802b804211520012802bc04211620012802c004211720012802c404211820012802cc04211920014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200211a024020024102470d0041002104200141e0016a410041c40010c1091a200141d8016a4200370300200141d0016a4200370300200141c8016a4200370300200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106211041e40021114102211241c8012113410121144100210e41002102410021184101211741012116410121150c020b200141e0016a200141c8056a41c40010bf091a200141a8016a41306a20014190056a41306a290300370300200141a8016a41286a20014190056a41286a290300370300200141a8016a41206a20014190056a41206a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141e0016a200141f0026a41c40010bf091a200141a8016a41306a2005290300370300200141a8016a41286a2007290300370300200141a8016a41206a2008290300370300200141a8016a41186a2009290300370300200141a8016a41106a200a290300370300200141a8016a41086a200b29030037030020014198016a41086a200c290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141e0016a41c40010bf091a200141d4046a200f360200200141cc046a201936020020014188046a200141a8016a41086a29030037030020014190046a200141b8016a29030037030020014198046a200141c0016a290300370300200141a0046a200141c8016a290300370300200141a8046a200141d0016a290300370300200141b0046a200141d8016a290300370300200120003602fc03200120143602e804200120133602e404200120123602e004200120113602dc04200120103602d8042001200e3602d004200120023602c804200120183602c404200120173602c004200120163602bc04200120153602b804200120012903a80137038004200141f4046a20014198016a41086a2903003702002001201a3602fc0420012001290398013702ec04200141f0026a2006108c0920012802f802210520012802f0022102200141003602d005200142013703c805200141b8036a200141c8056a1080092002200520012802c80520012802d005109f02024020012802cc05450d0020012802c80510310b20012802f402450d00200210310b20014190066a24000b9c13011a7f23004190066b22012400200141c8056a41186a22024200370300200141c8056a41106a22034200370300200141c8056a41086a22044200370300200142003703c805200141e0016a41b490c700410b10a7022004200141e0016a41086a2205290000370300200120012900e0013703c805200141e0016a41c892c700411310a70220022005290000370300200320012900e0013703002001200141c8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141c8056a200141b8036a41c80010bf091a200141f0026a41086a22082001418c046a290200370300200141f0026a41106a220920014194046a290200370300200141f0026a41186a220a2001419c046a290200370300200141f0026a41206a220b200141a4046a290200370300200141f0026a41286a220c200141ac046a290200370300200141f0026a41306a220d200141b4046a28020036020020012001290284043703f002200141d0046a280200210e200141d4046a280200210f200141d8046a2802002110200141dc046a2802002111200141e0046a2802002112200141e4046a2802002113200141e8046a2802002114200128028004210420012802b804211520012802bc04211620012802c004211720012802c404211820012802cc04211920012802c80421022005200141f4046a2902003703002001200141ec046a2902003703e001200141fc046a280200211a024020024102460d00200141d0006a200141c8056a41c80010bf091a200141186a41306a200d280200360200200141186a41286a200c290300370300200141186a41206a200b290300370300200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903f002370318200120012903e0013703080b0240200128029405450d00200710310b200141f0026a200141d0006a41c80010bf091a200141b8026a41306a2205200141186a41306a280200360200200141b8026a41286a2207200141186a41286a290300370300200141b8026a41206a2208200141186a41206a290300370300200141b8026a41186a2209200141186a41186a290300370300200141b8026a41106a220a200141186a41106a290300370300200141b8026a41086a220b200141186a41086a290300370300200141a8026a41086a220c200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c8056a41186a4200370300200141c8056a41106a4200370300200141c8056a41086a22024200370300200142003703c805200141e0016a41b5d8c800410d10a7022002200141e0016a41086a2205290000370300200120012900e0013703c805200141e0016a41cfd8c800410c10a702200341086a2005290000370000200320012900e001370000200141b8036a200141c8056a412010b20220012802c8042102200141c8056a200141b8036a41c80010bf091a20014190056a41086a2001418c046a29020037030020014190056a41106a20014194046a29020037030041e400211120014190056a41186a200141b8036a41e4006a29020037030020014190056a41206a200141a4046a29020037030020014190056a41286a200141ac046a29020037030020014190056a41306a200141b4046a280200360200200120012902840437039005200141d0046a280200210e200141d4046a280200210f200141d8046a2802002110200141dc046a2802002105200141e0046a2802002112200141e4046a2802002113200141e8046a2802002114200128028004210420012802b804211520012802bc04211620012802c004211720012802c404211820012802cc04211920014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200211a024020024102470d0041002104200141e0016a410041c80010c1091a200141d8016a4100360200200141d0016a4200370300200141c8016a4200370300200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a8012001420037039801410621104102211241c8012113410121144100210e41002102410021184101211741012116410121150c020b200141e0016a200141c8056a41c80010bf091a200141a8016a41306a20014190056a41306a280200360200200141a8016a41286a20014190056a41286a290300370300200141a8016a41206a20014190056a41206a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a801200120012903800537039801200521110c010b200141e0016a200141f0026a41c80010bf091a200141a8016a41306a2005280200360200200141a8016a41286a2007290300370300200141a8016a41206a2008290300370300200141a8016a41186a2009290300370300200141a8016a41106a200a290300370300200141a8016a41086a200b29030037030020014198016a41086a200c290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141e0016a41c80010bf091a200141d4046a200f360200200141cc046a20193602002001418c046a200141a8016a41086a29030037020020014194046a200141b8016a2903003702002001419c046a200141c0016a290300370200200141a4046a200141c8016a290300370200200141ac046a200141d0016a290300370200200141b4046a200141d8016a2802003602002001200036028004200120143602e804200120133602e404200120123602e004200120113602dc04200120103602d8042001200e3602d004200120023602c804200120183602c404200120173602c004200120163602bc04200120153602b804200120012903a80137028404200141f4046a20014198016a41086a2903003702002001201a3602fc0420012001290398013702ec04200141f0026a2006108c0920012802f802210520012802f0022102200141003602d005200142013703c805200141b8036a200141c8056a1080092002200520012802c80520012802d005109f02024020012802cc05450d0020012802c80510310b20012802f402450d00200210310b20014190066a24000ba50b03137f017e017f230041f0056b2201240020014190056a2202420037030020014188056a22034200370300200141f8046a41086a22044200370300200142003703f804200141a0016a41b490c700410b10a7022004200141a0016a41086a2205290000370300200120012900a0013703f804200141a0016a41c892c700411310a70220022005290000370300200320012900a0013703002001200141f8046a412010c002200141a0016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141a0036a20012802a001220720012802a80110b202200141f8046a200141a0036a41f40010bf091a200141a8026a41086a2208200141dc046a2902003703002001200141d4046a2902003703a802200141d0046a2802002105200141cc046a2802002109200141c8046a280200210a200141c4046a280200210b200141c0046a280200210c200141bc046a280200210d200141b8046a280200210e20012802b404210f20012802ac04211020012802a804211120012802a404211220012802a004211320012903980421142001280294042104200141e4046a2802002115024020012802b00422024102460d00200141186a200141f8046a41f40010bf091a200141086a41086a2008290300370300200120012903a8023703080b024020012802a401450d00200710310b200141a8026a200141186a41f40010bf091a20014198026a41086a2207200141086a41086a29030037030020012001290308370398020240024020024102470d004200211420014190056a420037030020014188056a4200370300200141f8046a41086a22024200370300200142003703f804200141a0016a41b5d8c800410d10a7022002200141a0016a41086a2204290000370300200120012900a0013703f804200141a0016a41cfd8c800410c10a702200341086a2004290000370000200320012900a001370000200141a0036a200141f8046a412010b20220012802b0042102200141f8046a200141a0036a41f40010bf091a200141e8046a41086a200141dc046a2902003703002001200141d4046a2902003703e804200141bc046a280200210d20012802b404210f200141e4046a2802002115024020024102470d0041002104200141a0016a410041f40010c1091a20014198016a420037030020014200370390014106210c41e400210b4102210a41c8012109410121054100210e41002102410021104101211141012112410121130c020b200141d0046a2802002105200141cc046a2802002109200141c8046a280200210a200141c4046a280200210b200141c0046a280200210c200141b8046a280200210e20012802ac04211020012802a804211120012802a404211220012802a004211320012903980421142001280294042104200141a0016a200141f8046a41f40010bf091a20014190016a41086a200141e8046a41086a290300370300200120012903e804370390010c010b200141a0016a200141a8026a41f40010bf091a20014190016a41086a20072903003703002001200129039802370390010b024020042000460d00200141a0036a200141a0016a41f40010bf091a200141bc046a200d360200200141b4046a200f360200200141dc046a20014198016a290300370200200120053602d004200120093602cc042001200a3602c8042001200b3602c4042001200c3602c0042001200e3602b804200120023602b004200120103602ac04200120113602a804200120123602a404200120133602a0042001201437039804200120003602940420012001290390013702d404200120153602e404200141a8026a2006108c0920012802b002210320012802a80221022001410036028005200142013703f804200141a0036a200141f8046a1080092002200320012802f804200128028005109f02024020012802fc04450d0020012802f80410310b20012802ac02450d00200210310b200141f0056a24000b8f1101187f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141e8056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802e805220720012802f00510b202200141b8026a41086a2208200141b8036a41086a290300370300200141b8026a41106a2209200141b8036a41106a290300370300200141b8026a41186a220a200141b8036a41186a290300370300200141b8026a41206a220b200141b8036a41206a290300370300200120012903b8033703b80220012802e003210420014190056a200141e4036a41d40010bf091a2005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a280200210c200141e8046a280200210d200141e4046a280200210e200141e0046a280200210f200141dc046a2802002110200141d8046a2802002111200141d4046a2802002112200141d0046a280200211320012802cc04211420012802c404211520012802c004211620012802bc04211720012802b8042118024020012802c80422024102460d00200141f0006a41206a200b290300370300200141f0006a41186a200a290300370300200141f0006a41106a2009290300370300200141f0006a41086a2008290300370300200120012903b8023703702001411c6a20014190056a41d40010bf091a200141086a41086a2005290300370300200120012903a8013703080b024020012802ec05450d00200710310b20014190036a41086a2205200141f0006a41086a29030037030020014190036a41106a2207200141f0006a41106a29030037030020014190036a41186a2208200141f0006a41186a29030037030020014190036a41206a2209200141f0006a41206a2903003703002001200129037037039003200141b8026a2001411c6a41d40010bf091a200141a8026a41086a220a200141086a41086a290300370300200120012903083703a8020240024020024102470d0020014190056a41186a420037030020014190056a41106a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2005290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042102200141e8056a41086a200141b8036a41086a290300370300200141e8056a41106a200141b8036a41106a290300370300200141e8056a41186a200141b8036a41186a290300370300200141e8056a41206a200141b8036a41206a290300370300200120012903b8033703e80520012802e003210420014190056a200141e4036a41d40010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210c200141d4046a280200211220012802cc042114024020024102470d00200141a0026a420037030020014198026a420037030020014190026a420037030020014180026a41086a4200370300200142003703800241002104200141a8016a410041d40010c1091a20014198016a41086a420037030020014200370398014106211141e40021104102210f41c801210e4101210d4100211341002102410021154101211641012117410121180c020b200141e8046a280200210d200141e4046a280200210e200141e0046a280200210f200141dc046a2802002110200141d8046a2802002111200141d0046a280200211320012802c404211520012802c004211620012802bc04211720012802b804211820014180026a41206a200141e8056a41206a29030037030020014180026a41186a200141e8056a41186a29030037030020014180026a41106a200141e8056a41106a29030037030020014180026a41086a200141e8056a41086a290300370300200120012903e80537038002200141a8016a20014190056a41d40010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b20014180026a41206a200929030037030020014180026a41186a200829030037030020014180026a41106a200729030037030020014180026a41086a2005290300370300200120012903900337038002200141a8016a200141b8026a41d40010bf091a20014198016a41086a200a290300370300200120012903a802370398010b024020042000460d00200141b8036a41206a20014180026a41206a290300370300200141b8036a41186a20014180026a41186a290300370300200141b8036a41106a20014180026a41106a290300370300200141b8036a41086a20014180026a41086a29030037030020012001290380023703b803200120003602e003200141e4036a200141a8016a41d40010bf091a200141d4046a2012360200200141cc046a2014360200200141f4046a20014198016a41086a2903003702002001200d3602e8042001200e3602e4042001200f3602e004200120103602dc04200120113602d804200120133602d004200120023602c804200120153602c404200120163602c004200120173602bc04200120183602b8042001200c3602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210520012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022005200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000bf91101197f23004190066b22012400200141c0056a41186a22024200370300200141c0056a41106a22034200370300200141c0056a41086a22044200370300200142003703c005200141d8016a41b490c700410b10a7022004200141d8016a41086a2205290000370300200120012900d8013703c005200141d8016a41c892c700411310a70220022005290000370300200320012900d8013703002001200141c0056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141c0056a200141b8036a41cc0010bf091a200141e8026a41086a220820014190046a290300370300200141e8026a41106a220920014198046a290300370300200141e8026a41186a220a200141a0046a290300370300200141e8026a41206a220b200141a8046a290300370300200141e8026a41286a220c200141b0046a29030037030020012001290388043703e802200141d0046a280200210d200141d4046a280200210e200141d8046a280200210f200141dc046a2802002110200141e0046a2802002111200141e4046a2802002112200141e8046a2802002113200128028404210420012802b804211420012802bc04211520012802c004211620012802c404211720012802cc04211820012802c80421022005200141f4046a2902003703002001200141ec046a2902003703d801200141fc046a2802002119024020024102460d00200141c8006a200141c0056a41cc0010bf091a200141186a41286a200c290300370300200141186a41206a200b290300370300200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903e802370318200120012903d8013703080b0240200128029405450d00200710310b200141e8026a200141c8006a41cc0010bf091a200141b8026a41286a2205200141186a41286a290300370300200141b8026a41206a2207200141186a41206a290300370300200141b8026a41186a2208200141186a41186a290300370300200141b8026a41106a2209200141186a41106a290300370300200141b8026a41086a220a200141186a41086a290300370300200141a8026a41086a220b200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c0056a41186a4200370300200141c0056a41106a4200370300200141c0056a41086a22024200370300200142003703c005200141d8016a41b5d8c800410d10a7022002200141d8016a41086a2205290000370300200120012900d8013703c005200141d8016a41cfd8c800410c10a702200341086a2005290000370000200320012900d801370000200141b8036a200141c0056a412010b20220012802c8042102200141c0056a200141b8036a41cc0010bf091a20014190056a41086a20014190046a29030037030020014190056a41106a20014198046a29030037030020014190056a41186a200141a0046a29030037030020014190056a41206a200141a8046a29030037030020014190056a41286a200141b0046a290300370300200120012903880437039005200141d0046a280200210d200141d4046a280200210e200141d8046a280200210f200141dc046a2802002110200141e0046a2802002111200141e4046a2802002112200141e8046a2802002113200128028404210420012802b804211420012802bc04211520012802c004211620012802c404211720012802cc04211820014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002119024020024102470d0041002104200141d8016a410041cc0010c1091a200141d0016a4200370300200141c8016a4200370300200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210f41e40021104102211141c8012112410121134100210d41002102410021174101211641012115410121140c020b200141d8016a200141c0056a41cc0010bf091a200141a8016a41286a20014190056a41286a290300370300200141a8016a41206a20014190056a41206a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141d8016a200141e8026a41cc0010bf091a200141a8016a41286a2005290300370300200141a8016a41206a2007290300370300200141a8016a41186a2008290300370300200141a8016a41106a2009290300370300200141a8016a41086a200a29030037030020014198016a41086a200b290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141d8016a41cc0010bf091a200141d4046a200e360200200141cc046a201836020020014190046a200141a8016a41086a29030037030020014198046a200141b8016a290300370300200141a0046a200141c0016a290300370300200141a8046a200141c8016a290300370300200141b0046a200141d0016a2903003703002001200036028404200120133602e804200120123602e404200120113602e004200120103602dc042001200f3602d8042001200d3602d004200120023602c804200120173602c404200120163602c004200120153602bc04200120143602b804200120012903a80137038804200141f4046a20014198016a41086a290300370200200120193602fc0420012001290398013702ec04200141e8026a2006108c0920012802f002210520012802e8022102200141003602c805200142013703c005200141b8036a200141c0056a1080092002200520012802c00520012802c805109f02024020012802c405450d0020012802c00510310b20012802ec02450d00200210310b20014190066a24000bb81201197f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141e0056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802e005220720012802e80510b202200141b8026a41086a2208200141b8036a41086a290300370300200141b8026a41106a2209200141b8036a41106a290300370300200141b8026a41186a220a200141b8036a41186a290300370300200141b8026a41206a220b200141b8036a41206a290300370300200141b8026a41286a220c200141b8036a41286a280200360200200120012903b8033703b80220012802e403210420014190056a200141e8036a41d00010bf091a2005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a280200210d200141e8046a280200210e200141e4046a280200210f200141e0046a2802002110200141dc046a2802002111200141d8046a2802002112200141d4046a2802002113200141d0046a280200211420012802cc04211520012802c404211620012802c004211720012802bc04211820012802b8042119024020012802c80422024102460d00200141e8006a41286a200c280200360200200141e8006a41206a200b290300370300200141e8006a41186a200a290300370300200141e8006a41106a2009290300370300200141e8006a41086a2008290300370300200120012903b802370368200141186a20014190056a41d00010bf091a200141086a41086a2005290300370300200120012903a8013703080b024020012802e405450d00200710310b20014188036a41086a2205200141e8006a41086a29030037030020014188036a41106a2207200141e8006a41106a29030037030020014188036a41186a2208200141e8006a41186a29030037030020014188036a41206a2209200141e8006a41206a29030037030020014188036a41286a220a200141e8006a41286a2802003602002001200129036837038803200141b8026a200141186a41d00010bf091a200141a8026a41086a220b200141086a41086a290300370300200120012903083703a8020240024020024102470d0020014190056a41186a420037030020014190056a41106a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2005290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042102200141e0056a41086a200141b8036a41086a290300370300200141e0056a41106a200141b8036a41106a290300370300200141e0056a41186a200141b8036a41186a290300370300200141e0056a41206a200141b8036a41206a290300370300200141e0056a41286a200141b8036a41286a280200360200200120012903b8033703e00520012802e403210420014190056a200141e8036a41d00010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210d200141d4046a280200211320012802cc042115024020024102470d0041002104200141a0026a410036020020014198026a420037030020014190026a420037030020014188026a4200370300200141f8016a41086a4200370300200142003703f801200141a8016a410041d00010c1091a20014198016a41086a420037030020014200370398014106211241e40021114102211041c801210f4101210e4100211441002102410021164101211741012118410121190c020b200141e8046a280200210e200141e4046a280200210f200141e0046a2802002110200141dc046a2802002111200141d8046a2802002112200141d0046a280200211420012802c404211620012802c004211720012802bc04211820012802b8042119200141f8016a41286a200141e0056a41286a280200360200200141f8016a41206a200141e0056a41206a290300370300200141f8016a41186a200141e0056a41186a290300370300200141f8016a41106a200141e0056a41106a290300370300200141f8016a41086a200141e0056a41086a290300370300200120012903e0053703f801200141a8016a20014190056a41d00010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141f8016a41286a200a280200360200200141f8016a41206a2009290300370300200141f8016a41186a2008290300370300200141f8016a41106a2007290300370300200141f8016a41086a200529030037030020012001290388033703f801200141a8016a200141b8026a41d00010bf091a20014198016a41086a200b290300370300200120012903a802370398010b024020042000460d00200141b8036a41286a200141f8016a41286a280200360200200141b8036a41206a200141f8016a41206a290300370300200141b8036a41186a200141f8016a41186a290300370300200141b8036a41106a200141f8016a41106a290300370300200141b8036a41086a200141f8016a41086a290300370300200120012903f8013703b803200120003602e403200141e8036a200141a8016a41d00010bf091a200141d4046a2013360200200141cc046a2015360200200141f4046a20014198016a41086a2903003702002001200e3602e8042001200f3602e404200120103602e004200120113602dc04200120123602d804200120143602d004200120023602c804200120163602c404200120173602c004200120183602bc04200120193602b8042001200d3602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210520012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022005200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000ba10b01157f230041f0056b2201240020014190056a2202420037030020014188056a22034200370300200141f8046a41086a22044200370300200142003703f804200141a0016a41b490c700410b10a7022004200141a0016a41086a2205290000370300200120012900a0013703f804200141a0016a41c892c700411310a70220022005290000370300200320012900a0013703002001200141f8046a412010c002200141a0016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141a0036a20012802a001220720012802a80110b202200141f8046a200141a0036a41f80010bf091a200141a8026a41086a2208200141dc046a2902003703002001200141d4046a2902003703a802200141d0046a2802002105200141cc046a2802002109200141c8046a280200210a200141c4046a280200210b200141c0046a280200210c200141bc046a280200210d200141b8046a280200210e20012802b404210f20012802ac04211020012802a804211120012802a404211220012802a0042113200128029c0421142001280298042104200141e4046a2802002115024020012802b00422024102460d00200141186a200141f8046a41f80010bf091a200141086a41086a2008290300370300200120012903a8023703080b024020012802a401450d00200710310b200141a8026a200141186a41f80010bf091a20014198026a41086a2207200141086a41086a29030037030020012001290308370398020240024020024102470d0020014190056a420037030020014188056a4200370300200141f8046a41086a22024200370300200142003703f804200141a0016a41b5d8c800410d10a7022002200141a0016a41086a2204290000370300200120012900a0013703f804200141a0016a41cfd8c800410c10a702200341086a2004290000370000200320012900a001370000200141a0036a200141f8046a412010b20220012802b0042102200141f8046a200141a0036a41f80010bf091a200141e8046a41086a200141dc046a2902003703002001200141d4046a2902003703e804200141bc046a280200210d20012802b404210f200141e4046a2802002115024020024102470d0041002104200141a0016a410041f80010c1091a20014198016a420037030020014200370390014106210c41e400210b4102210a41c801210941012105410021144100210e41002102410021104101211141012112410121130c020b200141d0046a2802002105200141cc046a2802002109200141c8046a280200210a200141c4046a280200210b200141c0046a280200210c200141b8046a280200210e20012802ac04211020012802a804211120012802a404211220012802a0042113200128029c0421142001280298042104200141a0016a200141f8046a41f80010bf091a20014190016a41086a200141e8046a41086a290300370300200120012903e804370390010c010b200141a0016a200141a8026a41f80010bf091a20014190016a41086a20072903003703002001200129039802370390010b024020042000460d00200141a0036a200141a0016a41f80010bf091a200141bc046a200d360200200141b4046a200f360200200141dc046a20014198016a290300370200200120053602d004200120093602cc042001200a3602c8042001200b3602c4042001200c3602c0042001200e3602b804200120023602b004200120103602ac04200120113602a804200120123602a404200120133602a0042001201436029c04200120003602980420012001290390013702d404200120153602e404200141a8026a2006108c0920012802b002210320012802a80221022001410036028005200142013703f804200141a0036a200141f8046a1080092002200320012802f804200128028005109f02024020012802fc04450d0020012802f80410310b20012802ac02450d00200210310b200141f0056a24000b850b01147f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41fc0010bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141e8046a2802002105200141e4046a2802002109200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b804211320012802b4042104200141fc046a2802002114024020012802c80422024102460d00200141186a20014190056a41fc0010bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41fc0010bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41fc0010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002114200141d4046a280200210d20012802cc04210f024020024102470d0041002104200141a8016a410041fc0010c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210a41c8012109410121054100210e41002102410021104101211141012112410121130c020b200141e8046a2802002105200141e4046a2802002109200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b804211320012802b4042104200141a8016a20014190056a41fc0010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41fc0010bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41fc0010bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120053602e804200120093602e4042001200a3602e0042001200b3602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120003602b404200120143602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d4046a280200210e200141d0046a280200210f20012802cc04211020012802c404211120012802c004211220012802bc04211320012802b8042104024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210e20012802cc042110024020024102470d004100210f200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210d41e400210c4102210b41c801210a4101210541002102410021114101211241012113410121040c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d0046a280200210f20012802c404211120012802c004211220012802bc04211320012802b8042104200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200e360200200141cc046a2010360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc042001200d3602d8042001200f3602d004200120023602c804200120113602c404200120123602c004200120133602bc04200120003602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d4046a280200210e200141d0046a280200210f20012802cc04211020012802c404211120012802c004211220012802bc04210420012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210e20012802cc042110024020024102470d004100210f200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210d41e400210c4102210b41c801210a4101210541002102410021114101211241012104410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d0046a280200210f20012802c404211120012802c004211220012802bc04210420012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200e360200200141cc046a2010360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc042001200d3602d8042001200f3602d004200120023602c804200120113602c404200120123602c004200120003602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d4046a280200210e200141d0046a280200210f20012802cc04211020012802c404211120012802c004210420012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210e20012802cc042110024020024102470d004100210f200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210d41e400210c4102210b41c801210a4101210541002102410021114101210441012112410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d0046a280200210f20012802c404211120012802c004210420012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200e360200200141cc046a2010360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc042001200d3602d8042001200f3602d004200120023602c804200120113602c404200120003602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d4046a280200210e200141d0046a280200210f20012802cc04211020012802c404210420012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210e20012802cc042110024020024102470d004100210f200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210d41e400210c4102210b41c801210a4101210541002102410021044101211141012112410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d0046a280200210f20012802c404210420012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200e360200200141cc046a2010360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc042001200d3602d8042001200f3602d004200120023602c804200120003602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000b860b01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d0041002102200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210a41c8012105410121044100210e410021104101211141012112410121130c020b200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b200041046a280200210302400240200028020022002002470d0020024101470d012003200f460d010b200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141f4046a200141a0016a290300370200200120043602e804200120053602e4042001200a3602e0042001200b3602dc042001200c3602d8042001200e3602d004200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec0420012003ad4220862000ad843703c804200141b8026a2006108c0920012802c002210020012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022000200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000b930b040c7f017e057f017e23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a290300210d20012802cc04210e20012802c404210f20012802c004211020012802bc04211120012802b8042112024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d0042002113200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210920012802cc04210e024020024102470d0041002102200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210a41c8012105410121044200210d4100210f4101211041012111410121120c020b200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a290300210d20012802c404210f20012802c004211020012802bc04211120012802b8042112200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a290300370300200120012903800537039801200d4280808080708321130c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a80237039801200d4280808080708321130b200041046a28020021030240024020002802002200200da7470d002000450d0120032013422088a7460d010b200141b8036a200141a8016a41800110bf091a200141cc046a200e360200200141f4046a200141a0016a290300370200200120043602e804200120053602e4042001200a3602e0042001200b3602dc042001200c3602d804200120023602c8042001200f3602c404200120103602c004200120113602bc04200120123602b804200120093602fc0420012001290398013702ec0420012003ad4220862000ad843703d004200141b8026a2006108c0920012802c002210020012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022000200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a2802002104200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d004100210e200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210441e400210c4102210b41c801210a4101210541002102410021104101211141012112410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a2802002104200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc04200120003602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a2802002104200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d004100210e200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e40021044102210b41c801210a4101210541002102410021104101211141012112410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a2802002104200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e4042001200b3602e004200120003602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a280200210a200141e0046a2802002104200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d004100210e200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210441c801210a4101210541002102410021104101211141012112410121130c020b200141e8046a2802002105200141e4046a280200210a200141e0046a2802002104200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120053602e8042001200a3602e404200120003602e0042001200b3602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002105200141e4046a2802002104200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d004100210e200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210a41c80121044101210541002102410021104101211141012112410121130c020b200141e8046a2802002105200141e4046a2802002104200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120053602e804200120003602e4042001200a3602e0042001200b3602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be90a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2902003703002001200141ec046a2902003703b802200141fc046a2802002109200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210d20012802cc04210f024020024102470d004100210e200141a8016a410041800110c1091a200141a0016a420037030020014200370398014106210c41e400210b4102210a41c80121054101210441002102410021104101211141012112410121130c020b200141e8046a2802002104200141e4046a2802002105200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f4046a200141a0016a290300370200200120003602e804200120053602e4042001200a3602e0042001200b3602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b804200120093602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000bed0a01137f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f8046a2903003703002001200141f0046a2903003703b802200141ec046a2802002104200141e8046a2802002105200141e4046a2802002109200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d4046a280200210d200141d0046a280200210e20012802cc04210f20012802c404211020012802c004211120012802bc04211220012802b8042113024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008290300370300200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a290300370300200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f8046a2903003703002001200141f0046a29030037038005200141d4046a280200210d20012802cc04210f024020024102470d0041002104200141a8016a410041800110c1091a200141a0016a410036020020014200370398014106210c41e400210b4102210a41c8012109410121054100210e41002102410021104101211141012112410121130c020b200141ec046a2802002104200141e8046a2802002105200141e4046a2802002109200141e0046a280200210a200141dc046a280200210b200141d8046a280200210c200141d0046a280200210e20012802c404211020012802c004211120012802bc04211220012802b8042113200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007290300370300200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200d360200200141cc046a200f360200200141f8046a200141a0016a290300370300200120003602ec04200120053602e804200120093602e4042001200a3602e0042001200b3602dc042001200c3602d8042001200e3602d004200120023602c804200120103602c404200120113602c004200120123602bc04200120133602b80420012001290398013703f004200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000bd80903087f017e0c7f230041d0056b22012400200141e8046a22024200370300200141e0046a22034200370300200141d0046a41086a22044200370300200142003703d00420014188016a41b490c700410b10a702200420014188016a41086a220529000037030020012001290088013703d00420014188016a41c892c700411310a7022002200529000037030020032001290088013703002001200141d0046a412010c00220014188026a417f2001280204410020012802001b220241026a220420042002491b2206108c0920014188036a200128028802220720012802900210b202200141d0046a20014188036a41800110bf091a200141cc046a2802002108200141c4046a2902002109200141c0046a2802002104200141bc046a2802002105200141b8046a280200210a200141b4046a280200210b200141b0046a280200210c200141ac046a280200210d200141a8046a280200210e200141a4046a280200210f200141a0046a2802002110200128029c04211120012802940421122001280290042113200128028c0421142001280288042115024020012802980422024102460d00200141086a200141d0046a41800110bf091a0b0240200128028c02450d00200710310b20014188026a200141086a41800110bf091a0240024020024102470d0042002109200141e8046a4200370300200141e0046a4200370300200141d0046a41086a22024200370300200142003703d00420014188016a41b5d8c800410d10a702200220014188016a41086a220429000037030020012001290088013703d00420014188016a41cfd8c800410c10a702200341086a2004290000370000200320012900880137000020014188036a200141d0046a412010b2022001280298042102200141d0046a20014188036a41800110bf091a200141cc046a2802002108200141a4046a280200210f200128029c042111024020024102470d004100210520014188016a410041800110c1091a4106210e41e400210d4102210c41c801210b4101210a410021044100211041002102410021124101211341012114410121150c020b200141a0046a2802002110200141a8046a280200210e200141ac046a280200210d200141b0046a280200210c200141b4046a280200210b200141b8046a280200210a200141bc046a2802002105200141c0046a2802002104200141c4046a29020021092001280288042115200128028c0421142001280290042113200128029404211220014188016a200141d0046a41800110bf091a0c010b20014188016a20014188026a41800110bf091a0b024020042000460d0020014188036a20014188016a41800110bf091a200141a4046a200f3602002001419c046a2011360200200120083602cc04200120093702c404200120003602c004200120053602bc042001200a3602b8042001200b3602b4042001200c3602b0042001200d3602ac042001200e3602a804200120103602a0042001200236029804200120123602940420012013360290042001201436028c04200120153602880420014188026a2006108c0920012802900221032001280288022102200141003602d804200142013703d00420014188036a200141d0046a1080092002200320012802d00420012802d804109f02024020012802d404450d0020012802d00410310b200128028c02450d00200210310b200141d0056a24000bba0903077f027e0b7f230041d0056b22012400200141e8046a22024200370300200141e0046a22034200370300200141d0046a41086a22044200370300200142003703d00420014188016a41b490c700410b10a702200420014188016a41086a220529000037030020012001290088013703d00420014188016a41c892c700411310a7022002200529000037030020032001290088013703002001200141d0046a412010c00220014188026a417f2001280204410020012802001b220241026a220420042002491b2206108c0920014188036a200128028802220720012802900210b202200141d0046a20014188036a41800110bf091a200141c8046a2903002108200141c4046a2802002104200141bc046a2902002109200141b8046a2802002105200141b4046a280200210a200141b0046a280200210b200141ac046a280200210c200141a8046a280200210d200141a4046a280200210e200141a0046a280200210f200128029c04211020012802940421112001280290042112200128028c0421132001280288042114024020012802980422024102460d00200141086a200141d0046a41800110bf091a0b0240200128028c02450d00200710310b20014188026a200141086a41800110bf091a0240024020024102470d00200141e8046a4200370300200141e0046a4200370300200141d0046a41086a22024200370300200142003703d00420014188016a41b5d8c800410d10a702200220014188016a41086a220429000037030020012001290088013703d00420014188016a41cfd8c800410c10a702200341086a2004290000370000200320012900880137000020014188036a200141d0046a412010b2022001280298042102200141d0046a20014188036a41800110bf091a200141a4046a280200210e200128029c042110024020024102470d004100210420014188016a410041800110c1091a4106210d41e400210c4102210b41c801210a4101210542002109420021084100210f41002102410021114101211241012113410121140c020b200141a0046a280200210f200141a8046a280200210d200141ac046a280200210c200141b0046a280200210b200141b4046a280200210a200141b8046a2802002105200141bc046a2902002109200141c4046a2802002104200141c8046a29030021082001280288042114200128028c0421132001280290042112200128029404211120014188016a200141d0046a41800110bf091a0c010b20014188016a20014188026a41800110bf091a0b024020042000460d0020014188036a20014188016a41800110bf091a200141a4046a200e3602002001419c046a2010360200200120083703c804200120003602c404200120093702bc04200120053602b8042001200a3602b4042001200b3602b0042001200c3602ac042001200d3602a8042001200f3602a0042001200236029804200120113602940420012012360290042001201336028c04200120143602880420014188026a2006108c0920012802900221032001280288022102200141003602d804200142013703d00420014188036a200141d0046a1080092002200320012802d00420012802d804109f02024020012802d404450d0020012802d00410310b200128028c02450d00200210310b200141d0056a24000b8b0b01147f23004190066b22012400200141a8056a22024200370300200141a0056a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141a8016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802a801220720012802b00110b20220014190056a200141b8036a41800110bf091a200141b8026a41086a2208200141f4046a2802003602002001200141ec046a2902003703b802200141fc046a2802002109200141f8046a2802002104200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d4046a280200210e200141d0046a280200210f20012802cc04211020012802c404211120012802c004211220012802bc04211320012802b8042114024020012802c80422024102460d00200141186a20014190056a41800110bf091a200141086a41086a2008280200360200200120012903b8023703080b024020012802ac01450d00200710310b200141b8026a200141186a41800110bf091a200141a8026a41086a2207200141086a41086a280200360200200120012903083703a8020240024020024102470d00200141a8056a4200370300200141a0056a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2204290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2004290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c804210220014190056a200141b8036a41800110bf091a20014180056a41086a200141f4046a2802003602002001200141ec046a29020037038005200141fc046a2802002109200141d4046a280200210e20012802cc042110024020024102470d0041002104200141a8016a410041800110c1091a200141a0016a410036020020014200370398014106210d41e400210c4102210b41c801210a410121054100210f41002102410021114101211241012113410121140c020b200141e8046a2802002105200141e4046a280200210a200141e0046a280200210b200141dc046a280200210c200141d8046a280200210d200141d0046a280200210f20012802c404211120012802c004211220012802bc04211320012802b8042114200141f8046a2802002104200141a8016a20014190056a41800110bf091a20014198016a41086a20014180056a41086a2802003602002001200129038005370398010c010b200141a8016a200141b8026a41800110bf091a20014198016a41086a2007280200360200200120012903a802370398010b024020042000460d00200141b8036a200141a8016a41800110bf091a200141d4046a200e360200200141cc046a2010360200200141f4046a200141a0016a280200360200200120053602e8042001200a3602e4042001200b3602e0042001200c3602dc042001200d3602d8042001200f3602d004200120023602c804200120113602c404200120123602c004200120133602bc04200120143602b804200120093602fc04200120003602f80420012001290398013702ec04200141b8026a2006108c0920012802c002210320012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022003200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000bb81201197f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141e0056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802e005220720012802e80510b202200141b8026a41086a2208200141b8036a41086a290300370300200141b8026a41106a2209200141b8036a41106a290300370300200141b8026a41186a220a200141b8036a41186a290300370300200141b8026a41206a220b200141b8036a41206a290300370300200141b8026a41286a220c200141b8036a41286a290300370300200120012903b8033703b80220012802e803210420014190056a200141ec036a41cc0010bf091a2005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a280200210d200141e8046a280200210e200141e4046a280200210f200141e0046a2802002110200141dc046a2802002111200141d8046a2802002112200141d4046a2802002113200141d0046a280200211420012802cc04211520012802c404211620012802c004211720012802bc04211820012802b8042119024020012802c80422024102460d00200141e8006a41286a200c290300370300200141e8006a41206a200b290300370300200141e8006a41186a200a290300370300200141e8006a41106a2009290300370300200141e8006a41086a2008290300370300200120012903b8023703682001411c6a20014190056a41cc0010bf091a200141086a41086a2005290300370300200120012903a8013703080b024020012802e405450d00200710310b20014188036a41086a2205200141e8006a41086a29030037030020014188036a41106a2207200141e8006a41106a29030037030020014188036a41186a2208200141e8006a41186a29030037030020014188036a41206a2209200141e8006a41206a29030037030020014188036a41286a220a200141e8006a41286a2903003703002001200129036837038803200141b8026a2001411c6a41cc0010bf091a200141a8026a41086a220b200141086a41086a290300370300200120012903083703a8020240024020024102470d0020014190056a41186a420037030020014190056a41106a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2005290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042102200141e0056a41086a200141b8036a41086a290300370300200141e0056a41106a200141b8036a41106a290300370300200141e0056a41186a200141b8036a41186a290300370300200141e0056a41206a200141b8036a41206a290300370300200141e0056a41286a200141b8036a41286a290300370300200120012903b8033703e00520012802e803210420014190056a200141ec036a41cc0010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210d200141d4046a280200211320012802cc042115024020024102470d00200141a0026a420037030020014198026a420037030020014190026a420037030020014188026a4200370300200141f8016a41086a4200370300200142003703f80141002104200141a8016a410041cc0010c1091a20014198016a41086a420037030020014200370398014106211241e40021114102211041c801210f4101210e4100211441002102410021164101211741012118410121190c020b200141e8046a280200210e200141e4046a280200210f200141e0046a2802002110200141dc046a2802002111200141d8046a2802002112200141d0046a280200211420012802c404211620012802c004211720012802bc04211820012802b8042119200141f8016a41286a200141e0056a41286a290300370300200141f8016a41206a200141e0056a41206a290300370300200141f8016a41186a200141e0056a41186a290300370300200141f8016a41106a200141e0056a41106a290300370300200141f8016a41086a200141e0056a41086a290300370300200120012903e0053703f801200141a8016a20014190056a41cc0010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141f8016a41286a200a290300370300200141f8016a41206a2009290300370300200141f8016a41186a2008290300370300200141f8016a41106a2007290300370300200141f8016a41086a200529030037030020012001290388033703f801200141a8016a200141b8026a41cc0010bf091a20014198016a41086a200b290300370300200120012903a802370398010b024020042000460d00200141b8036a41286a200141f8016a41286a290300370300200141b8036a41206a200141f8016a41206a290300370300200141b8036a41186a200141f8016a41186a290300370300200141b8036a41106a200141f8016a41106a290300370300200141b8036a41086a200141f8016a41086a290300370300200120012903f8013703b803200120003602e803200141ec036a200141a8016a41cc0010bf091a200141d4046a2013360200200141cc046a2015360200200141f4046a20014198016a41086a2903003702002001200e3602e8042001200f3602e404200120103602e004200120113602dc04200120123602d804200120143602d004200120023602c804200120163602c404200120173602c004200120183602bc04200120193602b8042001200d3602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210520012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022005200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000be113011a7f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141d8056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802d805220720012802e00510b202200141b8026a41086a2208200141b8036a41086a290300370300200141b8026a41106a2209200141b8036a41106a290300370300200141b8026a41186a220a200141b8036a41186a290300370300200141b8026a41206a220b200141b8036a41206a290300370300200141b8026a41286a220c200141b8036a41286a290300370300200141b8026a41306a220d200141b8036a41306a280200360200200120012903b8033703b80220012802ec03210420014190056a200141f0036a41c80010bf091a2005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a280200210e200141e8046a280200210f200141e4046a2802002110200141e0046a2802002111200141dc046a2802002112200141d8046a2802002113200141d4046a2802002114200141d0046a280200211520012802cc04211620012802c404211720012802c004211820012802bc04211920012802b804211a024020012802c80422024102460d00200141e0006a41306a200d280200360200200141e0006a41286a200c290300370300200141e0006a41206a200b290300370300200141e0006a41186a200a290300370300200141e0006a41106a2009290300370300200141e0006a41086a2008290300370300200120012903b802370360200141186a20014190056a41c80010bf091a200141086a41086a2005290300370300200120012903a8013703080b024020012802dc05450d00200710310b20014180036a41086a2205200141e0006a41086a29030037030020014180036a41106a2207200141e0006a41106a29030037030020014180036a41186a2208200141e0006a41186a29030037030020014180036a41206a2209200141e0006a41206a29030037030020014180036a41286a220a200141e0006a41286a29030037030020014180036a41306a220b200141e0006a41306a2802003602002001200129036037038003200141b8026a200141186a41c80010bf091a200141a8026a41086a220c200141086a41086a290300370300200120012903083703a8020240024020024102470d0020014190056a41186a420037030020014190056a41106a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2005290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042102200141d8056a41086a200141b8036a41086a290300370300200141d8056a41106a200141b8036a41106a290300370300200141d8056a41186a200141b8036a41186a290300370300200141d8056a41206a200141b8036a41206a290300370300200141d8056a41286a200141b8036a41286a290300370300200141d8056a41306a200141b8036a41306a280200360200200120012903b8033703d80520012802ec03210420014190056a200141f0036a41c80010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210e200141d4046a280200211420012802cc042116024020024102470d0041002104200141a0026a410036020020014198026a420037030020014190026a420037030020014188026a420037030020014180026a4200370300200141f0016a41086a4200370300200142003703f001200141a8016a410041c80010c1091a20014198016a41086a420037030020014200370398014106211341e40021124102211141c80121104101210f41002115410021024100211741012118410121194101211a0c020b200141e8046a280200210f200141e4046a2802002110200141e0046a2802002111200141dc046a2802002112200141d8046a2802002113200141d0046a280200211520012802c404211720012802c004211820012802bc04211920012802b804211a200141f0016a41306a200141d8056a41306a280200360200200141f0016a41286a200141d8056a41286a290300370300200141f0016a41206a200141d8056a41206a290300370300200141f0016a41186a200141d8056a41186a290300370300200141f0016a41106a200141d8056a41106a290300370300200141f0016a41086a200141d8056a41086a290300370300200120012903d8053703f001200141a8016a20014190056a41c80010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141f0016a41306a200b280200360200200141f0016a41286a200a290300370300200141f0016a41206a2009290300370300200141f0016a41186a2008290300370300200141f0016a41106a2007290300370300200141f0016a41086a200529030037030020012001290380033703f001200141a8016a200141b8026a41c80010bf091a20014198016a41086a200c290300370300200120012903a802370398010b024020042000460d00200141b8036a41306a200141f0016a41306a280200360200200141b8036a41286a200141f0016a41286a290300370300200141b8036a41206a200141f0016a41206a290300370300200141b8036a41186a200141f0016a41186a290300370300200141b8036a41106a200141f0016a41106a290300370300200141b8036a41086a200141f0016a41086a290300370300200120012903f0013703b803200120003602ec03200141f0036a200141a8016a41c80010bf091a200141d4046a2014360200200141cc046a2016360200200141f4046a20014198016a41086a2903003702002001200f3602e804200120103602e404200120113602e004200120123602dc04200120133602d804200120153602d004200120023602c804200120173602c404200120183602c004200120193602bc042001201a3602b8042001200e3602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210520012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022005200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000b811201197f23004190066b22012400200141c0056a41186a22024200370300200141c0056a41106a22034200370300200141c0056a41086a22044200370300200142003703c005200141d8016a41b490c700410b10a7022004200141d8016a41086a2205290000370300200120012900d8013703c005200141d8016a41c892c700411310a70220022005290000370300200320012900d8013703002001200141c0056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141c0056a200141b8036a41d00010bf091a200141e8026a41086a220820014194046a290200370300200141e8026a41106a22092001419c046a290200370300200141e8026a41186a220a200141a4046a290200370300200141e8026a41206a220b200141ac046a290200370300200141e8026a41286a220c200141b4046a2802003602002001200129028c043703e802200141d0046a280200210d200141d4046a280200210e200141d8046a280200210f200141dc046a2802002110200141e0046a2802002111200141e4046a2802002112200141e8046a2802002113200128028804210420012802b804211420012802bc04211520012802c004211620012802c404211720012802cc04211820012802c80421022005200141f4046a2902003703002001200141ec046a2902003703d801200141fc046a2802002119024020024102460d00200141c8006a200141c0056a41d00010bf091a200141186a41286a200c280200360200200141186a41206a200b290300370300200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903e802370318200120012903d8013703080b0240200128029405450d00200710310b200141e8026a200141c8006a41d00010bf091a200141b8026a41286a2205200141186a41286a280200360200200141b8026a41206a2207200141186a41206a290300370300200141b8026a41186a2208200141186a41186a290300370300200141b8026a41106a2209200141186a41106a290300370300200141b8026a41086a220a200141186a41086a290300370300200141a8026a41086a220b200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c0056a41186a4200370300200141c0056a41106a4200370300200141c0056a41086a22024200370300200142003703c005200141d8016a41b5d8c800410d10a7022002200141d8016a41086a2205290000370300200120012900d8013703c005200141d8016a41cfd8c800410c10a702200341086a2005290000370000200320012900d801370000200141b8036a200141c0056a412010b20220012802c8042102200141c0056a200141b8036a41d00010bf091a20014190056a41086a20014194046a29020037030041e400211020014190056a41106a200141b8036a41e4006a29020037030020014190056a41186a200141a4046a29020037030020014190056a41206a200141ac046a29020037030020014190056a41286a200141b4046a2802003602002001200129028c0437039005200141d0046a280200210d200141d4046a280200210e200141d8046a280200210f200141dc046a2802002105200141e0046a2802002111200141e4046a2802002112200141e8046a2802002113200128028804210420012802b804211420012802bc04211520012802c004211620012802c404211720012802cc04211820014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002119024020024102470d0041002104200141d8016a410041d00010c1091a200141d0016a4100360200200141c8016a4200370300200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210f4102211141c8012112410121134100210d41002102410021174101211641012115410121140c020b200141d8016a200141c0056a41d00010bf091a200141a8016a41286a20014190056a41286a280200360200200141a8016a41206a20014190056a41206a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a801200120012903800537039801200521100c010b200141d8016a200141e8026a41d00010bf091a200141a8016a41286a2005280200360200200141a8016a41206a2007290300370300200141a8016a41186a2008290300370300200141a8016a41106a2009290300370300200141a8016a41086a200a29030037030020014198016a41086a200b290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141d8016a41d00010bf091a200141d4046a200e360200200141cc046a201836020020014194046a200141a8016a41086a2903003702002001419c046a200141b8016a290300370200200141a4046a200141c0016a290300370200200141ac046a200141c8016a290300370200200141b4046a200141d0016a2802003602002001200036028804200120133602e804200120123602e404200120113602e004200120103602dc042001200f3602d8042001200d3602d004200120023602c804200120173602c404200120163602c004200120153602bc04200120143602b804200120012903a80137028c04200141f4046a20014198016a41086a290300370200200120193602fc0420012001290398013702ec04200141e8026a2006108c0920012802f002210520012802e8022102200141003602c805200142013703c005200141b8036a200141c0056a1080092002200520012802c00520012802c805109f02024020012802c405450d0020012802c00510310b20012802ec02450d00200210310b20014190066a24000b9b0b04077f017e0c7f017e230041f0056b2201240020014190056a2202420037030020014188056a22034200370300200141f8046a41086a22044200370300200142003703f804200141a0016a41b490c700410b10a7022004200141a0016a41086a2205290000370300200120012900a0013703f804200141a0016a41c892c700411310a70220022005290000370300200320012900a0013703002001200141f8046a412010c002200141a0016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141a0036a20012802a001220720012802a80110b20220012903a0032108200141f8046a200141a0036a41086a41f80010bf091a200141a8026a41086a2209200141dc046a2902003703002001200141d4046a2902003703a802200141e4046a280200210a200141d0046a2802002104200141cc046a2802002105200141c8046a280200210b200141c4046a280200210c200141c0046a280200210d200141bc046a280200210e200141b8046a280200210f20012802b404211020012802ac04211120012802a804211220012802a404211320012802a0042114024020012802b00422024102460d00200141186a200141f8046a41f80010bf091a200141086a41086a2009290300370300200120012903a8023703080b024020012802a401450d00200710310b200141a8026a200141186a41f80010bf091a20014198026a41086a2207200141086a41086a29030037030020012001290308370398020240024020024102470d004200210820014190056a420037030020014188056a4200370300200141f8046a41086a22024200370300200142003703f804200141a0016a41b5d8c800410d10a7022002200141a0016a41086a2204290000370300200120012900a0013703f804200141a0016a41cfd8c800410c10a702200341086a2004290000370000200320012900a001370000200141a0036a200141f8046a412010b20220012802b004210220012903a0032115200141f8046a200141a0036a41086a41f80010bf091a200141e8046a41086a200141dc046a2902003703002001200141d4046a2902003703e804200141e4046a280200210a200141bc046a280200210e20012802b4042110024020024102470d004100210f200141a0016a410041f80010c1091a20014198016a420037030020014200370390014106210d41e400210c4102210b41c80121054101210441002102410021114101211241012113410121140c020b200141d0046a2802002104200141cc046a2802002105200141c8046a280200210b200141c4046a280200210c200141c0046a280200210d200141b8046a280200210f20012802ac04211120012802a804211220012802a404211320012802a0042114200141a0016a200141f8046a41f80010bf091a20014190016a41086a200141e8046a41086a290300370300200120012903e80437039001201521080c010b200141a0016a200141a8026a41f80010bf091a20014190016a41086a20072903003703002001200129039802370390010b024020082000510d00200120003703a003200141a0036a41086a200141a0016a41f80010bf091a200141bc046a200e360200200141b4046a2010360200200141dc046a20014190016a41086a290300370200200120043602d004200120053602cc042001200b3602c8042001200c3602c4042001200d3602c0042001200f3602b804200120023602b004200120113602ac04200120123602a804200120133602a404200120143602a0042001200a3602e40420012001290390013702d404200141a8026a2006108c0920012802b002210320012802a80221022001410036028005200142013703f804200141a0036a200141f8046a1080092002200320012802f804200128028005109f02024020012802fc04450d0020012802f80410310b20012802ac02450d00200210310b200141f0056a24000be113011a7f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141d8056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a20012802d805220720012802e00510b202200141b8026a41086a2208200141b8036a41086a290300370300200141b8026a41106a2209200141b8036a41106a290300370300200141b8026a41186a220a200141b8036a41186a290300370300200141b8026a41206a220b200141b8036a41206a290300370300200141b8026a41286a220c200141b8036a41286a290300370300200141b8026a41306a220d200141b8036a41306a290300370300200120012903b8033703b80220012802f003210420014190056a200141f4036a41c40010bf091a2005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a280200210e200141e8046a280200210f200141e4046a2802002110200141e0046a2802002111200141dc046a2802002112200141d8046a2802002113200141d4046a2802002114200141d0046a280200211520012802cc04211620012802c404211720012802c004211820012802bc04211920012802b804211a024020012802c80422024102460d00200141e0006a41306a200d290300370300200141e0006a41286a200c290300370300200141e0006a41206a200b290300370300200141e0006a41186a200a290300370300200141e0006a41106a2009290300370300200141e0006a41086a2008290300370300200120012903b8023703602001411c6a20014190056a41c40010bf091a200141086a41086a2005290300370300200120012903a8013703080b024020012802dc05450d00200710310b20014180036a41086a2205200141e0006a41086a29030037030020014180036a41106a2207200141e0006a41106a29030037030020014180036a41186a2208200141e0006a41186a29030037030020014180036a41206a2209200141e0006a41206a29030037030020014180036a41286a220a200141e0006a41286a29030037030020014180036a41306a220b200141e0006a41306a2903003703002001200129036037038003200141b8026a2001411c6a41c40010bf091a200141a8026a41086a220c200141086a41086a290300370300200120012903083703a8020240024020024102470d0020014190056a41186a420037030020014190056a41106a420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2005290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042102200141d8056a41086a200141b8036a41086a290300370300200141d8056a41106a200141b8036a41106a290300370300200141d8056a41186a200141b8036a41186a290300370300200141d8056a41206a200141b8036a41206a290300370300200141d8056a41286a200141b8036a41286a290300370300200141d8056a41306a200141b8036a41306a290300370300200120012903b8033703d80520012802f003210420014190056a200141f4036a41c40010bf091a20014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a280200210e200141d4046a280200211420012802cc042116024020024102470d00200141a0026a420037030020014198026a420037030020014190026a420037030020014188026a420037030020014180026a4200370300200141f0016a41086a4200370300200142003703f00141002104200141a8016a410041c40010c1091a20014198016a41086a420037030020014200370398014106211341e40021124102211141c80121104101210f41002115410021024100211741012118410121194101211a0c020b200141e8046a280200210f200141e4046a2802002110200141e0046a2802002111200141dc046a2802002112200141d8046a2802002113200141d0046a280200211520012802c404211720012802c004211820012802bc04211920012802b804211a200141f0016a41306a200141d8056a41306a290300370300200141f0016a41286a200141d8056a41286a290300370300200141f0016a41206a200141d8056a41206a290300370300200141f0016a41186a200141d8056a41186a290300370300200141f0016a41106a200141d8056a41106a290300370300200141f0016a41086a200141d8056a41086a290300370300200120012903d8053703f001200141a8016a20014190056a41c40010bf091a20014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141f0016a41306a200b290300370300200141f0016a41286a200a290300370300200141f0016a41206a2009290300370300200141f0016a41186a2008290300370300200141f0016a41106a2007290300370300200141f0016a41086a200529030037030020012001290380033703f001200141a8016a200141b8026a41c40010bf091a20014198016a41086a200c290300370300200120012903a802370398010b024020042000460d00200141b8036a41306a200141f0016a41306a290300370300200141b8036a41286a200141f0016a41286a290300370300200141b8036a41206a200141f0016a41206a290300370300200141b8036a41186a200141f0016a41186a290300370300200141b8036a41106a200141f0016a41106a290300370300200141b8036a41086a200141f0016a41086a290300370300200120012903f0013703b803200120003602f003200141f4036a200141a8016a41c40010bf091a200141d4046a2014360200200141cc046a2016360200200141f4046a20014198016a41086a2903003702002001200f3602e804200120103602e404200120113602e004200120123602dc04200120133602d804200120153602d004200120023602c804200120173602c404200120183602c004200120193602bc042001201a3602b8042001200e3602fc0420012001290398013702ec04200141b8026a2006108c0920012802c002210520012802b802210220014100360298052001420137039005200141b8036a20014190056a10800920022005200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200210310b20014190066a24000b9f1d01217f23004190066b2201240020014190056a41186a2202420037030020014190056a41106a2203420037030020014190056a41086a220442003703002001420037039005200141a8016a41b490c700410b10a7022004200141a8016a41086a2205290000370300200120012900a80137039005200141a8016a41c892c700411310a70220022005290000370300200320012900a801370300200120014190056a412010c002200141d0056a417f2001280204410020012802001b220641026a220720072006491b2208108c09200141b8036a20012802d005220920012802d80510b202200141b8026a41086a220a200141b8036a41086a290300370300200141b8026a41106a220b200141b8036a41106a290300370300200141b8026a41186a220c200141b8036a41186a290300370300200141b8026a41206a220d200141b8036a41206a290300370300200141b8026a41286a220e200141b8036a41286a290300370300200141b8026a41306a220f200141b8036a41306a290300370300200141b8026a41386a2210200141b8036a41386a280200360200200120012903b8033703b802200420014180046a290300370300200320014188046a290300370300200220014190046a29030037030020014190056a41206a221120014198046a29030037030020014190056a41286a2212200141a0046a29030037030020014190056a41306a2213200141a8046a29030037030020014190056a41386a2214200141b0046a290300370300200120012903f8033703900520012802f40321072005200141f4046a2902003703002001200141ec046a2902003703a801200141fc046a2802002115200141e8046a2802002116200141e4046a2802002117200141e0046a2802002118200141dc046a2802002119200141d8046a280200211a200141d4046a280200211b200141d0046a280200211c20012802cc04211d20012802c404211e20012802c004211f20012802bc04212020012802b8042121024020012802c80422064102460d00200141d8006a41386a2010280200360200200141d8006a41306a200f290300370300200141d8006a41286a200e290300370300200141d8006a41206a200d290300370300200141d8006a41186a200c290300370300200141d8006a41106a200b290300370300200141d8006a41086a200a290300370300200141186a41086a2004290300370300200141186a41106a2003290300370300200141186a41186a2002290300370300200141186a41206a2011290300370300200141186a41286a2012290300370300200141186a41306a2013290300370300200141186a41386a2014290300370300200120012903b8023703582001200129039005370318200141086a41086a2005290300370300200120012903a8013703080b024020012802d405450d00200910310b200141f8026a41086a2202200141d8006a41086a290300370300200141f8026a41106a2204200141d8006a41106a290300370300200141f8026a41186a2205200141d8006a41186a290300370300200141f8026a41206a2209200141d8006a41206a290300370300200141f8026a41286a220a200141d8006a41286a290300370300200141f8026a41306a220b200141d8006a41306a290300370300200141f8026a41386a220c200141d8006a41386a280200360200200120012903583703f802200141b8026a41086a220d200141186a41086a290300370300200141b8026a41106a220e200141186a41106a290300370300200141b8026a41186a220f200141186a41186a290300370300200141b8026a41206a2210200141186a41206a290300370300200141b8026a41286a2211200141186a41286a290300370300200141b8026a41306a2212200141186a41306a290300370300200141b8026a41386a2213200141186a41386a290300370300200120012903183703b802200141a8026a41086a2214200141086a41086a290300370300200120012903083703a8020240024020064102470d0020014190056a41186a2204420037030020014190056a41106a2205420037030020014190056a41086a220242003703002001420037039005200141a8016a41b5d8c800410d10a7022002200141a8016a41086a2206290000370300200120012900a80137039005200141a8016a41cfd8c800410c10a702200341086a2006290000370000200320012900a801370000200141b8036a20014190056a412010b20220012802c8042106200141d0056a41086a200141b8036a41086a290300370300200141d0056a41106a200141b8036a41106a290300370300200141d0056a41186a200141b8036a41186a290300370300200141d0056a41206a200141b8036a41206a290300370300200141d0056a41286a200141b8036a41286a290300370300200141d0056a41306a200141b8036a41306a290300370300200141d0056a41386a200141b8036a41386a280200360200200120012903b8033703d005200220014180046a290300370300200520014188046a290300370300200420014190046a29030037030020014190056a41206a20014198046a29030037030020014190056a41286a200141a0046a29030037030020014190056a41306a200141a8046a29030037030020014190056a41386a200141b0046a290300370300200120012903f8033703900520012802f403210720014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002115200141d4046a280200211b20012802cc04211d024020064102470d0041002107200141e8016a41386a4100360200200141e8016a41306a4200370300200141e8016a41286a4200370300200141e8016a41206a4200370300200141e8016a41186a4200370300200141e8016a41106a4200370300200141e8016a41086a4200370300200141a8016a41086a4200370300200141a8016a41106a4200370300200141a8016a41186a4200370300200141a8016a41206a4200370300200141a8016a41286a4200370300200141a8016a41306a4200370300200141a8016a41386a420037030020014198016a41086a4200370300200142003703e801200142003703a80120014200370398014106211a41e40021194102211841c8012117410121164100211c410021064100211e4101211f41012120410121210c020b200141e8046a2802002116200141e4046a2802002117200141e0046a2802002118200141dc046a2802002119200141d8046a280200211a200141d0046a280200211c20012802c404211e20012802c004211f20012802bc04212020012802b8042121200141e8016a41386a200141d0056a41386a280200360200200141e8016a41306a200141d0056a41306a290300370300200141e8016a41286a200141d0056a41286a290300370300200141e8016a41206a200141d0056a41206a290300370300200141e8016a41186a200141d0056a41186a290300370300200141e8016a41106a200141d0056a41106a290300370300200141e8016a41086a200141d0056a41086a290300370300200141a8016a41086a20014190056a41086a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41206a20014190056a41206a290300370300200141a8016a41286a20014190056a41286a290300370300200141a8016a41306a20014190056a41306a290300370300200141a8016a41386a20014190056a41386a290300370300200120012903d0053703e80120012001290390053703a80120014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141e8016a41386a200c280200360200200141e8016a41306a200b290300370300200141e8016a41286a200a290300370300200141e8016a41206a2009290300370300200141e8016a41186a2005290300370300200141e8016a41106a2004290300370300200141e8016a41086a2002290300370300200141a8016a41086a200d290300370300200141a8016a41106a200e290300370300200141a8016a41186a200f290300370300200141a8016a41206a2010290300370300200141a8016a41286a2011290300370300200141a8016a41306a2012290300370300200141a8016a41386a2013290300370300200120012903f8023703e801200120012903b8023703a80120014198016a41086a2014290300370300200120012903a802370398010b024020072000460d00200141b8036a41386a200141e8016a41386a280200360200200141b8036a41306a200141e8016a41306a290300370300200141b8036a41286a200141e8016a41286a290300370300200141b8036a41206a200141e8016a41206a290300370300200141b8036a41186a200141e8016a41186a290300370300200141b8036a41106a200141e8016a41106a290300370300200141b8036a41086a200141e8016a41086a290300370300200120012903e8013703b803200120003602f403200141cc046a201d360200200141d4046a201b36020020014180046a200141a8016a41086a29030037030020014188046a200141a8016a41106a29030037030020014190046a200141a8016a41186a29030037030020014198046a200141a8016a41206a290300370300200141a0046a200141a8016a41286a290300370300200141a8046a200141a8016a41306a290300370300200141b0046a200141a8016a41386a290300370300200120213602b804200120203602bc042001201f3602c0042001201e3602c404200120063602c8042001201c3602d0042001201a3602d804200120193602dc04200120183602e004200120173602e404200120163602e804200120012903a8013703f803200141f4046a20014198016a41086a290300370200200120153602fc0420012001290398013702ec04200141b8026a2008108c0920012802c002210620012802b802210320014100360298052001420137039005200141b8036a20014190056a10800920032006200128029005200128029805109f020240200128029405450d0020012802900510310b20012802bc02450d00200310310b20014190066a24000bc10f01177f23004190066b22012400200141b0056a41186a22024200370300200141b0056a41106a22034200370300200141b0056a41086a22044200370300200142003703b005200141c8016a41b490c700410b10a7022004200141c8016a41086a2205290000370300200120012900c8013703b005200141c8016a41c892c700411310a70220022005290000370300200320012900c8013703002001200141b0056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141b0056a200141b8036a41dc0010bf091a200141d8026a41086a2208200141a0046a290300370300200141d8026a41106a2209200141a8046a290300370300200141d8026a41186a220a200141b0046a29030037030020012001290398043703d802200141d0046a280200210b200141d4046a280200210c200141d8046a280200210d200141dc046a280200210e200141e0046a280200210f200141e4046a2802002110200141e8046a2802002111200128029404210420012802b804211220012802bc04211320012802c004211420012802c404211520012802cc04211620012802c80421022005200141f4046a2902003703002001200141ec046a2902003703c801200141fc046a2802002117024020024102460d00200141386a200141b0056a41dc0010bf091a200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903d802370318200120012903c8013703080b0240200128029405450d00200710310b200141d8026a200141386a41dc0010bf091a200141b8026a41186a2205200141186a41186a290300370300200141b8026a41106a2207200141186a41106a290300370300200141b8026a41086a2208200141186a41086a290300370300200141a8026a41086a2209200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b0056a41186a4200370300200141b0056a41106a4200370300200141b0056a41086a22024200370300200142003703b005200141c8016a41b5d8c800410d10a7022002200141c8016a41086a2205290000370300200120012900c8013703b005200141c8016a41cfd8c800410c10a702200341086a2005290000370000200320012900c801370000200141b8036a200141b0056a412010b20220012802c8042102200141b0056a200141b8036a41dc0010bf091a20014190056a41086a200141a0046a29030037030020014190056a41106a200141a8046a29030037030020014190056a41186a200141b0046a290300370300200120012903980437039005200141d0046a280200210b200141d4046a280200210c200141d8046a280200210d200141dc046a280200210e200141e0046a280200210f200141e4046a2802002110200141e8046a2802002111200128029404210420012802b804211220012802bc04211320012802c004211420012802c404211520012802cc04211620014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002117024020024102470d0041002104200141c8016a410041dc0010c1091a200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210d41e400210e4102210f41c8012110410121114100210b41002102410021154101211441012113410121120c020b200141c8016a200141b0056a41dc0010bf091a200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141c8016a200141d8026a41dc0010bf091a200141a8016a41186a2005290300370300200141a8016a41106a2007290300370300200141a8016a41086a200829030037030020014198016a41086a2009290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141c8016a41dc0010bf091a200141d4046a200c360200200141cc046a2016360200200141a0046a200141a8016a41086a290300370300200141a8046a200141b8016a290300370300200141b0046a200141c0016a2903003703002001200036029404200120113602e804200120103602e4042001200f3602e0042001200e3602dc042001200d3602d8042001200b3602d004200120023602c804200120153602c404200120143602c004200120133602bc04200120123602b804200120012903a80137039804200141f4046a20014198016a41086a290300370200200120173602fc0420012001290398013702ec04200141d8026a2006108c0920012802e002210520012802d8022102200141003602b805200142013703b005200141b8036a200141b0056a1080092002200520012802b00520012802b805109f02024020012802b405450d0020012802b00510310b20012802dc02450d00200210310b20014190066a24000bff0b04077f037e0c7f017e230041b0056b22012400200141c8046a41186a22024200370300200141c8046a41106a22034200370300200141c8046a41086a22044200370300200142003703c80420014190016a41b490c700410b10a702200420014190016a41086a220529000037030020012001290090013703c80420014190016a41c892c700411310a7022002200529000037030020032001290090013703002001200141c8046a412010c00220014190016a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141f0026a200128029001220720012802980110b202200141f0026a41106a290300210820012903f802210920012903f002210a200141c8046a200141f0026a41186a41e80010bf091a20014188026a41086a220b200141ac046a2902003703002001200141a4046a29020037038802200141b4046a280200210c200141a0046a28020021042001419c046a280200210520014198046a280200210d20014194046a280200210e20014190046a280200210f2001418c046a280200211020014188046a2802002111200128028404211220012802fc03211320012802f803211420012802f403211520012802f0032116024020012802800422024102460d00200141186a200141c8046a41e80010bf091a200141086a41086a200b29030037030020012001290388023703080b0240200128029401450d00200710310b20014188026a200141186a41e80010bf091a200141f8016a41086a2207200141086a41086a290300370300200120012903083703f8010240024020024102470d004200210a200141c8046a41186a4200370300200141c8046a41106a4200370300200141c8046a41086a22024200370300200142003703c80420014190016a41b5d8c800410d10a702200220014190016a41086a220429000037030020012001290090013703c80420014190016a41cfd8c800410c10a702200341086a20042900003700002003200129009001370000200141f0026a200141c8046a412010b2022001280280042102200141f0026a41106a290300210820012903f802210920012903f0022117200141c8046a200141f0026a41186a41e80010bf091a200141b8046a41086a200141ac046a2902003703002001200141a4046a2902003703b804200141b4046a280200210c2001418c046a28020021102001280284042112024020024102470d004100211120014190016a410041e80010c1091a20014188016a420037030020014200370380014106210f41e400210e4102210d41c801210541012104420021094200210841002102410021134101211441012115410121160c020b200141a0046a28020021042001419c046a280200210520014198046a280200210d20014194046a280200210e20014190046a280200210f20014188046a280200211120012802fc03211320012802f803211420012802f403211520012802f003211620014190016a200141c8046a41e80010bf091a20014180016a41086a200141b8046a41086a290300370300200120012903b804370380012017210a0c010b20014190016a20014188026a41e80010bf091a20014180016a41086a2007290300370300200120012903f801370380010b0240200920002903002217852008200041086a29030022098584500d0020014180036a2009370300200120173703f8022001200a3703f00220014188036a20014190016a41e80010bf091a2001418c046a201036020020014184046a2012360200200141ac046a20014180016a41086a290300370200200120043602a0042001200536029c042001200d360298042001200e360294042001200f3602900420012011360288042001200236028004200120133602fc03200120143602f803200120153602f403200120163602f0032001200c3602b40420012001290380013702a40420014188026a2006108c0920012802900221002001280288022102200141003602d004200142013703c804200141f0026a200141c8046a1080092002200020012802c80420012802d004109f02024020012802cc04450d0020012802c80410310b200128028c02450d00200210310b200141b0056a24000b800f04097f027e0c7f017e230041d0056b22012400200141f8046a22024200370300200141e0046a41106a22034200370300200141e0046a41086a22044200370300200142003703e00420014198016a41b490c700410b10a702200420014198016a41086a220529000037030020012001290098013703e00420014198016a41c892c700411310a7022002200529000037030020032001290098013703002001200141e0046a412010c002200141b8056a417f2001280204410020012802001b220241026a220420042002491b2206108c0920014188036a20012802b805220720012802c00510b20220014198026a41086a220820014188036a41086a29030037030020014198026a41106a220920014188036a41106a29030037030020012001290388033703980220014188036a41206a290300210a20012903a003210b200141e0046a200141b0036a41d80010bf091a2005200141c4046a2902003703002001200141bc046a29020037039801200141cc046a280200210c200141b8046a2802002104200141b4046a280200210d200141b0046a280200210e200141ac046a280200210f200141a8046a2802002110200141a4046a2802002111200141a0046a2802002112200128029c04211320012802940421142001280290042115200128028c0421162001280288042117024020012802980422024102460d00200141f0006a41106a2009290300370300200141f0006a41086a20082903003703002001200129039802370370200141186a200141e0046a41d80010bf091a200141086a41086a200529030037030020012001290398013703080b024020012802bc05450d00200710310b200141f0026a41086a2205200141f0006a41086a290300370300200141f0026a41106a2207200141f0006a41106a290300370300200120012903703703f00220014198026a200141186a41d80010bf091a20014188026a41086a2208200141086a41086a29030037030020012001290308370388020240024020024102470d004200210b200141f8046a4200370300200141e0046a41106a4200370300200141e0046a41086a22024200370300200142003703e00420014198016a41b5d8c800410d10a702200220014198016a41086a220529000037030020012001290098013703e00420014198016a41cfd8c800410c10a702200341086a2005290000370000200320012900980137000020014188036a200141e0046a412010b2022001280298042102200141b8056a41086a20014188036a41086a290300370300200141b8056a41106a20014188036a41106a29030037030020012001290388033703b80520014188036a41206a290300210a20012903a0032118200141e0046a200141b0036a41d80010bf091a200141d0046a41086a200141c4046a2902003703002001200141bc046a2902003703d004200141cc046a280200210c200141a4046a2802002111200128029c042113024020024102470d0020014180026a4200370300200141f0016a41086a4200370300200142003703f0014100211220014198016a410041d80010c1091a20014188016a41086a420037030020014200370388014106211041e400210f4102210e41c801210d410121044200210a41002102410021144101211541012116410121170c020b200141b8046a2802002104200141b4046a280200210d200141b0046a280200210e200141ac046a280200210f200141a8046a2802002110200141a0046a280200211220012802940421142001280290042115200128028c0421162001280288042117200141f0016a41106a200141b8056a41106a290300370300200141f0016a41086a200141b8056a41086a290300370300200120012903b8053703f00120014198016a200141e0046a41d80010bf091a20014188016a41086a200141d0046a41086a290300370300200120012903d004370388012018210b0c010b200141f0016a41106a2007290300370300200141f0016a41086a2005290300370300200120012903f0023703f00120014198016a20014198026a41d80010bf091a20014188016a41086a20082903003703002001200129038802370388010b0240200b2000290300221885200a200041086a290300220b8584500d00200141a8036a200b37030020014188036a41106a200141f0016a41106a29030037030020014188036a41086a200141f0016a41086a290300370300200120183703a003200120012903f00137038803200141b0036a20014198016a41d80010bf091a200141a4046a20113602002001419c046a2013360200200141c4046a20014188016a41086a290300370200200120043602b8042001200d3602b4042001200e3602b0042001200f3602ac04200120103602a804200120123602a0042001200236029804200120143602940420012015360290042001201636028c0420012017360288042001200c3602cc0420012001290388013702bc0420014198026a2006108c0920012802a00221052001280298022102200141003602e804200142013703e00420014188036a200141e0046a1080092002200520012802e00420012802e804109f02024020012802e404450d0020012802e00410310b200128029c02450d00200210310b200141d0056a24000bc10f01177f23004190066b22012400200141b0056a41186a22024200370300200141b0056a41106a22034200370300200141b0056a41086a22044200370300200142003703b005200141c8016a41b490c700410b10a7022004200141c8016a41086a2205290000370300200120012900c8013703b005200141c8016a41c892c700411310a70220022005290000370300200320012900c8013703002001200141b0056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141b0056a200141b8036a41e00010bf091a200141d8026a41086a2208200141a4046a290200370300200141d8026a41106a2209200141ac046a290200370300200141d8026a41186a220a200141b4046a2802003602002001200129029c043703d802200141d0046a280200210b200141d4046a280200210c200141d8046a280200210d200141dc046a280200210e200141e0046a280200210f200141e4046a2802002110200141e8046a2802002111200128029804210420012802b804211220012802bc04211320012802c004211420012802c404211520012802cc04211620012802c80421022005200141f4046a2902003703002001200141ec046a2902003703c801200141fc046a2802002117024020024102460d00200141386a200141b0056a41e00010bf091a200141186a41186a200a280200360200200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903d802370318200120012903c8013703080b0240200128029405450d00200710310b200141d8026a200141386a41e00010bf091a200141b8026a41186a2205200141186a41186a280200360200200141b8026a41106a2207200141186a41106a290300370300200141b8026a41086a2208200141186a41086a290300370300200141a8026a41086a2209200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b0056a41186a4200370300200141b0056a41106a4200370300200141b0056a41086a22024200370300200142003703b005200141c8016a41b5d8c800410d10a7022002200141c8016a41086a2205290000370300200120012900c8013703b005200141c8016a41cfd8c800410c10a702200341086a2005290000370000200320012900c801370000200141b8036a200141b0056a412010b20220012802c8042102200141b0056a200141b8036a41e00010bf091a20014190056a41086a200141a4046a29020037030020014190056a41106a200141ac046a29020037030020014190056a41186a200141b4046a2802003602002001200129029c0437039005200141d0046a280200210b200141d4046a280200210c200141d8046a280200210d200141dc046a280200210e200141e0046a280200210f200141e4046a2802002110200141e8046a2802002111200128029804210420012802b804211220012802bc04211320012802c004211420012802c404211520012802cc04211620014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002117024020024102470d0041002104200141c8016a410041e00010c1091a200141c0016a4100360200200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210d41e400210e4102210f41c8012110410121114100210b41002102410021154101211441012113410121120c020b200141c8016a200141b0056a41e00010bf091a200141a8016a41186a20014190056a41186a280200360200200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141c8016a200141d8026a41e00010bf091a200141a8016a41186a2005280200360200200141a8016a41106a2007290300370300200141a8016a41086a200829030037030020014198016a41086a2009290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141c8016a41e00010bf091a200141d4046a200c360200200141cc046a2016360200200141a4046a200141a8016a41086a290300370200200141ac046a200141b8016a290300370200200141b4046a200141c0016a2802003602002001200036029804200120113602e804200120103602e4042001200f3602e0042001200e3602dc042001200d3602d8042001200b3602d004200120023602c804200120153602c404200120143602c004200120133602bc04200120123602b804200120012903a80137029c04200141f4046a20014198016a41086a290300370200200120173602fc0420012001290398013702ec04200141d8026a2006108c0920012802e002210520012802d8022102200141003602b805200142013703b005200141b8036a200141b0056a1080092002200520012802b00520012802b805109f02024020012802b405450d0020012802b00510310b20012802dc02450d00200210310b20014190066a24000ba00e01167f23004190066b22012400200141c0056a22024200370300200141a8056a41106a22034200370300200141a8056a41086a22044200370300200142003703a805200141c0016a41b490c700410b10a7022004200141c0016a41086a2205290000370300200120012900c0013703a805200141c0016a41c892c700411310a70220022005290000370300200320012900c0013703002001200141a8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141a8056a200141b8036a41e40010bf091a200141d0026a41086a2208200141a8046a290300370300200141d0026a41106a2209200141b0046a290300370300200120012903a0043703d002200141d0046a280200210a200141d4046a280200210b200141d8046a280200210c200141dc046a280200210d200141e0046a280200210e200141e4046a280200210f200141e8046a2802002110200128029c04210420012802b804211120012802bc04211220012802c004211320012802c404211420012802cc04211520012802c80421022005200141f4046a2902003703002001200141ec046a2902003703c001200141fc046a2802002116024020024102460d00200141306a200141a8056a41e40010bf091a200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903d002370318200120012903c0013703080b0240200128029405450d00200710310b200141d0026a200141306a41e40010bf091a200141b8026a41106a2205200141186a41106a290300370300200141b8026a41086a2207200141186a41086a290300370300200141a8026a41086a2208200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c0056a4200370300200141a8056a41106a4200370300200141a8056a41086a22024200370300200142003703a805200141c0016a41b5d8c800410d10a7022002200141c0016a41086a2205290000370300200120012900c0013703a805200141c0016a41cfd8c800410c10a702200341086a2005290000370000200320012900c001370000200141b8036a200141a8056a412010b20220012802c8042102200141a8056a200141b8036a41e40010bf091a20014190056a41086a200141a8046a29030037030020014190056a41106a200141b0046a290300370300200120012903a00437039005200141d0046a280200210a200141d4046a280200210b200141d8046a280200210c200141dc046a280200210d200141e0046a280200210e200141e4046a280200210f200141e8046a2802002110200128029c04210420012802b804211120012802bc04211220012802c004211320012802c404211420012802cc04211520014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002116024020024102470d0041e400210d41002104200141c0016a410041e40010c1091a200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210c4102210e41c801210f410121104100210a41002102410021144101211341012112410121110c020b200141c0016a200141a8056a41e40010bf091a200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141c0016a200141d0026a41e40010bf091a200141a8016a41106a2005290300370300200141a8016a41086a200729030037030020014198016a41086a2008290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141c0016a41e40010bf091a200141d4046a200b360200200141cc046a2015360200200141a8046a200141a8016a41086a290300370300200141b0046a200141b8016a2903003703002001200036029c04200120103602e8042001200f3602e4042001200e3602e0042001200d3602dc042001200c3602d8042001200a3602d004200120023602c804200120143602c404200120133602c004200120123602bc04200120113602b804200120012903a8013703a004200141f4046a20014198016a41086a290300370200200120163602fc0420012001290398013702ec04200141d0026a2006108c0920012802d802210520012802d0022102200141003602b005200142013703a805200141b8036a200141a8056a1080092002200520012802a80520012802b005109f02024020012802ac05450d0020012802a80510310b20012802d402450d00200210310b20014190066a24000ba00e01167f23004190066b22012400200141c0056a22024200370300200141a8056a41106a22034200370300200141a8056a41086a22044200370300200142003703a805200141c0016a41b490c700410b10a7022004200141c0016a41086a2205290000370300200120012900c0013703a805200141c0016a41c892c700411310a70220022005290000370300200320012900c0013703002001200141a8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141a8056a200141b8036a41e80010bf091a200141d0026a41086a2208200141ac046a290200370300200141d0026a41106a2209200141b4046a280200360200200120012902a4043703d002200141d0046a280200210a200141d4046a280200210b200141d8046a280200210c200141dc046a280200210d200141e0046a280200210e200141e4046a280200210f200141e8046a280200211020012802a004210420012802b804211120012802bc04211220012802c004211320012802c404211420012802cc04211520012802c80421022005200141f4046a2902003703002001200141ec046a2902003703c001200141fc046a2802002116024020024102460d00200141306a200141a8056a41e80010bf091a200141186a41106a2009280200360200200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903d002370318200120012903c0013703080b0240200128029405450d00200710310b200141d0026a200141306a41e80010bf091a200141b8026a41106a2205200141186a41106a280200360200200141b8026a41086a2207200141186a41086a290300370300200141a8026a41086a2208200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141c0056a4200370300200141a8056a41106a4200370300200141a8056a41086a22024200370300200142003703a805200141c0016a41b5d8c800410d10a7022002200141c0016a41086a2205290000370300200120012900c0013703a805200141c0016a41cfd8c800410c10a702200341086a2005290000370000200320012900c001370000200141b8036a200141a8056a412010b20220012802c8042102200141a8056a200141b8036a41e80010bf091a20014190056a41086a200141ac046a29020037030020014190056a41106a200141b4046a280200360200200120012902a40437039005200141d0046a280200210a200141d4046a280200210b200141d8046a280200210c200141dc046a280200210d200141e0046a280200210e200141e4046a280200210f200141e8046a280200211020012802a004210420012802b804211120012802bc04211220012802c004211320012802c404211420012802cc04211520014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002116024020024102470d0041002104200141c0016a410041e80010c1091a200141b8016a4100360200200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210c41e400210d4102210e41c801210f410121104100210a41002102410021144101211341012112410121110c020b200141c0016a200141a8056a41e80010bf091a200141a8016a41106a20014190056a41106a280200360200200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141c0016a200141d0026a41e80010bf091a200141a8016a41106a2005280200360200200141a8016a41086a200729030037030020014198016a41086a2008290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141c0016a41e80010bf091a200141d4046a200b360200200141cc046a2015360200200141ac046a200141a8016a41086a290300370200200141b4046a200141b8016a280200360200200120003602a004200120103602e8042001200f3602e4042001200e3602e0042001200d3602dc042001200c3602d8042001200a3602d004200120023602c804200120143602c404200120133602c004200120123602bc04200120113602b804200120012903a8013702a404200141f4046a20014198016a41086a290300370200200120163602fc0420012001290398013702ec04200141d0026a2006108c0920012802d802210520012802d0022102200141003602b005200142013703a805200141b8036a200141a8056a1080092002200520012802a80520012802b005109f02024020012802ac05450d0020012802a80510310b20012802d402450d00200210310b20014190066a24000bff0c01157f23004190066b22012400200141b8056a22024200370300200141b0056a22034200370300200141a0056a41086a22044200370300200142003703a005200141b8016a41b490c700410b10a7022004200141b8016a41086a2205290000370300200120012900b8013703a005200141b8016a41c892c700411310a70220022005290000370300200320012900b8013703002001200141a0056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141a0056a200141b8036a41ec0010bf091a200141c8026a41086a2208200141b0046a290300370300200120012903a8043703c802200141d0046a2802002109200141d4046a280200210a200141d8046a280200210b200141dc046a280200210c200141e0046a280200210d200141e4046a280200210e200141e8046a280200210f20012802a404210420012802b804211020012802bc04211120012802c004211220012802c404211320012802cc04211420012802c80421022005200141f4046a2902003703002001200141ec046a2902003703b801200141fc046a2802002115024020024102460d00200141286a200141a0056a41ec0010bf091a200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903c802370318200120012903b8013703080b0240200128029405450d00200710310b200141c8026a200141286a41ec0010bf091a200141b8026a41086a2205200141186a41086a290300370300200141a8026a41086a2207200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b8056a4200370300200141b0056a4200370300200141a0056a41086a22024200370300200142003703a005200141b8016a41b5d8c800410d10a7022002200141b8016a41086a2205290000370300200120012900b8013703a005200141b8016a41cfd8c800410c10a702200341086a2005290000370000200320012900b801370000200141b8036a200141a0056a412010b20220012802c8042102200141a0056a200141b8036a41ec0010bf091a20014190056a41086a200141b0046a29030037030020014180056a41086a200141f4046a290200370300200120012903a804370390052001200141ec046a29020037038005200141d4046a280200210a20012802cc042114200141fc046a2802002115024020024102470d0041002104200141b8016a410041ec0010c1091a200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210b41e400210c4102210d41c801210e4101210f4100210941002102410021134101211241012111410121100c020b200141d0046a2802002109200141d8046a280200210b200141dc046a280200210c200141e0046a280200210d200141e4046a280200210e200141e8046a280200210f20012802a404210420012802b804211020012802bc04211120012802c004211220012802c4042113200141b8016a200141a0056a41ec0010bf091a200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141b8016a200141c8026a41ec0010bf091a200141a8016a41086a200529030037030020014198016a41086a2007290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141b8016a41ec0010bf091a200141d4046a200a360200200141cc046a2014360200200141b0046a200141a8016a41086a290300370300200141f4046a20014198016a41086a290300370200200120003602a4042001200f3602e8042001200e3602e4042001200d3602e0042001200c3602dc042001200b3602d804200120093602d004200120023602c804200120133602c404200120123602c004200120113602bc04200120103602b804200120012903a8013703a80420012001290398013702ec04200120153602fc04200141c8026a2006108c0920012802d002210520012802c8022102200141003602a805200142013703a005200141b8036a200141a0056a1080092002200520012802a00520012802a805109f02024020012802a405450d0020012802a00510310b20012802cc02450d00200210310b20014190066a24000bff0c01157f23004190066b22012400200141b8056a22024200370300200141b0056a22034200370300200141a0056a41086a22044200370300200142003703a005200141b8016a41b490c700410b10a7022004200141b8016a41086a2205290000370300200120012900b8013703a005200141b8016a41c892c700411310a70220022005290000370300200320012900b8013703002001200141a0056a412010c00220014180056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128028005220720012802880510b202200141a0056a200141b8036a41f00010bf091a2005200141b4046a280200360200200120012902ac043703b801200141d0046a2802002108200141d4046a2802002109200141d8046a280200210a200141dc046a280200210b200141e0046a280200210c200141e4046a280200210d200141e8046a280200210e20012802a804210420012802b804210f20012802bc04211020012802c004211120012802c404211220012802cc04211320012802c8042102200141c8026a41086a2214200141f4046a2902003703002001200141ec046a2902003703c802200141fc046a2802002115024020024102460d00200141286a200141a0056a41f00010bf091a200141186a41086a2005280200360200200141086a41086a2014290300370300200120012903b801370318200120012903c8023703080b0240200128028405450d00200710310b200141c8026a200141286a41f00010bf091a200141b8026a41086a2205200141186a41086a280200360200200141a8026a41086a2207200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b8056a4200370300200141b0056a4200370300200141a0056a41086a22024200370300200142003703a005200141b8016a41b5d8c800410d10a7022002200141b8016a41086a2205290000370300200120012900b8013703a005200141b8016a41cfd8c800410c10a702200341086a2005290000370000200320012900b801370000200141b8036a200141a0056a412010b20220012802c8042102200141a0056a200141b8036a41f00010bf091a20014190056a41086a200141b4046a28020036020020014180056a41086a200141f4046a290200370300200120012902ac04370390052001200141ec046a29020037038005200141d4046a280200210920012802cc042113200141fc046a2802002115024020024102470d0041002104200141b8016a410041f00010c1091a200141a8016a41086a410036020020014198016a41086a4200370300200142003703a80120014200370398014106210a41e400210b4102210c41c801210d4101210e41002108410021024100211241012111410121104101210f0c020b200141d0046a2802002108200141d8046a280200210a200141dc046a280200210b200141e0046a280200210c200141e4046a280200210d200141e8046a280200210e20012802a804210420012802b804210f20012802bc04211020012802c004211120012802c4042112200141b8016a200141a0056a41f00010bf091a200141a8016a41086a20014190056a41086a28020036020020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141b8016a200141c8026a41f00010bf091a200141a8016a41086a200528020036020020014198016a41086a2007290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141b8016a41f00010bf091a200141d4046a2009360200200141cc046a2013360200200141b4046a200141a8016a41086a280200360200200141f4046a20014198016a41086a290300370200200120003602a8042001200e3602e8042001200d3602e4042001200c3602e0042001200b3602dc042001200a3602d804200120083602d004200120023602c804200120123602c404200120113602c004200120103602bc042001200f3602b804200120012903a8013702ac0420012001290398013702ec04200120153602fc04200141c8026a2006108c0920012802d002210520012802c8022102200141003602a805200142013703a005200141b8036a200141a0056a1080092002200520012802a00520012802a805109f02024020012802a405450d0020012802a00510310b20012802cc02450d00200210310b20014190066a24000bde1001187f23004190066b22012400200141b8056a41186a22024200370300200141b8056a41106a22034200370300200141b8056a41086a22044200370300200142003703b805200141d0016a41b490c700410b10a7022004200141d0016a41086a2205290000370300200120012900d0013703b805200141d0016a41c892c700411310a70220022005290000370300200320012900d0013703002001200141b8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141b8056a200141b8036a41d40010bf091a200141e0026a41086a220820014198046a290300370300200141e0026a41106a2209200141a0046a290300370300200141e0026a41186a220a200141a8046a290300370300200141e0026a41206a220b200141b0046a29030037030020012001290390043703e002200141d0046a280200210c200141d4046a280200210d200141d8046a280200210e200141dc046a280200210f200141e0046a2802002110200141e4046a2802002111200141e8046a2802002112200128028c04210420012802b804211320012802bc04211420012802c004211520012802c404211620012802cc04211720012802c80421022005200141f4046a2902003703002001200141ec046a2902003703d001200141fc046a2802002118024020024102460d00200141c0006a200141b8056a41d40010bf091a200141186a41206a200b290300370300200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903e002370318200120012903d0013703080b0240200128029405450d00200710310b200141e0026a200141c0006a41d40010bf091a200141b8026a41206a2205200141186a41206a290300370300200141b8026a41186a2207200141186a41186a290300370300200141b8026a41106a2208200141186a41106a290300370300200141b8026a41086a2209200141186a41086a290300370300200141a8026a41086a220a200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b8056a41186a4200370300200141b8056a41106a4200370300200141b8056a41086a22024200370300200142003703b805200141d0016a41b5d8c800410d10a7022002200141d0016a41086a2205290000370300200120012900d0013703b805200141d0016a41cfd8c800410c10a702200341086a2005290000370000200320012900d001370000200141b8036a200141b8056a412010b20220012802c8042102200141b8056a200141b8036a41d40010bf091a20014190056a41086a20014198046a29030037030020014190056a41106a200141a0046a29030037030020014190056a41186a200141a8046a29030037030020014190056a41206a200141b0046a290300370300200120012903900437039005200141d0046a280200210c200141d4046a280200210d200141d8046a280200210e200141dc046a280200210f200141e0046a2802002110200141e4046a2802002111200141e8046a2802002112200128028c04210420012802b804211320012802bc04211420012802c004211520012802c404211620012802cc04211720014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002118024020024102470d0041002104200141d0016a410041d40010c1091a200141c8016a4200370300200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210e41e400210f4102211041c8012111410121124100210c41002102410021164101211541012114410121130c020b200141d0016a200141b8056a41d40010bf091a200141a8016a41206a20014190056a41206a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398010c010b200141d0016a200141e0026a41d40010bf091a200141a8016a41206a2005290300370300200141a8016a41186a2007290300370300200141a8016a41106a2008290300370300200141a8016a41086a200929030037030020014198016a41086a200a290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141d0016a41d40010bf091a200141d4046a200d360200200141cc046a201736020020014198046a200141a8016a41086a290300370300200141a0046a200141b8016a290300370300200141a8046a200141c0016a290300370300200141b0046a200141c8016a2903003703002001200036028c04200120123602e804200120113602e404200120103602e0042001200f3602dc042001200e3602d8042001200c3602d004200120023602c804200120163602c404200120153602c004200120143602bc04200120133602b804200120012903a80137039004200141f4046a20014198016a41086a290300370200200120183602fc0420012001290398013702ec04200141e0026a2006108c0920012802e802210520012802e0022102200141003602c005200142013703b805200141b8036a200141b8056a1080092002200520012802b80520012802c005109f02024020012802bc05450d0020012802b80510310b20012802e402450d00200210310b20014190066a24000be61001187f23004190066b22012400200141b8056a41186a22024200370300200141b8056a41106a22034200370300200141b8056a41086a22044200370300200142003703b805200141d0016a41b490c700410b10a7022004200141d0016a41086a2205290000370300200120012900d0013703b805200141d0016a41c892c700411310a70220022005290000370300200320012900d0013703002001200141b8056a412010c00220014190056a417f2001280204410020012802001b220241026a220420042002491b2206108c09200141b8036a200128029005220720012802980510b202200141b8056a200141b8036a41d80010bf091a200141e0026a41086a22082001419c046a290200370300200141e0026a41106a2209200141a4046a290200370300200141e0026a41186a220a200141ac046a290200370300200141e0026a41206a220b200141b4046a28020036020020012001290294043703e002200141d0046a280200210c200141d4046a280200210d200141d8046a280200210e200141dc046a280200210f200141e0046a2802002110200141e4046a2802002111200141e8046a2802002112200128029004210420012802b804211320012802bc04211420012802c004211520012802c404211620012802cc04211720012802c80421022005200141f4046a2902003703002001200141ec046a2902003703d001200141fc046a2802002118024020024102460d00200141c0006a200141b8056a41d80010bf091a200141186a41206a200b280200360200200141186a41186a200a290300370300200141186a41106a2009290300370300200141186a41086a2008290300370300200141086a41086a2005290300370300200120012903e002370318200120012903d0013703080b0240200128029405450d00200710310b200141e0026a200141c0006a41d80010bf091a200141b8026a41206a2205200141186a41206a280200360200200141b8026a41186a2207200141186a41186a290300370300200141b8026a41106a2208200141186a41106a290300370300200141b8026a41086a2209200141186a41086a290300370300200141a8026a41086a220a200141086a41086a290300370300200120012903183703b802200120012903083703a8020240024020024102470d00200141b8056a41186a4200370300200141b8056a41106a4200370300200141b8056a41086a22024200370300200142003703b805200141d0016a41b5d8c800410d10a7022002200141d0016a41086a2205290000370300200120012900d0013703b805200141d0016a41cfd8c800410c10a702200341086a2005290000370000200320012900d001370000200141b8036a200141b8056a412010b20220012802c8042102200141b8056a200141b8036a41d80010bf091a41e400210f20014190056a41086a200141b8036a41e4006a29020037030020014190056a41106a200141a4046a29020037030020014190056a41186a200141ac046a29020037030020014190056a41206a200141b4046a280200360200200120012902940437039005200141d0046a280200210c200141d4046a280200210d200141d8046a280200210e200141dc046a2802002105200141e0046a2802002110200141e4046a2802002111200141e8046a2802002112200128029004210420012802b804211320012802bc04211420012802c004211520012802c404211620012802cc04211720014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002118024020024102470d0041002104200141d0016a410041d80010c1091a200141c8016a4100360200200141c0016a4200370300200141b8016a4200370300200141a8016a41086a420037030020014198016a41086a4200370300200142003703a80120014200370398014106210e4102211041c8012111410121124100210c41002102410021164101211541012114410121130c020b200141d0016a200141b8056a41d80010bf091a200141a8016a41206a20014190056a41206a280200360200200141a8016a41186a20014190056a41186a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41086a20014190056a41086a29030037030020014198016a41086a20014180056a41086a29030037030020012001290390053703a8012001200129038005370398012005210f0c010b200141d0016a200141e0026a41d80010bf091a200141a8016a41206a2005280200360200200141a8016a41186a2007290300370300200141a8016a41106a2008290300370300200141a8016a41086a200929030037030020014198016a41086a200a290300370300200120012903b8023703a801200120012903a802370398010b024020042000460d00200141b8036a200141d0016a41d80010bf091a200141d4046a200d360200200141cc046a20173602002001419c046a200141a8016a41086a290300370200200141a4046a200141b8016a290300370200200141ac046a200141c0016a290300370200200141b4046a200141c8016a2802003602002001200036029004200120123602e804200120113602e404200120103602e0042001200f3602dc042001200e3602d8042001200c3602d004200120023602c804200120163602c404200120153602c004200120143602bc04200120133602b804200120012903a80137029404200141f4046a20014198016a41086a290300370200200120183602fc0420012001290398013702ec04200141e0026a2006108c0920012802e802210520012802e0022102200141003602c005200142013703b805200141b8036a200141b8056a1080092002200520012802b80520012802c005109f02024020012802bc05450d0020012802b80510310b20012802e402450d00200210310b20014190066a24000ba31d01217f23004190066b22012400200141d0056a41186a22024200370300200141d0056a41106a22034200370300200141d0056a41086a22044200370300200142003703d005200141e8016a41b490c700410b10a7022004200141e8016a41086a2205290000370300200120012900e8013703d005200141e8016a41c892c700411310a70220022005290000370300200320012900e8013703002001200141d0056a412010c00220014190056a417f2001280204410020012802001b220641026a220720072006491b2208108c09200141b8036a200128029005220920012802980510b2022004200141b8036a41086a2903003703002003200141b8036a41106a2903003703002002200141b8036a41186a290300370300200141d0056a41206a220a200141b8036a41206a290300370300200141d0056a41286a220b200141b8036a41286a290300370300200141d0056a41306a220c200141b8036a41306a290300370300200141d0056a41386a220d200141b8036a41386a290300370300200120012903b8033703d005200141f8026a41086a220e20014184046a290200370300200141f8026a41106a220f2001418c046a290200370300200141f8026a41186a221020014194046a290200370300200141f8026a41206a22112001419c046a290200370300200141f8026a41286a2212200141a4046a290200370300200141f8026a41306a2213200141ac046a290200370300200141f8026a41386a2214200141b4046a280200360200200120012902fc033703f80220012802f80321072005200141f4046a2902003703002001200141ec046a2902003703e801200141fc046a2802002115200141e8046a2802002116200141e4046a2802002117200141e0046a2802002118200141dc046a2802002119200141d8046a280200211a200141d4046a280200211b200141d0046a280200211c20012802cc04211d20012802c404211e20012802c004211f20012802bc04212020012802b8042121024020012802c80422064102460d00200141d8006a41386a200d290300370300200141d8006a41306a200c290300370300200141d8006a41286a200b290300370300200141d8006a41206a200a290300370300200141d8006a41186a2002290300370300200141d8006a41106a2003290300370300200141d8006a41086a2004290300370300200141186a41086a200e290300370300200141186a41106a200f290300370300200141186a41186a2010290300370300200141186a41206a2011290300370300200141186a41286a2012290300370300200141186a41306a2013290300370300200141186a41386a2014280200360200200120012903d005370358200120012903f802370318200141086a41086a2005290300370300200120012903e8013703080b0240200128029405450d00200910310b200141f8026a41086a2202200141d8006a41086a290300370300200141f8026a41106a2204200141d8006a41106a290300370300200141f8026a41186a2205200141d8006a41186a290300370300200141f8026a41206a2209200141d8006a41206a290300370300200141f8026a41286a220a200141d8006a41286a290300370300200141f8026a41306a220b200141d8006a41306a290300370300200141f8026a41386a220c200141d8006a41386a290300370300200120012903583703f802200141b8026a41086a220d200141186a41086a290300370300200141b8026a41106a220e200141186a41106a290300370300200141b8026a41186a220f200141186a41186a290300370300200141b8026a41206a2210200141186a41206a290300370300200141b8026a41286a2211200141186a41286a290300370300200141b8026a41306a2212200141186a41306a290300370300200141b8026a41386a2213200141186a41386a280200360200200120012903183703b802200141a8026a41086a2214200141086a41086a290300370300200120012903083703a8020240024020064102470d00200141d0056a41186a22044200370300200141d0056a41106a22054200370300200141d0056a41086a22024200370300200142003703d005200141e8016a41b5d8c800410d10a7022002200141e8016a41086a2206290000370300200120012900e8013703d005200141e8016a41cfd8c800410c10a702200341086a2006290000370000200320012900e801370000200141b8036a200141d0056a412010b20220012802c80421062002200141b8036a41086a2903003703002005200141b8036a41106a2903003703002004200141b8036a41186a290300370300200141d0056a41206a200141b8036a41206a290300370300200141d0056a41286a200141b8036a41286a290300370300200141d0056a41306a200141b8036a41306a290300370300200141d0056a41386a200141b8036a41386a290300370300200120012903b8033703d00520014190056a41086a20014184046a29020037030020014190056a41106a2001418c046a29020037030020014190056a41186a20014194046a29020037030041e400211920014190056a41206a200141b8036a41e4006a29020037030020014190056a41286a200141a4046a29020037030020014190056a41306a200141ac046a29020037030020014190056a41386a200141b4046a280200360200200120012902fc033703900520012802f803210720014180056a41086a200141f4046a2902003703002001200141ec046a29020037038005200141fc046a2802002115200141d4046a280200211b20012802cc04211d024020064102470d00200141e8016a41386a4200370300200141e8016a41306a4200370300200141e8016a41286a4200370300200141e8016a41206a4200370300200141e8016a41186a4200370300200141e8016a41106a4200370300200141e8016a41086a4200370300200141a8016a41086a4200370300200141a8016a41106a4200370300200141a8016a41186a4200370300200141a8016a41206a4200370300200141a8016a41286a4200370300200141a8016a41306a420037030041002107200141a8016a41386a410036020020014198016a41086a4200370300200142003703e801200142003703a80120014200370398014106211a4102211841c8012117410121164100211c410021064100211e4101211f41012120410121210c020b200141e8046a2802002116200141e4046a2802002117200141e0046a2802002118200141dc046a2802002119200141d8046a280200211a200141d0046a280200211c20012802c404211e20012802c004211f20012802bc04212020012802b8042121200141e8016a41386a200141d0056a41386a290300370300200141e8016a41306a200141d0056a41306a290300370300200141e8016a41286a200141d0056a41286a290300370300200141e8016a41206a200141d0056a41206a290300370300200141e8016a41186a200141d0056a41186a290300370300200141e8016a41106a200141d0056a41106a290300370300200141e8016a41086a200141d0056a41086a290300370300200141a8016a41086a20014190056a41086a290300370300200141a8016a41106a20014190056a41106a290300370300200141a8016a41186a20014190056a41186a290300370300200141a8016a41206a20014190056a41206a290300370300200141a8016a41286a20014190056a41286a290300370300200141a8016a41306a20014190056a41306a290300370300200141a8016a41386a20014190056a41386a280200360200200120012903d0053703e80120012001290390053703a80120014198016a41086a20014180056a41086a2903003703002001200129038005370398010c010b200141e8016a41386a200c290300370300200141e8016a41306a200b290300370300200141e8016a41286a200a290300370300200141e8016a41206a2009290300370300200141e8016a41186a2005290300370300200141e8016a41106a2004290300370300200141e8016a41086a2002290300370300200141a8016a41086a200d290300370300200141a8016a41106a200e290300370300200141a8016a41186a200f290300370300200141a8016a41206a2010290300370300200141a8016a41286a2011290300370300200141a8016a41306a2012290300370300200141a8016a41386a2013280200360200200120012903f8023703e801200120012903b8023703a80120014198016a41086a2014290300370300200120012903a802370398010b024020072000460d00200141b8036a41386a200141e8016a41386a290300370300200141b8036a41306a200141e8016a41306a290300370300200141b8036a41286a200141e8016a41286a290300370300200141b8036a41206a200141e8016a41206a290300370300200141b8036a41186a200141e8016a41186a290300370300200141b8036a41106a200141e8016a41106a290300370300200141b8036a41086a200141e8016a41086a290300370300200120012903e8013703b803200120003602f803200141cc046a201d360200200141d4046a201b36020020014184046a200141a8016a41086a2903003702002001418c046a200141a8016a41106a29030037020020014194046a200141a8016a41186a2903003702002001419c046a200141a8016a41206a290300370200200141a4046a200141a8016a41286a290300370200200141ac046a200141a8016a41306a290300370200200141b4046a200141a8016a41386a280200360200200120213602b804200120203602bc042001201f3602c0042001201e3602c404200120063602c8042001201c3602d0042001201a3602d804200120193602dc04200120183602e004200120173602e404200120163602e804200120012903a8013702fc03200141f4046a20014198016a41086a290300370200200120153602fc0420012001290398013702ec04200141f8026a2008108c09200128028003210620012802f8022103200141003602d805200142013703d005200141b8036a200141d0056a1080092003200620012802d00520012802d805109f02024020012802d405450d0020012802d00510310b20012802fc02450d00200310310b20014190066a24000bcc0101037f200028022822012001280200417f6a220236020020002d0001210302400240024020002d00000d004100210020020d022001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a22023602002002450d010c020b4101210020020d012001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22022002280200417f6a220236020020020d010b200110310b200341ff01714102472000720b880301037f230041e0006b22032400200341086a41caeac400410810a702200341186a4180b3c500411210a702200320013602482003200341c8006a410410c802370338200341dc006a2201200341c8006a41046a3602002003200341386a41086a3602542003200341c8006a3602582003200341386a360250200341286a200341d0006a108801200320023602442003200341c4006a410410c8023703482001200341c4006a41046a3602002003200341c8006a41086a3602542003200341c4006a3602582003200341c8006a360250200341386a200341d0006a1088010240024020032802302201200328024022046a41206a2202417f4c0d000240024020020d00410121050c010b2002102f2205450d020b2000410036020820002002360204200020053602002000200341086a4110107e2000200341186a4110107e2000200328022822022001107e2000200328023822012004107e0240200328023c450d00200110310b0240200328022c450d00200210310b200341e0006a24000f0b103b000b1039000b11002001ad4220862000ad8410264101460bd80703077f047e057f230041d0016b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41caeac400410810a702200141a8016a41d2eac400410410a7022002200141a8016a41086a290000370300200320012900a8013703002001412036022c2001200141086a360228200141306a200141086a412010d202024002400240200128023022040d00410021050c010b200128023421062001200141306a41086a280200360244200120043602402001200141c0006a10bb010240024020012802000d00024002402001280204220720012802444105762202200220074b1b22024105742203417f4c0d000240024020020d00410121050c010b2003102f2205450d060b2002ad2108024002402007450d00200141a8016a41017221030340200141a8016a200141c0006a10b50120012d00a8014101460d04200141e8006a41086a200341086a2900002209370300200141e8006a41106a200341106a290000220a370300200141e8006a41186a200341186a290000220b370300200141c8006a41086a220c2009370300200141c8006a41106a220d200a370300200141c8006a41186a220e200b37030020012003290000220937036820012009370348024020084220882209a722022008a7470d00200241016a220f2002490d0420024101742210200f200f2010491b220f4104200f41044b1b220f41ffffff3f71200f462110200f410574210f0240024020020d00200141003602a8010c010b200141013602b001200120053602a801200120094205863e02ac010b20014188016a200f2010200141a8016a104e200128029001210f2001280288014101460d03200128028c012105200f410576ad21080b200520024105746a220f2001290348370000200f41186a200e290300370000200f41106a200d290300370000200f41086a200c290300370000200842ffffffff0f83200241016aad4220868421082007417f6a22070d000b0b2005450d030c040b200f0d050b103b000b0240200842ffffff3f83500d00200510310b0b41002105200141003602900120014201370388012001410c36026c2001200141286a360268200120014188016a360248200141bc016a4101360200200142013702ac012001419086c4003602a8012001200141e8006a3602b801200141c8006a41d8ddc900200141a8016a10401a20012802880120012802900110d904200128028c01450d0020012802880110310b2006450d00200410310b0240024020050d0020004100360208200042013702000c010b20002008370204200020053602000b200141d0016a24000f0b1039000bae4808027f017e027f017e017f017e207f057e230041e00b6b22042400200241106a22052903002106200328021021072003280200210820022903002109200441f4036a200241e8016a290000370200200441fc036a200241f0016a29000037020020044184046a200241f8016a290000370200200441e7e485f3063602e8032004200241e0016a2900003702ec03200441b80b6a41106a2003280210360200200441b80b6a41086a200341086a290200370300200420032902003703b80b200441c0006a200441e8036a200441b80b6a10cb050240024002400240024002400240024002400240024002400240024020042d00404101470d00200441206a41086a200441ca006a290100370300200441206a41106a200441d2006a290100370300200441376a200441d9006a2900003700002004200429014237032020042d0041210a2002290308210b200441c0006a200541f00110bf091a02400240200b4201520d00200441e8036a200441c0006a41f00110bf091a200441e8036a410c6a200441d8046a412010c209450d010c040b200441e8036a200441c0006a41f00110bf091a200441e8036a410c6a200441d8046a412010c2090d0220042802f00320042802d404470d020c050b20042802f00320042802d404470d020c040b200441c0006a410510dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000c060b200441d4046a2102200441dc0b6a2205200441e8036a41086a220341206a280200360200200441d40b6a220c200341186a290200370200200441cc0b6a220d200341106a290200370200200441b80b6a410c6a200341086a290200370200200441003602b80b200420032902003702bc0b20042903e803210b200441003602b803200442013703b003200b200441b80b6a2009200441b0036a10d00620044194046a20042802b003220e20042802b803200441b8056a220310f005210f024020042802b403450d00200e10310b2005200241206a280200360200200c200241186a290200370200200d200241106a290200370200200441c40b6a200241086a290200370200200441003602b80b200420022902003702bc0b20042903e803210b200441003602b803200442013703b003200b200441b80b6a2009200441b0036a10d006200441f8046a20042802b003220520042802b803200310f0052102024020042802b403450d00200510310b200f200271450d020c010b200441d4046a2102200441dc0b6a2205200441e8036a41086a220341206a280200360200200441d40b6a220c200341186a290200370200200441cc0b6a220d200341106a290200370200200441b80b6a410c6a200341086a290200370200200441013602b80b200420032902003702bc0b20042903e803210b200441003602b803200442013703b003200b200441b80b6a2009200441b0036a10d00620044194046a20042802b003220e20042802b803200441b8056a220310f005210f024020042802b403450d00200e10310b2005200241206a280200360200200c200241186a290200370200200d200241106a290200370200200441c40b6a200241086a290200370200200441013602b80b200420022902003702bc0b20042903e803210b200441003602b803200442013703b003200b200441b80b6a2009200441b0036a10d006200441f8046a20042802b003220520042802b803200310f0052102024020042802b403450d00200510310b200f200271450d010b20094200520d01200441e8036a420010ba07200441086a20042802e803220320042802f00310c002200428020c210520042802082102024020042802ec03450d00200310310b4101210c0c020b200441c0006a410610dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000c020b200441e8036a2009427f7c10ba07200441186a20042802e803220520042802f00310c002200428021c210320042802182102024020042802ec03450d00200510310b024020024101460d00200441c0006a410610dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000c020b200441e8036a200910ba07200441106a20042802e803220c20042802f00310c0022004280214210520042802102102024020042802ec03450d00200c10310b4100210c0b024020024101460d00200441c0006a410610dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000c010b02400240200820054b0d00410121104102200820034d200c1b22024102460d012002410171450d010b200441c0006a410610dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000c010b20012d00002202410146221141057421032001411f6a2d000021052001411e6a2d000021082001411d6a2d0000210c2001411c6a2d0000210d2001411b6a2d0000210f2001411a6a2d0000210e200141196a2d00002112200141186a2d00002113200141176a2d00002114200141166a2d00002115200141156a2d00002116200141146a2d00002117200141136a2d00002118200141126a2d00002119200141116a2d0000211a2001410f6a2d0000211b2001410e6a2d0000211c2001410d6a2d0000211d2001410c6a2d0000211e2001410b6a2d0000211f2001410a6a2d00002120200141096a2d00002121200141076a2d00002122200141066a2d00002123200141056a2d00002124200141036a2d00002125200141206a2d0000212620012d0010212720012d0008212820012d0004212920012d0002212a20012d00012101024020024101470d002003102f2210450d070b02400240024002402003410576222b20114f0d002003410476222b2011202b20114b1b22114104201141044b1b41057421110240024020024101460d00200441003602e8030c010b200441f0036a4101360200200420033602ec03200420103602e8030b200441c0006a20114101200441e8036a104e200441c8006a280200210320042802404101460d01200428024421102003410576212b0b20020d01410021030c020b2003450d070c080b410021032010210203402002411f6a20263a00002002200141ff0171202a4108747241ffff0371202541ff017120294108747241107472ad202441ff017120234108747241ffff0371202241ff017120284108747241107472ad422086843700002002202141ff017120204108747241ffff0371201f41ff0171201e4108747241107472ad201d41ff0171201c4108747241ffff0371201b41ff017120274108747241107472ad422086843700082002411e6a20053a0000200241106a201a41ff017120194108747241ffff0371201841ff017120174108747241107472ad201641ff017120154108747241ffff0371201441ff017120134108747241107472ad422086843700002002411c6a200c41ff01712008410874723b0000200241186a201241ff0171200e4108747241ffff0371200f41ff0171200d4108747241107472360000200241206a2102200341016a2103410041ff01710d000b0b200441b0026a41176a2202200441206a41176a290000370000200441b0026a41106a2201200441206a41106a290300370300200441b0026a41086a2205200441206a41086a290300370300200420042903203703b0024120102f2208450d062008200a3a0000200820042903b002370001200841096a2005290300370000200841116a2001290300370000200841186a2002290000370000200420033602d8022004202b3602d402200420103602d00241002114200441003602c00b200442013703b80b200420093703e803200441b80b6a200441e8036a4108107e200420063703e803200441b80b6a200441e8036a4108107e200441e8036a41d98fc20010d104200441c0006a20042802e803220320042802f00310950420042902444200200428024022021b210b2002410120021b210e024020042802ec03450d00200310310b2004200b4220883e02b4032004200e3602b0032004200441b0036a10bb014108211241002113024020042802000d002004280204221220042802b40341306e2202200220124b1bad42307e222c422088a70d06202ca72202417f4c0d060240024020020d00410821160c010b2002102f2216450d080b200241306e21150240024020120d00410021120c010b200441e8036a410472210d200441e8036a41196a2117200441e8036a41126a2118200441f3036a2119410021130240034020042802b40322034108490d0120042802b003220c290000212c2004200c41086a3602b0032004200341786a22023602b40320024108490d01201341016a21142004200341706a220f3602b4032004200c41106a3602b003200c290008212d41002102200441003602e8032003416f6a21030340200f2002460d02200d20026a200c20026a220541106a2d00003a00002004200241016a22013602e8032004200541116a3602b003200420033602b4032003417f6a21032001210220014120470d000b200441d8036a41026a2202201941026a2d00003a0000200441a0036a41026a2203201841026a2d00003a00002004419c036a41026a2201201741026a2d00003a00002004200d2f01003b01402004200d41026a2d00003a0042200420192f00003b01d803200420182f00003b01a003200420172f00003b019c0320042800ef03210520042801f603210c20042800fd03210f200428028804211a200428028404211b200420042d00423a008e03200420042f01403b018c0320044198036a41026a221c20022d00003a0000200420042f01d8033b01980320044194036a41026a220220032d00003a0000200420042f01a0033b01940320044190036a41026a220320012d00003a0000200420042f019c033b01900320044188036a41026a2201201c2d00003a0000200420042f0198033b01880320044184036a41026a221c20022d00003a0000200420042f0194033b01840320044180036a41026a220220032d00003a0000200420042f0190033b018003200420042d008e033a00fa02200420042f018c033b01f802200441f4026a41026a220320012d00003a0000200420042f0188033b01f402200441f0026a41026a2201201c2d00003a0000200420042f0184033b01f002200441ec026a41026a221c20022d00003a0000200420042f0180033b01ec02200420042d00fa023a00ea02200420042f01f8023b01e802200441e4026a41026a221d20032d00003a0000200420042f01f4023b01e402200441e0026a41026a220320012d00003a0000200420042f01f0023b01e002200441dc026a41026a2201201c2d00003a0000200420042f01ec023b01dc02024020132015470d00201541016a22022015490d0a2015410174221c2002201c20024b1b22024104200241044b1bad42307e222e422088a7454103742102202ea7211c0240024020150d00200441003602e8030c010b200441083602f003200420163602e8032004201541306c3602ec030b200441c0006a201c2002200441e8036a104e20042802482102024020042802404101470d0020020d0c0c0b0b20042802442116200241306e21150b2016201341306c6a2202202d3703082002202c370300200241126a20042d00ea023a0000200220042f01e8023b0110200241196a201d2d00003a0000200241176a20042f01e4023b0000200241206a20032d00003a00002002411e6a20042f01e0023b0000200241136a20053600002002411a6a200c360000200241216a200f360000200241276a20012d00003a0000200241256a20042f01dc023b00002002412c6a201a360000200241286a201b3600002014211320142012460d020c000b0b410021144108211202402015450d00201541306c450d00201610310b410021130c010b2012410020161b21132015410020161b21142016410820161b21120b200441e8036a41d98fc200200441b80b6a10d204200441c0006a20042802e803220320042802f00310d304200428024021022004290244212c024020042802ec03450d00200310310b20042802c00b211b20042802bc0b211920042802b80b211a0240200ba7450d00200e10310b202c420020021b210b200841086a290000212c200841106a290000212d2008290000212e200441b0036a41186a200841186a290000370300200441b0036a41106a202d370300200441b0036a41086a202c3703002004202e3703b003200442013703e803200441003602f00320042009370340200441e8036a200441c0006a4108107e20042006370340200441e8036a200441c0006a4108107e200441fc036a41002900e18f42370200200441002900d98f423702f4032004200441b0036a36028404200441b80b6a200441e8036a10d404024020042802ec03450d0020042802e80310310b200b422088212c200441e8036a200441b80b6a10d50420042802e803220120042802f003108f032103024020042802ec03450d00200110310b2002410120021b2117202ca72115200ba7211641002102024020030d00200441c0006a41186a2203200441b0036a41186a290300370300200441c0006a41106a2201200441b0036a41106a290300370300200441c0006a41086a2205200441b0036a41086a290300370300200420042903b003370340200441e8036a200441d0026a10a602200441f4036a220241186a2003290300370000200241106a2001290300370000200241086a200529030037000020022004290340370000200441d8036a200441b80b6a10d50420042802e003210c20042802d80321012004410036024820044201370340200441c0006a20024120107e20042802e8032105200441c0006a20042802f003220210cb0102402002450d0020024105742103200521020340200441c0006a20024120107e200241206a2102200341606a22030d000b0b2001200c200428024022022004280248109f0202402004280244450d00200210310b024020042802dc03450d00200110310b024020042802ec0341ffffff3f71450d00200510310b200441c0006a41186a220f200441b80b6a41186a290300370300200441c0006a41106a220e200441b80b6a41106a290300370300200441c0006a41086a2218200441b80b6a41086a290300370300200420042903b80b3703404100210202400240024020130e020201000b410021022013210303400240417f20122003410176220520026a220c41306c6a220d290300220b200952200b2009541b22010d00417f200d290308220b200652200b2006541b21010b2002200c20014101461b2102200320056b220341014b0d000b0b02400240417f2012200241306c6a2201290300220b200952200b2009541b22030d0041ff0121032001290308220b2006540d01200b20065221030b2003450d010b2002200341ff017141ff01466a21020b200441e8036a41186a200f290300370300200441e8036a41106a200e290300370300200441e8036a41086a2018290300370300200420042903403703e80320132002490d02024020132014470d00201441016a22032014490d07201441017422012003200120034b1b22034104200341044b1bad42307e220b422088a7454103742103200ba721010240024020140d00200441003602d8030c010b200441083602e003200420123602d8032004201441306c3602dc030b200441a0036a20012003200441d8036a104e20042802a803210320042802a0034101460d0520042802a4032112200341306e21140b2012200241306c6a220341306a2003201320026b41306c10c0091a2003200637030820032009370300200341286a200441e8036a41186a2201290300370300200341206a200441e8036a41106a2205290300370300200341186a200441e8036a41086a220c290300370300200320042903e8033703102001200441c0006a41186a2903003703002005200441c0006a41106a290300370300200c200441c0006a41086a290300370300200420042903403703e803024020152016470d00201641016a22022016490d07201641017422032002200320024b1b22024104200241044b1b220241ffffff3f712002462103200241057421020240024020160d00200441003602d8030c010b200441013602e003200420173602d803200420164105743602dc030b200441a0036a20022003200441d8036a104e20042802a8032102024020042802a0034101470d0020020d090c080b20042802a4032117200241057621160b41012102201341016a2113201720154105746a220320042903e803370000200341186a2001290300370000200341106a2005290300370000200341086a200c290300370000201541016a21150b20081031024002402002450d000240024002402015450d0020154105742105200441e8036a4104722102201721030340200441d8036a200310d504200441e8036a20042802d803220820042802e00310d604200441c0006a41086a220c200241086a290200370300200441c0006a41106a220d200241106a290200370300200441c0006a41186a220f200241186a290200370300200441c0006a41206a220e200241206a290200370300200420022902003703400240024020042802e80322010d00410021010c010b200441b80b6a41206a200e290300370300200441b80b6a41186a200f290300370300200441b80b6a41106a200d290300370300200441b80b6a41086a200c290300370300200420042903403703b80b0b024020042802dc03450d00200810310b20010d02200341206a2103200541606a22050d000b0b4200210b4104210e0c010b200441b0036a41206a2202200441b80b6a41206a290300370300200441b0036a41186a2208200441b80b6a41186a290300370300200441b0036a41106a220c200441b80b6a41106a290300370300200441b0036a41086a220d200441b80b6a41086a290300370300200420042903b80b3703b003412c102f220e450d09200e2001360200200e20042903b003370204200e410c6a200d290300370200200e41146a200c290300370200200e411c6a2008290300370200200e41246a2002290300370200024020054120470d00428180808010210b0c010b200341206a2108201720154105746a221841606a211c200441e8036a4104722102428180808010210b0340200821030340200441d8036a200310d504200441e8036a20042802d803220520042802e00310d604200441c0006a41086a2208200241086a290200370300200441c0006a41106a220c200241106a290200370300200441c0006a41186a220d200241186a290200370300200441c0006a41206a220f200241206a290200370300200420022902003703400240024020042802e80322010d00410021010c010b200441b80b6a41206a200f290300370300200441b80b6a41186a200d290300370300200441b80b6a41106a200c290300370300200441b80b6a41086a2008290300370300200420042903403703b80b0b024020042802dc03450d00200510310b024020010d002018200341206a2203470d010c030b0b200441b0036a41206a200441b80b6a41206a290300222c370300200441b0036a41186a200441b80b6a41186a290300222d370300200441b0036a41106a200441b80b6a41106a290300222e370300200441b0036a41086a200441b80b6a41086a290300222f370300200420042903b80b22303703b003200441e8036a41206a220c202c370300200441e8036a41186a220d202d370300200441e8036a41106a220f202e370300200441e8036a41086a221d202f370300200420303703e80302400240200b422088a72205200ba7460d00200b212c0c010b200541016a22082005490d0a2005410174221e20082008201e491b22084104200841044b1bad422c7e222c422088a7454102742108202ca7211e0240024020050d00200441003602400c010b200441043602482004200e36024020042005412c6c3602440b200441b80b6a201e2008200441c0006a104e20042802c00b210820042802b80b4101460d0920042802bc0b210e2008412c6ead212c0b200341206a2108200e2005412c6c6a22052001360200200520042903e8033702042005410c6a201d290300370200200541146a200f2903003702002005411c6a200d290300370200200541246a200c290300370200202c42ffffffff0f83200b4280808080107c4280808080708384210b201c2003470d000b0b20044188046a201336020020044184046a2014360200200441fc036a2015360200200441f8036a20163602002004201236028004200420173602f4032004201b3602f003200420193602ec032004201a3602e803201341306c4104722202417f4c0d072002102f2203450d08200441003602c00b200420023602bc0b200420033602b80b200441b80b6a201310cb0102402013450d002012201341306c6a210120122102034020042002290300370340200441b80b6a200441c0006a4108107e2004200241086a290300370340200441b80b6a200441c0006a4108107e4120102f2203450d0a2004422037024420042003360240200441c0006a200241106a22024120107e200441b80b6a200428024022032004280248107e02402004280244450d00200310310b200241206a22022001470d000b0b200441c0006a41d98fc20010d104200428024022022004280248200441b80b6a10de0202402004280244450d00200210310b024020042802bc0b450d0020042802b80b10310b200441c0006a41d98fc200200441e8036a10d204200428024022022004280248200441f4036a10d80402402004280244450d00200210310b02402019450d00201a10310b0240201641ffffff3f71450d00201710310b2014450d01201441306c450d01201210310c010b02402019450d00201a10310b0240201641ffffff3f71450d00201710310b4100210e02402014450d00201441306c450d00201210310b0b024020042802d40241ffffff3f71450d0020042802d00210310b0240200e450d0020074101200741014b1b2202418094ebdc036e2002418094ebdc03704100476a22034101200341014b1b220320024b0d032002200b422088a7220541036c220120022001491b20036ead428094ebdc037e200220036ead80a710cc052101200541ffffffff03712005470d0620054102742202417f4c0d060240024020020d00410421080c010b2002102f2208450d080b0240024002402002410276220720054f0d00200241017622032005200320054b1b22034104200341044b1b220341ffffffff03712003464102742107200341027421030240024020020d00200441003602e8030c010b200441f0036a4104360200200420023602ec03200420083602e8030b200441c0006a20032007200441e8036a104e200441c8006a2802002102024020042802404101460d0020042802442108200241027621070c020b20020d0a0c090b2005450d010b2005210320082102034020022001360200200241046a21022003417f6a22030d000b0b200442013703b80b200441003602c00b200420093703e803200441b80b6a200441e8036a4108107e200420063703e803200441b80b6a200441e8036a4108107e200441cc0b6a41002900e18f42370200200441002900d98f423702c40b200441db006a200441b80b6a41186a280200360000200441d3006a200441b80b6a41106a290300370000200441cb006a20042903c00b370000200420042903b80b370043200441f1036a200441c0006a41086a290000370000200441f9036a200441c0006a41106a290000370000200441e8036a41186a200441d7006a29000037000020044188046a41013a0000200441033a00e803200420042900403700e903200441e8036a10a90202402007450d00200810310b02402005450d002005412c6c2103200e210203400240200241046a28020041ffffff3f71450d00200228020010310b2002412c6a2102200341546a22030d000b0b0240200ba72202450d002002412c6c450d00200e10310b2000420037030820004200370300200041186a41013a00000c010b200441c0006a410710dd05200441f7036a200441c0006a41086a2802002202360000200420042903403700ef03200041186a41003a000020004200370308200020042900e803370019200041216a200441e8036a41086a290000370000200041286a2002360000200042013703000b200441e00b6a24000f0b200220131048000b41d0c1c700411941ace7c900103c000b20030d020c010b20080d010b103b000b1039000bdc0b04067f017e037f017e230041d0016b22012400200141386a41186a22024200370300200141386a41106a22034200370300200141386a41086a2204420037030020014200370338200141286a41fba2c600410a10a7022004200141286a41086a220529000037030020012001290028370338200141286a4194a7c600410610a7022002200529000037030020032001290028370300200141d8006a200141386a412010aa0220012d005821052002200141f1006a2900003703002003200141e9006a2900003703002004200141e1006a290000370300200120012900593703380240024020054101470d0020002001290338370000200041186a2002290300370000200041106a2003290300370000200041086a20042903003700000c010b200141d8006a41186a22024200370300200141d8006a41106a22064200370300200141d8006a41086a2203420037030020014200370358200141386a41f3c6c000410610a7022003200429000037030020012001290038370358200141386a41a091c900410610a7022002200429000037030020062001290038370300200141386a200141d8006a10c50520012802382204410420041b210302400240200129023c420020041b2207422088a7220541246c2204450d00200320046a2202415c6a2108200321040340024020042d00004101460d002002200441246a2204470d010c020b200441016a2800002109200441086a280200210a2001200441106a28020036023c2001200a36023802400240200941c28289aa04470d00200141d8006a200141386a10a80420012903584203510d03200141d8006a41106a22042802002102200141d8006a41186a420037030020044200370300200141d8006a41086a2204420037030020014200370358200141386a41d7b2c800410710a7022004200141386a41086a220929000037030020012001290038370358200141386a41def0c100410a10a702200641086a200929000037000020062001290038370000200141386a200141d8006a10cf044101210620012802382204410120041b210902402002200129023c420020041b220b422088a74f0d00200141086a41186a200920024105746a220441186a290000370300200141086a41106a200441106a290000370300200141086a41086a200441086a29000037030020012004290000370308410021060b0240200b42ffffff3f83500d00200910310b20060d03200141d8006a41186a200141086a41186a290300370300200141d8006a41106a200141086a41106a290300370300200141d8006a41086a200141086a41086a29030037030020012001290308370358200141386a41186a22044200370300200141386a41106a22024200370300200141386a41086a2206420037030020014200370338200141286a41fba2c600410a10a7022006200141286a41086a220929000037030020012001290028370338200141286a4194a7c600410610a70220042009290000370300200220012900283703004120102f2204450d012001422037022c20012004360228200141286a200141d8006a4120107e200141386a4120200128022822042001280230109f020240200128022c450d00200410310b20002001290358370000200041186a200141d8006a41186a290300370000200041106a200141d8006a41106a290300370000200041086a200141d8006a41086a2903003700000c040b20082004462109200441246a21042009450d010c020b0b1039000b20004200370000200041186a4200370000200041106a4200370000200041086a42003700000b02402005450d00200541246c21022003210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010310c030b2004410c6a280200450d02200441086a28020010310c020b2004410c6a280200450d01200441086a28020010310c010b200441086a280200450d00200441046a28020010310b200441246a21042002415c6a22020d000b0b2007a72204450d00200441246c450d00200310310b200141d0016a24000bad0201037f230041e0006b22022400200241f3c6c000410610a702200241106a41c88ec900410710a702024002404120102f2203450d002002422037023420022003360230200241306a20014120107e200241c0006a200228023022012002280238220310b707200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c0006a360250200241206a200241d0006a10880102402002280234450d00200110310b2002280228220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b200041003602082000200136020420002004360200200020024110107e2000200241106a4110107e2000200228022022012003107e02402002280224450d00200110310b200241e0006a24000f0b1039000b103b000b8c0402067f027e230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200042003703000c010b200328020c2102024002400240200341106a28020022044104490d002004417c7122054104460d0020054108460d002005410c460d00200441707122044110460d00200128000021052001280004210620012800082107200128000c2108200141186a29000021092001290010210a0240200441506a0e110102020202020202020202020202020201000b20044120470d010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d9040240200328021c450d00200328021810310b420021090c010b2000200a370308200041386a2001290040370300200041286a2001290030370300200041186a2001290020370300200041106a2009370300200041d4006a2008360200200041d0006a2007360200200041cc006a2006360200200041c8006a2005360200200041c0006a200141c8006a290000370300200041306a200141386a290000370300200041206a200141286a290000370300420121090b200020093703002002450d00200110310b200341d0006a24000bf10101047f230041c0006b2202240041b6f1c10021034109210441042105024002400240024002400240200141ff01710e06000102030405000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41a8dac3001047000b41aaf1c1002103410c2104410021050c030b4193f1c100210341172104410121050c020b4186f1c1002103410d2104410221050c010b4180f1c100210341062104410321050b20004183123b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bb50201037f230041e0006b22022400200241086a41d7b2c800410710a702200241186a41aa90c500410810a702024002404120102f2203450d002002422037023c20022003360238200241386a20014120107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b1039000b103b000bc80201027f23004180046b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041003a00000c010b200328020c21042003200341106a2802003602ec03200320013602e80320034180026a200341e8036a10e301410121020240024020032d0080024101470d004100210220034100360220200342013703182003410c3602f403200320033602f0032003200341186a3602fc0320034194026a410136020020034201370284022003419086c400360280022003200341f0036a36029002200341fc036a41d8ddc90020034180026a10401a2003280218200328022010d904200328021c450d01200328021810310c010b200341186a20034180026a41017241e10110bf091a200041016a200341186a41e10110bf091a0b200020023a00002004450d00200110310b20034180046a24000bec0201047f230041e0006b22022400200241086a41d7b2c800410710a702200241186a41ece7c100410810a70202400240200141086a280200220341046a2204417f4c0d000240024020040d00410121050c010b2004102f2205450d020b200241003602402002200436023c20022005360238200241386a20014104107e20012802042003200241386a10cd012002200228023822012002280240220410c802370348200241dc006a200120046a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220441206a2201417f4c0d000240024020010d00410121030c010b2001102f2203450d020b2000410036020820002001360204200020033602002000200241086a4110107e2000200241186a4110107e2000200228022822012004107e0240200228022c450d00200110310b200241e0006a24000f0b103b000b1039000bb20202017f017e230041206b220324002003410036020820034201370300200320022802403602102003200341106a4104107e200320022802443602102003200341106a4104107e200320022802483602102003200341106a4104107e2003200228024c3602102003200341106a4104107e200229030021042003200241086a290300370318200320043703102003200341106a4110107e200229031021042003200241186a290300370318200320043703102003200341106a4110107e200229032021042003200241286a290300370318200320043703102003200341106a4110107e200229033021042003200241386a290300370318200320043703102003200341106a4110107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000b9b0201047f230041c0006b22022400419fb7c6002103410621044108210502400240024002400240024002400240200141ff01710e080001020304050607000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41b4b6c6001047000b418db7c600210341122105410021040c050b41fdb6c600210341102105410121040c040b41f0b6c6002103410d2105410221040c030b41e4b6c6002103410c2105410321040c020b41d8b6c6002103410c2105410421040c010b41c4b6c600210341142105410521040b200041830c3b0100200041086a2005360200200041046a2003360200200041026a20043a0000200241c0006a24000b800201037f230041d0006b220124002001412036020420012000360200200141086a2000412010d20202400240200128020822020d00410221000c010b200128020c210302400240200141106a280200450d0041002100024020022d00000e020200010b410121000c010b20014100360220200142013703182001410c36022c200120013602282001200141186a360234200141cc006a41013602002001420137023c2001419086c4003602382001200141286a360248200141346a41d8ddc900200141386a10401a2001280218200128022010d9040240200128021c450d00200128021810310b410221000b2003450d00200210310b200141d0006a240020000b851604077f017e177f017e230041e0026b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41fba2c600410a10a702200141a0026a4185a3c600410610a7022002200141a0026a41086a290000370300200320012900a0023703002001412036022c2001200141086a360228200141306a200141086a412010d202024002400240200128023022040d00410021050c010b200128023421062001200141306a41086a280200360244200120043602402001200141c0006a10bb010240024020012802000d0002400240024020012802042207200128024441c4006e2202200220074b1bad42c4007e2208422088a70d002008a72202417f4c0d000240024020020d00410421050c010b2002102f2205450d070b200241c4006ead2108024002402007450d00200141a0026a4104722109200141a0026a410172210a20014180026a41046a210b200141bd026a210c200141b2026a210d200141ab026a210e20014180026a41036a210f41002110034020012802442203450d04200128024022112d0000210220012003417f6a22123602442001201141016a36024002400240024020020e020001070b20124104490d06200141e8016a41026a200141ec016a41026a2d00003a0000200141e0016a41026a200141d8026a41026a2d00003a0000200120012f00ec013b01e801200120012f01dc023b01e401200120012d00de023a00e601200120012f00d8023b01e00120012001280180023602d8012011280001211320012003417b6a3602442001201141056a3602402001200f2800003600db01200141b8016a41186a200141a0026a41186a290100370300200141b8016a41106a200141a0026a41106a290100370300200141b8016a41086a200141a0026a41086a290100370300200120012901a0023703b80141002102410021030c010b41002102200141003602a0022003417e6a21030240034020122002460d01200920026a201120026a221441016a2d00003a00002001200241016a22153602a0022001201441026a360240200120033602442003417f6a21032015210220154120470d000b200141d8026a41026a2214200e41026a2d00003a0000200141d4026a41026a2216200d41026a2d00003a0000200120092f01003b01dc022001200941026a2d00003a00de022001200e2f00003b01d8022001200d2f00003b01d40220012800a702211720012801ae02211820012800b502211920012800b9022102200141d0026a41026a221a200c41026a2d00003a00002001200c2f00003b01d00220012802c002211b200120012d00de023a00fe01200120012f01dc023b01fc01200120142d00003a00ce02200120012f01d8023b01cc02200141c8026a41026a221420162d00003a0000200120012f01d4023b01c8022001200236028002200b41026a201a2d00003a0000200b20012f01d0023b0000200141f8016a41026a221620012d00ce023a0000200120012f01cc023b01f801200141f4016a41026a221a20142d00003a0000200120012f01c8023b01f40120012001280083023600ef01200120023602ec0120122015460d00201120156a220241016a2d00002115200120033602442001200241026a36024041002102410021140240024020150e020100020b200141a0026a200141c0006a10b50120012d00a0024101460d0120014180026a41186a200a41186a29000037030020014180026a41106a200a41106a29000037030020014180026a41086a200a41086a2900003703002001200a29000037038002410121140b200141b8016a41186a20014180026a41186a290300370300200141b8016a41106a20014180026a41106a290300370300200141b8016a41086a20014180026a41086a290300370300200141e8016a41026a20012d00fe013a000020012001290380023703b801200120012f01fc013b01e801200120012f01f8013b01e401200120162d00003a00e601200141e0016a41026a201a2d00003a0000200120012f01f4013b01e001200120012800ef013600db01200120012802ec013602d801410121032014211c201721132018211d2019211e201b211f0c010b41022103410121020b200141b0016a41026a221520012d00e6013a0000200141b4016a41026a2214200141e8016a41026a2d00003a0000200141ac016a41026a2211200141e0016a41026a2d00003a000020014180016a41186a2212200141b8016a41186a29030037030020014180016a41106a2216200141b8016a41106a29030037030020014180016a41086a221a200141b8016a41086a290300370300200120012f01e8013b01b401200120012f01e4013b01b001200120012f01e0013b01ac01200120012802d8013602a401200120012800db013600a701200120012903b8013703800120020d05200141fc006a41026a221720142d00003a0000200141f8006a41026a221420152d00003a0000200141f4006a41026a221520112d00003a0000200141c8006a41186a22112012290300370300200141c8006a41106a22122016290300370300200141c8006a41086a2216201a290300370300200120012f01b4013b017c200120012f01b0013b0178200120012f01ac013b0174200120012802a40136026c200120012800a70136006f200120012903800137034802402008422088a722022008a7470d00200241016a221a2002490d0420024101742218201a201a2018491b221a4104201a41044b1bad42c4007e2220422088a745410274211a2020a721180240024020020d00200141003602a0020c010b200141043602a802200120053602a0022001200241c4006c3602a4020b20014180026a2018201a200141a0026a104e200128028802211a2001280280024101460d032001280284022105200842808080807083201a41c4006ead8421080b2005200241c4006c6a220220033a0000200241036a20172d00003a0000200220012f017c3b00012002410a6a20142d00003a0000200220012f01783b0008200220133600042002201d36000b2002201e360012200241116a20152d00003a0000200220012f01743b000f200241196a200128006f3600002002200128026c3600162002201c3a00212002201f36001d2002413a6a2011290300370000200241326a20122903003700002002412a6a20162903003700002002200129034837002220084280808080107c2108201041016a22102007470d000b0b2005450d040c050b201a0d060b103b000b200141b0016a41026a20012d00e6013a0000200141b4016a41026a200141e8016a41026a2d00003a0000200141ac016a41026a200141e0016a41026a2d00003a000020014180016a41186a200141b8016a41186a29030037030020014180016a41106a200141b8016a41106a29030037030020014180016a41086a200141b8016a41086a290300370300200120012f01e8013b01b401200120012f01e4013b01b001200120012f01e0013b01ac01200120012802d8013602a401200120012800db013600a701200120012903b801370380010b2008a721022002450d00200241c4006c450d00200510310b41002105200141003602880220014201370380022001410c3602bc012001200141286a3602b801200120014180026a36028001200141b4026a4101360200200142013702a4022001419086c4003602a0022001200141b8016a3602b00220014180016a41d8ddc900200141a0026a10401a20012802800220012802880210d904200128028402450d0020012802800210310b2006450d00200410310b0240024020050d0020004100360208200042043702000c010b20002008370204200020053602000b200141e0026a24000f0b1039000bfc0201037f230041206b22022400200241003602082002420137030002404120102f2203450d002002422037021420022003360210200241106a200141106a4120107e2002200228021022032002280218107e02402002280214450d00200310310b2001200210e0014120102f2203450d002002422037021420022003360210200241106a200141306a4120107e2002200228021022032002280218107e02402002280214450d00200310310b4120102f2203450d002002422037021420022003360210200241106a200141d0006a4120107e2002200228021022032002280218107e02402002280214450d00200310310b2001280204210320022001410c6a280200220110cb010240200141246c2201450d000340200241106a200310ec062002200228021022042002280218107e02402002280214450d00200410310b200341246a21032001415c6a22010d000b0b2000200228020022032002280208109a0102402002280204450d00200310310b200241206a24000f0b1039000b860201037f230041d0006b22022400200241086a41f3c6c000410610a702200241186a418c90c900410910a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000be90501067f230041a0016b22012400200141d8006a41186a22024200370300200141d8006a41106a22034200370300200141d8006a41086a2204420037030020014200370358200141d8006a41d7b2c800410710a70220014190016a41b0ffc100410c10a702200220014190016a41086a2900003703002003200129009001370300200141106a200141d8006a412010c00220012802142105200128021021062002200041186a2900003703002003200041106a2900003703002004200041086a29000037030020012000290000370358200141186a41caeac400410810a702200141286a41c8fdc400410e10a70220012005410020061b3602482001200141c8006a410410c80237037820014190016a410c6a2202200141c8006a41046a3602002001200141f8006a41086a360294012001200141c8006a360298012001200141f8006a36029001200141386a20014190016a108801024002404120102f2200450d002001422037027c20012000360278200141f8006a200141d8006a4120107e200120012802782200200128028001220310c802370388012002200020036a3602002001200036029801200120014188016a41086a36029401200120014188016a36029001200141c8006a20014190016a1088010240200128027c450d00200010310b20012802402202200128025022036a41206a2200417f4c0d010240024020000d00410121040c010b2000102f2204450d010b20014100360298012001200036029401200120043602900120014190016a200141186a4110107e20014190016a200141286a4110107e20014190016a200128023822002002107e20014190016a200128024822022003107e0240200128024c450d00200210310b0240200128023c450d00200010310b200141086a2001280290012200200128029801220210c0022001200128020c41016a410120012802081b36025820002002200141d8006a4104109f020240200128029401450d00200010310b200141a0016a24000f0b1039000b103b000bc73707017f077e017f097e047f037e037f230041d00d6b2206240020062001360204200620053a001f20062003370308200620043703100240024002402003200484500d0020012002412010c2090d010b200041073a00000c010b200620023602e401200641a8026a200210930320064180066a20062802a802220120062802b002109403200641c0066a290300210720064180066a41386a290300210820064180066a41306a290300210920064180066a41286a290300210a20064180066a41186a290300210b20064180066a41106a290300210420064180066a41206a290300210c2006290388062103200629038006210d200641b0056a41086a200641d0066a2903003703002006200641c8066a2903003703b00502400240200d4201510d0042002107200641e8016a41386a4200370300200641e8016a41306a4200370300200641e8016a41286a420037030020064188026a4200370300200641e8016a41186a4200370300200641e8016a41106a4200370300200641e8016a41086a4200370300200642003703e80142002103420021044200210b4200210a420021094200210d420021080c010b200641e8016a41286a2009370300200641e8016a41106a200b3703002006200a37038802200620033703e801200620073703a00220062008370398022006200c37038002200620043703f0012003210d200421080b024020062802ac02450d00200110310b02400240200d2008844200520d00200a20062903f80184200920064180026a29030084844200520d00200629039802200641a0026a2903008450450d004200210c4100210e0c010b20064198026a290300210f20064190026a290300211020064188026a29030021114201210c20062903800221124101210e0b02400240200c4201510d00200641e8036a4200370300200641e0036a4200370300200641d8036a4200370300200641d0036a4200370300200641c8036a4200370300200641c0036a4200370300200641b8036a4200370300200642003703b0030c010b200641d0036a2011370300200641d8036a2010370300200641e0036a200f370300200641c0036a200b370300200620123703c803200620073703e803200620033703b003200620043703b8030b2006200628020422013602f403200641e8046a200110930320064180066a20062802e804220520062802f004109403024002402006290380064201510d004200210a200641f8036a41386a4200370300200641f8036a41306a4200370300200641f8036a41286a4200370300200641f8036a41206a4200370300200641f8036a41186a4200370300200641f8036a41106a420037030020064180046a4200370300200642003703f80342002113420021144200210442002115420021034200210b4200210942002116420021174200210d420021080c010b20064180066a41386a290300211520064180066a41306a290300210420064180066a41206a290300211320064180066a41186a290300210920064180066a41106a290300210b200641c0066a290300210a2006290388062103200641f8036a41206a20064180066a41286a2903002214370300200641f8036a41286a2004370300200641f8036a41106a2009370300200641f8036a41306a20153703002006201337039004200620033703f8032006200a3703b0042006200b3703800420142116200421172003210d200b21080b024020062802ec04450d00200510310b02400240200d2008844200520d00201620062903880484201720064190046a29030084844200520d0020062903a804200641b0046a2903008450450d0042002108410021180c010b42012108410121180b0240024020084201510d004200210320064198056a420037030020064190056a420037030020064188056a420037030020064180056a4200370300200641f8046a4200370300200641f0046a4200370300200642003703e8044200210b4200210a0c010b20064188056a201437030020064190056a200437030020064198056a2015370300200641f8046a20093703002006201337038005200620033703e8042006200b3703f0040b02400240024002400240024002400240024002400240024020032006290308220d7d2209200356200b200641086a41086a29030022137d2003200d54ad7d2204200b562004200b511b0d00200620093703e804200620043703f00420062903b0032203200d7c22142003542205200641b0036a41086a290300220b20137c2005ad7c2203200b542003200b511b0d01200620143703b003200641c8036a290300210b200620033703b8030240427f201420062903c0037c2215201520145422052003200b7c2005ad7c220b200354200b2003511b22051b4280c8afa025544100427f200b20051b501b450d00200641a0056a410510aa030c060b0240200d201384500d00200641f0056a200628020410930320064180066a20062802f005221920062802f805109403200641b0066a290300420020062903800642015122051b2103200641a8066a290300420020051b210b024020062802f405450d00201910310b200b200956200320045620032004511b450d00200641e0056a410210aa0320062d00e0054107470d030b20062d001f4101470d03200641b0056a200628020410930320064180066a20062802b005221920062802b80510940320062802cc0621052006290380062103024020062802b405450d00201910310b20034201520d0420050d030c040b200641a0056a410410aa0320032109200b21040c040b200641a0056a410310aa030c030b200641a0056a410210aa030c020b427f200920062903f8047c220320032009542205200420064180056a2903007c2005ad7c220320045420032004511b22051b4280c8afa025544100427f200320051b501b450d00200641a0056a410610aa030c010b200641073a00a005200641b0056a41206a20064198056a290300370300200641b0056a41186a20064190056a290300370300200641c0056a200641e8046a41206a290300370300200641b8056a200641e8046a41186a290300370300200620062903f8043703b0052006200a3703d805200641b0056a21050c010b20062d00a0052119200641b0056a41206a20064198056a290300370300200641b0056a41186a20064190056a290300370300200641c0056a200641e8046a41206a290300370300200641b8056a200641e8046a41186a290300370300200620062903f8043703b0052006200a3703d805200641b0056a210520194107470d010b20064180066a41186a200541086a290300221437030020064180066a41206a2219200541106a290300370300200641a8066a221a200541186a290300370300200641b0066a221b200541206a2903003703002006200529030022153703900620062009370380062006200437038806420021034201210b2008420152ad211302400240427f200920157c220d200d2009542205200420147c2005ad7c220d200454200d2004511b22051b220842ffc7afa02556427f200d20051b220d420052200d501b0d00200920158420042014848422035021194200210b2003420052ad21030c010b201b290300211c201a290300211d2019290300211e20064180066a41106a2903002116200629039806211720062903880621152006290380062114410121190b200641e0046a200d370300200641d8046a221a2008370300200641c8046a2004370300200620093703c004200620033703d004200620133703b80402402018200b420152720d002006200136028006200120064180066a10a3030c030b20184101732205200b420151720d012006200136028006200120064180066a10a40341ff017122054103460d020240024020050e03010400010b4104210502402019450d00410121010c060b2006201a3602800620064180066a10a203410121010c050b200641e0046a290300210d200641c8046a290300210420062903d804210820062903c004210920062903d004210320062903b80421130c030b20062902a405211420062802a0052105410121010c030b200b4201522005710d010b200641e8046a200110930320064180066a20062802e804221820062802f004221a109403200641c8066a221b280200211f200641d0066a2220290300210420062802cc06212120062903800621032006420137038006200641b8066a201c4200200b42015122051b370300200641b0066a201d420020051b37030020064180066a41286a201e420020051b370300200641a0066a2017420020051b37030020064198066a2016420020051b37030020064180066a41106a2015420020051b370300202020044200200342015122191b370300200641cc066a2021410020191b360200201b201f410020191b360200200641c0066a200a420020051b37030020062014420020051b370388062018201a20064188066a109903024020062802ec04450d00201810310b200641b8046a41106a2903002104200641b8046a41286a290300210d20062903c004210920062903d804210820062903b804211320062903d00421030b024020134201520d00200641b8066a2004370300200641b0066a200937030020064180066a41086a41003a000020064189066a200129000037000020064191066a200141086a29000037000020064199066a200141106a290000370000200641a1066a200141186a290000370000200641023a00800620064180066a10a9020b02400240200350450d00420021140c010b20064180066a41086a20062802f403220141086a29000037030020064180066a41106a200141106a29000037030020064180066a41186a200141186a2900003703002006200129000037038006420121140b200641f8036a41186a20064180066a41186a2903002204370300200641f8036a41106a20064180066a41106a2903002203370300200641f8036a41086a20064180066a41086a290300220b370300200641e8046a41086a200b370300200641e8046a41106a2003370300200641e8046a41186a2004370300200620062903800622043703f803200620043703e804410021010b200641f8036a41086a2219200641b0036a41186a290300370300200641f8036a41106a2218200641b0036a41206a290300370300200641f8036a41186a221a200641b0036a41286a290300370300200641f8036a41206a221b200641b0036a41306a290300370300200620062903c0033703f803200641b0036a41086a290300210420062903b0032103024002402001450d0042002113410121012014210b0c010b200641e8036a290300210720064180066a41186a2019290300221237030020064180066a41206a201829030037030020064180066a41286a201a29030037030020064180066a41306a201b290300370300200620062903f803221137039006200620033703800620062004370388064200210a42012113200c420152210102400240427f200320117c220b200b2003542219200420127c2019ad7c220b200454200b2004511b22191b220c42ffc7afa02556427f200b20191b22094200522009501b0d00420021132003201184200420128484420052ad210a0c010b200641b0066a290300210f200641a8066a2903002110200641a0066a290300211120064190066a29030021172006290398062112200629038806211620062903800621150b2001ad210b200641b0056a41086a200641e8046a41086a290300370300200641b0056a41106a200641e8046a41106a290300370300200641b0056a41186a200641e8046a41186a290300370300200620062903e8043703b005410021010b20064190036a41086a200641b0056a41086a29030037030020064190036a41106a200641b0056a41106a29030037030020064190036a41186a200641b0056a41186a290300370300200620062903b0053703900302400240024002400240024020010d00200641d0026a2009370300200641c8026a2205200c370300200641a8026a41106a200437030020064188036a200d37030020064180036a22182008370300200641e0026a2201200629039003370300200641e8026a20064198036a290300370300200641f0026a20064190036a41106a290300370300200641f8026a200641a8036a290300370300200620033703b002200620143703d8022006200a3703c0022006200b3703a80202400240200e2013420152720d002006200236028006200220064180066a10a3030c010b0240200e41017322192013420151720d002006200236028006200220064180066a10a40341ff017122194103460d010240024020190e03010300010b0240200a500d00200620053602800620064180066a10a2030b200641d8026a10a503410121194104210520062903d802500d05200620183602800620064180066a10a2030c050b200641b0036a41286a200141286a290300370300200641b0036a41206a200141206a290300370300200641b0036a41186a200141186a290300370300200641b0036a41106a200141106a290300370300200641b0036a41086a200141086a290300370300200620012903003703b003410021190c040b20134201522019710d020b200641b0036a200210930320064180066a20062802b003221920062802b80322181094032006290380062104200641b0056a41086a2205200641d0066a2903003703002006200641c8066a2903003703b0050240024020044201510d00200641f8036a41086a4200370300200642003703f8030c010b200641f8036a41086a2005290300370300200620062903b0053703f8030b200641c8066a20062903f803370300200641d0066a200641f8036a41086a220e2903003703002006420137038006200641c0066a20074200201342015122051b370300200641b8066a200f420020051b370300200641b0066a2010420020051b37030020064180066a41286a2011420020051b37030020064180066a41186a2017420020051b37030020064180066a41106a2016420020051b37030020064180066a41206a2012420020051b37030020062015420020051b370388062019201820064180066a41086a109903024020062802b403450d00201910310b200641b0036a41086a2205200141086a290300370300200641b0036a41106a2219200141106a290300370300200641b0036a41186a2218200141186a290300370300200641b0036a41206a221a200141206a290300370300200641b0036a41286a221b200141286a290300370300200620012903003703b003200641a8026a41106a2903002104200641a8026a41286a290300210920062903b002210320062903c802210c20062903a802210720062903c002210a20062903d802210b200641f8036a41286a201b290300370300200641f8036a41206a201a290300370300200641f8036a41186a2018290300370300200641f8036a41106a2019290300370300200e2005290300370300200620062903b0033703f803200641f8036a21010c030b410121190c010b200641b0036a41286a200141286a290300370300200641b0036a41206a200141206a290300370300200641b0036a41186a200141186a290300370300200641b0036a41106a200141106a290300370300200641b0036a41086a200141086a290300370300200620012903003703b003410021190b200641f8036a41286a200641b0036a41286a290300370300200641f8036a41206a200641b0036a41206a290300370300200641f8036a41186a200641b0036a41186a290300370300200641f8036a41106a200641b0036a41106a290300370300200641f8036a41086a200641b0036a41086a290300370300200620062903b0033703f803200641f8036a210120190d01200b21072014210b0b200641a8026a41286a200141286a290300370300200641a8026a41206a200141206a290300370300200641a8026a41186a200141186a290300370300200641a8026a41106a200141106a290300370300200641a8026a41086a200141086a290300370300200620012903003703a802024020074201520d0020062802e4012101200641b8066a2004370300200641b0066a200337030020064180066a41086a41003a000020064189066a200129000037000020064191066a200141086a29000037000020064199066a200141106a290000370000200641a1066a200141186a290000370000200641023a00800620064180066a10a9020b02400240200a50450d00420021040c010b200641e8016a41086a20062802e401220141086a290000370300200641e8016a41106a200141106a290000370300200641e8016a41186a200141186a290000370300200620012900003703e801420121040b200641e8046a41186a200641e8016a41186a290300370300200641e8046a41106a200641e8016a41106a290300370300200641e8046a41086a200641e8016a41086a29030037030020064180066a41086a200641a8026a41086a29030037030020064180066a41106a200641a8026a41106a29030037030020064180066a41186a200641a8026a41186a29030037030020064180066a41206a200641a8026a41206a29030037030020064180066a41286a200641a8026a41286a290300370300200620062903e8013703e804200620062903a80237038006410021010c010b410121010b200641b0016a41086a221920064180066a41086a290300370300200641b0016a41106a221820064180066a41106a290300370300200641b0016a41186a220e20064180066a41186a290300370300200641b0016a41206a221a20064180066a41206a290300370300200641b0016a41286a221b20064180066a41286a29030037030020064190016a41086a221f200641e8046a41086a29030037030020064190016a41106a2220200641e8046a41106a29030037030020064190016a41186a2221200641e8046a41186a29030037030020062006290380063703b001200620062903e80437039001024020010d00200641e0006a200629039001370300200641206a41106a2019290300370300200641206a41186a2018290300370300200641206a41206a200e290300370300200641206a41286a201a290300370300200641d0006a201b290300370300200641e8006a201f290300370300200641f0006a2020290300370300200641f8006a20212903003703002006200b370320200620062903b0013703282006200437035820064188016a200937030020064180016a2201200c370300200641206a10a50302402006290320500d002006200641c8006a3602800620064180066a10a2030b200641d8006a10a50302402006290358500d00200620013602800620064180066a10a2030b200641086a41086a290300210420062903082103200641206a41186a2006280204220141186a290000220b370300200641206a41106a200141106a2900002209370300200641206a41086a200141086a290000220a370300200620012900002207370320200641d8066a2004370300200641d0066a200337030020064180066a41086a41023a000020064189066a200737000020064191066a200a37000020064199066a2009370000200641a1066a200b370000200641a9066a2002290000370000200641b1066a200241086a290000370000200641b9066a200241106a290000370000200641c1066a200241186a290000370000200641023a00800620064180066a10a902200041073a00000c010b20002005360200200041046a200b3702000b200641d00d6a24000b950304057f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a418dc7c000410810a7022004200141c0006a41086a220529000037030020012001290040370320200141c0006a41ce91c500410d10a7022002200529000037030020032001290040370300200141086a200141206a412010c504200141086a41106a29030021062001290310210720012802082108200041086a29030021092000290300210a20024200370300200342003703002004420037030020014200370320200141c0006a418dc7c000410810a7022004200529000037030020012001290040370320200141c0006a41ce91c500410d10a70220022005290000370300200320012900403703002001427f20092006420020081b22067c200a2007420020081b22077c22092007542202ad7c22072002200720065420072006511b22021b3703482001427f200920021b370340200141206a4120200141c0006a4110109f02200141d0006a24000b9b0304057f027e017f027e230041d0006b22012400200141386a22024200370300200141206a41106a22034200370300200141206a41086a2204420037030020014200370320200141c0006a418dc7c000410810a7022004200141c0006a41086a220529000037030020012001290040370320200141c0006a41ce91c500410d10a7022002200529000037030020032001290040370300200141086a200141206a412010c504200141086a41106a290300210620012903102107200128020821082000280200220041086a29030021092000290300210a20024200370300200342003703002004420037030020014200370320200141c0006a418dc7c000410810a7022004200529000037030020012001290040370320200141c0006a41ce91c500410d10a7022002200529000037030020032001290040370300200142002006420020081b220620097d2007420020081b2207200a54ad7d22092007200a7d220a200756200920065620092006511b22021b37034820014200200a20021b370340200141206a4120200141c0006a4110109f02200141d0006a24000bf30202047f017e230041f0086b2202240020022000109303200241a0016a2002280200220320022802082204109403200241f4016a2802002105200241f0016a280200210020022903a0012106200241d8006a200241a8016a41c80010bf091a0240024020064201510d0041002100200241106a410041c80010c1091a410021050c010b200241106a200241d8006a41c80010bf091a0b024002402000200572450d00417f200041016a220120012000491b21000c010b20012802002100200241a0016a41086a41033a0000200241a9016a2000290000370000200241b1016a200041086a290000370000200241b9016a200041106a290000370000200241c1016a200041186a290000370000200241003a00a001200241a0016a10a902410121000b200241a8016a200241106a41c80010bf092101200241f4016a2005360200200241f0016a2000360200200242013703a00120032004200110990302402002280204450d00200310310b200241f0086a24000ba20807017f017e017f047e037f027e017f230041e0086b22022400200241086a2000109303200241186a20022802082002280210109403200241f0006a41086a2200200241e0006a28020036020020022903182103200242003703182002200241d8006a2204290300370370024002400240024020034201520d00200241d0006a2903002103200241c8006a2903002105200241c0006a2903002106200241386a2903002107200241306a2903002108200241ec006a2802002109200241e8006a280200210a200241e4006a280200210b2002290328210c2002290320210d20024180016a41086a20002802003602002002200229037037038001024002400240200a0e020001020b41002802809a4a450d0041002802fc994a210041002802f8994a210a41002802849a4a210e200241d0016a41c508360200200241c8016a42db80808010370300200241c4016a41e3d2c800360200200241bc016a420c370200200241b8016a41d3e2c800360200200241b0016a4200370300200241ac016a41f8fac900360200200241a0016a420137030020024198016a410f360200200241ec8cc50036029c01200241c4e2c800360294012002410136029001200a41f8fac900200e410246220e1b20024190016a20004180a6c000200e1b2802101103000b02402009200b720d002001280200210020024190016a41086a41043a000020024199016a2000290000370000200241a1016a200041086a290000370000200241a9016a200041106a290000370000200241b1016a200041186a29000037000041002100200241003a00900120024190016a10a9020c030b200b0d034101210a0b2004200229038001370300200241c0006a2006370300200241286a200c370300200241ec006a2009360200200241e4006a200b360200200241c8006a2005370300200241306a2008370300200441086a20024180016a41086a280200360200200241d0006a2003370300200220073703382002200d370320200242013703182002200a417f6a360268410121000c010b4100210041002802809a4a450d0041002802fc994a210441002802f8994a210b41002802849a4a210a200241d0016a41df08360200200241c8016a42db80808010370300200241c4016a41e3d2c800360200200241bc016a420c370200200241b8016a41d3e2c800360200200241b0016a4200370300200241ac016a41f8fac900360200200241a0016a420137030020024198016a410f360200200241f48cc50036029c01200241c4e2c800360294012002410136029001200b41f8fac900200a410246220a1b20024190016a20044180a6c000200a1b2802101103000b024020022903184201510d002002280208200228021010bd020c020b20022802082002280210200241206a1099030c010b410221000b0240200228020c450d00200228020810310b200241e0086a240020000b8c0202017f067e230041e0076b220124002000290300210220004200370300024020024201520d00200041286a2903002102200041186a29030021032000290310210420002903082105200041206a2903002106200141c8006a200041306a2903002207370300200141106a41306a2002370300200141296a2003370000200141216a2004370000200141196a2005370000200141316a2006370000200141186a41013a0000200141023a0010200141106a10a9022001200737031820012002370310024020022007844200520d002001200141106a36020c2001410c6a10a2030c010b20012007370318200120023703102001200141106a36020c2001410c6a10a2030b200141e0076a24000b800201037f230041d0006b2202240020024186c7c000410710a702200241106a41e28cc500410810a7022002200136022c200241306a2002412c6a410410b707200241cc006a2002412c6a41046a3602002002200241c0006a36024420022002412c6a3602482002200241306a360240200241206a200241c0006a108801024002402002280228220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b200041003602082000200136020420002004360200200020024110107e2000200241106a4110107e2000200228022022012003107e02402002280224450d00200110310b200241d0006a24000f0b103b000b1039000bdd0e020b7f027e23004190016b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041023a00300c010b200341106a2802002102200328020c210420034100360250024002402002450d00200320012d00003a00542003410136025020024101460d00200320012d00013a00552003410236025020024102460d00200320012d00023a00562003410336025020024103460d00200320012d00033a00572003410436025020024104460d00200341d8006a20012d00043a00002003410536025020024105460d00200341d9006a20012d00053a00002003410636025020024106460d00200341da006a20012d00063a00002003410736025020024107460d00200341db006a20012d00073a00002003410836025020024108460d00200341dc006a20012d00083a00002003410936025020024109460d00200341dd006a20012d00093a00002003410a3602502002410a460d00200341de006a20012d000a3a00002003410b3602502002410b460d00200341df006a20012d000b3a00002003410c3602502002410c460d00200341e0006a20012d000c3a00002003410d3602502002410d460d00200341e1006a20012d000d3a00002003410e3602502002410e460d00200341e2006a20012d000e3a00002003410f3602502002410f460d00200341e3006a20012d000f3a00002003411036025020024110460d00200341e4006a20012d00103a00002003411136025020024111460d00200341e5006a20012d00113a00002003411236025020024112460d00200341e6006a20012d00123a00002003411336025020024113460d00200341e7006a20012d00133a00002003411436025020024114460d00200341e8006a20012d00143a00002003411536025020024115460d00200341e9006a20012d00153a00002003411636025020024116460d00200341ea006a20012d00163a00002003411736025020024117460d00200341eb006a20012d00173a00002003411836025020024118460d00200341ec006a20012d00183a00002003411936025020024119460d00200341ed006a20012d00193a00002003411a3602502002411a460d00200341ee006a20012d001a3a00002003411b3602502002411b460d00200341ef006a20012d001b3a00002003411c3602502002411c460d00200341f0006a20012d001c3a00002003411d3602502002411d460d00200341f1006a20012d001d3a00002003411e3602502002411e460d00200341f2006a20012d001e3a00002003411f3602502002411f460d00200341f3006a20012d001f3a0000200341203602502003418c016a41026a2205200341dd006a2d00003a0000200320032f01543b0138200320032d00563a003a2003200341db006a2f00003b018c0120032800572106200341de006a280100210720034188016a41026a2208200341e4006a2d00003a00002003200341e2006a2f01003b018801200341e5006a280000210920034184016a41026a220a200341eb006a2d00003a00002003200341e9006a2f00003b018401200341d0006a41206a280200210b200341ec006a280200210c200320032d003a3a004e200320032f01383b014c20034180016a41026a220d20052d00003a0000200320032f018c013b018001200341fc006a41026a220520082d00003a0000200320032f0188013b017c200341f8006a41026a2208200a2d00003a0000200320032f0184013b0178200341c8006a41026a200d2d00003a0000200320032f0180013b0148200341c4006a41026a20052d00003a0000200320032f017c3b0144200341c0006a41026a20082d00003a0000200320032f01783b0140200241606a22024110490d0020024110460d00200141286a290000210e2001290020210f410021020240024020012d00300e020100020b410121020b2003411c6a41026a2205200341c8006a41026a2d00003a0000200341186a41026a2208200341c4006a41026a2d00003a0000200341146a41026a220a200341c0006a41026a2d00003a0000200320032d004e3a0022200320032f014c3b0120200320032f01483b011c200320032f01443b0118200320032f01403b011420032003412b6a280000360053200320032800283602502000200e3703082000200f37030020002006360013200020032f01203b0110200041126a20032d00223a00002000200736001a200020032f011c3b0017200041196a20052d00003a000020002009360021200020032f01183b001e200041206a20082d00003a0000200020032f01143b0025200041276a200a2d00003a00002000200b36002c2000200c360028200041346a2003280053360000200020032802503600310c010b20034100360230200342013703282003410c36023c200320033602382003200341286a36028c01200341e4006a4101360200200342013702542003419086c4003602502003200341386a3602602003418c016a41d8ddc900200341d0006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b410221020b200020023a00302004450d00200110310b20034190016a24000bae1304027f0d7e037f027e230041b0096b220424002004200337031020042002370308200420013602040240024020022003844200520d00200041073a00000c010b2004200136023c20044180016a2001109303200441e0016a2004280280012205200428028801109403200441e0016a41386a2903002106200441e0016a41306a2903002107200441e0016a41286a2903002108200441e0016a41206a2903002109200441e0016a41186a290300210a200441e0016a41106a290300210b200441a0026a290300210c20042903e801210d20042903e001210e200441b0016a41086a200441b0026a2903003703002004200441a8026a2903003703b00102400240200e4201510d004200210c200441c0006a41386a4200370300200441c0006a41306a4200370300200441c0006a41286a4200370300200441c0006a41206a4200370300200441c0006a41186a4200370300200441c0006a41106a4200370300200441c0006a41086a420037030020044200370340420021094200210842002107420021064200210d4200210b4200210a4200210f420021104200210e420021110c010b200441c0006a41206a2008370300200441c0006a41286a2007370300200441c0006a41106a200a370300200441c0006a41306a2006370300200420093703582004200d3703402004200c3703782004200b3703482008210f20072110200d210e200b21110b0240200428028401450d00200510310b02400240200e2011844200520d00200f2004290350842010200441d8006a29030084844200520d002004290370200441f8006a2903008450450d0042002111410021050c010b42012111410121050b024020114201510d004200210842002107420021064200210c4200210a420021094200210d4200210b0b02400240024002400240024002400240200d20027d220f200d56200b20037d200d200254ad7d220e200b56200e200b511b0d0002400240200a20027c2212200a542213200920037c2013ad7c221020095420102009511b0d00200441d0016a2001109303200441e0016a20042802d001221420042802d80110940320044190026a290300420020042903e00142015122131b210b20044188026a290300420020131b210d024020042802d401450d00201410310b0240200d200f58200b200e58200b200e511b0d00200441b0016a410210aa032012210a201021090c020b200441073a00b001200f210d200e210b201021092012210a0c040b200441b0016a410310aa030b200f210d200e210b0c010b200441b0016a410410aa030b20042d00b0014107470d010b20044188026a22142007370300200441f8016a200937030020044190026a2215200637030020042008370380022004200a3703f0012004200d3703e0012004200b3703e80142002108420121062011420152ad210e02400240427f200d200a7c22072007200d542213200b20097c2013ad7c2207200b542007200b511b22131b221142ffc7afa02556427f200720131b22074200522007501b0d00200d200a84200b200984842209502113420021062009420052ad21080c010b201529030021162014290300211720044180026a2903002112200441f0016a290300210f20042903f801211020042903e801210a20042903e0012109410121130b200441a8016a2007370300200441a0016a2214201137030020044190016a200b3703002004200d3703880120042008370398012004200e37038001024020052006420152720d00200420013602e0012001200441e0016a10a3030c030b0240200541017322052006420151720d00200420013602e0012001200441e0016a10a40341ff017122054103460d03024020050e03050400050b4104210502402013450d000c030b200420143602e001200441e0016a10a2030c020b2006420152200571450d020c030b20042902b401210b20042802b00121050b200541ff01714107460d02200020053a0000200041036a20054118763a0000200020054108763b0001200041046a200b3702000c030b200441c0016a2001109303200441e0016a20042802c001221320042802c801221410940320042903e001210b200441b0016a41086a2205200441b0026a2903003703002004200441a8026a2903003703b00102400240200b4201510d00200441d0016a41086a4200370300200442003703d0010c010b200441d0016a41086a2005290300370300200420042903b0013703d0010b200441a8026a20042903d001370300200441b0026a200441d0016a41086a290300370300200442013703e00120044198026a20164200200642015122051b37030020044190026a2017420020051b370300200441e0016a41286a2012420020051b37030020044180026a2010420020051b370300200441f8016a200f420020051b370300200441e0016a41106a200a420020051b370300200441a0026a200c420020051b37030020042009420020051b3703e80120132014200441e0016a41086a109903024020042802c401450d00201310310b20044180016a41106a290300210b20044180016a41286a2903002107200429038801210d20042903a0012111200429038001210e20042903980121080b0240200e4201520d0020044198026a200b37030020044190026a200d370300200441e0016a41086a41003a0000200441e9016a2001290000370000200441f1016a200141086a290000370000200441f9016a200141106a29000037000020044181026a200141186a290000370000200441023a00e001200441e0016a10a9020b02400240200850450d004200210b0c010b200441e0016a41086a200428023c220141086a290000370300200441e0016a41106a200141106a290000370300200441e0016a41186a200141186a290000370300200420012900003703e0014201210b0b200441186a41186a200441e0016a41186a2201290300220d370300200441186a41106a200441e0016a41106a22052903002202370300200441186a41086a200441e0016a41086a2903002203370300200420042903e001220937031820044190026a200737030020044188026a22132011370300200520033703002001200237030020044180026a200d3703002004200b3703e001200420093703e801200441e0016a10a503024020042903e001500d0020042013360240200441c0006a10a2030b200441086a41086a290300210320042903082102200428020421010b20044198026a200337030020044190026a2002370300200441e0016a41086a41053a0000200441e9016a2001290000370000200441f1016a200141086a290000370000200441f9016a200141106a29000037000020044181026a200141186a290000370000200441023a00e001200441e0016a10a902200041073a00000b200441b0096a24000b9c0102027f017e230041206b2203240002404111102f2204450d0020034211370204200320043602002003200241106a4120107e200229030021052003200241086a290300370318200320053703102003200341106a4110107e200320022d00303a00102003200341106a4101107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000f0b1039000bb00201047f230041c0006b22022400410b21034194fcc300210441072105024002400240024002400240024002400240200141ff01710e09000102030405060708000b2002411c6a41013602002002420137020c200241d897ca0036020820024104360224200241d8e3c8003602202002200241206a360218200241086a419c9cc4001047000b410e210341e8fac3002104410021050c060b411521034180fbc3002104410121050c050b4108210341e4fec9002104410221050c040b4113210341a8fbc3002104410321050c030b4112210341c4fbc3002104410421050c020b4109210341e0fbc3002104410521050c010b4117210341f4fbc3002104410621050b20004183083b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000b8d0204017f017e017f017e230041d0006b220224002002412036020420022001360200200241086a2001412010d20202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004108490d0020012900002105420121030c010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c2002419086c4003602382002200241286a360248200241346a41d8ddc900200241386a10401a2002280218200228022010d9040240200228021c450d00200228021810310b420021030b2004450d00200110310b2000200537030820002003370300200241d0006a24000baa4009017f017e047f017e017f017e0e7f047e017f230041b00b6b22042400200441c0006a20024180026a290000370300200441386a200241f8016a290000370300200441286a41086a200241f0016a290000370300200420022900e80137032820022903002105200441e0036a200241880210bf091a200420044180036a3602ec05200420044180036a3602e805200441a8036a200441e0036a41086a2206109d0320044188016a200441d8046a2207109d0302400240024002400240200441a8036a20044188016a412010c209450d00200441f4036a2802002208450d00200441ec036a2802002102200841246c21080340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602ac032004200241086a2802003602a80320044188016a200441a8036a10a8042004290388014203510d00200441e4046a2802002208450d022004280298012109200429039001210a200441dc046a2802002102200841246c2108024002400240024002400340024020022d00004101470d00200241016a28000041c28289aa04470d002004200241106a2802003602ac032004200241086a2802003602a80320044188016a200441a8036a10a8042004290388014203510d0020042903e003200a520d09200a200429039001520d092009200428029801470d0920044188016a200641f00010bf091a2004200441c8056a22023602f80120044188016a2002108905450d0a20044188016a200741f00010bf091a200420023602f80120044188016a2002108905450d0b200328020021022003280210210b200441f8036a22084200370300200441e0036a41106a22064200370300200441e0036a41086a22074200370300200442003703e00320044188016a41f9c6c000410410a702200720044188016a41086a220929000037030020042004290088013703e00320044188016a41be90c500410b10a702200820092900003703002006200429008801370300200441186a200441e0036a10ab032004290320210a2004290318210c20044188016a41849bc200411710a702200441106a20044188016a411010c0020240200428021441e40020042802101b2208450d00024042002005200a4200200ca71b7d220a200a2005561b2008ad80220aa7417f200a428080808010541b2002460d00200041013a00222000420037030820004201370300200041286a4118360200200041246a418094c500360200200041206a4183023b0100200041186a41003a00000c0e0b200441ec036a200441286a41086a290300370200200441f4036a200441286a41106a290300370200200441fc036a200441286a41186a290300370200200441e2c289ab063602e003200420042903283702e403200441a8036a41106a200341106a280200360200200441a8036a41086a200341086a290200370300200420032902003703a80320044188016a200441e0036a200441a8036a10cb054101210220042d0088014101470d03200441c8006a41176a220820044188016a41196a290000370000200441c8006a41106a22032004419a016a290100370300200441c8006a41086a20044192016a290100220a3703002004200429018a01220c37034820042d0089012106200441e8006a41176a22072008290000370000200441e8006a41106a2003290300370300200441e8006a41086a200a3703002004200c37036841002108024020012d00004101470d00200441e0036a41186a2208200141196a290000370300200441e0036a41106a2203200141116a290000370300200441e0036a41086a2209200141096a290000370300200420012900013703e0034120102f2202450d08200220042903e003370000200241186a2008290300370000200241106a2003290300370000200241086a2009290300370000410121080b20044180026a41176a200729000037000020044180026a41106a2203200441e8006a41106a29030037030020044180026a41086a2201200441e8006a41086a29030037030020042004290368370380024120102f2207450d07200720063a00002007200429038002370001200741096a2001290300370000200741116a2003290300370000200741186a20044197026a290000370000200420083602a802200420083602a402200420023602a0024108102f2202450d07200442083702ac03200420023602a803200420053703e0034108210d200441a8036a200441e0036a4108107e200441e0036a41c98fc20010d10420044188016a20042802e003220820042802e803109504200429028c01420020042802880122021b210a2002410120021b210e024020042802e403450d00200810310b2004200a4220883e0284032004200e36028003200441086a20044180036a10bb014100210f4100211020042802080d05200428020c220d20042802840341286e22022002200d4b1bad42287e220c422088a70d06200ca72202417f4c0d060240024020020d00410821110c010b2002102f2211450d080b200241286e21120240200d0d004100210d0c050b200441e0036a4104722109200441e0036a41196a2113200441e0036a41126a2114200441e0036a410b6a2115410021100240034020042802840322084108490d01201041016a210f2004280280032201290000210c2004200841786a2216360284032004200141086a3602800341002102200441003602e003200841776a2108034020162002460d02200920026a200120026a220641086a2d00003a00002004200241016a22033602e0032004200641096a3602800320042008360284032008417f6a21082003210220034120470d000b200441d0036a41026a2202201541026a2d00003a0000200441f0026a41026a2208201441026a2d00003a0000200441ec026a41026a2203201341026a2d00003a0000200420092f01003b0188012004200941026a2d00003a008a01200420152f00003b01d003200420142f00003b01f002200420132f00003b01ec0220042800e703210620042801ee03210120042800f5032116200428028004211720042802fc032118200420042d008a013a00de02200420042f0188013b01dc02200441e8026a41026a221920022d00003a0000200420042f01d0033b01e802200441e4026a41026a220220082d00003a0000200420042f01f0023b01e402200441e0026a41026a220820032d00003a0000200420042f01ec023b01e002200441d8026a41026a220320192d00003a0000200420042f01e8023b01d802200441d4026a41026a221920022d00003a0000200420042f01e4023b01d402200441d0026a41026a220220082d00003a0000200420042f01e0023b01d002200420042d00de023a00ca02200420042f01dc023b01c802200441c4026a41026a220820032d00003a0000200420042f01d8023b01c402200441c0026a41026a220320192d00003a0000200420042f01d4023b01c002200441bc026a41026a221920022d00003a0000200420042f01d0023b01bc02200420042d00ca023a00ba02200420042f01c8023b01b802200441b4026a41026a221a20082d00003a0000200420042f01c4023b01b402200441b0026a41026a220820032d00003a0000200420042f01c0023b01b002200441ac026a41026a220320192d00003a0000200420042f01bc023b01ac02024020102012470d00201241016a22022012490d09201241017422192002201920024b1b22024104200241044b1bad42287e221b422088a7454103742102201ba721190240024020120d00200441003602e0030c010b200441083602e803200420113602e0032004201241286c3602e4030b20044188016a20192002200441e0036a104e200428029001210202402004280288014101470d002002450d0a0c0b0b200428028c012111200241286e21120b2011201041286c6a2202200c3703002002410a6a20042d00ba023a0000200220042f01b8023b0108200241116a201a2d00003a00002002410f6a20042f01b4023b0000200241186a20082d00003a0000200241166a20042f01b0023b00002002410b6a2006360000200241126a2001360000200241196a20163600002002411f6a20032d00003a00002002411d6a20042f01ac023b0000200241246a2017360000200241206a2018360000200f2110200f200d460d060c000b0b4100210f4108210d02402012450d00201241286c450d00201110310b410021100c050b41c080c300411941dc80c300103c000b200241246a21022008415c6a22080d000c080b0b200041013a00222000420037030820004201370300200041286a4118360200200041246a418094c500360200200041206a4183023b0100200041186a41003a00000c0a0b200d410020111b21102012410020111b210f2011410820111b210d0b200441e0036a41c98fc200200441a8036a10d20420044188016a20042802e003220820042802e80310d3042004280288012102200429028c01210c024020042802e403450d00200810310b20042802b003211820042802ac03211520042802a80321170240200aa7450d00200e10310b200741086a290000210a200741106a290000211b2007290000211c20044180036a41186a200741186a29000037030020044180036a41106a201b37030020044180036a41086a200a3703002004201c370380034108102f2208450d01200c420020021b210a200442083702e403200420083602e0032004200537038801200441e0036a20044188016a4108107e200441f4036a41002900d18f42370200200441002900c98f423702ec03200420044180036a3602fc03200441a8036a200441e0036a10d404024020042802e403450d0020042802e00310310b200a422088210c200441e0036a200441a8036a10d50420042802e003220320042802e803108f032108024020042802e403450d00200310310b2002410120021b2113200ca72112200aa72111410021020240024002400240024020080d0020044188016a41186a220820044180036a41186a29030037030020044188016a41106a220320044180036a41106a29030037030020044188016a41086a220620044180036a41086a290300370300200420042903800337038801200441e0036a200441a0026a10a602200441ec036a220241186a2008290300370000200241106a2003290300370000200241086a20062903003700002002200429038801370000200441d0036a200441a8036a10d50420042802d803210120042802d00321032004410036029001200442013703880120044188016a20024120107e20042802e003210620044188016a20042802e803220210cb0102402002450d002002410574210820062102034020044188016a20024120107e200241206a2102200841606a22080d000b0b200320012004280288012202200428029001109f020240200428028c01450d00200210310b024020042802d403450d00200310310b024020042802e40341ffffff3f71450d00200610310b20044188016a41186a2201200441a8036a41186a29030037030020044188016a41106a2209200441a8036a41106a29030037030020044188016a41086a2216200441a8036a41086a290300370300200420042903a803370388014100210202400240024020100e020201000b4100210220102108034020022008410176220320026a2206200d200641286c6a2903002005561b2102200820036b220841014b0d000b0b200d200241286c6a290300220a2005510d002002200a2005546a21020b200441e0036a41186a2001290300370300200441e0036a41106a2009290300370300200441e0036a41086a201629030037030020042004290388013703e00320102002490d0102402010200f470d00200f41016a2208200f490d06200f41017422032008200320084b1b22084104200841044b1bad42287e220a422088a7454103742108200aa7210302400240200f0d00200441003602d0030c010b200441083602d8032004200d3602d0032004200f41286c3602d4030b200441f0026a20032008200441d0036a104e20042802f802210820042802f0024101460d0420042802f402210d200841286e210f0b200d200241286c6a220841286a2008201020026b41286c10c0091a20082005370300200841206a200441e0036a41186a2203290300370300200841186a200441e0036a41106a2206290300370300200841106a200441e0036a41086a2201290300370300200820042903e003370308200320044188016a41186a290300370300200620044188016a41106a290300370300200120044188016a41086a29030037030020042004290388013703e003024020122011470d00201141016a22022011490d06201141017422082002200820024b1b22024104200241044b1b220241ffffff3f712002462108200241057421020240024020110d00200441003602d0030c010b200441013602d803200420133602d003200420114105743602d4030b200441f0026a20022008200441d0036a104e20042802f8022102024020042802f0024101470d0020020d080c070b20042802f4022113200241057621110b41012102201041016a2110201320124105746a220820042903e003370000200841186a2003290300370000200841106a2006290300370000200841086a2001290300370000201241016a21120b20071031024002402002450d000240024002402012450d0020124105742106200441e0036a4104722102201321080340200441d0036a200810d504200441e0036a20042802d003220720042802d80310d60420044188016a41086a2201200241086a29020037030020044188016a41106a2209200241106a29020037030020044188016a41186a2216200241186a29020037030020044188016a41206a220e200241206a29020037030020042002290200370388010240024020042802e00322030d00410021030c010b200441a8036a41206a200e290300370300200441a8036a41186a2016290300370300200441a8036a41106a2009290300370300200441a8036a41086a200129030037030020042004290388013703a8030b024020042802d403450d00200710310b20030d02200841206a2108200641606a22060d000b0b4200210a4104210e0c010b20044180036a41206a2202200441a8036a41206a29030037030020044180036a41186a2207200441a8036a41186a29030037030020044180036a41106a2201200441a8036a41106a29030037030020044180036a41086a2209200441a8036a41086a290300370300200420042903a80337038003412c102f220e450d08200e2003360200200e200429038003370204200e410c6a2009290300370200200e41146a2001290300370200200e411c6a2007290300370200200e41246a2002290300370200024020064120470d00428180808010210a0c010b200841206a2107201320124105746a221441606a2119200441e0036a4104722102428180808010210a0340200721080340200441d0036a200810d504200441e0036a20042802d003220620042802d80310d60420044188016a41086a2207200241086a29020037030020044188016a41106a2201200241106a29020037030020044188016a41186a2209200241186a29020037030020044188016a41206a2216200241206a29020037030020042002290200370388010240024020042802e00322030d00410021030c010b200441a8036a41206a2016290300370300200441a8036a41186a2009290300370300200441a8036a41106a2001290300370300200441a8036a41086a200729030037030020042004290388013703a8030b024020042802d403450d00200610310b024020030d002014200841206a2208470d010c030b0b20044180036a41206a200441a8036a41206a290300220c37030020044180036a41186a200441a8036a41186a290300221b37030020044180036a41106a200441a8036a41106a290300221c37030020044180036a41086a200441a8036a41086a290300221d370300200420042903a803221e37038003200441e0036a41206a2201200c370300200441e0036a41186a2209201b370300200441e0036a41106a2216201c370300200441e0036a41086a221a201d3703002004201e3703e00302400240200a422088a72206200aa7460d00200a210c0c010b200641016a22072006490d092006410174221f20072007201f491b22074104200741044b1bad422c7e220c422088a7454102742107200ca7211f0240024020060d0020044100360288010c010b20044104360290012004200e3602880120042006412c6c36028c010b200441a8036a201f200720044188016a104e20042802b003210720042802a8034101460d0820042802ac03210e2007412c6ead210c0b200841206a2107200e2006412c6c6a22062003360200200620042903e0033702042006410c6a201a290300370200200641146a20162903003702002006411c6a2009290300370200200641246a2001290300370200200c42ffffffff0f83200a4280808080107c4280808080708384210a20192008470d000b0b20044180046a2010360200200441fc036a200f360200200441f4036a2012360200200441f0036a20113602002004200d3602f803200420133602ec03200420183602e803200420153602e403200420173602e003201041286c4104722202417f4c0d062002102f2208450d07200441003602b003200420023602ac03200420083602a803200441a8036a201010cb0102402010450d00200d201041286c6a2103200d210203402004200229030037038801200441a8036a20044188016a4108107e4120102f2208450d092004422037028c01200420083602880120044188016a200241086a22024120107e200441a8036a2004280288012208200428029001107e0240200428028c01450d00200810310b200241206a22022003470d000b0b20044188016a41c98fc20010d1042004280288012202200428029001200441a8036a10de020240200428028c01450d00200210310b024020042802ac03450d0020042802a80310310b20044188016a41c98fc200200441e0036a10d2042004280288012202200428029001200441ec036a10d8040240200428028c01450d00200210310b02402015450d00201710310b0240201141ffffff3f71450d00201310310b200f450d01200f41286c450d01200d10310c010b02402015450d00201710310b0240201141ffffff3f71450d00201310310b4100210e0240200f450d00200f41286c450d00200d10310b0b024020042802a40241ffffff3f71450d0020042802a00210310b0240200e450d00200b4101200b41014b1b2202418094ebdc036e2002418094ebdc03704100476a22084101200841014b1b220820024b0d022002200a422088a7220641036c220320022003491b20086ead428094ebdc037e200220086ead80a710cc052103200641ffffffff03712006470d0520064102742202417f4c0d050240024020020d00410421070c010b2002102f2207450d070b0240024002402002410276220120064f0d00200241017622082006200820064b1b22084104200841044b1b220841ffffffff03712008464102742101200841027421080240024020020d00200441003602e0030c010b200441e8036a4104360200200420023602e403200420073602e0030b20044188016a20082001200441e0036a104e20044190016a280200210202402004280288014101460d00200428028c012107200241027621010c020b20020d090c080b2006450d010b2006210820072102034020022003360200200241046a21022008417f6a22080d000b0b4108102f2202450d06200442083702ac03200420023602a803200420053703e003200441a8036a200441e0036a4108107e200441bc036a41002900d18f42370200200441002900c98f423702b403200441a3016a200441a8036a41186a2802003600002004419b016a200441a8036a41106a29030037000020044193016a20042903b003370000200420042903a80337008b01200441e9036a20044188016a41086a290000370000200441f1036a20044188016a41106a290000370000200441e0036a41186a2004419f016a29000037000020044180046a41013a0000200441033a00e00320042004290088013700e103200441e0036a10a90202402001450d00200710310b02402006450d002006412c6c2108200e210203400240200241046a28020041ffffff3f71450d00200228020010310b2002412c6a2102200841546a22080d000b0b0240200aa72202450d002002412c6c450d00200e10310b2000420037030820004200370300200041186a41013a0000200441b00b6a24000f0b200041023a00222000420037030820004201370300200041286a4116360200200041246a41c394c500360200200041206a4183023b0100200041186a41003a00000c0c0b200220101048000b41d0c1c700411941ace7c900103c000b20080d020c010b20070d010b103b000b1039000b200241246a21022008415c6a22080d000b0b0240200441f4036a2802002208450d00200441e0036a410c6a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022008415c6a22080d000b0b200441f0036a2802002202450d00200241246c450d0020042802ec0310310b0240200441e4046a2802002208450d00200441dc046a2802002102200841246c210803400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022008415c6a22080d000b0b200441e0046a2802002202450d00200241246c450d0020042802dc0410310b200041286a4118360200200041246a41e893c500360200200041003a0022200041206a4183023b0100200041186a41003a000020004200370308200042013703000b2003280204210002402003410c6a2802002202450d002002410c6c21082000210203400240200241046a280200450d00200228020010310b2002410c6a2102200841746a22080d000b0b200341086a2802002202450d002002410c6c450d00200010310b200441b00b6a24000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d00200210c7040b0f0b200041086a10ad01200041046a220228020010ad03200228020010310b860302017f027e230041801b6b2204240020044198136a200241e00710bf091a200441286a20044198136a10bb05200441186a200441286a109d040240024002402004280218450d0020004202370300200041153602080c010b20042903202105200441086a200441286a109c0402402004290308a7450d0020004202370300200041153602080c010b0240200520042903107c220620055a0d0020004202370300200041113602080c010b024020062003580d0020004202370300200041113602080c010b2004420037038808200441d00f6a200141c80310bf091a20044198136a200441286a41e00710bf091a200442003703f81a4201210320044190086a200441d00f6a410120044198136a200441f81a6a4201200520044188086a10b406024002402004290390084201520d00200041106a20044198086a41b80710bf091a0c010b420020062004290398087d220320032006561b2106420021030b20002003370300200020063703080c010b200441286a10f203200110ad010b200441801b6a24000b8d0501027f230041d0216b22032400200341b8076a200141c80310bf091a200341800b6a200241e80310bf091a0240024020032903b8074201520d0020032d00c0074101470d0020032802c4072102200341800f6a22014200370300200341f80e6a22044200370300200341e80e6a41086a4200370300200342003703e80e200341e80e6a41b5d8c800410d10a702200341981a6a41cfd8c800410c10a7022001200341981a6a41086a290000370300200420032900981a370300200341981a6a200341e80e6a412010b20220032802e81a210120032802a81b2104200341b0166a200341800b6a41e80310bf091a200341003602a816200342013703a016200341003a00cf21200341a0166a200341cf216a4101107e200341b0166a200341a0166a10de01024002404100200120044102461b2002200341a0166a10b3020d00200341b0166a10a301200341b8076a10ad01411921020c010b200341e80e6a200341981a6a41b40710bf091a200341981a6a200341e80e6a41b40710bf091a200341ec036a200341e80e6a41cc0310bf091a2003200341981a6a41cc036a41e80310bf09220241b0166a10a301200241b8076a10ad01410f21020b20002002360200200041046a200341ec036a41cc0310bf091a200041d0036a200341e80310bf091a0c010b200341981a6a41046a200341b8076a41c80310bf091a200341ec036a200341981a6a41cc0310bf091a2003200341800b6a41e80310bf09220241b0166a200241ec036a41046a41c80310bf091a200241981a6a200241e80310bf091a200241e80e6a41046a200241b0166a41c80310bf091a2000410b360200200041046a200241e80e6a41cc0310bf091a200041d0036a200241981a6a41e80310bf091a0b200341d0216a24000bc40101047f024002400240024020012802042202450d00200128020022032d0000210420012002417f6a22053602042001200341016a36020020040e020203010b200041023602000f0b200041023602000f0b200041003602000f0b024020054104490d002003280001210520012002417b6a22043602042001200341056a36020020044104490d002000200536020420004101360200200328000521042001200241776a3602042001200341096a360200200041086a20043602000f0b200041023602000bff0403037f017e077f230041306b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b024002400240024002400240200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102f2206450d040b2004410c6e2107024020030d00410021030c060b41002108410021094100210a03402002200110bb0120022802000d032001280204220b20022802042204490d032004417f4c0d010240024020040d004101210c0c010b20041035220c450d052001280204210b0b200b2004490d02200c2001280200200410bf09210b2001280204220c2004490d052001200c20046b3602042001200128020020046a36020002400240200a2007470d002008200a41016a220c2008200c4b1b220c4104200c41044b1bad420c7e2205422088a745410274210c2005a7210702400240200a0d00200241003602200c010b2002410436022820022009360224200220063602200b200241106a2007200c200241206a104e2002280218210c20022802104101460d0120022802142106200c410c6e21070b200620096a220c200b360200200c41046a2004ad2205422086200584370200200841026a21082009410c6a21092003200a41016a220a460d070c010b0b200c0d030b103b000b200c10310b200041003602000240200a450d002006210403400240200441046a280200450d00200428020010310b2004410c6a2104200941746a22090d000b0b2007450d032007410c6c450d03200610310c030b1039000b2004200c419cb4c0001061000b2000200736020420002006360200200041086a20033602000b200241306a24000bd00503037f017e047f230041e0036b22022400200241f0026a200110b501024002400240024020022d00f0024101460d0020024188026a20024189036a29000037030020024180026a20024181036a290000370300200241f0016a41086a200241f9026a290000370300200220022900f1023703f0010240200128020422034108490d002001280200220429000021052001200341786a3602042001200441086a360200200241f0026a200110b70320022802f4022203450d02200241fc026a280200210620022802f802210420022802f002210720024190026a200241f0026a41106a41e00010bf091a200241f0026a200110b70320022802f402450d03200241206a200241f0026a41f00010bf091a200241086a2201200241f0016a41086a290300370300200241106a2208200241f0016a41106a290300370300200241186a2209200241f0016a41186a290300370300200220022903f00137030020024190016a20024190026a41e00010bf091a200041146a2006360200200020043602102000200336020c2000200736020820002005370300200041186a20024190016a41e00010bf091a200041f8006a200241206a41f00010bf091a20004180026a2009290300370300200041f8016a2008290300370300200041f0016a2001290300370300200041e8016a20022903003703000c040b2000410036020c0c030b2000410036020c0c020b2000410036020c0c010b2000410036020c02402006450d00200641246c21002003210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012000415c6a22000d000b0b2004450d00200441246c450d00200310310b200241e0036a24000baa0201067f230041106b2202240002400240200128020422034104490d0020012802002204280000210520012003417c6a3602042001200441046a3602002002200110b1030240024020022802002203450d00200241086a280200210620022802042104200128020422074104490d012000200436020820002003360204200020053602002000410c6a200636020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c030b200041003602040c020b2000410036020402402006450d002006410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b2004450d012004410c6c450d01200310310c010b200041003602040b200241106a24000ba20202057f027e230041106b21020240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020054101470d01024002400240024020064108490d00200429000121072001200341776a22053602042001200441096a36020020054108490d002004290009210820012003416f6a22053602042001200441116a3602002005450d0320042d0011210520012003416e6a3602042001200441126a36020041002101024020050e03030200040b410221010c020b200041033a00100f0b410121010b200020013a0010200020083703082000200737030020002002280009360011200041146a2002410c6a2800003600000f0b200041033a00100f0b200041033a00100f0b200041033a00100baf0c03057f047e057f230041a0016b220224000240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e050102030406050b200041053a00000c060b200241e8006a200110b501024020022d00684101460d00200241286a200241e8006a41196a2900002207370300200241206a200241e8006a41116a2900002208370300200241186a200241e8006a41096a290000220937030020022002290069220a370310200041003a00002000200a370001200041096a2009370000200041116a2008370000200041196a2007370000200041216a20022f00583b0000200041236a200241da006a2d00003a00000c060b200041053a00000c050b200041013a00000c040b200241086a200110bb01024020022802080d0020012802042203200228020c2205490d002005417f4c0d050240024020050d004101210b0c010b20051035220b450d07200128020421030b024020032005490d00200b2001280200200510bf0921032001280204220b2005490d082001200b20056b3602042001200128020020056a3602002003450d01200041023a0000200020022f00103b0001200041086a2005ad2207422086200784370000200041046a2003360000200041106a2002290268370200200041036a200241106a41026a2d00003a0000200041186a200241e8006a41086a290200370200200041206a200241e8006a41106a2802003602000c050b200b10310b200041053a00000c030b41002105200241003602682003417e6a2103200241e8006a410472210c0240034020062005460d01200420056a220b41016a2d0000210d200120033602042001200b41026a360200200c20056a200d3a00002002200541016a220b3602682003417f6a2103200b2105200b4120470d000b2002419c016a41026a2205200241f5006a2d00003a000020024198016a41026a2201200241fc006a2d00003a0000200220022f016c3b0158200220022d006e3a005a2002200241e8006a410b6a2f00003b019c012002200241e8006a41126a2f01003b019801200241f6006a2801002103200228006f210b200241fd006a280000210d2002200241e8006a41196a280000360210200220024184016a28000036001320024188016a2802002104200220022d005a3a0056200220022f01583b015420024194016a41026a220620052d00003a0000200220022f019c013b01940120024190016a41026a220520012d00003a0000200220022f0198013b0190012002418c016a41026a220120022d00123a0000200220022f01103b018c012002280013210c200241d0006a41026a220e20062d00003a0000200220022f0194013b0150200241cc006a41026a220620052d00003a0000200220022f0190013b014c200241c8006a41026a220520012d00003a0000200220022f018c013b0148200241c4006a41026a220120022d00563a0000200220022f01543b0144200241c0006a41026a220f200e2d00003a0000200220022f01503b01402002413c6a41026a220e20062d00003a0000200220022f014c3b013c200241386a41026a220620052d00003a0000200220022f01483b0138200041033a0000200041046a200b360000200020022f01443b0001200041036a20012d00003a00002000410b6a2003360000200041086a20022f01403b00002000410a6a200f2d00003a0000200041126a200d3600002000410f6a20022f013c3b0000200041116a200e2d00003a0000200041166a20022f01383b0000200041186a20062d00003a00002000411d6a2004360000200041196a200c360000200041236a200241356a41026a2d00003a0000200041216a20022f00353b00000c030b200041053a00000c020b200041053a00000c010b200241e8006a200110d201024020022d00684101460d00200241206a200241e8006a41116a2800002205360200200241186a200241e8006a41096a2900002207370300200220022900692208370310200041043a000020002008370001200041096a2007370000200041116a2005360000200041156a20022900583700002000411c6a200241df006a2900003700000c010b200041053a00000b200241a0016a24000f0b103b000b1039000b2005200b419cb4c0001061000be10506067f017e027f017e017f017e230041206b220224000240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a360200024002400240200541037122074103460d0002400240024020070e03000102000b2005410276ad21080c040b410121072006450d0220042d0001210620012003417e6a3602042001200441026a3602002006410874200572220141ffff0371418002490d02200141fcff0371410276ad21080c030b4101210720064103490d01200441036a2d0000210620042f0001210920012003417c6a3602042001200441046a3602002009200641107472410874200572220141808004490d012001410276ad21080c020b02400240024002402005410276220a0e0d00030303010303030303030302030b20064104490d052004350001210820012003417b6a3602042001200441056a36020020084280808080045421074200210b0c060b20064108490d04200429000121082001200341776a3602042001200441096a3602002008428080808080808080015421074200210b0c050b20064110490d03200441096a290000210b2004290001210820012003416f6a3602042001200441116a360200200b428080808080808080015421070c040b200541334b0d02200a41046a21092003417e6a2103200441026a21044100210541012107200241186a210c420021084200210b03402003417f460d012004417f6a310000210d2001200336020420012004360200200241106a200d4200200541037441f8007110c3092003417f6a2103200441016a2104200c290300200b84210b20022903102008842108200541016a22062105200641ff01712009490d000b2002427f427f41e800200a4103746b41f8007110ba092008200229030058200b200241086a290300220d58200b200d511b21070c030b0c020b4200210b410021070c010b410121070b20002008370308200041106a200b37030020002007ad370300200241206a24000bf11b03187f017e027f230041f0016b2202240041002103200241003602a801200241a8016a4104722104200128020421050240024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420036a20073a00002002200341016a22063602a8012006210320064120470d000b200241e8016a41026a2205200241b5016a2d00003a0000200241e4016a41026a2203200241bc016a2d00003a0000200220022f01ac013b01ec01200220022d00ae013a00ee012002200241b3016a2f00003b01e8012002200241ba016a2f01003b01e401200241b6016a280100210820022800af012109200241bd016a280000210a2002200241c1016a2800003602dc012002200241c4016a2800003600df01200241c8016a280200210b200220022d00ee013a00a601200220022f01ec013b01a401200241d8016a41026a220620052d00003a0000200220022f01e8013b01d801200241d4016a41026a220720032d00003a0000200220022f01e4013b01d401200241d0016a41026a220420022d00de013a0000200220022f01dc013b01d00120022800df01210c200241dc016a41026a220d20062d00003a0000200220022f01d8013b01dc01200241ec016a41026a220e20072d00003a0000200220022f01d4013b01ec01200520042d00003a0000200220022f01d0013b01e801200241a8016a41026a20022d00a6013a0000200220022f01a4013b01a8012003200d2d00003a0000200220022f01dc013b01e4012006200e2d00003a0000200220022f01ec013b01d801200720052d00003a0000200220022f01e8013b01d401410021050c010b410121050b200241e0006a41026a2203200241a8016a41026a2d00003a0000200241dc006a41026a2206200241e4016a41026a2d00003a0000200241d8006a41026a2207200241d8016a41026a2d00003a0000200241d4006a41026a2204200241d4016a41026a2d00003a0000200220022f01a8013b0160200220022f01e4013b015c200220022f01d8013b0158200220022f01d4013b01540240024002400240024020050d00200241d0006a41026a20032d00003a0000200241cc006a41026a20062d00003a0000200241c8006a41026a20072d00003a0000200241c4006a41026a20042d00003a0000200220022f01603b0150200220022f015c3b014c200220022f01583b0148200220022f01543b0144200241086a200110bb0120022802080d01200228020c210e200241003602a80120012802042105410421030240024003402005450d01200241a8016a20036a200128020022062d00003a000020012005417f6a22053602042001200641016a36020020022003417d6a3602a801200341016a22034124470d000b200241e8016a41026a2203200241b5016a2d00003a0000200241e4016a41026a2206200241bc016a2d00003a0000200220022f01ac013b01ec01200220022d00ae013a00ee012002200241b3016a2f00003b01e8012002200241ba016a2f01003b01e401200241b6016a280100210f20022800af012110200241bd016a28000021112002200241c1016a2800003602dc012002200241c4016a2800003600df01200241c8016a2802002112200220022d00ee013a00a601200220022f01ec013b01a401200241d8016a41026a220720032d00003a0000200220022f01e8013b01d801200241d4016a41026a220420062d00003a0000200220022f01e4013b01d401200241d0016a41026a220d20022d00de013a0000200220022f01dc013b01d00120022800df012113200241dc016a41026a221420072d00003a0000200220022f01d8013b01dc01200241ec016a41026a221520042d00003a0000200220022f01d4013b01ec012003200d2d00003a0000200220022f01d0013b01e801200241a8016a41026a20022d00a6013a0000200220022f01a4013b01a801200620142d00003a0000200220022f01dc013b01e401200720152d00003a0000200220022f01ec013b01d801200420032d00003a0000200220022f01e8013b01d401410021030c010b41012103410021050b20024180016a41026a2206200241a8016a41026a2d00003a0000200241fc006a41026a2207200241e4016a41026a2d00003a0000200241f8006a41026a2204200241d8016a41026a2d00003a0000200241f4006a41026a220d200241d4016a41026a2d00003a0000200220022f01a8013b018001200220022f01e4013b017c200220022f01d8013b0178200220022f01d4013b017420030d02200241f0006a41026a20062d00003a0000200241ec006a41026a20072d00003a0000200241e8006a41026a20042d00003a0000200241e4006a41026a200d2d00003a0000200220022f0180013b0170200220022f017c3b016c200220022f01783b0168200220022f01743b016441002103200241003602a801200241a8016a41047221040240024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420036a20073a00002002200341016a22063602a8012006210320064120470d000b200241e8016a41026a2205200241b5016a2d00003a0000200241e4016a41026a2203200241bc016a2d00003a0000200220022f01ac013b01ec01200220022d00ae013a00ee012002200241b3016a2f00003b01e8012002200241ba016a2f01003b01e401200241b6016a280100210d20022800af012114200241bd016a28000021152002200241c1016a2800003602dc012002200241c4016a2800003600df01200241c8016a2802002116200220022d00ee013a00a601200220022f01ec013b01a401200241d8016a41026a220620052d00003a0000200220022f01e8013b01d801200241d4016a41026a220720032d00003a0000200220022f01e4013b01d401200241d0016a41026a220420022d00de013a0000200220022f01dc013b01d00120022800df012117200241dc016a41026a221820062d00003a0000200220022f01d8013b01dc01200241ec016a41026a221920072d00003a0000200220022f01d4013b01ec01200520042d00003a0000200220022f01d0013b01e801200241a8016a41026a20022d00a6013a0000200220022f01a4013b01a801200320182d00003a0000200220022f01dc013b01e401200620192d00003a0000200220022f01ec013b01d801200720052d00003a0000200220022f01e8013b01d401410021050c010b410121050b200241a0016a41026a2203200241a8016a41026a2d00003a00002002419c016a41026a2206200241e4016a41026a2d00003a000020024198016a41026a2207200241d8016a41026a2d00003a000020024194016a41026a2204200241d4016a41026a2d00003a0000200220022f01a8013b01a001200220022f01e4013b019c01200220022f01d8013b019801200220022f01d4013b01940120050d0320024190016a41026a20032d00003a00002002418c016a41026a20062d00003a000020024188016a41026a20072d00003a000020024184016a41026a20042d00003a0000200220022f01a0013b019001200220022f019c013b018c01200220022f0198013b018801200220022f0194013b018401200241a8016a200110a806024020022802a8012201450d0020022902ac01211a2002413c6a41026a2205200241cc006a41026a2d00003a0000200241386a41026a2203200241c8006a41026a2d00003a0000200241346a41026a2206200241c4006a41026a2d00003a0000200220022f01503b0140200220022f014c3b013c200220022f01483b0138200220022f01443b0134200220022f01703b01302002200241d0006a41026a2d00003a00422002200241f0006a41026a2d00003a00322002412c6a41026a2207200241ec006a41026a2d00003a0000200241286a41026a2204200241e8006a41026a2d00003a0000200241246a41026a2218200241e4006a41026a2d00003a00002002411c6a41026a22192002418c016a41026a2d00003a0000200220022f016c3b012c200220022f01683b0128200220022f01643b0124200220024190016a41026a2d00003a0022200220022f0190013b0120200220022f018c013b011c200241186a41026a221b20024188016a41026a2d00003a0000200220022f0188013b0118200241146a41026a221c20024184016a41026a2d00003a0000200220022f0184013b01142000201a370208200020013602042000200e360200200041136a2009360000200041106a20022f01403b0100200041126a20022d00423a00002000200836001a200020022f013c3b0017200041196a20052d00003a0000200020022f01383b001e200041206a20032d00003a00002000200a360021200041276a20062d00003a0000200020022f01343b00252000412c6a200b360000200041286a200c360000200041326a20022d00323a0000200041306a20022f01303b0100200041336a2010360000200041396a20072d00003a0000200020022f012c3b00372000200f36003a200041c0006a20042d00003a0000200020022f01283b003e20002011360041200041c7006a20182d00003a0000200020022f01243b0045200041cc006a2012360000200041c8006a2013360000200041d2006a20022d00223a0000200041d0006a20022f01203b0100200041d3006a2014360000200041d9006a20192d00003a0000200020022f011c3b00572000200d36005a200041e0006a201b2d00003a0000200020022f01183b005e20002015360061200041e7006a201c2d00003a0000200020022f01143b0065200041ec006a2016360000200041e8006a20173600000c050b200041003602040c040b200041003602040c030b200041003602040c020b200041003602040c010b200041003602040b200241f0016a24000bf55106037f017e027f017e1f7f017e23004190086b2202240002400240200128020422034108490d002001280200220429000021052001200341786a22063602042001200441086a220436020002402006450d0020042d000021062001200341776a22073602042001200441016a36020002400240024020060e020001030b20074108490d022004290001210820012003416f6a3602042001200441096a36020020024198076a200110b50120022d0098074101460d0220024180056a200241b1076a290000370300200241f8046a200241a9076a290000370300200241f0046a20024198076a41096a29000037030020022002290099073703e80441002103200241003602980720024198076a410472210920012802042107417f2104034020072003460d03200128020022062d0000210a2001200720046a3602042001200641016a360200200920036a200a3a00002002200341016a2206360298072004417f6a21042006210320064120470d000b20024180086a41026a2203200241a5076a2d00003a0000200241fc076a41026a2204200241ac076a2d00003a0000200220022f019c073b018408200220022d009e073a0086082002200241a3076a2f00003b0180082002200241aa076a2f01003b01fc07200241a6076a280100210b200228009f07210c200241ad076a280000210d2002200241b1076a280000360288082002200241b4076a28000036008b08200241b8076a280200210e200220022d0086083a00ee07200220022f0184083b01ec07200241f8076a41026a220a20032d00003a0000200220022f0180083b01f807200241f4076a41026a220320042d00003a0000200220022f01fc073b01f407200241f0076a41026a220420022d008a083a0000200220022f0188083b01f007200228008b08210f200241e8076a41026a2209200a2d00003a0000200220022f01f8073b01e807200241e4076a41026a220a20032d00003a0000200220022f01f4073b01e407200241e0076a41026a220320042d00003a0000200220022f01f0073b01e007200241f4056a41026a220420022d00ee073a0000200220022f01ec073b01f405200241f0056a41026a221020092d00003a0000200220022f01e8073b01f005200241ec056a41026a2209200a2d00003a0000200220022f01e4073b01ec05200241e8056a41026a220a20032d00003a0000200220022f01e0073b01e805200720066b22034104490d0220012802002206280000211120012003417c6a3602042001200641046a360200200241e0056a41026a20102d00003a0000200241dc056a41026a20092d00003a0000200241d8056a41026a200a2d00003a0000200220022f01f4053b01e405200220022f01f0053b01e005200220022f01ec053b01dc05200220022f01e8053b01d805200220042d00003a00e60520024198076a200110b90320022d0098074101460d0220024188056a41386a2203200241d1076a29000037030020024188056a41306a2204200241c9076a29000037030020024188056a41286a2206200241c1076a29000037030020024188056a41206a2207200241b9076a29000037030020024188056a41186a220a200241b1076a29000037030020024188056a41106a2209200241a9076a29000037030020024188056a41086a2210200241a1076a290000370300200220022900990737038805200220022f01e4053b01d405200220022d00e6053a00d605200241d0056a41026a2212200241e0056a41026a2d00003a0000200220022f01e0053b01d005200241cc056a41026a2213200241dc056a41026a2d00003a0000200220022f01dc053b01cc05200241c8056a41026a2214200241d8056a41026a2d00003a0000200220022f01d8053b01c805200220022d00d6053a00de07200220022f01d4053b01dc0720024194076a41026a221520122d00003a0000200220022f01d0053b01940720024190076a41026a221220132d00003a0000200220022f01cc053b0190072002418c076a41026a221320142d00003a0000200220022f01c8053b018c07200241c8066a41386a22142003290300370300200241c8066a41306a22032004290300370300200241c8066a41286a22042006290300370300200241c8066a41206a22062007290300370300200241c8066a41186a2207200a290300370300200241c8066a41106a220a2009290300370300200241c8066a41086a2209201029030037030020022002290388053703c806200220022d00de073a00c606200220022f01dc073b01c406200241c0066a41026a20152d00003a0000200220022f0194073b01c006200241bc066a41026a20122d00003a0000200220022f0190073b01bc06200241b8066a41026a20132d00003a0000200220022f018c073b01b806200241f8056a41386a2014290300370300200241f8056a41306a2003290300370300200241f8056a41286a2004290300370300200241f8056a41206a2006290300370300200241f8056a41186a2007290300370300200241f8056a41106a200a290300370300200241f8056a41086a2009290300370300200220022903c8063703f80541002103200241003602980720024198076a410472210920012802042107417f2104034020072003460d03200128020022062d0000210a2001200720046a3602042001200641016a360200200920036a200a3a00002002200341016a2206360298072004417f6a21042006210320064120470d000b20024180086a41026a2212200241a5076a2d00003a0000200241fc076a41026a2213200241ac076a2d00003a0000200220022f019c073b018408200220022d009e073a0086082002200241a3076a2f00003b0180082002200241aa076a2f01003b01fc07200241a6076a2801002104200228009f07210a200241ad076a2800002109200241b1076a2800002103200241f8076a41026a2214200241b7076a2d00003a00002002200241b5076a2f00003b01f807200241b8076a2802002110200220022d0086083a00ea07200220022f0184083b01e807200220122d00003a00f607200220022f0180083b01f407200241f0076a41026a221220132d00003a00002002200336028808200220022f01fc073b01f0072002418e086a20142d00003a0000200220022f01f8073b018c08200241ec076a41026a221320022d008a083a0000200220033b01ec07200228008b082103200241e4076a41026a221420022d00f6073a0000200220022f01f4073b01e407200241e0076a41026a221520122d00003a0000200220022f01f0073b01e007200241dc076a41026a221220132d00003a0000200220022f01ec073b01dc07200241f4056a41026a221320022d00ea073a0000200220022f01e8073b01f405200241f0056a41026a221620142d00003a0000200220022f01e4073b01f005200241ec056a41026a221420152d00003a0000200220022f01e0073b01ec05200241e8056a41026a221520122d00003a0000200220022f01dc073b01e805200720066b22064104490d0220012802002212280000210720012006417c6a3602042001201241046a360200200241e0056a41026a20162d00003a0000200241dc056a41026a20142d00003a0000200241d8056a41026a20152d00003a0000200220022f01f4053b01e405200220022f01f0053b01e005200220022f01ec053b01dc05200220022f01e8053b01d805200220132d00003a00e60520024198076a200110b90320022d0098074101460d0220024188056a41386a2201200241d1076a29000037030020024188056a41306a2206200241c9076a29000037030020024188056a41286a2212200241c1076a29000037030020024188056a41206a2213200241b9076a29000037030020024188056a41186a2214200241b1076a29000037030020024188056a41106a2215200241a9076a29000037030020024188056a41086a2216200241a1076a290000370300200220022900990737038805200220022f01e4053b01d405200220022d00e6053a00d605200241d0056a41026a2217200241e0056a41026a2d00003a0000200220022f01e0053b01d005200241cc056a41026a2218200241dc056a41026a2d00003a0000200220022f01dc053b01cc05200241c8056a41026a2219200241d8056a41026a2d00003a0000200220022f01d8053b01c805200220022d00d6053a009607200220022f01d4053b01940720024190076a41026a221a20172d00003a0000200220022f01d0053b0190072002418c076a41026a221720182d00003a0000200220022f01cc053b018c0720024188076a41026a221820192d00003a0000200220022f01c8053b018807200241c8066a41386a22192001290300370300200241c8066a41306a22012006290300370300200241c8066a41286a22062012290300370300200241c8066a41206a22122013290300370300200241c8066a41186a22132014290300370300200241c8066a41106a22142015290300370300200241c8066a41086a2215201629030037030020022002290388053703c806200220022d0096073a00f603200220022f0194073b01f403200241f0036a41026a2216201a2d00003a0000200220022f0190073b01f003200241ec036a41026a221a20172d00003a0000200220022f018c073b01ec03200241e8036a41026a221720182d00003a0000200220022f0188073b01e803200241a8036a41386a22182019290300370300200241a8036a41306a22192001290300370300200241a8036a41286a22012006290300370300200241a8036a41206a22062012290300370300200241a8036a41186a22122013290300370300200241a8036a41106a22132014290300370300200241a8036a41086a22142015290300370300200220022903c8063703a803200241c8046a41186a2215200241e8046a41186a290300370300200241c8046a41106a221b200241e8046a41106a290300370300200241c8046a41086a221c200241e8046a41086a290300370300200220022903e8043703c804200220022d00c6063a00c604200220022f01c4063b01c404200241c0046a41026a221d200241c0066a41026a2d00003a0000200220022f01c0063b01c004200241bc046a41026a221e200241bc066a41026a2d00003a0000200220022f01bc063b01bc04200241b8046a41026a221f200241b8066a41026a2d00003a0000200220022f01b8063b01b804200241f8036a41386a2220200241f8056a41386a290300370300200241f8036a41306a2221200241f8056a41306a290300370300200241f8036a41286a2222200241f8056a41286a290300370300200241f8036a41206a2223200241f8056a41206a290300370300200241f8036a41186a2224200241f8056a41186a290300370300200241f8036a41106a2225200241f8056a41106a290300370300200241f8036a41086a2226200241f8056a41086a290300370300200220022903f8053703f80320024188036a41186a2227201529030037030020024188036a41106a2215201b29030037030020024188036a41086a221b201c290300370300200220022903c80437038803200220022d00c6043a008603200220022f01c4043b01840320024180036a41026a201d2d00003a0000200220022f01c0043b018003200241fc026a41026a201e2d00003a0000200220022f01bc043b01fc02200241f8026a41026a201f2d00003a0000200220022f01b8043b01f802200241b8026a41386a2020290300370300200241b8026a41306a2021290300370300200241b8026a41286a2022290300370300200241b8026a41206a2023290300370300200241b8026a41186a2024290300370300200241b8026a41106a2025290300370300200241b8026a41086a2026290300370300200220022903f8033703b802200220022d00f6033a00b602200220022f01f4033b01b402200241b0026a41026a20162d00003a0000200220022f01f0033b01b002200241ac026a41026a201a2d00003a0000200220022f01ec033b01ac02200241a8026a41026a20172d00003a0000200220022f01e8033b01a802200241e8016a41386a2018290300370300200241e8016a41306a2019290300370300200241e8016a41286a2001290300370300200241e8016a41206a2006290300370300200241e8016a41186a2012290300370300200241e8016a41106a2013290300370300200241e8016a41086a2014290300370300200220022903a8033703e801200241c8016a41186a2027290300370300200241c8016a41106a2015290300370300200241c8016a41086a201b29030037030020022002290388033703c801420021280c010b20074108490d012004290001210820012003416f6a3602042001200441096a36020020024198076a200110b50120022d0098074101460d0120024180056a200241b1076a290000370300200241f8046a200241a9076a290000370300200241f0046a20024198076a41096a29000037030020022002290099073703e80441002103200241003602980720024198076a410472210920012802042107417f2104034020072003460d02200128020022062d0000210a2001200720046a3602042001200641016a360200200920036a200a3a00002002200341016a2206360298072004417f6a21042006210320064120470d000b20024180086a41026a2204200241a5076a2d00003a0000200241fc076a41026a220a200241ac076a2d00003a0000200220022f019c073b018408200220022d009e073a0086082002200241a3076a2f00003b0180082002200241aa076a2f01003b01fc07200241a6076a280100210b200228009f07210c200241ad076a280000210d200241b1076a2800002103200241f8076a41026a2209200241b7076a2d00003a00002002200241b5076a2f00003b01f807200241b8076a280200210e200220022d0086083a00ea07200220022f0184083b01e807200220042d00003a00f607200220022f0180083b01f407200241f0076a41026a2204200a2d00003a00002002200336028808200220022f01fc073b01f0072002418e086a20092d00003a0000200220022f01f8073b018c08200241ec076a41026a220a20022d008a083a0000200220033b01ec07200228008b08210f200241e4076a41026a220320022d00f6073a0000200220022f01f4073b01e407200241e0076a41026a220920042d00003a0000200220022f01f0073b01e007200241dc076a41026a2204200a2d00003a0000200220022f01ec073b01dc07200241f4056a41026a220a20022d00ea073a0000200220022f01e8073b01f405200241f0056a41026a221020032d00003a0000200220022f01e4073b01f005200241ec056a41026a220320092d00003a0000200220022f01e0073b01ec05200241e8056a41026a220920042d00003a0000200220022f01dc073b01e805200720066b22044104490d0120012802002206280000211120012004417c6a3602042001200641046a360200200241e0056a41026a20102d00003a0000200241dc056a41026a20032d00003a0000200241d8056a41026a20092d00003a0000200220022f01f4053b01e405200220022f01f0053b01e005200220022f01ec053b01dc05200220022f01e8053b01d8052002200a2d00003a00e60520024198076a200110b90320022d0098074101460d0120024188056a41386a2203200241d1076a29000037030020024188056a41306a2204200241c9076a29000037030020024188056a41286a2206200241c1076a29000037030020024188056a41206a2207200241b9076a29000037030020024188056a41186a220a200241b1076a29000037030020024188056a41106a2209200241a9076a29000037030020024188056a41086a2210200241a1076a290000370300200220022900990737038805200220022f01e4053b01d405200220022d00e6053a00d605200241d0056a41026a2212200241e0056a41026a2d00003a0000200220022f01e0053b01d005200241cc056a41026a2213200241dc056a41026a2d00003a0000200220022f01dc053b01cc05200241c8056a41026a2214200241d8056a41026a2d00003a0000200220022f01d8053b01c805200220022d00d6053a009607200220022f01d4053b01940720024190076a41026a221520122d00003a0000200220022f01d0053b0190072002418c076a41026a221220132d00003a0000200220022f01cc053b018c0720024188076a41026a221320142d00003a0000200220022f01c8053b018807200241c8066a41386a22142003290300370300200241c8066a41306a22032004290300370300200241c8066a41286a22042006290300370300200241c8066a41206a22062007290300370300200241c8066a41186a2207200a290300370300200241c8066a41106a220a2009290300370300200241c8066a41086a2209201029030037030020022002290388053703c806200220022d0096073a00c606200220022f0194073b01c406200241c0066a41026a20152d00003a0000200220022f0190073b01c006200241bc066a41026a20122d00003a0000200220022f018c073b01bc06200241b8066a41026a20132d00003a0000200220022f0188073b01b806200241f8056a41386a2014290300370300200241f8056a41306a2003290300370300200241f8056a41286a2004290300370300200241f8056a41206a2006290300370300200241f8056a41186a2007290300370300200241f8056a41106a200a290300370300200241f8056a41086a2009290300370300200220022903c8063703f80541002103200241003602980720024198076a410472210920012802042107417f2104034020072003460d02200128020022062d0000210a2001200720046a3602042001200641016a360200200920036a200a3a00002002200341016a2206360298072004417f6a21042006210320064120470d000b20024180086a41026a2212200241a5076a2d00003a0000200241fc076a41026a2213200241ac076a2d00003a0000200220022f019c073b018408200220022d009e073a0086082002200241a3076a2f00003b0180082002200241aa076a2f01003b01fc07200241a6076a2801002104200228009f07210a200241ad076a2800002109200241b1076a2800002103200241f8076a41026a2214200241b7076a2d00003a00002002200241b5076a2f00003b01f807200241b8076a2802002110200220022d0086083a00ea07200220022f0184083b01e807200220122d00003a00f607200220022f0180083b01f407200241f0076a41026a221220132d00003a00002002200336028808200220022f01fc073b01f0072002418e086a20142d00003a0000200220022f01f8073b018c08200241ec076a41026a221320022d008a083a0000200220033b01ec07200228008b082103200241e4076a41026a221420022d00f6073a0000200220022f01f4073b01e407200241e0076a41026a221520122d00003a0000200220022f01f0073b01e007200241dc076a41026a221220132d00003a0000200220022f01ec073b01dc07200241f4056a41026a221320022d00ea073a0000200220022f01e8073b01f405200241f0056a41026a221620142d00003a0000200220022f01e4073b01f005200241ec056a41026a221420152d00003a0000200220022f01e0073b01ec05200241e8056a41026a221520122d00003a0000200220022f01dc073b01e805200720066b22064104490d0120012802002212280000210720012006417c6a3602042001201241046a360200200241e0056a41026a20162d00003a0000200241dc056a41026a20142d00003a0000200241d8056a41026a20152d00003a0000200220022f01f4053b01e405200220022f01f0053b01e005200220022f01ec053b01dc05200220022f01e8053b01d805200220132d00003a00e60520024198076a200110b90320022d0098074101460d0120024188056a41386a2201200241d1076a29000037030020024188056a41306a2206200241c9076a29000037030020024188056a41286a2212200241c1076a29000037030020024188056a41206a2213200241b9076a29000037030020024188056a41186a2214200241b1076a29000037030020024188056a41106a2215200241a9076a29000037030020024188056a41086a2216200241a1076a290000370300200220022900990737038805200220022f01e4053b01d405200220022d00e6053a00d605200241d0056a41026a2217200241e0056a41026a2d00003a0000200220022f01e0053b01d005200241cc056a41026a2218200241dc056a41026a2d00003a0000200220022f01dc053b01cc05200241c8056a41026a2219200241d8056a41026a2d00003a0000200220022f01d8053b01c805200220022d00d6053a009607200220022f01d4053b01940720024190076a41026a221a20172d00003a0000200220022f01d0053b0190072002418c076a41026a221720182d00003a0000200220022f01cc053b018c0720024188076a41026a221820192d00003a0000200220022f01c8053b018807200241c8066a41386a22192001290300370300200241c8066a41306a22012006290300370300200241c8066a41286a22062012290300370300200241c8066a41206a22122013290300370300200241c8066a41186a22132014290300370300200241c8066a41106a22142015290300370300200241c8066a41086a2215201629030037030020022002290388053703c806200220022d0096073a00f603200220022f0194073b01f403200241f0036a41026a2216201a2d00003a0000200220022f0190073b01f003200241ec036a41026a221a20172d00003a0000200220022f018c073b01ec03200241e8036a41026a221720182d00003a0000200220022f0188073b01e803200241a8036a41386a22182019290300370300200241a8036a41306a22192001290300370300200241a8036a41286a22012006290300370300200241a8036a41206a22062012290300370300200241a8036a41186a22122013290300370300200241a8036a41106a22132014290300370300200241a8036a41086a22142015290300370300200220022903c8063703a803200241c8046a41186a2215200241e8046a41186a290300370300200241c8046a41106a221b200241e8046a41106a290300370300200241c8046a41086a221c200241e8046a41086a290300370300200220022903e8043703c804200220022d00c6063a00c604200220022f01c4063b01c404200241c0046a41026a221d200241c0066a41026a2d00003a0000200220022f01c0063b01c004200241bc046a41026a221e200241bc066a41026a2d00003a0000200220022f01bc063b01bc04200241b8046a41026a221f200241b8066a41026a2d00003a0000200220022f01b8063b01b804200241f8036a41386a2220200241f8056a41386a290300370300200241f8036a41306a2221200241f8056a41306a290300370300200241f8036a41286a2222200241f8056a41286a290300370300200241f8036a41206a2223200241f8056a41206a290300370300200241f8036a41186a2224200241f8056a41186a290300370300200241f8036a41106a2225200241f8056a41106a290300370300200241f8036a41086a2226200241f8056a41086a290300370300200220022903f8053703f80320024188036a41186a2227201529030037030020024188036a41106a2215201b29030037030020024188036a41086a221b201c290300370300200220022903c80437038803200220022d00c6043a008603200220022f01c4043b01840320024180036a41026a201d2d00003a0000200220022f01c0043b018003200241fc026a41026a201e2d00003a0000200220022f01bc043b01fc02200241f8026a41026a201f2d00003a0000200220022f01b8043b01f802200241b8026a41386a2020290300370300200241b8026a41306a2021290300370300200241b8026a41286a2022290300370300200241b8026a41206a2023290300370300200241b8026a41186a2024290300370300200241b8026a41106a2025290300370300200241b8026a41086a2026290300370300200220022903f8033703b802200220022d00f6033a00b602200220022f01f4033b01b402200241b0026a41026a20162d00003a0000200220022f01f0033b01b002200241ac026a41026a201a2d00003a0000200220022f01ec033b01ac02200241a8026a41026a20172d00003a0000200220022f01e8033b01a802200241e8016a41386a2018290300370300200241e8016a41306a2019290300370300200241e8016a41286a2001290300370300200241e8016a41206a2006290300370300200241e8016a41186a2012290300370300200241e8016a41106a2013290300370300200241e8016a41086a2014290300370300200220022903a8033703e801200241c8016a41186a2027290300370300200241c8016a41106a2015290300370300200241c8016a41086a201b29030037030020022002290388033703c801420121280b200241c0016a41026a220120024180036a41026a2d00003a0000200241bc016a41026a2206200241fc026a41026a2d00003a0000200241b8016a41026a2212200241f8026a41026a2d00003a0000200241f8006a41386a2213200241b8026a41386a290300370300200241f8006a41306a2214200241b8026a41306a290300370300200241f8006a41286a2215200241b8026a41286a290300370300200241f8006a41206a2216200241b8026a41206a290300370300200241f8006a41186a2217200241b8026a41186a290300370300200241f8006a41106a2218200241b8026a41106a290300370300200241f8006a41086a2219200241b8026a41086a290300370300200220022d0086033a00c601200220022f0184033b01c401200220022f0180033b01c001200220022f01fc023b01bc01200220022f01f8023b01b801200220022903b802370378200241f0006a41026a221a200241b0026a41026a2d00003a0000200241ec006a41026a221b200241ac026a41026a2d00003a0000200241e8006a41026a221c200241a8026a41026a2d00003a0000200241286a41386a221d200241e8016a41386a290300370300200241286a41306a221e200241e8016a41306a290300370300200241286a41286a221f200241e8016a41286a290300370300200241286a41206a2220200241e8016a41206a290300370300200241286a41186a2221200241e8016a41186a290300370300200241286a41106a2222200241e8016a41106a290300370300200241286a41086a2223200241e8016a41086a290300370300200220022d00b6023a0076200220022f01b4023b0174200220022f01b0023b0170200220022f01ac023b016c200220022f01a8023b0168200220022903e801370328200241086a41186a2224200241c8016a41186a290300370300200241086a41106a2225200241c8016a41106a290300370300200241086a41086a2226200241c8016a41086a290300370300200220022903c801370308200041186a20113602002000200837031020002028370308200020053703002000200c36001f200020022f01c4013b011c2000411e6a20022d00c6013a00002000200b360026200020022f01c0013b0023200041256a20012d00003a0000200020022f01bc013b002a2000412c6a20062d00003a00002000200d36002d200041336a20122d00003a0000200020022f01b8013b0031200041386a200e3600002000200f360034200041f4006a2013290300370200200041ec006a2014290300370200200041e4006a2015290300370200200041dc006a2016290300370200200041d4006a2017290300370200200041cc006a2018290300370200200041c4006a20192903003702002000200229037837023c2000200736027c20004182016a20022d00763a000020004180016a20022f01743b010020004183016a200a36000020004189016a201a2d00003a0000200020022f01703b0087012000200436008a0120004190016a201b2d00003a0000200020022f016c3b008e01200020093600910120004197016a201c2d00003a0000200020022f01683b0095012000201036009c0120004198016a2003360000200041d8016a201d290300370200200041d0016a201e290300370200200041c8016a201f290300370200200041c0016a2020290300370200200041b8016a2021290300370200200041b0016a2022290300370200200041a8016a2023290300370200200041a0016a2002290328370200200041f8016a2024290300370300200041f0016a2025290300370300200041e8016a2026290300370300200041e0016a20022903083703000c020b200042023703080c010b200042023703080b20024190086a24000bdf0b030f7f017e027f230041d0016b220224004100210320024100360240200241c0006a4104722104200128020421050240024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420036a20073a00002002200341016a220636024020062103200641c000470d000b200220022f01443b01cc01200220022d00463a00ce0120022800472101200241c8016a41026a2205200241cd006a2d00003a00002002200241c0006a410b6a2f00003b01c801200241ce006a2801002103200241c4016a41026a2206200241d4006a2d00003a00002002200241c0006a41126a2f01003b01c401200241d5006a2800002107200241c0016a41026a2204200241db006a2d00003a00002002200241c0006a41196a2f00003b01c001200241dc006a2802002108200241bc016a41026a2209200241e2006a2d00003a00002002200241c0006a41206a2f01003b01bc01200241e3006a280000210a200241b8016a41026a220b200241e9006a2d00003a00002002200241c0006a41276a2f00003b01b801200241ea006a280100210c200241b4016a41026a220d200241f0006a2d00003a00002002200241c0006a412e6a2f01003b01b401200241f1006a280000210e2002200241fc006a2900003700a7012002200241c0006a41356a2900003703a001200220022d00ce013a003e200220022f01cc013b013c2002419c016a41026a220f20052d00003a0000200220022f01c8013b019c0120024198016a41026a220520062d00003a0000200220022f01c4013b01980120024194016a41026a220620042d00003a0000200220022f01c0013b01940120024190016a41026a220420092d00003a0000200220022f01bc013b0190012002418c016a41026a2209200b2d00003a0000200220022f01b8013b018c0120024188016a41026a220b200d2d00003a0000200220022f01b4013b01880120024184016a41026a220d20022d00a2013a0000200220022f01a0013b01840120022800a301211020022900a7012111200241386a41026a2212200f2d00003a0000200220022f019c013b0138200241346a41026a220f20052d00003a0000200220022f0198013b0134200241306a41026a220520062d00003a0000200220022f0194013b01302002412c6a41026a220620042d00003a0000200220022f0190013b012c200241286a41026a220420092d00003a0000200220022f018c013b0128200241246a41026a2209200b2d00003a0000200220022f0188013b0124200241206a41026a220b200d2d00003a0000200220022f0184013b01202002411c6a41026a220d20022d003e3a0000200220022f013c3b011c200241186a41026a221320122d00003a0000200220022f01383b0118200241146a41026a2212200f2d00003a0000200220022f01343b0114200241106a41026a220f20052d00003a0000200220022f01303b01102002410c6a41026a220520062d00003a0000200220022f012c3b010c200241086a41026a220620042d00003a0000200220022f01283b0108200241046a41026a220420092d00003a0000200220022f01243b0104200241026a2209200b2d00003a0000200220022f01203b0100200041046a2001360000200041036a200d2d00003a0000200020022f011c3b00012000410b6a2003360000200041086a20022f01183b00002000410a6a20132d00003a0000200041126a20073600002000410f6a20022f01143b0000200041116a20122d00003a0000200041166a20022f01103b0000200041186a200f2d00003a0000200041196a20083600002000411f6a20052d00003a00002000411d6a20022f010c3b0000200041206a200a360000200041266a20062d00003a0000200041246a20022f01083b0000200041276a200c3600002000412d6a20042d00003a00002000412b6a20022f01043b00002000412e6a200e360000200041346a20092d00003a0000200041326a20022f01003b0000200041396a2011370000200041356a2010360000410021010c010b410121010b200020013a0000200241d0016a24000b9f3907037f017e157f027e0c7f017e157f230041f00e6b22022400200241206a200110bb01024002400240024002400240024020022802200d0020022802242203200128020441d0006e2204200420034b1bad42d0007e2205422088a70d032005a72204417f4c0d030240024020040d00410421060c010b2004102f2206450d030b200441d0006e21070240024020030d00410021030c010b2002419d0c6a2108200241850c6a21094100210a4100210b4100210c02400340200241e80b6a200110a7050240024020022802e80b220d450d0020022902ec0b21050240200128020422044104490d002001280200220e280000210f20012004417c6a3602042001200e41046a360200200241e80b6a200110b90320022d00e80b4101460d00200241a8026a41086a2204200941086a28000036020020024198026a41086a220e200841086a280000360200200220092900003703a802200220082900003703980220022800810c211020022800fd0b211120022800f90b211220022800f50b211320022800f10b211420022800ed0b211520022800e90b211620022800910c211720022800950c211820022800990c211920024188026a41086a20042802002204360200200241f8016a41086a200e280200220e360200200241e8016a41086a221a2004360200200241d8016a41086a2204200e360200200220022903a802221b370388022002200229039802221c3703f8012002201b3703e8012002201c3703d801200241e80b6a41086a201a280200360200200220022903e8013703e80b200241c0096a41086a2004280200360200200220022903d8013703c009200f211d2005211b0c020b2005428080808010540d00200d10310b4100210d0b200241c8016a41086a2204200241e80b6a41086a280200360200200241b8016a41086a220e200241c0096a41086a280200360200200220022903e80b3703c801200220022903c0093703b801200d450d01200241a8016a41086a220f200428020036020020024198016a41086a221a200e280200360200200220022903c8013703a801200220022903b8013703980102400240200c2007470d00200a200c41016a2204200a20044b1b22044104200441044b1bad42d0007e2205422088a74541027421042005a7210e02400240200c0d00200241003602e80b0c010b200241043602f00b2002200b3602ec0b200220063602e80b0b200241c0096a200e2004200241e80b6a104e20022802c809210420022802c0094101460d0120022802c4092106200441d0006e21070b2006200b6a2204200d360200200441286a2010360200200441246a2011360200200441206a20123602002004411c6a2013360200200441186a2014360200200441146a2015360200200441106a20163602002004410c6a201d360200200441046a201b3702002004412c6a20022903a801370200200441346a200f280200360200200441c0006a20193602002004413c6a2018360200200441386a2017360200200441c4006a200229039801370200200441cc006a201a280200360200200a41026a210a200b41d0006a210b2003200c41016a220c460d030c010b0b20040d040c050b0240200c450d00200621040340200428020021010240200441086a220d280200220c450d00200110310b20042001360200200d200c360200200441d0006a2104200b41b07f6a220b0d000b0b2007450d01200741d0006c450d01200610310c010b2006450d00200241186a200110bb012002280218450d010c040b200041003602000c050b200228021c2218200128020441f4026e2204200420184b1bad42f4027e2205422088a70d012005a72204417f4c0d010240024020040d004104210f0c010b2004102f220f450d010b200441f4026e21190240024020180d00410021180c010b2002419d0c6a2111200241850c6a2112200241940c6a211e200241e80b6a410472211f4100210a4100210d02400340200241e80b6a200110e7010240024020022802e80b4101460d00200241c0096a201f41a40210bf091a200241e80b6a200110b90520022802e80b220c450d0020024188076a41086a2220201e41086a2802003602002002201e2902003703880720022802900c2121200228028c0c212220022802880c212320022802840c212420022802800c212520022802fc0b212620022802f80b212720022802f40b212820022902ec0b212920024198076a200241c0096a41a40210bf091a200241106a200110bb01024020022802100d002002280214222a200128020441c1006e22042004202a4b1bad42c1007e2205422088a70d072005a72204417f4c0d070240024020040d004101211a0c010b2004102f221a450d070b200441c1006e210b024002400240202a0d004100212a0c010b4100210e02400240034020012802042204450d02200128020022172d0000211020012004417f6a3602042001201741016a3602000240024002402010417f6a0e020001050b200241e80b6a200110b90320022d00e80b4101460d04200241a8026a41086a2204201241086a28000036020020024198026a41086a222b201141086a280000360200200220122900003703a802200220112900003703980220022800810c211720022800fd0b211020022800f90b211320022800f50b211420022800f10b211520022800ed0b211620022800e90b211d20022800910c210820022800950c210920022800990c212c200241e8016a41086a20042802002204360200200241d8016a41086a202b280200222b360200200241c0096a41086a2004360200200241e00e6a41086a202b360200200220022903a80222053703e8012002200229039802221b3703d801200220053703c0092002201b3703e00e4100212b0c010b200241e80b6a200110b90320022d00e80b4101460d03200241a8026a41086a2204201241086a28000036020020024198026a41086a222b201141086a280000360200200220122900003703a802200220112900003703980220022800810c211720022800fd0b211020022800f90b211320022800f50b211420022800f10b211520022800ed0b211620022800e90b211d20022800910c210820022800950c210920022800990c212c20024188026a41086a20042802002204360200200241f8016a41086a202b280200222b360200200241c0096a41086a2004360200200241e00e6a41086a202b360200200220022903a8022205370388022002200229039802221b3703f801200220053703c0092002201b3703e00e4101212b0b200241d00e6a41086a200241c0096a41086a2802002204360200200241b00e6a41086a200241e00e6a41086a280200222d360200200241a00e6a41086a222e2004360200200241900e6a41086a222f202d360200200220022903c00922053703d00e200220022903e00e221b3703b00e200220053703a00e2002201b3703900e02400240200e200b460d00200b212d200e21040c010b200b41016a2204200b490d0d200b410174222d2004202d20044b1b22044104200441044b1bad42c1007e2205a721042005422088a745212d02400240200b0d00200241003602e80b0c010b200241013602f00b2002201a3602e80b2002200b41c1006c3602ec0b0b200241c0096a2004202d200241e80b6a104e20022802c809212d20022802c0094101460d0220022802c409211a200b2104202d41c1006e222d210b0b201a200441c1006c6a2204201736001920042010360015200420133600112004201436000d20042015360009200420163600052004201d3600012004202b3a0000200420022903a00e37001d200441256a202e2802003600002004202c3600312004200936002d20042008360029200420022903900e3700352004413d6a202f280200360000202a200e41016a220e470d000b202d210b0c020b202d450d0a0c090b200b450d02200b41c1006c0d010c020b201a450d01200241e80b6a200110a705024020022802e80b450d00200241e00e6a41086a200241e80b6a41086a280200360200200220022903e80b3703e00e200241e80b6a20024198076a41a40210bf091a200241c0096a41086a202028020036020020022002290388073703c009202a2130200b2131201a2132202121332022213420232135202421362025213720262138202721392028213a2029211c0c040b200b450d01200b41c1006c450d010b201a10310b2029a7210e02402029422088a72204450d002004410c6c210b200c210403400240200441046a280200450d00200428020010310b2004410c6a2104200b41746a220b0d000b0b0240200e450d00200e410c6c450d00200c10310b02402026450d002026410474210b202841086a2104034002402004280200450d002004417c6a28020010310b200441106a2104200b41706a220b0d000b0b0240202741ffffffff0071450d00202810310b02402025450d002024450d00202510310b2021450d00202210310b4100210c0b200241e0046a200241e80b6a41a40210bf091a200241c8016a41086a2204200241c0096a41086a280200360200200241b8016a41086a220b200241e00e6a41086a280200360200200220022903c0093703c801200220022903e00e3703b801200c450d01200241b8026a200241e0046a41a40210bf091a200241a8016a41086a220e200428020036020020024198016a41086a221a200b280200360200200220022903c8013703a801200220022903b8013703980102400240200d2019470d00200d4101742204200d41016a220b2004200b4b1b22044104200441044b1bad42f4027e2205422088a74541027421042005a7210b02400240200d0d00200241003602e80b0c010b200241043602f00b2002200f3602e80b2002200d41f4026c3602ec0b0b200241c0096a200b2004200241e80b6a104e20022802c809210420022802c0094101460d0120022802c409210f200441f4026e21190b200f200d41f4026c6a200241b8026a41a40210bf09220441cc026a2033360200200441c8026a2034360200200441c4026a2035360200200441c0026a2036360200200441bc026a2037360200200441b8026a2038360200200441b4026a2039360200200441b0026a203a360200200441a8026a201c3702002004200c3602a402200441d0026a20022903a801370200200441d8026a200e280200360200200441e4026a2030360200200441e0026a2031360200200441dc026a2032360200200441e8026a200229039801370200200441f0026a201a280200360200200a41f4026a210a200d41016a2204210d20042018460d030c010b0b2004450d030c020b0240200d450d00200f210403402004109b02200441f4026a2104200a418c7d6a220a0d000b0b2019450d03201941f4026c450d03200f10310c030b200f450d02200241086a200110bb0102400240024020022802080d00200228020c2215200128020441306e2204200420154b1bad42307e2205422088a70d042005a72204417f4c0d040240024020040d00410421120c010b2004102f2212450d040b200441306e210d0240024020150d00410021150c010b200241e80b6a410472210e200241e80b6a41356a2132200241e80b6a411d6a2133200241e80b6a41126a212d200241f30b6a212e200241e80b6a41196a223041036a2131410021174100211002400340200d211a200241003602e80b2010221141016a21102001280204210c417f210b41002104024002400340200c2004460d012001280200220d2d0000210a2001200c200b6a3602042001200d41016a360200200e20046a200a3a00002002200441016a220d3602e80b200b417f6a210b200d2104200d4120470d000b200241e0046a41026a2213202e41026a2d00003a0000200241b8026a41026a2204202d41026a2d00003a00002002200e2f01003b0198072002200e41026a2d00003a009a072002202e2f00003b01e0042002202d2f00003b01b802200220302800003602c009200220312800003600c30920022800ef0b213420022801f60b213520022800fd0b213620022802880c2137200220022d009a073a00a20e200220022f0198073b01a00e200241e00e6a41026a220b20132d00003a0000200220022f01e0043b01e00e200241d00e6a41026a221420042d00003a0000200220022f01b8023b01d00e200241b00e6a41026a220a20022d00c2093a0000200220022f01c0093b01b00e20022800c3092138200241900e6a41026a2204200b2d00003a0000200220022f01e00e3b01900e20024188076a41026a220b20142d00003a0000200220022f01d00e3b018807200241a8026a41026a2214200a2d00003a0000200220022f01b00e3b01a80220024188026a41026a223920022d00a20e3a0000200220022f01a00e3b018802200241f8016a41026a223a20042d00003a0000200220022f01900e3b01f801200241e8016a41026a222a200b2d00003a0000200220022f0188073b01e801200241d8016a41026a222620142d00003a0000200220022f01a8023b01d801200c200d6b22044104490d002001280200220b280000213b20012004417c6a3602042001200b41046a3602002002200110bb0120022802000d002002280204220c200128020441c8006e22042004200c4b1bad42c8007e2205422088a70d092005a72204417f4c0d090240024020040d004104210b0c010b2004102f220b450d090b200441c8006ead210502400240200c450d000340024002402001280204220d450d00200128020022042d000021142001200d417f6a222f3602042001200441016a360200024002400240024020140e020001040b202f450d0320042d0001212f2001200d417e6a220d3602042001200441026a22043602004100211402400240202f0e0404030001050b410221140c030b410321140c020b202f450d0220042d000121142001200d417e6a220d3602042001200441026a220436020020140d02410421140c010b410121140b200d4104490d002004280000212f2001200d417c6a3602042001200441046a360200200241e80b6a200110b90320022d00e80b4101470d010b2005a72204450d04200441c8006c450d04200b10310c040b200241a8026a41086a2204203341086a28000036020020024198026a41086a220d203241086a280000360200200220332900003703a802200220322900003703980220022800810c212520022800fd0b212820022800f90b211e20022800f50b212120022800f10b212720022800ed0b211f20022800e90b212420022800910c212220022800950c212020022800990c2123200241c0096a41086a2004280200220436020020024198076a41086a223c200d280200360200200241a00e6a41026a220d200a2d00003a0000200241e0046a41086a223d2004360200200220022903a802221c3703c009200220022903980237039807200220022f00b00e3b01a00e2002201c3703e004200241b8026a41086a2204203c28020036020020022002290398073703b8022002200d2d00003a00920e200220022f01a00e3b01900e200241e00e6a41086a220d203d280200360200200220022903e0043703e00e200241d00e6a41086a223c2004280200360200200220022903b8023703d00e200220022d00920e3a008a07200220022f01900e3b01880702402005422088221ca722042005a7470d00200441016a223d2004490d0d2004410174223e203d203d203e491b223d4104203d41044b1bad42c8007e221c422088a745410274213d201ca7213e0240024020040d00200241003602e80b0c010b200241043602f00b2002200b3602e80b2002200441c8006c3602ec0b0b200241c0096a203e203d200241e80b6a104e20022802c809213d20022802c0094101460d0320022802c409210b2005422088221ca72104203d41c8006ead21050b200b200441c8006c6a22042024360005200420143a00042004202f3602002004411d6a2025360000200441196a2028360000200441156a201e360000200441116a20213600002004410d6a2027360000200441096a201f360000200441296a200d28020036000020022903e00e2129200441356a2023360000200441316a20203600002004412d6a2022360000200441216a2029370000200441396a20022903d00e370000200441c1006a203c280200360000200441c5006a20022f0188073b0000200441c7006a20022d008a073a0000201c422086200542ffffffff0f83844280808080107c2105200c417f6a220c0d000b0b200b450d01200241c0096a41026a203a2d00003a000020024198076a41026a202a2d00003a0000201320262d00003a0000200220022f0188023b01e80b200220022f01f8013b01c009200220022f01e8013b019807200220022f01d8013b01e004200220392d00003a00ea0b203b21162005211b2034211d20352108203621092038212c2037212b0c020b203d450d090c080b4100210b0b200241b8016a41026a2204200241c0096a41026a2d00003a0000200241a8016a41026a220d20024198076a41026a2d00003a000020024198016a41026a220c200241e0046a41026a2d00003a0000200220022d00ea0b3a00ca01200220022f01e80b3b01c801200220022f01c0093b01b801200220022f0198073b01a801200220022f01e0043b019801200b450d01200241c80e6a41026a220a20042d00003a0000200241c40e6a41026a2213200d2d00003a0000200241c00e6a41026a2214200c2d00003a0000200220022d00ca013a00ce0e200220022f01c8013b01cc0e200220022f01b8013b01c80e200220022f01a8013b01c40e200220022f0198013b01c00e0240024002402011201a460d00201a210d2011211a0c010b201a41016a2204201a490d09201a410174220d2004200d20044b1b22044104200441044b1bad42307e2205422088a74541027421042005a7210d02400240201a0d00200241003602e80b0c010b200241043602f00b200220123602e80b2002201a41306c3602ec0b0b200241c0096a200d2004200241e80b6a104e20022802c809210420022802c0094101460d0120022802c4092112200441306e210d0b2012201a41306c6a2204200b36020420042016360200200441126a20022d00ce0e3a0000200441106a20022f01cc0e3b0100200441196a200a2d00003a0000200441176a20022f01c80e3b0000200441086a201b370200200441136a201d3600002004411e6a20022f01c40e3b0000200441206a20132d00003a00002004411a6a2008360000200441216a2009360000200441276a20142d00003a0000200441256a20022f01c00e3b00002004412c6a202b360000200441286a202c360000201741306a211720102015460d030c010b0b2004450d060c050b02402011450d00201241086a21040340024020042802002201450d00200141c8006c450d002004417c6a28020010310b200441306a2104201741506a22170d000b0b201a450d01201a41306c450d01201210310c010b2012450d00200241e80b6a200110b70320022802ec0b450d01200241286a200241e80b6a41f00010bf091a200041206a20153602002000411c6a200d360200200041186a2012360200200041146a2018360200200041106a20193602002000410c6a200f360200200041086a20033602002000200736020420002006360200200041246a200241286a41f00010bf091a0c070b200041003602000c010b410021042000410036020002402015450d00201541306c210c03400240201220046a220b41086a2802002201450d00200141c8006c450d00200b41046a28020010310b200c200441306a2204470d000b0b200d450d00200d41306c450d00201210310b02402018450d00201841f4026c2101200f210403402004109b02200441f4026a21042001418c7d6a22010d000b0b2019450d03201941f4026c450d03200f10310c030b1039000b103b000b200041003602000b02402003450d00200341d0006c210a410021040340200620046a2201280200210b0240200141086a220d280200220c450d00200b10310b2001200b360200200d200c360200200a200441d0006a2204470d000b0b2007450d00200741d0006c450d00200610310b200241f00e6a24000bf50402057f047e23004180016b220224000240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e020203010b200041043a00000c030b200041043a00000c020b200041033a00000c010b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200024002400240024020050e03000102040b200241d8006a200110b50120022d00584101460d03200241c8006a200241f1006a290000370300200241c0006a200241e9006a290000370300200241386a200241e1006a29000037030020022002290059370330410021010c020b200241d8006a200110b5014101210120022d00584101460d02200241c8006a200241f1006a290000370300200241c0006a200241e9006a290000370300200241386a200241e1006a290000370300200220022900593703300c010b200241d8006a200110cf0120022d00584101460d01200241d0006a200241f9006a2d00003a0000200241c8006a200241f1006a290000370300200241c0006a200241e9006a290000370300200241386a200241e1006a29000037030020022002290059370330410221010b200241086a41206a200241306a41206a2d000022033a0000200241086a41186a200241306a41186a2903002207370300200241086a41106a200241306a41106a2903002208370300200241086a41086a200241306a41086a290300220937030020022002290330220a370308200020013a00002000200a370001200041096a2009370000200041116a2008370000200041196a2007370000200041216a20033a00000c010b200041043a00000b20024180016a24000bcf0405047f017e027f017e027f230041206b22022400200241106a200110bb0102400240024002400240024002400240024002400240024020022802100d002001280204220320022802142204490d002004417f4c0d090240024020040d00410121050c010b200410352205450d0b200128020421030b024020032004490d0020052001280200200410bf092103200128020422052004490d0c2001200520046b3602042001200128020020046a3602002003450d012004ad22064220862006842206a72104200241086a200110bb0120022802080d0420012802042207200228020c2205490d042005417f4c0d0a0240024020050d00410121080c010b200510352208450d0c200128020421070b20072005490d0320082001280200200510bf0921072001280204220820054f0d0220052008419cb4c0001061000b200510310b200041023a00180c070b2001200820056b3602042001200128020020056a3602002007450d012005ad22094220862009842209a7210520012802042208450d042001280200220a2d0000210b20012008417f6a3602042001200a41016a36020041002101200b0e020302040b200810310b200041023a00180c030b410121010b200020013a001820002009422088a7360214200020053602102000200736020c20002006422088a73602082000200436020420002003360200200020022f001d3b00192000411b6a2002411f6a2d00003a00000c020b200041023a00182005450d00200710310b2004450d00200310310b200241206a24000f0b103b000b1039000b20042005419cb4c0001061000bda22020b7f047e230041d0106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e06010203040506070b200041073a00000c100b20024190096a200110e8012002280290092205450d08200228029409210420012802042206450d0620024198096a2802002107200128020022032d0000210820012006417f6a22063602042001200341016a360200410021030240024020080e020100080b20024190096a200110b50120022d0090094101460d07200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00120012802042106410121030b200241e0006a41186a2208200241d0016a41186a290300370300200241e0006a41106a2209200241d0016a41106a290300370300200241e0006a41086a220a200241d0016a41086a290300370300200220022903d001370360024020064104490d002001280200220b280000210c20012006417c6a3602042001200b41046a360200200241c0006a41086a200a290300220d370300200241c0006a41106a2009290300220e370300200241c0006a41186a2008290300220f370300200220022903602210370340200020033a0001200041013a0000200041026a20103700002000410a6a200d370000200041126a200e3700002000411a6a200f370000200041306a200c3602002000412c6a2007360100200041286a2004360100200041246a2005360100200041226a20022f01cc013b01000c100b200041073a00000c070b20024190096a200110b7012002280290092105200241d0016a20024190096a41047241bc0710bf091a0240024020054123460d0020024190096a200241d0016a41bc0710bf091a41c007102f22040d010c110b200041073a00000c0f0b20042005360200200441046a20024190096a41bc0710bf091a2002200110bb01024020022802000d0020022802042101200041023a0000200020022f00403b0001200041086a2001360200200041046a20043602002000410c6a2002290260370200200041036a200241c0006a41026a2d00003a0000200041146a200241e0006a41086a2902003702002000411c6a200241f0006a290200370200200041246a200241f8006a2902003702002000412c6a20024180016a290200370200200041346a20024188016a2802003602000c0f0b200041073a0000200410fa06200410310c0e0b200241106a200110bb0120022802100d082002280214210620024190096a200110b7012002280290092105200241d0016a20024190096a41047241bc0710bf091a20054123460d0720024190096a200241d0016a41bc0710bf091a41c007102f2204450d0e20042005360200200441046a20024190096a41bc0710bf091a200241086a200110bb01024020022802080d00200228020c2101200041033a0000200020022f00403b00012000410c6a2001360200200041086a2004360200200041046a2006360200200041106a2002290360370300200041036a200241c2006a2d00003a0000200041186a200241e0006a41086a290300370300200041206a200241e0006a41106a290300370300200041286a200241e0006a41186a290300370300200041306a200241e0006a41206a2903003703000c0e0b200041073a0000200410fa06200410310c0d0b4100210520024100360290092003417e6a210320024190096a4104722109034020062005460d09200420056a220841016a2d00002107200120033602042001200841026a360200200920056a20073a00002002200541016a2208360290092003417f6a21032008210520084120470d000b200241cc016a41026a22052002419d096a2d00003a0000200241c8016a41026a2204200241a4096a2d00003a0000200220022f0194093b0140200220022d0096093a004220022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a28010021082002280097092107200241a5096a28000021092002200241a9096a2800003602602002200241ac096a280000360063200241b0096a280200210a200220022d00423a00ba01200220022f01403b01b801200241c4016a41026a220620052d00003a0000200220022f01cc013b01c401200241c0016a41026a220520042d00003a0000200220022f01c8013b01c001200241bc016a41026a220420022d00623a0000200220022f01603b01bc012002280063210b200241b4016a41026a220320062d00003a0000200220022f01c4013b01b401200241b0016a41026a220620052d00003a0000200220022f01c0013b01b001200241ac016a41026a220520042d00003a0000200220022f01bc013b01ac01200241a8016a41026a20022d00ba013a0000200220022f01b8013b01a801200241a4016a41026a20032d00003a0000200220022f01b4013b01a401200241a0016a41026a20062d00003a0000200220022f01b0013b01a0012002419c016a41026a20052d00003a0000200220022f01ac013b019c01200241186a200110bb01024002400240024020022802180d0020012802042205450d03200228021c2103200128020022042d0000210620012005417f6a3602042001200441016a3602004100210120060e020201030b200041073a00000c0f0b410121010b20024198016a41026a2205200241a8016a41026a2d00003a000020024194016a41026a2204200241a4016a41026a2d00003a000020024190016a41026a2206200241a0016a41026a2d00003a00002002418c016a41026a220c2002419c016a41026a2d00003a0000200220022f01a8013b019801200220022f01a4013b019401200220022f01a0013b019001200220022f019c013b018c01200041043a0000200041046a2007360000200020022f0198013b0001200041036a20052d00003a00002000410b6a2008360000200041086a20022f0194013b00002000410a6a20042d00003a0000200041126a20093600002000410f6a20022f0190013b0000200041116a20062d00003a0000200041166a20022f018c013b0000200041186a200c2d00003a0000200041246a2003360200200041216a20013a00002000411d6a200a360000200041196a200b360000200041306a200241d0016a41086a290300370300200041286a20022903d0013703000c0d0b200041073a00000c0c0b4100210520024100360290092003417e6a210320024190096a4104722109034020062005460d09200420056a220841016a2d00002107200120033602042001200841026a360200200920056a20073a00002002200541016a2208360290092003417f6a21032008210520084120470d000b200241c0006a41026a22052002419d096a2d00003a0000200241cc016a41026a2204200241a4096a2d00003a0000200220022f0194093b0160200220022d0096093a006220022002419b096a2f00003b01402002200241a2096a2f01003b01cc012002419e096a28010021082002280097092107200241a5096a28000021092002200241a9096a2800003602d0012002200241ac096a2800003600d301200241b0096a280200210a200220022d00623a00be01200220022f01603b01bc01200241c8016a41026a220620052d00003a0000200220022f01403b01c801200241c4016a41026a220520042d00003a0000200220022f01cc013b01c401200241c0016a41026a220420022d00d2013a0000200220022f01d0013b01c00120022800d301210b200241b8016a41026a220320062d00003a0000200220022f01c8013b01b801200241b4016a41026a220620052d00003a0000200220022f01c4013b01b401200241b0016a41026a220520042d00003a0000200220022f01c0013b01b001200241ac016a41026a20022d00be013a0000200220022f01bc013b01ac01200241a8016a41026a20032d00003a0000200220022f01b8013b01a801200241a4016a41026a20062d00003a0000200220022f01b4013b01a401200241a0016a41026a20052d00003a0000200220022f01b0013b01a001200241386a200110bb0120022802380d09200228023c2105200241286a200110bc012002290328a70d0a2002290330210d200241206a200110bb01024020022802200d00200228022421012002419c016a41026a2204200241ac016a41026a2d00003a000020024198016a41026a2206200241a8016a41026a2d00003a000020024194016a41026a2203200241a4016a41026a2d00003a000020024190016a41026a220c200241a0016a41026a2d00003a0000200220022f01ac013b019c01200220022f01a8013b019801200220022f01a4013b019401200220022f01a0013b019001200041053a0000200041046a2007360000200020022f019c013b0001200041036a20042d00003a00002000410b6a2008360000200041086a20022f0198013b00002000410a6a20062d00003a0000200041126a20093600002000410f6a20022f0194013b0000200041116a20032d00003a0000200041166a20022f0190013b0000200041186a200c2d00003a00002000411d6a200a360000200041196a200b360000200041236a2002418c016a41026a2d00003a0000200041216a20022f008c013b0000200041306a200d370300200041286a2001360200200041246a20053602000c0c0b200041073a00000c0b0b4100210520024100360290092003417e6a210320024190096a41047221090240034020062005460d01200420056a220841016a2d00002107200120033602042001200841026a360200200920056a20073a00002002200541016a2208360290092003417f6a21032008210520084120470d000b200241cc016a41026a22012002419d096a2d00003a0000200241c8016a41026a2205200241a4096a2d00003a0000200220022f0194093b0140200220022d0096093a0042200220024190096a410b6a2f00003b01cc01200220024190096a41126a2f01003b01c8012002419e096a28010021042002280097092106200241a5096a2800002103200220024190096a41196a2800003602602002200241ac096a280000360063200241b0096a2802002108200220022d00423a00ba01200220022f01403b01b801200241c4016a41026a220720012d00003a0000200220022f01cc013b01c401200241c0016a41026a220120052d00003a0000200220022f01c8013b01c001200241bc016a41026a220520022d00623a0000200220022f01603b01bc0120022800632109200241b4016a41026a220a20072d00003a0000200220022f01c4013b01b401200241b0016a41026a220720012d00003a0000200220022f01c0013b01b001200241ac016a41026a220120052d00003a0000200220022f01bc013b01ac01200241a8016a41026a220520022d00ba013a0000200220022f01b8013b01a801200241a4016a41026a220b200a2d00003a0000200220022f01b4013b01a401200241a0016a41026a220a20072d00003a0000200220022f01b0013b01a0012002419c016a41026a220720012d00003a0000200220022f01ac013b019c01200041063a0000200041046a2006360000200020022f01a8013b0001200041036a20052d00003a00002000410b6a2004360000200041086a20022f01a4013b00002000410a6a200b2d00003a0000200041126a20033600002000410f6a20022f01a0013b0000200041116a200a2d00003a0000200041166a20022f019c013b0000200041186a20072d00003a00002000411d6a2008360000200041196a2009360000200041306a200241d0016a410f6a290000370000200041296a200241d0016a41086a290000370000200041216a20022900d0013700000c0b0b200041073a00000c0a0b200041073a00000c090b200041073a00000b200441ffffff3f71450d07200510310c070b200041073a00000c060b200041073a00000c050b200041073a00000c040b200041073a00000c030b200041073a00000c020b200041073a00000c010b200041073a00000b200241d0106a24000f0b1039000bb20401057f230041a00f6b22022400024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e03010203040b200041043b01000c080b2002200110bb0102402002280200450d00200241003602200c070b200241206a2001200228020410b6012002280220450d06200241ea076a200241206a41086a280200360100200220022903203701e207200041013b0100200020022901e007370102200041086a200241e6076a2901003701000c070b024020064102490d0020042f0001210520012003417d6a3602042001200441036a360200200241e0076a200110b70120022802e0072101200241206a200241e0076a41047241bc0710bf091a0240024020014123460d00200241e0076a200241206a41bc0710bf091a41c007102f22030d011039000b200041043b01000c080b20032001360200200341046a200241e0076a41bc0710bf091a200041046a2003360200200020053b0102200041023b01000c070b200041043b01000c060b200241086a200110bb012002280208450d01200241003602200c020b200041043b01000c040b200241206a2001200228020c10b60120022802200d010b200041043b01000c020b200241ea076a200241206a41086a280200360100200220022903203701e207200041033b0100200020022901e007370102200041086a200241e6076a2901003701000c010b200041043b01000b200241a00f6a24000bb53203067f047e067f230041d0106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0a0102030405060708090b0a0b2000410b3a00000c100b20024190096a200110b50120022d0090094101460d0a200241a0016a200241a9096a29000037030020024198016a200241a1096a29000037030020024190016a20024199096a290000370300200220022900910937038801024020012802042203450d00200128020022042d0000210520012003417f6a22073602042001200441016a360200410221060240024020050e020100020b2007450d0120042d0001210520012003417e6a3602042001200441026a36020041002106024020050e020100020b410121060b20024190096a200110b7012002280290092101200241d0016a20024190096a41047241bc0710bf091a0240024020014123460d0020024190096a200241d0016a41bc0710bf091a41c007102f22030d010c130b2000410b3a00000c110b20032001360200200341046a20024190096a41bc0710bf091a200241e8006a41186a20024188016a41186a2903002208370300200241e8006a41106a20024188016a41106a2903002209370300200241e8006a41086a20024188016a41086a290300220a3703002002200229038801220b370368200041013a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041246a2003360200200041216a20063a0000200041286a2002290248370200200041306a200241c8006a41086a290200370200200041386a200241c8006a41106a290200370200200041c0006a200241c8006a41186a2902003702000c100b2000410b3a00000c0f0b20024190096a200110b50102400240024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00120012802042203450d0d200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e0202010d0b2000410b3a00000c100b410121070b024020064104490d002004280001210520012003417b6a3602042001200441056a36020020024188016a41086a200241d0016a41086a290300220837030020024188016a41106a200241d0016a41106a290300220937030020024188016a41186a200241d0016a41186a290300220a370300200220022903d001220b37038801200041023a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041246a2005360200200041216a20073a0000200041286a2002290268370200200041306a200241e8006a41086a290200370200200041386a200241e8006a41106a290200370200200041c0006a200241e8006a41186a2902003702000c0f0b2000410b3a00000c0e0b20024190096a200110b50102400240024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00120012802042203450d0d200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e0202010d0b2000410b3a00000c0f0b410121070b024020064104490d002004280001210520012003417b6a3602042001200441056a36020020024188016a41086a200241d0016a41086a290300220837030020024188016a41106a200241d0016a41106a290300220937030020024188016a41186a200241d0016a41186a290300220a370300200220022903d001220b37038801200041033a00002000200b370001200041096a2008370000200041116a2009370000200041196a200a370000200041246a2005360200200041216a20073a0000200041286a2002290268370200200041306a200241e8006a41086a290200370200200041386a200241e8006a41106a290200370200200041c0006a200241e8006a41186a2902003702000c0e0b2000410b3a00000c0d0b200041043a00000c0c0b0240024002402006450d0020042d0001210520012003417e6a22063602042001200441026a360200410021070240024020050e020100020b410121070b20064104490d012004280002210620012003417a6a22053602042001200441066a36020020054102490d0220042f000621052001200341786a3602042001200441086a360200200041046a2006360200200041026a20053b0100200020073a0001200041053a0000200041086a200229029009370200200041106a20024190096a41086a290200370200200041186a20024190096a41106a290200370200200041206a20024190096a41186a290200370200200041286a20024190096a41206a290200370200200041306a20024190096a41286a290200370200200041386a20024190096a41306a290200370200200041c0006a20024190096a41386a2902003702000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b20024190096a200110b501024002400240024002400240024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00120012802042203450d03200128020022042d0000210520012003417f6a22063602042001200441016a3602004100210720050e020201030b2000410b3a00000c100b410121070b20064102490d0120042f0001210520012003417d6a3602042001200441036a360200200241106a200110bb0120022802100d0220022802142103200241086a200110bb0120022802080d03200228020c210120024188016a41186a200241d0016a41186a290300220837030020024188016a41106a200241d0016a41106a290300220937030020024188016a41086a200241d0016a41086a290300220a370300200220022903d001220b37038801200041063a00002000200b370001200041096a200a370000200041116a2009370000200041196a2008370000200041286a2001360200200041246a2003360200200041226a20053b0100200041216a20073a00002000412c6a2002290268370200200041346a200241e8006a41086a2902003702002000413c6a200241e8006a41106a290200370200200041c4006a200241e8006a41186a2802003602000c0e0b2000410b3a00000c0d0b2000410b3a00000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b20024190096a200110b501024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00141002104200241003602900920024190096a410472210720012802042103024003402003450d01200128020022052d0000210620012003417f6a22033602042001200541016a360200200720046a20063a00002002200441016a2205360290092005210420054120470d000b200241cc016a41026a22012002419d096a2d00003a0000200241c8016a41026a2203200241a4096a2d00003a0000200220022f0194093b0128200220022d0096093a002a20022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a28010021042002280097092105200241a5096a2800002106200220024190096a41196a2800003602682002200241ac096a28000036006b200241b0096a2802002107200220022d002a3a00ba01200220022f01283b01b801200241c4016a41026a220c20012d00003a0000200220022f01cc013b01c401200241c0016a41026a220120032d00003a0000200220022f01c8013b01c001200241bc016a41026a220320022d006a3a0000200220022f01683b01bc01200228006b210d200241b4016a41026a220e200c2d00003a0000200220022f01c4013b01b401200241b0016a41026a220c20012d00003a0000200220022f01c0013b01b001200241ac016a41026a220120032d00003a0000200220022f01bc013b01ac01200241246a41026a220320022d00ba013a0000200220022f01b8013b0124200241206a41026a220f200e2d00003a0000200220022f01b4013b01202002411c6a41026a220e200c2d00003a0000200220022f01b0013b011c200241186a41026a220c20012d00003a0000200220022f01ac013b011820024188016a41186a2201200241d0016a41186a29030037030020024188016a41106a2210200241d0016a41106a29030037030020024188016a41086a2211200241d0016a41086a290300370300200220022903d00137038801200041073a00002000200229038801370001200041096a2011290300370000200041116a2010290300370000200041196a2001290300370000200041246a2005360000200041216a20022f01243b0000200041236a20032d00003a0000200041286a20022f01203b00002000412a6a200f2d00003a00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f011c3b0000200041326a2006360000200041386a200c2d00003a0000200041366a20022f01183b00002000413d6a2007360000200041396a200d360000200041c4006a200241cb006a280000360000200041c1006a20022800483600000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b20024190096a200110b501024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00141002104200241003602900920024190096a410472210720012802042103024003402003450d01200128020022052d0000210620012003417f6a22033602042001200541016a360200200720046a20063a00002002200441016a2205360290092005210420054120470d000b200241cc016a41026a22012002419d096a2d00003a0000200241c8016a41026a2203200241a4096a2d00003a0000200220022f0194093b0128200220022d0096093a002a20022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a28010021042002280097092105200241a5096a2800002106200220024190096a41196a2800003602682002200241ac096a28000036006b200241b0096a2802002107200220022d002a3a00ba01200220022f01283b01b801200241c4016a41026a220c20012d00003a0000200220022f01cc013b01c401200241c0016a41026a220120032d00003a0000200220022f01c8013b01c001200241bc016a41026a220320022d006a3a0000200220022f01683b01bc01200228006b210d200241b4016a41026a220e200c2d00003a0000200220022f01c4013b01b401200241b0016a41026a220c20012d00003a0000200220022f01c0013b01b001200241ac016a41026a220120032d00003a0000200220022f01bc013b01ac01200241246a41026a220320022d00ba013a0000200220022f01b8013b0124200241206a41026a220f200e2d00003a0000200220022f01b4013b01202002411c6a41026a220e200c2d00003a0000200220022f01b0013b011c200241186a41026a220c20012d00003a0000200220022f01ac013b011820024188016a41186a2201200241d0016a41186a29030037030020024188016a41106a2210200241d0016a41106a29030037030020024188016a41086a2211200241d0016a41086a290300370300200220022903d00137038801200041083a00002000200229038801370001200041096a2011290300370000200041116a2010290300370000200041196a2001290300370000200041246a2005360000200041216a20022f01243b0000200041236a20032d00003a0000200041286a20022f01203b00002000412a6a200f2d00003a00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f011c3b0000200041326a2006360000200041386a200c2d00003a0000200041366a20022f01183b00002000413d6a2007360000200041396a200d360000200041c4006a200241cb006a280000360000200041c1006a20022800483600000c0a0b2000410b3a00000c090b2000410b3a00000c080b20024190096a200110b501024020022d0090094101460d00200241e8016a200241a9096a290000370300200241e0016a200241a1096a290000370300200241d8016a20024199096a29000037030020022002290091093703d00141002104200241003602900920024190096a410472210720012802042103024003402003450d01200128020022052d0000210620012003417f6a22033602042001200541016a360200200720046a20063a00002002200441016a2205360290092005210420054120470d000b200241cc016a41026a22012002419d096a2d00003a0000200241c8016a41026a2203200241a4096a2d00003a0000200220022f0194093b0128200220022d0096093a002a20022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a28010021042002280097092105200241a5096a2800002106200220024190096a41196a2800003602682002200241ac096a28000036006b200241b0096a2802002107200220022d002a3a00ba01200220022f01283b01b801200241c4016a41026a220c20012d00003a0000200220022f01cc013b01c401200241c0016a41026a220120032d00003a0000200220022f01c8013b01c001200241bc016a41026a220320022d006a3a0000200220022f01683b01bc01200228006b210d200241b4016a41026a220e200c2d00003a0000200220022f01c4013b01b401200241b0016a41026a220c20012d00003a0000200220022f01c0013b01b001200241ac016a41026a220120032d00003a0000200220022f01bc013b01ac01200241246a41026a220320022d00ba013a0000200220022f01b8013b0124200241206a41026a220f200e2d00003a0000200220022f01b4013b01202002411c6a41026a220e200c2d00003a0000200220022f01b0013b011c200241186a41026a220c20012d00003a0000200220022f01ac013b011820024188016a41186a2201200241d0016a41186a29030037030020024188016a41106a2210200241d0016a41106a29030037030020024188016a41086a2211200241d0016a41086a290300370300200220022903d00137038801200041093a00002000200229038801370001200041096a2011290300370000200041116a2010290300370000200041196a2001290300370000200041246a2005360000200041216a20022f01243b0000200041236a20032d00003a0000200041286a20022f01203b00002000412a6a200f2d00003a00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f011c3b0000200041326a2006360000200041386a200c2d00003a0000200041366a20022f01183b00002000413d6a2007360000200041396a200d360000200041c4006a200241cb006a280000360000200041c1006a20022800483600000c090b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b20024190096a200110b50120022d0090094101460d03200241e8006a41186a200241a9096a2203290000370300200241e8006a41106a200241a1096a2204290000370300200241e8006a41086a20024199096a2205290000370300200220022900910937036820024190096a200110b501024002400240024020022d0090094101460d0020024188016a41186a200329000037030020024188016a41106a200429000037030020024188016a41086a200529000037030020022002290091093703880120012802042203450d03200128020022042d0000210520012003417f6a22073602042001200441016a36020041022106024020050e020300040b2007450d0320042d0001210520012003417e6a3602042001200441026a3602004100210620050e020201030b2000410b3a00000c080b410121060b20024190096a200110b7012002280290092101200241d0016a20024190096a41047241bc0710bf091a20014123460d0520024190096a200241d0016a41bc0710bf091a41c007102f2203450d0720032001360200200341046a20024190096a41bc0710bf091a200241c8006a41086a2201200241e8006a41086a290300370300200241c8006a41106a2204200241e8006a41106a290300370300200241c8006a41186a2205200241e8006a41186a290300370300200241286a41086a220720024188016a41086a290300370300200241286a41106a220c20024188016a41106a290300370300200241286a41186a220d20024188016a41186a2903003703002002200229036837034820022002290388013703282000410a3a000020002002290348370001200041096a2001290300370000200041116a2004290300370000200041196a2005290300370000200041216a2002290328370000200041296a2007290300370000200041316a200c290300370000200041396a200d290300370000200041c4006a2003360200200041c1006a20063a00000c060b2000410b3a00000c050b2000410b3a00000c040b2000410b3a00000c030b2000410b3a00000c020b2000410b3a00000c010b2000410b3a00000b200241d0106a24000f0b1039000be30101047f0240024002400240200128020022022802042203450d00200228020022042d0000210520022003417f6a3602042002200441016a36020020050e020203010b200041023602000f0b200041023602000f0b200041003602000f0b02402001280200220228020422034104490d0020022802002204280000210520022003417c6a3602042002200441046a3602002001280200220228020422014104490d00200020053602042000410136020020022802002203280000210420022001417c6a3602042002200341046a360200200041086a20043602000f0b200041023602000bc50503037f017e087f230041306b22022400200241086a200110ab01024002402002280208450d00200041003602000c010b02400240024002400240024002400240200228020c22032001280200280204410c6e2204200420034b1bad420c7e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102f2206450d050b2001200128020441016a22073602042004410c6e210802400240200720012802084b0d0020030d01410021030c090b200041003602000c040b41002109410021074100210a03402002200110ab0120022802000d032001280200220b280204220c20022802042204490d032004417f4c0d010240024020040d004101210d0c010b20041035220d450d062001280200220b280204210c0b200c2004490d02200d200b280200200410bf09210c200b280204220d2004490d06200b200d20046b360204200b200b28020020046a36020002400240200a2008470d002009200a41016a220b2009200b4b1b220b4104200b41044b1bad420c7e2205422088a745410274210b2005a7210802400240200a0d00200241003602200c010b2002410436022820022007360224200220063602200b200241106a2008200b200241206a104e2002280218210b20022802104101460d0120022802142106200b410c6e21080b200620076a220b200c360200200b41046a2004ad2205422086200584370200200941026a21092007410c6a21072003200a41016a220a460d080c010b0b200b0d040b103b000b200d10310b20004100360200200a450d002006210403400240200441046a280200450d00200428020010310b2004410c6a2104200741746a22070d000b0b2008450d042008410c6c450d04200610310c040b1039000b2004200d419cb4c0001061000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b200241306a24000bfa0a030b7f017e017f230041f0036b2202240041002103200241003602d802200241d8026a410472210402400240024002400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a22053602d8022005210320054120470d000b200241e8036a41026a2205200241e5026a2d00003a0000200241e4036a41026a2203200241ec026a2d00003a0000200220022f01dc023b01ec03200220022d00de023a00ee032002200241e3026a2f00003b01e8032002200241ea026a2f01003b01e403200241e6026a280100210420022800df022109200241ed026a280000210a2002200241f1026a2800003602f8012002200241f4026a2800003600fb01200241f8026a280200210b200220022d00ee033a00d603200220022f01ec033b01d403200241e0036a41026a220620052d00003a0000200220022f01e8033b01e003200241dc036a41026a220520032d00003a0000200220022f01e4033b01dc03200241d8036a41026a220320022d00fa013a0000200220022f01f8013b01d80320022800fb01210c200241d0036a41026a220720062d00003a0000200220022f01e0033b01d003200241cc036a41026a220620052d00003a0000200220022f01dc033b01cc03200241c8036a41026a220820032d00003a0000200220022f01d8033b01c803200128020022052802042103200241f4016a41026a20022d00d6033a0000200220022f01d4033b01f401200241f0016a41026a20072d00003a0000200220022f01d0033b01f001200241ec016a41026a20062d00003a0000200220022f01cc033b01ec01200241e8016a41026a20082d00003a0000200220022f01c8033b01e80120034108490d0120052802002206290000210d2005200341786a3602042005200641086a360200200241d8026a200110c60320022802dc022206450d02200241e4026a280200210520022802e002210720022802d8022103200241f8016a200241e8026a41e00010bf091a200241d8026a200110c603024020022802dc02450d00200241186a200241d8026a41f00010bf091a2002410c6a41026a2208200241f0016a41026a2d00003a0000200241086a41026a2201200241ec016a41026a2d00003a0000200241046a41026a220e200241e8016a41026a2d00003a0000200220022f01f4013b01102002200241f4016a41026a2d00003a0012200220022f01f0013b010c200220022f01ec013b0108200220022f01e8013b010420024188016a200241f8016a41e00010bf091a200041146a2005360200200020073602102000200636020c200020033602082000200d370300200041186a20024188016a41e00010bf091a200041f8006a200241186a41f00010bf091a200041eb016a2009360000200020043600f2012000200a3600f901200041ea016a20022d00123a0000200041e8016a20022f01103b0100200020022f010c3b00ef01200041f1016a20082d00003a0000200020022f01083b00f601200041f8016a20012d00003a0000200020022f01043b00fd01200041ff016a200e2d00003a000020004184026a200b36000020004180026a200c3600000c040b2000410036020c02402005450d00200541246c21032006210503400240024002400240024020052d00000e050400010204030b2005410c6a280200450d03200541086a28020010310c030b2005410c6a280200450d02200541086a28020010310c020b2005410c6a280200450d01200541086a28020010310c010b200541086a280200450d00200541046a28020010310b200541246a21052003415c6a22030d000b0b2007450d03200741246c450d03200610310c030b2000410036020c0c020b2000410036020c0c010b2000410036020c0b200241f0036a24000bb40201067f230041106b22022400024002402001280200220328020422044104490d0020032802002205280000210620032004417c6a3602042003200541046a3602002002200110c1030240024020022802002203450d00200241086a2802002105200228020421042001280200220128020422074104490d012000200436020820002003360204200020063602002000410c6a200536020020012802002203280000210420012007417c6a3602042001200341046a360200200041106a20043602000c030b200041003602040c020b2000410036020402402005450d002005410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b2004450d012004410c6c450d01200310310c010b200041003602040b200241106a24000bce14020a7f017e23004180016b2202240002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e050102030405060b200041053a00000c060b4100210420024100360240200241c0006a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602402003210420034120470d000b200241f8006a41026a2201200241cd006a2d00003a0000200241f4006a41026a2203200241d4006a2d00003a0000200220022f01443b017c200220022d00463a007e2002200241c0006a410b6a2f00003b01782002200241c0006a41126a2f01003b0174200241ce006a280100210420022800472105200241d5006a28000021062002200241c0006a41196a28000036021c2002200241dc006a28000036001f200241e0006a2802002108200220022d007e3a003e200220022f017c3b013c200241f0006a41026a220720012d00003a0000200220022f01783b0170200241ec006a41026a220120032d00003a0000200220022f01743b016c200241e8006a41026a220320022d001e3a0000200220022f011c3b0168200228001f2109200241386a41026a220a20072d00003a0000200220022f01703b0138200241346a41026a220720012d00003a0000200220022f016c3b0134200241306a41026a220120032d00003a0000200220022f01683b01302002412c6a41026a220320022d003e3a0000200220022f013c3b012c200241186a41026a220b200a2d00003a0000200220022f01383b0118200241146a41026a220a20072d00003a0000200220022f01343b0114200241106a41026a220720012d00003a0000200220022f01303b0110200041003a0000200041046a2005360000200020022f012c3b0001200041036a20032d00003a00002000410b6a2004360000200041086a20022f01183b00002000410a6a200b2d00003a0000200041126a20063600002000410f6a20022f01143b0000200041116a200a2d00003a0000200041166a20022f01103b0000200041186a20072d00003a00002000411d6a2008360000200041196a2009360000200041236a2002410d6a41026a2d00003a0000200041216a20022f000d3b00000c060b200041053a00000c050b200041013a00000c040b2002200110ab01024020022802000d0020012802002204280204220520022802042203490d002003417f4c0d050240024020030d00410121060c010b200310352206450d072001280200220428020421050b024020052003490d0020062004280200200310bf092101200428020422052003490d082004200520036b3602042004200428020020036a3602002001450d01200041023a0000200020022f001c3b0001200041086a2003ad220c422086200c84370000200041046a2001360000200041106a2002290240370200200041036a2002411c6a41026a2d00003a0000200041186a200241c0006a41086a290200370200200041206a200241c0006a41106a2802003602000c050b200610310b200041053a00000c030b4100210420024100360240200241c0006a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602402003210420034120470d000b200241f8006a41026a2201200241cd006a2d00003a0000200241f4006a41026a2203200241d4006a2d00003a0000200220022f01443b017c200220022d00463a007e2002200241c0006a410b6a2f00003b01782002200241c0006a41126a2f01003b0174200241ce006a280100210420022800472105200241d5006a28000021062002200241c0006a41196a28000036021c2002200241dc006a28000036001f200241e0006a2802002108200220022d007e3a003e200220022f017c3b013c200241f0006a41026a220720012d00003a0000200220022f01783b0170200241ec006a41026a220120032d00003a0000200220022f01743b016c200241e8006a41026a220320022d001e3a0000200220022f011c3b0168200228001f2109200241386a41026a220a20072d00003a0000200220022f01703b0138200241346a41026a220720012d00003a0000200220022f016c3b0134200241306a41026a220120032d00003a0000200220022f01683b01302002412c6a41026a220320022d003e3a0000200220022f013c3b012c200241186a41026a220b200a2d00003a0000200220022f01383b0118200241146a41026a220a20072d00003a0000200220022f01343b0114200241106a41026a220720012d00003a0000200220022f01303b0110200041033a0000200041046a2005360000200020022f012c3b0001200041036a20032d00003a00002000410b6a2004360000200041086a20022f01183b00002000410a6a200b2d00003a0000200041126a20063600002000410f6a20022f01143b0000200041116a200a2d00003a0000200041166a20022f01103b0000200041186a20072d00003a00002000411d6a2008360000200041196a2009360000200041236a2002410d6a41026a2d00003a0000200041216a20022f000d3b00000c030b200041053a00000c020b200241003602404104210302400340200128020022042802042205450d01200241c0006a20036a200428020022062d00003a000020042005417f6a3602042004200641016a36020020022003417d6a360240200341016a22034118470d000b200241f8006a41026a2201200241cd006a2d00003a0000200241f4006a41026a2203200241c0006a41146a2d00003a0000200220022f014422043b017c200220022d004622053a007e2002200241c0006a410b6a2f00003b01782002200241c0006a41126a2f01003b0174200241ce006a280100210620022800472108200241c0006a41156a2f00002107200241d7006a2d00002109200220053a006a200220043b0168200241f0006a41026a220420012d00003a0000200220022f01783b0170200241ec006a41026a220120032d00003a0000200220022f01743b016c2002413c6a41026a220320042d00003a0000200220022f01703b013c200241386a41026a220420012d00003a0000200220022f016c3b0138200241346a41026a220120022d006a3a0000200220022f01683b0134200241306a41026a220520032d00003a0000200220022f013c3b01302002412c6a41026a220320042d00003a0000200220022f01383b012c200041043a0000200041046a2008360000200020022f01343b0001200041036a20012d00003a00002000410b6a2006360000200041086a20022f01303b00002000410a6a20052d00003a0000200041146a20093a0000200041126a20073b00002000410f6a20022f012c3b0000200041116a20032d00003a0000200041156a200229001c3700002000411c6a200241236a2900003700000c020b200041053a00000c010b200041053a00000b20024180016a24000f0b103b000b1039000b20032005419cb4c0001061000ba10606057f017e027f017e027f017e230041206b2202240002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020002400240200641037122034103460d00024002400240024020030e03000102000b2006410276ad21070c020b200128020022012802042203450d04200128020022042d0000210520012003417f6a360204410121032001200441016a3602002005410874200672220141ffff0371418002490d03200141fcff0371410276ad21070c010b410121032001280200220128020422044103490d022001280200220541026a2d0000210820052f000021092001200541036a36020020012004417d6a3602042009200841107472410874200672220141808004490d022001410276ad21070b4200210a410021030c030b02400240024002402006410276220b0e0d00030303010303030303030302030b2001280200220328020422014104490d0420032802002206350000210720032001417c6a3602042003200641046a36020020074280808080045421034200210a0c050b2001280200220328020422014108490d032003280200220629000021072003200141786a3602042003200641086a3602002007428080808080808080015421034200210a0c040b2001280200220328020422014110490d022003280200220641086a290000210a200629000021072003200641106a3602002003200141706a360204200a428080808080808080015421030c030b200641334b0d01200b41046a21094100210441012103200241186a210c420021074200210a0340200128020022062802042205450d0120062802002208310000210d20062005417f6a3602042006200841016a360200200241106a200d4200200441037441f8007110c309200c290300200a84210a20022903102007842107200441016a22062104200641ff01712009490d000b2002427f427f41e800200b4103746b41f8007110ba092007200229030058200a200241086a290300220d58200a200d511b21030c020b0c010b410121030b20002007370308200041106a200a37030020002003ad370300200241206a24000be13505187f017e087f037e057f230041a0036b2202240041002103200241003602a802200241a8026a4104722104024002400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a22053602a8022005210320054120470d000b200241d0016a41026a2205200241b5026a2d00003a0000200241c0016a41026a2203200241bc026a2d00003a0000200220022f01ac023b01e001200220022d00ae023a00e2012002200241b3026a2f00003b01d0012002200241ba026a2f01003b01c001200241b6026a280100210920022800af02210a200241bd026a280000210b2002200241c1026a280000360288032002200241c4026a28000036008b03200241c8026a280200210c200220022d00e2013a009a02200220022f01e0013b019802200241f8026a41026a220620052d00003a0000200220022f01d0013b01f802200241e8026a41026a220720032d00003a0000200220022f01c0013b01e802200241d0026a41026a220820022d008a033a0000200220022f0188033b01d002200228008b03210d20024188036a41026a220420062d00003a0000200220022f01f8023b018803200241e0016a41026a220e20072d00003a0000200220022f01e8023b01e001200520082d00003a0000200220022f01d0023b01d001200241a8026a41026a20022d009a023a0000200220022f0198023b01a802200320042d00003a0000200220022f0188033b01c0012006200e2d00003a0000200220022f01e0013b01f802200720052d00003a0000200220022f01d0013b01e802410021050c010b410121050b200241fc006a41026a2203200241a8026a41026a2d00003a0000200241f8006a41026a2206200241c0016a41026a2d00003a0000200241f4006a41026a2207200241f8026a41026a2d00003a0000200241f0006a41026a2208200241e8026a41026a2d00003a0000200220022f01a8023b017c200220022f01c0013b0178200220022f01f8023b0174200220022f01e8023b0170024002400240024002400240024020050d00200241ec006a41026a20032d00003a0000200241e8006a41026a20062d00003a0000200241e4006a41026a20072d00003a0000200241e0006a41026a20082d00003a0000200220022f017c3b016c200220022f01783b0168200220022f01743b0164200220022f01703b0160200241286a200110ab01024020022802280d00200228022c210f41002103200241003602a802200241a8026a4104722104024002400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a22053602a8022005210320054120470d000b200241d0016a41026a2205200241b5026a2d00003a0000200241c0016a41026a2203200241bc026a2d00003a0000200220022f01ac023b01e001200220022d00ae023a00e2012002200241b3026a2f00003b01d0012002200241ba026a2f01003b01c001200241b6026a280100210e20022800af022110200241bd026a28000021112002200241c1026a280000360288032002200241c4026a28000036008b03200241c8026a2802002112200220022d00e2013a009a02200220022f01e0013b019802200241f8026a41026a220620052d00003a0000200220022f01d0013b01f802200241e8026a41026a220720032d00003a0000200220022f01c0013b01e802200241d0026a41026a220820022d008a033a0000200220022f0188033b01d002200228008b03211320024188036a41026a220420062d00003a0000200220022f01f8023b018803200241e0016a41026a221420072d00003a0000200220022f01e8023b01e001200520082d00003a0000200220022f01d0023b01d001200241a8026a41026a20022d009a023a0000200220022f0198023b01a802200320042d00003a0000200220022f0188033b01c001200620142d00003a0000200220022f01e0013b01f802200720052d00003a0000200220022f01d0013b01e802410021050c010b410121050b2002419c016a41026a2203200241a8026a41026a2d00003a000020024198016a41026a2206200241c0016a41026a2d00003a000020024194016a41026a2207200241f8026a41026a2d00003a000020024190016a41026a2208200241e8026a41026a2d00003a0000200220022f01a8023b019c01200220022f01c0013b019801200220022f01f8023b019401200220022f01e8023b019001024020050d002002418c016a41026a20032d00003a000020024188016a41026a20062d00003a000020024184016a41026a20072d00003a000020024180016a41026a20082d00003a0000200220022f019c013b018c01200220022f0198013b018801200220022f0194013b018401200220022f0190013b01800141002103200241003602a802200241a8026a4104722104024002400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a22053602a8022005210320054120470d000b200241d0016a41026a2205200241b5026a2d00003a0000200241c0016a41026a2203200241bc026a2d00003a0000200220022f01ac023b01e001200220022d00ae023a00e2012002200241b3026a2f00003b01d0012002200241ba026a2f01003b01c001200241b6026a280100210420022800af022114200241bd026a28000021152002200241c1026a280000360288032002200241c4026a28000036008b03200241c8026a2802002116200220022d00e2013a009a02200220022f01e0013b019802200241f8026a41026a220620052d00003a0000200220022f01d0013b01f802200241e8026a41026a220720032d00003a0000200220022f01c0013b01e802200241d0026a41026a220820022d008a033a0000200220022f0188033b01d002200228008b03211720024188036a41026a221820062d00003a0000200220022f01f8023b018803200241e0016a41026a221920072d00003a0000200220022f01e8023b01e001200520082d00003a0000200220022f01d0023b01d001200241a8026a41026a20022d009a023a0000200220022f0198023b01a802200320182d00003a0000200220022f0188033b01c001200620192d00003a0000200220022f01e0013b01f802200720052d00003a0000200220022f01d0013b01e802410021050c010b410121050b200241bc016a41026a2203200241a8026a41026a2d00003a0000200241b8016a41026a2206200241c0016a41026a2d00003a0000200241b4016a41026a2207200241f8026a41026a2d00003a0000200241b0016a41026a2208200241e8026a41026a2d00003a0000200220022f01a8023b01bc01200220022f01c0013b01b801200220022f01f8023b01b401200220022f01e8023b01b00120050d03200241ac016a41026a20032d00003a0000200241a8016a41026a20062d00003a0000200241a4016a41026a20072d00003a0000200241a0016a41026a20082d00003a0000200220022f01bc013b01ac01200220022f01b8013b01a801200220022f01b4013b01a401200220022f01b0013b01a001200241206a200110ab0120022802200d0720022802242219200128020028020441246e2205200520194b1bad42247e221a422088a70d04201aa72205417f4c0d0402400240024020050d00410421180c010b2005102f2218450d010b2001200128020441016a2203360204200541246ead211a200320012802084b0d07024002402019450d00200241a8026a410472211b200241ed016a211c200241fe026a211d200241ef026a211e20024194036a211f200241c5026a2120200241a8026a41106a2121410021220340200128020022052802042203450d0a200528020022062d0000210720052003417f6a3602042005200641016a3602000240024002400240024002400240024002400240024002400240024002400240024002400240024020070e08001e011e030402051e0b2002200110ab0120022802000d1d20012802002203280204220620022802042205490d1d2005417f4c0d1b0240024020050d00410121070c010b200510352207450d172001280200220328020421060b20062005490d0620072003280200200510bf0921062003280204220820054f0d0520052008419cb4c0001061000b41002103200241003602a8020340200128020022052802042206450d1d200528020022072d0000210820052006417f6a3602042005200741016a360200201b20036a20083a00002002200341016a22053602a8022005210320054120470d000b2002202141056a2900003700ed022002202129020022233703e802200220202800003602e0022002202041036a2800003600e30220022802ac02210320022903b0022124201f41036a20022800eb02360000201f20233e0200200241f8026a41046a201e41046a2f00003b01002002202437028c0320022003360288032002201e2800003602f802201d41036a20022800e302360000201d20022802e0023600002002290093032125200228008b0321072002200241f8026a41056a2900003700d502200220022902f8023703d002200220022900d50237009d02200220022903d002370398022002200229009d0237008d022002200229039802370388022002200229008d023700fd0120022002290388023703f801200220022900fd013700e501200220022903f8013703e001201c20022f00f5013b0000201c41026a200241f5016a41026a2d00003a00002007410876212620254280808080708321232024421888a721062025a72108410021270c110b200242003703a802200128020022052802042203450d1b200528020022062d0000210720052003417f6a360204200241013602a8022005200641016a360200200220073a00ac022001280200220528020422030d050c1a0b200242003703a802200128020022052802042203450d1a200528020022062d0000210720052003417f6a360204200241013602a8022005200641016a360200200220073a00ac022001280200220528020422030d060c0b0b200242003703a802200128020022052802042203450d19200528020022062d0000210720052003417f6a360204200241013602a8022005200641016a360200200220073a00ac022001280200220528020422030d040c080b200128020022052802042203450d18200528020022062d0000210720052003417f6a3602042005200641016a36020020070d1820024188036a200110c00320022802880322074102460d18200241e0016a41086a200241a8026a41086a290200370300200220022902a8023703e0012002280290032108200228028c0321064100212642002123410421270c050b2003200820056b3602042003200328020020056a3602002006450d17200241e0016a41086a200241a8026a41086a290200370300200220022902a8023703e001200641087621262005ad22244220862024842224422088a721082024a7210642002123410521270c040b200710310c160b200528020022062d0000210720052003417f6a3602042005200641016a360200200241023602a802200220073a00ad02200128020022052802042203450d14200528020022062d0000210720052003417f6a3602042005200641016a360200200241033602a802200220073a00ae02200128020022052802042203450d14200528020022062d0000210720052003417f6a3602042005200641016a360200200220073a00af02200241043602a80220022903a8022224a741044f0d0741fdefc900411b4198f0c900103c000b200528020022062d0000210720052003417f6a3602042005200641016a360200200241023602a802200220073a00ad02200128020022052802042203450d03200528020022062d0000210720052003417f6a3602042005200641016a360200200241033602a802200220073a00ae02200128020022052802042203450d03200528020022062d0000210720052003417f6a3602042005200641016a360200200220073a00af02200241043602a80220022903a8022224a741044f0d0241fdefc900411b4198f0c900103c000b200528020022062d0000210720052003417f6a3602042005200641016a360200200241023602a802200220073a00ad02200128020022052802042203450d04200528020022062d0000210720052003417f6a3602042005200641016a360200200241033602a802200220073a00ae02200128020022052802042203450d04200528020022062d0000210720052003417f6a3602042005200641016a360200200220073a00af02200241043602a80220022903a8022224a741044f0d0341fdefc900411b4198f0c900103c000b0c070b200241106a200110ab0120022802100d1120012802002203280204220720022802142205490d112005417f4c0d0f0240024020050d00410121060c010b200510352206450d0b2001280200220328020421070b20072005490d0420062003280200200510bf0921070240200328020422082005490d002003200820056b3602042003200328020020056a3602002007450d122005ad222342208620238422254280808080708321232024423888a721072025a721082024422088a72103410321270c070b20052008419cb4c0001061000b200241003602a8020c100b200241086a200110ab0120022802080d0f200128020022032802042207200228020c2205490d0f2005417f4c0d0d0240024020050d00410121060c010b200510352206450d092001280200220328020421070b20072005490d0220062003280200200510bf0921070240200328020422082005490d002003200820056b3602042003200328020020056a3602002007450d102005ad222342208620238422254280808080708321232024423888a721072025a721082024422088a72103410221270c050b20052008419cb4c0001061000b200241003602a8020c0e0b200241186a200110ab0120022802180d0d200128020022032802042207200228021c2205490d0d2005417f4c0d0b0240024020050d00410121060c010b200510352206450d072001280200220328020421070b20072005490d0020062003280200200510bf0921072003280204220820054f0d0120052008419cb4c0001061000b200610310c0c0b2003200820056b3602042003200328020020056a3602002007450d0b2005ad222342208620238422254280808080708321232024423888a721072025a721082024422088a72103410121270b200241d0016a41086a200241e0016a41086a2903002224370300200241c0016a41086a22282024370300200220022903e00122243703d001200220243703c0010240201a4220882224a72205201aa7470d00200541016a22292005490d092005410174222a20292029202a491b22294104202941044b1bad42247e2224422088a74541027421292024a7212a0240024020050d00200241003602a8020c010b200241043602b002200220183602a8022002200541246c3602ac020b20024188036a202a2029200241a8026a104e20022802900321292002280288034101460d03200228028c032118201a4220882224a72105202941246ead211a0b2018200541246c6a220520232008ad8437000c2005200636000820052026410874200741ff017172360004200520033b0001200520273a0000200541036a20034110763a0000200520022903c0013700142005411c6a20282903003700002024422086201a42ffffffff0f83844280808080107c211a202241016a22222019470d000b200128020421030b20012003417f6a3602042018450d09200241d8006a41026a2205200241e8006a41026a2d00003a0000200241d4006a41026a2203200241e4006a41026a2d00003a0000200241d0006a41026a2206200241e0006a41026a2d00003a0000200220022f016c3b015c200220022f01683b0158200220022f01643b0154200220022f01603b0150200220022f018c013b014c2002200241ec006a41026a2d00003a005e20022002418c016a41026a2d00003a004e200241c8006a41026a220720024188016a41026a2d00003a0000200241c4006a41026a220820024184016a41026a2d00003a0000200241c0006a41026a220120024180016a41026a2d00003a0000200241386a41026a2219200241a8016a41026a2d00003a0000200220022f0188013b0148200220022f0184013b0144200220022f0180013b01402002200241ac016a41026a2d00003a003e200220022f01ac013b013c200220022f01a8013b0138200241346a41026a221b200241a4016a41026a2d00003a0000200220022f01a4013b0134200241306a41026a2222200241a0016a41026a2d00003a0000200220022f01a0013b01302000201a370208200020183602042000200f360200200041136a200a360000200041106a20022f015c3b0100200041126a20022d005e3a00002000200936001a200020022f01583b0017200041196a20052d00003a0000200020022f01543b001e200041206a20032d00003a00002000200b360021200041276a20062d00003a0000200020022f01503b00252000412c6a200c360000200041286a200d360000200041326a20022d004e3a0000200041306a20022f014c3b0100200041336a2010360000200041396a20072d00003a0000200020022f01483b00372000200e36003a200041c0006a20082d00003a0000200020022f01443b003e20002011360041200041c7006a20012d00003a0000200020022f01403b0045200041cc006a2012360000200041c8006a2013360000200041d2006a20022d003e3a0000200041d0006a20022f013c3b0100200041d3006a2014360000200041d9006a20192d00003a0000200020022f01383b00572000200436005a200041e0006a201b2d00003a0000200020022f01343b005e20002015360061200041e7006a20222d00003a0000200020022f01303b0065200041ec006a2016360000200041e8006a20173600000c0a0b2029450d050b1039000b200041003602040c070b200041003602040c060b200041003602040c050b200041003602040c040b103b000b200241003602a8020b0240201a422088a72205450d00200541246c21032018210503400240024002400240024020052d00000e050400010204030b2005410c6a280200450d03200541086a28020010310c030b2005410c6a280200450d02200541086a28020010310c020b2005410c6a280200450d01200541086a28020010310c010b200541086a280200450d00200541046a28020010310b200541246a21052003415c6a22030d000b0b201aa72205450d00200541246c450d00201810310b200041003602040b200241a0036a24000bc9690b047f017e017f017e157f017e0b7f017e017f017e127f230041f0056b22022400024002402001280200220328020422044108490d002003280200220529000021062003200441786a3602042003200541086a360200024002400240200128020022032802042204450d00200328020022052d0000210720032004417f6a3602042003200541016a36020002400240024020070e020001030b2001280200220328020422044108490d022003280200220529000021082003200441786a3602042003200541086a36020041002104200241003602e004200241e0046a41047221090340200128020022032802042205450d03200328020022072d0000210a20032005417f6a3602042003200741016a360200200920046a200a3a00002002200441016a22033602e0042003210420034120470d000b200241ec056a41026a2203200241ed046a2d00003a0000200241e8056a41026a2204200241f4046a2d00003a0000200220022f01e4043b01b804200220022d00e6043a00ba042002200241eb046a2f00003b01ec052002200241f2046a2f01003b01e805200241ee046a280100210b20022800e704210c200241f5046a280000210d2002200241f9046a2800003602c0042002200241fc046a2800003600c304200241e0046a41206a280200210e200220022d00ba043a00da05200220022f01b8043b01d805200241e4056a41026a220520032d00003a0000200220022f01ec053b01e405200241e0056a41026a220320042d00003a0000200220022f01e8053b01e005200241dc056a41026a220420022d00c2043a0000200220022f01c0043b01dc0520022800c304210f200241d4056a41026a220720052d00003a0000200220022f01e4053b01d405200241d0056a41026a220520032d00003a0000200220022f01e0053b01d005200241cc056a41026a220320042d00003a0000200220022f01dc053b01cc05200241b4046a41026a220420022d00da053a0000200220022f01d8053b01b404200241b0046a41026a220a20072d00003a0000200220022f01d4053b01b004200241ac046a41026a220720052d00003a0000200220022f01d0053b01ac04200241a8046a41026a220520032d00003a0000200220022f01cc053b01a804200220042d00003a00ea02200220022f01b4043b01e802200241e4026a41026a200a2d00003a0000200220022f01b0043b01e402200241e0026a41026a20072d00003a0000200220022f01ac043b01e002200241dc026a41026a20052d00003a0000200220022f01a8043b01dc0241002104200241003602e004200241e0046a41047221090340200128020022032802042205450d03200328020022072d0000210a20032005417f6a3602042003200741016a360200200920046a200a3a00002002200441016a22033602e0042003210420034120470d000b200241ec056a41026a2204200241ed046a2d00003a0000200241e8056a41026a2205200241f4046a2d00003a0000200220022f01e4043b01b804200220022d00e6043a00ba042002200241eb046a2f00003b01ec052002200241f2046a2f01003b01e805200241ee046a280100211020022800e7042111200241f5046a2800002112200241f9046a2800002103200241e4056a41026a2207200241ff046a2d00003a00002002200241fd046a2f00003b01e40520024180056a2802002113200220022d00ba043a00d605200220022f01b8043b01d405200220042d00003a00e205200220022f01ec053b01e005200241dc056a41026a220420052d00003a0000200220033602c004200220022f01e8053b01dc05200241c6046a20072d00003a0000200220022f01e4053b01c404200241d8056a41026a220520022d00c2043a0000200220033b01d80520022800c3042114200241d0056a41026a220720022d00e2053a0000200220022f01e0053b01d005200241cc056a41026a220a20042d00003a0000200220022f01dc053b01cc05200241c8056a41026a220920052d00003a0000200220022f01d8053b01c805200128020022032802042104200241b4046a41026a220520022d00d6053a0000200220022f01d4053b01b404200241b0046a41026a221520072d00003a0000200220022f01d0053b01b004200241ac046a41026a2207200a2d00003a0000200220022f01cc053b01ac04200241a8046a41026a220a20092d00003a0000200220022f01c8053b01a80420044104490d0220032802002209280000211620032004417c6a3602042003200941046a3602002002418c046a41026a20152d00003a000020024188046a41026a20072d00003a000020024180046a41026a200a2d00003a0000200220022f01b4043b019004200220022f01b0043b018c04200220022f01ac043b018804200220022f01a8043b018004200220052d00003a00920441002104200241003602e004200241e0046a41047221090340200128020022032802042205450d03200328020022072d0000210a20032005417f6a3602042003200741016a360200200920046a200a3a00002002200441016a22033602e00420032104200341c000470d000b200220022f01e4043b01b804200220022d00e6043a00ba0420022800e7042117200241ec056a41026a2203200241ed046a2d00003a00002002200241eb046a2f00003b01ec05200241ee046a2801002118200241e8056a41026a2204200241f4046a2d00003a00002002200241f2046a2f01003b01e805200241f5046a2800002119200241e4056a41026a2205200241fb046a2d00003a00002002200241f9046a2f00003b01e405200241fc046a2802002115200241e0056a41026a220720024182056a2d00003a00002002200241e0046a41206a2f01003b01e00520024183056a280000211a200241dc056a41026a220a20024189056a2d00003a0000200220024187056a2f00003b01dc052002418a056a280100211b200241d8056a41026a220920024190056a2d00003a000020022002418e056a2f01003b01d80520024191056a280000211c20022002419c056a2900003700c704200220024195056a2900003703c004200220022d00ba043a00b604200220022f01b8043b01b404200241d4056a41026a221d20032d00003a0000200220022f01ec053b01d405200241d0056a41026a220320042d00003a0000200220022f01e8053b01d005200241cc056a41026a220420052d00003a0000200220022f01e4053b01cc05200241c8056a41026a220520072d00003a0000200220022f01e0053b01c805200241d8046a41026a2207200a2d00003a0000200220022f01dc053b01d804200241d4046a41026a220a20092d00003a0000200220022f01d8053b01d404200241d0046a41026a220920022d00c2043a0000200220022f01c0043b01d00420022900c704211e20022800c304211f200241b0046a41026a2220201d2d00003a0000200220022f01d4053b01b004200241ac046a41026a221d20032d00003a0000200220022f01d0053b01ac04200241a8046a41026a220320042d00003a0000200220022f01cc053b01a804200241a4046a41026a220420052d00003a0000200220022f01c8053b01a404200241a0046a41026a220520072d00003a0000200220022f01d8043b01a0042002419c046a41026a2207200a2d00003a0000200220022f01d4043b019c0420024198046a41026a220a20092d00003a0000200220022f01d0043b019804200220022d00b6043a00ee03200220022f01b4043b01ec03200241e8036a41026a220920202d00003a0000200220022f01b0043b01e803200241e4036a41026a2220201d2d00003a0000200220022f01ac043b01e403200241e0036a41026a221d20032d00003a0000200220022f01a8043b01e003200241dc036a41026a220320042d00003a0000200220022f01a4043b01dc03200241d8036a41026a220420052d00003a0000200220022f01a0043b01d803200241d4036a41026a220520072d00003a0000200220022f019c043b01d403200241d0036a41026a2207200a2d00003a0000200220022f0198043b01d003200220022d0092043a00fe03200220022f0190043b01fc03200241f8036a41026a220a2002418c046a41026a2d00003a0000200220022f018c043b01f803200241f4036a41026a222120024188046a41026a2d00003a0000200220022f0188043b01f403200241f0036a41026a222220024180046a41026a2d00003a0000200220022f0180043b01f003200220022d00fe033a009604200220022f01fc033b019404200241cc036a41026a2223200a2d00003a0000200220022f01f8033b01cc03200241c8036a41026a220a20212d00003a0000200220022f01f4033b01c803200241c4036a41026a222120222d00003a0000200220022f01f0033b01c403200220022d00ee033a00c203200220022f01ec033b01c003200241bc036a41026a222220092d00003a0000200220022f01e8033b01bc03200241b8036a41026a220920202d00003a0000200220022f01e4033b01b803200241b4036a41026a2220201d2d00003a0000200220022f01e0033b01b403200241b0036a41026a221d20032d00003a0000200220022f01dc033b01b003200241ac036a41026a220320042d00003a0000200220022f01d8033b01ac03200241a8036a41026a220420052d00003a0000200220022f01d4033b01a803200241a4036a41026a220520072d00003a0000200220022f01d0033b01a403200220022d0096043a009e03200220022f0194043b019c0320024198036a41026a20232d00003a0000200220022f01cc033b01980320024194036a41026a200a2d00003a0000200220022f01c8033b01940320024190036a41026a20212d00003a0000200220022f01c4033b019003200220022d00c2033a008e03200220022f01c0033b018c0320024188036a41026a20222d00003a0000200220022f01bc033b01880320024184036a41026a20092d00003a0000200220022f01b8033b01840320024180036a41026a20202d00003a0000200220022f01b4033b018003200241fc026a41026a201d2d00003a0000200220022f01b0033b01fc02200241f8026a41026a20032d00003a0000200220022f01ac033b01f802200241f4026a41026a20042d00003a0000200220022f01a8033b01f402200241f0026a41026a20052d00003a0000200220022f01a4033b01f00241002104200241003602e004200241e0046a41047221090340200128020022032802042205450d03200328020022072d0000210a20032005417f6a3602042003200741016a360200200920046a200a3a00002002200441016a22033602e0042003210420034120470d000b200241ec056a41026a2204200241ed046a2d00003a0000200241e8056a41026a2205200241f4046a2d00003a0000200220022f01e4043b01b804200220022d00e6043a00ba042002200241eb046a2f00003b01ec052002200241f2046a2f01003b01e805200241ee046a280100211d20022800e7042120200241f5046a2800002124200241f9046a2800002103200241e4056a41026a2207200241ff046a2d00003a00002002200241fd046a2f00003b01e40520024180056a2802002121200220022d00ba043a00d605200220022f01b8043b01d405200220042d00003a00e205200220022f01ec053b01e005200241dc056a41026a220420052d00003a0000200220033602c004200220022f01e8053b01dc05200241c6046a20072d00003a0000200220022f01e4053b01c404200241d8056a41026a220520022d00c2043a0000200220033b01d80520022800c3042122200241d0056a41026a220720022d00e2053a0000200220022f01e0053b01d005200241cc056a41026a220a20042d00003a0000200220022f01dc053b01cc05200241c8056a41026a220920052d00003a0000200220022f01d8053b01c805200128020022032802042104200241b4046a41026a220520022d00d6053a0000200220022f01d4053b01b404200241b0046a41026a222320072d00003a0000200220022f01d0053b01b004200241ac046a41026a2207200a2d00003a0000200220022f01cc053b01ac04200241a8046a41026a220a20092d00003a0000200220022f01c8053b01a80420044104490d0220032802002209280000212520032004417c6a3602042003200941046a3602002002418c046a41026a20232d00003a000020024188046a41026a20072d00003a000020024180046a41026a200a2d00003a0000200220022f01b4043b019004200220022f01b0043b018c04200220022f01ac043b018804200220022f01a8043b018004200220052d00003a009204200241003602e00441c00021040340200128020022032802042205450d03200328020022072d0000210a2003200741016a36020020032005417f6a36020420022802e004220341c0004f0d04200241e0046a20036a41046a200a3a00002002200341016a3602e0042004417f6a22040d000b200220022f01e4043b01ec05200220022d00e6043a00ee0520022800e7042101200241e8056a41026a2209200241ed046a2d00003a00002002200241e0046a410b6a2f00003b01e805200241ee046a2801002104200241e4056a41026a2226200241f4046a2d00003a00002002200241f2046a2f01003b01e405200241f5046a2800002105200241e0056a41026a2227200241e0046a411b6a2d00003a00002002200241f9046a2f00003b01e005200241fc046a2802002107200220024182056a2d00003a00de05200220024180056a2f01003b01dc0520024183056a280000210a200241d8056a41026a222820024189056a2d00003a0000200220024187056a2f00003b01d8052002418a056a2801002123200241d4056a41026a222920024190056a2d00003a000020022002418e056a2f01003b01d40520024195056a290000212a20024191056a280000212b2002200241a0056a2800003600bb0420022002419d056a2800003602b8042003413f490d04200241cc056a41026a220320262d00003a0000200241c8056a41026a222620272d00003a0000200220022f01ec053b01b004200220022d00ee053a00b204200220022f01e8053b01d005200220022f01e4053b01cc05200220022f01e0053b01c805200220022d00de053a00da04200220022f01dc053b01d804200220092d00003a00d205200241c0046a410b6a20022800bb04360000200241d0046a41026a220920292d00003a00002002202a3703c004200241b4046a41026a222720022d00c2043a0000200220022802b8043602c8042002202a3d01b404200220282d00003a00d604200220022f01d8053b01d404200220022f01d4053b01d00420022900c704212c200241ac046a41026a222820022d00d2053a0000200220022f01d0053b01ac04200241a8046a41026a222920032d00003a0000200220022f01cc053b01a804200241a4046a41026a220320262d00003a0000200220022f01c8053b01a404200241a0046a41026a222620022d00da043a0000200220022f01d8043b01a0042002419c046a41026a222d20022d00d6043a0000200220022f01d4043b019c0420024198046a41026a222e20092d00003a0000200220022f01d0043b01980420024194046a41026a220920272d00003a0000200220022f01b4043b019404200220022d00b2043a00ee03200220022f01b0043b01ec03200241e8036a41026a222720282d00003a0000200220022f01ac043b01e803200241e4036a41026a222820292d00003a0000200220022f01a8043b01e403200241e0036a41026a222920032d00003a0000200220022f01a4043b01e003200241dc036a41026a220320262d00003a0000200220022f01a0043b01dc03200241d8036a41026a2226202d2d00003a0000200220022f019c043b01d803200241d4036a41026a222d202e2d00003a0000200220022f0198043b01d403200241d0036a41026a222e20092d00003a0000200220022f0194043b01d003200220022d0092043a00fe03200220022f0190043b01fc03200241f8036a41026a22092002418c046a41026a2d00003a0000200220022f018c043b01f803200241f4036a41026a222f20024188046a41026a2d00003a0000200220022f0188043b01f403200241f0036a41026a223020024180046a41026a2d00003a0000200220022f0180043b01f003200220022d00fe033a00ce03200220022f01fc033b01cc03200241c8036a41026a223120092d00003a0000200220022f01f8033b01c803200241c4036a41026a2209202f2d00003a0000200220022f01f4033b01c403200241c0036a41026a222f20302d00003a0000200220022f01f0033b01c003200220022d00ee033a00be03200220022f01ec033b01bc03200241b8036a41026a223020272d00003a0000200220022f01e8033b01b803200241b4036a41026a222720282d00003a0000200220022f01e4033b01b403200241b0036a41026a222820292d00003a0000200220022f01e0033b01b003200241ac036a41026a222920032d00003a0000200220022f01dc033b01ac03200241a8036a41026a220320262d00003a0000200220022f01d8033b01a803200241a4036a41026a2226202d2d00003a0000200220022f01d4033b01a403200241a0036a41026a222d202e2d00003a0000200220022f01d0033b01a003200220022d00ce033a00aa02200220022f01cc033b01a802200241a4026a41026a222e20312d00003a0000200220022f01c8033b01a402200241a0026a41026a223120092d00003a0000200220022f01c4033b01a0022002419c026a41026a2209202f2d00003a0000200220022f01c0033b019c02200220022d00be033a009a02200220022f01bc033b01980220024194026a41026a222f20302d00003a0000200220022f01b8033b01940220024190026a41026a223020272d00003a0000200220022f01b4033b0190022002418c026a41026a222720282d00003a0000200220022f01b0033b018c0220024188026a41026a222820292d00003a0000200220022f01ac033b01880220024184026a41026a222920032d00003a0000200220022f01a8033b01840220024180026a41026a220320262d00003a0000200220022f01a4033b018002200241fc016a41026a2226202d2d00003a0000200220022f01a0033b01fc01200220022d00ea023a00fa01200220022f01e8023b01f801200241f4016a41026a222d200241e4026a41026a2d00003a0000200220022f01e4023b01f401200241f0016a41026a2232200241e0026a41026a2d00003a0000200220022f01e0023b01f001200241ec016a41026a2233200241dc026a41026a2d00003a0000200220022f01dc023b01ec01200220022d009e033a00da02200220022f019c033b01d802200241d4026a41026a223420024198036a41026a2d00003a0000200220022f0198033b01d402200241d0026a41026a223520024194036a41026a2d00003a0000200220022f0194033b01d002200241cc026a41026a223620024190036a41026a2d00003a0000200220022f0190033b01cc02200220022d008e033a00ca02200220022f018c033b01c802200241c4026a41026a223720024188036a41026a2d00003a0000200220022f0188033b01c402200241c0026a41026a223820024184036a41026a2d00003a0000200220022f0184033b01c002200241bc026a41026a223920024180036a41026a2d00003a0000200220022f0180033b01bc02200241b8026a41026a223a200241fc026a41026a2d00003a0000200220022f01fc023b01b802200241b4026a41026a223b200241f8026a41026a2d00003a0000200220022f01f8023b01b402200241b0026a41026a223c200241f4026a41026a2d00003a0000200220022f01f4023b01b002200241ac026a41026a223d200241f0026a41026a2d00003a0000200220022f01f0023b01ac02200220022d00da023a00ea01200220022f01d8023b01e801200241e4016a41026a20342d00003a0000200220022f01d4023b01e401200241e0016a41026a20352d00003a0000200220022f01d0023b01e001200241dc016a41026a20362d00003a0000200220022f01cc023b01dc01200220022d00ca023a00da01200220022f01c8023b01d801200241d4016a41026a20372d00003a0000200220022f01c4023b01d401200241d0016a41026a20382d00003a0000200220022f01c0023b01d001200241cc016a41026a20392d00003a0000200220022f01bc023b01cc01200241c8016a41026a203a2d00003a0000200220022f01b8023b01c801200241c4016a41026a203b2d00003a0000200220022f01b4023b01c401200241c0016a41026a203c2d00003a0000200220022f01b0023b01c001200241bc016a41026a203d2d00003a0000200220022f01ac023b01bc01200220022d00aa023a00ba01200220022f01a8023b01b801200241b4016a41026a202e2d00003a0000200220022f01a4023b01b401200241b0016a41026a20312d00003a0000200220022f01a0023b01b001200241ac016a41026a20092d00003a0000200220022f019c023b01ac01200220022d009a023a00aa01200220022f0198023b01a801200241a4016a41026a202f2d00003a0000200220022f0194023b01a401200241a0016a41026a20302d00003a0000200220022f0190023b01a0012002419c016a41026a20272d00003a0000200220022f018c023b019c0120024198016a41026a20282d00003a0000200220022f0188023b01980120024194016a41026a20292d00003a0000200220022f0184023b01940120024190016a41026a20032d00003a0000200220022f0180023b0190012002418c016a41026a20262d00003a0000200220022f01fc013b018c01200220022d00fa013a008a01200220022f01f8013b01880120024184016a41026a202d2d00003a0000200220022f01f4013b01840120024180016a41026a20322d00003a0000200220022f01f0013b018001200241fc006a41026a20332d00003a0000200220022f01ec013b017c202a421888a721034200212a0c010b2001280200220328020422044108490d012003280200220529000021082003200441786a3602042003200541086a36020041002104200241003602e004200241e0046a41047221090340200128020022032802042205450d02200328020022072d0000210a20032005417f6a3602042003200741016a360200200920046a200a3a00002002200441016a22033602e0042003210420034120470d000b200241ec056a41026a2204200241ed046a2d00003a0000200241e8056a41026a2205200241f4046a2d00003a0000200220022f01e4043b01b804200220022d00e6043a00ba042002200241eb046a22132f00003b01ec052002200241f2046a22142f01003b01e805200241ee046a280100210b20022800e704210c200241f5046a280000210d200241f9046a22162800002103200241e4056a41026a220a200241ff046a22172d00003a00002002200241fd046a2f00003b01e40520024180056a2218280200210e200220022d00ba043a00d605200220022f01b8043b01d405200220042d00003a00e205200220022f01ec053b01e005200241dc056a41026a220720052d00003a0000200220033602c004200220022f01e8053b01dc05200241c6046a200a2d00003a0000200220022f01e4053b01c404200241d8056a41026a220a20022d00c2043a0000200220033b01d80520022800c304210f200241d0056a41026a220320022d00e2053a0000200220022f01e0053b01d005200241cc056a41026a220920072d00003a0000200220022f01dc053b01cc05200241c8056a41026a2215200a2d00003a0000200220022f01d8053b01c805200220022d00d6053a00fe03200220022f01d4053b01fc03200241f8036a41026a221020032d00003a0000200220022f01d0053b01f803200241f4036a41026a221120092d00003a0000200220022f01cc053b01f403200241f0036a41026a221220152d00003a0000200220022f01c8053b01f003200241b4046a41026a20022d00fe033a0000200220022f01fc033b01b404200241b0046a41026a20102d00003a0000200220022f01f8033b01b004200241ac046a41026a20112d00003a0000200220022f01f4033b01ac04200241a8046a41026a20122d00003a0000200220022f01f0033b01a804200241e0046a200110fa0520022802e0044101460d01200241b8046a41026a200241f1046a221d2d00003a00002004200241f8046a22202d00003a0000200520172d00003a0000200220022f00ef043b01b804200220022f01f6043b01ec05200220022f00fd043b01e8052002200241e8046a22042f01003b01c0042002200241ea046a22052d00003a00c20420132800002111201428010021102016280000211220022802e4042116200241e0056a41026a20024191056a22212d00003a0000200720024198056a22222d00003a0000200a2002419f056a22072d00003a0000200220024188056a220a2f01003b01e40520022002418a056a22232d00003a00e605200220022f008f053b01e005200220022f0196053b01dc05200220022f009d053b01d80520024184056a222b2802002113201828020021142002418b056a2226280000211720024192056a2227280100211820024199056a222828000021192003200241ad056a22292d00003a00002009200241b4056a22032d00003a00002015200241bb056a22092d00003a00002002200241a6056a222d2d00003a00d6052002200241a4056a222e2f01003b01d405200220022f00ab053b01d005200220022f01b2053b01cc05200220022f00b9053b01c805200241a0056a222f2802002115200241a7056a2230280000211a200241ae056a2231280100211b200241b5056a2232280000211c200241c0056a2233290300211e200241bc056a2234280200211f200241e0046a200110fa0520022802e0044101460d01200241d4046a41026a2235201d2d00003a0000200241d0046a41026a223620202d00003a0000200241d4036a41026a2237200241ff046a2d00003a0000200220022f00ef043b01d404200220022f01f6043b01d004200220022f00fd043b01d403200220042f01003b01d804200220052d00003a00da04200241eb046a2800002120200241f2046a280100211d200241f9046a280000212420022802e4042125200241cc036a41026a223820212d00003a0000200241c8036a41026a223920222d00003a0000200241c4036a41026a223a20072d00003a0000200220232d00003a00d2032002200a2f01003b01d003200220022f008f053b01cc03200220022f0196053b01c803200220022f009d053b01c403202b280200212120024180056a2802002122202628000021012027280100210420282800002105202f28020021072002202d2d00003a00c2032002202e2f01003b01c0032030280000210a200241bc036a41026a222620292d00003a0000200220022f00ab053b01bc0320312801002123200241b8036a41026a222720032d00003a0000200220022f01b2053b01b8032032280000212b200241b4036a41026a222820092d00003a0000200220022f00b9053b01b4032033290300212c203428020021032002200241b4046a41026a2d00003a00ea02200220022f01b4043b01e802200241e4026a41026a2209200241b0046a41026a2d00003a0000200220022f01b0043b01e402200241e0026a41026a2229200241ac046a41026a2d00003a0000200220022f01ac043b01e002200241dc026a41026a222d200241a8046a41026a2d00003a0000200220022f01a8043b01dc02200220022d00c2043a00a604200220022f01c0043b01a404200241a0046a41026a222e200241b8046a41026a2d00003a0000200220022f01b8043b01a0042002419c046a41026a222f200241ec056a41026a2d00003a0000200220022f01ec053b019c0420024198046a41026a2230200241e8056a41026a2d00003a0000200220022f01e8053b019804200220022d00e6053a009604200220022f01e4053b01940420024190046a41026a2231200241e0056a41026a2d00003a0000200220022f01e0053b0190042002418c046a41026a2232200241dc056a41026a2d00003a0000200220022f01dc053b018c0420024188046a41026a2233200241d8056a41026a2d00003a0000200220022f01d8053b018804200220022d00d6053a008204200220022f01d4053b018004200241ec036a41026a2234200241d0056a41026a2d00003a0000200220022f01d0053b01ec03200241e8036a41026a223b200241cc056a41026a2d00003a0000200220022f01cc053b01e803200241e4036a41026a223c200241c8056a41026a2d00003a0000200220022f01c8053b01e403200220022d00da043a00e203200220022f01d8043b01e003200241dc036a41026a223d20352d00003a0000200220022f01d4043b01dc03200241d8036a41026a223520362d00003a0000200220022f01d0043b01d803200220022d00ea023a00b203200220022f01e8023b01b003200241ac036a41026a223620092d00003a0000200220022f01e4023b01ac03200241a8036a41026a220920292d00003a0000200220022f01e0023b01a803200241a4036a41026a2229202d2d00003a0000200220022f01dc023b01a403200220022d00a6043a00ea01200220022f01a4043b01e801200241e4016a41026a202e2d00003a0000200220022f01a0043b01e401200241e0016a41026a202f2d00003a0000200220022f019c043b01e001200241dc016a41026a20302d00003a0000200220022f0198043b01dc01200220022d0096043a00da01200220022f0194043b01d801200241d4016a41026a20312d00003a0000200220022f0190043b01d401200241d0016a41026a20322d00003a0000200220022f018c043b01d001200241cc016a41026a20332d00003a0000200220022f0188043b01cc01200241c8016a41026a20022d0082043a0000200220022f0180043b01c801200241c4016a41026a20342d00003a0000200220022f01ec033b01c401200241c0016a41026a203b2d00003a0000200220022f01e8033b01c001200241bc016a41026a203c2d00003a0000200220022f01e4033b01bc01200220022d00e2033a00ba01200220022f01e0033b01b801200241b4016a41026a203d2d00003a0000200220022f01dc033b01b401200241b0016a41026a20352d00003a0000200220022f01d8033b01b001200241ac016a41026a20372d00003a0000200220022f01d4033b01ac01200220022d00d2033a00aa01200220022f01d0033b01a801200241a4016a41026a20382d00003a0000200220022f01cc033b01a401200241a0016a41026a20392d00003a0000200220022f01c8033b01a0012002419c016a41026a203a2d00003a0000200220022f01c4033b019c0120024198016a41026a20022d00c2033a0000200220022f01c0033b01980120024194016a41026a20262d00003a0000200220022f01bc033b01940120024190016a41026a20272d00003a0000200220022f01b8033b0190012002418c016a41026a20282d00003a0000200220022f01b4033b018c01200220022d00b2033a008a01200220022f01b0033b01880120024184016a41026a20362d00003a0000200220022f01ac033b01840120024180016a41026a20092d00003a0000200220022f01a8033b018001200241fc006a41026a20292d00003a0000200220022f01a4033b017c4201212a0b200241f4006a41026a2209200241e4016a41026a2d00003a0000200241f0006a41026a2226200241e0016a41026a2d00003a0000200241ec006a41026a2227200241dc016a41026a2d00003a0000200220022d00ea013a007a200220022f01e8013b0178200220022f01e4013b0174200220022f01e0013b0170200220022f01dc013b016c200220022d00da013a006a200220022f01d8013b0168200241e4006a41026a2228200241d4016a41026a2d00003a0000200241e0006a41026a2229200241d0016a41026a2d00003a0000200241dc006a41026a222d200241cc016a41026a2d00003a0000200241d8006a41026a222e200241c8016a41026a2d00003a0000200241d4006a41026a222f200241c4016a41026a2d00003a0000200220022f01d4013b0164200220022f01d0013b0160200220022f01cc013b015c200220022f01c8013b0158200220022f01c4013b0154200241d0006a41026a2230200241c0016a41026a2d00003a0000200220022f01c0013b0150200241cc006a41026a2231200241bc016a41026a2d00003a0000200220022f01bc013b014c200220022d00ba013a004a200220022f01b8013b0148200241c4006a41026a2232200241b4016a41026a2d00003a0000200220022f01b4013b0144200241c0006a41026a2233200241b0016a41026a2d00003a0000200220022f01b0013b01402002413c6a41026a2234200241ac016a41026a2d00003a0000200220022f01ac013b013c200220022d00aa013a003a200220022f01a8013b0138200241346a41026a2235200241a4016a41026a2d00003a0000200220022f01a4013b0134200241306a41026a2236200241a0016a41026a2d00003a0000200220022f01a0013b01302002412c6a41026a22372002419c016a41026a2d00003a0000200220022f019c013b012c200241286a41026a223820024198016a41026a2d00003a0000200220022f0198013b0128200241246a41026a223920024194016a41026a2d00003a0000200220022f0194013b0124200241206a41026a223a20024190016a41026a2d00003a0000200220022f0190013b01202002411c6a41026a223b2002418c016a41026a2d00003a0000200220022f018c013b011c200220022d008a013a001a200220022f0188013b0118200241146a41026a223c20024184016a41026a2d00003a0000200220022f0184013b0114200241106a41026a223d20024180016a41026a2d00003a0000200220022f0180013b01102002410c6a41026a223e200241fc006a41026a2d00003a0000200220022f017c3b010c200041186a2016360200200020083703102000202a370308200020063703002000201136001f200020022f01783b011c2000411e6a20022d007a3a000020002010360126200020022f01743b0023200041256a20092d00003a0000200020022f01703b012a2000412c6a20262d00003a00002000201236002d200041336a20272d00003a0000200020022f016c3b0031200041386a2013360200200020143602342000413e6a20022d006a3a0000200020022f01683b013c2000201736003f200041c5006a20282d00003a0000200020022f01643b004320002018360046200041cc006a20292d00003a0000200020022f01603b004a2000201936004d200041d3006a202d2d00003a0000200020022f015c3b005120002015360054200041da006a202e2d00003a0000200041d8006a20022f01583b00002000201a36005b200041e1006a202f2d00003a0000200020022f01543b005f2000201b360062200041e8006a20302d00003a0000200020022f01503b00662000201c360069200041ef006a20312d00003a0000200020022f014c3b006d2000202536027c2000201e370074200041f0006a201f36000020004182016a20022d004a3a000020004180016a20022f01483b010020004183016a202036000020004189016a20322d00003a0000200020022f01443b0087012000418a016a201d36010020004190016a20332d00003a0000200020022f01403b018e0120004191016a202436000020004197016a20342d00003a0000200020022f013c3b0095012000419c016a202136020020004198016a2022360200200041a2016a20022d003a3a0000200041a0016a20022f01383b0100200041a3016a2001360000200041a9016a20352d00003a0000200020022f01343b00a701200020043600aa01200041b0016a20362d00003a0000200020022f01303b00ae01200020053600b101200041b7016a20372d00003a0000200020022f012c3b00b501200041b8016a2007360000200041be016a20382d00003a0000200020022f01283b00bc012000200a3600bf01200041c5016a20392d00003a0000200020022f01243b00c301200020233600c601200041cc016a203a2d00003a0000200020022f01203b00ca012000202b3600cd01200041d3016a203b2d00003a0000200020022f011c3b00d101200041d8016a202c370000200020033600d401200041e2016a20022d001a3a0000200041e0016a20022f01183b0100200041e3016a200c360000200041e9016a203c2d00003a0000200020022f01143b00e7012000200b3600ea01200041f0016a203d2d00003a0000200020022f01103b00ee012000200d3600f101200041f7016a203e2d00003a0000200020022f010c3b00f5012000200e3600fc01200041f8016a200f3600000c040b200042023703080c030b2002200a3a00c00441ac97ca00412b200241c0046a41d8b2c70041e4f3c9001041000b41fdefc900411b4198f0c900103c000b200042023703080b200241f0056a24000bbc92010f067f017e117f017e127f027e4c7f017e1d7f017e0b7f017e127f027e357f230041f0076b2202240002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060d02200241206a200110ab0120022802200d0620022802242207200128020028020441d0006e2203200320074b1bad42d0007e2208422088a70d042008a72203417f4c0d040240024020030d00410421090c010b2003102f2209450d040b2001200128020441016a2204360204200341d0006e210a200420012802084b0d05024002400240024002400240024020070d00410021070c010b20024188026a410472210b20024188026a41356a220c41076a210d200241b8026a210e200241b1026a210f200241aa026a2110200241a3026a21112002419c026a211220024195026a21134100211441002115034020024188026a200110b00402400240024002402002280288022216450d00200229028c02210802402001280200220328020422044104490d00201541016a211720032802002205280000211820032004417c6a3602042003200541046a3602004100210420024100360288020340200128020022032802042205450d01200328020022062d0000211920032005417f6a3602042003200641016a360200200b20046a20193a00002002200441016a22033602880220032104200341c000470d000b2002200c290000221a3703e0072002200d2900003700e7072016450d0120022d008e02210420022f018c022105200e2d0000210620022f01b6022119200f2d0000211b20022f00af02211c20102d0000211d20022f01a802211e20112d0000211f20022f00a102212020122d0000212120022f019a02212220132d0000212320022f0093022124200228008f0221252002280196022126200228009d02212720022802a402212820022800ab02212920022801b202212a20022800b902212b20022800e307212c20022900e707212d2015200a470d0420154101742203201541016a220a2003200a4b1b22034104200341044b1bad42d0007e222e422088a7454102742103202ea7210a20150d0220024100360288020c030b2008428080808010540d00201610310b2015450d0f200921010340200128020021030240200141086a22042802002205450d00200310310b2001200336020020042005360200200141d0006a2101201441b07f6a22140d000c100b0b200241043602900220022009360288022002201541d0006c36028c020b200241e0076a200a200320024188026a104e20022802e807210320022802e0074101460d0320022802e4072109200341d0006e210a0b2009201541d0006c6a2203201aa722153b00412003201920064110747222063b003a2003201c201b4110747222193b00332003201e201d41107472221b3b002c20032020201f41107472221c3b002520032022202141107472221d3b001e20032024202341107472221e3b00172003200520044110747222043b01102003202d3700482003202c3600442003202b36003d2003202a3600362003202936002f20032028360028200320273600212003202636001a200320253600132003201836020c2003200837020420032016360200200341c3006a20154110763a00002003413c6a20064110763a0000200341356a20194110763a00002003412e6a201b4110763a0000200341276a201c4110763a0000200341206a201d4110763a0000200341196a201e4110763a0000200341126a20044110763a0000201441d0006a21142017211520172007470d000b200128020421040b20012004417f6a3602042009450d0b200241186a200110ab0120022802180d03200228021c222f200128020028020441f4026e22032003202f4b1bad42f4027e2208422088a70d092008a72203417f4c0d0920030d01410421160c020b20030d070c080b2003102f2216450d060b2001200128020441016a2204360204200341f4026e213002400240024002400240200420012802084b0d000240024002400240202f0d004100212f0c010b20024188026a4104722105200241e0076a41086a2131200241c5026a213220024188026a41126a213320024188026a410b6a2134200241e0076a41046a2135200241a5026a213620024188026a41356a213720024188026a41196a223841036a2139200241aa026a213a200241b1026a213b200241b8026a213c200241ab026a213d410021154100210b0340024002402001280200220328020422044104490d0020032802002206280000212920032004417c6a3602042003200641046a3602004100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b200241c8056a41026a2226203441026a222a2d00003a0000200241d4076a41026a2221203341026a222b2d00003a0000200220052f01003b01d8072002200541026a222c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f02213e200228019602213f200228009d02214020022802a8022141200220022d00da073a00c207200220022f01d8073b01c007200241d0076a41026a222220262d00003a0000200220022f01c8053b01d007200241c8076a41026a222720212d00003a0000200220022f01d4073b01c807200241c4076a41026a222320022d00e2073a0000200220022f01e0073b01c40720022800e3072142200241bc076a41026a222820222d00003a0000200220022f01d0073b01bc07200241b8076a41026a222420272d00003a0000200220022f01c8073b01b807200241b4076a41026a222520232d00003a0000200220022f01c4073b01b407200241cc066a41026a224320022d00c2073a0000200220022f01c0073b01cc06200241c8066a41026a224420282d00003a0000200220022f01bc073b01c806200241c4066a41026a224520242d00003a0000200220022f01b8073b01c406200241c0066a41026a224620252d00003a0000200220022f01b4073b01c0064100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f0221472002280196022148200228009d02214920022802a802214a200220022d00da073a00c207200220022f01d8073b01c007202220262d00003a0000200220022f01c8053b01d007202720212d00003a0000200220022f01d4073b01c807202320022d00e2073a0000200220022f01e0073b01c40720022800e307214b202820222d00003a0000200220022f01d0073b01bc07202420272d00003a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b4072002418c076a41026a224c20022d00c2073a0000200220022f01c0073b018c0720024188076a41026a224d20282d00003a0000200220022f01bc073b01880720024184076a41026a224e20242d00003a0000200220022f01b8073b01840720024180076a41026a224f20252d00003a0000200220022f01b4073b018007200241fc066a41026a2203204c2d00003a0000200220022f018c073b01fc06200241f8066a41026a2250204d2d00003a0000200220022f0188073b01f806200241f4066a41026a2251204e2d00003a0000200220022f0184073b01f406200241f0066a41026a2252204f2d00003a0000200220022f0180073b01f006200241dc066a41026a225320032d00003a0000200220022f01fc063b01dc06200241d8066a41026a225420502d00003a0000200220022f01f8063b01d806200241d4066a41026a225520512d00003a0000200220022f01f4063b01d406200241d0066a41026a225620522d00003a0000200220022f01f0063b01d0064100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f0221572002280196022158200228009d02215920022802a802215a200220022d00da073a00c207200220022f01d8073b01c007202220262d00003a0000200220022f01c8053b01d007202720212d00003a0000200220022f01d4073b01c807202320022d00e2073a0000200220022f01e0073b01c40720022800e307215b202820222d00003a0000200220022f01d0073b01bc07202420272d00003a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b407204c20022d00c2073a0000200220022f01c0073b018c07204d20282d00003a0000200220022f01bc073b018807204e20242d00003a0000200220022f01b8073b018407204f20252d00003a0000200220022f01b4073b0180074100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f02215c200228019602215d200228009d02215e20022802a802215f200220022d00da073a00c207200220022f01d8073b01c007202220262d00003a0000200220022f01c8053b01d007202720212d00003a0000200220022f01d4073b01c807202320022d00e2073a0000200220022f01e0073b01c40720022800e3072160202820222d00003a0000200220022f01d0073b01bc07202420272d00003a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b4072002419c076a41026a226120022d00c2073a0000200220022f01c0073b019c0720024198076a41026a226220282d00003a0000200220022f01bc073b01980720024194076a41026a226320242d00003a0000200220022f01b8073b01940720024190076a41026a226420252d00003a0000200220022f01b4073b0190074100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f0221652002280196022166200228009d02216720022802a8022168200220022d00da073a00c207200220022f01d8073b01c007202220262d00003a0000200220022f01c8053b01d007202720212d00003a0000200220022f01d4073b01c807202320022d00e2073a0000200220022f01e0073b01c40720022800e3072169202820222d00003a0000200220022f01d0073b01bc07202420272d00003a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b407200241ac076a41026a226a20022d00c2073a0000200220022f01c0073b01ac07200241a8076a41026a226b20282d00003a0000200220022f01bc073b01a807200241a4076a41026a226c20242d00003a0000200220022f01b8073b01a407200241a0076a41026a226d20252d00003a0000200220022f01b4073b01a0074100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a22033602880220032104200341c000470d000b20022037290000222e3703e0072002203741076a2900003700e70720024188026a410d6a226e2d0000210320024188026a41146a226f2d0000210620024188026a411b6a22702d00002119203a2d00002114203b2d00002171203c2d00002172200228008f0221732002280196022174200228009d02217520022802a402217620022800ab02217720022801b202217820022800b902217920022800e307217a20022900e707217b20022f009302217c20022f019a02217d20022f00a102217e20022f01a802217f20022f00af0221800120022f01b60221810120022f018c0221820120022d008e022183014100210420024100360288022082012083014110747221820120810120724110747221722080012071411074722171207f201441107472217f207e201941107472217e207d200641107472217d207c200341107472217c202ea72180010340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f01003b01d407200228008f02218401200228019602218501200228009d0221860120022800a10221032022203641026a2d00003a0000200220362f00003b01d00720022802a802218701200220022d00da073a00be07200220022f01d8073b01bc07200220262d00003a00ca07200220022f01c8053b01c807202320212d00003a0000200220033602e007200220022f01d4073b01c407203541026a20222d00003a0000203520022f01d0073b0000200241c0076a41026a22810120022d00e2073a0000200220033b01c00720022800e307218801202420022d00ca073a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b407200241b0076a41026a2283012081012d00003a0000200220022f01c0073b01b007200220022d00be073a00ee06200220022f01bc073b01ec06200241e8066a41026a22890120242d00003a0000200220022f01b8073b01e806200241e4066a41026a228a0120252d00003a0000200220022f01b4073b01e406200241e0066a41026a228b012083012d00003a0000200220022f01b0073b01e0064100210420024100360288020340200128020022032802042206450d01200328020022192d0000211420032006417f6a3602042003201941016a360200200520046a20143a00002002200441016a2203360288022003210420034120470d000b2026202a2d00003a00002021202b2d00003a0000200220052f01003b01d8072002202c2d00003a00da07200220342f00003b01c805200220332f00003b01d407200220382800003602e007200220392800003600e307200228008f02218c01200228019602218d01200228009d02218e0120022802a802218f01200220022d00da073a00c207200220022f01d8073b01c007202220262d00003a0000200220022f01c8053b01d007202720212d00003a0000200220022f01d4073b01c807202320022d00e2073a0000200220022f01e0073b01c40720022800e307219001202820222d00003a0000200220022f01d0073b01bc07202420272d00003a0000200220022f01c8073b01b807202520232d00003a0000200220022f01c4073b01b407200220022d00c2073a00de05200220022f01c0073b01dc05200241d8056a41026a220320282d00003a0000200220022f01bc073b01d805200241d4056a41026a220620242d00003a0000200220022f01b8073b01d405200241d0056a41026a221920252d00003a0000200220022f01b4073b01d005200220432d00003a00be06200220022f01cc063b01bc06200241b8066a41026a221420442d00003a0000200220022f01c8063b01b806200241b4066a41026a222620452d00003a0000200220022f01c4063b01b406200241b0066a41026a222820462d00003a0000200220022f01c0063b01b006200220532d00003a00ae06200220022f01dc063b01ac06200241a8066a41026a222a20542d00003a0000200220022f01d8063b01a806200241a4066a41026a222b20552d00003a0000200220022f01d4063b01a406200241a0066a41026a222c20562d00003a0000200220022f01d0063b01a0062002204c2d00003a009e06200220022f018c073b019c0620024198066a41026a224c204d2d00003a0000200220022f0188073b01980620024194066a41026a2243204e2d00003a0000200220022f0184073b01940620024190066a41026a2244204f2d00003a0000200220022f0180073b019006200220612d00003a008e06200220022f019c073b018c0620024188066a41026a224520622d00003a0000200220022f0198073b01880620024184066a41026a224620632d00003a0000200220022f0194073b01840620024180066a41026a225320642d00003a0000200220022f0190073b0180062002206a2d00003a00fe05200220022f01ac073b01fc05200241f8056a41026a2254206b2d00003a0000200220022f01a8073b01f805200241f4056a41026a2255206c2d00003a0000200220022f01a4073b01f405200241f0056a41026a2256206d2d00003a0000200220022f01a0073b01f005200220022d00ee063a00ee05200220022f01ec063b01ec05200241e8056a41026a22612089012d00003a0000200220022f01e8063b01e805200241e4056a41026a226a208a012d00003a0000200220022f01e4063b01e405200241e0056a41026a228901208b012d00003a0000200220022f01e0063b01e00520024188026a200110b1042002280288022204450d00200220022f01bc063b01c405200220022d00be063a00c605203d2d000021910120024188026a412e6a2d000021920120372d000021930120022f01be0221940120022800b70221950120022802b00221960120022802ac0221970120022d00a80221980120022802a002218a01200229039802212e200228029402218b01200229028c0221990120022f00a902219a0120022f01b402219b0120022f00bb02219c0120022802a402219d01200241c0056a41026a229e0120142d00003a0000200220022f01b8063b01c005200241bc056a41026a229f0120262d00003a0000200220022f01b4063b01bc05200241b8056a41026a22a00120282d00003a0000200220022f01b0063b01b805200220022d00ae063a00b605200220022f01ac063b01b405200241b0056a41026a22a101202a2d00003a0000200220022f01a8063b01b005200241ac056a41026a22a201202b2d00003a0000200220022f01a4063b01ac05200241a8056a41026a222b202c2d00003a0000200220022f01a0063b01a805200220022d009e063a00a605200220022f019c063b01a405200241a0056a41026a222c204c2d00003a0000200220022f0198063b01a0052002419c056a41026a224c20432d00003a0000200220022f0194063b019c0520024198056a41026a224320442d00003a0000200220022f0190063b019805200220022d008e063a009605200220022f018c063b01940520024190056a41026a224420452d00003a0000200220022f0188063b0190052002418c056a41026a224520462d00003a0000200220022f0184063b018c0520024188056a41026a224620532d00003a0000200220022f0180063b018805200220022d00fe053a008605200220022f01fc053b01840520024180056a41026a225320542d00003a0000200220022f01f8053b018005200241fc046a41026a225420552d00003a0000200220022f01f4053b01fc04200241f8046a41026a225520562d00003a0000200220022f01f0053b01f804200220022d00ee053a00f604200220022f01ec053b01f404200241f0046a41026a225620612d00003a0000200220022f01e8053b01f004200241ec046a41026a2261206a2d00003a0000200220022f01e4053b01ec04200241e8046a41026a226a2089012d00003a0000200220022f01e0053b01e804200220022d00de053a00e604200220022f01dc053b01e404200241e0046a41026a22890120032d00003a0000200220022f01d8053b01e004200241dc046a41026a22a30120062d00003a0000200220022f01d4053b01dc04200241d8046a41026a22a40120192d00003a0000200220022f01d0053b01d804200241106a200110ab01024020022802100d002002280214222a200128020028020441c1006e22032003202a4b1bad42c1007e22a501422088a70d1220a501a72203417f4c0d120240024020030d00410121a6010c010b2003102f22a601450d120b2001200128020441016a2206360204200341c1006e2128024002400240200620012802084b0d00024002400240202a0d004100212a0c010b410021a7010340200128020022032802042206450d03200328020022192d0000211420032006417f6a3602042003201941016a3602000240024002402014417f6a0e020001060b4100210620024100360288020340200128020022032802042219450d06200328020022142d0000212620032019417f6a3602042003201441016a360200200520066a20263a00002002200641016a22033602880220032106200341c000470d000b200220322800003602d8072002203241036a2800003600db07206e2d00002103206f2d000021a80120702d000021a901203a2d00002126203b2d00002114203c2d00002119200228008f0221aa0120022801960221ab01200228009d0221ac0120022802a40221ad0120022800ab0221ae0120022801b20221af0120022800b90221b00120022f00930221b10120022f019a0221b20120022f00a10221b30120022f01a80221b40120022f00af0221b50120022f01b60221b60120022f018c02210620022d008e0221b70120022900bd0221a501203120022802d807360000203141036a20022800db07360000200220a5013703e007200620b70141107472210620b601201941107472211920b501201441107472211420b401202641107472212620b30120a9014110747221a90120b20120a8014110747221a80120b10120034110747221b10120022900e70721b801410021b2010c010b4100210620024100360288020340200128020022032802042219450d05200328020022142d0000212620032019417f6a3602042003201441016a360200200520066a20263a00002002200641016a22033602880220032106200341c000470d000b200220322800003602d8072002203241036a2800003600db07206e2d00002103206f2d000021a80120702d000021a901203a2d00002126203b2d00002114203c2d00002119200228008f0221aa0120022801960221ab01200228009d0221ac0120022802a40221ad0120022800ab0221ae0120022801b20221af0120022800b90221b00120022f00930221b10120022f019a0221b20120022f00a10221b30120022f01a80221b40120022f00af0221b50120022f01b60221b60120022f018c02210620022d008e0221b70120022900bd0221a501203120022802d807360000203141036a20022800db07360000200220a5013703e007200620b70141107472210620b601201941107472211920b501201441107472211420b401202641107472212620b30120a9014110747221a90120b20120a8014110747221a80120b10120034110747221b10120022900e70721b801410121b2010b0240024020a7012028460d00202821b40120a70121030c010b202841016a22032028490d19202841017422b301200320b30120034b1b22034104200341044b1bad42c1007e22b901a7210320b901422088a74521b3010240024020280d0020024100360288020c010b2002410136029002200220a601360288022002202841c1006c36028c020b200241e0076a200320b30120024188026a104e20022802e80721b30120022802e0074101460d0320022802e40721a6012028210320b30141c1006e22b40121280b20a601200341c1006c6a220320a501a722b3013b0032200320193b002b200320143b0024200320263b001d200320a9013b0016200320a8013b000f200320b1013b0008200320063b0001200320b801370039200320a501421888a7360035200320b00136002e200320af01360027200320ae01360020200320ad01360019200320ac01360012200320ab0136000b200320aa01360004200320b2013a0000200341346a20b3014110763a00002003412d6a20194110763a0000200341266a20144110763a00002003411f6a20264110763a0000200341186a20a9014110763a0000200341116a20a8014110763a00002003410a6a20b1014110763a0000200341036a20064110763a000020a70141016a22a701202a470d000b2001280204210620b40121280b20012006417f6a36020420a601450d042002202a3a00cc05200220283602c80520024188026a200110b0042002280288022203450d02209c0120930141107472211e209b0120920141107472211f202a410876211c200241d8076a41026a209e012d00003a00002021209f012d00003a0000202220a0012d00003a0000200220022f01c4053b01e007200220022d00c6053a00e207200220022f01c0053b01d807200220022f01bc053b01d407200220022f01b8053b01d007200229028c02211a202720a1012d00003a0000202320a2012d00003a0000208101202b2d00003a0000200220022d00b6053a008a02200220022f01b4053b018802200220022f01b0053b01c807200220022f01ac053b01c407200220022f01a8053b01c007200220022d00a6053a00be07200220022f01a4053b01bc072024202c2d00003a00002025204c2d00003a000020830120432d00003a0000206b20442d00003a0000200220022f01a0053b01b807200220022f019c053b01b407200220022f0198053b01b007200220022d0096053a00ae07200220022f0194053b01ac07200220022f0190053b01a807206c20452d00003a0000200220022f018c053b01a407206d20462d00003a0000200220022f0188053b01a007200220022d0086053a009e07200220022f0184053b019c07206220532d00003a0000200220022f0180053b019807206320542d00003a0000200220022f01fc043b019407206420552d00003a0000200220022f01f8043b019007200220022d00f6043a008e07200220022f01f4043b018c07204d20562d00003a0000200220022f01f0043b018807204e20612d00003a0000200220022f01ec043b018407204f206a2d00003a0000200220022f01e8043b018007200220022d00e6043a00fe06200220022f01e4043b01fc0620502089012d00003a0000200220022f01e0043b01f806205120a3012d00003a0000200220022f01dc043b01f406205220a4012d00003a0000200220022f01d8043b01f006202841107420a60141107672211d209701411874209a012091014110747241ffffff07717221ba01209d01411074208a014110767221bb01208a01410874202e423888a77221132097014108762120209801411074209d0141107672211b20a6014110742094017221bc01202e421888a721bd0120022800c90521be01202ea72112205a21bf01205b21c001205921c101205821c201205c21c301205d21c401205e21c501206021c601205f21c701206521c801206621c901206721ca01206921cb01206821cc01205721cd01207321ce01204a21cf01204b21d001204921d101204821d201207421d301207521d401207621d501207721d601207821d70120870121d80120880121d90120860121da0120850121db01207921dc01207a21dd01207b2108208c0121de01208d0121df01208e0121e00120900121e101208f0121e20120840121e301204721e4012080012117204121e501204221e601204021e701203f21e801207221182071210c207f210d207e210e207d210f203e21e901207c21102082012111202921ea01200321eb0120950121ec0120960121ed01208b0121ee01209901212d0c060b20b301450d150c140b2028450d02202841c1006c0d010c020b2028450d01202841c1006c450d010b20a60110310b209901a721190240209901422088a72203450d002003410c6c21062004210303400240200341046a280200450d00200328020010310b2003410c6a2103200641746a22060d000b0b02402019450d002019410c6c450d00200410310b0240202e422088a72203450d0020034104742104208b0141086a2103034002402003280200450d002003417c6a28020010310b200341106a2103200441706a22040d000b0b0240202e42ffffffff0083500d00208b0110310b0240208a01450d00209d01450d00208a0110310b209601450d0020970110310b410021040b200241d0046a41026a2203200241d8076a41026a2d00003a0000200241cc046a41026a2206200241d4076a41026a2d00003a0000200241c8046a41026a2219200241d0076a41026a2d00003a0000200220022d00e2073a00d604200220022f01e0073b01d404200220022f01d8073b01d004200220022f01d4073b01cc04200220022f01d0073b01c804200220022d008a023a00c604200220022f0188023b01c404200241c0046a41026a2214200241c8076a41026a2d00003a0000200241bc046a41026a2221200241c4076a41026a2d00003a0000200241b8046a41026a2222200241c0076a41026a2d00003a0000200241b0046a41026a2223200241b8076a41026a2d00003a0000200220022f01c8073b01c004200220022f01c4073b01bc04200220022f01c0073b01b804200220022f01bc073b01b404200220022d00be073a00b604200220022f01b8073b01b004200241ac046a41026a2224200241b4076a41026a2d00003a0000200241a8046a41026a2225200241b0076a41026a2d00003a0000200241a0046a41026a2226200241a8076a41026a2d00003a00002002419c046a41026a2227200241a4076a41026a2d00003a0000200220022f01b4073b01ac04200220022f01b0073b01a804200220022d00ae073a00a604200220022f01ac073b01a404200220022f01a8073b01a004200220022f01a4073b019c0420024198046a41026a2228200241a0076a41026a2d00003a0000200220022f01a0073b019804200220022d009e073a009604200220022f019c073b01940420024190046a41026a222920024198076a41026a2d00003a0000200220022f0198073b0190042002418c046a41026a222a20024194076a41026a2d00003a0000200220022f0194073b018c0420024188046a41026a222b20024190076a41026a2d00003a0000200220022f0190073b018804200220022d008e073a008604200220022f018c073b01840420024180046a41026a222c20024188076a41026a2d00003a0000200220022f0188073b018004200241fc036a41026a224d20024184076a41026a2d00003a0000200220022f0184073b01fc03200241f8036a41026a224e20024180076a41026a2d00003a0000200220022f0180073b01f803200220022d00fe063a00f603200220022f01fc063b01f403200241f0036a41026a224f200241f8066a41026a2d00003a0000200220022f01f8063b01f003200241ec036a41026a224c200241f4066a41026a2d00003a0000200220022f01f4063b01ec03200241e8036a41026a2243200241f0066a41026a2d00003a0000200220022f01f0063b01e8032004450d03200241e0036a41026a224420032d00003a0000200241dc036a41026a224520062d00003a0000200241d8036a41026a220620192d00003a0000200220022d00d6043a00e603200220022f01d4043b01e403200220022f01d0043b01e003200220022f01cc043b01dc03200220022f01c8043b01d803200220022d00c6043a00d603200220022f01c4043b01d403200241d0036a41026a221920142d00003a0000200241cc036a41026a221420212d00003a0000200241c8036a41026a222120222d00003a0000200241c0036a41026a222220232d00003a0000200220022f01c0043b01d003200220022f01bc043b01cc03200220022f01b8043b01c803200220022f01b4043b01c403200220022d00b6043a00c603200220022f01b0043b01c003200241bc036a41026a222320242d00003a0000200241b8036a41026a222420252d00003a0000200241b0036a41026a222520262d00003a0000200241ac036a41026a222620272d00003a0000200220022f01ac043b01bc03200220022f01a8043b01b803200220022d00a6043a00b603200220022f01a4043b01b403200220022f01a0043b01b003200220022f019c043b01ac03200241a8036a41026a222720282d00003a0000200220022f0198043b01a803200220022d0096043a00a603200220022f0194043b01a403200241a0036a41026a222820292d00003a0000200220022f0190043b01a0032002419c036a41026a2229202a2d00003a0000200220022f018c043b019c0320024198036a41026a222a202b2d00003a0000200220022f0188043b019803200220022d0086043a009603200220022f0184043b01940320024190036a41026a222b202c2d00003a0000200220022f0180043b0190032002418c036a41026a222c204d2d00003a0000200220022f01fc033b018c0320024188036a41026a224d204e2d00003a0000200220022f01f8033b018803200220022d00f6033a008603200220022f01f4033b01840320024180036a41026a224e204f2d00003a0000200220022f01f0033b018003200241fc026a41026a224f204c2d00003a0000200220022f01ec033b01fc02200241f8026a41026a224c20432d00003a0000200220022f01e8033b01f8020240200b2030470d00200b4101742203200b41016a2243200320434b1b22034104200341044b1bad42f4027e222e422088a7454102742103202ea7214302400240200b0d0020024100360288020c010b200241043602900220022016360288022002200b41f4026c36028c020b200241e0076a2043200320024188026a104e20022802e807210320022802e0074101460d0320022802e4072116200341f4026e21300b2016200b41f4026c6a220320ea01360200200341066a20022d00e6033a0000200320022f01e4033b01042003410d6a20442d00003a00002003410b6a20022f01e0033b0000200341076a20e9013600002003410e6a20e801360000200341146a20452d00003a0000200341126a20022f01dc033b0000200341156a20e701360000200341196a20022f01d8033b00002003411b6a20062d00003a0000200341206a20e5013600002003411c6a20e601360000200320022f01d4033b0124200341266a20022d00d6033a0000200341276a20e4013600002003412d6a20192d00003a00002003412b6a20022f01d0033b00002003412e6a20d201360000200341346a20142d00003a0000200341326a20022f01cc033b0000200341356a20d1013600002003413b6a20212d00003a0000200341396a20022f01c8033b0000200341c0006a20cf013600002003413c6a20d001360000200341c6006a20022d00c6033a0000200320022f01c4033b0144200341c7006a20cd01360000200341cd006a20222d00003a0000200341cb006a20022f01c0033b0000200341ce006a20c201360000200341d4006a20232d00003a0000200341d2006a20022f01bc033b0000200341d5006a20c101360000200341db006a20242d00003a0000200341d9006a20022f01b8033b0000200341e0006a20bf01360000200341dc006a20c001360000200341e6006a20022d00b6033a0000200320022f01b4033b0164200341e7006a20c301360000200341ed006a20252d00003a0000200341eb006a20022f01b0033b0000200341ee006a20c401360000200341f4006a20262d00003a0000200341f2006a20022f01ac033b0000200341f5006a20c501360000200341fb006a20272d00003a0000200341f9006a20022f01a8033b000020034180016a20c701360000200341fc006a20c60136000020034186016a20022d00a6033a0000200320022f01a4033b01840120034187016a20c8013600002003418d016a20282d00003a00002003418b016a20022f01a0033b00002003418e016a20c90136000020034194016a20292d00003a000020034192016a20022f019c033b000020034195016a20ca013600002003419b016a202a2d00003a000020034199016a20022f0198033b0000200341d7016a20174110763a0000200341d5016a20173b0000200341d0016a20184110763a0000200341ce016a20183b0000200341c9016a200c4110763a0000200341c7016a200c3b0000200341c2016a200d4110763a0000200341c0016a200d3b0000200341bb016a200e4110763a0000200341b9016a200e3b0000200341b4016a200f4110763a0000200341b2016a200f3b0000200341ad016a20104110763a0000200341ab016a20103b0000200341a6016a20114110763a0000200320113b01a401200341d8016a20dd01360000200341d1016a20dc01360000200341ca016a20d701360000200341c3016a20d601360000200341bc016a20d501360000200341b5016a20d401360000200341ae016a20d301360000200341a7016a20ce01360000200341a0016a20cc013600002003419c016a20cb01360000200341e6016a20022d0096033a0000200320022f0194033b01e401200341ed016a202b2d00003a0000200341eb016a20022f0190033b0000200341dc016a2008370000200341f2016a20022f018c033b0000200341f4016a202c2d00003a0000200341e7016a20e301360000200341ee016a20db01360000200341f5016a20da01360000200341f9016a20022f0188033b0000200341fb016a204d2d00003a000020034180026a20d801360000200341fc016a20d90136000020034186026a20022d0086033a0000200320022f0184033b01840220034187026a20de013600002003418d026a204e2d00003a00002003418b026a20022f0180033b00002003418e026a20df0136000020034194026a204f2d00003a000020034192026a20022f01fc023b000020034195026a20e0013600002003419b026a204c2d00003a000020034199026a20022f01f8023b0000200341e7026a201c4110763a0000200341e5026a201c3b0000200341e0026a201d4110763a0000200341de026a201d3b0000200341d9026a201e4110763a0000200341d7026a201e3b0000200341d2026a201f4110763a0000200341d0026a201f3b0000200341cb026a20204110763a0000200341c9026a20203b0000200341c4026a201b4110763a0000200341c2026a201b3b0000200341bd026a20134110763a0000200341bb026a20133b0000200341b6026a20124110763a0000200341b4026a20123b0100200341ec026a201a370000200341e8026a20eb01360000200341e1026a20be01360000200341da026a20bc01360000200341d3026a20ec01360000200341cc026a20ed01360000200341c5026a20ba01360000200341be026a20bb01360000200341b7026a20bd01360000200341b0026a20ee01360200200341a8026a202d370200200320043602a402200341a0026a20e2013600002003419c026a20e101360000201541f4026a2115200b41016a2203210b2003202f470d000b200128020421040b20012004417f6a3602042016450d07200241086a200110ab0120022802080d05200228020c220f200128020028020441306e22032003200f4b1bad42307e2208422088a70d0d2008a72203417f4c0d0d20030d034104210c0c040b2003450d0c0c0b0b200b450d002016210103402001109b02200141f4026a21012015418c7d6a22150d000b0b2030450d04203041f4026c0d030c040b2003102f220c450d080b2001200128020441016a2204360204200341306e210502400240200420012802084b0d000240024002400240200f0d004100210f0c010b20024188026a4104722114200241e0076a41086a214d20024188026a413d6a214e200241e0076a41046a211020024188026a411d6a211120024188026a41126a211220024193026a211320024195026a214f2002419c026a214c200241a3026a2143200241aa026a2144200241b1026a2145410021154100211703402005210b20024100360288022017221841016a211741002104024002400340200128020022032802042205450d01200328020022062d0000211920032005417f6a3602042003200641016a360200201420046a20193a00002002200441016a2203360288022003210420034120470d000b200241c8056a41026a220e201341026a2d00003a0000200241d4076a41026a2204201241026a2d00003a0000200220142f01003b01d8072002201441026a2d00003a00da07200220132f00003b01c805200220122f01003b01d407200228008f0221222002280196022123200228009d02212420022800a1022103200241d0076a41026a2205201141026a2d00003a0000200220112f00003b01d00720022802a8022125200220022d00da073a00be07200220022f01d8073b01bc072002200e2d00003a00ca07200220022f01c8053b01c807200241c4076a41026a220620042d00003a0000200220033602e007200220022f01d4073b01c407201041026a20052d00003a0000201020022f01d0073b0000200241c0076a41026a220420022d00e2073a0000200220033b01c00720022800e3072126200241b8076a41026a220520022d00ca073a0000200220022f01c8073b01b807200241b4076a41026a221920062d00003a0000200220022f01c4073b01b407200241b0076a41026a220620042d00003a0000200220022f01c0073b01b0072001280200220328020421042002418c076a41026a220d20022d00be073a0000200220022f01bc073b018c0720024188076a41026a222120052d00003a0000200220022f01b8073b01880720024184076a41026a220520192d00003a0000200220022f01b4073b01840720024180076a41026a221920062d00003a0000200220022f01b0073b018007200241fc066a41026a2227200d2d00003a0000200220022f018c073b01fc06200241f8066a41026a222820212d00003a0000200220022f0188073b01f806200241f4066a41026a222120052d00003a0000200220022f0184073b01f406200241f0066a41026a222920192d00003a0000200220022f0180073b01f00620044104490d0020032802002205280000212a20032004417c6a3602042003200541046a3602002002200110ab0120022802000d002002280204222b200128020028020441c8006e22032003202b4b1bad42c8007e221a422088a70d10201aa72203417f4c0d100240024020030d00410421040c010b2003102f2204450d100b2001200128020441016a2205360204200341c8006ead211a0240200520012802084b0d0002400240202b450d004100212c0340200128020022032802042205450d03200328020022062d0000211920032005417f6a3602042003200641016a360200024002400240024020190e020001070b200128020022032802042205450d06200328020022062d0000211920032005417f6a3602042003200641016a360200410021bf010240024020190e0404030001080b410221bf010c030b410321bf010c020b200128020022032802042205450d05200328020022062d0000211920032005417f6a3602042003200641016a360200410421bf012019450d010c050b410121bf010b2001280200220328020422054104490d03202c41016a212c2003280200220628000021c00120032005417c6a3602042003200641046a3602004100210520024100360288020340200128020022032802042206450d04200328020022192d0000210d20032006417f6a3602042003201941016a360200201420056a200d3a00002002200541016a22033602880220032105200341c000470d000b2002204e2800003602d8072002204e41036a2800003600db07204f2d00002105204c2d0000210620432d0000211920442d0000210d20452d000021c10120024188026a41306a2d000021c201200228008f0221c30120022801960221c401200228009d0221c50120022802a40221c60120022800ab0221c70120022801b20221c80120022800b90221c90120022f00930221ca0120022f019a0221cb0120022f00a10221cc0120022f01a80221cd0120022f00af0221ce0120022f01b60221cf0120022f018c0221d00120022d008e0221d10120022900bd02212d204d20022802d807360000204d41036a20022800db073600002002202d3703e007200220022f00c80522033b01d0072002200e2d000022d2013a00d20720022900e707217b200220d2013a00ca07200220033b01c8070240201a422088222ea72203201aa7470d00200341016a22d2012003490d15200341017422d30120d20120d20120d301491b22d201410420d20141044b1bad42c8007e222e422088a74541027421d201202ea721d3010240024020030d0020024100360288020c010b200241043602900220022004360288022002200341c8006c36028c020b200241e0076a20d30120d20120024188026a104e20022802e80721d20120022802e0074101460d0320022802e4072104201a422088222ea7210320d20141c8006ead211a0b2004200341c8006c6a220320d00120d1014110747222d0013b0005200320bf013a0004200320c001360200200341386a202da722bf014110763a0000200341366a20bf013b0000200341316a20cf0120c2014110747222bf014110763a00002003412f6a20bf013b00002003412a6a20ce0120c1014110747222bf014110763a0000200341286a20bf013b0000200341236a20cd01200d41107472220d4110763a0000200341216a200d3b00002003411c6a20cc0120194110747222194110763a00002003411a6a20193b0000200341156a20cb0120064110747222064110763a0000200341136a20063b00002003410e6a20ca0120054110747222054110763a00002003410c6a20053b0000200341076a20d0014110763a00002003413d6a207b370000200341396a202d421888a7360000200341326a20c9013600002003412b6a20c801360000200341246a20c7013600002003411d6a20c601360000200341166a20c5013600002003410f6a20c401360000200341086a20c301360000200341c7006a20022d00ca073a0000200341c5006a20022f01c8073b0000202e422086201a42ffffffff0f83844280808080107c211a202c202b470d000b200128020421050b20012005417f6a3602042004450d02200241e8066a41026a220320282d00003a0000200241e4066a41026a220520212d00003a0000200241e0066a41026a220620292d00003a0000200220022f01fc063b01ec06200220022f01f8063b01e806200220022f01f4063b01e406200220022f01f0063b01e006200220272d00003a00ee06200220022d00ee063a008a02200220022f01ec063b018802200241e0076a41026a20032d00003a0000200220022f01e8063b01e007200241d8076a41026a20052d00003a0000200220022f01e4063b01d807200e20062d00003a0000200220022f01e0063b01c805202a211b2022211c2023211d2024211e2026211f20252120201a21080c030b20d201450d110c100b201aa72203450d00200341c8006c450d00200410310b410021040b200241a8076a41026a2203200241e0076a41026a2d00003a0000200241a4076a41026a2205200241d8076a41026a2d00003a0000200241a0076a41026a2206200241c8056a41026a2d00003a0000200220022d008a023a00ae07200220022f0188023b01ac07200220022f01e0073b01a807200220022f01d8073b01a407200220022f01c8053b01a0072004450d0320024198076a41026a221920032d00003a000020024194076a41026a220d20052d00003a000020024190076a41026a220e20062d00003a0000200220022d00ae073a009e07200220022f01ac073b019c07200220022f01a8073b019807200220022f01a4073b019407200220022f01a0073b019007024002402018200b460d00200b21052018210b0c010b200b41016a2203200b490d0f200b41017422052003200520034b1b22034104200341044b1bad42307e221a422088a7454102742103201aa7210502400240200b0d0020024100360288020c010b20024104360290022002200c360288022002200b41306c36028c020b200241e0076a2005200320024188026a104e20022802e807210320022802e0074101460d0320022802e407210c200341306e21050b200c200b41306c6a220320043602042003201b360200200341126a20022d009e073a0000200341106a20022f019c073b01002003411a6a201d360100200341136a201c360000200341196a20192d00003a0000200341176a20022f0198073b0000200341086a2008370200200341206a200d2d00003a00002003411e6a20022f0194073b0100200341216a201e360000200341256a20022f0190073b0000200341276a200e2d00003a00002003412c6a2020360200200341286a201f360200201541306a21152017200f470d000b200128020421040b20012004417f6a360204200c450d0420024188026a200110c603200228028c020d070240200f450d00200f41306c21064100210103400240200c20016a220441086a2802002203450d00200341c8006c450d00200441046a28020010310b2006200141306a2201470d000b0b2005450d04200541306c0d030c040b2003450d0b0c0a0b02402018450d00200c41086a21010340024020012802002203450d00200341c8006c450d002001417c6a28020010310b200141306a2101201541506a22150d000b0b200b21050b2005450d01200541306c450d010b200c10310b0240202f450d00202f41f4026c2103410021010340201620016a109b022003200141f4026a2201470d000b0b2030450d01203041f4026c450d010b201610310b02402007450d00200741d0006c2119410021010340200920016a220328020021040240200341086a22052802002206450d00200410310b20032004360200200520063602002019200141d0006a2201470d000b0b200a450d07200a41d0006c450d07200910310c070b20024198016a20024188026a41f00010bf091a20090d010c060b200041003602000c060b200241286a20024198016a41f00010bf091a200041206a200f3602002000411c6a2005360200200041186a200c360200200041146a202f360200200041106a20303602002000410c6a2016360200200041086a20073602002000200a36020420002009360200200041246a200241286a41f00010bf091a0c050b200041003602000c040b1039000b103b000b200a450d00200a41d0006c450d00200910310b200041003602000b200241f0076a24000bec13010b7f23004190016b2202240002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e020203010b200041043a00000c030b200041043a00000c020b200041033a00000c010b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a360200024002400240024020060e03000102040b4100210420024100360248200241c8006a41047221070340200128020022032802042205450d04200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602482003210420034120470d000b20024180016a41026a2206200241d5006a2d00003a0000200241fc006a41026a2208200241dc006a2d00003a0000200220022f014c3b018401200220022d004e3a0086012002200241d3006a2f00003b0180012002200241da006a2f01003b017c200241d6006a2801002101200228004f2103200241dd006a28000021042002200241e1006a280000360288012002200241e4006a28000036008b01200241e8006a2802002105200220022d0086013a0046200220022f0184013b0144200241f8006a41026a220720062d00003a0000200220022f0180013b0178200241f4006a41026a220920082d00003a0000200220022f017c3b0174200241f0006a41026a220820022d008a013a0000200220022f0188013b0170200228008b012106200241c0006a41026a220a20072d00003a0000200220022f01783b01402002413c6a41026a220720092d00003a0000200220022f01743b013c200241386a41026a220920082d00003a0000200220022f01703b0138200241306a41026a220820022d00463a0000200220022f01443b01302002412c6a41026a220b200a2d00003a0000200220022f01403b012c200241286a41026a220a20072d00003a0000200220022f013c3b0128200241246a41026a220720092d00003a0000200220022f01383b0124200241206a41026a20082d00003a0000200220022f01303b01202002411c6a41026a200b2d00003a0000200220022f012c3b011c200241186a41026a200a2d00003a0000200220022f01283b0118200241146a41026a20072d00003a0000200220022f01243b0114410021080c020b4100210420024100360248200241c8006a41047221070340200128020022032802042205450d03200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602482003210420034120470d000b20024180016a41026a2208200241d5006a2d00003a0000200241fc006a41026a2207200241dc006a2d00003a0000200220022f014c3b018401200220022d004e3a0086012002200241d3006a2f00003b0180012002200241da006a2f01003b017c200241d6006a2801002101200228004f2103200241dd006a2800002104200241e1006a2800002106200241f8006a41026a2209200241e7006a2d00003a00002002200241e5006a2f00003b0178200241e8006a2802002105200220022d0086013a0042200220022f0184013b0140200220082d00003a0076200220022f0180013b0174200241f0006a41026a220820072d00003a00002002200636028801200220022f017c3b01702002418e016a20092d00003a0000200220022f01783b018c01200241c4006a41026a220720022d008a013a0000200220063b0144200228008b0121062002413c6a41026a220920022d00763a0000200220022f01743b013c200241386a41026a220a20082d00003a0000200220022f01703b0138200241346a41026a220820072d00003a0000200220022f01443b0134200241306a41026a220720022d00423a0000200220022f01403b01302002412c6a41026a220b20092d00003a0000200220022f013c3b012c200241286a41026a2209200a2d00003a0000200220022f01383b0128200241246a41026a220a20082d00003a0000200220022f01343b0124200241206a41026a20072d00003a0000200220022f01303b01202002411c6a41026a200b2d00003a0000200220022f012c3b011c200241186a41026a20092d00003a0000200220022f01283b0118200241146a41026a200a2d00003a0000200220022f01243b0114410121080c010b20024100360248410421030340200128020022042802042205450d02200241c8006a20036a200428020022062d00003a000020042005417f6a3602042004200641016a36020020022003417d6a360248200341016a22034125470d000b4102210820024180016a41026a2209200241d5006a2d00003a0000200241fc006a41026a220a200241dc006a2d00003a0000200220022f014c3b018401200220022d004e3a0086012002200241d3006a2f00003b0180012002200241da006a2f01003b017c200241d6006a2801002101200228004f2103200241dd006a2800002104200241e5006a2d0000210b200241e1006a28000021062002200241e6006a2f01003b0134200241e8006a2802002105200241ec006a2d00002107200220022d0086013a0046200220022f0184013b0144200220092d00003a007a200220022f0180013b0178200241f4006a41026a2209200a2d00003a000020022006360288012002200b3a008c01200220022f017c3b0174200220022f01343b008d01200241f0006a41026a220a20022d008a013a0000200220063b0170200228008b012106200241c0006a41026a220b20022d007a3a0000200220022f01783b01402002413c6a41026a220c20092d00003a0000200220022f01743b013c200241386a41026a2209200a2d00003a0000200220022f01703b0138200241206a41026a20022d00463a0000200220022f01443b01202002411c6a41026a200b2d00003a0000200220022f01403b011c200241186a41026a200c2d00003a0000200220022f013c3b0118200241146a41026a20092d00003a0000200220022f01383b01140b200241106a41026a2209200241206a41026a2d00003a00002002410c6a41026a220a2002411c6a41026a2d00003a0000200241086a41026a220b200241186a41026a2d00003a0000200241046a41026a220c200241146a41026a2d00003a0000200220022f01203b0110200220022f011c3b010c200220022f01183b0108200220022f01143b0104200020083a0000200041046a2003360000200020022f01103b0001200041036a20092d00003a00002000410b6a2001360000200041086a20022f010c3b00002000410a6a200a2d00003a0000200041126a20043600002000410f6a20022f01083b0000200041116a200b2d00003a0000200041166a20022f01043b0000200041186a200c2d00003a0000200041216a20073a00002000411d6a2005360000200041196a20063600000c010b200041043a00000b20024190016a24000b902a050f7f017e027f017e027f23004180026b22022400024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e03010203040b200041033a00000c0a0b4100210420024100360270200241f0006a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a220336027020032104200341c000470d000b200220022f01743b0158200220022d00763a005a20022800772103200241fc016a41026a2201200241fd006a2d00003a00002002200241f0006a410b6a2f00003b01fc01200241fe006a2801002104200241f8016a41026a220520024184016a2d00003a00002002200241f0006a41126a2f01003b01f80120024185016a2800002106200241f4016a41026a22082002418b016a2d00003a00002002200241f0006a41196a2f00003b01f4012002418c016a2802002107200241f0016a41026a220920024192016a2d00003a00002002200241f0006a41206a2f01003b01f00120024193016a280000210a200241ec016a41026a220b20024199016a2d00003a00002002200241f0006a41276a2f00003b01ec012002419a016a280100210c200241e8016a41026a220d200241a0016a2d00003a00002002200241f0006a412e6a2f01003b01e801200241a1016a280000210e2002200241ac016a2900003700672002200241f0006a41356a290000370360200220022d005a3a00c601200220022f01583b01c401200241e4016a41026a220f20012d00003a0000200220022f01fc013b01e401200241e0016a41026a220120052d00003a0000200220022f01f8013b01e001200241dc016a41026a220520082d00003a0000200220022f01f4013b01dc01200241d8016a41026a220820092d00003a0000200220022f01f0013b01d801200241d0016a41026a2209200b2d00003a0000200220022f01ec013b01d001200241cc016a41026a220b200d2d00003a0000200220022f01e8013b01cc01200241c8016a41026a220d20022d00623a0000200220022f01603b01c8012002280063211020022900672111200241c0016a41026a2212200f2d00003a0000200220022f01e4013b01c001200241bc016a41026a220f20012d00003a0000200220022f01e0013b01bc01200241d4006a41026a220120052d00003a0000200220022f01dc013b0154200241d0006a41026a220520082d00003a0000200220022f01d8013b0150200241cc006a41026a220820092d00003a0000200220022f01d0013b014c200241c8006a41026a2209200b2d00003a0000200220022f01cc013b0148200241c4006a41026a220b200d2d00003a0000200220022f01c8013b01442002413c6a41026a220d20022d00c6013a0000200220022f01c4013b013c200241386a41026a221320122d00003a0000200220022f01c0013b0138200241346a41026a2212200f2d00003a0000200220022f01bc013b0134200241306a41026a220f20012d00003a0000200220022f01543b01302002412c6a41026a220120052d00003a0000200220022f01503b012c200241286a41026a220520082d00003a0000200220022f014c3b0128200241246a41026a220820092d00003a0000200220022f01483b0124200241206a41026a2209200b2d00003a0000200220022f01443b0120200241c0006a41026a220b200d2d00003a0000200220022f013c3b01402002411c6a41026a220d20132d00003a0000200220022f01383b011c200241186a41026a221320122d00003a0000200220022f01343b0118200241146a41026a2212200f2d00003a0000200220022f01303b0114200241106a41026a220f20012d00003a0000200220022f012c3b01102002410c6a41026a220120052d00003a0000200220022f01283b010c200241086a41026a220520082d00003a0000200220022f01243b0108200241046a41026a220820092d00003a0000200220022f01203b0104200041003a0000200041046a2003360000200020022f01403b0001200041036a200b2d00003a00002000410b6a2004360000200041086a20022f011c3b00002000410a6a200d2d00003a0000200041126a20063600002000410f6a20022f01183b0000200041116a20132d00003a0000200041166a20022f01143b0000200041186a20122d00003a0000200041196a20073600002000411f6a200f2d00003a00002000411d6a20022f01103b0000200041206a200a360000200041266a20012d00003a0000200041246a20022f010c3b0000200041276a200c3600002000412d6a20052d00003a00002000412b6a20022f01083b00002000412e6a200e360000200041346a20082d00003a0000200041326a20022f01043b0000200041396a2011370000200041356a20103600000c0a0b200041033a00000c090b2002410036027041c00021040340200128020022032802042205450d03200328020022062d000021082003200641016a36020020032005417f6a3602042002280270220341c0004f0d04200241f0006a20036a41046a20083a00002002200341016a3602702004417f6a22040d000b200220022f01743b01fc01200220022d00763a00fe0120022800772101200241f8016a41026a2204200241fd006a2d00003a00002002200241f0006a410b6a2f00003b01f801200241fe006a2801002105200241f4016a41026a220620024184016a2d00003a00002002200241f0006a41126a2f01003b01f40120024185016a2800002108200241f0016a41026a2207200241f0006a411b6a2d00003a00002002200241f0006a41196a2f00003b01f0012002418c016a2802002109200220024192016a2d00003a00ee012002200241f0006a41206a2f01003b01ec0120024193016a280000210a200241e8016a41026a220b20024199016a2d00003a00002002200241f0006a41276a2f00003b01e8012002419a016a280100210c200241e4016a41026a220d200241a0016a2d00003a00002002200241f0006a412e6a2f01003b01e401200241f0006a41356a2900002111200241a1016a280000210e2002200241b0016a28000036005b2002200241ad016a2800003602582003413f490d04200241dc016a41026a220320062d00003a0000200241d8016a41026a220620072d00003a0000200220022f01fc013b01c001200220022d00fe013a00c201200220022f01f8013b01e001200220022f01f4013b01dc01200220022f01f0013b01d801200220022d00ee013a00d201200220022f01ec013b01d001200220042d00003a00e201200241e0006a410b6a200228005b360000200241c8016a41026a2204200d2d00003a000020022011370360200241c4016a41026a220720022d00623a000020022002280258360268200220113d01c4012002200b2d00003a00ce01200220022f01e8013b01cc01200220022f01e4013b01c80120022900672114200241bc016a41026a220b20022d00e2013a0000200220022f01e0013b01bc01200241d4006a41026a220d20032d00003a0000200220022f01dc013b0154200241d0006a41026a220320062d00003a0000200220022f01d8013b0150200241cc006a41026a220620022d00d2013a0000200220022f01d0013b014c200241c8006a41026a220f20022d00ce013a0000200220022f01cc013b0148200241c4006a41026a221020042d00003a0000200220022f01c8013b0144200241c0006a41026a220420072d00003a0000200220022f01c4013b01402002413c6a41026a220720022d00c2013a0000200220022f01c0013b013c200241386a41026a2212200b2d00003a0000200220022f01bc013b0138200241346a41026a220b200d2d00003a0000200220022f01543b0134200241306a41026a220d20032d00003a0000200220022f01503b01302002412c6a41026a220320062d00003a0000200220022f014c3b012c200241286a41026a2206200f2d00003a0000200220022f01483b0128200241246a41026a220f20102d00003a0000200220022f01443b0124200241206a41026a221020042d00003a0000200220022f01403b01202002411c6a41026a220420072d00003a0000200220022f013c3b011c200241186a41026a220720122d00003a0000200220022f01383b0118200241146a41026a2212200b2d00003a0000200220022f01343b0114200241106a41026a220b200d2d00003a0000200220022f01303b01102002410c6a41026a220d20032d00003a0000200220022f012c3b010c200241086a41026a220320062d00003a0000200220022f01283b0108200241046a41026a2206200f2d00003a0000200220022f01243b0104200241026a220f20102d00003a0000200220022f01203b0100200041013a0000200041046a2001360000200020022f011c3b0001200041036a20042d00003a00002000410b6a2005360000200041086a20022f01183b00002000410a6a20072d00003a0000200041126a20083600002000410f6a20022f01143b0000200041116a20122d00003a0000200041166a20022f01103b0000200041186a200b2d00003a0000200041196a20093600002000411f6a200d2d00003a00002000411d6a20022f010c3b0000200041206a200a360000200041266a20032d00003a0000200041246a20022f01083b0000200041276a200c3600002000412d6a20062d00003a00002000412b6a20022f01043b00002000412e6a200e360000200041346a200f2d00003a0000200041326a20022f01003b0000200041396a2014370000200041356a20114218883e00000c080b2002410036027041c10021040340200128020022032802042205450d05200328020022062d000021082003200641016a36020020032005417f6a3602042002280270220341c1004f0d06200241f0006a20036a41046a20083a00002002200341016a3602702004417f6a22040d000b200220022f01743b0160200220022d00763a006220022800772101200241d8006a41026a2204200241fd006a2d00003a00002002200241f0006a410b6a2f00003b0158200241fe006a2801002105200241fc016a41026a220620024184016a2d00003a00002002200241f0006a41126a2f01003b01fc0120024185016a2800002108200241f8016a41026a2207200241f0006a411b6a2d00003a00002002200241f0006a41196a2f00003b01f8012002418c016a2802002109200241f4016a41026a220a20024192016a2d00003a00002002200241f0006a41206a2f01003b01f40120024193016a280000210b200241f0016a41026a220c20024199016a2d00003a00002002200241f0006a41276a2f00003b01f0012002419a016a280100210d200241ec016a41026a220e200241a0016a2d00003a00002002200241f0006a412e6a2f01003b01ec01200241a1016a280000210f200241e8016a41026a2210200241a7016a2d00003a00002002200241f0006a41356a2f00003b01e801200241a8016a2802002112200241e4016a41026a2213200241ae016a2d00003a00002002200241f0006a413c6a2f01003b01e401200241af016a28000021152002200241b3016a2f00003b010c200341c000490d06200241e0016a41026a220320042d00003a0000200241dc016a41026a220420062d00003a0000200241d8016a41026a220620072d00003a0000200241d0016a41026a2207200a2d00003a0000200220022d00623a0056200220022f01603b0154200220022f01583b01e001200220022f01fc013b01dc01200220022f01f8013b01d801200220022f01f4013b01d001200241cc016a41026a220a200c2d00003a0000200241c8016a41026a220c200e2d00003a0000200241c4016a41026a220e20102d00003a0000200241c0016a41026a221020132d00003a0000200220022f01f0013b01cc01200220022f01ec013b01c801200220022f01e8013b01c401200220022f01e4013b01c001200220022f010c3b01bc01200241d0006a41026a221320032d00003a0000200241cc006a41026a220320042d00003a0000200241c8006a41026a220420062d00003a0000200220022f01e0013b0150200220022f01dc013b014c200220022f01d8013b0148200241c4006a41026a220620072d00003a0000200220022f01d0013b0144200241c0006a41026a2207200a2d00003a0000200220022f01cc013b01402002413c6a41026a220a200c2d00003a0000200220022f01c8013b013c200241386a41026a220c200e2d00003a0000200220022f01c4013b0138200241346a41026a220e20102d00003a0000200220022f01c0013b0134200220022f01bc013b0108200241306a41026a221020022d00563a0000200220022f01543b01302002412c6a41026a221620132d00003a0000200220022f01503b012c200241286a41026a221320032d00003a0000200220022f014c3b0128200241246a41026a220320042d00003a0000200220022f01483b0124200241206a41026a220420062d00003a0000200220022f01443b01202002411c6a41026a220620072d00003a0000200220022f01403b011c200241186a41026a2207200a2d00003a0000200220022f013c3b0118200241146a41026a220a200c2d00003a0000200220022f01383b0114200241106a41026a220c200e2d00003a0000200220022f01343b0110200220022f01083b0104200041023a0000200041046a2001360000200020022f01303b0001200041036a20102d00003a00002000410b6a2005360000200041086a20022f012c3b00002000410a6a20162d00003a0000200041126a20083600002000410f6a20022f01283b0000200041116a20132d00003a0000200041166a20022f01243b0000200041186a20032d00003a0000200041196a20093600002000411f6a20042d00003a00002000411d6a20022f01203b0000200041206a200b360000200041266a20062d00003a0000200041246a20022f011c3b0000200041276a200d3600002000412d6a20072d00003a00002000412b6a20022f01183b00002000412e6a200f360000200041346a200a2d00003a0000200041326a20022f01143b0000200041356a20123600002000413b6a200c2d00003a0000200041396a20022f01103b00002000413c6a2015360000200041c0006a20022f01043b00000c070b200041033a00000c060b200041033a00000c050b200220083a006041ac97ca00412b200241e0006a41d8b2c70041e4f3c9001041000b41fdefc900411b4198f0c900103c000b200041033a00000c020b200220083a006041ac97ca00412b200241e0006a41d8b2c70041e4f3c9001041000b41fdefc900411b4198f0c900103c000b20024180026a24000bf40a01167f230041a0016b22022400200241086a200110ab01024002402002280208450d00200041003602000c010b0240024002400240024002400240200228020c220320012802002802044105762204200420034b1b22054105742204417f4c0d004101210602402005450d002004102f2206450d030b2001200128020441016a2204360204200420012802084b0d01024020030d00410021030c070b200241d0006a4104722107200241e2006a2108200241db006a2109200241e9006a220a41036a210b4100210c034020024100360250200c220d41016a210c4100210e034020012802002204280204220f450d05200428020022102d000021112004200f417f6a3602042004201041016a3602002007200e6a20113a00002002200e41016a22043602502004210e20044120470d000b20024188016a41026a2204200941026a2d00003a000020024184016a41026a220e200841026a2d00003a0000200220072f01003b018c012002200741026a2d00003a008e01200220092f00003b018801200220082f00003b0184012002200a280000360290012002200b280000360093012002280057210f200228015e21102002280065211120022802702112200220022d008e013a004e200220022f018c013b014c20024180016a41026a221320042d00003a0000200220022f0188013b018001200241fc006a41026a2204200e2d00003a0000200220022f0184013b017c200241f8006a41026a220e20022d0092013a0000200220022f0190013b01782002280093012114200241c8006a41026a221520132d00003a0000200220022f0180013b0148200241c4006a41026a221320042d00003a0000200220022f017c3b0144200241c0006a41026a2204200e2d00003a0000200220022f01783b01402002413c6a41026a220e20022d004e3a0000200220022f014c3b013c200241386a41026a221620152d00003a0000200220022f01483b0138200241346a41026a221520132d00003a0000200220022f01443b0134200241306a41026a221320042d00003a0000200220022f01403b01302002412c6a41026a2204200e2d00003a0000200220022f013c3b012c200241286a41026a220e20162d00003a0000200220022f01383b0128200241246a41026a221620152d00003a0000200220022f01343b0124200241206a41026a221520132d00003a0000200220022f01303b01202002411c6a41026a221320042d00003a0000200220022f012c3b011c200241186a41026a2217200e2d00003a0000200220022f01283b0118200241146a41026a220e20162d00003a0000200220022f01243b0114200241106a41026a221620152d00003a0000200220022f01203b011002400240200d2005470d00200d4101742204200d41016a2205200420054b1b22044104200441044b1b220441ffffff3f7120044621052004410574210402400240200d0d00200241003602500c010b20024101360258200220063602502002200d4105743602540b20024190016a20042005200241d0006a104e20022802980121042002280290014101460d012002280294012106200441057621050b2006200d4105746a220420022f011c3b0000200441026a20132d00003a0000200441096a20172d00003a0000200420022f01183b0007200441106a200e2d00003a0000200420022f01143b000e2004200f3600032004201036000a20042011360011200441176a20162d00003a0000200420022f01103b00152004201236001c20042014360018200c2003460d070c010b0b20040d020b103b000b200041003602000c020b1039000b200041003602000b200541ffffff3f71450d02200610310c020b200128020421040b2000200536020420002006360200200041086a200336020020012004417f6a3602040b200241a0016a24000ba22902117f017e230041d0106b22022400024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e06010203040506070b200041073a00000c0f0b20024190096a200110cb032002280290092207450d082002280294092108200128020022032802042204450d0620024198096a2802002109200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e020100080b41002104200241003602900920024190096a410472210a0340200128020022032802042205450d08200328020022062d0000210b20032005417f6a3602042003200641016a360200200a20046a200b3a00002002200441016a2203360290092003210420034120470d000b200241cc016a41026a22032002419d096a2d00003a0000200241c8016a41026a2206200241a4096a2d00003a0000200220022f0194093b0158200220022d0096093a005a20022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a2801002105200228009709210c200241a5096a28000021042002200241a9096a2800003602d0012002200241ac096a2800003600d301200241b0096a280200210a200220022d005a3a00ba01200220022f01583b01b801200241c4016a41026a220d20032d00003a0000200220022f01cc013b01c401200241c0016a41026a220320062d00003a0000200220022f01c8013b01c001200241bc016a41026a220620022d00d2013a0000200220022f01d0013b01bc0120022800d301210b200241b4016a41026a220e200d2d00003a0000200220022f01c4013b01b401200241b0016a41026a220d20032d00003a0000200220022f01c0013b01b001200241ac016a41026a220320062d00003a0000200220022f01bc013b01ac01200241a8016a41026a20022d00ba013a0000200220022f01b8013b01a801200241a4016a41026a200e2d00003a0000200220022f01b4013b01a401200241a0016a41026a200d2d00003a0000200220022f01b0013b01a0012002419c016a41026a20032d00003a0000200220022f01ac013b019c01410121030b20024198016a41026a2206200241a8016a41026a2d00003a000020024194016a41026a220d200241a4016a41026a2d00003a000020024190016a41026a220e200241a0016a41026a2d00003a00002002418c016a41026a220f2002419c016a41026a2d00003a0000200220022f01a8013b019801200220022f01a4013b019401200220022f01a0013b019001200220022f019c013b018c0102402001280200220128020422104104490d0020012802002211280000211220012010417c6a3602042001201141046a36020020024188016a41026a220120062d00003a0000200241d4006a41026a2206200d2d00003a0000200241d0006a41026a220d200e2d00003a0000200241cc006a41026a220e200f2d00003a0000200220022f0198013b018801200220022f0194013b0154200220022f0190013b0150200220022f018c013b014c200020033a0001200041013a0000200041026a20022f0188013b0000200041046a20012d00003a0000200041056a200c360000200041096a20022f01543b00002000410b6a20062d00003a00002000410c6a2005360000200041106a20022f01503b0000200041126a200d2d00003a0000200041136a20043600002000411e6a200a3600002000411a6a200b360000200041246a2007360100200041286a20083601002000412c6a2009360100200041306a2012360200200041196a200e2d00003a0000200041176a20022f014c3b0000200041226a20022f014a3b01000c0f0b200041073a00000c070b2001200128020441016a220336020402400240200320012802084b0d0020024190096a200110b2012002280290092103200241d0016a20024190096a41047241bc0710bf091a20034123460d0020024190096a200241d0016a41bc0710bf091a41c007102f22040d010c100b200041073a00000c0e0b20042003360200200441046a20024190096a41bc0710bf091a20012001280204417f6a360204200241086a200110ab012002280208450d0c200041073a0000200410fa06200410310c0d0b200241186a200110ab0102400240024020022802180d00200228021c21052001200128020441016a2203360204200320012802084b0d0120024190096a200110b2012002280290092103200241d0016a20024190096a41047241bc0710bf091a20034123460d0120024190096a200241d0016a41bc0710bf091a41c007102f2204450d1020042003360200200441046a20024190096a41bc0710bf091a20012001280204417f6a360204200241106a200110ab0120022802100d0220022802142101200041033a0000200020022f00cc013b00012000410c6a2001360200200041086a2004360200200041046a2005360200200041106a2002290358370300200041036a200241ce016a2d00003a0000200041186a200241d8006a41086a290300370300200041206a200241d8006a41106a290300370300200041286a200241d8006a41186a290300370300200041306a200241d8006a41206a2903003703000c0f0b200041073a00000c0e0b200041073a00000c0d0b200041073a0000200410fa06200410310c0c0b41002104200241003602900920024190096a410472210a0340200128020022032802042205450d07200328020022062d0000210b20032005417f6a3602042003200641016a360200200a20046a200b3a00002002200441016a2203360290092003210420034120470d000b200241c8016a41026a22032002419d096a2d00003a0000200241c4016a41026a2204200241a4096a2d00003a0000200220022f0194093b01cc01200220022d0096093a00ce0120022002419b096a2f00003b01c8012002200241a2096a2f01003b01c4012002419e096a280100210b200228009709210a200241a5096a28000021072002200241a9096a2800003602582002200241ac096a28000036005b200241b0096a2802002108200220022d00ce013a00b601200220022f01cc013b01b401200241c0016a41026a220520032d00003a0000200220022f01c8013b01c001200241bc016a41026a220320042d00003a0000200220022f01c4013b01bc01200241b8016a41026a220420022d005a3a0000200220022f01583b01b801200228005b210c200241b0016a41026a220620052d00003a0000200220022f01c0013b01b001200241ac016a41026a220520032d00003a0000200220022f01bc013b01ac01200241a8016a41026a220320042d00003a0000200220022f01b8013b01a801200241a4016a41026a20022d00b6013a0000200220022f01b4013b01a401200241a0016a41026a20062d00003a0000200220022f01b0013b01a0012002419c016a41026a20052d00003a0000200220022f01ac013b019c0120024198016a41026a20032d00003a0000200220022f01a8013b019801200241206a200110ab01024002400240024020022802200d00200128020022012802042203450d0320022802242106200128020022042d0000210520012003417f6a3602042001200441016a3602004100210120050e020201030b200041073a00000c0e0b410121010b20024194016a41026a2203200241a4016a41026a2d00003a000020024190016a41026a2204200241a0016a41026a2d00003a00002002418c016a41026a22052002419c016a41026a2d00003a000020024188016a41026a220920024198016a41026a2d00003a0000200220022f01a4013b019401200220022f01a0013b019001200220022f019c013b018c01200220022f0198013b018801200041043a0000200041046a200a360000200020022f0194013b0001200041036a20032d00003a00002000410b6a200b360000200041086a20022f0190013b00002000410a6a20042d00003a0000200041126a20073600002000410f6a20022f018c013b0000200041116a20052d00003a0000200041166a20022f0188013b0000200041186a20092d00003a0000200041246a2006360200200041216a20013a00002000411d6a2008360000200041196a200c360000200041306a200241d0016a41086a290300370300200041286a20022903d0013703000c0c0b200041073a00000c0b0b41002104200241003602900920024190096a410472210a0340200128020022032802042205450d07200328020022062d0000210b20032005417f6a3602042003200641016a360200200a20046a200b3a00002002200441016a2203360290092003210420034120470d000b200241cc016a41026a22032002419d096a2d00003a0000200241c8016a41026a2204200241a4096a2d00003a0000200220022f0194093b0158200220022d0096093a005a20022002419b096a2f00003b01cc012002200241a2096a2f01003b01c8012002419e096a280100210b200228009709210a200241a5096a28000021072002200241a9096a2800003602d0012002200241ac096a2800003600d301200241b0096a2802002108200220022d005a3a00ba01200220022f01583b01b801200241c4016a41026a220520032d00003a0000200220022f01cc013b01c401200241c0016a41026a220320042d00003a0000200220022f01c8013b01c001200241bc016a41026a220420022d00d2013a0000200220022f01d0013b01bc0120022800d301210c200241b4016a41026a220620052d00003a0000200220022f01c4013b01b401200241b0016a41026a220520032d00003a0000200220022f01c0013b01b001200241ac016a41026a220320042d00003a0000200220022f01bc013b01ac01200241a8016a41026a20022d00ba013a0000200220022f01b8013b01a801200241a4016a41026a20062d00003a0000200220022f01b4013b01a401200241a0016a41026a20052d00003a0000200220022f01b0013b01a0012002419c016a41026a20032d00003a0000200220022f01ac013b019c01200241c0006a200110ab0120022802400d0720022802442103200241306a200110ae012002290330a70d0820022903382113200241286a200110ab01024020022802280d00200228022c210120024198016a41026a2204200241a8016a41026a2d00003a000020024194016a41026a2205200241a4016a41026a2d00003a000020024190016a41026a2206200241a0016a41026a2d00003a00002002418c016a41026a22092002419c016a41026a2d00003a0000200220022f01a8013b019801200220022f01a4013b019401200220022f01a0013b019001200220022f019c013b018c01200041053a0000200041046a200a360000200020022f0198013b0001200041036a20042d00003a00002000410b6a200b360000200041086a20022f0194013b00002000410a6a20052d00003a0000200041126a20073600002000410f6a20022f0190013b0000200041116a20062d00003a0000200041166a20022f018c013b0000200041186a20092d00003a00002000411d6a2008360000200041196a200c360000200041236a20024188016a41026a2d00003a0000200041216a20022f0088013b0000200041306a2013370300200041286a2001360200200041246a20033602000c0b0b200041073a00000c0a0b41002104200241003602900920024190096a410472210a02400340200128020022032802042205450d01200328020022062d0000210b20032005417f6a3602042003200641016a360200200a20046a200b3a00002002200441016a2203360290092003210420034120470d000b200241c8016a41026a22012002419d096a2d00003a0000200241c4016a41026a2203200241a4096a2d00003a0000200220022f0194093b01cc01200220022d0096093a00ce01200220024190096a410b6a2f00003b01c801200220024190096a41126a2f01003b01c4012002419e096a28010021042002280097092105200241a5096a2800002106200220024190096a41196a2800003602582002200241ac096a28000036005b200241b0096a280200210b200220022d00ce013a00b601200220022f01cc013b01b401200241c0016a41026a220a20012d00003a0000200220022f01c8013b01c001200241bc016a41026a220120032d00003a0000200220022f01c4013b01bc01200241b8016a41026a220320022d005a3a0000200220022f01583b01b801200228005b2107200241b0016a41026a2208200a2d00003a0000200220022f01c0013b01b001200241ac016a41026a220a20012d00003a0000200220022f01bc013b01ac01200241a8016a41026a220120032d00003a0000200220022f01b8013b01a801200241a4016a41026a220320022d00b6013a0000200220022f01b4013b01a401200241a0016a41026a220c20082d00003a0000200220022f01b0013b01a0012002419c016a41026a2208200a2d00003a0000200220022f01ac013b019c0120024198016a41026a220a20012d00003a0000200220022f01a8013b019801200041063a0000200041046a2005360000200020022f01a4013b0001200041036a20032d00003a00002000410b6a2004360000200041086a20022f01a0013b00002000410a6a200c2d00003a0000200041126a20063600002000410f6a20022f019c013b0000200041116a20082d00003a0000200041166a20022f0198013b0000200041186a200a2d00003a00002000411d6a200b360000200041196a2007360000200041306a200241d0016a410f6a290000370000200041296a200241d0016a41086a290000370000200041216a20022900d0013700000c0a0b200041073a00000c090b200041073a00000c080b200041073a00000b200841ffffff3f71450d06200710310c060b200041073a00000c050b200041073a00000c040b200041073a00000c030b200041073a00000c020b200041073a00000c010b200228020c2101200041023a0000200020022f00cc013b0001200041086a2001360200200041046a20043602002000410c6a2002290258370200200041036a200241cc016a41026a2d00003a0000200041146a200241d8006a41086a2902003702002000411c6a200241e8006a290200370200200041246a200241f0006a2902003702002000412c6a200241f8006a290200370200200041346a20024180016a2802003602000b200241d0106a24000f0b1039000bea0401057f230041a00f6b220224000240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e03010203040b200041043b01000c080b2002200110ab0102402002280200450d00200241003602200c070b200241206a2001200228020410b1012002280220450d06200241ea076a200241206a41086a280200360100200220022903203701e207200041013b0100200020022901e007370102200041086a200241e6076a2901003701000c070b02402001280200220328020422044102490d00200328020022052f0000210620032004417e6a3602042003200541026a3602002001200128020441016a220336020402400240200320012802084b0d00200241e0076a200110b20120022802e0072103200241206a200241e0076a41047241bc0710bf091a20034123460d00200241e0076a200241206a41bc0710bf091a41c007102f22040d011039000b200041043b01000c080b20042003360200200441046a200241e0076a41bc0710bf091a200041046a2004360200200020063b0102200041023b010020012001280204417f6a3602040c070b200041043b01000c060b200241086a200110ab012002280208450d01200241003602200c020b200041043b01000c040b200241206a2001200228020c10b10120022802200d010b200041043b01000c020b200241ea076a200241206a41086a280200360100200220022903203701e207200041033b0100200020022901e007370102200041086a200241e6076a2901003701000c010b200041043b01000b200241a00f6a24000bc46f01147f230041b0106b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0a0102030405060708090a0b0b2000410b3a00000c190b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d0f200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b41022109200241ac016a41026a2203200241fd086a2d00003a0000200241a8016a41026a220420024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210a20022800f708210b20024185096a280000210c200220024189096a2800003602b40120022002418c096a2800003600b70120024190096a280200210d200220022d00b2013a009a01200220022f01b0013b019801200241a4016a41026a220520032d00003a0000200220022f01ac013b01a401200241a0016a41026a220320042d00003a0000200220022f01a8013b01a0012002419c016a41026a220420022d00b6013a0000200220022f01b4013b019c0120022800b701210e20024194016a41026a220620052d00003a0000200220022f01a4013b01940120024190016a41026a220520032d00003a0000200220022f01a0013b0190012002418c016a41026a220820042d00003a0000200220022f019c013b018c0120012802002203280204210420024184016a41026a220720022d009a013a0000200220022f0198013b01840120024180016a41026a220f20062d00003a0000200220022f0194013b018001200241fc006a41026a220620052d00003a0000200220022f0190013b017c200241f8006a41026a220520082d00003a0000200220022f018c013b017820024188016a41026a20072d00003a0000200220022f0184013b018801200241f4006a41026a200f2d00003a0000200220022f0180013b0174200241f0006a41026a20062d00003a0000200220022f017c3b0170200241ec006a41026a20052d00003a0000200220022f01783b016c024002402004450d00200328020022052d0000210620032004417f6a3602042003200541016a3602000240024020060e020100020b200128020022032802042204450d01200328020022052d0000210620032004417f6a3602042003200541016a36020041002109024020060e020100020b410121090b2001200128020441016a2203360204200320012802084b0d01200241f0086a200110b20120022802f0082103200241b4016a200241f0086a41047241bc0710bf091a20034123460d01200241f0086a200241b4016a41bc0710bf091a41c007102f2204450d1620042003360200200441046a200241f0086a41bc0710bf091a200241e8006a41026a220320024188016a41026a2d00003a0000200241e4006a41026a2205200241f4006a41026a2d00003a0000200241e0006a41026a2206200241f0006a41026a2d00003a0000200241dc006a41026a2208200241ec006a41026a2d00003a000020012001280204417f6a360204200220022f0188013b0168200220022f01743b0164200220022f01703b0160200220022f016c3b015c200041013a0000200020022f01683b0001200041036a20032d00003a0000200041046a200b360000200041086a20022f01643b00002000410a6a20052d00003a00002000410b6a200a3600002000410f6a20022f01603b0000200041116a20062d00003a0000200041126a200c360000200041166a20022f015c3b0000200041186a20082d00003a0000200041246a2004360200200041216a20093a00002000411d6a200d360000200041196a200e360000200041c0006a2002411c6a41186a290200370200200041386a2002412c6a290200370200200041306a2002411c6a41086a290200370200200041286a200229021c3702000c1a0b2000410b3a00000c190b2000410b3a00000c180b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d0f200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210920022800f708210a20024185096a280000210b20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a40120024190096a280200210c200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a00002002200336021c200220022f01a8013b019c01200241226a20062d00003a0000200220022f01a4013b012020024198016a41026a220520022d001e3a0000200220033b019801200228001f210d20024190016a41026a220620022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220820042d00003a0000200220022f019c013b018c0120024188016a41026a220720052d00003a0000200220022f0198013b01880120012802002203280204210420024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220f20062d00003a0000200220022f0190013b018001200241fc006a41026a220620082d00003a0000200220022f018c013b017c200241f8006a41026a220820072d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a200f2d00003a0000200220022f0180013b0170200241ec006a41026a20062d00003a0000200220022f017c3b016c200241e8006a41026a20082d00003a0000200220022f01783b0168024002402004450d00200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e020100020b410121030b2001280200220128020422044104490d0120012802002205280000210620012004417c6a3602042001200541046a360200200241e4006a41026a2201200241f4006a41026a2d00003a0000200241e0006a41026a2204200241f0006a41026a2d00003a0000200241dc006a41026a2205200241ec006a41026a2d00003a0000200241d8006a41026a2208200241e8006a41026a2d00003a0000200220022f01743b0164200220022f01703b0160200220022f016c3b015c200220022f01683b0158200041023a0000200020022f01643b0001200041036a20012d00003a0000200041046a200a360000200041086a20022f01603b00002000410a6a20042d00003a00002000410b6a20093600002000410f6a20022f015c3b0000200041116a20052d00003a0000200041126a200b360000200041166a20022f01583b0000200041186a20082d00003a0000200041246a2006360200200041216a20033a00002000411d6a200c360000200041196a200d360000200041c0006a200241b4016a41186a290200370200200041386a200241c4016a290200370200200041306a200241b4016a41086a290200370200200041286a20022902b4013702000c190b2000410b3a00000c180b2000410b3a00000c170b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d0f200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210920022800f708210a20024185096a280000210b20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a40120024190096a280200210c200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a00002002200336021c200220022f01a8013b019c01200241226a20062d00003a0000200220022f01a4013b012020024198016a41026a220520022d001e3a0000200220033b019801200228001f210d20024190016a41026a220620022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220820042d00003a0000200220022f019c013b018c0120024188016a41026a220720052d00003a0000200220022f0198013b01880120012802002203280204210420024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220f20062d00003a0000200220022f0190013b018001200241fc006a41026a220620082d00003a0000200220022f018c013b017c200241f8006a41026a220820072d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a200f2d00003a0000200220022f0180013b0170200241ec006a41026a20062d00003a0000200220022f017c3b016c200241e8006a41026a20082d00003a0000200220022f01783b0168024002402004450d00200328020022052d0000210620032004417f6a3602042003200541016a360200410021030240024020060e020100020b410121030b2001280200220128020422044104490d0120012802002205280000210620012004417c6a3602042001200541046a360200200241e4006a41026a2201200241f4006a41026a2d00003a0000200241e0006a41026a2204200241f0006a41026a2d00003a0000200241dc006a41026a2205200241ec006a41026a2d00003a0000200241d8006a41026a2208200241e8006a41026a2d00003a0000200220022f01743b0164200220022f01703b0160200220022f016c3b015c200220022f01683b0158200041033a0000200020022f01643b0001200041036a20012d00003a0000200041046a200a360000200041086a20022f01603b00002000410a6a20042d00003a00002000410b6a20093600002000410f6a20022f015c3b0000200041116a20052d00003a0000200041126a200b360000200041166a20022f01583b0000200041186a20082d00003a0000200041246a2006360200200041216a20033a00002000411d6a200c360000200041196a200d360000200041c0006a200241b4016a41186a290200370200200041386a200241c4016a290200370200200041306a200241b4016a41086a290200370200200041286a20022902b4013702000c180b2000410b3a00000c170b2000410b3a00000c160b200041043a00000c150b200128020022032802042204450d0d200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e0201000f0b410121040b024002402001280200220328020422054104490d0020032802002206280000210820032005417c6a3602042003200641046a3602002001280200220128020422034102490d01200128020022052f0000210620012003417e6a3602042001200541026a360200200041046a2008360200200041026a20063b0100200020043a0001200041053a0000200041086a20022902f008370200200041106a200241f0086a41086a290200370200200041186a200241f0086a41106a290200370200200041206a200241f0086a41186a290200370200200041286a200241f0086a41206a290200370200200041306a200241f0086a41286a290200370200200041386a200241f0086a41306a290200370200200041c0006a200241f0086a41386a2902003702000c160b2000410b3a00000c150b2000410b3a00000c140b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d0e200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210920022800f708210a20024185096a280000210b20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a40120024190096a280200210c200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a00002002200336021c200220022f01a8013b019c01200241226a20062d00003a0000200220022f01a4013b012020024198016a41026a220520022d001e3a0000200220033b019801200228001f210d20024190016a41026a220620022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220820042d00003a0000200220022f019c013b018c0120024188016a41026a220720052d00003a0000200220022f0198013b01880120012802002203280204210420024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220f20062d00003a0000200220022f0190013b018001200241fc006a41026a220620082d00003a0000200220022f018c013b017c200241f8006a41026a220820072d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a200f2d00003a0000200220022f0180013b0170200241ec006a41026a20062d00003a0000200220022f017c3b016c200241e8006a41026a20082d00003a0000200220022f01783b016802400240024002402004450d00200328020022052d0000210620032004417f6a3602042003200541016a360200410021040240024020060e020100020b410121040b2001280200220328020422054102490d01200328020022062f0000210820032005417e6a3602042003200641026a360200200241106a200110ab0120022802100d0220022802142103200241086a200110ab0120022802080d03200228020c2101200241e4006a41026a2205200241f4006a41026a2d00003a0000200241e0006a41026a2206200241f0006a41026a2d00003a0000200241dc006a41026a2207200241ec006a41026a2d00003a0000200241d8006a41026a220f200241e8006a41026a2d00003a0000200220022f01743b0164200220022f01703b0160200220022f016c3b015c200220022f01683b0158200041063a0000200041046a200a360000200020022f01643b0001200041036a20052d00003a00002000410b6a2009360000200041086a20022f01603b00002000410a6a20062d00003a0000200041126a200b3600002000410f6a20022f015c3b0000200041116a20072d00003a0000200041166a20022f01583b0000200041186a200f2d00003a0000200041286a2001360200200041246a2003360200200041226a20083b0100200041216a20043a00002000411d6a200c360000200041196a200d360000200041c4006a200241b4016a41186a2802003602002000413c6a200241c4016a290200370200200041346a200241b4016a41086a2902003702002000412c6a20022902b4013702000c170b2000410b3a00000c160b2000410b3a00000c150b2000410b3a00000c140b2000410b3a00000c130b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d10200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241fb086a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210f20022800f708210920024185096a280000210a20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a401200241f0086a41206a280200210b200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a0000200220033602b401200220022f01a8013b019c01200241ba016a20062d00003a0000200220022f01a4013b01b80120024198016a41026a220520022d00b6013a0000200220033b01980120022800b701210c20024190016a41026a220320022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220620042d00003a0000200220022f019c013b018c0120024188016a41026a220420052d00003a0000200220022f0198013b01880120024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220820032d00003a0000200220022f0190013b018001200241fc006a41026a220320062d00003a0000200220022f018c013b017c200241f8006a41026a220620042d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a20082d00003a0000200220022f0180013b0170200241ec006a41026a20032d00003a0000200220022f017c3b016c200241e8006a41026a20062d00003a0000200220022f01783b016841002104200241003602f008200241f0086a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2201200241fd086a2d00003a0000200241a8016a41026a220320024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac012002200241f0086a41126a2f01003b01a801200241fe086a280100210420022800f708210520024185096a28000021062002200241f0086a41196a2800003602b40120022002418c096a2800003600b70120024190096a2802002108200220022d00b2013a009a01200220022f01b0013b019801200241a4016a41026a220720012d00003a0000200220022f01ac013b01a401200241a0016a41026a220120032d00003a0000200220022f01a8013b01a0012002419c016a41026a220320022d00b6013a0000200220022f01b4013b019c0120022800b701210d20024194016a41026a220e20072d00003a0000200220022f01a4013b01940120024190016a41026a220720012d00003a0000200220022f01a0013b0190012002418c016a41026a220120032d00003a0000200220022f019c013b018c01200241d4006a41026a220320022d009a013a0000200220022f0198013b0154200241d0006a41026a2210200e2d00003a0000200220022f0194013b0150200241cc006a41026a220e20072d00003a0000200220022f0190013b014c200241c8006a41026a220720012d00003a0000200220022f018c013b0148200241e4006a41026a2201200241f4006a41026a2d00003a0000200220022f01743b0164200241e0006a41026a2211200241f0006a41026a2d00003a0000200220022f01703b0160200241dc006a41026a2212200241ec006a41026a2d00003a0000200220022f016c3b015c200241d8006a41026a2213200241e8006a41026a2d00003a0000200220022f01683b0158200041073a0000200041046a2009360000200020022f01643b0001200041036a20012d00003a00002000410b6a200f360000200041086a20022f01603b00002000410a6a20112d00003a0000200041126a200a3600002000410f6a20022f015c3b0000200041116a20122d00003a0000200041166a20022f01583b0000200041186a20132d00003a00002000411d6a200b360000200041196a200c360000200041236a20032d00003a0000200041216a20022f01543b0000200041246a20053600002000412a6a20102d00003a0000200041286a20022f01503b00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f014c3b0000200041326a2006360000200041386a20072d00003a0000200041366a20022f01483b00002000413d6a2008360000200041396a200d360000200041c4006a2002411c6a41036a280000360000200041c1006a200228001c3600000c130b2000410b3a00000c120b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d10200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241fb086a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210f20022800f708210920024185096a280000210a20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a401200241f0086a41206a280200210b200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a0000200220033602b401200220022f01a8013b019c01200241ba016a20062d00003a0000200220022f01a4013b01b80120024198016a41026a220520022d00b6013a0000200220033b01980120022800b701210c20024190016a41026a220320022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220620042d00003a0000200220022f019c013b018c0120024188016a41026a220420052d00003a0000200220022f0198013b01880120024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220820032d00003a0000200220022f0190013b018001200241fc006a41026a220320062d00003a0000200220022f018c013b017c200241f8006a41026a220620042d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a20082d00003a0000200220022f0180013b0170200241ec006a41026a20032d00003a0000200220022f017c3b016c200241e8006a41026a20062d00003a0000200220022f01783b016841002104200241003602f008200241f0086a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2201200241fd086a2d00003a0000200241a8016a41026a220320024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac012002200241f0086a41126a2f01003b01a801200241fe086a280100210420022800f708210520024185096a28000021062002200241f0086a41196a2800003602b40120022002418c096a2800003600b70120024190096a2802002108200220022d00b2013a009a01200220022f01b0013b019801200241a4016a41026a220720012d00003a0000200220022f01ac013b01a401200241a0016a41026a220120032d00003a0000200220022f01a8013b01a0012002419c016a41026a220320022d00b6013a0000200220022f01b4013b019c0120022800b701210d20024194016a41026a220e20072d00003a0000200220022f01a4013b01940120024190016a41026a220720012d00003a0000200220022f01a0013b0190012002418c016a41026a220120032d00003a0000200220022f019c013b018c01200241d4006a41026a220320022d009a013a0000200220022f0198013b0154200241d0006a41026a2210200e2d00003a0000200220022f0194013b0150200241cc006a41026a220e20072d00003a0000200220022f0190013b014c200241c8006a41026a220720012d00003a0000200220022f018c013b0148200241e4006a41026a2201200241f4006a41026a2d00003a0000200220022f01743b0164200241e0006a41026a2211200241f0006a41026a2d00003a0000200220022f01703b0160200241dc006a41026a2212200241ec006a41026a2d00003a0000200220022f016c3b015c200241d8006a41026a2213200241e8006a41026a2d00003a0000200220022f01683b0158200041083a0000200041046a2009360000200020022f01643b0001200041036a20012d00003a00002000410b6a200f360000200041086a20022f01603b00002000410a6a20112d00003a0000200041126a200a3600002000410f6a20022f015c3b0000200041116a20122d00003a0000200041166a20022f01583b0000200041186a20132d00003a00002000411d6a200b360000200041196a200c360000200041236a20032d00003a0000200041216a20022f01543b0000200041246a20053600002000412a6a20102d00003a0000200041286a20022f01503b00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f014c3b0000200041326a2006360000200041386a20072d00003a0000200041366a20022f01483b00002000413d6a2008360000200041396a200d360000200041c4006a2002411c6a41036a280000360000200041c1006a200228001c3600000c120b2000410b3a00000c110b41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d10200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2204200241fd086a2d00003a0000200241a8016a41026a220520024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241fb086a2f00003b01ac01200220024182096a2f01003b01a801200241fe086a280100210f20022800f708210920024185096a280000210a20024189096a2800002103200241a4016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a401200241f0086a41206a280200210b200220022d00b2013a009601200220022f01b0013b019401200220042d00003a00a201200220022f01ac013b01a0012002419c016a41026a220420052d00003a0000200220033602b401200220022f01a8013b019c01200241ba016a20062d00003a0000200220022f01a4013b01b80120024198016a41026a220520022d00b6013a0000200220033b01980120022800b701210c20024190016a41026a220320022d00a2013a0000200220022f01a0013b0190012002418c016a41026a220620042d00003a0000200220022f019c013b018c0120024188016a41026a220420052d00003a0000200220022f0198013b01880120024184016a41026a220520022d0096013a0000200220022f0194013b01840120024180016a41026a220820032d00003a0000200220022f0190013b018001200241fc006a41026a220320062d00003a0000200220022f018c013b017c200241f8006a41026a220620042d00003a0000200220022f0188013b0178200241f4006a41026a20052d00003a0000200220022f0184013b0174200241f0006a41026a20082d00003a0000200220022f0180013b0170200241ec006a41026a20032d00003a0000200220022f017c3b016c200241e8006a41026a20062d00003a0000200220022f01783b016841002104200241003602f008200241f0086a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241ac016a41026a2201200241fd086a2d00003a0000200241a8016a41026a220320024184096a2d00003a0000200220022f01f4083b01b001200220022d00f6083a00b2012002200241f0086a410b6a2f00003b01ac012002200241f0086a41126a2f01003b01a801200241fe086a280100210420022800f708210520024185096a28000021062002200241f0086a41196a2800003602b40120022002418c096a2800003600b70120024190096a2802002108200220022d00b2013a009a01200220022f01b0013b019801200241a4016a41026a220720012d00003a0000200220022f01ac013b01a401200241a0016a41026a220120032d00003a0000200220022f01a8013b01a0012002419c016a41026a220320022d00b6013a0000200220022f01b4013b019c0120022800b701210d20024194016a41026a220e20072d00003a0000200220022f01a4013b01940120024190016a41026a220720012d00003a0000200220022f01a0013b0190012002418c016a41026a220120032d00003a0000200220022f019c013b018c01200241d4006a41026a220320022d009a013a0000200220022f0198013b0154200241d0006a41026a2210200e2d00003a0000200220022f0194013b0150200241cc006a41026a220e20072d00003a0000200220022f0190013b014c200241c8006a41026a220720012d00003a0000200220022f018c013b0148200241e4006a41026a2201200241f4006a41026a2d00003a0000200220022f01743b0164200241e0006a41026a2211200241f0006a41026a2d00003a0000200220022f01703b0160200241dc006a41026a2212200241ec006a41026a2d00003a0000200220022f016c3b015c200241d8006a41026a2213200241e8006a41026a2d00003a0000200220022f01683b0158200041093a0000200041046a2009360000200020022f01643b0001200041036a20012d00003a00002000410b6a200f360000200041086a20022f01603b00002000410a6a20112d00003a0000200041126a200a3600002000410f6a20022f015c3b0000200041116a20122d00003a0000200041166a20022f01583b0000200041186a20132d00003a00002000411d6a200b360000200041196a200c360000200041236a20032d00003a0000200041216a20022f01543b0000200041246a20053600002000412a6a20102d00003a0000200041286a20022f01503b00002000412b6a2004360000200041316a200e2d00003a00002000412f6a20022f014c3b0000200041326a2006360000200041386a20072d00003a0000200041366a20022f01483b00002000413d6a2008360000200041396a200d360000200041c4006a2002411c6a41036a280000360000200041c1006a200228001c3600000c110b2000410b3a00000c100b41002104200241003602f008200241f0086a410472210702400340200128020022032802042205450d01200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b200241b0016a41026a2204200241fd086a2d00003a0000200241ac016a41026a220520024184096a2d00003a0000200220022f01f4083b011c200220022d00f6083a001e2002200241fb086a2f00003b01b001200220024182096a2f01003b01ac01200241fe086a280100210f20022800f708210920024185096a280000210a20024189096a2800002103200241a8016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a801200241f0086a41206a280200210b200220022d001e3a009a01200220022f011c3b019801200220042d00003a00a601200220022f01b0013b01a401200241a0016a41026a220420052d00003a0000200220033602b401200220022f01ac013b01a001200241ba016a20062d00003a0000200220022f01a8013b01b8012002419c016a41026a220520022d00b6013a0000200220033b019c0120022800b701210c20024194016a41026a220320022d00a6013a0000200220022f01a4013b01940120024190016a41026a220620042d00003a0000200220022f01a0013b0190012002418c016a41026a220420052d00003a0000200220022f019c013b018c0120024184016a41026a220520022d009a013a0000200220022f0198013b01840120024180016a41026a220820032d00003a0000200220022f0194013b018001200241fc006a41026a220320062d00003a0000200220022f0190013b017c200241f8006a41026a220620042d00003a0000200220022f018c013b0178200241e8006a41026a20052d00003a0000200220022f0184013b0168200241e4006a41026a20082d00003a0000200220022f0180013b0164200241e0006a41026a20032d00003a0000200220022f017c3b0160200241dc006a41026a20062d00003a0000200220022f01783b015c41002104200241003602f008200241f0086a41047221070340200128020022032802042205450d0c200328020022062d0000210820032005417f6a3602042003200641016a360200200720046a20083a00002002200441016a22033602f0082003210420034120470d000b4102210e200241b0016a41026a2204200241fd086a2d00003a0000200241ac016a41026a220520024184096a2d00003a0000200220022f01f4083b011c200220022d00f6083a001e2002200241f0086a410b6a2f00003b01b001200220024182096a2f01003b01ac01200241fe086a280100211020022800f708211120024185096a280000211220024189096a2800002103200241a8016a41026a22062002418f096a2d00003a000020022002418d096a2f00003b01a80120024190096a2802002113200220022d001e3a009a01200220022f011c3b019801200220042d00003a00a601200220022f01b0013b01a401200241a0016a41026a220420052d00003a0000200220033602b401200220022f01ac013b01a001200241ba016a20062d00003a0000200220022f01a8013b01b8012002419c016a41026a220520022d00b6013a0000200220033b019c0120022800b701211420024194016a41026a220620022d00a6013a0000200220022f01a4013b01940120024190016a41026a220820042d00003a0000200220022f01a0013b0190012002418c016a41026a220720052d00003a0000200220022f019c013b018c0120012802002203280204210420024184016a41026a220520022d009a013a0000200220022f0198013b01840120024180016a41026a220d20062d00003a0000200220022f0194013b018001200241fc006a41026a220620082d00003a0000200220022f0190013b017c200241f8006a41026a220820072d00003a0000200220022f018c013b017820024188016a41026a20052d00003a0000200220022f0184013b018801200241f4006a41026a200d2d00003a0000200220022f0180013b0174200241f0006a41026a20062d00003a0000200220022f017c3b0170200241ec006a41026a20082d00003a0000200220022f01783b016c2004450d04200328020022052d0000210620032004417f6a3602042003200541016a36020020060e020302040b2000410b3a00000c0f0b2000410b3a00000c0e0b200128020022032802042204450d01200328020022052d0000210620032004417f6a3602042003200541016a3602004100210e024020060e020100020b4101210e0b2001200128020441016a2203360204200320012802084b0d01200241f0086a200110b20120022802f0082103200241b4016a200241f0086a41047241bc0710bf091a20034123460d01200241f0086a200241b4016a41bc0710bf091a41c007102f2204450d0820042003360200200441046a200241f0086a41bc0710bf091a200241d8006a41026a2203200241e8006a41026a2d00003a0000200241d4006a41026a2205200241e4006a41026a2d00003a0000200241d0006a41026a2206200241e0006a41026a2d00003a0000200241cc006a41026a2208200241dc006a41026a2d00003a000020012001280204417f6a360204200220022f01683b0158200220022f01643b0154200220022f01603b0150200220022f015c3b014c200241c8006a41026a220120024188016a41026a2d00003a0000200241c4006a41026a2207200241f4006a41026a2d00003a0000200241c0006a41026a220d200241f0006a41026a2d00003a00002002413c6a41026a2215200241ec006a41026a2d00003a0000200220022f0188013b0148200220022f01743b0144200220022f01703b0140200220022f016c3b013c2000410a3a0000200041046a2009360000200020022f01583b0001200041036a20032d00003a00002000410b6a200f360000200041086a20022f01543b00002000410a6a20052d00003a0000200041126a200a3600002000410f6a20022f01503b0000200041116a20062d00003a0000200041166a20022f014c3b0000200041186a20082d00003a00002000411d6a200b360000200041196a200c360000200041236a20012d00003a0000200041216a20022f01483b0000200041246a20113600002000412a6a20072d00003a0000200041286a20022f01443b00002000412b6a2010360000200041316a200d2d00003a00002000412f6a20022f01403b0000200041326a2012360000200041386a20152d00003a0000200041366a20022f013c3b0000200041c4006a2004360200200041c1006a200e3a00002000413d6a2013360000200041396a20143600000c0c0b2000410b3a00000c0b0b2000410b3a00000c0a0b2000410b3a00000c090b2000410b3a00000c080b2000410b3a00000c070b2000410b3a00000c060b2000410b3a00000c050b2000410b3a00000c040b1039000b2000410b3a00000c020b2000410b3a00000c010b2000410b3a00000b200241b0106a24000b1300200041023602042000419cefc0003602000bb20b040b7f017e037f017e230041d0006b22022400200241086a200110ab01024002402002280208450d00200041013602000c010b200228020c21032001200128020441016a22043602040240024002400240024002400240200420012802084b0d00200241003a00172002420037021c024020030d00200241286a41086a200241186a41086a28020036020020022002290318370328200241286a21040c060b200241c0006a41086a2105200241c9006a2106200241ca006a2107200241cb006a21084100210902400240024003402002410036024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002002200c3a00442002410136024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002002200c3a00452002410236024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002002200c3a00462002410336024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002002200c3a00472002410436024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002005200c3a00002002410536024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002006200c3a00002002410636024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002007200c3a00002002410736024020012802002204280204220a450d022004280200220b2d0000210c2004200a417f6a3602042004200b41016a3602002008200c3a000020024108360240200241286a41086a200528020036020020022002290340220d370328200da74108490d05200229022c210d2002200110ab0120022802000d022001280200220a280204220b20022802042204490d022004417f4c0d060240024020040d004101210c0c010b20041035220c450d082001280200220a280204210b0b200b2004490d01200c200a280200200410bf09210e200a280204220b2004490d08200a200b20046b360204200a200a28020020046a360200200e450d022002200d37032802400240200228021c220f450d00200228021821100c010b41e401102f220f450d0841002110200f4100360200200f41003b018a012002200f36021c200241003602180b200941016a21092004ad22114220862011842111024002400340200f418c016a210a200f2f018a01210c4100210402400340200c2004460d01200241286a200a410810c209220b450d03200441016a2104200a41086a210a200b417f4a0d000b2004417f6a210c0b02402010450d002010417f6a2110200f200c4102746a41e4016a280200210f0c010b0b2002200d3703382002200c3602302002200f36022c200241003602282002200241186a360234200220113702442002200e360240200241286a200241c0006a10d1030c010b200f2004410c6c6a220441086a220a280200210b200a2011370200200441046a220a2802002104200a200e3602002004450d00200b450d00200410310b20092003470d000b20022d00172104200241286a41086a200241186a41086a2802003602002002200229031837032820040d02200241286a21040c080b200c10310b200241013a0017200241286a41086a200241186a41086a280200360200200220022903183703280b200241286a10d203410121040c060b200041013602000c060b41fdefc900411b4198f0c900103c000b103b000b1039000b2004200b419cb4c0001061000b200020042902003702042000410c6a200441086a280200360200410021040b2000200436020020012001280204417f6a3602040b200241d0006a24000b931505017f017e097f017e067f230041e0006b2202240020002902102103200028020821042000280200210520002802042106200241206a41086a2207200141086a2802003602002002200129020037032002400240024020062f018a012201410a4b0d00200241c0006a41086a2007280200360200200220022903203703402006418c016a2107200141016a21080240200441016a220920014b220a0d00200720094103746a200720044103746a20082004417f736a41037410c0091a0b200720044103746a2003370000200241d0006a41086a2205200241c0006a41086a28020036020020022002290340370350200641046a21070240200a0d0020072009410c6c6a20072004410c6c6a200120046b410c6c10c0091a0b20072004410c6c6a22042002290350370200200441086a2005280200360200200620083b018a010c010b410521014100210a02400240200441054f0d0041042101200421070c010b41052107024002402004417b6a0e020201000b200441796a21074101210a410621010c010b410021074101210a0b0240024002400240024002400240024002400240024041e401102f2204450d00200441003b018a0120044100360200200420062f018a01220b2001417f736a22083b018a012006418c016a220c20014103746a290000210d200241d0006a41086a200641046a220e2001410c6c6a220941086a280200360200200220092902003703502008410c4f0d01200b200141016a22096b2008470d022004418c016a200c20094103746a200841037410bf091a200441046a200e2009410c6c6a2008410c6c10bf091a200620013b018a01200241306a41086a200241d0006a41086a220b28020036020020022002290350370330200241c0006a41086a220c200241206a41086a2802003602002002200229032037034020042006200a1b2201418c016a210820012f018a01220941016a210a0240200741016a220e20094b220f0d002008200e4103746a200820074103746a200a2007417f736a41037410c0091a0b200820074103746a2003370000200b200c28020036020020022002290340370350200141046a21080240200f0d002008200e410c6c6a20082007410c6c6a200920076b410c6c10c0091a0b20082007410c6c6a22072002290350370200200741086a200241d0006a41086a220b2802003602002001200a3b018a01200241106a41086a200241306a41086a220f2802002201360200200220022903302203370310200241086a22102001360200200220033703000240024002402006280200220a0d00410021050c010b200d21032004211141002101034020062f0188012108200f20102802003602002002200229030037033020052001470d06200a2f018a01220e410b490d024100210941042106024020084105490d0020082106024002402008417b6a0e020201000b200841796a210841012109410621060c010b4100210841012109410521060b419402102f2204450d03200441003b018a01200441003602002004200a2f018a01220c2006417f736a22013b018a01200a418c016a221220064103746a290000210d200b200a41046a22132006410c6c6a220741086a280200360200200220072902003703502001410c4f0d07200c200641016a22076b2001470d082004418c016a201220074103746a200141037410bf091a200441046a20132007410c6c6a2001410c6c10bf091a200a20063b018a01200241c0006a41086a220c200b2802003602002002200229035037034020042f018a01220141016a21122001410c4f0d09200e20066b22062012470d0a200541016a2105200441e4016a200a20074102746a41e4016a200641027410bf091a4100210602400340200420064102746a41e4016a280200220720063b018801200720043602002006200620014922076a220620014b0d0120070d000b0b200241206a41086a2212200c28020036020020022002290340370320200c200f280200360200200220022903303703402004200a20091b2207418c016a210e20072f018a01220141016a21090240200841016a220620014b22130d00200e20064103746a200e20084103746a2008417f7320096a41037410c0091a0b200e20084103746a2003370000200b200c28020036020020022002290340370350200741046a210c024020130d00200c2006410c6c6a200c2008410c6c6a200120086b410c6c10c0091a0b200c2008410c6c6a220c2002290350370200200c41086a200b280200360200200741e4016a210c0240200841026a220e200141026a22014f0d00200c200e4102746a200c20064102746a2006417f7320016a41027410c0091a0b200c20064102746a2011360200200720093b018a010240200620014f0d00200720084102746a41e8016a2106034020062802002201200841016a22083b01880120012007360200200641046a210620092008470d000b0b2010201228020036020020022002290320370300200a2106200a2802002207210a200d2103200421112005210120070d000b0b200f20102802002206360200200220022903002203370330200241c0006a41086a200636020020022003370340200028020c22012802042207450d0920012802002108419402102f2206450d01200620073602e401200641003b018a0120064100360200200741003b01880120072006360200200120063602042001200841016a360200200241d0006a41086a200241c0006a41086a2802003602002002200229034037035020082005470d0a20062f018a012207410b4f0d0b2006200741016a22083b018a01200620074103746a418c016a200d37000020062007410c6c6a2207410c6a200241d8006a280200360200200741046a2002290350370200200620084102746a41e4016a2004360200200420083b018801200420063602002001200128020841016a3602080c0d0b200241c0006a41086a2205200241306a41086a28020036020020022002290330370340200841016a2106200a418c016a2107200a2f018a01220441016a21090240200420084d22010d00200720064103746a200720084103746a2008417f7320096a41037410c0091a0b200720084103746a2003370000200241d0006a41086a200528020036020020022002290340370350200a41046a2107024020010d0020072006410c6c6a20072008410c6c6a200420086b410c6c10c0091a0b20072008410c6c6a22072002290350370200200741086a200241d0006a41086a280200360200200a41e4016a2107200441026a2105024020010d00200841027420076a41086a200720064102746a2006417f7320056a41027410c0091a0b200720064102746a2011360200200a20093b018a01200620054f0d0b200441016a2107200a2006417f6a22064102746a41e8016a2104034020042802002201200641016a22063b0188012001200a360200200441046a210420072006470d000c0c0b0b1039000b2008410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2001410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2012410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b200028020c2206200628020841016a3602080b200241e0006a24000bc80203047f017e017f200028020421012000410036020402402001450d00024020002802002202450d002002417f6a2102034020012802e40121012002450d012002417f6a21020c000b0b024020002802082203450d004100210003402003417f6a210341012102024002400340200020012f018a01490d010240200128020022040d0020011031410021010c030b20012f0188012100200110312002417f6a2102200421010c000b0b200041016a210420012000410c6c6a220041086a2902002105200041046a2802002106024020024101470d00200421000c010b200120044102746a41e4016a280200210102402002450d000340200241016a220020024f210420012802e40121012000210220040d000b0b410021000b2006450d0202402005a7450d00200610310b20030d000b0b034020012802002102200110312002210120020d000b0b0bbe0607027f017e047f047e017f027e017f230041e0006b22032400200341c0006a200110b702200341206a20032802402204200328024810b80220032902244200200328022022011b210502402003280244450d00200410310b2001410820011b21042005a72106024002402005422088a72201450d00200341086a2207200441106a290300370300200341106a2208200441186a290300370300200341186a2209200441206a290300370300200320042903083703002004290300220a4202510d00200441306a290300210b200441286a290300210c200341206a41186a2009290300370300200341206a41106a2008290300370300200341206a41086a2007290300370300200320032903003703204200210d420021050240200a4201520d00200341c0006a41186a200341206a41186a290300370300200341c0006a41106a200341206a41106a290300370300200341c0006a41086a200341206a41086a290300370300200320032903203703404200200b200341c0006a2002412010c20922071b21054200200c20071b210d0b024020014101460d002004200141386c6a210e200441386a210103402001290300210c200341186a2207200141206a290300370300200341106a2208200141186a290300370300200341086a2209200141106a2903003703002003200141086a290300370300200c4202510d01200141306a290300210f200141286a2903002110200341206a41186a22112007290300370300200341206a41106a22072008290300370300200341206a41086a22082009290300370300200320032903003703204200210b4200210a0240200c4201520d00200341c0006a41186a2011290300370300200341c0006a41106a2007290300370300200341c0006a41086a2008290300370300200320032903203703404200200f200341c0006a2002412010c20922071b210a4200201020071b210b0b2005200a200d200b562005200a562005200a511b22071b2105200d200b20071b210d200141386a2201200e470d000b0b2006450d01200641386c450d01200410310c010b4200210d02402006450d0042002105200641386c450d01200410314200210d0b420021050b2000200d37030020002005370308200341e0006a24000b910202047f017e230041206b22032400024002402002280208220441386c4104722205417f4c0d00200228020021022005102f2206450d012003410036020820032005360204200320063602002003200410cb0102402004450d00200441386c210403400240024020022903004201510d00200341003a00102003200341106a4101107e0c010b200341013a00102003200341106a4101107e2003200241086a4120107e200241286a29030021072003200241306a290300370318200320073703102003200341106a4110107e0b200241386a2102200441486a22040d000b0b20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000f0b103b000b1039000b935809027f017e037f017e027f017e157f037e107f23004190036b220424000240200341186a2802002205ad42247e2206422088a70d002006a72207417f4c0d0020032903082106200341146a2802002108200328021021092003290300210a02400240024020070d004104210b0c010b2007102f220b450d010b024002400240200741246e220c20054f0d00200c41017422032005200320054b1b22034104200341044b1bad42247e220d422088a7454102742103200da7210e02400240200741234b0d00200441003602280c010b200441306a41043602002004200b3602282004200c41246c36022c0b2004200e2003200441286a104e200441086a2802002103024020042802004101460d002004280204210b200341246e210c0c020b20030d030c040b20050d004100210f0c010b2005410574220741606a4105762110200b2103200921050340200441e8026a41186a220e200541186a290000370300200441e8026a41106a2211200541106a290000370300200441e8026a41086a2212200541086a290000370300200420052900003703e802200341013a0000200341016a20042903e802370000200341096a2012290300370000200341116a2011290300370000200341196a200e290300370000200341246a2103200541206a2105200741606a22070d000b201041016a210f0b0240200841ffffff3f71450d00200910310b200441196a200141186a290000370000200441116a200141106a290000370000200441096a200141086a29000037000020042001290000370001200441013a00004130102f2207450d0020072002290200370208200741106a200241086a290200370200200741186a200241106a290200370200200741206a200241186a290200370200200741286a200241206a2802003602002007200a42017c220a420186200a7b7d200a7a427f857c220a370300200442818080801037027420042007360270024002400240024002400240024002400240200642018620067b7d22064201520d00200a500d010b20044180016a20061051200428028801220541016aad42247e2206422088a70d092006a72203417f4c0d090240024020030d00410421120c010b2003102f2212450d090b200b200f41246c6a21132004280280012114200341246ead210a200428028401211520050d01200b21090c020b4124102f2212450d07200741306a2105200441306a2203200741116a290000370300200441386a220e200741196a290000370300200441c0006a2211200741216a290000370300200441c7006a200741286a290000370000200420072900093703280240024020072d000822024102470d00200741306a21034201210a0c010b201220023a000020122004290328370001201241096a2003290300370000201241116a200e290300370000201241196a2011290300370000201241216a200441c8006a2f01003b0000201241236a200441ca006a2d00003a0000428180808010210a200521030b200520036b220541306d210e02402005450d00200e41306c2105200341106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010310b200341306a2103200541506a22050d000b0b200710310c020b201420054103746a2116200441d0016a41116a2117200441286a410f6a2118200441e8026a410f6a2119200441286a41106a210e200441286a41186a2102200441286a411f6a2101200b21092014211a02400240024002400240024003402004280270221141506a2105201a220341086a211a2003290300210d200428027821074100210302400340024020072003470d00200441003602782004410036022c200420073602282004201136023020042011200741306c6a3602342004200441f0006a36023820044190016a200441286a10d6030c020b200341016a2103200541306a2205290300200d580d000b20072003417f6a2208490d022004410036027820042005360234200420113602302004200720036b41016a36022c200420083602282004200441f0006a36023820044190016a200441286a10d6030b02400240024002400240024002400240024020042802980122030e020200010b2004280290012205290300200d520d00200441a0016a41086a2203200541206a290300370300200441a0016a41106a221b200541286a28020036020020044100360298012004200541186a2903003703a001200541146a2802002107200541106a28020021082005410c6a2802002111024002402005280208220541ff017122104101470d00200e201b2d00003a0000200441286a41086a2003290300370300200420042903a0013703282005410876211c4101211b2008211d201121050c010b2007417f4c0d170240024020070d00410121050c010b2007102f2205450d170b20052011200710bf091a4100211b2007211d0b02400240200a422088a72203200aa7470d00200341016a221e2003490d182003410174221f201e201e201f491b221e4104201e41044b1bad42247e2206422088a745410274211e2006a7211f0240024020030d00200441003602e8020c010b200441043602f002200420123602e8022004200341246c3602ec020b200441d0026a201f201e200441e8026a104e20042802d802211e20042802d0024101460d0120042802d4022112200a42808080807083201e41246ead84210a0b2012200341246c6a2203200736000c2003201d360008200320053600042003201c3b00012003201b3a0000200341036a201c4110763a0000200e2d00002105200441286a41086a29030021062004290328210d200341236a200441b8026a41026a2d00003a0000200320042f00b8023b00212003200d370010200341186a2006370000200341206a20053a000020100d032008450d03201110310c030b201e450d160c150b417f20034101200341016a41024b1b677641016a220520034d0d092005ad42307e2206422088a70d152006a72205417f4c0d15200428029001212020042802940121212005102f2208450d142020200341306c221d6a2122200420083602f001200442003703e8012004200541306e22073602f4014100211f410021052020211b02400340201b220341086a2d00002110200441286a41086a2211200341116a290000370300200e200341196a2900003703002002200341216a2900003703002001200341286a2900003700002004200341096a290000370328200341306a211b20104102460d0120032903002106200441e8026a411f6a22032001280000360000200441e8026a41186a221e2002290300370300200441e8026a41106a200e2903002223370300200441e8026a41086a201129030022243703002004200429032822253703e802200120032800003600002002201e290300370300200e2023370300201120243703002004202537032802402007417f6a22032005201f6b712003470d002007417f2022201b6b41306d220341016a221e201e2003491b6a22032007490d0d4100417f2003417f6a677620034102491b221e41016a2203201e490d0d200320074d0d002007211e0240200320076b2203450d00200720036a22032007490d192003ad42307e2223422088a74541037421032023a7211e0240024020070d00200441003602d0020c010b200441083602d802200420083602d0022004200741306c3602d4020b200441b8026a201e2003200441d0026a104e20042802c002210320042802b8024101460d10200420042802bc0222083602f0012004200341306e221e3602f4010b0240201f20054d0d00024020052007201f6b22034f0d002008200741306c6a2008200541306c10bf091a2004200520076a22053602ec010c010b201f41306c21072008201e20036b221f41306c6a200820076a200341306c10bf091a2004201f3602e8010b201e21070b20042802f0012208200541306c6a220320103a0008200320063703002003410036022c20042007417f6a200541016a7122053602ec01200341096a2004290328370000200341116a2011290300370000200341196a200e290300370000200341216a2002290300370000200341286a2001280000360000201d41506a221d0d000b2022211b0b2022201b6b220341306d211002402003450d00201041306c2110201b41106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010310b200341306a2103201041506a22100d000b0b02402021450d00202141306c450d00202010310b20042802e80122032005460d1020042007417f6a200341016a71221d3602e8012008200341306c6a220341146a2800002126200341106a28000021272003410c6a28000021282003290300212320032d00082122200341096a2f000021102003410b6a2d0000211b200441f8016a41086a2229200341206a290000370300200441f8016a41106a222a200341286a2800003602002004200341186a2900003703f80120224102460d102010201b4110747221102003412c6a211b024002400340201b280200211b200441b8026a41106a222b202a280200360200200441b8026a41086a222c2029290300370300200420042903f8013703b80202402023200d520d00200441d0016a41106a202b280200360200200441d0016a41086a202c290300370300200420042903b8023703d001410021032027212d2028212e2026212f0c030b202342027c21060240034002402006500d002006427f857ba72203200679a7460d020b2006427f423f2006797d423f83867c42017c21060c000b0b2003413f732230201b4b21314202201b413f71ad862106024002402007417f6a221e2005201d6b71450d002008450d00202342002006427f7c22247d202420311b7c2008201e201d7141306c6a290300520d002005201d460d102004201e201d41016a7122323602e8012008201d41306c6a220341146a28020021332003410c6a290200212420032d00082120200341096a2f0000211d2003410b6a2d0000211f2011200341206a290300370300200e200341286a2802003602002004200341186a29030037032820204102460d10201d201f411074722134200441d0026a41086a2011290300370300200441d0026a41106a200e280200360200200420042903283703d0022024422088a7211f2024a721212032211d200921320c010b024020092013470d00410021104103210541012103201321320c030b200941246a2132024020092d00004101470d00200941036a2d00002103200928000c21332009280008211f2009280004212120092f0001212020092900102124200441d0026a41106a200941206a2d00003a0000200441d0026a41086a200941186a290000370300200420243703d00220202003411074722134410121200c010b200928020c221f417f4c0d192009280204210302400240201f0d00410121210c010b201f102f2221450d190b20212003201f10bf091a41002120201f21330b024002402030201b4d0d000240024020204101470d00200e200441d0026a41106a2d00003a00002011200441d0026a41086a290300370300200420042903d002370328201f213020212135203421090c010b200441e8026a2021203310d7032011201941086a290000370300200e201941106a2d00003a00002004201929000037032820042f01e80220042d00ea0241107472210920042800f302213320042800ef02213020042800eb0221350b4120102f2203450d19200320093b00002003203336000b20032030360007200320353600032003200429032837000f200341026a20094110763a0000200341176a20112903003700002003411f6a200e2d00003a0000200420033602a802200442a080808080043702ac0202400240202241ff01714101470d00201820042903b802370000201841086a202c290300370000201841106a202b2d00003a0000200420263600332004202736002f2004202836002b200420103b0128200420104110763a002a0c010b200441e8026a2028202610d7032002200441e8026a41186a290300370300200e200441e8026a41106a2903003703002011200441e8026a41086a290300370300200420042903e8023703280b200441a8026a200441286a4120107e200441e8026a20042802a802223020042802b00210d70320044190026a41086a201941086a29000037030020044190026a41106a201941106a2d00003a0000200420192900003703900220042d00ea02411074210320042f01e802211020042800f302213320042800ef02210920042800eb022126024020042802ac02450d00203010310b201020037221100c010b02400240202241ff01714101470d00200e202b2d00003a00002011202c290300370300200420042903b80237032820272109202821300c010b200441e8026a2028202610d7032011201941086a290000370300200e201941106a2d00003a00002004201929000037032820042f01e80220042d00ea0241107472211020042800f302212620042800ef02210920042800eb0221300b4120102f2203450d18200320103b00002003202636000b20032009360007200320303600032003200429032837000f200341026a20104110763a0000200341176a20112903003700002003411f6a200e2d00003a0000200420033602a802200442a080808080043702ac020240024020204101470d00201820042903d002370000201841086a200441d0026a41086a290300370000201841106a200441d0026a41106a2d00003a0000200420333600332004201f36002f2004202136002b200420343b0128200420344110763a002a0c010b200441e8026a2021203310d7032002200441e8026a41186a290300370300200e200441e8026a41106a2903003703002011200441e8026a41086a290300370300200420042903e8023703280b200441a8026a200441286a4120107e200441e8026a20042802a802223020042802b00210d70320044190026a41086a201941086a29000037030020044190026a41106a201941106a2d00003a0000200420192900003703900220042d00ea02411074210320042f01e802211020042800f302213320042800ef02210920042800eb022126024020042802ac02450d00203010310b201020037221100b024020234201200620311b7c2206200d5a0d00201120044190026a41086a290300370300200e20044190026a41106a2d00003a0000200441e8026a41026a22312004418d026a41026a2d00003a00002004200429039002370328200420042f008d023b01e802201b41016a211b02402007201e2005201d6b716b4101470d00200441e8016a10d80320042802f401417f6a211e20042802f001210820042802ec0121050b2004201e200541016a713602ec012008200541306c6a220341146a2033360200200341106a20093602002003410c6a20263602002003410b6a20104110763a0000200341096a20103b0000200341013a000820032006370300200e2d000021052011290300210620042903282123200341296a20042f01e8023b00002003412b6a20312d00003a00002003201b36022c200341186a2023370300200341206a2006370300200341286a20053a0000024020200d00201f450d00202110310b0240202241ff01710d002027450d00202810310b20042802f401210720042802e801220320042802ec012205460d1420042007417f6a200341016a71221d3602e801202920042802f0012208200341306c6a220341206a290000370300202a200341286a2800003602002004200341186a2900003703f801200341096a2f00002003410b6a2d00004110747221102003412c6a211b200341146a2800002126200341106a28000021272003410c6a2800002128200329030021232032210920032d000822224102470d010c140b0b201720042f008d023b0000200441d0016a41106a20044190026a41106a2d00003a0000200441d0016a41086a20044190026a41086a290300370300201741026a2004418d026a41026a2d00003a000020042004290390023703d001410121054100210320200d00201f450d00202110310b0240202241ff01710d002027450d00202810310b2009212d2026212e2033212f20052122203221090b200441e8016a10d90302402007450d00200741306c450d00200810310b200441b8016a41086a2205200441d0016a41086a290300370300200441b8016a41106a2207200441d0016a41106a280200360200200420042903d0013703b80120030d11200441a0016a41106a22032007280200360200200441a0016a41086a22082005290300370300200420042903b8013703a001202241ff017122074101470d03200e20032d00003a000020112008290300370300200420042903a00137032841012108202d211b202e21052010211c0c040b20092013460d0c0240024020092d00004101470d00200941036a2d00002103200928000c2105200928000821112009280004210720092f0001210820092900102106200441a0016a41106a200941206a2d000022103a0000200441a0016a41086a200941186a290000220d370300200420063703a001200441286a41086a200d370300200e20103a0000200420063703282008200341107472211c41012108200721100c010b200928020c2205417f4c0d1520092802042103410121074101211002402005450d002005102f2210450d150b20102003200510bf09210302402005450d002005102f2207450d150b20072003200510bf091a41002108200521110b0240200a422088a72203200aa7470d00200341016a221b2003490d152003410174221d201b201b201d491b221b4104201b41044b1bad42247e2206422088a745410274211b2006a7211d0240024020030d00200441003602e8020c010b200441043602f002200420123602e8022004200341246c3602ec020b200441d0026a201d201b200441e8026a104e20042802d802211b20042802d0024101460d0220042802d4022112200a42808080807083201b41246ead84210a0b2012200341246c6a2203200536000c20032011360008200320073600042003201c3b0001200320083a0000200341036a201c4110763a0000200e2d00002105200441286a41086a29030021062004290328210d200341236a200441b8026a41026a2d00003a0000200320042f00b8023b00212003200d370010200341186a2006370000200341206a20053a000002402008201145720d00201010310b200941246a21090b200428029001210702402004280298012203450d00200341306c2105200741106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010310b200341306a2103200541506a22050d000b0b200a4280808080107c210a2004280294012203450d03200341306c450d03200710310c030b201b450d120c110b202f417f4c0d1102400240202f0d00410121050c010b202f102f2205450d110b2005202e202f10bf091a41002108202f211b0b0240200a422088a72203200aa7470d00200341016a22102003490d112003410174221d20102010201d491b22104104201041044b1bad42247e2206422088a74541027421102006a7211d0240024020030d00200441003602e8020c010b200441043602f002200420123602e8022004200341246c3602ec020b200441d0026a201d2010200441e8026a104e20042802d802211020042802d0024101460d0220042802d4022112200a42808080807083201041246ead84210a0b2012200341246c6a2203202f36000c2003201b360008200320053600042003201c3b0001200320083a0000200341036a201c4110763a0000200e2d00002105201129030021062004290328210d200341236a200441b8026a41026a2d00003a0000200320042f00b8023b00212003200d370010200341186a2006370000200341206a20053a0000024020070d00202d450d00202e10310b200a4280808080107c210a0b201a2016470d010c080b0b2010450d0d0c0c0b2003417f6a200741e0cfc8001058000b41b087ca00411141988cc400103c000b41b087ca00411141a88cc4001068000b418a98ca00412b419491c200103c000b2003450d080c070b02402004280294012203450d00200341306c450d0020042802900110310b201321090b0240201541ffffffff0171450d00201410310b02402004280278450d00410321070c040b024020092013460d00410121070240024020092d00004101470d00200441386a220341003a0000200441306a22024200370300200441ba026a220141003a000020044200370328200441003b01b802200941036a2d00002108200928000c2105200928000821112009280004210e20092f000121102002200941186a2900003703002003200941206a2d00003a0000200120083a000020042009290010370328200420103b01b8020c010b200928020c2205417f4c0d08200928020421030240024020050d004101210e0c010b2005102f220e450d080b200e2003200510bf091a41002107200521110b0240024002400240200a422088a72203200aa7460d00200a21060c010b200341016a22022003490d0a20034101742201200220022001491b22024104200241044b1bad42247e2206422088a74541027421022006a721010240024020030d00200441003602e8020c010b200441f0026a4104360200200420123602e8022004200341246c3602ec020b200441d0026a20012002200441e8026a104e200441d8026a280200210320042802d0024101460d0120042802d4022112200a42808080807083200341246ead842106200a422088a721030b2012200341246c6a220320073a00002003200536000c200320113600082003200e36000441032107200341036a200441b8026a41026a2d00003a0000200320042f01b8023b0001200441386a2d00002105200441306a290300210a2004290328210d200320042f00e8023b00212003200d370010200341186a200a370000200341206a20053a0000200341236a200441e8026a41026a2d00003a000020064280808080107c210a200941246a2013460d010c060b2003450d080c070b20042802782203450d00200341306c2105200428027041106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010310b200341306a2103200541506a22050d000b0b20042802742203450d00200341306c450d00200428027010310b0240200a422088a7220e4102490d00200e41246c20126a415c6a22032d00002109200441e8026a41026a200341036a2d00003a0000200328000421102003280008211e200328000c210820032f00012111200441286a41086a2205200341186a290000370300200441286a41106a2207200341206a280000360200200420113b01e8022004200329001037032802400240024020094102460d00200441286a410f6a2131200441e8026a410f6a21110340200441a0016a41026a2220200441e8026a41026a22012d00003a0000200441b8026a41086a22212005290300370300200441b8026a41106a22282007280200360200200420042f01e8023b01a001200420042903283703b8022012200e417e6a220e41246c221d6a22032d000021022001200341036a2d00003a00002003280004211b20032800082119200328000c211f20032f000121222005200341186a2900003703002007200341206a280000360200200420223b01e8022004200329001037032820024102460d03200441b8016a41026a222620012d00003a0000200441d0026a41086a22332005290300370300200441d0026a41106a22272007280200360200200420042f01e8023b01b801200420042903283703d00202400240200941ff017122094101470d00200441d0016a41026a20202d00003a000020052021290300370300200720282d00003a0000200420042f01a0013b01d001200420042903b802370328201e2122201021200c010b200441e8026a2010200810d703200441d0016a41026a20042d00ea023a00002005201141086a2900003703002007201141106a2d00003a0000200420042f01e8023b01d0012004201129000037032820042800eb02212020042800ef02212220042800f30221080b4120102f2203450d09200441203602fc01200420033602f801200320042f01d0013b0000200341026a200441d0016a41026a2d00003a00002003200836000b20032022360007200320203600032003200429032837000f200341176a20052903003700002003411f6a20072d00003a000020044120360280020240024020024101470d00203120042903d002370000203141086a2033290300370000203141106a20272d00003a0000200420042f01b8013b01282004201f3600332004201936002f2004201b36002b200420262d00003a002a0c010b200441e8026a201b201f10d703200441286a41186a200441e8026a41186a2903003703002007200441e8026a41106a2903003703002005200441e8026a41086a290300370300200420042903e8023703280b200ead2106200441f8016a200441286a4120107e200441e8026a20042802f801220320042802800210d70320044190026a41086a2208201141086a29000037030020044190026a41106a221f201141106a2d00003a0000200420112900003703900220042d00ea02212220042f01e802212020042800f302212120042800ef02212820042800eb022126024020042802fc01450d00200310310b2006422086210602400240200e200aa7460d00200a42ffffffff0f8320068421060c010b200e41016a2203200e490d0b200e41017422332003203320034b1b22034104200341044b1bad42247e220a422088a7454102742103200aa7213302400240200e0d00200441003602280c010b20044104360230200420123602282004201d36022c0b200441e8026a20332003200441286a104e20042802f002210320042802e8024101460d0320042802ec0221122006200341246ead8421060b2012201d6a2203202136000c200320283600082003202636000420032020202241107472220e3b0001200341013a0000200341036a200e4110763a0000201f2d0000210e2008290300210a200429039002210d200341236a2004418d026a41026a2d00003a0000200320042f008d023b00212003200d370010200341186a200a370000200341206a200e3a0000024020020d002019450d00201b10310b20064280808080107c210a024020090d00201e450d00201010310b200a422088a7220e4102490d04200e41246c20126a415c6a22032d000021092001200341036a2d00003a0000200328000421102003280008211e200328000c210820032f000121022005200341186a2900003703002007200341206a280000360200200420023b01e8022004200329001037032820094102470d000b0b41e98fc200410341a491c2001068000b2003450d070c060b41e98fc200410341b491c2001068000b0240024002400240200e0d0020044103360228200441286a4104722105200441286a21030c010b2012410c6a280000212f201241046a2900002106201241036a2d0000210320122d0000210720122f00012105200441e8026a41086a220e201241186a290000370300200441e8026a41106a2202201241206a2800003602002004201241106a2900003703e80220044103360228200a42ffffffff0f83210a20074102470d01200441286a4104722105200441286a21030b4103210720032f0001200341036a2d0000411074722111200529000021064101210e2004280234212f0c010b20052003411074722111200441d0026a41106a2002280200360200200441d0026a41086a200e290300370300200420042903e8023703d0024100210e0b0240200a422088a72203450d00200341246c2105201221030340024020032d00000d00200341086a280200450d00200341046a28020010310b200341246a21032005415c6a22050d000b0b0240200aa72203450d00200341246c450d00201210310b0240200e450d00410121030c040b200441346a202f360200200441286a41106a20042903d002370300200441c0006a200441d8026a290300370300200441c8006a200441d0026a41106a280200360200200420113b0029200420114110763a002b200420073a002820042d000021032004200637022c2006a721054100210e02400240024020072003470d0020074101460d01202f2004410c6a280200470d0020052004280204202f10c20945210e0b20070d012006428080808010540d01200510310c010b200441286a4101722004410172412010c20945210e0b410021030c030b200441e8016a10d90302402007450d00200741306c450d0020042802f00110310b200441b8016a41086a200441d0016a41086a290300370300200441b8016a41106a200441d0016a41106a280200360200200420042903d0013703b80141032122410021100b2010410874202241ff0171722107202dad422086202ead842106201541ffffffff0171450d00201410310b0240200a422088a72203450d00200341246c2105201221030340024020032d00000d00200341086a280200450d00200341046a28020010310b200341246a21032005415c6a22050d000b0b0240200aa72203450d00200341246c450d00201210310b024020042802782203450d00200341306c2105200428027041106a210303400240200341786a2d00000d002003280200450d002003417c6a28020010310b200341306a2103200541506a22050d000b0b024020042802742203450d00200341306c450d00200428027010310b20074108762111410121030b024020042d00000d00200441086a280200450d00200428020410310b4100211202402003450d00200441e8026a410c6a202f360200200420063702ec02200420073a00e802200420113b00e902200420114110763a00eb024104210e200441043a00d002024041002802809a4a4104490d002004410c6a4111360200200441123602042004200441e8026a3602082004200441d0026a36020041002802fc994a210341002802f8994a210541002802849a4a2107200441e8006a41c102360200200441e0006a42f580808010370300200441dc006a41c5dbc300360200200441d4006a4215370200200441d0006a41b0dbc300360200200441c8006a4202370300200441286a41106a4202370300200441306a410c360200200441c4006a200436020020044194dbc300360234200441a4dbc30036022c20044104360228200541f8fac900200741024622071b200441286a20034180a6c00020071b28021011030020042d00d002210e0b024020042802e8024102470d00200441f0026a280200450d0020042802ec0210310b410121120b0240200f450d00200f41246c2105200b21030340024020032d00000d00200341086a280200450d00200341046a28020010310b200341246a21032005415c6a22050d000b0b0240200c450d00200c41246c450d00200b10310b2000200e3a0001200020123a000020044190036a24000f0b1039000b103b000bec0303047f017e047f230041d0006b2202240020022001290200370308024002402001410c6a2802002203200128020822046b41306e2205ad42307e2206422088a70d002006a72207417f4c0d00200128021021084108210102402007450d002007102f2201450d020b20002001360200200041086a22014100360200200041046a200741306e36020020004100200510ab0820012802002105200028020021012002411c6a2003360200200220083602202002200229030837031020022004360218024020042003460d002001200541306c6a2101200241c7006a2103200241c0006a2108200241386a2109200241286a41086a210a03402002200441306a3602182004290300210620042d000821072003200441286a2900003700002008200441216a2900003703002009200441196a290000370300200a200441116a2900003703002002200441096a29000037032820074102460d0120012006370300200141086a20073a0000200141196a2009290300370000200141116a200a290300370000200141096a2002290328370000200141216a2008290300370000200141286a2003290000370000200141306a2101200541016a210520022802182204200228021c470d000b0b200041086a2005360200200241106a10ef07200241d0006a24000f0b103b000b1039000b4c0020002002ad4220862001ad8410112201290000370000200041186a200141186a290000370000200041106a200141106a290000370000200041086a200141086a290000370000200110310be80203037f017e037f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a28020020002802006b716b4101470d00200221030240024002402002450d00200220026a22032002490d04200141106a41086a41083602002001200241306c3602142001200028020836021020012003ad42307e2204a72004422088a745410374200141106a104e200141086a280200210320012802004101460d01200020012802043602082000410c6a200341306e22033602000b20032002410174470d0420002802002205200041046a28020022064d0d022006200220056b22074f0d0120002802082203200241306c6a2003200641306c10bf091a200041046a2200200028020020026a3602000c020b2003450d021039000b20002802082202200320076b220341306c6a2002200541306c6a200741306c10bf091a200020033602000b200141206a24000f0b103b000b41dcdbc400412b4188dcc400103c000b870201047f2000410c6a2802002101200028020821020240024002402000280204220320002802002200490d0041002104024020012003490d00200321010c020b2003200141c0cfc8001058000b2003210420012000490d010b024020012000460d00200141306c200041306c22006b2101200220006a41106a210003400240200041786a2d00000d002000280200450d002000417c6a28020010310b200041306a2100200141506a22010d000b0b02402004450d00200441306c2101200241106a210003400240200041786a2d00000d002000280200450d002000417c6a28020010310b200041306a2100200141506a22010d000b0b0f0b41facdc800412341d0cfc800103c000bae0a05047f017e087f037e027f230041f0016b220224002002412036020c20022001360208200241106a2001412010d202024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10bb010240024020022802000d0002400240200228020422052002280224412c6e2201200120054b1bad422c7e2206422088a70d002006a72201417f4c0d000240024020010d00410421070c010b2001102f2207450d060b2001412c6ead2106024002402005450d00200241c8016a4101722108034020022802242209450d04200228022022012d0000210a20022009417f6a220b3602242002200141016a3602204102210c02400240200a0e020100060b200b450d0520012d0001210a20022009417e6a220b3602242002200141026a3602204101210c02400240200a0e020001070b200b4104490d062001280002210d20022009417a6a3602242002200141066a360220200241c8016a200241206a10b50120022d00c8014101460d06200241a8016a41186a2201200841186a290000370300200241a8016a41106a2209200841106a290000370300200241a8016a41086a220c200841086a290000370300200220082900003703a8012002280224220a4104490d0620024188016a41086a200c29030037030020024188016a41106a200929030037030020024188016a41186a2001290300370300200220022903a8013703880120022802202201280000210e2002200a417c6a3602242002200141046a3602204100210c0b200241e8006a41186a20024188016a41186a290300370300200241e8006a41106a20024188016a41106a290300370300200241e8006a41086a20024188016a41086a29030037030020022002290388013703680b200241c8006a41186a200241e8006a41186a290300220f370300200241c8006a41106a200241e8006a41106a2903002210370300200241c8006a41086a200241e8006a41086a2903002211370300200241286a41086a22092011370300200241286a41106a220a2010370300200241286a41186a220b200f37030020022002290368220f3703482002200f37032802402006422088a722012006a7470d00200141016a22122001490d0420014101742213201220122013491b22124104201241044b1bad422c7e220f422088a7454102742112200fa721130240024020010d00200241003602c8010c010b200241043602d001200220073602c80120022001412c6c3602cc010b200241a8016a20132012200241c8016a104e20022802b001211220022802a8014101460d0320022802ac0121072006428080808070832012412c6ead8421060b20072001412c6c6a2201200d3602042001200c360200200141086a2002290328370200200141106a2009290300370200200141186a200a290300370200200141206a200b290300370200200141286a200e36020020064280808080107c21062005417f6a22050d000b0b2007450d0320002006370204200020073602000c040b20120d050b103b000b2006a72201450d002001412c6c450d00200710310b200241003602b001200242013703a8012002410c36028c012002200241086a360288012002200241a8016a360268200241dc016a4101360200200242013702cc012002419086c4003602c801200220024188016a3602d801200241e8006a41d8ddc900200241c8016a10401a20022802a80120022802b00110d904024020022802ac01450d0020022802a80110310b200041003602000b2004450d00200310310b200241f0016a24000f0b1039000bfe5906057f017e127f017e177f037e230041c00f6b22032400200341286a10aa05200341c00a6a22044200370300200341b80a6a22054200370300200341a80a6a41086a22064200370300200342003703a80a200341a0036a41b490c700410b10a7022006200341a0036a41086a2207290000370300200320032900a0033703a80a200341a0036a41c892c700411310a70220042007290000370300200520032900a003370300200341206a200341a80a6a412010c00202402001ad42f4027e2208422088a70d002008a72204417f4c0d00200328022021092003280224210a02400240024020040d004104210b0c010b2004102f220b450d010b024002400240024002400240024002400240200441f4026e220c20014f0d00200c41017422062001200620014b1b22064104200641044b1bad42f4027e2208422088a74541027421062008a7210702400240200441f3024b0d00200341003602d00c0c010b200341d80c6a41043602002003200b3602d00c2003200c41f4026c3602d40c0b200341a0036a20072006200341d00c6a104e200341a8036a2802002104024020032802a0034101460d0020032802a403210b200441f4026e210c0c020b20040d090c0a0b20010d004100210d0c010b200341fc0e6a21074100210e200341a80a6a41186a210f200341a80a6a41106a2110200341f8006a41286a2111200341f8006a41306a2112200341f8006a41386a211341042114200b2104410021060340200f420037030020104200370300200341a80a6a41086a22154200370300200342003703a80a200341a0036a41a996c700410d10a7022015200341a0036a41086a2216290000370300200320032900a0033703a80a200341a0036a41849cc700411110a702200541086a220d2016290000370000200520032900a003370000200341d00c6a200341a80a6a10da0320032802d00c2217410420171b2118410121190240200620032902d40c420020171b2208422088a74f0d004101211902400240201820146a2217417c6a280200417f6a0e020102000b2017280200211a410021190c010b200f42003703002010420037030020154200370300200342003703a80a200341a0036a41b0a8c600410510a70220152016290000370300200320032900a0033703a80a200341a0036a4190fdc600410a10a702200d2016290000370000200520032900a003370000200341d00c6a200341a80a6a412010e202200620032902d40c420020032802d00c221a1b221b422088a722174f0d03201a4104201a1b2217200e6a280200211a41002119201b42ffffffff0383500d00201710310b02402008a72217450d002017412c6c450d00201810310b200641016a210641002117024020190d00200341e8096a201a10df03200341d00c6a20032802e809221720032802f00910e003200341a0036a200341d00c6a41a80210bf091a200341c0066a41086a2219200741086a290200370300200341c0066a41106a2215200741106a290200370300200341c0066a41186a2216200741186a290200370300200341c0066a41206a2218200741206a290200370300200341c0066a41286a220d200741286a290200370300200341c0066a41306a221c200741306a290200370300200341c0066a41386a221d200741386a290200370300200320072902003703c006024020032802f80e221e450d00200341a80a6a200341a0036a41a80210bf091a2013201d2903003703002012201c2903003703002011200d290300370300200341f8006a41206a2018290300370300200341f8006a41186a2016290300370300200341f8006a41106a2015290300370300200341f8006a41086a2019290300370300200320032903c0063703780b024020032802ec09450d00201710310b410121170b20042017360200200441046a201a360200200441086a200341a80a6a41a80210bf091a200441b0026a201e360200200441b4026a2003290378370200200441bc026a200341f8006a41086a290300370200200441c4026a200341f8006a41106a290300370200200441cc026a200341f8006a41186a290300370200200441d4026a200341f8006a41206a290300370200200441dc026a2011290300370200200441e4026a2012290300370200200441ec026a2013290300370200200441f4026a2104200e41046a210e2014412c6a211420012006470d000b2001210d0b2003200b3602a80a2003200b200d41f4026c6a3602ac0a2003200d3602c006200d4180808080024f0d0102400240200d410376200d41077122064100476a22040d0041012113410021120c010b200341003602d00c200341a0036a20044108200441084b1b4101200341d00c6a104e200341a0036a41086a2802002112024020032802a0034101470d002012450d090c080b20032802a40321130240201220044f0d00201241017422072004200720044b1b22074108200741084b1b21070240024020120d00200341003602d00c0c010b200341d00c6a41086a4101360200200320123602d40c200320133602d00c0b200341a0036a20074101200341d00c6a104e200341a8036a280200211220032802a0034101460d0420032802a40321130b20132107024020044102490d00201341002004417f6a220410c10920046a21070b200741003a00000b200341d90c6a200d2006200d41ffffffff0171220441084922071bad3c0000200342003c00d40c20032013ad3e02d00c200342003703e00c200320134100200441037620071b6aad3e00d50c2003200341a80a6a3602dc0c200341d00c6a1081052208422888a7221a41ff01714102460d03410021070340024020032802dc0c220628020022042006280204470d0041012008422088a74107717421062008a7210402400240201a41ff0171450d0020042d000020067221060c010b20042d00002006417f737121060b200420063a00000c060b2006200441f4026a36020041012008422088a741077174211a2008a721060240024020042802004101470d00200441b0026a280200450d0020062d0000201a7221040c010b20062d0000201a417f737121040b200620043a0000200741016a2107200341d00c6a1081052208422888a7221a41ff01714102470d000c050b0b2006201741acb0c700103f000b200341ac036a4101360200200341e40c6a4102360200200342023702d40c200341ecf6c3003602d00c200341e8f6c3003602a803200341013602a4032003200341a0036a3602e00c2003200341c0066a3602a003200341d00c6a41fcf6c3001047000b2012450d040c030b41002107200341003602e8090c010b200320073602e8092007418080808002490d00200341ac036a4101360200200341e40c6a4102360200200342023702d40c200341ecf6c3003602d00c200341e8f6c3003602a803200341013602a4032003200341a0036a3602e00c2003200341e8096a3602a003200341d00c6a418cf7c3001047000b024002400240201241ffffffff01712012470d002003201241037422043602c0060240200420074f0d00200341ac036a4101360200200341e40c6a4102360200200342023702d40c200341ecf6c3003602d00c200341013602a4032003200341a0036a3602e00c2003200341c0066a3602a8032003200341e8096a3602a003200341d00c6a41acf7c3001047000b20074103742104024020032802a80a220620032802ac0a2214460d0003402004410376211a200641b0026a280200211920062802002117024002400240024002402004450d00201a4107712207454103742007724108470d010b0240200441067620044138714100476a22072012470d0020124101742215201241016a2216201520164b1b22154108201541084b1b21150240024020120d00200341003602d00c0c010b200341013602d80c200320123602d40c200320133602d00c0b200341a0036a20154101200341d00c6a104e20032802a803211220032802a0034101460d0220032802a40321130b201320076a41003a00000b201341002004410676200441c000491b6a21074101201a41077174211a2017450d012019450d0120072d0000201a72211a0c020b2012450d080c070b20072d0000201a417f7371211a0b200441086a21042007201a3a0000200641f4026a22062014470d000b0b200a410020091b211f20032012360280012003200436027c20032013360278200341a80a6a41186a22044200370300200341a80a6a41106a22064200370300200341a80a6a41086a22074200370300200342003703a80a200341a0036a41f3c6c000410610a7022007200341a0036a41086a221a290000370300200320032900a0033703a80a200341a0036a418c91c900410a10a7022004201a290000370300200620032900a003370300200341a0036a200341a80a6a412010da0220032d00a003211a2004200341b9036a2900003703002006200341b1036a2900003703002007200341a9036a290000370300200320032900a1033703a80a02400240201a4101460d00200341c0066a41186a4200370300200341c0066a41106a4200370300200341c0066a41086a4200370300200342003703c0060c010b200341c0066a41186a2004290300370300200341c0066a41106a2006290300370300200341c0066a41086a2007290300370300200320032903a80a3703c0060b200341d00c6a410c6a200341c0066a41086a290300370200200341e40c6a200341c0066a41106a290300370200200341ec0c6a200341d8066a2903003702002003201f3602d00c200320032903c0063702d40c200228020021202002280208222141d0006c2204450d01202020046a2122200341d00c6a4104722123200341a0036a410c6a2110410121042020210f024003400240200f2802044103762001460d00200341a0036a410110ab05200041013602002000410c6a200341a8036a280200360200200020032903a0033702040c020b02402004200f410c6a221d280200220720064b724101710d00200341a0036a410210ab05200041013602002000410c6a200341a8036a280200360200200020032903a0033702040c020b024020072003280230220a490d00200341a0036a410310ab05200041013602002000410c6a200341a8036a280200360200200020032903a0033702040c020b200341a80a6a200341f8006a10ac05200341a0036a200f10ac0520032802a003210920032802a803212420032802a80a2111024020032802ac0a221c4103762215450d0020032802a40322044103762004410771221a6a22042004410771200441084922061b211e20094100200441037620061b6a2118201c410771210420092107034020114100200441037620044108491b6a22062d00004101200441077174221671210e02400240024020072018470d00201e211920182114201a41ff0171201e41ff0171460d010b201a41ff0171221941016a22172017410771201941074922141b211920074100201741037620141b6a21144101450d0020072d0000201a4107717641017121170c010b410221170b2019211a2014210702400240200e41ff0171450d0020174102460d002017410171450d0020062d000020167221170c010b20062d00002016417f737121170b200620173a0000200441016a21042015417f6a22150d000b0b02402024450d00200910310b20032802b00a21174100211a0240201c200f28020422047341074b0d00200f2802002106200341003602bc03200342203702b403200320043602b003200320063602ac03200341203602a8032003201c3602a403200320113602a0030340200341186a200341a0036a10ad054101211a20032802182204450d01200328021c2106200341106a201010ad0520032802102207450d012003280214211a2004200610ae052007201a10ae05460d000b4100211a0b02402017450d00201110310b0240201a0d00200341a0036a410d10ab05200041013602002000410c6a200341a8036a280200360200200020032903a0033702040c020b024002400240200a201d28020022074d0d002003280228211a200341003602c806200342013703c006200f28020422044103762106200f28020021172004418004490d012006410274211902402004418080084f0d00200320194101723b01a003200341c0066a200341a0036a4102107e0c030b200320194102723602a003200341c0066a200341a0036a4104107e0c020b2007200a419cf1c200103f000b200320064102743a00a003200341c0066a200341a0036a4101107e0b200341c0066a2017200620044107716a220441037620044107714100476a107e200341003602b00a200342013703a80a2003201f3602a003200341a80a6a200341a0036a4104107e4120102f2204450d05201a20074105746a2106200342203702a403200320043602a003200341a0036a20234120107e200341a80a6a20032802a003220420032802a803107e024020032802a403450d00200410310b200320032802a80a220420032802b00a6a3602ac03200320043602a803200320032802ac0a3602a403200320043602a003200341c0066a200341a0036a10af05200f41106a20032802c006220720032802c8062006108a052104024020032802c406450d00200710310b02402004450d00201d280200210641002104200f41d0006a220f2022470d010c040b0b200341a0036a410410ab05200041013602002000410c6a200341a8036a280200360200200020032903a0033702040b02402012450d00201310310b0240200d450d00200d41f4026c2106200b2104034002402004280200450d00200441b0026a221a2802002207450d000240200441b8026a22172802002219450d00200710310b20172019360200201a2007360200200441bc026a221a28020021070240200441c4026a22172802002219450d00200710310b20172019360200201a20073602000b200441f4026a21042006418c7d6a22060d000b0b0240200c450d00200c41f4026c450d00200b10310b0240200328022c41ffffff3f71450d00200328022810310b024020022802082206450d0020022802002104200641d0006c21070340200428020021060240200441086a221a2802002217450d00200610310b20042006360200201a2017360200200441d0006a2104200741b07f6a22070d000b0b200241046a2802002204450d02200441d0006c450d02200228020010310c020b41ccf6c300411c419cf7c3001068000b02402012450d00201310310b200341c00a6a4200370300200341a80a6a41106a4200370300200341a80a6a41086a22044200370300200342003703a80a200341a0036a41f3c6c000410610a7022004200341a0036a41086a2206290000370300200320032900a0033703a80a200341a0036a41ec90c900410610a702200541086a2006290000370000200520032900a003370000200341086a200341a80a6a412010c0022020202141d0006c6a210f2002280204210a02400240024020210d00202021150c010b200328020c410020032802081b2110200341e8096a41046a211c200341f8006a41086a211d202021040340200441d0006a21152004280200220e450d01200428020c211e20042802082111200428020422184103762205201841077122076a220420044107712212200441084922061b21160240024041002004410376221320061b22040d002007201641ff0171460d010b200e20046a2114200741016a22044107712004200741074622171b21064100211a200e2004410376410020171b6a2104200e2d0000200776410171ad42288621080340200b201a41f4026c6a2117024003402008428080808080c00084428080808080e03f83428080808080c000520d01024020042014470d00200641ff0171201641ff0171460d040b201a41016a211a201741f4026a211720042d0000200641077176410171ad4228862108200641ff0171220641016a22072007410771200641074922191b210620044100200741037620191b6a21040c000b0b024002400240024002400240200d201a4d0d0020172802004101470d01201741b0026a2802002207450d050240201741b4026a2802002217410376201e4b0d00428080808080c00021084200211b0c050b20174107712217410048201e20176a2217201e48730d020240201741084f0d0041002109201721190c040b20174107712119201741037521090c030b201a200d41acf1c200103f000b41bcf1c20041d6004194f2c2001068000b20174107712119201741037621090b2019ad42ff0183422086200720096a2207ad84211b20072d0000201941077176410171ad42288621080b2008428080808080c000510d00201ba7220720072d00004101201b422088a741077174723a00000b024020042014470d00200641ff0171201641ff0171460d020b201a41016a211a20042d0000200641077176410171ad4228862108200641ff0171220641016a22072007410771200641074922171b210620044100200741037620171b6a21040c000b0b200341a80a6a41a4bcc200410d10a702200341a0036a41d0edc200411510a7022003201e3602e8092003200341e8096a410410c8023703782003201c3602dc0c2003201d3602d40c2003200341e8096a3602d80c2003200341f8006a3602d00c200341c0066a200341d00c6a10880120032802c806220641206a2204417f4c0d050240024020040d00410121070c010b2004102f2207450d050b20034100360280012003200436027c20032007360278200341f8006a200341a80a6a4110107e200341f8006a200341a0036a4110107e200341f8006a20032802c00622042006107e024020032802c406450d00200410310b200328027821042003280280012106200341003602d80c200342013703d00c024002402018418004490d002005410274210702402018418080084f0d00200320074101723b01a003200341d00c6a200341a0036a4102107e0c020b200320074102723602a003200341d00c6a200341a0036a4104107e0c010b200320054102743a00a003200341d00c6a200341a0036a4101107e0b200341d00c6a200e201320124100476a107e200320103602a003200341d00c6a200341a0036a4104107e2004200620032802d00c220720032802d80c109f02024020032802d40c450d00200710310b0240200328027c450d00200410310b02402011450d00200e10310b201521042015200f470d000c020b0b200f2015460d002020202141d0006c6a21170340201541d0006a2104201528020021060240201541086a2207280200221a450d00200610310b201520063602002007201a3602002004211520172004470d000b0b0240200a450d00200a41d0006c450d00202010310b200328023041017422044103702106200441036e211a200141ffffffff03712001470d0220014102742204417f4c0d020240024020040d004104211d0c010b2004102f221d450d020b2004410276211c200b200d41f4026c22046a210702400240200d0d004100210d200b21060c010b201a20066a2102200b20046a418c7d6a2123200341d80e6a2125200341b80e6a2126200341f80d6a2127200341d80d6a2128200341b80d6a2129200341980d6a212a200341d00c6a41286a212b200341d00c6a41086a212c200341d00c6a41cc026a212d200341a0036a41a8026a2124200341d00c6a410472212e200341a0036a410472210a200341d00c6a41b4026a2120200341fc0e6a2109200341d00c6a41a8026a212120034180066a41386a211720034180066a41306a211920034180066a41206a211420034180066a41186a211520034180066a41106a21164100210d200b2106034020062104024002400340200441046a280200210f20042802002106200341c0066a200441086a41a80210bf091a200441b0026a280200211a2017200441ec026a2902003703002019200441e4026a29020037030020034180066a41286a220e200441dc026a2902003703002014200441d4026a2902003703002015200441cc026a2902003703002016200441c4026a29020037030020034180066a41086a2218200441bc026a2902003703002003200441b4026a2902003703800620064102460d01200341a0036a200341c0066a41a80210bf091a200341a8096a41386a221e2017290300370300200341a8096a41306a22112019290300370300200341a8096a41286a2205200e290300370300200341a8096a41206a220e2014290300370300200341a8096a41186a22122015290300370300200341a8096a41106a22132016290300370300200341a8096a41086a2201201829030037030020032003290380063703a809024020064101470d00200341d00c6a200341a0036a41a80210bf091a200341e8096a41386a2210201e290300370300200341e8096a41306a22062011290300370300200341e8096a41286a22182005290300370300200341e8096a41206a221e200e290300370300200341e8096a41186a220e2012290300370300200341e8096a41106a22112013290300370300200341e8096a41086a22052001290300370300200320032903a8093703e809201a0d03200341a80a6a410041a80210c1091a200341e8086a41386a4200370300200341e8086a41306a4200370300200341e8086a41286a4200370300200341e8086a41206a4200370300200341e8086a41186a4200370300200341e8086a41106a4200370300200341e8086a41086a4200370300200342003703e8080b200441f4026a22042007470d000b200721060c030b200441f4026a21060c020b200341a80a6a200341d00c6a41a80210bf091a200341e8086a41386a22122010290300370300200341e8086a41306a22132006290300370300200341e8086a41286a22012018290300370300200341e8086a41206a2210201e290300370300200341e8086a41186a222f200e290300370300200341e8086a41106a22302011290300370300200341e8086a41086a22312005290300370300200320032903e8093703e808200341f8006a200341a80a6a41a80210bf091a200341386a41386a22322012290300370300200341386a41306a22122013290300370300200341386a41286a22132001290300370300200341386a41206a22012010290300370300200341386a41186a2210202f290300370300200341386a41106a222f2030290300370300200341386a41086a22302031290300370300200320032903e808370338200341d00c6a200341f8006a41a80210bf091a200941386a2032290300370200200941306a2012290300370200200941286a2013290300370200200941206a2001290300370200200941186a2010290300370200200941106a202f290300370200200941086a2030290300370200200920032903383702002003201a3602f80e4100213020032802fc0e2210410376222f201041077122126a221341037620134107714100476a2113410021010240202f201272450d00202f20106a41077122014541037420017221010b0240024020130d00410041006a21120c010b0240024002400240024020120d0020014108470d00201a20136a21134100212f410021100c010b02400240024020014108470d002013417f6a2131202241807e71201272212241002110201f21010c010b024020120d00201a2013417f6a22316a21104100212f201a21120c020b20134101460d032013417e6a2131202241807e7120127221222013201a6a417f6a21100b201a41016a211241ff0121130240202241ff0171450d00417f410020226b41077174417f7320224107717421130b2013201a2d00007169212f0b2031450d02201220316a21132012211a2001211f0b4100211203402012201a2d0000696a21122013201a41016a221a470d000b201f21010c020b417f417f200120126b221341077174417f7320127420134108461b201a2d000071692112201a21220c020b410021120b2012202f6a211a02402010450d00417f417f200141077174417f73200141ff01714108461b20102d0000716921300b2001211f201a20306a21120b0240024002400240024002400240024020122002490d00200341a0036a200f10df0320032802a003221a20032802a80310bd02024020032802a403450d00201a10310b200341a8096a200f10e103200341a0036a20032802a809221220032802b009221310e2030240024020032802a003221a450d002012201310bd02200341a80a6a41306a200a41306a2802002213360200200341a80a6a41286a200a41286a2902002208370300200341a80a6a41206a200a41206a290200221b370300200341a80a6a41186a200a41186a2902002233370300200341a80a6a41106a200a41106a2902002234370300200341a80a6a41086a200a41086a2902002235370300200341c0066a41086a2035370300200341c0066a41106a2034370300200341c0066a41186a2033370300200341c0066a41206a201b370300200341c0066a41286a2008370300200341c0066a41306a20133602002003200a29020022083703a80a200320083703c0060c010b200341a80a6a41306a200a41306a280200360200200341a80a6a41286a200a41286a290200370300200341a80a6a41206a200a41206a290200370300200341a80a6a41186a200a41186a290200370300200341a80a6a41106a200a41106a290200370300200341a80a6a41086a200a41086a2902003703002003200a2902003703a80a4100211a0b024020032802ac09450d00201210310b201a450d042006200341c0066a41306a2802003602002018200341c0066a41286a290300370300201e200341c0066a41206a290300370300200e200341c0066a41186a2903003703002011200341c0066a41106a2903003703002005200341c0066a41086a2212290300370300200320032903c0063703e80920032802900f2113200341a0036a202e41a40210bf091a202420032903e809370200202441086a2005290300370200202441106a2011290300370200202441186a200e290300370200202441206a201e290300370200202441286a2018290300370200202441306a20062802003602002003201a3602c4052012202041086a280200360200200320202902003703c006200341a80a6a41086a202141086a280200360200200320212902003703a80a2013200341a0036a200341c0066a200341a80a6a20032802d00c20032802980f109f0520032802d00c2106200d201c470d03201c41016a221a201c490d0c201c410174220e201a200e201a4b1b221a4104201a41044b1b221a41ffffffff0371201a46410274210e201a410274211a201c0d01200341003602a0030c020b200341c0066a200f10df0320032802c806211820032802c006210e200341003602b00a200342013703a80a200320032802d00c3602a003200341a80a6a200341a0036a4104107e4120102f2206450d0a200342203702a403200320063602a003200341a0036a202d4120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b200320032802d40c3602a003200341a80a6a200341a0036a4104107e4120102f2206450d0a200342203702a403200320063602a003200341a0036a202c4120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b200341a80a6a202b4120107e4120102f2206450d0a200342203702a403200320063602a003200341a0036a202a4120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b4120102f2206450d0a200342203702a403200320063602a003200341a0036a20294120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b4120102f2206450d0a200342203702a403200320063602a003200341a0036a20284120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b200341a80a6a202741c000107e4120102f2206450d0a200342203702a403200320063602a003200341a0036a20264120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b4120102f2206450d0a200342203702a403200320063602a003200341a0036a20254120107e200341a80a6a20032802a003220620032802a803107e024020032802a403450d00200610310b20032802fc0e2206410376211a20032802f80e211e2006418004490d04201a410274211102402006418080084f0d00200320114101723b01a003200341a80a6a200341a0036a4102107e0c060b200320114102723602a003200341a80a6a200341a0036a4104107e0c050b200341043602a8032003201d3602a0032003201c4102743602a4030b200341a80a6a201a200e200341a0036a104e20032802b00a211a024020032802a80a4101470d00201a450d0a0c090b20032802ac0a211d201a410276211c0b201d200d4102746a2006360200200d41016a210d0c030b024041002802809a4a4102490d0041002802fc994a210641002802f8994a211a41002802849a4a210e200341d7023602e003200342c3808080103703d803200341e49cc2003602d403200342263702cc03200341be9cc2003602c803200342003703c003200342013703b003200341a4f2c2003602ac03200341123602a803200341acf2c2003602a403200341023602a003200341f8fac9003602bc03201a41f8fac900200e410246220e1b200341a0036a20064180a6c000200e1b2802101103000b20032802f80e2106024020032802800f221a450d00200610310b2003201a3602800f200320063602f80e200328028c0f450d0220032802840f10310c020b2003201a4102743a00a003200341a80a6a200341a0036a4101107e0b200341a80a6a201e201a20064107716a220641037620064107714100476a107e20032802880f2206410376211a20032802840f211e024002402006418004490d00201a410274211102402006418080084f0d00200320114101723b01a003200341a80a6a200341a0036a4102107e0c020b200320114102723602a003200341a80a6a200341a0036a4104107e0c010b2003201a4102743a00a003200341a80a6a200341a0036a4101107e0b200341a80a6a201e201a20064107716a220641037620064107714100476a107e200320032802900f3602a003200341a80a6a200341a0036a4104107e200320032802940f3602a003200341a80a6a200341a0036a4104107e200320032802980f3602a003200341a80a6a200341a0036a4104107e200e201820032802a80a20032802b00a109f02024020032802ac0a450d0020032802a80a10310b024020032802c406450d00200e10310b20032802f80e2106024020032802800f221a450d00200610310b2003201a3602800f200320063602f80e20032802840f21060240200328028c0f221a450d00200610310b2003201a36028c0f200320063602840f0b200441f4026a210620232004470d000b200721060b024020072006460d0003402006220441f4026a210602402004280200450d00200441b0026a2217280200221a450d000240200441b8026a22192802002214450d00201a10310b201920143602002017201a360200200441bc026a2217280200211a0240200441c4026a22042802002219450d00201a10310b200420193602002017201a3602000b20072006470d000b0b0240200c450d00200c41f4026c450d00200b10310b2000201d360204200041003602002000410c6a200d360200200041086a201c360200200328022c41ffffff3f71450d00200328022810310b200341c00f6a24000f0b1039000b103b000b830501057f230041e0056b220524002005200436020420052003360200024002400240200241074b0d0041002802809a4a450d0141002802fc994a210241002802f8994a210341002802849a4a2104200541b0036a41e900360200200541a8036a42dd80808010370300200541a4036a41a7a1c0003602002005419c036a421337020020054198036a4194a1c00036020020054190036a42003703002005418c036a41f8fac90036020020054180036a4201370300200541f8026a41133602002005418ca1c0003602fc0220054194a1c0003602f402200541013602f002200341f8fac900200441024622041b200541f0026a20024180a6c00020041b2802101103000c010b2002417c714108460d0020012800082102200541f0026a200510a605200541c8006a200541f0026a41a80210bf091a200541086a41086a200541a4056a290200370300200541186a2203200541ac056a290200370300200541206a2204200541b4056a290200370300200541286a2201200541bc056a290200370300200541306a2206200541c4056a290200370300200541386a2207200541cc056a290200370300200541c0006a2208200541d4056a2902003703002005200529029c0537030802402005280298052209450d0020002002360200200041046a200541c8006a41a80210bf091a200020093602ac02200020052903083702b002200041b8026a200541106a290300370200200041c0026a2003290300370200200041c8026a2004290300370200200041d0026a2001290300370200200041d8026a2006290300370200200041e0026a2007290300370200200041e8026a20082903003702000c020b200041003602ac020c010b200041003602ac020b200541e0056a24000ba90603067f017e037f230041d0036b220224002002200128020c200141146a28020010ad080240024020022802002203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902042208422088a722094b0d0020012802002003200710c209450d010b2008a7450d02200310310c020b02402006280200450d00200428020010310b2001200336020c2006200837020020024180036a2003200910d20202400240024002402002280280032203450d002002280288032109200228028403210a024020012d001c450d00200128020c200128021410bd020b2001280214220b20052802002207490d032002200128020c20076a200b20076b20032009200128021811040020022802ac02450d012000200241f00210bf091a200a450d06200310310c060b41002802809a4a450d012002410e3602f402200220043602f00241002802fc994a210341002802f8994a210741002802849a4a2109200241a404360240200242e480808010370338200241eabdc7003602342002421637022c200241d4bdc7003602282002420137032020024201370310200241acbdc70036020c20024116360208200241d4bdc7003602042002410136020020034180a6c000200941024622091b28021021032002200241f0026a36021c200741f8fac90020091b200220031103000c010b024041002802809a4a450d002002410f3602fc022002410e3602f402200220043602f0022002200241c8036a3602f80241002802fc994a210741002802f8994a210941002802849a4a210b200241b2043602c003200242e4808080103703b803200241eabdc7003602b403200242163702ac03200241d4bdc7003602a803200242023703a0032002420237039003200241c4bdc70036028c032002411636028803200241d4bdc70036028403200241013602800320074180a6c000200b410246220b1b28021021072002200241f0026a36029c03200941f8fac900200b1b20024180036a20071103000b200a450d00200310310b2002200128020c200128021410ad08200228020022030d010c020b0b2007200b41b4bdc7001061000b200041003602ac020b200241d0036a24000b980101017f410121030240200041d0016a28020020014d0d0020002802c8012001412c6c6a28020022014102460d00024020014101460d004100210320002802d40120002802880122014f0d01410020002802d801220020026b2203200320004b1b20014f0f0b4100210320002802d40120002802840122014f0d00410020002802d801220020026b2203200320004b1b20014f21030b20030b860201037f230041d0006b22022400200241086a41a4bcc200410d10a702200241186a41b1bcc200411310a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bab0201017f230041b0036b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041003602a8020c010b200328020c21022003200341106a28020036028c032003200136028803200341186a20034188036a10a6050240024020032802c0020d00200341003602980320034201370390032003410c3602a403200320033602a003200320034190036a3602ac032003412c6a41013602002003420137021c2003419086c4003602182003200341a0036a360228200341ac036a41d8ddc900200341186a10401a20032802900320032802980310d9040240200328029403450d0020032802900310310b200041003602a8020c010b2000200341186a41ec0210bf091a0b2002450d00200110310b200341b0036a24000b860201037f230041d0006b22022400200241086a41a4bcc200410d10a702200241186a4188efc200411e10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b910301017f23004180016b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036025c20032001360258200341206a200341d8006a10b9050240024020032802200d0020034100360268200342013703602003410c3602742003200341086a3602702003200341e0006a36027c200341346a4101360200200342013702242003419086c4003602202003200341f0006a360230200341fc006a41d8ddc900200341206a10401a2003280260200328026810d90402402003280264450d00200328026010310b200041003602000c010b20002003290320370200200041306a200341206a41306a290300370200200041286a200341206a41286a290300370200200041206a200341206a41206a290300370200200041186a200341206a41186a290300370200200041106a200341206a41106a290300370200200041086a200341206a41086a2903003702000b2002450d00200110310b20034180016a24000b2501017f0240200041cc016a2802002201450d002001412c6c450d0020002802c80110310b0ba70c05087f017e087f037e017f230041e0026b22002400200041c0026a41186a22014200370300200041c0026a41106a22024200370300200041c0026a41086a22034200370300200042003703c002200041c0026a41b5d8c800410d10a702200041f8006a41cfd8c800410c10a7022001200041f8006a41086a220429000037030020022000290078370300200041f8006a200041c0026a412010b20220002802f401210220002802f00121052000280288022106200041f8006a41186a22014200370300200041f8006a41106a220742003703002004420037030020004200370378200041c0026a41a996c700410d10a70220042003290000370300200020002900c002370378200041c0026a41b09bc700410f10a70220012003290000370300200720002900c002370300200041c0026a200041f8006a10e60320002802c00221032004200041c0026a410c6a280200360200200020002902c4023703780240024020030d0020004200370310200042043703080c010b200041086a410c6a2004280200360200200020033602082000200029037837020c0b4200210820004190016a420037030020004188016a4200370300200041f8006a41086a2204420037030020004200370378200041c0026a41a996c700410d10a7022004200041c0026a41086a2203290000370300200020002900c002370378200041c0026a41989ec700410910a702200741086a2003290000370000200720002900c002370000200041c0026a200041f8006a10e5030240024020002802c00222090d00410421090c010b200041f8006a412010bd0220002902c40221080b2008a7210a02402008422088a72204450d0041002005200641024622031b210b4100200220031b210c200441346c21022009412c6a2104200041f8006a410472210d0340200441586a280200210e2004415c6a2d00002101200041f8006a41186a22052004415d6a220341186a290000370300200041f8006a41106a2206200341106a290000370300200041f8006a41086a220f200341086a2900003703002000200329000037037820014102460d0120042802002110200041186a41186a20052903002208370300200041186a41106a20062903002211370300200041186a41086a200f2903002212370300200020002903782213370318200041386a41186a22032008370300200041386a41106a22052011370300200041386a41086a220620123703002000201337033802402001410171450d00200041d8006a41186a220f2003290300370300200041d8006a41106a22142005290300370300200041d8006a41086a2205200629030037030020002000290338370358200041f8006a200e10ae022000280278220120002802800110af0241ff017121030240200028027c450d00200110310b20034107460d00200341054b0d004101200374412a71450d00200041c0026a41186a2203200f290300370300200041c0026a41106a22012014290300370300200041c0026a41086a22062005290300370300200020002903583703c002201041016a2205200c4b0d00200d20002903c002370200200d41086a2006290300370200200d41106a2001290300370200200d41186a20032903003702002000200e3602782000200536029c01200041086a200041f8006a200b109d010b200441346a21042002414c6a22020d000b0b0240200a450d00200a41346c450d00200910310b200041d8006a41086a200041086a41086a29030037030020002000290308220837035820004190016a420037030020004188016a4200370300200041f8006a41086a2204420037030020004200370378200041c0026a41a996c700410d10a7022004200041c0026a41086a2203290000370300200020002900c002370378200041c0026a41b09bc700410f10a702200741086a2003290000370000200720002900c002370000024002402008a722040d00200041f8006a412010bd020c010b200041003602c802200042013703c002200041d8006a200041c0026a10f4032000200041e4006a280200360238200041c0026a200041386a4104107e200041f8006a412020002802c002220320002802c802109f02024020002802c402450d00200310310b200028025c2203450d002003412c6c450d00200410310b200041e0026a24000bf50c04047f017e107f017e230041c0026b220224002002412036020c20022001360208200241106a2001412010d202024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10bb010240024020022802000d000240024020022802042205200228022441346e2201200120054b1bad42347e2206422088a70d002006a72201417f4c0d000240024020010d00410421070c010b2001102f2207450d060b200141346ead2106024002402005450d0020024198016a210820024198026a4101722109034002400240200228022422014104490d002002280220220a280000210b2002200a41046a36022020022001417c6a220c360224200c4104490d00200a280004210d2002200141786a220e3602242002200a41086a220c360220200e450d002002200141776a22013602242002200c41016a220e3602204100210a02400240200c2d00000e020100020b20024198026a200241206a10b50120022d0098024101460d01200241f8016a41186a2201200941186a290000370300200241f8016a41106a220a200941106a290000370300200241f8016a41086a220c200941086a290000370300200220092900003703f8012002280224220e4104490d01200241d0016a41086a200c290300370300200241d0016a41106a200a290300370300200241d0016a41186a2001290300370300200241cc016a41026a200241f5016a41026a2d00003a0000200220022903f8013703d0012002280220220a280000210f2002200e417c6a22013602242002200a41046a220e360220200220022f00f5013b01cc014101210a0b200241a8016a41186a220c200241d0016a41186a290300370300200241a8016a41106a2210200241d0016a41106a290300370300200241a8016a41086a2211200241d0016a41086a290300370300200241a4016a41026a2212200241cc016a41026a2d00003a0000200220022903d0013703a801200220022f01cc013b01a40120014104490d00200241f8006a41086a2011290300370300200241f8006a41106a2010290300370300200241f8006a41186a200c290300370300200241a0016a41026a20122d0000220c3a0000200220022903a801370378200220022f01a40122133b01a001200e280000211420022001417c6a3602242002200e41046a360220200841026a200c3a0000200820133b0000200f2113200b2115200d21160c010b4102210a0b200241d0006a411f6a2201200241f8006a411f6a280000360000200241d0006a41186a220c200241f8006a41186a290300370300200241d0006a41106a220b200241f8006a41106a290300370300200241d0006a41086a220e200241f8006a41086a29030037030020022002290378370350200a4102460d04200241286a411f6a220d2001280000360000200241286a41186a220f200c290300370300200241286a41106a220c200b290300370300200241286a41086a220b200e2903003703002002200229035037032802402006422088a722012006a7470d00200141016a220e2001490d0420014101742210200e200e2010491b220e4104200e41044b1bad42347e2217422088a745410274210e2017a721100240024020010d00200241003602780c010b2002410436028001200220073602782002200141346c36027c0b20024198026a2010200e200241f8006a104e20022802a002210e2002280298024101460d03200228029c022107200642808080807083200e41346ead8421060b2007200141346c6a2201200a3a000820012016ad4220862015ad84370200200141096a2002290328370000200141116a200b290300370000200141196a200c290300370000200141216a200f290300370000200141286a200d280000360000200141306a20143600002001412c6a201336000020064280808080107c21062005417f6a22050d000b0b2007450d0320002006370204200020073602000c040b200e0d050b103b000b2006a72201450d00200141346c450d00200710310b20024100360258200242013703502002410c36022c2002200241086a3602282002200241d0006a360298022002418c016a41013602002002420137027c2002419086c4003602782002200241286a3602880120024198026a41d8ddc900200241f8006a10401a2002280250200228025810d90402402002280254450d00200228025010310b200041003602000b2004450d00200310310b200241c0026a24000f0b1039000bca0905047f017e097f037e017f230041f0016b220224002002412036020c20022001360208200241106a2001412010d202024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10bb0102400240024020022802000d00024002400240200228020422052002280224412c6e2201200120054b1bad422c7e2206422088a70d002006a72201417f4c0d000240024020010d00410421070c010b2001102f2207450d080b2001412c6ead2106024002402005450d00200241c8016a41017221080340200228022422014104490d0420022802202209280000210a20022001417c6a3602242002200941046a360220200241c8016a200241206a10b50120022d00c8014101460d04200241a8016a41186a2201200841186a290000370300200241a8016a41106a220b200841106a290000370300200241a8016a41086a220c200841086a290000370300200220082900003703a801200228022422094104490d0420024188016a41086a220d200c29030037030020024188016a41106a220c200b29030037030020024188016a41186a220e2001290300370300200220022903a8013703880120022802202201280000210f2002200141046a36022020022009417c6a220b360224200b4104490d04200241c8006a41086a200d2903002210370300200241c8006a41106a200c2903002211370300200241c8006a41186a200e2903002212370300200241286a41086a220b2010370300200241286a41106a220c2011370300200241286a41186a220d20123703002001280004210e2002200941786a3602242002200141086a360220200220022903880122103703482002201037032802402006422088a722092006a7470d00200941016a22012009490d0420094101742213200120012013491b22014104200141044b1bad422c7e2206422088a74541027421012006a721130240024020090d00200241003602c8010c010b200241043602d001200220073602c80120022009412c6c3602cc010b200241a8016a20132001200241c8016a104e20022802b001210120022802a8014101460d0320022802ac0121072001412c6ead21060b20072009412c6c6a2201200a360200200120022903283702042001410c6a200b290300370200200141146a200c2903003702002001411c6a200d2903003702002001200e3602282001200f360224200642ffffffff0f83200941016aad4220868421062005417f6a22050d000b0b2007450d042002280224220141034b0d052006a72201450d042001412c6c0d030c040b20010d070b103b000b2006a72201450d012001412c6c450d010b200710310b200241003602b001200242013703a8012002410c36028c012002200241086a360288012002200241a8016a360268200241dc016a4101360200200242013702cc012002419086c4003602c801200220024188016a3602d801200241e8006a41d8ddc900200241c8016a10401a20022802a80120022802b00110d904024020022802ac01450d0020022802a80110310b200041003602000c010b20002006370204200020073602002000410c6a2002280220220928000036020020022001417c6a3602242002200941046a3602200b2004450d00200310310b200241f0016a24000f0b1039000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10e8050240024020022802480d0020024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241386a360258200241c4006a41d8ddc900200241c8006a10401a2002280228200228023010d9040240200228022c450d00200228022810310b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110310b200241e0006a24000be00502097f017e230041f0016b22032400200341d0016a41186a22044200370300200341d0016a41106a22054200370300200341d0016a41086a22064200370300200342003703d001200341d0016a41b5d8c800410d10a702200341086a41cfd8c800410c10a7022004200341086a41086a220729000037030020052003290008370300200341086a200341d0016a412010b20220032802880121082003280298012109200341086a41186a22054200370300200341086a41106a220442003703002007420037030020034200370308200341d0016a41a996c700410d10a70220072006290000370300200320032900d001370308200341d0016a41c49dc700411110a70220052006290000370300200420032900d0013703002003200341086a412010c0024100210a0240024002402003280204410020032802001b220b20024d0d000c010b20054200370300200442003703002007420037030020034200370308200341d0016a41a996c700410d10a70220072006290000370300200320032900d001370308200341d0016a41c89ac700410f10a702200441086a2006290000370000200420032900d001370000200341d0016a200341086a10e70320032802d0012206410420061b2105024020032902d401420020061b220c422088a7220620014b0d0002402006450d002006410c6c21072005210603400240200641046a28020041ffffffff0371450d00200628020010310b2006410c6a2106200741746a22070d000b0b0240200ca722060d000c020b02402006410c6c0d000c020b200510310c010b4101200820094102461b2204450d012006410c6c21072002200b6b20046e20016a20067021042005210603400240200641046a28020041ffffffff0371450d00200628020010310b2006410c6a2106200741746a22070d000b4101210a200ca72206450d002006410c6c450d00200510310b200020043602042000200a360200200341f0016a24000f0b41f0aec700411941b8e4c900103c000b890302047f017e230041206b2203240002400240200041086a28020022042001490d00024002402004200041046a280200470d00200441016a22052004490d03200441017422062005200620054b1b22054104200541044b1bad42347e2207422088a74541027421052007a721060240024020040d00200341003602100c010b200341186a41043602002003200441346c360214200320002802003602100b200320062005200341106a104e200341086a280200210520032802004101460d0120002003280204360200200041046a200541346e3602000b2000280200200141346c6a220541346a2005200420016b41346c10c0091a200541306a200241306a280200360200200541286a200241286a290200370200200541206a200241206a290200370200200541186a200241186a290200370200200541106a200241106a290200370200200541086a200241086a29020037020020052002290200370200200041086a200441016a360200200341206a24000f0b2005450d011039000b200120041048000b103b000bc70303027f017e037f230041306b22012400024002400240024020002802002202450d0020002902042103200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a996c700410d10a7022005200141206a41086a220629000037030020012001290020370300200141206a41989ec700410910a70220002006290000370300200420012900203703002003422088a7220441346c41046a2200417f4c0d010240024020000d00410121050c010b2000102f2205450d030b200141003602282001200036022420012005360220200141206a200410cb0120022004200141206a10c50120014120200128022022002001280228109f0202402001280224450d00200010310b2003a72200450d03200041346c450d03200210310c030b200141186a22004200370300200141106a22024200370300200141086a2204420037030020014200370300200141206a41a996c700410d10a7022004200141206a41086a220529000037030020012001290020370300200141206a41989ec700410910a70220002005290000370300200220012900203703002001412010bd020c020b103b000b1039000b200141306a24000bdd0301057f230041e0006b22012400200141086a41086a22022000410c6a280200360200200120002902043703080240024020002802002200450d00200120003602182001200129030837021c20012002280200360224200141c0006a22024200370300200141386a22034200370300200141286a41086a2204420037030020014200370328200141c8006a41a996c700410d10a7022004200141c8006a41086a220529000037030020012001290048370328200141c8006a41b09bc700410f10a70220022005290000370300200320012900483703002001410036025020014201370348200141186a200141c8006a10f4032001200128022436025c200141c8006a200141dc006a4104107e200141286a4120200128024822022001280250109f020240200128024c450d00200210310b200128021c2202450d012002412c6c450d01200010310c010b200141c0006a22004200370300200141386a22024200370300200141286a41086a2203420037030020014200370328200141c8006a41a996c700410d10a7022003200141c8006a41086a220429000037030020012001290048370328200141c8006a41b09bc700410f10a7022000200429000037030020022001290048370300200141286a412010bd020b200141e0006a24000bc70303027f017e037f230041306b22012400024002400240024020002802002202450d0020002902042103200141186a22004200370300200141106a22044200370300200141086a2205420037030020014200370300200141206a41a996c700410d10a7022005200141206a41086a220629000037030020012001290020370300200141206a41849cc700411110a70220002006290000370300200420012900203703002003422088a72204412c6c41046a2200417f4c0d010240024020000d00410121050c010b2000102f2205450d030b200141003602282001200036022420012005360220200141206a200410cb0120022004200141206a10c60120014120200128022022002001280228109f0202402001280224450d00200010310b2003a72200450d032000412c6c450d03200210310c030b200141186a22004200370300200141106a22024200370300200141086a2204420037030020014200370300200141206a41a996c700410d10a7022004200141206a41086a220529000037030020012001290020370300200141206a41849cc700411110a70220002005290000370300200220012900203703002001412010bd020c020b103b000b1039000b200141306a24000bbb0202037f017e230041d0006b220224002002412036020420022001360200200241086a2001412010d20202400240200228020822010d00200042003703000c010b200228020c2103024002400240200241086a41086a28020022044108490d00200441787141786a0e09000101010101010100010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c2002419086c4003602382002200241286a360248200241346a41d8ddc900200241386a10401a2002280218200228022010d9040240200228021c450d00200228021810310b420021050c010b200041186a2001290010370300200041106a200129000837030020002001290000370308420121050b200020053703002003450d00200110310b200241d0006a24000bf36b07127f017e137f017e1a7f017e1f7f23004190156b22042400024002400240200241086a2802002205200341086a28020022064d0d00200441c00d6a410510ab05200041013602002000410c6a200441c00d6a41086a280200360200200020042903c00d3702040c010b024020060d0020004280808080c000370200200041086a42003702000c010b200441186a10aa05200441800c6a41186a22074200370300200441800c6a41106a22084200370300200441800c6a41086a22094200370300200442003703800c200441c00d6a41f3c6c000410610a7022009200441c00d6a41086a220a290000370300200420042900c00d3703800c200441c00d6a418c91c900410a10a7022007200a290000370300200820042900c00d370300200441c00d6a200441800c6a412010da0220042d00c00d2107200441a00c6a41186a2208200441d90d6a290000370300200441a00c6a41106a2209200441d10d6a290000370300200441a00c6a41086a220a200441c90d6a290000370300200420042900c10d3703a00c0240024020074101460d00200441286a41186a4200370300200441286a41106a4200370300200441286a41086a4200370300200442003703280c010b200441286a41186a2008290300370300200441286a41106a2009290300370300200441286a41086a200a290300370300200420042903a00c3703280b200441b80c6a22074200370300200441b00c6a220b4200370300200441a00c6a41086a22084200370300200442003703a00c4106210a200441c00d6a41f3c6c000410610a7022008200441c00d6a41086a2209290000370300200420042900c00d3703a00c200441c00d6a41ec90c900410610a70220072009290000370300200b20042900c00d370300200441106a200441a00c6a412010c0022004280214210c2004280210210d20074200370300200b420037030020084200370300200442003703a00c200441c00d6a41b5d8c800410d10a70220082009290000370300200420042900c00d3703a00c200441c00d6a41cfd8c800410c10a70220072009290000370300200b20042900c00d370300200441c00d6a200441a00c6a412010b20220042802d00e2107200441d0046a200441c00d6a41900110bf091a200441a8026a41086a220e200441c00d6a41c4016a2802003602002004200441c00d6a41bc016a2902003703a80241002108200c4100200d1b220f417f6a2110410221090240024020074102470d00200441c8006a410041800110c1091a200441c8006a41bc016a4200370200200442003702fc01200442013703d00120044281808080103703c8014101210c41c801210d41e4002111410021070c010b200441f80e6a2802002112200441f40e6a2802002113200441f00e6a280200210c200441ec0e6a280200210d200441e80e6a2802002109200441e40e6a2802002111200441e00e6a280200210a200441c00d6a419c016a2802002114200441d80e6a280200210820042802d40e2115200441c8006a200441d0046a41900110bf091a200441c8006a419c016a2014360200200441dc016a2015360200200441c8006a41c4016a200e2802003602002004201236028002200420133602fc01200420042903a802370284020b2004200c3602f8012004200d3602f401200420093602f001200420113602ec012004200a3602e801200420083602e001200420073602d80120042010360294022004200f3602900202402005ad42147e2216422088a70d002016a72207417f4c0d0002400240024020070d00410421170c010b2007102f2217450d010b200441a00c6a41186a22184200370300200441a00c6a41106a22194200370300200441a00c6a41086a221a4200370300200442003703a00c200441c00d6a41b490c700410b10a702201a200441c00d6a41086a2213290000370300200420042900c00d3703a00c200441c00d6a41c892c700411310a702200b41086a221b2013290000370000200b20042900c00d370000200441086a200441a00c6a412010c002200441d8096a410c6a200441286a41086a290300370200200441d8096a41146a200441286a41106a290300370200200441f4096a200441286a41186a290300370200200420042903283702dc092004200428020c410020042802081b3602d809200741146e211c024002400240024020050d004100211d41002108410021070c010b20022802002207200541f4026c6a211e200441c00d6a410172210a200441d0046a41146a211f200441c00d6a41e4006a2114200441c00d6a41c4006a2115200441c00d6a41246a2120200441800d6a4101722121200441c00d6a41027221224100211d410021084100210d02400240024003402004201d3602b80920072802002112200441c00c6a2004280220222310b0050240200741046a2205200441286a412010c209450d00200441c00d6a410c10ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c030b20072802002106200441c00d6a41206a410041e40010c1092124200441c00d6a41186a2225200541186a290000370300200441c00d6a41106a2226200541106a2900003703002013200541086a2900003703002005290000211620202007290044370000202041086a200741cc006a290000370000202041106a200741d4006a290000370000202041186a200741dc006a290000370000201541186a200741fc006a290000370000201541106a200741f4006a290000370000201541086a200741ec006a29000037000020152007290064370000200420163703c00d200420063602e00d201441186a2007419c026a290000370000201441106a20074194026a290000370000201441086a2007418c026a29000037000020142007290084023700000240200741a4016a200441c00d6a418401200741246a2227108a050d00200441c00d6a411110ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c030b200441c00d6a2012200f10b10502400240024020042d00c00d4101470d00200441d0046a41176a2205202241176a290000370000200441d0046a41106a2228202241106a290000370300200441d0046a41086a2229202241086a290000221637030020042022290000222a3703d00420042d00c10d21062021202a370000202141086a2016370000202141106a2028290300370000202141176a2005290000370000200420063a00800d024020074184026a200441800d6a412010c209450d00200441c00d6a411810ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c060b200441a00d6a200441c8006a2012200741d0026a280200200741bc026a20072802d40220072802a40220072802ac0220072802d80220072802b00220072802b80210b205024020042802a00d4107460d00200441a8026a41106a200441a00d6a41106a280200360200200441a8026a41086a200441a00d6a41086a290300370300200420042903a00d3703a802024041002802809a4a4104490d00200441e4046a4113360200200441dc046a4101360200200441013602d404200420123602e00c2004200441a8026a3602e0042004200441e00c6a3602d8042004200441b8096a3602d00441002802fc994a210541002802f8994a210641002802849a4a2107200441800e6a41d503360200200441f80d6a42c380808010370300200441f40d6a41e49cc200360200200441ec0d6a4226370200200441e80d6a41be9cc200360200200441e00d6a4203370300200441c00d6a41106a4203370300200441c00d6a41086a4112360200200441dc0d6a200441d0046a360200200441e0f3c2003602cc0d200441acf2c2003602c40d200441043602c00d200641f8fac900200741024622071b200441c00d6a20054180a6c00020071b2802101103000b41172105024002400240024002400240024020042802a8020e0700010203040506000b410921050c050b410a21050c040b410b21050c030b411421050c020b411521050c010b411621050b200441c00d6a200510ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c060b0240200341086a28020022052008490d00200741f4026a212b201d41016a212c200741c4006a212d20032802002106200541346c2105200841346c210c024003400240200c2005470d00200441c00d6a410510ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c090b2006200c6a22112802002109024002400240200d450d002009200e4d0d010b2004200a2900003703d0042004200a41076a2800003600d7042009210e0c010b200441c00d6a410810ab052004200a2900003703d0042004200a41076a2800003600d70420042d00c00d22094107470d020b2005414c6a2105200641346a21064101210d200841016a21082012201141046a280200470d000b02402006200c6a220d41546a2d00004101470d00200d41556a2027412010c209450d00200441c00d6a410710ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c080b200441a8026a41186a222e200141186a290000370300200441a8026a41106a222f200141106a290000370300200441a8026a41086a2227200141086a290000370300200420012900003703a802200441c00d6a20122010200441a8026a10b405024020042802c00d0d0020004280808080c000370200200041086a42003702000c080b200441d0046a41306a200441c00d6a41306a280200360200200441d0046a41286a200441c00d6a41286a290300370300200441d0046a41206a2024290300370300200441d0046a41186a223020252903003703002028202629030037030020292013290300370300200420042903c00d3703d004200441003602a80d200442013703a00d20042802d00422062029280200200441a00d6a10ce01200420042802dc043602a802200441a00d6a200441a8026a4104107e4120102f2205450d0c200442203702ac02200420053602a802200441a8026a201f4120107e200441a00d6a20042802a802220520042802b002107e024020042802ac02450d00200510310b200420042802e0043602a802200441a00d6a200441a8026a4104107e200441a00c6a20042802a00d220520042802a80d109a0120252018290300370300202620192903003703002013201a290300370300200420042903a00c3703c00d024020042802a40d450d00200510310b0240200441c00d6a202d412010c209450d00200441a8026a411210ab05200041013602002000410c6a200441b0026a280200360200200020042903a80237020420042802d404450d08200610310c080b024020042802d404450d00200610310b200441d0046a201210df03200441c00d6a20042802d004221120042802d80410e00320042802e80f210520042802f00f210620042802f40f210920042802fc0f210c024020042802d404450d00201110310b2006203120051b21312009203220051b2132200c203320051b2133024002400240024020050d00200441d0046a201210e103200441c00d6a20042802d004223420042802d80410e20320042802c00d210920042802c40d210520042802c80d210620042802cc0d210c20042802d00d211120042802d40d211220042802d80d212520042802dc0d212620042802e40d212420042802e80d212d024020042802d404450d00203410310b2005203520091b21352006203620091b2136200c203720091b21372011203820091b21382012203920091b21392025203a20091b213a2026203b20091b213b2024203c20091b213c202d203d20091b213d02402009450d0002402036450d002036410c6c21062009210503400240200541046a280200450d00200528020010310b2005410c6a2105200641746a22060d000b0b02402035450d002035410c6c450d00200910310b02402039450d0020394104742106203741086a2105034002402005280200450d002005417c6a28020010310b200541106a2105200641706a22060d000b0b0240203841ffffffff0071450d00203710310b0240203a450d00203b450d00203a10310b0240203d450d00203c10310b20090d020b200d417c6a223e28020021062018420037030020194200370300201a4200370300200442003703a00c200441c00d6a41a996c700410d10a702201a2013290000370300200420042900c00d3703a00c200441c00d6a41c89ac700410f10a702201b2013290000370000200b20042900c00d370000200441c00d6a200441a00c6a10e70320042802c00d2205410420051b210c024002400240200620042902c40d420020051b2216422088a722054f0d00200c2006410c6c6a2209280208223f41ffffffff0371203f470d14203f4102742206417f4c0d14200928020021090240024020060d00410421260c010b2006102f2226450d140b20262009200610bf091a20064102762140200c2005410c6c6a21090c010b410021262005450d01200c2005410c6c6a21090b200c210503402005410c6a21060240200541046a28020041ffffffff0371450d00200528020010310b2006210520092006470d000b0b02402016a72205450d002005410c6c450d00200c10310b2026450d0220072802ec02410376203f470d08200741e4026a2234280200203f4b0d08200d414c6a2141200441a00d6a200710b50520072802ec022205410376200541077122256a22052005410771200541084922061b21124100210920072802e802220d4100200541037620061b6a211120072802dc0222242034280200224241c1006c6a2143200428021821444100212d024002400340024002400240200d2011470d00202541ff0171201241ff0171460d010b202541ff0171220641016a220520054107712006410749220c1b2106200d41002005410376200c1b6a2105202620094102746a210c200d2d0000202541077176410171ad42288621160240034020164200520d01024020052011470d00200641ff0171201241ff0171460d030b200941016a2109200c41046a210c20052d0000200641077176410171ad422886211620054100200641ff0171220d41016a2206410376200d410749220d1b6a210520062006410771200d1b21060c000b0b20242043470d012042212d0b202d2034280200460d070c0c0b0240203f20094d0d002023200c280200220c4d0d022044200c4105746a220c2900002116200c41186a290000212a200c41106a29000021452027200c41086a290000370300202f2045370300202e202a370300200420163703800c200420163703a8022030200441a00d6a41186a2903003703002028200441a00d6a41106a2903003703002029200441a00d6a41086a290300370300200420042903a00d3703d0040240024020242d00004101470d00200a20042903d004370000200a41086a2029290300370000200a41106a2028290300370000200a41186a2030290300370000200441013a00c00d2004200441d8096a3602e40d200441e00c6a200441c00d6a10b6050c010b200a20042903d004370000200a41086a2029290300370000200a41106a2028290300370000200a41186a2030290300370000200441003a00c00d2004200441d8096a3602e40d200441e00c6a200441c00d6a10b6050b202441016a20042802e00c220c20042802e80c200441a8026a108a05450d03024020042802e40c450d00200c10310b200941016a2109202441c1006a2124202d41016a212d2005210d200621250c010b0b200441800c6a41186a200441a00c6a41186a290300370300200441800c6a41106a200441a00c6a41106a290300370300200441800c6a41086a200441a00c6a41086a290300370300200420042903a00c3703800c0c0a0b200441800c6a41186a200441a00c6a41186a290300370300200441800c6a41106a200441a00c6a41106a290300370300200441800c6a41086a200441a00c6a41086a290300370300200420042903a00c3703800c0c090b20042802e40c450d08200c10310c080b02402031450d00200510310b2033450d00203210310b200441c00d6a410610ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c090b200441c00d6a410e10ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c080b0240202d410174203f4b0d00200441c00d6a410f10ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c070b20072802ec0222054103762005410771220c6a22052005410771200541084922061b211220072802e802210702404100200541037620061b22050d00200c201241ff0171460d040b200720056a2111200c41016a22054107712005200c410746220d1b210641002109200720054103764100200d1b6a210520072d0000200c76410171ad42288621160340202620094102746a210c024003402016428080808080c00084428080808080e03f83428080808080c000520d01024020052011470d00200641ff0171201241ff0171460d070b200941016a2109200c41046a210c20052d0000200641077176410171ad4228862116200641ff0171220641016a220720074107712006410749220d1b2106200541002007410376200d1b6a21050c000b0b0240024002400240203f20094d0d0020042802c00c212820042802c40c210d2004200c28020022073602a00d2004200d410376220c3602a802200c20074d0d01200d410771220c4100482007200c6a220c200748730d020240200c41084f0d0041002107200c210d0c040b200c410771210d200c41037521070c030b4188f4c200411a41a4f4c2001068000b200441dc046a4101360200200441d40d6a4102360200200442023702c40d20044188f0c3003602c00d200441013602d4042004200441d0046a3602d00d2004200441a8026a3602d8042004200441a00d6a3602d004200441c00d6a4198f0c3001047000b200c410771210d200c41037621070b202820076a220720072d00004101200d41077174723a0000024020052011470d00200641ff0171201241ff0171460d050b200941016a210920052d0000200641077176410171ad4228862116200641ff0171220641016a220720074107712006410749220c1b2106200541002007410376200c1b6a21050c000b0b200020093a0004200020042903d004370005200041013602002000410c6a20042800d7043600000c060b2008200541f8f3c2001061000b200441c00d6a410510ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040c040b204128020021062027200441c00c6a41086a280200360200200420042903c00c3703a802203e28020021070240201d201c470d00201d4101742205201d41016a2209200520094b1b22054104200541044b1bad42147e2216422088a74541027421052016a7210902400240201d0d00200441003602c00d0c010b200441043602c80d200420173602c00d2004201d41146c3602c40d0b200441d0046a20092005200441c00d6a104e20042802d8042105024020042802d0044101470d0020050d0a0c0b0b20042802d4042117200541146e211c0b2017201d41146c6a22052006360200200520042903a8023702042005410c6a2027280200360200200520073602100240204041ffffffff0371450d00202610310b4101210d202c211d202b2107201e202b460d040c010b0b200441c00d6a411010ab05200041013602002000410c6a200441c80d6a280200360200200020042903c00d3702040b204041ffffffff0371450d00202610310b20042802c80c450d0220042802c00c10310c020b410121070240200341086a28020022062008490d00202c211d0c010b2008200641d0f3c2001061000b20082006460d01200641346c200841346c22056b2108200328020020056a2105200441c00d6a410172220941076a210a02400340200528020021060240024002402007450d002006200e4d0d010b200420092900003703d0042004200a2800003600d7042006210e0c010b200441c00d6a410810ab05200420092900003703d0042004200a2800003600d70420042d00c00d22064107470d020b200541346a2105410121072008414c6a22080d000c030b0b200020063a0004200020042903d004370005200041013602002000410c6a20042800d7043600000b0240201d450d00201d41146c21072017410c6a21050340200541786a22082802002106024020052802002209450d00200610310b2005200936020020082006360200200541146a21052007416c6a22070d000b0b0240201c450d00201c41146c450d00201710310b200428021c41ffffff3f71450d03200428021810310c030b201d41ffffffff0371201d470d0102400240201d41027422050d00410421460c010b2005102f2246450d010b02400240024020054102762247201d4f0d0020054101762206201d2006201d4b1b22064104200641044b1b220641ffffffff03712006464102742107200641027421060240024020050d00200441003602c00d0c010b200441c80d6a4104360200200420053602c40d200420463602c00d0b200441d0046a20062007200441c00d6a104e200441d8046a2802002105024020042802d0044101460d0020042802d4042146200541027621470c020b2005450d040c030b201d0d00410021480c010b201d41146c2207416c6a41146e21082046210520172106034020052006280200360200200541046a2105200641146a21062007416c6a22070d000b200841016a21480b2017201d41146c6a21492002280200224a200241086a28020041f4026c6a2112200441c80f6a214b200441a80f6a214c200441e80e6a214d200441c80e6a214e200441a80e6a214f200441880e6a2150200441c00d6a41286a2151200441c00d6a41086a2136200441c00d6a41cc026a210d200441c00d6a41ac026a210b200441cc0f6a2101200441ac0f6a2113200441ec0e6a210a200441cc0e6a2114200441ac0e6a21152004418c0e6a2120200441ec0d6a2121200441c00d6a410c6a2122200441d4066a210f200441b4066a211a200441f4056a210c200441d4056a2128200441b4056a213f20044194056a2129200441f4046a2118200441d0046a4104722119200441d0046a41d0026a211b200441c00d6a41a8026a213b200441c00d6a4104722152200441d0046a41a4026a215320022802042154204a21052017210703402012210841002109024020052012460d00200441d0046a200541a40210bf091a200441800d6a41086a200541d8026a2802003602002004200541d0026a2902003703800d200541f4026a2108200541f0026a2802002155200541ec026a2802002156200541e4026a2802002157200541e0026a2802002158200541cc026a2802002159200541c8026a280200215a200541c4026a280200215b200541c0026a280200215c200541bc026a280200215d200541b8026a280200215e200541b4026a280200215f200541b0026a2802002160200541ac026a2802002161200541a8026a280200216220052802e802216320052802dc02216420052802a40221090b200441c00d6a200441d0046a41a40210bf091a200441a00d6a41086a2205200441800d6a41086a2211280200360200200420042903800d3703a00d024002402009450d00200441d8096a200441c00d6a41a40210bf091a200441e00c6a41086a22062005280200360200200420042903a00d3703e00c0240024020072049470d00204921070c010b200741146a213c200728020422330d02203c21070b02402061450d002061410c6c21062009210503400240200541046a280200450d00200528020010310b2005410c6a2105200641746a22060d000b0b02402062450d002062410c6c450d00200910310b0240205e450d00205e4104742106206041086a2105034002402005280200450d002005417c6a28020010310b200541106a2105200641706a22060d000b0b0240205f41ffffffff0071450d00206010310b0240205d450d00205c450d00205d10310b02402059450d00205a10310b02402058450d00205841c1006c450d00206410310b2055450d00206310310b024020122008460d0003400240200841ac026a2802002206450d0020082802a40221052006410c6c210603400240200541046a280200450d00200528020010310b2005410c6a2105200641746a22060d000b0b0240200841a8026a2802002205450d002005410c6c450d0020082802a40210310b0240200841b8026a2802002205450d0020054104742106200841b0026a28020041086a2105034002402005280200450d002005417c6a28020010310b200541106a2105200641706a22060d000b0b0240200841b4026a28020041ffffffff0071450d0020082802b00210310b0240200841bc026a2802002205450d00200841c0026a280200450d00200510310b0240200841cc026a280200450d00200841c8026a28020010310b0240200841e0026a2802002205450d00200541c1006c450d0020082802dc0210310b200841f4026a210520082802e80221060240200841f0026a2802002209450d00200610310b200820093602f002200820063602e8022005210820052012470d000b0b02402054450d00205441f4026c450d00204a10310b024020492007460d002017201d41146c6a210a0340200741146a2105200741046a2208280200210602402007410c6a22072802002209450d00200610310b200720093602002008200636020020052107200a2005470d000b0b0240201c450d00201c41146c450d00201710310b20002046360204200041003602002000410c6a2048360200200041086a20473602000240200428021c41ffffff3f71450d00200428021810310b200341046a2802002205450d05200541346c450d05200328020010310c050b200741086a29020021162007280210213a20072802002107200441a8026a200441d8096a41a40210bf091a20044198026a41086a220e2006280200360200200420042903e00c37039802200441d0046a200441a8026a41a40210bf091a201b200429039802370200201b41086a200e2802003602002004205936029c072004205a360298072004205b360294072004205c360290072004205d36028c072004205e360288072004205f360284072004206036028007200420613602fc06200420623602f806200420093602f406200420553602c007200420563602bc07200420633602b807200420573602b407200420583602b007200420643602ac0720042802d0042109200441c8076a200428022010b005200441a00c6a41086a220e201941086a290200370300200441a00c6a41106a2202201941106a290200370300200441a00c6a41186a2235201941186a290200370300200441800c6a41086a2239201841086a290200370300200441800c6a41106a223d201841106a290200370300200441800c6a41186a2238201841186a290200370300200420192902003703a00c200420182902003703800c20042802d0042131200441c00d6a41186a2232202941186a290200370300200441c00d6a41106a2224202941106a2902003703002036202941086a2902003703002005203f41086a290200370300200441a00d6a41106a222b203f41106a290200370300200441a00d6a41186a2223203f41186a290200370300200420292902003703c00d2004203f2902003703a00d200441800d6a41186a2240202841186a290200370300200441800d6a41106a222d202841106a2902003703002011202841086a290200370300200420282902003703800d200441d8096a41386a2227200c41386a290200370300200441d8096a41306a221f200c41306a290200370300200441d8096a41286a222c200c41286a290200370300200441d8096a41206a221e200c41206a290200370300200441d8096a41186a2225200c41186a290200370300200441d8096a41106a2237200c41106a290200370300200441d8096a41086a2226200c41086a2902003703002004200c2902003703d809200441e00c6a41186a2234201a41186a290200370300200441e00c6a41106a2230201a41106a2902003703002006201a41086a2902003703002004201a2902003703e00c200441c00c6a41186a222e200f41186a290200370300200441c00c6a41106a222f200f41106a290200370300200441c00c6a41086a223e200f41086a2902003703002004200f2902003703c00c200441d8076a2053109901200441b8096a41186a22432035290300370300200441b8096a41106a22352002290300370300200441b8096a41086a2202200e29030037030020044198096a41086a220e203929030037030020044198096a41106a2239203d29030037030020044198096a41186a223d2038290300370300200441f8086a41086a22382036290300370300200441f8086a41106a22412024290300370300200441f8086a41186a22242032290300370300200420042903a00c3703b809200420042903800c37039809200420042903c00d3703f808200441d8086a41186a22322023290300370300200441d8086a41106a2223202b290300370300200441d8086a41086a222b2005290300370300200441b8086a41086a22442011290300370300200441b8086a41106a2211202d290300370300200441b8086a41186a222d204029030037030020044198086a41086a2240200629030037030020044198086a41106a2206203029030037030020044198086a41186a22302034290300370300200420042903a00d3703d808200420042903800d3703b808200420042903e00c37039808200441f8076a41186a2234202e290300370300200441f8076a41106a222e202f290300370300200441f8076a41086a222f203e290300370300200420042903c00c3703f80720042802a0072205417f4c0d02200428029807213e0240024020050d00410121420c010b2005102f2242450d020b2042203e200510bf09213e202220042903b809370200202241086a2002290300370200202241106a2035290300370200202241186a20432903003702002021200429039809370200202141086a200e290300370200202141106a2039290300370200202141186a203d290300370200200420313602c80d200441003602c40d200441073a00c00d202041186a2024290300370200202041106a2041290300370200202041086a2038290300370200202020042903f808370200201520042903d808370200201541086a202b290300370200201541106a2023290300370200201541186a2032290300370200201420042903b808370200201441086a2044290300370200201441106a2011290300370200201441186a202d290300370200200a41386a2027290300370200200a41306a201f290300370200200a41286a202c290300370200200a41206a201e290300370200200a41186a2025290300370200200a41106a2037290300370200200a41086a2026290300370200200a20042903d809370200201341186a2030290300370200201341106a2006290300370200201341086a20402903003702002013200429039808370200200141186a2034290300370200200141106a202e290300370200200141086a202f290300370200200120042903f807370200200b41186a200441d8076a41186a290200370200200b41106a200441d8076a41106a290200370200200b41086a200441d8076a41086a290200370200200b20042902d8073702002004203a36029c102004200736029810200420053602941020042005360290102004203e36028c10200441c00d6a10a902200441d8096a200441d0046a10b50520042802a807213120042802a407213220042802a0072124200428029c07212b2004280298072138200428029407212d2004280290072140200428028c07210220042802880721112004280284072123200428028007213520042802fc06210e20042802f806213d20042802f4062139200d20042903d809370000200d41086a2026290300370000200d41106a2037290300370000200d41186a2025290300370000200420073602c00d20042802900221052052200441d0046a41a40210bf091a203b41086a200441c8076a41086a280200360200203b20042903c8073702002004203a3602881020042005360284102004201036028010200420163703f80f200420333602f40f200441e00c6a200910df0320042802e80c213a20042802e00c2107200441003602880d200442013703800d200420042802c00d3602a00d200441800d6a200441a00d6a4104107e4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a200d4120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b200420042802c40d3602a00d200441800d6a200441a00d6a4104107e4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a20364120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b200441800d6a20514120107e4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a20504120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a204f4120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a204e4120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b200441800d6a204d41c000107e4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a204c4120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b4120102f2205450d01200442203702a40d200420053602a00d200441a00d6a204b4120107e200441800d6a20042802a00d220520042802a80d107e024020042802a40d450d00200510310b20042802ec0f2205410376210620042802e80f2125024002402005418004490d002006410274213702402005418080084f0d00200420374101723b01a00d200441800d6a200441a00d6a4102107e0c020b200420374102723602a00d200441800d6a200441a00d6a4104107e0c010b200420064102743a00c00c200441800d6a200441c00c6a4101107e0b200441800d6a2025200620054107716a220541037620054107714100476a107e20042802f80f2205410376210620042802f40f2125024002402005418004490d002006410274213702402005418080084f0d00200420374101723b01a00d200441800d6a200441a00d6a4102107e0c020b200420374102723602a00d200441800d6a200441a00d6a4104107e0c010b200420064102743a00a00d200441800d6a200441a00d6a4101107e0b200441800d6a2025200620054107716a220541037620054107714100476a107e20042004280280103602a00d200441800d6a200441a00d6a4104107e20042004280284103602a00d200441800d6a200441a00d6a4104107e20042004280288103602a00d200441800d6a200441a00d6a4104107e2007203a20042802800d20042802880d109f02024020042802840d450d0020042802800d10310b024020042802e40c450d00200710310b20042802e80f2105024020042802f00f2206450d00200510310b200420063602f00f200420053602e80f024020042802fc0f450d0020042802f40f10310b200441a00d6a200910e10320042802a80d212520042802a00d213a200441003602c80d200442013703c00d200441c00d6a200e10cb01200e410c6c21060240200e450d00203920066a21072039210503402005280200200541086a280200200441c00d6a10ce012005410c6a22052007470d000b0b200441c00d6a201110cb012011410474210702402011450d00203520076a2109203521050340200420052802003602800d200441c00d6a200441800d6a4104107e200541046a2802002005410c6a280200200441c00d6a10ce01200541106a22052009470d000b0b0240024020020d00200441003a00c00c200441c00d6a200441c00c6a4101107e0c010b200441013a00c00c200441c00d6a200441c00c6a4101107e2002202d200441c00d6a10ce010b20382024200441c00d6a10ce01200420323602800d200441c00d6a200441800d6a4104107e200420313602800d200441c00d6a200441800d6a4104107e203a202520042802c00d220520042802c80d109f02024020042802c40d450d00200510310b024020042802a40d450d00203a10310b0240200e450d002039210503400240200541046a280200450d00200528020010310b2005410c6a2105200641746a22060d000b0b0240203d450d00203d410c6c450d00203910310b02402011450d00203541086a2105034002402005280200450d002005417c6a28020010310b200541106a2105200741706a22070d000b0b0240202341ffffffff0071450d00203510310b02402002450d002040450d00200210310b0240202b450d00203810310b024020042802b0072205450d00200541c1006c450d0020042802ac0710310b024020042802c007450d0020042802b80710310b20082105203c21070c000b0b1039000b103b000b0240200341046a2802002205450d00200541346c450d00200328020010310b0240200241086a2802002206450d0020022802002105200641f4026c210603402005109b02200541f4026a21052006418c7d6a22060d000b0b200241046a2802002205450d00200541f4026c450d00200228020010310b20044190156a24000b860201037f230041d0006b22022400200241086a419acbc400410310a702200241186a4180cec400411310a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b990403037f017e037f230041d0006b220324002003200236020420032001360200200341086a2001200210d202024002400240200328020822020d00200041003602080c010b200328020c21042003200341106a28020036021c20032002360218200341386a200341186a10b103024002400240024020032802382205450d00200329023c2206422088a72107024002402006a72201694101470d0020014102490d0020012007470d010b200120076b417f20014101200141016a41024b1b677620076b41016a22084f0d00200720086a22082007490d062008ad420c7e2206422088a74541027421082006a721090240024020010d00200341003602380c010b200341c0006a41043602002003200536023820032001410c6c36023c0b200341286a20092008200341386a104e200341306a280200210120032802284101460d02200328022c21052001410c6e21010b20050d020b20034100360230200342013703282003410c360224200320033602202003200341286a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341206a360248200341346a41d8ddc900200341386a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602080c020b2001450d031039000b2000200136020c2000200536020820002007360204200041003602000b2004450d00200210310b200341d0006a24000f0b103b000b860201037f230041d0006b22022400200241086a419acbc400410310a702200241186a41eccec400411610a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d00200210ab020b0f0b200041086a10ad01200041046a220228020010f203200228020010310bd00101047f230041106b22022400024002402000280208220341027441046a2204417f4c0d00200028020021000240024020040d00410121050c010b2004102f2205450d020b2002410036020820022004360204200220053602002002200310cb0102402003450d002003410274210303402002200028020036020c20022002410c6a4104107e200041046a21002003417c6a22030d000b0b20012802002001280204200228020022002002280208109f0202402002280204450d00200010310b200241106a24000f0b103b000b1039000b980101027f230041106b220224002000280200210320012000280208220010cb0102402000450d0020032000412c6c6a21000340200220032802003602042001200241046a4104107e2001200341046a4120107e2002200341246a2802003602082001200241086a4104107e2002200341286a28020036020c20012002410c6a4104107e2003412c6a22032000470d000b0b200241106a24000b860e020e7f037e230041e0016b2204240020044190016a200110f803200441b8016a200428029001220520042802980110f903200441c0016a280200410020042802b80122061b210120042802bc0121070240200428029401450d00200510310b2006410420061b21080240024002402001450d002008200141286c6a2109200441b8016a410472210a200441b8016a41256a2105024002400240200341ff0171220b4102460d00200821010340200441e8006a41206a220c200141206a280200360200200441e8006a41186a220d200141186a290200370300200441e8006a41106a220e200141106a290200370300200441e8006a41086a220f200141086a29020037030020042001290200370368200141246a2d00002110200441e4006a41026a2211200141276a2d00003a00002004200141256a2f00003b016420104102460d04200441b8016a41206a200c280200360200200441b8016a41186a200d290300370300200441b8016a41106a200e290300370300200441b8016a41086a200f290300370300200520042f01643b0000200541026a20112d00003a0000200420042903683703b801200420103a00dc010240200a2002412010c2090d002010200b460d030b200141286a22012009470d000c040b0b200821010340200441e8006a41206a2210200141206a280200360200200441e8006a41186a220c200141186a290200370300200441e8006a41106a220d200141106a290200370300200441e8006a41086a220e200141086a29020037030020042001290200370368200141246a2d00002103200441e4006a41026a220f200141276a2d00003a00002004200141256a2f00003b016420034102460d03200441b8016a41206a2010280200360200200441b8016a41186a200c290300370300200441b8016a41106a200d290300370300200441b8016a41086a200e290300370300200520042f01643b0000200541026a200f2d00003a0000200420042903683703b801200420033a00dc010240200a2002412010c209450d0020044190016a41206a41002802c0f54036020020044190016a41186a41002902b8f54037030020044190016a41106a41002902b0f540370300200141286a22012009470d010c040b0b20044190016a41206a200441b8016a41206a28020036020020044190016a41186a200441b8016a41186a29030037030020044190016a41106a200441b8016a41106a29030037030020044190016a41086a200441b8016a41086a2903003703002004418c016a41026a200541026a2d00003a0000200420042903b80137039001200420052f00003b018c010c010b20044190016a41206a200441b8016a41206a28020036020020044190016a41186a200441b8016a41186a29030037030020044190016a41106a200441b8016a41106a29030037030020044190016a41086a200441b8016a41086a2903003703002004418c016a41026a200541026a2d00003a0000200420042903b80137039001200420052f00003b018c010b200441c0006a41206a220120044190016a41206a2205280200360200200441c0006a41186a221020044190016a41186a2202290300370300200441c0006a41106a220a20044190016a41106a2209290300370300200441c0006a41086a220c20044190016a41086a220d2903003703002004413c6a41026a220e2004418c016a41026a2d00003a00002004200429039001370340200420042f018c013b013c200341ff01714102470d010b41012105410221030c010b2005200128020022013602002002201029030022123703002009200a2903002213370300200d200c2903002214370300200441e8006a41026a200e2d00003a0000200441c2016a2014370100200441ca016a2013370100200441d2016a2012370100200441da016a200136010020042004290340221237039001200420042f013c3b0168200420123701ba01410021050b2007410020061b2101200441106a41086a200441b8016a41086a2210290100370300200441106a41106a200441b8016a41106a290100370300200441106a41186a200441b8016a41186a290100370300200441106a411e6a200441b8016a411e6a2901003701002004410c6a41026a2202200441e8006a41026a2d00003a0000200420042901b801370310200420042f01683b010c0240024020050d0020002004290112370104200020042f010c3b0029200041286a20033a0000200041246a200441326a2801003601002000411c6a2004412a6a290100370100200041146a200441226a2901003701002000410c6a2004411a6a2901003701002000412b6a20022d00003a000002402001450d00200141286c450d00200810310b410021010c010b200441b8016a410310f6032000410c6a2010280200360200200020042903b80137020402402001450d00200141286c450d00200810310b410121010b20002001360200200441e0016a24000ba90201047f230041c0006b22022400410b210341e7f8c000210441072105024002400240024002400240024002400240200141ff01710e09000102030405060708000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41dcbcc3001047000b4107210341e0f8c0002104410021050c060b4108210341d8f8c0002104410121050c050b4108210341d0f8c0002104410221050c040b41c5f8c0002104410321050c030b4109210341bcf8c0002104410421050c020b410c210341b0f8c0002104410521050c010b41a5f8c0002104410621050b20004183b6013b0100200041086a2003360200200041046a2004360200200041026a20053a0000200241c0006a24000baf0802057f017e23004190096b22032400200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a29000037030020032001290000370300024002404110102f2204450d00200441f8c8c00036020c2004410136020820044281808080103702004110102f2201450d00200141e0c8c00036020c20014101360208200142818080801037020020042004280200417f6a2205360200024020050d002004280208200428020c2802001102000240200428020c280204450d00200428020810310b200441046a22052005280200417f6a220536020020050d00200410310b200341d8006a41206a2204200041206a290200370300200341d8006a41186a2205200041186a290200370300200341d8006a41106a2206200041106a290200370300200341d8006a41086a2207200041086a29020037030020032000290200370358200128020041016a220041014d0d0120012000360200200341c0016a41206a2004290300370300200341c0016a41186a2005290300370300200341c0016a41106a2006290300370300200341c0016a41086a2007290300370300200320032903583703c001412c102f2204450d0020042001360200200420032903c0013702042004410c6a200341c8016a290300370200200441146a200341c0016a41106a2903003702002004411c6a200341d8016a290300370200200441246a200341e0016a2903003702004110102f2200450d00200041c8c8c00036020c20002004360208200042818080801037020020012001280200417f6a2204360200024020040d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22042004280200417f6a220436020020040d00200110310b200341c0016a200241c00710bf091a200341e2006a200341086a290300370100200341ea006a200341106a290300370100200341f2006a200341186a290300370100200341d8006a41206a2003411e6a29010037010020034180023b01582003200329030037015a2003200036028001200341286a200341c0016a200341d8006a109702200320032900493703c0012003200341d0006a2800003600c7010240024020032903284201510d00410721010c010b200341286a41206a2d0000210420032903302108200320032800c70136005f200320032903c0013703584107210120084202510d002003200328005f3600c701200320032903583703c001200421010b200320032903c0013703b001200320032800c7013600b701200341c8016a20013a0000200341c9016a20032903b001370000200341d0016a20032800b701360000200341003a00c401200341133a00c001200320032f00bd013b00c5012003200341bf016a2d00003a00c701200341d4016a200341d8006a41d40010bf091a200341c0016a10a90220034190096a24000f0b1039000b00000bb20201037f230041e0006b22022400200241086a41b9c8c000410510a702200241186a41db8cc500410710a702024002404120102f2203450d002002422037023c20022003360238200241386a20014120107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b1039000b103b000bfa0a04047f017e0c7f037e230041d0016b220324002003200236021420032001360210200341186a2001200210d20202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb0102400240024020032802080d00024002400240200328020c2206200328022c41286e2201200120064b1bad42287e2207422088a70d002007a72201417f4c0d0002400240024020010d00410421080c010b2001102f2208450d010b200141286e2102024020060d00410021060c030b200341a8016a41017221094100210a4100210b0340200341a8016a200341286a10b5010240024020032d00a8014101460d0020034188016a41186a220c200941186a29000037030020034188016a41106a220d200941106a29000037030020034188016a41086a220e200941086a2900003703002003200929000037038801200328022c2201450d002003280228220f2d0000211020032001417f6a221136022c2003200f41016a360228410021120240024020100e020100020b410121120b20114104490d00200341a8016a41086a200e290300370300200341a8016a41106a200d290300370300200341a8016a41186a200c29030037030020034182016a41026a20034185016a41026a2d00003a000020032003290388013703a801200f280001211320032001417b6a36022c2003200f41056a360228200320032f0085013b0182010c010b410221120b200341e0006a41186a2201200341a8016a41186a290300370300200341e0006a41106a220f200341a8016a41106a290300370300200341e0006a41086a2210200341a8016a41086a290300370300200341dc006a41026a220c20034182016a41026a2d00003a0000200320032903a801370360200320032f0182013b015c024020124102460d00200341386a41186a220d2001290300370300200341386a41106a220e200f290300370300200341386a41086a220f2010290300370300200341346a41026a2210200c2d00003a000020032003290360370338200320032f015c3b01340240200b2002470d00200241016a22012002490d042002410174220c2001200c20014b1b22014104200141044b1bad42287e2207422088a74541027421012007a7210c0240024020020d00200341003602a8010c010b200341043602b001200320083602a8012003200241286c3602ac010b20034188016a200c2001200341a8016a104e200328029001210102402003280288014101470d0020010d040c050b200328028c012108200141286e21020b2008200a6a22012013360200200d2903002107200e2903002114200f290300211520032903382116200141246a20123a0000200141046a20163702002001410c6a2015370200200141146a20143702002001411c6a2007370200200141256a20032f01343b0000200141276a20102d00003a0000200a41286a210a2006200b41016a220b460d040c010b0b2002450d04200241286c450d040c030b1039000b103b000b2008450d01200328022c2201410f4b0d022002450d01200241286c450d010b200810310b200341003602900120034201370388012003410c3602642003200341106a360260200320034188016a360238200341bc016a4101360200200342013702ac012003419086c4003602a8012003200341e0006a3602b801200341386a41d8ddc900200341a8016a10401a20032802880120032802900110d9040240200328028c01450d0020032802880110310b200041003602000c010b2000200236020420002008360200200041106a20032802282202290000370300200041086a2006360200200041186a200241086a2900003703002003200141706a36022c2003200241106a3602280b2005450d00200410310b200341d0016a24000bd70201097f410121044100210502400240024020020e020201000b200341046a21062003280200210720032d002441ff017121084100210503400240024020012002410176220920056a220a41286c6a220b41046a2006412010c209220c450d00417f4101200c4100481b210c0c010b4100417f200b2d0024220c200847200c2008491b200c2008461b220c0d00417f200b280200220c200747200c2007491b210c0b2005200a200c4101461b2105200220096b220241014b0d000b0b024002402001200541286c6a220c41046a200341046a412010c2092202450d00417f410120024100481b21020c010b02404100417f200c2d0024220220032d002422094720022009491b20022009461b22020d0041ff012102200c280200220c20032802002209490d01200c20094721020b20020d00410021040c010b2005200241ff017141ff01466a21050b20002005360204200020043602000ba90202037f017e230041206b2203240002400240200228020841286c41146a2204417f4c0d002004102f2205450d012003410036020820032004360204200320053602002002280200210420032002280208220510cb0102402005450d00200541286c210503402003200441046a4120107e02400240200441246a2d00004101460d00200341003a00102003200341106a4101107e0c010b200341013a00102003200341106a4101107e0b200320042802003602102003200341106a4104107e200441286a2104200541586a22050d000b0b200229031021062003200241186a290300370318200320063703102003200341106a4110107e20002001200328020022042003280208109f0202402003280204450d00200410310b200341206a24000f0b103b000b1039000be00101027f230041106b220224000240411a102f2203450d002002421a37020420022003360200200220012802004110107e200220012802044120107e2002200128020836020c20022002410c6a4104107e2002200128020c36020c20022002410c6a4104107e0240024020012802102d00004101460d00200241003a000c20022002410c6a4101107e0c010b200241013a000c20022002410c6a4101107e0b200220012f01143b010c20022002410c6a4102107e2000200228020022012002280208109a0102402002280204450d00200110310b200241106a24000f0b1039000bb20201037f230041e0006b22022400200241086a41b9c8c000410510a702200241186a41ce8cc500410d10a702024002404120102f2203450d002002422037023c20022003360238200241386a20014120107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241d0006a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b1039000b103b000bfa1004047f017e167f037e230041b0026b220324002003200236021420032001360210200341186a2001200210d20202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb0102400240024020032802080d00024002400240200328020c2206200328022c41c4006e2201200120064b1bad42c4007e2207422088a70d002007a72201417f4c0d0002400240024020010d00410421080c010b2001102f2208450d010b200141c4006e2109024020060d00410021060c030b200341f0016a410472210a20034189026a210b20034182026a210c200341fb016a210d200341f0016a410172210e4100210f02400340200341f0016a200341286a10b50120032d00f0014101460d01200f41016a2110200341c0016a41186a2211200e41186a290000370300200341c0016a41106a2212200e41106a290000370300200341c0016a41086a2213200e41086a2900003703002003200e2900003703c00141002101200341003602f001417f2102200328022c2114034020142001460d02200a20016a200328022822152d00003a00002003200141016a22163602f0012003201420026a36022c2003201541016a3602282002417f6a21022016210120164120470d000b200341a8026a41026a2201200d41026a2d00003a0000200341a4026a41026a2202200c41026a2d00003a0000200341a0026a41026a2217200b41026a2d00003a00002003200a2f01003b01ac022003200a41026a2d00003a00ae022003200d2f00003b01a8022003200c2f00003b01a4022003200b2f00003b01a00220032800f701211820032801fe012119200328008502211a200328029002211b200328028c02211c200320032d00ae023a00ee01200320032f01ac023b01ec012003419c026a41026a221d20012d00003a0000200320032f01a8023b019c0220034198026a41026a220120022d00003a0000200320032f01a4023b01980220034194026a41026a220220172d00003a0000200320032f01a0023b019402200341e8016a41026a2217201d2d00003a0000200320032f019c023b01e801200341e4016a41026a221d20012d00003a0000200320032f0198023b01e401200341e0016a41026a220120022d00003a0000200320032f0194023b01e001201420166b22024104490d01200341a0016a41086a22162013290300370300200341a0016a41106a22142012290300370300200341a0016a41186a2212201129030037030020034198016a41026a221120172d00003a0000200320032903c0013703a001200320032f01ec013b019c01200320032d00ee013a009e01200320032f01e8013b019801201528000121132003201541056a36022820032002417c6a36022c20034194016a41026a2202201d2d00003a000020034190016a41026a221520012d00003a0000200341f0006a41086a22012016290300370300200341f0006a41106a22162014290300370300200341f0006a41186a22142012290300370300200320032f01e4013b019401200320032f01e0013b019001200320032903a001370370200320032d009e013a006e200320032f019c013b016c200341e8006a41026a221220112d00003a0000200320032f0198013b0168200341e4006a41026a221120022d00003a0000200320032f0194013b0164200341e0006a41026a220220152d00003a0000200320032f0190013b0160200341c0006a41186a22152014290300370300200341c0006a41106a22142016290300370300200341c0006a41086a2216200129030037030020032003290370370340200320032d006e3a003e200320032f016c3b013c200341386a41026a221720122d00003a0000200320032f01683b0138200341346a41026a221220112d00003a0000200320032f01643b0134200341306a41026a221120022d00003a0000200320032f01603b01300240200f2009470d00200f4101742201200f41016a2202200120024b1b22014104200141044b1bad42c4007e2207422088a74541027421012007a7210202400240200f0d00200341003602f0010c010b200341043602f801200320083602f0012003200f41c4006c3602f4010b200341c0016a20022001200341f0016a104e20032802c8012101024020032802c0014101470d0020010d040c050b20032802c4012108200141c4006e21090b2008200f41c4006c6a22012013360200201529030021072014290300211e2016290300211f20032903402120200141266a20032d003e3a0000200120032f013c3b0124200120203702042001410c6a201f370200200141146a201e3702002001411c6a2007370200200141276a20183600002001412e6a20193600002001412b6a20032f01383b00002001412d6a20172d00003a0000200141326a20032f01343b0000200141346a20122d00003a0000200141356a201a360000200141396a20032f01303b00002001413b6a20112d00003a0000200141c0006a201b3600002001413c6a201c3600002010210f20102006460d040c000b0b2009450d04200941c4006c450d040c030b1039000b103b000b2008450d01200328022c2201410f4b0d022009450d01200941c4006c450d010b200810310b200341003602c801200342013703c0012003410c3602a4012003200341106a3602a0012003200341c0016a36027020034184026a4101360200200342013702f4012003419086c4003602f0012003200341a0016a36028002200341f0006a41d8ddc900200341f0016a10401a20032802c00120032802c80110d904024020032802c401450d0020032802c00110310b200041003602000c010b2000200936020420002008360200200041106a20032802282202290000370300200041086a2006360200200041186a200241086a2900003703002003200141706a36022c2003200241106a3602280b2005450d00200410310b200341b0026a24000bc10102047f017e230041206b22032400024002402002280208220441c4006c41146a2205417f4c0d000240024020050d00410121060c010b2005102f2206450d02200228020821040b200341003602082003200536020420032006360200200228020020042003108206200229031021072003200241186a290300370318200320073703102003200341106a4110107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000f0b103b000b1039000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a1081040f0b0240024002400240200041086a2802000e040a000102030b2000410c6a2202280200108004200228020010310f0b2000410c6a2202280200108004200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2202280200108004200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a2202280200108004200228020010310f0b200041106a2202280200108004200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a2202280200108004200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a2202280200108004200228020010310f0b200041c8006a2202280200108004200228020010310f0b02400240200041086a2802000e020200010b200041106a108204200041d8036a1081040f0b2000410c6a2202280200108304200228020010310f0b0b820801027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0620024198046c450d06200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0420024198046c450d04200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a1082040f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a1082040240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041086a280200450d00200041046a28020010310b0f0b200041086a108204200041046a2202280200108104200228020010310bec340002400240024002400240024002400240024020002802000e080800010203040506070b0240024002400240024020002d00080e090c0c0001020c0c030c040b200028022c4101470d0b200041346a280200450d0b200028023010310f0b200028020c4101470d0a200041146a280200450d0a200028021010310f0b200041206a2802004101470d09200041286a280200450d09200028022410310f0b200041106a280200450d08200028020c10310f0b200028020c4101470d07200041146a280200450d07200028021010310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b02400240024002400240200041c0006a2d00000e090b0b0001020b0b030b040b20002802644101470d0a200041ec006a280200450d0a200028026810310f0b20002802444101470d09200041cc006a280200450d09200028024810310f0b200041d8006a2802004101470d08200041e0006a280200450d08200028025c10310f0b200041c8006a280200450d07200028024410310f0b20002802444101470d06200041cc006a280200450d06200028024810310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b02400240024002400240200041f8006a2d00000e090a0a0001020a0a030a040b200028029c014101470d09200041a4016a280200450d0920002802a00110310f0b200028027c4101470d0820004184016a280200450d0820002802800110310f0b20004190016a2802004101470d0720004198016a280200450d0720002802940110310f0b20004180016a280200450d06200028027c10310f0b200028027c4101470d0520004184016a280200450d0520002802800110310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b024002400240024002400240200041f8006a2d00000e09050500010205050305040b200028029c014101470d04200041a4016a280200450d0420002802a00110310c040b200028027c4101470d0320004184016a280200450d0320002802800110310c030b20004190016a2802004101470d0220004198016a280200450d0220002802940110310c020b20004180016a280200450d01200028027c10310c010b200028027c4101470d0020004184016a280200450d0020002802800110310b02400240024002400240200041b0016a2d00000e09090900010209090309040b20002802d4014101470d08200041dc016a280200450d0820002802d80110310f0b20002802b4014101470d07200041bc016a280200450d0720002802b80110310f0b200041c8016a2802004101470d06200041d0016a280200450d0620002802cc0110310f0b200041b8016a280200450d0520002802b40110310f0b20002802b4014101470d04200041bc016a280200450d0420002802b80110310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b024002400240024002400240200041f8006a2d00000e09050500010205050305040b200028029c014101470d04200041a4016a280200450d0420002802a00110310c040b200028027c4101470d0320004184016a280200450d0320002802800110310c030b20004190016a2802004101470d0220004198016a280200450d0220002802940110310c020b20004180016a280200450d01200028027c10310c010b200028027c4101470d0020004184016a280200450d0020002802800110310b024002400240024002400240200041b0016a2d00000e09050500010205050305040b20002802d4014101470d04200041dc016a280200450d0420002802d80110310c040b20002802b4014101470d03200041bc016a280200450d0320002802b80110310c030b200041c8016a2802004101470d02200041d0016a280200450d0220002802cc0110310c020b200041b8016a280200450d0120002802b40110310c010b20002802b4014101470d00200041bc016a280200450d0020002802b80110310b02400240024002400240200041e8016a2d00000e09080800010208080308040b200028028c024101470d0720004194026a280200450d0720002802900210310f0b20002802ec014101470d06200041f4016a280200450d0620002802f00110310f0b20004180026a2802004101470d0520004188026a280200450d0520002802840210310f0b200041f0016a280200450d0420002802ec0110310f0b20002802ec014101470d03200041f4016a280200450d0320002802f00110310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b024002400240024002400240200041f8006a2d00000e09050500010205050305040b200028029c014101470d04200041a4016a280200450d0420002802a00110310c040b200028027c4101470d0320004184016a280200450d0320002802800110310c030b20004190016a2802004101470d0220004198016a280200450d0220002802940110310c020b20004180016a280200450d01200028027c10310c010b200028027c4101470d0020004184016a280200450d0020002802800110310b024002400240024002400240200041b0016a2d00000e09050500010205050305040b20002802d4014101470d04200041dc016a280200450d0420002802d80110310c040b20002802b4014101470d03200041bc016a280200450d0320002802b80110310c030b200041c8016a2802004101470d02200041d0016a280200450d0220002802cc0110310c020b200041b8016a280200450d0120002802b40110310c010b20002802b4014101470d00200041bc016a280200450d0020002802b80110310b024002400240024002400240200041e8016a2d00000e09050500010205050305040b200028028c024101470d0420004194026a280200450d0420002802900210310c040b20002802ec014101470d03200041f4016a280200450d0320002802f00110310c030b20004180026a2802004101470d0220004188026a280200450d0220002802840210310c020b200041f0016a280200450d0120002802ec0110310c010b20002802ec014101470d00200041f4016a280200450d0020002802f00110310b02400240024002400240200041a0026a2d00000e09070700010207070307040b20002802c4024101470d06200041cc026a280200450d0620002802c80210310f0b20002802a4024101470d05200041ac026a280200450d0520002802a80210310f0b200041b8026a2802004101470d04200041c0026a280200450d0420002802bc0210310f0b200041a8026a280200450d0320002802a40210310f0b20002802a4024101470d02200041ac026a280200450d0220002802a80210310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b024002400240024002400240200041f8006a2d00000e09050500010205050305040b200028029c014101470d04200041a4016a280200450d0420002802a00110310c040b200028027c4101470d0320004184016a280200450d0320002802800110310c030b20004190016a2802004101470d0220004198016a280200450d0220002802940110310c020b20004180016a280200450d01200028027c10310c010b200028027c4101470d0020004184016a280200450d0020002802800110310b024002400240024002400240200041b0016a2d00000e09050500010205050305040b20002802d4014101470d04200041dc016a280200450d0420002802d80110310c040b20002802b4014101470d03200041bc016a280200450d0320002802b80110310c030b200041c8016a2802004101470d02200041d0016a280200450d0220002802cc0110310c020b200041b8016a280200450d0120002802b40110310c010b20002802b4014101470d00200041bc016a280200450d0020002802b80110310b024002400240024002400240200041e8016a2d00000e09050500010205050305040b200028028c024101470d0420004194026a280200450d0420002802900210310c040b20002802ec014101470d03200041f4016a280200450d0320002802f00110310c030b20004180026a2802004101470d0220004188026a280200450d0220002802840210310c020b200041f0016a280200450d0120002802ec0110310c010b20002802ec014101470d00200041f4016a280200450d0020002802f00110310b024002400240024002400240200041a0026a2d00000e09050500010205050305040b20002802c4024101470d04200041cc026a280200450d0420002802c80210310c040b20002802a4024101470d03200041ac026a280200450d0320002802a80210310c030b200041b8026a2802004101470d02200041c0026a280200450d0220002802bc0210310c020b200041a8026a280200450d0120002802a40210310c010b20002802a4024101470d00200041ac026a280200450d0020002802a80210310b02400240024002400240200041d8026a2d00000e09060600010206060306040b20002802fc024101470d0520004184036a280200450d0520002802800310310f0b20002802dc024101470d04200041e4026a280200450d0420002802e00210310f0b200041f0026a2802004101470d03200041f8026a280200450d0320002802f40210310f0b200041e0026a280200450d0220002802dc0210310c020b20002802dc024101470d01200041e4026a280200450d0120002802e00210310f0b02400240024002400240024020002d00080e09050500010205050305040b200028022c4101470d04200041346a280200450d04200028023010310c040b200028020c4101470d03200041146a280200450d03200028021010310c030b200041206a2802004101470d02200041286a280200450d02200028022410310c020b200041106a280200450d01200028020c10310c010b200028020c4101470d00200041146a280200450d00200028021010310b024002400240024002400240200041c0006a2d00000e09050500010205050305040b20002802644101470d04200041ec006a280200450d04200028026810310c040b20002802444101470d03200041cc006a280200450d03200028024810310c030b200041d8006a2802004101470d02200041e0006a280200450d02200028025c10310c020b200041c8006a280200450d01200028024410310c010b20002802444101470d00200041cc006a280200450d00200028024810310b024002400240024002400240200041f8006a2d00000e09050500010205050305040b200028029c014101470d04200041a4016a280200450d0420002802a00110310c040b200028027c4101470d0320004184016a280200450d0320002802800110310c030b20004190016a2802004101470d0220004198016a280200450d0220002802940110310c020b20004180016a280200450d01200028027c10310c010b200028027c4101470d0020004184016a280200450d0020002802800110310b024002400240024002400240200041b0016a2d00000e09050500010205050305040b20002802d4014101470d04200041dc016a280200450d0420002802d80110310c040b20002802b4014101470d03200041bc016a280200450d0320002802b80110310c030b200041c8016a2802004101470d02200041d0016a280200450d0220002802cc0110310c020b200041b8016a280200450d0120002802b40110310c010b20002802b4014101470d00200041bc016a280200450d0020002802b80110310b024002400240024002400240200041e8016a2d00000e09050500010205050305040b200028028c024101470d0420004194026a280200450d0420002802900210310c040b20002802ec014101470d03200041f4016a280200450d0320002802f00110310c030b20004180026a2802004101470d0220004188026a280200450d0220002802840210310c020b200041f0016a280200450d0120002802ec0110310c010b20002802ec014101470d00200041f4016a280200450d0020002802f00110310b024002400240024002400240200041a0026a2d00000e09050500010205050305040b20002802c4024101470d04200041cc026a280200450d0420002802c80210310c040b20002802a4024101470d03200041ac026a280200450d0320002802a80210310c030b200041b8026a2802004101470d02200041c0026a280200450d0220002802bc0210310c020b200041a8026a280200450d0120002802a40210310c010b20002802a4024101470d00200041ac026a280200450d0020002802a80210310b024002400240024002400240200041d8026a2d00000e09050500010205050305040b20002802fc024101470d0420004184036a280200450d0420002802800310310c040b20002802dc024101470d03200041e4026a280200450d0320002802e00210310c030b200041f0026a2802004101470d02200041f8026a280200450d0220002802f40210310c020b200041e0026a280200450d0120002802dc0210310c010b20002802dc024101470d00200041e4026a280200450d0020002802e00210310b0240024002400240024020004190036a2d00000e09050500010205050305040b20002802b4034101470d04200041bc036a280200450d0420002802b80310310f0b2000280294034101470d032000419c036a280200450d0320002802980310310f0b200041a8036a2802004101470d02200041b0036a280200450d0220002802ac0310310f0b20004198036a280200450d0120002802940310310f0b2000280294034101470d002000419c036a280200450d0020002802980310310f0b0b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a1082040f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a1082040240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d0020021080040b0f0b200041086a108204200041046a2202280200108304200228020010310b8e0101027f02402002450d00200221040240034020022f01a62921052001450d012001417f6a2101200220054102746a41a8296a280200210220042802a82921040c000b0b200042003702082000200436020420002001360200200041146a2005360200200041106a2002360200200020033602180f0b20004100360204200041106a4100360200200041003602180b130020004102360204200041c8f5c0003602000bba6e06077f027e087f037e107f047e230022012102200141a0c9006b41607122032400024002400240200041c0f000700d002003418c376a200041c0f0006e36020020034180376a41086a220141003a00002003410d3a00803720034180376a10a90220034198136a2204420037030020034180136a41106a2205420037030020034180136a41086a22064200370300200342003703801320034180376a41b0a8c600410510a7022006200129000037030020032003290080373703801320034180376a4190fdc600410a10a70220042001290000370300200520032900803737030020034180376a20034180136a412010e2022003280280372107200329028437210820034188256a4190f3c000410510a70220034180376a4195f3c000410610a7024120102f2201450d012003422037028413200320013602801320034180136a20034188256a4110107e20034180136a20034180376a4110107e2003280288132201417f4c0d0220032802801321040240024020010d00410121050c010b2001102f2205450d020b20052004200110bf092104200341e8006a41086a20034180136a41086a2802002205360200200341e4006a41026a220620034180376a41026a2d00003a000020032003290380132209370368200320032f0080373b016420034194136a20053602002003200136028813200320013602841320032004360280132003200937028c134100210a200341003a009c1320034114360298132003419f136a20062d00003a0000200320032f01643b009d1320034180376a20034180136a1088044104210b024002402003280284370d004100210c0c010b20034180376a41047221054100210a4100210c4104210b0340200341f0126a41086a200541086a28020022013602002003200529020022093703f012200328028037210620034180c9006a41086a200136020020032009370380490240024002400240024002400240024020010e020501000b20034188256a41086a220d200328028049220441106a29030037030020034188256a41106a220e200441186a29030037030020034188256a41186a220f200441206a29030037030020034188256a41206a2210200441286a29030037030020034188256a41286a2211200441306a2903003703002003200429030837038825200429030021092004200441386a200141386c41486a10c009210420032001417f6a3602884920034180376a200610b702200328028037220120032802883720034180c9006a10d4030240200328028437450d00200110310b024020094201520d0020034180376a41286a2201201129030037030020034180376a41206a2211201029030037030020034180376a41186a200f29030037030020034180376a41106a200e29030037030020034180376a41086a200d290300370300200320032903882537038037200341d0006a200620034180376a10d30320112903002209200329035022127d221320095620012903002214200341d0006a41086a2903007d2009201254ad7d220920145620092014511b0d0020034180376a2013200910bc020b20042903004201520d05200a200c470d03200a41016a2201200a490d0b200a41017422042001200420014b1b22014104200141044b1b220141ffffffff0371200146410274210420014102742101200a0d0120034100360280370c020b024020032802804922012903004201520d00200141086a200141286a290300200141306a29030010bc020b20034180376a200610b702200328028037220120032802883710bd02200328028437450d04200110310c040b20034104360288372003200b360280372003200a410274360284370b200341f8006a2001200420034180376a104e2003280280012101024020032802784101470d002001450d090c080b200328027c210b2001410276210c0b200b200a4102746a2006360200200a41016a210a0c010b2003280284492201450d01200141386c450d0120032802804910310c010b2003280284492201450d00200141386c450d0020032802804910310b20034180376a20034180136a1088042003280284370d000b0b0240200328028413450d0020032802801310310b024020034190136a280200450d00200328028c1310310b02400240024002400240200a41144b0d00200a41014d0d04200b200a417f6a22054102746a2110410021060340200a20052201417f6a2205490d030240200a20056b22154102490d00200b20014102746a22012802002204200b20054102746a220d280200220f4f0d00200d2004360200024020154103490d002006417f6a211141002104201021010340200141046a220d280200220e200f4f0d0120112004460d052001200e360200200d210120062004417f6a2204470d000b200d21010b2001200f3602000b2010417c6a21102006417f6a210620050d000c050b0b200a410176220141ffffffff03712001470d0620014102742216417f4c0d062016102f2217450d05200b417c6a2118200b41746a21194104211a4100211b41002115200a211c0340201c21104100211c4101210f02402010417f6a2201450d000240024002400240024002400240200b20014102746a28020020104102742211200b6a41786a2802002204490d002010417e6a210e201920116a21054100211c4100210103400240200e2001470d002010210f0c090b200141016a21012004200528020022064f210d2005417c6a210520062104200d0d000b200141016a210f2001417f7320106a21010c010b201920116a210502400340024020014101470d00410021010c020b2001417f6a210120042005280200220649210d2005417c6a210520062104200d0d000b0b20102001490d012010200a4b0d02201020016b220f4101762206450d00200b20014102746a2104201820116a210503402004280200210d200420052802003602002005200d360200200441046a21042005417c6a21052006417f6a22060d000b0b024020010d002001211c0c060b0240200f41094d0d002001211c0c060b2010200a4b0d03200120106b2105200b20014102746a2111034020102001417f6a221c490d0502402010201c6b220f4102490d00200b20014102746a22012802002204200b201c4102746a2206280200220e4f0d00200620043602000240200f4103490d0041012104201121010340200141046a2206280200220d200e4f0d01200520046a4101460d062001200d360200200621012005200441016a22046a0d000b200621010b2001200e3602000b201c450d062011417c6a21112005417f6a2105201c2101200f410a4f0d060c000b0b20012010419cabc8001062000b2010200a419cabc8001058000b2004200f41ecabc800103f000b20102001417f6a221c490d002010200a41acabc8001058000b201c201041acabc8001062000b02402015201b470d00201b41016a2201201b490d08201b41017422042001200420014b1b22014104200141044b1b220141ffffffff017120014641027421042001410374210102400240201b0d0020034100360280370c010b20034104360288372003201a360280372003201b410374360284370b20034188256a2001200420034180376a104e200328029025210102402003280288254101470d002001450d090c080b200328028c25211a2001410376211b0b201a20154103746a2201200f3602042001201c360200201541016a221d21150240201d4102490d0002400240024003400240024002400240201a201d2215417f6a221d4103746a2201280200450d002015410374201a6a220d41746a2802002206200128020422044d0d00201541024d0d08201a2015417d6a22014103746a2802042205200420066a4d0d01201541034d0d08200d41646a280200200520066a4b0d080c010b20154103490d0120012802042104201a2015417d6a22014103746a28020421050b20052004490d010b2015417e6a21010b02402015200141016a221e4d0d00201520014d0d02201a20014103746a221f2802042220201f2802006a2201201a201e4103746a22212802002222490d032001200a4b0d04201f41046a2123200b20224102746a22112021280204222441027422046a21062001410274210d02400240200120226b220e20246b22012024490d0020172011200410bf09220120046a21050240024020244101480d00200e20244a0d010b20112104200121010c020b200b200d6a210f2001210120112104034020042006280200220d2001280200220e200d200e49220d1b3602002001200141046a200d1b2101200441046a2104200641046a2006200d1b2206200f4f0d02200520014b0d000c020b0b201720062001410274220410bf09220e20046a21050240024020244101480d00200141014e0d010b20062104200e21010c010b2018200d6a210d200621040340200d2004417c6a220628020022012005417c6a220f2802002210201020014922011b3602002005200f20011b2105024020112006200420011b2204490d00200e21010c020b200d417c6a210d200e2101200e2005490d000b0b20042001200520016b417c7110bf091a2023202020246a360200201f20223602002021202141086a2015201e417f736a41037410c0091a41012115201d41014d0d050c010b0b201e201541bcabc800103f000b2001201541ccabc800103f000b2022200141dcabc8001062000b2001200a41dcabc8001058000b201c450d030c000b0b410120046b201541ecabc800103f000b2005200a418cabc8001061000b0240201b41ffffffff0171450d00201a10310b2016450d00201710310b2008420020071b21092007410420071b210e02400240200a0d002009422088a721100c010b200b200a4102746a21112009422088a72110200b21010340200141046a210f02400240024002400240024020100e020200010b2001280200210d410021010c020b2001280200210d4100210120102104034020012004410176220520016a2206200d200e20064102746a280200491b2101200420056b220441014b0d000c020b0b2001280200210d0c010b200d200e20014102746a280200460d010b20034180376a200d10ae02200328028037220420032802883710af0241ff017121010240200328028437450d00200410310b0240024020014107460d002001417f6a0e0701000000000001000b20034180376a410710ba020c010b0240200d10b0020d00200d10bb02200341073a0080370c010b20034180376a410a10ba020b200f2101200f2011470d000b0b02402010450d00200e20104102746a2110200e21010340200141046a210f024002400240024002400240200a0e020200010b2001280200210d410021010c020b2001280200210d41002101200a2104034020012004410176220520016a2206200d200b20064102746a280200491b2101200420056b220441014b0d000c020b0b2001280200210d0c010b200d200b20014102746a280200460d010b20034180376a200d10ae02200328028037220420032802883710af0241ff017121010240200328028437450d00200410310b0240024020014107460d002001417e6a0e06010000000001000b20034180376a410610ba020c010b0240200d10b1020d00200341073a0080370c010b20034180376a410910ba020b200f2101200f2010470d000b0b0240200c41ffffffff0371450d00200b10310b200942ffffffff0383500d00200e10310b20034198c9006a2201420037030020034190c9006a220b420037030020034180c9006a41086a220442003703002003420037038049200341f0126a4188bbc200410810a7022004200341f0126a41086a2205290000370300200320032900f01237038049200341f0126a4190bbc200410b10a70220012005290000370300200b20032900f01237030020034180376a20034180c9006a412010bf02024002402003280280374101460d0042c0f0f50b21130c010b42c0f0f50b2113200020034180376a41086a2802006b220141d7044b0d00200120004b0d00024002402001450d0020034180376a21010c010b20034198376a2201420037030020034190376a2204420037030020034180376a41086a22054200370300200342003703803720034188256a41c686c500410910a702200520034188256a41086a220629000037030020032003290088253703803720034188256a41e4f3c500410c10a702200120062900003703002004200329008825370300200341c8006a20034180376a412010c0022003280248210d200328024c210e200142003703002004420037030020054200370300200342003703803720034188256a41c686c500410910a7022005200629000037030020032003290088253703803720034188256a41e4f3c500410c10a7022001200629000037030020042003290088253703002003200e41016a4101200d1b3602882520034180376a412020034188256a4104109f0220034180376a21010b4200210920034198376a2204420037030020034190376a2205420037030020034180376a41086a4200370300200342003703803720034188256a41c686c500410910a702200141086a20034188256a41086a2206290000370000200120032900882537000020034188256a41bcf3c500410810a70220042006290000370300200520032900882537030020034188256a2001412010e20202400240200328028825220d0d004104210d0c010b2001412010bd02200329028c2521090b02402009422088a72201450d00200d20014102746a2206417c6a211020034180376a41106a210e20034180376a41186a210f200d21040340200421010240034020034188256a2001280200220510890420034180376a2003280288252204200328029025108a0420032802b4374103470d01200141046a21010240200328028c25450d00200410310b20062001470d000c030b0b200f2903002114200329039037211220032802bc37211120032802c03721150240200328028c25450d00200410310b200141046a2104200342f0f2bd99e6ac9db7e4003703803720034188256a20034180376a2005108b04200f20034188256a41186a290300370300200e20034188256a41106a29030037030020034180376a41086a20034188256a41086a29030037030020032003290388253703803720034180c9006a41186a420037030020034180c9006a41106a420037030020034180c9006a41086a222442003703002003420037038049200341f0126a4188bbc200410810a7022024200341f0126a41086a221a290000370300200320032900f01237038049200341f0126a41f4ccc200410e10a702200b41086a201a290000370000200b20032900f012370000200341c0006a20034180c9006a412010c00220034180136a20034180376a20052003280244410020032802401b201120152012201410c202200e200329038013370200200e41086a20034180136a41086a2802003602002003200536028c37200341083a0088372003410c3a00803720034180376a10a90220102001470d000b0b42002113200942ffffffff0383500d00200d10310b20034198c9006a420037030020034190c9006a420037030020034180c9006a41086a220142003703002003420037038049200341f0126a4188bbc200410810a7022001200341f0126a41086a2204290000370300200320032900f01237038049200341f0126a4190bbc200410b10a702200b41086a2004290000370000200b20032900f01237000020034180376a20034180c9006a412010bf020240024002402003280280374101470d00200020034180376a41086a2802006b220141d7044b0d00200120004d0d010b42c0f0f50b210820034180c9006a211f200341f0126a21210c010b200341f0126a4188bbc200410810a70220034180c9006a41aabbc200410710a702200320013602782003200341f8006a410410c802370380132003418c376a200341f8006a41046a360200200320034180136a41086a360284372003200341f8006a36028837200320034180136a3602803720034188256a20034180376a108801200328029025220541206a2204417f4c0d020240024020040d00410121060c010b2004102f2206450d020b20034100360288372003200436028437200320063602803720034180376a200341f0126a4110107e20034180376a20034180c9006a4110107e20034180376a20032802882522042005107e0240200328028c25450d00200410310b2003280280372205200328028837108f0321040240200328028437450d00200510310b02402004450d004280e1eb172108200341f0126a212120034180c9006a211f0c010b02400240024002402001417f6a220420014d0d0020034180376a410041801210c1091a0c010b200341f8006a2004108c0420034180376a20032802782204200328028001108d04200329038037210920034180136a20034188376a41f81110bf091a024020094202510d0020034188256a20034180136a41f81110bf091a0b0240200328027c450d00200410310b20034180376a410041801210c1091a20094202520d010b20034180136a20034188376a41f81110bf091a420021090c010b20034180136a20034188256a41f81110bf091a0b200320093703803720034188376a20034180136a41f81110bf091a200341f8006a2001108c04200328028001210420032802782101418012102f2205450d01200342801237028c25200320053602882520034180376a20034188256a10c801200120042003280288252205200328029025109f020240200328028c25450d00200510310b0240200328027c450d00200110310b4280a3c3c7002108200341f0126a212120034180c9006a211f0b20034198376a2201420037030020034190376a2222420037030020034180376a41086a220442003703002003420037038037200341f0126a4188bbc200410810a7022004202141086a290000370300200320212900003703803720034180c9006a4190bbc200410b10a7022001201f41086a2900003703002022201f29000037030020034188256a20034180376a412010bf02024002402003280288254101470d00417f200329028c252209422088a7220141d8046a220420042001491b220120004b0d0020034180136a41186a2204420037030020034180136a41106a2205420037030020034180136a41086a220642003703002003420037038013200341f0126a41f3c6c000410610a7022006200341f0126a41086a220d290000370300200320032900f01237038013200341f0126a418c91c900410a10a7022004200d290000370300200520032900f01237030020034188256a20034180136a412010da0220032d008825210420034180c9006a41186a2205200341a1256a29000037030020034180c9006a41106a220620034199256a29000037030020034180c9006a41086a220d20034191256a2900003703002003200329008925370380490240024020044101460d0020034180376a41186a420037030020034180376a41106a420037030020034180376a41086a420037030020034200370380370c010b20034180376a41186a200529030037030020034180376a41106a200629030037030020034180376a41086a200d2903003703002003200329038049370380370b200341a4376a410c360200200341b1bbc2003602a0374110102f2204450d02200342103702841320032004360280134120102f2204450d022003422037028c25200320043602882520034188256a20034180376a4120107e20034180136a2003280288252204200328029025107e0240200328028c25450d00200410310b41b1bbc200410c20034180136a10cd01200341f8006a2003280280132204200328028813109a010240200328028413450d00200410310b2003280278210620034198c9006a420037030020034190c9006a420037030020034180c9006a41086a220442003703002003420037038049200341f0126a41f3c6c000410610a7022004200341f0126a41086a2205290000370300200320032900f01237038049200341f0126a41ec90c900410610a702200b41086a2005290000370000200b20032900f012370000200341386a20034180c9006a412010c0022003280238450d002001200328023c4b0d0020034198376a420037030020034190376a2204420037030020034180376a41086a220142003703002003420037038037200341f0126a4188bbc200410810a7022001202141086a290000370300200320212900003703803720034180c9006a41f4ccc200410e10a702202241086a201f41086a2900003700002022201f290000370000200341306a20034180376a412010c002200328023421052003280230210d2004200641d8047022063602002003418c376a20054100200d1b360200200141083a00002003410b3a00803720034180376a10a902200341f8006a2006108c0420034180376a20032802782204200328028001108d04200329038037212520034180136a200141f81110bf091a024020254202510d0020034188256a20034180136a41f81110bf091a0b0240200328027c450d00200410310b2009a7211c4100210120034180376a410041801210c1091a0240024020254202520d0020034180136a20034188376a41f81110bf091a420021250c010b20034180136a20034188256a41f81110bf091a0b034020034180376a2001108c04200328028037220420032802883710bd020240200328028437450d00200410310b200141016a220141d804470d000b20034198376a420037030020034180376a41106a420037030020034180376a41086a220142003703002003420037038037200341f0126a4188bbc200410810a7022001202141086a290000370300200320212900003703803720034180c9006a4190bbc200410b10a702202241086a201f41086a2900003700002022201f29000037000020034180376a412010bd02200341f8006a20034180136a41f81110bf091a20034188256a200341f8006a41f81110bf091a200341f0126a4188bbc200410810a70220034180c9006a419bbbc200410f10a7024120102f2201450d022003422037028437200320013602803720034180376a20214110107e20034180376a201f4110107e2003280288372204417f4c0d0320032802803721054101210102402004450d002004102f2201450d030b20012005200410bf092105200341f0126a41086a20034180376a41086a22012802002206360200200341e8006a41026a220d20034180136a41026a2d00003a0000200320032903803722093703f012200320032f0080133b016820034194c9006a20063602002003200436028849200320043602844920032005360280492003200937028c49200341013a009c492003410b360298492003419fc9006a200d2d00003a0000200320032f01683b009d4920034180376a20034180c9006a10c40202402003290380374201520d00200341b8376a2104034020034180136a41086a200141086a290300220937030020034180136a41106a200141106a290300221437030020034180136a41186a200141186a290300221237030020034180136a41206a200141206a290300370300200320012903002226370380132004290300212720032903b037212820034180376a41186a201237030020034180376a41106a201437030020012009370300200320263703803720034180376a2028202710bc0220034180376a20034180c9006a10c4022003290380374201510d000b0b0240200328028449450d0020032802804910310b024020034180c9006a41106a280200450d00200328028c4910310b200320253703803720034180376a41086a20034188256a41f81110bf091a200341f8146a4200370300200341f0146a4200370300200341d8146a4200370300200341d0146a4200370300200341b8146a4200370300200341b0146a420037030020034198146a420037030020034190146a4200370300200341f8136a4200370300200341f0136a4200370300200341d8136a4200370300200341d0136a420037030020034180136a41386a420037030020034180136a41306a420037030020034180136a41186a4200370300200341e8146a4100360200200341c8146a4100360200200341a8146a410036020020034188146a4100360200200341e8136a4100360200200341c8136a4100360200200341a8136a41003602002003420037039013200342013703e014200342013703c014200342013703a0142003420137038014200342013703e013200342013703c013200342013703a013200341003602881320034201370380134100210d034041002101024002400240024002400240024002400240200d0e080807000102030405060b410221010c070b410321010c060b410421010c050b410521010c040b410621010c030b410721010c020b2003410936028449200341e6dcc3003602804941bdbbc200410c20034180c9006a41ccbbc20041dcbbc2001041000b410121010b024020034180376a20014106746a22042903004201520d00200341206a200441306a290300200441386a2903002001109b01ad420010be09200341206a41086a29030021094101102f2204450d0420032903202114200420013a000020034180136a200d4105746a2201410472210502402001280204450d00200128020010310b20054101360200200120043602002001201437031020014101360208200141186a20093703000b0240200d450d0020034180136a200d4105746a221141086a21152011410472210f201141106a21044100210520034180136a21010240034020034180c9006a4100200541016a2205200d108e0420032d0080494101460d010240024020034180376a20032d008149220e4106746a22062903004201510d00200141106a220e290300200429030058200141186a22102903002209200441086a29030022145820092014511b0d01200141086a2802002206417f4c0d09200128020021240240024020060d004101211a0c010b2006102f221a450d090b201a2024200610bf09212420102903002109200e29030021140240200f280200450d00201128020010310b20042014370300200f20063602002011202436020020152006360200200420093703080c010b200341106a200641306a290300200641386a290300200e109b01ad420010be09200141106a290300221420032903107c2209200429030058200141186a290300200341106a41086a2903007c2009201454ad7c2214200441086a29030022125820142012511b0d00200141086a2802002206417f4c0d08200128020021100240024020060d00410121240c010b2006102f2224450d080b20242010200610bf09211a200641016a22102006490d08200641017422242010202420104b1b22244108202441084b1b21240240024020060d0020034100360280490c010b200341013602884920032006360284492003201a360280490b200341f0126a2024410120034180c9006a104e20032802f8122124024020032802f0124101470d002024450d090c080b20032802f412221a20066a200e3a00000240200f280200450d00201128020010310b20042009370300200f20243602002011201a36020020152010360200200420143703080b200141206a2101200d2005460d020c000b0b20032003290284493703f01241ecbbc2004128200341f0126a41ccbbc2004194bcc2001041000b200d41016a220d4108470d000b20032802e8142210417f4c0d0320032802e01421010240024020100d00410121040c010b2010102f2204450d030b20042001201010bf0921110240200328028413450d0020032802801310310b024020032802a413450d0020032802a01310310b024020032802c413450d0020032802c01310310b024020032802e413450d0020032802e01310310b0240200328028414450d0020032802801410310b024020032802a414450d0020032802a01410310b024020032802c414450d0020032802c01410310b024020032802e414450d0020032802e01410310b2010ad42387e2209422088a70d032009a72201417f4c0d030240024020010d00410821240c010b2001102f2224450d030b024002400240200141386e221a20104f0d00201a41017422042010200420104b1b22044104200441044b1bad42387e2209422088a74541037421042009a7210502400240200141374b0d0020034100360280130c010b20034180136a41086a410836020020032024360280132003201a41386c360284130b20034180c9006a2005200420034180136a104e20034188c9006a280200210102402003280280494101460d002003280284492124200141386e211a0c020b2001450d060c050b20100d00410021060c010b20034180136a41047221054100210620034182136a21152024210102400340201120066a2d0000220d4124460d01200342003703801320034200370388132003420037039013200342003703981320034180376a200d4106746a22042903004201520d04200429030821092004200329038013370308200441306a220e2903002114200e4200370300200441386a220e2903002112200e4200370300200441206a220e2903002126200e200329039813370300200441186a220e2903002127200e200329039013370300200441106a220e2903002128200e200329038813370300200441286a2204290300212520044200370300200320093703801320032026370398132003202737039013200320283703881320034180c9006a41086a2204200541086a29020037030020034180c9006a41106a220e200541106a29020037030020034180c9006a41186a220f200541186a28020036020020032005290200370380492001201237030820012014370300200141106a20093e0200200141146a2003290380493702002001411c6a2004290300370200200141246a200e2903003702002001412c6a200f280200360200200141346a200d3a0000200141306a20253e0200200141356a20032f0080133b0000200141376a20152d00003a0000200141386a21012010200641016a2206470d000b201021060b2010450d00201110310b02402006450d002024200641386c6a210f20034189376a211020034180376a41186a210d202421010340200141106a2802002106200141086a290300210920012903002114200d2001412c6a29020037030020034180376a41106a2205200141246a29020037030020034180376a41086a220e2001411c6a2902003703002003200141146a29020037038037200141346a2d000022044124460d0120034180c9006a41186a200d290300221237030020034180c9006a41106a2005290300222637030020034180c9006a41086a200e2903002227370300200320032903803722283703804920034180136a41186a201237030020034180136a41106a202637030020034180136a41086a2027370300200320283703801341072105024002400240024002400240024002402004413f710e24000000000000000001010101010101020202020202030303030304040404050505060607000b410021050c060b410121050c050b410221050c040b410321050c030b410421050c020b410521050c010b410621050b0240200620034180136a201420092005201c6a2004109b0110b60241ff01714101470d0020034180376a20034180136a2014200910a80320032d0080374107470d002010200329038013370000200341b8376a2009370300201041086a20034180136a41086a290300370000201041106a20034180136a41106a290300370000201041186a20034180136a41186a290300370000200320143703b037200341063a0088372003410b3a008037200320063602ac3720034180376a10a9020b200141386a2201200f470d000b0b0240201a450d00201a41386c450d00202410310b20034198376a420037030020034190376a420037030020034180376a41086a220142003703002003420037038037200341f0126a4188bbc200410810a7022001202141086a290000370300200320212900003703803720034180c9006a41f4ccc200410e10a702202241086a201f41086a2900003700002022201f290000370000200341086a20034180376a412010c0022003418c376a200328020c410020032802081b360200200141013a00002003410b3a00803720034180376a10a9020b20034180c9006a41186a420037030020034180c9006a41106a420037030020034180c9006a41086a220142003703002003420037038049200341f0126a41b5d8c800410d10a7022001200341f0126a41086a2204290000370300200320032900f01237038049200341f0126a41cfd8c800410c10a702200b41086a2004290000370000200b20032900f01237000020034180376a20034180c9006a412010b20242c0f0f50b210902400240410020032802f4372003280290384102461b220120004f0d00200341f0126a108f040240024020032802f81222200d004100211c200341003602f8120c010b2001417f7320006a211520032802f012220b41046a2101202041037441786a41037641016a21044100211c02400340200128020020154b0d01200141086a21012004201c41016a221c470d000b2004211c0b2020201c490d02200341003602f8120240201c450d00200b201c4103746a211e20034188256a410172210420034180376a4101722101034020034180c9006a200b280200221110900420034180376a200328028049200328028849109104024002400240200328028c37220e4102470d00410421214100211f4100210e410021220c010b200328029037211d20032802803721212003280284372122200328028837221f450d00202141046a2105201f41037441786a41037641016a21064100210d02400240024002400340200528020020154b0d01200541086a21052006200d41016a220d470d000b2006210d0c010b200d450d010b02400240201f200d417f6a22054d0d00201f200d490d01201f200d6b211f202120054103746a280200211d200d410374220f450d03202121060340200341f8006a2011200628020010920420034180376a2003280278220e200328028001220510da020240024020032d00803722100d0020034180136a41186a200141186a29000037030020034180136a41106a200141106a29000037030020034180136a41086a200141086a2900003703002003200129000037038013410021050c010b200e200510bd0220034180136a41186a2205200141186a29000037030020034180136a41106a2224200141106a29000037030020034180136a41086a221a200141086a2900003703002003200129000037038013024020104101460d00410021050c010b2004200329038013370000200441086a201a290300370000200441106a2024290300370000200441186a2005290300370000410121050b200320053a0088250240200328027c450d00200e103120032d00882521050b02400240200541ff0171450d0020034180376a41186a200441186a29000037030020034180376a41106a200441106a29000037030020034180376a41086a200441086a290000370300200320042900003703803720034180376a1093040c010b41002802809a4a4102490d002003411536028413200320034188256a3602801341002802fc994a210541002802f8994a210e41002802849a4a2110200341de043602c037200342bf808080103703b837200341b08dc6003602b437200342223702ac372003418e8dc6003602a837200342013703a03720034201370390372003418090c70036028c372003410e360288372003418890c70036028437200341023602803720054180a6c000201041024622101b2802102105200320034180136a36029c37200e41f8fac90020101b20034180376a20051103000b200641086a2106200f41786a220f0d000c040b0b2005201f41f08fc700103f000b200d201f41e0cfc8001058000b41002106201f0d020c010b0240201f0d004101210e4100211f0c010b0240200d450d0020212021200d4103746a201f41037410c0091a0b410021064101210e0c010b20034180376a201110dd0220034188256a20032802803722062003280288371095042003280288252105200329028c2521140240200328028437450d00200610310b2014200920051b2109024020050d00410121060c010b410021062009a7450d00200510310b2003201d360290372003201f36028837200320223602843720032021360280372003200e36028c37200328028849210d200328028049210502400240200e4102470d002005200d10bd020c010b2005200d20034180376a109604200e4102460d00202241ffffffff0171450d00202110310b0240200328028449450d00200510310b200b41086a210b02402006450d0020034180376a2011109004200328028037220520032802883710bd02200328028437450d00200510310b200b201e470d000b0b2020201c6b2201450d000240201c20032802f8122204460d0020032802f012220520044103746a2005201c4103746a200141037410c0091a0b2003200120046a3602f8120b20034188256a41086a200341f0126a41086a280200360200200320032903f012220937038825024002402009a722010d0020034198136a2201420037030020034190136a2204420037030020034180136a41086a22054200370300200342003703801320034180376a41b0a8c600410510a702200520034180376a41086a220629000037030020032003290080373703801320034180376a41c7a8c600410f10a70220012006290000370300200420032900803737030020034180136a412010bd020c010b20034198136a2204420037030020034190136a2205420037030020034180136a41086a22064200370300200342003703801320034180376a41b0a8c600410510a702200620034180376a41086a220d29000037030020032003290080373703801320034180376a41c7a8c600410f10a7022004200d290000370300200520032900803737030020034180136a20034188256a109704200328028c2541ffffffff0171450d00200110310b201cad220942c0f0f50b7e2009428084afdf007e7c42c0f0f50b7c21090b200341f8006a41186a22014200370300200341f8006a41106a22044200370300200341f8006a41086a420037030020034200370378200341f8006a41e1abc900410b10a70220034180376a419cadc900410e10a702200120034180376a41086a2900003703002004200329008037370300200341f8006a412041f8fac9004100109f022000109804211420022400427f2013427f2008427f2009427f201442c0b2cd3b7c221220122014541b7c221420142009541b7c220920092008541b7c220920092013541b0f0b201c202041e0cfc8001058000b41d0b8c70041334184b9c7001068000b1039000b103b000bd60201017f230041d0006b220524002005200436020420052003360200024002400240200241074b0d0041002802809a4a450d0141002802fc994a210241002802f8994a210341002802849a4a2104200541c8006a41e900360200200541c0006a42dd808080103703002005413c6a41a7a1c000360200200541346a4213370200200541306a4194a1c000360200200541286a4200370300200541246a41f8fac900360200200541186a4201370300200541106a41133602002005418ca1c00036021420054194a1c00036020c20054101360208200341f8fac900200441024622041b200541086a20024180a6c00020041b2802101103000c010b2002417c714108460d0020012800082102200541086a2005109904024020052802082203450d002000200529020c37020820002003360204200020023602000c020b200041003602040c010b200041003602040b200541d0006a24000ba30603067f017e037f230041f0006b22022400200241206a200128020c200141146a28020010ad080240024020022802202203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902242208422088a722094b0d0020012802002003200710c209450d010b2008a7450d02200310310c020b02402006280200450d00200428020010310b2001200336020c20062008370200200241106a2003200910d202024002400240024020022802102203450d00200228021821092002280214210a024020012d001c450d00200128020c200128021410bd020b2001280214220b20052802002207490d032002200128020c20076a200b20076b2003200920012802181104002002280204450d0120002002290300370200200041086a200241086a290300370200200a450d06200310310c060b41002802809a4a450d012002410e3602042002200436020041002802fc994a210341002802f8994a210741002802849a4a2109200241a404360260200242e480808010370358200241eabdc7003602542002421637024c200241d4bdc7003602482002420137034020024201370330200241acbdc70036022c20024116360228200241d4bdc7003602242002410136022020034180a6c000200941024622091b28021021032002200236023c200741f8fac90020091b200241206a20031103000c010b024041002802809a4a450d002002410f36021c2002410e360214200220043602102002200241e8006a36021841002802fc994a210741002802f8994a210941002802849a4a210b200241b204360260200242e480808010370358200241eabdc7003602542002421637024c200241d4bdc7003602482002420237034020024202370330200241c4bdc70036022c20024116360228200241d4bdc7003602242002410136022020074180a6c000200b410246220b1b28021021072002200241106a36023c200941f8fac900200b1b200241206a20071103000b200a450d00200310310b200241206a200128020c200128021410ad08200228022022030d010c020b0b2007200b41b4bdc7001061000b200041003602040b200241f0006a24000b860201037f230041d0006b22022400200241086a41c686c500410910a702200241186a41cf86c500410510a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b8d0b07047f027e017f027e017f027e097f230041c0016b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041033602340c010b200328020c21042003200341086a41086a2802003602442003200136024020034198016a200341c0006a10b50102400240024020032d0098014101460d00200341d0006a41186a200341b1016a290000370300200341d0006a41106a200341a9016a290000370300200341d0006a41086a200341a1016a290000370300200320032900990137035020034198016a200341c0006a10bb0320032d0098014104460d00200341f0006a41206a20034198016a41206a2f01003b0100200341f0006a41186a20034198016a41186a290300370300200341f0006a41106a20034198016a41106a290300370300200341f0006a41086a20034198016a41086a2903003703002003200329039801370370200328024422054110490d0020032003280240220241106a3602402003200541706a220636024420064110490d00200241086a2900002107200229000021082003200241206a22063602402003200541606a220936024420094104490d00200241186a290000210a2002290010210b2003200641046a36024020032005415c6a220236024420024110490d002006280000210c20032005414c6a22023602442003200641146a3602402002450d002006410c6a290000210d2006290004210e20032005414b6a22093602442003200641156a220f3602404100210202400240024020062d00140e03020001030b20094104490d022003200541476a22093602442003200641196a220f36024020062800152110410121020c010b20094104490d012003200541476a22093602442003200641196a220f36024020062800152110410221020b20094104490d002003200f41046a36024020032009417c6a220536024420054104490d00200f28000021062003200f41086a3602402003200941786a2205360244200541034b0d010b20034100360278200342013703702003410c360254200320033602502003200341f0006a360220200341ac016a41013602002003420137029c012003419086c400360298012003200341d0006a3602a801200341206a41d8ddc90020034198016a10401a2003280270200328027810d90402402003280274450d00200328027010310b410321020c010b200f2800042105200341206a41086a2211200341d0006a41086a290300370300200341206a41106a2212200341d0006a41106a290300370300200341206a41186a2213200341d0006a41186a29030037030020034198016a41086a2214200341f0006a41086a29030037030020034198016a41106a2215200341f0006a41106a29030037030020034198016a41186a2216200341f0006a41186a29030037030020034198016a41206a2217200341f0006a41206a2f01003b01002003200329035037032020032003290370370398012003200941746a3602442003200f410c6a360240200f2800082109200341186a41046a220f200341ca006a41046a2f01003b01002003200328014a360218200041286a200d3703002000200e370320200041186a200a3703002000200b3703102000200737030820002008370300200041c4006a2009360200200041c0006a20053602002000413c6a2006360200200020103602382000200c360230200041c8006a2003290320370300200041d0006a2011290300370300200041d8006a2012290300370300200041e0006a2013290300370300200041e8006a200329039801370300200041f0006a2014290300370300200041f8006a201529030037030020004180016a201629030037030020004188016a20172f01003b01002000418e016a200f2f01003b01002000200328021836018a010b200020023602342004450d00200110310b200341c0016a24000b9e0201027f230041d0006b220324002003200236023020032001360228200341edde91e30636022c02404104102f2204450d002003420437023c20032004360238200341386a200341286a4104724104107e200341386a20014108107e20032002360200200341386a20034104107e200328023821012003200328024036024c200320013602482003200341c8006a10ef050240200328023c450d00200110310b0240024020032d00004101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002003290001370000200041186a200341196a290000370000200041106a200341116a290000370000200041086a200341096a2900003700000b200341d0006a24000f0b1039000b880201037f230041d0006b22022400200241086a4188bbc200410810a702200241186a41aabbc200410710a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241386a41086a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bce1405187f017e077f027e027f230041d0c8006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822040d00200042023703000c010b200341086a41086a2802002101200328020c21052003410036029024200341b0366a41196a2106200341b0366a41126a2107200341b0366a410b6a2108200341b0366a4104722109200341b0366a41096a210a200341b0366a410a6a210b200341b0366a410d6a210c200341b0366a41106a210d200341b0366a41116a210e200341b0366a41146a210f200341b0366a41176a2110200341b0366a41186a2111200341b0366a411b6a2112200341b0366a411e6a2113200341b0366a411f6a2114200341b0366a41206a2115200341d2366a211641012117410021182004210202400240024003402001450d012001417f6a2119200241016a211a4200211b0240024020022d00000e020100030b200341003602b0362019450d02201a2d00002119200341013602b036200320193a00b43620014102460d0220022d00022119200341023602b036200320193a00b53620014103460d0220022d00032119200341033602b036200320193a00b63620014104460d02200341043602b036200320022d00043a00b73620014105460d02200341b0366a41086a20022d00053a0000200341053602b03620014106460d02200a20022d00063a0000200341063602b03620014107460d02200b20022d00073a0000200341073602b03620014108460d02200820022d00083a0000200341083602b03620014109460d02200341b0366a410c6a20022d00093a0000200341093602b0362001410a460d02200c20022d000a3a00002003410a3602b0362001410b460d02200341b0366a410e6a20022d000b3a00002003410b3602b0362001410c460d02200341b0366a410f6a20022d000c3a00002003410c3602b0362001410d460d02200d20022d000d3a00002003410d3602b0362001410e460d02200e20022d000e3a00002003410e3602b0362001410f460d02200720022d000f3a00002003410f3602b03620014110460d02200341b0366a41136a20022d00103a0000200341103602b03620014111460d02200f20022d00113a0000200341113602b03620014112460d02200341b0366a41156a20022d00123a0000200341123602b03620014113460d02200341b0366a41166a20022d00133a0000200341133602b03620014114460d02201020022d00143a0000200341143602b03620014115460d02201120022d00153a0000200341153602b03620014116460d02200620022d00163a0000200341163602b03620014117460d02200341b0366a411a6a20022d00173a0000200341173602b03620014118460d02201220022d00183a0000200341183602b03620014119460d02200341b0366a411c6a20022d00193a0000200341193602b0362001411a460d02200341b0366a411d6a20022d001a3a00002003411a3602b0362001411b460d02201320022d001b3a00002003411b3602b0362001411c460d02201420022d001c3a00002003411c3602b0362001411d460d02201520022d001d3a00002003411d3602b0362001411e460d02200341b0366a41216a20022d001e3a00002003411e3602b0362001411f460d02201620022d001f3a00002003411f3602b03620014120460d02200341b0366a41236a20022d00203a0000200341203602b036200341a8c8006a41026a2219200841026a2d00003a0000200341ccc8006a41026a221a200741026a2d00003a0000200341c8c8006a41026a221c200641026a2d00003a0000200320092f01003b01b8242003200941026a2d00003a00ba24200320082f00003b01a848200320072f00003b01cc48200320062f00003b01c84820032800b736211d20032801be36211e20032800c536211f20032802d036212020032802cc362121200320032d00ba243a00ba48200320032f01b8243b01b848200341c4c8006a41026a222220192d00003a0000200320032f01a8483b01c448200341c0c8006a41026a2219201a2d00003a0000200320032f01cc483b01c048200341bcc8006a41026a221a201c2d00003a0000200320032f01c8483b01bc48200341b4c8006a41026a221c20222d00003a0000200320032f01c4483b01b448200341b0c8006a41026a222220192d00003a0000200320032f01c0483b01b048200341acc8006a41026a2219201a2d00003a0000200320032f01bc483b01ac482001415f6a4104490d022001415b6a410f4d0d02200341b0246a41026a201c2d00003a0000200341ac246a41026a20222d00003a0000200341a8246a41026a20192d00003a0000200320032f01b8483b01b424200320032d00ba483a00b624200320032f01b4483b01b024200320032f01b0483b01ac24200320032f01ac483b01a8242001414b6a2119200241356a211a2002412d6a290000212320022900252124200228002121254201211b0b200341a0246a41026a2201200341b0246a41026a2d00003a00002003419c246a41026a2202200341ac246a41026a2d00003a000020034198246a41026a221c200341a8246a41026a2d00003a0000200320032d00b6243a00a624200320032f01b4243b01a424200320032f01b0243b01a024200320032f01ac243b019c24200320032f01a8243b019824200320032f01a4243b01b036200320032d00a6243a00b236200341b8246a41026a222220012d00003a0000200320032f01a0243b01b824200341a8c8006a41026a222620022d00003a0000200320032f019c243b01a848200341ccc8006a41026a2202201c2d00003a0000200320032f0198243b01cc4820034190126a20186a220141086a20253602002001201b3703002001410e6a20032d00b2363a00002001410c6a20032f01b0363b01002001410f6a201d360000200141156a20222d00003a0000200141136a20032f01b8243b0000200141166a201e3601002001411c6a20262d00003a00002001411a6a20032f01a8483b01002001411d6a201f360000200141236a20022d00003a0000200141216a20032f01cc483b0000200141386a2023370300200141306a2024370300200141286a2020360200200141246a20213602002003201736029024201741016a211720192101201a2102201841c0006a2218418012470d000b200329039012211b200341b0366a20034198126a41f81110bf091a02402003280290244124490d00200341b8246a200341b0366a41f81110bf091a200341186a200341b8246a41f81110bf091a201b4202510d0220034190126a200341186a41f81110bf091a201b4203510d022000201b370300200041086a20034190126a41f81110bf091a0c030b41fdefc900411b4198f0c900103c000b2018450d0020034100360290240b200341003602c024200342013703b8242003410c36021c200320033602182003200341b8246a3602a848200341c4366a4101360200200342013702b4362003419086c4003602b0362003200341186a3602c036200341a8c8006a41d8ddc900200341b0366a10401a20032802b82420032802c02410d904024020032802bc24450d0020032802b82410310b200042023703000b2005450d00200410310b200341d0c8006a24000bcf05000240024020022001490d0020032002490d00200141086a20034b0d010b200041013a0000200041086a411e360200200041046a41c8dcc3003602000f0b0240200220016b220120024b0d002001200320026b6a210202400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020010e080001020304050607080b20020e0808090a0b0c0d0e0f070b2002417f6a0e070f101112131415060b2002417e6a0e0615161718191a050b2002417d6a0e051a1b1c1d1e040b2002417c6a0e041e1f2021030b2002417b6a0e03212223020b2002417a6a0e022324010b20024107460d240b200041013a0000200041086a4109360200200041046a41e6dcc3003602000f0b200041003b01000f0b20004180023b01000f0b20004180043b01000f0b20004180063b01000f0b20004180083b01000f0b200041800a3b01000f0b200041800c3b01000f0b200041800e3b01000f0b20004180103b01000f0b20004180123b01000f0b20004180143b01000f0b20004180163b01000f0b20004180183b01000f0b200041801a3b01000f0b200041801c3b01000f0b200041801e3b01000f0b20004180203b01000f0b20004180223b01000f0b20004180243b01000f0b20004180263b01000f0b20004180283b01000f0b200041802a3b01000f0b200041802c3b01000f0b200041802e3b01000f0b20004180303b01000f0b20004180323b01000f0b20004180343b01000f0b20004180363b01000f0b20004180383b01000f0b200041803a3b01000f0b200041803c3b01000f0b200041803e3b01000f0b20004180c0003b01000f0b20004180c2003b01000f0b20004180c4003b01000f0b20004180c6003b01000f0b200041013a0000200041086a4116360200200041046a41efdcc3003602000bd60605067f017e037f017e017f23004180016b22012400200141286a22024200370300200141206a22034200370300200141106a41086a420037030020014200370310200141106a41b0a8c600410510a702200141e8006a41c7a8c600410f10a7022002200141e8006a41086a29000037030020032001290068370300200141203602342001200141106a360230200141386a200141106a412010d202024002400240200128023822040d00410021030c010b200128023c21052001200141386a41086a28020036024c20012004360248200141086a200141c8006a10bb010240024020012802080d0002400240200128020c2206200128024c4103762202200220064b1b22024103742203417f4c0d000240024020020d00410421030c010b2003102f2203450d060b2002ad2107024002402006450d000340200128024c22084104490d042001280248220228000021092001200241046a36024820012008417c6a220a36024c200a4104490d042002280004210a2001200841786a36024c2001200241086a36024802402007422088220ba722022007a7470d00200241016a22082002490d042002410174220c20082008200c491b22084104200841044b1b220841ffffffff0171200846410274210c200841037421080240024020020d00200141003602680c010b20014104360270200120033602682001200b4203863e026c0b200141d8006a2008200c200141e8006a104e2001280260210820012802584101460d03200128025c21032007428080808070832008410376ad8421070b200320024103746a2202200a3602042002200936020020074280808080107c21072006417f6a22060d000b0b2003450d030c040b20080d050b103b000b0240200742ffffffff0183500d00200310310b0b4100210320014100360260200142013703582001410c3602542001200141306a3602502001200141d8006a360264200141fc006a41013602002001420137026c2001419086c4003602682001200141d0006a360278200141e4006a41d8ddc900200141e8006a10401a2001280258200128026010d904200128025c450d00200128025810310b2005450d00200410310b0240024020030d0020004100360208200042043702000c010b20002007370204200020033602000b20014180016a24000f0b1039000b890201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41e2a8c600410c10a702200220013602342002200241346a410410c802370338200241c0006a410c6a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bc806010a7f230041e0006b220324002003200236021420032001360210200341186a2001200210d20202400240200328021822040d002000410236020c0c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb010240024020032802080d00024002400240200328020c2206200328022c4103762201200120064b1b22014103742202417f4c0d0002400240024020010d00410421070c010b2002102f2207450d010b024020060d00410021060c030b410021084100210902400340200328022c220a4104490d0120032802282202280000210b2003200241046a3602282003200a417c6a220c36022c200c4104490d012002280004210c2003200a41786a36022c2003200241086a360228024020092001470d00200141016a22022001490d042001410174220a2002200a20024b1b22024104200241044b1b220241ffffffff0171200246410274210a200241037421020240024020010d00200341003602480c010b20034104360250200320073602482003200141037436024c0b200341386a2002200a200341c8006a104e20032802402101024020032802384101470d0020010d040c050b200328023c2107200141037621010b200720086a2202200b360200200241046a200c360200200841086a21082006200941016a2209460d040c000b0b200141ffffffff01710d030c040b1039000b103b000b2007450d010240200328022c220a450d00200328022822082d000021092003200a417f6a220b36022c2003200841016a360228410021020240024020090e020100020b200b4104490d012008280001210c2003200a417b6a36022c2003200841056a360228410121020b2000200c3602102000200636020820002001360204200020073602000c030b200141ffffffff0171450d010b200710310b20034100360240200342013703382003410c3602342003200341106a3602302003200341386a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341306a360258200341c4006a41d8ddc900200341c8006a10401a2003280238200328024010d9040240200328023c450d00200328023810310b410221020b2000200236020c2005450d00200410310b200341e0006a24000bd60201027f230041e0006b22032400200341086a41b0a8c600410510a702200341186a41d6a8c600410c10a702024002404104102f2204450d002003420437023c2003200436023820032001360250200341386a200341d0006a4104107e20032002360250200341386a200341d0006a4104107e2003200328023822012003280240220210c802370348200341d0006a410c6a200120026a360200200320013602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a1088010240200328023c450d00200110310b2003280230220241206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200341086a4110107e2000200341186a4110107e2000200328022822012002107e0240200328022c450d00200110310b200341e0006a24000f0b1039000b103b000be80101037f230041206b22012400200141106a2000108508200141086a20012802102202200128021810c002200128020c410020012802081b210302402001280214450d00200210310b02400240200341014b0d00200141106a200010920720012802102203200128021810bd0202402001280214450d00200310310b200141106a200010850820012802102200200128021810bd022001280214450d01200010310c010b200141106a2000108508200128021821022001280210210020012003417f6a36021c200020022001411c6a4104109f022001280214450d00200010310b200141206a24000ba90201027f230041106b220224000240024020002d00004101470d002002200128021841a480ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041016a36020c20022002410c6a4198dcc40010501a20022d0008210120022802042203450d01200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c010b200128021841a880ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bba0302047f017e230041e0006b220324002003200236020c20032001360208200341106a2001200210d20202400240024002400240200328021022010d00200041003602000c010b200328021421022003200341186a280200360224200320013602202003200341206a10bb010240024020032802000d002003280224220420032802042205490d002005417f4c0d030240024020050d00410121060c010b200510352206450d05200328022421040b024020042005490d0020062003280220200510bf092104200328022422062005490d0620002005ad2207422086200784370204200020043602002003200620056b3602242003200328022020056a3602200c020b200610310b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341386a360258200341c4006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602000b2002450d00200110310b200341e0006a24000f0b103b000b1039000b20052006419cb4c0001061000bf30101037f230041106b2203240020034100360208200342013703002002280200210420032002280208220510cb0102402005450d00200420054103746a210503402003200428020036020c20032003410c6a4104107e2003200441046a28020036020c20032003410c6a4104107e200441086a22042005470d000b0b02400240200228020c4101460d00200341003a000c20032003410c6a4101107e0c010b200341013a000c20032003410c6a4101107e2003200241106a28020036020c20032003410c6a4104107e0b20002001200328020022042003280208109f0202402003280204450d00200410310b200341106a24000bd10101047f230041106b2202240002400240200128020822034103744104722204417f4c0d00200128020021012004102f2205450d012002410036020820022004360204200220053602002002200310cb0102402003450d00200120034103746a210303402002200128020036020c20022002410c6a4104107e2002200141046a28020036020c20022002410c6a4104107e200141086a22012003470d000b0b20004120200228020022012002280208109f0202402002280204450d00200110310b200241106a24000f0b103b000b1039000b97b5010c017f017e047f017e027f017e017f017e1a7f027e017f027e230041b0126b2201240010ce0442002102024002400240024002400240024002400240024002400240024020004101460d00200141a0026a41186a22034200370300200141a0026a41106a22044200370300200141a0026a41086a22054200370300200142003703a002200141e00a6a41f9c6c000410410a7022005200141e00a6a41086a2206290000370300200120012900e00a3703a002200141e00a6a41d890c500410b10a70220032006290000370300200420012900e00a37030020014190016a200141a0026a10ab0320012903980121072001280290012103200141a0016a41186a22054200370300200141a0016a41106a22084200370300200141a0016a41086a22094200370300200142003703a001200141a8046a41f9c6c000410410a7022009200141a8046a41086a290000370300200120012900a8043703a001200141b0066a41a090c500410a10a7022005200141b0066a41086a290000370300200820012900b00637030020014180016a200141a0016a10ab03200129038801210a2001280280012105200141e00a6a41849bc200411710a702200141f8006a200141e00a6a411010c002200141e8006a200a420020051b4200200128027c41e40020012802781bad420010be0902400240024002400240200129037050450d002001290368210a200141c00a6a41186a22054200370300200141c00a6a41106a220b4200370300200141c00a6a41086a22094200370300200142003703c00a200141e00a6a41f9c6c000410410a70220092006290000370300200120012900e00a3703c00a200141e00a6a41be90c500410b10a70220052006290000370300200b20012900e00a370300200141d8006a200141c00a6a10ab03200a2001290360420020012802581b7c220c200a540d01200141e00a6a41849bc200411710a702200141d0006a200141e00a6a411010c0024200210242002007420020031b220a200c7d22072007200a561b200128025441e40020012802501bad540d05200141a0016a41186a220d4200370300200141a0016a41106a220e4200370300200141a0016a41086a220f4200370300200142003703a001200141e00a6a41d7b2c800410710a702200f200141e00a6a41086a2210290000370300200120012900e00a3703a001200141e00a6a41b0ffc100410c10a702200d2010290000370300200e20012900e00a370300200141c8006a200141a0016a412010c002200128024c211120012802482112200d4200370300200e4200370300200f4200370300200142003703a001200141e00a6a41d7b2c800410710a702200f2010290000370300200120012900e00a3703a001200141e00a6a41d4ffc100410d10a702200d2010290000370300200e20012900e00a370300200141a0016a109b032113200141b8086a41186a22144200370300200141b8086a41106a22154200370300200141b8086a41086a22164200370300200142003703b808200141e00a6a41d7b2c800410710a70220162010290000370300200120012900e00a3703b808200141e00a6a41b0ffc100410c10a70220142010290000370300201520012900e00a370300200141c0006a200141b8086a412010c0022001280244211720012802402118200141c0016a109003201442003703002015420037030020164200370300200142003703b808200141e00a6a41d7b2c800410710a70220162010290000370300200120012900e00a3703b808200141e00a6a41def0c100410a10a70220142010290000370300201520012900e00a370300200141e00a6a200141b8086a10cf0420012902e40a420020012802e00a22061b220aa721192006410120061b221a21050240200a422088a72206450d002006410574211b200141b0066a410472211c200141e00a6a410c6a210341002109201a2106201a21050340200141a0026a41186a200641186a290000220a370300200141a0026a41106a200641106a2900002207370300200141a0026a41086a200641086a290000220237030020012006290000220c3703a0022003200c370200200341086a2002370200200341106a2007370200200341186a200a370200200120093602e80a200120053602e40a2001201a3602e00a02402009200310d0040d00200141b0066a41206a201041206a280200360200200141b0066a41186a201041186a290200370300200141b0066a41106a201041106a290200370300200141b0066a41086a201041086a290200370300200120102902003703b006200f201c41086a290000370300200141a0016a41106a221d201c41106a290000370300200d201c41186a2900003703002001201c2900003703a001200541186a200d290300370000200541106a201d290300370000200541086a200f290300370000200520012903a001370000200541206a21050b200641206a2106200941016a2109201b41606a221b0d000b0b200120193602d4012001201a3602d00120012005201a6b22034105753602d80120144200370300200141c8086a420037030020164200370300200142003703b808200141e00a6a41d7b2c800410710a70220162010290000370300200120012900e00a3703b808200141e00a6a41b0ffc100410c10a702201541086a2010290000370000201520012900e00a370000200141386a200141b8086a412010c002200128023c210620012802382105200141a8046a41caeac400410810a702200141b0066a4180b3c500411210a70220012006410020051b3602c00a2001200141c00a6a410410c8023703b808200141e00a6a410c6a200141c00a6a41046a360200200120163602e40a2001200141c00a6a3602e80a2001200141b8086a3602e00a200141a0026a200141e00a6a10880120012802a802220541206a2206417f4c0d100240024020060d00410121090c010b2006102f2209450d120b200141003602e80a200120063602e40a200120093602e00a200141e00a6a200141a8046a4110107e200141e00a6a200141b0066a4110107e200141e00a6a20012802a00222062005107e024020012802a402450d00200610310b20012802e00a220620012802e80a10c502024020012802e40a450d00200610310b200141d0086a4200370300200141c8086a4200370300200141b8086a41086a22064200370300200142003703b808200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2205290000370300200120012900e00a3703b808200141e00a6a41b0ffc100410c10a702201541086a2005290000370000201520012900e00a370000200141306a200141b8086a412010c0022001280234210520012802302109200141a8046a41caeac400410810a702200141b0066a41c8fdc400410e10a70220012005410020091b3602c00a2001200141c00a6a410410c8023703b808200141e00a6a410c6a200141c00a6a41046a360200200120063602e40a2001200141c00a6a3602e80a2001200141b8086a3602e00a200141a0026a200141e00a6a10880120012802a802220541206a2206417f4c0d100240024020060d00410121090c010b2006102f2209450d120b200141003602e80a200120063602e40a200120093602e00a200141e00a6a200141a8046a4110107e200141e00a6a200141b0066a4110107e200141e00a6a20012802a00222062005107e024020012802a402450d00200610310b20012802e00a220620012802e80a10c502024020012802e40a450d00200610310b024020030d00200141013a00e40a200141063a00e00a200141e00a6a10a902201941ffffff3f71450d05201a10310c050b200141e00a6a200141d0016a10a602200141bb066a200141e00a6a41086a280200360000200120012903e00a3700b306200141ec0a6a200141b7066a290000370000200141023a00e40a200141063a00e00a200120012900b0063700e50a200141e00a6a10a90220012802c801211e200141f0016a200141d0016a41086a2802003602002001201e3602e40120012017410020181b22103602e001200120012903d0013703e801200141f8016a200141e0016a41086a10a6022001410036029002200142013703880220012802f801211f20012802fc012120200128028002210d4104102f2206450d11200142043702c40a200120063602c00a200120103602e00a200141c00a6a200141e00a6a4104107e200141e00a6a41b98fc20010d104200141b0066a20012802e00a220320012802e80a10950420012902b406420020012802b00622061b210a2006410120061b210f024020012802e40a450d00200310310b2001200a4220883e02a4012001200f3602a001200141286a200141a0016a10bb01024002402001280228450d00410021184104211c0c010b200128022c221520012802a40141246e2206200620154b1bad42247e2207422088a70d112007a72206417f4c0d110240024020060d00410421160c010b2006102f2216450d130b200641246e211d024020150d00410021150c040b200141e00a6a410472211c200141cd086a2117200141c6086a2118200141b8086a4107722121200141f90a6a2122200141f20a6a2123200141eb0a6a2124410021140240034020012802a40122034104490d01201441016a211920012802a001221b280000212520012003417c6a221a3602a4012001201b41046a3602a00141002106200141003602e00a2003417b6a21030340200141003a00bc0a201a2006460d02201b20066a220541046a2d000021092001200541056a3602a001200120033602a401201c20066a20093a00002001200641016a22053602e00a2003417f6a21032005210620054120470d000b200141b80a6a41026a2206202441026a2d00003a0000200141b40a6a41026a2203202341026a2d00003a0000200141b00a6a41026a2205202241026a2d00003a00002001201c2f01003b01bc0a2001201c41026a2d00003a00be0a200120242f00003b01b80a200120232f00003b01b40a200120222f00003b01b00a20012801ee0a210920012800e70a211b20012800f50a211a20012902fc0a2107200120012d00be0a3a00ba08200120012f01bc0a3b01b808200141ac0a6a41026a222620062d00003a0000200120012f01b80a3b01ac0a200141a80a6a41026a220620032d00003a0000200120012f01b40a3b01a80a200141a40a6a41026a220320052d00003a0000200120012f01b00a3b01a40a200141a00a6a41026a220520262d00003a0000200120012f01ac0a3b01a00a2001419c026a41026a222620062d00003a0000200120012f01a80a3b019c0220014198026a41026a220620032d00003a0000200120012f01a40a3b0198022001201b3600bb08202120012f01a00a3b0000202141026a20052d00003a0000200120093601c208201820012f019c023b0000201841026a20262d00003a00002001201a3600c908201741026a20062d00003a0000201720012f0198023b0000200120073703d008200141b0066a41186a22062007370300200141b0066a41106a2203200141b8086a41106a290300370300200141b0066a41086a2205200141b8086a41086a290300370300200120012903b8083703b006200141a8046a41186a22092006290300370300200141a8046a41106a22062003290300370300200141a8046a41086a22032005290300370300200120012903b0063703a804200141a0026a41186a22052009290300370300200141a0026a41106a22092006290300370300200141a0026a41086a221b2003290300370300200120012903a8043703a00202402014201d470d00201d41016a2206201d490d14201d41017422032006200320064b1b22064104200641044b1bad42247e2207422088a74541027421062007a7210302400240201d0d00200141003602e00a0c010b200141043602e80a200120163602e00a2001201d41246c3602e40a0b200141b0066a20032006200141e00a6a104e20012802b8062106024020012802b0064101470d002006450d150c160b20012802b4062116200641246e211d0b2016201441246c6a22062025360200200620012903a0023702042006410c6a201b290300370200200641146a20092903003702002006411c6a20052903003702002019211420192015460d050c000b0b410021184104211c201d450d00201d41246c450d00201610310b4100211a0c030b41c887c30041fa0041c488c3001068000b41c887c30041fa0041d488c3001068000b2015410020161b211a201d410020161b21182016410420161b211c0b200141e00a6a41b98fc200200141c00a6a10d204200141b0066a20012802e00a220320012802e80a10d30420012802b006210620012902b4062107024020012802e40a450d00200310310b2007420020061b210720012802c80a212420012802c40a212220012802c00a21230240200aa7450d00200f10310b2006410120061b21192007a721210240024002400240200d450d002007422088a7210f201f200d4105746a2114200141e00a6a410c6a210d41002116201f211b02400340201b41086a290000210a201b41106a2900002107201b2900002102200141a8046a41186a2205201b41186a290000370300200141a8046a41106a22092007370300200141a8046a41086a221d200a370300200120023703a8044104102f2206450d13200142043702e40a200120063602e00a200120103602b006200141e00a6a200141b0066a4104107e200d41086a221541002900c18f42370000200d41002900b98f423700002001200141a8046a3602fc0a200141b0066a200141e00a6a10d404024020012802e40a450d0020012802e00a10310b200141e00a6a200141b0066a10d50420012802e00a220320012802e80a108f032106024020012802e40a450d00200310310b0240024020060d00200141a0026a41186a22062005290300370300200141a0026a41106a22032009290300370300200141a0026a41086a2205201d290300370300200120012903a8043703a002200141e00a6a20014188026a10a602200d41186a2006290300370200200d41106a200329030037020020152005290300370200200d20012903a002370200200141b8086a200141b0066a10d50420012802c008211d20012802b8082105200141003602a802200142013703a002200141a0026a200d4120107e20012802e00a2109200141a0026a20012802e80a220610cb0102402006450d0020064105742103200921060340200141a0026a20064120107e200641206a2106200341606a22030d000b0b2005201d20012802a002220620012802a802109f02024020012802a402450d00200610310b024020012802bc08450d00200510310b024020012802e40a41ffffff3f71450d00200910310b200141a0016a41186a221d200141b0066a41186a290300370300200141a0016a41106a2215200141b0066a41106a290300370300200141a0016a41086a2216200141b0066a41086a290300370300200120012903b0063703a00141002106024002400240201a0e020201000b41002106201a2103034020062003410176220520066a2209201c200941246c6a28020020104b1b2106200320056b220341014b0d000b0b201c200641246c6a28020022032010460d00200620032010496a21060b200141e00a6a41186a2205201d290300370300200141e00a6a41106a22092015290300370300200141e00a6a41086a22172016290300370300200120012903a0013703e00a201a2006490d010240201a2018470d00201a41016a2203201a490d15201a41017422182003201820034b1b22034104200341044b1bad42247e220a422088a7454102742103200aa7211802400240201a0d00200141003602a0020c010b200141043602a8022001201c3602a0022001201a41246c3602a4020b200141b8086a20182003200141a0026a104e20012802c008210320012802b8084101460d0420012802bc08211c200341246e21180b201c200641246c6a220341246a2003201a20066b41246c10c0091a200320103602002003411c6a2005290300370200200341146a20092903003702002003410c6a2017290300370200200320012903e00a370204200141c00a6a41186a2203201d290300370300200141c00a6a41106a22052015290300370300200141c00a6a41086a22092016290300370300200120012903a0013703c00a0240200f2021470d00200f41016a2206200f490d15200f410174221d2006201d20064b1b22064104200641044b1b220641ffffff3f71200646211d2006410574210602400240200f0d00200141003602e00a0c010b200141013602e80a200120193602e00a2001200f4105743602e40a0b200141a0026a2006201d200141e00a6a104e20012802a8022106024020012802a0024101470d0020060d170c160b20012802a4022119200641057621210b201a41016a211a2019200f4105746a220620012903c00a370000200641186a2003290300370000200641106a2005290300370000200641086a200929030037000041012116200f41016a210f0b201b41206a221b2014460d040c010b0b2006201a1048000b20030d110c100b202041ffffff3f71450d01201f10310c010b0240202041ffffff3f71450d00201f10310b2016410171450d00024002400240200f450d00200f4105742109200141ec0a6a2106201921030340200141b8086a200310d504200141e00a6a20012802b808221b20012802c00810d604200141a8046a41086a220d200641086a290200370300200141a8046a41106a221d200641106a290200370300200141a8046a41186a2215200641186a290200370300200120062902003703a8040240024020012802e00a22050d00410021050c010b20012902e40a210a200141b0066a41186a2015290300370300200141b0066a41106a201d290300370300200141b0066a41086a200d290300370300200120012903a8043703b0060b024020012802bc08450d00201b10310b20050d02200341206a2103200941606a22090d000b0b4104211b4200210a0c010b200141a0026a41186a2206200141b0066a41186a290300370300200141a0026a41106a220d200141b0066a41106a290300370300200141a0026a41086a221d200141b0066a41086a290300370300200120012903b0063703a002412c102f221b450d10201b200a370204201b2005360200201b20012903a00237020c201b41146a201d290300370200201b411c6a200d290300370200201b41246a2006290300370200024020094120470d00428180808010210a0c010b200341206a210d2019200f4105746a221641606a2114200141e00a6a410c6a2106428180808010210a0340200d21030340200141a0026a200310d504200141e00a6a20012802a002220920012802a80210d604200141a8046a41086a220d200641086a290200370300200141a8046a41106a221d200641106a290200370300200141a8046a41186a2215200641186a290200370300200120062902003703a8040240024020012802e00a22050d00410021050c010b20012902e40a2107200141b0066a41186a2015290300370300200141b0066a41106a201d290300370300200141b0066a41086a200d290300370300200120012903a8043703b0060b024020012802a402450d00200910310b024020050d002016200341206a2203470d010c030b0b200141b8086a41186a200141b0066a41186a2903002202370300200141b8086a41106a200141b0066a41106a290300220c370300200141b8086a41086a200141b0066a41086a2903002227370300200120012903b00622283703b808200141a0026a41186a221d2002370300200141a0026a41106a2215200c370300200141a0026a41086a22172027370300200120283703a00202400240200a422088a72209200aa7460d00200a21020c010b200941016a220d2009490d112009410174221f200d200d201f491b220d4104200d41044b1bad422c7e2202422088a745410274210d2002a7211f0240024020090d00200141003602e00a0c010b200141043602e80a2001201b3602e00a20012009412c6c3602e40a0b200141b0066a201f200d200141e00a6a104e20012802b806210d20012802b0064101460d0920012802b406211b200d412c6ead21020b200341206a210d201b2009412c6c6a22092007370204200920053602002009410c6a20012903a002370200200941146a20172903003702002009411c6a2015290300370200200941246a201d290300370200200242ffffffff0f83200a4280808080107c4280808080708384210a20142003470d000b0b200141800b6a201a360200200141fc0a6a2018360200200141f40a6a200f360200200141f00a6a20213602002001201c3602f80a200120193602ec0a200120243602e80a200120223602e40a200120233602e00a201a41246c41046a2206417f4c0d0e0240024020060d00410121030c010b2006102f2203450d100b200141003602b004200120063602ac04200120033602a804200141a8046a201a10cb010240201a450d00201a41246c2103201c210603402006200141a8046a10d704200641246a21062003415c6a22030d000b0b200141b0066a41b98fc20010d10420012802b006220620012802b806200141a8046a10de02024020012802b406450d00200610310b024020012802ac04450d0020012802a80410310b200141b0066a41b98fc200200141e00a6a10d20420012802b006220620012802b806200141ec0a6a10d804024020012802b406450d00200610310b02402022450d00202310310b0240202141ffffff3f71450d00201910310b2018450d01201841246c450d01201c10310c010b02402022450d00202310310b0240202141ffffff3f71450d00201910310b4100211b02402018450d00201841246c450d00201c10310b0b0240200128028c0241ffffff3f71450d0020012802880210310b0240201b0d000240200141e0016a410c6a28020041ffffff3f71450d0020012802e80110310b41d080ca00410c10d90441bc80ca00410f10d9040c010b410021050240201e410a6e417f73200a422088a722096a220320094b0d00201e4101201e41014b1b2206418094ebdc036e2006418094ebdc03704100476a22054101200541014b1b220520064b0d072006200341036c220320062003491b20056ead428094ebdc037e200620056ead8042ffffffff0f834280bbb0217e428094ebdc0380a721050b200941ffffffff03712009470d0c20094102742206417f4c0d0c0240024020060d004104211c0c010b2006102f221c450d0e0b0240024002402006410276221a20094f0d00200641017622032009200320094b1b22034104200341044b1b220341ffffffff0371200346410274211a200341027421030240024020060d00200141003602e00a0c010b200141e80a6a4104360200200120063602e40a2001201c3602e00a0b200141b0066a2003201a200141e00a6a104e200141b8066a2802002106024020012802b0064101460d0020012802b406211c2006410276211a0c020b20060d100c0f0b2009450d010b20092103201c2106034020062005360200200641046a21062003417f6a22030d000b0b4104102f2206450d0d200142043702ac04200120063602a804200120103602e00a200141a8046a200141e00a6a4104107e200141bc046a41002900c18f42370200200141002900b98f423702b404200141cb066a200141a8046a41186a280200360000200141c3066a200141a8046a41106a290300370000200141bb066a20012903b004370000200120012903a8043700b306200141e90a6a200141b8066a290000370000200141f10a6a200141b0066a41106a290000370000200141e00a6a41186a200141c7066a290000370000200141800b6a41013a0000200141033a00e00a200120012900b0063700e10a200141e00a6a10a9020240201a450d00201c10310b02402009450d002009412c6c2103201b210603400240200641046a28020041ffffff3f71450d00200628020010310b2006412c6a2106200341546a22030d000b0b0240200aa72206450d002006412c6c450d00201b10310b200141ec016a28020041ffffff3f71450d0020012802e80110310b024020012802c40141ffffff3f71450d0020012802c00110310b200141a0026a41186a4200370300200141a0026a41106a4200370300200141a0026a41086a22064200370300200142003703a002200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703a002200141e00a6a41def0c100410a10a702200441086a2003290000370000200420012900e00a370000200141e00a6a200141a0026a10cf0420012802e00a2203410120031b220d2106024020012902e40a420020031b220c422088a72203450d0020034105742110200d21060340200141c00a6a41186a200641186a2203290000370300200141c00a6a41106a200641106a2205290000370300200141c00a6a41086a200641086a2209290000370300200120062900003703c00a2003290000210a2005290000210720062900002102200141a0016a41086a221b2009290000370300200141a0016a41106a221c2007370300200141a0016a41186a221a200a370300200120023703a0012003201a2903003700002005201c2903003700002009201b290300370000200620012903a001370000200641206a2106201041606a22100d000b0b2006200d6b22064104722203417f4c0d0b2003102f2205450d0c2011410020121b2110200141003602e80a200120033602e40a200120053602e00a200141e00a6a2006410575220310cb0102402006450d0020034105742103200d21060340200141e00a6a20064120107e200641206a2106200341606a22030d000b0b20013502e80a210a20013502e00a2107200120103602b0064117102f2206450d0c2006412f3a0012200641e1d8013b0010200642e8d2cda3f7cddcb4e300370008200642f3cacd9b97ed9bb7df00370000200620012802b0063600132006ad4280808080f00284200a422086200784100020061031024020012802e40a450d0020012802e00a10310b0240200c42ffffff3f83500d00200d10310b200141b8016a4200370300200141b0016a4200370300200141a0016a41086a22064200370300200142003703a001200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703a001200141e00a6a41d4f0c100410a10a702200e41086a2003290000370000200e20012900e00a370000200141203602fc012001200141a0016a3602f801200141e0016a200141a0016a412010d2020240024020012802e001221a0d004100211c0c010b20012802e401210d2001200141e0016a41086a28020036028c022001201a36028802200141206a20014188026a10bb010240024020012802200d002001280224220f200128028c024181026e22062006200f4b1bad4281027e220a422088a70d0e200aa72206417f4c0d0e0240024020060d004101211c0c010b2006102f221c450d100b20064181026ead210a024002400240200f450d00200141b8086a410472211b200141e00a6a41206a2121200141b8086a410172211e200141d50a6a2115200141ce0a6a2116200141c00a6a4107722114200141d1086a2119200141ca086a2117200141c3086a21184100211d0340200141003602b808201d41016a211d200128028c022106410021030340200141003a00bc0a2006450d0420012802880222052d0000210920012006417f6a220636028c022001200541016a36028802201b20036a20093a00002001200341016a22053602b8082005210320054120470d000b200141c0016a41026a2206201841026a2d00003a0000200141bc0a6a41026a2203201741026a2d00003a0000200141b80a6a41026a2205201941026a2d00003a00002001201b2f01003b01d0012001201b41026a2d00003a00d201200120182f00003b01c001200120172f00003b01bc0a200120192f00003b01b80a20012801c608210920012800bf08211120012800cd08211220012902d4082107200120012d00d2013a00c20a200120012f01d0013b01c00a200141b40a6a41026a221f20062d00003a0000200120012f01c0013b01b40a200141b00a6a41026a220620032d00003a0000200120012f01bc0a3b01b00a200141ac0a6a41026a220320052d00003a0000200120012f01b80a3b01ac0a200141a80a6a41026a2205201f2d00003a0000200120012f01b40a3b01a80a200141a40a6a41026a221f20062d00003a0000200120012f01b00a3b01a40a200141a00a6a41026a220620032d00003a0000200120012f01ac0a3b01a00a200120113600c30a201420012f01a80a3b0000201441026a20052d00003a0000200120093601ca0a201620012f01a40a3b0000201641026a201f2d00003a0000200120123600d10a201520012f01a00a3b0000201541026a20062d00003a0000200120073703d80a200141b8086a20014188026a10e30120012d00b8084101460d03200141e00a6a41186a200141c00a6a41186a290300370300200141e00a6a41106a200141c00a6a41106a290300370300200141e00a6a41086a200141c00a6a41086a290300370300200120012903c00a3703e00a2021201e41e10110bf091a200141b0066a200141e00a6a41810210bf091a200141a8046a200141b0066a41810210bf091a200141a0026a200141a8046a41810210bf091a0240200a422088a72206200aa7470d00200641016a22032006490d1320064101742205200320032005491b22034104200341044b1bad4281027e220aa72103200a422088a74521050240024020060d00200141003602e00a0c010b200141013602e80a2001201c3602e00a200120064181026c3602e40a0b200141b0066a20032005200141e00a6a104e20012802b806210320012802b0064101460d0320012802b406211c20034181026ead210a0b201c20064181026c6a200141a0026a41810210bf091a200a42ffffffff0f83200641016aad42208684210a201d200f470d000b0b201c450d020c030b20030d100c0f0b200aa721062006450d0020064181026c450d00201c10310b4100211c200141003602b806200142013703b0062001410c3602c40a2001200141f8016a3602c00a2001200141b0066a3602a804200141f40a6a4101360200200142013702e40a2001419086c4003602e00a2001200141c00a6a3602f00a200141a8046a41d8ddc900200141e00a6a10401a20012802b00620012802b80610d90420012802b406450d0020012802b00610310b200d450d00201a10310b200a4200201c1b2227422088a7221741ffffff3f712017470d0b41012121024020174105742206450d002006102f2221450d0d0b201c4101201c1b211e41002103200141003602e801200120213602e0012001200641057622113602e401024002400240201120174f0d00200641047622032017200320174b1b22034104200341044b1b220341ffffff3f712003462105200341057421030240024020060d00200141003602e00a0c010b200141e80a6a4101360200200120063602e40a200120213602e00a0b200141b0066a20032005200141e00a6a104e200141b8066a2802002106024020012802b0064101460d00200120012802b40622213602e0012001200641057622113602e4010c020b20060d0f0c0e0b2017450d010b20174181026c220541ff7d6a4181026e210920212106201e2103034020062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a290000370000200641206a210620034181026a2103200541ff7d6a22050d000b200941016a21030b200120033602e801200141a0016a41186a22054200370300200141a0016a41106a22094200370300200141a0016a41086a22034200370300200142003703a001200141e00a6a41d7b2c800410710a7022003200141e00a6a41086a2206290000370300200120012900e00a3703a001200141e00a6a41def0c100410a10a702200e41086a221b2006290000370000200e20012900e00a370000200141a0016a200141e0016a10db0402402013201341ff017141024771221f450d00200542003703002009420037030020034200370300200142003703a001200141e00a6a41d7b2c800410710a70220032006290000370300200120012900e00a3703a001200141e00a6a41c480c200411210a702201b2006290000370000200e20012900e00a370000200141203602bc082001200141a0016a3602b808200141a8046a200141a0016a412010d20220012802a804221c450d0020012802ac04210d2001200141b0046a2802003602a4022001201c3602a002200141186a200141a0026a10bb010240024020012802180d00200128021c220f41ffffffff0371200f470d00200f410274221d20012802a402221a4b0d00201d417f4c0d0e024002400240201d450d00201d1035221a450d1220012802a402200f410274220f490d02201d410276ad210a0c010b201a200f410274220f490d02201d410276ad210a4104211a0b201a20012802a002200f10bf091a20012802a402221d200f490d062001201d200f6b3602a402200120012802a002200f6a3602a0020c020b201a10310b4100211a200141003602b806200142013703b0062001410c3602c40a2001200141b8086a3602c00a2001200141b0066a36028802200141f40a6a4101360200200142013702e40a2001419086c4003602e00a2001200141c00a6a3602f00a20014188026a41d8ddc900200141e00a6a10401a20012802b00620012802b80610d904024020012802b406450d0020012802b00610310b0b0240200d450d00201c10310b201a450d00200141a0016a412010bd02200a42ffffffff0383500d00201a10310b200542003703002009420037030020034200370300200142003703a001200141e00a6a41d7b2c800410710a70220032006290000370300200120012900e00a3703a001200141e00a6a41b0ffc100410c10a702201b2006290000370000200e20012900e00a3700002001201041016a22223602e00a200141a0016a4120200141e00a6a4104109f02200141a0026a41186a4200370300200141a0026a41106a4200370300200141a0026a41086a22034200370300200142003703a002200141e00a6a41d7b2c800410710a70220032006290000370300200120012900e00a3703a002200141e00a6a41e7b0c000410b10a702200441086a2006290000370000200420012900e00a370000200141b0066a200141a0026a412010bf02201041026a211d0240024020012802b0064101470d0020012902b406210a0c010b201dad220a422086200a84210a0b200141b8026a4200370300200141b0026a4200370300200141a0026a41086a22064200370300200142003703a002200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703a002200141e00a6a41e7b0c000410b10a702200441086a2003290000370000200420012900e00a3700004108102f2206450d0c200142083702e40a200120063602e00a2001200a3e02b006200141e00a6a200141b0066a4104107e2001201041036a3602b006200141e00a6a200141b0066a4104107e200141a0026a412020012802e00a220620012802e80a109f02024020012802e40a450d00200610310b02400240024002400240024002402010417d4b0d00200141c00a6a41186a4200370300200141c00a6a41106a4200370300200141c00a6a41086a22064200370300200142003703c00a200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703c00a200141e00a6a41def0c100410a10a702200b41086a2003290000370000200b20012900e00a370000200141e00a6a200141c00a6a10cf0420012802e00a210620012902e40a210a200141a0016a41186a4200370300200141a0016a41106a4200370300200141a0016a41086a22034200370300200142003703a001200141a8046a41edddc100411110a7022003200141a8046a41086a290000370300200120012900a8043703a001200141b0066a41feddc100411210a702200841086a200141b0066a41086a290000370000200820012900b006370000200141e00a6a200141a0016a10cf044101210f42002128024020012802e00a2203450d00200141a0016a412010bd0220012902e40a21282003210f0b200a420020061b210a2006410120061b211b02402028422088a72206450d00200f20064105746a210d200f211c0340201c220941206a211c0240200a422088a7221a450d00201a41057441606a41057641016a211041002105201b2103201b21060240034020062009412010c209450d01200341206a2103200641206a21062010200541016a2205470d000c020b0b201b201a417f6a22054105746a22062900002107200629000821022006290010210c200341186a200641186a2900003700002003200c3700102003200237000820032007370000200a42ffffffff0f832005ad42208684210a0b201c200d470d000b0b0240202842ffffff3f83500d00200f10310b42002128200141b8016a4200370300200141b0016a4200370300200141a0016a41086a22064200370300200142003703a001200141a8046a41edddc100411110a7022006200141a8046a41086a290000370300200120012900a8043703a001200141b0066a4190dec100410f10a702200841086a200141b0066a41086a290000370000200820012900b006370000200141e00a6a200141a0016a10cf040240024020012802e00a22150d00410121150c010b200141a0016a412010bd0220012902e40a21280b02402028422088a72206450d00201520064105746a210f201521090340200941086a2900002107200941106a29000021022009290000210c200141e00a6a41186a221c200941186a290000370300200141e00a6a41106a221a2002370300200141e00a6a41086a220d20073703002001200c3703e00a200941206a2109200a4220882207a722104105742106201b21030240024003402006450d01200641606a21062003200141e00a6a412010c2092105200341206a210320050d000c020b0b200141a0016a41186a2203201c290300370300200141a0016a41106a2205201a290300370300200141a0016a41086a221c200d290300370300200120012903e00a3703a00102402010200aa7470d00201041016a22062010490d162010410174221a20062006201a491b22064104200641044b1b220641ffffff3f71200646211a200641057421060240024020100d00200141003602b0060c010b200141013602b8062001201b3602b006200120074205863e02b4060b200141a8046a2006201a200141b0066a104e20012802b004210620012802a8044101460d0c20012802ac04211b2006410576ad210a0b201b20104105746a220620012903a001370000200641186a2003290300370000200641106a2005290300370000200641086a201c290300370000200a42ffffffff0f83201041016aad42208684210a0b2009200f470d000b0b0240202842ffffff3f83500d00201510310b201b450d00201b21060240200a422088a72203450d0020034105742103201b21060340200641206a2106200341606a22030d000b0b2006201b6b2206410575220941ffffff3f712009470d122006417f4c0d120240024020060d00410121180c010b2006102f2218450d140b02400240024002402006410576221220094f0d00200641047622032009200320094b1b22034104200341044b1b220341ffffff3f712003462105200341057421030240024020060d00200141003602e00a0c010b200141e80a6a4101360200200120063602e40a200120183602e00a0b200141b0066a20032005200141e00a6a104e200141b8066a280200210320012802b0064101460d0120012802b4062118200341057621120b200aa7211020060d01410021060c020b20030d150c140b20094105742105200641606a410576211c20182106201b2103034020062003290000370000200641186a200341186a290000370000200641106a200341106a290000370000200641086a200341086a290000370000200641206a2106200341206a2103200541606a22050d000b201c41016a21060b200120093602b806200120103602b4062001201b3602b006200141e00a6a200141b0066a10dc0420012802e00a4101470d0120012802e80a210320012802e40a210541b2b3c800413710d9042005200310d9040c020b200141a0026a4100201d417f6a22062006201d4b1b10dd04200141e00a6a20012802a002220620012802a80210de04200141a8046a41086a2203200141e00a6a41106a290300370300200141a8046a41106a2205200141e00a6a41186a290300370300200141a8046a41186a2209200141800b6a2903003703002001200141e00a6a41086a2903003703a80420012802e00a4101470d0220012802e40a2110200141b0066a41186a2009290300370300200141b0066a41106a2005290300370300200141b0066a41086a2003290300370300200120012903a8043703b006024020012802a402450d00200610310b200141ec0a6a200141b8066a290300370200200141f40a6a200141c0066a290300370200200141fc0a6a200141c8066a290300370200200120103602e00a200120012903b0063702e40a200141b8086a201d10dd0420012802c008210320012802b80821064104102f2205450d12200142043702a402200120053602a0024120102f2205450d12200142203702ac04200120053602a804200141a8046a200141e00a6a4120107e200141a0026a20012802a804220520012802b004107e024020012802ac04450d00200510310b200120012802800b3602a804200141a0026a200141a8046a4104107e2006200320012802a002220520012802a802109f02024020012802a402450d00200510310b20012802bc08450d03200610310c030b200141b0066a200141e00a6a41086a41800110bf091a200141c0046a200141a8076a290300370300200141b8046a200141a0076a290300370300200141a8046a41086a20014198076a29030037030020012001290390073703a804200120093602c804200141c00a6a201d10dd0420012802c80a210520012802c00a21034104102f2210450d11200142043702bc08200120103602b8084120102f2210450d11200142203702a402200120103602a002200141a0026a200141a8046a4120107e200141b8086a20012802a002221020012802a802107e024020012802a402450d00201010310b200120093602a002200141b8086a200141a0026a4104107e2003200520012802b808220920012802c008109f02024020012802bc08450d00200910310b024020012802c40a450d00200310310b200141b0066a10df040b2018450d022006ad4220862012ad84210a41012108201821130c030b20012802a402450d00200610310b0b200141d80a6a4200370300200141d00a6a4200370300200141c00a6a41086a22064200370300200142003703c00a200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703c00a200141e00a6a41def0c100410a10a702200b41086a2003290000370000200b20012900e00a370000200141e00a6a200141c00a6a10cf0420012902e40a420020012802e00a22061b210a2006410120061b211841002113410021080b2018200a422088a722054105746a20186b4105752203ad4281027e2207422088a70d0b2007a72206417f4c0d0b0240024020060d00410121040c010b2006102f2204450d0d0b024002400240024020064181026e220b20034f0d00200b41017422092003200920034b1b22034104200341044b1bad4281027e2207a721032007422088a74521090240024020064180024b0d00200141003602e00a0c010b200141e80a6a4101360200200120043602e00a2001200b4181026c3602e40a0b200141b0066a20032009200141e00a6a104e200141b8066a280200210620012802b0064101460d0120012802b406210420064181026e210b0b20050d01410021162008210f0c020b20060d0e0c0d0b201e20174181026c6a21192005410574220941606a4105762123200141e00a6a41206a2115200141b8086a41c0016a2129200141b8086a41a0016a2126200141b8086a4180016a2125200141b8086a41e0006a2124200141b8086a41c0006a2120200141b8086a41206a2114200141b0066a41017221162008210f201e21052004211020182106034020052103200141c00a6a41186a221b200641186a290000370300200141c00a6a41106a221c200641106a290000370300200141c00a6a41086a221a200641086a290000370300200120062900003703c00a200141a0016a200141c00a6a109603200141b0066a20012802a001221d20012802a80110970320012d00b006210d200141a8046a201641e10110bf091a410021050240200d4101470d00200141a0026a200141a8046a41e10110bf091a410121050b024020012802a401450d00201d10310b0240024020050d00200141b8086a41186a4200370300200141b8086a41106a4200370300200141b8086a41086a4200370300200142003703b8082014410041c10110c1091a0c010b200141b8086a200141a0026a41e10110bf091a0b02400240200f41ff0171450d00200321050c010b4100210f024020032019470d00200321050c010b20034181026a21050240200341206a200141b8086a412010c2090d00200341c0006a2014412010c2090d00200341e0006a2020412010c2090d0020034180016a2024412010c2090d00200341a0016a2025412010c2090d00200341c0016a2026412010c2090d00200341e0016a2029412110c209450d010b4101210f0b200641206a2106200141e00a6a41186a201b290300370300200141e00a6a41106a201c290300370300200141e00a6a41086a201a290300370300200120012903c00a3703e00a2015200141b8086a41e10110bf091a2010200141e00a6a41810210bf094181026a2110200941606a22090d000b202341016a21160b0240200a42ffffff3f83500d00201810310b2016ad4281027e220a422088a70d0b200aa72219417f4c0d0b0240024020190d0041012115410021180c010b2019102f2215450d0d20194181026e21182019418102490d00200420164181026c6a2114200141c00c6a2103200141a00c6a2105200141800c6a2109200141e00b6a2110200141c00b6a211b200141a00b6a211c200141e00a6a41206a211a4100210d200421062018211d034020142006460d01201d450d06200141e00a6a41186a200641186a290000370300200141e00a6a41106a200641106a290000370300200141e00a6a41086a200641086a2900003703002006290000210a201a2006290020370000201a41086a200641286a290000370000201a41106a200641306a290000370000201a41186a200641386a290000370000201c41186a200641d8006a290000370000201c41106a200641d0006a290000370000201c41086a200641c8006a290000370000201c20062900403700002001200a3703e00a201b41186a200641f8006a290000370000201b41106a200641f0006a290000370000201b41086a200641e8006a290000370000201b2006290060370000201041186a20064198016a290000370000201041106a20064190016a290000370000201041086a20064188016a2900003700002010200629008001370000200920062900a001370000200941086a200641a8016a290000370000200941106a200641b0016a290000370000200941186a200641b8016a290000370000200520062900c001370000200541086a200641c8016a290000370000200541186a200641d8016a290000370000200541106a200641d0016a290000370000200320062900e001370000200341086a200641e8016a290000370000200341106a200641f0016a290000370000200341206a20064180026a2d00003a0000200341186a200641f8016a2900003700002015200d6a200141e00a6a41810210bf091a200d4181026a210d20064181026a2106201d417f6a221d0d000b0b200141b8016a4200370300200141b0016a4200370300200141a0016a41086a22064200370300200142003703a001200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703a001200141e00a6a41d4f0c100410a10a702200e41086a2003290000370000200e20012900e00a37000020164181026c41046a2206417f4c0d0b0240024020060d00410121030c010b2006102f2203450d0d0b200141003602e80a200120063602e40a200120033602e00a200141e00a6a201610cb0120152016200141e00a6a10c701200141a0016a412020012802e00a220620012802e80a109f02024020012802e40a450d00200610310b02402019418102490d0020184181026c450d00201510310b200141b8016a4200370300200141b0016a4200370300200141a0016a41086a22064200370300200142003703a001200141e00a6a41d7b2c800410710a7022006200141e00a6a41086a2203290000370300200120012900e00a3703a001200141e00a6a41d4ffc100410d10a702200e41086a2003290000370000200e20012900e00a3700002001200f3a00bc0a200141a0016a4120200141bc0a6a4101109f02200120223602e40a200141043a00e00a200141e00a6a10a902201f201e20172004201610e0040240200b450d00200b4181026c450d00200410310b02402008201345720d00201241ffffff3f71450d00201310310b02402011450d00202110310b02402027a72206450d0020064181026c450d00201e10310b200141e00a6a108d0220012903e80a21020b200141b8066a4200370300200141c0066a4200370300200141c8066a4200370300200141d0066a4200370300200120012903e00a3703b006200142c0b2cd3b3703a002200142c0b2cd3b3703b808200142c0b2cd3b3703c00a41002105410121060340200141c00a6a2103024002400240200541ff01710e03010002010b200141b8086a21030c010b200141a0026a21030b200342c0b2cd3b370300024020064103460d0020064189a1c0006a2103200641016a210620032d000022054103470d010b0b200141a8046a41086a2206200141b0066a41086a290300370300200141a8046a41106a2203200141b0066a41106a290300370300200141a8046a41186a2205200141b0066a41186a290300370300200141a8046a41206a2209200141b0066a41206a290300370300200141e00a6a41186a4200370300200141880b6a4201370300200141900b6a4280b0def7d32b370300200141980b6a4201370300200141a00b6a4200370300200141a80b6a20012903b808370300200141b00b6a4200370300200141c00b6a4201370300200141c80b6a4280c0a8ca9a3a370300200141d00b6a4201370300200141d80b6a428090cad2c60e370300200141e00b6a20012903c00a370300200141e80b6a4200370300200120012903b0063703a80420014280e497d0123703e00a200142003703e80a200120012903a0023703f00a200141900c6a2009290300370300200141880c6a2005290300370300200141800c6a2003290300370300200141f80b6a2006290300370300200141f00b6a20012903a8043703002001428180808080d0a5cc003703980c200141b0066a200141e00a6a10890120012903b806210a200141a0016a41186a22064200370300200141a0016a41106a22034200370300200141a0016a41086a22054200370300200142003703a001200141e00a6a41e8f0c100410810a7022005200141e00a6a41086a2209290000370300200120012900e00a3703a001200141e00a6a41f0f0c100411010a70220062009290000370300200320012900e00a3703002001412036028c022001200141a0016a36028802200141b8086a200141a0016a412010d202200a428094ebdc038242808c8d9e027e2207428094ebdc038021282007428094ebdc0382212a200a428094ebdc0380212b4100211b024020012802b808220e0d00410021100c0a0b20012802bc0821192001200141b8086a41086a2802003602e4012001200e3602e001200141106a200141e0016a10bb0120012802100d072001280214221720012802e401411c6e2206200620174b1bad421c7e220a422088a70d0a200aa72206417f4c0d0a0240024020060d00410421100c010b2006102f2210450d0c0b2006411c6ead210a024002402017450d00200141e00a6a4101722105410021180340200141086a200141e0016a10bb0120012802080d09200128020c221620012802e401412c6e2206200620164b1bad422c7e2207422088a70d0d2007a72206417f4c0d0d0240024020060d004104211a0c010b2006102f221a450d0f0b2006412c6e21090240024020160d00410021160c010b410021034100211c0340200141e00a6a200141e0016a10e6010240024020012d00e00a4101460d00200141c00a6a41186a2206200541186a290000370300200141c00a6a41106a220d200541106a290000370300200141c00a6a41086a220f200541086a290000370300200120052900003703c00a200141e00a6a200141e0016a10e80120012802e00a221d0d010b200141a8046a41086a200141b0066a41086a2903003703000240201c450d00201a210603400240200641046a28020041ffffff3f71450d00200628020010310b2006412c6a2106200341546a22030d000b0b2009450d0c2009412c6c450d0c0c0b0b200141a8046a41086a200f2903002207370300200141a8046a41106a200d290300220c370300200141a8046a41186a20062903002227370300200141a0026a41086a220d2007370300200141a0026a41106a220f200c370300200141a0026a41186a22152027370300200120012903c00a22073703a804200120073703a00220012902e40a21070240201c2009470d00200941016a22062009490d10200941017422142006201420064b1b22064104200641044b1bad422c7e220c422088a7454102742106200ca721140240024020090d00200141003602e00a0c010b200141043602e80a2001201a3602e00a20012009412c6c3602e40a0b200141b0066a20142006200141e00a6a104e20012802b8062106024020012802b0064101470d0020060d120c110b20012802b406211a2006412c6e21090b201a20036a2206201d360200200641046a20073702002006410c6a20012903a002370200200641146a200d2903003702002006411c6a200f290300370200200641246a20152903003702002003412c6a21032016201c41016a221c470d000b0b201a450d092001200141e0016a10bb010240024020012802000d002001280204221420012802e4014102762206200620144b1b22064102742203417f4c0d0f0240024020060d004104210f0c010b2003102f220f450d110b0240024020140d00410021140c010b410021034100211c0240034020012802e401221d4104490d0120012802e0012215280000210d2001201d417c6a3602e4012001201541046a3602e001200d418094ebdc034b0d010240201c2006470d00200641016a221d2006490d1320064101742215201d2015201d4b1b221d4104201d41044b1b221d41ffffffff0371201d464102742115201d410274211d0240024020060d00200141003602e00a0c010b200141043602e80a2001200f3602e00a200120064102743602e40a0b200141b0066a201d2015200141e00a6a104e20012802b8062106024020012802b0064101470d0020060d150c140b20012802b406210f200641027621060b200f20036a200d360200200341046a21032014201c41016a221c460d020c000b0b200641ffffffff0371450d01200f10310c010b200f450d0020012802e401220341034b0d010240200641ffffffff0371450d00200f10310b02402016450d00201a2016412c6c6a2105201a210603402006412c6a21030240200641046a28020041ffffff3f71450d00200628020010310b2003210620052003470d000b0b2009450d0b2009412c6c0d0a0c0b0b02402016450d00201a2016412c6c6a2105201a210603402006412c6a21030240200641046a28020041ffffff3f71450d00200628020010310b2003210620052003470d000b0b2009450d0a2009412c6c0d090c0a0b20012802e001221c280000210d20012003417c6a3602e4012001201c41046a3602e0010240200a422088a72203200aa7470d00200341016a221c2003490d0e2003410174221d201c201c201d491b221c4104201c41044b1bad421c7e2207422088a745410274211c2007a7211d0240024020030d00200141003602e00a0c010b200141043602e80a200120103602e00a20012003411c6c3602e40a0b200141b0066a201d201c200141e00a6a104e20012802b806211c20012802b0064101460d0320012802b4062110200a42808080807083201c411c6ead84210a0b20102003411c6c6a220320093602042003201a360200200341186a200d360200200341146a2014360200200341106a20063602002003410c6a200f360200200341086a2016360200200a4280808080107c210a201841016a22182017470d000b0b2010450d080c090b201c0d0b0c0a0b20060d0a0c090b200f201d419cb4c0001061000b200d0d080c070b201820184188eec900103f000b41d0c1c700411941ace7c900103c000b201a10310b0240200a422088a72206450d0020102006411c6c6a2109201021050340024020052802082203450d00200528020021062003412c6c210303400240200641046a28020041ffffff3f71450d00200628020010310b2006412c6a2106200341546a22030d000b0b0240200541046a2802002206450d002006412c6c450d00200528020010310b2005411c6a21060240200541106a28020041ffffffff0371450d00200528020c10310b2006210520062009470d000b0b200aa721062006450d002006411c6c450d00201010310b41002110200141003602b806200142013703b0062001410c3602c40a200120014188026a3602c00a2001200141b0066a3602a804200141f40a6a4101360200200142013702e40a2001419086c4003602e00a2001200141c00a6a3602f00a200141a8046a41d8ddc900200141e00a6a10401a20012802b00620012802b80610d90420012802b406450d0020012802b00610310b2019450d00200e10310b2010410420101b211c0240200a420020101b220c422088a72209450d00202b42808c8d9e027e210a42002028202a4280cab5ee0156ad7c7d2107410021104100211b0240034002400240201b450d00201c2106201b210503400240200a2007510d00200620106a21050c030b2006200620106a2203290200370200200641186a200341186a280200360200200641106a200341106a290200370200200641086a200341086a2902003702002006411c6a2106200541016a22052009490d000c040b0b201b210602400340200a2007520d01200641016a22062009490d000b4100211b0c040b201c201b411c6c6a21050b0240201c201b411c6c6a221a2802082203450d00200528020021062003412c6c210303400240200641046a28020041ffffff3f71450d00200628020010310b2006412c6a2106200341546a22030d000b0b0240200541046a2802002206450d002006412c6c450d00200528020010310b201b41016a211b0240201a41106a28020041ffffffff0371450d00201a28020c10310b2010411c6a2110201b2105201b2009490d000b0b0240201b0d004100211b0c010b201c2005201b6b411c6c6a201c2005411c6c6a200920056b411c6c10c0091a0b200141b8026a22064200370300200141a0026a41106a22034200370300200141a0026a41086a22054200370300200142003703a002200141a8046a41e8f0c100410810a7022005200141a8046a41086a290000370300200120012900a8043703a002200141b0066a41f0f0c100411010a7022006200141b0066a41086a290000370300200320012900b0063703002009201b6b2206411c6c41046a2203417f4c0d000240024020030d00410121050c010b2003102f2205450d020b200141003602e80a200120033602e40a200120053602e00a200141e00a6a200610cb01201c2006200141e00a6a10cc01200141a0026a412020012802e00a220320012802e80a109f02024020012802e40a450d00200310310b02402006450d00201c2006411c6c6a2109201c21050340024020052802082203450d00200528020021062003412c6c210303400240200641046a28020041ffffff3f71450d00200628020010310b2006412c6a2106200341546a22030d000b0b0240200541046a2802002206450d002006412c6c450d00200528020010310b2005411c6a21060240200541106a28020041ffffffff0371450d00200528020c10310b2006210520062009470d000b0b0240200ca72206450d002006411c6c450d00201c10310b200141b0066a109c034100210320012802b0062110410021050240024020012802b806221b450d00201b41c4006c2109201b410274417c6a41027641016a211c410021052010210602400340024020062d00004101460d00200641046a28020020004f0d020b200641c4006a2106200541016a2105200941bc7f6a22090d000b201c21050b201b2005490d010b200141003602b806201b20056b211a2010200541c4006c221b6a210602400340201b2003460d01201020036a2109200341c4006a221c210320092d00004102470d000b2010201c6a21060b2010200541c4006c6a21090240034020092006460d0120062d00002103200641c4006a210620034102470d000b0b02400240201a0d004100211a0c010b02402005450d0020102010200541c4006c6a201a41c4006c10c0091a0b2001201a3602b8060b20012802b4062105200141d80a6a22034200370300200141d00a6a22064200370300200141c00a6a41086a22094200370300200142003703c00a200141e00a6a41fba2c600410a10a7022009200141e00a6a41086a221b290000370300200120012900e00a3703c00a200141e00a6a4185a3c600410610a7022003201b290000370300200620012900e00a370300201a41c4006c41046a2203417f4c0d010240024020030d00410121090c010b2003102f2209450d030b200141003602e80a200120033602e40a200120093602e00a200141e00a6a201a10cb012010201a200141e00a6a10c901200141c00a6a412020012802e00a220320012802e80a109f02024020012802e40a450d00200310310b02402005450d00200541c4006c450d00201010310b200141c00a6a41186a4200370300200141c00a6a41106a4200370300200141c00a6a41086a22054200370300200142003703c00a200141e00a6a41fba2c600410a10a7022005200141e00a6a41086a2203290000370300200120012900e00a3703c00a200141e00a6a41a8bbc600410c10a702200641086a2003290000370000200620012900e00a370000200141003a00bc0a200141c00a6a4120200141bc0a6a4101109f02200141b0066a109203200141e00a6a41186a200141b0066a41186a290300370300200141e00a6a41106a200141b0066a41106a2903003703002003200141b0066a41086a290300370300200120012903b0063703e00a200141e00a6a109f0310ce04200141b0126a2400427f200242a8e397037c220a200a2002541b0f0b2005201b41e0cfc8001058000b103b000b1039000be60d04037f017e147f037e230041c0016b220224002002200110bb01024002402002280200450d00200041003602000c010b024002400240024020022802042203200128020441386e2204200420034b1bad42387e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d030b200441386e2107024020030d00410021030c040b200241f0006a4104722108200241f0006a41196a2109200241f0006a41126a210a200241f0006a410b6a210b4100210c03402001280204220d450d022001280200220e2d000021042001200d417f6a220f3602042001200e41016a360200420021050240024020040e020100040b4100210420024100360270417e21100340200f2004460d04200e20046a221141016a2d000021122001200d20106a3602042001201141026a360200200820046a20123a00002002200441016a22113602702010417f6a21102011210420114120470d000b200241a8016a41026a2204200b41026a2d00003a0000200241a4016a41026a2210200a41026a2d00003a0000200220082f01003b01ac012002200841026a2d00003a00ae012002200b2f00003b01a8012002200a2f00003b01a401200220092800003602b0012002200941036a2800003600b30120022800772113200228017e211420022800850121152002280290012116200220022d00ae013a006e200220022f01ac013b016c200241a0016a41026a221220042d00003a0000200220022f01a8013b01a0012002419c016a41026a220420102d00003a0000200220022f01a4013b019c0120024198016a41026a221020022d00b2013a0000200220022f01b0013b01980120022800b3012117200241e8006a41026a220f20122d00003a0000200220022f01a0013b0168200241e4006a41026a221220042d00003a0000200220022f019c013b0164200241e0006a41026a220420102d00003a0000200220022f0198013b0160200241dc006a41026a221020022d006e3a0000200220022f016c3b015c200241d8006a41026a2218200f2d00003a0000200220022f01683b0158200241d4006a41026a220f20122d00003a0000200220022f01643b0154200241d0006a41026a221220042d00003a0000200220022f01603b01502011417f73200d6a4110490d03200241c4006a41026a221920182d00003a0000200241c0006a41026a2218200f2d00003a00002002413c6a41026a220f20122d00003a0000200e20116a220441096a290000211a200441016a290000211b2001200d20116b416f6a3602042001200441116a360200200220022f015c3b0148200220022f01583b0144200220022f01543b0140200220022f01503b013c200220102d00003a004a200241346a41026a20192d00003a0000200241306a41026a20182d00003a00002002412c6a41026a200f2d00003a0000200220022f01483b0138200220022d004a3a003a200220022f01443b0134200220022f01403b0130200220022f013c3b012c420121050b200241246a41026a2204200241346a41026a2d00003a0000200241206a41026a2211200241306a41026a2d00003a00002002411c6a41026a22102002412c6a41026a2d00003a0000200220022d003a3a002a200220022f01383b0128200220022f01343b0124200220022f01303b0120200220022f012c3b011c200220022d002a3a001a200220022f01283b0118200241146a41026a221220042d00003a0000200220022f01243b0114200241106a41026a220d20112d00003a0000200220022f01203b01102002410c6a41026a221120102d00003a0000200220022f011c3b010c02400240200c2007470d00200c4101742204200c41016a2210200420104b1b22044104200441044b1bad42387e221c422088a7454103742104201ca7211002400240200c0d00200241003602700c010b20024108360278200220063602702002200c41386c3602740b200241b0016a20102004200241f0006a104e20022802b801210420022802b0014101460d0120022802b4012106200441386e21070b2006200c41386c6a220420053703002004410a6a20022d001a3a0000200420022f01183b0108200441116a20122d00003a00002004410f6a20022f01143b0000200441186a200d2d00003a0000200441166a20022f01103b00002004410b6a2013360000200441126a2014360000200441196a20153600002004411f6a20112d00003a00002004411d6a20022f010c3b0000200441306a201a370300200441286a201b370300200441246a2016360000200441206a2017360000200c41016a2204210c20042003460d050c010b0b20040d020b103b000b200041003602002007450d02200741386c450d02200610310c020b1039000b2000200736020420002006360200200041086a20033602000b200241c0016a24000bf60302097f027e230041800b6b22012400200028020421022000410036020402402002450d00024020002802002203450d002003417f6a2103034020022802a82921022003450d012003417f6a21030c000b0b024020002802082204450d00200141d8036a2105200141d0036a410472210641002100200141a8076a210703402004417f6a210441012103024002400340200020022f01a629490d01024020022802a02922080d0020021031410221090c030b20022f01a4292100200210312003417f6a2103200821020c000b0b2002200041d0036c6a22082802002109200141d0036a200841046a41cc0310bf091a200041016a2108200220004104746a220041f8276a290300210a200041f0276a290300210b0240024020034101470d00200821000c010b200220084102746a41a8296a280200210202402003450d000340200341016a220020034f210820022802a82921022000210320080d000b0b410021000b200141b4076a200141d0036a41cc0310bf091a0b200141046a200141b4076a41cc0310bf091a200120093602d0032006200141046a41cc0310bf091a2007200a3703002001200b3703a0070240024020090d0020051082040c010b20012802d803450d0020012802d40310310b20040d000b0b034020022802a0292103200210312003210220030d000b0b200141800b6a24000bc30301087f230041f00b6b220124000240200028020c2202450d0020014188046a210320014180046a4104722104034020002002417f6a36020c410120002802006b21052000280204210220002802082106024002400340200620022f01ae2b490d01024020022802a82b2207450d0020022f01ac2b2106200210312005417f6a2105200721020c010b0b20021031410221070c010b2002200641f8036c6a2208280200210720014180046a200841046a41f40310bf091a200641016a2106024020054101460d00200220064102746a41b02b6a280200210202402005450d0041002106034020022802b02b210220052006417f6a2206470d000b0b410021060b200141fc076a20014180046a41f40310bf091a0b2001410c6a200141fc076a41f40310bf091a200020063602082000200236020420004100360200200120073602800420042001410c6a41f40310bf091a0240024020070d0020031082040c010b200128028804450d0020012802840410310b024020012d00d0074106490d0020012802d807450d0020012802d40710310b200028020c22020d000b0b20002802042102034020022802a82b2105200210312005210220050d000b200141f00b6a24000bf00104017f027e037f017e230041206b22022400420021030240024020012d000041024b0d0042002104200141186a2802004198046c2205450d01200141106a280200220620056a2107420021030340024020062d00004107470d002006410c6a28020041e0076c2205450d00200628020421010340200241106a2001109d044201210402402002280210450d000c050b2002290318210820022001109c042002290300a70d04200141e0076a2101200820037c20022903087c2103200541a0786a22050d000b0b20064198046a22062007470d000b0b420021040b2000200337030820002004370300200241206a24000ba80203017f027e027f230041a00f6b220224004200210342a08d06210402400240024020012d00000e0701010102020200020b02400240200141106a22052802004123470d002002200141d8076a28020036029c0f2002200141d0076a2802003602980f200241d8076a200241980f6a10b701024020022802d80722064123460d002002411c6a200241d8076a41047241bc0710bf091a0b024020052802004123460d002005109e040b20012006360210200141146a2002411c6a41bc0710bf091a20064123460d010b200241086a2005108c02200229030842a08d067c21040c020b420121030c010b200141186a2802004198046c2201450d00200141e87b6a4198046ead42a08d067e42c09a0c7c21040b2000200437030820002003370300200241a00f6a24000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a2202280200109e04200228020010310f0b2000410c6a2202280200109e04200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2202280200109e04200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a2202280200109e04200228020010310f0b200041106a2202280200109e04200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a2202280200109e04200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a2202280200109e04200228020010310f0b200041c8006a2202280200109e04200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010f808200228020010310f0b0b13002000410a360204200041acfdc0003602000b3400200041b9c8c00036020420004100360200200041146a4102360200200041106a41e0aec100360200200041086a42053702000b130020004106360204200041b0b3c1003602000b4201027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002412036020c20002002410c6a4104107e200241106a24000b4201027f230041106b2202240002404102102f22030d001039000b2000420237020420002003360200200241203b010e20002002410e6a4102107e200241106a24000b4601027f230041106b2202240002404110102f22030d001039000b2000421037020420002003360200200242003703082002420a370300200020024110107e200241106a24000baf0904057f017e027f047e23004180126b22022400200241206a200110ab0102400240024002400240024002400240024020022802200d002002280224210320012001280204220441016a2205360204200520012802084b0d0002402003450d0041002105410020036b2103034020054101460d0520032005417f6a2205470d000b0b20012004360204200128020022052802042203450d01200528020022062d0000210420052003417f6a3602042005200641016a360200200441ff00714104460d02200042033703680c080b200042033703680c070b200042033703680c060b02402004411874411875417f4c0d00420221070c040b20024190116a200110c403024020022d00901122044105460d002002418c116a41026a20022d0093113a0000200241f0106a41086a200241a4116a29020037030020024180116a200241ac116a290200370300200220022f0091113b018c1120022002419c116a2902003703f01020024190116a41086a28020021032002280294112106200241b8116a200110ca030240024020022d00b8114103470d0020044102470d0220030d010c020b200241f0016a200241b8116a41c20010bf091a0240200128020022052802042208450d0020052802002209310000210a20052008417f6a3602042005200941016a36020002400240200a50450d00420021070c010b200128020022052802042208450d0120052802002209310000210b20052008417f6a3602042005200941016a3602004202200a420f8386220c4204540d0142012107200b420886200a84420488200c420c88220a4201200a4201561b7e220a200c5a0d010b200241186a200110ab0120022802180d00200228021c21082002200110c5032002290300a7450d040b20044102470d012003450d010b200610310b420221070c020b103b000b200241106a290300210d2002290308210b200241ec016a41026a2002418c116a41026a2d00003a0000200241b0096a41086a200241f0106a41086a290300370300200241b0096a41106a200241f0106a41106a290300370300200220022f018c113b01ec01200220022903f0103703b009200241c8096a200241f0016a41c20010bf091a200241f0016a200241b0096a41dc0010bf091a0b200241e8016a41026a2205200241ec016a41026a2d00003a0000200220022f01ec013b01e8012002418c016a200241f0016a41dc0010bf091a20074202510d0120024188016a41026a20052d00003a0000200220022f01e8013b0188012002412c6a2002418c016a41dc0010bf091a0b200241b0096a200110b20120022802b0092105200241f0016a200241b0096a41047241bc0710bf091a024020054123460d00200020043a0000200020022f0188013b00012000200336020820002006360204200041036a2002418a016a2d00003a00002000410c6a2002412c6a41dc0010bf091a20004190016a200d37030020004188016a200b37030020004180016a2008360200200041f8006a200a3703002000200c3703702000200737036820004198016a20053602002000419c016a200241f0016a41bc0710bf091a0c020b2000420337036820074202510d01200441ff01714102470d012003450d01200610310c010b200042033703680b20024180126a24000be52007017f027e027f017e067f027e027f230041c02c6b2202240042022103024002400240024002400240200129036822044202520d00200241106a20014198016a41c00710bf091a0c010b2002419e086a200141246a41c20010bf091a200241e0086a41086a220520014188016a290300370300200241e0086a41106a220620014190016a290300370300200220014180016a2903003703e008200141f8006a290300210320012903702107200128020821082001280204210920012d0000210a20024190226a41026a220b200141036a2d00003a000020024198096a41086a220c200141146a29020037030020024198096a41106a2001411c6a290200370300200220012f00013b0190222002200129020c37039809024002400240200a0e03020100010b2008450d00200910310b200241c82b6a41026a200241982c6a41026a2d00003a0000200241a8126a41086a200241c81a6a41086a290300370300200241a8126a410d6a200241c81a6a410d6a290000370000200220022f01982c3b01c82b200220022903c81a3703a812200041036a41003a0000200041013b0001200041013a000020014198016a1080040c030b200241c81a6a410d6a220a20024198096a410d6a290000370000200241c81a6a41086a220d200c290300370300200241c82b6a41026a220c200b2d00003a0000200241a8126a41086a220b200d290300370300200241a8126a410d6a220d200a290000370000200220022f0190223b01c82b20022002290398093703a8122002200c2d00003a00fa08200220022f01c82b3b01f808200220083600ff08200220093600fb08200241f8086a41186a200d290000370000200241f8086a41136a200b290300370000200220022903a8123700830920024190226a20014198016a41c00710bf091a200241d0296a41106a2006290300370300200241d0296a41086a2005290300370300200220022903e0083703d0294100210a200241a82b6a4100109e03200241982c6a20022802a82b220820022802b02b10da0220022d00982c2101200241c82b6a41186a2209200241b12c6a290000370300200241c82b6a41106a200241a92c6a290000370300200241c82b6a41086a200241a12c6a290000370300200220022900992c3703c82b0240024020014101460d002002418d2c6a4200370000200241882c6a4200370300200241802c6a4200370300200242003703f82b0c010b200241802c6a200241d32b6a290000370300200241f82b6a41106a200241c82b6a41136a2900003703002002418d2c6a2009290000370000200220022900cb2b3703f82b20022f01c82b20022d00ca2b41107472210a0b024020022802ac2b450d00200810310b200241e82a6a41086a200241f82b6a41086a290300370300200241e82a6a41106a200241f82b6a41106a290300370300200241e82a6a41156a200241f82b6a41156a290000370000200220022903f82b3703e82a200241e02b6a22014200370300200241c82b6a41106a22084200370300200241c82b6a41086a22094200370300200242003703c82b200241982c6a41f3c6c000410610a7022009200241982c6a41086a2205290000370300200220022900982c3703c82b200241982c6a41ec90c900410610a70220012005290000370300200820022900982c370300200241086a200241c82b6a412010c00241002101024020044201520d0020074200510d04200228020c410020022802081b2108417f210142002008ad220e20037d220f200f200e561b220e20037c200e2007827d220e42ffffffff0f560d00200ea721010b200241982c6a2001109e0320022802982c220920022802a02c108f0321080240200228029c2c450d00200910310b2008450d01200241e82b6a2001109e03200241982c6a20022802e82b220820022802f02b10da0220022d00982c2101200241e02b6a2209200241b12c6a290000370300200241c82b6a41106a200241a92c6a290000370300200241c82b6a41086a200241a12c6a290000370300200220022900992c3703c82b0240024020014101460d002002418d2c6a4200370000200241f82b6a41106a4200370300200241f82b6a41086a4200370300200242003703f82b410021010c010b200241f82b6a41086a200241d32b6a290000370300200241f82b6a41106a200241db2b6a2900003703002002418d2c6a2009290000370000200220022900cb2b3703f82b20022f01c82b20022d00ca2b4110747221010b024020022802ec2b450d00200810310b200241a82b6a41156a2208200241f82b6a41156a290000370000200241a82b6a41106a2209200241f82b6a41106a290300370300200241882b6a41106a22052009290300370300200241882b6a41156a22092008290000370000200241882b6a41086a200241f82b6a41086a290300220e370300200241a82a6a41086a2208200e370300200241a82a6a41106a22062005290300370300200241a82a6a41156a22052009290000370000200220022903f82b220e3703882b2002200e3703a82a200241c82a6a41156a2209200241e82a6a41156a290000370000200241c82a6a41106a220b200241e82a6a41106a290300370300200241c82a6a41086a220c200241e82a6a41086a290300370300200220022903e82a3703c82a200241882a6a41156a220d2009290000370000200241882a6a41106a2209200b290300370300200241882a6a41086a220b200c290300370300200220022903c82a3703882a200241e8296a41156a220c2005290000370000200241e8296a41106a22052006290300370300200241e8296a41086a22062008290300370300200220022903a82a3703e829200241901a6a41156a2208200d290000370000200241901a6a41106a220d2009290300370300200241901a6a41086a2209200b290300370300200220022903882a3703901a200241f0196a41156a220b200c290000370000200241f0196a41106a220c2005290300370300200241f0196a41086a22052006290300370300200220022903e8293703f019200241b01a6a41106a2206200241d0296a41106a290300370300200241b01a6a41086a2210200241d0296a41086a290300370300200220022903d0293703b01a200241c81a6a41046a20024190226a41c00710bf091a200241a8126a200241c81a6a41c40710bf091a20024190126a41106a2211200629030037030020024190126a41086a22062010290300370300200241f0116a41086a22102009290300370300200241f0116a41106a2209200d290300370300200241f0116a41156a220d2008290000370000200241d0116a41086a22082005290300370300200241d0116a41106a2205200c290300370300200241d0116a41156a220c200b290000370000200220022903b01a37039012200220022903901a3703f011200220022903f0193703d01120024198096a200241a8126a41046a41c00710bf091a20024192116a200a4110763a000020024190116a200a3b0100200241e8106a2003370300200241e0106a2007370300200241f0106a220a200229039012370300200241f8106a220b200629030037030020024180116a201129030037030020024193116a20022903f0113700002002419b116a2010290300370000200241a3116a2009290300370000200241a8116a200d290000370000200220043703d810200242e70137038811200241b2116a20014110763a0000200241b0116a20013b0100200241b3116a20022903d011370000200241bb116a2008290300370000200241c3116a2005290300370000200241c8116a200c2900003700004108102f2201450d04200242083702ac12200220013602a81220024198096a200241a8126a10d4010240024020022903d8104201520d00200220022903e81020022903e0102203420c882204420120044201561b80a741047420037aa7417f6a22014101200141014b1b2201410f2001410f491b723b01c81a200241a8126a200241c81a6a4102107e0c010b200241003a00c81a200241a8126a200241c81a6a4101107e0b200a200241a8126a10e0012002200b3602c81a200241c81a6a200241a8126a10d90120022002280288113602c81a200241a8126a200241c81a6a4104107e2002200228028c113602c81a200241a8126a200241c81a6a4104107e4120102f2201450d04200242203702cc1a200220013602c81a200241c81a6a20024190116a4120107e200241a8126a20022802c81a220120022802d01a107e024020022802cc1a450d00200110310b4120102f2201450d04200242203702cc1a200220013602c81a200241c81a6a200241b0116a4120107e200241a8126a20022802c81a220120022802d01a107e024020022802cc1a450d00200110310b20022802a81221010240024020022802b012220a418102490d00200241c82b6a2001200a109a012002419e086a200241c82b6a4120200241f8086a10a70421010c010b2002419e086a2001200a200241f8086a10a70421010b024020022802ac12450d0020022802a81210310b024020010d0020004180083b0001200041013a0000200041036a41003a000020024198096a1080040c030b200241f8076a41086a200241f8086a41086a290300370300200241f8076a41106a200241f8086a41106a290300370300200241f8076a41186a200241f8086a41186a290300370300200241d0076a41086a200241e8106a290300370300200241d0076a41106a200241f0106a290300370300200241d0076a41186a200241f8106a290300370300200241f0076a20024180116a290300370300200220022903f8083703f8072002200241e0106a2903003703d00720022903d8102103200241106a20024198096a41c00710bf091a0b200041086a20022903f807370300200041286a2003370300200041306a20022903d007370300200041206a200241f8076a41186a290300370300200041186a200241f8076a41106a290300370300200041106a200241f8076a41086a290300370300200041386a200241d0076a41086a290300370300200041c0006a200241d0076a41106a290300370300200041c8006a200241d0076a41186a290300370300200041d0006a200241d0076a41206a290300370300200041d8006a200241106a41c00710bf091a200041003a00000c010b200241882b6a41156a200241a82b6a41156a290000370000200241882a6a41086a200241c82a6a41086a290000370300200241882a6a41106a200241c82a6a41106a290000370300200241882a6a41156a200241c82a6a41156a290000370000200241e8296a41156a200241a82a6a41156a290000370000200220022900c82a3703882a20024190226a108004200241a8126a200241c81a6a41c40710bf091a20024190126a41106a200241b01a6a41106a29030037030020024190126a41086a200241b01a6a41086a290300370300200241f0116a41086a200241901a6a41086a290000370300200241f0116a41106a200241901a6a41106a290000370300200241f0116a41156a200241901a6a41156a290000370000200241d0116a41086a200241f0196a41086a290000370300200241d0116a41106a200241f0196a41106a290000370300200241d0116a41156a200241f0196a41156a290000370000200220022903b01a37039012200220022900901a3703f011200220022900f0193703d011200041036a41003a0000200041800a3b0001200041013a00000b200241c02c6a24000f0b41e0f4c900411941fcf4c900103c000b1039000bf70201017f23004190016b22042400024002400240024020002d00000e03000102000b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a10f00521000c020b200441206a41186a200341186a290000370300200441206a41106a200341106a290000370300200441206a41086a200341086a29000037030020042003290000370320200041016a20012002200441206a108a0521000c010b200420012002109a01200441206a200041016a200410f1054100210020042d00200d00200441c8006a41206a200441206a41216a2d00003a0000200441e0006a200441396a290000370300200441d8006a200441316a290000370300200441d0006a200441296a29000037030020042004290021370348200441f0006a200441c8006a4121109a01200441f0006a2003412010c2094521000b20044190016a240020000b981c03067f017e0b7f230041b0026b2202240002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a3602002005417f6a0e03010203040b200042033703000c040b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a3602004100210520024100360200200341726a21032002410472210a0240034020092005460d01200420056a2206410d6a2d0000210b2001200336020420012006410e6a360200200a20056a200b3a00002002200541016a22063602002003417f6a21032006210520064120470d000b200241a0026a41026a22052002410d6a2d00003a00002002419c026a41026a2204200241146a2d00003a0000200220022f01043b01a402200220022d00063a00a60220022002410b6a2f00003b01a0022002200241126a2f01003b019c022002410e6a28010021092002280007210a200241156a280000210c2002200241196a220d2800003602a80220022002411c6a2800003600ab02200241206a280200210e200220022d00a6023a008e02200220022f01a4023b018c0220024198026a41026a220320052d00003a0000200220022f01a0023b01980220024194026a41026a220520042d00003a0000200220022f019c023b01940220024190026a41026a220420022d00aa023a0000200220022f01a8023b01900220022800ab02210f20024188026a41026a220620032d00003a0000200220022f0198023b01880220024184026a41026a220320052d00003a0000200220022f0194023b01840220024180026a41026a220520042d00003a0000200220022f0190023b018002200241f8016a41026a220420022d008e023a0000200220022f018c023b01f801200241f4016a41026a220b20062d00003a0000200220022f0188023b01f401200241f0016a41026a220620032d00003a0000200220022f0184023b01f001200241ec016a41026a220320052d00003a0000200220022f0180023b01ec01200241e8016a41026a220520042d00003a0000200220022f01f8013b01e801200241e4016a41026a2204200b2d00003a0000200220022f01f4013b01e401200241e0016a41026a220b20062d00003a0000200220022f01f0013b01e001200241dc016a41026a220620032d00003a0000200220022f01ec013b01dc01200241d8016a41026a220320052d00003a0000200220022f01e8013b01d801200241d4016a41026a220520042d00003a0000200220022f01e4013b01d401200241d0016a41026a2204200b2d00003a0000200220022f01e0013b01d001200241cc016a41026a220b20062d00003a0000200220022f01dc013b01cc012002200110a90420022d00004101460d01200241a0016a2201200241396a290000370300200241e8006a41306a2206200241316a29000037030020024190016a2210200241296a290000370300200241e8006a41206a2211200241216a29000037030020024180016a2212200d290000370300200241e8006a41106a220d200241116a290000370300200241f0006a2213200241096a29000037030020022002290001370368200220022f01d8013b01c801200220032d00003a00ca01200241c4016a41026a220320052d00003a0000200220022f01d4013b01c401200241c0016a41026a220520042d00003a0000200220022f01d0013b01c001200241bc016a41026a2204200b2d00003a0000200220022f01cc013b01bc01200220022d00ca013a00fe01200220022f01c8013b01fc01200241b8016a41026a220b20032d00003a0000200220022f01c4013b01b801200241b4016a41026a220320052d00003a0000200220022f01c0013b01b401200241b0016a41026a220520042d00003a0000200220022f01bc013b01b001200041106a200736020020002008370308200042003703002000200a360017200020022f01fc013b0114200041166a20022d00fe013a00002000200936001e200020022f01b8013b001b2000411d6a200b2d00003a0000200020022f01b4013b0022200041246a20032d00003a00002000200c3600252000412b6a20052d00003a0000200020022f01b0013b0029200041306a200e3600002000200f36002c200041ec006a2001290300370200200041e4006a2006290300370200200041dc006a2010290300370200200041d4006a2011290300370200200041cc006a2012290300370200200041c4006a200d2903003702002000413c6a2013290300370200200020022903683702340c050b02402005450d00200241003602000b200220022f018c023b01f801200220022f0188023b01f401200220022f0184023b01f0010b200042033703000c030b024020064104490d002004280001210620012003417b6a22053602042001200441056a36020020054108490d0020004201370300200429000521082001200341736a36020420012004410d6a360200200041106a200636020020002008370308200041146a200241e40010bf091a0c030b200042033703000c020b024020064104490d002004280001210720012003417b6a22053602042001200441056a36020020054108490d00200429000521082001200341736a220936020420012004410d6a3602004100210520024100360200200341726a21032002410472210a0240034020092005460d01200420056a2206410d6a2d0000210b2001200336020420012006410e6a360200200a20056a200b3a00002002200541016a22063602002003417f6a21032006210520064120470d000b200241a0026a41026a22042002410d6a2d00003a00002002419c026a41026a2203200241146a2d00003a0000200220022f01043b01a402200220022d00063a00a60220022002410b6a2f00003b01a0022002200241126a2f01003b019c022002410e6a28010021092002280007210a200241156a280000210c200241196a220d280000210520024198026a41026a22062002411f6a2d00003a000020022002411d6a2f00003b019802200241206a280200210e200220022d00a6023a008a02200220022f01a4023b018802200220042d00003a009602200220022f01a0023b01940220024190026a41026a220420032d00003a0000200220053602a802200220022f019c023b019002200241ae026a20062d00003a0000200220022f0198023b01ac022002418c026a41026a220320022d00aa023a0000200220053b018c0220022800ab02210f20024184026a41026a220520022d0096023a0000200220022f0194023b01840220024180026a41026a220620042d00003a0000200220022f0190023b018002200241fc016a41026a220420032d00003a0000200220022f018c023b01fc01200241f8016a41026a220320022d008a023a0000200220022f0188023b01f801200241f4016a41026a220b20052d00003a0000200220022f0184023b01f401200241f0016a41026a220520062d00003a0000200220022f0180023b01f001200241ec016a41026a220620042d00003a0000200220022f01fc013b01ec01200241e8016a41026a220420032d00003a0000200220022f01f8013b01e801200241e4016a41026a2203200b2d00003a0000200220022f01f4013b01e401200241e0016a41026a220b20052d00003a0000200220022f01f0013b01e001200241dc016a41026a220520062d00003a0000200220022f01ec013b01dc01200241d8016a41026a220620042d00003a0000200220022f01e8013b01d801200241d4016a41026a220420032d00003a0000200220022f01e4013b01d401200241d0016a41026a2203200b2d00003a0000200220022f01e0013b01d001200241cc016a41026a220b20052d00003a0000200220022f01dc013b01cc012002200110a90420022d00004101460d01200241a0016a2201200241396a290000370300200241e8006a41306a2205200241316a29000037030020024190016a2210200241296a290000370300200241e8006a41206a2211200241216a29000037030020024180016a2212200d290000370300200241e8006a41106a220d200241116a290000370300200241f0006a2213200241096a29000037030020022002290001370368200220022f01d8013b01c801200220062d00003a00ca01200241c4016a41026a220620042d00003a0000200220022f01d4013b01c401200241c0016a41026a220420032d00003a0000200220022f01d0013b01c001200241bc016a41026a2203200b2d00003a0000200220022f01cc013b01bc01200220022d00ca013a00ba01200220022f01c8013b01b801200241b4016a41026a220b20062d00003a0000200220022f01c4013b01b401200241b0016a41026a220620042d00003a0000200220022f01c0013b01b001200241ac016a41026a220420032d00003a0000200220022f01bc013b01ac01200041106a200736020020002008370308200042023703002000200a360017200020022f01b8013b0114200041166a20022d00ba013a00002000200936001e200020022f01b4013b001b2000411d6a200b2d00003a0000200020022f01b0013b0022200041246a20062d00003a00002000200c3600252000412b6a20042d00003a0000200020022f01ac013b0029200041306a200e3600002000200f36002c200041ec006a2001290300370200200041e4006a2005290300370200200041dc006a2010290300370200200041d4006a2011290300370200200041cc006a2012290300370200200041c4006a200d2903003702002000413c6a2013290300370200200020022903683702340c030b02402005450d00200241003602000b200220022f0188023b01f801200220022f0184023b01f401200220022f0180023b01f0010b200042033703000c010b200042033703000b200241b0026a24000be51d03157f017e037f23004180036b2202240041002103200241003602a802200241a8026a410472210420012802042105024002400240024003402005450d01200128020022062d0000210720012005417f6a22053602042001200641016a360200200420036a20073a00002002200341016a22063602a80220062103200641c000470d000b200220022f01ac023b01f001200220022d00ae023a00f2014102210620022800af022107200241d0016a41026a2201200241b5026a22082d00003a00002002200241b3026a2f00003b01d001200241b6026a2801002104200241b0016a41026a2205200241bc026a22092d00003a00002002200241ba026a2f01003b01b001200241bd026a280000210a20024180016a41026a220b200241c3026a2d00003a00002002200241c1026a2f00003b018001200241c4026a220c280200210d200241d8006a41026a220e200241ca026a2d00003a00002002200241c8026a220f2f01003b0158200241cb026a2800002103200241e8016a41026a2210200241d1026a2d00003a00002002200241cf026a2f00003b01e801200241d2026a2801002111200241c8016a41026a2212200241d8026a2d00003a00002002200241d6026a2f01003b01c801200241d9026a28000021132002200241e4026a29000037008f022002200241dd026a29000037038802200220022d00f2013a00a601200220022f01f0013b01a401200241a8016a41026a221420012d00003a0000200220022f01d0013b01a801200241f8006a41026a221520052d00003a0000200220022f01b0013b0178200241d0006a41026a2216200b2d00003a0000200220022f0180013b0150200241fc026a41026a220b200e2d00003a0000200220022f01583b01fc02200241f8026a41026a220e20102d00003a0000200220022f01e8013b01f802200241f4026a41026a221020122d00003a0000200220022f01c8013b01f402200241f0026a41026a220120022d008a023a0000200220022f0188023b01f002200229008f022117200228008b022118200241a0016a41026a220520142d00003a0000200220022f01a8013b01a0012002419c016a41026a221220152d00003a0000200220022f01783b019c0120024198016a41026a221420162d00003a0000200220022f01503b019801200241f4006a41026a2215200b2d00003a0000200220022f01fc023b0174200241cc006a41026a220b200e2d00003a0000200220022f01f8023b014c200241c8006a41026a220e20102d00003a0000200220022f01f4023b0148200241c4006a41026a221020012d00003a0000200220022f01f0023b0144200241c0006a41026a221620022d00a6013a0000200220022f01a4013b01402002413c6a41026a221920052d00003a0000200220022f01a0013b013c200241386a41026a221a20122d00003a0000200220022f019c013b0138200241346a41026a221220142d00003a0000200220022f0198013b0134200241306a41026a221420152d00003a0000200220022f01743b01302002412c6a41026a2215200b2d00003a0000200220022f014c3b012c200241286a41026a220b200e2d00003a0000200220022f01483b0128200241246a41026a220e20102d00003a0000200220022f01443b0124200241206a41026a221020162d00003a0000200220022f01403b01202002411c6a41026a221620192d00003a0000200220022f013c3b011c200241186a41026a2219201a2d00003a0000200220022f01383b0118200241146a41026a221a20122d00003a0000200220022f01343b0114200241106a41026a221220142d00003a0000200220022f01303b01102002410c6a41026a221420152d00003a0000200220022f012c3b010c200241086a41026a2215200b2d00003a0000200220022f01283b0108200241046a41026a220b200e2d00003a0000200220022f01243b0104200120142d00003a0000200220022f010c3b01f002200241a4016a41026a20152d00003a0000200220022f01083b01a4012005200b2d00003a0000200220022f01043b01a00120024188026a41026a20102d00003a00002002200736008b02200220022f01203b01880220024191026a20162d00003a00002002200436019202200220022f011c3b008f0220024198026a20192d00003a00002002200a36009902200220022f01183b0196022002419f026a201a2d00003a0000200220022f01143b009d022002200d3601a002200241a6026a20122d00003a0000200220022f01103b01a402200220033a00a702200241a8026a20024188026a107c4101210120022d00a8024101460d01200241f0016a410f6a20024188026a410f6a290000370000200241f0016a41086a20024188026a41086a29000037030020022002290088023703f0010c020b02402003450d00200241003602a8020b200241c0006a41026a20022d00a6013a00002002413c6a41026a200241a0016a41026a2d00003a0000200241386a41026a2002419c016a41026a2d00003a0000200241346a41026a20024198016a41026a2d00003a0000200241306a41026a200241f4006a41026a2d00003a0000200220022f01a4013b0140200220022f01a0013b013c200220022f019c013b0138200220022f0198013b0134200220022f01743b01302002412c6a41026a200241cc006a41026a2d00003a0000200241286a41026a200241c8006a41026a2d00003a0000200241246a41026a200241c4006a41026a2d00003a0000200220022f014c3b012c200220022f01483b0128200220022f01443b0124200041013a00000c020b200241fe026a20022d00ab023a0000200241f0016a41086a2008290000370300200241ff016a2009290000370000200241ec016a200f2d00003a0000200220022f00a9023b01fc02200220022900ad023703f0012002200c2802003602e8014100210120022d00ac0221060b200241f8026a41026a2204200241fc026a41026a2d00003a0000200241d0016a41086a2205200241f0016a41086a290300370300200241d0016a410f6a2207200241f0016a410f6a290000370000200241c8016a41046a220a200241e8016a41046a2d00003a0000200220022f01fc023b01f802200220022903f0013703d001200220022802e8013602c8010240024020010d00200241f4026a41026a20042d00003a0000200241b0016a41086a2005290300370300200241b0016a410f6a2007290000370000200241a8016a41046a200a2d00003a0000200220022f01f8023b01f402200220022903d0013703b001200220022802c8013602a8012002200341087622013b018802200220014110763a008a022002418d026a200241f0026a41026a2d00003a00002002201136018e02200220022f01f0023b008b0220024194026a200241a4016a41026a2d00003a00002002201336009502200220022f01a4013b0192022002419b026a200241a0016a41026a2d00003a0000200220173702a0022002201836029c02200220022f01a0013b009902200241a8026a20024188026a107c410121010240024020022d00a8024101460d00200241f0016a410f6a20024188026a410f6a290000370000200241f0016a41086a20024188026a41086a29000037030020022002290088023703f001410221050c010b200241fe026a20022d00ab023a0000200241f8016a200241b5026a290000370300200241ff016a200241bc026a290000370000200241ec016a200241c8026a2d00003a0000200220022f00a9023b01fc02200220022900ad023703f0012002200241c4026a2802003602e8014100210120022d00ac0221050b200241f8026a41026a2204200241fc026a41026a220a2d00003a0000200241d0016a41086a2203200241f0016a41086a220b290300370300200241d0016a410f6a2207200241f0016a410f6a220d290000370000200241c8016a41046a220e200241e8016a41046a22102d00003a0000200220022f01fc023b01f802200220022903f0013703d001200220022802e8013602c80102402001450d00200241a8026a410f6a2007290000370000200241a8026a41086a2003290300370300200220022903d0013703a80241012101200521060c020b2002419c016a41026a20042d00003a0000200b2003290300370300200d20072900003700002010200e2d00003a0000200a200241f4026a41026a2d00003a0000200220022f01f8023b019c01200220022903d0013703f001200220022802c8013602e801200220022f01f4023b01fc02200241a8026a410f6a2201200241b0016a410f6a290000370000200241a8026a41086a2203200241b0016a41086a290300370300200220022903b0013703a802200241d0016a41046a200241a8016a41046a2d00003a0000200220022802a8013602d00120024188026a410f6a200129000037000020024188026a41086a2003290300370300200220022903a80237038802410021010c010b200241a8026a410f6a2007290000370000200241a8026a41086a2005290300370300200220022903d0013703a802410121010b20024198016a41026a2203200241fc026a41026a2d00003a000020024180016a41086a220720024188026a41086a29030037030020024180016a410f6a220420024188026a410f6a290000370000200241f8006a41046a220a200241d0016a41046a2d00003a0000200241f4006a41026a220b2002419c016a41026a2d00003a0000200220022f01fc023b019801200220022903880237038001200220022802d001360278200220022f019c013b0174200241d8006a410f6a220d200241f0016a410f6a290000370000200241d8006a41086a220e200241f0016a41086a290300370300200241d0006a41046a2210200241e8016a41046a2d00003a0000200220022903f001370358200220022802e801360250024020010d00200020022f0198013b0001200041046a20063a0000200041056a2002290380013700002000411c6a2002280278360000200041216a20022f01743b0000200041036a20032d00003a00002000410d6a2007290300370000200041146a2004290000370000200041206a200a2d00003a0000200041236a200b2d00003a0000200041246a20053a0000200041003a0000200041256a20022903583700002000412d6a200e290300370000200041346a200d2900003700002000413c6a2002280250360000200041c0006a20102d00003a00000c010b200041013a00000b20024180036a24000b130020004103360204200041a0c0c1003602000b340020004190f3c00036020420004100360200200041146a4101360200200041106a41e0c7c100360200200041086a42053702000b130020004101360204200041a0d0c1003602000b4401027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241c0f00036020c20002002410c6a4104107e200241106a24000b130020004101360204200041a8d3c1003602000b3400200041e6d4c10036020420004100360200200041146a4101360200200041106a41f4d4c100360200200041086a420c3702000bc30302067f017e230041106b22022400200241086a200110ab01024002400240024002402002280208450d00200041003602000c010b0240200228020c2203418080808002490d00200041003602000c010b02400240024002400240200341086a22042003490d002001280200220528020422062004417f6a4103762204490d030240024020040d00410121070c010b200410352207450d072001280200220528020421060b20062004490d0220072005280200200410bf0921012005280204220620044f0d0120042006419cb4c0001061000b200041003602000c040b2005200620046b3602042005200528020020046a3602002001450d0102402004ad22084220862008842208422088a72205410374220441ffffffff014b0d0020014100200441037520044108481b6a2204450d06200420014f0d030b02402008a7450d00200110310b200041003602000c030b200710310b200041003602000c010b2005410674220441037622052003490d03200020013602002000200842208620044107712003410374722004200520034b1bad843702040b200241106a24000f0b1039000b41f0ddc900412f41a0dec9001068000b41c3f4c300412f41f4f4c300103c000ba40d030e7f027e017f230041c0006b22022400200241306a200110c103024002400240024002400240024002400240024002400240024002400240024002400240024020022802302203450d00200241386a280200210420022802342105200241186a200110ab01024020022802180d0041042106200228021c220720012802002802044104762208200820074b1b22094104742208417f4c0d1302402009450d002008102f2206450d110b2001200128020441016a22083602040240200820012802084b0d000240024002400240024020070d00410021070c010b4100210a4100210b034020012802002208280204220c4104490d042008280200220d280000210e2008200c417c6a3602042008200d41046a360200200241106a200110ab0120022802100d042001280200220c280204220d20022802142208490d042008417f4c0d190240024020080d004101210f0c010b20081035220f450d172001280200220c280204210d0b200d2008490d03200f200c280200200810bf09210d200c280204220f2008490d17200c200f20086b360204200c200c28020020086a360200200d450d0402400240200b2009460d002009210f200b210c0c010b200941016a220c2009490d1a2009410174220f200c200f200c4b1b220c4104200c41044b1b220c41ffffffff0071200c46410274210f200c410474210c0240024020090d00200241003602300c010b2002200636023020024104360238200220094104743602340b200241206a200c200f200241306a104e2002280228210f20022802204101460d03200228022421062009210c200f410476220f21090b2006200c4104746a220c200d360204200c200e360200200c41086a2008ad2210422086201084370200200a41106a210a2007200b41016a220b470d000b20012802042108200f21090b20012008417f6a3602042006450d0420012802002208280204220a450d092008280200220c2d0000210b2008200a417f6a3602042008200c41016a36020041002108200b0e020706090b200f0d130c160b200f10310b200b450d00200641086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200a41706a220a0d000b0b200941ffffffff0071450d00200610310b200041003602000c0d0b200041003602000c0d0b200241086a200110ab0120022802080d022001280200220c280204220b200228020c220a490d02200a417f4c0d1002400240200a0d00410121080c010b200a10352208450d0e2001280200220c280204210b0b200b200a490d012008200c280200200a10bf09210b200c280204220d200a490d0f200c200d200a6b360204200c200c280200200a6a360200200b450d02200aad221042208620108421100b2002200110ab012010a7210a20022802000d042001280200220b280204220d2002280204220c490d04200c417f4c0d0f02400240200c0d004101210e0c010b200c1035220e450d0d2001280200220b280204210d0b200d200c490d03200e200b280200200c10bf09210d200b280204220e200c4f0d02200c200e419cb4c0001061000b200810310b200041003602000c070b200b200e200c6b360204200b200b280200200c6a360200200d450d01200cad22114220862011842211a7210b2001280200220c280204220e4104490d02200c280200220f2800002112200c200e417c6a360204200c200f41046a36020020012802002201280204220c4104490d032000200536020420002003360200200041306a20123602002000412c6a2011422088a7360200200041286a200b360200200041246a200d360200200041206a2010422088a73602002000411c6a200a360200200041186a2008360200200041146a2007360200200041106a20093602002000410c6a2006360200200041086a200436020020012802002208280000210a2001200c417c6a3602042001200841046a360200200041346a200a3602000c080b200e10310b200041003602000c030b200041003602000c010b200041003602000b200b450d00200d10310b2008450d00200a450d00200810310b02402007450d002007410474210a4100210103400240200620016a220841086a280200450d00200841046a28020010310b200a200141106a2201470d000b0b200941ffffffff0071450d00200610310b02402004450d002004410c6c21082003210103400240200141046a280200450d00200128020010310b2001410c6a2101200841746a22080d000b0b2005450d002005410c6c450d00200310310b200241c0006a24000f0b1039000b2008200f419cb4c0001061000b200a200d419cb4c0001061000b103b000ba31f04087f017e067f017e230041c0026b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0a0102030405060708090a0b0b2000410a3a00000c170b200041003a00000c160b200241086a200110bb01024020022802080d00200228020c2101200041013a0000200020022f00d8013b0001200041046a2001360200200041086a20022903f001370300200041036a200241da016a2d00003a0000200041106a200241f0016a41086a290300370300200041186a200241f0016a41106a290300370300200041206a200241f0016a41186a290300370300200041286a200241f0016a41206a290300370300200041306a200241f0016a41286a2903003703000c160b2000410a3a00000c150b02402006450d0020042d0001210520012003417e6a3602042001200441026a3602004100210341012107410021080240024002400240024020050e0403000102050b200241106a200110bb0120022802100d042001280204220520022802142204490d042004417f4c0d100240024020040d00410121090c010b200410352209450d12200128020421050b20052004490d0320092001280200200410bf092105200128020422062004490d122001200620046b3602042001200128020020046a3602002005450d042004ad220a422086200a84220a422088a7210b200aa7210c41012108410021070c020b41012107410221080c010b41032108410121070b200241003602f001200241f0016a410472210d2001280204210403402004450d0d200128020022052d0000210620012004417f6a22043602042001200541016a360200200d20036a20063a00002002200341016a22053602f0012005210320054120470d000b200241bc026a41026a2201200241fd016a2d00003a0000200241b8026a41026a220320024184026a2d00003a0000200220022f01f4013b01c801200220022d00f6013a00ca012002200241f0016a410b6a2f00003b01bc022002200241f0016a41126a2f01003b01b802200241fe016a280100210420022800f701210520024185026a28000021062002200241f0016a41196a2800003602d80120022002418c026a2800003600db0120024190026a280200210d200220022d00ca013a00c601200220022f01c8013b01c401200241b4026a41026a220720012d00003a0000200220022f01bc023b01b402200241b0026a41026a220120032d00003a0000200220022f01b8023b01b002200241ac026a41026a220320022d00da013a0000200220022f01d8013b01ac0220022800db01210e200241c0016a41026a220f20072d00003a0000200220022f01b4023b01c001200241bc016a41026a220720012d00003a0000200220022f01b0023b01bc01200241b8016a41026a220120032d00003a0000200220022f01ac023b01b801200241b4016a41026a220320022d00c6013a0000200220022f01c4013b01b401200241b0016a41026a2210200f2d00003a0000200220022f01c0013b01b001200241ac016a41026a220f20072d00003a0000200220022f01bc013b01ac01200241a8016a41026a220720012d00003a0000200220022f01b8013b01a801200041023a0000200041046a2005360000200020022f01b4013b0001200041036a20032d00003a00002000410b6a2004360000200041086a20022f01b0013b00002000410a6a20102d00003a0000200041126a20063600002000410f6a20022f01ac013b0000200041116a200f2d00003a0000200041166a20022f01a8013b0000200041186a20072d00003a00002000411d6a200d360000200041196a200e360000200041236a200241a5016a41026a2d00003a0000200041216a20022f00a5013b0000200041306a200b3600002000412c6a200c360000200041286a2009360000200041246a20083600000c160b200910310b2000410a3a00000c140b024002402006450d0020042d0001210520012003417e6a3602042001200441026a360200410021064101210c0240024002400240024020050e0403000102050b200241286a200110bb0120022802280d0420012802042205200228022c2203490d042003417f4c0d100240024020030d00410121040c010b200310352204450d12200128020421050b20052003490d0320042001280200200310bf092105200128020422062003490d132001200620036b3602042001200128020020036a3602002005450d042003ad220a422086200a84220a422088a7210d200aa72103410121064100210c0c020b410221060c010b410321060b200241186a200110bc012002290318a70d022002290320210a200041033a0000200020022f00d8013b0001200041186a200a370300200041106a200d3600002000410c6a2003360000200041086a2004360000200041046a2006360000200041206a20022903f001370300200041036a200241da016a2d00003a0000200041286a200241f0016a41086a290300370300200041306a200241f0016a41106a2903003703000c160b200410310b2000410a3a00000c140b2000410a3a0000200c200345720d13200410310c130b024002402006450d0020042d0001210520012003417e6a3602042001200441026a360200410021064101210c0240024002400240024020050e0403000102050b200241306a200110bb0120022802300d042001280204220520022802342203490d042003417f4c0d0f0240024020030d00410121040c010b200310352204450d11200128020421050b20052003490d0320042001280200200310bf092105200128020422062003490d132001200620036b3602042001200128020020036a3602002005450d042003ad220a422086200a84220a422088a7210d200aa72103410121064100210c0c020b4101210c410221060c010b410321064101210c0b200241f0016a200110d20120022d00f0014101460d02200241e8016a200241f0016a41116a2800002201360200200241d8016a41086a200241f0016a41096a290000220a370300200220022900f10122113703d801200041043a000020002011370001200041096a200a370000200041116a2001360000200041156a20022f00bc023b0000200041176a200241be026a2d00003a0000200041246a200d360000200041206a20033600002000411c6a2004360000200041186a2006360000200041286a20022903c801370300200041306a200241c8016a41086a2903003703000c150b200410310b2000410a3a00000c130b2000410a3a0000200c200345720d12200410310c120b02402006450d0020042d0001210520012003417e6a3602042001200441026a360200200020053a0001200041053a0000200041026a20022901f0013701002000410a6a200241f8016a290100370100200041126a20024180026a2901003701002000411a6a20024188026a290100370100200041226a20024190026a2901003701002000412a6a20024198026a290100370100200041306a2002419e026a2901003701000c120b2000410a3a00000c110b200241386a200110b60302402002290338a70d00200241386a41106a290300210a20022903402111200041063a0000200020022800d801360001200041086a2011370300200041186a20022903f001370300200041106a200a370300200041046a200241db016a280000360000200041206a200241f0016a41086a290300370300200041286a200241f0016a41106a290300370300200041306a200241f0016a41186a2903003703000c110b2000410a3a00000c100b200241d0006a200110bb01024020022802500d002001280204220420022802542203490d002003417f4c0d070240024020030d00410121050c010b200310352205450d09200128020421040b024020042003490d0020052001280200200310bf092104200128020422052003490d0d2001200520036b3602042001200128020020036a3602002004450d01200041073a0000200020022f00d8013b0001200041086a2003ad220a422086200a84370000200041046a2004360000200041106a20022903f001370300200041036a200241da016a2d00003a0000200041186a200241f0016a41086a290300370300200041206a200241f0016a41106a290300370300200041286a200241f0016a41186a290300370300200041306a200241f0016a41206a2903003703000c110b200510310b2000410a3a00000c0f0b200041083a00000c0e0b2006450d0220042d0001210520012003417e6a22033602042001200441026a360200410021064101210d02400240024002400240024020050e0711000102030405080b20024190016a200110bb012002280290010d07200128020422032002280294012205490d072005417f4c0d090240024020050d00410121040c010b200510352204450d0b200128020421030b20032005490d0620042001280200200510bf092106200128020422032005490d0f2001200320056b22033602042001200128020020056a3602002006450d072005ad220a422086200a84210a410121064100210d0c100b20024198016a200110bb012002280298010d06200228029c01210420012802042103410221060c0f0b410321060c0e0b410421060c0d0b410521060c0c0b410621060c0b0b2000410a3a00000c0c0b200410310b2000410a3a00000c0a0b2000410a3a00002007200c4572450d080c090b103b000b1039000b20042006419cb4c0001061000b20032006419cb4c0001061000b20032006419cb4c0001061000b20032005419cb4c0001061000b20052003419cb4c0001061000b02402003450d00200128020022052d0000210c20012003417f6a3602042001200541016a3602004100210502400240024002400240200c0e050400010203050b200241d8006a200110bb0120022802580d04200228025c2103410121050c030b200241e8006a200110bb0120022802680d03200228026c2103200241e0006a200110bb0120022802600d0320022802642109410221050c020b200241f8006a200110bb0120022802780d02200228027c2103200241f0006a200110bb0120022802700d0220022802742109410321050c010b20024188016a200110bb012002280288010d01200228028c01210320024180016a200110bb012002280280010d012002280284012109410421050b200041093a0000200020022f00d8013b00012000411c6a2009360200200041186a2003360200200041146a20053602002000410c6a200a370000200041086a2004360000200041046a2006360000200041206a20022903f001370300200041036a200241da016a2d00003a0000200041286a200241f0016a41086a290300370300200041306a20024180026a2903003703000c020b2000410a3a0000200d200aa745720d01200410310c010b200910310b200241c0026a24000b912404097f017e057f017e230041a0026b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0a0102030405060708090a0b0b2000410a3a00000c180b200041003a00000c170b2002200110ab01024020022802000d0020022802042101200041013a0000200020022f00a8013b0001200041046a2001360200200041086a20022903d001370300200041036a200241aa016a2d00003a0000200041106a200241d0016a41086a290300370300200041186a200241d0016a41106a290300370300200041206a200241d0016a41186a290300370300200041286a200241d0016a41206a290300370300200041306a200241d0016a41286a2903003703000c170b2000410a3a00000c160b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020041002104410121074100210802400240024002400240024020060e0404000102060b200241086a200110ab0120022802080d05200128020022052802042206200228020c2203490d052003417f4c0d120240024020030d00410121090c010b200310352209450d142001280200220528020421060b20062003490d0420092005280200200310bf0921062005280204220a2003490d142005200a20036b3602042005200528020020036a3602002006450d052003ad220b422086200b84220b422088a7210c200ba7210d41012108410021070c030b410221080c010b410321080b410121070b200241003602d001200241d0016a410472210e0340200128020022032802042205450d0e200328020022062d0000210a20032005417f6a3602042003200641016a360200200e20046a200a3a00002002200441016a22033602d0012003210420034120470d000b20024198026a41026a2201200241dd016a2d00003a000020024194026a41026a2203200241e4016a2d00003a0000200220022f01d4013b019c02200220022d00d6013a009e022002200241d0016a410b6a2f00003b0198022002200241d0016a41126a2f01003b019402200241de016a280100210420022800d7012105200241e5016a28000021062002200241d0016a41196a2800003602a8012002200241ec016a2800003600ab01200241f0016a280200210a200220022d009e023a00ce01200220022f019c023b01cc0120024190026a41026a220e20012d00003a0000200220022f0198023b0190022002418c026a41026a220120032d00003a0000200220022f0194023b018c0220024188026a41026a220320022d00aa013a0000200220022f01a8013b01880220022800ab012107200241c8016a41026a220f200e2d00003a0000200220022f0190023b01c801200241c4016a41026a220e20012d00003a0000200220022f018c023b01c401200241c0016a41026a220120032d00003a0000200220022f0188023b01c001200241bc016a41026a220320022d00ce013a0000200220022f01cc013b01bc01200241b8016a41026a2210200f2d00003a0000200220022f01c8013b01b801200241a4016a41026a220f200e2d00003a0000200220022f01c4013b01a401200241a0016a41026a220e20012d00003a0000200220022f01c0013b01a001200041023a0000200041046a2005360000200020022f01bc013b0001200041036a20032d00003a00002000410b6a2004360000200041086a20022f01b8013b00002000410a6a20102d00003a0000200041126a20063600002000410f6a20022f01a4013b0000200041116a200f2d00003a0000200041166a20022f01a0013b0000200041186a200e2d00003a00002000411d6a200a360000200041196a2007360000200041236a2002419d016a41026a2d00003a0000200041216a20022f009d013b0000200041306a200c3600002000412c6a200d360000200041286a2009360000200041246a20083600000c170b200910310b2000410a3a00000c150b02400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602044101210e2003200541016a3602004100210502400240024002400240024020060e0404000102060b200241206a200110ab0120022802200d0520012802002205280204220620022802242203490d052003417f4c0d120240024020030d00410121040c010b200310352204450d142001280200220528020421060b20062003490d0420042005280200200310bf0921062005280204220a2003490d152005200a20036b3602042005200528020020036a3602002006450d052003ad220b422086200b84220b422088a7210a200ba72103410121054100210e0c030b410221050c010b410321050b0b200241106a200110ae012002290310a70d022002290318210b200041033a0000200020022f00a8013b0001200041186a200b370300200041106a200a3600002000410c6a2003360000200041086a2004360000200041046a2005360000200041206a20022903d001370300200041036a200241aa016a2d00003a0000200041286a200241d0016a41086a290300370300200041306a200241d0016a41106a2903003703000c170b200410310b2000410a3a00000c150b2000410a3a0000200e200345720d14200410310c140b0240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a3602004101210d4100210702400240024002400240024020060e0404000102060b200241286a200110ab0120022802280d05200128020022042802042205200228022c2203490d052003417f4c0d100240024020030d004101210e0c010b20031035220e450d122001280200220428020421050b20052003490d04200e2004280200200310bf092105200428020422062003490d142004200620036b3602042004200428020020036a3602002005450d052003ad220b422086200b84220b422088a72109200ba7210a410121074100210d0c030b410221070c010b410321070b4101210d0b200241003602d001410421030340200128020022042802042205450d0b200241d0016a20036a200428020022062d00003a000020042005417f6a3602042004200641016a36020020022003417d6a3602d001200341016a22034118470d000b20024198026a41026a2201200241dd016a2d00003a000020024194026a41026a2203200241d0016a41146a2d00003a0000200220022f01d40122043b019c02200220022d00d60122053a009e022002200241d0016a410b6a2f00003b0198022002200241d0016a41126a2f01003b019402200241de016a280100210620022800d701210d200241d0016a41156a2f0000210c200241d0016a41176a2d00002108200220053a008a02200220043b01880220024190026a41026a220420012d00003a0000200220022f0198023b0190022002418c026a41026a220120032d00003a0000200220022f0194023b018c02200241cc016a41026a220320042d00003a0000200220022f0190023b01cc01200241c8016a41026a220420012d00003a0000200220022f018c023b01c801200241c4016a41026a220120022d008a023a0000200220022f0188023b01c401200241c0016a41026a220520032d00003a0000200220022f01cc013b01c001200241bc016a41026a220320042d00003a0000200220022f01c8013b01bc01200041043a0000200041046a200d360000200020022f01c4013b0001200041036a20012d00003a00002000410b6a2006360000200041086a20022f01c0013b00002000410a6a20052d00003a0000200041146a20083a0000200041126a200c3b00002000410f6a20022f01bc013b0000200041116a20032d00003a0000200041156a20022f00b8013b0000200041176a200241b8016a41026a2d00003a0000200041246a2009360000200041206a200a3600002000411c6a200e360000200041186a2007360000200041306a200241a8016a41086a290300370300200041286a20022903a8013703000c150b200e10310b2000410a3a00000c130b0240200128020022012802042203450d00200128020022042d0000210520012003417f6a3602042001200441016a360200200020053a0001200041053a0000200041026a20022901d0013701002000410a6a200241d8016a290100370100200041126a200241e0016a2901003701002000411a6a200241e8016a290100370100200041226a200241f0016a2901003701002000412a6a200241f8016a290100370100200041306a200241fe016a2901003701000c130b2000410a3a00000c120b200241306a200110c50302402002290330a70d00200241306a41106a290300210b20022903382111200041063a0000200020022800a801360001200041086a2011370300200041186a20022903d001370300200041106a200b370300200041046a200241ab016a280000360000200041206a200241d0016a41086a290300370300200041286a200241d0016a41106a290300370300200041306a200241d0016a41186a2903003703000c120b2000410a3a00000c110b200241c8006a200110ab01024020022802480d00200128020022042802042205200228024c2203490d002003417f4c0d080240024020030d00410121060c010b200310352206450d0a2001280200220428020421050b024020052003490d0020062004280200200310bf092101200428020422052003490d0e2004200520036b3602042004200428020020036a3602002001450d01200041073a0000200020022f00a8013b0001200041086a2003ad220b422086200b84370000200041046a2001360000200041106a20022903d001370300200041036a200241aa016a2d00003a0000200041186a200241d0016a41086a290300370300200041206a200241d0016a41106a290300370300200041286a200241d0016a41186a290300370300200041306a200241d0016a41206a2903003703000c120b200610310b2000410a3a00000c100b200041083a00000c0f0b200128020022032802042204450d02200328020022052d0000210620032004417f6a3602044101210a2003200541016a3602004100210502400240024002400240024020060e0712000102030405080b20024188016a200110ab012002280288010d07200128020022052802042206200228028c012204490d072004417f4c0d0a0240024020040d00410121030c010b200410352203450d0c2001280200220528020421060b20062004490d0620032005280200200410bf0921062005280204220a2004490d102005200a20046b3602042005200528020020046a3602002006450d072004ad220b422086200b84210b410121054100210a0c110b20024190016a200110ab012002280290010d062002280294012103410221050c100b410321050c0f0b410421050c0e0b410521050c0d0b410621050c0c0b2000410a3a00000c0d0b200310310b2000410a3a00000c0b0b2000410a3a0000200d200a45720d0a200e10310c0a0b2000410a3a00002007200d4572450d080c090b103b000b1039000b2003200a419cb4c0001061000b2003200a419cb4c0001061000b20032006419cb4c0001061000b20032005419cb4c0001061000b2004200a419cb4c0001061000b0240200128020022042802042206450d002004280200220e2d0000210d20042006417f6a3602042004200e41016a3602004100210602400240024002400240200d0e050400010203050b200241d0006a200110ab0120022802500d0420022802542104410121060c030b200241e0006a200110ab0120022802600d0320022802642104200241d8006a200110ab0120022802580d03200228025c210e410221060c020b200241f0006a200110ab0120022802700d0220022802742104200241e8006a200110ab0120022802680d02200228026c210e410321060c010b20024180016a200110ab012002280280010d012002280284012104200241f8006a200110ab0120022802780d01200228027c210e410421060b200041093a0000200020022f00a8013b00012000411c6a200e360200200041186a2004360200200041146a20063602002000410c6a200b370000200041086a2003360000200041046a2005360000200041206a20022903d001370300200041036a200241aa016a2d00003a0000200041286a200241d0016a41086a290300370300200041306a200241e0016a2903003703000c020b2000410a3a0000200a200ba745720d01200310310c010b200910310b200241a0026a24000bad0901027f230041106b220224000240024002400240024002400240024002400240024020002d00000e0a000102030405060708090a0b200241003a000f20012002410f6a4101107e0c090b200241013a000f20012002410f6a4101107e200041046a200110e0010c080b200241023a000f20012002410f6a4101107e200041016a210302400240024002400240200041246a2802000e0400010203000b200241003a000f20012002410f6a4101107e0c030b200241013a000f20012002410f6a4101107e200041286a280200200041306a280200200110ce010c020b200241023a000f20012002410f6a4101107e0c010b200241033a000f20012002410f6a4101107e0b200120034120107e0c070b200241033a000f20012002410f6a4101107e200041186a21030240024002400240200041046a2802000e0400010203000b200241003a000f20012002410f6a4101107e2003200110d7010c090b200241013a000f20012002410f6a4101107e200041086a280200200041106a280200200110ce012003200110d7010c080b200241023a000f20012002410f6a4101107e2003200110d7010c070b200241033a000f20012002410f6a4101107e2003200110d7010c060b200241043a000f20012002410f6a4101107e200041016a210302400240024002400240200041186a2802000e0400010203000b200241003a000f20012002410f6a4101107e0c030b200241013a000f20012002410f6a4101107e2000411c6a280200200041246a280200200110ce010c020b200241023a000f20012002410f6a4101107e0c010b200241033a000f20012002410f6a4101107e0b200120034114107e0c050b200241053a000f20012002410f6a4101107e200220002d00013a000f20012002410f6a4101107e0c040b200241063a000f20012002410f6a4101107e2002200041086a360208200241086a200110d9010c030b200241073a000f20012002410f6a4101107e200041046a2802002000410c6a280200200110ce010c020b200241083a000f20012002410f6a4101107e0c010b200241093a000f20012002410f6a4101107e02400240024002400240024002400240200041046a2802000e0700010203040506070b200241003a000f20012002410f6a4101107e0c060b200241013a000f20012002410f6a4101107e200041086a280200200041106a280200200110ce010c050b200241023a000f20012002410f6a4101107e200041086a200110e0010c040b200241033a000f20012002410f6a4101107e0c030b200241043a000f20012002410f6a4101107e0c020b200241053a000f20012002410f6a4101107e0c010b200241063a000f20012002410f6a4101107e0b0240024002400240024020002802140e050001020304050b200241003a000f20012002410f6a4101107e0c040b200241013a000f20012002410f6a4101107e200041186a200110e0010c030b200241023a000f20012002410f6a4101107e200041186a200110e0012000411c6a200110e0010c020b200241033a000f20012002410f6a4101107e200041186a200110e0012000411c6a200110e0010c010b200241043a000f20012002410f6a4101107e200041186a200110e0012000411c6a200110e0010b200241106a24000bf70201037f230041c0006b22032400024020012002460d0020002d00042104034020032001360204200141016a2101200441ff0171210541012104024020050d0020002d0005210402400240200028020022052d0000410471450d000240200441ff01710d00410121042005280218419ba0c00041012005411c6a28020028020c1100000d03200028020021050b200341013a001720032005290218370308200341e09fc000360234200320052d00203a0038200320052902103703282003200341176a36021020032005290208370320200320052902003703182003200341086a360230200341046a200341186a10b6040d01200328023041f89fc0004102200328023428020c11000021040c020b0240200441ff0171450d0041012104200528021841db9fc00041022005411c6a28020028020c1100000d02200028020021050b200341046a200510b60421040c010b410121040b200041013a0005200020043a000420022001470d000b0b200341c0006a240020000bc60201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002d00002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0220014181c6c0004102200220006a4180016a410020006b105621000c010b20002d0000210402402003412071450d00410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a21002004410476410f7122040d000b20004180016a22044181014f0d0320014181c6c0004102200220006a4180016a410020006b105621000c010b2004ad42ff01832001105321000b20024180016a240020000f0b200441800141bc89c0001061000b200441800141bc89c0001061000bf51605077f017e057f027e057f23004180196b22042400200441c8036a200141d00310bf091a02400240024002400240024002400240024002400240024002400240024020002802042205450d00200028020021060c010b41a829102f2205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b034020052f01a629220741d0036c210841002101417f210902400340024020082001470d00200721090c020b200520016a210a200941016a2109200141d0036a21010240200441c8036a200a10b80441187441187541016a0e03020001020b0b0240024020042802c8030d00200441d0036a1082040c010b20042802d003450d0020042802cc0310310b200520094104746a220141f8276a2003370300200141f0276a20023703000c0e0b02402006450d002006417f6a2106200520094102746a41a8296a28020021050c010b0b200441d0036a280200210820042903c803210b200441046a200441d4036a41c40310bf091a200441a80e6a200441046a41c40310bf091a02400240024002400240024020052f01a6292201410a4b0d00200441c8036a200441a80e6a41c40310bf091a200141016a21062005200941d0036c6a210a200941016a220720014d0d01200a200b370300200a2008360208200a410c6a200441c8036a41c40310bf091a200541f0276a21010c020b410521014100210702400240200941054f0d00410421012009210a0c010b4105210a024002402009417b6a0e020201000b200941796a210a41012107410621010c010b4100210a410121070b41a829102f220c450d05200c41003b01a629200c41003602a029200c20052f01a629220d2001417f736a22093b01a6292005200141d0036c6a2206280204210e2006280200210f200441c8036a200641086a41c80310bf091a2009410c4f0d06200d200141016a22066b2009470d07200541f0276a221020014104746a220d41086a2903002111200d2903002112200c2005200641d0036c6a200941d0036c10bf09220d41f0276a201020064104746a200941047410bf091a200520013b01a629200441b8156a200441c8036a41c80310bf091a200d200520071b22012f01a6292106200441c8036a200441a80e6a41c40310bf091a2001200a41d0036c6a2109200641016a210702400240200a41016a221020064d0d002009200b370300200920083602082009410c6a200441c8036a41c40310bf091a200141f0276a21090c010b2001201041d0036c6a20092006200a6b41d0036c10c0091a200920083602082009200b3703002009410c6a200441c8036a41c40310bf091a200141f0276a220920104104746a2009200a4104746a2007200a417f736a41047410c0091a0b2009200a4104746a2209200337030820092002370300200120073b01a629200441f0116a200441b8156a41c80310bf091a200441e00a6a200441f0116a41c80310bf091a20052802a02922070d02410021100c030b2005200741d0036c6a200a200120096b41d0036c10c0091a200a2008360208200a200b370300200a410c6a200441c8036a41c40310bf091a200541f0276a220120074104746a200120094104746a20062009417f736a41047410c0091a0b200120094104746a2201200337030820012002370300200520063b01a6290c0e0b201221022011210341002110200d2113200e2114200f2115034020052f01a4292108200441f0116a200441e00a6a41c80310bf091a4101450d0620072f01a629220d410b490d024100210641042101024020084105490d0020082101024002402008417b6a0e020201000b200841796a210841012106410621010c010b4100210841012106410521010b41d829102f220c450d03200c41003b01a629200c41003602a029200c20072f01a62922162001417f736a22053b01a6292007200141d0036c6a2209280204210e2009280200210f200441c8036a200941086a41c80310bf091a2005410c4f0d072016200141016a220a6b2005470d08200741f0276a221620014104746a221741086a290300211120172903002112200c200941d0036a200541d0036c10bf09220941f0276a2016200a4104746a200541047410bf091a200720013b01a629200441b8156a200441c8036a41c80310bf091a20092f01a629220541016a21162005410c4f0d09200d20016b22012016470d0a201041016a2110200941a8296a2007200a4102746a41a8296a200141027410bf091a4100210102400340200920014102746a41a8296a280200220a20013b01a429200a20093602a02920012001200549220a6a220120054b0d01200a0d000b0b200441a80e6a200441b8156a41c80310bf091a2009200720061b220a2f01a6292105200441c8036a200441f0116a41c80310bf091a0240200841016a220120054b22160d00200a200141d0036c6a200a200841d0036c6a200520086b41d0036c10c0091a0b200541016a2106200a200841d0036c6a220d2014360204200d2015360200200d41086a200441c8036a41c80310bf091a200a41f0276a210d024020160d00200d20014104746a200d20084104746a2008417f7320066a41047410c0091a0b200d20084104746a220d2003370308200d2002370300200a41a8296a210d0240200841026a2214200541026a22054f0d00200d20144102746a200d20014102746a2001417f7320056a41027410c0091a0b200d20014102746a2013360200200a20063b01a6290240200120054f0d00200a20084102746a41ac296a2101034020012802002205200841016a22083b01a4292005200a3602a029200141046a210120062008470d000b0b200441e00a6a200441a80e6a41c80310bf091a2007210520072802a02922012107201221022011210320092113200e2114200f211520010d000b0b20044198076a200441e00a6a41c80310bf091a200441b8156a20044198076a41c80310bf091a20002802042209450d092000280200210541d829102f2201450d01200120093602a829200141003b01a629200141003602a029200941003b01a429200920013602a029200020013602042000200541016a360200200441c8036a200441b8156a41c80310bf091a20052010470d0a20012f01a6292209410b4f0d0b2001200941016a22053b01a6292001200941d0036c6a220a200e360204200a200f360200200a41086a200441c8036a41c80310bf091a200120094104746a220941f8276a2011370300200941f0276a2012370300200120054102746a41a8296a200c360200200c20053b01a429200c20013602a0292000200028020841016a3602080c0d0b20072f01a6292109200441c8036a200441f0116a41c80310bf091a200841016a21010240200920084d22050d002007200141d0036c6a2007200841d0036c6a200920086b41d0036c10c0091a0b200941016a21062007200841d0036c6a220a2014360204200a2015360200200a41086a200441c8036a41c80310bf091a200741f0276a210a024020050d00200a20014104746a200a20084104746a2008417f7320066a41047410c0091a0b200a20084104746a220a2003370308200a2002370300200741a8296a210a200941026a210c024020050d002008410274200a6a41086a200a20014102746a2001417f73200c6a41027410c0091a0b200a20014102746a2013360200200720063b01a6292001200c4f0d0b200941016a210a20072001417f6a22014102746a41ac296a2109034020092802002205200141016a22013b01a429200520073602a029200941046a2109200a2001470d000c0c0b0b1039000b2009410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2005410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2016410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b2000200028020841016a3602080b20044180196a24000bf90702027f017e02402000280200220220012802002203470d000240024020020d00024002400240024002400240024002400240200041086a2802002203200141086a2903002204a72202470d00410021022003417f6a0e0801020304050607080a0b417f410120032002491b0f0b20044201520d08200041106a200141106a10fb070f0b20044202520d07200041106a200141106a10fb07220241ff01710d07200041c8006a200141c8006a10fb070f0b20044203520d06200041106a200141106a10fb07220241ff01710d06200041c8006a200141c8006a10fb07220241ff01710d0620004180016a20014180016a10fb070f0b20044204520d05200041106a200141106a10fb07220241ff01710d05200041c8006a200141c8006a10fb07220241ff01710d0520004180016a20014180016a10fb07220241ff01710d05200041b8016a200141b8016a10fb070f0b20044205520d04200041106a200141106a10fb07220241ff01710d04200041c8006a200141c8006a10fb07220241ff01710d0420004180016a20014180016a10fb07220241ff01710d04200041b8016a200141b8016a10fb07220241ff01710d04200041f0016a200141f0016a10fb070f0b20044206520d03200041106a200141106a10fb07220241ff01710d03200041c8006a200141c8006a10fb07220241ff01710d0320004180016a20014180016a10fb07220241ff01710d03200041b8016a200141b8016a10fb07220241ff01710d03200041f0016a200141f0016a10fb07220241ff01710d03200041a8026a200141a8026a10fb070f0b20044207520d02200041106a200141106a10fb07220241ff01710d02200041c8006a200141c8006a10fb07220241ff01710d0220004180016a20014180016a10fb07220241ff01710d02200041b8016a200141b8016a10fb07220241ff01710d02200041f0016a200141f0016a10fb07220241ff01710d02200041a8026a200141a8026a10fb07220241ff01710d02200041e0026a200141e0026a10fb070f0b20044208520d01200041106a200141106a10fb07220241ff01710d01200041c8006a200141c8006a10fb07220241ff01710d0120004180016a20014180016a10fb07220241ff01710d01200041b8016a200141b8016a10fb07220241ff01710d01200041f0016a200141f0016a10fb07220241ff01710d01200041a8026a200141a8026a10fb07220241ff01710d01200041e0026a200141e0026a10fb07220241ff01710d0120004198036a20014198036a10fb070f0b0240200028020420012802042001410c6a28020022012000410c6a2802002200200020014b1b10c20922020d00417f200020014720002001491b0f0b417f410120024100481b21020b20020f0b417f410120022003491b0bd20302037f017e230041d02b6b2203240020034280808080802037020c2003200236021c200320013602182003200341186a360208200341f8226a200341086a10a5040240024020032903e0234203510d00200341a01a6a200341f8226a41d80810bf091a02402003280208220228020422044104490d0020022802002205280000210120022004417c6a3602042002200541046a360200200341b8196a200341a01a6a41e80010bf091a20032903881b2106200341d0116a200341901b6a41e80710bf091a0c020b024020032903881b4202510d0020032d00a01a41ff01714102470d0020032802a81a450d0020032802a41a10310b200341b81b6a1080040b420321060b200341e8106a200341b8196a41e80010bf091a20034180096a200341d0116a41e80710bf091a0240024020064203510d00200341206a200341e8106a41e80010bf091a200320063703880120034190016a20034180096a41e80710bf091a200320013602f808024020032802082802040d002000200341206a41e00810bf091a0c020b20004203370368024020064202510d0020032d002041ff01714102470d002003280228450d00200328022410310b200341b8016a1080040c010b200042033703680b200341d02b6a24000bef1a03037f037e197f230041f0036b2205240020012802042106200128020021072001280208220141086a2900002108200141106a29000021092001290000210a200541186a220b200141186a290000370300200541106a220c2009370300200541086a220d20083703002005200a3703002003410174210e2005410772210f200541c8016a41186a2110200541c8016a410c6a2111200541c8016a41206a211241002113410021144100211502400240024002400240024002400240024002400240024002400240024002400340201541017621010240024020154101710d00200120034b0d03200541003a00d001200520013602cc01200520023602c8010c010b200120034b0d03200120034f0d04200541013a00d001200520023602c801200520013602cc012005200220016a2d000041f001713a00d1010b200541d0036a20072005200541c8016a200628020c110500024020052802d00322160d00200541c8016a41086a2213200541086a290300370300200541c8016a41106a2203200541106a290300370300200541c8016a41186a2217200541186a290300370300200520052903003703c8014130102f2201450d10200120052903c80137000120012005290020370021200120144100473a0000200141096a2013290300370000200141116a2003290300370000200141196a2017290300370000200141286a200541276a29000037000020004101360200200020013602040c0f0b20052802d803210120052802d4032118024002400240200428020c20144b0d002001417f4c0d130240024020010d00410121170c010b2001102f2217450d130b20172016200110bf0921192010200b290300370300200541c8016a41106a221a200c290300370300200541c8016a41086a221b200d290300370300200520052903003703c801024020042802082217200441046a221c280200470d00201741016a221d2017490d142017410174221e201d201e201d4b1b221d4104201d41044b1bad42307e2208422088a745410274211d2008a7211e0240024020170d00200541003602200c010b200541043602282005201741306c360224200520042802003602200b200541d0036a201e201d200541206a104e20052802d803211720052802d0034101460d02200420052802d403360200201c201741306e360200200428020821170b2004280200201741306c6a2217201936020420172014360200201720052903c8013702102017410c6a2001360200201741086a2001360200201741186a201b290300370200201741206a201a290300370200201741286a20102903003702002004200428020841016a3602080b200541c8016a2016200110bb0420052d00c8014101460d0e201441016a21140c010b20170d100c110b034020052802e401211f20052802e001212020052802dc01212120052802d801211920052802d401211720052802d001211a20052802cc012101200541206a201241a80110bf091a200528029403211b200528029003211c024002400240024020010e05100f000102100b410021010240201741017420196b2222200e20136b221b201b20224b1b2223450d000340201320016a221b410176221c20034f0d0a201920016a221d410176221e20174f0d0b2002201c6a2d0000221c410f71201c41f00171410476201b4101711b201a201e6a2d0000221b410f71201b410476201d4101711b470d012023200141016a2201470d000b202321010b024020012022470d00202221010c030b200042003702000c110b2005201f3602dc01200520203602d801200520213602d401200520193602d001200520173602cc012005201a3602c8012010200541206a41a80110bf091a02400240200e2013460d002013410176220120034f0d0b200541c8016a200220016a2d00002201410f71200141047620134101711b410c6c6a220128020022214102470d01200042003702000c120b410021010240201c450d00201b417f4c0d1502400240201b0d00410121010c010b201b102f2201450d150b2001201c201b10bf091a0b20002001360204200041003602002000410c6a201b360200200041086a201b3602000c110b20012802042120200141086a280200211f41012122410121010c010b20052802a0032123200528029c03212220052802980321012005201f3602d001200520203602cc01200520213602c8012011200541206a41a80110bf091a20052001360284032005201b360280032005201c3602fc02410021010240201741017420196b221f200e20136b22212021201f4b1b2220450d000340201320016a221b410176221c20034f0d0b201920016a221d410176221e20174f0d0c2002201c6a2d0000221c410f71201c41f00171410476201b4101711b201a201e6a2d0000221b410f71201b410476201d4101711b470d012020200141016a2201470d000b202021010b02402001201f460d00200042003702000c100b024002402021201f460d002013201f6a2201410176221720034f0d0d200541c8016a200220176a2d00002217410f71201741047620014101711b410c6c6a221728020022214102470d01200042003702000c110b4100210102402022450d002023417f4c0d140240024020230d00410121010c010b2023102f2201450d140b20012022202310bf091a0b20002001360204200041003602002000410c6a2023360200200041086a20233602000c100b201f41016a2122201f41016a210120172802042120201741086a280200211f0b200120156a2115201320226a211302402021450d00200541c8016a2020201f10bb0420052d00c8014101460d0e0c010b0b02400240201f4120460d002010200b290300370300200541c8016a41106a2201200c290300370300200541c8016a41086a2217200d290300370300200520052903003703c801201f417f4c0d1202400240201f0d00410121190c010b201f102f2219450d120b20192020201f10bf092119200541d0036a41186a221a2010290300370300200541d0036a41106a221b2001290300370300200541d0036a41086a221c2017290300370300200520052903c8013703d0034130102f2201450d11200141043a0000200120052903d003370001200120052f00c8013b00212001201f36002c2001201f36002820012019360024200141096a201c290300370000200141116a201b290300370000200141196a201a290300370000200141236a200541c8016a41026a2d00003a0000410121170c010b41002117200541c8016a41026a41003a0000200541003b01c80120202f00002119200541cc036a41026a202041026a2d00003a00002020411f6a2d0000211a202041176a29000021082020280003210120202900072109200541d0036a41086a221b2020410f6a290000370300200541d0036a41106a221c2008370300200541d0036a41186a221d201a3a0000200520193b01cc03200520093703d0032010201d2d00003a0000200541c8016a41106a201c290300370300200541c8016a41086a201b290300370300200520052903d0033703c8010b200541c8036a41026a2219200541cc036a41026a2d00003a0000200541a8036a41086a221a200541c8016a41086a290300370300200541a8036a41106a221b200541c8016a41106a290300370300200541a8036a41186a221c2010280200360200200520052f01cc033b01c803200520052903c8013703a803024020170d00200f20052903a803370000200f41086a201a290300370000200f41106a201b290300370000200f41186a201c2d00003a0000200520052f01c8033b010020052001360003200520192d00003a00022018450d01201610310c010b0b20004101360200200020013602040c0c0b20012003418087ca001058000b20012003419087ca001058000b2001200341a087ca00103f000b201c200341c086ca00103f000b201e201741c086ca00103f000b2001200341c086ca00103f000b201c200341c086ca00103f000b201e201741c086ca00103f000b2017200341c086ca00103f000b41002104024002400240201741017420196b200e20136b2215470d004100210441002101024002402015450d00410021010340201920016a221b410176221c20174f0d04201320016a221d410176221e20034f0d05201a201c6a2d0000221c410f71201c41f00171410476201b4101711b2002201e6a2d0000221b410f71201b410476201d4101711b470d012015200141016a2201470d000c020b0b20012015470d010b2020417f4c0d080240024020200d00410121040c010b2020102f2204450d080b20042021202010bf091a2020ad220842208620088421080b2000200436020420004100360200200041086a20083702000c040b201c201741c086ca00103f000b201e200341c086ca00103f000b200042003702000c010b20052d00c9012113200541d0036a41086a2203200541086a290300370300200541d0036a41106a2217200541106a290300370300200541d0036a41186a2219200541186a290300370300200520052903003703d0034130102f2201450d02200141033a0000200120052903d003370001200120133a0021200120052901a803370122200141096a2003290300370000200141116a2017290300370000200141196a2019290300370000200141286a200541ae036a29010037010020004101360200200020013602040b2018450d00201610310b200541f0036a24000f0b1039000b103b000b9e1203027f027e127f230041b0096b2203240041002104200341003602a806200320023602a406200320013602a006420321050240024020020d0042002106410021070c010b41012107200341013602a80642002106024020012d000022080d00420021050c010b0240024002400240024002400240024002400240200841c00171220941c001460d0002402009418001460d00200941c000470d0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c0c0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c0a0b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c0a0b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c080b2008413f712208413f470d05410221074141210803402007417f6a20024f0d03200320073602a8060240200120076a417f6a2d0000220941ff01460d00200920086b21080c080b200841817e6a2108200741016a2207418302470d000b41ffff03210841820221070c060b2007417f6a21070c080b2007417f6a21070c070b2007417f6a21070c060b410121070c040b410121070c020b410121070b2008ad422086428002842106420121050c020b2008ad4220862106420121050c010b2008ad4220862106420221050b2006422088a721094101210a41012108024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402005200684a741ff01710e040500010a050b2009410171220b450d03200720024f0d0141002108200120076a2d00004110490d030c090b2009410171220b450d010240200720024f0d0041002108200120076a2d00004110490d020c090b2007200241b8dcc400103f000b2007200241c8dcc400103f0c030b2007200941016a4101766a220c20024b0d052003200c3602a806200341106a200341a0066a10dc0620032802100d0520032802a806220d20032802146a220e20032802a4064b0d052003200e3602a806200341e0046a200341f0076a41c00110bf091a410121040c010b2007200941016a4101766a220c20024b0d042003200c3602a806200c41026a220820024b0d04200320083602a806200c417e4f0d062001200c6a2f00002104410021094100210d0240200642800283500d00200341086a200341a0066a10dc0620032802080d054101210820032802a806220e200328020c6a220f20032802a4064b0d062003200f3602a8064101210d0b200341023602a40920034102360298092003410236028c092003410236028009200341023602f408200341023602e808200341023602dc08200341023602d008200341023602c408200341023602b808200341023602ac08200341023602a00820034102360294082003410236028808200341023602fc07200341023602f007200341f0076a2108200441ffff037121100340024020102009410f7176410171450d002003200341a0066a10dc0620032802000d0620032802a8062211200328020422126a220420032802a4064b0d06200320043602a806200841086a2004360200200841046a2011360200200820124120473602000b2008410c6a2108200941016a22094110470d000b200341e0046a200341f0076a41c00110bf091a410421040b200341a0036a200341e0046a41c00110bf091a200341c0016a41186a200f360200200341c0016a41146a200e360200200341c0016a41106a200d360200200341c0016a410c6a200b360200200341c0016a41086a200c360200200320073602c401200320043602c001200341c0016a411c6a200341a0036a41c00110bf091a4100210a4100211320040e050e010000020e0b000b200c2007490d04200c20024b0d05200e200d490d06200e20024b0d07200c20076b2109200120076a21082001200d6a2114200e200d6b2115410121130c0c0b200341023602a40920034102360298092003410236028c092003410236028009200341023602f408200341023602e808200341023602dc08200341023602d008200341023602c408200341023602b808200341023602ac08200341023602a00820034102360294082003410236028808200341023602fc07200341023602f007410021080340410221040240200341c0016a20086a2209411c6a22102802004102460d00200941246a2802002111200941206a28020021090240024020102802004101470d0020112009490d0b41012104201120024d0d012011200241bc89ca001058000b20112009490d0b41002104201120024b0d0c0b201120096b2111200120096a21120b200341f0076a20086a22092004360200200941086a2011360200200941046a20123602002008410c6a220841c001460d0b0c000b0b410121080b200341a0036a200341e0046a41c00110bf091a200020083a00010c0a0b200c200841a8dcc4001062000b2007200c41b48aca001062000b200c200241b48aca001058000b200d200e41c48aca001062000b200e200241c48aca001058000b2009201141bc89ca001062000b2009201141cc89ca001062000b2011200241cc89ca001058000b02400240200d4101460d00410021120c010b200f200e490d03200f20024b0d04200f200e6b21112001200e6a21120b200c2007490d04200c20024b0d05200341f8076a280200211620032802f407211520032802f0072114200341186a200341fc076a41a80110bf091a200c20076b2109200120076a2108200341ac096a2802002110200341a8096a280200211720032802a4092118410421130b2000411c6a2016360200200041186a2015360200200041146a2014360200200041106a200b3602002000410c6a2009360200200041086a2008360200200041046a2013360200200041206a200341186a41a80110bf091a200041d8016a2011360200200041d4016a2012360200200041d0016a2010360200200041cc016a2017360200200041c8016a20183602000b2000200a3a0000200341b0096a24000f0b200e200f41d48aca001062000b200f200241d48aca001058000b2007200c41b48aca001062000b200c200241b48aca001058000bc81703037f037e197f230041f0036b2204240020012802042105200128020021062001280208220141086a2900002107200141106a290000210820012900002109200441186a220a200141186a290000370300200441106a220b2008370300200441086a220c2007370300200420093703002003410174210d2004410772210e200441c8016a41186a210f200441c8016a410c6a2110200441c8016a41206a211141002112410021134100211402400240024002400240024002400240024002400240024002400240024002400340201441017621010240024020144101710d00200120034b0d03200441003a00d001200420013602cc01200420023602c8010c010b200120034b0d03200120034f0d04200441013a00d001200420023602c801200420013602cc012004200220016a2d000041f001713a00d1010b200441d0036a20062004200441c8016a200528020c11050002400240024020042802d00322150d00200441c8016a41086a2212200441086a290300370300200441c8016a41106a2203200441106a290300370300200441c8016a41186a2216200441186a290300370300200420042903003703c8014130102f22010d010c130b20042802d4032117200441c8016a201520042802d80310bb0420042d00c8014101460d0f201341016a21130c010b200120042903c80137000120012004290020370021200120134100473a0000200141096a2012290300370000200141116a2003290300370000200141196a2016290300370000200141286a200441276a29000037000020004101360200200020013602040c100b034020042802e401211820042802e001211920042802dc01211a20042802d801211b20042802d401211620042802d001211c20042802cc012101200441206a201141a80110bf091a200428029403211d200428029003211e024002400240024020010e05110f000102110b4100210102402016410174201b6b221f200d20126b221d201d201f4b1b2220450d000340201220016a221d410176221e20034f0d0a201b20016a2221410176222220164f0d0b2002201e6a2d0000221e410f71201e41f00171410476201d4101711b201c20226a2d0000221d410f71201d41047620214101711b470d012020200141016a2201470d000b202021010b02402001201f470d00201f21010c030b200042003702000c120b200420183602dc01200420193602d8012004201a3602d4012004201b3602d001200420163602cc012004201c3602c801200f200441206a41a80110bf091a02400240200d2012460d002012410176220120034f0d0b200441c8016a200220016a2d00002201410f71200141047620124101711b410c6c6a2201280200221a4102470d01200042003702000c130b410021010240201e450d00201d417f4c0d1002400240201d0d00410121010c010b201d102f2201450d160b2001201e201d10bf091a0b20002001360204200041003602002000410c6a201d360200200041086a201d3602000c120b20012802042119200141086a28020021184101211f410121010c010b20042802a0032120200428029c03211f2004280298032101200420183602d001200420193602cc012004201a3602c8012010200441206a41a80110bf091a20042001360284032004201d360280032004201e3602fc024100210102402016410174201b6b2218200d20126b221a201a20184b1b2219450d000340201220016a221d410176221e20034f0d0b201b20016a2221410176222220164f0d0c2002201e6a2d0000221e410f71201e41f00171410476201d4101711b201c20226a2d0000221d410f71201d41047620214101711b470d012019200141016a2201470d000b201921010b024020012018460d00200042003702000c110b02400240201a2018460d00201220186a2201410176221620034f0d0d200441c8016a200220166a2d00002216410f71201641047620014101711b410c6c6a2216280200221a4102470d01200042003702000c120b410021010240201f450d002020417f4c0d0f0240024020200d00410121010c010b2020102f2201450d150b2001201f202010bf091a0b20002001360204200041003602002000410c6a2020360200200041086a20203602000c110b201841016a211f201841016a210120162802042119201641086a28020021180b200120146a21142012201f6a21120240201a450d00200441c8016a2019201810bb0420042d00c8014101460d0f0c010b0b0240024020184120460d00200f200a290300370300200441c8016a41106a2201200b290300370300200441c8016a41086a2216200c290300370300200420042903003703c8012018417f4c0d0d0240024020180d004101211b0c010b2018102f221b450d130b201b2019201810bf09211b200441d0036a41186a221c200f290300370300200441d0036a41106a221d2001290300370300200441d0036a41086a221e2016290300370300200420042903c8013703d0034130102f2201450d12200141043a0000200120042903d003370001200120042f00c8013b00212001201836002c200120183600282001201b360024200141096a201e290300370000200141116a201d290300370000200141196a201c290300370000200141236a200441c8016a41026a2d00003a0000410121160c010b41002116200441c8016a41026a41003a0000200441003b01c80120192f0000211b200441cc036a41026a201941026a2d00003a00002019411f6a2d0000211c201941176a29000021072019280003210120192900072108200441d0036a41086a221d2019410f6a290000370300200441d0036a41106a221e2007370300200441d0036a41186a2221201c3a00002004201b3b01cc03200420083703d003200f20212d00003a0000200441c8016a41106a201e290300370300200441c8016a41086a201d290300370300200420042903d0033703c8010b200441c8036a41026a221b200441cc036a41026a2d00003a0000200441a8036a41086a221c200441c8016a41086a290300370300200441a8036a41106a221d200441c8016a41106a290300370300200441a8036a41186a221e200f280200360200200420042f01cc033b01c803200420042903c8013703a803024020160d00200e20042903a803370000200e41086a201c290300370000200e41106a201d290300370000200e41186a201e2d00003a0000200420042f01c8033b0100200420013600032004201b2d00003a00022017450d01201510310c010b0b20004101360200200020013602040c0d0b20012003418087ca001058000b20012003419087ca001058000b2001200341a087ca00103f000b201e200341c086ca00103f000b2022201641c086ca00103f000b2001200341c086ca00103f000b201e200341c086ca00103f000b2022201641c086ca00103f000b2016200341c086ca00103f000b410021180240024002402016410174201b6b200d20126b2214470d004100211841002101024002402014450d00410021010340201b20016a221d410176221e20164f0d04201220016a2221410176222220034f0d05201c201e6a2d0000221e410f71201e41f00171410476201d4101711b200220226a2d0000221d410f71201d41047620214101711b470d012014200141016a2201470d000c020b0b20012014470d010b2019417f4c0d030240024020190d00410121180c010b2019102f2218450d090b2018201a201910bf091a2019ad220742208620078421070b2000201836020420004100360200200041086a20073702000c050b201e201641c086ca00103f000b2022200341c086ca00103f000b103b000b200042003702000c010b20042d00c9012112200441d0036a41086a2203200441086a290300370300200441d0036a41106a2216200441106a290300370300200441d0036a41186a221b200441186a290300370300200420042903003703d0034130102f2201450d02200141033a0000200120042903d003370001200120123a0021200120042901a803370122200141096a2003290300370000200141116a2016290300370000200141196a201b290300370000200141286a200441ae036a29010037010020004101360200200020013602040b2017450d00201510310b200441f0036a24000f0b1039000bc206030a7f027e037f230041c0076b220324000240024002400240024002402001450d0020032001417f6a220420022802a82910bd040240024020032802042201450d00200328020021050c010b41a829102f2201450d0341002105200141003b01a629200141003602a02920032001360204200341003602000b41d829102f2206450d02200620013602a82941002107200641003b01a629200641003602a029200141003b01a429200120063602a029200320063602042003200541016a360200024020022f01a629450d00200241ac296a2108200241f0276a2109200641a8296a210a200641f0276a210b2002210c0340200341106a200c10be04200941086a290300210d2009290300210e200341e0036a2004200828020010bd0420032802e803210f20032802e403210120032802e0032110200341f0036a200341106a41d00310bf091a024020010d0041a829102f2201450d0541002110200141003b01a629200141003602a0290b20052010470d0620062f01a6292210410b4f0d072006201041016a22113b01a6292006201041d0036c6a200341f0036a41d00310bf091a200b20104104746a2210200d3703082010200e370300200a20114102746a2001360200200120113b01a429200120063602a0292003200f20032802086a41016a360208200841046a2108200c41d0036a210c200941106a2109200741016a220720022f01a629490d000b0b20002003290300370200200041086a200341086a2802003602000c010b41a829102f2209450d01200941003b01a629200941003602a02941002108024020022f01a629450d00200241f0276a2101200941f0276a210c41002108200221100340200341f0036a201010be0420092f01a6292206410b4f0d04200141086a290300210d2001290300210e2009200641016a3b01a6292009200641d0036c6a200341f0036a41d00310c0091a200c20064104746a2206200d3703082006200e370300201041d0036a2110200141106a2101200841016a220820022f01a629490d000b0b2000200836020820002009360204200041003602000b200341c0076a24000f0b1039000b41a48eca00412041d88cc600103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000bd00e02037f017e230041c0036b22022400024002400240024020012802004101470d002001410c6a2802002203417f4c0d02200128020421044101210102402003450d002003102f2201450d040b20012004200310bf0921012000410c6a2003360200200041086a200336020020002001360204200041013602000c010b42002105024002400240024002400240024002400240200141086a2802000e09080102030405060700080b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04200241e0016a200141b8016a10bf04200241a8016a200141f0016a10bf04200241f0006a200141a8026a10bf04200241386a200141e0026a10bf04200220014198036a10bf04420821050c070b20024188036a200141106a10bf04420121050c060b20024188036a200141106a10bf04200241d0026a200141c8006a10bf04420221050c050b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04420321050c040b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04200241e0016a200141b8016a10bf04420421050c030b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04200241e0016a200141b8016a10bf04200241a8016a200141f0016a10bf04420521050c020b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04200241e0016a200141b8016a10bf04200241a8016a200141f0016a10bf04200241f0006a200141a8026a10bf04420621050c010b20024188036a200141106a10bf04200241d0026a200141c8006a10bf0420024198026a20014180016a10bf04200241e0016a200141b8016a10bf04200241a8016a200141f0016a10bf04200241f0006a200141a8026a10bf04200241386a200141e0026a10bf04420721050b200041086a2005370300200041106a200229038803370300200041c8006a20022903d002370300200041186a20024188036a41086a290300370300200041206a20024188036a41106a290300370300200041286a20024188036a41186a290300370300200041306a20024188036a41206a290300370300200041386a20024188036a41286a290300370300200041c0006a20024188036a41306a290300370300200041d0006a200241d0026a41086a290300370300200041d8006a200241d0026a41106a290300370300200041e0006a200241d0026a41186a290300370300200041e8006a200241d0026a41206a290300370300200041f0006a200241d0026a41286a290300370300200041f8006a200241d0026a41306a290300370300200041b0016a20024198026a41306a290300370300200041a8016a20024198026a41286a290300370300200041a0016a20024198026a41206a29030037030020004198016a20024198026a41186a29030037030020004190016a20024198026a41106a29030037030020004188016a20024198026a41086a29030037030020004180016a200229039802370300200041e8016a200241e0016a41306a290300370300200041e0016a200241e0016a41286a290300370300200041d8016a200241e0016a41206a290300370300200041d0016a200241e0016a41186a290300370300200041c8016a200241e0016a41106a290300370300200041c0016a200241e0016a41086a290300370300200041b8016a20022903e001370300200041a0026a200241a8016a41306a29030037030020004198026a200241a8016a41286a29030037030020004190026a200241a8016a41206a29030037030020004188026a200241a8016a41186a29030037030020004180026a200241a8016a41106a290300370300200041f8016a200241a8016a41086a290300370300200041f0016a20022903a801370300200041d8026a200241f0006a41306a290300370300200041d0026a200241f0006a41286a290300370300200041c8026a200241f0006a41206a290300370300200041c0026a200241f0006a41186a290300370300200041b8026a200241f0006a41106a290300370300200041b0026a200241f0006a41086a290300370300200041a8026a200229037037030020004190036a200241386a41306a29030037030020004188036a200241386a41286a29030037030020004180036a200241386a41206a290300370300200041f8026a200241386a41186a290300370300200041f0026a200241386a41106a290300370300200041e8026a200241386a41086a290300370300200041e0026a2002290338370300200041c8036a200241306a290300370300200041c0036a200241286a290300370300200041b8036a200241206a290300370300200041b0036a200241186a290300370300200041a8036a200241106a290300370300200041a0036a200241086a29030037030020004198036a2002290300370300200041003602000b200241c0036a24000f0b103b000b1039000bf30802057f017e02400240024002400240024002400240024002400240024020012d00000e0a01020304050607080900010b410421024106210302400240024002400240024002400240200141046a2802000e0700010203040507000b410021030c050b200141106a2802002204417f4c0d0f200141086a2802002105410121034101210602402004450d002004102f2206450d110b20062005200410bf091a2004ad220742208620078421070c050b200141086a2802002106410221030c040b410321030c020b410421030c020b410521030b0b2001411c6a2802002104200141186a28020021050240024002400240024020012802140e050001020304000b410021020c030b410121020c020b410221020c010b410321020b200041093a00002000411c6a2004360200200041186a2005360200200041146a20023602002000410c6a2007370200200041086a2006360200200041046a20033602000f0b200041003a00000f0b200041013a0000200041046a200141046a2802003602000f0b4103210202400240024002400240200141246a2802000e0400010204000b410021020c020b200141306a2802002206417f4c0d09200141286a2802002104410121024101210302402006450d002006102f2203450d0b0b20032004200610bf091a0c020b410221020b0b200041023a0000200041306a20063602002000412c6a2006360200200041286a2003360200200041246a200236020020002001290001370001200041096a200141096a290000370000200041116a200141116a290000370000200041196a200141196a2900003700000f0b4103210202400240024002400240200141046a2802000e0400010204000b410021020c020b200141106a2802002206417f4c0d08200141086a2802002104410121024101210302402006450d002006102f2203450d0a0b20032004200610bf091a0c020b410221020b0b200041033a0000200041186a2001290318370300200041106a20063602002000410c6a2006360200200041086a2003360200200041046a20023602000f0b4103210202400240024002400240200141186a2802000e0400010204000b410021020c020b200141246a2802002206417f4c0d072001411c6a2802002104410121024101210302402006450d002006102f2203450d090b20032004200610bf091a0c020b410221020b0b200041043a0000200041246a2006360200200041206a20063602002000411c6a2003360200200041186a200236020020002001290001370001200041096a200141096a290000370000200041116a200141116a2800003600000f0b200041053a0000200020012d00013a00010f0b200041063a0000200041106a200141106a290300370300200041086a200141086a2903003703000f0b2001410c6a2802002206417f4c0d01200141046a28020021010240024020060d00410121030c010b2006102f2203450d030b20032001200610bf0921012000410c6a2006360200200041086a2006360200200041046a2001360200200041073a00000f0b200041083a00000f0b103b000b1039000bbe0b010f7f23004190086b22032400024002400240024002402001450d0020032001417f6a220420022802b02b10c0040240024020032802042201450d00200328020021050c010b41b02b102f2201450d0341002105200141003b01ae2b200141003602a82b20032001360204200341003602000b41e02b102f2206450d02200620013602b02b200641003b01ae2b200641003602a82b200141003b01ac2b200120063602a82b200320063602042003200541016a36020002400240024020022f01ae2b450d00200241b42b6a2107200641b02b6a2108200341106a41d1036a220941086a210a200941186a210b200941106a210c2002210d4100210e0340200341106a200d10be0402400240024002400240024002400240200d41d0036a2d00000e0701020304050600010b200d41dc036a2802002201417f4c0d0e200d41d4036a280200210f0240024020010d00410121100c010b2001102f2210450d0e0b2010200f200110bf09210f200320013602ec03200320013602e8032003200f3602e403200341063a00e0030c060b200341003a00e0030c050b200341106a41e0036a200d41e0036a290300370300200341013a00e0032003200d41d8036a2903003703e8030c040b200341023a00e0032003200d41d1036a2800003600e1030c030b200341033a00e0032003200d41d1036a2900003700e1030c020b200a200d41d9036a2900003700002009200d41d1036a290000370000200341043a00e0030c010b200b200d41e9036a290000370000200c200d41e1036a290000370000200a200d41d9036a2900003700002009200d41d1036a290000370000200341053a00e0030b20034188046a2004200728020010c0042003280290042111200328028c042101200328028804210f20034198046a200341106a41f80310bf091a024020010d0041b02b102f2201450d074100210f200141003b01ae2b200141003602a82b0b2005200f470d0220062f01ae2b220f410b4f0d032006200f41016a22103b01ae2b2006200f41f8036c6a20034198046a41f80310bf091a200820104102746a2001360200200120103b01ac2b200120063602a82b2003201120032802086a41016a360208200741046a2107200d41f8036a210d200e41016a220e20022f01ae2b490d000b0b20002003290300370200200041086a200341086a2802003602000c030b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b41b02b102f220d450d01200d41003b01ae2b200d41003602a82b41002107024020022f01ae2b450d0020034198046a41d1036a220f41086a2110200f41186a2105200f41106a21042002210141002107034020034198046a200110be0402400240024002400240024002400240200141d0036a2d00000e0701020304050600010b200141dc036a2802002206417f4c0d0b200141d4036a280200210e0240024020060d00410121110c010b2006102f2211450d0b0b2011200e200610bf09210e200320063602f407200320063602f0072003200e3602ec07200341063a00e8070c060b200341003a00e8070c050b20034198046a41e0036a200141e0036a290300370300200341013a00e8072003200141d8036a2903003703f0070c040b200341023a00e8072003200141d1036a2800003600e9070c030b200341033a00e8072003200141d1036a2900003700e9070c020b2010200141d9036a290000370000200f200141d1036a290000370000200341043a00e8070c010b2005200141e9036a2900003700002004200141e1036a2900003700002010200141d9036a290000370000200f200141d1036a290000370000200341053a00e8070b200d2f01ae2b2206410b4f0d05200d200641016a3b01ae2b200d200641f8036c6a20034198046a41f80310c0091a200141f8036a2101200741016a220720022f01ae2b490d000b0b200020073602082000200d360204200041003602000b20034190086a24000f0b1039000b103b000b41a48eca00412041d88cc600103c000b130020004108360204200041b8d8c1003602000bd60302097f027e230041800b6b22012400200028020421022000410036020402402002450d00024020002802182203450d002000280208210420002802002100200141d8036a2105200141d0036a4104722106200141a8076a21070340410120006b21002003417f6a2103024002400340200420022f01a629490d01024020022802a02922080d0020021031410221080c030b20022f01a4292104200210312000417f6a2100200821020c000b0b2002200441d0036c6a22092802002108200141d0036a200941046a41cc0310bf091a200441016a2109200220044104746a220441f8276a290300210a200441f0276a290300210b0240024020004101470d00200921040c010b200220094102746a41a8296a280200210202402000450d0041002104034020022802a829210220002004417f6a2204470d000b0b410021040b200141b4076a200141d0036a41cc0310bf091a0b200141046a200141b4076a41cc0310bf091a200120083602d0032006200141046a41cc0310bf091a2007200a3703002001200b3703a0070240024020080d0020051082040c010b20012802d803450d0020012802d40310310b4100210020030d000b0b034020022802a0292100200210312000210220000d000b0b200141800b6a24000b3400200041edddc10036020420004100360200200041146a4102360200200041106a4188e0c100360200200041086a42113702000b13002000410236020420004190e3c1003602000b9d0202017f037e230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00420021040c010b200328020c210202400240200341086a41086a2802004110490d00200141086a290000210520012900002106420121040c010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d9040240200328021c450d00200328021810310b420021040b2002450d00200110310b2000200637030820002004370300200041106a2005370300200341d0006a24000be10201067f230041f0076b22022400024002400240200128021822030d00410221040c010b20012003417f6a36021820012802042203450d012001280208210520012802002106024002400340200520032f01ae2b490d01024020032802a82b22040d0020031031410221040c030b20032f01ac2b210520031031200641016a2106200421030c000b0b2003200541f8036c6a22072802002104200241fc036a200741046a41f40310bf091a200541016a210502402006450d00200320054102746a41b02b6a2802002103024020064101460d0041012105034020032802b02b21032006200541016a2205470d000b0b410021050b200241086a200241fc036a41f40310bf091a0b200241fc036a200241086a41f40310bf091a200120053602082001200336020420014100360200200041046a200241fc036a41f40310bf091a0b20002004360200200241f0076a24000f0b418a98ca00412b418896ca00103c000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a220228020010c704200228020010310f0b2000410c6a220228020010c704200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a220228020010c704200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a220228020010c704200228020010310f0b200041106a220228020010c704200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a220228020010c704200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a220228020010c704200228020010310f0b200041c8006a220228020010c704200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010ad03200228020010310f0b0b130020004102360204200041ece8c1003602000b3400200041bec8c00036020420004100360200200041146a4100360200200041106a41f8fac900360200200041086a42093702000bc8010002400240024002400240024020002d00000e09050500010205050305040b200041246a2802004101470d042000412c6a280200450d04200041286a28020010310f0b200041046a2802004101470d032000410c6a280200450d03200041086a28020010310f0b200041186a2802004101470d02200041206a280200450d022000411c6a28020010310f0b200041086a280200450d01200041046a28020010310c010b200041046a2802004101470d002000410c6a280200450d00200041086a28020010310f0b0ba00101047f0240200128020422020d0020004100360204200041106a4100360200200041003602180f0b2001280208210320012802002101200221040240034020022f01ae2b21052001450d012001417f6a2101200220054102746a41b02b6a280200210220042802b02b21040c000b0b200042003702082000200436020420002001360200200041146a2005360200200041106a2002360200200020033602180ba40b02087f067e230041b0036b2203240020034190036a41186a2204420037030020034190036a41106a2205420037030020034190036a41086a22064200370300200342003703900341062107200341d8016a41f3c6c000410610a7022006200341d8016a41086a2208290000370300200320032900d80137039003200341d8016a41f48fc900411010a70220042008290000370300200520032900d801370300200341086a20034190036a412010c002410021090240417f200328020c410020032802081b220a20026a22022002200a491b220a418080c002418080f001200141ff017122021b4b0d00200341106a108d022004420037030020054200370300200642003703002003420037039003200341d8016a41f3c6c000410610a70220062008290000370300200320032900d80137039003200341d8016a41c08fc900410b10a702200541086a2008290000370000200520032900d801370000200341d8016a20034190036a10ed03200341d8016a41186a290300210b200341d8016a41106a290300210c20032903e001210d20032903d801210e200341d8016a200341106a41b80110bf091a2003200d4200200e42015122061b370390032003200c420020061b3703d0012003200b420020061b3703c801024002400240024020020e03010200010b427f2000200341d8026a22062903007c220b200b2000541b210b0c020b427f200020032903e8017c220b200b2000541b210b200341e8016a21060c010b427f2000200341a0026a22062903007c220b200b2000541b210b0b02400240024002402006290318220c4201510d0020062903284201510d00200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008427f2008290300220d200b7c220b200b200d541b3703000c010b200341c8016a2108024002400240200141ff01710e03010002010b200341d0016a21080c010b20034190036a21080b2008290300220d200b7c220b200d540d012008200b3703000b200341c8016a2108024002400240200141ff01710e03000102000b20034190036a21080c010b200341d0016a21080b2008290300210e0240200c4201520d00200e200641206a290300560d010b0240427f427f200329039003220b20032903d001220c7c220d200d200b541b220f20032903c801220d7c22102010200f541b20032903e001580d0020062903284201520d00200e200641306a290300560d010b41002106410021070c010b41062107410121060b20060d00200341d8016a108d020240024002400240200141ff01710e03010200010b200341d8026a21010c020b200341e8016a21010c010b200341a0026a21010b024020012903084201520d0041062107200141106a2903002000540d010b200341a8036a2208420037030020034190036a41106a2207420037030020034190036a41086a220142003703002003420037039003200341d8016a41f3c6c000410610a7022001200341d8016a41086a2206290000370300200320032900d80137039003200341d8016a41f48fc900411010a702200541086a22042006290000370000200520032900d8013700002003200a3602d80120034190036a4120200341d8016a4104109f022008420037030020074200370300200142003703002003420037039003200341d8016a41f3c6c000410610a70220012006290000370300200320032900d80137039003200341d8016a41c08fc900410b10a70220042006290000370000200520032900d801370000200341003602e001200342013703d8012003200b370310200341d8016a200341106a4108107e2003200c370310200341d8016a200341106a4108107e2003200d370310200341d8016a200341106a4108107e20034190036a412020032802d801220520032802e001109f02024020032802dc01450d00200510310b410221090b200341b0036a240020074108742009720bee0302037f017e230041d0016b22042400200441206a22054200370300200441086a41106a22064200370300200441086a41086a420037030020044200370308200441086a41f3c6c000410610a702200441c0016a41f48fc900411010a7022005200441c0016a41086a290000370300200620042900c0013703002004200441086a412010c00202400240417f2004280204410020042802001b220520036a220320032005491b418080c002418080f001200241ff017122031b4b0d00200441086a108d02024002400240024020030e03010200010b20044188016a21030c020b200441186a21030c010b200441d0006a21030b0240024020032903084201520d00200341106a2903002001540d010b42002107024002400240200241ff01710e03000102000b200121070c010b427f200142ffffffffffffffffbf7f7c220720072001541b21070b200041003a0000200041306a41013a0000200041286a4200370200200041206a4280808080c000370300200041186a4204370300200041106a427f370300200041086a2007370300200041316a2004280008360000200041346a2004410b6a2800003600000c020b200041800c3b0001200041013a0000200041036a41003a00000c010b200041800c3b0001200041013a0000200041036a41003a00000b200441d0016a24000bdd2107067f017e037f017e017f067e017f230041900e6b22002400200041a0036a2201420037030020004198036a2202420037030020004188036a41086a220342003703002000420037038803200041b00c6a41f9c6c000410410a7022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41a891c500410b10a70220012004290000370300200220002900b00c370300200041a8096a20004188036a10c405024020002d00a8094102470d002001420037030020024200370300200342003703002000420037038803200041b00c6a41f3c6c000410610a70220032004290000370300200020002900b00c37038803200041b00c6a41a091c900410610a702200241086a2004290000370000200220002900b00c370000200041a8096a20004188036a10c50520002802a8092203410420031b21050240024020002902ac09420020031b2206422088a7220741246c2203450d00200520036a2104200041a8096a41086a2108200521030340024020032d00004101470d00200341016a2800002101200341086a28020021092000200341106a2802003602cc07200020093602c8070240200141c28289aa04470d00200041a8096a200041c8076a10a80420002903a809220a4203510d0020004188036a200841f00010bf091a200041c00c6a20004188036a41f00010bf091a200041306a200041c00c6a41f00010bf091a0c040b200041c00c6a41f8fec20041f00010bf091a0b2004200341246a2203470d000b0b4203210a0b02402007450d00200741246c21042005210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010310c030b2003410c6a280200450d02200341086a28020010310c020b2003410c6a280200450d01200341086a28020010310c010b200341086a280200450d00200341046a28020010310b200341246a21032004415c6a22040d000b0b02402006a72203450d00200341246c450d00200510310b200041a0016a200041306a41f00010bf091a41002109410021010240200a4203510d002000200a3703900220004190026a41086a200041a0016a41f00010bf09210b200041a0036a2201420037030020004198036a2205420037030020004188036a41086a220342003703002000420037038803200041b00c6a41f9c6c000410410a7022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41be90c500410b10a702200241086a22072004290000370000200220002900b00c370000200041206a20004188036a10ab032000290398022106024002402000280220450d0020002903284200520d010b2001420037030020054200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41be90c500410b10a70220072004290000370000200220002900b00c370000200020063703a80920004188036a4120200041a8096a4108109f022001420037030020054200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41f4aec800410b10a70220072004290000370000200220002900b00c370000200041a8096a20004188036a10c60520002802a809210720002902ac09210c2001420037030020054200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a419e91c500410a10a70220012004290000370300200520002900b00c370300200041a8096a20004188036a10c70520002d00a80921042001200041c1096a2900003703002005200041b9096a2900003703002003200041b1096a290000370300200020002900a90937038803200c420020071b210d200c42808080807083420020071b210c2007410820071b21030240024020044101460d00200041d80c6a4200370300200041d00c6a4200370300200041c80c6a4200370300200042003703c00c0c010b200041c00c6a41186a20004188036a41186a290300370300200041c00c6a41106a20004188036a41106a290300370300200041c00c6a41086a20004188036a41086a29030037030020002000290388033703c00c0b200041c8076a41086a200041c00c6a41086a290300220e370300200041c8076a41106a200041c00c6a41106a290300220f370300200041c8076a41186a200041c00c6a41186a2903002210370300200020002903c00c22113703c807200041a8096a41086a200c200d42ffffffff0f8384370300200041a8096a41106a2011370300200041a8096a41186a200e370300200041c8096a200f370300200041a8096a41286a2010370300200020033602ac09200041003602a80920004188036a200041a8096a108b05200041cb0c6a20004188036a41086a28020036000020002000290388033700c30c20004194036a200041c70c6a290000370000200041c28289aa0436008903200041023a008803200020002900c00c37008d0320004188036a10d802200da72204450d00200441286c450d00200310310b200041a0036a2205420037030020004188036a41106a2207420037030020004188036a41086a220342003703002000420037038803200041b00c6a41f9c6c000410410a7022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41d890c500410b10a702200241086a22082004290000370000200220002900b00c370000200041106a20004188036a10ab03200028021021012000290318210c2005420037030020074200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41c691c500410810a70220082004290000370000200220002900b00c370000200042002006200c42017c420120011b7d220c200c2006561b3e02a80920004188036a4120200041a8096a4104109f022005420037030020074200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41d890c500410b10a70220082004290000370000200220002900b00c370000200020063703a80920004188036a4120200041a8096a4108109f0241002101200a4201510d0020004190026a41106a28020021012005420037030020074200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41f4aec800410b10a70220082004290000370000200220002900b00c370000200041a8096a20004188036a10c60520002802a8092203410820031b210402400240200120002902ac09420020031b220c422088a74f0d00200041c8076a41186a2004200141286c6a220341186a290000370300200041c8076a41106a200341106a290000370300200041c8076a41086a200341086a290000370300200020032900003703c807200041a8096a200041c8076a10c80520002802a809210320004188036a200041a8096a41047241c40110bf091a20034101460d00200b410c6a210720004188066a200041c00c6a41046a20004188036a41046a41c00110bf0941c00110bf091a200041c8076a20004188066a41c00110bf091a20004188036a41186a2203420037030020004188036a41106a2201420037030020004188036a41086a220542003703002000420037038803200041b00c6a41f9c6c000410410a7022005200041b00c6a41086a2208290000370300200020002900b00c37038803200041b00c6a419e91c500410a10a70220032008290000370300200120002900b00c370300200041a8096a20004188036a10c70520002d00a80921082003200041c1096a2900003703002001200041b9096a2900003703002005200041b1096a290000370300200020002900a909370388030240024020084101460d00200041a0096a420037030020004198096a420037030020004190096a420037030020004200370388090c010b20004188096a41186a20004188036a41186a29030037030020004188096a41106a20004188036a41106a29030037030020004188096a41086a20004188036a41086a2903003703002000200029038803370388090b20004188036a41186a420037030020004188036a41106a420037030020004188036a41086a220342003703002000420037038803200041b00c6a41f9c6c000410410a7022003200041b00c6a41086a2201290000370300200020002900b00c37038803200041b00c6a41a090c500410a10a702200241086a2001290000370000200220002900b00c370000200020004188036a10ab032000290308210d20002802002103200041c00c6a41dbedc9004104109001200041c00c6a41dfedc900410b2006109201200041c00c6a41eaedc900410d200d420020031b109201200041c00c6a41f7edc900411020004188096a412010910120004188036a200041c00c6a41d00110bf091a200041a8096a2007200041c8076a20004188036a10c90520002802a8094101460d0020004188036a200041a8096a41086a41800310bf091a200041a8096a20004188036a41800310bf091a200041c00c6a41fcd6c8004109109001200041c00c6a41f8fac900410041c8edc9004113109101200041c00c6a4185d7c8004106200041c80a6a4120109101200041c00c6a418bd7c8004107200041880c6a412010910120004188096a41186a420037030020004188096a41106a420037030020004188096a41086a42003703002000420037038809200041c00c6a41f8fac900410020004188096a4120109301410021030340200041c00c6a20036a41003a0000200341016a220341c801470d000b200041c8076a41086a20004188096a41086a290300370300200041c8076a41106a20004188096a41106a290300370300200041c8076a41186a20004188096a41186a29030037030020002000290388093703c807410121010c010b410021010b200ca72203450d00200341286c450d00200410310b0240200a4200520d00200041c00c6a41186a200041c8076a41186a290300370300200041c00c6a41106a200041c8076a41106a290300370300200041c00c6a41086a200041c8076a41086a290300370300200020002903c8073703c00c200121090b200041b1096a2205200041c00c6a41086a290300370000200041b9096a2207200041c00c6a41106a290300370000200041c1096a2208200041c00c6a41186a290300370000200020093a00a809200020002903c00c3700a90920004188036a41186a2209420037030020004188036a41106a220b420037030020004188036a41086a220342003703002000420037038803200041b00c6a41f9c6c000410410a7022003200041b00c6a41086a2204290000370300200020002900b00c37038803200041b00c6a41a891c500410b10a702200241086a22122004290000370000200220002900b00c37000020004188036a200041a8096a10ca052005200041c8076a41086a2903003700002007200041c8076a41106a2903003700002008200041c8076a41186a290300370000200020013a00a809200020002903c8073700a90920094200370300200b4200370300200342003703002000420037038803200041b00c6a41f9c6c000410410a70220032004290000370300200020002900b00c37038803200041b00c6a41b391c500411310a70220122004290000370000200220002900b00c37000020004188036a200041a8096a10ca050b200041900e6a24000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10e8010240024020022802480d0020024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241386a360258200241c4006a41d8ddc900200241c8006a10401a2002280228200228023010d9040240200228022c450d00200228022810310b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110310b200241e0006a24000bc30501037f23004190016b22022400200241e0006a22034200370300200241d8006a22044200370300200241c8006a41086a420037030020024200370348200241c8006a41d7b2c800410710a702200241e8006a41b0ffc100410c10a7022003200241e8006a41086a29000037030020042002290068370300200241106a200241c8006a412010c002200241c8006a2002280214410020022802101b22042000108e03200228024822002002280250108f0321030240200228024c450d00200010310b4101210002400240024020030d00200241186a41caeac400410810a702200241e8006a41c8fdc400410e10a702200220043602382002200241386a410410c802370378200241d4006a2203200241386a41046a3602002002200241f8006a41086a36024c2002200241386a3602502002200241f8006a360248200241286a200241c8006a1088014120102f2200450d012002422037027c20022000360278200241f8006a20014120107e200220022802782200200228028001220410c802370388012003200020046a36020020022000360250200220024188016a41086a36024c200220024188016a360248200241386a200241c8006a1088010240200228027c450d00200010310b20022802302203200228024022046a41206a2200417f4c0d020240024020000d00410121010c010b2000102f2201450d020b200241003602502002200036024c20022001360248200241c8006a200241186a4110107e200241c8006a200241e8006a4110107e200241c8006a200228022822002003107e200241c8006a200228023822032004107e0240200228023c450d00200310310b0240200228022c450d00200010310b200241086a20022802482204200228025010c002200228020c2100200228020821030240200228024c450d00200410310b200341004720004100477121000b20024190016a240020000f0b1039000b103b000bb50201037f230041e0006b22022400200241086a41e8f0c100410810a702200241186a41c08ac200411210a702024002404110102f2203450d002002421037023c20022003360238200241386a20014110107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b1039000b103b000bc20501037f230041f0006b22032400200341086a41e8f0c100410810a702200341186a41ec89c200411610a702024002404110102f2204450d002003421037024c20032004360248200341c8006a20014110107e2003200328024822012003280250220410c802370338200341ec006a200120046a360200200320013602682003200341386a41086a3602642003200341386a360260200341286a200341e0006a1088010240200328024c450d00200110310b2002280208220141046a2204417f4c0d012002280200210202400240024002400240024020040d0020034100360250200342013703480c010b2004102f2205450d05200341003602502003200436024c20032005360248200141c000490d01200141808001490d022001418080808004490d030b200341033a0060200341c8006a200341e0006a4101107e20032001360260200341c8006a200341e0006a4104107e0c030b200320014102743a0060200341c8006a200341e0006a4101107e0c020b200320014102744101723b0160200341c8006a200341e0006a4102107e0c010b20032001410274410272360260200341c8006a200341e0006a4104107e0b200341c8006a20022001107e2003200328024822012003280250220410c802370358200341ec006a200120046a360200200320013602682003200341e0006a3602642003200341d8006a360260200341386a200341e0006a1088010240200328024c450d00200110310b20032802302204200328024022026a41206a2201417f4c0d010240024020010d00410121050c010b2001102f2205450d010b2000410036020820002001360204200020053602002000200341086a4110107e2000200341186a4110107e2000200328022822012004107e2000200328023822042002107e0240200328023c450d00200410310b0240200328022c450d00200110310b200341f0006a24000f0b1039000b103b000bb30201017f230041e0006b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a10a9060240024020032802480d0020034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341386a360258200341c4006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602000c010b20002003290348370200200041086a200341c8006a41086a2802003602000b2002450d00200110310b200341e0006a24000ba20101047f230041106b22022400024002402001280208220341146a2204417f4c0d000240024020040d00410121050c010b2004102f2205450d020b20024100360208200220043602042002200536020020022001410c6a4110107e20012802002003200210ce012002200128021c4120107e2000200228020022012002280208109a0102402002280204450d00200110310b200241106a24000f0b103b000b1039000bb50201037f230041e0006b22022400200241086a41e8f0c100410810a702200241186a41d088c200410710a702024002404120102f2203450d002002422037023c20022003360238200241386a20014120107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b2002280230220341206a2201417f4c0d010240024020010d00410121040c010b2001102f2204450d010b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b1039000b103b000b830402047f047e23004180016b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200328021421022003200341106a41086a28020036022420032001360220200341c8006a200341206a10e60102400240024020032d00484101460d00200341286a41186a2204200341e1006a290000370300200341286a41106a2205200341d9006a290000370300200341286a41086a200341d1006a29000037030020032003290049370328200341f0006a200341206a10e801200328027022060d010b20034100360230200342013703282003410c3602742003200341086a3602702003200341286a36027c200341dc006a41013602002003420137024c2003419086c4003602482003200341f0006a360258200341fc006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602000c010b200341c8006a41086a200341286a41086a2903002207370300200341c8006a41106a20052903002208370300200341c8006a41186a2004290300220937030020032003290328220a37034820002003290274370204200020063602002000410c6a200a370200200041146a20073702002000411c6a2008370200200041246a20093702000b2002450d00200110310b20034180016a24000b6e01027f230041106b2202240020022000280200360200200120024104107e02404120102f2203450d0020024220370204200220033602002002200041046a4120107e2001200228020022002002280208107e02402002280204450d00200010310b200241106a24000f0b1039000be60101047f230041206b2203240002400240200228020822044105744104722205417f4c0d00200228020021022005102f2206450d012003410036020820032005360204200320063602002003200410cb0102402004450d002004410574210403404120102f2205450d032003422037021420032005360210200341106a20024120107e2003200328021022052003280218107e02402003280214450d00200510310b200241206a2102200441606a22040d000b0b20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000f0b103b000b1039000b0e002001ad4220862000ad8410170b8c0101037f230041106b2202240020002802042103200028020021004101210420024280808080104200200128021841badcc30041012001411c6a28020028020c1100001b2001ad843703080240200241086a2000200020036a10b5042d00040d0020022802082201280218419ca0c00041012001411c6a28020028020c11000021040b200241106a240020040bad0101047f230041106b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102f2205450d012002410036020820022004360204200220053602002002200310cb0102402003450d00200341057421030340200220014120107e200141206a2101200341606a22030d000b0b20004120200228020022012002280208109f0202402002280204450d00200110310b200241106a24000f0b103b000b1039000bbd1003087f037e077f230041b00a6b22022400200241e0006a10e408200241c0016a41186a22034200370300200241c0016a41106a22044200370300200241c0016a41086a22054200370300200242003703c001200241d0066a41d6b2c8004101109a012003200241d0066a41186a22062900003703002004200241d0066a41106a22032900003703002005200241d0066a41086a2204290000370300200220022900d0063703c001200241d0066a41d6b2c8004101109a01200241c8086a41186a22052006290000370300200241c8086a41106a22072003290000370300200241c8086a41086a22082004290000370300200220022900d0063703c808024002400240024002404120102f2209450d00200420082903003703002003200729030037030020062005290300370300410041003502f4994a200241e8046aad7c42adfed5e4d485fda8d8007e422189220a3e02f4994a200220022903c8083703d006200241d0006a41f499ca00ad220b42a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010be09200241306a200a42a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010be09200241c0006a200b42c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010be09200241206a200a42c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010be09200241106a200a200b85420042adfed5e4d485fda8d800420010be0920024194026a42003702002002419c026a42003702002002410436029002200241b0026a41f0b2c800360200200241a8026a4108360200200241a4026a2009360200200241013a00b8022002200241c0016a3602b4022002200241e0006a3602ac02200241d1026a2006290300370000200241c9026a2003290300370000200241c1026a2004290300370000200241b9026a20022903d006370000200241db026a200241ea046a2d00003a0000200241d9026a20022f00e8043b000020024188026a420037030020024184026a41a0a4c000360200200241003602dc0220024100360280022002200241206a41086a290300200229032085200b7c200241106a41086a29030020022903108542cf829ebbefefde82147c220c423088893703f8012002200a200241c0006a41086a2903002002290340857c200c422088893703f0012002200241306a41086a290300200229033085200b7c200c421088893703e8012002200a200241d0006a41086a2903002002290350857c200c893703e0012001280200210d2001280204210e20012802082201450d03200d20014105746a220f41606a2110200241d0066a410172210741002111200d2112034020112106201221010340200241e0026a41186a2208200141186a290000370300200241e0026a41106a2209200141106a290000370300200241e0026a41086a2213200141086a290000370300200220012900003703e002200241b8086a200241e0026a109603200241d0066a20022802b808220520022802c00810970320022d00d0062104200241c8086a200741e10110bf091a41002103024020044101470d00200241e8046a200241c8086a41e10110bf091a410121030b024020022802bc08450d00200510310b024020030d00200641016a2106200f200141206a2201470d010c060b0b20024180036a200241e8046a41e10110bf091a200241d0066a41186a2008290300370300200241d0066a41106a2009290300370300200241d0066a41086a2013290300370300200220022903e0023703d006200141206a2112200641016a2111410021040240024002400340200241086a20024180036a200441d7c6c0006a220528000010d301200228020c220841046a2203417f4c0d01200228020821090240024020030d00410121130c010b2003102f2213450d060b200241003602f004200220033602ec04200220133602e804200241e8046a20054104107e20092008200241e8046a10cd0120022802f004210520022802e8042103200220063602b808200241c8086a200241e0016a20032005200241b8086a410410d508024020022802ec04450d00200310310b20022802cc082103024020022802c8084101470d000240024020032d00000e0405050005010b200341086a280200450d04200341046a28020010310c040b200341286a280200450d03200341246a28020010310c030b02402003450d0020022802d008450d00200310310b200441046a2204411c460d030c000b0b103b000b20031031200041086a411a36020020004198b3c800360204200041013602000c040b200220063602b808200241003602f004200242013703e804200241e8046a200241d0066a4120107e200241c8086a200241e0016a200241b8086a410420022802e804220620022802f00410d508024020022802ec04450d00200610310b024020022802c8084101470d000240024020022802cc0822012d00000e0405050005010b200141086a280200450d04200141046a28020010310c040b200141286a280200450d03200141246a28020010310c030b024020022802cc082206450d0020022802d008450d00200610310b20102001470d000c040b0b1039000b20011031200041086a411a36020020004198b3c800360204200041013602000b0240200e41ffffff3f71450d00200d10310b200241e0016a10ee08200241e0006a10df040c010b0240200e41ffffff3f71450d00200d10310b200241e0016a10ee08200241d0066a200241e0006a41e00010bf091a200241c8076a200241d8016a290300370300200241c0076a200241d0016a290300370300200241b8076a200241c0016a41086a290300370300200220022903c0013703b007200041086a200241d0066a41800110bf091a200041003602000b200241b00a6a24000b860201037f230041d0006b22022400200241086a41d7b2c800410710a702200241186a41deb2c800411210a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bec0d010d7f23004180016b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602000c010b200341186a28020021022003280214210420034100360248024002402002450d00200320012d00003a004c2003410136024820024101460d00200320012d00013a004d2003410236024820024102460d00200320012d00023a004e2003410336024820024103460d00200320012d00033a004f2003410436024820024104460d00200341d0006a20012d00043a00002003410536024820024105460d00200341d1006a20012d00053a00002003410636024820024106460d00200341d2006a20012d00063a00002003410736024820024107460d00200341d3006a20012d00073a00002003410836024820024108460d00200341d4006a20012d00083a00002003410936024820024109460d00200341d5006a20012d00093a00002003410a3602482002410a460d00200341d6006a20012d000a3a00002003410b3602482002410b460d00200341d7006a20012d000b3a00002003410c3602482002410c460d00200341d8006a20012d000c3a00002003410d3602482002410d460d00200341d9006a20012d000d3a00002003410e3602482002410e460d00200341da006a20012d000e3a00002003410f3602482002410f460d00200341db006a20012d000f3a00002003411036024820024110460d00200341dc006a20012d00103a00002003411136024820024111460d00200341dd006a20012d00113a00002003411236024820024112460d00200341de006a20012d00123a00002003411336024820024113460d00200341df006a20012d00133a00002003411436024820024114460d00200341e0006a20012d00143a00002003411536024820024115460d00200341e1006a20012d00153a00002003411636024820024116460d00200341e2006a20012d00163a00002003411736024820024117460d00200341e3006a20012d00173a00002003411836024820024118460d00200341e4006a20012d00183a00002003411936024820024119460d00200341e5006a20012d00193a00002003411a3602482002411a460d00200341e6006a20012d001a3a00002003411b3602482002411b460d00200341e7006a20012d001b3a00002003411c3602482002411c460d00200341e8006a20012d001c3a00002003411d3602482002411d460d00200341e9006a20012d001d3a00002003411e3602482002411e460d00200341ea006a20012d001e3a00002003411f3602482002411f460d00200341eb006a20012d001f3a000020034120360248200341306a41026a2205200341c8006a410d6a2d00003a0000200320032f014c3b0120200320032d004e3a00222003200341d3006a2f00003b0130200328004f2106200341d6006a2801002107200341fc006a41026a2208200341c8006a41146a2d00003a00002003200341da006a2f01003b017c200341dd006a2800002109200341f8006a41026a220a200341c8006a411b6a2d00003a00002003200341e1006a2f00003b0178200341c8006a41206a280200210b200341c8006a411c6a280200210c200320032d00223a0046200320032f01203b0144200341f4006a41026a220d20052d00003a0000200320032f01303b0174200341f0006a41026a220e20082d00003a0000200320032f017c3b0170200341ec006a41026a220f200a2d00003a0000200320032f01783b016c200341c0006a41026a220a200d2d00003a0000200320032f01743b01402003413c6a41026a220d200e2d00003a0000200320032f01703b013c200341386a41026a220e200f2d00003a0000200320032f016c3b01382002417c714120460d00200341206a41026a2202200a2d00003a00002005200d2d00003a00002008200e2d00003a0000200320032f01443b0148200320032d00463a004a200320032f01403b0120200320032f013c3b0130200320032f01383b017c2001280020210a200041066a20032d004a3a0000200020032f01483b0104200041076a2006360000200020032f01203b000b2000410d6a20022d00003a00002000200736000e200020032f01303b0012200041146a20052d00003a000020002009360015200020032f017c3b00192000411b6a20082d00003a0000200041246a200a360200200041206a200b3600002000411c6a200c360000410121020c010b4100210220034100360228200342013703202003410c3602342003200341086a3602302003200341206a36027c200341dc006a41013602002003420137024c2003419086c4003602482003200341306a360258200341fc006a41d8ddc900200341c8006a10401a2003280220200328022810d9042003280224450d00200328022010310b200020023602002004450d00200110310b20034180016a24000b8b0201067f024020002802202201450d0002402000412c6a280200450d00200041246a280200220241046a2103200120026a41016a21042002280200417f7341808182847871210103400240024020010d000340200320044f0d04200241c07e6a210220032802002101200341046a220521032001418081828478712201418081828478460d000b2001418081828478732206417f6a2006712101200521030c010b2002450d02200121062001417f6a20017121010b200241002006684103766b41306c6a220541746a280200450d00200541706a28020010310c000b0b200041246a280200200028022041016aad42307ea76b10310b0240200041346a280200450d00200028023010310b0b86aa0105087f017e097f027e037f23004190036b2205240002404108102f2206450d002006200120024181026c6a2207360204200620013602004108102f2208450d002008200320044181026c6a22093602042008200336020002400240024002400240024002402000450d00200541a0026a210a0c010b200541a0026a41186a220b4200370300200541a0026a41106a22044200370300200541a0026a41086a22024200370300200542003703a002200541a8016a41b4eac400410f10a7022002200541a8016a41086a220c290000370300200520052900a8013703a002200541a8016a41c3eac400410710a702200b200c290000370300200420052900a801370300200541a0026a210a200541a0026a4120108f03450d010b200541a8016a200610d9070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a28020036020020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a290200370300200520052903a8013703a002200520052902a40237038001200541a0026a200610da07417f20052802a002220441016a220220022004491bad42287e220d422088a70d06200da72204417f4c0d062004102f220e450d07200e200529038001370300200e4201370320200e41186a20054180016a41186a220f290300370300200e41106a20054180016a41106a2210290300370300200e41086a20054180016a41086a2211290300370300200541a8016a200610d907200441286e2112024020052802a8010d0041012102200610310c020b200541a0026a410472210c4128210b410221134101210202400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a2214200541a8016a41186a290300370300200541a0026a41106a2215200541a8016a41106a290300370300200541a0026a41086a2216200541a8016a41086a290300370300200520052903a8013703a0022011200c41086a2902003703002010200c41106a290200370300200f200c41186a2902003703002005200c290200370380012014200f290300370300201520102903003703002016201129030037030020052005290380013703a002024020022012470d00200541a8016a200610da072002417f20052802a801220441016a221220122004491b6a22042002490d0920132004201320044b1b22044104200441044b1bad42287e220d422088a7454103742104200da721120240024020020d00200541003602a8010c010b200541083602b0012005200b3602ac012005200e3602a8010b200541d0026a20122004200541a8016a104e20052802d802210420052802d0024101460d0220052802d402210e200441286e21120b200e200b6a220420052903a002370300200441186a2014290300370300200441106a2015290300370300200441086a2016290300370300200441206a4201370300200541a8016a200610d907200b41286a210b201341026a2113200241016a210220052802a8010d000b200610310c020b2004450d060c070b200610314108210e41002102410021120b200541b8026a220c4200370300200541b0026a22044200370300200541a0026a41086a4200370300200542003703a002200541a8016a41b4eac400410f10a702200a41086a200541a8016a41086a220b290000370000200a20052900a801370000200541a8016a41c3eac400410710a702200c200b290000370300200420052900a801370300200541a8016a200a412010bf0220052802a8014101460d01200520023602a802200520123602a4022005200e3602a00220054180016a200541a0026a41004100200510db070c020b200b42003703002004420037030020024200370300200542003703a002200541a8016a41b4eac400410f10a7022002200c290000370300200520052900a8013703a002200541a8016a41e8a5c500410c10a702200441086a200c290000370000200420052900a801370000200541f0006a200541a0026a10ab032005290378210d20052802702104200541d0016a41186a220c4200370300200541d0016a41106a220b4200370300200541d0016a41086a22134200370300200542003703d001200541a0026a41d7b2c800410710a70220132002290000370300200520052900a0023703d001200541f0016a41b0ffc100410c10a702200c200541f0016a41086a290000370300200b20052900f001370300200541e8006a200541d0016a412010c002200528026c21022005280268210c200541a0026a200d420020041b10ba0720052802a802210b20052802a0022104200520024100200c1b3602a8012004200b200541a8016a4104109f02024020052802a402450d00200410310b20081031200610310c020b200a412010bd0220052902ac01210d200520023602a802200520123602a4022005200e3602a00220054180016a200541a0026a200da74101200d422088a710db070b20052d008001210b200541a0026a41186a22134200370300200541a0026a41106a22144200370300200541a0026a41086a220c4200370300200542003703a002200541a8016a41b4eac400410f10a702200a41086a2215200541a8016a41086a2202290000370000200a20052900a801370000200541a8016a41e8a5c500410c10a702200441086a22162002290000370000200420052900a801370000200541d8006a200a10ab032005290360420020052802581b210d0240200b4107470d002013420037030020144200370300200c4200370300200542003703a002200541a8016a41b4eac400410f10a70220152002290000370000200a20052900a801370000200541a8016a41e8a5c500410c10a70220162002290000370000200420052900a8013700002005200d42017c220d3703a801200a4120200541a8016a4108109f020b200541d0016a41186a22044200370300200541d0016a41106a22024200370300200541d0016a41086a220b4200370300200542003703d001200541a0026a41d7b2c800410710a702200b200c290000370300200520052900a0023703d001200541f0016a41b0ffc100410c10a7022004200541f0016a41086a290000370300200220052900f001370300200541d0006a200541d0016a412010c002200528025421022005280250210c200541a0026a200d10ba0720052802a802210b20052802a0022104200520024100200c1b3602a8012004200b200541a8016a4104109f02024020052802a402450d00200410310b200810310b4108102f2211450d0120112007360204201120013602004108102f2208450d012008200936020420082003360200200541a8016a201110dc070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a28020036020020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a290200370300200520052903a8013703a002200520052902a40237038001200541a0026a201110da07417f20052802a002220441016a220220022004491bad42287e220d422088a70d02200da72204417f4c0d022004102f2210450d03201020052903800137030020104201370320201041186a20054180016a41186a220e290300370300201041106a20054180016a41106a2206290300370300201041086a20054180016a41086a220f290300370300200541a8016a201110dc07200441286e2102024020052802a8010d004101210b201110310c020b200541a0026a410472210441c80021134101210b02400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a2214200541a8016a41186a290300370300200541a0026a41106a2215200541a8016a41106a290300370300200541a0026a41086a2216200541a8016a41086a290300370300200520052903a8013703a002200f200441086a2902003703002006200441106a290200370300200e200441186a29020037030020052004290200370380012014200e290300370300201520062903003703002016200f29030037030020052005290380013703a0020240200b2002470d00200541a8016a201110da072002417f20052802a801220c41016a22122012200c491b6a220c2002490d0520024101742212200c2012200c4b1b220c4104200c41044b1bad42287e220d422088a745410374210c200da721120240024020020d00200541003602a8010c010b200541083602b001200520103602a8012005200241286c3602ac010b200541d0026a2012200c200541a8016a104e20052802d802210220052802d0024101460d0220052802d4022110200241286e21020b201020136a221241606a220c20052903a0023703002016290300210d201529030021172014290300211820124201370300200c41186a2018370300200c41106a2017370300200c41086a200d370300200541a8016a201110dc07201341286a2113200b41016a210b20052802a8010d000b201110310c020b20020d030c020b20111031410821104100210b410021020b200541a8016a200810dc070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a28020036020020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a290200370300200520052903a8013703a002200520052902a40237038001200541a0026a200810da07417f20052802a002220441016a220c200c2004491bad42287e220d422088a70d02200da72204417f4c0d022004102f220f450d03200f200529038001370300200f4201370320200f41186a20054180016a41186a2211290300370300200f41106a20054180016a41106a2212290300370300200f41086a20054180016a41086a220a290300370300200541a8016a200810dc07200441286e2114024020052802a8010d0041012115200810310c020b200541a0026a410472210441c80021134101211502400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a2216200541a8016a41186a290300370300200541a0026a41106a220e200541a8016a41106a290300370300200541a0026a41086a2206200541a8016a41086a290300370300200520052903a8013703a002200a200441086a2902003703002012200441106a2902003703002011200441186a290200370300200520042902003703800120162011290300370300200e20122903003703002006200a29030037030020052005290380013703a002024020152014470d00200541a8016a200810da072014417f20052802a801220c41016a22192019200c491b6a220c2014490d0520144101742219200c2019200c4b1b220c4104200c41044b1bad42287e220d422088a745410374210c200da721190240024020140d00200541003602a8010c010b200541083602b0012005200f3602a8012005201441286c3602ac010b200541d0026a2019200c200541a8016a104e20052802d802210c20052802d0024101460d0220052802d402210f200c41286e21140b200f20136a221941606a220c20052903a0023703002006290300210d200e29030021172016290300211820194201370300200c41186a2018370300200c41106a2017370300200c41086a200d370300200541a8016a200810dc07201341286a2113201541016a211520052802a8010d000b200810310c020b200c0d030c020b200810314108210f41002115410021140b200541e8026a22134200370300200541e0026a220e4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a220c290000370300200520052900d0013703d002200541d0016a41a090c500410a10a7022013200c290200370300200e20052902d001370300200541c0006a200541d0026a10ab0302402005290348420020052802401b221742017c220d2017540d0020134200370300200e420037030020044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200c290000370300200520052900d0013703d002200541d0016a41a090c500410a10a702200e41086a2216200c290200370000200e20052902d0013700002005200d3703a002200541d0026a4120200541a0026a4108109f0220134200370300200e420037030020044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200c290000370300200520052900d0013703d002200541d0016a41f4aec800410b10a7022016200c290200370000200e20052902d001370000200b41286c4104722204417f4c0d012004102f220c450d02200541003602a802200520043602a4022005200c3602a002200541a0026a200b10cb010240200b41286c2204450d00201020046a210c201021040340200541a0026a20044120107e2005200441206a2903003703a801200541a0026a200541a8016a4108107e200441286a2204200c470d000b0b200541d0026a412020052802a002220420052802a802109f02024020052802a402450d00200410310b02402002450d00200241286c450d00201010310b0240200d42017c2217200d540d0020054180016a41186a2204420037030020054180016a41106a2206420037030020054180016a41086a220242003703002005420037038001200541d0016a41f9c6c000410410a7022002200541d0016a41086a220c290000370300200520052900d00137038001200541d0016a41f890c500410e10a7022004200c290200370300200620052902d001370300200541a0026a20054180016a10c70520052d00a0022104200541d0026a41186a2202200541b9026a290000370300200541d0026a41106a220c200541b1026a290000370300200541d0026a41086a220b200541a9026a290000370300200520052900a1023703d0020240024020044101460d0020054180026a41186a420037030020054180026a41106a420037030020054180026a41086a420037030020054200370380020c010b20054180026a41186a200229030037030020054180026a41106a200c29030037030020054180026a41086a200b290300370300200520052903d002370380020b200541d0026a41186a220c4200370300200541d0026a41106a220b4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a2202290000370300200520052900d0013703d002200541d0016a41b290c500410c10a702200e41086a22132002290200370000200e20052902d001370000200541386a200541d0026a412010c002200528023c211620052802382110200c4200370300200b420037030020044200370300200542003703d002200541d0016a41f9c6c000410410a70220042002290000370300200520052900d0013703d002200541d0016a41b290c500410c10a70220132002290200370000200e20052902d001370000200541003602a002200541d0026a4120200541a0026a4104109f02200541a0026a41186a20054180026a41186a290300370300200541a0026a41106a20054180026a41106a290300370300200541a0026a41086a20054180026a41086a29030037030020052005290380023703a002417f2016410020101b221041016a220420042010491b410d744128722204417f4c0d022004102f220c450d0341002102200541003602f802200520043602f4022005200c3602f002200541f0026a200541a0026a4120107e2005201737038001200541f0026a20054180016a4108107e41002104034020022010200220104b1b211602400240034002402004450d00200c200b470d02201341ffffff3f71450d00200410310b024020162002460d00200541f0016a200210bf07200541d0026a20052802f001220c20052802f801220b10aa060240024020052802d00222040d004200210d410121040c010b200c200b10bd0220052902d402210d0b024020052802f401450d00200c10310b200241016a21022004200d422088a74105746a210b200da721132004210c0c010b0b200541a8016a20052802f002220420052802f802109a01024020052802f402450d00200410310b200541e8026a4200370300200541e0026a4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a2202290000370300200520052900d0013703d002200541d0016a41f890c500410e10a702200e41086a2002290200370000200e20052902d0013700004120102f2204450d06200542203702a402200520043602a002200541a0026a200541a8016a4120107e200541d0026a412020052802a002220420052802a802109f02024020052802a402450d00200410310b20054180016a41186a20054180026a41186a29030037030020054180016a41106a20054180026a41106a29030037030020054180016a41086a20054180026a41086a290300370300200520052903800237038001200541d0026a41186a4200370300200541d0026a41106a4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a2202290000370300200520052900d0013703d002200541d0016a419e91c500410a10a702200e41086a2002290200370000200e20052902d0013700004120102f2204450d06200542203702a402200520043602a002200541a0026a20054180016a4120107e200541d0026a412020052802a002220420052802a802109f02024020052802a402450d00200410310b200541e8026a4200370300200541e0026a4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a2202290000370300200520052900d0013703d002200541d0016a41f4afc800410f10a702200e41086a2002290200370000200e20052902d001370000201541286c4104722204417f4c0d052004102f2202450d06200541003602a802200520043602a402200520023602a002200541a0026a201510cb010240201541286c2204450d00200f20046a2102200f21040340200541a0026a20044120107e2005200441206a2903003703a801200541a0026a200541a8016a4108107e200441286a22042002470d000b0b200541d0026a412020052802a002220420052802a802109f02024020052802a402450d00200410310b20054180016a41186a220c420037030020054180016a41106a220b420037030020054180016a41086a220442003703002005420037038001200541a0026a41f9c6c000410410a7022004200541a0026a41086a2202290000370300200520052900a00237038001200541f0016a41e390c500410a10a702200641086a2213200541f0016a41086a2216290000370000200620052900f001370000200541a0026a20054180016a412010bf022002280200211020052802a0022111200541d0026a41186a4200370300200541d0026a41106a4200370300200541d0026a41086a22124200370300200542003703d002200541d0016a41f3c6c000410610a7022012200541d0016a41086a220a290000370300200520052900d0013703d002200541d0016a41ec90c900410610a702200e41086a200a290200370000200e20052902d001370000200541306a200541d0026a412010c002200528023421122005280230210a200c4200370300200b4200370300200442003703002005420037038001200541a0026a41f9c6c000410410a70220042002290000370300200520052900a00237038001200541f0016a41e390c500410a10a70220132016290000370000200620052900f0013700004108102f2204450d06200542083702a402200520043602a00220052010410020114101461b3602a801200541a0026a200541a8016a4104107e200520124100200a1b3602a801200541a0026a200541a8016a4104107e20054180016a412020052802a002220420052802a802109f02024020052802a402450d00200410310b20054180016a41186a2202420037030020054180016a41106a220c420037030020054180016a41086a220442003703002005420037038001200541d0016a41f9c6c000410410a7022004200541d0016a41086a220b290000370300200520052900d00137038001200541d0016a41f890c500410e10a702200641086a200b290200370000200620052902d001370000200541a0026a20054180016a10c70520052d00a002210b200541d0026a41186a2213200541b9026a290000370300200541d0026a41106a2216200541b1026a290000370300200541d0026a41086a2206200541a9026a290000370300200520052900a1023703d00202400240200b4101460d0020024200370300200c42003703002004420037030020054200370380010c010b20022013290300370300200c201629030037030020042006290300370300200520052903d002370380010b200541a0026a410c6a2015360200200541a0026a41086a2014360200200541a0026a41106a200529038001370300200541a0026a41186a20054180016a41086a290300370300200541c0026a20054180016a41106a290300370300200541a0026a41286a20054180016a41186a2903003703002005200f3602a402200541003602a002200541a8016a200541a0026a108b05200541db026a200541a8016a41086a280200360000200520052903a8013700d302200541a8016a410c6a200541d7026a290000370000200541c28289aa043600a901200541023a00a801200520052900d0023700ad01200541a8016a10d80202402014450d00201441286c450d00200f10310b200541d0026a41186a4200370300200541d0026a41106a4200370300200541d0026a41086a22044200370300200542003703d002200541d0016a41f9c6c000410410a7022004200541d0016a41086a2202290000370300200520052900d0013703d002200541d0016a41c990c500410f10a702200e41086a2002290200370000200e20052902d001370000200541a0026a200541d0026a10a306024020052d00b00222044103460d0020052903a002210d20052903a8022117200541e8026a4200370300200541e0026a4200370300200541d0026a41086a22024200370300200542003703d002200541d0016a41f9c6c000410410a7022002200541d0016a41086a220c290000370300200520052900d0013703d002200541d0016a41ed90c500410b10a702200e41086a200c290200370000200e20052902d001370000200541d0026a200d2017200410ac060b200541d0026a41186a4200370300200541e0026a4200370300200541d0026a41086a22024200370300200542003703d002200541d0016a41f9c6c000410410a7022002200541d0016a41086a2204290000370300200520052900d0013703d002200541d0016a418691c500411810a702200e41086a2004290200370000200e20052902d00137000020054120360284032005200541d0026a36028003200541d0016a200541d0026a412010d2020240024020052802d00122020d00410321040c010b20052802d401210c200520042802003602f402200520023602f002200541a0026a200541f0026a10b4030240024020052d00b00222044103470d00200541003602b001200542013703a8012005410c3602f401200520054180036a3602f0012005200541a8016a36028c03200541b4026a4101360200200542013702a4022005419086c4003602a0022005200541f0016a3602b0022005418c036a41d8ddc900200541a0026a10401a20052802a80120052802b00110d904024020052802ac01450d0020052802a80110310b0c010b200520052800b1023602a8012005200541b4026a2800003600ab0120052903a802210d20052903a00221170b0240200c450d00200210310b024020044103470d00410321040c010b200541d0026a412010bd020b200541d0026a41036a211a200520052800ab013600f301200520052802a8013602f001024020044103460d00200541d0026a41186a4200370300200541d0026a41106a4200370300200541d0026a41086a22024200370300200542003703d002200541d0016a41f9c6c000410410a7022002200541d0016a41086a220c290000370300200520052900d0013703d002200541d0016a41c990c500410f10a702200e41086a200c290200370000200e20052902d001370000200541d0026a2017200d200410ac06200541a0026a41186a20043a0000200541a0026a41106a200d370300200541a0026a41086a2017370300200541bc026a20052800f301360000200520052802f0013600b902200541023602a002200541a8016a200541a0026a108b05201a41086a200541a8016a41086a280200360000201a20052903a801370000200541b4016a200541d7026a290000370000200541c28289aa043600a901200541023a00a801200520052900d0023700ad01200541a8016a10d8020b4108102f2215450d0620152007360204201520013602004108102f2212450d062012200936020420122003360200200541d0016a41186a22024200370300200541d0016a41106a221b4200370300200541d0016a41086a220c4200370300200542003703d001200541a0026a41f3c6c000410610a702200c200541a0026a41086a2204290000370300200520052900a0023703d001200541f0016a41ec90c900410610a7022002200541f0016a41086a290000370300201b20052900f001370300200541286a200541d0016a412010c002200528022c211320052802282116200541f0016a41849bc200411710a702200541206a200541f0016a411010c002200528022021062005280224210f200541a0026a41186a22024200370300200541a0026a41106a2211420037030020044200370300200542003703a002200541a8016a41caeac400410810a7022004200541a8016a41086a220c290000370300200520052900a8013703a002200541a8016a41e586c500410e10a7022002200c290000370300201120052900a8013703004100210b410121142005200f410176413220061b2013410020161b6a3602a801200541a0026a4120200541a8016a4104109f02200541a8016a201510dd070240024020052802a801450d002011200541a8016a41106a2903003703002004200c2903003703002002200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a280200360200200541d0026a41086a200541ac026a290200370300200541d0026a41106a200541b4026a290200370300200541d0026a41186a200541bc026a290200370300200520052903a8013703a002200520052902a4023703d002200541a0026a201510da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0720044105742204417f4c0d072004102f2214450d08200541d0026a41086a290300210d200541d0026a41106a290300211720052903d0022118201441186a200541d0026a41186a290300370000201441106a2017370000201441086a200d37000020142018370000200541a8016a201510dd072004410576210c024020052802a8010d004101210b201510310c020b200541a0026a4104722104412021134101210b02400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a00220054180016a41086a2202200441086a29000037030020054180016a41106a2216200441106a29000037030020054180016a41186a2206200441186a2900003703002005200429000037038001200541d0016a41186a220f2006290300370300200541d0016a41106a22062016290300370300200541d0016a41086a2216200229030037030020052005290380013703d0010240200b200c470d00200541a0026a201510da07200c417f20052802a002220241016a221020102002491b6a2202200c490d0a200c41017422102002201020024b1b22024104200241044b1b220241ffffff3f7120024621102002410574210202400240200c0d00200541003602a0020c010b200541013602a802200520143602a0022005200c4105743602a4020b200541a8016a20022010200541a0026a104e20052802b001210220052802a8014101460d0220052802ac0121142002410576210c0b201420136a220220052903d001370000200241186a200f290300370000200241106a2006290300370000200241086a2016290300370000200541a8016a201510dd07201341206a2113200b41016a210b20052802a8010d000b201510310c020b20020d080c070b201510314100210c0b200541b8026a4200370300200541b0026a4200370300200541a0026a41086a22044200370300200542003703a002200541a8016a41caeac400410810a7022004200541a8016a41086a2202290000370300200520052900a8013703a002200541a8016a41d2eac400410410a702201141086a2002290000370000201120052900a801370000200b4105744104722204417f4c0d052004102f2202450d06200541003602b001200520043602ac01200520023602a801200541a8016a200b10cb010240200b450d00200b4105742102201421040340200541a8016a20044120107e200441206a2104200241606a22020d000b0b200541a0026a412020052802a801220420052802b001109f02024020052802ac01450d00200410310b0240200c41ffffff3f71450d00201410310b201210314108102f2214450d0620142007360204201420013602004108102f2206450d062006200936020420062003360200200541d0026a41186a4200370300200541d0026a41106a4200370300200541d0026a41086a22044200370300200542003703d002200541a0026a41d7b2c800410710a7022004200541a0026a41086a2202290000370300200520052900a0023703d002200541f0016a41b0ffc100410c10a702200e41086a200541f0016a41086a290000370000200e20052900f001370000200541186a200541d0026a412010c002200528021c210a20052802182108200541a8016a201410de070240024020052802a801450d00200541a0026a41106a200541a8016a41106a2903003703002002200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a28020036020020054180016a41086a200541a0026a410c6a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a290200370300200520052903a8013703a002200520052902a40237038001200541a0026a201410da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0720044105742204417f4c0d072004102f2216450d0820054180016a41086a290300210d20054180016a41106a29030021172005290380012118201641186a20054180016a41186a290300370000201641106a2017370000201641086a200d37000020162018370000200541a8016a201410de072004410576210c024020052802a8010d0041012113201410310c020b200541a0026a41047221044120210b4101211302400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a002200541d0016a41086a2202200441086a290000370300200541d0016a41106a2215200441106a290000370300200541d0016a41186a220e200441186a290000370300200520042900003703d001200541d0026a41186a220f200e290300370300200541d0026a41106a220e2015290300370300200541d0026a41086a22152002290300370300200520052903d0013703d00202402013200c470d00200541a0026a201410da07200c417f20052802a002220241016a221020102002491b6a2202200c490d0a200c41017422102002201020024b1b22024104200241044b1b220241ffffff3f7120024621102002410574210202400240200c0d00200541003602a0020c010b200541013602a802200520163602a0022005200c4105743602a4020b200541a8016a20022010200541a0026a104e20052802b001210220052802a8014101460d0220052802ac0121162002410576210c0b2016200b6a220220052903d002370000200241186a200f290300370000200241106a200e290300370000200241086a2015290300370000200541a8016a201410de07200b41206a210b201341016a211320052802a8010d000b201410310c020b20020d080c070b20141031410121164100210c410021130b200541a8016a200610de070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a28020036020020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a290200370300200520052903a8013703a002200520052902a40237038001200541a0026a200610da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0720044105742204417f4c0d072004102f220e450d0820054180016a41086a290300210d20054180016a41106a29030021172005290380012118200e41186a20054180016a41186a290300370000200e41106a2017370000200e41086a200d370000200e2018370000200541a8016a200610de072004410576210b024020052802a8010d0041012114200610310c020b200541a0026a4104722104412021154101211402400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a002200541d0016a41086a2202200441086a290000370300200541d0016a41106a220f200441106a290000370300200541d0016a41186a2210200441186a290000370300200520042900003703d001200541d0026a41186a22112010290300370300200541d0026a41106a2210200f290300370300200541d0026a41086a220f2002290300370300200520052903d0013703d00202402014200b470d00200541a0026a200610da07200b417f20052802a002220241016a221220122002491b6a2202200b490d0a200b41017422122002201220024b1b22024104200241044b1b220241ffffff3f7120024621122002410574210202400240200b0d00200541003602a0020c010b200541013602a8022005200e3602a0022005200b4105743602a4020b200541a8016a20022012200541a0026a104e20052802b001210220052802a8014101460d0220052802ac01210e2002410576210b0b200e20156a220220052903d002370000200241186a2011290300370000200241106a2010290300370000200241086a200f290300370000200541a8016a200610de07201541206a2115201441016a211420052802a8010d000b200610310c020b20020d080c070b200610314100210b4101210e410021140b02400240200a410020081b22110d00200520133602b0012005200c3602ac01200520163602a801200520143602a8022005200b3602a4022005200e3602a0024100200541a8016a200541a0026a10df070c010b200541b8026a22104200370300200541a0026a41106a22024200370300200541a0026a41086a22064200370300200542003703a002200541d0016a41e1abc900410b10a7022006200541d0016a41086a220f290000370300200520052900d0013703a002200541d0016a41fcadc900411610a7022010200f290200370300200220052902d001370300200541a8016a200541a0026a10a70620052802a8012204410420041b21150240024020052902ac01420020041b220d422088a72204200da7460d00200d21170c010b200441016a22122004490d072004410174220a20122012200a491b22124104201241044b1bad421c7e2217422088a74541027421122017a7210a0240024020040d00200541003602a0020c010b200541a8026a4104360200200520153602a00220052004411c6c3602a4020b200541a8016a200a2012200541a0026a104e200541b0016a280200210420052802a8014101460d0320052802ac012115200d428080808070832004411c6ead842117200d422088a721040b20152004411c6c6a220420113602182004200e36020c200420133602082004200c36020420042016360200200441146a2014360200200441106a200b360200201042003703002002420037030020064200370300200542003703a002200541d0016a41e1abc900410b10a7022006200f290000370300200520052900d0013703a002200541d0016a41fcadc900411610a702200241086a200f290200370000200220052902d001370000024020150d00200541a0026a412010bd020c010b20174280808080107c220d422088a72204411c6c41046a2202417f4c0d060240024020020d004101210c0c010b2002102f220c450d080b200541003602b001200520023602ac012005200c3602a801200541a8016a200410cb0120152004200541a8016a10ca01200541a0026a412020052802a801220220052802b001109f02024020052802ac01450d00200210310b02402004450d002004411c6c21022015210403400240200441046a28020041ffffff3f71450d00200428020010310b0240200441106a28020041ffffff3f71450d002004410c6a28020010310b2004411c6a2104200241646a22020d000b0b200da72204450d002004411c6c450d00201510310b4108102f2215450d0620152007360204201520013602004108102f2210450d062010200936020420102003360200200541a8016a201510e00702400240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a280200360200200541d0026a41086a200541ac026a290200370300200541d0026a41106a200541b4026a290200370300200541d0026a41186a200541bc026a290200370300200520052903a8013703a002200520052902a4023703d002200541a0026a201510da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0820044105742204417f4c0d082004102f2214450d09200541d0026a41086a290300210d200541d0026a41106a290300211720052903d0022118201441186a200541d0026a41186a290300370000201441106a2017370000201441086a200d37000020142018370000200541a8016a201510e0072004410576210c02400240024020052802a8010d004101210b0c010b200541a0026a4104722104412021134101210b0340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a00220054180016a41086a2202200441086a29000037030020054180016a41106a2216200441106a29000037030020054180016a41186a220e200441186a2900003703002005200429000037038001200541d0016a41186a2206200e290300370300200541d0016a41106a220e2016290300370300200541d0016a41086a2216200229030037030020052005290380013703d0010240200b200c470d00200541a0026a201510da07200c417f20052802a002220241016a220f200f2002491b6a2202200c490d0c200c410174220f2002200f20024b1b22024104200241044b1b220241ffffff3f71200246210f2002410574210202400240200c0d00200541003602a0020c010b200541013602a802200520143602a0022005200c4105743602a4020b200541a8016a2002200f200541a0026a104e20052802b001210220052802a8014101460d0320052802ac0121142002410576210c0b201420136a220220052903d001370000200241186a2006290300370000200241106a200e290300370000200241086a2016290300370000200541a8016a201510e007201341206a2113200b41016a210b20052802a8010d000b0b2015103120140d02200541b8026a22044200370300200541b0026a22024200370300200541a0026a41086a4200370300200542003703a002200541a0026a419ee6c300410f10a702200541f0016a41b8e8c300411410a7022004200541f0016a41086a290000370300200220052900f001370300200541a0026a412010bd020c030b20020d090c080b20151031410121144100210b4100210c0b200541c0016a22044200370300200541b8016a22024200370300200541a8016a41086a4200370300200542003703a801200541a8016a419ee6c300410f10a702200541f0016a41b8e8c300411410a7022004200541f0016a41086a290000370300200220052900f001370300200b4105744104722204417f4c0d062004102f2202450d07200541003602a802200520043602a402200520023602a002200541a0026a200b10cb010240200b450d00200b4105742102201421040340200541a0026a20044120107e200441206a2104200241606a22020d000b0b200541a8016a412020052802a002220420052802a802109f02024020052802a402450d00200410310b200c41ffffff3f71450d00201410310b201010314108102f2214450d0620142007360204201420013602004108102f2215450d062015200936020420152003360200024002402000450d00200541a8016a201410e1070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a280200360200200541d0026a41086a200541ac026a290200370300200541d0026a41106a200541b4026a290200370300200541d0026a41186a200541bc026a290200370300200520052903a8013703a002200520052902a4023703d002200541a0026a201410da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0920044105742204417f4c0d092004102f2216450d0a200541d0026a41086a290300210d200541d0026a41106a290300211720052903d0022118201641186a200541d0026a41186a290300370000201641106a2017370000201641086a200d37000020162018370000200541a8016a201410e10720044105762104024020052802a8010d004101210b201410310c020b200541a0026a4104722102412021134101210b02400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a00220054180016a41086a220c200241086a29000037030020054180016a41106a220e200241106a29000037030020054180016a41186a2206200241186a2900003703002005200229000037038001200541d0016a41186a220f2006290300370300200541d0016a41106a2206200e290300370300200541d0016a41086a220e200c29030037030020052005290380013703d0010240200b2004470d00200541a0026a201410da072004417f20052802a002220c41016a22102010200c491b6a220c2004490d0c20044101742210200c2010200c4b1b220c4104200c41044b1b220c41ffffff3f71200c462110200c410574210c0240024020040d00200541003602a0020c010b200541013602a802200520163602a002200520044105743602a4020b200541a8016a200c2010200541a0026a104e20052802b001210420052802a8014101460d0220052802ac012116200441057621040b201620136a220c20052903d001370000200c41186a200f290300370000200c41106a2006290300370000200c41086a200e290300370000200541a8016a201410e107201341206a2113200b41016a210b20052802a8010d000b201410310c020b20040d0a0c090b2014103141002104410121164100210b0b2005200b3602b001200520163602a801200520043602ac01200541e8016a4200370300200541e0016a4200370300200541d0016a41086a22024200370300200542003703d001200541a0026a41a6c7c000411210a7022002200541a0026a41086a290000370300200520052900a0023703d001200541f0016a41d2eac400410410a702201b41086a200541f0016a41086a290000370000201b20052900f001370000200541d0016a200541a8016a10ae060240200441ffffff3f71450d00201610310b200541a8016a201510e1070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a280200360200200541d0026a41086a200541ac026a290200370300200541d0026a41106a200541b4026a290200370300200541d0026a41186a200541bc026a290200370300200520052903a8013703a002200520052902a4023703d002200541a0026a201510da07417f20052802a002220441016a220220022004491b220441ffffff3f712004470d0920044105742204417f4c0d092004102f2214450d0a200541d0026a41086a290300210d200541d0026a41106a290300211720052903d0022118201441186a200541d0026a41186a290300370000201441106a2017370000201441086a200d37000020142018370000200541a8016a201510e10720044105762104024020052802a8010d004101210b201510310c020b200541a0026a4104722102412021134101210b02400340200541a0026a41206a200541a8016a41206a280200360200200541a0026a41186a200541a8016a41186a290300370300200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200520052903a8013703a00220054180016a41086a220c200241086a29000037030020054180016a41106a2216200241106a29000037030020054180016a41186a220e200241186a2900003703002005200229000037038001200541d0016a41186a2206200e290300370300200541d0016a41106a220e2016290300370300200541d0016a41086a2216200c29030037030020052005290380013703d0010240200b2004470d00200541a0026a201510da072004417f20052802a002220c41016a220f200f200c491b6a220c2004490d0c2004410174220f200c200f200c4b1b220c4104200c41044b1b220c41ffffff3f71200c46210f200c410574210c0240024020040d00200541003602a0020c010b200541013602a802200520143602a002200520044105743602a4020b200541a8016a200c200f200541a0026a104e20052802b001210420052802a8014101460d0220052802ac012114200441057621040b201420136a220c20052903d001370000200c41186a2006290300370000200c41106a200e290300370000200c41086a2016290300370000200541a8016a201510e107201341206a2113200b41016a210b20052802a8010d000b201510310c020b20040d0a0c090b2015103141002104410121144100210b0b2005200b3602b001200520143602a801200520043602ac01200541e8016a4200370300200541e0016a4200370300200541d0016a41086a22024200370300200542003703d001200541a0026a41a6c7c000411210a7022002200541a0026a41086a290000370300200520052900a0023703d001200541f0016a41aa90c500410810a702201b41086a200541f0016a41086a290000370000201b20052900f001370000200541d0016a200541a8016a10ae06200441ffffff3f71450d01201410310c010b20151031201410310b4108102f2206450d0620062007360204200620013602004108102f220f450d06200f2009360204200f2003360200024002402000450d00200541a8016a200610e2070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a29030037030020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a29020037030020054180016a41206a200541c4026a2d00003a0000200520052903a8013703a002200520052902a40237038001200541a0026a200610da07417f20052802a002220441016a220220022004491bad42217e220d422088a70d09200da72204417f4c0d092004102f2210450d0a2010200529038001370000201041206a20054180016a41206a22112d00003a0000201041186a20054180016a41186a2212290300370000201041106a20054180016a41106a220a290300370000201041086a20054180016a41086a2208290300370000200541a8016a200610e207200441216e2101024020052802a8010d004101210c200610310c020b200541a0026a41047221044121210b410221134101210c02400340200541a0026a41206a2214200541a8016a41206a290300370300200541a0026a41186a2215200541a8016a41186a290300370300200541a0026a41106a2216200541a8016a41106a290300370300200541a0026a41086a220e200541a8016a41086a290300370300200520052903a8013703a0022008200441086a290000370300200a200441106a2900003703002012200441186a2900003703002011200441206a2d00003a00002005200429000037038001201420112d00003a0000201520122903003703002016200a290300370300200e200829030037030020052005290380013703a0020240200c2001470d00200541a8016a200610da07200c417f20052802a801220241016a221920192002491b6a2202200c490d0c20132002201320024b1b22024104200241044b1bad42217e220da72102200d422088a745211902400240200c0d00200541003602a8010c010b200541013602b0012005200b3602ac01200520103602a8010b200541d0026a20022019200541a8016a104e20052802d802210220052802d0024101460d0220052802d4022110200241216e21010b2010200b6a220220052903a002370000200241206a20142d00003a0000200241186a2015290300370000200241106a2016290300370000200241086a200e290300370000200541a8016a200610e207200b41216a210b201341026a2113200c41016a210c20052802a8010d000b200610310c020b20020d0a0c090b20061031410121104100210c410021010b200541a8016a200f10e2070240024020052802a801450d00200541a0026a41106a200541a8016a41106a290300370300200541a0026a41086a200541a8016a41086a290300370300200541a0026a41186a200541a8016a41186a290300370300200541a0026a41206a200541a8016a41206a29030037030020054180016a41086a200541ac026a29020037030020054180016a41106a200541b4026a29020037030020054180016a41186a200541bc026a29020037030020054180016a41206a200541c4026a2d00003a0000200520052903a8013703a002200520052902a40237038001200541a0026a200f10da07417f20052802a002220441016a220220022004491bad42217e220d422088a70d09200da72204417f4c0d092004102f2211450d0a2011200529038001370000201141206a20054180016a41206a22122d00003a0000201141186a20054180016a41186a220a290300370000201141106a20054180016a41106a2208290300370000201141086a20054180016a41086a2219290300370000200541a8016a200f10e207200441216e2103024020052802a8010d004101210b200f10310c020b200541a0026a410472210441212113410221144101210b02400340200541a0026a41206a2215200541a8016a41206a290300370300200541a0026a41186a2216200541a8016a41186a290300370300200541a0026a41106a220e200541a8016a41106a290300370300200541a0026a41086a2206200541a8016a41086a290300370300200520052903a8013703a0022019200441086a2900003703002008200441106a290000370300200a200441186a2900003703002012200441206a2d00003a00002005200429000037038001201520122d00003a00002016200a290300370300200e20082903003703002006201929030037030020052005290380013703a0020240200b2003470d00200541a8016a200f10da07200b417f20052802a801220241016a220320032002491b6a2202200b490d0c20142002201420024b1b22024104200241044b1bad42217e220da72102200d422088a745210302400240200b0d00200541003602a8010c010b200541013602b001200520133602ac01200520113602a8010b200541d0026a20022003200541a8016a104e20052802d802210220052802d0024101460d0220052802d4022111200241216e21030b201120136a220220052903a002370000200241206a20152d00003a0000200241186a2016290300370000200241106a200e290300370000200241086a2006290300370000200541a8016a200f10e207201341216a2113201441026a2114200b41016a210b20052802a8010d000b200f10310c020b20020d0a0c090b200f1031410121114100210b410021030b200520013602840220052010360280022005200c360288022005200b3602880120052003360284012005201136028001200541e8016a4200370300200541e0016a4200370300200541d0016a41086a22044200370300200542003703d001200541a0026a41a0aac800410510a7022004200541a0026a41086a290000370300200520052900a0023703d001200541f0016a41f4aec800410b10a702201b41086a200541f0016a41086a290000370000201b20052900f001370000200541a0026a200541d0016a10970620052802a0022204410120041b2114410021130240200c20052902a402420020041b220d422088a7470d00200c41216c41216e2204200c200c20044b1b41016a210c201021042014210203400240200c417f6a220c0d00410121130c020b20042002412110c209210b200441216a2104200241216a2102200b450d000b0b0240200da72204450d00200441216c450d00201410310b200541d0016a41186a220c4200370300200541d0016a41106a220b4200370300200541d0016a41086a22044200370300200542003703d001200541a0026a41a0aac800410510a7022004200541a0026a41086a2202290000370300200520052900a0023703d001024020130d00200541f0016a41f4aec800410b10a702201b41086a2213200541f0016a41086a2214290000370000201b20052900f001370000200541d0016a20054180026a10af06200c4200370300200b420037030020044200370300200542003703d001200541a0026a41a0aac800410510a70220042002290000370300200520052900a0023703d001200541f0016a41acafc800410e10a70220132014290000370000201b20052900f001370000200541086a200541d0016a10ab03200528020821152005290310210d200c4200370300200b420037030020044200370300200542003703d001200541a0026a41a0aac800410510a70220042002290000370300200520052900a0023703d001200541f0016a41acafc800410e10a70220132014290000370000201b20052900f0013700002005200d42017c420120151b220d3703a002200541d0016a4120200541a0026a4108109f022002200d370300200541a0026a41106a200529038002370300200541a0026a41186a20054180026a41086a280200360200200541003a00a002200541a8016a200541a0026a109b06201a41086a200541a8016a41086a280200360000201a20052903a8013700000240200541b4026a22042802002202450d00200241216c450d0020052802b00210310b200420052902d001370200200541ac026a200541d7026a290000370000200541bc026a200541d0016a41086a2204290200370200200541c28a95b2043600a102200541023a00a002200520052900d0023700a502200541a0026a10d802200541e8016a4200370300200541e0016a420037030020044200370300200542003703d001200541a0026a41a0aac800410510a7022004200541a0026a41086a290000370300200520052900a0023703d001200541f0016a41f4afc800410f10a702201b41086a200541f0016a41086a290000370000201b20052900f001370000200541d0016a20054180016a10af062003450d02200341216c450d02201110310c020b200541f0016a41f4afc800410f10a702201b41086a200541f0016a41086a290000370000201b20052900f001370000200541d0016a20054180016a10af0602402003450d00200341216c450d00201110310b2001450d01200141216c450d01201010310c010b200f1031200610310b20054190036a24000f0b20054180016a41186a200c41186a221629000037030020054180016a41106a200c41106a221129000037030020054180016a41086a200c41086a22122900003703002005200c290000370380012012290000210d20112900002117200c2900002118200541d0016a41186a22112016290000370300200541d0016a41106a22162017370300200541d0016a41086a2212200d370300200520183703d001200541d0026a41186a2011290300370300200541d0026a41106a2016290300370300200541d0026a41086a2012290300370300200520052903d0013703d002200541f0026a200541d0026a4120107e200c41206a210c0c010b0b20040d030c020b419c89c30041c90041f889c3001068000b419c89c30041c90041e889c3001068000b103b000b1039000b130020004102360204200041c0f1c1003602000b3400200041d7b2c80036020420004100360200200041146a4107360200200041106a419cfac100360200200041086a42073702000b4a01027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241003a000f20002002410f6a4101107e200041044100107e200241106a24000b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141014100200010c7010b4201027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002410036020c20002002410c6a4104107e200241106a24000b3400200041e8f0c10036020420004100360200200041146a4104360200200041106a41f085c200360200200041086a42083702000b2901017f230041106b2202240020024100360208200242013703002000200210e804200241106a24000b970201047f230041106b22022400024002402001280208220341046a2204417f4c0d002001280200210102400240024002400240024020040d002000410036020820002004360204200041013602000c010b2004102f2205450d06200041003602082000200436020420002005360200200341c000490d01200341808001490d022003418080808004490d030b200241033a00032000200241036a4101107e200220033602042000200241046a4104107e0c030b200220034102743a000d20002002410d6a4101107e0c020b200220034102744101723b010e20002002410e6a4102107e0c010b200220034102744102723602082000200241086a4104107e0b200020012003107e200241106a24000f0b103b000b1039000b02000b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141044100200010cc010b8f0f03017f017e077f230041e0036b220224002002200136020402400240024002400240024002400240024002400240200129030022034201560d0002402003a70e020002000b200042013703000c090b200241086a20031051200228020c21042002280208210120022802102105200241053602b0022002200120054103746a36029c022002200136029802200220043602940220022001360290022002200241b0026a3602a4022002200241046a3602a002200241086a20024190026a10ec040240024020022d00084102460d00418001102f2205450d0b2005200241086a41800110bf091a20024190016a41106a20024190026a41106a29030037030020024190016a41086a20024190026a41086a290300370300200220022903900237039001200241c0026a20024190016a10ec0402400240024020022d00c0024102470d0041012101410121060c010b418001210441012101410121060340200241086a200241c0026a41800110bf091a024020062001470d00200141016a22072001490d08200141017422082007200820074b1b22074104200741044b1b220741ffffff0f712007464103742108200741077421070240024020010d00200241003602d0030c010b200241083602d803200220053602d003200220014107743602d4030b200241c0036a20072008200241d0036a104e20022802c803210120022802c0034101460d0320022802c4032105200141077621010b200520046a200241086a41800110bf091a20044180016a2104200641016a2106200241c0026a20024190016a10ec0420022d00c0024102470d000b0b20022802940141ffffffff0171450d0220022802900110310c020b2001450d040c0b0b4100210141082105024020022802940241ffffffff0171450d0020022802900210310b410021060b20022802b00222044105460d01200241bc026a280200210720022902b40221030240200141ffffff0f71450d00200510310b2000200436020420004101360200200041106a2007360200200041086a20033702000c080b200241086a200141086a420010ed04200241086a41086a2d00002101200228020c210520022802082104200241c0026a200241116a41ff0010bf091a024020044101460d0020024190016a200241c0026a41ff0010bf091a0240200141ff01714102470d0020004101360204200041086a2002290208370200200041106a200241086a41086a280200360200200041013602000c090b200041086a20013a0000200041096a20024190016a41ff0010bf091a200041003602000c080b20002005360204200020022900c00237000920004101360200200041086a20013a0000200041106a200241c7026a2800003600000c070b410221042001ad210320064102490d032006417e6a2104200641077441807e6a21072006410174417c6a2106200241086a4101722109200241c0026a410172210a02400340200520076a22014180016a2d00002108200241086a20014181016a41ff0010bf091a20084102460d03200220083a00c002200a200241086a41ff0010bf091a20012d0000210820024190016a200141016a41ff0010bf091a20084102460d04200220083a0008200920024190016a41ff0010bf091a20024190016a200241c0026a10ee044120102f2201450d09200241203602b402200220013602b0022001200229039001370000200141086a20024190016a41086a290300370000200141106a20024190016a41106a290300370000200141186a20024190016a41186a290300370000200241203602b80220024190016a200241086a10ee04200241b0026a20024190016a4120107e20024190026a20022802b002220120022802b80210d703024020022802b402450d00200110310b024020042003a7470d00200441016a22012004490d0320062001200620014b1b22014104200141044b1b220141ffffff0f712001464103742108200141077421010240024020040d0020024100360290010c010b2002410836029801200220073602940120022005360290010b200241b0026a2001200820024190016a104e20022802b802210120022802b0024101460d0220022802b40221052001410776ad21030b200520076a220141013a0000200141016a200229009002370000200141096a20024190026a41086a290000370000200141116a20024190026a41106a290000370000200141196a20024190026a41186a290000370000200141216a20024190016a41df0010bf091a200741807f6a21072006417e6a2106200342ffffffff0f832103200441016a21012004417f6a2104200141014b0d000b200241086a21010c050b20010d070b103b000b41e98fc200410341ec8fc2001068000b41e98fc200410341fc8fc2001068000b024020060d00200241086a21010c020b200241086a21010b20052d000021042001200541016a41ff0010bf091a0b200241c0026a200141ff0010bf091a0240200342ffffff0f83500d00200510310b02400240200441ff01714102470d004101210120004101360204200041086a2002290208370200200041106a200241086a41086a2802003602000c010b200041086a20043a0000200041096a200241c0026a41ff0010bf091a410021010b200020013602000b200241e0036a24000f0b1039000bfb0301047f230041a0066b220224000240024020012802082203200128020c460d002001280214210420024191046a2105024003402001200341086a36020820024188046a200128021028020041086a200329030010ed040240024002402002280288044101470d0020022005290000370388032002200541076a28000036008f0320022d0090042101200228028c04210520024189026a20024188036a41ff0010bf091a0c010b20022d009004210320024196056a200541ff0010bf091a20034102470d0120022002290095063703880320022002419c066a28000036008f0320024189026a20024188036a41ff0010bf091a41012105410221010b200220022900890237038804200220024190026a28000036008f0441022103024020042802004102470d00200441086a280200450d00200428020410310b200420013a00042004200536020020042002290388043700052004410c6a200228008f043600000c020b20024188036a20024196056a41ff0010bf091a2002418a016a20024188036a41ff0010bf091a20034103470d0120012802082203200128020c470d000c020b0b2002410b6a2002418a016a41ff0010bf091a20024188046a2002410b6a41ff0010bf091a20034102460d00200020033a0000200041016a20024188046a41ff0010bf091a0c010b200041023a00000b200241a0066a24000bd60c03047f017e017f230041a0026b22032400200128020841186c2104200128020021050240024003402004450d01200520046a2101200441686a22062104200141686a29030022072002560d000b2007200520066a220141106a2802002204ad7c2002580d00024002402004200220077da722064b0d00410221050c010b4101210502400240200141086a28020020064107746a22042d00004101470d0020032004280001360298022003200441046a28000036009b022003200441146a2900003703d0012003200441196a2900003700d501200441106a2800002101200441086a29000021020c010b200341b0016a41086a200441e4006a290000370300200341b0016a41106a200441ec006a290000370300200341b0016a41186a200441f4006a290000370300200341d0016a41086a2004411c6a290000370300200341d0016a41106a200441246a290000370300200341d0016a41186a2004412c6a2900003703002003200441dc006a2900003703b0012003200441146a2900003703d001200441086a2903002102200441106a2802002101200341d0006a41246a200441d8006a280200360200200341d0006a411c6a200441d0006a290200370200200341d0006a41146a200441c8006a290200370200200341dc006a200441c0006a290200370200200341f0016a41206a200341d0006a41206a290200370300200341f0016a41186a200341d0006a41186a290200370300200341f0016a41106a200341d0006a41106a2902003703002003200441386a290200370254200341f0016a41086a200341d0006a41086a290200370300200320032902503703f001410021050b200341286a41086a200341d0016a41086a290300370300200341286a41106a200341d0016a41106a290300370300200341286a41186a200341d0016a41186a290300370300200341d0006a41086a200341f0016a41086a290300370300200341d0006a41106a200341f0016a41106a290300370300200341d0006a41186a200341f0016a41186a290300370300200341d0006a41206a200341f0016a41206a2903003703002003200328009b0236004b2003200328029802360248200320032903d001370328200320032903f001370350200341086a41186a200341b0016a41186a290300370300200341086a41106a200341b0016a41106a290300370300200341086a41086a200341b0016a41086a290300370300200320032903b0013703080b20002003280248360009200041086a20053a00002000410c6a200328004b360000200041186a2001360200200041106a20023703002000411c6a20032903283702002000413c6a2003290350370200200041246a200341286a41086a2903003702002000412c6a200341286a41106a290300370200200041346a200341286a41186a290300370200200041c4006a200341d0006a41086a290300370200200041cc006a200341d0006a41106a290300370200200041d4006a200341d0006a41186a290300370200200041dc006a200341f0006a29030037020020004100360200200041fc006a200341086a41186a290300370200200041f4006a200341086a41106a290300370200200041ec006a200341086a41086a290300370200200041e4006a20032903083702000c010b200341286a2002109305200341d0006a20032802282201200328023010da02200341d0016a41086a2205200341d9006a290000370300200341d0016a41106a2206200341e1006a290000370300200341d0016a41186a2208200341e9006a290000370300200320032900513703d00141002104024020032d00504101470d00200341f0016a41186a2008290300370300200341f0016a41106a2006290300370300200341f0016a41086a2005290300370300200320032903d0013703f001410121040b0240200328022c450d00200110310b4102210102402004450d00200341b0016a41186a200341f0016a41186a290300370300200341b0016a41106a200341f0016a41106a290300370300200341b0016a41086a200341f0016a41086a290300370300200320032903f0013703b001410121010b200020032903b001370009200041086a20013a0000200041116a200341b0016a41086a290300370000200041196a200341c0016a290300370000200041216a200341c8016a290300370000200041296a200341d0006a41df0010bf091a200041003602000b200341a0026a24000bd20201027f230041206b2202240002400240024020012d00004101470d0020002001290001370000200041186a200141196a290000370000200041106a200141116a290000370000200041086a200141096a2900003700000c010b2002410036020820024201370300200141386a200210d7044120102f2203450d012002422037021420022003360210200241106a200141dc006a4120107e2002200228021022032002280218107e02402002280214450d00200310310b200220012903083703102002200241106a4108107e2002200141106a2802003602102002200241106a4104107e4120102f2203450d012002422037021420022003360210200241106a200141146a4120107e2002200228021022012002280218107e02402002280214450d00200110310b200020022802002201200228020810d7032002280204450d00200110310b200241206a24000f0b1039000b3400200041c491c20036020420004100360200200041146a4102360200200041106a41dc91c200360200200041086a42033702000b2901017f230041106b2202240020024100360208200242043703002000200210f104200241106a24000bac0101047f230041106b2202240002400240200128020822034104744104722204417f4c0d00200128020021012004102f2205450d012000410036020820002004360204200020053602002000200310cb0102402003450d00200120034104746a210303402002200128020036020c20002002410c6a4104107e200141046a2802002001410c6a280200200010ce01200141106a22012003470d000b0b200241106a24000f0b103b000b1039000bb00201047f230041106b22022400024002402001280208220341046a2204417f4c0d002001280200210102400240024002400240024020040d0020024100360208200242013703000c010b2004102f2205450d06200241003602082002200436020420022005360200200341c000490d01200341808001490d022003418080808004490d030b200241033a000c20022002410c6a4101107e2002200336020c20022002410c6a4104107e0c030b200220034102743a000c20022002410c6a4101107e0c020b200220034102744101723b010c20022002410c6a4102107e0c010b2002200341027441027236020c20022002410c6a4104107e0b200220012003107e2000200228020022032002280208109a0102402002280204450d00200310310b200241106a24000f0b103b000b1039000bef0101027f230041206b2202240002404104102f2203450d0020024204370204200220033602004120102f2203450d002002422037021420022003360210200241106a200141046a4120107e2002200228021022032002280218107e02402002280214450d00200310310b200220012802003602102002200241106a4104107e4120102f2203450d002002422037021420022003360210200241106a200141246a4120107e2002200228021022012002280218107e02402002280214450d00200110310b2000200228020022012002280208109a0102402002280204450d00200110310b200241206a24000f0b1039000b860201037f230041d0006b22022400200241086a41c491c200410310a702200241186a41c791c200411510a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b950705057f017e027f017e027f230041e0006b220324002003200236021420032001360210200341186a2001200210d2020240024002400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb010240024020032802080d0041042106024002400240200328020c2207200328022c4104762201200120074b1b22014104742202417f4c0d0002402001450d002002102f2206450d070b2001ad2108024002402007450d000340200328022c22014104490d0520032802282202280000210920032001417c6a36022c2003200241046a3602282003200341286a10bb0120032802000d05200328022c220220032802042201490d052001417f4c0d030240024020010d004101210a0c010b20011035220a450d0a200328022c21020b20022001490d04200a2003280228200110bf09210a200328022c22022001490d0a2003200220016b36022c2003200328022820016a36022802402008422088220ba722022008a7470d00200241016a220c2002490d042002410174220d200c200c200d491b220c4104200c41044b1b220c41ffffffff0071200c46410274210d200c410474210c0240024020020d00200341003602480c010b20034104360250200320063602482003200b4204863e024c0b200341386a200c200d200341c8006a104e2003280240210c20032802384101460d03200328023c2106200842808080807083200c410476ad8421080b200620024104746a2202200a36020420022009360200200241086a2001ad220b422086200b8437020020084280808080107c21082007417f6a22070d000b0b2006450d0420002008370204200020063602000c050b200c0d060b103b000b200a10310b02402008422088a72201450d0020014104742102200641086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200241706a22020d000b0b200842ffffffff0083500d00200610310b20034100360240200342013703382003410c3602342003200341106a3602302003200341386a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341306a360258200341c4006a41d8ddc900200341c8006a10401a2003280238200328024010d9040240200328023c450d00200328023810310b200041003602000b2005450d00200410310b200341e0006a24000f0b1039000b20012002419cb4c0001061000bce0101047f230041106b2203240002400240200228020822044104744104722205417f4c0d00200228020021022005102f2206450d012003410036020820032005360204200320063602002003200410cb0102402004450d00200220044104746a210403402003200228020036020c20032003410c6a4104107e200241046a2802002002410c6a280200200310ce01200241106a22022004470d000b0b20002001200328020022022003280208109f0202402003280204450d00200210310b200341106a24000f0b103b000b1039000bec0101017f230041306b2202240002400240200028020022002802004101470d00200220002802043602002002200041086a280200360204200241146a41013602002002410136020c2001411c6a28020021002002200241046a36021020022002360208200128021821012002412c6a41023602002002420237021c200241fcc4c0003602182002200241086a36022820012000200241186a104021010c010b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c2002418cc5c00036021820012000200241186a104021010b200241306a240020010bae0601047f410021020240024002400240024020002d0000220320012d0000470d0041012102024002400240024002400240024002400240024002402003417f6a0e09010203040506070b000b0b20034109470d0a200041046a2802002203200141046a280200470d0b2003417f6a0e020708090b4101210220034101470d09200041046a280200200141046a280200460f0b20034102470d08200041246a2802002203200141246a280200470d0c41012102024020034101470d00200041306a2802002203200141306a280200470d0d200041286a280200200141286a280200200310c2090d0d0b200041016a200141016a412010c2090d0c0c080b20034103470d07200041046a2802002203200141046a280200470d0a41012102024020034101470d00200041106a2802002203200141106a280200470d0b200041086a280200200141086a280200200310c2090d0b0b200041186a290300200141186a290300520d0a0c070b20034104470d06200041186a2802002203200141186a280200470d0841012102024020034101470d00200041246a2802002203200141246a280200470d092000411c6a2802002001411c6a280200200310c2090d090b200041016a200141016a411410c2090d080c060b20034105470d0520002d000120012d0001460f0b20034106470d04200041086a290300200141086a29030085200041106a290300200141106a2903008584500f0b20034107470d03410021022000410c6a28020022032001410c6a280200470d03200041046a280200200141046a280200200310c209450f0b200041106a2802002203200141106a280200470d03200041086a280200200141086a280200200310c209450d010c030b200041086a280200200141086a280200470d020b200041146a2802002203200141146a280200470d012001411c6a2802002104200141186a28020021012000411c6a2802002105200041186a280200210002400240024002402003417f6a0e0400010203040b20002001470d040c030b20002001470d0320052004470d030c020b20002001470d0220052004470d020c010b20002001470d0120052004470d010b20020f0b41000f0b41000f0b41000f0b41000bff1203067f017e0a7f230041a01b6b22022400200241f8036a200141f80310bf091a02400240024002400240024002400240024002400240024002400240024020002802042203450d00200028020021040c010b41b02b102f2203450d0141002104200341003b01ae2b200341003602a82b20002003360204200041003602000b0240034020032f01ae2b2105410021012003210602400240034020052001460d01200141016a2101200241f8036a200610fa042107200641f8036a21060240200741187441187541016a0e03000301000b0b2001417f6a21050b2004450d022004417f6a2104200320054102746a41b02b6a28020021030c010b0b0240024020022802f8030d0020024180046a1082040c010b200228028004450d0020022802fc0310310b20022d00c8074106490d0d200241d0076a280200450d0d200241cc076a28020010310c0d0b20024180046a280200210720022903f80321082002410c6a20024184046a41ec0310bf091a200241d00f6a2002410c6a41ec0310bf091a024020032f01ae2b2201410a4b0d00200241f8036a200241d00f6a41ec0310bf091a0240200541016a220620014b0d002003200641f8036c6a2003200541f8036c6a200120056b41f8036c10c0091a0b2003200541f8036c6a22062007360208200620083703002006410c6a200241f8036a41ec0310bf091a2003200141016a3b01ae2b0c0c0b410521014100210902400240200541054f0d0041042101200521060c010b41052106024002402005417b6a0e020201000b200541796a210641012109410621010c010b41002106410121090b41b02b102f220a450d00200a41003b01ae2b200a41003602a82b200a20032f01ae2b220b2001417f736a22053b01ae2b2003200141f8036c6a2204280204210c2004280200210d200241f8036a200441086a41f00310bf091a2005410c4f0d01200b200141016a22046b2005470d02200a2003200441f8036c6a200541f8036c10bf092104200320013b01ae2b200241b0176a200241f8036a41f00310bf091a2004200320091b22012f01ae2b2105200241f8036a200241d00f6a41ec0310bf091a0240200641016a220920054b0d002001200941f8036c6a2001200641f8036c6a200520066b41f8036c10c0091a0b2001200641f8036c6a22062007360208200620083703002006410c6a200241f8036a41ec0310bf091a2001200541016a3b01ae2b200241c0136a200241b0176a41f00310bf091a200241e00b6a200241c0136a41f00310bf091a02400240024020032802a82b22090d004100210e0c010b4100210e2004210f200c2110200d2111034020032f01ac2b2107200241d00f6a200241e00b6a41f00310bf091a4101450d0620092f01ae2b2205410b490d024100210441042101024020074105490d0020072101024002402007417b6a0e020201000b200741796a210741012104410621010c010b4100210741012104410521010b41e02b102f220a450d03200a41003b01ae2b200a41003602a82b200a20092f01ae2b220b2001417f736a22063b01ae2b2009200141f8036c6a2203280204210c2003280200210d200241f8036a200341086a41f00310bf091a2006410c4f0d07200b200141016a22126b2006470d08200a200341f8036a200641f8036c10bf092106200920013b01ae2b200241b0176a200241f8036a41f00310bf091a20062f01ae2b220341016a210b2003410c4f0d09200520016b2201200b470d0a200e41016a210e200641b02b6a200920124102746a41b02b6a200141027410bf091a4100210102400340200620014102746a41b02b6a280200220520013b01ac2b200520063602a82b2001200120034922056a220120034b0d0120050d000b0b200241c0136a200241b0176a41f00310bf091a2006200920041b22052f01ae2b2101200241f8036a200241d00f6a41f00310bf091a0240200741016a220320014b0d002005200341f8036c6a2005200741f8036c6a200120076b41f8036c10c0091a0b200141016a21042005200741f8036c6a220b2010360204200b2011360200200b41086a200241f8036a41f00310bf091a200541b02b6a210b0240200741026a2210200141026a22014f0d00200b20104102746a200b20034102746a2003417f7320016a41027410c0091a0b200b20034102746a200f360200200520043b01ae2b0240200320014f0d00200520074102746a41b42b6a2101034020012802002203200741016a22073b01ac2b200320053602a82b200141046a210120042007470d000b0b200241e00b6a200241c0136a41f00310bf091a2009210320092802a82b220121092006210f200c2110200d211120010d000b0b200241f0076a200241e00b6a41f00310bf091a200241b0176a200241f0076a41f00310bf091a20002802042206450d092000280200210341e02b102f2201450d01200120063602b02b200141003b01ae2b200141003602a82b200641003b01ac2b200620013602a82b200020013602042000200341016a360200200241f8036a200241b0176a41f00310bf091a2003200e470d0a20012f01ae2b2206410b4f0d0b2001200641016a22033b01ae2b2001200641f8036c6a2206200c3602042006200d360200200641086a200241f8036a41f00310bf091a200120034102746a41b02b6a200a360200200a20033b01ac2b200a20013602a82b2000200028020841016a3602080c0d0b20092f01ae2b2101200241f8036a200241d00f6a41f00310bf091a200741016a21060240200120074d22040d002009200641f8036c6a2009200741f8036c6a200120076b41f8036c10c0091a0b200141016a210a2009200741f8036c6a2203201036020420032011360200200341086a200241f8036a41f00310bf091a200941b02b6a2103200141026a2105024020040d00200741027420036a41086a200320064102746a2006417f7320056a41027410c0091a0b200320064102746a200f3602002009200a3b01ae2b200620054f0d0b200141016a210520092006417f6a22014102746a41b42b6a2106034020062802002203200141016a22013b01ac2b200320093602a82b200641046a210620052001470d000c0c0b0b1039000b2005410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2006410b419c90ca001058000b41ac90ca00412841d490ca00103c000b200b410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b2000200028020841016a3602080b200241a01b6a24000ba50302027f047e02402000200110b804220241ff01710d00024002400240024002400240024020002d00d003220320012d00d0032202470d00410021022003417f6a0e06050102030406070b417f410120032002491b0f0b20034102470d05200041d1036a200141d1036a410410c2092200450d05417f410120004100481b0f0b20034103470d04200041d1036a200141d1036a410810c2092200450d04417f410120004100481b0f0b20034104470d03200041d1036a200141d1036a411010c2092200450d03417f410120004100481b0f0b20034105470d02200041d1036a200141d1036a412010c2092200450d02417f410120004100481b0f0b20034101470d01417f200041d8036a2903002204200141d8036a290300220585200041e0036a2903002206200141e0036a290300220785844200522004200554200620075420062007511b1b0f0b20034106470d000240200041d4036a280200200141d4036a280200200141dc036a2802002201200041dc036a2802002200200020014b1b10c20922020d00417f200020014720002001491b0f0b417f410120024100481b21020b20020bf00801037f02402001450d00200020014198046c6a21020340200022034198046a21000240024002400240024002400240024020032d00000e0707000102030405060b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410310b200341106a10ad010c060b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410310b200341206a10ad010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0520014198046c450d05200328021010310c050b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410310b0240200341186a2802002204450d00200341106a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b200341146a2802002201450d04200141f8036c450d04200328021010310c040b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410310b200341206a10ad010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0320014198046c450d03200328021010310c030b02402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b0240200341086a2802002201450d00200141f8036c450d00200328020410310b200341206a10ad010240200341186a2802002204450d00200341106a280200210120044198046c21040340200110bf0120014198046a2101200441e87b6a22040d000b0b200341146a2802002201450d0220014198046c450d02200328021010310c020b200341186a10ad0102402003410c6a2802002204450d00200341046a2802002101200441f8036c21040340200110aa01200141f8036a2101200441887c6a22040d000b0b200341086a2802002201450d01200141f8036c450d01200328020410310c010b200341106a10aa0102402003410c6a2802002204450d00200341046a2802002101200441e0076c21040340200110a601200141e0076a2101200441a0786a22040d000b0b200341086a2802002201450d00200141e0076c450d00200328020410310b20002002470d000b0b0b820302037f027e230041206b22012400200141003602102001420137030820012000290300370318200141086a200141186a4108107e20012000290308370318200141086a200141186a4108107e20012000290310370318200141086a200141186a4108107e20002802302102200141086a200041386a280200220310cb010240200341286c2203450d00200220036a21030340200141086a20024120107e2001200241206a290300370318200141086a200141186a4108107e200241286a22022003470d000b0b200141086a2000413c6a4120107e20012000290318370318200141086a200141186a4108107e2001200041206a290300370318200141086a200141186a4108107e0240024002400240200041286a2d00000e03000102030b200141003a0018200141086a200141186a4101107e0c020b200141013a0018200141086a200141186a4101107e0c010b200141023a0018200141086a200141186a4101107e0b2001350210210420013502082105200141206a240020052004422086840bb20401047f2000410c6a280200200028020822016b220241e8076d210302402002450d002001200341e8076c6a2103200141d8076a2101034002400240024002400240024002400240200141a8786a22022d00000e140707070007010203070707070407070507070707060b200141b0786a280200450d06200141ac786a28020010310c060b200141ac786a2802000d05200141b4786a2802002204450d05200441286c450d05200141b0786a28020010310c050b200141ac786a2d00004102490d04200141b4786a28020041ffffff3f71450d04200141b0786a28020010310c040b024002400240200141ac786a2802000e020001020b200141f87a6a280200450d05200141f47a6a28020010310c050b200141f87a6a280200450d04200141f47a6a28020010310c040b200141f87a6a280200450d03200141f47a6a28020010310c030b200141b0786a2d0000410a470d02200141dc786a280200450d02200141d8786a28020010310c020b200141b4786a28020041ffffff3f71450d01200141b0786a28020010310c010b02400240200141b0786a2802000e020200010b200141c0786a280200410b470d01200141c8786a10ad01200141907c6a10a3010c010b200141b8786a280200410b470d00200141c0786a10ad01200141887c6a10a3010b0240200241dc076a28020041ffffff3f71450d00200128020010310b200141e8076a2101200241e8076a2003470d000b0b024020002802042201450d00200141e8076c450d00200028020010310b0b130020004105360204200041ac97c2003602000b130020004102360204200041bc9ac2003602000b13002000410e360204200041a89dc2003602000bef0104017f017e037f027e024020002802002000280005470d0020002d0004200041096a2d0000470d004200428080808080c000840f0b200041046a220120013100002202a7220341016a22042004410771200341074922051bad3c0000200020003502002206a722014100200441037620051b6aad3e020020062002422086842202422388200242ffffffff0f8384210620024280808080f00083210220012d0000410120034107717422007141ff01712203410047ad2107024002402003450d0020012d000020007221000c010b20012d00002000417f737121000b200120003a000020022006842007422886840b890101057f20012802002102200128020421032001420137020002400240200341037622040d00410021020c010b2001200128020822052004200420054b1b2205200341077122066a22044107712003200541037422056b41787172360204200120024100200441037620044108491b6a360200200620057221010b20002001360204200020023602000b130020004118360204200041eca6c2003602000bc50201037f230041e0006b22022400200241086a4188bbc200410810a702200241186a419bbbc200410f10a7022002410036024020024201370338200241386a20014120107e20022001280220360250200241386a200241d0006a4104107e2002200228023822012002280240220310c802370348200241dc006a200120036a360200200220013602582002200241c8006a41086a3602542002200241c8006a360250200241286a200241d0006a1088010240200228023c450d00200110310b024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241e0006a24000f0b103b000b1039000bb90404017f017e017f047e230041c0036b2207240042002108024020050d00200741186a2001ad42004280c2d72f420010be0920074188026a108d02200741c0006a2007290390022208200220082002541b108605200741c0006a41086a290300210820072903402102200741a0026a2201420037030020074188026a41106a2205420037030020074188026a41086a22094200370300200742003703880220074188026a41cae6c200411210a702200741d0006a418ce8c200411110a7022001200741d0006a41086a29000037030020052007290050370300200741286a20074188026a10870520074188026a200729033042808090bbbad6adf00d200728022822011b200741286a41106a290300420020011b2002200842808090bbbad6adf00d4200108805200741186a41086a29030021022007290318210a024002402007280288024101470d00427f210b427f210c0c010b2005290300210c2009290300210b0b200741d0006a108d020240024002400240200641ff01710e03010200010b200741d0016a21050c020b200741e0006a21050c010b20074198016a21050b2005290300210820074188026a108d02200741086a200729039002220d2008200d2008541b108605200741106a29030021082007290308210d200041306a200c370300200041286a200b370300200041206a2002370300200041186a200a370300200041106a20083703002000200d370308420121080b2000200337033820002008370300200041c0006a2004370300200741c0036a24000bc90706017f017e047f037e037f067e230041c0026b2202240042002103200241e0016a22044200370300200241d0016a41086a4208370300200241ec016a22054180023b0100200241e8016a2206410036020041012107200241013602b802200241003602d001024002404100450d0042012108420021090c010b0240024002404101450d004200210a0c010b200241c8016a210b4101210c420021080340200241b0016a200842002001420010be09200241c0016a200142002001420010be09200820022903b801220184200184420052200b290300220120022903b001220a200a7c7c220a200154720d0220022903c0012101200c410271210d200c4101762207210c200a2108200d450d000b0b0240200741024f0d0020012108200a21090c020b200241a0016a41086a210d20012108200a2109034020024190016a200a42002001420010be09200241a0016a200142002001420010be09200a200229039801220184200184420052200d2903002201200229039001220a200a7c7c220a200154720d0120022903a001210102402007410271450d00200241e0006a200942002001420010be09200241f0006a200a42002008420010be0920024180016a200842002001420010be092009420052200a4200527120022903684200527220022903784200527220024180016a41086a2903002208200229036020022903707c7c2209200854720d0220022903800121080b200741034b210c20074101762107200a210a200c0d000c020b0b427f2108427f21090b200241d0006a20082009428094ebdc03420010bc09200241306a2004290300220a42002008420010be09200241206a2009420020022903d8012201420010be09200241c0006a200142002008420010be090240024020052d0000450d00420021010c010b2002290338210e2002290328210f2002290320211020022903302111200241c0006a41086a2903002101200628020021072002290350210320022903402112200241106a20082009428094ebdc03420010bd0920022002290310200241106a41086a2903002007ad2208420010be09427f200241086a29030020022903002213200320087e2208428094ebdc0380a7417f2008428080808080c0b2cd3b541b2008428094ebdc03824280cab5ee01566aad7c2208201354ad7c2203427f2001201120107c7c2210200a420052200942005271200e42005272200f4200527220102001547222071b7c2008427f201220071b7c220a2008542207ad7c22012007200120035420012003511b22071b2101427f200a20071b21030b2000200337030020002001370308200241c0026a24000ba10204017f017e017f027e230041d0006b220224002002412036020420022001360200200241086a2001412010d20202400240200228020822010d00420021030c010b200228020c210402400240200241086a41086a2802004110490d00200141086a290000210520012900002106420121030c010b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c2002419086c4003602382002200241286a360248200241346a41d8ddc900200241386a10401a2002280218200228022010d9040240200228021c450d00200228021810310b420021030b2004450d00200110310b2000200637030820002003370300200041106a2005370300200241d0006a24000bb63605017f017e017f027e1e7f230041e0026b220724000240024002402001200284500d0020032004844200520d010b20004100360200200041106a4200370300200041086a42003703000c010b42012108200741f0006a200320012003200156200420025620042002511b22091b220a2004200220091b220b20054201200542015620064200522006501b220c1b220520064200200c1b220610bc092002200420091b21022001200320091b21040240024002402007290370200741f0006a41086a29030084500d00200741e0006a200420022005200610bc092007290360200741e0006a41086a29030084500d01200521080c020b200741c0006a200a200b2005200610bd09200741c0006a41086a290300210b420021062007290340210a0c010b200741d0006a200420022005200610bd09200741d8006a29030021024200210642012108200729035021040b200741106a200b42002004420010be09200741206a20024200200a420010be09200741306a200a42002004420010be090240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b420052200242005271200729031842005272200729032842005272200741306a41086a2903002201200729031020072903207c7c2203200154724101470d004110102f2209450d192009200a3e020c2009200a4220883e02082009200b3e02042009200b4220883e020020074284808080c00037028401200720093602800120074180016a1097094110102f2209450d19200920043e020c200920044220883e0208200920023e0204200920024220883e020020074284808080c00037029401200720093602900120074190016a1097094110102f2209450d1920092008a7220d36020c200920084220883e0208200920063e0204200920064220883e020020074284808080c0003702a401200720093602a001200741a0016a109709200741f0016a41086a20074190016a41086a28020036020020072007290390013703f00120074180026a41086a20074180016a41086a280200360200200720072903800137038002200741b0016a20074180026a200741f0016a109909024020072802f40141ffffffff0371450d0020072802f00110310b200741b0016a10970920072802b801210920072802b401210e20072802b001210f20072802a80122100e020501020b2007200729033020032008200610bd0920004100360200200041106a200741086a290300370300200041086a20072903003703000c1b0b20094101200941014b1b221041ffffffff03712010470d162010410274220c417f4c0d1602400240200c0d00410421110c010b200c10352211450d180b200720103602d802200720113602d0022007200c4102763602d4022009450d182011201041027420094102746b6a210c410020096b2109200d4101200d41014b1bad210242002104200f210d03402010201020096a22114d0d02200c2004422086200d3502008422042002803e02002009417f460d19200d41046a210d200c41046a210c200941016a2109200420028221040c000b0b20072802a00122122802000d010c020b2011201041e4e8c900103f000b2009450d03200f280200450d00200920104d0d00200720103602bc01200920106b221341016a22144101201441014b1b221541ffffffff03712015470d1320154102742216417f4c0d1320160d01410421170c020b410021170240200e41ffffffff03710d000c070b200f10310c060b201610352217450d120b20104101201041014b1b221841ffffffff03712018470d1020184102742219417f4c0d1020191035221a450d11410121114102210c024002400240201228020067221b0e020201000b4102210c201b210d410121110340200c4101200d4101711b20116c2111200d41034b211c200c200c6c210c200d410176210d201c0d000b0b200c20116c21110b200720093602f8012007200e3602f4012007200f3602f0014104102f2209450d11200920113602002007428180808010370284022007200936028002200741c0016a200741f0016a20074180026a10990920091031201041ffffffff03712010470d1020104102742209417f4c0d104104210c02402009450d002009102f220c450d120b2007200c3602f001200720094102763602f401200c2012201041027410bf091a200720103602f8014104102f2209450d11200920113602002007428180808010370284022007200936028002200741d0016a200741f0016a20074180026a10990920091031201420072802bc016a220920072802c801220c4d0d032009200c6b220941ffffffff03712009470d1020094102742210417f4c0d100240024020100d004104210c0c010b2010102f220c450d120b02402010410276220d20094f0d002010410176220d2009200d20094b1b220d4104200d41044b1b220d41ffffffff0371200d464102742111200d410274210d0240024020100d0020074100360280020c010b20074188026a410436020020072010360284022007200c360280020b200741f0016a200d201120074180026a104e200741f8016a280200210d024020072802f0014101460d0020072802f401210c200d410276210d0c030b200d450d110c120b20090d01410021090c020b4100410041f4e8c900103f000b200c4100200941027410c1091a0b20072802c001210f02400240200d20096b20072802c8012210490d00200920106a21110c010b200920106a22112009490d0e200d410174220e2011200e20114b1b220e4104200e41044b1b220e41ffffffff0371200e46410274211c200e410274210e02400240200d0d0020074100360280020c010b20074188026a41043602002007200c360280022007200d410274360284020b200741f0016a200e201c20074180026a104e200741f8016a280200210d024020072802f0014101460d0020072802f401210c200d410276210d0c010b200d0d0f0c0e0b200c20094102746a200f201041027410bf091a024020072802c40141ffffffff0371450d0020072802c00110310b200720113602c8012007200d3602c4012007200c3602c0010b2016410276211d2019410276211e200741d0016a109709034020072013221f3602dc01024020072802c801220920072802bc01220c201f6a220d417f736a22102009490d002010200941bce7c900103f000b024002400240024002400240024002400240024002400240024020092009200d6b220d4d0d0020072802d80122092009200c6b220c4d0d0120072802d001200c4102746a35020022024200510d02201f201f4100476b211320072802c001220920104102746a35020021042009200d4102746a3502002101200741003602e0012007200120044220868422042002803703e801200720042002823703f801200741003602f0012007200741dc016a360294022007200741c0016a360290022007200741bc016a36028c022007200741d0016a360288022007200741f0016a360284022007200741e0016a3602800220074180026a109a091a034020072802f001220941016a41004c0d04200720093602f001024020072903f80142ffffffff0f560d0020074180026a109a090d010b0b20072903e80121024100210c02400240024020072802bc01221120072802dc01220d6a22092011490d00201141016a220c20114f0d004104210f2007410436029802410021120c010b200c41ffffffff0371200c470d1c200c4102742210417f4c0d1c0240024020100d004104210f0c010b2010102f220f450d1e0b2007200f36029802201041027621124100210c2009200d490d0b201141016a220c20114f0d010b41002110410021114100210c034020072802c801220e2009417f736a221c200e4f0d06200d20094f210e2009200d2009496b210920072802c001201c4102746a280200211c02400240200c2012470d00200c417f41004100417f2009200d6b221241016a221620162012491b200e1b2009200d491b221241016a221620162012491b6a2212200c490d1e20112012201120124b1b22124104201241044b1b221241ffffffff037120124641027421162012410274211202400240200c0d00200741003602d0020c010b200741043602d802200720103602d4022007200f3602d0020b200741c0026a20122016200741d0026a104e20072802c802211220072802c0024101460d01200720072802c402220f36029802201241027621120b200f20106a201c360200201041046a2110201141026a2111200c41016a210c2009200d49200e72450d010c0c0b0b20120d1c0c1b0b02402012200c4f0d002010410176220e200c200e200c4b1b220c4104200c41044b1b220c41ffffffff0371200c46410274210e200c410274210c0240024020100d00200741003602d0020c010b200741043602d802200720103602d4022007200f3602d0020b200741c0026a200c200e200741d0026a104e20072802c802210c20072802c0024101460d07200720072802c402220f36029802200c41027621120b200d20094f0d072009417f73210c0340200c20072802c801220e6a2210200c4f0d06200f20072802c00120104102746a280200360200200c41016a210c200f41046a210f200d2009417f6a2209490d000b2011210c0c080b200d200941bce7c900103f000b200c200941bce7c900103f000b4190e9c900411941ace9c900103c000b41bce9c9004118200741d0026a41d4e9c90041e4e9c9001041000b201c200e41bce7c900103f000b2010200e41bce7c900103f000b200c0d140c130b4100210c20110d010b20072802c8012209200d417f736a220d20094f0d01200f20072802c001200d4102746a280200360200200c41016a210c0b20072802d801220d41ffffffff0371200d470d10200d4102742209417f4c0d1020072802d00121110240024020090d00410421100c010b2009102f2210450d120b200720103602c002200720094102763602c40220102011200910bf091a2007200d3602c8024108102f2209450d1120092002a72220360204200920024220883e020020074282808080203702d402200720093602d002200741a0026a200741c0026a200741d0026a10990920091031200c20072802a8022221200c20214b1b22224101202241014b1b220e41ffffffff0371200e470d10200e4102742223417f4c0d1020072802980221240240024020230d00410421250c010b202310352225450d120b024020220d004100210d0c030b2022417f6a2116200e417f6a21102021417f6a222620214b2114200c417f6a2227200c4b2128202520236a417c6a2111410021094200210220072802a002212903404100210d024020280d004100210d200c202720096b220f4d0d004100210d200f20274b0d002024200f4102746a280200210d0b4100210f024020140d002021202620096b221c4d0d00201c20264b0d002029201c4102746a280200210f0b200e20104d0d022011200dad220420027d200fad22017d200420017d220120027d22022001200456200220015672220d1b3e020020162009460d03200941016a21092011417c6a21112010417f6a2110200dad21020c000b0b200d200941bce7c900103f000b2010200e41e4e8c900103f000b0240201241ffffffff0371450d00202410310b0240024002400240024002400240024002400240024002400240024020072802bc01221020072802dc01220c6a221c2010490d0002400240200c201c4f0d00200c417f7321090340200e200e200c6a20096a22114d0d04200920072802c801220f6a220c20094f0d0520072802c001200c4102746a202520114102746a2802003602002009417f6a210920072802dc01210c2010417f6a22100d000c020b0b20100d010b200c201c417f7322096a220c200e6a2210200c4f0d0320072802c801220c20096a2209200c4f0d0420072802c00120094102746a202520104102746a28020036020020072802dc01210c0b2015200c417f736a220920154f0d04201720094102746a2020360200200d450d0c201520072802dc01417f736a220920154f0d05201720094102746a22092009280200417f6a3602004100210c02400240024020072802bc01221120072802dc01220d6a22092011490d00201141016a220c20114f0d004104210f200741043602bc02410021120c010b200c41ffffffff0371200c470d1c200c410274220c417f4c0d1c02400240200c0d004104210f0c010b200c102f220f450d1e0b2007200f3602bc02200c410276211202402009200d4f0d004100210c0c0e0b201141016a221020114f0d010b41002110410021114100210c034020072802c801220e2009417f736a221c200e4f0d08200d20094f210e2009200d2009496b210920072802c001201c4102746a280200211c02400240200c2012470d00200c417f41004100417f2009200d6b221241016a221620162012491b200e1b2009200d491b221241016a221620162012491b6a2212200c490d1e20112012201120124b1b22124104201241044b1b221241ffffffff037120124641027421162012410274211202400240200c0d00200741003602d0020c010b200741043602d802200720103602d4022007200f3602d0020b200741c0026a20122016200741d0026a104e20072802c802211220072802c0024101460d01200720072802c402220f3602bc02201241027621120b200f20106a201c360200201041046a2110201141026a2111200c41016a210c2009200d49200e72450d010c0e0b0b20120d1c0c1b0b0240201220104f0d00200c410176220e2010200e20104b1b22104104201041044b1b221041ffffffff0371201046410274210e2010410274211002400240200c0d00200741003602d0020c010b200741043602d8022007200c3602d4022007200f3602d0020b200741c0026a2010200e200741d0026a104e20072802c802210c20072802c0024101460d09200720072802c402220f3602bc02200c41027621120b200d20094f0d092009417f73210c0340200c20072802c801220e6a2210200c4f0d08200f20072802c00120104102746a280200360200200c41016a210c200f41046a210f200d2009417f6a2209490d000b2011210c0c0a0b20224101202241014b1b200c6a20096a200e41bce7c900103f000b200c200f41e4e8c900103f000b2010200e41bce7c900103f000b2009200c41e4e8c900103f000b2009201541e4e8c900103f000b2009201541bce7c900103f000b201c200e41bce7c900103f000b2010200e41bce7c900103f000b200c0d120c110b4100210c20110d010b20072802c8012209200d417f736a220d20094f0d04200f20072802c001200d4102746a280200360200200c41016a210c20072802bc02210f0b2007200c3602b802200720123602b4022007200f3602b00220072802d801220c41ffffffff0371200c470d0e200c4102742209417f4c0d0e20072802d00121100240024020090d004104210d0c010b2009102f220d450d100b2007200d3602d002200720094102763602d402200d2010200910bf091a2007200c3602d802200741c0026a200741d0026a200741b0026a109809024020072802bc01220920072802dc01220e6a220c2009490d0002400240200e200c4f0d00200c417f73210920072802c002211c20072802c802210d200e21100340200d200d20106a20096a22104d0d08200920072802c80122166a221120094f0d0920072802c00120114102746a201c20104102746a280200360200200941016a210920072802dc012110200e200c417f6a220c490d000c020b0b20090d0120072802c802210d200e21100b200d2010200e417f7322096a6a220c200d4f0d0720072802c801220d20096a2209200d4f0d0820072802c00120094102746a20072802c002200c4102746a2802003602000b024020072802c40241ffffffff0371450d0020072802c00210310b201241ffffffff0371450d00200f10310b02402023450d00202510310b024020072802a40241ffffffff0371450d0020072802a00210310b201f0d000b02400240201b450d00024020072802bc0122094101460d00410020096b210f201b411f71210e4100201b6b411f71211c2018410274201a6a417c6a210c417f21090340200920072802c80122106a220d20094f0d0c2010200d417f6a22114d0d0d2018201820096a22104d0d0e200c20072802c001221020114102746a280200201c742010200d4102746a280200200e7672360200200c417c6a210c200f2009417f6a2209470d000b20072802bc0121090b20072802c801220c200c20096b220d4d0d082018201820096b22094d0d09201a20094102746a20072802c001200d4102746a280200201b411f717636020041012109201a210d0c010b4100210920072802c801211820072802c401211e20072802c001210d2019450d00201a10310b024020072802d40141ffffffff0371450d0020072802d00110310b2009450d0020072802c40141ffffffff0371450d0020072802c00110310b4104102f2209450d0c200941003602004104102f220c450d0c200c41003602000240024020170d00410121184101211e410121154101211d0c010b20091031200c1031200d210c201721090b200720153602e8012007201d3602e401200720093602e001200720183602f8012007201e3602f4012007200c3602f00120074180026a200741f0016a1096092007280280024101460d0a024020074180026a41086a29030020084201882006423f86845820074180026a41106a2903002202200642018822045820022004511b0d00200741f0016a41086a200741e0016a41086a280200360200200720072903e0013703f0014110102f2209450d0d20094280808080103702082009420037020020074284808080c00037028402200720093602800220074180026a109709200741e0016a200741f0016a20074180026a10980920072802840241ffffffff0371450d0020072802800210310b200741d0026a41086a200741e0016a41086a280200360200200720072903e0013703d0020c0e0b200d200941bce7c900103f000b2010200d41bce7c900103f000b2011201641e4e8c900103f000b200c200d41bce7c900103f000b2009200d41e4e8c900103f000b200d200c41bce7c900103f000b2009201841e4e8c900103f000b200d201041bce7c900103f000b200d417f6a201041bce7c900103f000b2010201841e4e8c900103f000b20072007290284023703f00141f0ebc900412f200741f0016a41a0ecc90041b0ecc9001041000b103b000b1039000b200e41ffffffff0371450d00200f10310b200741d0026a109709200741f0016a41086a200741d0026a41086a280200360200200720072903d0023703f00120074180026a200741f0016a10960941012109024002402007280280024101470d00200041c0ecc900360204200041086a41193602000c010b200041106a20074180026a41106a290300370300200041086a20074180026a41086a290300370300410021090b2000200936020020072802a40141ffffffff0371450d0020072802a00110310b200741e0026a24000bc90a03047f037e057f230041c0026b220224000240024002402000410c6a28020022030d00200241f8016a411f6a200241d0016a411f6a280000360000200241f8016a41186a200241d0016a41186a290300370300200241f8016a41106a200241d0016a41106a290300370300200241f8016a41086a200241d0016a41086a290300370300200220022903d0013703f8010c010b20002003417f6a220336020c200241d0016a411f6a22042000280204200341246c6a220341206a280000360000200241d0016a41186a2205200341196a290000370300200241d0016a41086a200341096a2900002206370300200241d0016a41106a200341116a29000022073703002002200329000122083703d00120032d00002103200241f8016a411f6a22092004280000360000200241f8016a41186a22042005290300370300200241f8016a41106a22052007370300200241f8016a41086a220a2006370300200220083703f80120034106460d00200241a8016a411f6a220b2009280000360000200241a8016a41186a22092004290300370300200241a8016a41106a20052903002206370300200241a8016a41086a200a290300220737030020024180016a41096a200737000020024180016a41116a200637000020024180016a41196a200929030037000020024180016a41206a200b280000360000200220022903f80122063703a8012002200637008101200220033a00800102400240024020034103470d0020024180016a41017228000041c28289aa04470d01200220024180016a41106a2802003602d401200220024180016a41086a2802003602d001200241f8016a200241d0016a10b903410121030240024020022d00f8014101470d00410021030c010b200241f8006a200241b1026a290000370300200241f0006a200241a9026a290000370300200241e8006a200241a1026a290000370300200241e0006a20024199026a290000370300200241d8006a20024191026a290000370300200241c0006a41106a20024189026a290000370300200241c0006a41086a20024181026a290000370300200220022900f9013703400b200241f8016a41386a2204200241c0006a41386a290300370300200241f8016a41306a2205200241c0006a41306a290300370300200241f8016a41286a2209200241c0006a41286a290300370300200241f8016a41206a220a200241c0006a41206a290300370300200241f8016a41186a220b200241c0006a41186a290300370300200241f8016a41106a220c200241c0006a41106a290300370300200241f8016a41086a220d200241c0006a41086a290300370300200220022903403703f8012003450d01200241386a2004290300370300200241306a2005290300370300200241286a2009290300370300200241206a200a290300370300200241186a200b290300370300200241106a200c290300370300200241086a200d290300370300200220022903f80137030002402002418c016a280200450d0020024188016a28020010310b200241f8016a2000109d032002200241f8016a41202001108a05450d03200041046a2204109a0241012103200041086a2802002200450d04200041246c450d04200428020010310c040b0240024020030e050400010304030b2002418c016a280200450d0320024188016a28020010310c030b2002418c016a280200450d0220024188016a28020010310c020b2002418c016a280200450d0120024188016a28020010310c010b20024188016a280200450d0020022802840110310b200041046a2204109a0241002103200041086a2802002200450d00200041246c450d00200428020010310b200241c0026a240020030b150020002002ad4220862001ad84200310094101460b890201037f230041206b220224002000410036020820004201370200024002400240024020012802000e03000102030b200241013a000f20002002410f6a4101107e2001280204210320002001410c6a280200220410cb010240200441286c2204450d00200320046a21040340200020034120107e2002200341206a2903003703102000200241106a4108107e200341286a22032004470d000b0b2000200141106a4120107e0c020b200241023a000f20002002410f6a4101107e2002200128020436021c20002002411c6a4104107e0c010b200241033a000f20002002410f6a4101107e200141086a290300200141106a290300200141186a2d0000200010d6010b200241206a24000b130020004103360204200041d4bcc2003602000b340020004188bbc20036020420004100360200200041146a4104360200200041106a4194cac200360200200041086a42083702000b1300200041043602042000419cd4c2003602000b4201027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002410836020c20002002410c6a4104107e200241106a24000b4201027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002412436020c20002002410c6a4104107e200241106a24000b4201027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002410136020c20002002410c6a4104107e200241106a24000b4301027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241d80436020c20002002410c6a4104107e200241106a24000b7c01037f230041206b22022400200241b785c400411310a702200241106a419089c400410510a70202404108102f2203450d00200320013700004128102f2204450d002000422837020420002004360200200020024110107e2000200241106a4110107e200020034108107e20031031200241206a24000f0b1039000baf0902047f017e230041e0016b22032400200128020841186c2104200128020021050240024003402004450d01200520046a2101200441686a22062104200141686a29030022072002560d000b2007200520066a220141106a2802002204ad7c2002580d00024002402004200220077da722064b0d00410221050c010b4101210502400240200141086a28020020064107746a22042d00004101470d00200320042800013602b0012003200441046a2800003600b3012003200441146a290000370390012003200441196a29000037009501200441106a2800002101200441086a29000021020c010b200341c8006a41086a200441e4006a290000370300200341c8006a41106a200441ec006a290000370300200341c8006a41186a200441f4006a29000037030020034190016a41086a2004411c6a29000037030020034190016a41106a200441246a29000037030020034190016a41186a2004412c6a2900003703002003200441dc006a2900003703482003200441146a29000037039001200441086a2903002102200441106a2802002101200341b8016a41246a200441d8006a280200360200200341b8016a411c6a200441d0006a290200370200200341b8016a41146a200441c8006a290200370200200341c4016a200441c0006a290200370200200341e8006a41206a200341b8016a41206a290200370300200341e8006a41186a200341b8016a41186a290200370300200341e8006a41106a200341b8016a41106a2902003703002003200441386a2902003702bc01200341e8006a41086a200341b8016a41086a290200370300200320032902b801370368410021050b200341206a41086a20034190016a41086a290300370300200341206a41106a20034190016a41106a290300370300200341206a41186a20034190016a41186a290300370300200341b8016a41086a200341e8006a41086a290300370300200341b8016a41106a200341e8006a41106a290300370300200341b8016a41186a200341e8006a41186a290300370300200341b8016a41206a200341e8006a41206a290300370300200320032800b301360043200320032802b0013602402003200329039001370320200320032903683703b801200341186a200341c8006a41186a290300370300200341106a200341c8006a41106a290300370300200341086a200341c8006a41086a290300370300200320032903483703000b20002003280240360009200041086a20053a00002000410c6a2003280043360000200041186a2001360200200041106a20023703002000411c6a20032903203702002000413c6a20032903b801370200200041246a200341206a41086a2903003702002000412c6a200341206a41106a290300370200200041346a200341206a41186a290300370200200041c4006a200341b8016a41086a290300370200200041cc006a200341b8016a41106a290300370200200041d4006a200341b8016a41186a290300370200200041dc006a200341d8016a29030037020020004100360200200041fc006a200341186a290300370200200041f4006a200341106a290300370200200041ec006a200341086a290300370200200041e4006a20032903003702000c010b200020021095050b200341e0016a24000b991101117f230041c0036b2202240002400240024002400240410f102f2203450d002002420f37020c2002200336020841b286c4004103200241086a10cd01200220013703a002200241086a200241a0026a4108107e200241186a410120022802082204200228021010c0070240200228021822050d00410221060c050b200228021c21072002200241186a41086a280200220836022c2002200536022802402008450d0020052d0000210320022008417f6a220936022c2002200541016a3602280240024002400240024020030e020001050b2002200241286a10bb0120022802000d04200228022c220a20022802042203490d042003417f4c0d060240024020030d00410121080c010b200310352208450d06200228022c210a0b200a2003490d0320082002280228200310bf091a200228022c220a20034f0d012003200a419cb4c0001061000b41002103200241003602a0022008417e6a2108200241a0026a4104722106034020092003460d04200620036a200520036a220b41016a2d00003a00002002200341016a220a3602a0022002200b41026a3602282002200836022c2008417f6a2108200a2103200a4120470d000b200241a0036a41026a2208200241b5026a2d00003a00002002200241ac026a2f01003b01582002200241ae026a2d00003a005a2002200241b3026a2f00003b01a003200241af026a2800002103200241b6026a280100210b20022902a4022101200241b8036a41026a220a200241bc026a2d00003a00002002200241ba026a2f01003b01b803200241bd026a2800002109200241b4036a41026a2206200241c3026a2d00003a00002002200241c1026a2f00003b01b403200220013702c001200241ca016a20022d005a3a0000200220022f01583b01c801200220082d00003a00b203200220022f01a0033b01b003200241ac036a41026a220c200a2d00003a0000200220022f01b8033b01ac03200241a8036a41026a220d20062d00003a0000200220022f01b4033b01a803200241bc016a41026a20022d00c2013a0000200220022f01c0013b01bc0120022800c701210a20022800c3012108200241b8016a41026a20022d00b2033a0000200220022f01b0033b01b801200241d4006a41026a200c2d00003a0000200220022f01ac033b0154200241d0006a41026a200d2d00003a0000200220022f01a8033b0150410021060c010b200241b8016a41026a20022d00c2013a0000200241bc016a41026a200241a0026a41026a2d00003a0000200241d4006a41026a200241d8006a41026a2d00003a0000200241d0006a41026a200241a0036a41026a2d00003a0000200220022f00a0023b01bc01200220022f01c0013b01b801200220022f00583b0154200220022f01a0033b01502002200a20036b36022c2002200228022820036a360228410121062003210a0b200241cc006a41026a220c200241bc016a41026a220e2d00003a0000200241c8006a41026a220d200241b8016a41026a220f2d00003a0000200241c4006a41026a2210200241d4006a41026a2d00003a0000200241c0006a41026a2211200241d0006a41026a2d00003a0000200220022f01bc013b014c200220022f01b8013b0148200220022f01543b0144200220022f01503b01402002413c6a41026a2212200c2d00003a0000200220022f014c3b013c200241386a41026a220c200d2d00003a0000200220022f01483b0138200241346a41026a220d20102d00003a0000200220022f01443b0134200241306a41026a221020112d00003a0000200220022f01403b0130024020060d00200241ac036a41026a20122d00003a0000200241a8036a41026a200c2d00003a0000200e200d2d00003a0000200f20102d00003a0000200220022f013c3b01ac03200220022f01383b01a803200220022f01343b01bc01200220022f01303b01b801410121060c050b200220033602a403200220083602a003200241a0026a200241a0036a10b407200241b4036a41026a200241b9026a2d00003a0000200241b0036a41026a200241c0026a2d00003a00002002200241b0026a2f01003b01b8032002200241b2026a2d00003a00ba03200220022f00b7023b01b403200220022f01be023b01b003200241ac026a2802002103200241b3026a280000210b200241ba026a280100210920022802a802210c20022903a0022101200241c0016a200241c1026a41df0010bf091a024020014201510d00200241a8036a41026a20022d00ba033a0000200241bc016a41026a200241b4036a41026a2d00003a0000200241b8016a41026a200241b0036a41026a2d00003a0000200220022f01b8033b01a803200220022f01b4033b01bc01200220022f01b0033b01b801200241d8006a200241c0016a41df0010bf091a410021060240200a450d00200810310b200c210a0c050b200a450d010b200810310b410221060c030b1039000b103b000b200241c0016a41026a200241ac036a41026a2d00003a0000200241a0036a41026a200241a8036a41026a2d00003a0000200241b8036a41026a200241bc016a41026a2d00003a0000200241b4036a41026a200241b8016a41026a2d00003a0000200220022f01ac033b01c001200220022f01a8033b01a003200220022f01bc013b01b803200220022f01b8013b01b403200241a0026a200241d8006a41df0010bf091a0b2007450d00200510310b200020022f01c0013b0009200020022f01b8033b001f200041086a20063a0000200041146a2003360000200041106a200a3600002000410c6a2008360000200041186a20022f01a0033b00002000411b6a200b360000200041226a20093600002000410b6a200241c0016a41026a2d00003a00002000411a6a200241a0036a41026a2d00003a0000200041216a200241b8036a41026a2d00003a0000200041286a200241b4036a41026a2d00003a0000200020022f01b4033b0026200041296a200241a0026a41df0010bf091a200041003602000240200228020c450d00200410310b200241c0036a24000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a2202280200109605200228020010310f0b2000410c6a2202280200109605200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2202280200109605200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a2202280200109605200228020010310f0b200041106a2202280200109605200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a2202280200109605200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a2202280200109605200228020010310f0b200041c8006a2202280200109605200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a2202280200109705200228020010310f0b0b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d0020021096050b0f0b200041086a10ad01200041046a2202280200109705200228020010310b3400200041cae6c20036020420004100360200200041146a4102360200200041106a41dce6c200360200200041086a42123702000b3401017f230041106b220224002000410036020820004201370200200241003a000f20002002410f6a4101107e200241106a24000b4e01027f230041106b2202240002404110102f22030d001039000b200042103702042000200336020020024200370308200242808090bbbad6adf00d370300200020024110107e200241106a24000b130020004102360204200041c8e8c2003602000bb30202057f017e230041f0006b22022400200241106a22034200370300200241086a42083703002002411c6a22044180023b0100200241186a22054100360200200241013602682002410036020002404118102f2206450d0020062002290308370300200620022d001d3a00152006200329030037030820062005280200360210200620042d00004100473a00140240200228026822034105490d00200341186c450d00200228020410310b411c102f2203450d002000421c370204200020033602002000410110cb01200629030021072002200641086a29030037030820022007370300200020024110107e20022006280210360200200020024104107e200220062d00143a0000200020024101107e200220062d00153a0000200020024101107e20061031200241f0006a24000f0b1039000b4901027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024280c2d72f370300200020024110107e200241106a24000b810801167f23004180086b22012400200141f0076a200010df03200141d8026a20012802f007220220012802f807220310e00302402001280280052204450d002002200310bd020b20012802d8022105200141c8056a200141d8026a41047241a40210bf091a200141a0056a280200210620014198056a280200210720014194056a280200210820014190056a28020021092001418c056a280200210a20014188056a280200210b200128028405210c02402004450d00200141046a200141c8056a41a40210bf091a0b024020012802f407450d00200210310b200141f0076a200010e103200141d8026a20012802f007220020012802f807220310e203024020012802d8022202450d002000200310bd020b20014180036a280200210d200141fc026a280200210e200141f8026a280200210f200141f4026a2802002110200141f0026a2802002111200141ec026a2802002112200141e8026a2802002113200141e4026a2802002114200141d8026a41086a280200211520012802dc022103200141c8056a41086a22162001418c036a280200360200200120014184036a2902003703c8050240024020020d00410021020c010b200141a8026a41086a2016280200360200200120012903c8053703a8020b024020012802f407450d00200010310b200141c8056a200141046a41a40210bf091a200141b8026a41086a200141a8026a41086a280200360200200120012903a8023703b8020240024002402004450d002002450d01200141d8026a200141c8056a41a40210bf091a200141a4056a200d360200200141a0056a200e3602002001419c056a200f36020020014198056a201036020020014194056a201136020020014190056a20123602002001418c056a201336020020014188056a201436020020014184056a201536020020014180056a2003360200200141a8056a20012903b802370300200141b0056a200141c0026a280200360200200120023602fc04200120083602d002200120093602cc022001200a3602c8022001200b3602f8072001200c3602f407200120043602f0072007200141d8026a200141c8026a200141f0076a20052006109f050c020b2002450d0102402015450d002015410c6c21002002210403400240200441046a280200450d00200428020010310b2004410c6a2104200041746a22000d000b0b02402003450d002003410c6c450d00200210310b02402012450d0020124104742100201441086a2104034002402004280200450d002004417c6a28020010310b200441106a2104200041706a22000d000b0b0240201341ffffffff0071450d00201410310b02402011450d002010450d00201110310b200d450d01200e10310c010b0240200b450d00200410310b2008450d00200a10310b20014180086a24000bdd6903207f027e147f230041b00c6b22062400200641800c6a41086a22072001410c6a290000370300200641800c6a41106a2208200141146a290000370300200641800c6a41186a22092001411c6a290000370300200641d00b6a41086a220a2001412c6a290200370300200641d00b6a41106a220b200141346a290200370300200641d00b6a41186a220c2001413c6a290200370300200620012900043703800c200620012902243703d00b2001280200210d200641c8026a41186a220e200141dc006a290000370300200641c8026a41106a220f200141d4006a290000370300200641c8026a41086a2210200141cc006a290000370300200641c00a6a41086a2211200141ec006a290000370300200641c00a6a41106a2212200141f4006a290000370300200641c00a6a41186a2213200141fc006a290000370300200620012900443703c802200620012900643703c00a200641a80b6a41186a22142001419c016a290000370300200641a80b6a41106a221520014194016a290000370300200641a80b6a41086a22162001418c016a29000037030020062001290084013703a80b200641a0016a200141dc016a29000037030020064198016a200141d4016a29000037030020064190016a200141cc016a290000370300200641e8006a41206a200141c4016a290000370300200641e8006a41186a200141bc016a290000370300200641e8006a41106a200141b4016a290000370300200641e8006a41086a200141ac016a290000370300200620012900a401370368200641f00a6a41186a2217200141fc016a290000370300200641f00a6a41106a2218200141f4016a290000370300200641f00a6a41086a2219200141ec016a290000370300200620012900e4013703f00a200641a00a6a41186a221a2001419c026a290000370300200641a00a6a41106a221b20014194026a290000370300200641a00a6a41086a221c2001418c026a29000037030020062001290084023703a00a200641086a200141a4026a109901200641a8026a41186a2009290300370300200641a8026a41106a2008290300370300200641a8026a41086a200729030037030020064188026a41086a200a29030037030020064188026a41106a200b29030037030020064188026a41186a200c290300370300200641e8016a41086a2010290300370300200641e8016a41106a200f290300370300200641e8016a41186a200e290300370300200620062903800c3703a802200620062903d00b37038802200620062903c8023703e801200641c8016a41186a2013290300370300200641c8016a41106a2012290300370300200641c8016a41086a2011290300370300200641a8016a41086a2016290300370300200641a8016a41106a2015290300370300200641a8016a41186a2014290300370300200641c8006a41086a2019290300370300200641c8006a41106a2018290300370300200641c8006a41186a2017290300370300200620062903c00a3703c801200620062903a80b3703a801200620062903f00a370348200641286a41186a201a290300370300200641286a41106a201b290300370300200641286a41086a201c290300370300200620062903a00a370328200141d8026a2802002115200141d4026a280200210a200141d0026a280200211d200141cc026a280200211e200141c8026a280200211f200141c4026a280200210b200141c0026a2802002120200141bc026a2802002121200141b8026a2802002122200141b4026a2802002123200141b0026a2802002124200141ac026a2802002116200141a8026a280200211720012802a4022114200942003703002008420037030020074200370300200642003703800c200641c8026a41b5d8c800410d10a70220072010290000370300200620062900c8023703800c200641c8026a41cfd8c800410c10a70220092010290000370300200820062900c802370300200641c8026a200641800c6a412010b2024100212502402021450d0020062802d80321072006280290032109200128020021102006200b3602d002200620203602cc02200620213602c8022010200641c8026a4100200920074102461b20006a10df02410121250b200641800c6a200128020010f404200641c8026a20062802800c220b20062802880c220c10f50420062902cc022226420020062802c80222071b21272007410420071b211002400240024002402026422088a7410020071b2207200a4f0d00202742ffffffff0f8321262027422088a72207450d0120074104742109201041086a2107034002402007280200450d002007417c6a28020010310b200741106a2107200941706a22090d000c020b0b02400240200a0d002027a7220f41ffffffff0071200f470d04200f4104742207417f4c0d044104211102402007450d002007102f2211450d040b2007410476ad21262027422088a7210e0c010b2007200a6b220e41ffffffff0071200e470d03200e4104742207417f4c0d034104210902402007450d002007102f2209450d030b202742ffffffff0f83200aad4220868421262007410476210f2010211120092010200a4104746a200e41047410bf0921100b02402026422088a72207450d0020074104742109201141086a2107034002402007280200450d002007417c6a28020010310b200741106a2107200941706a22090d000b0b0240202642ffffffff0083500d00201110310b200ead422086200fad8421260b200620103602c802200620263702cc02200b200c200641c8026a10f60402402026422088a72207450d0020074104742109201041086a2107034002402007280200450d002007417c6a28020010310b200741106a2107200941706a22090d000b0b0240202642ffffffff0083500d00201010310b024020062802840c450d00200b10310b024002400240024002400240024002400240024002400240024002402016450d0020012802002113201441086a21072016410c6c221041746a210a410021090340200728020020096a21092007410c6a2107201041746a22100d000b200641d00b6a201310ef03200641c8026a20062802d00b20062802d80b10f003200a410c6e21180240024020062802d002220c0d0041e000102f220c450d104100210f41082110410021070c010b20062903c8022226422088a721072026a7210f20062802d40221100b20142016410c6c220a6a2111024002400240200a0d002014210a0c010b2014210a02400340200a220b280200220e450d01200b410c6a210a200b41046a290200212602402010417f6a220b2007200f6b71200b470d002010417f2011200a6b410c6d220b41016a22122012200b491b6a220b2010490d064100417f200b417f6a6776200b4102491b221241016a220b2012490d06200b20104d0d0002400240024002400240200b20106b220b0d002010210b0c010b2010200b6a220b2010490d18200bad420c7e2227422088a745410274210b2027a721120240024020100d00200641003602c8020c010b200641043602d0022006200c3602c80220062010410c6c3602cc020b200641800c6a2012200b200641c8026a104e20062802880c210b20062802800c4101460d0120062802840c210c200b410c6e210b0b2007200f4f0d0220072010200f6b22124f0d01200c2010410c6c6a200c2007410c6c10bf091a200720106a21070c020b200b0d150c160b200f410c6c2110200c200b20126b220f410c6c6a200c20106a2012410c6c10bf091a0b200b21100b200c2007410c6c6a220b2026370204200b200e3602002010417f6a200741016a712107200a2011470d000c030b0b200b410c6a210a0b2011200a460d0020142016410c6c6a210e0340200a410c6a210b0240200a41046a280200450d00200a28020010310b200b210a200e200b470d000b0b02402017450d002017410c6c450d00201410310b20062802d80b211220062802d00b211102400240200c0d002011201210bd020c010b2010417f6a220e2007200f6b712214410c6c41046a220a417f4c0d1002400240200a0d004101210b0c010b200a102f220b450d100b200641003602d0022006200a3602cc022006200b3602c802200641c8026a201410cb0102402007200f460d00200f210a0340200c200a410c6c6a220b280200200b280208200641c8026a10ce01200a41016a200e71220a2007470d000b0b2011201220062802c802220a20062802d002109f02024020062802cc02450d00200a10310b024002402007200f490d00024020102007490d002007210a410021070c020b2007201041c0cfc8001058000b2010210a2010200f490d040b0240200a200f460d00200a410c6c200f410c6c220a6b210b200c200a6a210a03400240200a41046a280200450d00200a28020010310b200a410c6a210a200b41746a220b0d000b0b02402007450d002007410c6c210a200c210703400240200741046a280200450d00200728020010310b2007410c6a2107200a41746a220a0d000b0b2010450d002010410c6c450d00200c10310b024020062802d40b450d00201110310b200641800c6a201310f103200641c8026a20062802800c220720062802880c221010bf02200641c8026a41086a280200210a20062802cc02210b20062802c802210c4108102f220e450d0e200642083702cc022006200e3602c8022006200b4100200c410146220c1b201841016a6a3602d00b200641c8026a200641d00b6a4104107e2006200a4100200c1b20096a3602d00b200641c8026a200641d00b6a4104107e2007201020062802c802220920062802d002109f02024020062802cc02450d00200910310b024020062802840c450d00200710310b200641980c6a4200370300200641900c6a4200370300200641800c6a41086a22074200370300200642003703800c200641c8026a419acbc400410310a7022007200641c8026a41086a2209290000370300200620062900c8023703800c200641c8026a41f4cfc400410d10a702200841086a2009290000370000200820062900c802370000200641d00b6a200641800c6a412010e202024020062802d00b22100d00410421104100210a4100210c0c060b4101210920062802d40b210c410021074100210a0240200641d00b6a41086a280200220e0e020504000b41002107200e2109034020072009410176220a20076a220b20132010200b4102746a280200491b21072009200a6b220941014b0d000b200e21090c030b2017450d0c2017410c6c450d0c201410310c0c0b41b087ca00411141a88cc4001068000b41facdc800412341d0cfc800103c000b2013201020074102746a280200220a460d06200920072013200a4b6a220a490d02200921070b2007200c470d040b200c41016a2207200c490d09200c41017422092007200920074b1b22074104200741044b1b220741ffffffff0371200746410274210920074102742107200c0d01200641003602c8020c020b200a20091048000b200641d0026a4104360200200620103602c8022006200c4102743602cc020b200641800c6a20072009200641c8026a104e200641880c6a280200210920062802800c4101460d0220062802840c2110200c21072009410276210c0b2010200a4102746a220941046a20092007200a6b41027410c0091a20092013360200200741016a21090b200641d00b6a41086a20093602002006200c3602d40b200620103602d00b20100d01200641980c6a4200370300200641900c6a4200370300200641800c6a41086a22074200370300200642003703800c200641c8026a419acbc400410310a7022007200641c8026a41086a2209290000370300200620062900c8023703800c200641c8026a41f4cfc400410d10a702200841086a2009290000370000200820062900c802370000200641800c6a412010bd020c020b2009450d030c020b200641980c6a4200370300200641900c6a4200370300200641800c6a41086a22074200370300200642003703800c200641c8026a419acbc400410310a7022007200641c8026a41086a2209290000370300200620062900c8023703800c200641c8026a41f4cfc400410d10a702200841086a2009290000370000200820062900c802370000200641203602cc022006200641800c6a3602c802200641d00b6a200641c8026a10e3022010450d00200c41ffffffff0371450d00201010310b200641d00b6a2001280200221a10a005200641c8026a20062802d00b20062802d80b10a10520062902cc022227422088a7410020062802c80222281b220741ffffffff00712007470d0120074104742209417f4c0d014104212902402009450d002009102f2229450d010b2009410476212a2028410420281b222b20074104746a212c02400240024020070d0041002119410021114100212d202b21170c010b41002119410021114100212d202b211703402017220741106a21172007280204222e450d01200741086a2902002126024002402007280200220720154b0d0002400240024002400240024002400240024002402026422088a72207450d00202e20074102746a2116202e210f0340200f280200210a024020110d004134102f2211450d1141002114201141003b0132201141003602000b200f41046a210f201121102014210e02400340201041046a211320102f01322212410274210c41002107417f2109024003400240200c2007470d00201221090c020b201020076a210b200941016a2109200741046a2107417f200b41046a280200220b200a47200b200a4b1b41016a0e03010300010b0b0240200e450d00200e417f6a210e201020094102746a41346a28020021100c010b0b024002402012410a4b0d00201241016a21070240200920124f0d00201320094102746a220b41046a200b20072009417f736a41027410c0091a0b201320094102746a200a360200201020073b01320c010b4100210e4104210702400240200941054f0d002009210b0c010b410521074105210b024002402009417b6a0e020201000b200941796a210b4101210e410621070c010b4100210b4101210e0b4134102f2209450d12200941003b013220094100360200200920102f013222122007417f736a220c3b0132200c410c4f0d042012200741016a221b6b200c470d05201320074102746a2802002118200941046a2013201b4102746a200c41027410bf091a201020073b013220092010200e1b220741046a210c20072f0132221241016a210e0240200b41016a221320124b0d00200c20134102746a200c200b4102746a200e200b417f736a41027410c0091a0b200c200b4102746a200a3602002007200e3b01320240024002402010280200220e0d00410021130c010b410021132018211c2009211b034020102f0130210b200e2f0132220a410b490d024100210c410421070240200b4105490d00200b210702400240200b417b6a0e020201000b200b41796a210b4101210c410621070c010b4100210b4101210c410521070b41e400102f2209450d15200941003b0132200941003602002009200e2f013222122007417f736a22103b01322010410c4f0d092012200741016a222f6b2010470d0a200e41046a221220074102746a2802002118200941046a2012202f410274222f6a201041027410bf091a200e20073b013220092f0132221041016a21122010410c4f0d0b200a20076b22072012470d0c201341016a2113200941346a200e202f6a41346a200741027410bf091a4100210702400340200920074102746a41346a280200220a20073b0130200a200936020020072007201049220a6a220720104b0d01200a0d000b0b2009200e200c1b220a41046a2110200a2f0132221241016a210c0240200b41016a220720124b0d00201020074102746a2010200b4102746a200b417f73200c6a41027410c0091a0b2010200b410274222f6a201c360200200a41346a21100240200b41026a221c201241026a22124f0d002010201c4102746a201020074102746a2007417f7320126a41027410c0091a0b201020074102746a201b360200200a200c3b01320240200720124f0d00200a202f6a41386a2107034020072802002210200b41016a220b3b01302010200a360200200741046a2107200c200b470d000b0b200e2110200e2802002207210e2018211c2009211b20070d000b0b2011450d0b41e400102f2207450d1320072011360234200741003b013220074100360200201141003b01302011200736020020142013470d0c20072f01322210410b4f0d0d201441016a21142007201041016a220a3b0132200741346a200a4102746a2009360200200720104102746a41046a20183602002009200a3b013020092007360200200721110c010b200e41046a220c200b41027422126a2109200b41016a2107200a41016a211002400240200b200a490d002009201c360200200e41346a2109200a41026a210a0c010b200c200741027422136a2009200b417f7320106a41027410c0091a2009201c3602002012200e41346a22096a41086a200920136a2007417f73200a41026a220a6a41027410c0091a0b20092007410274220b6a201b360200200e20103b01322007200a4f0d00200b200e6a41346a210903402009280200221020073b01302010200e360200200941046a2109200a200741016a2207470d000b0b201941016a21190b200f2016470d000b0b202642ffffffff0383500d0a202e10310c0a0b200c410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2010410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2012410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b0240202d202a470d00202a41016a2209202a490d06202a41017422102009201020094b1b22094104200941044b1b220941ffffffff007120094641027421102009410474210902400240202a0d00200641003602c8020c010b200620293602c802200641043602d0022006202a4104743602cc020b200641800c6a20092010200641c8026a104e20062802880c2109024020062802800c4101470d002009450d070c060b20062802840c21292009410476212a0b2029202d4104746a2209202e36020420092007360200200941086a2026370200202d41016a212d0b2017202c470d000c020b0b202c2017460d000340201741106a21070240201741086a28020041ffffffff0371450d00201741046a28020010310b20072117202c2007470d000b0b02402028450d00202742ffffffff0083500d00202b10310b20062802d80b210c20062802d00b210b0240024020290d00200b200c10bd020c010b202d4104744104722207417f4c0d022007102f2209450d01200641003602d002200620073602cc02200620093602c802200641c8026a202d10cb010240202d450d002029202d4104746a210a202921100340200620102802003602800c200641c8026a200641800c6a4104107e20102802042107200641c8026a201028020c220910cb01201041106a211002402009450d00200941027421090340200620072802003602800c200641c8026a200641800c6a4104107e200741046a21072009417c6a22090d000b0b2010200a470d000b0b200b200c20062802c802220720062802d002109f02024020062802cc02450d00200710310b0240202d450d00202d4104742109202941086a210703400240200728020041ffffffff0371450d002007417c6a28020010310b200741106a2107200941706a22090d000b0b202a41ffffffff0071450d00202910310b024020062802d40b450d00200b10310b02402011450d0020112109024003402014450d012014417f6a2114201120112f01324102746a41346a2802002111200928023421090c000b0b02402019450d004100211041012107024002400340201020092f0132490d0102402009280200220a0d0020091031410021090c030b20092f01302110200910312007417f6a2107200a21090c000b0b201041016a210a200920104102746a41046a280200211820074101460d002009200a4102746a41346a280200210902402007450d000340200741016a221020074f210a2009280234210920102107200a0d000b0b4100210a0b200641fd026a21160340200641c8026a2018201a10a205200641800c6a20062802c802220b20062802d00210f50420062902840c2226422088a7410020062802800c22071b2110024020062802cc02450d00200b10310b201041ffffffff00712010470d0420104104742210417f4c0d040240024020100d00410421120c010b2010102f2212450d040b2010410476210e2007410420071b222f2026420020071b2227422088a722074104746a210b4100210c02400240024020070d00202f210741002113410021140c010b202f2107410021144100211303400240200741046a28020022100d00200741106a21070c020b200741086a2902002126024002402007280200220f20154b0d00201441016a211420132026422088a76a21132026a7450d01201010310c010b0240200c200e470d00200e41016a2211200e490d09200e41017422172011201720114b1b22114104201141044b1b221141ffffffff007120114641027421172011410474211102400240200e0d00200641003602c8020c010b200620123602c802200641043602d0022006200e4104743602cc020b200641800c6a20112017200641c8026a104e20062802880c210e024020062802800c4101470d00200e450d0a0c090b20062802840c2112200e410476210e0b2012200c4104746a221120103602042011200f360200201141086a2026370200200c41016a210c0b200741106a2207200b470d000c020b0b200b2007460d000340200741106a21100240200741086a280200450d00200741046a28020010310b20102107200b2010470d000b0b0240202742ffffffff0083500d00202f10310b02400240200c0d00200641c8026a2018201a10a20520062802c802220720062802d00210bd02024020062802cc02450d00200710310b4101212f0c010b200641800c6a2018201a10a205200c41047422104104722207417f4c0d0520062802880c211120062802800c210f2007102f220b450d04200641003602d002200620073602cc022006200b3602c802200641c8026a200c10cb01201220106a210b201221070340200620072802003602d00b200641c8026a200641d00b6a4104107e200741046a2802002007410c6a280200200641c8026a10ce01200741106a2207200b470d000b200f201120062802c802220720062802d002109f02024020062802cc02450d00200710310b024020062802840c450d00200f10310b201241086a2107034002402007280200450d002007417c6a28020010310b200741106a2107201041706a22100d000b4100212f200e41ffffffff0071450d00201210310b200641f00a6a2018201a10cf02200641c8026a20062802f00a221020062802f80a221810d002200641d00b6a41086a2230200641c8026a41086a220b290300370300200641d00b6a41106a2231200641c8026a41106a222c290300370300200641d00b6a41186a2232200641c8026a41186a220f290300370300200641d00b6a41206a2233200641c8026a41206a222e290300370300200641d00b6a41286a2234200641c8026a41286a222d280200360200200641a80b6a41086a2235201641086a222a290000370300200641a80b6a41106a2236201641106a2229290000370300200641a80b6a41186a2237201641186a2228290000370300200641a80b6a411f6a22382016411f6a222b280000360000200620062903c8023703d00b200620162900003703a80b4100211141002117024020062d00fc0222074102460d0020062802f802211c20062802f402211b200641800c6a41286a2034280200360200200641800c6a41206a2033290300370300200641800c6a41186a2032290300370300200641800c6a41106a2031290300370300200641800c6a41086a2030290300370300200641c00a6a41086a2035290300370300200641c00a6a41106a2036290300370300200641c00a6a41186a2037290300370300200641c00a6a411f6a2038280000360000200620062903d00b3703800c200620062903a80b3703c00a20132111201421170b202d200641800c6a41286a280200360200202e200641800c6a41206a290300370300200f200641800c6a41186a290300370300202c200641800c6a41106a290300370300200b200641800c6a41086a290300370300200620062903800c3703c8022006201c20116b221c3602f8022006201b20176b221b3602f402200620073a00fc02201620062903c00a370000202a200641c00a6a41086a2903003700002029200641c00a6a41106a2903003700002028200641c00a6a41186a290300370000202b200641c00a6a411f6a2800003600000240024020074102470d002010201810bd020c010b200641003602b00b200642013703a80b200620062802e8023602d00b200641a80b6a200641d00b6a4104107e200620062802ec023602d00b200641a80b6a200641d00b6a4104107e200620062802f0023602d00b200641a80b6a200641d00b6a4104107e2006201b3602d00b200641a80b6a200641d00b6a4104107e2006201c3602d00b200641a80b6a200641d00b6a4104107e0240024020074101460d00200641003a00d00b200641a80b6a200641d00b6a4101107e0c010b200641013a00d00b200641a80b6a200641d00b6a4101107e4120102f2207450d05200642203702d40b200620073602d00b200641d00b6a20164120107e200641a80b6a20062802d00b220720062802d80b107e20062802d40b450d00200710310b20062903c80221262006200b2903003703d80b200620263703d00b200641a80b6a200641d00b6a4110107e20062903d80221262006200f2903003703d80b200620263703d00b200641a80b6a200641d00b6a4110107e2010201820062802a80b220720062802b00b109f0220062802ac0b450d00200710310b024020062802f40a450d00201010310b2019417f6a21190240202f450d000240200c450d00200c4104742110201241086a2107034002402007280200450d002007417c6a28020010310b200741106a2107201041706a22100d000b0b200e41ffffffff0071450d00201210310b2019450d014101210702400340200a20092f0132490d010240200928020022100d0020091031410021090c030b20092f0130210a200910312007417f6a2107201021090c000b0b200a41016a21102009200a4102746a41046a2802002118024020074101470d002010210a0c010b200920104102746a41346a280200210902402007450d000340200741016a221020074f210a2009280234210920102107200a0d000b0b4100210a0c000b0b034020092802002107200910312007210920070d000b0b200641c8026a201a10a30520062802d002210920062802c8022107200620153602800c20072009200641800c6a4104109f02024020062802cc02450d00200710310b20012802002119200641800c6a41186a222b4200370300200641800c6a41106a22304200370300200641800c6a41086a22284200370300200642003703800c200641c8026a41f3c6c000410610a7022028200641c8026a41086a2218290000370300200620062900c8023703800c200641c8026a41ec90c900410610a702200841086a2018290000370000200820062900c8023700002006200641800c6a412010c002202420224104746a210c20242107024002402022450d002006280204410020062802001b2133202241047420246a41706a21382006419d036a2136200641fd026a210a200641f00a6a41206a2137200641ec026a2134200641c8026a4104722135200641a80b6a41047221082024210703402007211003400240201041046a28020022090d00201041106a21070c030b201041086a2902002126200641980b6a20192010280200221a10cf02200641c8026a20062802980b220b20062802a00b10d002200641d00b6a41086a220e2018290300370300200641d00b6a41106a220f200641c8026a41106a221b290300370300200641d00b6a41186a2211200641c8026a41186a221c290300370300200641d00b6a41206a2212200641c8026a41206a222f290300370300200641d00b6a41286a2213200641c8026a41286a222c280200360200200641a80b6a41086a2214200a41086a222e290000370300200641a80b6a41106a2215200a41106a222d290000370300200641a80b6a41186a2216200a41186a222a290000370300200641a80b6a411f6a2217200a411f6a280000360000200620062903c8023703d00b2006200a2900003703a80b024020062d00fc02222941024622070d0020062802f802213220062802f4022131200641800c6a41286a2013280200360200200641800c6a41206a2012290300370300202b20112903003703002030200f2903003703002028200e290300370300200641f00a6a41086a2014290300370300200641f00a6a41106a2015290300370300200641f00a6a41186a2016290300370300200641f00a6a411f6a2017280000360000200620062903d00b3703800c200620062903a80b3703f00a0b0240200628029c0b450d00200b10310b024020070d00200641c00a6a41286a2213200641800c6a41286a280200360200200641c00a6a41206a2214200641800c6a41206a290300370300200641c00a6a41186a2215202b290300370300200641c00a6a41106a22162030290300370300200641c00a6a41086a22172028290300370300200641a00a6a41086a2207200641f00a6a41086a290300370300200641a00a6a41106a220b200641f00a6a41106a290300370300200641a00a6a41186a2212200641f00a6a41186a290300370300200620062903800c3703c00a200620062903f00a3703a00a2006419c0a6a41026a2222203741026a2d00003a0000200620372f00003b019c0a200620093602ac0b200620333602a80b203141016a2139200620263703b00b20322026422088a7223a6a213b0240024020294101460d0020114200370300200f4200370300200e4200370300200642003703d00b0c010b20112012290300370300200f200b290300370300200e2007290300370300200620062903a00a3703d00b0b200641800c6a200810f204203541186a2011290300370200203541106a200f290300370200203541086a200e290300370200203520062903d00b370200203420062903800c370000203441086a2028290300370000203441106a2030290300370000203441186a202b290300370000200620333602c802200641a00a6a200641c8026a10f304202c2013280200360200202f2014290300370300201c2015290300370300201b201629030037030020182017290300370300200a20062903a00a370000202e2007290300370000202d200b290300370000202a2012290300370000200620062903c00a3703c802200641013a00fc022006203b3602f802200620393602f402203641026a20222d00003a0000203620062f019c0a3b0000200641800c6a2019201a10cf0220062802800c220720062802880c200641c8026a10a405024020062802840c450d00200710310b2026a7210b200641f00a6a2019201a10a20520062802f80a210e20062802f00a2107200641003602880c200642013703800c200620333602c802200641800c6a200641c8026a4104107e2009203a200641800c6a10ce01201820062802880c360200200620062903800c3703c8022007200e200641c8026a10a802024020062802f40a450d00200710310b0240200b450d00200910310b200641c8026a201a10a005200641800c6a20062802c802220920062802d00210a10520062902840c420020062802800c22071b2126024020062802cc02450d00200910310b2007410420071b211202400240024020264220882227a72211450d0020122011417f6a4104746a22072802002033460d010b4104102f2207450d072007201936020002400240024020112026a7460d00202621270c010b201141016a22092011490d0a2011410174220b20092009200b491b22094104200941044b1b220941ffffffff0071200946410274210b200941047421090240024020110d00200641003602c8020c010b200641043602d002200620123602c802200620274204863e02cc020b200641800c6a2009200b200641c8026a104e20062802880c210920062802800c4101460d0120062802840c21122026428080808070832009410476ad8421272026422088a721110b201220114104746a2209200736020420092033360200200941086a42818080801037020020274280808080107c22264220882227a721110c020b2009450d080c070b2007410c6a2109200741046a210e0240200728020c220b200741086a280200470d00200e200b10a5052009280200210b0b200e280200200b4102746a20193602002009200928020041016a3602000b200641800c6a201a10a0052027a74104744104722207417f4c0d0620062802880c211420062802800c21132007102f2209450d05200641003602d002200620073602cc02200620093602c802200641c8026a201110cb012011410474210e02402011450d002012200e6a210f2012210b03402006200b2802003602f00a200641c8026a200641f00a6a4104107e200b2802042107200641c8026a200b28020c220910cb01200b41106a210b02402009450d00200941027421090340200620072802003602f00a200641c8026a200641f00a6a4104107e200741046a21072009417c6a22090d000b0b200b200f470d000b0b2013201420062802c802220720062802d002109f02024020062802cc02450d00200710310b024020062802840c450d00201310310b02402011450d00201241086a210703400240200728020041ffffffff0371450d002007417c6a28020010310b200741106a2107200e41706a220e0d000b0b0240202642ffffffff0083500d00201210310b201041106a210720382010470d020c040b02402026a7450d00200910310b201041106a2210200c470d000c030b0b0b200c2007460d000340200741106a21090240200741086a280200450d00200741046a28020010310b20092107200c2009470d000b0b0240202341ffffffff0071450d00202410310b201d417f4c0d01410121070240201d450d00201d102f2207450d010b2007201f201d10bf092107200641c8026a41086a200d360200200641d4026a20062903a802370200200641dc026a200641a8026a41086a290300370200200641e4026a200641a8026a41106a290300370200200641ec026a200641a8026a41186a290300370200200641f4026a200629038802370200200641fc026a20064188026a41086a29030037020020064184036a20064188026a41106a2903003702002006418c036a20064188026a41186a290300370200200641013602cc02200641073a00c802200641ac036a200641e8016a41186a290300370200200641a4036a200641e8016a41106a2903003702002006419c036a200641e8016a41086a29030037020020064194036a20062903e801370200200641b4036a20062903c801370200200641bc036a200641c8016a41086a290300370200200641c4036a200641c8016a41106a290300370200200641cc036a200641c8016a41186a290300370200200641d4036a20062903a801370200200641dc036a200641a8016a41086a290300370200200641e4036a200641a8016a41106a290300370200200641ec036a200641a8016a41186a290300370200200641ac046a200641a0016a290300370200200641a4046a20064198016a2903003702002006419c046a20064190016a29030037020020064194046a20064188016a2903003702002006418c046a200641e8006a41186a29030037020020064184046a200641e8006a41106a290300370200200641fc036a200641e8006a41086a290300370200200641f4036a2006290368370200200641cc046a200641c8006a41186a290300370200200641c4046a200641c8006a41106a290300370200200641bc046a200641c8006a41086a290300370200200641b4046a2006290348370200200641ec046a200641286a41186a290300370200200641e4046a200641286a41106a290300370200200641dc046a200641286a41086a290300370200200641d4046a20062903283702002006418c056a200641086a41186a29020037020020064184056a200641086a41106a290200370200200641fc046a200641086a41086a290200370200200641f4046a2006290208370200200641a4056a2005360200200641a0056a20043602002006419c056a201d36020020064198056a201d36020020064194056a2007360200200641c8026a10a902200128020021072006201d3602d0022006201e3602cc022006201f3602c8022007200641c8026a200010e00202402025202145720d002020450d00202110310b02402003280208450d00200328020010310b02402002280208450d00200228020010310b200641b00c6a24000f0b1039000b103b000b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a41babcc600411210a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bbd0605057f017e017f027e027f230041e0006b220324002003200236021420032001360210200341186a2001200210d20202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb010240024020032802080d0041042106024002400240200328020c2202200328022c4104762201200120024b1b22014104742207417f4c0d0002402001450d002007102f2206450d020b2001ad2108024002402002450d000340200328022c22014104490d0520032802282207280000210920032001417c6a36022c2003200741046a3602282003200341286a10bb0102402003280200450d00200341003602480c060b200341c8006a200341286a200328020410c20120032802482207450d05200329024c210a02402008422088220ba722012008a7470d00200141016a220c2001490d042001410174220d200c200c200d491b220c4104200c41044b1b220c41ffffffff0071200c46410274210d200c410474210c0240024020010d00200341003602480c010b20034104360250200320063602482003200b4204863e024c0b200341386a200c200d200341c8006a104e2003280240210c20032802384101460d03200328023c2106200842808080807083200c410476ad8421080b200620014104746a2201200736020420012009360200200141086a200a37020020084280808080107c21082002417f6a22020d000b0b2006450d0420002008370204200020063602000c050b200c0d010b103b000b1039000b02402008422088a72201450d0020014104742102200641086a210103400240200128020041ffffffff0371450d002001417c6a28020010310b200141106a2101200241706a22020d000b0b200842ffffffff0083500d00200610310b20034100360240200342013703382003410c3602342003200341106a3602302003200341386a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341306a360258200341c4006a41d8ddc900200341c8006a10401a2003280238200328024010d9040240200328023c450d00200328023810310b200041003602000b2005450d00200410310b200341e0006a24000bca0201027f230041e0006b22032400200341086a419aa7c600410410a702200341186a419ea7c600411310a702200341003602402003420137033820032001360250200341386a200341d0006a4104107e20032002360250200341386a200341d0006a4104107e2003200328023822022003280240220110c802370348200341dc006a200220016a360200200320023602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a1088010240200328023c450d00200210310b024002402003280230220141206a2202417f4c0d000240024020020d00410121040c010b2002102f2204450d020b2000410036020820002002360204200020043602002000200341086a4110107e2000200341186a4110107e2000200328022822022001107e0240200328022c450d00200210310b200341e0006a24000f0b103b000b1039000b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a41acbcc600410e10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bf90202027f017e230041206b220324002003410036020820034201370300200320022802203602102003200341106a4104107e200320022802243602102003200341106a4104107e200320022802283602102003200341106a4104107e2003200228022c3602102003200341106a4104107e200320022802303602102003200341106a4104107e02400240024020022d00344101460d00200341003a00102003200341106a4101107e0c010b200341013a00102003200341106a4101107e4120102f2204450d012003422037021420032004360210200341106a200241356a4120107e2003200328021022042003280218107e2003280214450d00200410310b200229030021052003200241086a290300370318200320053703102003200341106a4110107e200229031021052003200241186a290300370318200320053703102003200341106a4110107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000f0b1039000bdc0101037f230041206b22022400024002400240200041046a2802002001470d00200141016a22032001490d02200141017422042003200420034b1b22034104200341044b1b220341ffffffff03712003464102742104200341027421030240024020010d00200241003602100c010b200241186a410436020020022001410274360214200220002802003602100b200220032004200241106a104e200241086a280200210120022802004101460d0120002002280204360200200041046a20014102763602000b200241206a24000f0b2001450d001039000b103b000bc60b01127f230041c0076b22022400024002400240024002400240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a36020041002107200241003602f0042003417b6a2103200241f0046a41047221080240034020062007460d01200420076a220941046a2d0000210a200120033602042001200941056a360200200820076a200a3a00002002200741016a22093602f0042003417f6a21032009210720094120470d000b200241b8076a41026a2207200241fd046a2d00003a0000200241b4076a41026a220320024184056a2d00003a0000200220022f01f4043b01bc07200220022d00f6043a00be072002200241fb046a2f00003b01b807200220024182056a2f01003b01b407200241fe046a280100210420022800f704210620024185056a2800002108200220024189056a2800003602c80220022002418c056a2800003600cb0220024190056a280200210b200220022d00be073a00a607200220022f01bc073b01a407200241b0076a41026a220920072d00003a0000200220022f01b8073b01b007200241ac076a41026a220720032d00003a0000200220022f01b4073b01ac07200241a8076a41026a220320022d00ca023a0000200220022f01c8023b01a80720022800cb02210c200241a0076a41026a220a20092d00003a0000200220022f01b0073b01a0072002419c076a41026a220920072d00003a0000200220022f01ac073b019c0720024198076a41026a220720032d00003a0000200220022f01a8073b019807200241c4026a41026a20022d00a6073a0000200220022f01a4073b01c402200241c0026a41026a200a2d00003a0000200220022f01a0073b01c002200241bc026a41026a20092d00003a0000200220022f019c073b01bc02200241b8026a41026a20072d00003a0000200220022f0198073b01b802200241f0046a200110e70120022802f0044101460d02200241c8026a200241f0046a41047241a40210bf091a200241f0046a200110a70520022802f0042207450d03200241f8046a2209280200210320022802f404210d200241f0046a200110a70520022802f004220a0d04200041003602a8020c050b200041003602a8020c050b200041003602a8020c040b200041003602a8020c030b200041003602a8020c020b2009280200210902400240024002402001280204220e4104490d0020022802f404210f2001280200221028000021112001200e417c6a22123602042001201041046a36020020124104490d01201028000421132001200e41786a22123602042001201041086a36020020124104490d02201028000821122001200e41746a36020420012010410c6a360200200241086a41026a2201200241c0026a41026a2d00003a0000200241046a41026a220e200241bc026a41026a2d00003a0000200241026a2210200241b8026a41026a2d00003a0000200220022f01c4023b010c200220022f01c0023b0108200220022f01bc023b0104200220022f01b8023b01002002200241c4026a41026a2d00003a000e200241106a200241c8026a41a40210bf091a20002005360200200041046a200241106a41a40210bf091a200041c8026a2012360200200041c4026a2013360200200041c0026a2011360200200041bc026a2009360200200041b8026a200f360200200041b4026a200a360200200041b0026a20033602002000200d3602ac02200020073602a802200041cf026a2006360000200020043600d602200041cc026a20022f010c3b0100200041ce026a20022d000e3a0000200020022f01083b00d302200041d5026a20012d00003a0000200020083600dd02200041e8026a200b360000200041e4026a200c360000200041dc026a200e2d00003a0000200020022f01043b00da02200041e3026a20102d00003a0000200020022f01003b00e1020c050b200041003602a8020c020b200041003602a8020c010b200041003602a8020b2009450d00200a10310b2003450d00200710310b200241c0076a24000bb90302057f017e230041106b22022400200241086a200110bb01024002400240024002402002280208450d00200041003602000c010b0240200228020c2203418080808002490d00200041003602000c010b02400240024002400240200341086a22042003490d00200128020422052004417f6a4103762204490d030240024020040d00410121060c010b200410352206450d07200128020421050b20052004490d0220062001280200200410bf0921052001280204220620044f0d0120042006419cb4c0001061000b200041003602000c040b2001200620046b3602042001200128020020046a3602002005450d0102402004ad22074220862007842207422088a72204410374220141ffffffff014b0d0020054100200141037520014108481b6a2201450d06200120054f0d030b02402007a7450d00200510310b200041003602000c030b200610310b200041003602000c010b2004410674220141037622042003490d03200020053602002000200742208620014107712003410374722001200420034b1bad843702040b200241106a24000f0b1039000b41f0ddc900412f41a0dec9001068000b41c3f4c300412f41f4f4c300103c000b3400200041a4bcc20036020420004100360200200041146a4103360200200041106a41c8ebc200360200200041086a420d3702000bb00101027f230041f0026b22022400200241003602a80202404101102f2203450d002000420137020420002003360200200241003a00ef022000200241ef026a4101107e024020022802a8022200450d00024020022802b0022203450d00200010310b200220033602b002200220003602a802200241b4026a28020021000240200241bc026a2802002203450d00200010310b200220033602bc02200220003602b4020b200241f0026a24000f0b1039000bb10302047f017e23004180016b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41b490c700410b10a702200141e8006a41c093c700411310a7022002200141e8006a41086a290000370300200320012900683703002001412036022c2001200141086a360228200141306a200141086a412010d20202400240200128023022030d00410021020c010b200128023421042001200141306a41086a28020036024420012003360240200141e8006a200141c0006a10e70502400240200128026822020d004100210220014100360250200142013703482001410c36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c2001419086c4003602682001200141d8006a360278200141e4006a41d8ddc900200141e8006a10401a2001280248200128025010d9040240200128024c450d00200128024810310b0c010b200129026c21050b2004450d00200310310b0240024020020d0020004100360208200042013702000c010b20002005370204200020023602000b20014180016a24000bfc0401047f230041c0006b2202240041b4b1c200210341192104411721050240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff01710e19000102030405060708090a0b0c0d0e0f101112131415161718000b2002411c6a41013602002002420137020c200241d897ca0036020820024104360224200241d8e3c8003602202002200241206a360218200241086a41b8ebc2001047000b418cacc200210341112104410021050c160b41a8acc2002103411c2104410121050c150b41ccacc2002103410221050c140b41f0acc200210341182104410321050c130b4190adc200210341142104410421050c120b41acadc200210341202104410521050c110b41d4adc2002103410d2104410621050c100b41ecadc200210341132104410721050c0f0b41f080c500210341102104410821050c0e0b4190aec200210341142104410921050c0d0b41acaec2002103410f2104410a21050c0c0b41c4aec2002103411b2104410b21050c0b0b41e8aec200210341172104410c21050c0a0b4188afc200210341112104410d21050c090b41a4afc200210341132104410e21050c080b41c0afc2002103410e2104410f21050c070b41d8afc200210341112104411021050c060b41f4afc2002103411a2104411121050c050b4198b0c2002103410d2104411221050c040b41b0b0c200210341202104411321050c030b41d8b0c200210341152104411421050c020b41f8b0c200210341182104411521050c010b4198b1c200210341132104411621050b20004183203b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bcb0e010e7f230041a0016b2202240002400240024002400240024002400240024002400240024002402001280204220341037622040d004101210541002106410021070c010b024002402003410676220820034138714100476a22090d0041012105410021060c010b2002410036024020024188016a20094108200941084b1b4101200241c0006a104e20024188016a41086a280200210602402002280288014101470d002006450d040c0d0b200228028c0121050240200620094f0d002006410174220a2009200a20094b1b220a4108200a41084b1b210a0240024020060d00200241003602400c010b200241c0006a41086a410136020020022006360244200220053602400b20024188016a200a4101200241c0006a104e20024190016a28020021062002280288014101460d03200228028c0121050b2005210a024020094102490d00200541002009417f6a220910c10920096a210a0b200a41003a00000b200541002008200341c0004922091b6a210b024002402004200441077120091b41ff0171220a0d002005200b460d010b41002104200521090340200920092d0000417e200441077177713a000020094100200441ff0171220841016a2204410376200841074922081b6a21092004200441077120081b220441ff0171200a470d00200b2009470d000b0b200341787121072001280204220341037621040b20012802002109200220074103762208360270200220043602880120082004470d0820034107710d0741002101200741067620074138714100476a210a2007450d022008410771220445410374200472210c200a0d0341f8fac90021044100210a0c060b20060d090b103b000b4100210c200a0d0141f8fac9002104410021014100210a0c030b41002101200c4108460d010b2005200a417f6a220a6a21010b200521040b4100210d20082003410771220e6a220b410376200b4107714100476a210b02400240024002402008200e72450d00200b0d0141f8fac90021094100210b0c030b200b0d014100210b41f8fac90021094100210d0c020b200820036a4107712208454103742008724108460d010b2009200b417f6a220b6a210d0b0240200b200a200a200b4b1b2208450d000340200420092d00003a0000200441016a2104200941016a21092008417f6a22080d000b0b2001450d02200d450d02200120012d0000417f417f200c41077174417f73200c4108461b2209417f737122043a000020012004200d2d0000200971723a00000c020b200241d4006a4220370200200241d0006a20033602002002410036025c2002200936024c200241203602482002200736024420022005360240200241186a200241c0006a10820520022802182209450d01200241cc006a210e200228021c21080340200241106a200e10ad0520022802102204450d022004200228021410ae05210420024105360264200241fceec30036026020022008410376220a410020091b220336026c02400240024002402003417f6a41204f0d004100210b200a200841077122036a220141037620014107714100476a21010240200a200372450d00200a20086a410771220845410374200872210b0b2001450d030240024020030d00200b4108470d00200920016a21084100210a0c010b024002400240200b4108470d00200941016a210f2001417f6a2108200c41807e71200372210c4100210a0c010b024020030d0020092001417f6a22086a210a0c020b20014101460d04200941016a210f2001417e6a2108200c41807e71200372210c200120096a417f6a210a200b210d0b02400240200c41ff01710d00200c410771210b41ff0121030c010b417f4100200c6b41077174417f73200c410771220b7421030b200920092d00002003417f73712004200b74200371723a000002404108200c6b41ff01712209411f4d0d00200d210b200f2109410021040c010b20042009762104200d210b200f21090b024020080d00200b210d0c040b200920086a2108200b210d0b0340200920043a0000200441087621042008200941016a2209470d000c030b0b20024188016a41146a410136020020024194016a4116360200200241f0006a41146a410336020020024204370274200241b49bc800360270200241b39bc800360290012002410436028c01200220024188016a360280012002200241ec006a360298012002200241e0006a36028801200241f0006a41d49bc8001047000b200920092d0000417f417f200b20036b220841077174417f7320037420084108461b2208417f73712004200374200871723a00002009210c0c010b200a450d00200a200a2d0000417f417f200d41077174417f73200d41ff01714108461b2209417f73712009200471723a00000b200241086a200241c0006a108205200228020c210820022802082209450d020c000b0b200241d4006a4100360200200241d0006a41f8fac90036020020024201370244200241e4eec300360240200241f0006a20024188016a200241c0006a41eceec300108306000b200020063602082000200736020420002005360200200241a0016a24000f0b1039000b7e01047f024002402001280204220241037622030d00410021020c010b2001200128020822042003200320044b1b2204200241077122056a22034107712002200441037422046b417871723602042001200128020022024100200341037620034108491b6a360200200520047221010b20002001360204200020023602000be10401077f230041c0006b220224002002410436020420024181efc30036020020022001410376220336020c0240024002400240024002402003417f6a41204f0d00410021042003200141077122056a220641037620064107714100476a21064100210702402003200572450d00200320016a41077122034541037420037221070b024020060d0041f8fac900210841002103410021010c040b024020050d0020074108470d002006210320002108410021010c040b024020074108470d00200041016a21082006417f6a210320002104410021010c040b20050d0120002006417f6a22036a210141002104200021080c020b200241286a41146a4101360200200241346a4116360200200241106a41146a410336020020024204370214200241b49bc800360210200241b39bc8003602302002410436022c2002200241286a36022020022002410c6a36023820022002360228200241106a41d49bc8001047000b20064101460d02200041016a21082006417e6a2103200620006a417f6a2101200021040b417f417f200741077174417f7320074108461b20012d00007121010b02402003450d002008417f6a210603402001410874200620036a2d00007221012003417f6a22030d000b0b2004450d0141ff0121032001410820056b41ff0171220674410020064120491b210102400240200541ff01710d00200541077121060c010b417f410020056b41077174417f73200541077122067421030b2001200320042d0000712006767221010c010b417f417f200720056b220341077174417f7320057420034108461b20002d00007120057621010b200241c0006a240020010bba0201067f230041206b2202240002400240200041046a2802002203200041086a28020022046b2001410c6a280200200128020822056b2206490d00200028020021030c010b0240200420066a22072004490d00200341017422042007200420074b1b22044108200441084b1b21040240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220044101200241106a104e200241086a2802002104024020022802004101460d00200020022802042203360200200041046a2004360200200041086a28020021040c020b2004450d001039000b103b000b200320046a2005200610bf091a20012001410c6a280200360208200041086a2200200028020020066a3602000240200141046a280200450d00200128020010310b200241206a24000b910301037f230041306b2202240020022001360214024002400240024020014180808080024f0d0002400240200141037620014107714100476a22030d00410121040c010b2003102f2204450d020b20002003360208200041003602042000200436020020022001360210200341ffffffff01712003470d0220022003410374220336021420032001490d03200020014103743602040240200141037641ffffff1f7120014107714100476a2201450d000340200441003a0000200441016a21042001417f6a22010d000b0b200241306a24000f0b2002410c6a41013602002002412c6a41023602002002420237021c200241ecf6c300360218200241e8f6c30036020820024101360204200220023602282002200241146a360200200241186a4194f6c2001047000b1039000b41ccf6c300411c419cf7c3001068000b2002410c6a41013602002002412c6a41023602002002420237021c200241ecf6c30036021820024101360204200220023602282002200241146a3602082002200241106a360200200241186a41acf7c3001047000bd70701087f23004190026b22032400200341c0006a22044200370300200341386a22054200370300200341286a41086a2206420037030020034200370328200341c8006a41f3c6c000410610a7022006200341c8006a41086a220729000037030020032003290048370328200341c8006a41ec90c900410610a7022004200729000037030020052003290048370300200341106a200341286a412010c00220044200370300200542003703002006420037030020034200370328200341c8006a41b5d8c800410d10a7022006200729000037030020032003290048370328200341c8006a41cfd8c800410c10a7022004200729000037030020052003290048370300200341c8006a200341286a412010b202200341c8006a2001108608200341086a20032802482204200328025010c0020240200328024c450d00200410310b200341286a2001109004200341c8006a20032802282205200328023010910402400240200328025422074102470d00410421084100210441002109410021070c010b200328024c41ffffffff017121092003280258210a20032802482108200328025021040b0240200328022c450d00200510310b02400240024002400240024002402004450d00200441037441786a41037641016a210641002105200821040340200428020020024f0d02200441086a21042006200541016a2205470d000b0b024020074101470d00200a20024f0d020b200341186a200110d902200341c8006a20032802182204200328022010da02200341306a2205200341c8006a41096a290000370300200341386a2202200341c8006a41116a290000370300200341c0006a2206200341c8006a41196a2900003703002003200329004937032820032d00484101460d02200041003a00000c030b20050d032007450d03200a2002490d030b200041003a00000c030b200041013a000020002003290328370001200041096a2005290300370000200041116a2002290300370000200041196a20062903003700000b200328021c450d01200410310c010b200341186a20012004280200109204200341c8006a20032802182204200328022010da02200341306a2205200341c8006a41096a290000370300200341386a2202200341c8006a41116a290000370300200341c0006a2206200341c8006a41196a290000370300200320032900493703280240024020032d00484101460d00200041003a00000c010b200041013a000020002003290328370001200041096a2005290300370000200041116a2002290300370000200041196a20062903003700000b200328021c450d00200410310b02402009450d00200810310b20034190026a24000bc31002067f027e230041b0016b220b240002400240200128022c20034f0d00200041003602000c010b024002400240024002402004280200450d00200b41206a41b0a8c600410510a702200b41306a41b5a8c600411210a702200b200236024c200b200b41cc006a410410c802370350200b41e4006a200b41cc006a41046a360200200b200b41d8006a36025c200b200b41cc006a360260200b200b41d0006a360258200b41c0006a200b41d8006a108801200b280248220c41206a2203417f4c0d020240024020030d004101210d0c010b2003102f220d450d020b200b4100360260200b200336025c200b200d360258200b41d8006a200b41206a4110107e200b41d8006a200b41306a4110107e200b41d8006a200b2802402203200c107e0240200b280244450d00200310310b200b41186a200b280258220d200b28026010c002200b28021c2103200b280218210c0240200b28025c450d00200d10310b02400240200c4101460d00200b41306a2002109004200b41d8006a200b280230220e200b280238109104200b280258210c4100200b280260200b280264220d410246220f1b2103200b28025c21100240200b280234450d00200e10310b4104200c200f1b210c0240024020030d004101210f0c010b2003410374200c6a41786a28020021034100210f0b0240200d4102460d00201041ffffffff0171450d00200c10310b200f0d010b024020012802cc01220c2003490d004100200c20036b22032003200c4b1b20012802444f0d010b200041013602000c060b200441086a28020020012802284d0d00200041023602000c050b200b41d8006a200210f404200b280260210c200b280258210341002104200b41246a41003a0000200b4100360220200b41106a2003200c200b41206a4105410010b70502400240200b280210450d00200b200b2802142204410520044105491b360234200b200b41206a360230200b41086a200b41306a10bb01200b28020c210c200b2802084521040c010b0b0240200b28025c450d00200310310b4100210d200c410020041b210302400240024020050d0020030d010b200320054f0d012003ad4220862005ad8421114101210d0b2000200d36020420004103360200200041086a20113702000c050b024002400240200128023c220420074f0d00410021010c010b200b41d8006a200210f103200b41306a200b280258220c200b28026010bf02200b2802304101462103200b2802342104200b41386a28020021050240200b28025c450d00200c10310b2004410020031b210d2005410020031b210502400240024020070d00200d21070c010b2007410c6c210c200641086a2103200128023821064100210703402003280200220420064b0d022003410c6a21032007417f6a2107200420056a2105200c41746a220c0d000b200d20076b21070b02402007200128023022044d0d00410221010c020b02402005200128023422044d0d0041032101200521070c020b20012802cc012103200b41d8006a200210a305200b200b2802582207200b28026010c002200b2802042105200b28020021040240200b28025c450d00200710310b024020044101470d0020052008490d002005ad4220862008ad842111410021010c070b0240200320084f0d002003ad4220862008ad842111410121010c070b024020032008460d00200b41d8006a200210a005200b41306a200b2802582204200b28026010a105200b2902344200200b28023022031b21120240200b28025c450d00200410310b2003410420031b2106024002400240024002400240024002402012422088a7220c0e020001020b2008ad21110c030b024020062802002008470d002006200c4104746a21050c050b2006200c4104746a21022008ad21110c010b41002103200c2104034020032004410176220520036a2207200620074104746a28020020084b1b2103200420056b220441014b0d000b200620034104746a2802002008460d022008ad2111200c450d012006200c4104746a21020b200621010340200141106a21030240200141086a28020041ffffffff0371450d00200141046a28020010310b2003210120022003470d000b0b41022101201242ffffffff0083500d0a200610310c0a0b200c450d012006200c4104746a21050b200621030340200341106a21040240200341086a28020041ffffffff0371450d00200341046a28020010310b2004210320052004470d000b0b201242ffffffff0083500d00200610310b20012802402201200a4f0d02410021050c050b410020076b2107410121010b2000200136020420004104360200200041106a20063602002000410c6a2004360200200041086a20073602000c050b0240200a450d002009200a4104746a210f410021014100210a03402009280200210302402001410171450d0041012105417f200320074720032007491b41016a41024f0d000c050b200b41306a2002200310cf02200b41d8006a200b2802302205200b28023810d0020240200b2d008c0122014102460d00200b280278210c200b28027c2108200b280280012104200b28028401210d200b2802880121060b0240200b280234450d00200510310b41022105024020014102470d0020032104200221010c050b02402009410c6a280200220120044d0d00410321050c050b0240200120066a220120084d0d0041042105200821040c050b0240200d41016a2201200c4d0d0041052105200c21040c050b200a41016a210a4101210120032107200f200941106a2209470d000b0b200041073602000c040b1039000b103b000b2000200536020420004106360200200041106a20043602002000410c6a2001360200200041086a200a3602000c010b2000200136020420004105360200200041086a20113702000b200b41b0016a24000bfe0701027f230041106b2202240002400240024002400240024002400240024020002802000e0701020304050600010b20022001280218418af5c200410c2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a4198f5c20010501a20022d0008210120022802042203450d07200141ff017121004101210120000d06024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d070b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010c060b200128021841f080c50041102001411c6a28020028020c11000021010c060b20012802184190aec20041142001411c6a28020028020c11000021010c050b200128021841acaec200410f2001411c6a28020028020c11000021010c040b2002200128021841a8f5c20041192001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41c4f5c20010501a20022d0008210120022802042203450d03200141ff017121004101210120000d02024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d030b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010c020b2002200128021841d4f5c200410e2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41e4f5c20010501a20022d0008210120022802042203450d02200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d020b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010c010b2002200128021841f4f5c200410d2001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a4184f6c20010501a20022d0008210120022802042203450d01200141ff017121004101210120000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080b200241106a2400200141ff01714100470bd90202047f017e230041f0016b22042400200441e8016a22054200370300200441e0016a22064200370300200441d0016a41086a4200370300200442003703d001200441d0016a41b5d8c800410d10a702200441086a41cfd8c800410c10a7022005200441086a41086a29000037030020062004290008370300200441086a200441d0016a412010b202200428025421052004280298012106200441086a200110dd02200441d0016a20042802082207200428021010950420042902d401210820042802d00121010240200428020c450d00200710310b024002402001450d002000200837020420002001360200200041106a4100200520064102461b3602002000410c6a2002360200200041146a20032900003700002000411c6a200341086a290000370000200041246a200341106a2900003700002000412c6a200341186a2900003700000c010b200041003602000b200441f0016a24000bbf0b011e7f23004190056b22022400200241d0046a41086a22032001410c6a290200370300200241d0046a41106a2204200141146a290200370300200241d0046a41186a22052001411c6a290200370300200241b0046a41086a22062001412c6a290200370300200241b0046a41106a2207200141346a290200370300200241b0046a41186a22082001413c6a290200370300200220012902043703d004200220012902243703b0042001280200210920024190046a41186a220a200141dc006a29020037030020024190046a41106a220b200141d4006a29020037030020024190046a41086a220c200141cc006a290200370300200241f0036a41086a220d200141ec006a290200370300200241f0036a41106a220e200141f4006a290200370300200241f0036a41186a220f200141fc006a2902003703002002200129024437039004200220012902643703f003200241d0036a41186a22102001419c016a290200370300200241d0036a41106a221120014194016a290200370300200241d0036a41086a22122001418c016a29020037030020022001290284013703d003200241c8036a2213200141dc016a290200370300200241c0036a2214200141d4016a290200370300200241b8036a2215200141cc016a290200370300200241b0036a2216200141c4016a29020037030020024190036a41186a2217200141bc016a29020037030020024190036a41106a2218200141b4016a29020037030020024190036a41086a2219200141ac016a290200370300200220012902a40137039003200241f0026a41186a221a200141fc016a290200370300200241f0026a41106a221b200141f4016a290200370300200241f0026a41086a221c200141ec016a290200370300200220012902e4013703f002200241d0026a41186a221d2001419c026a290200370300200241d0026a41106a221e20014194026a290200370300200241d0026a41086a221f2001418c026a29020037030020022001290284023703d002200241f0046a200141a4026a109901200241086a410c6a2003290300370200200241086a41146a2004290300370200200241086a411c6a2005290300370200200241086a412c6a2006290300370200200241086a41346a2007290300370200200241086a413c6a2008290300370200200241086a41cc006a200c290300370200200241086a41d4006a200b290300370200200241086a41dc006a200a29030037020020022009360208200220022903d00437020c200220022903b00437022c200220022903900437024c200241086a41fc006a200f290300370200200241086a41f4006a200e290300370200200241086a41ec006a200d290300370200200241086a418c016a2012290300370200200241086a4194016a2011290300370200200241086a419c016a2010290300370200200241086a41ac016a2019290300370200200241086a41b4016a2018290300370200200241086a41bc016a2017290300370200200241086a41c4016a2016290300370200200241086a41cc016a2015290300370200200241086a41d4016a2014290300370200200241086a41dc016a2013290300370200200220022903f00337026c200220022903d00337028c0120022002290390033702ac01200241086a41fc016a201a290300370200200241086a41f4016a201b290300370200200241086a41ec016a201c290300370200200241086a419c026a201d290300370200200241086a4194026a201e290300370200200241086a418c026a201f290300370200200241c4026a200241f0046a41186a290300370200200241bc026a200241f0046a41106a290300370200200241b4026a200241f0046a41086a290300370200200220022903f0023702ec01200220022903d00237028c02200220022903f0043702ac0220024100360298032002420137039003200241086a20024190036a10ed0120002002280290032201200228029803109a010240200228029403450d00200110310b20024190056a24000ba50301037f230041c0006b2202240002404125102f2203450d00200042253702042000200336020020004181c9c4004104107e200241086a41096a200141096a290000370000200241086a41116a200141116a290000370000200241086a41196a200141196a29000037000020022001290001370009200220012d000022033a0008200241086a41017221040240024020034101460d00200241013a00302000200241306a4101107e4120102f2203450d022002422037023420022003360230200241306a20044120107e2000200228023022032002280238107e2002280234450d01200310310c010b200241023a00302000200241306a4101107e4120102f2203450d012002422037023420022003360230200241306a20044120107e2000200228023022032002280238107e2002280234450d00200310310b2002200128022422012802003602082000200241086a4104107e4120102f2203450d002002422037020c20022003360208200241086a200141046a4120107e2000200228020822012002280210107e0240200228020c450d00200110310b200241c0006a24000f0b1039000b940102017f017e230041106b2206240002402002ad4220862001ad842004ad4220862003ad84200510292207422088a72203450d0041002105024002402007a722022d00000e020100020b2003417f6a4104490d0120022800012101410121050b200210312000200136020420002005360200200641106a24000f0b41b5f1c900412e200641086a41e4f1c90041f4f1c9001041000bbf0401047f23004190016b220524002005200436020c20052003360208024002400240200241074b0d0041002802809a4a450d0141002802fc994a210241002802f8994a210341002802849a4a210420054188016a41e90036020020054180016a42dd80808010370300200541fc006a41a7a1c000360200200541f4006a4213370200200541f0006a4194a1c000360200200541e8006a4200370300200541e4006a41f8fac900360200200541d8006a4201370300200541d0006a41133602002005418ca1c00036025420054194a1c00036024c20054101360248200341f8fac900200441024622041b200541c8006a20024180a6c00020041b2802101103000c010b2002417c714108460d0020012800082102200541c8006a200541086a10b905200541106a41086a200541d4006a290200370300200541106a41106a2203200541dc006a290200370300200541106a41186a2204200541e4006a290200370300200541106a41206a2201200541ec006a290200370300200541106a41286a2206200541f4006a290200370300200541106a41306a2207200541fc006a2802003602002005200529024c370310024020052802482208450d00200020083602042000200236020020002005290310370208200041106a200541186a290300370200200041186a2003290300370200200041206a2004290300370200200041286a2001290300370200200041306a2006290300370200200041386a20072802003602000c020b200041003602040c010b200041003602040b20054190016a24000bc10c030e7f027e017f230041c0006b22022400200241306a200110b10302400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802302203450d00200241386a280200210420022802342105200241186a200110bb0120022802180d0341042106200228021c220720012802044104762208200820074b1b22094104742208417f4c0d1402402009450d002008102f2206450d130b024020070d00410021070c030b4100210a4100210b0240024002400340200128020422084104490d032001280200220c280000210d20012008417c6a3602042001200c41046a360200200241106a200110bb0120022802100d032001280204220c20022802142208490d032008417f4c0d180240024020080d004101210e0c010b20081035220e450d172001280204210c0b200c2008490d02200e2001280200200810bf09210c2001280204220e2008490d052001200e20086b3602042001200128020020086a360200200c450d0302400240200b2009460d002009210f200b210e0c010b200941016a220e2009490d192009410174220f200e200f200e4b1b220e4104200e41044b1b220e41ffffffff0071200e46410274210f200e410474210e0240024020090d00200241003602300c010b2002200636023020024104360238200220094104743602340b200241206a200e200f200241306a104e2002280228210f20022802204101460d02200228022421062009210e200f410476220f21090b2006200e4104746a220e200c360204200e200d360200200e41086a2008ad2210422086201084370200200a41106a210a2007200b41016a220b470d000b200f21090c050b200f0d140c160b200e10310b0240200b450d00200641086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200a41706a220a0d000b0b200941ffffffff0071450d03200610310c030b200041003602000c100b2008200e419cb4c0001061000b2006450d0020012802042208450d042001280200220a2d0000210b20012008417f6a3602042001200a41016a36020041002108200b0e020201040b200041003602000c0c0b200241086a200110bb0120022802080d022001280204220b200228020c220a490d02200a417f4c0d0f02400240200a0d00410121080c010b200a10352208450d0e2001280204210b0b200b200a490d0120082001280200200a10bf09210b2001280204220c200a490d0e2001200c200a6b36020420012001280200200a6a360200200b450d02200aad221042208620108421100b2002200110bb012010a7210a20022802000d042001280204220c2002280204220b490d04200b417f4c0d0e02400240200b0d004101210e0c010b200b1035220e450d0d2001280204210c0b200c200b490d03200e2001280200200b10bf09210c2001280204220e200b4f0d02200b200e419cb4c0001061000b200810310b200041003602000c070b2001200e200b6b36020420012001280200200b6a360200200c450d01200bad22114220862011842211a7210b2001280204220e4104490d022001280200220d28000021122001200e417c6a220f3602042001200d41046a360200200f4104490d032000200536020420002003360200200d28000421052001200e41786a3602042001200d41086a360200200041346a2005360200200041306a20123602002000412c6a2011422088a7360200200041286a200b360200200041246a200c360200200041206a2010422088a73602002000411c6a200a360200200041186a2008360200200041146a2007360200200041106a20093602002000410c6a2006360200200041086a20043602000c080b200e10310b200041003602000c030b200041003602000c010b200041003602000b200b450d00200c10310b2008450d00200a450d00200810310b02402007450d002007410474210a4100210103400240200620016a220841086a280200450d00200841046a28020010310b200a200141106a2201470d000b0b200941ffffffff0071450d00200610310b02402004450d002004410c6c21082003210103400240200141046a280200450d00200128020010310b2001410c6a2101200841746a22080d000b0b2005450d002005410c6c450d00200310310b200241c0006a24000f0b1039000b200a200c419cb4c0001061000b103b000ba00302017f017e230041d0006b220524002005200436020420052003360200024002400240200241074b0d0041002802809a4a450d0141002802fc994a210241002802f8994a210341002802849a4a2104200541c8006a41e900360200200541c0006a42dd808080103703002005413c6a41a7a1c000360200200541346a4213370200200541306a4194a1c000360200200541286a4200370300200541246a41f8fac900360200200541186a4201370300200541106a41133602002005418ca1c00036021420054194a1c00036020c20054101360208200341f8fac900200441024622041b200541086a20024180a6c00020041b2802101103000c010b2002417c714108460d0020012800082103200541086a200510a705024020052802082202450d00200529020c21060240200528020422044104490d00200020063702082000200236020420002003360200200041106a2005280200220228000036020020052004417c6a3602042005200241046a3602000c030b2006428080808010540d00200210310b200041003602040c010b200041003602040b200541d0006a24000be00a02057f017e23004190136b22022400024002400240024002400240024002400240024002400240024020012d00000e0b0102030405060a07080900010b200141046a2802002103200241086a200141086a41c80310bf091a200241b00b6a200341e00710bf091a200241d0036a200241b00b6a10bb0541e007102f2201450d0b2001200241d0036a41e00710bf092101200041086a200241086a41c80310bf091a2000410a3a0000200041046a2001360200200310310c0a0b200241d0036a41086a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310bc05210120022802b80b220620022802bc0b20066b4198046d10fb042002428880808080013703b80b200242083703b00b4108410010fb042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041003a00000c090b200241d0036a41086a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310bc05210120022802b80b220620022802bc0b20066b4198046d10fb042002428880808080013703b80b200242083703b00b4108410010fb042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041013a00000c080b200241d0036a41086a22042001410c6a2802003602002002200141046a2902003703d003200141146a28020021052002200141106a2802002203200141186a2802004198046c6a3602bc0b200220033602b80b200220053602b40b200220033602b00b200241b00b6a200310bc05210120022802b80b220620022802bc0b20066b4198046d10fb042002428880808080013703b80b200242083703b00b4108410010fb042000410c6a2004280200360200200041046a20022903d003370200200041186a200120036b4198046d360200200041146a2005360200200041106a2003360200200041023a00000c070b200041033a0000200041106a200141106a290300370300200041046a200141046a2902003702002000410c6a2001410c6a2802003602000c060b2000410c6a2001410c6a280200360200200041046a200141046a290200370200200041106a200141106a41c80310bf091a200041043a00000c050b2000410c6a2001410c6a280200360200200041046a200141046a290200370200200041206a200141206a41c80310bf091a200041053a0000200041186a200141186a280200360200200041106a200141106a2903003703000c040b200041073a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c030b200041083a0000200041046a200141046a2802003602000c020b200041093a00002000410c6a2001410c6a280200360200200041046a200141046a2902003702000c010b200141086a290300210720012d00012103200241b00b6a200141106a41d00710bf091a200241940b6a200241b00b6a41c8076a280200360200200220022903f01237028c0b024020022802b00b4123460d00200241b00b6a109e040b200020033a0001200041106a4123360200200041086a2007370300200041146a200241d0036a41c80710bf091a200041063a00000b20024190136a24000f0b1039000bcf0705087f027e017f017e0a7f23004180236b220224000240024020002802082203200028020c460d00200241a01b6a4101722104200241a4046a41046a210520024194086a41046a2106200241f0036a2107200241086a411c6a21080340200020034198046a360208200241086a200341980410bf091a20022d000822094108460d02200229039804210a200229039004210b2002280220210c2002290318210d20022d0009210e200228020c210f200228021021102002280214211120024194086a200841cc0310bf091a200241f0076a41186a2212200741186a290300370300200241f0076a41106a2213200741106a290300370300200241f0076a41086a2214200741086a290300370300200220072903003703f00741002103024002400240024002400240024002400240024020090e080901020304050600090b200f201141e0076c22156a21160240024020110d00200f2103200f21110c010b200f2109034020092d00002103200241e10b6a200941016a41df0710bf091a200941e0076a211102402003410b470d0020112103200921110c020b200220033a00a01b2004200241e10b6a41df0710bf091a200241c0136a200241a01b6a10bb052009200241c0136a41e00710bf091a20112109201541a0786a22150d000b201621030b201620036b220941e0076d211502402009450d00201541e0076c21090340200310ad03200341e0076a2103200941a0786a22090d000b0b200241a4046a20024194086a41cc0310bf091a200241a01b6a41186a2012290300370300200241a01b6a41106a2013290300370300200241a01b6a41086a2014290300370300200220022903f0073703a01b2011200f6b41e0076d2115410721030c070b200241a4046a20024194086a41bc0310bf091a410121030c050b2005200641c80310bf091a410221030c040b410321030c030b2005200641c80310bf091a410421030c020b2005200641c80310bf091a410521030c010b200241a4046a20024194086a41c40310bf091a410621030b201121150b20102116200f21170b2001200e3a0001200120033a00002001200c3602182001200d3703102001201536010c2001201636010820012017360104200120022f01c0133b01022001411c6a200241a4046a41cc0310bf091a2001200a370390042001200b3703880420014180046a200241a01b6a41186a290300370300200141f8036a200241a01b6a41106a290300370300200141f0036a200241a01b6a41086a290300370300200120022903a01b3703e80320014198046a210120002802082203200028020c470d000b0b200241083a00080b20024180236a240020010beb0301017f230041106b22022400024002400240024002400240024002400240024002400240024020002802000e0c000102030405060708090a0b0c0b200241003a000f20012002410f6a4101107e0c0b0b200241013a000f20012002410f6a4101107e0c0a0b200241023a000f20012002410f6a4101107e0c090b200241033a000f20012002410f6a4101107e0c080b200241043a000f20012002410f6a4101107e20002802042000410c6a280200200110ce010c070b200241053a000f20012002410f6a4101107e20002802042000410c6a280200200110ce010c060b200241063a000f20012002410f6a4101107e200041086a200110dd010c050b200241073a000f20012002410f6a4101107e200041086a200110dd010c040b200241083a000f20012002410f6a4101107e20002802042000410c6a280200200110ce012002200041106a360204200241046a200110d9010c030b200241093a000f20012002410f6a4101107e20002802042000410c6a280200200110ce01200041106a200110fd050c020b2002410a3a000f20012002410f6a4101107e200041086a200110dd012002200041d0036a360208200241086a200110d9010c010b2002410b3a000f20012002410f6a4101107e200041086a200110dd01200041d0036a200110fd050b200241106a24000bc30801047f230041106b2202240002400240024002400240024002400240024020002d00000e080001020304050607000b200241003a00082001200241086a4101107e0c070b200241013a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041106a21050240200441f8036c2200450d0003402003200110bd05200341f8036a2103200041887c6a22000d000b0b2005200110dd010c060b200241023a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0503402003200110be0520034198046a2103200041e87b6a22000d000c060b0b200241033a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb01200041f8036c450d04200041f8036c210003402003200110bd05200341f8036a2103200041887c6a22000d000c050b0b200241043a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0303402003200110be0520034198046a2103200041e87b6a22000d000c040b0b200241053a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0203402003200110be0520034198046a2103200041e87b6a22000d000c030b0b200241063a00082001200241086a4101107e200041106a200110d701200041186a200110dd01200041046a280200210320012000410c6a280200220010cb01200041f8036c2200450d0103402003200110bd05200341f8036a2103200041887c6a22000d000c020b0b200241073a00082001200241086a4101107e200041106a200110bd05200220004188046a2903003703082001200241086a4108107e200220004190046a2903003703082001200241086a4108107e200220002d00013a00082001200241086a4101107e200041046a280200210320012000410c6a280200220010cb01200041e8036c2200450d0003402003200110de01200341e8036a2103200041987c6a22000d000b0b200241106a24000bc30801047f230041106b2202240002400240024002400240024002400240024020002d00000e080001020304050607000b200241003a00082001200241086a4101107e0c070b200241013a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041106a21050240200441f8036c2200450d0003402003200110bd05200341f8036a2103200041887c6a22000d000b0b2005200110dd010c060b200241023a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0503402003200110be0520034198046a2103200041e87b6a22000d000c060b0b200241033a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb010240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b200028021021032001200041186a280200220010cb01200041f8036c450d04200041f8036c210003402003200110bd05200341f8036a2103200041887c6a22000d000c050b0b200241043a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0303402003200110be0520034198046a2103200041e87b6a22000d000c040b0b200241053a00082001200241086a4101107e200041046a280200210320012000410c6a280200220410cb01200041206a21050240200441f8036c2204450d0003402003200110bd05200341f8036a2103200441887c6a22040d000b0b2005200110dd01200028021021032001200041186a280200220010cb0120004198046c2200450d0203402003200110be0520034198046a2103200041e87b6a22000d000c030b0b200241063a00082001200241086a4101107e200041106a200110d701200041186a200110dd01200041046a280200210320012000410c6a280200220010cb01200041f8036c2200450d0103402003200110bd05200341f8036a2103200041887c6a22000d000c020b0b200241073a00082001200241086a4101107e200041106a200110bd05200220004188046a2903003703082001200241086a4108107e200220004190046a2903003703082001200241086a4108107e200220002d00013a00082001200241086a4101107e200041046a280200210320012000410c6a280200220010cb01200041e0076c2200450d0003402003200110df01200341e0076a2103200041a0786a22000d000b0b200241106a24000b8c1305097f027e037f017e067f23004180026b220524000240024020014115490d004101210641012107024002400240034020012108200021092007200671210a02400340024020040d002000200110c1050c080b024020064101710d002000200110c2052004417f6a21040b2001410276220741036c210b2007410174210c4100210d024020014132490d00200b200b417f6a220d2000200b4103746a290300220e2000200d4103746a290300220f5422101b2211200b41016a2212200d200b20101b200020124103746a2903002213200f200e20101b220e5422121b2013200e20121b200020114103746a2903005422141b210b200c200c417f6a220d2000200c4103746a290300220e2000200d4103746a290300220f5422111b2215200c4101722216200d200c20111b200020164103746a2903002213200f200e20111b220e5422161b2013200e20161b200020154103746a2903005422171b210c20072007417f6a2215200020074103746a290300220e200020154103746a290300220f54220d1b2218200741016a221920152007200d1b200020194103746a2903002213200f200e200d1b220e5422151b2013200e20151b200020184103746a2903005422181b210741024101200d1b200d20151b20186a20116a20166a20176a20106a20126a20146a210d0b200d2000200c4103746a290300220e200020074103746a290300220f5422106a2000200b4103746a2903002213200f200e20101b220e5422116a2112024002402013200e20111b2000200c200720101b220d4103746a290300540d00200b2007200c20101b20111b210d20124521070c010b02402012410a4b0d00201241016a4521070c010b2001410176210b200020014103746a41786a21072000210c0340200c290300210e200c20072903003703002007200e370300200c41086a210c200741786a2107200b417f6a220b0d000b2001200d417f736a210d410121070b0240200a2007714101470d002000200110c3050d080b02400240024002402003450d00200d20014f0d0120032903002000200d4103746a2207290300220e5a0d0320002109200121080b200d20084f0d012009290300210e20092009200d4103746a22072903003703002007200e3703002008417f6a210c2009290300210e4100210a200941086a2201210703402007290300200e5a0d05200741086a2107200c200a41016a220a470d000b200c210a0c040b200d200141c4fac200103f000b200d200841ccdbc400103f000b2000290300210f2000200e3703002007200f370300200041786a2110200041086a21112000290300210f4100210c2001210b03400240200c200b417f6a220d4f0d002011200c4103746a21070340200f2007290300540d01200741086a2107200d200c41016a220c470d000b200d210c0b2010200b4103746a210702400340200c200b417f6a220b4f0d012007290300210e200741786a220d2107200f200e540d000b2011200c4103746a220729030021132007200e370300200d41086a2013370300200c41016a210c0c010b0b2000200f37030002402001200c41016a2207490d00200020074103746a2100200120076b220141154f0d010c070b0b2007200141a4fac2001061000b200a200c200a200c491b210b200920084103746a41786a2107200821140240034002402014417f6a2214200a4b0d00200b21140c020b2007290300210f200741786a2107200f200e5a0d000b0b02402014200a490d00200c2014490d02200120144103746a210d418001211241002100410021074100210b4100210c41800121162001200a4103746a2218210103400240200d20016b22104187104b22150d002010410376220641807f6a211002402007200049200c200b492211722217450d002016201020111b21162010201220111b21120c010b2010200620171b2210201041017622166b21120b0240200c200b470d00024020160d002005220b210c0c010b410021102005220c210b200121110340200b20103a0000200b2011290300200e5a6a210b201141086a21112016201041016a2210470d000b0b024020072000470d00024020120d0020054180016a220021070c010b200d41786a21104100211120054180016a220721000340200020113a000020002010290300200e546a2100201041786a21102012201141016a2211470d000b0b0240200020076b2210200b200c6b2211201120104b1b2210450d002001200c2d00004103746a2211290300210f2011200d20072d0000417f734103746a290300370300024020104101460d002010417f6a21100340200d20072d0000417f734103746a2001200c2d00014103746a2903003703002001200c2d00014103746a200d20072d0001417f734103746a290300370300200741016a2107200c41016a210c2010417f6a22100d000b0b200d20072d0000417f734103746a200f370300200741016a2107200c41016a210c0b200d20124103746b200d20072000461b210d200120164103746a2001200c200b461b210120150d000b02400240200c200b490d000240200720004f0d0003402001290300210f2001200d2000417f6a22002d0000417f734103746a220c290300370300200c200f370300200141086a210120072000490d000b0b200120186b21070c010b03402001200b417f6a220b2d00004103746a2207290300210f2007200d41786a220d290300370300200d200f370300200c200b490d000b200d20186b21070b2009200e37030020082007410376200a6a22074d0d032009200920074103746a220c290300370300200c200e370300200820076b220b450d04200b20072007200b4b1b210d20084103762110200c41086a2100024002402007200b417f6a22014f0d002009200720022003200410c005200c21030c010b200020012002200c200410c00520072101200921000b200d20104f2106200a20144f2107200141154f0d010c050b0b200a201441b4fac2001062000b2014200c41b4fac2001058000b2007200841ccdbc400103f000b41facdc800412341d0cfc800103c000b20014102490d00200041786a2111410121124101210c0340200c41016a211002402000200c4103746a220b290300220e2000200c417f6a220d4103746a2207290300220f5a0d00200b200f3703000240200d450d00200e2000200c417e6a220c4103746a290300220f5a0d002007200f3703000240200c450d002012210c201121070340200e200741786a220b290300220f5a0d022007200f370300200c41016a2207200c4f210d2007210c200b2107200d0d000b0b200021070b2007200e3703000b2012417f6a2112201141086a21112010210c20102001470d000b0b20054180026a24000bc90302047f027e024020014101762202450d0003402002417f6a2202210302400240024003402003410174220441017221050240200441026a220420014f0d00200520014f0d0220042005200020054103746a290300200020044103746a290300541b21050b200520014f0d03200320014f0d02200020034103746a22032903002206200020054103746a220429030022075a0d032003200737030020042006370300200521030c000b0b2005200141dcfbc200103f000b2003200141ecfbc200103f000b20020d000b0b0240024020014102490d002001210403402004417f6a220420014f0d02200029030021062000200020044103746a2205290300370300200520063703004100210302400240024003402003410174220241017221050240200241026a220220044f0d00200520044f0d0220022005200020054103746a290300200020024103746a290300541b21050b200520044f0d03200320044f0d02200020034103746a22032903002206200020054103746a220229030022075a0d032003200737030020022006370300200521030c000b0b2005200441dcfbc200103f000b2003200441ecfbc200103f000b200441014b0d000b0b0f0b2004200141ccdbc400103f000beb0202057f017e0240200141017641feffffff07712202417f6a220320014f0d0002402001410d74200173220441117620047322044105742004732205417f2001417f6a677622067122044100200120042001491b6b220420014f0d00200020034103746a220329030021072003200020044103746a220429030037030020042007370300024020022001490d00200221030c020b2005410d7420057322044111762004732204410574200473220520067122044100200120042001491b6b220420014f0d00200020024103746a220329030021072003200020044103746a2204290300370300200420073703002002410172220320014f0d012005410d742005732204411176200473220441057420047320067122044100200120042001491b6b220420014f0d00200020034103746a220129030021072001200020044103746a2200290300370300200020073703000f0b2004200141ccdbc400103f000b2003200141bcdbc400103f000bbc04050c7f017e017f017e017f200041786a220220014103746a21032001417e6a2104200041186a2105200041706a210641002107200141324921084101210902400240024003400240024020092001490d004100210a0c010b200220094103746a210b4101210a0340200b41086a220c290300200b290300540d014101210d200941016a2209200149210a200c210b20012009470d000c030b0b2009200146220d0d0120080d012009417f6a220b20014f0d02200a410171450d032000200b4103746a220b290300210e200b20002009410374220f6a220c2903002210370300200c200e370300024020094102490d00201020002009417e6a220a4103746a2211290300220e5a0d00200b200e3703000240200a450d002010200c41686a290300220e5a0d002006200f6a210b02400340200b200e370300200a417f6a220a450d01200b41706a210d200b41786a2211210b2010200d290300220e5a0d020c000b0b200021110b201120103703000b200741016a21070240200120096b220b4102490d00200c2903082210200c290300220e5a0d00200c41086a210a200c20103703000240200b4103490d00200c2903102210200e5a0d00200420096b210c2005200f6a210b024002400340200b41706a2010370300200c417f6a220c450d01200b2903002110200b41086a220a210b2010200e5a0d020c000b0b2003210a0c010b200a41706a210a0b200a200e3703000b20074105470d000b4100210d0b200d0f0b200b200141bcdbc400103f000b2009200141ccdbc400103f000ba70e010c7f23004180016b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041023a00000c010b2002280214210302400240200241186a2802002204450d00410021050240024020012d00000e020100020b2002410036024820044101460d0120012d0001210520024101360248200220053a004c20044102460d0120012d0002210520024102360248200220053a004d20044103460d0120012d0003210520024103360248200220053a004e20044104460d0120024104360248200220012d00043a004f20044105460d01200241d0006a20012d00053a00002002410536024820044106460d01200241d1006a20012d00063a00002002410636024820044107460d01200241d2006a20012d00073a00002002410736024820044108460d01200241d3006a20012d00083a00002002410836024820044109460d01200241d4006a20012d00093a0000200241093602482004410a460d01200241d5006a20012d000a3a00002002410a3602482004410b460d01200241d6006a20012d000b3a00002002410b3602482004410c460d01200241d7006a20012d000c3a00002002410c3602482004410d460d01200241d8006a20012d000d3a00002002410d3602482004410e460d01200241d9006a20012d000e3a00002002410e3602482004410f460d01200241da006a20012d000f3a00002002410f36024820044110460d01200241db006a20012d00103a00002002411036024820044111460d01200241dc006a20012d00113a00002002411136024820044112460d01200241dd006a20012d00123a00002002411236024820044113460d01200241de006a20012d00133a00002002411336024820044114460d01200241df006a20012d00143a00002002411436024820044115460d01200241e0006a20012d00153a00002002411536024820044116460d01200241e1006a20012d00163a00002002411636024820044117460d01200241e2006a20012d00173a00002002411736024820044118460d01200241e3006a20012d00183a00002002411836024820044119460d01200241e4006a20012d00193a0000200241193602482004411a460d01200241e5006a20012d001a3a00002002411a3602482004411b460d01200241e6006a20012d001b3a00002002411b3602482004411c460d01200241e7006a20012d001c3a00002002411c3602482004411d460d01200241e8006a20012d001d3a00002002411d3602482004411e460d01200241e9006a20012d001e3a00002002411e3602482004411f460d01200241ea006a20012d001f3a00002002411f36024820044120460d01200241eb006a20012d00203a000020024120360248200241c0006a41026a2204200241d5006a2d00003a0000200220022f014c3b0130200220022d004e3a00322002200241d3006a2f00003b0140200228004f2106200241d6006a2801002107200241fc006a41026a2205200241dc006a2d00003a00002002200241da006a2f01003b017c200241dd006a2800002108200241f8006a41026a2209200241e3006a2d00003a00002002200241e1006a2f00003b0178200241c8006a41206a280200210a200241e4006a280200210b200220022d00323a002e200220022f01303b012c200241f4006a41026a220c20042d00003a0000200220022f01403b0174200241f0006a41026a220420052d00003a0000200220022f017c3b0170200241ec006a41026a220520092d00003a0000200220022f01783b016c200241286a41026a200c2d00003a0000200220022f01743b0128200241246a41026a20042d00003a0000200220022f01703b0124200241206a41026a20052d00003a0000200220022f016c3b0120410121050b200241c8006a41026a220420022d002e3a0000200241306a41026a2209200241286a41026a2d00003a0000200241c0006a41026a220c200241246a41026a2d00003a0000200241fc006a41026a220d200241206a41026a2d00003a0000200220022f012c3b0148200220022f01283b0130200220022f01243b0140200220022f01203b017c200020053a0000200041046a2006360000200020022f01483b0001200041036a20042d00003a00002000410b6a2007360000200041086a20022f01303b00002000410a6a20092d00003a0000200041126a20083600002000410f6a20022f01403b0000200041116a200c2d00003a0000200041166a20022f017c3b0000200041186a200d2d00003a00002000411d6a200a360000200041196a200b3600000c010b20024100360238200242013703302002410c3602442002200241086a3602402002200241306a36027c200241dc006a41013602002002420137024c2002419086c4003602482002200241c0006a360258200241fc006a41d8ddc900200241c8006a10401a2002280230200228023810d90402402002280234450d00200228023010310b200041023a00000b2003450d00200110310b20024180016a24000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10a8060240024020022802480d0020024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241386a360258200241c4006a41d8ddc900200241c8006a10401a2002280228200228023010d9040240200228022c450d00200228022810310b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110310b200241e0006a24000bea0706047f017e057f037e027f017e230041d0016b220224002002412036020c20022001360208200241106a2001412010d202024002400240200228021022030d00200041003602000c010b200228021421042002200241186a280200360224200220033602202002200241206a10bb010240024020022802000d000240024020022802042205200228022441286e2201200120054b1bad42287e2206422088a70d002006a72201417f4c0d000240024020010d00410821070c010b2001102f2207450d060b200141286ead2106024002402005450d00200241a8016a41017221080340200241a8016a200241206a10b50120022d00a8014101460d0420024188016a41186a2201200841186a29000037030020024188016a41106a2209200841106a29000037030020024188016a41086a220a200841086a29000037030020022008290000370388012002280224220b4108490d04200241c8006a41086a200a290300220c370300200241c8006a41106a2009290300220d370300200241c8006a41186a2001290300220e370300200241286a41186a220a200e370300200241286a41106a220f200d370300200241286a41086a2210200c37030020022802202201290000210c2002200b41786a3602242002200141086a3602202002200229038801220d3703482002200d37032802402006422088a722012006a7470d00200141016a22092001490d042001410174220b20092009200b491b22094104200941044b1bad42287e2206422088a74541037421092006a7210b0240024020010d00200241003602a8010c010b200241083602b001200220073602a8012002200141286c3602ac010b20024188016a200b2009200241a8016a104e20022802900121092002280288014101460d03200228028c012107200941286ead21060b2007200141286c6a220920022903283703002010290300210d200f290300210e200a29030021112009200c370320200941186a2011370300200941106a200e370300200941086a200d370300200642ffffffff0f83200141016aad4220868421062005417f6a22050d000b0b2007450d0320002006370204200020073602000c040b20090d050b103b000b2006a72201450d00200141286c450d00200710310b200241003602900120024201370388012002410c36026c2002200241086a360268200220024188016a360248200241bc016a4101360200200242013702ac012002419086c4003602a8012002200241e8006a3602b801200241c8006a41d8ddc900200241a8016a10401a20022802880120022802900110d9040240200228028c01450d0020022802880110310b200041003602000b2004450d00200310310b200241d0016a24000f0b1039000bdf0c03087f017e037f230041f0006b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041003a00000c010b200241186a28020021032002280214210420024100360238024002402003450d00200220012d00003a003c2002410136023820034101460d00200220012d00013a003d2002410236023820034102460d00200220012d00023a003e2002410336023820034103460d00200220012d00033a003f2002410436023820034104460d00200241c0006a20012d00043a00002002410536023820034105460d00200241c1006a20012d00053a00002002410636023820034106460d00200241c2006a20012d00063a00002002410736023820034107460d00200241c3006a20012d00073a00002002410836023820034108460d00200241c4006a20012d00083a00002002410936023820034109460d00200241c5006a20012d00093a00002002410a3602382003410a460d00200241c6006a20012d000a3a00002002410b3602382003410b460d00200241c7006a20012d000b3a00002002410c3602382003410c460d00200241c8006a20012d000c3a00002002410d3602382003410d460d00200241c9006a20012d000d3a00002002410e3602382003410e460d00200241ca006a20012d000e3a00002002410f3602382003410f460d00200241cb006a20012d000f3a00002002411036023820034110460d00200241cc006a20012d00103a00002002411136023820034111460d00200241cd006a20012d00113a00002002411236023820034112460d00200241ce006a20012d00123a00002002411336023820034113460d00200241cf006a20012d00133a00002002411436023820034114460d00200241d0006a20012d00143a00002002411536023820034115460d00200241d1006a20012d00153a00002002411636023820034116460d00200241d2006a20012d00163a00002002411736023820034117460d00200241d3006a20012d00173a00002002411836023820034118460d00200241d4006a20012d00183a00002002411936023820034119460d00200241d5006a20012d00193a00002002411a3602382003411a460d00200241d6006a20012d001a3a00002002411b3602382003411b460d00200241d7006a20012d001b3a00002002411c3602382003411c460d00200241d8006a20012d001c3a00002002411d3602382003411d460d00200241d9006a20012d001d3a00002002411e3602382003411e460d00200241da006a20012d001e3a00002002411f3602382003411f460d00200241db006a20012d001f3a000020024120360238200241306a41026a2203200241c5006a2d00003a0000200220022f013c3b0120200220022d003e3a00222002200241386a410b6a2f00003b0130200228003f2105200241c6006a2801002106200241ec006a41026a2207200241cc006a2d00003a00002002200241386a41126a2f01003b016c200241cd006a2800002108200241e8006a41026a2209200241d3006a2d00003a00002002200241386a41196a2f00003b0168200241d4006a290200210a200220022d00223a001e200220022f01203b011c200241e4006a41026a220b20032d00003a0000200220022f01303b0164200241e0006a41026a220c20072d00003a0000200220022f016c3b0160200241dc006a41026a220d20092d00003a0000200220022f01683b015c200241206a41026a2209200b2d00003a0000200220022f01643b01202003200c2d00003a0000200220022f01603b01302007200d2d00003a0000200220022f015c3b016c200041046a2005360000200041036a20022d001e3a0000200020022f011c3b00012000410b6a2006360000200041086a20022f01203b00002000410a6a20092d00003a0000200041126a20083600002000410f6a20022f01303b0000200041116a20032d00003a0000200041166a20022f016c3b0000200041186a20072d00003a0000200041196a200a370000410121030c010b20024100360228200242013703202002410c3602342002200241086a3602302002200241206a36026c200241cc006a41013602002002420137023c2002419086c4003602382002200241306a360248200241ec006a41d8ddc900200241386a10401a2002280220200228022810d90402402002280224450d00200228022010310b410021030b200020033a00002004450d00200110310b200241f0006a24000bbd6603047f237e067f230041d01f6b22022400200241801c6a2001107a200241a81c6a200241801c6a107541002103410121040340200120036a2d0000200241a81c6a20036a2d0000732205410020056b72417f734180017141077610772004712104200341016a22034120470d000b200410772103200241881f6a200241801c6a107520022d00881f4101711077210402400240024002400240200341ff0171450d00200441ff01714101470d010b200241b81e6a21030c010b200241c81c6a200241801c6a41011078200242f0ffffffffffff3f20022903e81c7d220642ffffffffffffff038342f0ffffffffffff3f20022903e01c7d22074233887c3703901d2002200742ffffffffffffff038342f0ffffffffffff3f20022903d81c22077d22084233887c3703881d2002200842ffffffffffffff038342f0ffffffffffff3f20022903d01c22087d22094233887c3703801d2002200942ffffffffffffff038342d1fdffffffffff3f20022903c81c22097d220a4233887c3703f81c2002200642338842137e200a42ffffffffffffff03837c3703f01c200242003703b01d200242003703b81d2002200942017c3703981d200220083703a01d200220073703a81d200220022903e01c3703b01d200220022903b81d20022903e81c7c3703b81d200241c01d6a200241981d6a41011078200241b81e6a200241f01c6a41011078200241f8156a20022903b81e2206420042ca8e9ae5dec6ac02420010be09200241f8186a20022903c01e220742137e4200428092f58893f9b701420010be09200241a8186a20022903c81e220842137e220b420042c486ffe299c731420010be09200241d8176a20022903d01e220a42137e220c420042d6fff8ffd98b8601420010be0920024188176a20022903d81e220d42137e2209420042c2a2aaa7fcfa9503420010be0920024188166a2006420042c2a2aaa7fcfa9503420010be09200241e8186a2007420042ca8e9ae5dec6ac02420010be0920024198186a200b4200428092f58893f9b701420010be09200241c8176a200c420042c486ffe299c731420010be09200241f8166a2009420042d6fff8ffd98b8601420010be0920024198166a2006420042d6fff8ffd98b8601420010be09200241d8186a2007420042c2a2aaa7fcfa9503420010be0920024188186a2008420042ca8e9ae5dec6ac02420010be09200241b8176a200c4200428092f58893f9b701420010be09200241e8166a2009420042c486ffe299c731420010be09200241a8166a2006420042c486ffe299c731420010be09200241c8186a2007420042d6fff8ffd98b8601420010be09200241f8176a2008420042c2a2aaa7fcfa9503420010be09200241a8176a200a420042ca8e9ae5dec6ac02420010be09200241d8166a20094200428092f58893f9b701420010be09200241b8166a20064200428092f58893f9b701420010be09200241b8186a2007420042c486ffe299c731420010be09200241e8176a2008420042d6fff8ffd98b8601420010be0920024198176a200a420042c2a2aaa7fcfa9503420010be09200241c8166a200d420042ca8e9ae5dec6ac02420010be09200241f8136a20022903c01d2208420020022903b816220e20022903c8167c220620022903b8187c220720022903e8177c22092002290398177c220a20022903d816220f20022903a8177c220c20022903a8167c220b20022903c8187c220d20022903f8177c221020022903b81722112002290388187c221220022903e8167c22132002290398167c221420022903d8187c2215200229039818221620022903e8187c221720022903c8177c221820022903f8167c22192002290388167c221a20022903f818221b20022903f8157c221c20022903a8187c221d20022903d8177c221e2002290388177c221f423388200241f8186a41086a290300200241f8156a41086a2903007c201c201b54ad7c200241a8186a41086a2903007c201d201c54ad7c200241d8176a41086a2903007c201e201d54ad7c20024188176a41086a2903007c201f201e54ad7c420d86847c221c42338820024198186a41086a290300200241e8186a41086a2903007c2017201654ad7c200241c8176a41086a2903007c2018201754ad7c200241f8166a41086a2903007c2019201854ad7c20024188166a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c2218423388200241b8176a41086a29030020024188186a41086a2903007c2012201154ad7c200241e8166a41086a2903007c2013201254ad7c20024198166a41086a2903007c2014201354ad7c200241d8186a41086a2903007c2015201454ad7c2018201554ad7c420d86847c2212423388200241d8166a41086a290300200241a8176a41086a2903007c200c200f54ad7c200241a8166a41086a2903007c200b200c54ad7c200241c8186a41086a2903007c200d200b54ad7c200241f8176a41086a2903007c2010200d54ad7c2012201054ad7c420d86847c220c42ffffffffffffff038320022903e01d220d7d42f0ffffffffffff3f7c220b42338842137e200c423388200241b8166a41086a290300200241c8166a41086a2903007c2006200e54ad7c200241b8186a41086a2903007c2007200654ad7c200241e8176a41086a2903007c2009200754ad7c20024198176a41086a2903007c200a200954ad7c200c200a54ad7c420d868442137e201f42feffffffffffff03837c220742ffffffffffffff038320087d42d0fdffffffffff3f7c221342ffffffffffffff03837c2206420010be09200241e8156a200b42ffffffffffffff0383201242ffffffffffffff038320022903d81d220c7d42f0ffffffffffff3f7c220a4233887c2217420020022903c81d220942137e420010be0920024198156a200a42ffffffffffffff0383201842ffffffffffffff038320022903d01d220a7d42f0ffffffffffff3f7c220b4233887c22144200200a42137e2215420010be09200241c8146a200b42ffffffffffffff03832007423388201c42ffffffffffffff03837c20097d42f0ffffffffffff3f7c22074233887c22124200200c42137e2210420010be09200241a8136a200742ffffffffffffff038320134233887c22074200200d42137e220b420010be0920024198136a200742002008420010be09200241e8136a200642002009420010be09200241d8156a201742002015420010be0920024188156a201442002010420010be09200241b8146a20124200200b420010be09200241a8146a201242002008420010be0920024188136a200742002009420010be09200241d8136a20064200200a420010be09200241c8156a201742002010420010be09200241f8146a20144200200b420010be09200241e8146a201442002008420010be0920024198146a201242002009420010be09200241f8126a20074200200a420010be09200241c8136a20064200200c420010be09200241b8156a20174200200b420010be09200241a8156a201742002008420010be09200241d8146a201442002009420010be0920024188146a20124200200a420010be09200241e8126a20074200200c420010be09200241b8136a20064200200d420010be09200220022903c815221c20022903d8137c220820022903f8147c220920022903a8147c220a2002290388137c220c20022903d815221d20022903e8137c220b2002290388157c220d20022903b8147c22102002290398137c221320022903e815221e20022903f8137c22152002290398157c221820022903c8147c221920022903a8137c221a423388200241e8156a41086a290300200241f8136a41086a2903007c2015201e54ad7c20024198156a41086a2903007c2018201554ad7c200241c8146a41086a2903007c2019201854ad7c200241a8136a41086a2903007c201a201954ad7c420d86847c2215423388200241d8156a41086a290300200241e8136a41086a2903007c200b201d54ad7c20024188156a41086a2903007c200d200b54ad7c200241b8146a41086a2903007c2010200d54ad7c20024198136a41086a2903007c2013201054ad7c2015201354ad7c420d86847c220b42ffffffffffffff03833703a01e200220022903b815221920022903c8137c220d20022903e8147c22102002290398147c221320022903f8127c2218200b423388200241c8156a41086a290300200241d8136a41086a2903007c2008201c54ad7c200241f8146a41086a2903007c2009200854ad7c200241a8146a41086a2903007c200a200954ad7c20024188136a41086a2903007c200c200a54ad7c200b200c54ad7c420d86847c220842ffffffffffffff03833703a81e200220022903a815221c20022903b8137c220920022903d8147c220a2002290388147c220c20022903e8127c220b2008423388200241b8156a41086a290300200241c8136a41086a2903007c200d201954ad7c200241e8146a41086a2903007c2010200d54ad7c20024198146a41086a2903007c2013201054ad7c200241f8126a41086a2903007c2018201354ad7c2008201854ad7c420d86847c220842ffffffffffffff03833703b01e20022008423388200241a8156a41086a290300200241b8136a41086a2903007c2009201c54ad7c200241d8146a41086a2903007c200a200954ad7c20024188146a41086a2903007c200c200a54ad7c200241e8126a41086a2903007c200b200c54ad7c2008200b54ad7c420d868442137e201a42ffffffffffffff03837c220842ffffffffffffff03833703901e20022008423388201542ffffffffffffff03837c3703981e200241a81f6a41106a4200370300200241a81f6a41186a4200370300200241a81f6a41206a4200370300200242003703b01f200242013703a81f200241b81e6a200241a81f6a200241901e6a107920024198126a20022903981d220d420020022903c01e2208420010be09200241d80f6a200241e01e6a2903002209420020022903a01d221042137e420010be09200241b8106a200241b81e6a41206a2203290300220a420020022903a81d221342137e221a420010be0920024198116a200241b81e6a41186a2204290300220c420020022903b01d221842137e2219420010be09200241f8116a200241b81e6a41106a2205290300220b420020022903b81d221c42137e2215420010be09200241d8126a200b4200200d420010be0920024198106a200842002010420010be09200241a8106a20094200201a420010be0920024188116a200a42002019420010be09200241e8116a200c42002015420010be09200241c8126a200c4200200d420010be0920024188106a200b42002010420010be09200241e8106a200842002013420010be09200241f8106a200942002019420010be09200241d8116a200a42002015420010be09200241b8126a200a4200200d420010be09200241f80f6a200c42002010420010be09200241d8106a200b42002013420010be09200241b8116a200842002018420010be09200241c8116a200942002015420010be09200241a8126a20094200200d420010be09200241e80f6a200a42002010420010be09200241c8106a200c42002013420010be09200241a8116a200b42002018420010be0920024188126a20084200201c420010be09200241980d6a2006420020022903a81222202002290388127c220d20022903e80f7c221020022903c8107c221320022903a8117c221520022903c811222120022903b8117c221820022903b8127c221920022903f80f7c221a20022903d8107c221c20022903f810222220022903e8107c221d20022903d8117c221e20022903c8127c221f2002290388107c220e20022903a81022232002290398107c220f2002290388117c221120022903e8117c221620022903d8127c221b20022903d80f22242002290398127c222520022903b8107c22262002290398117c222720022903f8117c2228423388200241d80f6a41086a29030020024198126a41086a2903007c2025202454ad7c200241b8106a41086a2903007c2026202554ad7c20024198116a41086a2903007c2027202654ad7c200241f8116a41086a2903007c2028202754ad7c420d86847c2225423388200241a8106a41086a29030020024198106a41086a2903007c200f202354ad7c20024188116a41086a2903007c2011200f54ad7c200241e8116a41086a2903007c2016201154ad7c200241d8126a41086a2903007c201b201654ad7c2025201b54ad7c420d86847c220f423388200241f8106a41086a290300200241e8106a41086a2903007c201d202254ad7c200241d8116a41086a2903007c201e201d54ad7c200241c8126a41086a2903007c201f201e54ad7c20024188106a41086a2903007c200e201f54ad7c200f200e54ad7c420d86847c221d423388200241c8116a41086a290300200241b8116a41086a2903007c2018202154ad7c200241b8126a41086a2903007c2019201854ad7c200241f80f6a41086a2903007c201a201954ad7c200241d8106a41086a2903007c201c201a54ad7c201d201c54ad7c420d86847c2218423388200241a8126a41086a29030020024188126a41086a2903007c200d202054ad7c200241e80f6a41086a2903007c2010200d54ad7c200241c8106a41086a2903007c2013201054ad7c200241a8116a41086a2903007c2015201354ad7c2018201554ad7c420d868442137e202842ffffffffffffff03837c221042ffffffffffffff0383220d420010be09200241b8096a201842ffffffffffffff038322184200200742137e420010be09200241c80e6a201d42ffffffffffffff038322154200201242137e221c420010be09200241f80d6a200f42ffffffffffffff038322134200201442137e221a420010be09200241e80d6a2010423388202542ffffffffffffff03837c22104200201742137e2219420010be09200241d80d6a201042002006420010be09200241880d6a200d42002007420010be09200241980f6a20184200201c420010be09200241d80e6a20154200201a420010be09200241880e6a201342002019420010be09200241980e6a201342002006420010be09200241c80d6a201042002007420010be09200241f80c6a200d42002012420010be09200241a80f6a20184200201a420010be09200241e80e6a201542002019420010be09200241f80e6a201542002006420010be09200241a80e6a201342002007420010be09200241b80d6a201042002012420010be09200241e80c6a200d42002014420010be09200241b80f6a201842002019420010be09200241c80f6a201842002006420010be09200241880f6a201542002007420010be09200241b80e6a201342002012420010be09200241a80d6a201042002014420010be09200241d80c6a200d42002017420010be09200241e8066a20022903c80f222020022903d80c7c220620022903880f7c220720022903b80e7c221220022903a80d7c221420022903b80f222120022903e80c7c221720022903f80e7c221920022903a80e7c221a20022903b80d7c221c20022903a80f222220022903f80c7c221d20022903e80e7c221e20022903980e7c221f20022903c80d7c220e20022903980f222320022903880d7c220f20022903d80e7c221120022903880e7c221620022903d80d7c221b20022903b809222420022903980d7c222520022903c80e7c222620022903f80d7c222720022903e80d7c2228423388200241b8096a41086a290300200241980d6a41086a2903007c2025202454ad7c200241c80e6a41086a2903007c2026202554ad7c200241f80d6a41086a2903007c2027202654ad7c200241e80d6a41086a2903007c2028202754ad7c420d86847c2225423388200241980f6a41086a290300200241880d6a41086a2903007c200f202354ad7c200241d80e6a41086a2903007c2011200f54ad7c200241880e6a41086a2903007c2016201154ad7c200241d80d6a41086a2903007c201b201654ad7c2025201b54ad7c420d86847c220f423388200241a80f6a41086a290300200241f80c6a41086a2903007c201d202254ad7c200241e80e6a41086a2903007c201e201d54ad7c200241980e6a41086a2903007c201f201e54ad7c200241c80d6a41086a2903007c200e201f54ad7c200f200e54ad7c420d86847c221d423388200241b80f6a41086a290300200241e80c6a41086a2903007c2017202154ad7c200241f80e6a41086a2903007c2019201754ad7c200241a80e6a41086a2903007c201a201954ad7c200241b80d6a41086a2903007c201c201a54ad7c201d201c54ad7c420d86847c2217423388200241c80f6a41086a290300200241d80c6a41086a2903007c2006202054ad7c200241880f6a41086a2903007c2007200654ad7c200241b80e6a41086a2903007c2012200754ad7c200241a80d6a41086a2903007c2014201254ad7c2017201454ad7c420d868442137e202842ffffffffffffff03837c220742ffffffffffffff0383220642002008420010be09200241b8076a200942002007423388202542ffffffffffffff03837c220742137e420010be09200241d8076a200a4200200f42ffffffffffffff0383221242137e221c420010be0920024188086a200c4200201d42ffffffffffffff0383221942137e221a420010be09200241c8086a200b4200201742ffffffffffffff0383221742137e2214420010be09200241d8066a200b42002006420010be09200241a8076a200842002007420010be09200241c8076a20094200201c420010be09200241f8076a200a4200201a420010be09200241b8086a200c42002014420010be09200241c8066a200c42002006420010be0920024198076a200b42002007420010be09200241d8086a200842002012420010be09200241e8076a20094200201a420010be09200241a8086a200a42002014420010be09200241e8056a200a42002006420010be0920024188076a200c42002007420010be09200241e8086a200b42002012420010be0920024188096a200842002019420010be0920024198086a200942002014420010be0920024188056a200942002006420010be09200241f8066a200a42002007420010be09200241f8086a200c42002012420010be0920024198096a200b42002019420010be09200241a8096a200842002017420010be0920022d00b81e21292003200241801c6a41206a222a2903003703002004200241801c6a41186a222b2903003703002005200241801c6a41106a222c2903002208370300200241b81e6a41086a222d200241801c6a41086a222e2903002207370300200220022903801c22063703b81e2002200620022903801c7c22063703b81e202d2007202e2903007c220737030020052008202c2903007c220837030020042004290300202b2903007c220937030020032003290300202a2903007c220a370300200241880c6a200d42002006420010be09200241880a6a200a4200201042137e420010be09200241980a6a20094200201342137e2212420010be09200241e80a6a20084200201542137e220b420010be09200241b80b6a20074200201842137e220c420010be09200241c80b6a20074200200d420010be09200241980c6a200642002010420010be09200241f8096a200a42002012420010be09200241a80a6a20094200200b420010be09200241f80a6a20084200200c420010be09200241880b6a20084200200d420010be09200241d80b6a200742002010420010be09200241a80c6a200642002013420010be09200241e8096a200a4200200b420010be09200241b80a6a20094200200c420010be09200241c80a6a20094200200d420010be09200241980b6a200842002010420010be09200241e80b6a200742002013420010be09200241b80c6a200642002015420010be09200241d8096a200a4200200c420010be09200241c8096a200a4200200d420010be09200241d80a6a200942002010420010be09200241a80b6a200842002013420010be09200241f80b6a200742002015420010be09200241c80c6a200642002018420010be09200220022903c809221f20022903c80c7c220620022903d80a7c220720022903a80b7c220820022903f80b7c220920022903d809220e20022903b80c7c220a20022903c80a7c220c20022903980b7c220b20022903e80b7c220d20022903e809220f20022903a80c7c221020022903b80a7c221220022903880b7c221320022903d80b7c221420022903f809221120022903980c7c221520022903a80a7c221720022903f80a7c221820022903c80b7c221920022903880a221620022903880c7c221a20022903980a7c221c20022903e80a7c221d20022903b80b7c221e423388200241880a6a41086a290300200241880c6a41086a2903007c201a201654ad7c200241980a6a41086a2903007c201c201a54ad7c200241e80a6a41086a2903007c201d201c54ad7c200241b80b6a41086a2903007c201e201d54ad7c420d86847c221a423388200241f8096a41086a290300200241980c6a41086a2903007c2015201154ad7c200241a80a6a41086a2903007c2017201554ad7c200241f80a6a41086a2903007c2018201754ad7c200241c80b6a41086a2903007c2019201854ad7c201a201954ad7c420d86847c2215423388200241e8096a41086a290300200241a80c6a41086a2903007c2010200f54ad7c200241b80a6a41086a2903007c2012201054ad7c200241880b6a41086a2903007c2013201254ad7c200241d80b6a41086a2903007c2014201354ad7c2015201454ad7c420d86847c2210423388200241d8096a41086a290300200241b80c6a41086a2903007c200a200e54ad7c200241c80a6a41086a2903007c200c200a54ad7c200241980b6a41086a2903007c200b200c54ad7c200241e80b6a41086a2903007c200d200b54ad7c2010200d54ad7c420d86847c220a423388200241c8096a41086a290300200241c80c6a41086a2903007c2006201f54ad7c200241d80a6a41086a2903007c2007200654ad7c200241a80b6a41086a2903007c2008200754ad7c200241f80b6a41086a2903007c2009200854ad7c200a200954ad7c420d868442137e201e42ffffffffffffff03837c220642ffffffffffffff03833703e81d20022006423388201a42ffffffffffffff03837c3703f01d2002200a42ffffffffffffff038322063703881e2002201042ffffffffffffff038322073703801e2002201542ffffffffffffff0383220c3703f81d200241881f6a200241e81d6a10752002200642f0ffffffffffff3f20067d220942ffffffffffffff038342f0ffffffffffff3f20077d22084233887c85420020022d00881f4101711077ad42ff01837d220a8320068522063703881e20022007200842ffffffffffffff038342f0ffffffffffff3f200c7d220b4233887c85200a8320078522073703801e200220022903e81d2208200942338842137e42d0fdffffffffff3f20087d220d42ffffffffffffff03837c85200a8320088522083703e81d200220022903f01d220942f0ffffffffffff3f20097d221042ffffffffffffff0383200d4233887c85200a8320098522093703f01d2002200c200b42ffffffffffffff038320104233887c85200a83200c85220a3703f81d20024198046a200229038805221b20022903a8097c220c20022903f8067c220b20022903f8087c220d2002290398097c221020022903980822252002290388097c221220022903e8057c22132002290388077c221420022903e8087c221520022903e807222620022903d8087c221720022903a8087c221820022903c8067c22192002290398077c221a20022903c807222720022903a8077c221c20022903f8077c221d20022903b8087c221e20022903d8067c221f20022903b807222820022903e8067c220e20022903d8077c220f2002290388087c221120022903c8087c2216423388200241b8076a41086a290300200241e8066a41086a2903007c200e202854ad7c200241d8076a41086a2903007c200f200e54ad7c20024188086a41086a2903007c2011200f54ad7c200241c8086a41086a2903007c2016201154ad7c420d86847c220e423388200241c8076a41086a290300200241a8076a41086a2903007c201c202754ad7c200241f8076a41086a2903007c201d201c54ad7c200241b8086a41086a2903007c201e201d54ad7c200241d8066a41086a2903007c201f201e54ad7c200e201f54ad7c420d86847c221c423388200241e8076a41086a290300200241d8086a41086a2903007c2017202654ad7c200241a8086a41086a2903007c2018201754ad7c200241c8066a41086a2903007c2019201854ad7c20024198076a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c221742338820024198086a41086a29030020024188096a41086a2903007c2012202554ad7c200241e8056a41086a2903007c2013201254ad7c20024188076a41086a2903007c2014201354ad7c200241e8086a41086a2903007c2015201454ad7c2017201554ad7c420d86847c221842338820024188056a41086a290300200241a8096a41086a2903007c200c201b54ad7c200241f8066a41086a2903007c200b200c54ad7c200241f8086a41086a2903007c200d200b54ad7c20024198096a41086a2903007c2010200d54ad7c2018201054ad7c420d868442137e201642ffffffffffffff03837c221042ffffffffffffff0383220c420020022903f01c220b420010be09200241e8046a20022903901d220d42002010423388200e42ffffffffffffff03837c221042137e420010be0920024188066a20022903881d22124200201c42ffffffffffffff0383221542137e221c420010be09200241b8056a20022903801d22134200201742ffffffffffffff0383221942137e221a420010be09200241c8036a20022903f81c22144200201842ffffffffffffff0383221842137e2217420010be0920024188046a20144200200c420010be09200241d8046a200b42002010420010be09200241f8056a200d4200201c420010be09200241a8056a20124200201a420010be09200241b8036a201342002017420010be09200241f8036a20134200200c420010be09200241c8046a201442002010420010be0920024198066a200b42002015420010be0920024198056a200d4200201a420010be09200241a8036a201242002017420010be09200241e8036a20124200200c420010be09200241b8046a201342002010420010be09200241a8066a201442002015420010be09200241c8056a200b42002019420010be09200241c8026a200d42002017420010be09200241d8036a200d4200200c420010be09200241a8046a201242002010420010be09200241b8066a201342002015420010be09200241d8056a201442002019420010be09200241f8046a200b42002018420010be092002200229039805221c2002290398067c220c20022903a8037c220b20022903f8037c221020022903c8047c221220022903f805221d20022903d8047c220d20022903a8057c221320022903b8037c22142002290388047c221520022903e804221e2002290398047c22172002290388067c221820022903b8057c221920022903c8037c221a423388200241e8046a41086a29030020024198046a41086a2903007c2017201e54ad7c20024188066a41086a2903007c2018201754ad7c200241b8056a41086a2903007c2019201854ad7c200241c8036a41086a2903007c201a201954ad7c420d86847c2217423388200241f8056a41086a290300200241d8046a41086a2903007c200d201d54ad7c200241a8056a41086a2903007c2013200d54ad7c200241b8036a41086a2903007c2014201354ad7c20024188046a41086a2903007c2015201454ad7c2017201554ad7c420d86847c221342ffffffffffffff0383220d3703a01e200220022903c802221d20022903c8057c221420022903e8037c221520022903b8047c221820022903a8067c2219201342338820024198056a41086a29030020024198066a41086a2903007c200c201c54ad7c200241a8036a41086a2903007c200b200c54ad7c200241f8036a41086a2903007c2010200b54ad7c200241c8046a41086a2903007c2012201054ad7c2013201254ad7c420d86847c220c42ffffffffffffff038322103703a81e200220022903d803221e20022903f8047c220b20022903a8047c221220022903b8067c221320022903d8057c221c200c423388200241c8026a41086a290300200241c8056a41086a2903007c2014201d54ad7c200241e8036a41086a2903007c2015201454ad7c200241b8046a41086a2903007c2018201554ad7c200241a8066a41086a2903007c2019201854ad7c200c201954ad7c420d86847c220c42ffffffffffffff038322143703b01e2002200c423388200241d8036a41086a290300200241f8046a41086a2903007c200b201e54ad7c200241a8046a41086a2903007c2012200b54ad7c200241b8066a41086a2903007c2013201254ad7c200241d8056a41086a2903007c201c201354ad7c200c201c54ad7c420d868442137e201a42ffffffffffffff03837c220b42ffffffffffffff0383220c3703901e2002200b423388201742ffffffffffffff03837c220b3703981e20024188016a200c42002008420010be09200241d8016a20064200200b42137e420010be09200241e8026a20074200200d42137e2215420010be0920024188026a200a4200201042137e2213420010be09200241386a20094200201442137e2212420010be09200241f8006a20094200200c420010be09200241c8016a20084200200b420010be09200241d8026a200642002015420010be09200241f8016a200742002013420010be09200241286a200a42002012420010be09200241e8006a200a4200200c420010be09200241b8016a20094200200b420010be09200241f8026a20084200200d420010be09200241e8016a200642002013420010be09200241186a200742002012420010be09200241d8006a20074200200c420010be09200241a8016a200a4200200b420010be0920024188036a20094200200d420010be0920024198026a200842002010420010be09200241086a200642002012420010be09200241c8006a20064200200c420010be0920024198016a20074200200b420010be0920024198036a200a4200200d420010be09200241a8026a200942002010420010be09200241b8026a200842002014420010be09200220022903e801221520022903f8027c220620022903187c220720022903687c220820022903b8017c220920022903d802221720022903c8017c220a20022903f8017c220c20022903287c220b20022903787c220d20022903d80122182002290388017c221020022903e8027c22122002290388027c221320022903387c2214423388200241d8016a41086a29030020024188016a41086a2903007c2010201854ad7c200241e8026a41086a2903007c2012201054ad7c20024188026a41086a2903007c2013201254ad7c200241386a41086a2903007c2014201354ad7c420d86847c2210423388200241d8026a41086a290300200241c8016a41086a2903007c200a201754ad7c200241f8016a41086a2903007c200c200a54ad7c200241286a41086a2903007c200b200c54ad7c200241f8006a41086a2903007c200d200b54ad7c2010200d54ad7c420d86847c220a42ffffffffffffff03833703b81f2002200229030822132002290398027c220c20022903587c220b20022903a8017c220d2002290388037c2212200a423388200241e8016a41086a290300200241f8026a41086a2903007c2006201554ad7c200241186a41086a2903007c2007200654ad7c200241e8006a41086a2903007c2008200754ad7c200241b8016a41086a2903007c2009200854ad7c200a200954ad7c420d86847c220642ffffffffffffff03833703c01f20022002290348221520022903b8027c22072002290398017c22082002290398037c220920022903a8027c220a2006423388200241086a41086a29030020024198026a41086a2903007c200c201354ad7c200241d8006a41086a2903007c200b200c54ad7c200241a8016a41086a2903007c200d200b54ad7c20024188036a41086a2903007c2012200d54ad7c2006201254ad7c420d86847c220642ffffffffffffff03833703c81f20022006423388200241c8006a41086a290300200241b8026a41086a2903007c2007201554ad7c20024198016a41086a2903007c2008200754ad7c20024198036a41086a2903007c2009200854ad7c200241a8026a41086a2903007c200a200954ad7c2006200a54ad7c420d868442137e201442ffffffffffffff03837c220642ffffffffffffff03833703a81f20022006423388201042ffffffffffffff03837c3703b01f4200210602402029450d00200241881f6a200241a81f6a10754200210620022d00881f410171107741ff01714101460d00200241d01e6a4200370300200241c81e6a4200370300200241c01e6a4200370300200242003703b81e200241881f6a200241901e6a1075200241b81e6a4101722129410021054100210341012104024003402005200241881f6a20036a2d0000732205410020056b72417f7341800171410776107720047121042003411f460d01202920036a2d00002105200341016a21030c000b0b420021062004107741ff01714101460d00200241b81e6a41206a200241e81d6a41206a290300370300200241b81e6a41186a200241e81d6a41186a290300370300200241b81e6a41106a200241e81d6a41106a290300370300200241b81e6a41086a200241e81d6a41086a290300370300200241e81e6a200241901e6a41086a290300370300200241f01e6a200241901e6a41106a290300370300200241f81e6a200241901e6a41186a290300370300200241801f6a200241901e6a41206a290300370300200220022903e81d3703b81e200220022903901e3703e01e200241881b6a41206a200241a81f6a41206a290300370300200241881b6a41186a200241a81f6a41186a290300370300200241881b6a41106a200241a81f6a41106a290300370300200241881b6a41086a200241a81f6a41086a290300370300200220022903a81f3703881b200241b01b6a200241b81e6a41d00010bf091a420121060b200241b81e6a210320064200520d010b200241b01a6a410f6a2003410f6a290000370000200241b01a6a41086a200341086a290000370300200220032900003703b01a200241b5196a200241b01a6a41d30010bf091a41012103200041013a0004200020022900b5193700052000410d6a200241b5196a41086a290000370000200041146a200241b5196a410f6a2900003700000c010b200241b01a6a41036a200241b01b6a41d00010bf091a200241881a6a41206a2203200241881b6a41206a290300370300200241881a6a41186a2204200241881b6a41186a290300370300200241881a6a41106a2205200241881b6a41106a290300370300200241881a6a41086a2229200241881b6a41086a290300370300200220022903881b3703881a200241b5196a200241b01a6a41d30010bf091a20024188196a41206a222a200329030037030020024188196a41186a2203200429030037030020024188196a41106a2204200529030037030020024188196a41086a22052029290300370300200220022903881a37038819200041086a200241b5196a41036a41d00010bf091a200041e0006a4200370300200041d8006a4201370300200041e8006a4200370300200041f0006a4200370300200041f8006a420037030020004180016a20022903881937000020004188016a200529030037000020004190016a200429030037000020004198016a2003290300370000200041a0016a202a290300370000200041a8016a2001290000370000200041b0016a200141086a290000370000200041b8016a200141106a290000370000200041c0016a200141186a290000370000410021030b20002003360200200241d01f6a24000ba3990204067f1a7e157f407e230041d0ce006b22042400200441d0c6006a200341d00110bf091a200441d0c6006a4198bfc7004109200241a0016a412010910120044180c5006a200441d0c6006a41d00110bf091a200441a0c8006a41386a22024200370300200441a0c8006a41306a22034200370300200441a0c8006a41286a22054200370300200441a0c8006a41206a22064200370300200441a0c8006a41186a22074200370300200441a0c8006a41106a22084200370300200441a0c8006a41086a22094200370300200442003703a04820044180c5006a41f5d6c8004107200441a0c8006a41c0001093012008310000210a2009310000210b2007310000210c20043100b248210d20043100b148210e20043100af48210f20043100ad48211020043100ae48211120043100bf48211220043100be48211320043100bd48211420043100bc48211520043100bb48211620043100ba48211720043100ac48211820043100ab48211920043100aa48211a20043100a948211b20043100a748211c20043100b948211d20043100b748211e20043100b648211f20043100b348212020043100b448212120043100b5482122200420043502a04820043100a4484220868420043100a5484228868420043100a64822234230868442ffffffffffffff03833703e04820042020202142088684202242108684201f42188684201e42208684200c42288684201d4230868442018842ffffffffffffff03833703f84820042023201c42088684200b42108684201b42188684201a4220868420194228868420184230868442038842ffffffffffffff03833703e8482004200c201d42088684201742108684201642188684201542208684201442288684201342308684201242388684420c8842ffffffffffffff03833703804920042018201042088684201142108684200f42188684200a42208684200e42288684200d4230868420204238868442068842ffffffffffffff03833703f04820044188c9006a200441e0c8006a107b200441a8ca006a41186a20022903002220370300200441a8ca006a41106a2003290300220a370300200441a8ca006a41086a2005290300220b37030020042006290300220d3703a84a20043100ba4a210e20043100b94a210f20043100b74a211020043100b54a211120043100b64a211220043100c74a211320043100c64a211420043100c54a211520043100c44a211620043100c34a211720043100c24a211920043100b44a210c20043100b34a211a20043100b24a211b20043100b14a211c20043100af4a211e20043100c14a211820043100bf4a211f20043100be4a212120043100bb4a211d20043100bc4a212220043100bd4a21232004200d42ffffffff0f8320043100ac4a4220868420043100ad4a4228868420043100ae4a220d4230868442ffffffffffffff03833703c84a2004201d202242088684202342108684202142188684201f42208684202042ff018322204228868420184230868442018842ffffffffffffff03833703e04a2004200d201e42088684200b42ff018342108684201c42188684201b42208684201a42288684200c4230868442038842ffffffffffffff03833703d04a20042018420886202084201942108684201742188684201642208684201542288684201442308684201342388684420c8842ffffffffffffff03833703e84a2004200c201142088684201242108684201042188684200a42ff018342208684200f42288684200e42308684201d4238868442068842ffffffffffffff03833703d84a200441f0ca006a200441c8ca006a107b200441d0c6006a41106a2203200441f0ca006a41386a290300220b370300200441d0c6006a41086a2224200441f0ca006a41306a290300220d20042903f84a220e7c3703002003200b20042903804b220f7c370300200441d0c6006a41186a2208200441f0ca006a41c0006a290300221020042903884b22117c370300200441d0c6006a41206a2209200441f0ca006a41c8006a290300221220042903904b22137c370300200420042903984b221420042903f04a22157c3703d046200441a8ce006a41206a2202200441f0ca006a41f0006a290300370300200441a8ce006a41186a2205200441f0ca006a41e8006a290300370300200441a8ce006a41106a2206200441f0ca006a41e0006a290300370300200441a8ce006a41086a2207200441f0ca006a41d8006a290300370300200420042903c04b3703a84e200441d0c1006a20042903e84b220c420042d9e2cbb5c2f2a603420010be09200441a0c2006a200441f0ca006a4198016a29030022184200428ee0b9a98cbfbd1f420010be09200441f0c2006a200441f0ca006a4190016a290300221d420042968c8a82a4c39824420010be09200441c0c3006a200441f0ca006a4188016a2903002220420042d587a4ceaceea43d420010be0920044190c4006a200441f0ca006a4180016a290300220a420042edd39cadab84b215420010be09200441a0c4006a200a420042d9e2cbb5c2f2a603420010be09200441e0c1006a200c420042fabaabb1878ad401420010be09200441b0c2006a2018420042968c8a82a4c39824420010be0920044180c3006a201d420042d587a4ceaceea43d420010be09200441d0c3006a2020420042edd39cadab84b215420010be09200441e0c3006a2020420042d9e2cbb5c2f2a603420010be09200441b0c4006a200a420042fabaabb1878ad401420010be09200441f0c1006a200c420042d2808e80cce8f301420010be09200441c0c2006a2018420042d587a4ceaceea43d420010be0920044190c3006a201d420042edd39cadab84b215420010be09200441a0c3006a201d420042d9e2cbb5c2f2a603420010be09200441f0c3006a2020420042fabaabb1878ad401420010be09200441c0c4006a200a420042d2808e80cce8f301420010be0920044180c2006a200c420042f7f281baccf19c03420010be09200441d0c2006a2018420042edd39cadab84b215420010be09200441e0c2006a2018420042d9e2cbb5c2f2a603420010be09200441b0c3006a201d420042fabaabb1878ad401420010be0920044180c4006a2020420042d2808e80cce8f301420010be09200441d0c4006a200a420042f7f281baccf19c03420010be0920044190c2006a200c420042ffdb95eed98d9001420010be09200441d0c6006a41c8006a2225201220137d42f0ffffffffffff3f7c220c42ffffffffffffff0383201020117d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41c0006a2226201842ffffffffffffff0383200b200f7d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41386a2227201842ffffffffffffff0383200d200e7d42f0ffffffffffff3f7c22184233887c370300200441d0c6006a41306a2228201842ffffffffffffff0383201420157d42d0fdffffffffff3f7c22184233887c3703002004200c42338842137e201842ffffffffffffff03837c3703f846200441d0c6006a41f0006a22292002290300370300200441d0c6006a41e8006a222a2005290300370300200441d0c6006a41e0006a222b2006290300370300200441d0c6006a41d8006a222c2007290300370300200420042903a84e3703a047200441d0c6006a4188016a222d20042903c042221320042903f0417c220c2004290390437c221820042903e0437c221d20042903b0447c222020042903b042221420042903e0417c220a2004290380437c220b20042903d0437c220d20042903a0447c220e20042903a042221520042903d0417c220f20042903f0427c221020042903c0437c22112004290390447c2212423388200441a0c2006a41086a290300200441d0c1006a41086a2903007c200f201554ad7c200441f0c2006a41086a2903007c2010200f54ad7c200441c0c3006a41086a2903007c2011201054ad7c20044190c4006a41086a2903007c2012201154ad7c420d86847c220f423388200441b0c2006a41086a290300200441e0c1006a41086a2903007c200a201454ad7c20044180c3006a41086a2903007c200b200a54ad7c200441d0c3006a41086a2903007c200d200b54ad7c200441a0c4006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383370300200441d0c6006a4190016a222e20042903d04222112004290380427c220b20042903a0437c220d20042903f0437c220e20042903c0447c2210200a423388200441c0c2006a41086a290300200441f0c1006a41086a2903007c200c201354ad7c20044190c3006a41086a2903007c2018200c54ad7c200441e0c3006a41086a2903007c201d201854ad7c200441b0c4006a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff0383370300200441d0c6006a4198016a222f20042903e04222132004290390427c221820042903b0437c221d2004290380447c222020042903d0447c220a200c423388200441d0c2006a41086a29030020044180c2006a41086a2903007c200b201154ad7c200441a0c3006a41086a2903007c200d200b54ad7c200441f0c3006a41086a2903007c200e200d54ad7c200441c0c4006a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff0383370300200441d0c6006a4180016a2230200c423388200441e0c2006a41086a29030020044190c2006a41086a2903007c2018201354ad7c200441b0c3006a41086a2903007c201d201854ad7c20044180c4006a41086a2903007c2020201d54ad7c200441d0c4006a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c423388200f42ffffffffffffff03837c3703002004200c42ffffffffffffff03833703c84720044190cc006a41206a223120044188c9006a41c8006a223229030037030020044190cc006a41186a223320044188c9006a41c0006a2234290300222037030020044190cc006a41106a223520044188c9006a41386a2236290300221d37030020044190cc006a41086a223720044188c9006a41306a22382903002218370300200420042903b049220c3703904c2004200c2004290388497c220c3703904c203720182004290390497c22183703002035201d2004290398497c221d3703002033202020042903a0497c22203703002031203129030020042903a8497c220a370300200441c03e6a20042903d046220b4200200c420010be09200441c0c1006a200a42002024290300220d42137e420010be09200441f0c0006a202042002003290300220e42137e2212420010be09200441a0c0006a201d42002008290300221042137e2211420010be09200441d03f6a201842002009290300221342137e220f420010be09200441d03e6a20184200200b420010be09200441b0c1006a200c4200200d420010be09200441e0c0006a200a42002012420010be0920044190c0006a202042002011420010be09200441c03f6a201d4200200f420010be09200441e03e6a201d4200200b420010be09200441a0c1006a20184200200d420010be09200441d0c0006a200c4200200e420010be0920044180c0006a200a42002011420010be09200441b03f6a20204200200f420010be09200441f03e6a20204200200b420010be0920044190c1006a201d4200200d420010be09200441c0c0006a20184200200e420010be09200441f03f6a200c42002010420010be09200441a03f6a200a4200200f420010be09200441803f6a200a4200200b420010be0920044180c1006a20204200200d420010be09200441b0c0006a201d4200200e420010be09200441e03f6a201842002010420010be09200441903f6a200c42002013420010be092038290300210b2036290300210a2034290300211d200429039049210d200429039849210e20042903a0492120200441f03b6a20042903f846220c4200203229030020042903a8497d42f0ffffffffffff3f7c220f42338842137e20042903b0492004290388497d42d0fdffffffffff3f7c221242ffffffffffffff03837c2218420010be09200441f03d6a200f42ffffffffffffff0383201d20207d42f0ffffffffffff3f7c220f4233887c221d42002028290300222042137e420010be09200441b03d6a200f42ffffffffffffff0383200a200e7d42f0ffffffffffff3f7c220f4233887c220a42002027290300220e42137e2213420010be09200441f03c6a200f42ffffffffffffff0383200b200d7d42f0ffffffffffff3f7c220d4233887c220b42002026290300221042137e2211420010be09200441b03c6a200d42ffffffffffffff038320124233887c220d42002025290300221242137e220f420010be09200441e03b6a200d4200200c420010be09200441b03e6a201842002020420010be09200441a03d6a201d42002013420010be09200441e03c6a200a42002011420010be09200441a03c6a200b4200200f420010be09200441d03b6a200b4200200c420010be09200441a03e6a200d42002020420010be09200441e03d6a20184200200e420010be09200441d03c6a201d42002011420010be09200441903c6a200a4200200f420010be09200441c03b6a200a4200200c420010be09200441903e6a200b42002020420010be09200441d03d6a200d4200200e420010be09200441903d6a201842002010420010be09200441803c6a201d4200200f420010be09200441b03b6a201d4200200c420010be09200441803e6a200a42002020420010be09200441c03d6a200b4200200e420010be09200441803d6a200d42002010420010be09200441c03c6a201842002012420010be09200420042903d03c221320042903e03d7c220c20042903903c7c221820042903d03b7c221d20042903a03e7c222020042903a03d221420042903b03e7c220a20042903e03c7c220b20042903a03c7c220d20042903e03b7c220e20042903f03d221520042903f03b7c220f20042903b03d7c221020042903f03c7c221120042903b03c7c2212423388200441f03d6a41086a290300200441f03b6a41086a2903007c200f201554ad7c200441b03d6a41086a2903007c2010200f54ad7c200441f03c6a41086a2903007c2011201054ad7c200441b03c6a41086a2903007c2012201154ad7c420d86847c220f423388200441a03d6a41086a290300200441b03e6a41086a2903007c200a201454ad7c200441e03c6a41086a2903007c200b200a54ad7c200441a03c6a41086a2903007c200d200b54ad7c200441e03b6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703c84c200420042903803c221120042903903d7c220b20042903c03b7c220d20042903903e7c220e20042903d03d7c2210200a423388200441d03c6a41086a290300200441e03d6a41086a2903007c200c201354ad7c200441903c6a41086a2903007c2018200c54ad7c200441d03b6a41086a2903007c201d201854ad7c200441a03e6a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff03833703d04c200420042903b03b221320042903c03c7c221820042903803e7c221d20042903c03d7c222020042903803d7c220a200c423388200441803c6a41086a290300200441903d6a41086a2903007c200b201154ad7c200441c03b6a41086a2903007c200d200b54ad7c200441903e6a41086a2903007c200e200d54ad7c200441d03d6a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff03833703d84c2004200c423388200441b03b6a41086a290300200441c03c6a41086a2903007c2018201354ad7c200441803e6a41086a2903007c201d201854ad7c200441c03d6a41086a2903007c2020201d54ad7c200441803d6a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff03833703b84c2004200c423388200f42ffffffffffffff03837c3703c04c200441e03a6a20042903c847220c420020042903804a2218420010be09200441d03a6a20044188c9006a4198016a290300221d42002030290300222042137e420010be09200441803a6a20044188c9006a4190016a290300220a4200202d290300220e42137e2212420010be09200441b0396a20044188c9006a4188016a290300220b4200202e290300221042137e2211420010be09200441e0386a20044188c9006a4180016a290300220d4200202f290300221342137e220f420010be09200441d0386a200d4200200c420010be09200441a03b6a201842002020420010be09200441c03a6a201d42002012420010be09200441f0396a200a42002011420010be09200441a0396a200b4200200f420010be0920044190396a200b4200200c420010be09200441c0386a200d42002020420010be09200441903b6a20184200200e420010be09200441b03a6a201d42002011420010be09200441e0396a200a4200200f420010be09200441d0396a200a4200200c420010be0920044180396a200b42002020420010be09200441b0386a200d4200200e420010be09200441803b6a201842002010420010be09200441a03a6a201d4200200f420010be09200441903a6a201d4200200c420010be09200441c0396a200a42002020420010be09200441f0386a200b4200200e420010be09200441a0386a200d42002010420010be09200441f03a6a201842002013420010be09200420042903903a221c20042903f03a7c220c20042903c0397c221820042903f0387c221d20042903a0387c222020042903a03a221e20042903803b7c220a20042903d0397c220b2004290380397c220d20042903b0387c220e20042903b03a221f20042903903b7c220f20042903e0397c22102004290390397c221120042903c0387c221220042903c03a222120042903a03b7c221320042903f0397c221420042903a0397c221520042903d0387c221620042903d03a222220042903e03a7c221720042903803a7c221920042903b0397c221a20042903e0387c221b423388200441d03a6a41086a290300200441e03a6a41086a2903007c2017202254ad7c200441803a6a41086a2903007c2019201754ad7c200441b0396a41086a2903007c201a201954ad7c200441e0386a41086a2903007c201b201a54ad7c420d86847c2217423388200441c03a6a41086a290300200441a03b6a41086a2903007c2013202154ad7c200441f0396a41086a2903007c2014201354ad7c200441a0396a41086a2903007c2015201454ad7c200441d0386a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2213423388200441b03a6a41086a290300200441903b6a41086a2903007c200f201f54ad7c200441e0396a41086a2903007c2010200f54ad7c20044190396a41086a2903007c2011201054ad7c200441c0386a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03a6a41086a290300200441803b6a41086a2903007c200a201e54ad7c200441d0396a41086a2903007c200b200a54ad7c20044180396a41086a2903007c200d200b54ad7c200441b0386a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff03833703804d2004200f42ffffffffffffff03833703f84c2004201342ffffffffffffff03833703f04c2004200a423388200441903a6a41086a290300200441f03a6a41086a2903007c200c201c54ad7c200441c0396a41086a2903007c2018200c54ad7c200441f0386a41086a2903007c201d201854ad7c200441a0386a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c220c423388201742ffffffffffffff03837c3703e84c2004200c42ffffffffffffff03833703e04c20044190356a20042903a047220c420020042903d8492218420010be09200441a0366a20044188c9006a41f0006a290300221d4200202c290300222042137e420010be09200441e0366a20044188c9006a41e8006a290300220a4200202b290300220e42137e2212420010be09200441a0376a20044188c9006a41e0006a290300220b4200202a290300221042137e2211420010be09200441e0376a20044188c9006a41d8006a290300220d42002029290300221342137e220f420010be09200441e0356a200d4200200c420010be09200441a0356a201842002020420010be09200441b0366a201d42002012420010be09200441f0366a200a42002011420010be09200441b0376a200b4200200f420010be09200441f0356a200b4200200c420010be09200441f0376a200d42002020420010be09200441b0356a20184200200e420010be09200441c0366a201d42002011420010be0920044180376a200a4200200f420010be0920044180366a200a4200200c420010be09200441c0376a200b42002020420010be0920044180386a200d4200200e420010be09200441c0356a201842002010420010be09200441d0366a201d4200200f420010be0920044190366a201d4200200c420010be0920044190376a200a42002020420010be09200441d0376a200b4200200e420010be0920044190386a200d42002010420010be09200441d0356a201842002013420010be092004200429039036221c20042903d0357c220c2004290390377c221820042903d0377c221d2004290390387c222020042903d036221e20042903c0357c220a2004290380367c220b20042903c0377c220d2004290380387c220e20042903c036221f20042903b0357c220f2004290380377c221020042903f0357c221120042903f0377c221220042903b036222120042903a0357c221320042903f0367c221420042903b0377c221520042903e0357c221620042903a03622222004290390357c221720042903e0367c221920042903a0377c221a20042903e0377c221b423388200441a0366a41086a29030020044190356a41086a2903007c2017202254ad7c200441e0366a41086a2903007c2019201754ad7c200441a0376a41086a2903007c201a201954ad7c200441e0376a41086a2903007c201b201a54ad7c420d86847c2217423388200441b0366a41086a290300200441a0356a41086a2903007c2013202154ad7c200441f0366a41086a2903007c2014201354ad7c200441b0376a41086a2903007c2015201454ad7c200441e0356a41086a2903007c2016201554ad7c2017201654ad7c420d86847c2213423388200441c0366a41086a290300200441b0356a41086a2903007c200f201f54ad7c20044180376a41086a2903007c2010200f54ad7c200441f0356a41086a2903007c2011201054ad7c200441f0376a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441d0366a41086a290300200441c0356a41086a2903007c200a201e54ad7c20044180366a41086a2903007c200b200a54ad7c200441c0376a41086a2903007c200d200b54ad7c20044180386a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42338820044190366a41086a290300200441d0356a41086a2903007c200c201c54ad7c20044190376a41086a2903007c2018200c54ad7c200441d0376a41086a2903007c201d201854ad7c20044190386a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c221842ffffffffffffff0383220c3703884d20042018423388201742ffffffffffffff03837c22183703904d2004200a42ffffffffffffff0383221d3703a84d2004200f42ffffffffffffff038322203703a04d2004201342ffffffffffffff0383220a3703984d200441b0cd006a41086a2231201820187c370300200441b0cd006a41106a2224200a200a7c370300200441b0cd006a41186a2225202020207c370300200441b0cd006a41206a2226201d201d7c3703002004200c200c7c3703b04d20042903c04c211c20042903c84c211e20042903d04c211f20042903d84c212120042903b84c2122200420042903803f222320042903903f7c220c2004290380417c221820042903b0407c221d20042903e03f7c222020042903a03f223920042903f03f7c220a20042903f03e7c220b2004290390417c220d20042903c0407c220e200429038040223a20042903d0407c220f20042903b03f7c221020042903e03e7c221120042903a0417c221220042903e040223b20042903b0417c22132004290390407c221420042903c03f7c221520042903d03e7c221620042903c041223c20042903c03e7c221720042903f0407c221920042903a0407c221a20042903d03f7c221b423388200441c0c1006a41086a290300200441c03e6a41086a2903007c2017203c54ad7c200441f0c0006a41086a2903007c2019201754ad7c200441a0c0006a41086a2903007c201a201954ad7c200441d03f6a41086a2903007c201b201a54ad7c420d86847c2217423388200441e0c0006a41086a290300200441b0c1006a41086a2903007c2013203b54ad7c20044190c0006a41086a2903007c2014201354ad7c200441c03f6a41086a2903007c2015201454ad7c200441d03e6a41086a2903007c2016201554ad7c2017201654ad7c420d86847c221342338820044180c0006a41086a290300200441d0c0006a41086a2903007c200f203a54ad7c200441b03f6a41086a2903007c2010200f54ad7c200441e03e6a41086a2903007c2011201054ad7c200441a0c1006a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a03f6a41086a290300200441f03f6a41086a2903007c200a203954ad7c200441f03e6a41086a2903007c200b200a54ad7c20044190c1006a41086a2903007c200d200b54ad7c200441c0c0006a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a423388200441803f6a41086a290300200441903f6a41086a2903007c200c202354ad7c20044180c1006a41086a2903007c2018200c54ad7c200441b0c0006a41086a2903007c201d201854ad7c200441e03f6a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201b42ffffffffffffff03837c220c423388201742ffffffffffffff03837c220e3703884e2004200c42ffffffffffffff0383220b3703804e2004200a42ffffffffffffff0383220a3703a04e2004200f42ffffffffffffff0383220d3703984e2004201342ffffffffffffff0383220f3703904e2004200b20042903b84c7c3703804e2004200e20042903c04c7c3703884e2004200f20042903c84c7c3703904e2004200d20042903d04c7c3703984e2004200a20042903d84c7c3703a04e2002202629030037030020052025290300222037030020062024290300221d370300200720312903002218370300200420042903b04d220c3703a84e2004200c20042903e04c7c220c3703a84e2007201820042903e84c7c22183703002006201d20042903f04c7c221d3703002005202020042903f84c7c22123703002002200229030020042903804d7c2215370300200441f0276a202629030020042903804d7d42f0ffffffffffff3f7c221042338842137e20042903b04d20042903e04c7d42d0fdffffffffff3f7c221142ffffffffffffff03837c22204200200a20217d42f0ffffffffffff3f7c221342338842137e200b20227d42d0fdffffffffff3f7c221442ffffffffffffff03837c220a420010be0920044180356a201342ffffffffffffff0383200d201f7d42f0ffffffffffff3f7c220d4233887c220b4200203129030020042903e84c7d42f0ffffffffffff3f7c221642ffffffffffffff038320114233887c221342137e2223420010be0920044180346a200d42ffffffffffffff0383200f201e7d42f0ffffffffffff3f7c220f4233887c220d4200202429030020042903f04c7d42f0ffffffffffff3f7c221142ffffffffffffff038320164233887c221942137e221e420010be0920044180336a200f42ffffffffffffff0383200e201c7d42f0ffffffffffff3f7c220f4233887c220e4200202529030020042903f84c7d42f0ffffffffffff3f7c221642ffffffffffffff038320114233887c221c42137e221b420010be09200441d0266a200f42ffffffffffffff038320144233887c220f4200201042ffffffffffffff038320164233887c222142137e2216420010be09200441c0266a200f42002020420010be09200441e0276a200a42002013420010be09200441f0336a200b4200201e420010be09200441f0326a200d4200201b420010be0920044180326a200e42002016420010be0920044180316a200e42002020420010be09200441b0266a200f42002013420010be09200441d0276a200a42002019420010be09200441e0326a200b4200201b420010be09200441f0316a200d42002016420010be09200441f0306a200d42002020420010be09200441e0346a200e42002013420010be0920044180256a200f42002019420010be09200441c0276a200a4200201c420010be09200441e0316a200b42002016420010be09200441e0306a200b42002020420010be09200441d0346a200d42002013420010be09200441c0336a200e42002019420010be09200441d0236a200f4200201c420010be09200441b0276a200a42002021420010be09200441902b6a200c420020042903804e2210420010be09200441802d6a20042903a04e221a4200201842137e420010be09200441802e6a20042903984e22174200201d42137e2239420010be09200441802f6a20042903904e22144200201242137e2222420010be0920044180306a20042903884e22114200201542137e221f420010be09200441f02f6a20114200200c420010be09200441a02b6a201042002018420010be09200441f02c6a201a42002039420010be09200441f02d6a201742002022420010be09200441f02e6a20144200201f420010be09200441e02e6a20144200200c420010be09200441e02f6a201142002018420010be09200441b02b6a20104200201d420010be09200441e02c6a201a42002022420010be09200441e02d6a20174200201f420010be09200441d02d6a20174200200c420010be09200441d02e6a201442002018420010be09200441d02f6a20114200201d420010be09200441c02b6a201042002012420010be09200441d02c6a201a4200201f420010be09200441c02c6a201a4200200c420010be09200441c02d6a201742002018420010be09200441c02e6a20144200201d420010be09200441c02f6a201142002012420010be09200441d02b6a201042002015420010be09200441d0306a20204200200c420010be09200441f0346a201542002023420010be09200441e0336a20124200201e420010be09200441d0326a201d4200201b420010be09200441d0316a201842002016420010be09200441c0306a201842002020420010be09200441c0346a200c42002013420010be09200441d0336a20154200201e420010be09200441c0326a20124200201b420010be09200441c0316a201d42002016420010be09200441b0306a201d42002020420010be09200441b0346a201842002013420010be09200441b0336a200c42002019420010be09200441b0326a20154200201b420010be09200441b0316a201242002016420010be09200441a0306a201242002020420010be09200441a0346a201d42002013420010be09200441a0336a201842002019420010be09200441a0326a200c4200201c420010be09200441a0316a201542002016420010be0920044190306a201542002020420010be0920044190346a201242002013420010be0920044190336a201d42002019420010be0920044190326a20184200201c420010be0920044190316a200c42002021420010be09200441a0276a20104200200a420010be09200441902f6a200b4200201142137e420010be09200441a02e6a200d4200201442137e221d420010be09200441b02d6a200e4200201742137e2218420010be0920044190106a200f4200201a42137e220c420010be0920044180106a200f42002010420010be0920044190276a200a42002011420010be09200441902e6a200b4200201d420010be09200441a02d6a200d42002018420010be09200441b02c6a200e4200200c420010be09200441e02b6a200e42002010420010be09200441f00f6a200f42002011420010be0920044180276a200a42002014420010be09200441902d6a200b42002018420010be09200441a02c6a200d4200200c420010be09200441f02b6a200d42002010420010be09200441b02f6a200e42002011420010be09200441900f6a200f42002014420010be09200441f0266a200a42002017420010be09200441902c6a200b4200200c420010be09200441802c6a200b42002010420010be09200441a02f6a200d42002011420010be09200441b02e6a200e42002014420010be09200441b00e6a200f42002017420010be09200441e0266a200a4200201a420010be09200420042903e02c221320042903b02b7c220c20042903e02d7c221820042903e02e7c221d20042903e02f7c222020042903f02c221420042903a02b7c220a20042903f02d7c220b20042903f02e7c220d20042903f02f7c220e20042903802d221520042903902b7c220f20042903802e7c221020042903802f7c22112004290380307c2212423388200441802d6a41086a290300200441902b6a41086a2903007c200f201554ad7c200441802e6a41086a2903007c2010200f54ad7c200441802f6a41086a2903007c2011201054ad7c20044180306a41086a2903007c2012201154ad7c420d86847c220f423388200441f02c6a41086a290300200441a02b6a41086a2903007c200a201454ad7c200441f02d6a41086a2903007c200b200a54ad7c200441f02e6a41086a2903007c200d200b54ad7c200441f02f6a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff038322173703c04d200420042903d02c221120042903c02b7c220b20042903d02d7c220d20042903d02e7c220e20042903d02f7c2210200a423388200441e02c6a41086a290300200441b02b6a41086a2903007c200c201354ad7c200441e02d6a41086a2903007c2018200c54ad7c200441e02e6a41086a2903007c201d201854ad7c200441e02f6a41086a2903007c2020201d54ad7c200a202054ad7c420d86847c220c42ffffffffffffff038322213703c84d200420042903c02c221320042903d02b7c221820042903c02d7c221d20042903c02e7c222020042903c02f7c220a200c423388200441d02c6a41086a290300200441c02b6a41086a2903007c200b201154ad7c200441d02d6a41086a2903007c200d200b54ad7c200441d02e6a41086a2903007c200e200d54ad7c200441d02f6a41086a2903007c2010200e54ad7c200c201054ad7c420d86847c220c42ffffffffffffff038322233703d04d2004200c423388200441c02c6a41086a290300200441d02b6a41086a2903007c2018201354ad7c200441c02d6a41086a2903007c201d201854ad7c200441c02e6a41086a2903007c2020201d54ad7c200441c02f6a41086a2903007c200a202054ad7c200c200a54ad7c420d868442137e201242ffffffffffffff03837c220c42ffffffffffffff038322143703b04d2004200c423388200f42ffffffffffffff03837c22153703b84d20044180286a20042903903022222004290390317c220c2004290390347c22182004290390337c221d2004290390327c222020042903a031223920042903a0327c220a20042903a0307c220b20042903a0347c220d20042903a0337c220e20042903b032223a20042903b0337c220f20042903b0317c221020042903b0307c221120042903b0347c221220042903d033223b20042903c0347c221320042903c0327c221620042903c0317c221920042903c0307c221a20042903f034223c20042903d0307c221b20042903e0337c221c20042903d0327c221e20042903d0317c221f423388200441f0346a41086a290300200441d0306a41086a2903007c201b203c54ad7c200441e0336a41086a2903007c201c201b54ad7c200441d0326a41086a2903007c201e201c54ad7c200441d0316a41086a2903007c201f201e54ad7c420d86847c221b423388200441d0336a41086a290300200441c0346a41086a2903007c2013203b54ad7c200441c0326a41086a2903007c2016201354ad7c200441c0316a41086a2903007c2019201654ad7c200441c0306a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c2213423388200441b0326a41086a290300200441b0336a41086a2903007c200f203a54ad7c200441b0316a41086a2903007c2010200f54ad7c200441b0306a41086a2903007c2011201054ad7c200441b0346a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441a0316a41086a290300200441a0326a41086a2903007c200a203954ad7c200441a0306a41086a2903007c200b200a54ad7c200441a0346a41086a2903007c200d200b54ad7c200441a0336a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a42ffffffffffffff0383223d42f0ffffffffffff3f7c223e20237d221242338842137e200a42338820044190306a41086a29030020044190316a41086a2903007c200c202254ad7c20044190346a41086a2903007c2018200c54ad7c20044190336a41086a2903007c201d201854ad7c20044190326a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201f42ffffffffffffff03837c222042ffffffffffffff0383223f42d0fdffffffffff3f7c224020147d220a42ffffffffffffff03837c220c4200203f20147c2218420010be09200441c0296a203d20237c221d42002020423388201b42ffffffffffffff03837c224142f0ffffffffffff3f7c224220157d220b42ffffffffffffff0383200a4233887c222042137e420010be09200441a02a6a200f42ffffffffffffff0383224320217c220a4200201342ffffffffffffff0383224442f0ffffffffffff3f7c224520177d220d42ffffffffffffff0383200b4233887c220e42137e2213420010be09200441b02a6a204420177c220b4200204342f0ffffffffffff3f7c224620217d220f42ffffffffffffff0383200d4233887c221042137e2211420010be09200441d0296a204120157c220d4200201242ffffffffffffff0383200f4233887c221242137e220f420010be0920044180296a200d4200200c420010be0920044190286a201842002020420010be09200441902a6a201d42002013420010be09200441e02a6a200a42002011420010be09200441c02a6a200b4200200f420010be09200441f0286a200b4200200c420010be09200441b0296a200d42002020420010be09200441a0286a20184200200e420010be09200441d02a6a201d42002011420010be09200441f02a6a200a4200200f420010be09200441e0286a200a4200200c420010be09200441a0296a200b42002020420010be09200441e0296a200d4200200e420010be09200441b0286a201842002010420010be09200441802b6a201d4200200f420010be09200441d0286a201d4200200c420010be0920044190296a200a42002020420010be09200441802a6a200b4200200e420010be09200441f0296a200d42002010420010be09200441c0286a201842002012420010be0920044180216a2014420020042903e030222220042903b0277c220c20042903d0347c221820042903c0337c221d20042903d0237c222020042903e031223920042903c0277c220a20042903f0307c220b20042903e0347c220d2004290380257c220e20042903e032223a20042903d0277c220f20042903f0317c22102004290380317c221120042903b0267c221220042903f033223b20042903e0277c221320042903f0327c22162004290380327c221920042903c0267c221a200429038035223c20042903f0277c221b2004290380347c221c2004290380337c221e20042903d0267c221f42338820044180356a41086a290300200441f0276a41086a2903007c201b203c54ad7c20044180346a41086a2903007c201c201b54ad7c20044180336a41086a2903007c201e201c54ad7c200441d0266a41086a2903007c201f201e54ad7c420d86847c221b423388200441f0336a41086a290300200441e0276a41086a2903007c2013203b54ad7c200441f0326a41086a2903007c2016201354ad7c20044180326a41086a2903007c2019201654ad7c200441c0266a41086a2903007c201a201954ad7c201b201a54ad7c420d86847c2213423388200441e0326a41086a290300200441d0276a41086a2903007c200f203a54ad7c200441f0316a41086a2903007c2010200f54ad7c20044180316a41086a2903007c2011201054ad7c200441b0266a41086a2903007c2012201154ad7c2013201254ad7c420d86847c220f423388200441e0316a41086a290300200441c0276a41086a2903007c200a203954ad7c200441f0306a41086a2903007c200b200a54ad7c200441e0346a41086a2903007c200d200b54ad7c20044180256a41086a2903007c200e200d54ad7c200f200e54ad7c420d86847c220a423388200441e0306a41086a290300200441b0276a41086a2903007c200c202254ad7c200441d0346a41086a2903007c2018200c54ad7c200441c0336a41086a2903007c201d201854ad7c200441d0236a41086a2903007c2020201d54ad7c200a202054ad7c420d868442137e201f42ffffffffffffff03837c220c42ffffffffffffff03832218420010be09200441b0226a200a42ffffffffffffff0383221d4200201542137e420010be09200441e0236a200f42ffffffffffffff038322204200201742137e220e420010be0920044190256a201342ffffffffffffff0383220a4200202142137e220d420010be09200441a0226a200c423388201b42ffffffffffffff03837c220b4200202342137e220c420010be0920044190226a200b42002014420010be09200441f0206a201842002015420010be09200441c0226a201d4200200e420010be09200441f0236a20204200200d420010be09200441a0256a200a4200200c420010be09200441b0256a200a42002014420010be0920044180226a200b42002015420010be09200441e0206a201842002017420010be09200441d0226a201d4200200d420010be0920044180246a20204200200c420010be0920044190246a202042002014420010be09200441c0256a200a42002015420010be09200441f0216a200b42002017420010be09200441d0206a201842002021420010be09200441e0226a201d4200200c420010be09200441f0226a201d42002014420010be09200441a0246a202042002015420010be09200441d0256a200a42002017420010be09200441e0216a200b42002021420010be09200441c0206a201842002023420010be09200420042903d022221c20042903e0207c220c2004290380247c220d20042903b0257c220e2004290380227c220f20042903c022221e20042903f0207c221020042903f0237c221120042903a0257c22122004290390227c221320042903b022221f2004290380217c221620042903e0237c22192004290390257c221a20042903a0227c221b423388200441b0226a41086a29030020044180216a41086a2903007c2016201f54ad7c200441e0236a41086a2903007c2019201654ad7c20044190256a41086a2903007c201a201954ad7c200441a0226a41086a2903007c201b201a54ad7c420d86847c2216423388200441c0226a41086a290300200441f0206a41086a2903007c2010201e54ad7c200441f0236a41086a2903007c2011201054ad7c200441a0256a41086a2903007c2012201154ad7c20044190226a41086a2903007c2013201254ad7c2016201354ad7c420d86847c221042ffffffffffffff03833703904e200420042903e022221a20042903d0207c22112004290390247c221220042903c0257c221320042903f0217c22192010423388200441d0226a41086a290300200441e0206a41086a2903007c200c201c54ad7c20044180246a41086a2903007c200d200c54ad7c200441b0256a41086a2903007c200e200d54ad7c20044180226a41086a2903007c200f200e54ad7c2010200f54ad7c420d86847c220c42ffffffffffffff03833703984e200420042903f022221c20042903c0207c220d20042903a0247c220e20042903d0257c220f20042903e0217c2210200c423388200441e0226a41086a290300200441d0206a41086a2903007c2011201a54ad7c20044190246a41086a2903007c2012201154ad7c200441c0256a41086a2903007c2013201254ad7c200441f0216a41086a2903007c2019201354ad7c200c201954ad7c420d86847c220c42ffffffffffffff03833703a04e2004200c423388200441f0226a41086a290300200441c0206a41086a2903007c200d201c54ad7c200441a0246a41086a2903007c200e200d54ad7c200441d0256a41086a2903007c200f200e54ad7c200441e0216a41086a2903007c2010200f54ad7c200c201054ad7c420d868442137e201b42ffffffffffffff03837c220c42ffffffffffffff03833703804e2004200c423388201642ffffffffffffff03837c3703884e20044190286a41086a2903002147200441902a6a41086a2903002148200429039028213b20042903902a210c200441e02a6a41086a290300214920042903e02a213c200441c02a6a41086a290300214a20042903c02a214b20044180296a41086a290300214c200429038029214d20044180286a41086a290300214e200441c0296a41086a290300214f200429038028215020042903c029210d200441a02a6a41086a290300215120042903a02a2152200441b02a6a41086a290300215320042903b02a2154200441d0296a41086a290300215520042903d029215620042903d02a210f20042903a028211f20042903f02a212220042903f028213920042903b029213a200441d02a6a41086a2903002157200441a0286a41086a2903002158200441f02a6a41086a2903002159200441f0286a41086a290300215a200441b0296a41086a290300215b20042903802b211020042903b028211a20042903e028211b20042903a029211c20042903e029211e200441802b6a41086a290300215c200441b0286a41086a290300215d200441e0286a41086a290300215e200441a0296a41086a290300215f200441e0296a41086a290300216020042903c028211220042903d0282111200429039029211320042903802a211620042903f0292119200441c0286a41086a2903002161200441d0286a41086a290300216220044190296a41086a2903002163200441802a6a41086a2903002164200441f0296a41086a290300216520044188c9006a20044180ce006a41011078200441e01c6a200429038849220e4200201920162013201120127c22127c22137c22167c2219201e201c201b2010201a7c221a7c221b7c221c7c221e203a20392022200f201f7c221f7c22227c22397c223a204d204b203c200c203b7c223b7c223c7c224b7c224d205620542052200d20507c22507c22527c22547c2256423388205520532051204f204e7c2050200d54ad7c7c2052205054ad7c7c2054205254ad7c7c2056205454ad7c420d86847c220d423388204c204a2049204820477c203b200c54ad7c7c203c203b54ad7c7c204b203c54ad7c7c204d204b54ad7c200d204d54ad7c420d86847c223b423388205b205a2059205720587c201f200f54ad7c7c2022201f54ad7c7c2039202254ad7c7c203a203954ad7c203b203a54ad7c420d86847c221f4233882060205f205e205c205d7c201a201054ad7c7c201b201a54ad7c7c201c201b54ad7c7c201e201c54ad7c201f201e54ad7c420d86847c220f423388206520642063206220617c2012201154ad7c7c2013201254ad7c7c2016201354ad7c7c2019201654ad7c200f201954ad7c420d868442137e205642ffffffffffffff03837c221142ffffffffffffff0383220c420010be09200441e01f6a200f42ffffffffffffff038322194200200429039049220f42137e420010be09200441901f6a201f42ffffffffffffff038322164200200429039849221042137e221b420010be09200441c01e6a203b42ffffffffffffff03832213420020042903a049221242137e221a420010be09200441f01d6a2011423388200d42ffffffffffffff03837c220d420020042903a849221c42137e2211420010be09200441f01c6a200d4200200e420010be09200441d01f6a200c4200200f420010be09200441801f6a20194200201b420010be09200441b01e6a20164200201a420010be09200441e01d6a201342002011420010be09200441801d6a20134200200e420010be09200441c01f6a200d4200200f420010be09200441f01e6a200c42002010420010be09200441a01e6a20194200201a420010be09200441d01d6a201642002011420010be09200441901d6a20164200200e420010be09200441b01f6a20134200200f420010be09200441e01e6a200d42002010420010be09200441901e6a200c42002012420010be09200441c01d6a201942002011420010be09200441a01d6a20194200200e420010be09200441a01f6a20164200200f420010be09200441d01e6a201342002010420010be09200441801e6a200d42002012420010be09200441b01d6a200c4200201c420010be09200420042903a01e223a20042903f01e7c220e20042903d01d7c220f20042903801d7c221020042903c01f7c221120042903801f223b20042903d01f7c221220042903b01e7c221a20042903e01d7c221b20042903f01c7c221c20042903e01f223c20042903e01c7c221e20042903901f7c221f20042903c01e7c222220042903f01d7c2239423388200441e01f6a41086a290300200441e01c6a41086a2903007c201e203c54ad7c200441901f6a41086a2903007c201f201e54ad7c200441c01e6a41086a2903007c2022201f54ad7c200441f01d6a41086a2903007c2039202254ad7c420d86847c221e423388200441801f6a41086a290300200441d01f6a41086a2903007c2012203b54ad7c200441b01e6a41086a2903007c201a201254ad7c200441e01d6a41086a2903007c201b201a54ad7c200441f01c6a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c221242ffffffffffffff03833703b84e200420042903c01d222220042903901e7c221a20042903901d7c221b20042903b01f7c221c20042903e01e7c221f2012423388200441a01e6a41086a290300200441f01e6a41086a2903007c200e203a54ad7c200441d01d6a41086a2903007c200f200e54ad7c200441801d6a41086a2903007c2010200f54ad7c200441c01f6a41086a2903007c2011201054ad7c2012201154ad7c420d86847c220e42ffffffffffffff03833703c04e200420042903a01d223a20042903b01d7c220f20042903a01f7c221020042903d01e7c221120042903801e7c2212200e423388200441c01d6a41086a290300200441901e6a41086a2903007c201a202254ad7c200441901d6a41086a2903007c201b201a54ad7c200441b01f6a41086a2903007c201c201b54ad7c200441e01e6a41086a2903007c201f201c54ad7c200e201f54ad7c420d86847c220e42ffffffffffffff03833703c84e2004200e423388200441a01d6a41086a290300200441b01d6a41086a2903007c200f203a54ad7c200441a01f6a41086a2903007c2010200f54ad7c200441d01e6a41086a2903007c2011201054ad7c200441801e6a41086a2903007c2012201154ad7c200e201254ad7c420d868442137e203942ffffffffffffff03837c220e42ffffffffffffff03833703a84e2004200e423388201e42ffffffffffffff03837c3703b04e200441f0ca006a41106a4200370300200441f0ca006a41186a4200370300200441f0ca006a41206a4200370300200442003703f84a200442013703f04a200441d0c6006a200441f0ca006a200441a8ce006a1079200441c0146a200c420020042903d846220e420010be09200441e0156a200441d0c6006a41286a290300220f4200200d42137e420010be0920044180176a200929030022104200201342137e221c420010be09200441a0186a200829030022114200201642137e221b420010be09200441c0196a200329030022124200201942137e221a420010be09200441b0196a20124200200c420010be09200441b0146a200e4200200d420010be09200441d0156a200f4200201c420010be09200441f0166a20104200201b420010be0920044190186a20114200201a420010be0920044180186a20114200200c420010be09200441a0196a20124200200d420010be09200441a0146a200e42002013420010be09200441c0156a200f4200201b420010be09200441e0166a20104200201a420010be09200441d0166a20104200200c420010be09200441f0176a20114200200d420010be0920044190196a201242002013420010be09200441c0136a200e42002016420010be09200441b0156a200f4200201a420010be09200441a0156a200f4200200c420010be09200441c0166a20104200200d420010be09200441e0176a201142002013420010be0920044180196a201242002016420010be09200441e0126a200e42002019420010be0920044180126a20042903804e220c4200200e420010be0920044190156a200f420020042903884e220d42137e420010be09200441b0166a2010420020042903904e221342137e221b420010be09200441d0176a2011420020042903984e221942137e221a420010be09200441f0186a2012420020042903a04e221c42137e2216420010be09200441e0186a20124200200c420010be09200441f0116a200e4200200d420010be0920044180156a200f4200201b420010be09200441a0166a20104200201a420010be09200441c0176a201142002016420010be09200441b0176a20114200200c420010be09200441d0186a20124200200d420010be09200441e0116a200e42002013420010be09200441f0146a200f4200201a420010be0920044190166a201042002016420010be0920044180166a20104200200c420010be09200441a0176a20114200200d420010be09200441c0186a201242002013420010be09200441d0116a200e42002019420010be09200441e0146a200f42002016420010be09200441d0146a200f4200200c420010be09200441f0156a20104200200d420010be0920044190176a201142002013420010be09200441b0186a201242002019420010be09200441c0116a200e4200201c420010be09200441c00d6a20042903802c224b20042903e0267c220c20042903a02f7c220d20042903b02e7c220e20042903b00e7c220f20042903902c224d20042903f0267c221020042903f02b7c221120042903b02f7c221220042903900f7c221320042903902d22502004290380277c221620042903a02c7c221920042903e02b7c221a20042903f00f7c221b20042903902e22522004290390277c221c20042903a02d7c221e20042903b02c7c221f2004290380107c222220042903902f225420042903a0277c223920042903a02e7c223a20042903b02d7c223b2004290390107c223c423388200441902f6a41086a290300200441a0276a41086a2903007c2039205454ad7c200441a02e6a41086a2903007c203a203954ad7c200441b02d6a41086a2903007c203b203a54ad7c20044190106a41086a2903007c203c203b54ad7c420d86847c2239423388200441902e6a41086a29030020044190276a41086a2903007c201c205254ad7c200441a02d6a41086a2903007c201e201c54ad7c200441b02c6a41086a2903007c201f201e54ad7c20044180106a41086a2903007c2022201f54ad7c2039202254ad7c420d86847c221e423388200441902d6a41086a29030020044180276a41086a2903007c2016205054ad7c200441a02c6a41086a2903007c2019201654ad7c200441e02b6a41086a2903007c201a201954ad7c200441f00f6a41086a2903007c201b201a54ad7c201e201b54ad7c420d86847c2216423388200441902c6a41086a290300200441f0266a41086a2903007c2010204d54ad7c200441f02b6a41086a2903007c2011201054ad7c200441b02f6a41086a2903007c2012201154ad7c200441900f6a41086a2903007c2013201254ad7c2016201354ad7c420d86847c2210423388200441802c6a41086a290300200441e0266a41086a2903007c200c204b54ad7c200441a02f6a41086a2903007c200d200c54ad7c200441b02e6a41086a2903007c200e200d54ad7c200441b00e6a41086a2903007c200f200e54ad7c2010200f54ad7c420d868442137e203c42ffffffffffffff03837c225642ffffffffffffff0383220d420020042903d014224720042903c0117c220c20042903f0157c220e2004290390177c220f20042903b0187c221120042903e014224820042903d0117c22122004290380167c221320042903a0177c221920042903c0187c221a20042903f014224920042903e0117c221b2004290390167c221c20042903b0177c221f20042903d0187c2222200429038015224a20042903f0117c223a20042903a0167c223b20042903c0177c223c20042903e0187c224b200429039015224c2004290380127c224d20042903b0167c225020042903d0177c225220042903f0187c225442338820044190156a41086a29030020044180126a41086a2903007c204d204c54ad7c200441b0166a41086a2903007c2050204d54ad7c200441d0176a41086a2903007c2052205054ad7c200441f0186a41086a2903007c2054205254ad7c420d86847c224d42338820044180156a41086a290300200441f0116a41086a2903007c203a204a54ad7c200441a0166a41086a2903007c203b203a54ad7c200441c0176a41086a2903007c203c203b54ad7c200441e0186a41086a2903007c204b203c54ad7c204d204b54ad7c420d86847c223a423388200441f0146a41086a290300200441e0116a41086a2903007c201b204954ad7c20044190166a41086a2903007c201c201b54ad7c200441b0176a41086a2903007c201f201c54ad7c200441d0186a41086a2903007c2022201f54ad7c203a202254ad7c420d86847c221c423388200441e0146a41086a290300200441d0116a41086a2903007c2012204854ad7c20044180166a41086a2903007c2013201254ad7c200441a0176a41086a2903007c2019201354ad7c200441c0186a41086a2903007c201a201954ad7c201c201a54ad7c420d86847c2212423388200441d0146a41086a290300200441c0116a41086a2903007c200c204754ad7c200441f0156a41086a2903007c200e200c54ad7c20044190176a41086a2903007c200f200e54ad7c200441b0186a41086a2903007c2011200f54ad7c2012201154ad7c420d868442137e205442ffffffffffffff03837c220c42ffffffffffffff0383221a420010be09200441900e6a201242ffffffffffffff0383221b42002056423388203942ffffffffffffff03837c220e42137e420010be09200441b00f6a201c42ffffffffffffff0383221c4200201e42ffffffffffffff0383221342137e2211420010be09200441e00e6a203a42ffffffffffffff0383221e4200201642ffffffffffffff0383221642137e220f420010be09200441f00c6a200c423388204d42ffffffffffffff03837c221f4200201042ffffffffffffff0383221942137e220c420010be09200441b00d6a201f4200200d420010be09200441800e6a201a4200200e420010be09200441a00f6a201b42002011420010be09200441d00e6a201c4200200f420010be09200441e00c6a201e4200200c420010be09200441a00d6a201e4200200d420010be09200441f00d6a201f4200200e420010be09200441c00f6a201a42002013420010be09200441c00e6a201b4200200f420010be09200441d00c6a201c4200200c420010be09200441900d6a201c4200200d420010be09200441e00d6a201e4200200e420010be09200441d00f6a201f42002013420010be09200441f00e6a201a42002016420010be09200441f00b6a201b4200200c420010be09200441800d6a201b4200200d420010be09200441d00d6a201c4200200e420010be09200441e00f6a201e42002013420010be09200441800f6a201f42002016420010be09200441a00e6a201a42002019420010be09200441b00a6a20042903800d224c20042903a00e7c220c20042903d00d7c220f20042903e00f7c221020042903800f7c221120042903f00b224e20042903f00e7c221220042903900d7c222220042903e00d7c223920042903d00f7c223a20042903c00e224f20042903c00f7c223b20042903d00c7c223c20042903a00d7c224b20042903f00d7c224d20042903a00f225120042903800e7c225020042903d00e7c225220042903e00c7c225420042903b00d7c225620042903900e225320042903c00d7c224720042903b00f7c224820042903e00e7c224920042903f00c7c224a423388200441900e6a41086a290300200441c00d6a41086a2903007c2047205354ad7c200441b00f6a41086a2903007c2048204754ad7c200441e00e6a41086a2903007c2049204854ad7c200441f00c6a41086a2903007c204a204954ad7c420d86847c2247423388200441a00f6a41086a290300200441800e6a41086a2903007c2050205154ad7c200441d00e6a41086a2903007c2052205054ad7c200441e00c6a41086a2903007c2054205254ad7c200441b00d6a41086a2903007c2056205454ad7c2047205654ad7c420d86847c2250423388200441c00e6a41086a290300200441c00f6a41086a2903007c203b204f54ad7c200441d00c6a41086a2903007c203c203b54ad7c200441a00d6a41086a2903007c204b203c54ad7c200441f00d6a41086a2903007c204d204b54ad7c2050204d54ad7c420d86847c223b423388200441f00b6a41086a290300200441f00e6a41086a2903007c2012204e54ad7c200441900d6a41086a2903007c2022201254ad7c200441e00d6a41086a2903007c2039202254ad7c200441d00f6a41086a2903007c203a203954ad7c203b203a54ad7c420d86847c223c423388200441800d6a41086a290300200441a00e6a41086a2903007c200c204c54ad7c200441d00d6a41086a2903007c200f200c54ad7c200441e00f6a41086a2903007c2010200f54ad7c200441800f6a41086a2903007c2011201054ad7c203c201154ad7c420d868442137e204a42ffffffffffffff03837c225542ffffffffffffff03832222420020042903a015225720042903e0127c220c20042903c0167c220f20042903e0177c22102004290380197c221120042903b015225820042903c0137c221220042903d0167c223920042903f0177c223a2004290390197c224b20042903c015225920042903a0147c224d20042903e0167c22522004290380187c225420042903a0197c225620042903d015225a20042903b0147c224820042903f0167c22492004290390187c224a20042903b0197c224c20042903e015225b20042903c0147c224e2004290380177c224f20042903a0187c225120042903c0197c2253423388200441e0156a41086a290300200441c0146a41086a2903007c204e205b54ad7c20044180176a41086a2903007c204f204e54ad7c200441a0186a41086a2903007c2051204f54ad7c200441c0196a41086a2903007c2053205154ad7c420d86847c224e423388200441d0156a41086a290300200441b0146a41086a2903007c2048205a54ad7c200441f0166a41086a2903007c2049204854ad7c20044190186a41086a2903007c204a204954ad7c200441b0196a41086a2903007c204c204a54ad7c204e204c54ad7c420d86847c2248423388200441c0156a41086a290300200441a0146a41086a2903007c204d205954ad7c200441e0166a41086a2903007c2052204d54ad7c20044180186a41086a2903007c2054205254ad7c200441a0196a41086a2903007c2056205454ad7c2048205654ad7c420d86847c224d423388200441b0156a41086a290300200441c0136a41086a2903007c2012205854ad7c200441d0166a41086a2903007c2039201254ad7c200441f0176a41086a2903007c203a203954ad7c20044190196a41086a2903007c204b203a54ad7c204d204b54ad7c420d86847c2212423388200441a0156a41086a290300200441e0126a41086a2903007c200c205754ad7c200441c0166a41086a2903007c200f200c54ad7c200441e0176a41086a2903007c2010200f54ad7c20044180196a41086a2903007c2011201054ad7c2012201154ad7c420d868442137e205342ffffffffffffff03837c225242ffffffffffffff0383220c420010be09200441800b6a201242ffffffffffffff0383220f42002055423388204742ffffffffffffff03837c223942137e420010be09200441900c6a204d42ffffffffffffff038322104200205042ffffffffffffff0383223a42137e2250420010be09200441b00b6a204842ffffffffffffff038322114200203b42ffffffffffffff0383224b42137e224d420010be09200441e0096a2052423388204e42ffffffffffffff03837c22124200203c42ffffffffffffff0383223c42137e223b420010be09200441a00a6a201242002022420010be09200441f00a6a200c42002039420010be09200441800c6a200f42002050420010be09200441a00b6a20104200204d420010be09200441d0096a20114200203b420010be09200441900a6a201142002022420010be09200441e00a6a201242002039420010be09200441a00c6a200c4200203a420010be09200441900b6a200f4200204d420010be09200441c0096a20104200203b420010be09200441800a6a201042002022420010be09200441d00a6a201142002039420010be09200441b00c6a20124200203a420010be09200441c00b6a200c4200204b420010be09200441e0086a200f4200203b420010be09200441f0096a200f42002022420010be09200441c00a6a201042002039420010be09200441c00c6a20114200203a420010be09200441d00b6a20124200204b420010be09200441e00b6a200c4200203c420010be09200441b0206a2018420042b0c1bad0f4e48603420010be0920044180236a201d420042a7a7fbf49beaf607420010be09200441b0246a2020420042a0d69f90da80b1cb00420010be09200441e0256a200a420042badf96dcb5c3bac700420010be09200441d0216a200b420042a7ecfac2b5f7ea19420010be09200441c0216a200b420042b0c1bad0f4e48603420010be09200441a0206a20184200429db1bce4dfb435420010be0920044190236a201d420042a0d69f90da80b1cb00420010be09200441c0246a2020420042badf96dcb5c3bac700420010be09200441f0256a200a420042a7ecfac2b5f7ea19420010be0920044180266a200a420042b0c1bad0f4e48603420010be09200441b0216a200b4200429db1bce4dfb435420010be0920044190206a2018420042e098f4e5e9ebfb03420010be09200441a0236a201d420042badf96dcb5c3bac700420010be09200441d0246a2020420042a7ecfac2b5f7ea19420010be09200441e0246a2020420042b0c1bad0f4e48603420010be0920044190266a200a4200429db1bce4dfb435420010be09200441a0216a200b420042e098f4e5e9ebfb03420010be0920044180206a20184200429e9981b4dab2e103420010be09200441b0236a201d420042a7ecfac2b5f7ea19420010be09200441c0236a201d420042b0c1bad0f4e48603420010be09200441f0246a20204200429db1bce4dfb435420010be09200441a0266a200a420042e098f4e5e9ebfb03420010be0920044190216a200b4200429e9981b4dab2e103420010be09200441f01f6a20184200429df893c0a486ae01420010be09200441901a6a20042903b04d2222420042b0c1bad0f4e48603420010be09200441e01a6a20042903d04d2239420042a7a7fbf49beaf607420010be09200441b01b6a20042903c84d223a420042a0d69f90da80b1cb00420010be09200441801c6a20042903c04d223b420042badf96dcb5c3bac700420010be09200441d01c6a20042903b84d223c420042a7ecfac2b5f7ea19420010be09200441c01c6a203c420042b0c1bad0f4e48603420010be09200441801a6a20224200429db1bce4dfb435420010be09200441d01a6a2039420042a0d69f90da80b1cb00420010be09200441a01b6a203a420042badf96dcb5c3bac700420010be09200441f01b6a203b420042a7ecfac2b5f7ea19420010be09200441e01b6a203b420042b0c1bad0f4e48603420010be09200441b01c6a203c4200429db1bce4dfb435420010be09200441f0196a2022420042e098f4e5e9ebfb03420010be09200441c01a6a2039420042badf96dcb5c3bac700420010be09200441901b6a203a420042a7ecfac2b5f7ea19420010be09200441801b6a203a420042b0c1bad0f4e48603420010be09200441d01b6a203b4200429db1bce4dfb435420010be09200441a01c6a203c420042e098f4e5e9ebfb03420010be09200441e0196a20224200429e9981b4dab2e103420010be09200441b01a6a2039420042a7ecfac2b5f7ea19420010be09200441a01a6a2039420042b0c1bad0f4e48603420010be09200441f01a6a203a4200429db1bce4dfb435420010be09200441c01b6a203b420042e098f4e5e9ebfb03420010be09200441901c6a203c4200429e9981b4dab2e103420010be09200441d0196a20224200429df893c0a486ae01420010be09200441e0106a200c420042ea81f582a8b53f420010be09200441d0126a200f420042bbda9284b7cbdd1b420010be09200441b0136a201042004288f5a7f5b28623420010be0920044190146a2011420042edd5d7bc83fb803c420010be09200441b0116a2012420042edc19ab7ab9cc0c700420010be09200441a0116a2012420042ea81f582a8b53f420010be09200441d0106a200c420042b9a6dff282e9ba01420010be09200441c0126a200f42004288f5a7f5b28623420010be09200441a0136a2010420042edd5d7bc83fb803c420010be0920044180146a2011420042edc19ab7ab9cc0c700420010be09200441f0136a2011420042ea81f582a8b53f420010be0920044190116a2012420042b9a6dff282e9ba01420010be09200441c0106a200c420042d8f8d29390ec01420010be09200441b0126a200f420042edd5d7bc83fb803c420010be0920044190136a2010420042edc19ab7ab9cc0c700420010be0920044180136a2010420042ea81f582a8b53f420010be09200441e0136a2011420042b9a6dff282e9ba01420010be0920044180116a2012420042d8f8d29390ec01420010be09200441b0106a200c420042ff91f789b6a19403420010be09200441a0126a200f420042edc19ab7ab9cc0c700420010be0920044190126a200f420042ea81f582a8b53f420010be09200441f0126a2010420042b9a6dff282e9ba01420010be09200441d0136a2011420042d8f8d29390ec01420010be09200441f0106a2012420042ff91f789b6a19403420010be09200441a0106a200c420042fff5f38289d9e103420010be09200441a0076a20042903f009224c20042903e00b7c220c20042903c00a7c220f20042903c00c7c221020042903d00b7c221120042903e008224e20042903c00b7c221220042903800a7c222220042903d00a7c223920042903b00c7c223a20042903900b224f20042903a00c7c223b20042903c0097c223c20042903900a7c224b20042903e00a7c224d20042903800c225120042903f00a7c225020042903a00b7c225220042903d0097c225420042903a00a7c225620042903800b225320042903b00a7c224720042903900c7c224820042903b00b7c224920042903e0097c224a423388200441800b6a41086a290300200441b00a6a41086a2903007c2047205354ad7c200441900c6a41086a2903007c2048204754ad7c200441b00b6a41086a2903007c2049204854ad7c200441e0096a41086a2903007c204a204954ad7c420d86847c2247423388200441800c6a41086a290300200441f00a6a41086a2903007c2050205154ad7c200441a00b6a41086a2903007c2052205054ad7c200441d0096a41086a2903007c2054205254ad7c200441a00a6a41086a2903007c2056205454ad7c2047205654ad7c420d86847c2250423388200441900b6a41086a290300200441a00c6a41086a2903007c203b204f54ad7c200441c0096a41086a2903007c203c203b54ad7c200441900a6a41086a2903007c204b203c54ad7c200441e00a6a41086a2903007c204d204b54ad7c2050204d54ad7c420d86847c223b423388200441e0086a41086a290300200441c00b6a41086a2903007c2012204e54ad7c200441800a6a41086a2903007c2022201254ad7c200441d00a6a41086a2903007c2039202254ad7c200441b00c6a41086a2903007c203a203954ad7c203b203a54ad7c420d86847c223a423388200441f0096a41086a290300200441e00b6a41086a2903007c200c204c54ad7c200441c00a6a41086a2903007c200f200c54ad7c200441c00c6a41086a2903007c2010200f54ad7c200441d00b6a41086a2903007c2011201054ad7c203a201154ad7c420d868442137e204a42ffffffffffffff03837c220c42ffffffffffffff0383220f4200200d420010be09200441f0076a20194200200c423388204742ffffffffffffff03837c221042137e225e420010be0920044180096a20164200205042ffffffffffffff0383221242137e2250420010be09200441a0086a20134200203b42ffffffffffffff0383223942137e2222420010be09200441d0066a200e4200203a42ffffffffffffff0383225242137e2211420010be0920044190076a200e4200200f420010be09200441e0076a200d42002010420010be09200441f0086a201942002050420010be0920044190086a201642002022420010be09200441c0066a201342002011420010be0920044180076a20134200200f420010be09200441d0076a200e42002010420010be0920044190096a200d42002012420010be0920044180086a201942002022420010be09200441b0066a201642002011420010be09200441f0066a20164200200f420010be09200441c0076a201342002010420010be09200441a0096a200e42002012420010be09200441b0086a200d42002039420010be09200441a0066a201942002011420010be09200441e0066a20194200200f420010be09200441b0076a201642002010420010be09200441b0096a201342002012420010be09200441c0086a200e42002039420010be09200441d0086a200d42002052420010be092004200429038008224c2004290390097c220c20042903b0067c223a2004290380077c223b20042903d0077c223c20042903f008224e20042903e0077c224b2004290390087c224d20042903c0067c22542004290390077c225620042903f007224f20042903a0077c22472004290380097c224820042903a0087c224920042903d0067c224a423388200441f0076a41086a290300200441a0076a41086a2903007c2047204f54ad7c20044180096a41086a2903007c2048204754ad7c200441a0086a41086a2903007c2049204854ad7c200441d0066a41086a2903007c204a204954ad7c420d86847c2247423388200441f0086a41086a290300200441e0076a41086a2903007c204b204e54ad7c20044190086a41086a2903007c204d204b54ad7c200441c0066a41086a2903007c2054204d54ad7c20044190076a41086a2903007c2056205454ad7c2047205654ad7c420d86847c224b42ffffffffffffff03833703e046200420042903a006224920042903b0087c224d20042903f0067c225420042903c0077c225620042903a0097c2248204b42338820044180086a41086a29030020044190096a41086a2903007c200c204c54ad7c200441b0066a41086a2903007c203a200c54ad7c20044180076a41086a2903007c203b203a54ad7c200441d0076a41086a2903007c203c203b54ad7c204b203c54ad7c420d86847c220c42ffffffffffffff03833703e846200420042903e006224c20042903d0087c223a20042903b0077c223b20042903b0097c223c20042903c0087c224b200c423388200441a0066a41086a290300200441b0086a41086a2903007c204d204954ad7c200441f0066a41086a2903007c2054204d54ad7c200441c0076a41086a2903007c2056205454ad7c200441a0096a41086a2903007c2048205654ad7c200c204854ad7c420d86847c220c42ffffffffffffff03833703f0462004200c423388200441e0066a41086a290300200441d0086a41086a2903007c203a204c54ad7c200441b0076a41086a2903007c203b203a54ad7c200441b0096a41086a2903007c203c203b54ad7c200441c0086a41086a2903007c204b203c54ad7c200c204b54ad7c420d868442137e204a42ffffffffffffff03837c220c42ffffffffffffff03833703d0462004200c423388204742ffffffffffffff03837c3703d84620044190236a41086a290300215f200441a0206a41086a2903002160200429039023210c20042903a0202155200441c0246a41086a290300216120042903c0242157200441f0256a41086a290300216220042903f0252158200441c0216a41086a290300216320042903c021215920044180236a41086a2903002164200441b0206a41086a2903002165200429038023213a20042903b020215a200441b0246a41086a290300216620042903b024215b200441e0256a41086a290300216720042903e025215c200441d0216a41086a290300216820042903d021215d20042903a023213b200429039020214e20042903d024214f200429038026215120042903b0212153200441a0236a41086a290300216920044190206a41086a290300216a200441d0246a41086a290300216b20044180266a41086a290300216c200441b0216a41086a290300216d20042903b023213c200429038020214820042903e0242149200429039026214a20042903a021214c200441b0236a41086a290300216e20044180206a41086a290300216f200441e0246a41086a290300217020044190266a41086a2903002171200441a0216a41086a290300217220042903c023214b20042903f01f214d20042903f024215420042903a02621562004290390212147200441c0236a41086a2903002173200441f01f6a41086a2903002174200441f0246a41086a2903002175200441a0266a41086a290300217620044190216a41086a2903002177200441a8ca006a200441d0c6006a107520042d00a84a41017110772102200420042903b04d2278204720562054204b204d7c224d7c22547c22567c2247204c204a2049203c20487c22487c22497c224a7c224c20532051204f203b204e7c224e7c224f7c22517c2253205920582057200c20557c22557c22577c22587c2259205d205c205b203a205a7c225a7c225b7c225c7c225d423388206820672066206420657c205a203a54ad7c7c205b205a54ad7c7c205c205b54ad7c7c205d205c54ad7c420d86847c223a423388206320622061205f20607c2055200c54ad7c7c2057205554ad7c7c2058205754ad7c7c2059205854ad7c203a205954ad7c420d86847c2255423388206d206c206b2069206a7c204e203b54ad7c7c204f204e54ad7c7c2051204f54ad7c7c2053205154ad7c2055205354ad7c420d86847c223b423388207220712070206e206f7c2048203c54ad7c7c2049204854ad7c7c204a204954ad7c7c204c204a54ad7c203b204c54ad7c420d86847c223c423388207720762075207320747c204d204b54ad7c7c2054204d54ad7c7c2056205454ad7c7c2047205654ad7c203c204754ad7c420d868442137e205d42ffffffffffffff03837c224b42ffffffffffffff03838542002002ad42ff01837d220c832078853703b04d200420042903b84d224d204b423388203a42ffffffffffffff03837c85200c83204d853703b84d200420042903c04d223a205542ffffffffffffff038385200c83203a853703c04d200420042903c84d223a203b42ffffffffffffff038385200c83203a853703c84d200420042903d04d223a203c42ffffffffffffff038385200c83203a853703d04d20044190066a200f4200201820042903a01a225a20042903d0197c223a20042903f01a7c223b20042903c01b7c223c20042903901c7c224b20042903b01a225b20042903e0197c224d20042903801b7c225420042903d01b7c225620042903a01c7c224720042903c01a225c20042903f0197c224820042903901b7c224920042903e01b7c224a20042903b01c7c224c20042903d01a225d20042903801a7c224e20042903a01b7c224f20042903f01b7c225120042903c01c7c225320042903e01a225f20042903901a7c225520042903b01b7c225720042903801c7c225820042903d01c7c2259423388200441e01a6a41086a290300200441901a6a41086a2903007c2055205f54ad7c200441b01b6a41086a2903007c2057205554ad7c200441801c6a41086a2903007c2058205754ad7c200441d01c6a41086a2903007c2059205854ad7c420d86847c2255423388200441d01a6a41086a290300200441801a6a41086a2903007c204e205d54ad7c200441a01b6a41086a2903007c204f204e54ad7c200441f01b6a41086a2903007c2051204f54ad7c200441c01c6a41086a2903007c2053205154ad7c2055205354ad7c420d86847c224e423388200441c01a6a41086a290300200441f0196a41086a2903007c2048205c54ad7c200441901b6a41086a2903007c2049204854ad7c200441e01b6a41086a2903007c204a204954ad7c200441b01c6a41086a2903007c204c204a54ad7c204e204c54ad7c420d86847c2248423388200441b01a6a41086a290300200441e0196a41086a2903007c204d205b54ad7c200441801b6a41086a2903007c2054204d54ad7c200441d01b6a41086a2903007c2056205454ad7c200441a01c6a41086a2903007c2047205654ad7c2048204754ad7c420d86847c224d423388200441a01a6a41086a290300200441d0196a41086a2903007c203a205a54ad7c200441f01a6a41086a2903007c203b203a54ad7c200441c01b6a41086a2903007c203c203b54ad7c200441901c6a41086a2903007c204b203c54ad7c204d204b54ad7c420d868442137e205942ffffffffffffff03837c225442ffffffffffffff038385200c83201885223a420010be09200441d0036a201d204d42ffffffffffffff038385200c83201d85223b4200205e420010be09200441a0046a2020204842ffffffffffffff038385200c83202085223c42002050420010be09200441f0046a200a204e42ffffffffffffff038385200c83200a85224b42002022420010be09200441c0056a200b2054423388205542ffffffffffffff03837c85200c83200b85224d42002011420010be09200441b0056a204d4200200f420010be0920044180066a203a42002010420010be09200441c0036a203b42002050420010be0920044190046a203c42002022420010be09200441e0046a204b42002011420010be09200441d0046a204b4200200f420010be09200441a0056a204d42002010420010be09200441f0056a203a42002012420010be09200441b0036a203b42002022420010be0920044180046a203c42002011420010be09200441f0036a203c4200200f420010be09200441c0046a204b42002010420010be0920044190056a204d42002012420010be09200441e0056a203a42002039420010be09200441a0036a203b42002011420010be0920044190036a203b4200200f420010be09200441e0036a203c42002010420010be09200441b0046a204b42002012420010be0920044180056a204d42002039420010be09200441d0056a203a42002052420010be09200420042903b003225220042903f0057c220f2004290380047c221020042903d0047c221120042903a0057c221220042903c00322542004290380067c22222004290390047c223920042903e0047c223a20042903b0057c223b20042903d00322562004290390067c223c20042903a0047c224b20042903f0047c224d20042903c0057c2250423388200441d0036a41086a29030020044190066a41086a2903007c203c205654ad7c200441a0046a41086a2903007c204b203c54ad7c200441f0046a41086a2903007c204d204b54ad7c200441c0056a41086a2903007c2050204d54ad7c420d86847c223c423388200441c0036a41086a29030020044180066a41086a2903007c2022205454ad7c20044190046a41086a2903007c2039202254ad7c200441e0046a41086a2903007c203a203954ad7c200441b0056a41086a2903007c203b203a54ad7c203c203b54ad7c420d86847c222242ffffffffffffff03833703e046200420042903a003224d20042903e0057c223920042903f0037c223a20042903c0047c223b2004290390057c224b2022423388200441b0036a41086a290300200441f0056a41086a2903007c200f205254ad7c20044180046a41086a2903007c2010200f54ad7c200441d0046a41086a2903007c2011201054ad7c200441a0056a41086a2903007c2012201154ad7c2022201254ad7c420d86847c220f42ffffffffffffff03833703e8462004200429039003225220042903d0057c221020042903e0037c221120042903b0047c22122004290380057c2222200f423388200441a0036a41086a290300200441e0056a41086a2903007c2039204d54ad7c200441f0036a41086a2903007c203a203954ad7c200441c0046a41086a2903007c203b203a54ad7c20044190056a41086a2903007c204b203b54ad7c200f204b54ad7c420d86847c220f42ffffffffffffff03833703f0462004200f42338820044190036a41086a290300200441d0056a41086a2903007c2010205254ad7c200441e0036a41086a2903007c2011201054ad7c200441b0046a41086a2903007c2012201154ad7c20044180056a41086a2903007c2022201254ad7c200f202254ad7c420d868442137e205042ffffffffffffff03837c220f42ffffffffffffff03833703d0462004200f423388203c42ffffffffffffff03837c3703d846200441c0126a41086a290300215a200441d0106a41086a290300215b20042903c012211120042903d010214e200441a0136a41086a290300215c20042903a013214f20044180146a41086a290300215d2004290380142151200441a0116a41086a290300215e20042903a0112153200441d0126a41086a290300215f200441e0106a41086a290300216020042903d012211220042903e0102155200441b0136a41086a290300216120042903b013215720044190146a41086a29030021622004290390142158200441b0116a41086a290300216320042903b011215920042903b012212220042903c0102148200429039013214920042903f013214a200429039011214c200441b0126a41086a2903002164200441c0106a41086a290300216520044190136a41086a2903002166200441f0136a41086a290300216720044190116a41086a290300216820042903a012213920042903b0102152200429038013215420042903e01321562004290380112147200441a0126a41086a2903002169200441b0106a41086a290300216a20044180136a41086a290300216b200441e0136a41086a290300216c20044180116a41086a290300216d200429039012213a20042903a010214b20042903f012214d20042903d013215020042903f010216e20044190126a41086a290300216f200441a0106a41086a2903002170200441f0126a41086a2903002171200441d0136a41086a2903002172200441f0106a41086a2903002173200441a8ca006a200441d0c6006a107520042d00a84a41017110772102200420042903b04d221042f0ffffffffffff3f20042903d04d223b7d223c42338842137e42d0fdffffffffff3f20107d227442ffffffffffffff03837c8542002002ad42ff01837d220f8320108522103703b04d2004203b203b203c42ffffffffffffff038342f0ffffffffffff3f20042903c84d223c7d22754233887c85200f8385223b3703d04d20044180036a203e203b7d223e42338842137e204020107d224042ffffffffffffff03837c22104200201a206e2050204d203a204b7c223b7c224b7c224d7c2250204720562054203920527c22527c22547c22567c2247204c204a2049202220487c22487c22497c224a7c224c20532051204f2011204e7c224e7c224f7c22517c2253205920582057201220557c22557c22577c22587c2259423388206320622061205f20607c2055201254ad7c7c2057205554ad7c7c2058205754ad7c7c2059205854ad7c420d86847c2255423388205e205d205c205a205b7c204e201154ad7c7c204f204e54ad7c7c2051204f54ad7c7c2053205154ad7c2055205354ad7c420d86847c224e423388206820672066206420657c2048202254ad7c7c2049204854ad7c7c204a204954ad7c7c204c204a54ad7c204e204c54ad7c420d86847c2222423388206d206c206b2069206a7c2052203954ad7c7c2054205254ad7c7c2056205454ad7c7c2047205654ad7c2022204754ad7c420d86847c2212423388207320722071206f20707c203b203a54ad7c7c204b203b54ad7c7c204d204b54ad7c7c2050204d54ad7c2012205054ad7c420d868442137e205942ffffffffffffff03837c223a42ffffffffffffff038385200c83201a852211420010be09200420042903b84d221a42f0ffffffffffff3f201a7d223942ffffffffffffff038320744233887c85200f83201a85221a3703b84d200441c0006a201b201242ffffffffffffff038385200c83201b85221242002042201a7d223b42ffffffffffffff038320404233887c221a42137e420010be09200420042903c04d221b42f0ffffffffffff3f201b7d224b42ffffffffffffff038320394233887c85200f83201b8522393703c04d20044190016a201c202242ffffffffffffff038385200c83201c85221b4200204520397d222242ffffffffffffff0383203b4233887c221c42137e223b420010be092004203c203c207542ffffffffffffff0383204b4233887c85200f838522393703c84d200441e0016a201e204e42ffffffffffffff038385200c83201e85220f4200204620397d221e42ffffffffffffff038320224233887c222242137e2239420010be09200441b0026a201f203a423388205542ffffffffffffff03837c85200c83201f85220c4200203e42ffffffffffffff0383201e4233887c221f42137e221e420010be09200441a0026a200c42002010420010be09200441f0026a20114200201a420010be09200441306a20124200203b420010be0920044180016a201b42002039420010be09200441d0016a200f4200201e420010be09200441c0016a200f42002010420010be0920044190026a200c4200201a420010be09200441e0026a20114200201c420010be09200441206a201242002039420010be09200441f0006a201b4200201e420010be09200441e0006a201b42002010420010be09200441b0016a200f4200201a420010be0920044180026a200c4200201c420010be09200441d0026a201142002022420010be09200441106a20124200201e420010be092004201242002010420010be09200441d0006a201b4200201a420010be09200441a0016a200f4200201c420010be09200441f0016a200c42002022420010be09200441c0026a20114200201f420010be0920042004290300225620042903c0027c220c20042903507c220f20042903a0017c221020042903f0017c22112004290310224720042903d0027c221220042903607c221a20042903b0017c221b2004290380027c221c2004290320224820042903e0027c221e20042903707c221f20042903c0017c22222004290390027c22392004290330224920042903f0027c223a2004290380017c223b20042903d0017c223c20042903a0027c224b2004290340224a2004290380037c224d2004290390017c225020042903e0017c225220042903b0027c2254423388200441c0006a41086a29030020044180036a41086a2903007c204d204a54ad7c20044190016a41086a2903007c2050204d54ad7c200441e0016a41086a2903007c2052205054ad7c200441b0026a41086a2903007c2054205254ad7c420d86847c224d423388200441306a41086a290300200441f0026a41086a2903007c203a204954ad7c20044180016a41086a2903007c203b203a54ad7c200441d0016a41086a2903007c203c203b54ad7c200441a0026a41086a2903007c204b203c54ad7c204d204b54ad7c420d86847c223a423388200441206a41086a290300200441e0026a41086a2903007c201e204854ad7c200441f0006a41086a2903007c201f201e54ad7c200441c0016a41086a2903007c2022201f54ad7c20044190026a41086a2903007c2039202254ad7c203a203954ad7c420d86847c221e423388200441106a41086a290300200441d0026a41086a2903007c2012204754ad7c200441e0006a41086a2903007c201a201254ad7c200441b0016a41086a2903007c201b201a54ad7c20044180026a41086a2903007c201c201b54ad7c201e201c54ad7c420d86847c2212423388200441086a290300200441c0026a41086a2903007c200c205654ad7c200441d0006a41086a2903007c200f200c54ad7c200441a0016a41086a2903007c2010200f54ad7c200441f0016a41086a2903007c2011201054ad7c2012201154ad7c420d868442137e205442ffffffffffffff03837c220c42ffffffffffffff0383220f3703d0462004200c423388204d42ffffffffffffff03837c22103703d8462004201242ffffffffffffff038322113703f0462004201e42ffffffffffffff038322123703e8462004203a42ffffffffffffff0383221a3703e046200441a8ca006a200441d0c6006a10752004201142f0ffffffffffff3f20117d221b42ffffffffffffff038342f0ffffffffffff3f20127d221c4233887c85420020042d00a84a4101711077ad42ff01837d220c832011853703f04620042012201c42ffffffffffffff038342f0ffffffffffff3f201a7d22114233887c85200c832012853703e8462004201a201142ffffffffffffff038342f0ffffffffffff3f20107d22114233887c85200c83201a853703e04620042010201142ffffffffffffff038342d0fdffffffffff3f200f7d22114233887c85200c832010853703d8462004200f201b42338842137e201142ffffffffffffff03837c85200c83200f853703d046200441e0c4006a200441d0c6006a107541002102034020044180c5006a20026a41003a0000200241016a220241c801470d000b20044188c9006a41186a2203200141186a29000037030020044188c9006a41106a2205200141106a29000037030020044188c9006a41086a2206200141086a2900003703002004200129000037038849200441d0c6006a20044188c9006a10c805200441d0c6006a41086a290300210c200441d0c6006a41106a290300210f200441d0c6006a41186a2903002110200441d0c6006a41206a290300211a200441f8c6006a290300211b20044180c7006a290300211120044188c7006a290300211220044190c7006a290300211c20044198c7006a290300211e200441a0c7006a290300211f20042802d446210120042802d046210220044180c5006a200441a8c7006a41f00010bf091a0240024020024101460d00200441f0ca006a20044180c5006a41f00010bf091a2004200f200c4233887c22224233882022200f54ad420d8684223a20107c223942ffffffffffffff03833703b048200420394233882039203a54ad420d8684223a201a7c223942ffffffffffffff03833703b848200420394233882039203a54ad420d8684223a201b7c223942ffffffffffffff03833703c048200420394233882039203a54ad420d868442137e200c42ffffffffffffff03837c223942ffffffffffffff03833703a04820042039423388202242ffffffffffffff03837c3703a84820044188c9006a41206a4200370300200342003703002005420037030020064200370300200442003703884920044180c5006a41206a420037030020044180c5006a41186a420037030020044180c5006a41106a420037030020044180c5006a41086a420037030020044200370380452004201220114233887c22224233882022201254ad420d8684223a201c7c22394233882039203a54ad420d8684223b201e7c223a423388203a203b54ad420d8684223c201f7c223b42ffffffffffffff03833703f0462004203a42ffffffffffffff03833703e8462004203942ffffffffffffff03833703e0462004203b423388203b203c54ad420d868442137e201142ffffffffffffff03837c2239423388202242ffffffffffffff03837c3703d8462004203942ffffffffffffff03833703d0460240200441a0c8006a20044188c9006a107620044180c5006a200441d0c6006a107672107741ff01714101470d0020004101360200200041013a00040c020b200041a0016a201937030020004198016a201637030020004190016a201337030020004188016a200e37030020004180016a200d370300200041f8006a203d370300200041f0006a2043370300200041e8006a2044370300200041e0006a2041370300200041d8006a203f370300200041d0006a2023370300200041c8006a2021370300200041c0006a2017370300200041386a2015370300200041306a2014370300200041286a201d370300200041206a2020370300200041186a200a370300200041106a200b370300200041086a201837030020004190026a201f37030020004188026a201e37030020004180026a201c370300200041f8016a2012370300200041f0016a2011370300200041e8016a201b370300200041e0016a201a370300200041d8016a2010370300200041d0016a200f370300200041c8016a200c370300200041c0016a200441e0c4006a41186a290300370300200041b8016a200441e0c4006a41106a290300370300200041b0016a200441e0c4006a41086a290300370300200041a8016a20042903e04437030020004198026a200441f0ca006a41f00010bf091a200041003602000c010b2000200136020420004101360200200041186a20103e0200200041106a200f370200200041086a200c3702000b200441d0ce006a24000ba50101047f230041106b2202240002404121410120012d000041014622031b2204102f2205450d002002410036020820022004360204200220053602000240024020030d00200241003a000f20022002410f6a4101107e0c010b200241013a000f20022002410f6a4101107e2002200141016a4120107e0b20004120200228020022012002280208109f0202402002280204450d00200110310b200241106a24000f0b1039000b8a0f03067f047e027f230041e0026b2203240020012800002104200341106a41186a2001411c6a290000370300200341106a41106a200141146a290000370300200341106a41086a2001410c6a2900003703002003200129000437031020022802002105200341f0016a41186a22064200370300200341f0016a41106a22014200370300200341f0016a41086a22074200370300200342003703f001200341306a41d7b2c800410710a7022007200341306a41086a2208290000370300200320032900303703f001200341306a41b0ffc100410c10a7022006200829000037030020012003290030370300200341086a200341f0016a412010c00241002108024002402005200328020c410020032802081b470d00200341d0006a41086a4120360200200320043602502003200341106a360254200341306a200341d0006a109803200341d0006a20032802302205200328023810aa022007200341d9006a2900003703002001200341e1006a2900003703002006200341e9006a290000370300200320032900513703f001024020032d00504101470d00200341d0016a41186a200341f0016a41186a290300370300200341d0016a41106a200341f0016a41106a290300370300200341d0016a41086a200341f0016a41086a290300370300200320032903f0013703d001410121080b02402003280234450d00200510310b2002410c6a2802002106200241086a280200210720022802042105024020080d00200041003a000002402006450d002006410c6c21062005210103400240200141046a280200450d00200128020010310b2001410c6a2101200641746a22060d000b0b2007450d022007410c6c450d02200510310c020b20022802102102200341d0006a41186a200341d0016a41186a290300370300200341d0006a41106a200341d0016a41106a290300370300200341d0006a41086a200341d0016a41086a290300370300200320032903d001370350200341f0016a41186a4200370300200341f0016a41106a4200370300200341f0016a41086a22084200370300200342003703f001200341306a41d7b2c800410710a7022008200341306a41086a2204290000370300200320032900303703f001200341306a41def0c100410a10a702200141086a200429000037000020012003290030370000200341d0026a200341f0016a10cf040240024020032802d00222080d00410021010c010b20032902d4022209422088a72101200942ffffff3f83500d00200810310b02400240024020022001460d0002402006450d002006410c6c21062005210103400240200141046a280200450d00200128020010310b2001410c6a2101200641746a22060d000b0b410021012007450d022007410c6c0d010c020b20002003290350370001200041196a200341e8006a290300370000200041116a200341e0006a290300370000200041096a200341d8006a29030037000002402006450d002006410c6c21062005210103400240200141046a280200450d00200128020010310b2001410c6a2101200641746a22060d000b0b410121012007450d012007410c6c450d010b200510310b200020013a00000c010b200341d0006a200510e3082007200341d0006a410c6a2902003703002001200341d0006a41146a2902003703002006200341d0006a411c6a290200370300200320032902543703f0010240024020032802504101470d00200341d0016a41086a2206200341f0016a41086a2903002209370300200341d0016a41106a2207200341f0016a41106a290300220a370300200341d0016a41186a2205200341f0016a41186a290300220b370300200320032903f001220c3703d001200341f4006a2802002101200341306a41186a2208200b370300200341306a41106a220d200a370300200341306a41086a220e20093703002003200c370330024020012002280210460d00200041003a00000c020b200520082903003703002007200d2903003703002006200e290300370300200320032903303703d0012002410c6a280200210520022802042108200341f0016a10e40802402005450d0020082005410c6c6a2106410028029ca44021074100290294a4402109200821010340200341d0026a41086a2007360200200320093703d002200341d0006a200341f0016a200341d0026a2001280200200141086a28020010e5082001410c6a22012006470d000b0b200341d0006a200341f0016a41e00010bf091a200341c8016a200341e8016a290300370300200341c0016a200341e0016a290300370300200341b8016a200341d0016a41086a290300370300200320032903d0013703b0012000200341d0006a2004200341106a10e608200341d0006a10df0402402005450d002005410c6c21062008210103400240200141046a280200450d00200128020010310b2001410c6a2101200641746a22060d000b0b200241086a2802002201450d022001410c6c450d02200810310c020b200041003a00000b2002280204210702402002410c6a2802002201450d002001410c6c21062007210103400240200141046a280200450d00200128020010310b2001410c6a2101200641746a22060d000b0b200241086a2802002201450d002001410c6c450d00200710310b200341e0026a24000b2e01017e2000ad220120017e220142808090bbbad6adf00d200142808090bbbad6adf00d541b428094ebdc0380a70b130020004108360204200041d081c3003602000b130020004103360204200041f08bc3003602000b3400200041f9c6c00036020420004100360200200041146a4110360200200041106a41f892c300360200200041086a42043702000b130020004102360204200041c4b5c3003602000b4301027f230041106b2202240002404108102f22030d001039000b2000420837020420002003360200200242f02e3703082000200241086a4108107e200241106a24000b7501047f230041206b22022400200241106a41849bc200411710a702200241086a200241106a411010c002200228020c21032002280208210402404108102f22050d001039000b20004208370204200020053602002002200341e40020041bad3703102000200241106a4108107e200241206a24000be90501037f230041e0166b220424002004410236021020044101360208200441a00f6a2001200210d40520042802a00f2102200441e4076a200441a00f6a410472220541bc0710bf091a02400240024020024101460d00200441c8076a41106a2202200441e4076a41106a290200370300200441c8076a41086a2206200441e4076a41086a290200370300200420042902e4073703c807200441a00f6a2001200310d50520042802a00f2101200441e4076a200541b40710bf091a024020014119470d00200020042903c80737020420004100360200200041146a20022903003702002000410c6a2006290300370200024020042802080d00200441086a410472109a04200441086a41146a22012802002100200141003602002000450d040240200441186a2802002201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441206a2802003602ac0f200441a00f6a109b040c040b2004280210410b470d03200441186a10ad01200441e0036a10a3010c030b200041086a20013602002000410c6a200441e4076a41b40710bf091a20004101360200200441c8076a109a0420022802002100200241003602002000450d01024020042802d4072201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441dc076a2802003602ac0f200441a00f6a109b040c010b200041086a200441e4076a41046a41b80710bf091a200041013602000b024020042802080d00200441086a410472109a042004411c6a22012802002100200141003602002000450d010240200441186a2802002201450d00034020002802b02b21002001417f6a22010d000b0b200441003602a80f200420003602a40f200441003602a00f2004200441206a2802003602ac0f200441a00f6a109b040c010b2004280210410b470d00200441186a10ad01200441e0036a10a3010b200441e0166a24000bd01907017f027e057f027e017f017e037f230041e00f6b22032400200341086a200110d60502400240024002400240024002402003290308a7450d00200341086a41106a290300210420032903102105024020022903004201520d0020022d00084101460d030b20034180016a200210d705200341a8086a20034180016a10d80520032d00a8084101460d01200341e8006a200341b2086a290100370300200341f0006a200341ba086a290100370300200341f7006a200341c1086a290000370000200320032901aa0837036020032d00a90821060c030b20004101360200200041106a410d3602002000410c6a41be8dca00360200200041086a41103602000c030b20034180016a200341a8086a41086a41c80310bf091a20034180016a10ad01200041106a41193602002000410c6a41cb8dca00360200200041086a4110360200200041013602000c020b2003200228020c36028001200341a8086a20034180016a10d905200341e8006a200341b1086a290000370300200341f0006a200341b9086a290000370300200341f7006a200341c0086a290000370000200320032900a90837036020032d00a80821060b200341c0006a41176a2202200341e0006a41176a290000370000200341c0006a41106a2207200341e0006a41106a2208290300370300200341296a200341e8006a2209290300370000200341316a2007290300370000200341386a2002290000370000200320063a002020032003290360370021200341e0006a200341206a200520044102410110da05024020032802604101460d0020032008290300370348200320092903003703402003200341c0006a3602a808200341a8086a10a2034100210a024002400240024002400240024002400240024002400240024020012802000e0c0c0102030405060708090a000c0b200341a8086a200141086a10d705410021064200210b410021080240024002400240024002400240200141d0036a2d00000e0706010203040500060b200141dc036a2802002202417f4c0d14200141d4036a28020021010240024020020d00410121070c010b2002102f2207450d160b20072001200210bf0941807e7121062002ad22044220862004842104410621080c050b200141e0036a290300210b200141d8036a290300210441012108410021060c040b20012f00d103200141d3036a2d0000411074722109200141d4036a2d0000210741022108410021060c030b200141d4036a280200220741807e71210620012f00d103200141d3036a2d0000411074722109200141d8036a3100002104410321080c020b200141d4036a280200220741807e71210620012f00d103200141d3036a2d0000411074722109200141e0036a310000210b200141d8036a2902002104410421080c010b200341e0006a41086a200141f0036a2d00003a00002003200141e8036a290200370360200141d4036a280200220741807e71210620012f00d103200141d3036a2d0000411074722109200141e0036a290200210b200141d8036a2902002104410521080b200341c0006a41086a200341d0086a2903003703002003200341c8086a290300370340200341b8086a2903002105200341c0086a290300210c20032802ac08210220032802a808210d20032903b008210e20034180016a200341d8086a41980310bf091a200341d00f6a41086a200341e0006a41086a290300370300200320032903603703d00f2006200741ff017172210f200e422088a72110200e420888a72111200ea72106410b210a0c0a0b4101210a0c0a0b4102210a0c090b4103210a0c080b2001410c6a2802002202417f4c0d0a200128020421010240024020020d00410121070c010b2002102f2207450d0c0b20072001200210bf091a4104210a2002210d0c070b2001410c6a2802002202417f4c0d09200128020421010240024020020d00410121070c010b2002102f2207450d0b0b20072001200210bf091a4105210a2002210d0c060b200341a8086a200141086a10d705200341c0006a41086a200341d0086a2903003703002003200341c8086a290300370340200341b8086a2903002105200341c0086a290300210c20032802ac08210220032802a808210d20032903b008210420034180016a200341d8086a41980310bf091a2004422088a721102004420888a721112004a721064106210a0c050b200341a8086a200141086a10d705200341c0006a41086a200341d0086a2903003703002003200341c8086a290300370340200341b8086a2903002105200341c0086a290300210c20032802ac08210220032802a808210d20032903b008210420034180016a200341d8086a41980310bf091a2004422088a721102004420888a721112004a721064107210a0c040b2001410c6a2802002202417f4c0d06200128020421090240024020020d00410121070c010b2002102f2207450d080b20072009200210bf091a200141186a290300210520012903102204422088a721102004420888a721112004a721064108210a2002210d0c030b2001410c6a2802002202417f4c0d05200128020421090240024020020d00410121070c010b2002102f2207450d070b20072009200210bf091a410021084200210c41002106024002400240024002400240024020012d00100e0706010203040500060b2001411c6a2802002206417f4c0d0b200141146a28020021010240024020060d00410121090c010b2006102f2209450d0d0b20092001200610bf0941807e7121082006ad22044220862004842105410621060c050b200141206a290300210c200141186a290300210541012106410021080c040b20012f0011200141136a2d0000411074722111200141146a2d0000210941022106410021080c030b200141146a280200220941807e71210820012f0011200141136a2d0000411074722111200141186a3100002105410321060c020b200141146a280200220941807e71210820012f0011200141136a2d0000411074722111200141206a310000210c200141186a2902002105410421060c010b200341b0086a200141306a2d00003a00002003200141286a2902003703a808200141146a280200220941807e71210820012f0011200141136a2d0000411074722111200141206a290200210c200141186a2902002105410521060b200341c0006a41086a200341a8086a41086a290300370300200320032903a8083703402008200941ff01717221104109210a2002210d0c020b200341a8086a200141086a10d705200341c0006a41086a200341d0086a2903003703002003200341c8086a290300370340200141d8036a2903002104200141d0036a290300210b200341b8086a2903002105200341c0086a290300210c20032802ac08210220032802a808210d20032903b008210e20034180016a200341d8086a41980310bf091a200ba72108200b422088a7210f200b420888a72109200e422088a72110200e420888a72111200ea72106410a210a0b0b200341e0006a41106a2201420037030020034200370264200341c8086a200c370300200341a8086a410c6a2002360200200341a8086a41086a200d360200200341d0086a2003290340370300200341d8086a200341c0006a41086a290300370300200341c0086a200542807e8320054238862010ad421886842011ad42ffffff078384220542388884370300200341a8086a41106a20054208862006ad42ff018384370300200320073602ac082003200a3602a808200341e0086a20034180016a41980310bf091a200341800c6a200442807e832004423886200fad421886842009ad42ffffff078384220442388884370300200341f80b6a20044208862008ad42ff018384370300200341880c6a200b370300200341900c6a20032903d00f370300200341980c6a200341d00f6a41086a290300370300200341e0006a200341a8086a10db05200041146a20012903003702002000410c6a200329036837020020002003290360370204200041003602000c010b200341ec006a28020021062009280200210741c9fdc9002101410d2102024002400240024002400240024020032d00640e0701060203040500010b41f6fcc900210141172102024002400240024002400240024020032d00654107710e08000102030405060c000b41e1fcc9002101411521020c0b0b41c0fcc9002101412121020c0a0b4189fcc9002101413721020c090b41f0fbc9002101411921020c080b41d0fbc9002101412021020c070b41b6fbc9002101411a21020c060b419efbc9002101411821020c050b20062102200721010c040b41bffdc9002101410a21020c030b2006411420071b21022007418dfdc90020071b21010c020b41adfdc9002101411221020c010b41a1fdc9002101410c21020b20034180016a200341a8086a41a80710bf091a200041106a2002ad370300200041086a2001ad422086421084370300200041186a20034180016a41a80710bf091a200041013602000b200341e00f6a24000f0b103b000b1039000bc60403017f027e017f230041a0086b22032400200341106a200110d605024002400240024002402003290310a7450d00200341106a41106a290300210420032903182105024020022903004201520d0020022d00084101460d020b200341d8046a200210d70520034188016a200341d8046a10d80520032d0088014101460d03200341f0006a20034192016a290100370300200341f8006a2003419a016a290100370300200341ff006a200341a1016a2900003700002003200329018a0137036820032d00890121020c020b200041be8dca0036020420004110360200200041086a410d3602000c030b2003200228020c3602d80420034188016a200341d8046a10d905200341f0006a20034191016a290000370300200341f8006a20034199016a290000370300200341ff006a200341a0016a290000370000200320032900890137036820032d00880121020b200341c8006a41176a2201200341e8006a41176a290000370000200341c8006a41106a2206200341e8006a41106a290300370300200341316a200341e8006a41086a290300370000200341396a2006290300370000200341c0006a2001290000370000200320023a0028200320032903683700292003200341286a2005200410dc05200341086a290300210420032903002105200041193602002003200437039001200320053703880120034188016a10a1030c010b200341d8046a20034188016a41086a41c80310bf091a200341d8046a10ad01200041086a4119360200200041cb8dca00360204200041103602000b200341a0086a24000b830102017f037e230041d0036b22022400420021030240024002402001280200410a470d0020024200370308200141086a2903002104200241086a10ad0120044200510d010b0c010b200141d8036a2903002105200141d0036a2903002104420121030b2000200437030820002003370300200041106a2005370300200241d0036a24000bfc2b01017f230041c0036b22022400024002400240024002400240024002400240024020012802000e09010203040506070800010b2002200141086a10bf04200241386a200141c0006a10bf04200241f0006a200141f8006a10bf04200241a8016a200141b0016a10bf04200241e0016a200141e8016a10bf0420024198026a200141a0026a10bf04200241d0026a200141d8026a10bf0420024188036a20014190036a10bf04200041386a200241306a290300370300200041306a200241286a290300370300200041286a200241206a290300370300200041206a200241186a290300370300200041186a200241106a290300370300200041106a200241086a29030037030020002002290300370308200041c0006a2002290338370300200041c8006a200241386a41086a290300370300200041d0006a200241386a41106a290300370300200041d8006a200241386a41186a290300370300200041e0006a200241386a41206a290300370300200041e8006a200241386a41286a290300370300200041f0006a200241386a41306a290300370300200041a8016a200241f0006a41306a290300370300200041a0016a200241f0006a41286a29030037030020004198016a200241f0006a41206a29030037030020004190016a200241f0006a41186a29030037030020004188016a200241f0006a41106a29030037030020004180016a200241f0006a41086a290300370300200041f8006a2002290370370300200041e0016a200241a8016a41306a290300370300200041d8016a200241a8016a41286a290300370300200041d0016a200241a8016a41206a290300370300200041c8016a200241a8016a41186a290300370300200041c0016a200241a8016a41106a290300370300200041b8016a200241a8016a41086a290300370300200041b0016a20022903a80137030020004198026a200241e0016a41306a29030037030020004190026a200241e0016a41286a29030037030020004188026a200241e0016a41206a29030037030020004180026a200241e0016a41186a290300370300200041f8016a200241e0016a41106a290300370300200041f0016a200241e0016a41086a290300370300200041e8016a20022903e001370300200041d0026a20024198026a41306a290300370300200041c8026a20024198026a41286a290300370300200041c0026a20024198026a41206a290300370300200041b8026a20024198026a41186a290300370300200041b0026a20024198026a41106a290300370300200041a8026a20024198026a41086a290300370300200041a0026a20022903980237030020004188036a200241d0026a41306a29030037030020004180036a200241d0026a41286a290300370300200041f8026a200241d0026a41206a290300370300200041f0026a200241d0026a41186a290300370300200041e8026a200241d0026a41106a290300370300200041e0026a200241d0026a41086a290300370300200041d8026a20022903d002370300200041c0036a20024188036a41306a290300370300200041b8036a20024188036a41286a290300370300200041b0036a20024188036a41206a290300370300200041a8036a20024188036a41186a290300370300200041a0036a20024188036a41106a29030037030020004198036a20024188036a41086a29030037030020004190036a200229038803370300200042083703000c080b200042003703000c070b20024188036a200141086a10bf0420004201370300200041386a20024188036a41306a290300370300200041306a20024188036a41286a290300370300200041286a20024188036a41206a290300370300200041206a20024188036a41186a290300370300200041186a20024188036a41106a290300370300200041106a20024188036a41086a29030037030020002002290388033703080c060b200241d0026a200141086a10bf0420024188036a200141c0006a10bf04200041386a200241d0026a41306a290300370300200041306a200241d0026a41286a290300370300200041286a200241d0026a41206a290300370300200041206a200241d0026a41186a290300370300200041186a200241d0026a41106a290300370300200041106a200241d0026a41086a290300370300200020022903d002370308200041c0006a200229038803370300200041c8006a20024188036a41086a290300370300200041d0006a20024188036a41106a290300370300200041d8006a20024188036a41186a290300370300200041e0006a20024188036a41206a290300370300200041e8006a20024188036a41286a290300370300200041f0006a20024188036a41306a290300370300200042023703000c050b20024198026a200141086a10bf04200241d0026a200141c0006a10bf0420024188036a200141f8006a10bf04200041386a20024198026a41306a290300370300200041306a20024198026a41286a290300370300200041286a20024198026a41206a290300370300200041206a20024198026a41186a290300370300200041186a20024198026a41106a290300370300200041106a20024198026a41086a2903003703002000200229039802370308200041c0006a20022903d002370300200041c8006a200241d0026a41086a290300370300200041d0006a200241d0026a41106a290300370300200041d8006a200241d0026a41186a290300370300200041e0006a200241d0026a41206a290300370300200041e8006a200241d0026a41286a290300370300200041f0006a200241d0026a41306a29030037030020004203370300200041a8016a20024188036a41306a290300370300200041a0016a20024188036a41286a29030037030020004198016a20024188036a41206a29030037030020004190016a20024188036a41186a29030037030020004188016a20024188036a41106a29030037030020004180016a20024188036a41086a290300370300200041f8006a2002290388033703000c040b200241e0016a200141086a10bf0420024198026a200141c0006a10bf04200241d0026a200141f8006a10bf0420024188036a200141b0016a10bf04200041386a200241e0016a41306a290300370300200041306a200241e0016a41286a290300370300200041286a200241e0016a41206a290300370300200041206a200241e0016a41186a290300370300200041186a200241e0016a41106a290300370300200041106a200241e0016a41086a290300370300200020022903e001370308200041c0006a200229039802370300200041c8006a20024198026a41086a290300370300200041d0006a20024198026a41106a290300370300200041d8006a20024198026a41186a290300370300200041e0006a20024198026a41206a290300370300200041e8006a20024198026a41286a290300370300200041f0006a20024198026a41306a290300370300200041a8016a200241d0026a41306a290300370300200041a0016a200241d0026a41286a29030037030020004198016a200241d0026a41206a29030037030020004190016a200241d0026a41186a29030037030020004188016a200241d0026a41106a29030037030020004180016a200241d0026a41086a290300370300200041f8006a20022903d002370300200041e0016a20024188036a41306a290300370300200041d8016a20024188036a41286a290300370300200041d0016a20024188036a41206a290300370300200041c8016a20024188036a41186a290300370300200041c0016a20024188036a41106a290300370300200041b8016a20024188036a41086a290300370300200041b0016a200229038803370300200042043703000c030b200241a8016a200141086a10bf04200241e0016a200141c0006a10bf0420024198026a200141f8006a10bf04200241d0026a200141b0016a10bf0420024188036a200141e8016a10bf04200041386a200241a8016a41306a290300370300200041306a200241a8016a41286a290300370300200041286a200241a8016a41206a290300370300200041206a200241a8016a41186a290300370300200041186a200241a8016a41106a290300370300200041106a200241a8016a41086a290300370300200020022903a801370308200041c0006a20022903e001370300200041c8006a200241e0016a41086a290300370300200041d0006a200241e0016a41106a290300370300200041d8006a200241e0016a41186a290300370300200041e0006a200241e0016a41206a290300370300200041e8006a200241e0016a41286a290300370300200041f0006a200241e0016a41306a290300370300200041a8016a20024198026a41306a290300370300200041a0016a20024198026a41286a29030037030020004198016a20024198026a41206a29030037030020004190016a20024198026a41186a29030037030020004188016a20024198026a41106a29030037030020004180016a20024198026a41086a290300370300200041f8006a200229039802370300200041e0016a200241d0026a41306a290300370300200041d8016a200241d0026a41286a290300370300200041d0016a200241d0026a41206a290300370300200041c8016a200241d0026a41186a290300370300200041c0016a200241d0026a41106a290300370300200041b8016a200241d0026a41086a290300370300200041b0016a20022903d00237030020004198026a20024188036a41306a29030037030020004190026a20024188036a41286a29030037030020004188026a20024188036a41206a29030037030020004180026a20024188036a41186a290300370300200041f8016a20024188036a41106a290300370300200041f0016a20024188036a41086a290300370300200041e8016a200229038803370300200042053703000c020b200241f0006a200141086a10bf04200241a8016a200141c0006a10bf04200241e0016a200141f8006a10bf0420024198026a200141b0016a10bf04200241d0026a200141e8016a10bf0420024188036a200141a0026a10bf04200041386a200241f0006a41306a290300370300200041306a200241f0006a41286a290300370300200041286a200241f0006a41206a290300370300200041206a200241f0006a41186a290300370300200041186a200241f0006a41106a290300370300200041106a200241f0006a41086a29030037030020002002290370370308200041c0006a20022903a801370300200041c8006a200241a8016a41086a290300370300200041d0006a200241a8016a41106a290300370300200041d8006a200241a8016a41186a290300370300200041e0006a200241a8016a41206a290300370300200041e8006a200241a8016a41286a290300370300200041f0006a200241a8016a41306a290300370300200041a8016a200241e0016a41306a290300370300200041a0016a200241e0016a41286a29030037030020004198016a200241e0016a41206a29030037030020004190016a200241e0016a41186a29030037030020004188016a200241e0016a41106a29030037030020004180016a200241e0016a41086a290300370300200041f8006a20022903e001370300200041e0016a20024198026a41306a290300370300200041d8016a20024198026a41286a290300370300200041d0016a20024198026a41206a290300370300200041c8016a20024198026a41186a290300370300200041c0016a20024198026a41106a290300370300200041b8016a20024198026a41086a290300370300200041b0016a20022903980237030020004198026a200241d0026a41306a29030037030020004190026a200241d0026a41286a29030037030020004188026a200241d0026a41206a29030037030020004180026a200241d0026a41186a290300370300200041f8016a200241d0026a41106a290300370300200041f0016a200241d0026a41086a290300370300200041e8016a20022903d002370300200041d0026a20024188036a41306a290300370300200041c8026a20024188036a41286a290300370300200041c0026a20024188036a41206a290300370300200041b8026a20024188036a41186a290300370300200041b0026a20024188036a41106a290300370300200041a8026a20024188036a41086a290300370300200041a0026a200229038803370300200042063703000c010b200241386a200141086a10bf04200241f0006a200141c0006a10bf04200241a8016a200141f8006a10bf04200241e0016a200141b0016a10bf0420024198026a200141e8016a10bf04200241d0026a200141a0026a10bf0420024188036a200141d8026a10bf04200041386a200241386a41306a290300370300200041306a200241386a41286a290300370300200041286a200241386a41206a290300370300200041206a200241386a41186a290300370300200041186a200241386a41106a290300370300200041106a200241386a41086a29030037030020002002290338370308200041c0006a2002290370370300200041c8006a200241f0006a41086a290300370300200041d0006a200241f0006a41106a290300370300200041d8006a200241f0006a41186a290300370300200041e0006a200241f0006a41206a290300370300200041e8006a200241f0006a41286a290300370300200041f0006a200241f0006a41306a290300370300200041a8016a200241a8016a41306a290300370300200041a0016a200241a8016a41286a29030037030020004198016a200241a8016a41206a29030037030020004190016a200241a8016a41186a29030037030020004188016a200241a8016a41106a29030037030020004180016a200241a8016a41086a290300370300200041f8006a20022903a801370300200041e0016a200241e0016a41306a290300370300200041d8016a200241e0016a41286a290300370300200041d0016a200241e0016a41206a290300370300200041c8016a200241e0016a41186a290300370300200041c0016a200241e0016a41106a290300370300200041b8016a200241e0016a41086a290300370300200041b0016a20022903e00137030020004198026a20024198026a41306a29030037030020004190026a20024198026a41286a29030037030020004188026a20024198026a41206a29030037030020004180026a20024198026a41186a290300370300200041f8016a20024198026a41106a290300370300200041f0016a20024198026a41086a290300370300200041e8016a200229039802370300200041d0026a200241d0026a41306a290300370300200041c8026a200241d0026a41286a290300370300200041c0026a200241d0026a41206a290300370300200041b8026a200241d0026a41186a290300370300200041b0026a200241d0026a41106a290300370300200041a8026a200241d0026a41086a290300370300200041a0026a20022903d00237030020004188036a20024188036a41306a29030037030020004180036a20024188036a41286a290300370300200041f8026a20024188036a41206a290300370300200041f0026a20024188036a41186a290300370300200041e8026a20024188036a41106a290300370300200041e0026a20024188036a41086a290300370300200041d8026a200229038803370300200042073703000b200241c0036a24000bd20201037f230041206b220224000240024020012903004201520d0020012d00084102470d00024002400240200141086a22032802240e03010300030b200241186a200341196a290000370300200241106a200341116a290000370300200241086a200341096a29000037030020022003290001370300410021040c010b200241186a200341196a290000370300200241106a200341116a290000370300200241086a200341096a29000037030020022003290001370300410121040b20002002290300370001200041003a0000200041196a200241186a290300370000200041116a200241106a290300370000200041096a200241086a290300370000024020032d00004102470d002004450d0220032802244101470d02200141346a280200450d02200128023010310c020b200310ca040c010b200041086a200141c80310bf091a200041013a00000b200241206a24000b990201027f230041d0006b22022400200241f8fac90036023020022001360228200241f0c2c98b0636022c02404104102f2203450d002002420437023c20022003360238200241386a200241286a4104724104107e20022001280200360200200241386a20024104107e200228023821012002200228024036024c200220013602482002200241c8006a10ef050240200228023c450d00200110310b0240024020022d00004101470d0020004200370000200041186a4200370000200041106a4200370000200041086a42003700000c010b20002002290001370000200041186a200241196a290000370000200041106a200241116a290000370000200041086a200241096a2900003700000b200241d0006a24000f0b1039000bcc1306027f0d7e017f017e017f037e23004190096b220624000240024020022003844200520d0020004100360200200041106a4200370300200041086a42003703000c010b2006200136020c200641d0006a2001109303200641c0016a200628025022072006280258109403200641c0016a41386a2903002108200641c0016a41306a2903002109200641c0016a41286a290300210a200641c0016a41206a290300210b200641c0016a41186a290300210c200641c0016a41106a290300210d20064180026a290300210e20062903c801210f20062903c001211020064190016a41086a20064190026a290300370300200620064188026a290300370390010240024020104201510d004200210e200641106a41386a4200370300200641106a41306a4200370300200641106a41286a4200370300200641106a41206a4200370300200641106a41186a4200370300200641106a41106a4200370300200641106a41086a4200370300200642003703104200210b4200210a42002109420021084200210f4200210d4200210c420021114200211242002110420021130c010b200641106a41206a200a370300200641106a41286a2009370300200641106a41106a200c370300200641106a41306a20083703002006200b3703282006200f3703102006200e3703482006200d370318200a211120092112200f2110200d21130b02402006280254450d00200710310b0240024020102013844200520d0020112006290320842012200641286a29030084844200520d002006290340200641c8006a2903008450450d0042002111410021070c010b42012111410121070b024020114201510d004200210b4200210c4200210e4200210a42002109420021084200210f4200210d0b0240024002400240200f20027d2213200f56200d20037d200f200254ad7d2210200d562010200d511b0d002013200c7c221442ffc7afa025562010200b7c20142013542215ad7c22124200522012501b0d02200f200c7c22164280c8afa025544100200d200b7c2016200f54ad7c501b0d0220050d02200641c0016a410610aa030c010b200641c0016a410410aa030b20062902c401210f20062802c00121010c010b200641b0016a2001109303200641c0016a20062802b001221720062802b80110940320062903c0014201512105200641f0016a290300210f200641e8016a290300210d20064180026a2903002118200641f8016a2903002119024020062802b401450d00201710310b200f420020051b2116200d420020051b211a2018420020051b210f2019420020051b210d02400240024041004102410120044101711b200441ff01714101461b0e03020100020b2016200f201a200d562016200f562016200f511b22041b210f201a200d20041b210d0c010b201a210d2016210f0b0240200d201356200f201056200f2010511b450d0020064190016a410210aa0320062d00900122044107460d00200629029401210f20062f00910120062d0093014110747241087420047221010c010b200641e8016a22052009370300200641f0016a221720083703002006200c3703d001200641d8016a200b3703002006200a3703e001200620133703c001200620103703c8014200210d420121092011420152ad210a02400240427f20142015201220105420122010511b22041b220842ffc7afa02556427f201220041b220f420052200f501b0d002013200c842010200b8484220d50210442002109200d420052ad210d0c010b2017290300211820052903002116200641e0016a2903002114200641d0016a290300211120062903d801211220062903c801210b20062903c001210c410121040b20064188016a2003370300200641f8006a200f370300200641f0006a22052008370300200641e0006a20103703002006200237038001200620133703582006200d3703682006200a37035002400240024020072009420152720d00200620013602c0012001200641c0016a10a3030c010b0240200741017322072009420151720d00200620013602c0012001200641c0016a10a40341ff017122074103460d01024020070e03030200030b20064180016a2101024020040d00200620053602c001200641c0016a10a2030b200620013602c001200641c0016a10a203410421010c030b20094201522007710d010b200641a0016a2001109303200641c0016a20062802a001220520062802a801220710940320062903c001210f20064190016a41086a220420064190026a290300370300200620064188026a2903003703900102400240200f4201510d00200641b0016a41086a4200370300200642003703b0010c010b200641b0016a41086a200429030037030020062006290390013703b0010b20064188026a20062903b00137030020064190026a200641b0016a41086a290300370300200642013703c001200641c0016a41386a20184200200942015122041b370300200641f0016a2016420020041b370300200641c0016a41286a2014420020041b370300200641e0016a2012420020041b370300200641d8016a2011420020041b370300200641c0016a41106a200b420020041b37030020064180026a200e420020041b3703002006200c420020041b3703c80120052007200641c0016a41086a109903024020062802a401450d00200510310b200641d0006a41106a2903002110200641d0006a41286a290300210f200641d0006a41386a2903002103200629035821132006290370210820062903800121022006290350210a2006290368210d0b0240200a4201520d00200641f8016a2010370300200641f0016a2013370300200641c0016a41086a41003a0000200641c9016a2001290000370000200641d1016a200141086a290000370000200641d9016a200141106a290000370000200641e1016a200141186a290000370000200641023a00c001200641c0016a10a9020b02400240200d50450d004200210d0c010b200641c0016a41086a200628020c220141086a290000370300200641c0016a41106a200141106a290000370300200641c0016a41186a200141186a290000370300200620012900003703c0014201210d0b200641d0006a41186a200641c0016a41186a22012903002210370300200641d0006a41106a200641c0016a41106a2204290300220c370300200641d0006a41086a200641c0016a41086a290300220b370300200620062903c0012209370350200641f0016a200f370300200641e8016a220520083703002004200b3703002001200c370300200641e0016a20103703002006200d3703c001200620093703c801200641c0016a10a503024020062903c001500d0020062005360210200641106a10a2030b20004100360200200041106a2003370300200041086a20023703000c010b200041086a200f37020020002001360204200041013602000b20064190096a24000bc10c04067f027e027f017e230041900b6b2202240041012103410121044101210541012106024002400240024002400240024002400240024002400240024002402001280200220741786a0e0403020001060b200141d8036a2903002108200141d0036a2903002109200241086a41046a200141086a41c80310bf091a200241003602980720024198076a410472200241086a41cc0310bf091a0240024020002802042203450d002000280200210a0c010b41a829102f2203450d074100210a200341003b01a629200341003602a02920002003360204200041003602000b0240034020032f01a629220b41d0036c210641002107417f210402400340024020062007470d00200b21040c020b200320076a2105200441016a2104200741d0036a2107024020024198076a200510b80441187441187541016a0e03020001020b0b20024198076a10b209200320044104746a220741f0276a2200427f2000290300220c20097c22092009200c542200200741f8276a2207290300220920087c2000ad7c220820095420082009511b22001b3703002007427f200820001b3703000c020b0240200a450d00200a417f6a210a200320044102746a41a8296a28020021030c010b0b200229029c07210c200241d4036a200241a4076a220741c40310bf091a2002200c37029c0720024100360298072007200241d4036a41c40310bf091a200241f00a6a2004360200200241ec0a6a2003360200200220003602f40a200241003602e80a20024198076a2009200810b3091a0b4101210441002103410121050c030b200241086a41046a200141086a41c80310bf091a41002105200241003602980720024198076a410472200241086a41cc0310bf091a20024198076a41f0036a200141f0036a29030037030020024198076a41e8036a200141e8036a29030037030020024198076a41e0036a200141e0036a29030037030020024198076a41d8036a200141d8036a2903003703002002200141d0036a2903003703e80a2000410c6a20024198076a10890841012103410121040c020b20024198076a410c6a2001410c6a280200360200200241f00a6a200141186a290300370300200241f80a6a200141206a290300370300200241800b6a200141286a290300370300200241880b6a200141306a2903003703004101210320024101360298072002200129020437029c072002200141106a2903003703e80a2000410c6a20024198076a1089084100210641012104410121050c020b200141186a2903002108200141106a290300210920024198076a410c6a2001410c6a28020036020020024101360298072002200129020437029c070240024020002802042203450d002000280200210a0c010b41a829102f2203450d044100210a200341003b01a629200341003602a02920002003360204200041003602000b0240034020032f01a629220b41d0036c210641002107417f210402400340024020062007470d00200b21040c020b200320076a2105200441016a2104200741d0036a2107024020024198076a200510b80441187441187541016a0e03020001020b0b20024198076a10b209200320044104746a220741f0276a2200427f2000290300220c20097c22092009200c542200200741f8276a2207290300220920087c2000ad7c220820095420082009511b22001b3703002007427f200820001b3703000c020b0240200a450d00200a417f6a210a200320044102746a41a8296a28020021030c010b0b200229029c07210c200241086a200241a4076a220741c40310bf091a2002200c37029c0720024101360298072007200241086a41c40310bf091a200241f00a6a2004360200200241ec0a6a2003360200200220003602f40a200241003602e80a20024198076a2009200810b3091a0b4100210441012103410121050b410121060b200128020021070b200741786a0e0405040302010b1039000b200110aa010c040b2005450d03200141086a10ad01200141d0036a2d00004106490d03200141d8036a280200450d03200141d4036a28020010310c030b2003450d02200141086a10ad010c020b2006450d010240200141086a280200450d00200128020410310b200141106a2d00004106490d01200141186a280200450d01200141146a28020010310c010b2004450d00200141086a280200450d00200128020410310b200241900b6a24000bef0f05027f0c7e017f037e017f230041a0096b22042400024002402002200384500d00200441e0006a2001109303200441d0016a200428026022052004280268109403200441d0016a41386a2903002106200441d0016a41306a2903002107200441d0016a41286a2903002108200441d0016a41206a2903002109200441d0016a41186a290300210a200441d0016a41106a290300210b20044190026a290300210c20042903d801210d20042903d001210e200441a0016a41086a200441a0026a290300370300200420044198026a2903003703a00102400240200e4201510d004200210c200441206a41386a4200370300200441206a41306a4200370300200441206a41286a4200370300200441206a41206a4200370300200441206a41186a4200370300200441206a41106a4200370300200441206a41086a420037030020044200370320420021094200210842002107420021064200210d4200210b4200210a4200210f420021104200210e420021110c010b200441206a41206a2008370300200441206a41286a2007370300200441206a41106a200a370300200441206a41306a2006370300200420093703382004200d3703202004200c3703582004200b3703282008210f20072110200d210e200b21110b02402004280264450d00200510310b02400240200e2011844200520d00200f2004290330842010200441386a29030084844200520d002004290350200441d8006a2903008450450d004200210e410021120c010b4201210e410121120b0240200e4201510d004200210a4200210c420021094200210842002107420021064200210d4200210b0b0240024002400240200e4201510d0020024280c8afa0255441002003501b0d010b200441f0016a2008370300200441f8016a200737030020044180026a2006370300200420093703e8012004200a3703e0012004200b200b20037c200d20027c220f200d542205ad7c221120052011200b542011200b511b22051b22113703d8012004200d200f20051b220d3703d0014200210f4200200320051b21034200200220051b210b42012110200e420152ad210e02400240427f200d200a7c22022002200d542205201120097c2005ad7c220220115420022011511b22051b221342ffc7afa02556427f200220051b22024200522002501b0d00200d200a84201120098484220a50210542002110200a420052ad210f0c010b200441e0016a290300211420042903d801211520042903d001210a410121050b20044198016a200337030020044188016a200237030020044180016a22162013370300200441f0006a20113703002004200b370390012004200d3703682004200f3703782004200e370360024020122010420152720d00200420013602d0012001200441d0016a10a3030c020b0240201241017322122010420151720d00200420013602d0012001200441d0016a10a40341ff017122124103460d02024020120e03040300040b20044190016a2101024020050d00200420163602d001200441d0016a10a2030b200110a1030c040b2010420152201271450d010c020b200441d0016a410510aa030c020b200441b0016a2001109303200441d0016a20042802b001221220042802b801221610940320042903d001210b200441a0016a41086a2205200441a0026a290300370300200420044198026a2903003703a00102400240200b4201510d00200441c0016a41086a4200370300200442003703c0010c010b200441c0016a41086a2005290300370300200420042903a0013703c0010b20044198026a20042903c001370300200441a0026a200441c0016a41086a290300370300200442013703d001200441d0016a41386a20064200201042015122051b37030020044180026a2007420020051b370300200441d0016a41286a2008420020051b370300200441f0016a2009420020051b370300200441e8016a2014420020051b370300200441d0016a41106a2015420020051b37030020044190026a200c420020051b3703002004200a420020051b3703d80120122016200441d0016a41086a109903024020042802b401450d00201210310b200441e0006a41106a2903002111200441e0006a41286a2903002102200441e0006a41386a29030021032004290368210d2004290380012113200429039001210b2004290360210e2004290378210f0b0240200e4201520d0020044188026a201137030020044180026a200d370300200441d0016a41086a41003a0000200441d9016a2001290000370000200441e1016a200141086a290000370000200441e9016a200141106a290000370000200441f1016a200141186a290000370000200441023a00d001200441d0016a10a9020b02400240200f50450d004200210d0c010b200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d0014201210d0b200441186a200441d0016a41186a22012903002209370300200441106a200441d0016a41106a22052903002207370300200441086a200441d0016a41086a2903002208370300200420042903d001220a37030020044180026a2002370300200441f8016a221220133703002005200837030020012007370300200441f0016a20093703002004200d3703d0012004200a3703d801200441d0016a10a50320042903d001500d0120042012360260200441e0006a10a2030c010b4200210b420021030b2000200b37030020002003370308200441a0096a24000b9b0201047f230041c0006b2202240041c394c5002103411621044106210502400240024002400240024002400240200141ff01710e080001020304050607000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41d893c5001047000b41b894c5002103410b2104410021050c050b41ac94c5002103410c2104410121050c040b419f94c5002103410d2104410221050c030b419894c500210341072104410321050c020b418094c500210341182104410421050c010b41e893c500210341182104410521050b20004183143b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b130020004105360204200041b4c0c3003602000b340020004186c7c00036020420004100360200200041146a4101360200200041106a41f4d7c300360200200041086a42073702000b130020004101360204200041acd9c3003602000b4b01027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024280a094a58d1d370300200020024110107e200241106a24000bd70201047f230041c0006b2202240041fcd6c7002103411321044109210502400240024002400240024002400240024002400240200141ff01710e0b000102030405060708090a000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41f8d5c7001047000b41f6b3c800210341092104410021050c080b41ebd6c700210341112104410121050c070b41dcd6c7002103410f2104410221050c060b41d2d6c7002103410a2104410321050c050b41c5d6c7002103410d2104410421050c040b41b3d6c700210341122104410521050c030b41abd6c700210341082104410621050c020b419bd6c700210341102104410721050c010b4188d6c7002103410821050b20004183a0013b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000bae0101017f230041106b220224000240024002400240024002400240200041ff01710e06000102030405060b200241003a000f20012002410f6a4101107e0c050b200241013a000f20012002410f6a4101107e0c040b200241023a000f20012002410f6a4101107e0c030b200241033a000f20012002410f6a4101107e0c020b200241043a000f20012002410f6a4101107e0c010b200241053a000f20012002410f6a4101107e0b200241106a24000b13002000410636020420004188ddc3003602000be30401047f230041c0006b220224004184f4c40021034111210441162105024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141ff01710e18000102030405060708090a0b0c0d0e0f1011121314151617000b2002413c6a41013602002002420137022c200241d897ca0036022820024104360224200241d8e3c8003602202002200241206a360238200241286a41ecd8c5001047000b41dcefc4002103410021050c150b41f8efc400210341192104410121050c140b419cf0c4002103411b2104410221050c130b41c0f0c400210341182104410321050c120b41e0f0c4002103410f2104410421050c110b41f8f0c4002103410521050c100b41e4fec900210341082104410621050c0f0b419cf1c400210341142104410721050c0e0b41b8f1c4002103410d2104410821050c0d0b41d0f1c4002103410b2104410921050c0c0b41e4f1c400210341162104410a21050c0b0b4184f2c4002103410d2104410b21050c0a0b419cf2c4002103410c2105410c21040c090b41b0f2c4002103410b2104410d21050c080b41c4f2c400210341102104410e21050c070b41dcf2c400210341102104410f21050c060b41f4f2c4002103410c2104411021050c050b4188f3c4002103410f2104411121050c040b41a0f3c400210341122105411221040c030b41bcf3c400210341122104411321050c020b41d8f3c400210341102104411421050c010b41f0f3c4002103410c2104411521050b20004183363b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000be80801167f230041f0006b22022400200241186a419ee6c300410f10a702200241d8006a41b8e9c300410810a7020240024002400240024002404104102f2203450d00200320013600004124102f2201450d002002422437020c20022001360208200241086a200241186a4110107e200241086a200241d8006a4110107e200241086a20034104107e200310312002280208210420022002280210220336022c20022004360228200241306a2004200310d20220022802302205450d03200228023421062002200241306a41086a28020036024420022005360240200241d8006a200241c0006a10e705024020022802582207450d00200241d8006a41086a2802002103200228025c2108200241d8006a200241c0006a10e705024020022802582209450d00200241e0006a2201280200210a200228025c210b200241d8006a200241c0006a10e70502402002280258220c450d002001280200210d200228025c210e200241d8006a200241c0006a10e80502402002280258220f450d00200241e0006a2802002101200228025c21100240200228024422114104490d002002280240221228000021132002201241046a36024020022011417c6a221436024420144104490d002002201241086a360240201228000421142002201141786a221536024420154104490d0020022012410c6a3602402002201141746a221536024420154104490d00201228000821152002201241106a3602402002201141706a221636024420164104490d00201228000c21162002201241146a36024020022011416c6a2217360244201741034b0d060b02402001450d002001410c6c2101200f210303400240200341046a28020041ffffffff0371450d00200328020010310b2003410c6a2103200141746a22010d000b0b2010450d002010410c6c450d00200f10310b200e41ffffff3f71450d00200c10310b200b41ffffff3f71450d00200910310b200841ffffff3f71450d00200710310b4100210720024100360220200242013703182002410c36024c2002200241286a3602482002200241186a360254200241ec006a41013602002002420137025c2002419086c4003602582002200241c8006a360268200241d4006a41d8ddc900200241d8006a10401a2002280218200228022010d9040240200228021c450d00200228021810310b0c020b1039000b201228001021172002201141686a3602442002201241186a360240201228001421110b02402006450d00200510310b20070d010b200041003602000c010b2000200836020420002007360200200041c4006a2011360200200041c0006a20173602002000413c6a2016360200200041386a2015360200200041346a2014360200200041306a20133602002000412c6a2001360200200041286a2010360200200041246a200f360200200041206a200d3602002000411c6a200e360200200041186a200c360200200041146a200a360200200041106a200b3602002000410c6a2009360200200041086a20033602000b0240200228020c450d00200410310b200241f0006a24000bda0403087f037e047f23004190016b220224002002200110bb01024002402002280200450d00200041003602000c010b02400240024002402002280204220320012802044105762204200420034b1b22054105742204417f4c0d000240024020050d00410121060c010b2004102f2206450d030b024020030d00410021030c040b200241e8006a41017221044100210741002108410021090340200241e8006a200110b50120022d00684101460d02200241286a41086a200441086a290000220a370300200241286a41106a200441106a290000220b370300200241286a41186a200441186a290000220c370300200241086a41086a220d200a370300200241086a41106a220e200b370300200241086a41186a220f200c37030020022004290000220a3703282002200a3703080240024020092005470d002007200941016a2210200720104b1b22104104201041044b1b221041ffffff3f712010462105201041057421100240024020090d00200241003602680c010b200241013602702002200836026c200220063602680b200241c8006a20102005200241e8006a104e2002280250211020022802484101460d01200228024c2106201041057621050b200620086a22102002290308370000201041186a200f290300370000201041106a200e290300370000201041086a200d290300370000200741026a2107200841206a21082003200941016a2209460d050c010b0b20100d020b103b000b20004100360200200541ffffff3f71450d02200610310c020b1039000b2000200536020420002006360200200041086a20033602000b20024190016a24000b860404037f017e067f017e230041306b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240200228020c22032001280204410c6e2204200420034b1bad420c7e2205422088a70d002005a72204417f4c0d000240024020040d00410421060c010b2004102f2206450d030b2004410c6e2107024020030d00410021030c040b4100210841002104410021090340200241206a200110fd082002280220220a450d02200229022421050240024020092007470d002008200941016a220b2008200b4b1b220b4104200b41044b1bad420c7e220c422088a745410274210b200ca721070240024020090d00200241003602200c010b2002410436022820022004360224200220063602200b200241106a2007200b200241206a104e2002280218210b20022802104101460d0120022802142106200b410c6e21070b200620046a220b200a360200200b41046a2005370200200841026a21082004410c6a21042003200941016a2209460d050c010b0b200b0d020b103b000b2000410036020002402009450d002006210903400240200941046a28020041ffffffff0371450d00200928020010310b2009410c6a2109200441746a22040d000b0b2007450d022007410c6c450d02200610310c020b1039000b2000200736020420002006360200200041086a20033602000b200241306a24000b34002000419ee6c30036020420004100360200200041146a4103360200200041106a41b0e6c300360200200041086a420f3702000b2701017f230041d0006b22022400200241003602082000200241086a10eb05200241d0006a24000bc00401057f230041106b220224002001280200210302404101102f2204450d0020004201370204200020043602000240024020030d00200241003a000c20002002410c6a4101107e0c010b200241013a000c20002002410c6a4101107e2000200141086a280200220410cb0102402004450d00200441057421040340200020034120107e200341206a2103200441606a22040d000b0b2001410c6a28020021032000200141146a280200220410cb0102402004450d00200441057421040340200020034120107e200341206a2103200441606a22040d000b0b200141186a28020021032000200141206a280200220410cb0102402004450d00200441057421040340200020034120107e200341206a2103200441606a22040d000b0b200141246a280200210520002001412c6a280200220310cb0102402003450d0020052003410c6c6a210603402005280200210320002005280208220410cb012005410c6a210502402004450d002004410274210403402002200328020036020c20002002410c6a4104107e200341046a21032004417c6a22040d000b0b20052006470d000b0b2002200141306a28020036020c20002002410c6a4104107e2002200141346a28020036020c20002002410c6a4104107e2002200141386a28020036020c20002002410c6a4104107e20022001413c6a28020036020c20002002410c6a4104107e2002200141c0006a28020036020c20002002410c6a4104107e2002200141c4006a28020036020c20002002410c6a4104107e0b200241106a24000f0b1039000b7c01027f230041206b220224002002419ee6c300410f10a702200241106a41b8e9c300410810a70202404104102f2203450d00200320013600004124102f2201450d002000422437020420002001360200200020024110107e2000200241106a4110107e200020034104107e20031031200241206a24000f0b1039000bf10101047f230041c0006b2202240041fca0c6002103410f210441042105024002400240024002400240200141ff01710e06000102030405000b2002411c6a41013602002002420137020c200241d897ca0036020820024104360224200241d8e3c8003602202002200241206a360218200241086a41ccecc6001047000b419ca0c6002103410d2104410021050c030b41b4a0c6002103410d2104410121050c020b41cca0c6002103410e2104410221050c010b41e4a0c6002103410d2104410321050b20004183263b0100200041086a2004360200200041046a2003360200200041026a20053a0000200241c0006a24000b8d0701037f230041106b2202240002400240024002400240024002400240200028020022002d00000e0701020304050600010b2002200128021841d6fdc90041052001411c6a28020028020c1100003a000820022001360200200241003a000920024100360204410121012002200041016a36020c20022002410c6a41dcfdc90010501a20022d000821000240200228020422030d00200021010c070b0240200041ff01710d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c060b2002200128021841cb80ca0041052001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41ecfdc90010501a20022d0008210120022802042203450d05200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c050b200128021841fcfdc900410c2001411c6a28020028020c11000021010c040b20012802184188fec90041092001411c6a28020028020c11000021010c030b2002428080808010420020012802184191fec90041062001411c6a28020028020c1100001b2001ad84370300410121012002200041016a36020c20024197fec90041052002410c6a419cfec900106b21032002200041026a36020c200341acfec90041052002410c6a419cfec900106b21032002200041046a36020c200341b1fec90041072002410c6a41b8fec900106b22002d00042103024020002d00050d00200321010c030b0240200341ff01710d0020022802002201411c6a28020028020c210320012802182104024020012d0000410471450d00200020044194a0c0004101200311000022013a00040c040b20044195a0c0004102200311000021010b200020013a00040c020b200128021841c8fec90041112001411c6a28020028020c11000021010c010b200128021841d9fec900410b2001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bb205010a7f230041d0006b2202240020024100360208200241086a410472210320012802002104200128020421054100210602400340200241003a003c2002413c6a20042005410047220710bf091a024020050d00200241003a003c0b20052007490d012001200520076b22053602042001200420076a2204360200200320066a20022d003c3a00002002200641016a22073602082007210620074120470d000b200241c8006a41026a2205200241156a2d00003a0000200241c4006a41026a22072002411c6a2d00003a0000200220022f010c3b014c200220022d000e3a004e2002200241086a410b6a2f00003b01482002200241086a41126a2f01003b0144200241166a2801002104200228000f21062002411d6a28000021012002200241086a41196a28000036023c2002200241246a28000036003f200241286a2802002103200220022d004e3a0006200220022f014c3b0104200241386a41026a220820052d00003a0000200220022f01483b0138200241346a41026a220920072d00003a0000200220022f01443b0134200241306a41026a220720022d003e3a0000200220022f013c3b0130200228003f210a2002413c6a41026a220b20082d00003a0000200220022f01383b013c200241cc006a41026a220820092d00003a0000200220022f01343b014c200520072d00003a0000200220022f01303b0148200041046a2006360000200041036a20022d00063a0000200020022f01043b00012000410b6a2004360000200041086a20022f013c3b00002000410a6a200b2d00003a0000200041126a20013600002000410f6a20022f014c3b0000200041116a20082d00003a0000200041166a20022f01483b0000200041186a20052d00003a00002000411d6a2003360000200041196a200a360000200041003a0000200241d0006a24000f0b20072005419480ca001061000b150020002002ad4220862001ad84200310034101460be30503017f017e0e7f230041d0006b22032400024002402001200210052204422088a722010d00410121050c010b2004a721050b02402001450d002001417f6a210602400240024020052d00000e020001030b4100210120034100360210200541016a2107200341106a4104722108034020062001460d03200820016a200720016a2d00003a00002003200141016a22023602102002210120024121470d000b200320032f00153b014e20032003411c6a2f010022023b014c2003200341236a2f000022063b014a2003411b6a2d000021072003411e6a2801002108200341226a2d0000210920032d001421012003280017210a20032003412a6a2f0100220b3b0148200341296a2d0000210c200341256a280000210d200341306a2d0000210e2003412c6a280200210f2003200341316a2f000022103b0146200341336a2f00002111200320032f014e22123b010e200320023b0144200320063b01422003200b3b0140200320103b013e200320023b010c200320063b010a2003200b3b0108200320103b0106200320123b0146200320023b0144200320063b01422003200b3b0140200320103b013e410021020c010b2006450d014100210102400240024020052d00010e03020100040b410221010c010b410121010b200320032f01103b0146200320032f014e3b0144200320032f014c3b0142200320032f014a3b0140200320032f01483b013e410121020b200020013a0001200020023a0000200041086a20073a0000200041046a200a360000200041026a20032f01463b00002000410f6a20093a00002000410b6a2008360000200041096a20032f01443b0000200041166a200c3a0000200041126a200d360000200041106a20032f01423b00002000411d6a200e3a0000200041196a200f360000200041176a20032f01403b000020032f013e2101200041206a20113b00002000411e6a20013b000020051031200341d0006a24000f0b41b5f1c900412e200341106a41e4f1c90041f4f1c9001041000b1c00200128021841c8fac900410f2001411c6a28020028020c1100000bc90401047f230041106b22022400024002400240024020002d00000e03010200010b200041046a280200220041ffff03200041ffff03491b220341c0006a41ff0020032000413e2003413e491b2204461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d040240200341ff014b0d002003417f6a210041022104410021030c010b200341817e6a210341ff012100410221040b200220003a000f20012002410f6a4101107e200521000c000b0b200241003a000f20012002410f6a4101107e0c010b200041046a2802002203413e200341ffff03200341ffff03491b2203413e491b2104024020002d0001450d00200341406a417f20032004461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d030240200341ff014b0d002003417f6a210041022104410021030c010b200341817e6a210341ff012100410221040b200220003a000f20012002410f6a4101107e200521000c000b0b200341807f7341bf7f20032004461b2100200320046b2103410121040340024002400240200441ff01714102470d00200021050c010b410021052004410171450d00410021040c010b2003450d020240200341ff014b0d002003417f6a210041022104410021030c010b200341817e6a210341ff012100410221040b200220003a000f20012002410f6a4101107e200521000c000b0b200241106a24000b130020004103360204200041d4f0c3003602000b130020004105360204200041a8f1c3003602000bb50e01087f230041d0006b22022400024041da08102f2203450d0020002003360200200041046a220442da08370200200341003b000041022105200041086a4102360200024002400240024002400240024002400240200128020022032903684202520d00410221010240024020042802004102470d00200242828080801037021420022000280200360210200241c0006a41084101200241106a104e200241c0006a41086a280200210120022802404101460d0120002002280244360200200041046a2001360200200041086a28020021010b200028020020016a41043a0000200041086a2201200128020041016a3602000c020b2001450d050c090b024020042802004102470d00200242828080801037021420022000280200360210200241c0006a41084101200241106a104e200241c0006a41086a280200210120022802404101460d0220002002280244360200200041046a2001360200200041086a28020021050b200028020020056a4184013a0000200041086a2201200128020041016a3602002003200010d801200341246a200010e201200341e8006a200010f7050b20034198016a200010d401200041086a28020021034104102f2201450d072002420437020420022001360200024002400240024041012003417e6a220320034101461b410020031b220341c000490d00200341808001490d012003418080808004490d02200241033a00102002200241106a4101107e200220033602102002200241106a4104107e0c030b200220034102743a00102002200241106a4101107e0c020b200220034102744101723b01102002200241106a4102107e0c010b200220034102744102723602102002200241106a4104107e0b0240200041086a2205280200220641014d0d00200241286a2002280200220320022802086a2204360200200220003602204100210120054100360200200241023602102002411c6a2000280200220541026a22073602002002200336022420022006417e6a220636021420022007360218200241246a2107024020060d002000200710f8050c080b034020032004460d082002200341016a360224200520016a20032d00003a00002000200028020841016a360208024020014101460d00200141016a210120022802242103200228022821040c010b0b20022802282206200228022422086b2203450d0302402002280220220441046a280200220020022802142205200228021022016a22096b2003490d00200428020021000c030b200920036a22012009490d04200041017422052001200520014b1b22014108200141084b1b21010240024020000d00200241003602400c010b200241c0006a41086a410136020020022000360244200220042802003602400b200241306a20014101200241c0006a104e200241386a2802002101024020022802304101460d00200420022802342200360200200441046a200136020020022802142105200228021021010c030b20010d080c040b4102200641e0cfc8001058000b20010d060c020b2000200120036a22036a200020016a200510c0091a200220033602102002280220220028020822052003460d00200120066a200820056a6b2104200028020020056a21030340200228022422012002280228460d052002200141016a360224200320012d00003a00002000200028020841016a360208200341016a21032004417f6a22040d000b0b200228022820022802246b2203417f4c0d000240024020030d00410121010c010b2003102f2201450d050b200241003602482002200336024420022001360240200241c0006a200710f805200228024421062002280240210720022802482203450d0202402002280220220441046a280200220020022802142208200228021022016a22056b2003490d00200428020021000c020b200520036a22012005490d00200041017422052001200520014b1b22014108200141084b1b21010240024020000d00200241003602400c010b200241c0006a41086a410136020020022000360244200220042802003602400b200241306a20014101200241c0006a104e200241386a2802002101024020022802304101460d00200420022802342200360200200441046a200136020020022802142108200228021021010c020b20010d040b103b000b2000200120036a22056a200020016a200810c0091a200220053602102002280220220428020822002005460d00200020016b2105200428020020006a21012007210003402003450d01200120002d00003a00002004200428020841016a360208200041016a2100200141016a210120052003417f6a2203470d000b0b2006450d00200710310b02402002280218200228021c2203460d00200220033602180b024020022802142203450d000240200228021022042002280220220541086a22002802002201460d002005280200220520016a200520046a200310c0091a200228021421030b2000200320016a3602000b02402002280204450d00200228020010310b200241d0006a24000f0b1039000ba70103017f027e017f230041106b220224000240024020002903004201520d002002200041106a29030020002903082203420c882204420120044201561b80a741047420037aa7417f6a22054101200541014b1b2205410f2005410f491b723b01082001200241086a4102107e0c010b200241003a000b20012002410b6a4101107e0b200041186a200110e0012002200041206a36020c2002410c6a200110d901200241106a24000beb0201067f230041206b2202240002400240200041046a2802002203200041086a28020022046b20012802042205200128020022066b2207490d00200028020021030c010b0240200420076a22062004490d00200341017422042006200420064b1b22044108200441084b1b21040240024020030d00200241003602100c010b200241106a41086a410136020020022003360214200220002802003602100b200220044101200241106a104e200241086a2802002104024020022802004101460d00200020022802042203360200200041046a2004360200200041086a280200210420012802002106200128020421050c020b2004450d001039000b103b000b024020062005460d002001200641016a36020020062d0000210602400340200320046a20063a0000200128020022062001280204460d01200441016a21042001200641016a36020020062d000021060c000b0b200441016a21040b200041086a2004360200200241206a24000bbd0401047f230041106b2202240020002802042103024002400240024020002802004101470d002000410c6a280200220041046a2204417f4c0d020240024002400240024020040d002002410036020820022004360204200241013602000c010b2004102f2205450d07200241003602082002200436020420022005360200200041c000490d01200041808001490d022000418080808004490d030b200241033a000c20022002410c6a4101107e2002200036020c20022002410c6a4104107e200220032000107e0c040b200220004102743a000c20022002410c6a4101107e200220032000107e0c030b200220004102744101723b010c20022002410c6a4102107e200220032000107e0c020b2002200041027441027236020c20022002410c6a4104107e200220032000107e0c010b200041086a280200220041046a2204417f4c0d0102400240024002400240024020040d002002410036020820022004360204200241013602000c010b2004102f2205450d07200241003602082002200436020420022005360200200041c000490d01200041808001490d022000418080808004490d030b200241031098012002200036020c20022002410c6a4104107e0c030b200220004102741098010c020b200220004102744101723b010c20022002410c6a4102107e0c010b2002200041027441027236020c20022002410c6a4104107e0b200220032000107e0b200120022802002002280208107e02402002280204450d00200228020010310b200241106a24000f0b103b000b1039000bd91303157f017e037f230041f0016b220224004100210320024100360260200241e0006a4104722104024002400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a22053602602005210320054120470d000b200241e8016a41026a2205200241ed006a2d00003a0000200241e4016a41026a2203200241f4006a2d00003a0000200220022f01643b01ec01200220022d00663a00ee012002200241eb006a2f00003b01e8012002200241f2006a2f01003b01e401200241ee006a28010021092002280067210a200241f5006a280000210b2002200241f9006a2800003602b8012002200241fc006a2800003600bb0120024180016a280200210c200220022d00ee013a00d601200220022f01ec013b01d401200241e0016a41026a220620052d00003a0000200220022f01e8013b01e001200241dc016a41026a220520032d00003a0000200220022f01e4013b01dc01200241d8016a41026a220320022d00ba013a0000200220022f01b8013b01d80120022800bb01210d200241d0016a41026a220720062d00003a0000200220022f01e0013b01d001200241cc016a41026a220620052d00003a0000200220022f01dc013b01cc01200241c8016a41026a220820032d00003a0000200220022f01d8013b01c801200128020022052802042103200241b4016a41026a220420022d00d6013a0000200220022f01d4013b01b401200241b0016a41026a220e20072d00003a0000200220022f01d0013b01b001200241ac016a41026a220720062d00003a0000200220022f01cc013b01ac01200241a8016a41026a220620082d00003a0000200220022f01c8013b01a80120034104490d0020052802002208280000210f20052003417c6a3602042005200841046a360200200241386a41026a200e2d00003a0000200241346a41026a20072d00003a0000200241306a41026a20062d00003a0000200220022f01b4013b013c200220022f01b0013b0138200220022f01ac013b0134200220022f01a8013b0130200220042d00003a003e4100210320024100360260200241e0006a410472210402400340200128020022052802042206450d01200528020022072d0000210820052006417f6a3602042005200741016a360200200420036a20083a00002002200341016a220536026020052103200541c000470d000b200220022f01643b01ec01200220022d00663a00ee0120022800672105200241e8016a41026a2203200241ed006a2d00003a00002002200241e0006a410b6a2f00003b01e801200241ee006a2801002106200241e4016a41026a2207200241f4006a2d00003a00002002200241f2006a2f01003b01e401200241f5006a2800002108200241e0016a41026a2201200241fb006a2d00003a00002002200241f9006a2f00003b01e001200241fc006a2802002104200241dc016a41026a220e20024182016a2d00003a00002002200241e0006a41206a2f01003b01dc0120024183016a2800002110200241d8016a41026a221120024189016a2d00003a0000200220024187016a2f00003b01d801200241e0006a412a6a2801002112200241d4016a41026a221320024190016a2d00003a000020022002418e016a2f01003b01d401200241e0006a41316a280000211420022002419c016a2900003700bf01200220024195016a2900003703b801200220022d00ee013a005e200220022f01ec013b015c200241d0016a41026a221520032d00003a0000200220022f01e8013b01d001200241cc016a41026a220320072d00003a0000200220022f01e4013b01cc01200241c8016a41026a220720012d00003a0000200220022f01e0013b01c801200241b4016a41026a2201200e2d00003a0000200220022f01dc013b01b401200241b0016a41026a220e20112d00003a0000200220022f01d8013b01b001200241ac016a41026a221120132d00003a0000200220022f01d4013b01ac01200241a8016a41026a221320022d00ba013a0000200220022f01b8013b01a80120022800bb01211620022900bf012117200241d8006a41026a221820152d00003a0000200220022f01d0013b0158200241d4006a41026a221520032d00003a0000200220022f01cc013b0154200241d0006a41026a220320072d00003a0000200220022f01c8013b0150200241cc006a41026a220720012d00003a0000200220022f01b4013b014c200241c8006a41026a2201200e2d00003a0000200220022f01b0013b0148200241c4006a41026a220e20112d00003a0000200220022f01ac013b0144200241c0006a41026a221120132d00003a0000200220022f01a8013b0140200220022d005e3a001e200220022f015c3b011c200241186a41026a221320182d00003a0000200220022f01583b0118200241146a41026a221820152d00003a0000200220022f01543b0114200241106a41026a221520032d00003a0000200220022f01503b01102002410c6a41026a220320072d00003a0000200220022f014c3b010c200241086a41026a220720012d00003a0000200220022f01483b0108200241046a41026a2201200e2d00003a0000200220022f01443b0104200241026a220e20112d00003a0000200220022f01403b0100200220022d003e3a002e200220022f013c3b012c200241286a41026a2211200241386a41026a2d00003a0000200220022f01383b0128200241246a41026a2219200241346a41026a2d00003a0000200220022f01343b0124200241206a41026a221a200241306a41026a2d00003a0000200220022f01303b01202000200f3602042000410b6a200a360000200041086a20022f012c3b01002000410a6a20022d002e3a000020002009360012200020022f01283b000f200041116a20112d00003a00002000200b360019200020022f01243b0016200041186a20192d00003a0000200020022f01203b001d2000411f6a201a2d00003a0000200041246a200c360000200041206a200d3600002000412a6a20022d001e3a0000200041286a20022f011c3b01002000412b6a2005360000200041316a20132d00003a0000200020022f01183b002f20002006360032200041386a20182d00003a0000200020022f01143b0036200020083600392000413f6a20152d00003a0000200020022f01103b003d200041c0006a2004360000200041c6006a20032d00003a0000200041c4006a20022f010c3b000020002010360047200041cd006a20072d00003a0000200020022f01083b004b2000201236004e200041d4006a20012d00003a0000200020022f01043b005220002014360055200041db006a200e2d00003a0000200020022f01003b0059200041e0006a2017370000200041dc006a2016360000200041003602000c020b200041013602000c010b200041013602000b200241f0016a24000baa1103057f027e057f230041b0016b2202240002400240024002400240024002400240024002400240024002400240024002400240024020012802042203450d00200128020022042d0000210520012003417f6a22063602042001200441016a36020020050e0701020304050607080b200041073a00000c100b200041003a00000c0f0b200241086a200110b60302402002290308a70d00200241086a41106a290300210720022903102108200041013a000020002002280038360001200041086a2008370300200041186a2002290370370300200041106a2007370300200041046a2002413b6a280000360000200041206a200241f0006a41086a2903003703000c0f0b200041073a00000c0e0b0240200110d1012207a74101710d00200041023a0000200020074208883e0001200041056a20022900703700002000410d6a200241f8006a290000370000200041156a20024180016a2900003700002000411d6a20024188016a290000370000200041246a2002418f016a2800003600000c0e0b200041073a00000c0d0b200241003602282006450d0b20042d0001210520012003417e6a22093602042001200441026a360200200220053a002c2002410136022820090d070c0b0b200241386a200110d001024020022d00384101460d00200241286a41086a200241386a41096a2900002207370300200220022900392208370328200041043a000020002008370001200041096a2007370000200041116a2002290070370000200041196a200241f0006a41086a290000370000200041206a200241ff006a2900003700000c0c0b200041073a00000c0b0b41002105200241003602702003417e6a2103200241f0006a410472210a0240034020062005460d01200420056a220941016a2d0000210b200120033602042001200941026a360200200a20056a200b3a00002002200541016a22093602702003417f6a21032009210520094120470d000b200241a8016a41026a2201200241fd006a2d00003a0000200241a4016a41026a220520024184016a2d00003a0000200220022f01743b01ac01200220022d00763a00ae012002200241f0006a410b6a2f00003b01a8012002200241f0006a41126a2f01003b01a401200241fe006a28010021032002280077210920024185016a28000021042002200241f0006a41196a28000036023820022002418c016a28000036003b20024190016a280200210b200220022d00ae013a006e200220022f01ac013b016c200241a0016a41026a220620012d00003a0000200220022f01a8013b01a0012002419c016a41026a220120052d00003a0000200220022f01a4013b019c0120024198016a41026a220520022d003a3a0000200220022f01383b019801200228003b210a200241e8006a41026a220c20062d00003a0000200220022f01a0013b0168200241e4006a41026a220620012d00003a0000200220022f019c013b0164200241e0006a41026a220120052d00003a0000200220022f0198013b0160200241dc006a41026a220520022d006e3a0000200220022f016c3b015c200241d8006a41026a220d200c2d00003a0000200220022f01683b0158200241d4006a41026a220c20062d00003a0000200220022f01643b0154200241d0006a41026a220620012d00003a0000200220022f01603b0150200041053a0000200041046a2009360000200020022f015c3b0001200041036a20052d00003a00002000410b6a2003360000200041086a20022f01583b00002000410a6a200d2d00003a0000200041126a20043600002000410f6a20022f01543b0000200041116a200c2d00003a0000200041166a20022f01503b0000200041186a20062d00003a00002000411d6a200b360000200041196a200a360000200041246a200241286a41036a280000360000200041216a20022800283600000c0b0b200041073a00000c0a0b200241206a200110bb0120022802200d032001280204220320022802242205490d032005417f4c0d050240024020050d00410121090c010b200510352209450d07200128020421030b20032005490d0220092001280200200510bf0921032001280204220920054f0d0120052009419cb4c0001061000b200041073a00000c080b2001200920056b3602042001200128020020056a3602002003450d01200041063a0000200020022f00383b0001200041086a2005ad2207422086200784370000200041046a2003360000200041106a2002290370370300200041036a2002413a6a2d00003a0000200041186a200241f0006a41086a290300370300200041206a200241f0006a41106a2903003703000c070b200910310b200041073a00000c050b20042d0002210520012003417d6a22093602042001200441036a360200200220053a002d200241023602282009450d0320042d0003210520012003417c6a22093602042001200441046a360200200220053a002e200241033602282009450d0320042d0004210520012003417b6a22093602042001200441056a36020020024104360228200220053a002f2009450d0320042d0005210520012003417a6a22093602042001200441066a360200200241306a20053a0000200241053602282009450d0320042d000621052001200341796a22093602042001200441076a360200200241316a20053a0000200241063602282009450d0320042d000721052001200341786a22093602042001200441086a360200200241326a20053a0000200241073602282009450d0320042d000821052001200341776a3602042001200441096a360200200241336a20053a000020024108360228200241386a41086a200241286a41086a2802003602002002200229032822073703382007a741084f0d0241fdefc900411b4198f0c900103c000b103b000b1039000b2000200229023c370001200041033a0000200041096a2002290070370000200041116a200241f8006a290000370000200041196a20024180016a290000370000200041206a20024187016a2900003700000c010b200041073a00000b200241b0016a24000bbd1e03057f027e057f230041b0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200128020022032802042204450d00200328020022052d0000210620032004417f6a3602042003200541016a36020020060e0701020304050607080b200041073a00000c160b200041003a00000c150b200241086a200110c50302402002290308a70d00200241086a41106a290300210720022903102108200041013a000020002002280058360001200041086a2008370300200041186a2002290370370300200041106a2007370300200041046a200241db006a280000360000200041206a200241f0006a41086a2903003703000c150b200041073a00000c140b20024200370358200128020022032802042204450d12200328020022052d0000210620032004417f6a360204200241013602582003200541016a360200200220063a005c2001280200220328020422040d080c110b20024100360248200128020022032802042204450d0f200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a004c200241013602482001280200220328020422040d080c0f0b20024100360258200128020022032802042204450d0c200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a005c200241013602582001280200220328020422040d080c0c0b4100210420024100360270200241f0006a410472210902400340200128020022032802042205450d01200328020022062d0000210a20032005417f6a3602042003200641016a360200200920046a200a3a00002002200441016a22033602702003210420034120470d000b200241a8016a41026a2203200241fd006a2d00003a0000200241a4016a41026a220120024184016a2d00003a0000200220022f01743b01ac01200220022d00763a00ae012002200241f0006a410b6a2f00003b01a8012002200241f0006a41126a2f01003b01a401200241fe006a28010021042002280077210520024185016a28000021062002200241f0006a41196a28000036025820022002418c016a28000036005b20024190016a280200210a200220022d00ae013a0046200220022f01ac013b0144200241a0016a41026a220920032d00003a0000200220022f01a8013b01a0012002419c016a41026a220320012d00003a0000200220022f01a4013b019c0120024198016a41026a220120022d005a3a0000200220022f01583b019801200228005b210b200241c0006a41026a220c20092d00003a0000200220022f01a0013b01402002413c6a41026a220920032d00003a0000200220022f019c013b013c200241386a41026a220320012d00003a0000200220022f0198013b0138200241346a41026a220120022d00463a0000200220022f01443b0134200241306a41026a220d200c2d00003a0000200220022f01403b01302002412c6a41026a220c20092d00003a0000200220022f013c3b012c200241286a41026a220920032d00003a0000200220022f01383b0128200041053a0000200041046a2005360000200020022f01343b0001200041036a20012d00003a00002000410b6a2004360000200041086a20022f01303b00002000410a6a200d2d00003a0000200041126a20063600002000410f6a20022f012c3b0000200041116a200c2d00003a0000200041166a20022f01283b0000200041186a20092d00003a00002000411d6a200a360000200041196a200b360000200041246a200241c8006a41036a280000360000200041216a20022800483600000c110b200041073a00000c100b200241206a200110ab0120022802200d0320012802002204280204220520022802242203490d032003417f4c0d080240024020030d00410121060c010b200310352206450d0a2001280200220428020421050b20052003490d0220062004280200200310bf0921012004280204220520034f0d0120032005419cb4c0001061000b200041073a00000c0e0b2004200520036b3602042004200428020020036a3602002001450d01200041063a0000200020022f00583b0001200041086a2003ad2207422086200784370000200041046a2001360000200041106a2002290370370300200041036a200241da006a2d00003a0000200041186a200241f0006a41086a290300370300200041206a200241f0006a41106a2903003703000c0d0b200610310b200041073a00000c0b0b200328020022052d0000210620032004417f6a3602042003200541016a36020020024102360258200220063a005d200128020022032802042204450d08200328020022052d0000210620032004417f6a3602042003200541016a36020020024103360258200220063a005e200128020022032802042201450d08200328020022042d0000210520032001417f6a3602042003200441016a360200200220053a005f2002410436025820022903582207a741044f0d0241fdefc900411b4198f0c900103c000b200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a004d20024102360248200128020022032802042204450d06200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a004e20024103360248200128020022032802042204450d06200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a004f20024104360248200128020022032802042204450d06200328020022052d0000210620032004417f6a3602042003200541016a360200200241d0006a20063a000020024105360248200128020022032802042204450d06200328020022052d0000210620032004417f6a3602042003200541016a360200200241d1006a20063a000020024106360248200128020022032802042204450d06200328020022052d0000210620032004417f6a3602042003200541016a360200200241d2006a20063a000020024107360248200128020022032802042201450d06200328020022042d0000210520032001417f6a3602042003200441016a360200200241d3006a20053a000020024108360248200241d8006a41086a200241c8006a41086a2802003602002002200229034822073703582007a741084f0d0541fdefc900411b4198f0c900103c000b200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a005d20024102360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a005e20024103360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200220063a005f20024104360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e0006a20063a000020024105360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e1006a20063a000020024106360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e2006a20063a000020024107360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e3006a20063a000020024108360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e4006a20063a000020024109360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e5006a20063a00002002410a360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e6006a20063a00002002410b360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e7006a20063a00002002410c360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e8006a20063a00002002410d360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241e9006a20063a00002002410e360258200128020022032802042204450d03200328020022052d0000210620032004417f6a3602042003200541016a360200200241ea006a220420063a00002002410f360258200128020022032802042201450d03200328020022052d0000210620032001417f6a3602042003200541016a360200200241eb006a20063a000020024110360258200241ac016a41026a200241e5006a2d000022033a0000200241a8016a41026a220120033a0000200220022f015c22053b0148200220022d005e22063a004a2002200241d8006a410b6a2f000022033b01ac01200220033b01a801200241e6006a280100210a20042f01002103200228005f2104200220063a00a601200220053b01a401200241a0016a41026a220520012d00003a0000200220022f01a8013b01a0012002419c016a41026a220120022d00a6013a0000200220022f01a4013b019c0120024198016a41026a220620052d00003a0000200220022f01a0013b019801200220033b0144200041043a0000200041046a2004360000200020022f019c013b0001200041036a20012d00003a00002000410b6a200a3600002000410f6a20033b0000200041086a20022f0198013b00002000410a6a20062d00003a0000200041116a2002290070370000200041196a200241f0006a41086a290000370000200041206a200241f0006a410f6a2900003700000c080b200041023a0000200020074220883e0001200041056a20022900703700002000410d6a200241f8006a290000370000200041156a20024180016a2900003700002000411d6a20024188016a290000370000200041246a2002418f016a2800003600000c070b103b000b1039000b200041073a00000c040b2000200229025c370001200041033a0000200041096a2002290070370000200041116a200241f0006a41086a290000370000200041196a20024180016a290000370000200041206a20024187016a2900003700000c030b200041073a00000c020b200241003602580b200041073a00000b200241b0016a24000b9a0201017f230041106b220224000240024002400240024002400240024020002d00000e0700010203040506070b200241003a000f20012002410f6a4101107e0c060b200241013a000f20012002410f6a4101107e2002200041086a360208200241086a200110d9010c050b200241023a000f20012002410f6a4101107e2001200041016a4104107e0c040b200241033a000f20012002410f6a4101107e2001200041016a4108107e0c030b200241043a000f20012002410f6a4101107e2001200041016a4110107e0c020b200241053a000f20012002410f6a4101107e2001200041016a4120107e0c010b200241063a000f20012002410f6a4101107e200041046a2802002000410c6a280200200110ce010b200241106a24000b880101017f230041306b220224002002200028020036020c200241173602142001411c6a280200210020022002410c6a360210200128021821012002412c6a4101360200200241246a41013602002002418cc6c0003602202002410136021c200241f0fac9003602182002200241106a36022820012000200241186a10402101200241306a240020010b0b0020002802002001104f0ba90705017f047e027f017e017f230041c0016b22022400200241b0016a200141186a2903002203200041186a29020085420020012903102204200029021085420010be09200241a0016a2003200041086a2902008542002004200029020085420010be092001200141086a2903002205200241a0016a41086a29030020022903a001857c2005200241b0016a41086a29030020022903b001857c200129030042adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c8542178985421789220637030002400240200028022022074125490d002000412c6a2802002107200041286a28020021080c010b200041256a21080b20024190016a20062007ad220985420042adfed5e4d485fda8d800420010be09200120024198016a2903002002290390018520097c42adfed5e4d485fda8d8007e22063703000240024002400240024020074109490d00200741104d0d01200241c0006a2003200720086a41706a220a41086a2900008542002004200a29000085420010be0920012005200241c0006a41086a2903002002290340857c20068542178922063703000340200241306a2003200841086a2900008542002004200829000085420010be09200841106a21082005200241306a41086a2903002002290330857c2006854217892106200741706a220741104b0d000c040b0b0240200741014b0d002007450d0420024180016a2006200831000085420042adfed5e4d485fda8d800420010be0920024188016a2903002002290380018521060c030b200741034b0d01200241f0006a200720086a417f6a310000422086200833000084200685420042adfed5e4d485fda8d800420010be09200241f8006a29030020022903708521060c020b200241d0006a2003200720086a41786a2900008542002004200829000085420010be092005200241d8006a2903002002290350857c20068542178921060c010b200241e0006a2003200720086a417c6a3500008542002004200835000085420010be092005200241e8006a2903002002290360857c20068542178921060b200120063703000b02400240200041cc006a2d00000d0020022006420042adfed5e4d485fda8d800420010be09200241086a29030020022903008521060c010b200241206a2006420185420042adfed5e4d485fda8d800420010be09200241106a200241206a41086a290300200229032085200041cd006a31000085420042adfed5e4d485fda8d800420010be09200241106a41086a29030020022903108521060b20012006370300200241c0016a24000b980201027f230041206b220224002002200128021841f8fac90041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041086a36021c200241086a200241186a41acf6c30010502002411c6a41bcf6c30010501a20022d0010210002400240200228020c22030d00200021010c010b0240200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280208220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00100b200241206a2400200141ff01714100470ba50101027f230041106b220324002002200110cb01024002402001450d00200141c4006c210103402002200041046a4120107e4120102f2204450d0220034220370204200320043602002003200041246a4120107e2002200328020022042003280208107e02402003280204450d00200410310b20032000280200360200200220034104107e200041c4006a2100200141bc7f6a22010d000b0b200341106a24000f0b1039000b6601017f230041206b220424002004200136020420042000360200200441086a41106a200241106a290200370300200441086a41086a200241086a290200370300200420022902003703082004419cdbc400200441046a419cdbc400200441086a20031063000b13002000410836020420004188f9c3003602000b8c630d017f017e027f017e0a7f017e117f037e057f027e017f037e037f230041f00b6b2202240020012903082103200241c0046a41186a22044200370300200241d0046a22054200370300200241c0046a41086a4200370300200242003703c004200241c0046a41b785c400411310a702200241b8036a41ca85c400410e10a7022004200241b8036a41086a290000370300200520022900b803370300200241086a200241c0046a10ab030240024002400240024002402003427f7c22062002290310420020022802081b5a0d00200141186a280200220441c0004201427f2006798842017c20034201511b79a76b4b0d00200241286a410036020020024208370320200220033703302002200342018620037b7d2203370318200241386a200041f80010bf091a200441ffffff0f712004470d0520044107742205417f4c0d05200141146a280200210720012802102108200129030021060240024020050d00410821090c010b2005102f2209450d050b02402005410776220a20044f0d00200541067622012004200120044b1b22014104200141044b1b220141ffffff0f712001464103742100200141077421010240024020050d00200241003602c0040c010b200241c0046a41086a4108360200200220053602c404200220093602c0040b200241b8036a20012000200241c0046a104e200241c0036a2802002101024020022802b8034101460d0020022802bc0321092001410776210a0c030b20010d050c060b20040d01410021040c020b200241383602bc03200241d885c4003602b80341042105200241043a00b002024041002802809a4a4104490d00200241e0086a410c6a4118360200200241123602e4082002200241b8036a3602e8082002200241b0026a3602e00841002802fc994a210441002802f8994a210541002802849a4a210020024180056a41c102360200200241c0046a41386a42f580808010370300200241f4046a41c5dbc300360200200241ec046a4215370200200241e8046a41b0dbc300360200200241e0046a4202370300200241d0046a4202370300200241c8046a410c360200200241dc046a200241e0086a36020020024194dbc3003602cc04200241a4dbc3003602c404200241043602c004200541f8fac900200041024622001b200241c0046a20044180a6c00020001b28021011030020022d00b00221050b200141146a28020041ffffff3f71450d02200128021010310c020b2004410574220541606a410576210b20092101200821040340200241d8096a41186a2200200441186a290000370300200241d8096a41106a220c200441106a290000370300200241d8096a41086a220d200441086a290000370300200220042900003703d809200141013a0000200141016a20022903d809370000200141096a200d290300370000200141116a200c290300370000200141196a200029030037000020014180016a2101200441206a2104200541606a22050d000b200b41016a21040b0240200741ffffff3f71450d00200810310b200241c0046a200241186a10eb0441012105024002400240024002400240024002400240024002400240024002400240024020022802c0044101460d00200241b8036a41066a200241c8046a41800110bf091a200241b0026a200241b8036a41860110bf091a200241b0016a200241b0026a41066a41800110bf091a200241b0026a200241b0016a41800110bf091a418801102f2201450d11200241c0046a41076a200241386a41f80010bf091a200241b8036a200241c0046a41ff0010bf091a200141003a00082001200642017c220642018620067b7d20067a427f857c2206370300200141096a200241b8036a41ff0010bf091a20024281808080103702c406200220013602c00602400240024020034201520d002006500d010b200241d0066a2003105120022802d806220541016a220141ffffff0f712001470d1420014107742201417f4c0d140240024020010d004108210e0c010b2001102f220e450d140b200920044107746a210f20022802d00621102001410776ad211120022802d406211220050d01200921070c040b418001102f220e450d1220012d00082104200241c0046a200141096a41ff0010bf091a42012111024020044102460d00200e20043a0000200e41016a200241c0046a41ff0010bf091a42818080801021110b200110310c040b201020054103746a2113200241f0066a41206a2114200241f0066a41c8006a2115200241f0066a41246a2116200241f0066a410d6a2117200241b8036a41146a2118200241eb096a2119200241c0046a410172211a200241cc046a211b200241b8036a410172211c200241b8036a41216a211d200241c0046a41dc006a211e200241f4046a211f200241c0046a41146a2120200241d8096a41046a21212009210720102122034020022802c006220041f87e6a21042022220141086a21222001290300210620022802c8062105410021010240024002400240024002400340024020052001470d00200241003602c806200241003602c404200220053602c004200220003602c8042002200020054188016c6a3602cc042002200241c0066a3602d004200241e0066a200241c0046a1087060c020b200141016a210120044188016a22042903002006580d000b20052001417f6a220c490d01200241003602c806200220043602cc04200220003602c8042002200520016b41016a3602c4042002200c3602c0042002200241c0066a3602d004200241e0066a200241c0046a1087060b0240024020022802e80622010e020300010b20022802e00622042903002006520d00200441186a2802002105200441106a2903002103200441096a35000021062004410d6a33000021232004410f6a310000212420042d00082101200241f0066a2004411c6a41ec0010bf091a200241003602e8060240024020014101470d0020062023202442108684422086842125200220022900f5063700bd03200220022903f0063703b803410121040c010b202141206a201641206a280200360200202141186a201641186a290200370200202141106a201641106a290200370200202141086a201641086a29020037020020212016290200370200200241b8036a41086a200241f0066a41086a290300370300200241b8036a41106a200241f0066a41106a290300370300200241b8036a41186a200241f0066a41186a290300370300200220022903f0063703b803200241c0046a41206a200241d8096a41206a290200370300200241c0046a41186a200241d8096a41186a290200370300200241c0046a41106a200241d8096a41106a290200370300200241c0046a41086a200241d8096a41086a290200370300200220022902d8093703c004200241f00a6a41186a201541186a290200370300200241f00a6a41106a201541106a290200370300200241f00a6a41086a201541086a290200370300200220152902003703f00a410021040b0240024020114220882206a722012011a7470d00200141016a22002001490d1b2001410174220c20002000200c491b22004104200041044b1b220041ffffff0f71200046410374210c200041077421000240024020010d00200241003602d8090c010b200241083602e0092002200e3602d809200220064207863e02dc090b200241e0086a2000200c200241d8096a104e20022802e808210020022802e0084101460d0120022802e408210e2011428080808070832000410776ad8421110b200e20014107746a2201200536021020012003370308200120253e0001200120043a0000200141076a20254230883c0000200141056a20254220883d00002001412c6a200241b8036a41186a290300370200200141246a200241b8036a41106a2903003702002001411c6a200241b8036a41086a290300370200200120022903b803370214200141d4006a200241c0046a41206a290300370200200141cc006a200241c0046a41186a290300370200200141c4006a200241c0046a41106a2903003702002001413c6a200241c0046a41086a290300370200200120022903c004370234200141ec006a200241f00a6a41106a290300370200200141e4006a200241f00a6a41086a290300370200200120022903f00a37025c200141f4006a200241f00a6a41186a2903003702000c040b2000450d190c180b0240417f20014101200141016a41024b1b677641016a220420014d0d002004ad4290017e2203422088a70d192003a72204417f4c0d1920022802e006212620022802e40621272004102f220d450d18202620014188016c22086a21282002200d3602d808200242003703d008200220044190016e22013602dc084100210b41002105202621040240024002400340200441086a2d0000210c20042903002103200241c0046a200441096a41ff0010bf091a200c4102460d0120044188016a2104200241b8036a200241c0046a41ff0010bf091a200241c0046a200241b8036a41ff0010bf091a02402001417f6a22002005200b6b712000470d002001417f202820046b4188016d220041016a222920292000491b6a22002001490d044100417f2000417f6a677620004102491b222941016a22002029490d04200020014d0d00200121290240200020016b2200450d00200120006a22002001490d1f2000ad4290017e2223422088a74541037421002023a721290240024020010d00200241003602f00a0c010b200241083602f80a2002200d3602f00a200220014190016c3602f40a0b200241d8096a20292000200241f00a6a104e20022802e009210020022802d8094101460d04200220022802dc09220d3602d808200220004190016e22293602dc080b0240200b20054d0d00024020052001200b6b22004f0d00200d20014190016c6a200d20054190016c10bf091a2002200520016a22053602d4080c010b200b4190016c2101200d202920006b220b4190016c6a200d20016a20004190016c10bf091a2002200b3602d0080b202921010b20022802d808220d20054190016c6a2200200c3a00082000200337030020022001417f6a200541016a7122053602d408200041096a200241c0046a41ff0010bf091a2000410036028801200841f87e6a22080d000b0b02402027450d0020274188016c450d00202610310b0240024002400240024002400240024020022802d00822042005460d0020022001417f6a200441016a71220c3602d008200d20044190016c6a2204290300212320042d00082108200241f00a6a200441096a41ff0010bf091a024020084102460d0020044188016a2104034020042802002100200220083a00b803201c200241f00a6a41ff0010bf091a024020232006520d00200220182900003703e00a2002201841056a2900003700e50a20022802c803212a20022903c003212b20023500b903210320023300bd03210620023100bf032123200241d8096a201d41df0010bf091a2003200620234210868442208684212c410021042008212d0c070b202342027c21030240034002402003500d002003427f857ba72204200379a7460d020b2003427f423f2003797d423f83867c42017c21030c000b0b2004413f73220b20004b210842022000413f71ad862124024002400240024002402001417f6a22042005200c6b71450d00200d450d00202342002024427f7c22037d200320081b7c200d2004200c714190016c6a290300520d002005200c460d0120022004200c41016a7122293602d008200d200c4190016c6a220c41106a2802002126200c2d00082128200c41096a3500002103200c410d6a330000212e200c410f6a310000212f200241d8096a200c41146a41f40010bf091a20284102460d01200241e0086a200241d8096a41f40010bf091a200220263602c804200220283a00c00420022003202e202f421086844220868422033e00c104200220034230883c00c704200220034220883d00c504201b200241e0086a41f40010bf091a0c040b02402007200f460d0020074180016a212820072d00004101470d02200741096a2900002103200741116a290000212e2007290001212f201a41186a200741196a290000370000201a41106a202e370000201a41086a2003370000201a202f370000200241013a00c0040c030b202b42808080807083212b41012104200f21070c090b418a98ca00412b419491c200103c000b200741146a2900002103200741246a290000212e2007411c6a290000212f2007290308213020072802102129202141206a200741d8006a280200360200202141186a200741d0006a290200370200202141106a200741c8006a29020037020020212007290238370200202141086a200741c0006a290200370200200241e0086a41086a2226202f370300200241e0086a41186a22272007412c6a290000370300200241e0086a41106a2231202e370300201f41206a200241d8096a41206a290200370200201f41186a200241d8096a41186a290200370200201f41106a200241d8096a41106a290200370200201f41086a200241d8096a41086a290200370200201f20022902d809370200200220033703e008202020022903e008370200202041086a2026290300370200202041106a2031290300370200202041186a2027290300370200200220293602d004200220303703c804200741dc006a2900002103200741e4006a290000212e200741ec006a290000212f201e41186a200741f4006a290000370000201e41106a202f370000201e41086a202e370000201e2003370000200241003a00c0040b200c2129202821070b02400240200b20004d0d00200241d8096a200241c0046a10ee044120102f220c450d26200241203602e40a2002200c3602e00a200c20022903d809370000200c41086a200241d8096a41086a290300370000200c41106a200241d8096a41106a290300370000200c41186a200241d8096a41186a290300370000200241203602e80a200241d8096a200241b8036a10ee04200241e00a6a200241d8096a4120107e200241d8096a20022802e00a220c20022802e80a10d703200220192900003703d00a2002201941056a2900003700d50a20023301dc0920023100de0942108684422086210320023502d809212f20022800e709210b20022900df09212e024020022802e40a450d00200c10310b202f20038421030c010b200241d8096a200241b8036a10ee044120102f220c450d25200241203602e40a2002200c3602e00a200c20022903d809370000200c41086a200241d8096a41086a290300370000200c41106a200241d8096a41106a290300370000200c41186a200241d8096a41186a290300370000200241203602e80a200241d8096a200241c0046a10ee04200241e00a6a200241d8096a4120107e200241d8096a20022802e00a220c20022802e80a10d703200220192900003703d00a2002201941056a2900003700d50a20023301dc0920023100de0942108684422086210320023502d809212f20022800e709210b20022900df09212e024020022802e40a450d00200c10310b202f20038421030b0240024020234201202420081b7c222320065a0d00200220022903d00a3703e00a200220022900d50a3700e50a200241d8096a200241e0086a41df0010bf091a200041016a2100024020012004200520296b716b4101470d00200241d0086a10880620022802dc08417f6a210420022802d808210d20022802d40821050b20022004200541016a713602d408200d20054190016c6a220141186a200b360200200141106a202e3703002001410f6a20034230883c00002001410d6a20034220883d0000200141096a20033e0000200141013a0008200120233703002001411c6a20022903e00a370200200141216a20022900e50a370000200141296a200241d8096a41df0010bf091a200120003602880120022802dc08210120022802d008220420022802d4082205470d012004210c0c030b200220022900d50a3700e50a200220022903d00a3703e00a200241d8096a200241e0086a41df0010bf091a410021042029210c200b212a202e212b2003212c0c060b20022001417f6a200441016a71220c3602d00820022802d808220d20044190016c6a2204290300212320042d00082108200241f00a6a200441096a41ff0010bf091a20044188016a210420084102470d000b0b2005200c490d010b200120054f0d012005200141c0cfc8001058000b2001200c490d040b02402001450d0020014190016c450d0020022802d80810310b410121040c020b4101212d0b024002402005200c490d00200120054f0d012005200141c0cfc8001058000b2001200c490d030b2001450d0020014190016c450d00200d10310b200220022900e50a3700c508200220022903e00a3703c008200241e1076a200241d8096a41df0010bf091a02402004450d00202c420886202dad42ff0183842106202ba72105201241ffffffff0171450d18201010310c180b200220022900c5083700f506200220022903c0083703f0062017200241e1076a41df0010bf091a02400240202d41ff01714101470d00200220022900f5063700bd03200220022903f0063703b80341012104202c21250c010b202141206a201641206a280200360200202141186a201641186a290200370200202141106a201641106a290200370200202141086a201641086a29020037020020212016290200370200200241b8036a41086a200241f0066a41086a290300370300200241b8036a41106a200241f0066a41106a290300370300200241b8036a41186a200241f0066a41186a290300370300200220022903f0063703b803200241c0046a41206a200241d8096a41206a290200370300200241c0046a41186a200241d8096a41186a290200370300200241c0046a41106a200241d8096a41106a290200370300200241c0046a41086a200241d8096a41086a290200370300200220022902d8093703c004200241f00a6a41186a201541186a290200370300200241f00a6a41106a201541106a290200370300200241f00a6a41086a201541086a290200370300200220152902003703f00a410021040b0240024020114220882203a722012011a7470d00200141016a22052001490d1f20014101742200200520052000491b22054104200541044b1b220541ffffff0f712005464103742100200541077421050240024020010d00200241003602d8090c010b200241083602e0092002200e3602d809200220034207863e02dc090b200241e0086a20052000200241d8096a104e20022802e808210520022802e0084101460d0120022802e408210e2011428080808070832005410776ad8421110b200e20014107746a2201202a3602102001202b370308200120253e0001200120043a0000200141076a20254230883c0000200141056a20254220883d00002001412c6a200241b8036a41186a290300370200200141246a200241b8036a41106a2903003702002001411c6a200241b8036a41086a290300370200200120022903b803370214200141d4006a200241c0046a41206a290300370200200141cc006a200241c0046a41186a290300370200200141c4006a200241c0046a41106a2903003702002001413c6a200241c0046a41086a290300370200200120022903c004370234200141ec006a200241f00a6a41106a290300370200200141e4006a200241f00a6a41086a290300370200200120022903f00a37025c200141f4006a200241f00a6a41186a29030037020020114280808080107c21110c0a0b2005450d1d0c1c0b41facdc800412341d0cfc800103c000b41facdc800412341d0cfc800103c000b2000450d1a0c190b41b087ca00411141a88cc4001068000b41b087ca00411141988cc400103c000b2001417f6a200541e0cfc8001058000b2007200f460d050240024020072d00004101470d00200741056a3300002106200741076a310000212320072900082103200735000121252002200741196a22012900003700f5062002200741146a22052900003703f00620072800102104200220052900003703b803200220012900003700bd0320252006202342108684422086842125410121050c010b200741146a29000021062007411c6a29000021232007280210210420072903082103202141186a2201200741d0006a290200370200200741246a2900002124202141206a2205200741d8006a280200360200202141106a2200200741c8006a290200370200200241e0086a41086a220c2023370300200241e0086a41186a220d2007412c6a290000370300200241e0086a41106a2208202437030020212007290238370200202141086a220b200741c0006a290200370200200220063703e008200241f0066a41186a2229200d290300370300200241f0066a41106a220d2008290300370300200241f0066a41086a2208200c290300370300200220022903e0083703f006201441206a200241d8096a41206a220c290200370200201441186a200241d8096a41186a2228290200370200201441106a200241d8096a41106a2226290200370200201441086a200241d8096a41086a2227290200370200201420022902d809370200200741dc006a2900002106200741e4006a2900002123200741ec006a2900002124201541186a2231200741f4006a290000370000201541106a22322024370000201541086a22332023370000201520063700002005201641206a2802003602002001201641186a2902003702002000201641106a290200370200200b201641086a29020037020020212016290200370200200241b8036a41086a2008290300370300200241b8036a41106a200d290300370300200241b8036a41186a2029290300370300200220022903f0063703b803200241c0046a41206a200c290200370300200241c0046a41186a2028290200370300200241c0046a41106a2026290200370300200241c0046a41086a2027290200370300200220022902d8093703c004200241f00a6a41186a2031290200370300200241f00a6a41106a2032290200370300200241f00a6a41086a2033290200370300200220152902003703f00a410021050b024020114220882206a722012011a7470d00200141016a22002001490d172001410174220c20002000200c491b22004104200041044b1b220041ffffff0f71200046410374210c200041077421000240024020010d00200241003602d8090c010b200241083602e0092002200e3602d809200220064207863e02dc090b200241e0086a2000200c200241d8096a104e20022802e808210020022802e0084101460d0220022802e408210e2011428080808070832000410776ad8421110b20074180016a2107200e20014107746a2201200436021020012003370308200120253e0001200120053a0000200141076a20254230883c0000200141056a20254220883d00002001412c6a200241b8036a41186a290300370200200141246a200241b8036a41106a2903003702002001411c6a200241b8036a41086a290300370200200120022903b803370214200141d4006a200241c0046a41206a290300370200200141cc006a200241c0046a41186a290300370200200141c4006a200241c0046a41106a2903003702002001413c6a200241c0046a41086a290300370200200120022903c004370234200141ec006a200241f00a6a41106a290300370200200141e4006a200241f00a6a41086a290300370200200120022903f00a37025c200141f4006a200241f00a6a41186a2903003702000b20114280808080107c211120022802e4062201450d0120014188016c450d0120022802e00610310c010b2000450d140c130b20222013470d000c030b0b200241d8096a41086a200241c0046a410c6a290200370300200220022902c4043703d809200241013a00cc05024041002802809a4a450d00200241e0086a410c6a4111360200200241123602e4082002200241d8096a3602e8082002200241cc056a3602e00841002802fc994a210141002802f8994a210441002802849a4a2105200241b00b6a41b602360200200241a80b6a42f580808010370300200241a40b6a41c5dbc3003602002002419c0b6a4215370200200241980b6a41b0dbc300360200200241900b6a4202370300200241800b6a4202370300200241f00a6a41086a410c3602002002418c0b6a200241e0086a36020020024194dbc3003602fc0a200241a4dbc3003602f40a200241013602f00a200441f8fac900200541024622051b200241f00a6a20014180a6c00020051b28021011030020022d00cc0521050b024020022802d8094102470d00200241e0096a280200450d0020022802dc0910310b200a450d0e200910310c0e0b024020022802e4062201450d0020014188016c450d0020022802e00610310b200f21070b0240201241ffffffff0171450d00201010310b20022802c8060d0802402007200f460d00410121040240024020072d00004101470d00200241003600c304200241003602c0042002200741046a2800003600c304200220072800013602c004200729000821032002200741196a2900003700bd032002200741146a2900003703b803200220022802c0043602f006200220022800c3043600f306200728001021050c010b200741146a29000021062007411c6a29000021232007280210210520072903082103200241d8096a411c6a200741d0006a290200370200200741246a2900002125200241d8096a41246a200741d8006a280200360200200241d8096a41146a200741c8006a290200370200200241e0086a41086a22012023370300200241e0086a41186a22042007412c6a290000370300200241e0086a41106a22002025370300200241e4096a200741c0006a290200370200200220063703e008200220072902383702dc09200241b8036a41186a2004290300370300200241b8036a41106a2000290300370300200241b8036a41086a2001290300370300200220022903e0083703b803200241c0046a41206a200241d8096a41206a290200370300200241c0046a41186a200241d8096a41186a290200370300200241c0046a41106a200241d8096a41106a290200370300200241c0046a41086a200241d8096a41086a290200370300200220022902d8093703c004200241f00a6a41186a200741f4006a290000370300200241f00a6a41106a200741ec006a290000370300200241f00a6a41086a200741e4006a2900003703002002200741dc006a2900003703f00a410021040b0240024020114220882206a722012011a7460d00201121060c010b200141016a22002001490d112001410174220c20002000200c491b22004104200041044b1b220041ffffff0f71200046410374210c200041077421000240024020010d00200241003602d8090c010b200241d8096a41086a41083602002002200e3602d809200220064207863e02dc090b200241e0086a2000200c200241d8096a104e200241e8086a280200210120022802e0084101460d0320022802e408210e2011428080808070832001410776ad8421062011422088a721010b200e20014107746a220120043a00002001200337030820022802f006210420022800f306210020012005360210200141046a2000360000200120043600012001412c6a200241b8036a41186a290300370200200141246a200241b8036a41106a2903003702002001411c6a200241b8036a41086a290300370200200120022903b803370214200141d4006a200241e0046a290300370200200141cc006a200241c0046a41186a290300370200200141c4006a200241c0046a41106a2903003702002001413c6a200241c0046a41086a290300370200200120022903c004370234200141f4006a200241f00a6a41186a290300370200200141ec006a200241f00a6a41106a290300370200200141e4006a200241f00a6a41086a290300370200200120022903f00a37025c20064280808080107c211120074180016a200f470d090b20022802c4062201450d0020014188016c450d0020022802c00610310b2011422088a722004102490d0220004107742205200e6a41807f6a22042d00002101200241c0046a200441016a41ff0010bf091a0240024020014102460d00200241c0046a410172210d200241b8036a41017221082000417e6a2104201142ffffffff0f832106200541807e6a21052000410174417c6a2100200241eb096a220741056a210b0340200220013a00b8032008200241c0046a41ff0010bf091a200e20056a220c2d00002101200241f00a6a200c41016a41ff0010bf091a20014102460d02200220013a00c004200d200241f00a6a41ff0010bf091a200241f00a6a200241b8036a10ee044120102f2201450d10200241203602f406200220013602f006200120022903f00a370000200141086a200241f00a6a41086a290300370000200141106a200241f00a6a41106a290300370000200141186a200241f00a6a41186a290300370000200241203602f806200241f00a6a200241c0046a10ee04200241f0066a200241f00a6a4120107e200241d8096a20022802f006220120022802f80610d703200220072900003703d00a2002200b2900003700d50a20023100de09210320023301dc09211120023502d809212320022800e709210c20022900df092125024020022802f406450d00200110310b0240024020042006a7460d00200642ffffffff0f8321060c010b200441016a22012004490d1220002001200020014b1b22014104200141044b1b220141ffffff0f712001464103742129200141077421010240024020040d00200241003602f00a0c010b200241083602f80a200220053602f40a2002200e3602f00a0b200241d8096a20012029200241f00a6a104e20022802e009210120022802d8094101460d0520022802dc09210e2001410776ad21060b200e20056a220141013a0000200141106a200c360000200141086a2025370000200141076a202320112003421086844220868422034230883c0000200141056a20034220883d0000200141016a220c20033e0000200141146a20022903d00a370000200141196a20022900d50a370000200141216a200241e0086a41df0010bf091a0240200441016a41014b0d0020064280808080108421110c070b20012d00002101200241c0046a200c41ff0010bf091a200541807f6a21052004417f6a21042000417e6a210020014102470d000b0b41e98fc200410341a491c2001068000b41e98fc200410341b491c2001068000b2001450d0d0c0c0b2001450d0c0c0b0b20000d00200241033602c004200241c0046a4104722101200241c0046a21040c010b200e41086a2800002105200e41056a3300002103200e41076a3100002106200e2d00002101200e3500012123200241e0086a200e410c6a41f40010bf091a200241033602c004201142ffffffff0f83211120014102470d01200241c0046a4104722101200241c0046a21040b2004350005200441096a3300002004410b6a3100004210868442208684210320012d00002101200428020021044101210020022802cc0421050c010b20232003200642108684422086842103200241cc056a200241e0086a41f40010bf091a410021000b0240201142ffffff0f83500d00200e10310b20000d02200241c8046a2005360200200220033e00c104200220034230883c00c704200220034220883d00c504200220013a00c004200241cc046a200241cc056a41f40010bf091a4100210441002105200141ff0171220120022d00b002470d03024020014101460d0041002105200241c0046a41386a280200200241b0026a41386a280200470d0441002105200241c0046a413c6a200241b0026a413c6a412010c2090d0441002105200241c0046a41dc006a200241b0026a41dc006a412010c2090d044100210520022903c80420022903b802520d0441002105200241c0046a41106a280200200241b0026a41106a280200470d04200241c0046a41146a200241b0026a41146a412010c2094521050c040b200241c0046a410172200241b0026a410172412010c2094521050c030b0b0240201142ffffff0f83500d00200e10310b024020022802c4062201450d0020014188016c450d0020022802c00610310b200642088821032006a72101410321040b200241b8036a410c6a2005360200200220033e00bd03200241c3036a20034230883c0000200241c1036a20034220883d0000200220013a00bc03200220043602b80341042105200241043a00b002024041002802809a4a4104490d00200241e0086a410c6a4111360200200241123602e4082002200241b8036a3602e8082002200241b0026a3602e00841002802fc994a210141002802f8994a210441002802849a4a210520024180056a41c102360200200241f8046a42f580808010370300200241f4046a41c5dbc300360200200241ec046a4215370200200241e8046a41b0dbc300360200200241e0046a4202370300200241d0046a4202370300200241c8046a410c360200200241dc046a200241e0086a36020020024194dbc3003602cc04200241a4dbc3003602c404200241043602c004200441f8fac900200541024622051b200241c0046a20014180a6c00020051b28021011030020022802b803210420022d00b00221050b024020044102470d00200241c0036a280200450d0020022802bc0310310b410121040b0240200a450d00200910310b20040d002005410171210141062105024020010d00200241173602bc03200241a085c4003602b80341042105200241043a00b00241002802809a4a4104490d00200241e0086a410c6a4118360200200241123602e4082002200241b8036a3602e8082002200241b0026a3602e00841002802fc994a210141002802f8994a210441002802849a4a210520024180056a41c102360200200241f8046a42f580808010370300200241f4046a41c5dbc300360200200241ec046a4215370200200241e8046a41b0dbc300360200200241e0046a4202370300200241d0046a4202370300200241c8046a410c360200200241dc046a200241e0086a36020020024194dbc3003602cc04200241a4dbc3003602c404200241043602c004200441f8fac900200541024622051b200241c0046a20014180a6c00020051b28021011030020022d00b00221050b024020022802282201450d00200141186c21042002280220410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010310b200141186a2101200441686a22040d000b0b20022802242201450d01200141186c450d01200228022010310c010b024020022802282201450d00200141186c21042002280220410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010310b200141186a2101200441686a22040d000b0b20022802242201450d00200141186c450d00200228022010310b200241f00b6a240020050f0b1039000b103b000b1000200028020020002802042001104c0bf20303047f017e047f23004180016b22022400024002402001410c6a2802002203200128020822046b4188016e2205ad4288017e2206422088a70d002006a72207417f4c0d0020012802102108200128020421092001280200210a4108210102402007450d002007102f2201450d020b20002001360200200041086a22014100360200200041046a20074188016e36020020004100200510ac0820012802002105024020042003460d00200028020020054188016c6a21010340200441086a2d0000210720042903002106200241016a200441096a41ff0010bf091a024020074102470d0020044188016a21040c020b20012006370300200141086a20073a0000200141096a200241016a41ff0010bf091a20014188016a2101200541016a210520044188016a22042003470d000b0b200041086a200536020002400340024020032004470d00200321010c020b200441086a210720044188016a2201210420072d00004102470d000b0b200320016b2104024003402004450d01200441f87e6a210420012d0008210720014188016a210120074102470d000b0b02402009450d000240200a200841086a22012802002204460d002008280200220720044188016c6a2007200a4188016c6a20094188016c10c0091a0b2001200920046a3602000b20024180016a24000f0b103b000b1039000bf00203037f017e037f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a28020020002802006b716b4101470d00200221030240024002402002450d00200220026a22032002490d04200141106a41086a4108360200200120024190016c3602142001200028020836021020012003ad4290017e2204a72004422088a745410374200141106a104e200141086a280200210320012802004101460d01200020012802043602082000410c6a20034190016e22033602000b20032002410174470d0420002802002205200041046a28020022064d0d022006200220056b22074f0d012000280208220320024190016c6a200320064190016c10bf091a200041046a2200200028020020026a3602000c020b2003450d021039000b20002802082202200320076b22034190016c6a200220054190016c6a20074190016c10bf091a200020033602000b200141206a24000f0b103b000b41dcdbc400412b4188dcc400103c000b3400200041b785c40036020420004100360200200041146a4103360200200041106a41b886c400360200200041086a42133702000bbe0301017f230041106b220224000240024020002d00004101460d00200241003a000f20012002410f6a4101107e024002400240024002400240024002400240024020002d00010e0a000102030405060708090b0b200241003a000f20012002410f6a4101107e0c0a0b200241013a000f20012002410f6a4101107e0c090b200241023a000f20012002410f6a4101107e0c080b200241033a000f20012002410f6a4101107e0c070b200241043a000f20012002410f6a4101107e0c060b200241053a000f20012002410f6a4101107e0c050b200241063a000f20012002410f6a4101107e0c040b200241073a000f20012002410f6a4101107e2002200041026a2d00003a000f20012002410f6a4101107e0c030b200241083a000f20012002410f6a4101107e0c020b200241093a000f20012002410f6a4101107e0c010b200241013a000f20012002410f6a4101107e02400240024020002d00010e03000102030b200241003a000f20012002410f6a4101107e0c020b200241013a000f20012002410f6a4101107e0c010b200241023a000f20012002410f6a4101107e2002200041026a2d00003a000f20012002410f6a4101107e0b200241106a24000b5801017f230041106b220224002000410036020820004201370200200242003703082000200241086a4108107e200242003703082000200241086a4108107e200242003703082000200241086a4108107e200241106a24000b4a01027f230041106b22022400200241003602082002420837030002404104102f22030d001039000b20004204370204200020033602002000410010cb012002108d06200241106a24000b870401037f024020002802082201450d0020002802002200200141e8076c6a2102200041d8076a2100034002400240024002400240024002400240200041a8786a22012d00000e140707070007010203070707070407070507070707060b200041b0786a280200450d06200041ac786a28020010310c060b200041ac786a2802000d05200041b4786a2802002203450d05200341286c450d05200041b0786a28020010310c050b200041ac786a2d00004102490d04200041b4786a28020041ffffff3f71450d04200041b0786a28020010310c040b024002400240200041ac786a2802000e020001020b200041f87a6a280200450d05200041f47a6a28020010310c050b200041f87a6a280200450d04200041f47a6a28020010310c040b200041f87a6a280200450d03200041f47a6a28020010310c030b200041b0786a2d0000410a470d02200041dc786a280200450d02200041d8786a28020010310c020b200041b4786a28020041ffffff3f71450d01200041b0786a28020010310c010b02400240200041b0786a2802000e020200010b200041c0786a280200410b470d01200041c8786a10ad01200041907c6a10a3010c010b200041b8786a280200410b470d00200041c0786a10ad01200041887c6a10a3010b0240200141dc076a28020041ffffff3f71450d00200028020010310b200041e8076a2100200141e8076a2002470d000b0b0b4201027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241003a000f20002002410f6a4101107e200241106a24000b8f0101027f230041306b220224002000410036020820004201370200200241186a4200370300200241106a4200370300200241086a42003703002002420037030002404120102f2203450d002002422037022420022003360220200241206a20024120107e2000200228022022032002280228107e02402002280224450d00200310310b200241306a24000f0b1039000bb60101017f230041106b22022400200041003602082000420137020020024100360200200020024104107e20024100360200200020024104107e20024100360200200020024104107e20024100360200200020024104107e2002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e200241106a24000b4f01027f230041106b2202240002404114102f22030d001039000b20004214370204200020033602004104410020001082062002420037030820024200370300200020024110107e200241106a24000b4d01027f230041106b2202240002404114102f22030d001039000b20004214370204200020033602002000410010cb012002420037030820024200370300200020024110107e200241106a24000b5d01027f230041206b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030002404120102f22030d001039000b2000422037020420002003360200200020024120107e200241206a24000b5401027f230041106b2202240002404108102f22030d001039000b2000420837020420002003360200200241003602082000200241086a4104107e2002410036020c20002002410c6a4104107e200241106a24000ba0e6010b057f017e057f027e087f017e027f027e237f037e0e7f230041c00f6b22012400200141b80e6a41186a22024200370300200141b80e6a41106a22034200370300200141b80e6a41086a22044200370300200142003703b80e200141b80d6a41b785c400411310a7022004200141b80d6a41086a2205290000370300200120012900b80d3703b80e200141b80d6a41ca85c400410e10a70220022005290000370300200320012900b80d370300200141306a200141b80e6a10ab032001290338210620012802302107200141c00c6a41186a22024200370300200141c00c6a41106a22084200370300200141c00c6a41086a22044200370300200142003703c00c200141d8056a41f3c6c000410610a7022004200141d8056a41086a2209290000370300200120012900d8053703c00c200141e0066a41ec90c900410610a7022002200141e0066a41086a2205290000370300200820012900e006370300200141286a200141c00c6a412010c002200128022c210a2001280228210b200242003703002008420037030020044200370300200142003703c00c200141d8056a41f3c6c000410610a70220042009290000370300200120012900d8053703c00c200141e0066a418c91c900410a10a70220022005290000370300200820012900e006370300200141b80e6a200141c00c6a412010da0220012d00b80e21092002200141d10e6a2900003703002008200141c90e6a2900003703002004200141c10e6a290000370300200120012900b90e3703c00c0240024020094101460d00200141e0066a41186a4200370300200141e0066a41106a420037030020054200370300200142003703e0060c010b200141e0066a41186a2002290300370300200141e0066a41106a200829030037030020052004290300370300200120012903c00c3703e0060b200141c0006a41086a200141e0066a41086a2202290300370300200141c0006a41106a200141e0066a41106a290300370300200141c0006a41186a200141e0066a41186a290300370300200120012903e006370340200141c00c6a41186a4200370300200141c00c6a41106a4200370300200141c00c6a41086a22044200370300200142003703c00c200141b80e6a41b0a8c600410510a7022004200141b80e6a41086a290000370300200120012900b80e3703c00c200141e0066a4190fdc600410a10a702200841086a2002290200370200200820012902e006370200200141b80e6a200141c00c6a412010e202024020012902bc0e420020012802b80e22051b220c422088a722044102744102752209ad420c7e220d422088a70d00200da72202417f4c0d0002400240024020020d004104210e0c010b2002102f220e450d010b02400240024002402002410c6e220f20094f0d00200f41017422102009201020094b1b22094104200941044b1bad420c7e220d422088a7454102742109200da72110024002402002410b4b0d00200141003602b80e0c010b200141c00e6a41043602002001200e3602b80e2001200f410c6c3602bc0e0b200141e0066a20102009200141b80e6a104e200141e8066a280200210220012802e0064101460d0120012802e406210e2002410c6e210f0b2005410420051b211120040d01410021120c020b20020d020c030b200441027421092004410274417c6a41027641016a2112200141c80b6a41046a2113200141c00c6a41086a2114200e210220112105034020052802002104200141d8056a41b0a8c600410510a702200141e0066a41e8fdc600410510a702200120043602c80b2001200141c80b6a410410c8023703c00c200120133602c40e200120143602bc0e2001200141c80b6a3602c00e2001200141c00c6a3602b80e200141b80d6a200141b80e6a10880120012802c00d221041206a2204417f4c0d030240024020040d00410121150c010b2004102f2215450d030b200141003602c00e200120043602bc0e200120153602b80e200141b80e6a200141d8056a4110107e200141b80e6a200141e0066a4110107e200141b80e6a20012802b80d22042010107e024020012802bc0d450d00200410310b200141e0066a20012802b80e221020012802c00e10950420012802e006210420012902e4062116024020012802bc0e450d00201010310b4101102f2210450d022016200d20041b210d200142013702bc0e200120103602b80e0240024020040d00200141003a00e006200141b80e6a200141e0066a4101107e0c010b200141013a00e006200141b80e6a200141e0066a4101107e2004200d422088a7200141b80e6a10ce01200da7450d00200410310b200541046a2105200220012903b80e370200200241086a200141b80e6a41086a2802003602002002410c6a21022009417c6a22090d000b0b0240200c42ffffffff0383500d00201110310b200120123602c00e2001200f3602bc0e2001200e3602b80e200141e0006a200141b80e6a109606200141c00c6a41186a4200370300200141c00c6a41106a4200370300200141c00c6a41086a22044200370300200142003703c00c200141d8056a41a0aac800410510a7022004200141d8056a41086a2202290000370300200120012900d8053703c00c200141e0066a41acafc800410e10a702200841086a200141e0066a41086a2215290000370000200820012900e006370000200141186a200141c00c6a10ab03200128021821132001290320210d200141c80b6a41186a22044200370300200141c80b6a41106a22174200370300200141c80b6a41086a22054200370300200142003703c80b200141d8056a41a0aac800410510a70220052002290000370300200120012900d8053703c80b200141d8056a41a5aac800411410a70220042002290000370300201720012900d805370300200141203602d40a2001200141c80b6a3602d00a200141d8056a200141c80b6a412010d202200d42017c21160240024020012802d80522140d004200210c0c010b20012802dc05210e02400240200228020022024108490d002002417c714108460d002014290000210d20142800082118200141003602b80e2014410c6a2109200241746a2105200141b80e6a4104722110410021020340200141003a00e00620052002460d01201020026a200920026a2d00003a00002001200241016a22043602b80e2004210220044120470d000b200141b80d6a41026a2202200141c50e6a2d00003a0000200141d8096a41026a2204200141cc0e6a2d00003a0000200120012f01bc0e3b01e006200120012d00be0e3a00e2062001200141c30e6a2f00003b01b80d2001200141ca0e6a2f01003b01d809200141c60e6a280100210520012800bf0e2109200141cd0e6a2800002110200141e0086a41026a220f200141d30e6a2d00003a00002001200141d10e6a2f00003b01e008200141d40e6a290200210c200120012d00e2063a00c20c200120012f01e0063b01c00c200141e8076a41026a221120022d00003a0000200120012f01b80d3b01e807200141a8056a41026a220220042d00003a0000200120012f01d8093b01a805200141f8046a41026a2204200f2d00003a0000200120012f01e0083b01f804200141c8046a41026a220f20112d00003a0000200120012f01e8073b01c80420014198046a41026a221120022d00003a0000200120012f01a8053b019804200141e8036a41026a220220042d00003a0000200120012f01f8043b01e803200120093600c30c200141c90c6a200f2d00003a0000200120012f01c8043b00c70c200120053601ca0c200141c00c6a41106a220420112d00003a0000200120012f0198043b01ce0c200120103600d10c200141d70c6a20022d00003a0000200120012f01e8033b00d50c2001200c3703d80c200141f8066a200c370300200141e0066a41106a2004290300370300200141e0066a41086a200141c00c6a41086a290300370300200120012903c00c3703e0064201210c0c010b200141003602e806200142013703e0062001410c3602bc0d2001200141d00a6a3602b80d2001200141e0066a3602c00c200141cc0e6a4101360200200142013702bc0e2001419086c4003602b80e2001200141b80d6a3602c80e200141c00c6a41d8ddc900200141b80e6a10401a20012802e00620012802e80610d904024020012802e406450d0020012802e00610310b4200210c0b200e450d00201410310b2016420120131b2119200141b80e6a41186a200141e0066a41186a290300370300200141b80e6a41106a200141e0066a41106a290300370300200141b80e6a41086a2015290300370300200120012903e0063703b80e02400240200c4200520d004200210d20014198016a420037030020014190016a420037030020014188016a42003703002001420037038001410021180c010b20014180016a41186a200141b80e6a41186a29030037030020014180016a41106a200141b80e6a41106a29030037030020014180016a41086a200141b80e6a41086a290300370300200120012903b80e370380010b024002402019200d520d00200141d8056a41186a20014180016a41186a290300370300200141d8056a41106a20014180016a41106a290300370300200141d8056a41086a20014180016a41086a29030037030020012001290380013703d8050c010b200141d80c6a4200370300200141d00c6a4200370300200141c00c6a41086a22024200370300200142003703c00c200141d8056a41a0aac800410510a7022002200141d8056a41086a290000370300200120012900d8053703c00c200141e0066a41f4afc800410f10a702200841086a200141e0066a41086a290000370000200820012900e006370000200141b80e6a200141c00c6a10970620012902bc0e420020012802b80e22041b221a422088a7221841216c220941216d2205ad420c7e220d422088a70d02200da72202417f4c0d020240024020020d004104211b0c010b2002102f221b450d020b02400240024002402002410c6e221c20054f0d00201c41017422102005201020054b1b22054104200541044b1bad420c7e220d422088a7454102742105200da72110024002402002410b4b0d00200141003602b80e0c010b200141c00e6a41043602002001201b3602b80e2001201c410c6c3602bc0e0b200141e0066a20102005200141b80e6a104e200141e8066a280200210220012802e0064101460d0120012802e406211b2002410c6e211c0b2004410120041b211d20180d01410021180c020b2002450d040c030b201d20096a211e200141e0066a41036a211f200141e80e6a2120200141e50e6a2121200141ce016a41026a2122201b2123201d2113034002400240024020132d0000222441fe01714102470d0020132d0020210e20132d001f210f20132d001e211120132d001d210220132d001c211220132d001b212520132d001a210420132d0019212620132d0018212720132d0017210520132d0016212820132d0015212920132d0014212a20132d0013212b20132d0012212c20132d0011212d20132d0010210920132d000f212e20132d000e212f20132d000d211020132d000c213020132d000b213120132d000a211520132d0009213220132d0008213320132d0007213420132d0006213520132d0005213620132d0004213720132d0003211420132d0002213820132d0001213920014200370294022001420037029c02200141013a00a402200120352036410874722037411074722014410371411874722235360298022001202b202c41087472202d41107472200941037141187472222b360288022001200e200f41087472201141107472200241037141187472220f3602f80120012032410274201541c00171410676722033410a7472203441127472220e3602940220012030410474201041f00171410476722031410c74722015413f71411474722215360290022001202e410674200941fc017141027672202f410e74722010410f7141167472220936028c0220012028410274200541c00171410676722029410a7472202a4112747222103602840220012026410474200441f00171410476722027410c74722005413f714114747222053602800220012012410674200241fc0171410276722025410e74722004410f714116747222043602fc0120012038410674201441fc0171410276722039410e7472220236029c020240200241ffffff01470d002010200571202b71200971201571200e7120357141ffffff1f470d00200f41d1076a411a7641c0007220046a41ffffff1f4b0d010b200141013a00a402200141013602a002202041286a222a4100360200202041206a22324200370200202041186a22334200370200202041106a22344200370200202041086a2235420037020020204200370200200141b80e6a41086a223a200141f8016a41086a290300370300200141b80e6a41106a223b200141f8016a41106a290300370300200141b80e6a41186a223c200141f8016a41186a290300370300200141b80e6a41206a223d200141f8016a41206a290300370300200141013a00940f200120012903f8013703b80e200141013a00e40e200141013602e00e200141a8026a41286a4100360200200141a8026a41206a4200370300200141a8026a41186a4200370300200141a8026a41106a4200370300200141a8026a41086a4200370300200142003703a802200141013a00d402200141a8026a200141f8016a109806200141d8026a41286a22024100360200200141d8026a41206a22044200370300200141d8026a41186a22054200370300200141d8026a41106a22094200370300200141d8026a41086a22104200370300200142003703d802200141013a008403200141d8026a200141f8016a200141a8026a109906200141003a00980f200120012802d80241076a222b36028803200120012802dc02222c36028c0320012010280200222d36029003200120012802e402222e3602940320012009280200222f36029803200120012802ec02223036029c032001200528020022313602a003200120012802f40222363602a4032001200428020022373602a803200141003a00b403200120012802fc0222383602ac032001200228020041016a3602b003200141e8036a41286a22154100360200200141e8036a41206a22144200370300200141e8036a41186a220e4200370300200141e8036a41106a220f4200370300200141e8036a41086a22114200370300200142003703e803200141013a009404200141e8036a20014188036a109806200141e0066a41286a22104100360200200141e0066a41206a22024200370300200141e0066a41186a22044200370300200141e0066a41106a22054200370300200141e0066a41086a22094200370300200142003703e006200141013a008c07200141e0066a200141e8036a20014188036a1099062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703e80320014198046a41286a2211410036020020014198046a41206a2215420037030020014198046a41186a2214420037030020014198046a41106a220e420037030020014198046a41086a220f42003703002001420037039804200141013a00c40420014198046a200141e8036a1098062010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a20014198046a20014188036a1099062011201029030037030020152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e370300200120012903e006223f37039804200141c8046a41206a2215200d370300200141c8046a41186a22142016370300200141c8046a41106a220e200c370300200141c8046a41086a220f203e3703002001203f3703c804200120112802003602f004200120012d00c4044100473a00f4042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703f004200120012903e0063703c8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703f004200120012903e0063703c8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703f004200120012903e0063703c8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c8046a20014198046a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e370300200120102903003703f004200120012903e006223f3703c804200141f8046a41206a2215200d370300200141f8046a41186a22142016370300200141f8046a41106a220e200c370300200141f8046a41086a220f203e3703002001203f3703f804200120012802f0043602a005200120012d00f4044100473a00a4052010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141f8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703a005200120012903e0063703f8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141f8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703a005200120012903e0063703f8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141f8046a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703a005200120012903e0063703f8042010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141f8046a20014198046a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e370300200120102903003703a005200120012903e006223f3703f804200141a8056a41206a2215200d370300200141a8056a41186a22142016370300200141a8056a41106a220e200c370300200141a8056a41086a220f203e3703002001203f3703a805200120012802a0053602d005200120012d00a4054100473a00d4052010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141a8056a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703d005200120012903e0063703a8052010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141a8056a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703d005200120012903e0063703a8052010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141a8056a200141e8036a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e370300200120102903003703d005200120012903e006223f3703a805200141e8076a41206a2215200d370300200141e8076a41186a22142016370300200141e8076a41106a220e200c370300200141e8076a41086a220f203e3703002001203f3703e807200120012802d00536029008200120012d00d4054100473a0094082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037039008200120012903e0063703e8072010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e8076a200141a8056a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e3703002001201029030037039008200120012903e006223f3703e807200141e0086a41206a2215200d370300200141e0086a41186a22142016370300200141e0086a41106a220e200c370300200141e0086a41086a220f203e3703002001203f3703e008200120012802900836028809200120012d0094084100473a008c092010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a1098062015200229030037030020142004290300370300200e2005290300370300200f20092903003703002001201029030037038809200120012903e0063703e0082010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141e0086a200141e8076a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e3703002001201029030037038809200120012903e006223f3703e008200141d8096a41206a2214200d370300200141d8096a41186a220e2016370300200141d8096a41106a220f200c370300200141d8096a41086a2211203e3703002001203f3703d80920012001280288093602800a200120012d008c094100473a00840a412c211503402010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d8096a109806200141d8096a41286a2212201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703d8092015417f6a22150d000b2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d8096a200141e0086a1099062012201029030037030020142002290300220d370300200e20042903002216370300200f2005290300220c37030020112009290300223e370300200120012903e006223f3703d809200141d00a6a41206a2214200d370300200141d00a6a41186a220e2016370300200141d00a6a41106a220f200c370300200141d00a6a41086a2211203e3703002001203f3703d00a200120122802003602f80a200120012d00840a4100473a00fc0a41d800211503402010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d00a6a109806200141d00a6a41286a2212201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703d00a2015417f6a22150d000b2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d00a6a200141d8096a1099062012201029030037030020142002290300220d370300200e20042903002216370300200f2005290300220c37030020112009290300223e370300200120012903e006223f3703d00a200141c80b6a41206a2214200d370300200141c80b6a41186a220e2016370300200141c80b6a41106a220f200c370300200141c80b6a41086a2211203e3703002001203f3703c80b200120122802003602f00b200120012d00fc0a4100473a00f40b412c211503402010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c80b6a109806200141c80b6a41286a2212201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703c80b2015417f6a22150d000b2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c80b6a200141e0086a1099062012201029030037030020142002290300220d370300200e20042903002216370300200f2005290300220c37030020112009290300223e370300200120012903e006223f3703c80b200141c00c6a41206a2215200d370300200141c00c6a41186a22142016370300200141c00c6a41106a220e200c370300200141c00c6a41086a220f203e3703002001203f3703c00c200120122802003602e80c200120012d00f40b4100473a00ec0c2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c00c6a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703e80c200120012903e0063703c00c2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c00c6a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703e80c200120012903e0063703c00c2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c00c6a1098062015200229030037030020142004290300370300200e2005290300370300200f2009290300370300200120102903003703e80c200120012903e0063703c00c2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141c00c6a20014198046a10990620152002290300220d370300201420042903002216370300200e2005290300220c370300200f2009290300223e37030020012010290300223f3703e80c200120012903e00622403703c00c200141b80d6a41286a2215203f370300200141b80d6a41206a2214200d370300200141b80d6a41186a220e2016370300200141b80d6a41106a220f200c370300200141b80d6a41086a2211203e370300200120403703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a200141e8076a1099062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a200141e8036a1099062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d2010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141b80d6a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200120012903e0063703b80d200141d8056a41286a22254100360200200141d8056a41206a22264200370300200141d8056a41186a22274200370300200141d8056a41106a22284200370300200141d8056a41086a22294200370300200142003703d805200141013a008406200141d8056a200141b80d6a1098062010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d8056a1098062015201029030037030020142002290300370300200e2004290300370300200f200529030037030020112009290300370300200141b8036a41086a22122029290300370300200141b8036a41106a22392028290300370300200141b8036a41186a22412027290300370300200141b8036a41206a22422026290300370300200141b8036a41286a22432025290300370300200120012903e0063703b80d200120012903d8053703b80320142802002144200e2802002145200f2802002146201128020021472015280200214820012802d40d214920012802cc0d214a20012802c40d214b20012802b80d214c20012802dc0d214d20012802bc0d214e20102043290300220d37030020022042290300221637030020042041290300220c37030020052039290300223e37030020092012290300223f370300200120012903b80322403703e006202a200d370200203220163702002033200c3702002034203e3702002035203f3702002020204037020002400240204841016a221241fefeff3f6c204e6b202c6a2038201241feffff036c204d6b6a2238411676222a4106746a201241def0ff3f6c204c6b202b6a202a41d1076c6a222a411a766a222b202a72201241feffff3f6c221220476b202d6a202b411a766a222c722012204b6b202e6a202c411a766a222d72201220466b202f6a202d411a766a222e722012204a6b20306a202e411a766a222f72201220456b20316a202f411a766a223072201220496b20366a2030411a766a223172201220446b20376a2031411a766a22127241ffffff1f712012411a76203841ffffff01716a223672450d00202b41c00073202a41d0077371202c71202d71202e71202f712030712031712012712036418080801e737141ffffff1f470d010b2020109a0620012802e80e22124101712024410346460d00200141003a00940f200141023602900f200141fcffff07200128028c0f6b36028c0f200141fcffffff0020012802880f6b3602880f200141fcffffff0020012802840f6b3602840f200141fcffffff0020012802800f6b3602800f200141fcffffff0020012802fc0e6b3602fc0e200141fcffffff0020012802f80e6b3602f80e200141fcffffff0020012802f40e6b3602f40e200141fcffffff0020012802f00e6b3602f00e200141fcfdffff0020012802ec0e6b3602ec0e200141bce1ffff0020126b3602e80e0b20012d00980f0d002015410036020020144200370300200e4200370300200f420037030020114200370300200142003703b80d200141013a00e40d200141b80d6a20201098062025410036020020264200370300202742003703002028420037030020294200370300200142003703d805200141013a008406200141d8056a200141b80e6a1098062010410036020020024200370300200442003703002005420037030020094200370300200142003703e006200141013a008c07200141e0066a200141d8056a200141b80e6a1099062025201029030037030020262002290300220d37030020272004290300221637030020282005290300220c37030020292009290300223e370300200120012903e006223f3703d805200141003a00840620012802f405211520012802ec05211420012802e405210e20012802dc05210f20012802fc052110202541013602002029200f201041167622114106746a203fa7201141d1076c6a41076a220f411a766a2211411a76203ea76a221241ffffff1f7122253602002028200e2012411a766a220e411a76200ca76a221241ffffff1f712229360200202720142012411a766a2214411a762016a76a221241ffffff1f712228360200202620152012411a766a2215411a76200da76a221241ffffff1f7122273602002001201141ffffff1f7122113602dc052001200e41ffffff1f71220e3602e4052001201441ffffff1f7122143602ec052001201541ffffff1f7122263602f40520012012411a76201041ffffff01716a22103602fc052001200f41ffffff1f7122153602d805201520012802b80d6b201020012802dc0d6b41fcffff076a220f411676221241d1076c6a41bce1ffff006a222441ffffff1f71221041d00773211502402010450d00201541ffffff1f470d010b2024411a7620124106747220012802bc0d6b20116a41fcfdffff006a221141ffffff1f71201072202520012802c00d6b2011411a766a41fcffffff006a221041ffffff1f7172200e20012802c40d6b2010411a766a41fcffffff006a220e41ffffff1f7172202920012802c80d6b200e411a766a41fcffffff006a221241ffffff1f7172201420012802cc0d6b2012411a766a41fcffffff006a221441ffffff1f7172202820012802d00d6b2014411a766a41fcffffff006a222541ffffff1f7172202620012802d40d6b2025411a766a41fcffffff006a222641ffffff1f7172202720012802d80d6b2026411a766a41fcffffff006a222741ffffff1f71722027411a76200f41ffffff01716a220f72450d01201141c00073201571201071200e71201271201471202571202671202771200f418080801e737141ffffff1f460d010b024041002802809a4a0d00410121024200210d0c020b41002802fc994a210441002802f8994a210541002802849a4a2109200141383602f80e200142b9808080103703f00e2001419ca7c8003602ec0e2001421c3702e40e20014180a7c8003602e00e4200210d200142003703d80e200142013703c80e200141bcb4c0003602c40e2001410e3602c00e200141c4b4c0003602bc0e41012102200141013602b80e200141f8fac9003602d40e200541f8fac900200941024622091b200141b80e6a20044180a6c00020091b2802101103000c010b202220012903b80e370100202241206a2210203d290300370100202241186a2215203c290300370100202241106a2214203b290300370100202241086a220e203a290300370100200141a0016a41086a220f202141086a290000370300200141a0016a41106a2211202141106a290000370300200141a0016a41186a2212202141186a290000370300200141a0016a41206a2225202141206a290000370300200141a0016a41276a2226202141276a280000360000200120212900003703a00120012802e00e212720012d00e40e212820012802900f212920012d00940f2124200141e0066a41276a20262800003600002002202529030037030020042012290300370300200520112903003703002009200f290300370300200120012903a0013703e006203d2010290100370300203c2015290100370300203b2014290100370300203a200e2901003703002020201f2900003700002035201f41086a2900003700002034201f41106a2900003700002033201f41186a2900003700002032201f41206a290000370000200120284100473a00e40e200120273602e00e200120222901003703b80e200141003a00980f200120244100473a00940f200120293602900f200141b80e6a109a062020109a06203a2802002104203b2802002105203c2802002109203d280200211020012802e80e211520012802ec0e211420012802f00e210e20012802f40e210f20012802f80e211120012802fc0e211220012802800f212520012802840f212620012802880f2127200128028c0f212c20012802b80e212820012802bc0e212920012802c40e212420012802cc0e212a20012802d40e212b20012802dc0e212d41c100102f2202450d04200220153a0040200220113a0033200220273a0026200220283a0020200220053a0013200220103a0006200241043a0000200220154108763a003f200220154110763a003e200220144106763a003c20022014410e763a003b2002200e4104763a00392002200e410c763a00382002200f4102763a00362002200f410a763a00352002200f4112763a0034200220114108763a0032200220114110763a0031200220124106763a002f20022012410e763a002e200220254104763a002c20022025410c763a002b200220264102763a002920022026410a763a0028200220264112763a0027200220274108763a0025200220274110763a00242002202c4106763a00222002202c410e763a0021200220284108763a001f200220284110763a001e200220294106763a001c20022029410e763a001b200220044104763a001920022004410c763a0018200220244102763a001620022024410a763a0015200220244112763a0014200220054108763a0012200220054110763a00112002202a4106763a000f2002202a410e763a000e200220094104763a000c20022009410c763a000b2002202b4102763a00092002202b410a763a00082002202b4112763a0007200220104108763a0005200220104110763a00042002202d4106763a00022002202d410e763a0001200220154118764103712014410274723a003d20022014411676410f71200e410474723a003a2002200e411476413f71200f410674723a0037200220114118764103712012410274723a003020022012411676410f712025410474723a002d20022025411476413f712026410674723a002a20022027411876410371202c410274723a0023200220284118764103712029410274723a001d20022029411676410f712004410474723a001a20022004411476413f712024410674723a001720022005411876410371202a410274723a00102002202a411676410f712009410474723a000d20022009411476413f71202b410674723a000a20022010411876410371202d410274723a000342c18080809008210d0b2023200d370204202320023602002023410c6a2123201341216a2213201e470d000b0b0240201aa72202450d00200241216c450d00201d10310b200120183602c00e2001201c3602bc0e2001201b3602b80e200141e0066a200141b80e6a109606200141b80e6a41146a200141e0066a41086a290000370200200141d40e6a200141e0066a41106a290000370200200141dc0e6a200141e0066a41186a290000370200200120183602c00e200120193703b80e200120012900e0063702c40e200141c80b6a41186a4200370300200141c80b6a41106a4200370300200141c80b6a41086a22024200370300200142003703c80b200141d8056a41a0aac800410510a7022002200141d8056a41086a2204290000370300200120012900d8053703c80b200141d8056a41a5aac800411410a702201741086a2004290000370000201720012900d805370000200141003602c00d200142013703b80d200120193703d805200141b80d6a200141d8056a4108107e200120183602d805200141b80d6a200141d8056a4104107e4120102f2202450d01200142203702dc05200120023602d805200141d8056a200141c40e6a22024120107e200141b80d6a20012802d805220420012802e005107e024020012802dc05450d00200410310b200141c80b6a412020012802b80d220420012802c00d109f02024020012802bc0d450d00200410310b200141d8056a41086a200241086a290200370300200141d8056a41106a200241106a290200370300200141d8056a41186a200241186a290200370300200120022902003703d80520012802e40e21020b200141b8036a41186a2204200141c0006a41186a290300370300200141b8036a41106a2205200141c0006a41106a290300370300200141b8036a41086a2209200141c0006a41086a29030037030020014188036a41086a2210200141e0006a41086a29000037030020014188036a41106a2215200141e0006a41106a29000037030020014188036a41186a2213200141e0006a41186a290000370300200141e8036a41086a2214200141d8056a41086a290300370300200141e8036a41106a220e200141d8056a41106a290300370300200141e8036a41186a220f200141d8056a41186a290300370300200120012903403703b8032001200129006037038803200120012903d8053703e80320014198046a41106a4100360200200142083703a00420012006420020071b220d3703b0042001200d420186200d7b22067d224037039804200141a8056a41086a22112014290300370300200141a8056a41106a2214200e290300370300200141a8056a41186a220e200f290300370300200120012903e8033703a805200141f8046a41086a220f2009290300370300200141f8046a41106a22092005290300370300200141f8046a41186a22052004290300370300200120012903b8033703f804200141c8046a41086a22122010290300370300200141c8046a41106a22102015290300370300200141c8046a41186a2215201329030037030020012001290388033703c804200141003602b80e200141e0066a4180044108200141b80e6a104e200141e0066a41086a2802002113024020012802e0064101470d002013450d020c010b20014198046a41086a212c20012802e406220441003a000020042019370308200441046a200141db026a280000360000200420012800d8023600012004201836021020044100200a4100200b1b2223417f6a2220202020234b1b360238200420023602342004411c6a2011290300370200200420012903a805370214200441246a20142903003702002004412c6a200e290300370200200441c4006a200f290300370200200420012903f80437023c200441d4006a2005290300370200200441cc006a2009290300370200200441f4006a2015290300370200200441ec006a2010290300370200200441e4006a2012290300370200200420012903c80437025c204042027c210d024003400240200d500d00200d427f857b2216a7200d79a7460d020b200d427f423f200d797d423f83867c42017c210d0c000b0b204042017c210c2013410776210941012105024002402016423f510d00200141e0066a41146a211e200141e0066a41086a2132200141b80e6a41146a212d200141d8056a41146a2131200141d8056a41086a2133200141b80e6a410b6a212e200141b80e6a41136a212f4101210541002110034002400240024002400240427e2010413f71ad221686200c7c220d200129039804223e7d223f200d560d002005203fa722024b0d010b200141b80e6a202c200d10ed04202e2d00002102202f2d0000211520012d00c80e212820012802c40e212720012802bc0e211420012802b80e210e20012d00c00e212320012f00c10e211320012f00c90e210f200141c00c6a202d41f40010bf091a200f201541107472211520132002411074722113024002400240200e4101470d002013ad42ffffff07834208862023ad42ff018384210d0c010b200141c80b6a200141c00c6a41f40010bf091a202341ff01714102470d01200141d00a6a200141b80d6a41f40010bf091a4202210d410121140b201541087420287221052027ad422086200d8421400c030b200141b80d6a200141c80b6a41f40010bf091a200141d00a6a200141b80d6a41f40010bf091a200141d8096a200141d00a6a41f40010bf091a200141e0066a200141d8096a41f40010bf091a410121020c010b200420024107746a2125410021020b200141e0086a200141e0066a41f40010bf091a200120153b00e905200141d8056a41136a20154110763a0000200120133b00e105200141d8056a410b6a20134110763a0000200120283a00e805200120273602e405200120233a00e005200120253602dc05200120023602d8052031200141e0086a41f40010bf091a024002400240024002404202201686200d7c427f7c220d203e7d2216200d560d0020052016a722144b0d010b200141b80e6a202c200d10ed04202e2d0000210e202f2d0000210f20012d00c80e212b20012802c40e212a20012802bc0e211420012802b80e212920012d00c00e212020012f00c10e211220012f00c90e2111200141c00c6a202d41f40010bf091a2011200f4110747221112012200e41107472211220294101460d02200141c80b6a200141c00c6a41f40010bf091a0240202041ff01714102470d00200141d00a6a200141b80d6a41f40010bf091a4202210d410121140c040b200141b80d6a200141c80b6a41f40010bf091a200141d00a6a200141b80d6a41f40010bf091a200141d8096a200141d00a6a41f40010bf091a200141e0086a200141d8096a41f40010bf091a410121140c010b200420144107746a2126410021140b200141e8076a200141e0086a41f40010bf091a200120113b00f106200141e0066a41136a20114110763a0000200120123b00e906200141e0066a410b6a20124110763a00002001202b3a00f0062001202a3602ec06200120203a00e806200120263602e406200120143602e006201e200141e8076a41f40010bf091a200141b80e6a2033202520021b10ee044120102f2202450d07200141203602bc0d200120023602b80d200220012903b80e370000200241086a200141b80e6a41086a290300370000200241106a200141b80e6a41106a290300370000200241186a200141b80e6a41186a290300370000200141203602c00d200141b80e6a2032202620141b10ee04200141b80d6a200141b80e6a4120107e200141c00c6a20012802b80d223020012802c00d10d703200141c80b6a41186a2202200141c00c6a41186a2214290300370300200141c80b6a41106a2229200141c00c6a41106a220e290300370300200141c80b6a41086a2224200141c00c6a41086a220f290300370300200120012903c00c3703c80b024020012802bc0d450d00203010310b200f2024290300370300200e202929030037030020142002290300370300200120012903c80b3703c00c200141b80e6a200141b80d6a41df0010bf091a024020052009470d00200941016a22022009490d09200941017422292002202920024b1b22024104200241044b1b220241ffffff0f712002464103742129200241077421020240024020090d00200141003602d00a0c010b200141083602d80a200120043602d00a200120094107743602d40a0b200141d8096a20022029200141d00a6a104e20012802e0092102024020012802d8094101470d002002450d0a0c090b20012802dc092104200241077621090b200420054107746a220241013a0000200220012903c00c370001200241096a200f290300370000200241116a200e290300370000200241196a2014290300370000200241216a200141b80e6a41df0010bf091a200c42027c210d03400240200d500d00200d427f857ba72202200d79a7460d050b200d427f423f200d797d423f83867c42017c210d0c000b0b2012ad42ffffff07834208862020ad42ff018384210d0b2011410874202b722105202aad422086200d8421400b41012102200941ffffff0f71450d03200410310c030b200c42017c210c200541016a21052002413f73201041016a22104b0d000b0b0240024020012802a804220220012802a404470d00200241016a22102002490d04200241017422152010201520104b1b22104104201041044b1bad42187e220d422088a7454103742110200da721150240024020020d00200141003602b80e0c010b200141b80e6a41086a4108360200200120012802a0043602b80e2001200241186c3602bc0e0b200141e0066a20152010200141b80e6a104e200141e8066a280200211020012802e0064101460d01200120012802e4063602a0042001201041186e3602a4040b20012802a004200241186c6a2210200436020820102040370300201041106a20053602002010410c6a20093602002001200c370398042001200241016a3602a804410021020c010b2010450d020c010b02402002450d00200141e0066a410c6a2005360200200120403702e406200120143602e006200141003a00d805024041002802809a4a450d00200141d8096a410c6a4111360200200141123602dc092001200141e0066a3602e0092001200141d8056a3602d80941002802fc994a210241002802f8994a210441002802849a4a2105200141f80e6a41b602360200200141f00e6a42f580808010370300200141ec0e6a41c5dbc300360200200141e40e6a4215370200200141e00e6a41b0dbc300360200200141d80e6a4202370300200141c80e6a4202370300200141c00e6a410c360200200141d40e6a200141d8096a36020020014194dbc3003602c40e200141a4dbc3003602bc0e200141013602b80e200441f8fac900200541024622051b200141b80e6a20024180a6c00020051b28021011030020012802e00621140b024020144102470d00200141e8066a280200450d0020012802e40610310b41b48bc400411541cc8bc4001068000b200120012903b00442017c220d3703b004200141d00a6a41186a200d370300200141d00a6a41106a220220014198046a41106a290300370300200141d00a6a41086a20014198046a41086a29030037030020012001290398043703d00a200141b80e6a200141d00a6a10eb0441012104024002400240024020012802b80e4101460d00200141e0066a41066a200141b80e6a41086a41800110bf091a200141d8056a200141e0066a41860110bf091a200141b80d6a200141d8056a41066a41800110bf091a20012802d80a222f2002280200220241186c6a2128200141d00a6a410c6a2802002130202f21112002450d02202f41246a2129200241186c41686a2124200141cc0e6a2112200141940f6a2123200141f00e6a2120200141b80e6a410c6a210f200141b80e6a4101722125200141c00c6a41106a212a202f21020340200241186a211120022802082227450d032002410c6a290200213e2002290300210d200141c00c6a41186a222b4200370300202a4200370300200141c00c6a41086a22264200370300200142003703c00c200141b80e6a41b785c400411310a7022026200141b80e6a41086a222c290000370300200120012900b80e3703c00c200141e0066a41ca85c400410e10a702200841086a222d200141e0066a41086a222e290200370200200820012902e006370200200141086a200141c00c6a10ab030240200d2001290310420020012802081b221642018620167b7d510d000240203e42ffffff0f83500d00202710310b200141a8056a41086a200141e0086a41086a280200360200200120012902e0083703a805024020282011460d0003400240202928020041ffffff0f71450d002029417c6a28020010310b202941186a2129202441686a22240d000b0b02402030450d00203041186c450d00202f10310b200141e0066a410c6a200141a8056a41086a280200360200200141013602e006200120012903a8053702e40641022104200141023a00d80541002802809a4a450d03200141d8096a410c6a4111360200200141123602dc092001200141e0066a3602e0092001200141d8056a3602d80941002802fc994a210241002802f8994a210441002802849a4a2105200141f80e6a41b602360200200141f00e6a42f580808010370300200141ec0e6a41c5dbc300360200200141e40e6a4215370200200141e00e6a41b0dbc300360200200141d80e6a4202370300200141c80e6a4202370300200141b80e6a41086a410c360200200141d40e6a200141d8096a36020020014194dbc3003602c40e200141a4dbc3003602bc0e200141013602b80e200441f8fac900200541024622051b200141b80e6a20024180a6c00020051b28021011030020012d00d805210420012802e0064102470d03200141e8066a280200450d0320012802e40610310c030b0240203e422088a72202450d00202720024107746a210e202721020340200241086a2d00002105200241046a2800002109200241016a2f00002110200241036a2d00002115200241096a2f000021132002410b6a2d0000211420022d00002104200141c00c6a2002410c6a41f40010bf091a20044102460d01200141c80b6a200141c00c6a41f40010bf091a2001201320144110747222133b00c10e200141b80e6a410b6a20134110763a0000200120053a00c00e200120093602bc0e200120043a00b80e2001201020154110747222053b00b90e200120054110763a00bb0e200f200141c80b6a41f40010bf091a200141e0066a200141b80e6a10ee04200141c00c6a200d10930520012802c80c210920012802c00c21054120102f2210450d07200142203702dc05200120103602d805200141d8056a200141e0066a4120107e2005200920012802d805221020012802e005109f02024020012802dc05450d00201010310b024020012802c40c450d00200510310b410f102f2205450d072001420f3702dc09200120053602d80941b286c4004103200141d8096a10cd012001200d3703e006200141d8096a200141e0066a4108107e200141003602c80c200142013703c00c0240024020044101470d00200141013a00e006200141c00c6a200141e0066a4101107e4120102f2205450d09200142203702e406200120053602e006200141e0066a20254120107e200141c00c6a20012802e006220520012802e806107e20012802e406450d01200510310c010b200141003602e005200142013703d8052020200141d8056a10d7044120102f2205450d08200142203702e406200120053602e006200141e0066a20234120107e200141d8056a20012802e006220520012802e806107e024020012802e406450d00200510310b200120012903c00e3703e006200141d8056a200141e0066a4108107e200120012802c80e3602e006200141d8056a200141e0066a4104107e4120102f2205450d08200142203702e406200120053602e006200141e0066a20124120107e200141d8056a20012802e006220520012802e806107e024020012802e406450d00200510310b20012802d805210520012802e0052109200141003a00e006200141c00c6a200141e0066a4101107e20052009200141c00c6a10cd0120012802dc05450d00200510310b20013502e00942208620012802d8092205ad8420013502c80c42208620012802c00c2209ad841000024020012802c40c450d00200910310b2004410173ad210c024020012802dc09450d00200510310b200d42017c210d2016200c7c211620024180016a2202200e470d000b0b0240203e42ffffff0f83500d00202710310b202b4200370300202a420037030020264200370300200142003703c00c200141b80e6a41b785c400411310a7022026202c290000370300200120012900b80e3703c00c200141e0066a41ca85c400410e10a702202d202e290200370200200820012902e006370200200120163703b80e200141c00c6a4120200141b80e6a4108109f02202441686a2124202941186a21292011210220112028470d000c040b0b200141c80b6a41086a200141b80e6a410c6a290200370300200120012902bc0e3703c80b200141013a00e008024041002802809a4a450d00200141d8096a410c6a4111360200200141123602dc092001200141c80b6a3602e0092001200141e0086a3602d80941002802fc994a210241002802f8994a210441002802849a4a2105200141800d6a41b602360200200141f80c6a42f580808010370300200141f40c6a41c5dbc300360200200141ec0c6a4215370200200141e80c6a41b0dbc300360200200141e00c6a4202370300200141d00c6a4202370300200141c80c6a410c360200200141dc0c6a200141d8096a36020020014194dbc3003602cc0c200141a4dbc3003602c40c200141013602c00c200441f8fac900200541024622051b200141c00c6a20024180a6c00020051b28021011030020012d00e00821040b024020012802c80b4102470d00200141d00b6a280200450d0020012802cc0b10310b0240200141e00a6a2802002202450d00200241186c210520012802d80a410c6a210203400240200228020041ffffff0f71450d002002417c6a28020010310b200241186a2102200541686a22050d000b0b200141dc0a6a2802002202450d00200241186c450d0020012802d80a10310b200120043a00b80e41dc8bc4004119200141b80e6a41f88bc40041888cc4001041000b20282011460d000340201141186a210202402011410c6a28020041ffffff0f71450d00201141086a28020010310b2002211120282002470d000b0b02402030450d00203041186c450d00202f10310b20012903e80a210d200141c00c6a200141b80d6a10ee04200141b80e6a41186a2205200141c00c6a41186a2903002216370300200141b80e6a41106a2209200141c00c6a41106a290300220c370300200141b80e6a41086a2202200141c00c6a41086a2204290300223e370300200120012903c00c223f3703b80e200141d8056a41186a22102016370300200141d8056a41106a2215200c370300200141d8056a41086a2213203e3703002001203f3703d805200141d10e6a2016370000200141c90e6a200c370000200141c10e6a203e3700002001203f3700b90e200141023a00b80e200141c00c6a200141b80e6a109b06200141c30d6a2004280200360000200120012903c00c3700bb0d200141c40e6a200141bf0d6a290000370000200141cc0e6a20012902e006370200200141d40e6a200141e0066a41086a2214290200370200200141c28a95b2043600b90e200141023a00b80e200120012900b80d3700bd0e200141b80e6a10d802200542003703002009420037030020024200370300200142003703b80e200141b80d6a41b785c400411310a7022002200141b80d6a41086a2204290000370300200120012900b80d3703b80e200141b80d6a41ca85c400410e10a702200341086a220e2004290000370000200320012900b80d3700002001200d3703e006200141b80e6a4120200141e0066a4108109f02200141e0066a41186a2010290300370300200141e0066a41106a201529030037030020142013290300370300200120012903d8053703e006200542003703002009420037030020024200370300200142003703b80e200141b80d6a41b785c400411310a70220022004290000370300200120012900b80d3703b80e200141b80d6a41c088c400410810a702200e2004290000370000200320012900b80d3700004120102f2202450d00200142203702bc0d200120023602b80d200141b80d6a200141e0066a4120107e200141b80e6a412020012802b80d220220012802c00d109f02024020012802bc0d450d00200210310b20001086042116200141c00f6a2400427f20162006200d7b220d2006200d561b42c0b2cd3b7e4290e59083017c220d7c22162016200d541b0f0b1039000b103b000bba0201077f230041c0006b22022400200241086a200110a109200241206a41186a2203200241086a41106a200241086a41086a2204200228020822054101461b2903001015220641186a290000370300200241206a41106a2207200641106a290000370300200241206a41086a2208200641086a2900003703002002200629000037032020061031200041186a2003290300370000200041106a2007290300370000200041086a20082903003700002000200229032037000002402005450d002004280200450d00200228020c10310b20012802002103024020012802082200450d002000410c6c21062003210003400240200041046a280200450d00200028020010310b2000410c6a2100200641746a22060d000b0b0240200141046a2802002200450d002000410c6c450d00200310310b200241c0006a24000ba30705047f017e027f037e067f230041d0016b220224002002412036021420022001360210200241186a2001412010d202024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10bb010240024020022802080d0002400240200228020c2205200228022c41216e2201200120054b1bad42217e2206422088a70d002006a72201417f4c0d000240024020010d00410121070c010b2001102f2207450d060b200141216ead2106024002402005450d00200241a8016a41017221080340200241a8016a200241286a10cf0120022d00a8014101460d0420024180016a41206a200841206a2d000022013a0000200241d8006a41086a200841086a2900002209370300200241d8006a41106a200841106a290000220a370300200241d8006a41186a200841186a290000220b370300200241d8006a41206a20013a0000200241306a41086a220c2009370300200241306a41106a220d200a370300200241306a41186a220e200b370300200241306a41206a220f20013a00002002200829000022093703582002200937033002402006422088a722012006a7470d00200141016a22102001490d0420014101742211201020102011491b22104104201041044b1bad42217e2206a721102006422088a74521110240024020010d00200241003602a8010c010b200241013602b001200220073602a8012002200141216c3602ac010b20024180016a20102011200241a8016a104e20022802880121102002280280014101460d032002280284012107201041216ead21060b2007200141216c6a22102002290330370000201041206a200f2d00003a0000201041186a200e290300370000201041106a200d290300370000201041086a200c290300370000200642ffffffff0f83200141016aad4220868421062005417f6a22050d000b0b2007450d0320002006370204200020073602000c040b20100d050b103b000b2006a72201450d00200141216c450d00200710310b200241003602880120024201370380012002410c36025c2002200241106a360258200220024180016a360230200241bc016a4101360200200242013702ac012002419086c4003602a8012002200241d8006a3602b801200241306a41d8ddc900200241a8016a10401a20022802800120022802880110d9040240200228028401450d0020022802800110310b200041003602000b2004450d00200310310b200241d0016a24000f0b1039000bea070e017f017e017f017e017f017e017f017e017f047e017f017e017f0c7e200041003a002c200041013602282000200128020c2202ad220320012802002204410174ad22057e20012802082206ad220720012802042208410174ad22097e7c2001280218220aad220b200b7e2002410174ad220c2001350224220d7e7c20012802102202410174ad220e2001280220220fad22107e7c20012802142211410174ad2212200128021c2201ad22137e7c200c20107e2006410174ad2214200d7e7c200e20137e7c2012200b7e7c201420107e2009200d7e7c200c20137e7c200e200b7e7c2011ad221520157e7c200920107e2005200d7e7c201420137e7c200c200b7e7c200e20157e7c2216421a887c2217421a887c2218421a887c221942ffffff1f83221a420a867c200e200d7e200a410174ad221b20137e7c201220107e7c2019421a887c221942ffffff1f83221c4290fa007e7c200720057e2008ad220e200e7e7c201842ffffff1f832218420a867c201a4290fa007e7c201742ffffff1f832217420a86200e20057e7c20174290fa007e2004ad220e200e7e7c2217421a887c20184290fa007e7c2218421a887c221a421a887c221da741ffffff1f7136020c2000200320097e200720077e7c2002ad220e20057e7c201c420a867c201b20107e201320137e7c2012200d7e7c2019421a887c220742ffffff1f8322124290fa007e7c201d421a887c2219a741ffffff1f713602102000200e20097e200320147e7c201520057e7c2012420a867c201b200d7e2001410174ad221220107e7c2007421a887c220742ffffff1f83221b4290fa007e7c2019421a887c2219a741ffffff1f713602142000200b20057e200320037e7c200e20147e7c201520097e7c201b420a867c2012200d7e201020107e7c2007421a887c220342ffffff1f8322074290fa007e7c2019421a887c2212a741ffffff1f713602182000200b20097e201320057e7c200e200c7e7c201520147e7c2007420a867c2003421a88200d200f410174ad7e7c220342ffffff1f8322074290fa007e7c2012421a887c2212a741ffffff1f7136021c2000201320097e201020057e7c200b20147e7c200e200e7e7c2015200c7e7c2007420a867c2003421a88200d200d7e7c220d42ffffff1f8322104290fa007e7c2012421a887c2205a741ffffff1f713602202000200d421a88220d4290fa007e201642ffffff1f837c2010420a867c2005421a887c2210a741ffffff017136022420002010421688200d420e867c220d42d1077e201742ffffff1f837c2210a741ffffff1f713602002000200d420686201842ffffff1f837c2010421a887c220d421a88201a42ffffff1f837c3e02082000200da741ffffff1f713602040be909011b7e200235020021032001350200210420013502242105200235020421062001350220210720023502082108200135021c2109200235020c210a2001350218210b2002350210210c2001350214210d2002350214210e2001350210210f20023502182110200135020c2111200235021c211220013502082113200235022021142001350204211520023502242116200041003a002c200041013602282000200820157e200a20047e7c200620137e7c200320117e7c200f20147e201120167e7c200d20127e7c200b20107e7c2009200e7e7c2007200c7e7c2005200a7e7c201120147e201320167e7c200f20127e7c200d20107e7c200b200e7e7c2009200c7e7c2007200a7e7c200520087e7c201320147e201520167e7c201120127e7c200f20107e7c200d200e7e7c200b200c7e7c2009200a7e7c200720087e7c200520067e7c201420157e201620047e7c201220137e7c201020117e7c200e200f7e7c200c200d7e7c200a200b7e7c200820097e7c200620077e7c200320057e7c2217421a887c2218421a887c2219421a887c221a42ffffff1f83221b420a867c200d20147e200f20167e7c200b20127e7c200920107e7c2007200e7e7c2005200c7e7c201a421a887c221a42ffffff1f83221c4290fa007e7c200620157e200820047e7c200320137e7c201942ffffff1f832219420a867c201b4290fa007e7c200320157e200620047e7c201842ffffff1f832218420a867c20184290fa007e200320047e7c2218421a887c20194290fa007e7c2219421a887c221b421a887c221da741ffffff1f7136020c2000200a20157e200c20047e7c200820137e7c200620117e7c2003200f7e7c201c420a867c200b20147e200d20167e7c200920127e7c200720107e7c2005200e7e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602102000200c20157e200e20047e7c200a20137e7c200820117e7c2006200f7e7c2003200d7e7c201c420a867c200920147e200b20167e7c200720127e7c200520107e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602142000200e20157e201020047e7c200c20137e7c200a20117e7c2008200f7e7c2006200d7e7c2003200b7e7c201c420a867c200720147e200920167e7c200520127e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f713602182000201020157e201220047e7c200e20137e7c200c20117e7c200a200f7e7c2008200d7e7c2006200b7e7c200320097e7c201c420a867c200520147e200720167e7c201a421a887c221a42ffffff1f83221c4290fa007e7c201d421a887c221da741ffffff1f7136021c2000201220157e201420047e7c201020137e7c200e20117e7c200c200f7e7c200a200d7e7c2008200b7e7c200620097e7c200320077e7c201c420a867c201a421a88200520167e7c220342ffffff1f8322044290fa007e7c201d421a887c2205a741ffffff1f7136022020002003421a8822034290fa007e201742ffffff1f837c2004420a867c2005421a887c2204a741ffffff0171360224200020044216882003420e867c220342d1077e201842ffffff1f837c2204a741ffffff1f7136020020002003420686201942ffffff1f837c2004421a887c2203421a88201b42ffffff1f837c3e020820002003a741ffffff1f713602040ba00401127f20002802242201411676220241067420002802046a200241d1076c20002802006a2203411a766a2204411a7620002802086a220541ffffff1f7121022005411a76200028020c6a220641ffffff1f7121072006411a7620002802106a220841ffffff1f7121092008411a7620002802146a220a41ffffff1f71210b200a411a7620002802186a220c411a76200028021c6a220d41ffffff1f71210e200d411a7620002802206a220f41ffffff1f7121100240200f411a76200141ffffff01716a2201411676200341ffffff1f71220341d1076a2211411a76200441ffffff1f7122046a221241bfffff1f4b2006200571200871200a71200c41ffffff1f71220571200d71200f7141ffffff1f46200141ffffff01467171722206450d00201141ffffff1f712103201220064106746a220641ffffff1f7121042006411a7620026a220641ffffff1f7121022006411a7620076a220641ffffff1f7121072006411a7620096a220641ffffff1f7121092006411a76200b6a220641ffffff1f71210b2006411a7620056a220641ffffff1f7121052006411a76200e6a220641ffffff1f71210e2006411a7620106a220641ffffff1f7121102006411a7620016a41ffffff017121010b200041013a002c2000410136022820002001360224200020103602202000200e36021c200020053602182000200b360214200020093602102000200736020c2000200236020820002004360204200020033602000b990201037f230041106b2202240020004100360208200042013702000240024002400240024020012d00000e03000102030b200241013a0000200020024101107e200141106a28020021032000200141186a280200220410cb0102402004450d00200441216c21040340200020034121107e200341216a21032004415f6a22040d000b0b20022001290308370300200020024108107e0c020b200241023a0000200020024101107e2002200141046a280200360200200020024104107e0c010b200241033a0000200020024101107e4120102f2203450d0120024220370204200220033602002002200141016a4120107e2000200228020022032002280208107e2002280204450d00200310310b200241106a24000f0b1039000bc70403037f027e017f230041a0016b22022400200241c8006a410c6a2203200041f0016a290200370200200241dc006a200041f8016a290200370200200241e4006a20004180026a290200370200200241e2c289ab06360248200220002902e80137024c2001280200210420024190016a200141046a109d06200241f0006a410c6a20024190016a41086a2802003602002002200436027020022002290390013702742002200128021036028001200241206a200241c8006a200241f0006a10cb050240024002400240024020022d00204101470d00200241166a2201200241396a290000370100200241106a2204200241336a290000370300200241086a2002412b6a290000220537030020022002290023220637030020022f00212107200241fa006a200537010020024182016a200429030037010020024188016a2001290100370000200220073b0170200220063701722000290300210541002100034020004120460d024108102f2201450d052002420837024c2002200136024820022005370320200241c8006a200241206a4108107e200341086a41002900d18f42370000200341002900c98f423700002002200241f0006a20006a360264200241206a200241c8006a10d4040240200228024c450d00200228024810310b200241c8006a200241206a10d504200228024822042002280250108f0321010240200228024c450d00200410310b200041206a210020010d000b410221000c020b4100210041800821030c020b410021000b41800621030b200241a0016a240020032000720f0b1039000b820203017f017e067f0240024020012802082202ad420c7e2203422088a70d002003a72204417f4c0d00200128020021054104210102402004450d002004102f2201450d020b2000410036020820002001360200200041046a2004410c6e220636020002402004410c490d00200241ffffffff0371210703402007450d01200541086a2802002204417f4c0d02200528020021080240024020040d00410121090c010b2004102f2209450d040b20092008200410bf092108200141086a2004360200200141046a2004360200200120083602002005410c6a21052001410c6a21012007417f6a21072006417f6a22060d000b0b200020023602080f0b103b000b1039000b130020004104360204200041f08fc4003602000b340020004194c8c00036020420004100360200200041146a4101360200200041106a41809ac400360200200041086a42043702000b5d01027f230041206b22022400200241186a4200370300200241106a4200370300200241086a42003703002002420037030002404120102f22030d001039000b2000422037020420002003360200200020024120107e200241206a24000bab0301087f230041106b2203240020032000200220016b10a2060240024020032802004101470d00200341086a2802000d0141b087ca00411141c487ca00103c000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b024002400240200620044f0d00034020022001460d02200720066a20012d00003a0000200141016a21012004200641016a2206470d000b200421060b2005200636020020012002460d01200141016a21062000410c6a2108200041056a210920012d0000210a034002400240200028020022074125490d00200028020c210120002802082105200821040c010b200721012000210420092105412421070b024020012007470d0020032000410110a206024020032802004101470d00200341086a2802000d0541b087ca00411141c487ca00103c000b200028020c210120002802082105200821040b200520016a200a3a00002004200428020041016a36020020022006460d0220062d0000210a200641016a21060c000b0b200520063602000b200341106a24000f0b1039000baa0301047f02400240200128020022034125490d002001410c6a2802002104200321050c010b41242105200321040b0240200520046b2002490d00200041003602000f0b0240024002400240200420026a22022004490d004100417f2002417f6a677620024102491b220441016a22052004490d000240024020034125490d002001410c6a2802002104200141086a2802002102200321060c010b200141056a210241242106200321040b200420054b0d010240200541244b0d000240200341244b0d00200041003602000f0b200141003a0004200141056a2002200410bf091a20012004360200200210310c040b20062005460d030240200341244b0d0002402005102f2203450d0020032002200410bf091a0c040b2000200536020420004101360200200041086a41013602000f0b200220062005103322030d022000200536020420004101360200200041086a41013602000f0b2000200536020420004101360200200041086a41003602000f0b41a988ca00412041cc88ca00103c000b200141013a0004200120053602002001410c6a2004360200200141086a20033602000b200041003602000bf90202037f027e230041d0006b220224002002412036020420022001360200200241086a2001412010d20202400240200228020822010d00200041033a00100c010b200228020c21030240024002400240200241086a41086a28020022044108490d0020044178714108460d0020044110460d00200129000021052001290008210641002104024020012d00100e03030200010b410221040c020b20024100360220200242013703182002410c36022c200220023602282002200241186a360234200241cc006a41013602002002420137023c2002419086c4003602382002200241286a360248200241346a41d8ddc900200241386a10401a2002280218200228022010d9040240200228021c450d00200228021810310b410321040c020b410121040b2002200228003836021820022002413b6a28000036001b200020063703082000200537030020002002280218360011200041146a200228001b3600000b200020043a00102003450d00200110310b200241d0006a24000bb30201027f230041e0006b220224002002412036020c20022001360208200241106a2001412010d20202400240200228021022010d00200041003602000c010b200228021421032002200241106a41086a28020036022420022001360220200241c8006a200241206a10e7050240024020022802480d0020024100360230200242013703282002410c36023c2002200241086a3602382002200241286a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241386a360258200241c4006a41d8ddc900200241c8006a10401a2002280228200228023010d9040240200228022c450d00200228022810310b200041003602000c010b20002002290348370200200041086a200241c8006a41086a2802003602000b2003450d00200110310b200241e0006a24000ba90303037f037e017f230041d0006b220324002003200236020420032001360200200341086a2001200210d20202400240200328020822010d00200041023a00200c010b200328020c2104024002400240200341106a2802002205450d00410021020240024020012d00000e020100020b410121020b2005417f6a4104490d002005417b6a4110490d002005416b6a410b4b0d010b20034100360220200342013703182003410c36022c200320033602282003200341186a360234200341cc006a41013602002003420137023c2003419086c4003602382003200341286a360248200341346a41d8ddc900200341386a10401a2003280218200328022010d9040240200328021c450d00200328021810310b410221020c010b200128000121052001410d6a2900002106200129000521072003200328003836021820032003413b6a28000036001b20012900152108200128001d210920002006370308200020073703002000200936021c200020083702142000200536021020002003280218360021200041246a200328001b3600000b200020023a00202004450d00200110310b200341d0006a24000bcf0505067f017e027f017e017f230041e0006b220224002002412036021420022001360210200241186a2001412010d202024002400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10bb010240024020022802080d0002400240200228020c2205200228022c4103762201200120054b1b22014103742206417f4c0d000240024020010d00410421070c010b2006102f2207450d060b2001ad2108024002402005450d000340200228022c22064104490d042002280228220128000021092002200141046a36022820022006417c6a220a36022c200a4104490d042001280004210a2002200641786a36022c2002200141086a36022802402008422088220ba722012008a7470d00200141016a22062001490d042001410174220c20062006200c491b22064104200641044b1b220641ffffffff0171200646410274210c200641037421060240024020010d00200241003602480c010b20024104360250200220073602482002200b4203863e024c0b200241386a2006200c200241c8006a104e2002280240210620022802384101460d03200228023c21072008428080808070832006410376ad8421080b200720014103746a2201200a3602042001200936020020084280808080107c21082005417f6a22050d000b0b2007450d0320002008370204200020073602000c040b20060d050b103b000b200842ffffffff0183500d00200710310b20024100360240200242013703382002410c3602342002200241106a3602302002200241386a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241306a360258200241c4006a41d8ddc900200241c8006a10401a2002280238200228024010d9040240200228023c450d00200228023810310b200041003602000b2004450d00200310310b200241e0006a24000f0b1039000bbd0704047f017e0a7f017e230041e0006b220224002002412036021420022001360210200241186a2001412010d20202400240200228021822030d00200041003602000c010b200228021c21042002200241206a28020036022c20022003360228200241086a200241286a10bb010240024020022802080d0002400240200228020c2205200228022c411c6e2201200120054b1bad421c7e2206422088a70d002006a72201417f4c0d000240024020010d00410421070c010b2001102f2207450d020b2001411c6ead2106024002402005450d000340200241c8006a200241286a10e7050240024020022802482208450d0020022802502109200228024c210a200241c8006a200241286a10e70502402002280248220b450d00200228024c210c200228022c220141044f0d02200c41ffffff3f71450d00200b10310b200a41ffffff3f71450d00200810310b02402006422088a72201450d002001411c6c21052007210103400240200141046a28020041ffffff3f71450d00200128020010310b0240200141106a28020041ffffff3f71450d002001410c6a28020010310b2001411c6a2101200541646a22050d000b0b2006a72201450d062001411c6c450d06200710310c060b2002280250210d2002280228220e280000210f20022001417c6a36022c2002200e41046a36022802402006422088a722012006a7470d00200141016a220e2001490d0420014101742210200e200e2010491b220e4104200e41044b1bad421c7e2211422088a745410274210e2011a721100240024020010d00200241003602480c010b200241043602502002200736024820022001411c6c36024c0b200241386a2010200e200241c8006a104e2002280240210e20022802384101460d03200228023c2107200642808080807083200e411c6ead8421060b20072001411c6c6a2201200a36020420012008360200200141186a200f360200200141146a200d360200200141106a200c3602002001410c6a200b360200200141086a200936020020064280808080107c21062005417f6a22050d000b0b2007450d0320002006370204200020073602000c040b200e0d010b103b000b1039000b20024100360240200242013703382002410c3602342002200241106a3602302002200241386a360244200241dc006a41013602002002420137024c2002419086c4003602482002200241306a360258200241c4006a41d8ddc900200241c8006a10401a2002280238200228024010d9040240200228023c450d00200228023810310b200041003602000b2004450d00200310310b200241e0006a24000bfc1205037f017e0e7f037e047f23004190026b22022400200241286a200110bb0102400240024020022802280d00200228022c2203200128020441246e2204200420034b1bad42247e2205422088a70d022005a72204417f4c0d0202400240024020040d00410421060c010b2004102f2206450d010b200441246ead2105024002402003450d0020024198016a4104722107200241dd006a2108200241ee016a2109200241df016a210a20024184026a210b200241b5016a210c20024198016a41106a210d4100210e03400240024002402001280204220f450d00200128020022102d000021042001200f417f6a22113602042001201041016a3602000240024002400240024002400240024020040e080008010803040205080b200241086a200110bb0120022802080d072001280204220f200228020c2204490d072004417f4c0d100240024020040d00410121120c010b200410352212450d0e2001280204210f0b200f2004490d0620122001280200200410bf09210f2001280204221320044f0d0520042013419cb4c0001061000b410021042002410036029801200f417e6a210f034020112004460d07201020046a221341016a2d000021122001200f3602042001201341026a360200200720046a20123a00002002200441016a221336029801200f417f6a210f2013210420134120470d000b2002200d41056a2900003700dd012002200d29020022143703d8012002200c2800003602d0012002200c41036a2800003600d301200228029c01210f20022903a0012115200b41036a20022800db01360000200b20143e0200200241e8016a41046a200a41046a2f00003b0100200220153702fc012002200f3602f8012002200a2800003602e801200941036a20022800d301360000200920022802d001360000200229008302211620022800fb0121122002200241e8016a41056a2900003700c501200220022902e8013703c001200220022900c50137008d01200220022903c001370388012002200229008d0137007d20022002290388013703782002200229007d37006d200220022903783703682002200229006d37005520022002290368370350200820022f00653b0000200841026a200241e5006a41026a2d00003a00002012410876211720164280808080708321142015421888a721132016a72110410021110c080b200110d1012215a74101710d05200241206a200110bb0120022802200d052001280204220f20022802242204490d052004417f4c0d0e0240024020040d00410121130c010b200410352213450d0c2001280204210f0b02400240200f2004490d0020132001280200200410bf09210f2001280204221220044f0d0120042012419cb4c0001061000b201310310c060b2001201220046b3602042001200128020020046a360200200f450d052004ad2214422086201484221642808080807083211420154280808080f01f83422088a721122016a7211020154280feffffff1f83420888a7210f410121110c070b200110d1012215a74101710d04200241106a200110bb0120022802100d042001280204220f20022802142204490d042004417f4c0d0d0240024020040d00410121130c010b200410352213450d0b2001280204210f0b02400240200f2004490d0020132001280200200410bf09210f2001280204221220044f0d0120042012419cb4c0001061000b201310310c050b2001201220046b3602042001200128020020046a360200200f450d042004ad2214422086201484221642808080807083211420154280808080f01f83422088a721122016a7211020154280feffffff1f83420888a7210f410221110c060b200110d1012215a74101710d03200241186a200110bb0120022802180d032001280204220f200228021c2204490d032004417f4c0d0c0240024020040d00410121130c010b200410352213450d0a2001280204210f0b02400240200f2004490d0020132001280200200410bf09210f2001280204221220044f0d0120042012419cb4c0001061000b201310310c040b2001201220046b3602042001200128020020046a360200200f450d032004ad2214422086201484221642808080807083211420154280808080f01f83422088a721122016a7211020154280feffffff1f83420888a7210f410321110c050b2011450d0220102d000121042001200f417e6a3602042001201041026a36020020040d02200241f8016a200110b00320022802f80122124102460d02200241d0006a41086a20024198016a41086a2902003703002002200229029801370350200228028002211020022802fc0121134104211142002114410021170c030b2001201320046b3602042001200128020020046a360200200f450d01200241d0006a41086a20024198016a41086a2902003703002002200229029801370350200f41087621172004ad22154220862015842215422088a721102015a7211341052111420021140c020b201210310b02402005422088a72201450d00200141246c21042006210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012004415c6a22040d000b0b2005a72201450d06200141246c450d06200610310c060b0b200241c0006a41086a200241d0006a41086a2903002215370300200241306a41086a2218201537030020022002290350221537034020022015370330024020054220882215a722042005a7470d00200441016a22192004490d072004410174221a20192019201a491b22194104201941044b1bad42247e2215422088a74541027421192015a7211a0240024020040d0020024100360298010c010b200241043602a00120022006360298012002200441246c36029c010b200241f8016a201a201920024198016a104e200228028002211920022802f8014101460d0320022802fc01210620054220882215a72104201941246ead21050b2006200441246c6a220420142010ad8437000c2004201336000820042017410874201241ff0171723600042004200f3b0001200420113a0000200441036a200f4110763a0000200420022903303700142004411c6a20182903003700002015422086200542ffffffff0f83844280808080107c2105200e41016a220e2003470d000b0b2006450d0220002005370204200020063602000c030b2019450d030b1039000b200041003602000b20024190026a24000f0b103b000bac0a01177f23004180016b220224002002200110bb01024002402002280200450d00200041003602000c010b02400240024002402002280204220320012802044105762204200420034b1b22054105742204417f4c0d000240024020050d00410121060c010b2004102f2206450d030b024020030d00410021030c040b200241306a4104722107200241c2006a21082002413b6a2109200241c9006a220a41036a210b4100210c034020024100360230200c220d41016a210c200128020421044100210e0240024003402004450d012001280200220f2d0000211020012004417f6a22043602042001200f41016a3602002007200e6a20103a00002002200e41016a220f360230200f210e200f4120470d000b200241e8006a41026a2204200941026a2d00003a0000200241e4006a41026a220e200841026a2d00003a0000200220072f01003b016c2002200741026a2d00003a006e200220092f00003b0168200220082f00003b01642002200a2800003602702002200b28000036007320022800372111200228013e21122002280045211320022802502114200220022d006e3a002e200220022f016c3b012c200241e0006a41026a220f20042d00003a0000200220022f01683b0160200241dc006a41026a2210200e2d00003a0000200220022f01643b015c200241d8006a41026a221520022d00723a0000200220022f01703b015820022800732116200241f0006a41026a2217200f2d00003a0000200220022f01603b0170200241ec006a41026a221820102d00003a0000200220022f015c3b016c200420152d00003a0000200220022f01583b0168200241306a41026a20022d002e3a0000200220022f012c3b0130200e20172d00003a0000200220022f01703b0164200f20182d00003a0000200220022f016c3b0160201020042d00003a0000200220022f01683b015c410021040c010b410121040b200241286a41026a220e200241306a41026a2d00003a0000200241246a41026a220f200241e4006a41026a2d00003a0000200241206a41026a2210200241e0006a41026a2d00003a00002002411c6a41026a2215200241dc006a41026a2d00003a0000200220022f01303b0128200220022f01643b0124200220022f01603b0120200220022f015c3b011c20040d02200241186a41026a2217200e2d00003a0000200241146a41026a220e200f2d00003a0000200241106a41026a220f20102d00003a00002002410c6a41026a221020152d00003a0000200220022f01283b0118200220022f01243b0114200220022f01203b0110200220022f011c3b010c02400240200d2005470d00200d4101742204200d41016a2215200420154b1b22044104200441044b1b220441ffffff3f7120044621152004410574210402400240200d0d00200241003602300c010b20024101360238200220063602302002200d4105743602340b200241f0006a20042015200241306a104e2002280278210420022802704101460d0120022802742106200441057621050b2006200d4105746a220420022f01183b0000200441026a20172d00003a0000200441096a200e2d00003a0000200420022f01143b0007200441106a200f2d00003a0000200420022f01103b000e200420113600032004201236000a20042013360011200441176a20102d00003a0000200420022f010c3b00152004201436001c20042016360018200c2003460d050c010b0b20040d020b103b000b20004100360200200541ffffff3f71450d02200610310c020b1039000b2000200536020420002006360200200041086a20033602000b20024180016a24000bdb0b04057f017e0f7f017e230041b0016b220324002003200236021420032001360210200341186a2001200210d20202400240200328021822040d00200041003602000c010b200328021c21052003200341206a28020036022c20032004360228200341086a200341286a10bb010240024020032802080d0002400240200328020c2206200328022c4105762201200120064b1b22014105742202417f4c0d000240024020010d00410121070c010b2002102f2207450d020b2001ad2108024002402006450d00200341e8006a410472210920034181016a210a200341fa006a210b200341f3006a210c4100210d034020034100360268200d41016a210d200328022c210241002101024002400240024003402002450d01200920016a2003280228220e2d00003a00002003200141016a220f36026820032002417f6a220236022c2003200e41016a360228200f2101200f4120470d000b200341306a41026a2201200c41026a2d00003a0000200341ac016a41026a2202200b41026a2d00003a00002003419c016a41026a220f200a41026a2d00003a0000200320092f01003b01a0012003200941026a2d00003a00a2012003200c2f00003b01302003200b2f00003b01ac012003200a2f00003b019c01200328006f210e20032801762110200328007d211120032802880121122003280284012113200320032d00a2013a0066200320032f01a0013b016420034198016a41026a221420012d00003a0000200320032f01303b01980120034194016a41026a220120022d00003a0000200320032f01ac013b01940120034190016a41026a2202200f2d00003a0000200320032f019c013b019001200341e0006a41026a220f20142d00003a0000200320032f0198013b0160200341dc006a41026a221420012d00003a0000200320032f0194013b015c200341d8006a41026a220120022d00003a0000200320032f0190013b0158200341d4006a41026a220220032d00663a0000200320032f01643b0154200341d0006a41026a2215200f2d00003a0000200320032f01603b0150200341cc006a41026a220f20142d00003a0000200320032f015c3b014c200341c8006a41026a221420012d00003a0000200320032f01583b0148200341c4006a41026a221620022d00003a0000200320032f01543b0144200341c0006a41026a221720152d00003a0000200320032f01503b01402003413c6a41026a2215200f2d00003a0000200320032f014c3b013c200341386a41026a220f20142d00003a0000200320032f01483b013820084220882218a722022008a7470d03200241016a22012002490d0720024101742214200120012014491b22014104200141044b1b220141ffffff3f7120014621142001410574210120020d01200341003602680c020b02402001450d00200341003602680b200842ffffff3f83500d08200710310c080b2003410136027020032007360268200320184205863e026c0b200341a0016a20012014200341e8006a104e20032802a801210120032802a0014101460d0320032802a40121072001410576ad21080b200720024105746a220120032f01443b0000200141026a20162d00003a0000200141096a20172d00003a0000200120032f01403b0007200141106a20152d00003a0000200120032f013c3b000e2001200e3600032001201036000a20012011360011200141176a200f2d00003a0000200120032f01383b00152001201236001c20012013360018200842ffffffff0f83200241016aad422086842108200d2006470d000b0b2007450d0320002008370204200020073602000c040b20010d010b103b000b1039000b200341003602a801200342013703a0012003410c3602342003200341106a3602302003200341a0016a3602ac01200341fc006a41013602002003420137026c2003419086c4003602682003200341306a360278200341ac016a41d8ddc900200341e8006a10401a20032802a00120032802a80110d904024020032802a401450d0020032802a00110310b200041003602000b2005450d00200410310b200341b0016a24000ba20403047f017e047f230041e0006b220324002003200236020c20032001360208200341106a2001200210d20202400240200328021022010d00200041003602080c010b200328021421042003200341186a28020022023602242003200136022002400240024020024104490d00200128000021052003200141046a36022020032002417c6a220636022420064104490d00200128000421062003200241786a3602242003200141086a360220200341c8006a200341206a10e80120032802482202450d00200329024c2107200341c8006a200341206a10e801024020032802482208450d00200328024c21092003280224220a41044f0d02200941ffffff3f71450d00200810310b200742ffffff3f83500d00200210310b20034100360230200342013703282003410c36023c2003200341086a3602382003200341286a360244200341dc006a41013602002003420137024c2003419086c4003602482003200341386a360258200341c4006a41d8ddc900200341c8006a10401a2003280228200328023010d9040240200328022c450d00200328022810310b200041003602080c010b200341d0006a280200210b2000200737020c200020023602082000200636020420002005360200200041206a200328022022022800003602002000411c6a200b360200200041186a2009360200200041146a20083602002003200a417c6a3602242003200241046a3602200b2004450d00200110310b200341e0006a24000bc90101017f230041206b22042400200441003602102004420137030820042001370318200441086a200441186a4108107e20042002370318200441086a200441186a4108107e0240024002400240200341ff01710e03000102030b200441003a0018200441086a200441186a4101107e0c020b200441013a0018200441086a200441186a4101107e0c010b200441023a0018200441086a200441186a4101107e0b20004120200428020822032004280210109f020240200428020c450d00200310310b200441206a24000bb20202017f017e230041206b220324002003410036020820034201370300200320022802403602102003200341106a4104107e200320022802443602102003200341106a4104107e200320022802483602102003200341106a4104107e2003200228024c3602102003200341106a4104107e200229030021042003200241086a290300370318200320043703102003200341106a4110107e200229031021042003200241186a290300370318200320043703102003200341106a4110107e200229032021042003200241286a290300370318200320043703102003200341106a4110107e200229033021042003200241386a290300370318200320043703102003200341106a4110107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000bad0101047f230041106b2202240002400240200128020822034105744104722204417f4c0d00200128020021012004102f2205450d012002410036020820022004360204200220053602002002200310cb0102402003450d00200341057421030340200220014120107e200141206a2101200341606a22030d000b0b20004120200228020022012002280208109f0202402002280204450d00200110310b200241106a24000f0b103b000b1039000bbd0101047f230041106b22022400024002402001280208220341216c41046a2204417f4c0d00200128020021010240024020040d00410121050c010b2004102f2205450d020b2002410036020820022004360204200220053602002002200310cb0102402003450d00200341216c21030340200220014121107e200141216a21012003415f6a22030d000b0b20004120200228020022012002280208109f0202402002280204450d00200110310b200241106a24000f0b103b000b1039000b8c0101017f230041206b22022400200241003602102002420137030820022001290300370318200241086a200241186a4108107e20022001290308370318200241086a200241186a4108107e20022001290310370318200241086a200241186a4108107e20004120200228020822012002280210109f020240200228020c450d00200110310b200241206a24000b830201037f230041106b2203240020034100360208200342013703002003200228020036020c20032003410c6a4104107e2003200228020436020c20032003410c6a4104107e200228020821042003200241106a280200220510cb0102402005450d00200541057421050340200320044120107e200441206a2104200541606a22050d000b0b2002280214210420032002411c6a280200220510cb0102402005450d00200541057421050340200320044120107e200441206a2104200541606a22050d000b0b2003200228022036020c20032003410c6a4104107e20002001200328020022042003280208109f0202402003280204450d00200410310b200341106a24000bd50102017f017e230041206b220324002003410036020820034201370300200320022d00203a00102003200341106a4101107e200320022802103602102003200341106a4104107e200229030021042003200241086a290300370318200320043703102003200341106a4110107e200320022802143602102003200341106a4104107e200320022802183602102003200341106a4104107e2003200228021c3602102003200341106a4104107e20002001200328020022022003280208109f0202402003280204450d00200210310b200341206a24000bdc0404037f027e017f027e230041a0016b22022400200241c8006a410c6a2203200041e8016a290200370200200241dc006a200041f0016a290200370200200241e4006a200041f8016a290200370200200241e7e485f3063602482002200041e0016a29020037024c2001280200210420024190016a200141046a109d06200241f0006a410c6a20024190016a41086a2802003602002002200436027020022002290390013702742002200128021036028001200241206a200241c8006a200241f0006a10cb05024002400240024020022d00204101470d00200241166a2201200241396a290000370100200241106a2204200241336a290000370300200241086a2002412b6a290000220537030020022002290023220637030020022f00212107200041106a290300210820002903002109200241fa006a200537010020024182016a200429030037010020024188016a2001290100370000200220073b01702002200637017241002100034020004120460d02200242013703482002410036025020022009370320200241c8006a200241206a4108107e20022008370320200241c8006a200241206a4108107e200341086a41002900e18f42370000200341002900d98f423700002002200241f0006a20006a360264200241206a200241c8006a10d4040240200228024c450d00200228024810310b200241c8006a200241206a10d504200228024822042002280250108f0321010240200228024c450d00200410310b200041206a210020010d000b410221000c020b4100210041800821030c020b410021000b41800621030b200241a0016a240020032000720b9e7807017f017e0d7f397e017f017e1b7f230041a0396b2208240002402005a70d0020082003109d04200828020045ad2105200829030821060b02400240024002400240024002400240024002400240024002400240024002400240024002402005a7450d000240024002402004290300220520067d22092005560d00200420093703000c010b02402002450d0002400240024020032d00000e03010200030b200341186a280200450d02200341106a280200220a2d00004107470d02200a290390042006540d020c030b200341186a280200450d01200341106a280200220a2d00004107470d01200a290390042006540d010c020b200341186a280200450d00200341106a280200220a2d00004107470d00200a2903900420065a0d010b41d80a102f220b450d01200b41f80036029c07200b41013a009807200b420137039007200b41ee003602d403200b41013a00d003200b42013703c803200b41e40036020c200b41013a0008200b4201370300200141c0006a210c20014190036a210d200141d8026a210e200141a0026a210f200141e8016a2110200141b0016a2111200141f8006a2112200141086a21134100210a20012903002205a72214417f6a21150240024003400240200b200a6a22162802002014470d00024002400240024002400240024002400240024020150e080700010203040506080b20054202520d07201641086a201310f804450d09201641c0006a200c10f804450d090c070b20054203520d06201641086a201310f804450d08201641c0006a200c10f804450d08201641f8006a201210f804450d080c060b20054204520d05201641086a201310f804450d07201641c0006a200c10f804450d07201641f8006a201210f804450d07201641b0016a201110f804450d070c050b20054205520d04201641086a201310f804450d06201641c0006a200c10f804450d06201641f8006a201210f804450d06201641b0016a201110f804450d06201641e8016a201010f804450d060c040b20054206520d03201641086a201310f804450d05201641c0006a200c10f804450d05201641f8006a201210f804450d05201641b0016a201110f804450d05201641e8016a201010f804450d05201641a0026a200f10f804450d050c030b20054207520d02201641086a201310f804450d04201641c0006a200c10f804450d04201641f8006a201210f804450d04201641b0016a201110f804450d04201641e8016a201010f804450d04201641a0026a200f10f804450d04201641d8026a200e10f804450d040c020b20054208520d01201641086a201310f804450d03201641c0006a200c10f804450d03201641f8006a201210f804450d03201641b0016a201110f804450d03201641e8016a201010f804450d03201641a0026a200f10f804450d03201641d8026a200e10f804450d0320164190036a200d10f804450d030c010b20054201510d010b200b10ad01200b41c8036a10ad01200b4190076a10ad010c040b201641086a201310f8040d020b200a41c8036a220a41d80a470d000b200b10ad01200b41c8036a10ad01200b4190076a10ad01200b1031200841f82d6a200841286a41b40710bf091a200041163602082000410c6a200841f82d6a41b40710bf091a20004201370300200310f2030c160b200b10ad01200b41c8036a10ad01200b4190076a10ad010b200b10310b200841f82d6a200110d705200841286a200841f82d6a41c80310bf091a200841286a41c8036a200341e00710bf091a02400240024002400240024002400240024002400240024002400240024002400240024002400240024020082d00f0030e0b0001040602030514141407140b20084190136a200841286a41c80310bf091a200841f8036a2802002104200841f4036a2802002113200841fc036a280200210b200841d0226a41086a20084188046a280200360200200820084180046a2903003703d022200841f0226a41106a4200370300200842003702f4222013200b41f8036c22166a21142013210a200b450d24201641887c6a210a200841f82d6a4104722115200841d00b6a41047221032013210b0340200b2802002116200841f82d6a200b41046a41f40310bf091a02402016410c470d00200b41f8036a210a0c260b200841d01a6a200841f82d6a41f40310bf091a200820163602d00b2003200841d01a6a41f40310bf091a02402016417f6a41064b0d0020004201370300200041123602080c100b200841f82d6a200841d00b6a20084190136a10d40520082802f82d2116200841b8266a201541bc0710bf091a20164101460d0e200841d8356a41106a200841b8266a41106a2902002205370300200841d8356a41086a200841b8266a41086a2902002206370300200820082902b82622093703d835200841f82d6a41106a2005370300200841f82d6a41086a2006370300200820093703f82d200a41887c6a210a200841f0226a200841f82d6a10b506200841d00b6a10aa01200b41f8036a220b2014470d000c260b0b200841f82d6a200841286a41c80310bf091a200841f8036a2802002114200841f4036a2802002116200841fc036a280200210a200841d01a6a41086a220b20084188046a280200360200200820084180046a2903003703d01a0240200a41f8036c0d002008200a3602d80b200820143602d40b200820163602d00b200841b8266a200841d00b6a10b606200841d8266a200b280200360200200841106a41086a200841b8266a41086a290300370300200841106a41106a200841b8266a41106a290300370300200820082903d01a22053703d026200820082903b826370310200841d4266a2902002106200841f82d6a10ad012005a72115420021054101210b4100210a0c1f0b2016280200210b20004201370300200041124107200b417f6a4107491b360208200841d01a6a10b001024020082802d41a220b450d00200b4198046c450d0020082802d01a10310b0240200a450d00200a41f8036c210b2016210a0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b02402014450d00201441f8036c450d00201610310b200841f82d6a10ad01410021144101210a4101210b410121004101211641012103410121150c1b0b200841d8356a200841286a41c80310bf091a20084190136a20084180046a41c80310bf091a200841f4036a2802002204200841fc036a280200220a41f8036c220b6a2103200841f8036a280200210220042116200a450d1b200b41887c6a2114200841f82d6a4104722113200841d00b6a41047221152004211603402016280200210a200841f82d6a201641046a41f40310bf091a201641f8036a2116200a410c460d1c200841d01a6a200841f82d6a41f40310bf091a2008200a3602d00b2015200841d01a6a41f40310bf091a0240200a417f6a41064b0d0020004201370300200041123602080c0c0b200841f82d6a200841d00b6a200841d8356a20084190136a10d30520082802f82d210a200841b8266a201341bc0710bf091a200a4101460d0a200841f0226a41106a220a200841b8266a41106a290200370300200841f0226a41086a200841b8266a41086a290200370300200820082902b8263703f022200841f0226a109a04200a280200210b200a41003602000240200b450d00024020082802fc22220a450d00200a417f6a210a0340200b2802b02b210b200a450d01200a417f6a210a0c000b0b200841003602802e2008200b3602fc2d200841003602f82d20082008280284233602842e200841f82d6a109b040b201441887c6a2114200841d00b6a10aa0120162003470d000c1d0b0b200841f0226a200841286a41c80310bf091a200841f8036a2802002104200841f4036a2802002115200841fc036a2802002113200841d8356a20084190046a41c80310bf091a2015201341f8036c6a211420084188046a280200210c20084184046a280200210220084180046a280200211220084190136a200841d8356a10b706200841f82d6a4104722103201521160340024020162014470d00200841d01a6a200841d8356a41c80310bf091a200841e80b6a200c360200200841e40b6a2002360200200841e00b6a2012360200200841d00b6a410c6a2013360200200841d80b6a2004360200200820153602d40b4101210a200841013a00d00b200841f82d6a200841d01a6a200841d00b6a10af0320082802f82d210b200841b8266a200841f82d6a41047241b40710bf091a200b4119470d0920084190136a10ad01200841f0226a10ad0142002105410021154101210b410021160c1f0b02402016280200417f6a41064b0d0020004201370300200041123602080c110b200841f82d6a2016200841f0226a200841d8356a10d30520082802f82d210a200841b8266a200341bc0710bf091a200a4101460d0f200841d00b6a41106a220a200841b8266a41106a290200370300200841d00b6a41086a200841b8266a41086a290200370300200820082902b8263703d00b200841d00b6a109a04200a280200210b200a41003602000240200b450d00024020082802dc0b220a450d00200a417f6a210a0340200b2802b02b210b200a450d01200a417f6a210a0c000b0b200841003602802e2008200b3602fc2d200841003602f82d200820082802e40b3602842e200841f82d6a109b040b201620084190136a10b806210a201641f8036a2116200a450d000b20004201370300200041003602080c0f0b200841f82d6a200841286a41c80310bf091a200841f8036a2802002115200841f4036a2802002116200841fc036a2802002103200841d81a6a20084188046a280200360200200820084180046a2903003703d01a200341f8036c21144100210a0240034002402014200a470d00200820033602d80b200820153602d40b200820163602d00b200841b8266a200841d00b6a10b606200841d8266a200841d01a6a41086a280200360200200841106a41086a200841b8266a41086a290300370300200841106a41106a200841b8266a41106a290300370300200820082903d01a22053703d026200820082903b826370310200841d4266a2902002106200841f82d6a10ad012005a7211542002105410021144101210a4101210b410121160c200b02402016200a6a220b280200417f6a41064b0d0020004201370300200041123602080c020b200a41f8036a210a200b200841f82d6a10b9060d000b20004201370300200041083602080b200841d01a6a10b001024020082802d41a220a450d00200a4198046c450d0020082802d01a10310b02402003450d00200341f8036c210b2016210a0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b02402015450d00201541f8036c450d00201610310b200841f82d6a10ad01410021164101210a4101210b410121000c160b200841f0226a200841286a41c80310bf091a200841f8036a2903002105200841f1036a2d0000210a200841f82d6a20084180046a41d00710bf091a200841b8266a200841f82d6a10ba060240024020082802b826220b4123460d00200841d01a6a200841b8266a41047241bc0710bf091a20084190136a200841d01a6a41bc0710bf091a2008200b3602d00b200841d00b6a41047220084190136a41bc0710bf091a200841d8356a200841f0226a41c80310bf091a20084190136a200841d8356a200a10bb062008280290134101460d04200841d0226a41086a200841a4136a2902002206370300200841b0226a41086a2006370300200841b0226a41106a200841ac136a2902002217370300200841b0226a41186a200841b4136a290200221837030020082008419c136a29020022093703d022200820093703b02220084190136a41086a220b2802002116200841bc136a280200210a200828029413211420084190226a41186a2203201837030020084190226a41106a2215201737030020084190226a41086a221320063703002008200937039022200841b8266a200841d00b6a108c0220082903b82622062005580d012000420137030020004113360208200a200a280200417f6a220b360200200b0d05200a280208200a28020c2802001102000240200a28020c280204450d00200a28020810310b200a41046a220b200b280200417f6a220b360200200b0d05200a10310c050b20084190136a200841d01a6a41bc0710bf091a2000410d3602082000410c6a20084190136a41b40710bf091a200042013703000240200841bc356a280200450d0020082802b83510310b024020082802f82d4123460d00200841f82d6a10ab020b200841f0226a10ad010c050b200841b8266a200841d00b6a41c00710bf091a200b20082903902237030020084190136a41106a201329030037030020084190136a41186a2015290300370300200841b0136a2003290300370300200820163602941320082014360290132008200a3602b813200841d01a6a200841b8266a20084190136a1097022004427f2004290300220942002006200841d01a6a41106a290300200620082802d81a1b7d220520052006561b22057c220620062009541b3703000240200841bc356a280200450d0020082802b83510310b024020082802f82d4123460d00200841f82d6a10ab020b410021154101210a4101210b4101211641012114410021030c1d0b200841f82d6a200841286a41c80310bf091a200841286a41d0036a2802002103200841f4036a28020021160240200841286a41d4036a280200220a450d00200a41f8036c21144100210a03400240024002400240024002400240024002402016200a6a220b2802000e0b0808080800010203040506070b200b41086a280200450d07200b41046a28020010310c070b200b41086a280200450d06200b41046a28020010310c060b200b41086a10ad010c050b200b41086a10ad010c040b200b41086a280200450d03200b41046a28020010310c030b0240200b41086a280200450d00200b41046a28020010310b200b41106a2d00004106490d02200b41186a280200450d02200b41146a28020010310c020b200b41086a10ad010c010b200b41086a10ad01200b41d0036a2d00004106490d00200b41d8036a280200450d00200b41d4036a28020010310b2014200a41f8036a220a470d000b0b02402003450d00200341f8036c450d00201610310b02400240024002400240024002400240024020082802f82d0e080800010203040506070b200841802e6a10ca040c070b200841802e6a10ca04200841b82e6a10ca040c060b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca040c050b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca04200841a82f6a10ca040c040b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca04200841a82f6a10ca04200841e02f6a10ca040c030b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca04200841a82f6a10ca04200841e02f6a10ca0420084198306a10ca040c020b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca04200841a82f6a10ca04200841e02f6a10ca0420084198306a10ca04200841d0306a10ca040c010b200841802e6a10ca04200841b82e6a10ca04200841f02e6a10ca04200841a82f6a10ca04200841e02f6a10ca0420084198306a10ca04200841d0306a10ca0420084188316a10ca040b42002105410021154101210a4101210b41012116410121144101210341002113410121040c1d0b200841f0226a200841286a41c80310bf091a200841d8356a200841f8036a41c80310bf091a200841f4036a28020021164100210a02400340200841d8356a200a10bc06220b450d01200a41016a210a200b2d00000d000b2000420137030020004106360208201610f20320161031200841d8356a10ad01200841f0226a10ad010c110b20084190136a200841f0226a41c80310bf091a20084190136a41186a220a2903002105200a200841d8356a41186a29030037030020082903a0132106200820082903e8353703a0132008290398132109200820082903e035370398132008290390132117200820082903d83537039013200841d8356a41c0036a2903002118200841d8356a41a0036a2903002119200841d8356a41a8036a290300211a200841d8356a41b0036a290300211b200841d8356a41b8036a290300211c200841d8356a4180036a290300211d200841d8356a4188036a290300211e200841d8356a4190036a290300211f200841d8356a4198036a2903002120200841d8356a41e0026a2903002121200841d8356a41e8026a2903002122200841d8356a41f0026a2903002123200841d8356a41f8026a2903002124200841d8356a41c0026a2903002125200841d8356a41c8026a2903002126200841d8356a41d0026a2903002127200841d8356a41d8026a2903002128200841d8356a41a0026a2903002129200841d8356a41a8026a290300212a200841d8356a41b0026a290300212b200841d8356a41b8026a290300212c200841d8356a4180026a290300212d200841d8356a4188026a290300212e200841d8356a4190026a290300212f200841d8356a4198026a2903002130200841d8356a41e0016a2903002131200841d8356a41e8016a2903002132200841d8356a41f0016a2903002133200841d8356a41f8016a2903002134200841d8356a41c0016a2903002135200841d8356a41c8016a2903002136200841d8356a41d0016a2903002137200841d8356a41d8016a2903002138200841d8356a41a0016a2903002139200841d8356a41a8016a290300213a200841d8356a41b0016a290300213b200841d8356a41b8016a290300213c200841d8356a4180016a290300213d200841d8356a4188016a290300213e200841d8356a4190016a290300213f200841d8356a4198016a2903002140200841d8356a41e0006a2903002141200841d8356a41e8006a2903002142200841d8356a41f0006a2903002143200841d8356a41f8006a2903002144200841d8356a41c0006a2903002145200841d8356a41c8006a2903002146200841d8356a41d0006a2903002147200841d8356a41d8006a2903002148200841d8356a41206a2903002149200841d8356a41286a290300214a200841d8356a41306a290300214b20084190136a41386a220b290300214c200b200841d8356a41386a29030037030020084190136a41306a2214290300214d2014204b37030020084190136a41286a2203290300214b2003204a37030020084190136a41206a2215290300214a2015204937030020084190136a41d8006a221529030021492015204837030020084190136a41d0006a221329030021482013204737030020084190136a41c8006a220c2903002147200c204637030020084190136a41c0006a221229030021462012204537030020084190136a41f8006a221229030021452012204437030020084190136a41e0006a220f290300214420084190136a41e8006a2211290300214e20084190136a41f0006a2210290300214f2010204337030020112042370300200f204137030020084190136a4180016a2250290300214120084190136a4188016a220f290300214220084190136a4190016a220e290300214320084190136a4198016a220d2903002151200d2040370300200e203f370300200f203e3703002050203d37030020084190136a41a0016a2252290300213d20084190136a41a8016a2250290300213e20084190136a41b0016a2253290300213f20084190136a41b8016a225429030021402054203c3703002053203b3703002050203a3703002052203937030020084190136a41c0016a2255290300213920084190136a41c8016a2252290300213a20084190136a41d0016a2256290300213b20084190136a41d8016a2257290300213c2057203837030020562037370300205220363703002055203537030020084190136a41e0016a2258290300213520084190136a41e8016a2255290300213620084190136a41f0016a2259290300213720084190136a41f8016a225a2903002138205a203437030020592033370300205520323703002058203137030020084190136a4180026a225b290300213120084190136a4188026a2258290300213220084190136a4190026a225c290300213320084190136a4198026a225d2903002134205d2030370300205c202f3703002058202e370300205b202d37030020084190136a41a0026a225e290300212d20084190136a41a8026a225b290300212e20084190136a41b0026a225f290300212f20084190136a41b8026a226029030021302060202c370300205f202b370300205b202a370300205e202937030020084190136a41c0026a2261290300212920084190136a41c8026a225e290300212a20084190136a41d0026a2262290300212b20084190136a41d8026a2263290300212c2063202837030020622027370300205e20263703002061202537030020084190136a41e0026a2264290300212520084190136a41e8026a2261290300212620084190136a41f0026a2265290300212720084190136a41f8026a226629030021282066202437030020652023370300206120223703002064202137030020084190136a4180036a2267290300212120084190136a4188036a2264290300212220084190136a4190036a2268290300212320084190136a4198036a22692903002124206920203703002068201f3703002064201e3703002067201d37030020084190136a41a0036a226a290300211d20084190136a41a8036a2267290300211e20084190136a41b0036a226b290300211f20084190136a41b8036a226c2903002120206c201c370300206b201b3703002067201a370300206a201937030020084190136a41c0036a226a2903002119206a2018370300200841d00b6a41b8036a2020370300200841d00b6a41b0036a201f370300200841d00b6a41a8036a201e370300200841d00b6a41a0036a201d370300200841d00b6a4198036a2024370300200841d00b6a4190036a2023370300200841d00b6a4188036a2022370300200841d00b6a4180036a2021370300200841d00b6a41f8026a2028370300200841d00b6a41f0026a2027370300200841d00b6a41e8026a2026370300200841d00b6a41e0026a2025370300200841d00b6a41d8026a202c370300200841d00b6a41d0026a202b370300200841d00b6a41c8026a202a370300200841d00b6a41c0026a2029370300200841d00b6a41b8026a2030370300200841d00b6a41b0026a202f370300200841d00b6a41a8026a202e370300200841d00b6a41a0026a202d370300200841d00b6a4198026a2034370300200841d00b6a4190026a2033370300200841d00b6a4188026a2032370300200841d00b6a4180026a2031370300200841d00b6a41f8016a2038370300200841d00b6a41f0016a2037370300200841d00b6a41e8016a2036370300200841d00b6a41e0016a2035370300200841d00b6a41d8016a203c370300200841d00b6a41d0016a203b370300200841d00b6a41c8016a203a370300200841d00b6a41c0016a2039370300200841d00b6a41b8016a2040370300200841d00b6a41b0016a203f370300200841d00b6a41a8016a203e370300200841d00b6a41a0016a203d370300200841d00b6a4198016a2051370300200841d00b6a4190016a2043370300200841d00b6a4188016a2042370300200841d00b6a4180016a2041370300200841d00b6a41f8006a2045370300200841d00b6a41f0006a204f370300200841d00b6a41e8006a204e370300200841d00b6a41e0006a2044370300200841d00b6a41d8006a2049370300200841d00b6a41d0006a2048370300200841d00b6a41c8006a2047370300200841d00b6a41c0006a2046370300200841d00b6a41386a204c370300200841d00b6a41306a204d370300200841d00b6a41286a204b370300200841d00b6a41206a204a370300200841d00b6a41186a2005370300200841d00b6a41c0036a2019370300200820063703e00b200820093703d80b200820173703d00b200841d01a6a20084190136a200841d00b6a10bd060240024020082903d01a4209520d00420921050c010b200a2903002117200a200841d01a6a41186a29030037030020082903a0132109200820082903e01a3703a0132008290398132106200820082903d81a370398132008290390132105200820082903d01a37039013200b290300211b2014290300211a20032903002119200841d01a6a41c0036a290300214d200841d01a6a41a0036a290300214c200841d01a6a41a8036a290300214e200841d01a6a41b0036a290300214f200841d01a6a41b8036a2903002151200841d01a6a4180036a2903002148200841d01a6a4188036a2903002149200841d01a6a4190036a290300214a200841d01a6a4198036a290300214b200841d01a6a41e0026a2903002144200841d01a6a41e8026a2903002145200841d01a6a41f0026a2903002146200841d01a6a41f8026a2903002147200841d01a6a41c0026a2903002140200841d01a6a41c8026a2903002141200841d01a6a41d0026a2903002142200841d01a6a41d8026a2903002143200841d01a6a41a0026a290300213c200841d01a6a41a8026a290300213d200841d01a6a41b0026a290300213e200841d01a6a41b8026a290300213f200841d01a6a4180026a2903002138200841d01a6a4188026a2903002139200841d01a6a4190026a290300213a200841d01a6a4198026a290300213b200841d01a6a41e0016a2903002134200841d01a6a41e8016a2903002135200841d01a6a41f0016a2903002136200841d01a6a41f8016a2903002137200841d01a6a41c0016a2903002130200841d01a6a41c8016a2903002131200841d01a6a41d0016a2903002132200841d01a6a41d8016a2903002133200841d01a6a41a0016a290300212c200841d01a6a41a8016a290300212d200841d01a6a41b0016a290300212e200841d01a6a41b8016a290300212f200841d01a6a4180016a2903002128200841d01a6a4188016a2903002129200841d01a6a4190016a290300212a200841d01a6a4198016a290300212b200841d01a6a41e0006a2903002124200841d01a6a41c0006a2903002120200841d01a6a41206a290300211c200841d01a6a41f8006a2903002125200841d01a6a41e8006a2903002123200841d01a6a41f0006a2903002121200841d01a6a41c8006a2903002122200841d01a6a41d0006a290300211d200841d01a6a41d8006a290300211e200841d01a6a41286a290300211f200841d01a6a41306a290300212620082903b0132118200b200841d01a6a41386a290300370300201420263703002003201f3703002015290300211f2015201e3703002013290300211e2013201d370300200c290300211d200c20223703002010290300212220102021370300201129030021212011202337030020122903002123201220253703002008201c3703b01320082903d013211c200820203703d01320082903f0132120200820243703f013200d2903002127200e2903002126200f29030021252008290390142124200d202b370300200e202a370300200f202937030020082028370390142054290300212b2053290300212a2050290300212920082903b01421282054202f3703002053202e3703002050202d3703002008202c3703b0142057290300212f2056290300212e2052290300212d20082903d014212c205720333703002056203237030020522031370300200820303703d014205a2903002133205929030021322055290300213120082903f0142130205a20373703002059203637030020552035370300200820343703f014205d2903002137205c2903002136205829030021352008290390152134205d203b370300205c203a3703002058203937030020082038370390152060290300213b205f290300213a205b290300213920082903b01521382060203f370300205f203e370300205b203d3703002008203c3703b0152063290300213f2062290300213e205e290300213d20082903d015213c2063204337030020622042370300205e2041370300200820403703d01520662903002143206529030021422061290300214120082903f0152140206620473703002065204637030020612045370300200820443703f01520692903002147206829030021462064290300214520082903901621442069204b3703002068204a370300206420493703002008204837039016206c290300214b206b290300214a2067290300214920082903b0162148206c2051370300206b204f3703002067204e3703002008204c3703b01620082903d016214c2008204d3703d0160b20054209520d08200841d01a6a20084190136a41c80310bf091a200841f82d6a201641e00710bf091a200841b8266a200841d01a6a2002200841f82d6a200442002005200710b40620082903c026210520082903b8262106200841d00b6a200841b8266a41106a41b00710bf091a20064201510d0920161031410021154101210a4101210b41012116410121144101210341012113410021040c1c0b200841d8356a20084190136a41086a41c80310bf091a200841d8356a10ad01200841b0226a41086a220a200841d0226a41086a290300370300200841b0226a41106a220b200841d0226a41106a290300370300200841b0226a41186a2216200841d0226a41186a290300370300200820082903d0223703b022200841d01a6a200841b8266a41900710bf091a2000410e360208200020082903b02237020c200041146a200a2903003702002000411c6a200b290300370200200041246a2016290300370200200041306a200841d01a6a41900710bf091a200042013703000b200841d00b6a10ab020240200841bc356a280200450d0020082802b83510310b20082802f82d4123460d00200841f82d6a10ab020b410021004101210a4101210b0c0f0b2000200b3602082000410c6a200841b8266a41b40710bf091a2000420137030020084190136a10ad010c0b0b200041086a200841bc266a41b80710bf091a200042013703000b200841d00b6a10aa01024020032016460d000340201610aa01201641f8036a2116201441887c6a22140d000b0b02402002450d00200241f8036c450d00200410310b20084190136a10ad01200841d8356a10ad01410021154101210a4101210b4101210041012116410121030c0e0b200041086a200841bc266a41b80710bf091a200042013703000b200841d00b6a10aa010240200a450d00200b41f8036a210b0340200b10aa01200b41f8036a210b200a41887c6a220a0d000b0b02402004450d00200441f8036c450d00201310310b200841f0226a109a04200828028023210b20084100360280230240200b450d00024020082802fc22220a450d00200a417f6a210a0340200b2802b02b210b200a450d01200a417f6a210a0c000b0b200841003602802e2008200b3602fc2d200841003602f82d20082008280284233602842e200841f82d6a109b040b200841d0226a10b001024020082802d422220a450d00200a4198046c450d0020082802d02210310b20084190136a10ad014101210b4100210a0c090b200841f80e6a2049370300200841f00e6a2048370300200841d80e6a2045370300200841d00e6a2044370300200841b80e6a2041370300200841b00e6a2040370300200841980e6a203d370300200841900e6a203c370300200841f80d6a2039370300200841f00d6a2038370300200841d80d6a2035370300200841d00d6a2034370300200841b80d6a2031370300200841b00d6a2030370300200841980d6a202d370300200841900d6a202c370300200841f80c6a2029370300200841f00c6a2028370300200841d80c6a2025370300200841d00c6a2024370300200841b80c6a2021370300200841b00c6a2020370300200841980c6a201d370300200841900c6a201c370300200841f80b6a2019370300200841f00b6a2018370300200841900f6a204c370300200841800f6a204a370300200841e00e6a2046370300200841c00e6a2042370300200841a00e6a203e370300200841800e6a203a370300200841e00d6a2036370300200841c00d6a2032370300200841a00d6a202e370300200841800d6a202a370300200841e00c6a2026370300200841c00c6a2022370300200841a00c6a201e370300200841800c6a201a370300200841880f6a204b370300200841e80e6a2047370300200841c80e6a2043370300200841a80e6a203f370300200841880e6a203b370300200841e80d6a2037370300200841c80d6a2033370300200841a80d6a202f370300200841880d6a202b370300200841e80c6a2027370300200841c80c6a2023370300200841a80c6a201f370300200841880c6a201b370300200841e80b6a2017370300200820053703d00b200820063703d80b200820093703e00b200841d00b6a10ad01200841b8266a200841f82d6a41b40710bf091a2000410c3602082000410c6a200841b8266a41b40710bf091a2000420137030020084190136a10ad01201610f203201610310c070b20002005370308200041106a200841d00b6a41b00710bf091a20004201370300201610310c060b200041086a200841bc266a41b80710bf091a200042013703000b20084190136a10ad010240200c450d00200c4198046c210b2012210a0340200a10bf01200a4198046a210a200b41e87b6a220b0d000b0b02402002450d0020024198046c450d00201210310b200841d8356a10ad0102402013450d00201341f8036c210b2015210a0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b2004450d03200441f8036c450d03201510310c030b2000420137030020004104360208200841286a10ad014101210a4101210b0c040b1039000b200841f82d6a200841286a41b00710bf091a20004215370308200041106a200841f82d6a41b00710bf091a20004201370300200310f2030c110b200841f0226a10ad01410021034101210a4101210b4101210041012116410121150c040b4100210b4101210a0b410121000b410121160b41012103410121150b410121140b0240024002400240024002400240024020082d00f0030e0b0001020304050612121207120b200a450d110240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d11200a4198046c450d1120082802800410310c110b2014450d100240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d10200a4198046c450d1020082802800410310c100b2016450d0f0240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d0f200a4198046c450d0f20082802800410310c0f0b0240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b200841f8036a280200220a450d0e200a41f8036c450d0e20082802f40310310c0e0b2015450d0d0240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10ad010c0d0b2003450d0c0240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084190046a10ad01024020084188046a280200220b450d0020084180046a280200210a200b4198046c210b0340200a10bf01200a4198046a210a200b41e87b6a220b0d000b0b20084184046a280200220a450d0c200a4198046c450d0c20082802800410310c0c0b2000450d0b0240200841c40b6a280200450d00200841c00b6a28020010310b2008280280044123460d0b20084180046a10ab020c0b0b200b450d0a200841f8036a10ad01200841f4036a220a28020010f203200a28020010310c0a0b20032016460d000340201610aa012003201641f8036a2216470d000b0b02402002450d00200241f8036c450d00200410310b20084190136a10ad01200841d8356a10ad0142002105410021154101210a4100210b0b410121160b410121140b410121030b41012113410121040b410121020c020b2014200a460d000340200a10aa012014200a41f8036a220a470d000b0b02402004450d00200441f8036c450d00201310310b200841106a41106a200841f0226a41106a290300370300200841106a41086a200841f0226a41086a290300370300200820082903f02237031020082802d022211520082902d422210620084190136a10ad0142002105410021024101210a4101210b41012116410121144101210341012113410121040b0240024002400240024002400240024002400240024020082d00f0030e0b0001020304050608080807080b2002450d070240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d07200a4198046c450d07200828028004103120150d080c090b200a450d060240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d06200a4198046c450d06200828028004103120150d070c080b2014450d050240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10b00120084184046a280200220a450d05200a4198046c450d05200828028004103120150d060c070b2013450d040240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b200841f8036a280200220a450d04200a41f8036c450d0420082802f403103120150d050c060b200b450d030240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084180046a10ad0120150d040c050b2016450d020240200841fc036a280200220b450d00200841f4036a280200210a200b41f8036c210b0340200a10aa01200a41f8036a210a200b41887c6a220b0d000b0b0240200841f8036a280200220a450d00200a41f8036c450d0020082802f40310310b20084190046a10ad01024020084188046a280200220b450d0020084180046a280200210a200b4198046c210b0340200a10bf01200a4198046a210a200b41e87b6a220b0d000b0b20084184046a280200220a450d02200a4198046c450d02200828028004103120150d030c040b2003450d010240200841c40b6a280200450d00200841c00b6a28020010310b2008280280044123460d0120084180046a10ab0220150d020c030b2004450d00200841f8036a10ad01200841f4036a220a28020010f203200a28020010310b2015450d010b200841d01a6a41106a200841106a41106a290300370300200841d01a6a41086a200841106a41086a290300370300200820082903103703d01a20152006422088a74198046c220a6a21162006a7211302400240200a0d002015210a0c010b200841286a41106a2114200841b8266a41017221032015210a02400340200a2d0000210b200841286a200a41016a41970410bf091a0240200b4108470d00200a4198046a210a0c030b200841d00b6a200841286a41970410bf091a2008200b3a00b8262003200841d00b6a41970410bf091a200841286a2001200841d01a6a200841b8266a200710be062008290330210620082903282109200841f82d6a201441b00710bf091a20094201510d01200620057c2105200a4198046a220a2016470d000b2016210a0c010b20002006370308200041106a200841f82d6a41b00710bf091a20004201370300200a4198046a220a2016200a6b4198046d10fb0402402013450d0020134198046c450d00201510310b200841d01a6a109a04200841d01a6a41106a220a280200210b200a4100360200200b450d02024020082802dc1a220a450d00200a417f6a210a0340200b2802b02b210b200a450d01200a417f6a210a0c000b0b200841003602302008200b36022c200841003602282008200841e41a6a280200360234200841286a109b040c020b200a2016200a6b4198046d10fb0402402013450d0020134198046c450d00201510310b200841d01a6a109a04200841e01a6a220a280200210b200a4100360200200b450d00024020082802dc1a220a450d00200a417f6a210a0340200b2802b02b210b200a450d01200a417f6a210a0c000b0b200841003602302008200b36022c200841003602282008200841e41a6a280200360234200841286a109b040b20004200370300200020053703080b200110ad01200841a0396a24000bc21605137f027e017f057e017f230041f01c6b22022400200241f0086a41106a200141106a290200370300200241f0086a41086a200141086a2203290200370300200220012902003703f008200241206a200128020020012802042003280200108404200241f8186a41086a2204200241f0086a41146a280200360200200220022902fc083703f8182002200241f8186a10cb04200241c0006a410c6a200241206a41086a290300370200200241c0006a41146a200241206a41106a290300370200200241dc006a200241206a41186a280200360200200241e4006a22052002290300370200200241ec006a200241086a290300370200200241f4006a200241106a290300370200200241fc006a200241186a28020036020020024101360240200220022903203702442002410136026020024188116a41cc036a2106200241f0086a41d0036a2107200241f0086a410472210820024180156a41046a2109200241f8186a41046a210a20024180156a410c6a210b200241d00c6a210c200241f0086a41206a210d200241c0006a410472210e200241c80c6a210f41012110410121110340024002400240024002400240024020114101460d002002410c3602f0080c010b0240200228025c2201450d0020022001417f6a36025c20022802482201450d02410120022802446b2103200228024c2112024002400340201220012f01a629490d01024020012802a02922130d0020011031410221140c030b20012f01a4292112200110312003417f6a2103201321010c000b0b2001201241d0036c6a22132902102115201329020821162013280204211720132802002114201341186a2902002118200241f8186a201341206a41b00310bf091a201241016a2113200120124104746a221241f8276a2903002119201241f0276a290300211a024020034101460d00200120134102746a41a8296a280200210102402003450d0041002112034020012802a829210120032012417f6a2212470d000b0b410021130b20024180156a200241f8186a41b00310bf091a0b20024188116a20024180156a41b00310bf091a2002201336024c2002200136024820024100360244200241f8186a20024188116a41b00310bf091a41082101201a211b2019211c024020140d0020024180156a200241f8186a41b00310bf091a410a21012015211b2018211c0b200241900d6a20024180156a41b00310bf091a200241e0106a41106a2203200241f8186a41106a290300370300200241e0106a41086a22122004290300370300200241f0086a41186a201c370300200220022903f8183703e0102002201b37038009200220163703f808200220173602f408200220013602f008200d200241900d6a41b00310bf091a200f2019370300200c20022903e010370300200c41086a2012290300370300200c41106a20032903003703002002201a3703c00c200241a4056a200841cc0310bf091a200241f8046a41206a200741206a290300370300200241f8046a41186a200741186a290300370300200241f8046a41106a200741106a290300370300200241f8046a41086a200741086a290300370300200220072903003703f804410121110c060b02402010450d0020022802482101200241003602482001450d00034020012802a0292103200110312003210120030d000b0b200e20022902f818370200200e41086a2004290200370200200e41106a200241f8186a41106a290200370200200e41186a200241f8186a41186a28020036020041002110200241003602402002410c3602f008410021110b200228027c2201450d0220022001417f6a36027c20022802682201450d01410120022802646b2103200228026c2112024002400340201220012f01ae2b490d01024020012802a82b22130d0020011031410221130c030b20012f01ac2b2112200110312003417f6a2103201321010c000b0b2001201241f8036c6a22142802002113200241f8186a201441046a41f40310bf091a201241016a2112024020034101460d00200120124102746a41b02b6a280200210102402003450d0041002112034020012802b02b210120032012417f6a2212470d000b0b410021120b20024180156a200241f8186a41f40310bf091a0b20024188116a20024180156a41f40310bf091a2002201236026c2002200136026820024100360264200241900d6a20024188116a41cc0310bf091a200241e80c6a41206a2201200641206a290200370300200241e80c6a41186a2203200641186a290200370300200241e80c6a41106a2212200641106a290200370300200241e80c6a41086a2214200641086a290200370300200220062902003703e80c200241f8186a200241900d6a41cc0310bf091a20024188116a41206a221d200129030037030020024188116a41186a2201200329030037030020024188116a41106a2203201229030037030020024188116a41086a22122014290300370300200220022903e80c37038811024002402013450d00200b20022903881137020020024180156a41086a2004280200360200200b41086a2012290300370200200b41106a2003290300370200200b41186a2001290300370200200b41206a201d290300370200200220022902f81837038015410921010c010b2009200a41c80310bf091a200241e0106a41206a201d290300370300200241e0106a41186a2001290300370300200241e0106a41106a2003290300370300200241e0106a41086a201229030037030020022002290388113703e010410b21010b200241a4056a20024180156a41cc0310bf091a200241f8046a41206a200241e0106a41206a290300370300200241f8046a41186a200241e0106a41186a290300370300200241f8046a41106a200241e0106a41106a290300370300200241f8046a41086a200241e0106a41086a290300370300200220022903e0103703f8040c030b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b410c21010b024020022802f008410c460d00200241f0086a10aa010b2001410c470d0002402010450d0020022802482101200241003602482001450d000240200228025c2207450d00200228024c211220022802442103200241f0086a4104722106200241c80c6a21140340410120036b21032007417f6a2107024002400340201220012f01a629490d01024020012802a02922130d0020011031410221130c030b20012f01a4292112200110312003417f6a2103201321010c000b0b2001201241d0036c6a22112802002113200241f0086a201141046a41cc0310bf091a201241016a2111200120124104746a221241f8276a2903002119201241f0276a290300211a0240024020034101470d00201121120c010b200120114102746a41a8296a280200210102402003450d0041002112034020012802a829210120032012417f6a2212470d000b0b410021120b200241f8186a200241f0086a41cc0310bf091a0b20024180156a200241f8186a41cc0310bf091a200220133602f008200620024180156a41cc0310bf091a201420193703002002201a3703c00c200241f0086a10b2094100210320070d000b0b034020012802a0292103200110312003210120030d000b0b200510b409200241f01c6a24000f0b200241ac016a200241a4056a41cc0310bf091a20024180016a41206a2203200241f8046a41206a29030037030020024180016a41186a2212200241f8046a41186a29030037030020024180016a41106a2213200241f8046a41106a29030037030020024180016a41086a2214200241f8046a41086a290300370300200220022903f80437038001200220013602f0082008200241ac016a41cc0310bf091a200741206a2003290300370300200741186a2012290300370300200741106a2013290300370300200741086a201429030037030020072002290380013703002000200241f0086a10db050c000b0bfd0301067f230041f0076b2202240020004200370204200041106a4200370200200128020022032001280208220441f8036c6a21052001280204210620032107024002402004450d00200241f8036a410472210420032101034020012802002107200241f8036a200141046a41f40310bf091a02402007410c470d00200141f8036a21070c020b200241046a200241f8036a41f40310bf091a200220073602f8032004200241046a41f40310bf091a2000200241f8036a10db05200141f8036a22012005470d000c020b0b20052007460d0003402007220141f8036a210702400240024002400240024002400240024020012802000e0b0808080800010203040506070b200141086a280200450d07200141046a28020010310c070b200141086a280200450d06200141046a28020010310c060b200141086a10ad010c050b200141086a10ad010c040b200141086a280200450d03200141046a28020010310c030b0240200141086a280200450d00200141046a28020010310b200141106a2d00004106490d02200141186a280200450d02200141146a28020010310c020b200141086a10ad010c010b200141086a10ad01200141d0036a2d00004106490d00200141d8036a280200450d00200141d4036a28020010310b20052007470d000b0b02402006450d00200641f8036c450d00200310310b200241f0076a24000ba10a03107f057e047f230041b0056b22022400200242003703082000200110d7054108210302400240024002400240024002400240024020012802000e09000102030405060708000b410021030c070b410121030c060b410221030c050b410321030c040b410421030c030b410521030c020b410621030c010b410721030b024002402003417f6a220420034b0d002001200410bc062203450d00200041086a2105200041c0006a2106200041f8006a2107200041b0016a2108200041e8016a2109200041a0026a210a200041d8026a210b20004190036a210c200241f8046a410172210d200241c0046a410172210e4102210403402004417e6a210f41002110024020032d00000d00200241c0046a200241086a10bf06200241083a00f804024020022d00c0042210410a470d0020024188046a412f6a200d412f6a29000037000020024188046a41286a200d41286a29000037030020024188046a41206a200d41206a29000037030020024188046a41186a200d41186a29000037030020024188046a41106a200d41106a2900003703004108211020024188046a41086a200d41086a2900003703002002200d290000370388040c010b20024188046a412f6a200e412f6a29000037000020024188046a41286a200e41286a29000037030020024188046a41206a200e41206a29000037030020024188046a41186a200e41186a29000037030020024188046a41106a200e41106a29000037030020024188046a41086a200e41086a2900003703002002200e29000037038804200241f8046a10ca040b200241d0036a412f6a220320024188046a412f6a290000370000200241d0036a41286a221120024188046a41286a290300370300200241d0036a41206a20024188046a41206a2903002212370300200241d0036a41186a20024188046a41186a2903002213370300200241d0036a41106a20024188046a41106a2903002214370300200241d0036a41086a20024188046a41086a2903002215370300200220022903880422163703d003200241f8046a412f6a22172003290000370000200241f8046a41286a22182011290300370300200241f8046a41206a22112012370300200241f8046a41186a22192013370300200241f8046a41106a221a2014370300200241f8046a41086a2015370300200220163703f804024002400240024002400240024002400240200f0e0807000102030405060b0b200621032000280200417e6a41074f0d0a0c070b200721032000280200417d6a41064f0d090c060b200821032000280200417c6a41054f0d080c050b200921032000280200417b6a41044f0d070c040b200a21032000280200417a6a41034f0d060c030b200b2103200028020041796a41024f0d050c020b200c210320002903004208510d010c040b200521032000280200417f6a41084f0d030b200310ca04200320103a0000200320022903f80437000141082110200341096a200241f8046a41086a290300370000200341116a201a290300370000200341196a2019290300370000200341216a2011290300370000200341296a2018290300370000200341306a201729000037000002400240024002400240024002400240024020012802000e09000102030405060708000b410021100c070b410121100c060b410221100c050b410321100c040b410421100c030b410521100c020b410621100c010b410721100b201020046b220320104b0d01200441016a21042001200310bc0622030d000b0b200241086a10ad01200241b0056a24000f0b41919bc400412f41c09bc4001068000bef3101037f230041a00a6b2202240041002103024020002802002204410b4b0d00410120047441c01971450d00200041086a2103024002400240024002400240024002400240024020012802000e09010203040506070800010b200241d0036a200141086a10bf0420024188046a200141c0006a10bf04200241c0046a200141f8006a10bf04200241f8046a200141b0016a10bf04200241b0056a200141e8016a10bf04200241e8056a200141a0026a10bf04200241a0066a200141d8026a10bf04200241086a20014190036a10bf0420024190076a200241d0036a41306a290300370300200241d8066a41306a200241d0036a41286a290300370300200241d8066a41286a200241d0036a41206a290300370300200241d8066a41206a200241d0036a41186a290300370300200241d8066a41186a200241d0036a41106a290300370300200241d8066a41106a200241d0036a41086a290300370300200241d8066a41c0006a200229038804370300200241a0076a20024188046a41086a290300370300200241a8076a20024188046a41106a290300370300200241b0076a20024188046a41186a290300370300200241b8076a20024188046a41206a290300370300200241c0076a20024188046a41286a290300370300200241c8076a20024188046a41306a290300370300200220022903d0033703e00620024180086a200241c0046a41306a290300370300200241f8076a200241c0046a41286a290300370300200241f0076a200241c0046a41206a290300370300200241e8076a200241c0046a41186a290300370300200241e0076a200241c0046a41106a290300370300200241d8076a200241c0046a41086a290300370300200241d8066a41f8006a20022903c004370300200241b8086a200241f8046a41306a290300370300200241b0086a200241f8046a41286a290300370300200241a8086a200241f8046a41206a290300370300200241a0086a200241f8046a41186a29030037030020024198086a200241f8046a41106a29030037030020024190086a200241f8046a41086a290300370300200241d8066a41b0016a20022903f804370300200241f0086a200241b0056a41306a290300370300200241e8086a200241b0056a41286a290300370300200241e0086a200241b0056a41206a290300370300200241d8086a200241b0056a41186a290300370300200241d0086a200241b0056a41106a290300370300200241c8086a200241b0056a41086a290300370300200241d8066a41e8016a20022903b005370300200241a8096a200241e8056a41306a290300370300200241a0096a200241e8056a41286a29030037030020024198096a200241e8056a41206a29030037030020024190096a200241e8056a41186a29030037030020024188096a200241e8056a41106a29030037030020024180096a200241e8056a41086a290300370300200241d8066a41a0026a20022903e805370300200241e0096a200241a0066a41306a290300370300200241d8096a200241a0066a41286a290300370300200241d0096a200241a0066a41206a290300370300200241c8096a200241a0066a41186a290300370300200241c0096a200241a0066a41106a290300370300200241b8096a200241a0066a41086a290300370300200241d8066a41d8026a20022903a006370300200241980a6a200241086a41306a290300370300200241900a6a200241086a41286a290300370300200241880a6a200241086a41206a290300370300200241800a6a200241086a41186a290300370300200241f8096a200241086a41106a290300370300200241f0096a200241086a41086a290300370300200241d8066a4190036a2002290308370300200242083703d8060c080b200242003703d8060c070b200241086a200141086a10bf0420024190076a200241086a41306a290300370300200241d8066a41306a200241086a41286a290300370300200241d8066a41286a200241086a41206a290300370300200241d8066a41206a200241086a41186a290300370300200241d8066a41186a200241086a41106a290300370300200241d8066a41106a200241086a41086a290300370300200242013703d806200220022903083703e0060c060b200241a0066a200141086a10bf04200241086a200141c0006a10bf0420024190076a200241a0066a41306a290300370300200241d8066a41306a200241a0066a41286a290300370300200241d8066a41286a200241a0066a41206a290300370300200241d8066a41206a200241a0066a41186a290300370300200241d8066a41186a200241a0066a41106a290300370300200241d8066a41106a200241a0066a41086a290300370300200241d8066a41c0006a2002290308370300200241a0076a200241086a41086a290300370300200241a8076a200241086a41106a290300370300200241b0076a200241086a41186a290300370300200241b8076a200241086a41206a290300370300200241c0076a200241086a41286a290300370300200241c8076a200241086a41306a290300370300200220022903a0063703e006200242023703d8060c050b200241e8056a200141086a10bf04200241a0066a200141c0006a10bf04200241086a200141f8006a10bf0420024190076a200241e8056a41306a290300370300200241d8066a41306a200241e8056a41286a290300370300200241d8066a41286a200241e8056a41206a290300370300200241d8066a41206a200241e8056a41186a290300370300200241d8066a41186a200241e8056a41106a290300370300200241d8066a41106a200241e8056a41086a290300370300200241d8066a41c0006a20022903a006370300200241a0076a200241a0066a41086a290300370300200241a8076a200241a0066a41106a290300370300200241b0076a200241a0066a41186a290300370300200241b8076a200241a0066a41206a290300370300200241c0076a200241a0066a41286a290300370300200241c8076a200241a0066a41306a290300370300200220022903e8053703e00620024180086a200241086a41306a290300370300200241f8076a200241086a41286a290300370300200241f0076a200241086a41206a290300370300200241e8076a200241086a41186a290300370300200241e0076a200241086a41106a290300370300200241d8076a200241086a41086a290300370300200241d8066a41f8006a2002290308370300200242033703d8060c040b200241b0056a200141086a10bf04200241e8056a200141c0006a10bf04200241a0066a200141f8006a10bf04200241086a200141b0016a10bf0420024190076a200241b0056a41306a290300370300200241d8066a41306a200241b0056a41286a290300370300200241d8066a41286a200241b0056a41206a290300370300200241d8066a41206a200241b0056a41186a290300370300200241d8066a41186a200241b0056a41106a290300370300200241d8066a41106a200241b0056a41086a290300370300200241d8066a41c0006a20022903e805370300200241a0076a200241e8056a41086a290300370300200241a8076a200241e8056a41106a290300370300200241b0076a200241e8056a41186a290300370300200241b8076a200241e8056a41206a290300370300200241c0076a200241e8056a41286a290300370300200241c8076a200241e8056a41306a290300370300200220022903b0053703e00620024180086a200241a0066a41306a290300370300200241f8076a200241a0066a41286a290300370300200241f0076a200241a0066a41206a290300370300200241e8076a200241a0066a41186a290300370300200241e0076a200241a0066a41106a290300370300200241d8076a200241a0066a41086a290300370300200241d8066a41f8006a20022903a006370300200241b8086a200241086a41306a290300370300200241b0086a200241086a41286a290300370300200241a8086a200241086a41206a290300370300200241a0086a200241086a41186a29030037030020024198086a200241086a41106a29030037030020024190086a200241086a41086a290300370300200241d8066a41b0016a2002290308370300200242043703d8060c030b200241f8046a200141086a10bf04200241b0056a200141c0006a10bf04200241e8056a200141f8006a10bf04200241a0066a200141b0016a10bf04200241086a200141e8016a10bf0420024190076a200241f8046a41306a290300370300200241d8066a41306a200241f8046a41286a290300370300200241d8066a41286a200241f8046a41206a290300370300200241d8066a41206a200241f8046a41186a290300370300200241d8066a41186a200241f8046a41106a290300370300200241d8066a41106a200241f8046a41086a290300370300200241d8066a41c0006a20022903b005370300200241a0076a200241b0056a41086a290300370300200241a8076a200241b0056a41106a290300370300200241b0076a200241b0056a41186a290300370300200241b8076a200241b0056a41206a290300370300200241c0076a200241b0056a41286a290300370300200241c8076a200241b0056a41306a290300370300200220022903f8043703e00620024180086a200241e8056a41306a290300370300200241f8076a200241e8056a41286a290300370300200241f0076a200241e8056a41206a290300370300200241e8076a200241e8056a41186a290300370300200241e0076a200241e8056a41106a290300370300200241d8076a200241e8056a41086a290300370300200241d8066a41f8006a20022903e805370300200241b8086a200241a0066a41306a290300370300200241b0086a200241a0066a41286a290300370300200241a8086a200241a0066a41206a290300370300200241a0086a200241a0066a41186a29030037030020024198086a200241a0066a41106a29030037030020024190086a200241a0066a41086a290300370300200241d8066a41b0016a20022903a006370300200241f0086a200241086a41306a290300370300200241e8086a200241086a41286a290300370300200241e0086a200241086a41206a290300370300200241d8086a200241086a41186a290300370300200241d0086a200241086a41106a290300370300200241c8086a200241086a41086a290300370300200241d8066a41e8016a2002290308370300200242053703d8060c020b200241c0046a200141086a10bf04200241f8046a200141c0006a10bf04200241b0056a200141f8006a10bf04200241e8056a200141b0016a10bf04200241a0066a200141e8016a10bf04200241086a200141a0026a10bf0420024190076a200241c0046a41306a290300370300200241d8066a41306a200241c0046a41286a290300370300200241d8066a41286a200241c0046a41206a290300370300200241d8066a41206a200241c0046a41186a290300370300200241d8066a41186a200241c0046a41106a290300370300200241d8066a41106a200241c0046a41086a290300370300200241d8066a41c0006a20022903f804370300200241a0076a200241f8046a41086a290300370300200241a8076a200241f8046a41106a290300370300200241b0076a200241f8046a41186a290300370300200241b8076a200241f8046a41206a290300370300200241c0076a200241f8046a41286a290300370300200241c8076a200241f8046a41306a290300370300200220022903c0043703e00620024180086a200241b0056a41306a290300370300200241f8076a200241b0056a41286a290300370300200241f0076a200241b0056a41206a290300370300200241e8076a200241b0056a41186a290300370300200241e0076a200241b0056a41106a290300370300200241d8076a200241b0056a41086a290300370300200241d8066a41f8006a20022903b005370300200241b8086a200241e8056a41306a290300370300200241b0086a200241e8056a41286a290300370300200241a8086a200241e8056a41206a290300370300200241a0086a200241e8056a41186a29030037030020024198086a200241e8056a41106a29030037030020024190086a200241e8056a41086a290300370300200241d8066a41b0016a20022903e805370300200241f0086a200241a0066a41306a290300370300200241e8086a200241a0066a41286a290300370300200241e0086a200241a0066a41206a290300370300200241d8086a200241a0066a41186a290300370300200241d0086a200241a0066a41106a290300370300200241c8086a200241a0066a41086a290300370300200241d8066a41e8016a20022903a006370300200241a8096a200241086a41306a290300370300200241a0096a200241086a41286a29030037030020024198096a200241086a41206a29030037030020024190096a200241086a41186a29030037030020024188096a200241086a41106a29030037030020024180096a200241086a41086a290300370300200241d8066a41a0026a2002290308370300200242063703d8060c010b20024188046a200141086a10bf04200241c0046a200141c0006a10bf04200241f8046a200141f8006a10bf04200241b0056a200141b0016a10bf04200241e8056a200141e8016a10bf04200241a0066a200141a0026a10bf04200241086a200141d8026a10bf0420024190076a20024188046a41306a290300370300200241d8066a41306a20024188046a41286a290300370300200241d8066a41286a20024188046a41206a290300370300200241d8066a41206a20024188046a41186a290300370300200241d8066a41186a20024188046a41106a290300370300200241d8066a41106a20024188046a41086a290300370300200241d8066a41c0006a20022903c004370300200241a0076a200241c0046a41086a290300370300200241a8076a200241c0046a41106a290300370300200241b0076a200241c0046a41186a290300370300200241b8076a200241c0046a41206a290300370300200241c0076a200241c0046a41286a290300370300200241c8076a200241c0046a41306a29030037030020022002290388043703e00620024180086a200241f8046a41306a290300370300200241f8076a200241f8046a41286a290300370300200241f0076a200241f8046a41206a290300370300200241e8076a200241f8046a41186a290300370300200241e0076a200241f8046a41106a290300370300200241d8076a200241f8046a41086a290300370300200241d8066a41f8006a20022903f804370300200241b8086a200241b0056a41306a290300370300200241b0086a200241b0056a41286a290300370300200241a8086a200241b0056a41206a290300370300200241a0086a200241b0056a41186a29030037030020024198086a200241b0056a41106a29030037030020024190086a200241b0056a41086a290300370300200241d8066a41b0016a20022903b005370300200241f0086a200241e8056a41306a290300370300200241e8086a200241e8056a41286a290300370300200241e0086a200241e8056a41206a290300370300200241d8086a200241e8056a41186a290300370300200241d0086a200241e8056a41106a290300370300200241c8086a200241e8056a41086a290300370300200241d8066a41e8016a20022903e805370300200241a8096a200241a0066a41306a290300370300200241a0096a200241a0066a41286a29030037030020024198096a200241a0066a41206a29030037030020024190096a200241a0066a41186a29030037030020024188096a200241a0066a41106a29030037030020024180096a200241a0066a41086a290300370300200241d8066a41a0026a20022903a006370300200241e0096a200241086a41306a290300370300200241d8096a200241086a41286a290300370300200241d0096a200241086a41206a290300370300200241c8096a200241086a41186a290300370300200241c0096a200241086a41106a290300370300200241b8096a200241086a41086a290300370300200241d8066a41d8026a2002290308370300200242073703d8060b200241086a2003200241d8066a10bd064100210320022903084209510d00200241d8066a200241086a41c80310bf091a02400240024002400240024002400240024020022802d8060e080800010203040506070b200241e0066a10ca040c070b200241e0066a10ca0420024198076a10ca040c060b200241e0066a10ca0420024198076a10ca04200241d0076a10ca040c050b200241e0066a10ca0420024198076a10ca04200241d0076a10ca0420024188086a10ca040c040b200241e0066a10ca0420024198076a10ca04200241d0076a10ca0420024188086a10ca04200241c0086a10ca040c030b200241e0066a10ca0420024198076a10ca04200241d0076a10ca0420024188086a10ca04200241c0086a10ca04200241f8086a10ca040c020b200241e0066a10ca0420024198076a10ca04200241d0076a10ca0420024188086a10ca04200241c0086a10ca04200241f8086a10ca04200241b0096a10ca040c010b200241e0066a10ca0420024198076a10ca04200241d0076a10ca0420024188086a10ca04200241c0086a10ca04200241f8086a10ca04200241b0096a10ca04200241e8096a10ca040b410121030b200241a00a6a240020030bc10201027f230041c0076b22022400200241086a2203420037030020024106360200200241e40036028404200241013a008004200242013703f8030240024002402002200010c108450d00200241f8036a200110c208450d00200241f8036a10ad010c010b200241f8036a10ad01200210aa012003420037030020024106360200200241ee0036028404200241013a008004200242013703f80302402002200010c108450d00200241f8036a200110c208450d00200241f8036a10ad010c010b200241f8036a10ad01200210aa01200241086a420037030020024106360200200241f8003602840441012103200241013a008004200242013703f803024002402002200010c108450d00200241f8036a200110c2080d010b410021030b200241f8036a10ad01200210aa010c010b200210aa01410121030b200241c0076a240020030bf10206037f017e037f017e017f017e230041c0166b22022400200241233602f80e410021030340200120036a220429030021052004200241f80e6a20036a220629030037030020062005370300200441086a220729030021052007200641086a2208290300370300200441106a220729030021092007200641106a220a290300370300200441186a2204290300210b2004200641186a22062903003703002006200b370300200a200937030020082005370300200341206a220341a107490d000b20022802f80e2104200241bc076a200241f80e6a41047241bc0710bf091a02400240024020044123470d002002200141c8076a2802003602bc16200220012802c0073602b816200241f80e6a200241b8166a10b701024020022802f80e22044123460d002002200241f80e6a41047241bc0710bf091a0c020b200041233602000c020b2002200241bc076a41bc0710bf091a0b20002004360200200041046a200241bc0710bf091a0b200241c0166a24000bc41503037f017e097f230041a0206b22032400200341bc0a6a41026a22042001410b6a2d00003a0000200320012f00093b01bc0a20012d0008210520012903002106200128020c210720034180076a200141106a41b80310bf091a024002400240200241ff01714101460d00200341fc066a41026a20042d00003a0000200320032f01bc0a3b01fc06200341c0036a20034180076a41b80310bf091a0c010b200341cc1c6a41026a20042d00003a0000200320032f01bc0a3b01cc1c200341c00a6a20034180076a41b80310bf091a024002400240024020064201520d00200541ff01714101460d010b200341e21c6a200341cc1c6a41026a2d00003a0000200320053a00df1c200320063700d71c200320032f01cc1c3b00e01c200320073600e31c200341e71c6a200341c00a6a41b80310bf091a20034180196a200341d71c6a41c80310bf091a200341880e6a20034180196a41c80310bf091a200341d01c6a200341880e6a10d80541012101024020032d00d01c4101470d00200341f4186a41026a200341e31c6a2d00003a0000200320032f00e11c3b01f418200341e01c6a2d00002105200341e41c6a280200210720032903d81c2106200341b8156a200341e81c6a41b80310bf091a0c030b200341f4186a41026a200341e31c6a2d00003a0000200341c0156a200341f01c6a2d00003a0000200320032800d41c3600fb18200320032800d11c3602f8182003200341e11c6a2f00003b01f4182003200341e81c6a2903003703b815200341e01c6a2d00002105200341e41c6a280200210720032903d81c21060c010b200320073602880e200341d01c6a200341880e6a10d905200341930e6a200341cc1c6a41026a2d00003a0000200341013a00900e200342013703880e200320032f01cc1c3b00910e200320073602940e200341980e6a200341c00a6a41b80310bf091a200341880e6a10ad01200341f4186a41026a200341e21c6a2d00003a0000200341c0156a200341ef1c6a2d00003a0000200320032800d01c3602f8182003200341d31c6a2800003600fb18200320032f00e01c3b01f418200320032900e71c3703b81520032900d71c210620032d00df1c210520032800e31c21070b410021010b200341ac156a41026a2204200341f4186a41026a2d00003a0000200320032800fb183600b315200320032802f8183602b015200320032f01f4183b01ac15200341f0116a200341b8156a41b80310bf091a02402001450d00200341fc066a41026a20042d00003a0000200320032f01ac153b01fc06200341c0036a200341f0116a41b80310bf091a0c010b200341e4116a41026a220120042d00003a0000200341d8116a41086a2202200341f0116a41086a2d00003a0000200320032800b3153600eb11200320032802b0153602e811200320032f01ac153b01e411200320032900f0113703d811200320032800eb1136008b0e200320032802e8113602880e200320053a00970e2003200637008f0e2003419a0e6a20012d00003a00002003200736009b0e200320032f01e4113b01980e200341a70e6a20022d00003a0000200320032903d81137009f0e200341d01c6a200341880e6a108a02200341fc066a41026a2201200341df1c6a2d00003a0000200341c0036a41086a200341ec1c6a290200370300200341c0036a41106a200341f41c6a2902003703002003200341dd1c6a2f00003b01fc062003200341d01c6a41146a2902003703c003200341d01c6a41106a280200210220032802d01c210520032902d41c2106200041106a200341dc1c6a2d00003a0000200041086a20063702002000200536020420004100360200200041146a2002360200200020032f01fc063b0011200041136a20012d00003a0000200041186a200341c0036a41b80310bf091a0c010b200341bc036a41026a2204200341fc066a41026a2d00003a0000200320032f01fc063b01bc032003200341c0036a41b80310bf09220141d01c6a41106a20053a0000200141e31c6a20042d00003a0000200141e41c6a22042007360200200120063703d81c200120012f01bc033b00e11c200120023a00d01c200141d01c6a41186a200141b80310bf091a200141d01c6a41086a2108024002400240024002400240200241ff017122090d0020064201520d00200541ff01714101460d010b200141c00a6a41186a2205200141f41c6a2207290200370300200141c00a6a41106a220a200141ec1c6a220b290200370300200141c00a6a41086a220c2004290200370300200120012902dc1c3703c00a20012802fc1c210d200141880e6a200141801d6a220e41a00310bf091a200141f0116a41086a220f200c290300370300200141f0116a41106a220c200a290300370300200141f0116a41186a220a2005290300370300200120012903c00a3703f011200141b8156a200141880e6a41a00310bf091a2004200f290300370200200b200c2903003702002007200a290300370200200141fc1c6a200d360200200120063e02d81c200120012903f0113702dc1c200120023a00d01c200e200141b8156a41a00310bf091a20090d0220012903d81c4201520d02200141e01c6a22052d00004102470d0220012802841d0e03010201020b4110102f2202450d02200241f8c8c00036020c2002410136020820024281808080103702004110102f2205450d02200541e0c8c00036020c20054101360208200542818080801037020020022002280200417f6a2204360200024020040d002002280208200228020c2802001102000240200228020c280204450d00200228020810310b200241046a22042004280200417f6a220436020020040d00200210310b200141c00a6a41086a220220014180196a41086a290200370300200141c00a6a41106a220420014180196a41106a290200370300200141c00a6a41186a220920014180196a41186a290200370300200120012f0180073b01c00320012001290280193703c00a200810ad01200041013a000420004100360200200041086a2007360200200020012f01c0033b01062000410c6a20012903c00a370200200041146a20022903003702002000411c6a2004290300370200200041246a20092903003702002000412c6a2005360200200041306a200141880e6a41a00310bf091a0c040b200141881d6a2802002107200128028c1d210220014192196a200541136a2d00003a00002001200141f01c6a2d00003a008f192001200141e81c6a29030037008719200120012802f41c3600931920012005280001360280192001200541046a280000360083192001200541116a2f00003b0190192001419f196a200141801d6a2d00003a00002001200141f81c6a29030037009719200141880e6a20014180196a108a0202400240024041010d002002450d002007103120012903d81c4201520d010b20012d00e01c4102460d01200510ca040c010b200810ad010b20004100360200200041046a200141880e6a41cc0310bf091a0c030b200141c00a6a2001418c0e6a200841c80310bf09220741c80310bf091a200120023a00d01c200141d01c6a41086a200141c00a6a41c80310bf0921050240200241ff01714102470d0020012903d81c4201520d00200141e01c6a2d00004101470d0020012802e41c41e807490d020b20014180196a2007200541c80310bf0941c80310bf091a200041086a20014180196a41c80310bf091a200041013602000c020b1039000b200141880e6a108902200510ad0120004100360200200041046a200141880e6a41cc0310bf091a0b200341a0206a24000b8a0401017f410021020240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020010e08000102030405062a2b0b2000280200417f6a0e08060708090a0b0c0d2a0b2000280200417e6a0e070d0e0f10111213290b2000280200417d6a0e06131415161718280b2000280200417c6a0e0518191a1b1c270b2000280200417b6a0e041c1d1e1f260b2000280200417a6a0e031f2021250b200028020041796a0e022122240b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041086a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041c0006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041f8006a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041b0016a0f0b200041e8016a0f0b200041e8016a0f0b200041e8016a0f0b200041e8016a0f0b200041a0026a0f0b200041a0026a0f0b200041a0026a0f0b200041d8026a0f0b200041d8026a0f0b20002903004208520d0020004190036a21020b20020b945202197f387e230041d0126b22032400200110ae0921044108210541082106024002400240024002400240024002400240200228020022070e09000102030405060708000b410021060c070b410121060c060b410221060c050b410321060c040b410421060c030b410521060c020b410621060c010b410721060b20042006200210ae096b22064b210802400240024002400240024002400240024020012802000e09000102030405060708000b410021050c070b410121050c060b410221050c050b410321050c040b410421050c030b410521050c020b410621050c010b410721050b2006200420081b21064108210402400240024002400240024002400240024020070e09000102030405060708000b410021040c070b410121040c060b410221040c050b410321040c040b410421040c030b410521040c020b410621040c010b410721040b024002400240200520064101746b20046a4105490d002000200241c80310bf091a0c010b200341086a200241c80310bf091a200341106a2104200341c8006a210520034180016a2106200341b8016a2107200341f0016a2108200341a8026a2109200341e0026a210a20034198036a210b03404100210202400240024002400240024002400240024020032802080e09080102030405060700080b200b21020c070b200421020c060b200521020c050b200621020c040b200721020c030b200821020c020b200921020c010b200a21020b02402001290300500d002002450d0020012d000841ff01710d0020022d0000450d00200341900b6a200341086a10ad09024020032d00900b410a460d00200341900b6a10ca040b200341900b6a200110bf0620032d00900b410a460d01200341900b6a10ca040c010b0b200341d0036a200341086a41c80310bf091a200341900b6a200341d0036a10ad09024020032d00900b410a460d0020014190036a2102200141d8026a2104200141e8016a2105200141b0016a2106200141f8006a2107200141086a2109200141a0026a210a200141c0006a210b200341900b6a4190036a210c200341900b6a41d8026a210d200341900b6a41e8016a210e200341900b6a41b0016a210f200341900b6a41f8006a2110200341900b6a41086a2108200341900b6a41a0026a2111200341900b6a41c0006a2112034020034198076a41306a2213200341900b6a41306a221429030037030020034198076a41286a2215200341900b6a41286a221629030037030020034198076a41206a2217200341900b6a41206a29030037030020034198076a41186a2218200341900b6a41186a221929030037030020034198076a41106a221a200341900b6a41106a29030037030020034198076a41086a221b2008290300370300200320032903900b370398072001290300211c20014200370300200141186a290300211d200141286a290300211e200141306a290300211f200141386a2903002120200141c8006a2903002121200141d0006a2903002122200141d8006a2903002123200141e8006a2903002124200141f0006a29030021252007290300212620014188016a290300212720014190016a290300212820014198016a2903002129200141a8016a290300212a2006290300212b200141b8016a290300212c200141c8016a290300212d200141d0016a290300212e200141d8016a290300212f20052903002130200141f0016a2903002131200141f8016a290300213220014188026a290300213320014190026a290300213420014198026a2903002135200141a8026a2903002136200141b0026a2903002137200141b8026a2903002138200141c8026a2903002139200141d0026a290300213a2004290300213b200141e8026a290300213c200141f0026a290300213d200141f8026a290300213e20014188036a290300213f2002290300214020014198036a2903002141200141a8036a2903002142200141b0036a290300214320012903c00321442001290308214520012903102146200129032021472001290340214820012903602149200129038001214a20012903a001214b20012903c001214c20012903e001214d200129038002214e20012903a002214f20012903c002215020012903e0022151200129038003215220012903a0032153200341900b6a41b8036a200141b8036a290300370300200341900b6a41b0036a2043370300200341900b6a41a8036a2042370300200341900b6a4198036a2041370300200c2040370300200341900b6a4188036a203f370300200341900b6a41f8026a203e370300200341900b6a41f0026a203d370300200341900b6a41e8026a203c370300200d203b370300200341900b6a41d0026a203a370300200341900b6a41c8026a2039370300200341900b6a41b8026a2038370300200341900b6a41b0026a2037370300200341900b6a41a8026a2036370300200341900b6a4198026a2035370300200341900b6a4190026a2034370300200341900b6a4188026a2033370300200341900b6a41f8016a2032370300200341900b6a41f0016a2031370300200e2030370300200341900b6a41d8016a202f370300200341900b6a41d0016a202e370300200341900b6a41c8016a202d370300200341900b6a41b8016a202c370300200f202b370300200341900b6a41a8016a202a370300200341900b6a4198016a2029370300200341900b6a4190016a2028370300200341900b6a4188016a202737030020102026370300200341900b6a41f0006a2025370300200341900b6a41e8006a2024370300200341900b6a41d8006a2023370300200341900b6a41d0006a2022370300200341900b6a41c8006a2021370300200341900b6a41386a20203703002014201f3703002016201e3703002019201d370300200320533703b00e200320523703900e200320513703f00d200320503703d00d2003204f3703b00d2003204e3703900d2003204d3703f00c2003204c3703d00c2003204b3703b00c2003204a3703900c200320493703f00b200320483703d00b200320473703b00b200320463703a00b200320453703980b2003201c3703900b200320443703d00e200341d80e6a41306a22162013290300370300200341d80e6a41286a22132015290300370300200341d80e6a41206a22152017290300370300200341d80e6a41186a22172018290300370300200341d80e6a41106a2218201a290300370300200341d80e6a41086a2219201b29030037030020032003290398073703d80e02400240024002400240024002400240024002400240201ca722140e080800010203040506070b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e0114202211c0c080b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200320122903003703a8114203211c0c070b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200341f0106a41306a201041306a290300370300200341f0106a41286a201041286a290300370300200341f0106a41206a201041206a290300370300200341f0106a41186a201041186a290300370300200341f0106a41106a201041106a290300370300200341f0106a41086a201041086a290300370300200320122903003703a811200320102903003703f0104204211c0c060b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200341f0106a41306a201041306a290300370300200341f0106a41286a201041286a290300370300200341f0106a41206a201041206a290300370300200341f0106a41186a201041186a290300370300200341f0106a41106a201041106a290300370300200341f0106a41086a201041086a290300370300200320122903003703a811200320102903003703f010200341b8106a41306a200f41306a290300370300200341b8106a41286a200f41286a290300370300200341b8106a41206a200f41206a290300370300200341b8106a41186a200f41186a290300370300200341b8106a41106a200f41106a290300370300200341b8106a41086a200f41086a2903003703002003200f2903003703b8104205211c0c050b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200341f0106a41306a201041306a290300370300200341f0106a41286a201041286a290300370300200341f0106a41206a201041206a290300370300200341f0106a41186a201041186a290300370300200341f0106a41106a201041106a290300370300200341f0106a41086a201041086a290300370300200320122903003703a811200320102903003703f010200341b8106a41306a200f41306a290300370300200341b8106a41286a200f41286a290300370300200341b8106a41206a200f41206a290300370300200341b8106a41186a200f41186a290300370300200341b8106a41106a200f41106a290300370300200341b8106a41086a200f41086a2903003703002003200f2903003703b81020034180106a41306a200e41306a29030037030020034180106a41286a200e41286a29030037030020034180106a41206a200e41206a29030037030020034180106a41186a200e41186a29030037030020034180106a41106a200e41106a29030037030020034180106a41086a200e41086a2903003703002003200e290300370380104206211c0c040b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200341f0106a41306a201041306a290300370300200341f0106a41286a201041286a290300370300200341f0106a41206a201041206a290300370300200341f0106a41186a201041186a290300370300200341f0106a41106a201041106a290300370300200341f0106a41086a201041086a290300370300200320122903003703a811200320102903003703f010200341b8106a41306a200f41306a290300370300200341b8106a41286a200f41286a290300370300200341b8106a41206a200f41206a290300370300200341b8106a41186a200f41186a290300370300200341b8106a41106a200f41106a290300370300200341b8106a41086a200f41086a2903003703002003200f2903003703b81020034180106a41306a200e41306a29030037030020034180106a41286a200e41286a29030037030020034180106a41206a200e41206a29030037030020034180106a41186a200e41186a29030037030020034180106a41106a200e41106a29030037030020034180106a41086a200e41086a2903003703002003200e29030037038010200341c80f6a41306a201141306a290300370300200341c80f6a41286a201141286a290300370300200341c80f6a41206a201141206a290300370300200341c80f6a41186a201141186a290300370300200341c80f6a41106a201141106a290300370300200341c80f6a41086a201141086a290300370300200320112903003703c80f4207211c0c030b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200341e0116a41086a200841086a290300370300200341e0116a41106a200841106a290300370300200341e0116a41186a200841186a290300370300200341e0116a41206a200841206a290300370300200341e0116a41286a200841286a290300370300200341e0116a41306a200841306a290300370300200320032903d80e37039812200320082903003703e011200341a8116a41306a201241306a290300370300200341a8116a41286a201241286a290300370300200341a8116a41206a201241206a290300370300200341a8116a41186a201241186a290300370300200341a8116a41106a201241106a290300370300200341a8116a41086a201241086a290300370300200341f0106a41306a201041306a290300370300200341f0106a41286a201041286a290300370300200341f0106a41206a201041206a290300370300200341f0106a41186a201041186a290300370300200341f0106a41106a201041106a290300370300200341f0106a41086a201041086a290300370300200320122903003703a811200320102903003703f010200341b8106a41306a200f41306a290300370300200341b8106a41286a200f41286a290300370300200341b8106a41206a200f41206a290300370300200341b8106a41186a200f41186a290300370300200341b8106a41106a200f41106a290300370300200341b8106a41086a200f41086a2903003703002003200f2903003703b81020034180106a41306a200e41306a29030037030020034180106a41286a200e41286a29030037030020034180106a41206a200e41206a29030037030020034180106a41186a200e41186a29030037030020034180106a41106a200e41106a29030037030020034180106a41086a200e41086a2903003703002003200e29030037038010200341c80f6a41306a201141306a290300370300200341c80f6a41286a201141286a290300370300200341c80f6a41206a201141206a290300370300200341c80f6a41186a201141186a290300370300200341c80f6a41106a201141106a290300370300200341c80f6a41086a201141086a290300370300200320112903003703c80f200341900f6a41306a200d41306a290300370300200341900f6a41286a200d41286a290300370300200341900f6a41206a200d41206a290300370300200341900f6a41186a200d41186a290300370300200341900f6a41106a200d41106a290300370300200341900f6a41086a200d41086a2903003703002003200d2903003703900f4208211c0c020b200341d80a6a41306a200841306a290300370300200341d80a6a41286a200841286a290300370300200341d80a6a41206a200841206a290300370300200341d80a6a41186a200841186a290300370300200341d80a6a41106a200841106a290300370300200341d80a6a41086a200841086a290300370300200341a00a6a41086a201241086a290300370300200341a00a6a41106a201241106a290300370300200341a00a6a41186a201241186a290300370300200341a00a6a41206a201241206a290300370300200341a00a6a41286a201241286a290300370300200341a00a6a41306a201241306a290300370300200320082903003703d80a200320122903003703a00a200341e8096a41306a201041306a290300370300200341e8096a41286a201041286a290300370300200341e8096a41206a201041206a290300370300200341e8096a41186a201041186a290300370300200341e8096a41106a201041106a290300370300200341e8096a41086a201041086a290300370300200341b0096a41306a200f41306a290300370300200341b0096a41286a200f41286a290300370300200341b0096a41206a200f41206a290300370300200341b0096a41186a200f41186a290300370300200341b0096a41106a200f41106a290300370300200341b0096a41086a200f41086a290300370300200320102903003703e8092003200f2903003703b009200341f8086a41306a200e41306a290300370300200341f8086a41286a200e41286a290300370300200341f8086a41206a200e41206a290300370300200341f8086a41186a200e41186a290300370300200341f8086a41106a200e41106a290300370300200341f8086a41086a200e41086a2903003703002003200e2903003703f808200341c0086a41306a201141306a290300370300200341c0086a41286a201141286a290300370300200341c0086a41206a201141206a290300370300200341c0086a41186a201141186a290300370300200341c0086a41106a201141106a290300370300200341c0086a41086a201141086a290300370300200320112903003703c00820034188086a41306a200d41306a29030037030020034188086a41286a200d41286a29030037030020034188086a41206a200d41206a29030037030020034188086a41186a200d41186a29030037030020034188086a41106a200d41106a29030037030020034188086a41086a200d41086a2903003703002003200d29030037038808200341d0076a41306a200c41306a290300370300200341d0076a41286a200c41286a290300370300200341d0076a41206a200c41206a290300370300200341d0076a41186a200c41186a290300370300200341d0076a41106a200c41106a290300370300200341d0076a41086a200c41086a2903003703002003200c2903003703d007200341d80e6a10ca04410121130c020b20034198126a41306a201629030037030020034198126a41286a201329030037030020034198126a41206a201529030037030020034198126a41186a201729030037030020034198126a41106a201829030037030020034198126a41086a2019290300370300200320032903d80e370398124201211c0b200341d80a6a41306a20034198126a41306a290300370300200341d80a6a41286a20034198126a41286a290300370300200341d80a6a41206a20034198126a41206a290300370300200341d80a6a41186a20034198126a41186a290300370300200341d80a6a41106a20034198126a41106a290300370300200341d80a6a41086a20034198126a41086a290300370300200341a00a6a41086a200341e0116a41086a290300370300200341a00a6a41106a200341e0116a41106a290300370300200341a00a6a41186a200341e0116a41186a290300370300200341a00a6a41206a200341e0116a41206a290300370300200341a00a6a41286a200341e0116a41286a290300370300200341a00a6a41306a200341e0116a41306a29030037030020032003290398123703d80a200320032903e0113703a00a200341e8096a41306a200341a8116a41306a290300370300200341e8096a41286a200341a8116a41286a290300370300200341e8096a41206a200341a8116a41206a290300370300200341e8096a41186a200341a8116a41186a290300370300200341e8096a41106a200341a8116a41106a290300370300200341e8096a41086a200341a8116a41086a290300370300200341b0096a41086a200341f0106a41086a290300370300200341b0096a41106a200341f0106a41106a290300370300200341b0096a41186a200341f0106a41186a290300370300200341b0096a41206a200341f0106a41206a290300370300200341b0096a41286a200341f0106a41286a290300370300200341b0096a41306a200341f0106a41306a290300370300200320032903a8113703e809200320032903f0103703b009200341f8086a41306a200341b8106a41306a290300370300200341f8086a41286a200341b8106a41286a290300370300200341f8086a41206a200341b8106a41206a290300370300200341f8086a41186a200341b8106a41186a290300370300200341f8086a41106a200341b8106a41106a290300370300200341f8086a41086a200341b8106a41086a290300370300200341c0086a41306a20034180106a41306a290300370300200341c0086a41286a20034180106a41286a290300370300200341c0086a41206a20034180106a41206a290300370300200341c0086a41186a20034180106a41186a290300370300200341c0086a41106a20034180106a41106a290300370300200341c0086a41086a20034180106a41086a290300370300200320032903b8103703f80820032003290380103703c00820034188086a41306a200341c80f6a41306a29030037030020034188086a41286a200341c80f6a41286a29030037030020034188086a41206a200341c80f6a41206a29030037030020034188086a41186a200341c80f6a41186a29030037030020034188086a41106a200341c80f6a41106a29030037030020034188086a41086a200341c80f6a41086a290300370300200320032903c80f37038808200341d0076a41306a200341900f6a41306a290300370300200341d0076a41286a200341900f6a41286a290300370300200341d0076a41206a200341900f6a41206a290300370300200341d0076a41186a200341900f6a41186a290300370300200341d0076a41106a200341900f6a41106a290300370300200341d0076a41086a200341900f6a41086a290300370300200320032903900f3703d007410021132014417f6a41064d0d00200341900b6a10ad010b200110ad012001201c370300200920032903d80a370300200941086a200341d80a6a41086a290300370300200941106a200341d80a6a41106a290300370300200941186a200341d80a6a41186a290300370300200941206a200341d80a6a41206a290300370300200941286a200341d80a6a41286a290300370300200941306a200341d80a6a41306a290300370300200b20032903a00a370300200b41086a200341a00a6a41086a290300370300200b41106a200341a00a6a41106a290300370300200b41186a200341a00a6a41186a290300370300200b41206a200341a00a6a41206a290300370300200b41286a200341a00a6a41286a290300370300200b41306a200341a00a6a41306a290300370300200741306a200341e8096a41306a290300370300200741286a200341e8096a41286a290300370300200741206a200341e8096a41206a290300370300200741186a200341e8096a41186a290300370300200741106a200341e8096a41106a290300370300200741086a200341e8096a41086a290300370300200720032903e809370300200620032903b009370300200641086a200341b0096a41086a290300370300200641106a200341b0096a41106a290300370300200641186a200341b0096a41186a290300370300200641206a200341b0096a41206a290300370300200641286a200341b0096a41286a290300370300200641306a200341b0096a41306a290300370300200541306a200341f8086a41306a290300370300200541286a200341f8086a41286a290300370300200541206a200341f8086a41206a290300370300200541186a200341f8086a41186a290300370300200541106a200341f8086a41106a290300370300200541086a200341f8086a41086a290300370300200520032903f808370300200a41306a200341c0086a41306a290300370300200a41286a200341c0086a41286a290300370300200a41206a200341c0086a41206a290300370300200a41186a200341c0086a41186a290300370300200a41106a200341c0086a41106a290300370300200a41086a200341c0086a41086a290300370300200a20032903c008370300200441306a20034188086a41306a290300370300200441286a20034188086a41286a290300370300200441206a20034188086a41206a290300370300200441186a20034188086a41186a290300370300200441106a20034188086a41106a290300370300200441086a20034188086a41086a2903003703002004200329038808370300200241306a200341d0076a41306a290300370300200241286a200341d0076a41286a290300370300200241206a200341d0076a41206a290300370300200241186a200341d0076a41186a290300370300200241106a200341d0076a41106a290300370300200241086a200341d0076a41086a290300370300200220032903d00737030020130d03200341900b6a200341d0036a10ad0920032d00900b410a470d000b0b200341d0036a10ad01200042093703000b200341d0126a24000f0b41b08cca004130200341900b6a41e08cca0041f08cca001041000bb8810109117f027e087f047e047f027e037f027e037f230041f02b6b22052400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020032d0000417f6a0e0700060105040302010b200541f0086a200341106a41c80310bf091a200541d01f6a41086a22062003410c6a2802003602002005200341046a2902003703d01f200541086a2002200541d01f6a10c006200541c0006a2005280208200528020c20052802101084042006200541086a41146a280200360200200520052902143703d01f200541206a200541d01f6a10cb04200541e0006a410c6a200541c0006a41086a290300370200200541e0006a41146a200541c0006a41106a290300370200200541fc006a200541c0006a41186a28020036020020054184016a20052903203702002005418c016a200541206a41086a29030037020020054194016a200541206a41106a2903003702002005419c016a200541206a41186a28020036020020054101360260200520052903403702642005410136028001200541c8146a41d0036a2107200541c8146a41106a2108200541e80c6a41d0036a2109200541e80c6a41106a210a200541d01f6a41106a210b200541d01f6a410472210c200541e0006a410472210d200541d01f6a41d8036a210e4101210f41012102034002400240024020024101460d002005410c3602e80c0c010b024002400240200528027c2204450d0020052004417f6a36027c20052802682204450d02410120052802646b2101200528026c2110024002400340201020042f01a629490d01024020042802a02922110d0020041031410221120c030b20042f01a4292110200410312001417f6a2101201121040c000b0b2004201041d0036c6a221128020c2113201128020821142011280204211520112802002112200541c8146a201141106a41c00310bf091a201041016a2111200420104104746a221041f8276a2903002116201041f0276a2903002117024020014101460d00200420114102746a41a8296a280200210402402001450d0041002110034020042802a829210420012010417f6a2210470d000b0b410021110b200541881c6a200541c8146a41c00310bf091a0b200541b0276a200541881c6a41c00310bf091a2005201136026c2005200436026820054100360264200541c8146a200541b0276a41c00310bf091a024002402012450d00200541d01f6a41186a2016370300200520173703e01f200520133602dc1f200520143602d81f200520153602d41f410821040c010b200520133602dc1f200520143602d81f200b200541c8146a41c00310bf091a200e2016370300200520173703a023410a21040b200520043602d01f200541e80c6a200541d01f6a41f80310bf091a410121020c010b410c21042005410c3602d01f0240200f450d00200d10c20420052802d01f21040b200d20052902c814370200200d41086a200541c8146a41086a290200370200200d41106a2008290200370200200d41186a200541c8146a41186a280200360200200541003602602005410c3602e80c02402004410c470d004100210f410021020c030b200541d01f6a10aa014100210f410021020b20052802e80c2204410c460d0120052802f40c210120052802f00c211020052802ec0c2118200541b0056a200a41c00310bf091a20054188056a41206a200941206a29030037030020054188056a41186a200941186a29030037030020054188056a41106a200941106a29030037030020054188056a41086a200941086a29030037030020052009290300370388050c020b418a98ca00412b418896ca00103c000b0240024002402005280280014101470d00200528029c012204450d0020052004417f6a36029c012005280288012204450d0141012005280284016b2101200528028c012110024002400340201020042f01ae2b490d01024020042802a82b22110d0020041031410221120c030b20042f01ac2b2110200410312001417f6a2101201121040c000b0b2004201041f8036c6a221128020c21192011280208211a2011280204211b20112802002112200541d01f6a201141106a41c00310bf091a200541b0276a41206a221c201141f0036a290200370300200541b0276a41186a221d201141e8036a290200370300200541b0276a41106a221e201141e0036a290200370300200541b0276a41086a221f201141d8036a290200370300200520112902d0033703b027201041016a2110024020014101460d00200420104102746a41b02b6a280200210402402001450d0041002110034020042802b02b210420012010417f6a2210470d000b0b410021100b200541c8146a200541d01f6a41c00310bf091a200541982b6a41206a201c290300370300200541982b6a41186a201d290300370300200541982b6a41106a201e290300370300200541982b6a41086a201f290300370300200520052903b0273703982b0b200541881c6a200541c8146a41c00310bf091a200541f02a6a41206a2201200541982b6a41206a290300370300200541f02a6a41186a2211200541982b6a41186a290300370300200541f02a6a41106a221c200541982b6a41106a290300370300200541f02a6a41086a221d200541982b6a41086a290300370300200520052903982b3703f02a2005201036028c0120052004360288012005410036028401200541c8146a200541881c6a41c00310bf091a200541d01f6a41206a22042001290300370300200541d01f6a41186a22012011290300370300200b201c2903003703002006201d290300370300200520052903f02a3703d01f024002402012450d00200541b0056a41206a2004290300370300200541b0056a41186a2001290300370300200541b0056a41106a200b290300370300200541b0056a41086a2006290300370300200520052903d01f3703b00541092104201b21180c010b200541b0056a200541c8146a41c00310bf091a20054188056a41206a200429030037030020054188056a41186a200129030037030020054188056a41106a200b29030037030020054188056a41086a2006290300370300200520052903d01f37038805410b21040b20052802e80c410c460d02200541e80c6a10aa010c020b0240200f450d00200d10c2040b0240200528028001450d00200528028801210420054100360288012004450d00200528028c01210120052802840121102005200528029c013602dc1f200520013602d81f200520043602d41f200520103602d01f200541d01f6a109b040b200541f0086a10ad01420021170c0e0b418a98ca00412b418896ca00103c000b201a2110201921010b200541c8016a200541b0056a41c00310bf091a200541a0016a41206a221120054188056a41206a290300370300200541a0016a41186a221220054188056a41186a290300370300200541a0016a41106a221c20054188056a41106a290300370300200541a0016a41086a221d20054188056a41086a29030037030020052005290388053703a001200520013602d414200520103602d014200520183602cc14200520043602c8142008200541c8016a41c00310bf091a200741206a2011290300370300200741186a2012290300370300200741106a201c290300370300200741086a201d290300370300200720052903a001370300200541d01f6a200541c8146a200541f0086a10d50520052802d01f2104200541e80c6a200c41b40710bf091a024020044119470d00200541c8146a10aa010c010b0b200020043602082000410c6a200541e80c6a41b40710bf091a20004201370300200541c8146a10aa010240200f450d00200d10c2040b0240200528028001450d00200528028801210420054100360288012004450d00200528028c01210120052802840121102005200528029c013602dc1f200520013602d81f200520043602d41f200520103602d01f200541d01f6a109b040b200541f0086a10ad014100211041012104410121014101211141012107410121120c110b200042013703002000410536020841012104410121010c0c0b200541f0086a200341106a41f80310bf091a2003410c6a2802002112200341086a2802002107200341046a280200211c02400240024002400240024002400240024020034188046a290300221720034190046a2903007c22162017540d0020032d0001211d200541c8146a200541f0086a41f80310bf091a200541881c6a2002200541c8146a10c10620052802881c4101470d01200541e80c6a200541d01f6a41b40710bf091a200041143602082000410c6a200541e80c6a41b40710bf091a200042013703000c020b200541e80c6a200541d01f6a41b00710bf091a20004201370308200041106a200541e80c6a41b00710bf091a2000420137030002402012450d00201241e0076c2101201c21040340200410a601200441e0076a2104200141a0786a22010d000b0b02402007450d00200741e0076c450d00201c10310b200541f0086a10aa010c040b200541d01f6a41086a2210200541881c6a41146a2902003703002005200541881c6a410c6a2902003703d01f200529028c1c2120200541e80c6a200541d01f6a41b40710bf091a20054188056a41086a200541e80c6a41086a22112902002221370300200520052902e80c222237038805200541c8016a41106a22182021370300200520203703c801200520223703d001200541a8236a4200370300200541a0236a201642e40080370300201042003703002005410a3602d01f200541b0056a200541c8016a200541d01f6a10c10620052802b0054101470d01200541e80c6a41106a201829030022173703002011200541c8016a41086a2903002216370300200520052903c80122203703e80c200541d01f6a41106a2204201737030020102016370300200520203703d01f200541d01f6a109a04200428020021012004410036020002402001450d00024020052802dc1f2204450d002004417f6a2104034020012802b02b21012004450d012004417f6a21040c000b0b200541003602b805200520013602b405200541003602b0052005200541e41f6a2802003602bc05200541b0056a109b040b200541982b6a41086a200541e0006a41086a290300370300200541982b6a41106a200541e0006a41106a290300370300200520052903603703982b20004201370300200041003602080b02402012450d00201241e0076c2101201c21040340200410a601200441e0076a2104200141a0786a22010d000b0b2007450d02200741e0076c0d010c020b2011200541c8016a41086a2903002220370300200541e80c6a41106a20182903002221370300200541881c6a41186a220620052902b405370300200541881c6a41086a22112020370300200541881c6a41106a22182021370300200541881c6a41206a2208200541b0056a410c6a290200370300200541881c6a41286a221a200541b0056a41146a290200370300200520052903c80122203703e80c200520203703881c200541b0276a41286a220b201a290300370300200541b0276a41206a2008290300370300200541b0276a41186a22082006290300370300200541b0276a41106a2018290300370300200541b0276a41086a2011290300370300200520052903881c3703b027200541d01f6a41106a201829030037030020102011290300370300200520052903881c3703d01f2008109a04200b2802002111200b410036020002402011450d000240200541d4276a2802002210450d002010417f6a2110034020112802b02b21112010450d012010417f6a21100c000b0b200541003602f00c200520113602ec0c200541003602e80c2005200541dc276a2802003602f40c200541e80c6a109b040b2004427f2004290300222020167c221620162020541b370300200541f02a6a41086a200541d01f6a41086a22102903002216370300200541f02a6a41106a200541d01f6a41106a22112903002220370300200520052903d01f22213703f02a2011202037030020102016370300200520213703d01f2002200541d01f6a10b506200520173703b027201c201241e0076c22106a2118024020100d0042002117201c21010c040b200541d01f6a410172210b201d41ff0171450d02200541c8146a41086a2106201241e0076c41a0786a2111201c211042002117034020102d0000211d200541d01f6a201041016a41df0710bf091a0240201d410b470d00201041e0076a21010c050b200541e80c6a200541d01f6a41df0710bf091a200541881c6a200110d7052005201d3a00d01f200b200541e80c6a41df0710bf091a200541c8146a200541881c6a4100200541d01f6a200541b0276a42002017200410b406024020052903c8144201510d00201141a0786a211120052903d01420177c2117201041e0076a22102018470d010c060b0b200041086a200641b80710bf091a2000420137030002402011450d00201041e0076a21040340200410ad03200441e0076a2104201141a0786a22110d000b0b2007450d01200741e0076c450d010b201c10310b41002112410121044101210141012111410121070c110b200541a0186a211d200541c8146a41106a2106201c2110420021170240034020102d00002111200541d01f6a201041016a41df0710bf091a2011410b460d01200541e80c6a200541d01f6a41df0710bf091a200541881c6a200110d705200520113a00d01f200b200541e80c6a41df0710bf091a200541c8146a200541881c6a4100200541d01f6a200541b0276a42002017200410b4060240024020052903c8144201510d0020052903d01420177c21170c010b20052802d014410b470d00200610ad01201d10a3010b201041e0076a22102018470d000c030b0b201041e0076a21010b20182001460d00201c201241e0076c6a21100340200110ad032010200141e0076a2201470d000b0b02402007450d00200741e0076c450d00201c10310b200541a8236a4200370300200541d81f6a4200370300200541a0236a2004290300221620052903b027222020162020541b222042e400803703002004201620207d3703002005410a3602d01f2002200541d01f6a10db050c080b200341106a2903002123200541881c6a200341186a41c80310bf091a200341086a280200211b200341046a280200210c2003410c6a2802002109200541982b6a41106a221542003703002005420037029c2b02400240200941f8036c2204450d00200c20046a211a200541982b6a410c6a210e2002410c6a211f200541d01f6a41186a2108200541e80c6a41106a2113200541d01f6a41086a210d200541d01f6a410c6a2114200541e80c6a41e0036a2107200541e80c6a41206a2118200541e80c6a41086a2106200541d0106a210f200241146a2124200541c0106a210b200541e80c6a41d3036a2125200c211c03400240024002400240024002400240024002400240024002400240024002400240201c28020022040e0c0f000102030d0c0b0a090a090f0b02400240200241086a2802000d00200542003702b4270c010b20022802042204450d07200541b0276a2002280200200410bd040b02400240200241146a2802000d00200542003702d41f0c010b20022802102204450d06200541d01f6a201f280200200410c0040b200541c4276a200541d81f6a280200360200200520052903d01f3702bc27200541982b6a109a0420052802a82b2101200541003602a82b2001450d1120052802a42b2204450d072004417f6a2104034020012802b02b21012004450d082004417f6a21040c000b0b02400240200241086a2802000d00200542003702d41f0c010b20022802042204450d04200541d01f6a2002280200200410bd040b2014200e290200370200201441086a200e41086a280200360200200541982b6a109a042015200541d01f6a41106a290300370300200541982b6a41086a200d290300370300200520052903d01f3703982b0c0d0b200d200541982b6a41086a2210280200360200200520052903982b3703d01f0240024020242802000d00200542003702ec0c0c010b20022802102204450d02200541e80c6a201f280200200410c0040b201420052903e80c370200201441086a200628020036020020052802a82b2101200541003602a82b02402001450d00024020052802a42b2204450d002004417f6a2104034020012802b02b21012004450d012004417f6a21040c000b0b200541003602f00c200520013602ec0c200541003602e80c200520052802ac2b3602f40c200541e80c6a109b040b2015200541d01f6a41106a2903003703002010200d290300370300200520052903d01f3703982b0c0c0b200541b0056a200210c206200541f0086a41186a200541b0056a41186a2802002204360200200541f0086a41106a200541b0056a41106a290300370300200541f0086a41086a200541b0056a41086a290300370300200520052903b0053703f0082004450d0b20052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b201041016a211020012f01a429211120042101201120042f01a6294f0d000b0b201141016a211d0240024020100d00200421010c010b2004201d4102746a41a8296a280200210102402010417f6a2210450d00034020012802a82921012010417f6a22100d000b0b4100211d0b20122001360204201241003602002012201d3602082004201141d0036c6a2101200420114104746a41f0276a21040340200441086a2903002117200429030021160240024020012802004101470d002001410c6a2802002210417f4c0d1520012802042111410121014101210402402010450d002010102f2204450d170b20042011201010bf091a2010ad222042208620208421204108211020162121201721220c010b200541d01f6a200141086a10d705200541d01f6a41106a290300212220052903d81f212120052903d01f2120200541b0276a200841b00310bf091a200541e80c6a200541b0276a41b00310bf091a410a2110410021010b200541c8146a200541e80c6a41b00310bf091a200541e0006a41106a2211200541c8016a41106a290300370300200541e0006a41086a2212200541c8016a41086a290300370300200520052903c801370360200541e80c6a41186a2022370300200520213703f80c200520043602ec0c200520103602e80c200520203703f00c2018200541c8146a41b00310bf091a200b201737030020072005290360370300200741086a2012290300370300200741106a2011290300370300200520163703b810024002402001450d00201c28020c2020422088a72201470d00201c2802042004200110c2090d00200541d01f6a200541e80c6a41f80310bf091a200541982b6a200541d01f6a10db050c010b200541e80c6a10aa010b2005280288092204450d0c20052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b201041016a211020012f01a429211120042101201120042f01a6294f0d000b0b201141016a211d0240024020100d00200421010c010b2004201d4102746a41a8296a280200210102402010417f6a2210450d00034020012802a82921012010417f6a22100d000b0b4100211d0b20122001360204201241003602002012201d3602082004201141d0036c6a2101200420114104746a41f0276a21040c000b0b418a98ca00412b41a8d8c100103c000b418a98ca00412b41a8d8c100103c000b418a98ca00412b41a8d8c100103c000b418a98ca00412b41a8d8c100103c000b200541003602d81f200520013602d41f200541003602d01f200520052802ac2b3602dc1f200541d01f6a109b040c090b0240024002400240200441776a0e03020001000b418c93ca0041284180aac600103c000b200541d01f6a201c41086a10d70520052802d41f211020052802d01f2112200541e80c6a200d41c00310bf091a41002111410021010240024002400240024002400240201c2d00d0030e0706010203040500060b201c41dc036a2802002204417f4c0d14201c41d4036a28020021010240024020040d00410121260c010b2004102f2226450d160b20262001200410bf0941087621272004ad22172017422086842128410621010c050b201c41e0036a2903002129201c2903d8032128410121010c040b201c2f00d103201c41d3036a2d000041107472212a201c2d00d4032126410221010c030b202842807e83201c3100d803842128201c2800d40322264108762127201c2f00d103201c41d3036a2d000041107472212a410321010c020b202942807e83201c41e0036a310000842129201c2800d40322264108762127201c2f00d103201c41d3036a2d000041107472212a201c2900d8032128410421010c010b200541c8146a41086a201c41f0036a2d00003a00002005201c2902e8033703c814201c2800d40322264108762127201c2f00d103201c41d3036a2d000041107472212a201c41e0036a2900002129201c2900d8032128410521010b200541d01f6a200541e80c6a41c00310bf091a200541f0086a41086a200541c8146a41086a290300370300200520052903c8143703f0082027410874202641ff017172211d4101210a202a210420282117202921160c010b201c410c6a2802002212417f4c0d0d201c28020421040240024020120d00410121190c010b2012102f2219450d0f0b20192004201210bf091a4100210a410021010240024002400240024002400240201c2d00100e0706010203040500060b201c411c6a2802002204417f4c0d13201c41146a28020021010240024020040d004101212b0c010b2004102f222b450d150b202b2001200410bf09410876212c2004ad2217201742208684212d410621010c050b201c41206a290300212e201c290318212d410121010c040b201c2f0011201c41136a2d000041107472212f201c2d0014212b410221010c030b202d42807e83201c31001884212d201c280014222b410876212c201c2f0011201c41136a2d000041107472212f410321010c020b202e42807e83201c41206a31000084212e201c280014222b410876212c201c2f0011201c41136a2d000041107472212f201c290018212d410421010c010b2006201c41306a2d00003a00002005201c2902283703e80c201c280014222b410876212c201c2f0011201c41136a2d000041107472212f201c41206a290000212e201c290018212d410521010b200541d01f6a200541c8146a41c00310bf091a200541f0086a41086a2006290300370300200520052903e80c3703f008202c410874202b41ff017172211d4101211120122110202f2104202d2117202e21160b200541c8146a200541d01f6a41c00310bf091a200541b0276a41086a221e200541f0086a41086a290300370300200520052903f0083703b027200520103602f40c200520123602f00c200520193602ec0c200520113602e80c2013200541c8146a41c00310bf091a20072016370300200f20052903b027370300200f41086a201e290300370300200520043b00b910202520044110763a0000200520173703c0102005201d3602bc10200520013a00b810024020022802102211450d00201f280200211e034020112f01ae2b223041f8036c2104417f21102011210102400340024020040d00203021100c020b201041016a2110200441887c6a2104200541e80c6a200110fa04211d200141f8036a21010240201d41187441187541016a0e03020001020b0b200541d01f6a200541e80c6a41f80310bf091a200e200541d01f6a10f9040c080b201e450d01201e417f6a211e201120104102746a41b02b6a28020021110c000b0b02400240200a450d00200610ad010c010b2012450d00201910310b20052d00b8104106490d0520052802c010450d0520052802bc1010310c050b0240024002400240200441786a0e03020001000b418c93ca00412841f0a9c600103c000b200541d01f6a201c41086a10d70520052802d41f210120052802d01f211d200541c8146a200d41c00310bf091a201c41d0036a210441002110410121300c010b201c410c6a280200221d417f4c0d0c201c2802042101410121104101211e0240201d450d00201d102f221e450d0e0b201c41106a2104201e2001201d10bf091a41002130201d21010b200441086a290300211720042903002116200520013602f40c2005201d3602f00c2005201e3602ec0c200520103602e80c2013200541c8146a41c00310bf091a024020022802042211450d002002280200210a0340201141e0276a211020112f01a629223141d0036c2104417f21122011210102400340024020040d00203121120c020b201241016a2112201041106a2110200441b07c6a2104200541e80c6a200110b8042119200141d0036a21010240201941187441187541016a0e03020001020b0b200541d01f6a200541e80c6a41d00310bf091a200541982b6a200541d01f6a20102903002220201620162020562017201041086a29030022205620172020511b22041b2020201720041b10c3060c070b200a450d01200a417f6a210a201120124102746a41a8296a28020021110c000b0b02402030450d00200610ad010c050b201d450d04201e10310c040b200541b0276a201f10c406200541f0086a41186a200541b0276a41186a280200360200200541f0086a41106a200541b0276a41106a290300370300200541f0086a41086a200541b0276a41086a290300370300200520052903b0273703f008201c41086a211903402005280288092204450d0320052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422042f01ae2b4f0d00200421010c010b0340024020042802a82b22010d00410021010c020b201041016a211020042f01ac2b211120012104201120012f01ae2b4f0d000b0b201141016a211d0240024020100d00200121040c010b2001201d4102746a41b02b6a280200210402402010417f6a2210450d00034020042802b02b21042010417f6a22100d000b0b4100211d0b20122004360204201241003602002012201d360208200541d01f6a2001201141f8036c6a10c50620052802d01f410c460d04200541c8146a200541d01f6a41f80310bf091a200541e80c6a200541c8146a41f80310bf091a024020052802e80c410b470d002019200610c606450d00200541d01f6a200541e80c6a41f80310bf091a200541982b6a200541d01f6a10db050c010b200541e80c6a10aa010c000b0b200541b0056a200210c206200541f0086a41186a200541b0056a41186a2802002204360200200541f0086a41106a200541b0056a41106a290300370300200541f0086a41086a200541b0056a41086a290300370300200520052903b0053703f0082004450d0220052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b201041016a211020012f01a429211120042101201120042f01a6294f0d000b0b201141016a211d0240024020100d00200421010c010b2004201d4102746a41a8296a280200210102402010417f6a2210450d00034020012802a82921012010417f6a22100d000b0b4100211d0b201c41086a211920122001360204201241003602002012201d3602082004201141d0036c6a2101200420114104746a41f0276a21040340200441086a2903002117200429030021160240024020012802004101470d002001410c6a2802002210417f4c0d0c200128020421010240024020100d00410121040c010b2010102f2204450d0e0b20042001201010bf091a2010ad22204220862020842120410821014100211020162121201721220c010b200541d01f6a200141086a10d705200541d01f6a41106a290300212220052903d81f212120052903d01f2120200541b0276a200841b00310bf091a200541e80c6a200541b0276a41b00310bf091a410a2101410121100b200541c8146a200541e80c6a41b00310bf091a200541e0006a41106a2211200541c8016a41106a290300370300200541e0006a41086a2212200541c8016a41086a290300370300200520052903c801370360200541e80c6a41186a2022370300200520213703f80c200520203703f00c200520043602ec0c200520013602e80c2018200541c8146a41b00310bf091a200b201737030020072005290360370300200741086a2012290300370300200741106a2011290300370300200520163703b810024002402010450d002019200610c606450d00200541d01f6a200541e80c6a41f80310bf091a200541982b6a200541d01f6a10db050c010b200541e80c6a10aa010b2005280288092204450d0320052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b201041016a211020012f01a429211120042101201120042f01a6294f0d000b0b201141016a211d0240024020100d00200421010c010b2004201d4102746a41a8296a280200210102402010417f6a2210450d00034020012802a82921012010417f6a22100d000b0b4100211d0b20122001360204201241003602002012201d3602082004201141d0036c6a2101200420114104746a41f0276a21040c000b0b200541b0276a201f10c406200541f0086a41186a200541b0276a41186a280200360200200541f0086a41106a200541b0276a41106a290300370300200541f0086a41086a200541b0276a41086a290300370300200520052903b0273703f00803402005280288092204450d0120052004417f6a36028809200541f0086a410020052802f4081b221228020021100240024020122802082211201228020422042f01ae2b4f0d00200421010c010b0340024020042802a82b22010d00410021010c020b201041016a211020042f01ac2b211120012104201120012f01ae2b4f0d000b0b201141016a211d0240024020100d00200121040c010b2001201d4102746a41b02b6a280200210402402010417f6a2210450d00034020042802b02b21042010417f6a22100d000b0b4100211d0b20122004360204201241003602002012201d360208200541d01f6a2001201141f8036c6a10c50620052802d01f410c460d02200541c8146a200541d01f6a41f80310bf091a200541e80c6a200541c8146a41f80310bf091a024020052802e80c4109470d00201c28020c220420052802f40c470d00201c28020420052802ec0c200410c2090d00200541d01f6a200541e80c6a41f80310bf091a200541982b6a200541d01f6a10db050c010b200541e80c6a10aa010c000b0b2005410c3602d01f0b201c41f8036a221c201a470d000b0b200541b0276a41106a2015290300370300200541b0276a41086a200541982b6a41086a290300370300200520052903982b3703b0270b200541d01f6a200541881c6a10b706200541b0276a200541d01f6a10c706200541c8146a20052802b02720052802b42720052802b827108404200541e80c6a41086a200541b0276a41146a280200360200200520052902bc273703e80c200541f0086a200541e80c6a10cb04200541e80c6a410c6a200541c8146a41086a290300370200200541e80c6a41146a200541c8146a41106a2204290300370200200541840d6a200541c8146a41186a2802003602002005418c0d6a20052903f008370200200541940d6a200541f0086a41086a2903003702002005419c0d6a200541f0086a41106a290300370200200541a40d6a200541f0086a41186a280200360200200541013602e80c200520052903c8143702ec0c200541013602880d200541f02a6a200541e80c6a10c806200541d01f6a10ad01200541f0086a200541881c6a41c80310bf091a20042023370300200541c8146a410c6a200541f02a6a41086a280200360200200520052903f02a3702cc14200541033a00c814200541d01f6a200541f0086a200541c8146a10af0320052802d01f2104200541e80c6a200541d01f6a41047241b40710bf091a024020044119470d0002402009450d00200941f8036c2101200c21040340200410aa01200441f8036a2104200141887c6a22010d000b0b0240201b450d00201b41f8036c450d00200c10310b420021170c080b200020043602082000410c6a200541e80c6a41b40710bf091a2000420137030002402009450d00200941f8036c2101200c21040340200410aa01200441f8036a2104200141887c6a22010d000b0b0240201b450d00201b41f8036c450d00200c10310b410021074101210441012101410121110c0c0b200541881c6a200341206a41c80310bf091a200541c8016a41086a2201200341186a2802003602002005200341106a2902003703c801200541d01f6a41086a2003410c6a2802003602002005200341046a2902003703d01f200541b0276a2002200541d01f6a10c006200541d01f6a200541881c6a10b706200541b0276a200541d01f6a10c706200541c8146a20052802b02720052802b42720052802b827108404200541e80c6a41086a200541b0276a41146a280200360200200520052902bc273703e80c200541f0086a200541e80c6a10cb04200541e80c6a410c6a200541c8146a41086a290300370200200541e80c6a41146a200541c8146a41106a2210290300370200200541840d6a200541c8146a41186a22112802003602002005418c0d6a20052903f008370200200541940d6a200541f0086a41086a2903003702002005419c0d6a200541f0086a41106a290300370200200541a40d6a200541f0086a41186a28020036020041012104200541013602e80c200520052903c8143702ec0c200541013602880d200541b0056a200541e80c6a10c806200541d01f6a10ad01200541f0086a200541881c6a41c80310bf091a200541c8146a410c6a200541b0056a41086a280200360200201020052903c80137030020112001280200360200200520052903b0053702cc14200541023a00c814200541d01f6a200541f0086a200541c8146a10af0320052802d01f2101200541e80c6a200541d01f6a41047241b40710bf091a024020014119470d00420021170c070b200020013602082000410c6a200541e80c6a41b40710bf091a2000420137030041002111410121010c0a0b200541881c6a200341206a41c80310bf091a200541c8016a41086a2201200341186a2802003602002005200341106a2902003703c801200541d01f6a41086a2003410c6a2802003602002005200341046a2902003703d01f200541b0276a2002200541d01f6a10c006200541d01f6a200541881c6a10b706200541b0276a200541d01f6a10c706200541c8146a20052802b02720052802b42720052802b827108404200541e80c6a41086a200541b0276a41146a280200360200200520052902bc273703e80c200541f0086a200541e80c6a10cb04200541e80c6a410c6a200541c8146a41086a290300370200200541e80c6a41146a200541c8146a41106a2210290300370200200541840d6a200541c8146a41186a22112802003602002005418c0d6a20052903f008370200200541940d6a200541f0086a41086a2903003702002005419c0d6a200541f0086a41106a290300370200200541a40d6a200541f0086a41186a28020036020041012104200541013602e80c200520052903c8143702ec0c200541013602880d200541b0056a200541e80c6a10c806200541d01f6a10ad01200541f0086a200541881c6a41c80310bf091a200541c8146a410c6a200541b0056a41086a280200360200201020052903c80137030020112001280200360200200520052903b0053702cc1441002101200541003a00c814200541d01f6a200541f0086a200541c8146a10af0320052802d01f2110200541e80c6a200541d01f6a41047241b40710bf091a024020104119470d00420021170c060b200020103602082000410c6a200541e80c6a41b40710bf091a200042013703000c080b200541881c6a200341206a41c80310bf091a200341186a2802002114200341146a280200211f200341106a2802002113200541d01f6a41086a2003410c6a2802003602002005200341046a2902003703d01f20054188056a2002200541d01f6a10c006200541e0006a20054188056a10c206200541982b6a20054188056a410c6a10c406200541c8016a410c6a2219200541e0006a41086a290300370200200541c8016a41146a200541e0006a41106a290300370200200541e4016a200541e0006a41186a280200360200200541ec016a220620052903982b370200200541f4016a2202200541982b6a41086a290300370200200541fc016a200541982b6a41106a29030037020020054184026a200541982b6a41186a280200360200200541013602c801200520052903603702cc01200541013602e801200541f0016a2108200541b0236a2118200541d01f6a41206a2109200541c8146a41186a211e200541c8016a410472210c200541c8016a41086a210d200541d01f6a410472210b200541a8236a211b41012104034002400240024020044101460d002005410c3602d01f0c010b024020052802e4012204450d0020052004417f6a3602e401200c410020052802d00122041b22122802002110024002402019410820041b221c2802002211200d410420041b221d28020022012f01a6294f0d00200121040c010b0340024020012802a02922040d00410021040c020b201041016a211020012f01a429211120042101201120042f01a6294f0d000b0b201141016a21070240024020100d00200421010c010b200420074102746a41a8296a280200210102402010417f6a2210450d00034020012802a82921012010417f6a22100d000b0b410021070b201d200136020020124100360200201c2007360200200420114104746a220141f8276a2903002117200141f0276a2903002116024002402004201141d0036c6a22042802004101470d002004410c6a2802002201417f4c0d06200428020421040240024020010d004101211a0c010b2001102f221a450d080b201a2004200110bf091a2001ad22204220862020842120410821040c010b200541c8146a200441086a10d705200541c8146a41106a290300212320052903d014212820052903c8142120200541b0276a201e41b00310bf091a200541b0056a200541b0276a41b00310bf091a410a2104201621212017212220282116202321170b200541d01f6a41186a2017370300200520163703e01f200520203703d81f2005201a3602d41f200520043602d01f2009200541b0056a41b00310bf091a201b2022370300201820052903f02a370300201841086a200541f02a6a41086a290300370300201841106a200541f02a6a41106a290300370300200520213703a023200541e80c6a200541d01f6a41f80310bf091a0c020b2005410c3602d01f200541003602c8010b024020052802e8014101460d002005410c3602e80c0c060b2005280284022204450d0420052004417f6a360284022006410020052802f00122041b22122802002110024002402002410820041b221c28020022112008410420041b221d28020022042f01ae2b4f0d00200421010c010b0340024020042802a82b22010d00410021010c020b201041016a211020042f01ac2b211120012104201120012f01ae2b4f0d000b0b201141016a21070240024020100d00200121040c010b200120074102746a41b02b6a280200210402402010417f6a2210450d00034020042802b02b21042010417f6a22100d000b0b410021070b201d200436020020124100360200201c2007360200200541e80c6a2001201141f8036c6a10c50620052802d01f410c460d00200541d01f6a10aa010b20052802e80c410c460d04200541f0086a200541e80c6a41f80310bf091a200541c8146a200541f0086a41f80310bf091a200541d01f6a200541c8146a200541881c6a10d50520052802d01f2104200541e80c6a200b41b40710bf091a024020044119470d00200541c8146a10aa0120052802c80121040c010b0b200020043602082000410c6a200541e80c6a41b40710bf091a20004201370300200541c8146a10aa0120054188056a109a0420054198056a220428020021012004410036020002402001450d0002402005280294052204450d002004417f6a2104034020012802b02b21012004450d012004417f6a21040c000b0b200541003602d81f200520013602d41f200541003602d01f20052005419c056a2802003602dc1f200541d01f6a109b040b02402014450d0020144198046c2101201321040340200410bf0120044198046a2104200141e87b6a22010d000b0b0240201f450d00201f4198046c450d00201310310b200541881c6a10ad010c060b103b000b1039000b2005410c3602e80c0b200541b0276a41106a20054188056a41106a290300370300200541b0276a41086a220420054188056a41086a29030037030020052005290388053703b027200541d01f6a200541881c6a10b706200541b0276a200541d01f6a10c706200541c8146a20052802b02720052802b4272004280200108404200541e80c6a41086a200541b0276a41146a280200360200200520052902bc273703e80c200541f0086a200541e80c6a10cb04200541e80c6a410c6a200541c8146a41086a290300370200200541e80c6a41146a200541c8146a41106a2204290300370200200541840d6a200541c8146a41186a22012802003602002005418c0d6a20052903f008370200200541940d6a200541f0086a41086a2903003702002005419c0d6a200541f0086a41106a290300370200200541a40d6a200541f0086a41186a280200360200200541013602e80c200520052903c8143702ec0c200541013602880d200541b0056a200541e80c6a10c806200541d01f6a10ad01200541f0086a200541881c6a41c80310bf091a200541c8146a410c6a200541b0056a41086a28020036020020012014360200200541c8146a41146a201f36020020042013360200200520052903b0053702cc14200541013a00c814200541d01f6a200541f0086a200541c8146a10af0320052802d01f2104200541e80c6a200541d01f6a41047241b40710bf091a20044119470d01420021170b200042003703002000201737030820032d0000220441074b0d07410120047441f60171450d070c0f0b200020043602082000410c6a200541e80c6a41b40710bf091a200042013703000b41012101410021040b410121110b410121070b410121120b410121100b20032d0000417f6a0e0701020703040506070b200310c9060c070b2010450d0602402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410aa01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410310b200341106a10ad010c060b2004450d0502402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410aa01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410310b200341206a10ad010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0520044198046c450d05200328021010310c050b2001450d0402402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410aa01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410310b200341206a10ad010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0420044198046c450d04200328021010310c040b2011450d0302402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410aa01200441f8036a2104200141887c6a22010d000b0b0240200341086a2802002204450d00200441f8036c450d00200328020410310b200341206a10ad010240200341186a2802002201450d00200341106a280200210420014198046c21010340200410bf0120044198046a2104200141e87b6a22010d000b0b200341146a2802002204450d0320044198046c450d03200328021010310c030b2007450d02200341186a10ad0102402003410c6a2802002201450d00200341046a2802002104200141f8036c21010340200410aa01200441f8036a2104200141887c6a22010d000b0b200341086a2802002204450d02200441f8036c450d02200328020410310c020b2012450d01200341106a10aa0102402003410c6a2802002201450d00200341046a2802002104200141e0076c21010340200410a601200441e0076a2104200141a0786a22010d000b0b200341086a2802002204450d01200441e0076c450d01200328020410310c010b200310c9060b200541f02b6a24000b971069027f027e017f017e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f037e077f230022022103200241a0016b41607122022400200129030021044200210520014200370300200141386a22062903002107200141306a22082903002109200141286a220a290300210b200141206a220c290300210d200141d8006a220e290300210f200141d0006a22102903002111200141c8006a22122903002113200141c0006a2903002114200141f8006a22152903002116200141f0006a22172903002118200141e8006a2219290300211a200141e0006a221b290300211c20014198016a221d290300211e20014190016a221f290300212020014188016a2221290300212220014180016a22232903002124200141b8016a22252903002126200141b0016a22272903002128200141a8016a2229290300212a200141a0016a222b290300212c200141d8016a222d290300212e200141d0016a222f2903002130200141c8016a22312903002132200141c0016a22332903002134200141f8016a22352903002136200141f0016a22372903002138200141e8016a2239290300213a200141e0016a223b290300213c20014198026a223d290300213e20014190026a223f290300214020014188026a2241290300214220014180026a22432903002144200141b8026a22452903002146200141b0026a22472903002148200141a8026a2249290300214a200141a0026a290300214b200141d8026a224c290300214d200141d0026a224e290300214f200141c8026a22502903002151200141c0026a22522903002153200141f8026a22542903002155200141f0026a22562903002157200141e8026a22582903002159200141e0026a225a290300215b20014198036a225c290300215d20014190036a225e290300215f20014188036a2260290300216120014180036a22622903002163200141b8036a22642903002165200141b0036a22662903002167200141a8036a22682903002169200141a0036a226a290300216b200141c0036a226c290300216d2001290308216e2001290310216f2002200141186a22702903003703782002206f3703702002206e37036820022004370360206ea72171410a217202400240024002400240024002400240024002402004a70e09090102030405060700090b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420721050c070b200241d7006a2002290078370000200241d0006a2002290071370300200220022900693703480c060b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420121050c050b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420221050c040b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420321050c030b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420421050c020b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420521050c010b200241d7006a2002290078370000200241d0006a200229007137030020022002290069370348420621050b207121720b200020723a000020002002290348370001200241106a41306a2272200241e0006a41306a290300370300200241106a41286a2271200241e0006a41286a290300370300200241106a41206a2273200241e0006a41206a290300370300200241106a41186a2274200241e0006a41186a290300370300200241106a41106a2275200241e0006a41106a290300370300200241106a41086a2276200241e0006a41086a290300370300200041096a200241c8006a41086a290300370000200041106a200241d7006a29000037000020022002290360370310200041306a2007370000200041286a2009370000200041206a200b370000200041186a200d370000200110ad012062206537030020542067370300205620693703002058206b370300205a205d370300204c205f370300204e2061370300205020633703002052205537030020452057370300204720593703002049205b370300203d204f370300203f20513703002041205337030020432046370300203520483703002037204a3703002039204b370300203b203e370300202d2040370300202f20423703002031204437030020332036370300202520383703002027203a370300202b202e370300201d2030370300201f20323703002021203437030020232026370300201520283703002017202a3703002019202c370300201b201e370300200e20203703002010202237030020122024370300200620183703002008201a370300200a201c370300200c200f37030020702011370300200141106a2013370300200120143703082060206d3703002001204d3703a0022029203c3703002001201637034020012005370300206c2072290300370300206420712903003703002066207329030037030020682074290300370300206a2075290300370300205c2076290300370300205e2002290310370300200324000bbd6c074b7f037e077f3c7e017f017e047f230041a0246b22032400200341106a420037030020034200370204200228020022042002280208220541f8036c22066a210720022802042108200421090240024002402005450d002003410c6a210a2001410c6a210b200641887c6a210c20034198206a410472210d20034198206a41d0036a210e200341901c6a41cc036a210f20034180106a41cc036a2110200341901c6a41086a2111200341901c6a410472211220034180106a410472211320034180106a41c0036a2114200341901c6a41c0036a2115200341901c6a41e0036a211620034198206a41e0036a211720034180106a41086a2118200341880c6a4104722119200341880c6a41086a211a20034198206a41086a211b20034198186a410472211c20034198186a41086a211d20034188086a410472211e20034188086a41086a211f200341901c6a41046a212020034180106a41d0036a2121200341880c6a41106a212220034198206a41046a2123200341880c6a41d0036a212420034190046a4104722125200341901c6a41386a2126200341901c6a41306a2127200341901c6a41286a2128200341901c6a41d8006a2129200341901c6a41d0006a212a200341901c6a41c8006a212b200341901c6a41f8006a212c200341901c6a41f0006a212d200341901c6a41e8006a212e200341901c6a4198016a212f200341901c6a4190016a2130200341901c6a4188016a2131200341901c6a41b8016a2132200341901c6a41b0016a2133200341901c6a41a8016a2134200341901c6a41d8016a2135200341901c6a41d0016a2136200341901c6a41c8016a2137200341901c6a41f8016a2138200341901c6a41f0016a2139200341901c6a41e8016a213a200341901c6a4198026a213b200341901c6a4190026a213c200341901c6a4188026a213d200341901c6a41b8026a213e200341901c6a41b0026a213f200341901c6a41a8026a2140200341901c6a41d8026a2141200341901c6a41d0026a2142200341901c6a41c8026a2143200341901c6a41f8026a2144200341901c6a41f0026a2145200341901c6a41e8026a2146200341901c6a4198036a2147200341901c6a4190036a2148200341901c6a4188036a2149200341901c6a41b8036a214a200341901c6a41b0036a214b200341901c6a41a8036a214c200341901c6a41d8036a214d2004210903402009280200210220034198206a200941046a41f40310bf091a200941f8036a21092002410c460d012003411c6a20034198206a41f40310bf091a200320023602900420252003411c6a41f40310bf091a024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020020e0c0b000102031304120f0d100c0b0b2001290210214e200142003702102001290200214f2001290208215020014200370204200041106a204e370200200020503702082000204f37020020034190046a10aa01024020072009460d000340200910aa01200941f8036a2109200c41887c6a220c0d000b0b02402008450d00200841f8036c450d00200410310b2003109a0420032802102102200341003602102002450d180240200328020c2205450d00034020022802b02b21022005417f6a22050d000b0b200341003602a0202003200236029c202003410036029820200320032802143602a42020034198206a109b040c180b200128020821022001280204210520014200370204200128020021512001205236020020034198186a205120052002108404200341880c6a41186a20034198186a41186a2802002202360200202220034198186a41106a290300370300201a201d29030037030020032003290398183703880c2002450d0820032002417f6a22533602a00c200328028c0c2202450d07410120032802880c6b210520032802900c2154024002400340205420022f01a629490d01024020022802a02922060d0020021031410221550c030b20022f01a4292154200210312005417f6a2105200621020c000b0b2002205441d0036c6a2206280200215520034198206a200641046a41cc0310bf091a205441016a2106200220544104746a225441f8276a290300214f205441f0276a290300214e024020054101460d00200220064102746a41a8296a280200210202402005450d0041002106034020022802a829210220052006417f6a2206470d000b0b410021060b200341901c6a20034198206a41cc0310bf091a0b20034180106a200341901c6a41cc0310bf091a0340200320063602900c2003200236028c0c200341003602880c2003205536029820200d20034180106a41cc0310bf091a200320034198206a204e204f10c3062053450d0920032053417f6a22533602a00c2002450d0741012105024002400340200620022f01a629490d01024020022802a02922540d0020021031410221550c030b20022f01a4292106200210312005417f6a2105205421020c000b0b2002200641d0036c6a2254280200215520034198206a205441046a41cc0310bf091a200641016a2154200220064104746a220641f8276a290300214f200641f0276a290300214e0240024020054101470d00205421060c010b200220544102746a41a8296a280200210202402005450d000340200541016a220620054f215420022802a82921022006210520540d000b0b410021060b200341901c6a20034198206a41cc0310bf091a0b20034180106a200341901c6a41cc0310bf091a0c000b0b2001290210214e20014200370210200128020c21512001205636020c2003204e37029c20200320513602982020034188086a20034198206a10cb042003280288082105200328028c0821022003280290082106024020032802a0082254450d002002450d052054417f6a2153410120056b2105024002400340200620022f01ae2b490d01024020022802a82b22540d0020021031410221550c030b20022f01ac2b2106200210312005417f6a2105205421020c000b0b2002200641f8036c6a2254280200215520034180106a205441046a41f40310bf091a200641016a2106024020054101460d00200220064102746a41b02b6a280200210202402005450d0041002106034020022802b02b210220052006417f6a2206470d000b0b410021060b200341880c6a20034180106a41f40310bf091a0b20034198186a200341880c6a41f40310bf091a20034198206a20034198186a41f40310bf091a200341f8136a20034198206a41f40310bf091a0240034020034180106a200341f8136a41f40310bf091a200341901c6a200341f8136a41f40310bf091a2003205536029820200d20034180106a41cc0310bf091a200e41206a200f41206a290200370200200e41186a200f41186a290200370200200e41106a200f41106a290200370200200e41086a200f41086a290200370200200e200f290200370200200a20034198206a1089082053450d012002450d062053417f6a215341012105024002400340200620022f01ae2b490d01024020022802a82b22540d0020021031410221550c030b20022f01ac2b2106200210312005417f6a2105205421020c000b0b2002200641f8036c6a2254280200215520034180106a205441046a41f40310bf091a200641016a2106024020054101460d00200220064102746a41b02b6a280200210202402005450d000340200541016a220620054f215420022802b02b21022006210520540d000b0b410021060b200341880c6a20034180106a41f40310bf091a0b20034198186a200341880c6a41f40310bf091a20034198206a20034198186a41f40310bf091a200341f8136a20034198206a41f40310bf091a0c000b0b410021050b02402002450d00200341003602a420200320063602a0202003200236029c20200320053602982020034198206a109b040b205121560c080b20034198206a20034190046a41f80310bf091a0c010b20034198206a20034190046a41f80310bf091a0b0240024002400240200328029820417c6a0e03020001000b418c93ca00412841f0a8c600103c000b201a201b41c80310bf091a410021020c010b2019200d290200370200201941086a200d41086a280200360200410121020b200320023602880c2001280200215120012057360200200128020421022001280208210520014200370204200342003702f41720034188086a205120022005108404200341f8136a41186a20034188086a41186a2802002202360200200341f8136a41106a20034188086a41106a290300370300200341f8136a41086a201f29030037030020032003290388083703f8130240024002402002450d0020032002417f6a22553602901420032802fc132202450d02410120032802f8136b21052003280280142154024002400340205420022f01a629490d01024020022802a02922060d0020021031410221530c030b20022f01a4292154200210312005417f6a2105200621020c000b0b2002205441d0036c6a22062802002153200341901c6a200641046a41cc0310bf091a205441016a2106200220544104746a225441f8276a290300214f205441f0276a290300214e024020054101460d00200220064102746a41a8296a280200210202402005450d0041002106034020022802a829210220052006417f6a2206470d000b0b410021060b20034180106a200341901c6a41cc0310bf091a0b20034198186a20034180106a41cc0310bf091a03402003200636028014200320023602fc13200341003602f8132003205336028010201320034198186a41cc0310bf091a02400240205320032802880c470d000240024020534101460d002018201a10c6060d010c020b200328028c10220520032802940c470d01200328028410200328028c0c200510c2090d010b200341901c6a20034180106a41d00310bf091a2003200341901c6a204e204f10c3060c010b200341901c6a20034180106a41d00310bf091a200341f0176a200341901c6a204e204f10b7040b2055450d0120032055417f6a2255360290142002450d0241012105024002400340200620022f01a629490d01024020022802a02922540d0020021031410221530c030b20022f01a4292106200210312005417f6a2105205421020c000b0b2002200641d0036c6a22542802002153200341901c6a205441046a41cc0310bf091a200641016a2154200220064104746a220641f8276a290300214f200641f0276a290300214e0240024020054101470d00205421060c010b200220544102746a41a8296a280200210202402005450d000340200541016a220620054f215420022802a82921022006210520540d000b0b410021060b20034180106a200341901c6a41cc0310bf091a0b20034198186a20034180106a41cc0310bf091a0c000b0b200341f8136a10c2042001109a04200141086a200341f0176a41086a280200360200200120032903f0173702000240024020032802880c0d00201a10ad010c010b20032802900c450d00200328028c0c10310b02400240200328029820417c6a0e03010001000b20034198206a10aa010b205121570c110b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b200341880c6a10c204205121520b20034190046a10aa010c090b200341880c6a20034190046a41f80310bf091a0c010b200341880c6a20034190046a41f80310bf091a0b024002400240024020032802880c41776a0e03020001000b418c93ca00412841a0a9c600103c000b2023201a41c80310bf091a20034180106a41206a202441206a29030037030020034180106a41186a202441186a29030037030020034180106a41106a202441106a2903003703002018202441086a2903003703002003202429030037038010200341901c6a20034198206a41cc0310bf091a410021020c010b2011201941086a2802003602002018202241086a29030037030020034180106a41106a202241106a29030037030020034180106a41186a202241186a29030037030020034180106a41206a202241206a290300370300200320192902003703901c2003202229030037038010410121020b200341f8136a200341901c6a41cc0310bf091a20034188086a41206a220520034180106a41206a29030037030020034188086a41186a220620034180106a41186a29030037030020034188086a41106a225420034180106a41106a290300370300201f201829030037030020032003290380103703880820032002360280102013200341f8136a41cc0310bf091a202141206a2005290300370300202141186a2006290300370300202141106a2054290300370300202141086a201f290300370300202120032903880837030002400240024020012802102206450d00200b28020021510240034020062f01ae2b21544100210520062102024002400340205420052253460d01205341016a210520034180106a200210fa042155200241f8036a21020240205541187441187541016a0e03000301000b0b2005417f6a21540b2051450d022051417f6a2151200620544102746a41b02b6a28020021060c010b0b200341003a00d80b024002402051450d002051417f6a2105200620534102746a41b02b6a28020021020240034020022f01ae2b21062005450d012005417f6a2105200220064102746a41b02b6a28020021020c000b0b200341003602981820032006417f6a410020061b3602a01820032002410020061b36029c1820034198206a20034198186a200341d80b6a10f207200341e80b6a41086a2253201741086a290300370300200341e80b6a41106a2255201741106a290300370300200320172903003703e80b20034198206a41186a290300214f20034198206a41386a290300215020034198206a41306a290300215820034198206a41286a290300215920034198206a41d8006a290300215a20034198206a41d0006a290300215b20034198206a41c8006a290300215c20034198206a41f8006a290300215d20034198206a41f0006a290300215e20034198206a41e8006a290300215f20034198206a4198016a290300216020034198206a4190016a290300216120034198206a4188016a290300216220034198206a41b8016a290300216320034198206a41b0016a290300216420034198206a41a8016a290300216520034198206a41d8016a290300216620034198206a41d0016a290300216720034198206a41c8016a290300216820034198206a41f8016a290300216920034198206a41f0016a290300216a20034198206a41e8016a290300216b20034198206a4198026a290300216c20034198206a4190026a290300216d20034198206a4188026a290300216e20034198206a41b8026a290300216f20034198206a41b0026a290300217020034198206a41a8026a290300217120034198206a41d8026a290300217220034198206a41d0026a290300217320034198206a41c8026a290300217420034198206a41f8026a290300217520034198206a41f0026a290300217620034198206a41e8026a290300217720034198206a4198036a290300217820034198206a4190036a290300217920034198206a4188036a290300217a20034198206a41b8036a290300217b20034198206a41b0036a290300217c20034198206a41a8036a290300217d20034198206a41d8036a290300217e200e290300217f20034198206a41c8036a29030021800120032903a820214e20032903a02021810120032903982021820120032903b82021830120032903d82021840120032903f82021850120032903982121860120032903b82121870120032903d82121880120032903f821218901200329039822218a0120032903b822218b0120032903d822218c0120032903f822218d01200329039823218e0120032903b823218f0120032903d823219001200328029024215402400240200328029824220620032802942422022f01ae2b4f0d00200221050c010b0340024020022802a82b22050d00410021050c020b205441016a215420022f01ac2b210620052102200620052f01ae2b4f0d000b0b20034198206a41106a22512055290300370300201b20532903003703002005200641f8036c6a22022903102191012002204e370310200229030821920120022081013703082002290300214e200220820137030020022902202181012002208301370220200229024021820120022084013702402002290260218301200220850137026020022902800121840120022086013702800120022902a00121850120022087013702a001200241186a22532903002186012053204f370300200241386a2253290200214f20532050370200200241306a2253290200215020532058370200200241286a2253290200215820532059370200200241d8006a225329020021592053205a370200200241d0006a2253290200215a2053205b370200200241c8006a2253290200215b2053205c370200200241f8006a2253290200215c2053205d370200200241f0006a2253290200215d2053205e370200200241e8006a2253290200215e2053205f37020020024198016a2253290200215f2053206037020020024190016a225329020021602053206137020020024188016a2253290200216120532062370200200241b8016a2253290200216220532063370200200241b0016a2253290200216320532064370200200241a8016a2253290200216420532065370200200320032903e80b3703982020022902c0012165200241d8016a2253290200218701200241d0016a2255290200219301200241c8016a2294012902002195012053206637020020552067370200209401206837020020022088013702c001200241f8016a2253290200216620532069370200200241f0016a225329020021672053206a370200200241e8016a225329020021682053206b37020020022902e001216920022089013702e00120024198026a2253290200216a2053206c37020020024190026a2253290200216b2053206d37020020024188026a2253290200216c2053206e370200200229028002216d2002208a0137028002200241b8026a2253290200216e200241b0026a2255290200218801200241a8026a22940129020021890120022902a002218a012053206f3702002055207037020020940120713702002002208b013702a002200241d8026a2253290200216f200241d0026a22552902002170200241c8026a229401290200217120022902c002218b01205320723702002055207337020020940120743702002002208c013702c002200241f8026a22532902002172200241f0026a22552902002173200241e8026a229401290200217420022902e002218c01205320753702002055207637020020940120773702002002208d013702e00220024198036a2253290200217520024190036a2255290200217620024188036a2294012902002177200229028003218d012053207837020020552079370200209401207a3702002002208e0137028003200241b8036a22532902002178200241b0036a22552902002179200241a8036a229401290200217a20022902a003218e012053207b3702002055207c370200209401207d3702002002208f013702a003200241d8036a2253290200217b200241d0036a2255290200217c200241c8036a229401290200217d20022902c003218f012053207e3702002055207f37020020940120800137020020022090013702c003200341f0176a41106a2253200241f0036a2255290000370300200341f0176a41086a229401200241e8036a229601290000370300200320022900e0033703f01720552051290300370000209601201b29030037000020022003290398203700e003201d20940129030037030020034198186a41106a22552053290300370300200320032903f01737039818200641016a210202402054450d00200520024102746a41b02b6a280200210502402054417f6a2202450d00034020052802b02b21052002417f6a22020d000b0b410021020b2016200329039818370300200341901c6a41c8036a207d370300204c207a3703002049207737030020462074370300204320713703002040208901370300203d206c370300203a206837030020372095013703002034206437030020312061370300202e205e370300202b205b37030020282058370300200341901c6a41d0036a207c370300204b2079370300204820763703002045207337030020422070370300203f208801370300203c206b3703002039206737030020362093013703002033206337030020302060370300202d205d370300202a205a37030020272050370300201641086a201d290300370300201641106a2055290300370300204d207b370300204a207837030020472075370300204420723703002041206f370300203e206e370300203b206a37030020382066370300203520870137030020322062370300202f205f370300202c205c370300202920593703002026204f3703002003204e3703901c200341901c6a41186a2086013703002003208f013703d01f2003208e013703b01f2003208d013703901f2003208c013703f01e2003208b013703d01e2003208a013703b01e2003206d3703901e200320693703f01d200320653703d01d20032085013703b01d20032084013703901d20032083013703f01c20032082013703d01c20032081013703b01c20032092013703981c20032091013703a01c20032002360290202003200536028c202003410036028820204ea721020c010b200320533602a0202003200636029c202003410036029820200341901c6a20034198206a200341d80b6a10f20720032802901c21020b20034198186a201241f40310bf091a20012001280214417f6a360214024020032d00d80b450d0020012802102205450d03200b2802002254450d0420052802b02b210620012054417f6a36020c20012006360210200641003602a82b200510310b20024102460d002003200236029820200d20034198186a41f40310bf091a200a20034198206a10f9040b20032802801021020b0240024020020d00201810ad010c010b200328028810450d0020032802841010310b024020032d00d0134106490d0020032802d813450d0020032802d41310310b024020032802880c41776a0e03090009000b200341880c6a10aa010c080b418a98ca00412b41e499ca00103c000b41e98fca004121418c90ca00103c000b20034198206a20034190046a41f80310bf091a0c010b20034198206a20034190046a41f80310bf091a0b024002400240024020032802982041786a0e03020001000b418c93ca0041284190a9c600103c000b20034198206a41d8036a290300214e20032903e823214f2020201b41c80310bf091a20034180106a200341901c6a41cc0310bf091a410021940141012197010c010b2018200d41086a2802003602002003200d2902003703801020034198206a41186a290300214e20032903a820214f410121940141002197010b200320940136029818201c20034180106a41cc0310bf091a0240024020012802042253450d002053215420012802002296012151034020542f01a62922980141d0036c2102417f21062054210502400340024020020d0020980121060c020b200641016a2106200241b07c6a210220034198186a200510b8042155200541d0036a21050240205541187441187541016a0e03020001020b0b024002400240205420064104746a220241f0276a2903002258204f58200241f8276a2903002250204e582050204e511b0d0002400240209401450d0020032802a4182202417f4c0d04200328029c182154410121054101210602402002450d002002102f2206450d040b20062054200210bf0921062003200236029c1c200320023602981c200320063602941c0c010b20034180106a201d10d705201120034180106a41c80310bf091a410021050b200320053602901c2001200341901c6a2058204f7d2050204e7d2058204f54ad7d10b704200341901c6a20034198186a41d00310bf091a2003200341901c6a204f204e10c3060c060b034020532f01a629225541d0036c215441002102417f2106024002400340024020542002470d00205521060c020b205320026a2105200641016a2106200241d0036a2102024020034198186a200510b80441187441187541016a0e03020001020b0b200341003a00e80b02400240209601450d00209601417f6a2105205320064102746a41a8296a28020021020240034020022f01a62921062005450d012005417f6a2105200220064102746a41a8296a28020021020c000b0b200341003602880c20032006417f6a410020061b3602900c20032002410020061b36028c0c200341901c6a200341880c6a200341e80b6a108a08201f201541086a2903003703002003201529030037038808200341901c6a41186a290300214e2026290300214f202729030021592028290300215a2029290300215b202a290300215c202b290300215d202c290300215e202d290300215f202e2903002160202f290300216120302903002162203129030021632032290300216420332903002165203429030021662035290300216720362903002168203729030021692038290300216a2039290300216b203a290300216c203b290300216d203c290300216e203d290300216f203e2903002170203f290300217120402903002172204129030021732042290300217420432903002175204429030021762045290300217720462903002178204729030021792048290300217a2049290300217b204a290300217c204b290300217d204c290300217e20032903a01c217f20032903981c21800120032903901c21810120032903b01c21820120032903d01c21830120032903f01c21840120032903901d21850120032903b01d21860120032903d01d21870120032903f01d21880120032903901e21890120032903b01e218a0120032903d01e218b0120032903f01e218c0120032903901f218d0120032903b01f218e01204d290300218f0120032903e01f21900120032802f01f21540240024020032802f81f220620032802f41f22022f01a6294f0d00200221050c010b0340024020022802a02922050d00410021050c020b205441016a215420022f01a429210620052102200620052f01a6294f0d000b0b201a201f29030037030020032003290388083703880c2005200641d0036c6a220241186a22532903002191012053204e37030020022903102192012002207f3703102002290308217f20022080013703082002290300214e2002208101370300200241386a22532902002180012053204f370200200241306a2253290200214f20532059370200200241286a225329020021592053205a3702002002290220215a2002208201370220200241d8006a22532902002181012053205b370200200241d0006a2253290200215b2053205c370200200241c8006a2253290200215c2053205d3702002002290240215d2002208301370240200241f8006a22532902002182012053205e370200200241f0006a2253290200215e2053205f370200200241e8006a2253290200215f2053206037020020022902602160200220840137026020024198016a22532902002183012053206137020020024190016a225329020021612053206237020020024188016a22532902002162205320633702002002290280012163200220850137028001200241b8016a225329020021840120532064370200200241b0016a2253290200216420532065370200200241a8016a225329020021652053206637020020022902a001216620022086013702a001200241d8016a225329020021850120532067370200200241d0016a2253290200216720532068370200200241c8016a225329020021682053206937020020022902c001216920022087013702c001200241f8016a22532902002186012053206a370200200241f0016a2253290200216a2053206b370200200241e8016a2253290200216b2053206c37020020022902e001216c20022088013702e00120024198026a22532902002187012053206d37020020024190026a2253290200216d2053206e37020020024188026a2253290200216e2053206f370200200229028002216f200220890137028002200241b8026a2253290200218801200241b0026a2255290200218901200241a8026a225129020021930120022902a0022195012053207037020020552071370200205120723702002002208a013702a002200241d8026a2253290200217020532073370200200241d0026a2253290200217120532074370200200241c8026a225329020021722053207537020020022902c00221732002208b013702c002200241f8026a2253290200217420532076370200200241f0026a2253290200217520532077370200200241e8026a225329020021762053207837020020022902e00221772002208c013702e00220024198036a2253290200217820024190036a2255290200218a0120024188036a2251290200218b01200229028003218c01205320793702002055207a3702002051207b3702002002208d0137028003200241b8036a22532902002179200241b0036a2255290200217a200241a8036a2251290200217b20022902a003218d012053207c3702002055207d3702002051207e3702002002208e013702a003200341f0176a41086a2253200241c8036a2255290200370300200320022902c0033703f0172055201a290300370200200220032903880c3702c00320112053290300370300200320032903f0173703901c200520064104746a220241f0276a2253290300217c2053209001370300200241f8276a2202290300217d2002208f01370300200341f8136a41086a22532011290300370300200320032903901c3703f813200641016a210202402054450d00200520024102746a41a8296a280200210502402054417f6a2202450d00034020052802a82921052002417f6a22020d000b0b410021020b201420032903f81337030020034180106a41a8036a207b37030020034180106a4188036a208b0137030020034180106a41e8026a207637030020034180106a41c8026a207237030020034180106a41a8026a20930137030020034180106a4188026a206e37030020034180106a41e8016a206b37030020034180106a41c8016a206837030020034180106a41a8016a206537030020034180106a4188016a206237030020034180106a41e8006a205f37030020034180106a41c8006a205c37030020034180106a41286a205937030020034180106a41b0036a207a37030020034180106a4190036a208a0137030020034180106a41f0026a207537030020034180106a41d0026a207137030020034180106a41b0026a20890137030020034180106a4190026a206d37030020034180106a41f0016a206a37030020034180106a41d0016a206737030020034180106a41b0016a206437030020034180106a4190016a206137030020034180106a41f0006a205e37030020034180106a41d0006a205b37030020034180106a41306a204f370300201441086a205329030037030020034180106a41b8036a207937030020034180106a4198036a207837030020034180106a41f8026a207437030020034180106a41d8026a207037030020034180106a41b8026a20880137030020034180106a4198026a20870137030020034180106a41f8016a20860137030020034180106a41d8016a20850137030020034180106a41b8016a20840137030020034180106a4198016a20830137030020034180106a41f8006a20820137030020034180106a41d8006a20810137030020034180106a41386a2080013703002003204e3703801020034180106a41186a2091013703002003208d013703a0132003208c0137038013200320773703e012200320733703c01220032095013703a0122003206f370380122003206c3703e011200320693703c011200320663703a0112003206337038011200320603703e0102003205d3703c0102003205a3703a0102003207f3703881020032092013703901020034180106a41d8036a207d3703002003207c3703d013200320023602e813200320053602e413200341003602e013204ea721020c010b200320063602981c200320533602941c200341003602901c20034180106a200341901c6a200341e80b6a108a0820032802801021020b200341880c6a201341dc0310bf091a20012001280208417f6a36020802400240024020032d00e80b450d0020012802042205450d0120012802002254450d0220052802a829210620012054417f6a36020020012006360204200641003602a029200510310b20024102460d03200320023602901c2012200341880c6a41dc0310bf091a024020020d0020111082040c040b20032802981c450d0320032802941c10310c030b418a98ca00412b41e499ca00103c000b41e98fca004121418c90ca00103c000b209601450d00209601417f6a219601205320064102746a41a8296a28020021530c010b0b200341901c6a20034198186a41d00310bf091a2003200341901c6a2058205010c3060c050b1039000b103b000b2051450d012051417f6a2151205420064102746a41a8296a28020021540c000b0b0240209701450d00201d10ad010c010b20032802a018450d00200328029c1810310b024020032802982041786a0e03040004000b20034198206a10aa010c030b200341901c6a20034190046a41f80310bf091a0c010b200341901c6a20034190046a41f80310bf091a0b024002400240024020032802901c417b6a0e03020001000b418c93ca0041284180a9c600103c000b201f201141c80310bf091a410021020c010b201e2012290200370200201e41086a201241086a280200360200410121020b2003200236028808200128020c219401200120990136020c2001290210214e20014200370210200342003702dc0b2003204e37029c20200320940136029820200341e80b6a20034198206a10cb0420032802e80b210520032802ec0b210220032802f00b210602400240024020032802800c2254450d002002450d022054417f6a2155410120056b2105024002400340200620022f01ae2b490d01024020022802a82b22540d0020021031410221530c030b20022f01ac2b2106200210312005417f6a2105205421020c000b0b2002200641f8036c6a2254280200215320034180106a205441046a41f40310bf091a200641016a2106024020054101460d00200220064102746a41b02b6a280200210202402005450d0041002106034020022802b02b210220052006417f6a2206470d000b0b410021060b200341880c6a20034180106a41f40310bf091a0b20034198186a200341880c6a41f40310bf091a20034198206a20034198186a41f40310bf091a200341f8136a20034198206a41f40310bf091a0340200341880c6a200341f8136a41f40310bf091a20034180106a200341f8136a41f40310bf091a2003205336029818201c200341880c6a41cc0310bf091a200341f0176a41206a2205201041206a290200370300200341f0176a41186a2254201041186a290200370300200341f0176a41106a2251201041106a290200370300200341f0176a41086a229901201041086a290200370300200320102902003703f017024002402003280288082053470d000240024020534101460d00201f201d10c6060d010c020b200328029408225320032802a418470d01200328028c08200328029c18205310c2090d010b20034198206a20034198186a41d00310bf091a200e41206a2005290300370300200e41186a2054290300370300200e41106a2051290300370300200e41086a209901290300370300200e20032903f017370300200a20034198206a1089080c010b20034198206a20034198186a41d00310bf091a200e41206a2005290300370300200e41186a2054290300370300200e41106a2051290300370300200e41086a209901290300370300200e20032903f017370300200341d80b6a20034198206a10f9040b02402055450d002002450d032055417f6a215541012105024002400340200620022f01ae2b490d01024020022802a82b22540d0020021031410221530c030b20022f01ac2b2106200210312005417f6a2105205421020c000b0b2002200641f8036c6a2254280200215320034180106a205441046a41f40310bf091a200641016a2106024020054101460d00200220064102746a41b02b6a280200210202402005450d000340200541016a220620054f215420022802b02b21022006210520540d000b0b410021060b200341880c6a20034180106a41f40310bf091a0b20034198186a200341880c6a41f40310bf091a20034198206a20034198186a41f40310bf091a200341f8136a20034198206a41f40310bf091a0c010b0b410021050b02402002450d00200341003602a420200320063602a0202003200236029c20200320053602982020034198206a109b040b2018200341d80b6a41086a2802003602002001280210210220014100360210200320032903d80b3703801002402002450d000240200128020c2205450d00034020022802b02b21022005417f6a22050d000b0b200341003602a0202003200236029c202003410036029820200320012802143602a42020034198206a109b040b200b200329038010370200200b41086a2018280200360200024002402003280288080d00201f10ad010c010b200328029008450d00200328028c0810310b0240024020032802901c417b6a0e03010001000b200341901c6a10aa010b2094012199010c020b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b200c41887c6a210c20092007470d000c020b0b20072009460d000340200910aa012007200941f8036a2209470d000b0b02402008450d00200841f8036c450d00200410310b20002003290300370200200041106a200341106a290300370200200041086a200341086a2903003702000b200341a0246a24000b9d0b03017f027e017f230041a00b6b22032400024002400240024002400240024002400240024002400240024020022802000e0c01000a0b0608070903050204010b200041003602002001290200210420012902082105200142003702042000410c6a200537020020002004370204200141106a2202290200210420024200370200200041146a20043702000c0b0b20004100360200200041146a4200370200200041086a42003702000c0a0b200241d8036a2903002104200241d0036a2903002105200341f0036a41086a200241086a41c80310bf091a200341003602f00320002001200341f0036a2005200410b5090c090b200241186a2903002104200241106a2903002105200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f40320002001200341f0036a2005200410b5090c080b200341f0036a41086a200241086a41c80310bf091a200341003602f003200341f0076a200241f0036a290300370300200341e8076a200241e8036a290300370300200341e0076a200241e0036a290300370300200341d0076a41086a200241d8036a2903003703002003200241d0036a2903003703d00720002001200341f0036a200341d0076a10b6090c070b200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f403200341d0076a41206a200241306a290300370300200341d0076a41186a200241286a290300370300200341d0076a41106a200241206a290300370300200341d8076a200241186a2903003703002003200241106a2903003703d00720002001200341f0036a200341d0076a10b6090c060b200341186a22064200370300200341206a410c6a2002410c6a2802003602002003420037020c2003410136022020032002290204370224200341f0036a2001200341206a10b709024020032802f0034102460d00200341c8076a290300210420032903c0072105200341d0076a200341f0036a41d00310bf091a200341086a200341d0076a2005200410b8090b2000200329030837020420004100360200200041146a20062903003702002000410c6a200341086a41086a290300370200024020032802200d00200341206a41086a10ad010c060b2003280228450d05200328022410310c050b200341206a41086a200241086a41c80310bf092106200341186a220242003703002003420037020c20034100360220200341f0036a2001200341206a10b709024020032802f0034102460d00200341c8076a290300210420032903c0072105200341d0076a200341f0036a41d00310bf091a200341086a200341d0076a2005200410b8090b2000200329030837020420004100360200200041146a20022903003702002000410c6a200341086a41086a290300370200024020032802200d00200610ad010c050b2003280228450d04200328022410310c040b200341f0036a410c6a2002410c6a280200360200200341013602f003200320022902043702f403200341d0076a2001200341f0036a10b90920004100360200200041146a200341e0076a2903003702002000410c6a200341d0076a41086a290300370200200020032903d007370204200341f0036a41086a280200450d0320032802f40310310c030b200341f0036a41086a200241086a41c80310bf092102200341003602f003200341d0076a2001200341f0036a10b90920004100360200200041146a200341e0076a2903003702002000410c6a200341d0076a41086a290300370200200020032903d007370204200210ad010c020b20004100360200200129020021042001280208210220014200370204200041146a42003702002000410c6a2002360200200020043702040c010b20004100360200200041106a200129020c370200200041086a4200370200200141146a2802002102200141106a4200370200200041186a20023602000b200341a00b6a24000b9c0101047f0240200128020422020d0020004100360204200041106a4100360200200041003602180f0b20012802002103200221040240034020022f01a62921052003450d012003417f6a2103200220054102746a41a8296a280200210220042802a82921040c000b0b200042003702082000200436020420002003360200200041146a2005360200200041106a2002360200200020012802083602180bd50302077f017e230041b0076b22042400200441d0036a200141d00310bf091a02400240024020002802042205450d00200028020021060c010b41a829102f2205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b0240034020052f01a629220741d0036c210841002101417f210902400340024020082001470d00200721090c020b200520016a210a200941016a2109200141d0036a21010240200441d0036a200a10b80441187441187541016a0e03020001020b0b200441d0036a10b209200520094104746a220141f0276a2205427f2005290300220b20027c22022002200b542205200141f8276a2201290300220220037c2005ad7c220320025420032002511b22051b3703002001427f200320051b3703000c020b02402006450d002006417f6a2106200520094102746a41a8296a28020021050c010b0b200441d8036a2201280200210a20042903d003210b2004410c6a200441dc036a220841c40310bf091a2001200a3602002004200b3703d00320082004410c6a41c40310bf091a200441a8076a2009360200200441a4076a2005360200200420003602ac07200441003602a007200441d0036a2002200310b3091a0b200441b0076a24000f0b1039000b980101047f02400240200128020422020d004100210241002103410021010c010b20012802002104200221030240034020022f01ae2b21052004450d012004417f6a2104200220054102746a41b02b6a280200210220032802b02b21030c000b0b200128020821010b20002001360218200042003702082000200336020420002004360200200041146a2005360200200041106a20023602000bd00a02077f027e230041a0076b22022400024002400240024020012802004101470d002001410c6a2802002203417f4c0d02200128020421040240024020030d00410121050c010b2003102f2205450d040b20052004200310bf0921064100210741002108024002400240024002400240024020012d00d0030e0706010203040500060b200141dc036a2802002204417f4c0d08200141d4036a28020021010240024020040d00410121050c010b2004102f2205450d0a0b20052001200410bf0941807e7121072004ad220942208620098421094200210a410621080c050b200141e0036a290300210a200141d8036a290300210941012108410021070c040b200141d1036a2f0000200141d3036a2d0000411074722104200141d4036a2d0000210541022108410021070c030b200141d1036a2f0000200141d3036a2d0000411074722104200141d4036a280000220541807e712107200141d8036a31000021094200210a410321080c020b200141d1036a2f0000200141d3036a2d0000411074722104200141d4036a280000220541807e712107200141e0036a310000210a200141d8036a2900002109410421080c010b200241e0036a200141f0036a2d00003a00002002200141e8036a2900003703d803200141d1036a2f0000200141d3036a2d0000411074722104200141d4036a280000220541807e712107200141e0036a290000210a200141d8036a2900002109410521080b200020043b00112000200636020420004109360200200041136a20044110763a0000200041206a200a370000200041186a2009370000200041106a20083a00002000410c6a2003360200200041086a2003360200200041286a20022903d803370300200041146a2007200541ff017172360000200041306a200241d8036a41086a2903003703000c010b200241d8036a200141086a10d70520022802dc03210820022802d8032106200241086a200241d8036a41086a41c00310bf091a200241d8036a200241086a41c00310bf091a4100210541002107024002400240024002400240024020012d00d0030e0706010203040500060b200141dc036a2802002203417f4c0d07200141d4036a28020021010240024020030d00410121040c010b2003102f2204450d090b20042001200310bf0941807e7121052003ad220942208620098421094200210a410621070c050b200141e0036a290300210a200141d8036a290300210941012107410021050c040b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a2d0000210441022107410021050c030b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280000220441807e712105200141d8036a31000021094200210a410321070c020b200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280000220441807e712105200141e0036a310000210a200141d8036a2900002109410421070c010b200241c8036a41086a200141f0036a2d00003a00002002200141e8036a2900003703c803200141d1036a2f0000200141d3036a2d0000411074722103200141d4036a280000220441807e712105200141e0036a290000210a200141d8036a2900002109410521070b2000410c6a2008360200200041086a2006360200200041106a200241d8036a41c00310bf091a200041d3036a20034110763a0000200020033b00d103200041e0036a200a370000200041d8036a2009370000200041d4036a2005200441ff017172360000200041d0036a20073a00002000410b360200200041e8036a20022903c803370300200041f0036a200241c8036a41086a2903003703000b200241a0076a24000f0b103b000b1039000be20602027f017e410021020240024002400240024002400240024002402000280200220320012903002204a7470d004101210202400240024002400240024002400240024002400240024002400240024002400240024002402003417f6a0e080e00010203040506130b20044202520d12200041086a200141086a10f8040d060c1a0b20044203520d11200041086a200141086a10f8040d060c180b20044204520d10200041086a200141086a10f8040d060c160b20044205520d0f200041086a200141086a10f8040d060c140b20044206520d0e200041086a200141086a10f8040d060c120b20044207520d0d200041086a200141086a10f8040d060c100b20044208520d0c200041086a200141086a10f8040d060c0e0b200041c0006a200141c0006a10f804450d130c0b0b200041c0006a200141c0006a10f804450d11200041f8006a200141f8006a10f804450d110c0a0b200041c0006a200141c0006a10f804450d0f200041f8006a200141f8006a10f804450d0f200041b0016a200141b0016a10f804450d0f0c090b200041c0006a200141c0006a10f804450d0d200041f8006a200141f8006a10f8040d070c0d0b200041c0006a200141c0006a10f804450d0b200041f8006a200141f8006a10f804450d0b200041b0016a200141b0016a10f8040d050c0b0b200041c0006a200141c0006a10f804450d09200041f8006a200141f8006a10f8040d030c090b200041c0006a200141c0006a10f804450d07200041f8006a200141f8006a10f804450d07200041b0016a200141b0016a10f8040d010c070b20044201510d050c040b200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d05200041d8026a200141d8026a10f804450d0520004190036a20014190036a10f804450d050c030b200041b0016a200141b0016a10f804450d05200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d05200041d8026a200141d8026a10f804450d050c020b200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d050c010b200041b0016a200141b0016a10f804450d05200041e8016a200141e8016a10f804450d050b20020f0b200041086a200141086a10f8040f0b41000f0b41000f0b41000f0b41000f0b41000f0b41000f0b41000ba31603077f027e037f230041d01b6b22022400200028020821032000280204210420004200370204200241d8176a200028020020042003108404200242003702fc0b20022802dc1721030240024002400240024020022802f0172205450d002003450d0120022802e017210620022802d81721042005417f6a2107024002400340200620032f01a629490d01024020032802a02922050d0020031031410221080c030b20032f01a429210620031031200441016a2104200521030c000b0b2003200641d0036c6a22052802002108200241d8176a200541046a41cc0310bf091a200641016a2105200320064104746a220641f8276a2903002109200641f0276a290300210a02402004450d00200320054102746a41a8296a2802002103024020044101460d0041012105034020032802a82921032004200541016a2205470d000b0b410021050b200241e0136a200241d8176a41cc0310bf091a0b200241ec0f6a200241e0136a41cc0310bf091a200241d8176a410472210b0340200220083602d817200b200241ec0f6a41cc0310bf091a200241d8176a200110b109200241e0136a200241d8176a41d00310bf091a200241d8176a200241e0136a41d00310bf091a200241f80b6a200241d8176a200a200910b8092007450d012003450d032007417f6a210741012104024002400340200520032f01a629490d01024020032802a02922060d0020031031410221080c030b20032f01a4292105200310312004417f6a2104200621030c000b0b2003200541d0036c6a22062802002108200241d8176a200641046a41cc0310bf091a200541016a2106200320054104746a220541f8276a2903002109200541f0276a290300210a0240024020044101470d00200621050c010b200320064102746a41a8296a280200210302402004450d000340200441016a220520044f210620032802a82921032005210420060d000b0b410021050b200241e0136a200241d8176a41cc0310bf091a0b200241ec0f6a200241e0136a41cc0310bf091a0c000b0b02402003450d00034020032802a0292104200310312004210320040d000b0b200028020421032000410036020402402003450d00024020002802002204450d002004417f6a2104034020032802a82921032004450d012004417f6a21040c000b0b024020002802082207450d00200241d8176a410472210b41002105200241b01b6a210c03402007417f6a210741012104024002400340200520032f01a629490d01024020032802a02922060d0020031031410221080c030b20032f01a4292105200310312004417f6a2104200621030c000b0b2003200541d0036c6a22062802002108200241d8176a200641046a41cc0310bf091a200541016a2106200320054104746a220541f8276a2903002109200541f0276a290300210a0240024020044101470d00200621050c010b200320064102746a41a8296a280200210302402004450d000340200441016a220520044f210620032802a82921032005210420060d000b0b410021050b200241ec0f6a200241d8176a41cc0310bf091a0b200241d8176a200241ec0f6a41cc0310bf091a200241e0136a200241d8176a41cc0310bf091a200220083602d817200b200241e0136a41cc0310bf091a200c20093703002002200a3703a81b200241d8176a10b20920070d000b0b034020032802a0292104200310312004210320040d000b0b200020022903f80b370200200041086a200241f80b6a41086a280200360200200041146a2802002103200029020c210a200041106a4200370200200220033602e0172002200a3703d817200241186a200241d8176a10cb042002420037020c200241d80b6a41186a200241186a41186a2802002203360200200241d80b6a41106a200241186a41106a290300370300200241d80b6a41086a200241186a41086a290300370300200220022903183703d80b02402003450d0020022003417f6a220b3602f00b20022802dc0b2203450d0320022802e00b210520022802d80b2104024002400340200520032f01ae2b490d01024020032802a82b22060d0020031031410221060c030b20032f01ac2b210520031031200441016a2104200621030c000b0b2003200541f8036c6a22072802002106200241e0136a200741046a41f40310bf091a200541016a210502402004450d00200320054102746a41b02b6a2802002103024020044101460d0041012105034020032802b02b21032004200541016a2205470d000b0b410021050b200241ec0f6a200241e0136a41f40310bf091a0b200241386a200241ec0f6a41f40310bf091a200241d8176a200241386a41f40310bf091a200220053602e00b200220033602dc0b200241003602d80b200241f80b6a200241d8176a41f40310bf091a200241d8176a41cc036a2107200241e0136a41d0036a2108200241386a410472210c0340200241ec0f6a200241f80b6a41f40310bf091a200241d8176a200241f80b6a41f40310bf091a20022006360238200c200241ec0f6a41cc0310bf091a200241386a200110b109200241e0136a200241386a41d00310bf091a200841206a200741206a290200370200200841186a200741186a290200370200200841106a200741106a290200370200200841086a200741086a29020037020020082007290200370200200241d8176a200241e0136a41f80310bf091a200241086a200241d8176a108908200b450d012002200b417f6a220b3602f00b20022802dc0b2203450d05410120022802d80b6b210420022802e00b2105024002400340200520032f01ae2b490d01024020032802a82b22060d0020031031410221060c030b20032f01ac2b2105200310312004417f6a2104200621030c000b0b2003200541f8036c6a220d2802002106200241e0136a200d41046a41f40310bf091a200541016a2105024020044101460d00200320054102746a41b02b6a280200210302402004450d0041002105034020032802b02b210320042005417f6a2205470d000b0b410021050b200241ec0f6a200241e0136a41f40310bf091a0b200241386a200241ec0f6a41f40310bf091a200241d8176a200241386a41f40310bf091a200220053602e00b200220033602dc0b200241003602d80b200241f80b6a200241d8176a41f40310bf091a0c000b0b2000410c6a2101200241d80b6a10b409200028021021032000410036021002402003450d000240200028020c2204450d002004417f6a2104034020032802b02b21032004450d012004417f6a21040c000b0b024020002802142207450d00200241d8176a410472210b4100210503402007417f6a210741012104024002400340200520032f01ae2b490d01024020032802a82b22060d0020031031410221080c030b20032f01ac2b2105200310312004417f6a2104200621030c000b0b2003200541f8036c6a22062802002108200241e0136a200641046a41f40310bf091a200541016a2105024020044101460d00200320054102746a41b02b6a280200210302402004450d000340200441016a220520044f210620032802b02b21032005210420060d000b0b410021050b200241ec0f6a200241e0136a41f40310bf091a0b200241386a200241ec0f6a41f40310bf091a200241f80b6a200241386a41f40310bf091a200220083602d817200b200241f80b6a41f40310bf091a200241d8176a10b209024020022d00a81b4106490d0020022802b01b450d0020022802ac1b10310b20070d000b0b034020032802a82b2104200310312004210320040d000b0b20012002290308370200200141086a200241086a41086a280200360200200241d01b6a24000f0b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000bad0903027f017e057f23004190096b22022400200241386a200141386a290200370300200241306a200141306a290200370300200241286a200141286a290200370300200241206a200141206a290200370300200241186a200141186a290200370300200241106a200141106a290200370300200241086a200141086a2902003703002002200129020037030020024180016a200210fe080240024002400240200228028001410c460d00200241f8046a20024180016a41f80310bf091a200228022021030240024020022802004101460d00410021012003450d012002413c6a28020021010c010b2002411c6a28020021012003450d00417f20012002413c6a2802006a220320032001491b21010b0240417f200141016a220320032001491bad42f8037e2204422088a70d002004a72201417f4c0d002001102f2205450d022005200241f8046a41f80310bf091a200241c0006a41386a200241386a290300370300200241c0006a41306a200241306a290300370300200241c0006a41286a200241286a290300370300200241c0006a41206a200241206a290300370300200241c0006a41186a200241186a290300370300200241c0006a41106a200241106a290300370300200241c0006a41086a200241086a29030037030020022002290300370340200141f8036e210620024180016a200241c0006a10fe080240200228028001410c470d00410121010c040b41f8032103417f21074101210102400340200241f8046a20024180016a41f80310bf091a024020012006470d00200228026021080240024020022802404101460d00200228027c410020081b21090c010b200228025c21092008450d00417f2009200228027c6a220820082009491b21090b200620076a417f200941016a220820082009491b22094f0d00200120096a22092001490d03200641017422082009200820094b1b22094104200941044b1bad42f8037e2204422088a74541037421092004a721080240024020060d0020024100360280090c010b200241083602880920022005360280092002200641f8036c360284090b200241f0086a2008200920024180096a104e20022802f808210620022802f0084101460d0220022802f4082105200641f8036e21060b200520036a200241f8046a41f80310bf091a200341f8036a21032007417f6a2107200141016a210120024180016a200241c0006a10fe08200228028001410c460d050c000b0b20060d020b103b000b200041003602082000420837020002402002280200450d00200241047210c2040b2002280220450d02200241286a22032802002101200341003602002001450d02200241246a280200210320022002412c6a28020036028005200220013602fc04200220033602f80420022002413c6a28020036028405200241f8046a109b040c020b1039000b02402002280240450d00200241c0006a41047210c2040b02402002280260450d00200241e8006a22072802002103200741003602002003450d00200241e4006a28020021072002200241ec006a28020036028005200220033602fc04200220073602f8042002200241fc006a28020036028405200241f8046a109b040b2000200136020820002006360204200020053602000b20024190096a24000bc50801027f0240024002400240024002400240024020002d00000e0707000102030405060b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0520024198046c450d05200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041146a2802002202450d04200241f8036c450d04200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0320024198046c450d03200028021010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0220024198046c450d02200028021010310f0b200041186a10ad0102402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d01200241f8036c450d01200028020410310c010b200041106a10aa0102402000410c6a2802002201450d00200041046a2802002102200141e0076c21010340200210a601200241e0076a2102200141a0786a22010d000b0b200041086a2802002202450d00200241e0076c450d00200028020410310f0b0b130020004104360204200041d8a6c4003602000b34002000418dc7c00036020420004100360200200041146a4104360200200041106a41e4c0c400360200200041086a42083702000b7a01017f230041106b2202240020004100360208200042013702002002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e2002420037030820024200370300200020024110107e200241106a24000b4601027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024200370300200020024110107e200241106a24000b130020004101360204200041fcc7c4003602000b4a01027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024280c8afa025370300200020024110107e200241106a24000bfa0201027f230041106b220424000240024002400240024020012802000e03000102030b200441003a0000200320044101107e4120102f2205450d0320044220370204200420053602002004200141086a4120107e2003200428020022052004280208107e02402004280204450d00200510310b20042001280204360200200320044104107e0c020b200441013a0000200320044101107e4120102f2205450d0220044220370204200420053602002004200141086a4120107e2003200428020022052004280208107e02402004280204450d00200510310b20042001280204360200200320044104107e0c010b200441023a0000200320044101107e4120102f2205450d0120044220370204200420053602002004200141086a4120107e2003200428020022052004280208107e02402004280204450d00200510310b20042001280204360200200320044104107e0b20042000370300200320044108107e20042002370300200320044108107e200441106a24000f0b1039000b810301037f230041106b2202240020004100360208200042013702002001200010f905200141106a200010f9052002200128022036020c20002002410c6a4104107e2002200128022436020c20002002410c6a4104107e2002200128022836020c20002002410c6a4104107e200141306a28020021030240024002400240200141386a200141346a200128022c4101461b280200220441c000490d00200441808001490d012004418080808004490d02200241033a000c20002002410c6a4101107e2002200436020c20002002410c6a4104107e0c030b200220044102743a000c20002002410c6a4101107e0c020b200220044102744101723b010c20002002410c6a4102107e0c010b2002200441027441027236020c20002002410c6a4104107e0b02402004410c6c2204450d00200320046a21040340200020034108107e2002200341086a28020036020c20002002410c6a4104107e2003410c6a22032004470d000b0b2002200128023c36020c20002002410c6a4104107e200241106a24000b0d00200141bc8dca00410210590b34002000419acbc40036020420004100360200200041146a4104360200200041106a41a0cbc400360200200041086a42033702000b3701027f024041e000102f2202450d004104102f2203450d0020004204370204200020033602002000410010cb01200210310f0b1039000be40401017f230041c0006b2202240002400240024002400240200028020022002802000e0401020300010b200220002802043602202002200041086a280200360224200241146a41013602002002410136020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241d4bcc0003602282002200241086a36023820012000200241286a104021000c030b200220002802043602202002200041086a280200360224200241146a41013602002002410136020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241ecbcc0003602282002200241086a36023820012000200241286a104021000c020b200220002802043602042002200041086a28020036022020022000410c6a280200360224200241086a41146a4101360200200241086a410c6a41013602002002410136020c2001411c6a28020021002002200241246a3602182002200241206a3602102002200241046a36020820012802182101200241286a41146a41033602002002420437022c20024184bdc0003602282002200241086a36023820012000200241286a104021000c010b200220002802043602202002200041086a280200360224200241146a41013602002002410136020c2001411c6a28020021002002200241246a3602102002200241206a360208200128021821012002413c6a41023602002002420337022c200241a4bdc0003602282002200241086a36023820012000200241286a104021000b200241c0006a240020000bab0201027f230041106b2202240002400240200028020022002d00004102460d002002200128021841a480ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41fcdac40010501a20022d0008210120022802042203450d01200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c010b200128021841a880ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470b6c01017f230041206b22022400200241b8a8c80036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a290200370300200220012902003703082002418cdbc400200241046a418cdbc400200241086a41c0a8c8001063000b6c01017f230041206b2202240020024180aac80036020420022000360200200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241acdbc400200241046a41acdbc400200241086a4190aac8001063000b8f0201027f20014180feff07714108762102024002402001410171450d00411f210341a9fac900210102400240200241ff01710e03000103000b41c100210341e8f9c90021010c020b41c100210341a7f9c90021010c010b411f21034188f9c9002101024002400240024002400240024002400240200241ff01710e0a00060102030405090708000b4120210341e8f8c90021010c080b412721034188f8c90021010c070b4117210341f1f7c90021010c060b41d2f7c90021010c050b4126210341acf7c90021010c040b412a21034182f7c90021010c030b4139210341aff8c90021010c020b413b210341c7f6c90021010c010b41d200210341f5f5c90021010b20002003360204200020013602000be50201067f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a28020020002802006b716b4101470d00200221030240024002402002450d00200220026a22032002490d04200141106a41086a4108360200200120024104743602142001200028020836021020012003410474200341ffffffff0071200346410374200141106a104e200141086a280200210320012802004101460d01200020012802043602082000410c6a200341047622033602000b20032002410174470d0420002802002204200041046a28020022054d0d022005200220046b22064f0d012000280208220320024104746a2003200541047410bf091a200041046a2200200028020020026a3602000c020b2003450d021039000b20002802082202200320066b22034104746a200220044104746a200641047410bf091a200020033602000b200141206a24000f0b103b000b41dcdbc400412b4188dcc400103c000beb0201067f230041206b220124000240024002402000410c6a28020022022002417f6a200041046a28020020002802006b716b4101470d00200221030240024002402002450d00200220026a22032002490d04200141106a41086a4104360200200120024102743602142001200028020836021020012003410274200341ffffffff0371200346410274200141106a104e200141086a280200210320012802004101460d01200020012802043602082000410c6a200341027622033602000b20032002410174470d0420002802002204200041046a28020022054d0d022005200220046b22064f0d01200041086a280200220320024102746a2003200541027410bf091a200041046a2200200028020020026a3602000c020b2003450d021039000b200041086a2802002202200320066b22034102746a200220044102746a200641027410bf091a200020033602000b200141206a24000f0b103b000b41dcdbc400412b4188dcc400103c000b880301077f410121020240024002400240024002402001280208220341016a2204200128020422054d0d000c010b200320054f0d012001280200220620036a2d00002107200120043602080240200741037122084103460d0002400240024020080e03000102000b20074102762108410021020c030b0240200341026a220320054d0d000c030b200120033602082004417f460d04200620046a2d0000410874200772220141ffff0371418002490d02200141fcff03714102762108410021020c020b200341046a220320054b0d01200120033602082004417d4f0d04200620046a22012f0000200141026a2d000041107472410874200772220141808004492102200141027621080c010b0240200741034d0d000c010b200341056a220320054b0d00200120033602082004417c4f0d04200620046a28000022084180808080044921020b20002008360204200020023602000f0b2003200541dc82ca00103f000b417f200341e481ca001062000b2004200341e481ca001062000b2004200341e481ca001062000b9f0101027f230041106b220224000240024020002d000422034102470d00200241003a000b20012002410b6a4101107e0c010b200241013a000b20012002410b6a4101107e2002200028020036020c20012002410c6a4104107e024020034101460d00200241003a000b20012002410b6a4101107e0c010b200241013a000b20012002410b6a4101107e2001200041046a41016a4120107e0b200241106a24000b1100418c93ca00412841e8dcc400103c000b1100418c93ca00412841f8dcc400103c000bf60501087f230041206b22042400024002400240200141086a280200220541036a2206417f4c0d0020012d000021072001280204210820012d000121094101210102402006450d002006102f2201450d020b20002001360200200041086a4100360200200041046a2006360200200541017420076a220141ffff03200141ffff03491b220641c0006a41ff0020062006413e2006413e491b220a461b21012006200a6b21064101210a02400340024002400240200a41ff01714102470d002001210b0c010b4100210b200a410171450d004100210a0c010b2006450d020240200641ff014b0d002006417f6a21014102210a410021060c010b200641817e6a210641ff0121014102210a0b200420013a00102000200441106a4101107e200b21010c000b0b024002400240024020070d00200041046a2802002106200041086a28020021010c010b0240200041086a220b280200220a200041046a2802002206470d00200a41016a2201200a490d04200a41017422062001200620014b1b22014108200141084b1b210102400240200a0d00200441003602100c010b200441106a41086a41013602002004200a360214200420002802003602100b200420014101200441106a108701200441086a280200210620042802004101460d0220002004280204360200200041046a20063602000b200b200a41016a22013602002000280200200a6a2009410f713a00000b200620016b2005490d01200028020021060c040b2006450d010c020b200120056a220a2001490d002006410174220b200a200b200a4b1b220a4108200a41084b1b210a0240024020060d00200441003602100c010b200441106a41086a410136020020042006360214200420002802003602100b2004200a4101200441106a108701200441086a280200210a024020042802004101460d00200020042802042206360200200041046a200a3602000c030b200a0d010b103b000b1039000b200620016a2008200510bf091a200041086a200120056a36020020022003200010ce01200441206a24000b130020004101360204200041a8ddc4003602000bf40202027f027e230041e0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a02402001450d00200241d4006a41193602002002411c6a41023602002002420237020c200241f4ddc4003602082002410436024c200241ecddc4003602482002200241c8006a3602182002200241d8006a360250200241086a4184dec4001047000b200241c0006a41002903c8ec40370300200241386a41002903c0ec40370300200241306a41002903b8ec40370300200241286a41002903b0ec40370300200241206a41002903a8ec40370300200241186a41002903a0ec40370300200241106a4100290398ec4037030020024100290390ec40370308200241c8006a200241086a10d1062002350250210420023502482105200241e0006a240020052004422086840bd51e02087f017e230041b0146b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200242808080808020370214200220013602bc0b200220003602b80b2002200241b80b6a360210200241c80b6a200241106a10c60302400240024020022802cc0b2200450d00200241d40b6a280200210420022802d00b210520022802c80b2106200241e8026a200241d80b6a41e00010bf091a200241c80b6a200241106a10e40620022802c80b22070d0102402004450d00200441246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2005450d00200541246c450d00200010310b200241f0016a200241f0006a41e00010bf091a0c010b200241d00b6a280200210820022802cc0b2109200241f0006a200241e8026a41e00010bf091a200241f0016a200241f0006a41e00010bf091a200241d00a6a200241f0016a41e00010bf091a0240024020022802102802040d00200241c80b6a200241d00a6a41e00010bf091a0c010b02402004450d00200441246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200010310b02402008450d00200841d8086c210320072100034002402000220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b200141d8086a210020014198016a10b301200341a8776a22030d000b0b410021002009450d00200941d8086c450d00200710310b2000450d00200241106a200241c80b6a41e00010bf091a200241fc006a2004360200200241f0006a41086a20053602002002200036027420022006360270200241f0006a41106a200241106a41e00010bf092101200241e8016a2008360200200241e4016a2009360200200220073602e001200241f0006a10e5060240024002400240024002402006450d00200241d00a6a2006417f6a109e03200241c80b6a20022802d00a220020022802d80a10da0220022d00c80b2103200241e8026a41186a2206200241e10b6a290000370300200241e8026a41106a200241d90b6a290000370300200241e8026a41086a200241d10b6a290000370300200220022900c90b3703e8020240024020034101460d00200241f0016a41186a420037030020024180026a4200370300200241f8016a4200370300200242003703f0010c010b200241f0016a41186a2006290300370300200241f0016a41106a200241e8026a41106a290300370300200241f0016a41086a200241e8026a41086a290300370300200220022903e8023703f0010b024020022802d40a450d00200010310b200241f0016a2001412010c2090d0020074198016a2106200841d8086c210141002104417f210520072103024003402001450d014101210002400240200341e8006a2903004202520d004100210002402006280200417e6a0e0d02000000000000000000000002000b410121000b410121040b200341d8086a2103200641d8086a2106200141a8776a2101200541016a210520000d002004410171450d000b200220053602e802200241dc0b6a4101360200200242013702cc0b200241a0d2c7003602c80b200241013602e4022002200241e0026a3602d80b2002200241e8026a3602e002200241c80b6a41a8d2c7001047000b10e606200241f0016a200241f0006a41f00010bf091a2007200841d8086c6a210020022802f001210602400240024020080d00200721030c010b200241c80b6a41f0006a21032007210102400340200241d00a6a200141e80010bf091a200141e8006a290300210a200241e8026a200141f0006a41e80710bf091a200a4203510d01200241c80b6a200241d00a6a41e80010bf091a2002200a3703b00c2003200241e8026a41e80710bf091a200241b80b6a200241c80b6a10e70620022d00b80b0d05200141d8086a22012000470d000c030b0b200141d8086a21030b20002003460d002007200841d8086c6a210003402003220141d8086a21030240200141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b20014198016a10c70420002003470d000b0b02402009450d00200941d8086c450d00200710310b200241a1e2c800411010c002200228020421010240200228020022034101470d0041a1e2c800411010bd020b20024180036a22004200370300200241e8026a41106a22054200370300200241e8026a41086a22044200370300200242003703e802200241c80b6a41f3c6c000410610a7022004200241c80b6a41086a2207290000370300200220022900c80b3703e802200241c80b6a41988fc900410e10a70220002007290000370300200520022900c80b37030020022001410020031b3602c80b200241e8026a4120200241c80b6a4104109f024101200210e806200610e90610ea06450d02200241c80b6a10eb062002200241f0016a410c6a28020022053602b80b2002200241c80b6a410c6a28020022013602d00a20052001470d032005450d0520022802cc0b210420022802f401210741002100034002400240200720006a22012d00002206200420006a22032d0000470d0002400240024002400240024020060e06000304050102000b200141016a200341016a412010c2090d050c060b200141046a2802002208200341046a280200470d042008450d05200141086a280200200341086a280200470d042001410c6a2802002003410c6a280200470d040c050b2001410c6a28020022082003410c6a280200470d03200141046a280200200341046a280200200810c2090d030c040b200141016a280000200341016a280000470d02200141106a2802002208200341106a280200470d02200141086a280200200341086a280200200810c2090d020c030b200141016a280000200341016a280000470d01200141106a2802002208200341106a280200470d01200141086a280200200341086a280200200810c2090d010c020b200141016a280000200341016a280000470d00200141106a2802002208200341106a280200470d00200141086a280200200341086a280200200810c209450d010b418cccc800411410d904200241e8026a200110ec0620022802e802220620022802f00210ed06024020022802ec02450d00200610310b200241e8026a200310ec0620022802e802220620022802f00210ed06024020022802ec02450d00200610310b20012d000020032d00002206470d060b024002400240024002400240024020060e06050203040001050b200141046a2802002206200341046a280200470d0b2006450d05200141086a280200200341086a280200470d0b2001410c6a2802002003410c6a280200470d0b0c050b2001410c6a28020022062003410c6a280200470d0a200141046a280200200341046a280200200610c2090d0a0c040b200141016a280000200341016a280000470d09200141106a2802002206200341106a280200470d09200141086a280200200341086a280200200610c2090d090c030b200141016a280000200341016a280000470d08200141106a2802002206200341106a280200470d08200141086a280200200341086a280200200610c2090d080c020b200141016a280000200341016a280000470d07200141106a2802002206200341106a280200470d07200141086a280200200341086a280200200610c209450d010c070b200141016a200341016a412010c2090d060b200041246a21002005417f6a22050d000c060b0b41f1d1c700411c4190d2c700103c000b200241086a20022f00b90b20022d00bb0b4110747210d906200220022903083703a014200241dc0b6a4101360200200242013702cc0b200241f0fac9003602c80b200241043602e4022002200241e0026a3602d80b2002200241a0146a3602e002200241c80b6a41b8d2c7001047000b41c8d2c700411e41e8d2c700103c000b200241fc026a4100360200200241f8026a41f8fac900360200200242013702ec02200241f8d2c7003602e802200241b80b6a200241d00a6a200241e8026a4180d3c700108306000b4190d3c700412741b8d3c700103c000b0240200241f0016a41306a2201200241c80b6a41306a2203412010c209450d004190fbc900410e10d9042001412010ed062003412010ed060b024020012003412010c209450d0041c8d3c700412841f0d3c700103c000b0240200241f0016a41d0006a200241c80b6a41d0006a412010c2090d00024020022802d40b2203450d0020022802cc0b2101200341246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b0240200241d00b6a2802002201450d00200141246c450d0020022802cc0b10310b024020022802fc012203450d0020022802f4012101200341246c210303400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b0240200241f8016a2802002201450d00200141246c450d0020022802f40110310b200241b0146a240042010f0b4180d4c700412441a4d4c700103c000b200241fc006a4119360200200241fc026a4102360200200242023702ec02200241f4ddc4003602e80220024104360274200241b8dec4003602702002200241f0006a3602f8022002200241a8146a360278200241e8026a4184dec4001047000bdb0505037f017e057f017e017f230041901a6b220224002002200110ab01024002402002280200450d00200041003602000c010b02400240024002400240024020022802042203200128020028020441d8086e2204200420034b1bad42d8087e2205422088a70d002005a72204417f4c0d000240024020040d00410821060c010b2004102f2206450d040b2001200128020441016a2207360204200441d8086e210802400240200720012802084b0d0020030d01410021030c070b200041003602000c030b200241a8116a41f0006a21094100210a41002104410021070340200241a8116a200110a504200241c0106a200241a8116a41e80010bf091a2002290390122105200241d8086a200941e80710bf091a20054203510d02200241f0076a200241c0106a41e80010bf091a200241086a200241d8086a41e80710bf091a0240024020072008470d00200a200741016a2208200a20084b1b2208410120081bad42d8087e220b422088a7454103742108200ba7210c0240024020070d00200241003602a8110c010b200241083602b011200220043602ac11200220063602a8110b200241801a6a200c2008200241a8116a104e20022802881a210820022802801a4101460d0120022802841a2106200841d8086e21080b200620046a200241f0076a41e80010bf09220c41e8006a2005370300200c41f0006a200241086a41e80710bf091a200a41026a210a200441d8086a21042003200741016a2207460d060c010b0b20080d030b103b000b200041003602002007450d002006210a03400240200a220741e8006a2903004202510d0020072d00004102470d00200741086a280200450d00200741046a28020010310b200741d8086a210a20074198016a10b301200441a8776a22040d000b0b2008450d03200841d8086c450d03200610310c030b1039000b200128020421070b2000200836020420002006360200200041086a200336020020012007417f6a3602040b200241901a6a24000b8867040e7f017e017f097e230041d0026b2201240041002102200141003602202001420437031802400240024002400240024002400240024002402000410c6a28020041246c2203450d0020002802042104410421054104210641002107410021020340024020042d00004101470d00200441106a2802002208417f4c0d0b200441036a2d00002109200441016a2f0000210a200441086a280200210b200441046a2d0000210c0240024020080d004101210d0c010b2008102f220d450d080b200d200b200810bf09210b200141e0006a41086a220d200141a8026a41086a290200370300200120012902a802370360024020022007470d0020072007470d00200741016a22052007490d0c2007410174220e2005200e20054b1b22054104200541044b1bad42247e220f422088a7454102742105200fa7210e0240024020070d00200141003602380c010b20014104360240200120063602382001200741246c36023c0b200141286a200e2005200141386a104e2001280230210720012802284101460d042001200128022c22053602182001200741246e220736021c0b2005200241246c6a220220083602102002200836020c2002200b3602082002201041807e71200c7222103602042002200a20094110747222083b0001200241013a0000200241036a20084110763a0000200220012903603702142002411c6a200d2903003702002001200128022041016a2202360220200521060b200441246a21042003415c6a22030d000b0b200141c0026a22084200370300200141b8026a22044200370300200141a8026a41086a22034200370300200142003703a802200141286a41f3c6c000410610a7022003200141286a41086a2207290000370300200120012900283703a802200141386a41b893c900411210a7022008200141386a41086a290000370300200420012900383703002001412036025c2001200141a8026a360258200141286a200141a8026a412010d202200128022822030d01410221070c020b20070d030c070b200128022c21092001200728020036029c022001200336029802200141106a20014198026a10bb01200128021421100240024020012802100d00200141086a20014198026a10bb0120012802080d00200128029c022207200128020c2208490d002008417f4c0d080240024020080d00410121050c010b200810352205450d05200128029c0221070b024020072008490d002005200128029802200810bf091a200128029c0222072008490d042001200720086b36029c02200120012802980220086a36029802410121070c020b200510310b20014100360240200142013703382001410c36024c2001200141d8006a3602482001200141386a3602cc02200141f4006a4101360200200142013702642001419086c4003602602001200141c8006a360270200141cc026a41d8ddc900200141e0006a10401a2001280238200128024010d9040240200128023c450d00200128023810310b410221070b2009450d00200310310b024020074102460d00410121030240201041e701490d0041002103024020084106470d0041d0ecc0002005410610c2094521030b200341017321030b02402008450d00200510310b4200210f2003450d050b200141ec006a4100290398ec40370200200141e70136026020014100290390ec40370264200141c0026a4200370300200141b8026a4200370300200141a8026a41086a22024200370300200142003703a802200141286a41f3c6c000410610a7022002200141286a41086a290000370300200120012900283703a802200141386a41b893c900411210a702200441086a200141386a41086a290000370000200420012900383700002001410036024020014201370338200141e0006a200141386a10c408200141a8026a4120200128023822022001280240109f020240200128023c450d00200210310b200141033602502001410636025c200141f3c6c000360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d0006a3602b0022001200141d8006a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a419c0136020020014198016a42db8080801037030020014194016a41e3d2c8003602002001418c016a421437020020014188016a4188d6c80036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141f8d5c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b4200210f200141a8026a41186a22034200370300200141b8026a22074200370300200141a8026a41086a22024200370300200142003703a802200141286a41f3c6c000410610a7022002200141286a41086a2205290000370300200120012900283703a802200141386a41ac94c900411810a702200441086a2210200141386a41086a2209290000370000200420012900383700000240200141a8026a109b03220841ff01714102460d0020084101710d040b200342003703002007420037030020024200370300200142003703a802200141286a41f3c6c000410610a70220022005290000370300200120012900283703a802200141386a41ac94c900411810a7022010200929000037000020042001290038370000200141013a0038200141a8026a4120200141386a4101109f02200141286a41f3c6c000410610a702200141386a41c88ec900410710a7024120102f2202450d012001422037029c02200120023602980220014198026a200141286a4110107e20014198026a200141386a4110107e20012802a0022203417f4c0d0520012802980221020240024020030d00410121070c010b2003102f2207450d020b200141e0006a20072002200310bf09200310ad082003ad220f422086200f84210f20012802602202450d0220014198016a210d20014188016a2106200141f8006a210e034002400240200320012902642211422088a722084b0d002001280298022002200310c209450d010b2011a7450d04200210310c040b0240200fa7450d00200710310b2001200836022c20012002360228200141386a2002200810d20202400240024020012802382207450d00200128023c2105024002400240200128024022104104490d002010417c7122094104460d0020094108460d00201041746a4110490d00201041646a4110490d00201041546a4110490d00201041446a410f4b0d010b200141003602b002200142013703a8022001410c36024c2001200141286a3602482001200141a8026a3602cc0220014101360274200142013702642001419086c4003602602001200141c8006a360270200141cc026a41d8ddc900200141e0006a10401a20012802a80220012802b00210d904024020012802ac02450d0020012802a80210310b410021100c010b2007280000210a2007280004210b2007280008210c200741146a2900002112200729000c2113200741c4006a2900002114200741346a2900002115200741246a2900002116200729003c2117200729002c2118200729001c2119410121100b02402005450d00200710310b2010450d0002400240200820036b22074110490d00200741706a2107200220036a41106a21030c010b41002107024041002802809a4a0d0041f8fac90021030c010b4100210741002802fc994a210541002802f8994a211041002802849a4a210920014180013602a001200142dd8080801037039801200141a7a1c000360294012001421337028c0120014194a1c00036028801200142003703800141f8fac9002103200141f8fac90036027c200142013703702001418ca1c00036026c2001411336026820014194a1c00036026420014101360260201041f8fac900200941024622091b200141e0006a20054180a6c00020091b2802101103000b2001200736023c20012003360238200141a8026a200141386a10b50120012d00a8024101470d0141002802809a4a450d0241002802fc994a210341002802f8994a210741002802849a4a2105200141b8013602a001200142ee8080801037039801200141e28ec500360294012001422637028c01200141bc8ec50036028801200142003703800120014201370370200141b48ec50036026c20014126360268200141bc8ec50036026420014101360260200141f8fac90036027c200741f8fac900200541024622051b200141e0006a20034180a6c00020051b2802101103000c020b41002802809a4a450d0141002802fc994a210341002802f8994a210741002802849a4a2105200141af013602a001200142ee8080801037039801200141e28ec500360294012001422637028c01200141bc8ec50036028801200142003703800120014201370370200141ac8ec50036026c20014126360268200141bc8ec50036026420014101360260200141f8fac90036027c200741f8fac900200541024622051b200141e0006a20034180a6c00020051b2802101103000c010b200d201437030020062015370300200e201637030020012017370390012001201837038001200120193703702001201237036820012013370360200141003602ac012001200c3602a8012001200b3602a4012001200a3602a00120022008200141e0006a10ad060b200141e0006a2002200810ad080240200128026022080d00200221072011210f0c040b20012802a002210320022107200821022011210f0c000b0b20082007419cb4c0001061000b1039000b0240200fa7450d00200710310b0240200128029c02450d0020012802980210310b200141e0006a108d022001290368210f0b200141286a41f3c6c000410610a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01503b0138200141a8026a200141386a4102107e200120012d00523a0038200141a8026a200141386a4101107e200120012d00533a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001418080043602582001410936029c02200141bec8c00036029802024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a411d36020020014198016a42b98080801037030020014194016a41e8ffc2003602002001418c016a421237020020014188016a41eae6c10036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41bec8c000410910a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b200141033602582001410536029c02200141b9c8c00036029802024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41d30036020020014198016a42da8080801037030020014194016a41f48bc5003602002001418c016a421437020020014188016a41aaf1c00036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41b9c8c000410510a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b200141033602582001410736029c02200141b2c8c00036029802024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41ca0036020020014198016a42dc8080801037030020014194016a41a7bcc7003602002001418c016a421637020020014188016a4183bdc70036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41b2c8c000410710a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410a36029c02200141d4aac8003602980241002802809a4a210220014103360258024020024103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41fc0036020020014198016a42df8080801037030020014194016a41a5a4c8003602002001418c016a421137020020014188016a41d5a7c80036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41d4aac800410a10a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410a36029c02200141dcbfc7003602980241002802809a4a210220014103360258024020024103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a419e0236020020014198016a42df8080801037030020014194016a41f1b7c7003602002001418c016a421137020020014188016a4199bdc70036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41dcbfc700410a10a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001411036029c02200141a2c8c000360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a413b36020020014198016a42c78080801037030020014194016a41b8f2c0003602002001418c016a422137020020014188016a4197f2c00036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41a2c8c000411010a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410736029c022001419bc8c000360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41930136020020014198016a42b98080801037030020014194016a419ca7c8003602002001418c016a421c37020020014188016a4180a7c80036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a419bc8c000410710a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001418080043602582001410536029c02200141a0aac80036029802024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a412836020020014198016a42e78080801037030020014194016a4199a6c8003602002001418c016a4214370200200141e0006a41286a4185a6c80036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41a0aac800410510a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410336029c0220014198c8c0003602980220014103360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a419a0136020020014198016a42ea8080801037030020014194016a41d780c4003602002001418c016a420a37020020014188016a41cd80c40036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a4198c8c000410310a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b200141033602582001410436029c0220014194c8c00036029802024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41f20036020020014198016a42d98080801037030020014194016a41f4ffc3003602002001418c016a421337020020014188016a41e1ffc30036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a4194c8c000410410a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001411036029c0220014184c8c000360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a413e36020020014198016a42c88080801037030020014194016a41a2fdc2003602002001418c016a422b37020020014188016a41f7fcc20036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a4184c8c000411010a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410536029c0220014190f3c000360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41f60036020020014198016a42bb8080801037030020014194016a41dcf1c0003602002001418c016a421e37020020014188016a41bef1c00036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a4190f3c000410510a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410936029c02200141c686c500360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a419e0236020020014198016a42bf8080801037030020014194016a41f7e8c4003602002001418c016a422237020020014188016a41d5e8c40036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a41c686c500410910a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410836029c0220014188bbc200360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a41be0136020020014198016a42be8080801037030020014194016a4194b9c7003602002001418c016a422137020020014188016a419d9cc20036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200141286a4188bbc200410810a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2001410936029c02200141e28bc500360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210241002802f8994a210841002802849a4a2103200141a0016a419e0136020020014198016a42c58080801037030020014194016a41dee9c4003602002001418c016a422837020020014188016a41b6e9c40036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200841f8fac900200341024622031b200141e0006a20024180a6c00020031b2802101103000b200f4280c2d72f7c2111200141286a41e28bc500410910a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220220012802b002109f02024020012802ac02450d00200210310b2011200f5421022001410b36029c02200141c0e9c300360298022001418080a0f001360258024041002802809a4a4103490d00200141b4026a411a360200200141043602ac022001200141d8006a3602b002200120014198026a3602a80241002802fc994a210841002802f8994a210341002802849a4a2107200141a0016a413c36020020014198016a42c68080801037030020014194016a4193fec2003602002001418c016a422937020020014188016a41eafdc20036020020014180016a4202370300200141f0006a4202370300200141e8006a4116360200200141fc006a200141a8026a360200200141c0d3c80036026c200141d0d3c80036026420014103360260200341f8fac900200741024622071b200141e0006a20084180a6c00020071b2802101103000b427f201120021b210f200141286a41c0e9c300410b10a702200141386a41aff4c300411410a70220042001290038370000200441086a200141386a41086a290000370000200141e0006a41086a200141286a41086a290000370300200141e0006a41106a200141a8026a41106a290300370300200141e0006a41186a200141a8026a41186a29030037030020012001290028370360200141003602b002200142013703a802200120012f01583b0138200141a8026a200141386a4102107e200120012d005a3a0038200141a8026a200141386a4101107e200120012d005b3a0038200141a8026a200141386a4101107e200141e0006a412020012802a802220420012802b002109f02024020012802ac02450d00200410310b427f200f427f10fc0722114280a0f8fa057c221320132011541b7c22112011200f541b210f200128022021020b20002802002204200041106a200141186a410110fd0620041095062111200141e0006a108d02427f427f200f20117c22112011200f541b220f20012903607c22112011200f541b10c5084100410010e8062001280218210802402002450d00200241246c21022008210403400240024002400240024020042d00000e050400010204030b2004410c6a280200450d03200441086a28020010310c030b2004410c6a280200450d02200441086a28020010310c020b2004410c6a280200450d01200441086a28020010310c010b200441086a280200450d00200441046a28020010310b200441246a21042002415c6a22020d000b0b0240200128021c2204450d00200441246c450d00200810310b200141d0026a24000f0b103b000b0400100a0bfd4904067f0b7e057f0a7e230041a0266b220224002002200136028019200241306a20024180196a10f60520022802382103200228023021042002280234210520024180196a200141d80810bf091a200241e8106a20024180196a10a60420022d00e810210120022f00e910210620022d00eb102107200241d0086a200241e8106a41047241940810bf091a02400240024002400240024002400240024002400240024020014101460d00200241c0006a200241d0086a41046a41900810bf091a200241286a41a1e2c800411010c002200228022c210120022802282106200220033602f010200220053602ec10200220043602e81020024180196a2001410020061b10d0072002280280192201200228028819200241e8106a10de020240200228028419450d00200110310b02402005450d00200410310b200241d8216a20024190016a108c0220024180196a200241c0006a41900810bf091a024002400240024002400240024020022903a01922084202520d0020022903d82120022d00e021200310cc04220141ff01714102470d06200241e8106a41186a420037030020024188116a420037030020024190116a4200370300200242003703a025200242003703f010200242003703e810200242003703f810200242003703981120022802d019417f6a0e09010a0a0a0a0a0a02040a0b20024180256a41186a20024180196a41186a29030037030020024180256a41106a20024180196a41106a29030037030020024180256a41086a20024180196a41086a29030037030020022002290380193703802520024180196a41c8006a290300210920024180196a41c0006a290300210a20024180196a41386a280200210120022903a819210b200241e0256a41186a22054200370300200241e0256a41106a22044200370300200241e0256a41086a22064200370300200242003703e025200241c0246a41f3c6c000410610a7022006200241c0246a41086a2207290000370300200220022900c0243703e025200241c0246a41ec90c900410610a70220052007290000370300200420022900c024370300200241206a200241e0256a412010c002024020084201520d00200b4200510d080b200241d0086a20024180256a109303200241e8106a20022802d008220420022802d808109403200241e8106a41386a290300210820024198116a290300210b20024190116a290300210c200241e8106a41206a290300210d200241e8106a41186a290300210e200241e8106a41106a290300210f200241e8106a41c8006a2802002105200241e8106a41c0006a290300211020022903f010211120022903e8102112200241d0246a41086a200241bc116a280200360200200220022902b4113703d0240240024020124201510d0041002105200241e8256a410036020042002111200242003703e0254200210f4200210e4200210d4200210c4200210b42002108420021100c010b200241e0256a41086a200241d0246a41086a280200360200200220022903d0243703e0250b024020022802d408450d00200410310b024020052001470d0020024188116a200c37030020024190116a200b370300200241f8106a200e370300200241b4116a200241e8256a28020036020020024198116a20083703002002200d37038011200220113703e810200220103703a011200220022903e0253702ac112002200f3703f0102002200141016a3602a811200241d0086a20024180256a10930320022802d008220120022802d808200241e8106a10ad06024020022802d408450d00200110310b418012210120022d00e02122054102460d0b20022903d82122082005200310cc04220141ff01714102470d0b200241e8106a20032008200a200920022d00e12141004720051085054200210c4200210b42002108024020022903e8104201520d00427f427f200241f8106a290300220820024188116a2903007c20022903f010220b20024180116a2903007c220d200b542201ad7c220b2001200b200854200b2008511b22011b220820024198116a2903007c427f200d20011b220b20024190116a2903007c220d200b542201ad7c220b2001200b200854200b2008511b22011b2108427f200d20011b210b0b02400240200b20022903a011220d842008200241a8116a290300220e848450450d000c010b200241e8106a20024180256a427f200b200d7c220c200c200b5422012008200e7c2001ad7c220b200854200b2008511b22011b427f200b20011b41014111200a200984501b410010da0520022802e8104101460d0a200241f8106a290300210b20022903f01021084201210c0b200241e0256a41086a20024180256a41086a2201290300220d370300200241a0256a41186a20024180256a41186a2205290300220e370300200241a0256a41086a200d370300200241e0236a41186a2204200e370300200241e0236a41106a220620024180256a41106a2207290300370300200241e0236a41086a2213200d37030020022002290380253703e023200241c0236a41186a2004290300370300200241c0236a41106a2006290300370300200241c0236a41086a2013290300370300200220022903e0233703c023200241e0246a41186a2005290300370300200241e0246a41106a2007290300370300200241e0246a41086a200129030037030020022002290380253703e024410121050c0d0b418006418004200520014b1b21010c0a0b4100210141002105200241d8196a2802004102470d03200241f0196a200241dc196a109c0622014180feff077141087621050c010b4100210141002105200241d8196a2802004102470d02200241f0196a200241dc196a10b30622014180feff077141087621050b200141ff01714102470d010c060b200241d0086a200241d4196a10fb06024020022d00d0084101460d00200241fc086a2802002107200241f8086a2802002104200241f4086a2802002113200241ec086a2802002106200241e8086a28020021140240200241f0086a2802002201450d002001410c6c21052014210103400240200141046a280200450d00200128020010310b2001410c6a2101200541746a22050d000b0b02402006450d002006410c6c450d00201410310b02402007450d002007410c6c21052013210103400240200141046a280200450d00200128020010310b2001410c6a2101200541746a22050d000b0b2004450d062004410c6c450d06201310310c060b20022d00d10822014102460d0520022f01d20821050b2005410874200141ff0171722101200229039811500d062002200241a0116a3602d008200241d0086a10a2030c060b200241a0256a41186a200241d0086a41186a290200370300200241a0256a41106a200241d0086a41106a2902003703000c050b2000200620074110747222013b0001200041013a0000200041036a20014110763a00002005450d09200410310c090b41e0f4c900411941fcf4c900103c000b200241e0256a41086a200241d0086a41086a290300370300200241e0256a41106a200241d0086a41106a29030037030041800221010c010b200241c0236a41086a200241e8106a41106a220141086a290300370300200241c0236a41106a200141106a290300370300200241c0236a41186a200141186a290300370300200220012903003703c023200241e8106a41086a2903002109200241a8116a290300210b200241a0116a290300210820022903e810210a200229039811210c410021050c020b200241e0236a41186a200241a0256a41186a290300370300200241e0236a41106a200241a0256a41106a2903003703000b200241d0196a10c7040c010b20024180236a41186a2201200241e0246a41186a29030037030020024180236a41106a2204200241e0246a41106a29030037030020024180236a41086a2206200241e0246a41086a290300370300200220022903e02437038023200241a0236a41186a200241c0236a41186a290300370300200241a0236a41106a200241c0236a41106a290300370300200241a0236a41086a200241c0236a41086a290300370300200220022903c0233703a023200241e8106a200241d0196a41c00710bf091a200241e0256a41186a22072001290300370300200241e0256a41106a22132004290300370300200241e0256a41086a2204200629030037030020022002290380233703e0254102210102402005450d00200241a0256a41186a2007290300370300200241a0256a41106a2013290300370300200241a0256a41086a2004290300370300200220022903e0253703a025410121010b200241da086a200241a0256a41086a290300370100200241e2086a200241a0256a41106a290300370100200241ea086a200241a0256a41186a290300370100200220013a00d108200220022903a0253701d208200241003a00d0084110102f2201450d04200141f8c8c00036020c200141013602082001428180808010370200200220013602f8084110102f2205450d04200541e0c8c00036020c20054101360208200542818080801037020020012001280200417f6a2204360200024020040d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22042004280200417f6a220436020020040d00200110310b200220053602f808200241e0236a200241e8106a200241d0086a109702200241e0236a41106a2201290300210e200241e0236a41186a22052d0000210420022903e823210f20022903e023210d20024190096a200b37030020024188096a22142008370300200241d0086a41186a200241a0236a41086a290300370300200241d0086a41206a200241a0236a41106a290300370300200241d0086a41286a200241a0236a41186a290300370300200220093703d8082002200a3703d008200220022903a0233703e0082002200c37038009200241e8106a41186a2206200241e0236a41286a290300370300200241e8106a41106a2207200241e0236a41206a290300370300200241e8106a41086a22132005290300370300200220012903003703e81002400240200d4201520d00200241e0256a41186a2006290300370300200241e0256a41106a2007290300370300200241e0256a41086a2013290300370300200220022903e8103703e025200f4202510d0020024198246a200241f8256a2903003e02002002200241f0256a290300370390240c010b200241073a0090240b024020022d00e02122054102470d0020022d00902441ff01714107460d00200220024190246a3602a025024041002802809a4a450d002002411b3602e4252002200241a0256a3602e02541002802fc994a210141002802f8994a210541002802849a4a2104200241a8116a41fb01360200200241a0116a42ef808080103703002002419c116a41d6efc10036020020024194116a422637020020024190116a41b0efc10036020020024188116a4201370300200241f8106a4201370300200241f0106a410f36020020024184116a200241e0256a360200200241a8efc1003602f410200241c4e2c8003602ec10200241013602e810200541f8fac900200441024622041b200241e8106a20014180a6c00020041b280210110300200229038009210c0b4180102101200c500d01200220143602e810200241e8106a10a2030c010b200241d0086a41106a210120022903d821210d420021100240200f4201520d00200d200e580d004200200d200e7d22082008200d561b2108200241e0256a41186a22154200370300200241e0256a41106a22064200370300200241e0256a41086a22074200370300200242003703e025200241c0246a41f3c6c000410610a7022007200241c0246a41086a2213290000370300200220022900c0243703e025200241c0246a41c08fc900410b10a70220152013290000370300200620022900c024370300200241e8106a200241e0256a10ed03200220022903f010420020022903e81042015122141b3703a0252002200241e8106a41106a2216290300420020141b370380252002200241e8106a41186a2217290300420020141b3703e024200241e0246a211402400240024020054103710e03010002010b20024180256a21140c010b200241a0256a21140b201442002014290300220920087d220820082009561b370300201720022903e0243703002016200229038025370300200220022903a0253703f010200242013703e810201542003703002006420037030020074200370300200242003703e025200241c0246a41f3c6c000410610a70220072013290000370300200220022900c0243703e025200241c0246a41c08fc900410b10a702200641086a2013290000370000200620022900c024370000200241e0256a200241e8106a41086a10b00620024190096a290300210b200241d0086a41086a2903002109200229038809210820022903d008210a200229038009210c0b200241e0246a41186a200141186a290000370300200241e0246a41106a200141106a290000370300200241e0246a41086a200141086a290000370300200220012900003703e024200241e8106a2003200d200e200e200d561b200d200f4201511b200a200920022d00e121410146200441ff01714101467220051085054200210d024020022903e8104201520d00427f427f200241e8106a41106a290300220d20024188116a2903007c20022903f010220e200241e8106a41186a2903007c220f200e542201ad7c220e2001200e200d54200e200d511b22011b220d20024198116a2903007c427f200f20011b220e20024190116a2903007c220f200e542201ad7c220e2001200e200d54200e200d511b22011b210d427f200f20011b21100b02400240200c4201520d004200210c0240024002402008427f201020022903a0117c220e200e2010542201200d200241a8116a2903007c2001ad7c220e200d54200e200d511b22011b221058200b427f200e20011b220d58200b200d511b450d004200210d0c010b200241e0256a200241e0246a109303200241e8106a20022802e025220120022802e825109403200241e8106a41386a2903002118200241e8106a41306a2903002111200241e8106a41286a2903002112200241e8106a41206a2903002119200241e8106a41186a290300211a200241e8106a41106a290300210e200241a8116a290300211b20022903f010210f20022903e810210c200241d0246a41086a200241bc116a280200360200200220022902b4113703d02402400240200c4201510d004200211b200241a0256a41386a4200370300200241a0256a41306a4200370300200241a0256a41286a4200370300200241a0256a41206a4200370300200241a0256a41186a4200370300200241a0256a41106a4200370300200241a0256a41086a4200370300200242003703a025420021194200211242002111420021184200210f4200210e4200211a4200211c4200211d4200210c4200211e0c010b200241a0256a41206a2012370300200241a0256a41286a2011370300200241a0256a41106a201a370300200241a0256a41306a2018370300200220193703b8252002200f3703a0252002201b3703d8252002200e3703a8252012211c2011211d200f210c200e211e0b024020022802e425450d00200110310b02400240200c201e844200520d00201c20022903b02584201d200241b8256a29030084844200520d0020022903d025200241d8256a2903008450450d004200210c410021010c010b4201210c410121010b0240200c4201510d00200241e8106a410810aa030c020b4200200b200d7d2008201054ad7d220c200820107d2210200856200c200b56200c200b511b22051b210d0240200f4200201020051b220c7c2210200f542205200e200d7c2005ad7c220f200e54200f200e511b4101470d00200241e8106a410310aa030c020b20024188116a201237030020024190116a201137030020024198116a20183703002002201937038011200220103703e8102002200f3703f0102002201a3703f8104200211e02400240427f2010201a7c220e200e2010542205200f20197c2005ad7c220e200f54200e200f511b22051b221c42ffc7afa02556427f200e20051b220e420052200e501b0d002010201a84200f20198484221e5021054200211a201e420052ad211e0c010b200241f8106a290300211f20022903f010212020022903e81021214201211a410121050b20024198266a200d37030020024188266a200e37030020024180266a2204201c370300200241f0256a200f3703002002200c37039026200220103703e8252002201e3703f825200242003703e0250240024002402001201a420152720d002002200241e0246a3602e810200241e0246a200241e8106a10a3030c010b024020014101732201201a420151720d002002200241e0246a3602e810200241e0246a200241e8106a10a40341ff017122014103460d010240024020010e03010300010b20024190266a2101024020050d00200220043602e810200241e8106a10a2030b200110a1030c050b20024198266a290300210d20024188266a290300210e200241f0256a290300210f200229039026210c200229038026211c20022903e825211020022903f825211e20022903e025211d0c020b4200211d201a4201522001710d010b200241c0246a200241e0246a109303200241e8106a20022802c024220520022802c8242204109403200241b0116a280200210120022903e810210c200241d0246a41086a2203200241bc116a280200360200200220022902b4113703d02402400240200c4201510d0041002101200241c0236a41086a4100360200200242003703c0230c010b200241c0236a41086a2003280200360200200220022903d0243703c0230b200241b0116a2001360200200241bc116a200241c0236a41086a280200360200200242013703e810200241e8106a41386a20184200201a42015122011b37030020024198116a2011420020011b370300200241e8106a41286a2012420020011b37030020024188116a2019420020011b37030020024180116a201f420020011b370300200241e8106a41106a2020420020011b370300200241a8116a201b420020011b370300200220022903c0233702b41120022021420020011b3703f01020052004200241e8106a41086a109903024020022802c424450d00200510310b200241e0256a41106a290300210f200241e0256a41286a290300210e200241e0256a41386a290300210d20022903e8252110200229038026211c200229039026210c20022903e025211d20022903f825211e0b0240201d4201520d00200241a0116a200f37030020024198116a2010370300200241e8106a41086a41003a0000200241f1106a20022903e024370000200241f9106a200241e0246a41086a29030037000020024181116a200241f0246a29030037000020024189116a200241f8246a290300370000200241023a00e810200241e8106a10a9020b02400240201e50450d004200210f0c010b200241e8106a41186a200241e0246a41186a290300370300200241e8106a41106a200241e0246a41106a290300370300200241e8106a41086a200241e0246a41086a290300370300200220022903e0243703e8104201210f0b20024180256a41186a200241e8106a41186a2201290300221037030020024180256a41106a200241e8106a41106a2205290300221137030020024180256a41086a200241e8106a41086a2903002212370300200220022903e81022193703802520024198116a200e37030020024190116a2204201c370300200520123703002001201137030020024188116a20103703002002200f3703e810200220193703f010200241e8106a10a50320022903e810500d00200220043602e025200241e0256a10a2030b200b200d542105200b200d7d2008200c542204ad7d200d200b7d200c200854ad7d2008200c56200b200d56200b200d5122031b22011b210b2008200c7d200c20087d20011b2108024041012004200520031b41017420011b0e03000103000b420021084200210b0b2002427f200b2009200b2008200a56200b200956200b2009511b22011b220c7d2008200a200820011b220b54ad7d220a200c7c20082008200b7d220d542201ad7c220920012009200a542009200a511b22011b22093703f0102002427f200820011b22083703e8100240200d200b84200a200c84844200520d002002200241e8106a3602e025200241e0256a10a2030c010b200241e0256a109203200241e8106a109203200241106a200241e8106a2008200910dc05200241a0256a41106a2009200241106a41086a290300220a7d20082002290310220b542205ad7d200a20097d200b200854ad7d2008200b562009200a562009200a5122041b22011b37030020022008200b7d200b20087d20011b3703a8252002420120052009200a5420041bad42018620011b220a3703a025200241a0256a41086a2101024002400240200aa70e020200010b200220013602802520024180256a10a2030c010b200110a1030b200241a0116a200937030020024198116a2008370300200241e8106a41086a41043a0000200241f1106a20022903e025370000200241f9106a200241e0256a41086a29030037000020024181116a200241e0256a41106a29030037000020024189116a200241f8256a290300370000200241023a00e810200241e8106a10a9020b200241cc226a41246a200241e0236a41206a290300370200200241cc226a411c6a200241e0236a41186a290300370200200241cc226a41146a200241e0236a41106a290300370200200241cc226a410c6a200241e0236a41086a290300370200200241cc226a412c6a200241e0236a41286a290300370200200220022903e0233702d02220024198226a41206a200241cc226a41206a29020037030020024198226a41186a200241cc226a41186a29020037030020024198226a41106a200241cc226a41106a29020037030020024198226a41086a200241cc226a41086a29020037030020024198226a41306a200241cc226a41306a28020036020020024198226a41286a200241cc226a41286a290200370300200220022902cc2237039822200241e8216a41286a220520024198226a412c6a290200370300200241e8216a41206a220420024198226a41246a290200370300200241e8216a41186a20024198226a411c6a290200370300200241e8216a41106a220320024198226a41146a290200370300200241e8216a41086a220120024198226a410c6a2902003703002002200229029c223703e82120022903d82122082003290300220920092008561b200820012903004201511b210820022903e021210920022903e8214201510d022008210a20092108410021030c030b200220083703e8102002200b3703f010200241e8106a10a10341800221010b20024198226a41086a200241cc226a41086a29020037030020024198226a41106a200241cc226a41106a29020037030020024198226a41186a200241cc226a41186a29020037030020024198226a41206a200241cc226a41206a29020037030020024198226a41286a200241cc226a41286a29020037030020024198226a41306a200241cc226a41306a280200360200200220022902cc2237039822200041036a20014110763a0000200020013b0001200041013a00000c020b200220013602a02520042101024041002802809a4a4105490d00200241e0256a41186a22014200370300200241e0256a41106a22034200370300200241e0256a41086a22064200370300200242003703e025200241c0246a41f3c6c000410610a7022006200241c0246a41086a2207290000370300200220022900c0243703e025200241c0246a41ec90c900410610a70220012007290000370300200320022900c024370300200241086a200241e0256a412010c002200241f4106a411c3602002002411d3602ec102002200228020c410020022802081b3602d0082002200241a0256a3602f0102002200241d0086a3602e81041002802fc994a210141002802f8994a210341002802849a4a2106200241c0196a41c80b360200200241b8196a42db80808010370300200241b4196a41e3d2c800360200200241ac196a420c370200200241a8196a41d3e2c80036020020024180196a41206a420237030020024180196a41106a420237030020024180196a41086a410f3602002002419c196a200241e8106a360200200241b4e2c80036028c19200241c4e2c800360284192002410536028019200341f8fac900200641024622061b20024180196a20014180a6c00020061b28021011030020022802a02541186a21010b2001290204210a20012802002101410121030b20024180196a41086a20033a000020024189196a20022f00d0083b000020024180196a41206a200937030020024180196a41186a200837030020024180196a41106a200a37030020024180196a410c6a200136020020024180196a41286a20022903e8103703002002418b196a200241d2086a2d00003a000020024180196a41306a200241e8106a41086a290300370300200241b8196a200241e8106a41106a290300370300200241c0196a200241e8106a41186a290300370300200241c8196a200241e8106a41206a290300370300200241003a00801920024180196a10a902200241a1e2c800411010c0022002200228020441016a410120022802001b22013602801941a1e2c800411020024180196a4104109f024100200110e80620022002290089223703801920022005280000360087190240024020022903e8214201510d00410721010c010b20042d0000210520022903f021210820022002280087193600ef1020022002290380193703e8104107210120084202510d00200220022800ef1036008719200220022903e81037038019200521010b200041003a0000200041046a20013a0000200041056a2002290380193700002000410c6a2002280087193600000b200241a0266a24000f0b1039000ba40201037f230041c0006b22022400200241206a22034200370300200241186a22044200370300200241086a41086a420037030020024200370308200241086a41f3c6c000410610a702200241286a41d494c900410e10a7022003200241286a41086a290000370300200420022900283703004100210320024100360230200242013703280240024002400240024020000e03000102040b200241003a003c200241286a2002413c6a4101107e2002200136023c200241286a2002413c6a4104107e0c020b200241013a003c200241286a2002413c6a4101107e0c010b200241023a003c200241286a2002413c6a4101107e0b200228022c21030b200241086a4120200228022822002002280230109f0202402003450d00200010310b200241c0006a24000b843a06017f017e047f047e087f097e230041a0096b2201240042002102200141e0006a41186a22034200370300200141e0006a41106a22044200370300200141e0006a41086a2205420037030020014200370360200141d0006a41f3c6c000410610a7022005200141d0006a41086a220629000037030020012001290050370360200141d0006a41c08fc900410b10a7022003200629000037030020042001290050370300200141d0016a200141e0006a10ed0320012903d0012107200141d0016a41106a2206290300210820012903d8012109200141d0016a41186a2203290300210a200141d0016a108d02024020012903d801427f427f20094200200742015122051b22072008420020051b7c220820082007541b2207200a420020051b7c220820082007541b580d00420010c5080b2003420037030020064200370300200141d0016a41086a22054200370300200142003703d001200141a0016a41e1abc900410b10a7022005200141a0016a41086a220b290000370300200120012900a0013703d001200141a0016a41fcadc900411610a7022003200b290000370300200620012900a001370300200141a0016a200141d0016a10a7060240024020012802a001220b0d004104210b0c010b200141d0016a412010bd0220012902a40121020b02402002422088a72203450d00200b2003417f6a220c411c6c6a2203290204210720032802002105200141e0006a41086a220d200341146a28020036020020012003410c6a290200370360200242ffffffff0f83200cad4220868421022005450d0020032802182103200120073702a401200120053602a001200141d0016a41086a200d280200360200200120012903603703d0012003200141a0016a200141d0016a10df070b02402002422088a72203450d002003411c6c2105200b210303400240200341046a28020041ffffff3f71450d00200328020010310b0240200341106a28020041ffffff3f71450d002003410c6a28020010310b2003411c6a2103200541646a22050d000b0b02402002a72203450d002003411c6c450d00200b10310b200141e8016a4200370300200141e0016a4200370300200141d0016a41086a22034200370300200142003703d001200141a0016a41e1abc900410b10a7022003200141a0016a41086a2205290000370300200120012900a0013703d001200141a0016a419cadc900410e10a702200641086a2005290000370000200620012900a001370000200141a0016a200141d0016a412010d202024020012802a0012203450d00024020012802a401450d00200310310b200141d0016a412010bd020b200141e8016a22034200370300200141e0016a22054200370300200141d0016a41086a22064200370300200142003703d001200141a0016a41e6d4c100410c10a7022006200141a0016a41086a220b290000370300200120012900a0013703d001200141a0016a41ccd5c100410810a7022003200b290000370300200520012900a001370300200141a0016a200141d0016a412010d202024002400240024020012802a0012203450d00024020012802a401450d00200310310b200141d0016a412010bd02200141e8016a22034200370300200141e0016a22064200370300200141d0016a41086a22054200370300200142003703d001200141e0006a41b4eac400410f10a7022005200141e0006a41086a220b290000370300200120012900603703d001200141e0006a41a086c500410d10a7022003200b29000037030020062001290060370300200141203602c4012001200141d0016a3602c001200141d0006a200141d0016a412010d2020240200128025022030d00410221050c040b2001280254210e2001200141d0006a41086a280200220536029401200120033602900120054104490d012003280000210b2001200341046a3602900120012005417c6a220c36029401200c4104490d012003280004210c2001200541786a360294012001200341086a36029001200141c8006a20014190016a10bb0102402001280248450d00200141003602a0010c020b200141a0016a20014190016a200128024c10b40120012802a001220f450d0120012902a401210241002105200141003a0060024002402001280294012210450d0020012802900122112d0000210d20012010417f6a2212360294012001201141016a360290010240200d4101460d000c050b201241044f0d010b0c030b2011280001210d20012010417b6a360294012001201141056a36029001410121050c020b41def7c00041304190f8c000103c000b20014100360268200142013703602001410c360284012001200141c0016a360280012001200141e0006a3602cc01200141b4016a4101360200200142013702a4012001419086c4003602a001200120014180016a3602b001200141cc016a41d8ddc900200141a0016a10401a2001280260200128026810d90402402001280264450d00200128026010310b410221050b200e450d00200310310b0240024002400240024002400240024020054102460d00200141b8016a200d360200200141ac016a2002370200200120053602b4012001200f3602a8012001200c3602a4012001200b3602a001200141a8016a210f0240200b2000470d00024020054101460d00200141e0006a200f10c608200141e0016a200c360200200141dc016a200141e8006a280200360200200141003602d001200120012903603702d401200141d0016a10be070c010b200141e0006a200f10c608200141e4016a200c360200200141d0016a41086a2001290360370300200141e0016a200141e0006a41086a2802003602002001200d3602d401200141013602d001200141d0016a10be070b024020012802a40120012802a0016a2000470d00200141b0016a28020041286c4105722203417f4c0d022003102f2205450d06200141003602d801200120033602d401200120053602d001200141013a0060200141d0016a200141e0006a4101107e20012802a8012103200141d0016a20012802b001220510cb010240200541286c2205450d00200320056a21050340200141d0016a20034120107e2001200341206a290300370360200141d0016a200141e0006a4108107e200341286a22032005470d000b0b41ad86c500411420012802d001220320012802d801109f02024020012802d401450d00200310310b200141d0016a41086a2203200f290200370300200141e0016a2205200f41086a280200360200200141003602d401200141053a00d001200141d0016a10a902200141e8016a42003703002005420037030020034200370300200142003703d001200141e0006a41b4eac400410f10a7022003200141e0006a41086a2205290000370300200120012900603703d001200141e0006a41a086c500410d10a702200641086a200529000037000020062001290060370000200141d0016a412010bd020c010b20012802ac012203450d00200341286c450d0020012802a80110310b200141e8016a4200370300200141e0016a4200370300200141d0016a41086a22034200370300200142003703d001200141e0006a41b4eac400410f10a7022003200141e0006a41086a2205290000370300200120012900603703d001200141e0006a41c186c500410510a702200641086a20052900003700002006200129006037000020014120360294012001200141d0016a36029001200141d0006a200141d0016a412010d202024020012802502203450d00200141d0006a41086a280200210b2001280254210c41002105200141003a0060024002400240200b450d0002400240024020032d00000e0405000102030b200b417f6a4108490d0220032900012102410121050c040b410221050c020b200b417f6a4108490d0020032900012102410321050c020b20014100360268200142013703602001410c36028401200120014190016a360280012001200141e0006a3602c001200141b4016a4101360200200142013702a4012001419086c4003602a001200120014180016a3602b001200141c0016a41d8ddc900200141a0016a10401a2001280260200128026810d90402402001280264450d00200128026010310b410421050b0b0240200c450d00200310310b024002402005417f6a0e03010200020b2002422088a7210302402002a722052000470d00200141043602d001200120033602d401200141d0016a10be070b200320056a2000470d01200141e8016a4200370300200141e0016a4200370300200141d0016a41086a22034200370300200142003703d001200141e0006a41b4eac400410f10a7022003200141e0006a41086a2205290000370300200120012900603703d001200141e0006a41c186c500410510a702200641086a200529000037000020062001290060370000200141a0016a41002001200110d607200141d0016a412020012802a001220320012802a801109f02024020012802a401450d00200310310b200141023602d401200141053a00d001200141d0016a10a9020c010b2002422088a7210302402002a722052000470d00200141033602d001200120033602d401200141d0016a10be070b200320056a2000470d00200141e8016a4200370300200141e0016a4200370300200141d0016a41086a22034200370300200142003703d001200141e0006a41b4eac400410f10a7022003200141e0006a41086a2205290000370300200120012900603703d001200141e0006a41c186c500410510a702200641086a200529000037000020062001290060370000200141a0016a41022001200110d607200141d0016a412020012802a001220320012802a801109f02024020012802a401450d00200310310b200141013602d401200141053a00d001200141d0016a10a9020b200141e8016a22064200370300200141d0016a41106a22034200370300200141d0016a41086a22054200370300200142003703d001200141a0016a41fba2c600410a10a7022005200141a0016a41086a220b290000370300200120012900a0013703d001200141a0016a4194a7c600410610a7022006200b290000370300200320012900a001370300200141d0016a412010bd02200642003703002003420037030020054200370300200142003703d001200141a0016a41fba2c600410a10a7022005200b290000370300200120012900a0013703d001200141a0016a41a8bbc600410c10a7022006200b290000370300200320012900a001370300200141d0016a412010bd02200642003703002003420037030020054200370300200142003703d001200141a0016a41cae6c200411210a7022005200b290000370300200120012900a0013703d001200141a0016a418ce8c200411110a7022006200b290000370300200320012900a001370300200141306a200141d0016a108705200141306a41106a29030021132001290338211420012802302106200141d0016a4201420042808090bbbad6adf00d420042c0843d42001088050240024020012802d0014101470d00427f2108427f21020c010b20032903002102200529030021080b200141d0016a108d02200141d0016a41086a20014180026a200141f8016a290300501b2903002107200141f8006a4200370300200141e0006a41106a4200370300200141e0006a41086a2205420037030020014200370360200141d0006a41f3c6c000410610a7022005200141d0006a41086a220b29000037030020012001290050370360200141d0006a41c08fc900410b10a702200441086a200b29000037000020042001290050370000200141a0016a200141e0006a10ed0320012903a801210920012903a001210a200141a0016a4203420042808090bbbad6adf00d420042a08d064200108805200720094200200a4201511b220920092007561b21090240024020012802a0014101470d00427f210a427f21150c010b200141a0016a41106a2903002115200141a0016a41086a290300210a0b200141206a200742808090bbbad6adf00d8222164200428080e4ceceb58bbc03420010be09200141106a2001290320200141206a41086a29030042808090bbbad6adf00d420010bc09200141a0016a2009200742808090bbbad6adf00d80428080e4ceceb58bbc037e20164202882001290310428080c89d9deb96f80656200141106a41086a29030022164200522016501bad7c7c2216200920165622051b22172016200920051b22187d42002017201854ad7d42808090bbbad6adf00d42002007420120074201561b42001088050240024020012802a0014101470d00427f2107427f21170c010b200141b0016a2903002117200141a0016a41086a29030021070b200141a0016a200720172007201742808090bbbad6adf00d42001088050240024020012802a0014101470d00427f2118427f21190c010b200141b0016a2903002119200141a8016a29030021180b200141a0016a200a2015200a201542808090bbbad6adf00d42001088050240024020012802a0014101470d00427f211a427f211b0c010b200141b0016a290300211b200141a8016a290300211a0b200141a0016a201a201b42808090bbbad6adf00d4200428080a0f6f4acdbe01b420010880520012802a0014101460d052008201442808090bbbad6adf00d20061b221a54210520022013420020061b22135121062002201354210b200141b0016a22042903002114200141a8016a2200290300211b200141a0016a200a20152007201742808090bbbad6adf00d42001088050240024020012802a0014101470d00427f2117427f21150c010b20042903002115200029030021170b2005200b20061b2105200141a0016a201b20142018201942808090bbbad6adf00d42001088050240024020012802a0014101470d00427f2114427f21180c010b200141b0016a2903002118200141a8016a29030021140b2013200220051b2107201a200820051b210a0240024020092016540d00427f2116200141a0016a427f201720147c220920092017542205201520187c2005ad7c220920155420092015511b22051b427f200920051b200a200742808090bbbad6adf00d42001088050240024020012802a0014101470d00427f21090c010b200141b0016a2903002109200141a8016a29030021160b427f200720097c200a20167c2215200a542205ad7c22092005200920075420092007511b22051b22072002427f201520051b2209200856200720025620072002511b22051b21022009200820051b21070c010b200141a0016a4200201720147d22092009201756201520187d2017201454ad7d220920155620092015511b22051b4200200920051b200a200742808090bbbad6adf00d42001088050240024020012802a0014101470d00427f2109427f21150c010b200141b0016a2903002115200141a8016a29030021090b4200200720157d200a200954ad7d2215200a20097d2209200a56201520075620152007511b22051b220720024200200920051b2209200856200720025620072002511b22051b21022009200820051b21070b200141d0016a41186a4200370300200141d0016a41106a4200370300200141d0016a41086a22054200370300200142003703d001200141a0016a41cae6c200411210a7022005200141a0016a41086a2206290000370300200120012900a0013703d001200141a0016a418ce8c200411110a702200341086a2006290000370000200320012900a001370000200120023703a801200120073703a001200141d0016a4120200141a0016a4110109f02200141e0006a41186a22054200370300200141e0006a41106a22034200370300200141e0006a41086a2206420037030020014200370360200141d0006a41fdc6c000410910a7022006200141d0006a41086a220b29000037030020012001290050370360200141d0006a4198b2c600410910a7022005200b29000037030020032001290050370300200141e0006a109b03220541ff01714102460d06200141e0006a412010bd022005410171450d06200141e0006a41186a4200370300200141e0006a41106a4200370300200141e0006a41086a2205420037030020014200370360200141d0006a41f9c6c000410410a7022005200141d0006a41086a220629000037030020012001290050370360200141d0006a41a891c500410b10a702200341086a200629000037000020032001290050370000200141d0016a200141e0006a10c405024020012d00d00122054102460d00200141e0006a412010bd020b200141a0016a41186a200141e9016a290000370300200141a0016a41106a200141e1016a290000370300200141a0016a41086a200141d9016a290000370300200120012900d1013703a0010240200541037122054103460d0020050e03040004040b200141d0016a41186a200141a0016a41186a290300370300200141d0016a41106a200141a0016a41106a290300370300200141d0016a41086a200141a0016a41086a290300370300200120012903a0013703d001200141e0006a41186a4200370300200141e0006a41106a4200370300200141e0006a41086a2205420037030020014200370360200141d0006a41f9c6c000410410a7022005200141d0006a41086a220629000037030020012001290050370360200141d0006a41b290c500410c10a702200341086a200629000037000020032001290050370000200141086a200141e0006a412010c00241002105200141e0006a200128020c410020012802081b220410bf07200141d0006a20012802602200200128026810aa0602400240200128025022060d0020014100360288012001420137038001410121064100210b0c010b2001200129025422023702840120012006360280012002422088a7210b2002a721050b02402001280264450d00200010310b200b41ff014b0d01200141e0006a41186a220c200141d0016a41186a290300370300200141e0006a41106a220d200141d0016a41106a290300370300200141e0006a41086a220f200141d0016a41086a290300370300200120012903d00137036002400240200b2005470d00200541016a22002005490d022005410174220e2000200e20004b1b22004104200041044b1b220041ffffff3f71200046210e200041057421000240024020050d00200141003602500c010b200141d8006a410136020020012006360250200120054105743602540b20014190016a2000200e200141d0006a104e20014198016a28020021052001280290014101460d012001200128029401220636028001200120054105762205360284010b2006200b4105746a22002001290360370000200041186a200c290300370000200041106a200d290300370000200041086a200f2903003700002001200b41016a36028801200420014180016a10d1070c030b20050d040b103b000b4120102f220b450d02200b20012903d001370000200b41186a200141d0016a41186a290300370000200b41106a200141d0016a41106a290300370000200b41086a200141d0016a41086a29030037000020014281808080103702642001200b360260200441016a2204200141e0006a10d107200b1031200141e0006a41186a4200370300200141e0006a41106a4200370300200141e0006a41086a220b420037030020014200370360200141d0006a41f9c6c000410410a702200b200141d0006a41086a220029000037030020012001290050370360200141d0006a41b290c500410c10a702200341086a20002900003700002003200129005037000020012004360250200141e0006a4120200141d0006a4104109f020b200541ffffff3f71450d00200610310b200141f8006a220b4200370300200141f0006a22044200370300200141e0006a41086a2205420037030020014200370360200141d0006a41f9c6c000410410a7022005200141d0006a41086a220629000037030020012001290050370360200141d0006a41b391c500411310a702200341086a2200200629000037000020032001290050370000200141e0006a412010bd02200b4200370300200442003703002005420037030020014200370360200141d0006a41f9c6c000410410a7022005200629000037030020012001290050370360200141d0006a41c691c500410810a7022000200629000037000020032001290050370000200141e0006a412010bd02200141a0096a24000f0b1039000b10c708000b41d8a6c600412b4184a7c600103c000b070010044101460bcc29030a7f027e0d7f230041d0016b22012400200141e0006a41186a22024200370300200141e0006a41106a22034200370300200141e0006a41086a220442003703002001420037036020014180016a41f3c6c000410610a702200420014180016a41086a2205290000370300200120012900800137036020014180016a41d494c900410e10a702200220052900003703002003200129008001370300200141e0006a412010bd022002420037030020034200370300200442003703002001420037036020014180016a41f3c6c000410610a70220042005290000370300200120012900800137036020014180016a41f48fc900411010a702200220052900003703002003200129008001370300200141e0006a412010bd022002420037030020034200370300200442003703002001420037036020014180016a41f3c6c000410610a70220042005290000370300200120012900800137036020014180016a41ec90c900410610a702200220052900003703002003200129008001370300200141086a200141e0006a412010c002200128020c2106200128020821072002420037030020034200370300200442003703002001420037036020014180016a41f3c6c000410610a70220042005290000370300200120012900800137036020014180016a418c91c900410a10a70220022005290000370300200320012900800137030020014180016a200141e0006a412010da0220012d0080012105200220014199016a290000370300200320014191016a290000370300200420014189016a29000037030020012001290081013703600240024020054101460d00200141106a41186a4200370300200141106a41106a4200370300200141106a41086a4200370300200142003703100c010b200141106a41186a2002290300370300200141106a41106a2003290300370300200141106a41086a2004290300370300200120012903603703100b200141f8006a22054200370300200141f0006a22084200370300200141e0006a41086a220242003703002001420037036020014180016a41f3c6c000410610a702200220014180016a41086a2204290000370300200120012900800137036020014180016a41a091c900410610a702200341086a22092004290000370000200320012900800137000020014180016a200141e0006a10c505200128028001210a200129028401210b2005420037030020084200370300200242003703002001420037036020014180016a41f3c6c000410610a70220022004290000370300200120012900800137036020014180016a41988fc900410e10a7022009200429000037000020032001290080013700002001200141e0006a412010c00241012103200128020421020240024020012802004101460d00410021030c010b200141e0006a412010bd020b02402002410020031b2209ad420c7e220c422088a70d00200ca72203417f4c0d000240024002400240024020030d004104210d0c010b2003102f220d450d010b0240024002402003410c6e220e20094f0d00200e41017422022009200220094b1b22024104200241044b1bad420c7e220c422088a7454102742102200ca72104024002402003410b4b0d0020014100360280010c010b20014188016a41043602002001200d360280012001200e410c6c360284010b200141e0006a2004200220014180016a104e200141e8006a2802002103024020012802604101460d002001280264210d2003410c6e210e0c020b20030d030c060b20090d00410021090c010b41002103200d21020340200141e0006a200310d00720014180016a20012802602205200128026822081095040240024020012802800122040d004200210c410121040c010b2005200810bd02200129028401210c0b200341016a210302402001280264450d00200510310b20022004360200200241046a200c3702002002410c6a210220092003470d000b0b20012009360288012001200e360284012001200d36028001200141e0006a20014180016a10810902402006410020071b220541e212490d0020014180016a41002005419f6d6a2203200320054b1b109e03200128028001220320012802880110bd02200128028401450d00200310310b200141c0016a108c0720012802c801210220012802c001210320014100360280012002450d02200120032d00003a008401200141013602800120024101460d02200120032d00013a008501200141023602800120024102460d02200120032d00023a008601200141033602800120024103460d02200120032d00033a008701200141043602800120024104460d0220014188016a20032d00043a0000200141053602800120024105460d0220014189016a20032d00053a0000200141063602800120024106460d022001418a016a20032d00063a0000200141073602800120024107460d022001418b016a20032d00073a0000200141083602800120024108460d022001418c016a20032d00083a0000200141093602800120024109460d022001418d016a20032d00093a00002001410a360280012002410a460d022001418e016a20032d000a3a00002001410b360280012002410b460d022001418f016a20032d000b3a00002001410c360280012002410c460d0220014190016a20032d000c3a00002001410d360280012002410d460d0220014191016a20032d000d3a00002001410e360280012002410e460d0220014192016a20032d000e3a00002001410f360280012002410f460d0220014193016a20032d000f3a0000200141103602800120024110460d0220014194016a20032d00103a0000200141113602800120024111460d0220014195016a20032d00113a0000200141123602800120024112460d0220014196016a20032d00123a0000200141133602800120024113460d0220014197016a20032d00133a0000200141143602800120024114460d0220014198016a20032d00143a0000200141153602800120024115460d0220014199016a20032d00153a0000200141163602800120024116460d022001419a016a20032d00163a0000200141173602800120024117460d022001419b016a20032d00173a0000200141183602800120024118460d022001419c016a20032d00183a0000200141193602800120024119460d022001419d016a20032d00193a00002001411a360280012002411a460d022001419e016a20032d001a3a00002001411b360280012002411b460d022001419f016a20032d001b3a00002001411c360280012002411c460d02200141a0016a20032d001c3a00002001411d360280012002411d460d02200141a1016a20032d001d3a00002001411e360280012002411e460d02200141a2016a20032d001e3a00002001411f360280012002411f460d02200141a3016a20032d001f3a00002001412036028001200141bc016a41026a22022001418d016a2d00003a0000200120012f0184013b0140200120012d0086013a004220012001418b016a2f00003b01bc01200128008701210e2001418e016a2801002106200141b8016a41026a220420014194016a2d00003a0000200120014192016a2f01003b01b80120014195016a2800002107200141b4016a41026a22082001419b016a2d00003a0000200120014199016a2f00003b01b40120014180016a41206a280200210f2001419c016a2802002110200120012d00423a003e200120012f01403b013c200141b0016a41026a220920022d00003a0000200120012f01bc013b01b001200141ac016a41026a220220042d00003a0000200120012f01b8013b01ac01200141a8016a41026a220420082d00003a0000200120012f01b4013b01a801200141386a41026a20092d00003a0000200120012f01b0013b0138200141346a41026a20022d00003a0000200120012f01ac013b0134200141306a41026a20042d00003a0000200120012f01a8013b0130024020012802c401450d00200310310b200141003602c801200142013703c0014120102f2203450d002001422037028401200120033602800120014180016a200141106a4120107e200141c0016a2001280280012203200128028801107e0240200128028401450d00200310310b200141c0006a20012802c001220320012802c801108209024020012802c401450d00200310310b200b4200200a1b210c200a4104200a1b21040240024020012802402203450d00200141c8006a28020021022001280244211120014100360280012002450d03200120032d00003a008401200141013602800120024101460d03200120032d00013a008501200141023602800120024102460d03200120032d00023a008601200141033602800120024103460d03200120032d00033a008701200141043602800120024104460d0320014188016a20032d00043a0000200141053602800120024105460d0320014189016a20032d00053a0000200141063602800120024106460d032001418a016a20032d00063a0000200141073602800120024107460d032001418b016a20032d00073a0000200141083602800120024108460d032001418c016a20032d00083a0000200141093602800120024109460d032001418d016a20032d00093a00002001410a360280012002410a460d032001418e016a20032d000a3a00002001410b360280012002410b460d032001418f016a20032d000b3a00002001410c360280012002410c460d0320014190016a20032d000c3a00002001410d360280012002410d460d0320014191016a20032d000d3a00002001410e360280012002410e460d0320014192016a20032d000e3a00002001410f360280012002410f460d0320014193016a20032d000f3a0000200141103602800120024110460d0320014194016a20032d00103a0000200141113602800120024111460d0320014195016a20032d00113a0000200141123602800120024112460d0320014196016a20032d00123a0000200141133602800120024113460d0320014197016a20032d00133a0000200141143602800120024114460d0320014198016a20032d00143a0000200141153602800120024115460d0320014199016a20032d00153a0000200141163602800120024116460d032001419a016a20032d00163a0000200141173602800120024117460d032001419b016a20032d00173a0000200141183602800120024118460d032001419c016a20032d00183a0000200141193602800120024119460d032001419d016a20032d00193a00002001411a360280012002411a460d032001419e016a20032d001a3a00002001411b360280012002411b460d032001419f016a20032d001b3a00002001411c360280012002411c460d03200141a0016a20032d001c3a00002001411d360280012002411d460d03200141a1016a20032d001d3a00002001411e360280012002411e460d03200141a2016a20032d001e3a00002001411f360280012002411f460d0320014180016a41236a20032d001f3a00002001412036028001200141bc016a41026a22082001418d016a2d00003a0000200120012f0184013b01c001200120012d0086013a00c20120012001418b016a2f00003b01bc0120012800870121122001418e016a2801002113200141b8016a41026a220220014194016a2d00003a0000200120014192016a2f01003b01b80120014195016a2800002114200141b4016a41026a22092001419b016a2d00003a0000200120014199016a2f00003b01b40120014180016a41206a28020021152001419c016a2802002116200120012d00c2013a005e200120012f01c0013b015c200141b0016a41026a220a20082d00003a0000200120012f01bc013b01b001200141ac016a41026a220d20022d00003a0000200120012f01b8013b01ac01200141a8016a41026a220220092d00003a0000200120012f01b4013b01a801200141d8006a41026a2217200a2d00003a0000200120012f01b0013b0158200141d4006a41026a2218200d2d00003a0000200120012f01ac013b0154200141d0006a41026a221920022d00003a0000200120012f01a8013b0150200820012d005e3a0000200120012f015c3b01bc01200120012f01583b01b801200120172d00003a00ba01200920182d00003a0000200120012f01543b01b401200a20192d00003a0000200120012f01503b01b001200d20022d00003a0000200120012f00a8013b01ac0102400240200c422088a72202200ca7460d00200c210b0c010b200241016a22172002490d0620024101742218201720172018491b22174104201741044b1bad42247e220b422088a7454102742117200ba721180240024020020d0020014100360280010c010b20014188016a410436020020012004360280012001200241246c360284010b200141c0016a2018201720014180016a104e200141c8016a280200210220012802c0014101460d0220012802c4012104200c42808080807083200241246ead84210b200c422088a721020b2004200241246c6a220241003a000020022012360204200241036a20082d00003a0000200220012f01bc013b00012002410a6a20012d00ba013a0000200220012f01b8013b01082002201336000b20022014360112200241116a20092d00003a0000200220012f01b4013b000f200241186a200a2d00003a0000200220012f01b0013b01162002201536001d20022016360019200220012f01ac013b0021200241236a200d2d00003a0000200b4280808080107c210c2011450d00200310310b2000200129031037001020002005360200200020012f013c3b0130200041326a20012d003e3a0000200041336a200e360000200041376a20012f01383b0000200041286a200141106a41186a290300370000200041206a200141106a41106a290300370000200041186a200141106a41086a290300370000200041396a200141386a41026a2d00003a00002000413a6a2006360000200041c1006a2007360000200041cc006a200f360000200041c8006a2010360000200041c0006a200141346a41026a2d00003a00002000413e6a20012f01343b0000200041c7006a200141306a41026a2d00003a0000200041c5006a20012f01303b000020002001290360370050200041d8006a200141e0006a41086a290300370000200041e0006a200141e0006a41106a290300370000200041e8006a200141e0006a41186a290300370000200041086a200c37020020002004360204200141d0016a24000f0b2002450d030b1039000b41fce2c800412c20014180016a41a8e3c80041c8e3c8001041000b41fce2c800412c20014180016a41a8e3c80041b8e3c8001041000b103b000b920401027f230041106b220224000240024002400240024002400240024020012d00000e06010402030500010b2000410036020820004201370200200241003a0000200020024101107e200141046a2802002001410c6a280200200010ce010c050b2000410036020820004201370200200241023a0000200020024101107e4120102f2203450d0520024220370204200220033602002002200141016a4120107e2000200228020022012002280208107e2002280204450d04200110310c040b2000410036020820004201370200200241043a0000200020024101107e2000200141016a4104107e200141086a280200200141106a280200200010ce010c030b2000410036020820004201370200200241053a0000200020024101107e2000200141016a4104107e200141086a280200200141106a280200200010ce010c020b2000410036020820004201370200200241063a0000200020024101107e2000200141016a4104107e200141086a280200200141106a280200200010ce010c010b2000410036020820004201370200200241073a0000200020024101107e200241003a0000200020024101107e0240200141046a2802004101460d00200241003a0000200020024101107e0c010b200241013a0000200020024101107e2002200141086a280200360200200020024104107e20022001410c6a280200360200200020024104107e0b200241106a24000f0b1039000b0e002001ad4220862000ad8410160bb60601057f230041d0026b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037020420022001360214200220003602102002200241106a360200200241d8016a200210c603200241e4016a280200210420022802e001210520022802dc01210020022802d8012106200241f8006a200241e8016a41e00010bf091a02402000450d00200241186a200241f8006a41e00010bf091a0240024020022802002802040d00200241f8006a200241186a41e00010bf091a0c010b02402004450d00200441246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200010310b410021000b2000450d00200241d8016a410c6a2004360200200241d8016a41086a2005360200200220003602dc01200220063602d801200241e8016a200241f8006a41e00010bf091a200241d8016a10e50602402004450d00200441246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402005450d00200541246c450d00200010310b200241d0026a240042010f0b200241246a4119360200200241ec016a4102360200200242023702dc01200241f4ddc4003602d8012002410436021c200241d0dec4003602182002200241186a3602e8012002200241c8026a360220200241d8016a4184dec4001047000ba40c04027f017e087f017e230041306b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024002400240024020010d0020024100360220200242043703184108102f2203450d0420034110360204200341e0bdc5003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d042003410e3602042003419ed7c8003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d042003410c36020420034192d7c8003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d042003410e3602042003419bf3c0003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d042003410a360204200341a1bfc7003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d042003410b3602042003419cefc1003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f0064108102f2203450d0420034118360204200341d4a6c2003602002002200341086a36020c200220033602082002410136020420022003360200200241186a200210f00620022802202203ad420c7e2204422088a70d032004a72201417f4c0d0320022802182105200228021c21060240024020010d00410421070c010b2001102f2207450d050b02402001410c6e220820034f0d00200841017422092003200920034b1b22094104200941044b1bad420c7e2204422088a74541027421092004a7210a024002402001410b4b0d00200241003602000c010b200241086a41043602002002200736020020022008410c6c3602040b200241186a200a20092002104e200241206a2802002101024020022802184101460d00200228021c21072001410c6e21080c030b2001450d040c050b20030d01410021090c020b200241246a4119360200200241146a410236020020024202370204200241f4ddc4003602002002410436021c200241e8dec4003602182002200241186a3602102002200241286a36022020024184dec4001047000b200520034103746a210b200341037441786a41037641016a210c41002109200721032005210103402001280200220a450d01200341086a200141046a280200360200200341046a200a360200200341003602002003410c6a2103200941016a2109200141086a2201200b470d000b200c21090b0240200641ffffffff0171450d00200510310b2002410036020820024201370300200241edcad18b063602182002200241186a4104107e2002410c3a00182002200241186a4101107e412820021080014190c9c00041282002107f200241043a00182002200241186a4101107e2009200210800102402009450d002009410c6c2101200741086a210303402003417c6a28020021092003280200220a200210800120022009200a107e2003410c6a2103200141746a22010d000b0b200228020821032002280204210a2002280200210902402008450d002008410c6c450d00200710310b200341046a2201417f4c0d0002400240024002400240024020010d002002410036020820022001360204200241013602000c010b2001102f220b450d0620024100360208200220013602042002200b360200200341c000490d01200341808001490d022003418080808004490d030b200241033a00182002200241186a4101107e200220033602182002200241186a4104107e0c030b200220034102743a00182002200241186a4101107e0c020b200220034102744101723b01182002200241186a4102107e0c010b200220034102744102723602182002200241186a4104107e0b200220092003107e200235020821042002350200210d0240200a450d00200910310b200241306a24002004422086200d840f0b103b000b1039000be20201077f230041206b2202240002400240200041046a2802002203200041086a28020022046b2001410c6a280200200128020822056b22064103752207490d00200028020021030c010b0240200420076a22082004490d00200341017422042008200420084b1b22044104200441044b1b220441ffffffff01712004464102742108200441037421040240024020030d00200241003602100c010b200241186a410436020020022003410374360214200220002802003602100b200220042008200241106a104e200241086a2802002104024020022802004101460d00200020022802042203360200200041046a2004410376360200200041086a28020021040c020b2004450d001039000b103b000b200320044103746a2005200610bf091a20012001410c6a280200360208200041086a2200200028020020076a3602000240200141046a28020041ffffffff0171450d00200128020010310b200241206a24000bbe0602027f027e230041a01a6b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037020420022001360214200220003602102002200241106a360200200241c0116a200210a504200241d8106a200241c0116a41e80010bf091a20022903a8122104200241f0086a200241c0116a41f0006a41e80710bf091a0240024020044203510d00200241186a200241d8106a41e80010bf091a2002200437038001200241186a41f0006a200241f0086a41e80710bf0921010240024020022802002802040d00200241f0086a200241186a41e80010bf091a200241c0116a200141e80710bf091a0c010b024020044202510d0020022d001841ff01714102470d002002280220450d00200228021c10310b200241b0016a108004420321040b20044203510d00200241d8106a200241f0086a41e80010bf091a200241186a200241c0116a41e80710bf091a200241c0116a200241d8106a41e80010bf091a200220043703a812200241b0126a200241186a41e80710bf091a200241f0086a200241c0116a10e7064101410220022d00f00822014101461b2203102f2200450d01200241003602c811200220033602c411200220003602c0110240024020014101470d00200241013a0018200241c0116a200241186a4101107e200241f0086a410172200241c0116a108a060c010b200241003a0018200241c0116a200241186a4101107e024020022d00f40822014107460d00200241013a0018200241c0116a200241186a4101107e200120022d00f50820022d00f608200241c0116a10ec010c010b200241003a0018200241c0116a200241186a4101107e0b20023502c811210420023502c0112105200241a01a6a240020052004422086840f0b200241e4106a41193602002002412c6a41023602002002420237021c200241f4ddc400360218200241043602dc10200241f8dec4003602d8102002200241d8106a3602282002200241981a6a3602e010200241186a4184dec4001047000b1039000b920902067f027e230041b0016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024020010d00200241106a41a1e2c800411010c002200228021421040240200228021022054101470d0041a1e2c800411010bd020b200241306a22034200370300200241186a41106a22014200370300200241186a41086a220642003703002002420037031820024188016a41f3c6c000410610a702200620024188016a41086a2207290000370300200220022900880137031820024188016a41988fc900410e10a70220032007290000370300200120022900880137030020022004410020051b36028801200241186a412020024188016a4104109f024101200210e8062003420037030020014200370300200642003703002002420037031820024188016a41f3c6c000410610a70220062007290000370300200220022900880137031820024188016a41ec90c900410610a702200320072900003703002001200229008801370300200241086a200241186a412010c002200228020c410020022802081b10e906200241186a10eb06200241003602a00120024201370398014120102f2203450d012002422037028c01200220033602880120024188016a200241286a4120107e20024198016a2002280288012203200228029001107e0240200228028c01450d00200310310b200241186a20024198016a10e0014120102f2203450d012002422037028c01200220033602880120024188016a200241c8006a4120107e20024198016a2002280288012203200228029001107e0240200228028c01450d00200310310b4120102f2203450d012002422037028c01200220033602880120024188016a200241e8006a4120107e20024198016a2002280288012203200228029001107e0240200228028c01450d00200310310b200228021c210420024198016a200241246a280200220710cb010240200741246c2201450d0020042103034020024188016a200310ec0620024198016a2002280288012206200228029001107e0240200228028c01450d00200610310b200341246a21032001415c6a22010d000b0b20023502a0012108200235029801210902402007450d00200741246c21012004210303400240024002400240024020032d00000e050400010204030b2003410c6a280200450d03200341086a28020010310c030b2003410c6a280200450d02200341086a28020010310c020b2003410c6a280200450d01200341086a28020010310c010b200341086a280200450d00200341046a28020010310b200341246a21032001415c6a22010d000b0b0240200241206a2802002203450d00200341246c450d00200410310b200241b0016a240020084220862009840f0b20024194016a41193602002002412c6a41023602002002420237021c200241f4ddc4003602182002410436028c0120024190dfc40036028801200220024188016a3602282002200241a8016a36029001200241186a4184dec4001047000b1039000b84440a027f017e017f017e0a7f017e0a7f017e3e7f037e230041d00e6b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a2002428080808080203702ec08200220013602ec06200220003602e8062002200241e8066a3602e808200241c0006a200241e8086a10d0030240024020022802404101460d00200241d0076a41086a2201200241cc006a280200360200200220022902443703d007024020022802e8082802040d00200241106a41086a20012802002201360200200220022903d0072204370310200241306a41086a200136020020022004370330200241c0006a200241306a10950120022802404101470d02200241d8076a200241cc006a290200370300200220022902443703d00741e1b6c7004128200241d0076a418cb7c700419cb7c7001041000b200241d0076a10d2030b200241dc076a4119360200200241d4006a410236020020024202370244200241f4ddc400360240200241043602d407200241a8dfc4003602d0072002200241d0076a3602502002200241c80e6a3602d807200241c0006a4184dec4001047000b200241c0006a41086a22012903002104200241f80a6a41186a22034200370300200241f80a6a41106a22004200370300200241f80a6a41086a22054200370300200242003703f80a200241c0006a41fdc6c000410910a70220052001290000370300200220022900403703f80a200241c0006a41f4b1c600410310a70220032001290000370300200020022900403703002002200241f80a6a10ab03200228020021012002290308210620024100360240200241d0076a41d8084108200241c0006a104e200241d0076a41086a280200210702400240024002400240024020022802d0074101470d002007450d010c050b20022802d4072208200241e8086a41e80010bf09220942023703682009410236029801200920022903e806370370200941f8006a200241e8066a41086a29030037030020094180016a200241e8066a41106a29030037030020094188016a200241e8066a41186a29030037030020094190016a20024188076a290300370300200941a0016a2004200642b8177c42b81720011b220620042006561b370300200941c0016a200241d0076a41f00010bf091a200941b0026a200241c0006a41a80610bf091a200741d8086e210a024002400240024002400240024002402002280234220b450d002002280230210c0340200b410c6a2105200b418c016a2103200b2f018a01220d4103742101417f2100024002400340024020010d00200d21000c020b41d3f3c0002003410810c209220e450d02200041016a21002005410c6a2105200141786a2101200341086a2103200e417f4a0d000b0b200c450d02200c417f6a210c200b20004102746a41e4016a280200210b0c010b0b200541786a2802002101200220052802003602ec06200220013602e806200241c0006a200241e8066a10ba03024020022802402201450d0020022802442103200241e8086a200241c0006a41086a418c0110bf091a200220033602d407200220013602d007200241d0076a41086a200241e8086a418c0110bf091a20024180043b01a80a4110102f2201450d0d200141f8c8c00036020c200141013602082001428180808010370200200220013602d00a4110102f2203450d0d200341e0c8c00036020c20034101360208200342818080801037020020012001280200417f6a2200360200024020000d002001280208200128020c2802001102000240200128020c280204450d00200128020810310b200141046a22002000280200417f6a220036020020000d00200110310b200220033602d00a20022802d807220fad42d0007e2204422088a70d092004a72200417f4c0d0920022802d00721010240024020000d004104210e0c010b2000102f220e450d0e0b200241003602482002200e3602402002200041d0006e22103602440240200041d000490d00200241e8086a41106a21032010210503402000450d012005450d05200241e8086a200110ac05200128020c210b200141186a290000210420012900102106200241e8066a41186a220c200141286a290000370300200141206a2900002111200241e8066a41206a220d200141306a290000370300200241e8066a41286a2212200141386a290000370300200241e8066a41306a2213200141c0006a290000370300200241e8066a41386a2214200141c8006a290000370300200241e8066a41106a2011370300200241e8066a41086a200437030020032006370000200341086a2004370000200341106a2011370000200341186a200c290300370000200341206a200d290300370000200341286a2012290300370000200341306a2013290300370000200341386a2014290300370000200220063703e8062002200b3602f408200e200241e8086a41d00010bf0941d0006a210e200041b07f6a2100200141d0006a21012005417f6a22050d000b0b2002200f360248200241e4076a2802002215ad42f4027e2204422088a70d092004a72201417f4c0d090240024020010d0041042116410021170c010b20022802dc0721002001102f2216450d0e200141f4026e2117200141f402490d002000201541f4026c6a211841002105200241e8086a41386a2112200241e8086a41306a210f200241e8086a41286a2110200241e8086a41206a21192017211a03402005211b201820002203460d01201b2017460d072003410c6a2900002104200341146a29000021062003411c6a29000021112003290004211c200241a80e6a41086a221d2003412c6a290200370300200241a80e6a41106a221e200341346a290200370300200241a80e6a41186a221f2003413c6a29020037030020032802002120200241f80a6a41186a22212011370300200241f80a6a41106a22222006370300200241f80a6a41086a22232004370300200220032902243703a80e2002201c3703f80a200241880e6a41186a2224200341dc006a290000370300200241880e6a41106a2225200341d4006a290000370300200241880e6a41086a2226200341cc006a290000370300200220032900443703880e200241e80d6a41186a2227200341fc006a290000370300200241e80d6a41106a2228200341f4006a290000370300200241e80d6a41086a2229200341ec006a290000370300200220032900643703e80d200241c80d6a41186a222a2003419c016a290000370300200241c80d6a41106a222b20034194016a290000370300200241c80d6a41086a222c2003418c016a29000037030020022003290084013703c80d2012200341dc016a290000370300200f200341d4016a2900003703002010200341cc016a2900003703002019200341c4016a290000370300200241e8086a41186a222d200341bc016a290000370300200241e8086a41106a222e200341b4016a290000370300200241e8086a41086a222f200341ac016a290000370300200220032900a4013703e808200241a80d6a41186a2230200341fc016a290000370300200241a80d6a41106a2231200341f4016a290000370300200241a80d6a41086a2232200341ec016a290000370300200220032900e4013703a80d200241880d6a41186a22332003419c026a290000370300200241880d6a41106a223420034194026a290000370300200241880d6a41086a22352003418c026a29000037030020022003290084023703880d200241e8066a200341a4026a109d0620032802b802223641ffffffff00712036470d0b20364104742213417f4c0d0b410021370240024020130d0041042114410021380c010b20032802b00221002013102f2214450d104100210520134104762238210b034020132005460d01200028020c2201417f4c0d0d2000280204210e2000280200210c0240024020010d004101210d0c010b2001102f220d450d120b200041106a2100200d200e200110bf09210d201420056a220e200c360200200e410c6a2001360200200e41086a2001360200200e41046a200d360200200541106a2105200b417f6a220b0d000b0b024020032802bc022201450d0020032802c4022213417f4c0d0c0240024020130d00410121370c010b2013102f2237450d110b20372001201310bf091a0b20032802d002220d417f4c0d0b20032802c802210102400240200d0d00410121000c010b200d102f2200450d100b20002001200d10bf092139200241980b6a41086a223a200241e8066a41086a223b280200360200200241e80c6a41086a223c2023290300370300200241e80c6a41106a223d2022290300370300200241e80c6a41186a223e2021290300370300200241c80c6a41086a223f201d290300370300200241c80c6a41106a2240201e290300370300200241c80c6a41186a2241201f290300370300200220022903e8063703980b200220022903f80a3703e80c200220022903a80e3703c80c20032802d802214220032802d4022143200241a80c6a41186a22442024290300370300200241a80c6a41106a22452025290300370300200241a80c6a41086a22462026290300370300200241880c6a41086a22472029290300370300200241880c6a41106a22482028290300370300200241880c6a41186a22492027290300370300200241e80b6a41086a224a202c290300370300200241e80b6a41106a224b202b290300370300200241e80b6a41186a224c202a290300370300200220022903880e3703a80c200220022903e80d3703880c200220022903c80d3703e80b200241e8066a41386a224d2012290300370300200241e8066a41306a224e200f290300370300200241e8066a41286a224f2010290300370300200241e8066a41206a22502019290300370300200241e8066a41186a2251202d290300370300200241e8066a41106a2252202e290300370300203b202f290300370300200241c80b6a41186a22532030290300370300200241c80b6a41106a22542031290300370300200241c80b6a41086a22552032290300370300200220022903e8083703e806200220022903a80d3703c80b200241a80b6a41186a22562033290300370300200241a80b6a41106a22572034290300370300200241a80b6a41086a22582035290300370300200220022903880d3703a80b20032802e4022259ad42c1007e2204422088a70d0b2004a7220b417f4c0d0b02400240200b0d004101210c4100215a0c010b20032802dc022101200b102f220c450d10200b41c1006e215a200b41c100490d0041002105205a210e0340200b2005460d01200e450d08200141096a2900002104200141116a2900002106200141196a2900002111200141216a290000211c200141296a290000215b200141316a290000215c2001290001215d2012200141396a290000370300200f205c3703002010205b3703002019201c370300202d2011370300202e2006370300202f2004370300200c20056a220020012d00003a0000200041016a205d370000200041096a2004370000200041116a2006370000200041196a2011370000200041216a201c370000200041296a205b370000200041316a205c3700002002205d3703e808200041396a2012290300370000200541c1006a2105200141c1006a2101200e417f6a220e0d000b0b201b41016a2105200341f4026a2100200241d80a6a200341e8026a10ac05201f203e290300370300201e203d290300370300201d203c2903003703002026203f2903003703002025204029030037030020242041290300370300202920462903003703002028204529030037030020272044290300370300200220022903e80c3703a80e200220022903c80c3703880e200220022903a80c3703e80d202a2049290300370300202b2048290300370300202c20472903003703002032204a2903003703002031204b2903003703002030204c290300370300202f203b290300370300202e2052290300370300202d2051290300370300201920502903003703002010204f290300370300200f204e2903003703002012204d290300370300200220022903880c3703c80d200220022903e80b3703a80d200220022903e8063703e808203320532903003703002034205429030037030020352055290300370300202120562903003703002022205729030037030020232058290300370300200241e80a6a41086a2203203a280200360200200220022903c80b3703880d200220022903a80b3703f80a200220022903980b3703e80a2016201b41f4026c6a22012020360200200120022903a80e3702042001410c6a201d290300370200200141146a201e2903003702002001411c6a201f290300370200200120022903880e3702242001412c6a2026290300370200200141346a20252903003702002001413c6a2024290300370200200120022903e80d370244200141cc006a2029290300370200200141d4006a2028290300370200200141dc006a2027290300370200200141fc006a202a290300370200200141f4006a202b290300370200200141ec006a202c290300370200200120022903c80d3702642001419c016a203029030037020020014194016a20312903003702002001418c016a2032290300370200200120022903a80d37028401200141dc016a2012290300370200200141d4016a200f290300370200200141cc016a2010290300370200200141c4016a2019290300370200200141bc016a202d290300370200200141b4016a202e290300370200200141ac016a202f290300370200200120022903e8083702a401200141fc016a2033290300370200200141f4016a2034290300370200200141ec016a2035290300370200200120022903880d3702e4012001419c026a202129030037020020014194026a20222903003702002001418c026a2023290300370200200120022903f80a37028402200141ac026a2003280200360200200120022903e80a3702a402200120593602e4022001205a3602e0022001200c3602dc02200120423602d802200120433602d4022001200d3602d0022001200d3602cc02200120393602c802200120133602c402200120133602c002200120373602bc02200120363602b802200120383602b402200120143602b002200141f0026a200241d80a6a41086a280200360200200120022903d80a3702e802201a417f6a221a0d000b0b200241f0076a2802002228ad42307e2204422088a70d092004a72201417f4c0d090240024020010d0041042126410021250c010b20022802e807210c2001102f2226450d0e200141306e212520014130490d00200c202841306c6a212741002103200241f80a6a41106a211e200241f80a6a41086a211f200241a0096a210b200241ea066a212f2025212103402003211b2027200c460d01201b2025460d09200241f80a6a41186a2222200c41286a290200370300201e200c41206a290200370300201f200c41186a2902003703002002200c2902103703f80a200c28020c2223ad42c8007e2204422088a70d0b2004a7222d417f4c0d0b200c280200212402400240202d0d004104212e4100211d0c010b200c280204210e202d102f222e450d10202d41c8006e211d202d41c800490d0041002103201d21000340200e2101202d2003460d012000450d0a2000417f6a2100410421050240024002400240024020012d00040e050001020304000b410021050c030b410121050c020b410221050c010b410321050b200141c8006a210e2001410d6a2900002104200141156a29000021062001411d6a2900002111200141256a290000211c2001412d6a290000215b200141356a290000215c2001290005215d200b2001413d6a290000370300200241e8086a41306a220d205c370300200241e8086a41286a2212205b370300200241e8086a41206a2213201c370300200241e8086a41186a22142011370300200241e8086a41106a220f2006370300200241e8086a41086a2210200437030020012802002119202e20036a220141046a20053a0000200120193602002002205d3703e808200141056a20022903e8083700002001410d6a2010290300370000200141156a200f2903003700002001411d6a2014290300370000200141256a20132903003700002001412d6a2012290300370000200141356a200d2903003700002001413d6a200b290300370000200141c7006a202f2d00003a0000200141c5006a20022f00e8063b0000200341c8006a210320000d000b0b201b41016a2103200c41306a210c200241a80e6a41186a20222903002204370300200241a80e6a41106a201e2903002206370300200241a80e6a41086a201f2903002211370300200220022903f80a221c3703a80e2026201b41306c6a2201202336020c2001201d3602082001202e360204200120243602002001201c370210200141186a2011370200200141206a2006370200200141286a20043702002021417f6a22210d000b0b200241e8086a41086a2201200241d0076a413c6a290200370300200241e8086a41106a2203200241d0076a41c4006a290200370300200241e8086a41186a2200200241d0076a41cc006a290200370300200241e8066a41086a2205200241d0076a41dc006a290200370300200241e8066a41106a220e200241d0076a41e4006a290200370300200241e8066a41186a220b200241d0076a41ec006a2902003703002002200241d0076a41346a2902003703e8082002200241d0076a41d4006a2902003703e80620022802f407210c200241a80e6a41086a220d200241d0076a41fc006a290200370300200241a80e6a41106a2212200241d0076a4184016a290200370300200241a80e6a41186a2213200241d0076a418c016a2902003703002002200241d0076a41f4006a2902003703a80e200241880e6a200241d0076a41286a10f406200241c0006a41206a2028360200200241c0006a411c6a2025360200200241d4006a2015360200200241c0006a41106a2017360200200241c0006a41286a20022903880e370300200241f0006a200241880e6a41086a280200360200200241c0006a41346a20022903e808370200200241c0006a413c6a2001290300370200200241c0006a41c4006a2003290300370200200241c0006a41cc006a20002903003702002002200c360264200220263602582002201636024c200241c0006a41ec006a200b290300370200200241c0006a41e4006a200e290300370200200241c0006a41dc006a2005290300370200200241c0006a41d4006a20022903e806370200200241c0006a41f4006a20022903a80e370200200241c0006a41fc006a200d290300370200200241c0006a4184016a2012290300370200200241c0006a418c016a2013290300370200200241f8096a200241a80a6a200241c0006a10e40220022903f8094201520d02200241e8086a41206a200241f8096a41286a2903003703002000200241f8096a41206a2903003703002003200241f8096a41186a2903003703002001200241f8096a41106a290300370300200220022903800a3703e808024041002802809a4a4102490d002002411e3602ec062002200241e8086a3602e80641002802fc994a210141002802f8994a210341002802849a4a210020024180016a41f201360200200241f8006a42c880808010370300200241f4006a41e2f0c000360200200241ec006a422b370200200241e8006a41b7f0c000360200200241e0006a4201370300200241d0006a4201370300200241c8006a411b360200200241dc006a200241e8066a360200200241e4f3c00036024c200241ecf3c00036024420024102360240200341f8fac900200041024622001b200241c0006a20014180a6c00020001b2802101103000b200241e8086a200241f4076a41f00010bf091a024020022802d8072203450d0020022802d0072101200341d0006c21000340200128020021030240200141086a2205280200220e450d00200310310b200120033602002005200e360200200141d0006a2101200041b07f6a22000d000b0b024020022802d4072201450d00200141d0006c450d0020022802d00710310b024020022802e4072203450d0020022802dc072101200341f4026c210303402001109b02200141f4026a21012003418c7d6a22030d000b0b0240200241e0076a2802002201450d00200141f4026c450d0020022802dc0710310b024020022802f0072201450d00200141306c210320022802e80741086a21010340024020012802002200450d00200041c8006c450d002001417c6a28020010310b200141306a2101200341506a22030d000b0b0240200241ec076a2802002201450d00200141306c450d0020022802e80710310b410421014100210341002100410421054100210e4100210b4104210c4100210d410021120c080b41002802809a4a4102490d0041002802fc994a210141002802f8994a210341002802849a4a210020024180016a41e101360200200241f8006a42c880808010370300200241f4006a41e2f0c000360200200241ec006a422b370200200241e8006a41b7f0c000360200200241e0006a4200370300200241dc006a41f8fac900360200200241d0006a4201370300200241c8006a411b360200200241dcf3c00036024c200241ecf3c00036024420024102360240200341f8fac900200041024622001b200241c0006a20014180a6c00020001b2802101103000b410121050c0a0b200241d0076a411c6a280200210d200241d0076a41106a280200210e20022802f007211220022802e807210c20022802e407210b20022802dc07210520022802d807210020022802d407210320022802d0072101200241e8086a200241f4076a41f00010bf091a20010d05410121050c090b201020104188eec900103f000b205a205a4188eec900103f000b201720174188eec900103f000b201d201d4188eec900103f000b202520254188eec900103f000b200241d0076a200241e8086a41f00010bf091a200741a8776a41d7084b0d02200242d8888080800137024420022009360240200241e8066a41b0114108200241c0006a104e200241e8066a41086a280200211320022802e8064101470d0120130d040b103b000b20022802ec062108201341d8086e210a0b200841d8086a200241e8066a41e80010bf091a200841c0096a4202370300200841940a6a2012360200200841900a6a200d3602002008418c0a6a200c360200200841880a6a200b360200200841840a6a200e360200200841800a6a2005360200200841f8096a2000ad4220862003ad84370300200841f4096a2001360200200841f0096a410e360200200841c8096a20022903f809370300200841d0096a200241800a6a290300370300200841d8096a200241880a6a290300370300200841e0096a200241900a6a290300370300200841e8096a200241980a6a290300370300200841980a6a200241d0076a41f00010bf091a200841880b6a200241c0006a41a80610bf091a410221050b200241306a10d203200541d8086c22034104722201102f2200450d00200241003602d807200220013602d407200220003602d007200241d0076a200510cb01200821010340200220013602e808200241c0006a200241e8086a10f605200241d0076a200228024022002002280248107e02402002280244450d00200010310b200141d8086a2101200341a8776a22030d000b200541d8086c210320023502d807210420023502d007210620082100034002402000220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b200141d8086a210020014198016a10b301200341a8776a22030d000b0240200a450d00200a41d8086c450d00200810310b200241d00e6a240020044220862006840f0b1039000bdd0603027f017e0d7f230041106b220224000240024020012802082203ad42247e2204422088a70d002004a72205417f4c0d00200128020021064104210702402005450d002005102f2207450d020b410021082000410036020820002007360200200041046a200541246e2209360200024020054124490d00034020052008460d010240024002400240024002400240200620086a22012d00000e06010203040500010b2001410c6a280200220a417f4c0d08200141046a280200210102400240200a0d004101210b0c010b200a102f220b450d0a0b200b2001200a10bf09410876210c4105210d200a210e0c050b2002200141146a2900003703002002200141196a290000370005200141016a2f0000200141036a2d000041107472210f200141046a280000220b410876210c200141106a28000021102001410c6a280000210a200141086a280000210e4100210d0c040b200141106a2802002210417f4c0d06200141036a2d0000210f200141016a2f0000210a200141086a2802002111200141046a2d0000210b4101210d4101210e02402010450d002010102f220e450d080b200a200f41107472210f200e2011201010bf091a2010210a0c030b200141106a2802002210417f4c0d05200141036a2d0000210f200141016a2f0000210a200141086a280200210d200141046a2d0000210b0240024020100d004101210e0c010b2010102f220e450d070b200a200f41107472210f200e200d201010bf091a4102210d2010210a0c020b200141106a2802002210417f4c0d04200141036a2d0000210f200141016a2f0000210a200141086a280200210d200141046a2d0000210b0240024020100d004101210e0c010b2010102f220e450d060b200a200f41107472210f200e200d201010bf091a4103210d2010210a0c010b4104210d200141046a280200210b2001410c6a280200210a200141086a280200210e4100210c0b200720086a2201200d3a0000200141036a200f4110763a0000200141016a200f3b0000200141106a20103602002001410c6a200a360200200141086a200e360200200141046a200c410874200b41ff017172360200200141146a20022903003702002001411c6a200241086a290300370200200841246a21082009417f6a22090d000b0b20002003360208200241106a24000f0b103b000b1039000bb918070a7f017e037f027e017f017e027f230041c0056b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037021c2002200136022c200220003602282002200241286a360218200241c8046a200241186a10c603024020022802cc042204450d00200241d4046a280200210520022802d004210620022802c8042101200241e8036a200241d8046a41e00010bf091a200241c8046a200241186a10e406024020022802c80422070d0002402005450d00200541246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2006450d01200641246c450d01200410310c010b200241c8046a41086a280200210820022802cc04210920024188036a200241e8036a41e00010bf091a200241a8026a20024188036a41e00010bf091a200241c8046a200241186a10d003024020022802c8044101470d0002402005450d00200541246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200410310b02402008450d00200841d8086c210320072100034002402000220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b200141d8086a210020014198016a10b301200341a8776a22030d000b0b2009450d01200941d8086c450d01200710310c010b200241b8016a41086a2203200241c8046a410c6a280200360200200220022902cc043703b801200241c8016a200241a8026a41e00010bf091a200241306a410c6a2005360200200241306a41086a20063602002002200436023420022001360230200241c0006a200241c8016a41e00010bf091a200241a8016a2008360200200241a4016a2009360200200241b4016a2003280200360200200220073602a001200220022903b8013702ac01200241ac016a210a0240024020022802182802040d00200241e8036a41086a200a41086a2802003602002002200a2902003703e8030c010b02402005450d00200541246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200410310b02402008450d00200841d8086c210320072100034002402000220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b200141d8086a210020014198016a10b301200341a8776a22030d000b0b02402009450d00200941d8086c450d00200710310b200a10d203410021040b2004450d00200241a8026a41086a200241e8036a41086a220b2802002201360200200220022903e803220c3703a80220024188036a41086a20013602002002200c37038803200241013b01f403200242003702ec03024002402008450d00200741a0016a2101200841d8086c41a8776a2103200241c0006a210d200241c8006a210e0340200141486a2903004202520d014101210a024002400240200141786a220f28020022004102470d0020012903002110200241306a20024188036a10950102400240024020022802304101460d002002290338210c200e4200370300200d4200370300200241306a41086a2200420037030020024200370330200241c8046a41fdc6c000410910a7022000200241c8046a41086a220a290000370300200220022900c804370330200241c8046a41f4b1c600410310a702200d41086a200a290000370000200d20022900c804370000200241086a200241306a10ab0302402010200c42b0ea017c580d00201142808080807083211141bcb6c700ad210c4280808080d00421104100210a41012100410021120c020b2010200229031042b8177c42b81720022802081b220c5a0d02200c428080808070832110410021004101210a0c010b2002290338220c42808080807083211020022802342112410121004100210a201342808080807083200235024084221321110b20022011370340200220123602342002200036023020022010200c42ffffffff0f83843703382002200241e8036a200241306a10f606200228020022140d022010422088a72114200ca7211502402000450d00200241c8046a41086a200241e8036a41086a290300370300200220022903e8033703c8042012450d072014450d07201510310c070b200a201245720d002014450d00201510310b200f28020021004100210a0b02402000410e470d002003450d040c020b200a20034572450d010c030b20022802042101200220143602c804200220013602cc0441e9ccc8004122200241c8046a418ccdc80041a0ccc8001041000b200341a8776a2103200141d8086a21010c000b0b200241c8046a41086a200b290300370300200220022903e8033703c8040b20024188036a10d20302402005450d00200541246c21032004210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402006450d00200641246c450d00200410310b02402008450d00200841d8086c210320072100034002402000220141e8006a2903004202510d0020012d00004102470d00200141086a280200450d00200141046a28020010310b200141d8086a210020014198016a10b301200341a8776a22030d000b0b02402009450d00200941d8086c450d00200710310b200241003602f003200242013703e803200220022d00d4043a0030200241e8036a200241306a4101107e200220022d00d5043a0030200241e8036a200241306a4101107e200241e8036a20022802d004220a10cb010240024020022802cc0422030d0041002101410021034100210a0c010b20022802c804210020032101034020032f018a01210f2000450d012000417f6a21002003200f4102746a41e4016a280200210320012802e40121010c000b0b200241c4006a200f360200200241c0006a20033602002002200a3602482002420037033820022001360234200241003602300240200a450d0003402002200a417f6a360248200241306a410020011b220f280200210002400240200f280208220a200f28020422032f018a014f0d00200321010c010b03400240200328020022010d00410021010c020b200041016a210020032f018801210a20012103200a20012f018a014f0d000b0b200a41016a21120240024020000d00200121030c010b200120124102746a41e4016a280200210302402000417f6a2200450d00034020032802e40121032000417f6a22000d000b0b410021120b200f2003360204200f4100360200200f2012360208200241e8036a2001200a4103746a418c016a4108107e2001200a410c6c6a220141046a2802002001410c6a280200200241e8036a10ce012002280248220a450d01200228023421010c000b0b20023502f003210c20023502e8032110200241c8046a10d203200241c0056a24002010200c422086840f0b200241d4046a4119360200200241c4006a410236020020024202370234200241f4ddc400360230200241043602cc04200241c4dfc4003602c8042002200241c8046a3602402002200241b8056a3602d004200241306a4184dec4001047000b910401097f230041306b220324000240024020012d000d450d0041312104419ccdc80021050c010b02400240024002400240200228020022064101470d00200110d20320014200370204200342f4d2b59bc7ae98b830370300200141046a21040c010b20012802042107200342f4d2b59bc7ae98b83037030020070d01200141046a21040b2003210841e401102f2207450d0141002109200741003b018a012007410036020020042007360200200141003602000c020b20012802002109200321080c010b1039000b02400240024003402007418c016a210520072f018a01210a4100210402400340200a2004460d0120082005410810c209220b450d03200441016a2104200541086a2105200b417f4a0d000b2004417f6a210a0b02402009450d002009417f6a21092007200a4102746a41e4016a28020021070c010b0b200342f4d2b59bc7ae98b8303703102003200136020c2003200a3602082003200736020420034100360200200341003602202003420137031820060d01200341003a0028200341186a200341286a4101107e2003200241086a290300370328200341186a200341286a4108107e0c020b412d210441cdcdc80021050c020b200341013a0028200341186a200341286a4101107e200241046a200341186a10f9050b2003200341186a10d103200120063a000d41002105200141003a000c0b2000200436020420002005360200200341306a24000b9d0802087f027e23004180016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a02400240024020010d00200241003602082002420137030020024100360230200241d8006a41204101200241306a104e200241d8006a41086a22032802002101024020022802584101470d002001450d020c030b200228025c21042002200136020420022004360200200241d8006a41186a22014200370300200241d8006a41106a220442003703002003420037030020024200370358200241106a41f9c6c000410410a7022003200241106a41086a220529000037030020022002290010370358200241106a41f890c500410e10a7022001200529000037030020042002290010370300200241306a200241d8006a10c70520022d003021052001200241c9006a2900003703002004200241c1006a2900003703002003200241396a290000370300200220022900313703580240024020054101460d00200241106a41186a4200370300200241106a41106a4200370300200241186a4200370300200242003703100c010b200241106a41186a2001290300370300200241106a41106a2004290300370300200241106a41086a200241d8006a41086a290300370300200220022903583703100b2002200241106a4120107e200241d8006a200228020022062002280208109a01200241306a41186a2205200241d8006a41186a2203290300370300200241306a41106a2207200241d8006a41106a2201290300370300200241306a41086a2208200241d8006a41086a22042903003703002002200229035837033020034200370300200142003703002004420037030020024200370358200241106a41f9c6c000410410a7022004200241106a41086a220929000037030020022002290010370358200241106a41e390c500410a10a7022003200929000037030020012002290010370300200241106a200241d8006a412010bf0202402002280204450d00200610310b2004200829030037030020012007290300370300200320052903003703002002200229033037035820024100360218200242013703104120102f2203450d022002422037023420022003360230200241306a200241d8006a4120107e200241106a200228023022032002280238107e02402002280234450d00200310310b2002350218210a2002350210210b20024180016a2400200b200a422086840f0b200241e4006a4119360200200241c4006a410236020020024202370234200241f4ddc4003602302002410436025c200241dcdfc4003602582002200241d8006a3602402002200241f8006a360260200241306a4184dec4001047000b103b000b1039000bb25705027f027e087f077e067f230041d0366b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037029c36200220013602ac35200220003602a8352002200241a8356a36029836200241003a00f82a02400240024002402001450d0020022001417f6a3602ac352002200041016a3602a83541002101024020002d00000e03030200010b410221010c020b420321040c020b410121010b200241f8116a20024198366a10a50442032104024020022903e01222054203520d000c010b200241d71a6a200241f8116a41e80010bf091a200241f82a6a200241e8126a41e80710bf091a200241c0006a200241d01a6a41ef0010bf091a200521040b20024188116a200241c0006a41ef0010bf091a200241e0226a200241f82a6a41e80710bf091a02400240024002400240024020044203510d00200220013a00a808200241a8086a41017220024188116a41ef0010bf09210020024198096a2004370300200241a0096a200241e0226a41e80710bf092103024002402002280298362802040d00200241f82a6a200041ef0010bf091a200241f8116a200341e80710bf091a0c010b024020044202510d0020022d00b0084102470d00200241b8086a280200450d0020022802b40810310b200241c8096a10ab02420321040b20044203510d00200241a8086a200241f82a6a41ef0010bf091a20024188116a200241af086a41e80010bf091a200241c0006a200241f8116a41e80710bf091a200241f8116a20024188116a41e80010bf091a200220043703e012200241e8126a200241c0006a41e80710bf091a2002200241f8116a3602f82a200241a8086a200241f82a6a10f60520022802b0082106024020022802ac08450d0020022802a80810310b200241a8086a200241f8116a41d80810bf091a200241f82a6a200241a8086a10a60420022d00f82a210020022f00f92a210320022d00fb2a2107200241e0226a200241f82a6a41047241940810bf091a024020004101460d00200241d01a6a200241e0226a41046a41900810bf091a20024190336a200241a01b6a2208108c020240024020022903f01a4202520d00200241f82a6a41206a22004200370300200241f82a6a41186a22034280808080c000370300200241013a00a02b200242043703882b2002427f3703802b200242003703f82a200241a8086a41206a22074200370300200241a8086a41186a22094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241b8336a200241f82a6a200241a8086a10f906200241f82a6a41286a220a200241b8336a41286a2903003703002000200241b8336a41206a2903003703002003200241b8336a41186a290300370300200241f82a6a41106a220b200241b8336a41106a290300370300200241f82a6a41086a220c200241b8336a41086a290300370300200220022903b8333703f82a2007420037030020094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241e8336a200241f82a6a200241a8086a10f906200a200241e8336a41286a2903003703002000200241e8336a41206a2903003703002003200241e8336a41186a290300370300200b200241e8336a41106a290300370300200c200241e8336a41086a290300370300200220022903e8333703f82a2007420037030020094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a80820024198346a200241f82a6a200241a8086a10f906200a20024198346a41286a290300370300200020024198346a41206a290300370300200320024198346a41186a290300370300200b20024198346a41106a290300370300200c20024198346a41086a29030037030020022002290398343703f82a2007420037030020094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241c8346a200241f82a6a200241a8086a10f906200a200241c8346a41286a2903003703002000200241c8346a41206a2903003703002003200241c8346a41186a290300370300200b200241c8346a41106a290300370300200c200241c8346a41086a290300370300200220022903c8343703f82a2007420037030020094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241f8346a200241f82a6a200241a8086a10f90620024198366a41286a200241f8346a41286a29030037030020024198366a41206a200241f8346a41206a29030037030020024198366a41186a220d200241f8346a41186a29030037030020024198366a41106a200241f8346a41106a29030037030020024198366a41086a200241f8346a41086a290300370300200220022903f83437039836200241a8086a20022903903320022d009833200610cd04200c200241a8086a410c6a290200370300200b200241a8086a41146a2902003703002003200241a8086a411c6a2902003703002000200241a8086a41246a290200370300200a200241a8086a412c6a290200370300200241a82b6a200241dc086a280200360200200220022902ac083703f82a20022d00a8084101470d0120022d00ab08210720022f00a908210620022802a83621030240200d2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241ac366a2802002201450d002001410c6c450d00200310310b2007411074210720022802b43621030240200241bc366a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200620077221010240200241b8366a2802002200450d002000410c6c450d00200310310b200241013a00a808200220013b00a908200220014110763a00ab08200810fa060c070b200241f82a6a41206a22004200370300200241f82a6a41186a22034280808080c000370300200241013a00a02b200242043703882b427f21042002427f3703802b200242003703f82a200241a8086a41206a22074200370300200241a8086a41186a22014280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241b8336a200241f82a6a200241a8086a10f906200241f82a6a41286a2209200241b8336a41286a2903003703002000200241b8336a41206a2903003703002003200241b8336a41186a290300370300200241f82a6a41106a220a200241b8336a41106a290300370300200241f82a6a41086a220b200241b8336a41086a290300370300200220022903b8333703f82a2007420037030020014280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241e8336a200241f82a6a200241a8086a10f9062009200241e8336a41286a2903003703002000200241e8336a41206a2903003703002003200241e8336a41186a290300370300200a200241e8336a41106a290300370300200b200241e8336a41086a290300370300200220022903e8333703f82a2007420037030020014280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a80820024198346a200241f82a6a200241a8086a10f906200920024198346a41286a290300370300200020024198346a41206a290300370300200320024198346a41186a290300370300200a20024198346a41106a290300370300200b20024198346a41086a29030037030020022002290398343703f82a20014200370300200241a8086a41106a22004200370300200241a8086a41086a22034200370300200242003703a808200241e0226a41f3c6c000410610a7022003200241e0226a41086a2209290000370300200220022900e0223703a80820024198366a41ec90c900410610a702200120024198366a41086a2900003703002000200229009836370300200241386a200241a8086a412010c002200228023c410020022802381bad2105024020022903f01a4201520d0020022903f81a22044200510d04200241801b6a290300220e20047c42002005200e7d220e200e2005561b220e7c200e2004827d21040b2007420037030020014280808080c000370300200220022800e0223602a8352002200241e3226a2800003600ab35200241d4086a20022800ab35360000200241013a00d008200242043703b808200242003703a80820024200200420057d220520052004561b3703b008200220022802a8353600d108200241c8346a200241f82a6a200241a8086a10f906200241e0226a41286a200241c8346a41286a290300370300200241e0226a41206a200241c8346a41206a290300370300200241e0226a41186a200241c8346a41186a290300370300200241e0226a41106a200241c8346a41106a2903003703002009200241c8346a41086a290300370300200220022903c8343703e02220024198366a200241d01a6a109303200241a8086a200228029836220020022802a036109403200241f0086a280200410020022903a8084201511b21010240200228029c36450d00200010310b0240024020022802881b22002001490d00410c102f2203450d09410421074104102f2209450d09200242043702ac08200220093602a808200241a8086a200241d01a6a4120107e2002200036029836200241a8086a20024198366a4104107e200341086a20022802b008360200200320022903a808370200410021090240200120004f0d00410c102f2207450d0a4104102f2201450d0a200242043702ac08200220013602a808200241a8086a200241d01a6a4120107e20022000417f6a36029836200241a8086a20024198366a4104107e200741086a20022802b008360200200720022903a808370200410121090b200241f82a6a41206a428180808010370300200241f82a6a41186a22012009360200200241f82a6a41146a2009360200200220022800a8353602b0332002200241ab356a2800003600b333200241f82a6a412c6a20022800b333360000200241013a00a02b200220033602942b200220073602882b2002427f3703802b200242003703f82a200220022802b0333600a12b200241f8346a200241e0226a200241f82a6a10f90620024198366a41286a200241f8346a41286a29030037030020024198366a41206a200241f8346a41206a29030037030020024198366a41186a200241f8346a41186a29030037030020024198366a41106a200241f8346a41106a29030037030020024198366a41086a200241f8346a41086a290300370300200220022903f83437039836024020022d00983322004102470d00200241802b6a200241b4086a290200370300200241f82a6a41106a200241a8086a41146a2902003703002001200241c4086a290200370300200241982b6a200241cc086a290200370300200241f82a6a41286a200241a8086a412c6a290200370300200241a82b6a200241dc086a280200360200200220022902ac083703f82a41801221010c070b200241a8086a2002290390332000200610cd04200241f82a6a41086a200241a8086a410c6a290200370300200241f82a6a41106a200241a8086a41146a2902003703002001200241a8086a411c6a290200370300200241f82a6a41206a200241a8086a41246a290200370300200241f82a6a41286a200241a8086a412c6a290200370300200241a82b6a200241dc086a280200360200200220022902ac083703f82a20022d00a8084101470d0120022f00a90820022d00ab084110747221010c060b200220022800a8353602b0332002200241ab356a2800003600b3332002410a3a00ab0820024180063b00a908200241013a00a80820022802f02221030240200241f8226a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241f4226a2802002201450d002001410c6c450d00200310310b20022802fc222103024020024184236a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b20024180236a2802002201450d062001410c6c450d0620031031200810fa060c070b200241e0226a41286a2201200241a42b6a290200370300200241e0226a41206a2203200241f82a6a41246a290200370300200241e0226a41186a2207200241f82a6a411c6a290200370300200241e0226a41106a22092002418c2b6a290200370300200241e0226a41086a220a200241f82a6a410c6a290200370300200220022902fc2a3703e022200241a8356a20024198366a200241e0226a10f9062001200241a8356a41286a2903003703002003200241a8356a41206a2903003703002007200241a8356a41186a2903003703002009200241a8356a41106a290300370300200a200241a8356a41086a290300370300200220022903a8353703e022200241a8086a2006200229039033220f20022903901b2210200241981b6a290300221120022d00993341004720001085054200210542002104024020022903a8084201520d00427f427f200241a8086a41106a2903002204200241c8086a2903007c20022903b0082205200241a8086a41186a2903007c220e2005542201ad7c22052001200520045420052004511b22011b2204200241d8086a2903007c427f200e20011b2205200241a8086a41286a2903007c220e2005542201ad7c22052001200520045420052004511b22011b2104427f200e20011b21050b427f2004200241e8086a29030022127c200520022903e00822137c22142005542201ad7c220e2001200e200454200e2004511b22011b210e427f201420011b211402400240024020052013842004201284844200520d00200220143703d835200242003703e8352002200e3703e0350c010b20024180366a200241d01a6a2014200e410141112010201184501b410010da052002280280364101460d01200241f0356a2201200229038836370300200241f8356a20024190366a290300370300200220143703d835200242013703e8352002200e3703e035200220013602a808200241a8086a10a2030b200241a8086a108d0220022903b0082104200241013a00a02b200241186a200e4200418080f00120064101200641014b1b6ead22052004200f4201200f4201561b80220420042005561b2204420010be09200241286a201442002004420010be09200241f82a6a41206a4200370300200241f82a6a41186a4280808080c0003703002002200241a3336a2800003600b333200220022800a0333602b033200241a42b6a20022800b333360000200242043703882b200220022802b0333600a12b20022903202105200241286a41086a29030021042002290318210e2002427f3703802b2002427f200229032820054200522004200e7c22052004547222011b427f427f200520011b501b3703f82a20024198366a200241e0226a200241f82a6a10f906200241a8086a41086a200229039836370300200241a8086a41106a20024198366a41086a290300370300200241a8086a41186a20024198366a41106a290300370300200241a8086a41206a20024198366a41186a290300370300200241a8086a41286a20024198366a41206a290300370300200241d8086a20024198366a41286a290300370300200241003a00a808200810fa060c070b200220022800a0333602b0332002200241a3336a2800003600b333200241003a00ab0820024180023b00a908200241013a00a80820022802f02221030240200241f8226a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241f4226a2802002201450d002001410c6c450d00200310310b20022802fc222103024020024184236a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b20024180236a2802002201450d052001410c6c450d0520031031200810fa060c060b200241e0226a41286a200241f82a6a412c6a290200370300200241e0226a41206a2206200241f82a6a41246a290200370300200241e0226a41186a220d200241f82a6a411c6a290200370300200241e0226a41106a200241f82a6a41146a290200370300200241e0226a41086a2215200241f82a6a410c6a290200370300200220022902fc2a3703e022200241a8356a20024198366a200241e0226a10f906200a200241a8356a41286a2903003703002000200241a8356a41206a2903003703002003200241a8356a41186a290300370300200b200241a8356a41106a290300370300200c200241a8356a41086a290300370300200220022903a8353703f82a2007420037030020094280808080c000370300200241013a00d008200242043703b8082002427f3703b008200242003703a808200241e0226a200241f82a6a200241a8086a10f906200241d8356a410c6a2015290300370200200220022903e0223702dc35200241e0226a41146a2802002103200d280200210020062802002107200241e0226a41246a280200210620022802f022210920022802fc22210a200229038823210420024180366a41106a200241d8356a41106a28020036020020024180366a41086a200241d8356a41086a290200370300200220022902d83537038036200241a0336a41086a20024180366a410c6a29020037030020022002290284363703a03302400240024002400240024020022802a01b417f6a0e09010000000000000204000b41012101200241013a00aa0820024181023b01a8080c040b0240200241a81b6a2802004102460d00200241818080d0003602a808410121010c040b02400240200141ff017141014b0d00200241c01b6a200241ac1b6a109c06220b41ff01714102460d0141012101200241013a00a8082002200b3b00a9082002200b4110763a00ab080c050b024041002802809a4a4102490d0041002802fc994a210141002802f8994a210b41002802849a4a210c200241e8086a41c101360200200241e0086a42e280808010370300200241dc086a41bec9c400360200200241d4086a4219370200200241d0086a41a5c9c400360200200241c8086a4200370300200241c4086a41f8fac900360200200241b8086a4201370300200241b0086a410d360200200241dc91c5003602b40820024198c9c4003602ac08200241023602a808200b41f8fac900200c410246220c1b200241a8086a20014180a6c000200c1b2802101103000b200241818080d0003602a808410121010c040b20024198366a41849bc200411710a702200241086a20024198366a411010c002200228020c210c2002280208210d200241a8086a41086a427f370300200241dc086a22014110360200200241a8086a41206a4200370300200241a8086a41186a4280808080c0003703002002427f3703a808200241b887c3003602d808200241013a00d008200242043703b80820024198366a41186a200241c01d6a290300220537030020024198366a41106a200241b81d6a290300220e37030020024198366a41086a200241b01d6a29030022143703002002200241a81d6a290300220f37039836200220022903c01b22123703b836200241f82a6a41106a2014370300200241f82a6a41186a200e370300200241f82a6a41206a2005370300200241a02b6a220b20123703002002200241d8086a3602f82a2002200f3703802b411c102f2215450d0a2002421c3702cc34200220153602c83420022802d8082001280200200241c8346a10cd01200241c8346a200241f82a6a41086a4120107e2002200b2903003703f834200241c8346a200241f8346a4108107e0240024020022802cc08220b20022802c8082201470d00200141016a220b2001490d0320014101742215200b2015200b4b1b220b4104200b41044b1bad420c7e2205422088a745410274210b2005a721150240024020010d00200241003602f82a0c010b200241802b6a4104360200200220022802c4083602f82a20022001410c6c3602fc2a0b200241f8346a2015200b200241f82a6a104e20024180356a280200210120022802f8344101460d01200220022802fc343602c40820022001410c6e3602c80820022802cc08210b0b20022802c408200b410c6c6a220120022903c834370200200141086a200241c8346a41086a280200360200200241f82a6a41086a2201200241c0086a220b290300370300200220022802cc0841016a3602cc08200241f82a6a41106a2215200241c8086a2216290300370300200220022903b8083703f82a2002200241d1086a22172900003703f8342002201741076a2900003700ff3420022903a8082105200241a8086a41106a200c41e400200d1bad420a7e370300200241a8086a41086a2005370300200241d0086a201529030037030020162001290300370300200b20022903f82a37030041002101200241d8086a41003a0000200241dc086a20022800fb34360000200241d9086a20022802f834360000200241003a00a8080c040b2001450d010c0a0b0240200241a81b6a2802004102460d00200241818080d0003602a808410121010c030b02400240200141ff017141014b0d00200241c01b6a200241ac1b6a10b306220b41ff01714102460d0141012101200241013a00a8082002200b3b00a9082002200b4110763a00ab080c040b024041002802809a4a4102490d0041002802fc994a210141002802f8994a210b41002802849a4a210c200241e8086a41d601360200200241e0086a42e580808010370300200241dc086a419f92c500360200200241d4086a421c370200200241d0086a418392c500360200200241c8086a4200370300200241c4086a41f8fac900360200200241b8086a4201370300200241b0086a410c360200200241dc91c5003602b408200241f791c5003602ac08200241023602a808200b41f8fac900200c410246220c1b200241a8086a20014180a6c000200c1b2802101103000b200241818080d0003602a808410121010c030b20024198366a41849bc200411710a702200241106a20024198366a411010c0022002280214210c2002280210210d200241f82a6a41086a427f370300200241ac2b6a22014113360200200241f82a6a41206a4200370300200241f82a6a41186a4280808080c0003703002002427f3703f82a200241e491c5003602a82b200241013a00a02b200242043703882b200241d01b6a290300210520022903c01b210e20024198366a41106a200241a81d6a290300221437030020024198366a41186a200241b01d6a290300220f37030020024198366a41206a200241b81d6a2903002212370300200220053703c0362002200e370398362002200241a01d6a29030022133703a036200241a8086a41106a220b2013370300200241a8086a41186a2014370300200241a8086a41206a200f370300200241d0086a2012370300200241a8086a41306a221520053703002002200241f82a6a41306a3602a8082002200e3703b0084127102f2216450d09200242273702cc34200220163602c83420022802a82b2001280200200241c8346a10cd01200241c8346a200b4120107e200220022903b0083703f834200241c8346a200241f8346a4108107e200220152903003703f834200241c8346a200241f8346a4108107e02400240200228029c2b220b20022802982b2201470d00200141016a220b2001490d0220014101742215200b2015200b4b1b220b4104200b41044b1bad420c7e2205422088a745410274210b2005a721150240024020010d00200241003602a8080c010b200241b0086a4104360200200220022802942b3602a80820022001410c6c3602ac080b200241f8346a2015200b200241a8086a104e20024180356a280200210120022802f8344101460d01200220022802fc343602942b20022001410c6e3602982b200228029c2b210b0b20022802942b200b410c6c6a220120022903c834370200200141086a200241c8346a41086a280200360200200241f8346a41086a2201200241f82a6a41186a2903003703002002200228029c2b41016a36029c2b200241f8346a41106a220b200241f82a6a41206a290300370300200220022903882b3703f8342002200241a12b6a22152900003703c8342002201541076a2900003700cf3420022903f82a2105200241a8086a41106a200c41e400200d1bad420a7e370300200241a8086a41086a2005370300200241d0086a200b290300370300200241a8086a41206a2001290300370300200241a8086a41186a20022903f83437030041002101200241d8086a41003a0000200241dc086a20022800cb34360000200241d9086a20022802c834360000200241003a00a8080c030b20010d090b103b000b200241a8086a200241a41b6a10fb0620022d00a80821010b200241e0226a41086a220b200241a8086a410c6a290200370300200241e0226a41106a200241a8086a41146a290200370300200241e0226a41186a220c200241a8086a411c6a290200370300200241e0226a41206a220d200241a8086a41246a290200370300200241e0226a41286a200241a8086a412c6a290200370300200241e0226a41306a200241dc086a280200360200200220022902ac083703e0220240200141ff01714101460d00200241a8356a41286a2201200241e0226a412c6a290200370300200241a8356a41206a2215200241e0226a41246a2216290200370300200241a8356a41186a2217200241e0226a411c6a290200370300200241a8356a41106a2218200241e0226a41146a2219290200370300200241a8356a41086a221a200241e0226a410c6a290200370300200220022902e4223703a835200b200241a0336a41086a29030037030020162006360200200d2007360200200c200036020020192003360200200220022903a0333703e02220022004370388232002200a3602fc22200220093602f022200241f82a6a41286a2001290300370300200241f82a6a41206a2015290300370300200241f82a6a41186a2017290300370300200241f82a6a41106a2018290300370300200241f82a6a41086a201a290300370300200220022903a8353703f82a20024198366a200241e0226a200241f82a6a10f906200241a8086a41086a200229039836370300200241a8086a41106a20024198366a41086a290300370300200241a8086a41186a20024198366a41106a290300370300200241a8086a41206a20024198366a41186a290300370300200241a8086a41286a20024198366a41206a290300370300200241a8086a41306a20024198366a41286a290300370300200241003a00a808200810fa060c060b20022d00ab08210120022f00a908210b200241013a00a8082002200b20014110747222013b00a908200220014110763a00ab0802402000450d002000410c6c21002009210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b02402003450d002003410c6c450d00200910310b02402006450d002006410c6c2100200a210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b2007450d042007410c6c450d04200a10310c040b200241013a00a8082002200320074110747222013b00a908200220014110763a00ab080c040b200241ec226a4119360200200241bc086a4102360200200242023702ac08200241f4ddc4003602a808200241043602e422200241f0dfc4003602e0222002200241e0226a3602b8082002200241c8366a3602e822200241a8086a4184dec4001047000b41e0f4c900411941fcf4c900103c000b200241013a00a808200220013b00a908200220014110763a00ab0820022802a83621030240200241b0366a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241ac366a2802002201450d002001410c6c450d00200310310b20022802b43621030240200241bc366a2802002201450d002001410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241b8366a2802002201450d002001410c6c450d0020031031200810fa060c010b200810fa060b4101102f2201450d00200242013702fc11200220013602f8110240024020022d00a8084101470d00200241013a00f82a200241f8116a200241f82a6a4101107e200241a8086a410172200241f8116a108a060c010b200241003a00f82a200241f8116a200241f82a6a4101107e2002200241a8086a41086a2903003703f82a200241f8116a200241f82a6a4108107e200241c0086a2802002101200241f8116a200241c8086a280200220010cb0102402000450d0020012000410c6c6a210003402001280200200141086a280200200241f8116a10ce012001410c6a22012000470d000b0b200241cc086a2802002101200241f8116a200241d4086a280200220010cb0102402000450d0020012000410c6c6a210003402001280200200141086a280200200241f8116a10ce012001410c6a22012000470d000b0b2002200241b8086a2903003703f82a200241f8116a200241f82a6a4108107e2002200241d8086a2d00003a00f82a200241f8116a200241f82a6a4101107e0b200235028012210420023502f8112105024020022d00a8080d000240200241c8086a2802002200450d00200241c0086a28020021012000410c6c210003400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200241c4086a2802002201450d002001410c6c450d0020022802c00810310b0240200241d4086a2802002200450d00200241cc086a28020021012000410c6c210003400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b200241d0086a2802002201450d002001410c6c450d0020022802cc0810310b200241d0366a240020044220862005840f0b1039000bb30304017f027e067f027e230041206b22032400200229030021042001290300210520022802102106200141106a200241186a2207280200220810a3092001280210200141186a2209280200220a410c6c6a20062008410c6c10bf091a200741003602002009200a20086a2208360200200341086a200836020020032001290210370300200228021c21072001411c6a200241246a2209280200220810a309200128021c200141246a220a280200220b410c6c6a20072008410c6c10bf091a20094100360200200a200b20086a2208360200200341106a41086a20083602002003200129021c3703102002290308210c2001290308210d0240024020012d0028450d004101210120022d00280d010b410021010b200020032903003702102000200329031037021c200020013a0028200041186a200341086a280200360200200041246a200341106a41086a2802003602002000200c200d200d200c561b3703082000427f200520047c220c200c2005541b3703000240200241146a2802002201450d002001410c6c450d00200610310b0240200241206a2802002201450d002001410c6c450d00200710310b200341206a24000bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a220228020010fa06200228020010310f0b2000410c6a220228020010fa06200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a220228020010fa06200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a220228020010fa06200228020010310f0b200041106a220228020010fa06200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a220228020010fa06200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a220228020010fa06200228020010310f0b200041c8006a220228020010fa06200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010bb08200228020010310f0b0be80701097f230041f0006b22022400024002402001280220220310bc07450d0020004181808cd0003602000c010b200241c8006a22044200370300200241c0006a22054200370300200241306a41086a420037030020024200370330200241306a41d7b2c800410710a702200241d0006a41b0ffc100410c10a7022004200241d0006a41086a29000037030020052002290050370300200241106a200241306a412010c0020240200128021c2002280214410020022802101b2205460d0020004181808cd0003602000c010b200241186a10900302400240200228022022062001280224460d0020004181809cd0003602000c010b0240200620034b0d00200041818090d0003602000c010b200141286a2107200228021820034105746a2108200241003602382002420137033020022001280200360250200241306a200241d0006a4104107e20012802042001410c6a280200200241306a10ce01200141106a2802002104200241306a200141186a280200220910cb012005210a02402009450d0020042009410c6c6a210303402004280200200441086a280200200241306a10ce012004410c6a22042003470d000b2001280224210620012802202103200128021c210a0b2002200a360250200241306a200241d0006a4104107e20022003360250200241306a200241d0006a4104107e20022006360250200241306a200241d0006a4104107e20072002280230220120022802382008108a05210402402002280234450d00200110310b024020040d00200041818090d0003602000c010b0240024002404110102f2204450d00200242103702642002200436026041caeac4004108200241e0006a10cd0120022005360230200241e0006a200241306a4104107e200241e0006a20084120107e20024100360230200241d0006a41304104200241306a104e200241d0006a41086a280200210120022802504101470d012001450d020b1039000b200228025422042002290360370200200441086a200241e0006a41086a280200360200200220022800303602282002200241336a28000036002b200241d0006a41849bc200411710a702200241086a200241d0006a411010c00220022802082103200228020c2105200041306a41013a00002000412c6a4101360200200041286a2001410c6e360200200041246a2004360200200041206a4100360200200041186a4204370300200041086a427f370300200041316a2002280228360000200041346a200228002b360000200041003a0000200041106a2005410176413220031bad370300200228021c41ffffff3f71450d02200228021810310c020b103b000b200228021c41ffffff3f71450d00200228021810310b200241f0006a24000bad3505067f027e017f037e197f230022022103200241c0056b41607122022400410041002802849a4a2204410120041b3602849a4a200041f8fac90020011b210002400240024020040e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037028405200220013602cc03200220003602c8032002200241c8036a36028005200241f0036a20024180056a10c603200241fc036a280200210520022802f803210620022802f403210020022802f003210720024190016a20024180046a41e00010bf091a024002400240024002400240024002402000450d0020024180026a20024190016a41e00010bf091a024002402002280280052802040d00200241f0036a20024180026a41e00010bf091a0c010b02402005450d00200541246c21042000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012004415c6a22040d000b0b02402006450d00200641246c450d00200010310b410021000b2000450d002002419c016a200536020020024190016a41086a20063602002002200036029401200220073602900120024190016a41106a200241f0036a41e00010bf092101200241e8026a20024190016a41047210f40620072001200241e8026a410010fd0620024180026a20024190016a109d03200241f0036a41186a20024180026a41186a290300370300200241f0036a41106a20024180026a41106a290300370300200241f0036a41086a20024180026a41086a29030037030020022002290380023703f003200241c8036a2007109e0320022802d003210420022802c80321014120102f2200450d022002422037028405200220003602800520024180056a200241f0036a4120107e200120042002280280052200200228028805109f020240200228028405450d00200010310b024020022802cc03450d00200110310b200220073602f40210fe06450d0120024188046a22044200370300200241f0036a41106a22014200370300200241f0036a41086a22004200370300200242003703f00320024180026a41f9c6c000410410a702200020024180026a41086a220629000037030020022002290080023703f00320024180026a41d890c500410b10a70220042006290000370300200120022900800237030020024180016a200241f0036a10ab0320022903880121082002280280012105200442003703002001420037030020004200370300200242003703f00320024180026a41f9c6c000410410a7022000200629000037030020022002290080023703f00320024180026a41a090c500410a10a702200420062900003703002001200229008002370300200241f0006a200241f0036a10ab03200229037821092002280270210a20024180026a41849bc200411710a702200241e8006a20024180026a411010c002200241d8006a20094200200a1b4200200228026c41e40020022802681bad420010be090240200229036050450d0020022903582109200442003703002001420037030020004200370300200242003703f00320024180026a41f9c6c000410410a7022000200629000037030020022002290080023703f00320024180026a41be90c500410b10a702200420062900003703002001200229008002370300200241c8006a200241f0036a10ab03024020092002290350420020022802481b7c220b2009540d0020024180026a41849bc200411710a702200241c0006a20024180026a411010c0020240200228024441e40020022802401b2204ad4201200441014b1b2209200942e40080200942e40082420052ad7c220c4201200c4201561b220c80220d4280025a0d000240200942002008420020051b2208200b7d220b200b2008561b42017c220820092008541b200c8022094280025a0d000240200da741ff01712204450d0002402009a741ff017141e4006c20046e41ff017141314b0d004100210120024180026a210e20024180056a210f0c0c0b20024188046a2206420037030020024180046a22054200370300200241f0036a41086a22044200370300200242003703f00320024180026a41d7b2c800410710a702200420024180026a41086a220029000037030020022002290080023703f00320024180026a41b0ffc100410c10a702200141086a20002900003700002001200229008002370000200241386a200241f0036a412010c002200228023c211020022802382111200642003703002005420037030020044200370300200242003703f00320024180026a41caeac400410810a7022004200029000037030020022002290080023703f00320024180026a41d2eac400410410a70220062000290000370300200520022900800237030020024180056a41046a41003a00002002410036028005200241306a200241f0036a412020024180056a4105410010b7050240024002402002280230450d00200220022802342201410520014105491b36028402200220024180056a36028002200241286a20024180026a10bb012002280228450d010b410021120c010b200228022c21120b20024180056a109003200241f0036a41e9dabdf30610ff0620022802f403211320022802f00322142101024020022802f8032204450d0020044105742104201421010340200141206a2101200441606a22040d000b0b024002400240200120146b410575221541144b0d00201541014d0d0d20142015417e6a22014105746a210441022100034020152001490d0220042000108007200441606a2104200041016a21002001417f6a2201417f470d000c0e0b0b2015410176220141ffffff3f712001470d0120014105742216417f4c0d012016102f2217450d09201441606a2118201441a07f6a21194104211a4100211b4100211c2015211d0340201d211e4100211d410121000240201e417f6a2206450d00024002400240024002400240201420064105746a201e410574220a20146a41406a412010c2094100480d00201e417e6a21062019200a6a21014100211d410021040340024020062004470d00201e21000c080b200441016a2104200141206a2001412010c2092100200141606a21012000417f4a0d000b200441016a21002004417f73201e6a21060c010b2019200a6a210102400340024020064101470d00410021060c020b2006417f6a2106200141206a2001412010c2092104200141606a210120044100480d000b0b201e2006490d01201e20154b0d02201e20066b22004101762205450d002018200a6a2101201420064105746a21040340200241f0036a41186a220a200441186a221f290000370300200241f0036a41106a2220200441106a2221290000370300200241f0036a41086a2222200441086a220f290000370300200220042900003703f003200141086a22232900002109200141106a22242900002108200141186a2225290000210b20042001290000370000201f200b37000020212008370000200f20093700002025200a2903003700002024202029030037000020232022290300370000200120022903f003370000200141606a2101200441206a21042005417f6a22050d000b0b024020060d002006211d0c050b0240200041094d0d002006211d0c050b201e20154b0d02201e20066b21002006417f6a2101201820064105746a21040340201e2001490d112004200041016a22001080072001417f6a220620014f0d04200441606a2104200621012000410a490d000c040b0b2006201e419cabc8001062000b201e2015419cabc8001058000b201e2006417f6a2201490d0d201e201541acabc8001058000b200641016a211d0b0240201c201b470d00201b41016a2201201b490d03201b41017422042001200420014b1b22014104200141044b1b220141ffffffff017120014641027421042001410374210102400240201b0d00200241003602f0030c010b200241043602f8032002201a3602f0032002201b4103743602f4030b20024180026a20012004200241f0036a104e200228028802210102402002280280024101470d002001450d040c0c0b200228028402211a2001410376211b0b201a201c4103746a220120003602042001201d360200201c41016a2225211c024020254102490d0002400240024003400240024002400240201a2025221c417f6a22254103746a2201280200450d00201c410374201a6a220541746a2802002206200128020422044d0d00201c41024d0d08201a201c417d6a22014103746a2802042200200420066a4d0d01201c41034d0d08200541646a280200200020066a4b0d080c010b201c4103490d0120012802042104201a201c417d6a22014103746a28020421000b20002004490d010b201c417e6a21010b0240201c200141016a221e4d0d00201c20014d0d02201a20014103746a220f280204220e200f2802006a2201201a201e4103746a22232802002224490d03200120154b0d04200f41046a2126201420244105746a22212023280204222241057422046a21062001410574210002400240200120246b220a20226b22012022490d0020172021200410bf09222020046a21050240024020224101480d00200a20224a0d010b20212101202021040c020b201420006a211f2020210420212101034020012006200420062004412010c209410048220a1b2200290000370000200141186a200041186a290000370000200141106a200041106a290000370000200141086a200041086a2900003700002004200441206a200a1b2104200141206a2101200641206a2006200a1b2206201f4f0d02200520044b0d000c020b0b201720062001410574220410bf09222020046a21050240024020224101480d00200141014e0d010b20062101202021040c010b201820006a2100200621010340200141606a2104200541606a210620002004200620062004412010c209410048221f1b220a290000370000200041186a200a41186a290000370000200041106a200a41106a290000370000200041086a200a41086a29000037000020052006201f1b21050240202120042001201f1b2201490d00202021040c020b200041606a21002020210420202005490d000b0b20012004200520046b41607110bf091a2026200e20226a360200200f20243602002023202341086a201c201e417f736a41037410c0091a4101211c202541014d0d050c010b0b201e201c41bcabc800103f000b2001201c41ccabc800103f000b2024200141dcabc8001062000b2001201541dcabc8001058000b201d450d0c0c000b0b20012015418cabc8001061000b103b000b41d0c1c700411941fcc1c700103c000b200241113602f403200241c8e4c9003602f00341d9e4c90041de00200241f0036a41ecc1c70041fcc1c7001041000b200241113602f403200241c8e4c9003602f00341d9e4c90041de00200241f0036a41ecc1c70041fcc1c7001041000b41c887c30041fa0041d488c3001068000b41c887c30041fa0041c488c3001068000b2002418c026a4119360200200241a4016a41023602002002420237029401200241f4ddc4003602900120024104360284022002418ce0c40036028002200220024180026a3602a0012002200241b8056a3602880220024190016a4184dec4001047000b41002802809a4a4105490d052002411d360284022002200241f4026a3602800241002802fc994a210141002802f8994a210441002802849a4a2100200241b0046a419503360200200241a8046a42de80808010370300200241a4046a41f7e7c4003602002002419c046a421037020020024198046a41e7e7c40036020020024190046a420137030020024180046a4202370300200241f8036a41123602002002418c046a20024180026a3602002002418487c5003602fc032002419487c5003602f403200241053602f003200441f8fac900200041024622001b200241f0036a20014180a6c00020001b2802101103000c050b1039000b2001201e41acabc8001062000b0240201b41ffffffff0171450d00201a10310b2016450d00201710310b200228028405210420022802800521012002280288052100200220123602a405200220073602a00520022010410020111b220636029c052002201536029805200220133602940520022014360290052002410036028c052002200120004105746a22003602880520022001360284052002200436028005200220123602a402200220073602a0022002200636029c022002201536029802200220133602940220022014360290022002410036028c0220022000360288022002200136028402200220043602800220024180026a210e20024180056a210f0b200241f0036a41106a2204200f41106a22232902002209370300200241f0036a41186a2200200f41186a22242902002208370300200241c8036a41086a2206200f41086a2225290200370300200241c8036a41106a22052009370300200241c8036a41186a220a2008370300200241c8036a41206a221f200f41206a221e290200370300200241a0036a41206a222020024180026a41206a290200370300200241a0036a41186a222120024180026a41186a290200370300200241a0036a41106a221c20024180026a41106a290200370300200241a0036a41086a222220024180026a41086a2902003703002002200f2902003703c80320022002290280023703a003200241f8026a41206a221a200241f0036a41206a2226290300370300200241f8026a41186a22142000290300370300200241f8026a41106a22152004290300370300200241f8026a41086a2217200241f0036a41086a221d290300370300200220022903f0033703f802200220013602f403200241013602f003201d20022903c80337030020042006290300370300200020052903003703002026200a29030037030020024198046a201f290300370300200241003602a004200241a4046a220120022903a003370200200241ac046a2022290300370200200241b4046a201c290300370200200241bc046a2021290300370200200241c4046a2020290300370200200241003602cc04200241f0046a201a290300370300200241e8046a2014290300370300200241e0046a2015290300370300200241d8046a2017290300370300200241d0046a222620022903f802370300200241c0046a212020024194046a2100200241cc046a2114200241a0046a211a2002418c046a210620024184046a2105200241fc036a210a200241a8046a2121200241b0046a211c200241b8046a2122410021040340024002402004450d00200241206a201a1082070240200228022022044108460d002002280224211f0c020b024020022802a0042204450d00024020022802a40441ffffff3f71450d00200410310b20022802b80441ffffff3f71450d0020022802b40410310b2001200f290200370200200141086a2025290200370200200141106a2023290200370200200141186a2024290200370200200141206a201e290200370200200241003602a0040b2006290200210820062002290398023702002005290200210b2005200229039002370200200a290200210c200a20022903880237020020024180056a41086a221f200041086a2802003602002002410036028002200220002902003703800520022902f403210920022002290380023702f40302402009a72204450d002020200229038005370200200220093703a0042021200c370300202041086a201f280200360200201c200b370300202220083703000c020b0240024020022802cc040d00410821040c010b200241186a20141082070240200228021822044108460d00200228021c211f0c020b024020022802cc042204450d00024020022802d00441ffffff3f71450d00200410310b20022802e40441ffffff3f71450d0020022802e00410310b2026200e29020037020041082104202641086a200e41086a290200370200202641106a200e41106a290200370200202641186a200e41186a290200370200202641206a200e41206a290200370200200241003602cc040b0b024002400240200441796a0e020200010b024020022802f003450d0020022802f4032201450d00024020022802f80341ffffff3f71450d00200110310b2002418c046a28020041ffffff3f71450d0020024188046a28020010310b024020022802a0042201450d00024020022802a40441ffffff3f71450d00200110310b20022802b80441ffffff3f71450d0020022802b40410310b20022802cc042201450d03024020022802d00441ffffff3f71450d00200110310b20022802e40441ffffff3f71450d0320022802e00410310c030b2002201f3602fc04200220043602f80441002802809a4a4104490d002002411f36028c052002411d360284052002200241f8046a360288052002200241f4026a3602800541002802fc994a210441002802f8994a211f41002802849a4a21152002418c033602c002200242de808080103703b802200241f7e7c4003602b402200242103702ac02200241e7e7c4003602a802200242023703a0022002420237039002200241f486c50036028c0220024112360288022002419487c50036028402200241043602800220044180a6c000201541024622151b2802102104200220024180056a36029c02201f41f8fac90020151b20024180026a20041103000b20022802a00421040c000b0b20022802e8022100024020022802f0022201450d00200141246c21042000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012004415c6a22040d000b0b024020022802ec022201450d00200141246c450d00200010310b20022802940121000240200228029c012201450d00200141246c21042000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012004415c6a22040d000b0b02402002280298012202450d00200241246c450d00200010310b2003240042010bdf0901057f230041c0006b220424004102200410e8062004410036020041a1e2c800411020044104109f02200441186a22054200370300200441106a22064200370300200441086a2207420037030020044200370300200441206a41f3c6c000410610a7022007200441206a41086a220829000037030020042004290020370300200441206a41ec90c900410610a70220052008290000370300200620042900203703002004200036022020044120200441206a4104109f0220054200370300200642003703002007420037030020044200370300200441206a41f3c6c000410610a7022007200829000037030020042004290020370300200441206a41a091c900410610a7022005200829000037030020062004290020370300024002402002280208220841246c41046a2207417f4c0d00200228020021050240024020070d00410121020c010b2007102f2202450d020b200441003602382004200736023420042002360230200441306a200810cb010240200841246c2207450d000340200441206a200510ec06200441306a200428022022082004280228107e02402004280224450d00200810310b200541246a21052007415c6a22070d000b0b20044120200428023022052004280238109f0202402004280234450d00200510310b200441186a4200370300200441106a4200370300200441086a2205420037030020044200370300200441206a41f3c6c000410610a7022005200441206a41086a220729000037030020042004290020370300200441206a418c91c900410a10a702200641086a2007290000370000200620042900203700004120102f2205450d012004422037022420042005360220200441206a20014120107e20044120200428022022052004280228109f0202402004280224450d00200510310b200441206a2000417f6a109e0320042802282107200428022021054120102f2208450d012004422037020420042008360200200420014120107e20052007200428020022082004280208109f0202402004280204450d00200810310b02402004280224450d00200510310b200441186a22084200370300200441106a22014200370300200441086a2205420037030020044200370300200441206a41f3c6c000410610a7022005200441206a41086a220729000037030020042004290020370300200441206a41c08fc900410b10a702200641086a22022007290000370000200620042900203700002004412010bd0202402003450d0020084200370300200142003703002005420037030020044200370300200441206a41f3c6c000410610a7022005200729000037030020042004290020370300200441206a41cc91c900410610a70220022007290000370000200620042900203700002004412010bd0220084200370300200142003703002005420037030020044200370300200441206a41f3c6c000410610a7022005200729000037030020042004290020370300200441206a419092c900410a10a70220022007290000370000200620042900203700002004412010bd0220084200370300200142003703002005420037030020044200370300200441206a41f3c6c000410610a7022005200729000037030020042004290020370300200441206a41ac92c900410b10a70220022007290000370000200620042900203700002004412010c5020b200441c0006a24000f0b103b000b1039000b0700101b4101460ba90b04017f017e147f017e230041b0016b22022400200220013602140240024002400240024002400240200241146a10072203422088a722010d0020004100360208200042013702000c010b2002200136021c20022003a72204360218200241086a200241186a10bb0120022802080d04200228020c2205200228021c4105762201200120054b1b22014105742206417f4c0d050240024020010d00410121070c010b2006102f2207450d030b2001ad210302402005450d00200241e0006a4104722108200241f2006a2109200241eb006a210a200241f9006a220b41036a210c4100210d034020024100360260200d41016a210d200228021c21014100210603402001450d06200820066a2002280218220e2d00003a00002002200641016a220f36026020022001417f6a220136021c2002200e41016a360218200f2106200f4120470d000b20024198016a41026a2201200a41026a2d00003a000020024194016a41026a2206200941026a2d00003a0000200220082f01003b019c012002200841026a2d00003a009e012002200a2f00003b019801200220092f00003b0194012002200b2800003602a0012002200c2800003600a3012002280067210f200228016e210e200228007521102002280280012111200220022d009e013a005e200220022f019c013b015c20024190016a41026a221220012d00003a0000200220022f0198013b0190012002418c016a41026a220120062d00003a0000200220022f0194013b018c0120024188016a41026a220620022d00a2013a0000200220022f01a0013b01880120022800a3012113200241d8006a41026a221420122d00003a0000200220022f0190013b0158200241d4006a41026a221220012d00003a0000200220022f018c013b0154200241d0006a41026a220120062d00003a0000200220022f0188013b0150200241cc006a41026a220620022d005e3a0000200220022f015c3b014c200241c8006a41026a221520142d00003a0000200220022f01583b0148200241c4006a41026a221420122d00003a0000200220022f01543b0144200241c0006a41026a221220012d00003a0000200220022f01503b01402002413c6a41026a220120062d00003a0000200220022f014c3b013c200241386a41026a220620152d00003a0000200220022f01483b0138200241346a41026a221520142d00003a0000200220022f01443b0134200241306a41026a221420122d00003a0000200220022f01403b01302002412c6a41026a221220012d00003a0000200220022f013c3b012c200241286a41026a221620062d00003a0000200220022f01383b0128200241246a41026a221720152d00003a0000200220022f01343b0124200241206a41026a221520142d00003a0000200220022f01303b0120024020034220882218a722062003a7470d00200641016a22012006490d0820064101742214200120012014491b22014104200141044b1b220141ffffff3f712001462114200141057421010240024020060d00200241003602600c010b2002410136026820022007360260200220184205863e02640b200241a0016a20012014200241e0006a104e20022802a801210120022802a0014101460d0420022802a40121072001410576ad21030b200720064105746a220120022f012c3b0000200141026a20122d00003a0000200141096a20162d00003a0000200120022f01283b0007200141106a20172d00003a0000200120022f01243b000e2001200f3600032001200e36000a20012010360011200141176a20152d00003a0000200120022f01203b00152001201136001c20012013360018200342ffffffff0f83200641016aad422086842103200d2005470d000b0b2007450d042000200337020420002007360200200410310b200241b0016a24000f0b2001450d030b1039000b200342ffffff3f83500d00200710310b41b5f1c900412e200241e0006a41a8f0c90041b8f0c9001041000b103b000bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010c209417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010c209417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b2001200141ecabc800103f000bb50201037f23004180016b22022400024002400240024020012802002203411071450d0020002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014181c6c0004102200220006a4180016a410020006b105621000c010b2000280200210402402003412071450d00410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0320014181c6c0004102200220006a4180016a410020006b105621000c010b2004ad2001105321000b20024180016a240020000f0b200441800141bc89c0001061000b200441800141bc89c0001061000ba81a030a7f047e0d7f230041e00b6b220224000240024020012802082203200128020c2204460d002001200341206a22053602082001280210210620024188036a41186a200341186a29000037030020024188036a41106a200341106a29000037030020024188036a41086a200341086a2900003703002002200329000037038803200128021421074100210302400240024002402001411c6a28020022080e020201000b410021032008210903402009410176220a20036a210b200b20032007200b4105746a20024188036a412010c2094101481b21032009200a6b220941014b0d000b0b200720034105746a20024188036a412010c209450d010b03402001200641016a220636021020052004460d022001200541206a220a36020820024188036a41186a200541186a29000037030020024188036a41106a200541106a29000037030020024188036a41086a200541086a290000370300200220052900003703880341002103200a21050240024020080e020201000b410021032008210503402005410176220b20036a210920092003200720094105746a20024188036a412010c2094101481b21032005200b6b220541014b0d000b0b200a2105200720034105746a20024188036a412010c2090d000b0b0240024002400240200820034d0d00200241186a200720034105746a220341186a290000220c370300200241106a200341106a290000220d370300200241086a200341086a290000220e37030020022003290000220f3703002001200641016a360210200141286a280200210a200141246a28020021092001280220210b200241206a41186a200c370300200241206a41106a200d370300200241206a41086a200e3703002002200f3703202002200936024c2002200b36024820022006360244410221030240200610bc07450d00200621050c060b02400240411b102f2203450d00200341002900fc8945370000200341086a41002900848a45370000200341106a410029008c8a45370000200341176a41002800938a45360000200220033602b8022002429b808080b0033702bc024104102f2203450d0020024204370254200220033602502002200636028803200241d0006a20024188036a4104107e20022002280250220320022802586a3602940320022003360290032002200228025436028c032002200336028803200241b8026a20024188036a10af0520022802bc022104200241b8026a410120022802b802220120022802c002220810c00702400240024020022802b8022203450d00200241c0026a28020022054104490d002005417c714104460d002003280000200b470d002003280004220541036a20094b0d010b20024100360258200242013703502002200b3602880341042103200241d0006a20024188036a4104107e2002200936028803200241d0006a20024188036a4104107e200228025021052002280258210720024188036a41086a200241b8026a41086a280200360200200220022903b8023703880341012001200820024188036a2005200710c107210702402002280254450d00200510310b20070d012009210520040d070c090b024020022802bc02450d00200310310b4101210320040d060c080b20024188036a10c2072002280288032205450d0120024198036a280200211020024188036a410c6a28020021112002419c036a280200211220024188036a41086a2802002113200228028c0321142002410036028003200242013703f8022002200936028803200241f8026a20024188036a4104107e20052013200241f8026a10ce01200241f8026a201210cb0102402012450d0020112012410c6c6a21072011210303402003280200200341086a280200200241f8026a10ce012003410c6a22032007470d000b0b2002200b36028803200241f8026a20024188036a4104107e2002200636028803200241f8026a20024188036a4104107e2002200a36028803200241f8026a20024188036a4104107e20024188036a41e9dabdf306200241206a20022802f802221520022802800310c307410121030240024020022d0088034101460d00410321070c010b200241f6026a20022d008b033a0000200241b8026a41086a2002419c036a290200370300200241c8026a200241a4036a290200370300200241d0026a200241ac036a290200370300200241d8026a200241b4036a290200370300200241e0026a200241bc036a290200370300200241e5026a200241c1036a290000370000200220022f0089033b01f402200220024194036a2902003703b80220024188036a41086a2802002116200228028c032107410021030b200241b4026a41026a2217200241f4026a41026a2d00003a0000200241f8016a41086a2218200241b8026a41086a290300370300200241f8016a41106a2219200241b8026a41106a290300370300200241f8016a41186a221a200241b8026a41186a290300370300200241f8016a41206a221b200241b8026a41206a290300370300200241f8016a41286a221c200241b8026a41286a290300370300200241f8016a41306a200241b8026a41306a290300370300200220022f01f4023b01b402200220022903b8023703f801024020030d00200241f4016a41026a20172d00003a000020024188036a41086a201829030037030020024188036a41106a201929030037030020024188036a41186a201a29030037030020024188036a41206a201b29030037030020024188036a41286a201c29030037030020024188036a412d6a200241f8016a412d6a290000370000200220022f01b4023b01f401200220022903f80137038803024020022802fc02450d00201510310b200220022f01f4013b01b8022002200241f6016a2d00003a00ba02410021030c050b024020022802fc02450d00201510310b02402014450d00200510310b02402012450d002012410c6c21052011210303400240200341046a280200450d00200328020010310b2003410c6a2103200541746a22050d000b0b4101210302402010450d002010410c6c450d00201110310b20072109201621050c030b1039000b41012103410521090c010b2003200841ec89c500103f000b0b200241b8016a41086a221520024188036a41086a290300370300200241b8016a41106a221720024188036a41106a290300370300200241b8016a41186a221820024188036a41186a290300370300200241b8016a41206a221920024188036a41206a290300370300200241b8016a41286a221a20024188036a41286a290300370300200241b8016a412d6a221b20024188036a412d6a290000370000200220022d00ba023a00f201200220022f01b8023b01f00120022002290388033703b80102400240024020030d00200241d0006a41186a2012360200200241d0006a41146a2010360200200241d0006a41106a2011360200200241d0006a410c6a2013360200200241d0006a41086a2014360200200241fa006a20022d00f2013a0000200241ff006a2016360000200241fb006a200736000020024183016a20022903b8013700002002418b016a201529030037000020024193016a20172903003700002002419b016a2018290300370000200241a3016a2019290300370000200241ab016a201a290300370000200241b0016a201b2900003700002002200a360274200220063602702002200b36026c2002200536025420022009360250200220022f01f0013b0178024041002802809a4a4103490d00200241b8026a411c6a4120360200200241b8026a41146a411d360200200241b8026a410c6a411d3602002002411d3602bc022002200241d0006a3602d0022002200241c8006a3602c8022002200241cc006a3602c0022002200241c4006a3602b80241002802fc994a210341002802f8994a210941002802849a4a2107200241c8036a41a904360200200241c0036a42de80808010370300200241bc036a41f7e7c400360200200241b4036a4210370200200241b0036a41e7e7c400360200200241a8036a420437030020024198036a420437030020024190036a411236020020024188036a411c6a200241b8026a360200200241988ac500360294032002419487c50036028c032002410336028803200941f8fac900200741024622071b20024188036a20034180a6c00020071b2802101103000b200241093602a004200242023703f003200241a4046a200241d0006a41e80010bf091a200220024188036a3602b802200241f8016a200241b8026a10f605200241b8026a41086a200241f8016a41086a280200360200200220022903f8013703b802200241b8026a109d072107024020022903f0034202510d0020022d00880341ff01714102470d00200228029003450d00200228028c0310310b200241a0046a109e07410721034106210920070d010c020b4107210320094107460d010b200241003602900320024201370388032002200b36025020024188036a200241d0006a4104107e2002410036025020024188036a200241d0006a4104107e410120012008200228028803220320022802900310c5070240200228028c03450d00200310310b200921030b2004450d020b200110310c010b410821030b2000200536020420002003360200200241e00b6a24000bd40401017f230041306b220224000240024002400240024002400240024020002802000e0701020304050600010b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c200241d087c50036021820012000200241186a104021010c060b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c200241d887c50036021820012000200241186a104021010c050b2002200041046a36020c200241213602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241e087c5003602182002200241106a36022820012000200241186a104021010c040b2002200028020436020c200241013602142001411c6a280200210020022002410c6a360210200128021821012002412c6a41013602002002420237021c200241f087c5003602182002200241106a36022820012000200241186a104021010c030b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c2002418088c50036021820012000200241186a104021010c020b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c2002418888c50036021820012000200241186a104021010c010b2001411c6a2802002100200128021821012002412c6a4100360200200241f8fac9003602282002420137021c2002419088c50036021820012000200241186a104021010b200241306a240020010bff0202047f027e230041306b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a02400240024020010d00200241186a10aa05200228022022034105744104722201417f4c0d01200228021821042001102f2205450d022002410036020820022001360204200220053602002002200310cb0102402003450d0020034105742101200421030340200220034120107e200341206a2103200141606a22010d000b0b20023502082106200235020021070240200228021c41ffffff3f71450d00200410310b200241306a240020064220862007840f0b200241246a4119360200200241146a410236020020024202370204200241f4ddc4003602002002410436021c200241a4e0c4003602182002200241186a3602102002200241286a36022020024184dec4001047000b103b000b1039000ba80704077f017e047f017e230041c0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a02400240024020010d00200241206a22034200370300200241186a22014200370300200241086a41086a2204420037030020024200370308200241286a41f3c6c000410610a7022004200241286a41086a220529000037030020022002290028370308200241286a41ec90c900410610a70220032005290000370300200120022900283703002002200241086a412010c002200228020021062002280204210720034200370300200142003703002004420037030020024200370308200241286a41a996c700410d10a7022004200529000037030020022002290028370308200241286a41c89ac700410f10a702200320052900003703002001200229002837030041012101200241286a200241086a10e70320022802282108200229022c2109200241086a200741016a410120061b1086072009422088a7410020081b2206410c6c41046a2203417f4c0d012002280210210a200228020c210b2002280208210c02402003450d002003102f2201450d030b2009a7210d2008410420081b2107200241003602102002200336020c20022001360208200241086a200610cb0102402006450d0020072006410c6c6a210520072104034020042802002103200241086a2004280208220110cb012004410c6a210402402001450d0020014102742101034020022003280200360228200241086a200241286a4104107e200341046a21032001417c6a22010d000b0b20042005470d000b0b200d410020081b21042002200c360228200241086a200241286a4104107e2002200b360228200241086a200241286a4104107e2002200a360228200241086a200241286a4104107e200235020821092002350210210e02402006450d002006410c6c21012007210303400240200341046a28020041ffffffff0371450d00200328020010310b2003410c6a2103200141746a22010d000b0b02402004450d002004410c6c450d00200710310b200241c0006a2400200e4220862009840f0b200241346a41193602002002411c6a41023602002002420237020c200241f4ddc4003602082002410436022c200241b8e0c4003602282002200241286a3602182002200241386a360230200241086a4184dec4001047000b103b000b1039000bc50201077f230041f0016b22022400200241086a41186a22034200370300200241086a41106a22044200370300200241086a41086a2205420037030020024200370308200241086a41a996c700410d10a702200241d0016a41c49dc700411110a7022003200241d0016a41086a2206290000370300200420022900d0013703002002200241086a412010c0022002280204210320022802002104200241d0016a41186a22074200370300200241d0016a41106a2208420037030020064200370300200242003703d001200241d0016a41b5d8c800410d10a702200241086a41cfd8c800410c10a7022007200529000037030020082002290008370300200241086a200241d0016a412010b202200228028801210520022802980121062000200136020820002003410020041b36020020004101200520064102461b360204200241f0016a24000bb5680f057f017e017f017e097f027e037f017e067f027e0e7f017e037f017e027f230041b0106b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024002400240024002400240024020010d00200241c00d6a41186a22014200370300200241c00d6a41106a22044200370300200241c00d6a41086a22054200370300200242003703c00d200241c0006a41a996c700410d10a7022005200241c0006a41086a2203290000370300200220022900403703c00d200241c0006a41849cc700411110a7022001200329000037030020042002290040370300200241c0006a200241c00d6a10da032002280240210620022902442107200142003703002004420037030020054200370300200242003703c00d200241c0006a41b0a8c600410510a70220052003290000370300200220022900403703c00d200241c0006a4190fdc600410a10a7022001200329000037030020042002290040370300200241c0006a200241c00d6a412010e2022002280240210820022902442109200142003703002004420037030020054200370300200242003703c00d200241c0006a41b5d8c800410d10a70220052003290000370300200220022900403703c00d200241c0006a41cfd8c800410c10a7022001200329000037030020042002290040370300200241c0006a200241c00d6a412010b20220022802c801210a20022802c401210b20022802d001210c200142003703002004420037030020054200370300200242003703c00d200241c0006a41f3c6c000410610a70220052003290000370300200220022900403703c00d200241c0006a41ec90c900410610a7022001200329000037030020042002290040370300200241286a200241c00d6a412010c0022002280228210d200228022c210e10e403200241c8036a41186a220f4200370300200241c8036a41106a22104200370300200241c8036a41086a22114200370300200242003703c803200241c0006a41a996c700410d10a70220112003290000370300200220022900403703c803200241c0006a41849cc700411110a702200f200329000037030020102002290040370300200241c0006a200241c8036a10da032002280240211220022902442113200142003703002004420037030020054200370300200242003703c00d200241c0006a41b5d8c800410d10a70220052003290000370300200220022900403703c00d200241c0006a41cfd8c800410c10a7022001200329000037030020042002290040370300200241c0006a200241c00d6a412010b202200f42003703002010420037030020114200370300200242003703c803200241c0006a41b0a8c600410510a70220112003290000370300200220022900403703c803200241c0006a4190fdc600410a10a702200f200329000037030020102002290040370300200241c0006a200241c8036a412010e2022002280240210520022902442114200f42003703002010420037030020114200370300200242003703c803200241c0006a41a996c700410d10a70220112003290000370300200220022900403703c803200241c0006a41989ec700410910a702200f200329000037030020102002290040370300200241c0006a200241c8036a10e503024002402002280240220f0d0041002115200241003602c80d200242043703c00d4104210f41002116410421170c010b2002200229024422183702c40d2002200f3602c00d2018422088a721162018a72115200f21170b200241e0036a22114200370300200241d8036a22194200370300200241c8036a41086a22014200370300200242003703c803200241c0006a41a996c700410d10a7022001200241c0006a41086a2203290000370300200220022900403703c803200241c0006a41b09bc700410f10a702201041086a221a200329000037000020102002290040370000200241c0006a200241c8036a10e603024002402002280240221b0d004100211c4104211b4100211d4100211e0c010b2003280200211d200241cc006a280200211e2002280244211c0b201142003703002019420037030020014200370300200242003703c803200241c0006a41a996c700410d10a70220012003290000370300200220022900403703c803200241c0006a41c89ac700410f10a702201a200329000037000020102002290040370000200241c0006a200241c8036a10e70320022802402203410420031b211102402002290244420020031b2218422088a72210450d002010410c6c21012011210303400240200341046a28020041ffffffff0371450d00200328020010310b2003410c6a2103200141746a22010d000b0b200e41016a210302402018a72201450d002001410c6c450d00201110310b2013420020121b211f2014420020051b212020034101200d1b21212012410420121b21222005410420051b2123024020100d000240201c450d00201c412c6c450d00201b10310b02402015450d00201541346c450d00200f10310b0240202042ffffffff0383500d00202310310b201fa72203450d052003412c6c450d05202210310c050b201b41286a21242023417c6a21252017201641346c6a210e2022201f422088a7412c6c6a21112020422088a7212620024188086a2127410021124100211941042128410021294100212a410021162022210303402016417f6a2101202520164102746a2105034020112003460d05200541046a2105200141016a2101200328020021102003412c6a220d210320104102470d000b200141016a2116201221102019210302400340024002402003450d0020102112200321190c010b410020172017200e4622031b210f20102017200e476a211241012119200e201741346a20031b2117201021150b0240200f0d0020022802c80d211a0c020b4100210320122110200f280200221a2001490d000b200d2103201a2001460d012015211a0b200141016a211602400240200120264f0d0020052802002105200241186a2001202110e8032002280218450d04200228021c2110200241e8076a411f6a200241c0006a411f6a280000360000200241e8076a41186a200241c0006a41186a290000370300200241e8076a41106a200241c0006a41106a290000370300200241e8076a41086a200241c0006a41086a290000370300200220022900403703e8074100212b0c010b02400240201d450d00201d410274417c6a41027641016a2110410021034100210503402026202420036a2802006a2001460d022003412c6a21032010200541016a2205470d000b0b200d21030c020b201b20036a22102802002105200241c0006a41186a222b2010411c6a290200370300200241c0006a41106a222c201041146a290200370300200241c0006a41086a222d2010410c6a2902003703002002201041046a290200370340201041246a280200212e20102010412c6a201d412c6c20036b41546a10c0091a200241800e6a41186a202b2903002213370300200241800e6a41106a202c2903002214370300200241800e6a41086a202d290300221837030020022002290340222f3703800e200241c8036a41086a22032018370300200241c8036a41106a222b2014370300200241c8036a41186a222c20133703002002202f3703c803200241206a2001202110e8032002280220450d0420022802242110200241e8076a41186a202c290300370300200241e8076a41106a202b290300370300200241e8076a41086a2003290300370300200241980b6a41026a200241c0006a41026a2d000022033a0000200220022903c8033703e807200220022f0040222b3b01980b202741026a20033a00002027202b3b0000201d417f6a211d4101212b0b200241c0006a411f6a222c200241e8076a411f6a280000360000200241c0006a41186a222d200241e8076a41186a290300370300200241c0006a41106a2230200241e8076a41106a290300370300200241c0006a41086a2231200241e8076a41086a290300370300200220022903e8073703400240202a2029470d00202941016a22032029490d07202941017422322003203220034b1b22034104200341044b1bad42387e2213422088a74541027421032013a721320240024020290d00200241003602800e0c010b200241043602880e200220283602800e2002202941386c3602840e0b200241980b6a20322003200241800e6a104e20022802a00b2103024020022802980b4101470d002003450d080c090b200228029c0b2128200341386e21290b2028202a41386c6a220320013602042003201a3602002003410c6a202b3a0000200341086a20053602002003410d6a2002290340370000200341156a20312903003700002003411d6a2030290300370000200341256a202d2903003700002003412c6a202c280000360000200341346a2010360200200341306a202e360200202a41016a212a200d21030c000b0b200241f4076a4119360200200241d4006a410236020020024202370244200241f4ddc400360240200241043602ec07200241d0e0c4003602e8072002200241e8076a3602502002200241a8106a3602f007200241c0006a4184dec4001047000b41acafc70041de00418cb0c7001068000b41acafc70041de00419cb0c7001068000b02400240202a450d002028202a41386c6a2115200241c9006a210141002110202821030340200341046a29020021132003410c6a2d0000210520032802002119200241e8076a41276a200341346a220f280000360000200241e8076a41206a2003412d6a2211290000370300200241e8076a41186a200341256a2212290000370300200241e8076a41106a2003411d6a2217290000370300200241e8076a41086a200341156a220d29000037030020022003410d6a220e2900003703e807200241c0006a41276a221a200f280000360000200241c0006a41206a220f2011290000370300200241c0006a41186a22112012290000370300200241c0006a41106a22122017290000370300200241c0006a41086a2217200d2900003703002002200e29000037034020054102460d02200241800e6a41276a220d201a280000360000200241800e6a41206a220e200f290300370300200241800e6a41186a20112903002214370300200241800e6a41106a20122903002218370300200241800e6a41086a2017290300222f3703002002200229034022333703800e20012033370000200141086a202f370000200141106a2018370000200141186a2014370000200141206a200e290300370000200141276a200d280000360000200220053a004820022013370340200241c00d6a201020196a200241c0006a10e903201041016a2110200341386a22032015470d000b0b200241c0006a41276a200241e8076a41276a280000360000200241c0006a41206a200241e8076a41206a290300370300200241c0006a41186a200241e8076a41186a290300370300200241c0006a41106a200241e8076a41106a290300370300200241c0006a41086a200241e8076a41086a290300370300200220022903e8073703400b02402029450d00202941386c450d00202810310b200241c0006a41086a200241c00d6a41086a280200360200200220022903c00d370340200241c0006a10ea032002201e36024c2002201d3602482002201c3602442002201b360240200241c0006a10eb032002201f37024420022022360240200241c0006a10ec03202042ffffffff0383500d00202310310b200241306a20211086072007420020061b2220422088a72205412c6c2210412c6d2201ad42b0037e2213422088a70d002013a72203417f4c0d000240024020030d00410421170c010b2003102f2217450d020b02400240024002400240024002400240024002400240200341b0036e223020014f0d002030410174220f2001200f20014b1b22014104200141044b1bad42b0037e2213422088a74541027421012013a7210f02400240200341af034b0d00200241003602400c010b200241c8006a4104360200200220173602402002203041b0036c3602440b200241e8076a200f2001200241c0006a104e200241f0076a280200210320022802e8074101460d0120022802ec072117200341b0036e21300b2009420020081b211f2006410420061b21322008410420081b213420050d01410021050c020b20030d0a0c090b4101200b200c41024622031b210b4101200a20031b212d203220106a21242005410274417c6a41027641016a2135201f422088a72131200241e8076a4188026a2116200241e8076a41e8016a2106200241e8076a41a8016a2101200241e8076a4188016a2108200241e8076a41e8006a2122200241b0086a211b200241e8076a41286a2111200241e8076a41086a2112200241b40a6a2126200241e8076a41ac026a2110200241e8076a41a8026a212c200241c0006a41ac026a210f200241e8076a41386a212a2034211520172103410021052032210d0340200d28020022194103460d014102211a024020194102460d000240024020190d00200241b8076a200d41046a28020010df03200241c0006a20022802b807220e20022802c00710e003200241800e6a200241c0006a41a80210bf091a200241c00d6a41086a2228200f41086a290200370300200241c00d6a41106a221d200f41106a290200370300200241c00d6a41186a2225200f41186a290200370300200241c00d6a41206a220a200f41206a290200370300200241c00d6a41286a2219200f41286a290200370300200241c00d6a41306a221a200f41306a290200370300200241c00d6a41386a2229200f41386a2902003703002002200f2902003703c00d024020022802e802221c450d00200241980b6a200241800e6a41a80210bf091a200241d80a6a41386a2029290300370300200241d80a6a41306a201a290300370300200241d80a6a41286a2019290300370300200241d80a6a41206a200a290300370300200241d80a6a41186a2025290300370300200241d80a6a41106a201d290300370300200241d80a6a41086a2028290300370300200220022903c00d3703d80a0b024020022802bc07450d00200e10310b201c450d05200241e8076a200241980b6a41a80210bf091a201041386a200241d80a6a41386a290300370200201041306a200241d80a6a41306a290300370200201041286a200241d80a6a41286a290300370200201041206a200241d80a6a41206a220c290300370200201041186a200241d80a6a41186a221e290300370200201020022903d80a370200201041086a200241d80a6a41086a2227290300370200201041106a200241d80a6a41106a222b2903003702002002201c3602900a20022802ac0a210e200241980b6a200510880720022802342229450d06202d200e6a21192002280238211a20022802302123200241800e6a2005108907200241c8056a202c10ac05200241086a20022802e807200e10e8032029201a6a22214100202120236b222e202e20214b1b2029706b2121201a4100201a20236b22232023201a4b1b2029706b211a024002402002280208450d00200228020c21290c010b4100212941002802809a4a4102490d004100212941002802fc994a211c41002802f8994a212341002802849a4a212e200241d70036028001200242cd8080801037037820024198cac8003602742002423137026c200241d5bac700360268200242003703602002420137035020024194bac70036024c20024119360248200241bcbac70036024420024102360240200241f8fac90036025c202341f8fac900202e410246222e1b200241c0006a201c4180a6c000202e1b28021011030020022802900a211c0b201920214b212e201a202d6a211a200241f8056a41186a202641186a290200370300200241f8056a41106a202641106a290200370300200241f8056a41086a202641086a290200370300200241c8036a41086a201241086a290200370300200241c8036a41106a201241106a290200370300200241c8036a41186a201241186a290200370300200220262902003703f805200220122902003703c80320022802ec07212320024198076a41086a201b41086a29020037030020024198076a41106a201b41106a29020037030020024198076a41186a201b41186a290200370300200241f8066a41086a202241086a290200370300200241f8066a41106a202241106a290200370300200241f8066a41186a202241186a290200370300200241d8066a41086a200841086a290200370300200241d8066a41106a200841106a290200370300200241d8066a41186a200841186a2902003703002002201b29020037039807200220222902003703f806200220082902003703d806200241c0006a41386a200141386a290200370300200241c0006a41306a200141306a290200370300200241c0006a41286a200141286a290200370300200241c0006a41206a200141206a290200370300200241c0006a41186a200141186a290200370300200241c0006a41106a200141106a290200370300200241c0006a41086a200141086a290200370300200241b8066a41186a200641186a290200370300200241b8066a41106a200641106a290200370300200241b8066a41086a200641086a29020037030020022001290200370340200220062902003703b80620024198066a41186a201641186a29020037030020024198066a41106a201641106a29020037030020024198066a41086a201641086a2902003703002002201629020037039806200241b8076a41186a201141186a290200370300200241b8076a41106a201141106a290200370300200241b8076a41086a201141086a290200370300200220112902003703b807200a200241980b6a41206a2903003703002025200241980b6a41186a290300370300201d200241980b6a41106a2903003703002028200241980b6a41086a290300370300200220022903980b3703c00d200c200241800e6a41206a290300370300201e200241800e6a41186a290300370300202b200241800e6a41106a2903003703002027200241800e6a41086a290300370300200220022903800e3703d80a200241d8076a41086a200241c8056a41086a280200360200200220022903c8053703d807024020022802980a450d00201c10310b20192021202e1b21212019201a49211a2002201c3602900a024020022802a40a450d00200228029c0a10310b20192021201a1b211c0c010b200520314f0d06200241b8076a201528020010df03200241c0006a20022802b807220e20022802c00710e003200241800e6a200241c0006a41a80210bf091a200241c00d6a41086a2228200f41086a290200370300200241c00d6a41106a221d200f41106a290200370300200241c00d6a41186a2225200f41186a290200370300200241c00d6a41206a220a200f41206a290200370300200241c00d6a41286a2219200f41286a290200370300200241c00d6a41306a221a200f41306a290200370300200241c00d6a41386a2229200f41386a2902003703002002200f2902003703c00d024020022802e802221c450d00200241980b6a200241800e6a41a80210bf091a200241d80a6a41386a2029290300370300200241d80a6a41306a201a290300370300200241d80a6a41286a2019290300370300200241d80a6a41206a200a290300370300200241d80a6a41186a2025290300370300200241d80a6a41106a201d290300370300200241d80a6a41086a2028290300370300200220022903c00d3703d80a0b024020022802bc07450d00200e10310b201c450d07200241e8076a200241980b6a41a80210bf091a201041386a200241d80a6a41386a290300370200201041306a200241d80a6a41306a290300370200201041286a200241d80a6a41286a290300370200201041206a200241d80a6a41206a220c290300370200201041186a200241d80a6a41186a221e290300370200201020022903d80a370200201041086a200241d80a6a41086a2227290300370200201041106a200241d80a6a41106a222b2903003702002002201c3602900a20022802ac0a210e200241980b6a200510880720022802342229450d08200b200e6a21192002280238211a20022802302123200241800e6a2005108907200241c8056a202c10ac05200241106a20022802e807200e10e8032029201a6a22214100202120236b222e202e20214b1b2029706b2121201a4100201a20236b22232023201a4b1b2029706b211a024002402002280210450d00200228021421290c010b4100212941002802809a4a4102490d004100212941002802fc994a211c41002802f8994a212341002802849a4a212e200241d70036028001200242cd8080801037037820024198cac8003602742002423137026c200241d5bac700360268200242003703602002420137035020024194bac70036024c20024119360248200241bcbac70036024420024102360240200241f8fac90036025c202341f8fac900202e410246222e1b200241c0006a201c4180a6c000202e1b28021011030020022802900a211c0b201920214b212e201a200b6a211a200241f8056a41186a202641186a290200370300200241f8056a41106a202641106a290200370300200241f8056a41086a202641086a290200370300200241c8036a41086a201241086a290200370300200241c8036a41106a201241106a290200370300200241c8036a41186a201241186a290200370300200220262902003703f805200220122902003703c80320022802ec07212320024198076a41086a201b41086a29020037030020024198076a41106a201b41106a29020037030020024198076a41186a201b41186a290200370300200241f8066a41086a202241086a290200370300200241f8066a41106a202241106a290200370300200241f8066a41186a202241186a290200370300200241d8066a41086a200841086a290200370300200241d8066a41106a200841106a290200370300200241d8066a41186a200841186a2902003703002002201b29020037039807200220222902003703f806200220082902003703d806200241c0006a41386a200141386a290200370300200241c0006a41306a200141306a290200370300200241c0006a41286a200141286a290200370300200241c0006a41206a200141206a290200370300200241c0006a41186a200141186a290200370300200241c0006a41106a200141106a290200370300200241c0006a41086a200141086a290200370300200241b8066a41186a200641186a290200370300200241b8066a41106a200641106a290200370300200241b8066a41086a200641086a29020037030020022001290200370340200220062902003703b80620024198066a41186a201641186a29020037030020024198066a41106a201641106a29020037030020024198066a41086a201641086a2902003703002002201629020037039806200241b8076a41186a201141186a290200370300200241b8076a41106a201141106a290200370300200241b8076a41086a201141086a290200370300200220112902003703b807200a200241980b6a41206a2903003703002025200241980b6a41186a290300370300201d200241980b6a41106a2903003703002028200241980b6a41086a290300370300200220022903980b3703c00d200c200241800e6a41206a290300370300201e200241800e6a41186a290300370300202b200241800e6a41106a2903003703002027200241800e6a41086a290300370300200220022903800e3703d80a200241d8076a41086a200241c8056a41086a280200360200200220022903c8053703d807024020022802980a450d00201c10310b20192021202e1b21212019201a49211a2002201c3602900a024020022802a40a450d00200228029c0a10310b20192021201a1b211c0b200241800e6a41206a200241c00d6a41206a290300370300200241800e6a41186a200241c00d6a41186a290300370300200241800e6a41106a200241c00d6a41106a290300370300200241800e6a41086a200241c00d6a41086a290300370300200241980b6a41086a200241d80a6a41086a290300370300200241980b6a41106a200241d80a6a41106a290300370300200241980b6a41186a200241d80a6a41186a290300370300200241980b6a41206a200241d80a6a41206a290300370300200220022903c00d3703800e200220022903d80a3703980b200241e8056a41086a200241d8076a41086a280200360200200241c8056a41186a200241c8036a41186a290300370300200241c8056a41106a200241c8036a41106a290300370300200241c8056a41086a200241c8036a41086a290300370300200241a8056a41186a200241b8076a41186a290300370300200241a8056a41106a200241b8076a41106a290300370300200241a8056a41086a200241b8076a41086a290300370300200220022903d8073703e805200220022903c8033703c805200220022903b8073703a80520024188056a41186a20024198076a41186a29030037030020024188056a41106a20024198076a41106a29030037030020024188056a41086a20024198076a41086a290300370300200220022903980737038805200241e8046a41186a200241f8066a41186a290300370300200241e8046a41106a200241f8066a41106a290300370300200241e8046a41086a200241f8066a41086a290300370300200220022903f8063703e804200241c8046a41186a200241d8066a41186a290300370300200241c8046a41106a200241d8066a41106a290300370300200241c8046a41086a200241d8066a41086a290300370300200220022903d8063703c804202a200241c0006a41386a290300370300200241e8076a41306a200241c0006a41306a2903003703002011200241c0006a41286a290300370300200241e8076a41206a200241c0006a41206a290300370300200241e8076a41186a200241c0006a41186a290300370300200241e8076a41106a200241c0006a41106a2903003703002012200241c0006a41086a290300370300200220022903403703e807200241a8046a41186a200241b8066a41186a290300370300200241a8046a41106a200241b8066a41106a290300370300200241a8046a41086a200241b8066a41086a290300370300200220022903b8063703a80420024188046a41186a20024198066a41186a29030037030020024188046a41106a20024198066a41106a29030037030020024188046a41086a20024198066a41086a290300370300200220022903980637038804200241e8036a41186a200241f8056a41186a290300370300200241e8036a41106a200241f8056a41106a290300370300200241e8036a41086a200241f8056a41086a290300370300200220022903f8053703e8034100211a0b2003201a360200200241800e6a41086a2903002113200241800e6a41106a2903002114200241800e6a41186a2903002118200241800e6a41206a290300212f20022903800e2133200341306a201c3602002003412c6a200e360200200341246a202f3702002003411c6a2018370200200341146a20143702002003410c6a2013370200200341046a20333702002003413c6a200241980b6a41086a290300370200200341346a20022903980b370200200341c4006a200241980b6a41106a290300370200200341cc006a200241980b6a41186a290300370200200341d4006a200241980b6a41206a290300370200200241e8056a41086a280200211920022903e8052113200341ec006a2023360200200341e8006a2029360200200341e4006a2019360200200341dc006a201337020020034188016a200241c8056a41186a29030037020020034180016a200241c8056a41106a290300370200200341f8006a200241c8056a41086a290300370200200341f0006a20022903c805370200200341a8016a200241a8056a41186a290300370200200341a0016a200241a8056a41106a29030037020020034198016a200241a8056a41086a29030037020020034190016a20022903a805370200200341c8016a20024188056a41186a290300370200200341c0016a20024188056a41106a290300370200200341b8016a20024188056a41086a290300370200200341b0016a200229038805370200200341e8016a200241e8046a41186a290300370200200341e0016a200241e8046a41106a290300370200200341d8016a200241e8046a41086a290300370200200341d0016a20022903e80437020020034188026a200241c8046a41186a29030037020020034180026a200241c8046a41106a290300370200200341f8016a200241c8046a41086a290300370200200341f0016a20022903c804370200200341c0026a200241e8076a41306a290300370200200341b8026a2011290300370200200341b0026a200241e8076a41206a290300370200200341a8026a200241e8076a41186a290300370200200341a0026a200241e8076a41106a29030037020020034198026a201229030037020020034190026a20022903e807370200200341c8026a202a290300370200200341e8026a200241a8046a41186a290300370200200341e0026a200241a8046a41106a290300370200200341d8026a200241a8046a41086a290300370200200341d0026a20022903a80437020020034188036a20024188046a41186a29030037020020034180036a20024188046a41106a290300370200200341f8026a20024188046a41086a290300370200200341f0026a200229038804370200200341a8036a200241e8036a41186a290300370200200341a0036a200241e8036a41106a29030037020020034198036a200241e8036a41086a29030037020020034190036a20022903e803370200200341b0036a2103201541046a2115200541016a2105200d412c6a220d2024470d000b203521050b02402020a72203450d002003412c6c450d00203210310b200241c00d6a41186a4200370300200241c00d6a41106a4200370300200241c00d6a41086a22034200370300200242003703c00d200241c0006a41a996c700410d10a7022003200241c0006a41086a2210290000370300200220022900403703c00d200241c0006a41989ec700410910a702200441086a201029000037000020042002290040370000200241c0006a200241c00d6a10e50320022802402203410420031b212a2002290244420020031b2220422088a72203450d06202a200341346c6a2122200241c0006a41276a210e200241c0006a41206a2119200241c0006a41186a210f200241c0006a41106a2111202a21010340200141086a2d0000210320012902002113200e200141306a2800003600002019200141296a290000370300200f200141216a2900003703002011200141196a2900003703002010200141116a2900003703002002200141096a29000037034020034102460d07200241800e6a41276a2212200e280000360000200241800e6a41206a220d2019290300370300200241800e6a41186a200f2903002214370300200241800e6a41106a20112903002218370300200241800e6a41086a2010290300222f3703002002200229034022333703800e200241e8076a41276a2012280000360000200241e8076a41206a200d290300370300200241e8076a41186a221a2014370300200241e8076a41106a22152018370300200241e8076a41086a2216202f370300200220333703e8072013a721124100210d024020034101470d00200f201a2903003703002011201529030037030020102016290300370300200220022903e8073703404101210d0b200241980b6a41186a221a200f290300370300200241980b6a41106a22152011290300370300200241980b6a41086a22162010290300370300200241d80a6a41026a2206200241c00d6a41026a2d00003a0000200220022903403703980b200220022f00c00d3b01d80a200520124d0d062013422088a7210802402017201241b0036c6a22032802000d00200341dc006a221b28020021120240200341e4006a22262802002229450d00201210310b20262029360200201b20123602000b2003410136020020032008360204200341086a200d3a0000200341216a201a290300370000200341196a2015290300370000200341116a2016290300370000200320022903980b370009200320022f01d80a3b00292003412b6a20062d00003a00002003412c6a200241c0006a41840310bf091a200141346a22012022470d000c070b0b41d2b9c70041324184bac7001068000b41f0f5c300413941d09dc800103c000b20052031419cbac700103f000b41d2b9c700413241acbac7001068000b41f0f5c300413941d09dc800103c000b201220054188cac800103f000b02402020a72203450d00200341346c450d00202a10310b0240201f42ffffffff0383500d00203410310b200541b0036c22104104722203417f4c0d002003102f2201450d01200241003602f007200220033602ec07200220013602e807200241e8076a200510cb010240024020050d0020022802f007211220022802e807210d0c010b410021010340024002400240024002400240201720016a22032802000e03000102050b200241003a0040200241e8076a200241c0006a4101107e200341046a200241e8076a10dd0620022003412c6a280200360240200241e8076a200241c0006a4104107e2002200341306a280200360240200241e8076a200241c0006a4104107e200341346a200241e8076a10dd06200341e0006a280200220f4103762111200341dc006a2802002112200f418004490d022011410274210d0240200f418080084f0d002002200d4101723b0140200241e8076a200241c0006a4102107e0c040b2002200d410272360240200241e8076a200241c0006a4104107e0c030b200241013a0040200241e8076a200241c0006a4101107e2002200341046a280200360240200241e8076a200241c0006a4104107e0240200341086a2d00004101460d00200241003a0040200241e8076a200241c0006a4101107e0c040b200241013a0040200241e8076a200241c0006a4101107e200241e8076a200341096a4120107e0c030b200241023a0040200241e8076a200241c0006a4101107e0c020b200220114102743a0040200241e8076a200241c0006a4101107e0b200241e8076a20122011200f4107716a220f410376200f4107714100476a107e2002200341e8006a280200360240200241e8076a200241c0006a4104107e4120102f220f450d04200242203702442002200f360240200241c0006a20034190036a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b2002200341ec006a280200360240200241e8076a200241c0006a4104107e4120102f220f450d04200242203702442002200f360240200241c0006a200341f0006a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b200241e8076a20034190016a4120107e4120102f220f450d04200242203702442002200f360240200241c0006a200341b0016a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b4120102f220f450d04200242203702442002200f360240200241c0006a200341d0016a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b4120102f220f450d04200242203702442002200f360240200241c0006a200341f0016a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b200241e8076a20034190026a41c000107e4120102f220f450d04200242203702442002200f360240200241c0006a200341d0026a4120107e200241e8076a2002280240220f2002280248107e02402002280244450d00200f10310b4120102f220f450d04200242203702442002200f360240200241c0006a200341f0026a4120107e200241e8076a200228024022032002280248107e2002280244450d00200310310b2010200141b0036a2201470d000b20022802f007211220022802e807210d2005450d00200541b0036c2101201721030340024020032802000d00200341dc006a221028020021050240200341e4006a220f2802002211450d00200510310b200f2011360200201020053602000b200341b0036a2103200141d07c6a22010d000b0b02402030450d00203041b0036c450d00201710310b200241b0106a24002012ad422086200dad840f0b103b000b1039000b9c0503077f017e017f230041c0006b22022400200241186a22034200370300200241106a22044200370300200241086a2205420037030020024200370300200241206a41b0a8c600410510a7022005200241206a41086a220629000037030020022002290020370300200241206a4190fdc600410a10a7022003200629000037030020042002290020370300200241306a2002412010e20220022802302207410420071b2108024002402002290234420020071b2209422088a7220720014d0d00200820014102746a2802002107200041003a000420002007360200200020022900003700052000410d6a2005290000370000200041156a20042900003700002000411d6a2003290000370000200041256a20022f00303b0000200041276a200241306a41026a2d00003a00000c010b20034200370300200442003703002005420037030020024200370300200241206a41a996c700410d10a7022005200629000037030020022002290020370300200241206a41b09bc700410f10a702200441086a200629000037000020042002290020370000200241306a200210e60302402002280230220a0d00200041023a00040c010b2002280234210602400240200241386a28020022040d00410221040c010b200120076b21072004410274417c6a41027641016a210341002105200a210402400340200441286a2802002007460d012004412c6a21042003200541016a2205470d000b410221040c010b200020042802003602002000200441046a2900003700052000410d6a2004410c6a290000370000200041156a200441146a2900003700002000411d6a2004411c6a290000370000410121040b200020043a00042006450d002006412c6c450d00200a10310b0240200942ffffffff0383500d00200810310b200241c0006a24000be60704077f017e027f017e230041306b22022400200241186a22034200370300200241106a22044200370300200241086a2205420037030020024200370300200241206a41b0a8c600410510a7022005200241206a41086a220629000037030020022002290020370300200241206a4190fdc600410a10a7022003200629000037030020042002290020370300200241206a2002412010e20220022802202207410420071b2108024002402002290224420020071b2209422088a7220720014d0d00200820014102746a2802002106200041003a000420002006360200200020022900003700052000410d6a2005290000370000200041156a20042900003700002000411d6a2003290000370000200041256a20022f00203b0000200041276a200241206a41026a2d00003a00000c010b20034200370300200442003703002005420037030020024200370300200241206a41a996c700410d10a7022005200629000037030020022002290020370300200241206a41b09bc700410f10a702200441086a200629000037000020042002290020370000200241206a200210e60320022802244100200228022022051b210a2005410420051b210b0240024002402005450d0020062802002205450d00200120076b21072005410274417c6a41027641016a210341002106200b21050340200541286a2802002007460d022005412c6a21052003200641016a2206470d000b0b200241186a4200370300200241106a4200370300200241086a2205420037030020024200370300200241206a41a996c700410d10a7022005200241206a41086a220629000037030020022002290020370300200241206a41849cc700411110a702200441086a200629000037000020042002290020370000200241206a200210da0320022802202205410420051b210602400240024002402002290224420020051b220c422088a720014d0d004102210420062001412c6c6a2205280200417f6a0e020200010b200041023a00040c020b20002005280204360200200020052900083700052000410d6a200541106a290000370000200041156a200541186a2900003700002000411d6a200541206a290000370000410121040b200020043a00040b200ca72205450d012005412c6c450d01200610310c010b20052802002106200041013a0004200020063602002000200541046a2900003700052000410d6a2005410c6a290000370000200041156a200541146a2900003700002000411d6a2005411c6a290000370000200041256a20022f00003b0000200041276a200241026a2d00003a00000b200a450d00200a412c6c450d00200b10310b0240200942ffffffff0383500d00200810310b200241306a24000bc20e010e7f230041d0036b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200241106a20002001108b0702400240024020022d001422044103460d0020022802102105200241f8006a22014200370300200241f0006a22034200370300200241e0006a41086a2200420037030020024200370360200241286a41f3c6c000410610a7022000200241286a41086a220629000037030020022002290028370360200241286a41ec90c900410610a7022001200629000037030020032002290028370300200241086a200241e0006a412010c002200228020c210120022802082103200241286a108c072002280230210620022802282107200241003602602001410020031b2108200241e0006a410472210941002101200721030340200241003a005c20062001460d02200920016a20032d00003a00002002200141016a2200360260200341016a21032000210120004120470d000b200241dc006a41026a2201200241ed006a2d00003a0000200241d8006a41026a2203200241f4006a2d00003a0000200220022f01643b0118200220022d00663a001a2002200241eb006a2f00003b015c2002200241f2006a2f01003b0158200241ee006a280100210a2002280067210b200241f5006a280000210c200241d4006a41026a2200200241fb006a2d00003a00002002200241f9006a2f00003b015420024180016a280200210d200241fc006a280200210e200220022d001a3a0026200220022f01183b0124200241d0006a41026a220620012d00003a0000200220022f015c3b0150200241cc006a41026a220920032d00003a0000200220022f01583b014c200241c8006a41026a220f20002d00003a0000200220022f01543b0148200241186a41026a20062d00003a0000200220022f01503b0118200120092d00003a0000200220022f014c3b015c2003200f2d00003a0000200220022f01483b01580240200228022c450d00200710310b0240024002400240024020040e03010200010b200241286a200510df03200241e0006a20022802282203200228023010e0032002419c036a280200210020024194036a280200210920024190036a280200210620022802880321010240200228022c450d00200310310b2001450d0202402006450d00200110310b02402000450d00200910310b200241003602600c030b2005109e05200241316a200241186a41026a2d00003a0000200241386a200241dc006a41026a2d00003a00002002413f6a200241d8006a41026a2d00003a0000200220022d00263a002a200220022f01243b01282002200b36002b200220022f01183b002f2002200a360132200220022f015c3b01362002200c360039200220022f01583b003d2002200d3602442002200e360240200241e0006a20052008200241286a10b4050c020b200241316a200241186a41026a2d00003a0000200241386a200241dc006a41026a2d00003a00002002413f6a200241d8006a41026a2d00003a0000200220022d00263a002a200220022f01243b01282002200b36002b200220022f01183b002f2002200a360132200220022f015c3b01362002200c360039200220022f01583b003d2002200d3602442002200e360240200241e0006a20052008200241286a10b4050c010b200241316a200241186a41026a2d00003a0000200241386a200241dc006a41026a2d00003a00002002413f6a200241d8006a41026a2d00003a0000200220022d00263a002a200220022f01243b01282002200b36002b200220022f01183b002f2002200a360132200220022f015c3b01362002200c360039200220022f01583b003d2002200d3602442002200e360240200241e0006a20052008200241286a10b4050b4101102f2201450d022002420137021c2002200136021802400240200228026022010d00200241003a005c200241186a200241dc006a4101107e20022802182103200228022021000c010b200241013a005c200241186a200241dc006a4101107e2001200241e8006a280200200241186a10ce012002200241ec006a280200360228200241186a200241286a4104107e4120102f2203450d032002422037022c20022003360228200241286a200241f4006a4120107e200241186a200228022822032002280230107e0240200228022c450d00200310310b2002200241f0006a280200360228200241186a200241286a4104107e20022802182103200228022021002002280264450d00200110310b200241d0036a24002000ad4220862003ad840f0b200241346a4119360200200241f4006a410236020020024202370264200241f4ddc4003602602002410436022c200241ece0c4003602282002200241286a3602702002200241e0006a360230200241e0006a4184dec4001047000b41e5cac800412e200241e0006a41d4c7c8004194cbc8001041000b1039000b6101027f0240024020024104490d002001280000210320024104460d004100210402400240024020012d00040e03020001030b410121040c010b410221040b2004410320024105461b21020c010b410321020b200020023a0004200020033602000b3b02017e017f02400240102b2201422088a722020d0020004101360200410021020c010b20002001a73602000b20002002360208200020023602040baa12040d7f017e057f017e230041b0056b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037029c04200220003602b802200220013602bc022002200241b8026a360298040240024020014104490d0020022001417c6a3602bc022002200041046a3602b80220002800002104200241d0006a20024198046a10b10420022802502203450d00200241d0026a41086a220120024184016a2802003602002002200241fc006a2902003703d002200241f8006a2802002105200241f4006a2802002106200241f0006a2802002107200241ec006a2802002108200241e8006a2802002109200241e4006a280200210a200241e0006a280200210b200241dc006a280200210c200241d0006a41086a280200210d2002280254210e024002402002280298042802040d00200241186a41086a2001280200360200200220022903d0023703180c010b0240200d450d00200d410c6c21002003210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200e450d00200e410c6c450d00200310310b0240200a450d00200a4104742100200c41086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200041706a22000d000b0b0240200b41ffffffff0071450d00200c10310b02402009450d002008450d00200910310b410021032005450d00200610310b2003450d00200241086a41086a200241186a41086a280200220136020020022002290318220f370308200241c0006a2005360200200241186a41206a2007360200200241346a20083602002002412c6a200a360200200241186a41106a200b360200200241c4006a200f370200200241cc006a20013602002002200636023c200220093602302002200c3602242002200d3602202002200e36021c20022003360218200241d0006a41186a22014200370300200241d0006a41106a22004200370300200241d0006a41086a220e42003703002002420037035041062105200241d0026a41f3c6c000410610a702200e200241d0026a41086a2209290000370300200220022900d002370350200241d0026a41ec90c900410610a70220012009290000370300200020022900d0023703002002200241d0006a412010c0022002280204210b200228020021082001420037030020004200370300200e420037030020024200370350200241d0026a41b5d8c800410d10a702200e2009290000370300200220022900d002370350200241d0026a41cfd8c800410c10a70220012009290000370300200020022900d002370300200241d0026a200241d0006a412010b20220022802e003210120024198046a200241d0026a41900110bf091a200241a0026a41086a2210200241d0026a41c4016a2802003602002002200241d0026a41bc016a2902003703a0024100210e200b410020081b210041022109200241186a41186a210b0240024020014102470d00200241d0006a410041800110c1091a200241d0006a41bc016a42003702002002420037028402200242013703d80120024281808080103703d0014101210841c801210641e4002107410021010c010b20024188046a280200211120024184046a280200211220024180046a2802002108200241fc036a2802002106200241f8036a2802002109200241f4036a2802002107200241f0036a2802002105200241d0026a419c016a2802002113200241e8036a280200210e20022802e4032114200241d0006a20024198046a41900110bf091a200241d0006a419c016a2013360200200241e4016a2014360200200241d0006a41c4016a201028020036020020022011360288022002201236028402200220022903a00237028c020b2002200836028002200220063602fc01200220093602f801200220073602f401200220053602f0012002200e3602e801200220013602e0012002200036029c022002200036029802200241a0026a200241d0006a20042002280244200b20022802482003200d200228024c200c200a10b20541012103024020022802a0024107460d0020024198046a41106a200241a0026a41106a28020036020020024198046a41086a200241a0026a41086a290300370300200220022903a002370398044100210341002802809a4a4104490d00200241c4026a4113360200200241013602bc02200220043602cc02200220024198046a3602c0022002200241cc026a3602b80241002802fc994a210141002802f8994a210041002802849a4a210a20024190036a41ff0436020020024188036a42c38080801037030020024184036a41e49cc200360200200241fc026a4226370200200241f8026a41be9cc200360200200241f0026a4202370300200241d0026a41106a4202370300200241d0026a41086a4112360200200241ec026a200241b8026a360200200241a4f6c2003602dc02200241acf2c2003602d402200241043602d002200041f8fac900200a410246220a1b200241d0026a20014180a6c000200a1b2802101103000b2002280218210a024020022802202201450d002001410c6c2100200a210103400240200141046a280200450d00200128020010310b2001410c6a2101200041746a22000d000b0b0240200228021c2201450d002001410c6c450d00200a10310b2002280224210a0240200228022c2201450d0020014104742100200a41086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200041706a22000d000b0b0240200228022841ffffffff0071450d00200a10310b024020022802302201450d002002280234450d00200110310b02402002280240450d00200228023c10310b4101102f2201450d012002420137025420022001360250200220033a00d002200241d0006a200241d0026a4101107e2002350258210f20023502502115200241b0056a24002015200f422086840f0b200241dc026a4119360200200241e4006a410236020020024202370254200241f4ddc400360250200241043602d40220024190e1c4003602d0022002200241d0026a3602602002200241a8056a3602d802200241d0006a4184dec4001047000b1039000ba20302037f027e230041c0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024020010d00200241206a22034200370300200241186a22014200370300200241086a41086a420037030020024200370308200241086a41b490c700410b10a702200241286a41c892c700411310a7022003200241286a41086a290000370300200120022900283703002002200241086a412010c00220022802042103200228020021014104102f2204450d012002420437020c2002200436020820022003410020011b360228200241086a200241286a4104107e2002350210210520023502082106200241c0006a240020062005422086840f0b200241346a41193602002002411c6a41023602002002420237020c200241f4ddc4003602082002410436022c200241b0e1c4003602282002200241286a3602182002200241386a360230200241086a4184dec4001047000b1039000bd50401057f230041a0036b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200241086a20002001108b070240024020022d000c22034103460d00200228020821010240024002400240024020030e03010200010b200241106a200110df03200241286a20022802102200200228021810e003200241e4026a2802002104200241dc026a2802002105200241d8026a280200210620022802d002210302402002280214450d00200010310b2003450d0202402006450d00200310310b02402004450d00200510310b200241003602100c030b2001109e05200241106a20011090070c020b200241106a20011090070c010b200241106a20011090070b200228021021014101102f2203450d012002420137022c200220033602280240024020010d00200241003a0027200241286a200241276a4101107e20022802282103200228023021000c010b200241013a0027200241286a200241276a4101107e2001200241186a280200200241286a10ce0120022802302100200228022821032002280214450d00200110310b200241a0036a24002000ad4220862003ad840f0b2002411c6a41193602002002413c6a41023602002002420237022c200241f4ddc40036022820024104360214200241d0e1c4003602102002200241106a360238200220024198036a360218200241286a4184dec4001047000b1039000b880501057f230041a0016b22022400200241286a200110d902200241386a20022802282203200228023010da0220024180016a41086a2204200241c1006a29000037030020024180016a41106a2205200241c9006a29000037030020024180016a41186a2206200241d1006a290000370300200220022900393703800141002101024020022d00384101470d00200241086a41186a2006290300370300200241086a41106a2005290300370300200241086a41086a20042903003703002002200229038001370308410121010b0240200228022c450d00200310310b0240024020010d00200041003602000c010b20024180016a41186a200241086a41186a29030037030020024180016a41106a200241086a41106a29030037030020024180016a41086a200241086a41086a2903003703002002200229030837038001200241386a20024180016a109207200241286a20022802382203200228024010950402400240200228022822010d00410021010c010b2000200229022c3702040b200020013602000240200228023c450d00200310310b20010d0041002802809a4a450d002002412236022c200220024180016a36022841002802fc994a210141002802f8994a210041002802849a4a2103200241f8006a41c603360200200241f0006a42bf80808010370300200241ec006a41b08dc600360200200241e4006a4222370200200241e0006a418e8dc600360200200241d8006a4201370300200241c8006a4201370300200241c0006a4122360200200241d4006a200241286a360200200241dcecc6003602442002418e8dc60036023c20024101360238200041f8fac900200341024622031b200241386a20014180a6c00020031b2802101103000b200241a0016a24000b9a0604027f017e017f027e230041b0016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024020014104490d002001417c714104460d0020014108470d00200241086a200041f8fac90020011b2201280000200128000410b1050240024020022d00084101460d00410021010c010b200241c8006a200241216a290000370300200241c0006a200241196a290000370300200241386a200241116a29000037030020022002290009370330200241e0006a200241306a109207200241d0006a200228026022032002280268109504200229025421042002280250210102402002280264450d00200310310b20010d0041002802809a4a450d00200241223602542002200241306a36025041002802fc994a210341002802f8994a210041002802849a4a2105200241a0016a41d30636020020024198016a42bf8080801037030020024194016a41b08dc6003602002002418c016a422237020020024188016a418e8dc60036020020024180016a4201370300200241f0006a4201370300200241e8006a4122360200200241fc006a200241d0006a360200200241dcecc60036026c2002418e8dc60036026420024101360260200041f8fac900200541024622051b200241e0006a20034180a6c00020051b2802101103000b4101102f2203450d0120024201370264200220033602600240024020010d00200241003a0008200241e0006a200241086a4101107e0c010b200241013a0008200241e0006a200241086a4101107e20012004422088a7200241e0006a10ce010b200235026821062002350260210702402001450d002004a7450d00200110310b200241b0016a240020064220862007840f0b200241146a4119360200200241f4006a410236020020024202370264200241f4ddc4003602602002410436020c200241d8e1c4003602082002200241086a3602702002200241a8016a360210200241e0006a4184dec4001047000b1039000bf50101047f230041306b22022400200241b0a8c600410510a702200241106a419882c700410a10a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000bc20b02077f057e230041a00a6b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024020014104490d0020014104470d002002200041f8fac90020011b280000220110df0320024180056a20022802002203200228020810e003200241f0076a20024180056a41a80210bf091a02400240024020022802a8072200450d00200241bc076a2802002104200241b4076a2802002105200241b0076a2802002106200241d8026a200241f0076a41a80210bf091a02402002280204450d00200310310b20024180056a200241d8026a41a80210bf091a200241346a20024180056a41047241a40210bf091a02402006450d00200010310b02402004450d00200510310b2002200110e10320024180056a20022802002201200228020810e203200241f0076a41086a22032002418c056a290200370300200241f0076a41106a220420024194056a290200370300200241f0076a41186a22062002419c056a290200370300200241f0076a41206a2205200241a4056a290200370300200241f0076a41286a2207200241ac056a290200370300200241f0076a41306a2208200241b4056a28020036020020022002290284053703f0070240024020022802800522000d00410021000c010b200241d8026a41306a2008280200360200200241d8026a41286a2007290300370300200241d8026a41206a2005290300370300200241d8026a41186a2006290300370300200241d8026a41106a2004290300370300200241d8026a41086a2003290300370300200220022903f0073703d8020b02402002280204450d00200110310b200241f0076a200241346a41a40210bf091a2000450d0120024180056a200241f0076a41a40210bf091a200241306a200241d8026a41306a2802002201360200200241286a200241d8026a41286a2903002209370300200241206a200241d8026a41206a290300220a370300200241186a200241d8026a41186a290300220b370300200241106a200241d8026a41106a290300220c370300200241086a200241d8026a41086a290300220d370300200241b0076a200d370300200241b8076a200c370300200241c0076a200b370300200241c8076a200a370300200241d0076a2009370300200241d8076a2001360200200220022903d8022209370300200220003602a407200220093703a8070c020b2002280204450d00200310310b41002100200241003602a4070b4101102f2201450d01200242013702f407200220013602f0070240024020000d00200241003a00d802200241f0076a200241d8026a4101107e20022802f007210420022802f80721060c010b200241013a00d802200241f0076a200241d8026a4101107e20024180056a200241f0076a10dc0120022802f807210620022802f0072104024020022802ac072201450d002001410c6c21032000210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b024020022802a8072201450d002001410c6c450d00200010310b200241b0076a28020021000240200241b8076a2802002201450d0020014104742103200041086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200341706a22030d000b0b0240200241b4076a28020041ffffffff0071450d00200010310b0240200241bc076a2802002201450d00200241c0076a280200450d00200110310b200241cc076a280200450d00200241c8076a28020010310b200241a00a6a24002006ad4220862004ad840f0b200241fc076a411936020020024194056a41023602002002420237028405200241f4ddc40036028005200241043602f407200241fce1c4003602f0072002200241f0076a360290052002200241980a6a3602f80720024180056a4184dec4001047000b1039000ba11e03077f017e067f230041b0296b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a02400240024020010d00200241d8176a22034200370300200241d0176a22014200370300200241c0176a41086a22044200370300200242003703c017200241d8216a41f3c6c000410610a7022004200241d8216a41086a2205290000370300200220022900d8213703c017200241d8216a41cc91c900410610a70220032005290000370300200120022900d8213703002002412036020c2002200241c0176a36020820024180176a200241c0176a412010d2020240024020022802801722060d00410021010c010b2002280284172107200220024180176a41086a2802003602b417200220063602b0172002200241b0176a10bb010240024020022802000d002002280204220820022802b41741e8076e2203200320084b1bad42e8077e2209422088a70d052009a72203417f4c0d050240024020030d00410821010c010b2003102f2201450d050b200241003602a01720022001360298172002200341e8076e220336029c17024002400240024002402008450d00410021050340200241003a00881a20022802b417220a450d0420022802b01722042d0000210b2002200a417f6a220c3602b4174101210d2002200441016a3602b017024002400240200b0e03000201070b200c4104490d062004280001210e2002200a417b6a3602b4172002200441056a3602b0174100210d0c010b4102210d0b200241d8216a200241b0176a10e40120022d00d8214115460d04200241881a6a200241d8216a41d00710bf091a200241d8216a200241b0176a10a906024020022802d821220a0d002002200336029c17200220053602a017200241881a6a1095070c060b20022802e021210b20022802dc21210c200241b00f6a200241881a6a41d00710bf091a200241e0076a200241b00f6a41d00710bf091a200241106a200241e0076a41d00710bf091a0240024020052003460d002003210f200521040c010b200341016a22042003490d032003410174220f2004200f20044b1b22044104200441044b1bad42e8077e2209422088a74541037421042009a7210f0240024020030d00200241003602d8210c010b200241083602e021200220013602d8212002200341e8076c3602dc210b200241881a6a200f2004200241d8216a104e20022802901a210f20022802881a4101460d042002200228028c1a22013602981720032104200f41e8076e220f21030b2001200441e8076c6a200241106a41d00710bf09220441e0076a200b360200200441dc076a200c360200200441d8076a200a360200200441d4076a200e3602002004200d3602d0072008200541016a2205470d000b2002200f36029c17200220083602a01720022802981721010b200229029c1721092001450d040c050b2002200336029c17200220033602a017103b000b2002200336029c17200220033602a017200f0d060c070b2002200336029c17200220053602a0170b20024198176a108d0602402003450d00200341e8076c450d0020022802981710310b0b41002101200241003602901a200242013703881a2002410c3602b40f2002200241086a3602b00f2002200241881a6a3602e007200241ec216a4101360200200242013702dc212002419086c4003602d8212002200241b00f6a3602e821200241e0076a41d8ddc900200241d8216a10401a20022802881a20022802901a10d904200228028c1a450d0020022802881a10310b2007450d00200610310b20022001410820011b220336028817200220033602801720022009420020011b22093e028417200220032009422088a7220141e8076c6a220d36028c172002200241a8296a36029017024002402001450d00200241e0216a2106024002400340200241881a6a200341d00710bf091a200341d0076a2802004103460d01200341dc076a2802002104200341d8076a2802002105200241d8216a200241881a6a41d00710bf091a0240024020022d00d8214107460d00200241d8216a109507410321010c010b20022802dc212101200241b00f6a200641d00210bf091a20022802b424210a20022802b024210e0b0240200441ffffff3f71450d00200510310b024020014103470d00200341e8076a2203200d470d010c030b0b2002200341e8076a36028817200241e0076a200241b00f6a41d00210bf091a200241106a200241e0076a41d00210bf091a200241d8216a200241106a41d00210bf091a200241881a6a200241106a41c40210bf091a200241b00f6a41086a2203200241a4246a2802003602002002200229029c243703b00f024002400240024020010e03010200010b200241c0176a200241881a6a41c40210bf091a20024198176a41086a2003280200360200200220022903b00f37039817410221030c020b200241c0176a200241881a6a41c40210bf091a20024198176a41086a2003280200360200200220022903b00f37039817410021030c010b200241c0176a200241881a6a41c40210bf091a20024198176a41086a2003280200360200200220022903b00f37039817410121030b41dc02102f2204450d0520042003360200200441046a200241c0176a41c40210bf091a2004200a3602d8022004200e3602d402200441d0026a20024198176a41086a220328020036020020042002290398173702c802200320024180176a41086a290300220937030020024198176a41106a20024180176a41106a2802003602002002200229038017370398170240024002402009a7220120022802a4172206470d004101210a4101210d0c010b200241d8216a41c4026a2107200241d8216a41086a21084101210a4101210d0340200241881a6a2001220341d00710bf091a02400240200341d0076a2802004103460d00200341dc076a2802002105200341d8076a280200210e200241d8216a200241881a6a41d00710bf091a0240024020022d00d8214107460d00200241d8216a109507410321010c010b20022802dc212101200241b00f6a200841d00210bf091a20022802b424210c20022802b024210b0b0240200541ffffff3f71450d00200e10310b20014103470d01200341e8076a22012006470d020b2002200341e8076a3602a0170c020b2002200341e8076a3602a017200241e0076a200241b00f6a41d00210bf091a200241106a200241e0076a41d00210bf091a200241d8216a200241106a41d00210bf091a200241881a6a200241106a41c40210bf091a200241b00f6a41086a2203200741086a280200360200200220072902003703b00f0240024002400240024020010e03010200010b200241c0176a200241881a6a41c40210bf091a200241b0176a41086a2003280200360200200220022903b00f3703b017410221010c030b200241c0176a200241881a6a41c40210bf091a200241b0176a41086a2003280200360200200220022903b00f3703b017410021010c010b200241c0176a200241881a6a41c40210bf091a200241b0176a41086a2003280200360200200220022903b00f3703b017410121010b200c210f0b200241d8216a200241c0176a41c40210bf091a200241e0076a41086a2205200241b0176a41086a280200360200200220022903b0173703e0070240200d200a470d00200a41016a2203200a490d0a200a410174220e2003200e20034b1b22034104200341044b1bad42dc027e2209422088a74541027421032009a7210e02400240200a0d00200241003602881a0c010b200241043602901a200220043602881a2002200a41dc026c36028c1a0b200241b00f6a200e2003200241881a6a104e20022802b80f210320022802b00f4101460d0320022802b40f2104200341dc026e210a0b2004200d41dc026c6a22032001360200200341046a200241d8216a41c40210bf091a2005280200210120022903e0072109200341d8026a200f360200200341d4026a200b360200200341d0026a2001360200200341c8026a2009370200200d41016a210d20022802a017220120022802a4172206470d000b0b20024198176a10fd040c040b2003450d060c050b200341e8076a210d0b2002200d360288170b20024180176a10fd04410421044100210d4100210a0b200d41dc026c41046a2203417f4c0d020240024020030d00410121010c010b2003102f2201450d020b200241003602e021200220033602dc21200220013602d821200241d8216a200d10cb0102400240200d0d0020022802e021210520022802d821210e0c010b200d41dc026c21054100210103400240024002400240200420016a22032802000e03000102030b200241003a00881a200241d8216a200241881a6a4101107e200341046a200241d8216a10ed01200341c8026a280200200341d0026a280200200241d8216a10ce012002200341d4026a2802003602881a200241d8216a200241881a6a4104107e2002200341d8026a2802003602881a200241d8216a200241881a6a4104107e0c020b200241013a00881a200241d8216a200241881a6a4101107e200341046a200241d8216a10ed01200341c8026a280200200341d0026a280200200241d8216a10ce012002200341d4026a2802003602881a200241d8216a200241881a6a4104107e2002200341d8026a2802003602881a200241d8216a200241881a6a4104107e0c010b200241023a00881a200241d8216a200241881a6a4101107e200341046a200241d8216a10ed01200341c8026a280200200341d0026a280200200241d8216a10ce012002200341d4026a2802003602881a200241d8216a200241881a6a4104107e0b2005200141dc026a2201470d000b20022802e021210520022802d821210e200d450d00200d41dc026c2101200421030340024002400240024020032802000e020001020b200341cc026a280200450d02200341c8026a28020010310c020b200341cc026a280200450d01200341c8026a28020010310c010b200341cc026a280200450d00200341c8026a28020010310b200341dc026a2103200141a47d6a22010d000b0b0240200a450d00200a41dc026c450d00200410310b200241b0296a24002005ad422086200ead840f0b200241941a6a4119360200200241ec216a4102360200200242023702dc21200241f4ddc4003602d8212002410436028c1a200241a4e2c4003602881a2002200241881a6a3602e8212002200241a8296a3602901a200241d8216a4184dec4001047000b1039000b103b000b900301017f0240024002400240024002400240024020002d00000e140707070007010203070707070407070507070707060b200041086a280200450d06200041046a28020010310f0b200041046a2802000d052000410c6a2802002201450d05200141286c450d05200041086a28020010310f0b200041046a2d00004102490d042000410c6a28020041ffffff3f71450d04200041086a28020010310f0b024002400240200041046a2802000e020001020b200041d0026a280200450d05200041cc026a28020010310f0b200041d0026a280200450d04200041cc026a28020010310f0b200041d0026a280200450d03200041cc026a28020010310f0b200041086a2d0000410a470d02200041346a280200450d02200041306a28020010310f0b2000410c6a28020041ffffff3f71450d01200041086a28020010310c010b02400240200041086a2802000e020200010b200041186a280200410b470d01200041206a10ad01200041e8036a10a3010f0b200041106a280200410b470d00200041186a10ad01200041e0036a10a3010f0b0bd80302027f027e230041e0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024020014104470d002002200041f8fac90020011b28000010e605200241c8006a200210eb052002350250210420023502482105024020022802002201450d000240200228020441ffffff3f71450d00200110310b0240200241106a28020041ffffff3f71450d002002410c6a28020010310b02402002411c6a28020041ffffff3f71450d00200241186a28020010310b200241246a280200210002402002412c6a2802002201450d002001410c6c21032000210103400240200141046a28020041ffffffff0371450d00200128020010310b2001410c6a2101200341746a22030d000b0b200241286a2802002201450d002001410c6c450d00200010310b200241e0006a240020044220862005840f0b200241d4006a4119360200200241146a410236020020024202370204200241f4ddc4003602002002410436024c200241bce2c4003602482002200241c8006a3602102002200241d8006a36025020024184dec4001047000bce0302037f027e230041c0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024020014104470d00200241106a200041f8fac90020011b28000010f404200241286a20022802102203200228021810f50402400240200228022822000d0041002104200241003602082002420437030041042100410021010c010b2002200229022c2205370204200220003602002005a741ffffffff007121042005422088a721010b02402002280214450d00200310310b200241106a200210f104200235021821052002350210210602402001450d0020014104742103200041086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200341706a22030d000b0b02402004450d00200010310b200241c0006a240020054220862006840f0b200241346a4119360200200241246a410236020020024202370214200241f4ddc4003602102002410436022c200241d0e2c4003602282002200241286a3602202002200241386a360230200241106a4184dec4001047000b8a1e07037f017e057f017e017f017e0e7f230041c0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024002400240024020014104490d0020014104470d00200241186a200041f8fac90020011b2800002204109907200241086a20022802182203200228022010e202200229020c4200200228020822011b21050240200228021c450d00200310310b2001410420011b210602402005422088a722010d0041002107410021030c020b200620014102746a21084100210741002103200621090240024002400240024002400240024002400340200241186a2009280200220a200410a205200241086a20022802182200200228022010f50420022802082101200229020c210b0240200228021c450d00200010310b024020030d0041b801102f2203450d0d4100210c200341003b01b601200341003602000b200b420020011b210d200941046a21092001410420011b210e2003210f200c2110024002400340200f2f01b6012211410274211241002101417f210002400340024020122001470d00201121000c020b200f20016a2113200041016a2100200141046a21010240417f201341046a2802002213200a472013200a4b1b41016a0e03020001020b0b200f2000410c6c6a220141346a2200290200210b2000200d370200200141306a2201280200210f2001200e360200200f450d020240200b422088a72201450d0020014104742100200f41086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200041706a22000d000b0b200b42ffffffff0083500d02200f10310c020b02402010450d002010417f6a2110200f20004102746a41b8016a280200210f0c010b0b024002400240024002400240200f2f01b6012201410a4b0d00200f41046a221120004102746a2113200141016a2112200041016a221020014d0d012013200a360200200f41306a210a0c020b410021144104210102400240200041054f0d00200021130c010b4105210141052113024002402000417b6a0e020201000b200041796a211341012114410621010c010b41002113410121140b41b801102f2200450d13200041003b01b601200041003602002000200f2f01b60122112001417f736a22123b01b6012012410c4f0d062011200141016a22106b2012470d08200f41306a22152001410c6c6a2211290204210b20112802002111200f41046a221620014102746a2802002117200041046a201620104102746a201241027410bf091a200041306a20152010410c6c6a2012410c6c10bf091a200f20013b01b6012000200f20141b220141046a221620134102746a211220012f01b601221041016a211402400240201341016a221520104d0d002012200a360200200141306a210a0c010b201620154102746a201220142013417f736a41027410c0091a2012200a360200200141306a220a2015410c6c6a200a2013410c6c6a201020136b410c6c10c0091a0b200a2013410c6c6a220a200d370204200a200e360200200120143b01b601200f28020022100d024100210e0c030b201120104102746a201320122000417f736a41027410c0091a2013200a360200200f41306a220a2010410c6c6a200a2000410c6c6a200120006b410c6c10c0091a0b200a2000410c6c6a2201200d3702042001200e360200200f20123b01b601200741016a21070c030b4100210e20112115200b210d20182111201721142000211603404101450d07200f2f01b401211320102f01b6012218410b490d024100211241042101024020134105490d0020132101024002402013417b6a0e020201000b201341796a211341012112410621010c010b4100211341012112410521010b41e801102f2200450d11200041003b01b60120004100360200200020102f01b60122112001417f736a220f3b01b601200f410c4f0d082011200141016a220a6b200f470d09201041306a22192001410c6c6a2211290204210b20112802002111201041046a221a20014102746a2802002117200041046a201a200a410274221b6a200f41027410bf091a200041306a2019200a410c6c6a200f410c6c10bf091a201020013b01b60120002f01b601220f41016a210a200f410c4f0d0a201820016b2201200a470d0b200e41016a210e200041b8016a2010201b6a41b8016a200141027410bf091a4100210102400340200020014102746a41b8016a280200220a20013b01b401200a200036020020012001200f49220a6a2201200f4b0d01200a0d000b0b2000201020121b220a41046a22192013410274221a6a2118200a2f01b601220f41016a211202400240201341016a2201200f4d0d0020182014360200200a41306a21180c010b201920014102746a20182013417f7320126a41027410c0091a20182014360200200a41306a22182001410c6c6a20182013410c6c6a200f20136b410c6c10c0091a0b20182013410c6c6a2218200d37020420182015360200200a41b8016a21180240201341026a2219200f41026a220f4f0d00201820194102746a201820014102746a2001417f73200f6a41027410c0091a0b200b422088210d201820014102746a2016360200200a20123b01b60102402001200f4f0d00200a201a6a41bc016a210103402001280200220f201341016a22133b01b401200f200a360200200141046a210120122013470d000b0b200da72119200ba7211a2010210f20112115200b210d20102802002201211020172114200021162011211820010d000b0b2003450d0a41e801102f2201450d0f200120033602b801200141003b01b60120014100360200200341003b01b40120032001360200200c200e470d0b20012f01b6012203410b4f0d0c200c41016a210c2001200341016a220f3b01b60120012003410c6c6a220a41346a200b370200200a41306a2011360200200120034102746a41046a20173602002001200f4102746a41b8016a20003602002000200f3b01b4012000200136020020012103200741016a21070c010b201041046a2212201341027422186a210f201341016a210120102f01b601220041016a210a02400240200020134b0d00200f2014360200201041306a210f0c010b201220014102746a200f2013417f73200a6a41027410c0091a200f2014360200201041306a220f2001410c6c6a200f2013410c6c6a200020136b410c6c10c0091a0b200f2013410c6c6a220f200d370204200f2015360200201041b8016a210f200041026a21120240200020134d0d002018200f6a41086a200f20014102746a2001417f7320126a41027410c0091a0b200f20014102746a20163602002010200a3b01b6010240200120124f0d0020102001417f6a22014102746a41bc016a210003402000280200220f200141016a22013b01b401200f2010360200200041046a2100200a2001470d000b0b20112118200741016a21070b20092008460d0c0c010b0b2012410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b200f410b419c90ca001058000b41ac90ca00412841d490ca00103c000b200a410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b200241146a41193602002002412c6a41023602002002420237021c200241f4ddc4003602182002410436020c200241e4e2c4003602082002200241086a3602282002200241386a360210200241186a4184dec4001047000b0240200542ffffffff0383500d00200610310b024020074104744104722201417f4c0d002001102f2200450d01200241003602102002200136020c20022000360208200241086a200710cb01024020030d0041002101410021004100210f0c030b20032100200c211820032101034020002f01b601210a024020180d00410021192001211a2007210f0c040b2018417f6a21182000200a4102746a41b8016a280200210020012802b80121010c000b0b103b000b1039000b2002412c6a200a360200200241186a41106a20003602002002200f36023020022018360224200241003602202002200136021c200220183602180240200f450d0003402002200f417f6a360230200241186a410020011b2213280200210f024002402013280208220a201328020422002f01b6014f0d00200021010c010b03400240200028020022010d00410021010c020b200f41016a210f20002f01b401210a20012100200a20012f01b6014f0d000b0b200a41016a211202400240200f0d00200121000c010b200120124102746a41b8016a28020021000240200f417f6a220f450d00034020002802b8012100200f417f6a220f0d000b0b410021120b20132000360204201341003602002013201236020820022001200a4102746a41046a280200360234200241086a200241346a4104107e2001200a410c6c6a220041306a2802002101200241086a200041386a280200220010cb0102402000450d00200120004104746a2100034020022001280200360234200241086a200241346a4104107e200141046a2802002001410c6a280200200241086a10ce01200141106a22012000470d000b0b2002280230220f450d01200228021c21010c000b0b2002350208210d2002350210210502402003450d000240200c450d00034020032802b8012103200c417f6a220c0d000b0b02402007450d004100210f03402007417f6a210741012101024002400340200f20032f01b601490d010240200328020022000d0020031031410021030c030b20032f01b401210f200310312001417f6a2101200021030c000b0b200f41016a21002003200f410c6c6a220f41346a290200210b200f41306a28020021180240024020014101470d002000210f0c010b200320004102746a41b8016a280200210302402001450d000340200141016a220020014f210f20032802b801210320002101200f0d000b0b4100210f0b200b422088a72119200ba7211a0b2018450d0202402019450d0020194104742100201841086a2101034002402001280200450d002001417c6a28020010310b200141106a2101200041706a22000d000b0b0240201a41ffffffff0071450d00201810310b20070d000b0b034020032802002101200310312001210320010d000b0b200241c0006a24002005422086200d840b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a41ccd8c600411810a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b8811020f7f037e23004180016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a2002410036021002402001450d002002200041f8fac90020011b22032d00003a00142002410136021020014101460d00200220032d00013a00152002410236021020014102460d00200220032d00023a00162002410336021020014103460d00200220032d00033a00172002410436021020014104460d00200241186a20032d00043a00002002410536021020014105460d00200241196a20032d00053a00002002410636021020014106460d002002411a6a20032d00063a00002002410736021020014107460d002002411b6a20032d00073a00002002410836021020014108460d002002411c6a20032d00083a00002002410936021020014109460d002002411d6a20032d00093a00002002410a3602102001410a460d002002411e6a20032d000a3a00002002410b3602102001410b460d002002411f6a20032d000b3a00002002410c3602102001410c460d00200241206a20032d000c3a00002002410d3602102001410d460d00200241216a20032d000d3a00002002410e3602102001410e460d00200241226a20032d000e3a00002002410f3602102001410f460d00200241236a20032d000f3a00002002411036021020014110460d00200241246a20032d00103a00002002411136021020014111460d00200241256a20032d00113a00002002411236021020014112460d00200241266a20032d00123a00002002411336021020014113460d00200241276a20032d00133a00002002411436021020014114460d00200241286a20032d00143a00002002411536021020014115460d00200241296a20032d00153a00002002411636021020014116460d002002412a6a20032d00163a00002002411736021020014117460d002002412b6a20032d00173a00002002411836021020014118460d002002412c6a20032d00183a00002002411936021020014119460d002002412d6a20032d00193a00002002411a3602102001411a460d002002412e6a20032d001a3a00002002411b3602102001411b460d002002412f6a20032d001b3a00002002411c3602102001411c460d00200241306a20032d001c3a00002002411d3602102001411d460d00200241316a20032d001d3a00002002411e3602102001411e460d00200241326a20032d001e3a00002002411f3602102001411f460d00200241336a20032d001f3a000020024120360210200241c8006a41026a22032002411d6a2d00003a0000200220022f01143b0158200220022d00163a005a20022002411b6a2f00003b0148200228001721042002411e6a2801002105200241e8006a41026a2200200241246a2d00003a00002002200241226a2f01003b0168200241256a2800002106200241c4006a41026a22072002412b6a2d00003a00002002200241296a2f00003b0144200241106a41206a28020021082002412c6a2802002109200220022d005a3a000e200220022f01583b010c200241c0006a41026a220a20032d00003a0000200220022f01483b01402002413c6a41026a220b20002d00003a0000200220022f01683b013c200241386a41026a220c20072d00003a0000200220022f01443b0138200241086a41026a220d200a2d00003a0000200220022f01403b0108200241046a41026a220e200b2d00003a0000200220022f013c3b0104200241026a220f200c2d00003a0000200220022f01383b010020014120470d00200241106a41026a220120022d000e3a0000200241d8006a41026a2210200d2d00003a00002003200e2d00003a00002000200f2d00003a0000200220022f010c3b0110200220022f01083b0158200220022f01043b0148200220022f01003b0168200720012d00003a0000200220022f01103b0144200a20102d00003a0000200220022f01583b0140200b20032d00003a0000200220022f01483b013c200c20002d00003a0000200220022f01683b013820022004360013200220072d00003a0012200220022f01443b0110200241196a200a2d00003a00002002200536011a200220022f01403b0017200241206a200b2d00003a000020022006360021200220022f013c3b011e200241276a200c2d00003a0000200220022f01383b00252002200836022c20022009360228200241c8006a41b0a8c600410510a702200241d8006a419882c700410a10a702024002404120102f2201450d002002422037026c20022001360268200241e8006a200241106a4120107e20022802702201417f4c0d01200228026821030240024020010d00410121000c010b2001102f2200450d010b20002003200110bf0921000240200228026c450d00200310310b200141206a2203417f4c0d012003102f2207450d00200241003602702002200336026c20022007360268200241e8006a200241c8006a4110107e200241e8006a200241d8006a4110107e200241e8006a20002001107e02402001450d00200010310b200241106a20022802682203200228027010950420022902142111200228021021010240200228026c450d00200310310b4101102f2203450d0020024201370214200220033602100240024020010d00200241003a0058200241106a200241d8006a4101107e0c010b200241013a0058200241106a200241d8006a4101107e20012011422088a7200241106a10ce010b200235021821122002350210211302402001450d002011a7450d00200110310b20024180016a240020124220862013840f0b1039000b103b000b200241e4006a4119360200200241246a410236020020024202370214200241f4ddc4003602102002410436025c2002418ce3c4003602582002200241d8006a3602202002200241f8006a360260200241106a4184dec4001047000bbf0804077f017e017f037e230041f0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024002400240024020010d0020024114360224200241ad86c500360220200241286a41ad86c500411410d20202400240200228022822030d004108210441002105410021060c010b200228022c21052002200241306a280200220136023c200220033602380240024002402001450d0020032d0000210420022001417f6a36023c2002200341016a360238200241086a200241386a10bb0102402002280208450d00200241003602500c010b200241d0006a200241386a200228020c10b40120022802502207450d004101210820022902542109200441ff01714101460d012009a72201450d00200141286c450d00200710310b4100210820024100360218200242013703102002410c3602442002200241206a3602402002200241106a36024c41012101200241e4006a4101360200200242013702542002419086c4003602502002200241c0006a360260200241cc006a41d8ddc900200241d0006a10401a2002280210200228021810d90402402002280214450d00200228021010310b0c010b2009422088a7210a2009a72106410021010b02402005450d00200310310b024020012008724101470d004108200720011b21044100200620011b21064100200a20011b21050c010b20072802082205ad42287e2209422088a70d022009a72208417f4c0d02024020080d0041082104410021060c010b200728020021032008102f2204450d03200841286e210620084128490d00200421012006210703402008450d012007450d05200341086a2903002109200341106a290300210b2003290320210c2003290300210d200141186a200341186a290300370300200141106a200b370300200141086a20093703002001200d370300200141206a200c370300200141286a2101200841586a2108200341286a21032007417f6a22070d000b0b200541286c4104722203417f4c0d012003102f2201450d02200241003602582002200336025420022001360250200241d0006a200510cb010240200541286c2203450d00200420036a2101200421030340200241d0006a20034120107e2002200341206a290300370310200241d0006a200241106a4108107e200341286a22032001470d000b0b200235025821092002350250210b02402006450d00200641286c450d00200410310b200241f0006a24002009422086200b840f0b2002411c6a4119360200200241e4006a410236020020024202370254200241f4ddc40036025020024104360214200241ace3c4003602102002200241106a3602602002200241e8006a360218200241d0006a4184dec4001047000b103b000b1039000b200620064188eec900103f000bee0c04027f027e017f017e23004190126b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200242808080808020370214200220013602fc11200220003602f8112002200241f8116a36021020024180046a200241106a10c703024020022903880422044202510d002002290380042105200241d80c6a20024190046a41f00110bf091a200241086a200241106a10ab0120022802080d0020022802fc112203200228020c2201490d0002400240024002402001417f4c0d000240024020010d00410121000c010b200110352200450d0420022802fc1121030b0240024020032001490d00200020022802f811200110bf09210320022802fc11220020014f0d0120012000419cb4c0001061000b200010310c050b2002200020016b22003602fc11200220022802f81120016a3602f81120024180026a200241d80c6a41f00110bf091a2000450d01420221042001450d02200310310c020b103b000b20024180046a20024180026a41f00110bf091a0b20044202510d01200241106a20024180046a41f00110bf091a20024180026a200241106a41f00110bf091a200220013602fc11200220033602f81120024180046a200241f8116a10b3030240024020022802840422000d00410021000c010b200241e00c6a20024190046a28020036020020022002290388043703d80c20022802800421060b02402001450d00200310310b20024180046a41086a2201200241d80c6a41086a2203280200360200200220022903d80c37038004024002402000450d00200241f0036a41086a20012802002201360200200220022903800422073703f003200241a8056a2000360200200241a4056a2006360200200241a0056a4102360200200241ac056a2007370200200241b4056a2001360200200241c0056a2004370300200241b8056a20053703002002410836029805200242023703e804200241c8056a20024180026a41f00110bf091a200241b8076a200241d80c6a41a00510bf091a200220024180046a3602d80c200241f8116a200241d80c6a10f6052003200241f8116a41086a280200360200200220022903f8113703d80c200241d80c6a109d072101024020022903e8044202510d0020022d00800441ff01714102470d00200228028804450d0020022802840410310b20024198056a109e0741002802809a4a21030240024020010d0020034103490d0141002802fc994a210141002802f8994a210341002802849a4a2100200241c0046a41ae01360200200241b8046a42e580808010370300200241b4046a419f92c500360200200241ac046a421c370200200241a8046a418392c500360200200241a0046a42003703002002419c046a41f8fac90036020020024190046a420137030020024188046a410c360200200241eccac40036028c04200241f791c500360284042002410336028004200341f8fac900200041024622001b20024180046a20014180a6c00020001b280210110300410121010c030b2003450d00200241233602dc0c200220024188126a3602d80c41002802fc994a210141002802f8994a210341002802849a4a2100200241c0046a41b201360200200241b8046a42e580808010370300200241b4046a419f92c500360200200241ac046a421c370200200241a8046a418392c500360200200241a0046a420137030020024190046a420137030020024188046a410c3602002002419c046a200241d80c6a36020020024190c9c40036028c04200241f791c500360284042002410136028004200341f8fac900200041024622001b20024180046a20014180a6c00020001b2802101103000b410121010c010b410021010b4101102f2203450d00200242013702840420022003360280040240024020010d00200241003a00d80c20024180046a200241d80c6a4101107e0c010b200241013a00d80c20024180046a200241d80c6a4101107e0b2002350288042104200235028004210520024190126a240020052004422086840f0b1039000b2002418c026a4119360200200241ec0c6a4102360200200242023702dc0c200241f4ddc4003602d80c2002410436028402200241c8e3c40036028002200220024180026a3602e80c200220024188126a36028802200241d80c6a4184dec4001047000b850103027f017e027f230041106b22012400024002400240200035020842208620002802002202ad8410202203428080808010540d00410021042003a722052d00000e020201000b41b5f1c900412e200141086a41e4f1c90041f4f1c9001041000b410121040b200510310240200041046a280200450d00200210310b200141106a240020040bf61801057f0240024002400240024002400240024002400240024002400240024002400240024002400240024020002802000e220001131302031304050613131313071308131313131309130a130b0c130d0e0f1011120b0240024002400240024002400240200041086a2802000e0a19190019010219030405060b200041106a280200450d182000410c6a28020010310f0b200041106a280200450d172000410c6a28020010310f0b200041106a280200450d162000410c6a28020010310f0b0240200041146a2802002201450d002000410c6a2802002102200141186c210103400240200241046a280200450d00200228020010310b0240200241106a280200450d002002410c6a28020010310b200241186a2102200141686a22010d000b0b200041106a2802002202450d15200241186c450d15200028020c10310f0b0240200041146a2802002201450d002000410c6a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041106a2802002202450d142002410c6c450d14200028020c10310f0b200041106a280200450d132000410c6a28020010310f0b200041106a280200450d122000410c6a28020010310f0b02400240200041086a280200417f6a0e020001130b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d122002410c6c450d12200028021010310f0b2000412c6a2201109a020240200041306a2802002202450d00200241246c450d00200128020010310b2000419c016a2201109a020240200041a0016a2802002202450d00200241246c450d00200128020010310b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d112002410c6c450d11200028021010310f0b0240024002400240200041086a2802000e0414000102030b2000410c6a2d00004102470d13200041146a280200450d13200041106a28020010310f0b2000410c6a2d00004102470d12200041146a280200450d12200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2d00004102470d11200041386a280200450d11200041346a28020010310f0b2000410c6a2d00004102470d10200041146a280200450d10200041106a28020010310f0b02402000410c6a2802002201450d0020002802042202200141f0006c6a21030340024020022204410c6a2802002201450d0020042802042102200141246c210103400240024002400240024020022d00000e050400010204030b2002410c6a280200450d03200241086a28020010310c030b2002410c6a280200450d02200241086a28020010310c020b2002410c6a280200450d01200241086a28020010310c010b200241086a280200450d00200241046a28020010310b200241246a21022001415c6a22010d000b0b200441f0006a21020240200441086a2802002201450d00200141246c450d00200428020410310b20022003470d000b0b200041086a2802002202450d0f200241f0006c450d0f200028020410310f0b20002d00044101470d0e200041ec016a280200450d0e200041e8016a28020010310f0b02400240200041086a280200417f6a0e0200010f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0e2002410c6c450d0e200028021010310f0b0240200041186a2802002201450d00200041106a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041146a2802002202450d0d2002410c6c450d0d200028021010310f0b02402000410c6a280200450d00200041086a28020010310b02402000411c6a2802002201450d00200041146a28020021022001410c6c210103400240200241046a280200450d00200228020010310b2002410c6a2102200141746a22010d000b0b200041186a2802002202450d0c2002410c6c450d0c200028021410310f0b02402000410c6a2802002201450d0020002802042102200141d0006c21040340200228020021010240200241086a22032802002205450d00200110310b2002200136020020032005360200200241d0006a2102200441b07f6a22040d000b0b0240200041086a2802002202450d00200241d0006c450d00200028020410310b0240200041186a2802002201450d00200041106a2802002102200141f4026c210103402002109b02200241f4026a21022001418c7d6a22010d000b0b0240200041146a2802002202450d00200241f4026c450d00200028021010310b0240200041246a2802002202450d00200241306c21012000411c6a28020041086a21020340024020022802002204450d00200441c8006c450d002002417c6a28020010310b200241306a2102200141506a22010d000b0b0240200041206a2802002202450d00200241306c450d00200028021c10310b2000412c6a2201109a02200041306a2802002202450d0b200241246c450d0b200128020010310f0b02400240024002402000280204417f6a0e04000102030e0b200041106a280200450d0d2000410c6a28020010310f0b200041106a280200450d0c2000410c6a28020010310f0b200041106a280200450d0b2000410c6a28020010310f0b200041106a280200450d0a2000410c6a28020010310f0b02400240200041086a2d0000417f6a0e0200010b0b0240200041146a280200450d00200041106a28020010310b200041206a280200450d0a2000411c6a28020010310f0b0240200041346a280200450d00200041306a28020010310b200041c0006a280200450d092000413c6a28020010310f0b200041086a2d00004107470d08200041146a280200450d08200041106a28020010310f0b02400240200041086a280200417f6a0e050009090901090b0240200041146a280200450d00200041106a28020010310b200041206a280200450d082000411c6a28020010310f0b200041106a10a3010f0b0240024002400240200041086a2802000e040a000102030b2000410c6a2202280200109e07200228020010310f0b2000410c6a2202280200109e07200228020010310f0b2000410c6a2d00004102470d07200041146a280200450d07200041106a28020010310f0b02402000410c6a2d00004102470d00200041146a280200450d00200041106a28020010310b200041306a2202280200109e07200228020010310f0b0240024020002802040e020700010b2000410c6a28020041ffffff3f71450d06200041086a28020010310f0b2000410c6a28020041ffffff3f71450d05200041086a28020010310f0b024002400240200041086a2d0000417f6a0e03000102070b200041306a28020041ffffff3f71450d062000412c6a28020010310f0b2000410c6a2202280200109e07200228020010310f0b200041106a2202280200109e07200228020010310f0b20002d00044104470d032000410c6a28020041ffffff3f71450d03200041086a28020010310f0b02400240024020002f01040e03050001020b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d04200241c0076c450d04200028020810310c040b200041086a2202280200109e07200228020010310f0b0240200041106a2802002201450d00200041086a2802002102200141c0076c21010340200210b301200241c0076a2102200141c0786a22010d000b0b2000410c6a2802002202450d02200241c0076c450d02200028020810310f0b20002d00042202417e6a4108490d010240024020020e020300010b200041286a2202280200109e07200228020010310f0b200041c8006a2202280200109e07200228020010310f0b02400240200041086a2802000e020200010b200041106a10ad01200041d8036a10a3010f0b2000410c6a220228020010c807200228020010310f0b0bc01d04107f017e067f017e230041d0046b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024020014108490d00200241003602980320014108460d0020024101360298032002200041f8fac90020011b22032d00083a009c0320014109460d002002410236029803200220032d00093a009d032001410a460d002002410336029803200220032d000a3a009e032001410b460d002002410436029803200220032d000b3a009f032001410c460d00200241a0036a20032d000c3a000020024105360298032001410d460d00200241a1036a20032d000d3a000020024106360298032001410e460d00200241a2036a20032d000e3a000020024107360298032001410f460d00200241a3036a20032d000f3a0000200241083602980320014110460d00200241a4036a20032d00103a0000200241093602980320014111460d00200241a5036a20032d00113a00002002410a3602980320014112460d00200241a6036a20032d00123a00002002410b3602980320014113460d00200241a7036a20032d00133a00002002410c3602980320014114460d00200241a8036a20032d00143a00002002410d3602980320014115460d00200241a9036a20032d00153a00002002410e3602980320014116460d00200241aa036a20032d00163a00002002410f3602980320014117460d00200241ab036a20032d00173a0000200241103602980320014118460d00200241ac036a20032d00183a0000200241113602980320014119460d00200241ad036a20032d00193a000020024112360298032001411a460d00200241ae036a20032d001a3a000020024113360298032001411b460d00200241af036a20032d001b3a000020024114360298032001411c460d00200241b0036a20032d001c3a000020024115360298032001411d460d00200241b1036a20032d001d3a000020024116360298032001411e460d00200241b2036a20032d001e3a000020024117360298032001411f460d00200241b3036a20032d001f3a0000200241183602980320014120460d00200241b4036a20032d00203a0000200241193602980320014121460d00200241b5036a20032d00213a00002002411a3602980320014122460d00200241b6036a20032d00223a00002002411b3602980320014123460d00200241b7036a20032d00233a00002002411c3602980320014124460d00200241b8036a20032d00243a00002002411d3602980320014125460d00200241b9036a20032d00253a00002002411e3602980320014126460d00200241ba036a20032d00263a00002002411f3602980320014127460d00200241bb036a20032d00273a0000200241203602980320024198026a41026a2203200241a5036a2d00003a0000200220022f019c033b0140200220022d009e033a00422002200241a3036a2f00003b019802200228009f032104200241a6036a2801002105200241c0016a41026a2200200241ac036a2d00003a00002002200241aa036a2f01003b01c001200241ad036a2800002106200241a0046a41026a2207200241b3036a2d00003a00002002200241b1036a2f00003b01a00420024198036a41206a2802002108200241b4036a2802002109200220022d00423a002a200220022f01403b0128200241f0026a41026a220a20032d00003a0000200220022f0198023b01f0022002413c6a41026a220b20002d00003a0000200220022f01c0013b013c200241386a41026a220c20072d00003a0000200220022f01a0043b0138200241246a41026a2207200a2d00003a0000200220022f01f0023b0124200241206a41026a220a200b2d00003a0000200220022f013c3b01202002411c6a41026a220d200c2d00003a0000200220022f01383b011c200220022d002a3a0032200220022f01283b01302002412c6a41026a220b20072d00003a0000200220022f01243b012c200241186a41026a2207200a2d00003a0000200220022f01203b0118200241146a41026a220a200d2d00003a0000200220022f011c3b011420014128470d00200241c0006a41026a2201200b2d00003a0000200320072d00003a00002000200a2d00003a0000200220022d00323a009a03200220022f01303b019803200220022f012c3b0140200220022f01183b019802200220022f01143b01c001200720022d009a033a0000200220022f0198033b0118200a20012d00003a0000200220022f01403b0114200241106a41026a220120032d00003a0000200220022f0198023b01102002410c6a41026a220320002d00003a0000200220022f01c0013b010c200220022f01183b013c200220072d00003a003e200c200a2d00003a0000200220022f01143b0138200241306a41026a20012d00003a0000200220022f01103b0130200b20032d00003a0000200220022f010c3b012c200241c0006a41186a22014200370300200241c0006a41106a220e4200370300200241c0006a41086a220f42003703002002420037034020024198036a41d7b2c800410710a702200f20024198036a41086a2203290000370300200220022900980337034020024198036a41b0ffc100410c10a70220012003290000370300200e2002290098033703002002200241c0006a412010c002200228020421102002280200211120014200370300200e4200370300200f42003703002002420037034020024198036a41d7b2c800410710a702200f2003290000370300200220022900980337034020024198036a41def0c100410a10a70220012003290000370300200e20022900980337030020024198036a200241c0006a10cf04200229029c03420020022802980322011b2212a721132001410120011b2214210102402012422088a72200450d00201420004105746a2115200241c0006a41156a2100200241c0006a410e6a2107200241c0006a410772210a201421010340200220012f0000220c3b01282002200141026a2d0000220b3a002a200141186a220d2900002112200141116a28000021162001410a6a2800002117200141036a28000021182002200b3a00422002200c3b014020022018360043200141096a2d0000210c200a200141076a2f00003b0000200a41026a200c3a00002002201736014a2001410e6a2f0000210c200741026a200141106a220b2d00003a00002007200c3b000020022016360051200141156a2f0000210c200041026a200141176a2d00003a00002000200c3b00002003200f2903003703002002201237035820024198036a41186a220c200229035837030020024198036a41106a2216200e2903003703002002200229034037039803200d200c290300370000200b2016290300370000200141086a20032903003700002001200229039803370000200141206a22012015470d000b0b200220133602a404200220143602a0042002200120146b410575220c3602a80420024198036a200241a0046a10dc044100210102402002280298034101460d00200241f0026a41206a200241c0036a280200360200200241f0026a41186a20024198036a41206a290300370300200241f0026a41106a20024198036a41186a290300370300200241f0026a41086a20024198036a41106a290300370300200220024198036a41086a2903003703f002200241c4036a280200210120024198026a200241c8036a41d80010bf091a0b200241a0046a41086a2203200241f0026a41086a290300370300200241a0046a41106a2200200241f0026a41106a290300370300200241a0046a41186a2207200241f0026a41186a290300370300200241a0046a41206a220a200241f0026a41206a280200360200200220022903f0023703a00420024198036a20024198026a41d80010bf091a024002402001450d00200241c0006a41206a200a280200360200200241c0006a41186a2007290300370300200241c0006a41106a2000290300370300200241c0006a41086a2003290300370300200220022903a004370340200241c0016a20024198036a41d80010bf091a200241e4006a2001360200200241e8006a200241c0016a41d80010bf091a200241a1036a200241386a41026a2d00003a000020024198036a41106a200241306a41026a2d00003a0000200241af036a2002412c6a41026a2d00003a0000200220022d003e3a009a03200220022f013c3b0198032002200436009b03200220022f01383b009f03200220053601a203200220022f01303b01a603200220063600a903200220022f012c3b00ad03200220083602b403200220093602b00320024198026a200241c0006a41e7e485f30620024198036a10a007200229029c0221122002280298022100200241c0006a10df040c010b410021000b0240024020000d004100210120024100360298030c010b20024198036a41086a4100360200200242013703980320022010410020111b36024020024198036a200241c0006a4104107e20024198036a2012422088a7220710cb0102402007450d0020002007410c6c6a21032000210103402001280200200141086a28020020024198036a10ce012001410c6a22012003470d000b0b2012a7210a2002200c36024020024198036a200241c0006a4104107e02402007450d002007410c6c21032000210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b0240200a450d00200a410c6c450d00200010310b024020022802980322010d00410021010c010b20022802a0032107200228029c0321000b02404101102f2203450d002002420137029c0320022003360298030240024020010d00200241003a004020024198036a200241c0006a4101107e0c010b200241013a004020024198036a200241c0006a4101107e2001200720024198036a10ce010b20023502a0032112200235029803211902402001450d002000450d00200110310b200241d0046a240020124220862019840f0b1039000b200241cc006a4119360200200241ac036a41023602002002420237029c03200241f4ddc400360298032002410436024420024180e4c4003602402002200241c0006a3602a8032002200241c8046a36024820024198036a4184dec4001047000ba60d03037f017e067f230041f0006b2204240002400240024002400240024002400240024002400240200141e0006a22052001413c6a412010c209450d00200441386a41186a200541186a290000370300200441386a41106a200541106a290000370300200441386a41086a200541086a2900003703002004200529000037033802402001200441386a10e8082206450d00200628020c41004a0d010b200441386a41086a2201200541086a290000370300200441386a41106a2203200541106a290000370300200441386a41186a2202200541186a290000370300200420052900003703384130102f2205450d01200541003a00002005200429033837000120052004290018370021200541096a2001290300370000200541116a2003290300370000200541196a2002290300370000200541286a22012004411f6a2900003700000240024020052d00000e040b0b000b010b200541086a280200450d0a200541046a28020010310c0a0b2001280200450d09200541246a28020010310c090b2004410036021420042005360210200441bcb1c80036020c200420013602082004420037032020044204370318200441306a41203602002004200336022c200420023602284124102f2205450d002004422437026420042005360260200441e0006a200441286a4104107e20034120200441e0006a10cd01200441386a200441086a200428026022032004280268200441186a10ba04024002400240024020042802384101470d0002400240200428023c22052d00000e0403030003010b200541086a280200450d02200541046a28020010310c020b200541286a280200450d01200541246a28020010310c010b200428023c2202450d0102400240200441c0006a2903002207422088a741044f0d00410021050c010b20022800002101410121050b2007a7450d02200210310c020b200510310b410021050b02402004280264450d00200310310b2005450d0320042001360228200441386a200441086a200441286a4104200441186a10ba04024020042802384101470d0002400240200428023c22052d00000e0408080008010b200541086a280200450d07200541046a28020010310c070b200541286a280200450d06200541246a28020010310c060b200428023c2205450d062004200441c0006a29030022074220883e026420042005360260200441386a200441e0006a10e60120042d0038210102402007a7450d00200510310b200141ff01714101460d06200428021c210820042802182109200442043703182004280220210620044100360220200641306c220a41306d2202ad420c7e2207422088a70d042007a72201417f4c0d044104210502402001450d002001102f2205450d010b2000200536020041002103200041086a4100360200200041046a2001410c6e220b36020002400240200b20024f0d00200b410174220c2002200c20024b1b220c4104200c41044b1bad420c7e2207422088a745410274210c2007a7210d024002402001410b4b0d00200441003602380c010b200441c0006a4104360200200420053602382004200b410c6c36023c0b200441e0006a200d200c200441386a104e200441e8006a280200210120042802604101460d01200020042802642205360200200041046a2001410c6e3602000b20060d02200921010c030b2001450d040b1039000b2009200a6a210a200641306c2102200941306a2101200641047441706a41047641016a210b4100210302400340200141546a2802002206450d01200541046a200141586a290200370200200520063602002005410c6a2105200141306a2101200341016a2103200241506a22020d000b200a2101200b21030b200a20016b220a41306d21020b200041086a20033602000240200a450d00200241306c2100200141086a2105034002402005280200450d002005417c6a28020010310b200541306a2105200041506a22000d000b0b02402008450d00200841306c450d00200910310b20042802182100024020042802202205450d00200541306c2101200041086a2105034002402005280200450d002005417c6a28020010310b200541306a2105200141506a22010d000b0b200428021c2205450d06200541306c450d06200010310c060b200041003602000c030b103b000b200510310b200041003602000b20042802182100024020042802202205450d00200541306c2101200041086a2105034002402005280200450d002005417c6a28020010310b200541306a2105200141506a22010d000b0b200428021c2205450d01200541306c450d01200010310c010b20051031200041003602000b200441f0006a24000bc80904077f017e037f017e230041d0016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024020010d0020024180016a41849bc200411710a702200241086a20024180016a411010c002200228020c210420022802082105200241a8016a41186a22064200370300200241a8016a41106a22074200370300200241a8016a41086a22084200370300200242003703a80120024180016a41f9c6c000410410a702200820024180016a41086a220329000037030020022002290080013703a80120024180016a41f4aec800410b10a702200620032900003703002007200229008001370300200241106a200241a8016a10c6052002280210210120022902142109200241106a41186a220a4200370300200241106a41106a220b4200370300200241106a41086a220c42003703002002420037031020024180016a41f9c6c000410410a702200c2003290000370300200220022900800137031020024180016a419e91c500410a10a702200a2003290000370300200b20022900800137030020024180016a200241106a10c70520022d0080012103200620024199016a290000370300200720024191016a290000370300200820024189016a29000037030020022002290081013703a8012009420020011b2109200441e40020051bad210d2001410820011b21040240024020034101460d00200241e0006a41186a4200370300200241e0006a41106a4200370300200241e0006a41086a4200370300200242003703600c010b200241e0006a41186a2006290300370300200241e0006a41106a2007290300370300200241e0006a41086a2008290300370300200220022903a8013703600b200241346a2009370200200241106a41186a4204370300200241c4006a200241e0006a41086a290300370200200241cc006a200241f0006a290300370200200241d4006a200241e0006a41186a290300370200200242013703202002200d370318200242f02e3703102002200229036037023c200241023a005c2002200436023020024100360288012002420137038001200242f02e3703a80120024180016a200241a8016a4108107e2002200d3703a80120024180016a200241a8016a4108107e200242013703a80120024180016a200241a8016a4108107e200242043703a80120024180016a200241a8016a4108107e20024180016a2009422088a7220310cb012009a721060240200341286c2203450d00200420036a210120042103034020024180016a20034120107e2002200341206a2903003703a80120024180016a200241a8016a4108107e200341286a22032001470d000b0b20024180016a2002413c6a4120107e200241023a00a80120024180016a200241a8016a4101107e2002350280012109200235028801210d02402006450d00200641286c450d00200410310b200241d0016a2400200d4220862009840f0b2002418c016a4119360200200241246a410236020020024202370214200241f4ddc4003602102002410436028401200241a4e4c40036028001200220024180016a3602202002200241c8016a36028801200241106a4184dec4001047000b970504047f017e017f017e230041f0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024002400240024020010d00200241d0006a22034200370300200241386a41106a22014200370300200241386a41086a2204420037030020024200370338200241386a41f9c6c000410410a702200241d8006a41a090c500410a10a7022003200241d8006a41086a220529000037030020012002290058370300200241286a200241386a10ab032002290330210620022802282107200241386a41849bc200411710a702200241206a200241386a411010c002200241106a2006420020071b4200200228022441e40020022802201bad420010be09200229031850450d012002290310210620034200370300200142003703002004420037030020024200370338200241386a41f9c6c000410410a702200241d8006a41be90c500410b10a70220032005290000370300200120022900583703002002200241386a10ab0320062002290308420020022802001b7c22082006540d024108102f2203450d032002420837023c2002200336023820022008370358200241386a200241d8006a4108107e2002350240210620023502382108200241f0006a240020082006422086840f0b200241e4006a4119360200200241cc006a41023602002002420237023c200241f4ddc4003602382002410436025c200241bce4c4003602582002200241d8006a3602482002200241e8006a360260200241386a4184dec4001047000b41c887c30041fa0041c488c3001068000b41c887c30041fa0041d488c3001068000b1039000b990e07047f017e027f017e017f017e027f230041a0026b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024002400240024020010d00200241f8016a41186a22044200370300200241f8016a41106a22034200370300200241f8016a41086a22014200370300200242003703f801200241d8006a41f9c6c000410410a7022001200241d8006a41086a2205290000370300200220022900583703f801200241d8006a41a090c500410a10a7022004200529000037030020032002290058370300200241c8006a200241f8016a10ab032002290350210620022802482107200241d8006a41186a22044200370300200241d8006a41106a220842003703002005420037030020024200370358200241d8006a41f9c6c000410410a702200241f8016a41a090c500410a10a70220042001290000370300200820022900f801370300200241386a200241d8006a10ab03200229034021092002280238210a200241d8006a41849bc200411710a702200241306a200241d8006a411010c002200241206a20094200200a1b4200200228023441e40020022802301bad420010be09200229032850450d012002290320210920044200370300200842003703002005420037030020024200370358200241d8006a41f9c6c000410410a702200241f8016a41be90c500410b10a70220042001290000370300200820022900f801370300200241106a200241d8006a10ab0320092002290318420020022802101b7c220b2009540d02200241d8006a41849bc200411710a702200241086a200241d8006a411010c002200228020c210c2002280208210d200241f8016a41186a22054200370300200241f8016a41106a22044200370300200241f8016a41086a22014200370300200242003703f801200241d8006a41f9c6c000410410a7022001200241d8006a41086a2208290000370300200220022900583703f801200241d8006a41f4aec800410b10a702200341086a200829000037000020032002290058370000200241d8006a200241f8016a10c6052002280258210a200229025c2109200542003703002004420037030020014200370300200242003703f801200241d8006a41f9c6c000410410a70220012008290000370300200220022900583703f801200241d8006a419e91c500410a10a7022005200829000037030020042002290058370300200241d8006a200241f8016a10c70520022d005821082005200241f1006a2900003703002004200241e9006a2900003703002001200241e1006a290000370300200220022900593703f8010240024020084101460d00200241b8016a41186a4200370300200241b8016a41106a4200370300200241b8016a41086a4200370300200242003703b8010c010b200241b8016a41186a2005290300370300200241b8016a41106a2004290300370300200241b8016a41086a2001290300370300200220022903f8013703b8010b200241f8016a41186a4200370300200241f8016a41106a4200370300200241f8016a41086a22014200370300200242003703f801200241d8006a41f9c6c000410410a7022001200241d8006a41086a2205290000370300200220022900583703f801200241d8006a41ed90c500410b10a702200341086a200529000037000020032002290058370000200241d8006a200241f8016a10a306200241e8016a41086a22032005290300370300200220022903583703e801200220022800693602e0012002200241ec006a2800003600e30120022d006822054103460d03200120032903003703002002418c016a20094200200a1b22093702002002419c016a200241b8016a41086a290300370200200241a4016a200241b8016a41106a290300370200200241ac016a200241b8016a41186a290300370200200220022903e8013703f801200220022802e0013602d801200220022800e3013600db012002200a4108200a1b2204360288012002200c41e400200d1bad3703682002200b37036020022006420020071b370358200220022903b80137029401200241f8006a2001290300370300200220022903f801370370200241d8006a41286a20053a000020024184016a20022800db0136000020024181016a20022802d801360000200241d8006a10fc04210602402009a72203450d00200341286c450d00200410310b200241a0026a240020060f0b20024184026a4119360200200241ec006a41023602002002420237025c200241f4ddc400360258200241043602fc01200241d8e4c4003602f8012002200241f8016a360268200220024198026a36028002200241d8006a4184dec4001047000b41c887c30041fa0041c488c3001068000b41c887c30041fa0041d488c3001068000b41888bc30041c80041e08bc3001068000bbb0f05047f027e027f017e067f230041a0026b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024002400240024020010d0020024190026a22014200370300200241f8016a41106a22034200370300200241f8016a41086a22044200370300200242003703f801200241c0006a41f9c6c000410410a7022004200241c0006a41086a2205290000370300200220022900403703f801200241c0006a41a090c500410a10a7022001200529000037030020032002290040370300200241306a200241f8016a10ab032002290338420020022802301b220642017c22072006540d01200241c0006a41849bc200411710a702200241286a200241c0006a411010c002200241186a20074200200228022c41e40020022802281bad420010be09200229032050450d022002290318210620024190026a22054200370300200241f8016a41106a22084200370300200241f8016a41086a22014200370300200242003703f801200241c0006a41f9c6c000410410a7022001200241c0006a41086a2204290000370300200220022900403703f801200241c0006a41be90c500410b10a702200341086a2209200429000037000020032002290040370000200241086a200241f8016a10ab0320062002290310420020022802081b7c220a2006540d03200241c0006a41849bc200411710a7022002200241c0006a411010c0022002280204210b2002280200210c200542003703002008420037030020014200370300200242003703f801200241c0006a41f9c6c000410410a70220012004290000370300200220022900403703f801200241c0006a41f4afc800410f10a7022009200429000037000020032002290040370000200241c0006a200241f8016a10c6052002280240210920022902442106200542003703002008420037030020014200370300200242003703f801200241c0006a41f9c6c000410410a70220012004290000370300200220022900403703f801200241c0006a41f890c500410e10a7022005200429000037030020082002290040370300200241c0006a200241f8016a10c70520022d004021042005200241d9006a2900003703002008200241d1006a2900003703002001200241c9006a290000370300200220022900413703f8010240024020044101460d00200241b8016a4200370300200241b0016a4200370300200241a8016a4200370300200242003703a0010c010b200241a0016a41186a200241f8016a41186a290300370300200241a0016a41106a200241f8016a41106a290300370300200241a0016a41086a200241f8016a41086a290300370300200220022903f8013703a0010b20024190026a2208420037030020024188026a220d4200370300200241f8016a41086a22044200370300200242003703f801200241c0006a41f9c6c000410410a7022004200241c0006a41086a2201290000370300200220022900403703f801200241c0006a41c990c500410f10a702200341086a220e200129000037000020032002290040370000200241c0006a200241f8016a10a306200241d0016a41086a220f2001290300370300200220022903403703d001200220022800513602c8012002200241d4006a22102800003600cb010240024020022d005022054103470d0020084200370300200d420037030020044200370300200242003703f801200241c0006a41f9c6c000410410a70220042001290000370300200220022900403703f801200241c0006a41ed90c500410b10a702200e200129000037000020032002290040370000200241c0006a200241f8016a10a306200241e8016a41086a2001290300370300200220022903403703e801200220022800513602e001200220102800003600e30120022d005022054103460d06200241f8016a41086a200241e8016a41086a290300370300200220022903e8013703f801200220022802e0013602c001200220022800e3013600c3010c010b2004200f290300370300200220022903d0013703f801200220022802c8013602c001200220022800cb013600c3010b200241f4006a2006420020091b220637020020024184016a200241a0016a41086a2903003702002002418c016a200241b0016a29030037020020024194016a200241b8016a290300370200200241e0006a200241f8016a41086a29030037030020022009410820091b22013602702002200b41e400200c1bad3703502002200a37034820022007370340200220022903a00137027c200220022903f801370358200241c0006a41286a20053a0000200241e9006a20022802c001360000200241ec006a20022800c301360000200241c0006a10fc04210702402006a72203450d00200341286c450d00200110310b200241a0026a240020070f0b20024184026a4119360200200241d4006a410236020020024202370244200241f4ddc400360240200241043602fc01200241f0e4c4003602f8012002200241f8016a360250200220024198026a36028002200241c0006a4184dec4001047000b41888ac30041ef0041f88ac3001068000b41c887c30041fa0041c488c3001068000b41c887c30041fa0041d488c3001068000b41888bc30041c80041d08bc3001068000bc118040f7f017e137f017e230041e0046b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024020014108490d00200241003602a803200041f8fac90020011b41086a2104200141786a2100200241a8036a4104722105410021010340200241003a005020002001460d01200520016a200420016a2d00003a00002002200141016a22033602a8032003210120034120470d000b200241a8026a41026a2201200241b5036a2d00003a0000200241d0016a41026a2204200241bc036a2d00003a0000200220022f01ac033b0150200220022d00ae033a00522002200241b3036a2f00003b01a8022002200241ba036a2f01003b01d001200241b6036a280100210620022800af032107200241bd036a2800002108200241b0046a41026a2209200241c3036a2d00003a00002002200241c1036a2f00003b01b004200241a8036a41206a280200210a200241c4036a280200210b200220022d00523a003e200220022f01503b013c20024180036a41026a220c20012d00003a0000200220022f01a8023b018003200241cc006a41026a220d20042d00003a0000200220022f01d0013b014c200241c8006a41026a220520092d00003a0000200220022f01b0043b0148200241386a41026a2209200c2d00003a0000200220022f0180033b0138200241346a41026a220c200d2d00003a0000200220022f014c3b0134200241306a41026a220d20052d00003a0000200220022f01483b0130200220022d003e3a002a200220022f013c3b0128200241246a41026a220e20092d00003a0000200220022f01383b0124200241206a41026a2209200c2d00003a0000200220022f01343b01202002411c6a41026a220c200d2d00003a0000200220022f01303b011c20002003470d00200241d0006a41026a2203200e2d00003a0000200120092d00003a00002004200c2d00003a0000200220022d002a3a00aa03200220022f01283b01a803200220022f01243b0150200220022f01203b01a802200220022f011c3b01d001200241186a41026a220020022d00aa033a0000200220022f01a8033b0118200241146a41026a220920032d00003a0000200220022f01503b0114200241106a41026a220320012d00003a0000200220022f01a8023b01102002410c6a41026a220120042d00003a0000200220022f01d0013b010c200220022f01183b014c200220002d00003a004e200520092d00003a0000200220022f01143b0148200241c4006a41026a20032d00003a0000200220022f01103b0144200241c0006a41026a20012d00003a0000200220022f010c3b0140200241a8036a41186a22014200370300200241a8036a41106a22034200370300200241a8036a41086a22004200370300200242003703a803200241d0006a41d7b2c800410710a7022000200241d0006a41086a2204290000370300200220022900503703a803200241d0006a41b0ffc100410c10a70220012004290000370300200320022900503703002002200241a8036a412010c0022002280204210f20022802002110200142003703002003420037030020004200370300200242003703a803200241d0006a41d7b2c800410710a70220002004290000370300200220022900503703a803200241d0006a41def0c100410a10a7022001200429000037030020032002290050370300200241d0006a200241a8036a10cf0420022902544200200228025022011b2211a721122001410120011b2213210102402011422088a72203450d00201320034105746a2114200241a8036a41156a2103200241a8036a410e6a2100200241a8036a4107722104201321010340200220012f000022153b013c2002200141026a22162d000022173a003e200141186a221828000021052001411c6a22192800002109200141116a221a280000210c2001410a6a221b280000210d200141036a221c280000210e200220173a00aa03200220153b01a8032002200e3600ab03200141076a22152f00002117200441026a221d200141096a221e2d00003a0000200420173b00002002200d3601b203200141106a22172d0000211f20002001410e6a22202f00003b0000200041026a2221201f3a00002002200c3600b903200141176a221f2d000021222003200141156a22232f00003b0000200341026a222420223a0000200220093602c403200220053602c003200220022f013c3b0128200220022d003e3a002a200241246a41026a2222201d2d00003a0000200220042f00003b0124200241206a41026a221d20212d00003a0000200220002f00003b01202002411c6a41026a222120242d00003a0000200220032f00003b011c201620022d002a3a0000200120022f01283b0000201c200e360000201b200d360000201520022f01243b0000201e20222d00003a0000201a200c360000202020022f01203b00002017201d2d00003a0000202320022f011c3b0000201f20212d00003a00002019200936000020182005360000200141206a22012014470d000b0b200220123602b404200220133602b0042002200120136b41057522093602b804200241a8036a200241b0046a10dc0441002101024020022802a8034101460d0020024180036a41206a200241d0036a28020036020020024180036a41186a200241a8036a41206a29030037030020024180036a41106a200241a8036a41186a29030037030020024180036a41086a200241a8036a41106a2903003703002002200241a8036a41086a29030037038003200241d4036a2802002101200241a8026a200241d8036a41d80010bf091a0b200241b0046a41086a220320024180036a41086a290300370300200241b0046a41106a220020024180036a41106a290300370300200241b0046a41186a220420024180036a41186a290300370300200241b0046a41206a220520024180036a41206a28020036020020022002290380033703b004200241a8036a200241a8026a41d80010bf091a024002402001450d00200241d0006a41206a2005280200360200200241d0006a41186a2004290300370300200241d0006a41106a2000290300370300200241d0006a41086a2003290300370300200220022903b004370350200241d0016a200241a8036a41d80010bf091a200241f4006a2001360200200241f8006a200241d0016a41d80010bf091a200241b1036a200241c8006a41026a2d00003a0000200241a8036a41106a200241c4006a41026a2d00003a0000200241bf036a200241c0006a41026a2d00003a0000200220022d004e3a00aa03200220022f014c3b01a803200220073600ab03200220022f01483b00af03200220063601b203200220022f01443b01b603200220083600b903200220022f01403b00bd032002200a3602c4032002200b3602c003200241a8026a200241d0006a41e2c289ab06200241a8036a10a00720022902ac02211120022802a8022100200241d0006a10df040c010b410021000b0240024020000d0041002101200241003602a8030c010b200241a8036a41086a4100360200200242013703a8032002200f410020101b360250200241a8036a200241d0006a4104107e200241a8036a2011422088a7220410cb0102402004450d0020002004410c6c6a21032000210103402001280200200141086a280200200241a8036a10ce012001410c6a22012003470d000b0b2011a7210520022009360250200241a8036a200241d0006a4104107e02402004450d002004410c6c21032000210103400240200141046a280200450d00200128020010310b2001410c6a2101200341746a22030d000b0b02402005450d002005410c6c450d00200010310b024020022802a80322010d00410021010c010b20022802b003210420022802ac0321000b4101102f2203450d01200242013702ac03200220033602a8030240024020010d00200241003a0050200241a8036a200241d0006a4101107e0c010b200241013a0050200241a8036a200241d0006a4101107e20012004200241a8036a10ce010b20023502b003211120023502a803212502402001450d002000450d00200110310b200241e0046a240020114220862025840f0b200241dc006a4119360200200241bc036a4102360200200242023702ac03200241f4ddc4003602a8032002410436025420024180e4c4003602502002200241d0006a3602b8032002200241d8046a360258200241a8036a4184dec4001047000b1039000b8d1b04097f037e017f017e230041f0146b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037020c2002200136021c200220003602182002200241186a360208200241980c6a200241086a10c203024002400240024002400240200241a40c6a2802002200450d00200241f0066a41086a200241980c6a41086a280200360200200220022903980c3703f006200241a80c6a2802002104200241ac0c6a280200210520024188066a200241b00c6a41e40010bf091a2002419c0d6a2802002106200241980c6a4180016a2802002107200241940d6a280200210820024180076a200241a00d6a41800110bf091a2002200241086a10ab01024020022802000d0020022802082201280204220320022802042209490d002009417f4c0d030240024020090d004101210a0c010b20091035220a450d062002280208220128020421030b024020032009490d00200a2001280200200910bf091a200128020422032009490d072001200320096b3602042001200128020020096a360200200241f8056a41086a200241f0066a41086a280200360200200220022903f0063703f80520024190056a20024188066a41e40010bf091a20024190046a20024180076a41800110bf091a0c030b200a10310b02402005450d00200541246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402004450d00200441246c450d00200010310b02402006450d00200641246c21032008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b2007450d00200741246c450d00200810310b410021000b20024180046a41086a2201200241f8056a41086a280200360200200220022903f8053703800420024198036a20024190056a41e40010bf091a20024198026a20024190046a41800110bf091a2000450d0120024188026a41086a2001280200360200200220022903800437038802200241a0016a20024198036a41e40010bf091a200241206a20024198026a41800110bf091a0240024020022802082802040d0020024190056a41086a20024188026a41086a28020036020020022002290388023703900520024180076a200241a0016a41e40010bf091a200241980c6a200241206a41800110bf091a0c010b02402005450d00200541246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402004450d00200441246c450d00200010310b02402006450d00200641246c21032008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402007450d00200741246c450d00200810310b410021002009450d00200a10310b2000450d0120024180046a41086a220120024190056a41086a28020036020020022002290390053703800420024188066a20024180076a41e40010bf091a20024198026a200241980c6a41800110bf091a200241f0066a41086a200128020036020020022002290380043703f006200241206a20024188066a41e40010bf091a20024190046a20024198026a41800110bf091a20022009360294052002200a36029005200241980c6a20024190056a10b30302400240200228029c0c22010d00410021010c010b20024180076a41086a200241a80c6a280200360200200220022903a00c3703800720022802980c21030b02402009450d00200a10310b200241f8056a41086a220920024180076a41086a28020036020020022002290380073703f805024002402001450d00200241a0016a41086a220a2009280200360200200220022903f8053703a001200241980c6a20024180076a41e80010bf091a20024198036a41206a20024190056a41206a290300220b37030020024198036a41186a20024190056a41186a290300220c37030020024198036a41106a20024190056a41106a290300220d37030020024198036a41086a220920024190056a41086a220e290300220f370300200241900d6a200f370300200241980c6a4180016a200d370300200241a00d6a200c370300200241a80d6a200b3703002002200229039005220b370398032002200b3703880d200242023703800d200241c00d6a2001360200200241bc0d6a2003360200200241b80d6a4102360200200241013602b00d200241cc0d6a200a280200360200200241c40d6a20022903a001370200200241d80d6a200241f0066a41086a280200360200200241d00d6a20022903f006370300200241e40d6a2005360200200241e00d6a2004360200200241dc0d6a2000360200200241e80d6a200241206a41e40010bf091a200241d40e6a2006360200200241d00e6a2007360200200241cc0e6a2008360200200241d80e6a20024190046a41800110bf091a200241d80f6a20024180076a41980510bf091a2002200241980c6a3602900520024198036a20024190056a10f605200e200928020036020020022002290398033703900520024190056a109d072101024020022903800d4202510d0020022d00980c41ff01714102470d0020022802a00c450d00200228029c0c10310b200241b00d6a109e0741002802809a4a21030240024020010d0020034103490d0141002802fc994a210141002802f8994a210341002802849a4a2100200241d80c6a41a301360200200241d00c6a42e280808010370300200241cc0c6a41bec9c400360200200241c40c6a4219370200200241c00c6a41a5c9c400360200200241b80c6a4200370300200241b40c6a41f8fac900360200200241a80c6a4201370300200241a00c6a410d36020020024188c9c4003602a40c20024198c9c40036029c0c200241033602980c200341f8fac900200041024622001b200241980c6a20014180a6c00020001b280210110300410121010c030b2003450d0020024123360284072002200241f8056a3602800741002802fc994a210141002802f8994a210341002802849a4a2100200241d80c6a41a701360200200241d00c6a42e280808010370300200241cc0c6a41bec9c400360200200241c40c6a4219370200200241c00c6a41a5c9c400360200200241b80c6a4201370300200241a80c6a4201370300200241a00c6a410d360200200241b40c6a20024180076a36020020024190c9c4003602a40c20024198c9c40036029c0c200241013602980c200341f8fac900200041024622001b200241980c6a20014180a6c00020001b2802101103000b410121010c010b02402005450d00200541246c21032000210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b02402004450d00200441246c450d00200010310b02402006450d00200641246c21032008210103400240024002400240024020012d00000e050400010204030b2001410c6a280200450d03200141086a28020010310c030b2001410c6a280200450d02200141086a28020010310c020b2001410c6a280200450d01200141086a28020010310c010b200141086a280200450d00200141046a28020010310b200141246a21012003415c6a22030d000b0b410021012007450d00200741246c450d00200810310b4101102f2203450d022002420137029c0c200220033602980c0240024020010d00200241003a008007200241980c6a20024180076a4101107e0c010b200241013a008007200241980c6a20024180076a4101107e0b20023502a00c210b20023502980c210c200241f0146a2400200c200b422086840f0b103b000b200241a4026a4119360200200241a4046a41023602002002420237029404200241f4ddc400360290042002410436029c02200241c8e3c40036029802200220024198026a3602a0042002200241f8056a3602a00220024190046a4184dec4001047000b1039000b20092003419cb4c0001061000ba51e08097f017e017f027e017f017e107f017e23004180016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024002400240024020010d00200241286a22034200370300200241206a22014200370300200241106a41086a2204420037030020024200370310200241d8006a41b490c700410b10a7022004200241d8006a41086a220529000037030020022002290058370310200241d8006a41c892c700411310a7022003200529000037030020012002290058370300200241086a200241106a412010c002200228020c21062002280208210720034200370300200142003703002004420037030020024200370310200241106a419ee6c300410f10a702200241d8006a4188e9c300411510a70220032005290000370300200120022900583703002002200241106a412010c002200228020421082002280200210920034200370300200142003703002004420037030020024200370310200241d8006a41a6c7c000411210a7022004200529000037030020022002290058370310200241d8006a41d2eac400410410a7022003200529000037030020012002290058370300200241d8006a200241106a10a4062002280258210a200229025c210b20034200370300200142003703002004420037030020024200370310200241d8006a41a6c7c000411210a7022004200529000037030020022002290058370310200241d8006a41aa90c500410810a7022003200529000037030020012002290058370300200241d8006a200241106a10a406200a4101200a1b210c02400240200b4200200a1b220ba72204200b422088a722036b200229025c4200200228025822011b220d422088a72205490d00200b210e0c010b200320056a220a2003490d0520044101742203200a2003200a4b1b22034104200341044b1b220341ffffff3f71200346210a200341057421030240024020040d00200241003602100c010b200241186a41013602002002200c360210200220044105743602140b200241d8006a2003200a200241106a104e200241e0006a280200210320022802584101460d03200228025c210c200b428080808070832003410576ad84210e200b422088a721030b2006410020071b210f2008410020091b2104200c20034105746a2001410120011b2203200541057410bf091a200d42808080807083210b0240200d42ffffff3f83500d00200310310b200e200b7c21102004200f4f0d0102400340200241106a200410e605024020022802102208450d00200228023c210a2002280238210520022802342109200228022c21112002280228211220022802202113200228021c21062002280214211402402010a722072010422088a722036b200228022422014f0d00200320016a22152003490d08200741017422162015201620154b1b22154104201541044b1b221541ffffff3f712015462116201541057421150240024020070d00200241003602580c010b200241013602602002200c3602582002200741057436025c0b200241e8006a20152016200241d8006a104e2002280270210720022802684101460d03200228026c210c2007410576ad21100b200c20034105746a2006200141057410bf091a0240201441ffffff3f71450d00200810310b200120036a21030240201341ffffff3f71450d00200610310b2003ad210b0240201141ffffff3f71450d00201210310b201042ffffffff0f83210d200b422086210b0240200a450d00200a410c6c21012009210303400240200341046a28020041ffffffff0371450d00200328020010310b2003410c6a2103200141746a22010d000b0b200d200b8421102005450d002005410c6c450d00200910310b200441016a2204200f470d000c030b0b20070d030c040b200241e4006a4119360200200241246a410236020020024202370214200241f4ddc4003602102002410436025c20024184e5c4003602582002200241d8006a3602202002200241f8006a360260200241106a4184dec4001047000b0240024002400240024002402010422088a7221741144b0d00201741014b0d010c040b2010422188a7220341ffffff3f712003470d0720034105742218417f4c0d072018102f2219450d06200c41606a211a200c41a07f6a211b410421144100211c410021112017211d024002400340201d211e4100211d410121040240201e417f6a2205450d00024002400240024002400240200c20054105746a201e4105742206200c6a41406a412010c2094100480d00201e417e6a2105201b20066a21034100211d410021010340024020052001470d00201e21040c080b200141016a2101200341206a2003412010c2092104200341606a21032004417f4a0d000b200141016a21042001417f73201e6a21050c010b201b20066a210302400340024020054101470d00410021050c020b2005417f6a2105200341206a2003412010c2092101200341606a210320014100480d000b0b201e2005490d01201e20174b0d02201e20056b2204410176220a450d00201a20066a2103200c20054105746a21010340200241106a41186a2206200141186a2207290000370300200241106a41106a2208200141106a2209290000370300200241106a41086a2213200141086a220f29000037030020022001290000370310200341086a2212290000210b200341106a2215290000210d200341186a2216290000210e200120032900003700002007200e3700002009200d370000200f200b37000020162006290300370000201520082903003700002012201329030037000020032002290310370000200341606a2103200141206a2101200a417f6a220a0d000b0b0240200441094d0d002005211d0c050b024020050d002005211d0c050b201e20174b0d02201e20056b21042005417f6a2103201a20054105746a21010340201e2003490d072001200441016a22041080072003417f6a220520034f0d04200141606a2101200521032004410a490d000c040b0b2005201e419cabc8001062000b201e2017419cabc8001058000b201e2005417f6a2203490d03201e201741acabc8001058000b200541016a211d0b02402011201c470d00201c41016a2203201c490d0b201c41017422012003200120034b1b22034104200341044b1b220341ffffffff017120034641027421012003410374210302400240201c0d00200241003602100c010b20024104360218200220143602102002201c4103743602140b200241d8006a20032001200241106a104e20022802602103024020022802584101470d0020030d0b0c0c0b200228025c21142003410376211c0b201420114103746a220320043602042003201d360200201141016a22162111024020164102490d0002400240024003400240024002400240201420162211417f6a22164103746a2203280200450d00201141037420146a220a41746a2802002205200328020422014d0d00201141024d0d0820142011417d6a22034103746a2802042204200120056a4d0d01201141034d0d08200a41646a280200200420056a4b0d080c010b20114103490d012003280204210120142011417d6a22034103746a28020421040b20042001490d010b2011417e6a21030b02402011200341016a221e4d0d00201120034d0d02201420034103746a220f280204221f200f2802006a22032014201e4103746a22122802002215490d03200320174b0d04200f41046a2120200c20154105746a22092012280204221341057422016a21052003410574210402400240200320156b220620136b22032013490d0020192009200110bf09220820016a210a0240024020134101480d00200620134a0d010b20092103200821010c020b200c20046a21072008210120092103034020032005200120052001412010c20941004822061b2204290000370000200341186a200441186a290000370000200341106a200441106a290000370000200341086a200441086a2900003700002001200141206a20061b2101200341206a2103200541206a200520061b220520074f0d02200a20014b0d000c020b0b201920052003410574220110bf09220820016a210a0240024020134101480d00200341014e0d010b20052103200821010c010b201a20046a2104200521030340200341606a2101200a41606a210520042001200520052001412010c20941004822071b2206290000370000200441186a200641186a290000370000200441106a200641106a290000370000200441086a200641086a290000370000200a200520071b210a024020092001200320071b2203490d00200821010c020b200441606a2104200821012008200a490d000b0b20032001200a20016b41607110bf091a2020201f20136a360200200f20153602002012201241086a2011201e417f736a41037410c0091a41012111201641014d0d050c010b0b201e201141bcabc800103f000b2003201141ccabc800103f000b2015200341dcabc8001062000b2003201741dcabc8001058000b201d450d020c000b0b2003201e41acabc8001062000b0240201c41ffffffff0171450d00201410310b2018450d01201910310c010b200c2017417e6a22034105746a2101410221040340200320174b0d0220012004108007200141606a2101200441016a21042003417f6a2203417f470d000b0b20174102490d01200c41206a210341012104410121010340024020032001410574200c6a220541606a412010c209450d00024020042001460d002003290000210b20032005290000370000200341186a220a290000210d200a200541186a2206290000370000200341106a220a290000210e200a200541106a2207290000370000200341086a220a2900002121200a200541086a2208290000370000200820213700002007200e3700002006200d3700002005200b3700000b200141016a21010b200341206a21032017200441016a2204470d000b200120174d0d0241facdc800412341d0cfc800103c000b20032017418cabc8001061000b201721010b200141057441047222034100480d022003102f2204450d01200241003602182002200336021420022004360210200241106a200110cb0102402001450d0020014105742101200c21030340200241106a20034120107e200341206a2103200141606a22010d000b0b2002350218210b2002350210210d0240201042ffffff3f83500d00200c10310b20024180016a2400200b422086200d840f0b2003450d010b1039000b103b000bf50f04027f017e027f017e230041f0036b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037020c200220013602b403200220003602b0032002200241b0036a360208024002400240024002402001450d0020022001417f6a22013602b4032002200041016a3602b003024002400240024020002d00000e020100040b2002200241086a10ab0120022802000d0320022802b403220320022802042200490d032000417f4c0d060240024020000d00410121010c010b200010352201450d0820022802b40321030b20032000490d02200120022802b003200010bf091a20022802b40322032000490d042002200320006b22033602b403200220022802b00320006a3602b00320030d012000ad220442208620048421040c050b20010d02410021010c040b2000450d010b200110310b200241bc036a41193602002002411c6a41023602002002420237020c200241f4ddc400360208200241043602b40320024198e5c4003602b0032002200241b0036a3602182002200241e8036a3602b803200241086a4184dec4001047000b20002003419cb4c0001061000b410021030240024020010d00410021050c010b2004422088a72200417f4c0d010240024020000d00410121050c010b2000102f2205450d030b20052001200010bf091a0b200241106a220620003602002002200036020c20022005360208200241f0016a41e7e485f306200241086a10a9070240024020010d000c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102f2203450d030b20032001200010bf091a0b200620003602002002200036020c2002200336020820024190026a41e2c289ab06200241086a10aa07410021030240024020010d00410021050c010b2004422088a72200417f4c0d010240024020000d00410121050c010b2000102f2205450d030b20052001200010bf091a0b200241106a220620003602002002200036020c20022005360208200241b0026a41e9dabdf306200241086a10aa070240024020010d000c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102f2203450d030b20032001200010bf091a0b200620003602002002200036020c20022003360208200241d0026a41f0c2c98b06200241086a10aa07410021030240024020010d00410021050c010b2004422088a72200417f4c0d010240024020000d00410121050c010b2000102f2205450d030b20052001200010bf091a0b200241106a220620003602002002200036020c20022005360208200241f0026a41e1e69df306200241086a10aa070240024020010d000c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102f2203450d030b20032001200010bf091a0b200620003602002002200036020c2002200336020820024190036a41e1ea91cb06200241086a10aa070240024020010d00410021030c010b2004422088a72200417f4c0d010240024020000d00410121030c010b2000102f2203450d030b20032001200010bf091a0b200241d8036a41086a2000360200200220003602dc03200220033602d803200241b0036a41e2ca95b306200241d8036a10ab07200241086a41086a200241f0016a41086a290300370300200241086a41106a200241f0016a41106a290300370300200241086a41186a200241f0016a41186a290300370300200241306a20024190026a41086a290300370300200241386a20024190026a41106a290300370300200241c0006a20024190026a41186a290300370300200241d0006a200241b0026a41086a290300370300200241d8006a200241b0026a41106a290300370300200241e0006a200241b0026a41186a290300370300200220022903f0013703082002200229039002370328200220022903b00237034820024180016a200241d0026a41186a290300370300200241f8006a200241d0026a41106a290300370300200241f0006a200241d0026a41086a29030037030020024190016a200241f0026a41086a29030037030020024198016a200241f0026a41106a290300370300200241a0016a200241f0026a41186a290300370300200241b0016a20024190036a41086a290300370300200241b8016a20024190036a41106a290300370300200241c0016a20024190036a41186a290300370300200220022903d002370368200220022903f0023703880120022002290390033703a801200241e8016a200241b0036a41206a2d00003a0000200241e0016a200241b0036a41186a290300370300200241d8016a200241b0036a41106a290300370300200241d0016a200241b0036a41086a290300370300200220022903b0033703c801200242013703d803200241003602e003200241d8036a200241086a4120107e200241d8036a200241086a41206a4120107e200241d8036a200241c8006a4120107e200241d8036a200241e8006a4120107e200241d8036a20024188016a4120107e200241d8036a200241a8016a4120107e200241d8036a200241c8016a4121107e02402001450d002004a7450d00200110310b200241086a200241d8036a10e8042002350210210420023502082107024020022802dc03450d0020022802d80310310b200241f0036a240020044220862007840f0b103b000b1039000bff0101067f230041c0006b2203240020032001360204200341086a2002109e09200341206a41186a2204200341046a200341086a41106a200341086a41086a2205200328020822064101461b2903001002220141186a290000370300200341206a41106a2207200141106a290000370300200341206a41086a2208200141086a2900003703002003200129000037032020011031200041186a2004290300370000200041106a2007290300370000200041086a20082903003700002000200329032037000002402006450d002005280200450d00200328020c10310b024020022802002200450d00200241046a280200450d00200010310b200341c0006a24000bff0101067f230041c0006b2203240020032001360204200341086a2002109e09200341206a41186a2204200341046a200341086a41106a200341086a41086a2205200328020822064101461b2903001006220141186a290000370300200341206a41106a2207200141106a290000370300200341206a41086a2208200141086a2900003703002003200129000037032020011031200041186a2004290300370000200041106a2007290300370000200041086a20082903003700002000200329032037000002402006450d002005280200450d00200328020c10310b024020022802002200450d00200241046a280200450d00200010310b200341c0006a24000ba10201077f230041d0006b220324002003200136020c200341106a2002109e09200341286a41206a22042003410c6a200341106a41106a200341106a41086a2205200328021022064101461b2903001001220141206a2d00003a0000200341286a41186a2207200141186a290000370300200341286a41106a2208200141106a290000370300200341286a41086a2209200141086a2900003703002003200129000037032820011031200041206a20042d00003a0000200041186a2007290300370000200041106a2008290300370000200041086a20092903003700002000200329032837000002402006450d002005280200450d00200328021410310b024020022802002200450d00200241046a280200450d00200010310b200341d0006a24000b981403037f017e017f23004190046b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a2002428080808080203702fc0120022001360214200220003602102002200241106a3602f801200241086a200241f8016a10ab010240024002400240024020022802080d0020022802142203200228020c2201490d002001417f4c0d040240024020010d00410121040c010b200110352204450d04200228021421030b024020032001490d0020042002280210200110bf092100200228021422032001490d032002200320016b3602142002200228021020016a3602102000450d012001ad220542208620058421052002280214450d022005a7450d010b200410310b2002411c6a41193602002002418c026a4102360200200242023702fc01200241f4ddc4003602f80120024104360214200241b8e5c4003602102002200241106a36028802200220024188046a360218200241f8016a4184dec4001047000b200220054220883e02e403200220003602e003200241f8016a200241e0036a10e3010240024002400240024002400240024002400240024020022d00f8014101470d00410021010c010b200241106a200241f8016a41017241e10110bf091a200241f8016a200241106a41e10110bf091a4120102f2203450d0b200320022903f801370000200341186a200241f8016a41186a290300370000200341106a200241f8016a41106a290300370000200341086a200241f8016a41086a290300370000200241003602f803200241e8036a41c0004104200241f8036a104e200241e8036a41086a280200210620022802e8034101460d0120022802ec03220141e7e485f30636020c200142a08080808004370204200120033602004120102f2204450d0b2004200229039802370000200441186a200241b0026a290300370000200441106a200241a8026a290300370000200441086a200241a0026a2903003700000240200641047622034101470d0020024290808080c0003702fc03200220013602f803200241e8036a41c0004104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0320022802ec032101200341047621030b200120043602102001411c6a41e2c289ab06360200200141146a42a080808080043702004120102f2204450d0b200420022903b802370000200441186a200241d0026a290300370000200441106a200241c8026a290300370000200441086a200241c0026a290300370000024020034102470d00200242a0808080c0003702fc03200220013602f803200241e8036a41c0004104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0420022802ec032101200341047621030b200120043602202001412c6a41e9dabdf306360200200141246a42a080808080043702004120102f2204450d0b200420022903d802370000200441186a200241f0026a290300370000200441106a200241e8026a290300370000200441086a200241e0026a290300370000024020034103470d00200242b0808080c0003702fc03200220013602f803200241e8036a41e0004104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0520022802ec032101200341047621030b200120043602302001413c6a41f0c2c98b06360200200141346a42a080808080043702004120102f2204450d0b200420022903f802370000200441186a20024190036a290300370000200441106a20024188036a290300370000200441086a20024180036a290300370000024020034104470d00200242c0808080c0003702fc03200220013602f803200241e8036a4180014104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0620022802ec032101200341047621030b20012004360240200141cc006a41e1e69df306360200200141c4006a42a080808080043702004120102f2204450d0b2004200229039803370000200441186a200241b0036a290300370000200441106a200241a8036a290300370000200441086a200241a0036a290300370000024020034105470d00200242d0808080c0003702fc03200220013602f803200241e8036a41a0014104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0720022802ec032101200341047621030b20012004360250200141dc006a41e1ea91cb06360200200141d4006a42a080808080043702004121102f2204450d0b200420022903b803370000200441206a200241d8036a2d00003a0000200441186a200241d0036a290300370000200441106a200241c8036a290300370000200441086a200241c0036a290300370000024020034106470d00200242e0808080c0003702fc03200220013602f803200241e8036a41c0014104200241f8036a104e200241e8036a41086a280200210320022802e8034101460d0820022802ec032101200341047621030b20012004360260200141ec006a41e2ca95b306360200200141e4006a42a180808090043702000b02402005a7450d00200010310b41f500410120011b2200102f2204450d0a2002410036028002200220003602fc01200220043602f80120010d07200241003a0010200241f8016a200241106a4101107e20022802f801210020022802800221040c080b20060d090c0a0b2003450d090c080b2003450d080c070b2003450d070c060b2003450d060c050b2003450d050c040b2003450d040c030b200241013a0010200241f8016a200241106a4101107e200241f8016a410710cb0120012802002001280208200241f8016a10ce01200241f8016a2001410c6a4104107e20012802102001280218200241f8016a10ce01200241f8016a2001411c6a4104107e20012802202001280228200241f8016a10ce01200241f8016a2001412c6a4104107e20012802302001280238200241f8016a10ce01200241f8016a2001413c6a4104107e20012802402001280248200241f8016a10ce01200241f8016a200141cc006a4104107e20012802502001280258200241f8016a10ce01200241f8016a200141dc006a4104107e20012802602001280268200241f8016a10ce01200241f8016a200141ec006a4104107e200228028002210420022802f80121000240200141046a280200450d00200128020010310b0240200141146a280200450d00200128021010310b0240200141246a280200450d00200128022010310b0240200141346a280200450d00200128023010310b0240200141c4006a280200450d00200128024010310b0240200141d4006a280200450d00200128025010310b0240200141e4006a280200450d00200128026010310b200341ffffffff0071450d00200110310b20024190046a24002004ad4220862000ad840f0b20012003419cb4c0001061000b1039000b103b000b990502057f027e230041d0006b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a024020010d00200241306a22034200370300200241286a22014200370300200241186a41086a2204420037030020024200370318200241386a41a0aac800410510a7022004200241386a41086a220529000037030020022002290038370318200241386a41f4aec800410b10a7022003200529000037030020012002290038370300200241386a200241186a10970620022802382106200229023c210720034200370300200142003703002004420037030020024200370318200241386a41a0aac800410510a7022004200529000037030020022002290038370318200241386a41acafc800410e10a7022003200529000037030020012002290038370300200241086a200241186a10ab0320022903102108200228020821012002410036022020024201370318200241186a2007420020061b2207422088a7220310cb012008420020011b21082007a721042006410120061b210502402003450d00200341216c2101200521030340200241186a20034121107e200341216a21032001415f6a22010d000b0b20022008370338200241186a200241386a4108107e200235021821072002350220210802402004450d00200441216c450d00200510310b200241d0006a240020084220862007840f0b200241c4006a41193602002002412c6a41023602002002420237021c200241f4ddc4003602182002410436023c200241d4e5c4003602382002200241386a3602282002200241c8006a360240200241186a4184dec4001047000be1370c027f017e017f037e027f017e117f017e027f027e017f017e230041e0076b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a0240024002400240024002400240024020014108490d0020014108470d00200041f8fac90020011b2900002104200241f0066a22014200370300200241d8066a41106a22034200370300200241d8066a41086a22004200370300200242003703d806200241b0016a41b785c400411310a7022000200241b0016a41086a2205290000370300200220022900b0013703d806200241b0016a41ca85c400410e10a70220012005290000370300200320022900b001370300200241086a200241d8066a10ab03200241186a41106a41003602002002420837032020022002290310420020022802081b22063703302002200642018620067b7d2207370318200241b0016a200442017c220842018620087b7d20087a427f857c22081095050240024020022802b0010d0020022d00b801450d010b200241d8066a200241b0016a41880110bf091a41052109200241053a00f003024041002802809a4a4104490d00200241e8046a410c6a4124360200200241123602ec042002200241d8066a3602f0042002200241f0036a3602e80441002802fc994a210141002802f8994a210341002802849a4a2100200241a0066a41c10236020020024198066a42f58080801037030020024194066a41c5dbc3003602002002418c066a421537020020024188066a41b0dbc30036020020024180066a4202370300200241f0056a4202370300200241e8056a410c360200200241fc056a200241e8046a36020020024194dbc3003602ec05200241a4dbc3003602e405200241043602e005200341f8fac900200041024622001b200241e0056a20014180a6c00020001b28021011030020022d00f00321090b024020022802d806450d0020022802dc064102470d00200241e4066a280200450d00200241e0066a28020010310b4101210a0c060b200241386a200241c0016a41f80010bf091a4108102f2201450d072001200837030020024281808080103702bc02200220013602b8024201210b20074201520d01200129030050450d014108210c410021010c020b200241bc016a4119360200200241ec066a4102360200200242023702dc06200241f4ddc4003602d806200241043602b401200241ece5c4003602b0012002200241b0016a3602e8062002200241d8066a3602b801200241d8066a4184dec4001047000b4100210d20014101200241d8066a4100410110c005200241c8026a2007105120022802c802210e20022802cc02210f024002400240024020022802d00222010d004108211041002111410021120c010b200241186a41086a2113200e20014103746a2114200241ec066a2115200241e5066a2116200241e7066a2117410821104100210d4100211141002112200e2118034020022802b802220541786a21032018220141086a21182001290300210720022802c002210041002101024002400240024002400240024002400240024002400340024020002001470d00200241003602c002200241003602dc06200220003602d806200220053602e0062002200520004103746a3602e4062002200241b8026a3602e806200241d8026a200241d8066a10b0070c020b200141016a2101200341086a22032903002007580d000b20002001417f6a220a490d01200241003602c002200220033602e406200220053602e0062002200020016b41016a3602dc062002200a3602d8062002200241b8026a3602e806200241d8026a200241d8066a10b0070b20022802dc02211920022802d802211a0240024020022802e002221b4101460d00201b0d01200241d8066a20132007109405201633000021082017310000210720022802e806210320022802dc06211c20022802d806210020023500e106211d20022d00e0062101200241b0016a201541f40010bf091a201d200820074210868442208684210820004101470d0720084208862001ad42ff018384210b2003210c0c080b4105211c201a2903002007510d070b417f201b4101201b41016a41024b1b677641016a2201201b4d0d01200141ffffffff00712001470d1220014104742201417f4c0d122001102f2209450d13201a201b41037422056a211c200220093602f002200242003703e8022002200141047622013602f4024100211e41002103201a210003402000220a41086a2100200a290300210802402001417f6a220a2003201e6b71200a470d002001417f201c20006b410375220a41016a221f201f200a491b6a220a2001490d044100417f200a417f6a6776200a4102491b221f41016a220a201f490d04200a20014d0d002001211f0240024002400240200a20016b220a450d002001200a6a220a2001490d18200a410474211f200a41ffffffff0071200a46410374210a0240024020010d00200241003602d8060c010b200241083602e006200220093602d806200220014104743602dc060b200241b0016a201f200a200241d8066a104e20022802b801210a20022802b0014101460d01200220022802b40122093602f0022002200a410476221f3602f4020b201e20034d0d0220032001201e6b220a4f0d01200920014104746a2009200341047410bf091a2002200320016a22033602ec020c020b200a450d160c170b201e41047421012009201f200a6b221e4104746a200920016a200a41047410bf091a2002201e3602e8020b201f21010b20022802f002220920034104746a220a4100360208200a200837030020022001417f6a220a200341016a7122033602ec02200541786a22050d000b0240201941ffffffff0171450d00201a10310b0240024002400240024020022802e80222002003460d002002200a200041016a71220a3602e802200920004104746a210002400340200041086a21052000290300221d2007510d0120052802002105201d42027c21080240034002402008500d002008427f857ba72200200879a7460d020b2008427f423f2008797d423f83867c42017c21080c000b0b201d420142022005413f71ad8622087d2008427f7c2000413f7320054b221e1b7c2120024002402001417f6a22002003200a6b71450d002009450d00202020092000200a714104746a290300520d002003200a460d0120022000200a41016a713602e8020c010b200241d8066a20132020109405201633000021212017310000212020022802e806212220022802dc06211c20022802d806211f20023500e106212320022d00e0062100200241b0016a201541f40010bf091a20232021202042108684422086842121201f4101460d06200241e0056a200241b0016a41f40010bf091a0240200041ff01714102470d00200241f0036a200241e8046a41f40010bf091a4202210b4101211c0c080b200241e8046a200241e0056a41f40010bf091a200241f0036a200241e8046a41f40010bf091a200241fc026a200241f0036a41f40010bf091a02402011200d470d00200d41016a2201200d490d1b200d41017422032001200320014b1b22014104200141044b1b220141ffffff0f7120014641037421032001410774210102400240200d0d00200241003602d8060c010b200241083602e006200220103602d8062002200d4107743602dc060b200241e0056a20012003200241d8066a104e20022802e8052101024020022802e0054101470d0020010d1d0c1c0b20022802e40521102001410776210d0b201020114107746a220120213e000120012022360008200120003a0000200141076a20214230883c0000200141056a20214220883d00002001410c6a200241fc026a41f40010bf091a201141016a21110b02400240201d42012008201e1b7c22082007540d0020022802ec0221030c010b200541016a2100024020022802f40222012001417f6a220320022802ec02220120022802e8026b716b4101470d00200241e8026a10da0620022802f402417f6a210320022802ec0221010b20022003200141016a7122033602ec0220022802f00220014104746a22012000360208200120083703000b20022802f402210120022802e80222002003460d0220022001417f6a200041016a71220a3602e80220022802f002220920004104746a21000c000b0b2003200a490d010b200120034f0d012003200141c0cfc8001058000b2001200a490d060b200141ffffffff0071450d0a20022802f00210310c0a0b20214208862000ad42ff018384210b0b024002402003200a490d00200120034f0d012003200141c0cfc8001058000b2001200a490d050b0240200141ffffffff0071450d00200910310b2022210c0c070b2001417f6a200041e0cfc8001058000b41b087ca00411141988cc400103c000b41b087ca00411141a88cc4001068000b41facdc800412341d0cfc800103c000b41facdc800412341d0cfc800103c000b200241e0056a200241b0016a41f40010bf091a0240200141ff01714102470d00200241f0036a200241e8046a41f40010bf091a4202210b4101211c2003210c0c010b200241e8046a200241e0056a41f40010bf091a200241f0036a200241e8046a41f40010bf091a200241fc026a200241f0036a41f40010bf091a02402011200d470d00200d41016a2200200d490d0d200d41017422052000200520004b1b22004104200041044b1b220041ffffff0f7120004641037421052000410774210002400240200d0d00200241003602d8060c010b200241083602e006200220103602d8062002200d4107743602dc060b200241e0056a20002005200241d8066a104e20022802e8052100024020022802e0054101470d0020000d0f0c0e0b20022802e40521102000410776210d0b201020114107746a220020083e000120002003360008200020013a0000200041076a20084230883c00004105211c200041056a20084220883d00002000410c6a200241fc026a41f40010bf091a201141016a21110b201941ffffffff0171450d00201a10310b201c4105470d010b4100201241016a201b1b211220182014460d020c010b0b200f41ffffffff0171450d01200e10310c010b0240200f41ffffffff0171450d00200e10310b20022802c002450d014104211c0b0240200d41ffffff0f71450d00201010310b4101210120022802bc0241ffffffff01710d010c020b024002400240201241024f0d002010210c200d211a0c010b201120126b211802400240024002400240024020112012490d000240024020180d00200d41ffffff0f71200d470d0e200d4107742201417f4c0d0e0240024020010d004108210c0c010b2001102f220c450d100b2001410776211a410021180c010b201241ffffff0f712012470d0d20124107742201417f4c0d0d2001102f2203450d0e2010210c200d211a2003201020184107746a201241077410bf0921102001410776210d201221110b4102210320114102490d03201141077441807e6a2103200241d8066a410c6a211c200241b0016a410c6a211b0340201020036a22014188016a280000210520014180016a2d0000210020014181016a350000210820014185016a330000210720014187016a310000211d200241e8046a2001418c016a41f40010bf091a20004102460d02200220053602b801200220003a00b001200220082007201d421086844220868422083e00b101200220084230883c00b701200220084220883d00b501201b200241e8046a41f40010bf091a200141086a280000210520012d00002100200141016a3500002108200141056a3300002107200141076a310000211d200241e0056a2001410c6a41f40010bf091a20004102460d03200220053602e006200220003a00d806200220082007201d421086844220868422083e00d906200220084230883c00df06200220084220883d00dd06201c200241e0056a41f40010bf091a200241e0056a200241b0016a10ee044120102f2201450d0e2011417e6a2100200241203602f403200220013602f003200120022903e005370000200141086a200241e0056a41086a2205290300370000200141106a200241e0056a41106a220a290300370000200141186a200241e0056a41186a2201290300370000200241203602f803200241e0056a200241d8066a10ee04200241f0036a200241e0056a4120107e200241e0056a20022802f003221f20022802f80310d703200241e8046a41186a22092001290000370300200241e8046a41106a221e200a290000370300200241e8046a41086a220a2005290000370300200220022900e0053703e804024020022802f403450d00201f10310b02402000200d470d00200d41016a2201200d490d0e200d41017422002001200020014b1b22014104200141044b1b220141ffffff0f7120014641037421002001410774210102400240200d0d00200241003602e0050c010b200241083602e805200220103602e0052002200d4107743602e4050b200241f0036a20012000200241e0056a104e20022802f8032101024020022802f0034101470d0020010d100c0f0b20022802f40321102001410776210d0b201020036a220141013a0000200141016a20022903e804370000200141096a200a290300370000200141116a201e290300370000200141196a2009290300370000200141216a200241e0056a41df0010bf091a200341807f6a21032011417f6a221141014b0d000c050b0b20182011104a000b41e98fc200410341ec8fc2001068000b41e98fc200410341fc8fc2001068000b2011450d010b201041086a2800002122201041056a3300002108201041076a310000210720102d000021032010350001211d200241b0016a2010410c6a41f40010bf091a201d20082007421086844220868421210b200241d8066a200241b0016a41f40010bf091a0240200d41ffffff0f71450d00201010310b200341ff01714102460d01200241b0016a200241d8066a41f40010bf091a02402018201a470d00201a41016a2201201a490d07201a41017422002001200020014b1b22014104200141044b1b220141ffffff0f7120014641037421002001410774210102400240201a0d00200241003602d8060c010b200241d8066a41086a41083602002002200c3602d8062002201a4107743602dc060b200241e0056a20012000200241d8066a104e200241e8056a2802002101024020022802e0054101470d0020010d090c080b20022802e405210c2001410776211a0b200c20184107746a220120213e000120012022360008200120033a0000200141076a20214230883c0000200141056a20214220883d00002001410c6a200241b0016a41f40010bf091a201841016a21110b20022802bc0241ffffffff0171450d0320022802b80210310c030b41f290c2004111418491c2001068000b20022802b80210314100211a410021112001450d010b200241b0016a410c6a200c3602002002200b3702b4012002201c3602b00141032109200241033a00e005024041002802809a4a450d00200241e8046a410c6a4111360200200241123602ec042002200241b0016a3602f0042002200241e0056a3602e80441002802fc994a210141002802f8994a210341002802849a4a210020024198076a41b60236020020024190076a42f5808080103703002002418c076a41c5dbc30036020020024184076a421537020020024180076a41b0dbc300360200200241f8066a4202370300200241e8066a4202370300200241e0066a410c360200200241f4066a200241e8046a36020020024194dbc3003602e406200241a4dbc3003602dc06200241013602d806200341f8fac900200041024622001b200241d8066a20014180a6c00020001b28021011030020022802b001211c20022d00e00521090b0240201c4102470d00200241b8016a280200450d0020022802b40110310b200241b0016a200241386a41f80010bf091a4101210a0c010b201141ffffff3f712011470d0102400240201141057422010d004101211e0c010b2001102f221e450d030b02400240024002402001410576221f20114f0d00200141047622032011200320114b1b22034104200341044b1b220341ffffff3f712003462100200341057421030240024020010d00200241003602d8060c010b200241e0066a4101360200200220013602dc062002201e3602d8060b200241b0016a20032000200241d8066a104e200241b8016a280200210120022802b0014101460d0120022802b401211e2001410576211f0b200c200c20114107746a470d01410021000c020b20010d040c030b200c20114107746a210541002100201e2101200c21030340200241e0056a200310ee04200141186a200241e0056a41186a290000370000200141106a200241e0056a41106a290000370000200141086a200241e0056a41086a290000370000200120022900e005370000200041016a2100200141206a2101200520034180016a2203470d000b0b0240201a41ffffff0f71450d00200c10310b200241b0016a200241386a41f80010bf091a200241de066a200241386a41f80010bf091a4100210a0b20022802202105024020022802282201450d00200141186c21032005410c6a210103400240200128020041ffffff0f71450d002001417c6a28020010310b200141186a2101200341686a22030d000b0b024020022802242201450d00200141186c450d00200510310b02400240200a450d00200220093a003941012101410021030c010b200241b0016a200241de066a41f80010bf091a200241003602e805200242013703e005200241e0016a200241e0056a10d7044120102f2201450d022002422037023c20022001360238200241386a20024184026a4120107e200241e0056a200228023822012002280240107e0240200228023c450d00200110310b200220022903b001370338200241e0056a200241386a4108107e200220022802b801360238200241e0056a200241386a4104107e4120102f2201450d022002422037023c20022001360238200241386a200241bc016a4120107e200241e0056a200228023822012002280240107e0240200228023c450d00200110310b20022802e8052201417f4c0d0120022802e00521030240024020010d00410121050c010b2001102f2205450d030b20052003200110bf092105024020022802e405450d00200310310b200241e8006a2000360200200241e4006a201f360200200241e0006a201e360200200241d8006a2006370300200241d0006a2004370300200241c8006a2001360200200241c4006a2001360200200241c0006a200536020041002101410121030b200220013a00384101102f2200450d01200242013702dc06200220003602d806024002402001450d00200241013a00b001200241d8066a200241b0016a4101107e20022d0039200241d8066a10e3050c010b200241003a00b001200241d8066a200241b0016a4101107e200241386a41086a280200200241c8006a280200200241d8066a10ce012002200241d0006a2903003703b001200241d8066a200241b0016a4108107e2002200241d8006a2903003703b001200241d8066a200241b0016a4108107e200241e0006a200241d8066a10b1070b20023502e006210820023502d806210702402003450d000240200241c4006a280200450d00200241c0006a28020010310b200241e4006a28020041ffffff3f71450d00200241e0006a28020010310b200241e0076a240020084220862007840f0b103b000b1039000be10301027f230041106b2202240002400240024020002802004101470d002002200128021841b1b2c70041032001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041046a36020c20022002410c6a41b4b2c70010501a20022d0008210120022802042203450d02200141ff017121004101210120000d01024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d020b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010c010b2002200128021841c4b2c70041022001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200041086a36020c20022002410c6a41c8b2c70010501a20022d0008210120022802042203450d01200141ff017121004101210120000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080b200241106a2400200141ff01714100470b940201067f024002402001410c6a2802002202200128020822036b2204417f4c0d002001280210210520012802042106200128020021074108210102402004450d002004102f2201450d020b20002001360200200041086a22014100360200200041046a200441037636020020004100200441037610aa0820012802002104024020032002460d00200028020020044103746a2101034020012003290300370300200441016a2104200141086a21012002200341086a2203470d000b0b200041086a200436020002402006450d0002402007200541086a2802002203460d002005280200220120034103746a200120074103746a200641037410c0091a0b200541086a200620036a3602000b0f0b103b000b1039000b8e0101037f230041106b220224002000280200210320012000280208220010cb01024002402000450d002000410574210003404120102f2204450d022002422037020420022004360200200220034120107e2001200228020022042002280208107e02402002280204450d00200410310b200341206a2103200041606a22000d000b0b200241106a24000f0b1039000bb10804037f027e017f027e23004190056b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a20024280808080802037028c012002200136028c032002200036028803200220024188036a36028801200241086a20024188016a10ab01024020022802080d00200228028c032200200228020c2201490d00024002400240024002402001417f4c0d000240024020010d00410121030c010b200110352203450d05200228028c0321000b0240024020002001490d002003200228028803200110bf092104200228028c0322002001490d032002200020016b36028c03200220022802880320016a360288032004450d072001ad220542208620058421050240200228028c0322004108490d00200228028803220129000021062002200141086a360288032002200041786a220736028c0320074108490d002002200041706a36028c032002200141106a360288032001290008210820024180046a20024188016a10b30720022802800422000d020b2005a7450d070b200310310c060b20022002290284042209370388022009a72101200228028801280204450d0202402005a7450d00200410310b410021030240200141ffffff3f71450d00200010310b0c030b103b000b20012000419cb4c0001061000b200229028c0221090b2003450d01200220054220883e028405200220033602800520024180046a20024180056a10b4072005a72104024002402002290380044201510d0020024188036a20024188046a41f80010bf091a20024188026a41066a20024188036a41f80010bf091a20024188016a20024188026a41fe0010bf091a200241106a20024188016a41066a41f80010bf091a02402004450d00200310310b20024180046a200241106a41f80010bf091a200241a0026a20093703002002419c026a200136020020022000360298022002200837039002200220063703880220024180046a20024188026a10850641ff017121030c010b02402004450d00200310310b41042103200141ffffff3f71450d00200010310b4101102f2201450d00200242013702840420022001360280040240024020034106460d00200241013a00880220024180046a20024188026a4101107e200320024180046a10e3050c010b200241003a00880220024180046a20024188026a4101107e0b2002350288042105200235028004210920024190056a240020092005422086840f0b1039000b20024194026a411936020020024194046a41023602002002420237028404200241f4ddc400360280042002410436028c0220024184e6c40036028802200220024188026a36029004200220024188056a3602900220024180046a4184dec4001047000be80a01177f23004180016b220224002002200110ab01024002402002280200450d00200041003602000c010b0240024002400240024002402002280204220320012802002802044105762204200420034b1b22054105742204417f4c0d004101210602402005450d002004102f2206450d040b2001200128020441016a220436020402400240200420012802084b0d0020030d01410021030c070b200041003602000c030b200241306a4104722107200241c2006a21082002413b6a2109200241c9006a220a41036a210b4100210c034020024100360230200c220d41016a210c4100210e02400240034020012802002204280204220f450d01200428020022102d000021112004200f417f6a3602042004201041016a3602002007200e6a20113a00002002200e41016a22043602302004210e20044120470d000b200241e8006a41026a2204200941026a2d00003a0000200241e4006a41026a220e200841026a2d00003a0000200220072f01003b016c2002200741026a2d00003a006e200220092f00003b0168200220082f00003b01642002200a2800003602702002200b28000036007320022800372112200228013e21132002280045211420022802502115200220022d006e3a002e200220022f016c3b012c200241e0006a41026a220f20042d00003a0000200220022f01683b0160200241dc006a41026a2210200e2d00003a0000200220022f01643b015c200241d8006a41026a221120022d00723a0000200220022f01703b015820022800732116200241f0006a41026a2217200f2d00003a0000200220022f01603b0170200241ec006a41026a221820102d00003a0000200220022f015c3b016c200420112d00003a0000200220022f01583b0168200241306a41026a20022d002e3a0000200220022f012c3b0130200e20172d00003a0000200220022f01703b0164200f20182d00003a0000200220022f016c3b0160201020042d00003a0000200220022f01683b015c410021040c010b410121040b200241286a41026a220e200241306a41026a2d00003a0000200241246a41026a220f200241e4006a41026a2d00003a0000200241206a41026a2210200241e0006a41026a2d00003a00002002411c6a41026a2211200241dc006a41026a2d00003a0000200220022f01303b0128200220022f01643b0124200220022f01603b0120200220022f015c3b011c20040d02200241186a41026a2217200e2d00003a0000200241146a41026a220e200f2d00003a0000200241106a41026a220f20102d00003a00002002410c6a41026a221020112d00003a0000200220022f01283b0118200220022f01243b0114200220022f01203b0110200220022f011c3b010c02400240200d2005470d00200d4101742204200d41016a2211200420114b1b22044104200441044b1b220441ffffff3f7120044621112004410574210402400240200d0d00200241003602300c010b20024101360238200220063602302002200d4105743602340b200241f0006a20042011200241306a104e2002280278210420022802704101460d0120022802742106200441057621050b2006200d4105746a220420022f01183b0000200441026a20172d00003a0000200441096a200e2d00003a0000200420022f01143b0007200441106a200f2d00003a0000200420022f01103b000e200420123600032004201336000a20042014360011200441176a20102d00003a0000200420022f010c3b00152004201536001c20042016360018200c2003460d060c010b0b20040d030b103b000b200041003602000b200541ffffff3f71450d03200610310c030b1039000b200128020421040b2000200536020420002006360200200041086a200336020020012004417f6a3602040b20024180016a24000bd71503127f017e087f230041b0016b22022400024002400240200128020422034104490d0020012802002204280000210520012003417c6a22063602042001200441046a3602004100210720024100360268200241e8006a4104722108417b2109034020062007460d01200420076a220a41046a2d0000210b2001200320096a3602042001200a41056a360200200820076a200b3a00002002200741016a220a3602682009417f6a2109200a2107200a4120470d000b200241a8016a41026a2207200241f5006a2d00003a0000200241a4016a41026a2209200241fc006a2d00003a0000200220022f016c3b01ac01200220022d006e3a00ae012002200241f3006a2f00003b01a8012002200241fa006a2f01003b01a401200241f6006a2801002106200228006f2108200241fd006a280000210c200220024181016a28000036029c01200220024184016a28000036009f01200241e8006a41206a280200210d200220022d00ae013a0066200220022f01ac013b016420024198016a41026a220b20072d00003a0000200220022f01a8013b01980120024194016a41026a220720092d00003a0000200220022f01a4013b01940120024190016a41026a220920022d009e013a0000200220022f019c013b019001200228009f01210e200241e0006a41026a2204200b2d00003a0000200220022f0198013b0160200241dc006a41026a220b20072d00003a0000200220022f0194013b015c200241d8006a41026a220720092d00003a0000200220022f0190013b0158200220022d00663a0056200220022f01643b0154200241d0006a41026a220920042d00003a0000200220022f01603b0150200241cc006a41026a2204200b2d00003a0000200220022f015c3b014c200241c8006a41026a220b20072d00003a0000200220022f01583b0148200220022d00563a0046200220022f01543b0144200241c0006a41026a20092d00003a0000200220022f01503b01402002413c6a41026a20042d00003a0000200220022f014c3b013c200241386a41026a200b2d00003a0000200220022f01483b013841002109200241003602682003200a6b2107200241e8006a41047221030240034020074104460d012001280200220a2d0000210b20012007417b6a3602042001200a41016a360200200320096a200b3a00002002200941016a220a3602682007417f6a2107200a2109200a4120470d000b200241a8016a41026a2209200241f5006a2d00003a0000200241a4016a41026a220a200241fc006a2d00003a0000200220022f016c3b01ac01200220022d006e3a00ae012002200241f3006a2f00003b01a8012002200241fa006a2f01003b01a401200241f6006a280100210f200228006f2110200241fd006a2800002111200220024181016a28000036029c01200220024184016a28000036009f0120024188016a2802002112200220022d00ae013a0066200220022f01ac013b016420024198016a41026a220b20092d00003a0000200220022f01a8013b01980120024194016a41026a2209200a2d00003a0000200220022f01a4013b01940120024190016a41026a220a20022d009e013a0000200220022f019c013b019001200228009f012113200241e0006a41026a2203200b2d00003a0000200220022f0198013b0160200241dc006a41026a220b20092d00003a0000200220022f0194013b015c200241d8006a41026a2209200a2d00003a0000200220022f0190013b0158200241d4006a41026a20022d00663a0000200220022f01643b0154200241d0006a41026a20032d00003a0000200220022f01603b0150200241cc006a41026a200b2d00003a0000200220022f015c3b014c200241c8006a41026a20092d00003a0000200220022f01583b01482007417c6a4108490d022001280200220329000021142001200741746a22093602042001200341086a220a36020020094104490d02200a28000021152001200741706a3602042001200a41046a3602004100210920024100360268200241e8006a4104722104034020074110460d03200320096a220a410c6a2d0000210b20012007416f6a3602042001200a410d6a360200200420096a200b3a00002002200941016a220a3602682007417f6a2107200a2109200a4120470d000b200241a8016a41026a2207200241f5006a2d00003a0000200241a4016a41026a2201200241fc006a2d00003a0000200220022f016c3b01ac01200220022d006e3a00ae012002200241f3006a2f00003b01a8012002200241fa006a2f01003b01a401200241f6006a2801002109200228006f210a200241fd006a280000210b200220024181016a28000036029c01200220024184016a28000036009f0120024188016a2802002103200220022d00ae013a0066200220022f01ac013b016420024198016a41026a220420072d00003a0000200220022f01a8013b01980120024194016a41026a220720012d00003a0000200220022f01a4013b01940120024190016a41026a220120022d009e013a0000200220022f019c013b019001200228009f012116200241e0006a41026a221720042d00003a0000200220022f0198013b0160200241dc006a41026a220420072d00003a0000200220022f0194013b015c200241d8006a41026a220720012d00003a0000200220022f0190013b0158200220022d00663a0036200220022f01643b0134200241306a41026a220120172d00003a0000200220022f01603b01302002412c6a41026a221720042d00003a0000200220022f015c3b012c200241286a41026a220420072d00003a0000200220022f01583b0128200220022d00463a0026200220022f01443b0124200241206a41026a2207200241c0006a41026a2d00003a0000200220022f01403b01202002411c6a41026a22182002413c6a41026a2d00003a0000200220022f013c3b011c200241186a41026a2219200241386a41026a2d00003a0000200220022f01383b01182002200241d4006a41026a2d00003a0016200220022f01543b0114200241106a41026a221a200241d0006a41026a2d00003a0000200220022f01503b01102002410c6a41026a221b200241cc006a41026a2d00003a0000200220022f014c3b010c200241086a41026a221c200241c8006a41026a2d00003a0000200220022f01483b0108200041106a2015360200200020143703082000200a360017200020022f01343b0114200041166a20022d00363a00002000200936001e200020022f01303b001b2000411d6a20012d00003a00002000200b360025200020022f012c3b0022200041246a20172d00003a00002000412b6a20042d00003a0000200020022f01283b0029200041386a2005360200200041306a20033600002000201636002c2000413e6a20022d00263a0000200020022f01243b013c2000200836003f200041c5006a20072d00003a0000200020022f01203b004320002006360046200041cc006a20182d00003a0000200020022f011c3b004a2000200c36004d200041d3006a20192d00003a0000200020022f01183b0051200041d8006a200d3600002000200e360054200041de006a20022d00163a0000200020022f01143b015c2000201036005f200041e5006a201a2d00003a0000200020022f01103b00632000200f360066200041ec006a201b2d00003a0000200020022f010c3b006a2000201136006d200041f3006a201c2d00003a0000200020022f01083b0071200041f8006a201236000020002013360074200042003703000c030b200042013703000c020b200042013703000c010b200042013703000b200241b0016a24000bbf16030a7f047e047f230041a0026b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210402400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a2002428080808080203702ac012002200436028801200220024188016a3602a8012002200136028c01200241003602d0012001417f6a2100200241d0016a4104722105410021030240024002400240024002400340200241003a007420012003460d012002200420036a220641016a3602880120062d000021062002200036028c01200520036a20063a00002002200341016a22063602d0012000417f6a21002006210320064120470d000b20024180016a41026a2203200241dd016a2d00003a0000200241fc006a41026a2200200241e4016a2d00003a0000200220022f01d4013b018401200220022d00d6013a0086012002200241db016a2f00003b0180012002200241e2016a2f01003b017c200241de016a280100210720022800d7012108200241e5016a28000021092002200241e9016a2800003602742002200241ec016a280000360077200241f0016a280200210a200220022d0086013a0066200220022f0184013b0164200241f0006a41026a220620032d00003a0000200220022f0180013b0170200241ec006a41026a220320002d00003a0000200220022f017c3b016c200241e8006a41026a220020022d00763a0000200220022f01743b01682002280077210b200241e0006a41026a220120062d00003a0000200220022f01703b0160200241dc006a41026a220620032d00003a0000200220022f016c3b015c200241d8006a41026a220320002d00003a0000200220022f01683b0158200241d4006a41026a20022d00663a0000200220022f01643b0154200241d0006a41026a20012d00003a0000200220022f01603b0150200241cc006a41026a20062d00003a0000200220022f015c3b014c200241c8006a41026a20032d00003a0000200220022f01583b0148200241086a200241a8016a10ab0120022802080d00200228028c012206200228020c2203490d002003417f4c0d020240024020030d00410121000c010b200310352200450d04200228028c0121060b024020062003490d002000200228028801200310bf092101200228028c0122062003490d052002200620036b36028c01200220022802880120036a360288012001450d012003ad220c422086200c84210c0240200228028c0122064108490d002002280288012203290000210d2002200341086a360288012002200641786a220436028c0120044108490d002002200641706a36028c012002200341106a360288012003290008210e200241d0016a200241a8016a10b30720022802d0012203450d0020030d030b200ca7450d010b200010310b200220022d00423a0032200220022f013c3b012c200220022f01383b01280c040b200241d8016a350200210f20022802d40121102002413c6a41026a2206200241d0006a41026a2d00003a0000200241386a41026a2204200241cc006a41026a2d00003a0000200241346a41026a2205200241c8006a41026a2d00003a0000200220022f01543b0140200220022f01503b013c200220022f014c3b0138200220022f01483b01342002200241d4006a41026a2d00003a0042200220022d00423a0032200220022f01403b01302002412c6a41026a221120062d00003a0000200220022f013c3b012c200241286a41026a220620042d00003a0000200220022f01383b0128200241246a41026a220420052d00003a0000200220022f01343b0124200220022d00323a0022200220022f01303b01202002411c6a41026a220520112d00003a0000200220022f012c3b011c200241186a41026a221120062d00003a0000200220022f01283b0118200241146a41026a220620042d00003a0000200220022f01243b01140240024020022802a8012802040d0020024184016a41026a20052d00003a000020024180016a41026a20112d00003a0000200241fc006a41026a20062d00003a0000200220022d00223a0076200220022f01203b0174200220022f011c3b018401200220022f01183b018001200220022f01143b017c0c010b0240200ca7450d00200110310b41002100201041ffffff3f71450d00200310310b2000450d03200241f0006a41026a220620022d00763a0000200241ec006a41026a220120024184016a41026a22112d00003a0000200241e8006a41026a220420024180016a41026a22122d00003a0000200241e4006a41026a2205200241fc006a41026a22132d00003a0000200220022f01743b0170200220022f0184013b016c200220022f0180013b0168200220022f017c3b0164200241f4006a41026a20062d00003a0000200220022f01703b0174201120012d00003a0000200220022f016c3b018401201220042d00003a0000200220022f01683b018001201320052d00003a0000200220022f01643b017c2002200836008b01200220062d00003a008a01200220022f01703b01880120024191016a20012d00003a00002002200736019201200220022f016c3b008f0120024198016a20042d00003a00002002200936009901200220022f01683b0196012002419f016a20052d00003a0000200220022f01643b009d012002200a3602a4012002200b3602a001200241d8016a200c370300200220003602d401200241003a00d001200241c0016a200f370300200241bc016a2010360200200220033602b8012002200e3703b0012002200d3703a801200220024188016a200241d0016a200241a8016a10d50320022d00012103024020022d00004101710d00200341017121004106210320000d00200241b3016a2008360000200241b7016a20022f0184013b0000200241ba016a2007360100200241be016a20022f0180013b0100200241c1016a2009360000200241b2016a200241f4006a41026a2d00003a0000200241b9016a20024184016a41026a2d00003a0000200241c0016a20024180016a41026a2d00003a0000200241173602ac01200241a085c4003602a801200220022f01743b01b001200241a8016a41206a200b360200200241cc016a200a360200200241c7016a200241fc006a41026a2d00003a0000200241c5016a20022f017c3b000041042103200241043a006041002802809a4a4104490d0020024188016a410c6a41253602002002411236028c012002200241a8016a360290012002200241e0006a3602880141002802fc994a210341002802f8994a210041002802849a4a210620024190026a41c10236020020024188026a42f58080801037030020024184026a41c5dbc300360200200241fc016a4215370200200241f8016a41b0dbc300360200200241d0016a41206a4202370300200241e0016a4202370300200241d8016a410c360200200241ec016a20024188016a36020020024194dbc3003602dc01200241a4dbc3003602d401200241043602d001200041f8fac900200641024622061b200241d0016a20034180a6c00020061b28021011030020022d006021030b4101102f2200450d01200242013702d401200220003602d00102400240200341ff01714106460d00200241013a0074200241d0016a200241f4006a4101107e2003200241d0016a10e3050c010b200241003a0074200241d0016a200241f4006a4101107e0b20023502d801210c20023502d001210d200241a0026a2400200d200c422086840f0b103b000b1039000b20032006419cb4c0001061000b200241b4016a4119360200200241e4016a4102360200200242023702d401200241f4ddc4003602d001200241043602ac0120024198e6c4003602a8012002200241a8016a3602e001200220024198026a3602b001200241d0016a4184dec4001047000bc411020c7f027e230041e0016b22022400410041002802849a4a2203410120031b3602849a4a02400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a2002410036022002402001450d002002200041f8fac90020011b22032d00003a00242002410136022020014101460d00200220032d00013a00252002410236022020014102460d00200220032d00023a00262002410336022020014103460d00200220032d00033a00272002410436022020014104460d00200241286a20032d00043a00002002410536022020014105460d00200241296a20032d00053a00002002410636022020014106460d002002412a6a20032d00063a00002002410736022020014107460d002002412b6a20032d00073a00002002410836022020014108460d002002412c6a20032d00083a00002002410936022020014109460d002002412d6a20032d00093a00002002410a3602202001410a460d002002412e6a20032d000a3a00002002410b3602202001410b460d002002412f6a20032d000b3a00002002410c3602202001410c460d00200241306a20032d000c3a00002002410d3602202001410d460d00200241316a20032d000d3a00002002410e3602202001410e460d00200241326a20032d000e3a00002002410f3602202001410f460d00200241336a20032d000f3a00002002411036022020014110460d00200241346a20032d00103a00002002411136022020014111460d00200241356a20032d00113a00002002411236022020014112460d00200241366a20032d00123a00002002411336022020014113460d00200241376a20032d00133a00002002411436022020014114460d00200241386a20032d00143a00002002411536022020014115460d00200241396a20032d00153a00002002411636022020014116460d002002413a6a20032d00163a00002002411736022020014117460d002002413b6a20032d00173a00002002411836022020014118460d002002413c6a20032d00183a00002002411936022020014119460d002002413d6a20032d00193a00002002411a3602202001411a460d002002413e6a20032d001a3a00002002411b3602202001411b460d002002413f6a20032d001b3a00002002411c3602202001411c460d00200241c0006a20032d001c3a00002002411d3602202001411d460d00200241c1006a20032d001d3a00002002411e3602202001411e460d00200241c2006a20032d001e3a00002002411f3602202001411f460d00200241c3006a20032d001f3a000020024120360220200241b8016a41026a22032002412d6a2d00003a0000200220022f01243b01c801200220022d00263a00ca0120022002412b6a2f00003b01b801200228002721042002412e6a280100210520024188016a41026a2200200241346a2d00003a00002002200241326a2f01003b018801200241356a2800002106200241f8006a41026a22072002413b6a2d00003a00002002200241396a2f00003b0178200241206a41206a28020021082002413c6a2802002109200220022d00ca013a001a200220022f01c8013b0118200241a8016a41026a220a20032d00003a0000200220022f01b8013b01a80120024198016a41026a220b20002d00003a0000200220022f0188013b0198012002411c6a41026a220c20072d00003a0000200220022f01783b011c200241146a41026a2207200a2d00003a0000200220022f01a8013b0114200241106a41026a220a200b2d00003a0000200220022f0198013b01102002410c6a41026a220b200c2d00003a0000200220022f011c3b010c20014120470d00200241206a41026a220120022d001a3a0000200241c8016a41026a220d20072d00003a00002003200a2d00003a00002000200b2d00003a0000200220022f01183b0120200220022f01143b01c801200220022f01103b01b801200220022f010c3b018801200c20012d00003a0000200220022f01203b011c200241186a41026a2201200d2d00003a0000200220022f01c8013b0118200720032d00003a0000200220022f01b8013b0114200a20002d00003a0000200220022f0188013b0110200220043600232002200c2d00003a0022200220022f011c3b0120200241296a20012d00003a00002002200536012a200220022f01183b0027200241206a41106a20072d00003a000020022006360031200220022f01143b012e200241376a200a2d00003a0000200220022f01103b00352002200836023c20022009360238200241f8006a41f3c6c000410610a70220024188016a41c88ec900410710a702024002404120102f2201450d00200242203702ac01200220013602a801200241a8016a200241206a4120107e200241b8016a20022802a801220120022802b001220310b707200241d4016a200120036a360200200220013602d0012002200241b8016a41106a3602cc012002200241b8016a3602c80120024198016a200241c8016a108801024020022802ac01450d00200110310b20022802a001220341206a2201417f4c0d010240024020010d00410121000c010b2001102f2200450d010b200241003602d001200220013602cc01200220003602c801200241c8016a200241f8006a4110107e200241c8016a20024188016a4110107e200241c8016a20022802980122012003107e0240200228029c01450d00200110310b200241206a20022802c801220320022802d001109403200241e8006a28020021012002290320210e024020022802cc01450d00200310310b4104102f2203450d002002420437022420022003360220200220014100200e4201511b3602c801200241206a200241c8016a4104107e2002350228210e2002350220210f200241e0016a2400200f200e422086840f0b1039000b103b000b200241d4016a4119360200200241346a410236020020024202370224200241f4ddc400360220200241043602cc01200241b8e6c4003602c8012002200241c8016a3602302002200241d8016a3602d001200241206a4184dec4001047000b2c0020002002ad4220862001ad84100f2201290000370000200041086a200141086a290000370000200110310bb10602027f057e230041a0126b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200241e0086a2000200110b904024020022903c8094203510d00200241e0086a41d8086a2802002101200241086a200241e0086a41d80810bf091a200241e0086a200241086a41d80810bf091a200241c0116a200241f8096a2203108c0242002104200241d0116a200120022903c01122054200420020022d00c91141004720022d00c811220010850542002106024020022903d0114201520d00427f427f200241e0116a2903002206200241f0116a2903007c20022903d8112204200241e8116a2903007c22072004542201ad7c22042001200420065420042006511b22011b220620024180126a2903007c427f200720011b2204200241f8116a2903007c22072004542201ad7c22042001200420065420042006511b22011b2106427f200720011b21040b20024190126a29030021072002290388122108024020022903c8094202510d0020022d00e00841ff01714102470d0020022802e808450d0020022802e40810310b20031096052002410036021020024201370308200220053703e008200241086a200241e0086a4108107e024002400240024020000e03000102030b200241003a00e008200241086a200241e0086a4101107e0c020b200241013a00e008200241086a200241e0086a4101107e0c010b200241023a00e008200241086a200241e0086a4101107e0b2002427f200620077c200420087c22052004542201ad7c22042001200420065420042006511b22011b3703e8082002427f200520011b3703e008200241086a200241e0086a4110107e2002350210210620023502082104200241a0126a240020042006422086840f0b200241dc116a41193602002002411c6a41023602002002420237020c200241f4ddc400360208200241043602d411200241d0e6c4003602d0112002200241d0116a360218200220024198126a3602d811200241086a4184dec4001047000bba0502027f027e230041a0126b22022400410041002802849a4a2203410120031b3602849a4a200041f8fac90020011b210002400240024020030e020001020b410041d8fac9003602fc994a410041d7fac9003602f8994a410041023602849a4a0c010b034041002802849a4a4101460d000b0b410041053602809a4a200241a8096a2000200110b904024020022903900a4203510d00200241a8096a41d8086a2802002101200241d0006a200241a8096a41d80810bf091a200241a8096a200241d0006a41d80810bf091a20024188126a200241c00a6a2203108c02200241086a20012002290388124200420020022d00911241004720022d009012108505024020022903900a4202510d0020022d00a80941ff01714102470d0020022802b009450d0020022802ac0910310b200310960520024100360258200242013703500240024020022903084201510d00200241003a00a809200241d0006a200241a8096a4101107e0c010b200241013a00a809200241d0006a200241a8096a4101107e200229031021042002200241086a41106a2903003703b009200220043703a809200241d0006a200241a8096a4110107e200241206a29030021042002200241286a2903003703b009200220043703a809200241d0006a200241a8096a4110107e200241306a29030021042002200241386a2903003703b009200220043703a809200241d0006a200241a8096a4110107e0b200229034021042002200241c8006a2903003703b009200220043703a809200241d0006a200241a8096a4110107e2002350258210420023502502105200241a0126a240020052004422086840f0b200241146a4119360200200241e4006a410236020020024202370254200241f4ddc4003602502002410436020c200241e4e6c4003602082002200241086a360260200220024198126a360210200241d0006a4184dec4001047000b850201047f230041d0006b22022400200241b4eac400410f10a702200241106a419ca6c500410c10a702200220013703302002200241306a410810c802370338200241c0006a410c6a200241306a41086a3602002002200241386a41086a3602442002200241306a3602482002200241386a360240200241206a200241c0006a108801024002402002280228220341206a2204417f4c0d000240024020040d00410121050c010b2004102f2205450d020b200041003602082000200436020420002005360200200020024110107e2000200241106a4110107e2000200228022022042003107e02402002280224450d00200410310b200241d0006a24000f0b103b000b1039000b130020004117360204200041d8eac4003602000bdc0102037f017e230041306b22012400200141186a22024200370300200141106a22034200370300200141086a420037030020014200370300200141d7b2c800410710a702200141206a41def0c100410a10a7022002200141206a41086a29000037030020032001290020370300200141206a200110cf0420012802202202410120021b21030240024002402001290224420020021b2204422088a720004b0d0041002100200442ffffff3f8350450d010c020b2000200320004105746a10d0042100200442ffffff3f83500d010b200310310b200141306a240020000b13002000410c360204200041d8fdc4003602000bb70501047f230041c0006b220124002001410036022020014201370318024002400240024002400240200028020022020e050001020304050b200141013a0008200141186a200141086a4101107e20002802042103200141186a2000410c6a280200220410cb010240200441286c2204450d00200320046a21040340200141186a20034120107e2001200341206a290300370308200141186a200141086a4108107e200341286a22032004470d000b0b2001200041106a280200360208200141186a200141086a4104107e0c040b200141023a0008200141186a200141086a4101107e20012000280204360208200141186a200141086a4104107e200041086a2802002103200141186a200041106a280200220410cb010240200441286c2204450d00200320046a21040340200141186a20034120107e2001200341206a290300370308200141186a200141086a4108107e200341286a22032004470d000b0b2001200041146a280200360208200141186a200141086a4104107e0c030b200141033a0008200141186a200141086a4101107e2001200041086a290300370308200141186a200141086a4108107e0c020b200141043a0008200141186a200141086a4101107e20012000280204360208200141186a200141086a4104107e0c010b200141053a0008200141186a200141086a4101107e20012000280204360208200141186a200141086a4104107e0b200141136a200141186a41086a2802003600002001200129031837000b200141186a410c6a2001410f6a290000370000200141c6a4b9da04360019200141023a00182001200129000837001d200141186a10d80202400240024020020e020001020b200041086a2802002203450d01200341286c450d01200028020410310c010b2000410c6a2802002203450d00200341286c450d00200041086a28020010310b200141c0006a24000b860201037f230041d0006b22022400200241086a41f9c6c000410410a702200241186a41d486c500411110a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b1800200020014101472003ad4220862002ad84101d109c090b8d0101017f230041206b22062400200641086a2003109e0920004101472002ad4220862001ad84200641186a200641106a2200200628020822014101461b2903002005ad4220862004ad84101c210202402001450d002000280200450d00200628020c10310b024020032802002201450d00200341046a280200450d00200110310b200641206a240020024101460bec0505017f017e097f027e027f230041306b2201240002400240101f2202422088a722030d002001200336020c200141013602080c010b2001200336020c20012002a7220436020820042d0000210520012003417f6a36020c2001200441016a3602080240024002400240024020050e020001050b200141206a200141086a109d0920012802202206450d04200141286a2802002107200128022421082001200141086a10bb0120012802000d03024020012802042209200128020c410c6e2205200520094b1bad420c7e2202422088a70d002002a72205417f4c0d000240024020050d004104210a0c010b2005102f220a450d040b2005410c6ead2102024002402009450d000340200141206a200141086a109d0902402001280220220b0d0002402002422088a72205450d002005410c6c2109200a210503400240200541046a280200450d00200528020010310b2005410c6a2105200941746a22090d000b0b2002a72205450d082005410c6c450d08200a10310c080b2001290224210c02402002422088220da722052002a7470d00200541016a220e2005490d042005410174220f200e200e200f491b220e4104200e41044b1bad420c7e220d422088a745410274210e200da7210f0240024020050d00200141003602200c010b200141043602282001200a36022020012005410c6c3602240b200141106a200f200e200141206a104e2001280218210e20012802104101460d032001280214210a2002422088220da72105200e410c6ead21020b200a2005410c6c6a2205200c3702042005200b360200200d422086200242ffffffff0f83844280808080107c21022009417f6a22090d000b0b200a450d0520060d030c060b200e0d030b103b000b410021060b2000200836020420002006360200200041106a20023702002000410c6a200a360200200041086a200736020002402003450d00200410310b200141306a24000f0b1039000b2008450d00200610310b41b5f1c900412e200141206a41e4f1c90041f4f1c9001041000bad0c03017f017e127f230041c0016b220524002005200136020c024002402005410c6a20022004ad4220862003ad8410082206422088a722030d00410121070c010b2006a721070b02402003450d00410021020240024020072d00000e020100020b4100210220054100360230200741016a21042003417f6a2101200541306a4104722108034020012002460d02200820026a200420026a2d00003a00002005200241016a220336023020032102200341c000470d000b200520052f01343b01bc01200520052d00363a00be0120052800372104200541b8016a41026a22022005413d6a2d00003a000020052005413b6a2f00003b01b8012005413e6a2801002101200541b4016a41026a2203200541c4006a2d00003a00002005200541c2006a2f01003b01b401200541c5006a2800002108200541b0016a41026a2209200541cb006a2d00003a00002005200541c9006a2f00003b01b001200541cc006a280200210a200541ac016a41026a220b200541d2006a2d00003a00002005200541d0006a2f01003b01ac01200541d3006a280000210c200541a8016a41026a220d200541d9006a2d00003a00002005200541d7006a2f00003b01a801200541da006a280100210e200541a0016a41026a220f200541e0006a2d00003a00002005200541de006a2f01003b01a001200541e1006a28000021102005200541ec006a290000370097012005200541e5006a29000037039001200520052d00be013a002e200520052f01bc013b012c2005418c016a41026a221120022d00003a0000200520052f01b8013b018c0120054188016a41026a221220032d00003a0000200520052f01b4013b01880120054184016a41026a221320092d00003a0000200520052f01b0013b01840120054180016a41026a2214200b2d00003a0000200520052f01ac013b018001200541fc006a41026a2215200d2d00003a0000200520052f01a8013b017c200541f8006a41026a2216200f2d00003a0000200520052f01a0013b0178200541f4006a41026a221720052d0092013a0000200520052f0190013b01742005290097012106200528009301210f200541286a41026a221820112d00003a0000200520052f018c013b0128200541246a41026a221120122d00003a0000200520052f0188013b0124200541206a41026a221220132d00003a0000200520052f0184013b01202005411c6a41026a221320142d00003a0000200520052f0180013b011c200541186a41026a221420152d00003a0000200520052f017c3b0118200541146a41026a221520162d00003a0000200520052f01783b0114200541106a41026a221620172d00003a0000200520052f01743b0110200541306a41026a20052d002e3a0000200520052f012c3b013020054190016a41026a20182d00003a0000200520052f01283b019001200541bc016a41026a20112d00003a0000200520052f01243b01bc01200220122d00003a0000200520052f01203b01b801200320132d00003a0000200520052f011c3b01b401200920142d00003a0000200520052f01183b01b001200b20152d00003a0000200520052f01143b01ac01200d20162d00003a0000200520052f01103b01a801410121020b200020023a0000200020052f01303b0001200041046a2004360000200041086a20052f0190013b00002000410b6a20013600002000410f6a20052f01bc013b0000200041126a2008360000200041166a20052f01b8013b0000200041036a200541306a41026a2d00003a00002000410a6a20054190016a41026a2d00003a0000200041116a200541bc016a41026a2d00003a0000200041186a200541b8016a41026a2d00003a0000200041196a200a360000200041206a200c360000200041276a200e3600002000412e6a20103600002000411f6a200541b4016a41026a2d00003a00002000411d6a20052f01b4013b0000200041266a200541b0016a41026a2d00003a0000200041246a20052f01b0013b00002000412d6a200541ac016a41026a2d00003a00002000412b6a20052f01ac013b0000200041346a200541a8016a41026a2d00003a0000200041326a20052f01a8013b0000200041396a2006370000200041356a200f36000020071031200541c0016a24000f0b41b5f1c900412e200541a0016a41e4f1c90041f4f1c9001041000b9e0603077f017e077f23004190016b22022400024002402000410c6a2802002203417f4c0d0020002802042104200028020021050240024020030d00410121060c010b2003102f2206450d020b20062004200310bf092107200041186a2802002208ad420c7e2209422088a70d002009a72204417f4c0d000240024020040d002004410c6e210a4104210b0c010b2000280210210c2004102f220b450d022004410c6e210a2004410c490d00200841ffffffff0371210d200b2106200a210e0340200d450d01200c41086a2802002204417f4c0d02200c280200210f0240024020040d00410121100c010b2004102f2210450d040b2010200f200410bf09210f200641086a2004360200200641046a20043602002006200f360200200c410c6a210c2006410c6a2106200d417f6a210d200e417f6a220e0d000b0b200241286a2008360200200241106a41146a200a360200200241206a200b360200200241106a410c6a2003360200200241186a22042003360200200241106a41306a200041306a290200370300200241106a41386a200041386a290200370300200241106a41c0006a200041c0006a290200370300200241106a41c8006a200041c8006a290200370300200241106a41d0006a200041d0006a290200370300200241106a41d8006a200041d8006a290200370300200241106a41e0006a200041e0006a2902003703002002200736021420022005360210200220002802243602342002200029021c37022c200220002902283703382002410c6a412636020020024104360204200241ec8ac5003602002001411c6a28020021062002200241106a3602082001280218210c200241f8006a41146a41023602002002420237027c200241f48ac5003602782002200236028801200c2006200241f8006a1040210c02402004280200450d00200228021410310b024020022802282206450d00200228022021042006410c6c210603400240200441046a280200450d00200428020010310b2004410c6a2104200641746a22060d000b0b024020022802242204450d002004410c6c450d00200228022010310b20024190016a2400200c0f0b103b000b1039000b1d0020004101472002ad4220862001ad842004ad4220862003ad84101e0bbc0201037f23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002802002104410021000340200220006a41ff006a2004410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0220014181c6c0004102200220006a4180016a410020006b105621000c010b2000280200210402402003412071450d00410021000340200220006a41ff006a2004410f712203413072200341376a2003410a491b3a00002000417f6a2100200441047622040d000b20004180016a22044181014f0d0320014181c6c0004102200220006a4180016a410020006b105621000c010b2004ad2001105321000b20024180016a240020000f0b200441800141bc89c0001061000b200441800141bc89c0001061000b980201027f230041206b220224002002200128021841f8fac90041002001411c6a28020028020c1100003a00102002200136020841012101200241013a00112002410036020c200220003602182002200041286a36021c200241086a200241186a41848bc50010502002411c6a41948bc50010501a20022d0010210002400240200228020c22030d00200021010c010b0240200041ff01710d00024020034101470d0020022d001141ff0171450d00200228020822002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280208220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00100b200241206a2400200141ff01714100470b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d002002109e070b0f0b200041086a10ad01200041046a220228020010c807200228020010310bcb0202017f017e230041106b220224002001200041c8006a4120107e200041e8006a200110e101200029030021032002200041086a29030037030820022003370300200120024110107e200029031021032002200041186a29030037030820022003370300200120024110107e20022000280230360200200120024104107e200029032021032002200041286a29030037030820022003370300200120024110107e0240024002400240024020002802340e03000102040b200241003a0000200120024101107e0c030b200241013a0000200120024101107e2002200041386a2802003602000c010b200241023a0000200120024101107e2002200041386a2802003602000b200120024104107e0b2002200028023c360200200120024104107e20022000280240360200200120024104107e20022000280244360200200120024104107e200241106a24000bb50504047f027e027f017e23004190016b220324000240024002404120102f2204450d002003422037020c20032004360208200341086a20014120107e2003280208210120032802102104200341186a200210cc072003200436022c20032001360228200320032802202202360234200320032802182205360230200341386a200520022001200410a40802400240200328023822040d00410021020c010b200328023c21062003200341386a41086a280200220236024c200320043602480240024020024110490d002003200241706a36024c2003200441106a360248200441086a2900002107200429000021082003200341c8006a10bb0120032802000d00200328024c22092003280204220a490d00200a417f4c0d0402400240200a0d00410121020c010b200a10352202450d04200328024c21090b02402009200a490d0020022003280248200a10bf091a200328024c2209200a490d06200aad220b422086200b84210b20032009200a6b36024c20032003280248200a6a3602480c020b200210310b410021022003410036025820034201370350200341ec006a410c3602002003410c3602642003200341286a3602682003200341306a3602602003200341d0006a3602742003418c016a41023602002003420237027c20034180b1c8003602782003200341e0006a36028801200341f4006a41d8ddc900200341f8006a10401a2003280250200328025810d90402402003280254450d00200328025010310b0b2006450d00200410310b0240024020020d00200042003703082000420037030020004201370310200041186a41003602000c010b200020083703002000200236021020002007370308200041146a200b3702000b0240200328021c450d00200510310b0240200328020c450d00200110310b20034190016a24000f0b1039000b103b000b200a2009419cb4c0001061000bc20202067f017e230041c0006b22022400200128020821032001280204210420012802002101024002404120102f2205450d002002422037020420022005360200200220004120107e2002280208210520022802002100200241106a200128020010cc072003280204220641146a2201417f4c0d0120032802002107200428020021030240024020010d00410121040c010b2001102f2204450d010b200241003602282002200136022420022004360220200329030021082002200341086a29030037033820022008370330200241206a200241306a4110107e20072006200241206a10cd012002280210220120022802182000200520022802202203200228022810a50802402002280224450d00200310310b02402002280214450d00200110310b02402002280204450d00200010310b200241c0006a24000f0b1039000b103b000b890201027f230041c0006b220224002002410036021020024201370308200241086a41eb8bc5004109107e02404104102f2203450d002002420437021c200220033602182002200136023c200241186a2002413c6a4104107e200241086a200228021822012002280220107e0240200228021c450d00200110310b200241186a200228020822032002280210109a014120102f2201450d0020012002290018370000200042a0808080800437020420002001360200200141186a200241186a41186a290000370000200141106a200241186a41106a290000370000200141086a200241186a41086a2900003700000240200228020c450d00200310310b200241c0006a24000f0b1039000bb10402027f027e23004180016b220524002005200236021420052001360210200541d8006a200541106a10b501200541386a41086a2201200541e1006a290000370300200541386a41106a2202200541e9006a290000370300200541386a41186a2206200541f1006a29000037030020052005290059370338024002400240024002400240024020052d00584101460d00200541186a41186a2006290300370300200541186a41106a2002290300370300200541186a41086a200129030037030020052005290338370318200520033602582005200436025c20044110490d032005200441706a36025c2005200341106a360258200341086a290000210720032900002108200541086a200541d8006a10bb0120052802080d03200528025c2204200528020c2203490d032003417f4c0d050240024020030d00410121010c010b200310352201450d07200528025c21040b20042003490d0220012005280258200310bf092104200528025c220120034f0d0120032001419cb4c0001061000b200041003602300c030b2005200120036b36025c2005200528025820036a3602582004450d01200020083703202000200529031837000020002003ad220842208620088437023420002004360230200041286a2007370300200041186a200541186a41186a290300370000200041106a200541186a41106a290300370000200041086a200541186a41086a2903003700000c020b200110310b200041003602300b20054180016a24000f0b103b000b1039000b800803077f027e027f230041a0016b22022400200141186a2103200141086a21042001411c6a210502400240024003400240024020012d0029450d00200141003a002920012802202206417f4c0d03200128021821070240024020060d00410121080c010b2006102f2208450d050b20082007200610bf091a2006ad220942208620098421090c010b200241d0006a200128020c20012802142001280218200128022010c0084100210820022802502206450d000240200428020022072002290254220a422088a74b0d0020012802002006200710c2090d0020062108200a21090c010b200aa7450d00200610310b024002400240024020080d00200041003602300c010b02402005280200450d00200328020010310b20012008360218200520093702002002200128020c200128021420082009422088a710a40820022802002208450d01200228020821072002280204210b024020012d0028450d00200128020c20012802142001280218200128022010a6080b2001280220220c20042802002206490d062002200128021820066a200c20066b2008200720012802241104002002280230450d0220002002290300370300200041386a200241386a290300370300200041306a200241306a290300370300200041286a200241286a290300370300200041206a200241206a290300370300200041186a200241186a290300370300200041106a200241106a290300370300200041086a200241086a290300370300200b450d00200810310b200241a0016a24000f0b41002802809a4a450d012002410e3602442002200336024041002802fc994a210841002802f8994a210641002802849a4a2107200241a30536029001200242e48080801037038801200241eabdc700360284012002421637027c200241d4bdc7003602782002420137037020024201370360200241acbdc70036025c20024116360258200241d4bdc7003602542002410136025020084180a6c000200741024622071b28021021082002200241c0006a36026c200641f8fac90020071b200241d0006a20081103000c010b024041002802809a4a450d002002410f36024c2002410e36024420022003360240200220024198016a36024841002802fc994a210641002802f8994a210741002802849a4a210c200241b10536029001200242e48080801037038801200241eabdc700360284012002421637027c200241d4bdc7003602782002420237037020024202370360200241c4bdc70036025c20024116360258200241d4bdc7003602542002410136025020064180a6c000200c410246220c1b28021021062002200241c0006a36026c200741f8fac900200c1b200241d0006a20061103000b200b450d00200810310c000b0b103b000b1039000b2006200c41bcc1c7001061000b830101027f230041206b2202240002404120102f2203450d002002422037020420022003360200200220004120107e2002280208210320022802002100200241106a200110cc072002280210220120022802182000200310a60802402002280214450d00200110310b02402002280204450d00200010310b200241206a24000f0b1039000b860201037f230041d0006b22022400200241086a41f3c6c000410610a702200241186a41c490c900410d10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000bff0201057f230041206b220224002002200010bf0702400240200128020822004105744104722203417f4c0d002001280200210120022802082104200228020021052003102f2206450d01200241003602182002200336021420022006360210024002400240200041c000490d00024002400240200041808001490d002000418080808004490d01200241033a001c200241106a2002411c6a4101107e2002200036021c200241106a2002411c6a4104107e0c020b200220004102744101723b011c200241106a2002411c6a4102107e0c010b2002200041027441027236021c200241106a2002411c6a4104107e0b200120004105746a21000c010b200220004102743a001c200241106a2002411c6a4101107e2000450d01200120004105746a21000b0340200241106a20014120107e2000200141206a2201470d000b0b20052004200228021022012002280218109f0202402002280214450d00200110310b02402002280204450d00200510310b200241206a24000f0b103b000b1039000b130020004103360204200041dc94c5003602000b3400200041b4eac40036020420004100360200200041146a4106360200200041106a418ca0c500360200200041086a420f3702000b4201027f230041106b2202240002404108102f22030d001039000b2000420837020420002003360200200242003703082000200241086a4108107e200241106a24000b0d00200041002000200010d6070bd00101017f230041106b2204240020004100360208200042013702000240024002400240024020010e0400010203000b200441003a000c20002004410c6a4101107e0c030b200441013a000c20002004410c6a4101107e2004200236020c20002004410c6a4104107e2004200336020c20002004410c6a4104107e0c020b200441023a000c20002004410c6a4101107e0c010b200441033a000c20002004410c6a4101107e2004200236020c20002004410c6a4104107e2004200336020c20002004410c6a4104107e0b200441106a24000b130020004101360204200041c4aac5003602000b3400200041caeac40036020420004100360200200041146a4104360200200041106a41a0afc500360200200041086a42083702000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e7e485f30610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000b290020004101360204200041086a200128020420012802006b4181026e2201360200200020013602000ba30801087f230041d0006b22052400200541306a22064200370300200541286a22074200370300200541186a41086a2208420037030020054200370318200541386a41b4eac400410f10a7022008200541386a41086a220929000037030020052005290038370318200541386a41a086c500410d10a7022006200929000037030020072005290038370300024002400240200541186a4120108f030d0020064200370300200742003703002008420037030020054200370318200541186a41f3c6c000410610a702200541386a41ec90c900410610a7022006200929000037030020072005290038370300200541106a200541186a412010c0022005280214410020052802101b2106024020034101470d00200541306a220a4200370300200541286a220b4200370300200541186a41086a2208420037030020054200370318200541386a41b4eac400410f10a7022008200541386a41086a220929000037030020052005290038370318200541386a418ca5c500410a10a702200741086a220c200929000037000020072005290038370000200541086a200541186a412010c00202402005280208450d00200528020c20064d0d002000410410dd050c030b200a4200370300200b42003703002008420037030020054200370318200541386a41b4eac400410f10a7022008200929000037030020052005290038370318200541386a418ca5c500410a10a702200c2009290000370000200720052900383700002005200241017420066a360238200541186a4120200541386a4104109f020b200128020421082001280200210920012802082101200541306a4200370300200541286a4200370300200541186a41086a220a420037030020054200370318200541386a41b4eac400410f10a702200a200541386a41086a220b29000037030020052005290038370318200541386a41a086c500410d10a702200741086a200b29000037000020072005290038370000200541003602402005420137033820052006360248200541386a200541c8006a4104107e20052002360248200541386a200541c8006a4104107e200541386a200110cb010240200141286c2207450d00200920076a2101200921070340200541386a20074120107e2005200741206a290300370348200541386a200541c8006a4108107e200741286a22072001470d000b0b0240024020034101460d00200541003a0048200541386a200541c8006a4101107e0c010b200541013a0048200541386a200541c8006a4101107e20052004360248200541386a200541c8006a4104107e0b200541186a4120200528023822072005280240109f020240200528023c450d00200710310b02402008450d00200841286c450d00200910310b200041073a00000c020b2000410310dd050b200141046a2802002207450d00200741286c450d00200128020010310b200541d0006a24000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e2c289ab0610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e9dabdf30610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41f0c2c98b0610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000b9ca70103217f077e037f230022032104200341800c6b41607122032400200341c0076a22054200370300200341b8076a22064200370300200341a8076a41086a22074200370300200342003703a807200341c0086a41b5d8c800410d10a7022007200341c0086a41086a290000370300200320032900c0083703a807200341e0066a41cfd8c800410c10a7022005200341e0066a41086a290000370300200620032900e00637030020034190036a200341a8076a412010b20220032802a0042107200341c8076a20034190036a41f80010bf091a41022108200341d4046a2802002109200341ac046a280200210a20032802a404210b0240024020074102470d004100210c200341206a410041f80010c1091a4106210d41e400210e41c801210f410121104100211141002112410021134100211441002115410021164100211741012118410121194101211a410021070c010b200341a8046a2802002116200341b0046a280200210d200341b4046a280200210e200341b8046a2802002108200341bc046a280200210f200341c0046a2802002110200341c4046a2802002113200341c8046a2802002112200341cc046a2802002111200341d0046a280200210c2003280288042115200328028c042114200328029004211a20032802940421192003280298042118200328029c042117200341206a200341c8076a41f80010bf091a0b200341d0016a4200370300200341c8016a4200370300200341b8016a41086a4200370300200342003703b80102404105102f2205450d00200341053602e40b200320053602e00b200541046a41002d00b4d8483a0000200541002800b0d848360000200341053602e80b2003428580808010370294032003200536029003200341e0086a4125410120034190036a104e200341e0086a41086a28020021050240024020032802e0084101470d002005450d010c020b20032802e408211b200320053602e40b2003201b3602e00b200341e0086a41186a22054200370300200341e0086a41106a221c4200370300200341e0086a41086a221b4200370300200342003703e008200341c0086a41f9c6c000410410a702201b200341c0086a41086a290000370300200320032900c0083703e008200341e0066a41f890c500410e10a7022005200341e0066a41086a290000370300201c20032900e00637030020034190036a200341e0086a10c70520032d0090032105200341a8076a41186a221b200341a9036a290000370300200341a8076a41106a221d200341a1036a290000370300200341a8076a41086a221e20034199036a29000037030020032003290091033703a8070240024020054101460d00200341c8076a41186a4200370300200341c8076a41106a4200370300200341c8076a41086a4200370300200342003703c8070c010b200341c8076a41186a201b290300370300200341c8076a41106a201d290300370300200341c8076a41086a201e290300370300200320032903a8073703c8070b200341e00b6a200341c8076a4120107e200341a8076a20032802e00b221f20032802e80b109a0120034190036a41186a221b200341a8076a41186a221d29030037030020034190036a41106a221e200341a8076a41106a222029030037030020034190036a41086a2221200341a8076a41086a2205290300370300200320032903a80737039003201d42003703002020420037030020054200370300200342003703a807200341c0086a41f9c6c000410410a7022005200341c0086a41086a290000370300200320032900c0083703a807200341e0066a41e390c500410a10a702200641086a200341e0066a41086a290000370000200620032900e006370000200341e0086a200341a8076a412010bf02024020032802e40b450d00201f10310b20034198016a41086a202129030037030020034198016a41106a201e29030037030020034198016a41186a201b290300370300200320032903900337039801200341a8076a41b5d8c800410d10a702200341c8076a41c2d8c800410d10a702200320003602e0062003200341e0066a410410c8023703b8012003419c036a200341e0066a41046a3602002003200341b8016a41086a360294032003200341e0066a360298032003200341b8016a36029003200341e0086a20034190036a10880120032802e808221b41206a2205417f4c0d000240024020050d004101211d0c010b2005102f221d450d020b200341003602c808200320053602c4082003201d3602c008200341c0086a200341a8076a4110107e200341c0086a200341c8076a4110107e200341c0086a20032802e0082205201b107e024020032802e408450d00200510310b20034190036a20032802c008220520032802c808221d10b202024020032802a004221e410246221b0d002005201d10bd020b200341e0086a20034190036a41900110bf091a200341c8076a41306a221d200341d4046a280200360200200341c8076a41286a2220200341cc046a290200370300200341c8076a41206a2221200341c4046a290200370300200341c8076a41186a221f200341bc046a290200370300200341c8076a41106a2222200341b4046a290200370300200341c8076a41086a2223200341ac046a290200370300200320032902a4043703c80702400240201b0d00200341b8016a200341e0086a41900110bf091a200341e0066a41306a201d280200360200200341e0066a41286a2020290300370300200341e0066a41206a2021290300370300200341e0066a41186a201f290300370300200341e0066a41106a2022290300370300200341e0066a41086a2023290300370300200320032903c8073703e006024020032802c408450d00200510310b20034190036a200341b8016a41900110bf091a200341a4046a20032903e006370200200341ac046a200341e0066a41086a290300370200200341b4046a200341e0066a41106a290300370200200341bc046a200341e0066a41186a290300370200200341c4046a200341e0066a41206a290300370200200341cc046a20034188076a290300370200200341d4046a20034190076a2802003602002003201e3602a004200341e0086a41186a22054200370300200341e0086a41106a221b4200370300200341e0086a41086a221d4200370300200342003703e008200341a8076a41b5d8c800410d10a702201d200341a8076a41086a290000370300200320032900a8073703e008200341c8076a41cfd8c800410c10a7022005200341c8076a41086a290000370300201b20032900c807370300200341003602d007200342013703c80720034190036a200341c8076a108009200341e0086a412020032802c80720032802d007109f0220032802cc07450d0120032802c80710310c010b20032802c408450d00200510310b200341c0076a4200370300200341b8076a4200370300200341a8076a41086a22054200370300200342003703a807200341c0086a41b5d8c800410d10a7022005200341c0086a41086a290000370300200320032900c0083703a807200341e0066a41cfd8c800410c10a702200641086a200341e0066a41086a290000370000200620032900e00637000020034190036a200341a8076a412010b20220032802a0042105200341c8076a20034190036a41f80010bf091a4102211b0240024020054102470d0041002105200341b8016a410041800110c1091a200341f4026a4200370200200342003702ec0220034286808080c00c3703d802200341003602d002200342013703c00220034281808080103703b8024101211d41c801211e0c010b200341b8046a280200211b200341bc046a280200211e200341c0046a280200211d200341b4046a2802002120200341c4046a2902002124200341cc046a2902002125200341d4046a280200212120034190036a419c016a290200212620032903880421272003290390042128200329039804212920032902a404212a200341b8016a200341c8076a41f80010bf091a200341b8016a419c016a2026370200200341cc026a202a370200200320213602fc02200320253702f402200320243702ec02200320203602dc02200320293703c002200320283703b802200320273703b0020b2003201d3602e8022003201e3602e4022003201b3602e002200320053602c80220034190036a41186a20034198016a41186a220529030037030020034190036a41106a20034198016a41106a221b29030037030020034190036a41086a20034198016a41086a221d290300370300200320032903980137039003200341e0086a41086a200141086a280200360200200320012902003703e00820034180036a200020034190036a200341b8016a200341e0086a109b0820034190036a200341206a41f80010bf091a200341ac046a200a360200200341a4046a200b360200200320093602d4042003200c3602d004200320113602cc04200320123602c804200320133602c404200320103602c0042003200f3602bc04200320083602b8042003200e3602b4042003200d3602b004200320163602a804200320073602a0042003201736029c04200320183602980420032019360294042003201a360290042003201436028c042003201536028804200341a8066a20034180036a41086a280200360200200341b4066a200241086a28020036020020032003290380033703a006200320022902003702ac0620034190036a41c8016a200341b8016a41c80110bf091a200341d4066a2005290300370200200341cc066a201b290300370200200341c4066a201d290300370200200320003602b80620032003290398013702bc06200341c8076a200010e102200341e0086a20032802c807220020032802d007220510e2020240024020032802e00822180d0041042118420021240c010b2000200510bd0220032902e40821240b024020032802cc07450d00200010310b200341c8076a41186a22144200370300200341c8076a41106a22124200370300200341c8076a41086a22104200370300200342003703c807200341e0066a41b0a8c600410510a7022010200341e0066a41086a2213290000370300200320032900e0063703c807200341e0066a4190fdc600410a10a70220142013290000370300201220032900e006370300200341e0086a200341c8076a412010e202200341e0086a41086a2211280200210520032802e008210020032802e4082107200341a8076a41186a220d4200370300200341a8076a41106a220e4200370300200341a8076a41086a220c4200370300200342003703a807200341c0086a41f3c6c000410610a702200c200341c0086a41086a221d290000370300200320032900c0083703a807200341e0066a41ec90c900410610a702200641086a2013290000370000200620032900e006370000200341186a200341a8076a412010c0024100210f2007410020001b21162005410020001b2109410421152000410420001b2102024002402024422088a722000d004100211a0c010b200328021c410020032802181b2117201820004102746a210b200341e0066a41196a211e200341e0086a41196a2120200341e0086a410172210a200341ec066a21214100210f4100211a41042115201821010340200341e0086a2001280200220010ae0220032802e008220720032802e80810af0241ff01712105024020032802e408450d00200710310b024020054107460d00024002400240024002400240024002400240024002400240024002400240024020050e0700101001020303000b200341a8076a200010990820032802a8072105200320032802b00722083602e40b200320053602e00b200341e0066a2005200810d2020240024020032802e00622070d00410221070c010b20032802e4062119200320032802e8063602c408200320073602c008200341e0086a200341c0086a10bc030240024020032d00f808221b4102470d00200341003602d007200342013703c8072003410c3602dc082003200341e00b6a3602d8082003200341c8076a3602f00b200341013602f408200342013702e4082003419086c4003602e0082003200341d8086a3602f008200341f00b6a41d8ddc900200341e0086a10401a20032802c80720032802d00710d90420032802cc07450d0120032802c80710310c010b2012200341e0086a41106a29030037030020102011290300370300200341fc0b6a41026a202041026a2d0000221f3a0000200341f00b6a41026a201f3a0000200320032903e0083703c807200320202f0000221f3b01fc0b2003201f3b01f00b0b02402019450d00200710310b41022107201b4102460d002005200810bd02201b21070b20112010290300370300200341e0086a41106a22192012290300370300200341fc0b6a41026a221b200341f00b6a41026a2d00003a0000200320032903c8073703e008200320032f01f00b3b01fc0b0240200741024622080d00200341c0086a41106a2019290300370300201d2011290300370300200341d8086a41026a201b2d00003a0000200320032903e0083703c008200320032f01fc0b3b01d8080b024020032802ac07450d00200510310b20080d0f201e20032f01d8083b0000200341e0066a41106a200341c0086a41106a2903003703002013201d290300370300201e41026a200341d8086a41026a2d00003a0000200320032903c0083703e006200320073a00f80602402007450d0041002105024020090e020d0c000b4100210520092107034020052007410176220820056a221b20002002201b4102746a280200491b2105200720086b220741014b0d000c0c0b0b200341c8076a200010ae0220032802d007210720032802c8072105200341003602e808200342013703e0084101200341e0086a107d2005200720032802e008220820032802e808109f02024020032802e408450d00200810310b20032802cc07450d0e200510310c0e0b41002105024020090e020706000b4100210520092107034020052007410176220820056a221b20002002201b4102746a280200491b2105200720086b220741014b0d000c060b0b410021070240024020090e020501000b4100210520092107034020052007410176220820056a221b20002002201b4102746a280200491b2105200720086b220741014b0d000c030b0b410121074100210520002002280200470d030c020b410021070240024002400240024020090e020401000b4100210520092107034020052007410176220820056a221b20002002201b4102746a280200491b2105200720086b220741014b0d000c020b0b410121074100210520002002280200470d020c010b02402000200220054102746a280200460d00200921070c020b200920054b0d00200520091049000b200220054102746a2207200741046a20092005417f736a41027410c0091a2009417f6a21070b200341e0086a200010dd0220032802e008220520032802e80810bd02024020032802e408450d00200510310b200341e0086a200010860820032802e008220520032802e80810bd02024020032802e408450d00200510310b200341e0086a200010ae0220032802e008220520032802e80810bd02024020032802e408450d00200510310b200341c8076a2000108708200341e0086a20032802c807220820032802d007220510da020240024020032d00e008221b0d00200d200a41186a290000370300200e200a41106a290000370300200c200a41086a2900003703002003200a2900003703a807410121050c010b2008200510bd02200d200a41186a290000370300200e200a41106a290000370300200c200a41086a2900003703002003200a2900003703a80741012105201b4101470d00200341e0066a41186a200d290300370300200341e0066a41106a200e2903003703002013200c290300370300200320032903a8073703e006410021050b024020032802cc07450d00200810310b024020050d00200341e0086a41186a200341e0066a41186a290300370300200341e0086a41106a200341e0066a41106a29030037030020112013290300370300200320032903e0063703e008200341e0086a1093040b200341c0086a200010d902200341e0086a20032802c008220820032802c808220510da020240024020032d00e008221b0d00200d200a41186a290000370300200e200a41106a290000370300200c200a41086a2900003703002003200a2900003703a807410121050c010b2008200510bd02200d200a41186a290000370300200e200a41106a290000370300200c200a41086a2900003703002003200a2900003703a80741012105201b4101470d002014200d2903003703002012200e2903003703002010200c290300370300200320032903a8073703c807410021050b024020032802c408450d00200810310b024020050d00200341e0086a41186a2014290300370300200341e0086a41106a201229030037030020112010290300370300200320032903c8073703e008200020172017200341e0086a10dc021a0b0240200f201a470d00200f41016a2205200f490d10200f41017422082005200820054b1b22054104200541044b1b220541ffffffff037120054641027421082005410274210502400240200f0d00200341003602e0080c010b200341043602e808200320153602e0082003200f4102743602e4080b200341a8076a20052008200341e0086a104e20032802b0072105024020032802a8074101470d0020050d120c110b20032802ac0721152005410276211a0b2015200f4102746a2000360200200f41016a210f200721090c0c0b02402000200220054102746a280200460d00200921070c020b200920054b0d00200520091049000b200220054102746a2207200741046a20092005417f736a41027410c0091a2009417f6a21070b200341c8076a200010ae0220032802d007210520032802c8072100200341003602e808200342013703e0084101200341e0086a107d2000200520032802e008220820032802e808109f02024020032802e408450d00200810310b024020032802cc07450d00200010310b200721090c090b2000200220054102746a2802002207460d0120092005200020074b6a22054f0d00200520091048000b024020092016470d00200941016a22072009490d0b200941017422082007200820074b1b22074104200741044b1b220741ffffffff03712007464102742108200741027421070240024020090d00200341003602e0080c010b200341043602e808200320023602e008200320094102743602e4080b200341c8076a20072008200341e0086a104e20032802d007210720032802c8074101460d0220032802cc072102200741027621160b200220054102746a220741046a2007200920056b41027410c0091a20072000360200200941016a21090b200341c8076a200010ae0220032802d007210520032802c8072100200341003602e808200342013703e0084102200341e0086a107d2000200520032802e008220720032802e808109f02024020032802e408450d00200710310b20032802cc07450d06200010310c060b20070d090c080b2000200220054102746a2802002207460d0120092005200020074b6a22054f0d00200520091048000b024020092016470d00200941016a22072009490d07200941017422082007200820074b1b22074104200741044b1b220741ffffffff03712007464102742108200741027421070240024020090d00200341003602e0080c010b200341043602e808200320023602e008200320094102743602e4080b200341c8076a20072008200341e0086a104e20032802d007210720032802c8074101460d0220032802cc072102200741027621160b200220054102746a220741046a2007200920056b41027410c0091a20072000360200200941016a21090b200341c8076a200010ae0220032802d007210720032802c8072105200341003602e808200342013703e0084102200341e0086a107d2005200720032802e008220820032802e808109f02024020032802e408450d00200810310b20032802cc07450d01200510310c010b20070d050c040b200341a8076a20032802ec06220820032802f406109a012014200d2903003703002012200e2903003703002010200c290300370300200320032903a8073703c807200c2013280200360200200320032903e0063703a807200341e0086a200010dd0220032802e008220520032802e808200341a8076a10de02024020032802e408450d00200510310b024020032802ac07450d0020032802a80710310b200341c8076a202110db021a200341e0086a41186a20142903003703002019201229030037030020112010290300370300200320032903c8073703e008200341e00b6a200010d90220032802e80b210520032802e00b21004120102f2207450d04200342203702ac07200320073602a807200341a8076a200341e0086a4120107e2000200520032802a807220720032802b007109f02024020032802ac07450d00200710310b024020032802e40b450d00200010310b20032802f006450d00200810310b200141046a2201200b470d000b0b0240202442ffffffff0383500d00201810310b024002402002450d00200320023602c80720032009ad4220862016ad843702cc07200341f8086a4200370300200341f0086a4200370300200341e0086a41086a22004200370300200342003703e008200341e0066a41b0a8c600410510a7022000200341e0066a41086a2205290000370300200320032900e0063703e008200341e0066a4190fdc600410a10a702201c41086a2005290000370000201c20032900e006370000200341203602e4062003200341e0086a3602e006200341c8076a200341e0066a10f303201641ffffffff0371450d01200210310c010b200341e0076a4200370300200341d8076a4200370300200341c8076a41086a22004200370300200342003703c807200341e0066a41b0a8c600410510a7022000200341e0066a41086a2205290000370300200320032900e0063703c807200341e0066a4190fdc600410a10a702201241086a2005290000370000201220032900e006370000200341c8076a412010bd020b200341f8086a22014200370300200341f0086a22024200370300200341e0086a41086a22054200370300200342003703e008200341e0066a41a996c700410d10a7022005200341e0066a41086a2207290000370300200320032900e0063703e008200341e0066a41b09bc700410f10a702201c41086a22082007290000370000201c20032900e006370000200341c8076a200341e0086a10e603200341c8076a41086a280200211b20032802c807210020032802cc072109200142003703002002420037030020054200370300200342003703e008200341e0066a41b0a8c600410510a70220052007290000370300200320032900e0063703e008200341e0066a4190fdc600410a10a70220082007290000370000201c20032900e006370000200341c8076a200341e0086a412010e2020240024020032802c80722050d00410021160c010b20032902cc072224422088a72116202442ffffffff0383500d00200510310b200341d0056a2802002117410021130240200341e8056a2802004101470d00200341ec056a2802002205450d00200341a8066a28020020056e21130b2009410020001b2111201b410020001b21082000410420001b210d200341e0086a41186a22094200370300200341e0086a41106a220a4200370300200341e0086a41086a221b4200370300200342003703e008200341e0066a41a996c700410d10a702201b200341e0066a41086a2200290000370300200320032900e0063703e008200341e0066a41849cc700411110a702201c41086a2000290000370000201c20032900e006370000200341c8076a200341e0086a10da0320032802c8072200410420001b2110024020032902cc07420020001b2229422088a72214450d0020102014412c6c6a2102200341e4076a210b200341e0066a4104722107200341e00b6a41086a2101201021000340200341023602e0082000290200212420032903f808212520032903f008212620032903e8082127200020032903e00837020020002902082128200020273702082000290210212720002026370210200041186a2205290200212620052025370200200320263703f806200320273703f006200320283703e806200320243703e0062001200041286a2802003602002003200041206a2902003703e00b02402024a70d00200b20032903e00b370200200341c8076a41186a2205200741186a280200360200200341c8076a41106a200741106a2902002224370300200341c8076a41086a200741086a2902002225370300200b41086a20012802003602002003200729020022263703c807200341e0086a41206a220c200341c8076a41206a29030037030020092005290300370300200a2024370300201b2025370300200320263703e008024020082011470d00200841016a22052008490d042008410174220e2005200e20054b1b22054104200541044b1bad422c7e2224422088a74541027421052024a7210e0240024020080d00200341003602a8070c010b200341043602b0072003200d3602a80720032008412c6c3602ac070b200341c0086a200e2005200341a8076a104e20032802c8082105024020032802c0084101470d0020050d060c050b20032802c408210d2005412c6e21110b200d2008412c6c6a220520032903e008370200201b2903002124200a290300212520092903002126200c290300212720054100360228200541206a2027370200200541186a2026370200200541106a2025370200200541086a2024370200200841016a21080b2000412c6a22002002470d000b0b02400240024002400240201720166a22002013200020134b1b221320144d0d00200341e0086a41186a200341c8076a41186a290200370300200341e0086a41106a200341c8076a41106a290200370300200341e0086a41086a200341c8076a41086a290200370300200320032902c8073703e008024002402029a7220020146b201320146b2201490d00201421070c010b201420016a22052014490d06200041017422072005200720054b1b22054104200541044b1bad422c7e2224422088a74541027421052024a721070240024020000d00200341003602e0060c010b200341e8066a4104360200200320103602e00620032000412c6c3602e4060b200341a8076a20072005200341e0066a104e200341b0076a280200210020032802a8074101460d0320032802ac0721102029422088a721072000412c6ead21290b20102007412c6c6a2100024020014102490d002014417f7320136a21050340200041023602002000412c6a21002005417f6a22050d000b200120076a417f6a21070b02402001450d0020004102360200200041086a20032903e008370200200041106a200341e0086a41086a290300370200200041186a200341e0086a41106a290300370200200041206a200341e0086a41186a290300370200200741016a21070b202942ffffffff0f832007ad4220868421240c010b202942ffffffff0f832013ad4220868421240b200341f8086a4200370300200341f0086a4200370300200341e0086a41086a22004200370300200342003703e008200341e0066a41a996c700410d10a7022000200341e0066a41086a2205290000370300200320032900e0063703e008200341e0066a41849cc700411110a702201c41086a2005290000370000201c20032900e0063700000240024020100d00200341e0086a412010bd020c010b2024422088a72205412c6c41046a2200417f4c0d040240024020000d00410121070c010b2000102f2207450d060b200341003602d007200320003602cc07200320073602c807200341c8076a200510cb0120102005200341c8076a10c601200341e0086a412020032802c807220020032802d007109f02024020032802cc07450d00200010310b2024a72200450d002000412c6c450d00201010310b024002402013450d00200341a8066a28020022160d010b200341003602e808200342043703e008200341e0086a10a0080c030b201620136e21010240201620137022170d004104210a4100211b410021020c020b200141016a220c41027422104101762200200c2000200c4b1b22004104200041044b1b220041ffffffff0371200047211d2000410274211e200c41ffffffff03712214200c4721182010417f4a21194100211b4104210a41002109034020180d042019450d0402400240024002400240024002402010450d002010102f220b450d0c2014200c4f0d01200320103602e4082003200b3602e008200341043602e8080c040b4104210b2014200c490d010b200c450d012014210e0c030b200341003602e0080c010b410021052014210e0c020b200341c8076a201e41004104201d1b200341e0086a104e20032802d0072100024020032802c8074101460d0020032802cc07210b2000410276210e0c010b20000d070c060b2009200c6c210241002100417f2107200b210503402005200220006a360200200541046a2105200041016a2100200741016a22072001470d000b200c21050b02402009201b470d00201b41016a2200201b490d05201b41017422072000200720004b1b22004104200041044b1bad420c7e2224422088a74541027421002024a7210702400240201b0d00200341003602e0080c010b200341043602e8082003200a3602e0082003201b410c6c3602e4080b200341c8076a20072000200341e0086a104e20032802d0072100024020032802c8074101470d0020000d070c060b20032802cc07210a2000410c6e211b0b200a2009410c6c6a220020053602082000200e3602042000200b360200200941016a2202210920022017460d020c000b0b20000d030c020b0240201320176b2214450d002001410274221041017622002001200020014b1b22004104200041044b1b220041ffffffff037120004721192000410274211d200141ffffffff0371220e20014721182017200141016a6c211e2010417f4a21174100210b034020180d032017450d030240024002402010450d002010102f2209450d07200e210c200e20014f0d02200320103602e408200320093602e008200341043602e8080c010b41042109200e210c200e20014f0d01200341003602e0080b200341c8076a201d4100410420191b200341e0086a104e20032802d0072100024020032802c8074101460d0020032802cc0721092000410276210c0c010b20000d050c040b410021050240201320164b0d00200b20016c201e6a2107410021002009210503402005200720006a360200200541046a2105200041016a22002001470d000b200121050b02402002201b470d00201b41016a2200201b490d04201b41017422072000200720004b1b22004104200041044b1bad420c7e2224422088a74541027421002024a7210702400240201b0d00200341003602e0080c010b200341043602e8082003200a3602e0082003201b410c6c3602e4080b200341c8076a20072000200341e0086a104e20032802d0072100024020032802c8074101470d0020000d060c050b20032802cc07210a2000410c6e211b0b200a2002410c6c6a220020053602082000200c36020420002009360200200241016a2102200b41016a220b2014470d000b0b200320023602e8082003201b3602e4082003200a3602e008200341e0086a10a0080b200341f8086a4200370300200341f0086a4200370300200341e0086a41086a22004200370300200342003703e008200341e0066a41a996c700410d10a7022000200341e0066a41086a2205290000370300200320032900e0063703e008200341e0066a41809dc700411410a702201c41086a2005290000370000201c20032900e006370000200341c8076a200341e0086a412010e20220032902cc07420020032802c80722001b21242000410420001b2109024002400240024020032802d0050d0002402011450d002011412c6c450d00200d10310b202442ffffffff0f8321244104210d4100210741002102410021110c010b0240024020080d004100210a0c010b4100210b4100210a410021020240034002400240200a450d00200d2002412c6c6a2100200d2002200b6a412c6c6a2105034020002802002107200041246a28020020032802d4054b0d02200341e0086a200710ae0220032802e008221b20032802e80810af0241ff01712101024020032802e408450d00201b10310b20014107460d02200141054b0d024101200174412a71450d0220052000290200370200200541286a200041286a280200360200200541206a200041206a290200370200200541186a200041186a290200370200200541106a200041106a290200370200200541086a200041086a2902003702002000412c6a21002005412c6a21052008200241016a22024b0d000c040b0b200d2002412c6c6a2100034020002802002107200041246a28020020032802d4054b0d01200341e0086a200710ae0220032802e008220120032802e80810af0241ff01712105024020032802e408450d00200110310b20054107460d01200541054b0d014101200574412a71450d012000412c6a21002008200241016a22024b0d000b4100210a0c030b02400240024002402024422088a7220c0e020300010b4100210020072009280200470d020c010b41002100200c2105034020002005410176220120006a221b20072009201b4102746a280200491b2100200520016b220541014b0d000b2007200920004102746a280200470d012000200c490d002000200c1049000b200920004102746a2205200541046a2000417f73200c6a41027410c0091a20244280808080707c21240b200b417f6a210b200a41016a210a2008200241016a22024b0d000b0b0240200a0d004100210a0c010b200d2002200a6b412c6c6a200d2002412c6c6a200820026b412c6c10c0091a0b02402008200a6b2202450d002008412c6c200a412c6c6b2107200d41286a210041002105034020032802d0052201450d04200020052001703602002000412c6a2100200541016a2105200741546a22070d000b0b20032802d0052200450d01200220007021070b200320093602c807200320243702cc07200341e0086a41186a22014200370300200341e0086a41106a22084200370300200341e0086a41086a22054200370300200342003703e008200341e0066a41a996c700410d10a7022005200341e0066a41086a2200290000370300200320032900e0063703e008200341e0066a41809dc700411410a702201c41086a221b2000290000370000201c20032900e006370000200341203602e4062003200341e0086a3602e006200341c8076a200341e0066a10e3020240202442ffffffff0383500d00200910310b200320073602ec08200320023602e808200320113602e4082003200d3602e008200341e0086a10eb03200341a8076a41186a4200370300200341a8076a41106a4200370300200341a8076a41086a22074200370300200342003703a807200341c0086a41f3c6c000410610a7022007200341c0086a41086a290000370300200320032900c0083703a807200341e0066a41ec90c900410610a702200641086a2000290000370000200620032900e006370000200341106a200341a8076a412010c0022003280210210720032802142102200142003703002008420037030020054200370300200342003703e008200341e0066a41a996c700410d10a70220052000290000370300200320032900e0063703e008200341e0066a41c49dc700411110a702201b2000290000370000201c20032900e0063700002003200241016a410120071b3602c807200341e0086a4120200341c8076a4104109f02200341c0086a41a4bcc200410d10a702200341e0066a4188efc200411e10a7024120102f2200450d03200342203702e408200320003602e008200341e0086a200341c0086a4110107e200341e0086a200341e0066a4110107e20032802e8082200417f4c0d0220032802e00821074101210502402000450d002000102f2205450d040b20052007200010bf092105200341e0066a41086a200341e0086a41086a2802002207360200200341a8076a41026a2201200341c8076a41026a2d00003a0000200320032903e00822243703e006200320032f00c8073b01a807200341dc076a2007360200200320003602d007200320003602cc07200320053602c807200320243702d407200341013a00e407200341273602e007200341e7076a20012d00003a0000200320032f01a8073b00e507200341e0086a200341c8076a10af08024020032802e408221b450d000340200328028c092109200328028809210c200328028009210b20032802fc08210220032802f808210120032802f408210a20032802f008210820032802e8082107024020032802ec082200450d002000410c6c2105201b210003400240200041046a280200450d00200028020010310b2000410c6a2100200541746a22050d000b0b02402007450d002007410c6c450d00201b10310b02402001450d0020014104742105200841086a2100034002402000280200450d002000417c6a28020010310b200041106a2100200541706a22050d000b0b0240200a41ffffffff0071450d00200810310b02402002450d00200b450d00200210310b02402009450d00200c10310b200341e0086a200341c8076a10af0820032802e408221b0d000b0b024020032802cc07450d0020032802c80710310b0240200341d8076a280200450d0020032802d40710310b200341c0086a41a4bcc200410d10a702200341e0066a41b1bcc200411310a7024120102f2200450d03200342203702e408200320003602e008200341e0086a200341c0086a4110107e200341e0086a200341e0066a4110107e20032802e8082200417f4c0d0220032802e00821074101210502402000450d002000102f2205450d040b20052007200010bf092105200341e0066a41086a200341e0086a41086a2802002207360200200341a8076a41026a2201200341c8076a41026a2d00003a0000200320032903e00822243703e006200320032f00c8073b01a807200341dc076a2007360200200320003602d007200320003602cc07200320053602c807200320243702d407200341013a00e407200341103602e007200341e7076a20012d00003a0000200320032f01a8073b00e507200341e0086a200341c8076a10dd0303400240200328028c0b22050d00024020032802cc07450d0020032802c80710310b0240200341d8076a280200450d0020032802d40710310b200341c0086a41a4bcc200410d10a702200341e0066a41d0edc200411510a7024120102f2200450d05200342203702e408200320003602e008200341e0086a200341c0086a4110107e200341e0086a200341e0066a4110107e20032802e8082200417f4c0d0420032802e00821074101210502402000450d002000102f2205450d060b20052007200010bf092105200341e0066a41086a200341e0086a41086a2802002207360200200341a8076a41026a2201200341c8076a41026a2d00003a0000200320032903e00822243703e006200320032f00c8073b01a807200341f4086a2007360200200320003602e808200320003602e408200320053602e008200320243702ec08200341013a00fc08200341283602f808200341ff086a20012d00003a0000200320032f01a8073b00fd08200341c8076a200341e0086a10b008024002400340024020032802cc0722000d00024020032802e408450d0020032802e00810310b0240200341e0086a41106a280200450d0020032802ec0810310b200341c0076a22054200370300200341a8076a41106a4200370300200341a8076a41086a22004200370300200342003703a807200341c0086a41b5d8c800410d10a7022000200341c0086a41086a2207290000370300200320032900c0083703a807200341e0066a41cfd8c800410c10a702200641086a2201200341e0066a41086a2202290000370000200620032900e006370000200341e0086a200341a8076a412010b20220032802f0092108200341c8076a200341e0086a41f80010bf091a20084102470d0241002117410121184106210e410021194100211d4100211e410021200c030b024020032802d407450d00200010310b200341c8076a200341e0086a10b0080c000b0b200341800a6a280200210e200341900a6a2802002118200341940a6a280200211e200341980a6a280200211d2003419c0a6a2802002119200341a00a6a280200211720032802d80921200b200341a0066a210820054200370300200341b8076a420037030020004200370300200342003703a807200341c0086a41b0a8c600410510a70220002007290000370300200320032900c0083703a807200341e0066a4190fdc600410a10a70220012002290000370000200620032900e006370000200341e0086a200341a8076a412010e2020240024020032802e00822000d00410021160c010b20032902e4082224422088a72116202442ffffffff0383500d00200010310b200341e00b6a200810a602200341a8076a41186a22084200370300200341a8076a41106a221b4200370300200341a8076a41086a22054200370300200342003703a807200341c0086a41a6c7c000411210a7022005200341c0086a41086a2209290000370300200320032900c0083703a807200341e0066a41d2eac400410410a702200641086a220a200341e0066a41086a220b290000370000200620032900e006370000200341e0086a200341a8076a10a40620032802e008210220032902e4082124200341c8076a41186a4200370300200341c8076a41106a4200370300200341c8076a41086a4200370300200342003703c807200341c8076a419ee6c300410f10a702200341e0086a41b8e8c300411410a702201241086a200341e0086a41086a290000370000201220032900e008370000200341203602f40b2003200341c8076a3602f00b200341a8076a200341c8076a412010d202410021000240024020032802a80722070d00410021010c010b20032802ac07210c200320052802003602c408200320073602c008200341e0086a200341c0086a10e7050240024020032802e00822010d0041002101200341003602e806200342013703e0062003410c3602dc082003200341f00b6a3602d8082003200341e0066a3602fc0b200341f4086a4101360200200342013702e4082003419086c4003602e0082003200341d8086a3602f008200341fc0b6a41d8ddc900200341e0086a10401a20032802e00620032802e80610d904024020032802e406450d0020032802e00610310b0c010b20032902e40821260b200c450d00200710310b20084200370300201b420037030020054200370300200342003703a807200341c0086a41b490c700410b10a70220052009290000370300200320032900c0083703a807200341e0066a41f492c700411610a702200a200b290000370000200620032900e006370000200341203602f40b2003200341a8076a3602f00b200341e0066a200341a8076a412010d2020240024020032802e00622050d000c010b20032802e40621072003200341e8066a2802003602c408200320053602c008200341e0086a200341c0086a10fd080240024020032802e00822000d0041002100200341003602d007200342013703c8072003410c3602dc082003200341f00b6a3602d8082003200341c8076a3602fc0b200341f4086a4101360200200342013702e4082003419086c4003602e0082003200341d8086a3602f008200341fc0b6a41d8ddc900200341e0086a10401a20032802c80720032802d00710d904024020032802cc07450d0020032802c80710310b0c010b20032902e40821250b2007450d00200510310b2024420020021b2124200341a8076a41186a4200370300200341a8076a41106a4200370300200341a8076a41086a22054200370300200342003703a807200341c0086a41a996c700410d10a7022005200341c0086a41086a290000370300200320032900c0083703a807200341e0066a41c89ac700410f10a702200641086a200341e0066a41086a290000370000200620032900e006370000200341e0086a200341a8076a10e70320032802e008210820032902e408212720032802b806210d200341c8076a41186a4200370300200341c8076a41106a4200370300200341c8076a41086a4200370300200342003703c807200341c8076a419ee6c300410f10a702200341e0086a4188e9c300411510a702201241086a200341e0086a41086a290000370000201220032900e008370000200341086a200341c8076a412010c0022025420020001b21252000410420001b210c0240024002400240200328020c410020032802081b2207450d00200721000c010b200341e0086a410010e60520032802e0082200450d01024020032802e40841ffffff3f71450d00200010310b0240200341f0086a28020041ffffff3f71450d00200341ec086a28020010310b0240200341fc086a28020041ffffff3f71450d00200341f8086a28020010310b20034184096a280200211b02402003418c096a2802002200450d002000410c6c2105201b210003400240200041046a28020041ffffffff0371450d00200028020010310b2000410c6a2100200541746a22050d000b0b024020034188096a2802002200450d002000410c6c450d00201b10310b410021000b024020004100200d200e6b22052005200d4b1b22052007200520074b1b22074f0d000340200341e0086a200010ec0520032802e008220520032802e80810bd02200041016a2100024020032802e408450d00200510310b20072000470d000b0b200341f8086a4200370300200341f0086a4200370300200341e0086a41086a4200370300200342003703e008200341e0086a419ee6c300410f10a702200341e0066a4188e9c300411510a702201c41086a200341e0066a41086a290000370000201c20032900e006370000200320073602c807200341e0086a4120200341c8076a4104109f020c010b200341f8086a4200370300200341f0086a4200370300200341e0086a41086a4200370300200342003703e008200341e0086a419ee6c300410f10a702200341e0066a4188e9c300411510a702201c41086a200341e0066a41086a290000370000201c20032900e0063700002003200d3602c807200341e0086a4120200341c8076a4104109f020b2002410120021b21122026420020011b21262001410120011b21132027420020081b21272008410420081b21112025422088a7220b41027421002024422088a7210120032802e80b211020032802e40b212120032802e00b2114200c21050240024003402000450d012000417c6a210020052802002102200541046a22072105200220014f0d000b200341e0086a41186a2208201220024105746a220541186a290000370300200341e0086a41106a2202200541106a290000370300200341e0086a41086a221b200541086a290000370300200320052900003703e0084120102f2209450d07200920032903e008370000200941186a2008290300370000200941106a2002290300370000200941086a201b2903003700000340024020000d004101211c410121080c030b2000417c6a210020072802002102200741046a22052107200220014f0d000b200341e0086a41186a221b201220024105746a220041186a290000370300200341e0086a41106a220a200041106a290000370300200341e0086a41086a220e200041086a290000370300200320002900003703e008200c200b4102746a21074101211c4101210802400340200341a8076a41186a2202201b290300370300200341a8076a41106a221f200a290300370300200341a8076a41086a2222200e290300370300200320032903e0083703a80702402008201c470d00201c41016a2200201c490d09201c41017422232000202320004b1b22004104200041044b1b220041ffffff3f7120004621232000410574210002400240201c0d00200341003602c8070c010b200341013602d007200320093602c8072003201c4105743602cc070b200341e0066a20002023200341c8076a104e20032802e806210020032802e0064101460d0220032802e40621092000410576211c0b200920084105746a220020032903a807370000200041186a2002290300370000200041106a201f290300370000200041086a2022290300370000200841016a2108034020072005460d0420052802002100200541046a22022105200020014f0d000b201b201220004105746a220041186a290000370300200a200041106a290000370300200e200041086a290000370300200320002900003703e008200221050c000b0b20000d070c060b4100211c41012109410021080b02402008200b460d0041002802809a4a4102490d0041002802fc994a210041002802f8994a210541002802849a4a2107200341a0096a413436020020034198096a42be80808010370300200341e0086a41346a41f4edc3003602002003418c096a422137020020034188096a41d3edc30036020020034180096a4200370300200341fc086a41f8fac900360200200341f0086a4201370300200341e8086a4113360200200341b8edc3003602ec08200341c0edc3003602e408200341023602e008200541f8fac900200741024622071b200341e0086a20004180a6c00020071b2802101103000b200b41027421002026422088a72101200c21050240024003402000450d012000417c6a210020052802002102200541046a22072105200220014f0d000b200341e0086a41186a221b201320024105746a220541186a290000370300200341e0086a41106a2202200541106a290000370300200341e0086a41086a220e200541086a290000370300200320052900003703e0084120102f220a450d07200a20032903e008370000200a41186a201b290300370000200a41106a2002290300370000200a41086a200e2903003700000340024020000d004101210e4101211b0c030b2000417c6a210020072802002102200741046a22052107200220014f0d000b200341e0086a41186a221f201320024105746a220041186a290000370300200341e0086a41106a2222200041106a290000370300200341e0086a41086a2223200041086a290000370300200320002900003703e008200c200b4102746a21074101210e4101211b02400340200341a8076a41186a2202201f290300370300200341a8076a41106a222b2022290300370300200341a8076a41086a222c2023290300370300200320032903e0083703a8070240201b200e470d00200e41016a2200200e490d09200e410174222d2000202d20004b1b22004104200041044b1b220041ffffff3f71200046212d2000410574210002400240200e0d00200341003602c8070c010b200341013602d0072003200a3602c8072003200e4105743602cc070b200341e0066a2000202d200341c8076a104e20032802e806210020032802e0064101460d0220032802e406210a2000410576210e0b200a201b4105746a220020032903a807370000200041186a2002290300370000200041106a202b290300370000200041086a202c290300370000201b41016a211b034020072005460d0420052802002100200541046a22022105200020014f0d000b201f201320004105746a220041186a2900003703002022200041106a2900003703002023200041086a290000370300200320002900003703e008200221050c000b0b20000d070c060b4100210e4101210a4100211b0b0240201b200b460d0041002802809a4a4102490d0041002802fc994a210041002802f8994a210541002802849a4a2107200341a0096a413436020020034198096a42be80808010370300200341e0086a41346a41f4edc3003602002003418c096a422137020020034188096a41d3edc30036020020034180096a4200370300200341fc086a41f8fac900360200200341f0086a4201370300200341e8086a4113360200200341b8edc3003602ec08200341c0edc3003602e408200341023602e008200541f8fac900200741024622071b200341e0086a20004180a6c00020071b2802101103000b200341c8076a200d10ec0520032802d007210d20032802c807210b200341003602e808200342013703e008200341e0086a201010cb0102402010450d0020104105742105201421000340200341e0086a20004120107e200041206a2100200541606a22050d000b0b20274220882128200341e0086a200810cb0102402008450d0020084105742105200921000340200341e0086a20004120107e200041206a2100200541606a22050d000b0b2028a72102200341e0086a201b10cb010240201b450d00201b4105742105200a21000340200341e0086a20004120107e200041206a2100200541606a22050d000b0b202020166a2108200341e0086a200210cb0102402002450d0020112002410c6c6a210120112107034020072802002100200341e0086a2007280208220510cb012007410c6a210702402005450d00200541027421050340200320002802003602e006200341e0086a200341e0066a4104107e200041046a21002005417c6a22050d000b0b20072001470d000b0b200320083602e006200341e0086a200341e0066a4104107e2003201d3602e006200341e0086a200341e0066a4104107e200320173602e006200341e0086a200341e0066a4104107e2003201e3602e006200341e0086a200341e0066a4104107e200320183602e006200341e0086a200341e0066a4104107e200320193602e006200341e0086a200341e0066a4104107e200b200d20032802e008220020032802e808109f02024020032802e408450d00200010310b024020032802cc07450d00200b10310b0240202141ffffff3f71450d00201410310b0240201c41ffffff3f71450d00200910310b0240200e41ffffff3f71450d00200a10310b2027a7210702402002450d002002410c6c21052011210003400240200041046a28020041ffffffff0371450d00200028020010310b2000410c6a2100200541746a22050d000b0b02402007450d002007410c6c450d00201110310b0240202542ffffffff0383500d00200c10310b0240202642ffffff3f83500d00201310310b0240202442ffffff3f83500d00201210310b0240200f450d002015200f41027422076a2110200341e00b6a41046a2108200341b0076a211b201521000340200341e0086a200028020010f40420032802e008220520032802e80810bd02024020032802e408450d00200510310b200341c0086a41c491c200410310a702200341e0066a41d093c200411910a702200320002802003602e00b2003200341e00b6a410410c8023703a807200320083602ec082003201b3602e4082003200341e00b6a3602e8082003200341a8076a3602e008200341c8076a200341e0086a10880120032802d007220141206a2205417f4c0d060240024020050d00410121020c010b2005102f2202450d080b200341003602e808200320053602e408200320023602e008200341e0086a200341c0086a4110107e200341e0086a200341e0066a4110107e200341e0086a20032802c80722052001107e024020032802cc07450d00200510310b20032802e008220520032802e80810bd02024020032802e408450d00200510310b200041046a21002007417c6a22070d000b200341c0076a210a200341b8076a210b201521090340200341e0086a200928020010f10320032802e008220020032802e80810bd02024020032802e408450d00200010310b200341e0086a200928020010ef0320032802e008220020032802e80810bd02024020032802e408450d00200010310b200a4200370300200b4200370300200341a8076a41086a221b4200370300200342003703a807200341c0086a419acbc400410310a702201b200341c0086a41086a220c290000370300200320032900c0083703a807200341e0066a41f4cfc400410d10a702200641086a220d200341e0066a41086a221c290000370000200620032900e006370000200341e0086a200341a8076a412010e20220032802e0082200410420001b2102024002400240024020032902e408420020001b2224422088a7220e0e020300010b4100210020092802002002280200470d020c010b2009280200210841002100200e2105034020002005410176220720006a22012008200220014102746a280200491b2100200520076b220541014b0d000b2008200220004102746a280200470d012000200e490d002000200e1049000b200220004102746a2205200541046a2000417f73200e6a41027410c0091a20244280808080707c21240b200320023602e008200320243702e408200a4200370300200b4200370300201b4200370300200342003703a807200341c0086a419acbc400410310a702201b200c290000370300200320032900c0083703a807200341e0066a41f4cfc400410d10a702200d201c290000370000200620032900e006370000200341203602cc072003200341a8076a3602c807200341e0086a200341c8076a10e3020240202442ffffffff0383500d00200210310b200941046a2100200a4200370300200b4200370300201b4200370300200342003703a807200341c0086a419acbc400410310a702201b200c290000370300200320032900c0083703a807200341e0066a41bcd0c400411a10a702200d201c290000370000200620032900e0063700002003200341a8076a412010c002200328020421052003280200210720092802002101200a4200370300200b4200370300201b4200370300200342003703a807200341c0086a419acbc400410310a702201b200c290000370300200320032900c0083703a807200341e0066a41bcd0c400411a10a702200d201c290000370000200620032900e00637000002400240024020074101470d0020012005460d010b200341a8076a412010bd020c010b200320053602e008200341a8076a4120200341e0086a4104109f020b2000210920002010470d000b200f4102742105201521000340200010d402200041046a21002005417c6a22050d000b0b20032903a803200341b0036a29030020032802ec0310d50210d6020240201a41ffffffff0371450d00201510310b0240200341a4066a28020041ffffff3f71450d0020032802a00610310b0240200341b0066a28020041ffffff3f71450d0020032802ac0610310b200424000f0b20032802a00b210020032802980b2107024020032802940b450d00200510310b02402000450d00200710310b200341e0086a200341c8076a10dd030c000b0b4190aac6004139419cafc700103c000b4190aac6004139418cafc700103c000b103b000b1039000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e1e69df30610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000b9e0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a360200200241086a200341206a41e1ea91cb0610d30120022002290308370330200241386a200241306a10b5010240024020022d00384101470d00200241186a4200370300200241206a4200370300200241286a4200370300200242003703100c010b200241286a200241d1006a290000370300200241206a200241c9006a290000370300200241186a200241c1006a290000370300200220022900393703100b20002003360200200020022903103700042000410c6a200241186a290300370000200041146a200241206a2903003700002000411c6a200241286a2903003700000b200241e0006a24000bcc0201027f230041e0006b2202240002400240200128020022032001280204470d00200041003602000c010b200120034181026a3602002002200341206a41e2ca95b30610d30120022002290300370330200241386a200241306a10cf010240024020022d00384101470d00200241106a4200370300200241186a4200370300200241206a4200370300200241086a41206a41003a0000200242003703080c010b200241086a41206a200241d9006a2d00003a0000200241206a200241d1006a290000370300200241186a200241c9006a290000370300200241106a200241c1006a290000370300200220022900393703080b20002003360200200020022903083700042000410c6a200241106a290300370000200041146a200241186a2903003700002000411c6a200241206a290300370000200041246a200241286a2d00003a00000b200241e0006a24000b13002000410536020420004180bec5003602000b3400200041e28bc50036020420004100360200200041146a4102360200200041106a41d8d0c500360200200041086a42093702000b1300200041043602042000418cd5c5003602000b4401027f230041106b2202240002404104102f22030d001039000b200042043702042000200336020020024180a00136020c20002002410c6a4104107e200241106a24000b4501027f230041106b2202240002404104102f22030d001039000b20004204370204200020033602002002418080c00136020c20002002410c6a4104107e200241106a24000b4901027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024280e1eb17370300200020024110107e200241106a24000b4c01027f230041106b2202240002404110102f22030d001039000b20004210370204200020033602002002420037030820024280a0e5b9c29101370300200020024110107e200241106a24000b130020004108360204200041fcd8c5003602000b3400200041c686c50036020420004100360200200041146a4104360200200041106a41fcefc500360200200041086a42093702000b130020004103360204200041d8f6c5003602000b4301027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241f40336020c20002002410c6a4104107e200241106a24000b4b01027f230041106b22022400200242f0f2bd99e6ac9db7e40037030802404108102f22030d001039000b20004208370204200020033602002000200241086a4108107e200241106a24000bff0101057f03400240024020002802082201200028020c2202460d002000200141306a2203360208024020012d00080e03020300030b20032002460d0003402000200341306a22013602080240024020032d00080e03000103010b200341106a280000450d002003410c6a2800001031200028020c2102200028020821010b2001210320012002470d000b0b024020002802042201450d000240200028020022042000280210220541086a22022802002203460d0020052802002205200341306c6a2005200441306c6a200141306c10c0091a200028020421010b2002200120036a3602000b0f0b200141106a280000450d002001410c6a28000010310c000b0b130020004107360204200041ac85c6003602000b130020004102360204200041e08bc6003602000b8b0b010a7f230041b0086b2203240020012802002104200128020422052f01ae2b210620034188046a20052001280208220741f8036c6a220141f80310bf091a2001200141f8036a20062007417f736a41f8036c10c0091a20052006417f6a22013b01ae2b200341106a20034188046a41f80310bf091a0240200141ffff037141044b0d0002400240024020052802a82b2206450d00200441016a21080240024020052f01ac2b22090d0020062f01ae2b0d012003419c046a41013602002003420137028c04200341d897ca00360288042003410436029408200341bc91ca0036029008200320034190086a3602980420034188046a41c491ca001047000b024020062009417f6a22094102746a41b02b6a280200220a2f01ae2b200141ffff03716a41016a410b4b0d00200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4101200710f3070c040b200341a0046a200536020020034198046a200a3602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110f4072003200741016a360288080c020b0240200141ffff0371200941027420066a41b42b6a28020022012f01ae2b6a41016a410b4b0d00200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034180086a20034188046a4100200710f3070c030b200341a0046a200136020020034198046a20053602002003200436029c04200320043602940420032009360290042003200636028c04200320083602880420034188046a410110f5070b20032007360288080b200320053602840820032004360280080b2003280288082107200328028008210420032802840822052802a82b2201450d0020012f01ae2b220841044b0d00200441016a21060240034020012802a82b2209450d01200841ffff03712108200641016a210b024002400240024020012f01ac2b220a0d0020092f01ae2b0d012003419c046a41013602002003420137028c04200341d897ca00360288042003410436029408200341bc91ca0036029008200320034190086a3602980420034188046a41c491ca001047000b2009200a417f6a220c4102746a41b02b6a280200210a200320013602a808200320063602a4082003200a3602a0082003200636029c082003200c3602980820032009360294082003200b3602900802402008200a2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200341086a20034188046a10f607200328020c2101200328020821060c030b20034190086a410520086b10f4070c010b2003200a41027420096a41b42b6a280200220c3602a808200320063602a408200320013602a0082003200636029c082003200a3602980820032009360294082003200b3602900802402008200c2f01ae2b6a41016a410b4b0d0020034188046a41186a20034190086a41186a28020036020020034188046a41106a20034190086a41106a29030037030020034188046a41086a20034190086a41086a290300370300200320032903900837038804200320034188046a10f60720032802042101200328020021060c020b20034190086a410520086b10f5070b410021010b2001450d0220012f01ae2b220841044d0d000c020b0b200841ffff03710d00200241013a00000b2000200341106a41f80310bf0922014180046a2007360200200141fc036a2005360200200120043602f803200341b0086a24000bad04010d7f23004180046b22042400024002400240200141186a28020022052f01ae2b2206200141106a28020022072f01ae2b220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f01ae2b210f2007200a3b01ae2b200441086a200e200c41f8036c6a220141f80310bf091a2001200141f8036a200f200c417f736a41f8036c10c0091a2007200841f8036c6a200441086a41f80310bf091a2007200941f8036c6a2005200641f8036c10bf091a200e41b02b6a2210200c41016a22014102746a200c410274220c20106a41086a200f2001417f736a41027441046a10c0091a02402001200f4f0d00200c200e6a41b42b6a210c0340200c280200221020013b01ac2b2010200e3602a82b200c41046a210c200f200141016a2201470d000b0b200e200e2f01ae2b417f6a3b01ae2b0240200d4102490d002006200a20096b470d03200720094102746a41b02b6a200541b02b6a200641016a41027410bf091a200a20084d0d00200641016a2110200841027420076a41b42b6a21012009210c03402001280200220e200c3b01ac2b200e20073602a82b200141046a2101200c41016a210c2010417f6a22100d000b0b20051031200020073602042000200b36020020002009410020021b20036a36020820044180046a24000f0b41d094ca0041910141e495ca00103c000b41d491ca00412a418092ca00103c000b41ac90ca00412841d490ca00103c000bbf17050b7f3f7e017f017e017f230041d0006b220224000240024002400240200041186a2802002f01ae2b220320016a2204410c4f0d00200041106a28020022052f01ae2b22062001490d012005200620016b22073b01ae2b200041186a220528020020043b01ae2b20052802002208200141f8036c6a2008200341f8036c10c0091a2006200741016a22086b22062001417f6a470d022005280200200041106a2209280200200841f8036c6a200641f8036c220a10bf091a200241086a220b2009280200200741f8036c6a220741e8036a290300370300200241106a220c200741f0036a290300370300200220072903e00337030020072903c003210d200741c8036a290300210e200741d0036a290300210f200741d8036a290300211020072903a0032111200741a8036a2903002112200741b0036a2903002113200741b8036a2903002114200729038003211520074188036a290300211620074190036a290300211720074198036a290300211820072903e0022119200741e8026a290300211a200741f0026a290300211b200741f8026a290300211c20072903c002211d200741c8026a290300211e200741d0026a290300211f200741d8026a290300212020072903a0022121200741a8026a2903002122200741b0026a2903002123200741b8026a290300212420074188026a290300212520074190026a290300212620074198026a2903002127200741e8016a2903002128200741f0016a2903002129200741f8016a290300212a200741c8016a290300212b200741d0016a290300212c200741d8016a290300212d200741a8016a290300212e200741b0016a290300212f200741b8016a290300213020074188016a290300213120074190016a290300213220074198016a2903002133200741e8006a2903002134200741f0006a2903002135200741f8006a2903002136200741c8006a2903002137200741d0006a2903002138200741d8006a2903002139200741286a290300213a200741306a290300213b200741386a290300213c200741186a290300213d200729038002213e20072903e001213f20072903c001214020072903a001214120072903800121422007290360214320072903402144200729032021452007290300214620072903082147200041046a280200200028020841f8036c6a2206290310214820062007290310370310200629030821492006204737030820062903002147200620463703002006290220214620062045370220200629024021452006204437024020062902602144200620433702602006290280012143200620423702800120062902a0012142200620413702a00120062902c0012141200620403702c00120062902e00121402006203f3702e001200629028002213f2006203e37028002200641186a2207290300213e2007203d370300200641386a2207290200213d2007203c370200200641306a2207290200213c2007203b370200200641286a2207290200213b2007203a370200200641d8006a2207290200213a20072039370200200641d0006a2207290200213920072038370200200641c8006a2207290200213820072037370200200641f8006a2207290200213720072036370200200641f0006a2207290200213620072035370200200641e8006a220729020021352007203437020020064198016a220729020021342007203337020020064190016a220729020021332007203237020020064188016a2207290200213220072031370200200641b8016a2207290200213120072030370200200641b0016a220729020021302007202f370200200641a8016a2207290200212f2007202e370200200641d8016a2207290200212e2007202d370200200641d0016a2207290200212d2007202c370200200641c8016a2207290200212c2007202b370200200641f8016a2207290200212b2007202a370200200641f0016a2207290200212a20072029370200200641e8016a220729020021292007202837020020064198026a220729020021282007202737020020064190026a220729020021272007202637020020064188026a2207290200212620072025370200200641b8026a2207290200212520072024370200200641b0026a2207290200212420072023370200200641a8026a220729020021232007202237020020062902a0022122200620213702a002200641d8026a2207290200212120072020370200200641d0026a220729020021202007201f370200200641c8026a2207290200211f2007201e37020020062902c002211e2006201d3702c002200641f8026a2207290200211d2007201c370200200641e8026a2207290200211c200641f0026a2203290200214a20062902e002214b2003201b3702002007201a370200200620193702e00220064188036a2207290200211920064190036a2203290200211a20064198036a224c290200211b200629028003214d204c201837020020032017370200200720163702002006201537028003200641a8036a22072902002115200641b0036a22032902002116200641b8036a224c290200211720062902a0032118204c20143702002003201337020020072012370200200620113702a003200641c8036a22072902002111200641d0036a22032902002112200641d8036a224c290200211320062902c0032114204c20103702002003200f3702002007200e3702002006200d3702c003200241306a41106a2207200641f0036a224c290000220d370300200241306a41086a2203200641e8036a224e290000220e370300200220062900e003220f370330200620022903003700e003204e200b290300370000204c200c290300370000200241186a41106a2206200d370300200241186a41086a220b200e3703002002200f370318200720062903003703002003200b290300370300200220022903183703302005280200200a6a220620143703c003200620183703a0032006204d370380032006204b3703e0022006201e3703c002200620223703a0022006203f37038002200620403703e001200620413703c001200620423703a0012006204337038001200620443703602006204537034020062046370320200620483703102006204937030820062047370300200641d8036a2013370300200641d0036a2012370300200641c8036a2011370300200641b8036a2017370300200641b0036a2016370300200641a8036a201537030020064198036a201b37030020064190036a201a37030020064188036a2019370300200641f8026a201d370300200641f0026a204a370300200641e8026a201c370300200641d8026a2021370300200641d0026a2020370300200641c8026a201f370300200641b8026a2025370300200641b0026a2024370300200641a8026a202337030020064198026a202837030020064190026a202737030020064188026a2026370300200641f8016a202b370300200641f0016a202a370300200641e8016a2029370300200641d8016a202e370300200641d0016a202d370300200641c8016a202c370300200641b8016a2031370300200641b0016a2030370300200641a8016a202f37030020064198016a203437030020064190016a203337030020064188016a2032370300200641f8006a2037370300200641f0006a2036370300200641e8006a2035370300200641d8006a203a370300200641d0006a2039370300200641c8006a2038370300200641386a203d370300200641306a203c370300200641286a203b370300200641186a203e370300200620022903303703e003200641e8036a2003290300370300200641f0036a2007290300370300200028020c21060240024020002802140d002006450d010c050b2006450d04200928020021072005280200220541b02b6a2206200141027422006a2006200420016b41027441046a10c0091a2006200720084102746a41b02b6a200010bf091a200441016a21014100210703402006280200220020073b01ac2b200020053602a82b200641046a21062001200741016a2207470d000b0b200241d0006a24000f0b41c493ca00413341f893ca00103c000b418894ca00412741b094ca00103c000b41ac90ca00412841d490ca00103c000b418c93ca00412841c094ca00103c000b9418070b7f3d7e017f027e017f017e017f230041d0006b220224000240024002400240200041106a28020022032f01ae2b220420016a2205410c4f0d00200041186a2802002f01ae2b22062001490d01200320053b01ae2b200041186a2207280200200620016b22083b01ae2b200241086a220920072802002001417f6a220a41f8036c220b6a220641e8036a290300370300200241106a220c200641f0036a290300370300200220062903e00337030020062903c003210d200641c8036a290300210e200641d0036a290300210f200641d8036a290300211020062903a0032111200641a8036a2903002112200641b0036a2903002113200641b8036a2903002114200629038003211520064188036a290300211620064190036a290300211720064198036a290300211820062903e0022119200641e8026a290300211a200641f0026a290300211b200641f8026a290300211c20062903c002211d200641c8026a290300211e200641d0026a290300211f200641d8026a290300212020062903a0022121200641a8026a2903002122200641b0026a2903002123200641b8026a290300212420064188026a290300212520064190026a290300212620064198026a2903002127200641e8016a2903002128200641f0016a2903002129200641f8016a290300212a200641c8016a290300212b200641d0016a290300212c200641d8016a290300212d200641a8016a290300212e200641b0016a290300212f200641b8016a290300213020064188016a290300213120064190016a290300213220064198016a2903002133200641e8006a2903002134200641f0006a2903002135200641f8006a2903002136200641c8006a2903002137200641d0006a2903002138200641d8006a2903002139200641286a290300213a200641306a290300213b200641386a290300213c200641186a290300213d200629038002213e20062903e001213f20062903c001214020062903a001214120062903800121422006290360214320062903402144200629032021452006290300214620062903082147200041046a280200200028020841f8036c6a2203290310214820032006290310370310200329030821492003204737030820032903002147200320463703002003290220214620032045370220200329024021452003204437024020032902602144200320433702602003290280012143200320423702800120032902a0012142200320413702a00120032902c0012141200320403702c00120032902e00121402003203f3702e001200329028002213f2003203e37028002200341186a2206290300213e2006203d370300200341386a2206290200213d2006203c370200200341306a2206290200213c2006203b370200200341286a2206290200213b2006203a370200200341d8006a2206290200213a20062039370200200341d0006a2206290200213920062038370200200341c8006a2206290200213820062037370200200341f8006a2206290200213720062036370200200341f0006a2206290200213620062035370200200341e8006a220629020021352006203437020020034198016a220629020021342006203337020020034190016a220629020021332006203237020020034188016a2206290200213220062031370200200341b8016a2206290200213120062030370200200341b0016a220629020021302006202f370200200341a8016a2206290200212f2006202e370200200341d8016a2206290200212e2006202d370200200341d0016a2206290200212d2006202c370200200341c8016a2206290200212c2006202b370200200341f8016a2206290200212b2006202a370200200341f0016a2206290200212a20062029370200200341e8016a220629020021292006202837020020034198026a220629020021282006202737020020034190026a220629020021272006202637020020034188026a2206290200212620062025370200200341b8026a2206290200212520062024370200200341b0026a2206290200212420062023370200200341a8026a220629020021232006202237020020032902a0022122200320213702a002200341d8026a2206290200212120062020370200200341d0026a220629020021202006201f370200200341c8026a2206290200211f2006201e37020020032902c002211e2003201d3702c002200341f8026a2206290200211d2006201c370200200341e8026a2206290200211c200341f0026a224a290200214b20032902e002214c204a201b3702002006201a370200200320193702e00220034188036a2206290200211920034190036a224a290200211a20034198036a224d290200211b200329028003214e204d2018370200204a2017370200200620163702002003201537028003200341a8036a22062902002115200341b0036a224a2902002116200341b8036a224d290200211720032902a0032118204d2014370200204a201337020020062012370200200320113702a003200341c8036a22062902002111200341d0036a224a2902002112200341d8036a224d290200211320032902c0032114204d2010370200204a200f3702002006200e3702002003200d3702c003200241306a41106a2206200341f0036a224d290000220d370300200241306a41086a224a200341e8036a224f290000220e370300200220032900e003220f370330200320022903003700e003204f2009290300370000204d200c290300370000200241186a41106a2203200d370300200241186a41086a2209200e3703002002200f37031820062003290300370300204a200929030037030020022002290318370330200041106a2209280200200441f8036c6a220320143703c003200320183703a0032003204e370380032003204c3703e0022003201e3703c002200320223703a0022003203f37038002200320403703e001200320413703c001200320423703a0012003204337038001200320443703602003204537034020032046370320200320483703102003204937030820032047370300200341d8036a2013370300200341d0036a2012370300200341c8036a2011370300200341b8036a2017370300200341b0036a2016370300200341a8036a201537030020034198036a201b37030020034190036a201a37030020034188036a2019370300200341f8026a201d370300200341f0026a204b370300200341e8026a201c370300200341d8026a2021370300200341d0026a2020370300200341c8026a201f370300200341b8026a2025370300200341b0026a2024370300200341a8026a202337030020034198026a202837030020034190026a202737030020034188026a2026370300200341f8016a202b370300200341f0016a202a370300200341e8016a2029370300200341d8016a202e370300200341d0016a202d370300200341c8016a202c370300200341b8016a2031370300200341b0016a2030370300200341a8016a202f37030020034198016a203437030020034190016a203337030020034188016a2032370300200341f8006a2037370300200341f0006a2036370300200341e8006a2035370300200341d8006a203a370300200341d0006a2039370300200341c8006a2038370300200341386a203d370300200341306a203c370300200341286a203b370300200341186a203e370300200320022903303703e003200341e8036a204a290300370300200341f0036a2006290300370300200a2005200441016a22036b470d022009280200200341f8036c6a2007280200200b10bf091a200728020022062006200141f8036c6a200841f8036c10c0091a200028020c21060240024020002802140d002006450d010c050b2006450d042009280200224a20034102746a41b02b6a2007280200220741b02b6a22062001410274220010bf091a2006200620006a200841027441046a10c0091a0240200520044d0d002004410274204a6a41b42b6a210603402006280200220020033b01ac2b2000204a3602a82b200641046a2106200341016a21032001417f6a22010d000b0b2008417f460d00200741b02b6a2103200841016a21004100210603402003280200220120063b01ac2b200120073602a82b200341046a21032000200641016a2206470d000b0b200241d0006a24000f0b419092ca00413241c492ca00103c000b41d492ca00412841fc92ca00103c000b41ac90ca00412841d490ca00103c000b418c93ca00412841b493ca00103c000bf403010c7f23004180046b2202240002400240200141106a28020022032f01ae2b220441016a2205200141186a28020022062f01ae2b22076a2208410c4f0d00200128020821092001280200210a2001280204220b2f01ae2b210c200320083b01ae2b200241086a200b200941f8036c6a220141f80310bf091a2001200141f8036a200c2009417f736a41f8036c10c0091a2003200441f8036c6a200241086a41f80310bf091a2003200541f8036c6a2006200741f8036c10bf091a200b41b02b6a220d200941016a22014102746a20094102742209200d6a41086a200c2001417f736a41027441046a10c0091a02402001200c4f0d002009200b6a41b42b6a210903402009280200220d20013b01ac2b200d200b3602a82b200941046a2109200c200141016a2201470d000b0b200b200b2f01ae2b417f6a3b01ae2b0240200a4102490d002007200820056b470d02200320054102746a41b02b6a200641b02b6a200741016a41027410bf091a200820044d0d00200741016a2109200441027420036a41b42b6a210103402001280200220d20053b01ac2b200d20033602a82b200141046a2101200541016a21052009417f6a22090d000b0b200610312000200b3602042000200a36020020024180046a24000f0b41d491ca00412a418092ca00103c000b41ac90ca00412841d490ca00103c000b9105020f7f027e230041d0036b22042400024002400240200141186a28020022052f01a6292206200141106a28020022072f01a629220820021b2003490d00200841016a220920066a220a410c4f0d01200128020c210b2001280208210c2001280200210d2001280204220e2f01a629210f2007200a3b01a6292004200e200c41d0036c6a220141d00310bf0921102001200141d0036a200f200c417f736a221141d0036c10c0091a2007200841d0036c6a201041d00310bf091a2007200941d0036c6a2005200641d0036c10bf091a200e41f0276a2212200c4104746a22042903002113200441086a290300211420042012200c41016a22014104746a201141047410c0091a200741f0276a220420084104746a2211201437030820112013370300200420094104746a200541f0276a200641047410bf091a200e41a8296a220420014102746a200c410274220c20046a41086a200f2001417f736a41027441046a10c0091a02402001200f4f0d00200c200e6a41ac296a210c0340200c280200220420013b01a4292004200e3602a029200c41046a210c200f200141016a2201470d000b0b200e200e2f01a629417f6a3b01a6290240200d4102490d002006200a20096b470d03200720094102746a41a8296a200541a8296a200641016a41027410bf091a200a20084d0d00200641016a2104200841027420076a41ac296a21012009210c03402001280200220e200c3b01a429200e20073602a029200141046a2101200c41016a210c2004417f6a22040d000b0b20051031200020073602042000200b36020020002009410020021b20036a360208201041d0036a24000f0b41d094ca0041910141e495ca00103c000b41d491ca00412a418092ca00103c000b41ac90ca00412841d490ca00103c000bfa16080b7f397e017f027e017f027e017f017e230041c0006b220224000240024002400240200041186a2802002f01a629220320016a2204410c4f0d00200041106a28020022052f01a62922062001490d012005200620016b22073b01a629200041186a220528020020043b01a62920052802002208200141d0036c6a2008200341d0036c10c0091a200528020041f0276a220820014104746a2008200341047410c0091a2006200741016a22086b22032001417f6a470d022005280200200041106a2206280200200841d0036c6a200341d0036c220910bf091a200528020041f0276a200628020020084104746a41f0276a2003410474220a10bf091a200241086a220b2006280200220c200741d0036c6a220341c8036a290300370300200220032903c00337030020032903a003210d200341a8036a290300210e200341b0036a290300210f200341b8036a2903002110200329038003211120034188036a290300211220034190036a290300211320034198036a290300211420032903e0022115200341e8026a2903002116200341f0026a2903002117200341f8026a290300211820032903c0022119200341c8026a290300211a200341d0026a290300211b200341d8026a290300211c20032903a002211d200341a8026a290300211e200341b0026a290300211f200341b8026a290300212020034188026a290300212120034190026a290300212220034198026a2903002123200341e8016a2903002124200341f0016a2903002125200341f8016a2903002126200341c8016a2903002127200341d0016a2903002128200341d8016a2903002129200341a8016a290300212a200341b0016a290300212b200341b8016a290300212c20034188016a290300212d20034190016a290300212e20034198016a290300212f200341e8006a2903002130200341f0006a2903002131200341f8006a2903002132200341c8006a2903002133200341d0006a2903002134200341d8006a2903002135200341286a2903002136200341306a2903002137200341386a2903002138200341186a2903002139200329038002213a20032903e001213b20032903c001213c20032903a001213d200329038001213e2003290360213f20032903402140200329032021412003290300214220032903082143200c20074104746a220741f8276a2903002144200741f0276a2903002145200041046a280200220c2000280208224641d0036c6a22072903102147200720032903103703102007290308214820072043370308200729030021432007204237030020072902202142200720413702202007290240214120072040370240200729026021402007203f370260200729028001213f2007203e3702800120072902a001213e2007203d3702a00120072902c001213d2007203c3702c00120072902e001213c2007203b3702e001200729028002213b2007203a37028002200741186a2203290300213a20032039370300200741386a2203290200213920032038370200200741306a2203290200213820032037370200200741286a2203290200213720032036370200200741d8006a2203290200213620032035370200200741d0006a2203290200213520032034370200200741c8006a2203290200213420032033370200200741f8006a2203290200213320032032370200200741f0006a2203290200213220032031370200200741e8006a220329020021312003203037020020074198016a220329020021302003202f37020020074190016a2203290200212f2003202e37020020074188016a2203290200212e2003202d370200200741b8016a2203290200212d2003202c370200200741b0016a2203290200212c2003202b370200200741a8016a2203290200212b2003202a370200200741d8016a2203290200212a20032029370200200741d0016a2203290200212920032028370200200741c8016a2203290200212820032027370200200741f8016a2203290200212720032026370200200741f0016a2203290200212620032025370200200741e8016a220329020021252003202437020020074198026a220329020021242003202337020020074190026a220329020021232003202237020020074188026a2203290200212220032021370200200741b8026a2203290200212120032020370200200741b0026a220329020021202003201f370200200741a8026a2203290200211f2003201e37020020072902a002211e2007201d3702a002200741d8026a2203290200211d2003201c370200200741d0026a2203290200211c2003201b370200200741c8026a2203290200211b2003201a37020020072902c002211a200720193702c002200741f8026a2203290200211920032018370200200741e8026a22032902002118200741f0026a2249290200214a20072902e002214b2049201737020020032016370200200720153702e00220074188036a2203290200211520074190036a2249290200211620074198036a224c2902002117200729028003214d204c201437020020492013370200200320123702002007201137028003200741a8036a22032902002111200741b0036a22492902002112200741b8036a224c290200211320072902a0032114204c20103702002049200f3702002003200e3702002007200d3702a003200241206a41086a2203200741c8036a2249290200220d370300200220072902c003220e370320200720022903003702c0032049200b290300370200200241106a41086a2207200d3703002002200e370310200c20464104746a220b41f0276a220c290300210d200c2045370300200b41f8276a220b290300210e200b20443703002003200729030037030020022002290310370320200528020020096a220720143703a0032007204d370380032007204b3703e0022007201a3703c0022007201e3703a0022007203b370380022007203c3703e0012007203d3703c0012007203e3703a0012007203f37038001200720403703602007204137034020072042370320200720473703102007204837030820072043370300200741b8036a2013370300200741b0036a2012370300200741a8036a201137030020074198036a201737030020074190036a201637030020074188036a2015370300200741f8026a2019370300200741f0026a204a370300200741e8026a2018370300200741d8026a201d370300200741d0026a201c370300200741c8026a201b370300200741b8026a2021370300200741b0026a2020370300200741a8026a201f37030020074198026a202437030020074190026a202337030020074188026a2022370300200741f8016a2027370300200741f0016a2026370300200741e8016a2025370300200741d8016a202a370300200741d0016a2029370300200741c8016a2028370300200741b8016a202d370300200741b0016a202c370300200741a8016a202b37030020074198016a203037030020074190016a202f37030020074188016a202e370300200741f8006a2033370300200741f0006a2032370300200741e8006a2031370300200741d8006a2036370300200741d0006a2035370300200741c8006a2034370300200741386a2039370300200741306a2038370300200741286a2037370300200741186a203a370300200720022903203703c003200741c8036a20032903003703002005280200200a6a220741f8276a200e370300200741f0276a200d370300200028020c21070240024020002802140d002007450d010c050b2007450d04200628020021032005280200220541a8296a2207200141027422006a2007200420016b41027441046a10c0091a2007200320084102746a41a8296a200010bf091a200441016a21014100210303402007280200220020033b01a429200020053602a029200741046a21072001200341016a2203470d000b0b200241c0006a24000f0b41c493ca00413341f893ca00103c000b418894ca00412741b094ca00103c000b41ac90ca00412841d490ca00103c000b418c93ca00412841c094ca00103c000bcf170a0a7f377e017f027e027f027e017f027e017f017e230041c0006b220224000240024002400240200041106a28020022032f01a629220420016a2205410c4f0d00200041186a2802002f01a62922062001490d01200320053b01a629200041186a2207280200200620016b22083b01a629200241086a2209200728020022032001417f6a220a41d0036c220b6a220641c8036a290300370300200220062903c00337030020062903a003210c200641a8036a290300210d200641b0036a290300210e200641b8036a290300210f200629038003211020064188036a290300211120064190036a290300211220064198036a290300211320062903e0022114200641e8026a2903002115200641f0026a2903002116200641f8026a290300211720062903c0022118200641c8026a2903002119200641d0026a290300211a200641d8026a290300211b20062903a002211c200641a8026a290300211d200641b0026a290300211e200641b8026a290300211f20064188026a290300212020064190026a290300212120064198026a2903002122200641e8016a2903002123200641f0016a2903002124200641f8016a2903002125200641c8016a2903002126200641d0016a2903002127200641d8016a2903002128200641a8016a2903002129200641b0016a290300212a200641b8016a290300212b20064188016a290300212c20064190016a290300212d20064198016a290300212e200641e8006a290300212f200641f0006a2903002130200641f8006a2903002131200641c8006a2903002132200641d0006a2903002133200641d8006a2903002134200641286a2903002135200641306a2903002136200641386a2903002137200641186a2903002138200629038002213920062903e001213a20062903c001213b20062903a001213c200629038001213d2006290360213e2006290340213f2006290320214020062903002141200629030821422003200a41047422436a220341f8276a2903002144200341f0276a2903002145200041046a28020022462000280208224741d0036c6a2203290310214820032006290310370310200329030821492003204237030820032903002142200320413703002003290220214120032040370220200329024021402003203f3702402003290260213f2003203e370260200329028001213e2003203d3702800120032902a001213d2003203c3702a00120032902c001213c2003203b3702c00120032902e001213b2003203a3702e001200329028002213a2003203937028002200341186a2206290300213920062038370300200341386a2206290200213820062037370200200341306a2206290200213720062036370200200341286a2206290200213620062035370200200341d8006a2206290200213520062034370200200341d0006a2206290200213420062033370200200341c8006a2206290200213320062032370200200341f8006a2206290200213220062031370200200341f0006a2206290200213120062030370200200341e8006a220629020021302006202f37020020034198016a2206290200212f2006202e37020020034190016a2206290200212e2006202d37020020034188016a2206290200212d2006202c370200200341b8016a2206290200212c2006202b370200200341b0016a2206290200212b2006202a370200200341a8016a2206290200212a20062029370200200341d8016a2206290200212920062028370200200341d0016a2206290200212820062027370200200341c8016a2206290200212720062026370200200341f8016a2206290200212620062025370200200341f0016a2206290200212520062024370200200341e8016a220629020021242006202337020020034198026a220629020021232006202237020020034190026a220629020021222006202137020020034188026a2206290200212120062020370200200341b8026a220629020021202006201f370200200341b0026a2206290200211f2006201e370200200341a8026a2206290200211e2006201d37020020032902a002211d2003201c3702a002200341d8026a2206290200211c2006201b370200200341d0026a2206290200211b2006201a370200200341c8026a2206290200211a2006201937020020032902c0022119200320183702c002200341f8026a2206290200211820062017370200200341e8026a22062902002117200341f0026a224a290200214b20032902e002214c204a201637020020062015370200200320143702e00220034188036a2206290200211420034190036a224a290200211520034198036a224d2902002116200329028003214e204d2013370200204a2012370200200620113702002003201037028003200341a8036a22062902002110200341b0036a224a2902002111200341b8036a224d290200211220032902a0032113204d200f370200204a200e3702002006200d3702002003200c3702a003200241206a41086a224a200341c8036a2206290200220c370300200220032902c003220d370320200320022903003702c00320062009290300370200200241106a41086a2203200c3703002002200d370310204620474104746a220641f0276a2209290300210c20092045370300200641f8276a2206290300210d20062044370300204a200329030037030020022002290310370320200041106a2206280200200441d0036c6a220320133703a0032003204e370380032003204c3703e002200320193703c0022003201d3703a0022003203a370380022003203b3703e0012003203c3703c0012003203d3703a0012003203e370380012003203f3703602003204037034020032041370320200320483703102003204937030820032042370300200341b8036a2012370300200341b0036a2011370300200341a8036a201037030020034198036a201637030020034190036a201537030020034188036a2014370300200341f8026a2018370300200341f0026a204b370300200341e8026a2017370300200341d8026a201c370300200341d0026a201b370300200341c8026a201a370300200341b8026a2020370300200341b0026a201f370300200341a8026a201e37030020034198026a202337030020034190026a202237030020034188026a2021370300200341f8016a2026370300200341f0016a2025370300200341e8016a2024370300200341d8016a2029370300200341d0016a2028370300200341c8016a2027370300200341b8016a202c370300200341b0016a202b370300200341a8016a202a37030020034198016a202f37030020034190016a202e37030020034188016a202d370300200341f8006a2032370300200341f0006a2031370300200341e8006a2030370300200341d8006a2035370300200341d0006a2034370300200341c8006a2033370300200341386a2038370300200341306a2037370300200341286a2036370300200341186a2039370300200320022903203703c003200341c8036a204a290300370300200628020020044104746a220341f8276a200d370300200341f0276a200c370300200a2005200441016a22036b470d022006280200200341d0036c6a2007280200200b10bf091a200628020020034104746a41f0276a200728020041f0276a204310bf091a2007280200220a200a200141d0036c6a200841d0036c10c0091a200728020041f0276a220a200a20014104746a200841047410c0091a200028020c210a0240024020002802140d00200a450d010c050b200a450d042006280200220a20034102746a41a8296a2007280200220741a8296a22062001410274220010bf091a2006200620006a200841027441046a10c0091a0240200520044d0d002004410274200a6a41ac296a210603402006280200220020033b01a4292000200a3602a029200641046a2106200341016a21032001417f6a22010d000b0b2008417f460d00200741a8296a2103200841016a21004100210603402003280200220120063b01a429200120073602a029200341046a21032000200641016a2206470d000b0b200241c0006a24000f0b419092ca00413241c492ca00103c000b41d492ca00412841fc92ca00103c000b41ac90ca00412841d490ca00103c000b418c93ca00412841b493ca00103c000bd804020e7f027e230041d0036b2202240002400240200141106a28020022032f01a629220441016a2205200141186a28020022062f01a62922076a2208410c4f0d00200128020821092001280200210a2001280204220b2f01a629210c200320083b01a6292002200b200941d0036c6a220141d00310bf09210d2001200141d0036a200c2009417f736a220e41d0036c10c0091a2003200441d0036c6a200d41d00310bf091a2003200541d0036c6a2006200741d0036c10bf091a200b41f0276a220f20094104746a22022903002110200241086a29030021112002200f200941016a22014104746a200e41047410c0091a200341f0276a220220044104746a220e2011370308200e2010370300200220054104746a200641f0276a200741047410bf091a200b41a8296a220220014102746a2009410274220920026a41086a200c2001417f736a41027441046a10c0091a02402001200c4f0d002009200b6a41ac296a210903402009280200220220013b01a4292002200b3602a029200941046a2109200c200141016a2201470d000b0b200b200b2f01a629417f6a3b01a6290240200a4102490d002007200820056b470d02200320054102746a41a8296a200641a8296a200741016a41027410bf091a200820044d0d00200741016a2109200441027420036a41ac296a210103402001280200220220053b01a429200220033602a029200141046a2101200541016a21052009417f6a22090d000b0b200610312000200b3602042000200a360200200d41d0036a24000f0b41d491ca00412a418092ca00103c000b41ac90ca00412841d490ca00103c000bf40903037f047e017f024002400240024002400240024002400240024002400240024002400240024002400240024020002d0000220220012d00002203470d00410021032002417f6a0e090401060208090a0c030c0b417f410120022003491b0f0b20024102460d0341000f0b20024104460d0441000f0b20024109460d0741000f0b4100210320024101470d07417f200041046a2802002202200141046a28020022004720022000491b0f0b200041246a2802002202200141246a2802002203470d07024020024101470d00200041286a280200200141286a280200200141306a2802002202200041306a2802002204200420024b1b10c20922030d0941ff01210320042002490d07200420024722030d070b41002103200041016a200141016a412010c2092202450d06417f410120024100481b0f0b4100210320024103470d05200041046a2802002202200141046a2802002203470d08024020024101470d00200041086a280200200141086a280200200141106a2802002202200041106a2802002204200420024b1b10c20922030d0a41ff01210320042002490d06200420024722030d060b417f200041186a2903002205200141186a29030022065220052006541b0f0b200041186a2802002202200141186a2802002203470d09024020024101470d002000411c6a2802002001411c6a280200200141246a2802002202200041246a2802002204200420024b1b10c20922030d0b41ff01210320042002490d05200420024722030d050b41002103200041016a200141016a411410c2092202450d04417f410120024100481b0f0b4100210320024105470d03417f20002d0001220220012d000122004720022000491b0f0b4100210320024106470d02417f200041086a2903002207200141086a290300220885200041106a2903002205200141106a290300220685844200522007200854200520065420052006511b1b0f0b4100210320024107470d010240200041046a280200200141046a2802002001410c6a28020022022000410c6a2802002200200020024b1b10c20922010d00417f200020024720002002491b0f0b417f410120014100481b0f0b02400240024002400240200041046a2802002202200141046a2802002203470d002002417f6a0e020102040b417f410120022003491b0f0b0240200041086a280200200141086a280200200141106a2802002202200041106a2802002204200420024b1b10c20922030d0041ff01210320042002490d04200420024721030c020b417f410120034100481b0f0b41ff012103200041086a2802002202200141086a2802002204490d02200220044721030b20030d010b02400240024002400240200041146a2802002202200141146a2802002203470d002001411c6a2802002104200141186a28020021012000411c6a2802002109200041186a2802002100410021032002417f6a0e0401020304050b417f410120022003481b0f0b417f200020014720002001491b0f0b417f200020014720002001491b22030d02417f200920044720092004491b0f0b417f200020014720002001491b22030d01417f200920044720092004491b0f0b417f200020014720002001491b22030d00417f200920044720092004491b21030b20030f0b417f410120022003491b0f0b417f410120034100481b0f0b417f410120022003491b0f0b417f410120034100481b0f0b417f410120022003491b0f0b417f410120034100481b0bff6201057f230041a0016b22002400200041043602142000419aa7c6003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210141002802f8994a210241002802849a4a210320004198016a41df0236020020004190016a42be808080103703002000418c016a41e98fc60036020020004184016a422137020020004180016a41c88fc600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200241f8fac900200341024622031b200041d8006a20014180a6c00020031b2802101103000b200041386a419aa7c600410410a702200041c8006a41aff4c300411410a702200041186a41086a200041386a41086a290000370300200041186a41106a2000290048370300200041306a200041c8006a41086a290000370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822012000280260109f020240200028025c450d00200110310b200041d8006a41106a21012000419acbc400360210200041033602142000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41be0136020020004190016a42bd808080103703002000418c016a41e583c40036020020004184016a422037020020004180016a41c583c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a419acbc400410310a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b200041c491c200360210200041033602142000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41db0036020020004190016a42bd808080103703002000418c016a419ce7c10036020020004184016a422037020020004180016a41fce6c100360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41c491c200410310a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410b360214200041e1abc9003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41f40036020020004190016a42c5808080103703002000418c016a418ed4c80036020020004184016a422837020020004180016a41e6d3c800360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41e1abc900410b10a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004105360214200041b0a8c6003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41f10236020020004190016a42bf808080103703002000418c016a41b08dc60036020020004184016a422237020020004180016a418e8dc600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41b0a8c600410510a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004109360214200041fbc7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41cd0136020020004190016a42c3808080103703002000418c016a4188d1c80036020020004184016a422637020020004180016a41e88cc600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41fbc7c000410910a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410d360214200041eec7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41ca0036020020004190016a42c8808080103703002000418c016a41e2f0c00036020020004184016a422b37020020004180016a41b7f0c000360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41eec7c000410d10a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004109360214200041e5c7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41cc0136020020004190016a42c3808080103703002000418c016a41e49cc20036020020004184016a422637020020004180016a41be9cc200360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41e5c7c000410910a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004106360214200041dfc7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a413a36020020004190016a42c0808080103703002000418c016a41888fc60036020020004184016a422337020020004180016a41e58ec600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41dfc7c000410610a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004117360214200041c8c7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41900236020020004190016a42c7808080103703002000418c016a41afd5c80036020020004184016a422a37020020004180016a4185d5c800360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41c8c7c000411710a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004110360214200041b8c7c0003602102000418080a0f001360208024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a412d36020020004190016a42c0808080103703002000418c016a418583c40036020020004184016a422337020020004180016a41e282c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41b8c7c000411010a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410336020820004112360214200041a6c7c000360210024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a412236020020004190016a42e8808080103703002000418c016a41fa81c40036020020004184016a422237020020004180016a41d881c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41a6c7c000411210a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004108360214200041caeac40036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41d10236020020004190016a42de808080103703002000418c016a41f7e7c40036020020004184016a421037020020004180016a41e7e7c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41caeac400410810a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b200041073602142000419fc7c00036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41f30136020020004190016a42dc808080103703002000418c016a418be7c40036020020004184016a420e37020020004180016a41fde6c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a419fc7c000410710a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004107360214200041d7b2c80036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41fc0336020020004190016a42dc808080103703002000418c016a41b8dac30036020020004184016a420e37020020004180016a41f0e5c100360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41d7b2c800410710a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410a36021420004195c7c00036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41cb0036020020004190016a42e7808080103703002000418c016a419ea5c80036020020004184016a421a37020020004180016a4184a5c800360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a4195c7c000410a10a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004108360214200041e8f0c10036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41f40036020020004190016a42dd808080103703002000418c016a418de6c10036020020004184016a420f37020020004180016a41fee5c100360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41e8f0c100410810a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410a360214200041fba2c60036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41b90136020020004190016a42df808080103703002000418c016a41b890c60036020020004184016a421137020020004180016a41a790c600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41fba2c600410a10a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004112360214200041cae6c20036021041002802809a4a210220004103360208024020024103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41830236020020004190016a42e8808080103703002000418c016a41b59bc20036020020004184016a421a37020020004180016a419b9bc200360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41cae6c200411210a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b20004103360208200041083602142000418dc7c000360210024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41ba0136020020004190016a42dd808080103703002000418c016a4184ffc30036020020004184016a421737020020004180016a41c181c400360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a418dc7c000410810a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b200041033602082000410736021420004186c7c000360210024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a412936020020004190016a42dc808080103703002000418c016a419bfcc20036020020004184016a421637020020004180016a41d9fec200360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a4186c7c000410710a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410336020820004109360214200041fdc6c000360210024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41f20036020020004190016a42de808080103703002000418c016a41878ec60036020020004184016a421837020020004180016a41ef8dc600360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41fdc6c000410910a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822022000280260109f020240200028025c450d00200210310b2000410336020820004104360214200041f9c6c000360210024041002802809a4a4103490d00200041246a411a3602002000410436021c2000200041086a3602202000200041106a36021841002802fc994a210241002802f8994a210341002802849a4a210420004198016a41e90036020020004190016a42d9808080103703002000418c016a41ec80c30036020020004184016a421337020020004180016a41c0f0c300360200200041f8006a4202370300200041e8006a4202370300200041e0006a4116360200200041f4006a200041186a360200200041c0d3c800360264200041d0d3c80036025c20004103360258200341f8fac900200441024622041b200041d8006a20024180a6c00020041b2802101103000b200041386a41f9c6c000410410a702200041c8006a41aff4c300411410a70220012000290048370000200141086a200041c8006a41086a290000370000200041186a41086a200041386a41086a290000370300200041186a41106a200041d8006a41106a290300370300200041186a41186a200041d8006a41186a290300370300200020002900383703182000410036026020004201370358200020002f01083b0148200041d8006a200041c8006a4102107e200020002d000a3a0048200041d8006a200041c8006a4101107e200020002d000b3a0048200041d8006a200041c8006a4101107e200041186a4120200028025822012000280260109f020240200028025c450d00200110310b200041a0016a24004280eedcc8080b13002000410f3602042000419c91c6003602000b130020004105360204200041909fc6003602000bca0201027f230041e0006b22032400200341086a419aa7c600410410a702200341186a419cd4c600411710a702200341003602402003420137033820032001360250200341386a200341d0006a4104107e20032002360250200341386a200341d0006a4104107e2003200328023822022003280240220110c802370348200341dc006a200220016a360200200320023602582003200341d0006a3602542003200341c8006a360250200341286a200341d0006a1088010240200328023c450d00200210310b024002402003280230220141206a2202417f4c0d000240024020020d00410121040c010b2002102f2204450d020b2000410036020820002002360204200020043602002000200341086a4110107e2000200341186a4110107e2000200328022822022001107e0240200328022c450d00200210310b200341e0006a24000f0b103b000b1039000b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a41e8d9c600411710a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a41ccd5c600411b10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b860201037f230041d0006b22022400200241086a419aa7c600410410a702200241186a4190d6c600411f10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b960203037f017e037f0240024020014102490d00417f20002802082202200028020022034720022003491b2202417f2000410c6a2802002203200041046a28020022044720032004491b20021b417f470d00200029020021052000200029020837020002400240200141034f0d00200041086a21060c010b2005422088a721042005a72107200041106a210220002001417f6a22034103746a210602400340417f2002280200220020074720002007491b2200417f200241046a280200220820044720082004491b20001b417f470d012003450d04200241786a2002290200370200200241086a21022003417f6a22034101470d000c020b0b200241786a21060b200620053702000b0f0b2001200141ecabc800103f000be60603057f047e067f230041f0006b22012400200141d8006a2000280200200041046a220228020010cf022001200128025822032001280260220410d002024020012d003422054102460d002003200410bd020b200141186a2903002106200141086a290300210720012903102108200129030021090240200128025c450d00200310310b024020054102460d002001200010d90520012009200710bc022001200210d90520012008200610bc020b20012000280200200041046a28020010a20520012802002203200128020810bd0202402001280204450d00200310310b200141d8006a200028020010800820012001280258220a2001280260220b10e20220012802002203410420031b210c02400240024002402001290204420020031b2206422088a7220d0e020300010b410021032002280200200c280200470d020c010b2002280200210e41002103200d2105034020032005410176220420036a220f200e200c200f4102746a280200491b2103200520046b220541014b0d000b200e200c20034102746a280200470d012003200d490d002003200d1049000b200c20034102746a2205200541046a2003417f73200d6a41027410c0091a20064280808080707c21062001280258210a2001280260210b0b2001200c360200200120063702042001200b36026c2001200a3602682001200141e8006a10e3020240200642ffffffff0383500d00200c10310b0240200128025c450d00200a10310b200141d8006a20022802001099072001200128025822022001280260220a10e20220012802002203410420031b210c02400240024002402001290204420020031b2206422088a7220b0e020300010b410021032000280200200c280200470d020c010b2000280200210e41002103200b2105034020032005410176220420036a220f200e200c200f4102746a280200491b2103200520046b220541014b0d000b200e200c20034102746a280200470d012003200b490d002003200b1049000b200c20034102746a2205200541046a2003417f73200b6a41027410c0091a20064280808080707c2106200128025821022001280260210a0b2001200c360200200120063702042001200a36026c200120023602682001200141e8006a10e3020240200642ffffffff0383500d00200c10310b0240200128025c450d00200210310b200141f0006a24000bf50101047f230041306b22022400200241b0a8c600410510a702200241106a41f081c700410e10a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41b5a8c600411210a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41d880c700410e10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b930201017f230041106b22022400200220002903003703082001200241086a4108107e0240024020002903084201510d00200241003a00082001200241086a4101107e0c010b200241013a00082001200241086a4101107e2002200041106a2903003703082001200241086a4108107e0b0240024020002903184201510d00200241003a00082001200241086a4101107e0c010b200241013a00082001200241086a4101107e2002200041206a2903003703082001200241086a4108107e0b0240024020002903284201510d00200241003a00082001200241086a4101107e0c010b200241013a00082001200241086a4101107e2002200041306a2903003703082001200241086a4108107e0b200241106a24000bb31203037f017e0d7f230041a01b6b22022400200241f8036a200141f80310bf091a02400240024002400240024002400240024002400240024002400240024020002802042201450d00200028020021030c010b41b02b102f2201450d0141002103200141003b01ae2b200141003602a82b20002001360204200041003602000b200241b0176a20032001200241f8036a10b009024020022802b0174101460d00200241f8036a10b20920022d00c8074106490d0d200241d0076a280200450d0d200241cc076a28020010310c0d0b200241f8036a41086a280200210420022903f80321052002410c6a200241f8036a410c6a41ec0310bf091a200241b0176a410c6a2802002103200241b0176a41086a280200210120022802b4172106200241d00f6a2002410c6a41ec0310bf091a024020012f01ae2b2207410a4b0d00200241f8036a200241d00f6a41ec0310bf091a0240200341016a220820074b0d002001200841f8036c6a2001200341f8036c6a200720036b41f8036c10c0091a0b2001200341f8036c6a22032004360208200320053703002003410c6a200241f8036a41ec0310bf091a2001200741016a3b01ae2b0c0c0b410521074100210902400240200341054f0d0041042107200321080c010b41052108024002402003417b6a0e020201000b200341796a210841012109410621070c010b41002108410121090b41b02b102f220a450d00200a41003b01ae2b200a41003602a82b200a20012f01ae2b220b2007417f736a22033b01ae2b2001200741f8036c6a220c280204210d200c280200210e200241f8036a200c41086a41f00310bf091a2003410c4f0d01200b200741016a220c6b2003470d02200a2001200c41f8036c6a200341f8036c10bf09210c200120073b01ae2b200241b0176a200241f8036a41f00310bf091a200c200120091b22032f01ae2b2107200241f8036a200241d00f6a41ec0310bf091a0240200841016a220920074b0d002003200941f8036c6a2003200841f8036c6a200720086b41f8036c10c0091a0b2003200841f8036c6a22082004360208200820053703002008410c6a200241f8036a41ec0310bf091a2003200741016a3b01ae2b200241c0136a200241b0176a41f00310bf091a200241e00b6a200241c0136a41f00310bf091a02400240024020012802a82b22090d00410021060c010b41002107200c210f200d2110200e2111034020012f01ac2b2104200241d00f6a200241e00b6a41f00310bf091a20062007470d0620092f01ae2b2208410b490d024100210c41042101024020044105490d0020042101024002402004417b6a0e020201000b200441796a21044101210c410621010c010b410021044101210c410521010b41e02b102f220a450d03200a41003b01ae2b200a41003602a82b200a20092f01ae2b220b2001417f736a22033b01ae2b2009200141f8036c6a2207280204210d2007280200210e200241f8036a200741086a41f00310bf091a2003410c4f0d07200b200141016a22126b2003470d08200a200741f8036a200341f8036c10bf092103200920013b01ae2b200241b0176a200241f8036a41f00310bf091a20032f01ae2b220741016a210b2007410c4f0d09200820016b2201200b470d0a200641016a2106200341b02b6a200920124102746a41b02b6a200141027410bf091a4100210102400340200320014102746a41b02b6a280200220820013b01ac2b200820033602a82b2001200120074922086a220120074b0d0120080d000b0b200241c0136a200241b0176a41f00310bf091a20032009200c1b22082f01ae2b2101200241f8036a200241d00f6a41f00310bf091a0240200441016a220720014b0d002008200741f8036c6a2008200441f8036c6a200120046b41f8036c10c0091a0b200141016a210c2008200441f8036c6a220b2010360204200b2011360200200b41086a200241f8036a41f00310bf091a200841b02b6a210b0240200441026a2210200141026a22014f0d00200b20104102746a200b20074102746a2007417f7320016a41027410c0091a0b200b20074102746a200f3602002008200c3b01ae2b0240200720014f0d00200820044102746a41b42b6a2101034020012802002207200441016a22043b01ac2b200720083602a82b200141046a2101200c2004470d000b0b200241e00b6a200241c0136a41f00310bf091a2009210120092802a82b22082109200621072003210f200d2110200e211120080d000b0b200241f0076a200241e00b6a41f00310bf091a200241b0176a200241f0076a41f00310bf091a20002802042203450d092000280200210741e02b102f2201450d01200120033602b02b200141003b01ae2b200141003602a82b200341003b01ac2b200320013602a82b200020013602042000200741016a360200200241f8036a200241b0176a41f00310bf091a20072006470d0a20012f01ae2b2203410b4f0d0b2001200341016a22073b01ae2b2001200341f8036c6a2203200d3602042003200e360200200341086a200241f8036a41f00310bf091a200120074102746a41b02b6a200a360200200a20073b01ac2b200a20013602a82b2000200028020841016a3602080c0d0b20092f01ae2b2101200241f8036a200241d00f6a41f00310bf091a200441016a21030240200120044d220c0d002009200341f8036c6a2009200441f8036c6a200120046b41f8036c10c0091a0b200141016a210a2009200441f8036c6a2207201036020420072011360200200741086a200241f8036a41f00310bf091a200941b02b6a2107200141026a21080240200c0d00200441027420076a41086a200720034102746a2003417f7320086a41027410c0091a0b200720034102746a200f3602002009200a3b01ae2b200320084f0d0b200141016a210820092003417f6a22014102746a41b42b6a2103034020032802002207200141016a22013b01ac2b200720093602a82b200341046a210320082001470d000c0c0b0b1039000b2003410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2003410b419c90ca001058000b41ac90ca00412841d490ca00103c000b200b410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b2000200028020841016a3602080b200241a01b6a24000bd80b03077f027e037f230041e0076b2203240020012802002104200128020422052f01a6292106200341e0036a20052001280208220741d0036c6a220141d00310bf091a2001200141d0036a20062007417f736a220841d0036c10c0091a200541f0276a220920074104746a220141086a290300210a2001290300210b20012009200741016a220c4104746a200841047410c0091a20052006417f6a22013b01a629200341106a200341e0036a41d00310bf091a0240200141ffff037141044b0d0002400240024020052802a0292206450d00200441016a21090240024020052f01a42922080d0020062f01a6290d01200341f4036a4101360200200342013702e403200341d897ca003602e003200341043602c407200341bc91ca003602c0072003200341c0076a3602f003200341e0036a41c491ca001047000b024020062008417f6a22084102746a41a8296a280200220d2f01a629200141ffff03716a41016a410b4b0d00200341f8036a2005360200200341f0036a200d360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341b0076a200341e0036a4101200710f7070c040b200341f8036a2005360200200341f0036a200d360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341e0036a410110f8072003200c3602b8070c020b0240200141ffff0371200841027420066a41ac296a28020022012f01a6296a41016a410b4b0d00200341f8036a2001360200200341f0036a2005360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341b0076a200341e0036a4100200710f7070c030b200341f8036a2001360200200341f0036a2005360200200320043602f403200320043602ec03200320083602e803200320063602e403200320093602e003200341e0036a410110f9070b200320073602b8070b200320053602b407200320043602b0070b20032802b807210720032802b007210420032802b40722052802a0292201450d0020012f01a629220941044b0d00200441016a21060240034020012802a0292208450d01200941ffff03712109200641016a210d024002400240024020012f01a429220c0d0020082f01a6290d01200341f4036a4101360200200342013702e403200341d897ca003602e003200341043602c407200341bc91ca003602c0072003200341c0076a3602f003200341e0036a41c491ca001047000b2008200c417f6a220e4102746a41a8296a280200210c200320013602d807200320063602d4072003200c3602d007200320063602cc072003200e3602c807200320083602c4072003200d3602c00702402009200c2f01a6296a41016a410b4b0d00200341e0036a41186a200341c0076a41186a280200360200200341e0036a41106a200341c0076a41106a290300370300200341e0036a41086a200341c0076a41086a290300370300200320032903c0073703e003200341086a200341e0036a10fa07200328020c2101200328020821060c030b200341c0076a410520096b10f8070c010b2003200c41027420086a41ac296a280200220e3602d807200320063602d407200320013602d007200320063602cc072003200c3602c807200320083602c4072003200d3602c00702402009200e2f01a6296a41016a410b4b0d00200341e0036a41186a200341c0076a41186a280200360200200341e0036a41106a200341c0076a41106a290300370300200341e0036a41086a200341c0076a41086a290300370300200320032903c0073703e0032003200341e0036a10fa0720032802042101200328020021060c020b200341c0076a410520096b10f9070b410021010b2001450d0220012f01a629220941044d0d000c020b0b200941ffff03710d00200241013a00000b2000200341106a41d00310bf09220141d8036a200a3703002001200b3703d003200141e8036a2007360200200141e4036a2005360200200120043602e003200341e0076a24000b130020004101360204200041ccaac6003602000b3400200041fdc6c00036020420004100360200200041146a4102360200200041106a41c4b0c600360200200041086a42093702000b13002000410136020420004190b3c6003602000b4301027f230041106b2202240002404108102f22030d001039000b2000420837020420002003360200200242b8173703082000200241086a4108107e200241106a24000b130020004101360204200041a8b7c6003602000b3400200041fba2c60036020420004100360200200041146a4103360200200041106a41b4b8c600360200200041086a420a3702000b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141044100200010c9010b130020004106360204200041ccbcc6003602000b34002000419aa7c60036020420004100360200200041146a410c360200200041106a41fccbc600360200200041086a42043702000b2901017f230041106b22022400200241003602082002420437030020002002109508200241106a24000baf0101047f230041106b2202240002400240200128020822034103744104722204417f4c0d00200128020021012004102f2205450d012000410036020820002004360204200020053602002000200310cb0102402003450d00200120034103746a21030340200220012802003602082000200241086a4104107e2002200141046a28020036020c20002002410c6a4104107e200141086a22012003470d000b0b200241106a24000f0b103b000b1039000b130020004105360204200041a4edc6003602000b3400200041b0a8c60036020420004100360200200041146a410d360200200041106a4198f4c600360200200041086a42053702000b3b01017f230041106b2202240020004100360208200042013702002000410010cb01200241003a000f20002002410f6a4101107e200241106a24000b860201037f230041d0006b22022400200241086a41b0a8c600410510a702200241186a41b481c700411410a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b3400200041b490c70036020420004100360200200041146a4103360200200041106a41c090c700360200200041086a420b3702000bff4108057f047e037f037e0a7f017e397f057e23004180056b22052400200541b8046a41186a22064200370300200541b8046a41106a22074200370300200541b8046a41086a22084200370300200542003703b804200541f8036a41b490c700410b10a7022008200541f8036a41086a2209290000370300200520052900f8033703b804200541f8036a41c892c700411310a70220062009290000370300200720052900f80337030020052001360200200541b8046a412020054104109f022002290000210a2002290008210b200241106a290000210c200241186a290000210d2005410041800210c109220541a8026a220e4200370300200541a0026a200d37030020054198026a200c37030020054190026a200b370300200541b0026a42003703002005200a37038802200541c000360280020240200441086a280200220f41ffffffff0371200f470d00200f4102742202417f4c0d0002400240024020020d00410421100c010b2002102f2210450d010b02400240024002400240024020024102762201200f4f0d0020024101762201200f2001200f4b1b22014104200141044b1b220141ffffffff03712001464102742106200141027421010240024020020d00200541003602b8040c010b200541c0046a4104360200200520023602bc04200520103602b8040b200541f8036a20012006200541b8046a104e20054180046a2802002102024020052802f8034101460d0020052802fc0321102002410276ad21110c020b20020d060c070b2001ad2112200f450d01201221110b4100210220102101034020012002360200200141046a2101200f200241016a2202470d000b200fad22134220862011842112200f4102490d03200541d4046a2114200541e4046a2115200541f4046a211603402013a72202417f6a2117200220026774417f6a2118200528028002210203400240200241c000490d0020052903a002220b422088a72119200529039802220c422088a7211a20052802ac02221bad42208620052802a802221cad84220a42037c220da7211d200a42027c221ea7211f200a42017c220aa72120200d422088a72121201e422088a72122200a422088a72123200ba72124200ca7212541e5f0c18b06212641eec8819903212741b2da88cb07212841f4ca81d9062129410a212a200528029802222b212c200528029c02222d212e20052802a002222f213020052802a40222312132202b2133202d2134202f2135203121362005280294022202210920052802900222012137200528028c0222062138200528028802220821392002213a2001213b2006213c2008213d2002213e2001213f200621402008214120052903b002220a422088a722422143200aa7224421452042214620442147204221482044214941f4ca81d906214a41b2da88cb07214b41eec8819903214c41e5f0c18b06214d41f4ca81d906214e41b2da88cb07214f41eec8819903215041e5f0c18b06215141f4ca81d906215241e5f0c18b06215341eec8819903215441b2da88cb0721550340200620276a2227ad422086200820266a2226ad842021ad422086201dad8485220a422088a7411077221d20346a2221ad422086200aa7411077223420336a2233ad842006ad4220862008ad8485220a422088a7410c77220620276a2208ad422086200aa7410c77222720266a2226ad84201dad4220862034ad8485220a422088a7410877221d20216a2221ad422086200aa7410877225620336a2233ad842006ad4220862027ad8485220aa74107772206200220296a2227ad422086200120286a2228ad842042ad4220862044ad8485220b422088a7411077224220366a2244ad422086200ba7411077222920356a2234ad842002ad4220862001ad8485220b422088a7410c77220220276a22016a2227ad4220862001ad422086200ba7410c77220120286a2228ad842042ad4220862029ad8485220b422088a7410877224220446a2235ad422086200ba7410877224420346a2236ad842002ad4220862001ad8485220b422088a7410777220220286a2201ad842044ad422086201dad8485220c422088a7411077224420216a221dad422086200ca7411077222120336a2233ad842006ad4220862002ad8485220c422088a7410c77220220276a2229ad422086200ca7410c77220620016a2228ad842044ad4220862021ad8485220c422088a74108772244201d6a2234ad422086200ca7410877222120336a2233ad842002ad4220862006ad8485220ca74107772102200ba7410777220120086a2206ad422086200a422088a7410777220820266a221dad842056ad4220862042ad8485220a422088a7411077224220356a2235ad422086200aa7411077225620366a2257ad842001ad4220862008ad8485220a422088a7410c77220120066a2227ad422086200aa7410c772206201d6a2226ad842042ad4220862056ad8485220a422088a7410877221d20356a2236ad422086200aa7410877224220576a2235ad842001ad4220862006ad8485220aa741077721062038204c6a2201ad4220862039204d6a2208ad842022ad422086201fad8485220b422088a7411077221f202e6a2222ad422086200ba7411077222e202c6a222cad842038ad4220862039ad8485220b422088a7410c77223820016a2201ad422086200ba7410c77223920086a2208ad84201fad422086202ead8485220b422088a7410877221f20226a2222ad422086200ba7410877224c202c6a222cad842038ad4220862039ad8485220ba741077722382009204a6a2239ad4220862037204b6a222ead842043ad4220862045ad8485220d422088a7411077224320326a2232ad422086200da7411077224520306a2230ad842009ad4220862037ad8485220d422088a7410c77220920396a22376a2239ad4220862037ad422086200da7410c772237202e6a222ead842043ad4220862045ad8485220d422088a7410877224320326a2232ad422086200da7410877224520306a2230ad842009ad4220862037ad8485220d422088a74107772209202e6a2237ad842045ad422086201fad8485221e422088a7411077221f20226a2222ad422086201ea7411077222e202c6a222cad842038ad4220862009ad8485221e422088a7410c77220920396a224aad422086201ea7410c77223820376a224bad84201fad422086202ead8485221e422088a7410877224520226a222ead422086201ea74108772222202c6a222cad842009ad4220862038ad8485221ea74107772109200da7410777223720016a2201ad422086200b422088a7410777223820086a2208ad84204cad4220862043ad8485220b422088a7411077223920326a2232ad422086200ba7411077221f20306a2230ad842037ad4220862038ad8485220b422088a7410c77223720016a224cad422086200ba7410c77220120086a224dad842039ad422086201fad8485220b422088a7410877221f20326a2232ad422086200ba7410877224320306a2230ad842037ad4220862001ad8485220ba74107772138203c20506a2201ad422086203d20516a2208ad842023ad4220862020ad8485220d422088a74110772237202d6a2239ad422086200da7411077222d202b6a222bad84203cad422086203dad8485220d422088a7410c77223c20016a2201ad422086200da7410c77223d20086a2208ad842037ad422086202dad8485220d422088a7410877223720396a2239ad422086200da74108772220202b6a222bad84203cad422086203dad8485220da7410777223c203a204e6a223dad422086203b204f6a222dad842046ad4220862047ad84852258422088a7411077222320316a2231ad4220862058a74110772246202f6a222fad84203aad422086203bad84852258422088a7410c77223a203d6a223b6a223dad422086203bad4220862058a7410c77223b202d6a222dad842023ad4220862046ad84852258422088a7410877224620316a2231ad4220862058a74108772223202f6a222fad84203aad422086203bad84852258422088a7410777223a202d6a223bad842023ad4220862037ad84852259422088a7411077223720396a2239ad4220862059a7411077222d202b6a222bad84203cad422086203aad84852259422088a7410c77223a203d6a224ead4220862059a7410c77223c203b6a224fad842037ad422086202dad84852259422088a7410877224720396a222dad4220862059a74108772223202b6a222bad84203aad422086203cad84852259a7410777213a2058a7410777223720016a2201ad422086200d422088a7410777223920086a2208ad842020ad4220862046ad8485220d422088a7411077223b20316a223cad422086200da7411077223d202f6a222fad842037ad4220862039ad8485220d422088a7410c77223720016a2250ad422086200da7410c77220120086a2251ad84203bad422086203dad8485220d422088a74108772220203c6a2231ad422086200da74108772246202f6a222fad842037ad4220862001ad8485220da7410777213c204020546a2201ad422086204120536a2208ad84201bad422086201cad84852258422088a74110772237201a6a2239ad4220862058a7411077223b20256a223dad842040ad4220862041ad84852258422088a7410c77224020016a2201ad4220862058a7410c77224120086a2208ad842037ad422086203bad84852258422088a7410877223720396a2239ad4220862058a7410877223b203d6a223dad842040ad4220862041ad84852258a74107772240203e20526a2241ad422086203f20556a221bad842048ad4220862049ad8485225a422088a7411077221c20196a2248ad422086205aa7411077224920246a2252ad84203ead422086203fad8485225a422088a7410c77223e20416a223f6a2241ad422086203fad422086205aa7410c77223f201b6a221bad84201cad4220862049ad8485225a422088a7410877221c20486a2248ad422086205aa7410877224920526a2253ad84203ead422086203fad8485225a422088a7410777223e201b6a223fad842049ad4220862037ad8485225b422088a7411077223720396a2239ad422086205ba7411077221b203d6a223dad842040ad422086203ead8485225b422088a7410c77223e20416a2252ad422086205ba7410c772240203f6a2255ad842037ad422086201bad8485225b422088a7410877224920396a221aad422086205ba7410877221b203d6a2225ad84225c203ead4220862040ad8485225ba7410777213e205aa7410777223720016a2201ad4220862058422088a7410777223920086a2208ad84203bad422086201cad84852258422088a7411077223b20486a223dad4220862058a7411077223f20536a2240ad842037ad4220862039ad84852258422088a7410c77223720016a2254ad4220862058a7410c77220120086a2253ad84203bad422086203fad84852258422088a7410877221c203d6a2219ad4220862058a7410877224820406a2224ad84225a2037ad4220862001ad84852258a74107772140200c422088a74107772108200a422088a74107772101201e422088a74107772139200b422088a741077721372059422088a7410777213d200d422088a7410777213b205b422088a741077721412058422088a7410777213f202a417f6a222a0d000b20052903a802210a20052903b002210b200520293602f402200520283602f002200520273602ec02200520263602e8022005204a3602e4022005204b3602e0022005204c3602dc022005204d3602d8022005204e3602d4022005204f3602d002200520503602cc02200520513602c802200520523602c402200520553602c002200520543602bc02200520533602b802200520023602b403200520013602b003200520063602ac03200520083602a803200520093602a403200520373602a0032005203836029c0320052039360298032005203a360294032005203b360290032005203c36028c032005203d360288032005203e360284032005203f36028003200520403602fc02200520413602f8022005205a3703c0032005205c3703b803200520363602f403200520353602f003200520343602ec03200520333602e803200520323602e403200520303602e0032005202e3602dc032005202c3602d803200520313602d4032005202f3602d0032005202d3602cc032005202b3602c803200520423602b404200520443602b004200520213602ac042005201d3602a804200520433602a404200520453602a0042005202236029c042005201f36029804200520463602940420052047360290042005202336028c042005202036028804200520483602840420052049360280042005201b3602fc032005201c3602f8032005280288022102200528028c022101200528029002210620052802940221082005280298022109200528029c02213720052802a002213820052802a4022139200541b8046a41086a200e41086a290300220c3703002005200b3703f0042005200b3703e0042005200b3703d0042005200e290300220b3703b8042005200a42037c220d3e02e8042005200d4220883e02ec042005200a42027c220d3e02d8042005200d4220883e02dc042005200a42017c220d3e02c8042005200d4220883e02cc042005200a42047c220a3e02a8022005200a4220883e02ac0220052802b802213a20052802bc02213b20052802c002213c20052802c402213d20052802f802213e20052802fc02213f2005280280032140200528028403214120052802b803214220052802bc03214420052802c003212b20052802c403212d20052802f803212f20052802bc04213120052802fc03211b200528028004211c200520052802c4042005280284046a36023c2005201c200ca76a36023820052031201b6a3602342005202f200ba76a36023020052039202d6a36022c20052038202b6a3602282005203720446a3602242005200920426a3602202005200820416a36021c2005200620406a36021820052001203f6a36021420052002203e6a3602102005203d41f4ca81d9066a36020c2005203c41b2da88cb076a3602082005203b41eec88199036a3602042005203a41e5f0c18b066a36020020052802c802213a20052802cc02213b20052802d002213c20052802d402213d200528028803213e200528028c03213f2005280290032140200528029403214120052802c803214220052802cc03214420052802d003212b20052802d403212d20052802c804212f200528028804213120052802cc04211b200528028c04211c20052802d004211d200528029004211f200520142802002005280294046a36027c2005201d201f6a3602782005201b201c6a3602742005202f20316a36027020052039202d6a36026c20052038202b6a3602682005203720446a3602642005200920426a3602602005200820416a36025c2005200620406a36025820052001203f6a36025420052002203e6a3602502005203d41f4ca81d9066a36024c2005203c41b2da88cb076a3602482005203b41eec88199036a3602442005203a41e5f0c18b066a36024020052802d802213a20052802dc02213b20052802e002213c20052802e402213d200528029803213e200528029c03213f20052802a003214020052802a403214120052802d803214220052802dc03214420052802e003212b20052802e403212d20052802d804212f200528029804213120052802dc04211b200528029c04211c20052802e004211d20052802a004211f2005201528020020052802a4046a3602bc012005201d201f6a3602b8012005201b201c6a3602b4012005202f20316a3602b00120052039202d6a3602ac0120052038202b6a3602a8012005203720446a3602a4012005200920426a3602a0012005200820416a36029c012005200620406a3602980120052001203f6a3602940120052002203e6a360290012005203d41f4ca81d9066a36028c012005203c41b2da88cb076a360288012005203b41eec88199036a360284012005203a41e5f0c18b066a3602800120052802e802213a20052802ec02213b20052802f002213c20052802f402213d20052802a803213e20052802ac03213f20052802b003214020052802b403214120052802e803214220052802ec03214420052802f003212b20052802f403212d20052802e804212f20052802a804213120052802ec04211b20052802ac04211c20052802f004211d20052802b004211f2005201628020020052802b4046a3602fc012005201d201f6a3602f8012005201b201c6a3602f4012005202f20316a3602f00120052039202d6a3602ec0120052038202b6a3602e8012005203720446a3602e4012005200920426a3602e0012005200820416a3602dc012005200620406a3602d80120052001203f6a3602d40120052002203e6a3602d0012005203d41f4ca81d9066a3602cc012005203c41b2da88cb076a3602c8012005203b41eec88199036a3602c4012005203a41e5f0c18b066a3602c0014100210220054100360280020b200520024102746a350200210a2005200241016a22023602800220182013200a7e220aa7490d000b2017200f4f0d02200f200a422088a722024d0d03201020174102746a220128020021062001201020024102746a2202280200360200200220063602002013427f7c2113201741014b0d000c040b0b4100210f201221110c020b2017200f41bcdbc400103f000b2002200f41ccdbc400103f000b02402003280298014101470d00200f2003419c016a2802002202490d002002ad42208620118421120b2012422088a722374102742102200441086a28020021082004280200213b2010210102400240024003402002450d012002417c6a210220012802002109200141046a22062101200820094d0d000b200541b8046a41186a2238203b20094105746a220141186a290000370300200541b8046a41106a2209200141106a290000370300200541b8046a41086a223a200141086a290000370300200520012900003703b8044120102f2239450d03203920052903b804370000203941186a2038290300370000203941106a2009290300370000203941086a203a2903003700000340024020020d004101213a410121380c030b2002417c6a210220062802002109200641046a22012106200820094d0d000b200541f8036a41186a223c203b20094105746a220241186a290000370300200541f8036a41106a223d200241106a290000370300200541f8036a41086a223e200241086a290000370300200520022900003703f803201020374102746a21064101213a4101213802400340200541b8046a41186a2209203c290300370300200541b8046a41106a223f203d290300370300200541b8046a41086a2240203e290300370300200520052903f8033703b80402402038203a470d00203a41016a2202203a490d07203a41017422412002204120024b1b22024104200241044b1b220241ffffff3f7120024621412002410574210202400240203a0d00200541003602b8030c010b200541013602c003200520393602b8032005203a4105743602bc030b200541f8026a20022041200541b8036a104e200528028003210220052802f8024101460d0220052802fc0221392002410576213a0b203920384105746a220220052903b804370000200241186a2009290300370000200241106a203f290300370000200241086a2040290300370000203841016a2138034020062001460d0420012802002102200141046a22092101200820024d0d000b203c203b20024105746a220241186a290000370300203d200241106a290000370300203e200241086a290000370300200520022900003703f803200921010c000b0b2002450d040c030b4100213820004100360208200042013702000c010b200020383602082000203a360204200020393602000b024020382037460d0041002802809a4a4102490d0041002802fc994a210241002802f8994a210141002802849a4a2106200541f8046a4134360200200541f0046a42be80808010370300200541b8046a41346a41f4edc300360200200541e4046a4221370200200541e0046a41d3edc300360200200541d8046a4200370300200541d4046a41f8fac900360200200541c8046a4201370300200541c0046a4113360200200541b8edc3003602c404200541c0edc3003602bc04200541023602b804200141f8fac900200641024622061b200541b8046a20024180a6c00020061b2802101103000b024002402010450d00200541d0046a4200370300200541c8046a4200370300200541b8046a41086a22024200370300200542003703b804200541f8036a41b490c700410b10a7022002200541f8036a41086a2201290000370300200520052900f8033703b804200541f8036a41f492c700411610a702200741086a2001290000370000200720052900f803370000203741027441046a2202417f4c0d030240024020020d00410121010c010b2002102f2201450d030b2005410036028004200520023602fc03200520013602f803200541f8036a203710cb0102402037450d0020374102742101201021020340200520022802003602b803200541f8036a200541b8036a4104107e200241046a21022001417c6a22010d000b0b200541b8046a412020052802f8032202200528028004109f02024020052802fc03450d00200210310b201242ffffffff0383500d01201010310c010b200541d0046a4200370300200541c8046a4200370300200541b8046a41086a22024200370300200542003703b804200541f8036a41b490c700410b10a7022002200541f8036a41086a2201290000370300200520052900f8033703b804200541f8036a41f492c700411610a702200741086a2001290000370000200720052900f803370000200541b8046a412010bd020b200541b8036a200010a6020240024020052802b8032206450d0020052902bc03210a200541d0046a4200370300200541c8046a4200370300200541b8046a41086a22024200370300200542003703b804200541f8036a41b490c700410b10a7022002200541f8036a41086a2201290000370300200520052900f8033703b804200541f8036a41c093c700411310a702200741086a2001290000370000200720052900f803370000200a422088a722024105744104722201417f4c0d032001102f2208450d022005410036028004200520013602fc03200520083602f803200541f8036a200210cb0102402002450d0020024105742101200621020340200541f8036a20024120107e200241206a2102200141606a22010d000b0b200541b8046a412020052802f8032202200528028004109f02024020052802fc03450d00200210310b200a42ffffff3f83500d01200610310c010b200541d0046a4200370300200541c8046a4200370300200541b8046a41086a22024200370300200542003703b804200541f8036a41b490c700410b10a7022002200541f8036a41086a2201290000370300200520052900f8033703b804200541f8036a41c093c700411310a702200741086a2001290000370000200720052900f803370000200541b8046a412010bd020b0240200441046a28020041ffffff3f71450d00200428020010310b20054180056a24000f0b1039000b103b000b3400200041a996c70036020420004100360200200041146a4106360200200041106a41b896c700360200200041086a420d3702000b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141044100200010c5010b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141044100200010c6010b4c01017f230041206b2202240020004100360208200042013702002002420037031020024204370308200241086a200010f4032002410036021c20002002411c6a4104107e200241206a24000b820503027f017e047f230041c0006b22012400024002400240024020002802002202450d0020002902042103200141206a22004200370300200141186a22044200370300200141086a41086a2205420037030020014200370308200141286a41a996c700410d10a7022005200141286a41086a220629000037030020012001290028370308200141286a41c89ac700410f10a70220002006290000370300200420012900283703002003422088a72207410c6c41046a2200417f4c0d010240024020000d00410121040c010b2000102f2204450d030b200141003602302001200036022c20012004360228200141286a200710cb0102402007450d0020022007410c6c6a210620022105034020052802002100200141286a2005280208220410cb012005410c6a210502402004450d002004410274210403402001200028020036023c200141286a2001413c6a4104107e200041046a21002004417c6a22040d000b0b20052006470d000b0b200141086a4120200128022822002001280230109f020240200128022c450d00200010310b02402007450d002007410c6c21042002210003400240200041046a28020041ffffffff0371450d00200028020010310b2000410c6a2100200441746a22040d000b0b2003a72200450d032000410c6c450d03200210310c030b200141206a22004200370300200141186a22044200370300200141086a41086a2205420037030020014200370308200141286a41a996c700410d10a7022005200141286a41086a220629000037030020012001290028370308200141286a41c89ac700410f10a7022000200629000037030020042001290028370300200141086a412010bd020c020b103b000b1039000b200141c0006a24000b8e0301017f230041c0006b220224000240024002400240200028020022002802000e03010200010b2002200041046a360224200241213602142001411c6a28020021002002200241246a360210200128021821012002413c6a41013602002002420237022c200241bcb0c7003602282002200241106a36023820012000200241286a104021010c020b2002200041046a36020c2002200041086a3602242002411c6a4121360200200241213602142001411c6a28020021002002200241246a36021820022002410c6a360210200128021821012002413c6a41023602002002420337022c200241ccb0c7003602282002200241106a36023820012000200241286a104021010c010b2002200041046a36020c2002200041086a3602242002411c6a4121360200200241213602142001411c6a28020021002002200241246a36021820022002410c6a360210200128021821012002413c6a41023602002002420337022c200241e4b0c7003602282002200241106a36023820012000200241286a104021010b200241c0006a240020010b9c0701017f230041c0006b220224000240024002400240024002400240200028020022002802000e06010203040500010b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a4129360200200241106a410c6a4129360200200241293602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241f4b4c0003602282002200241106a36023820012000200241286a104021000c050b2002200041046a3602082002200041086a36020c2002411c6a4129360200200241293602142001411c6a280200210020022002410c6a3602182002200241086a360210200128021821012002413c6a41023602002002420337022c20024194b5c0003602282002200241106a36023820012000200241286a104021000c040b2002200041046a36020c200241293602142001411c6a280200210020022002410c6a360210200128021821012002413c6a41013602002002420237022c200241acb5c0003602282002200241106a36023820012000200241286a104021000c030b2002200041046a36020c200241106a41146a411c360200200241106a410c6a411c36020020022000410c6a3602202002200041086a360218200241293602142001411c6a280200210020022002410c6a36021020012802182101200241286a41146a41033602002002420337022c200241bcb5c0003602282002200241106a36023820012000200241286a104021000c020b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a4129360200200241106a410c6a4129360200200241293602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241d4b5c0003602282002200241106a36023820012000200241286a104021000c010b2002200041046a3602042002200041086a36020820022000410c6a36020c200241106a41146a4129360200200241106a410c6a4129360200200241293602142001411c6a280200210020022002410c6a3602202002200241086a3602182002200241046a36021020012802182101200241286a41146a41033602002002420437022c200241f4b5c0003602282002200241106a36023820012000200241286a104021000b200241c0006a240020000b1c00200128021841c8fac900410f2001411c6a28020028020c1100000b1d0020002002ad4220862001ad842004ad4220862003ad84100c109c090b22002001ad4220862000ad842003ad4220862002ad842005ad4220862004ad84100e0b18002001ad4220862000ad842003ad4220862002ad84100b0b7e01027f230041306b22022400200241146a4104360200200241fcf2c9003602102002410436020c200241f4f2c9003602082001411c6a2802002103200128021821012002412c6a41023602002002420237021c20024184f3c9003602182002200241086a36022820012003200241186a10402101200241306a240020010b130020004107360204200041e8b2c7003602000b1f0002402000280200450d00200041086a280200450d00200028020410310b0be40101027f230041206b22032400024002400240200041046a280200220420016b20024f0d00200120026a22022001490d02200441017422012002200120024b1b22014104200141044b1b220141ffffffff01712001464103742102200141037421010240024020040d00200341003602100c010b200341106a41086a410836020020032004410374360214200320002802003602100b200320012002200341106a104e200341086a280200210120032802004101460d0120002003280204360200200041046a20014103763602000b200341206a24000f0b2001450d001039000b103b000be30102027f017e230041206b22032400024002400240200041046a280200220420016b20024f0d00200120026a22022001490d02200441017422012002200120024b1b22014104200141044b1bad42307e2205422088a74541037421012005a721020240024020040d00200341003602100c010b200341106a41086a41083602002003200441306c360214200320002802003602100b200320022001200341106a104e200341086a280200210120032802004101460d0120002003280204360200200041046a200141306e3602000b200341206a24000f0b2001450d001039000b103b000be60102027f017e230041206b22032400024002400240200041046a280200220420016b20024f0d00200120026a22022001490d02200441017422012002200120024b1b22014104200141044b1bad4288017e2205422088a74541037421012005a721020240024020040d00200341003602100c010b200341106a41086a4108360200200320044188016c360214200320002802003602100b200320022001200341106a104e200341086a280200210120032802004101460d0120002003280204360200200041046a20014188016e3602000b200341206a24000f0b2001450d001039000b103b000b130020002002ad4220862001ad841028109c090b8c0101037f230041106b2202240020002802082103200028020021004101210420024280808080104200200128021841badcc30041012001411c6a28020028020c1100001b2001ad843703080240200241086a2000200020036a10b5042d00040d0020022802082201280218419ca0c00041012001411c6a28020028020c11000021040b200241106a240020040b8f0703067f017e037f230041a0016b22022400200241d0006a200128020c200141146a28020010ad080240024020022802502203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902542208422088a722094b0d0020012802002003200710c209450d010b2008a7450d02200310310c020b02402006280200450d00200428020010310b2001200336020c2006200837020020022003200910d202024002400240024020022802002203450d00200228020821092002280204210a024020012d001c450d00200128020c200128021410bd020b2001280214220b20052802002207490d032002200128020c20076a200b20076b2003200920012802181104002002280204450d0120002002290300370200200041386a200241386a280200360200200041306a200241306a290300370200200041286a200241286a290300370200200041206a200241206a290300370200200041186a200241186a290300370200200041106a200241106a290300370200200041086a200241086a290300370200200a450d06200310310c060b41002802809a4a450d012002410e3602442002200436024041002802fc994a210341002802f8994a210741002802849a4a2109200241a40436029001200242e48080801037038801200241eabdc700360284012002421637027c200241d4bdc7003602782002420137037020024201370360200241acbdc70036025c20024116360258200241d4bdc7003602542002410136025020034180a6c000200941024622091b28021021032002200241c0006a36026c200741f8fac90020091b200241d0006a20031103000c010b024041002802809a4a450d002002410f36024c2002410e36024420022004360240200220024198016a36024841002802fc994a210741002802f8994a210941002802849a4a210b200241b20436029001200242e48080801037038801200241eabdc700360284012002421637027c200241d4bdc7003602782002420237037020024202370360200241c4bdc70036025c20024116360258200241d4bdc7003602542002410136025020074180a6c000200b410246220b1b28021021072002200241c0006a36026c200941f8fac900200b1b200241d0006a20071103000b200a450d00200310310b200241d0006a200128020c200128021410ad08200228025022030d010c020b0b2007200b41b4bdc7001061000b200041003602040b200241a0016a24000bbf0603067f017e037f23004180016b22022400200241306a200128020c200141146a28020010ad080240024020022802302203450d002001410c6a2104200141086a2105200141106a21060340024002402005280200220720022902342208422088a722094b0d0020012802002003200710c209450d010b2008a7450d02200310310c020b02402006280200450d00200428020010310b2001200336020c20062008370200200241086a2003200910d202024002400240024020022802082203450d0020022802102109200228020c210a024020012d001c450d00200128020c200128021410bd020b2001280214220b20052802002207490d03200241086a200128020c20076a200b20076b200320092001280218110400200228020c450d0120002002290308370200200041106a200241086a41106a280200360200200041086a200241086a41086a290300370200200a450d06200310310c060b41002802809a4a450d012002410e3602242002200436022041002802fc994a210341002802f8994a210741002802849a4a2109200241a404360270200242e480808010370368200241eabdc7003602642002421637025c200241d4bdc7003602582002420137035020024201370340200241acbdc70036023c20024116360238200241d4bdc7003602342002410136023020034180a6c000200941024622091b28021021032002200241206a36024c200741f8fac90020091b200241306a20031103000c010b024041002802809a4a450d002002410f36022c2002410e360224200220043602202002200241f8006a36022841002802fc994a210741002802f8994a210941002802849a4a210b200241b204360270200242e480808010370368200241eabdc7003602642002421637025c200241d4bdc7003602582002420237035020024202370340200241c4bdc70036023c20024116360238200241d4bdc7003602342002410136023020074180a6c000200b410246220b1b28021021072002200241206a36024c200941f8fac900200b1b200241306a20071103000b200a450d00200310310b200241306a200128020c200128021410ad08200228023022030d010c020b0b2007200b41b4bdc7001061000b200041003602040b20024180016a24000bad0f07167f017e017f017e017f017e027f230041306b220224000240024002400240024002400240200141144b0d00200141014d0d0620002001417e6a22034105746a2104410221050340200320014b0d022004200510e108200541016a2105200441606a21042003417f6a2203417f470d000c070b0b2001410176220341ffffff3f712003470d0220034105742206417f4c0d022006102f2207450d01200041606a2108200041a07f6a21094104210a4100210b4100210c2001210d0340200d210e4100210d410121050240200e417f6a220f450d000240024002400240024002402000200f4105746a200e410574221020006a41406a412010c2094100480d00200e417e6a210f200920106a21034100210d4100210403400240200f2004470d00200e21050c080b200441016a2104200341206a2003412010c2092105200341606a21032005417f4a0d000b200441016a21052004417f73200e6a210f0c010b200920106a2103024003400240200f4101470d004100210f0c020b200f417f6a210f200341206a2003412010c2092104200341606a210320044100480d000b0b200e200f490d01200e20014b0d02200e200f6b22054101762211450d00200820106a21032000200f4105746a21040340200241186a2210200441186a2212290000370300200241106a2213200441106a2214290000370300200241086a2215200441086a221629000037030020022004290000370300200341086a22172900002118200341106a2219290000211a200341186a221b290000211c200420032900003700002012201c3700002014201a37000020162018370000201b2010290300370000201920132903003700002017201529030037000020032002290300370000200341606a2103200441206a21042011417f6a22110d000b0b0240200f0d00200f210d0c050b0240200541094d0d00200f210d0c050b200e20014b0d02200e200f6b2105200f417f6a21032008200f4105746a21040340200e2003490d0a2004200541016a220510e1082003417f6a220f20034f0d04200441606a2104200f21032005410a490d000c040b0b200f200e419cabc8001062000b200e2001419cabc8001058000b200e200f417f6a2203490d06200e200141acabc8001058000b200f41016a210d0b02400240024002400240200c200b460d00200c21030c010b200b41016a2203200b490d07200b41017422042003200420034b1b22034104200341044b1b220341ffffffff017120034641027421042003410374210302400240200b0d00200241003602000c010b200241043602082002200a3602002002200b4103743602040b200241206a200320042002104e2002280228210420022802204101460d012002280224210a200b21032004410376210b0b200a20034103746a220320053602042003200d360200200c41016a221b210c201b41024f0d010c020b20040d040c050b02400240024003400240024002400240200a201b220c417f6a221b4103746a2203280200450d00200c410374200a6a221141746a280200220f200328020422044d0d00200c41024d0d08200a200c417d6a22034103746a28020422052004200f6a4d0d01200c41034d0d08201141646a2802002005200f6a4b0d080c010b200c4103490d0120032802042104200a200c417d6a22034103746a28020421050b20052004490d010b200c417e6a21030b0240200c200341016a220e4d0d00200c20034d0d02200a20034103746a2216280204221d20162802006a2203200a200e4103746a22172802002219490d03200320014b0d04201641046a211e200020194105746a22142017280204221541057422046a210f2003410574210502400240200320196b221020156b22032015490d0020072014200410bf09221320046a21110240024020154101480d00201020154a0d010b20142103201321040c020b200020056a2112201321042014210303402003200f2004200f2004412010c20941004822101b2205290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a2900003700002004200441206a20101b2104200341206a2103200f41206a200f20101b220f20124f0d02201120044b0d000c020b0b2007200f2003410574220410bf09221320046a21110240024020154101480d00200341014e0d010b200f2103201321040c010b200820056a2105200f21030340200341606a2104201141606a210f20052004200f200f2004412010c20941004822121b2210290000370000200541186a201041186a290000370000200541106a201041106a290000370000200541086a201041086a2900003700002011200f20121b2111024020142004200320121b2203490d00201321040c020b200541606a21052013210420132011490d000b0b20032004201120046b41607110bf091a201e201d20156a360200201620193602002017201741086a200c200e417f736a41037410c0091a4101210c201b41014d0d050c010b0b200e200c41bcabc800103f000b2003200c41ccabc800103f000b2019200341dcabc8001062000b2003200141dcabc8001058000b200d450d050c000b0b20032001418cabc8001061000b1039000b103b000b2003200e41acabc8001062000b0240200b41ffffffff0171450d00200a10310b2006450d00200710310b200241306a24000be909010e7f230041c0006b220424002002410020031b21052000410020011b2106200241206a200220031b2107200041206a200020011b2108200020014105746a2109200220034105746a210a4101210b41002103410021024101210c4100210d4100210e02400240034002400240024020050d002006450d010c020b02402006450d00024020052006412010c209220f0d00410020082008200946220f1b2106410020072007200a4622101b21052008200841206a200f1b21082007200741206a20101b21070c040b200f417f4a0d02200441186a220f200541186a290000370300200441106a2210200541106a290000370300200441086a2211200541086a2900003703002004200529000037030002400240200e200d470d00200d41016a2205200d490d07200d410174220e2005200e20054b1b22054104200541044b1b220541ffffff3f71200546210e2005410574210502400240200d0d00200441003602300c010b200441013602382004200c3602302004200d4105743602340b200441206a2005200e200441306a104e2004280228210520042802204101460d012004280224210c200d210e2005410576210d0b200c200e4105746a22052004290300370000200541186a200f290300370000200541106a2010290300370000200541086a2011290300370000410020072007200a46220f1b2105200e41016a210e2007200741206a200f1b21070c040b20050d040c050b200441186a220f200541186a290000370300200441106a2210200541106a290000370300200441086a2211200541086a2900003703002004200529000037030002400240200e200d470d00200d41016a2206200d490d06200d41017422052006200520064b1b22064104200641044b1b220641ffffff3f7120064621052006410574210602400240200d0d00200441003602300c010b200441013602382004200c3602302004200d4105743602340b200441206a20062005200441306a104e2004280228210620042802204101460d012004280224210c200d210e2006410576210d0b200c200e4105746a22062004290300370000200641186a200f290300370000200641106a2010290300370000200641086a201129030037000041002106410020072007200a46220f1b2105200e41016a210e2007200741206a200f1b21070c030b20060d030c040b200c200e2000200110ba080240200d41ffffff3f71450d00200c10310b0240200341ffffff3f71450d00200b10310b200441c0006a24000f0b200441186a220f200641186a290000370300200441106a2210200641106a290000370300200441086a2211200641086a290000370300200420062900003703000240024020022003470d00200341016a22062003490d04200341017422022006200220064b1b22064104200641044b1b220641ffffff3f712006462102200641057421060240024020030d00200441003602300c010b200441013602382004200b360230200420034105743602340b200441206a20062002200441306a104e2004280228210620042802204101460d012004280224210b20032102200641057621030b200b20024105746a22062004290300370000200641186a200f290300370000200641106a2010290300370000200641086a2011290300370000410020082008200946220f1b2106200241016a21022008200841206a200f1b21080c010b0b2006450d010b1039000b103b000bf50101047f230041306b22022400200241dcbfc700410a10a702200241106a41fcbfc700410a10a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000bb10302047f017e23004180016b22012400200141206a22024200370300200141186a22034200370300200141086a41086a420037030020014200370308200141086a41dcbfc700410a10a702200141e8006a41e6bfc700410910a7022002200141e8006a41086a290000370300200320012900683703002001412036022c2001200141086a360228200141306a200141086a412010d20202400240200128023022030d00410021020c010b200128023421042001200141306a41086a28020036024420012003360240200141e8006a200141c0006a10a90602400240200128026822020d004100210220014100360250200142013703482001410c36025c2001200141286a3602582001200141c8006a360264200141fc006a41013602002001420137026c2001419086c4003602682001200141d8006a360278200141e4006a41d8ddc900200141e8006a10401a2001280248200128025010d9040240200128024c450d00200128024810310b0c010b200129026c21050b2004450d00200310310b0240024020020d0020004100360208200042013702000c010b20002005370204200020023602000b20014180016a24000bf50101047f230041306b22022400200241dcbfc700410a10a702200241106a4186c0c700410610a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000bf50101047f230041306b22022400200241dcbfc700410a10a702200241106a4186c0c700410610a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000baf0601057f230041a0266b22042400200441086a200110bc08200420042802082205200428021041f8fac9004100410010b70502400240024002402004280200450d0002402004280204220620024d0d00200441b81e6a410a10e205200041013602002000410c6a200441c01e6a280200360200200020042903b81e3702040c020b200441901e6a200110bc0820042802901e2101200420042802981e22023602a41e200420013602a01e200441a81e6a2001200210d20241232102024020042802a81e2207450d0020042802ac1e21082004200441b01e6a2802003602fc25200420073602f825200441b81e6a200441f8256a10b7010240024020042802b81e22024123470d00200441003602882620044201370380262004410c360294262004200441a01e6a36029026200420044180266a36029c26200441cc1e6a4101360200200442013702bc1e2004419086c4003602b81e200420044190266a3602c81e2004419c266a41d8ddc900200441b81e6a10401a20042802802620042802882610d904200428028426450d0120042802802610310c010b200441d4166a200441b81e6a41047241bc0710bf091a0b2008450d00200710310b200441b81e6a200441d4166a41bc0710bf091a0240024020024123460d00200441980f6a200441b81e6a41bc0710bf091a024020042802941e450d00200110310b200441dc076a200441980f6a41bc0710bf091a20042002360218200441186a410472200441dc076a41bc0710bf091a200441b81e6a200441186a108c0220042903b81e2003580d01200441b81e6a410910e205200041013602002000410c6a200441c01e6a280200360200200020042903b81e370204200441186a10fa060c030b024020042802941e450d00200110310b200441b81e6a410310e205200041013602002000410c6a200441c01e6a280200360200200020042903b81e3702040c020b200041086a200441186a41c00710bf091a20004100360200200041c8076a2006360200200428020c450d030c020b200441b81e6a410310e205200041013602002000410c6a200441c01e6a280200360200200020042903b81e3702040b200428020c450d010b200510310b200441a0266a24000b9c0905017f017e047f027e017f23004190096b22052400200541cd016a200341086a290000370000200541d5016a200341106a290000370000200541dd016a200341186a290000370000200541023a00c401200541103a00c001200520032900003700c501200541c0016a10a902200541c0016a2004108c0220052903c00121062002280204210702404110102f2208450d00200841f8c8c00036020c2008410136020820084281808080103702004110102f2209450d00200941e0c8c00036020c20094101360208200942818080801037020020082008280200417f6a220a3602000240200a0d002008280208200828020c2802001102000240200828020c280204450d00200828020810310b200841046a220a200a280200417f6a220a360200200a0d00200810310b200541c0016a200441c00710bf091a200541dc006a2001360200200541d0006a41086a2007360200200541d0006a41106a2005290104370300200541d0006a41186a200541046a41086a290100370300200541d0006a41206a200541046a41106a290100370300200541003a0054200520052f001d3b005520052009360278200541023a005020052005411d6a41026a2d00003a0057200541206a200541c0016a200541d0006a109702200541c0016a41186a200341186a290000370300200541c0016a41106a200341106a290000370300200541c0016a41086a200341086a290000370300200520032900003703c001200541206a41206a2d000021092005290328210b2005290320210c200520052900413703502005200541c8006a28000036005702400240200c4201510d00410721080c010b2005200528005736008701200520052903503703800141072108200b4202510d0020052005280087013600b70120052005290380013703b001200921080b200541d0006a41086a2209200541c0016a41086a2204290300370300200541d0006a41106a2201200541c0016a41106a2207290300370300200541d0006a41186a220a200541c0016a41186a220d290300370300200520052903c001370350200520052903b0013703a001200520052800b7013600a701200541043a00c401200541103a00c001200541cd016a2009290300370000200541d5016a2001290300370000200541dd016a200a290300370000200541e8016a20083a0000200520052903503700c501200541e5016a20052f00b0013b0000200541e7016a200541b2016a2d00003a0000200541e9016a20052903a001370000200541f0016a20052800a7013600002005418c026a20054180016a41186a28020036020020054184026a20054180016a41106a290200370200200541fc016a20054180016a41086a290200370200200541f4016a200529028001370200200541c0016a10a902200541206a41106a290300210c200d200341186a2900003703002007200341106a2900003703002004200341086a290000370300200520032900003703c001200541c0016a10b908210302402002410c6a28020041ffffff3f71450d00200228020810310b0240200241186a28020041ffffff3f71450d00200228021410310b200020033602082000200c2006200ba71b37030020054190096a24000f0b1039000b830602087f017e230041d0006b22012400200141206a200010bc0820012802202202200128022810bd0202402001280224450d00200210310b200141206a200010b60820012802202202200128022810bd0202402001280224450d00200210310b200110b40820012802082103410021042001410036020802402003450d004100210520012802002106410021044100210702400340024002402004450d00200620074105746a21022006200720056a4105746a2108034020022000412010c209450d0220082002290000370000200841186a200241186a290000370000200841106a200241106a290000370000200841086a200241086a290000370000200841206a2108200241206a21022003200741016a22074b0d000c040b0b200620074105746a2102034020022000412010c209450d01200241206a21022003200741016a22074b0d000b410021040c030b2005417f6a2105200441016a21042003200741016a22074b0d000b0b024020040d00410021040c010b2006200720046b4105746a200620074105746a200320076b41057410c0091a0b2001200320046b2202360208200141106a41086a2002360200200120012903002209370310200141386a22084200370300200141306a4200370300200141206a41086a2207420037030020014200370320024002402009a722030d00200141c0006a41dcbfc700410a10a7022007200141c0006a41086a220329000037030020012001290040370320200141c0006a41e6bfc700410910a7022008200329000037030020012001290040370330200141206a412010bd020c010b200141c0006a41dcbfc700410a10a7022007200141c0006a41086a220029000037030020012001290040370320200141c0006a41e6bfc700410910a70220082000290000370300200120012900403703302001410036024820014201370340200141106a200141c0006a10b107200141206a4120200128024022082001280248109f0202402001280244450d00200810310b200128021441ffffff3f71450d00200310310b200141d0006a2400200241016a0bd91403127f087e0b7f230022042105200441e0016b416071220624000240200341e500490d0041002802809a4a450d00200641cc016a410136020020062003360220200641013602c401200641e4003602402006200641c0006a3602c8012006200641206a3602c00141002802fc994a210441002802f8994a210741002802849a4a2108200641a0016a41b40636020020064198016a42df8080801037030020064194016a41f1b7c7003602002006418c016a421137020020064188016a4199bdc70036020020064180016a4202370300200641f0006a4203370300200641e8006a4113360200200641fc006a200641c0016a360200200641acbfc70036026c2006418cc0c70036026420064101360260200741f8fac900200841024622081b200641e0006a20044180a6c00020081b2802101103000b02400240200141ffffff3f712001470d0020014105742209417f4c0d000240024020090d004101210a0c010b2009102f220a450d0220094105762108200a21042009210703402007450d0120042000290000370000200441086a200041086a290000370000200441106a200041106a290000370000200441186a200041186a290000370000200441206a2104200741606a2107200041206a21002008417f6a22080d000b0b200a200110b108200641e0006a10b4082006280260210b2006280264210c024020062802682200450d00200b20004105746a210d200641e0006a41086a2100200641206a410c72210e200641e0006a410c6a210f200b21100340200641e0006a41186a201041186a290000370300200641e0006a41106a201041106a2900003703002000201041086a29000037030020062010290000370360200641106a200641e0006a10b508200641e0006a200628021022112006280218221210ab06200641c0016a41086a2213200f41086a290200370300200641c0016a41106a2214200f41106a2802003602002006200f2902003703c0012006280280012115024020062802682207450d0020062903602116200e20062903c001370200200e41086a2013290300370200200e41106a201428020036020020062016370320201521040b200620073602282006410036026820062903382117200620062903782218370338200629033021192006200629037022163703302006290320211a20062006290360221b3703202006290328211c20062006290368221d37032802400240201ca7221e0d00200421150c010b2006201a3703402006201c37034820062019370350201c422088a7211f20062017370358024002402019a722040d002019422088a721202017422088a721042017a72121201e21220c010b201e20044105746a2120201e2123201e21220340200641c0016a41186a202341186a29000022163703002014202341106a290000221b3703002013202341086a290000221837030020002023290000221c370000200041086a22242018370000200041106a2225201b370000200041186a222620163700002006201c3703c001200620223602642006201e360260202341206a212341002104024002400240024020010e020201000b410021042001210703402007410176222720046a210820082004200a20084105746a2000412010c2094101481b2104200720276b220741014b0d000b0b200a20044105746a2000412010c209450d010b20222000290000370000202241186a2026290000370000202241106a2025290000370000202241086a2024290000370000202241206a21220b20232020470d000b200628025c210420062802582121200628025421200b201da721282006201f36024c2006201e36024820062022201e6b4105753602500240024020040d00202021220c010b202020044105746a211e20202123202021220340200641c0016a41186a202341186a29000022163703002014202341106a290000221b3703002013202341086a290000221837030020002023290000221c370000200041086a22242018370000200041106a2225201b370000200041186a222620163700002006201c3703c0012006202236026420062020360260202341206a212341002104024002400240024020010e020201000b410021042001210703402007410176222720046a210820082004200a20084105746a2000412010c2094101481b2104200720276b220741014b0d000b0b200a20044105746a2000412010c209450d010b20222000290000370000202241186a2026290000370000202241106a2025290000370000202241086a2024290000370000202241206a21220b2023201e470d000b0b20062021360258200620203602542006202220206b41057536025c2006290348211d2006290340211b200629035021162006290358211802402028450d000240200628022c41ffffff3f71450d00200628022810310b200628023841ffffff3f71450d00200628023410310b2006201b3703202006201d37032820062016370330200620183703380b02400240201da722270d002011201210bd020c010b2016422088211c2018422088a7210820064100360268200642013703602006201b3e02c001200641e0006a200641c0016a4104107e2006201b4220883e02c001200641e0006a200641c0016a4104107e200641e0006a2016a7220410cb0102402004450d0020044105742107202721040340200641e0006a20044120107e200441206a2104200741606a22070d000b0b201ca72123200641e0006a200810cb0102402008450d0020084105742107202321040340200641e0006a20044120107e200441206a2104200741606a22070d000b0b200620153602c001200641e0006a200641c0016a4104107e20112012200628026022042006280268109f0202402006280264450d00200410310b2027450d002018a721040240201d422088a741ffffff3f71450d00202710310b200441ffffff3f71450d00202310310b201041206a211002402006280214450d00201110310b201521042010200d470d000b0b0240200c41ffffff3f71450d00200b10310b200641f8006a22004200370300200641f0006a22044200370300200641e0006a41086a2207420037030020064200370360200641c0016a41dcbfc700410a10a7022007200641c0016a41086a2208290000370300200620062900c001370360200641c0016a41deaac800410710a70220002008290000370300200420062900c00137030020034105744104722200417f4c0d002000102f2207450d01200641003602c801200620003602c401200620073602c001200641c0016a200310cb0102402003450d00200341057421000340200641c0016a20024120107e200241206a2102200041606a22000d000b0b200641e0006a412020062802c001220020062802c801109f02024020062802c401450d00200010310b200641f8006a4200370300200641f0006a4200370300200641e0006a41086a2200420037030020064200370360200641c0016a41dcbfc700410a10a7022000200641c0016a41086a2207290000370300200620062900c001370360200641c0016a41e5aac800410510a702200441086a2007290000370000200420062900c001370000200641e0006a412010bd0202402009450d00200a10310b200524000f0b103b000b1039000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d00200210fa060b0f0b200041086a10ad01200041046a220228020010bb08200228020010310bf50101047f230041306b22022400200241dcbfc700410a10a702200241106a41fcbfc700410a10a702024002404120102f2203450d002002422037022420022003360220200241206a20014120107e20022802282201417f4c0d01200228022021030240024020010d00410121040c010b2001102f2204450d010b20042003200110bf09210402402002280224450d00200310310b200141206a2203417f4c0d012003102f2205450d00200041003602082000200336020420002005360200200020024110107e2000200241106a4110107e200020042001107e02402001450d00200410310b200241306a24000f0b1039000b103b000b0400102d0b0400102a0b040010250b1d0020002002ad4220862001ad842004ad4220862003ad84100d109c090bf30502027f027e0240024020012802002202417f6a4107490d004101210302400240024020020e0b0402020202020202000201020b200141106a290300200141186a2903008450450d0141010f0b200141d0036a290300200141d8036a2903008450450d0041010f0b4101210302400240024002400240024002400240024002402000280200417f6a0e0b0b020305070406000901080a0b200041106a2903002204200041186a290300220584500d0920024108470d092001410c6a28020022032000410c6a280200470d0920012802042000280204200310c2090d0941012103200141106a290300200454200141186a290300220420055420042005511b0d090c0a0b200041d0036a2903002204200041d8036a290300220584500d082002410a470d08200141086a200041086a10c208450d0841012103200141d0036a290300200454200141d8036a290300220420055420042005511b0d080c090b2002410a4b0d0741002103410120027441d60a71450d0841010f0b2002410b4b0d0641002103410120027441aa1571450d0741010f0b41002103024002402002417e6a0e09000808080108080801080b41010f0b200141086a200041086a10c2080f0b41002103024002402002417e6a0e0700070107070701070b41010f0b410021032001410c6a2802002000410c6a2802002202470d0520012802042000280204200210c209450f0b41002103024002402002417d6a0e09000606060106060601060b41010f0b200141086a200041086a10c2080f0b41002103024002402002417d6a0e0700050105050501050b41010f0b410021032001410c6a2802002000410c6a2802002202470d0320012802042000280204200210c209450f0b2002410b470d01200141086a200041086a10c208450d0141012103200141d0036a200041d0036a10af09450d010c020b20024109470d002001410c6a28020022032000410c6a280200470d0020012802042000280204200310c2090d0041012103200141106a200041106a10af090d010b410021030b20030be20602027f017e410021020240024002400240024002400240024002402000280200220320012903002204a7470d004101210202400240024002400240024002400240024002400240024002400240024002400240024002402003417f6a0e080e00010203040506130b20044202520d12200041086a200141086a10f8040d060c1a0b20044203520d11200041086a200141086a10f8040d060c180b20044204520d10200041086a200141086a10f8040d060c160b20044205520d0f200041086a200141086a10f8040d060c140b20044206520d0e200041086a200141086a10f8040d060c120b20044207520d0d200041086a200141086a10f8040d060c100b20044208520d0c200041086a200141086a10f8040d060c0e0b200041c0006a200141c0006a10f804450d130c0b0b200041c0006a200141c0006a10f804450d11200041f8006a200141f8006a10f804450d110c0a0b200041c0006a200141c0006a10f804450d0f200041f8006a200141f8006a10f804450d0f200041b0016a200141b0016a10f804450d0f0c090b200041c0006a200141c0006a10f804450d0d200041f8006a200141f8006a10f8040d070c0d0b200041c0006a200141c0006a10f804450d0b200041f8006a200141f8006a10f804450d0b200041b0016a200141b0016a10f8040d050c0b0b200041c0006a200141c0006a10f804450d09200041f8006a200141f8006a10f8040d030c090b200041c0006a200141c0006a10f804450d07200041f8006a200141f8006a10f804450d07200041b0016a200141b0016a10f8040d010c070b20044201510d050c040b200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d05200041d8026a200141d8026a10f804450d0520004190036a20014190036a10f804450d050c030b200041b0016a200141b0016a10f804450d05200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d05200041d8026a200141d8026a10f804450d050c020b200041e8016a200141e8016a10f804450d05200041a0026a200141a0026a10f804450d050c010b200041b0016a200141b0016a10f804450d05200041e8016a200141e8016a10f804450d050b20020f0b200041086a200141086a10f8040f0b41000f0b41000f0b41000f0b41000f0b41000f0b41000f0b41000b1300200041033602042000418cc2c7003602000bba0101027f230041106b2202240002400240024002402000280200220341c000490d00200341808001490d012003418080808004490d02200241033a00032001200241036a4101107e200220033602042001200241046a4104107e0c030b200220034102743a00032001200241036a4101107e0c020b200220034102744101723b010a20012002410a6a4102107e0c010b2002200341027441027236020c20012002410c6a4104107e0b200041046a200110f905200241106a24000bed0304017f017e047f027e230041e0006b2201240042002102200141306a41186a22034200370300200141306a41106a22044200370300200141306a41086a2205420037030020014200370330200141d0006a41f3c6c000410610a7022005200141d0006a41086a220629000037030020012001290050370330200141d0006a41c08fc900410b10a7022003200629000037030020042001290050370300200141106a200141306a10ed03200141106a41186a2903002107200129031021082005200141106a41106a290300370300200120012903183703300240024020084201510d00200141086a4200370300200142003703000c010b200141086a200529030037030020012001290330370300200721020b200141106a41106a200141086a290300370300200141106a41186a427f200220007c220020002002541b3703002001200129030037031820014201370310200141306a41186a4200370300200141306a41106a4200370300200141306a41086a2205420037030020014200370330200141d0006a41f3c6c000410610a7022005200141d0006a41086a220329000037030020012001290050370330200141d0006a41c08fc900410b10a702200441086a200329000037000020042001290050370000200141306a200141106a41086a10b006200141e0006a24000bff0104017f017e037f037e0240024020012802082202ad42287e2203422088a70d002003a72204417f4c0d00200128020021050240024020040d00410821010c010b2004102f2201450d020b2000410036020820002001360200200041046a200441286e2206360200024020044128490d0003402004450d01200541086a2903002103200541106a29030021072005290320210820052903002109200141186a200541186a290300370300200141106a2007370300200141086a200337030020012009370300200141206a2008370300200141286a2101200441586a2104200541286a21052006417f6a22060d000b0b200020023602080f0b103b000b1039000b110041c0ebc900411f41e0ebc900103c000bdc0301057f230041f0006b2201240020002d00002102200141186a2203200041196a290000370300200141106a2204200041116a290000370300200141086a2205200041096a2900003703002001200029000137030002400240024020020d00200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a41dcbfc700410a10a702200141206a41e5aac800410510a7022000200141206a41086a29000037030020022001290020370300200141c0006a412010bd020c010b200141206a41186a2003290300370300200141206a41106a2004290300370300200141206a41086a200529030037030020012001290300370320200141c0006a41186a22004200370300200141c0006a41106a22024200370300200141c0006a41086a420037030020014200370340200141c0006a41dcbfc700410a10a702200141e0006a41e5aac800410510a7022000200141e0006a41086a290000370300200220012900603703004120102f2200450d012001422037026420012000360260200141e0006a200141206a4120107e200141c0006a4120200128026022002001280268109f022001280264450d00200010310b200141f0006a24000f0b1039000b13002000410636020420004190d7c7003602000b3400200041dcbfc70036020420004100360200200041146a4106360200200041106a418c87c800360200200041086a420a3702000b4201027f230041106b2202240002404101102f22030d001039000b2000420137020420002003360200200241003a000f20002002410f6a4101107e200241106a24000b2701017f02404104102f22020d001039000b20004204370204200020023602002000410010cb010b6401027f230041d0076b220224002002412336020802404101102f2203450d002000420137020420002003360200200241003a00cf072000200241cf076a4101107e024020022802084123460d00200241086a10fa060b200241d0076a24000f0b1039000b3701017f230041106b22022400200041003602082000420137020020024100360208200242013703002002200010b107200241106a24000bdf2603067f067e0d7f230022042105200441e0036b416071220424002004200336021420042001360210024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022d00004101460d00200241046a28020021020240200141c8006a220628020022032003417f6a2207200141c0006a220828020022032001413c6a22092802006b716b4101470d00200910db062006280200417f6a2107200828020021030b20082007200341016a71360200200141c4006a28020020034102746a2002360200200141386a280200220320024d0d022001280230200241fc006c6a2201290210210a200120042903f0013702102001290208210b200120042903e801370208200441d8006a2001290240220c370300200441386a22032001290220370300200441f8006a2001290260370300200141186a2202290200210d200220042903f801370200200441003a00e001200441003602e4012001290200210e200120042903e001370200200441186a41d8006a2207200141d8006a290200370300200441186a41d0006a2208200141d0006a290200370300200441186a41c8006a2206200141c8006a290200370300200441186a41386a200141386a290200220f370300200441186a41306a2209200141306a290200370300200441186a41286a2210200141286a290200370300200441186a41186a2211200d370300200441186a41e8006a200141e8006a290200370300200441186a41f0006a200141f0006a290200370300200441186a41f8006a200141f8006a2802003602002004200a3703282004200b3703202004200e370318200ea741ff01714101460d01200ba72102200b422088a72101200c422088a72112200fa72113200441c0016a41086a22142003290300370300200441c0016a41106a22032010290300370300200441c0016a41186a2009290300370300200441a8016a41086a2008290300370300200441a8016a41106a2007280200360200200420112903003703c001200420062903003703a801200441d4006a290200220fa7211502400240024002400240200e422088a70e050102030400010b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210620042802f00121010c010b200441e9016a21060b20024101762108024002402002410171450d00200120084d0d0a200620086a2d0000410f71210341002109200841016a21080c010b20012008490d0841012109410021030b200141017420026b220241ffff03200241ffff03491b220241017641036a2210102f2211450d19200120086b2107200620086a2108200441003602a0012004201036029c01200420113602980102402015410020151b2210450d00200420023602e40220044181023b01e002200441e0026a20044198016a10f305410021022009450d0c410021010c0f0b200420023602e402200441013b01e002200441e0026a20044198016a10f305410021022009450d0c410021010c0d0b4101102f2201450d182004410136029c012004200136029801200141003a0000200441013602a0010c0f0b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210720042802f00121010c010b200441e9016a21070b20024101762103024002402002410171450d00200120034d0d0a200441013a00e002200441e8026a2001200341016a22026b3602002004200720026a3602e4022004200720036a2d0000410f713a00e1020c010b20012003490d08200441e8026a200120036b360200200441003b01e0022004200720036a3602e4020b20044198016a200441e0026a2013200f422088a710e00602402015450d00201310310b20042802e4014125490d0e200441ec016a28020010310c0e0b200441e0016a41086a200a370300200441e0016a41106a20042903c001370300200441e0016a41186a201429030037030020044180026a200329030037030020044188026a200441c0016a41186a290300370300200420023602e001200420013602e4010240024020014125490d00200a422088a7210020042802f00121010c010b200441e9016a21000b200420023602c802200420013602c402200420003602c002200441a0036a200441c0026a10d0082004280214200441c0026a4100200410d108210120042802102102200441a4026a201236020020044198026a41106a20042903a801370300200441b0026a200441b0016a290300370300200441b8026a200441a8016a41106a2802003602002004200f37029c022004201336029802200441e0026a200220044198026a2004280214220410cf082004200110d20810df06000b10de06000b200041003a000020002002290001370001200041196a200241196a290000370000200041116a200241116a290000370000200041096a200241096a2900003700000c120b20002004290019370001200041003a0000200041196a200441186a41196a290000370000200041116a200441186a41116a290000370000200041096a200441186a41096a2900003700000c0b0b2002200341c89ac800103f000b2008200141bc85ca001061000b2008200141cc85ca00103f000b2003200141bc85ca001061000b2003200141cc85ca00103f000b410121010c020b410121010b03400240024020010e020001010b200220074f0d03200820026a2d00002103200241016a2102410121010c010b02400240024020042802a0012201200428029c01470d00200141016a22062001490d0e200141017422092006200920064b1b22064108200641084b1b21060240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20064101200441e0026a104e200441a0026a28020021062004280298024101460d01200428029c0221092004200636029c0120042009360298010b20042802980120016a20033a00002004200141016a3602a0010c010b20060d0d0c0c0b410021010c000b0b03400240024020010e020001010b200220074f0d02200820026a2d00002103200241016a2102410121010c010b02400240024020042802a0012201200428029c01470d00200141016a22062001490d0d200141017422092006200920064b1b22064108200641084b1b21060240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20064101200441e0026a104e200441a0026a28020021062004280298024101460d01200428029c0221092004200636029c0120042009360298010b20042802980120016a20033a00002004200141016a3602a0010c010b2006450d0b0c0c0b410021010c000b0b20042802a001221621010240024002400240024002402016200428029c01470d00201641016a22012016490d0e201641017422022001200220014b1b22014108200141084b1b21010240024020160d00200441003602e0020c010b200441e0026a41086a4101360200200420163602e40220042004280298013602e0020b20044198026a20014101200441e0026a104e200441a0026a28020021012004280298024101460d01200428029c0221022004200136029c01200420023602980120042802a00121010b20042802980120016a41003a0000200420042802a00141016a22013602a0010240024002402001200428029c01470d00200141016a22022001490d10200141017422032002200320024b1b22024108200241084b1b21020240024020010d00200441003602e0020c010b200441e0026a41086a4101360200200420013602e40220042004280298013602e0020b20044198026a20024101200441e0026a104e200441a0026a28020021012004280298024101460d01200428029c0221022004200136029c01200420023602980120042802a00121010b201341c0046a211720042802980120016a41003a0000200420042802a00141016a3602a00102402010450d002010201220044198016a10ce010b200441a0036a410172210220172013470d0141002110410021010c040b20010d0f0c0e0b200441e0026a4101722103200441e9016a21184100210920132101410021104101210602400340200441023a00e0022001290200210e20042903f802210b20042903f002210a20042903e802210d200120042903e0023702002001290208210c2001200d3702082001290210210d2001200a370210200141186a2207290200210a2007200b3702002004200a3703b8032004200d3703b0032004200c3703a8032004200e3703a003200141206a2802002119200441e0026a41176a2211200241176a290000370000200441e0026a41106a2207200241106a290000370300200441e0026a41086a2208200241086a290000370300200420022900003703e0020240200ea7221a41ff017122144103470d0020104180fe037141087621010c060b200441c0026a41176a22122011290000370000200441c0026a41106a22112007290300370300200441c0026a41086a2008290300220e370300200420042903e002220b3703c002200441a0036a41176a221b2012290000370000200441a0036a41106a22122011290300370300200441a0036a41086a2211200e3703002004200b3703a00302400240024020144102470d00200441023a0098020c010b0240024020042802e40122144125490d0020042802f001211420042802ec01211c0c010b2018211c0b200420042802e0013602d803200420143602d4032004201c3602d0032004280214200441d0036a4101200910d10821142004280210211c200320042903a003370000200341086a2011290300370000200341106a2012290300370000200341176a201b2900003700002004201a3a00e002200420193602800320044198026a201c200441e0026a2004280214221910cf082019201410d20820042d0098024103460d010b200441e0026a41206a20044198026a41206a290300370300200441e0026a41186a20044198026a41186a290300370300200720044198026a41106a290300370300200820044198026a41086a2903003703002004200429039802220e3703e002410021070240024002400240200ea741ff0171417f6a0e020103000b2003412020044198016a10ce010c010b200441a0036a41186a200341186a2900003703002012200341106a2900003703002011200341086a290000370300200420032900003703a003200428028403220741214f0d04200441a0036a200720044198016a10ce010b200621070b200941016a21092006410174210620072010722110200141246a22012017460d040c010b0b20104180fe037141087621010c050b200741204188ddc4001058000b20010d0d0c0c0b20104180fe037141087621010b200441033a00a003200441e0026a41176a200241176a290000370000200441e0026a41106a200241106a290000370300200441e0026a41086a200241086a290000370300200420022900003703e0020b200441033a0098020b201641026a21022016417e4f0d0220042802a00122032002490d0320042802980120166a2001410874201041ff0171723b000002402015450d00200f428080808010540d00201510310b2013103120042802e4014125490d00200441ec016a28020010310b0240024020042802a00122014120490d002004280210220241d0006a2802002108200228024c21062004280214220728022c22094101762102200728020021030240024020094101710d000240024020034125490d002007410c6a2802002103200741086a28020021070c010b200741056a21070b20032002490d07200420073602e002410021030c010b0240024020034125490d002007410c6a220928020022032002490d0a200741086a2210280200210720092802002103201028020021090c010b20032002490d09200741056a220721090b200320024d0d07200441e9026a200920026a2d000041f001713a0000200420073602e002410121030b200420033a00e802200420023602e402200441e0016a2006200441e0026a20042802980120012008280214110400200020042903e001370001200041096a200441e8016a290300370000200041116a200441f0016a290300370000200041196a200441f8016a290300370000200041003a000020042802102201200128027c41016a36027c0c010b200441f8016a22024200370300200441f0016a22034200370300200441e8016a22074200370300200442003703e001200441e0016a200428029801200110bf091a200041246a2001360200200041013a0000200041196a2002290300370000200041116a2003290300370000200041096a2007290300370000200020042903e0013700010b0240200428029c01450d0020042802980110310b20042d0018450d060b2004413c6a10d308200524000f0b201620024198ddc4001062000b200220034198ddc4001058000b2002200341bc84ca001058000b2002200341dc84ca00103f000b2002200341cc84ca001058000b200524000f0b103b000b1039000bb80101057f2001280208220241017621032001280204210402400240024002402002410171450d00200420034d0d034101210220012802002205200341016a22066a2101200520036a2d0000410f712105200621030c010b20042003490d01200128020020036a210141002105410021020b200020023a000c20002001360204200041003602002000410d6a20053a0000200041086a200420036b3602000f0b2003200441bc85ca001061000b2003200441cc85ca00103f000b960a01127f230041106b2204240002400240024002400240024020010d00410021010c010b200141086a28020022054101762106200141046a2802002107024002400240024002400240024002402005410171450d00200720064b0d012006200741cc85ca00103f000b20072006490d02200720066b2108200128020020066a21090c010b20002001280200220120066a2d0000410f7110ac092007200641016a22066b2108200120066a21090b0240024002400240024002400240200028020022014125490d002000412c6a210a2000410c6a2206280200410174200028022c470d02200628020021010c010b2000412c6a210a2001410174200028022c470d020b20042000200810a206024020042802004101470d00200441086a2802000d0c41b087ca00411141c487ca00103c000b02400240200028020022064125490d002000410c6a28020022062001490d08200041086a280200210b0c010b20062001490d07200041056a210b0b200b20016a220b20086a200b200620016b10c0091a200b2009200810bf091a0240024020002802004125490d002000410c6a21010c010b200021010b2001200620086a3602000c090b20080d01410021080c080b20080d01410021080c070b2000410c6a280200220b2006280200417f6a22064b0d01200b21010c0b0b20012001417f6a22064d0d0a200041056a20066a2d0000417071210b0c030b200041086a28020020066a2d0000417071210b20014125490d022000410c6a2802002101200041086a280200210c0c030b2006200741bc85ca001061000b41dc88ca00411e41fc88ca00103c000b200041056a210c0b200120064d0d03200c20066a200b3a000020092d0000210b02400240200028020022014125490d002000410c6a2802002101200041086a280200210c0c010b200041056a210c0b200120064d0d04200c20066a220120012d0000200b410476723a0000024002402008417f6a220d0d004100210d0c010b2008417f6a210e20084101200841014b1b417f6a210f410021012000410c6a2110200041086a2111200041056a21120340024002400240024020082001460d00200f2001460d01200920016a22062d00002113200641016a2d00002114024002402000280200220c4125490d0020102802002106201128020021152010210b0c010b200c21062000210b201221154124210c0b2006200c470d0320042000410110a20620042802004101470d02200441086a2802000d0841b087ca00411141c487ca00103c000b20082008419c85ca00103f000b200141016a200841ac85ca00103f000b2000410c6a220b2802002106201128020021150b201520066a201441f001714104762013410474723a0000200b200b28020041016a360200200e200141016a2201470d000b0b2009200d6a2d00002115024002402000280200220b4125490d002000410c6a22012802002106200041086a280200210c0c010b200041056a210c200b2106200021014124210b0b02402006200b470d0020042000410110a206024020042802004101470d00200441086a2802000d0441b087ca00411141c487ca00103c000b2000410c6a22012802002106200041086a280200210c0b200c20066a20154104743a00002001200128020041016a3602000b200a200a28020020084101746a360200200741017420056b21010b02402002450d002000200310ac09200141016a21010b200441106a240020010f0b1039000b2006200141fc84ca00103f000b20062001418c85ca00103f000b2006200141ec84ca00103f000b960301057f0240024002402001450d000240200028022c220220014b0d0002400240200028020022014125490d002000410c6a220228020021010c010b200021020b02402001450d00200241003602000b2000410036022c0f0b200220016b2203410176200341017122046a210202400240200028020022014125490d002000410c6a28020021050c010b200121050b0240200220054f0d002000410c6a2106200220056b41016a210203400240024020014125490d0020062802002101200621050c010b200021050b02402001450d0020052001417f6a3602000b2002450d01200241016a2102200028020021010c000b0b2000200336022c2004450d0002400240200028020022014125490d002000410c6a220528020022012001417f6a22024d0d04200041086a220628020020026a2d0000417071210020052802002101200628020021050c010b2001417f6a220220014f0d03200041056a220520026a2d000041707121000b200120024d0d01200520026a20003a00000b0f0b2002200141ac84ca00103f000b20022001419c84ca00103f000bcd0101017f0240024002400240024020002802000e0404000102030b0240200041086a2802004125490d00200041106a28020010310b200041386a280200450d03200041346a28020010310f0b200041086a2802004125490d02200041106a28020010310f0b20002802041031200041086a2802002201450d012000410c6a280200450d01200110310c010b0240200041086a2802004125490d00200041106a28020010310b200041346a2802001031200041386a2802002201450d002000413c6a280200450d00200110310f0b0bdd0302047f017e230041a0016b220224000240024002400240200028020c2203200041106a280200470d002002200141fc0010bf0921030240024020002802082201200041046a280200470d00200141016a22042001490d04200141017422052004200520044b1b22044104200441044b1bad42fc007e2206422088a74541027421042006a721050240024020010d0020034100360290010c010b20034198016a41043602002003200141fc006c3602940120032000280200360290010b20034180016a2005200420034190016a104e20034188016a28020021012003280280014101460d012000200328028401360200200041046a200141fc006e360200200028020821010b2000280200200141fc006c6a200341fc0010bf091a20002000280208220341016a3602080c020b2001450d021039000b2000410c6a200041186a280200417f6a200341016a71360200200041146a28020020034102746a28020021032002200141fc0010bf0921012000280208220420034d0d020240024020002802002200200341fc006c6a22042d00000d002000200341fc006c6a41046a10d3080c010b2000200341fc006c6a41246a10d3080b2004200141fc0010bf091a0b200241a0016a240020030f0b103b000b2003200441dc9cc800103f000b960401037f23004190016b2206240041002107200641003602080240024020012d00584101460d00200141dc006a28020021080c010b200641366a200141db006a2d00003a0000200641206a200141e8006a290000370300200641286a200141f0006a290000370300200641306a200141f8006a2d00003a00002006200141d9006a2f00003b01342006200141e0006a290000370318200141dc006a2800002108410121070b200641c8006a41086a2006290318370300200641c8006a41106a200641186a41086a290300370300200641c8006a41186a200641186a41106a290300370300200641e8006a200641186a41186a280200360200200620073a0048200620062f01343b00492006200836024c2006200641366a2d00003a004b200641003602782006200336027420062002360270024002402005417f4c0d004101210702402005450d002005102f2207450d020b2006200536028401200620073602800120072004200510bf091a2006200536028801200641386a2001200641c8006a200641f0006a20064180016a200641086a10d608200628023c21050240024020062802384101460d00200141003a00582000200629030837020420004100360200200141dc006a20053602002000410c6a200641106a2802003602000c010b200041013602002000200536020420062802082201450d00200628020c450d00200110310b20064190016a24000f0b103b000b1039000bba3205077f017e017f0b7e0b7f230022062107200641e0086b416071220624000240024002400240024002400240024002400240024002400240024020022d00004101470d00200641b8036a200241196a290000370300200641b0036a200241116a290000370300200641a8036a200241096a290000370300200620022900013703a003200328020822084101762102200328020421092003280200210a0240024020084101710d00024020092002490d00410021090c020b20022009418087ca001058000b20092002490d03200220094f0d04200a20026a2d00004170712108410121090b200141d0006a280200210b200128024c210c200641e9046a20083a0000200620093a00e804200620023602e4042006200a3602e004200620062f01c8073b01ea0420064188086a200c200641a0036a200641e0046a200b28020c1105000240024020062802880822090d00200641f0056a2201200641ab036a290000370300200641e8056a41106a2203200641b3036a290000370300200641fd056a2209200641b8036a290000370000200620062900a3033703e80520062d00a203210520062f01a003210a4130102f22020d011039000b200629028c08210d200641c0046a41186a200641a0036a41186a2208290300370300200641c0046a41106a200641a0036a41106a220b290300370300200641c0046a41086a200641a0036a41086a220c290300370300200620062903a0033703c004200641e0046a200641c0046a2009200d422088a7200141306a220e10d70820062802e404210220062802e004210a20064188086a200641e0046a41086a41d40010bf091a200a4101460d0c200641e0036a20064188086a41d40010bf091a200620023602840520064188056a200641e0036a41d40010bf091a200641f9046a2008290300370000200641f1046a200b290300370000200641e9046a200c290300370000200641013a00e004200620062903a0033700e104200e200641e0046a10d4082102200da7450d02200910310c020b2002200a20054110747222053b0001200241013a0000200220062903e805370004200220062900e004370021200241036a20054110763a00002002410c6a2001290300370000200241146a2003290300370000200241196a2009290000370000200241286a200641e7046a2900003700000c0c0b200241046a28020021020b0240200141c8006a220b28020022092009417f6a2208200141c0006a220a28020022092001413c6a220c2802006b716b4101470d00200c10db06200b280200417f6a2108200a28020021090b200a2008200941016a71360200200141c4006a28020020094102746a2002360200200141386a280200220920024d0d02200141306a220a280200200241fc006c6a2202290210210f200220062903f00437021020022902082110200220062903e804370208200241186a22092902002111200920062903f804370200200641003a00e004200641003602e4042002290200210d200220062903e00437020020022902402112200241c8006a2902002113200241d0006a2902002114200241d8006a290200211520022902202116200241286a2902002117200241306a2902002118200241386a290200211920064180036a41086a2209200241e8006a29020037030020064180036a41106a2208200241f0006a29020037030020064180036a41186a220b200241f8006a280200360200200620113703f8032006200f3703f003200620103703e8032006200d3703e003200620193703d804200620183703d004200620173703c804200620163703c004200620153703b803200620143703b003200620133703a803200620123703a0032006200229026037038003200641d0036a41086a2202200441086a280200360200200620042902003703d00302400240024002400240024002400240200da7220c41ff01714101470d002003280200211a2003280204211b2003280208210e20064188076a41186a20062802fc0336020020064188076a41106a20062902f40337030020064188076a41086a20062902ec03370300200620062902e40337038807200641bc086a2015370200200641b4086a201437020020064188086a41246a2013370200200641a4086a201237020020064188086a41186a20062802dc0436020020064188086a41106a20062902d40437030020064188086a41086a20062902cc04370300200620062902c4043703880820064188086a413c6a20062903800337020020064188086a41c4006a2009290300370200200641d4086a2008290300370200200641dc086a200b280200360200200641e8056a41086a2002280200360200200620062903d0033703e805200641e0046a200120064188086a2003200641e8056a200510d80820062802e404210220062802e0044101460d07200d420888a721092016a72103200641e8076a41186a220820064180056a280200360200200641e8076a41106a220b200641e0046a41186a290300370300200641e8076a41086a221c200641e0046a41106a221d290300370300200641c8076a41086a221e2006418d056a290000370300200641c8076a41106a221f20064195056a290000370300200641c8076a41176a2220200641e0046a413c6a29000037000020062006290085053703c8072006200641e0046a41086a22212903003703e807200641e0046a41246a2d00002104200641a8076a41086a2222200641ad056a290000370300200641a8076a41106a2223200641b5056a290000370300200641a8076a41176a2224200641bc056a280000360000200620062900a5053703a807200641e0046a41c4006a2d0000210520020e03020501020b200641bc086a2019370200200641b4086a201837020020064188086a41246a2017370200200641a4086a201637020020064188086a41186a20062802fc0336020020064188086a41106a20062902f40337030020064188086a41086a20062902ec0337030020064188086a413c6a20062903a00337020020064188086a41c4006a20062903a803370200200641d4086a20062903b003370200200641dc086a20062802b803360200200620062902e4033703880820064188076a41086a2002280200360200200620062903d00337038807200641e0046a200120064188086a200320064188076a200510d80820062802e404210220062802e0044101460d06200641e8056a41186a220520064180056a280200360200200641e8056a41106a2208200641e0046a41186a290300370300200641e8056a41086a220b200641e0046a41106a290300370300200641c8076a41086a220c2006418d056a290000370300200641c8076a41106a220e20064195056a290000370300200641c8076a41176a221a200641e0046a413c6a29000037000020062006290085053703c8072006200641e0046a41086a2903003703e805200641e0046a41246a2d00002103200641e8076a41086a221b200641ad056a290000370300200641e8076a41106a221c200641b5056a290000370300200641e8076a41176a221d200641bc056a280000360000200620062900a5053703e807200641e0046a41c4006a2d0000210441022101024020020e03000304000b200641e8066a41186a2005280200360200200641e8066a41106a2008290300370300200641e8066a41086a200b290300370300200641c8066a41086a200c290300370300200641c8066a41106a200e290300370300200641c8066a41176a201a290000370000200641a8066a41086a201b290300370300200641a8066a41106a201c290300370300200641a8066a41176a201d280000360000200620062903e8053703e806200620062903c8073703c806200620062903e8073703a80641002101410121090c030b200e410176210202400240200e4101710d000240201b2002490d00410021040c020b2002201b418087ca001058000b201b2002490d0a2002201b4f0d0b201a20026a2d00004170712108410121040b20064188086a201a200210d908200641b5086a20083a0000200641eb046a20064188076a41086a290300370000200641f3046a20064188076a41106a290300370000200641fb046a20064188076a41186a280200360000200641e0046a41286a20064188086a41086a29030037030020064190056a20064188086a41106a29030037030020064198056a20064188086a41186a290300370300200641a0056a200641a8086a290300370300200620043a00b408200641a8056a20064188086a41286a290300370300200620033a00ff0420062006290388073700e304200620062903880837038005200620093b01e004200620094110763a00e2042001200641e0046a10da08410221010c040b200e410176210202400240200e4101710d000240201b2002490d00410021080c020b2002201b418087ca001058000b201b2002490d0b2002201b4f0d0c201a20026a2d0000417071210b410121080b20064188086a201a200210d908200641b5086a200b3a0000200641eb046a20064188076a41086a290300370000200641f3046a20064188076a41106a290300370000200641fb046a20064188076a41186a280200360000200641e0046a41286a20064188086a41086a29030037030020064190056a20064188086a41106a29030037030020064198056a20064188086a41186a290300370300200641a0056a200641a8086a290300370300200620083a00b408200641a8056a20064188086a41286a290300370300200620033a00ff0420062006290388073700e304200620062903880837038005200620093b01e004200620094110763a00e2042001200641e0046a10da08200641e8066a41086a200641e8076a41086a290300370300200641e8066a41106a200641e8076a41106a290300370300200641e8066a41186a200641e8076a41186a280200360200200641c8066a41086a200641c8076a41086a290300370300200641c8066a41106a200641c8076a41106a290300370300200641c8066a41176a200641c8076a41176a290000370000200641a8066a41086a200641a8076a41086a290300370300200641a8066a41106a200641a8076a41106a290300370300200641a8066a41176a200641a8076a41176a280000360000200620062903e8073703e806200620062903c8073703c806200620062903a8073703a806410021014101210920042103200521040c030b200641e8066a41186a2005280200360200200641e8066a41106a2008290300370300200641e8066a41086a200b290300370300200641c8066a41086a200c290300370300200641c8066a41106a200e290300370300200641c8066a41176a201a290000370000200641a8066a41086a201b290300370300200641a8066a41106a201c290300370300200641a8066a41176a201d280000360000200620062903e8053703e806200620062903c8073703c806200620062903e8073703a80641002109410021010b410021020c0a0b200641e8066a41086a20064188076a41086a290300370300200641e8066a41106a20064188076a41106a290300370300200641e8066a41186a20064188076a41186a280200360200200641eb046a201c290300370000200641f3046a200b290300370000200641fb046a2008280200360000200641a8066a41176a2020290000370000200641a8066a41106a201f290300370300200641a8066a41086a201e29030037030020062006290388073703e806200620062903e8073700e304200620062903c8073703a80620064188066a41176a202428000036000020064188066a41106a202329030037030020064188066a41086a2022290300370300200641c8066a41176a200641e0046a41176a290000370000200641c8066a41106a201d290000370300200641c8066a41086a2021290000370300200620062903a80737038806200620062900e0043703c80641012101410021090b200c41807e7121020c080b410121010c080b20022009419087ca001058000b2002200941a087ca00103f000b2002200941c89ac800103f000b2002201b419087ca001058000b2002201b41a087ca00103f000b2002201b419087ca001058000b2002201b41a087ca00103f000b200641c8076a41186a200641e8066a41186a280200360200200641c8076a41106a200641e8066a41106a290300370300200641c8076a41086a200641e8066a41086a290300370300200641e0046a41086a200641c8066a41086a290300370300200641e0046a41106a200641c8066a41106a290300370300200641e0046a41176a200641c8066a41176a29000037000020064188086a41086a200641a8066a41086a29030037030020064188086a41106a200641a8066a41106a29030037030020064188086a41176a200641a8066a41176a290000370000200620062903e8063703c807200620062903c8063703e004200620062903a80637038808200641e8056a41176a20064188066a41176a280000360000200641e8056a41106a20064188066a41106a290300370300200641e8056a41086a20064188066a41086a29030037030020062006290388063703e80520012002722102410021010b200641e0026a41086a2208200641c8076a41086a290300370300200641e0026a41106a220b200641c8076a41106a290300370300200641e0026a41186a220c200641c8076a41186a280200360200200641c0026a41086a220e200641e0046a41086a290300370300200641c0026a41106a221a200641e0046a41106a290300370300200641c0026a41176a221b200641e0046a41176a290000370000200620062903c8073703e002200620062903e0043703c002200641a0026a41176a221c20064188086a41176a290000370000200641a0026a41106a221d20064188086a41106a290300370300200641a0026a41086a221e20064188086a41086a29030037030020064180026a41086a221f200641e8056a41086a29030037030020064180026a41106a2220200641e8056a41106a29030037030020064180026a41176a2221200641e8056a41176a28000036000020062006290388083703a002200620062903e805370380020240024020010d00200641e0016a41186a200c280200360200200641e0016a41106a200b290300370300200641e0016a41086a2008290300370300200641c0016a41086a200e290300370300200641c0016a41106a201a290300370300200641c0016a41176a201b290000370000200641a0016a41086a201e290300370300200641a0016a41106a201d290300370300200641a0016a41176a201c290000370000200620062903e0023703e001200620062903c0023703c001200620062903a0023703a00120064180016a41176a202128000036000020064180016a41106a202029030037030020064180016a41086a201f290300370300200620062903800237038001200241ff01714102460d01200641e0006a41186a2201200641e0016a41186a280200360200200641e0006a41106a2208200641e0016a41106a290300370300200641e0006a41086a220b200641e0016a41086a290300370300200641c0006a41086a220c200641c0016a41086a290300370300200641c0006a41106a220e200641c0016a41106a290300370300200641c0006a41176a221a200641c0016a41176a290000370000200641206a41086a221b200641a0016a41086a290300370300200641206a41106a221c200641a0016a41106a290300370300200641206a41176a221d200641a0016a41176a290000370000200620062903e001370360200620062903c001370340200620062903a001370320200641176a221e20064180016a41176a280000360000200641106a221f20064180016a41106a290300370300200641086a222020064180016a41086a2903003703002006200629038001370300200641c0046a41086a2221200b290300370300200641c0046a41106a220b2008290300370300200641c0046a41186a22082001280200360200200620062903603703c00420064188086a41086a2201200c29030037030020064188086a41106a220c200e29030037030020064188086a41176a220e201a2900003700002006200629034037038808200641e0036a41086a221a201b290300370300200641e0036a41106a221b201c290300370300200641e0036a41176a221c201d290000370000200620062903203703e003200641a0036a41176a221d201e280000360000200641a0036a41106a221e201f290300370300200641a0036a41086a221f2020290300370300200620062903003703a00320064180056a20033a0000200620023a00e004200620024118763a00e304200620024108763b00e104200641ec046a2021290300370200200641f4046a200b290300370200200641fc046a2008280200360200200620062903c0043702e40420064181056a20062903880837000020064189056a200129030037000020064191056a200c29030037000020064198056a200e290000370000200641a0056a20043a0000200641b8056a201c290000370000200641b1056a201b290300370000200641a9056a201a290300370000200641a1056a20062903e003370000200641c0056a20053a0000200641d8056a201d280000360000200641d1056a201e290300370000200641c9056a201f290300370000200641c1056a20062903a003370000200a200641e0046a10d4082106200041086a20093a00002000200636020420004100360200200724000f0b20004101360200200020023602040c030b41ec9cc800411841849dc8001068000b200da7450d00200910310b2000410136020020002002360204200441046a280200450d0020042802001031200724000f0b200724000ba3a3011f047f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e017f017e027f017e087f017e087f230041b00e6b22052400200541086a2002200310bb04024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020052d00084101470d0020052d00092102200541900e6a41086a2203200141086a290000370300200541900e6a41106a2204200141106a290000370300200541900e6a41186a2206200141186a290000370300200520012900003703900e4130102f22010d010c2a0b200541d4016a2802002107200541d0016a2802002108200541c8016a2903002109200541c4016a280200210a200541bc016a290200210b200541b8016a280200210c200541b0016a290300210d200541ac016a280200210e200541a4016a290200210f200541a0016a280200211020054198016a290300211120054194016a28020021122005418c016a290200211320054188016a280200211420054180016a2903002115200541fc006a2802002116200541f4006a2902002117200541f0006a2802002118200541e8006a2903002119200541e4006a280200211a200541dc006a290200211b200541086a41d0006a280200211c200541086a41c8006a290300211d200541086a41c4006a280200211e200541086a413c6a290200211f200541086a41386a2802002120200541386a2903002121200541086a412c6a2802002122200541086a41246a22232902002124200541286a22252802002126200541086a411c6a22272802002128200541086a41186a22292802002102200541086a41146a222a280200212b200541086a410c6a222c290200212d200541086a41086a222e280200212f41002130200528020c0e051502030401150b200141033a0000200120052903900e370001200120023a0021200120052901e00d370122200141096a2003290300370000200141116a2004290300370000200141196a2006290300370000200141286a200541e60d6a29010037010020004101360200200020013602040c270b200541e0016a2802002106200541dc016a2802002131200541d8016a28020021324102210302400240202b4102470d0041002102410021330c010b200541900e6a41186a2233200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e200541e00d6a41086a2028360200200520023602e40d2005202b3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012102024020052802084101460d002033200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e7121330b200541c0066a41186a2234200541900e6a41186a290300370300200541c0066a41106a2235200541900e6a41106a290300370300200541c0066a41086a222b200541900e6a41086a290300370300200520052903900e3703c0062033200341ff017172213320020d03200541a0066a41186a2034290300370300200541a0066a41106a2035290300370300200541a0066a41086a202b290300370300200520052903c0063703a006410221024100210341002134024020264102460d00200541900e6a41186a2234200141186a290000370300200541900e6a41106a2235200141106a290000370300200541900e6a41086a222b200141086a290000370300200520012900003703900e200520243702e40d200520263602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210241012103024020052802084101460d002034200541286a2903003703002035200541086a41186a290300370300202b200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b200241807e7121340b20054180076a41186a2235200541900e6a41186a29030037030020054180076a41106a222b200541900e6a41106a29030037030020054180076a41086a2230200541900e6a41086a290300370300200520052903900e370380072034200241ff017172210220030d04200541e0066a41186a2035290300370300200541e0066a41106a202b290300370300200541e0066a41086a203029030037030020052005290380073703e006410221034100213441002135024020224102460d00200541900e6a41186a2235200141186a290000370300200541900e6a41106a222b200141106a290000370300200541900e6a41086a2230200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002035200541286a290300370300202b200541086a41186a2903003703002030200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121350b200541c0076a41186a222b200541900e6a41186a290300370300200541c0076a41106a2230200541900e6a41106a290300370300200541c0076a41086a222e200541900e6a41086a290300370300200520052903900e3703c0072035200341ff017172213520340d05200541a0076a41186a202b290300370300200541a0076a41106a2030290300370300200541a0076a41086a202e290300370300200520052903c0073703a00741022103410021344100212b024020204102460d00200541900e6a41186a222b200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a222e200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d00202b200541286a2903003703002030200541086a41186a290300370300202e200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212b0b20054180086a41186a2230200541900e6a41186a29030037030020054180086a41106a222e200541900e6a41106a29030037030020054180086a41086a2225200541900e6a41086a290300370300200520052903900e37038008202b200341ff017172212b20340d06200541e0076a41186a2030290300370300200541e0076a41106a202e290300370300200541e0076a41086a202529030037030020052005290380083703e0074102210341002134410021300240201e4102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a222e200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002030200541286a290300370300202e200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121300b200541c0086a41186a222e200541900e6a41186a290300370300200541c0086a41106a2225200541900e6a41106a290300370300200541c0086a41086a2229200541900e6a41086a290300370300200520052903900e3703c0082030200341ff017172213020340d07200541a0086a41186a202e290300370300200541a0086a41106a2025290300370300200541a0086a41086a2029290300370300200520052903c0083703a00841022103410021344100212e0240201c4102460d00200541900e6a41186a222e200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2229200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d00202e200541286a2903003703002025200541086a41186a2903003703002029200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212e0b20054180096a41186a2225200541900e6a41186a29030037030020054180096a41106a2229200541900e6a41106a29030037030020054180096a41086a222c200541900e6a41086a290300370300200520052903900e37038009202e200341ff017172212e20340d08200541e0086a41186a2025290300370300200541e0086a41106a2029290300370300200541e0086a41086a202c29030037030020052005290380093703e0084102210341002134410021250240201a4102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002025200541286a2903003703002029200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121250b200541c0096a41186a2229200541900e6a41186a290300370300200541c0096a41106a222c200541900e6a41106a290300370300200541c0096a41086a2228200541900e6a41086a290300370300200520052903900e3703c0092025200341ff017172212520340d09200541a0096a41186a2029290300370300200541a0096a41106a202c290300370300200541a0096a41086a2028290300370300200520052903c0093703a009410221034100213441002129024020184102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002029200541286a290300370300202c200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121290b200541800a6a41186a222c200541900e6a41186a290300370300200541800a6a41106a2228200541900e6a41106a290300370300200541800a6a41086a2226200541900e6a41086a290300370300200520052903900e3703800a2029200341ff017172212920340d0a200541e0096a41186a202c290300370300200541e0096a41106a2028290300370300200541e0096a41086a2026290300370300200520052903800a3703e00941022103410021344100212c024020164102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d00202c200541286a2903003703002028200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212c0b200541c00a6a41186a2228200541900e6a41186a290300370300200541c00a6a41106a2226200541900e6a41106a290300370300200541c00a6a41086a2223200541900e6a41086a290300370300200520052903900e3703c00a202c200341ff017172212c20340d0b200541a00a6a41186a2028290300370300200541a00a6a41106a2026290300370300200541a00a6a41086a2023290300370300200520052903c00a3703a00a410221034100213441002128024020144102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2223200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002028200541286a2903003703002026200541086a41186a2903003703002023200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121280b200541800b6a41186a2226200541900e6a41186a290300370300200541800b6a41106a2223200541900e6a41106a290300370300200541800b6a41086a2227200541900e6a41086a290300370300200520052903900e3703800b2028200341ff017172212820340d0c200541e00a6a41186a2026290300370300200541e00a6a41106a2023290300370300200541e00a6a41086a2027290300370300200520052903800b3703e00a410221034100213441002126024020124102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121260b200541c00b6a41186a2223200541900e6a41186a290300370300200541c00b6a41106a2227200541900e6a41106a290300370300200541c00b6a41086a222a200541900e6a41086a290300370300200520052903900e3703c00b2026200341ff017172212620340d0d200541a00b6a41186a2023290300370300200541a00b6a41106a2027290300370300200541a00b6a41086a202a290300370300200520052903c00b3703a00b410221034100213441002123024020104102460d00200541900e6a41186a2223200141186a290000370300200541900e6a41106a2227200141106a290000370300200541900e6a41086a222a200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002023200541286a2903003703002027200541086a41186a290300370300202a200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121230b200541800c6a41186a2227200541900e6a41186a290300370300200541800c6a41106a222a200541900e6a41106a290300370300200541800c6a41086a2222200541900e6a41086a290300370300200520052903900e3703800c2023200341ff017172212320340d0e200541e00b6a41186a2027290300370300200541e00b6a41106a202a290300370300200541e00b6a41086a2022290300370300200520052903800c3703e00b4102210341002134410021270240200e4102460d00200541900e6a41186a2227200141186a290000370300200541900e6a41106a222a200141106a290000370300200541900e6a41086a2222200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d002027200541286a290300370300202a200541086a41186a2903003703002022200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e7121270b200541c00c6a41186a222a200541900e6a41186a290300370300200541c00c6a41106a2222200541900e6a41106a290300370300200541c00c6a41086a2220200541900e6a41086a290300370300200520052903900e3703c00c2027200341ff017172212720340d0f200541a00c6a41186a202a290300370300200541a00c6a41106a2022290300370300200541a00c6a41086a2020290300370300200520052903c00c3703a00c41022103410021344100212a0240200c4102460d00200541900e6a41186a222a200141186a290000370300200541900e6a41106a2222200141106a290000370300200541900e6a41086a2220200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012134024020052802084101460d00202a200541286a2903003703002022200541086a41186a2903003703002020200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200341807e71212a0b200541800d6a41186a2222200541900e6a41186a290300370300200541800d6a41106a2220200541900e6a41106a290300370300200541800d6a41086a221e200541900e6a41086a290300370300200520052903900e3703800d202a200341ff017172212a20340d10200541e00c6a41186a2022290300370300200541e00c6a41106a2020290300370300200541e00c6a41086a201e290300370300200520052903800d3703e00c4102213441002103410021220240200a4102460d00200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200520093702e40d2005200a3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213441012103024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021030b203441807e712122203441ff017121340b200541c00d6a41186a2220200541900e6a41186a290300370300200541c00d6a41106a221e200541900e6a41106a290300370300200541c00d6a41086a221c200541900e6a41086a290300370300200520052903900e3703c00d2022203472213420030d24200541a00d6a41186a2020290300370300200541a00d6a41106a201e290300370300200541a00d6a41086a201c290300370300200520052903c00d3703a00d4102210320084102470d1141002101410021040c120b200541086a202f202da710d908200541900e6a41086a2029290300370300200541900e6a41106a2025290300370300200541900e6a41186a200541306a2802003602002005200541086a41106a2903003703900e2002417f4c0d14202c2802002135202e2802002134200528020c210720052802082133410121304101210302402002450d002002102f2203450d270b202d422088a721312003202b200210bf091a20054180026a41186a200541900e6a41186a28020036020020054180026a41106a200541900e6a41106a29030037030020054180026a41086a200541900e6a41086a290300370300200520052903900e37038002200221320c120b200541086a202f202da710d908200541e00d6a41086a2029290300370300200541e00d6a41106a22312025290300370300200541e00d6a41186a200541306a2802003602002005200541086a41106a22062903003703e00d202c2802002135202e2802002134200528020c210720052802082133200541900e6a41186a200141186a290000370300200541900e6a41106a200141106a290000370300200541900e6a41086a200141086a290000370300200520012900003703900e200541a00d6a41086a2028360200200520023602a40d2005202b3602a00d200541086a200541900e6a200541a00d6a200410db08200541c00d6a41086a2027290200370300200541c00d6a41106a220120232802003602002005202a2902003703c00d200528020c2103024020052802084101460d00202e290300212420062802002106200541e8016a41106a2001280200360200200541e8016a41086a200541c00d6a41086a29030037030020054180026a41086a200541e00d6a41086a29030037030020054180026a41106a203129030037030020054180026a41186a200541e00d6a41186a280200360200200520052903c00d3703e801200520052903e00d370380022024422088a72132202d422088a721312024a72102410221300c120b200041013602002000200336020420334125490d24203410310c240b4102210341002133410021060240202f4102460d00200541900e6a41186a2233200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e2005202d3702e40d2005202f3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012106024020052802084101460d002033200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021060b200341807e7121330b200541c0066a41186a2234200541900e6a41186a290300370300200541c0066a41106a2235200541900e6a41106a290300370300200541c0066a41086a2231200541900e6a41086a290300370300200520052903900e3703c006200341ff0171203372213320060d11200541a0066a41186a2034290300370300200541a0066a41106a2035290300370300200541a0066a41086a2031290300370300200520052903c0063703a0064102210302400240202b4102470d0041002106410021020c010b200541900e6a41186a2206200141186a290000370300200541900e6a41106a2234200141106a290000370300200541900e6a41086a2235200141086a290000370300200520012900003703900e200541e00d6a41086a2028360200200520023602e40d2005202b3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210341012102024020052802084101460d002006200541286a2903003703002034200541086a41186a2903003703002035200541086a41106a2903003703002005200541086a41086a2903003703900e410021020b200341807e7121060b20054180076a41186a2234200541900e6a41186a29030037030020054180076a41106a2235200541900e6a41106a29030037030020054180076a41086a222b200541900e6a41086a290300370300200520052903900e37038007200341ff0171200672210320020d13200541e0066a41186a2034290300370300200541e0066a41106a2035290300370300200541e0066a41086a202b29030037030020052005290380073703e006410221024100213441002106024020264102460d00200541900e6a41186a2234200141186a290000370300200541900e6a41106a2235200141106a290000370300200541900e6a41086a222b200141086a290000370300200520012900003703900e200520243702e40d200520263602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210241012106024020052802084101460d002034200541286a2903003703002035200541086a41186a290300370300202b200541086a41106a2903003703002005200541086a41086a2903003703900e410021060b200241807e7121340b200541c0076a41186a2235200541900e6a41186a290300370300200541c0076a41106a222b200541900e6a41106a290300370300200541c0076a41086a2231200541900e6a41086a290300370300200520052903900e3703c007200241ff0171203472210220060d14200541a0076a41186a2035290300370300200541a0076a41106a202b290300370300200541a0076a41086a2031290300370300200520052903c0073703a007410221064100213541002134024020224102460d00200541900e6a41186a2235200141186a290000370300200541900e6a41106a222b200141106a290000370300200541900e6a41086a2231200141086a290000370300200520012900003703900e200520213702e40d200520223602e00d200541086a200541900e6a200541e00d6a200410db08200528020c210641012134024020052802084101460d002035200541286a290300370300202b200541086a41186a2903003703002031200541086a41106a2903003703002005200541086a41086a2903003703900e410021340b200641807e7121350b20054180086a41186a222b200541900e6a41186a29030037030020054180086a41106a2231200541900e6a41106a29030037030020054180086a41086a2232200541900e6a41086a290300370300200520052903900e37038008200641ff0171203572210620340d15200541e0076a41186a202b290300370300200541e0076a41106a2031290300370300200541e0076a41086a203229030037030020052005290380083703e007410221344100212b41002135024020204102460d00200541900e6a41186a222b200141186a290000370300200541900e6a41106a2231200141106a290000370300200541900e6a41086a2232200141086a290000370300200520012900003703900e2005201f3702e40d200520203602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213441012135024020052802084101460d00202b200541286a2903003703002031200541086a41186a2903003703002032200541086a41106a2903003703002005200541086a41086a2903003703900e410021350b203441807e71212b0b200541c0086a41186a2231200541900e6a41186a290300370300200541c0086a41106a2232200541900e6a41106a290300370300200541c0086a41086a2230200541900e6a41086a290300370300200520052903900e3703c008203441ff0171202b72213420350d16200541a0086a41186a2031290300370300200541a0086a41106a2032290300370300200541a0086a41086a2030290300370300200520052903c0083703a00841022135410021314100212b0240201e4102460d00200541900e6a41186a2231200141186a290000370300200541900e6a41106a2232200141106a290000370300200541900e6a41086a2230200141086a290000370300200520012900003703900e2005201d3702e40d2005201e3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c21354101212b024020052802084101460d002031200541286a2903003703002032200541086a41186a2903003703002030200541086a41106a2903003703002005200541086a41086a2903003703900e4100212b0b203541807e7121310b20054180096a41186a2232200541900e6a41186a29030037030020054180096a41106a2230200541900e6a41106a29030037030020054180096a41086a222f200541900e6a41086a290300370300200520052903900e37038009203541ff01712031722135202b0d17200541e0086a41186a2032290300370300200541e0086a41106a2030290300370300200541e0086a41086a202f29030037030020052005290380093703e0084102212b41002132410021310240201c4102460d00200541900e6a41186a2232200141186a290000370300200541900e6a41106a2230200141106a290000370300200541900e6a41086a222f200141086a290000370300200520012900003703900e2005201b3702e40d2005201c3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c212b41012131024020052802084101460d002032200541286a2903003703002030200541086a41186a290300370300202f200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b202b41807e7121320b200541c0096a41186a2230200541900e6a41186a290300370300200541c0096a41106a222f200541900e6a41106a290300370300200541c0096a41086a222e200541900e6a41086a290300370300200520052903900e3703c009202b41ff0171203272212b20310d18200541a0096a41186a2030290300370300200541a0096a41106a202f290300370300200541a0096a41086a202e290300370300200520052903c0093703a0094102213141002130410021320240201a4102460d00200541900e6a41186a2230200141186a290000370300200541900e6a41106a222f200141106a290000370300200541900e6a41086a222e200141086a290000370300200520012900003703900e200520193702e40d2005201a3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d002030200541286a290300370300202f200541086a41186a290300370300202e200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121300b200541800a6a41186a222f200541900e6a41186a290300370300200541800a6a41106a222e200541900e6a41106a290300370300200541800a6a41086a2225200541900e6a41086a290300370300200520052903900e3703800a203141ff0171203072213020320d19200541e0096a41186a202f290300370300200541e0096a41106a202e290300370300200541e0096a41086a2025290300370300200520052903800a3703e009410221314100212f41002132024020184102460d00200541900e6a41186a222f200141186a290000370300200541900e6a41106a222e200141106a290000370300200541900e6a41086a2225200141086a290000370300200520012900003703900e200520173702e40d200520183602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d00202f200541286a290300370300202e200541086a41186a2903003703002025200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212f0b200541c00a6a41186a222e200541900e6a41186a290300370300200541c00a6a41106a2225200541900e6a41106a290300370300200541c00a6a41086a2229200541900e6a41086a290300370300200520052903900e3703c00a203141ff0171202f72212f20320d1a200541a00a6a41186a202e290300370300200541a00a6a41106a2025290300370300200541a00a6a41086a2029290300370300200520052903c00a3703a00a410221314100212e41002132024020164102460d00200541900e6a41186a222e200141186a290000370300200541900e6a41106a2225200141106a290000370300200541900e6a41086a2229200141086a290000370300200520012900003703900e200520153702e40d200520163602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d00202e200541286a2903003703002025200541086a41186a2903003703002029200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212e0b200541800b6a41186a2225200541900e6a41186a290300370300200541800b6a41106a2229200541900e6a41106a290300370300200541800b6a41086a222c200541900e6a41086a290300370300200520052903900e3703800b203141ff0171202e72212e20320d1b200541e00a6a41186a2025290300370300200541e00a6a41106a2029290300370300200541e00a6a41086a202c290300370300200520052903800b3703e00a410221314100212541002132024020144102460d00200541900e6a41186a2225200141186a290000370300200541900e6a41106a2229200141106a290000370300200541900e6a41086a222c200141086a290000370300200520012900003703900e200520133702e40d200520143602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d002025200541286a2903003703002029200541086a41186a290300370300202c200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121250b200541c00b6a41186a2229200541900e6a41186a290300370300200541c00b6a41106a222c200541900e6a41106a290300370300200541c00b6a41086a2228200541900e6a41086a290300370300200520052903900e3703c00b203141ff0171202572212520320d1c200541a00b6a41186a2029290300370300200541a00b6a41106a202c290300370300200541a00b6a41086a2028290300370300200520052903c00b3703a00b410221314100213241002129024020124102460d00200541900e6a41186a2229200141186a290000370300200541900e6a41106a222c200141106a290000370300200541900e6a41086a2228200141086a290000370300200520012900003703900e200520113702e40d200520123602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d002029200541286a290300370300202c200541086a41186a2903003703002028200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121290b200541800c6a41186a222c200541900e6a41186a290300370300200541800c6a41106a2228200541900e6a41106a290300370300200541800c6a41086a2226200541900e6a41086a290300370300200520052903900e3703800c2029203141ff017172212920320d1d200541e00b6a41186a202c290300370300200541e00b6a41106a2028290300370300200541e00b6a41086a2026290300370300200520052903800c3703e00b41022131410021324100212c024020104102460d00200541900e6a41186a222c200141186a290000370300200541900e6a41106a2228200141106a290000370300200541900e6a41086a2226200141086a290000370300200520012900003703900e2005200f3702e40d200520103602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d00202c200541286a2903003703002028200541086a41186a2903003703002026200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e71212c0b200541c00c6a41186a2228200541900e6a41186a290300370300200541c00c6a41106a2226200541900e6a41106a290300370300200541c00c6a41086a2223200541900e6a41086a290300370300200520052903900e3703c00c202c203141ff017172212c20320d1e200541a00c6a41186a2028290300370300200541a00c6a41106a2026290300370300200541a00c6a41086a2023290300370300200520052903c00c3703a00c4102213141002132410021280240200e4102460d00200541900e6a41186a2228200141186a290000370300200541900e6a41106a2226200141106a290000370300200541900e6a41086a2223200141086a290000370300200520012900003703900e2005200d3702e40d2005200e3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213141012132024020052802084101460d002028200541286a2903003703002026200541086a41186a2903003703002023200541086a41106a2903003703002005200541086a41086a2903003703900e410021320b203141807e7121280b200541800d6a41186a2226200541900e6a41186a290300370300200541800d6a41106a2223200541900e6a41106a290300370300200541800d6a41086a2227200541900e6a41086a290300370300200520052903900e3703800d2028203141ff017172212820320d1f200541e00c6a41186a2026290300370300200541e00c6a41106a2023290300370300200541e00c6a41086a2027290300370300200520052903800d3703e00c4102213241002131410021260240200c4102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e2005200b3702e40d2005200c3602e00d200541086a200541900e6a200541e00d6a200410db08200528020c213241012131024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b203241807e712126203241ff017121320b200541c00d6a41186a2223200541900e6a41186a290300370300200541c00d6a41106a2227200541900e6a41106a290300370300200541c00d6a41086a222a200541900e6a41086a290300370300200520052903900e3703c00d2026203272213220310d20200541a00d6a41186a2023290300370300200541a00d6a41106a2027290300370300200541a00d6a41086a202a290300370300200520052903c00d3703a00d4102212641002131410021230240200a4102460d00200541900e6a41186a2226200141186a290000370300200541900e6a41106a2223200141106a290000370300200541900e6a41086a2227200141086a290000370300200520012900003703900e200520093702840e2005200a3602800e200541086a200541900e6a200541800e6a200410db08200528020c210141012131024020052802084101460d002026200541286a2903003703002023200541086a41186a2903003703002027200541086a41106a2903003703002005200541086a41086a2903003703900e410021310b200141807e712123200141ff017121260b200541e00d6a41186a2204200541900e6a41186a290300370300200541e00d6a41106a2227200541900e6a41106a290300370300200541e00d6a41086a222a200541900e6a41086a290300370300200520052903900e3703e00d20232026722101024020310d00200541a0026a41186a2004290300370300200541a0026a41106a2027290300370300200541a0026a41086a202a29030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c004102f2231450d2520312033360200203120052903800637020420312003360224203120052903e0053702282031410c6a20054180066a41086a290300370200203141146a20054180066a41106a2903003702002031411c6a20054180066a41186a290300370200203141306a200541e0056a41086a290300370200203141386a200541e0056a41106a290300370200203141c0006a200541e0056a41186a290300370200203120023602482031200636026c203120052903c00537024c203141d4006a200541c0056a41086a290300370200203141dc006a200541c0056a41106a290300370200203141e4006a200541c0056a41186a290300370200203120052903a005370270203141f8006a200541a0056a41086a29030037020020314180016a200541a0056a41106a29030037020020314188016a200541a0056a41186a2903003702002031203436029001203120353602b401203141ac016a20054180056a41186a290300370200203141a4016a20054180056a41106a2903003702002031419c016a20054180056a41086a290300370200203120052903800537029401203141d0016a200541e0046a41186a290300370200203141c8016a200541e0046a41106a290300370200203141c0016a200541e0046a41086a290300370200203120052903e0043702b8012031202b3602d801203141f4016a200541c0046a41186a290300370200203141ec016a200541c0046a41106a290300370200203141e4016a200541c0046a41086a290300370200203120052903c0043702dc01203120303602fc0120314198026a200541a0046a41186a29030037020020314190026a200541a0046a41106a29030037020020314188026a200541a0046a41086a290300370200203120052903a004370280022031202f3602a002203141bc026a20054180046a41186a290300370200203141b4026a20054180046a41106a290300370200203141ac026a20054180046a41086a29030037020020312005290380043702a4022031202e3602c402203141e0026a200541e0036a41186a290300370200203141d8026a200541e0036a41106a290300370200203141d0026a200541e0036a41086a290300370200203120052903e0033702c802203120253602e80220314184036a200541c0036a41186a290300370200203141fc026a200541c0036a41106a290300370200203141f4026a200541c0036a41086a290300370200203120052903c0033702ec022031202936028c03203141a8036a200541a0036a41186a290300370200203141a0036a200541a0036a41106a29030037020020314198036a200541a0036a41086a290300370200203120052903a003370290032031202c3602b003203141cc036a20054180036a41186a290300370200203141c4036a20054180036a41106a290300370200203141bc036a20054180036a41086a29030037020020312005290380033702b403203120283602d403203141f0036a200541e0026a41186a290300370200203141e8036a200541e0026a41106a290300370200203141e0036a200541e0026a41086a290300370200203120052903e0023702d803203120323602f80320314194046a200541c0026a41186a2903003702002031418c046a200541c0026a41106a29030037020020314184046a200541c0026a41086a290300370200203120052903c0023702fc032031200136029c04203141b8046a200541a0026a41186a290300370200203141b0046a200541a0026a41106a290300370200203141a8046a200541a0026a41086a290300370200203120052903a0023702a00441032130024020080d0041002133200721340c120b2007417f4c0d130240024020070d00410121330c010b2007102f2233450d260b20332008200710bf091a200721340c110b20004101360200200020013602040c230b20004101360200200020333602040c220b20004101360200200020023602040c210b20004101360200200020353602040c200b200041013602002000202b3602040c1f0b20004101360200200020303602040c1e0b200041013602002000202e3602040c1d0b20004101360200200020253602040c1c0b20004101360200200020293602040c1b0b200041013602002000202c3602040c1a0b20004101360200200020283602040c190b20004101360200200020263602040c180b20004101360200200020233602040c170b20004101360200200020273602040c160b200041013602002000202a3602040c150b200541900e6a41186a2222200141186a290000370300200541900e6a41106a2220200141106a290000370300200541900e6a41086a221e200141086a290000370300200520012900003703900e200541800e6a41086a2032360200200520073602840e200520083602800e200541086a200541900e6a200541800e6a200410db08200528020c210341012101024020052802084101460d002022200541286a2903003703002020200541086a41186a290300370300201e200541086a41106a2903003703002005200541086a41086a2903003703900e410021010b200341807e712104200341ff017121030b200541e00d6a41186a2207200541900e6a41186a290300370300200541e00d6a41106a2232200541900e6a41106a290300370300200541e00d6a41086a2222200541900e6a41086a290300370300200520052903900e3703e00d2004200372210420010d12200541a0026a41186a2007290300370300200541a0026a41106a2032290300370300200541a0026a41086a202229030037030020054180066a41086a200541a0066a41086a29030037030020054180066a41106a200541a0066a41106a29030037030020054180066a41186a200541a0066a41186a290300370300200541e0056a41086a200541e0066a41086a290300370300200541e0056a41106a200541e0066a41106a290300370300200541e0056a41186a200541e0066a41186a290300370300200520052903e00d3703a002200520052903a00637038006200520052903e0063703e005200541c0056a41186a200541a0076a41186a290300370300200541c0056a41106a200541a0076a41106a290300370300200541c0056a41086a200541a0076a41086a290300370300200541a0056a41086a200541e0076a41086a290300370300200541a0056a41106a200541e0076a41106a290300370300200541a0056a41186a200541e0076a41186a29030037030020054180056a41086a200541a0086a41086a29030037030020054180056a41106a200541a0086a41106a29030037030020054180056a41186a200541a0086a41186a290300370300200520052903a0073703c005200520052903e0073703a005200520052903a00837038005200541e0046a41186a200541e0086a41186a290300370300200541e0046a41106a200541e0086a41106a290300370300200541e0046a41086a200541e0086a41086a290300370300200541c0046a41186a200541a0096a41186a290300370300200541c0046a41106a200541a0096a41106a290300370300200541c0046a41086a200541a0096a41086a290300370300200541a0046a41186a200541e0096a41186a290300370300200541a0046a41106a200541e0096a41106a290300370300200541a0046a41086a200541e0096a41086a290300370300200520052903e0083703e004200520052903a0093703c004200520052903e0093703a00420054180046a41186a200541a00a6a41186a29030037030020054180046a41106a200541a00a6a41106a29030037030020054180046a41086a200541a00a6a41086a290300370300200520052903a00a37038004200541e0036a41186a200541e00a6a41186a290300370300200541e0036a41106a200541e00a6a41106a290300370300200541e0036a41086a200541e00a6a41086a290300370300200520052903e00a3703e003200541c0036a41186a200541a00b6a41186a290300370300200541c0036a41106a200541a00b6a41106a290300370300200541c0036a41086a200541a00b6a41086a290300370300200520052903a00b3703c003200541a0036a41186a200541e00b6a41186a290300370300200541a0036a41106a200541e00b6a41106a290300370300200541a0036a41086a200541e00b6a41086a290300370300200520052903e00b3703a00320054180036a41186a200541a00c6a41186a29030037030020054180036a41106a200541a00c6a41106a29030037030020054180036a41086a200541a00c6a41086a290300370300200520052903a00c37038003200541e0026a41186a200541e00c6a41186a290300370300200541e0026a41106a200541e00c6a41106a290300370300200541e0026a41086a200541e00c6a41086a290300370300200520052903e00c3703e002200541c0026a41186a200541a00d6a41186a290300370300200541c0026a41106a200541a00d6a41106a290300370300200541c0026a41086a200541a00d6a41086a290300370300200520052903a00d3703c00241c004102f2203450d1420032033360200200320052903800637020420032002360224200320052903e0053702282003410c6a20054180066a41086a290300370200200341146a20054180066a41106a2903003702002003411c6a20054180066a41186a290300370200200341306a200541e0056a41086a290300370200200341386a200541e0056a41106a290300370200200341c0006a200541e0056a41186a290300370200200320353602482003202b36026c200320052903c00537024c200341d4006a200541c0056a41086a290300370200200341dc006a200541c0056a41106a290300370200200341e4006a200541c0056a41186a290300370200200320052903a005370270200341f8006a200541a0056a41086a29030037020020034180016a200541a0056a41106a29030037020020034188016a200541a0056a41186a29030037020020032030360290012003202e3602b401200341ac016a20054180056a41186a290300370200200341a4016a20054180056a41106a2903003702002003419c016a20054180056a41086a290300370200200320052903800537029401200341d0016a200541e0046a41186a290300370200200341c8016a200541e0046a41106a290300370200200341c0016a200541e0046a41086a290300370200200320052903e0043702b801200320253602d801200341f4016a200541c0046a41186a290300370200200341ec016a200541c0046a41106a290300370200200341e4016a200541c0046a41086a290300370200200320052903c0043702dc01200320293602fc0120034198026a200541a0046a41186a29030037020020034190026a200541a0046a41106a29030037020020034188026a200541a0046a41086a290300370200200320052903a004370280022003202c3602a002200341bc026a20054180046a41186a290300370200200341b4026a20054180046a41106a290300370200200341ac026a20054180046a41086a29030037020020032005290380043702a402200320283602c402200341e0026a200541e0036a41186a290300370200200341d8026a200541e0036a41106a290300370200200341d0026a200541e0036a41086a290300370200200320052903e0033702c802200320263602e80220034184036a200541c0036a41186a290300370200200341fc026a200541c0036a41106a290300370200200341f4026a200541c0036a41086a290300370200200320052903c0033702ec022003202336028c03200341a8036a200541a0036a41186a290300370200200341a0036a200541a0036a41106a29030037020020034198036a200541a0036a41086a290300370200200320052903a00337029003200320273602b003200341cc036a20054180036a41186a290300370200200341c4036a20054180036a41106a290300370200200341bc036a20054180036a41086a29030037020020032005290380033702b4032003202a3602d403200341f0036a200541e0026a41186a290300370200200341e8036a200541e0026a41106a290300370200200341e0036a200541e0026a41086a290300370200200320052903e0023702d803200320343602f80320034194046a200541c0026a41186a2903003702002003418c046a200541c0026a41106a29030037020020034184046a200541c0026a41086a290300370200200320052903c0023702fc032003200436029c04200341b8046a200541a0026a41186a290300370200200341b0046a200541a0026a41106a290300370200200341a8046a200541a0026a41086a290300370200200320052903a0023702a004200541086a202f202da710d908200541900e6a41086a2201200541086a41186a290300370300200541900e6a41106a2204200541286a290300370300200541900e6a41186a222b200541306a2802003602002005200541086a41106a2903003703900e200541086a410c6a2802002135200541086a41086a2802002134200528020c2107200528020821330240024020310d00410021020c010b2006417f4c0d030240024020060d00410121020c010b2006102f2202450d160b20022031200610bf091a0b202d422088a7213120054180026a41186a202b28020036020020054180026a41106a200429030037030020054180026a41086a2001290300370300200520052903900e3703800241042130200621320b20002030360204200041186a2035360200200041146a2034360200200041106a20073602002000410c6a2033360200200041086a20313602002000411c6a200529038002370200200041c4006a2006360200200041386a2003360200200041c8006a20052903e801370200200041246a20054180026a41086a2903003702002000412c6a20054180026a41106a290300370200200041346a20054180026a41186a280200360200200041d0006a200541e8016a41086a290300370200200041d8006a200541e8016a41106a2802003602002000413c6a2032ad4220862002ad84370200200041003602000c120b20004101360200200020333602040c110b103b000b20004101360200200020033602040c0f0b20004101360200200020023602040c0e0b20004101360200200020063602040c0d0b20004101360200200020343602040c0c0b20004101360200200020353602040c0b0b200041013602002000202b3602040c0a0b20004101360200200020303602040c090b200041013602002000202f3602040c080b200041013602002000202e3602040c070b20004101360200200020253602040c060b20004101360200200020293602040c050b200041013602002000202c3602040c040b20004101360200200020283602040c030b20004101360200200020323602040c020b20004101360200200020343602040c010b20004101360200200020043602040b200541b00e6a24000f0b1039000bae5303117f047e037f23002206210720064180056b41607122062400200641106a41086a200341086a280200360200200620032902003703100240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020022802000e050104000203010b20064180016a2002412c6a290200370300200641f8006a200241246a290200370300200641d8006a41186a2002411c6a290200370300200641d8006a41106a2208200241146a290200370300200641d8006a41086a2002410c6a29020037030020062002290204370358200641a6016a200241376a2d00003a000020064188016a41086a200241c4006a29020037030020064188016a41106a200241cc006a29020037030020064188016a41186a200241d4006a280200360200200620022f00353b01a40120062002413c6a29020037038801200241346a2d00002109200241386a280200210a02400240200628025c220b4125490d002008280200210b200641d8006a410c6a280200210c0c010b200641e1006a210c0b20062006280258220d3602b0012006200c3602a8012006280214210e2006280218210f2006200b3602ac010240200b4101742210200d6b2211200e410174200f6b2202200220114b1b2212450d00410021022006280210211302400340200f20026a22084101762214200e4f0d0c200d20026a22154101762216200b4f0d0d201320146a2d00002214410f71201441f0017141047620084101711b200c20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b20020d060b2010200d470d0441949dc800412a41c09dc800103c000b4101211520062802142208200628021822144101762202490d0a20064180046a200628021020026a200820026b10d908200641386a41086a20064194046a290200370300200641c8006a2006419c046a290200370300200641d0006a200641a4046a29020037030020062006418c046a2902003703382014410171210220064180046a41086a2802002108200628028404211620062802800421032004290204211720042802002111410021140c280b200241106a280200210d2002410c6a280200210c200241086a280200210b2002280204210202402006280214221441017420062802182208470d0020042802082108410021140240200b450d00200d2008470d00200b2004280200200d10c209452114200d21080b2004280204211620042802002103024020052802002215450d00200541046a280200450d00201510310b2005200c3602042005200b360200200541086a200d360200200641386a41086a20064180046a41086a290200370300200641386a41106a20064180046a41106a290200370300200641386a41186a20064180046a41186a290200370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a28020036020020062006290280043703382006200629029803370320410321150c280b2008410176221520144f0d0a200628021020156a2d000021142003200328020841016a36020820022014410f71201441047620084101711b221541246c6a22082902102118200820062903900437021020082902082119200820062903880437020820082902002117200641023a0080042008200629038004370200200841186a2214290200211a201420062903980437020002400240024002402017a741ff01714102470d0020032802042216200328020822054101762214490d0f20064198036a200328020020146a201620146b10d9082006418c046a20062902980337020020064194046a20064198036a41086a2902003702002006419c046a200641a8036a29020037020020064180046a41246a200641b0036a290200370200200641ac046a200641b8036a290200370200200641b4046a200641c0036a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a200541017136020041002114200641003a0080042002201541246c6a41046a200141306a20064180046a10d408360200200841003a00000c010b200641a0046a200828022036020020064180046a41186a201a37030020062019370388042006201737038004200620183703900420064198036a41086a200441086a2802003602002006200429020037039803200641c0026a200120064180046a200320064198036a200510d60820062802c402211620062802c0024101460d01200641c0026a41086a2d0000210341002114200841003a00002002201541246c6a41046a2016360200200341ff0171450d020b41032115200b2103200c2116200d21080c290b20004101360200200020163602040240200b450d00200c450d00200b10310b20021031200724000f0b2000428080808010370200200041186a200d360200200041146a200c360200200041106a200b3602002000410c6a2002360200200041086a4103360200200724000f0b200641c0036a2002412c6a290200370300200641b8036a200241246a290200370300200641b0036a2002411c6a290200370300200641a8036a2208200241146a29020037030020064198036a41086a2002410c6a2902003703002006200229020437039803200241346a2802002111200241386a28020021102002413c6a280200211b200241c0006a280200211c02400240200628029c03220b4125490d002008280200210b20064198036a410c6a280200210c0c010b200641a1036a210c0b2006200628029803220d360290012006200c360288012006280214210e2006280218210f2006200b36028c01410021020240200b410174200d6b2209200e410174200f6b220a200a20094b1b2212450d00200628021021130340200f20026a22084101762214200e4f0d0d200d20026a22154101762216200b4f0d0e201320146a2d00002214410f71201441f0017141047620084101711b200c20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b0240024002400240024020022009470d002009200a460d010b200220094f0d01200b200d200241016a22126a22144101762208490d12200641d8006a200c20086a200b20086b10d908200641e8016a41086a2216200641d8006a41086a290300370300200641e8016a41106a2203200641d8006a41106a290300370300200641e8016a41186a2205200641d8006a41186a290300370300200641e8016a41206a220e200641d8006a41206a290300370300200641e8016a41286a220f200641d8006a41286a280200360200200620062903583703e801200d20026a220d4101762208200b4f0d13200c20086a2d0000210810dc08211520064180046a41086a20144101713602002006418c046a220b20062903e80137020020064194046a20162903003702002006419c046a200329030037020020064180046a41246a2005290300370200200641ac046a200e290300370200200641b4046a200f280200360200200641c4046a201c360200200641c0046a201b360200200641bc046a2010360200200641b8046a20113602002006410436028404200641c8046a20062902b801370300200641d0046a200641b8016a41086a290200370300200641d8046a200641b8016a41106a28020036020041002114200641003a00800420152008410f712008410476200d4101711b41246c6a2208200141306a220320064180046a10d408360204200841003a000020062802142208410174200628021822166b2002470d0220064180046a20064188016a200210dd08200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200620064180046a41106a290300370338200b280200210820064180046a41086a28020021162004280208210b2004290200211720062802840421032006280280042102201521110c280b4100211402402010450d00201c2004280208470d0020102004280200201c10c2094521140b200b200d4101762202490d1020064180046a200c20026a200b20026b10d908200641c0026a41086a221520064194046a290200370300200641c0026a41106a220c2006419c046a290200370300200641c0026a41186a220e200641a4046a29020037030020062006418c046a2902003703c002200d410171210220064180046a41086a220d2802002108200628028404211620062802800421032004280208210b20042902002117024020052802002204450d00200541046a280200450d00200410310b2005201b36020420052010360200200541086a201c360200200641386a41086a2015290300370300200641386a41106a200c290300370300200641386a41186a200e290300370300200641206a41086a200d290200370300200641206a41106a20064180046a41106a280200360200200620062903c00237033820062006290280043703200c270b200f20026a22144101762208200e4f0d12200628021020086a2d000021082003200220032802086a41016a36020820112008410f71200841047620144101711b221441246c6a22022902102118200220062903900437021020022902082119200220062903880437020820022902002117200641023a0080042002200629038004370200200241186a2208290200211a20082006290398043702002017a741ff01714102470d0120032802042215200328020822164101762208490d15200641c0026a200328020020086a201520086b10d9082006418c046a20062902c00237020020064194046a200641c0026a41086a2902003702002006419c046a200641d0026a29020037020020064180046a41246a200641d8026a290200370200200641ac046a200641e0026a290200370200200641b4046a200641e8026a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a2016410171360200200641003a0080042011201441246c6a41046a200141306a20064180046a10d408360200200241003a00000c250b201620026a220b410176220d20084f0d122008201620126a22054101762214490d132006280210220c200d6a2d00002116200641c0026a200c20146a200820146b10d9082006418c046a220820062902c00237020020064194046a200641c0026a41086a2902003702002006419c046a200641c0026a41106a29020037020020064180046a41246a200641c0026a41186a290200370200200641ac046a200641c0026a41206a290200370200200641b4046a200641c0026a41286a280200360200200641b8046a2004290200370300200641c0046a200441086a280200360200200641013602840420064180046a41086a2204200541017136020041002114200641003a00800420152016410f71201641f00171410476200b4101711b41246c6a2216200320064180046a10d408360204201641003a000020064180046a20064188016a200210dd08200641386a41086a20064180046a41186a290300370300200641386a41106a20064180046a41206a290300370300200641386a41186a20064180046a41286a290300370300200620064180046a41106a29030037033820082802002108200428020021162006280284042103200628028004210242002117201521110c250b200641a0046a200228022036020020064180046a41186a201a370300200620193703880420062017370380042006201837039004200641c0026a41086a200441086a280200360200200620042902003703c002200641e8016a200120064180046a2003200641c0026a200510d60820062802ec012108024020062802e8014101460d00200641e8016a41086a2d00002115200241003a00002011201441246c6a41046a2008360200201541ff01710d24200b200d4101762202490d1520064180046a200c20026a200b20026b10d9082000410c6a200d41017136020020004281808080c000370204200041c8006a201c360200200041c4006a201b360200200041c0006a20103602002000413c6a2011360200200041106a200629028004370200200041186a20064188046a290200370200200041206a20064180046a41106a290200370200200041286a20064180046a41186a290200370200200041306a20064180046a41206a290200370200200041386a20064180046a41286a280200360200200041003602000c220b200041013602002000200836020402402010450d00201b450d00201010310b201110310c210b200641e8026a2002412c6a290200370300200641e0026a200241246a290200370300200641d8026a2002411c6a290200370300200641d0026a2208200241146a290200370300200641c0026a41086a2002410c6a290200370300200620022902043703c0022002413c6a2802002109200241386a280200211c200241346a28020021100240024020062802c402220b4125490d002008280200210b200641c0026a410c6a280200210d0c010b200641c9026a210d0b410021020240200b41017420062802c002220c6b22112006280214220e4101742006280218220f6b220a200a20114b1b2212450d00200628021021130340200f20026a22084101762214200e4f0d16200c20026a22154101762216200b4f0d17201320146a2d00002214410f71201441f0017141047620084101711b200d20166a2d00002208410f71200841047620154101711b470d012012200241016a2202470d000b201221020b024002400240024020022011470d002011200a460d010b200220114f0d0110dc082108200c20026a22154101762216200b4f0d19200b201541016a220c4101762214490d1a200d20166a2d0000211620064198036a200d20146a200b20146b10d9082006418c046a220b20062902980337020020064180046a41146a220d20064198036a41086a220e29020037020020064180046a411c6a220f20064198036a41106a221229020037020020064180046a41246a221320064198036a41186a29020037020020064180046a412c6a221120064198036a41206a29020037020020064180046a41346a220a20064198036a41286a280200360200200641c0046a221b2009360200200641bc046a2209201c36020020064180046a41386a2010360200200641013602840420064180046a41086a2210200c41017136020041002114200641003a00800420082016410f71201641f0017141047620154101711b41246c6a2215200141306a20064180046a10d408360204201541003a000020064180046a200641106a200210dd08200641a8016a41086a2202200b280200360200200641d8006a41086a221520064180046a41186a220c290300370300200641d8006a41106a221620064180046a41206a290300370300200641d8006a41186a221c20064180046a41286a29030037030020062006290284043703a801200620064180046a41106a221d290300370358200620062802800436029c032006410436029803200e20062903a8013703002012200228020036020020064198036a41386a410036020020064198036a41346a200836020020064198036a41146a200629035837020020064198036a411c6a201529030037020020064198036a41246a201629030037020020064198036a412c6a201c290300370200200641dc036a20062902880137020020064198036a41cc006a20064188016a41086a29020037020020064198036a41d4006a20064188016a41106a280200360200200641f0036a41086a200441086a280200360200200620042902003703f00320064180046a200120064198036a2003200641f0036a200510d808200641e8016a41086a22052013290200370300200641e8016a41106a220e2011290200370300200641e8016a41186a2212200a2902003703002006200f2902003703e80120102802002115200b2802002102201d2802002103200d2802002116200c280200210820092802002111201b2903002117200641c8046a280200210b200628028404210d2006280280042104200641b8016a41106a220c200641dc046a280200360200200641b8016a41086a220f20064180046a41d4006a290200370300200620064180046a41cc006a2902003703b80120044101460d07200641386a41186a2012290300370300200641386a41106a200e290300370300200641386a41086a2005290300370300200641206a41086a200f290300370300200641206a41106a200c280200360200200620062903e801370338200620062903b8013703200c020b41002102024020092004280208470d0020102004280200200910c2094521020b024020052802002208450d00200541046a280200450d00200810310b2005201c36020420052010360200200541086a2009360200024020020d00200620062802c0023602800420064180046a41047221150240024020062802c40222084125490d00200641d0026a2802002108200641cc026a28020021020c010b200641c9026a21020b4100211420064180046a41086a221641003a0000200641003602840420152002200220086a10a106200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a280200360200200620064180046a41106a29030037033820062006290298033703202006418c046a280200210820162802002116200429020421172004280200211120062802840421032006280280042102410121150c020b200620062802c0023602800420064180046a41047221140240024020062802c40222084125490d00200641d0026a2802002108200641cc026a28020021020c010b200641c9026a21020b20064180046a41086a221541003a0000200641003602840420142002200220086a10a106200641386a41086a20064180046a41186a290300370300200641386a41106a200641a0046a290300370300200641386a41186a200641a8046a290300370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a280200360200200620064180046a41106a29030037033820062006290298033703202006418c046a28020021082015280200211620042902042117200428020021112006280284042103200628028004210241012115410121140c010b200b200c4101762202490d19200641e8016a200d20026a200b20026b10d90810dc08210220064198036a41086a20062902e80137030020064198036a41106a200641e8016a41086a29020037030020064198036a41186a200641e8016a41106a29020037030020064198036a41206a200641e8016a41186a29020037030020064198036a41286a200641e8016a41206a290200370300200641c8036a200641e8016a41286a28020036020020064198036a41c0006a200936020020064198036a413c6a201c360200200641d0036a201036020020064198036a41346a20023602002006200c41017136029c03200641043602980320064188016a41086a200441086a280200360200200620042902003703880120064180046a200120064198036a200320064188016a200510d808200641d8006a41086a2204200641a4046a290200370300200641d8006a41106a220d200641ac046a290200370300200641d8006a41186a220520064180046a41346a29020037030020062006419c046a29020037035820064180046a41086a28020021152006418c046a280200210220064180046a41106a280200210320064194046a280200211620064180046a41186a280200210820064180046a413c6a280200211120064180046a41c0006a2903002117200641c8046a280200210b200628028404210c2006280280042114200641b8016a41106a220e200641dc046a280200360200200641b8016a41086a220f200641d4046a2902003703002006200641cc046a2902003703b80120144101460d1a200641386a41186a2005290300370300200641386a41106a200d290300370300200641386a41086a2004290300370300200641206a41086a200f290300370300200641206a41106a200e28020036020020062006290358370338200620062903b801370320410021140b20062802c4024125490d26200641cc026a28020010310c260b200d4101762202200b4f0d19200c20026a2d0000210210dc0821080240024020114101470d0020064198036a41026a200641a4016a41026a2d00003a000020064180046a41086a20064188016a41086a29030037030020064180046a41106a20064188016a41106a29030037030020064180046a41186a20064188016a41186a280200360200200620062f01a4013b0198032006200629038801370380040c010b200b200d41016a22154101762214490d1b20064198036a200c20146a200b20146b10d90820064180046a41086a20154101713602002006418c046a20062902980337020020064194046a20064198036a41086a2902003702002006419c046a20064198036a41106a290200370200200641a4046a20064198036a41186a290200370200200641ac046a200641b8036a290200370200200641b4046a200641c0036a280200360200200641b8046a20093a0000200641b9046a20062f01a4013b00002006410236028404200641bb046a200641a4016a41026a2d00003a0000200641bc046a200a360200200641c0046a200629038801370300200641c8046a20064188016a41086a290300370300200641d0046a20064188016a41106a290300370300200641d8046a20064188016a41186a28020036020041002109200641003a008004200141306a20064180046a10d408210a0b20082002410f712002410476200d4101711b41246c6a220220093a0000200220062f0198033b00012002200a3602042002200629038004370208200241036a2006419a036a2d00003a0000200241106a20064180046a41086a2215290300370200200241186a20064180046a41106a2216290300370200200241206a20064180046a41186a220b2802003602004100211420064198036a41086a41003602002006200836029c032006410336029803200641b8016a41086a200441086a280200360200200620042902003703b80120064180046a200120064198036a2003200641b8016a200510d808200641c0026a41086a220d20064180046a41246a290200370300200641c0026a41106a2205200641ac046a290200370300200641c0026a41186a220c200641b4046a29020037030020062006419c046a2902003703c002201528020021152006418c046a28020021022016280200210320064194046a2802002116200b2802002108200641bc046a2802002111200641c0046a2903002117200641c8046a280200210b200628028404210e2006280280042104200641e8016a41106a220f200641dc046a280200360200200641e8016a41086a2212200641d4046a2902003703002006200641cc046a2902003703e80120044101460d01200641386a41186a200c290300370300200641386a41106a2005290300370300200641386a41086a200d290300370300200641206a41086a2012290300370300200641206a41106a200f280200360200200620062903c002370338200620062903e8013703200c1e0b0240024020022011460d00200b200d20026a22144101762208490d1c200641b8016a200c20086a200b20086b10d9082003200328020820026a36020820064198036a41086a221620062902b80137030020064198036a41106a220b200641b8016a41086a29020037030020064198036a41186a220d200641b8016a41106a29020037030020064198036a41206a220c200641b8016a41186a29020037030020064198036a41286a220e200641b8016a41206a29020037030020064198036a41306a200641b8016a41286a280200360200200641cc036a20093a00002006201441017136029c03410221152006410236029803200641cf036a200641a4016a41026a2d00003a0000200620062f01a4013b00cd03200641d0036a200a360200200641ec036a20064188016a41186a280200360200200641e4036a20064188016a41106a290300370200200641dc036a20064188016a41086a290300370200200641d4036a200629038801370200200641f0036a41086a200441086a280200360200200620042902003703f00320064180046a200120064198036a2003200641f0036a200510d80820062802840421142006280280042108200641c0026a20064180046a41086a41d80010bf091a20084101460d01200641e8016a200641c0026a41d80010bf091a20064198036a200641a8016a200210dd0820064180046a410472200641e8016a41d80010bf091a41002111200641003a008004200141306a20064180046a10d4082102200641386a41086a200d290300370300200641386a41106a200c290300370300200641386a41186a200e2903003703002006200b2903003703382002ad211720162802002116200641a4036a28020021082006280298032102200628029c032103410021140c1f0b2003200328020820116a36020820064180046a41086a20062903880137030020064180046a41106a20064188016a41086a29030037030020064180046a41186a20064188016a41106a290300370300200641a0046a20064188016a41186a280200360200200620093a008004200620062f01a4013b0081042006200641a6016a2d00003a0083042006200a3602840420064198036a41086a200441086a2802003602002006200429020037039803200641c0026a200120064180046a200320064198036a200510d60820062802c4022115024020062802c0024101460d00200b200d4101762202490d1d200641c0026a41086a2d0000210820064180046a200c20026a200b20026b10d908200641386a41086a20064194046a290200370300200641386a41106a2006419c046a290200370300200641d0006a200641a4046a290200370300200641206a41086a20064198036a41086a290200370300200641206a41106a20064198036a41106a28020036020020062006418c046a2902003703382006200629029803370320200d4101712102200841ff017145211420064180046a41086a2802002108200628028404211620062802800421032015ad211741022115410021110c1f0b20004101360200200020153602040c020b20004101360200200020143602040c010b200041013602002000200e3602040b200628025c4125490d1d200641e4006a2802001031200724000f0b200041013602002000200d3602040c190b2014200e41c086ca00103f000b2016200b41c086ca00103f000b2002200841d086ca001061000b2015201441c086ca00103f000b2014201641d086ca001061000b2014200e41c086ca00103f000b2016200b41c086ca00103f000b2002200b41d086ca001061000b2008200b41d086ca001061000b2008200b41c086ca00103f000b2008200e41c086ca00103f000b200d200841c086ca00103f000b2014200841d086ca001061000b2008201541d086ca001061000b2002200b41d086ca001061000b2014200e41c086ca00103f000b2016200b41c086ca00103f000b2016200b41c086ca00103f000b2014200b41d086ca001061000b2002200b41d086ca001061000b200041013602002000200c3602040c040b2002200b41c086ca00103f000b2014200b41d086ca001061000b2008200b41d086ca001061000b2002200b41d086ca001061000b20062802c4024125490d02200641cc026a28020010310c020b200628025c4125490d06200641e4006a28020010310c060b200628029c034125490d00200641a4036a2802001031200724000f0b200724000f0b200b200d4101762202490d0120064180046a200c20026a200b20026b10d908200641386a41086a20064194046a290200370300200641c8006a2006419c046a290200370300200641d0006a200641a4046a29020037030020062006418c046a290200370338200d4101712102201bad4220862010ad84211720064180046a41086a28020021082006280284042116200628028004210341002114201c210b0b0240200628029c034125490d00200641a4036a28020010310b410421150c020b2002200b41d086ca001061000b0b20002014360204200041186a2008360200200041146a2016360200200041106a20033602002000410c6a2002360200200041086a20153602002000411c6a2006290338370200200041c8006a200b360200200041c0006a20173702002000413c6a2011360200200041cc006a2006290320370200200041246a200641386a41086a2903003702002000412c6a200641386a41106a290300370200200041346a200641386a41186a290300370200200041d4006a200641206a41086a290300370200200041dc006a200641206a41106a28020036020020004100360200200724000bd50301087f230041106b22032400200041003a00042000410036020020032000200210a2060240024020032802004101470d00200341086a2802000d0141b087ca00411141c487ca00103c000b02400240200028020022044125490d002000410c6a22052802002106200041086a28020021070c010b200041056a21072004210620002105412421040b02400240024020062004490d00200121080c010b2002210920012108024003402009450d01200720066a20082d00003a00002009417f6a2109200841016a21082004200641016a2206470d000b200421060c010b200520063602000c010b20052006360200200120026a22012008460d00200841016a21062000410c6a2105200041056a210a20082d00002102034002400240200028020022044125490d00200028020c210820002802082107200521090c010b2004210820002109200a2107412421040b024020082004470d0020032000410110a206024020032802004101470d00200341086a2802000d0441b087ca00411141c487ca00103c000b200028020c210820002802082107200521090b200720086a20023a00002009200928020041016a36020020012006460d0120062d00002102200641016a21060c000b0b200341106a24000f0b1039000b880903017f027e177f230041d0016b22022400200241186a200141d00010bf091a20024188016a20002903182000290308853703002002200029031022033703782002200029030022043703702002200320048537038001200241186a200241f0006a108006200241086a2002290378420020022903702203420010be094104210520002802202206200241106a290300200229030885200389a7220771220841046a200671210902400240024002400240200041246a280200220a20086a280000220b2007411976220c41818284086c220d732201417f73200141fffdfb776a7141808182847871220e0d004104210f200b21100340200921012010201041017471418081828478710d0320062001200f6a41046a712109200f41046a2205210f200d200a20016a280000221073220e417f73200e41fffdfb776a7141808182847871220e450d000c020b0b200b211020082101200a450d010b200e417f6a200e71210f2001200e684103766a210e200241186a41256a2111200241c4006a2802002112200241c0006a280200211320022802382114200241e4006a2d000041ff01712115200241186a41cd006a2d000041ff0171211603400240200241186a200a41002006200e716b41d0006c6a220e41b07f6a2217412010c2090d00200e41506a2118201321192012211a0240201441254f0d00201121192014211a0b024002402018280200221b4125490d00200e415c6a280200211b200e41586a28020021180c010b201841056a21180b201a201b470d0020192018201a10c2090d002015200e417c6a2d0000470d002015450d032016201741cd006a2d000041ff0171460d030b02400240200f450d00200f210e0c010b2005210f0340200921012010201041017471418081828478710d0320062001200f6a41046a712109200f41046a2205210f200d200a20016a280000221073220e417f73200e41fffdfb776a7141808182847871220e450d000b0b200e417f6a200e71210f2001200e684103766a210e0c000b0b200041206a210f2002200036026c200241f0006a200241186a41d00010bf091a4104210102400340200b4180818284787122100d01200820016a2110200141046a2101200a201020067122086a280000210b0c000b0b0240200a20106841037620086a20067122016a2c000022104100480d00200a200a280200418081828478716841037622016a2d000021100b200041286a280200210802402010410171220b450d0020080d00200241c0016a200f200241ec006a10de08200028022022062007712110200041246a280200210a4104210103402010220820016a2006712110200141046a2101200a20086a28000041808182847871220f450d000b0240200a200f6841037620086a20067122016a2c00004100480d00200a280200418081828478716841037621010b200028022821080b20002008200b6b360228200a20016a200c3a000020062001417c6a71200a6a41046a200c3a0000200a410020016b41d0006c6a41b07f6a200241f0006a41d00010bf091a2000412c6a2201200128020041016a3602000c010b20144125490d00201310310b200241d0016a24000bc40801047f230041f0026b22042400024002400240024002400240024020022802004101470d00200241086a280200210520022802042102200441d0016a41186a200141186a290000370300200441d0016a41106a200141106a290000370300200441d0016a41086a200141086a290000370300200420012900003703d001200441f0016a200441d0016a20022005200310d70820042802f401210120042802f0012102200441f8006a200441f0016a41086a220541d40010bf091a20024101460d05200441206a200441f8006a41d40010bf091a200420013602f4012005200441206a41d40010bf091a41002102200441003a00f0012003200441f0016a10d40821010c010b2002280204210302400240200241086a28020022024120460d00200441f0016a41186a200141186a290000370300200441f0016a41106a200141106a290000370300200441f0016a41086a200141086a290000370300200420012900003703f0012002417f4c0d040240024020020d00410121010c010b2002102f2201450d060b20012003200210bf092103200441f8006a41186a2205200441f0016a41186a290300370300200441f8006a41106a2206200441f0016a41106a290300370300200441f8006a41086a2207200441f0016a41086a290300370300200420042903f0013703784130102f2201450d05200141043a000020012004290378370001200120042f00f0013b00212001200236002c2001200236002820012003360024200141096a2007290300370000200141116a2006290300370000200141196a2005290300370000200141236a200441f2016a2d00003a0000410121020c010b200441f8006a41026a200341026a2d00003a0000200441f0016a41086a2003410f6a29000037030020044180026a200341176a29000037030020044188026a2003411f6a2d00003a0000200420032f00003b0178200420032900073703f00120032800032101410021020b200441d0016a41026a2203200441f8006a41026a2d00003a0000200441206a41086a2205200441f0016a41086a290300370300200441206a41106a2206200441f0016a41106a290300370300200441206a41186a2207200441f0016a41186a2d00003a0000200420042f01783b01d001200420042903f00137032020020d012004411c6a41026a20032d00003a0000200441086a2005290300370300200441106a2006290300370300200441186a20072d00003a0000200420042f01d0013b011c20042004290320370300410121020b200020023a000420004100360200200041056a20042f011c3b0000200041086a20013602002000410c6a2004290300370200200041076a2004411e6a2d00003a0000200041146a200441086a2903003702002000411c6a200441106a290300370200200041246a200441186a2802003602000c040b20004101360200200020013602040c030b103b000b1039000b20004101360200200020013602040b200441f0026a24000b800d01027f230041b0046b22002400024041c004102f22010d001039000b200141023a00002001200029008d04370001200141023a0024200120002900ea03370025200141096a2000418d046a41086a290000370000200141116a2000418d046a41106a290000370000200141196a2000418d046a41186a290000370000200141206a2000418d046a411f6a2800003600002001412d6a200041ea036a41086a290000370000200141356a200041ea036a41106a2900003700002001413d6a200041ea036a41186a290000370000200141c4006a200041ea036a411f6a280000360000200141023a0048200141023a006c200120002900c703370049200141d1006a200041c7036a41086a290000370000200141d9006a200041c7036a41106a290000370000200141e1006a200041c7036a41186a290000370000200141e8006a200041c7036a411f6a280000360000200120002900a40337006d200141f5006a200041a4036a41086a290000370000200141fd006a200041a4036a41106a29000037000020014185016a200041a4036a41186a2900003700002001418c016a200041a4036a411f6a280000360000200141023a009001200141023a00b40120012000290081033700910120014199016a20004181036a41086a290000370000200141a1016a20004181036a41106a290000370000200141a9016a20004181036a41186a290000370000200141b0016a20004181036a411f6a280000360000200120002900de023700b501200141bd016a200041de026a41086a290000370000200141c5016a200041de026a41106a290000370000200141cd016a200041de026a41186a290000370000200141d4016a200041de026a411f6a280000360000200141023a00d801200141f8016a200041bb026a411f6a280000360000200141f1016a200041bb026a41186a290000370000200141e9016a200041bb026a41106a290000370000200141e1016a200041bb026a41086a290000370000200120002900bb023700d901200141023a00fc012001419c026a20004198026a411f6a28000036000020014195026a20004198026a41186a2900003700002001418d026a20004198026a41106a29000037000020014185026a20004198026a41086a29000037000020012000290098023700fd01200141023a00a002200141c0026a200041f5016a411f6a280000360000200141b9026a200041f5016a41186a290000370000200141b1026a200041f5016a41106a290000370000200141a9026a200041f5016a41086a290000370000200120002900f5013700a102200141023a00c402200141e4026a200041d2016a411f6a280000360000200141dd026a200041d2016a41186a290000370000200141d5026a200041d2016a41106a290000370000200141cd026a200041d2016a41086a290000370000200120002900d2013700c502200141023a00e80220014188036a200041af016a411f6a28000036000020014181036a200041af016a41186a290000370000200141f9026a200041af016a41106a290000370000200141f1026a200041af016a41086a290000370000200120002900af013700e902200141023a008c03200141ac036a2000418c016a411f6a280000360000200141a5036a2000418c016a41186a2900003700002001419d036a2000418c016a41106a29000037000020014195036a2000418c016a41086a2900003700002001200029008c0137008d03200141023a00b003200141d0036a200041e9006a411f6a280000360000200141c9036a200041e9006a41186a290000370000200141c1036a200041e9006a41106a290000370000200141b9036a200041e9006a41086a290000370000200120002900693700b103200141023a00d403200141f4036a200041c6006a411f6a280000360000200141ed036a200041c6006a41186a290000370000200141e5036a200041c6006a41106a290000370000200141dd036a200041c6006a41086a290000370000200120002900463700d503200141023a00f80320014198046a200041236a411f6a28000036000020014191046a200041236a41186a29000037000020014189046a200041236a41106a29000037000020014181046a200041236a41086a290000370000200120002900233700f903200141023a009c04200141bc046a2000411f6a280000360000200141b5046a200041186a290000370000200141ad046a200041106a290000370000200141a5046a200041086a2900003700002001200029000037009d04200041b0046a240020010bf310010a7f230041e0006b220324000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200141046a2802002204410174200141086a28020022056b20024b0d00200420054101762202490d01200341206a200128020020026a200420026b10d90820002005410171360200200020032903203702042000410c6a200341286a290300370200200041146a200341306a2903003702002000411c6a200341386a290300370200200041246a200341c0006a2903003702002000412c6a200341c8006a2802003602000c150b20054101762106200520026a22074101762108024020074101710d0020082006490d0220042008490d03200128020020066a210202400240200820066b220141244b0d00200341206a2002200110bf091a200341d0006a41026a200341206a41026a2d00003a0000200341086a200341336a290000370300200341106a2003413b6a290000370300200341186a200341c3006a2d00003a0000200320032f00203b01502003200329002b3703002003280023210420032800272102410021060c010b2001417f4c0d052001102f2204450d0620042002200110bf091a41012106200121020b2000200136020420002005410171360200200041086a20063a0000200041096a20032f01503b0000200041106a20023602002000410c6a2004360200200041146a20032903003702002000410b6a200341d2006a2d00003a00002000411c6a200341086a290300370200200041246a200341106a2903003702002000412c6a200341186a2802003602000c150b200841016a22072006490d05200820044f0d06200128020020066a210802400240200720066b220441244b0d00200341206a2008200410bf091a2003411c6a41026a200341206a41026a2d00003a0000200341086a200341336a290000370300200341106a2003413b6a290000370300200341186a200341c3006a2d00003a0000200320032f00203b011c2003200329002b3703002003280023210120032800272106410021080c010b2004417f4c0d042004102f2201450d0520012008200410bf091a41012108200421060b200341206a4104722109200341296a220720032f011c3b0000200341206a41106a220a20063602002003412c6a2001360200200341346a20032903003702002003412b6a2003411e6a2d00003a00002003413c6a200341086a290300370200200341c4006a200341106a290300370200200341cc006a200341186a280200360200200320083a00282003200436022420032002410171220236022002402005410171220520024d0d000240024020044125490d002006417f6a220b0d0120012d000021040c150b2004417f6a220b450d090b200b417f6a210c410021010340200141016a21050240024020044125490d002003280230220420014d0d102003280230220420054d0d11200328022c20016a2d00004104742102200328022c20016a41016a2d0000410476210620032802302104200328022c21080c010b200420014d0d0f200420054d0d10200720016a22062d00004104742102200641016a2d00004104762106200721080b200420014d0d0a200820016a20062002723a00000240200c2001460d0020032802242104200521010c010b0b02400240200328022422014125490d0020032802302201200b4d0d11200328022c200b6a2d0000210420032802302101200328022c21070c010b2001200b4d0d102007200b6a2d000021040b2001200b4d0d0a2007200b6a21010c130b200520024f0d130240024020044125490d00200a21050c010b200421062009210520072101412421040b024020062004470d00200341d0006a2009410110a206024020032802504101470d00200341d8006a2802000d0641b087ca00411141c487ca00103c000b20032802302106200328022c2101200a21050b200120066a41003a00002005200528020041016a36020002400240200328022422044125490d00200328023021010c010b200421010b024020014102490d002001417e6a21010340200141016a21050240024020044125490d002003280230220420014d0d132003280230220420054d0d14200328022c20016a2d00004104742102200328022c20016a41016a2d0000410476210620032802302104200328022c21080c010b200420014d0d12200420054d0d13200720016a22062d00004104742102200641016a2d00004104762106200721080b200420054d0d0c200820016a41016a20062002723a00002001417f6a210120032802242104200541014b0d000b0b0240024020044125490d002003280230450d13200328022c2d0000210120032802302104200328022c21070c010b2004450d1220032d002921010b2004450d0b2007200141f001714104763a00000c130b2002200441d086ca001061000b2006200841e086ca001062000b2008200441e086ca001058000b103b000b1039000b2006200741f086ca001062000b2007200441f086ca001058000b20032d00292104200721010c0a0b2001200441e08bca00103f000b200b200141808cca00103f000b200141016a200441ac89ca00103f000b4100410041a08cca00103f000b2001200441c08bca00103f000b200141016a200441d08bca00103f000b200b200141f08bca00103f000b20012004418c89ca00103f000b200141016a2004419c89ca00103f000b4100410041908cca00103f000b200120044104743a00000b02400240200328022422014125490d00200328023021010c010b2009210a0b02402001450d00200a2001417f6a3602000b20002003290320370200200041286a200341206a41286a290300370200200041206a200341206a41206a290300370200200041186a200341206a41186a290300370200200041106a200341206a41106a290300370200200041086a200341206a41086a2903003702000b200341e0006a24000bcc0f06087f017e077f017e017f027e230041e0006b220324000240024002400240024002400240200128020c220441016a22052004490d000240200520012802002206200641016a220741037641076c20064108491b22064101764b0d004100210641002105024003400240024020064101710d00200520074f0d0320052106200541016a21050c010b200541036a220620054922080d0220062007492209450d022007200541046a20081b200720091b21050b200141046a28020020066a220620062802002206410776417f73418182840871200641fffefdfb07726a360200410121060c000b0b200141046a2802002105200128020041016a22064104490d05200520066a20052800003600000c060b024002402005200641016a2206200520064b1b22050d0041a0a4c0002108410021094100210a0c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d03417f2005410374220541076e417f6a677641016a41012005410d4b1b21050b2005ad42d0007e220b422088a70d03200ba72206200541046a22096a22082006490d032008102f2208450d04200820066a220841ff01200910c1091a2005417f6a2209200541037641076c20094108491b210a0b200141046a280200220c41046a210d200c20076a210e200c280200417f734180818284787121072002280200210f200341d8006a2110200341086a211103400240024020070d0002400340200d200e4f0d01200c41c07d6a210c200d2802002105200d41046a2206210d2005418081828478712205418081828478460d000b2005418081828478732207417f6a20077121122006210d0c020b2001200436020c200041003602002001200a20046b3602082001280200210520012009360200200141046a22062802002107200620083602002005450d092007200541016aad42d0007ea76b10310c090b2007417f6a20077121120b2010200f290318200f290308853703002003200f290310220b3703482003200f29030022133703402003200b20138537035041002105200c41002007684103766b41d0006c6a41b07f6a2214200341c0006a1080062003200329034842002003290340220b420010be092011290300200329030085200b89220ba721060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b200820056a200ba741197622063a00002005417c6a20097120086a41046a20063a00002008410020056b41d0006c6a41b07f6a201441d00010bf091a201221070c000b0b41d0b1c800411c41ecb1c800103c000b41d0b1c800411c41ecb1c800103c000b41d0b1c800411c41ecb1c800103c000b1039000b200541046a2005200610c0091a0b4100210502402001280200220a417f460d002002280200210c200141046a210e200341c0006a41186a2110200341106a41086a21114100210603400240200e2802002205200622146a2d0000418001470d00410020146b210403402010200c290318200c290308853703002003200c290310220b3703482003200c29030022133703402003200b2013853703502005200441d0006c6a220f41b07f6a220d200341c0006a108006200341106a200329034842002003290340220b420010be09200e280200210920012802002108410021052011290300200329031085200b89220ba7221221060340200541046a2205200620087122076a2106200920076a280000418081828478712202450d000b0240200920026841037620076a20087122056a2c00004100480d002009280200418081828478716841037621050b02402005200820127122066b201420066b7320087141034b0d00200920146a200ba741197622053a000020082014417c6a7120096a41046a20053a00000c020b200920056a22062d000021072006200ba741197622023a00002005417c6a20087120096a41046a20023a00000240200741ff01470d00200e280200220620146a41ff013a0000200620012802002014417c6a716a41046a41ff013a0000200e280200410020056b41d0006c6a41b07f6a200d41d00010bf091a0c020b200e280200410020056b41d0006c6a220741b07f6a2205290200210b2005200d290200370200200541186a220629020021132006200d41186a2208290200370200200541106a220629020021152006200d41106a2209290200370200200541086a220529020021162005200d41086a2206290200370200200d200b370200200620163702002009201537020020082013370200200741506a220541186a2208290200210b2008200f41506a220641186a2209290200370200200541106a220829020021132008200641106a2202290200370200200541086a220829020021152008200641086a220d2902003702002005290200211620052006290200370200200620163702002009200b37020020022013370200200d2015370200200741706a220541086a2207290000210b2007200f41706a220641086a22082900003700002005290000211320052006290000370000200620133700002008200b370000200e28020021050c000b0b201441016a21062014200a470d000b20012802002205200541016a41037641076c20054108491b21050b2000410036020020012005200128020c6b3602080b200341e0006a24000b13002000410a360204200041e09dc8003602000b130020004100360204200041f8fac9003602000bfa0203027f017e067f230041206b220224000240024020014102490d00200041206a22032000412010c209417f4a0d002000290000210420002003290000370000200241186a2205200041186a2206290000370300200241106a2207200041106a2208290000370300200241086a2209200041086a220a290000370300200a200341086a2900003700002008200341106a2900003700002006200341186a29000037000020022004370300024020014103490d00200041206a210320002001417f6a22064105746a21080340200341206a22002002412010c209417f4a0d012006450d0320032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a290000370000200021032006417f6a22064101470d000b200821030b20032002290300370000200341186a2005290300370000200341106a2007290300370000200341086a20092903003700000b200241206a24000f0b2001200141ecabc800103f000b3400200041a0aac80036020420004100360200200041146a4103360200200041106a41ecacc800360200200041086a42053702000be80301047f23004180016b22022400200241386a41d7b2c800410710a702200241d8006a41deb2c800411210a7022002200136027c2002200241fc006a410410c8023703282002410c6a200241fc006a41046a3602002002200241306a3602042002200241fc006a3602082002200241286a360200200241c8006a2002108801024002402002280250220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b200241003602302002200136022c20022004360228200241286a200241386a4110107e200241286a200241d8006a4110107e200241286a200228024822012003107e0240200228024c450d00200110310b200220022802282201200228023010de04200241e0006a22032002410c6a290200370300200241d8006a41106a200241146a290200370300200241f0006a22042002411c6a290200370300200241f8006a2205200241246a280200360200200220022902043703580240024020022802004101460d00200041003602000c010b20004101360200200020022903583702042000410c6a2003290300370200200041146a200241e8006a2903003702002000411c6a2004290300370200200041246a20052802003602000b0240200228022c450d00200110310b20024180016a24000f0b103b000b1039000b9f0402027f037e230041f0006b2201240002404101102f22020d001039000b200241003a0000410041003502f4994a200141d0006aad7c42adfed5e4d485fda8d8007e42218922033e02f4994a200141c0006a41f499ca00ad220442a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010be09200141206a200342a4bb99fed1a0bbb02385420042adfed5e4d485fda8d800420010be09200141306a200442c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010be09200141106a200342c5ecb3fec9ecf7c2c30085420042adfed5e4d485fda8d800420010be0920012003200485420042adfed5e4d485fda8d800420010be09200141d0006a41d6b2c8004101109a01200041286a4200370300200041246a41a0a4c00036020020004100360220200041346a428180808010370200200020023602302000200129005037003c200041c4006a200141d0006a41086a290000370000200041cc006a200141e0006a290000370000200041d4006a200141e8006a29000037000020002003200141c0006a41086a2903002001290340857c200141086a29030020012903008542cf829ebbefefde82147c2205893703002000200141106a41086a29030020012903108520047c20054230888937031820002003200141306a41086a2903002001290330857c2005422088893703102000200141206a41086a29030020012903208520047c200542108889370308200141f0006a24000bb60301057f230041e0006b22052400024002402004417f4c0d000240024020040d00410121060c010b2004102f2206450d020b20062003200410bf092107410021060240200141386a2802002004470d0020072001280230200410c2094521060b02402004450d00200710310b024002402006450d002000200129003c370000200041186a200141d4006a290000370000200041106a200141cc006a290000370000200041086a200141c4006a2900003700000c010b200520032004109a01200541206a41186a200541186a2207290000370300200541206a41106a200541106a2208290000370300200541206a41086a200541086a220929000037030020052005290000370320200541c0006a41086a200241086a280200360200200520022902003703400240024020040d00410121060c010b2004102f2206450d030b200520043602542005200636025020062003200410bf091a200520043602582001200541206a200541c0006a200541d0006a10e708200041186a2007290000370000200041106a2008290000370000200041086a2009290000370000200020052900003700000b200541e0006a24000f0b103b000b1039000bf30702037f017e230041e0006b2204240002400240024002400240200141e0006a22052001413c6a412010c209450d00200441286a41186a200541186a290000370300200441286a41106a200541106a290000370300200441286a41086a200541086a2900003703002004200529000037032802402001200441286a10e8082206450d00200628020c41004a0d010b200441286a41086a2201200541086a290000370300200441286a41106a2203200541106a290000370300200441286a41186a2202200541186a290000370300200420052900003703284130102f2205450d01200541003a00002005200429032837000120052004290050370021200541096a2001290300370000200541116a2003290300370000200541196a2002290300370000200541286a2201200441d7006a29000037000002400240024020052d00000e0402020002010b200541086a280200450d01200541046a28020010310c010b2001280200450d00200541246a28020010310b20051031200041003a00000c040b2004410036021420042005360210200441bcb1c80036020c20042001360208200441206a41203602002004200336021c200420023602184124102f2205450d002004422437025420042005360250200441d0006a200441186a4104107e20034120200441d0006a10cd01200441286a200441086a20042802502205200428025810bc0402402004280254450d00200510310b024020042802284101470d0002400240200428022c22052d00000e0405050005010b200541086a280200450d04200541046a28020010310c040b200541286a280200450d03200541246a28020010310c030b0240200428022c2205450d0002400240200441306a2903002207422088a741044f0d00410021010c010b20052800002103410121010b02402007a7450d00200510310b2001450d0020042003360250200441286a200441086a200441d0006a410410bc04024020042802284101470d0002400240200428022c22052d00000e0405050005010b200541086a280200450d04200541046a28020010310c040b200541286a280200450d03200541246a28020010310c030b0240200428022c22050d00200041003a00000c050b2004200441306a29030022074220883e025420042005360250200441286a200441d0006a10e60141002101024020042d00284101460d0020002004290029370001200041196a200441286a41196a290000370000200041116a200441286a41116a290000370000200041096a200441286a41096a290000370000410121010b200020013a00002007a7450d04200510310c040b200041003a00000c030b1039000b20051031200041003a00000c010b20051031200041003a00000b200441e0006a24000be50301047f23004180016b220424000240024020032802082205200041386a280200470d00200328020022062000280230200510c2090d00200341046a280200450d01200610310c010b200441c0006a41186a2205200141186a290000370300200441c0006a41106a2206200141106a290000370300200441c0006a41086a2207200141086a2900003703002004200129000037034020042000200441c0006a10eb08024020042903004201520d00200441c0006a41286a200441306a290300370300200441c0006a41206a200441286a2903003703002005200441206a2903003703002006200441186a2903003703002007200441106a29030037030020042004290308370340200441f0006a41086a200341086a2802003602002004410136027c20042003290200370370200441c0006a200441f0006a10ec080c010b0240200441106a2802002205417c6a2201280200220041004a0d00200541706a2106200441c0006a41086a2207200341086a280200360200200420032902003703400240200541746a280200450d0020062802001031200128020021000b20062004290340370200200641086a20072802003602002001200041016a3602000c010b2001200041016a360200200341046a280200450d00200328020010310b20044180016a24000bbb0403017f047e097f230041306b22022400200241206a20002903182000290308852203200141186a2900008542002000290310220420002903002205852206200129001085420010be09200241106a2003200141086a2900008542002006200129000085420010be092002200442002004200241106a41086a2903002002290310857c2004200241206a41086a2903002002290320857c200542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892203420010be09200241086a290300200229030085200389a7220741197641818284086c2208200041246a28020022092000280220220a20077122076a280000220073220b417f73200b41fffdfb776a7141808182847871210b200741046a200a71210c024002402009450d00200941506a210d4104210e034002400240200b450d00200b210f0c010b200e210b0340200c21070240200020004101747141808182847871450d004100210f0c050b2007200b6a41046a200a71210c200b41046a220e210b200920076a2800002200200873220f417f73200f41fffdfb776a7141808182847871220f450d000b0b200f417f6a200f71210b2001200d4100200f6841037620076a200a716b41306c6a220f412010c2090d000c020b0b4100210f200b0d004108210703402000200041017471418081828478710d01200c2800002100200c20076a200a71210c200741046a21072000200873220b417f73200b41fffdfb776a7141808182847871450d000b0b200241306a2400200f41206a4100200f1b0bb10201027f230041206b220424000240024002400240024020022001413c6a412010c2090d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b2002102f2201450d030b200020023602042000200136020020012005200210bf091a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410e8082202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b2001102f2202450d020b200020013602042000200236020020022005200110bf091a200041086a20013602000c030b103b000b1039000b200041003602000b200441206a24000b880101017f230041206b220324000240024020012000413c6a412010c2090d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310e80822010d00410021010c010b200128020c41004a21010b200341206a240020010be20503017f047e097f230041306b22032400200341206a20012903182001290308852204200241186a2900008542002001290310220520012903002206852207200229001085420010be09200341106a2004200241086a2900008542002007200229000085420010be092003200542002005200341106a41086a2903002003290310857c2005200341206a41086a2903002003290320857c200642adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892204420010be09200341086a2903002003290300852004892205a7220841197641818284086c2209200141246a280200220a2001280220220b200871220c6a280000220873220d417f73200d41fffdfb776a7141808182847871210d200c41046a200b71210e024002400240200a450d004104210f034002400240200d450d00200d21100c010b200f210d0340200e210c2008200841017471418081828478710d04200c200d6a41046a200b71210e200d41046a220f210d200a200c6a28000022082009732210417f73201041fffdfb776a71418081828478712210450d000b0b2010417f6a201071210d200a4100201068410376200c6a200b716b41306c6a221041506a2002412010c2090d000b2000200537030820004200370300200041186a41013a0000200041146a2001360200200041106a2010360200200041196a2002290000370000200041216a200241086a290000370000200041296a200241106a290000370000200041316a200241186a2900003700000c020b200d0d004108210c03402008200841017471418081828478710d01200e2800002108200e200c6a200b71210e200c41046a210c2008200973220d417f73200d41fffdfb776a7141808182847871450d000b0b2000200537030820004201370300200041106a2001360200200041146a20022900003700002000411c6a200241086a290000370000200041246a200241106a2900003700002000412c6a200241186a2900003700000b200341306a24000bb60503027f077e067f23004180016b2202240020022000280208220336020c20002903002104200241106a41186a200041246a2902002205370300200241106a41106a2000411c6a2902002206370300200241106a41086a200041146a2902002207370300200241106a41286a200141086a29020022083703002002200029020c220937031020022001290200220a370330200241c0006a41286a2008370300200241c0006a41206a200a370300200241c0006a41186a2005370300200241c0006a41106a2006370300200241c0006a41086a200737030020022009370340200341206a210b200341246a280200210c2003280220210d410021002004a7220e21010340200041046a22002001200d71220f6a2101200c200f6a280000418081828478712210450d000b0240200c201068410376200f6a200d7122006a2c000022014100480d00200c200c280200418081828478716841037622006a2d000021010b02402001410171220f450d00200341286a2802000d00200241f0006a200b2002410c6a10ed08200341246a280200210c2003280220210d410021000340200041046a2200200e200d7122016a210e200c20016a280000418081828478712210450d000b200c20106841037620016a200d7122006a2c00004100480d00200c280200418081828478716841037621000b20032003280228200f6b360228200c20006a2004a741197622013a00002000417c6a200d71200c6a41046a20013a0000200c410020006b41306c6a41506a220041286a200241c0006a41286a290300370200200041206a200241c0006a41206a290300370200200041186a200241c0006a41186a290300370200200041106a200241c0006a41106a290300370200200041086a200241c0006a41086a290300370200200020022903403702002003412c6a2200200028020041016a36020020024180016a24000be91007077f017e077f017e027f027e017f23004180016b220324000240024002400240200128020c220441016a22052004490d000240200520012802002206200641016a220741037641076c20064108491b22064101764b0d004100210641002105024003400240024020064101710d00200520074f0d0320052106200541016a21050c010b200541036a220620054922080d0220062007492209450d022007200541046a20081b200720091b21050b200141046a28020020066a220620062802002206410776417f73418182840871200641fffefdfb07726a360200410121060c000b0b200141046a2802002105200128020041016a22064104490d02200520066a20052800003600000c030b024002400240024002402005200641016a2206200520064b1b22050d0041a0a4c000210841002109410021050c010b02400240200541074b0d004104410820054104491b21050c010b200541ffffffff01712005470d04417f2005410374220541076e417f6a677641016a41012005410d4b1b21050b2005ad42307e220a422088a70d02200aa72206200541046a22096a22082006490d022008102f2208450d01200820066a220841ff01200910c1091a2005417f6a2209200541037641076c20094108491b21050b200841506a210b200520046b210c200141046a280200220d41046a210e200d20076a210f200d280200417f7341808182847871211020022802002111034002400240024020100d000340200e200f4f0d02200d41c07e6a210d200e2802002105200e41046a2206210e2005418081828478712205418081828478460d000b2005418081828478732207417f6a20077121102006210e0c020b200d450d00201021072010417f6a20107121100c010b2001200436020c2001200c360208200041003602002001280200210520012009360200200141046a22062802002107200620083602002005450d082007200541016aad42307ea76b10310c080b41002105200341106a20112903182011290308852212200d41002007684103766b41306c6a41506a221341186a22142900008542002011290310220a20112903002215852216201329001085420010be09200341206a2012201341086a22172900008542002016201329000085420010be092003200a4200200a200341206a41086a2903002003290320857c200a200341106a41086a2903002003290310857c201542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892212420010be09200341086a290300200329030085201289220aa721060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b200820056a200aa741197622063a00002005417c6a20097120086a41046a20063a0000200b410020056b41306c6a220541286a201341286a290200370200200541206a201341206a290200370200200541186a2014290200370200200541106a201341106a290200370200200541086a2017290200370200200520132902003702000c000b0b1039000b41d0b1c800411c41ecb1c800103c000b41d0b1c800411c41ecb1c800103c000b41d0b1c800411c41ecb1c800103c000b200541046a2005200610c0091a0b41002105024020012802002204417f460d002002280200210d200141046a2110410021050340024020102802002208200522146a2d0000418001470d00410020146b21170340200341c0006a200d290318200d2903088522122008201741306c6a41506a220e41186a2213290000854200200d290310220a200d2903002215852216200e29001085420010be09200341d0006a2012200e41086a220f2900008542002016200e29000085420010be09200341306a200a4200200a200341d0006a41086a2903002003290350857c200a200341c0006a41086a2903002003290340857c201542adfed5e4d485fda8d8007e42a0cbbf9599b5a19f0a7c85421789854217892212420010be092001280200210941002105200341306a41086a290300200329033085201289220aa7221121060340200541046a2205200620097122076a2106200820076a280000418081828478712202450d000b0240200820026841037620076a20097122056a2c00004100480d002008280200418081828478716841037621050b02402005200920117122066b201420066b7320097141034b0d00200820146a200aa741197622053a000020092014417c6a7120086a41046a20053a00000c020b200820056a22062d000021072006200aa741197622023a00002005417c6a20097120086a41046a20023a00000240200741ff01470d002010280200220620146a41ff013a0000200620012802002014417c6a716a41046a41ff013a00002010280200410020056b41306c6a41506a2205200e290200370200200541086a200f290200370200200541106a200e41106a290200370200200541186a2013290200370200200541206a200e41206a290200370200200541286a200e41286a2902003702000c020b2010280200410020056b41306c6a41506a2205290200210a2005200e290200370200200541186a2206290200211220062013290200370200200541106a220629020021152006200e41106a2207290200370200200541086a220629020021162006200f290200370200200f20163702002007201537020020132012370200200e200a370200200541286a2206290200210a2006200e41286a2207290200370200200529022021122005200e290220370220200e20123702202007200a370200201028020021080c000b0b201441016a210520142004470d000b20012802002205200541016a41037641076c20054108491b21050b2000410036020020012005200128020c6b3602080b20034180016a24000bb332021a7f0c7e23002201210220014180056b41607122012400200041246a220328020022042802002105200341a0a4c00036020020002802202106200041003602202000412c6a2203280200210720034100360200200041286a41003602002001200036021c2004200641016a22086a2109200441046a21032005417f7341808182847871210a200141a0026a410572210b200141a0026a41276a210c200141a0026a41206a210d2004210502400240034002400240200a0d000340024020032009490d004100210e0c060b200541c07d6a21052003280200210e200341046a220f2103200e41808182847871220e418081828478460d000b200e41808182847873220a417f6a200a71210e0c010b200a417f6a200a71210e2005450d022003210f0b20014180046a41186a221020054100200a684103766b41d0006c6a221141b07f6a220341186a29020037030020014180046a41106a2212200341106a29020037030020014180046a41086a2213200341086a2902003703002001200329020037038004201141506a280200210a201141546a2d00002111200c200341cc006a280000360000200d200341c5006a290000370300200141a0026a41186a22142003413d6a290000370300200141a0026a41106a2215200341356a290000370300200141a0026a41086a22162003412d6a290000370300200120032900253703a0022007417f6a2107024020114102470d00200f21030c030b200141b8036a41186a22032010290300370300200141b8036a41106a22172012290300370300200141b8036a41086a22182013290300370300200141a8016a41086a22192016290300370300200141a8016a41106a22162015290300370300200141a8016a41186a22152014290300370300200141a8016a41206a2214200d290300370300200141a8016a41276a221a200c28000036000020012001290380043703b803200120012903a0023703a801201020032903003703002012201729030037030020132018290300370300200120012903b80337038004200b20012903a801370000200b41086a2019290300370000200b41106a2016290300370000200b41186a2015290300370000200b41206a2014290300370000200b41276a201a280000360000200120113a00a4022001200a3602a002200128021c220341d0006a2802002111200328024c210302400240200a4125490d0020012802ac02210a20012802a80221100c010b200b21100b200120012f01cc023b01c8042001200a3602c404200120103602c004200320014180046a200141c0046a201128021c110600024020012802a0024125490d0020012802a80210310b200e210a200f21030c000b0b410021050b02402007450d00034002400240200e0d000340200320094f0d04200541c07d6a21052003280200210e200341046a220f2103200e41808182847871220e418081828478460d000b200e41808182847873220e417f6a200e71210b200f21030c010b2005450d02200e417f6a200e71210b0b200e68210f200b210e20054100200f4103766b41d0006c6a220f41506a2802004125490d00200f41586a2802001031200b210e0c000b0b024002402006450d00200441ff01200641056a10c1091a200641074d0d00200841037641076c21030c010b200621030b20002003360228200020063602202000412c6a4100360200200041246a2004360200024002400240024002400240200128021c22052d00584101460d00200541dc006a28020021030240200541c8006a220b280200220e200e417f6a2209200541c0006a220f280200220e2005413c6a220a2802006b716b4101470d00200a10db06200b280200417f6a2109200f280200210e0b200f2009200e41016a71360200200541c4006a280200200e4102746a200336020002400240024002400240024002400240024002400240200541386a280200220e20034d0d00200541306a2209280200200341fc006c6a2203290210211b200320012903b0023702102003290208211c200320012903a802370208200141003a00a002200141003602a4022003290200211d200320012903a002370200200341186a220e290200211e200e20012903b802370200200141206a41086a220e200341e8006a290200370300200141206a41106a220f200341f0006a290200370300200141206a41186a220b200341f8006a2802003602002001201b370390012001201c370388012001201d37038001200120032902603703202001201e370398012003290240211f200341c8006a2902002120200341d0006a2902002121200341d8006a290200212220032902202123200341286a2902002124200341306a29020021252001200341386a29020022263703782001202537037020012024370368200120233703602001202237035820012021370350200120203703482001201f3703400240201da741ff01714101470d00200141a8016a41176a220a200129009801221d370000200141a8016a41106a2211200129009101221c370300200141a8016a41086a2210200129008901221b37030020052802542203200129008101221e37000020032023a722053a001f200341086a201b370000200341106a201c370000200341176a201d3700002001201e3703a801200141a0026a41d8006a2022370300200141a0026a41d0006a2021370300200141a0026a41c8006a2020370300200141e0026a201f370300200141dc026a200128027c360200200141d4026a2001290274370200200141cc026a200129026c370200200120012902643702c40220014180036a2001290320370300200141a0026a41e8006a200e290300370300200141a0026a41f0006a200f290300370300200141a0026a41f8006a200b280200360200200141a9026a2010290300370000200141b1026a2011290300370000200141a0026a41186a200a290000370000200120012903a8013700a102200141c0026a20053a0000200141013a00a0022009200141a0026a10d4082103200128021c220141003a0058200141dc006a20033602000c0c0b201ca72105201c422088a72103200141003602d401200141003a00ac01200141003602a801200141e8016a41106a2001280258360200200141e8016a41086a2001290350370300200120012903483703e80102400240024002400240201d422088a70e050102030400010b200141c0026a2024370300200141b8026a2023370300200141b0026a201e370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a7210b201ea721030c010b200141a9026a210b0b2005410176210f024002402005410171450d002003200f4d0d08200b200f6a2d0000410f71210e4100210a200f41016a210f0c010b2003200f490d064101210a4100210e0b200341017420056b220541ffff03200541ffff03491b220541017641036a2211102f2210450d142003200f6b2109200b200f6a210f200141003602e001200120113602dc01200120103602d80102402026422088a72218410020181b2211450d00200120053602840420014181023b01800420014180046a200141d8016a10f30541002105200a450d0a410021030c0d0b2001200536028404200141013b01800420014180046a200141d8016a10f30541002105200a450d0a410021030c0b0b4101102f2203450d13200141013602dc01200120033602d801200341003a0000200141013602e0010c0d0b200141c0026a2024370300200141b8026a2023370300200141b0026a201e370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a72109201ea721030c010b200141a9026a21090b2005410176210e024002402005410171450d002003200e4d0d08200141013a00800420014188046a2003200e41016a22056b3602002001200920056a3602840420012009200e6a2d0000410f713a0081040c010b2003200e490d0620014188046a2003200e6b360200200141003b01800420012009200e6a360284040b200141d8016a20014180046a2026a72203201fa710e00602402026422088a7450d00200310310b20012802a4024125490d0c200141ac026a28020010310c0c0b200141c0026a2024370300200141b8026a2023370300200141b0026a201e370300200141a8026a201b370300200141c8026a2025370300200120053602a002200120033602a4020240024020034125490d00201b422088a7210e201ea721030c010b200141a9026a210e0b200120053602e803200120033602e4032001200e3602e003200141c0046a200141e0036a10d008200141a8016a200141e0036a4100200110d1082103200128021c2105200141b8036a41086a201f370300200141b8036a41106a20012903e801370300200141d0036a200141e8016a41086a290300370300200141d8036a200141e8016a41106a280200360200200120263703b80320014180046a2005200141b8036a200141a8016a10cf08200141a8016a200310d20810df06000b10de06000b2003200e41c89ac800103f000b200f200341bc85ca001061000b200f200341cc85ca00103f000b200e200341bc85ca001061000b200e200341cc85ca00103f000b410121030c020b410121030b03400240024020030e020001010b200520094f0d03200f20056a2d0000210e200541016a2105410121030c010b02400240024020012802e001220320012802dc01470d00200341016a220b2003490d0b2003410174220a200b200a200b4b1b220b4108200b41084b1b210b0240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a200b410120014180046a104e200141c0036a280200210b20012802b8034101460d0120012802bc03210a2001200b3602dc012001200a3602d8010b20012802d80120036a200e3a00002001200341016a3602e0010c010b200b0d0a0c090b410021030c000b0b03400240024020030e020001010b200520094f0d02200f20056a2d0000210e200541016a2105410121030c010b02400240024020012802e001220320012802dc01470d00200341016a220b2003490d0a2003410174220a200b200a200b4b1b220b4108200b41084b1b210b0240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a200b410120014180046a104e200141c0036a280200210b20012802b8034101460d0120012802bc03210a2001200b3602dc012001200a3602d8010b20012802d80120036a200e3a00002001200341016a3602e0010c010b200b450d080c090b410021030c000b0b20012802e00122162103024002400240024002400240201620012802dc01470d00201641016a22032016490d0b201641017422052003200520034b1b22034108200341084b1b21030240024020160d0020014100360280040c010b20014180046a41086a41013602002001201636028404200120012802d801360280040b200141b8036a2003410120014180046a104e200141c0036a280200210320012802b8034101460d0120012802bc032105200120033602dc01200120053602d80120012802e00121030b20012802d80120036a41003a0000200120012802e00141016a22033602e001024002400240200320012802dc01470d00200341016a22052003490d0d2003410174220e2005200e20054b1b22054108200541084b1b21050240024020030d0020014100360280040c010b20014180046a41086a41013602002001200336028404200120012802d801360280040b200141b8036a2005410120014180046a104e200141c0036a280200210320012802b8034101460d0120012802bc032105200120033602dc01200120053602d80120012802e00121030b2026a7221741c0046a211420012802d80120036a41003a0000200120012802e00141016a3602e00102402011450d002011201f422088a7200141d8016a10ce010b200141c0046a410172210520142017470d0141002111410021030c040b20030d0c0c0b0b20014180046a410172210e200141a9026a21194100210a20172103410021114101210b02400340200141023a0080042003290200211d200129039804211c2001290390042123200129038804211b20032001290380043702002003290208211e2003201b3702082003290210211b20032023370210200341186a220929020021232009201c370200200120233703d8042001201b3703d0042001201e3703c8042001201d3703c004200341206a280200210720014180046a41176a2210200541176a29000037000020014180046a41106a2209200541106a29000037030020014180046a41086a220f200541086a29000037030020012005290000370380040240201da7220c41ff017122124103470d0020114180fe037141087621030c060b200141e0036a41176a22132010290000370000200141e0036a41106a22102009290300370300200141e0036a41086a200f290300221d3703002001200129038004221c3703e003200141c0046a41176a220d2013290000370000200141c0046a41106a22132010290300370300200141c0046a41086a2210201d3703002001201c3703c00402400240024020124102470d00200141023a00b8030c010b0240024020012802a40222124125490d0020012802b002211220012802ac0221150c010b201921150b200120012802a0023602f804200120123602f404200120153602f004200141a8016a200141f0046a4101200a10d1082112200128021c2115200e20012903c004370000200e41086a2010290300370000200e41106a2013290300370000200e41176a200d2900003700002001200c3a008004200120073602a004200141b8036a201520014180046a200141a8016a10cf08200141a8016a201210d20820012d00b8034103460d010b20014180046a41206a200141b8036a41206a29030037030020014180046a41186a200141b8036a41186a2903003703002009200141b8036a41106a290300370300200f200141b8036a41086a290300370300200120012903b803221d37038004410021090240024002400240201da741ff0171417f6a0e020103000b200e4120200141d8016a10ce010c010b200141c0046a41186a200e41186a2900003703002013200e41106a2900003703002010200e41086a2900003703002001200e2900003703c00420012802a404220941214f0d04200141c0046a2009200141d8016a10ce010b200b21090b200a41016a210a200b410174210b20092011722111200341246a22032014460d040c010b0b20114180fe037141087621030c050b200941204188ddc4001058000b20030d0a0c090b20114180fe037141087621030b200141033a00c00420014180046a41176a200541176a29000037000020014180046a41106a200541106a29000037030020014180046a41086a200541086a29000037030020012005290000370380040b200141033a00b8030b201641026a21052016417e4f0d0220012802e001220e2005490d0320012802d80120166a2003410874201141ff0171723b000002402018450d00201fa7450d00201810310b2017103120012802a4024125490d00200141ac026a28020010310b200128021c220341d0006a2802002105200328024c210320014180046a41086a410028029ca44036020020014100290294a44037038004200141a0026a200320014180046a20012802d80120012802e0012005280214110400200128021c2203280254220520012903a002370000200541086a200141a0026a41086a290300370000200541106a200141a0026a41106a290300370000200541186a200141a0026a41186a2903003700002003200328027c41016a36027c2003280254220541186a290000211d200541106a290000211c200541086a290000211f200341d9006a2005290000370000200341013a0058200341e1006a201f370000200341e9006a201c370000200341f1006a201d370000024020012802dc01450d0020012802d80110310b20012802a8014125490d00200141b0016a28020010310b0240200041386a2802002203450d0020002802302101200341fc006c210303400240024020012d00000d00200141046a10d3080c010b200141246a10d3080b200141fc006a2101200341847f6a22030d000b0b0240200041346a2802002201450d00200141fc006c450d00200028023010310b200041c8006a280200210102400240200041c0006a28020022032000413c6a2802002205490d00200120034f0d012003200141c0cfc8001058000b20012005490d030b0240200141ffffffff0371450d00200041c4006a28020010310b024020002802202205450d0002402000412c6a280200450d00200041246a280200220341046a2101200520036a41016a210e2003280200417f73418081828478712105024003400240024020050d0003402001200e4f0d04200341c07d6a210320012802002105200141046a220921012005418081828478712205418081828478460d000b2005418081828478732205417f6a200571210f200921010c010b2005417f6a200571210f0b2005682109200f21052003410020094103766b41d0006c6a220941506a2802004125490d00200941586a2802001031200f21050c000b0b200028022021050b200041246a280200200541016aad42d0007ea76b10310b200224000f0b201620054198ddc4001062000b2005200e4198ddc4001058000b41facdc800412341d0cfc800103c000b103b000b1039000bb10201027f230041206b220424000240024002400240024020022001413c6a412010c2090d00200141386a2802002202417f4c0d01200128023021050240024020020d00410121010c010b2002102f2201450d030b200020023602042000200136020020012005200210bf091a200041086a20023602000c040b200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200420022900003703002001200410e8082202450d02200228020c4101480d0220022802082201417f4c0d00200228020021050240024020010d00410121020c010b2001102f2202450d020b200020013602042000200236020020022005200110bf091a200041086a20013602000c030b103b000b1039000b200041003602000b200441206a24000b880101017f230041206b220324000240024020012000413c6a412010c2090d00410121010c010b200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a2900003703002003200129000037030002402000200310e80822010d00410021010c010b200128020c41004a21010b200341206a240020010ba20201047f23004180016b22032400024020012000413c6a412010c209450d00200341c0006a41186a2204200141186a290000370300200341c0006a41106a2205200141106a290000370300200341c0006a41086a2206200141086a2900003703002003200129000037034020032000200341c0006a10eb08024020032903004201520d00200341c0006a41286a200341306a290300370300200341c0006a41206a200341286a2903003703002004200341206a2903003703002005200341186a2903003703002006200341106a29030037030020032003290308370340200342808080807037037820034201370370200341c0006a200341f0006a10ec080c010b200341106a280200417c6a22012001280200417f6a3602000b20034180016a24000b1300200041f0b2c800360204200020013602000b1300200041f0b2c800360204200020013602000b13002000410736020420004180b4c8003602000b3400200041d4aac80036020420004100360200200041146a4102360200200041106a41acbfc800360200200041086a420a3702000b3400200041a0aac80036020420004100360200200041146a4101360200200041106a41e4c7c800360200200041086a42053702000bcc0101027f230041c0006b220224002000410036020820004201370200200241286a4100360200200241206a4200370300200241186a4200370300200241106a4200370300200241086a420037030020024200370300200242003703302000200241306a4108107e200241003602302000200241306a4104107e02404120102f2203450d002002422037023420022003360230200241306a2002410c6a4120107e2000200228023022032002280238107e02402002280234450d00200310310b200241c0006a24000f0b1039000b870701027f02400240024002400240024002400240024020002d00000e0a00010203040506070707080b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0620024198046c450d06200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0520024198046c450d05200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a220110b001200041146a2802002202450d0420024198046c450d04200128020010310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b200041086a2802002202450d03200241f8036c450d03200028020410310f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041106a10ad010f0b02402000410c6a2802002201450d00200041046a2802002102200141f8036c21010340200210aa01200241f8036a2102200141887c6a22010d000b0b0240200041086a2802002202450d00200241f8036c450d00200028020410310b200041206a10ad010240200041186a2802002201450d00200041106a280200210220014198046c21010340200210bf0120024198046a2102200141e87b6a22010d000b0b200041146a2802002202450d0120024198046c450d01200028021010310f0b200041106a21020240200041d4076a280200450d00200041d0076a28020010310b20022802004123460d002002109e040b0f0b200041086a10ad01200041046a220228020010f808200228020010310b15002000280200220028020020002802042001104c0bd30202027f017e23004180016b2202240020002802002100024002400240024020012802002203411071450d0020002903002104418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341d7006a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d030b20014181c6c0004102200220006a41800120006b105621000c010b2000290300210402402003412071450d00418001210002400340024020000d00410021000c020b200220006a417f6a2004a7410f712203413072200341376a2003410a491b3a00002000417f6a2100200442048822044200520d000b20004181014f0d040b20014181c6c0004102200220006a41800120006b105621000c010b20042001105321000b20024180016a240020000f0b200041800141bc89c0001061000b200041800141bc89c0001061000b8a0702027f047e230041f0016b2202240020002802002100024002400240024020012802002203411071450d00200041086a290300210420002903002105418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341d7006a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d030b20014181c6c0004102200241f0006a20006a41800120006b105621000c010b200041086a29030021042000290300210502402003412071450d00418001210002400340024020000d00410021000c020b200241f0006a20006a417f6a2005a7410f712203413072200341376a2003410a491b3a00002000417f6a210020054204882004423c8684220520044204882204844200520d000b20004181014f0d040b20014181c6c0004102200241f0006a20006a41800120006b105621000c010b2002412736026c02400240200442ffff1f560d0020054213882004422d868442bda282a38eab04802104420021060c010b200241386a2005420042f3b2d8c19e9ebdcc957f420010be09200241286a2005420042d2e1aadaeda7c987f600420010be09200241d8006a2004420042f3b2d8c19e9ebdcc957f420010be09200241c8006a2004420042d2e1aadaeda7c987f600420010be09200241c8006a41086a290300200241286a41086a290300200241386a41086a290300220620022903287c2204200654ad7c220720022903487c2206200754ad7c2006200241d8006a41086a290300200420022903587c200454ad7c7c2204200654ad7c2207423e8821062004423e8820074202868421040b200241186a20042006428080e0b0b79fb79cf500427f10be09200229031820057c200241f0006a200241ec006a107102402004200684500d00200241f0006a41146a4130200228026c416c6a10c1091a2002411436026c200241086a20044213882006422d8684220542bda282a38eab048022062004428080e0b0b79fb79cf500427f10be09200229030820047c200241f0006a200241ec006a1071200542bda282a38eab04540d00200241f1006a4130200228026c417f6a10c1091a20022006a74130723a00702002410036026c0b200141f8fac9004100200241f0006a200228026c22006a412720006b105621000b200241f0016a240020000f0b200041800141bc89c0001061000b200041800141bc89c0001061000b130020004102360204200041a4cbc8003602000bbb03010a7f230041306b22022400200241086a200110bb01024002402002280208450d00200041003602000c010b0240024002400240200228020c220320012802044102762204200420034b1b22054102742204417f4c0d000240024020050d00410421060c010b2004102f2206450d030b024020030d00410021030c040b4100210741002108410021040340200128020422094104490d022001280200220a280000210b20012009417c6a3602042001200a41046a3602000240024020042005470d002007200441016a2209200720094b1b22094104200941044b1b220941ffffffff0371200946410274210a200941027421090240024020040d00200241003602200c010b2002410436022820022008360224200220063602200b200241106a2009200a200241206a104e2002280218210920022802104101460d0120022802142106200941027621050b200620086a200b360200200741026a2107200841046a21082003200441016a2204460d050c010b0b20090d020b103b000b20004100360200200541ffffffff0371450d02200610310c020b1039000b2000200536020420002006360200200041086a20033602000b200241306a24000be70802077f027e230041900f6b2202240002400240024020012802004101460d002002410c3602000c010b02400240024002402001411c6a2802002203450d0020012003417f6a36021c200141086a2802002203450d032001410c6a280200210420012802042105024002400340200420032f01a629490d01024020032802a02922060d0020031031410221070c030b20032f01a429210420031031200541016a2105200621030c000b0b2003200441d0036c6a220628020021072002200641046a41cc0310bf092108200441016a2106200320044104746a220441f8276a2903002109200441f0276a290300210a02402005450d00200320064102746a41a8296a2802002103024020054101460d0041012104034020032802a82921032005200441016a2204470d000b0b410021060b200841c40b6a200841cc0310bf091a0b200241f8036a200241c40b6a41cc0310bf091a2001200636020c2001200336020820014100360204200241c40b6a200241f8036a41cc0310bf091a2007450d01200241e0076a2009370300200241d8076a200a37030041082103200241d4076a200241c40b6a41086a280200360200200220022902c40b3702cc070c020b200141046a21032002410c3602c80702402001280200450d00200310c2040b20014100360200200320022902c40b370200200341086a200241c40b6a41086a290200370200200341106a200241c40b6a41106a290200370200200341186a200241c40b6a41186a2802003602002002410c3602000c030b200241d0076a200241c80b6a41c80310bf091a200241a00b6a2009370300200241980b6a200a370300410a21030b200220033602c8072002200241c8076a41f80310bf092203280200410c460d012000200341f80310bf091a0c020b418a98ca00412b418896ca00103c000b024020012802204101460d002000410c3602000c010b200241c8076a200141246a10c6040240024020022802c80722034102470d002000410c3602000c010b200241c40b6a200241c8076a41047241cc0310bf091a200241f8036a41206a2205200241c8076a41f0036a290300370300200241f8036a41186a2204200241c8076a41e8036a290300370300200241f8036a41106a2206200241c8076a41e0036a290300370300200241f8036a41086a2201200241c8076a41d8036a2903003703002002200241c8076a41d0036a2903003703f803024002402003450d00200020022902c40b370204200041106a20022903f8033703002000410c6a200241c40b6a41086a280200360200200041186a2001290300370300200041206a2006290300370300200041286a2004290300370300200041306a2005290300370300410921030c010b200041086a200241c40b6a41046a41c80310bf091a200041f0036a2005290300370300200041e8036a2004290300370300200041e0036a2006290300370300200041d8036a2001290300370300200041d0036a20022903f803370300410b21030b200020033602000b2002280200410c460d00200210aa010b200241900f6a24000b130020004101360204200041c4d7c8003602000bff0602017f017e230041106b2202240020022000280228360200200120024104107e2002200028022c360200200120024104107e20022000280230360200200120024104107e20022000280234360200200120024104107e20022000280238360200200120024104107e2002200028023c360200200120024104107e20022000280240360200200120024104107e20022000280244360200200120024104107e20022000280248360200200120024104107e2002200028024c360200200120024104107e20022000280250360200200120024104107e20022000290300370300200120024108107e20022000280254360200200120024104107e20022000280258360200200120024104107e2002200028025c360200200120024104107e200029030821032002200041106a29030037030820022003370300200120024110107e200029031821032002200041206a29030037030820022003370300200120024110107e20022000280260360200200120024104107e20022000280264360200200120024104107e20022000280268360200200120024104107e2002200028026c360200200120024104107e20022000280270360200200120024104107e20022000280274360200200120024104107e20022000280278360200200120024104107e2002200028027c360200200120024104107e2002200028028001360200200120024104107e2002200028028401360200200120024104107e2002200028028801360200200120024104107e2002200028028c01360200200120024104107e024002402000280290014101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e200220004194016a280200360200200120024104107e0b024002402000280298014101460d00200241003a0000200120024101107e0c010b200241013a0000200120024101107e20022000419c016a280200360200200120024104107e0b200220002802a001360200200120024104107e200220002802a401360200200120024104107e200220002802a801360200200120024104107e200220002802ac01360200200120024104107e200220002802b001360200200120024104107e200220002802b401360200200120024104107e200220002802b801360200200120024104107e200220002802bc01360200200120024104107e200220002802c001360200200120024104107e200241106a24000bba0201077f230041c0006b22022400200241086a200110a109200241206a41186a2203200241086a41106a200241086a41086a2204200228020822054101461b2903001014220641186a290000370300200241206a41106a2207200641106a290000370300200241206a41086a2208200641086a2900003703002002200629000037032020061031200041186a2003290300370000200041106a2007290300370000200041086a20082903003700002000200229032037000002402005450d002004280200450d00200228020c10310b20012802002103024020012802082200450d002000410c6c21062003210003400240200041046a280200450d00200028020010310b2000410c6a2100200641746a22060d000b0b0240200141046a2802002200450d002000410c6c450d00200310310b200241c0006a24000b130020002002ad4220862001ad841022109c090b13002000410a360204200041b4eac8003602000b3400200041f3c6c00036020420004100360200200041146a4110360200200041106a41c883c900360200200041086a42063702000b130020004106360204200041a4a0c9003602000b4201027f230041106b2202240002404101102f22030d001039000b20004201370204200020033602002002412a3a000f20002002410f6a4101107e200241106a24000b920101017f230041c0006b22022400200241386a41002903c8ec40370300200241306a41002903c0ec40370300200241286a41002903b8ec40370300200241206a41002903b0ec40370300200241186a41002903a8ec40370300200241106a41002903a0ec40370300200241086a4100290398ec4037030020024100290390ec403703002000200210d106200241c0006a24000b4c01017f230041106b220224002000410036020820004201370200200242c0f0f50b3703082000200241086a4108107e20024280c2d72f3703082000200241086a4108107e200241106a24000b4301027f230041106b2202240002404104102f22030d001039000b2000420437020420002003360200200241e01236020c20002002410c6a4104107e200241106a24000b6101017f230041106b2202240020004100360208200042013702002002418080f0013602082000200241086a4104107e2002418080c00236020c20002002410c6a4104107e2002418080c0023602042000200241046a4104107e200241106a24000b7701017f230041c0016b220224002002108d022000410036020820004201370200200220022903003703b8012000200241b8016a4108107e200220022903083703b8012000200241b8016a4108107e200241106a2000108808200241c8006a200010880820024180016a2000108808200241c0016a24000b860201037f230041d0006b22022400200241086a41b5d8c800410d10a702200241186a41c2d8c800410d10a702200220013602342002200241346a410410c802370338200241cc006a200241346a41046a3602002002200241c0006a3602442002200241346a3602482002200241386a360240200241286a200241c0006a108801024002402002280230220341206a2201417f4c0d000240024020010d00410121040c010b2001102f2204450d020b2000410036020820002001360204200020043602002000200241086a4110107e2000200241186a4110107e2000200228022822012003107e0240200228022c450d00200110310b200241d0006a24000f0b103b000b1039000b130020004101360204200041a8a9c9003602000b3400200041e1abc90036020420004100360200200041146a4102360200200041106a41ecabc900360200200041086a420b3702000b3001017f02404104102f22020d001039000b20004204370204200020023602002000410010cb0141044100200010ca010b130020004128360204200041fcb4c9003602000b3400200041b5d8c80036020420004100360200200041146a4102360200200041106a41ecdac900360200200041086a420d3702000b950101017f230041d0016b22022400200241086a410041800110c1091a200241c4016a42003702002000410036020820004201370200200242003702bc01200241013602b8012002428280808080193703b00120024286808080c00c3703a801200241003602a00120024100360298012002420137039001200242818080801037038801200241086a2000108009200241d0016a24000b8a0201027f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012002410c6a21032001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c2002410c6a2103410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c2002410c6a2103410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b200020032001107e200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41d8ddc900200241086a10402101200241206a240020010b1300200041053602042000418cdfc9003602000bba0203027f027e037f230041206b22022400200241106a41086a2203200141086a28020036020020022001290200370310200241106a1097090240024020032802002201410574418101490d00200041b4e8c90036020420004101360200200041086a411d3602000c010b0240024020010d0042002104420021050c010b2002280210220341786a21062003200141027422016a417c6a280200210741002103200241086a21084200210442002105034020022007ad4200200341e0007110c309200829030020057c2002290300220520047c2204200554ad7c210520014104460d01200341206a2103200620016a28020021072001417c6a21010c000b0b20004100360200200041106a2005370300200041086a20043703000b0240200228021441ffffffff0371450d00200228021010310b200241206a24000b810201057f0240024002400240200041086a2802002201450d0020014102742102410021032000280200220421050240034020052802000d01200541046a2105200341016a21032002417c6a22020d000b2001417f6a21030b2003450d0020012003490d01200120036b220541ffffffff03712005470d0220054102742202417f4c0d024104210102402002450d002002102f2201450d040b2001200420034102746a200541027410bf092103200241027621020240200041046a28020041ffffffff0371450d00200028020010310b20002003360200200041086a2005360200200041046a20023602000b0f0b2003200141d4e8c9001061000b103b000b1039000bd003030a7f017e027f02400240024002400240200141086a2802002203200241086a2802002204200320044b1b220541016a22064101200641014b1b220741ffffffff03712007470d0020074102742206417f4c0d000240024020060d00410421080c010b200610352208450d020b20002008360200200041086a200736020020002006410276360204024020050d00410021000c050b2007417f6a21062004417f6a220920044b210a200741027420086a417c6a210b2002280200210c410021024200210d03404100210002402003417f6a220e20034b0d00410021002003200e20026b220f4d0d0041002100200f200e4b0d002001280200200f4102746a28020021000b4100210e0240200a0d002004200920026b220f4d0d00200f20094b0d00200c200f4102746a280200210e0b200720064d0d03200b200d2000ad7c200ead7c220d3e0200200b417c6a210b2006417f6a2106200d422088210d2005200241016a2202460d040c000b0b103b000b1039000b2006200741e4e8c900103f000b200da721000b024020072005417f736a220620074f0d00200820064102746a20003602000240200141046a28020041ffffffff0371450d00200128020010310b0f0b2006200741e4e8c900103f000b9c04030d7f017e017f02400240200241086a2802002203200141086a28020022046a22054101200541014b1b220641ffffffff03712006470d0020064102742205417f4c0d0002400240024020050d00410421070c010b200510352207450d010b20002007360200200041086a2006360200200020054102763602042004450d022006417f6a2108200341027420022802006a417c6a2109200641027420076a417c6a210a4100210b200141086a210c2004210d0240034002400240024002400240024002402004200d200b417f736a220e4d0d002001280200200e4102746a220f280200450d06024020030d00410021000c060b420021104100210020092102200a21050340200d200e4d0d022003200320006a2211417f6a4d0d032006200820006a22114d0d0420052002350200200f3502007e20107c20053502007c22103e02002002417c6a21022005417c6a21052010422088211020032000417f6a22006a450d050c000b0b200e200441bce7c900103f000b200e200d41bce7c900103f000b2011417f6a200341bce7c900103f000b2011200641bce7c900103f000b2010a721000b2006200b20036a417f736a220520064f0d02200720054102746a20003602000b200b41016a220b2004460d04200a417c6a210a2008417f6a2108200c280200210d0c000b0b2005200641e4e8c900103f000b1039000b103b000b0240200141046a28020041ffffffff0371450d00200128020010310b0be30303047f017e057f230041106b22012400024002400240024002400240024020002802002202280200220341016a41004c0d002002200336020020002802042203280200220441016a41004c0d0120022903082105200320043602002000280208220441086a2802002206200028020c220728020022086b41016a220920064f0d024101200028021428020020086a6b22062000280210220841086a28020022006a220a20064f0d0302400240200542ffffffff0f560d00410021002005200428020020094102746a3502007e20032903084220862008280200200a4102746a35020084580d010b20022802000d052002410036020020022002290308427f7c370308200441086a2802002200200020072802006b22024d0d0620032802000d07200428020020024102746a3502002105200341003602002003200520032903087c370308410121000b200141106a240020000f0b41bce9c9004118200141086a41d4e9c90041f4e9c9001041000b41bce9c9004118200141086a41d4e9c9004184eac9001041000b2009200641bce7c900103f000b200a200041bce7c900103f000b4194eac9004110200141086a41a4eac90041b4eac9001041000b2002200041bce7c900103f000b4194eac9004110200141086a41a4eac90041c4eac9001041000b1c00200128021841c8fac900410f2001411c6a28020028020c1100000bbb0101047f230041206b22022400024002402001422088a722030d002002200336020c200241013602080c010b2002200336020c20022001a7220436020820042d0000210520022003417f6a36020c2002200441016a360208410021030240024020050e020100020b200241106a200241086a109d0920022802102203450d01200229021421010b200020013702042000200336020020041031200241206a24000f0b41b5f1c900412e200241106a41e4f1c90041f4f1c9001041000bed0102047f017e230041106b22022400200241086a200110bb01024002400240024002402002280208450d00200041003602000c010b024020012802042203200228020c2204490d002004417f4c0d020240024020040d00410121050c010b200410352205450d04200128020421030b024020032004490d0020052001280200200410bf092103200128020422052004490d0520002004ad2206422086200684370204200020033602002001200520046b3602042001200128020020046a3602000c020b200510310b200041003602000b200241106a24000f0b103b000b1039000b20042005419cb4c0001061000bed0101047f230041106b22022400024002400240200128020022030d00410121040c010b0240200141086a28020041056a2204417f4c0d0020040d0141012105410021040c020b103b000b2004102f22050d001039000b2002410036020820022004360204200220053602000240024020030d00200241003a000f20022002410f6a4101107e0c010b200241013a000f20022002410f6a4101107e200141086a28020022042002108001200220032004107e0b20002002290300370204200041013602002000410c6a20022802082204360200200041106a2004ad422086200235020084370300200241106a24000bb10301047f230041c0006b2202240020002802002103410121000240200128021841a89ec000410c2001411c6a28020028020c1100000d0002400240200328020822000d0020032802002200200328020428020c11070042f4f99ee6eea3aaf9fe00520d012002200036020c2002412a36021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241b49ec0003602282002200241106a36023820042005200241286a10400d020c010b2002200036020c2002412b36021420022002410c6a36021020012802182104200128021c2105410121002002413c6a41013602002002420237022c200241b49ec0003602282002200241106a36023820042005200241286a10400d010b200328020c2100200241106a41146a4101360200200241106a410c6a410136020020022000410c6a3602202002200041086a360218200241043602142002200036021020012802182100200128021c2101200241286a41146a41033602002002420337022c200241c49ec0003602282002200241106a36023820002001200241286a104021000b200241c0006a240020000b6901037f230041206b220224002001411c6a280200210320012802182104200241086a41106a2000280200220141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820042003200241086a10402101200241206a240020010be40101047f230041106b220224000240024020012802082203410c6c41046a2204417f4c0d00200128020021010240024020040d00410121050c010b2004102f2205450d020b2002410036020820022004360204200220053602002003200210800102402003450d0020012003410c6c6a2105034020012802002103200141086a28020022042002108001200220032004107e2001410c6a22012005470d000b0b20002002290300370204200041013602002000410c6a20022802082201360200200041106a2001ad422086200235020084370300200241106a24000f0b103b000b1039000b5601017f4104210502400240024002400240200041ff0171417f6a0e050001020304000b410021050c030b410121050c020b410221050c010b410321050b20052002ad4220862001ad842004ad4220862003ad84102e0be50102037f017e230041206b22022400024002400240200041046a2802002203200028020822046b20014f0d00200420016a22012004490d02200341017422042001200420014b1b22014104200141044b1bad420c7e2205422088a74541027421012005a721040240024020030d00200241003602100c010b200241186a410436020020022003410c6c360214200220002802003602100b200220042001200241106a104e200241086a280200210120022802004101460d0120002002280204360200200041046a2001410c6e3602000b200241206a24000f0b2001450d001039000b103b000b1c00200128021841c8fac900410f2001411c6a28020028020c1100000b040041010bea0101027f230041c0006b2202240020024100360210200242013703082002412b36021c20022001410c6a3602202002200241206a3602182002200241086a3602242002413c6a41013602002002420137022c200241f0fac9003602282002200241186a360238200241246a41f8fac900200241286a10401a41052103024002400240024002402001280200417f6a0e050001020304000b410121030c030b410221030c020b410321030c010b410421030b2003200141046a280200200141086a2802002002280208200228021010a2090240200228020c450d00200228020810310b200241c0006a24000b0f00200028020020012002107e41000bf80101017f230041106b22022400200028020021002002410036020c02400240024002402001418001490d002001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c030b200220013a000c410121010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d410421010b20002002410c6a2001107e200241106a240041000b6301017f230041206b2202240020022000280200360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41f8fac900200241086a10402101200241206a240020010b8402000240024002400240024002400240024020002802002d00000e080102030405060700010b200128021841e4fec90041082001411c6a28020028020c1100000f0b200128021841ecfec90041072001411c6a28020028020c1100000f0b200128021841f3fec90041082001411c6a28020028020c1100000f0b200128021841fbfec900410c2001411c6a28020028020c1100000f0b20012802184187ffc900410c2001411c6a28020028020c1100000f0b20012802184193ffc900410c2001411c6a28020028020c1100000f0b2001280218419fffc90041062001411c6a28020028020c1100000f0b200128021841a5ffc90041092001411c6a28020028020c1100000ba90201027f230041106b220224000240024020002802002200280200450d002002200128021841a480ca0041042001411c6a28020028020c1100003a000820022001360200200241003a0009200241003602042002200036020c20022002410c6a41ac80ca0010501a20022d0008210120022802042203450d01200141ff0171210041012101024020000d00024020034101470d0020022d000941ff0171450d00200228020022002d00004104710d00410121012000280218419aa0c00041012000411c6a28020028020c1100000d010b2002280200220128021841e7c0c70041012001411c6a28020028020c11000021010b200220013a00080c010b200128021841a880ca0041042001411c6a28020028020c11000021010b200241106a2400200141ff01714100470bc00201057f230041106b22022400024002400240024020002d002c4101710d0002400240200028020022034125490d002000410c6a22042802002105200041086a28020021060c010b200041056a21062003210520002104412421030b024020052003470d0020022000410110a206024020022802004101470d00200241086a2802000d0441b087ca00411141c487ca00103c000b2000410c6a22042802002105200041086a28020021060b200620056a20014104743a00002004200428020041016a3602000c010b02400240200028020022044125490d002000410c6a2802002104200041086a28020021050c010b200041056a21050b2005450d022004450d02200420056a417f6a220420042d00002001723a00000b2000200028022c41016a36022c200241106a24000f0b1039000b41ec82ca00413a41a883ca001068000b882251027f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f027e017f017e017f017e017f017e017f017e017f017e017f027e017f017e017f017e017f037e017f027e017f017e017f017e017f027e017f017e017f017e017f017e017f027e017f017e017f017e017f037e017f027e017f017e017f017e017f037e137f230022022103200241a0046b41607122022400200129030021044200210520014200370300200141386a22062903002107200141306a22082903002109200141286a220a290300210b200141206a290300210c20014198016a220d290300210e20014190016a220f290300211020014188016a2211290300211220014180016a2903002113200141d8016a22142903002115200141d0016a22162903002117200141c8016a22182903002119200141c0016a290300211a20014198026a221b290300211c20014190026a221d290300211e20014188026a221f290300212020014180026a2903002121200141f8026a22222903002123200141f0026a22242903002125200141e8026a22262903002127200141e0026a2903002128200141b8036a2229290300212a200141b0036a222b290300212c200141a8036a222d290300212e200141a0036a222f2903002130200141c0036a2231290300213220014180036a2233290300213420014188036a290300213520014190036a2236290300213720014198036a22382903002139200141c0026a223a290300213b200141c8026a290300213c200141d0026a290300213d200141d8026a223e290300213f200141a0026a2903002140200141a8026a22412903002142200141b0026a22432903002144200141b8026a22452903002146200141e0016a2903002147200141e8016a22482903002149200141f0016a224a290300214b200141f8016a224c290300214d200141a0016a224e290300214f200141a8016a2903002150200141b0016a22512903002152200141b8016a22532903002154200141e0006a22552903002156200141e8006a2903002157200141f0006a2903002158200141f8006a2259290300215a200141c0006a290300215b200141c8006a225c290300215d200141d0006a225e290300215f200141d8006a2260290300216120012903082162200129031021632002200141186a226429030037039801200220633703900120022062370388012002200437038001200220613703182002205f3703102002205d3703082002205b3703002002205a37039804200220583703900420022057370388042002205637038004200220543703f803200220523703f003200220503703e8032002204f3703e0032002204d3703d8032002204b3703d003200220493703c803200220473703c003200220463703b803200220443703b003200220423703a803200220403703a0032002203f370398032002203d370390032002203c370388032002203b37038003200220393703f802200220373703f002200220353703e802200220343703e002410a21650240024002400240024002400240024002402004a70e09080102030405060700080b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241e0016a41086a200229038803370300200241e0016a41106a200229039003370300200241d0016a41086a20022903e802370300200220022903c8033703f80120022002290380033703e001200220022903e0023703d001200220022800f102360278200220022800f40236007b200241c8006a41206a202a370300200241c8006a41186a202c370300200241c8006a41106a202e3703002002203037035020022032370370200220393703482037a72165420721050c070b200241c8006a41186a200b370300200241d0006a200229039801370300200241c8006a41206a2009370300200241c8006a41286a20073703002002200c3703582002200228008c0136007b200220022800890136027820022002290390013703482062a721650c060b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241c8006a41086a2002290310370300200241c8006a41106a2002290318370300200241c8006a41286a200229039004370300200241c8006a41206a20022903880437030020022002290388013703c802200220022800013602782002200228000436007b200220022903083703482002200229038004370360205ba72165420121050c050b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241c8006a41186a200e3703002002201337034820022002290388013703c80220022002290380043703b00220022002280099043602782002200228009c0436007b2002201237035020022010370358200241c8006a41286a20022903e803370300200220022903e003370368205aa72165420221050c040b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022800f40336007b200220022800f103360278200241c8006a41186a2017370300200241c8006a41106a2019370300200241c8006a41206a20153703002002201a37035020022047370370200220543703482052a72165420321050c030b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241c8006a41206a201e370300200241c8006a41186a2020370300200241c8006a41086a20022903d803370300200241c8006a41286a201c37030020022021370358200220022800cc0336007b200220022800c903360278200220022903d0033703482049a72165420421050c020b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241c8006a41086a20022903b003370300200241c8006a41106a20022903b803370300200241c8006a41206a200229038803370300200241c8006a41286a200229039003370300200220022903c8033703f801200220022800a103360278200220022800a40336007b200220022903a80337034820022002290380033703602040a72165420521050c010b200241c8026a41106a200229039801370300200241c8026a41086a200229039001370300200241b0026a41086a200229038804370300200241b0026a41106a200229039004370300200241a0026a41086a20022903e80337030020024190026a41086a20022903f80337030020022002290388013703c80220022002290380043703b002200220022903e0033703a002200220022903f00337039002200241f8016a41106a20022903d803370300200241f8016a41086a20022903d003370300200241e0016a41086a200229038803370300200241e0016a41106a200229039003370300200241c8006a41186a2023370300200220253703582002202737035020022028370348200220022903c8033703f80120022002290380033703e00120022002280099033602782002200228009c0336007b200241c8006a41286a20022903e802370300200220022903e002370368203fa72165420621050b20024180046a41086a2266200241c8026a41086a29030037030020024180046a41106a2267200241c8026a41106a290300370300200220022903c80237038004200241e0036a41086a2268200241b0026a41086a290300370300200241e0036a41106a2269200241b0026a41106a290300370300200220022903b0023703e00320024180036a41086a226a200241a0026a41086a290300370300200220022903a00237038003200241e0026a41086a226b20024190026a41086a29030037030020022002290390023703e002200241c0036a41106a226c200241f8016a41106a290300370300200241c0036a41086a226d200241f8016a41086a290300370300200220022903f8013703c003200241a0036a41106a226e200241e0016a41106a290300370300200241a0036a41086a226f200241e0016a41086a290300370300200220022903e0013703a003200241386a41086a2270200241d0016a41086a290300370300200220022903d001370338200241306a227120024180016a41306a290300370300200241286a227220024180016a41286a290300370300200241206a227320024180016a41206a290300370300200241186a227420024180016a41186a290300370300200241106a227520024180016a41106a290300370300200241086a227620024180016a41086a2903003703002002200229038001370300200020653a0000200041046a200228007b36000020002002280278360001200041306a200241c8006a41286a290300370000200041286a200241c8006a41206a290300370000200041206a200241c8006a41186a290300370000200041186a200241c8006a41106a290300370000200041106a200241c8006a41086a290300370000200041086a2002290348370000200110ad0120602061370300205e205f370300205c205d3703002001205b3703402006200737030020082009370300200a200b3703002001200c370320200d200e370300200f2010370300201120123703002001201337038001200120053703002059205a3703002001200229038004370308200141106a206629030037030020642067290300370300205520022903e003370300205541086a2068290300370300205541106a2069290300370300204e200229038003370300204e41086a206a290300370300200120473703e0012014201537030020162017370300201820193703002001201a3703c001204520463703002043204437030020412042370300200120403703a002201b201c370300201d201e370300201f202037030020012021370380022053206b290300370300205120022903e002370300204820022903c003370300204a206d290300370300204c206c290300370300200120283703e002202620273703002024202537030020222023370300203e203f370300203a41106a206e290300370300203a41086a206f290300370300203a20022903a003370300203341086a2070290300370300203320022903383703002031207129030037030020292072290300370300202b2073290300370300202d2074290300370300202f20752903003703002038207629030037030020362002290300370300200324000b950401017f410021010240024002400240024002400240024002402000280200417f6a0e080001020304050607080b20002d0008450f0b20002d00080d0641014102200041c0006a2d00001b0f0b20002d00080d0541012101200041c0006a2d00000d0541024103200041f8006a2d00001b0f0b20002d00080d0441012101200041c0006a2d00000d0441022101200041f8006a2d00000d0441034104200041b0016a2d00001b0f0b20002d00080d0341012101200041c0006a2d00000d0341022101200041f8006a2d00000d0341032101200041b0016a2d00000d0341044105200041e8016a2d00001b0f0b20002d00080d0241012101200041c0006a2d00000d0241022101200041f8006a2d00000d0241032101200041b0016a2d00000d0241042101200041e8016a2d00000d0241054106200041a0026a2d00001b0f0b20002d00080d0141012101200041c0006a2d00000d0141022101200041f8006a2d00000d0141032101200041b0016a2d00000d0141042101200041e8016a2d00000d0141052101200041a0026a2d00000d0141064107200041d8026a2d00001b0f0b20002d00080d0041012101200041c0006a2d00000d0041022101200041f8006a2d00000d0041032101200041b0016a2d00000d0041042101200041e8016a2d00000d0041052101200041a0026a2d00000d0041062101200041d8026a2d00000d004107410820004190036a2d00001b21010b20010bfe0101027f41002102024020002d0000220320012d0000470d00410121020240024002400240024002402003417f6a0e06000102030405060b4101210220034101470d05200041086a290300200141086a29030085200041106a290300200141106a2903008584500f0b20034102470d0420002800012001280001460f0b20034103470d0320002900012001290001510f0b20034104470d02200041016a200141016a411010c209450f0b20034105470d01200041016a200141016a412010c209450f0b20034106470d00410021022000410c6a28020022032001410c6a280200470d00200041046a280200200141046a280200200310c2094521020b20020bbf0404017f027e097f027e200341d1036a2104200341e0036a2903002105200341d8036a2903002106200341dc036a2802002107200341d4036a280200210820032d00d0032209417f6a210a034020022f01ae2b210b2002210c4100210d024003400240200d220e200b470d00200b210e0c020b024002402003200c10b804220f41ff01710d0002400240024002400240024002402009200c2d00d003220d470d00200a0e06010203040506080b417f41012009200d491b210f0c060b417f2006200c2903d8032210852005200c41e0036a290300221185844200522006201054200520115420052011511b1b210f0c050b2004200c41d1036a410410c209220d450d05417f4101200d4100481b210f0c040b2004200c41d1036a410810c209220d450d04417f4101200d4100481b210f0c030b2004200c41d1036a411010c209220d450d03417f4101200d4100481b210f0c020b2004200c41d1036a412010c209220d450d02417f4101200d4100481b210f0c010b02402008200c41d4036a280200200c41dc036a280200220d20072007200d4b1b10c209220f0d00417f2007200d472007200d491b210f0c010b417f4101200f4100481b210f0b200e41016a210d200c41f8036a210c200f41187441187541016a0e03020001020b0b20002001360204200041003602002000410c6a200e360200200041086a20023602000f0b02402001450d002001417f6a21012002200e4102746a41b02b6a28020021020c010b0b200042013702002000410c6a200e360200200041086a20023602000b952f01017f230041d00a6b22022400024020002802000d00200041086a2100024002400240024002400240024002400240024020012802000e09010203040506070800010b200241c8036a200141086a10bf0420024180046a200141c0006a10bf04200241b8046a200141f8006a10bf04200241f0046a200141b0016a10bf04200241a8056a200141e8016a10bf04200241e0056a200141a0026a10bf0420024198066a200141d8026a10bf04200241d0066a20014190036a10bf04200241c0076a200241c8036a41306a29030037030020024188076a41306a200241c8036a41286a29030037030020024188076a41286a200241c8036a41206a29030037030020024188076a41206a200241c8036a41186a29030037030020024188076a41186a200241c8036a41106a29030037030020024188076a41106a200241c8036a41086a29030037030020024188076a41c0006a200229038004370300200241d0076a20024180046a41086a290300370300200241d8076a20024180046a41106a290300370300200241e0076a20024180046a41186a290300370300200241e8076a20024180046a41206a290300370300200241f0076a20024180046a41286a290300370300200241f8076a20024180046a41306a290300370300200220022903c80337039007200241b0086a200241b8046a41306a290300370300200241a8086a200241b8046a41286a290300370300200241a0086a200241b8046a41206a29030037030020024198086a200241b8046a41186a29030037030020024190086a200241b8046a41106a29030037030020024188086a200241b8046a41086a29030037030020024188076a41f8006a20022903b804370300200241e8086a200241f0046a41306a290300370300200241e0086a200241f0046a41286a290300370300200241d8086a200241f0046a41206a290300370300200241d0086a200241f0046a41186a290300370300200241c8086a200241f0046a41106a290300370300200241c0086a200241f0046a41086a29030037030020024188076a41b0016a20022903f004370300200241a0096a200241a8056a41306a29030037030020024198096a200241a8056a41286a29030037030020024190096a200241a8056a41206a29030037030020024188096a200241a8056a41186a29030037030020024180096a200241a8056a41106a290300370300200241f8086a200241a8056a41086a29030037030020024188076a41e8016a20022903a805370300200241d8096a200241e0056a41306a290300370300200241d0096a200241e0056a41286a290300370300200241c8096a200241e0056a41206a290300370300200241c0096a200241e0056a41186a290300370300200241b8096a200241e0056a41106a290300370300200241b0096a200241e0056a41086a29030037030020024188076a41a0026a20022903e005370300200241900a6a20024198066a41306a290300370300200241880a6a20024198066a41286a290300370300200241800a6a20024198066a41206a290300370300200241f8096a20024198066a41186a290300370300200241f0096a20024198066a41106a290300370300200241e8096a20024198066a41086a29030037030020024188076a41d8026a200229039806370300200241c80a6a200241d0066a41306a290300370300200241c00a6a200241d0066a41286a290300370300200241b80a6a200241d0066a41206a290300370300200241b00a6a200241d0066a41186a290300370300200241a80a6a200241d0066a41106a290300370300200241a00a6a200241d0066a41086a29030037030020024188076a4190036a20022903d00637030020024208370388070c080b20024200370388070c070b200241d0066a200141086a10bf04200241c0076a200241d0066a41306a29030037030020024188076a41306a200241d0066a41286a29030037030020024188076a41286a200241d0066a41206a29030037030020024188076a41206a200241d0066a41186a29030037030020024188076a41186a200241d0066a41106a29030037030020024188076a41106a200241d0066a41086a2903003703002002420137038807200220022903d006370390070c060b20024198066a200141086a10bf04200241d0066a200141c0006a10bf04200241c0076a20024198066a41306a29030037030020024188076a41306a20024198066a41286a29030037030020024188076a41286a20024198066a41206a29030037030020024188076a41206a20024198066a41186a29030037030020024188076a41186a20024198066a41106a29030037030020024188076a41106a20024198066a41086a29030037030020024188076a41c0006a20022903d006370300200241d0076a200241d0066a41086a290300370300200241d8076a200241d0066a41106a290300370300200241e0076a200241d0066a41186a290300370300200241e8076a200241d0066a41206a290300370300200241f0076a200241d0066a41286a290300370300200241f8076a200241d0066a41306a29030037030020022002290398063703900720024202370388070c050b200241e0056a200141086a10bf0420024198066a200141c0006a10bf04200241d0066a200141f8006a10bf04200241c0076a200241e0056a41306a29030037030020024188076a41306a200241e0056a41286a29030037030020024188076a41286a200241e0056a41206a29030037030020024188076a41206a200241e0056a41186a29030037030020024188076a41186a200241e0056a41106a29030037030020024188076a41106a200241e0056a41086a29030037030020024188076a41c0006a200229039806370300200241d0076a20024198066a41086a290300370300200241d8076a20024198066a41106a290300370300200241e0076a20024198066a41186a290300370300200241e8076a20024198066a41206a290300370300200241f0076a20024198066a41286a290300370300200241f8076a20024198066a41306a290300370300200220022903e00537039007200241b0086a200241d0066a41306a290300370300200241a8086a200241d0066a41286a290300370300200241a0086a200241d0066a41206a29030037030020024198086a200241d0066a41186a29030037030020024190086a200241d0066a41106a29030037030020024188086a200241d0066a41086a29030037030020024188076a41f8006a20022903d00637030020024203370388070c040b200241a8056a200141086a10bf04200241e0056a200141c0006a10bf0420024198066a200141f8006a10bf04200241d0066a200141b0016a10bf04200241c0076a200241a8056a41306a29030037030020024188076a41306a200241a8056a41286a29030037030020024188076a41286a200241a8056a41206a29030037030020024188076a41206a200241a8056a41186a29030037030020024188076a41186a200241a8056a41106a29030037030020024188076a41106a200241a8056a41086a29030037030020024188076a41c0006a20022903e005370300200241d0076a200241e0056a41086a290300370300200241d8076a200241e0056a41106a290300370300200241e0076a200241e0056a41186a290300370300200241e8076a200241e0056a41206a290300370300200241f0076a200241e0056a41286a290300370300200241f8076a200241e0056a41306a290300370300200220022903a80537039007200241b0086a20024198066a41306a290300370300200241a8086a20024198066a41286a290300370300200241a0086a20024198066a41206a29030037030020024198086a20024198066a41186a29030037030020024190086a20024198066a41106a29030037030020024188086a20024198066a41086a29030037030020024188076a41f8006a200229039806370300200241e8086a200241d0066a41306a290300370300200241e0086a200241d0066a41286a290300370300200241d8086a200241d0066a41206a290300370300200241d0086a200241d0066a41186a290300370300200241c8086a200241d0066a41106a290300370300200241c0086a200241d0066a41086a29030037030020024188076a41b0016a20022903d00637030020024204370388070c030b200241f0046a200141086a10bf04200241a8056a200141c0006a10bf04200241e0056a200141f8006a10bf0420024198066a200141b0016a10bf04200241d0066a200141e8016a10bf04200241c0076a200241f0046a41306a29030037030020024188076a41306a200241f0046a41286a29030037030020024188076a41286a200241f0046a41206a29030037030020024188076a41206a200241f0046a41186a29030037030020024188076a41186a200241f0046a41106a29030037030020024188076a41106a200241f0046a41086a29030037030020024188076a41c0006a20022903a805370300200241d0076a200241a8056a41086a290300370300200241d8076a200241a8056a41106a290300370300200241e0076a200241a8056a41186a290300370300200241e8076a200241a8056a41206a290300370300200241f0076a200241a8056a41286a290300370300200241f8076a200241a8056a41306a290300370300200220022903f00437039007200241b0086a200241e0056a41306a290300370300200241a8086a200241e0056a41286a290300370300200241a0086a200241e0056a41206a29030037030020024198086a200241e0056a41186a29030037030020024190086a200241e0056a41106a29030037030020024188086a200241e0056a41086a29030037030020024188076a41f8006a20022903e005370300200241e8086a20024198066a41306a290300370300200241e0086a20024198066a41286a290300370300200241d8086a20024198066a41206a290300370300200241d0086a20024198066a41186a290300370300200241c8086a20024198066a41106a290300370300200241c0086a20024198066a41086a29030037030020024188076a41b0016a200229039806370300200241a0096a200241d0066a41306a29030037030020024198096a200241d0066a41286a29030037030020024190096a200241d0066a41206a29030037030020024188096a200241d0066a41186a29030037030020024180096a200241d0066a41106a290300370300200241f8086a200241d0066a41086a29030037030020024188076a41e8016a20022903d00637030020024205370388070c020b200241b8046a200141086a10bf04200241f0046a200141c0006a10bf04200241a8056a200141f8006a10bf04200241e0056a200141b0016a10bf0420024198066a200141e8016a10bf04200241d0066a200141a0026a10bf04200241c0076a200241b8046a41306a29030037030020024188076a41306a200241b8046a41286a29030037030020024188076a41286a200241b8046a41206a29030037030020024188076a41206a200241b8046a41186a29030037030020024188076a41186a200241b8046a41106a29030037030020024188076a41106a200241b8046a41086a29030037030020024188076a41c0006a20022903f004370300200241d0076a200241f0046a41086a290300370300200241d8076a200241f0046a41106a290300370300200241e0076a200241f0046a41186a290300370300200241e8076a200241f0046a41206a290300370300200241f0076a200241f0046a41286a290300370300200241f8076a200241f0046a41306a290300370300200220022903b80437039007200241b0086a200241a8056a41306a290300370300200241a8086a200241a8056a41286a290300370300200241a0086a200241a8056a41206a29030037030020024198086a200241a8056a41186a29030037030020024190086a200241a8056a41106a29030037030020024188086a200241a8056a41086a29030037030020024188076a41f8006a20022903a805370300200241e8086a200241e0056a41306a290300370300200241e0086a200241e0056a41286a290300370300200241d8086a200241e0056a41206a290300370300200241d0086a200241e0056a41186a290300370300200241c8086a200241e0056a41106a290300370300200241c0086a200241e0056a41086a29030037030020024188076a41b0016a20022903e005370300200241a0096a20024198066a41306a29030037030020024198096a20024198066a41286a29030037030020024190096a20024198066a41206a29030037030020024188096a20024198066a41186a29030037030020024180096a20024198066a41106a290300370300200241f8086a20024198066a41086a29030037030020024188076a41e8016a200229039806370300200241d8096a200241d0066a41306a290300370300200241d0096a200241d0066a41286a290300370300200241c8096a200241d0066a41206a290300370300200241c0096a200241d0066a41186a290300370300200241b8096a200241d0066a41106a290300370300200241b0096a200241d0066a41086a29030037030020024188076a41a0026a20022903d00637030020024206370388070c010b20024180046a200141086a10bf04200241b8046a200141c0006a10bf04200241f0046a200141f8006a10bf04200241a8056a200141b0016a10bf04200241e0056a200141e8016a10bf0420024198066a200141a0026a10bf04200241d0066a200141d8026a10bf04200241c0076a20024180046a41306a29030037030020024188076a41306a20024180046a41286a29030037030020024188076a41286a20024180046a41206a29030037030020024188076a41206a20024180046a41186a29030037030020024188076a41186a20024180046a41106a29030037030020024188076a41106a20024180046a41086a29030037030020024188076a41c0006a20022903b804370300200241d0076a200241b8046a41086a290300370300200241d8076a200241b8046a41106a290300370300200241e0076a200241b8046a41186a290300370300200241e8076a200241b8046a41206a290300370300200241f0076a200241b8046a41286a290300370300200241f8076a200241b8046a41306a290300370300200220022903800437039007200241b0086a200241f0046a41306a290300370300200241a8086a200241f0046a41286a290300370300200241a0086a200241f0046a41206a29030037030020024198086a200241f0046a41186a29030037030020024190086a200241f0046a41106a29030037030020024188086a200241f0046a41086a29030037030020024188076a41f8006a20022903f004370300200241e8086a200241a8056a41306a290300370300200241e0086a200241a8056a41286a290300370300200241d8086a200241a8056a41206a290300370300200241d0086a200241a8056a41186a290300370300200241c8086a200241a8056a41106a290300370300200241c0086a200241a8056a41086a29030037030020024188076a41b0016a20022903a805370300200241a0096a200241e0056a41306a29030037030020024198096a200241e0056a41286a29030037030020024190096a200241e0056a41206a29030037030020024188096a200241e0056a41186a29030037030020024180096a200241e0056a41106a290300370300200241f8086a200241e0056a41086a29030037030020024188076a41e8016a20022903e005370300200241d8096a20024198066a41306a290300370300200241d0096a20024198066a41286a290300370300200241c8096a20024198066a41206a290300370300200241c0096a20024198066a41186a290300370300200241b8096a20024198066a41106a290300370300200241b0096a20024198066a41086a29030037030020024188076a41a0026a200229039806370300200241900a6a200241d0066a41306a290300370300200241880a6a200241d0066a41286a290300370300200241800a6a200241d0066a41206a290300370300200241f8096a200241d0066a41186a290300370300200241f0096a200241d0066a41106a290300370300200241e8096a200241d0066a41086a29030037030020024188076a41d8026a20022903d00637030020024207370388070b2002200020024188076a10bd0620022903004209510d0020024188076a200241c80310bf091a20024188076a10ad010b200241d00a6a24000b9003000240024020002802000d0002400240024002400240024002400240200041086a2802000e080900010203040506070b200041106a10ca040f0b200041106a10ca04200041c8006a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca04200041b8016a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca04200041b8016a10ca04200041f0016a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca04200041b8016a10ca04200041f0016a10ca04200041a8026a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca04200041b8016a10ca04200041f0016a10ca04200041a8026a10ca04200041e0026a10ca040f0b200041106a10ca04200041c8006a10ca0420004180016a10ca04200041b8016a10ca04200041f0016a10ca04200041a8026a10ca04200041e0026a10ca0420004198036a10ca040f0b200041086a280200450d00200028020410310b0b9114030d7f027e067f23004180126b22032400200041d8036a2802002104200041d4036a280200210520002802d0032106200341d0036a200041d00310bf091a024002400240024002400240024002400240024002400240024002400240024002400240024020052f01a6292207410a4b0d00200741016a2108200341b00e6a200341d0036a41d00310bf091a2005200441d0036c6a2109200441016a220a20074d0d012009200341b00e6a41d00310bf091a200541f0276a21070c020b410521074100210b02400240200441054f0d0041042107200421080c010b41052108024002402004417b6a0e020201000b200441796a21084101210b410621070c010b410021084101210b0b41a829102f220c450d05200c41003b01a629200c41003602a029200c20052f01a629220a2007417f736a22043b01a6292005200741d0036c6a2209280204210d2009280200210e200341b00e6a200941086a41c80310bf091a2004410c4f0d06200a200741016a22096b2004470d07200541f0276a220f20074104746a220a41086a2903002110200a2903002111200c2005200941d0036c6a200441d0036c10bf09220a41f0276a200f20094104746a200441047410bf091a200520073b01a629200341e80a6a200341b00e6a41c80310bf091a200a2005200b1b22042f01a6292107200341b00e6a200341d0036a41d00310bf091a2004200841d0036c6a2109200741016a210b02400240200841016a220f20074d0d002009200341b00e6a41d00310bf091a200441f0276a21070c010b2004200f41d0036c6a2009200720086b41d0036c10c0091a2009200341b00e6a41d00310bf091a200441f0276a2207200f4104746a200720084104746a200b2008417f736a41047410c0091a0b200720084104746a22122002370308201220013703002004200b3b01a629200341a0076a200341e80a6a41c80310bf091a200341086a200341a0076a41c80310bf091a20052802a029220b0d02410021060c030b2005200a41d0036c6a2009200720046b41d0036c10c0091a2009200341b00e6a41d00310bf091a200541f0276a2207200a4104746a200720044104746a20082004417f736a41047410c0091a0b200720044104746a2212200237030820122001370300200520083b01a6290c0e0b201121012010210241002107200a2113200d2114200e2115034020052f01a4292109200341e80a6a200341086a41c80310bf091a20062007470d06200b2f01a629220f410b490d024100210a41042105024020094105490d0020092105024002402009417b6a0e020201000b200941796a21094101210a410621050c010b410021094101210a410521050b41d829102f220c450d03200c41003b01a629200c41003602a029200c200b2f01a62922162005417f736a22073b01a629200b200541d0036c6a2204280204210d2004280200210e200341b00e6a200441086a41c80310bf091a2007410c4f0d072016200541016a22086b2007470d08200b41f0276a221620054104746a221741086a290300211020172903002111200c200441d0036a200741d0036c10bf09220441f0276a201620084104746a200741047410bf091a200b20053b01a629200341d0036a200341b00e6a41c80310bf091a20042f01a629220741016a21162007410c4f0d09200f20056b22052016470d0a200641016a2106200441a8296a200b20084102746a41a8296a200541027410bf091a4100210502400340200420054102746a41a8296a280200220820053b01a429200820043602a0292005200520074922086a220520074b0d0120080d000b0b200341a0076a200341d0036a41c80310bf091a2004200b200a1b22082f01a6292107200341b00e6a200341e80a6a41c80310bf091a0240200941016a220520074b22160d002008200541d0036c6a2008200941d0036c6a200720096b41d0036c10c0091a0b200741016a210a2008200941d0036c6a220f2014360204200f2015360200200f41086a200341b00e6a41c80310bf091a200841f0276a210f024020160d00200f20054104746a200f20094104746a2009417f73200a6a41047410c0091a0b200f20094104746a220f2002370308200f2001370300200841a8296a210f0240200941026a2214200741026a22074f0d00200f20144102746a200f20054102746a2005417f7320076a41027410c0091a0b200f20054102746a20133602002008200a3b01a6290240200520074f0d00200820094102746a41ac296a2105034020052802002207200941016a22093b01a429200720083602a029200541046a2105200a2009470d000b0b200341086a200341a0076a41c80310bf091a200b2105200b2802a0292208210b20112101201021022006210720042113200d2114200e211520080d000b0b200341e80a6a200341086a41c80310bf091a200341d0036a200341e80a6a41c80310bf091a20002802dc0322042802042207450d092004280200210841d829102f2205450d01200520073602a829200541003b01a629200541003602a029200741003b01a429200720053602a029200420053602042004200841016a360200200341b00e6a200341d0036a41c80310bf091a20082006470d0a20052f01a6292207410b4f0d0b2005200741016a22083b01a6292005200741d0036c6a2209200d3602042009200e360200200941086a200341b00e6a41c80310bf091a200520074104746a220741f8276a2010370300200741f0276a2011370300200520084102746a41a8296a200c360200200c20083b01a429200c20053602a0292004200428020841016a3602080c0d0b200b2f01a6292104200341b00e6a200341e80a6a41c80310bf091a200941016a21050240200420094d22070d00200b200541d0036c6a200b200941d0036c6a200420096b41d0036c10c0091a0b200441016a210a200b200941d0036c6a2208201436020420082015360200200841086a200341b00e6a41c80310bf091a200b41f0276a2108024020070d00200820054104746a200820094104746a2009417f73200a6a41047410c0091a0b200820094104746a2208200237030820082001370300200b41a8296a2108200441026a210c024020070d00200941027420086a41086a200820054102746a2005417f73200c6a41027410c0091a0b200820054102746a2013360200200b200a3b01a6292005200c4f0d0b200441016a2108200b2005417f6a22054102746a41ac296a2104034020042802002207200541016a22053b01a4292007200b3602a029200441046a210420082005470d000c0c0b0b1039000b2004410b419c90ca001058000b41ac90ca00412841d490ca00103c000b41e490ca004135419c91ca00103c000b2007410b419c90ca001058000b41ac90ca00412841d490ca00103c000b2016410c41ac91ca001058000b41ac90ca00412841d490ca00103c000b418a98ca00412b41b898ca00103c000b41e48dca00413041948eca00103c000b41a48eca00412041c48eca00103c000b20002802dc032205200528020841016a3602080b20034180126a240020120b940301077f230041f00b6b22012400200028020421022000410036020402402002450d00024020002802182203450d00200028020821042000280200210020014180046a41047221050340410120006b21002003417f6a2103024002400340200420022f01ae2b490d01024020022802a82b22060d0020021031410221060c030b20022f01ac2b2104200210312000417f6a2100200621020c000b0b2002200441f8036c6a2207280200210620014180046a200741046a41f40310bf091a200441016a2104024020004101460d00200220044102746a41b02b6a280200210202402000450d0041002104034020022802b02b210220002004417f6a2204470d000b0b410021040b200141fc076a20014180046a41f40310bf091a0b2001410c6a200141fc076a41f40310bf091a200120063602800420052001410c6a41f40310bf091a20014180046a10b209024020012d00d0074106490d0020012802d807450d0020012802d40710310b4100210020030d000b0b034020022802a82b2100200210312000210220000d000b0b200141f00b6a24000bc10502077f037e230041f0076b220524000240024020012802042206450d0020012802002107034020062f01a629220841d0036c2101417f21092006210a02400340024020010d00200821090c020b200941016a2109200141b07c6a21012002200a10b804210b200a41d0036a210a0240200b41187441187541016a0e03020001020b0b200620094104746a220141f0276a220a290300220c20037d220d200c56200141f8276a290300220e20047d200c200354ad7d220c200e56200c200e511b0d02200a200d370300200a200c37030841082101200541206a41086a22092002410c6a28020036020020052002290204370320200241186a290200210c200241106a290200210e2002280200210a200541f8036a200241206a41b00310bf091a02400240200a4101470d00200541e8036a41086a2009280200360200200520052903203703e8032003210e2004210c0c010b200520052902243702ec03200541386a200541f8036a41b00310bf091a410a21010b200541086a41106a220a42003703002005420037020c20054190046a200c370300200541f8036a41106a200e370300200541f8036a410c6a200541e8036a41086a280200360200200520013602f803200520052903e8033702fc0320054198046a200541386a41b00310bf091a200541d0076a2004370300200541c8076a2003370300200541d8076a2005290320370300200541e0076a200541206a41086a290300370300200541e8076a200541206a41106a290300370300200541086a200541f8036a10db05200041146a200a2903003702002000410c6a200529031037020020002005290308370204200041003602000c030b2007450d012007417f6a2107200620094102746a41a8296a28020021060c000b0b20004101360200200241086a2101024020022802000d00200110ad010c010b2001280200450d00200228020410310b200541f0076a24000bba2209037f3c7e027f027e027f017e017f017e017f230041800d6b22042400200441086a200241d00310bf091a200441f8036a200341206a290300370300200441f0036a200341186a290300370300200441e8036a200341106a290300370300200441e0036a200341086a290300370300200420032903003703d8030240024002400240200141106a2802002203450d00200441c8086a200128020c2003200441086a10b00920042802c8084101460d00200441d4086a2802002105200441d0086a280200210620042802cc082103200441003a00df08024002402003450d002003417f6a2102200620054102746a41b02b6a28020021030240034020032f01ae2b21052002450d012002417f6a2102200320054102746a41b02b6a28020021030c000b0b200441003602a80420042005417f6a410020051b3602b00420042003410020051b3602ac04200441f8086a200441a8046a200441df086a10f207200441e8086a200441e00c6a290300370300200441f0086a200441e80c6a2903003703002004200441d80c6a2903003703e00820044190096a2903002107200441b0096a2903002108200441a8096a2903002109200441a0096a290300210a20044198096a290300210b200441d0096a290300210c200441c8096a290300210d200441c0096a290300210e200441b8096a290300210f200441f0096a2903002110200441e8096a2903002111200441e0096a2903002112200441d8096a2903002113200441900a6a2903002114200441880a6a2903002115200441800a6a2903002116200441f8096a2903002117200441b00a6a2903002118200441a80a6a2903002119200441a00a6a290300211a200441980a6a290300211b200441d00a6a290300211c200441c80a6a290300211d200441c00a6a290300211e200441b80a6a290300211f200441f00a6a2903002120200441e80a6a2903002121200441e00a6a2903002122200441d80a6a2903002123200441900b6a2903002124200441880b6a2903002125200441800b6a2903002126200441f80a6a2903002127200441b00b6a2903002128200441a80b6a2903002129200441a00b6a290300212a200441980b6a290300212b200441d00b6a290300212c200441c80b6a290300212d200441c00b6a290300212e200441b80b6a290300212f200441f00b6a2903002130200441e80b6a2903002131200441e00b6a2903002132200441d80b6a2903002133200441900c6a2903002134200441880c6a2903002135200441800c6a2903002136200441f80b6a2903002137200441b00c6a2903002138200441a80c6a2903002139200441a00c6a290300213a200441980c6a290300213b200441d00c6a290300213c200441c80c6a290300213d200441c00c6a290300213e200441b80c6a290300213f2004290388092140200429038009214120042903f808214220042802f00c210602400240200441f80c6a2802002205200441f40c6a28020022032f01ae2b4f0d00200321020c010b0340024020032802a82b22020d00410021020c020b200641016a210620032f01ac2b210520022103200520022f01ae2b4f0d000b0b200441a8046a41106a2243200441e0086a41106a290300370300200441a8046a41086a2244200441e0086a41086a2903003703002002200541f8036c6a220329031021452003204037031020032903082146200320413703082003290300214020032042370300200329022021412003200b3702202003290240210b2003200f3702402003290260210f200320133702602003290280012113200320173702800120032902a00121172003201b3702a001200341186a2247290300211b20472007370300200341386a2247290200210720472008370200200341306a2247290200210820472009370200200341286a224729020021092047200a370200200341d8006a2247290200210a2047200c370200200341d0006a2247290200210c2047200d370200200341c8006a2247290200210d2047200e370200200341f8006a2247290200210e20472010370200200341f0006a2247290200211020472011370200200341e8006a224729020021112047201237020020034198016a224729020021122047201437020020034190016a224729020021142047201537020020034188016a2247290200211520472016370200200341b8016a2247290200211620472018370200200341b0016a2247290200211820472019370200200341a8016a224729020021192047201a370200200420042903e0083703a80420032902c001211a200341d8016a22472902002142200341d0016a22482902002149200341c8016a224a290200214b2047201c3702002048201d370200204a201e3702002003201f3702c001200341f8016a2247290200211c20472020370200200341f0016a2247290200211d20472021370200200341e8016a2247290200211e2047202237020020032902e001211f200320233702e00120034198026a224729020021202047202437020020034190026a224729020021212047202537020020034188026a224729020021222047202637020020032902800221232003202737028002200341b8026a22472902002124200341b0026a22482902002125200341a8026a224a290200212620032902a00221272047202837020020482029370200204a202a3702002003202b3702a002200341d8026a22472902002128200341d0026a22482902002129200341c8026a224a290200212a20032902c002212b2047202c3702002048202d370200204a202e3702002003202f3702c002200341f8026a2247290200212c200341f0026a2248290200212d200341e8026a224a290200212e20032902e002212f2047203037020020482031370200204a2032370200200320333702e00220034198036a2247290200213020034190036a2248290200213120034188036a224a290200213220032902800321332047203437020020482035370200204a20363702002003203737028003200341b8036a22472902002134200341b0036a22482902002135200341a8036a224a290200213620032902a00321372047203837020020482039370200204a203a3702002003203b3702a003200341d8036a22472902002138200341d0036a22482902002139200341c8036a224a290200213a20032902c003213b2047203c3702002048203d370200204a203e3702002003203f3702c003200441f8086a41106a2247200341f0036a2248290000370300200441f8086a41086a224a200341e8036a224c290000370300200420032900e0033703f80820482043290300370000204c2044290300370000200320042903a8043700e00320044180046a41086a2243204a29030037030020044180046a41106a22442047290300370300200420042903f80837038004200541016a210302402006450d00200220034102746a41b02b6a280200210202402006417f6a2203450d00034020022802b02b21022003417f6a22030d000b0b410021030b200441f8086a41c8036a203a370300200441b80c6a203b370300200441f8086a41a8036a2036370300200441980c6a2037370300200441f8086a4188036a2032370300200441f80b6a2033370300200441f8086a41e8026a202e370300200441d80b6a202f370300200441f8086a41c8026a202a370300200441b80b6a202b370300200441f8086a41a8026a2026370300200441980b6a2027370300200441f8086a4188026a2022370300200441f80a6a2023370300200441f8086a41e8016a201e370300200441d80a6a201f370300200441f8086a41c8016a204b370300200441b80a6a201a370300200441f8086a41a8016a2019370300200441980a6a2017370300200441f8086a4188016a2015370300200441f8096a2013370300200441f8086a41e8006a2011370300200441d8096a200f370300200441f8086a41c8006a200d370300200441b8096a200b370300200441f8086a41286a200937030020044198096a2041370300200441d80c6a200429038004370300200441f8086a41d0036a2039370300200441f8086a41b0036a2035370300200441f8086a4190036a2031370300200441f8086a41f0026a202d370300200441f8086a41d0026a2029370300200441f8086a41b0026a2025370300200441f8086a4190026a2021370300200441f8086a41f0016a201d370300200441f8086a41d0016a2049370300200441f8086a41b0016a2018370300200441f8086a4190016a2014370300200441f8086a41f0006a2010370300200441f8086a41d0006a200c370300200441f8086a41306a2008370300200441f8086a41e8036a2043290300370300200441f8086a41f0036a2044290300370300200441f8086a41d8036a2038370300200441f8086a41b8036a2034370300200441f8086a4198036a2030370300200441f8086a41f8026a202c370300200441f8086a41d8026a2028370300200441f8086a41b8026a2024370300200441f8086a4198026a2020370300200441f8086a41f8016a201c370300200441f8086a41d8016a2042370300200441f8086a41b8016a2016370300200441f8086a4198016a2012370300200441f8086a41f8006a200e370300200441f8086a41d8006a200a370300200441f8086a41386a2007370300200420403703f808200441f8086a41186a201b37030020042046370380092004204537038809200441f80c6a2003360200200441f40c6a2002360200200441003602f00c2040a721020c010b200420053602b004200420063602ac04200441003602a804200441f8086a200441a8046a200441df086a10f20720042802f80821020b200441d0046a200441f8086a41047241f40310bf091a200141146a22032003280200417f6a360200024020042d00df08450d0020012802102203450d03200128020c2206450d0420032802b02b210520012006417f6a36020c20012005360210200541003602a82b200310310b20024102460d00200441086a41d0036a2103200420023602f808200441f8086a410472200441d0046a41f40310bf091a200441f8086a10b209024020042d00c80c4106490d00200441d00c6a280200450d00200441cc0c6a28020010310b20042802082102200441f8086a200441086a41047241cc0310bf091a200441a8046a41206a2205200341206a290300370300200441a8046a41186a2201200341186a290300370300200441a8046a41106a2206200341106a290300370300200441a8046a41086a2243200341086a290300370300200420032903003703a8040240024020024101470d00200441d0046a41086a200441f8086a41086a280200360200200441e4046a2043290300370200200441ec046a2006290300370200200441f4046a2001290300370200200441fc046a2005290300370200200420042902f8083703d004200420042903a8043702dc04410921030c010b200441d0046a41046a200441f8086a41046a41c80310bf091a20044180046a41206a200529030037030020044180046a41186a200129030037030020044180046a41106a200629030037030020044180046a41086a2043290300370300200420042903a80437038004410b21030b200441e0086a41106a22024200370300200442003702e408200420033602f808200441f8086a410472200441d0046a41cc0310bf091a200441e80c6a200441a0046a290300370300200441e00c6a20044198046a290300370300200441d80c6a20044180046a41106a290300370300200441d00c6a20044188046a290300370300200441c80c6a200429038004370300200441e0086a200441f8086a10db05200041146a20022903003702002000410c6a20042903e808370200200020042903e008370204200041003602000c010b200041013602000240024020042802080d00200441086a41086a10ad010c010b2004280210450d00200428020c10310b20042d00d8034106490d00200441e0036a280200450d00200441dc036a28020010310b200441800d6a24000f0b418a98ca00412b41e499ca00103c000b41e98fca004121418c90ca00103c000bb81a02087f3e7e230041c0046b220324000240024020012802042204450d0020012802002105034020042f01a629220641d0036c210741002108417f210902400340024020072008470d00200621090c020b200420086a210a200941016a2109200841d0036a210802402002200a10b80441187441187541016a0e03020001020b0b200341003a000f024002402005450d002005417f6a210a200420094102746a41a8296a28020021080240034020082f01a6292109200a450d01200a417f6a210a200820094102746a41a8296a28020021080c000b0b200341003602b00420032009417f6a410020091b3602b80420032008410020091b3602b404200341206a200341b0046a2003410f6a108a08200341186a200341e8036a2903003703002003200341e0036a290300370310200341386a290300210b200341d8006a290300210c200341d0006a290300210d200341c8006a290300210e200341c0006a290300210f200341f8006a2903002110200341f0006a2903002111200341e8006a2903002112200341e0006a290300211320034198016a290300211420034190016a290300211520034188016a290300211620034180016a2903002117200341b8016a2903002118200341b0016a2903002119200341a8016a290300211a200341a0016a290300211b200341d8016a290300211c200341d0016a290300211d200341c8016a290300211e200341c0016a290300211f200341f8016a2903002120200341f0016a2903002121200341e8016a2903002122200341e0016a290300212320034198026a290300212420034190026a290300212520034188026a290300212620034180026a2903002127200341b8026a2903002128200341b0026a2903002129200341a8026a290300212a200341a0026a290300212b200341d8026a290300212c200341d0026a290300212d200341c8026a290300212e200341c0026a290300212f200341f8026a2903002130200341f0026a2903002131200341e8026a2903002132200341e0026a290300213320034198036a290300213420034190036a290300213520034188036a290300213620034180036a2903002137200341b8036a2903002138200341b0036a2903002139200341a8036a290300213a200341a0036a290300213b200341d8036a290300213c200341d0036a290300213d200341c8036a290300213e200341c0036a290300213f200329033021402003290328214120032903202142200341f8036a290300214320032903f003214420032802800421040240024020034188046a280200220920034184046a28020022082f01a6294f0d002008210a0c010b0340024020082802a029220a0d004100210a0c020b200441016a210420082f01a4292109200a21082009200a2f01a6294f0d000b0b200341a0046a41086a2205200341106a41086a290300370300200320032903103703a004200a200941d0036c6a220841186a220729030021452007200b3703002008290310210b2008204037031020082903082140200820413703082008290300214120082042370300200841386a220729020021422007200c370200200841306a2207290200210c2007200d370200200841286a2207290200210d2007200e3702002008290220210e2008200f370220200841d8006a2207290200210f20072010370200200841d0006a2207290200211020072011370200200841c8006a22072902002111200720123702002008290240211220082013370240200841f8006a2207290200211320072014370200200841f0006a2207290200211420072015370200200841e8006a2207290200211520072016370200200829026021162008201737026020084198016a220729020021172007201837020020084190016a220729020021182007201937020020084188016a220729020021192007201a370200200829028001211a2008201b37028001200841b8016a2207290200211b2007201c370200200841b0016a2207290200211c2007201d370200200841a8016a2207290200211d2007201e37020020082902a001211e2008201f3702a001200841d8016a2207290200211f20072020370200200841d0016a2207290200212020072021370200200841c8016a220729020021212007202237020020082902c0012122200820233702c001200841f8016a2207290200212320072024370200200841f0016a2207290200212420072025370200200841e8016a220729020021252007202637020020082902e0012126200820273702e00120084198026a220729020021272007202837020020084190026a220729020021282007202937020020084188026a220729020021292007202a370200200829028002212a2008202b37028002200841b8026a2207290200212b200841b0026a22022902002146200841a8026a2206290200214720082902a00221482007202c3702002002202d3702002006202e3702002008202f3702a002200841d8026a2207290200212c20072030370200200841d0026a2207290200212d20072031370200200841c8026a2207290200212e2007203237020020082902c002212f200820333702c002200841f8026a2207290200213020072034370200200841f0026a2207290200213120072035370200200841e8026a220729020021322007203637020020082902e0022133200820373702e00220084198036a2207290200213420084190036a2202290200213520084188036a22062902002136200829028003213720072038370200200220393702002006203a3702002008203b37028003200841b8036a22072902002138200841b0036a22022902002139200841a8036a2206290200213a20082902a003213b2007203c3702002002203d3702002006203e3702002008203f3702a003200341206a41086a2207200841c8036a2202290200370300200320082902c00337032020022005290300370200200820032903a0043702c003200341b0046a41086a22082007290300370300200320032903203703b004200a20094104746a220541f0276a2207290300213c20072044370300200541f8276a2205290300213d2005204337030020034190046a41086a22052008290300370300200320032903b00437039004200941016a210802402004450d00200a20084102746a41a8296a280200210a02402004417f6a2208450d000340200a2802a829210a2008417f6a22080d000b0b410021080b200341206a41a8036a203a370300200341c0036a203b370300200341206a4188036a2036370300200341a0036a2037370300200341206a41e8026a203237030020034180036a2033370300200341206a41c8026a202e370300200341e0026a202f370300200341206a41a8026a2047370300200341c0026a2048370300200341206a4188026a2029370300200341a0026a202a370300200341206a41e8016a202537030020034180026a2026370300200341206a41c8016a2021370300200341e0016a2022370300200341206a41a8016a201d370300200341c0016a201e370300200341206a4188016a2019370300200341a0016a201a370300200341206a41e8006a201537030020034180016a2016370300200341206a41c8006a2011370300200341e0006a2012370300200341206a41286a200d370300200341c0006a200e370300200341e0036a200329039004370300200341206a41b0036a2039370300200341206a4190036a2035370300200341206a41f0026a2031370300200341206a41d0026a202d370300200341206a41b0026a2046370300200341206a4190026a2028370300200341206a41f0016a2024370300200341206a41d0016a2020370300200341206a41b0016a201c370300200341206a4190016a2018370300200341206a41f0006a2014370300200341206a41d0006a2010370300200341206a41306a200c370300200341206a41c8036a2005290300370300200341206a41b8036a2038370300200341206a4198036a2034370300200341206a41f8026a2030370300200341206a41d8026a202c370300200341206a41b8026a202b370300200341206a4198026a2027370300200341206a41f8016a2023370300200341206a41d8016a201f370300200341206a41b8016a201b370300200341206a4198016a2017370300200341206a41f8006a2013370300200341206a41d8006a200f370300200341206a41386a2042370300200341206a41186a204537030020032041370320200320403703282003200b370330200341f8036a203d37030020034188046a200836020020034184046a200a3602002003203c3703f00320034100360280040c010b200320093602b804200320043602b404200341003602b004200341206a200341b0046a2003410f6a108a080b2000200341206a41e00310bf091a20012001280208417f6a36020820032d000f450d030240024020012802042208450d0020012802002209450d0120082802a829210a20012009417f6a3602002001200a360204200a41003602a029200810310c050b418a98ca00412b41e499ca00103c000b41e98fca004121418c90ca00103c000b02402005450d002005417f6a2105200420094102746a41a8296a28020021040c010b0b200041023602000c010b200041023602000b200341c0046a24000b9d0302077f017e230041b0076b22042400200441d0036a200141d00310bf091a02400240024020002802042205450d00200028020021060c010b41a829102f2205450d0141002106200541003b01a629200541003602a02920002005360204200041003602000b0240034020052f01a629220741d0036c210841002101417f210902400340024020082001470d00200721090c020b200520016a210a200941016a2109200141d0036a21010240200441d0036a200a10b80441187441187541016a0e03020001020b0b200441d0036a10b209200520094104746a220141f8276a2003370300200141f0276a20023703000c020b02402006450d002006417f6a2106200520094102746a41a8296a28020021050c010b0b200441d8036a2201280200210a20042903d003210b2004410c6a200441dc036a220841c40310bf091a2001200a3602002004200b3703d00320082004410c6a41c40310bf091a200441a8076a2009360200200441a4076a2005360200200420003602ac07200441003602a007200441d0036a2002200310b3091a0b200441b0076a24000f0b1039000bb60f03027f017e1c7f230041b0146b2203240020004200370204200041106a4200370200200141146a2802002104200129020c2105200141106a4200370200200320043602e004200320053703d8042003200341d8046a10cb04200341206a41186a200341186a2802002204360200200341206a41106a200341106a290300370300200341206a41086a200341086a290300370300200320032903003703200240024002402004450d0020032004417f6a220636023820032802242204450d022001410c6a21072000410c6a21082003280228210020032802202101024002400340200020042f01ae2b490d01024020042802a82b22090d0020041031410221090c030b20042f01ac2b210020041031200141016a2101200921040c000b0b2004200041f8036c6a220a2802002109200341bc106a200a41046a41f40310bf091a200041016a210002402001450d00200420004102746a41b02b6a2802002104024020014101460d0041012100034020042802b02b21042001200041016a2200470d000b0b410021000b200341c80c6a200341bc106a41f40310bf091a0b200341d0086a200341c80c6a41f40310bf091a200341d8046a200341d0086a41f40310bf091a2003200036022820032004360224200341003602202003413c6a200341d8046a41f40310bf091a200241c8006a210b20024198036a210c200241e0026a210d200241a8026a210e200241f0016a210f200241b8016a211020024180016a2111200241106a21122002410c6a2802002113200341bc106a41cc036a210a200341d8046a41d0036a2114200341d0086a4104722115200341d0086a41c8006a2116200341d0086a4198036a2117200341d0086a41e0026a2118200341d0086a41a8026a2119200341d0086a41f0016a211a200341d0086a41b8016a211b200341d0086a4180016a211c200341d0086a41106a211d2002280204211e2002280200211f200241086a2903002205a72220417f6a21210340200341c80c6a2003413c6a41f40310bf091a200341bc106a2003413c6a41f40310bf091a200320093602d0082015200341c80c6a41cc0310bf091a200341b0046a41206a2204200a41206a290200370300200341b0046a41186a2201200a41186a290200370300200341b0046a41106a2200200a41106a290200370300200341b0046a41086a2202200a41086a2902003703002003200a2902003703b004024002402009201f470d000240024002400240201f0d0020032802d8082020470d04024002400240024002400240024020210e0808000102030405060a0b20054202520d09201d201210f804450d0a2016200b10f804450d0a0c090b20054203520d08201d201210f804450d092016200b10f804450d09201c201110f804450d090c080b20054204520d07201d201210f804450d082016200b10f804450d08201c201110f804450d08201b201010f804450d080c070b20054205520d06201d201210f804450d072016200b10f804450d07201c201110f804450d07201b201010f804450d07201a200f10f804450d070c060b20054206520d05201d201210f804450d062016200b10f804450d06201c201110f804450d06201b201010f804450d06201a200f10f804450d062019200e10f804450d060c050b20054207520d04201d201210f804450d052016200b10f804450d05201c201110f804450d05201b201010f804450d05201a200f10f804450d052019200e10f804450d052018200d10f804450d050c040b20054208520d03201d201210f804450d042016200b10f804450d04201c201110f804450d04201b201010f8040d020c040b20032802dc082013470d0320032802d408201e201310c2090d030c020b20054201520d01201d201210f804450d020c010b201a200f10f804450d012019200e10f804450d012018200d10f804450d012017200c10f804450d010b200341d8046a200341d0086a41d00310bf091a201441206a2004290300370300201441186a2001290300370300201441106a2000290300370300201441086a2002290300370300201420032903b0043703002008200341d8046a1089080c010b200341d8046a200341d0086a41d00310bf091a201441206a2004290300370300201441186a2001290300370300201441106a2000290300370300201441086a2002290300370300201420032903b0043703002007200341d8046a1089080b2006450d0120032006417f6a220636023820032802242204450d02410120032802206b210120032802282100024002400340200020042f01ae2b490d01024020042802a82b22090d0020041031410221090c030b20042f01ac2b2100200410312001417f6a2101200921040c000b0b2004200041f8036c6a22022802002109200341bc106a200241046a41f40310bf091a200041016a2100024020014101460d00200420004102746a41b02b6a280200210402402001450d0041002100034020042802b02b210420012000417f6a2200470d000b0b410021000b200341c80c6a200341bc106a41f40310bf091a0b200341d0086a200341c80c6a41f40310bf091a200341d8046a200341d0086a41f40310bf091a2003200036022820032004360224200341003602202003413c6a200341d8046a41f40310bf091a0c000b0b200341206a10b409200341b0146a24000f0b418a98ca00412b418896ca00103c000b418a98ca00412b418896ca00103c000b5801017e02400240200341c00071450d0020022003413f71ad882101420021020c010b2003450d002002410020036b413f71ad8620012003413f71ad220488842101200220048821020b20002001370300200020023703080baa0604017f017e017f057e230041206b22052400024002400240024002400240024002402004500d00420021062001200354200220045420022004511b0d052002500d05200541106a20032004200479a7200279a76b220741ff007110c30942012007413f71ad862108200541186a29030021092005290310210a4200210603402001200a7d210b0240200220097d2001200a54ad7d220c4200530d0020062008842106200b20035a200c20045a200c2004511b450d03200b2101200c21020b200a4201882009423f8684210a20084201882108200942018821090c000b0b4200210c024020024200520d0020012001200380220620037e7d21010c060b0240200220035a0d0020052003200441c000200279a7200379a76b22076b413f20071b220741ff007110c30942012007413f71ad86210c200541086a290300210a200529030021094200210b034002402002200a7d2001200954ad7d22084200530d00200120097d2101200c200b84210b20084200510d04200821020b2009420188200a423f86842109200c420188210c200a420188210a0c000b0b20022003510d0320022002200380220820037e7d210c0240200342ffffffff0f560d00200c422086200142208884220a200a200380220a20037e7d422086200142ffffffff0f838422092009200380220920037e7d2101200a4220862009842106200a42208820088421084200210c0c070b0240200120035a200c20045a200c2004511b0d00420021060c070b2004423f86200342018884210a2003423f862109428080808080808080807f21024200210403400240200c200a7d2001200954ad7d220b4200530d00200120097d210120022004842104200b4200510d04200b210c0b2009420188200a423f8684210920024201882102200a420188210a0c000b0b42002108200b21010c050b2001200380220a200b8421062001200a20037e7d21014200210c0c030b2001200380220a20048421062001200a20037e7d21014200210c0c030b20012001200280220620027e7d21014200210c420121080c020b2002210c0b420021080b2000200137031020002006370300200041186a200c37030020002008370308200541206a24000b3c01017f230041206b220524002005200120022003200410bb09200529031021012000200541186a29030037030820002001370300200541206a24000b3c01017f230041206b220524002005200120022003200410bb09200529030021012000200541086a29030037030820002001370300200541206a24000b6e01077e2000200342ffffffff0f832205200142208822067e220720034220882208200142ffffffff0f8322097e7c220a422086220b200520097e7c22053703002000200a200754ad422086200a42208884200820067e7c2005200b54ad7c200420017e200320027e7c7c3703080b3601017f02402002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b6f01017f02400240200020016b20024f0d002001417f6a21012000417f6a21030340200320026a200120026a2d00003a00002002417f6a22020d000c020b0b2002450d00200021030340200320012d00003a0000200141016a2101200341016a21032002417f6a22020d000b0b20000b2c01017f02402002450d00200021030340200320013a0000200341016a21032002417f6a22020d000b0b20000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030b5801017e02400240200341c00071450d0020012003413f71ad862102420021010c010b2003450d0020022003413f71ad2204862001410020036b413f71ad88842102200120048621010b20002001370300200020023703080b0ba39a0a0300418080c0000bf4990a100010001c00000018020000050000006c6962726172792f616c6c6f632f7372632f7261775f7665632e7273c00010004b0000005a010000130000002c00000004000000040000002d0000002e0000002f0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f72002c000000000000000100000030000000a800100018000000420200001c0000006c6962726172792f616c6c6f632f7372632f666d742e72732f72757374632f653337613133636333353934303034363633373338626431386438313030653664623936363663662f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273005001100016000000660110001600000067e0110001000000340110001c000000ee0400000d0000006c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273737761705f72656d6f766520696e6465782028697320292073686f756c64206265203c206c656e2028697320a401100014000000b80110001700000067e0110001000000340110001c000000150500000d000000696e73657274696f6e20696e6465782028697320292073686f756c64206265203c3d206c656e202869732000f801100012000000660110001600000067e0110001000000340110001c000000450500000d00000072656d6f76616c20696e646578202869732000003402100015000000b80110001700000067e0110001000000340110001c000000d70600000d000000606174602073706c697420696e646578202869732047656e50726f6f66466f72496e76616c69644c6561766573476574526f6f744f6e456d707479496e636f6e73697374656e7453746f726553746f72654572726f7200002c000000040000000400000031000000436f7272757074656450726f6f660000cc02100020000000ec021000120000002c000000000000000100000032000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000d803100010000000e80310002200000072616e676520656e6420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468205b2e2e2e5d00700410000b000000760e100016000000af04100001000000540e10000e000000620e100004000000660e100010000000af04100001000000700410000b0000007b04100026000000a104100008000000a904100006000000af041000010000006279746520696e64657820206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f66206060b8041000020000002e2e0000ee0410001b0000006500000014000000dc04100012000000e80310002200000072616e676520737461727420696e646578206c6962726172792f636f72652f7372632f666d742f6e756d2e727300010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff0900720a1000250000000a0000001c000000ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d00720a1000250000001a000000360000000006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a84066c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e727300a80a100016000000be0a10000d000000736c69636520696e64657820737461727473206174202062757420656e647320617420000003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf552c0e100028000000520000003e00000000700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f0000000002c0e1000280000004b000000280000002c0e10002800000057000000160000006c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e672060206973206f7574206f6620626f756e6473206f6620603d3d0000d80e100019000000f10e100012000000030f10000c000000af04100001000000d80e100019000000f10e100012000000030f10000c0000009479120002000000af04100001000000617373657274696f6e206661696c65643a2060286c6566742020726967687429600a20206c6566743a2060602c0a2072696768743a2060426f72726f774572726f72426f72726f774d75744572726f7270616e69636b6564206174205d0f1000010000005e0f100003000000787d1200000000005c0f1000010000005c0f1000010000003a27272c2020202020000000880f1000200000003200000021000000880f10002000000033000000120000006c6962726172792f636f72652f7372632f666d742f6275696c646572732e7273b80f1000200000005a000000050000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273207b202c20207b0a2c0000000c000000040000003300000034000000350000002c0a00002c00000004000000040000003600000037000000380000007d207d28280a2c0a5d617373657274696f6e206661696c65643a202a63757272203e203139000000ee0410001b000000e6010000050000006c1010001b00000013080000160000006c1010001b0000000c0800001e0000006c6962726172792f636f72652f7372632f666d742f6d6f642e7273306200010204111000260000006672616d655f737570706f72743a3a686173682f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f737570706f72742f7372632f686173682e7273496e76616c696420726576657273653a2068617368206c656e67746820746f6f2073686f727400002c0000000100000001000000120000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f73797374656d2f7372632f6c696d6974732e72734275696c6465722066696e6973686564207769746820606275696c645f6f725f70616e6963603b205468652070616e69632069732065787065637465642069662072756e74696d65207765696768747320617265206e6f7420636f727265637400003c1110005e000000aa010000160000003a636f6465000000787d12000000000000000000ffffffff00000000010000000000000082800000000000008a8000000000008000800080000000808b800000000000000100008000000000818000800000008009800000000000808a00000000000000880000000000000009800080000000000a000080000000008b800080000000008b0000000000008089800000000000800380000000000080028000000000008080000000000000800a800000000000000a0000800000008081800080000000808080000000000080010000800000000008800080000000802c0000000000000001000000390000003a0000003b0000002c0000000000000001000000390000003a0000003b0000002c00000004000000040000003c00000001a8010001605354524f424576312e302e3200004c13100056000000680000000d0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6d65726c696e2d322e302e302f7372632f7374726f62652e727300007a141000190000009314100016000000000000002000000004000000020000000000000002000000000000000300000001000000200000000400000002000000000000000200000000000000030000004c13100056000000880000000d0000003c1410003e0000004c1310005600000091000000090000004c131000560000005e000000090000004c131000560000005f00000009000000596f75207573656420746865205420666c61672c207768696368207468697320696d706c656d656e746174696f6e20646f65736e277420737570706f7274596f7520747269656420746f20636f6e74696e7565206f702020627574206368616e67656420666c61677320746f200000004c131000560000007c000000150000004c131000560000007d0000000d00000000000000501510000e000000000000006015100001000000000000000000000068151000010000000000000000000000701510000600000000000000787d120000000000000000000000000078151000010000000000000000000000801510000700000000000000787d12000000000000000000000000008815100001000000000000004e6577417574686f7269746965730000151610000d000000df151000360000005061757365640000b815100027000000526573756d65640090151000280000002043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e204e657720617574686f726974792073657420686173206265656e206170706c6965642e205c5b617574686f726974795f7365745c5d417574686f726974794c697374000000000000501610000700000000000000581610000300000000000000000000007016100004000000000000004f6666656e6365000285100004000000068510000e0000000d4a1200040000009016100055000000e51610005300000038171000460000007e1710001d00000020546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e6420286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e206c61737420656c656d656e7420696e64696361746573206f6620746865206f6666656e636520776173206170706c69656420287472756529206f7220717565756564202866616c736529205c5b6b696e642c2074696d65736c6f742c206170706c6965645c5d2e0000000000c81710000a00000000000000d4171000010000000000000000000000dc17100002000000000000004e657753657373696f6e0000836a12000c000000ec171000590000004518100022000000204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e7420697320746865205c5b73657373696f6e5f696e6465785c5d2c206e6f742074686520626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e53746f72656452616e676574696d737461703054696d657374616d7020696e686572656e742064617461206973206e6f742070726f76696465642e496e76616c69642074696d657374616d7020696e686572656e74206461746120656e636f64696e672e00000000002419100010000000000000003419100002000000000000000000000044191000020000000000000000000000541910000e00000000000000787d12000000000000000000000000006419100001000000000000004261746368496e746572727570746564373c120003000000ea3412000d0000009f19100056000000f5191000240000004261746368436f6d706c6574656400006c19100033000000204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061732077656c6c20617320746865206572726f722e205c5b696e6465782c206572726f725c5d0000009c771200610000006700000012000000436f646563206572726f724572726f72521a10001f00000072756e74696d653a3a6265656679496e76616c6964204245454659205075626c69634b657920666f726d617421000000141b100022000000481c100031000000651612000300000067e01100010000001b1c10002d000000651612000300000067e0110001000000de1b10003d00000067e0110001000000691b10001a000000b91b100023000000dc1b100002000000691b10001a000000831b100036000000651612000300000067e0110001000000141b100022000000361b100033000000651612000300000067e011000100000073656e64696e67207468652048524d50206d65737361676520617420696e6465782020776f756c642065786365656420746865206e656f6769746961746564206368616e6e656c20746f74616c2073697a652020287468652048524d50206d65737361676520617420696e64657820206578636565647320746865206e65676f746961746564206368616e6e656c206d6178696d756d206d6573736167652073697a6520282069732073656e7420746f2061206e6f6e206578697374656e74206368616e6e656c202d3e7468652048524d50206d6573736167657320617265206e6f7420736f727465642028666972737420756e736f7274656420697320617420696e646578206d6f72652048524d50206d65737361676573207468616e207065726d697474656420627920636f6e666967202820776f756c642065786365656420746865206e656f6769746961746564206368616e6e656c20636170616369747920202800000000000000001d10001400000000000000141d1000040000000000000000000000341d1000020000000000000000000000441d10001300000000000000247f1100020000000000000000000000581d1000010000000000000000000000601d10000d00000000000000701d1000020000000000000000000000801d100001000000000000004f70656e4368616e6e656c526571756573746564cca2110006000000cca2110006000000373c120003000000373c120003000000ec1d10001d000000091e1000480000004f70656e4368616e6e656c416363657074656400ba1d1000320000004368616e6e656c436c6f736564000000cca21100060000008aa311000d000000881d1000320000002048524d50206368616e6e656c20636c6f7365642e205c5b62795f70617261636861696e2c206368616e6e656c5f69645c5d204f70656e2048524d50206368616e6e656c2061636365707465642e205c5b73656e6465722c20726563697069656e745c5d204f70656e2048524d50206368616e6e656c207265717565737465642e205c5b73656e6465722c20726563697069656e742c2070726f706f7365645f6d61785f63617061636974792c2070726f706f7365645f6d61785f6d6573736167655f73697a655c5d0000005e1f100046000000651612000300000067e01100010000002f1f10002f000000651612000300000067e0110001000000fa1e1000130000000d1f100022000000651612000300000067e0110001000000bc1e10003e000000651612000300000067e011000100000074686520756d7020717565756520776f756c642068617665206d6f7265206974656d73207468616e207065726d697474656420627920636f6e6669672028757077617264206d6573736167652069647820206c6172676572207468616e207065726d697474656420627920636f6e66696720286d6f726520757077617264206d65737361676573207468616e207065726d697474656420627920636f6e666967202874686520756d7020717565756520776f756c6420686176652067726f776e207061737420746865206d61782073697a65207065726d697474656420627920636f6e666967202800000000802010001200000000000000646c1100010000000000000000000000942010000100000000000000000000009c2010001200000000000000646c1100010000000000000000000000b0201000010000000000000000000000b82010001400000000000000646c1100010000000000000000000000cc201000010000000000000000000000d42010000c00000000000000646c1100010000000000000000000000e0201000010000000000000000000000e82010000c00000000000000f420100002000000000000000000000004211000010000000000000043757272656e74436f6465557064617465640000ed2110003600000043757272656e7448656164557064617465640000b721100036000000436f6465557067726164655363686564756c65647d2110003a0000004e6577486561644e6f7465644b21100032000000416374696f6e517565756564cca2110006000000836a12000c0000000c2110003f0000002041207061726120686173206265656e2071756575656420746f20657865637574652070656e64696e6720616374696f6e732e205c5b706172615f69645c5d2041206e6577206865616420686173206265656e206e6f74656420666f72206120506172612e205c5b706172615f69645c5d204120636f6465207570677261646520686173206265656e207363686564756c656420666f72206120506172612e205c5b706172615f69645c5d2043757272656e74206865616420686173206265656e207570646174656420666f72206120506172612e205c5b706172615f69645c5d2043757272656e7420636f646520686173206265656e207570646174656420666f72206120506172612e205c5b706172615f69645c5d00000000000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f00000088281200430000004c00000021000000ca2210001e000000e8221000190000009422100036000000444d51206973206e6f7420656d7074792c206275742070726f6365737365645f646f776e776172645f6d65737361676573206973203070726f6365737365645f646f776e776172645f6d65737361676573203d202c2062757420646d715f6c656e677468206973206f6e6c79203078000123100002000000000000002000000004000000020000000000000002000000000000000300000000000000200000000800000002000000000000000000000002000000030000005423100003000000e280a66772616e62616265696d6f6e706172616173676e617564696265656653797374656d4261626554696d657374616d70496e646963657342616c616e636573486973746f726963616c4772616e647061417574686f72697479446973636f7665727950617261636861696e734f726967696e50617261636861696e73436f6e66696775726174696f6e536861726564496e636c7573696f6e5061726173496e686572656e745363686564756c657250617261735375646f577261707065725375646f4d6d724d6d724c65616656616c696461746f724d616e616765725574696c69747950726f787958636d50616c6c6574003d0000002c000000040000003e0000003e0000003f0000002c00000000000000010000004000000041000000420000002c00000000000000010000004000000040000000420000000000000073231000060000000000000043000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000045000000000000000000000000000000460000000000000000000000000000004700000000000000000000000000000000000000792310000400000000000000480000000000000000000000000000000000000000000000000000000000000049000000000000000000000002000000000000000000000000000000000000004a0000000000000000000000000000004b000000000000000000000001000000000000007d23100009000000000000004c000000000000000000000000000000000000000000000000000000000000004d000000000000000000000002000000000000000000000000000000000000004e0000000000000000000000000000004f00000000000000000000000200000000000000862310000700000000000000500000000000000000000000000000000000000000000000000000000000000051000000000000000000000000000000520000000000000000000000000000005300000000000000000000000000000054000000000000000000000003000000000000008d2310000800000000000000550000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000570000000000000000000000000000005800000000000000000000000000000059000000000000000000000004000000000000004ab3100012000000000000005a0000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000005b0000000000000000000000000000004f000000000000000000000005000000000000007b9111000a000000000000005c000000000000000000000000000000000000000000000000000000000000005d000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000005e000000000000000000000006000000000000006878100008000000000000005f000000000000000000000000000000000000000000000000000000000000004f000000000000000000000000000000600000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000000700000000000000952310000a00000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000000800000000000000571912000700000000000000610000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000630000000000000000000000000000004f00000000000000000000000000000064000000000000000000000009000000000000009f2310000700000000000000650000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000670000000000000000000000000000004f0000000000000000000000000000006800000000000000000000000a000000000000004a351100080000000000000069000000000000000000000000000000000000000000000000000000000000006a0000000000000000000000000000006b0000000000000000000000000000004f0000000000000000000000000000006c00000000000000000000000b00000000000000a6231000120000000200000000000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000000c00000000000000b82310001000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000000d00000000000000c823100017000000000000006d000000000000000000000000000000000000000000000000000000000000006e000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000006f00000000000000000000000e00000000000000df231000060000000000000070000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000000f00000000000000e5231000090000000000000071000000000000000000000000000000000000000000000000000000000000004f000000000000000000000000000000720000000000000000000000000000004f0000000000000000000000000000007300000000000000000000001000000000000000ee2310000d00000000000000740000000000000000000000000000000000000000000000000000000000000075000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000007600000000000000000000001100000000000000fb231000090000000000000077000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f000000000000000000000012000000000000003094110005000000000000007800000000000000000000000000000000000000000000000000000000000000790000000000000000000000000000007a0000000000000000000000000000004f0000000000000000000000000000007b00000000000000000000001300000000000000e15512000b000000000000007c000000000000000000000000000000000000000000000000000000000000007d000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000001400000000000000c488100003000000000000007e000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f000000000000000000000015000000000000009a25110003000000000000007f000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f000000000000000000000016000000000000009a9311000400000000000000800000000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000820000000000000000000000000000004f0000000000000000000000000000008300000000000000000000001700000000000000c0f410000b0000000000000084000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000001800000000000000e2451100090000000000000085000000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000087000000000000000000000000000000880000000000000000000000000000008900000000000000000000001900000000000000889d100008000000000000008a000000000000000000000000000000000000000000000000000000000000008b0000000000000000000000000000008c0000000000000000000000000000008d0000000000000000000000000000008e00000000000000000000001a000000000000004643110009000000000000008f000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000091000000000000000000000000000000920000000000000000000000000000009300000000000000000000001b0000000000000090391000050000000000000094000000000000000000000000000000000000000000000000000000000000009500000000000000000000000000000096000000000000000000000000000000970000000000000000000000000000009800000000000000000000001c00000000000000042410001000000002000000000000000000000000000000000000000000000000000000000000000000000099000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000009a00000000000000000000001d000000000000001424100004000000000000009b000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000009d0000000000000000000000000000004f0000000000000000000000000000009e00000000000000000000001e000000000000001824100003000000000000009f000000000000000000000000000000000000000000000000000000000000004f000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000001f00000000000000201512000500000000000000a00000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f000000000000000000000020000000000000001b2410000700000000000000a10000000000000000000000000000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000002100000000000000222410001000000000000000a200000000000000000000000000000000000000000000000000000000000000a3000000000000000000000000000000a40000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000002200000000000000dcdf11000a00000000000000a500000000000000000000000000000000000000000000000000000000000000a6000000000000000000000000000000a70000000000000000000000000000004f000000000000000000000000000000a800000000000000000000005000000000000000541512000a00000000000000a900000000000000000000000000000000000000000000000000000000000000aa000000000000000000000000000000ab0000000000000000000000000000004f000000000000000000000000000000ac000000000000000000000051000000000000003224100007000000020000000000000000000000000000000000000000000000000000000000000000000000ad000000000000000000000000000000ae0000000000000000000000000000004f0000000000000000000000000000004f00000000000000000000005a00000000000000392410000500000000000000af00000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000b1000000000000000000000000000000b2000000000000000000000000000000b300000000000000000000005b000000000000003e2410000900000000000000b400000000000000000000000000000000000000000000000000000000000000b5000000000000000000000000000000b60000000000000000000000000000004f000000000000000000000000000000b7000000000000000000000063000000000000005036100006000000000000000000000056361000120000000000000000000000e70000000000000000000000683610000e0000000000000000000000726f636f636f7061726974792d726f636f636f2d76312e35df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a04000000d2bc9897eed08f1502000000f78b278be53f454c02000000af2c0297a23e6d3d01000000ed99c5acb25eedf502000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b0100000049eaaf1b548a0cb00100000091d5df18b0d2cf5801000000bc9d89904f5b923f0100000037c8bb1350a9a2a801000000f44511005a000000a00000000f00000070726f78795f616e6e6f756e63656472656a6563745f616e6e6f756e63656d656e7472656d6f76655f616e6e6f756e63656d656e74616e6e6f756e63656b696c6c5f616e6f6e796d6f7573616e6f6e796d6f757372656d6f76655f70726f7869657372656d6f76655f70726f78796164645f70726f787970726f7879000000009c9010001100000000000000d4371000010000000000000000000000dc3710000a00000000000000e8371000010000000000000013381000240000004c656173654572726f720000f0371000230000002054686572652077617320616e206572726f72207769746820746865206c656173652e205468652070617261636861696e204944206973206e6f74206f6e626f617264696e672e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e742f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f70617261735f696e686572656e742e727370616c6c65745f70726f78793a3a70616c6c6574706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74732f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f736c6f74732e7273726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765722f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f726f636f636f2f7372632f76616c696461746f725f6d616e616765722e727300dc3810003b0000007600000001000000536c6f74734c6561736573436865636b4d6f7274616c697479747269676765725f6f6e626f617264636c6561725f616c6c5f6c6561736573666f7263655f6c656173657061726163686e3000683a100027000000073a10006100000072756e74696d653a3a696e636c7573696f6e2d696e686572656e7464726f7070696e67207369676e65645f6269746669656c647320616e64206261636b65645f63616e64696461746573206265636175736520746865792070726f647563656420616e20696e76616c696420706172617320696e686572656e743a2050617261636861696e73496e686572656e7444617461206661696c656420746f206465636f64656d6f646c70792f70726f78795f5f5f5f000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000003b100019000000000000001c3b1000010000000000000000000000243b10001300000000000000383b10000200000000000000546f6f4d616e79496e636c7573696f6e496e686572656e7473000000aa3b100034000000496e76616c6964506172656e7448656164657200483b1000560000009e3b10000c000000205468652068617368206f6620746865207375626d697474656420706172656e742068656164657220646f65736e277420636f72726573706f6e6420746f2074686520736176656420626c6f636b2068617368206f662074686520706172656e742e20496e636c7573696f6e20696e686572656e742063616c6c6564206d6f7265207468616e206f6e63652070657220626c6f636b2e4269746669656c647320616e64206865616473206d75737420626520696e636c7564656420657665727920626c6f636b000062381000480000005500000011000000656e746572556e616e6e6f756e6365644e6f5065726d697373696f6e4475706c6963617465556e70726f787961626c654e6f7450726f78794e6f74466f756e64546f6f4d616e794e6f53656c6650726f7879000000000000f83c10000d0000000000000068071100010000000000000000000000083d1000010000000000000000000000103d10001000000000000000203d1000040000000000000000000000403d1000020000000000000000000000503d100009000000000000005c3d1000030000000000000000000000743d1000010000000000000050726f787945786563757465640000006e3e10003b000000416e6f6e796d6f75734372656174656469341200090000006934120009000000653e10000900000034e7110003000000d03d10003b0000000b3e10005a000000416e6e6f756e6365640000006934120009000000693412000900000072341200040000007c3d10005400000020416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e205c5b7265616c2c2070726f78792c2063616c6c5f686173685c5d20416e6f6e796d6f7573206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e20646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e205c5b616e6f6e796d6f75732c2077686f2c2070726f78795f747970652c20646973616d626967756174696f6e5f696e6465785c5d50726f78795479706520412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e205c5b726573756c745c5d2e0000000000000097371000050000000000000064401000030000000000000000000000ac4010000f00000000000000000000008e3710000900000000000000244110000300000000000000000000006c4110000d0000000000000000000000823710000c0000000000000024411000030000000000000000000000d44110000b0000000000000000000000743710000e00000000000000787d12000000000000000000000000002c4210000a00000000000000000000006b37100009000000000000007c421000030000000000000000000000c44210001700000000000000000000005d3710000e000000000000007c431000050000000000000000000000f443100014000000000000000000000055371000080000000000000094441000020000000000000000000000c4441000150000000000000000000000423710001300000000000000944410000200000000000000000000006c4510001000000000000000000000002f3710001300000000000000ec4510000200000000000000000000001c461000100000000000000000000000203710000f000000000000009c461000040000000000000000000000fc4610001100000000000000000000005349100004000000000000004f4712000c0000000000000057491000100000000000000067491000140000000000000037e7110004000000000000003be71100180000000957100054000000d84710000d000000787d120000000000e54710002b000000787d12000000000000e7110034000000787d12000000000049f211000c00000010481000440000005448100059000000ad48100035000000787d1200000000005e3a12000b000000c050100040000000a23a12000c000000000000004b49100008000000000000004f4712000c00000000000000075110000a00000000000000115110000c00000000000000e54d11000500000000000000154812000e0000003256100052000000787d12000000000000e7110034000000787d12000000000049f211000c0000008456100045000000c9561000400000005d53100054000000b153100006000000787d1200000000005e3a12000b000000c050100040000000a23a12000c0000006c5510002b000000787d12000000000000e7110034000000787d12000000000049f211000c000000975510004a000000e155100051000000787d1200000000005e3a12000b000000c050100040000000a23a12000c000000915410002e000000787d12000000000000e7110034000000787d120000000000bf541000560000001555100057000000787d1200000000005e3a12000b000000c050100040000000a23a12000c00000000000000075110000a00000000000000115110000c00000000000000e54d11000500000000000000154812000e00000000000000177f1200050000000000000034e71100030000002c5110004f0000007b51100040000000787d120000000000bb5110001c000000787d120000000000d7511000550000002c52100054000000805210001f0000009f52100055000000f4521000580000004c531000110000005d53100054000000b153100006000000787d120000000000b7531000550000000c54100027000000787d120000000000335410003a000000787d1200000000005e3a12000b000000c050100040000000a23a12000c0000006d54100024000000000000000051100007000000000000004f4712000c00000000000000075110000a00000000000000115110000c00000000000000177f1200050000000000000034e7110003000000000000001d5110000600000000000000c77711001700000000000000235110000900000000000000eef811000c000000934d10002e000000787d120000000000c14d100053000000144e10000e000000787d120000000000224e100057000000794e10002b000000787d120000000000a44e100054000000f84e1000540000004c4f1000410000008d4f100050000000dd4f100053000000787d1200000000003050100053000000835010003d000000787d1200000000005e3a12000b000000c050100040000000a23a12000c000000000000005349100004000000000000004f4712000c00000000000000b94a10000900000000000000c24a10000d000000964b100042000000787d120000000000d84b100058000000304c10004a000000787d1200000000007a4c100045000000787d120000000000bf4c100043000000024d100047000000787d120000000000494d10004a000000787d12000000000049f211000c0000001048100044000000504b100046000000787d1200000000005e3a12000b000000e248100019000000fb481000270000002249100029000000a23a12000c000000cf4a10001d000000787d120000000000ec4a100057000000434b10000d000000787d12000000000000e7110034000000787d12000000000049f211000c0000001048100044000000504b100046000000787d1200000000005e3a12000b000000e248100019000000fb481000270000002249100029000000a23a12000c000000000000004b49100008000000000000004f4712000c00000000000000b94a10000900000000000000c24a10000d0000007b4910002d000000787d120000000000a849100059000000014a10004a000000787d12000000000000e7110034000000787d12000000000049f211000c0000004b4a10003e000000894a100030000000787d1200000000005e3a12000b000000e248100019000000fb481000270000002249100029000000a23a12000c000000000000004b49100008000000000000004f4712000c000000000000005349100004000000000000004f4712000c0000000000000057491000100000000000000067491000140000000000000037e7110004000000000000003be71100180000008447100054000000d84710000d000000787d120000000000e54710002b000000787d12000000000000e7110034000000787d12000000000049f211000c00000010481000440000005448100059000000ad48100035000000787d1200000000005e3a12000b000000e248100019000000fb481000270000002249100029000000a23a12000c0000002044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676820606164645f70726f7879602e2052656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e202d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e202d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2e202d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e2057656967687420697320612066756e6374696f6e206f663a202d20413a20746865206e756d626572206f6620616e6e6f756e63656d656e7473206d6164652e202d20503a20746865206e756d626572206f662070726f78696573207468652075736572206861732e64656c65676174657265616c666f7263655f70726f78795f747970654f7074696f6e3c543a3a50726f7879547970653e2052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e204d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c65676174657320286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e202d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e63616c6c5f6861736843616c6c486173684f663c543e2052656d6f7665206120676976656e20616e6e6f756e63656d656e742e204d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e20746865206465706f7369742e202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e205075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e2054686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d70746564206966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e204e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e20546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c2061732060416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e2052656d6f76657320612070726576696f75736c7920737061776e656420616e6f6e796d6f75732070726f78792e205741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626520696e61636365737369626c652e205265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746f2060616e6f6e796d6f757360207769746820636f72726573706f6e64696e6720706172616d65746572732e202d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c65642060616e6f6e796d6f75736020746f206372656174652074686973206163636f756e742e202d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e2050726f6261626c79206030602e202d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f2060616e6f6e796d6f7573602e202d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e202d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f2060616e6f6e796d6f757360207761732070726f6365737365642e204661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c79206372656174656420616e6f6e796d6f7573206163636f756e742077686f73652060616e6f6e796d6f7573602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e2057656967687420697320612066756e6374696f6e206f6620746865206e756d626572206f662070726f7869657320746865207573657220686173202850292e737061776e657270726f78795f74797065543a3a50726f7879547970656865696768746578745f696e64657820537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e6420696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e205265717569726573206120605369676e656460206f726967696e2e202d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f76657220746865206e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f20616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e202d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d65207472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573742077616e7420746f20757365206030602e202d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265207a65726f2e204661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468652073616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e204661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e20544f444f3a204d69676874206265206f76657220636f756e74696e672031207265616420556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e205741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e747320637265617465642062792060616e6f6e796d6f7573602c20686f776576657220696620646f6e652c207468656e2074686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e20526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e202d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792e202d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e2044697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f756768000000000000005b4611000700000001050000000000004f4712000c00000000000000105810005100000000000000000000000000000000000000787d120064581000000000000000000074581000020000000000000001000000000000004e4611000d00000001050000000000004f4712000c00000000000000845810004f00000000000000000000000000000000000000787d1200d45810000000000000000000e4581000010000000000000001000000285665633c50726f7879446566696e6974696f6e3c543a3a4163636f756e7449642c20543a3a50726f7879547970652c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e290000002c0000000000000001000000b800000017591000510000006859100048000000285665633c416e6e6f756e63656d656e743c543a3a4163636f756e7449642c2043616c6c486173684f663c543e2c20543a3a426c6f636b4e756d6265723e3e2c0a2042616c616e63654f663c543e29002c0000000000000001000000b9000000ec5810002b0000002054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e2054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e747320776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e00000000005b10001000000000000000a46611000c00000000000000787d1200105b10000000000000000000205b1000040000000000000000000000405b10001200000000000000a46611000c00000000000000787d1200545b10000000000000000000645b10000500000000000000000000008c5b10000a0000000000000034e711000300000000000000787d1200985b10000000000000000000a85b1000010000000000000000000000b05b10000a00000000000000373c12000300000000000000787d1200bc5b10000000000000000000cc5b1000010000000000000000000000d45b10001700000000000000a46611000c00000000000000787d1200ec5b10000000000000000000fc5b1000030000000000000000000000145c10001900000000000000a46611000c00000000000000787d1200305c10000000000000000000405c1000040000000000000050726f78794465706f736974426173652c0000000000000001000000ba000000525f100044000000787d120000000000965f100040000000d65f10004900000050726f78794465706f736974466163746f7200002c0000000000000001000000ba000000415e10002f000000787d120000000000705e10005a000000ca5e100058000000225f1000300000004d617850726f7869657300002c0000000000000001000000bb000000055e10003c0000004d617850656e64696e6700002c0000000000000001000000bc000000b45d100051000000416e6e6f756e63656d656e744465706f73697442617365002c0000000000000001000000ba0000000e5d10004c000000787d1200000000005a5d10005a000000416e6e6f756e63656d656e744465706f736974466163746f720000002c0000000000000001000000ba000000605c100035000000787d120000000000955c100056000000eb5c1000230000002054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e20546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c792036382062797465732920696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e20546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c79203136206279746573292e20546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e20546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e20546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b6520696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e20546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e20546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a65206973206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e0000000000c83910000b00000000000000a46010000500000000000000000000001c611000040000000000000000000000b8391000100000000000000054a011000100000000000000000000003c611000030000000000000000000000a93910000f0000000000000054a0110001000000000000000000000054611000070000000000000000000000c8a211000400000000000000cca211000600000000000000af63100006000000000000004f4712000c00000000000000e8a310000600000000000000a46611000c00000000000000b56310000c00000000000000c16310001000000000000000d16310000c00000000000000c1631000100000001b6310005b0000007663100039000000787d1200000000008e62110027000000c762100054000000787d1200000000008e621100270000008c6110004a000000787d120000000000d661100052000000286210004f000000776210001c000000787d12000000000093621000340000002054727920746f206f6e626f61726420612070617261636861696e2074686174206861732061206c6561736520666f72207468652063757272656e74206c6561736520706572696f642e20546869732066756e6374696f6e2063616e2062652075736566756c2069662074686572652077617320736f6d6520737461746520697373756520776974682061207061726120746861742073686f756c642068617665206f6e626f61726465642c206275742077617320756e61626c6520746f2e204173206c6f6e67206173207468657920686176652061206c6561736520706572696f642c2077652063616e206c6574207468656d206f6e626f6172642066726f6d20686572652e204f726967696e206d757374206265207369676e65642c206275742063616e2062652063616c6c656420627920616e796f6e652e20436c65617220616c6c206c656173657320666f72206120506172612049642c20726566756e64696e6720616e79206465706f73697473206261636b20746f20746865206f726967696e616c206f776e6572732e204a757374206120686f747769726520696e746f2074686520606c656173655f6f7574602063616c6c2c20696e206361736520526f6f742077616e747320746f20666f72636520736f6d65206c6561736520746f2068617070656e20696e646570656e64656e746c79206f6620616e79206f74686572206f6e2d636861696e206d656368616e69736d20746f207573652069742e6c6561736572706572696f645f626567696e4c65617365506572696f644f663c543e706572696f645f636f756e740000000000000095391000060000000105000000000000cca211000600000000000000386410002900000000000000000000000000000000000000787d1200646410000000000000000000746410001000000000000000010000005665633c4f7074696f6e3c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e3e0000002c0000000000000001000000bd000000f464100045000000787d12000000000039651000660000009f6510003c000000787d120000000000db65100058000000336610002c000000787d1200000000005f66100058000000b76610002d000000787d120000000000e46610005400000038671000580000009067100057000000787d120000000000e76710003700000020416d6f756e74732068656c64206f6e206465706f73697420666f7220656163682028706f737369626c792066757475726529206c65617365642070617261636861696e2e205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620627920616e79206163636f756e7420617420616e792074696d6520697320746865206d6178696d756d206f6620746865207365636f6e642076616c756573206f6620746865206974656d7320696e2074686973206c6973742077686f73652066697273742076616c756520697320746865206163636f756e742e20546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572206578697374656429206173206661722061732074686973206d6f64756c6520697320636f6e6365726e65642e20496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e2069742077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f726520604e6f6e65607320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e20497420697320696c6c6567616c20666f72206120604e6f6e65602076616c756520746f20747261696c20696e20746865206c6973742e00000000000093af10000b00000000000000154812000e00000000000000787d1200586810000000000000000000787d120000000000000000002c0000000000000001000000be00000000000000c06810000e00000000000000d0681000010000000000000000000000d8681000010000000000000000000000e06810000600000000000000e86810000600000000000000000000001869100003000000000000004e65774c65617365506572696f64000093af10000b00000082691000230000004c65617365640000cca2110006000000693412000900000093af10000b00000093af10000b0000007d661200070000007d661200070000001cb11000310000004db11000500000003069100052000000205c5b70617261636861696e5f69642c206c65617365722c20706572696f645f626567696e2c20706572696f645f636f756e742c2065787472615f726573657665642c20746f74616c5f616d6f756e745c5d2041206e6577205b6c656173655f706572696f645d20697320626567696e6e696e672e00000000000000203c10000500000000000000d4691000010000000000000000000000ec691000010000000000000000000000416a10000400000000000000456a100021000000f46910004d00000020456e7465722074686520706172617320696e686572656e742e20546869732077696c6c2070726f63657373206269746669656c647320616e64206261636b65642063616e646964617465732e6461746150617261636861696e73496e686572656e74446174613c543a3a4865616465723e50617261496e686572656e74000000000000cc6a1000080000000000000000000000bc8612000200000000000000000000000000000000000000000000000000000000000000787d1200d46a10000000000000000000e46a1000060000000000000000000000496e636c756465642c0000000000000001000000bf000000146b10003b000000787d1200000000004f6b100058000000a76b10002f000000787d120000000000d66b10005200000020576865746865722074686520706172617320696e686572656e742077617320696e636c756465642077697468696e207468697320626c6f636b2e2054686520604f7074696f6e3c28293e60206973206566666563746976656c79206120626f6f6c2c20627574206974206e6576657220686974732073746f7261676520696e2074686520604e6f6e65602076617269616e742064756520746f207468652067756172616e74656573206f66204652414d4527732073746f7261676520415049732e204966207468697320697320604e6f6e65602061742074686520656e64206f662074686520626c6f636b2c2077652070616e696320616e642072656e6465722074686520626c6f636b20696e76616c69642e188b120094000000e30000002e00000000000000603c10000700000000000000186d1000010000000000000000000000583c10000800000000000000206d1000010000000000000000000000503c10000800000000000000286d1000010000000000000000000000453c10000b00000000000000306d10000100000000000000000000003c3c10000900000000000000386d1000010000000000000000000000303c10000c00000000000000406d1000010000000000000000000000253c10000b00000000000000486d1000010000000000000000000000673c10000b00000000000000506d10000100000000000000a46e100049000000866e10001e000000526e100034000000096e100049000000ed6d10001c000000a76d100046000000726d100035000000586d10001a0000002043616e6e6f74206164642073656c662061732070726f78792e20416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2043616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e204163636f756e7420697320616c726561647920612070726f78792e20412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e2053656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2050726f787920726567697374726174696f6e206e6f7420666f756e642e2054686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e50617261636861696e50726f706f73657256616c696461746f7273546f52657469726556616c696461746f7273546f4164640000000000786f100014000000000000008c6f1000010000000000000000000000946f10000100000000000000000000009c6f100016000000000000008c6f1000010000000000000000000000b46f1000010000000000000056616c696461746f727352656769737465726564d3c9110010000000e26f10002600000056616c696461746f72734465726567697374657265640000bc6f1000260000002056616c696461746f727320776572652072656d6f7665642066726f6d20746865207365742e204e65772076616c696461746f7273207765726520616464656420746f20746865207365742e00000000fe6e1000120000000000000000000000847f10001300000000000000000000000000000000000000000000000000000000000000787d1200b87010000000000000000000c870100001000000000000000100000000000000106f10000f0000000000000000000000847f10001300000000000000000000000000000000000000000000000000000000000000787d1200d07010000000000000000000e07010000100000000000000010000002c0000000000000001000000bd000000097110004d0000002c0000000000000001000000bd000000e8701000210000002056616c696461746f727320746861742073686f756c642062652061646465642e2056616c696461746f727320746861742073686f756c6420626520726574697265642c20626563617573652074686569722050617261636861696e20776173206465726567697374657265642e000038391000470000003b00000001000000646572656769737465725f76616c696461746f727372656769737465725f76616c696461746f7273000000007d7110001300000000000000e871100001000000000000000000000000721000030000000000000000000000687110001500000000000000e8711000010000000000000000000000187210000300000000000000000000002c3011000a00000000000000847f100013000000957210001f000000787d120000000000b47210003c0000003072100020000000787d12000000000050721000450000002052656d6f76652076616c696461746f72732066726f6d20746865207365742e205468652072656d6f7665642076616c696461746f72732077696c6c2062652064656163746976617465642066726f6d2063757272656e742073657373696f6e202b20322e20416464206e65772076616c696461746f727320746f20746865207365742e20546865206e65772076616c696461746f72732077696c6c206265206163746976652066726f6d2063757272656e742073657373696f6e202b20322e70616c6c65745f73657373696f6e70616c6c65745f6f6666656e6365732f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6f6666656e6365732f7372632f6c69622e727370616c6c65745f78636d3a3a70616c6c6574706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d702f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f646d702e727300000038ed10005c000000fc010000010000004b65794f776e65729c7310003d0000005b00000001000000556e726561636861626c6553656e644661696c75726500000000000048741000090000000000000054741000010000000000000000000000787d12000000000000000000417474656d707465640000005c7410001000000078636d3a3a76303a3a4f7574636f6d6500000000c47410000400000000000000c8741000020000000000000000000000787d1200000000000000000000000000dfdb11000700000000000000f8741000020000000000000000000000287510000b0000000000000073656e6400000000f91811000400000000000000887710000d00000000000000317f12000700000000000000957710000700000000000000317f120007000000000000006d77100011000000000000007e7710000a00000000000000af671200060000008075100035000000787d120000000000b575100054000000097610000b000000787d120000000000147610005c0000007076100057000000c776100016000000787d120000000000dd7610005c0000003977100034000000204578656375746520616e2058434d206d6573736167652066726f6d2061206c6f63616c2c207369676e65642c206f726967696e2e20416e206576656e74206973206465706f736974656420696e6469636174696e67207768657468657220606d73676020636f756c6420626520657865637574656420636f6d706c6574656c79206f72206f6e6c79207061727469616c6c792e204e6f206d6f7265207468616e20606d61785f776569676874602077696c6c206265207573656420696e2069747320617474656d7074656420657865637574696f6e2e2049662074686973206973206c657373207468616e20746865206d6178696d756d20616d6f756e74206f6620776569676874207468617420746865206d65737361676520636f756c642074616b6520746f2062652065786563757465642c207468656e206e6f20657865637574696f6e20617474656d70742077696c6c206265206d6164652e204e4f54453a2041207375636365737366756c2072657475726e20746f207468697320646f6573202a6e6f742a20696d706c7920746861742074686520606d73676020776173206578656375746564207375636365737366756c6c7920746f20636f6d706c6574696f6e3b206f6e6c792074686174202a736f6d652a206f66206974207761732065786563757465642e426f783c58636d3c543a3a43616c6c3e3e6d61785f7765696768744d756c74694c6f636174696f6e58636d3c28293e436865636b57656967687400457810000f0000006672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f73797374656d2f7372632f657874656e73696f6e732f636865636b5f7765696768742e7273426164206d616e6461746f72793a205175657565644b65797356616c696461746f72734f6666656e63657344656665727265644f6666656e6365734e6f4b6579734475706c6963617465644b65794e6f4173736f63696174656456616c696461746f724964496e76616c696450726f6f664e6f4163636f756e74000000000018791000080000000000000020791000020000000000000000000000507910000e0000000000000000000000c07910000a00000000000000787d1200000000000000000000000000cc7910000c000000000000007365745f6b65797300000000e63c120004000000000000000f7d10000700000000000000167d10000500000000000000ae3a120007000000d07b10003a0000000a7c1000480000005f7a100031000000787d120000000000907a100035000000787d1200000000005e3a12000b000000527c100015000000f27a100056000000677c10003c000000a37c100029000000cc7c100021000000ed7c100022000000a23a12000c00000070757267655f6b65797300002c7a1000330000005f7a100031000000787d120000000000907a100035000000787d1200000000005e3a12000b000000c57a10002d000000f27a100056000000487b10003c000000847b100029000000ad7b100023000000a23a12000c0000002052656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e20546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e202d20436f6d706c65786974793a20604f2831296020696e206e756d626572206f66206b65792074797065732e20202041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e202d20446252656164733a2060543a3a56616c696461746f7249644f66602c20604e6578744b657973602c20606f726967696e206163636f756e7460202d2044625772697465733a20604e6578744b657973602c20606f726967696e206163636f756e7460202d20446257726974657320706572206b65792069643a20604b65794f776e646572602053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e20416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722e202d20436f6d706c65786974793a20604f28312960202d20446252656164733a20606f726967696e206163636f756e74602c2060543a3a56616c696461746f7249644f66602c20604e6578744b65797360202d2044625772697465733a20606f726967696e206163636f756e74602c20604e6578744b65797360202d204462526561647320706572206b65792069643a20604b65794f776e657260202d20446257726974657320706572206b65792069643a20604b65794f776e657260543a3a4b65797370726f6f6600000000005e7810000a0000000000000000000000847f10001300000000000000000000000000000000000000000000000000000000000000787d1200987f10000000000000000000a87f100001000000000000000100000000000000b07f10000c0000000000000000000000836a12000c00000000000000000000000000000000000000000000000000000000000000787d1200bc7f10000000000000000000cc7f100001000000000000000100000000000000d47f10000d00000000000000000000000d4a12000400000000000000000000000000000000000000000000000000000000000000787d1200e47f10000000000000000000f47f100002000000000000000100000000000000547810000a0000000000000000000000048010001e00000000000000000000000000000000000000000000000000000000000000787d1200248010000000000000000000348010000200000000000000010000000000000044801000120000000000000000000000568010000800000000000000000000000000000000000000000000000000000000000000787d120060801000000000000000000070801000030000000000000001000000000000002a481100080000000105000000000000888010000e000000000000000f7d10000700000000000000000000000000000000000000787d1200988010000000000000000000a880100001000000000000000000000000000000ec731000080000000105000000000000b08010001400000000000000888010000e00000000000000000000000000000000000000787d1200c48010000000000000000000d48010000100000000000000000000005665633c543a3a56616c696461746f7249643e002c0000000000000001000000bd000000ce8210001f00000043757272656e74496e6465782c0000000000000001000000c0000000b08210001e0000005175657565644368616e6765640000002c0000000000000001000000bf000000398210004e00000087821000290000005665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e00002c0000000000000001000000c1000000b28110004f000000018210003800000044697361626c656456616c696461746f72735665633c7533323e00002c0000000000000001000000c20000004581100020000000787d120000000000658110004d000000543a3a56616c696461746f72496400002c0000000000000001000000bf0000001e81100027000000284b65795479706549642c205665633c75383e292c0000000000000001000000bf000000dc8010004200000020546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e20496e6469636573206f662064697361626c65642076616c696461746f72732e205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e2054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b6579732077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e20547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f727320686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e2043757272656e7420696e646578206f66207468652073657373696f6e2e205468652063757272656e7420736574206f662076616c696461746f72732e0000000000000050841000070000000105000000000000578410000d00000000000000648410003400000000000000000000000000000000000000787d1200988410000000000000000000a88410000100000000000000000000000000000070781000100000000000000000000000b08410001900000000000000000000000000000000000000000000000000000000000000787d1200cc8410000000000000000000dc84100002000000000000000100000000000000ec841000160000000205050000000000028510000400000000000000068510000e00000000000000148510001200000000000000787d1200288510000000000000000000388510000100000000000000010000000000000040851000120000000105000000000000028510000400000000000000ae3a12000700000000000000000000000000000000000000787d1200548510000000000000000000648510000600000000000000010000005265706f7274735265706f727449644f663c543e4f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e2c0000000000000001000000bf00000067871000520000005665633c44656665727265644f6666656e63654f663c543e3e0000002c0000000000000001000000c3000000fd861000590000005687100011000000436f6e63757272656e745265706f727473496e6465784b696e644f706171756554696d65536c6f745665633c5265706f727449644f663c543e3e00002c0000000000000001000000bd000000b38610004a0000005265706f72747342794b696e64496e64657800002c0000000000000001000000c40000009485100044000000787d120000000000d88510002f000000787d1200000000000786100052000000598610005a00000020456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f6620646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e204465666572726564207265706f72747320746861742068617665206265656e2072656a656374656420627920746865206f6666656e63652068616e646c657220616e64206e65656420746f206265207375626d69747465642061742061206c617465722074696d652e20546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e696d2d6f6e6c696e653a6f66666c696e626162653a65717569766f636174696f6772616e6470613a65717569766f6361706f700c88100066000000600000002e0000000c88100066000000610000002d0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f636b622d6d65726b6c652d6d6f756e7461696e2d72616e67652d302e332e312f7372632f6d6d722e727362616767696e6720726873207065616b73000c88100066000000ca000000370000000c8810006600000039010000380000000c881000660000008a0100002d0000000c881000660000008b0100002c000000446d70446f776e776172644d65737361676551756575657300000000c7881000150000000105000000000000cca2110006000000000000008c8910002b00000000000000000000000000000000000000787d1200b88910000000000000000000c889100001000000000000000100000000000000d0891000190000000105000000000000cca211000600000000000000723412000400000000000000000000000000000000000000787d1200ec8910000000000000000000fc8910000700000000000000010000005665633c496e626f756e64446f776e776172644d6573736167653c543a3a426c6f636b4e756d6265723e3e002c0000000000000001000000c5000000768b100034000000446f776e776172644d657373616765517565756548656164730000002c0000000000000001000000c6000000348a100049000000787d1200000000007d8a100024000000a18a10001e000000bf8a10003a000000f98a100048000000418b1000350000002041206d617070696e6720746861742073746f7265732074686520646f776e77617264206d657373616765207175657565204d5143206865616420666f72206561636820706172612e2045616368206c696e6b20696e207468697320636861696e20686173206120666f726d3a206028707265765f686561642c20422c2048284d2929602c207768657265202d2060707265765f68656164603a206973207468652070726576696f757320686561642068617368206f72207a65726f206966206e6f6e652e202d206042603a206973207468652072656c61792d636861696e20626c6f636b206e756d62657220696e2077686963682061206d6573736167652077617320617070656e6465642e202d206048284d29603a206973207468652068617368206f6620746865206d657373616765206265696e6720617070656e6465642e2054686520646f776e77617264206d657373616765732061646472657373656420666f722061206365727461696e20706172612e000000000000aa7810000c00000000000000388c1000010000000000000000000000937810001700000000000000408c1000010000000000000000000000867810000d00000000000000488c1000010000000000000000000000807810000600000000000000508c1000010000000000000000000000b67810000900000000000000588c10000100000000000000138d100019000000eb8c100028000000d18c10001a000000a78c10002a000000608c100047000000204b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e204e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e2052656769737465726564206475706c6963617465206b65792e204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e20496e76616c6964206f776e6572736869702070726f6f662e0d7310005d000000740000000100000000000000047410000b00000000000000787d12000000000000000000000000000f7410000b00000000000000787d12000000000000000000e8bf1000390000004c0000000f0000003a45706f63684475726174696f6e496e426c6f636b733a70616c6c65745f7472616e73616374696f6e5f7061796d656e742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f7472616e73616374696f6e2d7061796d656e742f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e73706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f696e636c7573696f6e2e72730000000000309010001100000000000000449010000100000000000000000000004c901000110000000000000060901000010000000000000000000000689010000d0000000000000078901000010000000000000000000000809010001100000000000000949010000100000000000000000000009c9010001100000000000000b0901000010000000000000000000000043911000d00000000000000b8901000010000000000000000000000304011001100000000000000c0901000010000000000000000000000c89010000b00000000000000d4901000010000000000000000000000dc9010000f00000000000000ec901000010000000000000000000000f4901000110000000000000008911000010000000000000000000000109110000a000000000000001c9110000100000000000000000000005c4011000c00000000000000249110000100000000000000000000007040110010000000000000002c911000010000000000000000000000349110000c0000000000000040911000010000000000000041756374696f6e496e50726f67726573730000001f931000250000004c65617365506572696f64496e50617374000000fe921000210000004e6f74506172614f726967696e000000d09210002e000000506172614e6f7452656769737465726564000000b992100017000000506172614e6f744f6e626f617264696e6700000094921000250000004a9210004a0000002992100021000000496e76616c6964436f6465000392100026000000556e7365744465706c6f794461746100ce911000350000004e6f7443757272656e7441756374696f6e000000b7911000170000004e6f7441756374696f6e0000a791100010000000899110001e000000639110002600000041756374696f6e456e646564489110001b0000002041756374696f6e2068617320616c726561647920656e6465642e20476976656e20696e697469616c2068656164206461746120697320746f6f206c617267652e20476976656e20636f64652073697a6520697320746f6f206c617267652e204e6f7420616e2061756374696f6e2e204e6f7420612063757272656e742061756374696f6e2e204465706c6f796d656e74206461746120686173206e6f74206265656e2073657420666f7220746869732070617261636861696e2e2054686520636f6465206d75737420636f72726573706f6e6420746f2074686520686173682e2050617261636861696e20697320616c726561647920726567697374657265642e20546865206f726967696e20666f7220746869732063616c6c206d75737420626520746865206f726967696e2077686f2072656769737465726564207468652070617261636861696e2e205468652070617261636861696e204944206973206e6f74206f6e2d626f617264696e672e2050617261206973206e6f74207265676973746572656420546865206f726967696e20666f7220746869732063616c6c206d75737420626520612070617261636861696e2e20546865206c6561736520706572696f6420697320696e2074686520706173742e20546869732061756374696f6e20697320616c726561647920696e2070726f67726573732e94dc11003e000000be000000010000004368617267655472616e73616374696f6e5061796d656e74000000000c961000110000000000000020961000010000000000000000000000289610001c00000000000000449610000100000000000000000000004c96100019000000000000006896100001000000000000000000000070961000180000000000000088961000010000000000000000000000909610001400000000000000a4961000010000000000000000000000ac9610002000000000000000cc961000010000000000000000000000d49610000d00000000000000e4961000010000000000000000000000ec96100013000000000000000097100001000000000000000000000070401100100000000000000008971000010000000000000000000000109710001400000000000000249710000100000000000000000000002c9710000f000000000000003c971000010000000000000000000000449710001b0000000000000060971000010000000000000000000000689710001700000000000000809710000100000000000000000000008897100011000000000000009c971000010000000000000000000000a49710001300000000000000b8971000010000000000000000000000c09710000e00000000000000d0971000010000000000000000000000d89710001100000000000000ec971000010000000000000000000000f49710001a0000000000000010981000010000000000000000000000189810000d0000000000000028981000010000000000000000000000309810002000000000000000509810000100000000000000000000005898100015000000000000007098100001000000000000000000000078981000180000000000000090981000010000000000000000000000989810001300000000000000ac981000010000000000000000000000b49810001900000000000000d0981000010000000000000057726f6e674269746669656c6453697a650000002f9d10002b0000004269746669656c644475706c69636174654f72556e6f726465726564db9c10005400000056616c696461746f72496e6465784f75744f66426f756e6473000000bc9c10001f000000496e76616c69644269746669656c645369676e6174757265aa9c100012000000556e7363686564756c656443616e6469646174657e9c10002c00000043616e6469646174655363686564756c65644265666f72655061726146726565319c10004d00000057726f6e67436f6c6c61746f72000000059c10002c0000005363686564756c65644f75744f664f7264657200e79b10001e000000bd9b10002a0000005072656d6174757265436f646555706772616465a39b10001a0000004e6577436f6465546f6f4c61726765008a9b10001900000043616e6469646174654e6f74496e506172656e74436f6e7465787400699b100021000000556e6f63637570696564426974496e4269746669656c6400209b100049000000496e76616c696447726f7570496e646578000000f89a100028000000496e73756666696369656e744261636b696e6700d39a100025000000496e76616c69644261636b696e670000999a10003a0000004e6f74436f6c6c61746f725369676e65640000007e9a10001b00000056616c69646174696f6e44617461486173684d69736d6174636800004c9a100032000000496e7465726e616c4572726f720000000a9a100042000000496e636f7272656374446f776e776172644d65737361676548616e646c696e67d399100037000000496e76616c69645570776172644d657373616765730000008b9910004800000048726d7057617465726d61726b4d697368616e646c696e674699100045000000496e76616c69644f7574626f756e6448726d70001099100036000000496e76616c696456616c69646174696f6e436f646548617368000000d898100038000000205468652076616c69646174696f6e20636f64652068617368206f66207468652063616e646964617465206973206e6f742076616c69642e205468652048524d50206d657373616765732073656e74206279207468652063616e646964617465206973206e6f742076616c69642e205468652063616e646964617465206469646e277420666f6c6c6f77207468652072756c6573206f662048524d502077617465726d61726b20616476616e63656d656e742e204174206c65617374206f6e6520757077617264206d6573736167652073656e7420646f6573206e6f7420706173732074686520616363657074616e63652063726974657269612e2054686520646f776e77617264206d657373616765207175657565206973206e6f742070726f63657373656420636f72726563746c792e20496e7465726e616c206572726f72206f6e6c792072657475726e6564207768656e20636f6d70696c6564207769746820646562756720617373657274696f6e732e205468652076616c69646174696f6e2064617461206861736820646f6573206e6f74206d617463682065787065637465642e20436f6c6c61746f7220646964206e6f74207369676e20506f562e20496e76616c69642028626164207369676e61747572652c20756e6b6e6f776e2076616c696461746f722c206574632e29206261636b696e672e20496e73756666696369656e7420286e6f6e2d6d616a6f7269747929206261636b696e672e20496e76616c69642067726f757020696e64657820696e20636f72652061737369676e6d656e742e20546865206269746669656c6420636f6e7461696e732061206269742072656c6174696e6720746f20616e20756e61737369676e656420617661696c6162696c69747920636f72652e2043616e646964617465206e6f7420696e20706172656e7420636f6e746578742e204f757470757420636f646520697320746f6f206c6172676520436f64652075706772616465207072656d61747572656c792e2048656164206461746120657863656564732074686520636f6e66696775726564206d6178696d756d2e205363686564756c656420636f726573206f7574206f66206f726465722e2043616e64696461746520696e636c756465642077697468207468652077726f6e6720636f6c6c61746f722e2043616e646964617465207363686564756c656420646573706974652070656e64696e672063616e64696461746520616c7265616479206578697374696e6720666f722074686520706172612e2043616e646964617465207375626d6974746564206275742070617261206e6f74207363686564756c65642e20496e76616c6964207369676e61747572652056616c696461746f7220696e646578206f7574206f6620626f756e64732e204d756c7469706c65206269746669656c6473207375626d69747465642062792073616d652076616c696461746f72206f722076616c696461746f7273206f7574206f66206f7264657220627920696e6465782e20417661696c6162696c697479206269746669656c642068617320756e65787065637465642073697a652e63616e63656c5f61756374696f6e6269646e65775f61756374696f6e0000648e100043000000cc0000000100000041756374696f6e7341756374696f6e496e666f5265736572766564416d6f756e747357696e6e696e67706172615f61756374696f6e6069203c2034603b207165640000002c00000008000000040000001800000094dc11003e00000043020000400000006069203c204c505053603b20606a203c2069603b20606a202b2031203c204c505053603b2071656494dc11003e000000490200001a00000050617261496e636c7573696f6e50656e64696e67417661696c6162696c69747994dc11003e0000009d00000001000000000000006b9d10000b00000000000000d89e1000020000000000000000000000089f1000050000000000000000000000689d10000300000000000000309f1000050000000000000000000000a89f10001000000000000000000000005a9d10000e00000000000000787d120000000000000000000000000028a01000030000000000000000000000faa410000800000000000000c7771100170000000000000002a510001200000000000000a077110019000000eea3100016000000787d12000000000004a410005500000059a410004a000000a3a410005700000000000000c8a211000400000000000000087311000f00000000000000b3a310000d00000000000000c0a310001500000000000000d5a310000a00000000000000a07711001900000000000000dfa310000900000000000000a07711001900000000000000e8a31000060000000000000090761100150000005fa0100053000000b2a010000b000000787d120000000000bda010005700000014a1100050000000787d12000000000064a1100056000000baa110001d000000d7a11000540000002ba210001b00000046a210005300000099a2100043000000dca210005100000099a21000430000002da310005300000080a310003300000040a010001f000000787d12000000000089711100230000002043616e63656c20616e20696e2d70726f67726573732061756374696f6e2e204d616b652061206e6577206269642066726f6d20616e206163636f756e742028696e636c7564696e6720612070617261636861696e206163636f756e742920666f72206465706c6f79696e672061206e65772070617261636861696e2e204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c206163746976652062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e202d20607375626020697320746865207375622d6269646465722049442c20616c6c6f77696e6720666f72206d756c7469706c6520636f6d706574696e67206269647320746f206265206d6164652062792028616e642066756e64656420627929207468652073616d65206163636f756e742e202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e742076616c7565206f66206041756374696f6e436f756e746572602e202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e205468697320697320746865202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e61756374696f6e5f696e646578436f6d706163743c41756374696f6e496e6465783e66697273745f736c6f746c6173745f736c6f74616d6f756e74204372656174652061206e65772061756374696f6e2e20546869732063616e206f6e6c792068617070656e207768656e2074686572652069736e277420616c726561647920616e2061756374696f6e20696e2070726f677265737320616e64206d6179206f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e20416363657074732074686520606475726174696f6e60206f6620746869732061756374696f6e20616e642074686520606c656173655f706572696f645f696e64657860206f662074686520696e697469616c206c6561736520706572696f64206f662074686520666f757220746861742061726520746f2062652061756374696f6e65642e6475726174696f6e6c656173655f706572696f645f696e6465780000000074a610000e000000000000000000000082a610000c00000000000000000000000000000000000000000000000000000000000000787d120090a610000000000000000000a0a6100001000000000000000100000000000000909d10000b0000000000000000000000a8a610002200000000000000000000000000000000000000000000000000000000000000787d1200cca610000000000000000000dca61000050000000000000000000000000000009b9d10000f000000010500000000000004a710001600000000000000a46611000c00000000000000000000000000000000000000787d12001ca7100000000000000000002ca7100002000000000000000000000000000000aa9d1000070000000105000000000000154812000e000000000000003ca710000e00000000000000000000000000000000000000787d12004ca7100000000000000000005ca7100003000000000000000000000041756374696f6e436f756e74657241756374696f6e496e64657800002c0000000000000001000000c0000000f9a9100023000000284c65617365506572696f644f663c543e2c20543a3a426c6f636b4e756d6265722900002c0000000000000001000000bf000000bfa810003e000000787d120000000000fda81000510000004ea9100054000000a2a910005700000028543a3a4163636f756e7449642c205061726149642900002c0000000000000001000000bf00000065a810004c000000b1a810000e00000057696e6e696e67446174613c543e00002c0000000000000001000000bf00000074a7100058000000cca71000520000001ea8100047000000205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e67657320617420656163682073616d706c6520696e207468652066696e616c20456e64696e6720506572696f64206f66207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f207468652053616d706c652053697a652e205468652066697273742073616d706c65206f662074686520656e64696e6720706572696f6420697320303b20746865206c617374206973206053616d706c652053697a65202d2031602e20416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e6720287375622d2972616e6765732e20496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e20546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f757220636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468652061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e204e756d626572206f662061756374696f6e73207374617274656420736f206661722e00000000fcaa10000c00000000000000154812000e00000000000000787d120008ab10000000000000000000787d120000000000000000000000000018ab10000c00000000000000154812000e00000000000000787d120024ab10000000000000000000787d120000000000000000000000000034ab10000e00000000000000373c12000300000000000000787d120044ab10000000000000000000787d120000000000000000000000000054ab10001300000000000000373c12000300000000000000787d120068ab10000000000000000000787d12000000000000000000456e64696e67506572696f642c0000000000000001000000c700000053616d706c654c656e6774682c0000000000000001000000c8000000536c6f7452616e6765436f756e7400002c0000000000000001000000c90000004c65617365506572696f6473506572536c6f74002c0000000000000001000000ca0000000000000004ad10000e0000000000000014ad10000300000000000000000000002cad100003000000000000000000000044ad10000d0000000000000054ad10000100000000000000000000005cad100001000000000000000000000064ad1000090000000000000070ad100004000000000000000000000090ad1000020000000000000000000000a0ad10000a00000000000000acad1000040000000000000000000000ccad1000030000000000000000000000281011000800000000000000f80f1100030000000000000000000000e4ad1000020000000000000000000000381011000a00000000000000940f1100020000000000000000000000f4ad1000010000000000000000000000fcad1000120000000000000010ae100003000000000000000000000028ae100003000000000000000000000040ae10000b000000000000004cae100005000000000000000000000074ae100002000000000000000000000084ae10000d0000000000000094ae1000020000000000000000000000a4ae1000020000000000000041756374696f6e53746172746564000082a610000c00000093af10000b000000d65512000b0000008bb2100053000000deb210004600000024b310002600000041756374696f6e436c6f73656400000082a610000c0000004cb210003f000000576f6e4465706c6f79000000693412000900000043b2100009000000cca21100060000007d66120007000000c8b11000550000001db2100026000000576f6e52656e6577616c0000cca211000600000093af10000b00000093af10000b0000007d661200070000001cb11000310000004db11000500000009db110002b0000008db0100053000000e0b010003c00000044b010004900000052657365727665436f6e66697363617465640000cca211000600000069341200090000007d661200070000009eaf10005e000000fcaf10002700000023b01000210000004269644163636570746564006934120009000000cca21100060000007d6612000700000093af10000b00000093af10000b00000030af10003300000063af10003000000057696e6e696e674f666673657400000082a610000c000000d65512000b000000b4ae10005c00000010af100020000000205468652077696e6e696e67206f6666736574207761732063686f73656e20666f7220616e2061756374696f6e2e20546869732077696c6c206d617020696e746f20746865206057696e6e696e67602073746f72616765206d61702e205c5b61756374696f6e5f696e6465782c20626c6f636b5f6e756d6265725c5d2041206e65772062696420686173206265656e206163636570746564206173207468652063757272656e742077696e6e65722e205c5b77686f2c20706172615f69642c20616d6f756e742c2066697273745f736c6f742c206c6173745f736c6f745c5d4c65617365506572696f6420536f6d656f6e6520617474656d7074656420746f206c65617365207468652073616d6520736c6f7420747769636520666f7220612070617261636861696e2e2054686520616d6f756e742069732068656c6420696e207265736572766520627574206e6f2070617261636861696e20736c6f7420686173206265656e206c65617365642e205c5b70617261636861696e5f69642c206c65617365722c20616d6f756e745c5d2046756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e205b6269646465722c20616d6f756e745d2046756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e205365636f6e642069732074686520746f74616c2e205b6269646465722c2065787472615f72657365727665642c20746f74616c5f616d6f756e745d20416e206578697374696e672070617261636861696e20776f6e2074686520726967687420746f20636f6e74696e75652e2046697273742062616c616e63652069732074686520657874726120616d6f756e7420726573657665642e205365636f6e642069732074686520746f74616c20616d6f756e742072657365727665642e205b70617261636861696e5f69642c20626567696e2c20636f756e742c20746f74616c5f616d6f756e745d20536f6d656f6e6520776f6e2074686520726967687420746f206465706c6f7920612070617261636861696e2e2042616c616e636520616d6f756e7420697320646564756374656420666f72206465706f7369742e205b6269646465722c2072616e67652c2070617261636861696e5f69642c20616d6f756e745d536c6f7452616e676520416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e205b61756374696f6e5f696e6465785d20416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f20636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e205b61756374696f6e5f696e6465782c206c656173655f706572696f642c20656e64696e675d5472616e73616374696f6e5061796d656e74000000000cb410001100000000000000000000001db410000a00000000000000000000000000000000000000000000000000000000000000787d120028b410000000000000000000787d1200000000000000000001000000000000006c2211000e00000000000000000000007a2211000800000000000000000000000000000000000000000000000000000000000000787d120038b410000000000000000000787d12000000000000000000010000004e6578744665654d756c7469706c6965724d756c7469706c696572002c0000000000000001000000cb0000002c0000000000000001000000cc00000000000000b8b410001200000000000000a46611000c00000000000000787d1200ccb410000000000000000000dcb41000010000000000000000000000e4b410000b00000000000000efb410002900000000000000787d120018b51000000000000000000028b5100001000000000000005472616e73616374696f6e4279746546656500002c0000000000000001000000cd00000073b5100043000000576569676874546f4665655665633c576569676874546f466565436f656666696369656e743c42616c616e63654f663c543e3e3e2c0000000000000001000000ce00000030b51000430000002054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e0000648e1000430000008c0000000100000000000000d0b61000150000000105000000000000e5b610000e00000000000000f3b610002a00000000000000000000000000000000000000787d120020b71000000000000000000030b7100001000000000000000000000000000000319e1000130000000105000000000000cca21100060000000000000038b710003500000000000000000000000000000000000000787d120070b71000000000000000000080b710000100000000000000000000000000000088b710001e0000000105000000000000cca211000600000000000000a6b710001400000000000000000000000000000000000000787d1200bcb710000000000000000000ccb71000010000000000000000000000417661696c6162696c6974794269746669656c647356616c696461746f72496e646578417661696c6162696c6974794269746669656c645265636f72643c543a3a426c6f636b4e756d6265723e0000002c0000000000000001000000bf00000040b810005900000043616e64696461746550656e64696e67417661696c6162696c6974793c543a3a486173682c20543a3a426c6f636b4e756d6265723e0000002c0000000000000001000000cf00000013b810002d00000050656e64696e67417661696c6162696c697479436f6d6d69746d656e747343616e646964617465436f6d6d69746d656e747300002c0000000000000001000000bf000000d4b710003f0000002054686520636f6d6d69746d656e7473206f662063616e646964617465732070656e64696e6720617661696c6162696c6974792c206279205061726149642e2043616e646964617465732070656e64696e6720617661696c6162696c6974792062792060506172614964602e20546865206c6174657374206269746669656c6420666f7220656163682076616c696461746f722c20726566657272656420746f20627920746865697220696e64657820696e207468652076616c696461746f72207365742e000000648e1000430000002201000029000000648e100043000000320100003100000076616c696461746f72206269746669656c647320636865636b6564206e6f7420746f20636f6e7461696e206269747320636f72726573706f6e64696e6720746f20756e6f6363757069656420636f7265733b207165640000648e10004300000034010000160000003eb910008f00000072756e74696d653a3a696e636c7573696f6e496e636c7573696f6e3a3a70726f636573735f6269746669656c64733a2050656e64696e67417661696c6162696c69747920616e642050656e64696e67417661696c6162696c697479436f6d6d69746d656e74730a09090909090909617265206f7574206f662073796e632c2064696420736f6d656f6e65206d6573732077697468207468652073746f726167653f000000648e1000430000003d0200001f00000034ba10003c00000070ba10001000000080ba10000a000000648e100043000000df010000280000007468697320717565727920646f6e652061626f76653b207165640000648e100043000000280200002600000056616c69646174696f6e206f75747075747320636865636b696e6720647572696e6720696e636c7573696f6e206f6620612063616e6469646174652020666f722070617261636861696e206060206661696c65643a204f7574626f756e6448726d7000002c0000000400000004000000d000000050726f636573736564446f776e776172644d657373616765730000002c0000000400000004000000d10000005570776172644d6573736167657300002c0000000400000004000000d200000048726d7057617465726d61726b0000002c0000000400000004000000d3000000bcfb100058000000760000000900000034bb10002b00000080ba10000a00000056616c69646174696f6e206f75747075747320636865636b696e6720666f722070617261636861696e20600000000000e4bb10000f00000000000000f4bb100004000000000000000000000014bc10000100000000000000000000001cbc10001100000000000000f4bb100004000000000000000000000030bc100001000000000000000000000038bc100011000000000000004cbc100003000000000000000000000064bc1000010000000000000043616e6469646174654261636b6564009abc100016000000cfb9110008000000b0bc10000900000019bd10000a000000eabc10002f00000043616e646964617465496e636c75646564000000b9bc10003100000043616e64696461746554696d65644f75740000009abc100016000000cfb9110008000000b0bc1000090000006cbc10002e00000020412063616e6469646174652074696d6564206f75742e205b63616e6469646174652c20686561645f646174615d43616e646964617465526563656970743c486173683e436f7265496e64657820412063616e6469646174652077617320696e636c756465642e205b63616e6469646174652c20686561645f646174615d20412063616e64696461746520776173206261636b65642e205b63616e6469646174652c20686561645f646174615d47726f7570496e6465780054bd100088000000d60200001a00000054bd100088000000e20100002700000054bd100088000000d20200001d0000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f736f72742e727354bd100088000000c50000003000000054bd100088000000c8000000300000001bbe10005c0000004b0000000f000000667265657a6566726565636c61696d2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f696e64696365732f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065722f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f70617261735f7375646f5f777261707065722e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f73657373696f6e5f696e666f2e727370616c6c65745f696e64696365733a3a70616c6c6574000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f78636d2f70616c6c65742d78636d2f7372632f6c69622e72730000006cc01000590000005c0100000f000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f0000006cc0100059000000050300001b0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f626162652f7372632f6c69622e72734e6f745472616e7366657200000000b0c110000f00000000000000c0c11000010000000000000000000000c8c110001100000000000000dcc11000010000000000000000000000e4c110001500000000000000fcc110000200000000000000000000000cc210000e000000000000001cc21000010000000000000000000000904011000d0000000000000024c210000100000000000000000000001c3911000c000000000000002cc21000010000000000000000000000649011000d0000000000000034c210000100000000000000000000007c9011000f000000000000003cc21000010000000000000050617261446f65736e744578697374005fc310003900000050617261416c726561647945786973747300000022c310003d000000457863656564734d61784d65737361676553697a65000000bfc210005a00000019c3100009000000436f756c646e74436c65616e757000009ec21000210000008cc21000120000007bc210001100000060c210001b00000044c210001c0000002043616e6e6f7420646f776e67726164652070617261636861696e2e2043616e6e6f74207570677261646520706172617468726561642e204e6f7420612070617261636861696e2e204e6f74206120706172617468726561642e20436f756c64206e6f74207363686564756c65207061726120636c65616e75702e204120444d50206d65737361676520636f756c646e27742062652073656e742062656361757365206974206578636565647320746865206d6178696d756d2073697a6520616c6c6f77656420666f72206120646f776e77617264206d6573736167652e20546865207370656369666965642070617261636861696e206f72207061726174687265616420697320616c726561647920726567697374657265642e20546865207370656369666965642070617261636861696e206f722070617261746872656164206973206e6f7420726567697374657265642e13bf1000460000003c00000001000000a2be1000480000003e000000010000004261626545717569766f636174696f6e736c6f74206e756d626572206973207536343b2069742073686f756c642072656c61746520696e20736f6d652077617920746f2077616c6c20636c6f636b2074696d653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e00006cc0100059000000640200000e0000006cc0100059000000660200003b00000054696d657374616d7020736c6f74206d757374206d61746368206043757272656e74536c6f7460006cc01000590000003e0300000900000065706f636820696e64696365732077696c6c206e6576657220726561636820325e3634206265666f726520746865206465617468206f662074686520756e6976657273653b207165640000006cc0100059000000060200000e0000006cc01000590000000e0200000e00000065706f636820696e646578206973207536343b20697420697320616c77617973206f6e6c7920696e6372656d656e746564206279206f6e653b20696620753634206973206e6f7420656e6f7567682077652073686f756c6420637261736820666f72207361666574793b207165642e006cc01000590000004b0200004600000045706f6368436f6e66696720697320696e697469616c697a656420696e2067656e657369733b207765206e65766572206074616b6560206f7220606b696c6c602069743b207165646cc010005900000057020000290000006cc0100059000000440200002d00000000000000e04a1100130000000000000074c61000020000000000000000000000a4c61000040000000000000000000000444b11001c0000000000000074c61000020000000000000000000000c4c6100008000000000000000000000004c71000120000000000000018c7100001000000000000000000000030c71000040000000000000000000000b14f110012000000000000005ac910001c00000000000000ed4f11000f00000000000000fc4f11001000000084c8100043000000c7c810004200000009c91000440000004dc910000d00000084c8100043000000c7c810004200000009c91000440000004dc910000d000000d74e1100440000001b4f110046000000614f110046000000a74f11000a000000706c616e5f636f6e6669675f6368616e67650000000000006ac81000060000000000000070c810001400000050c7100058000000a8c7100055000000fdc710005700000054c810001600000020506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e20746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e204d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164206e6f74206265656e20656e6163746564207965742e636f6e6669674e657874436f6e66696744657363726970746f72205265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e45717569766f636174696f6e50726f6f663c543a3a4865616465723e000000000000204811000a0000000000000000000000544112000300000000000000000000000000000000000000000000000000000000000000787d1200f8ce1000000000000000000008cf100001000000000000000100000000000000741712000b000000000000000000000010cf10002700000000000000000000000000000000000000000000000000000000000000787d120038cf1000000000000000000048cf1000010000000000000001000000000000003e4811000b000000000000000000000050cf10000400000000000000000000000000000000000000000000000000000000000000787d120054cf1000000000000000000064cf100002000000000000000100000000000000584811000b000000000000000000000050cf10000400000000000000000000000000000000000000000000000000000000000000787d120054cf1000000000000000000074cf1000010000000000000001000000000000009e4811000a00000000000000000000007ccf10001600000000000000000000000000000000000000000000000000000000000000787d120094cf10000000000000000000a4cf10000a0000000000000001000000000000008648110018000000000000000000000070c810001400000000000000000000000000000000000000000000000000000000000000787d1200f4cf1000000000000000000004d0100001000000000000000000000000000000784811000e00000000000000000000007ccf10001600000000000000000000000000000000000000000000000000000000000000787d120094cf100000000000000000000cd0100001000000000000000100000000000000f41712000f000000000000000000000010cf10002700000000000000000000000000000000000000000000000000000000000000787d120038cf1000000000000000000014d0100001000000000000000100000000000000324811000c0000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d12001cd0100000000000000000002cd010000900000000000000010000000000000054431100110000000105000000000000373c1200030000000000000074d010001b00000000000000000000000000000000000000787d120090d010000000000000000000a0d0100001000000000000000100000000000000a84811000b0000000000000000000000a8d010000f00000000000000000000000000000000000000000000000000000000000000787d1200b8d010000000000000000000c8d0100002000000000000000000000000000000b3481100130000000000000000000000a8d010000f00000000000000000000000000000000000000000000000000000000000000787d1200d8d010000000000000000000e8d0100003000000000000000100000000000000634811000a0000000000000000000000b05211002000000000000000000000000000000000000000000000000000000000000000787d120000d11000000000000000000010d1100005000000000000000100000000000000c6481100080000000000000000000000154812000e00000000000000000000000000000000000000000000000000000000000000787d12001cd01000000000000000000038d11000050000000000000001000000000000006d4811000b000000000000000000000060d110001600000000000000000000000000000000000000000000000000000000000000787d120078d11000000000000000000088d1100001000000000000000000000000000000494811000f000000000000000000000060d110001600000000000000000000000000000000000000000000000000000000000000787d120078d11000000000000000000090d110000200000000000000000000002c0000000000000001000000d4000000acda1000150000005665633c28417574686f7269747949642c2042616265417574686f72697479576569676874293e002c0000000000000001000000bd00000091da10001b000000536c6f742c0000000000000001000000d40000002fda10003e0000006dda1000240000001ada1000150000007363686e6f72726b656c3a3a52616e646f6d6e65737300002c0000000000000001000000d500000054d810002e000000787d12000000000082d810000b000000787d1200000000008dd8100041000000ced810003e0000000cd910004500000051d910004500000096d9100041000000d7d91000430000002c0000000000000001000000bf000000fcd7100058000000e5d7100017000000cdd71000180000002c0000000000000001000000c000000088d610001f000000787d120000000000a7d610003d000000e4d610004000000024d7100025000000787d12000000000049d710003b00000084d7100042000000c6d71000070000005665633c7363686e6f72726b656c3a3a52616e646f6d6e6573733e002c0000000000000001000000d600000043d61000450000004d6179626552616e646f6d6e657373002c0000000000000001000000bf000000bcd5100040000000fcd51000470000002c0000000000000001000000bf000000cbd410005700000022d510005400000076d51000460000002c0000000000000001000000d700000071d3100057000000c8d3100005000000cdd31000520000001fd410005600000075d410005600000086d2100036000000787d120000000000bcd210004500000001d310004400000045d310002c0000004261626545706f6368436f6e66696775726174696f6e00002c0000000000000001000000bf00000025d2100061000000a0d110004b000000ebd110003a0000002054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e67652028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e2054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e2067656e657369732e20486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e6564207570206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636b20657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e6420604e602e204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f6620656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e20736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e29207468617420696e636c756465732074686520565246206f75747075742067656e657261746564206174207468697320626c6f636b2e2054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c657373207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e2054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d6560206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e2054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e205765206d616b6520612074726164656f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e2057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f2060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e20576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572792065706f63682e204e6578742065706f636820617574686f7269746965732e204e6578742065706f63682072616e646f6d6e6573732e2050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e20232053656375726974792054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e792063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d626572732074686174207468697320286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e20626520757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e2043757272656e7420736c6f74206e756d6265722e2054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e2054686973206973203020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2043757272656e742065706f636820617574686f7269746965732e2043757272656e742065706f636820696e6465782e0000000000000034db10000d00000000000000544112000300000000000000787d120044db1000000000000000000054db10000300000000000000000000006cdb10001100000000000000f79811000900000000000000787d120080db1000000000000000000090db1000050000000000000045706f63684475726174696f6e0000002c0000000000000001000000d8000000e8dc10003b00000023dd10004600000069dd1000480000004578706563746564426c6f636b54696d650000002c0000000000000001000000d9000000b8db100041000000f9db1000440000003ddc1000410000007edc100042000000c0dc10002800000020546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e6720626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f7574207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f74206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e2061667465722074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e7375646f5f65737461626c6973685f68726d705f6368616e6e656c7375646f5f71756575655f646f776e776172645f78636d7375646f5f7363686564756c655f70617261636861696e5f646f776e67726164657375646f5f7363686564756c655f706172617468726561645f757067726164657375646f5f7363686564756c655f706172615f636c65616e75707375646f5f7363686564756c655f706172615f696e697469616c697a6500f44511005a0000001502000010000000496e5573654e6f7441737369676e65645065726d616e656e74000000000000000cdf10000d000000000000001cdf10000200000000000000000000002cdf100001000000000000000000000034df10000a0000000000000040df100001000000000000000000000048df100001000000000000000000000050df10000b000000000000005cdf10000200000000000000000000006cdf10000100000000000000496e64657841737369676e65640000006934120009000000bedf10000c00000004e010002d000000496e64657846726565640000bedf10000c000000cadf10003a000000496e64657846726f7a656e00bedf10000c000000693412000900000074df10004a0000002041206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e205c5b696e6465782c2077686f5c5d4163636f756e74496e6465782041206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e205c5b696e6465785c5d2041206163636f756e7420696e646578207761732061737369676e65642e205c5b696e6465782c2077686f5c5d0000000000000016be1000050000000000000010e1100001000000000000000000000028e11000120000000000000000000000580211000800000000000000b8e11000020000000000000000000000e8e1100014000000000000000000000012be1000040000000000000010e1100001000000000000000000000088e210001200000000000000000000003f0211000e0000000000000018e3100003000000000000000000000060e310001500000000000000000000000cbe1000060000000000000010e1100001000000000000000000000008e41000110000000000000000000000177f1200050000000000000097e810000f00000057eb100027000000787d1200000000007eeb100038000000787d12000000000000e7110034000000787d120000000000b6eb10003d000000787d120000000000d6e7100025000000787d1200000000005e3a12000b000000ace510000a000000b6e5100027000000e0e9100019000000fae510000d00000007e61000140000001be6100025000000a23a12000c000000000000007a66120003000000000000004f4712000c00000000000000177f1200050000000000000097e810000f000000f9e910005800000051ea10002f000000787d12000000000000e7110034000000787d12000000000080ea10004a0000002de7100058000000787d120000000000d6e7100025000000787d1200000000005e3a12000b000000ace510000a000000b6e5100027000000caea10001a000000fae510000d00000007e61000140000002c3e12000d000000e4ea1000390000001deb10003a000000a23a12000c000000a6e8100026000000787d120000000000cce8100058000000787d12000000000024e9100056000000787d1200000000007ae9100044000000787d120000000000bee9100022000000787d1200000000005e3a12000b000000ace510000a000000b6e5100027000000e0e9100019000000fae510000d00000007e61000140000001be6100025000000a23a12000c000000000000007a66120003000000000000004f4712000c00000000000000177f1200050000000000000097e810000f000000000000000cbe100006000000000000000d4a12000400000040e610005600000096e610003b000000787d120000000000d1e6100032000000787d12000000000003e710002a0000002de710005800000085e7100051000000787d120000000000d6e7100025000000787d1200000000005e3a12000b000000ace510000a000000b6e5100027000000fbe710001f000000fae510000d00000007e61000140000002c3e12000d0000001ae810003e00000058e810003f000000a23a12000c00000090e410005a000000787d120000000000eae410005700000041e510001c000000787d1200000000005de510002c000000787d12000000000089e5100023000000787d1200000000005e3a12000b000000ace510000a000000b6e5100027000000dde510001d000000fae510000d00000007e61000140000001be6100025000000a23a12000c00000020467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d75737420686176652061206e6f6e2d66726f7a656e206163636f756e742060696e646578602e202d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e20456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e202d20604f283129602e202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202d20557020746f206f6e6520736c617368206f7065726174696f6e2e202d204f6e65206576656e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d204442205765696768743a203120526561642f577269746520284163636f756e74732920466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c72656164792068656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e202d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e202d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e202d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e20456d6974732060496e64657841737369676e656460206966207375636365737366756c2e202d20557020746f206f6e652072657365727665206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e7420286f726967696e616c206f776e657229543a3a4163636f756e74496e646578204672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e205061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e202d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e20456d6974732060496e646578467265656460206966207375636365737366756c2e202d204f6e652072657365727665206f7065726174696f6e2e2041737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6e206973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e202d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e202d204f6e65207472616e73666572206f7065726174696f6e2e202020202d2052656164733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e7429202020202d205772697465733a20496e6469636573204163636f756e74732c2053797374656d204163636f756e742028726563697069656e74292041737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e205061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e202d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e00000000006246110008000000010200000000000097e810000f000000000000004cec10002200000000000000000000000000000000000000787d120070ec1000000000000000000080ec100001000000000000000000000028543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20626f6f6c2900002c0000000000000001000000bf00000088ec10002200000020546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e000000000000181011000700000000000000a46611000c00000000000000787d1200e4ec10000000000000000000f4ec100001000000000000002c0000000000000001000000da000000fcec10002b00000020546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0038ed10005c000000ec010000010000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f73657373696f6e2f7372632f6c69622e72733aee1000010000003bee10000d00000072756e74696d653a3a6d6d7270616c6c65745f6d6d725f7072696d6974697665732f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6d65726b6c652d6d6f756e7461696e2d72616e67652f7072696d6974697665732f7372632f6c69622e72735b5d204d4d52206572726f723a20496e76616c69642072616e676520666f7220746869732061756374696f6e6261642072616e676572616e676520626567696e7320746f6f206561726c79000000000000003ede10001d0000000000000090ef1000020000000000000000000000c0ef100001000000000000000000000024de10001a0000000000000024611100010000000000000000000000c8ef100001000000000000000000000004de1000200000000000000024611100010000000000000000000000d0ef1000010000000000000000000000e3dd1000210000000000000024611100010000000000000000000000d8ef1000010000000000000000000000ccdd10001700000000000000e0ef100002000000000000000000000010f01000040000000000000000000000b1dd10001b0000000000000030f0100004000000000000000000000090f01000040000000000000000000000016511000200000000000000cca21100060000000000000017f310000700000000000000c8c011000f000000d3f210004400000090f21000430000006cf210002400000046f210002600000000000000016511000200000000000000cca2110006000000000000002af2100003000000000000002df210001900000085f1100027000000787d120000000000acf110005a00000006f21000240000000000000012a411000600000000000000cca211000600000000000000c4a511000900000000000000cca21100060000000000000069f110000c00000000000000373c1200030000000000000075f110001000000000000000373c120003000000b0f0100041000000787d120000000000f1f010005600000047f110002200000020466f72636566756c6c792065737461626c6973682061206368616e6e656c2066726f6d207468652073656e64657220746f2074686520726563697069656e742e2054686973206973206571756976616c656e7420746f2073656e64696e6720616e206048726d703a3a68726d705f696e69745f6f70656e5f6368616e6e656c602065787472696e73696320666f6c6c6f776564206279206048726d703a3a68726d705f6163636570745f6f70656e5f6368616e6e656c602e6d61785f63617061636974796d61785f6d6573736167655f73697a652053656e64206120646f776e776172642058434d20746f2074686520676976656e20706172612e2054686520676976656e2070617261636861696e2073686f756c6420657869737420616e6420746865207061796c6f61642073686f756c64206e6f74206578636565642074686520707265636f6e666967757265642073697a652060636f6e6669672e6d61785f646f776e776172645f6d6573736167655f73697a65602e78636d78636d3a3a6f70617175653a3a56657273696f6e656458636d20446f776e677261646520612070617261636861696e20746f2061207061726174687265616420557067726164652061207061726174687265616420746f20612070617261636861696e205363686564756c652061207061726120746f20626520636c65616e656420757020617420746865207374617274206f6620746865206e6578742073657373696f6e2e205363686564756c652061207061726120746f20626520696e697469616c697a656420617420746865207374617274206f6620746865206e6578742073657373696f6e2e67656e657369735061726153657373696f6e496e666f0000000000000038f410001400000000000000000000004cf410001100000000000000000000000000000000000000000000000000000000000000787d120060f41000000000000000000070f410000300000000000000010000000000000088f41000150000000000000000000000836a12000c00000000000000000000000000000000000000000000000000000000000000787d1200a0f410000000000000000000b0f4100001000000000000000100000000000000b8f41000080000000106000000000000836a12000c00000000000000c0f410000b00000000000000000000000000000000000000787d1200ccf410000000000000000000dcf4100003000000000000000000000041737369676e6d656e744b657973556e736166655665633c41737369676e6d656e7449643e0000002c0000000000000001000000bd00000007f610002900000030f610005b0000008bf610002b0000004561726c6965737453746f72656453657373696f6e0000002c0000000000000001000000c0000000c7f510004000000053657373696f6e7353657373696f6e496e666f002c0000000000000001000000db000000f4f41000290000001df510004d0000006af510005d0000002053657373696f6e20696e666f726d6174696f6e20696e206120726f6c6c696e672077696e646f772e2053686f756c64206861766520616e20656e74727920696e2072616e676520604561726c6965737453746f72656453657373696f6e2e2e3d43757272656e7453657373696f6e496e646578602e20446f6573206e6f74206861766520616e7920656e7472696573206265666f7265207468652073657373696f6e20696e64657820696e207468652066697273742073657373696f6e206368616e6765206e6f74696669636174696f6e2e20546865206561726c696573742073657373696f6e20666f722077686963682070726576696f75732073657373696f6e20696e666f2069732073746f7265642e2041737369676e6d656e74206b65797320666f72207468652063757272656e742073657373696f6e2e204e6f7465207468617420746869732041504920697320707269766174652064756520746f206974206265696e672070726f6e6520746f20276f66662d62792d6f6e65272061742073657373696f6e20626f756e6461726965732e205768656e20696e20646f7562742c20757365206053657373696f6e73602041504920696e73746561642e000032f710002f00000072756e74696d653a3a70617261636861696e73706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7574696c2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f7574696c2e7273546f6f6b206163746976652076616c696461746f72732066726f6d2073657420776974682077726f6e672073697a65000000dbf710002d00000085f7100056000000450500000900000073746f72656c6f61642f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f736c6963652e7273436f7079696e67206265747765656e20736c6963657320726571756972657320657175616c206c656e6774687328f81000140000003cf810000400000085f71000560000004109000009000000496e646578206f7574206f662072616e67653a20203e3d2070616c6c65745f626162653a3a70616c6c65740000000000e84911001800000000000000a8831100010000000000000000000000004a11001800000000000000a0831100010000000000000000000000434a11001600000000000000b083110001000000000000000000000071de10000b0000000000000034f910000100000000000000000000004c40110008000000000000003cf910000100000000000000000000006cde1000050000000000000044f91000010000000000000000000000c5c010000b000000000000004cf910000100000000000000000000007cde1000090000000000000054f9100001000000000000000bfa100024000000e1f910002a000000c4f910001d00000091f91000330000005cf91000350000002054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e2054686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e2054686520696e64657820776173206e6f7420617661696c61626c652e2054686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e2054686520696e64657820776173206e6f7420616c72656164792061737369676e65642e3a5f5f50414c4c45545f56455253494f4e5f5f3a617373657274696f6e206661696c65643a2062697473206173207573697a65203c3d20726573756c742e6c656e2829000084fa100063000000480000000d0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f6269745f7665632e7273000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f0000002c0000000400000004000000dc0000002c0000000400000004000000dd0000004269742d566563746f72206361706163697479206578636565646564ffffff1f68fc10001e000000651612000300000014fc100054000000ec03000009000000bcfb1000580000002402000009000000bcfb1000580000001f0100000e000000bcfb1000580000002b020000090000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7665632f6170692e72732f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7665632e72734269742d566563746f722063617061636974792065786365656465643a2000000000000068fd10000e0000000000000078fd100001000000000000000000000080fd1000150000000000000098fd1000010000000000000000000000647f12000800000000000000a0fd1000010000000000000000000000a8fd10001300000000000000bcfd1000010000000000000000000000c4fd10001200000000000000d8fd1000010000000000000000000000e0fd10000900000000000000ecfd1000010000000000000000000000f4fd100017000000000000000cfe100001000000000000000000000014fe10000b0000000000000020fe1000010000000000000056657374696e6742616c616e636500004aff1000270000004c69717569646974795265737472696374696f6e7300000018ff100032000000fbfe10001d000000496e73756666696369656e7442616c616e636500ddfe10001e0000004578697374656e7469616c4465706f7369740000a2fe10003b0000004b656570416c6976650000007efe1000240000004578697374696e6756657374696e675363686564756c65004bfe100033000000446561644163636f756e740028fe1000230000002042656e6566696369617279206163636f756e74206d757374207072652d657869737420412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e74205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742042616c616e636520746f6f206c6f7720746f2073656e642076616c756520476f7420616e206f766572666c6f7720616674657220616464696e67204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c756500000084ff10005d000000e30000000f0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f62616c616e6365732f7372632f6c69622e727370616c6c65745f7375646f3a3a70616c6c65742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f7375646f2f7372632f6c69622e727370616c6c65745f6d6d722f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6d65726b6c652d6d6f756e7461696e2d72616e67652f7372632f6c69622e727370616c6c65745f62616c616e6365733a3a70616c6c657470616c6c65745f617574686f726974795f646973636f766572793a3a70616c6c65742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f617574686f726974792d646973636f766572792f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a6f726967696e2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f6f726967696e2e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d702f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f756d702e72730000600211001d0000007472616e736665725f6b6565705f616c697665666f7263655f7472616e736665727365745f62616c616e63657472616e736665725f5f5068616e746f6d4974656d2063616e6e6f7420626520757365642e000000e50111003d000000be00000001000000fa00110068000000590000000f0000005468652070726f6f6620697320696e636f72726563742e4d65726b6c654d6f756e7461696e52616e67654e756d6265724f664c65617665735468652070726f6f662068617320696e636f7272656374206e756d626572206f66206c6561766573206f722070726f6f66206974656d732e180311001a0000004552524f523a20436f72727570746564207374617465206174206d6d720000000000000040041100080000000000000000000000480411001600000000000000000000000000000000000000000000000000000000000000787d12006004110000000000000000007004110001000000000000000100000000000000ca0211000e0000000000000000000000544112000300000000000000000000000000000000000000000000000000000000000000787d1200780411000000000000000000880411000100000000000000010000000000000090041100050000000106000000000000544112000300000000000000480411001600000000000000000000000000000000000000787d1200980411000000000000000000a8041100040000000000000000000000526f6f74486173683c5420617320436f6e6669673c493e3e3a3a4861736800002c0000000000000001000000c60000008e051100160000002c0000000000000001000000d4000000620511002c0000004e6f6465730000002c0000000000000001000000bf000000c804110020000000787d120000000000e80411004b000000330511002f00000020486173686573206f6620746865206e6f64657320696e20746865204d4d522e204e6f7465207468697320636f6c6c656374696f6e206f6e6c7920636f6e7461696e73204d4d52207065616b732c2074686520696e6e6572206e6f6465732028616e64206c65617665732920617265207072756e656420616e64206f6e6c792073746f72656420696e20746865204f6666636861696e2044422e2043757272656e742073697a65206f6620746865204d4d5220286e756d626572206f66206c6561766573292e204c6174657374204d4d5220526f6f7420686173682ef4ff100059000000880000000f0000004d4d522070757368206e65766572206661696c732e000000570011006a000000a40000001c0000004d4d522066696e616c697a65206e65766572206661696c732e0000002c000000010000000100000012000000570011006a000000a7000000310000003806110098000000de0100000900000038061100980000007c0200000e0000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f6d6f642e7273526571756972655375646f00000000006007110005000000000000006807110001000000000000000000000070071100010000000000000000000000482212000a00000000000000ec33120001000000000000000000000078071100010000000000000000000000800711000a00000000000000680711000100000000000000000000007007110001000000000000005375646964000000670b12000e000000ca071100230000008a071100400000005375646f4173446f6e6520546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e2041207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d00000000000000a00811000400000000000000a4081100010000000000000000000000bc0811000a00000000000000000000000c091100150000000000000024091100020000000000000000000000540911000a0000000000000000000000a40911000700000000000000ac091100010000000000000000000000c40911000900000000000000000000000c0a11000700000000000000140a1100020000000000000000000000440a11000b000000000000007375646f0000000037e7110004000000000000003be7110018000000fd0b11004e000000787d12000000000000e7110034000000787d1200000000005e3a12000b000000010b110008000000090b110019000000220b1100180000003a0b110032000000a23a12000c0000007375646f5f756e636865636b65645f7765696768740000000000000037e7110004000000000000003be711001800000000000000f80c11000700000000000000af67120006000000fd0b11004e0000004b0c11004c000000970c11002d000000787d12000000000000e7110034000000787d1200000000005e3a12000b000000010b110008000000c40c110034000000a23a12000c0000007365745f6b657900000000007a66120003000000000000006c0b1100230000008f0b11005d000000787d12000000000000e7110034000000787d1200000000005e3a12000b000000010b110008000000090b110019000000ec0b110011000000a23a12000c0000007375646f5f61730000000000a61f120003000000000000006c0b1100230000000000000037e7110004000000000000003be71100180000009c0a110054000000f00a110011000000787d12000000000000e7110034000000787d1200000000005e3a12000b000000010b110008000000090b110019000000220b1100180000003a0b110032000000a23a12000c0000002041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d206120676976656e206163636f756e742e202d204f2831292e202d204c696d697465642073746f726167652072656164732e202d204f6e6520444220777269746520286576656e74292e202d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e202d204f6e65204442206368616e67652e2041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e20546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865205375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e202d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e5f77656967687400000000002c3c12000300000000000000000000004f4712000c00000000000000000000000000000000000000000000000000000000000000787d1200580d11000000000000000000680d11000100000000000000010000002c0000000000000001000000de000000700d1100210000002054686520604163636f756e74496460206f6620746865207375646f206b65792e6c6f636174696f6e20616e6420726573756c7420626567696e20657175616c3b2073616d652073697a653b20716564d00d11004a0000009e0000001f0000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f78636d2f78636d2d6275696c6465722f7372632f6c6f636174696f6e5f636f6e76657273696f6e2e7273000084ff10005d0000008f0100000f000000000000008c0f11000700000000000000940f1100020000000000000000000000a40f1100010000000000000000000000ac0f11000800000000000000940f1100020000000000000000000000b40f1100020000000000000000000000c40f11000800000000000000cc0f1100030000000000000000000000e40f1100010000000000000000000000ec0f11000a00000000000000f80f110003000000000000000000000010101100010000000000000000000000181011000700000000000000940f110002000000000000000000000020101100010000000000000000000000281011000800000000000000940f110002000000000000000000000030101100010000000000000000000000381011000a00000000000000940f1100020000000000000000000000441011000100000000000000000000004c101100120000000000000060101100040000000000000000000000801011000300000000000000456e646f7765640069341200090000007d661200070000000c13110049000000447573744c6f73748812110050000000d8121100340000005472616e73666572693412000900000069341200090000007d66120007000000601211002800000042616c616e6365536574000069341200090000007d661200070000007d661200070000002d121100330000004465706f73697400e51111004800000052657365727665649d11110048000000556e72657365727665640000531111004a0000005265736572766552657061747269617465640000693412000900000069341200090000007d661200070000004d111100060000009810110054000000ec10110037000000231111002a00000020536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742e2046696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e205c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735c5d53746174757320536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655c5d20536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655c5d20536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e205c5b77686f2c206465706f7369745c5d20412062616c616e6365207761732073657420627920726f6f742e205c5b77686f2c20667265652c2072657365727665645c5d205472616e73666572207375636365656465642e205c5b66726f6d2c20746f2c2076616c75655c5d20416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c20726573756c74696e6720696e20616e206f75747269676874206c6f73732e205c5b6163636f756e742c2062616c616e63655c5d20416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6163636f756e742c20667265655f62616c616e63655c5d0000000000000058021100080000000000000008141100020000000000000000000000381411001b00000000000000000000004d0211000b0000000000000010151100030000000000000000000000581511001200000000000000000000003f0211000e00000000000000e8151100030000000000000000000000301611000600000000000000000000002c021100130000000000000008141100020000000000000000000000601611000b0000000000000000000000f918110004000000000000006c0b110023000000000000008b7611000500000000000000fd18110013000000551b110036000000787d1200000000008b1b110042000000cd1b110048000000151c1100450000005a1c11002d000000787d120000000000871c110046000000787d1200000000005e3a12000b000000cd1c11004c000000191d1100330000004c1d11005a000000787d120000000000a61d110013000000787d120000000000b91d1100540000000d1e11004b000000581e1100350000008d1e110058000000e51e110052000000371f11003e000000751f110022000000971f110051000000e81f1100370000001f20110045000000a23a12000c00000000000000a61f120003000000000000006c0b11002300000000000000411b11000800000000000000fd1811001300000000000000491b11000c00000000000000fd181100130000001019110025000000787d12000000000035191100480000007d19110042000000bf19110046000000051a110040000000787d120000000000451a11002d000000787d1200000000005e3a12000b000000721a110020000000921a110031000000c31a110016000000d91a11000f000000e81a11001a000000021b1100190000001b1b110026000000a23a12000c00000000000000f318110006000000000000006c0b11002300000000000000f918110004000000000000006c0b110023000000000000008b7611000500000000000000fd181100130000002018110054000000741811000b0000005e3a12000b0000007f18110050000000cf18110024000000a23a12000c000000b8161100540000000c17110010000000787d1200000000001c1711002f000000787d1200000000004b171100310000005e3a12000b0000007c1711003a000000b617110018000000ce17110047000000151811000b0000002053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e205b607472616e73666572605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572202d2043686561706572207468616e207472616e736665722062656361757365206163636f756e742063616e6e6f74206265206b696c6c65642e202d2042617365205765696768743a2035312e3420c2b573202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374202873656e64657220697320696e206f7665726c617920616c72656164792920233c2f7765696768743e2045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265207370656369666965642e202d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069732020206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e736f7572636564657374436f6d706163743c543a3a42616c616e63653e20536574207468652062616c616e636573206f66206120676976656e206163636f756e742e20546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c20616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e20496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c2069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e20546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e202d20496e646570656e64656e74206f662074686520617267756d656e74732e202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a20202020202d204372656174696e673a2032372e353620c2b57320202020202d204b696c6c696e673a2033352e313120c2b573202d204442205765696768743a203120526561642c203120577269746520746f206077686f606e65775f667265656e65775f7265736572766564205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e20607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e2049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e2052656c617465642066756e6374696f6e733a2020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c20636175736520202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e2020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c2020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d202d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429202d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e74202d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e00000000ce4811000d0000000000000000000000c42111000a00000000000000000000000000000000000000000000000000000000000000787d1200d02111000000000000000000e021110001000000000000000100000000000000484712000700000001020000000000004f4712000c00000000000000e82111001700000000000000000000000000000000000000787d12000022110000000000000000001022110003000000000000000100000000000000282211000500000001020000000000004f4712000c000000000000002d2211001c00000000000000000000000000000000000000787d12004c22110000000000000000005c221100020000000000000001000000000000006c2211000e00000000000000000000007a2211000800000000000000000000000000000000000000000000000000000000000000787d120084221100000000000000000094221100030000000000000001000000543a3a42616c616e636500002c0000000000000001000000df000000d5231100260000004163636f756e74446174613c543a3a42616c616e63653e002c0000000000000001000000e00000006a2311001b000000787d12000000000085231100500000004c6f636b735665633c42616c616e63654c6f636b3c543a3a42616c616e63653e3e0000002c0000000000000001000000bd000000f32211002e000000212311004900000053746f7261676556657273696f6e52656c656173657300002c0000000000000001000000cc000000ac2211001f000000787d120000000000cb221100280000002053746f726167652076657273696f6e206f66207468652070616c6c65742e20546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e20416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e205468652062616c616e6365206f6620616e206163636f756e742e204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e2054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e0000000000c4fd10001200000000000000c42111000a00000000000000787d12003424110000000000000000004424110001000000000000002c0000000000000001000000e10000004c2411003500000020546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e424b4e470000004625110023000000202511002600000072756e74696d653a3a6261626570616c6c65745f626162653a3a65717569766f636174696f6e2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f626162652f7372632f65717569766f636174696f6e2e72734572726f72207375626d697474696e672065717569766f636174696f6e207265706f72743a205375626d697474656420424142452065717569766f636174696f6e207265706f72742e00000074251100260000005375626d6974746564204752414e4450412065717569766f636174696f6e207265706f72742e556d700000000000000000271100130000000105000000000000cca211000600000000000000132711001700000000000000000000000000000000000000787d12002c27110000000000000000003c271100060000000000000001000000000000006c271100160000000105000000000000cca211000600000000000000822711000a00000000000000000000000000000000000000787d12008c27110000000000000000009c2711000b000000000000000100000000000000f42711000d000000000000000000000064ac11000b00000000000000000000000000000000000000000000000000000000000000787d120004281100000000000000000014281100050000000000000001000000000000003c2811001a0000000000000000000000cca211000600000000000000000000000000000000000000000000000000000000000000787d12005828110000000000000000006828110005000000000000000000000052656c6179446973706174636851756575657356656344657175653c5570776172644d6573736167653e00002c0000000000000001000000e20000002c2c11005c000000787d120000000000882c11005e000000e62c11001d000000787d120000000000032d11002a00000052656c61794469737061746368517565756553697a65287533322c20753332292c0000000000000001000000d70000000c2a110051000000787d1200000000005d2a11003c000000992a110038000000787d120000000000d12a11005d0000002e2b11005e0000008c2b11004f000000787d12000000000009b211000b000000db2b1100510000004e6565647344697370617463680000002c0000000000000001000000bd0000004329110046000000787d12000000000009b211000b000000892911004d000000d6291100360000004e6578744469737061746368526f756e6453746172745769746800002c0000000000000001000000bf000000902811005f000000ef28110011000000787d12000000000009b211000b00000000291100430000002054686973206973207468652070617261207468617420676574732077696c6c20676574206469737061746368656420666972737420647572696e6720746865206e6578742075707761726420646973706174636861626c6520717565756520657865637574696f6e20726f756e642e202d2049662060536f6d65287061726129602c207468656e20607061726160206d7573742062652070726573656e7420696e20604e656564734469737061746368602e20546865206f726465726564206c697374206f6620605061726149646073207468617420686176652061206052656c6179446973706174636851756575656020656e7472792e202d2054686520736574206f66206974656d732066726f6d207468697320766563746f722073686f756c642062652065786163746c792074686520736574206f6620746865206b65797320696e2020206052656c617944697370617463685175657565736020616e64206052656c61794469737061746368517565756553697a65602e2053697a65206f6620746865206469737061746368207175657565732e204361636865732073697a6573206f66207468652071756575657320696e206052656c617944697370617463685175657565602e204669727374206974656d20696e20746865207475706c652069732074686520636f756e74206f66206d6573736167657320616e64207365636f6e642069732074686520746f74616c206c656e6774682028696e20627974657329206f6620746865206d657373616765207061796c6f6164732e204e6f74652074686174207468697320697320616e20617578696c617279206d617070696e673a206974277320706f737369626c6520746f2074656c6c2074686520627974652073697a6520616e6420746865206e756d626572206f66206d65737361676573206f6e6c79206c6f6f6b696e67206174206052656c61794469737061746368517565756573602e2054686973206d617070696e6720697320736570617261746520746f2061766f69642074686520636f7374206f66206c6f6164696e67207468652077686f6c65206d657373616765207175657565206966206f6e6c792074686520746f74616c2073697a6520616e6420636f756e74206172652072657175697265642e202d2054686520736574206f66206b6579732073686f756c642065786163746c79206d617463682074686520736574206f66206b657973206f66206052656c61794469737061746368517565756573602e20546865206d657373616765732077616974696e6720746f2062652068616e646c6564206279207468652072656c61792d636861696e206f726967696e6174696e672066726f6d2061206365727461696e2070617261636861696e2e204e6f7465207468617420736f6d6520757077617264206d65737361676573206d696768742068617665206265656e20616c72656164792070726f6365737365642062792074686520696e636c7573696f6e206c6f6769632e20452e672e206368616e6e656c206d616e6167656d656e74206d657373616765732e20546865206d65737361676573206172652070726f63657373656420696e204649464f206f726465722e000000492d11003300000072756e74696d653a3a756d702d73696e6b4661696c656420746f206465636f64652076657273696f6e65642058434d2066726f6d20757077617264206d6573736167652e2c00000004000000040000001c0000002c0000000400000004000000e30000002c0000000400000004000000210000002c0000000400000004000000e40000005c8012008700000035020000240000005c801200870000003602000024000000617373657274696f6e206661696c65643a2073656c662e6361702829203d3d206f6c645f636170202a20320038061100980000002d0800000d0000002c0000000400000004000000dd000000f480120065000000710000002e000000f4801200650000009000000034000000f4801200650000006900000034000000570011006a0000009a00000001000000f480120065000000ba00000009000000f480120065000000b300000009000000f480120065000000d400000011000000f480120065000000d90000000900000000000000d00611000b00000000000000c42e11000100000000000000cc2e1100200000002053656e646572206d75737420626520746865205375646f206163636f756e742f2f110007000000142f11001b000000947912000200000030261200390000007b0300000100000042616420696e70757420646174612070726f766964656420746f2076657273696f6e0000402f11000d000000657865637574655f626c6f636b000000582f110010000000696e697469616c697a655f626c6f636b702f1100080000006d65746164617461802f11000f0000006170706c795f65787472696e73696300982f11000e00000066696e616c697a655f626c6f636b0000b02f110013000000696e686572656e745f65787472696e7369637300cc2f11000f000000636865636b5f696e686572656e747300e42f11000b00000072616e646f6d5f7365656400f82f11001400000076616c69646174655f7472616e73616374696f6e143011000f0000006f6666636861696e5f776f726b6572002c3011000a00000076616c696461746f72730000403011001000000076616c696461746f725f67726f7570735830110012000000617661696c6162696c6974795f636f726573000074301100190000007065727369737465645f76616c69646174696f6e5f646174610000009830110018000000636865636b5f76616c69646174696f6e5f6f757470757473b83011001700000073657373696f6e5f696e6465785f666f725f6368696c6400bc6611000f000000e03011001a000000686973746f726963616c5f76616c69646174696f6e5f636f64650000043111001e00000063616e6469646174655f70656e64696e675f617661696c6162696c69747900002c3111001000000063616e6469646174655f6576656e7473443111000c00000073657373696f6e5f696e666f583111000c000000646d715f636f6e74656e74736c3111001e000000696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e74730000943111001700000076616c69646174696f6e5f636f64655f62795f6861736800b4311100130000006772616e6470615f617574686f72697469657300d03111002d0000007375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963000000083211001c00000067656e65726174655f6b65795f6f776e6572736869705f70726f6f662c3211000d000000636f6e66696775726174696f6e000000443211001300000063757272656e745f65706f63685f737461727400603211000d00000063757272656e745f65706f6368000000783211000a0000006e6578745f65706f636800008c3211000b000000617574686f72697469657300a03211001500000067656e65726174655f73657373696f6e5f6b657973000000c0321100130000006465636f64655f73657373696f6e5f6b65797300dc3211000d00000076616c696461746f725f736574000000f43211000e00000067656e65726174655f70726f6f6600000c3311000c0000007665726966795f70726f6f6620331100160000007665726966795f70726f6f665f73746174656c6573730000403311000d0000006163636f756e745f6e6f6e6365000000583311000a00000071756572795f696e666f00006c3311001100000071756572795f6665655f64657461696c7370616c6c65745f6772616e6470612f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6772616e6470612f7372632f6c69622e727370616c6c65745f696d5f6f6e6c696e652f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f696d2d6f6e6c696e652f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f63726f77646c6f616e2e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261722f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f70617261735f7265676973747261722e7273008b3311005c000000f3000000010000004772616e64706146696e616c6974795374616c6c6564496d4f6e6c696e654b657973000000000000dc3711001100000000000000f0371100010000000000000000000000f83711001900000000000000143811000100000000000000000000001c3811001b000000000000003838110001000000000000000000000040381100180000000000000058381100010000000000000000000000603811000f00000000000000703811000100000000000000000000007838110011000000000000008c381100010000000000000000000000647f12000800000000000000943811000100000000000000000000009c3811001400000000000000b0381100010000000000000000000000b83811000d00000000000000c8381100010000000000000000000000d03811000b00000000000000dc381100010000000000000000000000e43811001600000000000000fc381100010000000000000000000000043911000d00000000000000143911000100000000000000000000001c3911000c0000000000000028391100010000000000000000000000303911000b000000000000003c391100010000000000000000000000443911001000000000000000543911000100000000000000000000005c39110010000000000000006c391100010000000000000000000000743911000c0000000000000080391100010000000000000000000000883911000f0000000000000098391100010000000000000000000000a03911001200000000000000b4391100010000000000000000000000bc3911001200000000000000d0391100010000000000000000000000d83911001000000000000000e8391100010000000000000000000000f03911000c00000000000000fc391100010000000000000000000000043a11001100000000000000183a110001000000000000004669727374506572696f64496e50617374000000783e11003e0000004669727374506572696f64546f6f466172496e467574757265000000333e1100450000004c617374506572696f644265666f72654669727374506572696f6400f83d11003b0000004c617374506572696f64546f6f466172496e467574757265ac3d11004c00000043616e6e6f74456e64496e50617374005a3d110052000000456e64546f6f466172496e467574757265000000293d110031000000123d110017000000436f6e747269627574696f6e546f6f536d616c6cd73c11003b000000496e76616c6964506172614964000000c33c1100140000004361704578636565646564009e3c110025000000436f6e747269627574696f6e506572696f644f7665720000733c11002b000000496e76616c69644f726967696e0000004f3c1100240000004e6f7450617261636861696e1c3c1100330000004c6561736541637469766500d63b1100460000004269644f724c65617365416374697665893b11004d00000046756e64734e6f7452657475726e6564673b11002200000046756e644e6f74456e646564463b1100210000004e6f436f6e747269627574696f6e7300113b11003500000048617341637469766550617261636861696e0000d13a1100400000004e6f745265616479546f446973736f6c76650000733a11005e000000496e76616c69645369676e6174757265603a1100130000004d656d6f546f6f4c61726765403a110020000000416c7265616479496e4e65775261697365000000203a110020000000205468652066756e6420697320616c726561647920696e204e65775261697365205468652070726f7669646564206d656d6f20697320746f6f206c617267652e20496e76616c6964207369676e61747572652e205468652063726f77646c6f616e206973206e6f7420726561647920746f20646973736f6c76652e20506f74656e7469616c6c79207374696c6c20686173206120736c6f74206f7220696e207265746972656d656e7420706572696f642e20546869732063726f77646c6f616e2068617320616e206163746976652070617261636861696e20616e642063616e6e6f7420626520646973736f6c7665642e20546865726520617265206e6f20636f6e747269627574696f6e732073746f72656420696e20746869732063726f77646c6f616e2e205468652063726f77646c6f616e20686173206e6f742079657420656e6465642e2046756e64732068617665206e6f7420796574206265656e2072657475726e65642e20546869732070617261636861696e277320626964206f72206c65617365206973207374696c6c2061637469766520616e642077697468647261772063616e6e6f742079657420626567696e2e20546869732070617261636861696e206c65617365206973207374696c6c2061637469766520616e64207265746972656d656e742063616e6e6f742079657420626567696e2e20546869732063726f77646c6f616e20646f6573206e6f7420636f72726573706f6e6420746f20612070617261636861696e2e20546865206f726967696e206f6620746869732063616c6c20697320696e76616c69642e2054686520636f6e747269627574696f6e20706572696f642068617320616c726561647920656e6465642e20436f6e747269627574696f6e7320657863656564206d6178696d756d20616d6f756e742e20496e76616c69642066756e6420696e6465782e2054686520636f6e747269627574696f6e207761732062656c6f7720746865206d696e696d756d2c20604d696e436f6e747269627574696f6e602e2054686572652077617320616e206f766572666c6f772e2054686520656e64206461746520666f7220746869732063726f77646c6f616e206973206e6f742073656e7369626c652e205468652063616d706169676e20656e6473206265666f7265207468652063757272656e7420626c6f636b206e756d6265722e2054686520656e64206d75737420626520696e20746865206675747572652e20546865206c617374206c6561736520706572696f642063616e6e6f74206265206d6f7265207468656e203320706572696f64732061667465722074686520666972737420706572696f642e204c617374206c6561736520706572696f64206d7573742062652067726561746572207468616e206669727374206c6561736520706572696f642e20546865206669727374206c6561736520706572696f64206e6565647320746f206174206c65617374206265206c657373207468616e203320606d61785f76616c7565602e205468652063757272656e74206c6561736520706572696f64206973206d6f7265207468616e20746865206669727374206c6561736520706572696f642e0000773411003f0000001e01000001000000417574686f726564426c6f636b730000000000001c9011000d0000000000000028401100010000000000000000000000304011001100000000000000444011000100000000000000000000004c4011000800000000000000544011000100000000000000000000005c4011000c0000000000000068401100010000000000000000000000704011001000000000000000804011000100000000000000000000001c3911000c0000000000000088401100010000000000000000000000904011000d00000000000000a0401100010000000000000000000000a84011001000000000000000b84011000100000000000000000000007c9011000f00000000000000c0401100010000000000000000000000649011000d00000000000000c8401100010000000000000000000000d04011000a00000000000000dc401100010000000000000000000000b83811000d00000000000000e44011000100000000000000bd4211001a000000416c7265616479526567697374657265640000009f4211001e0000004e6f744f776e65727742110028000000436f6465546f6f4c617267655f421100180000004865616444617461546f6f4c61726765424211001d00000029421100190000004e6f74506172617468726561640000000f4211001a00000043616e6e6f7444657265676973746572f841110017000000c3411100350000009041110033000000506172614c6f636b65640000314111005f000000ec401100450000002054686520696420796f752061726520747279696e6720746f20726567697374657220697320726573657276656420666f722073797374656d2070617261636861696e732e2050617261206973206c6f636b65642066726f6d206d616e6970756c6174696f6e20627920746865206d616e616765722e204d757374207573652070617261636861696e206f722072656c617920636861696e20676f7665726e616e63652e2043616e6e6f74207363686564756c652075706772616465206f66207061726174687265616420746f2070617261636861696e2043616e6e6f74207363686564756c6520646f776e6772616465206f662070617261636861696e20746f20706172617468726561642043616e6e6f74206465726567697374657220706172612050617261206973206e6f74206120506172617468726561642e2050617261206973206e6f7420612050617261636861696e2e20496e76616c69642070617261206865616420646174612073697a652e20496e76616c6964207061726120636f64652073697a652e205468652063616c6c6572206973206e6f7420746865206f776e6572206f6620746869732049642e2054686520494420697320616c726561647920726567697374657265642e20546865204944206973206e6f7420726567697374657265642e706f6b656164645f6d656d6f65646974646973736f6c7665726566756e647769746864726177636f6e74726962757465637265617465000000de341100450000009e0000000100000050656e64696e674368616e67653a6772616e6470615f617574686f726974696573537461746543726f77646c6f616e46756e6473556e646572436f6e737472756374696f6e486561727462656174416674657200a6431100160000009479120002000000a643110016000000bc4311001200000072756e74696d653a3a696d2d6f6e6c696e65536b697070696e6720686561727462656174206174202e204e6f7420612076616c696461746f722e0000cd4411001c000000b14411001c0000007f4411001a0000009944110018000000634411000a0000006d441100120000004b441100180000003544110016000000184411001d0000004661696c656420746f206665746368206e6574776f726b2073746174654661696c656420746f2061637175697265206c6f636b4661696c656420746f207369676e20686561727462656174417574686f726974792020697320616c7265616479206f6e6c696e6548656172746265617420616c72656164792073656e74206174202e2057616974696e6720666f7220696e636c7573696f6e2e546f6f206561726c7920746f2073656e64206865617274626561742e4661696c656420746f207375626d6974207472616e73616374696f6e000000f73311005e0000004e020000340000007061726974792f696d2d6f6e6c696e652d6865617274626561742f0038451100080000004045110020000000604511000b00000079311200030000005b696e6465783a205d205265706f7274696e6720696d2d6f6e6c696e6520617420626c6f636b3a20202873657373696f6e3a2000a445110009000000787d120000000000787d1200000000002c00000004000000040000001c0000002c00000004000000040000001c000000686561727462656174666f7263655f72656d6f76655f6c6f636b7377617064657265676973746572666f7263655f7265676973746572726567697374657252656769737472617263726f77646c6f616e2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f70726f78792f7372632f6c69622e7273416e6e6f756e63656d656e747350726f786965734163636f756e74730000b4461100360000007c461100380000004c6f676963206572726f723a204163636f756e7420616c72656164792064656164207768656e207265647563696e672070726f76696465724c6f676963206572726f723a20556e657870656374656420756e646572666c6f7720696e207265647563696e672070726f76696465720000f4461100360000004c6f676963206572726f723a20556e657870656374656420756e646572666c6f7720696e207265647563696e6720636f6e73756d65720000f54711002b000000d0471100250000006672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61702f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f737570706f72742f7372632f73746f726167652f67656e657261746f722f6d61702e7273496e76616c6964207472616e736c6174653a206661696c20746f206465636f6465206b6579496e76616c6964207472616e736c6174653a206661696c20746f206465636f6465206f6c642076616c756545706f6368496e6465784e6578744b6579735365676d656e74496e64657847656e65736973536c6f744e65787445706f6368436f6e66696743757272656e74536c6f7445706f6368537461727445706f6368436f6e6669674e65787452616e646f6d6e65737350656e64696e6745706f6368436f6e6669674368616e676552616e646f6d6e657373496e697469616c697a6564417574686f7256726652616e646f6d6e6573734c6174656e657373546f74616c49737375616e63650084491100540000004772616e64706145717569766f636174696f6e72756e74696d653a3a61666770616c6c65745f6772616e6470613a3a65717569766f636174696f6e2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6772616e6470612f7372632f65717569766f636174696f6e2e727372656a656374696e6720756e7369676e6564207265706f72742065717569766f636174696f6e207472616e73616374696f6e2062656361757365206974206973206e6f74206c6f63616c2f696e2d626c6f636b2e8b3311005c000000be00000001000000496e76616c696445717569766f636174696f6e50726f6f66496e76616c69644b65794f776e65727368697050726f6f66546f6f536f6f6e4368616e676550656e64696e67526573756d654661696c656450617573654661696c65644475706c69636174654f6666656e63655265706f727400000000000000e04a11001300000000000000f44a1100020000000000000000000000244b1100040000000000000000000000444b11001c00000000000000f44a1100020000000000000000000000604b1100090000000000000000000000a84b11000c00000000000000b44b1100020000000000000000000000e44b110007000000000000007265706f72745f65717569766f636174696f6e0000000000b14f11001200000000000000c34f11002a00000000000000ed4f11000f00000000000000fc4f110010000000054e110043000000484e11003e000000864e11003f000000c54e1100120000007265706f72745f65717569766f636174696f6e5f756e7369676e6564054e110043000000484e11003e000000864e11003f000000c54e110012000000787d120000000000d74e1100440000001b4f110046000000614f110046000000a74f11000a0000006e6f74655f7374616c6c656400000000e54d11000500000000000000154812000e00000000000000ea4d11001b00000000000000154812000e0000001c4c110047000000634c11004a000000ad4c110048000000f54c1100450000003a4d11004a000000844d11004a000000ce4d110017000000204e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e20546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f20626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e205468652064656c61792073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d6520746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f726765642028652e672e203130303020626c6f636b73292e20546865204752414e44504120766f746572732077696c6c20737461727420746865206e657720617574686f7269747920736574207573696e672074686520676976656e2066696e616c697a656420626c6f636b20617320626173652e204f6e6c792063616c6c61626c6520627920726f6f742e64656c6179626573745f66696e616c697a65645f626c6f636b5f6e756d626572205265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c20766572696679207468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f6620616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c206265207265706f727465642e20546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c7920626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c20617320737563682069662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e207265706f727465722e65717569766f636174696f6e5f70726f6f6645717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e6b65795f6f776e65725f70726f6f66543a3a4b65794f776e657250726f6f6600000000414311000500000000000000000000001c5211001b00000000000000000000000000000000000000000000000000000000000000787d12003852110000000000000000004852110001000000000000000100000000000000204311000d0000000000000000000000505211002300000000000000000000000000000000000000000000000000000000000000787d120074521100000000000000000084521100010000000000000000000000000000008c5211000a0000000000000000000000154812000e00000000000000000000000000000000000000000000000000000000000000787d1200985211000000000000000000a85211000100000000000000000000000000000043351100070000000000000000000000b05211002000000000000000000000000000000000000000000000000000000000000000787d1200d05211000000000000000000e052110001000000000000000000000000000000e85211000c0000000000000000000000f45211000500000000000000000000000000000000000000000000000000000000000000787d1200fc52110000000000000000000c531100020000000000000001000000000000001c5311000c0000000105000000000000f45211000500000000000000836a12000c00000000000000000000000000000000000000787d12002853110000000000000000003853110004000000000000000000000053746f72656453746174653c543a3a426c6f636b4e756d6265723e002c0000000000000001000000e5000000025511002400000053746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e002c0000000000000001000000bf000000d1541100310000004e657874466f7263656400002c0000000000000001000000bf000000a25411002f00000028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572292c0000000000000001000000bf0000007e5411002400000043757272656e74536574496453657449640000002c0000000000000001000000d4000000f6531100570000004d54110031000000536574496453657373696f6e2c0000000000000001000000bf0000005853110056000000ae5311001a000000787d120000000000c85311002e0000002041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e2054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e20546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c69746965732920696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e20607472756560206966207765206172652063757272656e746c79207374616c6c65642e206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e2050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e205374617465206f66207468652063757272656e7420617574686f72697479207365742e496e76616c69644b65794475706c6963617465644865617274626561740000000000a4451100090000000000000070551100020000000000000000000000a0551100090000000000000000000000a445110009000000000000004e5711001900000000000000675711000a00000000000000715711002f0000005e3a12000b000000e855110050000000385611004000000078561100230000009b5611002c000000c75611004f00000016571100170000002d57110021000000a23a12000c000000202d20436f6d706c65786974793a20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e29202020616e642045206973206c656e677468206f6620606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373602020202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b602020202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560202d20446252656164733a2070616c6c65745f73657373696f6e206056616c696461746f7273602c2070616c6c65745f73657373696f6e206043757272656e74496e646578602c20604b657973602c2020206052656365697665644865617274626561747360202d2044625772697465733a2060526563656976656448656172746265617473604865617274626561743c543a3a426c6f636b4e756d6265723e5f7369676e61747572653c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e617475726500000000654311000e0000000000000000000000154812000e00000000000000000000000000000000000000000000000000000000000000787d1200005911000000000000000000105911000b000000000000000100000000000000523511000400000000000000000000007f1712001300000000000000000000000000000000000000000000000000000000000000787d1200685911000000000000000000785911000100000000000000010000000000000080591100120000000205050000000000836a12000c00000000000000925911000900000000000000ae3a12000700000000000000787d12009c5911000000000000000000ac59110002000000000000000000000000000000c83e11000e0000000205050000000000836a12000c00000000000000bc5911000e00000000000000373c12000300000000000000787d1200cc5911000000000000000000dc5911000200000000000000010000002c0000000000000001000000c0000000f35a1100470000003a5b110009000000787d120000000000435b1100490000008c5b11004d000000d95b1100460000001f5c11002a000000787d120000000000495c11004e000000975c11004b000000e25c1100400000002c0000000000000001000000bd000000bf5a11003400000052656365697665644865617274626561747341757468496e646578002c0000000000000001000000bf000000635a11003c0000009f5a11002000000056616c696461746f7249643c543e00002c0000000000000001000000c0000000ec59110045000000315a11003200000020466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e20466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e6465786020746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e2054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e742073657373696f6e2e2041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e20546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c64206265206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e000000000000a85d11001100000000000000bc5d1100010000000000000000000000c45d1100010000000000000000000000cc5d11000700000000000000787d1200000000000000000000000000d45d1100010000000000000000000000dc5d11000b00000000000000e85d1100010000000000000000000000f05d110001000000000000004865617274626561745265636569766564000000d55e11000b000000945e110041000000416c6c476f6f64005f5e110035000000536f6d654f66666c696e6500475e110018000000f85d11004f0000002041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265205c5b6f66666c696e655c5d2e5665633c4964656e74696669636174696f6e5475706c653e2041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f72697479496460205c5b617574686f726974795f69645c5d417574686f726974794964436865636b5370656356657273696f6ede34110045000000810000000100000000000000da4511000800000000000000dc5f1100030000000000000000000000246011000b0000000000000000000000cc4511000e000000000000007c601100050000000000000000000000f4601100060000000000000000000000c24511000a00000000000000246111000100000000000000000000003c611100030000000000000000000000be451100040000000000000054611100020000000000000000000000846111000b0000000000000000000000ad451100110000000000000054a01100010000000000000000000000dc611100040000000000000000000000016511000200000000000000cca211000600000000000000b06611000c00000000000000cfb911000800000000000000bc6611000f000000000000006db911000e000000cb66110027000000787d120000000000f26611003d0000002f671100430000007267110010000000787d1200000000008267110031000000787d120000000000b367110040000000f36711003e000000316811002700000000000000a61f120003000000000000004f4712000c000000000000009d6611000700000000000000a46611000c00000000000000016511000200000000000000cca211000600000000000000b06611000c00000000000000cfb911000800000000000000bc6611000f000000000000006db911000e000000aa65110038000000787d120000000000e26511002f000000787d1200000000001166110045000000566611004700000000000000016511000200000000000000cca21100060000000865110042000000787d1200000000004a6511006000000000000000016511000200000000000000cca211000600000000000000036511000500000000000000cca2110006000000b562110037000000787d120000000000ec62110041000000787d1200000000002d631100590000008663110057000000787d120000000000dd6311005800000035641100500000008564110056000000db64110026000000fc61110044000000406211004e000000787d1200000000008e621100270000002052656d6f76652061206d616e61676572206c6f636b2066726f6d206120706172612e20546869732077696c6c20616c6c6f7720746865206d616e61676572206f6620612070726576696f75736c79206c6f636b6564207061726120746f2064657265676973746572206f7220737761702061207061726120776974686f7574207573696e6720676f7665726e616e63652e2043616e206f6e6c792062652063616c6c65642062792074686520526f6f74206f726967696e2e205377617020612070617261636861696e207769746820616e6f746865722070617261636861696e206f7220706172617468726561642e20546865206f726967696e206d75737420626520526f6f742c2074686520607061726160206f776e65722c206f72207468652060706172616020697473656c662e2054686520737761702077696c6c2068617070656e206f6e6c7920696620746865726520697320616c726561647920616e206f70706f7369746520737761702070656e64696e672e204966207468657265206973206e6f742c2074686520737761702077696c6c2062652073746f72656420696e207468652070656e64696e67207377617073206d61702c20726561647920666f722061206c6174657220636f6e6669726d61746f727920737761702e20546865206050617261496460732072656d61696e206d617070656420746f207468652073616d652068656164206461746120616e6420636f646520736f2065787465726e616c20636f64652063616e2072656c79206f6e20605061726149646020746f2062652061206c6f6e672d7465726d206964656e746966696572206f662061206e6f74696f6e616c202270617261636861696e222e20486f77657665722c207468656972207363686564756c696e6720696e666f2028692e652e2077686574686572207468657927726520612070617261746872656164206f722070617261636861696e292c2061756374696f6e20696e666f726d6174696f6e20616e64207468652061756374696f6e206465706f736974206172652073776974636865642e69646f746865722044657265676973746572206120506172612049642c2066726565696e6720616c6c206461746120616e642072657475726e696e6720616e79206465706f7369742e205468652063616c6c6572206d75737420626520526f6f742c2074686520607061726160206f776e65722c206f72207468652060706172616020697473656c662e205468652070617261206d757374206265206120706172617468726561642e20466f7263652074686520726567697374726174696f6e206f6620612050617261204964206f6e207468652072656c617920636861696e2e20546869732066756e6374696f6e206d7573742062652063616c6c6564206279206120526f6f74206f726967696e2e20546865206465706f7369742074616b656e2063616e2062652073706563696669656420666f72207468697320726567697374726174696f6e2e20416e79205061726149642063616e20626520726567697374657265642c20696e636c7564696e67207375622d3130303020494473207768696368206172652053797374656d2050617261636861696e732e6465706f73697442616c616e63654f663c543e67656e657369735f6865616476616c69646174696f6e5f636f646520526567697374657220612050617261204964206f6e207468652072656c617920636861696e2e20546869732066756e6374696f6e2077696c6c20717565756520746865206e6577205061726120496420746f206265206120706172617468726561642e205573696e672074686520536c6f74732070616c6c65742c206120706172617468726561642063616e207468656e20626520757067726164656420746f2067657420612070617261636861696e20736c6f742e20546869732066756e6374696f6e206d7573742062652063616c6c65642062792061207369676e6564206f726967696e2e20546865206f726967696e206d757374207061792061206465706f73697420666f722074686520726567697374726174696f6e20696e666f726d6174696f6e2c20696e636c7564696e67207468652067656e6573697320696e666f726d6174696f6e20616e642076616c69646174696f6e20636f64652e20506172614964206d7573742062652067726561746572207468616e206f7220657175616c20746f20313030302e00000000086911000b0000000105000000000000cca211000600000000000000cca211000600000000000000000000000000000000000000787d1200146911000000000000000000246911000100000000000000000000000000000030941100050000000105000000000000cca2110006000000000000002c6911002400000000000000000000000000000000000000787d12005069110000000000000000006069110004000000000000000000000050656e64696e6753776170002c0000000000000001000000bf000000726a11001900000050617261496e666f3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e2c0000000000000001000000bf0000008069110041000000787d120000000000c169110064000000256a11004d00000020416d6f756e742068656c64206f6e206465706f73697420666f722065616368207061726120616e6420746865206f726967696e616c206465706f7369746f722e2054686520676976656e206163636f756e7420494420697320726573706f6e7369626c6520666f72207265676973746572696e672074686520636f646520616e6420696e697469616c206865616420646174612c20627574206d6179206f6e6c7920646f20736f2069662069742069736e27742079657420726567697374657265642e2028416674657220746861742c206974277320757020746f20676f7665726e616e636520746f20646f20736f2e292050656e64696e672073776170206f7065726174696f6e732e00000000006c6b11000b00000000000000a46611000c00000000000000787d1200786b11000000000000000000787d1200000000000000000000000000886b11001200000000000000a46611000c00000000000000787d12009c6b11000000000000000000787d1200000000000000000000000000ac6b11000b00000000000000373c12000300000000000000787d1200b86b11000000000000000000787d1200000000000000000000000000c86b11000b00000000000000373c12000300000000000000787d1200d46b11000000000000000000787d12000000000000000000506172614465706f736974002c0000000000000001000000e6000000446174614465706f7369745065724279746500002c0000000000000001000000e70000004d6178436f646553697a65002c0000000000000001000000e80000004d61784865616453697a65002c0000000000000001000000e9000000000000003c6c11000a00000000000000486c1100020000000000000000000000787d1200000000000000000000000000586c11000c00000000000000646c1100010000000000000000000000787d12000000000000000000526567697374657265640000cca21100060000006934120009000000446572656769737465726564cca2110006000000773411003f000000eb0000000100000000000000074311000600000000000000dc6d11000600000000000000000000006c6e1100040000000000000000000000fd4211000a000000000000008c6e1100030000000000000000000000d46e1100020000000000000000000000f54211000800000000000000e46e1100020000000000000000000000146f1100110000000000000000000000ef42110006000000000000009c6f1100010000000000000000000000b46f1100050000000000000000000000e742110008000000000000009c6f1100010000000000000000000000dc6f1100010000000000000000000000e34211000400000000000000dc6d1100060000000000000000000000e46f1100030000000000000000000000db4211000800000000000000fc6f11000200000000000000000000002c701100030000000000000000000000d74211000400000000000000447011000100000000000000000000005c701100030000000000000000000000177f12000500000000000000087311000f00000000000000917711000300000000000000907611001500000000000000947711000c00000000000000a07711001900000000000000b97711000b00000000000000a07711001900000000000000c47711000300000000000000c77711001700000000000000de7711000800000000000000e677110013000000c47611005b000000787d1200000000001f77110058000000777711001a00000000000000177f12000500000000000000087311000f000000000000008b7611000500000000000000907611001500000000000000a57611000900000000000000ae76110016000000e175110055000000367611005500000000000000a61f120003000000000000004f4712000c00000000000000177f12000500000000000000087311000f0000001773110031000000787d120000000000d772110031000000787d120000000000487311006c000000b47311003f000000f3731100280000001b741100540000006f7411000e0000007d74110030000000ad7411004c000000787d120000000000f97411005c0000005575110008000000787d1200000000005d7511003d0000009a7511004700000000000000177f12000500000000000000087311000f00000002721100390000003b721100490000008472110053000000787d120000000000d772110031000000ac711100560000005471110035000000787d120000000000897111002300000000000000177f12000500000000000000cca211000600000000000000507111000400000000000000ae3a120007000000c87011003c000000787d120000000000047111004c00000000000000177f12000500000000000000cca2110006000000747011001c000000787d120000000000907011003800000020506f6b65207468652066756e6420696e746f204e65775261697365204f726967696e206d757374206265205369676e65642c20616e64207468652066756e6420686173206e6f6e2d7a65726f2072616973652e2041646420616e206f7074696f6e616c206d656d6f20746f20616e206578697374696e672063726f77646c6f616e20636f6e747269627574696f6e2e204f726967696e206d757374206265205369676e65642c20616e64207468652075736572206d757374206861766520636f6e747269627574656420746f207468652063726f77646c6f616e2e6d656d6f20456469742074686520636f6e66696775726174696f6e20666f7220616e20696e2d70726f67726573732063726f77646c6f616e2e2043616e206f6e6c792062652063616c6c656420627920526f6f74206f726967696e2e2052656d6f766520612066756e6420616674657220746865207265746972656d656e7420706572696f642068617320656e64656420616e6420616c6c2066756e64732068617665206265656e2072657475726e65642e204175746f6d61746963616c6c7920726566756e6420636f6e7472696275746f7273206f6620616e20656e6465642063726f77646c6f616e2e2044756520746f20776569676874207265737472696374696f6e732c20746869732066756e6374696f6e206d6179206e65656420746f2062652063616c6c6564206d756c7469706c652074696d657320746f2066756c6c7920726566756e6420616c6c2075736572732e2057652077696c6c20726566756e64206052656d6f76654b6579734c696d69746020757365727320617420612074696d652e204f726967696e206d757374206265207369676e65642c206275742063616e20636f6d652066726f6d20616e796f6e652e436f6d706163743c5061726149643e2057697468647261772066756c6c2062616c616e6365206f66206120737065636966696320636f6e7472696275746f722e205468652066756e64206d7573742062652065697468657220696e2c206f7220726561647920666f722c207265746972656d656e742e20466f7220612066756e6420746f206265202a696e2a207265746972656d656e742c207468656e20746865207265746972656d656e7420666c6167206d757374206265207365742e20466f7220612066756e6420746f20626520726561647920666f72207265746972656d656e742c207468656e3a202d206974206d757374206e6f7420616c726561647920626520696e207265746972656d656e743b202d2074686520616d6f756e74206f66207261697365642066756e6473206d75737420626520626967676572207468616e20746865205f667265655f2062616c616e6365206f6620746865206163636f756e743b202d20616e64206569746865723a2020202d2074686520626c6f636b206e756d626572206d757374206265206174206c656173742060656e64603b206f722020202d207468652063757272656e74206c6561736520706572696f64206d7573742062652067726561746572207468616e207468652066756e64277320606c6173745f706572696f64602e20496e207468697320636173652c207468652066756e642773207265746972656d656e7420666c61672069732073657420616e64206974732060656e646020697320726573657420746f207468652063757272656e7420626c6f636b206e756d6265722e202d206077686f603a20546865206163636f756e742077686f736520636f6e747269627574696f6e2073686f756c642062652077697468647261776e2e202d2060696e646578603a205468652070617261636861696e20746f2077686f73652063726f77646c6f616e2074686520636f6e747269627574696f6e20776173206d6164652e20436f6e7472696275746520746f20612063726f77642073616c652e20546869732077696c6c207472616e7366657220736f6d652062616c616e6365206f76657220746f2066756e6420612070617261636861696e20736c6f742e2049742077696c6c20626520776974686472617761626c65207768656e207468652063726f77646c6f616e2068617320656e64656420616e64207468652066756e64732061726520756e757365642e76616c7565436f6d706163743c42616c616e63654f663c543e3e7369676e61747572654f7074696f6e3c4d756c74695369676e61747572653e204372656174652061206e65772063726f77646c6f616e696e672063616d706169676e20666f7220612070617261636861696e20736c6f7420776974682074686520676976656e206c6561736520706572696f642072616e67652e2054686973206170706c6965732061206c6f636b20746f20796f75722070617261636861696e20636f6e66696775726174696f6e2c20656e737572696e6720746861742069742063616e6e6f74206265206368616e676564206279207468652070617261636861696e206d616e616765722e63617066697273745f706572696f64436f6d706163743c4c65617365506572696f644f663c543e3e6c6173745f706572696f64656e64436f6d706163743c543a3a426c6f636b4e756d6265723e76657269666965724f7074696f6e3c4d756c74695369676e65723e000000000000004f431100050000000105000000000000cca2110006000000000000005c7911004700000000000000000000000000000000000000787d1200a47911000000000000000000b479110001000000000000000000000000000000bc79110008000000000000000000000064ac11000b00000000000000000000000000000000000000000000000000000000000000787d1200c47911000000000000000000d479110002000000000000000100000000000000e47911000c0000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d1200f07911000000000000000000007a110001000000000000000100000000000000087a11000d0000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d1200187a11000000000000000000287a110001000000000000000100000046756e64496e666f3c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c204c65617365506572696f644f663c0a543e3e002c0000000000000001000000bf0000003e7b11001a0000004e657752616973652c0000000000000001000000bd000000a47a110055000000f97a110045000000456e64696e6773436f756e742c0000000000000001000000c00000005a7a11004a0000004e65787454726965496e6465780000002c0000000000000001000000c0000000307a11002a00000020547261636b657220666f7220746865206e65787420617661696c61626c65207472696520696e64657820546865206e756d626572206f662061756374696f6e732074686174206861766520656e746572656420696e746f20746865697220656e64696e6720706572696f6420736f206661722e205468652066756e64732074686174206861766520686164206164646974696f6e616c20636f6e747269627574696f6e7320647572696e6720746865206c61737420626c6f636b2e2054686973206973207573656420696e206f7264657220746f2064657465726d696e652077686963682066756e64732073686f756c64207375626d6974206e6577206f72207570646174656420626964732e20496e666f206f6e20616c6c206f66207468652066756e64732e00000000007c11000800000000000000007c11000800000000000000787d1200087c11000000000000000000787d1200000000000000000000000000187c11000f00000000000000a46611000c00000000000000787d1200287c11000000000000000000787d1200000000000000000000000000387c11000f00000000000000373c12000300000000000000787d1200487c11000000000000000000787d1200000000000000000050616c6c657449642c0000000000000001000000ea0000004d696e436f6e747269627574696f6e002c0000000000000001000000da00000052656d6f76654b6579734c696d6974002c0000000000000001000000eb00000000000000687e11000700000000000000646c1100010000000000000000000000707e1100010000000000000000000000787e11000b00000000000000847e11000300000000000000000000009c7e1100010000000000000000000000a47e11000800000000000000847e1100030000000000000000000000ac7e1100010000000000000000000000b47e11001100000000000000646c1100010000000000000000000000c87e1100020000000000000000000000d87e11000b00000000000000646c1100010000000000000000000000e47e1100010000000000000000000000ec7e11000900000000000000646c1100010000000000000000000000f87e1100010000000000000000000000007f11000f00000000000000646c1100010000000000000000000000107f1100010000000000000000000000187f11000900000000000000247f1100020000000000000000000000347f11000100000000000000000000003c7f11000f000000000000004c7f11000200000000000000000000005c7f1100010000000000000000000000647f11000600000000000000646c11000100000000000000000000006c7f1100010000000000000000000000747f11000b00000000000000807f1100030000000000000000000000987f1100010000000000000000000000a07f11000f00000000000000646c1100010000000000000000000000b07f1100010000000000000043726561746564007982110031000000436f6e7472696275746564006934120009000000cca21100060000007d661200070000004282110037000000576974686472657700821100420000005061727469616c6c79526566756e646564000000798111004c000000c58111003b000000416c6c526566756e646564004481110035000000446973736f6c76656400000024811100200000004465706c6f7944617461466978656400e78011003d0000004f6e626f6172646564000000cca2110006000000cca21100060000008d8011005a00000048616e646c65426964526573756c7400cca2110006000000670b12000e0000004f8011003e0000004564697465640000108011003f0000004d656d6f55706461746564006934120009000000cca2110006000000ae3a120007000000df7f1100310000004164646564546f4e6577526169736500b87f11002700000020412070617261636861696e20686173206265656e206d6f76656420746f204e657752616973652041206d656d6f20686173206265656e20757064617465642e205b77686f2c2066756e645f696e6465782c206d656d6f5d2054686520636f6e66696775726174696f6e20746f20612063726f77646c6f616e20686173206265656e206564697465642e205b66756e645f696e6465785d2054686520726573756c74206f6620747279696e6720746f207375626d69742061206e65772062696420746f2074686520536c6f74732070616c6c65742e204f6e2d626f617264696e672070726f6365737320666f7220612077696e6e696e672070617261636861696e2066756e6420697320636f6d706c657465642e205b66696e645f696e6465782c2070617261636861696e5f69645d20546865206465706c6f792064617461206f66207468652066756e6465642070617261636861696e206973207365742e205b66756e645f696e6465785d2046756e6420697320646973736f6c7665642e205b66756e645f696e6465785d20416c6c206c6f616e7320696e20612066756e642068617665206265656e20726566756e6465642e205b66756e645f696e6465785d20546865206c6f616e7320696e20612066756e642068617665206265656e207061727469616c6c7920646973736f6c7665642c20692e652e2074686572652061726520736f6d65206c656674206f766572206368696c64206b6579732074686174207374696c6c206e65656420746f206265206b696c6c65642e205b66756e645f696e6465785d2057697468647265772066756c6c2062616c616e6365206f66206120636f6e7472696275746f722e205b77686f2c2066756e645f696e6465782c20616d6f756e745d20436f6e747269627574656420746f20612063726f77642073616c652e205b77686f2c2066756e645f696e6465782c20616d6f756e745d204372656174652061206e65772063726f77646c6f616e696e672063616d706169676e2e205b66756e645f696e6465785d000000000000384a11000b00000000000000708311000200000000000000000000002c4a11000c00000000000000808311000200000000000000000000001f4a11000d0000000000000090831100010000000000000000000000184a1100070000000000000098831100010000000000000000000000004a11001800000000000000a0831100010000000000000000000000e84911001800000000000000a8831100010000000000000000000000434a11001600000000000000b083110001000000000000007185110042000000b38511002a00000003851100450000004885110029000000c88411003b00000098841100300000004b8411004d000000fe8311004d000000b883110046000000204120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e20416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2041206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e2043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e20417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e2774207061757365642028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e20417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e00000000000000265511000a00000000000000188611000100000000000000000000003055110013000000000000002086110001000000000000003e861100190000002886110016000000204475706c696361746564206865617274626561742e204e6f6e206578697374656e74207075626c6963206b65792e0054871200950000005a02000009000000706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c6572706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261732f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f70617261732e727370616c6c65745f74696d657374616d703a3a70616c6c65742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f74696d657374616d702f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265642f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f7368617265642e7273706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d702f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f68726d702e727370616c6c65745f617574686f72736869702f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f617574686f72736869702f7372632f6c69622e7273736574000000000000408a11001500000000000000588a1100010000000000000000000000608a11001f00000000000000808a1100010000000000000000000000888a11001b00000000000000a48a1100010000000000000000000000ac8a11002300000000000000d08a1100010000000000000000000000d88a11001e00000000000000f88a1100010000000000000000000000008b11002600000000000000288b1100010000000000000000000000308b11001c000000000000004c8b1100010000000000000000000000548b11001f00000000000000748b11000100000000000000000000007c8b11001c00000000000000988b1100010000000000000000000000a08b11001c00000000000000bc8b1100010000000000000000000000c48b11002100000000000000e88b1100010000000000000000000000f08b11001e00000000000000108c1100010000000000000000000000188c11001c00000000000000348c11000100000000000000000000003c8c11001b00000000000000588c1100010000000000000000000000608c11001f00000000000000808c110001000000000000004f70656e48726d704368616e6e656c546f53656c660000005b8f1100320000004f70656e48726d704368616e6e656c496e76616c6964526563697069656e7400388f1100230000004f70656e48726d704368616e6e656c5a65726f436170616369747900188f1100200000004f70656e48726d704368616e6e656c4361706163697479457863656564734c696d697400e78e1100310000004f70656e48726d704368616e6e656c5a65726f4d65737361676553697a650000be8e1100290000004f70656e48726d704368616e6e656c4d65737361676553697a65457863656564734c696d69740000738e11004b0000004f70656e48726d704368616e6e656c416c7265616479457869737473588e11001b0000004f70656e48726d704368616e6e656c416c726561647952657175657374656400238e1100350000004f70656e48726d704368616e6e656c4c696d69744578636565646564db8d11004800000041636365707448726d704368616e6e656c446f65736e744578697374a28d11003900000041636365707448726d704368616e6e656c416c7265616479436f6e6669726d6564000000808d11002200000041636365707448726d704368616e6e656c4c696d697445786365656465640000368d11004a000000436c6f736548726d704368616e6e656c556e617574686f72697a6564e08c110056000000436c6f736548726d704368616e6e656c446f65736e74457869737400b88c110028000000436c6f736548726d704368616e6e656c416c7265616479556e64657277617900888c11003000000020546865206368616e6e656c20636c6f7365207265717565737420697320616c7265616479207265717565737465642e20546865206368616e6e656c20746f20626520636c6f73656420646f65736e27742065786973742e20546865206f726967696e20747269657320746f20636c6f73652061206368616e6e656c207768657265206974206973206e656974686572207468652073656e646572206e6f722074686520726563697069656e742e2054686520726563697069656e7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f77656420696e626f756e64206368616e6e656c732e20546865206368616e6e656c20697320616c726561647920636f6e6669726d65642e20546865206368616e6e656c2066726f6d207468652073656e64657220746f20746865206f726967696e20646f65736e27742065786973742e205468652073656e64657220616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f776564206f7574626f756e64206368616e6e656c732e20546865726520697320616c72656164792061207265717565737420746f206f70656e207468652073616d65206368616e6e656c2e20546865206368616e6e656c20616c72656164792065786973747320546865206f70656e20726571756573742072657175657374656420746865206d6573736167652073697a65207468617420657863656564732074686520676c6f62616c206c696d69742e2054686520726571756573746564206d6178696d756d206d6573736167652073697a6520697320302e205468652072657175657374656420636170616369747920657863656564732074686520676c6f62616c206c696d69742e2054686520726571756573746564206361706163697479206973207a65726f2e2054686520726563697069656e74206973206e6f7420612076616c696420706172612e205468652073656e64657220747269656420746f206f70656e2061206368616e6e656c20746f207468656d73656c7665732e000000000000001c9011000d000000000000002c901100010000000000000000000000349011000d00000000000000449011000100000000000000000000004c9011000e000000000000005c901100010000000000000000000000649011000d00000000000000749011000100000000000000000000007c9011000f000000000000008c90110001000000000000004e6f7452656769737465726564000000559111002600000043616e6e6f744f6e626f6172640000000f9111004600000043616e6e6f744f6666626f6172640000e79011002800000043616e6e6f7455706772616465000000bf9011002800000043616e6e6f74446f776e677261646500949011002b00000020506172612063616e6e6f7420626520646f776e67726164656420746f206120706172617468726561642e20506172612063616e6e6f7420626520757067726164656420746f20612070617261636861696e2e20506172612063616e6e6f74206265206f6666626f617264656420617420746869732074696d652e20506172612063616e6e6f74206265206f6e626f6172646564206265636175736520697420697320616c726561647920747261636b6564206279206f75722073797374656d2e2050617261206973206e6f74207265676973746572656420696e206f75722073797374656d2e417574686f7273686970556e636c657300e98711003e0000005f01000001000000b08611003f000000710100000100000088871100400000003a00000001000000666f7263655f70726f636573735f68726d705f636c6f7365666f7263655f70726f636573735f68726d705f6f70656e666f7263655f636c65616e5f68726d7068726d705f636c6f73655f6368616e6e656c68726d705f6163636570745f6f70656e5f6368616e6e656c68726d705f696e69745f6f70656e5f6368616e6e656c008828120043000000cd00000001000000666f7263655f71756575655f616374696f6e666f7263655f6e6f74655f6e65775f68656164666f7263655f7363686564756c655f636f64655f75706772616465666f7263655f7365745f63757272656e745f68656164666f7263655f7365745f63757272656e745f636f646554696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b078711005e000000c20000000d00000054696d657374616d70206d75737420696e6372656d656e74206279206174206c65617374203c4d696e696d756d506572696f643e206265747765656e2073657175656e7469616c20626c6f636b730000078711005e000000c40000000d00000054696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b00078711005e000000a70000000d000000417574686f7248726d7048726d704368616e6e656c436f6e74656e7473000000e98711003e0000000d0200001e00000063616e277420626520604e6f6e65602064756520746f2074686520696e76617269616e74207468617420746865206c69737420636f6e7461696e73207468652073616d65206974656d7320617320746865207365743b207165640000e98711003e0000000e0200005a0000005061726173467574757265436f6465557067726164657350617374436f64655072756e696e6750617374436f64654861736850617374436f64654d6574610000b09411003e000000ce0100001e000000b09411003e000000e00100001e000000b09411003e000000f20100001e000000b09411003e000000050200001e0000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f78636d2f78636d2d6578656375746f722f7372632f6173736574732e72730000b09411003e000000830100001e000000b09411003e0000008d0100001e000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f0000000000000097881100030000000000000078951100010000000000000000000000909511000f00000000000000000000002d981100030000000000000030981100120000000896110016000000787d1200000000001e961100560000007496110036000000787d120000000000aa96110051000000fb96110011000000787d1200000000000c97110036000000787d1200000000005e3a12000b000000429711004d0000008f97110068000000f797110036000000a23a12000c00000020536574207468652063757272656e742074696d652e20546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6e2070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627920604d696e696d756d506572696f64602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e202d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f2831296029202d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e20606f6e5f66696e616c697a656029202d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e6e6f77436f6d706163743c543a3a4d6f6d656e743e000000000000f4981100030000000000000000000000f79811000900000000000000000000000000000000000000000000000000000000000000787d12000099110000000000000000001099110001000000000000000100000000000000189911000900000000000000000000000d4a12000400000000000000000000000000000000000000000000000000000000000000787d1200249911000000000000000000349911000100000000000000010000004e6f77543a3a4d6f6d656e742c0000000000000001000000d400000069991100240000004469645570646174650000002c0000000000000001000000bf0000003c9911002d00000020446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f2043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e00000000000000c89911000d00000000000000f79811000900000000000000787d1200d89911000000000000000000e899110004000000000000004d696e696d756d506572696f640000002c0000000000000001000000ec000000089a11005a000000629a11005a000000bc9a110059000000159b11001c00000020546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e000000388811005f000000a500000001000000556e636c65416c7265616479496e636c75646564546f6f48696768556e636c6547656e65736973556e636c65546f6f4d616e79556e636c6573556e636c6573416c7265616479536574496e76616c6964556e636c65506172656e744f6c64556e636c650000000000d49b11000a00000000000000e09b1100010000000000000000000000f89b110001000000000000007365745f756e636c6573000000000000199c11000a00000000000000239c11000e000000009c1100190000002050726f76696465206120736574206f6620756e636c65732e6e65775f756e636c65735665633c543a3a4865616465723e00000000000000859111000600000000000000000000003c9d11003a00000000000000000000000000000000000000000000000000000000000000787d1200789d11000000000000000000889d110001000000000000000100000000000000949311000600000000000000000000004f4712000c00000000000000000000000000000000000000000000000000000000000000787d1200909d11000000000000000000a09d110001000000000000000000000000000000a89d11000c00000000000000000000000d4a12000400000000000000000000000000000000000000000000000000000000000000787d1200b49d11000000000000000000c49d11000100000000000000010000005665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e00002c0000000000000001000000ed000000149e1100070000002c0000000000000001000000bf000000fb9d110019000000446964536574556e636c65732c0000000000000001000000bf000000cc9d11002f000000205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e20417574686f72206f662063757272656e7420626c6f636b2e20556e636c657300e98711003e000000300100000100000048726d7057617465726d61726b7348726d704368616e6e656c4469676573747300000000259211001600000000000000549f11000300000000000000000000009c9f11000a00000000000000000000000d9211001800000000000000ec9f110001000000000000000000000004a01100030000000000000000000000fb91110012000000000000001ca0110001000000000000000000000034a01100040000000000000000000000eb911100100000000000000054a011000100000000000000000000006ca01100050000000000000000000000d49111001700000000000000787d120000000000000000000000000094a01100040000000000000000000000bc9111001800000000000000787d1200000000000000000000000000b4a01100040000000000000000000000c4a511000900000000000000cca211000600000000000000cda511001500000000000000373c12000300000000000000e2a511001900000000000000373c12000300000018a41100540000006ca411000c000000787d12000000000078a4110057000000cfa4110053000000787d12000000000022a5110045000000787d12000000000067a5110055000000bca51100080000000000000012a411000600000000000000cca211000600000097a311003d000000787d120000000000d4a311003e0000000000000080a311000a000000000000008aa311000d000000d2a211005600000028a3110027000000787d1200000000004fa311003100000000000000c8a211000400000000000000cca2110006000000e2a111004700000029a211004900000072a2110041000000787d120000000000b3a211001500000076a111002a000000787d120000000000a0a111004200000042a1110034000000d4a011002b000000787d120000000000ffa011004300000042a111003400000020466f7263652070726f636573732068726d7020636c6f7365206368616e6e656c2072657175657374732e204966207468657265206172652070656e64696e672048524d5020636c6f7365206368616e6e656c2072657175657374732c20796f752063616e2075736520746869732066756e6374696f6e2070726f6365737320616c6c206f662074686f736520726571756573747320696d6d6564696174656c792e20466f7263652070726f636573732068726d70206f70656e206368616e6e656c2072657175657374732e204966207468657265206172652070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732c20796f752063616e20757365207468697320546869732065787472696e7369632074726967676572732074686520636c65616e7570206f6620616c6c207468652048524d502073746f72616765206974656d73207468617420612070617261206d617920686176652e204e6f726d616c6c7920746869732068617070656e73206f6e6365207065722073657373696f6e2c20627574207468697320616c6c6f777320796f7520746f20747269676765722074686520636c65616e757020696d6d6564696174656c7920666f7220612073706563696669632070617261636861696e2e204f726967696e206d75737420626520526f6f742e7061726150617261496420496e69746961746520756e696c61746572616c20636c6f73696e67206f662061206368616e6e656c2e20546865206f726967696e206d75737420626520656974686572207468652073656e646572206f722074686520726563697069656e7420696e20746865206368616e6e656c206265696e6720636c6f7365642e2054686520636c6f737572652063616e206f6e6c792068617070656e206f6e20612073657373696f6e206368616e67652e6368616e6e656c5f696448726d704368616e6e656c49642041636365707420612070656e64696e67206f70656e206368616e6e656c20726571756573742066726f6d2074686520676976656e2073656e6465722e20546865206368616e6e656c2077696c6c206265206f70656e6564206f6e6c79206f6e20746865206e6578742073657373696f6e20626f756e646172792e73656e64657220496e697469617465206f70656e696e672061206368616e6e656c2066726f6d20612070617261636861696e20746f206120676976656e20726563697069656e74207769746820676976656e206368616e6e656c20706172616d65746572732e202d206070726f706f7365645f6d61785f636170616369747960202d2073706563696669657320686f77206d616e79206d657373616765732063616e20626520696e20746865206368616e6e656c206174206f6e63652e202d206070726f706f7365645f6d61785f6d6573736167655f73697a6560202d2073706563696669657320746865206d6178696d756d2073697a65206f6620616e79206f6620746865206d657373616765732e205468657365206e756d62657273206172652061207375626a65637420746f207468652072656c61792d636861696e20636f6e66696775726174696f6e206c696d6974732e20546865206368616e6e656c2063616e206265206f70656e6564206f6e6c792061667465722074686520726563697069656e7420636f6e6669726d7320697420616e64206f6e6c79206f6e20612073657373696f6e206368616e67652e726563697069656e7470726f706f7365645f6d61785f636170616369747970726f706f7365645f6d61785f6d6573736167655f73697a6500000000001caa11001700000001050000000000008aa311000d0000000000000033aa11001600000000000000000000000000000000000000787d12004caa110000000000000000005caa1100060000000000000000000000000000008caa11001b0000000000000000000000a7aa11001200000000000000000000000000000000000000000000000000000000000000787d1200bcaa11000000000000000000787d120000000000000000000100000000000000ccaa11001b0000000105000000000000cca211000600000000000000373c12000300000000000000000000000000000000000000787d1200e8aa11000000000000000000f8aa11000300000000000000010000000000000010ab11001f0000000105000000000000cca211000600000000000000373c12000300000000000000000000000000000000000000787d120030ab1100000000000000000040ab11000300000000000000010000000000000058ab11001800000001050000000000008aa311000d00000000000000bc8612000200000000000000000000000000000000000000787d120070ab1100000000000000000080ab110007000000000000000000000000000000b8ab11001c0000000000000000000000a7aa11001200000000000000000000000000000000000000000000000000000000000000787d1200d4ab11000000000000000000787d1200000000000000000001000000000000002c9e11000e0000000105000000000000cca211000600000000000000154812000e00000000000000000000000000000000000000787d1200e4ab11000000000000000000f4ab1100030000000000000000000000000000000cac11000c00000001050000000000008aa311000d0000000000000018ac11000b00000000000000000000000000000000000000787d120024ac1100000000000000000034ac1100030000000000000000000000000000004cac1100180000000105000000000000cca21100060000000000000064ac11000b00000000000000000000000000000000000000787d120070ac1100000000000000000080ac11000d000000000000000100000000000000e8ac1100170000000105000000000000cca21100060000000000000064ac11000b00000000000000000000000000000000000000787d120000ad11000000000000000000787d1200000000000000000001000000000000009e9311001300000001050000000000008aa311000d0000000000000010ad11002700000000000000000000000000000000000000787d120038ad1100000000000000000048ad1100020000000000000001000000000000003a9e1100120000000105000000000000cca21100060000000000000058ad11002200000000000000000000000000000000000000787d12007cad110000000000000000008cad110007000000000000000100000048726d704f70656e4368616e6e656c526571756573747348726d704f70656e4368616e6e656c526571756573740000002c0000000000000001000000bf0000001db611002f000000787d120000000000a1b3110030000000787d12000000000009b211000b000000d1b311004f00000048726d704f70656e4368616e6e656c52657175657374734c6973745665633c48726d704368616e6e656c49643e0000002c0000000000000001000000ee00000048726d704f70656e4368616e6e656c52657175657374436f756e74002c0000000000000001000000c00000002cb511005a00000086b511005f000000e5b511003800000048726d7041636365707465644368616e6e656c52657175657374436f756e74002c0000000000000001000000c000000020b411005c0000007cb411005b000000d7b411005500000048726d70436c6f73654368616e6e656c52657175657374732c0000000000000001000000bf000000fdb211006400000061b3110040000000787d120000000000a1b3110030000000787d12000000000009b211000b000000d1b311004f00000048726d70436c6f73654368616e6e656c52657175657374734c6973742c0000000000000001000000ee0000002c0000000000000001000000bf00000071b211002e00000009b211000b0000009fb211005e00000048726d704368616e6e656c7348726d704368616e6e656c002c0000000000000001000000bf000000dcb111002d00000009b211000b00000014b211005d00000048726d70496e67726573734368616e6e656c73496e6465785665633c5061726149643e002c0000000000000001000000bd000000afaf11005600000005b011000b000000787d12000000000010b011004800000058b0110047000000787d1200000000004bae11000c0000009fb011006300000002b111000f00000011b111006200000073b111000f00000082b1110040000000c2b111001a00000048726d704567726573734368616e6e656c73496e646578002c0000000000000001000000bd0000005665633c496e626f756e6448726d704d6573736167653c543a3a426c6f636b4e756d6265723e3e002c0000000000000001000000bd0000002baf11002b00000056af1100590000005665633c28543a3a426c6f636b4e756d6265722c205665633c5061726149643e293e00002c0000000000000001000000bd000000c4ad11003d00000001ae11004a0000004bae11000c00000057ae11002a00000081ae11003a000000bbae1100600000001baf110010000000204d61696e7461696e732061206d617070696e6720746861742063616e206265207573656420746f20616e7377657220746865207175657374696f6e3a20576861742070617261732073656e742061206d6573736167652061742074686520676976656e20626c6f636b206e756d62657220666f72206120676976656e2072656369657665722e20496e76617269616e74733a202d2054686520696e6e657220605665633c5061726149643e60206973206e6576657220656d7074792e202d2054686520696e6e657220605665633c5061726149643e602063616e6e6f742073746f72652074776f2073616d652060506172614964602e202d20546865206f7574657220766563746f7220697320736f7274656420617363656e64696e6720627920626c6f636b206e756d62657220616e642063616e6e6f742073746f72652074776f206974656d732077697468207468652073616d65202020626c6f636b206e756d6265722e2053746f7261676520666f7220746865206d6573736167657320666f722065616368206368616e6e656c2e20496e76617269616e743a2063616e6e6f74206265206e6f6e2d656d7074792069662074686520636f72726573706f6e64696e67206368616e6e656c20696e206048726d704368616e6e656c736020697320604e6f6e65602e20496e67726573732f65677265737320696e646578657320616c6c6f7720746f2066696e6420616c6c207468652073656e6465727320616e642072656365697665727320676976656e20746865206f70706f7369746520736964652e20492e652e2028612920696e677265737320696e64657820616c6c6f777320746f2066696e6420616c6c207468652073656e6465727320666f72206120676976656e20726563697069656e742e202862292065677265737320696e64657820616c6c6f777320746f2066696e6420616c6c2074686520726563697069656e747320666f72206120676976656e2073656e6465722e202d20666f72206561636820696e677265737320696e64657820656e74727920666f72206050602065616368206974656d2060496020696e2074686520696e6465782073686f756c642070726573656e7420696e206048726d704368616e6e656c73602020206173206028492c205029602e202d20666f7220656163682065677265737320696e64657820656e74727920666f72206050602065616368206974656d2060456020696e2074686520696e6465782073686f756c642070726573656e7420696e206048726d704368616e6e656c73602020206173206028502c204529602e202d2074686572652073686f756c64206265206e6f206f746865722064616e676c696e67206368616e6e656c7320696e206048726d704368616e6e656c73602e202d2074686520766563746f72732061726520736f727465642e2048524d50206368616e6e656c2064617461206173736f6369617465642077697468206561636820706172612e20496e76617269616e743a202d2065616368207061727469636970616e7420696e20746865206368616e6e656c2073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e205468652048524d502077617465726d61726b206173736f6369617465642077697468206561636820706172612e202d2065616368207061726120605060207573656420686572652061732061206b65792073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e204120736574206f662070656e64696e672048524d5020636c6f7365206368616e6e656c20726571756573747320746861742061726520676f696e6720746f20626520636c6f73656420647572696e67207468652073657373696f6e206368616e67652e205573656420666f7220636865636b696e67206966206120676976656e206368616e6e656c206973207265676973746572656420666f7220636c6f737572652e2054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e2054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732077657265206163636570746564206279206120676976656e20726563697069656e7420706172612e20496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732060285f2c2058296020776974682060636f6e6669726d6564602073657420746f20747275652c20617320746865206e756d626572206f66206048726d7041636365707465644368616e6e656c52657175657374436f756e746020666f72206058602e2054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732061726520696e6974697461746564206279206120676976656e2073656e64657220706172612e20496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d73207468617420686173206028582c205f296020617320746865206e756d626572206f66206048726d704f70656e4368616e6e656c52657175657374436f756e746020666f72206058602e2054686520736574206f662070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732eb08611003f000000530100000100000064b611003e00000050616c6c65742070617261732073746f7261676520697320696e636f6e73697374656e742c20636f6465206e6f7420666f756e6420666f72206861736820000000000000a2921100160000000000000080b71100020000000000000000000000b0b711000100000000000000000000008c9211001600000000000000b8b71100020000000000000000000000e8b71100010000000000000000000000719211001b00000000000000f0b7110003000000000000000000000038b811000100000000000000000000005e9211001300000000000000b8b7110002000000000000000000000040b811000100000000000000000000004c921100120000000000000054a0110001000000000000000000000048b81100030000000000000000000000c8a211000400000000000000cca21100060000000000000065b9110008000000000000006db911000e000000d7b911003f00000000000000c8a211000400000000000000cca211000600000000000000c7b911000800000000000000cfb911000800000086b911004100000000000000c8a211000400000000000000cca21100060000000000000065b9110008000000000000006db911000e000000000000007bb911000b00000000000000154812000e00000034b9110031000000ecb811004800000060b811003f0000009fb811003e000000ddb811000f0000002050757420612070617261636861696e206469726563746c7920696e746f20746865206e6578742073657373696f6e277320616374696f6e2071756575652e2057652063616e277420717565756520697420616e7920736f6f6e6572207468616e207468697320776974686f757420676f696e6720696e746f2074686520696e697469616c697a65722e2e2e204e6f74652061206e657720626c6f636b206865616420666f7220706172612077697468696e2074686520636f6e74657874206f66207468652063757272656e7420626c6f636b2e205363686564756c65206120636f6465207570677261646520666f7220626c6f636b206065787065637465645f6174602e6e65775f636f646556616c69646174696f6e436f646565787065637465645f617420536574207468652073746f7261676520666f72207468652063757272656e742070617261636861696e2068656164206461746120696d6d6564696174656c792e6e65775f68656164486561644461746120536574207468652073746f7261676520666f72207468652070617261636861696e2076616c69646174696f6e20636f646520696d6d6564696174656c792e00000000000090be11000a000000000000000000000064ac11000b00000000000000000000000000000000000000000000000000000000000000787d12009cbe11000000000000000000acbe110001000000000000000100000000000000b4be11000e0000000105000000000000cca211000600000000000000c2be11000d00000000000000000000000000000000000000787d1200d0be11000000000000000000e0be110001000000000000000000000000000000e8be1100050000000105000000000000cca211000600000000000000cfb911000800000000000000000000000000000000000000787d1200f0be1100000000000000000000bf11000100000000000000000000000000000008bf11000f0000000105000000000000cca211000600000000000000723412000400000000000000000000000000000000000000787d120018bf1100000000000000000028bf110003000000000000000000000000000000569411000c000000010500000000000040bf11001800000000000000723412000400000000000000000000000000000000000000787d120058bf1100000000000000000068bf110004000000000000000000000000000000629411000c0000000105000000000000cca21100060000000000000088bf11002000000000000000000000000000000000000000787d1200a8bf11000000000000000000b8bf110003000000000000000100000000000000479411000f0000000000000000000000d0bf11001d00000000000000000000000000000000000000000000000000000000000000787d1200f0bf1100000000000000000000c011000600000000000000010000000000000035941100120000000105000000000000cca211000600000000000000154812000e00000000000000000000000000000000000000787d120030c01100000000000000000040c011000300000000000000000000000000000058c011000e0000000105000000000000cca211000600000000000000723412000400000000000000000000000000000000000000787d120068c01100000000000000000078c011000300000000000000000000000000000090c011000c0000000105000000000000836a12000c0000000000000064ac11000b00000000000000000000000000000000000000787d12009cc011000000000000000000acc0110001000000000000000100000000000000b4c01100140000000105000000000000cca211000600000000000000c8c011000f00000000000000000000000000000000000000787d1200d8c011000000000000000000e8c0110001000000000000000000000000000000f0c011000e0000000106000000000000723412000400000000000000373c12000300000000000000000000000000000000000000787d120000c11100000000000000000010c111000100000000000000010000000000000018c111000a00000001060000000000007234120004000000000000006db911000e00000000000000000000000000000000000000787d120024c11100000000000000000034c1110004000000000000000000000050617261636861696e7300002c0000000000000001000000bd000000a2c711004b000000506172614c6966656379636c6573506172614c6966656379636c65002c0000000000000001000000bf00000073c711002f00000048656164730000002c0000000000000001000000bf0000004bc711002800000043757272656e74436f646548617368002c0000000000000001000000bf0000001ec711002d000000787d120000000000b4c2110039000000285061726149642c20543a3a426c6f636b4e756d626572292c0000000000000001000000bf000000b5c61100580000000dc7110011000000787d120000000000b4c21100390000005061726150617374436f64654d6574613c543a3a426c6f636b4e756d6265723e2c0000000000000001000000ef000000e4c511005200000036c611005200000088c611002d0000005665633c285061726149642c20543a3a426c6f636b4e756d626572293e0000002c0000000000000001000000bd000000d6c31100680000003ec41100600000009ec411003b000000d9c41100640000003dc51100520000008fc51100550000002c0000000000000001000000bf000000edc211004a00000037c311005900000090c3110046000000467574757265436f64654861736800002c0000000000000001000000bf0000008dc2110027000000787d120000000000b4c2110039000000416374696f6e7351756575652c0000000000000001000000bd00000048c21100450000005570636f6d696e67506172617347656e657369735061726147656e6573697341726773002c0000000000000001000000bf00000020c2110028000000436f64654279486173685265667300002c0000000000000001000000c0000000d6c111004a000000436f646542794861736800002c0000000000000001000000bf00000054c1110024000000787d12000000000078c111004c000000c4c11100120000002056616c69646174696f6e20636f64652073746f7265642062792069747320686173682e20546869732073746f7261676520697320636f6e73697374656e742077697468205b60467574757265436f646548617368605d2c205b6043757272656e74436f646548617368605d20616e64205b6050617374436f646548617368605d2e20546865206e756d626572206f66207265666572656e6365206f6e207468652076616c69646174696f6e20636f646520696e205b60436f6465427948617368605d2073746f726167652e205570636f6d696e6720706172617320696e7374616e74696174696f6e20617267756d656e74732e2054686520616374696f6e7320746f20706572666f726d20647572696e6720746865207374617274206f6620612073706563696669632073657373696f6e20696e6465782e205468652061637475616c2066757475726520636f64652068617368206f66206120706172612e20436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e2054686520626c6f636b206e756d6265722061742077686963682074686520706c616e6e656420636f6465206368616e676520697320657870656374656420666f72206120706172612e20546865206368616e67652077696c6c206265206170706c696564206166746572207468652066697273742070617261626c6f636b20666f72207468697320494420696e636c7564656420776869636820657865637574657320696e2074686520636f6e74657874206f6620612072656c617920636861696e20626c6f636b20776974682061206e756d626572203e3d206065787065637465645f6174602e2057686963682070617261732068617665207061737420636f64652074686174206e65656473207072756e696e6720616e64207468652072656c61792d636861696e20626c6f636b2061742077686963682074686520636f646520776173207265706c616365642e204e6f746520746861742074686973206973207468652061637475616c20686569676874206f662074686520696e636c7564656420626c6f636b2c206e6f7420746865206578706563746564206865696768742061742077686963682074686520636f6465207570677261646520776f756c64206265206170706c6965642c20616c74686f7567682074686579206d617920626520657175616c2e205468697320697320746f20656e737572652074686520656e7469726520616363657074616e636520706572696f6420697320636f76657265642c206e6f7420616e206f666673657420616363657074616e636520706572696f64207374617274696e672066726f6d207468652074696d65206174207768696368207468652070617261636861696e20706572636569766573206120636f6465207570677261646520617320686176696e67206f636375727265642e204d756c7469706c6520656e747269657320666f7220612073696e676c65207061726120617265207065726d69747465642e204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e205061737420636f6465206f662070617261636861696e732e205468652070617261636861696e73207468656d73656c766573206d6179206e6f74206265207265676973746572656420616e796d6f72652c2062757420776520616c736f206b65657020746865697220636f6465206f6e2d636861696e20666f72207468652073616d6520616d6f756e74206f662074696d65206173206f7574646174656420636f646520746f206b65657020697420617661696c61626c6520666f72207365636f6e6461727920636865636b6572732e2041637475616c207061737420636f646520686173682c20696e646963617465642062792074686520706172612069642061732077656c6c2061732074686520626c6f636b206e756d62657220617420776869636820697420626563616d65206f757464617465642e205468652076616c69646174696f6e20636f64652068617368206f66206576657279206c69766520706172612e2054686520686561642d64617461206f66206576657279207265676973746572656420706172612e205468652063757272656e74206c6966656379636c65206f66206120616c6c206b6e6f776e2050617261204944732e20416c6c2070617261636861696e732e204f72646572656420617363656e64696e67206279205061726149642e20506172617468726561647320617265206e6f7420696e636c756465642e000000b08611003f000000ec0000002500000016c811001e00000072756e74696d653a3a70617261734d697373696e6720636f646520666f722072656d6f7665642068617368205061726173536861726564000000000048c91100130000000000000000000000836a12000c00000000000000000000000000000000000000000000000000000000000000787d12005cc9110000000000000000006cc911000100000000000000010000000000000074c911001600000000000000000000008ac911001300000000000000000000000000000000000000000000000000000000000000787d1200a0c911000000000000000000b0c9110002000000000000000100000000000000c0c91100130000000000000000000000d3c911001000000000000000000000000000000000000000000000000000000000000000787d1200e4c911000000000000000000f4c9110002000000000000000100000043757272656e7453657373696f6e496e646578002c0000000000000001000000c00000000ecb11001b00000041637469766556616c696461746f72496e64696365735665633c56616c696461746f72496e6465783e0000002c0000000000000001000000bd000000a0ca110042000000e2ca11002c00000041637469766556616c696461746f724b6579735665633c56616c696461746f7249643e002c0000000000000001000000bd00000004ca11006000000064ca11003c000000205468652070617261636861696e206174746573746174696f6e206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e20546869732073686f756c64206265207468652073616d65206c656e677468206173206041637469766556616c696461746f72496e6469636573602e20416c6c207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e20496e64696365732061726520696e746f207468652062726f616465722076616c696461746f72207365742e205468652063757272656e742073657373696f6e20696e6465782e506172615363686564756c657200000000000048cd11000f000000000000000000000057cd11001800000000000000000000000000000000000000000000000000000000000000787d120070cd1100000000000000000080cd110006000000000000000100000000000000b0cd11000f0000000000000000000000bfcd11001400000000000000000000000000000000000000000000000000000000000000787d1200d4cd11000000000000000000e4cd11000400000000000000010000000000000004ce110011000000000000000000000015ce11001900000000000000000000000000000000000000000000000000000000000000787d120030ce1100000000000000000040ce11000800000000000000010000000000000080ce110014000000000000000000000064ac11000b00000000000000000000000000000000000000000000000000000000000000787d120094ce11000000000000000000a4ce110004000000000000000100000000000000c4ce1100110000000000000000000000154812000e00000000000000000000000000000000000000000000000000000000000000787d1200d8ce11000000000000000000e8ce11000600000000000000010000000000000018cf110009000000000000000000000021cf11001300000000000000000000000000000000000000000000000000000000000000787d120034cf1100000000000000000044cf110006000000000000000100000056616c696461746f7247726f7570735665633c5665633c56616c696461746f72496e6465783e3e002c0000000000000001000000bd000000e0d511005b0000003bd611005b00000096d611000e000000787d120000000000a4d611006000000004d711006000000050617261746872656164517565756550617261746872656164436c61696d5175657565002c0000000000000001000000f000000000d5110046000000787d12000000000046d51100450000008bd5110055000000417661696c6162696c697479436f7265735665633c4f7074696f6e3c436f72654f636375706965643e3e00002c0000000000000001000000f10000003ed3110067000000a5d3110032000000d7d311005000000027d4110019000000787d12000000000040d411003600000076d4110039000000afd411005100000050617261746872656164436c61696d496e6465782c0000000000000001000000bd0000005cd2110056000000b2d211002d000000787d120000000000dfd211005f00000053657373696f6e5374617274426c6f636b0000002c0000000000000001000000c000000096d0110069000000787d120000000000ffd011005600000055d1110058000000add111005600000003d21100590000005363686564756c65645665633c436f726541737369676e6d656e743e2c0000000000000001000000f200000074cf110038000000787d120000000000accf110053000000787d120000000000ffcf11007f0000007ed01100180000002043757272656e746c79207363686564756c656420636f726573202d20667265652062757420757020746f206265206f636375706965642e20426f756e64656420627920746865206e756d626572206f6620636f7265733a206f6e6520666f7220656163682070617261636861696e20616e642070617261746872656164206d756c7469706c657865722e205468652076616c756520636f6e7461696e656420686572652077696c6c206e6f742062652076616c69642061667465722074686520656e64206f66206120626c6f636b2e2052756e74696d6520415049732073686f756c64206265207573656420746f2064657465726d696e65207363686564756c656420636f7265732f20666f7220746865207570636f6d696e6720626c6f636b2e2054686520626c6f636b206e756d626572207768657265207468652073657373696f6e207374617274206f636375727265642e205573656420746f20747261636b20686f77206d616e792067726f757020726f746174696f6e732068617665206f636375727265642e204e6f7465207468617420696e2074686520636f6e74657874206f662070617261636861696e73206d6f64756c6573207468652073657373696f6e206368616e6765206973207369676e616c6c656420647572696e672074686520626c6f636b20616e6420656e61637465642061742074686520656e64206f662074686520626c6f636b20286174207468652066696e616c697a6174696f6e2073746167652c20746f206265206578616374292e205468757320666f7220616c6c20696e74656e747320616e6420707572706f7365732074686520656666656374206f66207468652073657373696f6e206368616e6765206973206f627365727665642061742074686520626c6f636b20666f6c6c6f77696e67207468652073657373696f6e206368616e67652c20626c6f636b206e756d626572206f66207768696368207765207361766520696e20746869732073746f726167652076616c75652e20416e20696e646578207573656420746f20656e737572652074686174206f6e6c79206f6e6520636c61696d206f6e206120706172617468726561642065786973747320696e20746865207175657565206f722069732063757272656e746c79206265696e672068616e646c656420627920616e206f6363757069656420636f72652e20426f756e64656420627920746865206e756d626572206f66207061726174687265616420636f72657320616e64207363686564756c696e67206c6f6f6b61686561642e20526561736f6e61626c792c203130202a203530203d203530302e204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20456e74726965732061726520604e6f6e65602069662074686520636f7265206973206e6f742063757272656e746c79206f636375706965642e2043616e2062652074656d706f726172696c792060536f6d6560206966207363686564756c656420627574206e6f74206f636375706965642e2054686520692774682070617261636861696e2062656c6f6e677320746f20746865206927746820636f72652c2077697468207468652072656d61696e696e6720636f72657320616c6c206265696e6720706172617468726561642d6d756c7469706c65786572732e20426f756e64656420627920746865206d6178696d756d206f6620656974686572206f662074686573652074776f2076616c7565733a2020202a20546865206e756d626572206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c65786572732020202a20546865206e756d626572206f662076616c696461746f727320646976696465642062792060636f6e66696775726174696f6e2e6d61785f76616c696461746f72735f7065725f636f7265602e2041207175657565206f66207570636f6d696e6720636c61696d7320616e6420776869636820636f726520746865792073686f756c64206265206d6170706564206f6e746f2e20546865206e756d626572206f662071756575656420636c61696d7320697320626f756e6465642061742074686520607363686564756c696e675f6c6f6f6b616865616460206d756c7469706c69656420627920746865206e756d626572206f662070617261746872656164206d756c7469706c6578657220636f7265732e20526561736f6e61626c792c203130202a203530203d203530302e20416c6c207468652076616c696461746f722067726f7570732e204f6e6520666f72206561636820636f72652e20496e64696365732061726520696e746f206041637469766556616c696461746f727360202d206e6f74207468652062726f6164657220736574206f6620506f6c6b61646f742076616c696461746f72732c2062757420696e7374656164206a7573742074686520737562736574207573656420666f722070617261636861696e7320647572696e6720746869732073657373696f6e2e20426f756e643a20546865206e756d626572206f6620636f726573206973207468652073756d206f6620746865206e756d62657273206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c65786572732e20526561736f6e61626c792c203130302d313030302e2054686520646f6d696e616e7420666163746f7220697320746865206e756d626572206f662076616c696461746f72733a207361666520757070657220626f756e642061742031306b2e000000000000000000000000617474656d707420746f20646976696465206279207a65726f00000088281200430000003d0100002a00000088281200430000004101000015000000636f7265206973206e6f74206f7574206f6620626f756e647320616e64207765206172652067756172616e7465656420746f20626520616674657220746865206d6f737420726563656e742073657373696f6e2073746172743b2071656400008828120043000000c80100001e0000008828120043000000d40100001e00000088281200430000001d02000016000000edd811001400000001d9110030000000aad8110043000000651612000300000067e01100010000007cd811002e000000651612000300000067e01100010000007468652048524d502077617465726d61726b206973206168656164207468652072656c61792d706172656e7420287468652048524d502077617465726d61726b206973206e6f7420616476616e6365642072656c617469766520746f20746865206c6173742077617465726d61726b20287468652048524d502077617465726d61726b20282920646f65736e2774206c616e64206f6e206120626c6f636b2077697468206d657373616765732072656365697665644572722c0000000400000004000000f30000004f6b00002c0000000400000004000000f40000002c0000000100000001000000f5000000000000008d9b110012000000000000002cda11000100000000000000000000007d9b1100100000000000000034da1100010000000000000000000000709b11000d000000000000003cda1100010000000000000000000000649b11000c0000000000000044da1100010000000000000000000000589b11000c000000000000004cda1100010000000000000000000000449b1100140000000000000054da11000100000000000000000000009f9b110008000000000000005cda1100010000000000000019db110023000000f8da110021000000e7da110011000000d1da110016000000b1da11002000000092da11001f00000064da11002e0000002054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e2054686520756e636c6520697320616c726561647920696e636c756465642e2054686520756e636c6520697320746f6f206869676820696e20636861696e2e2054686520756e636c652069732067656e657369732e20546f6f206d616e7920756e636c65732e20556e636c657320616c72656164792073657420696e2074686520626c6f636b2e2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e54696d657374616d7020746f6f2066617220696e2066757475726520746f206163636570744765747320616e64206465636f6465732074696d657374616d7020696e686572656e742064617461000000f60000001000000004000000f7000000078711005e000000d900000012000000f1db11005f0000001e01000001000000646973617070726f76655f70726f706f73616c636c6f7365766f746570726f706f7365657865637574657365745f6d656d626572732f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f636f6c6c6563746976652f7372632f6c69622e72736e6f6e652076616c756573206172652066696c7465726564206f757420696e2070726576696f7573206c6f6769633b207165640094dc11003e0000005e020000120000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f61756374696f6e732e72734f6363757069656420636f726520616c77617973206861732070656e64696e6720617661696c6162696c6974793b20716564182512004d000000850000001a00000086dd110074000000182512004d0000006600000023000000182512004d000000690000001a00000072756e74696d653a3a706f6c6b61646f742d6170693a3a7631706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a72756e74696d655f6170695f696d706c3a3a7631436f756c64206e6f742064657465726d696e65207468652067726f757020726573706f6e7369626c6520666f7220636f7265206578747261637465642066726f6d206c697374206f6620636f72657320666f7220736f6d65207072696f7220626c6f636b20696e2073616d652073657373696f6e000027de11005c000000710000000f00000062617463685f616c6c61735f6465726976617469766562617463682f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f7574696c6974792f7372632f6c69622e727370616c6c65745f7574696c6974793a3a70616c6c657470616c6c65745f636f6c6c65637469766500006fdf110029000000eade1100640000002e020000330000004edf11002100000094791200020000006672616d655f737570706f72743a3a73746f726167652f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f737570706f72742f7372632f73746f726167652f6d6f642e7273286b65792c2076616c756529206661696c656420746f206465636f6465206174206e6578745f6b65792072657475726e65642061206b65792077697468206e6f2076616c7565206174207672662d6e6d2d706b436865636b4e6f6e63650068e01100130000007be011002e000000a9e01100020000001fe011003b0000005ae011000d00000067e0110001000000436f6c6c65637469766550726f706f73616c7350726f706f73616c436f756e7450726f706f73616c4f66566f74696e6772756e74696d653a3a636f6c6c65637469766557726f6e6720636f756e74207573656420746f20657374696d617465207365745f6d656d62657273207765696768742e2065787065637465642028292076732061637475616c2028294e6577206d656d6265727320636f756e742028292065786365656473206d6178696d756d20616d6f756e74206f66206d656d626572732065787065637465642028292e6d6f646c70792f7574696c697375626100eade110064000000ad0200003300000000000000617474656d707420746f20646976696465206279207a65726f0000002c000000080000000400000018000000b77212006b00000034050000010000000000000022de1100050000000000000090e11100010000000000000000000000a8e1110012000000000000000000000015de11000d0000000000000038e2110002000000000000000000000068e211000d00000000000000000000000cde1100090000000000000090e11100010000000000000000000000d0e211000d0000000000000000000000d4e811000500000000000000d9e811001800000053e7110020000000787d120000000000bde311001f000000787d120000000000dce311003c000000787d12000000000018e411005800000070e4110033000000787d1200000000005e3a12000b000000a3e4110041000000a23a12000c000000787d12000000000073e7110056000000c9e711004d00000016e81100560000006ce8110054000000c0e811001400000000000000177f1200050000000000000034e71100030000000000000037e7110004000000000000003be7110018000000e4e4110038000000787d1200000000001ce511005600000072e5110030000000787d120000000000a2e5110052000000f4e51100590000004de6110055000000a2e6110020000000787d120000000000c2e611003e000000787d12000000000000e711003400000038e311003c00000074e3110049000000787d120000000000bde311001f000000787d120000000000dce311003c000000787d12000000000018e411005800000070e4110033000000787d1200000000005e3a12000b000000a3e4110041000000a23a12000c0000002053656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e205468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e204966206f726967696e20697320726f6f74207468656e2063616c6c2061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e20285468697320696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e202d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e2046696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e20776869636820757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e204e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e206265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e74207468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f316020696e20746865204d756c74697369672070616c6c657420696e73746561642e204e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e20546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e75313663616c6c426f783c3c5420617320436f6e6669673e3a3a43616c6c3e2053656e642061206261746368206f662064697370617463682063616c6c732e20546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e2074686520604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d61646520616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c6574656460206576656e74206973206465706f73697465642e63616c6c735665633c3c5420617320436f6e6669673e3a3a43616c6c3e506172656e7420686173682073686f756c642062652076616c69642e00000034ea11005e0000003801000009000000c4ea11003100000034ea11005e0000003f0100000d00000034ea11005e000000640100000d0000005369676e617475726520766572696669636174696f6e206661696c65642e000034ea11005e000000550100001100000092ea11003200000034ea11005e000000c001000009000000446967657374206974656d206d757374206d6174636820746861742063616c63756c617465642e0034ea11005e000000c80100000d00000053746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e34ea11005e000000ce010000090000005472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e34ea11005e000000d0010000090000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6578656375746976652f7372632f6c69622e72734e756d626572206f6620646967657374206974656d73206d757374206d6174636820746861742063616c63756c617465642e496e76616c696420696e686572656e7420706f736974696f6e20666f722065787472696e73696320617420696e64657820000000f1db11005f000000f90000000100000057726f6e6750726f706f73616c576569676874546f6f4d616e7950726f706f73616c73546f6f4561726c79416c7265616479496e697469616c697a65644475706c6963617465566f746557726f6e67496e64657850726f706f73616c4d697373696e674475706c696361746550726f706f73616c57726f6e6750726f706f73616c4c656e6774680000000000e6db11000b0000000000000098ec1100030000000000000000000000e0ec1100180000000000000000000000dfdb11000700000000000000a0ed1100020000000000000000000000d0ed11000a0000000000000000000000d8db1100070000000000000020ee110003000000000000000000000068ee11001b0000000000000000000000d4db1100040000000000000040ef110003000000000000000000000088ef11000e0000000000000000000000cfdb11000500000000000000f8ef110004000000000000000000000058f011001e0000000000000000000000bcdb1100130000000000000048f1110001000000000000000000000060f111000d0000000000000000000000510312000b00000000000000591e120011000000000000005c03120005000000000000006103120014000000000000007503120009000000000000007e0312000b00000087ff110021000000787d120000000000a8ff110052000000faff110039000000330012004e000000810012002b000000787d120000000000ac00120016000000787d120000000000c2001200550000001701120049000000787d1200000000005e3a12000b000000bff611000a00000060011200150000007501120039000000ae01120039000000e701120027000000b5f71100060000000e0212005d0000006b0212003c000000a702120052000000f902120058000000a23a12000c00000000000000b0fa1100080000000000000069fe11001f00000000000000e2f811000c00000000000000eef811000c00000088fe11003d000000787d120000000000c5fe11002b000000787d1200000000005e3a12000b000000bff611000a000000f0fe11006100000051ff110036000000a6fa11000a000000a23a12000c000000000000004cfe1100090000000000000055fe11001400000000000000b0fa1100080000000000000069fe11001f00000000000000e2f811000c00000000000000eef811000c000000bffa11003f000000787d120000000000fefa110022000000787d12000000000020fb11005100000071fb110016000000787d1200000000005e3a12000b000000bff611000a00000087fb11002c000000e7f611003900000020f7110038000000b3fb110032000000e5fb11003e00000023fc110040000000b5f711000600000063fc11002e00000091fc11003d000000cefc11002b000000f9fc1100430000003cfd11002f0000006bfd110037000000a2fd11003a000000dcfd11003400000010fe11003000000040fe11000c000000a23a12000c00000000000000b0fa11000800000000000000234812000700000000000000177f12000500000000000000a8f811001600000000000000b8fa110007000000000000000d4a120004000000faf811003d000000787d12000000000037f9110024000000787d1200000000005bf9110053000000aef911005a0000005e3a12000b000000bff611000a00000008fa110043000000b5f71100060000004bfa11002c00000077fa11002f000000a6fa11000a000000a23a12000c000000000000001bf311000d00000000000000234812000700000000000000177f12000500000000000000a8f811001600000000000000bef811001500000000000000d3f811000f00000000000000e2f811000c00000000000000eef811000c00000028f3110054000000787d1200000000007cf3110056000000787d120000000000d2f311005300000025f4110030000000787d12000000000055f4110053000000a8f411004a000000787d120000000000f2f41100590000004bf5110058000000787d120000000000a3f511006300000006f61100590000005ff6110060000000787d1200000000005e3a12000b000000bff611000a000000c9f611001e000000e7f611003900000020f711003800000058f71100330000008bf711002a000000b5f7110006000000bbf7110044000000fff71100600000005ff811003800000097f8110011000000a23a12000c000000000000001bf311000d000000000000002348120007000000c8f111005e000000787d12000000000026f2110023000000787d12000000000049f211000c00000055f2110048000000787d1200000000005e3a12000b0000009df2110038000000d5f211000b000000e0f2110013000000f3f2110028000000a23a12000c00000020446973617070726f766520612070726f706f73616c2c20636c6f73652c20616e642072656d6f76652069742066726f6d207468652073797374656d2c207265676172646c657373206f66206974732063757272656e742073746174652e204d7573742062652063616c6c65642062792074686520526f6f74206f726967696e2e20506172616d65746572733a202a206070726f706f73616c5f68617368603a205468652068617368206f66207468652070726f706f73616c20746861742073686f756c6420626520646973617070726f7665642e20436f6d706c65786974793a204f285029207768657265205020697320746865206e756d626572206f66206d61782070726f706f73616c73204442205765696768743a202a2052656164733a2050726f706f73616c73202a205772697465733a20566f74696e672c2050726f706f73616c732c2050726f706f73616c4f6670726f706f73616c5f6861736820436c6f7365206120766f746520746861742069732065697468657220617070726f7665642c20646973617070726f766564206f722077686f736520766f74696e6720706572696f642068617320656e6465642e204d61792062652063616c6c656420627920616e79207369676e6564206163636f756e7420696e206f7264657220746f2066696e69736820766f74696e6720616e6420636c6f7365207468652070726f706f73616c2e2049662063616c6c6564206265666f72652074686520656e64206f662074686520766f74696e6720706572696f642069742077696c6c206f6e6c7920636c6f73652074686520766f74652069662069742069732068617320656e6f75676820766f74657320746f20626520617070726f766564206f7220646973617070726f7665642e2049662063616c6c65642061667465722074686520656e64206f662074686520766f74696e6720706572696f642061627374656e74696f6e732061726520636f756e7465642061732072656a656374696f6e7320756e6c6573732074686572652069732061207072696d65206d656d6265722073657420616e6420746865207072696d65206d656d626572206361737420616e20617070726f76616c2e2049662074686520636c6f7365206f7065726174696f6e20636f6d706c65746573207375636365737366756c6c79207769746820646973617070726f76616c2c20746865207472616e73616374696f6e206665652077696c6c206265207761697665642e204f746865727769736520657865637574696f6e206f662074686520617070726f766564206f7065726174696f6e2077696c6c206265206368617267656420746f207468652063616c6c65722e202b206070726f706f73616c5f7765696768745f626f756e64603a20546865206d6178696d756d20616d6f756e74206f662077656967687420636f6e73756d656420627920657865637574696e672074686520636c6f7365642070726f706f73616c2e202b20606c656e6774685f626f756e64603a2054686520757070657220626f756e6420666f7220746865206c656e677468206f66207468652070726f706f73616c20696e2073746f726167652e20436865636b656420766961202020202020202020202020202020202020206073746f726167653a3a726561646020736f206974206973206073697a655f6f663a3a3c7533323e2829203d3d203460206c6172676572207468616e207468652070757265206c656e6774682e20232320576569676874202d20604f2842202b204d202b205031202b20503229602077686572653a2020202d20604260206973206070726f706f73616c602073697a6520696e20627974657320286c656e6774682d6665652d626f756e646564292020202d20604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20605031602069732074686520636f6d706c6578697479206f66206070726f706f73616c6020707265696d6167652e2020202d20605032602069732070726f706f73616c2d636f756e742028636f64652d626f756e64656429202d2044423a20202d20322073746f726167652072656164732028604d656d62657273603a20636f64656320604f284d29602c20605072696d65603a20636f64656320604f283129602920202d2033206d75746174696f6e73202860566f74696e67603a20636f64656320604f284d29602c206050726f706f73616c4f66603a20636f64656320604f284229602c206050726f706f73616c73603a20636f64656320604f28503229602920202d20616e79206d75746174696f6e7320646f6e65207768696c6520657865637574696e67206070726f706f73616c6020286050316029202d20757020746f2033206576656e7473436f6d706163743c50726f706f73616c496e6465783e70726f706f73616c5f7765696768745f626f756e64436f6d706163743c5765696768743e6c656e6774685f626f756e64436f6d706163743c7533323e2041646420616e20617965206f72206e617920766f746520666f72207468652073656e64657220746f2074686520676976656e2070726f706f73616c2e205265717569726573207468652073656e64657220746f2062652061206d656d6265722e205472616e73616374696f6e20666565732077696c6c2062652077616976656420696620746865206d656d62657220697320766f74696e67206f6e20616e7920706172746963756c61722070726f706f73616c20666f72207468652066697273742074696d6520616e64207468652063616c6c206973207375636365737366756c2e2053756273657175656e7420766f7465206368616e6765732077696c6c206368617267652061206665652e202d20604f284d296020776865726520604d60206973206d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20312073746f72616765207265616420604d656d62657273602028636f64656320604f284d2960292020202d20312073746f72616765206d75746174696f6e2060566f74696e67602028636f64656320604f284d296029202d2031206576656e7470726f706f73616c617070726f7665204164642061206e65772070726f706f73616c20746f2065697468657220626520766f746564206f6e206f72206578656375746564206469726563746c792e205265717569726573207468652073656e64657220746f206265206d656d6265722e20607468726573686f6c64602064657465726d696e65732077686574686572206070726f706f73616c60206973206578656375746564206469726563746c792028607468726573686f6c64203c20326029206f722070757420757020666f7220766f74696e672e202d20604f2842202b204d202b2050312960206f7220604f2842202b204d202b20503229602077686572653a2020202d206272616e6368696e6720697320696e666c75656e63656420627920607468726573686f6c64602077686572653a20202020202d20605031602069732070726f706f73616c20657865637574696f6e20636f6d706c65786974792028607468726573686f6c64203c2032602920202020202d20605032602069732070726f706f73616c732d636f756e742028636f64652d626f756e646564292028607468726573686f6c64203e3d203260292020202d20312073746f726167652072656164206069735f6d656d626572602028636f64656320604f284d2960292020202d20312073746f726167652072656164206050726f706f73616c4f663a3a636f6e7461696e735f6b6579602028636f64656320604f28312960292020202d20444220616363657373657320696e666c75656e63656420627920607468726573686f6c64603a20202020202d204549544845522073746f7261676520616363657373657320646f6e65206279206070726f706f73616c602028607468726573686f6c64203c2032602920202020202d204f522070726f706f73616c20696e73657274696f6e2028607468726573686f6c64203c3d20326029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c73602028636f64656320604f285032296029202020202020202d20312073746f72616765206d75746174696f6e206050726f706f73616c436f756e74602028636f64656320604f2831296029202020202020202d20312073746f72616765207772697465206050726f706f73616c4f66602028636f64656320604f2842296029202020202020202d20312073746f726167652077726974652060566f74696e67602028636f64656320604f284d2960292020202d2031206576656e747468726573686f6c64436f6d706163743c4d656d626572436f756e743e426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e20446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e202d20604f284d202b2050296020776865726520604d60206d656d626572732d636f756e742028636f64652d626f756e6465642920616e642060506020636f6d706c6578697479206f66206469737061746368696e67206070726f706f73616c60202d2044423a203120726561642028636f64656320604f284d296029202b20444220616363657373206f66206070726f706f73616c60205365742074686520636f6c6c6563746976652773206d656d626572736869702e202d20606e65775f6d656d62657273603a20546865206e6577206d656d626572206c6973742e204265206e69636520746f2074686520636861696e20616e642070726f7669646520697420736f727465642e202d20607072696d65603a20546865207072696d65206d656d6265722077686f736520766f74652073657473207468652064656661756c742e202d20606f6c645f636f756e74603a2054686520757070657220626f756e6420666f72207468652070726576696f7573206e756d626572206f66206d656d6265727320696e2073746f726167652e202020202020202020202020202020205573656420666f722077656967687420657374696d6174696f6e2e20526571756972657320726f6f74206f726967696e2e204e4f54453a20446f6573206e6f7420656e666f7263652074686520657870656374656420604d61784d656d6265727360206c696d6974206f6e2074686520616d6f756e74206f66206d656d626572732c20627574202020202020207468652077656967687420657374696d6174696f6e732072656c79206f6e20697420746f20657374696d61746520646973706174636861626c65207765696768742e202d20604f284d50202b204e29602077686572653a2020202d20604d60206f6c642d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d20604e60206e65772d6d656d626572732d636f756e742028636f64652d20616e6420676f7665726e616e63652d626f756e646564292020202d206050602070726f706f73616c732d636f756e742028636f64652d626f756e646564292020202d20312073746f72616765206d75746174696f6e2028636f64656320604f284d296020726561642c20604f284e29602077726974652920666f722072656164696e6720616e642077726974696e6720746865206d656d626572732020202d20312073746f7261676520726561642028636f64656320604f285029602920666f722072656164696e67207468652070726f706f73616c732020202d206050602073746f72616765206d75746174696f6e732028636f64656320604f284d29602920666f72207570646174696e672074686520766f74657320666f7220656163682070726f706f73616c2020202d20312073746f726167652077726974652028636f64656320604f283129602920666f722064656c6574696e6720746865206f6c6420607072696d656020616e642073657474696e6720746865206e6577206f6e656e65775f6d656d626572737072696d654f7074696f6e3c543a3a4163636f756e7449643e6f6c645f636f756e744d656d626572436f756e7400000000000000e6df11000900000000000000000000009c0512002400000000000000000000000000000000000000000000000000000000000000787d1200c00512000000000000000000d005120001000000000000000100000000000000fcdf11000a0000000106000000000000234812000700000000000000d80512001a00000000000000000000000000000000000000787d1200f40512000000000000000000040612000100000000000000000000000000000006e011000600000001060000000000002348120007000000000000000c0612002300000000000000000000000000000000000000787d12003006120000000000000000004006120001000000000000000000000000000000efdf11000d0000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d120048061200000000000000000058061200010000000000000001000000000000005e151200070000000000000000000000591e12001100000000000000000000000000000000000000000000000000000000000000787d12006006120000000000000000007006120001000000000000000100000000000000651512000500000000000000000000004f4712000c00000000000000000000000000000000000000000000000000000000000000787d120078061200000000000000000088061200010000000000000000000000426f756e6465645665633c543a3a486173682c20543a3a4d617850726f706f73616c733e2c0000000000000001000000f8000000a9071200240000003c5420617320436f6e6669673c493e3e3a3a50726f706f73616c00002c0000000000000001000000f90000007607120033000000566f7465733c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e002c0000000000000001000000bf000000490712002d0000002c0000000000000001000000c000000037071200120000002c0000000000000001000000bd000000e90612004e0000002c0000000000000001000000bf000000900612005900000020546865207072696d65206d656d62657220746861742068656c70732064657465726d696e65207468652064656661756c7420766f7465206265686176696f7220696e2063617365206f6620616273656e746174696f6e732e205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e2050726f706f73616c7320736f206661722e20566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e2054686520686173686573206f6620746865206163746976652070726f706f73616c732e000000000000000409120008000000000000000c0912000400000000000000000000002c0912000300000000000000000000004409120005000000000000004c091200050000000000000000000000740912000300000000000000000000008c0912000800000000000000940912000100000000000000000000009c091200020000000000000000000000ac0912000b0000000000000094091200010000000000000000000000b8091200020000000000000000000000c80912000800000000000000d0091200020000000000000000000000e0091200020000000000000000000000f00912000e00000000000000d0091200020000000000000000000000000a1200020000000000000000000000100a12000600000000000000180a1200030000000000000000000000300a1200020000000000000050726f706f7365646934120009000000390d12000d00000072341200040000007e0312000b000000a00c120053000000f30c120010000000030d120036000000566f746564000000693412000900000072341200040000000d4a1200040000007e0312000b0000007e0312000b000000ed0b1200420000002f0c120046000000750c12002b000000417070726f7665647234120004000000bc0b120031000000aa0b120012000000446973617070726f76656400750b120035000000aa0b12001200000045786563757465647234120004000000670b12000e0000001e0b120049000000040b12001a0000004d656d62657245786563757465640000b10a120053000000040b12001a000000436c6f736564000072341200040000007e0312000b0000007e0312000b000000400a120056000000960a12001b00000020412070726f706f73616c2077617320636c6f736564206265636175736520697473207468726573686f6c64207761732072656163686564206f7220616674657220697473206475726174696f6e207761732075702e205c5b70726f706f73616c5f686173682c207965732c206e6f5c5d20412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e205c5b70726f706f73616c5f686173682c20726573756c745c5d2041206d6f74696f6e207761732065786563757465643b20726573756c742077696c6c20626520604f6b602069662069742072657475726e656420776974686f7574206572726f722e4469737061746368526573756c742041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e205c5b70726f706f73616c5f686173685c5d2041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e6720612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f686173682c20766f7465642c207965732c206e6f5c5d2041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292e205c5b6163636f756e742c2070726f706f73616c5f696e6465782c2070726f706f73616c5f686173682c207468726573686f6c645c5d50726f706f73616c496e6465780000580d12005b000000740100001b0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f7472696564626d75742e7273203a0e120007000000b30d120001000000410e12000d0000004e0e12000b000000e40d1200560000009f050000090000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f6669656c642e727343616e6e6f742020626974732066726f6d2061202d62697420726567696f6e000000580d12005b000000670100000d000000496e73657274696f6e206e657665722064656c657465732e580d12005b000000640200000d000000617373657274696f6e206661696c65643a20216578697374696e675f6b65792e69735f656d70747928290000580d12005b00000080030000150000002273120087000000370200000100000000000000f61912000900000000000000f80f12000100000000000000000000006beb11001100000000000000001012000100000000000000000000005ceb11000f000000000000000810120001000000000000000000000052eb11000a000000000000001010120001000000000000000000000045eb11000d000000000000001810120001000000000000000000000033eb11001200000000000000201012000100000000000000000000002beb11000800000000000000281012000100000000000000000000001beb110010000000000000003010120001000000000000000000000008eb11001300000000000000381012000100000000000000000000007ceb11001300000000000000401012000100000000000000b01112001800000090111200200000007c111200140000006b1112001100000054111200170000003311120021000000f210120041000000b2101200400000007d1012003500000048101200350000002054686520676976656e206c656e67746820626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686520676976656e2077656967687420626f756e6420666f72207468652070726f706f73616c2077617320746f6f206c6f772e2054686572652063616e206f6e6c792062652061206d6178696d756d206f6620604d617850726f706f73616c7360206163746976652070726f706f73616c732e2054686520636c6f73652063616c6c20776173206d61646520746f6f206561726c792c206265666f72652074686520656e64206f662074686520766f74696e672e204d656d626572732061726520616c726561647920696e697469616c697a656421204475706c696361746520766f74652069676e6f726564204d69736d61746368656420696e6465782050726f706f73616c206d757374206578697374204475706c69636174652070726f706f73616c73206e6f7420616c6c6f776564204163636f756e74206973206e6f742061206d656d626572251212005f0000007c00000001000000636c6561725f7072696d657365745f7072696d656368616e67655f6b657972657365745f6d656d62657273737761705f6d656d62657272656d6f76655f6d656d6265726164645f6d656d6265722f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f6d656d626572736869702f7372632f6c69622e727370616c6c65745f73657373696f6e3a3a686973746f726963616c2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f73657373696f6e2f7372632f686973746f726963616c2f6d6f642e727370616c6c65745f62656566793a3a70616c6c65742f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f6772616e6470612d6272696467652d6761646765742d373037303634656232336332396161372f383436653065662f62656566792d70616c6c65742f7372632f6c69622e7273706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d722f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f636f6d6d6f6e2f7372632f6d6d722e727370616c6c65745f6d656d6265727368697050726576696f7573206d617463682061726d206d61746368657320616e7974696e67206c657373207468616e20325e33303b2071656450141200630000005701000011000000b31412003d00000000000000000000000000000050141200630000005e010000110000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f636f6d706163742e7273736869667465642073756666696369656e74206269747320726967687420746f206c656164206f6e6c79206c656164696e67207a65726f733b20716564501412006300000083010000110000000000000000000000000000000000000050141200630000008a01000011000000426565667942656566794e657874417574686f7269746965730000000f16120056000000651612000300000068161200020000004d656d626572736869704d656d626572735072696d650000251212005f000000ba0000000d000000251212005f000000eb0000001100000018771200840000001a04000022000000187712008400000036040000150000001877120084000000440400001e00000018771200840000004d0400001800000018771200840000004e040000190000001877120084000000510400001a0000001877120084000000710300003600000072756e74696d653a3a6d656d626572736869706d6178696d756d206e756d626572206f66206d656d62657273207573656420666f72207765696768742069732065786365656465642c20776569676874732063616e20626520756e646572657374696d61746564205b203e205d2e000000000000741712000b00000000000000000000007f1712001300000000000000000000000000000000000000000000000000000000000000787d1200941712000000000000000000a417120001000000000000000100000000000000ac1712000e0000000000000000000000ba1712002000000000000000000000000000000000000000000000000000000000000000787d1200dc1712000000000000000000ec17120001000000000000000100000000000000f41712000f00000000000000000000007f1712001300000000000000000000000000000000000000000000000000000000000000787d120094171200000000000000000004181200010000000000000001000000417574686f7269746965735665633c543a3a417574686f7269747949643e00002c0000000000000001000000bd000000641812001c00000056616c696461746f72536574496462656566795f7072696d6974697665733a3a56616c696461746f72536574496400002c0000000000000001000000d4000000471812001d0000004e657874417574686f726974696573000c1812003b00000020417574686f72697469657320736574207363686564756c656420746f2062652075736564207769746820746865206e6578742073657373696f6e205468652063757272656e742076616c696461746f7220736574206964205468652063757272656e7420617574686f726974696573207365749018120028000000b8181200010000004552524f523a20436f7272757074656420737461746520696e206368696c642074726965206174202f000000fa0000006000000008000000fb000000fc00000048617368207461626c65206361706163697479206f766572666c6f77fc1812005a0000004f000000280000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6861736862726f776e2d302e392e312f7372632f7261772f6d6f642e72730053657373696f6e486973746f726963616c53657373696f6e73fa0000006000000008000000fd000000fe000000ff000000000100000101000002010000030100006661696c656420746f20696e7365727420696e746f20747269654661696c656420746f2067656e657261746520686973746f726963616c20616e6365737472792d696e636c7573696f6e2070726f6f662e416c72656164794d656d6265724e6f744d656d62657200000000001b1212000a00000000000000341b12000100000000000000000000004c1b12000300000000000000000000000e1212000d00000000000000341b1200010000000000000000000000641b1200030000000000000000000000031212000b000000000000007c1b1200020000000000000000000000ac1b1200050000000000000000000000f61112000d00000000000000d41b1200010000000000000000000000ec1b1200040000000000000000000000ec1112000a000000000000000c1c1200010000000000000000000000241c1200050000000000000000000000e31112000900000000000000341b12000100000000000000000000004c1c1200030000000000000000000000d81112000b00000000000000787d1200000000000000000000000000641c1200030000000000000000000000a61f120003000000000000004f4712000c0000005f1f12001f000000787d1200000000007e1f120028000000101f120024000000787d120000000000341f12002b00000000000000071f120006000000000000004f4712000c000000000000000d1f120003000000000000004f4712000c0000006a1e120030000000787d1200000000009a1e120029000000787d120000000000c31e12004400000000000000521e12000700000000000000591e120011000000b71d1200560000000d1e12001b000000787d120000000000281e12002a000000000000007a66120003000000000000004f4712000c000000fc1c120036000000787d120000000000321d12003d000000787d1200000000006f1d120048000000cc1c120030000000787d120000000000a21c12002a0000007c1c120026000000787d120000000000a21c12002a0000002052656d6f766520746865207072696d65206d656d626572206966206974206578697374732e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a5072696d654f726967696e602e2053657420746865207072696d65206d656d6265722e204d75737420626520612063757272656e74206d656d6265722e2053776170206f7574207468652073656e64696e67206d656d62657220666f7220736f6d65206f74686572206b657920606e6577602e204d6179206f6e6c792062652063616c6c65642066726f6d20605369676e656460206f726967696e206f6620612063757272656e74206d656d6265722e205072696d65206d656d62657273686970206973207061737365642066726f6d20746865206f726967696e206163636f756e7420746f20606e6577602c20696620657874616e742e204368616e676520746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702e204265206e69636520616e64207061737320606d656d6265727360207072652d736f727465642e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52657365744f726967696e602e6d656d626572735665633c543a3a4163636f756e7449643e2053776170206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f746865722060616464602e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a537761704f726967696e602e205072696d65206d656d62657273686970206973202a6e6f742a207061737365642066726f6d206072656d6f76656020746f2060616464602c20696620657874616e742e72656d6f76656164642052656d6f76652061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a52656d6f76654f726967696e602e204164642061206d656d626572206077686f6020746f20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d2060543a3a4164644f726967696e602e77686f000000000000005e151200070000000000000000000000591e12001100000000000000000000000000000000000000000000000000000000000000787d12005c20120000000000000000006c20120001000000000000000100000000000000651512000500000000000000000000004f4712000c00000000000000000000000000000000000000000000000000000000000000787d1200742012000000000000000000842012000100000000000000000000002c0000000000000001000000bd000000b5201200320000002c0000000000000001000000bf0000008c20120029000000205468652063757272656e74207072696d65206d656d6265722c206966206f6e65206578697374732e205468652063757272656e74206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e0000000000f02112000b00000000000000787d1200000000000000000000000000fc211200010000000000000000000000042212000d00000000000000787d1200000000000000000000000000142212000100000000000000000000001c2212000e00000000000000787d12000000000000000000000000002c221200010000000000000000000000342212000c00000000000000787d120000000000000000000000000040221200010000000000000000000000482212000a00000000000000787d1200000000000000000000000000542212000100000000000000000000005c2212000500000000000000642212000100000000000000000000006c22120001000000000000004d656d62657241646465640099231200390000004d656d62657252656d6f7665640000005e2312003b0000004d656d6265727353776170706564000027231200370000004d656d626572735265736574e1221200460000004b65794368616e6765640000bf2212002200000044756d6d79000000902212002f000000742212001c000000205068616e746f6d206d656d6265722c206e6576657220757365642e73705f7374643a3a6d61726b65723a3a5068616e746f6d446174613c284163636f756e7449642c204576656e74293e204f6e65206f6620746865206d656d6265727327206b657973206368616e6765642e20546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e2054776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2e2054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e00002c00000000000000010000000f00000000000000251512001400000000000000000000003c2412002600000000000000000000000000000000000000000000000000000000000000787d12006424120000000000000000007424120003000000000000000100000042656566794e657874417574686f726974795365743c4d65726b6c65526f6f744f663c543e3e00002c0000000000000001000000040100008c24120025000000787d120000000000b1241200560000002044657461696c73206f66206e65787420424545465920617574686f72697479207365742e20546869732073746f7261676520656e747279206973207573656420617320636163686520666f722063616c6c7320746f205b607570646174655f62656566795f6e6578745f617574686f726974795f736574605d2e00182512004d000000a4000000090000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f72756e74696d655f6170695f696d706c2f76312e727373746f7261676520726f6f74206d757374206465636f646520746f20746865204861736820747970653b2071656400182512004d000000cf0000000a00000000000000e91912000d00000000000000dc251200010000000000000000000000f61912000900000000000000e42512000100000000000000fa25120012000000ec2512000e000000204e6f742061206d656d6265722e20416c72656164792061206d656d6265722e4469676573744974656d206e6f7420657175616c3026120039000000b9000000010000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f726f636f636f2f7372632f6c69622e72735468657265206973206f6e6c79206f6e6520666174616c206572726f723b20716564002c0000000800000004000000050100004e6f206f74686572206572726f72732061726520616363657074656420616674657220616e2068617264206572726f7221496e686572656e7420776974682073616d65206964656e74696669657220616c72656164792065786973747321617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f7665635f64657175652f72696e675f736c696365732e72730000001d271200a0000000200000000e0000005c80120087000000ff05000009000000f02712008600000076060000240000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273000088281200430000000b020000150000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f7363686564756c65722e727300632912005b000000290100000f00000072656d61726b5f776974685f6576656e746b696c6c5f7072656669786b696c6c5f73746f726167657365745f73746f726167657365745f6368616e6765735f747269655f636f6e6669677365745f636f64655f776974686f75745f636865636b737365745f636f64657365745f686561705f706167657372656d61726b66696c6c5f626c6f636b2f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f6672616d652f73797374656d2f7372632f6c69622e72730000532a120015000000682a12001d00000072756e74696d653a3a6672616d652d737570706f7274706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65722f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f696e697469616c697a65722e7273e29c85206e6f206d6967726174696f6e20666f72202c2073657474696e672073746f726167652076657273696f6e20746f20706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e2f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f72756e74696d652f70617261636861696e732f7372632f636f6e66696775726174696f6e2e727300001c2b120007000000232b1200520000006672616d655f73797374656d3a3a70616c6c6574e29aa0efb88f20206465636c6172657320696e7465726e616c206d6967726174696f6e7320287768696368202a6d696768742a2065786563757465292c2073657474696e672073746f726167652076657273696f6e20746f2056524648617368565246526573756c747672662d696e7672662d6f7574436865636b47656e65736973436865636b547856657273696f6e3a6865617070616765733a6368616e6765735f747269650000000000e02b12000f00000000000000f02b12000100000000000000496e76616c69644e657756616c756500f82b12003800000020546865206e65772076616c756520666f72206120636f6e66696775726174696f6e20706172616d6574657220697320696e76616c69642e7061726173436f6e66696775726174696f6e50656e64696e67436f6e666967416374697665436f6e66696700742c120023000000af2a12004700000010010000010000005f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e666f7263655f617070726f76657365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e6469646174657365745f68726d705f6d61785f706172617468726561645f6f7574626f756e645f6368616e6e656c737365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c737365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a657365745f68726d705f6d61785f706172617468726561645f696e626f756e645f6368616e6e656c737365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c737365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a657365745f68726d705f6368616e6e656c5f6d61785f63617061636974797365745f68726d705f726563697069656e745f6465706f7369747365745f68726d705f73656e6465725f6465706f7369747365745f68726d705f6f70656e5f726571756573745f74746c7365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e6469646174657365745f6d61785f7570776172645f6d6573736167655f73697a657365745f7072656665727265645f646973706174636861626c655f7570776172645f6d657373616765735f737465705f7765696768747365745f6d61785f646f776e776172645f6d6573736167655f73697a657365745f6d61785f7570776172645f71756575655f73697a657365745f6d61785f7570776172645f71756575655f636f756e747365745f72656c61795f7672665f6d6f64756c6f5f73616d706c65737365745f6e65656465645f617070726f76616c737365745f7a65726f74685f64656c61795f7472616e6368655f77696474687365745f6e5f64656c61795f7472616e636865737365745f6e6f5f73686f775f736c6f74737365745f646973707574655f636f6e636c7573696f6e5f62795f74696d655f6f75745f706572696f647365745f646973707574655f6d61785f7370616d5f736c6f74737365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f647365745f646973707574655f706572696f647365745f6d61785f76616c696461746f72737365745f6d61785f76616c696461746f72735f7065725f636f72657365745f7363686564756c696e675f6c6f6f6b61686561647365745f7468726561645f617661696c6162696c6974795f706572696f647365745f636861696e5f617661696c6162696c6974795f706572696f647365745f67726f75705f726f746174696f6e5f6672657175656e63797365745f706172617468726561645f726574726965737365745f706172617468726561645f636f7265737365745f6d61785f686561645f646174615f73697a657365745f6d61785f706f765f73697a657365745f6d61785f636f64655f73697a657365745f636f64655f726574656e74696f6e5f706572696f647365745f76616c69646174696f6e5f757067726164655f64656c61797365745f76616c69646174696f6e5f757067726164655f6672657175656e63793a65787472696e7369635f696e6465780000005f3112001a000000793112000300000072756e74696d653a3a73797374656d6672616d655f73797374656d45787472696e736963206661696c656420617420626c6f636b28293a204e6f646520697320636f6e6669677572656420746f20757365207468652073616d6520686173683b207165642c00000000000000010000000f000000632912005b0000005f0500000e000000632912005b0000006705000016000000f031120023000000632912005b000000fb0100000f000000605f5f49676e6f7265602063616e206e6576657220626520636f6e73747275637465644e6f6e44656661756c74436f6d706f736974654661696c6564546f4578747261637452756e74696d6556657273696f6e5370656356657273696f6e4e65656473546f496e637265617365496e76616c6964537065634e616d654e6f6e5a65726f526566436f756e740000000000843312001000000000000000943312000100000000000000000000009c331200010000000000000000000000a43312000f00000000000000b4331200020000000000000000000000c4331200010000000000000000000000cc3312000b00000000000000787d1200000000000000000000000000d8331200010000000000000000000000e03312000a00000000000000ec331200010000000000000000000000f4331200010000000000000000000000fc3312000d00000000000000ec3312000100000000000000000000000c3412000100000000000000000000001434120008000000000000001c3412000200000000000000000000002c341200010000000000000045787472696e73696353756363657373f73412000c000000033512002e00000045787472696e7369634661696c656400ea3412000d000000f73412000c000000c534120025000000436f64655570646174656400b0341200150000004e65774163636f756e7400006934120009000000913412001f0000004b696c6c65644163636f756e74000000763412001b00000052656d61726b6564693412000900000072341200040000003434120035000000204f6e206f6e2d636861696e2072656d61726b2068617070656e65642e205c5b6f726967696e2c2072656d61726b5f686173685c5d4163636f756e7449644861736820416e205c5b6163636f756e745c5d20776173207265617065642e2041206e6577205c5b6163636f756e745c5d2077617320637265617465642e20603a636f6465602077617320757064617465642e20416e2065787472696e736963206661696c65642e205c5b6572726f722c20696e666f5c5d44697370617463684572726f724469737061746368496e666f20416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e205c5b696e666f5c5d00000000000000592912000a00000000000000ec361200010000000000000000000000043712000100000000000000000000005329120006000000000000000c37120001000000000000000000000024371200050000000000000000000000452912000e000000000000004c371200010000000000000000000000643712000800000000000000000000003d2912000800000000000000a4371200010000000000000000000000bc3712000a0000000000000000000000262912001700000000000000a43712000100000000000000000000000c3812000800000000000000000000000f29120017000000000000004c381200010000000000000000000000643812000a0000000000000000000000042912000b00000000000000b4381200010000000000000000000000cc381200080000000000000000000000f82812000c000000000000000c39120001000000000000000000000024391200080000000000000000000000ed2812000b0000000000000064391200020000000000000000000000943912000b0000000000000000000000dc2812001100000000000000ec391200010000000000000000000000043a1200060000000000000000000000bb4112000600000000000000c141120007000000794112004200000000000000724112000700000000000000ae3a120007000000574112001b000000787d1200000000005e3a12000b000000a83d120009000000a23a12000c000000000000004f41120005000000000000005441120003000000cc4012003f000000787d1200000000005e3a12000b000000a83d1200090000000b411200130000001e411200190000003741120018000000a23a12000c00000000000000c84012000400000000000000ae3a120007000000803f12001a000000787d1200000000005e3a12000b0000009a3f12004d000000013f120022000000e73f12005e000000973a12000b000000454012005f000000a440120024000000a23a12000c000000963e120047000000787d1200000000005e3a12000b000000dd3e120024000000013f120022000000973a12000b000000233f12005d000000a23a12000c00000000000000633e12001300000000000000763e120020000000803d120028000000787d1200000000005e3a12000b000000a83d120009000000b13d12002c000000dd3d120036000000133e1200190000002c3e12000d000000393e12002a000000a23a12000c000000000000006e3d12000500000000000000733d12000d000000f23c12001b000000787d1200000000005e3a12000b0000000d3d120025000000323d12001f000000513d12001d000000cc3c12001a000000a23a12000c00000000000000e63c12000400000000000000ea3c1200080000003a3c12001e000000787d1200000000005e3a12000b000000583c12003f000000973c120019000000b03c12001c000000cc3c12001a000000a23a12000c00000000000000263c120006000000000000002c3c120003000000000000002f3c12000800000000000000373c120003000000b53a120045000000787d120000000000fa3a12004f000000493b120050000000787d1200000000005e3a12000b000000993b120037000000d03b120019000000e93b12001d000000063c120020000000a23a12000c00000000000000532912000600000000000000ae3a120007000000343a12002a000000787d1200000000005e3a12000b000000693a12002e000000973a12000b000000a23a12000c000000204d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e2023203c7765696768743e202d20604f28622960207768657265206220697320746865206c656e677468206f66207468652072656d61726b2e202d2031206576656e742e2023203c2f7765696768743e5665633c75383e204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e202a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465722074686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e202d20604f285029602077686572652060506020616d6f756e74206f66206b657973207769746820707265666978206070726566697860202d206050602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a20302e383334202a205020c2b573202d205772697465733a204e756d626572206f66207375626b657973202b20317072656669784b65795f7375626b657973753332204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e202d20604f28494b296020776865726520604960206c656e677468206f6620606b6579736020616e6420604b60206c656e677468206f66206f6e65206b6579202d206049602073746f726167652064656c6574696f6e732e202d2042617365205765696768743a202e333738202a206920c2b573202d205772697465733a204e756d626572206f66206974656d736b6579735665633c4b65793e2053657420736f6d65206974656d73206f662073746f726167652e202d20604f2849296020776865726520604960206c656e677468206f6620606974656d7360202d206049602073746f72616765207772697465732028604f28312960292e202d2042617365205765696768743a20302e353638202a206920c2b5736974656d735665633c4b657956616c75653e2053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e202d20604f28312960202d20312073746f72616765207772697465206f722064656c6574652028636f64656320604f28312960292e202d20312063616c6c20746f20606465706f7369745f6c6f67603a20557365732060617070656e6460204150492c20736f204f283129202d2042617365205765696768743a20372e32313820c2b573202d204442205765696768743a20202020202d205772697465733a204368616e67657320547269652c2053797374656d204469676573746368616e6765735f747269655f636f6e6669674f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e2053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e202d20604f2843296020776865726520604360206c656e677468206f662060636f646560202d20312073746f726167652077726974652028636f64656320604f28432960292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2053657420746865206e65772072756e74696d6520636f64652e202d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f646560202d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e6020776869636820697320657870656e73697665292e2054686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c792074686973206973207665727920657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e636f64652053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e202d20312073746f726167652077726974652e202d2042617365205765696768743a20312e34303520c2b573202d203120777269746520746f20484541505f50414745537061676573753634204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e5f72656d61726b204120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e5f726174696f50657262696c6c00000000484712000700000001020000000000004f4712000c000000000000005b4712002500000000000000000000000000000000000000787d12008047120000000000000000009047120001000000000000000100000000000000984712000e0000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d1200a84712000000000000000000b847120001000000000000000000000000000000c04712000b0000000000000000000000cb4712000e00000000000000000000000000000000000000000000000000000000000000787d1200dc4712000000000000000000ec47120001000000000000000100000000000000f4471200100000000000000000000000373c12000300000000000000000000000000000000000000000000000000000000000000787d1200a8471200000000000000000004481200010000000000000000000000000000000c481200090000000105000000000000154812000e00000000000000234812000700000000000000000000000000000000000000787d12002c48120000000000000000003c48120001000000000000000100000000000000444812000d0000000105000000000000373c12000300000000000000ae3a12000700000000000000000000000000000000000000787d120054481200000000000000000064481200010000000000000001000000000000006c481200060000000000000000000000154812000e00000000000000000000000000000000000000000000000000000000000000787d120074481200000000000000000084481200010000000000000001000000000000008c4812000a0000000000000000000000234812000700000000000000000000000000000000000000000000000000000000000000787d12002c48120000000000000000009848120001000000000000000100000000000000a0481200060000000000000000000000a64812000b00000000000000000000000000000000000000000000000000000000000000787d1200b44812000000000000000000c448120001000000000000000100000000000000cc481200060000000000000000000000d24812002300000000000000000000000000000000000000000000000000000000000000787d1200f848120000000000000000000849120001000000000000000100000000000000104912000a00000000000000000000001a4912000a00000000000000000000000000000000000000000000000000000000000000787d120074481200000000000000000024491200010000000000000001000000000000002c4912000b0000000102000000000000234812000700000000000000374912002100000000000000000000000000000000000000787d1200584912000000000000000000684912000a000000000000000100000000000000b8491200120000000000000000000000ca4912001600000000000000000000000000000000000000000000000000000000000000787d1200e04912000000000000000000f049120001000000000000000000000000000000f84912001500000000000000000000000d4a12000400000000000000000000000000000000000000000000000000000000000000787d1200144a12000000000000000000244a1200010000000000000001000000000000002c4a12001800000000000000000000000d4a12000400000000000000000000000000000000000000000000000000000000000000787d1200144a12000000000000000000444a120002000000000000000100000000000000544a12000e0000000000000000000000624a12000500000000000000000000000000000000000000000000000000000000000000787d1200684a12000000000000000000784a12000100000000000000000000004163636f756e74543a3a4163636f756e7449644163636f756e74496e666f3c543a3a496e6465782c20543a3a4163636f756e74446174613e2c000000000000000100000006010000ea4f12003a00000045787472696e736963436f756e7400002c0000000000000001000000bf000000bc4f12002e000000426c6f636b576569676874436f6e73756d65645765696768740000002c0000000000000001000000070100009a4f120022000000416c6c45787472696e736963734c656e4a4f120050000000426c6f636b48617368543a3a426c6f636b4e756d626572543a3a4861736800002c0000000000000001000000c6000000244f12002600000045787472696e736963446174610000002c0000000000000001000000c4000000d54e12004f0000004e756d62657200002c0000000000000001000000c0000000934e120042000000506172656e74486173680000774e12001c0000004469676573744469676573744f663c543e0000002c0000000000000001000000bd0000003b4e12003c0000004576656e74735665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e0000002c000000000000000100000008010000134e1200280000004576656e74436f756e744576656e74496e646578e54d12002e0000004576656e74546f706963735665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e2c0000000000000001000000d6000000b34b120049000000fc4b120025000000787d120000000000214c120054000000754c120051000000c64c120039000000787d120000000000ff4c120053000000524d120053000000a54d1200400000004c61737452756e74696d65557067726164654c61737452756e74696d6555706772616465496e666f2c0000000000000001000000bf0000005e4b1200550000005570677261646564546f553332526566436f756e74626f6f6c0000002c0000000000000001000000bf0000000b4b1200530000005570677261646564546f547269706c65526566436f756e74a24a120057000000f94a120012000000457865637574696f6e50686173655068617365002c0000000000000001000000bf000000804a1200220000002054686520657865637574696f6e207068617365206f662074686520626c6f636b2e2054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c7365202864656661756c7429206966206e6f742e2054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e2053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e6465786573206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e20416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e205468697320616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e6420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573742074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e20546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e20446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e2048617368206f66207468652070726576696f757320626c6f636b2e205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e2045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e20546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e205468652063757272656e742077656967687420666f722074686520626c6f636b2e20546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e00000000745112000c00000000000000805112001400000000000000787d1200945112000000000000000000a4511200010000000000000000000000ac5112000b00000000000000b75112001300000000000000787d1200cc5112000000000000000000dc511200010000000000000000000000e45112000e00000000000000154812000e00000000000000787d1200f45112000000000000000000045212000100000000000000000000000c5212000800000000000000145212000f00000000000000787d1200245212000000000000000000345212000100000000000000000000003c5212000700000000000000435212000e00000000000000787d1200545212000000000000000000645212000100000000000000000000006c5212000a00000000000000765212000200000000000000787d1200785212000000000000000000885212000500000000000000426c6f636b576569676874736c696d6974733a3a426c6f636b576569676874732c0000000000000001000000090100007254120034000000426c6f636b4c656e6774686c696d6974733a3a426c6f636b4c656e67746800002c00000000000000010000000a010000485412002a000000426c6f636b48617368436f756e7400002c00000000000000010000000b010000f353120055000000446257656967687452756e74696d654462576569676874002c00000000000000010000000c010000b15312004200000056657273696f6e52756e74696d6556657273696f6e0000002c00000000000000010000000d01000090531200210000005353353850726566697875382c00000000000000010000000e010000b05212002a000000787d120000000000da5212004e000000285312004c000000745312001c000000205468652064657369676e61746564205353383520707265666978206f66207468697320636861696e2e2054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e2069732074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f6620697420617320616e206964656e746966696572206f662074686520636861696e2e204765742074686520636861696e27732063757272656e742076657273696f6e2e2054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e20426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e000000000000972c12000d00000000000000d4541200010000000000000000000000ec541200030000000000000000000000d15512000500000000000000d65512000b000000045512004f0000005355120055000000a8551200290000002049737375652061207369676e616c20746f2074686520636f6e73656e73757320656e67696e6520746f20666f726369626c79206163742061732074686f75676820616c6c2070617261636861696e20626c6f636b7320696e20616c6c2072656c617920636861696e20626c6f636b7320757020746f20616e6420696e636c7564696e672074686520676976656e206e756d62657220696e207468652063757272656e7420636861696e206172652076616c696420616e642073686f756c642062652066696e616c697a65642e75705f746f426c6f636b4e756d626572496e697469616c697a6572000000009c5612000e0000000000000000000000bc8612000200000000000000000000000000000000000000000000000000000000000000787d1200ac5612000000000000000000bc56120008000000000000000000000000000000fc561200160000000000000000000000125712001a00000000000000000000000000000000000000000000000000000000000000787d12002c57120000000000000000003c571200070000000000000001000000486173496e697469616c697a656400002c0000000000000001000000bf000000b858120048000000787d1200000000000059120047000000475912005a000000787d120000000000a15912005d000000fe5912005e0000005c5a120020000000427566666572656453657373696f6e4368616e6765735665633c427566666572656453657373696f6e4368616e67653e2c00000000000000010000000f0100007457120056000000787d120000000000ca57120057000000215812000d000000787d1200000000002e5812005a00000088581200300000002042756666657265642073657373696f6e206368616e67657320616c6f6e6720776974682074686520626c6f636b206e756d62657220617420776869636820746865792073686f756c64206265206170706c6965642e205479706963616c6c7920746869732077696c6c20626520656d707479206f72206f6e6520656c656d656e74206c6f6e672e2041706172742066726f6d20746861742074686973206974656d206e657665722068697473207468652073746f726167652e20486f776576657220746869732069732061206056656360207265676172646c65737320746f2068616e646c6520766172696f757320656467652063617365732074686174206d6179206f636375722061742072756e74696d65207570677261646520626f756e646172696573206f7220696620676f7665726e616e636520696e74657276656e65732e2057686574686572207468652070617261636861696e73206d6f64756c65732068617665206265656e20696e697469616c697a65642077697468696e207468697320626c6f636b2e2053656d616e746963616c6c79206120626f6f6c2c2062757420746869732067756172616e746565732069742073686f756c64206e65766572206869742074686520747269652c206173207468697320697320636c656172656420696e20606f6e5f66696e616c697a656020616e64204672616d65206f7074696d697a657320604e6f6e65602076616c75657320746f20626520656d7074792076616c7565732e204173206120626f6f6c2c20607365742866616c7365296020616e64206072656d6f766528296020626f7468206c65616420746f20746865206e6578742060676574282960206265696e672066616c73652c20627574206f6e65206f66207468656d2077726974657320746f20746865207472696520616e64206f6e6520646f6573206e6f742e205468697320636f6e667573696f6e206d616b657320604f7074696f6e3c28293e60206d6f7265207375697461626c6520666f72207468652073656d616e74696373206f662074686973207661726961626c652e000000000131120020000000000000005c61120001000000000000000000000074611200010000000000000000000000e53012001c000000000000005c6112000100000000000000000000007c611200010000000000000000000000cc30120019000000000000005c61120001000000000000000000000084611200010000000000000000000000bb30120011000000000000008c611200010000000000000000000000a4611200010000000000000000000000ab30120010000000000000008c611200010000000000000000000000ac6112000100000000000000000000009530120016000000000000008c611200010000000000000000000000b46112000100000000000000000000008130120014000000000000008c611200010000000000000000000000bc6112000100000000000000000000006b30120016000000000000008c611200010000000000000000000000c46112000100000000000000000000004f3012001c000000000000005c611200010000000000000000000000cc611200010000000000000000000000323012001d000000000000005c611200010000000000000000000000d4611200010000000000000000000000143012001e000000000000005c611200010000000000000000000000dc611200010000000000000000000000fc2f120018000000000000008c611200010000000000000000000000e4611200010000000000000000000000e12f12001b00000000000000ec61120001000000000000000000000004621200010000000000000000000000cf2f12001200000000000000ec6112000100000000000000000000000c621200010000000000000000000000bd2f12001200000000000000146212000100000000000000000000002c621200010000000000000000000000902f12002d000000000000005c61120001000000000000000000000034621200010000000000000000000000762f12001a000000000000008c6112000100000000000000000000003c6212000100000000000000000000004d2f120029000000000000005c611200010000000000000000000000446212000100000000000000000000003c2f120011000000000000008c6112000100000000000000000000004c621200020000000000000000000000282f120014000000000000008c6112000100000000000000000000005c6212000100000000000000000000000a2f12001e000000000000008c61120001000000000000000000000064621200010000000000000000000000f62e120014000000000000008c6112000100000000000000000000006c621200010000000000000000000000da2e12001c000000000000008c61120001000000000000000000000074621200010000000000000000000000c02e12001a000000000000008c6112000100000000000000000000007c621200010000000000000000000000a72e120019000000000000008c611200010000000000000000000000846212000100000000000000000000008a2e12001d000000000000008c6112000100000000000000000000008c621200010000000000000000000000542e1200360000000000000094621200010000000000000000000000ac621200010000000000000000000000392e12001b000000000000008c611200010000000000000000000000b4621200010000000000000000000000112e120028000000000000008c611200010000000000000000000000bc621200010000000000000000000000f82d120019000000000000008c611200010000000000000000000000c4621200010000000000000000000000e12d12001700000000000000cc621200010000000000000000000000e4621200010000000000000000000000c72d12001a00000000000000cc621200010000000000000000000000ec621200020000000000000000000000aa2d12001d000000000000008c611200010000000000000000000000fc6212000100000000000000000000008b2d12001f000000000000008c61120001000000000000000000000004631200010000000000000000000000642d120027000000000000008c6112000100000000000000000000000c6312000100000000000000000000003c2d120028000000000000008c611200010000000000000000000000146312000100000000000000000000001b2d120021000000000000008c6112000100000000000000000000001c631200010000000000000000000000f32c120028000000000000008c61120001000000000000000000000024631200010000000000000000000000ca2c120029000000000000008c6112000100000000000000000000002c631200010000000000000000000000a42c120026000000000000008c611200010000000000000000000000346312000100000000000000000000007a6612000300000000000000154812000e000000436d120026000000216d120022000000ec6c120035000000000000007a6612000300000000000000373c120003000000b46c120038000000826c1200320000005c6c1200260000002e6c12002e000000f76b120037000000c26b120035000000966b12002c000000696b12002d0000001a6b12004f000000000000007a66120003000000000000000f6b12000b000000d36a12003c0000008f6a120044000000000000007a6612000300000000000000836a12000c0000003f6a1200440000000c6a120033000000de6912002e000000af6912002f0000005c6912003f0000009b6912001400000034691200280000001069120024000000d8681200380000008368120055000000376812004c000000dd6712005a000000b567120028000000000000007a6612000300000000000000af67120006000000606712004f000000146712004c000000d266120042000000846612004e000000000000007a66120003000000000000007d661200070000002566120055000000c3651200590000001c661200090000007b651200480000002665120055000000d3641200530000007f641200540000002f64120050000000dd631200520000008a631200530000003c6312004e000000205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206d657373616765732063616e2062652073656e7420627920612063616e6469646174652e205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206368616e6e656c732061207061726174687265616420697320616c6c6f77656420746f206f70656e2e205365747320746865206d6178696d756d206e756d626572206f66206f7574626f756e642048524d50206368616e6e656c7320612070617261636861696e20697320616c6c6f77656420746f206f70656e2e205365747320746865206d6178696d756d2073697a65206f662061206d657373616765207468617420636f756c6420657665722062652070757420696e746f20616e2048524d50206368616e6e656c2e205365747320746865206d6178696d756d206e756d626572206f6620696e626f756e642048524d50206368616e6e656c732061207061726174687265616420697320616c6c6f77656420746f206163636570742e205365747320746865206d6178696d756d206e756d626572206f6620696e626f756e642048524d50206368616e6e656c7320612070617261636861696e20697320616c6c6f77656420746f206163636570742e205365747320746865206d6178696d756d20746f74616c2073697a65206f66206d6573736167657320696e20627974657320616c6c6f77656420696e20616e2048524d50206368616e6e656c206174206f6e63652e205365747320746865206d6178696d756d206e756d626572206f66206d6573736167657320616c6c6f77656420696e20616e2048524d50206368616e6e656c206174206f6e63652e20536574732074686520616d6f756e74206f662066756e647320746861742074686520726563697069656e742073686f756c642070726f7669646520666f7220616363657074696e67206f70656e696e6720616e2048524d50206368616e6e656c2e20536574732074686520616d6f756e74206f662066756e64732074686174207468652073656e6465722073686f756c642070726f7669646520666f72206f70656e696e6720616e2048524d50206368616e6e656c2e6e657742616c616e6365205365747320746865206e756d626572206f662073657373696f6e7320616674657220776869636820616e2048524d50206f70656e206368616e6e656c207265717565737420657870697265732e205365747320746865206d6178696d756d206e756d626572206f66206d65737361676573207468617420612063616e6469646174652063616e20636f6e7461696e2e205365747320746865206d6178696d756d2073697a65206f6620616e20757077617264206d65737361676520746861742063616e2062652073656e7420627920612063616e6469646174652e20536574732074686520736f6674206c696d697420666f7220746865207068617365206f66206469737061746368696e6720646973706174636861626c6520757077617264206d657373616765732e576569676874205365742074686520637269746963616c20646f776e77617264206d6573736167652073697a652e205365747320746865206d6178696d756d20746f74616c2073697a65206f66206974656d7320746861742063616e2070726573656e7420696e206120757077617264206469737061746368207175657565206174206f6e63652e205365747320746865206d6178696d756d206974656d7320746861742063616e2070726573656e7420696e206120757077617264206469737061746368207175657565206174206f6e63652e2053657420746865206e756d626572206f662073616d706c657320746f20646f206f66207468652052656c61795652464d6f64756c6f20617070726f76616c2061737369676e6d656e7420637269746572696f6e2e2053657420746865206e756d626572206f662076616c696461746f7273206e656564656420746f20617070726f7665206120626c6f636b2e2053657420746865207a65726f74682064656c6179207472616e6368652077696474682e205365742074686520746f74616c206e756d626572206f662064656c6179207472616e636865732e2053657420746865206e6f2073686f7720736c6f74732c20696e206e756d626572206f66206e756d626572206f6620636f6e73656e73757320736c6f74732e204d757374206265206174206c6561737420312e2053657420746865206469737075746520636f6e636c7573696f6e2062792074696d65206f757420706572696f642e2053657420746865206d6178696d756d206e756d626572206f662064697370757465207370616d20736c6f74732e2053657420746865206469737075746520706f737420636f6e636c7573696f6e20616363657074616e636520706572696f642e2053657420746865206469737075746520706572696f642c20696e206e756d626572206f662073657373696f6e7320746f206b65657020666f722064697370757465732e53657373696f6e496e6465782053657420746865206d6178696d756d206e756d626572206f662076616c696461746f727320746f2075736520696e2070617261636861696e20636f6e73656e7375732e2053657420746865206d6178696d756d206e756d626572206f662076616c696461746f727320746f2061737369676e20746f20616e7920636f72652e4f7074696f6e3c7533323e2053657420746865207363686564756c696e67206c6f6f6b61686561642c20696e206578706563746564206e756d626572206f6620626c6f636b73206174207065616b207468726f7567687075742e205365742074686520617661696c6162696c69747920706572696f6420666f722070617261746872656164732e205365742074686520617661696c6162696c69747920706572696f6420666f722070617261636861696e732e20536574207468652070617261636861696e2076616c696461746f722d67726f757020726f746174696f6e206672657175656e63792053657420746865206e756d626572206f66207265747269657320666f72206120706172746963756c617220706172617468726561642e2053657420746865206e756d626572206f66207061726174687265616420657865637574696f6e20636f7265732e2053657420746865206d6178206865616420646174612073697a6520666f722070617261732e2053657420746865206d617820504f5620626c6f636b2073697a6520666f7220696e636f6d696e672075706772616465732e2053657420746865206d61782076616c69646174696f6e20636f64652073697a6520666f7220696e636f6d696e672075706772616465732e205365742074686520616363657074616e636520706572696f6420666f7220616e20696e636c756465642063616e6469646174652e20536574207468652076616c69646174696f6e20757067726164652064656c61792e20536574207468652076616c69646174696f6e2075706772616465206672657175656e63792e000000000000004f2c12000c00000000000000000000001c6e12002100000000000000000000000000000000000000000000000000000000000000787d1200406e12000000000000000000506e120001000000000000000100000000000000422c12000d0000000105000000000000836a12000c000000000000001c6e12002100000000000000000000000000000000000000787d1200586e12000000000000000000686e1200010000000000000000000000486f7374436f6e66696775726174696f6e3c543a3a426c6f636b4e756d6265723e0000002c000000000000000100000010010000a56e1200320000002c0000000000000001000000bf000000706e1200350000002050656e64696e6720636f6e66696775726174696f6e2028696620616e792920666f7220746865206e6578742073657373696f6e2e205468652061637469766520636f6e66696775726174696f6e20666f72207468652063757272656e742073657373696f6e2e002c00000004000000040000001101000012010000130100005772617070696e67206f66667365742063616e6e6f742070726f6475636520746865206e756c6c20706f696e74657200306f12005c000000a90000000e0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f6269747665632d302e32302e312f7372632f7074722f616464726573732e7273000000005d3212000f0000000000000018701200020000000000000000000000433212001a0000000000000028701200020000000000000000000000263212001d0000000000000038701200030000000000000000000000133212001300000000000000507012000100000000000000000000006c3212000f00000000000000587012000100000000000000d371120045000000be711200150000006d71120051000000be71120015000000ee7012003c000000787d1200000000002a71120043000000ae70120040000000607012004e0000002054686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e20537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e20546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6520721200170000005f5f49676e6f72652063616e6e6f742062652075736564002273120087000000da010000010000004661696c656420746f20636f6e7665727471202f206365696c28712f246d617829203c20246d61782e204d6163726f2070726576656e747320616e792074797065206265696e672063726561746564207468617420646f6573206e6f74207361746973667920746869733b207165642f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f61726974686d657469632f7372632f7065725f7468696e67732e72732f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f6f70732f61726974682e7273000000b77212006b0000005105000001000000cc7312006800000073000000090000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f61726974686d657469632f7372632f62696775696e742e727363616e6e6f74206669742061206e756d62657220696e746f2075313238000000cc73120068000000a20000001b000000cc731200680000008400000009000000cc731200680000009600000009000000000000000000000000000000617474656d707420746f20646976696465206279207a65726f000000cc731200680000004a0000000d000000616c7265616479206d757461626c7920626f72726f7765642c000000000000000100000014010000cc731200680000007a0100001a000000cc731200680000006801000028000000cc731200680000006901000028000000616c726561647920626f72726f7765642c000000000000000100000015010000cc73120068000000710100001b000000cc73120068000000720100001b0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f61726974686d657469632f7372632f66697865645f706f696e742e7273617474656d707420746f206469766964652077697468206f766572666c6f7700547512006c0000004b0600000100000072656d696e646572206f6620646976206279206320697320616c77617973206c657373207468616e20633b20716564002c000000080000000400000018000000597612006f0000006a00000012000000726573756c742063616e6e6f742066697420696e20753132382f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f61726974686d657469632f7372632f68656c706572735f3132386269742e727342616265565246496e4f7574436f6e7465787442414245736c6f74206e756d62657263757272656e742065706f6368636861696e2072616e646f6d6e657373001877120084000000c4000000110000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f736c6963652e72732f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e312e302f7372632f636f6465632e72735765206465636f646520604e6020656c656d656e74733b207165649c77120061000000c6020000170000002c00000000000000010000000f000000487812006d000000ce0000002a0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f696d706c732e7273486f737420746f207761736d2076616c7565732061726520656e636f64656420636f72726563746c793b20716564002c00000000000000010000000f000000047912006f00000009010000260000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f72756e74696d652d696e746572666163652f7372632f706173735f62792e727300ab7912000d0000009679120015000000787d12000000000094791200020000003a20696e73756666696369656e7420636170616369747943617061636974794572726f7272756e74696d6552756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e67000000f47912005f00000027000000200000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f61727261797665632d302e372e302f7372632f61727261797665635f696d706c2e727300000000000000000000000000617474656d707420746f20646976696465206279207a65726f0000008c7a1200690000005d0000002c0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f72756e74696d652f7372632f67656e657269632f6572612e72735472616e73616374696f6e206469737061746368206973206d616e6461746f72793b207472616e73616374696f6e73206d6179206e6f742068617665206d616e6461746f727920646973706174636865732e412063616c6c20776173206c6162656c6c6564206173206d616e6461746f72792c2062757420726573756c74656420696e20616e204572726f722e5472616e73616374696f6e20776f756c6420657868617573742074686520626c6f636b206c696d6974735472616e73616374696f6e2068617320616e20616e6369656e7420626972746820626c6f636b5472616e73616374696f6e20686173206120626164207369676e61747572655472616e73616374696f6e206973206f757464617465645472616e73616374696f6e2077696c6c2062652076616c696420696e2074686520667574757265496e6162696c69747920746f2070617920736f6d6520666565732028652e672e206163636f756e742062616c616e636520746f6f206c6f77295472616e73616374696f6e2063616c6c206973206e6f74206578706563746564496e76616c69645472616e73616374696f6e20637573746f6d206572726f72436f756c64206e6f742066696e6420616e20756e7369676e65642076616c696461746f7220666f722074686520756e7369676e6564207472616e73616374696f6e436f756c64206e6f74206c6f6f6b757020696e666f726d6174696f6e20726571756972656420746f2076616c696461746520746865207472616e73616374696f6e556e6b6e6f776e5472616e73616374696f6e20637573746f6d206572726f723c7761736d3a73747269707065643e002c000000000000000100000016010000170100003b000000787d1200000000002c000000040000000400000011010000180100001901000048617368206e6f7420657175616c416e20756e646572666c6f7720776f756c64206f6363757246756e647320657869737420627574206172652066726f7a656e54686520617373657420696e207175657374696f6e20697320756e6b6e6f776e4163636f756e742063616e6e6f7420626520637265617465644163636f756e742063616e6e6f742065786973742077697468207468652066756e6473207468617420776f756c6420626520676976656e4163636f756e742074686174206d75737420657869737420776f756c642064696546756e64732061726520756e617661696c61626c65416e206f766572666c6f7720776f756c64206f63637572556e6b6e6f776e206d6f64756c65206572726f724e6f2070726f766964657273436f6e73756d65722072656d61696e696e67426164206f726967696e43616e6e6f74206c6f6f6b7570546f6b656e002c00000004000000040000001a0100002c0000000400000004000000dc00000043616e6e6f744c6f6f6b75704261644f726967696e4d6f64756c65696e6465782c00000004000000040000003c0000006572726f726d6573736167652c00000004000000040000001b010000436f6e73756d657252656d61696e696e674e6f50726f7669646572734f766572666c6f774e6f46756e6473576f756c6444696542656c6f774d696e696d756d43616e6e6f74437265617465556e6b6e6f776e417373657446726f7a656e556e646572666c6f772f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f72756e74696d652f7372632f7472616974732e72730000ae7f1200640000005804000013000000536f6d654e6f6e652c0000000400000004000000dc0000004475706c69636174655265706f72744f746865724f6666656e63654572726f722f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e727300f480120065000000470000001f0000002f686f6d652f616e6472652f2e636172676f2f6769742f636865636b6f7574732f7375627374726174652d376530383433336434633337306132312f333232623236612f7072696d6974697665732f747269652f7372632f6e6f64655f636f6465632e7273000000f48012006500000050000000140000006c656e20213d20302073696e6365206c656e2025203220213d20303b20696e6e6572206861732061206c61737420656c656d656e743b207165640000b8811200620000003d000000120000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c657665632e72730000b8811200620000006000000033000000b881120062000000600000000d000000b881120062000000690000000f000000b8811200620000006b0000000f000000b8811200620000006b0000003e000000b8811200620000009100000039000000b8811200620000009100000011000000b8811200620000009300000011000000b8811200620000009400000040000000b881120062000000940000004e000000dc821200640000009800000017000000dc8212006400000096000000290000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6e6962626c65736c6963652e7273648512005c0000004d0000001c000000dc821200640000004000000012000000dc821200640000004f0000002d000000dc821200640000005500000032000000dc82120064000000dd0000000f000000dc82120064000000df0000000f000000dc82120064000000df0000003d0000006361706163697479206f766572666c6f77000000d483120055000000fb000000360000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f736d616c6c7665632d312e362e312f7372632f6c69622e7273617373657274696f6e206661696c65643a206e65775f636170203e3d206c656e000000d483120055000000320300000d000000617373657274696f6e206661696c65643a20696e646578203c3d206c656e0000d4831200550000005f05000009000000648512005c0000008d0000003c000000648512005c0000008d00000051000000648512005c0000008d00000031000000dc841200560000004b00000042000000dc841200560000004a0000003e0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6f64652e72730000dc841200560000006b00000022000000dc841200560000009a00000032000000dc84120056000000aa0000003e0000002f686f6d652f616e6472652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f747269652d64622d302e32322e332f7372632f6e6962626c652f6d6f642e7273648512005c0000008600000031000000648512005c0000008600000042000000648512005c0000008600000026000000648512005c000000870000001d000000648512005c000000870000000d000000648512005c0000008e00000018000000648512005c0000008e0000000d0000006c656e202b20707265666978206d696e757320322a736b6970706564206973206c657373207468616e20343b207165642c000000000000000100000023000000808612003c00000046020000200000002f686f6d652f616e6472652f6465762f7061726974792f706f6c6b61646f742f78636d2f7372632f76302f6d756c74695f6c6f636174696f6e2e7273282941737365744e6f74466f756e644163636f756e744964436f6e76657273696f6e4661696c6564617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e686569676874202d203154871200950000007702000009000000617373657274696f6e206661696c65643a20696478203c20434150414349545954871200950000007b020000090000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6e6f64652e7273617373657274696f6e206661696c65643a2073656c662e686569676874203e203000005487120095000000d40000000900000054871200950000002b04000016000000617373657274696f6e206661696c65643a207372632e6c656e2829203d3d206473742e6c656e28295487120095000000b006000005000000617373657274696f6e206661696c65643a20656467652e686569676874203d3d2073656c662e6e6f64652e686569676874202d20310000005487120095000000990300000900000054871200950000006a04000016000000f48a1200130000005487120095000000a60400001f000000617373657274696f6e206661696c65643a206e65775f6c6566745f6c656e203c3d20434150414349545900005487120095000000da04000009000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e202b20636f756e74203c3d204341504143495459000054871200950000008d0500000d000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e203e3d20636f756e7454871200950000008e0500000d000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64655487120095000000be05000016000000617373657274696f6e206661696c65643a206f6c645f72696768745f6c656e202b20636f756e74203c3d2043415041434954590054871200950000004e0500000d000000617373657274696f6e206661696c65643a206f6c645f6c6566745f6c656e203e3d20636f756e740054871200950000004f0500000d00000054871200950000007e05000016000000617373657274696f6e206661696c65643a206d6174636820747261636b5f656467655f696478207b5c6e202020204c6566744f7252696768743a3a4c6566742869647829203d3e20696478203c3d206f6c645f6c6566745f6c656e2c5c6e202020204c6566744f7252696768743a3a52696768742869647829203d3e20696478203c3d2072696768745f6c656e2c5c6e7d00000054871200950000002005000009000000656d70747920696e7465726e616c206e6f646500188b120094000000af050000350000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702e727363616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c756500e08b12002a000000696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64653a2063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c7565000000488c12009a000000220100002e0000002f6e69782f73746f72652f64326773397878763369663235356961336a33366463736177343337717830722d727573742d312e35322e302d6e696768746c792d323032312d30322d32382d6533376131336363332f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f636f6c6c656374696f6e732f62747265652f6d61702f656e7472792e72730000488c12009a000000d80100002a0000000041f499ca000b0c4f8167f7787d1200e81210000041809aca000b08000000000000000000cdbe06046e616d6501c4be06c40900206578745f6f6666636861696e5f696e6465785f7365745f76657273696f6e5f3101236578745f63727970746f5f65636473615f67656e65726174655f76657273696f6e5f3102256578745f63727970746f5f656432353531395f67656e65726174655f76657273696f6e5f3103236578745f63727970746f5f656432353531395f7665726966795f76657273696f6e5f3104286578745f63727970746f5f66696e6973685f62617463685f7665726966795f76657273696f6e5f3105376578745f63727970746f5f736563703235366b315f65636473615f7265636f7665725f636f6d707265737365645f76657273696f6e5f3106256578745f63727970746f5f737232353531395f67656e65726174655f76657273696f6e5f3107286578745f63727970746f5f737232353531395f7075626c69635f6b6579735f76657273696f6e5f3108216578745f63727970746f5f737232353531395f7369676e5f76657273696f6e5f3109236578745f63727970746f5f737232353531395f7665726966795f76657273696f6e5f320a276578745f63727970746f5f73746172745f62617463685f7665726966795f76657273696f6e5f310b296578745f64656661756c745f6368696c645f73746f726167655f636c6561725f76657273696f6e5f310c276578745f64656661756c745f6368696c645f73746f726167655f6765745f76657273696f6e5f310d2c6578745f64656661756c745f6368696c645f73746f726167655f6e6578745f6b65795f76657273696f6e5f310e276578745f64656661756c745f6368696c645f73746f726167655f7365745f76657273696f6e5f310f206578745f68617368696e675f626c616b65325f3132385f76657273696f6e5f3110206578745f68617368696e675f626c616b65325f3235365f76657273696f6e5f3111206578745f68617368696e675f6b656363616b5f3235365f76657273696f6e5f31121e6578745f68617368696e675f74776f785f3132385f76657273696f6e5f31131d6578745f68617368696e675f74776f785f36345f76657273696f6e5f31142a6578745f747269655f626c616b65325f3235365f6f7264657265645f726f6f745f76657273696f6e5f31152a6578745f747269655f6b656363616b5f3235365f6f7264657265645f726f6f745f76657273696f6e5f31161c6578745f6d6973635f7072696e745f6865785f76657273696f6e5f31171d6578745f6d6973635f7072696e745f757466385f76657273696f6e5f3118226578745f6d6973635f72756e74696d655f76657273696f6e5f76657273696f6e5f31191e6578745f616c6c6f6361746f725f6d616c6c6f635f76657273696f6e5f311a1c6578745f616c6c6f6361746f725f667265655f76657273696f6e5f311b236578745f6f6666636861696e5f69735f76616c696461746f725f76657273696f6e5f311c346578745f6f6666636861696e5f6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365745f76657273696f6e5f311d286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f6765745f76657273696f6e5f311e286578745f6f6666636861696e5f6c6f63616c5f73746f726167655f7365745f76657273696f6e5f311f246578745f6f6666636861696e5f6e6574776f726b5f73746174655f76657273696f6e5f3120296578745f6f6666636861696e5f7375626d69745f7472616e73616374696f6e5f76657273696f6e5f31211c6578745f73746f726167655f617070656e645f76657273696f6e5f3122226578745f73746f726167655f6368616e6765735f726f6f745f76657273696f6e5f31231b6578745f73746f726167655f636c6561725f76657273696f6e5f3124226578745f73746f726167655f636c6561725f7072656669785f76657273696f6e5f3125286578745f73746f726167655f636f6d6d69745f7472616e73616374696f6e5f76657273696f6e5f31261c6578745f73746f726167655f6578697374735f76657273696f6e5f3127196578745f73746f726167655f6765745f76657273696f6e5f31281e6578745f73746f726167655f6e6578745f6b65795f76657273696f6e5f31291a6578745f73746f726167655f726561645f76657273696f6e5f312a2a6578745f73746f726167655f726f6c6c6261636b5f7472616e73616374696f6e5f76657273696f6e5f312b1a6578745f73746f726167655f726f6f745f76657273696f6e5f312c196578745f73746f726167655f7365745f76657273696f6e5f312d276578745f73746f726167655f73746172745f7472616e73616374696f6e5f76657273696f6e5f312e196578745f6c6f6767696e675f6c6f675f76657273696f6e5f312f0c5f5f727573745f616c6c6f63300a5f5f72675f616c6c6f63310e5f5f727573745f6465616c6c6f63320c5f5f72675f6465616c6c6f63330e5f5f727573745f7265616c6c6f63340c5f5f72675f7265616c6c6f6335135f5f727573745f616c6c6f635f7a65726f656436115f5f72675f616c6c6f635f7a65726f6564371a5f5f727573745f616c6c6f635f6572726f725f68616e646c657238085f5f72675f6f6f6d3933616c6c6f633a3a616c6c6f633a3a68616e646c655f616c6c6f635f6572726f723a3a68396233356666353366373862336237323a08727573745f6f6f6d3b34616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a68643334613339623261323062343861613c29636f72653a3a70616e69636b696e673a3a70616e69633a3a68353931663938323162363132633033313d2e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68393363643365663835616537633939663e25616c6c6f633a3a666d743a3a666f726d61743a3a68363637613739353430383938353533383f36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68363764373564386363303561366261644023636f72653a3a666d743a3a77726974653a3a68333133363666353338663366656331344133636f72653a3a6f7074696f6e3a3a6578706563745f6e6f6e655f6661696c65643a3a6834333561636661323237373064663732423a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6833663662333835306339386135636265433b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6830336366666363666263313264333165443a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68303036356465623766386363306231344543616c6c6f633a3a7665633a3a5665633c542c413e3a3a737761705f72656d6f76653a3a6173736572745f6661696c65643a3a6864303363393639353330646266643136464e636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f72207533323e3a3a666d743a3a6837626136613033376164623563643230472d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a6830346365373030363561383039666238483e616c6c6f633a3a7665633a3a5665633c542c413e3a3a696e736572743a3a6173736572745f6661696c65643a3a6835623134346337343862643833363930493e616c6c6f633a3a7665633a3a5665633c542c413e3a3a72656d6f76653a3a6173736572745f6661696c65643a3a68666632366462653536343266386664624a41616c6c6f633a3a7665633a3a5665633c542c413e3a3a73706c69745f6f66663a3a6173736572745f6661696c65643a3a68646265646664666265353166633435394b303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68653966663339643733383437663833324c313c73747220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68636166353765616336643835636166374d30616c6c6f633a3a7665633a3a5665633c542c413e3a3a726573657276653a3a68376233313331616637653636613466664e2e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68333435616562633730646336336233314f553c636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68346366323639303664653965663130365039636f72653a3a666d743a3a6275696c646572733a3a44656275675475706c653a3a6669656c643a3a6866393434366335333833653834653066513f636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a68656c7065723a3a6765745f7065616b733a3a68333732636430313534636264316164655239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6830393437373039326132383231633461532f636f72653a3a666d743a3a6e756d3a3a696d703a3a666d745f7536343a3a68353833323565656365316333313739375411727573745f626567696e5f756e77696e6455313c5420617320636f72653a3a616e793a3a416e793e3a3a747970655f69643a3a68353933346235316230646562653930615635636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a68343636326361636365353764666465385743636f72653a3a666d743a3a466f726d61747465723a3a7061645f696e74656772616c3a3a77726974655f7072656669783a3a6835653664306162613039663332623532583f636f72653a3a736c6963653a3a696e6465783a3a736c6963655f656e645f696e6465785f6c656e5f6661696c3a3a6836633439643833303961303563336632592c636f72653a3a666d743a3a466f726d61747465723a3a7061643a3a68336264306663356131363761396636345a2e636f72653a3a7374723a3a736c6963655f6572726f725f6661696c3a3a68303636663838336334346139343530635b323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68316134613662666230373830653932375c4a3c636f72653a3a6f70733a3a72616e67653a3a52616e67653c4964783e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68633836346163643365646366653432665d323c6368617220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68626661316230393363356565656336385e47636f72653a3a756e69636f64653a3a756e69636f64655f646174613a3a6772617068656d655f657874656e643a3a6c6f6f6b75703a3a68663135356233306366366635633062655f39636f72653a3a756e69636f64653a3a7072696e7461626c653a3a69735f7072696e7461626c653a3a6839396635326564306263383232343831604c636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207573697a653e3a3a666d743a3a68373232653131323836353764373364302e38346141636f72653a3a736c6963653a3a696e6465783a3a736c6963655f73746172745f696e6465785f6c656e5f6661696c3a3a6838376139393138343461356136613264623d636f72653a3a736c6963653a3a696e6465783a3a736c6963655f696e6465785f6f726465725f6661696c3a3a68663065623763363063366164626633346338636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a696e6e65723a3a683961613437343833393465613936323864303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683736303531353935386638333232386265443c636f72653a3a666d743a3a417267756d656e747320617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a686164613632656435363662386232376166453c636f72653a3a63656c6c3a3a426f72726f774572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683339616334653237306362646133616567483c636f72653a3a63656c6c3a3a426f72726f774d75744572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839636436393861303230336637663765682e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a683132386462633633613737623634623369323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68333439393234386333616365393661396a533c636f72653a3a666d743a3a6275696c646572733a3a5061644164617074657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68336363306237326562353831313761316b3a636f72653a3a666d743a3a6275696c646572733a3a44656275675374727563743a3a6669656c643a3a68336361303865303330343361303865386c2f636f72653a3a666d743a3a57726974653a3a77726974655f636861723a3a68616632643761346263313638383731326d2e636f72653a3a666d743a3a57726974653a3a77726974655f666d743a3a68323364313932653837353062393631346e3a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68633962393235643764343434633863366f3b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6834336661353362343232643664383637703a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68326132353136316331386631363162377131636f72653a3a666d743a3a6e756d3a3a70617273655f7536345f696e746f3a3a6838363566656363313634396536623866724d636f72653a3a666d743a3a6e756d3a3a696d703a3a3c696d706c20636f72653a3a666d743a3a446973706c617920666f722075383e3a3a666d743a3a68616136343230333863393564396535667347636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a42696e61727920666f722069383e3a3a666d743a3a6839353466623136306264353030346534743e3c636f72653a3a666d743a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830346162636431613733636165613562755a637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a746f5f62797465733a3a6835323966323638303336383732393731769201637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20737562746c653a3a436f6e7374616e7454696d65457120666f7220637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a63745f65713a3a68316530353635373061633761386364367724737562746c653a3a626c61636b5f626f783a3a68643538663262386531326262666438637857637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a706f77326b3a3a6839313531626336393064316266313066797e637572766532353531395f64616c656b3a3a6669656c643a3a3c696d706c20637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313e3a3a737172745f726174696f5f693a3a68633138306539613534653233306666307a5c637572766532353531395f64616c656b3a3a6261636b656e643a3a73657269616c3a3a7536343a3a6669656c643a3a4669656c64456c656d656e7435313a3a66726f6d5f62797465733a3a68353132326439633834303461323430347b5a637572766532353531395f64616c656b3a3a72697374726574746f3a3a52697374726574746f506f696e743a3a656c6c696761746f725f72697374726574746f5f666c61766f723a3a68633734303638663532623532313765397c49637572766532353531395f64616c656b3a3a7363616c61723a3a5363616c61723a3a66726f6d5f63616e6f6e6963616c5f62797465733a3a68346166633330643766333530653838397d7b6672616d655f6d657461646174613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f6d657461646174613a3a53746f726167654861736865723e3a3a656e636f64655f746f3a3a68333739323061396430336234653463327e423c73705f7374643a3a57726974657220617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a68623531353664353237303730623263317f417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a683333383133646232333935666434623280016c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a68323061303763356134396165386561358101417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68366339383465333464613235303637628201417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68393961643364383964336130373065328301417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68366630336465383431346561396236378401417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a68333362613339393035633566656430648501417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a686631363139343437313364353766313786015c3c6672616d655f737570706f72743a3a7472616974733a3a6d657461646174613a3a50616c6c657456657273696f6e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683337346236653338616639623666626687012e616c6c6f633a3a7261775f7665633a3a66696e6973685f67726f773a3a68303432363636383132333137333338358801633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a683835323437303866356238326465313689014c6672616d655f73797374656d3a3a6c696d6974733a3a426c6f636b576569676874734275696c6465723a3a6275696c645f6f725f70616e69633a3a68316164626332333861366335643866378a01206b656363616b3a3a66313630303a3a68643136653639383530623363363336348b01383c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a68393437656434656464353138393033368c01343c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a68613434306332396564653863643830338d01363c6c6f673a3a4e6f704c6f67676572206173206c6f673a3a4c6f673e3a3a666c7573683a3a68353862313431313637656664323130378e0131636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a68303135303663663161623435613937618f01366d65726c696e3a3a7374726f62653a3a5374726f62653132383a3a626567696e5f6f703a3a68633730376262386663653833303030669001366d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6e65773a3a68396238653566646431386539313334329101416d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f6d6573736167653a3a686632666465623835663263353464633892013d6d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a617070656e645f7536343a3a68323639326633333661313561303134629301426d65726c696e3a3a7472616e7363726970743a3a5472616e7363726970743a3a6368616c6c656e67655f62797465733a3a683438643732626532356631343436306494014a3c70616c6c65745f6d6d725f7072696d6974697665733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686230666638383638646365373434623995013a70616c6c65745f74696d657374616d703a3a657874726163745f696e686572656e745f646174613a3a68626565353937396535353232303732309601503c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a686639313035333337323430393861613597014e3c7061726974795f7363616c655f636f6465633a3a6572726f723a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683462353631646332343931633334396398013f7061726974795f7363616c655f636f6465633a3a636f6465633a3a4f75747075743a3a707573685f627974653a3a6866336664363931396461663364656661990146706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733a3a686173683a3a68306134303131666635376266666134659a014973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235363a3a68366264653232333261613634646331319b0146706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f745f72616e67653a3a536c6f7452616e67653a3a6c656e3a3a68653131343962303435326363366433669c01323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a68366165316130343333353838396537669d015e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a50617261746872656164436c61696d51756575653a3a656e71756575655f656e7472793a3a68373831643036663537393030303637329e01333c265420617320636f72653a3a666d743a3a4c6f7765724865783e3a3a666d743a3a68656564363433303334353966353334319f01333c265420617320636f72653a3a666d743a3a4c6f7765724865783e3a3a666d743a3a6832356163343865346436623931393263a001453c7072696d69746976655f74797065733a3a4832353620617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6865633862356663383964373030316166a101417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6830356138643134633865383539663238a2016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6861663530366537383165363337313636a3013d636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c28293e3e3a3a6837383462336164343161383765393030a401417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6831316334326134656437386237393435a5016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6864656431303766343430623466353765a60154636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e37323938a701417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6831653731316634353466646134346434a801543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861633737656164303364653961353465a9018a0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6465636f64653a3a6833633938333931383439633163313863aa014d636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6835616630366437323334353431363062ab016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838616434386335343631383337393631ac01417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6861306331373566346135366630396463ad0153636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6830646161303365383931356133613136ae016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838396539386164633163366235626363af01810178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6465636f64653a3a6861633463656432316533633034313133b001483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6839366266306663353837303566376631b101417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6831663639323732396461373835653262b2016f726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6863353336353333343163373432366538b30146636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e37333032b401417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6834666461353061303731653235393437b5017873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a6834346161303530346636333533633366b601417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6835376634313739653030393063326562b7016f726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a6465636f64653a3a6836333765383661343934326137303734b801417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6835653663356531386266363431653361b901543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6836346530653739396462613963353162ba018a0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a6465636f64653a3a6833623265393466316139653732376139bb016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862303166633833313138623233303961bc016b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839386230323134653063663961393139bd01810178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a6465636f64653a3a6834356436396661666334343236323536be01417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6862303630383264613635393734316234bf0146636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6f726465723a3a4f726465723c28293e3e3a3a6865646531613330636566393665616631c001417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6838633633643463623132643235303937c101417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6862333530336565333038303739626163c201417061726974795f7363616c655f636f6465633a3a636f6465633a3a6465636f64655f7665635f776974685f6c656e3a3a6839386636366265306464656432326363c3016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6862613733383962633066316230336230c4016678636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a6465636f64653a3a6834633863303261666463656131373431c501417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6831313739303739633033623362373037c601417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6832613037346265613532353832626461c701417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6833633433636362396263616132353930c801417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6838653064323435653563303635346134c901417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6839613766636264653732646234366235ca01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6861623839333330623138353436316239cb01437061726974795f7363616c655f636f6465633a3a636f6465633a3a636f6d706163745f656e636f64655f6c656e5f746f3a3a6832666533313139373365626666353534cc01417061726974795f7363616c655f636f6465633a3a636f6465633a3a656e636f64655f736c6963655f6e6f5f6c656e3a3a6865376432623962326162643037303562cd01463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6835653232356436616433616534393663ce01483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6865353639663635306662306564303664cf01483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837653334393731636234653637633337d001483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6863383637313736626333393933653830d101483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864636336393439623633363466643065d201483c5b543b204e5d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865666232393531333437306232346238d3015b3c726f636f636f5f72756e74696d653a3a53657373696f6e4b6579732061732073705f72756e74696d653a3a7472616974733a3a4f70617175654b6579733e3a3a6765745f7261773a3a6837623933306436373033336361663736d40172726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220726f636f636f5f72756e74696d653a3a43616c6c3e3a3a656e636f64655f746f3a3a6864316538343338626639396466656332d501753c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6861646639303536376139336666393634d6019a0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a4e657874436f6e66696744657363726970746f723e3a3a656e636f64655f746f3a3a6831663438343539616165633439613039d701713c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c7536343e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866343039376439313031343162636139d801a60173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a656e636f64655f746f3a3a6862323235303830386130336366363530d901723c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6836656662633037393031626338663833da013f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6832323137343463633063376365613161db018e0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a656e636f64655f746f3a3a6866316361623162333061633362333231dc019c01706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a436f6d6d697474656443616e646964617465526563656970743c483e3e3a3a656e636f64655f746f3a3a6865626633643735643766643035653961dd018d0178636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a656e636f64655f746f3a3a6837623837313734663530623039626235de016978636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a656e636f64655f746f3a3a6830613230373933656533366532326563df016978636d3a3a76303a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a58636d3c43616c6c3e3e3a3a656e636f64655f746f3a3a6865656436646232646635353862623832e0016f3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163745265663c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6832316239613537363565363735646364e1015c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6864373138313961303138323162643834e2017473705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a4d756c74695369676e61747572653e3a3a656e636f64655f746f3a3a6861396230393361303130346132623966e30176726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a53657373696f6e4b6579733e3a3a6465636f64653a3a6866376637653734333363356339613866e40170726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220726f636f636f5f72756e74696d653a3a4576656e743e3a3a6465636f64653a3a6861663637333732353533313734396637e5017073705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a6465636f64653a3a6861383439336362323631623666366466e6017c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6834323261333861653433346466353233e7019301706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e64696461746544657363726970746f723c483e3e3a3a6465636f64653a3a6862316239326562333966613032313532e801543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839303263663662383662326235336435e9017278636d3a3a76303a3a7472616974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a7472616974733a3a4572726f723e3a3a6465636f64653a3a6864396334313866633333386334656234ea0173726f636f636f5f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220726f636f636f5f72756e74696d653a3a4576656e743e3a3a656e636f64655f746f3a3a6837613931343838313133306333396566eb018a016672616d655f737570706f72743a3a776569676874733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f737570706f72743a3a776569676874733a3a4469737061746368496e666f3e3a3a656e636f64655f746f3a3a6865623433363534663163653162666232ec017373705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a656e636f64655f746f3a3a6830346538303933613637313436316665ed019301706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465526563656970743c483e3e3a3a656e636f64655f746f3a3a6833323136396264366237333561316166ee017578636d3a3a76303a3a7472616974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a7472616974733a3a4572726f723e3a3a656e636f64655f746f3a3a6836376539656639636664633537366666ef0148726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f6672616d655f73797374656d3a3a6831393961613261383961623133396534f0014a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696e64696365733a3a6838313133643566306265663434366539f1014b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f62616c616e6365733a3a6865313433373634383836316338396439f2014b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6f6666656e6365733a3a6837343562396230383366306664623963f3014a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f73657373696f6e3a3a6865633165393331333936633662376338f4014a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6772616e6470613a3a6837633038393835643936656565313035f5014c726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f696d5f6f6e6c696e653a3a6866386331303863376635613435363334f60150726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f696e636c7573696f6e3a3a6862306132653735346231653833663864f7014c726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f70617261733a3a6837633562663235633737316463346236f8014b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261636861696e735f68726d703a3a6864333137373436383333376639363030f9014b726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70617261735f7265676973747261723a3a6833643866386638663137646132623738fa0144726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f61756374696f6e733a3a6832666265633537363433653265616335fb0145726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f63726f77646c6f616e3a3a6863613938353031633033313934336161fc0141726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f736c6f74733a3a6834626132353962653532353337333735fd0147726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7375646f3a3a6832383832336366313361666466643262fe014d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f76616c696461746f725f6d616e616765723a3a6833303131653436326337393536663930ff014d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f636f6c6c6563746976653a3a683737336663613335663965363164383580024d726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f6d656d626572736869703a3a686330366133353464386334303836373481024a726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f7574696c6974793a3a6831313564383137633661636364306563820248726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f70726f78793a3a6833326233643337613030366263366466830246726f636f636f5f72756e74696d653a3a52756e74696d653a3a5f5f6d6f64756c655f6576656e74735f70616c6c65745f78636d3a3a68613461643832646566386363393361638402f101636f72653a3a7074723a3a64726f705f696e5f706c6163653c3c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a6164645f66696c7465723c70616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c726f636f636f5f72756e74696d653a3a52756e74696d653e3e3a3a646f5f70726f78793a3a7b7b636c6f737572657d7d3e3a3a7b7b636c6f737572657d7d3e3a3a68663534646536623063363735373932648502743c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a6164645f66696c7465723a3a7b7b636c6f737572657d7d3a3a6865353639356631356239666138326334860248636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a6836643130396534633361663666386336870230636f72653a3a6f70733a3a66756e6374696f6e3a3a466e3a3a63616c6c3a3a6833333438656639623932646438313230880237636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4d75743a3a63616c6c5f6d75743a3a68363838643934653861336530646464648902613c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a726f6f743a3a68346432303065373033343163306630628a02633c726f636f636f5f72756e74696d653a3a4f726967696e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a4f726967696e54726169743e3a3a7369676e65643a3a68323532663435623661393165313538348b0248636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63657b7b767461626c652e7368696d7d7d3a3a68343037343239643632653630323434628c02673c726f636f636f5f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68393133396536313633333239316233318d02663c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a426c6f636b57656967687473206173206672616d655f737570706f72743a3a7472616974733a3a6d6973633a3a4765743c493e3e3a3a6765743a3a68663838623730633162323332373162358e026b3c70616c6c65745f6f6666656e6365733a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68353231313232323139663265373563388f027e3c70616c6c65745f617574686f726974795f646973636f766572793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a683634373335643864646539333333636190027f3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6861343866623535633266666435613735910282013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6865663566313632393231656632656136920282013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a683539613233613138306261623139353693027c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a683865623661346166643563346263373394027c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a6830343437363062613632343162313030950285013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a43616c6c3c543e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68623837663131353130323438363762329602683c70616c6c65745f6d6d723a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a776569676874733a3a4765744469737061746368496e666f3e3a3a6765745f64697370617463685f696e666f3a3a68633838666164613233333039353230619702573c726f636f636f5f72756e74696d653a3a43616c6c2061732073705f72756e74696d653a3a7472616974733a3a446973706174636861626c653e3a3a64697370617463683a3a6834303961636331353462346235346663980241636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a683332636265656334373464316264366599027c3c726f636f636f5f72756e74696d653a3a43616c6c206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a68633737366135666538323031393062369a02483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68626263636632366234376436373835389b0255636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f7072696d6974697665733a3a76313a3a4261636b656443616e6469646174653e3a3a68623962383830313236663532326663369c024f636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437349d022c6672616d655f73797374656d3a3a656e737572655f726f6f743a3a68316234666537373463343563303731669e022e6672616d655f73797374656d3a3a656e737572655f7369676e65643a3a68316637386161386536356137346236339f024273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a6839313537306637613238393039316461a0024b73705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a72756e74696d655f76657273696f6e3a3a6861633131346237326362353832343434a10287016672616d655f73797374656d3a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c6672616d655f73797374656d3a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6862343366613561656336383838343534a20285013c70616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6836363537313139666166333661643430a30287013c70616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6839396630623234616139366535666230a40284013c70616c6c65745f6d656d626572736869703a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6861363332623031323162656433353735a50284013c70616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6831376465663562366530653863646335a602463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6831386336666461366130623934373737a7024773705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f3132383a3a6864363562386531653263383934653132a8024573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a617070656e643a3a6831633639303363636533616264626139a9025e6672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a6465706f7369745f6576656e745f696e64657865643a3a6833383039613335343662656161326135aa02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834353332636264353737316162616632ab0246636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e32363339ac0248706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172615f696e697469616c697a653a3a6830626466323963643231653933386130ad0245706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172615f636c65616e75703a3a6830343736666634316563663235646637ae025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6864363638336364333737323735663535af02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866383431663136323764313633313238b0024b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f706172617468726561645f757067726164653a3a6830373039633537393439346533656339b1024c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c655f70617261636861696e5f646f776e67726164653a3a6839343939396536623961356264666539b202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834613964393336656333313934656639b30256706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a4d6f64756c653c543e3a3a71756575655f646f776e776172645f6d6573736167653a3a6830373933376235363331636166343232b40252706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a696e69745f6f70656e5f6368616e6e656c3a3a6862633235343163613864323630386237b50254706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a6163636570745f6f70656e5f6368616e6e656c3a3a6837373363343762343238656266326232b602743c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4c65617365723e3a3a6c656173655f6f75743a3a6861383362373663666532386431396637b7025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836356438383830313233383564353866b802386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862366363636138653061663131313939b90248616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6836636132323237623338383934633732ba02af01706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6866383532663963393664313161373835bb0282013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a5265676973747261723e3a3a6170706c795f6c6f636b3a3a6864363230333137663239303639343763bc02d60170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a72657365727661626c653a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a756e726573657276653a3a6830663334633435303665323263613030bd024473705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561723a3a6864346636663335663035303232343263be0293013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a43616c6c3c543e206173206672616d655f737570706f72743a3a7472616974733a3a64697370617463683a3a556e66696c7465726564446973706174636861626c653e3a3a64697370617463685f6279706173735f66696c7465723a3a6861353035306638326561666131326665bf02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864303863643138633936356264613064c002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835656535373562303937343563613561c102a101706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6832663938356439386161313030323531c2024b706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a68616e646c655f6269643a3a6839326636343136393163373966616239c30239636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6864343930633763616438633365653564c4026e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838663266636263623165666361313534c5024b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561725f7072656669783a3a6831323464383338626666633539343734c60253706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a646f5f72656769737465723a3a6864343337656466393838393531393263c70261706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a656e737572655f726f6f745f706172615f6f725f6f776e65723a3a6839303963663138626163353161323365c8024673705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a74776f785f36343a3a6835663866333838333062313465393462c902386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864333639333262663035616538653866ca025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866336436383032316432623031366331cb02663c285475706c65456c656d656e74302c5475706c65456c656d656e74312920617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4f6e537761703e3a3a6f6e5f737761703a3a6866323131386239383039383266613435cc025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834336636663762363033323939653865cd02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6862323236623862396637393864303931ce0248706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a6f726967696e3a3a656e737572655f70617261636861696e3a3a6831316537636439376564636439613963cf025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861323037376335663964623336316639d002386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865626338393732666330633566393862d1025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839666331306336363532306530393330d2024273705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6765743a3a6832323233356438656235386334376539d302a101706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6834363665663864636665643832393334d4025a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a636c65616e5f68726d705f61667465725f6f7574676f696e673a3a6834303831613963353837303662653138d50263706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a70726f636573735f68726d705f6f70656e5f6368616e6e656c5f72657175657374733a3a6839313234383663633136363762396332d60264706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a70726f636573735f68726d705f636c6f73655f6368616e6e656c5f72657175657374733a3a6866643334383633636162613430346162d702363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6834653064346262653164646134373036d8026d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a617070656e643a3a6862343637336631326130386232386230d9025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837656463343931346630383931306361da02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837353532303534363937376566373336db0253706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a696e6372656173655f636f64655f7265663a3a6836386165656462316137616539363733dc0250706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a6e6f74655f706173745f636f64653a3a6866316238383939303237336638653330dd025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861313364336239613661393863616161de02386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6838356232633230393965633865616236df0257706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a7363686564756c655f636f64655f757067726164653a3a6865316231666630323565666333333034e0024f706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a6e6f74655f6e65775f686561643a3a6838653233633135393565353238343039e1025c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830633732313537343038653830643165e202386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6863656533306462633631346466346136e3024a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6861316335636337383539306636313861e40250706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a656e7465723a3a6864333165306361366538653235353966e5025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838623166633038653064373434363262e6025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6862396136386135333530663464666438e7025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6835386464323230653730626264346264e8025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6862656264363364373164363431303736e9025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6861623232666133313538323737663763ea025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6839656337356562333631636633356235eb025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838373733306330303137373234623365ec025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830383461663862393733333439333264ed025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6864626431386265363866383661656235ee025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6861346331353035303438666233323766ef025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838393538663738306137336565333930f0025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838326130323630643638336166663861f1025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830323566303164333431353138393662f2025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6866656135306231623430386666653032f3025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6833656662323038313561636262363966f4025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838343235623733336133376265363239f5025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6834656666616435326430643836376165f6025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6834313038356666316366346531613236f7025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6864653962366430303236363364313365f8025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6838313062303331626432653435653965f9025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6832353366303737653665353962626539fa025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6836613738643434366332346434356537fb025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6830663636366238646265663238633735fc025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6834663934376332356162656632316630fd025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6833636632373332376261663162303236fe025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a6837353739656530373734643833663136ff025e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683434653439633262613765656564343080035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683334316237643962336138663666356381035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683931386566373862663330323636646682035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683935346536633663646165663064653783035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683561663031386231633034613338333084035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a686138666566353830373637373933313985035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683065646438643538663039613666373286035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683131313062643761343630633931346187035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a683836663666396335646130633834643488035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a686564386634323636326536336130373189035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a68323834663133373864646265356666308a035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a68363039373365643666646638396263638b035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a68633964633731623739343637376665628c035e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a7570646174655f636f6e6669675f6d656d6265723a3a68326331646539366536316537383138648d032c6672616d655f73797374656d3a3a656e737572655f6e6f6e653a3a68653831353337623262636665343762628e03706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a68316532353739636661313662356162388f034573705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6578697374733a3a68393463386561616166393162316230399003766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a686561396466346463333164613038306391034470616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a683035323161653862326133383131363692033770616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a617574686f723a3a683333333065373334343333656136343693035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68323438306464313232613739636165329403386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683434353437323665666237353639386195037b70616c6c65745f73657373696f6e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f73657373696f6e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a683333613832356335376133373839326696035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68663530623262326132643235326361649703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686331366431663936356161646261376198035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68313365366334663964636439663863359903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68393933393532396165306166356637619a03810170616c6c65745f617574686f72736869703a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f617574686f72736869703a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a68393063363663366562396332666537349b03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68306530613266323138326136343164349c03766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a68626562383434316134313034636365309d033473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a68306535613935303766616265646534369e035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68383637376339396162633139613961649f033f70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a6e6f74655f617574686f72736869703a3a6865336235323866333836393232346666a003bf0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a7472616e736665723a3a6862373234323961636562393035613961a103673c70616c6c65745f62616c616e6365733a3a696d62616c616e6365733a3a506f736974697665496d62616c616e63653c542c493e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6835396137626131363530373637393064a2036d6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6838396663396434363466303039313562a303746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a6d75746174653a3a6861653030316331666664373463613531a4037f6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7472795f6d75746174655f6578697374733a3a6864363931316233646333393632646262a503553c70616c6c65745f62616c616e6365733a3a44757374436c65616e65723c542c493e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6836306636383239353164373433616633a6035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832656663333730393835643030623766a703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832613162366638366164613534323334a803d40170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a72657365727661626c653a3a52657365727661626c6543757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a726573657276653a3a6863363766306362633737373831643365a903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6862313331343236306632306463373238aa038f0170616c6c65745f62616c616e6365733a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a4572726f723c542c493e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6839626562393637636433373666396465ab03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830653732373838636562636264323635ac035d70616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f7265706f72745f65717569766f636174696f6e3a3a6864306563376662613339353564353331ad0354636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e31353839ae0392013c78636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e2061732078636d3a3a76303a3a7472616974733a3a4578656375746558636d3c3c436f6e6669672061732078636d5f6578656375746f723a3a636f6e6669673a3a436f6e6669673e3a3a43616c6c3e3e3a3a657865637574655f78636d3a3a6862333637306561313038386165616630af034b3c285475706c65456c656d656e74302c292061732078636d3a3a76303a3a7472616974733a3a53656e6458636d3e3a3a73656e645f78636d3a3a6832663365633165616564633935343166b003593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6865663261663865303563313434383033b103543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864386334633431616365343834653861b2038f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a6861343966343634366637356461636166b3037273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6864353461326238356663623733343433b403970173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a4e657874436f6e66696744657363726970746f723e3a3a6465636f64653a3a6864646465373737613935643430306139b503a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a6863626566343933316539643765396637b6036c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861316634396637626336643237343333b703723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6831343834323634366434626230316332b8038b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a6833363737636162613430663334643439b9037873705f636f72653a3a656432353531393a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a656432353531393a3a5369676e61747572653e3a3a6465636f64653a3a6834653464316135343730363062653537ba038e01706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a496e686572656e74446174613c4844523e3e3a3a6465636f64653a3a6832653432363633616439623963396137bb03593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861373966663865303330303164366665bc03a201706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5061726147656e65736973417267733e3a3a6465636f64653a3a6833653033356362323335656239326666bd037a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6838376430616661373363303361393835be03820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6833366633333338323336666134666639bf037e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6831663131613763303461666364623138c003593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837656430313435303233373465353536c103543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6837323166653739636565666137353130c2038f0173705f636f6e73656e7375735f736c6f74733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f736c6f74733a3a45717569766f636174696f6e50726f6f663c4865616465722c49643e3e3a3a6465636f64653a3a6835376161643530346664366637656230c3037273705f73657373696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f73657373696f6e3a3a4d656d6265727368697050726f6f663e3a3a6465636f64653a3a6835353561653734626237633539343835c403a30173705f72756e74696d653a3a6d756c7469616464726573733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a6d756c7469616464726573733a3a4d756c7469416464726573733c4163636f756e7449642c4163636f756e74496e6465783e3e3a3a6465636f64653a3a6865303536663736653763633662323866c5036c3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c753132383e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866343431333537356530393961616537c603723c73705f72756e74696d653a3a67656e657269633a3a6865616465723a3a4865616465723c4e756d6265722c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864336236306531646465303162346266c7038b0173705f66696e616c6974795f6772616e6470613a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f66696e616c6974795f6772616e6470613a3a45717569766f636174696f6e50726f6f663c482c4e3e3e3a3a6465636f64653a3a6833386365396630623964353563623137c803ac01706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a43616c6c3c543e3e3a3a6465636f64653a3a6830313665356431323130653466646238c903593c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861386262393336333439333239343638ca037173705f72756e74696d653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a4d756c74695369676e61747572653e3a3a6465636f64653a3a6831313761663031373762663037663734cb03543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6839636561393230363731633637666339cc037a70616c6c65745f636f6c6c6563746976653a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f636f6c6c6563746976653a3a43616c6c3c542c493e3e3a3a6465636f64653a3a6838646165376632666231356466653464cd03820170616c6c65745f7574696c6974793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f7574696c6974793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6864636232363862333132376162663931ce037e70616c6c65745f70726f78793a3a70616c6c65743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722070616c6c65745f70726f78793a3a70616c6c65743a3a43616c6c3c543e3e3a3a6465636f64653a3a6831653261613562376431633632376633cf036f3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866623264616631386662643130633636d0036f3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6832366438663838623938393861373634d10352616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6837373363386464303739663566353133d203613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6866616330316261643830313535633433d303773c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e20617320706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a7472616974733a3a4c65617365723e3a3a6465706f7369745f68656c643a3a6862353164666339323262383230633633d403386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6861333662383266326437353730363062d5033a70616c6c65745f6d6d723a3a6d6d723a3a6d6d723a3a7665726966795f6c6561665f70726f6f663a3a6836363638356166303237623262303730d603633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6861666266626231643862376534343036d7034973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6b656363616b5f3235363a3a6835636130306234376235313465393830d80343616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6831613662333939336139376563623032d9035e3c616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6833386230663764623365666165376363da03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864653666303937313436663730656465db0357706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a70726f636573735f6269746669656c64733a3a6834333634316462613133633237656639dc0339636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6836666261323533653933373232356364dd036e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6833363933366166353430613230303863de0371706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a617661696c6162696c6974795f74696d656f75745f7072656469636174653a3a7b7b636c6f737572657d7d3a3a6832646462323631306332303531643465df035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835623639393538333165326261393064e003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830653033353939646630373534326662e1035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6862346463643938303536656631653830e203386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864383735376234366232666339643034e303a101636f72653a3a7074723a3a64726f705f696e5f706c6163653c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c726f636f636f5f72756e74696d653a3a52756e74696d653e3a3a617661696c6162696c6974795f74696d656f75745f7072656469636174653a3a7b7b636c6f737572657d7d3e3a3a6839393438303930663366636630366138e4034b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a636c6561723a3a6835353439636161636362396563373531e503386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835636563353062616337643330626538e603386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6861616539353038313433663630646335e703386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6836653937633135323761633964333361e8035c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a67726f75705f61737369676e65645f746f5f636f72653a3a6865323665316162323666326130346534e9032f616c6c6f633a3a7665633a3a5665633c542c413e3a3a696e736572743a3a6839376539636532323434303962623335ea03766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6838656562393336373932363261653032eb03766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6861653734636133353633643237383062ec03766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6834383732303765376539316439396237ed03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831633162373634303632636439366333ee0358706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a70726f636573735f63616e646964617465733a3a6865646162393738323830623435383732ef035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6865613765376161613732346630353962f003386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864343430346437396530343266396363f1035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834633134336563633164376664386137f20354636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e32363432f3034a3c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a7573696e675f656e636f6465643a3a6833386666616163363332623163353531f403463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866303637383761666266656532643632f5035370616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e645f70726f78793a3a6863613030343838663365303864613032f603870170616c6c65745f70726f78793a3a70616c6c65743a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f70726f78793a3a70616c6c65743a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6861373832653062313136646635366163f7035170616c6c65745f70726f78793a3a3c696d706c2070616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f70726f78793a3a6832393038353834353762653138343761f8035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831353262663833613064323631346433f903386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833636137393332336230363965306534fa0339636f72653a3a736c6963653a3a3c696d706c205b545d3e3a3a62696e6172795f7365617263683a3a6836336537663532386132386138333332fb03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6839366135633364623163336663313338fc03437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6836616634333065636462353263383638fd035c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839346334623834643739626439313661fe03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864636439343033633461353461326539ff03386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6834323736636531343333613531613736800446636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e31343033810442636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c28293e3e3a3a68373834623361643431613837653930302e31343034820458636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3e3a3a68313636353563356331623162326636312e31343035830454636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e3134303684047a3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a683764313964616333386364333464613085047c3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686231303137313466326163623766353186047c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a6862396431623835643138643037623230870439636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a683333653664613361663665353336363888046e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683764616636626161613563333064616189045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68313039623630313033343136343264638a04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68646635373839653835343932346465328b04573c49642061732073705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3c543e3e3a3a696e746f5f7375625f6163636f756e743a3a68653239613335373934383032663933648c045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68303565393665316139363030323434668d04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68353731393235333832373635366462388e044e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f745f72616e67653a3a536c6f7452616e67653a3a6e65775f626f756e6465643a3a68313138656135616662383065646136318f04766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a683362623566336362373632386666666690045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68366264353436663163373965356366369104386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a683664626132663962303138613964356492045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831383834393166636430653165333530930453706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a64656372656173655f636f64655f7265663a3a68363061303833363138396563303663359404453c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68353434363965323131366135663033319504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a68333962663439343133363437656632339604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a68366637376539616362376636356538639704386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a683436636239666436626336616536346698047c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a68306536636239353735613662373838389904543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68613031643562373165346661623461339a04613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68636230316264633035336564316164329b049c01636f72653a3a7074723a3a64726f705f696e5f706c6163653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a44726f707065723c2878636d5f6578656375746f723a3a6173736574733a3a417373657449642c78636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e6365292c28293e3e3a3a68386134313833623139353737343863389c04773c78636d5f6275696c6465723a3a7765696768743a3a4669786564576569676874426f756e64733c542c433e2061732078636d5f6578656375746f723a3a7472616974733a3a7765696768743a3a576569676874426f756e64733c433e3e3a3a646565703a3a68396166666337646431616261323436349d047a3c78636d5f6275696c6465723a3a7765696768743a3a4669786564576569676874426f756e64733c542c433e2061732078636d5f6578656375746f723a3a7472616974733a3a7765696768743a3a576569676874426f756e64733c433e3e3a3a7368616c6c6f773a3a68376237646339336534306537343438629e0446636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e363237309f044270616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6830613963393936356262663463353332a0044470616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6836366538656230653764393566346363a1044d70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6836306664373362643931616434393936a2049c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850656e64696e6744656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834373633623532643030346662633861a3049c013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d617850726f7869657344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833373765613661633430373935326130a404a2013c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50726f78794465706f7369744261736544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832346333666138636333316662373234a5049c013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6864323962396539333039666461306239a6049f013c73705f72756e74696d653a3a67656e657269633a3a756e636865636b65645f65787472696e7369633a3a556e636865636b656445787472696e7369633c416464726573732c43616c6c2c5369676e61747572652c45787472613e2061732073705f72756e74696d653a3a7472616974733a3a436865636b61626c653c4c6f6f6b75703e3e3a3a636865636b3a3a6833353034636231373365356430383365a704553c73705f72756e74696d653a3a4d756c74695369676e61747572652061732073705f72756e74696d653a3a7472616974733a3a5665726966793e3a3a7665726966793a3a6864343565623833663565633839323461a8048c0173705f636f6e73656e7375735f626162653a3a646967657374733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f6e73656e7375735f626162653a3a646967657374733a3a5072654469676573743e3a3a6465636f64653a3a6863363962633663623031653135656236a904683c73705f636f6e73656e7375735f7672663a3a7363686e6f72726b656c3a3a56524650726f6f66206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6866336439313637666562306235363861aa044c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6865626535313831373237373835333031ab044e706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833303066303364343836303136303636ac0457706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6839623831303565393262343865386239ad04a7013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a736c6f74733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c65617365506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866356139613261353937343832323133ae0459706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6836373639306661323532383438323831af045b706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261735f696e686572656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831323339346163643062653666343461b0047d7061726974795f7363616c655f636f6465633a3a6269745f7665633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a6465636f64653a3a6866656365313630643563393861316661b1049401706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733c4e3e3e3a3a6465636f64653a3a6866363139666335326365353036323532b2047978636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6465636f64653a3a6835656162373064353236383039376238b3047978636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6465636f64653a3a6866363733633038613339643365376632b4047c78636d3a3a76303a3a6a756e6374696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a656e636f64655f746f3a3a6864626132653162646239396330616130b5043a636f72653a3a666d743a3a6275696c646572733a3a44656275674c6973743a3a656e74726965733a3a6832353830666239336163653838303637b604303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6832336239306533643937323238653461b70448616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6865663236316237613334363739373936b804493c78636d5f6578656375746f723a3a6173736574733a3a4173736574496420617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6864383562356431373037653433613034b904633c54206173207061726974795f7363616c655f636f6465633a3a64657074685f6c696d69743a3a4465636f64654c696d69743e3a3a6465636f64655f616c6c5f776974685f64657074685f6c696d69743a3a6836346262376631356635303362343863ba044d3c747269655f64623a3a7472696564623a3a5472696544423c4c3e20617320747269655f64623a3a547269653c4c3e3e3a3a6765745f776974683a3a6834643465623632393933626530663364bb0439747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633a3a6465636f64653a3a6835326237356632633435636337393335bc0425747269655f64623a3a547269653a3a6765743a3a6834396464313462373630653761623332bd046e3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a636c6f6e655f737562747265653a3a6837333739646238653138643638653932be044f3c78636d5f6578656375746f723a3a6173736574733a3a4173736574496420617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6835303662616564353063303531366364bf044d3c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6863616431383462373930653038343031c0046e3c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a636c6f6e655f737562747265653a3a6833613032643034373535623439336563c104653c70616c6c65745f70726f78793a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6833363635396362363533666639663932c204613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6866616133643338613462623563323436c30451726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6865623737356561646232396338666664c4044f726f636f636f5f72756e74696d653a3a76616c696461746f725f6d616e616765723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831393864623937346532636432323138c504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6864393364613333336631636430343733c604703c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a496e746f497465723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834643630396361323534343537636538c70446636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e31353930c8044070616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6830613434623266303733623761616232c9044270616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6839396433313231666463333562626434ca0448636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e3e3a3a6836376663333863633262353037333632cb04783c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a6838393536303837363163653265393337cc045a6672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f7072655f64697370617463683a3a6838376637303265663863373839646337cd04566672616d655f73797374656d3a3a657874656e73696f6e733a3a636865636b5f7765696768743a3a436865636b5765696768743c543e3a3a646f5f76616c69646174653a3a6835373737666633303261346537373566ce045470616c6c65745f626162653a3a3c696d706c2070616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3e3a3a646f5f696e697469616c697a653a3a6837313130613038306234646132333235cf04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6839373461383833363532333930346230d0043d70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e655f6175783a3a6830313463653034643461646538636439d1045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866346361323465316266363438313861d204706672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a646f75626c655f6d61703a3a53746f72616765446f75626c654d61703a3a73746f726167655f646f75626c655f6d61705f66696e616c5f6b65793a3a6863303666346437656532323437376638d304386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838396339336566633731363133333735d404437061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a7573696e675f656e636f6465643a3a6864663930623161666264323663616332d5045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6837663535343866626635653431333162d604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6837313833643566386434316165316563d7047f7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202851302c5230293e3a3a656e636f64655f746f3a3a6862333838333534373236396564383537d804386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6866353730633736373634633861316433d9044673705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f757466383a3a6836326661383566306531383162653063da04303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831326564306533303030353839613135db04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6865643234616664333966663633306436dc044b70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a67656e65726174655f666f723a3a6862333138663733373363396464343733dd045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839316336313463326164666632653638de04386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6831396631393838636563336364323663df04a901636f72653a3a7074723a3a64726f705f696e5f706c6163653c6d656d6f72795f64623a3a4d656d6f727944423c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235362c6d656d6f72795f64623a3a486173684b65793c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e2c616c6c6f633a3a7665633a3a5665633c75383e3e3e3a3a6833346566306661663337343965303263e004af013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e74332c5475706c65456c656d656e74342c5475706c65456c656d656e74352c5475706c65456c656d656e7436292061732070616c6c65745f73657373696f6e3a3a53657373696f6e48616e646c65723c4149643e3e3a3a6f6e5f6e65775f73657373696f6e3a3a6832303732313064333336366463343965e1043c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6833343333333663363864353662653264e2043e70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839383762376335656533383334363766e304763c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637444697361626c656456616c696461746f72733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864626261666366663431656562333131e4046e3c70616c6c65745f73657373696f6e3a3a5f5f476574427974655374727563745175657565644b6579733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6834626262613938383837636261336633e504703c70616c6c65745f73657373696f6e3a3a5f5f4765744279746553747275637443757272656e74496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839323237323163623138393061363363e6043f70616c6c65745f6f6666656e6365733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6830663236303634356535386133613263e704773c70616c6c65745f6f6666656e6365733a3a5f5f476574427974655374727563745265706f72747342794b696e64496e6465783c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6862383339373664373762356361396131e804433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6839353531323839363438613630373637e90476636f72653a3a7074723a3a64726f705f696e5f706c6163653c70616c6c65745f6f6666656e6365733a3a5f5f4765744279746553747275637444656665727265644f6666656e6365733c726f636f636f5f72756e74696d653a3a52756e74696d653e3e3a3a6835363131636564653033323730346331ea04753c70616c6c65745f6f6666656e6365733a3a5f5f4765744279746553747275637444656665727265644f6666656e6365733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861373632623763313335656661353035eb0447636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d723a3a4d4d523c542c4d2c533e3a3a6765745f726f6f743a3a6832316239383063353036663534653232ec046b3c636f72653a3a697465723a3a61646170746572733a3a526573756c745368756e743c492c453e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6861666630623736333763333330363161ed0457636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5242617463683c456c656d2c53746f72653e3a3a6765745f656c656d3a3a6831333834633161376338333761333462ee043f70616c6c65745f6d6d725f7072696d6974697665733a3a446174614f72486173683c482c4c3e3a3a686173683a3a6862633330353733336264303234373837ef0450706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6832396534386263636164306635363939f0048b013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a646d703a3a5f5f47657442797465537472756374446f776e776172644d6573736167655175657565733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836303465323762646534333331383033f104433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6830376138616566613564383234653265f2043473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a6863363833643432663761323764333939f3043473705f72756e74696d653a3a7472616974733a3a486173683a3a686173685f6f663a3a6833356530343861333039623737653934f4045c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6861343139653835613166616138623237f504386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830343863633637333135666638326161f604386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6835636338323566663031383436653237f704303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838306335356564343461623563646630f8044c3c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6838343832356239333232343934613431f90446616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a6864323430636335656132653039353234fa0444636f72653a3a7475706c653a3a3c696d706c20636f72653a3a636d703a3a4f726420666f722028412c42293e3a3a636d703a3a6836396531313938663438316430353136fb045a636f72653a3a7074723a3a64726f705f696e5f706c6163653c5b78636d3a3a76303a3a6f726465723a3a4f726465723c726f636f636f5f72756e74696d653a3a43616c6c3e5d3e3a3a6865363338616662343334326332363230fc043d73705f636f72653a3a746f5f7375627374726174655f7761736d5f666e5f72657475726e5f76616c75653a3a6833316538626631633861343265386465fd04583c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6831326362376663323537626535353831fe045f3c70616c6c65745f73657373696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6836376566636166333561623731396233ff04633c70616c6c65745f78636d3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68653962353266346136623035373133368005723c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683034373537636134666539306636353281056d3c6269747665633a3a736c6963653a3a697465723a3a497465724d75744e6f416c6961733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683133636232393334333330333037346682056f3c6269747665633a3a736c6963653a3a697465723a3a4368756e6b734d75744e6f416c6961733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68373063343562316666363032313036338305773c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a686236366136336664366335306438656584055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a686461383934326634346434373163393085054970616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a636f6d707574655f6665655f7261773a3a68643637363463393865643637643538328605466672616d655f737570706f72743a3a776569676874733a3a576569676874546f466565506f6c796e6f6d69616c3a3a63616c633a3a68636533313633613164663939643166648705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a686635663635313263643039303335636188054673705f61726974686d657469633a3a68656c706572735f3132386269743a3a6d756c7469706c795f62795f726174696f6e616c3a3a686239643136373633636562353238376489054b73705f636f6e73656e7375735f626162653a3a636865636b5f65717569766f636174696f6e5f70726f6f663a3a7b7b636c6f737572657d7d3a3a68626266333862633164343664356465658a054c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7665726966793a3a68353133623534383631333434616662398b053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68353633653733306236336338636633338c054f706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68343532613435363937306130343036638d0551706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68306139636664616636613363636236358e055a706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68653936366331363635376430666335638f05b2013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4c65617365506572696f6473506572536c6f7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68363037646563396537646530316461359005ad013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a536c6f7452616e6765436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68363965613064386539343861306532619105ab013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a53616d706c654c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68306534336630386463633535656632309205ab013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a61756374696f6e733a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a456e64696e67506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683436303662333037366630643435656493055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6834633130333262326135383139333230940557636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5242617463683c456c656d2c53746f72653e3a3a6765745f656c656d3a3a68666164626462646636323236373636629505ef013c70616c6c65745f6d6d723a3a6d6d723a3a73746f726167653a3a53746f726167653c70616c6c65745f6d6d723a3a6d6d723a3a73746f726167653a3a4f6666636861696e53746f726167652c542c492c4c3e20617320636b625f6d65726b6c655f6d6f756e7461696e5f72616e67653a3a6d6d725f73746f72653a3a4d4d5253746f72653c70616c6c65745f6d6d725f7072696d6974697665733a3a446174614f72486173683c3c542061732070616c6c65745f6d6d723a3a436f6e6669673c493e3e3a3a48617368696e672c4c3e3e3e3a3a6765745f656c656d3a3a6836373630623263303766323230646266960546636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e31393539970554636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e3139363298054a70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a686262646166653737393134313666316499057e3c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a5f5f4765744279746553747275637453746f7261676556657273696f6e3c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68306438303265623237656335316432399a0581013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a5f5f476574427974655374727563744e6578744665654d756c7469706c6965723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68393132663137313862653737366337359b055370616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68303362383430306331303666636236379c05a3013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a576569676874546f46656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68386138316537373166653166353836659d05aa013c70616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5472616e73616374696f6e4279746546656544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68346565343034356431363133313562639e0551706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a666f7263655f656e6163743a3a68653039326337623239623432643136369f0555706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a656e6163745f63616e6469646174653a3a6831383235353638636565323939356438a0055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832323635323466333937383132643130a105386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835613966316637313634626132306164a2055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6839353664313265663963646630333061a3055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6866613761326632313239366239323365a405386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6861646333326236653130633434383130a50537616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6865363932636664363037353439376333a605bc01706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616e64696461746550656e64696e67417661696c6162696c6974793c482c4e3e3e3a3a6465636f64653a3a6865333035626130346332366632313734a7057d7061726974795f7363616c655f636f6465633a3a6269745f7665633a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a6465636f64653a3a6864363536613633636231653132343131a80556706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862316263316634653062356634393066a9058f013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a5f5f4765744279746553747275637450656e64696e67417661696c6162696c6974793c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838363030333832623938646663613834aa0558706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a4d6f64756c653c543e3a3a6163746976655f76616c696461746f725f6b6579733a3a6838656662656366356537626531306133ab05ab01706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6865613335656461313332646635333630ac05656269747665633a3a7665633a3a7472616974733a3a3c696d706c20636f72653a3a636c6f6e653a3a436c6f6e6520666f72206269747665633a3a7665633a3a4269745665633c4f2c543e3e3a3a636c6f6e653a3a6835313233363132613732623564306638ad05653c6269747665633a3a736c6963653a3a697465723a3a4368756e6b733c4f2c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6832333833383934306236353364343533ae05673c6269747665633a3a736c6963653a3a426974536c6963653c6269747665633a3a6f726465723a3a4c7362302c543e206173206269747665633a3a6669656c643a3a4269744669656c643e3a3a6c6f61645f6c653a3a6865633536373636363366353366663961af0583013c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c543e3e3e3a3a737065635f657874656e643a3a6838333135383661626663333236383339b005336269747665633a3a7665633a3a4269745665633c4f2c543e3a3a7265706561743a3a6864323035356262353965376362326433b10559706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a76616c69646174696f6e5f636f64655f686173685f61743a3a6861383236343633346164343031376561b2056d706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a43616e646964617465436865636b436f6e746578743c543e3a3a636865636b5f76616c69646174696f6e5f6f7574707574733a3a6835356562623261613032303132656632b305753c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e636c7573696f6e3a3a416363657074616e6365436865636b4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838396439326438313864393836666632b40554706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7574696c3a3a6d616b655f7065727369737465645f76616c69646174696f6e5f646174613a3a6833303831353330376261323233626465b5054e706f6c6b61646f745f7072696d6974697665733a3a76313a3a436f6d6d697474656443616e646964617465526563656970743c483e3a3a686173683a3a6836383439333239396330633433393731b6053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6861656166326537393366363138623634b7054373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726561643a3a6863373635653662626335356236636636b80539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6830353537353661396563306663363335b9059401706f6c6b61646f745f7072696d6974697665733a3a76313a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f7072696d6974697665733a3a76313a3a43616e646964617465436f6d6d69746d656e74733c4e3e3e3a3a6465636f64653a3a6839343736626433653431303130306636ba0539636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6835333230643563346366323334303564bb052b78636d3a3a76303a3a58636d3c43616c6c3e3a3a66726f6d3a3a6832633433373763386666323362363062bc056c3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a7472795f666f6c643a3a6863623439313334376461383136306239bd05840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3a3a656e636f64655f746f3a3a6861353936386137396231373337643939be057978636d3a3a76303a3a6f726465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6f726465723a3a4f726465723c43616c6c3e3e3a3a656e636f64655f746f3a3a6864303362393232393264393964326366bf057978636d3a3a76303a3a6f726465723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6f726465723a3a4f726465723c43616c6c3e3e3a3a656e636f64655f746f3a3a6839643434626231326635626436313666c0052d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6833613730396461343364633736353165c1052e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6836333535663862323236333863386334c20534636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6866616565633232666261356365343039c3053c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6863313735653539363638643037656662c405386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866363162363665643334653239663666c505386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6838383139326366393064613661303939c605386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832636563663832613362616636343066c705386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6833623936323636373833343930623434c805457363686e6f72726b656c3a3a706f696e74733a3a52697374726574746f426f74683a3a66726f6d5f636f6d707265737365643a3a6864326233356162633566336432343462c905407363686e6f72726b656c3a3a7672663a3a5652464f75747075743a3a6174746163685f696e7075745f686173683a3a6833653665323663313132656261656639ca05386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6863316165383932386163313766663139cb05a1013c70616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a4d6f64756c653c543e206173206672616d655f737570706f72743a3a7472616974733a3a76616c69646174696f6e3a3a4b65794f776e657250726f6f6653797374656d3c2873705f636f72653a3a63727970746f3a3a4b65795479706549642c44293e3e3a3a636865636b5f70726f6f663a3a6836323464363361633863383537336434cc053d73705f61726974686d657469633a3a7065725f7468696e67733a3a50657262696c6c3a3a7371756172653a3a6864356134363735326562333366343161cd057c3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6835316565373165306333646134306237ce054170616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6864636564616333653966626230373638cf054370616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6837626261353131393061386434333762d0054c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832386166653333626561613639376535d105a2013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578706563746564426c6f636b54696d6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863626231383539386432336336336532d2059e013c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a45706f63684475726174696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839343831336231346639316331386463d3055678636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743a3a74656c65706f72745f61737365743a3a6837636430616337663366333161363564d405b9013c78636d5f6275696c6465723a3a63757272656e63795f616461707465723a3a43757272656e6379416461707465723c43757272656e63792c4d6174636865722c4163636f756e744964436f6e7665727465722c4163636f756e7449643e2061732078636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743e3a3a77697468647261775f61737365743a3a6836643664663862616665656362323235d505b8013c78636d5f6275696c6465723a3a63757272656e63795f616461707465723a3a43757272656e6379416461707465723c43757272656e63792c4d6174636865722c4163636f756e744964436f6e7665727465722c4163636f756e7449643e2061732078636d5f6578656375746f723a3a7472616974733a3a7472616e736163745f61737365743a3a5472616e7361637441737365743e3a3a6465706f7369745f61737365743a3a6832333661626230623033343132356338d60591013c78636d5f6275696c6465723a3a6d6174636865735f66756e6769626c653a3a4973436f6e63726574653c543e2061732078636d5f6578656375746f723a3a7472616974733a3a6d6174636865735f66756e6769626c653a3a4d61746368657346756e6769626c653c423e3e3a3a6d6174636865735f66756e6769626c653a3a6830616338343035323734323138656461d705583c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6863636134626536363637633931666532d805c4013c78636d5f6275696c6465723a3a6c6f636174696f6e5f636f6e76657273696f6e3a3a4163636f756e7449643332416c69617365733c4e6574776f726b2c4163636f756e7449643e2061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a436f6e766572743c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e2c4163636f756e7449643e3e3a3a636f6e766572743a3a6834386530376434643238306138353939d9054873705f72756e74696d653a3a7472616974733a3a4163636f756e744964436f6e76657273696f6e3a3a696e746f5f6163636f756e743a3a6833373931633761336235653661326230da05bf0170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a77697468647261773a3a6865373135386232303664313161336531db054378636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d653a3a6833323139303734393663383133656631dc05c70170616c6c65745f62616c616e6365733a3a3c696d706c206672616d655f737570706f72743a3a7472616974733a3a746f6b656e733a3a63757272656e63793a3a43757272656e63793c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e20666f722070616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3e3a3a6465706f7369745f6372656174696e673a3a6836373639353461396535343862356133dd057b70616c6c65745f6772616e6470613a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f6772616e6470613a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6831616532346366333262646630306437de054470616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6864326439633666326566663537316537df054670616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6830626238653336643131396336353935e0054f70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6832353663636138383764666266643961e1059b013c70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839316639346530326435623265363939e205830170616c6c65745f636f6c6c6563746976653a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c70616c6c65745f636f6c6c6563746976653a3a4572726f723c542c493e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6833653530663961633563346135656439e305810170616c6c65745f6d6d725f7072696d6974697665733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722070616c6c65745f6d6d725f7072696d6974697665733a3a4572726f723e3a3a656e636f64655f746f3a3a6837303038353337393163653335656632e40559706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7375646f5f777261707065723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6864396461633438663335373363326434e505a301706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6835323136323239303762396663316334e605746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6834666438343337383736316533656566e705543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838623832386164646432356665346132e805543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6861346431633366626632326139353237e90559706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863376364633666313535653239346239ea0587013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a73657373696f6e5f696e666f3a3a5f5f4765744279746553747275637453657373696f6e733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6831636132343931313633313361613066eb053c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6835643835356336366663393435393032ec055c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863376235353238346530356565656466ed05a301706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a3c696d706c20636f72653a3a636f6e766572743a3a46726f6d3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4572726f723c543e3e20666f722073705f72756e74696d653a3a44697370617463684572726f723e3a3a66726f6d3a3a6839386332363033633164396666663465ee05303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839643163643164356534616139623838ef057873705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a6465636f64653a3a6865626233666664393434666637663335f0054c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f7665726966793a3a6865323931623664333061306630393366f1056073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a736563703235366b315f65636473615f7265636f7665725f636f6d707265737365643a3a6863393531326134353035346563383036f205593c73705f72756e74696d653a3a44697370617463684572726f7257697468506f7374496e666f3c496e666f3e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6831316334613434343738656665393933f305653c73705f747269653a3a6e6f64655f6865616465723a3a4e6f6465486561646572206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6866386261663738323234363566663665f405643c70616c6c65745f626162653a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6838376264336266616164666339393866f505673c70616c6c65745f696e64696365733a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863323564303730363762383232396137f6053e73705f72756e74696d653a3a67656e657269633a3a656e636f64655f776974685f7665635f7072656669783a3a6839636630393430623531316362333561f7058e017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220284c302c4d302c4e302c4f302c50302c51302c5230293e3a3a656e636f64655f746f3a3a6834336563653137623230613038646336f805623c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c493e3e3a3a737065635f657874656e643a3a6831626664383437383731363566336338f9053f7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64655f746f3a3a6835343164623435346662613039366364fa057c7061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f72202851302c5230293e3a3a6465636f64653a3a6862353562653130323037366665623236fb05840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a6465636f64653a3a6831346663666432633339333163653433fc05840178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a6465636f64653a3a6834313939313161376334326137366133fd05870178636d3a3a76303a3a6d756c74695f61737365743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722078636d3a3a76303a3a6d756c74695f61737365743a3a4173736574496e7374616e63653e3a3a656e636f64655f746f3a3a6836386139306266633865353161366631fe05303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834363638656536323738303439653361ff05303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a686130383361393666643365343031343980064d636f72653a3a686173683a3a696d706c733a3a3c696d706c20636f72653a3a686173683a3a4861736820666f722028412c42293e3a3a686173683a3a68383831656166613064313634316431378106373c285431302c5431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68333763356336643030346332356235618206483c5b545d206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6837646435356330303466326536393433830631636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a683530323938356365373930333062323484066a3c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683362646266663866316637623638623485063770616c6c65745f6d6d723a3a4d6f64756c653c542c493e3a3a7665726966795f6c6561663a3a68346261386361666231393934653038618606303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68353861306662363837626339353036618706633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6835656234623331346639626335646431880643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a683038303037623232313431666436636289063c70616c6c65745f6d6d723a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a68633163636665366137653539643261398a06aa0173705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a5472616e73616374696f6e56616c69646974794572726f723e3a3a656e636f64655f746f3a3a68643463303639303233343034383134618b067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68303635646637363334386537343533378c067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68306536633331636337643164376535338d06483c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68633933333737633037363766313966358e067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68313461313135623662663631306164648f067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683430353131633361336631393266383490067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683866366537666537386132373466383291067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686231613038613633313835373133623492067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686438356135633139333166393032613193067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686530306166326665376434336139386294067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686532636462353839346539366635653095067c3c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e496e697469616c697a653c426c6f636b4e756d6265723e3e3a3a6f6e5f696e697469616c697a653a3a683564353432386336643030373234393496065373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6b656363616b5f3235365f6f7264657265645f726f6f743a3a68396132626634616239306238383830649706386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6865323437643933303963396465366362980638736563703235366b313a3a6669656c643a3a4669656c643a3a7371725f696e5f706c6163653a3a6863643539383461353866653239633239990638736563703235366b313a3a6669656c643a3a4669656c643a3a6d756c5f696e5f706c6163653a3a68356361313033353330383537393962659a0639736563703235366b313a3a6669656c643a3a4669656c643a3a6e6f726d616c697a655f7661723a3a68313038646637336534343764313762339b063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a68306136303830326134643633343966379c063e70616c6c65745f626162653a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a68363330376365663464316330363166659d06463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a68346638313738393363303538653666339e064170616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a68653662626136313331633962306638309f064370616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6862383435343239643237363566333866a0067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838613333336365663061356639356133a106773c736d616c6c7665633a3a536d616c6c5665633c413e20617320636f72653a3a697465723a3a7472616974733a3a636f6c6c6563743a3a457874656e643c3c4120617320736d616c6c7665633a3a41727261793e3a3a4974656d3e3e3a3a657874656e643a3a6836366533376330633736343135336632a20635736d616c6c7665633a3a536d616c6c5665633c413e3a3a7472795f726573657276653a3a6836353663643261666261343433646432a306386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6830313530333330663837613732656663a406386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832373766663962613463343664643566a506386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6832626238346630646637323864313531a606386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6834313337323932373432396563636561a706386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6835396131313435316238643565373362a806910173705f72756e74696d653a3a67656e657269633a3a6469676573743a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f722073705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573743c486173683e3e3a3a6465636f64653a3a6839646662663562323737353165656234a906543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6834646265303363666432653730323561aa06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6862353963383039363537343039306430ab06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765743a3a6866366563623133323465343563326632ac06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831303837353063636535346332653831ad06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831306633396336623432643062323333ae06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831663638653438306438663530616237af06386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6831666461373938383639323266623963b006386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6834313161666565396163623633643137b106386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6836353136633436306431353933343731b206386672616d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a7075743a3a6866333232633033313265653263393938b3064170616c6c65745f6772616e6470613a3a65717569766f636174696f6e3a3a69735f6b6e6f776e5f6f6666656e63653a3a6861653334316461616532653064363263b4064478636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e3a3a646f5f657865637574655f78636d3a3a6831626230376231656631346232316363b5064778636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d655f616c6c3a3a6832616439333066393731643436623633b60681013c78636d5f6578656375746f723a3a6173736574733a3a41737365747320617320636f72653a3a636f6e766572743a3a46726f6d3c616c6c6f633a3a7665633a3a5665633c78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743e3e3e3a3a66726f6d3a3a6839326337363532663163313630353038b70696013c78636d5f6275696c6465723a3a6c6f636174696f6e5f636f6e76657273696f6e3a3a4c6f636174696f6e496e7665727465723c416e6365737472793e2061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a496e766572744c6f636174696f6e3e3a3a696e766572745f6c6f636174696f6e3a3a6832633937363134386539656463623236b8063d78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743a3a7265616e63686f723a3a6865643931336234393037633266393837b9069b013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e7432292061732078636d5f6578656375746f723a3a7472616974733a3a66696c7465725f61737365745f6c6f636174696f6e3a3a46696c74657241737365744c6f636174696f6e3e3a3a66696c7465725f61737365745f6c6f636174696f6e3a3a6834386332633365373864646530306635ba064678636d3a3a646f75626c655f656e636f6465643a3a446f75626c65456e636f6465643c543e3a3a74616b655f6465636f6465643a3a6830613434393536343561366636386465bb0694013c285475706c65456c656d656e74302c5475706c65456c656d656e74312c5475706c65456c656d656e74322c5475706c65456c656d656e7433292061732078636d5f6578656375746f723a3a7472616974733a3a636f6e76657273696f6e3a3a436f6e766572744f726967696e3c4f3e3e3a3a636f6e766572745f6f726967696e3a3a6861306335383235366163386132623838bc063d78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a61743a3a6836623436353838656636376433353134bd064778636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a70726570656e645f776974683a3a6834356630613264323961313233643932be064578636d5f6578656375746f723a3a58636d4578656375746f723c436f6e6669673e3a3a657865637574655f656666656374733a3a6831386266356539613363623738316261bf064578636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a74616b655f66697273743a3a6839353765363165353530366337613736c0064078636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f74616b653a3a6831323732366433303333616538373533c1063978636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b653a3a6830636130386232326362643863653838c20646616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a697465723a3a6832373165323234346435636132613061c3064c78636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a73617475726174696e675f73756273756d655f66756e6769626c653a3a6830353235356638313664353133653761c40644616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a697465723a3a6865316630343136313464623063303365c5066a636f72653a3a6f70733a3a66756e6374696f6e3a3a696d706c733a3a3c696d706c20636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653c413e20666f7220266d757420463e3a3a63616c6c5f6f6e63653a3a6839343336626432353538643131623764c606573c78636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e20617320636f72653a3a636d703a3a5061727469616c45713e3a3a65713a3a6861356238373238653533663932316566c7064178636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a70726570656e645f6c6f636174696f6e3a3a6833623839316334313837366661613034c806633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6863653861313463616432353963363735c90658636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a6f726465723a3a4f726465723c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a6839346433653231333561616430626338ca064770616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6861393434346437613864653335383239cb064970616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a73746f726167655f6d657461646174613a3a6866656666316363366439373730633264cc067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6838303036333335616330386331376434cd067d3c6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a4f6e456d7074794765747465723c56616c75652c4f6e456d7074793e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861343965613263643763623031386135ce065270616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6861323633316331653934653132623336cf06ab013c70616c6c65745f62616c616e6365733a3a70616c6c65743a3a50616c6c65743c542c493e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4578697374656e7469616c4465706f73697444656661756c74427974654765747465723c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6835336133363833656666656238373166d00682017061726974795f7363616c655f636f6465633a3a636f6465633a3a696e6e65725f7475706c655f696d706c3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72202850302c51302c5230293e3a3a656e636f64655f746f3a3a6837636137393066653966656232636638d1063c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6865666633353964306134363631336361d206303c282920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864643666376666646365343533353239d30650706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6833373035663839653462373962383963d40689013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a756d703a3a5f5f4765744279746553747275637452656c617944697370617463685175657565733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6832613433633165663664373935653934d506303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6839633837626335626466393766313133d606303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6862333965383463613132316261323430d70631636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6830633533616361613163663731313162d80631636f72653a3a70616e69636b696e673a3a6173736572745f6661696c65643a3a6861663834656534303635356266346133d906363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6839373663623663656230636562366235da0643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6862373233383038306365326535316334db0643616c6c6f633a3a636f6c6c656374696f6e733a3a7665635f64657175653a3a56656344657175653c543e3a3a67726f773a3a6834353666373965663032633061363563dc066b3c7061726974795f7363616c655f636f6465633a3a636f6d706163743a3a436f6d706163743c7533323e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830656165626465626561656536653031dd065c3c636f72653a3a6f7074696f6e3a3a4f7074696f6e3c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6830363162383639613864326636653663de06653c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6272616e63685f6e6f64653a3a6831623566666438623236376462393834df06683c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a657874656e73696f6e5f6e6f64653a3a6862353132356538366263366231343365e006633c73705f747269653a3a6e6f64655f636f6465633a3a4e6f6465436f6465633c483e20617320747269655f64623a3a6e6f64655f636f6465633a3a4e6f6465436f6465633e3a3a6c6561665f6e6f64653a3a6838313136383030333564323463323135e106643c70616c6c65745f7375646f3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6834613931333230343132303136373934e2060c436f72655f76657273696f6ee30612436f72655f657865637574655f626c6f636be406543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6838333835643466643464666465653139e50684016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a696e697469616c697a655f626c6f636b3a3a6861353432393637383439343164383561e6065073705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f62617463685f7665726966793a3a6866646631323736356164353033383865e70683016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a6170706c795f65787472696e7369633a3a6861363831656431636565326435316363e8066a6672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a76616c75653a3a53746f7261676556616c75653c5072656669782c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a7075743a3a6836383732353331613861636162386237e9068a016672616d655f6578656375746976653a3a4578656375746976653c53797374656d2c426c6f636b2c436f6e746578742c556e7369676e656456616c696461746f722c416c6c50616c6c6574732c434f6e52756e74696d65557067726164653e3a3a69646c655f616e645f66696e616c697a655f686f6f6b3a3a6831666538326435363561363838636363ea065173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a66696e6973685f62617463685f7665726966793a3a6833343735616639313138356166383936eb06516672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a66696e616c697a653a3a6865336434323836613166633231613234ec066f3c73705f72756e74696d653a3a67656e657269633a3a6469676573743a3a4469676573744974656d3c486173683e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6838663933643938626137373038373130ed064573705f696f3a3a6d6973633a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7072696e745f6865783a3a6836623263656162626531666262353564ee0615436f72655f696e697469616c697a655f626c6f636bef06114d657461646174615f6d65746164617461f00683013c616c6c6f633a3a7665633a3a5665633c542c413e20617320616c6c6f633a3a7665633a3a737065635f657874656e643a3a53706563457874656e643c542c616c6c6f633a3a7665633a3a696e746f5f697465723a3a496e746f497465723c543e3e3e3a3a737065635f657874656e643a3a6836306365376638626665623539376564f1061c426c6f636b4275696c6465725f6170706c795f65787472696e736963f2061b426c6f636b4275696c6465725f66696e616c697a655f626c6f636bf30620426c6f636b4275696c6465725f696e686572656e745f65787472696e73696373f406463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6836333265383165376462623133326139f5061c426c6f636b4275696c6465725f636865636b5f696e686572656e7473f6064073705f696e686572656e74733a3a436865636b496e686572656e7473526573756c743a3a7075745f6572726f723a3a6861633336613732646161346438646137f70618426c6f636b4275696c6465725f72616e646f6d5f73656564f8062b5461676765645472616e73616374696f6e51756575655f76616c69646174655f7472616e73616374696f6ef9065373705f72756e74696d653a3a7472616e73616374696f6e5f76616c69646974793a3a56616c69645472616e73616374696f6e3a3a636f6d62696e655f776974683a3a6864356336386233323933613264626539fa0646636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e34393830fb066b3c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e2061732073705f72756e74696d653a3a7472616974733a3a56616c6964617465556e7369676e65643e3a3a76616c69646174655f756e7369676e65643a3a6862356366376333613433353561336663fc06214f6666636861696e576f726b65724170695f6f6666636861696e5f776f726b6572fd06536672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a696e697469616c697a653a3a6837653532346235336133366163386165fe064c73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a69735f76616c696461746f723a3a6832656439666639383161353635323531ff065173705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7075626c69635f6b6579733a3a683531366438303665623765623938653480072c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a683539663539346334313836383936313681074c636f72653a3a666d743a3a6e756d3a3a3c696d706c20636f72653a3a666d743a3a446562756720666f72207533323e3a3a666d743a3a68316435313433386630333363636232342e333234398207683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a68653332316135373632633733626337658307583c70616c6c65745f696d5f6f6e6c696e653a3a4f6666636861696e4572723c426c6f636b4e756d6265723e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a683239613837666232636539393335666584071850617261636861696e486f73745f76616c696461746f727385071e50617261636861696e486f73745f76616c696461746f725f67726f757073860759706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a67726f75705f726f746174696f6e5f696e666f3a3a686431663732636139336365656437663087072050617261636861696e486f73745f617661696c6162696c6974795f636f72657388075a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a6e6578745f75705f6f6e5f617661696c61626c653a3a6836386265323836313362613935383236890759706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a6e6578745f75705f6f6e5f74696d655f6f75743a3a68306437303539366136623333313866638a072750617261636861696e486f73745f7065727369737465645f76616c69646174696f6e5f646174618b07633c54206173207061726974795f7363616c655f636f6465633a3a64657074685f6c696d69743a3a4465636f64654c696d69743e3a3a6465636f64655f616c6c5f776974685f64657074685f6c696d69743a3a68653431633132643963353232626439398c074373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6f743a3a68656230663064613134353733333833368d072650617261636861696e486f73745f636865636b5f76616c69646174696f6e5f6f7574707574738e072550617261636861696e486f73745f73657373696f6e5f696e6465785f666f725f6368696c648f071d50617261636861696e486f73745f76616c69646174696f6e5f636f646590074e706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a63757272656e745f636f64653a3a686633336637663833313439393532393791072850617261636861696e486f73745f686973746f726963616c5f76616c69646174696f6e5f636f646592075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683435663461653066393438616262326493072c50617261636861696e486f73745f63616e6469646174655f70656e64696e675f617661696c6162696c69747994071e50617261636861696e486f73745f63616e6469646174655f6576656e7473950747636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a4576656e743e3a3a68633939623939303837366436363734312e3630363296071a50617261636861696e486f73745f73657373696f6e5f696e666f97071a50617261636861696e486f73745f646d715f636f6e74656e747398072c50617261636861696e486f73745f696e626f756e645f68726d705f6368616e6e656c735f636f6e74656e747399075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68376136653066353132333861636132319a072550617261636861696e486f73745f76616c69646174696f6e5f636f64655f62795f686173689b071e4772616e6470614170695f6772616e6470615f617574686f7269746965739c07384772616e6470614170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e7369639d075273705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7375626d69745f7472616e73616374696f6e3a3a68313333323838386663376533353733319e0746636f72653a3a7074723a3a64726f705f696e5f706c6163653c726f636f636f5f72756e74696d653a3a43616c6c3e3a3a68333263626565633437346431626436652e333235309f07274772616e6470614170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66a0074470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a70726f76653a3a6830653831626462613931663165663834a10715426162654170695f636f6e66696775726174696f6ea2071b426162654170695f63757272656e745f65706f63685f7374617274a30715426162654170695f63757272656e745f65706f6368a40712426162654170695f6e6578745f65706f6368a50724426162654170695f67656e65726174655f6b65795f6f776e6572736869705f70726f6f66a60735426162654170695f7375626d69745f7265706f72745f65717569766f636174696f6e5f756e7369676e65645f65787472696e736963a70721417574686f72697479446973636f766572794170695f617574686f726974696573a8072153657373696f6e4b6579735f67656e65726174655f73657373696f6e5f6b657973a9074e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a656432353531395f67656e65726174653a3a6838366161376230633131356538386464aa074e73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f67656e65726174653a3a6830626562623433646637313439613039ab074c73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a65636473615f67656e65726174653a3a6830616632646666643434326537323638ac071f53657373696f6e4b6579735f6465636f64655f73657373696f6e5f6b657973ad071642656566794170695f76616c696461746f725f736574ae07154d6d724170695f67656e65726174655f70726f6f66af07473c636f72653a3a726573756c743a3a526573756c743c542c453e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838383065316232306565396163663031b007633c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a737065635f66726f6d5f697465723a3a5370656346726f6d497465723c542c493e3e3a3a66726f6d5f697465723a3a6864346132336534393963646235616138b107463c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64655f746f3a3a6863313437663761386462396636656239b207134d6d724170695f7665726966795f70726f6f66b307543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6862303766396637373535376434303030b407ab01706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f646520666f7220706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6d724c6561663c426c6f636b4e756d6265722c486173682c4d65726b6c65526f6f743e3e3a3a6465636f64653a3a6838343538313166653966303461386236b5071d4d6d724170695f7665726966795f70726f6f665f73746174656c657373b6071d4163636f756e744e6f6e63654170695f6163636f756e745f6e6f6e6365b7074973705f696f3a3a68617368696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3132383a3a6863343035646163353736666237353062b807205472616e73616374696f6e5061796d656e744170695f71756572795f696e666fb907275472616e73616374696f6e5061796d656e744170695f71756572795f6665655f64657461696c73ba075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6838363761336532613966326631613932bb07733c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866626534346437393733323963336436bc073970616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a69735f6f6e6c696e653a3a6862373736333062636437613432316264bd07793c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6834383537363537663735323433333432be073970616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a6465706f7369745f6c6f673a3a6862383761353132663666663535663364bf075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830613839653665326264613530623434c0075173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f6765743a3a6861323863393164323635343061306562c1075d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f636f6d706172655f616e645f7365743a3a6834646339343439636339376435613839c2074d73705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6574776f726b5f73746174653a3a6833323564623336653434333638646664c3074a73705f696f3a3a63727970746f3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a737232353531395f7369676e3a3a6836333761623262356432336663386136c407473c70616c6c65745f696d5f6f6e6c696e653a3a43616c6c3c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838613631363430646530373236313535c5075173705f696f3a3a6f6666636861696e3a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f63616c5f73746f726167655f7365743a3a6865306132363231386338353633353936c607303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6838303036626534313566313734663332c707373c285431302c5431312920617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6834323866613234373962343436306130c80754636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e33323533c907c901706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a46756e64496e666f3c4163636f756e7449642c42616c616e63652c426c6f636b4e756d6265722c4c65617365506572696f643e3e3a3a656e636f64655f746f3a3a6831323062396336356334363736333331ca077f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6836353634633862636365646530353139cb077f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6838373538366335333333306561653831cc074f706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a69645f66726f6d5f696e6465783a3a6837373064643034303433316565633430cd0739636f72653a3a6f70733a3a66756e6374696f6e3a3a466e4f6e63653a3a63616c6c5f6f6e63653a3a6832303932663366343630303761383138ce07773c6672616d655f737570706f72743a3a73746f726167653a3a4368696c64547269655072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6830633365653536356564393437343164cf077f73705f636f72653a3a63727970746f3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f722073705f636f72653a3a63727970746f3a3a4163636f756e74496433323e3a3a7573696e675f656e636f6465643a3a6839343563303531373466316433353863d0075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6863346166386165313338393234633633d107746672616d655f737570706f72743a3a73746f726167653a3a74797065733a3a6d61703a3a53746f726167654d61703c5072656669782c4861736865722c4b65792c56616c75652c51756572794b696e642c4f6e456d7074793e3a3a696e736572743a3a6831316562393432313065626462626365d2073c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832376333653263356234333464353564d3073e70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6836623334316337363030316432306564d407703c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637443757272656e7453657449643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6863653738393333373531323034653364d507693c70616c6c65745f6772616e6470613a3a5f5f4765744279746553747275637453746174653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861383565356639343064333137616164d6073c7061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653a3a656e636f64653a3a6832663631353539323333633538653639d7073e70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6831393335613366383036653938313833d8074070616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862383663623162326434613834393137d907683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6834326130306331616262623030313861da076d3c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a73697a655f68696e743a3a6831356234333164636138346166663034db073d70616c6c65745f6772616e6470613a3a4d6f64756c653c543e3a3a7363686564756c655f6368616e67653a3a6834626338616131386366636162633738dc07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838633565653766313865363765613965dd07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836383065643232353438393036366263de07683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6837643165366333303937663632643738df0759706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a6170706c795f6e65775f73657373696f6e3a3a6833353331333866303136646466343530e007683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6861343762363039643236323765616164e107683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6835323561616530613737353334663765e207683c636f72653a3a697465723a3a61646170746572733a3a6d61703a3a4d61703c492c463e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6836336464633265656465383538383731e30756706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6862346232353434386661643138353064e40758706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6862346136363331666137663232336164e50761706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6866663862616365656132376365366335e607b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d61784865616453697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836346566323931333033353830306564e707b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d6178436f646553697a6544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861343666633939653263653930356638e807b8013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446174614465706f7369745065724279746544656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864623839363334623634323939386238e907b1013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a70617261735f7265676973747261723a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a506172614465706f73697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833613734303631303630636231386434ea0750706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6861323932386338306437643064633536eb0752706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6861363339346563343539643766346264ec075b706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a6830323062363835353632613164393734ed07af013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a52656d6f76654b6579734c696d697444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6836363663326139663835653436393337ee07a8013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a63726f77646c6f616e3a3a4d6f64756c653c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a50616c6c6574496444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6865643332383662343761356565633762ef07513c616c6c6f633a3a7665633a3a647261696e3a3a447261696e3c542c413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6863323038393161336562313933663730f0075f3c70616c6c65745f6772616e6470613a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6839336266343135366636393331626661f107613c70616c6c65745f696d5f6f6e6c696e653a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866353166366564386437633530383735f207aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a6833346463303764383835356466346363f30764616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6832396231366563653438633564663134f4075a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6838656630386636363036313865643932f5075b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6833373762393637363137303135396131f60760616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6862346635633231306335656366636363f70764616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f6368696c645f656467653a3a6830653431383162376366386237353963f8075a616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f6c6566743a3a6830373733643933343738316131366639f9075b616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a62756c6b5f737465616c5f72696768743a3a6832663239373261613539346233386232fa0760616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a42616c616e63696e67436f6e746578743c4b2c563e3a3a6d657267655f747261636b696e675f706172656e743a3a6830653038383330643238383837623166fb07473c78636d3a3a76303a3a6a756e6374696f6e3a3a4a756e6374696f6e20617320636f72653a3a636d703a3a4f72643e3a3a636d703a3a6835613335376539353537643838353038fc07783c285475706c65456c656d656e74302c5475706c65456c656d656e743129206173206672616d655f737570706f72743a3a7472616974733a3a686f6f6b733a3a4f6e52756e74696d65557067726164653e3a3a6f6e5f72756e74696d655f757067726164653a3a6865366636386337653163616630373266fd07723c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6830663433353261613333643631313531fe07733c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6863666638393761623266366238333232ff075c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683534623938663561363066303166653780085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683837663037373733633162643464633781085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a686338663534656439373763353335396382085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683939373037363134313136313464643183082c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6865373033333739303563376237656432840853706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a636c6f73655f68726d705f6368616e6e656c3a3a686166663062313333396334656530346585085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683936353031376631646439616539653486085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a683937666438636465303366646239353387085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6830646638393738623866336534303264880889016672616d655f73797374656d3a3a6c696d6974733a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f73797374656d3a3a6c696d6974733a3a57656967687473506572436c6173733e3a3a656e636f64655f746f3a3a6864343563663462666139613131623962890846616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365743a3a42547265655365743c543e3a3a696e736572743a3a68363361656632343366646630626639378a08aa02616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a72656d6f76653a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75742c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4b563e3e3a3a72656d6f76655f6c6561665f6b763a3a68363763663030643665626564366664328b084670616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a68316561663665373536363766313462668c084870616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a68366261343038616534336331343035388d085170616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a68363132323139643933346131666131338e08a3013c70616c6c65745f74696d657374616d703a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a4d696e696d756d506572696f6444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68393232333264303163663935346230368f083f70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683564313331626163623231363532666290084170616c6c65745f617574686f72736869703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a683661663932363362326166396265616291086d3c70616c6c65745f617574686f72736869703a3a5f5f47657442797465537472756374556e636c65733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683265303039333133313937353563343692084f706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832323233353061613235373366303731930851706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6839613833623632333463666534633966940892013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a68726d703a3a5f5f4765744279746553747275637448726d704f70656e4368616e6e656c52657175657374734c6973743c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68323338666230326138383233393665319508433c58206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f64653e3a3a656e636f64653a3a6838363231353336353230623832336139960850706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a6832636336363038363435346336646137970852706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6831333363633636633263333964616630980884013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a70617261733a3a5f5f4765744279746553747275637450617374436f64654d6574613c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683862393737656238363463363835646499085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68643562653034316531653165663364329a0853706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68376562373835346630333763626133659b085d706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7368617265643a3a4d6f64756c653c543e3a3a696e697469616c697a65725f6f6e5f6e65775f73657373696f6e3a3a68633334656530646264306230323439389c0856706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68363563383930643934303363626531369d0885013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f476574427974655374727563745363686564756c65643c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68663333333762643161323033633166619e088d013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f47657442797465537472756374417661696c6162696c697479436f7265733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68393539353133633631373534346236639f088b013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a7363686564756c65723a3a5f5f476574427974655374727563745061726174687265616451756575653c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6833383438646335616464663133623566a008766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a7365743a3a6835356334633562663666633632366232a108303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836376632393636666362323930363431a208303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6863303236393134663435643838303538a308303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6833633064393465313433333339643737a4085073705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6765743a3a6835346162393731633136636661633530a5085073705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a7365743a3a6863626434386463373461353162373636a6085273705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636c6561723a3a6863383865393038626138373235643434a708503c61727261797665633a3a6572726f72733a3a43617061636974794572726f723c543e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6837346235323033326664356562346636a808623c70616c6c65745f617574686f72736869703a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6864366364323037366233393538396237a90856636f72653a3a7074723a3a64726f705f696e5f706c6163653c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e673e3a3a6834653935306438633361616566356335aa0837616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6836626564353339326265333231373733ab0837616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6837386636646666663439653737386163ac0837616c6c6f633a3a7261775f7665633a3a5261775665633c542c413e3a3a726573657276653a3a6837663838383933363337363066326364ad084773705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6578745f6b65793a3a6835316363393538333230383261656364ae08423c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830633431353362623335663036363930af086e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839366463313662646164633961636662b0086e3c6672616d655f737570706f72743a3a73746f726167653a3a5072656669784974657261746f723c543e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6865656165363365346337636338333230b1082b616c6c6f633a3a736c6963653a3a6d657267655f736f72743a3a6862386538633964663866343362646666b208546672616d655f737570706f72743a3a7472616974733a3a6d656d626572733a3a4368616e67654d656d626572733a3a7365745f6d656d626572735f736f727465643a3a6831643931646365646336303037323631b3085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6831303132363738663966333339376566b408766672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a76616c75653a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c75653c543e20666f7220473e3a3a6765743a3a6836396433626137663131343261623533b5085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6836306638373433653161326364663730b6085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6835376666373965623131653235613061b7084c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a76616c69646174655f616e645f6765745f70726f706f73616c3a3a6838363666616161643830643633666336b8084670616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a646f5f617070726f76655f70726f706f73616c3a3a6834323137346463326463356464326432b9084270616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a72656d6f76655f70726f706f73616c3a3a6861346633353664306334623462623038ba08ab013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a6d656d626572733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a6368616e67655f6d656d626572735f736f727465643a3a6834393036346235636533323365653832bb0854636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e34393831bc085c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a6832653632316635313463306537643562bd085073705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a73746172745f7472616e73616374696f6e3a3a6861323334373964336364383433303932be085373705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a726f6c6c6261636b5f7472616e73616374696f6e3a3a6837383165303831333530633665393230bf085173705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a636f6d6d69745f7472616e73616374696f6e3a3a6864373836633131326464653265393439c0085573705f696f3a3a64656661756c745f6368696c645f73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6e6578745f6b65793a3a6830346635643062333135303335396363c1083d78636d3a3a76303a3a6d756c74695f61737365743a3a4d756c746941737365743a3a636f6e7461696e733a3a6864366363656432303462323631613836c2084f636f72653a3a636d703a3a696d706c733a3a3c696d706c20636f72653a3a636d703a3a5061727469616c45713c26423e20666f722026413e3a3a65713a3a6833353939313139613230336566386439c3084470616c6c65745f7574696c6974793a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a6831333466666564346138653937626339c40880016672616d655f73797374656d3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f72206672616d655f73797374656d3a3a4c61737452756e74696d6555706772616465496e666f3e3a3a656e636f64655f746f3a3a6863616135643065326535623164613563c508686672616d655f73797374656d3a3a3c696d706c206672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3e3a3a72656769737465725f65787472615f7765696768745f756e636865636b65643a3a6836366133376139326466653664633261c608463c616c6c6f633a3a7665633a3a5665633c542c413e20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833653533656561366566303261323565c708653c73705f61726974686d657469633a3a66697865645f706f696e743a3a46697865645531323820617320636f72653a3a6f70733a3a61726974683a3a4469763e3a3a6469763a3a7b7b636c6f737572657d7d3a3a6862663065396337343736356263366134c8089f013c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f737570706f72743a3a7472616974733a3a6d656d626572733a3a4368616e67654d656d626572733c3c54206173206672616d655f73797374656d3a3a70616c6c65743a3a436f6e6669673e3a3a4163636f756e7449643e3e3a3a7365745f7072696d653a3a6831343333316430616237346666643862c9084170616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6830376166373938396263656135636137ca084370616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6830333539633638393465656133633532cb086e3c70616c6c65745f636f6c6c6563746976653a3a5f5f476574427974655374727563745072696d653c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866363736323030313233616538363362cc08703c70616c6c65745f636f6c6c6563746976653a3a5f5f476574427974655374727563744d656d626572733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6839653961633031326263653730386130cd08733c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c4f663c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6837306534623162626536383634386265ce08723c70616c6c65745f636f6c6c6563746976653a3a5f5f4765744279746553747275637450726f706f73616c733c542c493e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6861386333666336306137343330306230cf0841747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a636f6d6d69745f6368696c643a3a6864646565666366313136656335363137d00860747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a72696768745f697465723a3a6837613366316433663936613963346263d10872747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a617070656e645f6f7074696f6e616c5f736c6963655f616e645f6e6962626c653a3a6833333734393935336334333235646566d2085c747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a64726f705f6c617374733a3a6834663639616433623733643033653466d3085c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a4e6f64653c7072696d69746976655f74797065733a3a483235363e3e3a3a6839613831616231386664343761623666d4083c747269655f64623a3a7472696564626d75743a3a4e6f646553746f726167653c483e3a3a616c6c6f633a3a6861643337336332626334616431336234d508543c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e20617320747269655f64623a3a547269654d75743c4c3e3e3a3a696e736572743a3a6835396362636162663865363465363738d6083e747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f61743a3a6832633366653931353039356631373765d7083c747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a66726f6d5f656e636f6465643a3a6835386232313735656164353262626163d80845747269655f64623a3a7472696564626d75743a3a5472696544424d75743c4c3e3a3a696e736572745f696e73706563746f723a3a6835343533333763363736643530343930d908363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a6865393164633762653537323161666432da08376861736862726f776e3a3a7365743a3a486173685365743c542c533e3a3a696e736572743a3a6861353535356436636136656639363038db083e747269655f64623a3a7472696564626d75743a3a4e6f64653c4f3e3a3a696e6c696e655f6f725f686173683a3a6837623332353637616531326237343562dc0835747269655f64623a3a7472696564626d75743a3a656d7074795f6368696c6472656e3a3a6861373537666639356262353832653535dd0865747269655f64623a3a6e6962626c653a3a6e6962626c65736c6963653a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c65536c6963653e3a3a746f5f73746f7265645f72616e67653a3a6834626435663032633135373738353766de083e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6863626565363232323436303066666639df08643c70616c6c65745f636f6c6c6563746976653a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6866323039366536623963363563323937e0086d3c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6862376362663733653539313639373634e1082c616c6c6f633a3a736c6963653a3a696e736572745f686561643a3a6839383263346430663766363335663737e2084470616c6c65745f62656566793a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a6831356332356662376261363565653063e308746672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a3c696d706c206672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c563e20666f7220473e3a3a6765743a3a6865623533346565366564623238376432e408553c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320636f72653a3a64656661756c743a3a44656661756c743e3a3a64656661756c743a3a6834633736356262663162353866316136e508523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a696e736572743a3a6862323935333132323165643762326137e6084470616c6c65745f73657373696f6e3a3a686973746f726963616c3a3a50726f76696e67547269653c543e3a3a71756572793a3a6833383362336264343663366337393264e708533c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a656d706c6163653a3a6834646534366438653233376330636531e808366861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a6765743a3a6831366362363466353434393531343533e908523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a6765743a3a6835636130346136626539633864393633ea08573c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844425265663c482c543e3e3a3a636f6e7461696e733a3a6831656665663661373134323539363936eb08386861736862726f776e3a3a6d61703a3a486173684d61703c4b2c562c533e3a3a656e7472793a3a6839316635336236376165383066663439ec083d6861736862726f776e3a3a6d61703a3a566163616e74456e7472793c4b2c562c533e3a3a696e736572743a3a6831646232623661656661363938346230ed083e6861736862726f776e3a3a7261773a3a5261775461626c653c543e3a3a726573657276655f7265686173683a3a6834323138383562633663623230663261ee087c636f72653a3a7074723a3a64726f705f696e5f706c6163653c747269655f64623a3a7472696564626d75743a3a5472696544424d75743c73705f747269653a3a4c61796f75743c73705f72756e74696d653a3a7472616974733a3a426c616b6554776f3235363e3e3e3a3a6866613163636230633338316464633838ef084f3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a6765743a3a6862363563346233316262383833353339f008543c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a636f6e7461696e733a3a6833666438356430396231616531386161f108523c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a4861736844423c482c543e3e3a3a72656d6f76653a3a6834363737646332393034643265393366f208583c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64623a3a6865626130623530396632643362396137f3085c3c6d656d6f72795f64623a3a4d656d6f727944423c482c4b462c542c4d3e20617320686173685f64623a3a41734861736844423c482c543e3e3a3a61735f686173685f64625f6d75743a3a6862333733363237346466356366336236f4084170616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a63616c6c5f66756e6374696f6e733a3a6862313464336637336262363337386662f5084370616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e3a3a73746f726167655f6d657461646174613a3a6866323133646231656533616439353831f6084c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a6863373231326337623432626166333330f70886013c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3a3a6d6d723a3a5f5f4765744279746553747275637442656566794e657874417574686f7269746965733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866363832636438316636313065326565f80854636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d3a3a76303a3a58636d3c726f636f636f5f72756e74696d653a3a43616c6c3e3e3a3a68386662373365393938656662623437342e36323731f908303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830376334656563653165346638653031fa08303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6836383832636136653633313735323361fb08303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864343162666539353435643836396630fc08643c70616c6c65745f6d656d626572736869703a3a4d6f64756c653c542c493e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a6835656637303034666362393831336666fd08543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a6830353865626363303261633766613435fe086c3c636f72653a3a697465723a3a61646170746572733a3a636861696e3a3a436861696e3c412c423e20617320636f72653a3a697465723a3a7472616974733a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6838346535366237626664353034653839ff087b3c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a68386137393637396339386132386135318009c401706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a5f3a3a3c696d706c207061726974795f7363616c655f636f6465633a3a636f6465633a3a456e636f646520666f7220706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a486f7374436f6e66696775726174696f6e3c426c6f636b4e756d6265723e3e3a3a656e636f64655f746f3a3a683731353265373137363739373931613781095373705f696f3a3a747269653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a626c616b65325f3235365f6f7264657265645f726f6f743a3a683164616537306662396236326361306482094b73705f696f3a3a73746f726167653a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6368616e6765735f726f6f743a3a68376135613834636433633963386638398309426672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a63616c6c5f66756e6374696f6e733a3a68653561636464613232613030343436658409446672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a73746f726167655f6d657461646174613a3a686462313838383336326164626234323085094d6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a683236646466626462633865616334613086099c013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a5353353850726566697844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6864333631623630613933303361393634870999013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a56657273696f6e44656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a683163666332326130393130366564366388099a013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a446257656967687444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68346162303734383336363339363637618909a0013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b48617368436f756e7444656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68383730336362363435633939386266318a099d013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b4c656e67746844656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68333162323261333439623730333265348b099e013c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e3a3a6d6f64756c655f636f6e7374616e74735f6d657461646174613a3a426c6f636b5765696768747344656661756c74427974654765747465723c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a68353330363136343133353466646464618c095c6672616d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a6d61703a3a53746f726167654d61703a3a73746f726167655f6d61705f66696e616c5f6b65793a3a68333832336364383238313961373839668d0956706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a68356162323135306630633862343961358e0958706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a68313031616235653131383939336234618f0994013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a696e697469616c697a65723a3a5f5f47657442797465537472756374427566666572656453657373696f6e4368616e6765733c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a6866343063366437326362636561656665900958706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a63616c6c5f66756e6374696f6e733a3a683930373734613735373434346666663891095a706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a4d6f64756c653c543e3a3a73746f726167655f6d657461646174613a3a686262653763376330643432306137326192098c013c706f6c6b61646f745f72756e74696d655f70617261636861696e733a3a636f6e66696775726174696f6e3a3a5f5f47657442797465537472756374416374697665436f6e6669673c543e206173206672616d655f6d657461646174613a3a44656661756c74427974653e3a3a64656661756c745f627974653a3a686634633566666630656436343034333693093b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a683738346264616332346535356630383994093a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a68376539343163323661346638366137669509653c6672616d655f73797374656d3a3a70616c6c65743a3a50616c6c65743c543e206173206672616d655f6d657461646174613a3a4d6f64756c654572726f724d657461646174613e3a3a6d657461646174613a3a683461666237643634653563313433333796093d3c5420617320636f72653a3a636f6e766572743a3a547279496e746f3c553e3e3a3a7472795f696e746f3a3a686136386331373566336464643262623797093a73705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6c73747269703a3a683331656337613364303164383235336498093773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6164643a3a686131636335356533396361343134353599093773705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6d756c3a3a68613330373732383235326537356138649a094473705f61726974686d657469633a3a62696775696e743a3a42696755696e743a3a6469763a3a7b7b636c6f737572657d7d3a3a68383339363835346632353733373937649b09413c73705f696e686572656e74733a3a4572726f7220617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a68623161316239373665303038356130319c097773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a46726f6d46464956616c756520666f7220543e3a3a66726f6d5f6666695f76616c75653a3a68646336326333633561306166653831309d09543c616c6c6f633a3a7665633a3a5665633c543e206173207061726974795f7363616c655f636f6465633a3a636f6465633a3a4465636f64653e3a3a6465636f64653a3a68373234666433346433346165376631319e097773705f72756e74696d655f696e746572666163653a3a706173735f62793a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a496e746f46464956616c756520666f7220543e3a3a696e746f5f6666695f76616c75653a3a68366631386430353534623439343137639f09323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6861316233353265316562346663373264a009323c265420617320636f72653a3a666d743a3a446973706c61793e3a3a666d743a3a6864366564343262346464353230376161a109860173705f72756e74696d655f696e746572666163653a3a696d706c733a3a3c696d706c2073705f72756e74696d655f696e746572666163653a3a7761736d3a3a496e746f46464956616c756520666f7220616c6c6f633a3a7665633a3a5665633c543e3e3a3a696e746f5f6666695f76616c75653a3a6839333764363836396434356436336266a2094273705f696f3a3a6c6f6767696e673a3a65787465726e5f686f73745f66756e6374696f6e5f696d706c733a3a6c6f673a3a6832363235333064616532343234383237a30930616c6c6f633a3a7665633a3a5665633c542c413e3a3a726573657276653a3a6862346466616564343264393063376435a409573c73705f72756e74696d653a3a72756e74696d655f737472696e673a3a52756e74696d65537472696e6720617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6830303136383936396634393233346266a509533c73705f72756e74696d653a3a72756e74696d655f6c6f676765723a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a656e61626c65643a3a6864313439623361316631353564306139a6094f3c73705f72756e74696d653a3a72756e74696d655f6c6f676765723a3a52756e74696d654c6f67676572206173206c6f673a3a4c6f673e3a3a6c6f673a3a6839333562376363376266356439653136a7093a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f7374723a3a6831366264643665363361636333333338a8093b3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f636861723a3a6861626563646135396433616532666433a9093a3c266d7574205720617320636f72653a3a666d743a3a57726974653e3a3a77726974655f666d743a3a6863373339623262323431663635303163aa09303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864396338373634363362356135633961ab09303c265420617320636f72653a3a666d743a3a44656275673e3a3a666d743a3a6864306535326231363266313330643832ac0956747269655f64623a3a6e6962626c653a3a6e6962626c657665633a3a3c696d706c20747269655f64623a3a6e6962626c653a3a4e6962626c655665633e3a3a707573683a3a6863653037383934383439656435326332ad094478636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a74616b655f6c6173743a3a6830326431616462326464643665323231ae094778636d3a3a76303a3a6d756c74695f6c6f636174696f6e3a3a4d756c74694c6f636174696f6e3a3a706172656e745f636f756e743a3a6866363633303861333532373065363336af094f636f72653a3a636d703a3a696d706c733a3a3c696d706c20636f72653a3a636d703a3a5061727469616c45713c26423e20666f722026413e3a3a65713a3a6862626132336231303134646462373130b009ba01616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a7365617263683a3a3c696d706c20616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a4e6f64655265663c426f72726f77547970652c4b2c562c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561664f72496e7465726e616c3e3e3a3a7365617263685f747265653a3a6834336537363139396139353735346231b1094278636d5f6578656375746f723a3a6173736574733a3a417373657449643a3a70726570656e645f6c6f636174696f6e3a3a6834326561666639376232353265616337b2094a636f72653a3a7074723a3a64726f705f696e5f706c6163653c78636d5f6578656375746f723a3a6173736574733a3a417373657449643e3a3a6832396261633337396665386436653737b30952616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a656e7472793a3a566163616e74456e7472793c4b2c563e3a3a696e736572743a3a6833346232306364656136646333336339b409613c616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a496e746f497465723c4b2c563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a6833643139396165656430366232643465b5094278636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b655f66756e6769626c653a3a6835346665393565653630303734333463b6094678636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a7472795f74616b655f6e6f6e5f66756e6769626c653a3a6838313861633336393138633361346562b7094e616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a72656d6f76655f656e7472793a3a6836313061306437343137633239363330b80948616c6c6f633a3a636f6c6c656374696f6e733a3a62747265653a3a6d61703a3a42547265654d61703c4b2c563e3a3a696e736572743a3a6833373138336633626130366366303237b9094278636d5f6578656375746f723a3a6173736574733a3a4173736574733a3a74616b655f6e6f6e5f66756e6769626c653a3a6837356334316338373638306363623836ba09095f5f6c736872746933bb094c636f6d70696c65725f6275696c74696e733a3a696e743a3a7370656369616c697a65645f6469765f72656d3a3a753132385f6469765f72656d3a3a6866353635306232313761613464643134bc09095f5f756d6f64746933bd09095f5f75646976746933be09085f5f6d756c746933bf09066d656d637079c009076d656d6d6f7665c109066d656d736574c2090462636d70c309095f5f6173686c74693300550970726f64756365727302086c616e6775616765010452757374000c70726f6365737365642d62790105727573746325312e35322e302d6e696768746c79202865333761313363633320323032312d30322d323829", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0x1405f2411d0af5a7ff397e7c9dc68d19878d434d6125b40443fe11fd292d13a4": "0x00000100", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x084e7f70a295a190e2e33fd3f8cdfcc2878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x5c0d1176a568c1f92944340dbfed9e9c878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x9d0318726f636f636f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xd84ad3579da5beed16cea616d20c3c89878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x5f9cc45b7a00c5899361e1c6099678dc878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xf5207f03cfdce586301014700e2c2593878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x2f85f1e1378cb2d7b83adbaf0b5869c2878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x31a3a2ce3603138b8b352e8f192ca55a878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2371e21684d2fae99bcb4d579242f74a8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x3f1467a096bcd71a5b6a0c8155e20810878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0xd57bce545fb382c34570e5dfbf338f5e878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x1a736d37504c2e3fb73dad160c55b291878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2099d7f109d6e535fb000bba623fd440878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xa8c65209d47ee80f56b0011e8fd91f50878d434d6125b40443fe11fd292d13a4": "0x03000000", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x63f78c98723ddc9073523ef3beefda0c878d434d6125b40443fe11fd292d13a4": "0x0000081e", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6" - }, - "childrenDefault": {} - } - } -} diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs deleted file mode 100644 index 676762b7e536..000000000000 --- a/node/service/src/chain_spec.rs +++ /dev/null @@ -1,1793 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot chain configurations. - -use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use sp_consensus_babe::AuthorityId as BabeId; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use grandpa::AuthorityId as GrandpaId; -#[cfg(feature = "kusama-native")] -use kusama_runtime as kusama; -#[cfg(feature = "kusama-native")] -use kusama_runtime::constants::currency::UNITS as KSM; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use pallet_staking::Forcing; -use polkadot::constants::currency::UNITS as DOT; -use polkadot_primitives::v1::{AccountId, AccountPublic, AssignmentId, ValidatorId}; -use polkadot_runtime as polkadot; - -#[cfg(feature = "rococo-native")] -use rococo_runtime as rococo; -#[cfg(feature = "rococo-native")] -use rococo_runtime::constants::currency::UNITS as ROC; -use sc_chain_spec::{ChainSpecExtension, ChainType}; -use serde::{Deserialize, Serialize}; -use sp_core::{sr25519, Pair, Public}; -use sp_runtime::{traits::IdentifyAccount, Perbill}; -use telemetry::TelemetryEndpoints; -#[cfg(feature = "westend-native")] -use westend_runtime as westend; -#[cfg(feature = "westend-native")] -use westend_runtime::constants::currency::UNITS as WND; - -const POLKADOT_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -#[cfg(feature = "kusama-native")] -const KUSAMA_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -#[cfg(feature = "westend-native")] -const WESTEND_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -#[cfg(feature = "rococo-native")] -const ROCOCO_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -const DEFAULT_PROTOCOL_ID: &str = "dot"; - -/// Node `ChainSpec` extensions. -/// -/// Additional parameters for some Substrate core modules, -/// customizable from the chain spec. -#[derive(Default, Clone, Serialize, Deserialize, ChainSpecExtension)] -#[serde(rename_all = "camelCase")] -pub struct Extensions { - /// Block numbers with known hashes. - pub fork_blocks: sc_client_api::ForkBlocks, - /// Known bad block hashes. - pub bad_blocks: sc_client_api::BadBlocks, -} - -/// The `ChainSpec` parameterized for the polkadot runtime. -pub type PolkadotChainSpec = service::GenericChainSpec; - -/// The `ChainSpec` parameterized for the kusama runtime. -#[cfg(feature = "kusama-native")] -pub type KusamaChainSpec = service::GenericChainSpec; - -/// The `ChainSpec` parameterized for the kusama runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. -#[cfg(not(feature = "kusama-native"))] -pub type KusamaChainSpec = PolkadotChainSpec; - -/// The `ChainSpec` parameterized for the westend runtime. -#[cfg(feature = "westend-native")] -pub type WestendChainSpec = service::GenericChainSpec; - -/// The `ChainSpec` parameterized for the westend runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. -#[cfg(not(feature = "westend-native"))] -pub type WestendChainSpec = PolkadotChainSpec; - -/// The `ChainSpec` parameterized for the rococo runtime. -#[cfg(feature = "rococo-native")] -pub type RococoChainSpec = service::GenericChainSpec; - -/// The `ChainSpec` parameterized for the rococo runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. -#[cfg(not(feature = "rococo-native"))] -pub type RococoChainSpec = PolkadotChainSpec; - -/// Extension for the Rococo genesis config to support a custom changes to the genesis state. -#[derive(serde::Serialize, serde::Deserialize)] -#[cfg(feature = "rococo-native")] -pub struct RococoGenesisExt { - /// The runtime genesis config. - runtime_genesis_config: rococo::GenesisConfig, - /// The session length in blocks. - /// - /// If `None` is supplied, the default value is used. - session_length_in_blocks: Option, -} - -#[cfg(feature = "rococo-native")] -impl sp_runtime::BuildStorage for RococoGenesisExt { - fn assimilate_storage( - &self, - storage: &mut sp_core::storage::Storage, - ) -> Result<(), String> { - sp_state_machine::BasicExternalities::execute_with_storage(storage, || { - if let Some(length) = self.session_length_in_blocks.as_ref() { - rococo::constants::time::EpochDurationInBlocks::set(length); - } - }); - self.runtime_genesis_config.assimilate_storage(storage) - } -} - -pub fn polkadot_config() -> Result { - PolkadotChainSpec::from_json_bytes(&include_bytes!("../res/polkadot.json")[..]) -} - -pub fn kusama_config() -> Result { - KusamaChainSpec::from_json_bytes(&include_bytes!("../res/kusama.json")[..]) -} - -pub fn westend_config() -> Result { - WestendChainSpec::from_json_bytes(&include_bytes!("../res/westend.json")[..]) -} - -pub fn rococo_config() -> Result { - RococoChainSpec::from_json_bytes(&include_bytes!("../res/rococo.json")[..]) -} - -/// This is a temporary testnet that uses the same runtime as rococo. -pub fn wococo_config() -> Result { - RococoChainSpec::from_json_bytes(&include_bytes!("../res/wococo.json")[..]) -} - -/// The default parachains host configuration. -#[cfg(any(feature = "rococo-native", feature = "kusama-native", feature = "westend-native"))] -fn default_parachains_host_configuration() -> - polkadot_runtime_parachains::configuration::HostConfiguration -{ - use polkadot_primitives::v1::{MAX_CODE_SIZE, MAX_POV_SIZE}; - - polkadot_runtime_parachains::configuration::HostConfiguration { - validation_upgrade_frequency: 1u32, - validation_upgrade_delay: 1, - code_retention_period: 1200, - max_code_size: MAX_CODE_SIZE, - max_pov_size: MAX_POV_SIZE, - max_head_data_size: 32 * 1024, - group_rotation_frequency: 20, - chain_availability_period: 4, - thread_availability_period: 4, - max_upward_queue_count: 8, - max_upward_queue_size: 1024 * 1024, - max_downward_message_size: 1024, - // this is approximatelly 4ms. - // - // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with - // an import since that's a made up number and should be replaced with a constant - // obtained by benchmarking anyway. - ump_service_total_weight: 4 * 1_000_000_000, - max_upward_message_size: 1024 * 1024, - max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 5, - hrmp_sender_deposit: 0, - hrmp_recipient_deposit: 0, - hrmp_channel_max_capacity: 8, - hrmp_channel_max_total_size: 8 * 1024, - hrmp_max_parachain_inbound_channels: 4, - hrmp_max_parathread_inbound_channels: 4, - hrmp_channel_max_message_size: 1024 * 1024, - hrmp_max_parachain_outbound_channels: 4, - hrmp_max_parathread_outbound_channels: 4, - hrmp_max_message_num_per_candidate: 5, - dispute_period: 6, - no_show_slots: 2, - n_delay_tranches: 25, - needed_approvals: 2, - relay_vrf_modulo_samples: 2, - zeroth_delay_tranche_width: 0, - ..Default::default() - } -} - -fn polkadot_session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, -) -> polkadot::SessionKeys { - polkadot::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - } -} - -#[cfg(feature = "kusama-native")] -fn kusama_session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, -) -> kusama::SessionKeys { - kusama::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - } -} - -#[cfg(feature = "westend-native")] -fn westend_session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, -) -> westend::SessionKeys { - westend::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - } -} - -#[cfg(feature = "rococo-native")] -fn rococo_session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, - beefy: BeefyId, -) -> rococo_runtime::SessionKeys { - rococo_runtime::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - beefy, - } -} - -fn polkadot_staging_testnet_config_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { - // subkey inspect "$SECRET" - let endowed_accounts = vec![]; - - let initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )> = vec![]; - - const ENDOWMENT: u128 = 1_000_000 * DOT; - const STASH: u128 = 100 * DOT; - - polkadot::GenesisConfig { - system: polkadot::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - balances: polkadot::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k: &AccountId| (k.clone(), ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - }, - indices: polkadot::IndicesConfig { indices: vec![] }, - session: polkadot::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - polkadot_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: polkadot::StakingConfig { - validator_count: 50, - minimum_validator_count: 4, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - polkadot::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::ForceNone, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - phragmen_election: Default::default(), - democracy: Default::default(), - council: polkadot::CouncilConfig { - members: vec![], - phantom: Default::default(), - }, - technical_committee: polkadot::TechnicalCommitteeConfig { - members: vec![], - phantom: Default::default(), - }, - technical_membership: Default::default(), - babe: polkadot::BabeConfig { - authorities: Default::default(), - epoch_config: Some(polkadot::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: polkadot::AuthorityDiscoveryConfig { keys: vec![] }, - claims: polkadot::ClaimsConfig { - claims: vec![], - vesting: vec![], - }, - vesting: polkadot::VestingConfig { vesting: vec![] }, - treasury: Default::default(), - } -} - -#[cfg(feature = "westend-native")] -fn westend_staging_testnet_config_genesis(wasm_binary: &[u8]) -> westend::GenesisConfig { - use hex_literal::hex; - use sp_core::crypto::UncheckedInto; - - // subkey inspect "$SECRET" - let endowed_accounts = vec![ - // 5DaVh5WRfazkGaKhx1jUu6hjz7EmRe4dtW6PKeVLim84KLe8 - hex!["42f4a4b3e0a89c835ee696205caa90dd85c8ea1d7364b646328ee919a6b2fc1e"].into(), - ]; - // SECRET='...' ./scripts/prepare-test-net.sh 4 - let initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )> = vec![( - //5ERCqy118nnXDai8g4t3MjdX7ZC5PrQzQpe9vwex5cELWqbt - hex!["681af4f93073484e1acd6b27395d0d258f1a6b158c808846c8fd05ee2435056e"].into(), - //5GTS114cfQNBgpQULhMaNCPXGds6NokegCnikxDe1vqANhtn - hex!["c2463372598ebabd21ee5bc33e1d7e77f391d2df29ce2fbe6bed0d13be629a45"].into(), - //5FhGbceKeH7fuGogcBwd28ZCkAwDGYBADCTeHiYrvx2ztyRd - hex!["a097bfc6a33499ed843b711f52f523f8a7174f798a9f98620e52f4170dbe2948"].unchecked_into(), - //5Es7nDkJt2by5qVCCD7PZJdp76KJw1LdRCiNst5S5f4eecnz - hex!["7bde49dda82c2c9f082b807ef3ceebff96437d67b3e630c584db7a220ecafacf"].unchecked_into(), - //5D4e8zRjaYzFamqChGPPtu26PcKbKgUrhb7WqcNbKa2RDFUR - hex!["2c2fb730a7d9138e6d62fcf516f9ecc2d712af3f2f03ca330c9564b8c0c1bb33"].unchecked_into(), - //5DD3JY5ENkjcgVFbVSgUbZv7WmrnyJ8bxxu56ee6hZFiRdnh - hex!["3297a8622988cc23dd9c131e3fb8746d49e007f6e58a81d43420cd539e250e4c"].unchecked_into(), - //5Gpodowhud8FG9xENXR5YwTFbUAWyoEtw7sYFytFsG4z7SU6 - hex!["d2932edf775088bd088dc5a112ad867c24cc95858f77f8a1ab014de8d4f96a3f"].unchecked_into(), - //5GUMj8tnjL3PJZgXoiWtgLCaMVNHBNeSeTqDsvcxmaVAjKn9 - hex!["c2fb0f74591a00555a292bc4882d3158bafc4c632124cb60681f164ef81bcf72"].unchecked_into(), - ), - ( - //5HgDCznTkHKUjzPkQoTZGWbvbyqB7sqHDBPDKdF1FyVYM7Er - hex!["f8418f189f84814fd40cc1b2e90873e72ea789487f3b98ed42811ba76d10fc37"].into(), - //5GQTryeFwuvgmZ2tH5ZeAKZHRM9ch5WGVGo6ND9P8f9uMsNY - hex!["c002bb4af4a1bd2f33d104aef8a41878fe1ac94ba007029c4dfdefa8b698d043"].into(), - //5C7YkWSVH1zrpsE5KwW1ua1qatyphzYxiZrL24mjkxz7mUbn - hex!["022b14fbcf65a93b81f453105b9892c3fc4aa74c22c53b4abab019e1d58fbd41"].unchecked_into(), - //5GwFC6Tmg4fhj4PxSqHycgJxi3PDfnC9RGDsNHoRwAvXvpnZ - hex!["d77cafd3b32c8b52b0e2780a586a6e527c94f1bdec117c4e4acb0a491461ffa3"].unchecked_into(), - //5DSVrGURuDuh8Luzo8FYq7o2NWiUSLSN6QAVNrj9BtswWH6R - hex!["3cdb36a5a14715999faffd06c5b9e5dcdc24d4b46bc3e4df1aaad266112a7b49"].unchecked_into(), - //5DLEG2AupawCXGwhJtrzBRc3zAhuP8V662dDrUTzAsCiB9Ec - hex!["38134245c9919ecb20bf2eedbe943b69ba92ceb9eb5477b92b0afd3cb6ce2858"].unchecked_into(), - //5D83o9fDgnHxaKPkSx59hk8zYzqcgzN2mrf7cp8fiVEi7V4E - hex!["2ec917690dc1d676002e3504c530b2595490aa5a4603d9cc579b9485b8d0d854"].unchecked_into(), - //5DwBJquZgncRWXFxj2ydbF8LBUPPUbiq86sXWXgm8Z38m8L2 - hex!["52bae9b8dedb8058dda93ec6f57d7e5a517c4c9f002a4636fada70fed0acf376"].unchecked_into(), - ), - ( - //5DMHpkRpQV7NWJFfn2zQxCLiAKv7R12PWFRPHKKk5X3JkYfP - hex!["38e280b35d08db46019a210a944e4b7177665232ab679df12d6a8bbb317a2276"].into(), - //5FbJpSHmFDe5FN3DVGe1R345ZePL9nhcC9V2Cczxo7q8q6rN - hex!["9c0bc0e2469924d718ae683737f818a47c46b0612376ecca06a2ac059fe1f870"].into(), - //5E5Pm3Udzxy26KGkLE5pc8JPfQrvkYHiaXWtuEfmQsBSgep9 - hex!["58fecadc2df8182a27e999e7e1fd7c99f8ec18f2a81f9a0db38b3653613f3f4d"].unchecked_into(), - //5FxcystSLHtaWoy2HEgRNerj9PrUs452B6AvHVnQZm5ZQmqE - hex!["ac4d0c5e8f8486de05135c10a707f58aa29126d5eb28fdaaba00f9a505f5249d"].unchecked_into(), - //5E7KqVXaVGuAqiqMigpuH8oXHLVh4tmijmpJABLYANpjMkem - hex!["5a781385a0235fe8594dd101ec55ef9ba01883f8563a0cdd37b89e0303f6a578"].unchecked_into(), - //5H9AybjkpyZ79yN5nHuBqs6RKuZPgM7aAVVvTQsDFovgXb2A - hex!["e09570f62a062450d4406b4eb43e7f775ff954e37606646cd590d1818189501f"].unchecked_into(), - //5Ccgs7VwJKBawMbwMENDmj2eFAxhFdGksVHdk8aTAf4w7xox - hex!["1864832dae34df30846d5cc65973f58a2d01b337d094b1284ec3466ecc90251d"].unchecked_into(), - //5EsSaZZ7niJs7hmAtp4QeK19AcAuTp7WXB7N7gRipVooerq4 - hex!["7c1d92535e6d94e21cffea6633a855a7e3c9684cd2f209e5ddbdeaf5111e395b"].unchecked_into(), - ), - ( - //5Ea11qhmGRntQ7pyEkEydbwxvfrYwGMKW6rPERU4UiSBB6rd - hex!["6ed057d2c833c45629de2f14b9f6ce6df1edbf9421b7a638e1fb4828c2bd2651"].into(), - //5CZomCZwPB78BZMZsCiy7WSpkpHhdrN8QTSyjcK3FFEZHBor - hex!["1631ff446b3534d031adfc37b7f7aed26d2a6b3938d10496aab3345c54707429"].into(), - //5CSM6vppouFHzAVPkVFWN76DPRUG7B9qwJe892ccfSfJ8M5f - hex!["108188c43a7521e1abe737b343341c2179a3a89626c7b017c09a5b10df6f1c42"].unchecked_into(), - //5GwkG4std9KcjYi3ThSC7QWfhqokmYVvWEqTU9h7iswjhLnr - hex!["d7de8a43f7ee49fa3b3aaf32fb12617ec9ff7b246a46ab14e9c9d259261117fa"].unchecked_into(), - //5CoUk3wrCGJAWbiJEcsVjYhnd2JAHvR59jBRbSw77YrBtRL1 - hex!["209f680bc501f9b59358efe3636c51fd61238a8659bac146db909aea2595284b"].unchecked_into(), - //5EcSu96wprFM7G2HfJTjYu8kMParnYGznSUNTsoEKXywEsgG - hex!["70adf80395b3f59e4cab5d9da66d5a286a0b6e138652a06f72542e46912df922"].unchecked_into(), - //5Ge3sjpD43Cuy7rNoJQmE9WctgCn6Faw89Pe7xPs3i55eHwJ - hex!["ca5f6b970b373b303f64801a0c2cadc4fc05272c6047a2560a27d0c65589ca1d"].unchecked_into(), - //5EFcjHLvB2z5vd5g63n4gABmhzP5iPsKvTwd8sjfvTehNNrk - hex!["60cae7fa5a079d9fc8061d715fbcc35ef57c3b00005694c2badce22dcc5a9f1b"].unchecked_into(), - )]; - - const ENDOWMENT: u128 = 1_000_000 * WND; - const STASH: u128 = 100 * WND; - - westend::GenesisConfig { - system: westend::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - balances: westend::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k: &AccountId| (k.clone(), ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - }, - indices: westend::IndicesConfig { indices: vec![] }, - session: westend::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - westend_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: westend::StakingConfig { - validator_count: 50, - minimum_validator_count: 4, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - westend::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::ForceNone, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - babe: westend::BabeConfig { - authorities: Default::default(), - epoch_config: Some(westend::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: westend::AuthorityDiscoveryConfig { keys: vec![] }, - vesting: westend::VestingConfig { vesting: vec![] }, - sudo: westend::SudoConfig { - key: endowed_accounts[0].clone(), - }, - parachains_configuration: westend::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - paras: Default::default(), - } -} - -#[cfg(feature = "kusama-native")] -fn kusama_staging_testnet_config_genesis(wasm_binary: &[u8]) -> kusama::GenesisConfig { - use hex_literal::hex; - use sp_core::crypto::UncheckedInto; - - // subkey inspect "$SECRET" - let endowed_accounts = vec![ - // 5CVFESwfkk7NmhQ6FwHCM9roBvr9BGa4vJHFYU8DnGQxrXvz - hex!["12b782529c22032ed4694e0f6e7d486be7daa6d12088f6bc74d593b3900b8438"].into(), - ]; - - // for i in 1 2 3 4; do for j in stash controller; do subkey inspect "$SECRET//$i//$j"; done; done - // for i in 1 2 3 4; do for j in babe; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done - // for i in 1 2 3 4; do for j in grandpa; do subkey --ed25519 inspect "$SECRET//$i//$j"; done; done - // for i in 1 2 3 4; do for j in im_online; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done - // for i in 1 2 3 4; do for j in para_validator para_assignment; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done - let initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )> = vec![ - ( - // 5DD7Q4VEfPTLEdn11CnThoHT5f9xKCrnofWJL5SsvpTghaAT - hex!["32a5718e87d16071756d4b1370c411bbbb947eb62f0e6e0b937d5cbfc0ea633b"].into(), - // 5GNzaEqhrZAtUQhbMe2gn9jBuNWfamWFZHULryFwBUXyd1cG - hex!["bee39fe862c85c91aaf343e130d30b643c6ea0b4406a980206f1df8331f7093b"].into(), - // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 - hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"] - .unchecked_into(), - // 5EjvdwATjyFFikdZibVvx1q5uBHhphS2Mnsq5c7yfaYK25vm - hex!["76620f7c98bce8619979c2b58cf2b0aff71824126d2b039358729dad993223db"] - .unchecked_into(), - // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 - hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"] - .unchecked_into(), - // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 - hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"] - .unchecked_into(), - // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 - hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"] - .unchecked_into(), - // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 - hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"] - .unchecked_into(), - ), - ( - // 5G9VGb8ESBeS8Ca4or43RfhShzk9y7T5iTmxHk5RJsjZwsRx - hex!["b496c98a405ceab59b9e970e59ef61acd7765a19b704e02ab06c1cdfe171e40f"].into(), - // 5F7V9Y5FcxKXe1aroqvPeRiUmmeQwTFcL3u9rrPXcMuMiCNx - hex!["86d3a7571dd60139d297e55d8238d0c977b2e208c5af088f7f0136b565b0c103"].into(), - // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY - hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"] - .unchecked_into(), - // 5HBDAaybNqjmY7ww8ZcZZY1L5LHxvpnyfqJwoB7HhR6raTmG - hex!["e2234d661bee4a04c38392c75d1566200aa9e6ae44dd98ee8765e4cc9af63cb7"] - .unchecked_into(), - // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY - hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"] - .unchecked_into(), - // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY - hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"] - .unchecked_into(), - // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY - hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"] - .unchecked_into(), - // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY - hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"] - .unchecked_into(), - ), - ( - // 5FzwpgGvk2kk9agow6KsywLYcPzjYc8suKej2bne5G5b9YU3 - hex!["ae12f70078a22882bf5135d134468f77301927aa67c376e8c55b7ff127ace115"].into(), - // 5EqoZhVC2BcsM4WjvZNidu2muKAbu5THQTBKe3EjvxXkdP7A - hex!["7addb914ec8486bbc60643d2647685dcc06373401fa80e09813b630c5831d54b"].into(), - // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 - hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"] - .unchecked_into(), - // 5E8ULLQrDAtWhfnVfZmX41Yux86zNAwVJYguWJZVWrJvdhBe - hex!["5b57ed1443c8967f461db1f6eb2ada24794d163a668f1cf9d9ce3235dfad8799"] - .unchecked_into(), - // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 - hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"] - .unchecked_into(), - // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 - hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"] - .unchecked_into(), - // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 - hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"] - .unchecked_into(), - // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 - hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"] - .unchecked_into(), - ), - ( - // 5CFj6Kg9rmVn1vrqpyjau2ztyBzKeVdRKwNPiA3tqhB5HPqq - hex!["0867dbb49721126df589db100dda728dc3b475cbf414dad8f72a1d5e84897252"].into(), - // 5CwQXP6nvWzigFqNhh2jvCaW9zWVzkdveCJY3tz2MhXMjTon - hex!["26ab2b4b2eba2263b1e55ceb48f687bb0018130a88df0712fbdaf6a347d50e2a"].into(), - // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd - hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"] - .unchecked_into(), - // 5HGLmrZsiTFTPp3QoS1W8w9NxByt8PVq79reqvdxNcQkByqK - hex!["e60d23f49e93c1c1f2d7c115957df5bbd7faf5ebf138d1e9d02e8b39a1f63df0"] - .unchecked_into(), - // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd - hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"] - .unchecked_into(), - // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd - hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"] - .unchecked_into(), - // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd - hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"] - .unchecked_into(), - // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd - hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"] - .unchecked_into(), - ), - ]; - - const ENDOWMENT: u128 = 1_000_000 * KSM; - const STASH: u128 = 100 * KSM; - - kusama::GenesisConfig { - system: kusama::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - balances: kusama::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k: &AccountId| (k.clone(), ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - }, - indices: kusama::IndicesConfig { indices: vec![] }, - session: kusama::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - kusama_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: kusama::StakingConfig { - validator_count: 50, - minimum_validator_count: 4, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - kusama::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::ForceNone, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - phragmen_election: Default::default(), - democracy: Default::default(), - council: kusama::CouncilConfig { - members: vec![], - phantom: Default::default(), - }, - technical_committee: kusama::TechnicalCommitteeConfig { - members: vec![], - phantom: Default::default(), - }, - technical_membership: Default::default(), - babe: kusama::BabeConfig { - authorities: Default::default(), - epoch_config: Some(kusama::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: kusama::AuthorityDiscoveryConfig { keys: vec![] }, - claims: kusama::ClaimsConfig { - claims: vec![], - vesting: vec![], - }, - vesting: kusama::VestingConfig { vesting: vec![] }, - treasury: Default::default(), - parachains_configuration: kusama::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - gilt: Default::default(), - paras: Default::default(), - } -} - -#[cfg(feature = "rococo-native")] -fn rococo_staging_testnet_config_genesis(wasm_binary: &[u8]) -> rococo_runtime::GenesisConfig { - use hex_literal::hex; - use sp_core::crypto::UncheckedInto; - - // subkey inspect "$SECRET" - let endowed_accounts = vec![ - // 5FeyRQmjtdHoPH56ASFW76AJEP1yaQC1K9aEMvJTF9nzt9S9 - hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into(), - ]; - - // ./scripts/prepare-test-net.sh 8 - let initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - BeefyId, - )> = vec![ - ( - //5EHZkbp22djdbuMFH9qt1DVzSCvqi3zWpj6DAYfANa828oei - hex!["62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a"].into(), - //5FeSEpi9UYYaWwXXb3tV88qtZkmSdB3mvgj3pXkxKyYLGhcd - hex!["9e6e781a76810fe93187af44c79272c290c2b9e2b8b92ee11466cd79d8023f50"].into(), - //5Fh6rDpMDhM363o1Z3Y9twtaCPfizGQWCi55BSykTQjGbP7H - hex!["a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35"].unchecked_into(), - //5CPd3zoV9Aaah4xWucuDivMHJ2nEEmpdi864nPTiyRZp4t87 - hex!["0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa"].unchecked_into(), - //5F7BEa1LGFksUihyatf3dCDYneB8pWzVyavnByCsm5nBgezi - hex!["86975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743"].unchecked_into(), - //5CP6oGfwqbEfML8efqm1tCZsUgRsJztp9L8ZkEUxA16W8PPz - hex!["0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205"].unchecked_into(), - //5HQdwiDh8Qtd5dSNWajNYpwDvoyNWWA16Y43aEkCNactFc2b - hex!["ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b"].unchecked_into(), - //5HbSgM72xVuscsopsdeG3sCSCYdAeM1Tay9p79N6ky6vwDGq - hex!["f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c"].unchecked_into(), - //5DPSWdgw38Spu315r6LSvYCggeeieBAJtP5A1qzuzKhqmjVu - hex!["034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276"].unchecked_into(), - ), - ( - //5DvH8oEjQPYhzCoQVo7WDU91qmQfLZvxe9wJcrojmJKebCmG - hex!["520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a"].into(), - //5ENZvCRzyXJJYup8bM6yEzb2kQHEb1NDpY2ZEyVGBkCfRdj3 - hex!["6618289af7ae8621981ffab34591e7a6486e12745dfa3fd3b0f7e6a3994c7b5b"].into(), - //5DLjSUfqZVNAADbwYLgRvHvdzXypiV1DAEaDMjcESKTcqMoM - hex!["38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f"].unchecked_into(), - //5HnDVBN9mD6mXyx8oryhDbJtezwNSj1VRXgLoYCBA6uEkiao - hex!["fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d"].unchecked_into(), - //5DhyXZiuB1LvqYKFgT5tRpgGsN3is2cM9QxgW7FikvakbAZP - hex!["48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055"].unchecked_into(), - //5EPEWRecy2ApL5n18n3aHyU1956zXTRqaJpzDa9DoqiggNwF - hex!["669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816"].unchecked_into(), - //5ES3fw5X4bndSgLNmtPfSbM2J1kLqApVB2CCLS4CBpM1UxUZ - hex!["68bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d"].unchecked_into(), - //5HeXbwb5PxtcRoopPZTp5CQun38atn2UudQ8p2AxR5BzoaXw - hex!["f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349"].unchecked_into(), - //5F7nTtN8MyJV4UsXpjg7tHSnfANXZ5KRPJmkASc1ZSH2Xoa5 - hex!["03a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e"].unchecked_into(), - ), - ( - //5FPMzsezo1PRxYbVpJMWK7HNbR2kUxidsAAxH4BosHa4wd6S - hex!["92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f"].into(), - //5G6NQidFG7YiXsvV7hQTLGArir9tsYqD4JDxByhgxKvSKwRx - hex!["b235f57244230589523271c27b8a490922ffd7dccc83b044feaf22273c1dc735"].into(), - //5GpZhzAVg7SAtzLvaAC777pjquPEcNy1FbNUAG2nZvhmd6eY - hex!["d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a"].unchecked_into(), - //5HAes2RQYPbYKbLBfKb88f4zoXv6pPA6Ke8CjN7dob3GpmSP - hex!["e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1"].unchecked_into(), - //5HTXBf36LXmkFWJLokNUK6fPxVpkr2ToUnB1pvaagdGu4c1T - hex!["ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878"].unchecked_into(), - //5FtAGDZYJKXkhVhAxCQrXmaP7EE2mGbBMfmKDHjfYDgq2BiU - hex!["a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037"].unchecked_into(), - //5CtK7JHv3h6UQZ44y54skxdwSVBRtuxwPE1FYm7UZVhg8rJV - hex!["244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e"].unchecked_into(), - //5D4r6YaB6F7A7nvMRHNFNF6zrR9g39bqDJFenrcaFmTCRwfa - hex!["2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d"].unchecked_into(), - //5EPoHj8uV4fFKQHYThc6Z9fDkU7B6ih2ncVzQuDdNFb8UyhF - hex!["039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53"].unchecked_into(), - ), - ( - //5DMNx7RoX6d7JQ38NEM7DWRcW2THu92LBYZEWvBRhJeqcWgR - hex!["38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404"].into(), - //5GGdKNDr9P47dpVnmtq3m8Tvowwf1ot1abw6tPsTYYFoKm2v - hex!["ba0898c1964196474c0be08d364cdf4e9e1d47088287f5235f70b0590dfe1704"].into(), - //5EjkyPCzR2SjhDZq8f7ufsw6TfkvgNRepjCRQFc4TcdXdaB1 - hex!["764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21"].unchecked_into(), - //5DJV3zCBTJBLGNDCcdWrYxWDacSz84goGTa4pFeKVvehEBte - hex!["36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4"].unchecked_into(), - //5FHf8kpK4fPjEJeYcYon2gAPwEBubRvtwpzkUbhMWSweKPUY - hex!["8e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c"].unchecked_into(), - //5F9FsRjpecP9GonktmtFL3kjqNAMKjHVFjyjRdTPa4hbQRZA - hex!["882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b"].unchecked_into(), - //5F1FZWZSj3JyTLs8sRBxU6QWyGLSL9BMRtmSKDmVEoiKFxSP - hex!["821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75"].unchecked_into(), - //5CtgRR74VypK4h154s369abs78hDUxZSJqcbWsfXvsjcHJNA - hex!["2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c"].unchecked_into(), - //5CPx6dsr11SCJHKFkcAQ9jpparS7FwXQBrrMznRo4Hqv1PXz - hex!["0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58"].unchecked_into(), - ), - ( - //5C8AL1Zb4bVazgT3EgDxFgcow1L4SJjVu44XcLC9CrYqFN4N - hex!["02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16"].into(), - //5FLYy3YKsAnooqE4hCudttAsoGKbVG3hYYBtVzwMjJQrevPa - hex!["90cab33f0bb501727faa8319f0845faef7d31008f178b65054b6629fe531b772"].into(), - //5Et3tfbVf1ByFThNAuUq5pBssdaPPskip5yob5GNyUFojXC7 - hex!["7c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813"].unchecked_into(), - //5EX1JBghGbQqWohTPU6msR9qZ2nYPhK9r3RTQ2oD1K8TCxaG - hex!["6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81"].unchecked_into(), - //5GqL8RbVAuNXpDhjQi1KrS1MyNuKhvus2AbmQwRGjpuGZmFu - hex!["d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a"].unchecked_into(), - //5EUNaBpX9mJgcmLQHyG5Pkms6tbDiKuLbeTEJS924Js9cA1N - hex!["6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01"].unchecked_into(), - //5CaZuueRVpMATZG4hkcrgDoF4WGixuz7zu83jeBdY3bgWGaG - hex!["16c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33"].unchecked_into(), - //5DABsdQCDUGuhzVGWe5xXzYQ9rtrVxRygW7RXf9Tsjsw1aGJ - hex!["306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531"].unchecked_into(), - //5H91T5mHhoCw9JJG4NjghDdQyhC6L7XcSuBWKD3q3TAhEVvQ - hex!["02fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6"].unchecked_into(), - ), - ( - //5C8XbDXdMNKJrZSrQURwVCxdNdk8AzG6xgLggbzuA399bBBF - hex!["02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864"].into(), - //5GsyzFP8qtF8tXPSsjhjxAeU1v7D1PZofuQKN9TdCc7Dp1JM - hex!["d4ffc4c05b47d1115ad200f7f86e307b20b46c50e1b72a912ec4f6f7db46b616"].into(), - //5GHWB8ZDzegLcMW7Gdd1BS6WHVwDdStfkkE4G7KjPjZNJBtD - hex!["bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b"].unchecked_into(), - //5GzDPGbUM9uH52ZEwydasTj8edokGUJ7vEpoFWp9FE1YNuFB - hex!["d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33"].unchecked_into(), - //5GWZbVkJEfWZ7fRca39YAQeqri2Z7pkeHyd7rUctUHyQifLp - hex!["c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35"].unchecked_into(), - //5CmLCFeSurRXXtwMmLcVo7sdJ9EqDguvJbuCYDcHkr3cpqyE - hex!["1efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c"].unchecked_into(), - //5DnsSy8a8pfE2aFjKBDtKw7WM1V4nfE5sLzP15MNTka53GqS - hex!["4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22"].unchecked_into(), - //5CZdFnyzZvKetZTeUwj5APAYskVJe4QFiTezo5dQNsrnehGd - hex!["160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a"].unchecked_into(), - //5HgoR9JJkdBusxKrrs3zgd3ToppgNoGj1rDyAJp4e7eZiYyT - hex!["020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474"].unchecked_into(), - ), - ( - //5HinEonzr8MywkqedcpsmwpxKje2jqr9miEwuzyFXEBCvVXM - hex!["fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00"].into(), - //5EHJbj6Td6ks5HDnyfN4ttTSi57osxcQsQexm7XpazdeqtV7 - hex!["62145d721967bd88622d08625f0f5681463c0f1b8bcd97eb3c2c53f7660fd513"].into(), - //5EeCsC58XgJ1DFaoYA1WktEpP27jvwGpKdxPMFjicpLeYu96 - hex!["720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372"].unchecked_into(), - //5DnEySxbnppWEyN8cCLqvGjAorGdLRg2VmkY96dbJ1LHFK8N - hex!["4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14"].unchecked_into(), - //5E1Y1FJ7dVP7qtE3wm241pTm72rTMcDT5Jd8Czv7Pwp7N3AH - hex!["560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651"].unchecked_into(), - //5CAC278tFCHAeHYqE51FTWYxHmeLcENSS1RG77EFRTvPZMJT - hex!["042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f"].unchecked_into(), - //5HjRTLWcQjZzN3JDvaj1UzjNSayg5ZD9ZGWMstaL7Ab2jjAa - hex!["fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f"].unchecked_into(), - //5ELv74v7QcsS6FdzvG4vL2NnYDGWmRnJUSMKYwdyJD7Xcdi7 - hex!["64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f"].unchecked_into(), - //5FaUcPt4fPz93vBhcrCJqmDkjYZ7jCbzAF56QJoCmvPaKrmx - hex!["033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685"].unchecked_into(), - ), - ( - //5Ey3NQ3dfabaDc16NUv7wRLsFCMDFJSqZFzKVycAsWuUC6Di - hex!["8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47"].into(), - //5HiWsuSBqt8nS9pnggexXuHageUifVPKPHDE2arTKqhTp1dV - hex!["fa0388fa88f3f0cb43d583e2571fbc0edad57dff3a6fd89775451dd2c2b8ea00"].into(), - //5H168nKX2Yrfo3bxj7rkcg25326Uv3CCCnKUGK6uHdKMdPt8 - hex!["da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349"].unchecked_into(), - //5DrA2fZdzmNqT5j6DXNwVxPBjDV9jhkAqvjt6Us3bQHKy3cF - hex!["4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc"].unchecked_into(), - //5FNFDUGNLUtqg5LgrwYLNmBiGoP8KRxsvQpBkc7GQP6qaBUG - hex!["92156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66"].unchecked_into(), - //5Gx6YeNhynqn8qkda9QKpc9S7oDr4sBrfAu516d3sPpEt26F - hex!["d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d"].unchecked_into(), - //5DhDcHqwxoes5s89AyudGMjtZXx1nEgrk5P45X88oSTR3iyx - hex!["481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c"].unchecked_into(), - //5DqAvikdpfRdk5rR35ZobZhqaC5bJXZcEuvzGtexAZP1hU3T - hex!["4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26"].unchecked_into(), - //5E41Znrr2YtZu8bZp3nvRuLVHg3jFksfQ3tXuviLku4wsao7 - hex!["025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986"].unchecked_into(), - ), - ]; - - const ENDOWMENT: u128 = 1_000_000 * ROC; - const STASH: u128 = 100 * ROC; - - rococo_runtime::GenesisConfig { - system: rococo_runtime::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - balances: rococo_runtime::BalancesConfig { - balances: endowed_accounts.iter() - .map(|k: &AccountId| (k.clone(), ENDOWMENT)) - .chain(initial_authorities.iter().map(|x| (x.0.clone(), STASH))) - .collect(), - }, - beefy: Default::default(), - indices: rococo_runtime::IndicesConfig { - indices: vec![], - }, - session: rococo_runtime::SessionConfig { - keys: initial_authorities.iter().map(|x| ( - x.0.clone(), - x.0.clone(), - rococo_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - x.8.clone(), - ), - )).collect::>(), - }, - babe: rococo_runtime::BabeConfig { - authorities: Default::default(), - epoch_config: Some(rococo_runtime::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - collective: Default::default(), - membership: Default::default(), - authority_discovery: rococo_runtime::AuthorityDiscoveryConfig { - keys: vec![], - }, - sudo: rococo_runtime::SudoConfig { - key: endowed_accounts[0].clone(), - }, - paras: rococo_runtime::ParasConfig { - paras: vec![], - _phdata: Default::default(), - }, - hrmp: Default::default(), - parachains_configuration: rococo_runtime::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - bridge_rococo_grandpa: rococo_runtime::BridgeRococoGrandpaConfig { - owner: Some(endowed_accounts[0].clone()), - ..Default::default() - }, - bridge_wococo_grandpa: rococo_runtime::BridgeWococoGrandpaConfig { - owner: Some(endowed_accounts[0].clone()), - ..Default::default() - }, - } -} - -/// Polkadot staging testnet config. -pub fn polkadot_staging_testnet_config() -> Result { - let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; - let boot_nodes = vec![]; - - Ok(PolkadotChainSpec::from_genesis( - "Polkadot Staging Testnet", - "polkadot_staging_testnet", - ChainType::Live, - move || polkadot_staging_testnet_config_genesis(wasm_binary), - boot_nodes, - Some( - TelemetryEndpoints::new(vec![(POLKADOT_STAGING_TELEMETRY_URL.to_string(), 0)]) - .expect("Polkadot Staging telemetry url is valid; qed"), - ), - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Staging testnet config. -#[cfg(feature = "kusama-native")] -pub fn kusama_staging_testnet_config() -> Result { - let wasm_binary = kusama::WASM_BINARY.ok_or("Kusama development wasm not available")?; - let boot_nodes = vec![]; - - Ok(KusamaChainSpec::from_genesis( - "Kusama Staging Testnet", - "kusama_staging_testnet", - ChainType::Live, - move || kusama_staging_testnet_config_genesis(wasm_binary), - boot_nodes, - Some( - TelemetryEndpoints::new(vec![(KUSAMA_STAGING_TELEMETRY_URL.to_string(), 0)]) - .expect("Kusama Staging telemetry url is valid; qed"), - ), - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Westend staging testnet config. -#[cfg(feature = "westend-native")] -pub fn westend_staging_testnet_config() -> Result { - let wasm_binary = westend::WASM_BINARY.ok_or("Westend development wasm not available")?; - let boot_nodes = vec![]; - - Ok(WestendChainSpec::from_genesis( - "Westend Staging Testnet", - "westend_staging_testnet", - ChainType::Live, - move || westend_staging_testnet_config_genesis(wasm_binary), - boot_nodes, - Some( - TelemetryEndpoints::new(vec![(WESTEND_STAGING_TELEMETRY_URL.to_string(), 0)]) - .expect("Westend Staging telemetry url is valid; qed"), - ), - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Rococo staging testnet config. -#[cfg(feature = "rococo-native")] -pub fn rococo_staging_testnet_config() -> Result { - let wasm_binary = rococo::WASM_BINARY.ok_or("Rococo development wasm not available")?; - let boot_nodes = vec![]; - - Ok(RococoChainSpec::from_genesis( - "Rococo Staging Testnet", - "rococo_staging_testnet", - ChainType::Live, - move || RococoGenesisExt { - runtime_genesis_config: rococo_staging_testnet_config_genesis(wasm_binary), - session_length_in_blocks: None, - }, - boot_nodes, - Some( - TelemetryEndpoints::new(vec![(ROCOCO_STAGING_TELEMETRY_URL.to_string(), 0)]) - .expect("Rococo Staging telemetry url is valid; qed"), - ), - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -/// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed( - seed: &str, -) -> ( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - BeefyId, -) { - let keys = get_authority_keys_from_seed_no_beefy(seed); - ( - keys.0, keys.1, keys.2, keys.3, keys.4, keys.5, keys.6, keys.7, get_from_seed::(seed) - ) -} - -/// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed_no_beefy( - seed: &str, -) -> ( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, -) { - ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - ) -} - -fn testnet_accounts() -> Vec { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] -} - -/// Helper function to create polkadot GenesisConfig for testing -pub fn polkadot_testnet_genesis( - wasm_binary: &[u8], - initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )>, - _root_key: AccountId, - endowed_accounts: Option>, -) -> polkadot::GenesisConfig { - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); - - const ENDOWMENT: u128 = 1_000_000 * DOT; - const STASH: u128 = 100 * DOT; - - polkadot::GenesisConfig { - system: polkadot::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - indices: polkadot::IndicesConfig { indices: vec![] }, - balances: polkadot::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k| (k.clone(), ENDOWMENT)) - .collect(), - }, - session: polkadot::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - polkadot_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: polkadot::StakingConfig { - minimum_validator_count: 1, - validator_count: 2, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - polkadot::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::NotForcing, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - phragmen_election: Default::default(), - democracy: polkadot::DemocracyConfig::default(), - council: polkadot::CouncilConfig { - members: vec![], - phantom: Default::default(), - }, - technical_committee: polkadot::TechnicalCommitteeConfig { - members: vec![], - phantom: Default::default(), - }, - technical_membership: Default::default(), - babe: polkadot::BabeConfig { - authorities: Default::default(), - epoch_config: Some(polkadot::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: polkadot::AuthorityDiscoveryConfig { keys: vec![] }, - claims: polkadot::ClaimsConfig { - claims: vec![], - vesting: vec![], - }, - vesting: polkadot::VestingConfig { vesting: vec![] }, - treasury: Default::default(), - } -} - -/// Helper function to create kusama GenesisConfig for testing -#[cfg(feature = "kusama-native")] -pub fn kusama_testnet_genesis( - wasm_binary: &[u8], - initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )>, - _root_key: AccountId, - endowed_accounts: Option>, -) -> kusama::GenesisConfig { - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); - - const ENDOWMENT: u128 = 1_000_000 * KSM; - const STASH: u128 = 100 * KSM; - - kusama::GenesisConfig { - system: kusama::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - indices: kusama::IndicesConfig { indices: vec![] }, - balances: kusama::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k| (k.clone(), ENDOWMENT)) - .collect(), - }, - session: kusama::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - kusama_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: kusama::StakingConfig { - minimum_validator_count: 1, - validator_count: 2, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - kusama::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::NotForcing, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - phragmen_election: Default::default(), - democracy: kusama::DemocracyConfig::default(), - council: kusama::CouncilConfig { - members: vec![], - phantom: Default::default(), - }, - technical_committee: kusama::TechnicalCommitteeConfig { - members: vec![], - phantom: Default::default(), - }, - technical_membership: Default::default(), - babe: kusama::BabeConfig { - authorities: Default::default(), - epoch_config: Some(kusama::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: kusama::AuthorityDiscoveryConfig { keys: vec![] }, - claims: kusama::ClaimsConfig { - claims: vec![], - vesting: vec![], - }, - vesting: kusama::VestingConfig { vesting: vec![] }, - treasury: Default::default(), - parachains_configuration: kusama::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - gilt: Default::default(), - paras: Default::default(), - } -} - -/// Helper function to create westend GenesisConfig for testing -#[cfg(feature = "westend-native")] -pub fn westend_testnet_genesis( - wasm_binary: &[u8], - initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )>, - root_key: AccountId, - endowed_accounts: Option>, -) -> westend::GenesisConfig { - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); - - const ENDOWMENT: u128 = 1_000_000 * DOT; - const STASH: u128 = 100 * DOT; - - westend::GenesisConfig { - system: westend::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - indices: westend::IndicesConfig { indices: vec![] }, - balances: westend::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k| (k.clone(), ENDOWMENT)) - .collect(), - }, - session: westend::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - westend_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - ), - ) - }) - .collect::>(), - }, - staking: westend::StakingConfig { - minimum_validator_count: 1, - validator_count: 2, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - westend::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::NotForcing, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - babe: westend::BabeConfig { - authorities: Default::default(), - epoch_config: Some(westend::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - authority_discovery: westend::AuthorityDiscoveryConfig { keys: vec![] }, - vesting: westend::VestingConfig { vesting: vec![] }, - sudo: westend::SudoConfig { key: root_key }, - parachains_configuration: westend::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - paras: Default::default(), - } -} - -/// Helper function to create rococo GenesisConfig for testing -#[cfg(feature = "rococo-native")] -pub fn rococo_testnet_genesis( - wasm_binary: &[u8], - initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - BeefyId, - )>, - root_key: AccountId, - endowed_accounts: Option>, -) -> rococo_runtime::GenesisConfig { - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); - - const ENDOWMENT: u128 = 1_000_000 * DOT; - - rococo_runtime::GenesisConfig { - system: rococo_runtime::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, - beefy: Default::default(), - indices: rococo_runtime::IndicesConfig { - indices: vec![], - }, - balances: rococo_runtime::BalancesConfig { - balances: endowed_accounts.iter().map(|k| (k.clone(), ENDOWMENT)).collect(), - }, - session: rococo_runtime::SessionConfig { - keys: initial_authorities.iter().map(|x| ( - x.0.clone(), - x.0.clone(), - rococo_session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - x.8.clone(), - ), - )).collect::>(), - }, - babe: rococo_runtime::BabeConfig { - authorities: Default::default(), - epoch_config: Some(rococo_runtime::BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - im_online: Default::default(), - collective: Default::default(), - membership: Default::default(), - authority_discovery: rococo_runtime::AuthorityDiscoveryConfig { - keys: vec![], - }, - sudo: rococo_runtime::SudoConfig { key: root_key.clone() }, - parachains_configuration: rococo_runtime::ParachainsConfigurationConfig { - config: default_parachains_host_configuration(), - }, - hrmp: Default::default(), - paras: rococo_runtime::ParasConfig { - paras: vec![], - _phdata: Default::default(), - }, - bridge_rococo_grandpa: rococo_runtime::BridgeRococoGrandpaConfig { - owner: Some(root_key.clone()), - ..Default::default() - }, - bridge_wococo_grandpa: rococo_runtime::BridgeWococoGrandpaConfig { - owner: Some(root_key.clone()), - ..Default::default() - }, - } -} - -fn polkadot_development_config_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { - polkadot_testnet_genesis( - wasm_binary, - vec![get_authority_keys_from_seed_no_beefy("Alice")], - get_account_id_from_seed::("Alice"), - None, - ) -} - -#[cfg(feature = "kusama-native")] -fn kusama_development_config_genesis(wasm_binary: &[u8]) -> kusama::GenesisConfig { - kusama_testnet_genesis( - wasm_binary, - vec![get_authority_keys_from_seed_no_beefy("Alice")], - get_account_id_from_seed::("Alice"), - None, - ) -} - -#[cfg(feature = "westend-native")] -fn westend_development_config_genesis(wasm_binary: &[u8]) -> westend::GenesisConfig { - westend_testnet_genesis( - wasm_binary, - vec![get_authority_keys_from_seed_no_beefy("Alice")], - get_account_id_from_seed::("Alice"), - None, - ) -} - -#[cfg(feature = "rococo-native")] -fn rococo_development_config_genesis(wasm_binary: &[u8]) -> rococo_runtime::GenesisConfig { - rococo_testnet_genesis( - wasm_binary, - vec![get_authority_keys_from_seed("Alice")], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Polkadot development config (single validator Alice) -pub fn polkadot_development_config() -> Result { - let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; - - Ok(PolkadotChainSpec::from_genesis( - "Development", - "dev", - ChainType::Development, - move || polkadot_development_config_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Kusama development config (single validator Alice) -#[cfg(feature = "kusama-native")] -pub fn kusama_development_config() -> Result { - let wasm_binary = kusama::WASM_BINARY.ok_or("Kusama development wasm not available")?; - - Ok(KusamaChainSpec::from_genesis( - "Development", - "kusama_dev", - ChainType::Development, - move || kusama_development_config_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Westend development config (single validator Alice) -#[cfg(feature = "westend-native")] -pub fn westend_development_config() -> Result { - let wasm_binary = westend::WASM_BINARY.ok_or("Westend development wasm not available")?; - - Ok(WestendChainSpec::from_genesis( - "Development", - "westend_dev", - ChainType::Development, - move || westend_development_config_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Rococo development config (single validator Alice) -#[cfg(feature = "rococo-native")] -pub fn rococo_development_config() -> Result { - let wasm_binary = rococo::WASM_BINARY.ok_or("Rococo development wasm not available")?; - - Ok(RococoChainSpec::from_genesis( - "Development", - "rococo_dev", - ChainType::Development, - move || RococoGenesisExt { - runtime_genesis_config: rococo_development_config_genesis(wasm_binary), - // Use 1 minute session length. - session_length_in_blocks: Some(10), - }, - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -/// Wococo development config (single validator Alice) -#[cfg(feature = "rococo-native")] -pub fn wococo_development_config() -> Result { - const WOCOCO_DEV_PROTOCOL_ID: &str = "woco"; - let wasm_binary = rococo::WASM_BINARY.ok_or("Wococo development wasm not available")?; - - Ok(RococoChainSpec::from_genesis( - "Development", - "wococo_dev", - ChainType::Development, - move || RococoGenesisExt { - runtime_genesis_config: rococo_development_config_genesis(wasm_binary), - // Use 1 minute session length. - session_length_in_blocks: Some(10), - }, - vec![], - None, - Some(WOCOCO_DEV_PROTOCOL_ID), - None, - Default::default(), - )) -} - -fn polkadot_local_testnet_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { - polkadot_testnet_genesis( - wasm_binary, - vec![ - get_authority_keys_from_seed_no_beefy("Alice"), - get_authority_keys_from_seed_no_beefy("Bob"), - ], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Polkadot local testnet config (multivalidator Alice + Bob) -pub fn polkadot_local_testnet_config() -> Result { - let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; - - Ok(PolkadotChainSpec::from_genesis( - "Local Testnet", - "local_testnet", - ChainType::Local, - move || polkadot_local_testnet_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -#[cfg(feature = "kusama-native")] -fn kusama_local_testnet_genesis(wasm_binary: &[u8]) -> kusama::GenesisConfig { - kusama_testnet_genesis( - wasm_binary, - vec![ - get_authority_keys_from_seed_no_beefy("Alice"), - get_authority_keys_from_seed_no_beefy("Bob"), - ], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Kusama local testnet config (multivalidator Alice + Bob) -#[cfg(feature = "kusama-native")] -pub fn kusama_local_testnet_config() -> Result { - let wasm_binary = kusama::WASM_BINARY.ok_or("Kusama development wasm not available")?; - - Ok(KusamaChainSpec::from_genesis( - "Kusama Local Testnet", - "kusama_local_testnet", - ChainType::Local, - move || kusama_local_testnet_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -#[cfg(feature = "westend-native")] -fn westend_local_testnet_genesis(wasm_binary: &[u8]) -> westend::GenesisConfig { - westend_testnet_genesis( - wasm_binary, - vec![ - get_authority_keys_from_seed_no_beefy("Alice"), - get_authority_keys_from_seed_no_beefy("Bob"), - ], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Westend local testnet config (multivalidator Alice + Bob) -#[cfg(feature = "westend-native")] -pub fn westend_local_testnet_config() -> Result { - let wasm_binary = westend::WASM_BINARY.ok_or("Westend development wasm not available")?; - - Ok(WestendChainSpec::from_genesis( - "Westend Local Testnet", - "westend_local_testnet", - ChainType::Local, - move || westend_local_testnet_genesis(wasm_binary), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} - -#[cfg(feature = "rococo-native")] -fn rococo_local_testnet_genesis(wasm_binary: &[u8]) -> rococo_runtime::GenesisConfig { - rococo_testnet_genesis( - wasm_binary, - vec![ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - ], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Rococo local testnet config (multivalidator Alice + Bob) -#[cfg(feature = "rococo-native")] -pub fn rococo_local_testnet_config() -> Result { - let wasm_binary = rococo::WASM_BINARY.ok_or("Rococo development wasm not available")?; - - Ok(RococoChainSpec::from_genesis( - "Rococo Local Testnet", - "rococo_local_testnet", - ChainType::Local, - move || RococoGenesisExt { - runtime_genesis_config: rococo_local_testnet_genesis(wasm_binary), - // Use 1 minute session length. - session_length_in_blocks: Some(10), - }, - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - )) -} diff --git a/node/service/src/grandpa_support.rs b/node/service/src/grandpa_support.rs deleted file mode 100644 index bb45709ebbc7..000000000000 --- a/node/service/src/grandpa_support.rs +++ /dev/null @@ -1,568 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot-specific GRANDPA integration utilities. - -use std::sync::Arc; - -use sp_runtime::traits::{Block as BlockT, NumberFor}; -use sp_runtime::generic::BlockId; -use sp_runtime::traits::Header as _; - -#[cfg(feature = "full-node")] -use { - polkadot_primitives::v1::{Hash, Block as PolkadotBlock, Header as PolkadotHeader}, - polkadot_subsystem::messages::ApprovalVotingMessage, - prometheus_endpoint::{self, Registry}, - polkadot_overseer::OverseerHandler, - futures::channel::oneshot, -}; - -/// A custom GRANDPA voting rule that acts as a diagnostic for the approval -/// voting subsystem's desired votes. -/// -/// The practical effect of this voting rule is to implement a fixed delay of -/// blocks and to issue a prometheus metric on the lag behind the head that -/// approval checking would indicate. -#[cfg(feature = "full-node")] -#[derive(Clone)] -pub(crate) struct ApprovalCheckingVotingRule { - checking_lag: Option>, - overseer: OverseerHandler, -} - -#[cfg(feature = "full-node")] -impl ApprovalCheckingVotingRule { - /// Create a new approval checking diagnostic voting rule. - pub fn new(overseer: OverseerHandler, registry: Option<&Registry>) - -> Result - { - Ok(ApprovalCheckingVotingRule { - checking_lag: if let Some(registry) = registry { - Some(prometheus_endpoint::register( - prometheus_endpoint::Gauge::with_opts( - prometheus_endpoint::Opts::new( - "parachain_approval_checking_finality_lag", - "How far behind the head of the chain the Approval Checking protocol wants to vote", - ) - )?, - registry, - )?) - } else { - None - }, - overseer, - }) - } -} - -#[cfg(feature = "full-node")] -#[derive(Debug, PartialEq)] -/// Vote explicitly on the given hash. -enum ParachainVotingRuleTarget { - Explicit((H, N)), - /// Vote on the current target. - Current, - /// Vote on the base target - the minimal possible vote. - Base, -} - -#[cfg(feature = "full-node")] -fn approval_checking_vote_to_grandpa_vote( - approval_checking_vote: Option<(H, N)>, - current_number: N, -) -> ParachainVotingRuleTarget { - match approval_checking_vote { - Some((hash, number)) => if number > current_number { - // respect other voting rule. - ParachainVotingRuleTarget::Current - } else { - ParachainVotingRuleTarget::Explicit((hash, number)) - }, - // If approval-voting chooses 'None', that means we should vote on the base (last round estimate). - None => ParachainVotingRuleTarget::Base, - } -} - -/// The maximum amount of unfinalized blocks we are willing to allow due to approval checking lag. -/// This is a safety net that should be removed at some point in the future. -#[cfg(feature = "full-node")] -const MAX_APPROVAL_CHECKING_FINALITY_LAG: polkadot_primitives::v1::BlockNumber = 50; - -#[cfg(feature = "full-node")] -impl grandpa::VotingRule for ApprovalCheckingVotingRule - where B: sp_blockchain::HeaderBackend + 'static -{ - fn restrict_vote( - &self, - backend: Arc, - base: &PolkadotHeader, - best_target: &PolkadotHeader, - current_target: &PolkadotHeader, - ) -> grandpa::VotingRuleResult { - // Query approval checking and issue metrics. - let mut overseer = self.overseer.clone(); - let checking_lag = self.checking_lag.clone(); - - let best_hash = best_target.hash(); - let best_number = best_target.number.clone(); - let best_header = best_target.clone(); - - let current_hash = current_target.hash(); - let current_number = current_target.number.clone(); - - let base_hash = base.hash(); - let base_number = base.number; - - Box::pin(async move { - let (tx, rx) = oneshot::channel(); - let approval_checking_subsystem_vote = { - overseer.send_msg(ApprovalVotingMessage::ApprovedAncestor( - best_hash, - base_number, - tx, - )).await; - - rx.await.ok().and_then(|v| v) - }; - - let approval_checking_subsystem_lag = approval_checking_subsystem_vote.map_or( - best_number - base_number, - |(_h, n)| best_number - n, - ); - - if let Some(ref checking_lag) = checking_lag { - checking_lag.set(approval_checking_subsystem_lag as _); - } - - let min_vote = { - let diff = best_number.saturating_sub(base_number); - if diff >= MAX_APPROVAL_CHECKING_FINALITY_LAG { - // Catch up to the best, with some extra lag. - let target_number = best_number - MAX_APPROVAL_CHECKING_FINALITY_LAG; - if target_number >= current_number { - Some((current_hash, current_number)) - } else { - walk_backwards_to_target_block(&*backend, target_number, &best_header).ok() - } - } else { - Some((base_hash, base_number)) - } - }; - - let vote = match approval_checking_vote_to_grandpa_vote( - approval_checking_subsystem_vote, - current_number, - ) { - ParachainVotingRuleTarget::Explicit(vote) => { - if min_vote.as_ref().map_or(false, |min| min.1 > vote.1) { - min_vote - } else { - Some(vote) - } - } - ParachainVotingRuleTarget::Current => Some((current_hash, current_number)), - ParachainVotingRuleTarget::Base => min_vote.or(Some((base_hash, base_number))), - }; - - tracing::trace!( - target: "parachain::approval-voting", - ?vote, - ?approval_checking_subsystem_vote, - approval_checking_subsystem_lag, - current_number, - best_number, - base_number, - "GRANDPA: voting based on approved ancestor.", - ); - - vote - }) - } -} - -/// Returns the block hash of the block at the given `target_number` by walking -/// backwards from the given `current_header`. -pub(super) fn walk_backwards_to_target_block( - backend: &B, - target_number: NumberFor, - current_header: &Block::Header, -) -> Result<(Block::Hash, NumberFor), sp_blockchain::Error> -where - Block: BlockT, - B: sp_blockchain::HeaderBackend, -{ - let mut target_hash = current_header.hash(); - let mut target_header = current_header.clone(); - - loop { - if *target_header.number() < target_number { - unreachable!( - "we are traversing backwards from a known block; \ - blocks are stored contiguously; \ - qed" - ); - } - - if *target_header.number() == target_number { - return Ok((target_hash, target_number)); - } - - target_hash = *target_header.parent_hash(); - target_header = backend - .header(BlockId::Hash(target_hash))? - .expect("Header known to exist due to the existence of one of its descendents; qed"); - } -} - -/// A custom GRANDPA voting rule that "pauses" voting (i.e. keeps voting for the -/// same last finalized block) after a given block at height `N` has been -/// finalized and for a delay of `M` blocks, i.e. until the best block reaches -/// `N` + `M`, the voter will keep voting for block `N`. -#[derive(Clone)] -pub(crate) struct PauseAfterBlockFor(pub(crate) N, pub(crate) N); - -impl grandpa::VotingRule for PauseAfterBlockFor> -where - Block: BlockT, - B: sp_blockchain::HeaderBackend, -{ - fn restrict_vote( - &self, - backend: Arc, - base: &Block::Header, - best_target: &Block::Header, - current_target: &Block::Header, - ) -> grandpa::VotingRuleResult { - let aux = || { - // only restrict votes targeting a block higher than the block - // we've set for the pause - if *current_target.number() > self.0 { - // if we're past the pause period (i.e. `self.0 + self.1`) - // then we no longer need to restrict any votes - if *best_target.number() > self.0 + self.1 { - return None; - } - - // if we've finalized the pause block, just keep returning it - // until best number increases enough to pass the condition above - if *base.number() >= self.0 { - return Some((base.hash(), *base.number())); - } - - // otherwise find the target header at the pause block - // to vote on - return walk_backwards_to_target_block(&*backend, self.0, current_target).ok(); - } - - None - }; - - let target = aux(); - - Box::pin(async move { target }) - } -} - -/// GRANDPA hard forks due to borked migration of session keys after a runtime -/// upgrade (at #1491596), the signalled authority set changes were invalid -/// (blank keys) and were impossible to finalize. The authorities for these -/// intermediary pending changes are replaced with a static list comprised of -/// w3f validators and randomly selected validators from the latest session (at -/// #1500988). -#[cfg(feature = "full-node")] -pub(crate) fn kusama_hard_forks() -> Vec<( - grandpa_primitives::SetId, - (Hash, polkadot_primitives::v1::BlockNumber), - grandpa_primitives::AuthorityList, -)> { - use sp_core::crypto::Ss58Codec; - use std::str::FromStr; - - let forks = vec![ - ( - 623, - "01e94e1e7e9cf07b3b0bf4e1717fce7448e5563901c2ef2e3b8e9ecaeba088b1", - 1492283, - ), - ( - 624, - "ddc4323c5e8966844dfaa87e0c2f74ef6b43115f17bf8e4ff38845a62d02b9a9", - 1492436, - ), - ( - 625, - "38ba115b296663e424e32d7b1655cd795719cef4fd7d579271a6d01086cf1628", - 1492586, - ), - ( - 626, - "f3172b6b8497c10fc772f5dada4eeb1f4c4919c97de9de2e1a439444d5a057ff", - 1492955, - ), - ( - 627, - "b26526aea299e9d24af29fdacd5cf4751a663d24894e3d0a37833aa14c58424a", - 1493338, - ), - ( - 628, - "3980d024327d53b8d01ef0d198a052cd058dd579508d8ed6283fe3614e0a3694", - 1493913, - ), - ( - 629, - "31f22997a786c25ee677786373368cae6fd501fd1bc4b212b8e267235c88179d", - 1495083, - ), - ( - 630, - "1c65eb250cf54b466c64f1a4003d1415a7ee275e49615450c0e0525179857eef", - 1497404, - ), - ( - 631, - "9e44116467cc9d7e224e36487bf2cf571698cae16b25f54a7430f1278331fdd8", - 1498598, - ), - ]; - - let authorities = vec![ - "CwjLJ1zPWK5Ao9WChAFp7rWGEgN3AyXXjTRPrqgm5WwBpoS", - "Dp8FHpZTzvoKXztkfrUAkF6xNf6sjVU5ZLZ29NEGUazouou", - "DtK7YfkhNWU6wEPF1dShsFdhtosVAuJPLkoGhKhG1r5LjKq", - "FLnHYBuoyThzqJ45tdb8P6yMLdocM7ir27Pg1AnpYoygm1K", - "FWEfJ5UMghr52UopgYjawAg6hQg3ztbQek75pfeRtLVi8pB", - "ECoLHAu7HKWGTB9od82HAtequYj6hvNHigkGSB9g3ApxAwB", - "GL1Tg3Uppo8GYL9NjKj4dWKcS6tW98REop9G5hpu7HgFwTa", - "ExnjU5LZMktrgtQBE3An6FsQfvaKG1ukxPqwhJydgdgarmY", - "CagLpgCBu5qJqYF2tpFX6BnU4yHvMGSjc7r3Ed1jY3tMbQt", - "DsrtmMsD4ijh3n4uodxPoiW9NZ7v7no5wVvPVj8fL1dfrWB", - "HQB4EctrVR68ozZDyBiRJzLRAEGh1YKgCkAsFjJcegL9RQA", - "H2YTYbXTFkDY1cGnv164ecnDT3hsD2bQXtyiDbcQuXcQZUV", - "H5WL8jXmbkCoEcLfvqJkbLUeGrDFsJiMXkhhRWn3joct1tE", - "DpB37GDrJDYcmg2df2eqsrPKMay1u8hyZ6sQi2FuUiUeNLu", - "FR8yjKRA9MTjvFGK8kfzrdC23Fr6xd7rfBvZXSjAsmuxURE", - "DxHPty3B9fpj3duu6Gc6gCSCAvsydJHJEY5G3oVYT8S5BYJ", - "DbVKC8ZJjevrhqSnZyJMMvmPL7oPPL4ed1roxawYnHVgyin", - "DVJV81kab2J6oTyRJ9T3NCwW2DSrysbWCssvMcE6cwZHnAd", - "Fg4rDAyzoVzf39Zo8JFPo4W314ntNWNwm3shr4xKe8M1fJg", - "GUaNcnAruMVxHGTs7gGpSUpigRJboQYQBBQyPohkFcP6NMH", - "J4BMGF4W9yWiJz4pkhQW73X6QMGpKUzmPppVnqzBCqw5dQq", - "E1cR61L1tdDEop4WdWVqcq1H1x6VqsDpSHvFyUeC41uruVJ", - "GoWLzBsj1f23YtdDpyntnvN1LwXKhF5TEeZvBeTVxofgWGR", - "CwHwmbogSwtRbrkajVBNubPvWmHBGU4bhMido54M9CjuKZD", - "FLT63y9oVXJnyiWMAL4RvWxsQx21Vymw9961Z7NRFmSG7rw", - "FoQ2y6JuHuHTG4rHFL3f2hCxfJMvtrq8wwPWdv8tsdkcyA8", - "D7QQKqqs8ocGorRA12h4QoBSHDia1DkHeXT4eMfjWQ483QH", - "J6z7FP35F9DiiU985bhkDTS3WxyeTBeoo9MtLdLoD3GiWPj", - "EjapydCK25AagodRbDECavHAy8yQY1tmeRhwUXhVWx4cFPv", - "H8admATcRkGCrF1dTDDBCjQDsYjMkuPaN9YwR2mSCj4DWMQ", - "FtHMRU1fxsoswJjBvyCGvECepC7gP2X77QbNpyikYSqqR6k", - "DzY5gwr45GVRUFzRMmeg8iffpqYF47nm3XbJhmjG97FijaE", - "D3HKWAihSUmg8HrfeFrftSwNK7no261yA9RNr3LUUdsuzuJ", - "D82DwwGJGTcSvtB3SmNrZejnSertbPzpkYvDUp3ibScL3ne", - "FTPxLXLQvMDQYFA6VqNLGwWPKhemMYP791XVj8TmDpFuV3b", - "FzGfKmS7N8Z1tvCBU5JH1eBXZQ9pCtRNoMUnNVv38wZNq72", - "GDfm1MyLAQ7Rh8YPtF6FtMweV4hz91zzeDy2sSABNNqAbmg", - "DiVQbq7sozeKp7PXPM1HLFc2m7ih8oepKLRK99oBY3QZak1", - "HErWh7D2RzrjWWB2fTJfcAejD9MJpadeWWZM2Wnk7LiNWfG", - "Es4DbDauYZYyRJbr6VxrhdcM1iufP9GtdBYf3YtSEvdwNyb", - "EBgXT6FaVo4WsN2LmfnB2jnpDFf4zay3E492RGSn6v1tY99", - "Dr9Zg4fxZurexParztL9SezFeHsPwdP8uGgULeRMbk8DDHJ", - "JEnSTZJpLh91cSryptj57RtFxq9xXqf4U5wBH3qoP91ZZhN", - "DqtRkrmtPANa8wrYR7Ce2LxJxk2iNFtiCxv1cXbx54uqdTN", - "GaxmF53xbuTFKopVEseWiaCTa8fC6f99n4YfW8MGPSPYX3s", - "EiCesgkAaighBKMpwFSAUdvwE4mRjBjNmmd5fP6d4FG8DAx", - "HVbwWGUx7kCgUGap1Mfcs37g6JAZ5qsfsM7TsDRcSqvfxmd", - "G45bc8Ajrd6YSXav77gQwjjGoAsR2qiGd1aLzkMy7o1RLwd", - "Cqix2rD93Mdf7ytg8tBavAig2TvhXPgPZ2mejQvkq7qgRPq", - "GpodE2S5dPeVjzHB4Drm8R9rEwcQPtwAspXqCVz1ooFWf5K", - "CwfmfRmzPKLj3ntSCejuVwYmQ1F9iZWY4meQrAVoJ2G8Kce", - "Fhp5NPvutRCJ4Gx3G8vCYGaveGcU3KgTwfrn5Zr8sLSgwVx", - "GeYRRPkyi23wSF3cJGjq82117fKJZUbWsAGimUnzb5RPbB1", - "DzCJ4y5oT611dfKQwbBDVbtCfENTdMCjb4KGMU3Mq6nyUMu", - ]; - - let authorities = authorities - .into_iter() - .map(|address| { - ( - grandpa_primitives::AuthorityId::from_ss58check(address) - .expect("hard fork authority addresses are static and they should be carefully defined; qed."), - 1, - ) - }) - .collect::>(); - - forks - .into_iter() - .map(|(set_id, hash, number)| { - let hash = Hash::from_str(hash) - .expect("hard fork hashes are static and they should be carefully defined; qed."); - - (set_id, (hash, number), authorities.clone()) - }) - .collect() -} - -#[cfg(test)] -mod tests { - use grandpa::VotingRule; - use polkadot_test_client::{ - TestClientBuilder, TestClientBuilderExt, DefaultTestClientBuilderExt, InitPolkadotBlockBuilder, - ClientBlockImportExt, - }; - use sp_blockchain::HeaderBackend; - use sp_runtime::{generic::BlockId, traits::Header}; - use consensus_common::BlockOrigin; - use std::sync::Arc; - use super::{approval_checking_vote_to_grandpa_vote, ParachainVotingRuleTarget}; - - #[test] - fn grandpa_pause_voting_rule_works() { - let _ = env_logger::try_init(); - - let client = Arc::new(TestClientBuilder::new().build()); - - let mut push_blocks = { - let mut client = client.clone(); - - move |n| { - for _ in 0..n { - let block = client.init_polkadot_block_builder().build().unwrap().block; - futures::executor::block_on(client.import(BlockOrigin::Own, block)).unwrap(); - } - } - }; - - let get_header = { - let client = client.clone(); - move |n| client.header(&BlockId::Number(n)).unwrap().unwrap() - }; - - // the rule should filter all votes after block #20 - // is finalized until block #50 is imported. - let voting_rule = super::PauseAfterBlockFor(20, 30); - - // add 10 blocks - push_blocks(10); - assert_eq!(client.info().best_number, 10); - - // we have not reached the pause block - // therefore nothing should be restricted - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &get_header(0), - &get_header(10), - &get_header(10) - )), - None, - ); - - // add 15 more blocks - // best block: #25 - push_blocks(15); - - // we are targeting the pause block, - // the vote should not be restricted - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &get_header(10), - &get_header(20), - &get_header(20) - )), - None, - ); - - // we are past the pause block, votes should - // be limited to the pause block. - let pause_block = get_header(20); - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &get_header(10), - &get_header(21), - &get_header(21) - )), - Some((pause_block.hash(), *pause_block.number())), - ); - - // we've finalized the pause block, so we'll keep - // restricting our votes to it. - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &pause_block, // #20 - &get_header(21), - &get_header(21), - )), - Some((pause_block.hash(), *pause_block.number())), - ); - - // add 30 more blocks - // best block: #55 - push_blocks(30); - - // we're at the last block of the pause, this block - // should still be considered in the pause period - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &pause_block, // #20 - &get_header(50), - &get_header(50), - )), - Some((pause_block.hash(), *pause_block.number())), - ); - - // we're past the pause period, no votes should be filtered - assert_eq!( - futures::executor::block_on(voting_rule.restrict_vote( - client.clone(), - &pause_block, // #20 - &get_header(51), - &get_header(51), - )), - None, - ); - } - - #[test] - fn approval_checking_to_grandpa_rules() { - assert_eq!( - approval_checking_vote_to_grandpa_vote::<(), _>(None, 5), - ParachainVotingRuleTarget::Base, - ); - - assert_eq!( - approval_checking_vote_to_grandpa_vote(Some(("2", 2)), 3), - ParachainVotingRuleTarget::Explicit(("2", 2)), - ); - - assert_eq!( - approval_checking_vote_to_grandpa_vote(Some(("2", 2)), 2), - ParachainVotingRuleTarget::Explicit(("2", 2)), - ); - - assert_eq!( - approval_checking_vote_to_grandpa_vote(Some(("2", 2)), 1), - ParachainVotingRuleTarget::Current, - ); - } -} diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs deleted file mode 100644 index c3bdff911d12..000000000000 --- a/node/service/src/lib.rs +++ /dev/null @@ -1,1243 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot service. Specialized wrapper over substrate service. - -#![deny(unused_results)] - -pub mod chain_spec; -mod grandpa_support; -mod parachains_db; -mod relay_chain_selection; - -#[cfg(feature = "full-node")] -mod overseer; - -#[cfg(feature = "full-node")] -pub use self::overseer::{ - OverseerGen, - OverseerGenArgs, - RealOverseerGen, - create_default_subsystems, -}; - -#[cfg(feature = "full-node")] -use { - tracing::info, - polkadot_network_bridge::RequestMultiplexer, - polkadot_node_core_av_store::Config as AvailabilityConfig, - polkadot_node_core_av_store::Error as AvailabilityError, - polkadot_node_core_approval_voting::Config as ApprovalVotingConfig, - polkadot_node_core_candidate_validation::Config as CandidateValidationConfig, - polkadot_overseer::BlockInfo, - sp_trie::PrefixedMemoryDB, - sc_client_api::ExecutorProvider, - grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}, - sp_runtime::traits::Header as HeaderT, -}; - -#[cfg(feature = "full-node")] -pub use { - sp_blockchain::HeaderBackend, - sp_consensus_babe::BabeApi, - sp_authority_discovery::AuthorityDiscoveryApi, - sc_client_api::AuxStore, - polkadot_primitives::v1::ParachainHost, - polkadot_overseer::{Overseer, OverseerHandler}, -}; -pub use sp_core::traits::SpawnNamed; - -#[cfg(feature = "full-node")] -use polkadot_subsystem::jaeger; - -use std::sync::Arc; -use std::time::Duration; - -use prometheus_endpoint::Registry; -use service::RpcHandlers; -#[cfg(feature = "full-node")] -use telemetry::{Telemetry, TelemetryWorkerHandle}; -use telemetry::TelemetryWorker; - -#[cfg(feature = "rococo-native")] -pub use polkadot_client::RococoExecutor; - -#[cfg(feature = "westend-native")] -pub use polkadot_client::WestendExecutor; - -#[cfg(feature = "kusama-native")] -pub use polkadot_client::KusamaExecutor; - -pub use polkadot_client::{ - PolkadotExecutor, FullBackend, FullClient, AbstractClient, Client, ClientHandle, ExecuteWithClient, - RuntimeApiCollection, -}; -pub use chain_spec::{PolkadotChainSpec, KusamaChainSpec, WestendChainSpec, RococoChainSpec}; -pub use consensus_common::{Proposal, SelectChain, BlockImport, block_validation::Chain}; -pub use polkadot_primitives::v1::{Block, BlockId, CollatorPair, Hash, Id as ParaId}; -pub use sc_client_api::{Backend, ExecutionStrategy, CallExecutor}; -pub use sc_consensus::LongestChain; -pub use sc_executor::NativeExecutionDispatch; -pub use service::{ - Role, PruningMode, TransactionPoolOptions, Error as SubstrateServiceError, RuntimeGenesis, - TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor, - Configuration, ChainSpec, TaskManager, -}; -pub use service::config::{DatabaseConfig, PrometheusConfig}; -pub use sp_api::{ApiRef, Core as CoreApi, ConstructRuntimeApi, ProvideRuntimeApi, StateBackend}; -pub use sp_runtime::traits::{DigestFor, HashFor, NumberFor, Block as BlockT, self as runtime_traits, BlakeTwo256}; - -#[cfg(feature = "kusama-native")] -pub use kusama_runtime; -pub use polkadot_runtime; -#[cfg(feature = "rococo-native")] -pub use rococo_runtime; -#[cfg(feature = "westend-native")] -pub use westend_runtime; - -/// The maximum number of active leaves we forward to the [`Overseer`] on startup. -#[cfg(any(test,feature = "full-node"))] -const MAX_ACTIVE_LEAVES: usize = 4; - -#[derive(thiserror::Error, Debug)] -pub enum Error { - #[error(transparent)] - Io(#[from] std::io::Error), - - #[error(transparent)] - AddrFormatInvalid(#[from] std::net::AddrParseError), - - #[error(transparent)] - Sub(#[from] SubstrateServiceError), - - #[error(transparent)] - Blockchain(#[from] sp_blockchain::Error), - - #[error(transparent)] - Consensus(#[from] consensus_common::Error), - - #[error("Failed to create an overseer")] - Overseer(#[from] polkadot_overseer::SubsystemError), - - #[error(transparent)] - Prometheus(#[from] prometheus_endpoint::PrometheusError), - - #[error(transparent)] - Telemetry(#[from] telemetry::Error), - - #[error(transparent)] - Jaeger(#[from] polkadot_subsystem::jaeger::JaegerError), - - #[cfg(feature = "full-node")] - #[error(transparent)] - Availability(#[from] AvailabilityError), - - #[error("Authorities require the real overseer implementation")] - AuthoritiesRequireRealOverseer, - - #[cfg(feature = "full-node")] - #[error("Creating a custom database is required for validators")] - DatabasePathRequired, -} - -/// Can be called for a `Configuration` to identify which network the configuration targets. -pub trait IdentifyVariant { - /// Returns if this is a configuration for the `Kusama` network. - fn is_kusama(&self) -> bool; - - /// Returns if this is a configuration for the `Westend` network. - fn is_westend(&self) -> bool; - - /// Returns if this is a configuration for the `Rococo` network. - fn is_rococo(&self) -> bool; - - /// Returns if this is a configuration for the `Wococo` test network. - fn is_wococo(&self) -> bool; - - /// Returns true if this configuration is for a development network. - fn is_dev(&self) -> bool; -} - -impl IdentifyVariant for Box { - fn is_kusama(&self) -> bool { - self.id().starts_with("kusama") || self.id().starts_with("ksm") - } - fn is_westend(&self) -> bool { - self.id().starts_with("westend") || self.id().starts_with("wnd") - } - fn is_rococo(&self) -> bool { - self.id().starts_with("rococo") || self.id().starts_with("rco") - } - fn is_wococo(&self) -> bool { - self.id().starts_with("wococo") || self.id().starts_with("wco") - } - fn is_dev(&self) -> bool { - self.id().ends_with("dev") - } -} - -// If we're using prometheus, use a registry with a prefix of `polkadot`. -fn set_prometheus_registry(config: &mut Configuration) -> Result<(), Error> { - if let Some(PrometheusConfig { registry, .. }) = config.prometheus_config.as_mut() { - *registry = Registry::new_custom(Some("polkadot".into()), None)?; - } - - Ok(()) -} - -/// Initialize the `Jeager` collector. The destination must listen -/// on the given address and port for `UDP` packets. -#[cfg(any(test,feature = "full-node"))] -fn jaeger_launch_collector_with_agent(spawner: impl SpawnNamed, config: &Configuration, agent: Option) -> Result<(), Error> { - if let Some(agent) = agent { - let cfg = jaeger::JaegerConfig::builder() - .agent(agent) - .named(&config.network.node_name) - .build(); - - jaeger::Jaeger::new(cfg).launch(spawner)?; - } - Ok(()) -} - -#[cfg(feature = "full-node")] -type FullSelectChain = sc_consensus::LongestChain; -#[cfg(feature = "full-node")] -type FullGrandpaBlockImport = grandpa::GrandpaBlockImport< - FullBackend, Block, FullClient, FullSelectChain ->; - -#[cfg(feature = "light-node")] -type LightBackend = service::TLightBackendWithHash; - -#[cfg(feature = "light-node")] -type LightClient = - service::TLightClientWithBackend; - -#[cfg(feature = "full-node")] -fn new_partial( - config: &mut Configuration, - jaeger_agent: Option, - telemetry_worker_handle: Option, -) -> Result< - service::PartialComponents< - FullClient, FullBackend, FullSelectChain, - consensus_common::DefaultImportQueue>, - sc_transaction_pool::FullPool>, - ( - impl Fn( - polkadot_rpc::DenyUnsafe, - polkadot_rpc::SubscriptionTaskExecutor, - ) -> polkadot_rpc::RpcExtension, - ( - babe::BabeBlockImport< - Block, FullClient, FullGrandpaBlockImport - >, - grandpa::LinkHalf, FullSelectChain>, - babe::BabeLink, - beefy_gadget::notification::BeefySignedCommitmentSender, - ), - grandpa::SharedVoterState, - std::time::Duration, // slot-duration - Option, - ) - >, - Error -> - where - RuntimeApi: ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: - RuntimeApiCollection>, - Executor: NativeExecutionDispatch + 'static, -{ - set_prometheus_registry(config)?; - - - let telemetry = config.telemetry_endpoints.clone() - .filter(|x| !x.is_empty()) - .map(move |endpoints| -> Result<_, telemetry::Error> { - let (worker, mut worker_handle) = if let Some(worker_handle) = telemetry_worker_handle { - (None, worker_handle) - } else { - let worker = TelemetryWorker::new(16)?; - let worker_handle = worker.handle(); - (Some(worker), worker_handle) - }; - let telemetry = worker_handle.new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, task_manager) = - service::new_full_parts::( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - let client = Arc::new(client); - - let telemetry = telemetry - .map(|(worker, telemetry)| { - if let Some(worker) = worker { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - } - telemetry - }); - - jaeger_launch_collector_with_agent(task_manager.spawn_handle(), &*config, jaeger_agent)?; - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = sc_transaction_pool::BasicPool::new_full( - config.transaction_pool.clone(), - config.role.is_authority().into(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - ); - - let grandpa_hard_forks = if config.chain_spec.is_kusama() { - grandpa_support::kusama_hard_forks() - } else { - Vec::new() - }; - - let (grandpa_block_import, grandpa_link) = - grandpa::block_import_with_authority_set_hard_forks( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - grandpa_hard_forks, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let justification_import = grandpa_block_import.clone(); - - let babe_config = babe::Config::get_or_compute(&*client)?; - let (block_import, babe_link) = babe::block_import( - babe_config.clone(), - grandpa_block_import, - client.clone(), - )?; - - let slot_duration = babe_link.config().slot_duration(); - let import_queue = babe::import_queue( - babe_link.clone(), - block_import.clone(), - Some(Box::new(justification_import)), - client.clone(), - select_chain.clone(), - move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - &task_manager.spawn_essential_handle(), - config.prometheus_registry(), - consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()), - telemetry.as_ref().map(|x| x.handle()), - )?; - - let (beefy_link, beefy_commitment_stream) = - beefy_gadget::notification::BeefySignedCommitmentStream::channel(); - - let justification_stream = grandpa_link.justification_stream(); - let shared_authority_set = grandpa_link.shared_authority_set().clone(); - let shared_voter_state = grandpa::SharedVoterState::empty(); - let finality_proof_provider = GrandpaFinalityProofProvider::new_for_service( - backend.clone(), - Some(shared_authority_set.clone()), - ); - - let import_setup = (block_import.clone(), grandpa_link, babe_link.clone(), beefy_link); - let rpc_setup = shared_voter_state.clone(); - - let shared_epoch_changes = babe_link.epoch_changes().clone(); - let slot_duration = babe_config.slot_duration(); - - let rpc_extensions_builder = { - let client = client.clone(); - let keystore = keystore_container.sync_keystore(); - let transaction_pool = transaction_pool.clone(); - let select_chain = select_chain.clone(); - let chain_spec = config.chain_spec.cloned_box(); - - move |deny_unsafe, subscription_executor: polkadot_rpc::SubscriptionTaskExecutor| - -> polkadot_rpc::RpcExtension - { - let deps = polkadot_rpc::FullDeps { - client: client.clone(), - pool: transaction_pool.clone(), - select_chain: select_chain.clone(), - chain_spec: chain_spec.cloned_box(), - deny_unsafe, - babe: polkadot_rpc::BabeDeps { - babe_config: babe_config.clone(), - shared_epoch_changes: shared_epoch_changes.clone(), - keystore: keystore.clone(), - }, - grandpa: polkadot_rpc::GrandpaDeps { - shared_voter_state: shared_voter_state.clone(), - shared_authority_set: shared_authority_set.clone(), - justification_stream: justification_stream.clone(), - subscription_executor: subscription_executor.clone(), - finality_provider: finality_proof_provider.clone(), - }, - beefy: polkadot_rpc::BeefyDeps { - beefy_commitment_stream: beefy_commitment_stream.clone(), - subscription_executor, - }, - }; - - polkadot_rpc::create_full(deps) - } - }; - - Ok(service::PartialComponents { - client, - backend, - task_manager, - keystore_container, - select_chain, - import_queue, - transaction_pool, - other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, telemetry) - }) -} - -#[cfg(feature = "full-node")] -pub struct NewFull { - pub task_manager: TaskManager, - pub client: C, - pub overseer_handler: Option, - pub network: Arc::Hash>>, - pub rpc_handlers: RpcHandlers, - pub backend: Arc, -} - -#[cfg(feature = "full-node")] -impl NewFull { - /// Convert the client type using the given `func`. - pub fn with_client(self, func: impl FnOnce(C) -> NC) -> NewFull { - NewFull { - client: func(self.client), - task_manager: self.task_manager, - overseer_handler: self.overseer_handler, - network: self.network, - rpc_handlers: self.rpc_handlers, - backend: self.backend, - } - } -} - -/// Is this node a collator? -#[cfg(feature = "full-node")] -#[derive(Clone)] -pub enum IsCollator { - /// This node is a collator. - Yes(CollatorPair), - /// This node is not a collator. - No, -} - -#[cfg(feature = "full-node")] -impl std::fmt::Debug for IsCollator { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - use sp_core::Pair; - match self { - IsCollator::Yes(pair) => write!(fmt, "Yes({})", pair.public()), - IsCollator::No => write!(fmt, "No"), - } - } -} - -#[cfg(feature = "full-node")] -impl IsCollator { - /// Is this a collator? - fn is_collator(&self) -> bool { - matches!(self, Self::Yes(_)) - } -} - -/// Returns the active leaves the overseer should start with. -#[cfg(feature = "full-node")] -async fn active_leaves( - select_chain: &sc_consensus::LongestChain, - client: &FullClient, -) -> Result, Error> -where - RuntimeApi: ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: - RuntimeApiCollection>, - Executor: NativeExecutionDispatch + 'static, -{ - let best_block = select_chain.best_chain().await?; - - let mut leaves = select_chain - .leaves() - .await - .unwrap_or_default() - .into_iter() - .filter_map(|hash| { - let number = client.number(hash).ok()??; - - // Only consider leaves that are in maximum an uncle of the best block. - if number < best_block.number().saturating_sub(1) { - return None - } else if hash == best_block.hash() { - return None - }; - - let parent_hash = client.header(&BlockId::Hash(hash)).ok()??.parent_hash; - - Some(BlockInfo { - hash, - parent_hash, - number, - }) - }) - .collect::>(); - - // Sort by block number and get the maximum number of leaves - leaves.sort_by_key(|b| b.number); - - leaves.push(BlockInfo { - hash: best_block.hash(), - parent_hash: *best_block.parent_hash(), - number: *best_block.number(), - }); - - Ok(leaves.into_iter().rev().take(MAX_ACTIVE_LEAVES).collect()) -} - -/// Create a new full node of arbitrary runtime and executor. -/// -/// This is an advanced feature and not recommended for general use. Generally, `build_full` is -/// a better choice. -#[cfg(feature = "full-node")] -pub fn new_full( - mut config: Configuration, - is_collator: IsCollator, - grandpa_pause: Option<(u32, u32)>, - disable_beefy: bool, - jaeger_agent: Option, - telemetry_worker_handle: Option, - program_path: Option, - overseer_gen: OverseerGenerator, -) -> Result>>, Error> - where - RuntimeApi: ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: - RuntimeApiCollection>, - Executor: NativeExecutionDispatch + 'static, - OverseerGenerator: OverseerGen, -{ - let role = config.role.clone(); - let force_authoring = config.force_authoring; - let backoff_authoring_blocks = { - let mut backoff = sc_consensus_slots::BackoffAuthoringOnFinalizedHeadLagging::default(); - - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - // it's a testnet that's in flux, finality has stalled sometimes due - // to operational issues and it's annoying to slow down block - // production to 1 block per hour. - backoff.max_interval = 10; - } - - Some(backoff) - }; - - let disable_grandpa = config.disable_grandpa; - let name = config.network.node_name.clone(); - - let service::PartialComponents { - client, - backend, - mut task_manager, - keystore_container, - select_chain, - import_queue, - transaction_pool, - other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry) - } = new_partial::(&mut config, jaeger_agent, telemetry_worker_handle)?; - - let prometheus_registry = config.prometheus_registry().cloned(); - - let shared_voter_state = rpc_setup; - let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; - - // Note: GrandPa is pushed before the Polkadot-specific protocols. This doesn't change - // anything in terms of behaviour, but makes the logs more consistent with the other - // Substrate nodes. - config.network.extra_sets.push(grandpa::grandpa_peers_set_config()); - - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - config.network.extra_sets.push(beefy_gadget::beefy_peers_set_config()); - } - - { - use polkadot_network_bridge::{peer_sets_info, IsAuthority}; - let is_authority = if role.is_authority() { - IsAuthority::Yes - } else { - IsAuthority::No - }; - config.network.extra_sets.extend(peer_sets_info(is_authority)); - } - - config.network.request_response_protocols.push(sc_finality_grandpa_warp_sync::request_response_config_for_chain( - &config, task_manager.spawn_handle(), backend.clone(), import_setup.1.shared_authority_set().clone(), - )); - let request_multiplexer = { - let (multiplexer, configs) = RequestMultiplexer::new(); - config.network.request_response_protocols.extend(configs); - multiplexer - }; - - let (network, system_rpc_tx, network_starter) = - service::build_network(service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: None, - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - let _ = service::build_offchain_workers( - &config, task_manager.spawn_handle(), client.clone(), network.clone(), - ); - } - - let parachains_db = crate::parachains_db::open_creating( - config.database.path().ok_or(Error::DatabasePathRequired)?.into(), - crate::parachains_db::CacheSizes::default(), - )?; - - let availability_config = AvailabilityConfig { - col_data: crate::parachains_db::REAL_COLUMNS.col_availability_data, - col_meta: crate::parachains_db::REAL_COLUMNS.col_availability_meta, - }; - - let approval_voting_config = ApprovalVotingConfig { - col_data: crate::parachains_db::REAL_COLUMNS.col_approval_data, - slot_duration_millis: slot_duration.as_millis() as u64, - }; - - let candidate_validation_config = CandidateValidationConfig { - artifacts_cache_path: config.database - .path() - .ok_or(Error::DatabasePathRequired)? - .join("pvf-artifacts"), - program_path: match program_path { - None => std::env::current_exe()?, - Some(p) => p, - }, - }; - - let chain_spec = config.chain_spec.cloned_box(); - let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { - config, - backend: backend.clone(), - client: client.clone(), - keystore: keystore_container.sync_keystore(), - network: network.clone(), - rpc_extensions_builder: Box::new(rpc_extensions_builder), - transaction_pool: transaction_pool.clone(), - task_manager: &mut task_manager, - on_demand: None, - remote_blockchain: None, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - let (block_import, link_half, babe_link, beefy_link) = import_setup; - - let overseer_client = client.clone(); - let spawner = task_manager.spawn_handle(); - let active_leaves = futures::executor::block_on( - active_leaves(&select_chain, &*client) - )?; - - let authority_discovery_service = if role.is_authority() || is_collator.is_collator() { - use sc_network::Event; - use futures::StreamExt; - - let authority_discovery_role = if role.is_authority() { - sc_authority_discovery::Role::PublishAndDiscover( - keystore_container.keystore(), - ) - } else { - // don't publish our addresses when we're only a collator - sc_authority_discovery::Role::Discover - }; - let dht_event_stream = network.event_stream("authority-discovery") - .filter_map(|e| async move { match e { - Event::Dht(e) => Some(e), - _ => None, - }}); - let (worker, service) = sc_authority_discovery::new_worker_and_service_with_config( - sc_authority_discovery::WorkerConfig { - publish_non_global_ips: auth_disc_publish_non_global_ips, - ..Default::default() - }, - client.clone(), - network.clone(), - Box::pin(dht_event_stream), - authority_discovery_role, - prometheus_registry.clone(), - ); - - task_manager.spawn_handle().spawn("authority-discovery-worker", worker.run()); - Some(service) - } else { - None - }; - - // we'd say let overseer_handler = authority_discovery_service.map(|authority_discovery_service|, ...), - // but in that case we couldn't use ? to propagate errors - let local_keystore = keystore_container.local_keystore(); - if local_keystore.is_none() { - tracing::info!("Cannot run as validator without local keystore."); - } - - let maybe_params = local_keystore - .and_then(move |k| authority_discovery_service.map(|a| (a, k))); - - let overseer_handler = if let Some((authority_discovery_service, keystore)) = maybe_params { - let (overseer, overseer_handler) = overseer_gen.generate::< - service::SpawnTaskHandle, - FullClient, - >( - OverseerGenArgs { - leaves: active_leaves, - keystore, - runtime_client: overseer_client.clone(), - parachains_db, - availability_config, - approval_voting_config, - network_service: network.clone(), - authority_discovery_service, - request_multiplexer, - registry: prometheus_registry.as_ref(), - spawner, - is_collator, - candidate_validation_config, - } - )?; - let overseer_handler_clone = overseer_handler.clone(); - - task_manager.spawn_essential_handle().spawn_blocking("overseer", Box::pin(async move { - use futures::{pin_mut, select, FutureExt}; - - let forward = polkadot_overseer::forward_events(overseer_client, overseer_handler_clone); - - let forward = forward.fuse(); - let overseer_fut = overseer.run().fuse(); - - pin_mut!(overseer_fut); - pin_mut!(forward); - - select! { - _ = forward => (), - _ = overseer_fut => (), - complete => (), - } - })); - - Some(overseer_handler) - } else { - None - }; - - if role.is_authority() { - let can_author_with = - consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()); - - let proposer = sc_basic_authorship::ProposerFactory::new( - task_manager.spawn_handle(), - client.clone(), - transaction_pool, - prometheus_registry.as_ref(), - telemetry.as_ref().map(|x| x.handle()), - ); - - let client_clone = client.clone(); - let overseer_handler = overseer_handler.as_ref().ok_or(Error::AuthoritiesRequireRealOverseer)?.clone(); - let slot_duration = babe_link.config().slot_duration(); - let babe_config = babe::BabeParams { - keystore: keystore_container.sync_keystore(), - client: client.clone(), - select_chain, - block_import, - env: proposer, - sync_oracle: network.clone(), - justification_sync_link: network.clone(), - create_inherent_data_providers: move |parent, ()| { - let client_clone = client_clone.clone(); - let overseer_handler = overseer_handler.clone(); - async move { - let parachain = polkadot_node_core_parachains_inherent::ParachainsInherentDataProvider::create( - &*client_clone, - overseer_handler, - parent, - ).await.map_err(|e| Box::new(e))?; - - let uncles = sc_consensus_uncles::create_uncles_inherent_data_provider( - &*client_clone, - parent, - )?; - - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot, uncles, parachain)) - } - }, - force_authoring, - backoff_authoring_blocks, - babe_link, - can_author_with, - block_proposal_slot_portion: babe::SlotProportion::new(2f32 / 3f32), - max_block_proposal_slot_portion: None, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - let babe = babe::start_babe(babe_config)?; - task_manager.spawn_essential_handle().spawn_blocking("babe", babe); - } - - // if the node isn't actively participating in consensus then it doesn't - // need a keystore, regardless of which protocol we use below. - let keystore_opt = if role.is_authority() { - Some(keystore_container.sync_keystore()) - } else { - None - }; - - // We currently only run the BEEFY gadget on the Rococo and Wococo testnets. - if !disable_beefy && (chain_spec.is_rococo() || chain_spec.is_wococo()) { - let beefy_params = beefy_gadget::BeefyParams { - client: client.clone(), - backend: backend.clone(), - key_store: keystore_opt.clone(), - network: network.clone(), - signed_commitment_sender: beefy_link, - min_block_delta: if chain_spec.is_wococo() { 4 } else { 8 }, - prometheus_registry: prometheus_registry.clone(), - }; - - let gadget = beefy_gadget::start_beefy_gadget::<_, _, _, _>( - beefy_params - ); - - // Wococo's purpose is to be a testbed for BEEFY, so if it fails we'll - // bring the node down with it to make sure it is noticed. - if chain_spec.is_wococo() { - task_manager.spawn_essential_handle().spawn_blocking("beefy-gadget", gadget); - } else { - task_manager.spawn_handle().spawn_blocking("beefy-gadget", gadget); - } - } - - let config = grandpa::Config { - // FIXME substrate#1578 make this available through chainspec - gossip_duration: Duration::from_millis(1000), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: keystore_opt, - local_role: role, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - let enable_grandpa = !disable_grandpa; - if enable_grandpa { - // start the full GRANDPA voter - // NOTE: unlike in substrate we are currently running the full - // GRANDPA voter protocol for all full nodes (regardless of whether - // they're validators or not). at this point the full voter should - // provide better guarantees of block and vote data availability than - // the observer. - - // add a custom voting rule to temporarily stop voting for new blocks - // after the given pause block is finalized and restarting after the - // given delay. - let builder = grandpa::VotingRulesBuilder::default(); - // we should enable approval checking voting rule before we deploy parachains on polkadot - let enable_approval_checking_voting_rule = chain_spec.is_kusama() - || chain_spec.is_westend() - || chain_spec.is_rococo() - || chain_spec.is_wococo() - || chain_spec.is_dev(); - - let builder = if let Some(ref overseer) = overseer_handler { - if enable_approval_checking_voting_rule { - builder.add(grandpa_support::ApprovalCheckingVotingRule::new( - overseer.clone(), - prometheus_registry.as_ref(), - )?) - } else { - builder - } - } else { - builder - }; - - let voting_rule = match grandpa_pause { - Some((block, delay)) => { - info!( - block_number = %block, - delay = %delay, - "GRANDPA scheduled voting pause set for block #{} with a duration of {} blocks.", - block, - delay, - ); - - builder - .add(grandpa_support::PauseAfterBlockFor(block, delay)) - .build() - } - None => builder.build(), - }; - - let grandpa_config = grandpa::GrandpaParams { - config, - link: link_half, - network: network.clone(), - voting_rule, - prometheus_registry: prometheus_registry.clone(), - shared_voter_state, - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_essential_handle().spawn_blocking( - "grandpa-voter", - grandpa::run_grandpa_voter(grandpa_config)? - ); - } - - network_starter.start_network(); - - Ok(NewFull { - task_manager, - client, - overseer_handler, - network, - rpc_handlers, - backend, - }) -} - -/// Builds a new service for a light client. -#[cfg(feature = "light-node")] -fn new_light(mut config: Configuration) -> Result<( - TaskManager, - RpcHandlers, -), Error> - where - Runtime: 'static + Send + Sync + ConstructRuntimeApi>, - >>::RuntimeApi: - RuntimeApiCollection>, - Dispatch: NativeExecutionDispatch + 'static, -{ - set_prometheus_registry(&mut config)?; - use sc_client_api::backend::RemoteBackend; - - let telemetry = config.telemetry_endpoints.clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, mut task_manager, on_demand) = - service::new_light_parts::( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - - let mut telemetry = telemetry - .map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - config.network.extra_sets.push(grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, grandpa_link) = grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - telemetry.as_ref().map(|x| x.handle()), - )?; - let justification_import = grandpa_block_import.clone(); - - let (babe_block_import, babe_link) = babe::block_import( - babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - )?; - - // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. - let slot_duration = babe_link.config().slot_duration(); - let import_queue = babe::import_queue( - babe_link, - babe_block_import, - Some(Box::new(justification_import)), - client.clone(), - select_chain.clone(), - move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - &task_manager.spawn_essential_handle(), - config.prometheus_registry(), - consensus_common::NeverCanAuthor, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let (network, system_rpc_tx, network_starter) = - service::build_network(service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - })?; - - let enable_grandpa = !config.disable_grandpa; - if enable_grandpa { - let name = config.network.node_name.clone(); - - let config = grandpa::Config { - gossip_duration: Duration::from_millis(1000), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: None, - local_role: config.role.clone(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_handle().spawn_blocking( - "grandpa-observer", - grandpa::run_grandpa_observer(config, grandpa_link, network.clone())?, - ); - } - - if config.offchain_worker.enabled { - let _ = service::build_offchain_workers( - &config, - task_manager.spawn_handle(), - client.clone(), - network.clone(), - ); - } - - let light_deps = polkadot_rpc::LightDeps { - remote_blockchain: backend.remote_blockchain(), - fetcher: on_demand.clone(), - client: client.clone(), - pool: transaction_pool.clone(), - }; - - let rpc_extensions = polkadot_rpc::create_light(light_deps); - - let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { - on_demand: Some(on_demand), - remote_blockchain: Some(backend.remote_blockchain()), - rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)), - task_manager: &mut task_manager, - config, - keystore: keystore_container.sync_keystore(), - backend, - transaction_pool, - client, - network, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - network_starter.start_network(); - - Ok((task_manager, rpc_handlers)) -} - -/// Builds a new object suitable for chain operations. -#[cfg(feature = "full-node")] -pub fn new_chain_ops( - mut config: &mut Configuration, - jaeger_agent: Option, -) -> Result< - ( - Arc, - Arc, - consensus_common::import_queue::BasicQueue>, - TaskManager, - ), - Error -> -{ - config.keystore = service::config::KeystoreConfig::InMemory; - - #[cfg(feature = "rococo-native")] - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } - = new_partial::(config, jaeger_agent, None)?; - return Ok((Arc::new(Client::Rococo(client)), backend, import_queue, task_manager)) - } - - #[cfg(feature = "kusama-native")] - if config.chain_spec.is_kusama() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } - = new_partial::(config, jaeger_agent, None)?; - return Ok((Arc::new(Client::Kusama(client)), backend, import_queue, task_manager)) - } - - #[cfg(feature = "westend-native")] - if config.chain_spec.is_westend() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } - = new_partial::(config, jaeger_agent, None)?; - return Ok((Arc::new(Client::Westend(client)), backend, import_queue, task_manager)) - } - - let service::PartialComponents { client, backend, import_queue, task_manager, .. } - = new_partial::(config, jaeger_agent, None)?; - Ok((Arc::new(Client::Polkadot(client)), backend, import_queue, task_manager)) -} - - -/// Build a new light node. -#[cfg(feature = "light-node")] -pub fn build_light(config: Configuration) -> Result<( - TaskManager, - RpcHandlers, -), Error> { - #[cfg(feature = "rococo-native")] - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - return new_light::(config) - } - - #[cfg(feature = "kusama-native")] - if config.chain_spec.is_kusama() { - return new_light::(config) - } - - #[cfg(feature = "westend-native")] - if config.chain_spec.is_westend() { - return new_light::(config) - } - - new_light::(config) -} - -#[cfg(feature = "full-node")] -pub fn build_full( - config: Configuration, - is_collator: IsCollator, - grandpa_pause: Option<(u32, u32)>, - disable_beefy: bool, - jaeger_agent: Option, - telemetry_worker_handle: Option, - overseer_gen: impl OverseerGen, -) -> Result, Error> { - #[cfg(feature = "rococo-native")] - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - return new_full::( - config, - is_collator, - grandpa_pause, - disable_beefy, - jaeger_agent, - telemetry_worker_handle, - None, - overseer_gen, - ).map(|full| full.with_client(Client::Rococo)) - } - - #[cfg(feature = "kusama-native")] - if config.chain_spec.is_kusama() { - return new_full::( - config, - is_collator, - grandpa_pause, - disable_beefy, - jaeger_agent, - telemetry_worker_handle, - None, - overseer_gen, - ).map(|full| full.with_client(Client::Kusama)) - } - - #[cfg(feature = "westend-native")] - if config.chain_spec.is_westend() { - return new_full::( - config, - is_collator, - grandpa_pause, - disable_beefy, - jaeger_agent, - telemetry_worker_handle, - None, - overseer_gen, - ).map(|full| full.with_client(Client::Westend)) - } - - new_full::( - config, - is_collator, - grandpa_pause, - disable_beefy, - jaeger_agent, - telemetry_worker_handle, - None, - overseer_gen, - ).map(|full| full.with_client(Client::Polkadot)) -} diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs deleted file mode 100644 index 968240074b8d..000000000000 --- a/node/service/src/overseer.rs +++ /dev/null @@ -1,280 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::{ - Error, - Registry, - IsCollator, - Block, - SpawnNamed, - Hash, - AuthorityDiscoveryApi, -}; -use std::sync::Arc; -use polkadot_network_bridge::RequestMultiplexer; -use polkadot_node_core_av_store::Config as AvailabilityConfig; -use polkadot_node_core_approval_voting::Config as ApprovalVotingConfig; -use polkadot_node_core_candidate_validation::Config as CandidateValidationConfig; -use polkadot_overseer::{AllSubsystems, BlockInfo, Overseer, OverseerHandler}; -use polkadot_primitives::v1::ParachainHost; -use sc_authority_discovery::Service as AuthorityDiscoveryService; -use sp_api::ProvideRuntimeApi; -use sp_blockchain::HeaderBackend; -use sc_client_api::AuxStore; -use sc_keystore::LocalKeystore; -use sp_consensus_babe::BabeApi; - -pub use polkadot_availability_distribution::AvailabilityDistributionSubsystem; -pub use polkadot_node_core_av_store::AvailabilityStoreSubsystem; -pub use polkadot_availability_bitfield_distribution::BitfieldDistribution as BitfieldDistributionSubsystem; -pub use polkadot_node_core_bitfield_signing::BitfieldSigningSubsystem; -pub use polkadot_node_core_backing::CandidateBackingSubsystem; -pub use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; -pub use polkadot_node_core_chain_api::ChainApiSubsystem; -pub use polkadot_node_collation_generation::CollationGenerationSubsystem; -pub use polkadot_collator_protocol::{CollatorProtocolSubsystem, ProtocolSide}; -pub use polkadot_network_bridge::NetworkBridge as NetworkBridgeSubsystem; -pub use polkadot_node_core_provisioner::ProvisioningSubsystem as ProvisionerSubsystem; -pub use polkadot_node_core_runtime_api::RuntimeApiSubsystem; -pub use polkadot_statement_distribution::StatementDistribution as StatementDistributionSubsystem; -pub use polkadot_availability_recovery::AvailabilityRecoverySubsystem; -pub use polkadot_approval_distribution::ApprovalDistribution as ApprovalDistributionSubsystem; -pub use polkadot_node_core_approval_voting::ApprovalVotingSubsystem; -pub use polkadot_gossip_support::GossipSupport as GossipSupportSubsystem; - -/// Arguments passed for overseer construction. -pub struct OverseerGenArgs<'a, Spawner, RuntimeClient> where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, -{ - /// Set of initial relay chain leaves to track. - pub leaves: Vec, - /// The keystore to use for i.e. validator keys. - pub keystore: Arc, - /// Runtime client generic, providing the `ProvieRuntimeApi` trait besides others. - pub runtime_client: Arc, - /// The underlying key value store for the parachains. - pub parachains_db: Arc, - /// Configuration for the availability store subsystem. - pub availability_config: AvailabilityConfig, - /// Configuration for the approval voting subsystem. - pub approval_voting_config: ApprovalVotingConfig, - /// Underlying network service implementation. - pub network_service: Arc>, - /// Underlying authority discovery service. - pub authority_discovery_service: AuthorityDiscoveryService, - /// A multiplexer to arbitrate incoming `IncomingRequest`s from the network. - pub request_multiplexer: RequestMultiplexer, - /// Prometheus registry, commonly used for production systems, less so for test. - pub registry: Option<&'a Registry>, - /// Task spawner to be used throughout the overseer and the APIs it provides. - pub spawner: Spawner, - /// Determines the behavior of the collator. - pub is_collator: IsCollator, - /// Configuration for the candidate validation subsystem. - pub candidate_validation_config: CandidateValidationConfig, -} - -/// Create a default, unaltered set of subsystems. -/// -/// A convenience for usage with malus, to avoid -/// repetitive code across multiple behavior strain implementations. -pub fn create_default_subsystems<'a, Spawner, RuntimeClient> -( - OverseerGenArgs { - keystore, - runtime_client, - parachains_db, - availability_config, - approval_voting_config, - network_service, - authority_discovery_service, - request_multiplexer, - registry, - spawner, - is_collator, - candidate_validation_config, - .. - } : OverseerGenArgs<'a, Spawner, RuntimeClient> -) -> Result< - AllSubsystems< - CandidateValidationSubsystem, - CandidateBackingSubsystem, - StatementDistributionSubsystem, - AvailabilityDistributionSubsystem, - AvailabilityRecoverySubsystem, - BitfieldSigningSubsystem, - BitfieldDistributionSubsystem, - ProvisionerSubsystem, - RuntimeApiSubsystem, - AvailabilityStoreSubsystem, - NetworkBridgeSubsystem>, AuthorityDiscoveryService>, - ChainApiSubsystem, - CollationGenerationSubsystem, - CollatorProtocolSubsystem, - ApprovalDistributionSubsystem, - ApprovalVotingSubsystem, - GossipSupportSubsystem, ->, - Error -> -where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin -{ - use polkadot_node_subsystem_util::metrics::Metrics; - - let all_subsystems = AllSubsystems { - availability_distribution: AvailabilityDistributionSubsystem::new( - keystore.clone(), - Metrics::register(registry)?, - ), - availability_recovery: AvailabilityRecoverySubsystem::with_chunks_only( - ), - availability_store: AvailabilityStoreSubsystem::new( - parachains_db.clone(), - availability_config, - Metrics::register(registry)?, - ), - bitfield_distribution: BitfieldDistributionSubsystem::new( - Metrics::register(registry)?, - ), - bitfield_signing: BitfieldSigningSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - ), - candidate_backing: CandidateBackingSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - ), - candidate_validation: CandidateValidationSubsystem::with_config( - candidate_validation_config, - Metrics::register(registry)?, - ), - chain_api: ChainApiSubsystem::new( - runtime_client.clone(), - Metrics::register(registry)?, - ), - collation_generation: CollationGenerationSubsystem::new( - Metrics::register(registry)?, - ), - collator_protocol: { - let side = match is_collator { - IsCollator::Yes(collator_pair) => ProtocolSide::Collator( - network_service.local_peer_id().clone(), - collator_pair, - Metrics::register(registry)?, - ), - IsCollator::No => ProtocolSide::Validator { - keystore: keystore.clone(), - eviction_policy: Default::default(), - metrics: Metrics::register(registry)?, - }, - }; - CollatorProtocolSubsystem::new( - side, - ) - }, - network_bridge: NetworkBridgeSubsystem::new( - network_service.clone(), - authority_discovery_service, - request_multiplexer, - Box::new(network_service.clone()), - Metrics::register(registry)?, - ), - provisioner: ProvisionerSubsystem::new( - spawner.clone(), - (), - Metrics::register(registry)?, - ), - runtime_api: RuntimeApiSubsystem::new( - runtime_client.clone(), - Metrics::register(registry)?, - spawner.clone(), - ), - statement_distribution: StatementDistributionSubsystem::new( - keystore.clone(), - Metrics::register(registry)?, - ), - approval_distribution: ApprovalDistributionSubsystem::new( - Metrics::register(registry)?, - ), - approval_voting: ApprovalVotingSubsystem::with_config( - approval_voting_config, - parachains_db, - keystore.clone(), - Box::new(network_service.clone()), - Metrics::register(registry)?, - ), - gossip_support: GossipSupportSubsystem::new( - keystore.clone(), - ), - }; - Ok(all_subsystems) -} - - -/// Trait for the `fn` generating the overseer. -/// -/// Default behavior is to create an unmodified overseer, as `RealOverseerGen` -/// would do. -pub trait OverseerGen { - /// Overwrite the full generation of the overseer, including the subsystems. - fn generate<'a, Spawner, RuntimeClient>(&self, args: OverseerGenArgs<'a, Spawner, RuntimeClient>) -> Result<(Overseer>, OverseerHandler), Error> - where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin { - let gen = RealOverseerGen; - RealOverseerGen::generate::(&gen, args) - } - // It would be nice to make `create_subsystems` part of this trait, - // but the amount of generic arguments that would be required as - // as consequence make this rather annoying to implement and use. -} - -/// The regular set of subsystems. -pub struct RealOverseerGen; - -impl OverseerGen for RealOverseerGen { - fn generate<'a, Spawner, RuntimeClient>(&self, - args : OverseerGenArgs<'a, Spawner, RuntimeClient> - ) -> Result<(Overseer>, OverseerHandler), Error> - where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin - { - let spawner = args.spawner.clone(); - let leaves = args.leaves.clone(); - let runtime_client = args.runtime_client.clone(); - let registry = args.registry.clone(); - - let all_subsystems = create_default_subsystems::(args)?; - - Overseer::new( - leaves, - all_subsystems, - registry, - runtime_client, - spawner, - ).map_err(|e| e.into()) - } -} diff --git a/node/service/src/parachains_db/mod.rs b/node/service/src/parachains_db/mod.rs deleted file mode 100644 index c9c86fad964b..000000000000 --- a/node/service/src/parachains_db/mod.rs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -//! A RocksDB instance for storing parachain data; availability data, and approvals. - -#[cfg(feature = "full-node")] -use { - std::io, - std::path::PathBuf, - std::sync::Arc, - - kvdb::KeyValueDB, -}; - -mod upgrade; - -#[cfg(any(test,feature = "full-node"))] -mod columns { - pub const NUM_COLUMNS: u32 = 3; - - - pub const COL_AVAILABILITY_DATA: u32 = 0; - pub const COL_AVAILABILITY_META: u32 = 1; - pub const COL_APPROVAL_DATA: u32 = 2; -} - -/// Columns used by different subsystems. -#[cfg(any(test,feature = "full-node"))] -#[derive(Debug, Clone)] -pub struct ColumnsConfig { - /// The column used by the av-store for data. - pub col_availability_data: u32, - /// The column used by the av-store for meta information. - pub col_availability_meta: u32, - /// The column used by approval voting for data. - pub col_approval_data: u32, -} - -/// The real columns used by the parachains DB. -#[cfg(any(test,feature = "full-node"))] -pub const REAL_COLUMNS: ColumnsConfig = ColumnsConfig { - col_availability_data: columns::COL_AVAILABILITY_DATA, - col_availability_meta: columns::COL_AVAILABILITY_META, - col_approval_data: columns::COL_APPROVAL_DATA, -}; - -/// The cache size for each column, in megabytes. -#[derive(Debug, Clone)] -pub struct CacheSizes { - /// Cache used by availability data. - pub availability_data: usize, - /// Cache used by availability meta. - pub availability_meta: usize, - /// Cache used by approval data. - pub approval_data: usize, -} - -impl Default for CacheSizes { - fn default() -> Self { - CacheSizes { - availability_data: 25, - availability_meta: 1, - approval_data: 5, - } - } -} - -#[cfg(feature = "full-node")] -fn other_io_error(err: String) -> io::Error { - io::Error::new(io::ErrorKind::Other, err) -} - -/// Open the database on disk, creating it if it doesn't exist. -#[cfg(feature = "full-node")] -pub fn open_creating( - root: PathBuf, - cache_sizes: CacheSizes, -) -> io::Result> { - use kvdb_rocksdb::{DatabaseConfig, Database}; - - let path = root.join("parachains").join("db"); - - let mut db_config = DatabaseConfig::with_columns(columns::NUM_COLUMNS); - - let _ = db_config.memory_budget - .insert(columns::COL_AVAILABILITY_DATA, cache_sizes.availability_data); - let _ = db_config.memory_budget - .insert(columns::COL_AVAILABILITY_META, cache_sizes.availability_meta); - let _ = db_config.memory_budget - .insert(columns::COL_APPROVAL_DATA, cache_sizes.approval_data); - - let path_str = path.to_str().ok_or_else(|| other_io_error( - format!("Bad database path: {:?}", path), - ))?; - - std::fs::create_dir_all(&path_str)?; - upgrade::try_upgrade_db(&path)?; - let db = Database::open(&db_config, &path_str)?; - - Ok(Arc::new(db)) -} diff --git a/node/service/src/parachains_db/upgrade.rs b/node/service/src/parachains_db/upgrade.rs deleted file mode 100644 index 6cf47b80cea9..000000000000 --- a/node/service/src/parachains_db/upgrade.rs +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -//! Migration code for the parachain's DB. - - -#![cfg(feature = "full-node")] - -use std::fs; -use std::io; -use std::path::{Path, PathBuf}; -use std::str::FromStr; - -type Version = u32; - -/// Version file name. -const VERSION_FILE_NAME: &'static str = "parachain_db_version"; - -/// Current db version. -const CURRENT_VERSION: Version = 0; - -#[derive(thiserror::Error, Debug)] -pub enum Error { - #[error("I/O error when reading/writing the version")] - Io(#[from] io::Error), - #[error("The version file format is incorrect")] - CorruptedVersionFile, - #[error("Future version (expected {current:?}, found {got:?})")] - FutureVersion { - current: Version, - got: Version, - }, -} - -impl From for io::Error { - fn from(me: Error) -> io::Error { - match me { - Error::Io(e) => e, - _ => super::other_io_error(me.to_string()), - } - } -} - -/// Try upgrading parachain's database to the current version. -pub fn try_upgrade_db(db_path: &Path) -> Result<(), Error> { - let is_empty = db_path.read_dir().map_or(true, |mut d| d.next().is_none()); - if !is_empty { - match current_version(db_path)? { - CURRENT_VERSION => (), - v => return Err(Error::FutureVersion { - current: CURRENT_VERSION, - got: v, - }), - } - } - - update_version(db_path) -} - -/// Reads current database version from the file at given path. -/// If the file does not exist, assumes version 0. -fn current_version(path: &Path) -> Result { - match fs::read_to_string(version_file_path(path)) { - Err(ref err) if err.kind() == io::ErrorKind::NotFound => Ok(0), - Err(err) => Err(err.into()), - Ok(content) => u32::from_str(&content).map_err(|_| Error::CorruptedVersionFile), - } -} - -/// Writes current database version to the file. -/// Creates a new file if the version file does not exist yet. -fn update_version(path: &Path) -> Result<(), Error> { - fs::create_dir_all(path)?; - fs::write(version_file_path(path), CURRENT_VERSION.to_string()).map_err(Into::into) -} - -/// Returns the version file path. -fn version_file_path(path: &Path) -> PathBuf { - let mut file_path = path.to_owned(); - file_path.push(VERSION_FILE_NAME); - file_path -} diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs deleted file mode 100644 index 1ca1c5c5f29c..000000000000 --- a/node/service/src/relay_chain_selection.rs +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A [`SelectChain`] implementation designed for relay chains. -//! -//! This uses information about parachains to inform GRANDPA and BABE -//! about blocks which are safe to build on and blocks which are safe to -//! finalize. -//! -//! To learn more about chain-selection rules for Relay Chains, please see the -//! documentation on [chain-selection][chain-selection-guide] -//! in the implementers' guide. -//! -//! This is mostly a wrapper around a subsystem which implements the -//! chain-selection rule, which leaves the code to be very simple. -//! -//! However, this does apply the further finality constraints to the best -//! leaf returned from the chain selection subsystem by calling into other -//! subsystems which yield information about approvals and disputes. -//! -//! [chain-selection-guide]: https://w3f.github.io/parachain-implementers-guide/protocol-chain-selection.html - -#![cfg(feature = "full-node")] - -use { - polkadot_primitives::v1::{ - Hash, BlockNumber, Block as PolkadotBlock, Header as PolkadotHeader, - }, - polkadot_subsystem::messages::{ApprovalVotingMessage, ChainSelectionMessage}, - polkadot_node_subsystem_util::metrics::{self, prometheus}, - polkadot_overseer::OverseerHandler, - futures::channel::oneshot, - consensus_common::{Error as ConsensusError, SelectChain}, - sp_blockchain::HeaderBackend, - sp_runtime::generic::BlockId, - std::sync::Arc, -}; - -/// The maximum amount of unfinalized blocks we are willing to allow due to approval checking -/// or disputes. -/// -/// This is a safety net that should be removed at some point in the future. -const MAX_FINALITY_LAG: polkadot_primitives::v1::BlockNumber = 50; - -const LOG_TARGET: &str = "parachain::chain-selection"; - -/// Prometheus metrics for chain-selection. -#[derive(Debug, Default, Clone)] -pub struct Metrics(Option); - -#[derive(Debug, Clone)] -struct MetricsInner { - approval_checking_finality_lag: prometheus::Gauge, - disputes_finality_lag: prometheus::Gauge, -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - approval_checking_finality_lag: prometheus::register( - prometheus::Gauge::with_opts( - prometheus::Opts::new( - "parachain_approval_checking_finality_lag", - "How far behind the head of the chain the Approval Checking protocol wants to vote", - ) - )?, - registry, - )?, - disputes_finality_lag: prometheus::register( - prometheus::Gauge::with_opts( - prometheus::Opts::new( - "parachain_disputes_finality_lag", - "How far behind the head of the chain the Disputes protocol wants to vote", - ) - )?, - registry, - )?, - }; - - Ok(Metrics(Some(metrics))) - } -} - -impl Metrics { - fn note_approval_checking_finality_lag(&self, lag: BlockNumber) { - if let Some(ref metrics) = self.0 { - metrics.approval_checking_finality_lag.set(lag as _); - } - } - - fn note_disputes_finality_lag(&self, lag: BlockNumber) { - if let Some(ref metrics) = self.0 { - metrics.disputes_finality_lag.set(lag as _); - } - } -} - -/// A chain-selection implementation which provides safety for relay chains. -pub struct SelectRelayChain { - backend: Arc, - overseer: OverseerHandler, - // A fallback to use in case the overseer is disconnected. - // - // This is used on relay chains which have not yet enabled - // parachains as well as situations where the node is offline. - fallback: sc_consensus::LongestChain, - metrics: Metrics, -} - -impl SelectRelayChain - where B: sc_client_api::backend::Backend + 'static -{ - /// Create a new [`SelectRelayChain`] wrapping the given chain backend - /// and a handle to the overseer. - #[allow(unused)] - pub fn new(backend: Arc, overseer: OverseerHandler, metrics: Metrics) -> Self { - SelectRelayChain { - fallback: sc_consensus::LongestChain::new(backend.clone()), - backend, - overseer, - metrics, - } - } - - fn block_header(&self, hash: Hash) -> Result { - match self.backend.blockchain().header(BlockId::Hash(hash)) { - Ok(Some(header)) => Ok(header), - Ok(None) => Err(ConsensusError::ChainLookup(format!( - "Missing header with hash {:?}", - hash, - ))), - Err(e) => Err(ConsensusError::ChainLookup(format!( - "Lookup failed for header with hash {:?}: {:?}", - hash, - e, - ))), - } - } - - fn block_number(&self, hash: Hash) -> Result { - match self.backend.blockchain().number(hash) { - Ok(Some(number)) => Ok(number), - Ok(None) => Err(ConsensusError::ChainLookup(format!( - "Missing number with hash {:?}", - hash, - ))), - Err(e) => Err(ConsensusError::ChainLookup(format!( - "Lookup failed for number with hash {:?}: {:?}", - hash, - e, - ))), - } - } -} - -impl SelectRelayChain { - /// Given an overseer handler, this connects the [`SelectRelayChain`]'s - /// internal handler to the same overseer. - #[allow(unused)] - pub fn connect_overseer_handler( - &mut self, - other_handler: &OverseerHandler, - ) { - other_handler.connect_other(&mut self.overseer); - } -} - -impl Clone for SelectRelayChain - where B: sc_client_api::backend::Backend + 'static -{ - fn clone(&self) -> SelectRelayChain { - SelectRelayChain { - backend: self.backend.clone(), - overseer: self.overseer.clone(), - fallback: self.fallback.clone(), - metrics: self.metrics.clone(), - } - } -} - -#[derive(thiserror::Error, Debug)] -enum Error { - // A request to the subsystem was canceled. - #[error("Overseer is disconnected from Chain Selection")] - OverseerDisconnected(oneshot::Canceled), - /// Chain selection returned empty leaves. - #[error("ChainSelection returned no leaves")] - EmptyLeaves, -} - -#[async_trait::async_trait] -impl SelectChain for SelectRelayChain - where B: sc_client_api::backend::Backend + 'static -{ - /// Get all leaves of the chain, i.e. block hashes that are suitable to - /// build upon and have no suitable children. - async fn leaves(&self) -> Result, ConsensusError> { - if self.overseer.is_disconnected() { - return self.fallback.leaves().await - } - - let (tx, rx) = oneshot::channel(); - - self.overseer - .clone() - .send_msg(ChainSelectionMessage::Leaves(tx)).await; - - rx.await - .map_err(Error::OverseerDisconnected) - .map_err(|e| ConsensusError::Other(Box::new(e))) - } - - /// Among all leaves, pick the one which is the best chain to build upon. - async fn best_chain(&self) -> Result { - if self.overseer.is_disconnected() { - return self.fallback.best_chain().await - } - - // The Chain Selection subsystem is supposed to treat the finalized - // block as the best leaf in the case that there are no viable - // leaves, so this should not happen in practice. - let best_leaf = self.leaves() - .await? - .first() - .ok_or_else(|| ConsensusError::Other(Box::new(Error::EmptyLeaves)))? - .clone(); - - - self.block_header(best_leaf) - } - - /// Get the best descendent of `target_hash` that we should attempt to - /// finalize next, if any. It is valid to return the `target_hash` if - /// no better block exists. - /// - /// This will search all leaves to find the best one containing the - /// given target hash, and then constrain to the given block number. - /// - /// It will also constrain the chain to only chains which are fully - /// approved, and chains which contain no disputes. - async fn finality_target( - &self, - target_hash: Hash, - maybe_max_number: Option, - ) -> Result, ConsensusError> { - if self.overseer.is_disconnected() { - return self.fallback.finality_target(target_hash, maybe_max_number).await - } - - let mut overseer = self.overseer.clone(); - - let subchain_head = { - let (tx, rx) = oneshot::channel(); - overseer.send_msg(ChainSelectionMessage::BestLeafContaining(target_hash, tx)).await; - - let best = rx.await - .map_err(Error::OverseerDisconnected) - .map_err(|e| ConsensusError::Other(Box::new(e)))?; - - match best { - // No viable leaves containing the block. - None => return Ok(Some(target_hash)), - Some(best) => best, - } - }; - - let target_number = self.block_number(target_hash)?; - - // 1. Constrain the leaf according to `maybe_max_number`. - let subchain_head = match maybe_max_number { - None => subchain_head, - Some(max) => { - if max <= target_number { - if max < target_number { - tracing::warn!( - LOG_TARGET, - max_number = max, - target_number, - "`finality_target` max number is less than target number", - ); - } - return Ok(Some(target_hash)); - } - // find the current number. - let subchain_header = self.block_header(subchain_head)?; - - if subchain_header.number <= max { - subchain_head - } else { - let (ancestor_hash, _) = crate::grandpa_support::walk_backwards_to_target_block( - self.backend.blockchain(), - max, - &subchain_header, - ).map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; - - ancestor_hash - } - } - }; - - let initial_leaf = subchain_head; - let initial_leaf_number = self.block_number(initial_leaf)?; - - // 2. Constrain according to `ApprovedAncestor`. - let (subchain_head, subchain_number) = { - - let (tx, rx) = oneshot::channel(); - overseer.send_msg(ApprovalVotingMessage::ApprovedAncestor( - subchain_head, - target_number, - tx, - )).await; - - match rx.await - .map_err(Error::OverseerDisconnected) - .map_err(|e| ConsensusError::Other(Box::new(e)))? - { - // No approved ancestors means target hash is maximal vote. - None => (target_hash, target_number), - Some((s_h, s_n)) => (s_h, s_n), - } - }; - - let lag = initial_leaf_number.saturating_sub(subchain_number); - self.metrics.note_approval_checking_finality_lag(lag); - - // 3. Constrain according to disputes: - // TODO: https://github.com/paritytech/polkadot/issues/3164 - self.metrics.note_disputes_finality_lag(0); - - // 4. Apply the maximum safeguard to the finality lag. - if lag > MAX_FINALITY_LAG { - // We need to constrain our vote as a safety net to - // ensure the network continues to finalize. - let safe_target = initial_leaf_number - MAX_FINALITY_LAG; - - if safe_target <= target_number { - // Minimal vote needs to be on the target number. - Ok(Some(target_hash)) - } else { - // Otherwise we're looking for a descendant. - let initial_leaf_header = self.block_header(initial_leaf)?; - let (forced_target, _) = crate::grandpa_support::walk_backwards_to_target_block( - self.backend.blockchain(), - safe_target, - &initial_leaf_header, - ).map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; - - Ok(Some(forced_target)) - } - } else { - Ok(Some(subchain_head)) - } - } -} diff --git a/node/subsystem-test-helpers/Cargo.toml b/node/subsystem-test-helpers/Cargo.toml deleted file mode 100644 index 3ca9f0cdaa83..000000000000 --- a/node/subsystem-test-helpers/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "polkadot-node-subsystem-test-helpers" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Subsystem traits and message definitions" - -[dependencies] -async-trait = "0.1.42" -futures = "0.3.15" -futures-timer = "3.0.2" -tracing = "0.1.26" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -parking_lot = "0.11.1" -pin-project = "1.0.7" -polkadot-node-primitives = { path = "../primitives" } -polkadot-node-subsystem = { path = "../subsystem" } -polkadot-node-subsystem-util = { path = "../subsystem-util" } -polkadot-primitives = { path = "../../primitives" } -polkadot-statement-table = { path = "../../statement-table" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -smallvec = "1.6.1" -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -polkadot-overseer = { path = "../overseer" } diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs deleted file mode 100644 index c09d0ed000af..000000000000 --- a/node/subsystem-test-helpers/src/lib.rs +++ /dev/null @@ -1,391 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utilities for testing subsystems. - -#![warn(missing_docs)] - -use polkadot_node_subsystem::messages::AllMessages; -use polkadot_node_subsystem::{ - FromOverseer, SubsystemContext, SubsystemError, SubsystemResult, Subsystem, - SpawnedSubsystem, OverseerSignal, SubsystemSender, -}; -use polkadot_node_subsystem_util::TimeoutExt; - -use futures::channel::mpsc; -use futures::poll; -use futures::prelude::*; -use parking_lot::Mutex; -use sp_core::{testing::TaskExecutor, traits::SpawnNamed}; - -use std::convert::Infallible; -use std::pin::Pin; -use std::sync::Arc; -use std::task::{Context, Poll, Waker}; -use std::time::Duration; - -enum SinkState { - Empty { - read_waker: Option, - }, - Item { - item: T, - ready_waker: Option, - flush_waker: Option, - }, -} - -/// The sink half of a single-item sink that does not resolve until the item has been read. -pub struct SingleItemSink(Arc>>); - -// Derive clone not possible, as it puts `Clone` constraint on `T` which is not sensible here. -impl Clone for SingleItemSink { - fn clone(&self) -> Self { - Self(self.0.clone()) - } -} - -/// The stream half of a single-item sink. -pub struct SingleItemStream(Arc>>); - -impl Sink for SingleItemSink { - type Error = Infallible; - - fn poll_ready(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - let mut state = self.0.lock(); - match *state { - SinkState::Empty { .. } => Poll::Ready(Ok(())), - SinkState::Item { - ref mut ready_waker, - .. - } => { - *ready_waker = Some(cx.waker().clone()); - Poll::Pending - } - } - } - - fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Infallible> { - let mut state = self.0.lock(); - - match *state { - SinkState::Empty { ref mut read_waker } => { - if let Some(waker) = read_waker.take() { - waker.wake(); - } - } - _ => panic!("start_send called outside of empty sink state ensured by poll_ready"), - } - - *state = SinkState::Item { - item, - ready_waker: None, - flush_waker: None, - }; - - Ok(()) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - let mut state = self.0.lock(); - match *state { - SinkState::Empty { .. } => Poll::Ready(Ok(())), - SinkState::Item { - ref mut flush_waker, - .. - } => { - *flush_waker = Some(cx.waker().clone()); - Poll::Pending - } - } - } - - fn poll_close(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - self.poll_flush(cx) - } -} - -impl Stream for SingleItemStream { - type Item = T; - - fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - let mut state = self.0.lock(); - - let read_waker = Some(cx.waker().clone()); - - match std::mem::replace(&mut *state, SinkState::Empty { read_waker }) { - SinkState::Empty { .. } => Poll::Pending, - SinkState::Item { - item, - ready_waker, - flush_waker, - } => { - if let Some(waker) = ready_waker { - waker.wake(); - } - - if let Some(waker) = flush_waker { - waker.wake(); - } - - Poll::Ready(Some(item)) - } - } - } -} - -/// Create a single-item Sink/Stream pair. -/// -/// The sink's send methods resolve at the point which the stream reads the item, -/// not when the item is buffered. -pub fn single_item_sink() -> (SingleItemSink, SingleItemStream) { - let inner = Arc::new(Mutex::new(SinkState::Empty { read_waker: None })); - (SingleItemSink(inner.clone()), SingleItemStream(inner)) -} - -/// A test subsystem sender. -#[derive(Clone)] -pub struct TestSubsystemSender { - tx: mpsc::UnboundedSender, -} - -/// Construct a sender/receiver pair. -pub fn sender_receiver() -> (TestSubsystemSender, mpsc::UnboundedReceiver) { - let (tx, rx) = mpsc::unbounded(); - ( - TestSubsystemSender { tx }, - rx, - ) -} - -#[async_trait::async_trait] -impl SubsystemSender for TestSubsystemSender { - async fn send_message(&mut self, msg: AllMessages) { - self.tx - .send(msg) - .await - .expect("test overseer no longer live"); - } - - async fn send_messages(&mut self, msgs: T) - where - T: IntoIterator + Send, - T::IntoIter: Send, - { - let mut iter = stream::iter(msgs.into_iter().map(Ok)); - self.tx - .send_all(&mut iter) - .await - .expect("test overseer no longer live"); - } - - fn send_unbounded_message(&mut self, msg: AllMessages) { - self.tx.unbounded_send(msg).expect("test overseer no longer live"); - } -} - -/// A test subsystem context. -pub struct TestSubsystemContext { - tx: TestSubsystemSender, - rx: SingleItemStream>, - spawn: S, -} - -#[async_trait::async_trait] -impl SubsystemContext - for TestSubsystemContext -{ - type Message = M; - type Sender = TestSubsystemSender; - - async fn try_recv(&mut self) -> Result>, ()> { - match poll!(self.rx.next()) { - Poll::Ready(Some(msg)) => Ok(Some(msg)), - Poll::Ready(None) => Err(()), - Poll::Pending => Ok(None), - } - } - - async fn recv(&mut self) -> SubsystemResult> { - self.rx.next().await - .ok_or_else(|| SubsystemError::Context("Receiving end closed".to_owned())) - } - - fn spawn( - &mut self, - name: &'static str, - s: Pin + Send>>, - ) -> SubsystemResult<()> { - self.spawn.spawn(name, s); - Ok(()) - } - - fn spawn_blocking(&mut self, name: &'static str, s: Pin + Send>>) - -> SubsystemResult<()> - { - self.spawn.spawn_blocking(name, s); - Ok(()) - } - - fn sender(&mut self) -> &mut TestSubsystemSender { - &mut self.tx - } -} - -/// A handle for interacting with the subsystem context. -pub struct TestSubsystemContextHandle { - /// Direct access to sender of messages. - /// - /// Useful for shared ownership situations (one can have multiple senders, but only one - /// receiver. - pub tx: SingleItemSink>, - - /// Direct access to the receiver. - pub rx: mpsc::UnboundedReceiver, -} - -impl TestSubsystemContextHandle { - /// Send a message or signal to the subsystem. This resolves at the point in time where the - /// subsystem has _read_ the message. - pub async fn send(&mut self, from_overseer: FromOverseer) { - self.tx - .send(from_overseer) - .await - .expect("Test subsystem no longer live"); - } - - /// Receive the next message from the subsystem. - pub async fn recv(&mut self) -> AllMessages { - self.try_recv().await.expect("Test subsystem no longer live") - } - - /// Receive the next message from the subsystem, or `None` if the channel has been closed. - pub async fn try_recv(&mut self) -> Option { - self.rx.next().await - } -} - -/// Make a test subsystem context. -pub fn make_subsystem_context( - spawn: S, -) -> (TestSubsystemContext, TestSubsystemContextHandle) { - let (overseer_tx, overseer_rx) = single_item_sink(); - let (all_messages_tx, all_messages_rx) = mpsc::unbounded(); - - ( - TestSubsystemContext { - tx: TestSubsystemSender { tx: all_messages_tx }, - rx: overseer_rx, - spawn, - }, - TestSubsystemContextHandle { - tx: overseer_tx, - rx: all_messages_rx, - }, - ) -} - -/// Test a subsystem, mocking the overseer -/// -/// Pass in two async closures: one mocks the overseer, the other runs the test from the perspective of a subsystem. -/// -/// Times out in two seconds. -pub fn subsystem_test_harness( - overseer_factory: OverseerFactory, - test_factory: TestFactory, -) where - OverseerFactory: FnOnce(TestSubsystemContextHandle) -> Overseer, - Overseer: Future, - TestFactory: FnOnce(TestSubsystemContext) -> Test, - Test: Future, -{ - let pool = TaskExecutor::new(); - let (context, handle) = make_subsystem_context(pool); - let overseer = overseer_factory(handle); - let test = test_factory(context); - - futures::pin_mut!(overseer, test); - - futures::executor::block_on(async move { - future::join(overseer, test) - .timeout(Duration::from_secs(2)) - .await - .expect("test timed out instead of completing") - }); -} - -/// A forward subsystem that implements [`Subsystem`]. -/// -/// It forwards all communication from the overseer to the internal message -/// channel. -/// -/// This subsystem is useful for testing functionality that interacts with the overseer. -pub struct ForwardSubsystem(pub mpsc::Sender); - -impl, Msg: Send + 'static> Subsystem for ForwardSubsystem { - fn start(mut self, mut ctx: C) -> SpawnedSubsystem { - let future = Box::pin(async move { - loop { - match ctx.recv().await { - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => return Ok(()), - Ok(FromOverseer::Communication { msg }) => { - let _ = self.0.send(msg).await; - }, - Err(_) => return Ok(()), - _ => (), - } - } - }); - - SpawnedSubsystem { - name: "forward-subsystem", - future, - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use polkadot_overseer::{Overseer, HeadSupportsParachains, AllSubsystems}; - use futures::executor::block_on; - use polkadot_primitives::v1::Hash; - use polkadot_node_subsystem::messages::CollatorProtocolMessage; - - struct AlwaysSupportsParachains; - impl HeadSupportsParachains for AlwaysSupportsParachains { - fn head_supports_parachains(&self, _head: &Hash) -> bool { true } - } - - #[test] - fn forward_subsystem_works() { - let spawner = sp_core::testing::TaskExecutor::new(); - let (tx, rx) = mpsc::channel(2); - let all_subsystems = AllSubsystems::<()>::dummy().replace_collator_protocol(ForwardSubsystem(tx)); - let (overseer, mut handler) = Overseer::new( - Vec::new(), - all_subsystems, - None, - AlwaysSupportsParachains, - spawner.clone(), - ).unwrap(); - - spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); - - block_on(handler.send_msg(CollatorProtocolMessage::CollateOn(Default::default()))); - assert!(matches!(block_on(rx.into_future()).0.unwrap(), CollatorProtocolMessage::CollateOn(_))); - } -} diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml deleted file mode 100644 index 63bbeee1ab33..000000000000 --- a/node/subsystem-util/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "polkadot-node-subsystem-util" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Subsystem traits and message definitions" - -[dependencies] -async-trait = "0.1.42" -futures = "0.3.15" -futures-timer = "3.0.2" -itertools = "0.10" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -parking_lot = { version = "0.11.1", optional = true } -pin-project = "1.0.7" -rand = "0.8.3" -thiserror = "1.0.23" -tracing = "0.1.26" -lru = "0.6.5" - -polkadot-node-primitives = { path = "../primitives" } -polkadot-node-subsystem = { path = "../subsystem" } -polkadot-node-jaeger = { path = "../jaeger" } -polkadot-node-network-protocol = { path = "../network/protocol" } -polkadot-primitives = { path = "../../primitives" } -metered-channel = { path = "../metered-channel"} - -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -assert_matches = "1.4.0" -async-trait = "0.1.42" -env_logger = "0.8.4" -futures = { version = "0.3.15", features = ["thread-pool"] } -log = "0.4.13" -parking_lot = "0.11.1" -polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" } diff --git a/node/subsystem-util/src/determine_new_blocks.rs b/node/subsystem-util/src/determine_new_blocks.rs deleted file mode 100644 index adfc614beef9..000000000000 --- a/node/subsystem-util/src/determine_new_blocks.rs +++ /dev/null @@ -1,621 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A utility for fetching all unknown blocks based on a new chain-head hash. - -use polkadot_node_subsystem::{ - messages::ChainApiMessage, SubsystemSender, -}; -use polkadot_primitives::v1::{Hash, Header, BlockNumber}; -use futures::prelude::*; -use futures::channel::oneshot; - -/// Given a new chain-head hash, this determines the hashes of all new blocks we should track -/// metadata for, given this head. -/// -/// This is guaranteed to be a subset of the (inclusive) ancestry of `head` determined as all -/// blocks above the lower bound or above the highest known block, whichever is higher. -/// This is formatted in descending order by block height. -/// -/// An implication of this is that if `head` itself is known or not above the lower bound, -/// then the returned list will be empty. -/// -/// This may be somewhat expensive when first recovering from major sync. -pub async fn determine_new_blocks( - ctx: &mut impl SubsystemSender, - is_known: impl Fn(&Hash) -> Result, - head: Hash, - header: &Header, - lower_bound_number: BlockNumber, -) -> Result, E> { - const ANCESTRY_STEP: usize = 4; - - let min_block_needed = lower_bound_number + 1; - - // Early exit if the block is in the DB or too early. - { - let already_known = is_known(&head)?; - - let before_relevant = header.number < min_block_needed; - - if already_known || before_relevant { - return Ok(Vec::new()); - } - } - - let mut ancestry = vec![(head, header.clone())]; - - // Early exit if the parent hash is in the DB or no further blocks - // are needed. - if is_known(&header.parent_hash)? || header.number == min_block_needed { - return Ok(ancestry); - } - - 'outer: loop { - let &(ref last_hash, ref last_header) = ancestry.last() - .expect("ancestry has length 1 at initialization and is only added to; qed"); - - assert!( - last_header.number > min_block_needed, - "Loop invariant: the last block in ancestry is checked to be \ - above the minimum before the loop, and at the end of each iteration; \ - qed" - ); - - let (tx, rx) = oneshot::channel(); - - // This is always non-zero as determined by the loop invariant - // above. - let ancestry_step = std::cmp::min( - ANCESTRY_STEP, - (last_header.number - min_block_needed) as usize, - ); - - let batch_hashes = if ancestry_step == 1 { - vec![last_header.parent_hash] - } else { - ctx.send_message(ChainApiMessage::Ancestors { - hash: *last_hash, - k: ancestry_step, - response_channel: tx, - }.into()).await; - - // Continue past these errors. - match rx.await { - Err(_) | Ok(Err(_)) => break 'outer, - Ok(Ok(ancestors)) => ancestors, - } - }; - - let batch_headers = { - let (batch_senders, batch_receivers) = (0..batch_hashes.len()) - .map(|_| oneshot::channel()) - .unzip::<_, _, Vec<_>, Vec<_>>(); - - for (hash, sender) in batch_hashes.iter().cloned().zip(batch_senders) { - ctx.send_message(ChainApiMessage::BlockHeader(hash, sender).into()).await; - } - - let mut requests = futures::stream::FuturesOrdered::new(); - batch_receivers.into_iter().map(|rx| async move { - match rx.await { - Err(_) | Ok(Err(_)) => None, - Ok(Ok(h)) => h, - } - }) - .for_each(|x| requests.push(x)); - - let batch_headers: Vec<_> = requests - .flat_map(|x: Option

| stream::iter(x)) - .collect() - .await; - - // Any failed header fetch of the batch will yield a `None` result that will - // be skipped. Any failure at this stage means we'll just ignore those blocks - // as the chain DB has failed us. - if batch_headers.len() != batch_hashes.len() { break 'outer } - batch_headers - }; - - for (hash, header) in batch_hashes.into_iter().zip(batch_headers) { - let is_known = is_known(&hash)?; - - let is_relevant = header.number >= min_block_needed; - let is_terminating = header.number == min_block_needed; - - if is_known || !is_relevant { - break 'outer - } - - ancestry.push((hash, header)); - - if is_terminating { - break 'outer - } - } - } - - Ok(ancestry) -} - -#[cfg(test)] -mod tests { - use super::*; - use std::collections::{HashSet, HashMap}; - use sp_core::testing::TaskExecutor; - use polkadot_node_subsystem::{messages::AllMessages, SubsystemContext}; - use polkadot_node_subsystem_test_helpers::make_subsystem_context; - use assert_matches::assert_matches; - - #[derive(Default)] - struct TestKnownBlocks { - blocks: HashSet, - } - - impl TestKnownBlocks { - fn insert(&mut self, hash: Hash) { - self.blocks.insert(hash); - } - - fn is_known(&self, hash: &Hash) -> Result { - Ok(self.blocks.contains(hash)) - } - } - - #[derive(Clone)] - struct TestChain { - start_number: BlockNumber, - headers: Vec
, - numbers: HashMap, - } - - impl TestChain { - fn new(start: BlockNumber, len: usize) -> Self { - assert!(len > 0, "len must be at least 1"); - - let base = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: start, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let base_hash = base.hash(); - - let mut chain = TestChain { - start_number: start, - headers: vec![base], - numbers: vec![(base_hash, start)].into_iter().collect(), - }; - - for _ in 1..len { - chain.grow() - } - - chain - } - - fn grow(&mut self) { - let next = { - let last = self.headers.last().unwrap(); - Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: last.number + 1, - state_root: Default::default(), - parent_hash: last.hash(), - } - }; - - self.numbers.insert(next.hash(), next.number); - self.headers.push(next); - } - - fn header_by_number(&self, number: BlockNumber) -> Option<&Header> { - if number < self.start_number { - None - } else { - self.headers.get((number - self.start_number) as usize) - } - } - - fn header_by_hash(&self, hash: &Hash) -> Option<&Header> { - self.numbers.get(hash).and_then(|n| self.header_by_number(*n)) - } - - fn hash_by_number(&self, number: BlockNumber) -> Option { - self.header_by_number(number).map(|h| h.hash()) - } - - fn ancestry(&self, hash: &Hash, k: BlockNumber) -> Vec { - let n = match self.numbers.get(hash) { - None => return Vec::new(), - Some(&n) => n, - }; - - (0..k) - .map(|i| i + 1) - .filter_map(|i| self.header_by_number(n - i)) - .map(|h| h.hash()) - .collect() - } - } - - #[test] - fn determine_new_blocks_back_to_lower_bound() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let known = TestKnownBlocks::default(); - - let chain = TestChain::new(10, 9); - - let head = chain.header_by_number(18).unwrap().clone(); - let head_hash = head.hash(); - let lower_bound_number = 12; - - // Finalized block should be omitted. The head provided to `determine_new_blocks` - // should be included. - let expected_ancestry = (13..=18) - .map(|n| chain.header_by_number(n).map(|h| (h.hash(), h.clone())).unwrap()) - .rev() - .collect::>(); - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - lower_bound_number, - ).await.unwrap(); - - assert_eq!( - ancestry, - expected_ancestry, - ); - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash: h, - k, - response_channel: tx, - }) => { - assert_eq!(h, head_hash); - assert_eq!(k, 4); - let _ = tx.send(Ok(chain.ancestry(&h, k as _))); - } - ); - - for _ in 0u32..4 { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - let _ = tx.send(Ok(chain.header_by_hash(&h).map(|h| h.clone()))); - } - ); - } - - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - assert_eq!(h, chain.hash_by_number(13).unwrap()); - let _ = tx.send(Ok(chain.header_by_hash(&h).map(|h| h.clone()))); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn determine_new_blocks_back_to_known() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let mut known = TestKnownBlocks::default(); - - let chain = TestChain::new(10, 9); - - let head = chain.header_by_number(18).unwrap().clone(); - let head_hash = head.hash(); - let lower_bound_number = 12; - let known_number = 15; - let known_hash = chain.hash_by_number(known_number).unwrap(); - - known.insert(known_hash); - - // Known block should be omitted. The head provided to `determine_new_blocks` - // should be included. - let expected_ancestry = (16..=18) - .map(|n| chain.header_by_number(n).map(|h| (h.hash(), h.clone())).unwrap()) - .rev() - .collect::>(); - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - lower_bound_number, - ).await.unwrap(); - - assert_eq!( - ancestry, - expected_ancestry, - ); - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash: h, - k, - response_channel: tx, - }) => { - assert_eq!(h, head_hash); - assert_eq!(k, 4); - let _ = tx.send(Ok(chain.ancestry(&h, k as _))); - } - ); - - for _ in 0u32..4 { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - let _ = tx.send(Ok(chain.header_by_hash(&h).map(|h| h.clone()))); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn determine_new_blocks_already_known_is_empty() { - let pool = TaskExecutor::new(); - let (mut ctx, _handle) = make_subsystem_context::<(), _>(pool.clone()); - - let mut known = TestKnownBlocks::default(); - - let chain = TestChain::new(10, 9); - - let head = chain.header_by_number(18).unwrap().clone(); - let head_hash = head.hash(); - let lower_bound_number = 0; - - known.insert(head_hash); - - // Known block should be omitted. - let expected_ancestry = Vec::new(); - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - lower_bound_number, - ).await.unwrap(); - - assert_eq!( - ancestry, - expected_ancestry, - ); - }); - - futures::executor::block_on(test_fut); - } - - #[test] - fn determine_new_blocks_parent_known_is_fast() { - let pool = TaskExecutor::new(); - let (mut ctx, _handle) = make_subsystem_context::<(), _>(pool.clone()); - - let mut known = TestKnownBlocks::default(); - - let chain = TestChain::new(10, 9); - - let head = chain.header_by_number(18).unwrap().clone(); - let head_hash = head.hash(); - let lower_bound_number = 0; - let parent_hash = chain.hash_by_number(17).unwrap(); - - known.insert(parent_hash); - - // New block should be the only new one. - let expected_ancestry = vec![(head_hash, head.clone())]; - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - lower_bound_number, - ).await.unwrap(); - - assert_eq!( - ancestry, - expected_ancestry, - ); - }); - - futures::executor::block_on(test_fut); - } - - #[test] - fn determine_new_block_before_finality_is_empty() { - let pool = TaskExecutor::new(); - let (mut ctx, _handle) = make_subsystem_context::<(), _>(pool.clone()); - - let chain = TestChain::new(10, 9); - - let head = chain.header_by_number(18).unwrap().clone(); - let head_hash = head.hash(); - let parent_hash = chain.hash_by_number(17).unwrap(); - let mut known = TestKnownBlocks::default(); - - known.insert(parent_hash); - - let test_fut = Box::pin(async move { - let after_finality = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - 17, - ).await.unwrap(); - - let at_finality = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - 18, - ).await.unwrap(); - - let before_finality = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - 19, - ).await.unwrap(); - - assert_eq!( - after_finality, - vec![(head_hash, head.clone())], - ); - - assert_eq!( - at_finality, - Vec::new(), - ); - - assert_eq!( - before_finality, - Vec::new(), - ); - }); - - futures::executor::block_on(test_fut); - } - - #[test] - fn determine_new_blocks_does_not_request_genesis() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let chain = TestChain::new(1, 2); - - let head = chain.header_by_number(2).unwrap().clone(); - let head_hash = head.hash(); - let known = TestKnownBlocks::default(); - - let expected_ancestry = (1..=2) - .map(|n| chain.header_by_number(n).map(|h| (h.hash(), h.clone())).unwrap()) - .rev() - .collect::>(); - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - 0, - ).await.unwrap(); - - assert_eq!(ancestry, expected_ancestry); - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - assert_eq!(h, chain.hash_by_number(1).unwrap()); - let _ = tx.send(Ok(chain.header_by_hash(&h).map(|h| h.clone()))); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn determine_new_blocks_does_not_request_genesis_even_in_multi_ancestry() { - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let chain = TestChain::new(1, 3); - - let head = chain.header_by_number(3).unwrap().clone(); - let head_hash = head.hash(); - let known = TestKnownBlocks::default(); - - let expected_ancestry = (1..=3) - .map(|n| chain.header_by_number(n).map(|h| (h.hash(), h.clone())).unwrap()) - .rev() - .collect::>(); - - let test_fut = Box::pin(async move { - let ancestry = determine_new_blocks( - ctx.sender(), - |h| known.is_known(h), - head_hash, - &head, - 0, - ).await.unwrap(); - - assert_eq!(ancestry, expected_ancestry); - }); - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::Ancestors { - hash: h, - k, - response_channel: tx, - }) => { - assert_eq!(h, head_hash); - assert_eq!(k, 2); - - let _ = tx.send(Ok(chain.ancestry(&h, k as _))); - } - ); - - for _ in 0..2 { - assert_matches!( - handle.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - let _ = tx.send(Ok(chain.header_by_hash(&h).map(|h| h.clone()))); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } -} diff --git a/node/subsystem-util/src/error_handling.rs b/node/subsystem-util/src/error_handling.rs deleted file mode 100644 index 36e59bb7b2cb..000000000000 --- a/node/subsystem-util/src/error_handling.rs +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utilities for general error handling in Polkadot. -//! -//! Goals: -//! -//! - Ergonomic API with little repetition. -//! - Still explicitness where it matters - fatal errors should be visible and justified. -//! - Easy recovering from non-fatal errors. -//! - Errors start as non-fatal and can be made fatal at the level where it is really clear they -//! are fatal. E.g. cancellation of a oneshot might be fatal in one case, but absolutely expected -//! in another. -//! - Good error messages. Fatal errors don't need to be properly structured (as we won't handle -//! them), but should provide good error messages of what is going on. -//! - Encourage many error types. One per module or even per function is totally fine - it makes -//! error handling robust, if you only need to handle errors that can actually happen, also error -//! messages will get better. - -use thiserror::Error; - -/// Error abstraction. -/// -/// Errors might either be fatal and should bring the subsystem down or are at least at the point -/// of occurrence deemed potentially recoverable. -/// -/// Upper layers might have a better view and might make a non-fatal error of a called function a -/// fatal one. The opposite should not happen, therefore don't make an error fatal if you don't -/// know it is in all cases. -/// -/// Usage pattern: -/// -/// ``` -/// use thiserror::Error; -/// use polkadot_node_subsystem::errors::RuntimeApiError; -/// use polkadot_primitives::v1::SessionIndex; -/// use futures::channel::oneshot; -/// use polkadot_node_subsystem_util::{Fault, runtime}; -/// -/// #[derive(Debug, Error)] -/// #[error(transparent)] -/// pub struct Error(pub Fault); -/// -/// pub type Result = std::result::Result; -/// pub type NonFatalResult = std::result::Result; -/// pub type FatalResult = std::result::Result; -/// -/// // Make an error from a `NonFatal` one. -/// impl From for Error { -/// fn from(e: NonFatal) -> Self { -/// Self(Fault::from_non_fatal(e)) -/// } -/// } -/// -/// // Make an Error from a `Fatal` one. -/// impl From for Error { -/// fn from(f: Fatal) -> Self { -/// Self(Fault::from_fatal(f)) -/// } -/// } -/// -/// // Easy conversion from sub error types from other modules: -/// impl From for Error { -/// fn from(o: runtime::Error) -> Self { -/// Self(Fault::from_other(o)) -/// } -/// } -/// -/// #[derive(Debug, Error)] -/// pub enum Fatal { -/// /// Really fatal stuff. -/// #[error("Something fatal happened.")] -/// SomeFatalError, -/// /// Errors coming from runtime::Runtime. -/// #[error("Error while accessing runtime information")] -/// Runtime(#[from] #[source] runtime::Fatal), -/// } -/// -/// #[derive(Debug, Error)] -/// pub enum NonFatal { -/// /// Some non fatal error. -/// /// For example if we prune a block we're requesting info about. -/// #[error("Non fatal error happened.")] -/// SomeNonFatalError, -/// -/// /// Errors coming from runtime::Runtime. -/// #[error("Error while accessing runtime information")] -/// Runtime(#[from] #[source] runtime::NonFatal), -/// } -/// ``` -/// Then mostly use `Error` in functions, you may also use `NonFatal` and `Fatal` directly in -/// functions that strictly only fail non-fatal or fatal respectively, as `Fatal` and `NonFatal` -/// can automatically converted into the above defined `Error`. -/// ``` -#[derive(Debug, Error)] -pub enum Fault - where - E: std::fmt::Debug + std::error::Error + 'static, - F: std::fmt::Debug + std::error::Error + 'static, { - /// Error is fatal and should be escalated up. - /// - /// While we usually won't want to pattern match on those, a concrete descriptive enum might - /// still be a good idea for easy auditing of what can go wrong in a module and also makes for - /// good error messages thanks to `thiserror`. - #[error("Fatal error occurred.")] - Fatal(#[source] F), - /// Error that is not fatal, at least not yet at this level of execution. - #[error("Non fatal error occurred.")] - Err(#[source] E), -} - -/// Due to typesystem constraints we cannot implement the following methods as standard -/// `From::from` implementations. So no auto conversions by default, a simple `Result::map_err` is -/// not too bad though. -impl Fault - where - E: std::fmt::Debug + std::error::Error + 'static, - F: std::fmt::Debug + std::error::Error + 'static, -{ - /// Build an `Fault` from compatible fatal error. - pub fn from_fatal>(f: F1) -> Self { - Self::Fatal(f.into()) - } - - /// Build an `Fault` from compatible non-fatal error. - pub fn from_non_fatal>(e: E1) -> Self { - Self::Err(e.into()) - } - - /// Build an `Fault` from a compatible other `Fault`. - pub fn from_other(e: Fault) -> Self - where - E1: Into + std::fmt::Debug + std::error::Error + 'static, - F1: Into + std::fmt::Debug + std::error::Error + 'static, - { - match e { - Fault::Fatal(f) => Self::from_fatal(f), - Fault::Err(e) => Self::from_non_fatal(e), - } - } -} - -/// Unwrap non-fatal error and report fatal one. -/// -/// This function is useful for top level error handling. Fatal errors will be extracted, -/// non-fatal error will be returned for handling. -/// -/// Usage: -/// -/// ```no_run -/// # use thiserror::Error; -/// # use polkadot_node_subsystem_util::{Fault, unwrap_non_fatal}; -/// # use polkadot_node_subsystem::SubsystemError; -/// # #[derive(Error, Debug)] -/// # enum Fatal { -/// # } -/// # #[derive(Error, Debug)] -/// # enum NonFatal { -/// # } -/// # fn computation() -> Result<(), Fault> { -/// # panic!(); -/// # } -/// # -/// // Use run like so: -/// // run(ctx) -/// // .map_err(|e| SubsystemError::with_origin("subsystem-name", e)) -/// fn run() -> std::result::Result<(), Fatal> { -/// loop { -/// // .... -/// if let Some(err) = unwrap_non_fatal(computation())? { -/// println!("Something bad happened: {}", err); -/// continue -/// } -/// } -/// } -/// -/// ``` -pub fn unwrap_non_fatal(result: Result<(), Fault>) -> Result, F> - where - E: std::fmt::Debug + std::error::Error + 'static, - F: std::fmt::Debug + std::error::Error + Send + Sync + 'static -{ - match result { - Ok(()) => Ok(None), - Err(Fault::Fatal(f)) => Err(f), - Err(Fault::Err(e)) => Ok(Some(e)), - } -} diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs deleted file mode 100644 index 85348b1457c9..000000000000 --- a/node/subsystem-util/src/lib.rs +++ /dev/null @@ -1,862 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utility module for subsystems -//! -//! Many subsystems have common interests such as canceling a bunch of spawned jobs, -//! or determining what their validator ID is. These common interests are factored into -//! this module. -//! -//! This crate also reexports Prometheus metric types which are expected to be implemented by subsystems. - -#![warn(missing_docs)] - -use polkadot_node_subsystem::{ - errors::RuntimeApiError, - messages::{AllMessages, RuntimeApiMessage, RuntimeApiRequest, RuntimeApiSender, BoundToRelayParent}, - FromOverseer, SpawnedSubsystem, Subsystem, SubsystemContext, SubsystemError, SubsystemSender, - ActiveLeavesUpdate, OverseerSignal, -}; -use polkadot_node_jaeger as jaeger; -use futures::{channel::{mpsc, oneshot}, prelude::*, select, stream::{Stream, SelectAll}}; -use futures_timer::Delay; -use parity_scale_codec::Encode; -use pin_project::pin_project; -use polkadot_primitives::v1::{ - CandidateEvent, CommittedCandidateReceipt, CoreState, EncodeAs, PersistedValidationData, - GroupRotationInfo, Hash, Id as ParaId, OccupiedCoreAssumption, - SessionIndex, Signed, SigningContext, ValidationCode, ValidatorId, ValidatorIndex, SessionInfo, - AuthorityDiscoveryId, GroupIndex, -}; -use sp_core::{traits::SpawnNamed, Public}; -use sp_application_crypto::AppKey; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr, Error as KeystoreError}; -use std::{ - collections::{HashMap, hash_map::Entry}, convert::TryFrom, marker::Unpin, pin::Pin, task::{Poll, Context}, - time::Duration, fmt, sync::Arc, -}; -use thiserror::Error; - -pub use metered_channel as metered; -pub use polkadot_node_network_protocol::MIN_GOSSIP_PEERS; - -pub use determine_new_blocks::determine_new_blocks; -/// Error classification. -pub use error_handling::{Fault, unwrap_non_fatal}; - -/// These reexports are required so that external crates can use the `delegated_subsystem` macro properly. -pub mod reexports { - pub use sp_core::traits::SpawnNamed; - pub use polkadot_node_subsystem::{ - SpawnedSubsystem, - Subsystem, - SubsystemContext, - }; -} - -/// Convenient and efficient runtime info access. -pub mod runtime; -/// A rolling session window cache. -pub mod rolling_session_window; - -mod determine_new_blocks; -mod error_handling; - -#[cfg(test)] -mod tests; - -/// Duration a job will wait after sending a stop signal before hard-aborting. -pub const JOB_GRACEFUL_STOP_DURATION: Duration = Duration::from_secs(1); -/// Capacity of channels to and from individual jobs -pub const JOB_CHANNEL_CAPACITY: usize = 64; - -/// Utility errors -#[derive(Debug, Error)] -pub enum Error { - /// Attempted to send or receive on a oneshot channel which had been canceled - #[error(transparent)] - Oneshot(#[from] oneshot::Canceled), - /// Attempted to send on a MPSC channel which has been canceled - #[error(transparent)] - Mpsc(#[from] mpsc::SendError), - /// A subsystem error - #[error(transparent)] - Subsystem(#[from] SubsystemError), - /// An error in the Runtime API. - #[error(transparent)] - RuntimeApi(#[from] RuntimeApiError), - /// The type system wants this even though it doesn't make sense - #[error(transparent)] - Infallible(#[from] std::convert::Infallible), - /// Attempted to convert from an AllMessages to a FromJob, and failed. - #[error("AllMessage not relevant to Job")] - SenderConversion(String), - /// The local node is not a validator. - #[error("Node is not a validator")] - NotAValidator, - /// Already forwarding errors to another sender - #[error("AlreadyForwarding")] - AlreadyForwarding, -} - -/// A type alias for Runtime API receivers. -pub type RuntimeApiReceiver = oneshot::Receiver>; - -/// Request some data from the `RuntimeApi`. -pub async fn request_from_runtime( - parent: Hash, - sender: &mut Sender, - request_builder: RequestBuilder, -) -> RuntimeApiReceiver -where - RequestBuilder: FnOnce(RuntimeApiSender) -> RuntimeApiRequest, - Sender: SubsystemSender, -{ - let (tx, rx) = oneshot::channel(); - - sender.send_message(RuntimeApiMessage::Request(parent, request_builder(tx)).into()).await; - - rx -} - -/// Construct specialized request functions for the runtime. -/// -/// These would otherwise get pretty repetitive. -macro_rules! specialize_requests { - // expand return type name for documentation purposes - (fn $func_name:ident( $( $param_name:ident : $param_ty:ty ),* ) -> $return_ty:ty ; $request_variant:ident;) => { - specialize_requests!{ - named stringify!($request_variant) ; fn $func_name( $( $param_name : $param_ty ),* ) -> $return_ty ; $request_variant; - } - }; - - // create a single specialized request function - (named $doc_name:expr ; fn $func_name:ident( $( $param_name:ident : $param_ty:ty ),* ) -> $return_ty:ty ; $request_variant:ident;) => { - #[doc = "Request `"] - #[doc = $doc_name] - #[doc = "` from the runtime"] - pub async fn $func_name( - parent: Hash, - $( - $param_name: $param_ty, - )* - sender: &mut impl SubsystemSender, - ) -> RuntimeApiReceiver<$return_ty> { - request_from_runtime(parent, sender, |tx| RuntimeApiRequest::$request_variant( - $( $param_name, )* tx - )).await - } - }; - - // recursive decompose - ( - fn $func_name:ident( $( $param_name:ident : $param_ty:ty ),* ) -> $return_ty:ty ; $request_variant:ident; - $( - fn $t_func_name:ident( $( $t_param_name:ident : $t_param_ty:ty ),* ) -> $t_return_ty:ty ; $t_request_variant:ident; - )+ - ) => { - specialize_requests!{ - fn $func_name( $( $param_name : $param_ty ),* ) -> $return_ty ; $request_variant ; - } - specialize_requests!{ - $( - fn $t_func_name( $( $t_param_name : $t_param_ty ),* ) -> $t_return_ty ; $t_request_variant ; - )+ - } - }; -} - -specialize_requests! { - fn request_authorities() -> Vec; Authorities; - fn request_validators() -> Vec; Validators; - fn request_validator_groups() -> (Vec>, GroupRotationInfo); ValidatorGroups; - fn request_availability_cores() -> Vec; AvailabilityCores; - fn request_persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) -> Option; PersistedValidationData; - fn request_session_index_for_child() -> SessionIndex; SessionIndexForChild; - fn request_validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) -> Option; ValidationCode; - fn request_candidate_pending_availability(para_id: ParaId) -> Option; CandidatePendingAvailability; - fn request_candidate_events() -> Vec; CandidateEvents; - fn request_session_info(index: SessionIndex) -> Option; SessionInfo; -} - -/// From the given set of validators, find the first key we can sign with, if any. -pub async fn signing_key(validators: &[ValidatorId], keystore: &SyncCryptoStorePtr) - -> Option -{ - signing_key_and_index(validators, keystore).await.map(|(k, _)| k) -} - -/// From the given set of validators, find the first key we can sign with, if any, and return it -/// along with the validator index. -pub async fn signing_key_and_index(validators: &[ValidatorId], keystore: &SyncCryptoStorePtr) - -> Option<(ValidatorId, ValidatorIndex)> -{ - for (i, v) in validators.iter().enumerate() { - if CryptoStore::has_keys(&**keystore, &[(v.to_raw_vec(), ValidatorId::ID)]).await { - return Some((v.clone(), ValidatorIndex(i as _))); - } - } - None -} - -/// Find the validator group the given validator index belongs to. -pub fn find_validator_group(groups: &[Vec], index: ValidatorIndex) - -> Option -{ - groups.iter().enumerate().find_map(|(i, g)| if g.contains(&index) { - Some(GroupIndex(i as _)) - } else { - None - }) -} - -/// Choose a random subset of `min` elements. -/// But always include `is_priority` elements. -pub fn choose_random_subset bool>(is_priority: F, mut v: Vec, min: usize) -> Vec { - use rand::seq::SliceRandom as _; - - // partition the elements into priority first - // the returned index is when non_priority elements start - let i = itertools::partition(&mut v, is_priority); - - if i >= min || v.len() <= i { - v.truncate(i); - return v; - } - - let mut rng = rand::thread_rng(); - v[i..].shuffle(&mut rng); - - v.truncate(min); - v -} - -/// Returns a bool with a probability of `a / b` of being true. -pub fn gen_ratio(a: usize, b: usize) -> bool { - use rand::Rng as _; - let mut rng = rand::thread_rng(); - rng.gen_ratio(a as u32, b as u32) -} - -/// Local validator information -/// -/// It can be created if the local node is a validator in the context of a particular -/// relay chain block. -#[derive(Debug)] -pub struct Validator { - signing_context: SigningContext, - key: ValidatorId, - index: ValidatorIndex, -} - -impl Validator { - /// Get a struct representing this node's validator if this node is in fact a validator in the context of the given block. - pub async fn new( - parent: Hash, - keystore: SyncCryptoStorePtr, - sender: &mut impl SubsystemSender, - ) -> Result { - // Note: request_validators and request_session_index_for_child do not and cannot - // run concurrently: they both have a mutable handle to the same sender. - // However, each of them returns a oneshot::Receiver, and those are resolved concurrently. - let (validators, session_index) = futures::try_join!( - request_validators(parent, sender).await, - request_session_index_for_child(parent, sender).await, - )?; - - let signing_context = SigningContext { - session_index: session_index?, - parent_hash: parent, - }; - - let validators = validators?; - - Self::construct(&validators, signing_context, keystore).await - } - - /// Construct a validator instance without performing runtime fetches. - /// - /// This can be useful if external code also needs the same data. - pub async fn construct( - validators: &[ValidatorId], - signing_context: SigningContext, - keystore: SyncCryptoStorePtr, - ) -> Result { - let (key, index) = signing_key_and_index(validators, &keystore) - .await - .ok_or(Error::NotAValidator)?; - - Ok(Validator { - signing_context, - key, - index, - }) - } - - /// Get this validator's id. - pub fn id(&self) -> ValidatorId { - self.key.clone() - } - - /// Get this validator's local index. - pub fn index(&self) -> ValidatorIndex { - self.index - } - - /// Get the current signing context. - pub fn signing_context(&self) -> &SigningContext { - &self.signing_context - } - - /// Sign a payload with this validator - pub async fn sign, RealPayload: Encode>( - &self, - keystore: SyncCryptoStorePtr, - payload: Payload, - ) -> Result>, KeystoreError> { - Signed::sign(&keystore, payload, &self.signing_context, self.index, &self.key).await - } -} - -struct AbortOnDrop(future::AbortHandle); - -impl Drop for AbortOnDrop { - fn drop(&mut self) { - self.0.abort(); - } -} - -/// A JobHandle manages a particular job for a subsystem. -struct JobHandle { - _abort_handle: AbortOnDrop, - to_job: mpsc::Sender, -} - -impl JobHandle { - /// Send a message to the job. - async fn send_msg(&mut self, msg: ToJob) -> Result<(), Error> { - self.to_job.send(msg).await.map_err(Into::into) - } -} - -/// This module reexports Prometheus types and defines the [`Metrics`] trait. -pub mod metrics { - /// Reexport Substrate Prometheus types. - pub use substrate_prometheus_endpoint as prometheus; - - - /// Subsystem- or job-specific Prometheus metrics. - /// - /// Usually implemented as a wrapper for `Option` - /// to ensure `Default` bounds or as a dummy type (). - /// Prometheus metrics internally hold an `Arc` reference, so cloning them is fine. - pub trait Metrics: Default + Clone { - /// Try to register metrics in the Prometheus registry. - fn try_register(registry: &prometheus::Registry) -> Result; - - /// Convenience method to register metrics in the optional Promethius registry. - /// - /// If no registry is provided, returns `Default::default()`. Otherwise, returns the same - /// thing that `try_register` does. - fn register(registry: Option<&prometheus::Registry>) -> Result { - match registry { - None => Ok(Self::default()), - Some(registry) => Self::try_register(registry), - } - } - } - - // dummy impl - impl Metrics for () { - fn try_register(_registry: &prometheus::Registry) -> Result<(), prometheus::PrometheusError> { - Ok(()) - } - } -} - -/// Commands from a job to the broader subsystem. -pub enum FromJobCommand { - /// Spawn a child task on the executor. - Spawn(&'static str, Pin + Send>>), - /// Spawn a blocking child task on the executor's dedicated thread pool. - SpawnBlocking(&'static str, Pin + Send>>), -} - -/// A sender for messages from jobs, as well as commands to the overseer. -#[derive(Clone)] -pub struct JobSender { - sender: S, - from_job: mpsc::Sender, -} - -impl JobSender { - /// Get access to the underlying subsystem sender. - pub fn subsystem_sender(&mut self) -> &mut S { - &mut self.sender - } - - /// Send a direct message to some other `Subsystem`, routed based on message type. - pub async fn send_message(&mut self, msg: AllMessages) { - self.sender.send_message(msg).await - } - - /// Send multiple direct messages to other `Subsystem`s, routed based on message type. - pub async fn send_messages(&mut self, msgs: T) - where T: IntoIterator + Send, T::IntoIter: Send - { - self.sender.send_messages(msgs).await - } - - - /// Send a message onto the unbounded queue of some other `Subsystem`, routed based on message - /// type. - /// - /// This function should be used only when there is some other bounding factor on the messages - /// sent with it. Otherwise, it risks a memory leak. - pub fn send_unbounded_message(&mut self, msg: AllMessages) { - self.sender.send_unbounded_message(msg) - } - - /// Send a command to the subsystem, to be relayed onwards to the overseer. - pub async fn send_command(&mut self, msg: FromJobCommand) -> Result<(), mpsc::SendError> { - self.from_job.send(msg).await - } -} - -#[async_trait::async_trait] -impl SubsystemSender for JobSender { - async fn send_message(&mut self, msg: AllMessages) { - self.sender.send_message(msg).await - } - - async fn send_messages(&mut self, msgs: T) - where T: IntoIterator + Send, T::IntoIter: Send - { - self.sender.send_messages(msgs).await - } - - fn send_unbounded_message(&mut self, msg: AllMessages) { - self.sender.send_unbounded_message(msg) - } -} - -impl fmt::Debug for FromJobCommand { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - match self { - Self::Spawn(name, _) => write!(fmt, "FromJobCommand::Spawn({})", name), - Self::SpawnBlocking(name, _) => write!(fmt, "FromJobCommand::SpawnBlocking({})", name), - } - } -} - -/// This trait governs jobs. -/// -/// Jobs are instantiated and killed automatically on appropriate overseer messages. -/// Other messages are passed along to and from the job via the overseer to other subsystems. -pub trait JobTrait: Unpin + Sized { - /// Message type used to send messages to the job. - type ToJob: 'static + BoundToRelayParent + Send; - /// Job runtime error. - type Error: 'static + std::error::Error + Send; - /// Extra arguments this job needs to run properly. - /// - /// If no extra information is needed, it is perfectly acceptable to set it to `()`. - type RunArgs: 'static + Send; - /// Subsystem-specific Prometheus metrics. - /// - /// Jobs spawned by one subsystem should share the same - /// instance of metrics (use `.clone()`). - /// The `delegate_subsystem!` macro should take care of this. - type Metrics: 'static + metrics::Metrics + Send; - - /// Name of the job, i.e. `CandidateBackingJob` - const NAME: &'static str; - - /// Run a job for the given relay `parent`. - /// - /// The job should be ended when `receiver` returns `None`. - fn run( - parent: Hash, - span: Arc, - run_args: Self::RunArgs, - metrics: Self::Metrics, - receiver: mpsc::Receiver, - sender: JobSender, - ) -> Pin> + Send>>; -} - -/// Error which can be returned by the jobs manager -/// -/// Wraps the utility error type and the job-specific error -#[derive(Debug, Error)] -pub enum JobsError { - /// utility error - #[error("Utility")] - Utility(#[source] Error), - /// internal job error - #[error("Internal")] - Job(#[source] JobError), -} - -/// Jobs manager for a subsystem -/// -/// - Spawns new jobs for a given relay-parent on demand. -/// - Closes old jobs for a given relay-parent on demand. -/// - Dispatches messages to the appropriate job for a given relay-parent. -/// - When dropped, aborts all remaining jobs. -/// - implements `Stream`, collecting all messages from subordinate jobs. -#[pin_project] -struct Jobs { - spawner: Spawner, - running: HashMap>, - outgoing_msgs: SelectAll>, -} - -impl Jobs { - /// Create a new Jobs manager which handles spawning appropriate jobs. - pub fn new(spawner: Spawner) -> Self { - Self { - spawner, - running: HashMap::new(), - outgoing_msgs: SelectAll::new(), - } - } - - /// Spawn a new job for this `parent_hash`, with whatever args are appropriate. - fn spawn_job( - &mut self, - parent_hash: Hash, - span: Arc, - run_args: Job::RunArgs, - metrics: Job::Metrics, - sender: Sender, - ) - where Job: JobTrait, Sender: SubsystemSender, - { - let (to_job_tx, to_job_rx) = mpsc::channel(JOB_CHANNEL_CAPACITY); - let (from_job_tx, from_job_rx) = mpsc::channel(JOB_CHANNEL_CAPACITY); - - let (future, abort_handle) = future::abortable(async move { - if let Err(e) = Job::run( - parent_hash, - span, - run_args, - metrics, - to_job_rx, - JobSender { - sender, - from_job: from_job_tx, - }, - ).await { - tracing::error!( - job = Job::NAME, - parent_hash = %parent_hash, - err = ?e, - "job finished with an error", - ); - - return Err(e); - } - - Ok(()) - }); - - self.spawner.spawn(Job::NAME, future.map(drop).boxed()); - self.outgoing_msgs.push(from_job_rx); - - let handle = JobHandle { - _abort_handle: AbortOnDrop(abort_handle), - to_job: to_job_tx, - }; - - self.running.insert(parent_hash, handle); - } - - /// Stop the job associated with this `parent_hash`. - pub async fn stop_job(&mut self, parent_hash: Hash) { - self.running.remove(&parent_hash); - } - - /// Send a message to the appropriate job for this `parent_hash`. - async fn send_msg(&mut self, parent_hash: Hash, msg: ToJob) { - if let Entry::Occupied(mut job) = self.running.entry(parent_hash) { - if job.get_mut().send_msg(msg).await.is_err() { - job.remove(); - } - } - } -} - -impl Stream for Jobs -where - Spawner: SpawnNamed, -{ - type Item = FromJobCommand; - - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - match futures::ready!(Pin::new(&mut self.outgoing_msgs).poll_next(cx)) { - Some(msg) => Poll::Ready(Some(msg)), - // Don't end if there are no jobs running - None => Poll::Pending, - } - } -} - -impl stream::FusedStream for Jobs -where - Spawner: SpawnNamed, -{ - fn is_terminated(&self) -> bool { - false - } -} - -/// Parameters to a job subsystem. -struct JobSubsystemParams { - /// A spawner for sub-tasks. - spawner: Spawner, - /// Arguments to each job. - run_args: RunArgs, - /// Metrics for the subsystem. - metrics: Metrics, -} - -/// A subsystem which wraps jobs. -/// -/// Conceptually, this is very simple: it just loops forever. -/// -/// - On incoming overseer messages, it starts or stops jobs as appropriate. -/// - On other incoming messages, if they can be converted into Job::ToJob and -/// include a hash, then they're forwarded to the appropriate individual job. -/// - On outgoing messages from the jobs, it forwards them to the overseer. -pub struct JobSubsystem { - params: JobSubsystemParams, - _marker: std::marker::PhantomData, -} - -impl JobSubsystem { - /// Create a new `JobSubsystem`. - pub fn new(spawner: Spawner, run_args: Job::RunArgs, metrics: Job::Metrics) -> Self { - JobSubsystem { - params: JobSubsystemParams { - spawner, - run_args, - metrics, - }, - _marker: std::marker::PhantomData, - } - } - - /// Run the subsystem to completion. - pub async fn run(self, mut ctx: Context) - where - Spawner: SpawnNamed + Send + Clone + Unpin + 'static, - Context: SubsystemContext, - Job: 'static + JobTrait + Send, - Job::RunArgs: Clone + Sync, - Job::ToJob: From<::Message> + Sync, - Job::Metrics: Sync, - { - let JobSubsystem { - params: JobSubsystemParams { - spawner, - run_args, - metrics, - }, - .. - } = self; - - let mut jobs = Jobs::new(spawner); - - loop { - select! { - incoming = ctx.recv().fuse() => { - match incoming { - Ok(FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { - activated, - deactivated, - }))) => { - for activated in activated { - let sender: Context::Sender = ctx.sender().clone(); - jobs.spawn_job::( - activated.hash, - activated.span, - run_args.clone(), - metrics.clone(), - sender, - ) - } - - for hash in deactivated { - jobs.stop_job(hash).await; - } - } - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => { - jobs.running.clear(); - break; - } - Ok(FromOverseer::Signal(OverseerSignal::BlockFinalized(..))) => {} - Ok(FromOverseer::Communication { msg }) => { - if let Ok(to_job) = ::try_from(msg) { - jobs.send_msg(to_job.relay_parent(), to_job).await; - } - } - Err(err) => { - tracing::error!( - job = Job::NAME, - err = ?err, - "error receiving message from subsystem context for job", - ); - break; - } - } - } - outgoing = jobs.next() => { - let res = match outgoing.expect("the Jobs stream never ends; qed") { - FromJobCommand::Spawn(name, task) => ctx.spawn(name, task), - FromJobCommand::SpawnBlocking(name, task) - => ctx.spawn_blocking(name, task), - }; - - if let Err(e) = res { - tracing::warn!(err = ?e, "failed to handle command from job"); - } - } - complete => break, - } - } - } -} - -impl Subsystem for JobSubsystem -where - Spawner: SpawnNamed + Send + Clone + Unpin + 'static, - Context: SubsystemContext, - Job: 'static + JobTrait + Send, - Job::RunArgs: Clone + Sync, - Job::ToJob: From<::Message> + Sync, - Job::Metrics: Sync, -{ - fn start(self, ctx: Context) -> SpawnedSubsystem { - let future = Box::pin(async move { - self.run(ctx).await; - Ok(()) - }); - - SpawnedSubsystem { - name: Job::NAME.strip_suffix("Job").unwrap_or(Job::NAME), - future, - } - } -} - -/// A future that wraps another future with a `Delay` allowing for time-limited futures. -#[pin_project] -pub struct Timeout { - #[pin] - future: F, - #[pin] - delay: Delay, -} - -/// Extends `Future` to allow time-limited futures. -pub trait TimeoutExt: Future { - /// Adds a timeout of `duration` to the given `Future`. - /// Returns a new `Future`. - fn timeout(self, duration: Duration) -> Timeout - where - Self: Sized, - { - Timeout { - future: self, - delay: Delay::new(duration), - } - } -} - -impl TimeoutExt for F {} - -impl Future for Timeout { - type Output = Option; - - fn poll(self: Pin<&mut Self>, ctx: &mut Context) -> Poll { - let this = self.project(); - - if this.delay.poll(ctx).is_ready() { - return Poll::Ready(None); - } - - if let Poll::Ready(output) = this.future.poll(ctx) { - return Poll::Ready(Some(output)); - } - - Poll::Pending - } -} - - -#[derive(Copy, Clone)] -enum MetronomeState { - Snooze, - SetAlarm, -} - -/// Create a stream of ticks with a defined cycle duration. -pub struct Metronome { - delay: Delay, - period: Duration, - state: MetronomeState, -} - -impl Metronome -{ - /// Create a new metronome source with a defined cycle duration. - pub fn new(cycle: Duration) -> Self { - let period = cycle.into(); - Self { - period, - delay: Delay::new(period), - state: MetronomeState::Snooze, - } - } -} - -impl futures::Stream for Metronome -{ - type Item = (); - fn poll_next( - mut self: Pin<&mut Self>, - cx: &mut Context<'_> - ) -> Poll> { - loop { - match self.state { - MetronomeState::SetAlarm => { - let val = self.period.clone(); - self.delay.reset(val); - self.state = MetronomeState::Snooze; - } - MetronomeState::Snooze => { - if !Pin::new(&mut self.delay).poll(cx).is_ready() { - break - } - self.state = MetronomeState::SetAlarm; - return Poll::Ready(Some(())); - } - } - } - Poll::Pending - } -} diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs deleted file mode 100644 index 1b857ee7893c..000000000000 --- a/node/subsystem-util/src/rolling_session_window.rs +++ /dev/null @@ -1,635 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A rolling window of sessions and cached session info, updated by the state of newly imported blocks. -//! -//! This is useful for consensus components which need to stay up-to-date about recent sessions but don't -//! care about the state of particular blocks. - -use polkadot_primitives::v1::{Hash, Header, SessionInfo, SessionIndex}; -use polkadot_node_subsystem::{ - SubsystemContext, - messages::{RuntimeApiMessage, RuntimeApiRequest}, - errors::RuntimeApiError, -}; -use futures::channel::oneshot; - -/// Sessions unavailable in state to cache. -#[derive(Debug)] -pub enum SessionsUnavailableKind { - /// Runtime API subsystem was unavailable. - RuntimeApiUnavailable(oneshot::Canceled), - /// The runtime API itself returned an error. - RuntimeApi(RuntimeApiError), - /// Missing session info from runtime API. - Missing, -} - -/// Information about the sessions being fetched. -#[derive(Debug)] -pub struct SessionsUnavailableInfo { - /// The desired window start. - pub window_start: SessionIndex, - /// The desired window end. - pub window_end: SessionIndex, - /// The block hash whose state the sessions were meant to be drawn from. - pub block_hash: Hash, -} - -/// Sessions were unavailable to fetch from the state for some reason. -#[derive(Debug)] -pub struct SessionsUnavailable { - /// The error kind. - kind: SessionsUnavailableKind, - /// The info about the session window, if any. - info: Option, -} - -/// An indicated update of the rolling session window. -#[derive(Debug, PartialEq, Clone)] -pub enum SessionWindowUpdate { - /// The session window was just initialized to the current values. - Initialized { - /// The start of the window (inclusive). - window_start: SessionIndex, - /// The end of the window (inclusive). - window_end: SessionIndex, - }, - /// The session window was just advanced from one range to a new one. - Advanced { - /// The previous start of the window (inclusive). - prev_window_start: SessionIndex, - /// The previous end of the window (inclusive). - prev_window_end: SessionIndex, - /// The new start of the window (inclusive). - new_window_start: SessionIndex, - /// The new end of the window (inclusive). - new_window_end: SessionIndex, - }, - /// The session window was unchanged. - Unchanged, -} - -/// A rolling window of sessions and cached session info. -#[derive(Default)] -pub struct RollingSessionWindow { - earliest_session: Option, - session_info: Vec, - window_size: SessionIndex, -} - -impl RollingSessionWindow { - /// Initialize a new session info cache with the given window size. - pub fn new(window_size: SessionIndex) -> Self { - RollingSessionWindow { - earliest_session: None, - session_info: Vec::new(), - window_size, - } - } - - /// Initialize a new session info cache with the given window size and - /// initial data. - pub fn with_session_info( - window_size: SessionIndex, - earliest_session: SessionIndex, - session_info: Vec, - ) -> Self { - RollingSessionWindow { - earliest_session: Some(earliest_session), - session_info, - window_size, - } - } - - /// Access the session info for the given session index, if stored within the window. - pub fn session_info(&self, index: SessionIndex) -> Option<&SessionInfo> { - self.earliest_session.and_then(|earliest| { - if index < earliest { - None - } else { - self.session_info.get((index - earliest) as usize) - } - }) - - } - - /// Access the index of the earliest session, if the window is not empty. - pub fn earliest_session(&self) -> Option { - self.earliest_session.clone() - } - - /// Access the index of the latest session, if the window is not empty. - pub fn latest_session(&self) -> Option { - self.earliest_session - .map(|earliest| earliest + (self.session_info.len() as SessionIndex).saturating_sub(1)) - } - - /// When inspecting a new import notification, updates the session info cache to match - /// the session of the imported block. - /// - /// this only needs to be called on heads where we are directly notified about import, as sessions do - /// not change often and import notifications are expected to be typically increasing in session number. - /// - /// some backwards drift in session index is acceptable. - pub async fn cache_session_info_for_head( - &mut self, - ctx: &mut impl SubsystemContext, - block_hash: Hash, - block_header: &Header, - ) -> Result { - if self.window_size == 0 { return Ok(SessionWindowUpdate::Unchanged) } - - let session_index = { - let (s_tx, s_rx) = oneshot::channel(); - - // The genesis is guaranteed to be at the beginning of the session and its parent state - // is non-existent. Therefore if we're at the genesis, we request using its state and - // not the parent. - ctx.send_message(RuntimeApiMessage::Request( - if block_header.number == 0 { block_hash } else { block_header.parent_hash }, - RuntimeApiRequest::SessionIndexForChild(s_tx), - ).into()).await; - - match s_rx.await { - Ok(Ok(s)) => s, - Ok(Err(e)) => return Err(SessionsUnavailable { - kind: SessionsUnavailableKind::RuntimeApi(e), - info: None, - }), - Err(e) => return Err(SessionsUnavailable { - kind: SessionsUnavailableKind::RuntimeApiUnavailable(e), - info: None, - }), - } - }; - - match self.earliest_session { - None => { - // First block processed on start-up. - - let window_start = session_index.saturating_sub(self.window_size - 1); - - match load_all_sessions(ctx, block_hash, window_start, session_index).await { - Err(kind) => { - Err(SessionsUnavailable { - kind, - info: Some(SessionsUnavailableInfo { - window_start, - window_end: session_index, - block_hash, - }), - }) - }, - Ok(s) => { - let update = SessionWindowUpdate::Initialized { - window_start, - window_end: session_index, - }; - - self.earliest_session = Some(window_start); - self.session_info = s; - - Ok(update) - } - } - } - Some(old_window_start) => { - let latest = self.latest_session().expect("latest always exists if earliest does; qed"); - - // Either cached or ancient. - if session_index <= latest { return Ok(SessionWindowUpdate::Unchanged) } - - let old_window_end = latest; - - let window_start = session_index.saturating_sub(self.window_size - 1); - - // keep some of the old window, if applicable. - let overlap_start = window_start.saturating_sub(old_window_start); - - let fresh_start = if latest < window_start { - window_start - } else { - latest + 1 - }; - - match load_all_sessions(ctx, block_hash, fresh_start, session_index).await { - Err(kind) => { - Err(SessionsUnavailable { - kind, - info: Some(SessionsUnavailableInfo { - window_start: fresh_start, - window_end: session_index, - block_hash, - }), - }) - }, - Ok(s) => { - let update = SessionWindowUpdate::Advanced { - prev_window_start: old_window_start, - prev_window_end: old_window_end, - new_window_start: window_start, - new_window_end: session_index, - }; - - let outdated = std::cmp::min(overlap_start as usize, self.session_info.len()); - self.session_info.drain(..outdated); - self.session_info.extend(s); - // we need to account for this case: - // window_start ................................... session_index - // old_window_start ........... latest - let new_earliest = std::cmp::max(window_start, old_window_start); - self.earliest_session = Some(new_earliest); - - Ok(update) - } - } - } - } - } -} - -async fn load_all_sessions( - ctx: &mut impl SubsystemContext, - block_hash: Hash, - start: SessionIndex, - end_inclusive: SessionIndex, -) -> Result, SessionsUnavailableKind> { - let mut v = Vec::new(); - for i in start..=end_inclusive { - let (tx, rx)= oneshot::channel(); - ctx.send_message(RuntimeApiMessage::Request( - block_hash, - RuntimeApiRequest::SessionInfo(i, tx), - ).into()).await; - - let session_info = match rx.await { - Ok(Ok(Some(s))) => s, - Ok(Ok(None)) => { - return Err(SessionsUnavailableKind::Missing); - } - Ok(Err(e)) => return Err(SessionsUnavailableKind::RuntimeApi(e)), - Err(canceled) => return Err(SessionsUnavailableKind::RuntimeApiUnavailable(canceled)), - }; - - v.push(session_info); - } - - Ok(v) -} - -#[cfg(test)] -mod tests { - use super::*; - use polkadot_node_subsystem_test_helpers::make_subsystem_context; - use polkadot_node_subsystem::messages::AllMessages; - use sp_core::testing::TaskExecutor; - use assert_matches::assert_matches; - - const TEST_WINDOW_SIZE: SessionIndex = 6; - - fn dummy_session_info(index: SessionIndex) -> SessionInfo { - SessionInfo { - validators: Vec::new(), - discovery_keys: Vec::new(), - assignment_keys: Vec::new(), - validator_groups: Vec::new(), - n_cores: index as _, - zeroth_delay_tranche_width: index as _, - relay_vrf_modulo_samples: index as _, - n_delay_tranches: index as _, - no_show_slots: index as _, - needed_approvals: index as _, - } - } - - fn cache_session_info_test( - expected_start_session: SessionIndex, - session: SessionIndex, - mut window: RollingSessionWindow, - expect_requests_from: SessionIndex, - ) { - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let hash = header.hash(); - - let test_fut = { - let header = header.clone(); - Box::pin(async move { - window.cache_session_info_for_head( - &mut ctx, - hash, - &header, - ).await.unwrap(); - - assert_eq!(window.earliest_session, Some(expected_start_session)); - assert_eq!( - window.session_info, - (expected_start_session..=session).map(dummy_session_info).collect::>(), - ); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = s_tx.send(Ok(session)); - } - ); - - for i in expect_requests_from..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - let _ = s_tx.send(Ok(Some(dummy_session_info(i)))); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn cache_session_info_first_early() { - cache_session_info_test( - 0, - 1, - RollingSessionWindow::new(TEST_WINDOW_SIZE), - 0, - ); - } - - #[test] - fn cache_session_info_does_not_underflow() { - let window = RollingSessionWindow { - earliest_session: Some(1), - session_info: vec![dummy_session_info(1)], - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - 1, - 2, - window, - 2, - ); - } - - #[test] - fn cache_session_info_first_late() { - cache_session_info_test( - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - 100, - RollingSessionWindow::new(TEST_WINDOW_SIZE), - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - ); - } - - #[test] - fn cache_session_info_jump() { - let window = RollingSessionWindow { - earliest_session: Some(50), - session_info: vec![dummy_session_info(50), dummy_session_info(51), dummy_session_info(52)], - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - 100, - window, - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - ); - } - - #[test] - fn cache_session_info_roll_full() { - let start = 99 - (TEST_WINDOW_SIZE - 1); - let window = RollingSessionWindow { - earliest_session: Some(start), - session_info: (start..=99).map(dummy_session_info).collect(), - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - 100, - window, - 100, // should only make one request. - ); - } - - #[test] - fn cache_session_info_roll_many_full() { - let start = 97 - (TEST_WINDOW_SIZE - 1); - let window = RollingSessionWindow { - earliest_session: Some(start), - session_info: (start..=97).map(dummy_session_info).collect(), - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - (100 as SessionIndex).saturating_sub(TEST_WINDOW_SIZE - 1), - 100, - window, - 98, - ); - } - - #[test] - fn cache_session_info_roll_early() { - let start = 0; - let window = RollingSessionWindow { - earliest_session: Some(start), - session_info: (0..=1).map(dummy_session_info).collect(), - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - 0, - 2, - window, - 2, // should only make one request. - ); - } - - #[test] - fn cache_session_info_roll_many_early() { - let start = 0; - let window = RollingSessionWindow { - earliest_session: Some(start), - session_info: (0..=1).map(dummy_session_info).collect(), - window_size: TEST_WINDOW_SIZE, - }; - - cache_session_info_test( - 0, - 3, - window, - 2, - ); - } - - #[test] - fn any_session_unavailable_for_caching_means_no_change() { - let session: SessionIndex = 6; - let start_session = session.saturating_sub(TEST_WINDOW_SIZE - 1); - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 5, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let mut window = RollingSessionWindow::new(TEST_WINDOW_SIZE); - let hash = header.hash(); - - let test_fut = { - let header = header.clone(); - Box::pin(async move { - let res = window.cache_session_info_for_head( - &mut ctx, - hash, - &header, - ).await; - - assert!(res.is_err()); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, header.parent_hash); - let _ = s_tx.send(Ok(session)); - } - ); - - for i in start_session..=session { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(j, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(i, j); - - let _ = s_tx.send(Ok(if i == session { - None - } else { - Some(dummy_session_info(i)) - })); - } - ); - } - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } - - #[test] - fn request_session_info_for_genesis() { - let session: SessionIndex = 0; - - let header = Header { - digest: Default::default(), - extrinsics_root: Default::default(), - number: 0, - state_root: Default::default(), - parent_hash: Default::default(), - }; - - let pool = TaskExecutor::new(); - let (mut ctx, mut handle) = make_subsystem_context::<(), _>(pool.clone()); - - let mut window = RollingSessionWindow::new(TEST_WINDOW_SIZE); - let hash = header.hash(); - - let test_fut = { - let header = header.clone(); - Box::pin(async move { - window.cache_session_info_for_head( - &mut ctx, - hash, - &header, - ).await.unwrap(); - - assert_eq!(window.earliest_session, Some(session)); - assert_eq!( - window.session_info, - vec![dummy_session_info(session)], - ); - }) - }; - - let aux_fut = Box::pin(async move { - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionIndexForChild(s_tx), - )) => { - assert_eq!(h, hash); - let _ = s_tx.send(Ok(session)); - } - ); - - assert_matches!( - handle.recv().await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - h, - RuntimeApiRequest::SessionInfo(s, s_tx), - )) => { - assert_eq!(h, hash); - assert_eq!(s, session); - - let _ = s_tx.send(Ok(Some(dummy_session_info(s)))); - } - ); - }); - - futures::executor::block_on(futures::future::join(test_fut, aux_fut)); - } -} diff --git a/node/subsystem-util/src/runtime/error.rs b/node/subsystem-util/src/runtime/error.rs deleted file mode 100644 index 94cbe05e9453..000000000000 --- a/node/subsystem-util/src/runtime/error.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -// - -//! Error handling related code and Error/Result definitions. - -use thiserror::Error; -use futures::channel::oneshot; - -use polkadot_node_subsystem::errors::RuntimeApiError; -use polkadot_primitives::v1::SessionIndex; - -use crate::Fault; - -pub type Result = std::result::Result; - -/// Errors for `Runtime` cache. -pub type Error = Fault; - -impl From for Error { - fn from(e: NonFatal) -> Self { - Self::from_non_fatal(e) - } -} - -impl From for Error { - fn from(f: Fatal) -> Self { - Self::from_fatal(f) - } -} - -/// Fatal runtime errors. -#[derive(Debug, Error)] -pub enum Fatal { - /// Runtime API subsystem is down, which means we're shutting down. - #[error("Runtime request got canceled")] - RuntimeRequestCanceled(oneshot::Canceled), -} - -/// Errors for fetching of runtime information. -#[derive(Debug, Error)] -pub enum NonFatal { - /// Some request to the runtime failed. - /// For example if we prune a block we're requesting info about. - #[error("Runtime API error")] - RuntimeRequest(RuntimeApiError), - - /// We tried fetching a session info which was not available. - #[error("There was no session with the given index")] - NoSuchSession(SessionIndex), -} - -/// Receive a response from a runtime request and convert errors. -pub(crate) async fn recv_runtime( - r: oneshot::Receiver>, -) -> Result { - let result = r.await - .map_err(Fatal::RuntimeRequestCanceled)? - .map_err(NonFatal::RuntimeRequest)?; - Ok(result) -} diff --git a/node/subsystem-util/src/runtime/mod.rs b/node/subsystem-util/src/runtime/mod.rs deleted file mode 100644 index 5b2180f6d249..000000000000 --- a/node/subsystem-util/src/runtime/mod.rs +++ /dev/null @@ -1,286 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Convenient interface to runtime information. - -use lru::LruCache; - -use parity_scale_codec::Encode; -use sp_application_crypto::AppKey; -use sp_core::crypto::Public; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr}; - -use polkadot_primitives::v1::{CoreState, EncodeAs, GroupIndex, GroupRotationInfo, Hash, OccupiedCore, SessionIndex, SessionInfo, Signed, SigningContext, UncheckedSigned, ValidatorId, ValidatorIndex}; -use polkadot_node_subsystem::SubsystemContext; - -use crate::{ - request_session_index_for_child, request_session_info, - request_availability_cores, - request_validator_groups, -}; - -/// Errors that can happen on runtime fetches. -mod error; - -use error::{recv_runtime, Result}; -pub use error::{Error, NonFatal, Fatal}; - -/// Caching of session info. -/// -/// It should be ensured that a cached session stays live in the cache as long as we might need it. -pub struct RuntimeInfo { - /// Get the session index for a given relay parent. - /// - /// We query this up to a 100 times per block, so caching it here without roundtrips over the - /// overseer seems sensible. - session_index_cache: LruCache, - - /// Look up cached sessions by SessionIndex. - session_info_cache: LruCache, - - /// Key store for determining whether we are a validator and what `ValidatorIndex` we have. - keystore: Option, -} - -/// SessionInfo with additional useful data for validator nodes. -pub struct ExtendedSessionInfo { - /// Actual session info as fetched from the runtime. - pub session_info: SessionInfo, - /// Contains useful information about ourselves, in case this node is a validator. - pub validator_info: ValidatorInfo, -} - -/// Information about ourselves, in case we are an `Authority`. -/// -/// This data is derived from the `SessionInfo` and our key as found in the keystore. -pub struct ValidatorInfo { - /// The index this very validator has in `SessionInfo` vectors, if any. - pub our_index: Option, - /// The group we belong to, if any. - pub our_group: Option, -} - -impl RuntimeInfo { - /// Create a new `RuntimeInfo` for convenient runtime fetches. - pub fn new(keystore: Option) -> Self { - Self { - // Adjust, depending on how many forks we want to support. - session_index_cache: LruCache::new(10), - // We need to cache the current and the last session the most: - session_info_cache: LruCache::new(2), - keystore, - } - } - - /// Retrieve the current session index. - pub async fn get_session_index( - &mut self, - ctx: &mut Context, - parent: Hash, - ) -> Result - where - Context: SubsystemContext, - { - match self.session_index_cache.get(&parent) { - Some(index) => Ok(*index), - None => { - let index = - recv_runtime(request_session_index_for_child(parent, ctx.sender()).await) - .await?; - self.session_index_cache.put(parent, index); - Ok(index) - } - } - } - - /// Get `ExtendedSessionInfo` by relay parent hash. - pub async fn get_session_info<'a, Context>( - &'a mut self, - ctx: &mut Context, - parent: Hash, - ) -> Result<&'a ExtendedSessionInfo> - where - Context: SubsystemContext, - { - let session_index = self.get_session_index(ctx, parent).await?; - - self.get_session_info_by_index(ctx, parent, session_index).await - } - - /// Get `ExtendedSessionInfo` by session index. - /// - /// `request_session_info` still requires the parent to be passed in, so we take the parent - /// in addition to the `SessionIndex`. - pub async fn get_session_info_by_index<'a, Context>( - &'a mut self, - ctx: &mut Context, - parent: Hash, - session_index: SessionIndex, - ) -> Result<&'a ExtendedSessionInfo> - where - Context: SubsystemContext, - { - if !self.session_info_cache.contains(&session_index) { - let session_info = - recv_runtime(request_session_info(parent, session_index, ctx.sender()).await) - .await? - .ok_or(NonFatal::NoSuchSession(session_index))?; - let validator_info = self.get_validator_info(&session_info).await?; - - let full_info = ExtendedSessionInfo { - session_info, - validator_info, - }; - - self.session_info_cache.put(session_index, full_info); - } - Ok( - self.session_info_cache.get(&session_index) - .expect("We just put the value there. qed.") - ) - } - - /// Convenience function for checking the signature of something signed. - pub async fn check_signature( - &mut self, - ctx: &mut Context, - parent: Hash, - signed: UncheckedSigned, - ) -> Result, UncheckedSigned>> - where - Context: SubsystemContext, - Payload: EncodeAs + Clone, - RealPayload: Encode + Clone, - { - let session_index = self.get_session_index(ctx, parent).await?; - let info = self.get_session_info_by_index(ctx, parent, session_index).await?; - Ok(check_signature(session_index, &info.session_info, parent, signed)) - } - - /// Build `ValidatorInfo` for the current session. - /// - /// - /// Returns: `None` if not a validator. - async fn get_validator_info( - &self, - session_info: &SessionInfo, - ) -> Result - { - if let Some(our_index) = self.get_our_index(&session_info.validators).await { - // Get our group index: - let our_group = session_info.validator_groups - .iter() - .enumerate() - .find_map(|(i, g)| { - g.iter().find_map(|v| { - if *v == our_index { - Some(GroupIndex(i as u32)) - } else { - None - } - }) - } - ); - let info = ValidatorInfo { - our_index: Some(our_index), - our_group, - }; - return Ok(info) - } - return Ok(ValidatorInfo { our_index: None, our_group: None }) - } - - /// Get our `ValidatorIndex`. - /// - /// Returns: None if we are not a validator. - async fn get_our_index(&self, validators: &[ValidatorId]) -> Option { - let keystore = self.keystore.as_ref()?; - for (i, v) in validators.iter().enumerate() { - if CryptoStore::has_keys(&**keystore, &[(v.to_raw_vec(), ValidatorId::ID)]) - .await - { - return Some(ValidatorIndex(i as u32)); - } - } - None - } -} - -/// Convenience function for quickly checking the signature on signed data. -pub fn check_signature( - session_index: SessionIndex, - session_info: &SessionInfo, - relay_parent: Hash, - signed: UncheckedSigned, -) -> std::result::Result, UncheckedSigned> -where - Payload: EncodeAs + Clone, - RealPayload: Encode + Clone, -{ - let signing_context = SigningContext { - session_index, - parent_hash: relay_parent, - }; - - session_info.validators - .get(signed.unchecked_validator_index().0 as usize) - .ok_or_else(|| signed.clone()) - .and_then(|v| signed.try_into_checked(&signing_context, v)) -} - -/// Request availability cores from the runtime. -pub async fn get_availability_cores(ctx: &mut Context, relay_parent: Hash) - -> Result> - where - Context: SubsystemContext, -{ - recv_runtime(request_availability_cores(relay_parent, ctx.sender()).await).await -} - -/// Variant of `request_availability_cores` that only returns occupied ones. -pub async fn get_occupied_cores( - ctx: &mut Context, - relay_parent: Hash, -) -> Result> -where - Context: SubsystemContext, -{ - let cores = get_availability_cores(ctx, relay_parent).await?; - - Ok(cores - .into_iter() - .filter_map(|core_state| { - if let CoreState::Occupied(occupied) = core_state { - Some(occupied) - } else { - None - } - }) - .collect() - ) -} - -/// Get group rotation info based on the given relay_parent. -pub async fn get_group_rotation_info(ctx: &mut Context, relay_parent: Hash) - -> Result - where - Context: SubsystemContext -{ - // We drop `groups` here as we don't need them, because of `RuntimeInfo`. Ideally we would not - // fetch them in the first place. - let (_, info) = recv_runtime(request_validator_groups(relay_parent, ctx.sender()).await).await?; - Ok(info) -} diff --git a/node/subsystem-util/src/tests.rs b/node/subsystem-util/src/tests.rs deleted file mode 100644 index 10eb7436716d..000000000000 --- a/node/subsystem-util/src/tests.rs +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use executor::block_on; -use thiserror::Error; -use polkadot_node_jaeger as jaeger; -use polkadot_node_subsystem::{ - messages::{AllMessages, CollatorProtocolMessage}, ActiveLeavesUpdate, FromOverseer, OverseerSignal, - SpawnedSubsystem, ActivatedLeaf, LeafStatus, -}; -use assert_matches::assert_matches; -use futures::{channel::mpsc, executor, StreamExt, future, Future, FutureExt, SinkExt}; -use polkadot_primitives::v1::Hash; -use polkadot_node_subsystem_test_helpers::{self as test_helpers, make_subsystem_context}; -use std::{pin::Pin, sync::{Arc, atomic::{AtomicUsize, Ordering}}, time::Duration}; - -// basic usage: in a nutshell, when you want to define a subsystem, just focus on what its jobs do; -// you can leave the subsystem itself to the job manager. - -// for purposes of demonstration, we're going to whip up a fake subsystem. -// this will 'select' candidates which are pre-loaded in the job - -// job structs are constructed within JobTrait::run -// most will want to retain the sender and receiver, as well as whatever other data they like -struct FakeCollatorProtocolJob { - receiver: mpsc::Receiver, -} - -// Error will mostly be a wrapper to make the try operator more convenient; -// deriving From implementations for most variants is recommended. -// It must implement Debug for logging. -#[derive(Debug, Error)] -enum Error { - #[error(transparent)] - Sending(#[from]mpsc::SendError), -} - -impl JobTrait for FakeCollatorProtocolJob { - type ToJob = CollatorProtocolMessage; - type Error = Error; - type RunArgs = bool; - type Metrics = (); - - const NAME: &'static str = "FakeCollatorProtocolJob"; - - /// Run a job for the parent block indicated - // - // this function is in charge of creating and executing the job's main loop - fn run( - _: Hash, - _: Arc, - run_args: Self::RunArgs, - _metrics: Self::Metrics, - receiver: mpsc::Receiver, - mut sender: JobSender, - ) -> Pin> + Send>> { - async move { - let job = FakeCollatorProtocolJob { receiver }; - - if run_args { - sender.send_message(CollatorProtocolMessage::Invalid( - Default::default(), - Default::default(), - ).into()).await; - } - - // it isn't necessary to break run_loop into its own function, - // but it's convenient to separate the concerns in this way - job.run_loop().await - } - .boxed() - } -} - -impl FakeCollatorProtocolJob { - async fn run_loop(mut self) -> Result<(), Error> { - loop { - match self.receiver.next().await { - Some(_csm) => { - unimplemented!("we'd report the collator to the peer set manager here, but that's not implemented yet"); - } - None => break, - } - } - - Ok(()) - } -} - -// with the job defined, it's straightforward to get a subsystem implementation. -type FakeCollatorProtocolSubsystem = - JobSubsystem; - -// this type lets us pretend to be the overseer -type OverseerHandle = test_helpers::TestSubsystemContextHandle; - -fn test_harness>( - run_args: bool, - test: impl FnOnce(OverseerHandle) -> T, -) { - let _ = env_logger::builder() - .is_test(true) - .filter( - None, - log::LevelFilter::Trace, - ) - .try_init(); - - let pool = sp_core::testing::TaskExecutor::new(); - let (context, overseer_handle) = make_subsystem_context(pool.clone()); - - let subsystem = FakeCollatorProtocolSubsystem::new( - pool, - run_args, - (), - ).run(context); - let test_future = test(overseer_handle); - - futures::pin_mut!(subsystem, test_future); - - executor::block_on(async move { - future::join(subsystem, test_future) - .timeout(Duration::from_secs(2)) - .await - .expect("test timed out instead of completing") - }); -} - -#[test] -fn starting_and_stopping_job_works() { - let relay_parent: Hash = [0; 32].into(); - - test_harness(true, |mut overseer_handle| async move { - overseer_handle - .send(FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: relay_parent, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }), - ))) - .await; - assert_matches!( - overseer_handle.recv().await, - AllMessages::CollatorProtocol(_) - ); - overseer_handle - .send(FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::stop_work(relay_parent), - ))) - .await; - - overseer_handle - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .await; - }); -} - -#[test] -fn sending_to_a_non_running_job_do_not_stop_the_subsystem() { - let relay_parent = Hash::repeat_byte(0x01); - - test_harness(true, |mut overseer_handle| async move { - overseer_handle - .send(FromOverseer::Signal(OverseerSignal::ActiveLeaves( - ActiveLeavesUpdate::start_work(ActivatedLeaf { - hash: relay_parent, - number: 1, - status: LeafStatus::Fresh, - span: Arc::new(jaeger::Span::Disabled), - }), - ))) - .await; - - // send to a non running job - overseer_handle - .send(FromOverseer::Communication { - msg: Default::default(), - }) - .await; - - // the subsystem is still alive - assert_matches!( - overseer_handle.recv().await, - AllMessages::CollatorProtocol(_) - ); - - overseer_handle - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .await; - }); -} - -#[test] -fn test_subsystem_impl_and_name_derivation() { - let pool = sp_core::testing::TaskExecutor::new(); - let (context, _) = make_subsystem_context::(pool.clone()); - - let SpawnedSubsystem { name, .. } = - FakeCollatorProtocolSubsystem::new(pool, false, ()).start(context); - assert_eq!(name, "FakeCollatorProtocol"); -} - - -#[test] -fn tick_tack_metronome() { - let n = Arc::new(AtomicUsize::default()); - - let (tick, mut block) = mpsc::unbounded(); - - let metronome = { - let n = n.clone(); - let stream = Metronome::new(Duration::from_millis(137_u64)); - stream.for_each(move |_res| { - let _ = n.fetch_add(1, Ordering::Relaxed); - let mut tick = tick.clone(); - async move { - tick.send(()).await.expect("Test helper channel works. qed"); - } - }).fuse() - }; - - let f2 = async move { - block.next().await; - assert_eq!(n.load(Ordering::Relaxed), 1_usize); - block.next().await; - assert_eq!(n.load(Ordering::Relaxed), 2_usize); - block.next().await; - assert_eq!(n.load(Ordering::Relaxed), 3_usize); - block.next().await; - assert_eq!(n.load(Ordering::Relaxed), 4_usize); - }.fuse(); - - futures::pin_mut!(f2); - futures::pin_mut!(metronome); - - block_on(async move { - // futures::join!(metronome, f2) - futures::select!( - _ = metronome => unreachable!("Metronome never stops. qed"), - _ = f2 => (), - ) - }); -} diff --git a/node/subsystem/Cargo.toml b/node/subsystem/Cargo.toml deleted file mode 100644 index 1300e2abc7dd..000000000000 --- a/node/subsystem/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "polkadot-node-subsystem" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Subsystem traits and message definitions" - -[dependencies] -async-std = "1.8.0" -async-trait = "0.1.42" -derive_more = "0.99.14" -futures = "0.3.15" -futures-timer = "3.0.2" -mick-jaeger = "0.1.2" -lazy_static = "1.4" -tracing = "0.1.26" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -parking_lot = "0.11.1" -pin-project = "1.0.7" -polkadot-node-primitives = { path = "../primitives" } -polkadot-node-network-protocol = { path = "../network/protocol" } -polkadot-primitives = { path = "../../primitives" } -polkadot-statement-table = { path = "../../statement-table" } -polkadot-node-jaeger = { path = "../jaeger" } -polkadot-procmacro-subsystem-dispatch-gen = { path = "dispatch-gen" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -smallvec = "1.6.1" -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } -thiserror = "1.0.23" -log = "0.4.13" - -[dev-dependencies] -assert_matches = "1.4.0" -async-trait = "0.1.42" -futures = { version = "0.3.15", features = ["thread-pool"] } -polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" } diff --git a/node/subsystem/dispatch-gen/Cargo.toml b/node/subsystem/dispatch-gen/Cargo.toml deleted file mode 100644 index b54c833dd4e3..000000000000 --- a/node/subsystem/dispatch-gen/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "polkadot-procmacro-subsystem-dispatch-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2018" -description = "Small proc macro to create the distribution code for network events" - -[lib] -proc-macro = true - -[dependencies] -syn = { version = "1.0.60", features = ["full"] } -quote = "1.0.9" -proc-macro2 = "1.0.24" -assert_matches = "1.5.0" - -[dev-dependencies] -trybuild = "1.0.42" diff --git a/node/subsystem/dispatch-gen/src/lib.rs b/node/subsystem/dispatch-gen/src/lib.rs deleted file mode 100644 index 737712639cff..000000000000 --- a/node/subsystem/dispatch-gen/src/lib.rs +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use proc_macro2::TokenStream; -use quote::{quote, ToTokens}; -use std::fmt; -use syn::{parse2, Error, Fields, FieldsNamed, FieldsUnnamed, Ident, ItemEnum, Path, Result, Type, Variant}; - -#[proc_macro_attribute] -pub fn subsystem_dispatch_gen(attr: proc_macro::TokenStream, item: proc_macro::TokenStream) -> proc_macro::TokenStream { - let attr: TokenStream = attr.into(); - let item: TokenStream = item.into(); - let mut backup = item.clone(); - impl_subsystem_dispatch_gen(attr.into(), item).unwrap_or_else(|err| { - backup.extend(err.to_compile_error()); - backup - }).into() -} - -/// An enum variant without base type. -#[derive(Clone)] -struct EnumVariantDispatchWithTy { - // enum ty name - ty: Ident, - // variant - variant: EnumVariantDispatch, -} - -impl fmt::Debug for EnumVariantDispatchWithTy { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}::{:?}", self.ty, self.variant) - } -} - -impl ToTokens for EnumVariantDispatchWithTy { - fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { - if let Some(inner) = &self.variant.inner { - let enum_name = &self.ty; - let variant_name = &self.variant.name; - - let quoted = quote! { - #enum_name::#variant_name(#inner::from(event)) - }; - quoted.to_tokens(tokens); - } - } -} - -/// An enum variant without the base type, contains the relevant inner type. -#[derive(Clone)] -struct EnumVariantDispatch { - /// variant name - name: Ident, - /// The inner type for which a `From::from` impl is anticipated from the input type. - /// No code will be generated for this enum variant if `inner` is `None`. - inner: Option, -} - -impl fmt::Debug for EnumVariantDispatch { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}(..)", self.name) - } -} - -fn prepare_enum_variant(variant: &mut Variant) -> Result { - let skip = variant.attrs.iter().find(|attr| attr.path.is_ident("skip")).is_some(); - variant.attrs = variant.attrs.iter().filter(|attr| !attr.path.is_ident("skip")).cloned().collect::>(); - - let variant = variant.clone(); - let span = variant.ident.span(); - let inner = match variant.fields.clone() { - // look for one called inner - Fields::Named(FieldsNamed { brace_token: _, named }) if !skip => named - .iter() - .find_map( - |field| { - if let Some(ident) = &field.ident { - if ident == "inner" { - return Some(Some(field.ty.clone())) - } - } - None - }, - ) - .ok_or_else(|| { - Error::new(span, "To dispatch with struct enum variant, one element must named `inner`") - })?, - - // technically, if it has no inner types we cound not require the #[skip] annotation, but better make it consistent - Fields::Unnamed(FieldsUnnamed { paren_token: _, unnamed }) if !skip => unnamed - .first() - .map(|field| Some(field.ty.clone())) - .ok_or_else(|| Error::new(span, "Must be annotated with skip, even if no inner types exist."))?, - _ if skip => None, - Fields::Unit => { - return Err(Error::new( - span, - "Must be annotated with #[skip].", - )) - } - Fields::Unnamed(_) => { - return Err(Error::new( - span, - "Must be annotated with #[skip] or have in `inner` element which impls `From<_>`.", - )) - } - Fields::Named(_) => { - return Err(Error::new( - span, - "Must be annotated with #[skip] or the first wrapped type must impl `From<_>`.", - )) - } - }; - - Ok(EnumVariantDispatch { name: variant.ident, inner }) -} - -fn impl_subsystem_dispatch_gen(attr: TokenStream, item: TokenStream) -> Result { - let event_ty = parse2::(attr)?; - - let mut ie = parse2::(item)?; - - let message_enum = ie.ident.clone(); - let variants = ie.variants.iter_mut().try_fold(Vec::::new(), |mut acc, variant| { - let variant = prepare_enum_variant(variant)?; - if variant.inner.is_some() { - acc.push(EnumVariantDispatchWithTy { ty: message_enum.clone(), variant }) - } - Ok::<_, syn::Error>(acc) - })?; - - let mut orig = ie.to_token_stream(); - - let msg = "Generated by #[subsystem_dispatch_gen] proc-macro."; - - orig.extend(quote! { - impl #message_enum { - #[doc = #msg] - pub fn dispatch_iter(event: #event_ty) -> impl Iterator + Send { - let mut iter = None.into_iter(); - - #( - let mut iter = iter.chain(std::iter::once(event.focus().ok().map(|event| { - #variants - }))); - )* - iter.filter_map(|x| x) - } - } - }); - Ok(orig) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic() { - let attr = quote! { - NetEvent - }; - - let item = quote! { - /// Documentation. - #[derive(Clone)] - enum AllMessages { - - Sub1(Inner1), - - #[skip] - /// D3 - Sub3, - - /// D4 - #[skip] - Sub4(Inner2), - - /// D2 - Sub2(Inner2), - } - }; - - let output = impl_subsystem_dispatch_gen(attr, item).expect("Simple example always works. qed"); - println!("//generated:"); - println!("{}", output); - } - - #[test] - fn ui() { - let t = trybuild::TestCases::new(); - t.compile_fail("tests/ui/err-*.rs"); - t.pass("tests/ui/ok-*.rs"); - } -} diff --git a/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.rs b/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.rs deleted file mode 100644 index 7248a7181e49..000000000000 --- a/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.rs +++ /dev/null @@ -1,37 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_subsystem_dispatch_gen::subsystem_dispatch_gen; - -/// The event type in question. -#[derive(Clone, Copy)] -enum Event { - Smth, - Else, -} - -impl Event { - fn focus(&self) -> std::result::Result { - unimplemented!("foo") - } -} - -/// This should have a `From` impl but does not. -#[derive(Clone)] -enum Inner { - Foo, - Bar(Event), -} - -#[subsystem_dispatch_gen(Event)] -#[derive(Clone)] -enum AllMessages { - /// Foo - Vvvvvv(Inner), - - /// Missing a `#[skip]` annotation - Uuuuu, -} - -fn main() { - let _x = AllMessages::dispatch_iter(Event::Else); -} diff --git a/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.stderr b/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.stderr deleted file mode 100644 index 855521d2c4ef..000000000000 --- a/node/subsystem/dispatch-gen/tests/ui/err-01-missing-skip.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: Must be annotated with #[skip]. - --> $DIR/err-01-missing-skip.rs:32:5 - | -32 | Uuuuu, - | ^^^^^ - -error[E0599]: no variant or associated item named `dispatch_iter` found for enum `AllMessages` in the current scope - --> $DIR/err-01-missing-skip.rs:36:27 - | -27 | enum AllMessages { - | ---------------- variant or associated item `dispatch_iter` not found here -... -36 | let _x = AllMessages::dispatch_iter(Event::Else); - | ^^^^^^^^^^^^^ variant or associated item not found in `AllMessages` diff --git a/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.rs b/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.rs deleted file mode 100644 index a7abef2c8709..000000000000 --- a/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.rs +++ /dev/null @@ -1,41 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_subsystem_dispatch_gen::subsystem_dispatch_gen; - -/// The event type in question. -#[derive(Clone, Copy, Debug)] -enum Event { - Smth, - Else, -} - -impl Event { - fn focus(&self) -> std::result::Result { - Ok(Intermediate(self.clone())) - } -} - -#[derive(Debug, Clone)] -struct Intermediate(Event); - - -/// This should have a `From` impl but does not. -#[derive(Debug, Clone)] -enum Inner { - Foo, - Bar(Intermediate), -} - -#[subsystem_dispatch_gen(Event)] -#[derive(Clone)] -enum AllMessages { - /// Foo - Vvvvvv(Inner), - - #[skip] - Uuuuu, -} - -fn main() { - let _x = AllMessages::dispatch_iter(Event::Else); -} diff --git a/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.stderr b/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.stderr deleted file mode 100644 index bf82201a7e40..000000000000 --- a/node/subsystem/dispatch-gen/tests/ui/err-02-missing-from.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/err-02-missing-from.rs:29:1 - | -29 | #[subsystem_dispatch_gen(Event)] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | | - | expected enum `Inner`, found struct `Intermediate` - | help: try using a variant of the expected enum: `Inner::Bar(#[subsystem_dispatch_gen(Event)])` - | - = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/node/subsystem/dispatch-gen/tests/ui/ok-01-with-intermediate.rs b/node/subsystem/dispatch-gen/tests/ui/ok-01-with-intermediate.rs deleted file mode 100644 index b160bf9ce1c1..000000000000 --- a/node/subsystem/dispatch-gen/tests/ui/ok-01-with-intermediate.rs +++ /dev/null @@ -1,48 +0,0 @@ -#![allow(dead_code)] - -use polkadot_procmacro_subsystem_dispatch_gen::subsystem_dispatch_gen; - -/// The event type in question. -#[derive(Clone, Copy, Debug)] -enum Event { - Smth, - Else, -} - -impl Event { - fn focus(&self) -> std::result::Result { - Ok(Intermediate(self.clone())) - } -} - - -#[derive(Debug, Clone)] -struct Intermediate(Event); - - -/// This should have a `From` impl but does not. -#[derive(Clone, Debug)] -enum Inner { - Foo, - Bar(Intermediate), -} - -impl From for Inner { - fn from(src: Intermediate) -> Self { - Inner::Bar(src) - } -} - -#[subsystem_dispatch_gen(Event)] -#[derive(Clone)] -enum AllMessages { - /// Foo - Vvvvvv(Inner), - - #[skip] - Uuuuu, -} - -fn main() { - let _x = AllMessages::dispatch_iter(Event::Else); -} diff --git a/node/subsystem/src/errors.rs b/node/subsystem/src/errors.rs deleted file mode 100644 index acd33cff1dfb..000000000000 --- a/node/subsystem/src/errors.rs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Error types for the subsystem requests. - -/// A description of an error causing the runtime API request to be unservable. -#[derive(Debug, Clone)] -pub struct RuntimeApiError(String); - -impl From for RuntimeApiError { - fn from(s: String) -> Self { - RuntimeApiError(s) - } -} - -impl core::fmt::Display for RuntimeApiError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - write!(f, "{}", self.0) - } -} - -impl std::error::Error for RuntimeApiError {} - -/// A description of an error causing the chain API request to be unservable. -#[derive(Debug, Clone)] -pub struct ChainApiError { - msg: String, -} - -impl From<&str> for ChainApiError { - fn from(s: &str) -> Self { - s.to_owned().into() - } -} - -impl From for ChainApiError { - fn from(msg: String) -> Self { - Self { msg } - } -} - -impl core::fmt::Display for ChainApiError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - write!(f, "{}", self.msg) - } -} - -impl std::error::Error for ChainApiError {} - -/// An error that may happen during Availability Recovery process. -#[derive(PartialEq, Debug, Clone)] -pub enum RecoveryError { - /// A chunk is recovered but is invalid. - Invalid, - - /// A requested chunk is unavailable. - Unavailable, -} - -impl std::fmt::Display for RecoveryError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - write!(f, "{}", self) - } -} - -impl std::error::Error for RecoveryError {} diff --git a/node/subsystem/src/lib.rs b/node/subsystem/src/lib.rs deleted file mode 100644 index d722508ca4b4..000000000000 --- a/node/subsystem/src/lib.rs +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Subsystem trait definitions and message types. -//! -//! Node-side logic for Polkadot is mostly comprised of Subsystems, which are discrete components -//! that communicate via message-passing. They are coordinated by an overseer, provided by a -//! separate crate. - -#![warn(missing_docs)] - -use std::{pin::Pin, sync::Arc, fmt}; - -use futures::prelude::*; -use futures::channel::{mpsc, oneshot}; -use futures::future::BoxFuture; - -use polkadot_primitives::v1::{Hash, BlockNumber}; -use async_trait::async_trait; -use smallvec::SmallVec; - -pub mod errors; -pub mod messages; - -pub use polkadot_node_jaeger as jaeger; -pub use jaeger::*; - -use self::messages::AllMessages; - -/// How many slots are stack-reserved for active leaves updates -/// -/// If there are fewer than this number of slots, then we've wasted some stack space. -/// If there are greater than this number of slots, then we fall back to a heap vector. -const ACTIVE_LEAVES_SMALLVEC_CAPACITY: usize = 8; - - -/// The status of an activated leaf. -#[derive(Debug, Clone)] -pub enum LeafStatus { - /// A leaf is fresh when it's the first time the leaf has been encountered. - /// Most leaves should be fresh. - Fresh, - /// A leaf is stale when it's encountered for a subsequent time. This will happen - /// when the chain is reverted or the fork-choice rule abandons some chain. - Stale, -} - -impl LeafStatus { - /// Returns a bool indicating fresh status. - pub fn is_fresh(&self) -> bool { - match *self { - LeafStatus::Fresh => true, - LeafStatus::Stale => false, - } - } - - /// Returns a bool indicating stale status. - pub fn is_stale(&self) -> bool { - match *self { - LeafStatus::Fresh => false, - LeafStatus::Stale => true, - } - } -} - -/// Activated leaf. -#[derive(Debug, Clone)] -pub struct ActivatedLeaf { - /// The block hash. - pub hash: Hash, - /// The block number. - pub number: BlockNumber, - /// The status of the leaf. - pub status: LeafStatus, - /// An associated [`jaeger::Span`]. - /// - /// NOTE: Each span should only be kept active as long as the leaf is considered active and should be dropped - /// when the leaf is deactivated. - pub span: Arc, -} - -/// Changes in the set of active leaves: the parachain heads which we care to work on. -/// -/// Note that the activated and deactivated fields indicate deltas, not complete sets. -#[derive(Clone, Default)] -pub struct ActiveLeavesUpdate { - /// New relay chain blocks of interest. - pub activated: SmallVec<[ActivatedLeaf; ACTIVE_LEAVES_SMALLVEC_CAPACITY]>, - /// Relay chain block hashes no longer of interest. - pub deactivated: SmallVec<[Hash; ACTIVE_LEAVES_SMALLVEC_CAPACITY]>, -} - -impl ActiveLeavesUpdate { - /// Create a ActiveLeavesUpdate with a single activated hash - pub fn start_work(activated: ActivatedLeaf) -> Self { - Self { activated: [activated][..].into(), ..Default::default() } - } - - /// Create a ActiveLeavesUpdate with a single deactivated hash - pub fn stop_work(hash: Hash) -> Self { - Self { deactivated: [hash][..].into(), ..Default::default() } - } - - /// Is this update empty and doesn't contain any information? - pub fn is_empty(&self) -> bool { - self.activated.is_empty() && self.deactivated.is_empty() - } -} - -impl PartialEq for ActiveLeavesUpdate { - /// Equality for `ActiveLeavesUpdate` doesnt imply bitwise equality. - /// - /// Instead, it means equality when `activated` and `deactivated` are considered as sets. - fn eq(&self, other: &Self) -> bool { - self.activated.len() == other.activated.len() && self.deactivated.len() == other.deactivated.len() - && self.activated.iter().all(|a| other.activated.iter().any(|o| a.hash == o.hash)) - && self.deactivated.iter().all(|a| other.deactivated.contains(a)) - } -} - -impl fmt::Debug for ActiveLeavesUpdate { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - struct Activated<'a>(&'a [ActivatedLeaf]); - impl fmt::Debug for Activated<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.0.iter().map(|e| e.hash)).finish() - } - } - - f.debug_struct("ActiveLeavesUpdate") - .field("activated", &Activated(&self.activated)) - .field("deactivated", &self.deactivated) - .finish() - } -} - -/// Signals sent by an overseer to a subsystem. -#[derive(PartialEq, Clone, Debug)] -pub enum OverseerSignal { - /// Subsystems should adjust their jobs to start and stop work on appropriate block hashes. - ActiveLeaves(ActiveLeavesUpdate), - /// `Subsystem` is informed of a finalized block by its block hash and number. - BlockFinalized(Hash, BlockNumber), - /// Conclude the work of the `Overseer` and all `Subsystem`s. - Conclude, -} - -/// A message type that a subsystem receives from an overseer. -/// It wraps signals from an overseer and messages that are circulating -/// between subsystems. -/// -/// It is generic over over the message type `M` that a particular `Subsystem` may use. -#[derive(Debug)] -pub enum FromOverseer { - /// Signal from the `Overseer`. - Signal(OverseerSignal), - - /// Some other `Subsystem`'s message. - Communication { - /// Contained message - msg: M, - }, -} - -impl From for FromOverseer { - fn from(signal: OverseerSignal) -> Self { - FromOverseer::Signal(signal) - } -} - -/// An error type that describes faults that may happen -/// -/// These are: -/// * Channels being closed -/// * Subsystems dying when they are not expected to -/// * Subsystems not dying when they are told to die -/// * etc. -#[derive(thiserror::Error, Debug)] -#[allow(missing_docs)] -pub enum SubsystemError { - #[error(transparent)] - NotifyCancellation(#[from] oneshot::Canceled), - - #[error(transparent)] - QueueError(#[from] mpsc::SendError), - - #[error("Failed to spawn a task: {0}")] - TaskSpawn(&'static str), - - #[error(transparent)] - Infallible(#[from] std::convert::Infallible), - - #[error(transparent)] - Prometheus(#[from] substrate_prometheus_endpoint::PrometheusError), - - #[error(transparent)] - Jaeger(#[from] JaegerError), - - #[error("Failed to {0}")] - Context(String), - - #[error("Subsystem stalled: {0}")] - SubsystemStalled(&'static str), - - /// Per origin (or subsystem) annotations to wrap an error. - #[error("Error originated in {origin}")] - FromOrigin { - /// An additional annotation tag for the origin of `source`. - origin: &'static str, - /// The wrapped error. Marked as source for tracking the error chain. - #[source] source: Box - }, -} - -impl SubsystemError { - /// Adds a `str` as `origin` to the given error `err`. - pub fn with_origin(origin: &'static str, err: E) -> Self { - Self::FromOrigin { origin, source: Box::new(err) } - } -} - -/// An asynchronous subsystem task.. -/// -/// In essence it's just a newtype wrapping a `BoxFuture`. -pub struct SpawnedSubsystem { - /// Name of the subsystem being spawned. - pub name: &'static str, - /// The task of the subsystem being spawned. - pub future: BoxFuture<'static, SubsystemResult<()>>, -} - -/// A `Result` type that wraps [`SubsystemError`]. -/// -/// [`SubsystemError`]: struct.SubsystemError.html -pub type SubsystemResult = Result; - -/// A sender used by subsystems to communicate with other subsystems. -/// -/// Each clone of this type may add more capacity to the bounded buffer, so clones should -/// be used sparingly. -#[async_trait] -pub trait SubsystemSender: Send + Clone + 'static { - /// Send a direct message to some other `Subsystem`, routed based on message type. - async fn send_message(&mut self, msg: AllMessages); - - /// Send multiple direct messages to other `Subsystem`s, routed based on message type. - async fn send_messages(&mut self, msgs: T) - where T: IntoIterator + Send, T::IntoIter: Send; - - /// Send a message onto the unbounded queue of some other `Subsystem`, routed based on message - /// type. - /// - /// This function should be used only when there is some other bounding factor on the messages - /// sent with it. Otherwise, it risks a memory leak. - fn send_unbounded_message(&mut self, msg: AllMessages); -} - -/// A context type that is given to the [`Subsystem`] upon spawning. -/// It can be used by [`Subsystem`] to communicate with other [`Subsystem`]s -/// or spawn jobs. -/// -/// [`Overseer`]: struct.Overseer.html -/// [`SubsystemJob`]: trait.SubsystemJob.html -#[async_trait] -pub trait SubsystemContext: Send + Sized + 'static { - /// The message type of this context. Subsystems launched with this context will expect - /// to receive messages of this type. - type Message: Send; - - /// The message sender type of this context. Clones of the sender should be used sparingly. - type Sender: SubsystemSender; - - /// Try to asynchronously receive a message. - /// - /// This has to be used with caution, if you loop over this without - /// using `pending!()` macro you will end up with a busy loop! - async fn try_recv(&mut self) -> Result>, ()>; - - /// Receive a message. - async fn recv(&mut self) -> SubsystemResult>; - - /// Spawn a child task on the executor. - fn spawn(&mut self, name: &'static str, s: Pin + Send>>) -> SubsystemResult<()>; - - /// Spawn a blocking child task on the executor's dedicated thread pool. - fn spawn_blocking( - &mut self, - name: &'static str, - s: Pin + Send>>, - ) -> SubsystemResult<()>; - - /// Get a mutable reference to the sender. - fn sender(&mut self) -> &mut Self::Sender; - - /// Send a direct message to some other `Subsystem`, routed based on message type. - async fn send_message(&mut self, msg: AllMessages) { - self.sender().send_message(msg).await - } - - /// Send multiple direct messages to other `Subsystem`s, routed based on message type. - async fn send_messages(&mut self, msgs: T) - where T: IntoIterator + Send, T::IntoIter: Send - { - self.sender().send_messages(msgs).await - } - - - /// Send a message onto the unbounded queue of some other `Subsystem`, routed based on message - /// type. - /// - /// This function should be used only when there is some other bounding factor on the messages - /// sent with it. Otherwise, it risks a memory leak. - /// - /// Generally, for this method to be used, these conditions should be met: - /// * There is a communication cycle between subsystems - /// * One of the parts of the cycle has a clear bound on the number of messages produced. - fn send_unbounded_message(&mut self, msg: AllMessages) { - self.sender().send_unbounded_message(msg) - } -} - -/// A trait that describes the [`Subsystem`]s that can run on the [`Overseer`]. -/// -/// It is generic over the message type circulating in the system. -/// The idea that we want some type contaning persistent state that -/// can spawn actually running subsystems when asked to. -/// -/// [`Overseer`]: struct.Overseer.html -/// [`Subsystem`]: trait.Subsystem.html -pub trait Subsystem { - /// Start this `Subsystem` and return `SpawnedSubsystem`. - fn start(self, ctx: C) -> SpawnedSubsystem; -} - -/// A dummy subsystem that implements [`Subsystem`] for all -/// types of messages. Used for tests or as a placeholder. -pub struct DummySubsystem; - -impl Subsystem for DummySubsystem -where - C::Message: std::fmt::Debug -{ - fn start(self, mut ctx: C) -> SpawnedSubsystem { - let future = Box::pin(async move { - loop { - match ctx.recv().await { - Err(_) => return Ok(()), - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => return Ok(()), - Ok(overseer_msg) => { - tracing::debug!( - target: "dummy-subsystem", - "Discarding a message sent from overseer {:?}", - overseer_msg - ); - continue; - } - } - } - }); - - SpawnedSubsystem { - name: "dummy-subsystem", - future, - } - } -} diff --git a/node/subsystem/src/messages.rs b/node/subsystem/src/messages.rs deleted file mode 100644 index f6171a8a3baf..000000000000 --- a/node/subsystem/src/messages.rs +++ /dev/null @@ -1,901 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Message types for the overseer and subsystems. -//! -//! These messages are intended to define the protocol by which different subsystems communicate with each -//! other and signals that they receive from an overseer to coordinate their work. -//! This is intended for use with the `polkadot-overseer` crate. -//! -//! Subsystems' APIs are defined separately from their implementation, leading to easier mocking. - -use std::{collections::{BTreeMap, HashSet}, sync::Arc}; - -use futures::channel::{mpsc, oneshot}; -use thiserror::Error; - -pub use sc_network::IfDisconnected; - -use polkadot_node_network_protocol::{ - peer_set::PeerSet, - request_response::{request::IncomingRequest, v1 as req_res_v1, Requests}, - v1 as protocol_v1, PeerId, UnifiedReputationChange, -}; -use polkadot_node_primitives::{ - approval::{BlockApprovalMeta, IndirectAssignmentCert, IndirectSignedApprovalVote}, - AvailableData, BabeEpoch, CandidateVotes, CollationGenerationConfig, ErasureChunk, PoV, - SignedDisputeStatement, SignedFullStatement, ValidationResult, BlockWeight, -}; -use polkadot_primitives::v1::{ - AuthorityDiscoveryId, BackedCandidate, BlockNumber, CandidateDescriptor, CandidateEvent, - CandidateHash, CandidateIndex, CandidateReceipt, CollatorId, CommittedCandidateReceipt, - CoreState, GroupIndex, GroupRotationInfo, Hash, Header as BlockHeader, Id as ParaId, - InboundDownwardMessage, InboundHrmpMessage, MultiDisputeStatementSet, OccupiedCoreAssumption, - PersistedValidationData, SessionIndex, SessionInfo, SignedAvailabilityBitfield, - SignedAvailabilityBitfields, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, - ValidatorSignature, -}; -use polkadot_procmacro_subsystem_dispatch_gen::subsystem_dispatch_gen; -use polkadot_statement_table::v1::Misbehavior; - -/// Network events as transmitted to other subsystems, wrapped in their message types. -pub mod network_bridge_event; -pub use network_bridge_event::NetworkBridgeEvent; - -/// Subsystem messages where each message is always bound to a relay parent. -pub trait BoundToRelayParent { - /// Returns the relay parent this message is bound to. - fn relay_parent(&self) -> Hash; -} - -/// Messages received by the Candidate Backing subsystem. -#[derive(Debug)] -pub enum CandidateBackingMessage { - /// Requests a set of backable candidates that could be backed in a child of the given - /// relay-parent, referenced by its hash. - GetBackedCandidates(Hash, Vec, oneshot::Sender>), - /// Note that the Candidate Backing subsystem should second the given candidate in the context of the - /// given relay-parent (ref. by hash). This candidate must be validated. - Second(Hash, CandidateReceipt, PoV), - /// Note a validator's statement about a particular candidate. Disagreements about validity must be escalated - /// to a broader check by Misbehavior Arbitration. Agreements are simply tallied until a quorum is reached. - Statement(Hash, SignedFullStatement), -} - -impl BoundToRelayParent for CandidateBackingMessage { - fn relay_parent(&self) -> Hash { - match self { - Self::GetBackedCandidates(hash, _, _) => *hash, - Self::Second(hash, _, _) => *hash, - Self::Statement(hash, _) => *hash, - } - } -} - -/// Blanket error for validation failing for internal reasons. -#[derive(Debug, Error)] -#[error("Validation failed with {0:?}")] -pub struct ValidationFailed(pub String); - -/// Messages received by the Validation subsystem. -/// -/// ## Validation Requests -/// -/// Validation requests made to the subsystem should return an error only on internal error. -/// Otherwise, they should return either `Ok(ValidationResult::Valid(_))` -/// or `Ok(ValidationResult::Invalid)`. -#[derive(Debug)] -pub enum CandidateValidationMessage { - /// Validate a candidate with provided parameters using relay-chain state. - /// - /// This will implicitly attempt to gather the `PersistedValidationData` and `ValidationCode` - /// from the runtime API of the chain, based on the `relay_parent` - /// of the `CandidateDescriptor`. - /// - /// This will also perform checking of validation outputs against the acceptance criteria. - /// - /// If there is no state available which can provide this data or the core for - /// the para is not free at the relay-parent, an error is returned. - ValidateFromChainState( - CandidateDescriptor, - Arc, - oneshot::Sender>, - ), - /// Validate a candidate with provided, exhaustive parameters for validation. - /// - /// Explicitly provide the `PersistedValidationData` and `ValidationCode` so this can do full - /// validation without needing to access the state of the relay-chain. - /// - /// This request doesn't involve acceptance criteria checking, therefore only useful for the - /// cases where the validity of the candidate is established. This is the case for the typical - /// use-case: secondary checkers would use this request relying on the full prior checks - /// performed by the relay-chain. - ValidateFromExhaustive( - PersistedValidationData, - ValidationCode, - CandidateDescriptor, - Arc, - oneshot::Sender>, - ), -} - -impl CandidateValidationMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - match self { - Self::ValidateFromChainState(_, _, _) => None, - Self::ValidateFromExhaustive(_, _, _, _, _) => None, - } - } -} - - -/// Messages received by the Collator Protocol subsystem. -#[derive(Debug, derive_more::From)] -pub enum CollatorProtocolMessage { - /// Signal to the collator protocol that it should connect to validators with the expectation - /// of collating on the given para. This is only expected to be called once, early on, if at all, - /// and only by the Collation Generation subsystem. As such, it will overwrite the value of - /// the previous signal. - /// - /// This should be sent before any `DistributeCollation` message. - CollateOn(ParaId), - /// Provide a collation to distribute to validators with an optional result sender. - /// - /// The result sender should be informed when at least one parachain validator seconded the collation. It is also - /// completely okay to just drop the sender. - DistributeCollation(CandidateReceipt, PoV, Option>), - /// Report a collator as having provided an invalid collation. This should lead to disconnect - /// and blacklist of the collator. - ReportCollator(CollatorId), - /// Get a network bridge update. - #[from] - NetworkBridgeUpdateV1(NetworkBridgeEvent), - /// Incoming network request for a collation. - CollationFetchingRequest(IncomingRequest), - /// We recommended a particular candidate to be seconded, but it was invalid; penalize the collator. - /// - /// The hash is the relay parent. - Invalid(Hash, CandidateReceipt), - /// The candidate we recommended to be seconded was validated successfully. - /// - /// The hash is the relay parent. - Seconded(Hash, SignedFullStatement), -} - -impl Default for CollatorProtocolMessage { - fn default() -> Self { - Self::CollateOn(Default::default()) - } -} - -impl BoundToRelayParent for CollatorProtocolMessage { - fn relay_parent(&self) -> Hash { - Default::default() - } -} - -/// Messages received by the dispute coordinator subsystem. -#[derive(Debug)] -pub enum DisputeCoordinatorMessage { - /// Import a statement by a validator about a candidate. - /// - /// The subsystem will silently discard ancient statements or sets of only dispute-specific statements for - /// candidates that are previously unknown to the subsystem. The former is simply because ancient - /// data is not relevant and the latter is as a DoS prevention mechanism. Both backing and approval - /// statements already undergo anti-DoS procedures in their respective subsystems, but statements - /// cast specifically for disputes are not necessarily relevant to any candidate the system is - /// already aware of and thus present a DoS vector. Our expectation is that nodes will notify each - /// other of disputes over the network by providing (at least) 2 conflicting statements, of which one is either - /// a backing or validation statement. - /// - /// This does not do any checking of the message signature. - ImportStatements { - /// The hash of the candidate. - candidate_hash: CandidateHash, - /// The candidate receipt itself. - candidate_receipt: CandidateReceipt, - /// The session the candidate appears in. - session: SessionIndex, - /// Statements, with signatures checked, by validators participating in disputes. - /// - /// The validator index passed alongside each statement should correspond to the index - /// of the validator in the set. - statements: Vec<(SignedDisputeStatement, ValidatorIndex)>, - }, - /// Fetch a list of all active disputes that the coordinator is aware of. - ActiveDisputes(oneshot::Sender>), - /// Get candidate votes for a candidate. - QueryCandidateVotes(SessionIndex, CandidateHash, oneshot::Sender>), - /// Sign and issue local dispute votes. A value of `true` indicates validity, and `false` invalidity. - IssueLocalStatement(SessionIndex, CandidateHash, CandidateReceipt, bool), - /// Determine the highest undisputed block within the given chain, based on where candidates - /// were included. If even the base block should not be finalized due to a dispute, - /// then `None` should be returned on the channel. - /// - /// The block descriptions begin counting upwards from the block after the given `base_number`. The `base_number` - /// is typically the number of the last finalized block but may be slightly higher. This block - /// is inevitably going to be finalized so it is not accounted for by this function. - DetermineUndisputedChain { - /// The number of the lowest possible block to vote on. - base_number: BlockNumber, - /// Descriptions of all the blocks counting upwards from the block after the base number - block_descriptions: Vec<(Hash, SessionIndex, Vec)>, - /// A response channel - `None` to vote on base, `Some` to vote higher. - tx: oneshot::Sender>, - } -} - -/// Messages received by the dispute participation subsystem. -#[derive(Debug)] -pub enum DisputeParticipationMessage { - /// Validate a candidate for the purposes of participating in a dispute. - Participate { - /// The hash of the candidate - candidate_hash: CandidateHash, - /// The candidate receipt itself. - candidate_receipt: CandidateReceipt, - /// The session the candidate appears in. - session: SessionIndex, - /// The number of validators in the session. - n_validators: u32, - }, -} - -/// Messages received by the network bridge subsystem. -#[derive(Debug)] -pub enum NetworkBridgeMessage { - /// Report a peer for their actions. - ReportPeer(PeerId, UnifiedReputationChange), - - /// Disconnect a peer from the given peer-set without affecting their reputation. - DisconnectPeer(PeerId, PeerSet), - - /// Send a message to one or more peers on the validation peer-set. - SendValidationMessage(Vec, protocol_v1::ValidationProtocol), - - /// Send a message to one or more peers on the collation peer-set. - SendCollationMessage(Vec, protocol_v1::CollationProtocol), - - /// Send a batch of validation messages. - /// - /// NOTE: Messages will be processed in order (at least statement distribution relies on this). - SendValidationMessages(Vec<(Vec, protocol_v1::ValidationProtocol)>), - - /// Send a batch of collation messages. - /// - /// NOTE: Messages will be processed in order. - SendCollationMessages(Vec<(Vec, protocol_v1::CollationProtocol)>), - - /// Send requests via substrate request/response. - /// Second parameter, tells what to do if we are not yet connected to the peer. - SendRequests(Vec, IfDisconnected), - - /// Connect to peers who represent the given `validator_ids`. - /// - /// Also ask the network to stay connected to these peers at least - /// until a new request is issued. - /// - /// Because it overrides the previous request, it must be ensured - /// that `validator_ids` include all peers the subsystems - /// are interested in (per `PeerSet`). - /// - /// A caller can learn about validator connections by listening to the - /// `PeerConnected` events from the network bridge. - ConnectToValidators { - /// Ids of the validators to connect to. - validator_ids: Vec, - /// The underlying protocol to use for this request. - peer_set: PeerSet, - /// Sends back the number of `AuthorityDiscoveryId`s which - /// authority discovery has failed to resolve. - failed: oneshot::Sender, - }, - /// Inform the distribution subsystems about the new - /// gossip network topology formed. - NewGossipTopology { - /// Ids of our neighbors in the new gossip topology. - /// We're not necessarily connected to all of them, but we should. - our_neighbors: HashSet, - } -} - -impl NetworkBridgeMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - match self { - Self::ReportPeer(_, _) => None, - Self::DisconnectPeer(_, _) => None, - Self::SendValidationMessage(_, _) => None, - Self::SendCollationMessage(_, _) => None, - Self::SendValidationMessages(_) => None, - Self::SendCollationMessages(_) => None, - Self::ConnectToValidators { .. } => None, - Self::SendRequests { .. } => None, - Self::NewGossipTopology { .. } => None, - } - } -} - -/// Availability Distribution Message. -#[derive(Debug)] -pub enum AvailabilityDistributionMessage { - /// Incoming network request for an availability chunk. - ChunkFetchingRequest(IncomingRequest), - /// Incoming network request for a seconded PoV. - PoVFetchingRequest(IncomingRequest), - /// Instruct availability distribution to fetch a remote PoV. - /// - /// NOTE: The result of this fetch is not yet locally validated and could be bogus. - FetchPoV { - /// The relay parent giving the necessary context. - relay_parent: Hash, - /// Validator to fetch the PoV from. - from_validator: ValidatorIndex, - /// Candidate hash to fetch the PoV for. - candidate_hash: CandidateHash, - /// Expected hash of the PoV, a PoV not matching this hash will be rejected. - pov_hash: Hash, - /// Sender for getting back the result of this fetch. - /// - /// The sender will be canceled if the fetching failed for some reason. - tx: oneshot::Sender, - }, -} - -/// Availability Recovery Message. -#[derive(Debug, derive_more::From)] -pub enum AvailabilityRecoveryMessage { - /// Recover available data from validators on the network. - RecoverAvailableData( - CandidateReceipt, - SessionIndex, - Option, // Optional backing group to request from first. - oneshot::Sender>, - ), - /// Incoming network request for available data. - #[from] - AvailableDataFetchingRequest(IncomingRequest), -} - -/// Bitfield distribution message. -#[derive(Debug, derive_more::From)] -pub enum BitfieldDistributionMessage { - /// Distribute a bitfield via gossip to other validators. - DistributeBitfield(Hash, SignedAvailabilityBitfield), - - /// Event from the network bridge. - #[from] - NetworkBridgeUpdateV1(NetworkBridgeEvent), -} - -impl BitfieldDistributionMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - match self { - Self::DistributeBitfield(hash, _) => Some(*hash), - Self::NetworkBridgeUpdateV1(_) => None, - } - } -} - -/// Bitfield signing message. -/// -/// Currently non-instantiable. -#[derive(Debug)] -pub enum BitfieldSigningMessage {} - -impl BoundToRelayParent for BitfieldSigningMessage { - fn relay_parent(&self) -> Hash { - match *self {} - } -} - -/// Availability store subsystem message. -#[derive(Debug)] -pub enum AvailabilityStoreMessage { - /// Query a `AvailableData` from the AV store. - QueryAvailableData(CandidateHash, oneshot::Sender>), - - /// Query whether a `AvailableData` exists within the AV Store. - /// - /// This is useful in cases when existence - /// matters, but we don't want to necessarily pass around multiple - /// megabytes of data to get a single bit of information. - QueryDataAvailability(CandidateHash, oneshot::Sender), - - /// Query an `ErasureChunk` from the AV store by the candidate hash and validator index. - QueryChunk(CandidateHash, ValidatorIndex, oneshot::Sender>), - - /// Query all chunks that we have for the given candidate hash. - QueryAllChunks(CandidateHash, oneshot::Sender>), - - /// Query whether an `ErasureChunk` exists within the AV Store. - /// - /// This is useful in cases like bitfield signing, when existence - /// matters, but we don't want to necessarily pass around large - /// quantities of data to get a single bit of information. - QueryChunkAvailability(CandidateHash, ValidatorIndex, oneshot::Sender), - - /// Store an `ErasureChunk` in the AV store. - /// - /// Return `Ok(())` if the store operation succeeded, `Err(())` if it failed. - StoreChunk { - /// A hash of the candidate this chunk belongs to. - candidate_hash: CandidateHash, - /// The chunk itself. - chunk: ErasureChunk, - /// Sending side of the channel to send result to. - tx: oneshot::Sender>, - }, - - /// Store a `AvailableData` in the AV store. - /// If `ValidatorIndex` is present store corresponding chunk also. - /// - /// Return `Ok(())` if the store operation succeeded, `Err(())` if it failed. - StoreAvailableData(CandidateHash, Option, u32, AvailableData, oneshot::Sender>), -} - -impl AvailabilityStoreMessage { - /// In fact, none of the AvailabilityStore messages assume a particular relay parent. - pub fn relay_parent(&self) -> Option { - match self { - _ => None, - } - } -} - -/// A response channel for the result of a chain API request. -pub type ChainApiResponseChannel = oneshot::Sender>; - -/// Chain API request subsystem message. -#[derive(Debug)] -pub enum ChainApiMessage { - /// Request the block number by hash. - /// Returns `None` if a block with the given hash is not present in the db. - BlockNumber(Hash, ChainApiResponseChannel>), - /// Request the block header by hash. - /// Returns `None` if a block with the given hash is not present in the db. - BlockHeader(Hash, ChainApiResponseChannel>), - /// Get the cumulative weight of the given block, by hash. - /// If the block or weight is unknown, this returns `None`. - /// - /// Note: this the weight within the low-level fork-choice rule, - /// not the high-level one implemented in the chain-selection subsystem. - /// - /// Weight is used for comparing blocks in a fork-choice rule. - BlockWeight(Hash, ChainApiResponseChannel>), - /// Request the finalized block hash by number. - /// Returns `None` if a block with the given number is not present in the db. - /// Note: the caller must ensure the block is finalized. - FinalizedBlockHash(BlockNumber, ChainApiResponseChannel>), - /// Request the last finalized block number. - /// This request always succeeds. - FinalizedBlockNumber(ChainApiResponseChannel), - /// Request the `k` ancestors block hashes of a block with the given hash. - /// The response channel may return a `Vec` of size up to `k` - /// filled with ancestors hashes with the following order: - /// `parent`, `grandparent`, ... - Ancestors { - /// The hash of the block in question. - hash: Hash, - /// The number of ancestors to request. - k: usize, - /// The response channel. - response_channel: ChainApiResponseChannel>, - }, -} - -impl ChainApiMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - None - } -} - -/// Chain selection subsystem messages -#[derive(Debug)] -pub enum ChainSelectionMessage { - /// Signal to the chain selection subsystem that a specific block has been approved. - Approved(Hash), - /// Request the leaves in descending order by score. - Leaves(oneshot::Sender>), - /// Request the best leaf containing the given block in its ancestry. Return `None` if - /// there is no such leaf. - BestLeafContaining(Hash, oneshot::Sender>), -} - -impl ChainSelectionMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - // None of the messages, even the ones containing specific - // block hashes, can be considered to have those blocks as - // a relay parent. - match *self { - ChainSelectionMessage::Approved(_) => None, - ChainSelectionMessage::Leaves(_) => None, - ChainSelectionMessage::BestLeafContaining(..) => None, - } - } -} - -/// A sender for the result of a runtime API request. -pub type RuntimeApiSender = oneshot::Sender>; - -/// A request to the Runtime API subsystem. -#[derive(Debug)] -pub enum RuntimeApiRequest { - /// Get the next, current and some previous authority discovery set deduplicated. - Authorities(RuntimeApiSender>), - /// Get the current validator set. - Validators(RuntimeApiSender>), - /// Get the validator groups and group rotation info. - ValidatorGroups(RuntimeApiSender<(Vec>, GroupRotationInfo)>), - /// Get information on all availability cores. - AvailabilityCores(RuntimeApiSender>), - /// Get the persisted validation data for a particular para, taking the given - /// `OccupiedCoreAssumption`, which will inform on how the validation data should be computed - /// if the para currently occupies a core. - PersistedValidationData( - ParaId, - OccupiedCoreAssumption, - RuntimeApiSender>, - ), - /// Sends back `true` if the validation outputs pass all acceptance criteria checks. - CheckValidationOutputs( - ParaId, - polkadot_primitives::v1::CandidateCommitments, - RuntimeApiSender, - ), - /// Get the session index that a child of the block will have. - SessionIndexForChild(RuntimeApiSender), - /// Get the validation code for a para, taking the given `OccupiedCoreAssumption`, which - /// will inform on how the validation data should be computed if the para currently - /// occupies a core. - ValidationCode( - ParaId, - OccupiedCoreAssumption, - RuntimeApiSender>, - ), - /// Get validation code by its hash, either past, current or future code can be returned, as long as state is still - /// available. - ValidationCodeByHash(ValidationCodeHash, RuntimeApiSender>), - /// Get a the candidate pending availability for a particular parachain by parachain / core index - CandidatePendingAvailability(ParaId, RuntimeApiSender>), - /// Get all events concerning candidates (backing, inclusion, time-out) in the parent of - /// the block in whose state this request is executed. - CandidateEvents(RuntimeApiSender>), - /// Get the session info for the given session, if stored. - SessionInfo(SessionIndex, RuntimeApiSender>), - /// Get all the pending inbound messages in the downward message queue for a para. - DmqContents( - ParaId, - RuntimeApiSender>>, - ), - /// Get the contents of all channels addressed to the given recipient. Channels that have no - /// messages in them are also included. - InboundHrmpChannelsContents( - ParaId, - RuntimeApiSender>>>, - ), - /// Get information about the BABE epoch the block was included in. - CurrentBabeEpoch(RuntimeApiSender), -} - -/// A message to the Runtime API subsystem. -#[derive(Debug)] -pub enum RuntimeApiMessage { - /// Make a request of the runtime API against the post-state of the given relay-parent. - Request(Hash, RuntimeApiRequest), -} - -impl RuntimeApiMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - match self { - Self::Request(hash, _) => Some(*hash), - } - } -} - -/// Statement distribution message. -#[derive(Debug, derive_more::From)] -pub enum StatementDistributionMessage { - /// We have originated a signed statement in the context of - /// given relay-parent hash and it should be distributed to other validators. - Share(Hash, SignedFullStatement), - /// Event from the network bridge. - #[from] - NetworkBridgeUpdateV1(NetworkBridgeEvent), - /// Get receiver for receiving incoming network requests for statement fetching. - StatementFetchingReceiver(mpsc::Receiver), -} - -/// This data becomes intrinsics or extrinsics which should be included in a future relay chain block. -// It needs to be cloneable because multiple potential block authors can request copies. -#[derive(Debug, Clone)] -pub enum ProvisionableData { - /// This bitfield indicates the availability of various candidate blocks. - Bitfield(Hash, SignedAvailabilityBitfield), - /// The Candidate Backing subsystem believes that this candidate is valid, pending availability. - BackedCandidate(CandidateReceipt), - /// Misbehavior reports are self-contained proofs of validator misbehavior. - MisbehaviorReport(Hash, ValidatorIndex, Misbehavior), - /// Disputes trigger a broad dispute resolution process. - Dispute(Hash, ValidatorSignature), -} - -/// Inherent data returned by the provisioner -#[derive(Debug, Clone)] -pub struct ProvisionerInherentData { - /// Signed bitfields. - pub bitfields: SignedAvailabilityBitfields, - /// Backed candidates. - pub backed_candidates: Vec, - /// Dispute statement sets. - pub disputes: MultiDisputeStatementSet, -} - -/// Message to the Provisioner. -/// -/// In all cases, the Hash is that of the relay parent. -#[derive(Debug)] -pub enum ProvisionerMessage { - /// This message allows external subsystems to request the set of bitfields and backed candidates - /// associated with a particular potential block hash. - /// - /// This is expected to be used by a proposer, to inject that information into the InherentData - /// where it can be assembled into the ParaInherent. - RequestInherentData(Hash, oneshot::Sender), - /// This data should become part of a relay chain block - ProvisionableData(Hash, ProvisionableData), -} - -impl BoundToRelayParent for ProvisionerMessage { - fn relay_parent(&self) -> Hash { - match self { - Self::RequestInherentData(hash, _) => *hash, - Self::ProvisionableData(hash, _) => *hash, - } - } -} - -/// Message to the Collation Generation subsystem. -#[derive(Debug)] -pub enum CollationGenerationMessage { - /// Initialize the collation generation subsystem - Initialize(CollationGenerationConfig), -} - -impl CollationGenerationMessage { - /// If the current variant contains the relay parent hash, return it. - pub fn relay_parent(&self) -> Option { - None - } -} - -/// The result type of [`ApprovalVotingMessage::CheckAndImportAssignment`] request. -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum AssignmentCheckResult { - /// The vote was accepted and should be propagated onwards. - Accepted, - /// The vote was valid but duplicate and should not be propagated onwards. - AcceptedDuplicate, - /// The vote was valid but too far in the future to accept right now. - TooFarInFuture, - /// The vote was bad and should be ignored, reporting the peer who propagated it. - Bad(AssignmentCheckError), -} - -/// The error result type of [`ApprovalVotingMessage::CheckAndImportAssignment`] request. -#[derive(Error, Debug, Clone, PartialEq, Eq)] -#[allow(missing_docs)] -pub enum AssignmentCheckError { - #[error("Unknown block: {0:?}")] - UnknownBlock(Hash), - #[error("Unknown session index: {0}")] - UnknownSessionIndex(SessionIndex), - #[error("Invalid candidate index: {0}")] - InvalidCandidateIndex(CandidateIndex), - #[error("Invalid candidate {0}: {1:?}")] - InvalidCandidate(CandidateIndex, CandidateHash), - #[error("Invalid cert: {0:?}")] - InvalidCert(ValidatorIndex), - #[error("Internal state mismatch: {0:?}, {1:?}")] - Internal(Hash, CandidateHash), -} - -/// The result type of [`ApprovalVotingMessage::CheckAndImportApproval`] request. -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum ApprovalCheckResult { - /// The vote was accepted and should be propagated onwards. - Accepted, - /// The vote was bad and should be ignored, reporting the peer who propagated it. - Bad(ApprovalCheckError) -} - -/// The error result type of [`ApprovalVotingMessage::CheckAndImportApproval`] request. -#[derive(Error, Debug, Clone, PartialEq, Eq)] -#[allow(missing_docs)] -pub enum ApprovalCheckError { - #[error("Unknown block: {0:?}")] - UnknownBlock(Hash), - #[error("Unknown session index: {0}")] - UnknownSessionIndex(SessionIndex), - #[error("Invalid candidate index: {0}")] - InvalidCandidateIndex(CandidateIndex), - #[error("Invalid validator index: {0:?}")] - InvalidValidatorIndex(ValidatorIndex), - #[error("Invalid candidate {0}: {1:?}")] - InvalidCandidate(CandidateIndex, CandidateHash), - #[error("Invalid signature: {0:?}")] - InvalidSignature(ValidatorIndex), - #[error("No assignment for {0:?}")] - NoAssignment(ValidatorIndex), - #[error("Internal state mismatch: {0:?}, {1:?}")] - Internal(Hash, CandidateHash), -} - -/// Message to the Approval Voting subsystem. -#[derive(Debug)] -pub enum ApprovalVotingMessage { - /// Check if the assignment is valid and can be accepted by our view of the protocol. - /// Should not be sent unless the block hash is known. - CheckAndImportAssignment( - IndirectAssignmentCert, - CandidateIndex, - oneshot::Sender, - ), - /// Check if the approval vote is valid and can be accepted by our view of the - /// protocol. - /// - /// Should not be sent unless the block hash within the indirect vote is known. - CheckAndImportApproval( - IndirectSignedApprovalVote, - oneshot::Sender, - ), - /// Returns the highest possible ancestor hash of the provided block hash which is - /// acceptable to vote on finality for. - /// The `BlockNumber` provided is the number of the block's ancestor which is the - /// earliest possible vote. - /// - /// It can also return the same block hash, if that is acceptable to vote upon. - /// Return `None` if the input hash is unrecognized. - ApprovedAncestor(Hash, BlockNumber, oneshot::Sender>), -} - -/// Message to the Approval Distribution subsystem. -#[derive(Debug, derive_more::From)] -pub enum ApprovalDistributionMessage { - /// Notify the `ApprovalDistribution` subsystem about new blocks - /// and the candidates contained within them. - NewBlocks(Vec), - /// Distribute an assignment cert from the local validator. The cert is assumed - /// to be valid, relevant, and for the given relay-parent and validator index. - DistributeAssignment(IndirectAssignmentCert, CandidateIndex), - /// Distribute an approval vote for the local validator. The approval vote is assumed to be - /// valid, relevant, and the corresponding approval already issued. - /// If not, the subsystem is free to drop the message. - DistributeApproval(IndirectSignedApprovalVote), - /// An update from the network bridge. - #[from] - NetworkBridgeUpdateV1(NetworkBridgeEvent), -} - -/// Message to the Gossip Support subsystem. -#[derive(Debug)] -pub enum GossipSupportMessage { -} - -/// A message type tying together all message types that are used across Subsystems. -#[subsystem_dispatch_gen(NetworkBridgeEvent)] -#[derive(Debug, derive_more::From)] -pub enum AllMessages { - /// Message for the validation subsystem. - #[skip] - CandidateValidation(CandidateValidationMessage), - /// Message for the candidate backing subsystem. - #[skip] - CandidateBacking(CandidateBackingMessage), - /// Message for the Chain API subsystem. - #[skip] - ChainApi(ChainApiMessage), - /// Message for the Collator Protocol subsystem. - #[skip] - CollatorProtocol(CollatorProtocolMessage), - /// Message for the statement distribution subsystem. - StatementDistribution(StatementDistributionMessage), - /// Message for the availability distribution subsystem. - #[skip] - AvailabilityDistribution(AvailabilityDistributionMessage), - /// Message for the availability recovery subsystem. - #[skip] - AvailabilityRecovery(AvailabilityRecoveryMessage), - /// Message for the bitfield distribution subsystem. - BitfieldDistribution(BitfieldDistributionMessage), - /// Message for the bitfield signing subsystem. - #[skip] - BitfieldSigning(BitfieldSigningMessage), - /// Message for the Provisioner subsystem. - #[skip] - Provisioner(ProvisionerMessage), - /// Message for the Runtime API subsystem. - #[skip] - RuntimeApi(RuntimeApiMessage), - /// Message for the availability store subsystem. - #[skip] - AvailabilityStore(AvailabilityStoreMessage), - /// Message for the network bridge subsystem. - #[skip] - NetworkBridge(NetworkBridgeMessage), - /// Message for the Collation Generation subsystem. - #[skip] - CollationGeneration(CollationGenerationMessage), - /// Message for the Approval Voting subsystem. - #[skip] - ApprovalVoting(ApprovalVotingMessage), - /// Message for the Approval Distribution subsystem. - ApprovalDistribution(ApprovalDistributionMessage), - /// Message for the Gossip Support subsystem. - #[skip] - GossipSupport(GossipSupportMessage), - /// Message for the dispute coordinator subsystem. - #[skip] - DisputeCoordinator(DisputeCoordinatorMessage), - /// Message for the dispute participation subsystem. - #[skip] - DisputeParticipation(DisputeParticipationMessage), - /// Message for the chain selection subsystem. - #[skip] - ChainSelection(ChainSelectionMessage), -} - -impl From> for AvailabilityDistributionMessage { - fn from(req: IncomingRequest) -> Self { - Self::PoVFetchingRequest(req) - } -} -impl From> for AvailabilityDistributionMessage { - fn from(req: IncomingRequest) -> Self { - Self::ChunkFetchingRequest(req) - } -} -impl From> for CollatorProtocolMessage { - fn from(req: IncomingRequest) -> Self { - Self::CollationFetchingRequest(req) - } -} - -impl From> for AllMessages { - fn from(req: IncomingRequest) -> Self { - From::::from(From::from(req)) - } -} -impl From> for AllMessages { - fn from(req: IncomingRequest) -> Self { - From::::from(From::from(req)) - } -} -impl From> for AllMessages { - fn from(req: IncomingRequest) -> Self { - From::::from(From::from(req)) - } -} -impl From> for AllMessages { - fn from(req: IncomingRequest) -> Self { - From::::from(From::from(req)) - } -} diff --git a/node/subsystem/src/messages/network_bridge_event.rs b/node/subsystem/src/messages/network_bridge_event.rs deleted file mode 100644 index 3186e80e60b1..000000000000 --- a/node/subsystem/src/messages/network_bridge_event.rs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::convert::TryFrom; -use std::collections::HashSet; - -pub use sc_network::{ReputationChange, PeerId}; - -use polkadot_node_network_protocol::{WrongVariant, ObservedRole, OurView, View}; -use polkadot_primitives::v1::AuthorityDiscoveryId; - -/// Events from network. -#[derive(Debug, Clone, PartialEq)] -pub enum NetworkBridgeEvent { - /// A peer has connected. - PeerConnected(PeerId, ObservedRole, Option), - - /// A peer has disconnected. - PeerDisconnected(PeerId), - - /// Our neighbors in the new gossip topology. - /// We're not necessarily connected to all of them. - /// - /// This message is issued only on the validation peer set. - /// - /// Note, that the distribution subsystems need to handle the last - /// view update of the newly added gossip peers manually. - NewGossipTopology(HashSet), - - /// Peer has sent a message. - PeerMessage(PeerId, M), - - /// Peer's `View` has changed. - PeerViewChange(PeerId, View), - - /// Our view has changed. - OurViewChange(OurView), -} - -impl NetworkBridgeEvent { - /// Focus an overarching network-bridge event into some more specific variant. - /// - /// This tries to transform M in `PeerMessage` to a message type specific to a subsystem. - /// It is used to dispatch events coming from a peer set to the various subsystems that are - /// handled within that peer set. More concretely a `ValidationProtocol` will be transformed - /// for example into a `BitfieldDistributionMessage` in case of the `BitfieldDistribution` - /// constructor. - /// - /// Therefore a NetworkBridgeEvent will become for example a - /// NetworkBridgeEvent, with the more specific message type - /// `BitfieldDistributionMessage`. - /// - /// This acts as a call to `clone`, except in the case where the event is a message event, - /// in which case the clone can be expensive and it only clones if the message type can - /// be focused. - pub fn focus<'a, T>(&'a self) -> Result, WrongVariant> - where T: 'a + Clone, &'a T: TryFrom<&'a M, Error = WrongVariant> - { - Ok(match *self { - NetworkBridgeEvent::PeerConnected(ref peer, ref role, ref authority_id) - => NetworkBridgeEvent::PeerConnected(peer.clone(), role.clone(), authority_id.clone()), - NetworkBridgeEvent::PeerDisconnected(ref peer) - => NetworkBridgeEvent::PeerDisconnected(peer.clone()), - NetworkBridgeEvent::NewGossipTopology(ref peers) - => NetworkBridgeEvent::NewGossipTopology(peers.clone()), - NetworkBridgeEvent::PeerMessage(ref peer, ref msg) - => NetworkBridgeEvent::PeerMessage(peer.clone(), <&'a T>::try_from(msg)?.clone()), - NetworkBridgeEvent::PeerViewChange(ref peer, ref view) - => NetworkBridgeEvent::PeerViewChange(peer.clone(), view.clone()), - NetworkBridgeEvent::OurViewChange(ref view) - => NetworkBridgeEvent::OurViewChange(view.clone()), - }) - } -} diff --git a/node/test/client/Cargo.toml b/node/test/client/Cargo.toml deleted file mode 100644 index 25853c9d42f9..000000000000 --- a/node/test/client/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "polkadot-test-client" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -# Polkadot dependencies -polkadot-test-runtime = { path = "../../../runtime/test-runtime" } -polkadot-test-service = { path = "../service" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-node-subsystem = { path = "../../subsystem" } - -# Substrate dependencies -substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -futures = "0.3.15" diff --git a/node/test/client/src/block_builder.rs b/node/test/client/src/block_builder.rs deleted file mode 100644 index 00ca965dff97..000000000000 --- a/node/test/client/src/block_builder.rs +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{Client, FullBackend}; -use polkadot_test_runtime::{GetLastTimestamp, UncheckedExtrinsic}; -use polkadot_primitives::v1::{Block, InherentData as ParachainsInherentData}; -use sp_runtime::{generic::BlockId, Digest, DigestItem}; -use sp_api::ProvideRuntimeApi; -use sp_consensus_babe::{BABE_ENGINE_ID, digests::{PreDigest, SecondaryPlainPreDigest}}; -use sc_block_builder::{BlockBuilderProvider, BlockBuilder}; -use sp_state_machine::BasicExternalities; -use parity_scale_codec::{Encode, Decode}; - -/// An extension for the test client to init a Polkadot specific block builder. -pub trait InitPolkadotBlockBuilder { - /// Init a Polkadot specific block builder that works for the test runtime. - /// - /// This will automatically create and push the inherents for you to make the block valid for the test runtime. - fn init_polkadot_block_builder(&self) -> sc_block_builder::BlockBuilder; - - /// Init a Polkadot specific block builder at a specific block that works for the test runtime. - /// - /// Same as [`InitPolkadotBlockBuilder::init_polkadot_block_builder`] besides that it takes a [`BlockId`] to say - /// which should be the parent block of the block that is being build. - fn init_polkadot_block_builder_at( - &self, - at: &BlockId, - ) -> sc_block_builder::BlockBuilder; -} - -impl InitPolkadotBlockBuilder for Client { - fn init_polkadot_block_builder( - &self, - ) -> BlockBuilder { - let chain_info = self.chain_info(); - self.init_polkadot_block_builder_at(&BlockId::Hash(chain_info.best_hash)) - } - - fn init_polkadot_block_builder_at( - &self, - at: &BlockId, - ) -> BlockBuilder { - let last_timestamp = self - .runtime_api() - .get_last_timestamp(&at) - .expect("Get last timestamp"); - - // `MinimumPeriod` is a storage parameter type that requires externalities to access the value. - let minimum_period = BasicExternalities::new_empty() - .execute_with(|| polkadot_test_runtime::MinimumPeriod::get()); - - let timestamp = if last_timestamp == 0 { - std::time::SystemTime::now().duration_since(std::time::SystemTime::UNIX_EPOCH) - .expect("Time is always after UNIX_EPOCH; qed") - .as_millis() as u64 - } else { - last_timestamp + minimum_period - }; - - // `SlotDuration` is a storage parameter type that requires externalities to access the value. - let slot_duration = BasicExternalities::new_empty() - .execute_with(|| polkadot_test_runtime::SlotDuration::get()); - - let slot = (timestamp / slot_duration).into(); - - let digest = Digest { - logs: vec![ - DigestItem::PreRuntime( - BABE_ENGINE_ID, - PreDigest::SecondaryPlain(SecondaryPlainPreDigest { - slot, - authority_index: 42, - }).encode() - ), - ], - }; - - let mut block_builder = self.new_block_at(at, digest, false) - .expect("Creates new block builder for test runtime"); - - let mut inherent_data = sp_inherents::InherentData::new(); - - inherent_data - .put_data(sp_timestamp::INHERENT_IDENTIFIER, ×tamp) - .expect("Put timestamp inherent data"); - - let parent_header = self.header(at) - .expect("Get the parent block header") - .expect("The target block header must exist"); - - let parachains_inherent_data = ParachainsInherentData { - bitfields: Vec::new(), - backed_candidates: Vec::new(), - disputes: Vec::new(), - parent_header: parent_header, - }; - - inherent_data - .put_data( - polkadot_primitives::v1::PARACHAINS_INHERENT_IDENTIFIER, - ¶chains_inherent_data, - ) - .expect("Put parachains inherent data"); - - let inherents = block_builder.create_inherents(inherent_data).expect("Creates inherents"); - - inherents.into_iter().for_each(|ext| block_builder.push(ext).expect("Pushes inherent")); - - block_builder - } -} - -/// Polkadot specific extensions for the [`BlockBuilder`]. -pub trait BlockBuilderExt { - /// Push a Polkadot test runtime specific extrinsic to the block. - /// - /// This will internally use the [`BlockBuilder::push`] method, but this method expects a opaque extrinsic. So, - /// we provide this wrapper which converts a test runtime specific extrinsic to a opaque extrinsic and pushes it to - /// the block. - /// - /// Returns the result of the application of the extrinsic. - fn push_polkadot_extrinsic(&mut self, ext: UncheckedExtrinsic) -> Result<(), sp_blockchain::Error>; -} - -impl BlockBuilderExt for BlockBuilder<'_, Block, Client, FullBackend> { - fn push_polkadot_extrinsic(&mut self, ext: UncheckedExtrinsic) -> Result<(), sp_blockchain::Error> { - let encoded = ext.encode(); - self.push( - Decode::decode(&mut &encoded[..]) - .expect("The runtime specific extrinsic always decodes to an opaque extrinsic; qed"), - ) - } -} diff --git a/node/test/client/src/lib.rs b/node/test/client/src/lib.rs deleted file mode 100644 index 52697c8bfa29..000000000000 --- a/node/test/client/src/lib.rs +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A Polkadot test client. -//! -//! This test client is using the Polkadot test runtime. - -mod block_builder; - -use polkadot_primitives::v1::Block; -use sc_service::client; -use sp_core::storage::Storage; -use sp_runtime::BuildStorage; - -pub use block_builder::*; -pub use substrate_test_client::*; -pub use polkadot_test_service::{ - Client, construct_extrinsic, construct_transfer_extrinsic, PolkadotTestExecutor, FullBackend, -}; -pub use polkadot_test_runtime as runtime; - -/// Test client executor. -pub type Executor = client::LocalCallExecutor>; - -/// Test client builder for Polkadot. -pub type TestClientBuilder = substrate_test_client::TestClientBuilder; - -/// LongestChain type for the test runtime/client. -pub type LongestChain = sc_consensus::LongestChain; - -/// Parameters of test-client builder with test-runtime. -#[derive(Default)] -pub struct GenesisParameters; - -impl substrate_test_client::GenesisInit for GenesisParameters { - fn genesis_storage(&self) -> Storage { - polkadot_test_service::chain_spec::polkadot_local_testnet_genesis() - .build_storage() - .expect("Builds test runtime genesis storage") - } -} - -/// A `test-runtime` extensions to `TestClientBuilder`. -pub trait TestClientBuilderExt: Sized { - /// Build the test client. - fn build(self) -> Client { - self.build_with_longest_chain().0 - } - - /// Build the test client and longest chain selector. - fn build_with_longest_chain(self) -> (Client, LongestChain); -} - -impl TestClientBuilderExt for TestClientBuilder { - fn build_with_longest_chain(self) -> (Client, LongestChain) { - self.build_with_native_executor(None) - } -} - -/// A `TestClientBuilder` with default backend and executor. -pub trait DefaultTestClientBuilderExt: Sized { - /// Create new `TestClientBuilder` - fn new() -> Self; -} - -impl DefaultTestClientBuilderExt for TestClientBuilder { - fn new() -> Self { - Self::with_default_backend() - } -} - -#[cfg(test)] -mod tests{ - use super::*; - use sp_consensus::BlockOrigin; - - #[test] - fn ensure_test_client_can_build_and_import_block() { - let mut client = TestClientBuilder::new().build(); - - let block_builder = client.init_polkadot_block_builder(); - let block = block_builder.build().expect("Finalizes the block").block; - - futures::executor::block_on(client.import(BlockOrigin::Own, block)).expect("Imports the block"); - } - - #[test] - fn ensure_test_client_can_push_extrinsic() { - let mut client = TestClientBuilder::new().build(); - - let transfer = construct_transfer_extrinsic( - &client, - sp_keyring::Sr25519Keyring::Alice, - sp_keyring::Sr25519Keyring::Bob, - 1000, - ); - let mut block_builder = client.init_polkadot_block_builder(); - block_builder.push_polkadot_extrinsic(transfer).expect("Pushes extrinsic"); - - let block = block_builder.build().expect("Finalizes the block").block; - - futures::executor::block_on(client.import(BlockOrigin::Own, block)).expect("Imports the block"); - } -} diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml deleted file mode 100644 index e3d93ee93bd1..000000000000 --- a/node/test/service/Cargo.toml +++ /dev/null @@ -1,62 +0,0 @@ -[package] -name = "polkadot-test-service" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -futures = "0.3.15" -futures01 = { package = "futures", version = "0.1.29" } -hex = "0.4.2" -tracing = "0.1.26" -rand = "0.8.3" -tempfile = "3.2.0" - -# Polkadot dependencies -polkadot-overseer = { path = "../../overseer" } -polkadot-primitives = { path = "../../../primitives" } -polkadot-parachain = { path = "../../../parachain" } -polkadot-rpc = { path = "../../../rpc" } -polkadot-runtime-common = { path = "../../../runtime/common" } -polkadot-service = { path = "../../service" } -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-node-primitives = { path = "../../primitives" } -polkadot-test-runtime = { path = "../../../runtime/test-runtime" } -polkadot-runtime-parachains = { path = "../../../runtime/parachains" } - -# Substrate dependencies -sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -babe = { package = "sc-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master" } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master" } -consensus_common = { package = "sp-consensus", git = "https://github.com/paritytech/substrate", branch = "master" } -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } -grandpa = { package = "sc-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } -grandpa_primitives = { package = "sp-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } -substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[dev-dependencies] -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -serde_json = "1.0.61" -substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -tokio = { version = "0.2", features = ["macros"] } diff --git a/node/test/service/src/chain_spec.rs b/node/test/service/src/chain_spec.rs deleted file mode 100644 index c65b70f107cf..000000000000 --- a/node/test/service/src/chain_spec.rs +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Chain specifications for the test runtime. - -use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use babe_primitives::AuthorityId as BabeId; -use grandpa::AuthorityId as GrandpaId; -use pallet_staking::Forcing; -use polkadot_primitives::v1::{ValidatorId, AccountId, AssignmentId, MAX_CODE_SIZE, MAX_POV_SIZE}; -use polkadot_service::chain_spec::{get_account_id_from_seed, get_from_seed, Extensions}; -use polkadot_test_runtime::{constants::currency::DOTS, BABE_GENESIS_EPOCH_CONFIG}; -use sc_chain_spec::{ChainSpec, ChainType}; -use sp_core::sr25519; -use sp_runtime::Perbill; - -const DEFAULT_PROTOCOL_ID: &str = "dot"; - -/// The `ChainSpec` parameterized for polkadot test runtime. -pub type PolkadotChainSpec = - service::GenericChainSpec; - -/// Local testnet config (multivalidator Alice + Bob) -pub fn polkadot_local_testnet_config() -> PolkadotChainSpec { - PolkadotChainSpec::from_genesis( - "Local Testnet", - "local_testnet", - ChainType::Local, - || polkadot_local_testnet_genesis(), - vec![], - None, - Some(DEFAULT_PROTOCOL_ID), - None, - Default::default(), - ) -} - -/// Local testnet genesis config (multivalidator Alice + Bob) -pub fn polkadot_local_testnet_genesis() -> polkadot_test_runtime::GenesisConfig { - polkadot_testnet_genesis( - vec![ - get_authority_keys_from_seed("Alice"), - get_authority_keys_from_seed("Bob"), - ], - get_account_id_from_seed::("Alice"), - None, - ) -} - -/// Helper function to generate stash, controller and session key from seed -fn get_authority_keys_from_seed( - seed: &str, -) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { - ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - ) -} - -fn testnet_accounts() -> Vec { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] -} - -/// Helper function to create polkadot GenesisConfig for testing -fn polkadot_testnet_genesis( - initial_authorities: Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - )>, - root_key: AccountId, - endowed_accounts: Option>, -) -> polkadot_test_runtime::GenesisConfig { - use polkadot_test_runtime as runtime; - - let endowed_accounts: Vec = endowed_accounts.unwrap_or_else(testnet_accounts); - - const ENDOWMENT: u128 = 1_000_000 * DOTS; - const STASH: u128 = 100 * DOTS; - - runtime::GenesisConfig { - system: runtime::SystemConfig { - code: runtime::WASM_BINARY.expect("Wasm binary must be built for testing").to_vec(), - ..Default::default() - }, - indices: runtime::IndicesConfig { indices: vec![] }, - balances: runtime::BalancesConfig { - balances: endowed_accounts - .iter() - .map(|k| (k.clone(), ENDOWMENT)) - .collect(), - }, - session: runtime::SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - runtime::SessionKeys { - babe: x.2.clone(), - grandpa: x.3.clone(), - para_validator: x.4.clone(), - para_assignment: x.5.clone(), - authority_discovery: x.6.clone(), - }, - ) - }) - .collect::>(), - }, - staking: runtime::StakingConfig { - minimum_validator_count: 1, - validator_count: 2, - stakers: initial_authorities - .iter() - .map(|x| { - ( - x.0.clone(), - x.1.clone(), - STASH, - runtime::StakerStatus::Validator, - ) - }) - .collect(), - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - force_era: Forcing::NotForcing, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - babe: runtime::BabeConfig { - authorities: vec![], - epoch_config: Some(BABE_GENESIS_EPOCH_CONFIG), - }, - grandpa: Default::default(), - authority_discovery: runtime::AuthorityDiscoveryConfig { keys: vec![] }, - claims: runtime::ClaimsConfig { - claims: vec![], - vesting: vec![], - }, - vesting: runtime::VestingConfig { vesting: vec![] }, - sudo: runtime::SudoConfig { key: root_key }, - parachains_configuration: runtime::ParachainsConfigurationConfig { - config: polkadot_runtime_parachains::configuration::HostConfiguration { - validation_upgrade_frequency: 10u32, - validation_upgrade_delay: 5, - code_retention_period: 1200, - max_code_size: MAX_CODE_SIZE, - max_pov_size: MAX_POV_SIZE, - max_head_data_size: 32 * 1024, - group_rotation_frequency: 20, - chain_availability_period: 4, - thread_availability_period: 4, - no_show_slots: 10, - ..Default::default() - }, - }, - } -} - -/// Can be called for a `Configuration` to check if it is a configuration for the `Test` network. -pub trait IdentifyVariant { - /// Returns if this is a configuration for the `Test` network. - fn is_test(&self) -> bool; -} - -impl IdentifyVariant for Box { - fn is_test(&self) -> bool { - self.id().starts_with("test") - } -} diff --git a/node/test/service/src/lib.rs b/node/test/service/src/lib.rs deleted file mode 100644 index d7425cde3d41..000000000000 --- a/node/test/service/src/lib.rs +++ /dev/null @@ -1,422 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot test service only. - -#![warn(missing_docs)] - -pub mod chain_spec; - -pub use chain_spec::*; -use futures::future::Future; -use polkadot_overseer::OverseerHandler; -use polkadot_primitives::v1::{ - Id as ParaId, HeadData, ValidationCode, Balance, CollatorPair, -}; -use polkadot_runtime_common::BlockHashCount; -use polkadot_service::{ - Error, NewFull, FullClient, ClientHandle, ExecuteWithClient, IsCollator, -}; -use polkadot_node_subsystem::messages::{CollatorProtocolMessage, CollationGenerationMessage}; -use polkadot_test_runtime::{ - Runtime, SignedExtra, SignedPayload, VERSION, ParasSudoWrapperCall, SudoCall, UncheckedExtrinsic, -}; -use polkadot_node_primitives::{CollatorFn, CollationGenerationConfig}; -use polkadot_runtime_parachains::paras::ParaGenesisArgs; -use sc_chain_spec::ChainSpec; -use sc_client_api::execution_extensions::ExecutionStrategies; -use sc_executor::native_executor_instance; -use sc_network::{ - config::{NetworkConfiguration, TransportConfig}, - multiaddr, -}; -use service::{ - config::{DatabaseConfig, KeystoreConfig, MultiaddrWithPeerId, WasmExecutionMethod}, - RpcHandlers, TaskExecutor, TaskManager, KeepBlocks, TransactionStorageMode, -}; -use service::{BasePath, Configuration, Role}; -use sp_arithmetic::traits::SaturatedConversion; -use sp_blockchain::HeaderBackend; -use sp_keyring::Sr25519Keyring; -use sp_runtime::{codec::Encode, generic, traits::IdentifyAccount, MultiSigner}; -use sp_state_machine::BasicExternalities; -use std::{sync::Arc, path::PathBuf}; -use substrate_test_client::{BlockchainEventsExt, RpcHandlersExt, RpcTransactionOutput, RpcTransactionError}; - -native_executor_instance!( - pub PolkadotTestExecutor, - polkadot_test_runtime::api::dispatch, - polkadot_test_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); - -/// The client type being used by the test service. -pub type Client = FullClient; - -pub use polkadot_service::FullBackend; - -/// Create a new full node. -#[sc_tracing::logging::prefix_logs_with(config.network.node_name.as_str())] -pub fn new_full( - config: Configuration, - is_collator: IsCollator, - worker_program_path: Option, -) -> Result< - NewFull>, - Error, -> { - polkadot_service::new_full::( - config, - is_collator, - None, - true, - None, - None, - worker_program_path, - polkadot_service::RealOverseerGen, - ) -} - -/// A wrapper for the test client that implements `ClientHandle`. -pub struct TestClient(pub Arc); - -impl ClientHandle for TestClient { - fn execute_with(&self, t: T) -> T::Output { - T::execute_with_client::<_, _, polkadot_service::FullBackend>(t, self.0.clone()) - } -} - -/// Create a Polkadot `Configuration`. -/// -/// By default an in-memory socket will be used, therefore you need to provide boot -/// nodes if you want the future node to be connected to other nodes. -/// -/// The `storage_update_func` function will be executed in an externalities provided environment -/// and can be used to make adjustments to the runtime genesis storage. -pub fn node_config( - storage_update_func: impl Fn(), - task_executor: TaskExecutor, - key: Sr25519Keyring, - boot_nodes: Vec, - is_validator: bool, -) -> Configuration { - let base_path = BasePath::new_temp_dir().expect("could not create temporary directory"); - let root = base_path.path(); - let role = if is_validator { - Role::Authority - } else { - Role::Full - }; - let key_seed = key.to_seed(); - let mut spec = polkadot_local_testnet_config(); - let mut storage = spec - .as_storage_builder() - .build_storage() - .expect("could not build storage"); - - BasicExternalities::execute_with_storage(&mut storage, storage_update_func); - spec.set_storage(storage); - - let mut network_config = NetworkConfiguration::new( - key_seed.to_string(), - "network/test/0.1", - Default::default(), - None, - ); - - network_config.boot_nodes = boot_nodes; - - network_config.allow_non_globals_in_dht = true; - - let addr: multiaddr::Multiaddr = multiaddr::Protocol::Memory(rand::random()).into(); - network_config - .listen_addresses - .push(addr.clone()); - - network_config - .public_addresses - .push(addr); - - network_config.transport = TransportConfig::MemoryOnly; - - Configuration { - impl_name: "polkadot-test-node".to_string(), - impl_version: "0.1".to_string(), - role, - task_executor, - transaction_pool: Default::default(), - network: network_config, - keystore: KeystoreConfig::InMemory, - keystore_remote: Default::default(), - database: DatabaseConfig::RocksDb { - path: root.join("db"), - cache_size: 128, - }, - state_cache_size: 16777216, - state_cache_child_ratio: None, - state_pruning: Default::default(), - keep_blocks: KeepBlocks::All, - transaction_storage: TransactionStorageMode::BlockBody, - chain_spec: Box::new(spec), - wasm_method: WasmExecutionMethod::Interpreted, - wasm_runtime_overrides: Default::default(), - // NOTE: we enforce the use of the native runtime to make the errors more debuggable - execution_strategies: ExecutionStrategies { - syncing: sc_client_api::ExecutionStrategy::NativeWhenPossible, - importing: sc_client_api::ExecutionStrategy::NativeWhenPossible, - block_construction: sc_client_api::ExecutionStrategy::NativeWhenPossible, - offchain_worker: sc_client_api::ExecutionStrategy::NativeWhenPossible, - other: sc_client_api::ExecutionStrategy::NativeWhenPossible, - }, - rpc_http_threads: None, - rpc_http: None, - rpc_ws: None, - rpc_ipc: None, - rpc_ws_max_connections: None, - rpc_cors: None, - rpc_methods: Default::default(), - rpc_max_payload: None, - prometheus_config: None, - telemetry_endpoints: None, - telemetry_external_transport: None, - default_heap_pages: None, - offchain_worker: Default::default(), - force_authoring: false, - disable_grandpa: false, - dev_key_seed: Some(key_seed), - tracing_targets: None, - tracing_receiver: Default::default(), - max_runtime_instances: 8, - announce_block: true, - base_path: Some(base_path), - informant_output_format: Default::default(), - disable_log_reloading: false, - } -} - -/// Run a test validator node that uses the test runtime. -/// -/// The node will be using an in-memory socket, therefore you need to provide boot nodes if you -/// want it to be connected to other nodes. -/// -/// The `storage_update_func` function will be executed in an externalities provided environment -/// and can be used to make adjustments to the runtime genesis storage. -pub fn run_validator_node( - task_executor: TaskExecutor, - key: Sr25519Keyring, - storage_update_func: impl Fn(), - boot_nodes: Vec, - worker_program_path: Option, -) -> PolkadotTestNode { - let config = node_config(storage_update_func, task_executor, key, boot_nodes, true); - let multiaddr = config.network.listen_addresses[0].clone(); - let NewFull { task_manager, client, network, rpc_handlers, overseer_handler, .. } = - new_full(config, IsCollator::No, worker_program_path).expect("could not create Polkadot test service"); - - let overseer_handler = overseer_handler.expect("test node must have an overseer handler"); - let peer_id = network.local_peer_id().clone(); - let addr = MultiaddrWithPeerId { multiaddr, peer_id }; - - PolkadotTestNode { - task_manager, - client, - overseer_handler, - addr, - rpc_handlers, - } -} - -/// Run a test collator node that uses the test runtime. -/// -/// The node will be using an in-memory socket, therefore you need to provide boot nodes if you -/// want it to be connected to other nodes. -/// -/// The `storage_update_func` function will be executed in an externalities provided environment -/// and can be used to make adjustments to the runtime genesis storage. -/// -/// # Note -/// -/// The collator functionality still needs to be registered at the node! This can be done using -/// [`PolkadotTestNode::register_collator`]. -pub fn run_collator_node( - task_executor: TaskExecutor, - key: Sr25519Keyring, - storage_update_func: impl Fn(), - boot_nodes: Vec, - collator_pair: CollatorPair, -) -> PolkadotTestNode { - let config = node_config(storage_update_func, task_executor, key, boot_nodes, false); - let multiaddr = config.network.listen_addresses[0].clone(); - let NewFull { - task_manager, - client, - network, - rpc_handlers, - overseer_handler, - .. - } = new_full(config, IsCollator::Yes(collator_pair), None) - .expect("could not create Polkadot test service"); - - let overseer_handler = overseer_handler.expect("test node must have an overseer handler"); - let peer_id = network.local_peer_id().clone(); - let addr = MultiaddrWithPeerId { multiaddr, peer_id }; - - PolkadotTestNode { - task_manager, - client, - overseer_handler, - addr, - rpc_handlers, - } -} - -/// A Polkadot test node instance used for testing. -pub struct PolkadotTestNode { - /// TaskManager's instance. - pub task_manager: TaskManager, - /// Client's instance. - pub client: Arc, - /// The overseer handler. - pub overseer_handler: OverseerHandler, - /// The `MultiaddrWithPeerId` to this node. This is useful if you want to pass it as "boot node" to other nodes. - pub addr: MultiaddrWithPeerId, - /// RPCHandlers to make RPC queries. - pub rpc_handlers: RpcHandlers, -} - -impl PolkadotTestNode { - /// Send an extrinsic to this node. - pub async fn send_extrinsic( - &self, - function: impl Into, - caller: Sr25519Keyring, - ) -> Result { - let extrinsic = construct_extrinsic(&*self.client, function, caller); - - self.rpc_handlers.send_transaction(extrinsic.into()).await - } - - /// Register a parachain at this relay chain. - pub async fn register_parachain( - &self, - id: ParaId, - validation_code: impl Into, - genesis_head: impl Into, - ) -> Result<(), RpcTransactionError> { - let call = ParasSudoWrapperCall::sudo_schedule_para_initialize( - id, - ParaGenesisArgs { - genesis_head: genesis_head.into(), - validation_code: validation_code.into(), - parachain: true, - }, - ); - - self.send_extrinsic(SudoCall::sudo(Box::new(call.into())), Sr25519Keyring::Alice).await.map(drop) - } - - /// Wait for `count` blocks to be imported in the node and then exit. This function will not return if no blocks - /// are ever created, thus you should restrict the maximum amount of time of the test execution. - pub fn wait_for_blocks(&self, count: usize) -> impl Future { - self.client.wait_for_blocks(count) - } - - /// Register the collator functionality in the overseer of this node. - pub async fn register_collator( - &mut self, - collator_key: CollatorPair, - para_id: ParaId, - collator: CollatorFn, - ) { - let config = CollationGenerationConfig { - key: collator_key, - collator, - para_id, - }; - - self.overseer_handler - .send_msg(CollationGenerationMessage::Initialize(config)) - .await; - - self.overseer_handler - .send_msg(CollatorProtocolMessage::CollateOn(para_id)) - .await; - } -} - -/// Construct an extrinsic that can be applied to the test runtime. -pub fn construct_extrinsic( - client: &Client, - function: impl Into, - caller: Sr25519Keyring, -) -> UncheckedExtrinsic { - let function = function.into(); - let current_block_hash = client.info().best_hash; - let current_block = client.info().best_number.saturated_into(); - let genesis_block = client.hash(0).unwrap().unwrap(); - let nonce = 0; - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - let raw_payload = SignedPayload::from_raw( - function.clone(), - extra.clone(), - ( - VERSION.spec_version, - VERSION.transaction_version, - genesis_block, - current_block_hash, - (), - (), - (), - ), - ); - let signature = raw_payload.using_encoded(|e| caller.sign(e)); - UncheckedExtrinsic::new_signed( - function.clone(), - polkadot_test_runtime::Address::Id(caller.public().into()), - polkadot_primitives::v0::Signature::Sr25519(signature.clone()), - extra.clone(), - ) -} - -/// Construct a transfer extrinsic. -pub fn construct_transfer_extrinsic( - client: &Client, - origin: sp_keyring::AccountKeyring, - dest: sp_keyring::AccountKeyring, - value: Balance, -) -> UncheckedExtrinsic { - let function = polkadot_test_runtime::Call::Balances( - pallet_balances::Call::transfer( - MultiSigner::from(dest.public()).into_account().into(), - value, - ), - ); - - construct_extrinsic(client, function, origin) -} diff --git a/node/test/service/tests/build-blocks.rs b/node/test/service/tests/build-blocks.rs deleted file mode 100644 index b563a6e46a7e..000000000000 --- a/node/test/service/tests/build-blocks.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use futures::{future, pin_mut, select}; -use polkadot_test_service::*; -use service::TaskExecutor; -use sp_keyring::Sr25519Keyring; - -#[substrate_test_utils::test] -async fn ensure_test_service_build_blocks(task_executor: TaskExecutor) { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - builder.init().expect("Sets up logger"); - - let mut alice = run_validator_node( - task_executor.clone(), - Sr25519Keyring::Alice, - || {}, - Vec::new(), - None, - ); - let mut bob = run_validator_node( - task_executor.clone(), - Sr25519Keyring::Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - { - let t1 = future::join(alice.wait_for_blocks(3), bob.wait_for_blocks(3)).fuse(); - let t2 = alice.task_manager.future().fuse(); - let t3 = bob.task_manager.future().fuse(); - - pin_mut!(t1, t2, t3); - - select! { - _ = t1 => {}, - _ = t2 => panic!("service Alice failed"), - _ = t3 => panic!("service Bob failed"), - } - } - - alice.task_manager.clean_shutdown().await; - bob.task_manager.clean_shutdown().await; -} diff --git a/node/test/service/tests/call-function.rs b/node/test/service/tests/call-function.rs deleted file mode 100644 index fa9a161923e6..000000000000 --- a/node/test/service/tests/call-function.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use polkadot_test_service::*; -use service::TaskExecutor; -use sp_keyring::Sr25519Keyring::{Alice, Bob}; - -#[substrate_test_utils::test] -async fn call_function_actually_work(task_executor: TaskExecutor) { - let alice = run_validator_node(task_executor, Alice, || {}, Vec::new(), None); - - let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer( - Default::default(), - 1, - )); - let output = alice.send_extrinsic(function, Bob).await.unwrap(); - - let res = output.result.expect("return value expected"); - let json = serde_json::from_str::(res.as_str()).expect("valid JSON"); - let object = json.as_object().expect("JSON is an object"); - assert!(object.contains_key("jsonrpc"), "key jsonrpc exists"); - let result = object.get("result"); - let result = result.expect("key result exists"); - assert_eq!( - result.as_str().map(|x| x.starts_with("0x")), - Some(true), - "result starts with 0x", - ); - - alice.task_manager.clean_shutdown().await; -} diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml deleted file mode 100644 index fd48968de4ea..000000000000 --- a/parachain/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "polkadot-parachain" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Types and utilities for creating and working with parachains" -edition = "2018" - -[dependencies] -# note: special care is taken to avoid inclusion of `sp-io` externals when compiling -# this crate for WASM. This is critical to avoid forcing all parachain WASM into implementing -# various unnecessary Substrate-specific endpoints. -parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } -parity-util-mem = { version = "0.9.0", optional = true } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -polkadot-core-primitives = { path = "../core-primitives", default-features = false } -derive_more = "0.99.11" - -# all optional crates. -serde = { version = "1.0.117", default-features = false, features = [ "derive" ], optional = true } - -[features] -default = ["std"] -wasm-api = [] -std = [ - "parity-scale-codec/std", - "serde/std", - "sp-std/std", - "sp-runtime/std", - "sp-core/std", - "parity-util-mem", - "polkadot-core-primitives/std", -] diff --git a/parachain/README.adoc b/parachain/README.adoc deleted file mode 100644 index 8650919e64ec..000000000000 --- a/parachain/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Parachain - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/parachain/src/lib.rs b/parachain/src/lib.rs deleted file mode 100644 index 2cf441e88c9f..000000000000 --- a/parachain/src/lib.rs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -#![warn(unused_crate_dependencies)] - -//! Defines primitive types for creating or validating a parachain. -//! -//! When compiled with standard library support, this crate exports a `wasm` -//! module that can be used to validate parachain WASM. -//! -//! ## Parachain WASM -//! -//! Polkadot parachain WASM is in the form of a module which imports a memory -//! instance and exports a function `validate_block`. -//! -//! `validate` accepts as input two `i32` values, representing a pointer/length pair -//! respectively, that encodes [`ValidationParams`]. -//! -//! `validate` returns an `u64` which is a pointer to an `u8` array and its length. -//! The data in the array is expected to be a SCALE encoded [`ValidationResult`]. -//! -//! ASCII-diagram demonstrating the return data format: -//! -//! ```ignore -//! [pointer][length] -//! 32bit 32bit -//! ^~~ returned pointer & length -//! ``` -//! -//! The wasm-api (enabled only when `std` feature is not enabled and `wasm-api` feature is enabled) -//! provides utilities for setting up a parachain WASM module in Rust. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod primitives; - -mod wasm_api; - -#[cfg(all(not(feature = "std"), feature = "wasm-api"))] -pub use wasm_api::*; diff --git a/parachain/src/primitives.rs b/parachain/src/primitives.rs deleted file mode 100644 index bf6d45ad01c8..000000000000 --- a/parachain/src/primitives.rs +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Primitive types which are strictly necessary from a parachain-execution point -//! of view. - -use sp_std::vec::Vec; - -use parity_scale_codec::{Encode, Decode, CompactAs}; -use sp_core::{RuntimeDebug, TypeId}; -use sp_runtime::traits::Hash as _; - -#[cfg(feature = "std")] -use serde::{Serialize, Deserialize}; - -#[cfg(feature = "std")] -use sp_core::bytes; - -#[cfg(feature = "std")] -use parity_util_mem::MallocSizeOf; - -use polkadot_core_primitives::{Hash, OutboundHrmpMessage}; - -/// Block number type used by the relay chain. -pub use polkadot_core_primitives::BlockNumber as RelayChainBlockNumber; - -/// Parachain head data included in the chain. -#[derive(PartialEq, Eq, Clone, PartialOrd, Ord, Encode, Decode, RuntimeDebug, derive_more::From)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Default, Hash, MallocSizeOf))] -pub struct HeadData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); - -#[cfg(feature = "std")] -impl HeadData { - /// Returns the hash of this head data. - pub fn hash(&self) -> Hash { - sp_runtime::traits::BlakeTwo256::hash(&self.0) - } -} - -/// Parachain validation code. -#[derive(Default, PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, derive_more::From)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Hash, MallocSizeOf))] -pub struct ValidationCode(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); - -impl ValidationCode { - /// Get the blake2-256 hash of the validation code bytes. - pub fn hash(&self) -> ValidationCodeHash { - ValidationCodeHash(sp_runtime::traits::BlakeTwo256::hash(&self.0[..])) - } -} - -/// Unit type wrapper around [`Hash`] that represents a validation code hash. -/// -/// This type is produced by [`ValidationCode::hash`]. -/// -/// This type makes it easy to enforce that a hash is a validation code hash on the type level. -#[derive(Clone, Copy, Encode, Decode, Default, Hash, Eq, PartialEq, PartialOrd, Ord)] -#[cfg_attr(feature = "std", derive(MallocSizeOf))] -pub struct ValidationCodeHash(Hash); - -impl sp_std::fmt::Display for ValidationCodeHash { - fn fmt(&self, f: &mut sp_std::fmt::Formatter<'_>) -> sp_std::fmt::Result { - self.0.fmt(f) - } -} - -impl sp_std::fmt::Debug for ValidationCodeHash { - fn fmt(&self, f: &mut sp_std::fmt::Formatter<'_>) -> sp_std::fmt::Result { - write!(f, "{:?}", self.0) - } -} - -impl AsRef<[u8]> for ValidationCodeHash { - fn as_ref(&self) -> &[u8] { - self.0.as_ref() - } -} - -impl From for ValidationCodeHash { - fn from(hash: Hash) -> ValidationCodeHash { - ValidationCodeHash(hash) - } -} - -impl From<[u8; 32]> for ValidationCodeHash { - fn from(hash: [u8; 32]) -> ValidationCodeHash { - ValidationCodeHash(hash.into()) - } -} - -impl sp_std::fmt::LowerHex for ValidationCodeHash { - fn fmt(&self, f: &mut sp_std::fmt::Formatter<'_>) -> sp_std::fmt::Result { - sp_std::fmt::LowerHex::fmt(&self.0, f) - } -} - -/// Parachain block data. -/// -/// Contains everything required to validate para-block, may contain block and witness data. -#[derive(PartialEq, Eq, Clone, Encode, Decode, derive_more::From)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, MallocSizeOf))] -pub struct BlockData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); - -/// Unique identifier of a parachain. -#[derive( - Clone, CompactAs, Copy, Decode, Default, Encode, Eq, - Hash, Ord, PartialEq, PartialOrd, RuntimeDebug, -)] -#[cfg_attr(feature = "std", derive( - serde::Serialize, serde::Deserialize, derive_more::Display, MallocSizeOf) -)] -pub struct Id(u32); - -impl TypeId for Id { - const TYPE_ID: [u8; 4] = *b"para"; -} - -impl From for u32 { - fn from(x: Id) -> Self { x.0 } -} - -impl From for Id { - fn from(x: u32) -> Self { Id(x) } -} - -impl From for Id { - fn from(x: usize) -> Self { - use sp_std::convert::TryInto; - // can't panic, so need to truncate - let x = x.try_into().unwrap_or(u32::MAX); - Id(x) - } -} - -// When we added a second From impl for Id, type inference could no longer -// determine which impl should apply for things like `5.into()`. It therefore -// raised a bunch of errors in our test code, scattered throughout the -// various modules' tests, that there is no impl of `From` (`i32` being -// the default numeric type). -// -// We can't use `cfg(test)` here, because that configuration directive does not -// propagate between crates, which would fail to fix tests in crates other than -// this one. -// -// Instead, let's take advantage of the observation that what really matters for a -// ParaId within a test context is that it is unique and constant. I believe that -// there is no case where someone does `(-1).into()` anyway, but if they do, it -// never matters whether the actual contained ID is `-1` or `4294967295`. Nobody -// does arithmetic on a `ParaId`; doing so would be a bug. -impl From for Id { - fn from(x: i32) -> Self { - Id(x as u32) - } -} - -const USER_INDEX_START: u32 = 1000; -const PUBLIC_INDEX_START: u32 = 2000; - -/// The ID of the first user (non-system) parachain. -pub const LOWEST_USER_ID: Id = Id(USER_INDEX_START); - -/// The ID of the first publicly registerable parachain. -pub const LOWEST_PUBLIC_ID: Id = Id(PUBLIC_INDEX_START); - -impl Id { - /// Create an `Id`. - pub const fn new(id: u32) -> Self { - Self(id) - } -} - -/// Determine if a parachain is a system parachain or not. -pub trait IsSystem { - /// Returns `true` if a parachain is a system parachain, `false` otherwise. - fn is_system(&self) -> bool; -} - -impl IsSystem for Id { - fn is_system(&self) -> bool { - self.0 < USER_INDEX_START - } -} - -impl sp_std::ops::Add for Id { - type Output = Self; - - fn add(self, other: u32) -> Self { - Self(self.0 + other) - } -} - -impl sp_std::ops::Sub for Id { - type Output = Self; - - fn sub(self, other: u32) -> Self { - Self(self.0 - other) - } -} - -#[derive(Clone, Copy, Default, Encode, Decode, Eq, PartialEq, Ord, PartialOrd, RuntimeDebug)] -pub struct Sibling(pub Id); - -impl From for Sibling { - fn from(i: Id) -> Self { - Self(i) - } -} - -impl From for Id { - fn from(i: Sibling) -> Self { - i.0 - } -} - -impl AsRef for Sibling { - fn as_ref(&self) -> &Id { - &self.0 - } -} - -impl TypeId for Sibling { - const TYPE_ID: [u8; 4] = *b"sibl"; -} - -impl From for u32 { - fn from(x: Sibling) -> Self { x.0.into() } -} - -impl From for Sibling { - fn from(x: u32) -> Self { Sibling(x.into()) } -} - -impl IsSystem for Sibling { - fn is_system(&self) -> bool { - IsSystem::is_system(&self.0) - } -} - -/// This type can be converted into and possibly from an AccountId (which itself is generic). -pub trait AccountIdConversion: Sized { - /// Convert into an account ID. This is infallible. - fn into_account(&self) -> AccountId; - - /// Try to convert an account ID into this type. Might not succeed. - fn try_from_account(a: &AccountId) -> Option; -} - -// TODO: Remove all of this, move sp-runtime::AccountIdConversion to own crate and and use that. -// #360 -struct TrailingZeroInput<'a>(&'a [u8]); -impl<'a> parity_scale_codec::Input for TrailingZeroInput<'a> { - fn remaining_len(&mut self) -> Result, parity_scale_codec::Error> { - Ok(None) - } - - fn read(&mut self, into: &mut [u8]) -> Result<(), parity_scale_codec::Error> { - let len = into.len().min(self.0.len()); - into[..len].copy_from_slice(&self.0[..len]); - for i in &mut into[len..] { - *i = 0; - } - self.0 = &self.0[len..]; - Ok(()) - } -} - -/// Format is b"para" ++ encode(parachain ID) ++ 00.... where 00... is indefinite trailing -/// zeroes to fill AccountId. -impl AccountIdConversion for Id { - fn into_account(&self) -> T { - (b"para", self).using_encoded(|b| - T::decode(&mut TrailingZeroInput(b)) - ).unwrap_or_default() - } - - fn try_from_account(x: &T) -> Option { - x.using_encoded(|d| { - if &d[0..4] != b"para" { return None } - let mut cursor = &d[4..]; - let result = Decode::decode(&mut cursor).ok()?; - if cursor.iter().all(|x| *x == 0) { - Some(result) - } else { - None - } - }) - } -} - -/// A type that uniquely identifies an HRMP channel. An HRMP channel is established between two paras. -/// In text, we use the notation `(A, B)` to specify a channel between A and B. The channels are -/// unidirectional, meaning that `(A, B)` and `(B, A)` refer to different channels. The convention is -/// that we use the first item tuple for the sender and the second for the recipient. Only one channel -/// is allowed between two participants in one direction, i.e. there cannot be 2 different channels -/// identified by `(A, B)`. -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Hash))] -pub struct HrmpChannelId { - /// The para that acts as the sender in this channel. - pub sender: Id, - /// The para that acts as the recipient in this channel. - pub recipient: Id, -} - -/// A message from a parachain to its Relay Chain. -pub type UpwardMessage = Vec; - -/// Validation parameters for evaluating the parachain validity function. -// TODO: balance downloads (https://github.com/paritytech/polkadot/issues/220) -#[derive(PartialEq, Eq, Decode, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode))] -pub struct ValidationParams { - /// Previous head-data. - pub parent_head: HeadData, - /// The collation body. - pub block_data: BlockData, - /// The current relay-chain block number. - pub relay_parent_number: RelayChainBlockNumber, - /// The relay-chain block's storage root. - pub relay_parent_storage_root: Hash, -} - -/// The result of parachain validation. -// TODO: balance uploads (https://github.com/paritytech/polkadot/issues/220) -#[derive(PartialEq, Eq, Clone, Encode)] -#[cfg_attr(feature = "std", derive(Debug, Decode))] -pub struct ValidationResult { - /// New head data that should be included in the relay chain state. - pub head_data: HeadData, - /// An update to the validation code that should be scheduled in the relay chain. - pub new_validation_code: Option, - /// Upward messages send by the Parachain. - pub upward_messages: Vec, - /// Outbound horizontal messages sent by the parachain. - pub horizontal_messages: Vec>, - /// Number of downward messages that were processed by the Parachain. - /// - /// It is expected that the Parachain processes them from first to last. - pub processed_downward_messages: u32, - /// The mark which specifies the block number up to which all inbound HRMP messages are processed. - pub hrmp_watermark: RelayChainBlockNumber, -} diff --git a/parachain/src/wasm_api.rs b/parachain/src/wasm_api.rs deleted file mode 100644 index 99bed554147b..000000000000 --- a/parachain/src/wasm_api.rs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utilities for writing parachain WASM. - -/// Load the validation params from memory when implementing a Rust parachain. -/// -/// Offset and length must have been provided by the validation -/// function's entry point. -#[cfg(not(feature = "std"))] -pub unsafe fn load_params(params: *const u8, len: usize) - -> crate::primitives::ValidationParams -{ - let mut slice = sp_std::slice::from_raw_parts(params, len); - - parity_scale_codec::Decode::decode(&mut slice).expect("Invalid input data") -} - -/// Allocate the validation result in memory, getting the return-pointer back. -/// -/// As described in the crate docs, this is a pointer to the appended length -/// of the vector. -#[cfg(not(feature = "std"))] -pub fn write_result(result: &crate::primitives::ValidationResult) -> u64 { - sp_core::to_substrate_wasm_fn_return_value(&result) -} diff --git a/parachain/test-parachains/.gitignore b/parachain/test-parachains/.gitignore deleted file mode 100644 index 2c96eb1b6517..000000000000 --- a/parachain/test-parachains/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target/ -Cargo.lock diff --git a/parachain/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml deleted file mode 100644 index 7fe688915cee..000000000000 --- a/parachain/test-parachains/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "test-parachains" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Integration tests using the test-parachains" -edition = "2018" - -[dependencies] -tiny-keccak = "2.0.2" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } - -parachain = { package = "polkadot-parachain", path = ".." } -adder = { package = "test-parachain-adder", path = "adder" } -halt = { package = "test-parachain-halt", path = "halt" } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } - -[features] -default = [ "std" ] -std = [ - "adder/std", - "halt/std", -] diff --git a/parachain/test-parachains/README.md b/parachain/test-parachains/README.md deleted file mode 100644 index 2c708bd54318..000000000000 --- a/parachain/test-parachains/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Test Parachains - -Each parachain consists of three parts: a `#![no_std]` library with the main execution logic, a WASM crate which wraps this logic, and a collator node. diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml deleted file mode 100644 index b807d89232b3..000000000000 --- a/parachain/test-parachains/adder/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "test-parachain-adder" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Test parachain which adds to a number as its state transition" -edition = "2018" -build = "build.rs" - -[dependencies] -parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -tiny-keccak = { version = "2.0.2", features = ["keccak"] } -dlmalloc = { version = "0.2.1", features = [ "global" ] } - -# We need to make sure the global allocator is disabled until we have support of full substrate externalities -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, features = [ "disable_allocator" ] } - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = [ "std" ] -std = [ - "parachain/std", - "sp-std/std", -] diff --git a/parachain/test-parachains/adder/build.rs b/parachain/test-parachains/adder/build.rs deleted file mode 100644 index ac1ce327cf90..000000000000 --- a/parachain/test-parachains/adder/build.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .export_heap_base() - .build() -} diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml deleted file mode 100644 index ee0bc558dcf9..000000000000 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "test-parachain-adder-collator" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Collator for the adder test parachain" -edition = "2018" - -[[bin]] -name = "adder-collator" -path = "src/main.rs" - -[[bin]] -name = "adder_collator_puppet_worker" -path = "bin/puppet_worker.rs" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -futures = "0.3.15" -futures-timer = "3.0.2" -log = "0.4.13" -structopt = "0.3.21" - -test-parachain-adder = { path = ".." } -polkadot-primitives = { path = "../../../../primitives" } -polkadot-cli = { path = "../../../../cli" } -polkadot-service = { path = "../../../../node/service", features = [ "rococo-native" ] } -polkadot-node-primitives = { path = "../../../../node/primitives" } -polkadot-node-subsystem = { path = "../../../../node/subsystem" } - -sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } - -# This one is tricky. Even though it is not used directly by the collator, we still need it for the -# `puppet_worker` binary, which is required for the integration test. However, this shouldn't be -# a big problem since it is used transitively anyway. -polkadot-node-core-pvf = { path = "../../../../node/core/pvf" } - -[dev-dependencies] -polkadot-parachain = { path = "../../.." } -polkadot-test-service = { path = "../../../../node/test/service" } - -substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } - -tokio = { version = "0.2", features = ["macros"] } diff --git a/parachain/test-parachains/adder/collator/README.md b/parachain/test-parachains/adder/collator/README.md deleted file mode 100644 index be5922b9f95a..000000000000 --- a/parachain/test-parachains/adder/collator/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# How to run this collator - -First start two validators that will run for the relay chain: -```sh -cargo run --release -- -d alice --chain rococo-local --validator --alice --port 50551 -cargo run --release -- -d bob --chain rococo-local --validator --bob --port 50552 -``` - -Next start the collator that will collate for the adder parachain: -```sh -cargo run --release -p test-parachain-adder-collator -- --tmp --chain rococo-local --port 50553 -``` - -The last step is to register the parachain using polkadot-js. The parachain id is -100. The genesis state and the validation code are printed at startup by the collator. - -To do this automatically, run `scripts/adder-collator.sh`. diff --git a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs b/parachain/test-parachains/adder/collator/bin/puppet_worker.rs deleted file mode 100644 index 4b026e96a809..000000000000 --- a/parachain/test-parachains/adder/collator/bin/puppet_worker.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -polkadot_node_core_pvf::decl_puppet_worker_main!(); diff --git a/parachain/test-parachains/adder/collator/src/cli.rs b/parachain/test-parachains/adder/collator/src/cli.rs deleted file mode 100644 index ae6e9ef9008f..000000000000 --- a/parachain/test-parachains/adder/collator/src/cli.rs +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot CLI library. - -use sc_cli::{RuntimeVersion, SubstrateCli}; -use structopt::StructOpt; - -/// Sub-commands supported by the collator. -#[derive(Debug, StructOpt)] -pub enum Subcommand { - /// Export the genesis state of the parachain. - #[structopt(name = "export-genesis-state")] - ExportGenesisState(ExportGenesisStateCommand), - - /// Export the genesis wasm of the parachain. - #[structopt(name = "export-genesis-wasm")] - ExportGenesisWasm(ExportGenesisWasmCommand), -} - -/// Command for exporting the genesis state of the parachain -#[derive(Debug, StructOpt)] -pub struct ExportGenesisStateCommand {} - -/// Command for exporting the genesis wasm file. -#[derive(Debug, StructOpt)] -pub struct ExportGenesisWasmCommand {} - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub struct RunCmd { - #[allow(missing_docs)] - #[structopt(flatten)] - pub base: sc_cli::RunCmd, - - /// Id of the parachain this collator collates for. - #[structopt(long)] - pub parachain_id: Option, -} - -#[allow(missing_docs)] -#[derive(Debug, StructOpt)] -pub struct Cli { - #[structopt(subcommand)] - pub subcommand: Option, - - #[structopt(flatten)] - pub run: RunCmd, -} - -impl SubstrateCli for Cli { - fn impl_name() -> String { - "Parity Polkadot".into() - } - - fn impl_version() -> String { - "0.0.0".into() - } - - fn description() -> String { - env!("CARGO_PKG_DESCRIPTION").into() - } - - fn author() -> String { - env!("CARGO_PKG_AUTHORS").into() - } - - fn support_url() -> String { - "https://github.com/paritytech/polkadot/issues/new".into() - } - - fn copyright_start_year() -> i32 { - 2017 - } - - fn executable_name() -> String { - "polkadot".into() - } - - fn load_spec(&self, id: &str) -> std::result::Result, String> { - let id = if id.is_empty() { "rococo" } else { id }; - Ok(match id { - "rococo-staging" => { - Box::new(polkadot_service::chain_spec::rococo_staging_testnet_config()?) - } - "rococo-local" => { - Box::new(polkadot_service::chain_spec::rococo_local_testnet_config()?) - } - "rococo" => Box::new(polkadot_service::chain_spec::rococo_config()?), - path => { - let path = std::path::PathBuf::from(path); - Box::new(polkadot_service::RococoChainSpec::from_json_file(path)?) - } - }) - } - - fn native_runtime_version( - _spec: &Box, - ) -> &'static RuntimeVersion { - &polkadot_service::rococo_runtime::VERSION - } -} diff --git a/parachain/test-parachains/adder/collator/src/lib.rs b/parachain/test-parachains/adder/collator/src/lib.rs deleted file mode 100644 index 80510a189d0a..000000000000 --- a/parachain/test-parachains/adder/collator/src/lib.rs +++ /dev/null @@ -1,318 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Collator for the adder test parachain. - -use futures_timer::Delay; -use polkadot_node_primitives::{Collation, CollatorFn, CollationResult, Statement, SignedFullStatement}; -use polkadot_primitives::v1::{CollatorId, CollatorPair}; -use polkadot_node_primitives::PoV; -use parity_scale_codec::{Encode, Decode}; -use sp_core::{Pair, traits::SpawnNamed}; -use std::{ - collections::HashMap, - sync::{Arc, Mutex, atomic::{AtomicU32, Ordering}}, - time::Duration, -}; -use test_parachain_adder::{execute, hash_state, BlockData, HeadData}; -use futures::channel::oneshot; - -/// The amount we add when producing a new block. -/// -/// This is a constant to make tests easily reproducible. -const ADD: u64 = 2; - -/// Calculates the head and state for the block with the given `number`. -fn calculate_head_and_state_for_number(number: u64) -> (HeadData, u64) { - let mut head = HeadData { - number: 0, - parent_hash: Default::default(), - post_state: hash_state(0), - }; - - let mut state = 0u64; - - while head.number < number { - let block = BlockData { state, add: ADD }; - head = execute(head.hash(), head.clone(), &block).expect("Produces valid block"); - state = state.wrapping_add(ADD); - } - - (head, state) -} - -/// The state of the adder parachain. -struct State { - head_to_state: HashMap, u64>, - number_to_head: HashMap>, - /// Block number of the best block. - best_block: u64, -} - -impl State { - /// Init the genesis state. - fn genesis() -> Self { - let genesis_state = Arc::new(calculate_head_and_state_for_number(0).0); - - Self { - head_to_state: vec![(genesis_state.clone(), 0)].into_iter().collect(), - number_to_head: vec![(0, genesis_state)].into_iter().collect(), - best_block: 0, - } - } - - /// Advance the state and produce a new block based on the given `parent_head`. - /// - /// Returns the new [`BlockData`] and the new [`HeadData`]. - fn advance(&mut self, parent_head: HeadData) -> (BlockData, HeadData) { - self.best_block = parent_head.number; - - let block = BlockData { - state: self - .head_to_state - .get(&parent_head) - .copied() - .unwrap_or_else(|| calculate_head_and_state_for_number(parent_head.number).1), - add: ADD, - }; - - let new_head = execute(parent_head.hash(), parent_head, &block).expect("Produces valid block"); - - let new_head_arc = Arc::new(new_head.clone()); - self.head_to_state - .insert(new_head_arc.clone(), block.state.wrapping_add(ADD)); - self.number_to_head.insert(new_head.number, new_head_arc); - - (block, new_head) - } -} - -/// The collator of the adder parachain. -pub struct Collator { - state: Arc>, - key: CollatorPair, - seconded_collations: Arc, -} - -impl Collator { - /// Create a new collator instance with the state initialized as genesis. - pub fn new() -> Self { - Self { - state: Arc::new(Mutex::new(State::genesis())), - key: CollatorPair::generate().0, - seconded_collations: Arc::new(AtomicU32::new(0)), - } - } - - /// Get the SCALE encoded genesis head of the adder parachain. - pub fn genesis_head(&self) -> Vec { - self.state - .lock() - .unwrap() - .number_to_head - .get(&0) - .expect("Genesis header exists") - .encode() - } - - /// Get the validation code of the adder parachain. - pub fn validation_code(&self) -> &[u8] { - test_parachain_adder::wasm_binary_unwrap() - } - - /// Get the collator key. - pub fn collator_key(&self) -> CollatorPair { - self.key.clone() - } - - /// Get the collator id. - pub fn collator_id(&self) -> CollatorId { - self.key.public() - } - - /// Create the collation function. - /// - /// This collation function can be plugged into the overseer to generate collations for the adder parachain. - pub fn create_collation_function(&self, spawner: impl SpawnNamed + Clone + 'static) -> CollatorFn { - use futures::FutureExt as _; - - let state = self.state.clone(); - let seconded_collations = self.seconded_collations.clone(); - - Box::new(move |relay_parent, validation_data| { - let parent = HeadData::decode(&mut &validation_data.parent_head.0[..]) - .expect("Decodes parent head"); - - let (block_data, head_data) = state.lock().unwrap().advance(parent); - - log::info!( - "created a new collation on relay-parent({}): {:?}", - relay_parent, - block_data, - ); - - let pov = PoV { block_data: block_data.encode().into() }; - - let collation = Collation { - upward_messages: Vec::new(), - horizontal_messages: Vec::new(), - new_validation_code: None, - head_data: head_data.encode().into(), - proof_of_validity: pov.clone(), - processed_downward_messages: 0, - hrmp_watermark: validation_data.relay_parent_number, - }; - - let compressed_pov = polkadot_node_primitives::maybe_compress_pov(pov); - - let (result_sender, recv) = oneshot::channel::(); - let seconded_collations = seconded_collations.clone(); - spawner.spawn("adder-collator-seconded", async move { - if let Ok(res) = recv.await { - if !matches!( - res.payload(), - Statement::Seconded(s) if s.descriptor.pov_hash == compressed_pov.hash(), - ) { - log::error!("Seconded statement should match our collation: {:?}", res.payload()); - std::process::exit(-1); - } - - seconded_collations.fetch_add(1, Ordering::Relaxed); - } - }.boxed()); - - async move { Some(CollationResult { collation, result_sender: Some(result_sender) }) }.boxed() - }) - } - - /// Wait until `blocks` are built and enacted. - pub async fn wait_for_blocks(&self, blocks: u64) { - let start_block = self.state.lock().unwrap().best_block; - loop { - Delay::new(Duration::from_secs(1)).await; - - let current_block = self.state.lock().unwrap().best_block; - - if start_block + blocks <= current_block { - return; - } - } - } - - /// Wait until `seconded` collations of this collator are seconded by a parachain validator. - /// - /// The internal counter isn't de-duplicating the collations when counting the number of seconded collations. This - /// means when one collation is seconded by X validators, we record X seconded messages. - pub async fn wait_for_seconded_collations(&self, seconded: u32) { - let seconded_collations = self.seconded_collations.clone(); - loop { - Delay::new(Duration::from_secs(1)).await; - - if seconded <= seconded_collations.load(Ordering::Relaxed) { - return; - } - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use futures::executor::block_on; - use polkadot_parachain::{primitives::{ValidationParams, ValidationResult}}; - use polkadot_primitives::v1::PersistedValidationData; - - #[test] - fn collator_works() { - let spawner = sp_core::testing::TaskExecutor::new(); - let collator = Collator::new(); - let collation_function = collator.create_collation_function(spawner); - - for i in 0..5 { - let parent_head = collator - .state - .lock() - .unwrap() - .number_to_head - .get(&i) - .unwrap() - .clone(); - - let validation_data = PersistedValidationData { - parent_head: parent_head.encode().into(), - ..Default::default() - }; - - let collation = - block_on(collation_function(Default::default(), &validation_data)).unwrap(); - validate_collation(&collator, (*parent_head).clone(), collation.collation); - } - } - - fn validate_collation( - collator: &Collator, - parent_head: HeadData, - collation: Collation, - ) { - use polkadot_node_core_pvf::testing::validate_candidate; - - let ret_buf = validate_candidate( - collator.validation_code(), - &ValidationParams { - parent_head: parent_head.encode().into(), - block_data: collation.proof_of_validity.block_data, - relay_parent_number: 1, - relay_parent_storage_root: Default::default(), - }.encode(), - ) - .unwrap(); - let ret = ValidationResult::decode(&mut &ret_buf[..]).unwrap(); - - let new_head = HeadData::decode(&mut &ret.head_data.0[..]).unwrap(); - assert_eq!( - **collator - .state - .lock() - .unwrap() - .number_to_head - .get(&(parent_head.number + 1)) - .unwrap(), - new_head - ); - } - - #[test] - fn advance_to_state_when_parent_head_is_missing() { - let collator = Collator::new(); - - let mut head = calculate_head_and_state_for_number(10).0; - - for i in 1..10 { - head = collator.state.lock().unwrap().advance(head).1; - assert_eq!(10 + i, head.number); - } - - let collator = Collator::new(); - let mut second_head = collator.state.lock().unwrap().number_to_head.get(&0).cloned().unwrap().as_ref().clone(); - - for _ in 1..20 { - second_head = collator.state.lock().unwrap().advance(second_head.clone()).1; - } - - assert_eq!(second_head, head); - } -} diff --git a/parachain/test-parachains/adder/collator/src/main.rs b/parachain/test-parachains/adder/collator/src/main.rs deleted file mode 100644 index 2b6b219f0d3c..000000000000 --- a/parachain/test-parachains/adder/collator/src/main.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Collator for the adder test parachain. - -use polkadot_node_primitives::CollationGenerationConfig; -use polkadot_node_subsystem::messages::{CollationGenerationMessage, CollatorProtocolMessage}; -use polkadot_primitives::v1::Id as ParaId; -use polkadot_cli::{Error, Result}; -use sc_cli::{Error as SubstrateCliError, Role, SubstrateCli}; -use sp_core::hexdisplay::HexDisplay; -use test_parachain_adder_collator::Collator; - -/// The parachain ID to collate for in case it wasn't set explicitly through CLI. -const DEFAULT_PARA_ID: ParaId = ParaId::new(100); - -mod cli; -use cli::Cli; - -fn main() -> Result<()> { - let cli = Cli::from_args(); - - match cli.subcommand { - Some(cli::Subcommand::ExportGenesisState(_params)) => { - let collator = Collator::new(); - println!("0x{:?}", HexDisplay::from(&collator.genesis_head())); - - Ok::<_, Error>(()) - } - Some(cli::Subcommand::ExportGenesisWasm(_params)) => { - let collator = Collator::new(); - println!("0x{:?}", HexDisplay::from(&collator.validation_code())); - - Ok(()) - } - None => { - let runner = cli.create_runner(&cli.run.base) - .map_err(|e| SubstrateCliError::Application(Box::new(e) as Box::<(dyn 'static + Send + Sync + std::error::Error)>))?; - - runner.run_node_until_exit(|config| async move { - let role = config.role.clone(); - - match role { - Role::Light => Err("Light client not supported".into()), - _ => { - let collator = Collator::new(); - - let full_node = polkadot_service::build_full( - config, - polkadot_service::IsCollator::Yes(collator.collator_key()), - None, - true, - None, - None, - polkadot_service::RealOverseerGen, - ).map_err(|e| e.to_string())?; - let mut overseer_handler = full_node - .overseer_handler - .expect("Overseer handler should be initialized for collators"); - - let genesis_head_hex = - format!("0x{:?}", HexDisplay::from(&collator.genesis_head())); - let validation_code_hex = - format!("0x{:?}", HexDisplay::from(&collator.validation_code())); - - let para_id = cli.run.parachain_id.map(ParaId::from).unwrap_or(DEFAULT_PARA_ID); - - log::info!("Running adder collator for parachain id: {}", para_id); - log::info!("Genesis state: {}", genesis_head_hex); - log::info!("Validation code: {}", validation_code_hex); - - let config = CollationGenerationConfig { - key: collator.collator_key(), - collator: collator.create_collation_function(full_node.task_manager.spawn_handle()), - para_id, - }; - overseer_handler - .send_msg(CollationGenerationMessage::Initialize(config)) - .await; - - overseer_handler - .send_msg(CollatorProtocolMessage::CollateOn(para_id)) - .await; - - Ok(full_node.task_manager) - } - } - }) - } - }?; - Ok(()) -} diff --git a/parachain/test-parachains/adder/collator/tests/integration.rs b/parachain/test-parachains/adder/collator/tests/integration.rs deleted file mode 100644 index 574a9abf84df..000000000000 --- a/parachain/test-parachains/adder/collator/tests/integration.rs +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Integration test that ensures that we can build and include parachain -//! blocks of the adder parachain. - -const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_adder_collator_puppet_worker"); - -// If this test is failing, make sure to run all tests with the `real-overseer` feature being enabled. -#[substrate_test_utils::test] -async fn collating_using_adder_collator(task_executor: sc_service::TaskExecutor) { - use sp_keyring::AccountKeyring::*; - use futures::join; - use polkadot_primitives::v1::Id as ParaId; - - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - builder.init().expect("Set up logger"); - - let para_id = ParaId::from(100); - - // start alice - let alice = polkadot_test_service::run_validator_node( - task_executor.clone(), - Alice, || {}, - vec![], - Some(PUPPET_EXE.into()), - ); - - // start bob - let bob = polkadot_test_service::run_validator_node( - task_executor.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - Some(PUPPET_EXE.into()), - ); - - let collator = test_parachain_adder_collator::Collator::new(); - - // register parachain - alice - .register_parachain( - para_id, - collator.validation_code().to_vec(), - collator.genesis_head(), - ) - .await - .unwrap(); - - // run the collator node - let mut charlie = polkadot_test_service::run_collator_node( - task_executor.clone(), - Charlie, - || {}, - vec![alice.addr.clone(), bob.addr.clone()], - collator.collator_key(), - ); - - charlie.register_collator( - collator.collator_key(), - para_id, - collator.create_collation_function(charlie.task_manager.spawn_handle()), - ).await; - - // Wait until the parachain has 4 blocks produced. - collator.wait_for_blocks(4).await; - - // Wait until the collator received `12` seconded statements for its collations. - collator.wait_for_seconded_collations(12).await; - - join!( - alice.task_manager.clean_shutdown(), - bob.task_manager.clean_shutdown(), - charlie.task_manager.clean_shutdown(), - ); -} diff --git a/parachain/test-parachains/adder/src/lib.rs b/parachain/test-parachains/adder/src/lib.rs deleted file mode 100644 index 37208efbca1b..000000000000 --- a/parachain/test-parachains/adder/src/lib.rs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Basic parachain that adds a number as part of its state. - -#![no_std] - -#![cfg_attr(not(feature = "std"), feature(core_intrinsics, lang_items, core_panic_info, alloc_error_handler))] - -use parity_scale_codec::{Encode, Decode}; -use tiny_keccak::{Hasher as _, Keccak}; - -#[cfg(not(feature = "std"))] -mod wasm_validation; - -#[cfg(not(feature = "std"))] -#[global_allocator] -static ALLOC: dlmalloc::GlobalDlmalloc = dlmalloc::GlobalDlmalloc; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -fn keccak256(input: &[u8]) -> [u8; 32] { - let mut out = [0u8; 32]; - let mut keccak256 = Keccak::v256(); - keccak256.update(input); - keccak256.finalize(&mut out); - out -} - -/// Wasm binary unwrapped. If built with `BUILD_DUMMY_WASM_BINARY`, the function panics. -#[cfg(feature = "std")] -pub fn wasm_binary_unwrap() -> &'static [u8] { - WASM_BINARY.expect("Development wasm binary is not available. Testing is only \ - supported with the flag disabled.") -} - -/// Head data for this parachain. -#[derive(Default, Clone, Hash, Eq, PartialEq, Encode, Decode, Debug)] -pub struct HeadData { - /// Block number - pub number: u64, - /// parent block keccak256 - pub parent_hash: [u8; 32], - /// hash of post-execution state. - pub post_state: [u8; 32], -} - -impl HeadData { - pub fn hash(&self) -> [u8; 32] { - keccak256(&self.encode()) - } -} - -/// Block data for this parachain. -#[derive(Default, Clone, Encode, Decode, Debug)] -pub struct BlockData { - /// State to begin from. - pub state: u64, - /// Amount to add (wrapping) - pub add: u64, -} - -pub fn hash_state(state: u64) -> [u8; 32] { - keccak256(state.encode().as_slice()) -} - -/// Start state mismatched with parent header's state hash. -#[derive(Debug)] -pub struct StateMismatch; - -/// Execute a block body on top of given parent head, producing new parent head -/// if valid. -pub fn execute( - parent_hash: [u8; 32], - parent_head: HeadData, - block_data: &BlockData, -) -> Result { - assert_eq!(parent_hash, parent_head.hash()); - - if hash_state(block_data.state) != parent_head.post_state { - return Err(StateMismatch); - } - - let new_state = block_data.state.wrapping_add(block_data.add); - - Ok(HeadData { - number: parent_head.number + 1, - parent_hash, - post_state: hash_state(new_state), - }) -} diff --git a/parachain/test-parachains/adder/src/wasm_validation.rs b/parachain/test-parachains/adder/src/wasm_validation.rs deleted file mode 100644 index 4de5784adf2c..000000000000 --- a/parachain/test-parachains/adder/src/wasm_validation.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! WASM validation for adder parachain. - -use crate::{HeadData, BlockData}; -use core::panic; -use sp_std::vec::Vec; -use parachain::primitives::{ValidationResult, HeadData as GenericHeadData}; -use parity_scale_codec::{Encode, Decode}; - -#[no_mangle] -pub extern "C" fn validate_block(params: *const u8, len: usize) -> u64 { - let params = unsafe { parachain::load_params(params, len) }; - let parent_head = HeadData::decode(&mut ¶ms.parent_head.0[..]) - .expect("invalid parent head format."); - - let block_data = BlockData::decode(&mut ¶ms.block_data.0[..]) - .expect("invalid block data format."); - - let parent_hash = crate::keccak256(¶ms.parent_head.0[..]); - - let new_head = crate::execute(parent_hash, parent_head, &block_data).expect("Executes block"); - parachain::write_result( - &ValidationResult { - head_data: GenericHeadData(new_head.encode()), - new_validation_code: None, - upward_messages: sp_std::vec::Vec::new(), - horizontal_messages: sp_std::vec::Vec::new(), - processed_downward_messages: 0, - hrmp_watermark: params.relay_parent_number, - } - ) -} diff --git a/parachain/test-parachains/halt/Cargo.toml b/parachain/test-parachains/halt/Cargo.toml deleted file mode 100644 index b8fcb3297971..000000000000 --- a/parachain/test-parachains/halt/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "test-parachain-halt" -version = "0.9.7" -authors = ["Parity Technologies "] -description = "Test parachain which executes forever" -edition = "2018" -build = "build.rs" - -[dependencies] - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = [ "std" ] -std = [] diff --git a/parachain/test-parachains/halt/build.rs b/parachain/test-parachains/halt/build.rs deleted file mode 100644 index ac1ce327cf90..000000000000 --- a/parachain/test-parachains/halt/build.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .export_heap_base() - .build() -} diff --git a/parachain/test-parachains/halt/src/lib.rs b/parachain/test-parachains/halt/src/lib.rs deleted file mode 100644 index 00314033a4dd..000000000000 --- a/parachain/test-parachains/halt/src/lib.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Basic parachain that executes forever. - -#![no_std] -#![cfg_attr(not(feature = "std"), feature(core_intrinsics, lang_items, core_panic_info, alloc_error_handler))] - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -#[cfg(feature = "std")] -/// Wasm binary unwrapped. If built with `BUILD_DUMMY_WASM_BINARY`, the function panics. -pub fn wasm_binary_unwrap() -> &'static [u8] { - WASM_BINARY.expect("Development wasm binary is not available. Testing is only \ - supported with the flag disabled.") -} - -#[cfg(not(feature = "std"))] -#[panic_handler] -#[no_mangle] -pub fn panic(_info: &core::panic::PanicInfo) -> ! { - unsafe { - core::intrinsics::abort() - } -} - -#[cfg(not(feature = "std"))] -#[alloc_error_handler] -#[no_mangle] -pub fn oom(_: core::alloc::Layout) -> ! { - unsafe { - core::intrinsics::abort(); - } -} - -#[cfg(not(feature = "std"))] -#[no_mangle] -pub extern fn validate_block(params: *const u8, len: usize) -> u64 { - loop {} -} diff --git a/parachain/test-parachains/src/lib.rs b/parachain/test-parachains/src/lib.rs deleted file mode 100644 index 5220c2848612..000000000000 --- a/parachain/test-parachains/src/lib.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Stub - the fundamental logic of this crate is the integration tests. diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml deleted file mode 100644 index 677c8b31649c..000000000000 --- a/primitives/Cargo.toml +++ /dev/null @@ -1,60 +0,0 @@ -[package] -name = "polkadot-primitives" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -serde = { version = "1.0.123", optional = true, features = ["derive"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } -primitives = { package = "sp-core", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -application-crypto = { package = "sp-application-crypto", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -runtime_primitives = { package = "sp-runtime", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -polkadot-parachain = { path = "../parachain", default-features = false } -polkadot-core-primitives = { path = "../core-primitives", default-features = false } -trie = { package = "sp-trie", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -hex-literal = "0.3.1" -parity-util-mem = { version = "0.9.0", default-features = false, optional = true } -thiserror = "1.0.23" - -[dev-dependencies] -sp-serializer = { git = "https://github.com/paritytech/substrate", branch = "master" } -pretty_assertions = "0.7.2" - -[features] -default = ["std"] -std = [ - "application-crypto/std", - "parity-scale-codec/std", - "primitives/std", - "inherents/std", - "trie/std", - "sp-api/std", - "sp-authority-discovery/std", - "sp-consensus-slots/std", - "sp-keystore", - "sp-std/std", - "sp-io/std", - "sp-version/std", - "sp-staking/std", - "sp-arithmetic/std", - "runtime_primitives/std", - "serde", - "parity-util-mem", - "polkadot-parachain/std", - "polkadot-core-primitives/std", - "bitvec/std", - "frame-system/std", -] diff --git a/primitives/README.adoc b/primitives/README.adoc deleted file mode 100644 index 0e5c9412f002..000000000000 --- a/primitives/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot primitives - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/primitives/chain-kusama/Cargo.toml b/primitives/chain-kusama/Cargo.toml new file mode 100644 index 000000000000..6ff860357c7c --- /dev/null +++ b/primitives/chain-kusama/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "bp-kusama" +description = "Primitives of Kusama runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +smallvec = "1.7" + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-polkadot-core = { path = "../polkadot-core", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-polkadot-core/std", + "bp-runtime/std", + "frame-support/std", + "sp-api/std", + "sp-std/std", + "sp-version/std", +] diff --git a/primitives/chain-kusama/src/lib.rs b/primitives/chain-kusama/src/lib.rs new file mode 100644 index 000000000000..9a6eb66d2286 --- /dev/null +++ b/primitives/chain-kusama/src/lib.rs @@ -0,0 +1,177 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_with_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use frame_support::weights::{ + WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, +}; +use sp_std::prelude::*; +use sp_version::RuntimeVersion; + +pub use bp_polkadot_core::*; + +/// Kusama Chain +pub type Kusama = PolkadotLike; + +// NOTE: This needs to be kept up to date with the Kusama runtime found in the Polkadot repo. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: sp_version::create_runtime_str!("kusama"), + impl_name: sp_version::create_runtime_str!("parity-kusama"), + authoring_version: 2, + spec_version: 9100, + impl_version: 0, + apis: sp_version::create_apis_vec![[]], + transaction_version: 5, +}; + +// NOTE: This needs to be kept up to date with the Kusama runtime found in the Polkadot repo. +pub struct WeightToFee; +impl WeightToFeePolynomial for WeightToFee { + type Balance = Balance; + fn polynomial() -> WeightToFeeCoefficients { + const CENTS: Balance = 1_000_000_000_000 / 30_000; + // in Kusama, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: + let p = CENTS; + let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); + smallvec::smallvec![WeightToFeeCoefficient { + degree: 1, + negative: false, + coeff_frac: Perbill::from_rational(p % q, q), + coeff_integer: p / q, + }] + } +} + +// We use this to get the account on Kusama (target) which is derived from Polkadot's (source) +// account. +pub fn derive_account_from_polkadot_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::POLKADOT_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +/// Per-byte fee for Kusama transactions. +pub const TRANSACTION_BYTE_FEE: Balance = 10 * 1_000_000_000_000 / 30_000 / 1_000; + +/// Existential deposit on Kusama. +pub const EXISTENTIAL_DEPOSIT: Balance = 1_000_000_000_000 / 30_000; + +/// The target length of a session (how often authorities change) on Kusama measured in of number of +/// blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = time_units::HOURS; + +/// Name of the With-Polkadot messages pallet instance in the Kusama runtime. +pub const WITH_POLKADOT_MESSAGES_PALLET_NAME: &str = "BridgePolkadotMessages"; + +/// Name of the DOT->KSM conversion rate stored in the Kusama runtime. +pub const POLKADOT_TO_KUSAMA_CONVERSION_RATE_PARAMETER_NAME: &str = + "PolkadotToKusamaConversionRate"; + +/// Name of the `KusamaFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_KUSAMA_HEADER_METHOD: &str = "KusamaFinalityApi_best_finalized"; +/// Name of the `KusamaFinalityApi::is_known_header` runtime method. +pub const IS_KNOWN_KUSAMA_HEADER_METHOD: &str = "KusamaFinalityApi_is_known_header"; + +/// Name of the `ToKusamaOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_KUSAMA_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToKusamaOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToKusamaOutboundLaneApi::message_details` runtime method. +pub const TO_KUSAMA_MESSAGE_DETAILS_METHOD: &str = "ToKusamaOutboundLaneApi_message_details"; +/// Name of the `ToKusamaOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_KUSAMA_LATEST_GENERATED_NONCE_METHOD: &str = + "ToKusamaOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToKusamaOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_KUSAMA_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToKusamaOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromKusamaInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_KUSAMA_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromKusamaInboundLaneApi_latest_received_nonce"; +/// Name of the `FromKusamaInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_KUSAMA_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromKusamaInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromKusamaInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_KUSAMA_UNREWARDED_RELAYERS_STATE: &str = + "FromKusamaInboundLaneApi_unrewarded_relayers_state"; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Kusama headers. + /// + /// This API is implemented by runtimes that are bridging with the Kusama chain, not the + /// Kusama runtime itself. + pub trait KusamaFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Kusama chain. + /// + /// This API is implemented by runtimes that are sending messages to Kusama chain, not the + /// Kusama runtime itself. + pub trait ToKusamaOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Kusama from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Kusama chain. + /// + /// This API is implemented by runtimes that are receiving messages from Kusama chain, not the + /// Kusama runtime itself. + pub trait FromKusamaInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} diff --git a/primitives/chain-millau/Cargo.toml b/primitives/chain-millau/Cargo.toml new file mode 100644 index 000000000000..f1e17fe96f5a --- /dev/null +++ b/primitives/chain-millau/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = "bp-millau" +description = "Primitives of Millau runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } +fixed-hash = { version = "0.7.0", default-features = false } +hash256-std-hasher = { version = "0.15.2", default-features = false } +impl-codec = { version = "0.5.1", default-features = false } +impl-serde = { version = "0.3.1", optional = true } +parity-util-mem = { version = "0.10", default-features = false, features = ["primitive-types"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true, features = ["derive"] } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-runtime/std", + "fixed-hash/std", + "frame-support/std", + "frame-system/std", + "hash256-std-hasher/std", + "impl-codec/std", + "impl-serde", + "parity-util-mem/std", + "scale-info/std", + "serde", + "sp-api/std", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", + "sp-trie/std", +] diff --git a/primitives/chain-millau/src/lib.rs b/primitives/chain-millau/src/lib.rs new file mode 100644 index 000000000000..0092f7092bc0 --- /dev/null +++ b/primitives/chain-millau/src/lib.rs @@ -0,0 +1,367 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_With_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +mod millau_hash; + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use bp_runtime::Chain; +use frame_support::{ + weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, Weight}, + Parameter, RuntimeDebug, +}; +use frame_system::limits; +use scale_info::TypeInfo; +use sp_core::Hasher as HasherT; +use sp_runtime::{ + traits::{Convert, IdentifyAccount, Verify}, + MultiSignature, MultiSigner, Perbill, +}; +use sp_std::prelude::*; +use sp_trie::{trie_types::Layout, TrieConfiguration}; + +#[cfg(feature = "std")] +use serde::{Deserialize, Serialize}; + +pub use millau_hash::MillauHash; + +/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at +/// Millau chain. This mostly depends on number of entries (and their density) in the storage trie. +/// Some reserve is reserved to account future chain growth. +pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; + +/// Number of bytes, included in the signed Millau transaction apart from the encoded call itself. +/// +/// Can be computed by subtracting encoded call size from raw transaction size. +pub const TX_EXTRA_BYTES: u32 = 103; + +/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. +pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; + +/// Maximum weight of single Millau block. +/// +/// This represents 0.5 seconds of compute assuming a target block time of six seconds. +pub const MAXIMUM_BLOCK_WEIGHT: Weight = WEIGHT_PER_SECOND / 2; + +/// Represents the average portion of a block's weight that will be used by an +/// `on_initialize()` runtime call. +pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); + +/// Represents the portion of a block that will be used by Normal extrinsics. +pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); + +/// Maximal number of unrewarded relayer entries at inbound lane. +pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 1024; + +/// Maximal number of unconfirmed messages at inbound lane. +pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 1024; + +/// Weight of single regular message delivery transaction on Millau chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_proof_weight()` call +/// for the case when single message of `pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH` +/// bytes is delivered. The message must have dispatch weight set to zero. The result then must be +/// rounded up to account possible future runtime upgrades. +pub const DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT: Weight = 1_500_000_000; + +/// Increase of delivery transaction weight on Millau chain with every additional message byte. +/// +/// This value is a result of +/// `pallet_bridge_messages::WeightInfoExt::storage_proof_size_overhead(1)` call. The result then +/// must be rounded up to account possible future runtime upgrades. +pub const ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT: Weight = 25_000; + +/// Maximal weight of single message delivery confirmation transaction on Millau chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_delivery_proof` +/// weight formula computation for the case when single message is confirmed. The result then must +/// be rounded up to account possible future runtime upgrades. +pub const MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT: Weight = 2_000_000_000; + +/// Weight of pay-dispatch-fee operation for inbound messages at Millau chain. +/// +/// This value corresponds to the result of +/// `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` call for your +/// chain. Don't put too much reserve there, because it is used to **decrease** +/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery +/// transactions cheaper. +pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; + +/// The target length of a session (how often authorities change) on Millau measured in of number of +/// blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = 5 * time_units::MINUTES; + +/// Re-export `time_units` to make usage easier. +pub use time_units::*; + +/// Human readable time units defined in terms of number of blocks. +pub mod time_units { + use super::BlockNumber; + + pub const MILLISECS_PER_BLOCK: u64 = 6000; + pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + + pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); + pub const HOURS: BlockNumber = MINUTES * 60; + pub const DAYS: BlockNumber = HOURS * 24; +} + +/// Block number type used in Millau. +pub type BlockNumber = u64; + +/// Hash type used in Millau. +pub type Hash = ::Out; + +/// Type of object that can produce hashes on Millau. +pub type Hasher = BlakeTwoAndKeccak256; + +/// The header type used by Millau. +pub type Header = sp_runtime::generic::Header; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = MultiSignature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; + +/// Public key of the chain account that may be used to verify signatures. +pub type AccountSigner = MultiSigner; + +/// Balance of an account. +pub type Balance = u64; + +/// Index of a transaction in the chain. +pub type Index = u32; + +/// Weight-to-Fee type used by Millau. +pub type WeightToFee = IdentityFee; + +/// Millau chain. +#[derive(RuntimeDebug)] +pub struct Millau; + +impl Chain for Millau { + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hasher = Hasher; + type Header = Header; + + type AccountId = AccountId; + type Balance = Balance; + type Index = Index; + type Signature = Signature; +} + +/// Millau Hasher (Blake2-256 ++ Keccak-256) implementation. +#[derive(PartialEq, Eq, Clone, Copy, RuntimeDebug, TypeInfo)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub struct BlakeTwoAndKeccak256; + +impl sp_core::Hasher for BlakeTwoAndKeccak256 { + type Out = MillauHash; + type StdHasher = hash256_std_hasher::Hash256StdHasher; + const LENGTH: usize = 64; + + fn hash(s: &[u8]) -> Self::Out { + let mut combined_hash = MillauHash::default(); + combined_hash.as_mut()[..32].copy_from_slice(&sp_io::hashing::blake2_256(s)); + combined_hash.as_mut()[32..].copy_from_slice(&sp_io::hashing::keccak_256(s)); + combined_hash + } +} + +impl sp_runtime::traits::Hash for BlakeTwoAndKeccak256 { + type Output = MillauHash; + + fn trie_root(input: Vec<(Vec, Vec)>) -> Self::Output { + Layout::::trie_root(input) + } + + fn ordered_trie_root(input: Vec>) -> Self::Output { + Layout::::ordered_trie_root(input) + } +} + +/// Convert a 256-bit hash into an AccountId. +pub struct AccountIdConverter; + +impl sp_runtime::traits::Convert for AccountIdConverter { + fn convert(hash: sp_core::H256) -> AccountId { + hash.to_fixed_bytes().into() + } +} + +/// We use this to get the account on Millau (target) which is derived from Rialto's (source) +/// account. We do this so we can fund the derived account on Millau at Genesis to it can pay +/// transaction fees. +/// +/// The reason we can use the same `AccountId` type for both chains is because they share the same +/// development seed phrase. +/// +/// Note that this should only be used for testing. +pub fn derive_account_from_rialto_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::RIALTO_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +frame_support::parameter_types! { + pub BlockLength: limits::BlockLength = + limits::BlockLength::max_with_normal_ratio(2 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() + // Allowance for Normal class + .for_class(DispatchClass::Normal, |weights| { + weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // Allowance for Operational class + .for_class(DispatchClass::Operational, |weights| { + weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); + // Extra reserved space for Operational class + weights.reserved = Some(MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // By default Mandatory class is not limited at all. + // This parameter is used to derive maximal size of a single extrinsic. + .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) + .build_or_panic(); +} + +/// Get the maximum weight (compute time) that a Normal extrinsic on the Millau chain can use. +pub fn max_extrinsic_weight() -> Weight { + BlockWeights::get() + .get(DispatchClass::Normal) + .max_extrinsic + .unwrap_or(Weight::MAX) +} + +/// Get the maximum length in bytes that a Normal extrinsic on the Millau chain requires. +pub fn max_extrinsic_size() -> u32 { + *BlockLength::get().max.get(DispatchClass::Normal) +} + +/// Name of the With-Rialto messages pallet instance in the Millau runtime. +pub const WITH_RIALTO_MESSAGES_PALLET_NAME: &str = "BridgeRialtoMessages"; +/// Name of the With-Rialto token swap pallet instance in the Millau runtime. +pub const WITH_RIALTO_TOKEN_SWAP_PALLET_NAME: &str = "BridgeRialtoTokenSwap"; + +/// Name of the `MillauFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_MILLAU_HEADER_METHOD: &str = "MillauFinalityApi_best_finalized"; + +/// Name of the `ToMillauOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToMillauOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToMillauOutboundLaneApi::message_details` runtime method. +pub const TO_MILLAU_MESSAGE_DETAILS_METHOD: &str = "ToMillauOutboundLaneApi_message_details"; +/// Name of the `ToMillauOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_MILLAU_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToMillauOutboundLaneApi_latest_received_nonce"; +/// Name of the `ToMillauOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_MILLAU_LATEST_GENERATED_NONCE_METHOD: &str = + "ToMillauOutboundLaneApi_latest_generated_nonce"; + +/// Name of the `FromMillauInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_MILLAU_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromMillauInboundLaneApi_latest_received_nonce"; +/// Name of the `FromMillauInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_MILLAU_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromMillauInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromMillauInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_MILLAU_UNREWARDED_RELAYERS_STATE: &str = + "FromMillauInboundLaneApi_unrewarded_relayers_state"; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Millau headers. + /// + /// This API is implemented by runtimes that are bridging with the Millau chain, not the + /// Millau runtime itself. + pub trait MillauFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Millau chain. + /// + /// This API is implemented by runtimes that are sending messages to Millau chain, not the + /// Millau runtime itself. + pub trait ToMillauOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Millau from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Millau chain. + /// + /// This API is implemented by runtimes that are receiving messages from Millau chain, not the + /// Millau runtime itself. + pub trait FromMillauInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} + +#[cfg(test)] +mod tests { + use super::*; + use sp_runtime::codec::Encode; + + #[test] + fn maximal_account_size_does_not_overflow_constant() { + assert!( + MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize >= AccountId::default().encode().len(), + "Actual maximal size of encoded AccountId ({}) overflows expected ({})", + AccountId::default().encode().len(), + MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + ); + } +} diff --git a/bridges/primitives/chain-millau/src/millau_hash.rs b/primitives/chain-millau/src/millau_hash.rs similarity index 95% rename from bridges/primitives/chain-millau/src/millau_hash.rs rename to primitives/chain-millau/src/millau_hash.rs index 219ceb68a824..11968b2f2826 100644 --- a/bridges/primitives/chain-millau/src/millau_hash.rs +++ b/primitives/chain-millau/src/millau_hash.rs @@ -14,8 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -use frame_support::traits::MaxEncodedLen; use parity_util_mem::MallocSizeOf; +use scale_info::TypeInfo; use sp_runtime::traits::CheckEqual; // `sp_core::H512` can't be used, because it doesn't implement `CheckEqual`, which is required @@ -23,7 +23,7 @@ use sp_runtime::traits::CheckEqual; fixed_hash::construct_fixed_hash! { /// Hash type used in Millau chain. - #[derive(MallocSizeOf, MaxEncodedLen)] + #[derive(MallocSizeOf, TypeInfo)] pub struct MillauHash(64); } diff --git a/primitives/chain-polkadot/Cargo.toml b/primitives/chain-polkadot/Cargo.toml new file mode 100644 index 000000000000..917c7f974783 --- /dev/null +++ b/primitives/chain-polkadot/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "bp-polkadot" +description = "Primitives of Polkadot runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +smallvec = "1.7" + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-polkadot-core = { path = "../polkadot-core", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-polkadot-core/std", + "bp-runtime/std", + "frame-support/std", + "sp-api/std", + "sp-std/std", + "sp-version/std", +] diff --git a/primitives/chain-polkadot/src/lib.rs b/primitives/chain-polkadot/src/lib.rs new file mode 100644 index 000000000000..26bad1ea8656 --- /dev/null +++ b/primitives/chain-polkadot/src/lib.rs @@ -0,0 +1,177 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_with_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use frame_support::weights::{ + WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, +}; +use sp_std::prelude::*; +use sp_version::RuntimeVersion; + +pub use bp_polkadot_core::*; + +/// Polkadot Chain +pub type Polkadot = PolkadotLike; + +// NOTE: This needs to be kept up to date with the Polkadot runtime found in the Polkadot repo. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: sp_version::create_runtime_str!("polkadot"), + impl_name: sp_version::create_runtime_str!("parity-polkadot"), + authoring_version: 0, + spec_version: 9100, + impl_version: 0, + apis: sp_version::create_apis_vec![[]], + transaction_version: 7, +}; + +// NOTE: This needs to be kept up to date with the Polkadot runtime found in the Polkadot repo. +pub struct WeightToFee; +impl WeightToFeePolynomial for WeightToFee { + type Balance = Balance; + fn polynomial() -> WeightToFeeCoefficients { + const CENTS: Balance = 10_000_000_000 / 100; + // in Polkadot, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: + let p = CENTS; + let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); + smallvec::smallvec![WeightToFeeCoefficient { + degree: 1, + negative: false, + coeff_frac: Perbill::from_rational(p % q, q), + coeff_integer: p / q, + }] + } +} + +// We use this to get the account on Polkadot (target) which is derived from Kusama's (source) +// account. +pub fn derive_account_from_kusama_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::KUSAMA_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +/// Per-byte fee for Polkadot transactions. +pub const TRANSACTION_BYTE_FEE: Balance = 10 * 10_000_000_000 / 100 / 1_000; + +/// Existential deposit on Polkadot. +pub const EXISTENTIAL_DEPOSIT: Balance = 10_000_000_000; + +/// The target length of a session (how often authorities change) on Polkadot measured in of number +/// of blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = 4 * time_units::HOURS; + +/// Name of the With-Kusama messages pallet instance in the Polkadot runtime. +pub const WITH_KUSAMA_MESSAGES_PALLET_NAME: &str = "BridgeKusamaMessages"; + +/// Name of the KSM->DOT conversion rate stored in the Polkadot runtime. +pub const KUSAMA_TO_POLKADOT_CONVERSION_RATE_PARAMETER_NAME: &str = + "KusamaToPolkadotConversionRate"; + +/// Name of the `PolkadotFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_POLKADOT_HEADER_METHOD: &str = "PolkadotFinalityApi_best_finalized"; +/// Name of the `PolkadotFinalityApi::is_known_header` runtime method. +pub const IS_KNOWN_POLKADOT_HEADER_METHOD: &str = "PolkadotFinalityApi_is_known_header"; + +/// Name of the `ToPolkadotOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_POLKADOT_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToPolkadotOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToPolkadotOutboundLaneApi::message_details` runtime method. +pub const TO_POLKADOT_MESSAGE_DETAILS_METHOD: &str = "ToPolkadotOutboundLaneApi_message_details"; +/// Name of the `ToPolkadotOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_POLKADOT_LATEST_GENERATED_NONCE_METHOD: &str = + "ToPolkadotOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToPolkadotOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_POLKADOT_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToPolkadotOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromPolkadotInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_POLKADOT_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromPolkadotInboundLaneApi_latest_received_nonce"; +/// Name of the `FromPolkadotInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_POLKADOT_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromPolkadotInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromPolkadotInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_POLKADOT_UNREWARDED_RELAYERS_STATE: &str = + "FromPolkadotInboundLaneApi_unrewarded_relayers_state"; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Polkadot headers. + /// + /// This API is implemented by runtimes that are bridging with the Polkadot chain, not the + /// Polkadot runtime itself. + pub trait PolkadotFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Polkadot chain. + /// + /// This API is implemented by runtimes that are sending messages to Polkadot chain, not the + /// Polkadot runtime itself. + pub trait ToPolkadotOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Polkadot from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Polkadot chain. + /// + /// This API is implemented by runtimes that are receiving messages from Polkadot chain, not the + /// Polkadot runtime itself. + pub trait FromPolkadotInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} diff --git a/primitives/chain-rialto-parachain/Cargo.toml b/primitives/chain-rialto-parachain/Cargo.toml new file mode 100644 index 000000000000..034188631b8c --- /dev/null +++ b/primitives/chain-rialto-parachain/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "bp-rialto-parachain" +description = "Primitives of Rialto parachain runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-runtime/std", + "frame-support/std", + "frame-system/std", + "sp-api/std", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/primitives/chain-rialto-parachain/src/lib.rs b/primitives/chain-rialto-parachain/src/lib.rs new file mode 100644 index 000000000000..826f6d39bd7f --- /dev/null +++ b/primitives/chain-rialto-parachain/src/lib.rs @@ -0,0 +1,128 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_With_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_runtime::Chain; +use frame_support::{ + weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, Weight}, + RuntimeDebug, +}; +use frame_system::limits; +use sp_core::Hasher as HasherT; +use sp_runtime::{ + traits::{BlakeTwo256, IdentifyAccount, Verify}, + MultiSignature, MultiSigner, Perbill, +}; + +/// Maximal weight of single Rialto parachain block. +/// +/// This represents two seconds of compute assuming a target block time of six seconds. +pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; + +/// Represents the average portion of a block's weight that will be used by an +/// `on_initialize()` runtime call. +pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); + +/// Represents the portion of a block that will be used by Normal extrinsics. +pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); + +/// Block number type used in Rialto. +pub type BlockNumber = u32; + +/// Hash type used in Rialto. +pub type Hash = ::Out; + +/// The type of object that can produce hashes on Rialto. +pub type Hasher = BlakeTwo256; + +/// The header type used by Rialto. +pub type Header = sp_runtime::generic::Header; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = MultiSignature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; + +/// Public key of the chain account that may be used to verify signatures. +pub type AccountSigner = MultiSigner; + +/// Balance of an account. +pub type Balance = u128; + +/// An instant or duration in time. +pub type Moment = u64; + +/// Index of a transaction in the parachain. +pub type Index = u32; + +/// Weight-to-Fee type used by Rialto parachain. +pub type WeightToFee = IdentityFee; + +/// Rialto parachain. +#[derive(RuntimeDebug)] +pub struct RialtoParachain; + +impl Chain for RialtoParachain { + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hasher = Hasher; + type Header = Header; + + type AccountId = AccountId; + type Balance = Balance; + type Index = Index; + type Signature = Signature; +} + +frame_support::parameter_types! { + pub BlockLength: limits::BlockLength = + limits::BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() + // Allowance for Normal class + .for_class(DispatchClass::Normal, |weights| { + weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // Allowance for Operational class + .for_class(DispatchClass::Operational, |weights| { + weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); + // Extra reserved space for Operational class + weights.reserved = Some(MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // By default Mandatory class is not limited at all. + // This parameter is used to derive maximal size of a single extrinsic. + .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) + .build_or_panic(); +} + +/// Get the maximum weight (compute time) that a Normal extrinsic on the Millau chain can use. +pub fn max_extrinsic_weight() -> Weight { + BlockWeights::get() + .get(DispatchClass::Normal) + .max_extrinsic + .unwrap_or(Weight::MAX) +} + +/// Get the maximum length in bytes that a Normal extrinsic on the Millau chain requires. +pub fn max_extrinsic_size() -> u32 { + *BlockLength::get().max.get(DispatchClass::Normal) +} diff --git a/primitives/chain-rialto/Cargo.toml b/primitives/chain-rialto/Cargo.toml new file mode 100644 index 000000000000..d16ac59484fb --- /dev/null +++ b/primitives/chain-rialto/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "bp-rialto" +description = "Primitives of Rialto runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-runtime/std", + "frame-support/std", + "frame-system/std", + "sp-api/std", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/primitives/chain-rialto/src/lib.rs b/primitives/chain-rialto/src/lib.rs new file mode 100644 index 000000000000..6c4e48301e3b --- /dev/null +++ b/primitives/chain-rialto/src/lib.rs @@ -0,0 +1,340 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_With_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use bp_runtime::Chain; +use frame_support::{ + weights::{constants::WEIGHT_PER_SECOND, DispatchClass, IdentityFee, Weight}, + Parameter, RuntimeDebug, +}; +use frame_system::limits; +use sp_core::Hasher as HasherT; +use sp_runtime::{ + traits::{BlakeTwo256, Convert, IdentifyAccount, Verify}, + MultiSignature, MultiSigner, Perbill, +}; +use sp_std::prelude::*; + +/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at +/// Rialto chain. This mostly depends on number of entries (and their density) in the storage trie. +/// Some reserve is reserved to account future chain growth. +pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; + +/// Number of bytes, included in the signed Rialto transaction apart from the encoded call itself. +/// +/// Can be computed by subtracting encoded call size from raw transaction size. +pub const TX_EXTRA_BYTES: u32 = 104; + +/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. +pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; + +/// Maximal weight of single Rialto block. +/// +/// This represents two seconds of compute assuming a target block time of six seconds. +pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; + +/// Represents the average portion of a block's weight that will be used by an +/// `on_initialize()` runtime call. +pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); + +/// Represents the portion of a block that will be used by Normal extrinsics. +pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); + +/// Maximal number of unrewarded relayer entries at inbound lane. +pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 128; + +/// Maximal number of unconfirmed messages at inbound lane. +pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 128; + +/// Weight of single regular message delivery transaction on Rialto chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_proof_weight()` call +/// for the case when single message of `pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH` +/// bytes is delivered. The message must have dispatch weight set to zero. The result then must be +/// rounded up to account possible future runtime upgrades. +pub const DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT: Weight = 1_500_000_000; + +/// Increase of delivery transaction weight on Rialto chain with every additional message byte. +/// +/// This value is a result of +/// `pallet_bridge_messages::WeightInfoExt::storage_proof_size_overhead(1)` call. The result then +/// must be rounded up to account possible future runtime upgrades. +pub const ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT: Weight = 25_000; + +/// Maximal weight of single message delivery confirmation transaction on Rialto chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_delivery_proof` +/// weight formula computation for the case when single message is confirmed. The result then must +/// be rounded up to account possible future runtime upgrades. +pub const MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT: Weight = 2_000_000_000; + +/// Weight of pay-dispatch-fee operation for inbound messages at Rialto chain. +/// +/// This value corresponds to the result of +/// `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` call for your +/// chain. Don't put too much reserve there, because it is used to **decrease** +/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery +/// transactions cheaper. +pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; + +/// The target length of a session (how often authorities change) on Rialto measured in of number of +/// blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = 4; + +/// Re-export `time_units` to make usage easier. +pub use time_units::*; + +/// Human readable time units defined in terms of number of blocks. +pub mod time_units { + use super::{BlockNumber, SESSION_LENGTH}; + + pub const MILLISECS_PER_BLOCK: u64 = 6000; + pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + + pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); + pub const HOURS: BlockNumber = MINUTES * 60; + pub const DAYS: BlockNumber = HOURS * 24; + + pub const EPOCH_DURATION_IN_SLOTS: BlockNumber = SESSION_LENGTH; + + // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. + pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); +} + +/// Block number type used in Rialto. +pub type BlockNumber = u32; + +/// Hash type used in Rialto. +pub type Hash = ::Out; + +/// The type of object that can produce hashes on Rialto. +pub type Hasher = BlakeTwo256; + +/// The header type used by Rialto. +pub type Header = sp_runtime::generic::Header; + +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = MultiSignature; + +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; + +/// Public key of the chain account that may be used to verify signatures. +pub type AccountSigner = MultiSigner; + +/// Balance of an account. +pub type Balance = u128; + +/// An instant or duration in time. +pub type Moment = u64; + +/// Index of a transaction in the chain. +pub type Index = u32; + +/// Weight-to-Fee type used by Rialto. +pub type WeightToFee = IdentityFee; + +/// Rialto chain. +#[derive(RuntimeDebug)] +pub struct Rialto; + +impl Chain for Rialto { + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hasher = Hasher; + type Header = Header; + + type AccountId = AccountId; + type Balance = Balance; + type Index = Index; + type Signature = Signature; +} + +/// Convert a 256-bit hash into an AccountId. +pub struct AccountIdConverter; + +impl Convert for AccountIdConverter { + fn convert(hash: sp_core::H256) -> AccountId { + hash.to_fixed_bytes().into() + } +} + +// We use this to get the account on Rialto (target) which is derived from Millau's (source) +// account. We do this so we can fund the derived account on Rialto at Genesis to it can pay +// transaction fees. +// +// The reason we can use the same `AccountId` type for both chains is because they share the same +// development seed phrase. +// +// Note that this should only be used for testing. +pub fn derive_account_from_millau_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::MILLAU_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +frame_support::parameter_types! { + pub BlockLength: limits::BlockLength = + limits::BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() + // Allowance for Normal class + .for_class(DispatchClass::Normal, |weights| { + weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // Allowance for Operational class + .for_class(DispatchClass::Operational, |weights| { + weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); + // Extra reserved space for Operational class + weights.reserved = Some(MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + // By default Mandatory class is not limited at all. + // This parameter is used to derive maximal size of a single extrinsic. + .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) + .build_or_panic(); +} + +/// Get the maximum weight (compute time) that a Normal extrinsic on the Millau chain can use. +pub fn max_extrinsic_weight() -> Weight { + BlockWeights::get() + .get(DispatchClass::Normal) + .max_extrinsic + .unwrap_or(Weight::MAX) +} + +/// Get the maximum length in bytes that a Normal extrinsic on the Millau chain requires. +pub fn max_extrinsic_size() -> u32 { + *BlockLength::get().max.get(DispatchClass::Normal) +} + +/// Name of the With-Millau messages pallet instance in the Rialto runtime. +pub const WITH_MILLAU_MESSAGES_PALLET_NAME: &str = "BridgeMillauMessages"; + +/// Name of the parachain registrar pallet in the Rialto runtime. +pub const PARAS_REGISTRAR_PALLET_NAME: &str = "Registrar"; + +/// Name of the parachains pallet in the Rialto runtime. +pub const PARAS_PALLET_NAME: &str = "Paras"; + +/// Name of the `RialtoFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_RIALTO_HEADER_METHOD: &str = "RialtoFinalityApi_best_finalized"; + +/// Name of the `ToRialtoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_RIALTO_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToRialtoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToRialtoOutboundLaneApi::message_details` runtime method. +pub const TO_RIALTO_MESSAGE_DETAILS_METHOD: &str = "ToRialtoOutboundLaneApi_message_details"; +/// Name of the `ToRialtoOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_RIALTO_LATEST_GENERATED_NONCE_METHOD: &str = + "ToRialtoOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToRialtoOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_RIALTO_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToRialtoOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromRialtoInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_RIALTO_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromRialtoInboundLaneApi_latest_received_nonce"; +/// Name of the `FromRialtoInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_RIALTO_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromRialtoInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromRialtoInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_RIALTO_UNREWARDED_RELAYERS_STATE: &str = + "FromRialtoInboundLaneApi_unrewarded_relayers_state"; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Rialto headers. + /// + /// This API is implemented by runtimes that are bridging with the Rialto chain, not the + /// Millau runtime itself. + pub trait RialtoFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Rialto chain. + /// + /// This API is implemented by runtimes that are sending messages to Rialto chain, not the + /// Rialto runtime itself. + pub trait ToRialtoOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Rialto from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Rialto chain. + /// + /// This API is implemented by runtimes that are receiving messages from Rialto chain, not the + /// Rialto runtime itself. + pub trait FromRialtoInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} + +#[cfg(test)] +mod tests { + use super::*; + use sp_runtime::codec::Encode; + + #[test] + fn maximal_account_size_does_not_overflow_constant() { + assert!( + MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize >= AccountId::default().encode().len(), + "Actual maximal size of encoded AccountId ({}) overflows expected ({})", + AccountId::default().encode().len(), + MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + ); + } +} diff --git a/primitives/chain-rococo/Cargo.toml b/primitives/chain-rococo/Cargo.toml new file mode 100644 index 000000000000..6e1189b05f36 --- /dev/null +++ b/primitives/chain-rococo/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "bp-rococo" +description = "Primitives of Rococo runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] } +smallvec = "1.7" + +# Bridge Dependencies +bp-messages = { path = "../messages", default-features = false } +bp-polkadot-core = { path = "../polkadot-core", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-polkadot-core/std", + "bp-runtime/std", + "frame-support/std", + "parity-scale-codec/std", + "sp-api/std", + "sp-runtime/std", + "sp-std/std", + "sp-version/std", +] diff --git a/primitives/chain-rococo/src/lib.rs b/primitives/chain-rococo/src/lib.rs new file mode 100644 index 000000000000..b3bbc91976da --- /dev/null +++ b/primitives/chain-rococo/src/lib.rs @@ -0,0 +1,175 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_with_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use frame_support::weights::{ + Weight, WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, +}; +use sp_std::prelude::*; +use sp_version::RuntimeVersion; + +pub use bp_polkadot_core::*; + +/// Rococo Chain +pub type Rococo = PolkadotLike; + +/// The target length of a session (how often authorities change) on Westend measured in of number +/// of blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = 10 * time_units::MINUTES; + +// NOTE: This needs to be kept up to date with the Rococo runtime found in the Polkadot repo. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: sp_version::create_runtime_str!("rococo"), + impl_name: sp_version::create_runtime_str!("parity-rococo-v1.6"), + authoring_version: 0, + spec_version: 9100, + impl_version: 0, + apis: sp_version::create_apis_vec![[]], + transaction_version: 0, +}; + +// NOTE: This needs to be kept up to date with the Rococo runtime found in the Polkadot repo. +pub struct WeightToFee; +impl WeightToFeePolynomial for WeightToFee { + type Balance = Balance; + fn polynomial() -> WeightToFeeCoefficients { + const CENTS: Balance = 1_000_000_000_000 / 100; + let p = CENTS; + let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); + smallvec::smallvec![WeightToFeeCoefficient { + degree: 1, + negative: false, + coeff_frac: Perbill::from_rational(p % q, q), + coeff_integer: p / q, + }] + } +} + +// We use this to get the account on Rococo (target) which is derived from Wococo's (source) +// account. +pub fn derive_account_from_wococo_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::WOCOCO_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +/// Name of the With-Wococo messages pallet instance in the Rococo runtime. +pub const WITH_WOCOCO_MESSAGES_PALLET_NAME: &str = "BridgeWococoMessages"; + +/// Name of the `RococoFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_ROCOCO_HEADER_METHOD: &str = "RococoFinalityApi_best_finalized"; +/// Name of the `RococoFinalityApi::is_known_header` runtime method. +pub const IS_KNOWN_ROCOCO_HEADER_METHOD: &str = "RococoFinalityApi_is_known_header"; + +/// Name of the `ToRococoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_ROCOCO_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToRococoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToRococoOutboundLaneApi::message_details` runtime method. +pub const TO_ROCOCO_MESSAGE_DETAILS_METHOD: &str = "ToRococoOutboundLaneApi_message_details"; +/// Name of the `ToRococoOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_ROCOCO_LATEST_GENERATED_NONCE_METHOD: &str = + "ToRococoOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToRococoOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_ROCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToRococoOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromRococoInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_ROCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromRococoInboundLaneApi_latest_received_nonce"; +/// Name of the `FromRococoInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_ROCOCO_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromRococoInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromRococoInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_ROCOCO_UNREWARDED_RELAYERS_STATE: &str = + "FromRococoInboundLaneApi_unrewarded_relayers_state"; + +/// Weight of pay-dispatch-fee operation for inbound messages at Rococo chain. +/// +/// This value corresponds to the result of +/// `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` call for your +/// chain. Don't put too much reserve there, because it is used to **decrease** +/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery +/// transactions cheaper. +pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Rococo headers. + /// + /// This API is implemented by runtimes that are bridging with the Rococo chain, not the + /// Rococo runtime itself. + pub trait RococoFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Rococo chain. + /// + /// This API is implemented by runtimes that are sending messages to Rococo chain, not the + /// Rococo runtime itself. + pub trait ToRococoOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Rococo from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Rococo chain. + /// + /// This API is implemented by runtimes that are receiving messages from Rococo chain, not the + /// Rococo runtime itself. + pub trait FromRococoInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} diff --git a/primitives/chain-westend/Cargo.toml b/primitives/chain-westend/Cargo.toml new file mode 100644 index 000000000000..4fd1652744ed --- /dev/null +++ b/primitives/chain-westend/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "bp-westend" +description = "Primitives of Westend runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +smallvec = "1.7" + +# Bridge Dependencies + +bp-header-chain = { path = "../header-chain", default-features = false } +bp-messages = { path = "../messages", default-features = false } +bp-polkadot-core = { path = "../polkadot-core", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-header-chain/std", + "bp-messages/std", + "bp-polkadot-core/std", + "bp-runtime/std", + "frame-support/std", + "parity-scale-codec/std", + "scale-info/std", + "sp-api/std", + "sp-runtime/std", + "sp-std/std", + "sp-version/std", +] diff --git a/primitives/chain-westend/src/lib.rs b/primitives/chain-westend/src/lib.rs new file mode 100644 index 000000000000..8beb897f59a1 --- /dev/null +++ b/primitives/chain-westend/src/lib.rs @@ -0,0 +1,184 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_with_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use frame_support::weights::{ + WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, +}; +use scale_info::TypeInfo; +use sp_std::prelude::*; +use sp_version::RuntimeVersion; + +pub use bp_polkadot_core::*; + +/// Westend Chain +pub type Westend = PolkadotLike; + +// NOTE: This needs to be kept up to date with the Westend runtime found in the Polkadot repo. +pub struct WeightToFee; +impl WeightToFeePolynomial for WeightToFee { + type Balance = Balance; + fn polynomial() -> WeightToFeeCoefficients { + const CENTS: Balance = 1_000_000_000_000 / 1_000; + // in Westend, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: + let p = CENTS; + let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); + smallvec::smallvec![WeightToFeeCoefficient { + degree: 1, + negative: false, + coeff_frac: Perbill::from_rational(p % q, q), + coeff_integer: p / q, + }] + } +} + +// NOTE: This needs to be kept up to date with the Westend runtime found in the Polkadot repo. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: sp_version::create_runtime_str!("westend"), + impl_name: sp_version::create_runtime_str!("parity-westend"), + authoring_version: 2, + spec_version: 51, + impl_version: 0, + apis: sp_version::create_apis_vec![[]], + transaction_version: 5, +}; + +/// Westend Runtime `Call` enum. +/// +/// We are not currently submitting any Westend transactions => it is empty. +#[derive( + parity_scale_codec::Encode, parity_scale_codec::Decode, Debug, PartialEq, Eq, Clone, TypeInfo, +)] +pub enum Call {} + +impl sp_runtime::traits::Dispatchable for Call { + type Origin = (); + type Config = (); + type Info = (); + type PostInfo = (); + + fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { + unimplemented!("The Call is not expected to be dispatched.") + } +} + +// We use this to get the account on Westend (target) which is derived from Rococo's (source) +// account. +pub fn derive_account_from_rococo_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::ROCOCO_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +/// Name of the `WestendFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_WESTEND_HEADER_METHOD: &str = "WestendFinalityApi_best_finalized"; +/// Name of the `WestendFinalityApi::is_known_header` runtime method. +pub const IS_KNOWN_WESTEND_HEADER_METHOD: &str = "WestendFinalityApi_is_known_header"; + +/// Name of the `ToWestendOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_WESTEND_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToWestendOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToWestendOutboundLaneApi::message_details` runtime method. +pub const TO_WESTEND_MESSAGE_DETAILS_METHOD: &str = "ToWestendOutboundLaneApi_message_details"; +/// Name of the `ToWestendOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_WESTEND_LATEST_GENERATED_NONCE_METHOD: &str = + "ToWestendOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToWestendOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_WESTEND_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToWestendOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromWestendInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_WESTEND_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromWestendInboundLaneApi_latest_received_nonce"; +/// Name of the `FromWestendInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_WESTEND_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromWestendInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromWestendInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_WESTEND_UNREWARDED_RELAYERS_STATE: &str = + "FromWestendInboundLaneApi_unrewarded_relayers_state"; + +/// The target length of a session (how often authorities change) on Westend measured in of number +/// of blocks. +/// +/// Note that since this is a target sessions may change before/after this time depending on network +/// conditions. +pub const SESSION_LENGTH: BlockNumber = 10 * time_units::MINUTES; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Westend headers. + /// + /// This API is implemented by runtimes that are bridging with the Westend chain, not the + /// Westend runtime itself. + pub trait WestendFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Westend chain. + /// + /// This API is implemented by runtimes that are sending messages to Westend chain, not the + /// Westend runtime itself. + pub trait ToWestendOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Westend from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Westend chain. + /// + /// This API is implemented by runtimes that are receiving messages from Westend chain, not the + /// Westend runtime itself. + pub trait FromWestendInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} diff --git a/primitives/chain-wococo/Cargo.toml b/primitives/chain-wococo/Cargo.toml new file mode 100644 index 000000000000..d99783695ad3 --- /dev/null +++ b/primitives/chain-wococo/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "bp-wococo" +description = "Primitives of Wococo runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] } + +# Bridge Dependencies +bp-messages = { path = "../messages", default-features = false } +bp-polkadot-core = { path = "../polkadot-core", default-features = false } +bp-rococo = { path = "../chain-rococo", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-polkadot-core/std", + "bp-runtime/std", + "bp-rococo/std", + "parity-scale-codec/std", + "sp-api/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/primitives/chain-wococo/src/lib.rs b/primitives/chain-wococo/src/lib.rs new file mode 100644 index 000000000000..fe2ce3a309a6 --- /dev/null +++ b/primitives/chain-wococo/src/lib.rs @@ -0,0 +1,129 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Runtime-generated DecodeLimit::decode_all_with_depth_limit +#![allow(clippy::unnecessary_mut_passed)] + +use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState}; +use sp_std::prelude::*; + +pub use bp_polkadot_core::*; +// Rococo runtime = Wococo runtime +pub use bp_rococo::{WeightToFee, PAY_INBOUND_DISPATCH_FEE_WEIGHT, SESSION_LENGTH, VERSION}; + +/// Wococo Chain +pub type Wococo = PolkadotLike; + +// We use this to get the account on Wococo (target) which is derived from Rococo's (source) +// account. +pub fn derive_account_from_rococo_id(id: bp_runtime::SourceAccount) -> AccountId { + let encoded_id = bp_runtime::derive_account_id(bp_runtime::ROCOCO_CHAIN_ID, id); + AccountIdConverter::convert(encoded_id) +} + +/// Name of the With-Rococo messages pallet instance in the Wococo runtime. +pub const WITH_ROCOCO_MESSAGES_PALLET_NAME: &str = "BridgeRococoMessages"; + +/// Name of the `WococoFinalityApi::best_finalized` runtime method. +pub const BEST_FINALIZED_WOCOCO_HEADER_METHOD: &str = "WococoFinalityApi_best_finalized"; +/// Name of the `WococoFinalityApi::is_known_header` runtime method. +pub const IS_KNOWN_WOCOCO_HEADER_METHOD: &str = "WococoFinalityApi_is_known_header"; + +/// Name of the `ToWococoOutboundLaneApi::estimate_message_delivery_and_dispatch_fee` runtime +/// method. +pub const TO_WOCOCO_ESTIMATE_MESSAGE_FEE_METHOD: &str = + "ToWococoOutboundLaneApi_estimate_message_delivery_and_dispatch_fee"; +/// Name of the `ToWococoOutboundLaneApi::message_details` runtime method. +pub const TO_WOCOCO_MESSAGE_DETAILS_METHOD: &str = "ToWococoOutboundLaneApi_message_details"; +/// Name of the `ToWococoOutboundLaneApi::latest_generated_nonce` runtime method. +pub const TO_WOCOCO_LATEST_GENERATED_NONCE_METHOD: &str = + "ToWococoOutboundLaneApi_latest_generated_nonce"; +/// Name of the `ToWococoOutboundLaneApi::latest_received_nonce` runtime method. +pub const TO_WOCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = + "ToWococoOutboundLaneApi_latest_received_nonce"; + +/// Name of the `FromWococoInboundLaneApi::latest_received_nonce` runtime method. +pub const FROM_WOCOCO_LATEST_RECEIVED_NONCE_METHOD: &str = + "FromWococoInboundLaneApi_latest_received_nonce"; +/// Name of the `FromWococoInboundLaneApi::latest_onfirmed_nonce` runtime method. +pub const FROM_WOCOCO_LATEST_CONFIRMED_NONCE_METHOD: &str = + "FromWococoInboundLaneApi_latest_confirmed_nonce"; +/// Name of the `FromWococoInboundLaneApi::unrewarded_relayers_state` runtime method. +pub const FROM_WOCOCO_UNREWARDED_RELAYERS_STATE: &str = + "FromWococoInboundLaneApi_unrewarded_relayers_state"; + +sp_api::decl_runtime_apis! { + /// API for querying information about the finalized Wococo headers. + /// + /// This API is implemented by runtimes that are bridging with the Wococo chain, not the + /// Wococo runtime itself. + pub trait WococoFinalityApi { + /// Returns number and hash of the best finalized header known to the bridge module. + fn best_finalized() -> (BlockNumber, Hash); + /// Returns true if the header is known to the runtime. + fn is_known_header(hash: Hash) -> bool; + } + + /// Outbound message lane API for messages that are sent to Wococo chain. + /// + /// This API is implemented by runtimes that are sending messages to Wococo chain, not the + /// Wococo runtime itself. + pub trait ToWococoOutboundLaneApi { + /// Estimate message delivery and dispatch fee that needs to be paid by the sender on + /// this chain. + /// + /// Returns `None` if message is too expensive to be sent to Wococo from this chain. + /// + /// Please keep in mind that this method returns the lowest message fee required for message + /// to be accepted to the lane. It may be good idea to pay a bit over this price to account + /// future exchange rate changes and guarantee that relayer would deliver your message + /// to the target chain. + fn estimate_message_delivery_and_dispatch_fee( + lane_id: LaneId, + payload: OutboundPayload, + ) -> Option; + /// Returns dispatch weight, encoded payload size and delivery+dispatch fee of all + /// messages in given inclusive range. + /// + /// If some (or all) messages are missing from the storage, they'll also will + /// be missing from the resulting vector. The vector is ordered by the nonce. + fn message_details( + lane: LaneId, + begin: MessageNonce, + end: MessageNonce, + ) -> Vec>; + /// Returns nonce of the latest message, received by bridged chain. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Returns nonce of the latest message, generated by given lane. + fn latest_generated_nonce(lane: LaneId) -> MessageNonce; + } + + /// Inbound message lane API for messages sent by Wococo chain. + /// + /// This API is implemented by runtimes that are receiving messages from Wococo chain, not the + /// Wococo runtime itself. + pub trait FromWococoInboundLaneApi { + /// Returns nonce of the latest message, received by given lane. + fn latest_received_nonce(lane: LaneId) -> MessageNonce; + /// Nonce of the latest message that has been confirmed to the bridged chain. + fn latest_confirmed_nonce(lane: LaneId) -> MessageNonce; + /// State of the unrewarded relayers set at given lane. + fn unrewarded_relayers_state(lane: LaneId) -> UnrewardedRelayersState; + } +} diff --git a/primitives/header-chain/Cargo.toml b/primitives/header-chain/Cargo.toml new file mode 100644 index 000000000000..b75a41a4b2e5 --- /dev/null +++ b/primitives/header-chain/Cargo.toml @@ -0,0 +1,39 @@ +[package] +name = "bp-header-chain" +description = "A common interface for describing what a bridge pallet should be able to do." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +finality-grandpa = { version = "0.14.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0", optional = true } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +assert_matches = "1.5" +bp-test-utils = { path = "../test-utils" } + +[features] +default = ["std"] +std = [ + "codec/std", + "finality-grandpa/std", + "serde/std", + "frame-support/std", + "scale-info/std", + "sp-core/std", + "sp-finality-grandpa/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/bridges/primitives/header-chain/src/justification.rs b/primitives/header-chain/src/justification.rs similarity index 84% rename from bridges/primitives/header-chain/src/justification.rs rename to primitives/header-chain/src/justification.rs index 625d7762597a..9f8e9662ea0f 100644 --- a/bridges/primitives/header-chain/src/justification.rs +++ b/primitives/header-chain/src/justification.rs @@ -22,22 +22,26 @@ use codec::{Decode, Encode}; use finality_grandpa::voter_set::VoterSet; use frame_support::RuntimeDebug; +use scale_info::TypeInfo; use sp_finality_grandpa::{AuthorityId, AuthoritySignature, SetId}; use sp_runtime::traits::Header as HeaderT; -use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet}; -use sp_std::prelude::*; +use sp_std::{ + collections::{btree_map::BTreeMap, btree_set::BTreeSet}, + prelude::*, +}; /// A GRANDPA Justification is a proof that a given header was finalized /// at a certain height and with a certain set of authorities. /// /// This particular proof is used to prove that headers on a bridged chain /// (so not our chain) have been finalized correctly. -#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq, TypeInfo)] pub struct GrandpaJustification { /// The round (voting period) this justification is valid for. pub round: u64, /// The set of votes for the chain which is to be finalized. - pub commit: finality_grandpa::Commit, + pub commit: + finality_grandpa::Commit, /// A proof that the chain of blocks in the commit are related to each other. pub votes_ancestries: Vec
, } @@ -57,7 +61,8 @@ pub enum Error { InvalidJustificationTarget, /// The authority has provided an invalid signature. InvalidAuthoritySignature, - /// The justification contains precommit for header that is not a descendant of the commit header. + /// The justification contains precommit for header that is not a descendant of the commit + /// header. PrecommitIsNotCommitDescendant, /// The cumulative weight of all votes in the justification is not enough to justify commit /// header finalization. @@ -87,7 +92,7 @@ where { // ensure that it is justification for the expected header if (justification.commit.target_hash, justification.commit.target_number) != finalized_target { - return Err(Error::InvalidJustificationTarget); + return Err(Error::InvalidJustificationTarget) } let mut chain = AncestryChain::new(&justification.votes_ancestries); @@ -99,30 +104,32 @@ where let authority_info = match authorities_set.get(&signed.id) { Some(authority_info) => authority_info, None => { - // just ignore precommit from unknown authority as `finality_grandpa::import_precommit` does - continue; - } + // just ignore precommit from unknown authority as + // `finality_grandpa::import_precommit` does + continue + }, }; // check if authority has already voted in the same round. // // there's a lot of code in `validate_commit` and `import_precommit` functions inside - // `finality-grandpa` crate (mostly related to reporing equivocations). But the only thing that we - // care about is that only first vote from the authority is accepted + // `finality-grandpa` crate (mostly related to reporing equivocations). But the only thing + // that we care about is that only first vote from the authority is accepted if !votes.insert(signed.id.clone()) { - continue; + continue } // everything below this line can't just `continue`, because state is already altered // all precommits must be for block higher than the target if signed.precommit.target_number < justification.commit.target_number { - return Err(Error::PrecommitIsNotCommitDescendant); + return Err(Error::PrecommitIsNotCommitDescendant) } // all precommits must be for target block descendents - chain = chain.ensure_descendant(&justification.commit.target_hash, &signed.precommit.target_hash)?; - // since we know now that the precommit target is the descendant of the justification target, - // we may increase 'weight' of the justification target + chain = chain + .ensure_descendant(&justification.commit.target_hash, &signed.precommit.target_hash)?; + // since we know now that the precommit target is the descendant of the justification + // target, we may increase 'weight' of the justification target // // there's a lot of code in the `VoteGraph::insert` method inside `finality-grandpa` crate, // but in the end it is only used to find GHOST, which we don't care about. The only thing @@ -144,13 +151,13 @@ where authorities_set_id, &mut signature_buffer, ) { - return Err(Error::InvalidAuthoritySignature); + return Err(Error::InvalidAuthoritySignature) } } // check that there are no extra headers in the justification if !chain.unvisited.is_empty() { - return Err(Error::ExtraHeadersInVotesAncestries); + return Err(Error::ExtraHeadersInVotesAncestries) } // check that the cumulative weight of validators voted for the justification target (or one @@ -168,7 +175,7 @@ where pub struct AncestryChain { /// Header hash => parent header hash mapping. pub parents: BTreeMap, - /// Hashes of headers that weren't visited by `is_ancestor` method. + /// Hashes of headers that were not visited by `is_ancestor` method. pub unvisited: BTreeSet, } @@ -186,7 +193,8 @@ impl AncestryChain
{ AncestryChain { parents, unvisited } } - /// Returns `Err(_)` if `precommit_target` is a descendant of the `commit_target` block and `Ok(_)` otherwise. + /// Returns `Err(_)` if `precommit_target` is a descendant of the `commit_target` block and + /// `Ok(_)` otherwise. pub fn ensure_descendant( mut self, commit_target: &Header::Hash, @@ -195,22 +203,22 @@ impl AncestryChain
{ let mut current_hash = *precommit_target; loop { if current_hash == *commit_target { - break; + break } let is_visited_before = !self.unvisited.remove(¤t_hash); current_hash = match self.parents.get(¤t_hash) { Some(parent_hash) => { if is_visited_before { - // `Some(parent_hash)` means that the `current_hash` is in the `parents` container - // `is_visited_before` means that it has been visited before in some of previous calls - // => since we assume that previous call has finished with `true`, this also will - // be finished with `true` - return Ok(self); + // `Some(parent_hash)` means that the `current_hash` is in the `parents` + // container `is_visited_before` means that it has been visited before in + // some of previous calls => since we assume that previous call has finished + // with `true`, this also will be finished with `true` + return Ok(self) } *parent_hash - } + }, None => return Err(Error::PrecommitIsNotCommitDescendant), }; } diff --git a/primitives/header-chain/src/lib.rs b/primitives/header-chain/src/lib.rs new file mode 100644 index 000000000000..5feb30aec3ee --- /dev/null +++ b/primitives/header-chain/src/lib.rs @@ -0,0 +1,133 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Defines traits which represent a common interface for Substrate pallets which want to +//! incorporate bridge functionality. + +#![cfg_attr(not(feature = "std"), no_std)] + +use codec::{Codec, Decode, Encode, EncodeLike}; +use core::{clone::Clone, cmp::Eq, default::Default, fmt::Debug}; +use scale_info::TypeInfo; +#[cfg(feature = "std")] +use serde::{Deserialize, Serialize}; +use sp_finality_grandpa::{AuthorityList, ConsensusLog, SetId, GRANDPA_ENGINE_ID}; +use sp_runtime::{generic::OpaqueDigestItemId, traits::Header as HeaderT, RuntimeDebug}; +use sp_std::boxed::Box; + +pub mod justification; + +/// A type that can be used as a parameter in a dispatchable function. +/// +/// When using `decl_module` all arguments for call functions must implement this trait. +pub trait Parameter: Codec + EncodeLike + Clone + Eq + Debug + TypeInfo {} +impl Parameter for T where T: Codec + EncodeLike + Clone + Eq + Debug + TypeInfo {} + +/// A GRANDPA Authority List and ID. +#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Clone, TypeInfo)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub struct AuthoritySet { + /// List of GRANDPA authorities for the current round. + pub authorities: AuthorityList, + /// Monotonic identifier of the current GRANDPA authority set. + pub set_id: SetId, +} + +impl AuthoritySet { + /// Create a new GRANDPA Authority Set. + pub fn new(authorities: AuthorityList, set_id: SetId) -> Self { + Self { authorities, set_id } + } +} + +/// Data required for initializing the bridge pallet. +/// +/// The bridge needs to know where to start its sync from, and this provides that initial context. +#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, Clone, TypeInfo)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub struct InitializationData { + /// The header from which we should start syncing. + pub header: Box, + /// The initial authorities of the pallet. + pub authority_list: AuthorityList, + /// The ID of the initial authority set. + pub set_id: SetId, + /// Should the pallet block transaction immediately after initialization. + pub is_halted: bool, +} + +/// base trait for verifying transaction inclusion proofs. +pub trait InclusionProofVerifier { + /// Transaction type. + type Transaction: Parameter; + /// Transaction inclusion proof type. + type TransactionInclusionProof: Parameter; + + /// Verify that transaction is a part of given block. + /// + /// Returns Some(transaction) if proof is valid and None otherwise. + fn verify_transaction_inclusion_proof( + proof: &Self::TransactionInclusionProof, + ) -> Option; +} + +/// A trait for pallets which want to keep track of finalized headers from a bridged chain. +pub trait HeaderChain { + /// Get the best finalized header known to the header chain. + fn best_finalized() -> H; + + /// Get the best authority set known to the header chain. + fn authority_set() -> AuthoritySet; + + /// Write a header finalized by GRANDPA to the underlying pallet storage. + fn append_header(header: H) -> Result<(), E>; +} + +impl HeaderChain for () { + fn best_finalized() -> H { + H::default() + } + + fn authority_set() -> AuthoritySet { + AuthoritySet::default() + } + + fn append_header(_header: H) -> Result<(), E> { + Ok(()) + } +} + +/// Abstract finality proof that is justifying block finality. +pub trait FinalityProof: Clone + Send + Sync + Debug { + /// Return number of header that this proof is generated for. + fn target_header_number(&self) -> Number; +} + +/// Find header digest that schedules next GRANDPA authorities set. +pub fn find_grandpa_authorities_scheduled_change( + header: &H, +) -> Option> { + let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); + + let filter_log = |log: ConsensusLog| match log { + ConsensusLog::ScheduledChange(change) => Some(change), + _ => None, + }; + + // find the first consensus digest with the right ID which converts to + // the right kind of consensus log. + header.digest().convert_first(|l| l.try_to(id).and_then(filter_log)) +} diff --git a/bridges/primitives/header-chain/tests/implementation_match.rs b/primitives/header-chain/tests/implementation_match.rs similarity index 94% rename from bridges/primitives/header-chain/tests/implementation_match.rs rename to primitives/header-chain/tests/implementation_match.rs index 0b55c1903528..51275bbd645e 100644 --- a/bridges/primitives/header-chain/tests/implementation_match.rs +++ b/primitives/header-chain/tests/implementation_match.rs @@ -23,8 +23,8 @@ use assert_matches::assert_matches; use bp_header_chain::justification::{verify_justification, Error, GrandpaJustification}; use bp_test_utils::{ - header_id, make_justification_for_header, signed_precommit, test_header, Account, JustificationGeneratorParams, - ALICE, BOB, CHARLIE, DAVE, EVE, TEST_GRANDPA_SET_ID, + header_id, make_justification_for_header, signed_precommit, test_header, Account, + JustificationGeneratorParams, ALICE, BOB, CHARLIE, DAVE, EVE, TEST_GRANDPA_SET_ID, }; use finality_grandpa::voter_set::VoterSet; use sp_finality_grandpa::{AuthorityId, AuthorityWeight}; @@ -44,18 +44,22 @@ impl AncestryChain { } impl finality_grandpa::Chain for AncestryChain { - fn ancestry(&self, base: TestHash, block: TestHash) -> Result, finality_grandpa::Error> { + fn ancestry( + &self, + base: TestHash, + block: TestHash, + ) -> Result, finality_grandpa::Error> { let mut route = Vec::new(); let mut current_hash = block; loop { if current_hash == base { - break; + break } match self.0.parents.get(¤t_hash).cloned() { Some(parent_hash) => { current_hash = parent_hash; route.push(current_hash); - } + }, _ => return Err(finality_grandpa::Error::NotDescendent), } } @@ -81,14 +85,11 @@ fn minimal_accounts_set() -> Vec<(Account, AuthorityWeight)> { vec![(ALICE, 1), (BOB, 1), (CHARLIE, 1), (DAVE, 1)] } -/// Get a minimal subset of GRANDPA authorities that have enough cumulative vote weight to justify a header finality. +/// Get a minimal subset of GRANDPA authorities that have enough cumulative vote weight to justify a +/// header finality. pub fn minimal_voter_set() -> VoterSet { - VoterSet::new( - minimal_accounts_set() - .iter() - .map(|(id, w)| (AuthorityId::from(*id), *w)), - ) - .unwrap() + VoterSet::new(minimal_accounts_set().iter().map(|(id, w)| (AuthorityId::from(*id), *w))) + .unwrap() } /// Make a valid GRANDPA justification with sensible defaults. @@ -174,14 +175,8 @@ fn same_result_when_justification_contains_duplicate_vote() { let mut justification = make_default_justification(&test_header(1)); // the justification may contain exactly the same vote (i.e. same precommit and same signature) // multiple times && it isn't treated as an error by original implementation - justification - .commit - .precommits - .push(justification.commit.precommits[0].clone()); - justification - .commit - .precommits - .push(justification.commit.precommits[0].clone()); + justification.commit.precommits.push(justification.commit.precommits[0].clone()); + justification.commit.precommits.push(justification.commit.precommits[0].clone()); // our implementation succeeds assert_eq!( diff --git a/bridges/primitives/header-chain/tests/justification.rs b/primitives/header-chain/tests/justification.rs similarity index 100% rename from bridges/primitives/header-chain/tests/justification.rs rename to primitives/header-chain/tests/justification.rs diff --git a/primitives/message-dispatch/Cargo.toml b/primitives/message-dispatch/Cargo.toml new file mode 100644 index 000000000000..9897b3199781 --- /dev/null +++ b/primitives/message-dispatch/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "bp-message-dispatch" +description = "Primitives of bridge messages dispatch modules." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +bp-runtime = { path = "../runtime", default-features = false } +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-runtime/std", + "codec/std", + "frame-support/std", + "scale-info/std", + "sp-std/std", +] diff --git a/primitives/message-dispatch/src/lib.rs b/primitives/message-dispatch/src/lib.rs new file mode 100644 index 000000000000..07e448ee7ae6 --- /dev/null +++ b/primitives/message-dispatch/src/lib.rs @@ -0,0 +1,142 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! A common interface for all Bridge Message Dispatch modules. + +#![cfg_attr(not(feature = "std"), no_std)] +#![warn(missing_docs)] + +use bp_runtime::{ + messages::{DispatchFeePayment, MessageDispatchResult}, + ChainId, Size, +}; +use codec::{Decode, Encode}; +use frame_support::RuntimeDebug; +use scale_info::TypeInfo; +use sp_std::prelude::*; + +/// Message dispatch weight. +pub type Weight = u64; + +/// Spec version type. +pub type SpecVersion = u32; + +/// A generic trait to dispatch arbitrary messages delivered over the bridge. +pub trait MessageDispatch { + /// A type of the message to be dispatched. + type Message: codec::Decode; + + /// Estimate dispatch weight. + /// + /// This function must: (1) be instant and (2) return correct upper bound + /// of dispatch weight. + fn dispatch_weight(message: &Self::Message) -> Weight; + + /// Dispatches the message internally. + /// + /// `source_chain` indicates the chain where the message came from. + /// `target_chain` indicates the chain where message dispatch happens. + /// + /// `id` is a short unique identifier of the message. + /// + /// If message is `Ok`, then it should be dispatched. If it is `Err`, then it's just + /// a sign that some other component has rejected the message even before it has + /// reached `dispatch` method (right now this may only be caused if we fail to decode + /// the whole message). + /// + /// Returns unspent dispatch weight. + fn dispatch Result<(), ()>>( + source_chain: ChainId, + target_chain: ChainId, + id: BridgeMessageId, + message: Result, + pay_dispatch_fee: P, + ) -> MessageDispatchResult; +} + +/// Origin of a Call when it is dispatched on the target chain. +/// +/// The source chain can (and should) verify that the message can be dispatched on the target chain +/// with a particular origin given the source chain's origin. This can be done with the +/// `verify_message_origin()` function. +#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +pub enum CallOrigin { + /// Call is sent by the Root origin on the source chain. On the target chain it is dispatched + /// from a derived account. + /// + /// The derived account represents the source Root account on the target chain. This is useful + /// if the target chain needs some way of knowing that a call came from a privileged origin on + /// the source chain (maybe to allow a configuration change for example). + SourceRoot, + + /// Call is sent by `SourceChainAccountId` on the source chain. On the target chain it is + /// dispatched from an account controlled by a private key on the target chain. + /// + /// The account can be identified by `TargetChainAccountPublic`. The proof that the + /// `SourceChainAccountId` controls `TargetChainAccountPublic` is the `TargetChainSignature` + /// over `(Call, SourceChainAccountId, TargetChainSpecVersion, SourceChainBridgeId).encode()`. + /// + /// NOTE sending messages using this origin (or any other) does not have replay protection! + /// The assumption is that both the source account and the target account is controlled by + /// the same entity, so source-chain replay protection is sufficient. + /// As a consequence, it's extremely important for the target chain user to never produce + /// a signature with their target-private key on something that could be sent over the bridge, + /// i.e. if the target user signs `(, Call::Transfer(X, 5))` + /// The owner of `some-source-account-id` can send that message multiple times, which would + /// result with multiple transfer calls being dispatched on the target chain. + /// So please, NEVER USE YOUR PRIVATE KEY TO SIGN SOMETHING YOU DON'T FULLY UNDERSTAND! + TargetAccount(SourceChainAccountId, TargetChainAccountPublic, TargetChainSignature), + + /// Call is sent by the `SourceChainAccountId` on the source chain. On the target chain it is + /// dispatched from a derived account ID. + /// + /// The account ID on the target chain is derived from the source account ID. This is useful if + /// you need a way to represent foreign accounts on this chain for call dispatch purposes. + /// + /// Note that the derived account does not need to have a private key on the target chain. This + /// origin can therefore represent proxies, pallets, etc. as well as "regular" accounts. + SourceAccount(SourceChainAccountId), +} + +/// Message payload type used by dispatch module. +#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +pub struct MessagePayload< + SourceChainAccountId, + TargetChainAccountPublic, + TargetChainSignature, + Call, +> { + /// Runtime specification version. We only dispatch messages that have the same + /// runtime version. Otherwise we risk to misinterpret encoded calls. + pub spec_version: SpecVersion, + /// Weight of the call, declared by the message sender. If it is less than actual + /// static weight, the call is not dispatched. + pub weight: Weight, + /// Call origin to be used during dispatch. + pub origin: CallOrigin, + /// Where the fee for dispatching message is paid? + pub dispatch_fee_payment: DispatchFeePayment, + /// The call itself. + pub call: Call, +} + +impl Size + for MessagePayload> +{ + fn size_hint(&self) -> u32 { + self.call.len() as _ + } +} diff --git a/primitives/messages/Cargo.toml b/primitives/messages/Cargo.toml new file mode 100644 index 000000000000..95dca2bea67b --- /dev/null +++ b/primitives/messages/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "bp-messages" +description = "Primitives of messages module." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +bitvec = { version = "0.20", default-features = false, features = ["alloc"] } +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive", "bit-vec"] } +impl-trait-for-tuples = "0.2" +scale-info = { version = "1.0", default-features = false, features = ["bit-vec", "derive"] } +serde = { version = "1.0", optional = true, features = ["derive"] } + +# Bridge dependencies + +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-runtime/std", + "codec/std", + "frame-support/std", + "frame-system/std", + "scale-info/std", + "serde", + "sp-std/std" +] diff --git a/primitives/messages/src/lib.rs b/primitives/messages/src/lib.rs new file mode 100644 index 000000000000..abefe8d789b8 --- /dev/null +++ b/primitives/messages/src/lib.rs @@ -0,0 +1,405 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Primitives of messages module. + +#![cfg_attr(not(feature = "std"), no_std)] +// RuntimeApi generated functions +#![allow(clippy::too_many_arguments)] +// Generated by `DecodeLimit::decode_with_depth_limit` +#![allow(clippy::unnecessary_mut_passed)] + +use bitvec::prelude::*; +use bp_runtime::messages::DispatchFeePayment; +use codec::{Decode, Encode}; +use frame_support::RuntimeDebug; +use scale_info::TypeInfo; +use sp_std::{collections::vec_deque::VecDeque, prelude::*}; + +pub mod source_chain; +pub mod target_chain; + +// Weight is reexported to avoid additional frame-support dependencies in related crates. +pub use frame_support::weights::Weight; + +/// Messages pallet operating mode. +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] +#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +pub enum OperatingMode { + /// Normal mode, when all operations are allowed. + Normal, + /// The pallet is not accepting outbound messages. Inbound messages and receival proofs + /// are still accepted. + /// + /// This mode may be used e.g. when bridged chain expects upgrade. Then to avoid dispatch + /// failures, the pallet owner may stop accepting new messages, while continuing to deliver + /// queued messages to the bridged chain. Once upgrade is completed, the mode may be switched + /// back to `Normal`. + RejectingOutboundMessages, + /// The pallet is halted. All operations (except operating mode change) are prohibited. + Halted, +} + +impl Default for OperatingMode { + fn default() -> Self { + OperatingMode::Normal + } +} + +/// Messages pallet parameter. +pub trait Parameter: frame_support::Parameter { + /// Save parameter value in the runtime storage. + fn save(&self); +} + +impl Parameter for () { + fn save(&self) {} +} + +/// Lane identifier. +pub type LaneId = [u8; 4]; + +/// Message nonce. Valid messages will never have 0 nonce. +pub type MessageNonce = u64; + +/// Message id as a tuple. +pub type BridgeMessageId = (LaneId, MessageNonce); + +/// Opaque message payload. We only decode this payload when it is dispatched. +pub type MessagePayload = Vec; + +/// Message key (unique message identifier) as it is stored in the storage. +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub struct MessageKey { + /// ID of the message lane. + pub lane_id: LaneId, + /// Message nonce. + pub nonce: MessageNonce, +} + +/// Message data as it is stored in the storage. +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub struct MessageData { + /// Message payload. + pub payload: MessagePayload, + /// Message delivery and dispatch fee, paid by the submitter. + pub fee: Fee, +} + +/// Message as it is stored in the storage. +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub struct Message { + /// Message key. + pub key: MessageKey, + /// Message data. + pub data: MessageData, +} + +/// Inbound lane data. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct InboundLaneData { + /// Identifiers of relayers and messages that they have delivered to this lane (ordered by + /// message nonce). + /// + /// This serves as a helper storage item, to allow the source chain to easily pay rewards + /// to the relayers who successfully delivered messages to the target chain (inbound lane). + /// + /// It is guaranteed to have at most N entries, where N is configured at the module level. + /// If there are N entries in this vec, then: + /// 1) all incoming messages are rejected if they're missing corresponding + /// `proof-of(outbound-lane.state)`; 2) all incoming messages are rejected if + /// `proof-of(outbound-lane.state).last_delivered_nonce` is equal to + /// `self.last_confirmed_nonce`. Given what is said above, all nonces in this queue are in + /// range: `(self.last_confirmed_nonce; self.last_delivered_nonce()]`. + /// + /// When a relayer sends a single message, both of MessageNonces are the same. + /// When relayer sends messages in a batch, the first arg is the lowest nonce, second arg the + /// highest nonce. Multiple dispatches from the same relayer are allowed. + pub relayers: VecDeque>, + + /// Nonce of the last message that + /// a) has been delivered to the target (this) chain and + /// b) the delivery has been confirmed on the source chain + /// + /// that the target chain knows of. + /// + /// This value is updated indirectly when an `OutboundLane` state of the source + /// chain is received alongside with new messages delivery. + pub last_confirmed_nonce: MessageNonce, +} + +impl Default for InboundLaneData { + fn default() -> Self { + InboundLaneData { relayers: VecDeque::new(), last_confirmed_nonce: 0 } + } +} + +impl InboundLaneData { + /// Returns approximate size of the struct, given a number of entries in the `relayers` set and + /// size of each entry. + /// + /// Returns `None` if size overflows `u32` limits. + pub fn encoded_size_hint( + relayer_id_encoded_size: u32, + relayers_entries: u32, + messages_count: u32, + ) -> Option { + let message_nonce_size = 8; + let relayers_entry_size = relayer_id_encoded_size.checked_add(2 * message_nonce_size)?; + let relayers_size = relayers_entries.checked_mul(relayers_entry_size)?; + let dispatch_results_per_byte = 8; + let dispatch_result_size = + sp_std::cmp::max(relayers_entries, messages_count / dispatch_results_per_byte); + relayers_size + .checked_add(message_nonce_size) + .and_then(|result| result.checked_add(dispatch_result_size)) + } + + /// Nonce of the last message that has been delivered to this (target) chain. + pub fn last_delivered_nonce(&self) -> MessageNonce { + self.relayers + .back() + .map(|entry| entry.messages.end) + .unwrap_or(self.last_confirmed_nonce) + } +} + +/// Message details, returned by runtime APIs. +#[derive(Clone, Encode, Decode, RuntimeDebug, PartialEq, Eq)] +pub struct MessageDetails { + /// Nonce assigned to the message. + pub nonce: MessageNonce, + /// Message dispatch weight, declared by the submitter. + pub dispatch_weight: Weight, + /// Size of the encoded message. + pub size: u32, + /// Delivery+dispatch fee paid by the message submitter at the source chain. + pub delivery_and_dispatch_fee: OutboundMessageFee, + /// Where the fee for dispatching message is paid? + pub dispatch_fee_payment: DispatchFeePayment, +} + +/// Bit vector of message dispatch results. +pub type DispatchResultsBitVec = BitVec; + +/// Unrewarded relayer entry stored in the inbound lane data. +/// +/// This struct represents a continuous range of messages that have been delivered by the same +/// relayer and whose confirmations are still pending. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct UnrewardedRelayer { + /// Identifier of the relayer. + pub relayer: RelayerId, + /// Messages range, delivered by this relayer. + pub messages: DeliveredMessages, +} + +/// Delivered messages with their dispatch result. +#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct DeliveredMessages { + /// Nonce of the first message that has been delivered (inclusive). + pub begin: MessageNonce, + /// Nonce of the last message that has been delivered (inclusive). + pub end: MessageNonce, + /// Dispatch result (`false`/`true`), returned by the message dispatcher for every + /// message in the `[begin; end]` range. See `dispatch_result` field of the + /// `bp_runtime::messages::MessageDispatchResult` structure for more information. + pub dispatch_results: DispatchResultsBitVec, +} + +impl DeliveredMessages { + /// Create new `DeliveredMessages` struct that confirms delivery of single nonce with given + /// dispatch result. + pub fn new(nonce: MessageNonce, dispatch_result: bool) -> Self { + DeliveredMessages { + begin: nonce, + end: nonce, + dispatch_results: bitvec![Msb0, u8; if dispatch_result { 1 } else { 0 }], + } + } + + /// Return total count of delivered messages. + pub fn total_messages(&self) -> MessageNonce { + if self.end >= self.begin { + self.end - self.begin + 1 + } else { + 0 + } + } + + /// Note new dispatched message. + pub fn note_dispatched_message(&mut self, dispatch_result: bool) { + self.end += 1; + self.dispatch_results.push(dispatch_result); + } + + /// Returns true if delivered messages contain message with given nonce. + pub fn contains_message(&self, nonce: MessageNonce) -> bool { + (self.begin..=self.end).contains(&nonce) + } + + /// Get dispatch result flag by message nonce. + /// + /// Dispatch result flag must be interpreted using the knowledge of dispatch mechanism + /// at the target chain. See `dispatch_result` field of the + /// `bp_runtime::messages::MessageDispatchResult` structure for more information. + /// + /// Panics if message nonce is not in the `begin..=end` range. Typically you'll first + /// check if message is within the range by calling `contains_message`. + pub fn message_dispatch_result(&self, nonce: MessageNonce) -> bool { + const INVALID_NONCE: &str = "Invalid nonce used to index dispatch_results"; + + let index = nonce.checked_sub(self.begin).expect(INVALID_NONCE) as usize; + *self.dispatch_results.get(index).expect(INVALID_NONCE) + } +} + +/// Gist of `InboundLaneData::relayers` field used by runtime APIs. +#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct UnrewardedRelayersState { + /// Number of entries in the `InboundLaneData::relayers` set. + pub unrewarded_relayer_entries: MessageNonce, + /// Number of messages in the oldest entry of `InboundLaneData::relayers`. This is the + /// minimal number of reward proofs required to push out this entry from the set. + pub messages_in_oldest_entry: MessageNonce, + /// Total number of messages in the relayers vector. + pub total_messages: MessageNonce, +} + +/// Outbound lane data. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct OutboundLaneData { + /// Nonce of the oldest message that we haven't yet pruned. May point to not-yet-generated + /// message if all sent messages are already pruned. + pub oldest_unpruned_nonce: MessageNonce, + /// Nonce of the latest message, received by bridged chain. + pub latest_received_nonce: MessageNonce, + /// Nonce of the latest message, generated by us. + pub latest_generated_nonce: MessageNonce, +} + +impl Default for OutboundLaneData { + fn default() -> Self { + OutboundLaneData { + // it is 1 because we're pruning everything in [oldest_unpruned_nonce; + // latest_received_nonce] + oldest_unpruned_nonce: 1, + latest_received_nonce: 0, + latest_generated_nonce: 0, + } + } +} + +/// Returns total number of messages in the `InboundLaneData::relayers` vector. +/// +/// Returns `None` if there are more messages that `MessageNonce` may fit (i.e. `MessageNonce + 1`). +pub fn total_unrewarded_messages( + relayers: &VecDeque>, +) -> Option { + match (relayers.front(), relayers.back()) { + (Some(front), Some(back)) => { + if let Some(difference) = back.messages.end.checked_sub(front.messages.begin) { + difference.checked_add(1) + } else { + Some(0) + } + }, + _ => Some(0), + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn total_unrewarded_messages_does_not_overflow() { + assert_eq!( + total_unrewarded_messages( + &vec![ + UnrewardedRelayer { relayer: 1, messages: DeliveredMessages::new(0, true) }, + UnrewardedRelayer { + relayer: 2, + messages: DeliveredMessages::new(MessageNonce::MAX, true) + }, + ] + .into_iter() + .collect() + ), + None, + ); + } + + #[test] + fn inbound_lane_data_returns_correct_hint() { + let test_cases = vec![ + // single relayer, multiple messages + (1, 128u8), + // multiple relayers, single message per relayer + (128u8, 128u8), + // several messages per relayer + (13u8, 128u8), + ]; + for (relayer_entries, messages_count) in test_cases { + let expected_size = InboundLaneData::::encoded_size_hint( + 1, + relayer_entries as _, + messages_count as _, + ); + let actual_size = InboundLaneData { + relayers: (1u8..=relayer_entries) + .map(|i| { + let mut entry = UnrewardedRelayer { + relayer: i, + messages: DeliveredMessages::new(i as _, true), + }; + entry.messages.dispatch_results = bitvec![ + Msb0, u8; + 1; + (messages_count / relayer_entries) as _ + ]; + entry + }) + .collect(), + last_confirmed_nonce: messages_count as _, + } + .encode() + .len(); + let difference = (expected_size.unwrap() as f64 - actual_size as f64).abs(); + assert!( + difference / (std::cmp::min(actual_size, expected_size.unwrap() as usize) as f64) < 0.1, + "Too large difference between actual ({}) and expected ({:?}) inbound lane data size. Test case: {}+{}", + actual_size, + expected_size, + relayer_entries, + messages_count, + ); + } + } + + #[test] + fn message_dispatch_result_works() { + let delivered_messages = + DeliveredMessages { begin: 100, end: 150, dispatch_results: bitvec![Msb0, u8; 1; 151] }; + + assert!(!delivered_messages.contains_message(99)); + assert!(delivered_messages.contains_message(100)); + assert!(delivered_messages.contains_message(150)); + assert!(!delivered_messages.contains_message(151)); + + assert!(delivered_messages.message_dispatch_result(125)); + } +} diff --git a/primitives/messages/src/source_chain.rs b/primitives/messages/src/source_chain.rs new file mode 100644 index 000000000000..1ff05abf131e --- /dev/null +++ b/primitives/messages/src/source_chain.rs @@ -0,0 +1,285 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Primitives of messages module, that are used on the source chain. + +use crate::{DeliveredMessages, InboundLaneData, LaneId, MessageNonce, OutboundLaneData}; + +use crate::UnrewardedRelayer; +use bp_runtime::Size; +use frame_support::{weights::Weight, Parameter, RuntimeDebug}; +use sp_std::{ + collections::{btree_map::BTreeMap, vec_deque::VecDeque}, + fmt::Debug, + ops::RangeInclusive, +}; + +/// The sender of the message on the source chain. +pub type Sender = frame_system::RawOrigin; + +/// Relayers rewards, grouped by relayer account id. +pub type RelayersRewards = BTreeMap>; + +/// Single relayer rewards. +#[derive(RuntimeDebug, Default)] +pub struct RelayerRewards { + /// Total rewards that are to be paid to the relayer. + pub reward: Balance, + /// Total number of messages relayed by this relayer. + pub messages: MessageNonce, +} + +/// Target chain API. Used by source chain to verify target chain proofs. +/// +/// All implementations of this trait should only work with finalized data that +/// can't change. Wrong implementation may lead to invalid lane states (i.e. lane +/// that's stuck) and/or processing messages without paying fees. +pub trait TargetHeaderChain { + /// Error type. + type Error: Debug + Into<&'static str>; + + /// Proof that messages have been received by target chain. + type MessagesDeliveryProof: Parameter + Size; + + /// Verify message payload before we accept it. + /// + /// **CAUTION**: this is very important function. Incorrect implementation may lead + /// to stuck lanes and/or relayers loses. + /// + /// The proper implementation must ensure that the delivery-transaction with this + /// payload would (at least) be accepted into target chain transaction pool AND + /// eventually will be successfully mined. The most obvious incorrect implementation + /// example would be implementation for BTC chain that accepts payloads larger than + /// 1MB. BTC nodes aren't accepting transactions that are larger than 1MB, so relayer + /// will be unable to craft valid transaction => this (and all subsequent) messages will + /// never be delivered. + fn verify_message(payload: &Payload) -> Result<(), Self::Error>; + + /// Verify messages delivery proof and return lane && nonce of the latest received message. + fn verify_messages_delivery_proof( + proof: Self::MessagesDeliveryProof, + ) -> Result<(LaneId, InboundLaneData), Self::Error>; +} + +/// Lane message verifier. +/// +/// Runtime developer may implement any additional validation logic over message-lane mechanism. +/// E.g. if lanes should have some security (e.g. you can only accept Lane1 messages from +/// Submitter1, Lane2 messages for those who has submitted first message to this lane, disable +/// Lane3 until some block, ...), then it may be built using this verifier. +/// +/// Any fee requirements should also be enforced here. +pub trait LaneMessageVerifier { + /// Error type. + type Error: Debug + Into<&'static str>; + + /// Verify message payload and return Ok(()) if message is valid and allowed to be sent over the + /// lane. + fn verify_message( + submitter: &Sender, + delivery_and_dispatch_fee: &Fee, + lane: &LaneId, + outbound_data: &OutboundLaneData, + payload: &Payload, + ) -> Result<(), Self::Error>; +} + +/// Message delivery payment. It is called as a part of submit-message transaction. Transaction +/// submitter is paying (in source chain tokens/assets) for: +/// +/// 1) submit-message-transaction-fee itself. This fee is not included in the +/// `delivery_and_dispatch_fee` and is withheld by the regular transaction payment mechanism; +/// 2) message-delivery-transaction-fee. It is submitted to the target node by relayer; +/// 3) message-dispatch fee. It is paid by relayer for processing message by target chain; +/// 4) message-receiving-delivery-transaction-fee. It is submitted to the source node +/// by relayer. +/// +/// So to be sure that any non-altruist relayer would agree to deliver message, submitter +/// should set `delivery_and_dispatch_fee` to at least (equivalent of): sum of fees from (2) +/// to (4) above, plus some interest for the relayer. +pub trait MessageDeliveryAndDispatchPayment { + /// Error type. + type Error: Debug + Into<&'static str>; + + /// Withhold/write-off delivery_and_dispatch_fee from submitter account to + /// some relayers-fund account. + fn pay_delivery_and_dispatch_fee( + submitter: &Sender, + fee: &Balance, + relayer_fund_account: &AccountId, + ) -> Result<(), Self::Error>; + + /// Pay rewards for delivering messages to the given relayers. + /// + /// The implementation may also choose to pay reward to the `confirmation_relayer`, which is + /// a relayer that has submitted delivery confirmation transaction. + fn pay_relayers_rewards( + lane_id: LaneId, + messages_relayers: VecDeque>, + confirmation_relayer: &AccountId, + received_range: &RangeInclusive, + relayer_fund_account: &AccountId, + ); +} + +/// Send message artifacts. +#[derive(RuntimeDebug, PartialEq)] +pub struct SendMessageArtifacts { + /// Nonce of the message. + pub nonce: MessageNonce, + /// Actual weight of send message call. + pub weight: Weight, +} + +/// Messages bridge API to be used from other pallets. +pub trait MessagesBridge { + /// Error type. + type Error: Debug; + + /// Send message over the bridge. + /// + /// Returns unique message nonce or error if send has failed. + fn send_message( + sender: Sender, + lane: LaneId, + message: Payload, + delivery_and_dispatch_fee: Balance, + ) -> Result; +} + +/// Bridge that does nothing when message is being sent. +#[derive(RuntimeDebug, PartialEq)] +pub struct NoopMessagesBridge; + +impl MessagesBridge + for NoopMessagesBridge +{ + type Error = &'static str; + + fn send_message( + _sender: Sender, + _lane: LaneId, + _message: Payload, + _delivery_and_dispatch_fee: Balance, + ) -> Result { + Ok(SendMessageArtifacts { nonce: 0, weight: 0 }) + } +} + +/// Handler for messages delivery confirmation. +pub trait OnDeliveryConfirmed { + /// Called when we receive confirmation that our messages have been delivered to the + /// target chain. The confirmation also has single bit dispatch result for every + /// confirmed message (see `DeliveredMessages` for details). Guaranteed to be called + /// only when at least one message is delivered. + /// + /// Should return total weight consumed by the call. + /// + /// NOTE: messages pallet assumes that maximal weight that may be spent on processing + /// single message is single DB read + single DB write. So this function shall never + /// return weight that is larger than total number of messages * (db read + db write). + /// If your pallet needs more time for processing single message, please do it + /// from `on_initialize` call(s) of the next block(s). + fn on_messages_delivered(_lane: &LaneId, _messages: &DeliveredMessages) -> Weight; +} + +#[impl_trait_for_tuples::impl_for_tuples(30)] +impl OnDeliveryConfirmed for Tuple { + fn on_messages_delivered(lane: &LaneId, messages: &DeliveredMessages) -> Weight { + let mut total_weight: Weight = 0; + for_tuples!( + #( + total_weight = total_weight.saturating_add(Tuple::on_messages_delivered(lane, messages)); + )* + ); + total_weight + } +} + +/// Handler for messages have been accepted +pub trait OnMessageAccepted { + /// Called when a message has been accepted by message pallet. + fn on_messages_accepted(lane: &LaneId, message: &MessageNonce) -> Weight; +} + +impl OnMessageAccepted for () { + fn on_messages_accepted(_lane: &LaneId, _message: &MessageNonce) -> Weight { + 0 + } +} + +/// Structure that may be used in place of `TargetHeaderChain`, `LaneMessageVerifier` and +/// `MessageDeliveryAndDispatchPayment` on chains, where outbound messages are forbidden. +pub struct ForbidOutboundMessages; + +/// Error message that is used in `ForbidOutboundMessages` implementation. +const ALL_OUTBOUND_MESSAGES_REJECTED: &str = + "This chain is configured to reject all outbound messages"; + +impl TargetHeaderChain for ForbidOutboundMessages { + type Error = &'static str; + + type MessagesDeliveryProof = (); + + fn verify_message(_payload: &Payload) -> Result<(), Self::Error> { + Err(ALL_OUTBOUND_MESSAGES_REJECTED) + } + + fn verify_messages_delivery_proof( + _proof: Self::MessagesDeliveryProof, + ) -> Result<(LaneId, InboundLaneData), Self::Error> { + Err(ALL_OUTBOUND_MESSAGES_REJECTED) + } +} + +impl LaneMessageVerifier + for ForbidOutboundMessages +{ + type Error = &'static str; + + fn verify_message( + _submitter: &Sender, + _delivery_and_dispatch_fee: &Fee, + _lane: &LaneId, + _outbound_data: &OutboundLaneData, + _payload: &Payload, + ) -> Result<(), Self::Error> { + Err(ALL_OUTBOUND_MESSAGES_REJECTED) + } +} + +impl MessageDeliveryAndDispatchPayment + for ForbidOutboundMessages +{ + type Error = &'static str; + + fn pay_delivery_and_dispatch_fee( + _submitter: &Sender, + _fee: &Balance, + _relayer_fund_account: &AccountId, + ) -> Result<(), Self::Error> { + Err(ALL_OUTBOUND_MESSAGES_REJECTED) + } + + fn pay_relayers_rewards( + _lane_id: LaneId, + _messages_relayers: VecDeque>, + _confirmation_relayer: &AccountId, + _received_range: &RangeInclusive, + _relayer_fund_account: &AccountId, + ) { + } +} diff --git a/bridges/primitives/messages/src/target_chain.rs b/primitives/messages/src/target_chain.rs similarity index 89% rename from bridges/primitives/messages/src/target_chain.rs rename to primitives/messages/src/target_chain.rs index d1b87fd02323..a84ea7af907d 100644 --- a/bridges/primitives/messages/src/target_chain.rs +++ b/primitives/messages/src/target_chain.rs @@ -21,13 +21,14 @@ use crate::{LaneId, Message, MessageData, MessageKey, OutboundLaneData}; use bp_runtime::{messages::MessageDispatchResult, Size}; use codec::{Decode, Encode, Error as CodecError}; use frame_support::{weights::Weight, Parameter, RuntimeDebug}; +use scale_info::TypeInfo; use sp_std::{collections::btree_map::BTreeMap, fmt::Debug, prelude::*}; /// Proved messages from the source chain. pub type ProvedMessages = BTreeMap>; /// Proved messages from single lane of the source chain. -#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq)] +#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub struct ProvedLaneMessages { /// Optional outbound lane state. pub lane_state: Option, @@ -75,7 +76,7 @@ pub trait SourceHeaderChain { /// messages will be rejected. /// /// The `messages_count` argument verification (sane limits) is supposed to be made - /// outside of this function. This function only verifies that the proof declares exactly + /// outside this function. This function only verifies that the proof declares exactly /// `messages_count` messages. fn verify_messages_proof( proof: Self::MessagesProof, @@ -111,23 +112,19 @@ pub trait MessageDispatch { impl Default for ProvedLaneMessages { fn default() -> Self { - ProvedLaneMessages { - lane_state: None, - messages: Vec::new(), - } + ProvedLaneMessages { lane_state: None, messages: Vec::new() } } } impl From> for DispatchMessage { fn from(message: Message) -> Self { - DispatchMessage { - key: message.key, - data: message.data.into(), - } + DispatchMessage { key: message.key, data: message.data.into() } } } -impl From> for DispatchMessageData { +impl From> + for DispatchMessageData +{ fn from(data: MessageData) -> Self { DispatchMessageData { payload: DispatchPayload::decode(&mut &data.payload[..]), @@ -141,7 +138,8 @@ impl From> for DispatchMessageDat pub struct ForbidInboundMessages; /// Error message that is used in `ForbidOutboundMessages` implementation. -const ALL_INBOUND_MESSAGES_REJECTED: &str = "This chain is configured to reject all inbound messages"; +const ALL_INBOUND_MESSAGES_REJECTED: &str = + "This chain is configured to reject all inbound messages"; impl SourceHeaderChain for ForbidInboundMessages { type Error = &'static str; @@ -162,7 +160,10 @@ impl MessageDispatch for ForbidInboundMessages { Weight::MAX } - fn dispatch(_: &AccountId, _: DispatchMessage) -> MessageDispatchResult { + fn dispatch( + _: &AccountId, + _: DispatchMessage, + ) -> MessageDispatchResult { MessageDispatchResult { dispatch_result: false, unspent_weight: 0, diff --git a/primitives/polkadot-core/Cargo.toml b/primitives/polkadot-core/Cargo.toml new file mode 100644 index 000000000000..f05edd0d91ba --- /dev/null +++ b/primitives/polkadot-core/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "bp-polkadot-core" +description = "Primitives of Polkadot-like runtime." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Bridge Dependencies + +bp-messages = { path = "../messages", default-features = false } +bp-runtime = { path = "../runtime", default-features = false } + +# Substrate Based Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[dev-dependencies] +hex = "0.4" + +[features] +default = ["std"] +std = [ + "bp-messages/std", + "bp-runtime/std", + "frame-support/std", + "frame-system/std", + "parity-scale-codec/std", + "scale-info/std", + "sp-api/std", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", + "sp-version/std", +] diff --git a/primitives/polkadot-core/src/lib.rs b/primitives/polkadot-core/src/lib.rs new file mode 100644 index 000000000000..38e43d312b5d --- /dev/null +++ b/primitives/polkadot-core/src/lib.rs @@ -0,0 +1,423 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] + +use bp_messages::MessageNonce; +use bp_runtime::Chain; +use frame_support::{ + dispatch::Dispatchable, + parameter_types, + weights::{ + constants::{BlockExecutionWeight, WEIGHT_PER_SECOND}, + DispatchClass, Weight, + }, + Blake2_128Concat, RuntimeDebug, StorageHasher, Twox128, +}; +use frame_system::limits; +use parity_scale_codec::Compact; +use scale_info::{StaticTypeInfo, TypeInfo}; +use sp_core::Hasher as HasherT; +use sp_runtime::{ + generic, + traits::{BlakeTwo256, IdentifyAccount, Verify}, + MultiAddress, MultiSignature, OpaqueExtrinsic, +}; +use sp_std::prelude::Vec; + +// Re-export's to avoid extra substrate dependencies in chain-specific crates. +pub use frame_support::{weights::constants::ExtrinsicBaseWeight, Parameter}; +pub use sp_runtime::{traits::Convert, Perbill}; + +/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at +/// Polkadot-like chain. This mostly depends on number of entries in the storage trie. +/// Some reserve is reserved to account future chain growth. +/// +/// To compute this value, we've synced Kusama chain blocks [0; 6545733] to see if there were +/// any significant changes of the storage proof size (NO): +/// +/// - at block 3072 the storage proof size overhead was 579 bytes; +/// - at block 2479616 it was 578 bytes; +/// - at block 4118528 it was 711 bytes; +/// - at block 6540800 it was 779 bytes. +/// +/// The number of storage entries at the block 6546170 was 351207 and number of trie nodes in +/// the storage proof was 5 (log(16, 351207) ~ 4.6). +/// +/// So the assumption is that the storage proof size overhead won't be larger than 1024 in the +/// nearest future. If it'll ever break this barrier, then we'll need to update this constant +/// at next runtime upgrade. +pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024; + +/// Maximal size (in bytes) of encoded (using `Encode::encode()`) account id. +/// +/// All polkadot-like chains are using same crypto. +pub const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 32; + +/// All Polkadot-like chains allow normal extrinsics to fill block up to 75 percent. +/// +/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. +const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); + +/// All Polkadot-like chains allow 2 seconds of compute with a 6-second average block time. +/// +/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. +pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; + +/// All Polkadot-like chains assume that an on-initialize consumes 1 percent of the weight on +/// average, hence a single extrinsic will not be allowed to consume more than +/// `AvailableBlockRatio - 1 percent`. +/// +/// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. +pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(1); + +parameter_types! { + /// All Polkadot-like chains have maximal block size set to 5MB. + /// + /// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. + pub BlockLength: limits::BlockLength = limits::BlockLength::max_with_normal_ratio( + 5 * 1024 * 1024, + NORMAL_DISPATCH_RATIO, + ); + /// All Polkadot-like chains have the same block weights. + /// + /// This is a copy-paste from the Polkadot repo's `polkadot-runtime-common` crate. + pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() + .base_block(BlockExecutionWeight::get()) + .for_class(DispatchClass::all(), |weights| { + weights.base_extrinsic = ExtrinsicBaseWeight::get(); + }) + .for_class(DispatchClass::Normal, |weights| { + weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); + }) + .for_class(DispatchClass::Operational, |weights| { + weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); + // Operational transactions have an extra reserved space, so that they + // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`. + weights.reserved = Some( + MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT, + ); + }) + .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) + .build_or_panic(); +} + +/// Get the maximum weight (compute time) that a Normal extrinsic on the Polkadot-like chain can +/// use. +pub fn max_extrinsic_weight() -> Weight { + BlockWeights::get() + .get(DispatchClass::Normal) + .max_extrinsic + .unwrap_or(Weight::MAX) +} + +/// Get the maximum length in bytes that a Normal extrinsic on the Polkadot-like chain requires. +pub fn max_extrinsic_size() -> u32 { + *BlockLength::get().max.get(DispatchClass::Normal) +} + +// TODO [#78] may need to be updated after https://github.com/paritytech/parity-bridges-common/issues/78 +/// Maximal number of messages in single delivery transaction. +pub const MAX_MESSAGES_IN_DELIVERY_TRANSACTION: MessageNonce = 128; + +/// Maximal number of unrewarded relayer entries at inbound lane. +pub const MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE: MessageNonce = 128; + +// TODO [#438] should be selected keeping in mind: +// finality delay on both chains + reward payout cost + messages throughput. +/// Maximal number of unconfirmed messages at inbound lane. +pub const MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE: MessageNonce = 8192; + +// One important thing about weight-related constants here is that actually we may have +// different weights on different Polkadot-like chains. But now all deployments are +// almost the same, so we're exporting constants from this crate. + +/// Maximal weight of single message delivery confirmation transaction on Polkadot-like chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_delivery_proof` +/// weight formula computation for the case when single message is confirmed. The result then must +/// be rounded up to account possible future runtime upgrades. +pub const MAX_SINGLE_MESSAGE_DELIVERY_CONFIRMATION_TX_WEIGHT: Weight = 2_000_000_000; + +/// Increase of delivery transaction weight on Polkadot-like chain with every additional message +/// byte. +/// +/// This value is a result of +/// `pallet_bridge_messages::WeightInfoExt::storage_proof_size_overhead(1)` call. The result then +/// must be rounded up to account possible future runtime upgrades. +pub const ADDITIONAL_MESSAGE_BYTE_DELIVERY_WEIGHT: Weight = 25_000; + +/// Maximal number of bytes, included in the signed Polkadot-like transaction apart from the encoded +/// call itself. +/// +/// Can be computed by subtracting encoded call size from raw transaction size. +pub const TX_EXTRA_BYTES: u32 = 256; + +/// Weight of single regular message delivery transaction on Polkadot-like chain. +/// +/// This value is a result of `pallet_bridge_messages::Pallet::receive_messages_proof_weight()` call +/// for the case when single message of `pallet_bridge_messages::EXPECTED_DEFAULT_MESSAGE_LENGTH` +/// bytes is delivered. The message must have dispatch weight set to zero. The result then must be +/// rounded up to account possible future runtime upgrades. +pub const DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT: Weight = 1_500_000_000; + +/// Weight of pay-dispatch-fee operation for inbound messages at Polkadot-like chain. +/// +/// This value corresponds to the result of +/// `pallet_bridge_messages::WeightInfoExt::pay_inbound_dispatch_fee_overhead()` call for your +/// chain. Don't put too much reserve there, because it is used to **decrease** +/// `DEFAULT_MESSAGE_DELIVERY_TX_WEIGHT` cost. So putting large reserve would make delivery +/// transactions cheaper. +pub const PAY_INBOUND_DISPATCH_FEE_WEIGHT: Weight = 600_000_000; + +/// Re-export `time_units` to make usage easier. +pub use time_units::*; + +/// Human readable time units defined in terms of number of blocks. +pub mod time_units { + use super::BlockNumber; + + pub const MILLISECS_PER_BLOCK: u64 = 6000; + pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + + pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); + pub const HOURS: BlockNumber = MINUTES * 60; + pub const DAYS: BlockNumber = HOURS * 24; +} + +/// Block number type used in Polkadot-like chains. +pub type BlockNumber = u32; + +/// Hash type used in Polkadot-like chains. +pub type Hash = ::Out; + +/// Account Index (a.k.a. nonce). +pub type Index = u32; + +/// Hashing type. +pub type Hashing = BlakeTwo256; + +/// The type of object that can produce hashes on Polkadot-like chains. +pub type Hasher = BlakeTwo256; + +/// The header type used by Polkadot-like chains. +pub type Header = generic::Header; + +/// Signature type used by Polkadot-like chains. +pub type Signature = MultiSignature; + +/// Public key of account on Polkadot-like chains. +pub type AccountPublic = ::Signer; + +/// Id of account on Polkadot-like chains. +pub type AccountId = ::AccountId; + +/// Address of account on Polkadot-like chains. +pub type AccountAddress = MultiAddress; + +/// Index of a transaction on the Polkadot-like chains. +pub type Nonce = u32; + +/// Block type of Polkadot-like chains. +pub type Block = generic::Block; + +/// Polkadot-like block signed with a Justification. +pub type SignedBlock = generic::SignedBlock; + +/// The balance of an account on Polkadot-like chain. +pub type Balance = u128; + +/// Unchecked Extrinsic type. +pub type UncheckedExtrinsic = + generic::UncheckedExtrinsic>; + +/// Account address, used by the Polkadot-like chain. +pub type Address = MultiAddress; + +/// A type of the data encoded as part of the transaction. +pub type SignedExtra = ((), (), (), sp_runtime::generic::Era, Compact, (), Compact); + +/// Parameters which are part of the payload used to produce transaction signature, +/// but don't end up in the transaction itself (i.e. inherent part of the runtime). +pub type AdditionalSigned = (u32, u32, Hash, Hash, (), (), ()); + +/// A simplified version of signed extensions meant for producing signed transactions +/// and signed payload in the client code. +#[derive(PartialEq, Eq, Clone, RuntimeDebug, TypeInfo)] +pub struct SignedExtensions { + encode_payload: SignedExtra, + additional_signed: AdditionalSigned, + _data: sp_std::marker::PhantomData, +} + +impl parity_scale_codec::Encode for SignedExtensions { + fn using_encoded R>(&self, f: F) -> R { + self.encode_payload.using_encoded(f) + } +} + +impl parity_scale_codec::Decode for SignedExtensions { + fn decode( + _input: &mut I, + ) -> Result { + unimplemented!("SignedExtensions are never meant to be decoded, they are only used to create transaction"); + } +} + +impl SignedExtensions { + pub fn new( + version: sp_version::RuntimeVersion, + era: bp_runtime::TransactionEraOf, + genesis_hash: Hash, + nonce: Nonce, + tip: Balance, + ) -> Self { + Self { + encode_payload: ( + (), // spec version + (), // tx version + (), // genesis + era.frame_era(), // era + nonce.into(), // nonce (compact encoding) + (), // Check weight + tip.into(), // transaction payment / tip (compact encoding) + ), + additional_signed: ( + version.spec_version, + version.transaction_version, + genesis_hash, + era.signed_payload(genesis_hash), + (), + (), + (), + ), + _data: Default::default(), + } + } +} + +impl SignedExtensions { + /// Return signer nonce, used to craft transaction. + pub fn nonce(&self) -> Nonce { + self.encode_payload.4.into() + } + + /// Return transaction tip. + pub fn tip(&self) -> Balance { + self.encode_payload.6.into() + } +} + +impl sp_runtime::traits::SignedExtension for SignedExtensions +where + Call: parity_scale_codec::Codec + + sp_std::fmt::Debug + + Sync + + Send + + Clone + + Eq + + PartialEq + + StaticTypeInfo, + Call: Dispatchable, +{ + const IDENTIFIER: &'static str = "Not needed."; + + type AccountId = AccountId; + type Call = Call; + type AdditionalSigned = AdditionalSigned; + type Pre = (); + + fn additional_signed( + &self, + ) -> Result { + Ok(self.additional_signed) + } +} + +/// Polkadot-like chain. +#[derive(RuntimeDebug)] +pub struct PolkadotLike; + +impl Chain for PolkadotLike { + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hasher = Hasher; + type Header = Header; + + type AccountId = AccountId; + type Balance = Balance; + type Index = Index; + type Signature = Signature; +} + +/// Convert a 256-bit hash into an AccountId. +pub struct AccountIdConverter; + +impl Convert for AccountIdConverter { + fn convert(hash: sp_core::H256) -> AccountId { + hash.to_fixed_bytes().into() + } +} + +/// Return a storage key for account data. +/// +/// This is based on FRAME storage-generation code from Substrate: +/// [link](https://github.com/paritytech/substrate/blob/c939ceba381b6313462d47334f775e128ea4e95d/frame/support/src/storage/generator/map.rs#L74) +/// The equivalent command to invoke in case full `Runtime` is known is this: +/// `let key = frame_system::Account::::storage_map_final_key(&account_id);` +pub fn account_info_storage_key(id: &AccountId) -> Vec { + let module_prefix_hashed = Twox128::hash(b"System"); + let storage_prefix_hashed = Twox128::hash(b"Account"); + let key_hashed = parity_scale_codec::Encode::using_encoded(id, Blake2_128Concat::hash); + + let mut final_key = Vec::with_capacity( + module_prefix_hashed.len() + storage_prefix_hashed.len() + key_hashed.len(), + ); + + final_key.extend_from_slice(&module_prefix_hashed[..]); + final_key.extend_from_slice(&storage_prefix_hashed[..]); + final_key.extend_from_slice(&key_hashed); + + final_key +} + +#[cfg(test)] +mod tests { + use super::*; + use sp_runtime::codec::Encode; + + #[test] + fn maximal_encoded_account_id_size_is_correct() { + let actual_size = AccountId::default().encode().len(); + assert!( + actual_size <= MAXIMAL_ENCODED_ACCOUNT_ID_SIZE as usize, + "Actual size of encoded account id for Polkadot-like chains ({}) is larger than expected {}", + actual_size, + MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + ); + } + + #[test] + fn should_generate_storage_key() { + let acc = [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, + ] + .into(); + let key = account_info_storage_key(&acc); + assert_eq!(hex::encode(key), "26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92dccd599abfe1920a1cff8a7358231430102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"); + } +} diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml new file mode 100644 index 000000000000..944f84a6c683 --- /dev/null +++ b/primitives/runtime/Cargo.toml @@ -0,0 +1,39 @@ +[package] +name = "bp-runtime" +description = "Primitives that may be used at (bridges) runtime level." +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +hash-db = { version = "0.15.2", default-features = false } +num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-support/std", + "hash-db/std", + "num-traits/std", + "scale-info/std", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", + "sp-state-machine/std", + "sp-trie/std", +] diff --git a/primitives/runtime/src/chain.rs b/primitives/runtime/src/chain.rs new file mode 100644 index 000000000000..e24694bf8b0f --- /dev/null +++ b/primitives/runtime/src/chain.rs @@ -0,0 +1,152 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use frame_support::Parameter; +use num_traits::{AsPrimitive, Bounded, CheckedSub, SaturatingAdd, Zero}; +use sp_runtime::{ + traits::{ + AtLeast32Bit, AtLeast32BitUnsigned, Hash as HashT, Header as HeaderT, MaybeDisplay, + MaybeMallocSizeOf, MaybeSerialize, MaybeSerializeDeserialize, Member, SimpleBitOps, Verify, + }, + FixedPointOperand, +}; +use sp_std::{convert::TryFrom, fmt::Debug, hash::Hash, str::FromStr}; + +/// Minimal Substrate-based chain representation that may be used from no_std environment. +pub trait Chain: Send + Sync + 'static { + /// A type that fulfills the abstract idea of what a Substrate block number is. + // Constraits come from the associated Number type of `sp_runtime::traits::Header` + // See here for more info: + // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Number + // + // Note that the `AsPrimitive` trait is required by the GRANDPA justification + // verifier, and is not usually part of a Substrate Header's Number type. + type BlockNumber: Parameter + + Member + + MaybeSerializeDeserialize + + Hash + + Copy + + Default + + MaybeDisplay + + AtLeast32BitUnsigned + + FromStr + + MaybeMallocSizeOf + + AsPrimitive + + Default + // original `sp_runtime::traits::Header::BlockNumber` doesn't have this trait, but + // `sp_runtime::generic::Era` requires block number -> `u64` conversion. + + Into; + + /// A type that fulfills the abstract idea of what a Substrate hash is. + // Constraits come from the associated Hash type of `sp_runtime::traits::Header` + // See here for more info: + // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hash + type Hash: Parameter + + Member + + MaybeSerializeDeserialize + + Hash + + Ord + + Copy + + MaybeDisplay + + Default + + SimpleBitOps + + AsRef<[u8]> + + AsMut<[u8]> + + MaybeMallocSizeOf; + + /// A type that fulfills the abstract idea of what a Substrate hasher (a type + /// that produces hashes) is. + // Constraits come from the associated Hashing type of `sp_runtime::traits::Header` + // See here for more info: + // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hashing + type Hasher: HashT; + + /// A type that fulfills the abstract idea of what a Substrate header is. + // See here for more info: + // https://crates.parity.io/sp_runtime/traits/trait.Header.html + type Header: Parameter + + HeaderT + + MaybeSerializeDeserialize; + + /// The user account identifier type for the runtime. + type AccountId: Parameter + + Member + + MaybeSerializeDeserialize + + Debug + + MaybeDisplay + + Ord + + Default; + /// Balance of an account in native tokens. + /// + /// The chain may support multiple tokens, but this particular type is for token that is used + /// to pay for transaction dispatch, to reward different relayers (headers, messages), etc. + type Balance: AtLeast32BitUnsigned + + FixedPointOperand + + Parameter + + Parameter + + Member + + MaybeSerializeDeserialize + + Clone + + Copy + + Bounded + + CheckedSub + + PartialOrd + + SaturatingAdd + + Zero + + TryFrom; + /// Index of a transaction used by the chain. + type Index: Parameter + + Member + + MaybeSerialize + + Debug + + Default + + MaybeDisplay + + MaybeSerializeDeserialize + + AtLeast32Bit + + Copy; + /// Signature type, used on this chain. + type Signature: Parameter + Verify; +} + +/// Block number used by the chain. +pub type BlockNumberOf = ::BlockNumber; + +/// Hash type used by the chain. +pub type HashOf = ::Hash; + +/// Hasher type used by the chain. +pub type HasherOf = ::Hasher; + +/// Header type used by the chain. +pub type HeaderOf = ::Header; + +/// Account id type used by the chain. +pub type AccountIdOf = ::AccountId; + +/// Balance type used by the chain. +pub type BalanceOf = ::Balance; + +/// Transaction index type used by the chain. +pub type IndexOf = ::Index; + +/// Signature type used by the chain. +pub type SignatureOf = ::Signature; + +/// Account public type used by the chain. +pub type AccountPublicOf = as Verify>::Signer; + +/// Transaction era used by the chain. +pub type TransactionEraOf = crate::TransactionEra, HashOf>; diff --git a/primitives/runtime/src/lib.rs b/primitives/runtime/src/lib.rs new file mode 100644 index 000000000000..460f1b19dfe3 --- /dev/null +++ b/primitives/runtime/src/lib.rs @@ -0,0 +1,265 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Primitives that may be used at (bridges) runtime level. + +#![cfg_attr(not(feature = "std"), no_std)] + +use codec::Encode; +use frame_support::{RuntimeDebug, StorageHasher}; +use sp_core::{hash::H256, storage::StorageKey}; +use sp_io::hashing::blake2_256; +use sp_std::{convert::TryFrom, vec::Vec}; + +pub use chain::{ + AccountIdOf, AccountPublicOf, BalanceOf, BlockNumberOf, Chain, HashOf, HasherOf, HeaderOf, + IndexOf, SignatureOf, TransactionEraOf, +}; +pub use frame_support::storage::storage_prefix as storage_value_final_key; +pub use storage_proof::{Error as StorageProofError, StorageProofChecker}; + +#[cfg(feature = "std")] +pub use storage_proof::craft_valid_storage_proof; + +pub mod messages; + +mod chain; +mod storage_proof; + +/// Use this when something must be shared among all instances. +pub const NO_INSTANCE_ID: ChainId = [0, 0, 0, 0]; + +/// Bridge-with-Rialto instance id. +pub const RIALTO_CHAIN_ID: ChainId = *b"rlto"; + +/// Bridge-with-Millau instance id. +pub const MILLAU_CHAIN_ID: ChainId = *b"mlau"; + +/// Bridge-with-Polkadot instance id. +pub const POLKADOT_CHAIN_ID: ChainId = *b"pdot"; + +/// Bridge-with-Kusama instance id. +pub const KUSAMA_CHAIN_ID: ChainId = *b"ksma"; + +/// Bridge-with-Rococo instance id. +pub const ROCOCO_CHAIN_ID: ChainId = *b"roco"; + +/// Bridge-with-Wococo instance id. +pub const WOCOCO_CHAIN_ID: ChainId = *b"woco"; + +/// Call-dispatch module prefix. +pub const CALL_DISPATCH_MODULE_PREFIX: &[u8] = b"pallet-bridge/dispatch"; + +/// A unique prefix for entropy when generating cross-chain account IDs. +pub const ACCOUNT_DERIVATION_PREFIX: &[u8] = b"pallet-bridge/account-derivation/account"; + +/// A unique prefix for entropy when generating a cross-chain account ID for the Root account. +pub const ROOT_ACCOUNT_DERIVATION_PREFIX: &[u8] = b"pallet-bridge/account-derivation/root"; + +/// Generic header Id. +#[derive(RuntimeDebug, Default, Clone, Copy, Eq, Hash, PartialEq)] +pub struct HeaderId(pub Number, pub Hash); + +/// Unique identifier of the chain. +/// +/// In addition to its main function (identifying the chain), this type may also be used to +/// identify module instance. We have a bunch of pallets that may be used in different bridges. E.g. +/// messages pallet may be deployed twice in the same runtime to bridge ThisChain with Chain1 and +/// Chain2. Sometimes we need to be able to identify deployed instance dynamically. This type may be +/// used for that. +pub type ChainId = [u8; 4]; + +/// Type of accounts on the source chain. +pub enum SourceAccount { + /// An account that belongs to Root (privileged origin). + Root, + /// A non-privileged account. + /// + /// The embedded account ID may or may not have a private key depending on the "owner" of the + /// account (private key, pallet, proxy, etc.). + Account(T), +} + +/// Derive an account ID from a foreign account ID. +/// +/// This function returns an encoded Blake2 hash. It is the responsibility of the caller to ensure +/// this can be successfully decoded into an AccountId. +/// +/// The `bridge_id` is used to provide extra entropy when producing account IDs. This helps prevent +/// AccountId collisions between different bridges on a single target chain. +/// +/// Note: If the same `bridge_id` is used across different chains (for example, if one source chain +/// is bridged to multiple target chains), then all the derived accounts would be the same across +/// the different chains. This could negatively impact users' privacy across chains. +pub fn derive_account_id(bridge_id: ChainId, id: SourceAccount) -> H256 +where + AccountId: Encode, +{ + match id { + SourceAccount::Root => + (ROOT_ACCOUNT_DERIVATION_PREFIX, bridge_id).using_encoded(blake2_256), + SourceAccount::Account(id) => + (ACCOUNT_DERIVATION_PREFIX, bridge_id, id).using_encoded(blake2_256), + } + .into() +} + +/// Derive the account ID of the shared relayer fund account. +/// +/// This account is used to collect fees for relayers that are passing messages across the bridge. +/// +/// The account ID can be the same across different instances of `pallet-bridge-messages` if the +/// same `bridge_id` is used. +pub fn derive_relayer_fund_account_id(bridge_id: ChainId) -> H256 { + ("relayer-fund-account", bridge_id).using_encoded(blake2_256).into() +} + +/// Anything that has size. +pub trait Size { + /// Return approximate size of this object (in bytes). + /// + /// This function should be lightweight. The result should not necessary be absolutely + /// accurate. + fn size_hint(&self) -> u32; +} + +impl Size for &[u8] { + fn size_hint(&self) -> u32 { + self.len() as _ + } +} + +impl Size for () { + fn size_hint(&self) -> u32 { + 0 + } +} + +/// Pre-computed size. +pub struct PreComputedSize(pub usize); + +impl Size for PreComputedSize { + fn size_hint(&self) -> u32 { + u32::try_from(self.0).unwrap_or(u32::MAX) + } +} + +/// Era of specific transaction. +#[derive(RuntimeDebug, Clone, Copy)] +pub enum TransactionEra { + /// Transaction is immortal. + Immortal, + /// Transaction is valid for a given number of blocks, starting from given block. + Mortal(HeaderId, u32), +} + +impl, BlockHash: Copy> TransactionEra { + /// Prepare transaction era, based on mortality period and current best block number. + pub fn new( + best_block_id: HeaderId, + mortality_period: Option, + ) -> Self { + mortality_period + .map(|mortality_period| TransactionEra::Mortal(best_block_id, mortality_period)) + .unwrap_or(TransactionEra::Immortal) + } + + /// Create new immortal transaction era. + pub fn immortal() -> Self { + TransactionEra::Immortal + } + + /// Returns era that is used by FRAME-based runtimes. + pub fn frame_era(&self) -> sp_runtime::generic::Era { + match *self { + TransactionEra::Immortal => sp_runtime::generic::Era::immortal(), + TransactionEra::Mortal(header_id, period) => + sp_runtime::generic::Era::mortal(period as _, header_id.0.into()), + } + } + + /// Returns header hash that needs to be included in the signature payload. + pub fn signed_payload(&self, genesis_hash: BlockHash) -> BlockHash { + match *self { + TransactionEra::Immortal => genesis_hash, + TransactionEra::Mortal(header_id, _) => header_id.1, + } + } +} + +/// This is a copy of the +/// `frame_support::storage::generator::StorageMap::storage_map_final_key` for `Blake2_128Concat` +/// maps. +/// +/// We're using it because to call `storage_map_final_key` directly, we need access to the runtime +/// and pallet instance, which (sometimes) is impossible. +pub fn storage_map_final_key_blake2_128concat( + pallet_prefix: &str, + map_name: &str, + key: &[u8], +) -> StorageKey { + storage_map_final_key_identity( + pallet_prefix, + map_name, + &frame_support::Blake2_128Concat::hash(key), + ) +} + +/// +pub fn storage_map_final_key_twox64_concat( + pallet_prefix: &str, + map_name: &str, + key: &[u8], +) -> StorageKey { + storage_map_final_key_identity(pallet_prefix, map_name, &frame_support::Twox64Concat::hash(key)) +} + +/// This is a copy of the +/// `frame_support::storage::generator::StorageMap::storage_map_final_key` for `Identity` maps. +/// +/// We're using it because to call `storage_map_final_key` directly, we need access to the runtime +/// and pallet instance, which (sometimes) is impossible. +pub fn storage_map_final_key_identity( + pallet_prefix: &str, + map_name: &str, + key_hashed: &[u8], +) -> StorageKey { + let pallet_prefix_hashed = frame_support::Twox128::hash(pallet_prefix.as_bytes()); + let storage_prefix_hashed = frame_support::Twox128::hash(map_name.as_bytes()); + + let mut final_key = Vec::with_capacity( + pallet_prefix_hashed.len() + storage_prefix_hashed.len() + key_hashed.len(), + ); + + final_key.extend_from_slice(&pallet_prefix_hashed[..]); + final_key.extend_from_slice(&storage_prefix_hashed[..]); + final_key.extend_from_slice(key_hashed.as_ref()); + + StorageKey(final_key) +} + +/// This is how a storage key of storage parameter (`parameter_types! { storage Param: bool = false; +/// }`) is computed. +/// +/// Copied from `frame_support::parameter_types` macro +pub fn storage_parameter_key(parameter_name: &str) -> StorageKey { + let mut buffer = Vec::with_capacity(1 + parameter_name.len() + 1 + 1); + buffer.push(b':'); + buffer.extend_from_slice(parameter_name.as_bytes()); + buffer.push(b':'); + buffer.push(0); + StorageKey(sp_io::hashing::twox_128(&buffer).to_vec()) +} diff --git a/primitives/runtime/src/messages.rs b/primitives/runtime/src/messages.rs new file mode 100644 index 000000000000..7a6687c18b77 --- /dev/null +++ b/primitives/runtime/src/messages.rs @@ -0,0 +1,57 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Primitives that may be used by different message delivery and dispatch mechanisms. + +use codec::{Decode, Encode}; +use frame_support::{weights::Weight, RuntimeDebug}; +use scale_info::TypeInfo; + +/// Where message dispatch fee is paid? +#[derive(Encode, Decode, RuntimeDebug, Clone, Copy, PartialEq, Eq, TypeInfo)] +pub enum DispatchFeePayment { + /// The dispatch fee is paid at the source chain. + AtSourceChain, + /// The dispatch fee is paid at the target chain. + /// + /// The fee will be paid right before the message is dispatched. So in case of any other + /// issues (like invalid call encoding, invalid signature, ...) the dispatch module won't + /// do any direct transfers. Instead, it'll return fee related to this message dispatch to the + /// relayer. + AtTargetChain, +} + +/// Message dispatch result. +#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq, TypeInfo)] +pub struct MessageDispatchResult { + /// Dispatch result flag. This flag is relayed back to the source chain and, generally + /// speaking, may bring any (that fits in single bit) information from the dispatcher at + /// the target chain to the message submitter at the source chain. If you're using immediate + /// call dispatcher, then it'll be result of the dispatch - `true` if dispatch has succeeded + /// and `false` otherwise. + pub dispatch_result: bool, + /// Unspent dispatch weight. This weight that will be deducted from total delivery transaction + /// weight, thus reducing the transaction cost. This shall not be zero in (at least) two cases: + /// + /// 1) if message has been dispatched successfully, but post-dispatch weight is less than + /// the weight, declared by the message sender; + /// 2) if message has not been dispatched at all. + pub unspent_weight: Weight, + /// Whether the message dispatch fee has been paid during dispatch. This will be true if your + /// configuration supports pay-dispatch-fee-at-target-chain option and message sender has + /// enabled this option. + pub dispatch_fee_paid_during_dispatch: bool, +} diff --git a/bridges/primitives/runtime/src/storage_proof.rs b/primitives/runtime/src/storage_proof.rs similarity index 93% rename from bridges/primitives/runtime/src/storage_proof.rs rename to primitives/runtime/src/storage_proof.rs index d70be93b1d25..9cc5b48ebd91 100644 --- a/bridges/primitives/runtime/src/storage_proof.rs +++ b/primitives/runtime/src/storage_proof.rs @@ -42,7 +42,7 @@ where pub fn new(root: H::Out, proof: StorageProof) -> Result { let db = proof.into_memory_db(); if !db.contains(&root, EMPTY_PREFIX) { - return Err(Error::StorageRootMismatch); + return Err(Error::StorageRootMismatch) } let checker = StorageProofChecker { root, db }; @@ -52,7 +52,8 @@ where /// Reads a value from the available subset of storage. If the value cannot be read due to an /// incomplete or otherwise invalid proof, this returns an error. pub fn read_value(&self, key: &[u8]) -> Result>, Error> { - read_trie_value::, _>(&self.db, &self.root, key).map_err(|_| Error::StorageValueUnavailable) + read_trie_value::, _>(&self.db, &self.root, key) + .map_err(|_| Error::StorageValueUnavailable) } } @@ -97,7 +98,8 @@ pub mod tests { let (root, proof) = craft_valid_storage_proof(); // check proof in runtime - let checker = >::new(root, proof.clone()).unwrap(); + let checker = + >::new(root, proof.clone()).unwrap(); assert_eq!(checker.read_value(b"key1"), Ok(Some(b"value1".to_vec()))); assert_eq!(checker.read_value(b"key2"), Ok(Some(b"value2".to_vec()))); assert_eq!(checker.read_value(b"key11111"), Err(Error::StorageValueUnavailable)); diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs deleted file mode 100644 index 82a5e7ca2e03..000000000000 --- a/primitives/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot types shared between the runtime and the Node-side code. - -#![warn(missing_docs)] - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod v0; -pub mod v1; diff --git a/primitives/src/v0.rs b/primitives/src/v0.rs deleted file mode 100644 index 917bda2aa72a..000000000000 --- a/primitives/src/v0.rs +++ /dev/null @@ -1,941 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Primitives which are necessary for parachain execution from a relay-chain -//! perspective. - -use sp_std::prelude::*; -use sp_std::cmp::Ordering; - -use parity_scale_codec::{Encode, Decode}; -use bitvec::vec::BitVec; -#[cfg(feature = "std")] -use serde::{Serialize, Deserialize}; -#[cfg(feature = "std")] -use parity_util_mem::{MallocSizeOf, MallocSizeOfOps}; - -use primitives::RuntimeDebug; -use runtime_primitives::traits::{AppVerify, Block as BlockT}; -use inherents::InherentIdentifier; -use application_crypto::KeyTypeId; - -pub use runtime_primitives::traits::{BlakeTwo256, Hash as HashT, Verify, IdentifyAccount}; -pub use polkadot_core_primitives::*; -pub use parity_scale_codec::Compact; - -pub use polkadot_parachain::primitives::{ - Id, LOWEST_USER_ID, UpwardMessage, HeadData, BlockData, - ValidationCode, -}; - -/// The key type ID for a collator key. -pub const COLLATOR_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"coll"); - -/// An identifier for inherent data that provides new minimally-attested -/// parachain heads. -pub const NEW_HEADS_IDENTIFIER: InherentIdentifier = *b"newheads"; - -mod collator_app { - use application_crypto::{app_crypto, sr25519}; - app_crypto!(sr25519, super::COLLATOR_KEY_TYPE_ID); -} - -/// Identity that collators use. -pub type CollatorId = collator_app::Public; - -#[cfg(feature = "std")] -impl MallocSizeOf for CollatorId { - fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { - 0 - } - fn constant_size() -> Option { - Some(0) - } -} - -/// A Parachain collator keypair. -#[cfg(feature = "std")] -pub type CollatorPair = collator_app::Pair; - -/// Signature on candidate's block data by a collator. -pub type CollatorSignature = collator_app::Signature; - -#[cfg(feature = "std")] -impl MallocSizeOf for CollatorSignature { - fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { - 0 - } - fn constant_size() -> Option { - Some(0) - } -} - -/// The key type ID for a parachain validator key. -pub const PARACHAIN_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"para"); - -mod validator_app { - use application_crypto::{app_crypto, sr25519}; - app_crypto!(sr25519, super::PARACHAIN_KEY_TYPE_ID); -} - -/// Identity that parachain validators use when signing validation messages. -/// -/// For now we assert that parachain validator set is exactly equivalent to the authority set, and -/// so we define it to be the same type as `SessionKey`. In the future it may have different crypto. -pub type ValidatorId = validator_app::Public; - -#[cfg(feature = "std")] -impl MallocSizeOf for ValidatorId { - fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { - 0 - } - fn constant_size() -> Option { - Some(0) - } -} - -/// Index of the validator is used as a lightweight replacement of the `ValidatorId` when appropriate. -#[derive(Eq, Ord, PartialEq, PartialOrd, Copy, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Hash, MallocSizeOf))] -pub struct ValidatorIndex(pub u32); - -// We should really get https://github.com/paritytech/polkadot/issues/2403 going .. -impl From for ValidatorIndex { - fn from(n: u32) -> Self { - ValidatorIndex(n) - } -} - -application_crypto::with_pair! { - /// A Parachain validator keypair. - pub type ValidatorPair = validator_app::Pair; -} - -/// Signature with which parachain validators sign blocks. -/// -/// For now we assert that parachain validator set is exactly equivalent to the authority set, and -/// so we define it to be the same type as `SessionKey`. In the future it may have different crypto. -pub type ValidatorSignature = validator_app::Signature; - -#[cfg(feature = "std")] -impl MallocSizeOf for ValidatorSignature { - fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { - 0 - } - fn constant_size() -> Option { - Some(0) - } -} - -/// Retriability for a given active para. -#[derive(Clone, Eq, PartialEq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug))] -pub enum Retriable { - /// Ineligible for retry. This means it's either a parachain that is always scheduled anyway or - /// has been removed/swapped. - Never, - /// Eligible for retry; the associated value is the number of retries that the para already had. - WithRetries(u32), -} - -/// Type determining the active set of parachains in current block. -pub trait ActiveParas { - /// Return the active set of parachains in current block. This attempts to keep any IDs in the - /// same place between sequential blocks. It is therefore unordered. The second item in the - /// tuple is the required collator ID, if any. If `Some`, then it is invalid to include any - /// other collator's block. - /// - /// NOTE: The initial implementation simply concatenates the (ordered) set of (permanent) - /// parachain IDs with the (unordered) set of parathread IDs selected for this block. - fn active_paras() -> Vec<(Id, Option<(CollatorId, Retriable)>)>; -} - -/// Description of how often/when this parachain is scheduled for progression. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub enum Scheduling { - /// Scheduled every block. - Always, - /// Scheduled dynamically (i.e. a parathread). - Dynamic, -} - -/// Information regarding a deployed parachain/thread. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -pub struct Info { - /// Scheduling info. - pub scheduling: Scheduling, -} - -/// An `Info` value for a standard leased parachain. -pub const PARACHAIN_INFO: Info = Info { - scheduling: Scheduling::Always, -}; - -/// Auxiliary for when there's an attempt to swap two parachains/parathreads. -pub trait SwapAux { - /// Result describing whether it is possible to swap two parachains. Doesn't mutate state. - fn ensure_can_swap(one: Id, other: Id) -> Result<(), &'static str>; - - /// Updates any needed state/references to enact a logical swap of two parachains. Identity, - /// code and `head_data` remain equivalent for all parachains/threads, however other properties - /// such as leases, deposits held and thread/chain nature are swapped. - /// - /// May only be called on a state that `ensure_can_swap` has previously returned `Ok` for: if this is - /// not the case, the result is undefined. May only return an error if `ensure_can_swap` also returns - /// an error. - fn on_swap(one: Id, other: Id) -> Result<(), &'static str>; -} - -impl SwapAux for () { - fn ensure_can_swap(_: Id, _: Id) -> Result<(), &'static str> { Err("Swapping disabled") } - fn on_swap(_: Id, _: Id) -> Result<(), &'static str> { Err("Swapping disabled") } -} - -/// Identifier for a chain, either one of a number of parachains or the relay chain. -#[derive(Copy, Clone, PartialEq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug))] -pub enum Chain { - /// The relay chain. - Relay, - /// A parachain of the given index. - Parachain(Id), -} - -/// The duty roster specifying what jobs each validator must do. -#[derive(Clone, PartialEq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Default, Debug))] -pub struct DutyRoster { - /// Lookup from validator index to chain on which that validator has a duty to validate. - pub validator_duty: Vec, -} - -/// Extra data that is needed along with the other fields in a `CandidateReceipt` -/// to fully validate the candidate. -/// -/// These are global parameters that apply to all parachain candidates in a block. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct GlobalValidationData { - /// The maximum code size permitted, in bytes. - pub max_code_size: u32, - /// The maximum head-data size permitted, in bytes. - pub max_head_data_size: u32, - /// The relay-chain block number this is in the context of. - pub block_number: N, -} - -/// Extra data that is needed along with the other fields in a `CandidateReceipt` -/// to fully validate the candidate. These fields are parachain-specific. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct LocalValidationData { - /// The parent head-data. - pub parent_head: HeadData, - /// The balance of the parachain at the moment of validation. - pub balance: Balance, - /// Whether the parachain is allowed to upgrade its validation code. - /// - /// This is `Some` if so, and contains the number of the minimum relay-chain - /// height at which the upgrade will be applied, if an upgrade is signaled - /// now. - /// - /// A parachain should enact its side of the upgrade at the end of the first - /// parablock executing in the context of a relay-chain block with at least this - /// height. This may be equal to the current perceived relay-chain block height, in - /// which case the code upgrade should be applied at the end of the signaling - /// block. - pub code_upgrade_allowed: Option, -} - -/// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct CandidateCommitments { - /// Fees paid from the chain to the relay chain validators. - pub fees: Balance, - /// Messages destined to be interpreted by the Relay chain itself. - pub upward_messages: Vec, - /// The root of a block's erasure encoding Merkle tree. - pub erasure_root: H, - /// New validation code. - pub new_validation_code: Option, - /// Number of `DownwardMessage`'s that were processed by the Parachain. - /// - /// It is expected that the Parachain processes them from first to last. - pub processed_downward_messages: u32, -} - -/// Get a collator signature payload on a relay-parent, block-data combo. -pub fn collator_signature_payload>( - relay_parent: &H, - parachain_index: &Id, - pov_block_hash: &H, -) -> [u8; 68] { - // 32-byte hash length is protected in a test below. - let mut payload = [0u8; 68]; - - payload[0..32].copy_from_slice(relay_parent.as_ref()); - u32::from(*parachain_index).using_encoded(|s| payload[32..32 + s.len()].copy_from_slice(s)); - payload[36..68].copy_from_slice(pov_block_hash.as_ref()); - - payload -} - -fn check_collator_signature>( - relay_parent: &H, - parachain_index: &Id, - pov_block_hash: &H, - collator: &CollatorId, - signature: &CollatorSignature, -) -> Result<(),()> { - let payload = collator_signature_payload(relay_parent, parachain_index, pov_block_hash); - if signature.verify(&payload[..], collator) { - Ok(()) - } else { - Err(()) - } -} - -/// All data pertaining to the execution of a parachain candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct CandidateReceipt { - /// The ID of the parachain this is a candidate for. - pub parachain_index: Id, - /// The hash of the relay-chain block this should be executed in - /// the context of. - pub relay_parent: H, - /// The head-data - pub head_data: HeadData, - /// The collator's relay-chain account ID - pub collator: CollatorId, - /// Signature on blake2-256 of the block data by collator. - pub signature: CollatorSignature, - /// The hash of the PoV-block. - pub pov_block_hash: H, - /// The global validation schedule. - pub global_validation: GlobalValidationData, - /// The local validation data. - pub local_validation: LocalValidationData, - /// Commitments made as a result of validation. - pub commitments: CandidateCommitments, -} - -impl, N> CandidateReceipt { - /// Check integrity vs. provided block data. - pub fn check_signature(&self) -> Result<(), ()> { - check_collator_signature( - &self.relay_parent, - &self.parachain_index, - &self.pov_block_hash, - &self.collator, - &self.signature, - ) - } - - /// Abridge this `CandidateReceipt`, splitting it into an `AbridgedCandidateReceipt` - /// and its omitted component. - pub fn abridge(self) -> (AbridgedCandidateReceipt, OmittedValidationData) { - let CandidateReceipt { - parachain_index, - relay_parent, - head_data, - collator, - signature, - pov_block_hash, - global_validation, - local_validation, - commitments, - } = self; - - let abridged = AbridgedCandidateReceipt { - parachain_index, - relay_parent, - head_data, - collator, - signature, - pov_block_hash, - commitments, - }; - - let omitted = OmittedValidationData { - global_validation, - local_validation, - }; - - (abridged, omitted) - } -} - -impl PartialOrd for CandidateReceipt { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } -} - -impl Ord for CandidateReceipt { - fn cmp(&self, other: &Self) -> Ordering { - // TODO: compare signatures or something more sane - // https://github.com/paritytech/polkadot/issues/222 - self.parachain_index.cmp(&other.parachain_index) - .then_with(|| self.head_data.cmp(&other.head_data)) - } -} - -/// All the data which is omitted in an `AbridgedCandidateReceipt`, but that -/// is necessary for validation of the parachain candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct OmittedValidationData { - /// The global validation schedule. - pub global_validation: GlobalValidationData, - /// The local validation data. - pub local_validation: LocalValidationData, -} - -/// An abridged candidate-receipt. -/// -/// Much info in a candidate-receipt is duplicated from the relay-chain state. -/// When submitting to the relay-chain, this data should be omitted as it can -/// be re-generated from relay-chain state. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct AbridgedCandidateReceipt { - /// The ID of the parachain this is a candidate for. - pub parachain_index: Id, - /// The hash of the relay-chain block this should be executed in - /// the context of. - // NOTE: the fact that the hash includes this value means that code depends - // on this for deduplication. Removing this field is likely to break things. - pub relay_parent: H, - /// The head-data - pub head_data: HeadData, - /// The collator's relay-chain account ID - pub collator: CollatorId, - /// Signature on blake2-256 of the block data by collator. - pub signature: CollatorSignature, - /// The hash of the pov-block. - pub pov_block_hash: H, - /// Commitments made as a result of validation. - pub commitments: CandidateCommitments, -} - -/// A candidate-receipt with commitments directly included. -pub struct CommitedCandidateReceipt { - /// The descriptor of the candidate. - pub descriptor: CandidateDescriptor, - - /// The commitments of the candidate receipt. - pub commitments: CandidateCommitments -} - -impl + Encode> AbridgedCandidateReceipt { - /// Check integrity vs. provided block data. - pub fn check_signature(&self) -> Result<(), ()> { - check_collator_signature( - &self.relay_parent, - &self.parachain_index, - &self.pov_block_hash, - &self.collator, - &self.signature, - ) - } - - /// Compute the hash of the abridged candidate receipt. - /// - /// This is often used as the canonical hash of the receipt, rather than - /// the hash of the full receipt. The reason being that all data in the full - /// receipt is committed to in the abridged receipt; this receipt references - /// the relay-chain block in which context it should be executed, which implies - /// any blockchain state that must be referenced. - pub fn hash(&self) -> Hash { - BlakeTwo256::hash_of(self) - } -} - -impl AbridgedCandidateReceipt { - /// Combine the abridged candidate receipt with the omitted data, - /// forming a full `CandidateReceipt`. - pub fn complete(self, omitted: OmittedValidationData) -> CandidateReceipt { - let AbridgedCandidateReceipt { - parachain_index, - relay_parent, - head_data, - collator, - signature, - pov_block_hash, - commitments, - } = self; - - let OmittedValidationData { - global_validation, - local_validation, - } = omitted; - - CandidateReceipt { - parachain_index, - relay_parent, - head_data, - collator, - signature, - pov_block_hash, - local_validation, - global_validation, - commitments, - } - } - - /// Clone the relevant portions of the `CandidateReceipt` to form a `CollationInfo`. - pub fn to_collation_info(&self) -> CollationInfo { - let AbridgedCandidateReceipt { - parachain_index, - relay_parent, - head_data, - collator, - signature, - pov_block_hash, - commitments: _commitments, - } = self; - - CollationInfo { - parachain_index: *parachain_index, - relay_parent: *relay_parent, - head_data: head_data.clone(), - collator: collator.clone(), - signature: signature.clone(), - pov_block_hash: *pov_block_hash, - } - } - - /// Clone the relevant portions of the `AbridgedCandidateReceipt` to form a `CandidateDescriptor`. - pub fn to_descriptor(&self) -> CandidateDescriptor { - CandidateDescriptor { - para_id: self.parachain_index, - relay_parent: self.relay_parent, - collator: self.collator.clone(), - signature: self.signature.clone(), - pov_hash: self.pov_block_hash.clone(), - } - } -} - -impl PartialOrd for AbridgedCandidateReceipt { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } -} - -impl Ord for AbridgedCandidateReceipt { - fn cmp(&self, other: &Self) -> Ordering { - // TODO: compare signatures or something more sane - // https://github.com/paritytech/polkadot/issues/222 - self.parachain_index.cmp(&other.parachain_index) - .then_with(|| self.head_data.cmp(&other.head_data)) - } -} - -/// A unique descriptor of the candidate receipt, in a lightweight format. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct CandidateDescriptor { - /// The ID of the para this is a candidate for. - pub para_id: Id, - /// The hash of the relay-chain block this should be executed in - /// the context of. - // NOTE: the fact that the hash includes this value means that code depends - // on this for deduplication. Removing this field is likely to break things. - pub relay_parent: H, - /// The collator's relay-chain account ID - pub collator: CollatorId, - /// Signature on blake2-256 of components of this receipt: - /// The para ID, the relay parent, and the pov_hash. - pub signature: CollatorSignature, - /// The hash of the pov-block. - pub pov_hash: H, -} - -/// A collation sent by a collator. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct CollationInfo { - /// The ID of the parachain this is a candidate for. - pub parachain_index: Id, - /// The relay-chain block hash this block should execute in the - /// context of. - pub relay_parent: Hash, - /// The collator's relay-chain account ID - pub collator: CollatorId, - /// Signature on blake2-256 of the block data by collator. - pub signature: CollatorSignature, - /// The head-data - pub head_data: HeadData, - /// blake2-256 Hash of the pov-block - pub pov_block_hash: Hash, -} - -impl CollationInfo { - /// Check integrity vs. a pov-block. - pub fn check_signature(&self) -> Result<(), ()> { - check_collator_signature( - &self.relay_parent, - &self.parachain_index, - &self.pov_block_hash, - &self.collator, - &self.signature, - ) - } - - /// Turn this into an `AbridgedCandidateReceipt` by supplying a set of commitments. - pub fn into_receipt(self, commitments: CandidateCommitments) -> AbridgedCandidateReceipt { - let CollationInfo { - parachain_index, - relay_parent, - collator, - signature, - head_data, - pov_block_hash, - } = self; - - AbridgedCandidateReceipt { - parachain_index, - relay_parent, - collator, - signature, - head_data, - pov_block_hash, - commitments, - } - } -} - -/// A full collation. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] -pub struct Collation { - /// Candidate receipt itself. - pub info: CollationInfo, - /// A proof-of-validation for the receipt. - pub pov: PoVBlock, -} - -/// A Proof-of-Validation block. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] -pub struct PoVBlock { - /// Block data. - pub block_data: BlockData, -} - -impl PoVBlock { - /// Compute hash of block data. - #[cfg(feature = "std")] - pub fn hash(&self) -> Hash { - BlakeTwo256::hash_of(&self) - } -} - -/// The data that is kept available about a particular parachain block. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] -pub struct AvailableData { - /// The PoV block. - pub pov_block: PoVBlock, - /// Data that is omitted from an abridged candidate receipt - /// that is necessary for validation. - pub omitted_validation: OmittedValidationData, - // In the future, outgoing messages as well. -} - -const BACKING_STATEMENT_MAGIC: [u8; 4] = *b"BKNG"; - -/// Statements that can be made about parachain candidates. These are the -/// actual values that are signed. -#[derive(Clone, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug, Hash))] -pub enum CompactStatement { - /// Proposal of a parachain candidate. - Seconded(CandidateHash), - /// State that a parachain candidate is valid. - Valid(CandidateHash), -} - -impl CompactStatement { - /// Yields the payload used for validator signatures on this kind - /// of statement. - pub fn signing_payload(&self, context: &SigningContext) -> Vec { - (self, context).encode() - } -} - -// Inner helper for codec on `CompactStatement`. -#[derive(Encode, Decode)] -enum CompactStatementInner { - #[codec(index = 1)] - Seconded(CandidateHash), - #[codec(index = 2)] - Valid(CandidateHash), -} - -impl From for CompactStatementInner { - fn from(s: CompactStatement) -> Self { - match s { - CompactStatement::Seconded(h) => CompactStatementInner::Seconded(h), - CompactStatement::Valid(h) => CompactStatementInner::Valid(h), - } - } -} - -impl parity_scale_codec::Encode for CompactStatement { - fn size_hint(&self) -> usize { - // magic + discriminant + payload - 4 + 1 + 32 - } - - fn encode_to(&self, dest: &mut T) { - dest.write(&BACKING_STATEMENT_MAGIC); - CompactStatementInner::from(self.clone()).encode_to(dest) - } -} - -impl parity_scale_codec::Decode for CompactStatement { - fn decode(input: &mut I) -> Result { - let maybe_magic = <[u8; 4]>::decode(input)?; - if maybe_magic != BACKING_STATEMENT_MAGIC { - return Err(parity_scale_codec::Error::from("invalid magic string")); - } - - Ok(match CompactStatementInner::decode(input)? { - CompactStatementInner::Seconded(h) => CompactStatement::Seconded(h), - CompactStatementInner::Valid(h) => CompactStatement::Valid(h), - }) - } -} - -impl CompactStatement { - /// Get the underlying candidate hash this references. - pub fn candidate_hash(&self) -> &CandidateHash { - match *self { - CompactStatement::Seconded(ref h) | CompactStatement::Valid(ref h) => h, - } - } -} - -/// An either implicit or explicit attestation to the validity of a parachain -/// candidate. -#[derive(Clone, Eq, PartialEq, Decode, Encode, RuntimeDebug)] -pub enum ValidityAttestation { - /// Implicit validity attestation by issuing. - /// This corresponds to issuance of a `Candidate` statement. - #[codec(index = 1)] - Implicit(ValidatorSignature), - /// An explicit attestation. This corresponds to issuance of a - /// `Valid` statement. - #[codec(index = 2)] - Explicit(ValidatorSignature), -} - -impl ValidityAttestation { - /// Get a reference to the signature. - pub fn signature(&self) -> &ValidatorSignature { - match *self { - ValidityAttestation::Implicit(ref sig) => sig, - ValidityAttestation::Explicit(ref sig) => sig, - } - } - - /// Produce the underlying signed payload of the attestation, given the hash of the candidate, - /// which should be known in context. - pub fn signed_payload( - &self, - candidate_hash: CandidateHash, - signing_context: &SigningContext, - ) -> Vec { - match *self { - ValidityAttestation::Implicit(_) => ( - CompactStatement::Seconded(candidate_hash), - signing_context, - ).encode(), - ValidityAttestation::Explicit(_) => ( - CompactStatement::Valid(candidate_hash), - signing_context, - ).encode(), - } - } -} - -/// A type returned by runtime with current session index and a parent hash. -#[derive(Clone, Eq, PartialEq, Default, Decode, Encode, RuntimeDebug)] -pub struct SigningContext { - /// Current session index. - pub session_index: sp_staking::SessionIndex, - /// Hash of the parent. - pub parent_hash: H, -} - -/// An attested candidate. This is submitted to the relay chain by a block author. -#[derive(Clone, PartialEq, Decode, Encode, RuntimeDebug)] -pub struct AttestedCandidate { - /// The candidate data. This is abridged, because the omitted data - /// is already present within the relay chain state. - pub candidate: AbridgedCandidateReceipt, - /// Validity attestations. - pub validity_votes: Vec, - /// Indices of the corresponding validity votes. - pub validator_indices: BitVec, -} - -impl AttestedCandidate { - /// Get the candidate. - pub fn candidate(&self) -> &AbridgedCandidateReceipt { - &self.candidate - } - - /// Get the group ID of the candidate. - pub fn parachain_index(&self) -> Id { - self.candidate.parachain_index - } -} - -/// A fee schedule for messages. This is a linear function in the number of bytes of a message. -#[derive(PartialEq, Eq, PartialOrd, Hash, Default, Clone, Copy, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct FeeSchedule { - /// The base fee charged for all messages. - pub base: Balance, - /// The per-byte fee for messages charged on top of that. - pub per_byte: Balance, -} - -impl FeeSchedule { - /// Compute the fee for a message of given size. - pub fn compute_message_fee(&self, n_bytes: usize) -> Balance { - use sp_std::mem; - debug_assert!(mem::size_of::() >= mem::size_of::()); - - let n_bytes = n_bytes as Balance; - self.base.saturating_add(n_bytes.saturating_mul(self.per_byte)) - } -} - -sp_api::decl_runtime_apis! { - /// The API for querying the state of parachains on-chain. - #[api_version(3)] - pub trait ParachainHost { - /// Get the current validators. - fn validators() -> Vec; - /// Get the current duty roster. - fn duty_roster() -> DutyRoster; - /// Get the currently active parachains. - fn active_parachains() -> Vec<(Id, Option<(CollatorId, Retriable)>)>; - /// Get the global validation schedule that all parachains should - /// be validated under. - fn global_validation_data() -> GlobalValidationData; - /// Get the local validation data for a particular parachain. - fn local_validation_data(id: Id) -> Option; - /// Get the given parachain's head code blob. - fn parachain_code(id: Id) -> Option; - /// Extract the abridged head that was set in the extrinsics. - fn get_heads(extrinsics: Vec<::Extrinsic>) - -> Option>; - /// Get a `SigningContext` with current `SessionIndex` and parent hash. - fn signing_context() -> SigningContext; - /// Get the `DownwardMessage`'s for the given parachain. - fn downward_messages(id: Id) -> Vec; - } -} - -/// Runtime ID module. -pub mod id { - use sp_version::ApiId; - - /// Parachain host runtime API id. - pub const PARACHAIN_HOST: ApiId = *b"parahost"; -} - -/// Custom validity errors used in Polkadot while validating transactions. -#[repr(u8)] -pub enum ValidityError { - /// The Ethereum signature is invalid. - InvalidEthereumSignature = 0, - /// The signer has no claim. - SignerHasNoClaim = 1, - /// No permission to execute the call. - NoPermission = 2, - /// An invalid statement was made for a claim. - InvalidStatement = 3, -} - -impl From for u8 { - fn from(err: ValidityError) -> Self { - err as u8 - } -} - -/// App-specific crypto used for reporting equivocation/misbehavior in BABE, -/// GRANDPA and Parachains, described in the white paper as the fisherman role. -/// Any rewards for misbehavior reporting will be paid out to this account. -pub mod fisherman { - use super::{Signature, Verify}; - use primitives::crypto::KeyTypeId; - - /// Key type for the reporting module. Used for reporting BABE, GRANDPA - /// and Parachain equivocations. - pub const KEY_TYPE: KeyTypeId = KeyTypeId(*b"fish"); - - mod app { - use application_crypto::{app_crypto, sr25519}; - app_crypto!(sr25519, super::KEY_TYPE); - } - - /// Identity of the equivocation/misbehavior reporter. - pub type FishermanId = app::Public; - - /// An `AppCrypto` type to allow submitting signed transactions using the fisherman - /// application key as signer. - pub struct FishermanAppCrypto; - impl frame_system::offchain::AppCrypto<::Signer, Signature> for FishermanAppCrypto { - type RuntimeAppPublic = FishermanId; - type GenericSignature = primitives::sr25519::Signature; - type GenericPublic = primitives::sr25519::Public; - } -} - - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn balance_bigger_than_usize() { - let zero_b: Balance = 0; - let zero_u: usize = 0; - - assert!(zero_b.leading_zeros() >= zero_u.leading_zeros()); - } - - #[test] - fn collator_signature_payload_is_valid() { - // if this fails, collator signature verification code has to be updated. - let h = Hash::default(); - assert_eq!(h.as_ref().len(), 32); - - let _payload = collator_signature_payload( - &Hash::repeat_byte(1), - &5u32.into(), - &Hash::repeat_byte(2), - ); - } -} diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs deleted file mode 100644 index 2f9fdfe5f084..000000000000 --- a/primitives/src/v1/mod.rs +++ /dev/null @@ -1,1332 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! V1 Primitives. - -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use parity_scale_codec::{Encode, Decode}; -use bitvec::vec::BitVec; - -use primitives::RuntimeDebug; -use runtime_primitives::traits::{AppVerify, Header as HeaderT}; -use inherents::InherentIdentifier; -use sp_arithmetic::traits::{BaseArithmetic, Saturating}; -use application_crypto::KeyTypeId; - -pub use runtime_primitives::traits::{BlakeTwo256, Hash as HashT}; - -// Export some core primitives. -pub use polkadot_core_primitives::v1::{ - BlockNumber, Moment, Signature, AccountPublic, AccountId, AccountIndex, ChainId, Hash, Nonce, - Balance, Header, Block, BlockId, UncheckedExtrinsic, Remark, DownwardMessage, - InboundDownwardMessage, CandidateHash, InboundHrmpMessage, OutboundHrmpMessage, -}; - -// Export some polkadot-parachain primitives -pub use polkadot_parachain::primitives::{ - Id, LOWEST_USER_ID, LOWEST_PUBLIC_ID, HrmpChannelId, UpwardMessage, HeadData, ValidationCode, ValidationCodeHash, -}; - -// Export some basic parachain primitives from v0. -pub use crate::v0::{ - CollatorId, CollatorSignature, PARACHAIN_KEY_TYPE_ID, ValidatorId, ValidatorIndex, - ValidatorSignature, SigningContext, ValidityAttestation, - CompactStatement, -}; - -#[cfg(feature = "std")] -use parity_util_mem::{MallocSizeOf, MallocSizeOfOps}; - -// More exports from v0 for std. -#[cfg(feature = "std")] -pub use crate::v0::{ValidatorPair, CollatorPair}; - -pub use sp_staking::SessionIndex; -pub use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -pub use sp_consensus_slots::Slot; - -/// Signed data. -mod signed; -pub use signed::{Signed, UncheckedSigned, EncodeAs}; - -/// A declarations of storage keys where an external observer can find some interesting data. -pub mod well_known_keys { - use super::{Id, HrmpChannelId}; - use hex_literal::hex; - use sp_io::hashing::twox_64; - use sp_std::prelude::*; - use parity_scale_codec::Encode as _; - - // A note on generating these magic values below: - // - // The `StorageValue`, such as `ACTIVE_CONFIG` was obtained by calling: - // - // ::ActiveConfig::hashed_key() - // - // The `StorageMap` values require `prefix`, and for example for `hrmp_egress_channel_index`, - // it could be obtained like: - // - // ::HrmpEgressChannelsIndex::prefix_hash(); - // - - /// The current slot number. - /// - /// The storage entry should be accessed as a `Slot` encoded value. - pub const CURRENT_SLOT: &[u8] = - &hex!["1cb6f36e027abb2091cfb5110ab5087f06155b3cd9a8c9e5e9a23fd5dc13a5ed"]; - - /// The currently active host configuration. - /// - /// The storage entry should be accessed as an `AbridgedHostConfiguration` encoded value. - pub const ACTIVE_CONFIG: &[u8] = - &hex!["06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385"]; - - /// The upward message dispatch queue for the given para id. - /// - /// The storage entry stores a tuple of two values: - /// - /// - `count: u32`, the number of messages currently in the queue for given para, - /// - `total_size: u32`, the total size of all messages in the queue. - pub fn relay_dispatch_queue_size(para_id: Id) -> Vec { - let prefix = hex!["f5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e"]; - - para_id.using_encoded(|para_id: &[u8]| { - prefix.as_ref() - .iter() - .chain(twox_64(para_id).iter()) - .chain(para_id.iter()) - .cloned() - .collect() - }) - } - - /// The hrmp channel for the given identifier. - /// - /// The storage entry should be accessed as an `AbridgedHrmpChannel` encoded value. - pub fn hrmp_channels(channel: HrmpChannelId) -> Vec { - let prefix = hex!["6a0da05ca59913bc38a8630590f2627cb6604cff828a6e3f579ca6c59ace013d"]; - - channel.using_encoded(|channel: &[u8]| { - prefix.as_ref() - .iter() - .chain(twox_64(channel).iter()) - .chain(channel.iter()) - .cloned() - .collect() - }) - } - - /// The list of inbound channels for the given para. - /// - /// The storage entry stores a `Vec` - pub fn hrmp_ingress_channel_index(para_id: Id) -> Vec { - let prefix = hex!["6a0da05ca59913bc38a8630590f2627c1d3719f5b0b12c7105c073c507445948"]; - - para_id.using_encoded(|para_id: &[u8]| { - prefix.as_ref() - .iter() - .chain(twox_64(para_id).iter()) - .chain(para_id.iter()) - .cloned() - .collect() - }) - } - - /// The list of outbound channels for the given para. - /// - /// The storage entry stores a `Vec` - pub fn hrmp_egress_channel_index(para_id: Id) -> Vec { - let prefix = hex!["6a0da05ca59913bc38a8630590f2627cf12b746dcf32e843354583c9702cc020"]; - - para_id.using_encoded(|para_id: &[u8]| { - prefix.as_ref() - .iter() - .chain(twox_64(para_id).iter()) - .chain(para_id.iter()) - .cloned() - .collect() - }) - } - - /// The MQC head for the downward message queue of the given para. See more in the `Dmp` module. - /// - /// The storage entry stores a `Hash`. This is polkadot hash which is at the moment - /// `blake2b-256`. - pub fn dmq_mqc_head(para_id: Id) -> Vec { - let prefix = hex!["63f78c98723ddc9073523ef3beefda0c4d7fefc408aac59dbfe80a72ac8e3ce5"]; - - para_id.using_encoded(|para_id: &[u8]| { - prefix.as_ref() - .iter() - .chain(twox_64(para_id).iter()) - .chain(para_id.iter()) - .cloned() - .collect() - }) - } -} - - -/// Unique identifier for the Parachains Inherent -pub const PARACHAINS_INHERENT_IDENTIFIER: InherentIdentifier = *b"parachn0"; - -/// The key type ID for parachain assignment key. -pub const ASSIGNMENT_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"asgn"); - -/// Maximum compressed code size we support right now. -/// At the moment we have runtime upgrade on chain, which restricts scalability severely. If we want -/// to have bigger values, we should fix that first. -/// -/// Used for: -/// * initial genesis for the Parachains configuration -/// * checking updates to this stored runtime configuration do not exceed this limit -/// * when detecting a code decompression bomb in the client -pub const MAX_CODE_SIZE: u32 = 3 * 1024 * 1024; - -/// Maximum PoV size we support right now. -/// -/// Used for: -/// * initial genesis for the Parachains configuration -/// * checking updates to this stored runtime configuration do not exceed this limit -/// * when detecting a PoV decompression bomb in the client -pub const MAX_POV_SIZE: u32 = 5 * 1024 * 1024; - -// The public key of a keypair used by a validator for determining assignments -/// to approve included parachain candidates. -mod assignment_app { - use application_crypto::{app_crypto, sr25519}; - app_crypto!(sr25519, super::ASSIGNMENT_KEY_TYPE_ID); -} - -/// The public key of a keypair used by a validator for determining assignments -/// to approve included parachain candidates. -pub type AssignmentId = assignment_app::Public; - -application_crypto::with_pair! { - /// The full keypair used by a validator for determining assignments to approve included - /// parachain candidates. - pub type AssignmentPair = assignment_app::Pair; -} - -#[cfg(feature = "std")] -impl MallocSizeOf for AssignmentId { - fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { - 0 - } - fn constant_size() -> Option { - Some(0) - } -} - -/// The index of the candidate in the list of candidates fully included as-of the block. -pub type CandidateIndex = u32; - -/// Get a collator signature payload on a relay-parent, block-data combo. -pub fn collator_signature_payload>( - relay_parent: &H, - para_id: &Id, - persisted_validation_data_hash: &Hash, - pov_hash: &Hash, - validation_code_hash: &ValidationCodeHash, -) -> [u8; 132] { - // 32-byte hash length is protected in a test below. - let mut payload = [0u8; 132]; - - payload[0..32].copy_from_slice(relay_parent.as_ref()); - u32::from(*para_id).using_encoded(|s| payload[32..32 + s.len()].copy_from_slice(s)); - payload[36..68].copy_from_slice(persisted_validation_data_hash.as_ref()); - payload[68..100].copy_from_slice(pov_hash.as_ref()); - payload[100..132].copy_from_slice(validation_code_hash.as_ref()); - - payload -} - -fn check_collator_signature>( - relay_parent: &H, - para_id: &Id, - persisted_validation_data_hash: &Hash, - pov_hash: &Hash, - validation_code_hash: &ValidationCodeHash, - collator: &CollatorId, - signature: &CollatorSignature, -) -> Result<(), ()> { - let payload = collator_signature_payload( - relay_parent, - para_id, - persisted_validation_data_hash, - pov_hash, - validation_code_hash, - ); - - if signature.verify(&payload[..], collator) { - Ok(()) - } else { - Err(()) - } -} - -/// A unique descriptor of the candidate receipt. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] -pub struct CandidateDescriptor { - /// The ID of the para this is a candidate for. - pub para_id: Id, - /// The hash of the relay-chain block this is executed in the context of. - pub relay_parent: H, - /// The collator's sr25519 public key. - pub collator: CollatorId, - /// The blake2-256 hash of the persisted validation data. This is extra data derived from - /// relay-chain state which may vary based on bitfields included before the candidate. - /// Thus it cannot be derived entirely from the relay-parent. - pub persisted_validation_data_hash: Hash, - /// The blake2-256 hash of the pov. - pub pov_hash: Hash, - /// The root of a block's erasure encoding Merkle tree. - pub erasure_root: Hash, - /// Signature on blake2-256 of components of this receipt: - /// The parachain index, the relay parent, the validation data hash, and the pov_hash. - pub signature: CollatorSignature, - /// Hash of the para header that is being generated by this candidate. - pub para_head: Hash, - /// The blake2-256 hash of the validation code bytes. - pub validation_code_hash: ValidationCodeHash, -} - -impl> CandidateDescriptor { - /// Check the signature of the collator within this descriptor. - pub fn check_collator_signature(&self) -> Result<(), ()> { - check_collator_signature( - &self.relay_parent, - &self.para_id, - &self.persisted_validation_data_hash, - &self.pov_hash, - &self.validation_code_hash, - &self.collator, - &self.signature, - ) - } -} - -/// A candidate-receipt. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default, MallocSizeOf))] -pub struct CandidateReceipt { - /// The descriptor of the candidate. - pub descriptor: CandidateDescriptor, - /// The hash of the encoded commitments made as a result of candidate execution. - pub commitments_hash: Hash, -} - -impl CandidateReceipt { - /// Get a reference to the candidate descriptor. - pub fn descriptor(&self) -> &CandidateDescriptor { - &self.descriptor - } - - /// Computes the blake2-256 hash of the receipt. - pub fn hash(&self) -> CandidateHash where H: Encode { - CandidateHash(BlakeTwo256::hash_of(self)) - } -} - -/// All data pertaining to the execution of a para candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct FullCandidateReceipt { - /// The inner candidate receipt. - pub inner: CandidateReceipt, - /// The validation data derived from the relay-chain state at that - /// point. The hash of the persisted validation data should - /// match the `persisted_validation_data_hash` in the descriptor - /// of the receipt. - pub validation_data: PersistedValidationData, -} - -/// A candidate-receipt with commitments directly included. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] -pub struct CommittedCandidateReceipt { - /// The descriptor of the candidate. - pub descriptor: CandidateDescriptor, - /// The commitments of the candidate receipt. - pub commitments: CandidateCommitments, -} - -impl CommittedCandidateReceipt { - /// Get a reference to the candidate descriptor. - pub fn descriptor(&self) -> &CandidateDescriptor { - &self.descriptor - } -} - -impl CommittedCandidateReceipt { - /// Transforms this into a plain CandidateReceipt. - pub fn to_plain(&self) -> CandidateReceipt { - CandidateReceipt { - descriptor: self.descriptor.clone(), - commitments_hash: self.commitments.hash(), - } - } - - /// Computes the hash of the committed candidate receipt. - /// - /// This computes the canonical hash, not the hash of the directly encoded data. - /// Thus this is a shortcut for `candidate.to_plain().hash()`. - pub fn hash(&self) -> CandidateHash where H: Encode { - self.to_plain().hash() - } - - /// Does this committed candidate receipt corresponds to the given [`CandidateReceipt`]? - pub fn corresponds_to(&self, receipt: &CandidateReceipt) -> bool where H: PartialEq { - receipt.descriptor == self.descriptor && receipt.commitments_hash == self.commitments.hash() - } -} - -impl PartialOrd for CommittedCandidateReceipt { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } -} - -impl Ord for CommittedCandidateReceipt { - fn cmp(&self, other: &Self) -> sp_std::cmp::Ordering { - // TODO: compare signatures or something more sane - // https://github.com/paritytech/polkadot/issues/222 - self.descriptor().para_id.cmp(&other.descriptor().para_id) - .then_with(|| self.commitments.head_data.cmp(&other.commitments.head_data)) - } -} - -/// The validation data provides information about how to create the inputs for validation of a candidate. -/// This information is derived from the chain state and will vary from para to para, although some -/// fields may be the same for every para. -/// -/// Since this data is used to form inputs to the validation function, it needs to be persisted by the -/// availability system to avoid dependence on availability of the relay-chain state. -/// -/// Furthermore, the validation data acts as a way to authorize the additional data the collator needs -/// to pass to the validation function. For example, the validation function can check whether the incoming -/// messages (e.g. downward messages) were actually sent by using the data provided in the validation data -/// using so called MQC heads. -/// -/// Since the commitments of the validation function are checked by the relay-chain, secondary checkers -/// can rely on the invariant that the relay-chain only includes para-blocks for which these checks have -/// already been done. As such, there is no need for the validation data used to inform validators and -/// collators about the checks the relay-chain will perform to be persisted by the availability system. -/// -/// The `PersistedValidationData` should be relatively lightweight primarily because it is constructed -/// during inclusion for each candidate and therefore lies on the critical path of inclusion. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default, MallocSizeOf))] -pub struct PersistedValidationData { - /// The parent head-data. - pub parent_head: HeadData, - /// The relay-chain block number this is in the context of. - pub relay_parent_number: N, - /// The relay-chain block storage root this is in the context of. - pub relay_parent_storage_root: H, - /// The maximum legal size of a POV block, in bytes. - pub max_pov_size: u32, -} - -impl PersistedValidationData { - /// Compute the blake2-256 hash of the persisted validation data. - pub fn hash(&self) -> Hash { - BlakeTwo256::hash_of(self) - } -} - -/// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] -pub struct CandidateCommitments { - /// Messages destined to be interpreted by the Relay chain itself. - pub upward_messages: Vec, - /// Horizontal messages sent by the parachain. - pub horizontal_messages: Vec>, - /// New validation code. - pub new_validation_code: Option, - /// The head-data produced as a result of execution. - pub head_data: HeadData, - /// The number of messages processed from the DMQ. - pub processed_downward_messages: u32, - /// The mark which specifies the block number up to which all inbound HRMP messages are processed. - pub hrmp_watermark: N, -} - -impl CandidateCommitments { - /// Compute the blake2-256 hash of the commitments. - pub fn hash(&self) -> Hash { - BlakeTwo256::hash_of(self) - } -} - - -/// A bitfield concerning availability of backed candidates. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub struct AvailabilityBitfield(pub BitVec); - -impl From> for AvailabilityBitfield { - fn from(inner: BitVec) -> Self { - AvailabilityBitfield(inner) - } -} - - -/// A signed compact statement, suitable to be sent to the chain. -pub type SignedStatement = Signed; - -/// A bitfield signed by a particular validator about the availability of pending candidates. -pub type SignedAvailabilityBitfield = Signed; -/// A signed bitfield with signature not yet checked. -pub type UncheckedSignedAvailabilityBitfield = UncheckedSigned; - -/// A set of signed availability bitfields. Should be sorted by validator index, ascending. -pub type SignedAvailabilityBitfields = Vec; -/// A set of unchecked signed availability bitfields. Should be sorted by validator index, ascending. -pub type UncheckedSignedAvailabilityBitfields = Vec; - -/// A backed (or backable, depending on context) candidate. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Default))] -pub struct BackedCandidate { - /// The candidate referred to. - pub candidate: CommittedCandidateReceipt, - /// The validity votes themselves, expressed as signatures. - pub validity_votes: Vec, - /// The indices of the validators within the group, expressed as a bitfield. - pub validator_indices: BitVec, -} - -impl BackedCandidate { - /// Get a reference to the descriptor of the para. - pub fn descriptor(&self) -> &CandidateDescriptor { - &self.candidate.descriptor - } - - /// Compute this candidate's hash. - pub fn hash(&self) -> CandidateHash where H: Clone + Encode { - self.candidate.hash() - } - - /// Get this candidate's receipt. - pub fn receipt(&self) -> CandidateReceipt where H: Clone { - self.candidate.to_plain() - } -} - -/// Verify the backing of the given candidate. -/// -/// Provide a lookup from the index of a validator within the group assigned to this para, -/// as opposed to the index of the validator within the overall validator set, as well as -/// the number of validators in the group. -/// -/// Also provide the signing context. -/// -/// Returns either an error, indicating that one of the signatures was invalid or that the index -/// was out-of-bounds, or the number of signatures checked. -pub fn check_candidate_backing + Clone + Encode>( - backed: &BackedCandidate, - signing_context: &SigningContext, - group_len: usize, - validator_lookup: impl Fn(usize) -> Option, -) -> Result { - if backed.validator_indices.len() != group_len { - return Err(()) - } - - if backed.validity_votes.len() > group_len { - return Err(()) - } - - // this is known, even in runtime, to be blake2-256. - let hash = backed.candidate.hash(); - - let mut signed = 0; - for ((val_in_group_idx, _), attestation) in backed.validator_indices.iter().enumerate() - .filter(|(_, signed)| **signed) - .zip(backed.validity_votes.iter()) - { - let validator_id = validator_lookup(val_in_group_idx).ok_or(())?; - let payload = attestation.signed_payload(hash.clone(), signing_context); - let sig = attestation.signature(); - - if sig.verify(&payload[..], &validator_id) { - signed += 1; - } else { - return Err(()) - } - } - - if signed != backed.validity_votes.len() { - return Err(()) - } - - Ok(signed) -} - -/// The unique (during session) index of a core. -#[derive(Encode, Decode, Default, PartialOrd, Ord, Eq, PartialEq, Clone, Copy)] -#[cfg_attr(feature = "std", derive(Debug, Hash, MallocSizeOf))] -pub struct CoreIndex(pub u32); - -impl From for CoreIndex { - fn from(i: u32) -> CoreIndex { - CoreIndex(i) - } -} - -/// The unique (during session) index of a validator group. -#[derive(Encode, Decode, Default, Clone, Copy, Debug, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Hash, MallocSizeOf))] -pub struct GroupIndex(pub u32); - -impl From for GroupIndex { - fn from(i: u32) -> GroupIndex { - GroupIndex(i) - } -} - -/// A claim on authoring the next block for a given parathread. -#[derive(Clone, Encode, Decode, Default)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug))] -pub struct ParathreadClaim(pub Id, pub CollatorId); - -/// An entry tracking a claim to ensure it does not pass the maximum number of retries. -#[derive(Clone, Encode, Decode, Default)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug))] -pub struct ParathreadEntry { - /// The claim. - pub claim: ParathreadClaim, - /// Number of retries. - pub retries: u32, -} - -/// What is occupying a specific availability core. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug))] -pub enum CoreOccupied { - /// A parathread. - Parathread(ParathreadEntry), - /// A parachain. - Parachain, -} - -/// A helper data-type for tracking validator-group rotations. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug, MallocSizeOf))] -pub struct GroupRotationInfo { - /// The block number where the session started. - pub session_start_block: N, - /// How often groups rotate. 0 means never. - pub group_rotation_frequency: N, - /// The current block number. - pub now: N, -} - -impl GroupRotationInfo { - /// Returns the index of the group needed to validate the core at the given index, assuming - /// the given number of cores. - /// - /// `core_index` should be less than `cores`, which is capped at u32::max(). - pub fn group_for_core(&self, core_index: CoreIndex, cores: usize) -> GroupIndex { - if self.group_rotation_frequency == 0 { return GroupIndex(core_index.0) } - if cores == 0 { return GroupIndex(0) } - - let cores = sp_std::cmp::min(cores, u32::max_value() as usize); - let blocks_since_start = self.now.saturating_sub(self.session_start_block); - let rotations = blocks_since_start / self.group_rotation_frequency; - - // g = c + r mod cores - - let idx = (core_index.0 as usize + rotations as usize) % cores; - GroupIndex(idx as u32) - } - - /// Returns the index of the group assigned to the given core. This does no checking or - /// whether the group index is in-bounds. - /// - /// `core_index` should be less than `cores`, which is capped at u32::max(). - pub fn core_for_group(&self, group_index: GroupIndex, cores: usize) -> CoreIndex { - if self.group_rotation_frequency == 0 { return CoreIndex(group_index.0) } - if cores == 0 { return CoreIndex(0) } - - let cores = sp_std::cmp::min(cores, u32::max_value() as usize); - let blocks_since_start = self.now.saturating_sub(self.session_start_block); - let rotations = blocks_since_start / self.group_rotation_frequency; - let rotations = rotations % cores as u32; - - // g = c + r mod cores - // c = g - r mod cores - // x = x + cores mod cores - // c = (g + cores) - r mod cores - - let idx = (group_index.0 as usize + cores - rotations as usize) % cores; - CoreIndex(idx as u32) - } - - /// Create a new `GroupRotationInfo` with one further rotation applied. - pub fn bump_rotation(&self) -> Self { - GroupRotationInfo { - session_start_block: self.session_start_block, - group_rotation_frequency: self.group_rotation_frequency, - now: self.next_rotation_at(), - } - } -} - -impl GroupRotationInfo { - /// Returns the block number of the next rotation after the current block. If the current block - /// is 10 and the rotation frequency is 5, this should return 15. - pub fn next_rotation_at(&self) -> N { - let cycle_once = self.now + self.group_rotation_frequency; - cycle_once - ( - cycle_once.saturating_sub(self.session_start_block) % self.group_rotation_frequency - ) - } - - /// Returns the block number of the last rotation before or including the current block. If the - /// current block is 10 and the rotation frequency is 5, this should return 10. - pub fn last_rotation_at(&self) -> N { - self.now - ( - self.now.saturating_sub(self.session_start_block) % self.group_rotation_frequency - ) - } -} - -/// Information about a core which is currently occupied. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, PartialEq, MallocSizeOf))] -pub struct OccupiedCore { - // NOTE: this has no ParaId as it can be deduced from the candidate descriptor. - - /// If this core is freed by availability, this is the assignment that is next up on this - /// core, if any. None if there is nothing queued for this core. - pub next_up_on_available: Option, - /// The relay-chain block number this began occupying the core at. - pub occupied_since: N, - /// The relay-chain block this will time-out at, if any. - pub time_out_at: N, - /// If this core is freed by being timed-out, this is the assignment that is next up on this - /// core. None if there is nothing queued for this core or there is no possibility of timing - /// out. - pub next_up_on_time_out: Option, - /// A bitfield with 1 bit for each validator in the set. `1` bits mean that the corresponding - /// validators has attested to availability on-chain. A 2/3+ majority of `1` bits means that - /// this will be available. - #[cfg_attr(feature = "std", ignore_malloc_size_of = "outside type")] - pub availability: BitVec, - /// The group assigned to distribute availability pieces of this candidate. - pub group_responsible: GroupIndex, - /// The hash of the candidate occupying the core. - pub candidate_hash: CandidateHash, - /// The descriptor of the candidate occupying the core. - pub candidate_descriptor: CandidateDescriptor, -} - -impl OccupiedCore { - /// Get the Para currently occupying this core. - pub fn para_id(&self) -> Id { - self.candidate_descriptor.para_id - } -} - -/// Information about a core which is currently occupied. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, PartialEq, Default, MallocSizeOf))] -pub struct ScheduledCore { - /// The ID of a para scheduled. - pub para_id: Id, - /// The collator required to author the block, if any. - pub collator: Option, -} - -/// The state of a particular availability core. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, PartialEq, MallocSizeOf))] -pub enum CoreState { - /// The core is currently occupied. - #[codec(index = 0)] - Occupied(OccupiedCore), - /// The core is currently free, with a para scheduled and given the opportunity - /// to occupy. - /// - /// If a particular Collator is required to author this block, that is also present in this - /// variant. - #[codec(index = 1)] - Scheduled(ScheduledCore), - /// The core is currently free and there is nothing scheduled. This can be the case for parathread - /// cores when there are no parathread blocks queued. Parachain cores will never be left idle. - #[codec(index = 2)] - Free, -} - -impl CoreState { - /// If this core state has a `para_id`, return it. - pub fn para_id(&self) -> Option { - match self { - Self::Occupied(ref core) => Some(core.para_id()), - Self::Scheduled(ScheduledCore { para_id, .. }) => Some(*para_id), - Self::Free => None, - } - } - - /// Is this core state `Self::Occupied`? - pub fn is_occupied(&self) -> bool { - matches!(self, Self::Occupied(_)) - } -} - -/// An assumption being made about the state of an occupied core. -#[derive(Clone, Copy, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Eq, Hash, Debug))] -pub enum OccupiedCoreAssumption { - /// The candidate occupying the core was made available and included to free the core. - #[codec(index = 0)] - Included, - /// The candidate occupying the core timed out and freed the core without advancing the para. - #[codec(index = 1)] - TimedOut, - /// The core was not occupied to begin with. - #[codec(index = 2)] - Free, -} - -/// An even concerning a candidate. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug, MallocSizeOf))] -pub enum CandidateEvent { - /// This candidate receipt was backed in the most recent block. - /// This includes the core index the candidate is now occupying. - #[codec(index = 0)] - CandidateBacked(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// This candidate receipt was included and became a parablock at the most recent block. - /// This includes the core index the candidate was occupying as well as the group responsible - /// for backing the candidate. - #[codec(index = 1)] - CandidateIncluded(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// This candidate receipt was not made available in time and timed out. - /// This includes the core index the candidate was occupying. - #[codec(index = 2)] - CandidateTimedOut(CandidateReceipt, HeadData, CoreIndex), -} - -/// Information about validator sets of a session. -#[derive(Clone, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(PartialEq, Default, MallocSizeOf))] -pub struct SessionInfo { - /// Validators in canonical ordering. - pub validators: Vec, - /// Validators' authority discovery keys for the session in canonical ordering. - #[cfg_attr(feature = "std", ignore_malloc_size_of = "outside type")] - pub discovery_keys: Vec, - /// The assignment keys for validators. - pub assignment_keys: Vec, - /// Validators in shuffled ordering - these are the validator groups as produced - /// by the `Scheduler` module for the session and are typically referred to by - /// `GroupIndex`. - pub validator_groups: Vec>, - /// The number of availability cores used by the protocol during this session. - pub n_cores: u32, - /// The zeroth delay tranche width. - pub zeroth_delay_tranche_width: u32, - /// The number of samples we do of relay_vrf_modulo. - pub relay_vrf_modulo_samples: u32, - /// The number of delay tranches in total. - pub n_delay_tranches: u32, - /// How many slots (BABE / SASSAFRAS) must pass before an assignment is considered a - /// no-show. - pub no_show_slots: u32, - /// The number of validators needed to approve a block. - pub needed_approvals: u32, -} - -/// A vote of approval on a candidate. -#[derive(Clone, RuntimeDebug)] -pub struct ApprovalVote(pub CandidateHash); - -impl ApprovalVote { - /// Yields the signing payload for this approval vote. - pub fn signing_payload( - &self, - session_index: SessionIndex, - ) -> Vec { - const MAGIC: [u8; 4] = *b"APPR"; - - (MAGIC, &self.0, session_index).encode() - } -} - -sp_api::decl_runtime_apis! { - /// The API for querying the state of parachains on-chain. - pub trait ParachainHost { - // NOTE: Many runtime API are declared with `#[skip_initialize_block]`. This is because without - // this attribute before each runtime call, the `initialize_block` runtime API will be called. - // That in turns will lead to two things: - // - // (a) The frame_system module will be initialized to the next block. - // (b) Initialization sequences for each runtime module (pallet) will be run. - // - // (a) is undesirable because the runtime APIs are querying the state against a specific - // block state. However, due to that initialization the observed block number would be as if - // it was the next block. - // - // We dont want (b) mainly because block initialization can be very heavy. Upgrade enactment, - // storage migration, and whatever other logic exists in `on_initialize` will be executed - // if not explicitly opted out with the `#[skip_initialize_block]` attribute. - // - // Additionally, some runtime APIs may depend on state that is pruned on the `on_initialize`. - // At the moment of writing, this is `candidate_events`. - - /// Get the current validators. - #[skip_initialize_block] - fn validators() -> Vec; - - /// Returns the validator groups and rotation info localized based on the hypothetical child - /// of a block whose state this is invoked on. Note that `now` in the `GroupRotationInfo` - /// should be the successor of the number of the block. - #[skip_initialize_block] - fn validator_groups() -> (Vec>, GroupRotationInfo); - - /// Yields information on all availability cores as relevant to the child block. - /// Cores are either free or occupied. Free cores can have paras assigned to them. - #[skip_initialize_block] - fn availability_cores() -> Vec>; - - /// Yields the persisted validation data for the given ParaId along with an assumption that - /// should be used if the para currently occupies a core. - /// - /// Returns `None` if either the para is not registered or the assumption is `Freed` - /// and the para already occupies a core. - #[skip_initialize_block] - fn persisted_validation_data(para_id: Id, assumption: OccupiedCoreAssumption) - -> Option>; - - /// Checks if the given validation outputs pass the acceptance criteria. - #[skip_initialize_block] - fn check_validation_outputs(para_id: Id, outputs: CandidateCommitments) -> bool; - - /// Returns the session index expected at a child of the block. - /// - /// This can be used to instantiate a `SigningContext`. - #[skip_initialize_block] - fn session_index_for_child() -> SessionIndex; - - /// Get the session info for the given session, if stored. - #[skip_initialize_block] - fn session_info(index: SessionIndex) -> Option; - - /// Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`. - /// - /// Returns `None` if either the para is not registered or the assumption is `Freed` - /// and the para already occupies a core. - #[skip_initialize_block] - fn validation_code(para_id: Id, assumption: OccupiedCoreAssumption) - -> Option; - - /// Get the receipt of a candidate pending availability. This returns `Some` for any paras - /// assigned to occupied cores in `availability_cores` and `None` otherwise. - #[skip_initialize_block] - fn candidate_pending_availability(para_id: Id) -> Option>; - - /// Get a vector of events concerning candidates that occurred within a block. - #[skip_initialize_block] - fn candidate_events() -> Vec>; - - /// Get all the pending inbound messages in the downward message queue for a para. - #[skip_initialize_block] - fn dmq_contents( - recipient: Id, - ) -> Vec>; - - /// Get the contents of all channels addressed to the given recipient. Channels that have no - /// messages in them are also included. - #[skip_initialize_block] - fn inbound_hrmp_channels_contents(recipient: Id) -> BTreeMap>>; - - /// Get the validation code from its hash. - #[skip_initialize_block] - fn validation_code_by_hash(hash: ValidationCodeHash) -> Option; - } -} - -/// Custom validity errors used in Polkadot while validating transactions. -#[repr(u8)] -pub enum ValidityError { - /// The Ethereum signature is invalid. - InvalidEthereumSignature = 0, - /// The signer has no claim. - SignerHasNoClaim = 1, - /// No permission to execute the call. - NoPermission = 2, - /// An invalid statement was made for a claim. - InvalidStatement = 3, -} - -impl From for u8 { - fn from(err: ValidityError) -> Self { - err as u8 - } -} - -/// Abridged version of `HostConfiguration` (from the `Configuration` parachains host runtime module) -/// meant to be used by a parachain or PDK such as cumulus. -#[derive(Clone, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(PartialEq))] -pub struct AbridgedHostConfiguration { - /// The maximum validation code size, in bytes. - pub max_code_size: u32, - /// The maximum head-data size, in bytes. - pub max_head_data_size: u32, - /// Total number of individual messages allowed in the parachain -> relay-chain message queue. - pub max_upward_queue_count: u32, - /// Total size of messages allowed in the parachain -> relay-chain message queue before which - /// no further messages may be added to it. If it exceeds this then the queue may contain only - /// a single message. - pub max_upward_queue_size: u32, - /// The maximum size of an upward message that can be sent by a candidate. - /// - /// This parameter affects the size upper bound of the `CandidateCommitments`. - pub max_upward_message_size: u32, - /// The maximum number of messages that a candidate can contain. - /// - /// This parameter affects the size upper bound of the `CandidateCommitments`. - pub max_upward_message_num_per_candidate: u32, - /// The maximum number of outbound HRMP messages can be sent by a candidate. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub hrmp_max_message_num_per_candidate: u32, - /// The minimum frequency at which parachains can update their validation code. - pub validation_upgrade_frequency: BlockNumber, - /// The delay, in blocks, before a validation upgrade is applied. - pub validation_upgrade_delay: BlockNumber, -} - -/// Abridged version of `HrmpChannel` (from the `Hrmp` parachains host runtime module) meant to be -/// used by a parachain or PDK such as cumulus. -#[derive(Clone, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(PartialEq))] -pub struct AbridgedHrmpChannel { - /// The maximum number of messages that can be pending in the channel at once. - pub max_capacity: u32, - /// The maximum total size of the messages that can be pending in the channel at once. - pub max_total_size: u32, - /// The maximum message size that could be put into the channel. - pub max_message_size: u32, - /// The current number of messages pending in the channel. - /// Invariant: should be less or equal to `max_capacity`.s`. - pub msg_count: u32, - /// The total size in bytes of all message payloads in the channel. - /// Invariant: should be less or equal to `max_total_size`. - pub total_size: u32, - /// A head of the Message Queue Chain for this channel. Each link in this chain has a form: - /// `(prev_head, B, H(M))`, where - /// - `prev_head`: is the previous value of `mqc_head` or zero if none. - /// - `B`: is the [relay-chain] block number in which a message was appended - /// - `H(M)`: is the hash of the message being appended. - /// This value is initialized to a special value that consists of all zeroes which indicates - /// that no messages were previously added. - pub mqc_head: Option, -} - -/// Consensus engine id for polkadot v1 consensus engine. -pub const POLKADOT_ENGINE_ID: runtime_primitives::ConsensusEngineId = *b"POL1"; - -/// A consensus log item for polkadot validation. To be used with [`POLKADOT_ENGINE_ID`]. -#[derive(Decode, Encode, Clone, PartialEq, Eq)] -pub enum ConsensusLog { - /// A parachain or parathread upgraded its code. - #[codec(index = 1)] - ParaUpgradeCode(Id, ValidationCodeHash), - /// A parachain or parathread scheduled a code upgrade. - #[codec(index = 2)] - ParaScheduleUpgradeCode(Id, ValidationCodeHash, BlockNumber), - /// Governance requests to auto-approve every candidate included up to the given block - /// number in the current chain, inclusive. - #[codec(index = 3)] - ForceApprove(BlockNumber), - /// A signal to revert the block number in the same chain as the - /// header this digest is part of and all of its descendents. - /// - /// It is a no-op for a block to contain a revert digest targeting - /// its own number or a higher number. - /// - /// In practice, these are issued when on-chain logic has detected an - /// invalid parachain block within its own chain, due to a dispute. - #[codec(index = 4)] - Revert(BlockNumber) -} - -impl ConsensusLog { - /// Attempt to convert a reference to a generic digest item into a consensus log. - pub fn from_digest_item(digest_item: &runtime_primitives::DigestItem) - -> Result, parity_scale_codec::Error> - { - match digest_item { - runtime_primitives::DigestItem::Consensus(id, encoded) if id == &POLKADOT_ENGINE_ID => - Ok(Some(Self::decode(&mut &encoded[..])?)), - _ => Ok(None), - } - } -} - -impl From for runtime_primitives::DigestItem { - fn from(c: ConsensusLog) -> runtime_primitives::DigestItem { - Self::Consensus(POLKADOT_ENGINE_ID, c.encode()) - } -} - -/// A statement about a candidate, to be used within the dispute resolution process. -/// -/// Statements are either in favor of the candidate's validity or against it. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] -pub enum DisputeStatement { - /// A valid statement, of the given kind. - #[codec(index = 0)] - Valid(ValidDisputeStatementKind), - /// An invalid statement, of the given kind. - #[codec(index = 1)] - Invalid(InvalidDisputeStatementKind), -} - -impl DisputeStatement { - /// Get the payload data for this type of dispute statement. - pub fn payload_data(&self, candidate_hash: CandidateHash, session: SessionIndex) -> Vec { - match *self { - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit) => { - ExplicitDisputeStatement { - valid: true, - candidate_hash, - session, - }.signing_payload() - }, - DisputeStatement::Valid(ValidDisputeStatementKind::BackingSeconded(inclusion_parent)) => { - CompactStatement::Seconded(candidate_hash).signing_payload(&SigningContext { - session_index: session, - parent_hash: inclusion_parent, - }) - }, - DisputeStatement::Valid(ValidDisputeStatementKind::BackingValid(inclusion_parent)) => { - CompactStatement::Valid(candidate_hash).signing_payload(&SigningContext { - session_index: session, - parent_hash: inclusion_parent, - }) - }, - DisputeStatement::Valid(ValidDisputeStatementKind::ApprovalChecking) => { - ApprovalVote(candidate_hash).signing_payload(session) - }, - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit) => { - ExplicitDisputeStatement { - valid: false, - candidate_hash, - session, - }.signing_payload() - }, - } - } - - /// Check the signature on a dispute statement. - pub fn check_signature( - &self, - validator_public: &ValidatorId, - candidate_hash: CandidateHash, - session: SessionIndex, - validator_signature: &ValidatorSignature, - ) -> Result<(), ()> { - let payload = self.payload_data(candidate_hash, session); - - if validator_signature.verify(&payload[..] , &validator_public) { - Ok(()) - } else { - Err(()) - } - } -} - -/// Different kinds of statements of validity on a candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] -pub enum ValidDisputeStatementKind { - /// An explicit statement issued as part of a dispute. - #[codec(index = 0)] - Explicit, - /// A seconded statement on a candidate from the backing phase. - #[codec(index = 1)] - BackingSeconded(Hash), - /// A valid statement on a candidate from the backing phase. - #[codec(index = 2)] - BackingValid(Hash), - /// An approval vote from the approval checking phase. - #[codec(index = 3)] - ApprovalChecking, -} - -/// Different kinds of statements of invalidity on a candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] -pub enum InvalidDisputeStatementKind { - /// An explicit statement issued as part of a dispute. - #[codec(index = 0)] - Explicit, -} - -/// An explicit statement on a candidate issued as part of a dispute. -#[derive(Clone, PartialEq, RuntimeDebug)] -pub struct ExplicitDisputeStatement { - /// Whether the candidate is valid - pub valid: bool, - /// The candidate hash. - pub candidate_hash: CandidateHash, - /// The session index of the candidate. - pub session: SessionIndex, -} - -impl ExplicitDisputeStatement { - /// Produce the payload used for signing this type of statement. - pub fn signing_payload(&self) -> Vec { - const MAGIC: [u8; 4] = *b"DISP"; - - (MAGIC, self.valid, self.candidate_hash, self.session).encode() - } -} - -/// A set of statements about a specific candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] -pub struct DisputeStatementSet { - /// The candidate referenced by this set. - pub candidate_hash: CandidateHash, - /// The session index of the candidate. - pub session: SessionIndex, - /// Statements about the candidate. - pub statements: Vec<(DisputeStatement, ValidatorIndex, ValidatorSignature)>, -} - -/// A set of dispute statements. -pub type MultiDisputeStatementSet = Vec; - -/// The entire state of a dispute. -#[derive(Encode, Decode, Clone, RuntimeDebug)] -pub struct DisputeState { - /// A bitfield indicating all validators for the candidate. - pub validators_for: BitVec, // one bit per validator. - /// A bitfield indicating all validators against the candidate. - pub validators_against: BitVec, // one bit per validator. - /// The block number at which the dispute started on-chain. - pub start: N, - /// The block number at which the dispute concluded on-chain. - pub concluded_at: Option, -} - -/// Parachains inherent-data passed into the runtime by a block author -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] -pub struct InherentData { - /// Signed bitfields by validators about availability. - pub bitfields: UncheckedSignedAvailabilityBitfields, - /// Backed candidates for inclusion in the block. - pub backed_candidates: Vec>, - /// Sets of dispute votes for inclusion, - pub disputes: MultiDisputeStatementSet, - /// The parent block header. Used for checking state proofs. - pub parent_header: HDR, -} - -/// The maximum number of validators `f` which may safely be faulty. -/// -/// The total number of validators is `n = 3f + e` where `e in { 1, 2, 3 }`. -pub fn byzantine_threshold(n: usize) -> usize { - n.saturating_sub(1) / 3 -} - -/// The supermajority threshold of validators which represents a subset -/// guaranteed to have at least f+1 honest validators. -pub fn supermajority_threshold(n: usize) -> usize { - n - byzantine_threshold(n) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn group_rotation_info_calculations() { - let info = GroupRotationInfo { - session_start_block: 10u32, - now: 15, - group_rotation_frequency: 5, - }; - - assert_eq!(info.next_rotation_at(), 20); - assert_eq!(info.last_rotation_at(), 15); - } - - #[test] - fn group_for_core_is_core_for_group() { - - for cores in 1..=256 { - for rotations in 0..(cores * 2) { - let info = GroupRotationInfo { - session_start_block: 0u32, - now: rotations, - group_rotation_frequency: 1, - }; - - for core in 0..cores { - let group = info.group_for_core(CoreIndex(core), cores as usize); - assert_eq!(info.core_for_group(group, cores as usize).0, core); - } - } - } - - } - - #[test] - fn collator_signature_payload_is_valid() { - // if this fails, collator signature verification code has to be updated. - let h = Hash::default(); - assert_eq!(h.as_ref().len(), 32); - - let _payload = collator_signature_payload( - &Hash::repeat_byte(1), - &5u32.into(), - &Hash::repeat_byte(2), - &Hash::repeat_byte(3), - &Hash::repeat_byte(4).into(), - ); - } - - #[test] - fn test_byzantine_threshold() { - assert_eq!(byzantine_threshold(0), 0); - assert_eq!(byzantine_threshold(1), 0); - assert_eq!(byzantine_threshold(2), 0); - assert_eq!(byzantine_threshold(3), 0); - assert_eq!(byzantine_threshold(4), 1); - assert_eq!(byzantine_threshold(5), 1); - assert_eq!(byzantine_threshold(6), 1); - assert_eq!(byzantine_threshold(7), 2); - } - - #[test] - fn test_supermajority_threshold() { - assert_eq!(supermajority_threshold(0), 0); - assert_eq!(supermajority_threshold(1), 1); - assert_eq!(supermajority_threshold(2), 2); - assert_eq!(supermajority_threshold(3), 3); - assert_eq!(supermajority_threshold(4), 3); - assert_eq!(supermajority_threshold(5), 4); - assert_eq!(supermajority_threshold(6), 5); - assert_eq!(supermajority_threshold(7), 5); - } -} diff --git a/primitives/src/v1/signed.rs b/primitives/src/v1/signed.rs deleted file mode 100644 index 3aa6d964342c..000000000000 --- a/primitives/src/v1/signed.rs +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use parity_scale_codec::{Encode, Decode}; - -use sp_std::prelude::Vec; -#[cfg(feature = "std")] -use sp_std::convert::TryInto; -#[cfg(feature = "std")] -use application_crypto::AppKey; -#[cfg(feature = "std")] -use sp_keystore::{CryptoStore, SyncCryptoStorePtr, Error as KeystoreError}; - -use primitives::RuntimeDebug; -use runtime_primitives::traits::AppVerify; - -use crate::v0::{SigningContext, ValidatorId, ValidatorSignature, ValidatorIndex}; - -/// Signed data with signature already verified. -/// -/// NOTE: This type does not have an Encode/Decode instance, as this would cancel out our -/// valid signature guarantees. If you need to encode/decode you have to convert into an -/// `UncheckedSigned` first. -/// -/// `Signed` can easily be converted into `UncheckedSigned` and conversion back via `into_signed` -/// enforces a valid signature again. -#[derive(Clone, PartialEq, Eq, RuntimeDebug)] -pub struct Signed(UncheckedSigned); - -/// Unchecked signed data, can be converted to `Signed` by checking the signature. -#[derive(Clone, PartialEq, Eq, RuntimeDebug, Encode, Decode)] -pub struct UncheckedSigned { - /// The payload is part of the signed data. The rest is the signing context, - /// which is known both at signing and at validation. - payload: Payload, - /// The index of the validator signing this statement. - validator_index: ValidatorIndex, - /// The signature by the validator of the signed payload. - signature: ValidatorSignature, - /// This ensures the real payload is tracked at the typesystem level. - real_payload: sp_std::marker::PhantomData, -} - -impl, RealPayload: Encode> Signed { - /// Used to create a `Signed` from already existing parts. - /// - /// The signature is checked as part of the process. - #[cfg(feature = "std")] - pub fn new( - payload: Payload, - validator_index: ValidatorIndex, - signature: ValidatorSignature, - context: &SigningContext, - key: &ValidatorId, - ) -> Option { - let s = UncheckedSigned { - payload, - validator_index, - signature, - real_payload: std::marker::PhantomData, - }; - - s.check_signature(context, key).ok()?; - - Some(Self(s)) - } - - /// Create a new `Signed` by signing data. - #[cfg(feature = "std")] - pub async fn sign( - keystore: &SyncCryptoStorePtr, - payload: Payload, - context: &SigningContext, - validator_index: ValidatorIndex, - key: &ValidatorId, - ) -> Result, KeystoreError> { - let r = UncheckedSigned::sign(keystore, payload, context, validator_index, key).await?; - Ok(r.map(Self)) - } - - /// Try to convert from `UncheckedSigned` by checking the signature. - pub fn try_from_unchecked( - unchecked: UncheckedSigned, - context: &SigningContext, - key: &ValidatorId - ) -> Result> { - if unchecked.check_signature(context, key).is_ok() { - Ok(Self(unchecked)) - } else { - Err(unchecked) - } - } - - /// Get a reference to data as unchecked. - pub fn as_unchecked(&self) -> &UncheckedSigned { - &self.0 - } - - /// Immutably access the payload. - #[inline] - pub fn payload(&self) -> &Payload { - &self.0.payload - } - - /// Immutably access the validator index. - #[inline] - pub fn validator_index(&self) -> ValidatorIndex { - self.0.validator_index - } - - /// Immutably access the signature. - #[inline] - pub fn signature(&self) -> &ValidatorSignature { - &self.0.signature - } - - /// Discard signing data, get the payload - #[inline] - pub fn into_payload(self) -> Payload { - self.0.payload - } - - /// Convert `Payload` into `RealPayload`. - pub fn convert_payload(&self) -> Signed where for<'a> &'a Payload: Into { - Signed(self.0.unchecked_convert_payload()) - } -} - -// We can't bound this on `Payload: Into` beacuse that conversion consumes -// the payload, and we don't want that. We can't bound it on `Payload: AsRef` -// because there's no blanket impl of `AsRef for T`. In the end, we just invent our -// own trait which does what we need: EncodeAs. -impl, RealPayload: Encode> UncheckedSigned { - /// Used to create a `UncheckedSigned` from already existing parts. - /// - /// Signature is not checked here, hence `UncheckedSigned`. - #[cfg(feature = "std")] - pub fn new( - payload: Payload, - validator_index: ValidatorIndex, - signature: ValidatorSignature, - ) -> Self { - Self { - payload, - validator_index, - signature, - real_payload: std::marker::PhantomData, - } - } - - /// Check signature and convert to `Signed` if successful. - pub fn try_into_checked( - self, - context: &SigningContext, - key: &ValidatorId - ) -> Result, Self> { - Signed::try_from_unchecked(self, context, key) - } - - /// Immutably access the payload. - #[inline] - pub fn unchecked_payload(&self) -> &Payload { - &self.payload - } - - /// Immutably access the validator index. - #[inline] - pub fn unchecked_validator_index(&self) -> ValidatorIndex { - self.validator_index - } - - /// Immutably access the signature. - #[inline] - pub fn unchecked_signature(&self) -> &ValidatorSignature { - &self.signature - } - - /// Discard signing data, get the payload - #[inline] - pub fn unchecked_into_payload(self) -> Payload { - self.payload - } - - /// Convert `Payload` into `RealPayload`. - pub fn unchecked_convert_payload(&self) -> UncheckedSigned where for<'a> &'a Payload: Into { - UncheckedSigned { - signature: self.signature.clone(), - validator_index: self.validator_index, - payload: (&self.payload).into(), - real_payload: sp_std::marker::PhantomData, - } - } - - fn payload_data(payload: &Payload, context: &SigningContext) -> Vec { - // equivalent to (real_payload, context).encode() - let mut out = payload.encode_as(); - out.extend(context.encode()); - out - } - - /// Sign this payload with the given context and key, storing the validator index. - #[cfg(feature = "std")] - async fn sign( - keystore: &SyncCryptoStorePtr, - payload: Payload, - context: &SigningContext, - validator_index: ValidatorIndex, - key: &ValidatorId, - ) -> Result, KeystoreError> { - let data = Self::payload_data(&payload, context); - let signature = CryptoStore::sign_with( - &**keystore, - ValidatorId::ID, - &key.into(), - &data, - ).await?; - - let signature = match signature { - Some(sig) => sig.try_into().map_err(|_| KeystoreError::KeyNotSupported(ValidatorId::ID))?, - None => return Ok(None), - }; - - Ok(Some(Self { - payload, - validator_index, - signature, - real_payload: std::marker::PhantomData, - })) - } - - /// Validate the payload given the context and public key. - fn check_signature(&self, context: &SigningContext, key: &ValidatorId) -> Result<(), ()> { - let data = Self::payload_data(&self.payload, context); - if self.signature.verify(data.as_slice(), key) { Ok(()) } else { Err(()) } - } - -} - -impl From> for UncheckedSigned { - fn from(signed: Signed) -> Self { - signed.0 - } -} - -/// This helper trait ensures that we can encode Statement as CompactStatement, -/// and anything as itself. -/// -/// This resembles `parity_scale_codec::EncodeLike`, but it's distinct: -/// EncodeLike is a marker trait which asserts at the typesystem level that -/// one type's encoding is a valid encoding for another type. It doesn't -/// perform any type conversion when encoding. -/// -/// This trait, on the other hand, provides a method which can be used to -/// simultaneously convert and encode one type as another. -pub trait EncodeAs { - /// Convert Self into T, then encode T. - /// - /// This is useful when T is a subset of Self, reducing encoding costs; - /// its signature also means that we do not need to clone Self in order - /// to retain ownership, as we would if we were to do - /// `self.clone().into().encode()`. - fn encode_as(&self) -> Vec; -} - -impl EncodeAs for T { - fn encode_as(&self) -> Vec { - self.encode() - } -} diff --git a/primitives/test-utils/Cargo.toml b/primitives/test-utils/Cargo.toml new file mode 100644 index 000000000000..3876f0200a9e --- /dev/null +++ b/primitives/test-utils/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "bp-test-utils" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +bp-header-chain = { path = "../header-chain", default-features = false } +codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } +ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] } +finality-grandpa = { version = "0.14.0", default-features = false } +sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "bp-header-chain/std", + "codec/std", + "ed25519-dalek/std", + "finality-grandpa/std", + "sp-application-crypto/std", + "sp-finality-grandpa/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/bridges/primitives/test-utils/src/keyring.rs b/primitives/test-utils/src/keyring.rs similarity index 90% rename from bridges/primitives/test-utils/src/keyring.rs rename to primitives/test-utils/src/keyring.rs index b83678cae5e5..059d6eb5be4f 100644 --- a/bridges/primitives/test-utils/src/keyring.rs +++ b/primitives/test-utils/src/keyring.rs @@ -45,7 +45,8 @@ impl Account { let data = self.0.encode(); let mut bytes = [0_u8; 32]; bytes[0..data.len()].copy_from_slice(&*data); - SecretKey::from_bytes(&bytes).expect("A static array of the correct length is a known good.") + SecretKey::from_bytes(&bytes) + .expect("A static array of the correct length is a known good.") } pub fn pair(&self) -> Keypair { @@ -57,7 +58,8 @@ impl Account { let public = self.public(); pair[32..].copy_from_slice(&public.to_bytes()); - Keypair::from_bytes(&pair).expect("We expect the SecretKey to be good, so this must also be good.") + Keypair::from_bytes(&pair) + .expect("We expect the SecretKey to be good, so this must also be good.") } pub fn sign(&self, msg: &[u8]) -> Signature { @@ -79,10 +81,7 @@ pub fn voter_set() -> VoterSet { /// Convenience function to get a list of Grandpa authorities. pub fn authority_list() -> AuthorityList { - test_keyring() - .iter() - .map(|(id, w)| (AuthorityId::from(*id), *w)) - .collect() + test_keyring().iter().map(|(id, w)| (AuthorityId::from(*id), *w)).collect() } /// Get the corresponding identities from the keyring for the "standard" authority set. diff --git a/primitives/test-utils/src/lib.rs b/primitives/test-utils/src/lib.rs new file mode 100644 index 000000000000..9e044ed472dd --- /dev/null +++ b/primitives/test-utils/src/lib.rs @@ -0,0 +1,213 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Utilities for testing runtime code. + +#![cfg_attr(not(feature = "std"), no_std)] + +use bp_header_chain::justification::GrandpaJustification; +use codec::Encode; +use sp_application_crypto::TryFrom; +use sp_finality_grandpa::{AuthorityId, AuthoritySignature, AuthorityWeight, SetId}; +use sp_runtime::traits::{Header as HeaderT, One, Zero}; +use sp_std::prelude::*; + +// Re-export all our test account utilities +pub use keyring::*; + +mod keyring; + +pub const TEST_GRANDPA_ROUND: u64 = 1; +pub const TEST_GRANDPA_SET_ID: SetId = 1; + +/// Configuration parameters when generating test GRANDPA justifications. +#[derive(Clone)] +pub struct JustificationGeneratorParams { + /// The header which we want to finalize. + pub header: H, + /// The GRANDPA round number for the current authority set. + pub round: u64, + /// The current authority set ID. + pub set_id: SetId, + /// The current GRANDPA authority set. + /// + /// The size of the set will determine the number of pre-commits in our justification. + pub authorities: Vec<(Account, AuthorityWeight)>, + /// The total number of precommit ancestors in the `votes_ancestries` field our justification. + /// + /// These may be distributed among many forks. + pub ancestors: u32, + /// The number of forks. + /// + /// Useful for creating a "worst-case" scenario in which each authority is on its own fork. + pub forks: u32, +} + +impl Default for JustificationGeneratorParams { + fn default() -> Self { + Self { + header: test_header(One::one()), + round: TEST_GRANDPA_ROUND, + set_id: TEST_GRANDPA_SET_ID, + authorities: test_keyring(), + ancestors: 2, + forks: 1, + } + } +} + +/// Make a valid GRANDPA justification with sensible defaults +pub fn make_default_justification(header: &H) -> GrandpaJustification { + let params = JustificationGeneratorParams:: { header: header.clone(), ..Default::default() }; + + make_justification_for_header(params) +} + +/// Generate justifications in a way where we are able to tune the number of pre-commits +/// and vote ancestries which are included in the justification. +/// +/// This is useful for benchmarkings where we want to generate valid justifications with +/// a specific number of pre-commits (tuned with the number of "authorities") and/or a specific +/// number of vote ancestries (tuned with the "votes" parameter). +/// +/// Note: This needs at least three authorities or else the verifier will complain about +/// being given an invalid commit. +pub fn make_justification_for_header( + params: JustificationGeneratorParams, +) -> GrandpaJustification { + let JustificationGeneratorParams { header, round, set_id, authorities, mut ancestors, forks } = + params; + let (target_hash, target_number) = (header.hash(), *header.number()); + let mut votes_ancestries = vec![]; + let mut precommits = vec![]; + + assert!(forks != 0, "Need at least one fork to have a chain.."); + assert!( + forks as usize <= authorities.len(), + "If we have more forks than authorities we can't create valid pre-commits for all the forks." + ); + + // Roughly, how many vote ancestries do we want per fork + let target_depth = (ancestors + forks - 1) / forks; + + let mut unsigned_precommits = vec![]; + for i in 0..forks { + let depth = if ancestors >= target_depth { + ancestors -= target_depth; + target_depth + } else { + ancestors + }; + + // Note: Adding 1 to account for the target header + let chain = generate_chain(i as u32, depth + 1, &header); + + // We don't include our finality target header in the vote ancestries + for child in &chain[1..] { + votes_ancestries.push(child.clone()); + } + + // The header we need to use when pre-commiting is the one at the highest height + // on our chain. + let precommit_candidate = chain.last().map(|h| (h.hash(), *h.number())).unwrap(); + unsigned_precommits.push(precommit_candidate); + } + + for (i, (id, _weight)) in authorities.iter().enumerate() { + // Assign authorities to sign pre-commits in a round-robin fashion + let target = unsigned_precommits[i % forks as usize]; + let precommit = signed_precommit::(id, target, round, set_id); + + precommits.push(precommit); + } + + GrandpaJustification { + round, + commit: finality_grandpa::Commit { target_hash, target_number, precommits }, + votes_ancestries, + } +} + +fn generate_chain(fork_id: u32, depth: u32, ancestor: &H) -> Vec { + let mut headers = vec![ancestor.clone()]; + + for i in 1..depth { + let parent = &headers[(i - 1) as usize]; + let (hash, num) = (parent.hash(), *parent.number()); + + let mut header = test_header::(num + One::one()); + header.set_parent_hash(hash); + + // Modifying the digest so headers at the same height but in different forks have different + // hashes + header.digest_mut().logs.push(sp_runtime::DigestItem::Other(fork_id.encode())); + + headers.push(header); + } + + headers +} + +/// Create signed precommit with given target. +pub fn signed_precommit( + signer: &Account, + target: (H::Hash, H::Number), + round: u64, + set_id: SetId, +) -> finality_grandpa::SignedPrecommit { + let precommit = finality_grandpa::Precommit { target_hash: target.0, target_number: target.1 }; + + let encoded = sp_finality_grandpa::localized_payload( + round, + set_id, + &finality_grandpa::Message::Precommit(precommit.clone()), + ); + + let signature = signer.sign(&encoded); + let raw_signature: Vec = signature.to_bytes().into(); + + // Need to wrap our signature and id types that they match what our `SignedPrecommit` is + // expecting + let signature = AuthoritySignature::try_from(raw_signature).expect( + "We know our Keypair is good, + so our signature must also be good.", + ); + let id = (*signer).into(); + + finality_grandpa::SignedPrecommit { precommit, signature, id } +} + +/// Get a header for testing. +/// +/// The correct parent hash will be used if given a non-zero header. +pub fn test_header(number: H::Number) -> H { + let default = |num| { + H::new(num, Default::default(), Default::default(), Default::default(), Default::default()) + }; + + let mut header = default(number); + if number != Zero::zero() { + let parent_hash = default(number - One::one()).hash(); + header.set_parent_hash(parent_hash); + } + + header +} + +/// Convenience function for generating a Header ID at a given block number. +pub fn header_id(index: u8) -> (H::Hash, H::Number) { + (test_header::(index.into()).hash(), index.into()) +} diff --git a/primitives/token-swap/Cargo.toml b/primitives/token-swap/Cargo.toml new file mode 100644 index 000000000000..4b16c3567ea6 --- /dev/null +++ b/primitives/token-swap/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "bp-token-swap" +description = "Primitives of the pallet-bridge-token-swap pallet" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-support/std", + "scale-info/std", + "sp-core/std", + "sp-std/std", +] diff --git a/primitives/token-swap/src/lib.rs b/primitives/token-swap/src/lib.rs new file mode 100644 index 000000000000..d46389e86891 --- /dev/null +++ b/primitives/token-swap/src/lib.rs @@ -0,0 +1,109 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] + +use codec::{Decode, Encode}; +use frame_support::{weights::Weight, RuntimeDebug}; +use scale_info::TypeInfo; +use sp_core::U256; +use sp_std::vec::Vec; + +/// Pending token swap state. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub enum TokenSwapState { + /// The swap has been started using the `start_claim` call, but we have no proof that it has + /// happened at the Bridged chain. + Started, + /// The swap has happened at the Bridged chain and may be claimed by the Bridged chain party + /// using the `claim_swap` call. + Confirmed, + /// The swap has failed at the Bridged chain and This chain party may cancel it using the + /// `cancel_swap` call. + Failed, +} + +/// Token swap type. +/// +/// Different swap types give a different guarantees regarding possible swap +/// replay protection. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub enum TokenSwapType { + /// The `target_account_at_bridged_chain` is temporary and only have funds for single swap. + /// + /// ***WARNING**: if `target_account_at_bridged_chain` still exists after the swap has been + /// completed (either by claiming or canceling), the `source_account_at_this_chain` will be + /// able to restart the swap again and repeat the swap until `target_account_at_bridged_chain` + /// depletes. + TemporaryTargetAccountAtBridgedChain, + /// This swap type prevents `source_account_at_this_chain` from restarting the swap after it + /// has been completed. There are two consequences: + /// + /// 1) the `source_account_at_this_chain` won't be able to call `start_swap` after given + /// ; 2) the `target_account_at_bridged_chain` won't be able to call + /// `claim_swap` (over the bridge) before block ``. + /// + /// The second element is the nonce of the swap. You must care about its uniqueness if you're + /// planning to perform another swap with exactly the same parameters (i.e. same amount, same + /// accounts, same `ThisBlockNumber`) to avoid collisions. + LockClaimUntilBlock(ThisBlockNumber, U256), +} + +/// An intention to swap `source_balance_at_this_chain` owned by `source_account_at_this_chain` +/// to `target_balance_at_bridged_chain` owned by `target_account_at_bridged_chain`. +/// +/// **IMPORTANT NOTE**: this structure is always the same during single token swap. So even +/// when chain changes, the meaning of This and Bridged are still used to point to the same chains. +/// This chain is always the chain where swap has been started. And the Bridged chain is the other +/// chain. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct TokenSwap +{ + /// The type of the swap. + pub swap_type: TokenSwapType, + /// This chain balance to be swapped with `target_balance_at_bridged_chain`. + pub source_balance_at_this_chain: ThisBalance, + /// Account id of the party acting at This chain and owning the `source_account_at_this_chain`. + pub source_account_at_this_chain: ThisAccountId, + /// Bridged chain balance to be swapped with `source_balance_at_this_chain`. + pub target_balance_at_bridged_chain: BridgedBalance, + /// Account id of the party acting at the Bridged chain and owning the + /// `target_balance_at_bridged_chain`. + pub target_account_at_bridged_chain: BridgedAccountId, +} + +/// SCALE-encoded `Currency::transfer` call on the bridged chain. +pub type RawBridgedTransferCall = Vec; + +/// Token swap creation parameters. +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] +pub struct TokenSwapCreation { + /// Public key of the `target_account_at_bridged_chain` account used to verify + /// `bridged_currency_transfer_signature`. + pub target_public_at_bridged_chain: BridgedAccountPublic, + /// Fee that the `source_account_at_this_chain` is ready to pay for the tokens + /// transfer message delivery and dispatch. + pub swap_delivery_and_dispatch_fee: ThisChainBalance, + /// Specification version of the Bridged chain. + pub bridged_chain_spec_version: u32, + /// SCALE-encoded tokens transfer call at the Bridged chain. + pub bridged_currency_transfer: RawBridgedTransferCall, + /// Dispatch weight of the tokens transfer call at the Bridged chain. + pub bridged_currency_transfer_weight: Weight, + /// The signature of the `target_account_at_bridged_chain` for the message + /// returned by the `pallet_bridge_dispatch::account_ownership_digest()` function call. + pub bridged_currency_transfer_signature: BridgedAccountSignature, +} diff --git a/relays/bin-substrate/Cargo.toml b/relays/bin-substrate/Cargo.toml new file mode 100644 index 000000000000..a28c61262f40 --- /dev/null +++ b/relays/bin-substrate/Cargo.toml @@ -0,0 +1,79 @@ +[package] +name = "substrate-relay" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +anyhow = "1.0" +async-std = "1.9.0" +codec = { package = "parity-scale-codec", version = "2.2.0" } +futures = "0.3.12" +hex = "0.4" +log = "0.4.14" +num-format = "0.4" +num-traits = "0.2" +paste = "1.0" +rand = "0.8" +structopt = "0.3" +strum = { version = "0.21.0", features = ["derive"] } + +# Bridge dependencies + +bp-header-chain = { path = "../../primitives/header-chain" } +bp-kusama = { path = "../../primitives/chain-kusama" } +bp-messages = { path = "../../primitives/messages" } +bp-message-dispatch = { path = "../../primitives/message-dispatch" } +bp-millau = { path = "../../primitives/chain-millau" } +bp-polkadot = { path = "../../primitives/chain-polkadot" } +bp-rialto = { path = "../../primitives/chain-rialto" } +bp-rialto-parachain = { path = "../../primitives/chain-rialto-parachain" } +bp-rococo = { path = "../../primitives/chain-rococo" } +bp-token-swap = { path = "../../primitives/token-swap" } +bp-wococo = { path = "../../primitives/chain-wococo" } +bp-runtime = { path = "../../primitives/runtime" } +bp-westend = { path = "../../primitives/chain-westend" } +bridge-runtime-common = { path = "../../bin/runtime-common" } +finality-relay = { path = "../finality" } +messages-relay = { path = "../messages" } +millau-runtime = { path = "../../bin/millau/runtime" } +pallet-bridge-dispatch = { path = "../../modules/dispatch" } +pallet-bridge-messages = { path = "../../modules/messages" } +pallet-bridge-token-swap = { path = "../../modules/token-swap" } +relay-kusama-client = { path = "../client-kusama" } +relay-millau-client = { path = "../client-millau" } +relay-polkadot-client = { path = "../client-polkadot" } +relay-rialto-client = { path = "../client-rialto" } +relay-rialto-parachain-client = { path = "../client-rialto-parachain" } +relay-rococo-client = { path = "../client-rococo" } +relay-wococo-client = { path = "../client-wococo" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } +relay-westend-client = { path = "../client-westend" } +rialto-parachain-runtime = { path = "../../bin/rialto-parachain/runtime" } +rialto-runtime = { path = "../../bin/rialto/runtime" } +substrate-relay-helper = { path = "../lib-substrate-relay" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" } + +# Polkadot Dependencies + +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot", branch = "master" } + +[dev-dependencies] +hex-literal = "0.3" +pallet-bridge-grandpa = { path = "../../modules/grandpa" } +sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } +tempfile = "3.2" +finality-grandpa = { version = "0.14.0" } diff --git a/relays/bin-substrate/src/chains/kusama.rs b/relays/bin-substrate/src/chains/kusama.rs new file mode 100644 index 000000000000..b12d23f2a56d --- /dev/null +++ b/relays/bin-substrate/src/chains/kusama.rs @@ -0,0 +1,116 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use codec::Decode; +use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; +use relay_kusama_client::Kusama; +use sp_core::storage::StorageKey; +use sp_runtime::{FixedPointNumber, FixedU128}; +use sp_version::RuntimeVersion; + +use crate::cli::{ + bridge, + encode_call::{Call, CliEncodeCall}, + encode_message, CliChain, +}; + +/// Weight of the `system::remark` call at Kusama. +/// +/// This weight is larger (x2) than actual weight at current Kusama runtime to avoid unsuccessful +/// calls in the future. But since it is used only in tests (and on test chains), this is ok. +pub(crate) const SYSTEM_REMARK_CALL_WEIGHT: Weight = 2 * 1_345_000; + +/// Id of Kusama token that is used to fetch token price. +pub(crate) const TOKEN_ID: &str = "kusama"; + +impl CliEncodeCall for Kusama { + fn max_extrinsic_size() -> u32 { + bp_kusama::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Remark { remark_payload, .. } => relay_kusama_client::runtime::Call::System( + relay_kusama_client::runtime::SystemCall::remark( + remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + ), + ), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::KUSAMA_TO_POLKADOT_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + relay_kusama_client::runtime::Call::BridgePolkadotMessages( + relay_kusama_client::runtime::BridgePolkadotMessagesCall::send_message( + lane.0, payload, fee.0, + ), + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + _ => anyhow::bail!("Unsupported Kusama call: {:?}", call), + }) + } + + fn get_dispatch_info( + call: &relay_kusama_client::runtime::Call, + ) -> anyhow::Result { + match *call { + relay_kusama_client::runtime::Call::System( + relay_kusama_client::runtime::SystemCall::remark(_), + ) => Ok(DispatchInfo { + weight: crate::chains::kusama::SYSTEM_REMARK_CALL_WEIGHT, + class: DispatchClass::Normal, + pays_fee: Pays::Yes, + }), + _ => anyhow::bail!("Unsupported Kusama call: {:?}", call), + } + } +} + +impl CliChain for Kusama { + const RUNTIME_VERSION: RuntimeVersion = bp_kusama::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = (); + + fn ss58_format() -> u16 { + 42 + } + + fn max_extrinsic_weight() -> Weight { + bp_kusama::max_extrinsic_weight() + } + + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + anyhow::bail!("Sending messages from Kusama is not yet supported.") + } +} + +/// Storage key and initial value of Polkadot -> Kusama conversion rate. +pub(crate) fn polkadot_to_kusama_conversion_rate_params() -> (StorageKey, FixedU128) { + ( + bp_runtime::storage_parameter_key( + bp_kusama::POLKADOT_TO_KUSAMA_CONVERSION_RATE_PARAMETER_NAME, + ), + // starting relay before this parameter will be set to some value may cause troubles + FixedU128::from_inner(FixedU128::DIV), + ) +} diff --git a/relays/bin-substrate/src/chains/kusama_headers_to_polkadot.rs b/relays/bin-substrate/src/chains/kusama_headers_to_polkadot.rs new file mode 100644 index 000000000000..ce631ef41e0a --- /dev/null +++ b/relays/bin-substrate/src/chains/kusama_headers_to_polkadot.rs @@ -0,0 +1,168 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Kusama-to-Polkadot headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_kusama_client::{Kusama, SyncHeader as KusamaSyncHeader}; +use relay_polkadot_client::{Polkadot, SigningParams as PolkadotSigningParams}; +use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction}; +use relay_utils::metrics::MetricsParams; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Maximal saturating difference between `balance(now)` and `balance(now-24h)` to treat +/// relay as gone wild. +/// +/// Actual value, returned by `maximal_balance_decrease_per_day_is_sane` test is approximately 21 +/// DOT, but let's round up to 30 DOT here. +pub(crate) const MAXIMAL_BALANCE_DECREASE_PER_DAY: bp_polkadot::Balance = 30_000_000_000; + +/// Kusama-to-Polkadot finality sync pipeline. +pub(crate) type FinalityPipelineKusamaFinalityToPolkadot = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct KusamaFinalityToPolkadot { + finality_pipeline: FinalityPipelineKusamaFinalityToPolkadot, +} + +impl KusamaFinalityToPolkadot { + pub fn new(target_client: Client, target_sign: PolkadotSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelineKusamaFinalityToPolkadot::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for KusamaFinalityToPolkadot { + type FinalitySyncPipeline = FinalityPipelineKusamaFinalityToPolkadot; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_kusama::BEST_FINALIZED_KUSAMA_HEADER_METHOD; + + type TargetChain = Polkadot; + + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + crate::chains::add_polkadot_kusama_price_metrics::(params) + } + + fn start_relay_guards(&self) { + relay_substrate_client::guard::abort_on_spec_version_change( + self.finality_pipeline.target_client.clone(), + bp_polkadot::VERSION.spec_version, + ); + relay_substrate_client::guard::abort_when_account_balance_decreased( + self.finality_pipeline.target_client.clone(), + self.transactions_author(), + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } + + fn transactions_author(&self) -> bp_polkadot::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: bp_runtime::IndexOf, + header: KusamaSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = relay_polkadot_client::runtime::Call::BridgeKusamaGrandpa( + relay_polkadot_client::runtime::BridgeKusamaGrandpaCall::submit_finality_proof( + Box::new(header.into_inner()), + proof, + ), + ); + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Polkadot::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} + +#[cfg(test)] +pub(crate) mod tests { + use super::*; + use frame_support::weights::WeightToFeePolynomial; + use pallet_bridge_grandpa::weights::WeightInfo; + + pub fn compute_maximal_balance_decrease_per_day(expected_source_headers_per_day: u32) -> B + where + B: From + std::ops::Mul, + W: WeightToFeePolynomial, + { + // we assume that the GRANDPA is not lagging here => ancestry length will be near to 0 + // (let's round up to 2) + const AVG_VOTES_ANCESTRIES_LEN: u32 = 2; + // let's assume number of validators is 1024 (more than on any existing well-known chain + // atm) => number of precommits is *2/3 + 1 + const AVG_PRECOMMITS_LEN: u32 = 1024 * 2 / 3 + 1; + + // GRANDPA pallet weights. We're now using Rialto weights everywhere. + // + // Using Rialto runtime is slightly incorrect, because `DbWeight` of other runtimes may + // differ from the `DbWeight` of Rialto runtime. But now (and most probably forever) it is + // the same. + type GrandpaPalletWeights = + pallet_bridge_grandpa::weights::RialtoWeight; + + // The following formula shall not be treated as super-accurate - guard is to protect from + // mad relays, not to protect from over-average loses. + + // increase number of headers a bit + let expected_source_headers_per_day = expected_source_headers_per_day * 110 / 100; + let single_source_header_submit_call_weight = GrandpaPalletWeights::submit_finality_proof( + AVG_VOTES_ANCESTRIES_LEN, + AVG_PRECOMMITS_LEN, + ); + // for simplicity - add extra weight for base tx fee + fee that is paid for the tx size + + // adjusted fee + let single_source_header_submit_tx_weight = single_source_header_submit_call_weight * 3 / 2; + let single_source_header_tx_cost = W::calc(&single_source_header_submit_tx_weight); + single_source_header_tx_cost * B::from(expected_source_headers_per_day) + } + + #[test] + fn maximal_balance_decrease_per_day_is_sane() { + // we expect Kusama -> Polkadot relay to be running in mandatory-headers-only mode + // => we expect single header for every Kusama session + let maximal_balance_decrease = compute_maximal_balance_decrease_per_day::< + bp_polkadot::Balance, + bp_polkadot::WeightToFee, + >(bp_kusama::DAYS / bp_kusama::SESSION_LENGTH + 1); + assert!( + MAXIMAL_BALANCE_DECREASE_PER_DAY >= maximal_balance_decrease, + "Maximal expected loss per day {} is larger than hardcoded {}", + maximal_balance_decrease, + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } +} diff --git a/relays/bin-substrate/src/chains/kusama_messages_to_polkadot.rs b/relays/bin-substrate/src/chains/kusama_messages_to_polkadot.rs new file mode 100644 index 000000000000..32133adc3e54 --- /dev/null +++ b/relays/bin-substrate/src/chains/kusama_messages_to_polkadot.rs @@ -0,0 +1,331 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Kusama-to-Polkadot messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use frame_support::weights::Weight; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_kusama_client::{ + HeaderId as KusamaHeaderId, Kusama, SigningParams as KusamaSigningParams, +}; +use relay_polkadot_client::{ + HeaderId as PolkadotHeaderId, Polkadot, SigningParams as PolkadotSigningParams, +}; +use relay_substrate_client::{Chain, Client, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Kusama-to-Polkadot message lane. +pub type MessageLaneKusamaMessagesToPolkadot = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct KusamaMessagesToPolkadot { + message_lane: MessageLaneKusamaMessagesToPolkadot, +} + +impl SubstrateMessageLane for KusamaMessagesToPolkadot { + type MessageLane = MessageLaneKusamaMessagesToPolkadot; + + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_polkadot::TO_POLKADOT_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_polkadot::TO_POLKADOT_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_polkadot::TO_POLKADOT_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_kusama::FROM_KUSAMA_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_kusama::FROM_KUSAMA_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_kusama::FROM_KUSAMA_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_kusama::BEST_FINALIZED_KUSAMA_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_polkadot::BEST_FINALIZED_POLKADOT_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = + bp_kusama::WITH_POLKADOT_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = + bp_polkadot::WITH_KUSAMA_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_polkadot::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Kusama; + type TargetChain = Polkadot; + + fn source_transactions_author(&self) -> bp_kusama::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: KusamaHeaderId, + transaction_nonce: bp_runtime::IndexOf, + _generated_at_block: PolkadotHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call = relay_kusama_client::runtime::Call::BridgePolkadotMessages( + relay_kusama_client::runtime::BridgePolkadotMessagesCall::receive_messages_delivery_proof( + proof, + relayers_state, + ), + ); + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Kusama::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Polkadot -> Kusama confirmation transaction. Weight: /{}, size: {}/{}", + bp_kusama::max_extrinsic_weight(), + transaction.encode().len(), + bp_kusama::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_polkadot::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: PolkadotHeaderId, + transaction_nonce: bp_runtime::IndexOf, + _generated_at_header: KusamaHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + + let call = relay_polkadot_client::runtime::Call::BridgeKusamaMessages( + relay_polkadot_client::runtime::BridgeKusamaMessagesCall::receive_messages_proof( + self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count as _, + dispatch_weight, + ), + ); + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Polkadot::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Kusama -> Polkadot delivery transaction. Weight: /{}, size: {}/{}", + bp_polkadot::max_extrinsic_weight(), + transaction.encode().len(), + bp_polkadot::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Kusama node as messages source. +type KusamaSourceClient = SubstrateMessagesSource; + +/// Polkadot node as messages target. +type PolkadotTargetClient = SubstrateMessagesTarget; + +/// Run Kusama-to-Polkadot messages sync. +pub async fn run( + params: MessagesRelayParams< + Kusama, + KusamaSigningParams, + Polkadot, + PolkadotSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Kusama::AVERAGE_BLOCK_INTERVAL, + Polkadot::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_kusama = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = KusamaMessagesToPolkadot { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_kusama, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_polkadot::max_extrinsic_size() / 3; + // we don't know exact weights of the Polkadot runtime. So to guess weights we'll be using + // weights from Rialto and then simply dividing it by x2. + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_polkadot::max_extrinsic_weight(), + bp_polkadot::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + (max_messages_in_single_batch / 2, max_messages_weight_in_single_batch / 2); + + log::info!( + target: "bridge", + "Starting Kusama -> Polkadot messages relay.\n\t\ + Kusama relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Kusama::AVERAGE_BLOCK_INTERVAL, + target_tick: Polkadot::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_polkadot::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_polkadot::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + KusamaSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + PolkadotTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Kusama -> Polkadot messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + Some(crate::chains::kusama::TOKEN_ID), + Some(crate::chains::polkadot::TOKEN_ID), + Some(crate::chains::polkadot::kusama_to_polkadot_conversion_rate_params()), + Some(crate::chains::kusama::polkadot_to_kusama_conversion_rate_params()), + ) +} + +/// Update Polkadot -> Kusama conversion rate, stored in Kusama runtime storage. +pub(crate) async fn update_polkadot_to_kusama_conversion_rate( + client: Client, + signer: ::AccountKeyPair, + updated_rate: f64, +) -> anyhow::Result<()> { + let genesis_hash = *client.genesis_hash(); + let signer_id = (*signer.public().as_array_ref()).into(); + client + .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { + Bytes( + Kusama::sign_transaction( + genesis_hash, + &signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + relay_kusama_client::runtime::Call::BridgePolkadotMessages( + relay_kusama_client::runtime::BridgePolkadotMessagesCall::update_pallet_parameter( + relay_kusama_client::runtime::BridgePolkadotMessagesParameter::PolkadotToKusamaConversionRate( + sp_runtime::FixedU128::from_float(updated_rate), + ) + ) + ), + transaction_nonce, + ), + ) + .encode(), + ) + }) + .await + .map(drop) + .map_err(|err| anyhow::format_err!("{:?}", err)) +} diff --git a/relays/bin-substrate/src/chains/millau.rs b/relays/bin-substrate/src/chains/millau.rs new file mode 100644 index 000000000000..755d7cc4430a --- /dev/null +++ b/relays/bin-substrate/src/chains/millau.rs @@ -0,0 +1,142 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Millau chain specification for CLI. + +use crate::cli::{ + bridge, + encode_call::{self, Call, CliEncodeCall}, + encode_message, + send_message::{self, DispatchFeePayment}, + CliChain, +}; +use anyhow::anyhow; +use bp_message_dispatch::{CallOrigin, MessagePayload}; +use codec::Decode; +use frame_support::weights::{DispatchInfo, GetDispatchInfo, Weight}; +use relay_millau_client::Millau; +use sp_core::storage::StorageKey; +use sp_runtime::FixedU128; +use sp_version::RuntimeVersion; + +// Millau/Rialto tokens have no any real value, so the conversion rate we use is always 1:1. But we +// want to test our code that is intended to work with real-value chains. So to keep it close to +// 1:1, we'll be treating Rialto as BTC and Millau as wBTC (only in relayer). + +/// The identifier of token, which value is associated with Millau token value by relayer. +pub(crate) const ASSOCIATED_TOKEN_ID: &str = crate::chains::kusama::TOKEN_ID; + +impl CliEncodeCall for Millau { + fn max_extrinsic_size() -> u32 { + bp_millau::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Raw { data } => Decode::decode(&mut &*data.0)?, + Call::Remark { remark_payload, .. } => + millau_runtime::Call::System(millau_runtime::SystemCall::remark { + remark: remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + }), + Call::Transfer { recipient, amount } => + millau_runtime::Call::Balances(millau_runtime::BalancesCall::transfer { + dest: recipient.raw_id(), + value: amount.cast(), + }), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::MILLAU_TO_RIALTO_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + millau_runtime::Call::BridgeRialtoMessages( + millau_runtime::MessagesCall::send_message { + lane_id: lane.0, + payload, + delivery_and_dispatch_fee: fee.cast(), + }, + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + }) + } + + fn get_dispatch_info(call: &millau_runtime::Call) -> anyhow::Result { + Ok(call.get_dispatch_info()) + } +} + +impl CliChain for Millau { + const RUNTIME_VERSION: RuntimeVersion = millau_runtime::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = MessagePayload< + bp_millau::AccountId, + bp_rialto::AccountSigner, + bp_rialto::Signature, + Vec, + >; + + fn ss58_format() -> u16 { + millau_runtime::SS58Prefix::get() as u16 + } + + fn max_extrinsic_weight() -> Weight { + bp_millau::max_extrinsic_weight() + } + + // TODO [#854|#843] support multiple bridges? + fn encode_message( + message: encode_message::MessagePayload, + ) -> anyhow::Result { + match message { + encode_message::MessagePayload::Raw { data } => MessagePayload::decode(&mut &*data.0) + .map_err(|e| anyhow!("Failed to decode Millau's MessagePayload: {:?}", e)), + encode_message::MessagePayload::Call { mut call, mut sender } => { + type Source = Millau; + type Target = relay_rialto_client::Rialto; + + sender.enforce_chain::(); + let spec_version = Target::RUNTIME_VERSION.spec_version; + let origin = CallOrigin::SourceAccount(sender.raw_id()); + encode_call::preprocess_call::( + &mut call, + bridge::MILLAU_TO_RIALTO_INDEX, + ); + let call = Target::encode_call(&call)?; + let weight = call.get_dispatch_info().weight; + + Ok(send_message::message_payload( + spec_version, + weight, + origin, + &call, + DispatchFeePayment::AtSourceChain, + )) + }, + } + } +} + +/// Storage key and initial value of Rialto -> Millau conversion rate. +pub(crate) fn rialto_to_millau_conversion_rate_params() -> (StorageKey, FixedU128) { + ( + StorageKey(millau_runtime::rialto_messages::RialtoToMillauConversionRate::key().to_vec()), + millau_runtime::rialto_messages::INITIAL_RIALTO_TO_MILLAU_CONVERSION_RATE, + ) +} diff --git a/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs b/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs new file mode 100644 index 000000000000..14a0430f6a91 --- /dev/null +++ b/relays/bin-substrate/src/chains/millau_headers_to_rialto.rs @@ -0,0 +1,80 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Millau-to-Rialto headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_millau_client::{Millau, SyncHeader as MillauSyncHeader}; +use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams}; +use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Millau-to-Rialto finality sync pipeline. +pub(crate) type FinalityPipelineMillauToRialto = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct MillauFinalityToRialto { + finality_pipeline: FinalityPipelineMillauToRialto, +} + +impl MillauFinalityToRialto { + pub fn new(target_client: Client, target_sign: RialtoSigningParams) -> Self { + Self { finality_pipeline: FinalityPipelineMillauToRialto::new(target_client, target_sign) } + } +} + +impl SubstrateFinalitySyncPipeline for MillauFinalityToRialto { + type FinalitySyncPipeline = FinalityPipelineMillauToRialto; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; + + type TargetChain = Rialto; + + fn transactions_author(&self) -> bp_rialto::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: IndexOf, + header: MillauSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = rialto_runtime::BridgeGrandpaMillauCall::submit_finality_proof { + finality_target: Box::new(header.into_inner()), + justification: proof, + } + .into(); + + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Rialto::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} diff --git a/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs b/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs new file mode 100644 index 000000000000..c4179eea330f --- /dev/null +++ b/relays/bin-substrate/src/chains/millau_messages_to_rialto.rs @@ -0,0 +1,325 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Millau-to-Rialto messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use frame_support::dispatch::GetDispatchInfo; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use frame_support::weights::Weight; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_millau_client::{ + HeaderId as MillauHeaderId, Millau, SigningParams as MillauSigningParams, +}; +use relay_rialto_client::{ + HeaderId as RialtoHeaderId, Rialto, SigningParams as RialtoSigningParams, +}; +use relay_substrate_client::{Chain, Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Millau-to-Rialto message lane. +pub type MessageLaneMillauMessagesToRialto = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct MillauMessagesToRialto { + message_lane: MessageLaneMillauMessagesToRialto, +} + +impl SubstrateMessageLane for MillauMessagesToRialto { + type MessageLane = MessageLaneMillauMessagesToRialto; + + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_rialto::TO_RIALTO_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_rialto::TO_RIALTO_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_rialto::TO_RIALTO_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_millau::FROM_MILLAU_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_millau::FROM_MILLAU_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_millau::FROM_MILLAU_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = bp_millau::WITH_RIALTO_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = bp_rialto::WITH_MILLAU_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_rialto::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Millau; + type TargetChain = Rialto; + + fn source_transactions_author(&self) -> bp_millau::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: MillauHeaderId, + transaction_nonce: IndexOf, + _generated_at_block: RialtoHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call: millau_runtime::Call = + millau_runtime::MessagesCall::receive_messages_delivery_proof { proof, relayers_state } + .into(); + let call_weight = call.get_dispatch_info().weight; + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Millau::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Rialto -> Millau confirmation transaction. Weight: {}/{}, size: {}/{}", + call_weight, + bp_millau::max_extrinsic_weight(), + transaction.encode().len(), + bp_millau::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_rialto::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: RialtoHeaderId, + transaction_nonce: IndexOf, + _generated_at_header: MillauHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + let call: rialto_runtime::Call = rialto_runtime::MessagesCall::receive_messages_proof { + relayer_id_at_bridged_chain: self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count: messages_count as _, + dispatch_weight, + } + .into(); + let call_weight = call.get_dispatch_info().weight; + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Rialto::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Millau -> Rialto delivery transaction. Weight: {}/{}, size: {}/{}", + call_weight, + bp_rialto::max_extrinsic_weight(), + transaction.encode().len(), + bp_rialto::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Millau node as messages source. +type MillauSourceClient = SubstrateMessagesSource; + +/// Rialto node as messages target. +type RialtoTargetClient = SubstrateMessagesTarget; + +/// Run Millau-to-Rialto messages sync. +pub async fn run( + params: MessagesRelayParams< + Millau, + MillauSigningParams, + Rialto, + RialtoSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Millau::AVERAGE_BLOCK_INTERVAL, + Rialto::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_millau = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = MillauMessagesToRialto { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_millau, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_rialto::max_extrinsic_size() / 3; + // TODO: use Millau weights after https://github.com/paritytech/parity-bridges-common/issues/390 + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_rialto::max_extrinsic_weight(), + bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + + log::info!( + target: "bridge", + "Starting Millau -> Rialto messages relay.\n\t\ + Millau relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Millau::AVERAGE_BLOCK_INTERVAL, + target_tick: Rialto::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_rialto::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_rialto::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + MillauSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + RialtoTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Millau -> Rialto messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + Some(crate::chains::millau::ASSOCIATED_TOKEN_ID), + Some(crate::chains::rialto::ASSOCIATED_TOKEN_ID), + Some(crate::chains::rialto::millau_to_rialto_conversion_rate_params()), + Some(crate::chains::millau::rialto_to_millau_conversion_rate_params()), + ) +} + +/// Update Rialto -> Millau conversion rate, stored in Millau runtime storage. +pub(crate) async fn update_rialto_to_millau_conversion_rate( + client: Client, + signer: ::AccountKeyPair, + updated_rate: f64, +) -> anyhow::Result<()> { + let genesis_hash = *client.genesis_hash(); + let signer_id = (*signer.public().as_array_ref()).into(); + client + .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { + Bytes( + Millau::sign_transaction( + genesis_hash, + &signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + millau_runtime::MessagesCall::update_pallet_parameter { + parameter: millau_runtime::rialto_messages::MillauToRialtoMessagesParameter::RialtoToMillauConversionRate( + sp_runtime::FixedU128::from_float(updated_rate), + ), + } + .into(), + transaction_nonce, + ), + ) + .encode(), + ) + }) + .await + .map(drop) + .map_err(|err| anyhow::format_err!("{:?}", err)) +} diff --git a/relays/bin-substrate/src/chains/mod.rs b/relays/bin-substrate/src/chains/mod.rs new file mode 100644 index 000000000000..e9cb2d9b737f --- /dev/null +++ b/relays/bin-substrate/src/chains/mod.rs @@ -0,0 +1,349 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Chain-specific relayer configuration. + +pub mod kusama_headers_to_polkadot; +pub mod kusama_messages_to_polkadot; +pub mod millau_headers_to_rialto; +pub mod millau_messages_to_rialto; +pub mod polkadot_headers_to_kusama; +pub mod polkadot_messages_to_kusama; +pub mod rialto_headers_to_millau; +pub mod rialto_messages_to_millau; +pub mod rococo_headers_to_wococo; +pub mod rococo_messages_to_wococo; +pub mod westend_headers_to_millau; +pub mod wococo_headers_to_rococo; +pub mod wococo_messages_to_rococo; + +mod kusama; +mod millau; +mod polkadot; +mod rialto; +mod rialto_parachain; +mod rococo; +mod westend; +mod wococo; + +use relay_utils::metrics::{MetricsParams, StandaloneMetric}; + +pub(crate) fn add_polkadot_kusama_price_metrics( + params: MetricsParams, +) -> anyhow::Result { + substrate_relay_helper::helpers::token_price_metric(polkadot::TOKEN_ID)? + .register_and_spawn(¶ms.registry)?; + substrate_relay_helper::helpers::token_price_metric(kusama::TOKEN_ID)? + .register_and_spawn(¶ms.registry)?; + Ok(params) +} + +#[cfg(test)] +mod tests { + use crate::cli::{encode_call, send_message}; + use bp_messages::source_chain::TargetHeaderChain; + use codec::Encode; + use frame_support::dispatch::GetDispatchInfo; + use relay_millau_client::Millau; + use relay_rialto_client::Rialto; + use relay_substrate_client::{TransactionSignScheme, UnsignedTransaction}; + use sp_core::Pair; + use sp_runtime::traits::{IdentifyAccount, Verify}; + + #[test] + fn millau_signature_is_valid_on_rialto() { + let millau_sign = relay_millau_client::SigningParams::from_string("//Dave", None).unwrap(); + + let call = + rialto_runtime::Call::System(rialto_runtime::SystemCall::remark { remark: vec![] }); + + let millau_public: bp_millau::AccountSigner = millau_sign.public().into(); + let millau_account_id: bp_millau::AccountId = millau_public.into_account(); + + let digest = millau_runtime::millau_to_rialto_account_ownership_digest( + &call, + millau_account_id, + rialto_runtime::VERSION.spec_version, + ); + + let rialto_signer = + relay_rialto_client::SigningParams::from_string("//Dave", None).unwrap(); + let signature = rialto_signer.sign(&digest); + + assert!(signature.verify(&digest[..], &rialto_signer.public())); + } + + #[test] + fn rialto_signature_is_valid_on_millau() { + let rialto_sign = relay_rialto_client::SigningParams::from_string("//Dave", None).unwrap(); + + let call = + millau_runtime::Call::System(millau_runtime::SystemCall::remark { remark: vec![] }); + + let rialto_public: bp_rialto::AccountSigner = rialto_sign.public().into(); + let rialto_account_id: bp_rialto::AccountId = rialto_public.into_account(); + + let digest = rialto_runtime::rialto_to_millau_account_ownership_digest( + &call, + rialto_account_id, + millau_runtime::VERSION.spec_version, + ); + + let millau_signer = + relay_millau_client::SigningParams::from_string("//Dave", None).unwrap(); + let signature = millau_signer.sign(&digest); + + assert!(signature.verify(&digest[..], &millau_signer.public())); + } + + #[test] + fn maximal_rialto_to_millau_message_arguments_size_is_computed_correctly() { + use rialto_runtime::millau_messages::Millau; + + let maximal_remark_size = encode_call::compute_maximal_message_arguments_size( + bp_rialto::max_extrinsic_size(), + bp_millau::max_extrinsic_size(), + ); + + let call: millau_runtime::Call = + millau_runtime::SystemCall::remark { remark: vec![42; maximal_remark_size as _] } + .into(); + let payload = send_message::message_payload( + Default::default(), + call.get_dispatch_info().weight, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert_eq!(Millau::verify_message(&payload), Ok(())); + + let call: millau_runtime::Call = + millau_runtime::SystemCall::remark { remark: vec![42; (maximal_remark_size + 1) as _] } + .into(); + let payload = send_message::message_payload( + Default::default(), + call.get_dispatch_info().weight, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert!(Millau::verify_message(&payload).is_err()); + } + + #[test] + fn maximal_size_remark_to_rialto_is_generated_correctly() { + assert!( + bridge_runtime_common::messages::target::maximal_incoming_message_size( + bp_rialto::max_extrinsic_size() + ) > bp_millau::max_extrinsic_size(), + "We can't actually send maximal messages to Rialto from Millau, because Millau extrinsics can't be that large", + ) + } + + #[test] + fn maximal_rialto_to_millau_message_dispatch_weight_is_computed_correctly() { + use rialto_runtime::millau_messages::Millau; + + let maximal_dispatch_weight = send_message::compute_maximal_message_dispatch_weight( + bp_millau::max_extrinsic_weight(), + ); + let call: millau_runtime::Call = + rialto_runtime::SystemCall::remark { remark: vec![] }.into(); + + let payload = send_message::message_payload( + Default::default(), + maximal_dispatch_weight, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert_eq!(Millau::verify_message(&payload), Ok(())); + + let payload = send_message::message_payload( + Default::default(), + maximal_dispatch_weight + 1, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert!(Millau::verify_message(&payload).is_err()); + } + + #[test] + fn maximal_weight_fill_block_to_rialto_is_generated_correctly() { + use millau_runtime::rialto_messages::Rialto; + + let maximal_dispatch_weight = send_message::compute_maximal_message_dispatch_weight( + bp_rialto::max_extrinsic_weight(), + ); + let call: rialto_runtime::Call = + millau_runtime::SystemCall::remark { remark: vec![] }.into(); + + let payload = send_message::message_payload( + Default::default(), + maximal_dispatch_weight, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert_eq!(Rialto::verify_message(&payload), Ok(())); + + let payload = send_message::message_payload( + Default::default(), + maximal_dispatch_weight + 1, + bp_message_dispatch::CallOrigin::SourceRoot, + &call, + send_message::DispatchFeePayment::AtSourceChain, + ); + assert!(Rialto::verify_message(&payload).is_err()); + } + + #[test] + fn rialto_tx_extra_bytes_constant_is_correct() { + let rialto_call = + rialto_runtime::Call::System(rialto_runtime::SystemCall::remark { remark: vec![] }); + let rialto_tx = Rialto::sign_transaction( + Default::default(), + &sp_keyring::AccountKeyring::Alice.pair(), + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(rialto_call.clone(), 0), + ); + let extra_bytes_in_transaction = rialto_tx.encode().len() - rialto_call.encode().len(); + assert!( + bp_rialto::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction, + "Hardcoded number of extra bytes in Rialto transaction {} is lower than actual value: {}", + bp_rialto::TX_EXTRA_BYTES, + extra_bytes_in_transaction, + ); + } + + #[test] + fn millau_tx_extra_bytes_constant_is_correct() { + let millau_call = + millau_runtime::Call::System(millau_runtime::SystemCall::remark { remark: vec![] }); + let millau_tx = Millau::sign_transaction( + Default::default(), + &sp_keyring::AccountKeyring::Alice.pair(), + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(millau_call.clone(), 0), + ); + let extra_bytes_in_transaction = millau_tx.encode().len() - millau_call.encode().len(); + assert!( + bp_millau::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction, + "Hardcoded number of extra bytes in Millau transaction {} is lower than actual value: {}", + bp_millau::TX_EXTRA_BYTES, + extra_bytes_in_transaction, + ); + } +} + +#[cfg(test)] +mod rococo_tests { + use bp_header_chain::justification::GrandpaJustification; + use codec::Encode; + + #[test] + fn scale_compatibility_of_bridges_call() { + // given + let header = sp_runtime::generic::Header { + parent_hash: Default::default(), + number: Default::default(), + state_root: Default::default(), + extrinsics_root: Default::default(), + digest: sp_runtime::generic::Digest { logs: vec![] }, + }; + + let justification = GrandpaJustification { + round: 0, + commit: finality_grandpa::Commit { + target_hash: Default::default(), + target_number: Default::default(), + precommits: vec![], + }, + votes_ancestries: vec![], + }; + + let actual = relay_rococo_client::runtime::BridgeGrandpaWococoCall::submit_finality_proof( + Box::new(header.clone()), + justification.clone(), + ); + let expected = + millau_runtime::BridgeGrandpaCall::::submit_finality_proof { + finality_target: Box::new(header), + justification, + }; + + // when + let actual_encoded = actual.encode(); + let expected_encoded = expected.encode(); + + // then + assert_eq!( + actual_encoded, expected_encoded, + "\n\nEncoding difference.\nGot {:#?} \nExpected: {:#?}", + actual, expected + ); + } +} + +#[cfg(test)] +mod westend_tests { + use bp_header_chain::justification::GrandpaJustification; + use codec::Encode; + + #[test] + fn scale_compatibility_of_bridges_call() { + // given + let header = sp_runtime::generic::Header { + parent_hash: Default::default(), + number: Default::default(), + state_root: Default::default(), + extrinsics_root: Default::default(), + digest: sp_runtime::generic::Digest { logs: vec![] }, + }; + + let justification = GrandpaJustification { + round: 0, + commit: finality_grandpa::Commit { + target_hash: Default::default(), + target_number: Default::default(), + precommits: vec![], + }, + votes_ancestries: vec![], + }; + + let actual = relay_kusama_client::runtime::BridgePolkadotGrandpaCall::submit_finality_proof( + Box::new(header.clone()), + justification.clone(), + ); + let expected = + millau_runtime::BridgeGrandpaCall::::submit_finality_proof { + finality_target: Box::new(header), + justification, + }; + + // when + let actual_encoded = actual.encode(); + let expected_encoded = expected.encode(); + + // then + assert_eq!( + actual_encoded, expected_encoded, + "\n\nEncoding difference.\nGot {:#?} \nExpected: {:#?}", + actual, expected + ); + } +} diff --git a/relays/bin-substrate/src/chains/polkadot.rs b/relays/bin-substrate/src/chains/polkadot.rs new file mode 100644 index 000000000000..7b6256d1749f --- /dev/null +++ b/relays/bin-substrate/src/chains/polkadot.rs @@ -0,0 +1,116 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use codec::Decode; +use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; +use relay_polkadot_client::Polkadot; +use sp_core::storage::StorageKey; +use sp_runtime::{FixedPointNumber, FixedU128}; +use sp_version::RuntimeVersion; + +use crate::cli::{ + bridge, + encode_call::{Call, CliEncodeCall}, + encode_message, CliChain, +}; + +/// Weight of the `system::remark` call at Polkadot. +/// +/// This weight is larger (x2) than actual weight at current Polkadot runtime to avoid unsuccessful +/// calls in the future. But since it is used only in tests (and on test chains), this is ok. +pub(crate) const SYSTEM_REMARK_CALL_WEIGHT: Weight = 2 * 1_345_000; + +/// Id of Polkadot token that is used to fetch token price. +pub(crate) const TOKEN_ID: &str = "polkadot"; + +impl CliEncodeCall for Polkadot { + fn max_extrinsic_size() -> u32 { + bp_polkadot::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Remark { remark_payload, .. } => relay_polkadot_client::runtime::Call::System( + relay_polkadot_client::runtime::SystemCall::remark( + remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + ), + ), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::POLKADOT_TO_KUSAMA_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + relay_polkadot_client::runtime::Call::BridgeKusamaMessages( + relay_polkadot_client::runtime::BridgeKusamaMessagesCall::send_message( + lane.0, payload, fee.0, + ), + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + _ => anyhow::bail!("Unsupported Polkadot call: {:?}", call), + }) + } + + fn get_dispatch_info( + call: &relay_polkadot_client::runtime::Call, + ) -> anyhow::Result { + match *call { + relay_polkadot_client::runtime::Call::System( + relay_polkadot_client::runtime::SystemCall::remark(_), + ) => Ok(DispatchInfo { + weight: crate::chains::polkadot::SYSTEM_REMARK_CALL_WEIGHT, + class: DispatchClass::Normal, + pays_fee: Pays::Yes, + }), + _ => anyhow::bail!("Unsupported Polkadot call: {:?}", call), + } + } +} + +impl CliChain for Polkadot { + const RUNTIME_VERSION: RuntimeVersion = bp_polkadot::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = (); + + fn ss58_format() -> u16 { + 42 + } + + fn max_extrinsic_weight() -> Weight { + bp_polkadot::max_extrinsic_weight() + } + + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + anyhow::bail!("Sending messages from Polkadot is not yet supported.") + } +} + +/// Storage key and initial value of Kusama -> Polkadot conversion rate. +pub(crate) fn kusama_to_polkadot_conversion_rate_params() -> (StorageKey, FixedU128) { + ( + bp_runtime::storage_parameter_key( + bp_polkadot::KUSAMA_TO_POLKADOT_CONVERSION_RATE_PARAMETER_NAME, + ), + // starting relay before this parameter will be set to some value may cause troubles + FixedU128::from_inner(FixedU128::DIV), + ) +} diff --git a/relays/bin-substrate/src/chains/polkadot_headers_to_kusama.rs b/relays/bin-substrate/src/chains/polkadot_headers_to_kusama.rs new file mode 100644 index 000000000000..b1948b234cc3 --- /dev/null +++ b/relays/bin-substrate/src/chains/polkadot_headers_to_kusama.rs @@ -0,0 +1,131 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Polkadot-to-Kusama headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_kusama_client::{Kusama, SigningParams as KusamaSigningParams}; +use relay_polkadot_client::{Polkadot, SyncHeader as PolkadotSyncHeader}; +use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction}; +use relay_utils::metrics::MetricsParams; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Maximal saturating difference between `balance(now)` and `balance(now-24h)` to treat +/// relay as gone wild. +/// +/// Actual value, returned by `maximal_balance_decrease_per_day_is_sane` test is approximately 0.001 +/// KSM, but let's round up to 0.1 KSM here. +pub(crate) const MAXIMAL_BALANCE_DECREASE_PER_DAY: bp_polkadot::Balance = 100_000_000_000; + +/// Polkadot-to-Kusama finality sync pipeline. +pub(crate) type FinalityPipelinePolkadotFinalityToKusama = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct PolkadotFinalityToKusama { + finality_pipeline: FinalityPipelinePolkadotFinalityToKusama, +} + +impl PolkadotFinalityToKusama { + pub fn new(target_client: Client, target_sign: KusamaSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelinePolkadotFinalityToKusama::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for PolkadotFinalityToKusama { + type FinalitySyncPipeline = FinalityPipelinePolkadotFinalityToKusama; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_polkadot::BEST_FINALIZED_POLKADOT_HEADER_METHOD; + + type TargetChain = Kusama; + + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + crate::chains::add_polkadot_kusama_price_metrics::(params) + } + + fn start_relay_guards(&self) { + relay_substrate_client::guard::abort_on_spec_version_change( + self.finality_pipeline.target_client.clone(), + bp_kusama::VERSION.spec_version, + ); + relay_substrate_client::guard::abort_when_account_balance_decreased( + self.finality_pipeline.target_client.clone(), + self.transactions_author(), + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } + + fn transactions_author(&self) -> bp_kusama::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: bp_runtime::IndexOf, + header: PolkadotSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = relay_kusama_client::runtime::Call::BridgePolkadotGrandpa( + relay_kusama_client::runtime::BridgePolkadotGrandpaCall::submit_finality_proof( + Box::new(header.into_inner()), + proof, + ), + ); + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Kusama::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::chains::kusama_headers_to_polkadot::tests::compute_maximal_balance_decrease_per_day; + + #[test] + fn maximal_balance_decrease_per_day_is_sane() { + // we expect Polkadot -> Kusama relay to be running in mandatory-headers-only mode + // => we expect single header for every Polkadot session + let maximal_balance_decrease = compute_maximal_balance_decrease_per_day::< + bp_kusama::Balance, + bp_kusama::WeightToFee, + >(bp_polkadot::DAYS / bp_polkadot::SESSION_LENGTH + 1); + assert!( + MAXIMAL_BALANCE_DECREASE_PER_DAY >= maximal_balance_decrease, + "Maximal expected loss per day {} is larger than hardcoded {}", + maximal_balance_decrease, + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } +} diff --git a/relays/bin-substrate/src/chains/polkadot_messages_to_kusama.rs b/relays/bin-substrate/src/chains/polkadot_messages_to_kusama.rs new file mode 100644 index 000000000000..bc7f22243092 --- /dev/null +++ b/relays/bin-substrate/src/chains/polkadot_messages_to_kusama.rs @@ -0,0 +1,330 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Polkadot-to-Kusama messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use frame_support::weights::Weight; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_kusama_client::{ + HeaderId as KusamaHeaderId, Kusama, SigningParams as KusamaSigningParams, +}; +use relay_polkadot_client::{ + HeaderId as PolkadotHeaderId, Polkadot, SigningParams as PolkadotSigningParams, +}; +use relay_substrate_client::{Chain, Client, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Polkadot-to-Kusama message lane. +pub type MessageLanePolkadotMessagesToKusama = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct PolkadotMessagesToKusama { + message_lane: MessageLanePolkadotMessagesToKusama, +} + +impl SubstrateMessageLane for PolkadotMessagesToKusama { + type MessageLane = MessageLanePolkadotMessagesToKusama; + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_kusama::TO_KUSAMA_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_kusama::TO_KUSAMA_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_kusama::TO_KUSAMA_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_polkadot::FROM_POLKADOT_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_polkadot::FROM_POLKADOT_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_polkadot::FROM_POLKADOT_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_polkadot::BEST_FINALIZED_POLKADOT_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_kusama::BEST_FINALIZED_KUSAMA_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = + bp_polkadot::WITH_KUSAMA_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = + bp_kusama::WITH_POLKADOT_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_kusama::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Polkadot; + type TargetChain = Kusama; + + fn source_transactions_author(&self) -> bp_polkadot::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: PolkadotHeaderId, + transaction_nonce: bp_runtime::IndexOf, + _generated_at_block: KusamaHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call = relay_polkadot_client::runtime::Call::BridgeKusamaMessages( + relay_polkadot_client::runtime::BridgeKusamaMessagesCall::receive_messages_delivery_proof( + proof, + relayers_state, + ), + ); + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Polkadot::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Kusama -> Polkadot confirmation transaction. Weight: /{}, size: {}/{}", + bp_polkadot::max_extrinsic_weight(), + transaction.encode().len(), + bp_polkadot::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_kusama::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: KusamaHeaderId, + transaction_nonce: bp_runtime::IndexOf, + _generated_at_header: PolkadotHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + + let call = relay_kusama_client::runtime::Call::BridgePolkadotMessages( + relay_kusama_client::runtime::BridgePolkadotMessagesCall::receive_messages_proof( + self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count as _, + dispatch_weight, + ), + ); + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Kusama::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Polkadot -> Kusama delivery transaction. Weight: /{}, size: {}/{}", + bp_kusama::max_extrinsic_weight(), + transaction.encode().len(), + bp_kusama::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Polkadot node as messages source. +type PolkadotSourceClient = SubstrateMessagesSource; + +/// Kusama node as messages target. +type KusamaTargetClient = SubstrateMessagesTarget; + +/// Run Polkadot-to-Kusama messages sync. +pub async fn run( + params: MessagesRelayParams< + Polkadot, + PolkadotSigningParams, + Kusama, + KusamaSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Polkadot::AVERAGE_BLOCK_INTERVAL, + Kusama::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_polkadot = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = PolkadotMessagesToKusama { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_polkadot, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_kusama::max_extrinsic_size() / 3; + // we don't know exact weights of the Kusama runtime. So to guess weights we'll be using + // weights from Rialto and then simply dividing it by x2. + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_kusama::max_extrinsic_weight(), + bp_kusama::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + (max_messages_in_single_batch / 2, max_messages_weight_in_single_batch / 2); + + log::info!( + target: "bridge", + "Starting Polkadot -> Kusama messages relay.\n\t\ + Polkadot relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Polkadot::AVERAGE_BLOCK_INTERVAL, + target_tick: Kusama::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_kusama::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_kusama::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + PolkadotSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + KusamaTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Polkadot -> Kusama messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + Some(crate::chains::polkadot::TOKEN_ID), + Some(crate::chains::kusama::TOKEN_ID), + Some(crate::chains::kusama::polkadot_to_kusama_conversion_rate_params()), + Some(crate::chains::polkadot::kusama_to_polkadot_conversion_rate_params()), + ) +} + +/// Update Kusama -> Polkadot conversion rate, stored in Polkadot runtime storage. +pub(crate) async fn update_kusama_to_polkadot_conversion_rate( + client: Client, + signer: ::AccountKeyPair, + updated_rate: f64, +) -> anyhow::Result<()> { + let genesis_hash = *client.genesis_hash(); + let signer_id = (*signer.public().as_array_ref()).into(); + client + .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { + Bytes( + Polkadot::sign_transaction( + genesis_hash, + &signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + relay_polkadot_client::runtime::Call::BridgeKusamaMessages( + relay_polkadot_client::runtime::BridgeKusamaMessagesCall::update_pallet_parameter( + relay_polkadot_client::runtime::BridgeKusamaMessagesParameter::KusamaToPolkadotConversionRate( + sp_runtime::FixedU128::from_float(updated_rate), + ) + ) + ), + transaction_nonce, + ), + ) + .encode(), + ) + }) + .await + .map(drop) + .map_err(|err| anyhow::format_err!("{:?}", err)) +} diff --git a/relays/bin-substrate/src/chains/rialto.rs b/relays/bin-substrate/src/chains/rialto.rs new file mode 100644 index 000000000000..2d873a24ba7a --- /dev/null +++ b/relays/bin-substrate/src/chains/rialto.rs @@ -0,0 +1,141 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto chain specification for CLI. + +use crate::cli::{ + bridge, + encode_call::{self, Call, CliEncodeCall}, + encode_message, + send_message::{self, DispatchFeePayment}, + CliChain, +}; +use anyhow::anyhow; +use bp_message_dispatch::{CallOrigin, MessagePayload}; +use codec::Decode; +use frame_support::weights::{DispatchInfo, GetDispatchInfo, Weight}; +use relay_rialto_client::Rialto; +use sp_core::storage::StorageKey; +use sp_runtime::FixedU128; +use sp_version::RuntimeVersion; + +// Millau/Rialto tokens have no any real value, so the conversion rate we use is always 1:1. But we +// want to test our code that is intended to work with real-value chains. So to keep it close to +// 1:1, we'll be treating Rialto as BTC and Millau as wBTC (only in relayer). + +/// The identifier of token, which value is associated with Rialto token value by relayer. +pub(crate) const ASSOCIATED_TOKEN_ID: &str = crate::chains::polkadot::TOKEN_ID; + +impl CliEncodeCall for Rialto { + fn max_extrinsic_size() -> u32 { + bp_rialto::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Raw { data } => Decode::decode(&mut &*data.0)?, + Call::Remark { remark_payload, .. } => + rialto_runtime::Call::System(rialto_runtime::SystemCall::remark { + remark: remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + }), + Call::Transfer { recipient, amount } => + rialto_runtime::Call::Balances(rialto_runtime::BalancesCall::transfer { + dest: recipient.raw_id().into(), + value: amount.0, + }), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::RIALTO_TO_MILLAU_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + rialto_runtime::Call::BridgeMillauMessages( + rialto_runtime::MessagesCall::send_message { + lane_id: lane.0, + payload, + delivery_and_dispatch_fee: fee.0, + }, + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + }) + } + + fn get_dispatch_info(call: &rialto_runtime::Call) -> anyhow::Result { + Ok(call.get_dispatch_info()) + } +} + +impl CliChain for Rialto { + const RUNTIME_VERSION: RuntimeVersion = rialto_runtime::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = MessagePayload< + bp_rialto::AccountId, + bp_millau::AccountSigner, + bp_millau::Signature, + Vec, + >; + + fn ss58_format() -> u16 { + rialto_runtime::SS58Prefix::get() as u16 + } + + fn max_extrinsic_weight() -> Weight { + bp_rialto::max_extrinsic_weight() + } + + fn encode_message( + message: encode_message::MessagePayload, + ) -> anyhow::Result { + match message { + encode_message::MessagePayload::Raw { data } => MessagePayload::decode(&mut &*data.0) + .map_err(|e| anyhow!("Failed to decode Rialto's MessagePayload: {:?}", e)), + encode_message::MessagePayload::Call { mut call, mut sender } => { + type Source = Rialto; + type Target = relay_millau_client::Millau; + + sender.enforce_chain::(); + let spec_version = Target::RUNTIME_VERSION.spec_version; + let origin = CallOrigin::SourceAccount(sender.raw_id()); + encode_call::preprocess_call::( + &mut call, + bridge::RIALTO_TO_MILLAU_INDEX, + ); + let call = Target::encode_call(&call)?; + let weight = call.get_dispatch_info().weight; + + Ok(send_message::message_payload( + spec_version, + weight, + origin, + &call, + DispatchFeePayment::AtSourceChain, + )) + }, + } + } +} + +/// Storage key and initial value of Millau -> Rialto conversion rate. +pub(crate) fn millau_to_rialto_conversion_rate_params() -> (StorageKey, FixedU128) { + ( + StorageKey(rialto_runtime::millau_messages::MillauToRialtoConversionRate::key().to_vec()), + rialto_runtime::millau_messages::INITIAL_MILLAU_TO_RIALTO_CONVERSION_RATE, + ) +} diff --git a/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs b/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs new file mode 100644 index 000000000000..7e76f403c55a --- /dev/null +++ b/relays/bin-substrate/src/chains/rialto_headers_to_millau.rs @@ -0,0 +1,88 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto-to-Millau headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_millau_client::{Millau, SigningParams as MillauSigningParams}; +use relay_rialto_client::{Rialto, SyncHeader as RialtoSyncHeader}; +use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Rialto-to-Millau finality sync pipeline. +pub(crate) type FinalityPipelineRialtoFinalityToMillau = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub struct RialtoFinalityToMillau { + finality_pipeline: FinalityPipelineRialtoFinalityToMillau, +} + +impl RialtoFinalityToMillau { + pub fn new(target_client: Client, target_sign: MillauSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelineRialtoFinalityToMillau::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for RialtoFinalityToMillau { + type FinalitySyncPipeline = FinalityPipelineRialtoFinalityToMillau; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; + + type TargetChain = Millau; + + fn transactions_author(&self) -> bp_millau::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: IndexOf, + header: RialtoSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = millau_runtime::BridgeGrandpaCall::< + millau_runtime::Runtime, + millau_runtime::RialtoGrandpaInstance, + >::submit_finality_proof { + finality_target: Box::new(header.into_inner()), + justification: proof, + } + .into(); + + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Millau::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} diff --git a/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs b/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs new file mode 100644 index 000000000000..774da017df0c --- /dev/null +++ b/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs @@ -0,0 +1,324 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto-to-Millau messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use frame_support::dispatch::GetDispatchInfo; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use frame_support::weights::Weight; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_millau_client::{ + HeaderId as MillauHeaderId, Millau, SigningParams as MillauSigningParams, +}; +use relay_rialto_client::{ + HeaderId as RialtoHeaderId, Rialto, SigningParams as RialtoSigningParams, +}; +use relay_substrate_client::{Chain, Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Rialto-to-Millau message lane. +pub type MessageLaneRialtoMessagesToMillau = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct RialtoMessagesToMillau { + message_lane: MessageLaneRialtoMessagesToMillau, +} + +impl SubstrateMessageLane for RialtoMessagesToMillau { + type MessageLane = MessageLaneRialtoMessagesToMillau; + + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_millau::TO_MILLAU_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_millau::TO_MILLAU_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_millau::TO_MILLAU_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_rialto::FROM_RIALTO_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_rialto::FROM_RIALTO_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_rialto::FROM_RIALTO_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_rialto::BEST_FINALIZED_RIALTO_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_millau::BEST_FINALIZED_MILLAU_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = bp_rialto::WITH_MILLAU_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = bp_millau::WITH_RIALTO_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_millau::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Rialto; + type TargetChain = Millau; + + fn source_transactions_author(&self) -> bp_rialto::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: RialtoHeaderId, + transaction_nonce: IndexOf, + _generated_at_block: MillauHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call: rialto_runtime::Call = + rialto_runtime::MessagesCall::receive_messages_delivery_proof { proof, relayers_state } + .into(); + let call_weight = call.get_dispatch_info().weight; + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Rialto::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Millau -> Rialto confirmation transaction. Weight: {}/{}, size: {}/{}", + call_weight, + bp_rialto::max_extrinsic_weight(), + transaction.encode().len(), + bp_rialto::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_millau::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: MillauHeaderId, + transaction_nonce: IndexOf, + _generated_at_header: RialtoHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + let call: millau_runtime::Call = millau_runtime::MessagesCall::receive_messages_proof { + relayer_id_at_bridged_chain: self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count: messages_count as _, + dispatch_weight, + } + .into(); + let call_weight = call.get_dispatch_info().weight; + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Millau::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Rialto -> Millau delivery transaction. Weight: {}/{}, size: {}/{}", + call_weight, + bp_millau::max_extrinsic_weight(), + transaction.encode().len(), + bp_millau::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Rialto node as messages source. +type RialtoSourceClient = SubstrateMessagesSource; + +/// Millau node as messages target. +type MillauTargetClient = SubstrateMessagesTarget; + +/// Run Rialto-to-Millau messages sync. +pub async fn run( + params: MessagesRelayParams< + Rialto, + RialtoSigningParams, + Millau, + MillauSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Rialto::AVERAGE_BLOCK_INTERVAL, + Millau::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_rialto = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = RialtoMessagesToMillau { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_rialto, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_millau::max_extrinsic_size() / 3; + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_millau::max_extrinsic_weight(), + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + + log::info!( + target: "bridge", + "Starting Rialto -> Millau messages relay.\n\t\ + Rialto relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Rialto::AVERAGE_BLOCK_INTERVAL, + target_tick: Millau::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_millau::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + RialtoSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + MillauTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Rialto -> Millau messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + Some(crate::chains::rialto::ASSOCIATED_TOKEN_ID), + Some(crate::chains::millau::ASSOCIATED_TOKEN_ID), + Some(crate::chains::millau::rialto_to_millau_conversion_rate_params()), + Some(crate::chains::rialto::millau_to_rialto_conversion_rate_params()), + ) +} + +/// Update Millau -> Rialto conversion rate, stored in Rialto runtime storage. +pub(crate) async fn update_millau_to_rialto_conversion_rate( + client: Client, + signer: ::AccountKeyPair, + updated_rate: f64, +) -> anyhow::Result<()> { + let genesis_hash = *client.genesis_hash(); + let signer_id = (*signer.public().as_array_ref()).into(); + client + .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { + Bytes( + Rialto::sign_transaction( + genesis_hash, + &signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + rialto_runtime::MessagesCall::update_pallet_parameter { + parameter: rialto_runtime::millau_messages::RialtoToMillauMessagesParameter::MillauToRialtoConversionRate( + sp_runtime::FixedU128::from_float(updated_rate), + ), + } + .into(), + transaction_nonce, + ), + ) + .encode(), + ) + }) + .await + .map(drop) + .map_err(|err| anyhow::format_err!("{:?}", err)) +} diff --git a/relays/bin-substrate/src/chains/rialto_parachain.rs b/relays/bin-substrate/src/chains/rialto_parachain.rs new file mode 100644 index 000000000000..edd4ca362854 --- /dev/null +++ b/relays/bin-substrate/src/chains/rialto_parachain.rs @@ -0,0 +1,82 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rialto parachain specification for CLI. + +use crate::cli::{ + encode_call::{Call, CliEncodeCall}, + encode_message, CliChain, +}; +use bp_message_dispatch::MessagePayload; +use codec::Decode; +use frame_support::weights::{DispatchInfo, GetDispatchInfo, Weight}; +use relay_rialto_parachain_client::RialtoParachain; +use sp_version::RuntimeVersion; + +impl CliEncodeCall for RialtoParachain { + fn max_extrinsic_size() -> u32 { + bp_rialto_parachain::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Raw { data } => Decode::decode(&mut &*data.0)?, + Call::Remark { remark_payload, .. } => rialto_parachain_runtime::Call::System( + rialto_parachain_runtime::SystemCall::remark { + remark: remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + }, + ), + Call::Transfer { recipient, amount } => rialto_parachain_runtime::Call::Balances( + rialto_parachain_runtime::BalancesCall::transfer { + dest: recipient.raw_id().into(), + value: amount.0, + }, + ), + Call::BridgeSendMessage { .. } => + anyhow::bail!("Bridge messages are not (yet) supported here",), + }) + } + + fn get_dispatch_info(call: &rialto_parachain_runtime::Call) -> anyhow::Result { + Ok(call.get_dispatch_info()) + } +} + +impl CliChain for RialtoParachain { + const RUNTIME_VERSION: RuntimeVersion = rialto_parachain_runtime::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = MessagePayload< + bp_rialto_parachain::AccountId, + bp_millau::AccountSigner, + bp_millau::Signature, + Vec, + >; + + fn ss58_format() -> u16 { + rialto_parachain_runtime::SS58Prefix::get() as u16 + } + + fn max_extrinsic_weight() -> Weight { + bp_rialto_parachain::max_extrinsic_weight() + } + + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + anyhow::bail!("Not supported") + } +} diff --git a/relays/bin-substrate/src/chains/rococo.rs b/relays/bin-substrate/src/chains/rococo.rs new file mode 100644 index 000000000000..4df60f89faa2 --- /dev/null +++ b/relays/bin-substrate/src/chains/rococo.rs @@ -0,0 +1,101 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use anyhow::anyhow; +use codec::Decode; +use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; +use relay_rococo_client::Rococo; +use sp_version::RuntimeVersion; + +use crate::cli::{ + bridge, + encode_call::{Call, CliEncodeCall}, + encode_message, CliChain, +}; + +/// Weight of the `system::remark` call at Rococo. +/// +/// This weight is larger (x2) than actual weight at current Rococo runtime to avoid unsuccessful +/// calls in the future. But since it is used only in tests (and on test chains), this is ok. +pub(crate) const SYSTEM_REMARK_CALL_WEIGHT: Weight = 2 * 1_345_000; + +impl CliEncodeCall for Rococo { + fn max_extrinsic_size() -> u32 { + bp_rococo::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Remark { remark_payload, .. } => relay_rococo_client::runtime::Call::System( + relay_rococo_client::runtime::SystemCall::remark( + remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + ), + ), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::ROCOCO_TO_WOCOCO_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + relay_rococo_client::runtime::Call::BridgeMessagesWococo( + relay_rococo_client::runtime::BridgeMessagesWococoCall::send_message( + lane.0, payload, fee.0, + ), + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + _ => anyhow::bail!("The call is not supported"), + }) + } + + fn get_dispatch_info( + call: &relay_rococo_client::runtime::Call, + ) -> anyhow::Result { + match *call { + relay_rococo_client::runtime::Call::System( + relay_rococo_client::runtime::SystemCall::remark(_), + ) => Ok(DispatchInfo { + weight: SYSTEM_REMARK_CALL_WEIGHT, + class: DispatchClass::Normal, + pays_fee: Pays::Yes, + }), + _ => anyhow::bail!("Unsupported Rococo call: {:?}", call), + } + } +} + +impl CliChain for Rococo { + const RUNTIME_VERSION: RuntimeVersion = bp_rococo::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = (); + + fn ss58_format() -> u16 { + 42 + } + + fn max_extrinsic_weight() -> Weight { + bp_wococo::max_extrinsic_weight() + } + + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + Err(anyhow!("Sending messages from Rococo is not yet supported.")) + } +} diff --git a/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs b/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs new file mode 100644 index 000000000000..ec98cec1ec1e --- /dev/null +++ b/relays/bin-substrate/src/chains/rococo_headers_to_wococo.rs @@ -0,0 +1,104 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rococo-to-Wococo headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_rococo_client::{Rococo, SyncHeader as RococoSyncHeader}; +use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use relay_utils::metrics::MetricsParams; +use relay_wococo_client::{SigningParams as WococoSigningParams, Wococo}; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +use crate::chains::wococo_headers_to_rococo::MAXIMAL_BALANCE_DECREASE_PER_DAY; + +/// Rococo-to-Wococo finality sync pipeline. +pub(crate) type FinalityPipelineRococoFinalityToWococo = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct RococoFinalityToWococo { + finality_pipeline: FinalityPipelineRococoFinalityToWococo, +} + +impl RococoFinalityToWococo { + pub fn new(target_client: Client, target_sign: WococoSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelineRococoFinalityToWococo::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for RococoFinalityToWococo { + type FinalitySyncPipeline = FinalityPipelineRococoFinalityToWococo; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; + + type TargetChain = Wococo; + + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + crate::chains::add_polkadot_kusama_price_metrics::(params) + } + + fn start_relay_guards(&self) { + relay_substrate_client::guard::abort_on_spec_version_change( + self.finality_pipeline.target_client.clone(), + bp_wococo::VERSION.spec_version, + ); + relay_substrate_client::guard::abort_when_account_balance_decreased( + self.finality_pipeline.target_client.clone(), + self.transactions_author(), + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } + + fn transactions_author(&self) -> bp_wococo::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: IndexOf, + header: RococoSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = relay_wococo_client::runtime::Call::BridgeGrandpaRococo( + relay_wococo_client::runtime::BridgeGrandpaRococoCall::submit_finality_proof( + Box::new(header.into_inner()), + proof, + ), + ); + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Wococo::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} diff --git a/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs b/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs new file mode 100644 index 000000000000..d6c9040e1277 --- /dev/null +++ b/relays/bin-substrate/src/chains/rococo_messages_to_wococo.rs @@ -0,0 +1,295 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rococo-to-Wococo messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use frame_support::weights::Weight; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_rococo_client::{ + HeaderId as RococoHeaderId, Rococo, SigningParams as RococoSigningParams, +}; +use relay_substrate_client::{Chain, Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use relay_wococo_client::{ + HeaderId as WococoHeaderId, SigningParams as WococoSigningParams, Wococo, +}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Rococo-to-Wococo message lane. +pub type MessageLaneRococoMessagesToWococo = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct RococoMessagesToWococo { + message_lane: MessageLaneRococoMessagesToWococo, +} + +impl SubstrateMessageLane for RococoMessagesToWococo { + type MessageLane = MessageLaneRococoMessagesToWococo; + + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_wococo::TO_WOCOCO_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_wococo::TO_WOCOCO_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_wococo::TO_WOCOCO_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_rococo::FROM_ROCOCO_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_rococo::FROM_ROCOCO_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_rococo::FROM_ROCOCO_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = bp_rococo::WITH_WOCOCO_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = bp_wococo::WITH_ROCOCO_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_wococo::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Rococo; + type TargetChain = Wococo; + + fn source_transactions_author(&self) -> bp_rococo::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: RococoHeaderId, + transaction_nonce: IndexOf, + _generated_at_block: WococoHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call = relay_rococo_client::runtime::Call::BridgeMessagesWococo( + relay_rococo_client::runtime::BridgeMessagesWococoCall::receive_messages_delivery_proof( + proof, + relayers_state, + ), + ); + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Rococo::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Wococo -> Rococo confirmation transaction. Weight: /{}, size: {}/{}", + bp_rococo::max_extrinsic_weight(), + transaction.encode().len(), + bp_rococo::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_wococo::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: WococoHeaderId, + transaction_nonce: IndexOf, + _generated_at_header: RococoHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + + let call = relay_wococo_client::runtime::Call::BridgeMessagesRococo( + relay_wococo_client::runtime::BridgeMessagesRococoCall::receive_messages_proof( + self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count as _, + dispatch_weight, + ), + ); + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Wococo::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Rococo -> Wococo delivery transaction. Weight: /{}, size: {}/{}", + bp_wococo::max_extrinsic_weight(), + transaction.encode().len(), + bp_wococo::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Rococo node as messages source. +type RococoSourceClient = SubstrateMessagesSource; + +/// Wococo node as messages target. +type WococoTargetClient = SubstrateMessagesTarget; + +/// Run Rococo-to-Wococo messages sync. +pub async fn run( + params: MessagesRelayParams< + Rococo, + RococoSigningParams, + Wococo, + WococoSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Rococo::AVERAGE_BLOCK_INTERVAL, + Wococo::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_rococo = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = RococoMessagesToWococo { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_rococo, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_wococo::max_extrinsic_size() / 3; + // we don't know exact weights of the Wococo runtime. So to guess weights we'll be using + // weights from Rialto and then simply dividing it by x2. + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_wococo::max_extrinsic_weight(), + bp_wococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + (max_messages_in_single_batch / 2, max_messages_weight_in_single_batch / 2); + + log::info!( + target: "bridge", + "Starting Rococo -> Wococo messages relay.\n\t\ + Rococo relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Rococo::AVERAGE_BLOCK_INTERVAL, + target_tick: Wococo::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_wococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_wococo::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + RococoSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + WococoTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Rococo -> Wococo messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + None, + None, + None, + None, + ) +} diff --git a/bridges/relays/bin-substrate/src/chains/westend.rs b/relays/bin-substrate/src/chains/westend.rs similarity index 85% rename from bridges/relays/bin-substrate/src/chains/westend.rs rename to relays/bin-substrate/src/chains/westend.rs index 27621472d6d9..a42e4805512c 100644 --- a/bridges/relays/bin-substrate/src/chains/westend.rs +++ b/relays/bin-substrate/src/chains/westend.rs @@ -17,6 +17,7 @@ //! Westend chain specification for CLI. use crate::cli::{encode_message, CliChain}; +use anyhow::anyhow; use frame_support::weights::Weight; use relay_westend_client::Westend; use sp_version::RuntimeVersion; @@ -35,7 +36,9 @@ impl CliChain for Westend { 0 } - fn encode_message(_message: encode_message::MessagePayload) -> Result { - Err("Sending messages from Westend is not yet supported.".into()) + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + Err(anyhow!("Sending messages from Westend is not yet supported.")) } } diff --git a/relays/bin-substrate/src/chains/westend_headers_to_millau.rs b/relays/bin-substrate/src/chains/westend_headers_to_millau.rs new file mode 100644 index 000000000000..211aa9da9bfe --- /dev/null +++ b/relays/bin-substrate/src/chains/westend_headers_to_millau.rs @@ -0,0 +1,93 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Westend-to-Millau headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_millau_client::{Millau, SigningParams as MillauSigningParams}; +use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use relay_utils::metrics::MetricsParams; +use relay_westend_client::{SyncHeader as WestendSyncHeader, Westend}; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Westend-to-Millau finality sync pipeline. +pub(crate) type FinalityPipelineWestendFinalityToMillau = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct WestendFinalityToMillau { + finality_pipeline: FinalityPipelineWestendFinalityToMillau, +} + +impl WestendFinalityToMillau { + pub fn new(target_client: Client, target_sign: MillauSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelineWestendFinalityToMillau::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for WestendFinalityToMillau { + type FinalitySyncPipeline = FinalityPipelineWestendFinalityToMillau; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_westend::BEST_FINALIZED_WESTEND_HEADER_METHOD; + + type TargetChain = Millau; + + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + crate::chains::add_polkadot_kusama_price_metrics::(params) + } + + fn transactions_author(&self) -> bp_millau::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: IndexOf, + header: WestendSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = millau_runtime::BridgeGrandpaCall::< + millau_runtime::Runtime, + millau_runtime::WestendGrandpaInstance, + >::submit_finality_proof { + finality_target: Box::new(header.into_inner()), + justification: proof, + } + .into(); + + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Millau::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} diff --git a/relays/bin-substrate/src/chains/wococo.rs b/relays/bin-substrate/src/chains/wococo.rs new file mode 100644 index 000000000000..328397d14ba7 --- /dev/null +++ b/relays/bin-substrate/src/chains/wococo.rs @@ -0,0 +1,95 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use anyhow::anyhow; +use codec::Decode; +use frame_support::weights::{DispatchClass, DispatchInfo, Pays, Weight}; +use relay_wococo_client::Wococo; +use sp_version::RuntimeVersion; + +use crate::cli::{ + bridge, + encode_call::{Call, CliEncodeCall}, + encode_message, CliChain, +}; + +impl CliEncodeCall for Wococo { + fn max_extrinsic_size() -> u32 { + bp_wococo::max_extrinsic_size() + } + + fn encode_call(call: &Call) -> anyhow::Result { + Ok(match call { + Call::Remark { remark_payload, .. } => relay_wococo_client::runtime::Call::System( + relay_wococo_client::runtime::SystemCall::remark( + remark_payload.as_ref().map(|x| x.0.clone()).unwrap_or_default(), + ), + ), + Call::BridgeSendMessage { lane, payload, fee, bridge_instance_index } => + match *bridge_instance_index { + bridge::WOCOCO_TO_ROCOCO_INDEX => { + let payload = Decode::decode(&mut &*payload.0)?; + relay_wococo_client::runtime::Call::BridgeMessagesRococo( + relay_wococo_client::runtime::BridgeMessagesRococoCall::send_message( + lane.0, payload, fee.0, + ), + ) + }, + _ => anyhow::bail!( + "Unsupported target bridge pallet with instance index: {}", + bridge_instance_index + ), + }, + _ => anyhow::bail!("The call is not supported"), + }) + } + + fn get_dispatch_info( + call: &relay_wococo_client::runtime::Call, + ) -> anyhow::Result { + match *call { + relay_wococo_client::runtime::Call::System( + relay_wococo_client::runtime::SystemCall::remark(_), + ) => Ok(DispatchInfo { + weight: crate::chains::rococo::SYSTEM_REMARK_CALL_WEIGHT, + class: DispatchClass::Normal, + pays_fee: Pays::Yes, + }), + _ => anyhow::bail!("Unsupported Rococo call: {:?}", call), + } + } +} + +impl CliChain for Wococo { + const RUNTIME_VERSION: RuntimeVersion = bp_wococo::VERSION; + + type KeyPair = sp_core::sr25519::Pair; + type MessagePayload = (); + + fn ss58_format() -> u16 { + 42 + } + + fn max_extrinsic_weight() -> Weight { + bp_wococo::max_extrinsic_weight() + } + + fn encode_message( + _message: encode_message::MessagePayload, + ) -> anyhow::Result { + Err(anyhow!("Sending messages from Wococo is not yet supported.")) + } +} diff --git a/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs b/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs new file mode 100644 index 000000000000..fe17976d06a8 --- /dev/null +++ b/relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs @@ -0,0 +1,130 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Wococo-to-Rococo headers sync entrypoint. + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_header_chain::justification::GrandpaJustification; +use relay_rococo_client::{Rococo, SigningParams as RococoSigningParams}; +use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use relay_utils::metrics::MetricsParams; +use relay_wococo_client::{SyncHeader as WococoSyncHeader, Wococo}; +use substrate_relay_helper::finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, +}; + +/// Maximal saturating difference between `balance(now)` and `balance(now-24h)` to treat +/// relay as gone wild. +/// +/// See `maximal_balance_decrease_per_day_is_sane` test for details. +/// Note that this is in plancks, so this corresponds to `1500 UNITS`. +pub(crate) const MAXIMAL_BALANCE_DECREASE_PER_DAY: bp_rococo::Balance = 1_500_000_000_000_000; + +/// Wococo-to-Rococo finality sync pipeline. +pub(crate) type FinalityPipelineWococoFinalityToRococo = + SubstrateFinalityToSubstrate; + +#[derive(Clone, Debug)] +pub(crate) struct WococoFinalityToRococo { + finality_pipeline: FinalityPipelineWococoFinalityToRococo, +} + +impl WococoFinalityToRococo { + pub fn new(target_client: Client, target_sign: RococoSigningParams) -> Self { + Self { + finality_pipeline: FinalityPipelineWococoFinalityToRococo::new( + target_client, + target_sign, + ), + } + } +} + +impl SubstrateFinalitySyncPipeline for WococoFinalityToRococo { + type FinalitySyncPipeline = FinalityPipelineWococoFinalityToRococo; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; + + type TargetChain = Rococo; + + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + crate::chains::add_polkadot_kusama_price_metrics::(params) + } + + fn start_relay_guards(&self) { + relay_substrate_client::guard::abort_on_spec_version_change( + self.finality_pipeline.target_client.clone(), + bp_rococo::VERSION.spec_version, + ); + relay_substrate_client::guard::abort_when_account_balance_decreased( + self.finality_pipeline.target_client.clone(), + self.transactions_author(), + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } + + fn transactions_author(&self) -> bp_rococo::AccountId { + (*self.finality_pipeline.target_sign.public().as_array_ref()).into() + } + + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: IndexOf, + header: WococoSyncHeader, + proof: GrandpaJustification, + ) -> Bytes { + let call = relay_rococo_client::runtime::Call::BridgeGrandpaWococo( + relay_rococo_client::runtime::BridgeGrandpaWococoCall::submit_finality_proof( + Box::new(header.into_inner()), + proof, + ), + ); + let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); + let transaction = Rococo::sign_transaction( + genesis_hash, + &self.finality_pipeline.target_sign, + era, + UnsignedTransaction::new(call, transaction_nonce), + ); + + Bytes(transaction.encode()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::chains::kusama_headers_to_polkadot::tests::compute_maximal_balance_decrease_per_day; + + #[test] + fn maximal_balance_decrease_per_day_is_sane() { + // we expect Wococo -> Rococo relay to be running in all-headers mode + let maximal_balance_decrease = compute_maximal_balance_decrease_per_day::< + bp_kusama::Balance, + bp_kusama::WeightToFee, + >(bp_wococo::DAYS); + assert!( + MAXIMAL_BALANCE_DECREASE_PER_DAY >= maximal_balance_decrease, + "Maximal expected loss per day {} is larger than hardcoded {}", + maximal_balance_decrease, + MAXIMAL_BALANCE_DECREASE_PER_DAY, + ); + } +} diff --git a/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs b/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs new file mode 100644 index 000000000000..dcba89e43f05 --- /dev/null +++ b/relays/bin-substrate/src/chains/wococo_messages_to_rococo.rs @@ -0,0 +1,294 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Wococo-to-Rococo messages sync entrypoint. + +use std::ops::RangeInclusive; + +use codec::Encode; +use sp_core::{Bytes, Pair}; + +use bp_messages::MessageNonce; +use bridge_runtime_common::messages::target::FromBridgedChainMessagesProof; +use frame_support::weights::Weight; +use messages_relay::{message_lane::MessageLane, relay_strategy::MixStrategy}; +use relay_rococo_client::{ + HeaderId as RococoHeaderId, Rococo, SigningParams as RococoSigningParams, +}; +use relay_substrate_client::{Chain, Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; +use relay_wococo_client::{ + HeaderId as WococoHeaderId, SigningParams as WococoSigningParams, Wococo, +}; +use substrate_relay_helper::{ + messages_lane::{ + select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, + SubstrateMessageLane, SubstrateMessageLaneToSubstrate, + }, + messages_source::SubstrateMessagesSource, + messages_target::SubstrateMessagesTarget, + STALL_TIMEOUT, +}; + +/// Wococo-to-Rococo message lane. +pub type MessageLaneWococoMessagesToRococo = + SubstrateMessageLaneToSubstrate; + +#[derive(Clone)] +pub struct WococoMessagesToRococo { + message_lane: MessageLaneWococoMessagesToRococo, +} + +impl SubstrateMessageLane for WococoMessagesToRococo { + type MessageLane = MessageLaneWococoMessagesToRococo; + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = + bp_rococo::TO_ROCOCO_MESSAGE_DETAILS_METHOD; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = + bp_rococo::TO_ROCOCO_LATEST_GENERATED_NONCE_METHOD; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_rococo::TO_ROCOCO_LATEST_RECEIVED_NONCE_METHOD; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = + bp_wococo::FROM_WOCOCO_LATEST_RECEIVED_NONCE_METHOD; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = + bp_wococo::FROM_WOCOCO_LATEST_CONFIRMED_NONCE_METHOD; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = + bp_wococo::FROM_WOCOCO_UNREWARDED_RELAYERS_STATE; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = + bp_wococo::BEST_FINALIZED_WOCOCO_HEADER_METHOD; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = + bp_rococo::BEST_FINALIZED_ROCOCO_HEADER_METHOD; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = bp_wococo::WITH_ROCOCO_MESSAGES_PALLET_NAME; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = bp_rococo::WITH_WOCOCO_MESSAGES_PALLET_NAME; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = + bp_rococo::PAY_INBOUND_DISPATCH_FEE_WEIGHT; + + type SourceChain = Wococo; + type TargetChain = Rococo; + + fn source_transactions_author(&self) -> bp_wococo::AccountId { + (*self.message_lane.source_sign.public().as_array_ref()).into() + } + + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: WococoHeaderId, + transaction_nonce: IndexOf, + _generated_at_block: RococoHeaderId, + proof: ::MessagesReceivingProof, + ) -> Bytes { + let (relayers_state, proof) = proof; + let call = relay_wococo_client::runtime::Call::BridgeMessagesRococo( + relay_wococo_client::runtime::BridgeMessagesRococoCall::receive_messages_delivery_proof( + proof, + relayers_state, + ), + ); + let genesis_hash = *self.message_lane.source_client.genesis_hash(); + let transaction = Wococo::sign_transaction( + genesis_hash, + &self.message_lane.source_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.source_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Rococo -> Wococo confirmation transaction. Weight: /{}, size: {}/{}", + bp_wococo::max_extrinsic_weight(), + transaction.encode().len(), + bp_wococo::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } + + fn target_transactions_author(&self) -> bp_rococo::AccountId { + (*self.message_lane.target_sign.public().as_array_ref()).into() + } + + fn make_messages_delivery_transaction( + &self, + best_block_id: WococoHeaderId, + transaction_nonce: IndexOf, + _generated_at_header: WococoHeaderId, + _nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes { + let (dispatch_weight, proof) = proof; + let FromBridgedChainMessagesProof { ref nonces_start, ref nonces_end, .. } = proof; + let messages_count = nonces_end - nonces_start + 1; + + let call = relay_rococo_client::runtime::Call::BridgeMessagesWococo( + relay_rococo_client::runtime::BridgeMessagesWococoCall::receive_messages_proof( + self.message_lane.relayer_id_at_source.clone(), + proof, + messages_count as _, + dispatch_weight, + ), + ); + let genesis_hash = *self.message_lane.target_client.genesis_hash(); + let transaction = Rococo::sign_transaction( + genesis_hash, + &self.message_lane.target_sign, + relay_substrate_client::TransactionEra::new( + best_block_id, + self.message_lane.target_transactions_mortality, + ), + UnsignedTransaction::new(call, transaction_nonce), + ); + log::trace!( + target: "bridge", + "Prepared Wococo -> Rococo delivery transaction. Weight: /{}, size: {}/{}", + bp_rococo::max_extrinsic_weight(), + transaction.encode().len(), + bp_rococo::max_extrinsic_size(), + ); + Bytes(transaction.encode()) + } +} + +/// Wococo node as messages source. +type WococoSourceClient = SubstrateMessagesSource; + +/// Rococo node as messages target. +type RococoTargetClient = SubstrateMessagesTarget; + +/// Run Wococo-to-Rococo messages sync. +pub async fn run( + params: MessagesRelayParams< + Wococo, + WococoSigningParams, + Rococo, + RococoSigningParams, + MixStrategy, + >, +) -> anyhow::Result<()> { + let stall_timeout = relay_substrate_client::bidirectional_transaction_stall_timeout( + params.source_transactions_mortality, + params.target_transactions_mortality, + Wococo::AVERAGE_BLOCK_INTERVAL, + Rococo::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ); + let relayer_id_at_wococo = (*params.source_sign.public().as_array_ref()).into(); + + let lane_id = params.lane_id; + let source_client = params.source_client; + let target_client = params.target_client; + let lane = WococoMessagesToRococo { + message_lane: SubstrateMessageLaneToSubstrate { + source_client: source_client.clone(), + source_sign: params.source_sign, + source_transactions_mortality: params.source_transactions_mortality, + target_client: target_client.clone(), + target_sign: params.target_sign, + target_transactions_mortality: params.target_transactions_mortality, + relayer_id_at_source: relayer_id_at_wococo, + }, + }; + + // 2/3 is reserved for proofs and tx overhead + let max_messages_size_in_single_batch = bp_rococo::max_extrinsic_size() / 3; + // we don't know exact weights of the Rococo runtime. So to guess weights we'll be using + // weights from Rialto and then simply dividing it by x2. + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + select_delivery_transaction_limits::< + pallet_bridge_messages::weights::RialtoWeight, + >( + bp_rococo::max_extrinsic_weight(), + bp_rococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + let (max_messages_in_single_batch, max_messages_weight_in_single_batch) = + (max_messages_in_single_batch / 2, max_messages_weight_in_single_batch / 2); + + log::info!( + target: "bridge", + "Starting Wococo -> Rococo messages relay.\n\t\ + Wococo relayer account id: {:?}\n\t\ + Max messages in single transaction: {}\n\t\ + Max messages size in single transaction: {}\n\t\ + Max messages weight in single transaction: {}\n\t\ + Tx mortality: {:?}/{:?}\n\t\ + Stall timeout: {:?}", + lane.message_lane.relayer_id_at_source, + max_messages_in_single_batch, + max_messages_size_in_single_batch, + max_messages_weight_in_single_batch, + params.source_transactions_mortality, + params.target_transactions_mortality, + stall_timeout, + ); + + let standalone_metrics = params + .standalone_metrics + .map(Ok) + .unwrap_or_else(|| standalone_metrics(source_client.clone(), target_client.clone()))?; + messages_relay::message_lane_loop::run( + messages_relay::message_lane_loop::Params { + lane: lane_id, + source_tick: Wococo::AVERAGE_BLOCK_INTERVAL, + target_tick: Rococo::AVERAGE_BLOCK_INTERVAL, + reconnect_delay: relay_utils::relay_loop::RECONNECT_DELAY, + stall_timeout, + delivery_params: messages_relay::message_lane_loop::MessageDeliveryParams { + max_unrewarded_relayer_entries_at_target: + bp_rococo::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + max_unconfirmed_nonces_at_target: + bp_rococo::MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE, + max_messages_in_single_batch, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + }, + }, + WococoSourceClient::new( + source_client.clone(), + lane.clone(), + lane_id, + params.target_to_source_headers_relay, + ), + RococoTargetClient::new( + target_client, + lane, + lane_id, + standalone_metrics.clone(), + params.source_to_target_headers_relay, + ), + standalone_metrics.register_and_spawn(params.metrics_params)?, + futures::future::pending(), + ) + .await + .map_err(Into::into) +} + +/// Create standalone metrics for the Wococo -> Rococo messages loop. +pub(crate) fn standalone_metrics( + source_client: Client, + target_client: Client, +) -> anyhow::Result> { + substrate_relay_helper::messages_lane::standalone_metrics( + source_client, + target_client, + None, + None, + None, + None, + ) +} diff --git a/relays/bin-substrate/src/cli/bridge.rs b/relays/bin-substrate/src/cli/bridge.rs new file mode 100644 index 000000000000..1af6142c53ec --- /dev/null +++ b/relays/bin-substrate/src/cli/bridge.rs @@ -0,0 +1,195 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use strum::{EnumString, EnumVariantNames}; + +#[derive(Debug, PartialEq, Eq, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Supported full bridges (headers + messages). +pub enum FullBridge { + MillauToRialto, + RialtoToMillau, + RococoToWococo, + WococoToRococo, + KusamaToPolkadot, + PolkadotToKusama, +} + +impl FullBridge { + /// Return instance index of the bridge pallet in source runtime. + pub fn bridge_instance_index(&self) -> u8 { + match self { + Self::MillauToRialto => MILLAU_TO_RIALTO_INDEX, + Self::RialtoToMillau => RIALTO_TO_MILLAU_INDEX, + Self::RococoToWococo => ROCOCO_TO_WOCOCO_INDEX, + Self::WococoToRococo => WOCOCO_TO_ROCOCO_INDEX, + Self::KusamaToPolkadot => KUSAMA_TO_POLKADOT_INDEX, + Self::PolkadotToKusama => POLKADOT_TO_KUSAMA_INDEX, + } + } +} + +pub const RIALTO_TO_MILLAU_INDEX: u8 = 0; +pub const MILLAU_TO_RIALTO_INDEX: u8 = 0; +pub const ROCOCO_TO_WOCOCO_INDEX: u8 = 0; +pub const WOCOCO_TO_ROCOCO_INDEX: u8 = 0; +pub const KUSAMA_TO_POLKADOT_INDEX: u8 = 0; +pub const POLKADOT_TO_KUSAMA_INDEX: u8 = 0; + +/// The macro allows executing bridge-specific code without going fully generic. +/// +/// It matches on the [`FullBridge`] enum, sets bridge-specific types or imports and injects +/// the `$generic` code at every variant. +#[macro_export] +macro_rules! select_full_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + FullBridge::MillauToRialto => { + type Source = relay_millau_client::Millau; + #[allow(dead_code)] + type Target = relay_rialto_client::Rialto; + + // Derive-account + #[allow(unused_imports)] + use bp_rialto::derive_account_from_millau_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::millau_messages_to_rialto::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_rialto::TO_RIALTO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + // Send-message + #[allow(unused_imports)] + use millau_runtime::millau_to_rialto_account_ownership_digest as account_ownership_digest; + + $generic + } + FullBridge::RialtoToMillau => { + type Source = relay_rialto_client::Rialto; + #[allow(dead_code)] + type Target = relay_millau_client::Millau; + + // Derive-account + #[allow(unused_imports)] + use bp_millau::derive_account_from_rialto_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::rialto_messages_to_millau::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_millau::TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + + // Send-message + #[allow(unused_imports)] + use rialto_runtime::rialto_to_millau_account_ownership_digest as account_ownership_digest; + + $generic + } + FullBridge::RococoToWococo => { + type Source = relay_rococo_client::Rococo; + #[allow(dead_code)] + type Target = relay_wococo_client::Wococo; + + // Derive-account + #[allow(unused_imports)] + use bp_wococo::derive_account_from_rococo_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::rococo_messages_to_wococo::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_wococo::TO_WOCOCO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + // Send-message + #[allow(unused_imports)] + use relay_rococo_client::runtime::rococo_to_wococo_account_ownership_digest as account_ownership_digest; + + $generic + } + FullBridge::WococoToRococo => { + type Source = relay_wococo_client::Wococo; + #[allow(dead_code)] + type Target = relay_rococo_client::Rococo; + + // Derive-account + #[allow(unused_imports)] + use bp_rococo::derive_account_from_wococo_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::wococo_messages_to_rococo::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_rococo::TO_ROCOCO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + // Send-message + #[allow(unused_imports)] + use relay_wococo_client::runtime::wococo_to_rococo_account_ownership_digest as account_ownership_digest; + + $generic + } + FullBridge::KusamaToPolkadot => { + type Source = relay_kusama_client::Kusama; + #[allow(dead_code)] + type Target = relay_polkadot_client::Polkadot; + + // Derive-account + #[allow(unused_imports)] + use bp_polkadot::derive_account_from_kusama_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::kusama_messages_to_polkadot::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_polkadot::TO_POLKADOT_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + // Send-message + #[allow(unused_imports)] + use relay_kusama_client::runtime::kusama_to_polkadot_account_ownership_digest as account_ownership_digest; + + $generic + } + FullBridge::PolkadotToKusama => { + type Source = relay_polkadot_client::Polkadot; + #[allow(dead_code)] + type Target = relay_kusama_client::Kusama; + + // Derive-account + #[allow(unused_imports)] + use bp_kusama::derive_account_from_polkadot_id as derive_account; + + // Relay-messages + #[allow(unused_imports)] + use crate::chains::polkadot_messages_to_kusama::run as relay_messages; + + // Send-message / Estimate-fee + #[allow(unused_imports)] + use bp_kusama::TO_KUSAMA_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_MESSAGE_FEE_METHOD; + // Send-message + #[allow(unused_imports)] + use relay_polkadot_client::runtime::polkadot_to_kusama_account_ownership_digest as account_ownership_digest; + + $generic + } + } + }; +} diff --git a/bridges/relays/bin-substrate/src/cli/derive_account.rs b/relays/bin-substrate/src/cli/derive_account.rs similarity index 83% rename from bridges/relays/bin-substrate/src/cli/derive_account.rs rename to relays/bin-substrate/src/cli/derive_account.rs index dff62c21f6fe..5b809eb69f22 100644 --- a/bridges/relays/bin-substrate/src/cli/derive_account.rs +++ b/relays/bin-substrate/src/cli/derive_account.rs @@ -14,10 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -use crate::cli::{bridge::FullBridge, AccountId}; -use crate::select_full_bridge; +use crate::{ + cli::{bridge::FullBridge, AccountId}, + select_full_bridge, +}; use relay_substrate_client::Chain; use structopt::StructOpt; +use strum::VariantNames; /// Given a source chain `AccountId`, derive the corresponding `AccountId` for the target chain. /// @@ -27,8 +30,8 @@ use structopt::StructOpt; /// since messages sent over the bridge will be able to spend these. #[derive(StructOpt)] pub struct DeriveAccount { - /// A bridge instance to initalize. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + /// A bridge instance to initialize. + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, /// Source-chain address to derive Target-chain address from. account: AccountId, @@ -54,11 +57,7 @@ impl DeriveAccount { select_full_bridge!(self.bridge, { let (account, derived_account) = self.derive_account(); println!("Source address:\n{} ({})", account, Source::NAME); - println!( - "->Corresponding (derived) address:\n{} ({})", - derived_account, - Target::NAME, - ); + println!("->Corresponding (derived) address:\n{} ({})", derived_account, Target::NAME,); Ok(()) }) @@ -80,9 +79,9 @@ mod tests { let millau = "752paRyW1EGfq9YLTSSqcSJ5hqnBDidBmaftGhBo8fy6ypW9"; // when - let (rialto_parsed, rialto_derived) = derive_account_cli("RialtoToMillau", rialto); - let (millau_parsed, millau_derived) = derive_account_cli("MillauToRialto", millau); - let (millau2_parsed, millau2_derived) = derive_account_cli("MillauToRialto", rialto); + let (rialto_parsed, rialto_derived) = derive_account_cli("rialto-to-millau", rialto); + let (millau_parsed, millau_derived) = derive_account_cli("millau-to-rialto", millau); + let (millau2_parsed, millau2_derived) = derive_account_cli("millau-to-rialto", rialto); // then assert_eq!(format!("{}", rialto_parsed), rialto); diff --git a/relays/bin-substrate/src/cli/encode_call.rs b/relays/bin-substrate/src/cli/encode_call.rs new file mode 100644 index 000000000000..ca0e6dd8abff --- /dev/null +++ b/relays/bin-substrate/src/cli/encode_call.rs @@ -0,0 +1,352 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + cli::{ + bridge::FullBridge, AccountId, Balance, CliChain, ExplicitOrMaximal, HexBytes, HexLaneId, + }, + select_full_bridge, +}; +use frame_support::weights::DispatchInfo; +use relay_substrate_client::Chain; +use structopt::StructOpt; +use strum::VariantNames; + +/// Encode source chain runtime call. +#[derive(StructOpt, Debug)] +pub struct EncodeCall { + /// A bridge instance to encode call for. + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] + bridge: FullBridge, + #[structopt(flatten)] + call: Call, +} + +/// All possible messages that may be delivered to generic Substrate chain. +/// +/// Note this enum may be used in the context of both Source (as part of `encode-call`) +/// and Target chain (as part of `encode-message/send-message`). +#[derive(StructOpt, Debug, PartialEq, Eq)] +pub enum Call { + /// Raw bytes for the message + Raw { + /// Raw, SCALE-encoded message + data: HexBytes, + }, + /// Make an on-chain remark (comment). + Remark { + /// Explicit remark payload. + #[structopt(long, conflicts_with("remark-size"))] + remark_payload: Option, + /// Remark size. If not passed, small UTF8-encoded string is generated by relay as remark. + #[structopt(long, conflicts_with("remark-payload"))] + remark_size: Option>, + }, + /// Transfer the specified `amount` of native tokens to a particular `recipient`. + Transfer { + /// Address of an account to receive the transfer. + #[structopt(long)] + recipient: AccountId, + /// Amount of target tokens to send in target chain base currency units. + #[structopt(long)] + amount: Balance, + }, + /// A call to the specific Bridge Messages pallet to queue message to be sent over a bridge. + BridgeSendMessage { + /// An index of the bridge instance which represents the expected target chain. + #[structopt(skip = 255)] + bridge_instance_index: u8, + /// Hex-encoded lane id that should be served by the relay. Defaults to `00000000`. + #[structopt(long, default_value = "00000000")] + lane: HexLaneId, + /// Raw SCALE-encoded Message Payload to submit to the messages pallet. + /// + /// This can be obtained by encoding call for the target chain. + #[structopt(long)] + payload: HexBytes, + /// Declared delivery and dispatch fee in base source-chain currency units. + #[structopt(long)] + fee: Balance, + }, +} + +pub trait CliEncodeCall: Chain { + /// Maximal size (in bytes) of any extrinsic (from the runtime). + fn max_extrinsic_size() -> u32; + + /// Encode a CLI call. + fn encode_call(call: &Call) -> anyhow::Result; + + /// Get dispatch info for the call. + fn get_dispatch_info(call: &Self::Call) -> anyhow::Result; +} + +impl EncodeCall { + fn encode(&mut self) -> anyhow::Result { + select_full_bridge!(self.bridge, { + preprocess_call::(&mut self.call, self.bridge.bridge_instance_index()); + let call = Source::encode_call(&self.call)?; + + let encoded = HexBytes::encode(&call); + + log::info!(target: "bridge", "Generated {} call: {:#?}", Source::NAME, call); + log::info!(target: "bridge", "Weight of {} call: {}", Source::NAME, Source::get_dispatch_info(&call)?.weight); + log::info!(target: "bridge", "Encoded {} call: {:?}", Source::NAME, encoded); + + Ok(encoded) + }) + } + + /// Run the command. + pub async fn run(mut self) -> anyhow::Result<()> { + println!("{:?}", self.encode()?); + Ok(()) + } +} + +/// Prepare the call to be passed to [`CliEncodeCall::encode_call`]. +/// +/// This function will fill in all optional and missing pieces and will make sure that +/// values are converted to bridge-specific ones. +/// +/// Most importantly, the method will fill-in [`bridge_instance_index`] parameter for +/// target-chain specific calls. +pub(crate) fn preprocess_call( + call: &mut Call, + bridge_instance: u8, +) { + match *call { + Call::Raw { .. } => {}, + Call::Remark { ref remark_size, ref mut remark_payload } => + if remark_payload.is_none() { + *remark_payload = Some(HexBytes(generate_remark_payload( + remark_size, + compute_maximal_message_arguments_size( + Source::max_extrinsic_size(), + Target::max_extrinsic_size(), + ), + ))); + }, + Call::Transfer { ref mut recipient, .. } => { + recipient.enforce_chain::(); + }, + Call::BridgeSendMessage { ref mut bridge_instance_index, .. } => { + *bridge_instance_index = bridge_instance; + }, + }; +} + +fn generate_remark_payload( + remark_size: &Option>, + maximal_allowed_size: u32, +) -> Vec { + match remark_size { + Some(ExplicitOrMaximal::Explicit(remark_size)) => vec![0; *remark_size], + Some(ExplicitOrMaximal::Maximal) => vec![0; maximal_allowed_size as _], + None => format!( + "Unix time: {}", + std::time::SystemTime::now() + .duration_since(std::time::SystemTime::UNIX_EPOCH) + .unwrap_or_default() + .as_secs(), + ) + .as_bytes() + .to_vec(), + } +} + +pub(crate) fn compute_maximal_message_arguments_size( + maximal_source_extrinsic_size: u32, + maximal_target_extrinsic_size: u32, +) -> u32 { + // assume that both signed extensions and other arguments fit 1KB + let service_tx_bytes_on_source_chain = 1024; + let maximal_source_extrinsic_size = + maximal_source_extrinsic_size - service_tx_bytes_on_source_chain; + let maximal_call_size = bridge_runtime_common::messages::target::maximal_incoming_message_size( + maximal_target_extrinsic_size, + ); + let maximal_call_size = if maximal_call_size > maximal_source_extrinsic_size { + maximal_source_extrinsic_size + } else { + maximal_call_size + }; + + // bytes in Call encoding that are used to encode everything except arguments + let service_bytes = 1 + 1 + 4; + maximal_call_size - service_bytes +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::cli::send_message::SendMessage; + + #[test] + fn should_encode_transfer_call() { + // given + let mut encode_call = EncodeCall::from_iter(vec![ + "encode-call", + "rialto-to-millau", + "transfer", + "--amount", + "12345", + "--recipient", + "5sauUXUfPjmwxSgmb3tZ5d6yx24eZX4wWJ2JtVUBaQqFbvEU", + ]); + + // when + let hex = encode_call.encode().unwrap(); + + // then + assert_eq!( + format!("{:?}", hex), + "0x040000d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27de5c0" + ); + } + + #[test] + fn should_encode_remark_with_default_payload() { + // given + let mut encode_call = + EncodeCall::from_iter(vec!["encode-call", "rialto-to-millau", "remark"]); + + // when + let hex = encode_call.encode().unwrap(); + + // then + assert!(format!("{:?}", hex).starts_with("0x000154556e69782074696d653a")); + } + + #[test] + fn should_encode_remark_with_explicit_payload() { + // given + let mut encode_call = EncodeCall::from_iter(vec![ + "encode-call", + "rialto-to-millau", + "remark", + "--remark-payload", + "1234", + ]); + + // when + let hex = encode_call.encode().unwrap(); + + // then + assert_eq!(format!("{:?}", hex), "0x0001081234"); + } + + #[test] + fn should_encode_remark_with_size() { + // given + let mut encode_call = EncodeCall::from_iter(vec![ + "encode-call", + "rialto-to-millau", + "remark", + "--remark-size", + "12", + ]); + + // when + let hex = encode_call.encode().unwrap(); + + // then + assert_eq!(format!("{:?}", hex), "0x000130000000000000000000000000"); + } + + #[test] + fn should_disallow_both_payload_and_size() { + // when + let err = EncodeCall::from_iter_safe(vec![ + "encode-call", + "rialto-to-millau", + "remark", + "--remark-payload", + "1234", + "--remark-size", + "12", + ]) + .unwrap_err(); + + // then + assert_eq!(err.kind, structopt::clap::ErrorKind::ArgumentConflict); + + let info = err.info.unwrap(); + assert!( + info.contains(&"remark-payload".to_string()) | + info.contains(&"remark-size".to_string()) + ) + } + + #[test] + fn should_encode_raw_call() { + // given + let mut encode_call = EncodeCall::from_iter(vec![ + "encode-call", + "rialto-to-millau", + "raw", + "040000d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27de5c0", + ]); + + // when + let hex = encode_call.encode().unwrap(); + + // then + assert_eq!( + format!("{:?}", hex), + "0x040000d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27de5c0" + ); + } + + #[test] + fn should_encode_bridge_send_message_call() { + // given + let encode_message = SendMessage::from_iter(vec![ + "send-message", + "millau-to-rialto", + "--source-port", + "10946", + "--source-signer", + "//Alice", + "--target-signer", + "//Alice", + "--origin", + "Target", + "remark", + ]) + .encode_payload() + .unwrap(); + + let mut encode_call = EncodeCall::from_iter(vec![ + "encode-call", + "rialto-to-millau", + "bridge-send-message", + "--fee", + "12345", + "--payload", + format!("{:}", &HexBytes::encode(&encode_message)).as_str(), + ]); + + // when + let call_hex = encode_call.encode().unwrap(); + + // then + assert!(format!("{:?}", call_hex).starts_with( + "0x0c030000000001000000381409000000000001d43593c715fdd31c61141abd04a99fd6822c8558854cc\ + de39a5684e7a56da27d01d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d01" + )) + } +} diff --git a/bridges/relays/bin-substrate/src/cli/encode_message.rs b/relays/bin-substrate/src/cli/encode_message.rs similarity index 81% rename from bridges/relays/bin-substrate/src/cli/encode_message.rs rename to relays/bin-substrate/src/cli/encode_message.rs index 213c8377678f..98e1269aa68e 100644 --- a/bridges/relays/bin-substrate/src/cli/encode_message.rs +++ b/relays/bin-substrate/src/cli/encode_message.rs @@ -14,9 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -use crate::cli::{bridge::FullBridge, AccountId, CliChain, HexBytes}; -use crate::select_full_bridge; +use crate::{ + cli::{bridge::FullBridge, AccountId, CliChain, HexBytes}, + select_full_bridge, +}; use structopt::StructOpt; +use strum::VariantNames; /// Generic message payload. #[derive(StructOpt, Debug, PartialEq, Eq)] @@ -40,8 +43,8 @@ pub enum MessagePayload { /// A `MessagePayload` to encode. #[derive(StructOpt)] pub struct EncodeMessage { - /// A bridge instance to initalize. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + /// A bridge instance to initialize. + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] payload: MessagePayload, @@ -51,7 +54,8 @@ impl EncodeMessage { /// Run the command. pub fn encode(self) -> anyhow::Result { select_full_bridge!(self.bridge, { - let payload = Source::encode_message(self.payload).map_err(|e| anyhow::format_err!("{}", e))?; + let payload = + Source::encode_message(self.payload).map_err(|e| anyhow::format_err!("{}", e))?; Ok(HexBytes::encode(&payload)) }) } @@ -73,7 +77,8 @@ mod tests { fn should_encode_raw_message() { // given let msg = "01000000e88514000000000002d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d003c040130000000000000000000000000"; - let encode_message = EncodeMessage::from_iter(vec!["encode-message", "MillauToRialto", "raw", msg]); + let encode_message = + EncodeMessage::from_iter(vec!["encode-message", "rialto-to-millau", "raw", msg]); // when let hex = encode_message.encode().unwrap(); @@ -88,7 +93,7 @@ mod tests { let sender = sp_keyring::AccountKeyring::Alice.to_account_id().to_ss58check(); let encode_message = EncodeMessage::from_iter(vec![ "encode-message", - "RialtoToMillau", + "rialto-to-millau", "call", "--sender", &sender, @@ -101,6 +106,6 @@ mod tests { let hex = encode_message.encode().unwrap(); // then - assert_eq!(format!("{:?}", hex), "0x01000000b0d60f000000000002d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d003c040130000000000000000000000000"); + assert_eq!(format!("{:?}", hex), "0x0100000010f108000000000002d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d003c000130000000000000000000000000"); } } diff --git a/bridges/relays/bin-substrate/src/cli/estimate_fee.rs b/relays/bin-substrate/src/cli/estimate_fee.rs similarity index 76% rename from bridges/relays/bin-substrate/src/cli/estimate_fee.rs rename to relays/bin-substrate/src/cli/estimate_fee.rs index 129699c26917..d063ce544cd2 100644 --- a/bridges/relays/bin-substrate/src/cli/estimate_fee.rs +++ b/relays/bin-substrate/src/cli/estimate_fee.rs @@ -14,18 +14,21 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -use crate::cli::bridge::FullBridge; -use crate::cli::{Balance, CliChain, HexBytes, HexLaneId, SourceConnectionParams}; -use crate::select_full_bridge; +use crate::{ + cli::{bridge::FullBridge, Balance, CliChain, HexBytes, HexLaneId, SourceConnectionParams}, + select_full_bridge, +}; +use bp_runtime::BalanceOf; use codec::{Decode, Encode}; use relay_substrate_client::Chain; use structopt::StructOpt; +use strum::VariantNames; /// Estimate Delivery & Dispatch Fee command. #[derive(StructOpt, Debug, PartialEq, Eq)] pub struct EstimateFee { /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] source: SourceConnectionParams, @@ -40,21 +43,21 @@ pub struct EstimateFee { impl EstimateFee { /// Run the command. pub async fn run(self) -> anyhow::Result<()> { - let Self { - source, - bridge, - lane, - payload, - } = self; + let Self { source, bridge, lane, payload } = self; select_full_bridge!(bridge, { let source_client = source.to_client::().await?; let lane = lane.into(); - let payload = Source::encode_message(payload).map_err(|e| anyhow::format_err!("{:?}", e))?; + let payload = + Source::encode_message(payload).map_err(|e| anyhow::format_err!("{:?}", e))?; - let fee: ::Balance = - estimate_message_delivery_and_dispatch_fee(&source_client, ESTIMATE_MESSAGE_FEE_METHOD, lane, payload) - .await?; + let fee: BalanceOf = estimate_message_delivery_and_dispatch_fee( + &source_client, + ESTIMATE_MESSAGE_FEE_METHOD, + lane, + payload, + ) + .await?; log::info!(target: "bridge", "Fee: {:?}", Balance(fee as _)); println!("{}", fee); @@ -72,10 +75,11 @@ pub(crate) async fn estimate_message_delivery_and_dispatch_fee = - Decode::decode(&mut &encoded_response.0[..]).map_err(relay_substrate_client::Error::ResponseParseFailed)?; - let fee = decoded_response - .ok_or_else(|| anyhow::format_err!("Unable to decode fee from: {:?}", HexBytes(encoded_response.to_vec())))?; + let decoded_response: Option = Decode::decode(&mut &encoded_response.0[..]) + .map_err(relay_substrate_client::Error::ResponseParseFailed)?; + let fee = decoded_response.ok_or_else(|| { + anyhow::format_err!("Unable to decode fee from: {:?}", HexBytes(encoded_response.to_vec())) + })?; Ok(fee) } @@ -93,7 +97,7 @@ mod tests { // when let res = EstimateFee::from_iter(vec![ "estimate_fee", - "RialtoToMillau", + "rialto-to-millau", "--source-port", "1234", "call", diff --git a/relays/bin-substrate/src/cli/init_bridge.rs b/relays/bin-substrate/src/cli/init_bridge.rs new file mode 100644 index 000000000000..ffda0b120088 --- /dev/null +++ b/relays/bin-substrate/src/cli/init_bridge.rs @@ -0,0 +1,214 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::cli::{SourceConnectionParams, TargetConnectionParams, TargetSigningParams}; +use bp_header_chain::InitializationData; +use bp_runtime::Chain as ChainBase; +use codec::Encode; +use relay_substrate_client::{Chain, TransactionSignScheme, UnsignedTransaction}; +use sp_core::{Bytes, Pair}; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +/// Initialize bridge pallet. +#[derive(StructOpt)] +pub struct InitBridge { + /// A bridge instance to initialize. + #[structopt(possible_values = InitBridgeName::VARIANTS, case_insensitive = true)] + bridge: InitBridgeName, + #[structopt(flatten)] + source: SourceConnectionParams, + #[structopt(flatten)] + target: TargetConnectionParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, +} + +#[derive(Debug, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Bridge to initialize. +pub enum InitBridgeName { + MillauToRialto, + RialtoToMillau, + WestendToMillau, + RococoToWococo, + WococoToRococo, + KusamaToPolkadot, + PolkadotToKusama, +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + InitBridgeName::MillauToRialto => { + type Source = relay_millau_client::Millau; + type Target = relay_rialto_client::Rialto; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + rialto_runtime::SudoCall::sudo { + call: Box::new( + rialto_runtime::BridgeGrandpaMillauCall::initialize { init_data } + .into(), + ), + } + .into() + } + + $generic + }, + InitBridgeName::RialtoToMillau => { + type Source = relay_rialto_client::Rialto; + type Target = relay_millau_client::Millau; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + let initialize_call = millau_runtime::BridgeGrandpaCall::< + millau_runtime::Runtime, + millau_runtime::RialtoGrandpaInstance, + >::initialize { + init_data, + }; + millau_runtime::SudoCall::sudo { call: Box::new(initialize_call.into()) }.into() + } + + $generic + }, + InitBridgeName::WestendToMillau => { + type Source = relay_westend_client::Westend; + type Target = relay_millau_client::Millau; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + // at Westend -> Millau initialization we're not using sudo, because otherwise + // our deployments may fail, because we need to initialize both Rialto -> Millau + // and Westend -> Millau bridge. => since there's single possible sudo account, + // one of transaction may fail with duplicate nonce error + millau_runtime::BridgeGrandpaCall::< + millau_runtime::Runtime, + millau_runtime::WestendGrandpaInstance, + >::initialize { + init_data, + } + .into() + } + + $generic + }, + InitBridgeName::RococoToWococo => { + type Source = relay_rococo_client::Rococo; + type Target = relay_wococo_client::Wococo; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + relay_wococo_client::runtime::Call::BridgeGrandpaRococo( + relay_wococo_client::runtime::BridgeGrandpaRococoCall::initialize( + init_data, + ), + ) + } + + $generic + }, + InitBridgeName::WococoToRococo => { + type Source = relay_wococo_client::Wococo; + type Target = relay_rococo_client::Rococo; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + relay_rococo_client::runtime::Call::BridgeGrandpaWococo( + relay_rococo_client::runtime::BridgeGrandpaWococoCall::initialize( + init_data, + ), + ) + } + + $generic + }, + InitBridgeName::KusamaToPolkadot => { + type Source = relay_kusama_client::Kusama; + type Target = relay_polkadot_client::Polkadot; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + relay_polkadot_client::runtime::Call::BridgeKusamaGrandpa( + relay_polkadot_client::runtime::BridgeKusamaGrandpaCall::initialize( + init_data, + ), + ) + } + + $generic + }, + InitBridgeName::PolkadotToKusama => { + type Source = relay_polkadot_client::Polkadot; + type Target = relay_kusama_client::Kusama; + + fn encode_init_bridge( + init_data: InitializationData<::Header>, + ) -> ::Call { + relay_kusama_client::runtime::Call::BridgePolkadotGrandpa( + relay_kusama_client::runtime::BridgePolkadotGrandpaCall::initialize( + init_data, + ), + ) + } + + $generic + }, + } + }; +} + +impl InitBridge { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self.bridge, { + let source_client = self.source.to_client::().await?; + let target_client = self.target.to_client::().await?; + let target_sign = self.target_sign.to_keypair::()?; + + substrate_relay_helper::headers_initialize::initialize( + source_client, + target_client.clone(), + target_sign.public().into(), + move |transaction_nonce, initialization_data| { + Bytes( + Target::sign_transaction( + *target_client.genesis_hash(), + &target_sign, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + encode_init_bridge(initialization_data), + transaction_nonce, + ), + ) + .encode(), + ) + }, + ) + .await; + + Ok(()) + }) + } +} diff --git a/relays/bin-substrate/src/cli/mod.rs b/relays/bin-substrate/src/cli/mod.rs new file mode 100644 index 000000000000..f1180059b994 --- /dev/null +++ b/relays/bin-substrate/src/cli/mod.rs @@ -0,0 +1,652 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Deal with CLI args of substrate-to-substrate relay. + +use std::convert::TryInto; + +use bp_messages::LaneId; +use codec::{Decode, Encode}; +use frame_support::weights::Weight; +use sp_runtime::app_crypto::Ss58Codec; +use structopt::{clap::arg_enum, StructOpt}; + +pub(crate) mod bridge; +pub(crate) mod encode_call; +pub(crate) mod encode_message; +pub(crate) mod estimate_fee; +pub(crate) mod send_message; + +mod derive_account; +mod init_bridge; +mod register_parachain; +mod relay_headers; +mod relay_headers_and_messages; +mod relay_messages; +mod resubmit_transactions; +mod swap_tokens; + +/// Parse relay CLI args. +pub fn parse_args() -> Command { + Command::from_args() +} + +/// Substrate-to-Substrate bridge utilities. +#[derive(StructOpt)] +#[structopt(about = "Substrate-to-Substrate relay")] +pub enum Command { + /// Start headers relay between two chains. + /// + /// The on-chain bridge component should have been already initialized with + /// `init-bridge` sub-command. + RelayHeaders(relay_headers::RelayHeaders), + /// Start messages relay between two chains. + /// + /// Ties up to `Messages` pallets on both chains and starts relaying messages. + /// Requires the header relay to be already running. + RelayMessages(relay_messages::RelayMessages), + /// Start headers and messages relay between two Substrate chains. + /// + /// This high-level relay internally starts four low-level relays: two `RelayHeaders` + /// and two `RelayMessages` relays. Headers are only relayed when they are required by + /// the message relays - i.e. when there are messages or confirmations that needs to be + /// relayed between chains. + RelayHeadersAndMessages(relay_headers_and_messages::RelayHeadersAndMessages), + /// Initialize on-chain bridge pallet with current header data. + /// + /// Sends initialization transaction to bootstrap the bridge with current finalized block data. + InitBridge(init_bridge::InitBridge), + /// Send custom message over the bridge. + /// + /// Allows interacting with the bridge by sending messages over `Messages` component. + /// The message is being sent to the source chain, delivered to the target chain and dispatched + /// there. + SendMessage(send_message::SendMessage), + /// Generate SCALE-encoded `Call` for choosen network. + /// + /// The call can be used either as message payload or can be wrapped into a transaction + /// and executed on the chain directly. + EncodeCall(encode_call::EncodeCall), + /// Generate SCALE-encoded `MessagePayload` object that can be sent over selected bridge. + /// + /// The `MessagePayload` can be then fed to `Messages::send_message` function and sent over + /// the bridge. + EncodeMessage(encode_message::EncodeMessage), + /// Estimate Delivery and Dispatch Fee required for message submission to messages pallet. + EstimateFee(estimate_fee::EstimateFee), + /// Given a source chain `AccountId`, derive the corresponding `AccountId` for the target + /// chain. + DeriveAccount(derive_account::DeriveAccount), + /// Resubmit transactions with increased tip if they are stalled. + ResubmitTransactions(resubmit_transactions::ResubmitTransactions), + /// Swap tokens using token-swap bridge. + SwapTokens(swap_tokens::SwapTokens), + /// Register parachain. + RegisterParachain(register_parachain::RegisterParachain), +} + +impl Command { + // Initialize logger depending on the command. + fn init_logger(&self) { + use relay_utils::initialize::{initialize_logger, initialize_relay}; + + match self { + Self::RelayHeaders(_) | + Self::RelayMessages(_) | + Self::RelayHeadersAndMessages(_) | + Self::InitBridge(_) => { + initialize_relay(); + }, + _ => { + initialize_logger(false); + }, + } + } + + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + self.init_logger(); + match self { + Self::RelayHeaders(arg) => arg.run().await?, + Self::RelayMessages(arg) => arg.run().await?, + Self::RelayHeadersAndMessages(arg) => arg.run().await?, + Self::InitBridge(arg) => arg.run().await?, + Self::SendMessage(arg) => arg.run().await?, + Self::EncodeCall(arg) => arg.run().await?, + Self::EncodeMessage(arg) => arg.run().await?, + Self::EstimateFee(arg) => arg.run().await?, + Self::DeriveAccount(arg) => arg.run().await?, + Self::ResubmitTransactions(arg) => arg.run().await?, + Self::SwapTokens(arg) => arg.run().await?, + Self::RegisterParachain(arg) => arg.run().await?, + } + Ok(()) + } +} + +arg_enum! { + #[derive(Debug)] + /// The origin to use when dispatching the message on the target chain. + /// + /// - `Target` uses account existing on the target chain (requires target private key). + /// - `Origin` uses account derived from the source-chain account. + pub enum Origins { + Target, + Source, + } +} + +/// Generic balance type. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct Balance(pub u128); + +impl std::fmt::Display for Balance { + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + use num_format::{Locale, ToFormattedString}; + write!(fmt, "{}", self.0.to_formatted_string(&Locale::en)) + } +} + +impl std::str::FromStr for Balance { + type Err = ::Err; + + fn from_str(s: &str) -> Result { + Ok(Self(s.parse()?)) + } +} + +impl Balance { + /// Cast balance to `u64` type, panicking if it's too large. + pub fn cast(&self) -> u64 { + self.0.try_into().expect("Balance is too high for this chain.") + } +} + +/// Generic account id with custom parser. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct AccountId { + account: sp_runtime::AccountId32, + ss58_format: sp_core::crypto::Ss58AddressFormat, +} + +impl std::fmt::Display for AccountId { + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(fmt, "{}", self.account.to_ss58check_with_version(self.ss58_format)) + } +} + +impl std::str::FromStr for AccountId { + type Err = String; + + fn from_str(s: &str) -> Result { + let (account, ss58_format) = sp_runtime::AccountId32::from_ss58check_with_version(s) + .map_err(|err| format!("Unable to decode SS58 address: {:?}", err))?; + Ok(Self { account, ss58_format }) + } +} + +const SS58_FORMAT_PROOF: &str = "u16 -> Ss58Format is infallible; qed"; + +impl AccountId { + /// Create new SS58-formatted address from raw account id. + pub fn from_raw(account: sp_runtime::AccountId32) -> Self { + Self { account, ss58_format: T::ss58_format().try_into().expect(SS58_FORMAT_PROOF) } + } + + /// Enforces formatting account to be for given [`CliChain`] type. + /// + /// This will change the `ss58format` of the account to match the requested one. + /// Note that a warning will be produced in case the current format does not match + /// the requested one, but the conversion always succeeds. + pub fn enforce_chain(&mut self) { + let original = self.clone(); + self.ss58_format = T::ss58_format().try_into().expect(SS58_FORMAT_PROOF); + log::debug!("{} SS58 format: {} (RAW: {})", self, self.ss58_format, self.account); + if original.ss58_format != self.ss58_format { + log::warn!( + target: "bridge", + "Address {} does not seem to match {}'s SS58 format (got: {}, expected: {}).\nConverted to: {}", + original, + T::NAME, + original.ss58_format, + self.ss58_format, + self, + ) + } + } + + /// Returns the raw (no SS58-prefixed) account id. + pub fn raw_id(&self) -> sp_runtime::AccountId32 { + self.account.clone() + } +} + +/// Bridge-supported network definition. +/// +/// Used to abstract away CLI commands. +pub trait CliChain: relay_substrate_client::Chain { + /// Chain's current version of the runtime. + const RUNTIME_VERSION: sp_version::RuntimeVersion; + + /// Crypto KeyPair type used to send messages. + /// + /// In case of chains supporting multiple cryptos, pick one used by the CLI. + type KeyPair: sp_core::crypto::Pair; + + /// Bridge Message Payload type. + /// + /// TODO [#854] This should be removed in favor of target-specifc types. + type MessagePayload; + + /// Numeric value of SS58 format. + fn ss58_format() -> u16; + + /// Construct message payload to be sent over the bridge. + fn encode_message( + message: crate::cli::encode_message::MessagePayload, + ) -> anyhow::Result; + + /// Maximal extrinsic weight (from the runtime). + fn max_extrinsic_weight() -> Weight; +} + +/// Lane id. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct HexLaneId(pub LaneId); + +impl From for LaneId { + fn from(lane_id: HexLaneId) -> LaneId { + lane_id.0 + } +} + +impl std::str::FromStr for HexLaneId { + type Err = hex::FromHexError; + + fn from_str(s: &str) -> Result { + let mut lane_id = LaneId::default(); + hex::decode_to_slice(s, &mut lane_id)?; + Ok(HexLaneId(lane_id)) + } +} + +/// Nicer formatting for raw bytes vectors. +#[derive(Default, Encode, Decode, PartialEq, Eq)] +pub struct HexBytes(pub Vec); + +impl std::str::FromStr for HexBytes { + type Err = hex::FromHexError; + + fn from_str(s: &str) -> Result { + Ok(Self(hex::decode(s)?)) + } +} + +impl std::fmt::Debug for HexBytes { + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(fmt, "0x{}", self) + } +} + +impl std::fmt::Display for HexBytes { + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(fmt, "{}", hex::encode(&self.0)) + } +} + +impl HexBytes { + /// Encode given object and wrap into nicely formatted bytes. + pub fn encode(t: &T) -> Self { + Self(t.encode()) + } +} + +/// Prometheus metrics params. +#[derive(StructOpt)] +pub struct PrometheusParams { + /// Do not expose a Prometheus metric endpoint. + #[structopt(long)] + pub no_prometheus: bool, + /// Expose Prometheus endpoint at given interface. + #[structopt(long, default_value = "127.0.0.1")] + pub prometheus_host: String, + /// Expose Prometheus endpoint at given port. + #[structopt(long, default_value = "9616")] + pub prometheus_port: u16, +} + +impl From for relay_utils::metrics::MetricsParams { + fn from(cli_params: PrometheusParams) -> relay_utils::metrics::MetricsParams { + if !cli_params.no_prometheus { + Some(relay_utils::metrics::MetricsAddress { + host: cli_params.prometheus_host, + port: cli_params.prometheus_port, + }) + .into() + } else { + None.into() + } + } +} + +/// Either explicit or maximal allowed value. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ExplicitOrMaximal { + /// User has explicitly specified argument value. + Explicit(V), + /// Maximal allowed value for this argument. + Maximal, +} + +impl std::str::FromStr for ExplicitOrMaximal +where + V::Err: std::fmt::Debug, +{ + type Err = String; + + fn from_str(s: &str) -> Result { + if s.to_lowercase() == "max" { + return Ok(ExplicitOrMaximal::Maximal) + } + + V::from_str(s) + .map(ExplicitOrMaximal::Explicit) + .map_err(|e| format!("Failed to parse '{:?}'. Expected 'max' or explicit value", e)) + } +} + +/// Create chain-specific set of configuration objects: connection parameters, +/// signing parameters and bridge initialization parameters. +#[macro_export] +macro_rules! declare_chain_options { + ($chain:ident, $chain_prefix:ident) => { + paste::item! { + #[doc = $chain " connection params."] + #[derive(StructOpt, Debug, PartialEq, Eq, Clone)] + pub struct [<$chain ConnectionParams>] { + #[doc = "Connect to " $chain " node at given host."] + #[structopt(long, default_value = "127.0.0.1")] + pub [<$chain_prefix _host>]: String, + #[doc = "Connect to " $chain " node websocket server at given port."] + #[structopt(long)] + pub [<$chain_prefix _port>]: u16, + #[doc = "Use secure websocket connection."] + #[structopt(long)] + pub [<$chain_prefix _secure>]: bool, + } + + #[doc = $chain " signing params."] + #[derive(StructOpt, Debug, PartialEq, Eq, Clone)] + pub struct [<$chain SigningParams>] { + #[doc = "The SURI of secret key to use when transactions are submitted to the " $chain " node."] + #[structopt(long)] + pub [<$chain_prefix _signer>]: Option, + #[doc = "The password for the SURI of secret key to use when transactions are submitted to the " $chain " node."] + #[structopt(long)] + pub [<$chain_prefix _signer_password>]: Option, + + #[doc = "Path to the file, that contains SURI of secret key to use when transactions are submitted to the " $chain " node. Can be overridden with " $chain_prefix "_signer option."] + #[structopt(long)] + pub [<$chain_prefix _signer_file>]: Option, + #[doc = "Path to the file, that password for the SURI of secret key to use when transactions are submitted to the " $chain " node. Can be overridden with " $chain_prefix "_signer_password option."] + #[structopt(long)] + pub [<$chain_prefix _signer_password_file>]: Option, + + #[doc = "Transactions mortality period, in blocks. MUST be a power of two in [4; 65536] range. MAY NOT be larger than `BlockHashCount` parameter of the chain system module."] + #[structopt(long)] + pub [<$chain_prefix _transactions_mortality>]: Option, + } + + #[doc = "Parameters required to sign transaction on behalf of owner of the messages pallet at " $chain "."] + #[derive(StructOpt, Debug, PartialEq, Eq)] + pub struct [<$chain MessagesPalletOwnerSigningParams>] { + #[doc = "The SURI of secret key to use when transactions are submitted to the " $chain " node."] + #[structopt(long)] + pub [<$chain_prefix _messages_pallet_owner>]: Option, + #[doc = "The password for the SURI of secret key to use when transactions are submitted to the " $chain " node."] + #[structopt(long)] + pub [<$chain_prefix _messages_pallet_owner_password>]: Option, + } + + impl [<$chain SigningParams>] { + /// Return transactions mortality. + #[allow(dead_code)] + pub fn transactions_mortality(&self) -> anyhow::Result> { + self.[<$chain_prefix _transactions_mortality>] + .map(|transactions_mortality| { + if !(4..=65536).contains(&transactions_mortality) + || !transactions_mortality.is_power_of_two() + { + Err(anyhow::format_err!( + "Transactions mortality {} is not a power of two in a [4; 65536] range", + transactions_mortality, + )) + } else { + Ok(transactions_mortality) + } + }) + .transpose() + } + + /// Parse signing params into chain-specific KeyPair. + #[allow(dead_code)] + pub fn to_keypair(&self) -> anyhow::Result { + let suri = match (self.[<$chain_prefix _signer>].as_ref(), self.[<$chain_prefix _signer_file>].as_ref()) { + (Some(suri), _) => suri.to_owned(), + (None, Some(suri_file)) => std::fs::read_to_string(suri_file) + .map_err(|err| anyhow::format_err!( + "Failed to read SURI from file {:?}: {}", + suri_file, + err, + ))?, + (None, None) => return Err(anyhow::format_err!( + "One of options must be specified: '{}' or '{}'", + stringify!([<$chain_prefix _signer>]), + stringify!([<$chain_prefix _signer_file>]), + )), + }; + + let suri_password = match ( + self.[<$chain_prefix _signer_password>].as_ref(), + self.[<$chain_prefix _signer_password_file>].as_ref(), + ) { + (Some(suri_password), _) => Some(suri_password.to_owned()), + (None, Some(suri_password_file)) => std::fs::read_to_string(suri_password_file) + .map(Some) + .map_err(|err| anyhow::format_err!( + "Failed to read SURI password from file {:?}: {}", + suri_password_file, + err, + ))?, + _ => None, + }; + + use sp_core::crypto::Pair; + + Chain::KeyPair::from_string( + &suri, + suri_password.as_deref() + ).map_err(|e| anyhow::format_err!("{:?}", e)) + } + } + + #[allow(dead_code)] + impl [<$chain MessagesPalletOwnerSigningParams>] { + /// Parse signing params into chain-specific KeyPair. + pub fn to_keypair(&self) -> anyhow::Result> { + use sp_core::crypto::Pair; + + let [<$chain_prefix _messages_pallet_owner>] = match self.[<$chain_prefix _messages_pallet_owner>] { + Some(ref messages_pallet_owner) => messages_pallet_owner, + None => return Ok(None), + }; + Chain::KeyPair::from_string( + [<$chain_prefix _messages_pallet_owner>], + self.[<$chain_prefix _messages_pallet_owner_password>].as_deref() + ).map_err(|e| anyhow::format_err!("{:?}", e)).map(Some) + } + } + + impl [<$chain ConnectionParams>] { + /// Convert connection params into Substrate client. + pub async fn to_client( + &self, + ) -> anyhow::Result> { + Ok(relay_substrate_client::Client::new(relay_substrate_client::ConnectionParams { + host: self.[<$chain_prefix _host>].clone(), + port: self.[<$chain_prefix _port>], + secure: self.[<$chain_prefix _secure>], + }) + .await + ) + } + } + } + }; +} + +declare_chain_options!(Source, source); +declare_chain_options!(Target, target); +declare_chain_options!(Relaychain, relaychain); +declare_chain_options!(Parachain, parachain); + +#[cfg(test)] +mod tests { + use sp_core::Pair; + use std::str::FromStr; + + use super::*; + + #[test] + fn should_format_addresses_with_ss58_format() { + // given + let rialto1 = "5sauUXUfPjmwxSgmb3tZ5d6yx24eZX4wWJ2JtVUBaQqFbvEU"; + let rialto2 = "5rERgaT1Z8nM3et2epA5i1VtEBfp5wkhwHtVE8HK7BRbjAH2"; + let millau1 = "752paRyW1EGfq9YLTSSqcSJ5hqnBDidBmaftGhBo8fy6ypW9"; + let millau2 = "74GNQjmkcfstRftSQPJgMREchqHM56EvAUXRc266cZ1NYVW5"; + + let expected = vec![rialto1, rialto2, millau1, millau2]; + + // when + let parsed = expected.iter().map(|s| AccountId::from_str(s).unwrap()).collect::>(); + + let actual = parsed.iter().map(|a| format!("{}", a)).collect::>(); + + assert_eq!(actual, expected) + } + + #[test] + fn hex_bytes_display_matches_from_str_for_clap() { + // given + let hex = HexBytes(vec![1, 2, 3, 4]); + let display = format!("{}", hex); + + // when + let hex2: HexBytes = display.parse().unwrap(); + + // then + assert_eq!(hex.0, hex2.0); + } + + #[test] + fn reads_suri_from_file() { + const ALICE: &str = "//Alice"; + const BOB: &str = "//Bob"; + const ALICE_PASSWORD: &str = "alice_password"; + const BOB_PASSWORD: &str = "bob_password"; + + let alice = sp_core::sr25519::Pair::from_string(ALICE, Some(ALICE_PASSWORD)).unwrap(); + let bob = sp_core::sr25519::Pair::from_string(BOB, Some(BOB_PASSWORD)).unwrap(); + let bob_with_alice_password = + sp_core::sr25519::Pair::from_string(BOB, Some(ALICE_PASSWORD)).unwrap(); + + let temp_dir = tempfile::tempdir().unwrap(); + let mut suri_file_path = temp_dir.path().to_path_buf(); + let mut password_file_path = temp_dir.path().to_path_buf(); + suri_file_path.push("suri"); + password_file_path.push("password"); + std::fs::write(&suri_file_path, BOB.as_bytes()).unwrap(); + std::fs::write(&password_file_path, BOB_PASSWORD.as_bytes()).unwrap(); + + // when both seed and password are read from file + assert_eq!( + TargetSigningParams { + target_signer: Some(ALICE.into()), + target_signer_password: Some(ALICE_PASSWORD.into()), + + target_signer_file: None, + target_signer_password_file: None, + + target_transactions_mortality: None, + } + .to_keypair::() + .map(|p| p.public()) + .map_err(drop), + Ok(alice.public()), + ); + + // when both seed and password are read from file + assert_eq!( + TargetSigningParams { + target_signer: None, + target_signer_password: None, + + target_signer_file: Some(suri_file_path.clone()), + target_signer_password_file: Some(password_file_path.clone()), + + target_transactions_mortality: None, + } + .to_keypair::() + .map(|p| p.public()) + .map_err(drop), + Ok(bob.public()), + ); + + // when password are is overriden by cli option + assert_eq!( + TargetSigningParams { + target_signer: None, + target_signer_password: Some(ALICE_PASSWORD.into()), + + target_signer_file: Some(suri_file_path.clone()), + target_signer_password_file: Some(password_file_path.clone()), + + target_transactions_mortality: None, + } + .to_keypair::() + .map(|p| p.public()) + .map_err(drop), + Ok(bob_with_alice_password.public()), + ); + + // when both seed and password are overriden by cli options + assert_eq!( + TargetSigningParams { + target_signer: Some(ALICE.into()), + target_signer_password: Some(ALICE_PASSWORD.into()), + + target_signer_file: Some(suri_file_path), + target_signer_password_file: Some(password_file_path), + + target_transactions_mortality: None, + } + .to_keypair::() + .map(|p| p.public()) + .map_err(drop), + Ok(alice.public()), + ); + } +} diff --git a/relays/bin-substrate/src/cli/register_parachain.rs b/relays/bin-substrate/src/cli/register_parachain.rs new file mode 100644 index 000000000000..fecc431148eb --- /dev/null +++ b/relays/bin-substrate/src/cli/register_parachain.rs @@ -0,0 +1,346 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::cli::{ + swap_tokens::wait_until_transaction_is_finalized, Balance, ParachainConnectionParams, + RelaychainConnectionParams, RelaychainSigningParams, +}; + +use codec::Encode; +use num_traits::Zero; +use polkadot_parachain::primitives::{ + HeadData as ParaHeadData, Id as ParaId, ValidationCode as ParaValidationCode, +}; +use polkadot_runtime_common::{ + paras_registrar::Call as ParaRegistrarCall, slots::Call as ParaSlotsCall, +}; +use polkadot_runtime_parachains::paras::ParaLifecycle; +use relay_substrate_client::{ + AccountIdOf, CallOf, Chain, Client, TransactionSignScheme, UnsignedTransaction, +}; +use rialto_runtime::SudoCall; +use sp_core::{ + storage::{well_known_keys::CODE, StorageKey}, + Bytes, Pair, +}; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +/// Name of the `NextFreeParaId` value in the `polkadot_runtime_common::paras_registrar` pallet. +const NEXT_FREE_PARA_ID_STORAGE_NAME: &str = "NextFreeParaId"; +/// Name of the `ParaLifecycles` map in the `polkadot_runtime_parachains::paras` pallet. +const PARAS_LIFECYCLES_STORAGE_NAME: &str = "ParaLifecycles"; + +/// Register parachain. +#[derive(StructOpt, Debug, PartialEq)] +pub struct RegisterParachain { + /// A parachain to register. + #[structopt(possible_values = Parachain::VARIANTS, case_insensitive = true)] + parachain: Parachain, + /// Parachain deposit. + #[structopt(long, default_value = "0")] + deposit: Balance, + /// Lease begin. + #[structopt(long, default_value = "0")] + lease_begin: u32, + /// Lease end. + #[structopt(long, default_value = "256")] + lease_end: u32, + #[structopt(flatten)] + relay_connection: RelaychainConnectionParams, + #[structopt(flatten)] + relay_sign: RelaychainSigningParams, + #[structopt(flatten)] + para_connection: ParachainConnectionParams, +} + +/// Parachain to register. +#[derive(Debug, EnumString, EnumVariantNames, PartialEq)] +#[strum(serialize_all = "kebab_case")] +pub enum Parachain { + RialtoParachain, +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + Parachain::RialtoParachain => { + type Relaychain = relay_rialto_client::Rialto; + type Parachain = relay_rialto_parachain_client::RialtoParachain; + + use bp_rialto::{PARAS_PALLET_NAME, PARAS_REGISTRAR_PALLET_NAME}; + + $generic + }, + } + }; +} + +impl RegisterParachain { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self.parachain, { + let relay_client = self.relay_connection.to_client::().await?; + let relay_sign = self.relay_sign.to_keypair::()?; + let para_client = self.para_connection.to_client::().await?; + + // hopefully we're the only actor that is registering parachain right now + // => read next parachain id + let para_id_key = bp_runtime::storage_value_final_key( + PARAS_REGISTRAR_PALLET_NAME.as_bytes(), + NEXT_FREE_PARA_ID_STORAGE_NAME.as_bytes(), + ); + let para_id: ParaId = relay_client + .storage_value(StorageKey(para_id_key.to_vec()), None) + .await? + .unwrap_or(polkadot_primitives::v1::LOWEST_PUBLIC_ID) + .max(polkadot_primitives::v1::LOWEST_PUBLIC_ID); + log::info!(target: "bridge", "Going to reserve parachain id: {:?}", para_id); + + // step 1: reserve a parachain id + let relay_genesis_hash = *relay_client.genesis_hash(); + let relay_sudo_account: AccountIdOf = relay_sign.public().into(); + let reserve_parachain_id_call: CallOf = + ParaRegistrarCall::reserve {}.into(); + let reserve_parachain_signer = relay_sign.clone(); + wait_until_transaction_is_finalized::( + relay_client + .submit_and_watch_signed_extrinsic( + relay_sudo_account.clone(), + move |_, transaction_nonce| { + Bytes( + Relaychain::sign_transaction( + relay_genesis_hash, + &reserve_parachain_signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + reserve_parachain_id_call, + transaction_nonce, + ), + ) + .encode(), + ) + }, + ) + .await?, + ) + .await?; + log::info!(target: "bridge", "Reserved parachain id: {:?}", para_id); + + // step 2: register parathread + let para_genesis_header = para_client.header_by_number(Zero::zero()).await?; + let para_code = para_client + .raw_storage_value(StorageKey(CODE.to_vec()), Some(para_genesis_header.hash())) + .await? + .ok_or_else(|| { + anyhow::format_err!("Cannot fetch validation code of {}", Parachain::NAME) + })? + .0; + log::info!( + target: "bridge", + "Going to register parachain {:?}: genesis len = {} code len = {}", + para_id, + para_genesis_header.encode().len(), + para_code.len(), + ); + let register_parathread_call: CallOf = ParaRegistrarCall::register { + id: para_id, + genesis_head: ParaHeadData(para_genesis_header.encode()), + validation_code: ParaValidationCode(para_code), + } + .into(); + let register_parathread_signer = relay_sign.clone(); + wait_until_transaction_is_finalized::( + relay_client + .submit_and_watch_signed_extrinsic( + relay_sudo_account.clone(), + move |_, transaction_nonce| { + Bytes( + Relaychain::sign_transaction( + relay_genesis_hash, + ®ister_parathread_signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + register_parathread_call, + transaction_nonce, + ), + ) + .encode(), + ) + }, + ) + .await?, + ) + .await?; + log::info!(target: "bridge", "Registered parachain: {:?}. Waiting for onboarding", para_id); + + // wait until parathread is onboarded + let para_state_key = bp_runtime::storage_map_final_key_twox64_concat( + PARAS_PALLET_NAME, + PARAS_LIFECYCLES_STORAGE_NAME, + ¶_id.encode(), + ); + wait_para_state( + &relay_client, + ¶_state_key.0, + &[ParaLifecycle::Onboarding, ParaLifecycle::Parathread], + ParaLifecycle::Parathread, + ) + .await?; + + // step 3: force parachain leases + let lease_begin = self.lease_begin; + let lease_end = self.lease_end; + let para_deposit = self.deposit.cast().into(); + log::info!( + target: "bridge", + "Going to force leases of parachain {:?}: [{}; {}]", + para_id, + lease_begin, + lease_end, + ); + let force_lease_call: CallOf = SudoCall::sudo { + call: Box::new( + ParaSlotsCall::force_lease { + para: para_id, + leaser: relay_sudo_account.clone(), + amount: para_deposit, + period_begin: lease_begin, + period_count: lease_end.saturating_sub(lease_begin).saturating_add(1), + } + .into(), + ), + } + .into(); + let force_lease_signer = relay_sign.clone(); + relay_client + .submit_signed_extrinsic(relay_sudo_account.clone(), move |_, transaction_nonce| { + Bytes( + Relaychain::sign_transaction( + relay_genesis_hash, + &force_lease_signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(force_lease_call, transaction_nonce), + ) + .encode(), + ) + }) + .await?; + log::info!(target: "bridge", "Registered parachain leases: {:?}. Waiting for onboarding", para_id); + + // wait until parachain is onboarded + wait_para_state( + &relay_client, + ¶_state_key.0, + &[ + ParaLifecycle::Onboarding, + ParaLifecycle::UpgradingParathread, + ParaLifecycle::Parathread, + ], + ParaLifecycle::Parachain, + ) + .await?; + + Ok(()) + }) + } +} + +/// Wait until parachain state is changed. +async fn wait_para_state( + relay_client: &Client, + para_state_key: &[u8], + from_states: &[ParaLifecycle], + to_state: ParaLifecycle, +) -> anyhow::Result<()> { + loop { + let para_state: ParaLifecycle = relay_client + .storage_value(StorageKey(para_state_key.to_vec()), None) + .await? + .ok_or_else(|| { + anyhow::format_err!( + "Cannot fetch next free parachain lifecycle from the runtime storage of {}", + Relaychain::NAME, + ) + })?; + if para_state == to_state { + log::info!(target: "bridge", "Parachain state is now: {:?}", to_state); + return Ok(()) + } + if !from_states.contains(¶_state) { + return Err(anyhow::format_err!("Invalid parachain lifecycle: {:?}", para_state)) + } + + log::info!(target: "bridge", "Parachain state: {:?}. Waiting for {:?}", para_state, to_state); + async_std::task::sleep(Relaychain::AVERAGE_BLOCK_INTERVAL).await; + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn register_rialto_parachain() { + let register_parachain = RegisterParachain::from_iter(vec![ + "register-parachain", + "rialto-parachain", + "--parachain-host", + "127.0.0.1", + "--parachain-port", + "11949", + "--relaychain-host", + "127.0.0.1", + "--relaychain-port", + "9944", + "--relaychain-signer", + "//Alice", + "--deposit", + "42", + "--lease-begin", + "100", + "--lease-end", + "200", + ]); + + assert_eq!( + register_parachain, + RegisterParachain { + parachain: Parachain::RialtoParachain, + deposit: Balance(42), + lease_begin: 100, + lease_end: 200, + relay_connection: RelaychainConnectionParams { + relaychain_host: "127.0.0.1".into(), + relaychain_port: 9944, + relaychain_secure: false, + }, + relay_sign: RelaychainSigningParams { + relaychain_signer: Some("//Alice".into()), + relaychain_signer_password: None, + relaychain_signer_file: None, + relaychain_signer_password_file: None, + relaychain_transactions_mortality: None, + }, + para_connection: ParachainConnectionParams { + parachain_host: "127.0.0.1".into(), + parachain_port: 11949, + parachain_secure: false, + }, + } + ); + } +} diff --git a/relays/bin-substrate/src/cli/relay_headers.rs b/relays/bin-substrate/src/cli/relay_headers.rs new file mode 100644 index 000000000000..82c55965a991 --- /dev/null +++ b/relays/bin-substrate/src/cli/relay_headers.rs @@ -0,0 +1,141 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +use relay_utils::metrics::{GlobalMetrics, StandaloneMetric}; +use substrate_relay_helper::finality_pipeline::SubstrateFinalitySyncPipeline; + +use crate::cli::{ + PrometheusParams, SourceConnectionParams, TargetConnectionParams, TargetSigningParams, +}; + +/// Start headers relayer process. +#[derive(StructOpt)] +pub struct RelayHeaders { + /// A bridge instance to relay headers for. + #[structopt(possible_values = RelayHeadersBridge::VARIANTS, case_insensitive = true)] + bridge: RelayHeadersBridge, + /// If passed, only mandatory headers (headers that are changing the GRANDPA authorities set) + /// are relayed. + #[structopt(long)] + only_mandatory_headers: bool, + #[structopt(flatten)] + source: SourceConnectionParams, + #[structopt(flatten)] + target: TargetConnectionParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, + #[structopt(flatten)] + prometheus_params: PrometheusParams, +} + +#[derive(Debug, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Headers relay bridge. +pub enum RelayHeadersBridge { + MillauToRialto, + RialtoToMillau, + WestendToMillau, + RococoToWococo, + WococoToRococo, + KusamaToPolkadot, + PolkadotToKusama, +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + RelayHeadersBridge::MillauToRialto => { + type Source = relay_millau_client::Millau; + type Target = relay_rialto_client::Rialto; + type Finality = crate::chains::millau_headers_to_rialto::MillauFinalityToRialto; + + $generic + }, + RelayHeadersBridge::RialtoToMillau => { + type Source = relay_rialto_client::Rialto; + type Target = relay_millau_client::Millau; + type Finality = crate::chains::rialto_headers_to_millau::RialtoFinalityToMillau; + + $generic + }, + RelayHeadersBridge::WestendToMillau => { + type Source = relay_westend_client::Westend; + type Target = relay_millau_client::Millau; + type Finality = crate::chains::westend_headers_to_millau::WestendFinalityToMillau; + + $generic + }, + RelayHeadersBridge::RococoToWococo => { + type Source = relay_rococo_client::Rococo; + type Target = relay_wococo_client::Wococo; + type Finality = crate::chains::rococo_headers_to_wococo::RococoFinalityToWococo; + + $generic + }, + RelayHeadersBridge::WococoToRococo => { + type Source = relay_wococo_client::Wococo; + type Target = relay_rococo_client::Rococo; + type Finality = crate::chains::wococo_headers_to_rococo::WococoFinalityToRococo; + + $generic + }, + RelayHeadersBridge::KusamaToPolkadot => { + type Source = relay_kusama_client::Kusama; + type Target = relay_polkadot_client::Polkadot; + type Finality = crate::chains::kusama_headers_to_polkadot::KusamaFinalityToPolkadot; + + $generic + }, + RelayHeadersBridge::PolkadotToKusama => { + type Source = relay_polkadot_client::Polkadot; + type Target = relay_kusama_client::Kusama; + type Finality = crate::chains::polkadot_headers_to_kusama::PolkadotFinalityToKusama; + + $generic + }, + } + }; +} + +impl RelayHeaders { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self.bridge, { + let source_client = self.source.to_client::().await?; + let target_client = self.target.to_client::().await?; + let target_transactions_mortality = self.target_sign.target_transactions_mortality; + let target_sign = self.target_sign.to_keypair::()?; + let metrics_params = Finality::customize_metrics(self.prometheus_params.into())?; + GlobalMetrics::new()?.register_and_spawn(&metrics_params.registry)?; + + let finality = Finality::new(target_client.clone(), target_sign); + finality.start_relay_guards(); + + substrate_relay_helper::finality_pipeline::run( + finality, + source_client, + target_client, + self.only_mandatory_headers, + target_transactions_mortality, + metrics_params, + ) + .await + }) + } +} diff --git a/relays/bin-substrate/src/cli/relay_headers_and_messages.rs b/relays/bin-substrate/src/cli/relay_headers_and_messages.rs new file mode 100644 index 000000000000..9d76a0296fb2 --- /dev/null +++ b/relays/bin-substrate/src/cli/relay_headers_and_messages.rs @@ -0,0 +1,563 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Complex headers+messages relays support. +//! +//! To add new complex relay between `ChainA` and `ChainB`, you must: +//! +//! 1) ensure that there's a `declare_chain_options!(...)` for both chains; +//! 2) add `declare_bridge_options!(...)` for the bridge; +//! 3) add bridge support to the `select_bridge! { ... }` macro. + +use futures::{FutureExt, TryFutureExt}; +use structopt::StructOpt; +use strum::VariantNames; + +use codec::Encode; +use messages_relay::relay_strategy::MixStrategy; +use relay_substrate_client::{ + AccountIdOf, Chain, Client, TransactionSignScheme, UnsignedTransaction, +}; +use relay_utils::metrics::MetricsParams; +use sp_core::{Bytes, Pair}; +use substrate_relay_helper::{ + messages_lane::MessagesRelayParams, on_demand_headers::OnDemandHeadersRelay, +}; + +use crate::{ + cli::{relay_messages::RelayerMode, CliChain, HexLaneId, PrometheusParams}, + declare_chain_options, +}; + +/// Maximal allowed conversion rate error ratio (abs(real - stored) / stored) that we allow. +/// +/// If it is zero, then transaction will be submitted every time we see difference between +/// stored and real conversion rates. If it is large enough (e.g. > than 10 percents, which is 0.1), +/// then rational relayers may stop relaying messages because they were submitted using +/// lesser conversion rate. +const CONVERSION_RATE_ALLOWED_DIFFERENCE_RATIO: f64 = 0.05; + +/// Start headers+messages relayer process. +#[derive(StructOpt)] +pub enum RelayHeadersAndMessages { + MillauRialto(MillauRialtoHeadersAndMessages), + RococoWococo(RococoWococoHeadersAndMessages), + KusamaPolkadot(KusamaPolkadotHeadersAndMessages), +} + +/// Parameters that have the same names across all bridges. +#[derive(StructOpt)] +pub struct HeadersAndMessagesSharedParams { + /// Hex-encoded lane identifiers that should be served by the complex relay. + #[structopt(long, default_value = "00000000")] + lane: Vec, + #[structopt(long, possible_values = RelayerMode::VARIANTS, case_insensitive = true, default_value = "rational")] + relayer_mode: RelayerMode, + /// Create relayers fund accounts on both chains, if it does not exists yet. + #[structopt(long)] + create_relayers_fund_accounts: bool, + /// If passed, only mandatory headers (headers that are changing the GRANDPA authorities set) + /// are relayed. + #[structopt(long)] + only_mandatory_headers: bool, + #[structopt(flatten)] + prometheus_params: PrometheusParams, +} + +// The reason behind this macro is that 'normal' relays are using source and target chains +// terminology, which is unusable for both-way relays (if you're relaying headers from Rialto to +// Millau and from Millau to Rialto, then which chain is source?). +macro_rules! declare_bridge_options { + ($chain1:ident, $chain2:ident) => { + paste::item! { + #[doc = $chain1 " and " $chain2 " headers+messages relay params."] + #[derive(StructOpt)] + pub struct [<$chain1 $chain2 HeadersAndMessages>] { + #[structopt(flatten)] + shared: HeadersAndMessagesSharedParams, + #[structopt(flatten)] + left: [<$chain1 ConnectionParams>], + #[structopt(flatten)] + left_sign: [<$chain1 SigningParams>], + #[structopt(flatten)] + left_messages_pallet_owner: [<$chain1 MessagesPalletOwnerSigningParams>], + #[structopt(flatten)] + right: [<$chain2 ConnectionParams>], + #[structopt(flatten)] + right_sign: [<$chain2 SigningParams>], + #[structopt(flatten)] + right_messages_pallet_owner: [<$chain2 MessagesPalletOwnerSigningParams>], + } + + impl From for [<$chain1 $chain2 HeadersAndMessages>] { + fn from(relay_params: RelayHeadersAndMessages) -> [<$chain1 $chain2 HeadersAndMessages>] { + match relay_params { + RelayHeadersAndMessages::[<$chain1 $chain2>](params) => params, + _ => unreachable!(), + } + } + } + } + }; +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + RelayHeadersAndMessages::MillauRialto(_) => { + type Params = MillauRialtoHeadersAndMessages; + + type Left = relay_millau_client::Millau; + type Right = relay_rialto_client::Rialto; + + type LeftToRightFinality = + crate::chains::millau_headers_to_rialto::MillauFinalityToRialto; + type RightToLeftFinality = + crate::chains::rialto_headers_to_millau::RialtoFinalityToMillau; + + type LeftAccountIdConverter = bp_millau::AccountIdConverter; + type RightAccountIdConverter = bp_rialto::AccountIdConverter; + + const MAX_MISSING_LEFT_HEADERS_AT_RIGHT: bp_millau::BlockNumber = + bp_millau::SESSION_LENGTH; + const MAX_MISSING_RIGHT_HEADERS_AT_LEFT: bp_rialto::BlockNumber = + bp_rialto::SESSION_LENGTH; + + use crate::chains::{ + millau_messages_to_rialto::{ + standalone_metrics as left_to_right_standalone_metrics, + run as left_to_right_messages, + update_rialto_to_millau_conversion_rate as update_right_to_left_conversion_rate, + }, + rialto_messages_to_millau::{ + run as right_to_left_messages, + update_millau_to_rialto_conversion_rate as update_left_to_right_conversion_rate, + }, + }; + + async fn left_create_account( + _left_client: Client, + _left_sign: ::AccountKeyPair, + _account_id: AccountIdOf, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Account creation is not supported by this bridge")) + } + + async fn right_create_account( + _right_client: Client, + _right_sign: ::AccountKeyPair, + _account_id: AccountIdOf, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Account creation is not supported by this bridge")) + } + + $generic + }, + RelayHeadersAndMessages::RococoWococo(_) => { + type Params = RococoWococoHeadersAndMessages; + + type Left = relay_rococo_client::Rococo; + type Right = relay_wococo_client::Wococo; + + type LeftToRightFinality = + crate::chains::rococo_headers_to_wococo::RococoFinalityToWococo; + type RightToLeftFinality = + crate::chains::wococo_headers_to_rococo::WococoFinalityToRococo; + + type LeftAccountIdConverter = bp_rococo::AccountIdConverter; + type RightAccountIdConverter = bp_wococo::AccountIdConverter; + + const MAX_MISSING_LEFT_HEADERS_AT_RIGHT: bp_rococo::BlockNumber = + bp_rococo::SESSION_LENGTH; + const MAX_MISSING_RIGHT_HEADERS_AT_LEFT: bp_wococo::BlockNumber = + bp_wococo::SESSION_LENGTH; + + use crate::chains::{ + rococo_messages_to_wococo::{ + standalone_metrics as left_to_right_standalone_metrics, + run as left_to_right_messages, + }, + wococo_messages_to_rococo::{ + run as right_to_left_messages, + }, + }; + + async fn update_right_to_left_conversion_rate( + _client: Client, + _signer: ::AccountKeyPair, + _updated_rate: f64, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Conversion rate is not supported by this bridge")) + } + + async fn update_left_to_right_conversion_rate( + _client: Client, + _signer: ::AccountKeyPair, + _updated_rate: f64, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Conversion rate is not supported by this bridge")) + } + + async fn left_create_account( + _left_client: Client, + _left_sign: ::AccountKeyPair, + _account_id: AccountIdOf, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Account creation is not supported by this bridge")) + } + + async fn right_create_account( + _right_client: Client, + _right_sign: ::AccountKeyPair, + _account_id: AccountIdOf, + ) -> anyhow::Result<()> { + Err(anyhow::format_err!("Account creation is not supported by this bridge")) + } + + $generic + }, + RelayHeadersAndMessages::KusamaPolkadot(_) => { + type Params = KusamaPolkadotHeadersAndMessages; + + type Left = relay_kusama_client::Kusama; + type Right = relay_polkadot_client::Polkadot; + + type LeftToRightFinality = + crate::chains::kusama_headers_to_polkadot::KusamaFinalityToPolkadot; + type RightToLeftFinality = + crate::chains::polkadot_headers_to_kusama::PolkadotFinalityToKusama; + + type LeftAccountIdConverter = bp_kusama::AccountIdConverter; + type RightAccountIdConverter = bp_polkadot::AccountIdConverter; + + const MAX_MISSING_LEFT_HEADERS_AT_RIGHT: bp_kusama::BlockNumber = + bp_kusama::SESSION_LENGTH; + const MAX_MISSING_RIGHT_HEADERS_AT_LEFT: bp_polkadot::BlockNumber = + bp_polkadot::SESSION_LENGTH; + + use crate::chains::{ + kusama_messages_to_polkadot::{ + standalone_metrics as left_to_right_standalone_metrics, + run as left_to_right_messages, + update_polkadot_to_kusama_conversion_rate as update_right_to_left_conversion_rate, + }, + polkadot_messages_to_kusama::{ + run as right_to_left_messages, + update_kusama_to_polkadot_conversion_rate as update_left_to_right_conversion_rate, + }, + }; + + async fn left_create_account( + left_client: Client, + left_sign: ::AccountKeyPair, + account_id: AccountIdOf, + ) -> anyhow::Result<()> { + let left_genesis_hash = *left_client.genesis_hash(); + left_client + .submit_signed_extrinsic( + left_sign.public().into(), + move |_, transaction_nonce| { + Bytes( + Left::sign_transaction(left_genesis_hash, &left_sign, relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + relay_kusama_client::runtime::Call::Balances( + relay_kusama_client::runtime::BalancesCall::transfer( + bp_kusama::AccountAddress::Id(account_id), + bp_kusama::EXISTENTIAL_DEPOSIT.into(), + ), + ), + transaction_nonce, + ), + ).encode() + ) + }, + ) + .await + .map(drop) + .map_err(|e| anyhow::format_err!("{}", e)) + } + + async fn right_create_account( + right_client: Client, + right_sign: ::AccountKeyPair, + account_id: AccountIdOf, + ) -> anyhow::Result<()> { + let right_genesis_hash = *right_client.genesis_hash(); + right_client + .submit_signed_extrinsic( + right_sign.public().into(), + move |_, transaction_nonce| { + Bytes( + Right::sign_transaction(right_genesis_hash, &right_sign, relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + relay_polkadot_client::runtime::Call::Balances( + relay_polkadot_client::runtime::BalancesCall::transfer( + bp_polkadot::AccountAddress::Id(account_id), + bp_polkadot::EXISTENTIAL_DEPOSIT.into(), + ), + ), + transaction_nonce, + ), + ).encode() + ) + }, + ) + .await + .map(drop) + .map_err(|e| anyhow::format_err!("{}", e)) + } + + $generic + }, + } + }; +} + +// All supported chains. +declare_chain_options!(Millau, millau); +declare_chain_options!(Rialto, rialto); +declare_chain_options!(Rococo, rococo); +declare_chain_options!(Wococo, wococo); +declare_chain_options!(Kusama, kusama); +declare_chain_options!(Polkadot, polkadot); +// All supported bridges. +declare_bridge_options!(Millau, Rialto); +declare_bridge_options!(Rococo, Wococo); +declare_bridge_options!(Kusama, Polkadot); + +impl RelayHeadersAndMessages { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self, { + let params: Params = self.into(); + + let left_client = params.left.to_client::().await?; + let left_transactions_mortality = params.left_sign.transactions_mortality()?; + let left_sign = params.left_sign.to_keypair::()?; + let left_messages_pallet_owner = + params.left_messages_pallet_owner.to_keypair::()?; + let right_client = params.right.to_client::().await?; + let right_transactions_mortality = params.right_sign.transactions_mortality()?; + let right_sign = params.right_sign.to_keypair::()?; + let right_messages_pallet_owner = + params.right_messages_pallet_owner.to_keypair::()?; + + let lanes = params.shared.lane; + let relayer_mode = params.shared.relayer_mode.into(); + let relay_strategy = MixStrategy::new(relayer_mode); + + // create metrics registry and register standalone metrics + let metrics_params: MetricsParams = params.shared.prometheus_params.into(); + let metrics_params = relay_utils::relay_metrics(metrics_params).into_params(); + let left_to_right_metrics = + left_to_right_standalone_metrics(left_client.clone(), right_client.clone())?; + let right_to_left_metrics = left_to_right_metrics.clone().reverse(); + + // start conversion rate update loops for left/right chains + if let Some(left_messages_pallet_owner) = left_messages_pallet_owner { + let left_client = left_client.clone(); + let format_err = || { + anyhow::format_err!( + "Cannon run conversion rate updater: {} -> {}", + Right::NAME, + Left::NAME + ) + }; + substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop( + left_to_right_metrics + .target_to_source_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + left_to_right_metrics + .target_to_base_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + left_to_right_metrics + .source_to_base_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + CONVERSION_RATE_ALLOWED_DIFFERENCE_RATIO, + move |new_rate| { + log::info!( + target: "bridge", + "Going to update {} -> {} (on {}) conversion rate to {}.", + Right::NAME, + Left::NAME, + Left::NAME, + new_rate, + ); + update_right_to_left_conversion_rate( + left_client.clone(), + left_messages_pallet_owner.clone(), + new_rate, + ) + }, + ); + } + if let Some(right_messages_pallet_owner) = right_messages_pallet_owner { + let right_client = right_client.clone(); + let format_err = || { + anyhow::format_err!( + "Cannon run conversion rate updater: {} -> {}", + Left::NAME, + Right::NAME + ) + }; + substrate_relay_helper::conversion_rate_update::run_conversion_rate_update_loop( + right_to_left_metrics + .target_to_source_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + left_to_right_metrics + .source_to_base_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + left_to_right_metrics + .target_to_base_conversion_rate + .as_ref() + .ok_or_else(format_err)? + .shared_value_ref(), + CONVERSION_RATE_ALLOWED_DIFFERENCE_RATIO, + move |new_rate| { + log::info!( + target: "bridge", + "Going to update {} -> {} (on {}) conversion rate to {}.", + Left::NAME, + Right::NAME, + Right::NAME, + new_rate, + ); + update_left_to_right_conversion_rate( + right_client.clone(), + right_messages_pallet_owner.clone(), + new_rate, + ) + }, + ); + } + + // optionally, create relayers fund account + if params.shared.create_relayers_fund_accounts { + let relayer_fund_acount_id = pallet_bridge_messages::relayer_fund_account_id::< + AccountIdOf, + LeftAccountIdConverter, + >(); + let relayers_fund_account_balance = + left_client.free_native_balance(relayer_fund_acount_id.clone()).await; + if let Err(relay_substrate_client::Error::AccountDoesNotExist) = + relayers_fund_account_balance + { + log::info!(target: "bridge", "Going to create relayers fund account at {}.", Left::NAME); + left_create_account( + left_client.clone(), + left_sign.clone(), + relayer_fund_acount_id, + ) + .await?; + } + + let relayer_fund_acount_id = pallet_bridge_messages::relayer_fund_account_id::< + AccountIdOf, + RightAccountIdConverter, + >(); + let relayers_fund_account_balance = + right_client.free_native_balance(relayer_fund_acount_id.clone()).await; + if let Err(relay_substrate_client::Error::AccountDoesNotExist) = + relayers_fund_account_balance + { + log::info!(target: "bridge", "Going to create relayers fund account at {}.", Right::NAME); + right_create_account( + right_client.clone(), + right_sign.clone(), + relayer_fund_acount_id, + ) + .await?; + } + } + + // start on-demand header relays + let left_to_right_on_demand_headers = OnDemandHeadersRelay::new( + left_client.clone(), + right_client.clone(), + right_transactions_mortality, + LeftToRightFinality::new(right_client.clone(), right_sign.clone()), + MAX_MISSING_LEFT_HEADERS_AT_RIGHT, + params.shared.only_mandatory_headers, + ); + let right_to_left_on_demand_headers = OnDemandHeadersRelay::new( + right_client.clone(), + left_client.clone(), + left_transactions_mortality, + RightToLeftFinality::new(left_client.clone(), left_sign.clone()), + MAX_MISSING_RIGHT_HEADERS_AT_LEFT, + params.shared.only_mandatory_headers, + ); + + // Need 2x capacity since we consider both directions for each lane + let mut message_relays = Vec::with_capacity(lanes.len() * 2); + for lane in lanes { + let lane = lane.into(); + let left_to_right_messages = left_to_right_messages(MessagesRelayParams { + source_client: left_client.clone(), + source_sign: left_sign.clone(), + source_transactions_mortality: left_transactions_mortality, + target_client: right_client.clone(), + target_sign: right_sign.clone(), + target_transactions_mortality: right_transactions_mortality, + source_to_target_headers_relay: Some(left_to_right_on_demand_headers.clone()), + target_to_source_headers_relay: Some(right_to_left_on_demand_headers.clone()), + lane_id: lane, + metrics_params: metrics_params.clone().disable(), + standalone_metrics: Some(left_to_right_metrics.clone()), + relay_strategy: relay_strategy.clone(), + }) + .map_err(|e| anyhow::format_err!("{}", e)) + .boxed(); + let right_to_left_messages = right_to_left_messages(MessagesRelayParams { + source_client: right_client.clone(), + source_sign: right_sign.clone(), + source_transactions_mortality: right_transactions_mortality, + target_client: left_client.clone(), + target_sign: left_sign.clone(), + target_transactions_mortality: left_transactions_mortality, + source_to_target_headers_relay: Some(right_to_left_on_demand_headers.clone()), + target_to_source_headers_relay: Some(left_to_right_on_demand_headers.clone()), + lane_id: lane, + metrics_params: metrics_params.clone().disable(), + standalone_metrics: Some(right_to_left_metrics.clone()), + relay_strategy: relay_strategy.clone(), + }) + .map_err(|e| anyhow::format_err!("{}", e)) + .boxed(); + + message_relays.push(left_to_right_messages); + message_relays.push(right_to_left_messages); + } + + relay_utils::relay_metrics(metrics_params) + .expose() + .await + .map_err(|e| anyhow::format_err!("{}", e))?; + + futures::future::select_all(message_relays).await.0 + }) + } +} diff --git a/relays/bin-substrate/src/cli/relay_messages.rs b/relays/bin-substrate/src/cli/relay_messages.rs new file mode 100644 index 000000000000..e47abfc5d94e --- /dev/null +++ b/relays/bin-substrate/src/cli/relay_messages.rs @@ -0,0 +1,145 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +use messages_relay::relay_strategy::MixStrategy; +use substrate_relay_helper::messages_lane::MessagesRelayParams; + +use crate::{ + cli::{ + bridge::FullBridge, HexLaneId, PrometheusParams, SourceConnectionParams, + SourceSigningParams, TargetConnectionParams, TargetSigningParams, + }, + select_full_bridge, +}; + +/// Relayer operating mode. +#[derive(Debug, EnumString, EnumVariantNames, Clone, Copy, PartialEq)] +#[strum(serialize_all = "kebab_case")] +pub enum RelayerMode { + /// The relayer doesn't care about rewards. + Altruistic, + /// The relayer will deliver all messages and confirmations as long as he's not losing any + /// funds. + Rational, +} + +impl From for messages_relay::message_lane_loop::RelayerMode { + fn from(mode: RelayerMode) -> Self { + match mode { + RelayerMode::Altruistic => Self::Altruistic, + RelayerMode::Rational => Self::Rational, + } + } +} + +/// Start messages relayer process. +#[derive(StructOpt)] +pub struct RelayMessages { + /// A bridge instance to relay messages for. + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] + bridge: FullBridge, + /// Hex-encoded lane id that should be served by the relay. Defaults to `00000000`. + #[structopt(long, default_value = "00000000")] + lane: HexLaneId, + #[structopt(long, possible_values = RelayerMode::VARIANTS, case_insensitive = true, default_value = "rational")] + relayer_mode: RelayerMode, + #[structopt(flatten)] + source: SourceConnectionParams, + #[structopt(flatten)] + source_sign: SourceSigningParams, + #[structopt(flatten)] + target: TargetConnectionParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, + #[structopt(flatten)] + prometheus_params: PrometheusParams, +} + +impl RelayMessages { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_full_bridge!(self.bridge, { + let source_client = self.source.to_client::().await?; + let source_sign = self.source_sign.to_keypair::()?; + let source_transactions_mortality = self.source_sign.transactions_mortality()?; + let target_client = self.target.to_client::().await?; + let target_sign = self.target_sign.to_keypair::()?; + let target_transactions_mortality = self.target_sign.transactions_mortality()?; + let relayer_mode = self.relayer_mode.into(); + let relay_strategy = MixStrategy::new(relayer_mode); + + relay_messages(MessagesRelayParams { + source_client, + source_sign, + source_transactions_mortality, + target_client, + target_sign, + target_transactions_mortality, + source_to_target_headers_relay: None, + target_to_source_headers_relay: None, + lane_id: self.lane.into(), + metrics_params: self.prometheus_params.into(), + standalone_metrics: None, + relay_strategy, + }) + .await + .map_err(|e| anyhow::format_err!("{}", e)) + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn should_use_rational_relayer_mode_by_default() { + assert_eq!( + RelayMessages::from_iter(vec![ + "relay-messages", + "rialto-to-millau", + "--source-port=0", + "--source-signer=//Alice", + "--target-port=0", + "--target-signer=//Alice", + "--lane=00000000", + ]) + .relayer_mode, + RelayerMode::Rational, + ); + } + + #[test] + fn should_accept_altruistic_relayer_mode() { + assert_eq!( + RelayMessages::from_iter(vec![ + "relay-messages", + "rialto-to-millau", + "--source-port=0", + "--source-signer=//Alice", + "--target-port=0", + "--target-signer=//Alice", + "--lane=00000000", + "--relayer-mode=altruistic", + ]) + .relayer_mode, + RelayerMode::Altruistic, + ); + } +} diff --git a/relays/bin-substrate/src/cli/resubmit_transactions.rs b/relays/bin-substrate/src/cli/resubmit_transactions.rs new file mode 100644 index 000000000000..64663d7e8ec0 --- /dev/null +++ b/relays/bin-substrate/src/cli/resubmit_transactions.rs @@ -0,0 +1,559 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::cli::{Balance, TargetConnectionParams, TargetSigningParams}; + +use codec::{Decode, Encode}; +use num_traits::{One, Zero}; +use relay_substrate_client::{ + BlockWithJustification, Chain, Client, Error as SubstrateError, HeaderOf, TransactionSignScheme, +}; +use relay_utils::FailedClient; +use sp_core::Bytes; +use sp_runtime::{ + traits::{Hash, Header as HeaderT}, + transaction_validity::TransactionPriority, +}; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +/// Start resubmit transactions process. +#[derive(StructOpt)] +pub struct ResubmitTransactions { + /// A bridge instance to relay headers for. + #[structopt(possible_values = RelayChain::VARIANTS, case_insensitive = true)] + chain: RelayChain, + #[structopt(flatten)] + target: TargetConnectionParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, + /// Number of blocks we see before considering queued transaction as stalled. + #[structopt(long, default_value = "5")] + stalled_blocks: u32, + /// Tip limit. We'll never submit transaction with larger tip. + #[structopt(long)] + tip_limit: Balance, + /// Tip increase step. We'll be checking updated transaction priority by increasing its tip by + /// this step. + #[structopt(long)] + tip_step: Balance, + /// Priority selection strategy. + #[structopt(subcommand)] + strategy: PrioritySelectionStrategy, +} + +/// Chain, which transactions we're going to track && resubmit. +#[derive(Debug, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +pub enum RelayChain { + Millau, + Kusama, + Polkadot, +} + +/// Strategy to use for priority selection. +#[derive(StructOpt, Debug, PartialEq, Eq, Clone, Copy)] +pub enum PrioritySelectionStrategy { + /// Strategy selects tip that changes transaction priority to be better than priority of + /// the first transaction of previous block. + /// + /// It only makes sense to use this strategy for Millau transactions. Millau has transactions + /// that are close to block limits, so if there are any other queued transactions, 'large' + /// transaction won't fit the block && will be postponed. To avoid this, we change its priority + /// to some large value, making it best transaction => it'll be 'mined' first. + MakeItBestTransaction, + /// Strategy selects tip that changes transaction priority to be better than priority of + /// selected queued transaction. + /// + /// When we first see stalled transaction, we make it better than worst 1/4 of queued + /// transactions. If it is still stalled, we'll make it better than 1/3 of queued transactions, + /// ... + MakeItBetterThanQueuedTransaction, +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + RelayChain::Millau => { + type Target = relay_millau_client::Millau; + type TargetSign = relay_millau_client::Millau; + + $generic + }, + RelayChain::Kusama => { + type Target = relay_kusama_client::Kusama; + type TargetSign = relay_kusama_client::Kusama; + + $generic + }, + RelayChain::Polkadot => { + type Target = relay_polkadot_client::Polkadot; + type TargetSign = relay_polkadot_client::Polkadot; + + $generic + }, + } + }; +} + +impl ResubmitTransactions { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self.chain, { + let relay_loop_name = format!("ResubmitTransactions{}", Target::NAME); + let client = self.target.to_client::().await?; + let key_pair = self.target_sign.to_keypair::()?; + + relay_utils::relay_loop((), client) + .run(relay_loop_name, move |_, client, _| { + run_until_connection_lost::( + client, + key_pair.clone(), + Context { + strategy: self.strategy, + best_header: HeaderOf::::new( + Default::default(), + Default::default(), + Default::default(), + Default::default(), + Default::default(), + ), + transaction: None, + resubmitted: 0, + stalled_for: Zero::zero(), + stalled_for_limit: self.stalled_blocks as _, + tip_step: self.tip_step.cast() as _, + tip_limit: self.tip_limit.cast() as _, + }, + ) + }) + .await + .map_err(Into::into) + }) + } +} + +impl PrioritySelectionStrategy { + /// Select target priority. + async fn select_target_priority>( + &self, + client: &Client, + context: &Context, + ) -> Result, SubstrateError> { + match *self { + PrioritySelectionStrategy::MakeItBestTransaction => + read_previous_block_best_priority::(client, context).await, + PrioritySelectionStrategy::MakeItBetterThanQueuedTransaction => + select_priority_from_queue::(client, context).await, + } + } +} + +#[derive(Debug)] +struct Context { + /// Priority selection strategy. + strategy: PrioritySelectionStrategy, + /// Best known block header. + best_header: C::Header, + /// Hash of the (potentially) stalled transaction. + transaction: Option, + /// How many times we have resubmitted this `transaction`? + resubmitted: u32, + /// This transaction is in pool for `stalled_for` wakeup intervals. + stalled_for: C::BlockNumber, + /// When `stalled_for` reaching this limit, transaction is considered stalled. + stalled_for_limit: C::BlockNumber, + /// Tip step interval. + tip_step: C::Balance, + /// Maximal tip. + tip_limit: C::Balance, +} + +impl Context { + /// Return true if transaction has stalled. + fn is_stalled(&self) -> bool { + self.stalled_for >= self.stalled_for_limit + } + + /// Notice resubmitted transaction. + fn notice_resubmitted_transaction(mut self, transaction: C::Hash) -> Self { + self.transaction = Some(transaction); + self.stalled_for = Zero::zero(); + self.resubmitted += 1; + self + } + + /// Notice transaction from the transaction pool. + fn notice_transaction(mut self, transaction: C::Hash) -> Self { + if self.transaction == Some(transaction) { + self.stalled_for += One::one(); + } else { + self.transaction = Some(transaction); + self.stalled_for = One::one(); + self.resubmitted = 0; + } + self + } +} + +/// Run resubmit transactions loop. +async fn run_until_connection_lost>( + client: Client, + key_pair: S::AccountKeyPair, + mut context: Context, +) -> Result<(), FailedClient> { + loop { + async_std::task::sleep(C::AVERAGE_BLOCK_INTERVAL).await; + + let result = run_loop_iteration::(client.clone(), key_pair.clone(), context).await; + context = match result { + Ok(context) => context, + Err(error) => { + log::error!( + target: "bridge", + "Resubmit {} transactions loop has failed with error: {:?}", + C::NAME, + error, + ); + return Err(FailedClient::Target) + }, + }; + } +} + +/// Run single loop iteration. +async fn run_loop_iteration>( + client: Client, + key_pair: S::AccountKeyPair, + mut context: Context, +) -> Result, SubstrateError> { + // correct best header is required for all other actions + context.best_header = client.best_header().await?; + + // check if there's queued transaction, signed by given author + let original_transaction = match lookup_signer_transaction::(&client, &key_pair).await? { + Some(original_transaction) => original_transaction, + None => { + log::trace!(target: "bridge", "No {} transactions from required signer in the txpool", C::NAME); + return Ok(context) + }, + }; + let original_transaction_hash = C::Hasher::hash(&original_transaction.encode()); + let context = context.notice_transaction(original_transaction_hash); + + // if transaction hasn't been mined for `stalled_blocks`, we'll need to resubmit it + if !context.is_stalled() { + log::trace!( + target: "bridge", + "{} transaction {:?} is not yet stalled ({:?}/{:?})", + C::NAME, + context.transaction, + context.stalled_for, + context.stalled_for_limit, + ); + return Ok(context) + } + + // select priority for updated transaction + let target_priority = + match context.strategy.select_target_priority::(&client, &context).await? { + Some(target_priority) => target_priority, + None => { + log::trace!(target: "bridge", "Failed to select target priority"); + return Ok(context) + }, + }; + + // update transaction tip + let (is_updated, updated_transaction) = update_transaction_tip::( + &client, + &key_pair, + context.best_header.hash(), + original_transaction, + context.tip_step, + context.tip_limit, + target_priority, + ) + .await?; + + if !is_updated { + log::trace!(target: "bridge", "{} transaction tip can not be updated. Reached limit?", C::NAME); + return Ok(context) + } + + let updated_transaction = updated_transaction.encode(); + let updated_transaction_hash = C::Hasher::hash(&updated_transaction); + client.submit_unsigned_extrinsic(Bytes(updated_transaction)).await?; + + log::info!( + target: "bridge", + "Replaced {} transaction {} with {} in txpool", + C::NAME, + original_transaction_hash, + updated_transaction_hash, + ); + + Ok(context.notice_resubmitted_transaction(updated_transaction_hash)) +} + +/// Search transaction pool for transaction, signed by given key pair. +async fn lookup_signer_transaction>( + client: &Client, + key_pair: &S::AccountKeyPair, +) -> Result, SubstrateError> { + let pending_transactions = client.pending_extrinsics().await?; + for pending_transaction in pending_transactions { + let pending_transaction = S::SignedTransaction::decode(&mut &pending_transaction.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + if !S::is_signed_by(key_pair, &pending_transaction) { + continue + } + + return Ok(Some(pending_transaction)) + } + + Ok(None) +} + +/// Read priority of best signed transaction of previous block. +async fn read_previous_block_best_priority>( + client: &Client, + context: &Context, +) -> Result, SubstrateError> { + let best_block = client.get_block(Some(context.best_header.hash())).await?; + let best_transaction = best_block + .extrinsics() + .iter() + .filter_map(|xt| S::SignedTransaction::decode(&mut &xt[..]).ok()) + .find(|xt| S::is_signed(xt)); + match best_transaction { + Some(best_transaction) => Ok(Some( + client + .validate_transaction(*context.best_header.parent_hash(), best_transaction) + .await?? + .priority, + )), + None => Ok(None), + } +} + +/// Select priority of some queued transaction. +async fn select_priority_from_queue>( + client: &Client, + context: &Context, +) -> Result, SubstrateError> { + // select transaction from the queue + let queued_transactions = client.pending_extrinsics().await?; + let selected_transaction = match select_transaction_from_queue(queued_transactions, context) { + Some(selected_transaction) => selected_transaction, + None => return Ok(None), + }; + + let selected_transaction = S::SignedTransaction::decode(&mut &selected_transaction[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + let target_priority = client + .validate_transaction(context.best_header.hash(), selected_transaction) + .await?? + .priority; + Ok(Some(target_priority)) +} + +/// Select transaction with target priority from the vec of queued transactions. +fn select_transaction_from_queue( + mut queued_transactions: Vec, + context: &Context, +) -> Option { + if queued_transactions.is_empty() { + return None + } + + // the more times we resubmit transaction (`context.resubmitted`), the closer we move + // to the front of the transaction queue + let total_transactions = queued_transactions.len(); + let resubmitted_factor = context.resubmitted; + let divisor = + 1usize.saturating_add(1usize.checked_shl(resubmitted_factor).unwrap_or(usize::MAX)); + let transactions_to_skip = total_transactions / divisor; + + Some( + queued_transactions + .swap_remove(std::cmp::min(total_transactions - 1, transactions_to_skip)), + ) +} + +/// Try to find appropriate tip for transaction so that its priority is larger than given. +async fn update_transaction_tip>( + client: &Client, + key_pair: &S::AccountKeyPair, + at_block: C::Hash, + tx: S::SignedTransaction, + tip_step: C::Balance, + tip_limit: C::Balance, + target_priority: TransactionPriority, +) -> Result<(bool, S::SignedTransaction), SubstrateError> { + let stx = format!("{:?}", tx); + let mut current_priority = client.validate_transaction(at_block, tx.clone()).await??.priority; + let mut unsigned_tx = S::parse_transaction(tx).ok_or_else(|| { + SubstrateError::Custom(format!("Failed to parse {} transaction {}", C::NAME, stx,)) + })?; + let old_tip = unsigned_tx.tip; + + while current_priority < target_priority { + let next_tip = unsigned_tx.tip + tip_step; + if next_tip > tip_limit { + break + } + + log::trace!( + target: "bridge", + "{} transaction priority with tip={:?}: {}. Target priority: {}", + C::NAME, + unsigned_tx.tip, + current_priority, + target_priority, + ); + + unsigned_tx.tip = next_tip; + current_priority = client + .validate_transaction( + at_block, + S::sign_transaction( + *client.genesis_hash(), + key_pair, + relay_substrate_client::TransactionEra::immortal(), + unsigned_tx.clone(), + ), + ) + .await?? + .priority; + } + + log::debug!( + target: "bridge", + "{} transaction tip has changed from {:?} to {:?}", + C::NAME, + old_tip, + unsigned_tx.tip, + ); + + Ok(( + old_tip != unsigned_tx.tip, + S::sign_transaction( + *client.genesis_hash(), + key_pair, + relay_substrate_client::TransactionEra::immortal(), + unsigned_tx, + ), + )) +} + +#[cfg(test)] +mod tests { + use super::*; + use bp_rialto::Hash; + use relay_rialto_client::Rialto; + + fn context() -> Context { + Context { + strategy: PrioritySelectionStrategy::MakeItBestTransaction, + best_header: HeaderOf::::new( + Default::default(), + Default::default(), + Default::default(), + Default::default(), + Default::default(), + ), + transaction: None, + resubmitted: 0, + stalled_for: Zero::zero(), + stalled_for_limit: 3, + tip_step: 100, + tip_limit: 1000, + } + } + + #[test] + fn context_works() { + let mut context = context(); + + // when transaction is noticed 2/3 times, it isn't stalled + context = context.notice_transaction(Default::default()); + assert!(!context.is_stalled()); + assert_eq!(context.stalled_for, 1); + assert_eq!(context.resubmitted, 0); + context = context.notice_transaction(Default::default()); + assert!(!context.is_stalled()); + assert_eq!(context.stalled_for, 2); + assert_eq!(context.resubmitted, 0); + + // when transaction is noticed for 3rd time in a row, it is considered stalled + context = context.notice_transaction(Default::default()); + assert!(context.is_stalled()); + assert_eq!(context.stalled_for, 3); + assert_eq!(context.resubmitted, 0); + + // and after we resubmit it, we forget previous transaction + context = context.notice_resubmitted_transaction(Hash::from([1; 32])); + assert_eq!(context.transaction, Some(Hash::from([1; 32]))); + assert_eq!(context.resubmitted, 1); + assert_eq!(context.stalled_for, 0); + } + + #[test] + fn select_transaction_from_queue_works_with_empty_queue() { + assert_eq!(select_transaction_from_queue(vec![], &context()), None); + } + + #[test] + fn select_transaction_from_queue_works() { + let mut context = context(); + let queued_transactions = vec![ + Bytes(vec![1]), + Bytes(vec![2]), + Bytes(vec![3]), + Bytes(vec![4]), + Bytes(vec![5]), + Bytes(vec![6]), + ]; + + // when we resubmit tx for the first time, 1/2 of queue is skipped + assert_eq!( + select_transaction_from_queue(queued_transactions.clone(), &context), + Some(Bytes(vec![4])), + ); + + // when we resubmit tx for the second time, 1/3 of queue is skipped + context = context.notice_resubmitted_transaction(Hash::from([1; 32])); + assert_eq!( + select_transaction_from_queue(queued_transactions.clone(), &context), + Some(Bytes(vec![3])), + ); + + // when we resubmit tx for the third time, 1/5 of queue is skipped + context = context.notice_resubmitted_transaction(Hash::from([2; 32])); + assert_eq!( + select_transaction_from_queue(queued_transactions.clone(), &context), + Some(Bytes(vec![2])), + ); + + // when we resubmit tx for the second time, 1/9 of queue is skipped + context = context.notice_resubmitted_transaction(Hash::from([3; 32])); + assert_eq!( + select_transaction_from_queue(queued_transactions, &context), + Some(Bytes(vec![1])), + ); + } +} diff --git a/relays/bin-substrate/src/cli/send_message.rs b/relays/bin-substrate/src/cli/send_message.rs new file mode 100644 index 000000000000..3e77ad834292 --- /dev/null +++ b/relays/bin-substrate/src/cli/send_message.rs @@ -0,0 +1,409 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::cli::{ + bridge::FullBridge, + encode_call::{self, CliEncodeCall}, + estimate_fee::estimate_message_delivery_and_dispatch_fee, + Balance, CliChain, ExplicitOrMaximal, HexBytes, HexLaneId, Origins, SourceConnectionParams, + SourceSigningParams, TargetSigningParams, +}; +use bp_message_dispatch::{CallOrigin, MessagePayload}; +use bp_runtime::BalanceOf; +use codec::Encode; +use frame_support::weights::Weight; +use relay_substrate_client::{Chain, TransactionSignScheme, UnsignedTransaction}; +use sp_core::{Bytes, Pair}; +use sp_runtime::{traits::IdentifyAccount, AccountId32, MultiSignature, MultiSigner}; +use std::fmt::Debug; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +/// Relayer operating mode. +#[derive(Debug, EnumString, EnumVariantNames, Clone, Copy, PartialEq, Eq)] +#[strum(serialize_all = "kebab_case")] +pub enum DispatchFeePayment { + /// The dispatch fee is paid at the source chain. + AtSourceChain, + /// The dispatch fee is paid at the target chain. + AtTargetChain, +} + +impl From for bp_runtime::messages::DispatchFeePayment { + fn from(dispatch_fee_payment: DispatchFeePayment) -> Self { + match dispatch_fee_payment { + DispatchFeePayment::AtSourceChain => Self::AtSourceChain, + DispatchFeePayment::AtTargetChain => Self::AtTargetChain, + } + } +} + +/// Send bridge message. +#[derive(StructOpt)] +pub struct SendMessage { + /// A bridge instance to encode call for. + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] + bridge: FullBridge, + #[structopt(flatten)] + source: SourceConnectionParams, + #[structopt(flatten)] + source_sign: SourceSigningParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, + /// Hex-encoded lane id. Defaults to `00000000`. + #[structopt(long, default_value = "00000000")] + lane: HexLaneId, + /// Where dispatch fee is paid? + #[structopt( + long, + possible_values = DispatchFeePayment::VARIANTS, + case_insensitive = true, + default_value = "at-source-chain", + )] + dispatch_fee_payment: DispatchFeePayment, + /// Dispatch weight of the message. If not passed, determined automatically. + #[structopt(long)] + dispatch_weight: Option>, + /// Delivery and dispatch fee in source chain base currency units. If not passed, determined + /// automatically. + #[structopt(long)] + fee: Option, + /// Message type. + #[structopt(subcommand)] + message: crate::cli::encode_call::Call, + /// The origin to use when dispatching the message on the target chain. Defaults to + /// `SourceAccount`. + #[structopt(long, possible_values = &Origins::variants(), default_value = "Source")] + origin: Origins, +} + +impl SendMessage { + pub fn encode_payload( + &mut self, + ) -> anyhow::Result>> { + crate::select_full_bridge!(self.bridge, { + let SendMessage { + source_sign, + target_sign, + ref mut message, + dispatch_fee_payment, + dispatch_weight, + origin, + bridge, + .. + } = self; + + let source_sign = source_sign.to_keypair::()?; + + encode_call::preprocess_call::(message, bridge.bridge_instance_index()); + let target_call = Target::encode_call(message)?; + + let payload = { + let target_call_weight = prepare_call_dispatch_weight( + dispatch_weight, + ExplicitOrMaximal::Explicit(Target::get_dispatch_info(&target_call)?.weight), + compute_maximal_message_dispatch_weight(Target::max_extrinsic_weight()), + ); + let source_sender_public: MultiSigner = source_sign.public().into(); + let source_account_id = source_sender_public.into_account(); + + message_payload( + Target::RUNTIME_VERSION.spec_version, + target_call_weight, + match origin { + Origins::Source => CallOrigin::SourceAccount(source_account_id), + Origins::Target => { + let target_sign = target_sign.to_keypair::()?; + let digest = account_ownership_digest( + &target_call, + source_account_id.clone(), + Target::RUNTIME_VERSION.spec_version, + ); + let target_origin_public = target_sign.public(); + let digest_signature = target_sign.sign(&digest); + CallOrigin::TargetAccount( + source_account_id, + target_origin_public.into(), + digest_signature.into(), + ) + }, + }, + &target_call, + *dispatch_fee_payment, + ) + }; + Ok(payload) + }) + } + + /// Run the command. + pub async fn run(mut self) -> anyhow::Result<()> { + crate::select_full_bridge!(self.bridge, { + let payload = self.encode_payload()?; + + let source_client = self.source.to_client::().await?; + let source_sign = self.source_sign.to_keypair::()?; + + let lane = self.lane.clone().into(); + let fee = match self.fee { + Some(fee) => fee, + None => Balance( + estimate_message_delivery_and_dispatch_fee::, _, _>( + &source_client, + ESTIMATE_MESSAGE_FEE_METHOD, + lane, + payload.clone(), + ) + .await? as _, + ), + }; + let dispatch_weight = payload.weight; + let send_message_call = Source::encode_call(&encode_call::Call::BridgeSendMessage { + bridge_instance_index: self.bridge.bridge_instance_index(), + lane: self.lane, + payload: HexBytes::encode(&payload), + fee, + })?; + + let source_genesis_hash = *source_client.genesis_hash(); + let estimated_transaction_fee = source_client + .estimate_extrinsic_fee(Bytes( + Source::sign_transaction( + source_genesis_hash, + &source_sign, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(send_message_call.clone(), 0), + ) + .encode(), + )) + .await?; + source_client + .submit_signed_extrinsic(source_sign.public().into(), move |_, transaction_nonce| { + let signed_source_call = Source::sign_transaction( + source_genesis_hash, + &source_sign, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(send_message_call, transaction_nonce), + ) + .encode(); + + log::info!( + target: "bridge", + "Sending message to {}. Lane: {:?}. Size: {}. Dispatch weight: {}. Fee: {}", + Target::NAME, + lane, + signed_source_call.len(), + dispatch_weight, + fee, + ); + log::info!( + target: "bridge", + "The source account ({:?}) balance will be reduced by (at most) {} (message fee) + {} (tx fee ) = {} {} tokens", + AccountId32::from(source_sign.public()), + fee.0, + estimated_transaction_fee.inclusion_fee(), + fee.0.saturating_add(estimated_transaction_fee.inclusion_fee() as _), + Source::NAME, + ); + log::info!( + target: "bridge", + "Signed {} Call: {:?}", + Source::NAME, + HexBytes::encode(&signed_source_call) + ); + + Bytes(signed_source_call) + }) + .await?; + }); + + Ok(()) + } +} + +fn prepare_call_dispatch_weight( + user_specified_dispatch_weight: &Option>, + weight_from_pre_dispatch_call: ExplicitOrMaximal, + maximal_allowed_weight: Weight, +) -> Weight { + match user_specified_dispatch_weight.clone().unwrap_or(weight_from_pre_dispatch_call) { + ExplicitOrMaximal::Explicit(weight) => weight, + ExplicitOrMaximal::Maximal => maximal_allowed_weight, + } +} + +pub(crate) fn message_payload( + spec_version: u32, + weight: Weight, + origin: CallOrigin, + call: &impl Encode, + dispatch_fee_payment: DispatchFeePayment, +) -> MessagePayload> +where + SAccountId: Encode + Debug, + TPublic: Encode + Debug, + TSignature: Encode + Debug, +{ + // Display nicely formatted call. + let payload = MessagePayload { + spec_version, + weight, + origin, + dispatch_fee_payment: dispatch_fee_payment.into(), + call: HexBytes::encode(call), + }; + + log::info!(target: "bridge", "Created Message Payload: {:#?}", payload); + log::info!(target: "bridge", "Encoded Message Payload: {:?}", HexBytes::encode(&payload)); + + // re-pack to return `Vec` + let MessagePayload { spec_version, weight, origin, dispatch_fee_payment, call } = payload; + MessagePayload { spec_version, weight, origin, dispatch_fee_payment, call: call.0 } +} + +pub(crate) fn compute_maximal_message_dispatch_weight(maximal_extrinsic_weight: Weight) -> Weight { + bridge_runtime_common::messages::target::maximal_incoming_message_dispatch_weight( + maximal_extrinsic_weight, + ) +} + +#[cfg(test)] +mod tests { + use super::*; + use hex_literal::hex; + + #[test] + fn send_remark_rialto_to_millau() { + // given + let mut send_message = SendMessage::from_iter(vec![ + "send-message", + "rialto-to-millau", + "--source-port", + "1234", + "--source-signer", + "//Alice", + "remark", + "--remark-payload", + "1234", + ]); + + // when + let payload = send_message.encode_payload().unwrap(); + + // then + assert_eq!( + payload, + MessagePayload { + spec_version: relay_millau_client::Millau::RUNTIME_VERSION.spec_version, + weight: 576000, + origin: CallOrigin::SourceAccount( + sp_keyring::AccountKeyring::Alice.to_account_id() + ), + dispatch_fee_payment: bp_runtime::messages::DispatchFeePayment::AtSourceChain, + call: hex!("0001081234").to_vec(), + } + ); + } + + #[test] + fn send_remark_millau_to_rialto() { + // given + let mut send_message = SendMessage::from_iter(vec![ + "send-message", + "millau-to-rialto", + "--source-port", + "1234", + "--source-signer", + "//Alice", + "--origin", + "Target", + "--target-signer", + "//Bob", + "remark", + "--remark-payload", + "1234", + ]); + + // when + let payload = send_message.encode_payload().unwrap(); + + // then + // Since signatures are randomized we extract it from here and only check the rest. + let signature = match payload.origin { + CallOrigin::TargetAccount(_, _, ref sig) => sig.clone(), + _ => panic!("Unexpected `CallOrigin`: {:?}", payload), + }; + assert_eq!( + payload, + MessagePayload { + spec_version: relay_millau_client::Millau::RUNTIME_VERSION.spec_version, + weight: 576000, + origin: CallOrigin::TargetAccount( + sp_keyring::AccountKeyring::Alice.to_account_id(), + sp_keyring::AccountKeyring::Bob.into(), + signature, + ), + dispatch_fee_payment: bp_runtime::messages::DispatchFeePayment::AtSourceChain, + call: hex!("0001081234").to_vec(), + } + ); + } + + #[test] + fn accepts_send_message_command_without_target_sign_options() { + // given + let send_message = SendMessage::from_iter_safe(vec![ + "send-message", + "rialto-to-millau", + "--source-port", + "1234", + "--source-signer", + "//Alice", + "--origin", + "Target", + "remark", + "--remark-payload", + "1234", + ]); + + assert!(send_message.is_ok()); + } + + #[test] + fn accepts_non_default_dispatch_fee_payment() { + // given + let mut send_message = SendMessage::from_iter(vec![ + "send-message", + "rialto-to-millau", + "--source-port", + "1234", + "--source-signer", + "//Alice", + "--dispatch-fee-payment", + "at-target-chain", + "remark", + ]); + + // when + let payload = send_message.encode_payload().unwrap(); + + // then + assert_eq!( + payload.dispatch_fee_payment, + bp_runtime::messages::DispatchFeePayment::AtTargetChain + ); + } +} diff --git a/relays/bin-substrate/src/cli/swap_tokens.rs b/relays/bin-substrate/src/cli/swap_tokens.rs new file mode 100644 index 000000000000..dbe46f469070 --- /dev/null +++ b/relays/bin-substrate/src/cli/swap_tokens.rs @@ -0,0 +1,799 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Tokens swap using token-swap bridge pallet. + +// TokenSwapBalances fields are never directly accessed, but the whole struct is printed +// to show token swap progress +#![allow(dead_code)] + +use codec::Encode; +use num_traits::One; +use rand::random; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; + +use frame_support::dispatch::GetDispatchInfo; +use relay_substrate_client::{ + AccountIdOf, AccountPublicOf, BalanceOf, BlockNumberOf, CallOf, Chain, ChainWithBalances, + Client, Error as SubstrateError, HashOf, SignatureOf, Subscription, TransactionSignScheme, + TransactionStatusOf, UnsignedTransaction, +}; +use sp_core::{blake2_256, storage::StorageKey, Bytes, Pair, H256, U256}; +use sp_runtime::traits::{Convert, Header as HeaderT}; + +use crate::cli::{ + Balance, CliChain, SourceConnectionParams, SourceSigningParams, TargetConnectionParams, + TargetSigningParams, +}; + +/// Swap tokens. +#[derive(StructOpt, Debug, PartialEq)] +pub struct SwapTokens { + /// A bridge instance to use in token swap. + #[structopt(possible_values = SwapTokensBridge::VARIANTS, case_insensitive = true)] + bridge: SwapTokensBridge, + + #[structopt(flatten)] + source: SourceConnectionParams, + #[structopt(flatten)] + source_sign: SourceSigningParams, + + #[structopt(flatten)] + target: TargetConnectionParams, + #[structopt(flatten)] + target_sign: TargetSigningParams, + + #[structopt(subcommand)] + swap_type: TokenSwapType, + /// Source chain balance that source signer wants to swap. + #[structopt(long)] + source_balance: Balance, + /// Target chain balance that target signer wants to swap. + #[structopt(long)] + target_balance: Balance, +} + +/// Token swap type. +#[derive(StructOpt, Debug, PartialEq, Eq, Clone)] +pub enum TokenSwapType { + /// The `target_sign` is temporary and only have funds for single swap. + NoLock, + /// This swap type prevents `source_signer` from restarting the swap after it has been + /// completed. + LockUntilBlock { + /// Number of blocks before the swap expires. + #[structopt(long)] + blocks_before_expire: u32, + /// Unique swap nonce. + #[structopt(long)] + swap_nonce: Option, + }, +} + +/// Swap tokens bridge. +#[derive(Debug, EnumString, EnumVariantNames, PartialEq)] +#[strum(serialize_all = "kebab_case")] +pub enum SwapTokensBridge { + /// Use token-swap pallet deployed at Millau to swap tokens with Rialto. + MillauToRialto, +} + +macro_rules! select_bridge { + ($bridge: expr, $generic: tt) => { + match $bridge { + SwapTokensBridge::MillauToRialto => { + type Source = relay_millau_client::Millau; + type Target = relay_rialto_client::Rialto; + + type FromSwapToThisAccountIdConverter = bp_rialto::AccountIdConverter; + + use bp_millau::{ + derive_account_from_rialto_id as derive_source_account_from_target_account, + TO_MILLAU_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_TARGET_TO_SOURCE_MESSAGE_FEE_METHOD, + WITH_RIALTO_TOKEN_SWAP_PALLET_NAME as TOKEN_SWAP_PALLET_NAME, + }; + use bp_rialto::{ + derive_account_from_millau_id as derive_target_account_from_source_account, + TO_RIALTO_ESTIMATE_MESSAGE_FEE_METHOD as ESTIMATE_SOURCE_TO_TARGET_MESSAGE_FEE_METHOD, + }; + + const SOURCE_CHAIN_ID: bp_runtime::ChainId = bp_runtime::MILLAU_CHAIN_ID; + const TARGET_CHAIN_ID: bp_runtime::ChainId = bp_runtime::RIALTO_CHAIN_ID; + + const SOURCE_SPEC_VERSION: u32 = millau_runtime::VERSION.spec_version; + const TARGET_SPEC_VERSION: u32 = rialto_runtime::VERSION.spec_version; + + const SOURCE_TO_TARGET_LANE_ID: bp_messages::LaneId = *b"swap"; + const TARGET_TO_SOURCE_LANE_ID: bp_messages::LaneId = [0, 0, 0, 0]; + + $generic + }, + } + }; +} + +impl SwapTokens { + /// Run the command. + pub async fn run(self) -> anyhow::Result<()> { + select_bridge!(self.bridge, { + let source_client = self.source.to_client::().await?; + let source_sign = self.source_sign.to_keypair::()?; + let target_client = self.target.to_client::().await?; + let target_sign = self.target_sign.to_keypair::()?; + + // names of variables in this function are matching names used by the + // `pallet-bridge-token-swap` + + // prepare token swap intention + let token_swap = self + .prepare_token_swap::(&source_client, &source_sign, &target_sign) + .await?; + + // group all accounts that will be used later + let accounts = TokenSwapAccounts { + source_account_at_bridged_chain: derive_target_account_from_source_account( + bp_runtime::SourceAccount::Account( + token_swap.source_account_at_this_chain.clone(), + ), + ), + target_account_at_this_chain: derive_source_account_from_target_account( + bp_runtime::SourceAccount::Account( + token_swap.target_account_at_bridged_chain.clone(), + ), + ), + source_account_at_this_chain: token_swap.source_account_at_this_chain.clone(), + target_account_at_bridged_chain: token_swap.target_account_at_bridged_chain.clone(), + swap_account: FromSwapToThisAccountIdConverter::convert( + token_swap.using_encoded(blake2_256).into(), + ), + }; + + // account balances are used to demonstrate what's happening :) + let initial_balances = + read_account_balances(&accounts, &source_client, &target_client).await?; + + // before calling something that may fail, log what we're trying to do + log::info!(target: "bridge", "Starting swap: {:?}", token_swap); + log::info!(target: "bridge", "Swap accounts: {:?}", accounts); + log::info!(target: "bridge", "Initial account balances: {:?}", initial_balances); + + // + // Step 1: swap is created + // + + // prepare `Currency::transfer` call that will happen at the target chain + let bridged_currency_transfer: CallOf = pallet_balances::Call::transfer { + dest: accounts.source_account_at_bridged_chain.clone().into(), + value: token_swap.target_balance_at_bridged_chain, + } + .into(); + let bridged_currency_transfer_weight = + bridged_currency_transfer.get_dispatch_info().weight; + + // sign message + let bridged_chain_spec_version = TARGET_SPEC_VERSION; + let signature_payload = pallet_bridge_dispatch::account_ownership_digest( + &bridged_currency_transfer, + &accounts.swap_account, + &bridged_chain_spec_version, + SOURCE_CHAIN_ID, + TARGET_CHAIN_ID, + ); + let bridged_currency_transfer_signature: SignatureOf = + target_sign.sign(&signature_payload).into(); + + // prepare `create_swap` call + let target_public_at_bridged_chain: AccountPublicOf = + target_sign.public().into(); + let swap_delivery_and_dispatch_fee: BalanceOf = + crate::cli::estimate_fee::estimate_message_delivery_and_dispatch_fee( + &source_client, + ESTIMATE_SOURCE_TO_TARGET_MESSAGE_FEE_METHOD, + SOURCE_TO_TARGET_LANE_ID, + bp_message_dispatch::MessagePayload { + spec_version: TARGET_SPEC_VERSION, + weight: bridged_currency_transfer_weight, + origin: bp_message_dispatch::CallOrigin::TargetAccount( + accounts.swap_account.clone(), + target_public_at_bridged_chain.clone(), + bridged_currency_transfer_signature.clone(), + ), + dispatch_fee_payment: + bp_runtime::messages::DispatchFeePayment::AtTargetChain, + call: bridged_currency_transfer.encode(), + }, + ) + .await?; + let create_swap_call: CallOf = pallet_bridge_token_swap::Call::create_swap { + swap: token_swap.clone(), + swap_creation_params: Box::new(bp_token_swap::TokenSwapCreation { + target_public_at_bridged_chain, + swap_delivery_and_dispatch_fee, + bridged_chain_spec_version, + bridged_currency_transfer: bridged_currency_transfer.encode(), + bridged_currency_transfer_weight, + bridged_currency_transfer_signature, + }), + } + .into(); + + // start tokens swap + let source_genesis_hash = *source_client.genesis_hash(); + let create_swap_signer = source_sign.clone(); + let swap_created_at = wait_until_transaction_is_finalized::( + source_client + .submit_and_watch_signed_extrinsic( + accounts.source_account_at_this_chain.clone(), + move |_, transaction_nonce| { + Bytes( + Source::sign_transaction( + source_genesis_hash, + &create_swap_signer, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new(create_swap_call, transaction_nonce), + ) + .encode(), + ) + }, + ) + .await?, + ) + .await?; + + // read state of swap after it has been created + let token_swap_hash: H256 = token_swap.using_encoded(blake2_256).into(); + let token_swap_storage_key = bp_runtime::storage_map_final_key_identity( + TOKEN_SWAP_PALLET_NAME, + pallet_bridge_token_swap::PENDING_SWAPS_MAP_NAME, + token_swap_hash.as_ref(), + ); + match read_token_swap_state(&source_client, swap_created_at, &token_swap_storage_key) + .await? + { + Some(bp_token_swap::TokenSwapState::Started) => { + log::info!(target: "bridge", "Swap has been successfully started"); + let intermediate_balances = + read_account_balances(&accounts, &source_client, &target_client).await?; + log::info!(target: "bridge", "Intermediate balances: {:?}", intermediate_balances); + }, + Some(token_swap_state) => + return Err(anyhow::format_err!( + "Fresh token swap has unexpected state: {:?}", + token_swap_state, + )), + None => return Err(anyhow::format_err!("Failed to start token swap")), + }; + + // + // Step 2: message is being relayed to the target chain and dispathed there + // + + // wait until message is dispatched at the target chain and dispatch result delivered + // back to source chain + let token_swap_state = wait_until_token_swap_state_is_changed( + &source_client, + &token_swap_storage_key, + bp_token_swap::TokenSwapState::Started, + ) + .await?; + let is_transfer_succeeded = match token_swap_state { + Some(bp_token_swap::TokenSwapState::Started) => { + unreachable!("wait_until_token_swap_state_is_changed only returns if state is not Started; qed",) + }, + None => + return Err(anyhow::format_err!("Fresh token swap has disappeared unexpectedly")), + Some(bp_token_swap::TokenSwapState::Confirmed) => { + log::info!( + target: "bridge", + "Transfer has been successfully dispatched at the target chain. Swap can be claimed", + ); + true + }, + Some(bp_token_swap::TokenSwapState::Failed) => { + log::info!( + target: "bridge", + "Transfer has been dispatched with an error at the target chain. Swap can be canceled", + ); + false + }, + }; + + // by this time: (1) token swap account has been created and (2) if transfer has been + // successfully dispatched, both target chain balances have changed + let intermediate_balances = + read_account_balances(&accounts, &source_client, &target_client).await?; + log::info!(target: "bridge", "Intermediate balances: {:?}", intermediate_balances); + + // transfer has been dispatched, but we may need to wait until block where swap can be + // claimed/canceled + if let bp_token_swap::TokenSwapType::LockClaimUntilBlock( + ref last_available_block_number, + _, + ) = token_swap.swap_type + { + wait_until_swap_unlocked( + &source_client, + last_available_block_number + BlockNumberOf::::one(), + ) + .await?; + } + + // + // Step 3: we may now claim or cancel the swap + // + + if is_transfer_succeeded { + log::info!(target: "bridge", "Claiming the swap swap"); + + // prepare `claim_swap` message that will be sent over the bridge + let claim_swap_call: CallOf = + pallet_bridge_token_swap::Call::claim_swap { swap: token_swap }.into(); + let claim_swap_message = bp_message_dispatch::MessagePayload { + spec_version: SOURCE_SPEC_VERSION, + weight: claim_swap_call.get_dispatch_info().weight, + origin: bp_message_dispatch::CallOrigin::SourceAccount( + accounts.target_account_at_bridged_chain.clone(), + ), + dispatch_fee_payment: bp_runtime::messages::DispatchFeePayment::AtSourceChain, + call: claim_swap_call.encode(), + }; + let claim_swap_delivery_and_dispatch_fee: BalanceOf = + crate::cli::estimate_fee::estimate_message_delivery_and_dispatch_fee( + &target_client, + ESTIMATE_TARGET_TO_SOURCE_MESSAGE_FEE_METHOD, + TARGET_TO_SOURCE_LANE_ID, + claim_swap_message.clone(), + ) + .await?; + let send_message_call: CallOf = + pallet_bridge_messages::Call::send_message { + lane_id: TARGET_TO_SOURCE_LANE_ID, + payload: claim_swap_message, + delivery_and_dispatch_fee: claim_swap_delivery_and_dispatch_fee, + } + .into(); + + // send `claim_swap` message + let target_genesis_hash = *target_client.genesis_hash(); + let _ = wait_until_transaction_is_finalized::( + target_client + .submit_and_watch_signed_extrinsic( + accounts.target_account_at_bridged_chain.clone(), + move |_, transaction_nonce| { + Bytes( + Target::sign_transaction( + target_genesis_hash, + &target_sign, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + send_message_call, + transaction_nonce, + ), + ) + .encode(), + ) + }, + ) + .await?, + ) + .await?; + + // wait until swap state is updated + let token_swap_state = wait_until_token_swap_state_is_changed( + &source_client, + &token_swap_storage_key, + bp_token_swap::TokenSwapState::Confirmed, + ) + .await?; + if token_swap_state != None { + return Err(anyhow::format_err!( + "Confirmed token swap state has been changed to {:?} unexpectedly", + token_swap_state + )) + } + } else { + log::info!(target: "bridge", "Cancelling the swap"); + let cancel_swap_call: CallOf = + pallet_bridge_token_swap::Call::cancel_swap { swap: token_swap.clone() }.into(); + let _ = wait_until_transaction_is_finalized::( + source_client + .submit_and_watch_signed_extrinsic( + accounts.source_account_at_this_chain.clone(), + move |_, transaction_nonce| { + Bytes( + Source::sign_transaction( + source_genesis_hash, + &source_sign, + relay_substrate_client::TransactionEra::immortal(), + UnsignedTransaction::new( + cancel_swap_call, + transaction_nonce, + ), + ) + .encode(), + ) + }, + ) + .await?, + ) + .await?; + } + + // print final balances + let final_balances = + read_account_balances(&accounts, &source_client, &target_client).await?; + log::info!(target: "bridge", "Final account balances: {:?}", final_balances); + + Ok(()) + }) + } + + /// Prepare token swap intention. + async fn prepare_token_swap( + &self, + source_client: &Client, + source_sign: &Source::KeyPair, + target_sign: &Target::KeyPair, + ) -> anyhow::Result< + bp_token_swap::TokenSwap< + BlockNumberOf, + BalanceOf, + AccountIdOf, + BalanceOf, + AccountIdOf, + >, + > + where + AccountIdOf: From<::Public>, + AccountIdOf: From<::Public>, + BalanceOf: From, + BalanceOf: From, + { + // accounts that are directly controlled by participants + let source_account_at_this_chain: AccountIdOf = source_sign.public().into(); + let target_account_at_bridged_chain: AccountIdOf = target_sign.public().into(); + + // balances that we're going to swap + let source_balance_at_this_chain: BalanceOf = self.source_balance.cast().into(); + let target_balance_at_bridged_chain: BalanceOf = self.target_balance.cast().into(); + + // prepare token swap intention + Ok(bp_token_swap::TokenSwap { + swap_type: self.prepare_token_swap_type(source_client).await?, + source_balance_at_this_chain, + source_account_at_this_chain: source_account_at_this_chain.clone(), + target_balance_at_bridged_chain, + target_account_at_bridged_chain: target_account_at_bridged_chain.clone(), + }) + } + + /// Prepare token swap type. + async fn prepare_token_swap_type( + &self, + source_client: &Client, + ) -> anyhow::Result>> { + match self.swap_type { + TokenSwapType::NoLock => + Ok(bp_token_swap::TokenSwapType::TemporaryTargetAccountAtBridgedChain), + TokenSwapType::LockUntilBlock { blocks_before_expire, ref swap_nonce } => { + let blocks_before_expire: BlockNumberOf = blocks_before_expire.into(); + let current_source_block_number = *source_client.best_header().await?.number(); + Ok(bp_token_swap::TokenSwapType::LockClaimUntilBlock( + current_source_block_number + blocks_before_expire, + swap_nonce.unwrap_or_else(|| { + U256::from(random::()).overflowing_mul(U256::from(random::())).0 + }), + )) + }, + } + } +} + +/// Accounts that are participating in the swap. +#[derive(Debug)] +struct TokenSwapAccounts { + source_account_at_this_chain: ThisAccountId, + source_account_at_bridged_chain: BridgedAccountId, + target_account_at_bridged_chain: BridgedAccountId, + target_account_at_this_chain: ThisAccountId, + swap_account: ThisAccountId, +} + +/// Swap accounts balances. +#[derive(Debug)] +struct TokenSwapBalances { + source_account_at_this_chain_balance: Option, + source_account_at_bridged_chain_balance: Option, + target_account_at_bridged_chain_balance: Option, + target_account_at_this_chain_balance: Option, + swap_account_balance: Option, +} + +/// Read swap accounts balances. +async fn read_account_balances( + accounts: &TokenSwapAccounts, AccountIdOf>, + source_client: &Client, + target_client: &Client, +) -> anyhow::Result, BalanceOf>> { + Ok(TokenSwapBalances { + source_account_at_this_chain_balance: read_account_balance( + source_client, + &accounts.source_account_at_this_chain, + ) + .await?, + source_account_at_bridged_chain_balance: read_account_balance( + target_client, + &accounts.source_account_at_bridged_chain, + ) + .await?, + target_account_at_bridged_chain_balance: read_account_balance( + target_client, + &accounts.target_account_at_bridged_chain, + ) + .await?, + target_account_at_this_chain_balance: read_account_balance( + source_client, + &accounts.target_account_at_this_chain, + ) + .await?, + swap_account_balance: read_account_balance(source_client, &accounts.swap_account).await?, + }) +} + +/// Read account balance. +async fn read_account_balance( + client: &Client, + account: &AccountIdOf, +) -> anyhow::Result>> { + match client.free_native_balance(account.clone()).await { + Ok(balance) => Ok(Some(balance)), + Err(SubstrateError::AccountDoesNotExist) => Ok(None), + Err(error) => Err(anyhow::format_err!( + "Failed to read balance of {} account {:?}: {:?}", + C::NAME, + account, + error, + )), + } +} + +/// Wait until transaction is included into finalized block. +/// +/// Returns the hash of the finalized block with transaction. +pub(crate) async fn wait_until_transaction_is_finalized( + subscription: Subscription>, +) -> anyhow::Result> { + loop { + let transaction_status = subscription.next().await?; + match transaction_status { + Some(TransactionStatusOf::::FinalityTimeout(_)) | + Some(TransactionStatusOf::::Usurped(_)) | + Some(TransactionStatusOf::::Dropped) | + Some(TransactionStatusOf::::Invalid) | + None => + return Err(anyhow::format_err!( + "We've been waiting for finalization of {} transaction, but it now has the {:?} status", + C::NAME, + transaction_status, + )), + Some(TransactionStatusOf::::Finalized(block_hash)) => { + log::trace!( + target: "bridge", + "{} transaction has been finalized at block {}", + C::NAME, + block_hash, + ); + return Ok(block_hash) + }, + _ => { + log::trace!( + target: "bridge", + "Received intermediate status of {} transaction: {:?}", + C::NAME, + transaction_status, + ); + }, + } + } +} + +/// Waits until token swap state is changed from `Started` to something else. +async fn wait_until_token_swap_state_is_changed( + client: &Client, + swap_state_storage_key: &StorageKey, + previous_token_swap_state: bp_token_swap::TokenSwapState, +) -> anyhow::Result> { + log::trace!(target: "bridge", "Waiting for token swap state change"); + loop { + async_std::task::sleep(C::AVERAGE_BLOCK_INTERVAL).await; + + let best_block = client.best_finalized_header_number().await?; + let best_block_hash = client.block_hash_by_number(best_block).await?; + log::trace!(target: "bridge", "Inspecting {} block {}/{}", C::NAME, best_block, best_block_hash); + + let token_swap_state = + read_token_swap_state(client, best_block_hash, swap_state_storage_key).await?; + match token_swap_state { + Some(new_token_swap_state) if new_token_swap_state == previous_token_swap_state => {}, + _ => { + log::trace!( + target: "bridge", + "Token swap state has been changed from {:?} to {:?}", + previous_token_swap_state, + token_swap_state, + ); + return Ok(token_swap_state) + }, + } + } +} + +/// Waits until swap can be claimed or canceled. +async fn wait_until_swap_unlocked( + client: &Client, + required_block_number: BlockNumberOf, +) -> anyhow::Result<()> { + log::trace!(target: "bridge", "Waiting for token swap unlock"); + loop { + async_std::task::sleep(C::AVERAGE_BLOCK_INTERVAL).await; + + let best_block = client.best_finalized_header_number().await?; + let best_block_hash = client.block_hash_by_number(best_block).await?; + if best_block >= required_block_number { + return Ok(()) + } + + log::trace!(target: "bridge", "Skipping {} block {}/{}", C::NAME, best_block, best_block_hash); + } +} + +/// Read state of the active token swap. +async fn read_token_swap_state( + client: &Client, + at_block: C::Hash, + swap_state_storage_key: &StorageKey, +) -> anyhow::Result> { + Ok(client.storage_value(swap_state_storage_key.clone(), Some(at_block)).await?) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn swap_tokens_millau_to_rialto_no_lock() { + let swap_tokens = SwapTokens::from_iter(vec![ + "swap-tokens", + "millau-to-rialto", + "--source-host", + "127.0.0.1", + "--source-port", + "9000", + "--source-signer", + "//Alice", + "--source-balance", + "8000000000", + "--target-host", + "127.0.0.1", + "--target-port", + "9001", + "--target-signer", + "//Bob", + "--target-balance", + "9000000000", + "no-lock", + ]); + + assert_eq!( + swap_tokens, + SwapTokens { + bridge: SwapTokensBridge::MillauToRialto, + source: SourceConnectionParams { + source_host: "127.0.0.1".into(), + source_port: 9000, + source_secure: false, + }, + source_sign: SourceSigningParams { + source_signer: Some("//Alice".into()), + source_signer_password: None, + source_signer_file: None, + source_signer_password_file: None, + source_transactions_mortality: None, + }, + target: TargetConnectionParams { + target_host: "127.0.0.1".into(), + target_port: 9001, + target_secure: false, + }, + target_sign: TargetSigningParams { + target_signer: Some("//Bob".into()), + target_signer_password: None, + target_signer_file: None, + target_signer_password_file: None, + target_transactions_mortality: None, + }, + swap_type: TokenSwapType::NoLock, + source_balance: Balance(8000000000), + target_balance: Balance(9000000000), + } + ); + } + + #[test] + fn swap_tokens_millau_to_rialto_lock_until() { + let swap_tokens = SwapTokens::from_iter(vec![ + "swap-tokens", + "millau-to-rialto", + "--source-host", + "127.0.0.1", + "--source-port", + "9000", + "--source-signer", + "//Alice", + "--source-balance", + "8000000000", + "--target-host", + "127.0.0.1", + "--target-port", + "9001", + "--target-signer", + "//Bob", + "--target-balance", + "9000000000", + "lock-until-block", + "--blocks-before-expire", + "1", + ]); + + assert_eq!( + swap_tokens, + SwapTokens { + bridge: SwapTokensBridge::MillauToRialto, + source: SourceConnectionParams { + source_host: "127.0.0.1".into(), + source_port: 9000, + source_secure: false, + }, + source_sign: SourceSigningParams { + source_signer: Some("//Alice".into()), + source_signer_password: None, + source_signer_file: None, + source_signer_password_file: None, + source_transactions_mortality: None, + }, + target: TargetConnectionParams { + target_host: "127.0.0.1".into(), + target_port: 9001, + target_secure: false, + }, + target_sign: TargetSigningParams { + target_signer: Some("//Bob".into()), + target_signer_password: None, + target_signer_file: None, + target_signer_password_file: None, + target_transactions_mortality: None, + }, + swap_type: TokenSwapType::LockUntilBlock { + blocks_before_expire: 1, + swap_nonce: None, + }, + source_balance: Balance(8000000000), + target_balance: Balance(9000000000), + } + ); + } +} diff --git a/relays/bin-substrate/src/main.rs b/relays/bin-substrate/src/main.rs new file mode 100644 index 000000000000..13db6beefa6a --- /dev/null +++ b/relays/bin-substrate/src/main.rs @@ -0,0 +1,31 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate-to-substrate relay entrypoint. + +#![warn(missing_docs)] + +mod chains; +mod cli; + +fn main() { + let command = cli::parse_args(); + let run = command.run(); + let result = async_std::task::block_on(run); + if let Err(error) = result { + log::error!(target: "bridge", "Failed to start relay: {}", error); + } +} diff --git a/relays/client-kusama/Cargo.toml b/relays/client-kusama/Cargo.toml new file mode 100644 index 000000000000..a48d82f641b7 --- /dev/null +++ b/relays/client-kusama/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "relay-kusama-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } +scale-info = { version = "1.0", features = ["derive"] } + +# Bridge dependencies + +bp-header-chain = { path = "../../primitives/header-chain" } +bp-kusama = { path = "../../primitives/chain-kusama" } +bp-message-dispatch = { path = "../../primitives/message-dispatch" } +bp-messages = { path = "../../primitives/messages" } +bp-polkadot = { path = "../../primitives/chain-polkadot" } +bp-polkadot-core = { path = "../../primitives/polkadot-core" } +bp-runtime = { path = "../../primitives/runtime" } +bridge-runtime-common = { path = "../../bin/runtime-common" } +pallet-bridge-dispatch = { path = "../../modules/dispatch" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-kusama/src/lib.rs b/relays/client-kusama/src/lib.rs new file mode 100644 index 000000000000..a93726620ff6 --- /dev/null +++ b/relays/client-kusama/src/lib.rs @@ -0,0 +1,124 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Kusama chain. + +use codec::Encode; +use relay_substrate_client::{ + Chain, ChainBase, ChainWithBalances, TransactionEraOf, TransactionSignScheme, + UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +pub mod runtime; + +/// Kusama header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Kusama chain definition +#[derive(Debug, Clone, Copy)] +pub struct Kusama; + +impl ChainBase for Kusama { + type BlockNumber = bp_kusama::BlockNumber; + type Hash = bp_kusama::Hash; + type Hasher = bp_kusama::Hasher; + type Header = bp_kusama::Header; + + type AccountId = bp_kusama::AccountId; + type Balance = bp_kusama::Balance; + type Index = bp_kusama::Nonce; + type Signature = bp_kusama::Signature; +} + +impl Chain for Kusama { + const NAME: &'static str = "Kusama"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); + const STORAGE_PROOF_OVERHEAD: u32 = bp_kusama::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_kusama::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = bp_kusama::SignedBlock; + type Call = crate::runtime::Call; + type WeightToFee = bp_kusama::WeightToFee; +} + +impl ChainWithBalances for Kusama { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + StorageKey(bp_kusama::account_info_storage_key(account_id)) + } +} + +impl TransactionSignScheme for Kusama { + type Chain = Kusama; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = crate::runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::new( + unsigned.call, + bp_kusama::SignedExtensions::new( + bp_kusama::VERSION, + era, + genesis_hash, + unsigned.nonce, + unsigned.tip, + ), + ) + .expect("SignedExtension never fails."); + + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + bp_kusama::UncheckedExtrinsic::new_signed( + call, + sp_runtime::MultiAddress::Id(signer.into_account()), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| { + *address == bp_kusama::AccountId::from(*signer.public().as_array_ref()).into() + }) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { call: tx.function, nonce: extra.nonce(), tip: extra.tip() }) + } +} + +/// Kusama header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; + +/// Kusama signing params. +pub type SigningParams = sp_core::sr25519::Pair; diff --git a/relays/client-kusama/src/runtime.rs b/relays/client-kusama/src/runtime.rs new file mode 100644 index 000000000000..6d0ab5462d7c --- /dev/null +++ b/relays/client-kusama/src/runtime.rs @@ -0,0 +1,154 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types that are specific to the Kusama runtime. + +use bp_messages::{LaneId, UnrewardedRelayersState}; +use bp_polkadot_core::{AccountAddress, Balance, PolkadotLike}; +use bp_runtime::Chain; +use codec::{Compact, Decode, Encode}; +use frame_support::weights::Weight; +use scale_info::TypeInfo; +use sp_runtime::FixedU128; + +/// Unchecked Kusama extrinsic. +pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; + +/// Polkadot account ownership digest from Kusama. +/// +/// The byte vector returned by this function should be signed with a Polkadot account private key. +/// This way, the owner of `kusama_account_id` on Kusama proves that the Polkadot account private +/// key is also under his control. +pub fn kusama_to_polkadot_account_ownership_digest( + polkadot_call: &Call, + kusama_account_id: AccountId, + polkadot_spec_version: SpecVersion, +) -> Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + polkadot_call, + kusama_account_id, + polkadot_spec_version, + bp_runtime::KUSAMA_CHAIN_ID, + bp_runtime::POLKADOT_CHAIN_ID, + ) +} + +/// Kusama Runtime `Call` enum. +/// +/// The enum represents a subset of possible `Call`s we can send to Kusama chain. +/// Ideally this code would be auto-generated from metadata, because we want to +/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. +/// +/// All entries here (like pretty much in the entire file) must be kept in sync with Kusama +/// `construct_runtime`, so that we maintain SCALE-compatibility. +/// +/// See: [link](https://github.com/paritytech/polkadot/blob/master/runtime/kusama/src/lib.rs) +#[allow(clippy::large_enum_variant)] +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum Call { + /// System pallet. + #[codec(index = 0)] + System(SystemCall), + /// Balances pallet. + #[codec(index = 4)] + Balances(BalancesCall), + /// Polkadot bridge pallet. + #[codec(index = 110)] + BridgePolkadotGrandpa(BridgePolkadotGrandpaCall), + /// Polkadot messages pallet. + #[codec(index = 111)] + BridgePolkadotMessages(BridgePolkadotMessagesCall), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum SystemCall { + #[codec(index = 1)] + remark(Vec), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BalancesCall { + #[codec(index = 0)] + transfer(AccountAddress, Compact), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgePolkadotGrandpaCall { + #[codec(index = 0)] + submit_finality_proof( + Box<::Header>, + bp_header_chain::justification::GrandpaJustification<::Header>, + ), + #[codec(index = 1)] + initialize(bp_header_chain::InitializationData<::Header>), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgePolkadotMessagesCall { + #[codec(index = 2)] + update_pallet_parameter(BridgePolkadotMessagesParameter), + #[codec(index = 3)] + send_message( + LaneId, + bp_message_dispatch::MessagePayload< + bp_kusama::AccountId, + bp_polkadot::AccountId, + bp_polkadot::AccountPublic, + Vec, + >, + bp_kusama::Balance, + ), + #[codec(index = 5)] + receive_messages_proof( + bp_polkadot::AccountId, + bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, + u32, + Weight, + ), + #[codec(index = 6)] + receive_messages_delivery_proof( + bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof< + bp_polkadot::Hash, + >, + UnrewardedRelayersState, + ), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum BridgePolkadotMessagesParameter { + #[codec(index = 0)] + PolkadotToKusamaConversionRate(FixedU128), +} + +impl sp_runtime::traits::Dispatchable for Call { + type Origin = (); + type Config = (); + type Info = (); + type PostInfo = (); + + fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { + unimplemented!("The Call is not expected to be dispatched.") + } +} diff --git a/relays/client-millau/Cargo.toml b/relays/client-millau/Cargo.toml new file mode 100644 index 000000000000..49d9dade154c --- /dev/null +++ b/relays/client-millau/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "relay-millau-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } + +# Supported Chains + +bp-millau = { path = "../../primitives/chain-millau" } +millau-runtime = { path = "../../bin/millau/runtime" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-millau/src/lib.rs b/relays/client-millau/src/lib.rs new file mode 100644 index 000000000000..3f1aba1f3b37 --- /dev/null +++ b/relays/client-millau/src/lib.rs @@ -0,0 +1,140 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Millau-Substrate chain. + +use codec::{Compact, Decode, Encode}; +use relay_substrate_client::{ + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, + TransactionSignScheme, UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +/// Millau header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Millau chain definition. +#[derive(Debug, Clone, Copy)] +pub struct Millau; + +impl ChainBase for Millau { + type BlockNumber = millau_runtime::BlockNumber; + type Hash = millau_runtime::Hash; + type Hasher = millau_runtime::Hashing; + type Header = millau_runtime::Header; + + type AccountId = millau_runtime::AccountId; + type Balance = millau_runtime::Balance; + type Index = millau_runtime::Index; + type Signature = millau_runtime::Signature; +} + +impl Chain for Millau { + const NAME: &'static str = "Millau"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5); + const STORAGE_PROOF_OVERHEAD: u32 = bp_millau::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_millau::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = millau_runtime::SignedBlock; + type Call = millau_runtime::Call; + type WeightToFee = bp_millau::WeightToFee; +} + +impl ChainWithBalances for Millau { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + use frame_support::storage::generator::StorageMap; + StorageKey(frame_system::Account::::storage_map_final_key( + account_id, + )) + } +} + +impl TransactionSignScheme for Millau { + type Chain = Millau; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = millau_runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::from_raw( + unsigned.call, + ( + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(era.frame_era()), + frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(unsigned.tip), + ), + ( + millau_runtime::VERSION.spec_version, + millau_runtime::VERSION.transaction_version, + genesis_hash, + era.signed_payload(genesis_hash), + (), + (), + (), + ), + ); + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + millau_runtime::UncheckedExtrinsic::new_signed( + call, + signer.into_account(), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| { + *address == millau_runtime::Address::from(*signer.public().as_array_ref()) + }) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { + call: tx.function, + nonce: Compact::>::decode(&mut &extra.4.encode()[..]).ok()?.into(), + tip: Compact::>::decode(&mut &extra.6.encode()[..]) + .ok()? + .into(), + }) + } +} + +/// Millau signing params. +pub type SigningParams = sp_core::sr25519::Pair; + +/// Millau header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/relays/client-polkadot/Cargo.toml b/relays/client-polkadot/Cargo.toml new file mode 100644 index 000000000000..ff7748657941 --- /dev/null +++ b/relays/client-polkadot/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "relay-polkadot-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } +scale-info = { version = "1.0", features = ["derive"] } + +# Bridge dependencies + +bp-header-chain = { path = "../../primitives/header-chain" } +bp-kusama = { path = "../../primitives/chain-kusama" } +bp-message-dispatch = { path = "../../primitives/message-dispatch" } +bp-messages = { path = "../../primitives/messages" } +bp-polkadot = { path = "../../primitives/chain-polkadot" } +bp-polkadot-core = { path = "../../primitives/polkadot-core" } +bp-runtime = { path = "../../primitives/runtime" } +bridge-runtime-common = { path = "../../bin/runtime-common" } +pallet-bridge-dispatch = { path = "../../modules/dispatch" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-polkadot/src/lib.rs b/relays/client-polkadot/src/lib.rs new file mode 100644 index 000000000000..e6ceabf583e0 --- /dev/null +++ b/relays/client-polkadot/src/lib.rs @@ -0,0 +1,124 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Polkadot chain. + +use codec::Encode; +use relay_substrate_client::{ + Chain, ChainBase, ChainWithBalances, TransactionEraOf, TransactionSignScheme, + UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +pub mod runtime; + +/// Polkadot header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Polkadot chain definition +#[derive(Debug, Clone, Copy)] +pub struct Polkadot; + +impl ChainBase for Polkadot { + type BlockNumber = bp_polkadot::BlockNumber; + type Hash = bp_polkadot::Hash; + type Hasher = bp_polkadot::Hasher; + type Header = bp_polkadot::Header; + + type AccountId = bp_polkadot::AccountId; + type Balance = bp_polkadot::Balance; + type Index = bp_polkadot::Nonce; + type Signature = bp_polkadot::Signature; +} + +impl Chain for Polkadot { + const NAME: &'static str = "Polkadot"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); + const STORAGE_PROOF_OVERHEAD: u32 = bp_polkadot::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_polkadot::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = bp_polkadot::SignedBlock; + type Call = crate::runtime::Call; + type WeightToFee = bp_polkadot::WeightToFee; +} + +impl ChainWithBalances for Polkadot { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + StorageKey(bp_polkadot::account_info_storage_key(account_id)) + } +} + +impl TransactionSignScheme for Polkadot { + type Chain = Polkadot; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = crate::runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::new( + unsigned.call, + bp_polkadot::SignedExtensions::new( + bp_polkadot::VERSION, + era, + genesis_hash, + unsigned.nonce, + unsigned.tip, + ), + ) + .expect("SignedExtension never fails."); + + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + bp_polkadot::UncheckedExtrinsic::new_signed( + call, + sp_runtime::MultiAddress::Id(signer.into_account()), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| { + *address == bp_polkadot::AccountId::from(*signer.public().as_array_ref()).into() + }) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { call: tx.function, nonce: extra.nonce(), tip: extra.tip() }) + } +} + +/// Polkadot header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; + +/// Polkadot signing params. +pub type SigningParams = sp_core::sr25519::Pair; diff --git a/relays/client-polkadot/src/runtime.rs b/relays/client-polkadot/src/runtime.rs new file mode 100644 index 000000000000..8b125a37843c --- /dev/null +++ b/relays/client-polkadot/src/runtime.rs @@ -0,0 +1,154 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types that are specific to the Polkadot runtime. + +use bp_messages::{LaneId, UnrewardedRelayersState}; +use bp_polkadot_core::{AccountAddress, Balance, PolkadotLike}; +use bp_runtime::Chain; +use codec::{Compact, Decode, Encode}; +use frame_support::weights::Weight; +use scale_info::TypeInfo; +use sp_runtime::FixedU128; + +/// Unchecked Polkadot extrinsic. +pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; + +/// Kusama account ownership digest from Polkadot. +/// +/// The byte vector returned by this function should be signed with a Kusama account private key. +/// This way, the owner of `kusam_account_id` on Polkadot proves that the Kusama account private key +/// is also under his control. +pub fn polkadot_to_kusama_account_ownership_digest( + kusama_call: &Call, + kusam_account_id: AccountId, + kusama_spec_version: SpecVersion, +) -> Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + kusama_call, + kusam_account_id, + kusama_spec_version, + bp_runtime::POLKADOT_CHAIN_ID, + bp_runtime::KUSAMA_CHAIN_ID, + ) +} + +/// Polkadot Runtime `Call` enum. +/// +/// The enum represents a subset of possible `Call`s we can send to Polkadot chain. +/// Ideally this code would be auto-generated from metadata, because we want to +/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. +/// +/// All entries here (like pretty much in the entire file) must be kept in sync with Polkadot +/// `construct_runtime`, so that we maintain SCALE-compatibility. +/// +/// See: [link](https://github.com/paritytech/kusama/blob/master/runtime/kusam/src/lib.rs) +#[allow(clippy::large_enum_variant)] +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum Call { + /// System pallet. + #[codec(index = 0)] + System(SystemCall), + /// Balances pallet. + #[codec(index = 5)] + Balances(BalancesCall), + /// Kusama bridge pallet. + #[codec(index = 110)] + BridgeKusamaGrandpa(BridgeKusamaGrandpaCall), + /// Kusama messages pallet. + #[codec(index = 111)] + BridgeKusamaMessages(BridgeKusamaMessagesCall), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum SystemCall { + #[codec(index = 1)] + remark(Vec), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BalancesCall { + #[codec(index = 0)] + transfer(AccountAddress, Compact), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeKusamaGrandpaCall { + #[codec(index = 0)] + submit_finality_proof( + Box<::Header>, + bp_header_chain::justification::GrandpaJustification<::Header>, + ), + #[codec(index = 1)] + initialize(bp_header_chain::InitializationData<::Header>), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeKusamaMessagesCall { + #[codec(index = 2)] + update_pallet_parameter(BridgeKusamaMessagesParameter), + #[codec(index = 3)] + send_message( + LaneId, + bp_message_dispatch::MessagePayload< + bp_polkadot::AccountId, + bp_kusama::AccountId, + bp_kusama::AccountPublic, + Vec, + >, + bp_polkadot::Balance, + ), + #[codec(index = 5)] + receive_messages_proof( + bp_kusama::AccountId, + bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, + u32, + Weight, + ), + #[codec(index = 6)] + receive_messages_delivery_proof( + bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof< + bp_kusama::Hash, + >, + UnrewardedRelayersState, + ), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum BridgeKusamaMessagesParameter { + #[codec(index = 0)] + KusamaToPolkadotConversionRate(FixedU128), +} + +impl sp_runtime::traits::Dispatchable for Call { + type Origin = (); + type Config = (); + type Info = (); + type PostInfo = (); + + fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { + unimplemented!("The Call is not expected to be dispatched.") + } +} diff --git a/relays/client-rialto-parachain/Cargo.toml b/relays/client-rialto-parachain/Cargo.toml new file mode 100644 index 000000000000..e4518c687765 --- /dev/null +++ b/relays/client-rialto-parachain/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "relay-rialto-parachain-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } + +# Bridge dependencies + +bp-rialto = { path = "../../primitives/chain-rialto" } +rialto-parachain-runtime = { path = "../../bin/rialto-parachain/runtime" } + +# Substrate Dependencies + +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-rialto-parachain/src/lib.rs b/relays/client-rialto-parachain/src/lib.rs new file mode 100644 index 000000000000..ca299a0eeb78 --- /dev/null +++ b/relays/client-rialto-parachain/src/lib.rs @@ -0,0 +1,51 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Rialto-Substrate chain. + +use relay_substrate_client::{Chain, ChainBase}; +use std::time::Duration; + +/// Rialto header id. +pub type HeaderId = + relay_utils::HeaderId; + +/// Rialto parachain definition +#[derive(Debug, Clone, Copy)] +pub struct RialtoParachain; + +impl ChainBase for RialtoParachain { + type BlockNumber = rialto_parachain_runtime::BlockNumber; + type Hash = rialto_parachain_runtime::Hash; + type Hasher = rialto_parachain_runtime::Hashing; + type Header = rialto_parachain_runtime::Header; + + type AccountId = rialto_parachain_runtime::AccountId; + type Balance = rialto_parachain_runtime::Balance; + type Index = rialto_parachain_runtime::Index; + type Signature = rialto_parachain_runtime::Signature; +} + +impl Chain for RialtoParachain { + const NAME: &'static str = "RialtoParachain"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5); + const STORAGE_PROOF_OVERHEAD: u32 = bp_rialto::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_rialto::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = rialto_parachain_runtime::SignedBlock; + type Call = rialto_parachain_runtime::Call; + type WeightToFee = bp_rialto::WeightToFee; +} diff --git a/relays/client-rialto/Cargo.toml b/relays/client-rialto/Cargo.toml new file mode 100644 index 000000000000..3132b26d27fc --- /dev/null +++ b/relays/client-rialto/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "relay-rialto-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } + +# Bridge dependencies + +bp-rialto = { path = "../../primitives/chain-rialto" } +rialto-runtime = { path = "../../bin/rialto/runtime" } + +# Substrate Dependencies + +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-rialto/src/lib.rs b/relays/client-rialto/src/lib.rs new file mode 100644 index 000000000000..42ed8bce3bd9 --- /dev/null +++ b/relays/client-rialto/src/lib.rs @@ -0,0 +1,138 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Rialto-Substrate chain. + +use codec::{Compact, Decode, Encode}; +use relay_substrate_client::{ + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, + TransactionSignScheme, UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +/// Rialto header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Rialto chain definition +#[derive(Debug, Clone, Copy)] +pub struct Rialto; + +impl ChainBase for Rialto { + type BlockNumber = rialto_runtime::BlockNumber; + type Hash = rialto_runtime::Hash; + type Hasher = rialto_runtime::Hashing; + type Header = rialto_runtime::Header; + + type AccountId = rialto_runtime::AccountId; + type Balance = rialto_runtime::Balance; + type Index = rialto_runtime::Index; + type Signature = rialto_runtime::Signature; +} + +impl Chain for Rialto { + const NAME: &'static str = "Rialto"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(5); + const STORAGE_PROOF_OVERHEAD: u32 = bp_rialto::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_rialto::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = rialto_runtime::SignedBlock; + type Call = rialto_runtime::Call; + type WeightToFee = bp_rialto::WeightToFee; +} + +impl ChainWithBalances for Rialto { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + use frame_support::storage::generator::StorageMap; + StorageKey(frame_system::Account::::storage_map_final_key( + account_id, + )) + } +} + +impl TransactionSignScheme for Rialto { + type Chain = Rialto; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = rialto_runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::from_raw( + unsigned.call, + ( + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(era.frame_era()), + frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(unsigned.tip), + ), + ( + rialto_runtime::VERSION.spec_version, + rialto_runtime::VERSION.transaction_version, + genesis_hash, + era.signed_payload(genesis_hash), + (), + (), + (), + ), + ); + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + rialto_runtime::UncheckedExtrinsic::new_signed( + call, + signer.into_account().into(), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| *address == rialto_runtime::Address::Id(signer.public().into())) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { + call: tx.function, + nonce: Compact::>::decode(&mut &extra.4.encode()[..]).ok()?.into(), + tip: Compact::>::decode(&mut &extra.6.encode()[..]) + .ok()? + .into(), + }) + } +} + +/// Rialto signing params. +pub type SigningParams = sp_core::sr25519::Pair; + +/// Rialto header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; diff --git a/relays/client-rococo/Cargo.toml b/relays/client-rococo/Cargo.toml new file mode 100644 index 000000000000..28e97d3bf0ce --- /dev/null +++ b/relays/client-rococo/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "relay-rococo-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } +scale-info = { version = "1.0", features = ["derive"] } + +# Bridge dependencies + +bridge-runtime-common = { path = "../../bin/runtime-common" } +bp-header-chain = { path = "../../primitives/header-chain" } +bp-message-dispatch = { path = "../../primitives/message-dispatch" } +bp-messages = { path = "../../primitives/messages" } +bp-polkadot-core = { path = "../../primitives/polkadot-core" } +bp-rococo = { path = "../../primitives/chain-rococo" } +bp-runtime = { path = "../../primitives/runtime" } +bp-wococo = { path = "../../primitives/chain-wococo" } +pallet-bridge-dispatch = { path = "../../modules/dispatch" } +pallet-bridge-messages = { path = "../../modules/messages" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-rococo/src/lib.rs b/relays/client-rococo/src/lib.rs new file mode 100644 index 000000000000..ad61e3cfd643 --- /dev/null +++ b/relays/client-rococo/src/lib.rs @@ -0,0 +1,124 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Rococo-Substrate chain. + +use codec::Encode; +use relay_substrate_client::{ + Chain, ChainBase, ChainWithBalances, TransactionEraOf, TransactionSignScheme, + UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +pub mod runtime; + +/// Rococo header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Rococo header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; + +/// Rococo chain definition +#[derive(Debug, Clone, Copy)] +pub struct Rococo; + +impl ChainBase for Rococo { + type BlockNumber = bp_rococo::BlockNumber; + type Hash = bp_rococo::Hash; + type Hasher = bp_rococo::Hashing; + type Header = bp_rococo::Header; + + type AccountId = bp_rococo::AccountId; + type Balance = bp_rococo::Balance; + type Index = bp_rococo::Nonce; + type Signature = bp_rococo::Signature; +} + +impl Chain for Rococo { + const NAME: &'static str = "Rococo"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); + const STORAGE_PROOF_OVERHEAD: u32 = bp_rococo::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_rococo::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = bp_rococo::SignedBlock; + type Call = crate::runtime::Call; + type WeightToFee = bp_rococo::WeightToFee; +} + +impl ChainWithBalances for Rococo { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + StorageKey(bp_rococo::account_info_storage_key(account_id)) + } +} + +impl TransactionSignScheme for Rococo { + type Chain = Rococo; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = crate::runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::new( + unsigned.call, + bp_rococo::SignedExtensions::new( + bp_rococo::VERSION, + era, + genesis_hash, + unsigned.nonce, + unsigned.tip, + ), + ) + .expect("SignedExtension never fails."); + + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + bp_rococo::UncheckedExtrinsic::new_signed( + call, + sp_runtime::MultiAddress::Id(signer.into_account()), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| { + *address == bp_rococo::AccountId::from(*signer.public().as_array_ref()).into() + }) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { call: tx.function, nonce: extra.nonce(), tip: extra.tip() }) + } +} + +/// Rococo signing params. +pub type SigningParams = sp_core::sr25519::Pair; diff --git a/relays/client-rococo/src/runtime.rs b/relays/client-rococo/src/runtime.rs new file mode 100644 index 000000000000..effe6e5c60a9 --- /dev/null +++ b/relays/client-rococo/src/runtime.rs @@ -0,0 +1,135 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types that are specific to the Rococo runtime. + +use bp_messages::{LaneId, UnrewardedRelayersState}; +use bp_polkadot_core::PolkadotLike; +use bp_runtime::Chain; +use codec::{Decode, Encode}; +use frame_support::weights::Weight; +use scale_info::TypeInfo; + +/// Unchecked Rococo extrinsic. +pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; + +/// Wococo account ownership digest from Rococo. +/// +/// The byte vector returned by this function should be signed with a Wococo account private key. +/// This way, the owner of `rococo_account_id` on Rococo proves that the Wococo account private key +/// is also under his control. +pub fn rococo_to_wococo_account_ownership_digest( + wococo_call: &Call, + rococo_account_id: AccountId, + wococo_spec_version: SpecVersion, +) -> Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + wococo_call, + rococo_account_id, + wococo_spec_version, + bp_runtime::ROCOCO_CHAIN_ID, + bp_runtime::WOCOCO_CHAIN_ID, + ) +} + +/// Rococo Runtime `Call` enum. +/// +/// The enum represents a subset of possible `Call`s we can send to Rococo chain. +/// Ideally this code would be auto-generated from metadata, because we want to +/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. +/// +/// All entries here (like pretty much in the entire file) must be kept in sync with Rococo +/// `construct_runtime`, so that we maintain SCALE-compatibility. +/// +/// See: [link](https://github.com/paritytech/polkadot/blob/master/runtime/rococo/src/lib.rs) +#[allow(clippy::large_enum_variant)] +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum Call { + /// System pallet. + #[codec(index = 0)] + System(SystemCall), + /// Wococo bridge pallet. + #[codec(index = 41)] + BridgeGrandpaWococo(BridgeGrandpaWococoCall), + /// Wococo messages pallet. + #[codec(index = 44)] + BridgeMessagesWococo(BridgeMessagesWococoCall), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum SystemCall { + #[codec(index = 1)] + remark(Vec), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeGrandpaWococoCall { + #[codec(index = 0)] + submit_finality_proof( + Box<::Header>, + bp_header_chain::justification::GrandpaJustification<::Header>, + ), + #[codec(index = 1)] + initialize(bp_header_chain::InitializationData<::Header>), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeMessagesWococoCall { + #[codec(index = 3)] + send_message( + LaneId, + bp_message_dispatch::MessagePayload< + bp_rococo::AccountId, + bp_wococo::AccountId, + bp_wococo::AccountPublic, + Vec, + >, + bp_rococo::Balance, + ), + #[codec(index = 5)] + receive_messages_proof( + bp_wococo::AccountId, + bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, + u32, + Weight, + ), + #[codec(index = 6)] + receive_messages_delivery_proof( + bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof< + bp_wococo::Hash, + >, + UnrewardedRelayersState, + ), +} + +impl sp_runtime::traits::Dispatchable for Call { + type Origin = (); + type Config = (); + type Info = (); + type PostInfo = (); + + fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { + unimplemented!("The Call is not expected to be dispatched.") + } +} diff --git a/relays/client-substrate/Cargo.toml b/relays/client-substrate/Cargo.toml new file mode 100644 index 000000000000..2eb07fdcde46 --- /dev/null +++ b/relays/client-substrate/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "relay-substrate-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +async-std = { version = "1.6.5", features = ["attributes"] } +async-trait = "0.1.40" +codec = { package = "parity-scale-codec", version = "2.2.0" } +jsonrpsee-proc-macros = "0.3.1" +jsonrpsee-ws-client = "0.3.1" +log = "0.4.11" +num-traits = "0.2" +rand = "0.7" +tokio = "1.8" +thiserror = "1.0.26" + +# Bridge dependencies + +bp-header-chain = { path = "../../primitives/header-chain" } +bp-runtime = { path = "../../primitives/runtime" } +finality-relay = { path = "../finality" } +relay-utils = { path = "../utils" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" } + +#[dev-dependencies] +futures = "0.3.7" diff --git a/relays/client-substrate/src/chain.rs b/relays/client-substrate/src/chain.rs new file mode 100644 index 000000000000..75789ce37f30 --- /dev/null +++ b/relays/client-substrate/src/chain.rs @@ -0,0 +1,148 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use bp_runtime::{Chain as ChainBase, HashOf, TransactionEraOf}; +use codec::{Codec, Encode}; +use frame_support::weights::WeightToFeePolynomial; +use jsonrpsee_ws_client::types::{DeserializeOwned, Serialize}; +use num_traits::Zero; +use sc_transaction_pool_api::TransactionStatus; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{ + generic::SignedBlock, + traits::{Block as BlockT, Dispatchable, Member}, + EncodedJustification, +}; +use std::{fmt::Debug, time::Duration}; + +/// Substrate-based chain from minimal relay-client point of view. +pub trait Chain: ChainBase + Clone { + /// Chain name. + const NAME: &'static str; + /// Average block interval. + /// + /// How often blocks are produced on that chain. It's suggested to set this value + /// to match the block time of the chain. + const AVERAGE_BLOCK_INTERVAL: Duration; + /// Maximal expected storage proof overhead (in bytes). + const STORAGE_PROOF_OVERHEAD: u32; + /// Maximal size (in bytes) of SCALE-encoded account id on this chain. + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32; + + /// Block type. + type SignedBlock: Member + Serialize + DeserializeOwned + BlockWithJustification; + /// The aggregated `Call` type. + type Call: Clone + Dispatchable + Debug; + + /// Type that is used by the chain, to convert from weight to fee. + type WeightToFee: WeightToFeePolynomial; +} + +/// Call type used by the chain. +pub type CallOf = ::Call; +/// Weight-to-Fee type used by the chain. +pub type WeightToFeeOf = ::WeightToFee; +/// Transaction status of the chain. +pub type TransactionStatusOf = TransactionStatus, HashOf>; + +/// Substrate-based chain with `frame_system::Config::AccountData` set to +/// the `pallet_balances::AccountData`. +pub trait ChainWithBalances: Chain { + /// Return runtime storage key for getting `frame_system::AccountInfo` of given account. + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey; +} + +/// SCALE-encoded extrinsic. +pub type EncodedExtrinsic = Vec; + +/// Block with justification. +pub trait BlockWithJustification
{ + /// Return block header. + fn header(&self) -> Header; + /// Return encoded block extrinsics. + fn extrinsics(&self) -> Vec; + /// Return block justification, if known. + fn justification(&self) -> Option<&EncodedJustification>; +} + +/// Transaction before it is signed. +#[derive(Clone, Debug)] +pub struct UnsignedTransaction { + /// Runtime call of this transaction. + pub call: C::Call, + /// Transaction nonce. + pub nonce: C::Index, + /// Tip included into transaction. + pub tip: C::Balance, +} + +impl UnsignedTransaction { + /// Create new unsigned transaction with given call, nonce and zero tip. + pub fn new(call: C::Call, nonce: C::Index) -> Self { + Self { call, nonce, tip: Zero::zero() } + } + + /// Set transaction tip. + pub fn tip(mut self, tip: C::Balance) -> Self { + self.tip = tip; + self + } +} + +/// Substrate-based chain transactions signing scheme. +pub trait TransactionSignScheme { + /// Chain that this scheme is to be used. + type Chain: Chain; + /// Type of key pairs used to sign transactions. + type AccountKeyPair: Pair; + /// Signed transaction. + type SignedTransaction: Clone + Debug + Codec + Send + 'static; + + /// Create transaction for given runtime call, signed by given account. + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction; + + /// Returns true if transaction is signed. + fn is_signed(tx: &Self::SignedTransaction) -> bool; + + /// Returns true if transaction is signed by given signer. + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool; + + /// Parse signed transaction into its unsigned part. + /// + /// Returns `None` if signed transaction has unsupported format. + fn parse_transaction(tx: Self::SignedTransaction) -> Option>; +} + +impl BlockWithJustification for SignedBlock { + fn header(&self) -> Block::Header { + self.block.header().clone() + } + + fn extrinsics(&self) -> Vec { + self.block.extrinsics().iter().map(Encode::encode).collect() + } + + fn justification(&self) -> Option<&EncodedJustification> { + self.justifications + .as_ref() + .and_then(|j| j.get(sp_finality_grandpa::GRANDPA_ENGINE_ID)) + } +} diff --git a/relays/client-substrate/src/client.rs b/relays/client-substrate/src/client.rs new file mode 100644 index 000000000000..1902875c9381 --- /dev/null +++ b/relays/client-substrate/src/client.rs @@ -0,0 +1,585 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate node client. + +use crate::{ + chain::{Chain, ChainWithBalances, TransactionStatusOf}, + rpc::Substrate, + ConnectionParams, Error, HashOf, HeaderIdOf, Result, +}; + +use async_std::sync::{Arc, Mutex}; +use async_trait::async_trait; +use codec::{Decode, Encode}; +use frame_system::AccountInfo; +use futures::{SinkExt, StreamExt}; +use jsonrpsee_ws_client::{ + types::{ + self as jsonrpsee_types, traits::SubscriptionClient, v2::params::JsonRpcParams, + DeserializeOwned, + }, + WsClient as RpcClient, WsClientBuilder as RpcClientBuilder, +}; +use num_traits::{Bounded, Zero}; +use pallet_balances::AccountData; +use pallet_transaction_payment::InclusionFee; +use relay_utils::{relay_loop::RECONNECT_DELAY, HeaderId}; +use sp_core::{ + storage::{StorageData, StorageKey}, + Bytes, Hasher, +}; +use sp_runtime::{ + traits::Header as HeaderT, + transaction_validity::{TransactionSource, TransactionValidity}, +}; +use sp_trie::StorageProof; +use sp_version::RuntimeVersion; +use std::{convert::TryFrom, future::Future}; + +const SUB_API_GRANDPA_AUTHORITIES: &str = "GrandpaApi_grandpa_authorities"; +const SUB_API_TXPOOL_VALIDATE_TRANSACTION: &str = "TaggedTransactionQueue_validate_transaction"; +const MAX_SUBSCRIPTION_CAPACITY: usize = 4096; + +/// Opaque justifications subscription type. +pub struct Subscription(Mutex>>); + +/// Opaque GRANDPA authorities set. +pub type OpaqueGrandpaAuthoritiesSet = Vec; + +/// Substrate client type. +/// +/// Cloning `Client` is a cheap operation. +pub struct Client { + /// Tokio runtime handle. + tokio: Arc, + /// Client connection params. + params: ConnectionParams, + /// Substrate RPC client. + client: Arc, + /// Genesis block hash. + genesis_hash: HashOf, + /// If several tasks are submitting their transactions simultaneously using + /// `submit_signed_extrinsic` method, they may get the same transaction nonce. So one of + /// transactions will be rejected from the pool. This lock is here to prevent situations like + /// that. + submit_signed_extrinsic_lock: Arc>, +} + +#[async_trait] +impl relay_utils::relay_loop::Client for Client { + type Error = Error; + + async fn reconnect(&mut self) -> Result<()> { + let (tokio, client) = Self::build_client(self.params.clone()).await?; + self.tokio = tokio; + self.client = client; + Ok(()) + } +} + +impl Clone for Client { + fn clone(&self) -> Self { + Client { + tokio: self.tokio.clone(), + params: self.params.clone(), + client: self.client.clone(), + genesis_hash: self.genesis_hash, + submit_signed_extrinsic_lock: self.submit_signed_extrinsic_lock.clone(), + } + } +} + +impl std::fmt::Debug for Client { + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + fmt.debug_struct("Client").field("genesis_hash", &self.genesis_hash).finish() + } +} + +impl Client { + /// Returns client that is able to call RPCs on Substrate node over websocket connection. + /// + /// This function will keep connecting to given Substrate node until connection is established + /// and is functional. If attempt fail, it will wait for `RECONNECT_DELAY` and retry again. + pub async fn new(params: ConnectionParams) -> Self { + loop { + match Self::try_connect(params.clone()).await { + Ok(client) => return client, + Err(error) => log::error!( + target: "bridge", + "Failed to connect to {} node: {:?}. Going to retry in {}s", + C::NAME, + error, + RECONNECT_DELAY.as_secs(), + ), + } + + async_std::task::sleep(RECONNECT_DELAY).await; + } + } + + /// Try to connect to Substrate node over websocket. Returns Substrate RPC client if connection + /// has been established or error otherwise. + pub async fn try_connect(params: ConnectionParams) -> Result { + let (tokio, client) = Self::build_client(params.clone()).await?; + + let number: C::BlockNumber = Zero::zero(); + let genesis_hash_client = client.clone(); + let genesis_hash = tokio + .spawn(async move { + Substrate::::chain_get_block_hash(&*genesis_hash_client, number).await + }) + .await??; + + Ok(Self { + tokio, + params, + client, + genesis_hash, + submit_signed_extrinsic_lock: Arc::new(Mutex::new(())), + }) + } + + /// Build client to use in connection. + async fn build_client( + params: ConnectionParams, + ) -> Result<(Arc, Arc)> { + let tokio = tokio::runtime::Runtime::new()?; + let uri = format!( + "{}://{}:{}", + if params.secure { "wss" } else { "ws" }, + params.host, + params.port, + ); + let client = tokio + .spawn(async move { + RpcClientBuilder::default() + .max_notifs_per_subscription(MAX_SUBSCRIPTION_CAPACITY) + .build(&uri) + .await + }) + .await??; + + Ok((Arc::new(tokio), Arc::new(client))) + } +} + +impl Client { + /// Returns true if client is connected to at least one peer and is in synced state. + pub async fn ensure_synced(&self) -> Result<()> { + self.jsonrpsee_execute(|client| async move { + let health = Substrate::::system_health(&*client).await?; + let is_synced = !health.is_syncing && (!health.should_have_peers || health.peers > 0); + if is_synced { + Ok(()) + } else { + Err(Error::ClientNotSynced(health)) + } + }) + .await + } + + /// Return hash of the genesis block. + pub fn genesis_hash(&self) -> &C::Hash { + &self.genesis_hash + } + + /// Return hash of the best finalized block. + pub async fn best_finalized_header_hash(&self) -> Result { + self.jsonrpsee_execute(|client| async move { + Ok(Substrate::::chain_get_finalized_head(&*client).await?) + }) + .await + } + + /// Return number of the best finalized block. + pub async fn best_finalized_header_number(&self) -> Result { + Ok(*self.header_by_hash(self.best_finalized_header_hash().await?).await?.number()) + } + + /// Returns the best Substrate header. + pub async fn best_header(&self) -> Result + where + C::Header: DeserializeOwned, + { + self.jsonrpsee_execute(|client| async move { + Ok(Substrate::::chain_get_header(&*client, None).await?) + }) + .await + } + + /// Get a Substrate block from its hash. + pub async fn get_block(&self, block_hash: Option) -> Result { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::chain_get_block(&*client, block_hash).await?) + }) + .await + } + + /// Get a Substrate header by its hash. + pub async fn header_by_hash(&self, block_hash: C::Hash) -> Result + where + C::Header: DeserializeOwned, + { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::chain_get_header(&*client, block_hash).await?) + }) + .await + } + + /// Get a Substrate block hash by its number. + pub async fn block_hash_by_number(&self, number: C::BlockNumber) -> Result { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::chain_get_block_hash(&*client, number).await?) + }) + .await + } + + /// Get a Substrate header by its number. + pub async fn header_by_number(&self, block_number: C::BlockNumber) -> Result + where + C::Header: DeserializeOwned, + { + let block_hash = Self::block_hash_by_number(self, block_number).await?; + let header_by_hash = Self::header_by_hash(self, block_hash).await?; + Ok(header_by_hash) + } + + /// Return runtime version. + pub async fn runtime_version(&self) -> Result { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::state_runtime_version(&*client).await?) + }) + .await + } + + /// Read value from runtime storage. + pub async fn storage_value( + &self, + storage_key: StorageKey, + block_hash: Option, + ) -> Result> { + self.raw_storage_value(storage_key, block_hash) + .await? + .map(|encoded_value| { + T::decode(&mut &encoded_value.0[..]).map_err(Error::ResponseParseFailed) + }) + .transpose() + } + + /// Read raw value from runtime storage. + pub async fn raw_storage_value( + &self, + storage_key: StorageKey, + block_hash: Option, + ) -> Result> { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::state_get_storage(&*client, storage_key, block_hash).await?) + }) + .await + } + + /// Return native tokens balance of the account. + pub async fn free_native_balance(&self, account: C::AccountId) -> Result + where + C: ChainWithBalances, + { + self.jsonrpsee_execute(move |client| async move { + let storage_key = C::account_info_storage_key(&account); + let encoded_account_data = + Substrate::::state_get_storage(&*client, storage_key, None) + .await? + .ok_or(Error::AccountDoesNotExist)?; + let decoded_account_data = AccountInfo::>::decode( + &mut &encoded_account_data.0[..], + ) + .map_err(Error::ResponseParseFailed)?; + Ok(decoded_account_data.data.free) + }) + .await + } + + /// Get the nonce of the given Substrate account. + /// + /// Note: It's the caller's responsibility to make sure `account` is a valid SS58 address. + pub async fn next_account_index(&self, account: C::AccountId) -> Result { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::system_account_next_index(&*client, account).await?) + }) + .await + } + + /// Submit unsigned extrinsic for inclusion in a block. + /// + /// Note: The given transaction needs to be SCALE encoded beforehand. + pub async fn submit_unsigned_extrinsic(&self, transaction: Bytes) -> Result { + self.jsonrpsee_execute(move |client| async move { + let tx_hash = Substrate::::author_submit_extrinsic(&*client, transaction).await?; + log::trace!(target: "bridge", "Sent transaction to Substrate node: {:?}", tx_hash); + Ok(tx_hash) + }) + .await + } + + /// Submit an extrinsic signed by given account. + /// + /// All calls of this method are synchronized, so there can't be more than one active + /// `submit_signed_extrinsic()` call. This guarantees that no nonces collision may happen + /// if all client instances are clones of the same initial `Client`. + /// + /// Note: The given transaction needs to be SCALE encoded beforehand. + pub async fn submit_signed_extrinsic( + &self, + extrinsic_signer: C::AccountId, + prepare_extrinsic: impl FnOnce(HeaderIdOf, C::Index) -> Bytes + Send + 'static, + ) -> Result { + let _guard = self.submit_signed_extrinsic_lock.lock().await; + let transaction_nonce = self.next_account_index(extrinsic_signer).await?; + let best_header = self.best_header().await?; + let best_header_id = HeaderId(*best_header.number(), best_header.hash()); + self.jsonrpsee_execute(move |client| async move { + let extrinsic = prepare_extrinsic(best_header_id, transaction_nonce); + let tx_hash = Substrate::::author_submit_extrinsic(&*client, extrinsic).await?; + log::trace!(target: "bridge", "Sent transaction to {} node: {:?}", C::NAME, tx_hash); + Ok(tx_hash) + }) + .await + } + + /// Does exactly the same as `submit_signed_extrinsic`, but keeps watching for extrinsic status + /// after submission. + pub async fn submit_and_watch_signed_extrinsic( + &self, + extrinsic_signer: C::AccountId, + prepare_extrinsic: impl FnOnce(HeaderIdOf, C::Index) -> Bytes + Send + 'static, + ) -> Result>> { + let _guard = self.submit_signed_extrinsic_lock.lock().await; + let transaction_nonce = self.next_account_index(extrinsic_signer).await?; + let best_header = self.best_header().await?; + let best_header_id = HeaderId(*best_header.number(), best_header.hash()); + let subscription = self + .jsonrpsee_execute(move |client| async move { + let extrinsic = prepare_extrinsic(best_header_id, transaction_nonce); + let tx_hash = C::Hasher::hash(&extrinsic.0); + let subscription = client + .subscribe( + "author_submitAndWatchExtrinsic", + JsonRpcParams::Array(vec![jsonrpsee_types::to_json_value(extrinsic) + .map_err(|e| Error::RpcError(e.into()))?]), + "author_unwatchExtrinsic", + ) + .await?; + log::trace!(target: "bridge", "Sent transaction to {} node: {:?}", C::NAME, tx_hash); + Ok(subscription) + }) + .await?; + let (sender, receiver) = futures::channel::mpsc::channel(MAX_SUBSCRIPTION_CAPACITY); + self.tokio.spawn(Subscription::background_worker( + C::NAME.into(), + "extrinsic".into(), + subscription, + sender, + )); + Ok(Subscription(Mutex::new(receiver))) + } + + /// Returns pending extrinsics from transaction pool. + pub async fn pending_extrinsics(&self) -> Result> { + self.jsonrpsee_execute(move |client| async move { + Ok(Substrate::::author_pending_extrinsics(&*client).await?) + }) + .await + } + + /// Validate transaction at given block state. + pub async fn validate_transaction( + &self, + at_block: C::Hash, + transaction: SignedTransaction, + ) -> Result { + self.jsonrpsee_execute(move |client| async move { + let call = SUB_API_TXPOOL_VALIDATE_TRANSACTION.to_string(); + let data = Bytes((TransactionSource::External, transaction, at_block).encode()); + + let encoded_response = + Substrate::::state_call(&*client, call, data, Some(at_block)).await?; + let validity = TransactionValidity::decode(&mut &encoded_response.0[..]) + .map_err(Error::ResponseParseFailed)?; + + Ok(validity) + }) + .await + } + + /// Estimate fee that will be spent on given extrinsic. + pub async fn estimate_extrinsic_fee( + &self, + transaction: Bytes, + ) -> Result> { + self.jsonrpsee_execute(move |client| async move { + let fee_details = + Substrate::::payment_query_fee_details(&*client, transaction, None).await?; + let inclusion_fee = fee_details + .inclusion_fee + .map(|inclusion_fee| InclusionFee { + base_fee: C::Balance::try_from(inclusion_fee.base_fee.into_u256()) + .unwrap_or_else(|_| C::Balance::max_value()), + len_fee: C::Balance::try_from(inclusion_fee.len_fee.into_u256()) + .unwrap_or_else(|_| C::Balance::max_value()), + adjusted_weight_fee: C::Balance::try_from( + inclusion_fee.adjusted_weight_fee.into_u256(), + ) + .unwrap_or_else(|_| C::Balance::max_value()), + }) + .unwrap_or_else(|| InclusionFee { + base_fee: Zero::zero(), + len_fee: Zero::zero(), + adjusted_weight_fee: Zero::zero(), + }); + Ok(inclusion_fee) + }) + .await + } + + /// Get the GRANDPA authority set at given block. + pub async fn grandpa_authorities_set( + &self, + block: C::Hash, + ) -> Result { + self.jsonrpsee_execute(move |client| async move { + let call = SUB_API_GRANDPA_AUTHORITIES.to_string(); + let data = Bytes(Vec::new()); + + let encoded_response = + Substrate::::state_call(&*client, call, data, Some(block)).await?; + let authority_list = encoded_response.0; + + Ok(authority_list) + }) + .await + } + + /// Execute runtime call at given block. + pub async fn state_call( + &self, + method: String, + data: Bytes, + at_block: Option, + ) -> Result { + self.jsonrpsee_execute(move |client| async move { + Substrate::::state_call(&*client, method, data, at_block) + .await + .map_err(Into::into) + }) + .await + } + + /// Returns storage proof of given storage keys. + pub async fn prove_storage( + &self, + keys: Vec, + at_block: C::Hash, + ) -> Result { + self.jsonrpsee_execute(move |client| async move { + Substrate::::state_prove_storage(&*client, keys, Some(at_block)) + .await + .map(|proof| StorageProof::new(proof.proof.into_iter().map(|b| b.0).collect())) + .map_err(Into::into) + }) + .await + } + + /// Return new justifications stream. + pub async fn subscribe_justifications(&self) -> Result> { + let subscription = self + .jsonrpsee_execute(move |client| async move { + Ok(client + .subscribe( + "grandpa_subscribeJustifications", + JsonRpcParams::NoParams, + "grandpa_unsubscribeJustifications", + ) + .await?) + }) + .await?; + let (sender, receiver) = futures::channel::mpsc::channel(MAX_SUBSCRIPTION_CAPACITY); + self.tokio.spawn(Subscription::background_worker( + C::NAME.into(), + "justification".into(), + subscription, + sender, + )); + Ok(Subscription(Mutex::new(receiver))) + } + + /// Execute jsonrpsee future in tokio context. + async fn jsonrpsee_execute(&self, make_jsonrpsee_future: MF) -> Result + where + MF: FnOnce(Arc) -> F + Send + 'static, + F: Future> + Send, + T: Send + 'static, + { + let client = self.client.clone(); + self.tokio.spawn(async move { make_jsonrpsee_future(client).await }).await? + } +} + +impl Subscription { + /// Return next item from the subscription. + pub async fn next(&self) -> Result> { + let mut receiver = self.0.lock().await; + let item = receiver.next().await; + Ok(item.unwrap_or(None)) + } + + /// Background worker that is executed in tokio context as `jsonrpsee` requires. + async fn background_worker( + chain_name: String, + item_type: String, + mut subscription: jsonrpsee_types::Subscription, + mut sender: futures::channel::mpsc::Sender>, + ) { + loop { + match subscription.next().await { + Ok(Some(item)) => + if sender.send(Some(item)).await.is_err() { + break + }, + Ok(None) => { + log::trace!( + target: "bridge", + "{} {} subscription stream has returned None. Stream needs to be restarted.", + chain_name, + item_type, + ); + let _ = sender.send(None).await; + break + }, + Err(e) => { + log::trace!( + target: "bridge", + "{} {} subscription stream has returned '{:?}'. Stream needs to be restarted.", + chain_name, + item_type, + e, + ); + let _ = sender.send(None).await; + break + }, + } + } + } +} diff --git a/relays/client-substrate/src/error.rs b/relays/client-substrate/src/error.rs new file mode 100644 index 000000000000..33b9b22a03ef --- /dev/null +++ b/relays/client-substrate/src/error.rs @@ -0,0 +1,83 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate node RPC errors. + +use jsonrpsee_ws_client::types::Error as RpcError; +use relay_utils::MaybeConnectionError; +use sc_rpc_api::system::Health; +use sp_runtime::transaction_validity::TransactionValidityError; +use thiserror::Error; + +/// Result type used by Substrate client. +pub type Result = std::result::Result; + +/// Errors that can occur only when interacting with +/// a Substrate node through RPC. +#[derive(Error, Debug)] +pub enum Error { + /// IO error. + #[error("IO error: {0}")] + Io(#[from] std::io::Error), + /// An error that can occur when making a request to + /// an JSON-RPC server. + #[error("RPC error: {0}")] + RpcError(#[from] RpcError), + /// The response from the server could not be SCALE decoded. + #[error("Response parse failed: {0}")] + ResponseParseFailed(#[from] codec::Error), + /// The Substrate bridge pallet has not yet been initialized. + #[error("The Substrate bridge pallet has not been initialized yet.")] + UninitializedBridgePallet, + /// Account does not exist on the chain. + #[error("Account does not exist on the chain.")] + AccountDoesNotExist, + /// Runtime storage is missing mandatory ":code:" entry. + #[error("Mandatory :code: entry is missing from runtime storage.")] + MissingMandatoryCodeEntry, + /// The client we're connected to is not synced, so we can't rely on its state. + #[error("Substrate client is not synced {0}.")] + ClientNotSynced(Health), + /// An error has happened when we have tried to parse storage proof. + #[error("Error when parsing storage proof: {0:?}.")] + StorageProofError(bp_runtime::StorageProofError), + /// The Substrate transaction is invalid. + #[error("Substrate transaction is invalid: {0:?}")] + TransactionInvalid(#[from] TransactionValidityError), + /// Custom logic error. + #[error("{0}")] + Custom(String), +} + +impl From for Error { + fn from(error: tokio::task::JoinError) -> Self { + Error::Custom(format!("Failed to wait tokio task: {}", error)) + } +} + +impl MaybeConnectionError for Error { + fn is_connection_error(&self) -> bool { + matches!( + *self, + Error::RpcError(RpcError::Transport(_)) + // right now if connection to the ws server is dropped (after it is already established), + // we're getting this error + | Error::RpcError(RpcError::Internal(_)) + | Error::RpcError(RpcError::RestartNeeded(_)) + | Error::ClientNotSynced(_), + ) + } +} diff --git a/bridges/relays/client-substrate/src/finality_source.rs b/relays/client-substrate/src/finality_source.rs similarity index 82% rename from bridges/relays/client-substrate/src/finality_source.rs rename to relays/client-substrate/src/finality_source.rs index 72a11ae99003..98526de178cb 100644 --- a/bridges/relays/client-substrate/src/finality_source.rs +++ b/relays/client-substrate/src/finality_source.rs @@ -16,10 +16,12 @@ //! Default generic implementation of finality source for basic Substrate client. -use crate::chain::{BlockWithJustification, Chain}; -use crate::client::Client; -use crate::error::Error; -use crate::sync_header::SyncHeader; +use crate::{ + chain::{BlockWithJustification, Chain}, + client::Client, + error::Error, + sync_header::SyncHeader, +}; use async_std::sync::{Arc, Mutex}; use async_trait::async_trait; @@ -43,12 +45,11 @@ pub struct FinalitySource { impl FinalitySource { /// Create new headers source using given client. - pub fn new(client: Client, maximal_header_number: Option>) -> Self { - FinalitySource { - client, - maximal_header_number, - _phantom: Default::default(), - } + pub fn new( + client: Client, + maximal_header_number: Option>, + ) -> Self { + FinalitySource { client, maximal_header_number, _phantom: Default::default() } } /// Returns reference to the underlying RPC client. @@ -122,7 +123,9 @@ where let justification = signed_block .justification() - .map(|raw_justification| GrandpaJustification::::decode(&mut raw_justification.as_slice())) + .map(|raw_justification| { + GrandpaJustification::::decode(&mut raw_justification.as_slice()) + }) .transpose() .map_err(Error::ResponseParseFailed)?; @@ -132,27 +135,35 @@ where async fn finality_proofs(&self) -> Result { Ok(unfold( self.client.clone().subscribe_justifications().await?, - move |mut subscription| async move { + move |subscription| async move { loop { - let next_justification = subscription.next().await?; + let log_error = |err| { + log::error!( + target: "bridge", + "Failed to read justification target from the {} justifications stream: {:?}", + P::SOURCE_NAME, + err, + ); + }; + + let next_justification = subscription + .next() + .await + .map_err(|err| log_error(err.to_string())) + .ok()??; + let decoded_justification = - GrandpaJustification::::decode(&mut &next_justification.0[..]); + GrandpaJustification::::decode(&mut &next_justification[..]); let justification = match decoded_justification { Ok(j) => j, Err(err) => { - log::error!( - target: "bridge", - "Failed to decode justification target from the {} justifications stream: {:?}", - P::SOURCE_NAME, - err, - ); - - continue; - } + log_error(format!("decode failed with error {:?}", err)); + continue + }, }; - return Some((justification, subscription)); + return Some((justification, subscription)) } }, ) diff --git a/bridges/relays/client-substrate/src/guard.rs b/relays/client-substrate/src/guard.rs similarity index 86% rename from bridges/relays/client-substrate/src/guard.rs rename to relays/client-substrate/src/guard.rs index c6e191ce078f..a064e3623400 100644 --- a/bridges/relays/client-substrate/src/guard.rs +++ b/relays/client-substrate/src/guard.rs @@ -17,32 +17,41 @@ //! Pallet provides a set of guard functions that are running in background threads //! and are aborting process if some condition fails. -use crate::{Chain, ChainWithBalances, Client}; +use crate::{error::Error, Chain, ChainWithBalances, Client}; use async_trait::async_trait; use num_traits::CheckedSub; use sp_version::RuntimeVersion; use std::{ collections::VecDeque, + fmt::Display, time::{Duration, Instant}, }; /// Guards environment. #[async_trait] pub trait Environment: Send + Sync + 'static { + /// Error type. + type Error: Display + Send + Sync + 'static; + /// Return current runtime version. - async fn runtime_version(&mut self) -> Result; + async fn runtime_version(&mut self) -> Result; /// Return free native balance of the account on the chain. - async fn free_native_balance(&mut self, account: C::AccountId) -> Result; + async fn free_native_balance( + &mut self, + account: C::AccountId, + ) -> Result; /// Return current time. fn now(&self) -> Instant { Instant::now() } + /// Sleep given amount of time. async fn sleep(&mut self, duration: Duration) { async_std::task::sleep(duration).await } + /// Abort current process. Called when guard condition check fails. async fn abort(&mut self) { std::process::abort(); @@ -50,7 +59,10 @@ pub trait Environment: Send + Sync + 'static { } /// Abort when runtime spec version is different from specified. -pub fn abort_on_spec_version_change(mut env: impl Environment, expected_spec_version: u32) { +pub fn abort_on_spec_version_change( + mut env: impl Environment, + expected_spec_version: u32, +) { async_std::task::spawn(async move { loop { let actual_spec_version = env.runtime_version().await; @@ -66,10 +78,10 @@ pub fn abort_on_spec_version_change(mut env: impl Environm ); env.abort().await; - } + }, Err(error) => log::warn!( target: "bridge-guard", - "Failed to read {} runtime version: {:?}. Relay may need to be stopped manually", + "Failed to read {} runtime version: {}. Relay may need to be stopped manually", C::NAME, error, ), @@ -80,8 +92,9 @@ pub fn abort_on_spec_version_change(mut env: impl Environm }); } -/// Abort if, during a 24 hours, free balance of given account is decreased at least by given value. -/// Other components may increase (or decrease) balance of account and it WILL affect logic of the guard. +/// Abort if, during 24 hours, free balance of given account is decreased at least by given value. +/// Other components may increase (or decrease) balance of account and it WILL affect logic of the +/// guard. pub fn abort_when_account_balance_decreased( mut env: impl Environment, account_id: C::AccountId, @@ -127,16 +140,16 @@ pub fn abort_when_account_balance_decreased( env.abort().await; } - } + }, Err(error) => { log::warn!( target: "bridge-guard", - "Failed to read {} account {:?} balance: {:?}. Relay may need to be stopped manually", + "Failed to read {} account {:?} balance: {}. Relay may need to be stopped manually", C::NAME, account_id, error, ); - } + }, }; env.sleep(conditions_check_delay::()).await; @@ -151,20 +164,24 @@ fn conditions_check_delay() -> Duration { #[async_trait] impl Environment for Client { - async fn runtime_version(&mut self) -> Result { - Client::::runtime_version(self).await.map_err(|e| e.to_string()) + type Error = Error; + + async fn runtime_version(&mut self) -> Result { + Client::::runtime_version(self).await } - async fn free_native_balance(&mut self, account: C::AccountId) -> Result { - Client::::free_native_balance(self, account) - .await - .map_err(|e| e.to_string()) + async fn free_native_balance( + &mut self, + account: C::AccountId, + ) -> Result { + Client::::free_native_balance(self, account).await } } #[cfg(test)] mod tests { use super::*; + use frame_support::weights::IdentityFee; use futures::{ channel::mpsc::{unbounded, UnboundedReceiver, UnboundedSender}, future::FutureExt, @@ -180,18 +197,24 @@ mod tests { type Hash = sp_core::H256; type Hasher = sp_runtime::traits::BlakeTwo256; type Header = sp_runtime::generic::Header; + + type AccountId = u32; + type Balance = u32; + type Index = u32; + type Signature = sp_runtime::testing::TestSignature; } impl Chain for TestChain { const NAME: &'static str = "Test"; const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_millis(1); + const STORAGE_PROOF_OVERHEAD: u32 = 0; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = 0; - type AccountId = u32; - type Index = u32; - type SignedBlock = - sp_runtime::generic::SignedBlock>; + type SignedBlock = sp_runtime::generic::SignedBlock< + sp_runtime::generic::Block, + >; type Call = (); - type Balance = u32; + type WeightToFee = IdentityFee; } impl ChainWithBalances for TestChain { @@ -209,11 +232,13 @@ mod tests { #[async_trait] impl Environment for TestEnvironment { - async fn runtime_version(&mut self) -> Result { + type Error = Error; + + async fn runtime_version(&mut self) -> Result { Ok(self.runtime_version_rx.next().await.unwrap_or_default()) } - async fn free_native_balance(&mut self, _account: u32) -> Result { + async fn free_native_balance(&mut self, _account: u32) -> Result { Ok(self.free_native_balance_rx.next().await.unwrap_or_default()) } @@ -249,10 +274,7 @@ mod tests { // client responds with wrong version runtime_version_tx - .send(RuntimeVersion { - spec_version: 42, - ..Default::default() - }) + .send(RuntimeVersion { spec_version: 42, ..Default::default() }) .await .unwrap(); @@ -284,10 +306,7 @@ mod tests { // client responds with the same version runtime_version_tx - .send(RuntimeVersion { - spec_version: 42, - ..Default::default() - }) + .send(RuntimeVersion { spec_version: 42, ..Default::default() }) .await .unwrap(); diff --git a/relays/client-substrate/src/lib.rs b/relays/client-substrate/src/lib.rs new file mode 100644 index 000000000000..51ddf852b9b6 --- /dev/null +++ b/relays/client-substrate/src/lib.rs @@ -0,0 +1,107 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Tools to interact with Substrate node using RPC methods. + +#![warn(missing_docs)] + +mod chain; +mod client; +mod error; +mod rpc; +mod sync_header; + +pub mod finality_source; +pub mod guard; +pub mod metrics; + +use std::time::Duration; + +pub use crate::{ + chain::{ + BlockWithJustification, CallOf, Chain, ChainWithBalances, TransactionSignScheme, + TransactionStatusOf, UnsignedTransaction, WeightToFeeOf, + }, + client::{Client, OpaqueGrandpaAuthoritiesSet, Subscription}, + error::{Error, Result}, + sync_header::SyncHeader, +}; +pub use bp_runtime::{ + AccountIdOf, AccountPublicOf, BalanceOf, BlockNumberOf, Chain as ChainBase, HashOf, HeaderOf, + IndexOf, SignatureOf, TransactionEra, TransactionEraOf, +}; + +/// Header id used by the chain. +pub type HeaderIdOf = relay_utils::HeaderId, BlockNumberOf>; + +/// Substrate-over-websocket connection params. +#[derive(Debug, Clone)] +pub struct ConnectionParams { + /// Websocket server host name. + pub host: String, + /// Websocket server TCP port. + pub port: u16, + /// Use secure websocket connection. + pub secure: bool, +} + +impl Default for ConnectionParams { + fn default() -> Self { + ConnectionParams { host: "localhost".into(), port: 9944, secure: false } + } +} + +/// Returns stall timeout for relay loop. +/// +/// Relay considers himself stalled if he has submitted transaction to the node, but it has not +/// been mined for this period. +pub fn transaction_stall_timeout( + mortality_period: Option, + average_block_interval: Duration, + default_stall_timeout: Duration, +) -> Duration { + // 1 extra block for transaction to reach the pool && 1 for relayer to awake after it is mined + mortality_period + .map(|mortality_period| average_block_interval.saturating_mul(mortality_period + 1 + 1)) + .unwrap_or(default_stall_timeout) +} + +/// Returns stall timeout for relay loop that submit transactions to two chains. +/// +/// Bidirectional relay may have two active transactions. Even if one of them has been spoiled, we +/// can't just restart the loop - the other transaction may still be alive and we'll be submitting +/// duplicate transaction, which may result in funds loss. So we'll be selecting maximal mortality +/// for choosing loop stall timeout. +pub fn bidirectional_transaction_stall_timeout( + left_mortality_period: Option, + right_mortality_period: Option, + left_average_block_interval: Duration, + right_average_block_interval: Duration, + default_stall_timeout: Duration, +) -> Duration { + std::cmp::max( + transaction_stall_timeout( + left_mortality_period, + left_average_block_interval, + default_stall_timeout, + ), + transaction_stall_timeout( + right_mortality_period, + right_average_block_interval, + default_stall_timeout, + ), + ) +} diff --git a/relays/client-substrate/src/metrics/float_storage_value.rs b/relays/client-substrate/src/metrics/float_storage_value.rs new file mode 100644 index 000000000000..7dccf82b6f8e --- /dev/null +++ b/relays/client-substrate/src/metrics/float_storage_value.rs @@ -0,0 +1,101 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{chain::Chain, client::Client}; + +use async_std::sync::{Arc, RwLock}; +use async_trait::async_trait; +use codec::Decode; +use relay_utils::metrics::{ + metric_name, register, F64SharedRef, Gauge, Metric, PrometheusError, Registry, + StandaloneMetric, F64, +}; +use sp_core::storage::StorageKey; +use sp_runtime::{traits::UniqueSaturatedInto, FixedPointNumber}; +use std::time::Duration; + +/// Storage value update interval (in blocks). +const UPDATE_INTERVAL_IN_BLOCKS: u32 = 5; + +/// Metric that represents fixed-point runtime storage value as float gauge. +#[derive(Clone, Debug)] +pub struct FloatStorageValueMetric { + client: Client, + storage_key: StorageKey, + maybe_default_value: Option, + metric: Gauge, + shared_value_ref: F64SharedRef, +} + +impl FloatStorageValueMetric { + /// Create new metric. + pub fn new( + client: Client, + storage_key: StorageKey, + maybe_default_value: Option, + name: String, + help: String, + ) -> Result { + let shared_value_ref = Arc::new(RwLock::new(None)); + Ok(FloatStorageValueMetric { + client, + storage_key, + maybe_default_value, + metric: Gauge::new(metric_name(None, &name), help)?, + shared_value_ref, + }) + } + + /// Get shared reference to metric value. + pub fn shared_value_ref(&self) -> F64SharedRef { + self.shared_value_ref.clone() + } +} + +impl Metric for FloatStorageValueMetric +where + T: 'static + Decode + Send + Sync + FixedPointNumber, +{ + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.metric.clone(), registry).map(drop) + } +} + +#[async_trait] +impl StandaloneMetric for FloatStorageValueMetric +where + T: 'static + Decode + Send + Sync + FixedPointNumber, +{ + fn update_interval(&self) -> Duration { + C::AVERAGE_BLOCK_INTERVAL * UPDATE_INTERVAL_IN_BLOCKS + } + + async fn update(&self) { + let value = self + .client + .storage_value::(self.storage_key.clone(), None) + .await + .map(|maybe_storage_value| { + maybe_storage_value.or(self.maybe_default_value).map(|storage_value| { + storage_value.into_inner().unique_saturated_into() as f64 / + T::DIV.unique_saturated_into() as f64 + }) + }) + .map_err(drop); + relay_utils::metrics::set_gauge_value(&self.metric, value); + *self.shared_value_ref.write().await = value.ok().and_then(|x| x); + } +} diff --git a/bridges/relays/client-substrate/src/metrics/mod.rs b/relays/client-substrate/src/metrics/mod.rs similarity index 100% rename from bridges/relays/client-substrate/src/metrics/mod.rs rename to relays/client-substrate/src/metrics/mod.rs diff --git a/relays/client-substrate/src/metrics/storage_proof_overhead.rs b/relays/client-substrate/src/metrics/storage_proof_overhead.rs new file mode 100644 index 000000000000..f1c770ed228e --- /dev/null +++ b/relays/client-substrate/src/metrics/storage_proof_overhead.rs @@ -0,0 +1,101 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{chain::Chain, client::Client, error::Error}; + +use async_trait::async_trait; +use relay_utils::metrics::{ + metric_name, register, Gauge, Metric, PrometheusError, Registry, StandaloneMetric, U64, +}; +use sp_core::storage::StorageKey; +use sp_runtime::traits::Header as HeaderT; +use sp_storage::well_known_keys::CODE; +use std::time::Duration; + +/// Storage proof overhead update interval (in blocks). +const UPDATE_INTERVAL_IN_BLOCKS: u32 = 100; + +/// Metric that represents extra size of storage proof as unsigned integer gauge. +/// +/// There's one thing to keep in mind when using this metric: the overhead may be slightly +/// different for other values, but this metric gives a good estimation. +#[derive(Debug)] +pub struct StorageProofOverheadMetric { + client: Client, + metric: Gauge, +} + +impl Clone for StorageProofOverheadMetric { + fn clone(&self) -> Self { + StorageProofOverheadMetric { client: self.client.clone(), metric: self.metric.clone() } + } +} + +impl StorageProofOverheadMetric { + /// Create new metric instance with given name and help. + pub fn new(client: Client, name: String, help: String) -> Result { + Ok(StorageProofOverheadMetric { + client, + metric: Gauge::new(metric_name(None, &name), help)?, + }) + } + + /// Returns approximate storage proof size overhead. + async fn compute_storage_proof_overhead(&self) -> Result { + let best_header_hash = self.client.best_finalized_header_hash().await?; + let best_header = self.client.header_by_hash(best_header_hash).await?; + + let storage_proof = self + .client + .prove_storage(vec![StorageKey(CODE.to_vec())], best_header_hash) + .await?; + let storage_proof_size: usize = storage_proof.clone().iter_nodes().map(|n| n.len()).sum(); + + let storage_value_reader = bp_runtime::StorageProofChecker::::new( + *best_header.state_root(), + storage_proof, + ) + .map_err(Error::StorageProofError)?; + let maybe_encoded_storage_value = + storage_value_reader.read_value(CODE).map_err(Error::StorageProofError)?; + let encoded_storage_value_size = + maybe_encoded_storage_value.ok_or(Error::MissingMandatoryCodeEntry)?.len(); + + Ok(storage_proof_size - encoded_storage_value_size) + } +} + +impl Metric for StorageProofOverheadMetric { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.metric.clone(), registry).map(drop) + } +} + +#[async_trait] +impl StandaloneMetric for StorageProofOverheadMetric { + fn update_interval(&self) -> Duration { + C::AVERAGE_BLOCK_INTERVAL * UPDATE_INTERVAL_IN_BLOCKS + } + + async fn update(&self) { + relay_utils::metrics::set_gauge_value( + &self.metric, + self.compute_storage_proof_overhead() + .await + .map(|overhead| Some(overhead as u64)), + ); + } +} diff --git a/relays/client-substrate/src/rpc.rs b/relays/client-substrate/src/rpc.rs new file mode 100644 index 000000000000..efd45ebe43f3 --- /dev/null +++ b/relays/client-substrate/src/rpc.rs @@ -0,0 +1,59 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! The most generic Substrate node RPC interface. + +use crate::chain::Chain; + +use pallet_transaction_payment_rpc_runtime_api::FeeDetails; +use sc_rpc_api::{state::ReadProof, system::Health}; +use sp_core::{ + storage::{StorageData, StorageKey}, + Bytes, +}; +use sp_rpc::number::NumberOrHex; +use sp_version::RuntimeVersion; + +jsonrpsee_proc_macros::rpc_client_api! { + pub(crate) Substrate { + #[rpc(method = "system_health", positional_params)] + fn system_health() -> Health; + #[rpc(method = "chain_getHeader", positional_params)] + fn chain_get_header(block_hash: Option) -> C::Header; + #[rpc(method = "chain_getFinalizedHead", positional_params)] + fn chain_get_finalized_head() -> C::Hash; + #[rpc(method = "chain_getBlock", positional_params)] + fn chain_get_block(block_hash: Option) -> C::SignedBlock; + #[rpc(method = "chain_getBlockHash", positional_params)] + fn chain_get_block_hash(block_number: Option) -> C::Hash; + #[rpc(method = "system_accountNextIndex", positional_params)] + fn system_account_next_index(account_id: C::AccountId) -> C::Index; + #[rpc(method = "author_submitExtrinsic", positional_params)] + fn author_submit_extrinsic(extrinsic: Bytes) -> C::Hash; + #[rpc(method = "author_pendingExtrinsics", positional_params)] + fn author_pending_extrinsics() -> Vec; + #[rpc(method = "state_call", positional_params)] + fn state_call(method: String, data: Bytes, at_block: Option) -> Bytes; + #[rpc(method = "state_getStorage", positional_params)] + fn state_get_storage(key: StorageKey, at_block: Option) -> Option; + #[rpc(method = "state_getReadProof", positional_params)] + fn state_prove_storage(keys: Vec, hash: Option) -> ReadProof; + #[rpc(method = "state_getRuntimeVersion", positional_params)] + fn state_runtime_version() -> RuntimeVersion; + #[rpc(method = "payment_queryFeeDetails", positional_params)] + fn payment_query_fee_details(extrinsic: Bytes, at_block: Option) -> FeeDetails; + } +} diff --git a/relays/client-substrate/src/sync_header.rs b/relays/client-substrate/src/sync_header.rs new file mode 100644 index 000000000000..ed3de6289ce0 --- /dev/null +++ b/relays/client-substrate/src/sync_header.rs @@ -0,0 +1,55 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use bp_header_chain::find_grandpa_authorities_scheduled_change; +use finality_relay::SourceHeader as FinalitySourceHeader; +use sp_runtime::traits::Header as HeaderT; + +/// Generic wrapper for `sp_runtime::traits::Header` based headers, that +/// implements `finality_relay::SourceHeader` and may be used in headers sync directly. +#[derive(Clone, Debug, PartialEq)] +pub struct SyncHeader
(Header); + +impl
SyncHeader
{ + /// Extracts wrapped header from self. + pub fn into_inner(self) -> Header { + self.0 + } +} + +impl
std::ops::Deref for SyncHeader
{ + type Target = Header; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl
From
for SyncHeader
{ + fn from(header: Header) -> Self { + Self(header) + } +} + +impl FinalitySourceHeader for SyncHeader
{ + fn number(&self) -> Header::Number { + *self.0.number() + } + + fn is_mandatory(&self) -> bool { + find_grandpa_authorities_scheduled_change(&self.0).is_some() + } +} diff --git a/relays/client-westend/Cargo.toml b/relays/client-westend/Cargo.toml new file mode 100644 index 000000000000..24b05c4f4836 --- /dev/null +++ b/relays/client-westend/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "relay-westend-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } + +# Bridge dependencies + +bp-westend = { path = "../../primitives/chain-westend" } + +# Substrate Dependencies + +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-westend/src/lib.rs b/relays/client-westend/src/lib.rs new file mode 100644 index 000000000000..c719d6ea5536 --- /dev/null +++ b/relays/client-westend/src/lib.rs @@ -0,0 +1,60 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Westend chain. + +use relay_substrate_client::{Chain, ChainBase, ChainWithBalances}; +use sp_core::storage::StorageKey; +use std::time::Duration; + +/// Westend header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Westend header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; + +/// Westend chain definition +#[derive(Debug, Clone, Copy)] +pub struct Westend; + +impl ChainBase for Westend { + type BlockNumber = bp_westend::BlockNumber; + type Hash = bp_westend::Hash; + type Hasher = bp_westend::Hasher; + type Header = bp_westend::Header; + + type AccountId = bp_westend::AccountId; + type Balance = bp_westend::Balance; + type Index = bp_westend::Nonce; + type Signature = bp_westend::Signature; +} + +impl Chain for Westend { + const NAME: &'static str = "Westend"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); + const STORAGE_PROOF_OVERHEAD: u32 = bp_westend::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_westend::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = bp_westend::SignedBlock; + type Call = bp_westend::Call; + type WeightToFee = bp_westend::WeightToFee; +} + +impl ChainWithBalances for Westend { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + StorageKey(bp_westend::account_info_storage_key(account_id)) + } +} diff --git a/relays/client-wococo/Cargo.toml b/relays/client-wococo/Cargo.toml new file mode 100644 index 000000000000..ea46c3c898bb --- /dev/null +++ b/relays/client-wococo/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "relay-wococo-client" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.2.0" } +relay-substrate-client = { path = "../client-substrate" } +relay-utils = { path = "../utils" } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + +# Bridge dependencies +bridge-runtime-common = { path = "../../bin/runtime-common" } +bp-header-chain = { path = "../../primitives/header-chain" } +bp-message-dispatch = { path = "../../primitives/message-dispatch" } +bp-messages = { path = "../../primitives/messages" } +bp-polkadot-core = { path = "../../primitives/polkadot-core" } +bp-rococo = { path = "../../primitives/chain-rococo" } +bp-runtime = { path = "../../primitives/runtime" } +bp-wococo = { path = "../../primitives/chain-wococo" } +pallet-bridge-dispatch = { path = "../../modules/dispatch" } +pallet-bridge-messages = { path = "../../modules/messages" } + +# Substrate Dependencies +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/client-wococo/src/lib.rs b/relays/client-wococo/src/lib.rs new file mode 100644 index 000000000000..d61915ec1237 --- /dev/null +++ b/relays/client-wococo/src/lib.rs @@ -0,0 +1,124 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types used to connect to the Wococo-Substrate chain. + +use codec::Encode; +use relay_substrate_client::{ + Chain, ChainBase, ChainWithBalances, TransactionEraOf, TransactionSignScheme, + UnsignedTransaction, +}; +use sp_core::{storage::StorageKey, Pair}; +use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; +use std::time::Duration; + +pub mod runtime; + +/// Wococo header id. +pub type HeaderId = relay_utils::HeaderId; + +/// Wococo header type used in headers sync. +pub type SyncHeader = relay_substrate_client::SyncHeader; + +/// Wococo chain definition +#[derive(Debug, Clone, Copy)] +pub struct Wococo; + +impl ChainBase for Wococo { + type BlockNumber = bp_wococo::BlockNumber; + type Hash = bp_wococo::Hash; + type Hasher = bp_wococo::Hashing; + type Header = bp_wococo::Header; + + type AccountId = bp_wococo::AccountId; + type Balance = bp_wococo::Balance; + type Index = bp_wococo::Nonce; + type Signature = bp_wococo::Signature; +} + +impl Chain for Wococo { + const NAME: &'static str = "Wococo"; + const AVERAGE_BLOCK_INTERVAL: Duration = Duration::from_secs(6); + const STORAGE_PROOF_OVERHEAD: u32 = bp_wococo::EXTRA_STORAGE_PROOF_SIZE; + const MAXIMAL_ENCODED_ACCOUNT_ID_SIZE: u32 = bp_wococo::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE; + + type SignedBlock = bp_wococo::SignedBlock; + type Call = crate::runtime::Call; + type WeightToFee = bp_wococo::WeightToFee; +} + +impl ChainWithBalances for Wococo { + fn account_info_storage_key(account_id: &Self::AccountId) -> StorageKey { + StorageKey(bp_wococo::account_info_storage_key(account_id)) + } +} + +impl TransactionSignScheme for Wococo { + type Chain = Wococo; + type AccountKeyPair = sp_core::sr25519::Pair; + type SignedTransaction = crate::runtime::UncheckedExtrinsic; + + fn sign_transaction( + genesis_hash: ::Hash, + signer: &Self::AccountKeyPair, + era: TransactionEraOf, + unsigned: UnsignedTransaction, + ) -> Self::SignedTransaction { + let raw_payload = SignedPayload::new( + unsigned.call, + bp_wococo::SignedExtensions::new( + bp_wococo::VERSION, + era, + genesis_hash, + unsigned.nonce, + unsigned.tip, + ), + ) + .expect("SignedExtension never fails."); + + let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); + let signer: sp_runtime::MultiSigner = signer.public().into(); + let (call, extra, _) = raw_payload.deconstruct(); + + bp_wococo::UncheckedExtrinsic::new_signed( + call, + sp_runtime::MultiAddress::Id(signer.into_account()), + signature.into(), + extra, + ) + } + + fn is_signed(tx: &Self::SignedTransaction) -> bool { + tx.signature.is_some() + } + + fn is_signed_by(signer: &Self::AccountKeyPair, tx: &Self::SignedTransaction) -> bool { + tx.signature + .as_ref() + .map(|(address, _, _)| { + *address == bp_wococo::AccountId::from(*signer.public().as_array_ref()).into() + }) + .unwrap_or(false) + } + + fn parse_transaction(tx: Self::SignedTransaction) -> Option> { + let extra = &tx.signature.as_ref()?.2; + Some(UnsignedTransaction { call: tx.function, nonce: extra.nonce(), tip: extra.tip() }) + } +} + +/// Wococo signing params. +pub type SigningParams = sp_core::sr25519::Pair; diff --git a/relays/client-wococo/src/runtime.rs b/relays/client-wococo/src/runtime.rs new file mode 100644 index 000000000000..91d32d1aa76f --- /dev/null +++ b/relays/client-wococo/src/runtime.rs @@ -0,0 +1,135 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Types that are specific to the Wococo runtime. + +use bp_messages::{LaneId, UnrewardedRelayersState}; +use bp_polkadot_core::PolkadotLike; +use bp_runtime::Chain; +use codec::{Decode, Encode}; +use frame_support::weights::Weight; +use scale_info::TypeInfo; + +/// Unchecked Wococo extrinsic. +pub type UncheckedExtrinsic = bp_polkadot_core::UncheckedExtrinsic; + +/// Rococo account ownership digest from Wococo. +/// +/// The byte vector returned by this function should be signed with a Rococo account private key. +/// This way, the owner of `wococo_account_id` on Rococo proves that the Rococo account private key +/// is also under his control. +pub fn wococo_to_rococo_account_ownership_digest( + rococo_call: &Call, + wococo_account_id: AccountId, + rococo_spec_version: SpecVersion, +) -> Vec +where + Call: codec::Encode, + AccountId: codec::Encode, + SpecVersion: codec::Encode, +{ + pallet_bridge_dispatch::account_ownership_digest( + rococo_call, + wococo_account_id, + rococo_spec_version, + bp_runtime::WOCOCO_CHAIN_ID, + bp_runtime::ROCOCO_CHAIN_ID, + ) +} + +/// Wococo Runtime `Call` enum. +/// +/// The enum represents a subset of possible `Call`s we can send to Rococo chain. +/// Ideally this code would be auto-generated from metadata, because we want to +/// avoid depending directly on the ENTIRE runtime just to get the encoding of `Dispatchable`s. +/// +/// All entries here (like pretty much in the entire file) must be kept in sync with Rococo +/// `construct_runtime`, so that we maintain SCALE-compatibility. +/// +/// See: [link](https://github.com/paritytech/polkadot/blob/master/runtime/rococo/src/lib.rs) +#[allow(clippy::large_enum_variant)] +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +pub enum Call { + /// System pallet. + #[codec(index = 0)] + System(SystemCall), + /// Rococo bridge pallet. + #[codec(index = 40)] + BridgeGrandpaRococo(BridgeGrandpaRococoCall), + /// Rococo messages pallet. + #[codec(index = 43)] + BridgeMessagesRococo(BridgeMessagesRococoCall), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum SystemCall { + #[codec(index = 1)] + remark(Vec), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeGrandpaRococoCall { + #[codec(index = 0)] + submit_finality_proof( + Box<::Header>, + bp_header_chain::justification::GrandpaJustification<::Header>, + ), + #[codec(index = 1)] + initialize(bp_header_chain::InitializationData<::Header>), +} + +#[derive(Encode, Decode, Debug, PartialEq, Eq, Clone, TypeInfo)] +#[allow(non_camel_case_types)] +pub enum BridgeMessagesRococoCall { + #[codec(index = 3)] + send_message( + LaneId, + bp_message_dispatch::MessagePayload< + bp_rococo::AccountId, + bp_wococo::AccountId, + bp_wococo::AccountPublic, + Vec, + >, + bp_rococo::Balance, + ), + #[codec(index = 5)] + receive_messages_proof( + bp_rococo::AccountId, + bridge_runtime_common::messages::target::FromBridgedChainMessagesProof, + u32, + Weight, + ), + #[codec(index = 6)] + receive_messages_delivery_proof( + bridge_runtime_common::messages::source::FromBridgedChainMessagesDeliveryProof< + bp_rococo::Hash, + >, + UnrewardedRelayersState, + ), +} + +impl sp_runtime::traits::Dispatchable for Call { + type Origin = (); + type Config = (); + type Info = (); + type PostInfo = (); + + fn dispatch(self, _origin: Self::Origin) -> sp_runtime::DispatchResultWithInfo { + unimplemented!("The Call is not expected to be dispatched.") + } +} diff --git a/relays/finality/Cargo.toml b/relays/finality/Cargo.toml new file mode 100644 index 000000000000..645ac10775ba --- /dev/null +++ b/relays/finality/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "finality-relay" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" +description = "Finality proofs relay" + +[dependencies] +async-std = "1.6.5" +async-trait = "0.1.40" +backoff = "0.2" +bp-header-chain = { path = "../../primitives/header-chain" } +futures = "0.3.5" +log = "0.4.11" +num-traits = "0.2" +relay-utils = { path = "../utils" } + +[dev-dependencies] +parking_lot = "0.11.0" diff --git a/bridges/relays/finality/src/finality_loop.rs b/relays/finality/src/finality_loop.rs similarity index 79% rename from bridges/relays/finality/src/finality_loop.rs rename to relays/finality/src/finality_loop.rs index 3ea729d123e7..320b44d310f0 100644 --- a/bridges/relays/finality/src/finality_loop.rs +++ b/relays/finality/src/finality_loop.rs @@ -19,17 +19,17 @@ //! is the mandatory headers, which we always submit to the target node. For such headers, we //! assume that the persistent proof either exists, or will eventually become available. -use crate::{FinalityProof, FinalitySyncPipeline, SourceHeader}; +use crate::{ + sync_loop_metrics::SyncLoopMetrics, FinalityProof, FinalitySyncPipeline, SourceHeader, +}; use async_trait::async_trait; use backoff::backoff::Backoff; use futures::{select, Future, FutureExt, Stream, StreamExt}; -use headers_relay::sync_loop_metrics::SyncLoopMetrics; use num_traits::{One, Saturating}; use relay_utils::{ - metrics::{GlobalMetrics, MetricsParams}, - relay_loop::Client as RelayClient, - retry_backoff, FailedClient, MaybeConnectionError, + metrics::MetricsParams, relay_loop::Client as RelayClient, retry_backoff, FailedClient, + MaybeConnectionError, }; use std::{ pin::Pin, @@ -43,18 +43,19 @@ pub struct FinalitySyncParams { /// `min(source_block_time, target_block_time)`. /// /// This parameter may be used to limit transactions rate. Increase the value && you'll get - /// infrequent updates => sparse headers => potential slow down of bridge applications, but pallet storage - /// won't be super large. Decrease the value to near `source_block_time` and you'll get - /// transaction for (almost) every block of the source chain => all source headers will be known - /// to the target chain => bridge applications will run faster, but pallet storage may explode - /// (but if pruning is there, then it's fine). + /// infrequent updates => sparse headers => potential slow down of bridge applications, but + /// pallet storage won't be super large. Decrease the value to near `source_block_time` and + /// you'll get transaction for (almost) every block of the source chain => all source headers + /// will be known to the target chain => bridge applications will run faster, but pallet + /// storage may explode (but if pruning is there, then it's fine). pub tick: Duration, - /// Number of finality proofs to keep in internal buffer between loop wakeups. + /// Number of finality proofs to keep in internal buffer between loop iterations. /// - /// While in "major syncing" state, we still read finality proofs from the stream. They're stored - /// in the internal buffer between loop wakeups. When we're close to the tip of the chain, we may - /// meet finality delays if headers are not finalized frequently. So instead of waiting for next - /// finality proof to appear in the stream, we may use existing proof from that buffer. + /// While in "major syncing" state, we still read finality proofs from the stream. They're + /// stored in the internal buffer between loop iterations. When we're close to the tip of the + /// chain, we may meet finality delays if headers are not finalized frequently. So instead of + /// waiting for next finality proof to appear in the stream, we may use existing proof from + /// that buffer. pub recent_finality_proofs_limit: usize, /// Timeout before we treat our transactions as lost and restart the whole sync process. pub stall_timeout: Duration, @@ -89,10 +90,15 @@ pub trait TargetClient: RelayClient { async fn best_finalized_source_block_number(&self) -> Result; /// Submit header finality proof. - async fn submit_finality_proof(&self, header: P::Header, proof: P::FinalityProof) -> Result<(), Self::Error>; + async fn submit_finality_proof( + &self, + header: P::Header, + proof: P::FinalityProof, + ) -> Result<(), Self::Error>; } -/// Return prefix that will be used by default to expose Prometheus metrics of the finality proofs sync loop. +/// Return prefix that will be used by default to expose Prometheus metrics of the finality proofs +/// sync loop. pub fn metrics_prefix() -> String { format!("{}_to_{}_Sync", P::SOURCE_NAME, P::TARGET_NAME) } @@ -104,12 +110,11 @@ pub async fn run( sync_params: FinalitySyncParams, metrics_params: MetricsParams, exit_signal: impl Future + 'static + Send, -) -> Result<(), String> { +) -> Result<(), relay_utils::Error> { let exit_signal = exit_signal.shared(); relay_utils::relay_loop(source_client, target_client) - .with_metrics(Some(metrics_prefix::

()), metrics_params) - .loop_metric(|registry, prefix| SyncLoopMetrics::new(registry, prefix))? - .standalone_metric(|registry, prefix| GlobalMetrics::new(registry, prefix))? + .with_metrics(metrics_params) + .loop_metric(SyncLoopMetrics::new(Some(&metrics_prefix::

()))?)? .expose() .await? .run(metrics_prefix::

(), move |source_client, target_client, metrics| { @@ -127,15 +132,11 @@ pub async fn run( /// Unjustified headers container. Ordered by header number. pub(crate) type UnjustifiedHeaders = Vec; /// Finality proofs container. Ordered by target header number. -pub(crate) type FinalityProofs

= Vec<( -

::Number, -

::FinalityProof, -)>; +pub(crate) type FinalityProofs

= + Vec<(

::Number,

::FinalityProof)>; /// Reference to finality proofs container. -pub(crate) type FinalityProofsRef<'a, P> = &'a [( -

::Number, -

::FinalityProof, -)]; +pub(crate) type FinalityProofsRef<'a, P> = + &'a [(

::Number,

::FinalityProof)]; /// Error that may happen inside finality synchronization loop. #[derive(Debug)] @@ -186,10 +187,7 @@ pub(crate) struct RestartableFinalityProofsStream { #[cfg(test)] impl From for RestartableFinalityProofsStream { fn from(stream: S) -> Self { - RestartableFinalityProofsStream { - needs_restart: false, - stream: Box::pin(stream), - } + RestartableFinalityProofsStream { needs_restart: false, stream: Box::pin(stream) } } } @@ -260,14 +258,12 @@ async fn run_until_connection_lost( last_transaction = updated_last_transaction; retry_backoff.reset(); sync_params.tick - } + }, Err(error) => { log::error!(target: "bridge", "Finality sync loop iteration has failed with error: {:?}", error); error.fail_if_connection_error()?; - retry_backoff - .next_backoff() - .unwrap_or(relay_utils::relay_loop::RECONNECT_DELAY) - } + retry_backoff.next_backoff().unwrap_or(relay_utils::relay_loop::RECONNECT_DELAY) + }, }; if finality_proofs_stream.needs_restart { log::warn!(target: "bridge", "{} finality proofs stream is being restarted", P::SOURCE_NAME); @@ -297,10 +293,8 @@ where TC: TargetClient

, { // read best source headers ids from source and target nodes - let best_number_at_source = source_client - .best_finalized_block_number() - .await - .map_err(Error::Source)?; + let best_number_at_source = + source_client.best_finalized_block_number().await.map_err(Error::Source)?; let best_number_at_target = target_client .best_finalized_source_block_number() .await @@ -309,7 +303,8 @@ where metrics_sync.update_best_block_at_source(best_number_at_source); metrics_sync.update_best_block_at_target(best_number_at_target); } - *state.progress = print_sync_progress::

(*state.progress, best_number_at_source, best_number_at_target); + *state.progress = + print_sync_progress::

(*state.progress, best_number_at_source, best_number_at_target); // if we have already submitted header, then we just need to wait for it // if we're waiting too much, then we believe our transaction has been lost and restart sync @@ -324,9 +319,9 @@ where P::TARGET_NAME, ); - return Err(Error::Stalled); + return Err(Error::Stalled) } else { - return Ok(Some(last_transaction)); + return Ok(Some(last_transaction)) } } @@ -343,10 +338,8 @@ where .await? { Some((header, justification)) => { - let new_transaction = Transaction { - time: Instant::now(), - submitted_header_number: header.number(), - }; + let new_transaction = + Transaction { time: Instant::now(), submitted_header_number: header.number() }; log::debug!( target: "bridge", @@ -361,7 +354,7 @@ where .await .map_err(Error::Target)?; Ok(Some(new_transaction)) - } + }, None => Ok(None), } } @@ -398,15 +391,15 @@ where ) .await?; let (mut unjustified_headers, mut selected_finality_proof) = match selected_finality_proof { - SelectedFinalityProof::Mandatory(header, finality_proof) => return Ok(Some((header, finality_proof))), + SelectedFinalityProof::Mandatory(header, finality_proof) => + return Ok(Some((header, finality_proof))), _ if sync_params.only_mandatory_headers => { // we are not reading finality proofs from the stream, so eventually it'll break // but we don't care about transient proofs at all, so it is acceptable - return Ok(None); - } - SelectedFinalityProof::Regular(unjustified_headers, header, finality_proof) => { - (unjustified_headers, Some((header, finality_proof))) - } + return Ok(None) + }, + SelectedFinalityProof::Regular(unjustified_headers, header, finality_proof) => + (unjustified_headers, Some((header, finality_proof))), SelectedFinalityProof::None(unjustified_headers) => (unjustified_headers, None), }; @@ -451,7 +444,11 @@ pub(crate) enum SelectedFinalityProof { /// Otherwise, `SelectedFinalityProof::None` is returned. /// /// Unless we have found mandatory header, all missing headers are collected and returned. -pub(crate) async fn read_missing_headers, TC: TargetClient

>( +pub(crate) async fn read_missing_headers< + P: FinalitySyncPipeline, + SC: SourceClient

, + TC: TargetClient

, +>( source_client: &SC, _target_client: &TC, best_number_at_source: P::Number, @@ -470,22 +467,30 @@ pub(crate) async fn read_missing_headers { log::trace!(target: "bridge", "Header {:?} is mandatory", header_number); - return Ok(SelectedFinalityProof::Mandatory(header, finality_proof)); - } + return Ok(SelectedFinalityProof::Mandatory(header, finality_proof)) + }, (true, None) => return Err(Error::MissingMandatoryFinalityProof(header.number())), (false, Some(finality_proof)) => { log::trace!(target: "bridge", "Header {:?} has persistent finality proof", header_number); unjustified_headers.clear(); selected_finality_proof = Some((header, finality_proof)); - } + }, (false, None) => { unjustified_headers.push(header); - } + }, } header_number = header_number + One::one(); } + log::trace!( + target: "bridge", + "Read {} {} headers. Selected finality proof for header: {:?}", + best_number_at_source.saturating_sub(best_number_at_target), + P::SOURCE_NAME, + selected_finality_proof.as_ref().map(|(header, _)| header), + ); + Ok(match selected_finality_proof { Some((header, proof)) => SelectedFinalityProof::Regular(unjustified_headers, header, proof), None => SelectedFinalityProof::None(unjustified_headers), @@ -493,22 +498,46 @@ pub(crate) async fn read_missing_headers>( +pub(crate) fn read_finality_proofs_from_stream< + P: FinalitySyncPipeline, + FPS: Stream, +>( finality_proofs_stream: &mut RestartableFinalityProofsStream, recent_finality_proofs: &mut FinalityProofs

, ) { + let mut proofs_count = 0; + let mut first_header_number = None; + let mut last_header_number = None; loop { let next_proof = finality_proofs_stream.stream.next(); let finality_proof = match next_proof.now_or_never() { Some(Some(finality_proof)) => finality_proof, Some(None) => { finality_proofs_stream.needs_restart = true; - break; - } + break + }, None => break, }; - recent_finality_proofs.push((finality_proof.target_header_number(), finality_proof)); + let target_header_number = finality_proof.target_header_number(); + if first_header_number.is_none() { + first_header_number = Some(target_header_number); + } + last_header_number = Some(target_header_number); + proofs_count += 1; + + recent_finality_proofs.push((target_header_number, finality_proof)); + } + + if proofs_count != 0 { + log::trace!( + target: "bridge", + "Read {} finality proofs from {} finality stream for headers in range [{:?}; {:?}]", + proofs_count, + P::SOURCE_NAME, + first_header_number, + last_header_number, + ); } } @@ -520,7 +549,13 @@ pub(crate) fn select_better_recent_finality_proof( selected_finality_proof: Option<(P::Header, P::FinalityProof)>, ) -> Option<(P::Header, P::FinalityProof)> { if unjustified_headers.is_empty() || recent_finality_proofs.is_empty() { - return selected_finality_proof; + log::trace!( + target: "bridge", + "Can not improve selected {} finality proof {:?}. No unjustified headers and recent proofs", + P::SOURCE_NAME, + selected_finality_proof.as_ref().map(|(h, _)| h.number()), + ); + return selected_finality_proof } const NOT_EMPTY_PROOF: &str = "we have checked that the vec is not empty; qed"; @@ -542,9 +577,24 @@ pub(crate) fn select_better_recent_finality_proof( let selected_finality_proof_index = recent_finality_proofs .binary_search_by_key(intersection.end(), |(number, _)| *number) .unwrap_or_else(|index| index.saturating_sub(1)); - let (selected_header_number, finality_proof) = &recent_finality_proofs[selected_finality_proof_index]; - if !intersection.contains(selected_header_number) { - return selected_finality_proof; + let (selected_header_number, finality_proof) = + &recent_finality_proofs[selected_finality_proof_index]; + let has_selected_finality_proof = intersection.contains(selected_header_number); + log::trace!( + target: "bridge", + "Trying to improve selected {} finality proof {:?}. Headers range: [{:?}; {:?}]. Proofs range: [{:?}; {:?}].\ + Trying to improve to: {:?}. Result: {}", + P::SOURCE_NAME, + selected_finality_proof.as_ref().map(|(h, _)| h.number()), + unjustified_range_begin, + unjustified_range_end, + buffered_range_begin, + buffered_range_end, + selected_header_number, + if has_selected_finality_proof { "improved" } else { "not improved" }, + ); + if !has_selected_finality_proof { + return selected_finality_proof } // now remove all obsolete headers and extract selected header @@ -560,20 +610,15 @@ pub(crate) fn prune_recent_finality_proofs( recent_finality_proofs: &mut FinalityProofs

, recent_finality_proofs_limit: usize, ) { - let position = - recent_finality_proofs.binary_search_by_key(&justified_header_number, |(header_number, _)| *header_number); + let position = recent_finality_proofs + .binary_search_by_key(&justified_header_number, |(header_number, _)| *header_number); // remove all obsolete elements - *recent_finality_proofs = recent_finality_proofs.split_off( - position - .map(|position| position + 1) - .unwrap_or_else(|position| position), - ); + *recent_finality_proofs = recent_finality_proofs + .split_off(position.map(|position| position + 1).unwrap_or_else(|position| position)); // now - limit vec by size - let split_index = recent_finality_proofs - .len() - .saturating_sub(recent_finality_proofs_limit); + let split_index = recent_finality_proofs.len().saturating_sub(recent_finality_proofs_limit); *recent_finality_proofs = recent_finality_proofs.split_off(split_index); } @@ -585,15 +630,15 @@ fn print_sync_progress( let (prev_time, prev_best_number_at_target) = progress_context; let now = Instant::now(); - let need_update = now - prev_time > Duration::from_secs(10) - || prev_best_number_at_target + let need_update = now - prev_time > Duration::from_secs(10) || + prev_best_number_at_target .map(|prev_best_number_at_target| { best_number_at_target.saturating_sub(prev_best_number_at_target) > 10.into() }) .unwrap_or(true); if !need_update { - return (prev_time, prev_best_number_at_target); + return (prev_time, prev_best_number_at_target) } log::info!( diff --git a/bridges/relays/finality/src/finality_loop_tests.rs b/relays/finality/src/finality_loop_tests.rs similarity index 86% rename from bridges/relays/finality/src/finality_loop_tests.rs rename to relays/finality/src/finality_loop_tests.rs index e7e0cdb39fb3..915b7ee6766e 100644 --- a/bridges/relays/finality/src/finality_loop_tests.rs +++ b/relays/finality/src/finality_loop_tests.rs @@ -18,17 +18,21 @@ #![cfg(test)] -use crate::finality_loop::{ - prune_recent_finality_proofs, read_finality_proofs_from_stream, run, select_better_recent_finality_proof, - select_header_to_submit, FinalityProofs, FinalitySyncParams, RestartableFinalityProofsStream, SourceClient, - TargetClient, +use crate::{ + finality_loop::{ + prune_recent_finality_proofs, read_finality_proofs_from_stream, run, + select_better_recent_finality_proof, select_header_to_submit, FinalityProofs, + FinalitySyncParams, RestartableFinalityProofsStream, SourceClient, TargetClient, + }, + FinalityProof, FinalitySyncPipeline, SourceHeader, }; -use crate::{FinalityProof, FinalitySyncPipeline, SourceHeader}; use async_trait::async_trait; use futures::{FutureExt, Stream, StreamExt}; use parking_lot::Mutex; -use relay_utils::{metrics::MetricsParams, relay_loop::Client as RelayClient, MaybeConnectionError}; +use relay_utils::{ + metrics::MetricsParams, relay_loop::Client as RelayClient, MaybeConnectionError, +}; use std::{collections::HashMap, pin::Pin, sync::Arc, time::Duration}; type IsMandatory = bool; @@ -121,10 +125,7 @@ impl SourceClient for TestSourceClient { ) -> Result<(TestSourceHeader, Option), TestError> { let mut data = self.data.lock(); (self.on_method_call)(&mut *data); - data.source_headers - .get(&number) - .cloned() - .ok_or(TestError::NonConnection) + data.source_headers.get(&number).cloned().ok_or(TestError::NonConnection) } async fn finality_proofs(&self) -> Result { @@ -157,7 +158,11 @@ impl TargetClient for TestTargetClient { Ok(data.target_best_block_number) } - async fn submit_finality_proof(&self, header: TestSourceHeader, proof: TestFinalityProof) -> Result<(), TestError> { + async fn submit_finality_proof( + &self, + header: TestSourceHeader, + proof: TestFinalityProof, + ) -> Result<(), TestError> { let mut data = self.data.lock(); (self.on_method_call)(&mut *data); data.target_best_block_number = header.number(); @@ -171,11 +176,12 @@ fn prepare_test_clients( state_function: impl Fn(&mut ClientsData) -> bool + Send + Sync + 'static, source_headers: HashMap)>, ) -> (TestSourceClient, TestTargetClient) { - let internal_state_function: Arc = Arc::new(move |data| { - if state_function(data) { - exit_sender.unbounded_send(()).unwrap(); - } - }); + let internal_state_function: Arc = + Arc::new(move |data| { + if state_function(data) { + exit_sender.unbounded_send(()).unwrap(); + } + }); let clients_data = Arc::new(Mutex::new(ClientsData { source_best_block_number: 10, source_headers, @@ -189,14 +195,13 @@ fn prepare_test_clients( on_method_call: internal_state_function.clone(), data: clients_data.clone(), }, - TestTargetClient { - on_method_call: internal_state_function, - data: clients_data, - }, + TestTargetClient { on_method_call: internal_state_function, data: clients_data }, ) } -fn run_sync_loop(state_function: impl Fn(&mut ClientsData) -> bool + Send + Sync + 'static) -> ClientsData { +fn run_sync_loop( + state_function: impl Fn(&mut ClientsData) -> bool + Send + Sync + 'static, +) -> ClientsData { let (exit_sender, exit_receiver) = futures::channel::mpsc::unbounded(); let (source_client, target_client) = prepare_test_clients( exit_sender, @@ -234,12 +239,13 @@ fn run_sync_loop(state_function: impl Fn(&mut ClientsData) -> bool + Send + Sync #[test] fn finality_sync_loop_works() { let client_data = run_sync_loop(|data| { - // header#7 has persistent finality proof, but it isn't mandatory => it isn't submitted, because - // header#8 has persistent finality proof && it is mandatory => it is submitted - // header#9 has persistent finality proof, but it isn't mandatory => it is submitted, because - // there are no more persistent finality proofs + // header#7 has persistent finality proof, but it isn't mandatory => it isn't submitted, + // because header#8 has persistent finality proof && it is mandatory => it is submitted + // header#9 has persistent finality proof, but it isn't mandatory => it is submitted, + // because there are no more persistent finality proofs // - // once this ^^^ is done, we generate more blocks && read proof for blocks 12 and 14 from the stream + // once this ^^^ is done, we generate more blocks && read proof for blocks 12 and 14 from + // the stream if data.target_best_block_number == 9 { data.source_best_block_number = 14; data.source_headers.insert(11, (TestSourceHeader(false, 11), None)); @@ -287,10 +293,7 @@ fn run_only_mandatory_headers_mode_test( vec![ (6, (TestSourceHeader(false, 6), Some(TestFinalityProof(6)))), (7, (TestSourceHeader(false, 7), Some(TestFinalityProof(7)))), - ( - 8, - (TestSourceHeader(has_mandatory_headers, 8), Some(TestFinalityProof(8))), - ), + (8, (TestSourceHeader(has_mandatory_headers, 8), Some(TestFinalityProof(8)))), (9, (TestSourceHeader(false, 9), Some(TestFinalityProof(9)))), (10, (TestSourceHeader(false, 10), Some(TestFinalityProof(10)))), ] @@ -357,7 +360,8 @@ fn select_better_recent_finality_proof_works() { Some((TestSourceHeader(false, 2), TestFinalityProof(2))), ); - // if there's no intersection between recent finality proofs and unjustified headers, nothing is changed + // if there's no intersection between recent finality proofs and unjustified headers, nothing is + // changed let mut unjustified_headers = vec![TestSourceHeader(false, 9), TestSourceHeader(false, 10)]; assert_eq!( select_better_recent_finality_proof::( @@ -368,13 +372,10 @@ fn select_better_recent_finality_proof_works() { Some((TestSourceHeader(false, 2), TestFinalityProof(2))), ); - // if there's intersection between recent finality proofs and unjustified headers, but there are no - // proofs in this intersection, nothing is changed - let mut unjustified_headers = vec![ - TestSourceHeader(false, 8), - TestSourceHeader(false, 9), - TestSourceHeader(false, 10), - ]; + // if there's intersection between recent finality proofs and unjustified headers, but there are + // no proofs in this intersection, nothing is changed + let mut unjustified_headers = + vec![TestSourceHeader(false, 8), TestSourceHeader(false, 9), TestSourceHeader(false, 10)]; assert_eq!( select_better_recent_finality_proof::( &[(7, TestFinalityProof(7)), (11, TestFinalityProof(11))], @@ -385,22 +386,15 @@ fn select_better_recent_finality_proof_works() { ); assert_eq!( unjustified_headers, - vec![ - TestSourceHeader(false, 8), - TestSourceHeader(false, 9), - TestSourceHeader(false, 10) - ] + vec![TestSourceHeader(false, 8), TestSourceHeader(false, 9), TestSourceHeader(false, 10)] ); // if there's intersection between recent finality proofs and unjustified headers and there's // a proof in this intersection: // - this better (last from intersection) proof is selected; // - 'obsolete' unjustified headers are pruned. - let mut unjustified_headers = vec![ - TestSourceHeader(false, 8), - TestSourceHeader(false, 9), - TestSourceHeader(false, 10), - ]; + let mut unjustified_headers = + vec![TestSourceHeader(false, 8), TestSourceHeader(false, 9), TestSourceHeader(false, 10)]; assert_eq!( select_better_recent_finality_proof::( &[(7, TestFinalityProof(7)), (9, TestFinalityProof(9))], @@ -416,7 +410,10 @@ fn read_finality_proofs_from_stream_works() { // when stream is currently empty, nothing is changed let mut recent_finality_proofs = vec![(1, TestFinalityProof(1))]; let mut stream = futures::stream::pending().into(); - read_finality_proofs_from_stream::(&mut stream, &mut recent_finality_proofs); + read_finality_proofs_from_stream::( + &mut stream, + &mut recent_finality_proofs, + ); assert_eq!(recent_finality_proofs, vec![(1, TestFinalityProof(1))]); assert!(!stream.needs_restart); @@ -424,20 +421,20 @@ fn read_finality_proofs_from_stream_works() { let mut stream = futures::stream::iter(vec![TestFinalityProof(4)]) .chain(futures::stream::pending()) .into(); - read_finality_proofs_from_stream::(&mut stream, &mut recent_finality_proofs); - assert_eq!( - recent_finality_proofs, - vec![(1, TestFinalityProof(1)), (4, TestFinalityProof(4))] + read_finality_proofs_from_stream::( + &mut stream, + &mut recent_finality_proofs, ); + assert_eq!(recent_finality_proofs, vec![(1, TestFinalityProof(1)), (4, TestFinalityProof(4))]); assert!(!stream.needs_restart); // when stream has ended, we'll need to restart it let mut stream = futures::stream::empty().into(); - read_finality_proofs_from_stream::(&mut stream, &mut recent_finality_proofs); - assert_eq!( - recent_finality_proofs, - vec![(1, TestFinalityProof(1)), (4, TestFinalityProof(4))] + read_finality_proofs_from_stream::( + &mut stream, + &mut recent_finality_proofs, ); + assert_eq!(recent_finality_proofs, vec![(1, TestFinalityProof(1)), (4, TestFinalityProof(4))]); assert!(stream.needs_restart); } diff --git a/relays/finality/src/lib.rs b/relays/finality/src/lib.rs new file mode 100644 index 000000000000..6421d13b787c --- /dev/null +++ b/relays/finality/src/lib.rs @@ -0,0 +1,56 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! This crate has single entrypoint to run synchronization loop that is built around finality +//! proofs, as opposed to headers synchronization loop, which is built around headers. The headers +//! are still submitted to the target node, but are treated as auxiliary data as we are not trying +//! to submit all source headers to the target node. + +pub use crate::finality_loop::{ + metrics_prefix, run, FinalitySyncParams, SourceClient, TargetClient, +}; + +use bp_header_chain::FinalityProof; +use std::fmt::Debug; + +mod finality_loop; +mod finality_loop_tests; +mod sync_loop_metrics; + +/// Finality proofs synchronization pipeline. +pub trait FinalitySyncPipeline: 'static + Clone + Debug + Send + Sync { + /// Name of the finality proofs source. + const SOURCE_NAME: &'static str; + /// Name of the finality proofs target. + const TARGET_NAME: &'static str; + + /// Headers we're syncing are identified by this hash. + type Hash: Eq + Clone + Copy + Send + Sync + Debug; + /// Headers we're syncing are identified by this number. + type Number: relay_utils::BlockNumberBase; + /// Type of header that we're syncing. + type Header: SourceHeader; + /// Finality proof type. + type FinalityProof: FinalityProof; +} + +/// Header that we're receiving from source node. +pub trait SourceHeader: Clone + Debug + PartialEq + Send + Sync { + /// Returns number of header. + fn number(&self) -> Number; + /// Returns true if this header needs to be submitted to target node. + fn is_mandatory(&self) -> bool; +} diff --git a/relays/finality/src/sync_loop_metrics.rs b/relays/finality/src/sync_loop_metrics.rs new file mode 100644 index 000000000000..1f65dac17c05 --- /dev/null +++ b/relays/finality/src/sync_loop_metrics.rs @@ -0,0 +1,64 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Metrics for headers synchronization relay loop. + +use relay_utils::metrics::{ + metric_name, register, GaugeVec, Metric, Opts, PrometheusError, Registry, U64, +}; + +/// Headers sync metrics. +#[derive(Clone)] +pub struct SyncLoopMetrics { + /// Best syncing headers at "source" and "target" nodes. + best_block_numbers: GaugeVec, +} + +impl SyncLoopMetrics { + /// Create and register headers loop metrics. + pub fn new(prefix: Option<&str>) -> Result { + Ok(SyncLoopMetrics { + best_block_numbers: GaugeVec::new( + Opts::new( + metric_name(prefix, "best_block_numbers"), + "Best block numbers on source and target nodes", + ), + &["node"], + )?, + }) + } + + /// Update best block number at source. + pub fn update_best_block_at_source>(&self, source_best_number: Number) { + self.best_block_numbers + .with_label_values(&["source"]) + .set(source_best_number.into()); + } + + /// Update best block number at target. + pub fn update_best_block_at_target>(&self, target_best_number: Number) { + self.best_block_numbers + .with_label_values(&["target"]) + .set(target_best_number.into()); + } +} + +impl Metric for SyncLoopMetrics { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.best_block_numbers.clone(), registry)?; + Ok(()) + } +} diff --git a/relays/lib-substrate-relay/Cargo.toml b/relays/lib-substrate-relay/Cargo.toml new file mode 100644 index 000000000000..5bee10856daa --- /dev/null +++ b/relays/lib-substrate-relay/Cargo.toml @@ -0,0 +1,48 @@ +[package] +name = "substrate-relay-helper" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +anyhow = "1.0" +thiserror = "1.0.26" +async-std = "1.9.0" +async-trait = "0.1.42" +codec = { package = "parity-scale-codec", version = "2.2.0" } +futures = "0.3.12" +num-traits = "0.2" +log = "0.4.14" + + +# Bridge dependencies + +bp-header-chain = { path = "../../primitives/header-chain" } +bridge-runtime-common = { path = "../../bin/runtime-common" } + +finality-grandpa = { version = "0.14.0" } +finality-relay = { path = "../finality" } +relay-utils = { path = "../utils" } +messages-relay = { path = "../messages" } +relay-substrate-client = { path = "../client-substrate" } + +pallet-bridge-messages = { path = "../../modules/messages" } + +bp-runtime = { path = "../../primitives/runtime" } +bp-messages = { path = "../../primitives/messages" } + +# Substrate Dependencies + +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[dev-dependencies] +bp-millau = { path = "../../primitives/chain-millau" } +bp-rococo = { path = "../../primitives/chain-rococo" } +bp-wococo = { path = "../../primitives/chain-wococo" } +relay-rococo-client = { path = "../client-rococo" } +relay-wococo-client = { path = "../client-wococo" } +rialto-runtime = { path = "../../bin/rialto/runtime" } diff --git a/relays/lib-substrate-relay/src/conversion_rate_update.rs b/relays/lib-substrate-relay/src/conversion_rate_update.rs new file mode 100644 index 000000000000..93458457d34c --- /dev/null +++ b/relays/lib-substrate-relay/src/conversion_rate_update.rs @@ -0,0 +1,243 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Tools for updating conversion rate that is stored in the runtime storage. + +use relay_utils::metrics::F64SharedRef; +use std::{future::Future, time::Duration}; + +/// Duration between updater iterations. +const SLEEP_DURATION: Duration = Duration::from_secs(60); + +/// Update-conversion-rate transaction status. +#[derive(Debug, Clone, Copy, PartialEq)] +enum TransactionStatus { + /// We have not submitted any transaction recently. + Idle, + /// We have recently submitted transaction that should update conversion rate. + Submitted(f64), +} + +/// Run infinite conversion rate updater loop. +/// +/// The loop is maintaining the Left -> Right conversion rate, used as `RightTokens = LeftTokens * +/// Rate`. +pub fn run_conversion_rate_update_loop< + SubmitConversionRateFuture: Future> + Send + 'static, +>( + left_to_right_stored_conversion_rate: F64SharedRef, + left_to_base_conversion_rate: F64SharedRef, + right_to_base_conversion_rate: F64SharedRef, + max_difference_ratio: f64, + submit_conversion_rate: impl Fn(f64) -> SubmitConversionRateFuture + Send + 'static, +) { + async_std::task::spawn(async move { + let mut transaction_status = TransactionStatus::Idle; + loop { + async_std::task::sleep(SLEEP_DURATION).await; + let maybe_new_conversion_rate = maybe_select_new_conversion_rate( + &mut transaction_status, + &left_to_right_stored_conversion_rate, + &left_to_base_conversion_rate, + &right_to_base_conversion_rate, + max_difference_ratio, + ) + .await; + if let Some((prev_conversion_rate, new_conversion_rate)) = maybe_new_conversion_rate { + let submit_conversion_rate_future = submit_conversion_rate(new_conversion_rate); + match submit_conversion_rate_future.await { + Ok(()) => { + transaction_status = TransactionStatus::Submitted(prev_conversion_rate); + }, + Err(error) => { + log::trace!(target: "bridge", "Failed to submit conversion rate update transaction: {:?}", error); + }, + } + } + } + }); +} + +/// Select new conversion rate to submit to the node. +async fn maybe_select_new_conversion_rate( + transaction_status: &mut TransactionStatus, + left_to_right_stored_conversion_rate: &F64SharedRef, + left_to_base_conversion_rate: &F64SharedRef, + right_to_base_conversion_rate: &F64SharedRef, + max_difference_ratio: f64, +) -> Option<(f64, f64)> { + let left_to_right_stored_conversion_rate = + (*left_to_right_stored_conversion_rate.read().await)?; + match *transaction_status { + TransactionStatus::Idle => (), + TransactionStatus::Submitted(previous_left_to_right_stored_conversion_rate) => { + // we can't compare float values from different sources directly, so we only care + // whether the stored rate has been changed or not. If it has been changed, then we + // assume that our proposal has been accepted. + // + // float comparison is ok here, because we compare same-origin (stored in runtime + // storage) values and if they are different, it means that the value has actually been + // updated + #[allow(clippy::float_cmp)] + if previous_left_to_right_stored_conversion_rate == left_to_right_stored_conversion_rate + { + // the rate has not been changed => we won't submit any transactions until it is + // accepted, or the rate is changed by someone else + return None + } + + *transaction_status = TransactionStatus::Idle; + }, + } + + let left_to_base_conversion_rate = (*left_to_base_conversion_rate.read().await)?; + let right_to_base_conversion_rate = (*right_to_base_conversion_rate.read().await)?; + let actual_left_to_right_conversion_rate = + right_to_base_conversion_rate / left_to_base_conversion_rate; + + let rate_difference = + (actual_left_to_right_conversion_rate - left_to_right_stored_conversion_rate).abs(); + let rate_difference_ratio = rate_difference / left_to_right_stored_conversion_rate; + if rate_difference_ratio < max_difference_ratio { + return None + } + + Some((left_to_right_stored_conversion_rate, actual_left_to_right_conversion_rate)) +} + +#[cfg(test)] +mod tests { + use super::*; + use async_std::sync::{Arc, RwLock}; + + fn test_maybe_select_new_conversion_rate( + mut transaction_status: TransactionStatus, + stored_conversion_rate: Option, + left_to_base_conversion_rate: Option, + right_to_base_conversion_rate: Option, + max_difference_ratio: f64, + ) -> (Option<(f64, f64)>, TransactionStatus) { + let stored_conversion_rate = Arc::new(RwLock::new(stored_conversion_rate)); + let left_to_base_conversion_rate = Arc::new(RwLock::new(left_to_base_conversion_rate)); + let right_to_base_conversion_rate = Arc::new(RwLock::new(right_to_base_conversion_rate)); + let result = async_std::task::block_on(maybe_select_new_conversion_rate( + &mut transaction_status, + &stored_conversion_rate, + &left_to_base_conversion_rate, + &right_to_base_conversion_rate, + max_difference_ratio, + )); + (result, transaction_status) + } + + #[test] + fn rate_is_not_updated_when_transaction_is_submitted() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Submitted(10.0), + Some(10.0), + Some(1.0), + Some(1.0), + 0.0 + ), + (None, TransactionStatus::Submitted(10.0)), + ); + } + + #[test] + fn transaction_state_is_changed_to_idle_when_stored_rate_shanges() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Submitted(1.0), + Some(10.0), + Some(1.0), + Some(1.0), + 100.0 + ), + (None, TransactionStatus::Idle), + ); + } + + #[test] + fn transaction_is_not_submitted_when_left_to_base_rate_is_unknown() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Idle, + Some(10.0), + None, + Some(1.0), + 0.0 + ), + (None, TransactionStatus::Idle), + ); + } + + #[test] + fn transaction_is_not_submitted_when_right_to_base_rate_is_unknown() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Idle, + Some(10.0), + Some(1.0), + None, + 0.0 + ), + (None, TransactionStatus::Idle), + ); + } + + #[test] + fn transaction_is_not_submitted_when_stored_rate_is_unknown() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Idle, + None, + Some(1.0), + Some(1.0), + 0.0 + ), + (None, TransactionStatus::Idle), + ); + } + + #[test] + fn transaction_is_not_submitted_when_difference_is_below_threshold() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Idle, + Some(1.0), + Some(1.0), + Some(1.01), + 0.02 + ), + (None, TransactionStatus::Idle), + ); + } + + #[test] + fn transaction_is_submitted_when_difference_is_above_threshold() { + assert_eq!( + test_maybe_select_new_conversion_rate( + TransactionStatus::Idle, + Some(1.0), + Some(1.0), + Some(1.03), + 0.02 + ), + (Some((1.0, 1.03)), TransactionStatus::Idle), + ); + } +} diff --git a/relays/lib-substrate-relay/src/error.rs b/relays/lib-substrate-relay/src/error.rs new file mode 100644 index 000000000000..802499503563 --- /dev/null +++ b/relays/lib-substrate-relay/src/error.rs @@ -0,0 +1,58 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Relay errors. + +use relay_substrate_client as client; +use sp_finality_grandpa::AuthorityList; +use sp_runtime::traits::MaybeDisplay; +use std::fmt::Debug; +use thiserror::Error; + +/// Relay errors. +#[derive(Error, Debug)] +pub enum Error { + /// Failed to submit signed extrinsic from to the target chain. + #[error("Failed to submit {0} transaction: {1:?}")] + SubmitTransaction(&'static str, client::Error), + /// Failed subscribe to justification stream of the source chain. + #[error("Failed to subscribe to {0} justifications: {1:?}")] + Subscribe(&'static str, client::Error), + /// Failed subscribe to read justification from the source chain (client error). + #[error("Failed to read {0} justification from the stream: {1}")] + ReadJustification(&'static str, client::Error), + /// Failed subscribe to read justification from the source chain (stream ended). + #[error("Failed to read {0} justification from the stream: stream has ended unexpectedly")] + ReadJustificationStreamEnded(&'static str), + /// Failed subscribe to decode justification from the source chain. + #[error("Failed to decode {0} justification: {1:?}")] + DecodeJustification(&'static str, codec::Error), + /// GRANDPA authorities read from the source chain are invalid. + #[error("Read invalid {0} authorities set: {1:?}")] + ReadInvalidAuthorities(&'static str, AuthorityList), + /// Failed to guess initial GRANDPA authorities at the given header of the source chain. + #[error("Failed to guess initial {0} GRANDPA authorities set id: checked all possible ids in range [0; {1}]")] + GuessInitialAuthorities(&'static str, HeaderNumber), + /// Failed to retrieve GRANDPA authorities at the given header from the source chain. + #[error("Failed to retrive {0} GRANDPA authorities set at header {1}: {2:?}")] + RetrieveAuthorities(&'static str, Hash, client::Error), + /// Failed to decode GRANDPA authorities at the given header of the source chain. + #[error("Failed to decode {0} GRANDPA authorities set at header {1}: {2:?}")] + DecodeAuthorities(&'static str, Hash, codec::Error), + /// Failed to retrieve header by the hash from the source chain. + #[error("Failed to retrieve {0} header with hash {1}: {:?}")] + RetrieveHeader(&'static str, Hash, client::Error), +} diff --git a/relays/lib-substrate-relay/src/finality_pipeline.rs b/relays/lib-substrate-relay/src/finality_pipeline.rs new file mode 100644 index 000000000000..cdfbb3354d27 --- /dev/null +++ b/relays/lib-substrate-relay/src/finality_pipeline.rs @@ -0,0 +1,169 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate-to-Substrate headers sync entrypoint. + +use crate::{finality_target::SubstrateFinalityTarget, STALL_TIMEOUT}; + +use bp_header_chain::justification::GrandpaJustification; +use bp_runtime::AccountIdOf; +use finality_relay::{FinalitySyncParams, FinalitySyncPipeline}; +use relay_substrate_client::{ + finality_source::FinalitySource, BlockNumberOf, Chain, Client, HashOf, SyncHeader, +}; +use relay_utils::{metrics::MetricsParams, BlockNumberBase}; +use sp_core::Bytes; +use std::{fmt::Debug, marker::PhantomData}; + +/// Default limit of recent finality proofs. +/// +/// Finality delay of 4096 blocks is unlikely to happen in practice in +/// Substrate+GRANDPA based chains (good to know). +pub(crate) const RECENT_FINALITY_PROOFS_LIMIT: usize = 4096; + +/// Headers sync pipeline for Substrate <-> Substrate relays. +pub trait SubstrateFinalitySyncPipeline: 'static + Clone + Debug + Send + Sync { + /// Pipeline for syncing finalized Source chain headers to Target chain. + type FinalitySyncPipeline: FinalitySyncPipeline; + + /// Name of the runtime method that returns id of best finalized source header at target chain. + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str; + + /// Chain with GRANDPA bridge pallet. + type TargetChain: Chain; + + /// Customize metrics exposed by headers sync loop. + fn customize_metrics(params: MetricsParams) -> anyhow::Result { + Ok(params) + } + + /// Start finality relay guards. + /// + /// Different finality bridges may have different set of guards - e.g. on ephemeral chains we + /// don't need a version guards, on test chains we don't care that much about relayer account + /// balance, ... So the implementation is left to the specific bridges. + fn start_relay_guards(&self) {} + + /// Returns id of account that we're using to sign transactions at target chain. + fn transactions_author(&self) -> AccountIdOf; + + /// Make submit header transaction. + fn make_submit_finality_proof_transaction( + &self, + era: bp_runtime::TransactionEraOf, + transaction_nonce: bp_runtime::IndexOf, + header: ::Header, + proof: ::FinalityProof, + ) -> Bytes; +} + +/// Substrate-to-Substrate finality proof pipeline. +#[derive(Clone)] +pub struct SubstrateFinalityToSubstrate { + /// Client for the target chain. + pub target_client: Client, + /// Data required to sign target chain transactions. + pub target_sign: TargetSign, + /// Unused generic arguments dump. + _marker: PhantomData, +} + +impl Debug + for SubstrateFinalityToSubstrate +{ + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_struct("SubstrateFinalityToSubstrate") + .field("target_client", &self.target_client) + .finish() + } +} + +impl + SubstrateFinalityToSubstrate +{ + /// Create new Substrate-to-Substrate headers pipeline. + pub fn new(target_client: Client, target_sign: TargetSign) -> Self { + SubstrateFinalityToSubstrate { target_client, target_sign, _marker: Default::default() } + } +} + +impl FinalitySyncPipeline + for SubstrateFinalityToSubstrate +where + SourceChain: Clone + Chain + Debug, + BlockNumberOf: BlockNumberBase, + TargetChain: Clone + Chain + Debug, + TargetSign: 'static + Clone + Send + Sync, +{ + const SOURCE_NAME: &'static str = SourceChain::NAME; + const TARGET_NAME: &'static str = TargetChain::NAME; + + type Hash = HashOf; + type Number = BlockNumberOf; + type Header = SyncHeader; + type FinalityProof = GrandpaJustification; +} + +/// Run Substrate-to-Substrate finality sync. +pub async fn run( + pipeline: P, + source_client: Client, + target_client: Client, + only_mandatory_headers: bool, + transactions_mortality: Option, + metrics_params: MetricsParams, +) -> anyhow::Result<()> +where + P: SubstrateFinalitySyncPipeline, + P::FinalitySyncPipeline: FinalitySyncPipeline< + Hash = HashOf, + Number = BlockNumberOf, + Header = SyncHeader, + FinalityProof = GrandpaJustification, + >, + SourceChain: Clone + Chain, + BlockNumberOf: BlockNumberBase, + TargetChain: Clone + Chain, +{ + log::info!( + target: "bridge", + "Starting {} -> {} finality proof relay", + SourceChain::NAME, + TargetChain::NAME, + ); + + finality_relay::run( + FinalitySource::new(source_client, None), + SubstrateFinalityTarget::new(target_client, pipeline, transactions_mortality), + FinalitySyncParams { + tick: std::cmp::max( + SourceChain::AVERAGE_BLOCK_INTERVAL, + TargetChain::AVERAGE_BLOCK_INTERVAL, + ), + recent_finality_proofs_limit: RECENT_FINALITY_PROOFS_LIMIT, + stall_timeout: relay_substrate_client::transaction_stall_timeout( + transactions_mortality, + TargetChain::AVERAGE_BLOCK_INTERVAL, + STALL_TIMEOUT, + ), + only_mandatory_headers, + }, + metrics_params, + futures::future::pending(), + ) + .await + .map_err(|e| anyhow::format_err!("{}", e)) +} diff --git a/relays/lib-substrate-relay/src/finality_target.rs b/relays/lib-substrate-relay/src/finality_target.rs new file mode 100644 index 000000000000..f50bd103f430 --- /dev/null +++ b/relays/lib-substrate-relay/src/finality_target.rs @@ -0,0 +1,113 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate client as Substrate finality proof target. The chain we connect to should have +//! runtime that implements `FinalityApi` to allow bridging with +//! chain. + +use crate::finality_pipeline::SubstrateFinalitySyncPipeline; + +use async_trait::async_trait; +use codec::Decode; +use finality_relay::{FinalitySyncPipeline, TargetClient}; +use relay_substrate_client::{Chain, Client, Error as SubstrateError}; +use relay_utils::relay_loop::Client as RelayClient; + +/// Substrate client as Substrate finality target. +pub struct SubstrateFinalityTarget { + client: Client, + pipeline: P, + transactions_mortality: Option, +} + +impl SubstrateFinalityTarget { + /// Create new Substrate headers target. + pub fn new(client: Client, pipeline: P, transactions_mortality: Option) -> Self { + SubstrateFinalityTarget { client, pipeline, transactions_mortality } + } +} + +impl Clone for SubstrateFinalityTarget { + fn clone(&self) -> Self { + SubstrateFinalityTarget { + client: self.client.clone(), + pipeline: self.pipeline.clone(), + transactions_mortality: self.transactions_mortality, + } + } +} + +#[async_trait] +impl RelayClient for SubstrateFinalityTarget { + type Error = SubstrateError; + + async fn reconnect(&mut self) -> Result<(), SubstrateError> { + self.client.reconnect().await + } +} + +#[async_trait] +impl TargetClient for SubstrateFinalityTarget +where + C: Chain, + P: SubstrateFinalitySyncPipeline, + ::Number: Decode, + ::Hash: Decode, +{ + async fn best_finalized_source_block_number( + &self, + ) -> Result<::Number, SubstrateError> { + // we can't continue to relay finality if target node is out of sync, because + // it may have already received (some of) headers that we're going to relay + self.client.ensure_synced().await?; + + Ok(crate::messages_source::read_client_state::< + C, + ::Hash, + ::Number, + >(&self.client, P::BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET) + .await? + .best_finalized_peer_at_best_self + .0) + } + + async fn submit_finality_proof( + &self, + header: ::Header, + proof: ::FinalityProof, + ) -> Result<(), SubstrateError> { + let transactions_author = self.pipeline.transactions_author(); + let pipeline = self.pipeline.clone(); + let transactions_mortality = self.transactions_mortality; + self.client + .submit_signed_extrinsic( + transactions_author, + move |best_block_id, transaction_nonce| { + pipeline.make_submit_finality_proof_transaction( + relay_substrate_client::TransactionEra::new( + best_block_id, + transactions_mortality, + ), + transaction_nonce, + header, + proof, + ) + }, + ) + .await + .map(drop) + } +} diff --git a/relays/lib-substrate-relay/src/headers_initialize.rs b/relays/lib-substrate-relay/src/headers_initialize.rs new file mode 100644 index 000000000000..2e802c4cb215 --- /dev/null +++ b/relays/lib-substrate-relay/src/headers_initialize.rs @@ -0,0 +1,243 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Initialize Substrate -> Substrate headers bridge. +//! +//! Initialization is a transaction that calls `initialize()` function of the +//! `pallet-bridge-grandpa` pallet. This transaction brings initial header +//! and authorities set from source to target chain. The headers sync starts +//! with this header. + +use crate::error::Error; + +use bp_header_chain::{ + find_grandpa_authorities_scheduled_change, + justification::{verify_justification, GrandpaJustification}, + InitializationData, +}; +use codec::Decode; +use finality_grandpa::voter_set::VoterSet; +use num_traits::{One, Zero}; +use relay_substrate_client::{Chain, Client}; +use sp_core::Bytes; +use sp_finality_grandpa::AuthorityList as GrandpaAuthoritiesSet; +use sp_runtime::traits::Header as HeaderT; + +/// Submit headers-bridge initialization transaction. +pub async fn initialize( + source_client: Client, + target_client: Client, + target_transactions_signer: TargetChain::AccountId, + prepare_initialize_transaction: impl FnOnce(TargetChain::Index, InitializationData) -> Bytes + + Send + + 'static, +) { + let result = do_initialize( + source_client, + target_client, + target_transactions_signer, + prepare_initialize_transaction, + ) + .await; + + match result { + Ok(tx_hash) => log::info!( + target: "bridge", + "Successfully submitted {}-headers bridge initialization transaction to {}: {:?}", + SourceChain::NAME, + TargetChain::NAME, + tx_hash, + ), + Err(err) => log::error!( + target: "bridge", + "Failed to submit {}-headers bridge initialization transaction to {}: {:?}", + SourceChain::NAME, + TargetChain::NAME, + err, + ), + } +} + +/// Craft and submit initialization transaction, returning any error that may occur. +async fn do_initialize( + source_client: Client, + target_client: Client, + target_transactions_signer: TargetChain::AccountId, + prepare_initialize_transaction: impl FnOnce(TargetChain::Index, InitializationData) -> Bytes + + Send + + 'static, +) -> Result::Number>> { + let initialization_data = prepare_initialization_data(source_client).await?; + log::info!( + target: "bridge", + "Prepared initialization data for {}-headers bridge at {}: {:?}", + SourceChain::NAME, + TargetChain::NAME, + initialization_data, + ); + + let initialization_tx_hash = target_client + .submit_signed_extrinsic(target_transactions_signer, move |_, transaction_nonce| { + prepare_initialize_transaction(transaction_nonce, initialization_data) + }) + .await + .map_err(|err| Error::SubmitTransaction(TargetChain::NAME, err))?; + Ok(initialization_tx_hash) +} + +/// Prepare initialization data for the GRANDPA verifier pallet. +async fn prepare_initialization_data( + source_client: Client, +) -> Result< + InitializationData, + Error::Number>, +> { + // In ideal world we just need to get best finalized header and then to read GRANDPA authorities + // set (`pallet_grandpa::CurrentSetId` + `GrandpaApi::grandpa_authorities()`) at this header. + // + // But now there are problems with this approach - `CurrentSetId` may return invalid value. So + // here we're waiting for the next justification, read the authorities set and then try to + // figure out the set id with bruteforce. + let justifications = source_client + .subscribe_justifications() + .await + .map_err(|err| Error::Subscribe(SourceChain::NAME, err))?; + // Read next justification - the header that it finalizes will be used as initial header. + let justification = justifications + .next() + .await + .map_err(|e| Error::ReadJustification(SourceChain::NAME, e)) + .and_then(|justification| { + justification.ok_or(Error::ReadJustificationStreamEnded(SourceChain::NAME)) + })?; + + // Read initial header. + let justification: GrandpaJustification = + Decode::decode(&mut &justification.0[..]) + .map_err(|err| Error::DecodeJustification(SourceChain::NAME, err))?; + + let (initial_header_hash, initial_header_number) = + (justification.commit.target_hash, justification.commit.target_number); + + let initial_header = source_header(&source_client, initial_header_hash).await?; + log::trace!(target: "bridge", "Selected {} initial header: {}/{}", + SourceChain::NAME, + initial_header_number, + initial_header_hash, + ); + + // Read GRANDPA authorities set at initial header. + let initial_authorities_set = + source_authorities_set(&source_client, initial_header_hash).await?; + log::trace!(target: "bridge", "Selected {} initial authorities set: {:?}", + SourceChain::NAME, + initial_authorities_set, + ); + + // If initial header changes the GRANDPA authorities set, then we need previous authorities + // to verify justification. + let mut authorities_for_verification = initial_authorities_set.clone(); + let scheduled_change = find_grandpa_authorities_scheduled_change(&initial_header); + assert!( + scheduled_change.as_ref().map(|c| c.delay.is_zero()).unwrap_or(true), + "GRANDPA authorities change at {} scheduled to happen in {:?} blocks. We expect\ + regular hange to have zero delay", + initial_header_hash, + scheduled_change.as_ref().map(|c| c.delay), + ); + let schedules_change = scheduled_change.is_some(); + if schedules_change { + authorities_for_verification = + source_authorities_set(&source_client, *initial_header.parent_hash()).await?; + log::trace!( + target: "bridge", + "Selected {} header is scheduling GRANDPA authorities set changes. Using previous set: {:?}", + SourceChain::NAME, + authorities_for_verification, + ); + } + + // Now let's try to guess authorities set id by verifying justification. + let mut initial_authorities_set_id = 0; + let mut min_possible_block_number = SourceChain::BlockNumber::zero(); + let authorities_for_verification = VoterSet::new(authorities_for_verification.clone()) + .ok_or(Error::ReadInvalidAuthorities(SourceChain::NAME, authorities_for_verification))?; + loop { + log::trace!( + target: "bridge", "Trying {} GRANDPA authorities set id: {}", + SourceChain::NAME, + initial_authorities_set_id, + ); + + let is_valid_set_id = verify_justification::( + (initial_header_hash, initial_header_number), + initial_authorities_set_id, + &authorities_for_verification, + &justification, + ) + .is_ok(); + + if is_valid_set_id { + break + } + + initial_authorities_set_id += 1; + min_possible_block_number += One::one(); + if min_possible_block_number > initial_header_number { + // there can't be more authorities set changes than headers => if we have reached + // `initial_block_number` and still have not found correct value of + // `initial_authorities_set_id`, then something else is broken => fail + return Err(Error::GuessInitialAuthorities(SourceChain::NAME, initial_header_number)) + } + } + + Ok(InitializationData { + header: Box::new(initial_header), + authority_list: initial_authorities_set, + set_id: if schedules_change { + initial_authorities_set_id + 1 + } else { + initial_authorities_set_id + }, + is_halted: false, + }) +} + +/// Read header by hash from the source client. +async fn source_header( + source_client: &Client, + header_hash: SourceChain::Hash, +) -> Result::Number>> +{ + source_client + .header_by_hash(header_hash) + .await + .map_err(|err| Error::RetrieveHeader(SourceChain::NAME, header_hash, err)) +} + +/// Read GRANDPA authorities set at given header. +async fn source_authorities_set( + source_client: &Client, + header_hash: SourceChain::Hash, +) -> Result::Number>> +{ + let raw_authorities_set = source_client + .grandpa_authorities_set(header_hash) + .await + .map_err(|err| Error::RetrieveAuthorities(SourceChain::NAME, header_hash, err))?; + GrandpaAuthoritiesSet::decode(&mut &raw_authorities_set[..]) + .map_err(|err| Error::DecodeAuthorities(SourceChain::NAME, header_hash, err)) +} diff --git a/relays/lib-substrate-relay/src/helpers.rs b/relays/lib-substrate-relay/src/helpers.rs new file mode 100644 index 000000000000..f95a8e0aba3a --- /dev/null +++ b/relays/lib-substrate-relay/src/helpers.rs @@ -0,0 +1,29 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate relay helpers + +use relay_utils::metrics::{FloatJsonValueMetric, PrometheusError}; + +/// Creates standalone token price metric. +pub fn token_price_metric(token_id: &str) -> Result { + FloatJsonValueMetric::new( + format!("https://api.coingecko.com/api/v3/simple/price?ids={}&vs_currencies=btc", token_id), + format!("$.{}.btc", token_id), + format!("{}_to_base_conversion_rate", token_id.replace("-", "_")), + format!("Rate used to convert from {} to some BASE tokens", token_id.to_uppercase()), + ) +} diff --git a/relays/lib-substrate-relay/src/lib.rs b/relays/lib-substrate-relay/src/lib.rs new file mode 100644 index 000000000000..cc066bf501ac --- /dev/null +++ b/relays/lib-substrate-relay/src/lib.rs @@ -0,0 +1,41 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! The library of substrate relay. contains some public codes to provide to substrate relay. + +#![warn(missing_docs)] + +use std::time::Duration; + +pub mod conversion_rate_update; +pub mod error; +pub mod finality_pipeline; +pub mod finality_target; +pub mod headers_initialize; +pub mod helpers; +pub mod messages_lane; +pub mod messages_source; +pub mod messages_target; +pub mod on_demand_headers; + +/// Default relay loop stall timeout. If transactions generated by relay are immortal, then +/// this timeout is used. +/// +/// There are no any strict requirements on block time in Substrate. But we assume here that all +/// Substrate-based chains will be designed to produce relatively fast (compared to the slowest +/// blockchains) blocks. So 1 hour seems to be a good guess for (even congested) chains to mine +/// transaction, or remove it from the pool. +pub const STALL_TIMEOUT: Duration = Duration::from_secs(60 * 60); diff --git a/relays/lib-substrate-relay/src/messages_lane.rs b/relays/lib-substrate-relay/src/messages_lane.rs new file mode 100644 index 000000000000..6cadb64754a5 --- /dev/null +++ b/relays/lib-substrate-relay/src/messages_lane.rs @@ -0,0 +1,426 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Tools for supporting message lanes between two Substrate-based chains. + +use crate::{ + messages_source::SubstrateMessagesProof, messages_target::SubstrateMessagesReceivingProof, + on_demand_headers::OnDemandHeadersRelay, +}; + +use async_trait::async_trait; +use bp_messages::{LaneId, MessageNonce}; +use bp_runtime::{AccountIdOf, IndexOf}; +use frame_support::weights::Weight; +use messages_relay::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + relay_strategy::RelayStrategy, +}; +use relay_substrate_client::{ + metrics::{FloatStorageValueMetric, StorageProofOverheadMetric}, + BlockNumberOf, Chain, Client, HashOf, +}; +use relay_utils::{ + metrics::{ + FloatJsonValueMetric, GlobalMetrics, MetricsParams, PrometheusError, StandaloneMetric, + }, + BlockNumberBase, +}; +use sp_core::{storage::StorageKey, Bytes}; +use sp_runtime::FixedU128; +use std::ops::RangeInclusive; + +/// Substrate <-> Substrate messages relay parameters. +pub struct MessagesRelayParams { + /// Messages source client. + pub source_client: Client, + /// Sign parameters for messages source chain. + pub source_sign: SS, + /// Mortality of source transactions. + pub source_transactions_mortality: Option, + /// Messages target client. + pub target_client: Client, + /// Sign parameters for messages target chain. + pub target_sign: TS, + /// Mortality of target transactions. + pub target_transactions_mortality: Option, + /// Optional on-demand source to target headers relay. + pub source_to_target_headers_relay: Option>, + /// Optional on-demand target to source headers relay. + pub target_to_source_headers_relay: Option>, + /// Identifier of lane that needs to be served. + pub lane_id: LaneId, + /// Metrics parameters. + pub metrics_params: MetricsParams, + /// Pre-registered standalone metrics. + pub standalone_metrics: Option>, + /// Relay strategy + pub relay_strategy: Strategy, +} + +/// Message sync pipeline for Substrate <-> Substrate relays. +#[async_trait] +pub trait SubstrateMessageLane: 'static + Clone + Send + Sync { + /// Underlying generic message lane. + type MessageLane: MessageLane; + + /// Name of the runtime method that returns dispatch weight of outbound messages at the source + /// chain. + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str; + /// Name of the runtime method that returns latest generated nonce at the source chain. + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str; + /// Name of the runtime method that returns latest received (confirmed) nonce at the the source + /// chain. + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str; + + /// Name of the runtime method that returns latest received nonce at the target chain. + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str; + /// Name of the runtime method that returns the latest confirmed (reward-paid) nonce at the + /// target chain. + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str; + /// Number of the runtime method that returns state of "unrewarded relayers" set at the target + /// chain. + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str; + + /// Name of the runtime method that returns id of best finalized source header at target chain. + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str; + /// Name of the runtime method that returns id of best finalized target header at source chain. + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str; + + /// Name of the messages pallet as it is declared in the `construct_runtime!()` at source chain. + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str; + /// Name of the messages pallet as it is declared in the `construct_runtime!()` at target chain. + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str; + + /// Extra weight of the delivery transaction at the target chain, that is paid to cover + /// dispatch fee payment. + /// + /// If dispatch fee is paid at the source chain, then this weight is refunded by the + /// delivery transaction. + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight; + + /// Source chain. + type SourceChain: Chain; + /// Target chain. + type TargetChain: Chain; + + /// Returns id of account that we're using to sign transactions at target chain (messages + /// proof). + fn target_transactions_author(&self) -> AccountIdOf; + + /// Make messages delivery transaction. + fn make_messages_delivery_transaction( + &self, + best_block_id: TargetHeaderIdOf, + transaction_nonce: IndexOf, + generated_at_header: SourceHeaderIdOf, + nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Bytes; + + /// Returns id of account that we're using to sign transactions at source chain (delivery + /// proof). + fn source_transactions_author(&self) -> AccountIdOf; + + /// Make messages receiving proof transaction. + fn make_messages_receiving_proof_transaction( + &self, + best_block_id: SourceHeaderIdOf, + transaction_nonce: IndexOf, + generated_at_header: TargetHeaderIdOf, + proof: ::MessagesReceivingProof, + ) -> Bytes; +} + +/// Substrate-to-Substrate message lane. +#[derive(Debug)] +pub struct SubstrateMessageLaneToSubstrate< + Source: Chain, + SourceSignParams, + Target: Chain, + TargetSignParams, +> { + /// Client for the source Substrate chain. + pub source_client: Client, + /// Parameters required to sign transactions for source chain. + pub source_sign: SourceSignParams, + /// Source transactions mortality. + pub source_transactions_mortality: Option, + /// Client for the target Substrate chain. + pub target_client: Client, + /// Parameters required to sign transactions for target chain. + pub target_sign: TargetSignParams, + /// Target transactions mortality. + pub target_transactions_mortality: Option, + /// Account id of relayer at the source chain. + pub relayer_id_at_source: Source::AccountId, +} + +impl Clone + for SubstrateMessageLaneToSubstrate +{ + fn clone(&self) -> Self { + Self { + source_client: self.source_client.clone(), + source_sign: self.source_sign.clone(), + source_transactions_mortality: self.source_transactions_mortality, + target_client: self.target_client.clone(), + target_sign: self.target_sign.clone(), + target_transactions_mortality: self.target_transactions_mortality, + relayer_id_at_source: self.relayer_id_at_source.clone(), + } + } +} + +impl MessageLane + for SubstrateMessageLaneToSubstrate +where + SourceSignParams: Clone + Send + Sync + 'static, + TargetSignParams: Clone + Send + Sync + 'static, + BlockNumberOf: BlockNumberBase, + BlockNumberOf: BlockNumberBase, +{ + const SOURCE_NAME: &'static str = Source::NAME; + const TARGET_NAME: &'static str = Target::NAME; + + type MessagesProof = SubstrateMessagesProof; + type MessagesReceivingProof = SubstrateMessagesReceivingProof; + + type SourceChainBalance = Source::Balance; + type SourceHeaderNumber = BlockNumberOf; + type SourceHeaderHash = HashOf; + + type TargetHeaderNumber = BlockNumberOf; + type TargetHeaderHash = HashOf; +} + +/// Returns maximal number of messages and their maximal cumulative dispatch weight, based +/// on given chain parameters. +pub fn select_delivery_transaction_limits( + max_extrinsic_weight: Weight, + max_unconfirmed_messages_at_inbound_lane: MessageNonce, +) -> (MessageNonce, Weight) { + // We may try to guess accurate value, based on maximal number of messages and per-message + // weight overhead, but the relay loop isn't using this info in a super-accurate way anyway. + // So just a rough guess: let's say 1/3 of max tx weight is for tx itself and the rest is + // for messages dispatch. + + // Another thing to keep in mind is that our runtimes (when this code was written) accept + // messages with dispatch weight <= max_extrinsic_weight/2. So we can't reserve less than + // that for dispatch. + + let weight_for_delivery_tx = max_extrinsic_weight / 3; + let weight_for_messages_dispatch = max_extrinsic_weight - weight_for_delivery_tx; + + let delivery_tx_base_weight = W::receive_messages_proof_overhead() + + W::receive_messages_proof_outbound_lane_state_overhead(); + let delivery_tx_weight_rest = weight_for_delivery_tx - delivery_tx_base_weight; + let max_number_of_messages = std::cmp::min( + delivery_tx_weight_rest / W::receive_messages_proof_messages_overhead(1), + max_unconfirmed_messages_at_inbound_lane, + ); + + assert!( + max_number_of_messages > 0, + "Relay should fit at least one message in every delivery transaction", + ); + assert!( + weight_for_messages_dispatch >= max_extrinsic_weight / 2, + "Relay shall be able to deliver messages with dispatch weight = max_extrinsic_weight / 2", + ); + + (max_number_of_messages, weight_for_messages_dispatch) +} + +/// Shared references to the standalone metrics of the message lane relay loop. +#[derive(Debug, Clone)] +pub struct StandaloneMessagesMetrics { + /// Global metrics. + pub global: GlobalMetrics, + /// Storage chain proof overhead metric. + pub source_storage_proof_overhead: StorageProofOverheadMetric, + /// Target chain proof overhead metric. + pub target_storage_proof_overhead: StorageProofOverheadMetric, + /// Source tokens to base conversion rate metric. + pub source_to_base_conversion_rate: Option, + /// Target tokens to base conversion rate metric. + pub target_to_base_conversion_rate: Option, + /// Source tokens to target tokens conversion rate metric. This rate is stored by the target + /// chain. + pub source_to_target_conversion_rate: + Option>, + /// Target tokens to source tokens conversion rate metric. This rate is stored by the source + /// chain. + pub target_to_source_conversion_rate: + Option>, +} + +impl StandaloneMessagesMetrics { + /// Swap source and target sides. + pub fn reverse(self) -> StandaloneMessagesMetrics { + StandaloneMessagesMetrics { + global: self.global, + source_storage_proof_overhead: self.target_storage_proof_overhead, + target_storage_proof_overhead: self.source_storage_proof_overhead, + source_to_base_conversion_rate: self.target_to_base_conversion_rate, + target_to_base_conversion_rate: self.source_to_base_conversion_rate, + source_to_target_conversion_rate: self.target_to_source_conversion_rate, + target_to_source_conversion_rate: self.source_to_target_conversion_rate, + } + } + + /// Register all metrics in the registry. + pub fn register_and_spawn( + self, + metrics: MetricsParams, + ) -> Result { + self.global.register_and_spawn(&metrics.registry)?; + self.source_storage_proof_overhead.register_and_spawn(&metrics.registry)?; + self.target_storage_proof_overhead.register_and_spawn(&metrics.registry)?; + if let Some(m) = self.source_to_base_conversion_rate { + m.register_and_spawn(&metrics.registry)?; + } + if let Some(m) = self.target_to_base_conversion_rate { + m.register_and_spawn(&metrics.registry)?; + } + if let Some(m) = self.target_to_source_conversion_rate { + m.register_and_spawn(&metrics.registry)?; + } + Ok(metrics) + } + + /// Return conversion rate from target to source tokens. + pub async fn target_to_source_conversion_rate(&self) -> Option { + Self::compute_target_to_source_conversion_rate( + *self.target_to_base_conversion_rate.as_ref()?.shared_value_ref().read().await, + *self.source_to_base_conversion_rate.as_ref()?.shared_value_ref().read().await, + ) + } + + /// Return conversion rate from target to source tokens, given conversion rates from + /// target/source tokens to some base token. + fn compute_target_to_source_conversion_rate( + target_to_base_conversion_rate: Option, + source_to_base_conversion_rate: Option, + ) -> Option { + Some(source_to_base_conversion_rate? / target_to_base_conversion_rate?) + } +} + +/// Create standalone metrics for the message lane relay loop. +/// +/// All metrics returned by this function are exposed by loops that are serving given lane (`P`) +/// and by loops that are serving reverse lane (`P` with swapped `TargetChain` and `SourceChain`). +pub fn standalone_metrics( + source_client: Client, + target_client: Client, + source_chain_token_id: Option<&str>, + target_chain_token_id: Option<&str>, + source_to_target_conversion_rate_params: Option<(StorageKey, FixedU128)>, + target_to_source_conversion_rate_params: Option<(StorageKey, FixedU128)>, +) -> anyhow::Result> { + Ok(StandaloneMessagesMetrics { + global: GlobalMetrics::new()?, + source_storage_proof_overhead: StorageProofOverheadMetric::new( + source_client.clone(), + format!("{}_storage_proof_overhead", SC::NAME.to_lowercase()), + format!("{} storage proof overhead", SC::NAME), + )?, + target_storage_proof_overhead: StorageProofOverheadMetric::new( + target_client.clone(), + format!("{}_storage_proof_overhead", TC::NAME.to_lowercase()), + format!("{} storage proof overhead", TC::NAME), + )?, + source_to_base_conversion_rate: source_chain_token_id + .map(|source_chain_token_id| { + crate::helpers::token_price_metric(source_chain_token_id).map(Some) + }) + .unwrap_or(Ok(None))?, + target_to_base_conversion_rate: target_chain_token_id + .map(|target_chain_token_id| { + crate::helpers::token_price_metric(target_chain_token_id).map(Some) + }) + .unwrap_or(Ok(None))?, + source_to_target_conversion_rate: source_to_target_conversion_rate_params + .map(|(key, rate)| { + FloatStorageValueMetric::<_, sp_runtime::FixedU128>::new( + target_client, + key, + Some(rate), + format!("{}_{}_to_{}_conversion_rate", TC::NAME, SC::NAME, TC::NAME), + format!( + "{} to {} tokens conversion rate (used by {})", + SC::NAME, + TC::NAME, + TC::NAME + ), + ) + .map(Some) + }) + .unwrap_or(Ok(None))?, + target_to_source_conversion_rate: target_to_source_conversion_rate_params + .map(|(key, rate)| { + FloatStorageValueMetric::<_, sp_runtime::FixedU128>::new( + source_client, + key, + Some(rate), + format!("{}_{}_to_{}_conversion_rate", SC::NAME, TC::NAME, SC::NAME), + format!( + "{} to {} tokens conversion rate (used by {})", + TC::NAME, + SC::NAME, + SC::NAME + ), + ) + .map(Some) + }) + .unwrap_or(Ok(None))?, + }) +} + +#[cfg(test)] +mod tests { + use super::*; + + type RialtoToMillauMessagesWeights = + pallet_bridge_messages::weights::RialtoWeight; + + #[test] + fn select_delivery_transaction_limits_works() { + let (max_count, max_weight) = + select_delivery_transaction_limits::( + bp_millau::max_extrinsic_weight(), + bp_millau::MAX_UNREWARDED_RELAYER_ENTRIES_AT_INBOUND_LANE, + ); + assert_eq!( + (max_count, max_weight), + // We don't actually care about these values, so feel free to update them whenever test + // fails. The only thing to do before that is to ensure that new values looks sane: + // i.e. weight reserved for messages dispatch allows dispatch of non-trivial messages. + // + // Any significant change in this values should attract additional attention. + (782, 216_583_333_334), + ); + } + + #[async_std::test] + async fn target_to_source_conversion_rate_works() { + assert_eq!( + StandaloneMessagesMetrics::::compute_target_to_source_conversion_rate(Some(183.15), Some(12.32)), + Some(12.32 / 183.15), + ); + } +} diff --git a/relays/lib-substrate-relay/src/messages_source.rs b/relays/lib-substrate-relay/src/messages_source.rs new file mode 100644 index 000000000000..5f066296e7e7 --- /dev/null +++ b/relays/lib-substrate-relay/src/messages_source.rs @@ -0,0 +1,556 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate client as Substrate messages source. The chain we connect to should have +//! runtime that implements `HeaderApi` to allow bridging with +//! chain. + +use crate::{ + messages_lane::SubstrateMessageLane, messages_target::SubstrateMessagesReceivingProof, + on_demand_headers::OnDemandHeadersRelay, +}; + +use async_trait::async_trait; +use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState}; +use bridge_runtime_common::messages::{ + source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof, +}; +use codec::{Decode, Encode}; +use frame_support::weights::Weight; +use messages_relay::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + message_lane_loop::{ + ClientState, MessageDetails, MessageDetailsMap, MessageProofParameters, SourceClient, + SourceClientState, + }, +}; +use num_traits::{Bounded, Zero}; +use relay_substrate_client::{ + BalanceOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf, HeaderIdOf, HeaderOf, + IndexOf, +}; +use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId}; +use sp_core::Bytes; +use sp_runtime::{ + traits::{AtLeast32BitUnsigned, Header as HeaderT}, + DeserializeOwned, +}; +use std::ops::RangeInclusive; + +/// Intermediate message proof returned by the source Substrate node. Includes everything +/// required to submit to the target node: cumulative dispatch weight of bundled messages and +/// the proof itself. +pub type SubstrateMessagesProof = (Weight, FromBridgedChainMessagesProof>); + +/// Substrate client as Substrate messages source. +pub struct SubstrateMessagesSource { + client: Client, + lane: P, + lane_id: LaneId, + target_to_source_headers_relay: Option>, +} + +impl SubstrateMessagesSource

{ + /// Create new Substrate headers source. + pub fn new( + client: Client, + lane: P, + lane_id: LaneId, + target_to_source_headers_relay: Option>, + ) -> Self { + SubstrateMessagesSource { client, lane, lane_id, target_to_source_headers_relay } + } +} + +impl Clone for SubstrateMessagesSource

{ + fn clone(&self) -> Self { + Self { + client: self.client.clone(), + lane: self.lane.clone(), + lane_id: self.lane_id, + target_to_source_headers_relay: self.target_to_source_headers_relay.clone(), + } + } +} + +#[async_trait] +impl RelayClient for SubstrateMessagesSource

{ + type Error = SubstrateError; + + async fn reconnect(&mut self) -> Result<(), SubstrateError> { + self.client.reconnect().await + } +} + +#[async_trait] +impl

SourceClient for SubstrateMessagesSource

+where + P: SubstrateMessageLane, + P::SourceChain: Chain< + Hash = ::SourceHeaderHash, + BlockNumber = ::SourceHeaderNumber, + Balance = ::SourceChainBalance, + >, + BalanceOf: Decode + Bounded, + IndexOf: DeserializeOwned, + HashOf: Copy, + BlockNumberOf: BlockNumberBase + Copy, + HeaderOf: DeserializeOwned, + P::TargetChain: Chain< + Hash = ::TargetHeaderHash, + BlockNumber = ::TargetHeaderNumber, + >, + + P::MessageLane: MessageLane< + MessagesProof = SubstrateMessagesProof, + MessagesReceivingProof = SubstrateMessagesReceivingProof, + >, + ::TargetHeaderNumber: Decode, + ::TargetHeaderHash: Decode, + ::SourceChainBalance: AtLeast32BitUnsigned, +{ + async fn state(&self) -> Result, SubstrateError> { + // we can't continue to deliver confirmations if source node is out of sync, because + // it may have already received confirmations that we're going to deliver + self.client.ensure_synced().await?; + + read_client_state::< + _, + ::TargetHeaderHash, + ::TargetHeaderNumber, + >(&self.client, P::BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE) + .await + } + + async fn latest_generated_nonce( + &self, + id: SourceHeaderIdOf, + ) -> Result<(SourceHeaderIdOf, MessageNonce), SubstrateError> { + let encoded_response = self + .client + .state_call( + P::OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD.into(), + Bytes(self.lane_id.encode()), + Some(id.1), + ) + .await?; + let latest_generated_nonce: MessageNonce = Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + Ok((id, latest_generated_nonce)) + } + + async fn latest_confirmed_received_nonce( + &self, + id: SourceHeaderIdOf, + ) -> Result<(SourceHeaderIdOf, MessageNonce), SubstrateError> { + let encoded_response = self + .client + .state_call( + P::OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD.into(), + Bytes(self.lane_id.encode()), + Some(id.1), + ) + .await?; + let latest_received_nonce: MessageNonce = Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + Ok((id, latest_received_nonce)) + } + + async fn generated_message_details( + &self, + id: SourceHeaderIdOf, + nonces: RangeInclusive, + ) -> Result< + MessageDetailsMap<::SourceChainBalance>, + SubstrateError, + > { + let encoded_response = self + .client + .state_call( + P::OUTBOUND_LANE_MESSAGE_DETAILS_METHOD.into(), + Bytes((self.lane_id, nonces.start(), nonces.end()).encode()), + Some(id.1), + ) + .await?; + + make_message_details_map::( + Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?, + nonces, + ) + } + + async fn prove_messages( + &self, + id: SourceHeaderIdOf, + nonces: RangeInclusive, + proof_parameters: MessageProofParameters, + ) -> Result< + ( + SourceHeaderIdOf, + RangeInclusive, + ::MessagesProof, + ), + SubstrateError, + > { + let mut storage_keys = + Vec::with_capacity(nonces.end().saturating_sub(*nonces.start()) as usize + 1); + let mut message_nonce = *nonces.start(); + while message_nonce <= *nonces.end() { + let message_key = pallet_bridge_messages::storage_keys::message_key( + P::MESSAGE_PALLET_NAME_AT_SOURCE, + &self.lane_id, + message_nonce, + ); + storage_keys.push(message_key); + message_nonce += 1; + } + if proof_parameters.outbound_state_proof_required { + storage_keys.push(pallet_bridge_messages::storage_keys::outbound_lane_data_key( + P::MESSAGE_PALLET_NAME_AT_SOURCE, + &self.lane_id, + )); + } + + let proof = self.client.prove_storage(storage_keys, id.1).await?.iter_nodes().collect(); + let proof = FromBridgedChainMessagesProof { + bridged_header_hash: id.1, + storage_proof: proof, + lane: self.lane_id, + nonces_start: *nonces.start(), + nonces_end: *nonces.end(), + }; + Ok((id, nonces, (proof_parameters.dispatch_weight, proof))) + } + + async fn submit_messages_receiving_proof( + &self, + generated_at_block: TargetHeaderIdOf, + proof: ::MessagesReceivingProof, + ) -> Result<(), SubstrateError> { + let lane = self.lane.clone(); + self.client + .submit_signed_extrinsic( + self.lane.source_transactions_author(), + move |best_block_id, transaction_nonce| { + lane.make_messages_receiving_proof_transaction( + best_block_id, + transaction_nonce, + generated_at_block, + proof, + ) + }, + ) + .await?; + Ok(()) + } + + async fn require_target_header_on_source(&self, id: TargetHeaderIdOf) { + if let Some(ref target_to_source_headers_relay) = self.target_to_source_headers_relay { + target_to_source_headers_relay.require_finalized_header(id).await; + } + } + + async fn estimate_confirmation_transaction( + &self, + ) -> ::SourceChainBalance { + self.client + .estimate_extrinsic_fee(self.lane.make_messages_receiving_proof_transaction( + HeaderId(Default::default(), Default::default()), + Zero::zero(), + HeaderId(Default::default(), Default::default()), + prepare_dummy_messages_delivery_proof::(), + )) + .await + .map(|fee| fee.inclusion_fee()) + .unwrap_or_else(|_| BalanceOf::::max_value()) + } +} + +/// Prepare 'dummy' messages delivery proof that will compose the delivery confirmation transaction. +/// +/// We don't care about proof actually being the valid proof, because its validity doesn't +/// affect the call weight - we only care about its size. +fn prepare_dummy_messages_delivery_proof( +) -> SubstrateMessagesReceivingProof { + let single_message_confirmation_size = bp_messages::InboundLaneData::<()>::encoded_size_hint( + SC::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE, + 1, + 1, + ) + .unwrap_or(u32::MAX); + let proof_size = TC::STORAGE_PROOF_OVERHEAD.saturating_add(single_message_confirmation_size); + ( + UnrewardedRelayersState { + unrewarded_relayer_entries: 1, + messages_in_oldest_entry: 1, + total_messages: 1, + }, + FromBridgedChainMessagesDeliveryProof { + bridged_header_hash: Default::default(), + storage_proof: vec![vec![0; proof_size as usize]], + lane: Default::default(), + }, + ) +} + +/// Read best blocks from given client. +/// +/// This function assumes that the chain that is followed by the `self_client` has +/// bridge GRANDPA pallet deployed and it provides `best_finalized_header_id_method_name` +/// runtime API to read the best finalized Bridged chain header. +pub async fn read_client_state( + self_client: &Client, + best_finalized_header_id_method_name: &str, +) -> Result< + ClientState, HeaderId>, + SubstrateError, +> +where + SelfChain: Chain, + SelfChain::Header: DeserializeOwned, + SelfChain::Index: DeserializeOwned, + BridgedHeaderHash: Decode, + BridgedHeaderNumber: Decode, +{ + // let's read our state first: we need best finalized header hash on **this** chain + let self_best_finalized_header_hash = self_client.best_finalized_header_hash().await?; + let self_best_finalized_header = + self_client.header_by_hash(self_best_finalized_header_hash).await?; + let self_best_finalized_id = + HeaderId(*self_best_finalized_header.number(), self_best_finalized_header_hash); + + // now let's read our best header on **this** chain + let self_best_header = self_client.best_header().await?; + let self_best_hash = self_best_header.hash(); + let self_best_id = HeaderId(*self_best_header.number(), self_best_hash); + + // now let's read id of best finalized peer header at our best finalized block + let encoded_best_finalized_peer_on_self = self_client + .state_call( + best_finalized_header_id_method_name.into(), + Bytes(Vec::new()), + Some(self_best_hash), + ) + .await?; + let decoded_best_finalized_peer_on_self: (BridgedHeaderNumber, BridgedHeaderHash) = + Decode::decode(&mut &encoded_best_finalized_peer_on_self.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + let peer_on_self_best_finalized_id = + HeaderId(decoded_best_finalized_peer_on_self.0, decoded_best_finalized_peer_on_self.1); + + Ok(ClientState { + best_self: self_best_id, + best_finalized_self: self_best_finalized_id, + best_finalized_peer_at_best_self: peer_on_self_best_finalized_id, + }) +} + +fn make_message_details_map( + weights: Vec>, + nonces: RangeInclusive, +) -> Result, SubstrateError> { + let make_missing_nonce_error = |expected_nonce| { + Err(SubstrateError::Custom(format!( + "Missing nonce {} in message_details call result. Expected all nonces from {:?}", + expected_nonce, nonces, + ))) + }; + + let mut weights_map = MessageDetailsMap::new(); + + // this is actually prevented by external logic + if nonces.is_empty() { + return Ok(weights_map) + } + + // check if last nonce is missing - loop below is not checking this + let last_nonce_is_missing = + weights.last().map(|details| details.nonce != *nonces.end()).unwrap_or(true); + if last_nonce_is_missing { + return make_missing_nonce_error(*nonces.end()) + } + + let mut expected_nonce = *nonces.start(); + let mut is_at_head = true; + + for details in weights { + match (details.nonce == expected_nonce, is_at_head) { + (true, _) => (), + (false, true) => { + // this may happen if some messages were already pruned from the source node + // + // this is not critical error and will be auto-resolved by messages lane (and target + // node) + log::info!( + target: "bridge", + "Some messages are missing from the {} node: {:?}. Target node may be out of sync?", + C::NAME, + expected_nonce..details.nonce, + ); + }, + (false, false) => { + // some nonces are missing from the middle/tail of the range + // + // this is critical error, because we can't miss any nonces + return make_missing_nonce_error(expected_nonce) + }, + } + + weights_map.insert( + details.nonce, + MessageDetails { + dispatch_weight: details.dispatch_weight, + size: details.size as _, + reward: details.delivery_and_dispatch_fee, + dispatch_fee_payment: details.dispatch_fee_payment, + }, + ); + expected_nonce = details.nonce + 1; + is_at_head = false; + } + + Ok(weights_map) +} + +#[cfg(test)] +mod tests { + use super::*; + use bp_runtime::messages::DispatchFeePayment; + use relay_rococo_client::Rococo; + use relay_wococo_client::Wococo; + + fn message_details_from_rpc( + nonces: RangeInclusive, + ) -> Vec> { + nonces + .into_iter() + .map(|nonce| bp_messages::MessageDetails { + nonce, + dispatch_weight: 0, + size: 0, + delivery_and_dispatch_fee: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + }) + .collect() + } + + #[test] + fn make_message_details_map_succeeds_if_no_messages_are_missing() { + assert_eq!( + make_message_details_map::(message_details_from_rpc(1..=3), 1..=3,).unwrap(), + vec![ + ( + 1, + MessageDetails { + dispatch_weight: 0, + size: 0, + reward: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + } + ), + ( + 2, + MessageDetails { + dispatch_weight: 0, + size: 0, + reward: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + } + ), + ( + 3, + MessageDetails { + dispatch_weight: 0, + size: 0, + reward: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + } + ), + ] + .into_iter() + .collect(), + ); + } + + #[test] + fn make_message_details_map_succeeds_if_head_messages_are_missing() { + assert_eq!( + make_message_details_map::(message_details_from_rpc(2..=3), 1..=3,).unwrap(), + vec![ + ( + 2, + MessageDetails { + dispatch_weight: 0, + size: 0, + reward: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + } + ), + ( + 3, + MessageDetails { + dispatch_weight: 0, + size: 0, + reward: 0, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + } + ), + ] + .into_iter() + .collect(), + ); + } + + #[test] + fn make_message_details_map_fails_if_mid_messages_are_missing() { + let mut message_details_from_rpc = message_details_from_rpc(1..=3); + message_details_from_rpc.remove(1); + assert!(matches!( + make_message_details_map::(message_details_from_rpc, 1..=3,), + Err(SubstrateError::Custom(_)) + )); + } + + #[test] + fn make_message_details_map_fails_if_tail_messages_are_missing() { + assert!(matches!( + make_message_details_map::(message_details_from_rpc(1..=2), 1..=3,), + Err(SubstrateError::Custom(_)) + )); + } + + #[test] + fn make_message_details_map_fails_if_all_messages_are_missing() { + assert!(matches!( + make_message_details_map::(vec![], 1..=3), + Err(SubstrateError::Custom(_)) + )); + } + + #[test] + fn prepare_dummy_messages_delivery_proof_works() { + let expected_minimal_size = + Wococo::MAXIMAL_ENCODED_ACCOUNT_ID_SIZE + Rococo::STORAGE_PROOF_OVERHEAD; + let dummy_proof = prepare_dummy_messages_delivery_proof::(); + assert!( + dummy_proof.1.encode().len() as u32 > expected_minimal_size, + "Expected proof size at least {}. Got: {}", + expected_minimal_size, + dummy_proof.1.encode().len(), + ); + } +} diff --git a/relays/lib-substrate-relay/src/messages_target.rs b/relays/lib-substrate-relay/src/messages_target.rs new file mode 100644 index 000000000000..eafc6bd3fc5f --- /dev/null +++ b/relays/lib-substrate-relay/src/messages_target.rs @@ -0,0 +1,566 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Substrate client as Substrate messages target. The chain we connect to should have +//! runtime that implements `HeaderApi` to allow bridging with +//! chain. + +use crate::{ + messages_lane::{StandaloneMessagesMetrics, SubstrateMessageLane}, + messages_source::{read_client_state, SubstrateMessagesProof}, + on_demand_headers::OnDemandHeadersRelay, +}; + +use async_trait::async_trait; +use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState}; + +use bridge_runtime_common::messages::{ + source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof, +}; +use codec::{Decode, Encode}; +use frame_support::weights::{Weight, WeightToFeePolynomial}; +use messages_relay::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + message_lane_loop::{TargetClient, TargetClientState}, +}; +use num_traits::{Bounded, Zero}; +use relay_substrate_client::{ + BalanceOf, BlockNumberOf, Chain, Client, Error as SubstrateError, HashOf, HeaderOf, IndexOf, + WeightToFeeOf, +}; +use relay_utils::{relay_loop::Client as RelayClient, BlockNumberBase, HeaderId}; +use sp_core::Bytes; +use sp_runtime::{traits::Saturating, DeserializeOwned, FixedPointNumber, FixedU128}; +use std::{convert::TryFrom, ops::RangeInclusive}; + +/// Message receiving proof returned by the target Substrate node. +pub type SubstrateMessagesReceivingProof = + (UnrewardedRelayersState, FromBridgedChainMessagesDeliveryProof>); + +/// Substrate client as Substrate messages target. +pub struct SubstrateMessagesTarget { + client: Client, + lane: P, + lane_id: LaneId, + metric_values: StandaloneMessagesMetrics, + source_to_target_headers_relay: Option>, +} + +impl SubstrateMessagesTarget

{ + /// Create new Substrate headers target. + pub fn new( + client: Client, + lane: P, + lane_id: LaneId, + metric_values: StandaloneMessagesMetrics, + source_to_target_headers_relay: Option>, + ) -> Self { + SubstrateMessagesTarget { + client, + lane, + lane_id, + metric_values, + source_to_target_headers_relay, + } + } +} + +impl Clone for SubstrateMessagesTarget

{ + fn clone(&self) -> Self { + Self { + client: self.client.clone(), + lane: self.lane.clone(), + lane_id: self.lane_id, + metric_values: self.metric_values.clone(), + source_to_target_headers_relay: self.source_to_target_headers_relay.clone(), + } + } +} + +#[async_trait] +impl RelayClient for SubstrateMessagesTarget

{ + type Error = SubstrateError; + + async fn reconnect(&mut self) -> Result<(), SubstrateError> { + self.client.reconnect().await + } +} + +#[async_trait] +impl

TargetClient for SubstrateMessagesTarget

+where + P: SubstrateMessageLane, + P::SourceChain: Chain< + Hash = ::SourceHeaderHash, + BlockNumber = ::SourceHeaderNumber, + Balance = ::SourceChainBalance, + >, + BalanceOf: TryFrom> + Bounded, + P::TargetChain: Chain< + Hash = ::TargetHeaderHash, + BlockNumber = ::TargetHeaderNumber, + >, + IndexOf: DeserializeOwned, + HashOf: Copy, + BlockNumberOf: Copy, + HeaderOf: DeserializeOwned, + BlockNumberOf: BlockNumberBase, + P::MessageLane: MessageLane< + MessagesProof = SubstrateMessagesProof, + MessagesReceivingProof = SubstrateMessagesReceivingProof, + >, + ::SourceHeaderNumber: Decode, + ::SourceHeaderHash: Decode, +{ + async fn state(&self) -> Result, SubstrateError> { + // we can't continue to deliver messages if target node is out of sync, because + // it may have already received (some of) messages that we're going to deliver + self.client.ensure_synced().await?; + + read_client_state::< + _, + ::SourceHeaderHash, + ::SourceHeaderNumber, + >(&self.client, P::BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET) + .await + } + + async fn latest_received_nonce( + &self, + id: TargetHeaderIdOf, + ) -> Result<(TargetHeaderIdOf, MessageNonce), SubstrateError> { + let encoded_response = self + .client + .state_call( + P::INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD.into(), + Bytes(self.lane_id.encode()), + Some(id.1), + ) + .await?; + let latest_received_nonce: MessageNonce = Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + Ok((id, latest_received_nonce)) + } + + async fn latest_confirmed_received_nonce( + &self, + id: TargetHeaderIdOf, + ) -> Result<(TargetHeaderIdOf, MessageNonce), SubstrateError> { + let encoded_response = self + .client + .state_call( + P::INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD.into(), + Bytes(self.lane_id.encode()), + Some(id.1), + ) + .await?; + let latest_received_nonce: MessageNonce = Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + Ok((id, latest_received_nonce)) + } + + async fn unrewarded_relayers_state( + &self, + id: TargetHeaderIdOf, + ) -> Result<(TargetHeaderIdOf, UnrewardedRelayersState), SubstrateError> { + let encoded_response = self + .client + .state_call( + P::INBOUND_LANE_UNREWARDED_RELAYERS_STATE.into(), + Bytes(self.lane_id.encode()), + Some(id.1), + ) + .await?; + let unrewarded_relayers_state: UnrewardedRelayersState = + Decode::decode(&mut &encoded_response.0[..]) + .map_err(SubstrateError::ResponseParseFailed)?; + Ok((id, unrewarded_relayers_state)) + } + + async fn prove_messages_receiving( + &self, + id: TargetHeaderIdOf, + ) -> Result< + (TargetHeaderIdOf, ::MessagesReceivingProof), + SubstrateError, + > { + let (id, relayers_state) = self.unrewarded_relayers_state(id).await?; + let inbound_data_key = pallet_bridge_messages::storage_keys::inbound_lane_data_key( + P::MESSAGE_PALLET_NAME_AT_TARGET, + &self.lane_id, + ); + let proof = self + .client + .prove_storage(vec![inbound_data_key], id.1) + .await? + .iter_nodes() + .collect(); + let proof = FromBridgedChainMessagesDeliveryProof { + bridged_header_hash: id.1, + storage_proof: proof, + lane: self.lane_id, + }; + Ok((id, (relayers_state, proof))) + } + + async fn submit_messages_proof( + &self, + generated_at_header: SourceHeaderIdOf, + nonces: RangeInclusive, + proof: ::MessagesProof, + ) -> Result, SubstrateError> { + let lane = self.lane.clone(); + let nonces_clone = nonces.clone(); + self.client + .submit_signed_extrinsic( + self.lane.target_transactions_author(), + move |best_block_id, transaction_nonce| { + lane.make_messages_delivery_transaction( + best_block_id, + transaction_nonce, + generated_at_header, + nonces_clone, + proof, + ) + }, + ) + .await?; + Ok(nonces) + } + + async fn require_source_header_on_target(&self, id: SourceHeaderIdOf) { + if let Some(ref source_to_target_headers_relay) = self.source_to_target_headers_relay { + source_to_target_headers_relay.require_finalized_header(id).await; + } + } + + async fn estimate_delivery_transaction_in_source_tokens( + &self, + nonces: RangeInclusive, + total_prepaid_nonces: MessageNonce, + total_dispatch_weight: Weight, + total_size: u32, + ) -> Result<::SourceChainBalance, SubstrateError> { + let conversion_rate = + self.metric_values.target_to_source_conversion_rate().await.ok_or_else(|| { + SubstrateError::Custom(format!( + "Failed to compute conversion rate from {} to {}", + P::TargetChain::NAME, + P::SourceChain::NAME, + )) + })?; + + // Prepare 'dummy' delivery transaction - we only care about its length and dispatch weight. + let delivery_tx = self.lane.make_messages_delivery_transaction( + HeaderId(Default::default(), Default::default()), + Zero::zero(), + HeaderId(Default::default(), Default::default()), + nonces.clone(), + prepare_dummy_messages_proof::( + nonces.clone(), + total_dispatch_weight, + total_size, + ), + ); + let delivery_tx_fee = self.client.estimate_extrinsic_fee(delivery_tx).await?; + let inclusion_fee_in_target_tokens = delivery_tx_fee.inclusion_fee(); + + // The pre-dispatch cost of delivery transaction includes additional fee to cover dispatch + // fee payment (Currency::transfer in regular deployment). But if message dispatch has + // already been paid at the Source chain, the delivery transaction will refund relayer with + // this additional cost. But `estimate_extrinsic_fee` obviously just returns pre-dispatch + // cost of the transaction. So if transaction delivers prepaid message, then it may happen + // that pre-dispatch cost is larger than reward and `Rational` relayer will refuse to + // deliver this message. + // + // The most obvious solution would be to deduct total weight of dispatch fee payments from + // the `total_dispatch_weight` and use regular `estimate_extrinsic_fee` call. But what if + // `total_dispatch_weight` is less than total dispatch fee payments weight? Weight is + // strictly positive, so we can't use this option. + // + // Instead we'll be directly using `WeightToFee` and `NextFeeMultiplier` of the Target + // chain. This requires more knowledge of the Target chain, but seems there's no better way + // to solve this now. + let expected_refund_in_target_tokens = if total_prepaid_nonces != 0 { + const WEIGHT_DIFFERENCE: Weight = 100; + + let larger_dispatch_weight = total_dispatch_weight.saturating_add(WEIGHT_DIFFERENCE); + let larger_delivery_tx_fee = self + .client + .estimate_extrinsic_fee(self.lane.make_messages_delivery_transaction( + HeaderId(Default::default(), Default::default()), + Zero::zero(), + HeaderId(Default::default(), Default::default()), + nonces.clone(), + prepare_dummy_messages_proof::( + nonces.clone(), + larger_dispatch_weight, + total_size, + ), + )) + .await?; + + compute_prepaid_messages_refund::

( + total_prepaid_nonces, + compute_fee_multiplier::( + delivery_tx_fee.adjusted_weight_fee, + total_dispatch_weight, + larger_delivery_tx_fee.adjusted_weight_fee, + larger_dispatch_weight, + ), + ) + } else { + Zero::zero() + }; + + let delivery_fee_in_source_tokens = + convert_target_tokens_to_source_tokens::( + FixedU128::from_float(conversion_rate), + inclusion_fee_in_target_tokens.saturating_sub(expected_refund_in_target_tokens), + ); + + log::trace!( + target: "bridge", + "Estimated {} -> {} messages delivery transaction.\n\t\ + Total nonces: {:?}\n\t\ + Prepaid messages: {}\n\t\ + Total messages size: {}\n\t\ + Total messages dispatch weight: {}\n\t\ + Inclusion fee (in {1} tokens): {:?}\n\t\ + Expected refund (in {1} tokens): {:?}\n\t\ + {1} -> {0} conversion rate: {:?}\n\t\ + Expected delivery tx fee (in {0} tokens): {:?}", + P::SourceChain::NAME, + P::TargetChain::NAME, + nonces, + total_prepaid_nonces, + total_size, + total_dispatch_weight, + inclusion_fee_in_target_tokens, + expected_refund_in_target_tokens, + conversion_rate, + delivery_fee_in_source_tokens, + ); + + Ok(delivery_fee_in_source_tokens) + } +} + +/// Prepare 'dummy' messages proof that will compose the delivery transaction. +/// +/// We don't care about proof actually being the valid proof, because its validity doesn't +/// affect the call weight - we only care about its size. +fn prepare_dummy_messages_proof( + nonces: RangeInclusive, + total_dispatch_weight: Weight, + total_size: u32, +) -> SubstrateMessagesProof { + ( + total_dispatch_weight, + FromBridgedChainMessagesProof { + bridged_header_hash: Default::default(), + storage_proof: vec![vec![ + 0; + SC::STORAGE_PROOF_OVERHEAD.saturating_add(total_size) as usize + ]], + lane: Default::default(), + nonces_start: *nonces.start(), + nonces_end: *nonces.end(), + }, + ) +} + +/// Given delivery transaction fee in target chain tokens and conversion rate to the source +/// chain tokens, compute transaction cost in source chain tokens. +fn convert_target_tokens_to_source_tokens( + target_to_source_conversion_rate: FixedU128, + target_transaction_fee: TC::Balance, +) -> SC::Balance +where + SC::Balance: TryFrom, +{ + SC::Balance::try_from( + target_to_source_conversion_rate.saturating_mul_int(target_transaction_fee), + ) + .unwrap_or_else(|_| SC::Balance::max_value()) +} + +/// Compute fee multiplier that is used by the chain, given a couple of fees for transactions +/// that are only differ in dispatch weights. +/// +/// This function assumes that standard transaction payment pallet is used by the chain. +/// The only fee component that depends on dispatch weight is the `adjusted_weight_fee`. +/// +/// **WARNING**: this functions will only be accurate if weight-to-fee conversion function +/// is linear. For non-linear polynomials the error will grow with `weight_difference` growth. +/// So better to use smaller differences. +fn compute_fee_multiplier( + smaller_adjusted_weight_fee: BalanceOf, + smaller_tx_weight: Weight, + larger_adjusted_weight_fee: BalanceOf, + larger_tx_weight: Weight, +) -> FixedU128 { + let adjusted_weight_fee_difference = + larger_adjusted_weight_fee.saturating_sub(smaller_adjusted_weight_fee); + let smaller_tx_unadjusted_weight_fee = WeightToFeeOf::::calc(&smaller_tx_weight); + let larger_tx_unadjusted_weight_fee = WeightToFeeOf::::calc(&larger_tx_weight); + FixedU128::saturating_from_rational( + adjusted_weight_fee_difference, + larger_tx_unadjusted_weight_fee.saturating_sub(smaller_tx_unadjusted_weight_fee), + ) +} + +/// Compute fee that will be refunded to the relayer because dispatch of `total_prepaid_nonces` +/// messages has been paid at the source chain. +fn compute_prepaid_messages_refund( + total_prepaid_nonces: MessageNonce, + fee_multiplier: FixedU128, +) -> BalanceOf { + fee_multiplier.saturating_mul_int(WeightToFeeOf::::calc( + &P::PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN.saturating_mul(total_prepaid_nonces), + )) +} + +#[cfg(test)] +mod tests { + use super::*; + use relay_rococo_client::{Rococo, SigningParams as RococoSigningParams}; + use relay_wococo_client::{SigningParams as WococoSigningParams, Wococo}; + + #[derive(Clone)] + struct TestSubstrateMessageLane; + + impl SubstrateMessageLane for TestSubstrateMessageLane { + type MessageLane = crate::messages_lane::SubstrateMessageLaneToSubstrate< + Rococo, + RococoSigningParams, + Wococo, + WococoSigningParams, + >; + + const OUTBOUND_LANE_MESSAGE_DETAILS_METHOD: &'static str = ""; + const OUTBOUND_LANE_LATEST_GENERATED_NONCE_METHOD: &'static str = ""; + const OUTBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = ""; + + const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str = ""; + const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str = ""; + const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str = ""; + + const BEST_FINALIZED_SOURCE_HEADER_ID_AT_TARGET: &'static str = ""; + const BEST_FINALIZED_TARGET_HEADER_ID_AT_SOURCE: &'static str = ""; + + const MESSAGE_PALLET_NAME_AT_SOURCE: &'static str = ""; + const MESSAGE_PALLET_NAME_AT_TARGET: &'static str = ""; + + const PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN: Weight = 100_000; + + type SourceChain = Rococo; + type TargetChain = Wococo; + + fn source_transactions_author(&self) -> bp_rococo::AccountId { + unreachable!() + } + + fn make_messages_receiving_proof_transaction( + &self, + _best_block_id: SourceHeaderIdOf, + _transaction_nonce: IndexOf, + _generated_at_block: TargetHeaderIdOf, + _proof: ::MessagesReceivingProof, + ) -> Bytes { + unreachable!() + } + + fn target_transactions_author(&self) -> bp_wococo::AccountId { + unreachable!() + } + + fn make_messages_delivery_transaction( + &self, + _best_block_id: TargetHeaderIdOf, + _transaction_nonce: IndexOf, + _generated_at_header: SourceHeaderIdOf, + _nonces: RangeInclusive, + _proof: ::MessagesProof, + ) -> Bytes { + unreachable!() + } + } + + #[test] + fn prepare_dummy_messages_proof_works() { + const DISPATCH_WEIGHT: Weight = 1_000_000; + const SIZE: u32 = 1_000; + let dummy_proof = prepare_dummy_messages_proof::(1..=10, DISPATCH_WEIGHT, SIZE); + assert_eq!(dummy_proof.0, DISPATCH_WEIGHT); + assert!( + dummy_proof.1.encode().len() as u32 > SIZE, + "Expected proof size at least {}. Got: {}", + SIZE, + dummy_proof.1.encode().len(), + ); + } + + #[test] + fn convert_target_tokens_to_source_tokens_works() { + assert_eq!( + convert_target_tokens_to_source_tokens::((150, 100).into(), 1_000), + 1_500 + ); + assert_eq!( + convert_target_tokens_to_source_tokens::((50, 100).into(), 1_000), + 500 + ); + assert_eq!( + convert_target_tokens_to_source_tokens::((100, 100).into(), 1_000), + 1_000 + ); + } + + #[test] + fn compute_fee_multiplier_returns_sane_results() { + let multiplier = FixedU128::saturating_from_rational(1, 1000); + + let smaller_weight = 1_000_000; + let smaller_adjusted_weight_fee = + multiplier.saturating_mul_int(WeightToFeeOf::::calc(&smaller_weight)); + + let larger_weight = smaller_weight + 200_000; + let larger_adjusted_weight_fee = + multiplier.saturating_mul_int(WeightToFeeOf::::calc(&larger_weight)); + + assert_eq!( + compute_fee_multiplier::( + smaller_adjusted_weight_fee, + smaller_weight, + larger_adjusted_weight_fee, + larger_weight, + ), + multiplier, + ); + } + + #[test] + fn compute_prepaid_messages_refund_returns_sane_results() { + assert!( + compute_prepaid_messages_refund::( + 10, + FixedU128::saturating_from_rational(110, 100), + ) > (10 * TestSubstrateMessageLane::PAY_INBOUND_DISPATCH_FEE_WEIGHT_AT_TARGET_CHAIN) + .into() + ); + } +} diff --git a/bridges/relays/bin-substrate/src/on_demand_headers.rs b/relays/lib-substrate-relay/src/on_demand_headers.rs similarity index 77% rename from bridges/relays/bin-substrate/src/on_demand_headers.rs rename to relays/lib-substrate-relay/src/on_demand_headers.rs index 58ef268a29f7..ee141866eb97 100644 --- a/bridges/relays/bin-substrate/src/on_demand_headers.rs +++ b/relays/lib-substrate-relay/src/on_demand_headers.rs @@ -16,32 +16,38 @@ //! On-demand Substrate -> Substrate headers relay. -use crate::finality_pipeline::{ - SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, RECENT_FINALITY_PROOFS_LIMIT, STALL_TIMEOUT, -}; -use crate::finality_target::SubstrateFinalityTarget; +use std::fmt::Debug; use async_std::sync::{Arc, Mutex}; -use bp_header_chain::justification::GrandpaJustification; +use futures::{select, FutureExt}; +use num_traits::{CheckedSub, One, Zero}; + use finality_relay::{ FinalitySyncParams, FinalitySyncPipeline, SourceClient as FinalitySourceClient, SourceHeader, TargetClient as FinalityTargetClient, }; -use futures::{select, FutureExt}; -use num_traits::{CheckedSub, One, Zero}; use relay_substrate_client::{ finality_source::{FinalitySource as SubstrateFinalitySource, RequiredHeaderNumberRef}, - BlockNumberOf, Chain, Client, HashOf, HeaderIdOf, SyncHeader, + Chain, Client, HeaderIdOf, SyncHeader, }; use relay_utils::{ - metrics::MetricsParams, relay_loop::Client as RelayClient, BlockNumberBase, FailedClient, MaybeConnectionError, + metrics::MetricsParams, relay_loop::Client as RelayClient, BlockNumberBase, FailedClient, + MaybeConnectionError, +}; + +use crate::{ + finality_pipeline::{ + SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, RECENT_FINALITY_PROOFS_LIMIT, + }, + finality_target::SubstrateFinalityTarget, + STALL_TIMEOUT, }; -use std::fmt::Debug; /// On-demand Substrate <-> Substrate headers relay. /// -/// This relay may be requested to sync more headers, whenever some other relay (e.g. messages relay) needs -/// it to continue its regular work. When enough headers are relayed, on-demand stops syncing headers. +/// This relay may be requested to sync more headers, whenever some other relay (e.g. messages +/// relay) needs it to continue its regular work. When enough headers are relayed, on-demand stops +/// syncing headers. #[derive(Clone)] pub struct OnDemandHeadersRelay { /// Relay task name. @@ -52,11 +58,13 @@ pub struct OnDemandHeadersRelay { impl OnDemandHeadersRelay { /// Create new on-demand headers relay. - pub fn new( + pub fn new( source_client: Client, target_client: Client, - pipeline: SubstrateFinalityToSubstrate, + target_transactions_mortality: Option, + pipeline: P, maximal_headers_difference: SourceChain::BlockNumber, + only_mandatory_headers: bool, ) -> Self where SourceChain: Chain + Debug, @@ -64,15 +72,14 @@ impl OnDemandHeadersRelay { TargetChain: Chain + Debug, TargetChain::BlockNumber: BlockNumberBase, TargetSign: Clone + Send + Sync + 'static, - SubstrateFinalityToSubstrate: SubstrateFinalitySyncPipeline< - Hash = HashOf, - Number = BlockNumberOf, - Header = SyncHeader, - FinalityProof = GrandpaJustification, + P: SubstrateFinalitySyncPipeline< + FinalitySyncPipeline = SubstrateFinalityToSubstrate< + SourceChain, + TargetChain, + TargetSign, + >, TargetChain = TargetChain, >, - SubstrateFinalityTarget>: - FinalityTargetClient>, { let required_header_number = Arc::new(Mutex::new(Zero::zero())); let this = OnDemandHeadersRelay { @@ -83,8 +90,10 @@ impl OnDemandHeadersRelay { background_task( source_client, target_client, + target_transactions_mortality, pipeline, maximal_headers_difference, + only_mandatory_headers, required_header_number, ) .await; @@ -111,11 +120,13 @@ impl OnDemandHeadersRelay { } /// Background task that is responsible for starting headers relay. -async fn background_task( +async fn background_task( source_client: Client, target_client: Client, - pipeline: SubstrateFinalityToSubstrate, + target_transactions_mortality: Option, + pipeline: P, maximal_headers_difference: SourceChain::BlockNumber, + only_mandatory_headers: bool, required_header_number: RequiredHeaderNumberRef, ) where SourceChain: Chain + Debug, @@ -123,22 +134,21 @@ async fn background_task( TargetChain: Chain + Debug, TargetChain::BlockNumber: BlockNumberBase, TargetSign: Clone + Send + Sync + 'static, - SubstrateFinalityToSubstrate: SubstrateFinalitySyncPipeline< - Hash = HashOf, - Number = BlockNumberOf, - Header = SyncHeader, - FinalityProof = GrandpaJustification, + P: SubstrateFinalitySyncPipeline< + FinalitySyncPipeline = SubstrateFinalityToSubstrate, TargetChain = TargetChain, >, - SubstrateFinalityTarget>: - FinalityTargetClient>, { let relay_task_name = on_demand_headers_relay_name::(); let mut finality_source = SubstrateFinalitySource::< _, SubstrateFinalityToSubstrate, >::new(source_client.clone(), Some(required_header_number.clone())); - let mut finality_target = SubstrateFinalityTarget::new(target_client.clone(), pipeline.clone()); + let mut finality_target = SubstrateFinalityTarget::new( + target_client.clone(), + pipeline.clone(), + target_transactions_mortality, + ); let mut latest_non_mandatory_at_source = Zero::zero(); let mut restart_relay = true; @@ -165,12 +175,16 @@ async fn background_task( &mut finality_target, ) .await; - continue; + continue } // read best finalized source header number from target - let best_finalized_source_header_at_target = - best_finalized_source_header_at_target::(&finality_target, &relay_task_name).await; + let best_finalized_source_header_at_target = best_finalized_source_header_at_target::< + SourceChain, + _, + _, + >(&finality_target, &relay_task_name) + .await; if matches!(best_finalized_source_header_at_target, Err(ref e) if e.is_connection_error()) { relay_utils::relay_loop::reconnect_failed_client( FailedClient::Target, @@ -179,11 +193,12 @@ async fn background_task( &mut finality_target, ) .await; - continue; + continue } // submit mandatory header if some headers are missing - let best_finalized_source_header_at_target_fmt = format!("{:?}", best_finalized_source_header_at_target); + let best_finalized_source_header_at_target_fmt = + format!("{:?}", best_finalized_source_header_at_target); let mandatory_scan_range = mandatory_headers_scan_range::( best_finalized_source_header_at_source.ok(), best_finalized_source_header_at_target.ok(), @@ -209,8 +224,8 @@ async fn background_task( // there are no (or we don't need to relay them) mandatory headers in the range // => to avoid scanning the same headers over and over again, remember that latest_non_mandatory_at_source = mandatory_scan_range.1; - } - Err(e) => { + }, + Err(e) => if e.is_connection_error() { relay_utils::relay_loop::reconnect_failed_client( FailedClient::Source, @@ -219,9 +234,8 @@ async fn background_task( &mut finality_target, ) .await; - continue; - } - } + continue + }, } } @@ -232,10 +246,13 @@ async fn background_task( finality_source.clone(), finality_target.clone(), FinalitySyncParams { - tick: std::cmp::max(SourceChain::AVERAGE_BLOCK_INTERVAL, TargetChain::AVERAGE_BLOCK_INTERVAL), + tick: std::cmp::max( + SourceChain::AVERAGE_BLOCK_INTERVAL, + TargetChain::AVERAGE_BLOCK_INTERVAL, + ), recent_finality_proofs_limit: RECENT_FINALITY_PROOFS_LIMIT, stall_timeout: STALL_TIMEOUT, - only_mandatory_headers: false, + only_mandatory_headers, }, MetricsParams::disabled(), futures::future::pending(), @@ -248,7 +265,7 @@ async fn background_task( } } -/// Returns `Some()` with inclusive range of headers which must be scanned for manadatory headers +/// Returns `Some()` with inclusive range of headers which must be scanned for mandatory headers /// and the first of such headers must be submitted to the target node. async fn mandatory_headers_scan_range( best_finalized_source_header_at_source: Option, @@ -281,12 +298,12 @@ async fn mandatory_headers_scan_range( .checked_sub(&best_finalized_source_header_at_target) .unwrap_or_else(Zero::zero); if current_headers_difference <= maximal_headers_difference { - return None; + return None } // if relay is already asked to sync headers, don't do anything yet if required_header_number > best_finalized_source_header_at_target { - return None; + return None } Some(( @@ -295,7 +312,8 @@ async fn mandatory_headers_scan_range( )) } -/// Try to find mandatory header in the inclusive headers range and, if one is found, ask to relay it. +/// Try to find mandatory header in the inclusive headers range and, if one is found, ask to relay +/// it. /// /// Returns `true` if header was found and (asked to be) relayed and `false` otherwise. async fn relay_mandatory_header_from_range( @@ -310,7 +328,8 @@ where P: FinalitySyncPipeline, { // search for mandatory header first - let mandatory_source_header_number = find_mandatory_header_in_range(finality_source, range).await?; + let mandatory_source_header_number = + find_mandatory_header_in_range(finality_source, range).await?; // if there are no mandatory headers - we have nothing to do let mandatory_source_header_number = match mandatory_source_header_number { @@ -322,7 +341,7 @@ where // less than our `mandatory_source_header_number` before logging anything let mut required_header_number = required_header_number.lock().await; if *required_header_number >= mandatory_source_header_number { - return Ok(false); + return Ok(false) } log::trace!( @@ -350,19 +369,16 @@ where SubstrateFinalitySource: FinalitySourceClient

, P: FinalitySyncPipeline, { - finality_source - .on_chain_best_finalized_block_number() - .await - .map_err(|error| { - log::error!( - target: "bridge", - "Failed to read best finalized source header from source in {} relay: {:?}", - relay_task_name, - error, - ); + finality_source.on_chain_best_finalized_block_number().await.map_err(|error| { + log::error!( + target: "bridge", + "Failed to read best finalized source header from source in {} relay: {:?}", + relay_task_name, + error, + ); - error - }) + error + }) } /// Read best finalized source block number from target client. @@ -373,22 +389,20 @@ async fn best_finalized_source_header_at_target Result as RelayClient>::Error> where - SubstrateFinalityTarget: FinalityTargetClient

, - P: FinalitySyncPipeline, + SubstrateFinalityTarget: FinalityTargetClient, + P: SubstrateFinalitySyncPipeline, + P::FinalitySyncPipeline: FinalitySyncPipeline, { - finality_target - .best_finalized_source_block_number() - .await - .map_err(|error| { - log::error!( - target: "bridge", - "Failed to read best finalized source header from target in {} relay: {:?}", - relay_task_name, - error, - ); + finality_target.best_finalized_source_block_number().await.map_err(|error| { + log::error!( + target: "bridge", + "Failed to read best finalized source header from target in {} relay: {:?}", + relay_task_name, + error, + ); - error - }) + error + }) } /// Read first mandatory header in given inclusive range. @@ -404,9 +418,10 @@ where { let mut current = range.0; while current <= range.1 { - let header: SyncHeader = finality_source.client().header_by_number(current).await?.into(); + let header: SyncHeader = + finality_source.client().header_by_number(current).await?.into(); if header.is_mandatory() { - return Ok(Some(current)); + return Ok(Some(current)) } current += One::one(); @@ -424,15 +439,21 @@ fn on_demand_headers_relay_name() -> Str mod tests { use super::*; - type TestChain = relay_millau_client::Millau; + type TestChain = relay_rococo_client::Rococo; - const AT_SOURCE: Option = Some(10); - const AT_TARGET: Option = Some(1); + const AT_SOURCE: Option = Some(10); + const AT_TARGET: Option = Some(1); #[async_std::test] async fn mandatory_headers_scan_range_selects_range_if_too_many_headers_are_missing() { assert_eq!( - mandatory_headers_scan_range::(AT_SOURCE, AT_TARGET, 5, &Arc::new(Mutex::new(0))).await, + mandatory_headers_scan_range::( + AT_SOURCE, + AT_TARGET, + 5, + &Arc::new(Mutex::new(0)) + ) + .await, Some((AT_TARGET.unwrap() + 1, AT_SOURCE.unwrap())), ); } @@ -440,7 +461,13 @@ mod tests { #[async_std::test] async fn mandatory_headers_scan_range_selects_nothing_if_enough_headers_are_relayed() { assert_eq!( - mandatory_headers_scan_range::(AT_SOURCE, AT_TARGET, 10, &Arc::new(Mutex::new(0))).await, + mandatory_headers_scan_range::( + AT_SOURCE, + AT_TARGET, + 10, + &Arc::new(Mutex::new(0)) + ) + .await, None, ); } diff --git a/relays/messages/Cargo.toml b/relays/messages/Cargo.toml new file mode 100644 index 000000000000..b11f00b957a4 --- /dev/null +++ b/relays/messages/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "messages-relay" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +async-std = { version = "1.6.5", features = ["attributes"] } +async-trait = "0.1.40" +futures = "0.3.5" +hex = "0.4" +log = "0.4.11" +num-traits = "0.2" +parking_lot = "0.11.0" + +# Bridge Dependencies + +bp-messages = { path = "../../primitives/messages" } +bp-runtime = { path = "../../primitives/runtime" } +relay-utils = { path = "../utils" } + +sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/messages/src/lib.rs b/relays/messages/src/lib.rs new file mode 100644 index 000000000000..c9e460300342 --- /dev/null +++ b/relays/messages/src/lib.rs @@ -0,0 +1,37 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Relaying [`pallet-bridge-messages`](../pallet_bridge_messages/index.html) application specific +//! data. Message lane allows sending arbitrary messages between bridged chains. This +//! module provides entrypoint that starts reading messages from given message lane +//! of source chain and submits proof-of-message-at-source-chain transactions to the +//! target chain. Additionally, proofs-of-messages-delivery are sent back from the +//! target chain to the source chain. + +// required for futures::select! +#![recursion_limit = "1024"] +#![warn(missing_docs)] + +mod metrics; + +pub mod message_lane; +pub mod message_lane_loop; +pub mod relay_strategy; + +mod message_race_delivery; +mod message_race_loop; +mod message_race_receiving; +mod message_race_strategy; diff --git a/bridges/relays/messages/src/message_lane.rs b/relays/messages/src/message_lane.rs similarity index 80% rename from bridges/relays/messages/src/message_lane.rs rename to relays/messages/src/message_lane.rs index 8757e9322ce4..5c9728ad93ab 100644 --- a/bridges/relays/messages/src/message_lane.rs +++ b/relays/messages/src/message_lane.rs @@ -21,7 +21,8 @@ use num_traits::{SaturatingAdd, Zero}; use relay_utils::{BlockNumberBase, HeaderId}; -use std::fmt::Debug; +use sp_arithmetic::traits::AtLeast32BitUnsigned; +use std::{fmt::Debug, ops::Sub}; /// One-way message lane. pub trait MessageLane: 'static + Clone + Send + Sync { @@ -40,7 +41,16 @@ pub trait MessageLane: 'static + Clone + Send + Sync { /// 1) pay transaction fees; /// 2) pay message delivery and dispatch fee; /// 3) pay relayer rewards. - type SourceChainBalance: Clone + Copy + Debug + PartialOrd + SaturatingAdd + Zero + Send + Sync; + type SourceChainBalance: AtLeast32BitUnsigned + + Clone + + Copy + + Debug + + PartialOrd + + Sub + + SaturatingAdd + + Zero + + Send + + Sync; /// Number of the source header. type SourceHeaderNumber: BlockNumberBase; /// Hash of the source header. @@ -53,7 +63,9 @@ pub trait MessageLane: 'static + Clone + Send + Sync { } /// Source header id within given one-way message lane. -pub type SourceHeaderIdOf

= HeaderId<

::SourceHeaderHash,

::SourceHeaderNumber>; +pub type SourceHeaderIdOf

= + HeaderId<

::SourceHeaderHash,

::SourceHeaderNumber>; /// Target header id within given one-way message lane. -pub type TargetHeaderIdOf

= HeaderId<

::TargetHeaderHash,

::TargetHeaderNumber>; +pub type TargetHeaderIdOf

= + HeaderId<

::TargetHeaderHash,

::TargetHeaderNumber>; diff --git a/bridges/relays/messages/src/message_lane_loop.rs b/relays/messages/src/message_lane_loop.rs similarity index 89% rename from bridges/relays/messages/src/message_lane_loop.rs rename to relays/messages/src/message_lane_loop.rs index c87c024f3976..6cdb2b1aa5ae 100644 --- a/bridges/relays/messages/src/message_lane_loop.rs +++ b/relays/messages/src/message_lane_loop.rs @@ -24,27 +24,29 @@ //! finalized header. I.e. when talking about headers in lane context, we //! only care about finalized headers. -use crate::message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}; -use crate::message_race_delivery::run as run_message_delivery_race; -use crate::message_race_receiving::run as run_message_receiving_race; -use crate::metrics::MessageLaneLoopMetrics; +use std::{collections::BTreeMap, fmt::Debug, future::Future, ops::RangeInclusive, time::Duration}; use async_trait::async_trait; +use futures::{channel::mpsc::unbounded, future::FutureExt, stream::StreamExt}; + use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState, Weight}; use bp_runtime::messages::DispatchFeePayment; -use futures::{channel::mpsc::unbounded, future::FutureExt, stream::StreamExt}; use relay_utils::{ - interval, - metrics::{GlobalMetrics, MetricsParams}, - process_future_result, - relay_loop::Client as RelayClient, + interval, metrics::MetricsParams, process_future_result, relay_loop::Client as RelayClient, retry_backoff, FailedClient, }; -use std::{collections::BTreeMap, fmt::Debug, future::Future, ops::RangeInclusive, time::Duration}; + +use crate::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + message_race_delivery::run as run_message_delivery_race, + message_race_receiving::run as run_message_receiving_race, + metrics::MessageLaneLoopMetrics, + relay_strategy::RelayStrategy, +}; /// Message lane loop configuration params. #[derive(Debug, Clone)] -pub struct Params { +pub struct Params { /// Id of lane this loop is servicing. pub lane: LaneId, /// Interval at which we ask target node about its updates. @@ -56,7 +58,7 @@ pub struct Params { /// The loop will auto-restart if there has been no updates during this period. pub stall_timeout: Duration, /// Message delivery race parameters. - pub delivery_params: MessageDeliveryParams, + pub delivery_params: MessageDeliveryParams, } /// Relayer operating mode. @@ -64,20 +66,22 @@ pub struct Params { pub enum RelayerMode { /// The relayer doesn't care about rewards. Altruistic, - /// The relayer will deliver all messages and confirmations as long as he's not losing any funds. - NoLosses, + /// The relayer will deliver all messages and confirmations as long as he's not losing any + /// funds. + Rational, } /// Message delivery race parameters. #[derive(Debug, Clone)] -pub struct MessageDeliveryParams { - /// Maximal number of unconfirmed relayer entries at the inbound lane. If there's that number of entries - /// in the `InboundLaneData::relayers` set, all new messages will be rejected until reward payment will - /// be proved (by including outbound lane state to the message delivery transaction). +pub struct MessageDeliveryParams { + /// Maximal number of unconfirmed relayer entries at the inbound lane. If there's that number + /// of entries in the `InboundLaneData::relayers` set, all new messages will be rejected until + /// reward payment will be proved (by including outbound lane state to the message delivery + /// transaction). pub max_unrewarded_relayer_entries_at_target: MessageNonce, - /// Message delivery race will stop delivering messages if there are `max_unconfirmed_nonces_at_target` - /// unconfirmed nonces on the target node. The race would continue once they're confirmed by the - /// receiving race. + /// Message delivery race will stop delivering messages if there are + /// `max_unconfirmed_nonces_at_target` unconfirmed nonces on the target node. The race would + /// continue once they're confirmed by the receiving race. pub max_unconfirmed_nonces_at_target: MessageNonce, /// Maximal number of relayed messages in single delivery transaction. pub max_messages_in_single_batch: MessageNonce, @@ -85,8 +89,8 @@ pub struct MessageDeliveryParams { pub max_messages_weight_in_single_batch: Weight, /// Maximal cumulative size of relayed messages in single delivery transaction. pub max_messages_size_in_single_batch: u32, - /// Relayer operating mode. - pub relayer_mode: RelayerMode, + /// Relay strategy + pub relay_strategy: Strategy, } /// Message details. @@ -103,7 +107,8 @@ pub struct MessageDetails { } /// Messages details map. -pub type MessageDetailsMap = BTreeMap>; +pub type MessageDetailsMap = + BTreeMap>; /// Message delivery race proof parameters. #[derive(Debug, PartialEq)] @@ -125,6 +130,7 @@ pub trait SourceClient: RelayClient { &self, id: SourceHeaderIdOf

, ) -> Result<(SourceHeaderIdOf

, MessageNonce), Self::Error>; + /// Get nonce of the latest message, which receiving has been confirmed by the target chain. async fn latest_confirmed_received_nonce( &self, @@ -175,11 +181,12 @@ pub trait TargetClient: RelayClient { id: TargetHeaderIdOf

, ) -> Result<(TargetHeaderIdOf

, MessageNonce), Self::Error>; - /// Get nonce of latest confirmed message. + /// Get nonce of the latest confirmed message. async fn latest_confirmed_received_nonce( &self, id: TargetHeaderIdOf

, ) -> Result<(TargetHeaderIdOf

, MessageNonce), Self::Error>; + /// Get state of unrewarded relayers set at the inbound lane. async fn unrewarded_relayers_state( &self, @@ -210,19 +217,21 @@ pub trait TargetClient: RelayClient { async fn estimate_delivery_transaction_in_source_tokens( &self, nonces: RangeInclusive, + total_prepaid_nonces: MessageNonce, total_dispatch_weight: Weight, total_size: u32, - ) -> P::SourceChainBalance; + ) -> Result; } /// State of the client. #[derive(Clone, Debug, Default, PartialEq)] pub struct ClientState { - /// Best header id of this chain. + /// The best header id of this chain. pub best_self: SelfHeaderId, /// Best finalized header id of this chain. pub best_finalized_self: SelfHeaderId, - /// Best finalized header id of the peer chain read at the best block of this chain (at `best_finalized_self`). + /// Best finalized header id of the peer chain read at the best block of this chain (at + /// `best_finalized_self`). pub best_finalized_peer_at_best_self: PeerHeaderId, } @@ -241,50 +250,48 @@ pub struct ClientsState { pub target: Option>, } -/// Return prefix that will be used by default to expose Prometheus metrics of the finality proofs sync loop. +/// Return prefix that will be used by default to expose Prometheus metrics of the finality proofs +/// sync loop. pub fn metrics_prefix(lane: &LaneId) -> String { - format!( - "{}_to_{}_MessageLane_{}", - P::SOURCE_NAME, - P::TARGET_NAME, - hex::encode(lane) - ) + format!("{}_to_{}_MessageLane_{}", P::SOURCE_NAME, P::TARGET_NAME, hex::encode(lane)) } /// Run message lane service loop. -pub async fn run( - params: Params, +pub async fn run( + params: Params, source_client: impl SourceClient

, target_client: impl TargetClient

, metrics_params: MetricsParams, exit_signal: impl Future + Send + 'static, -) -> Result<(), String> { +) -> Result<(), relay_utils::Error> { let exit_signal = exit_signal.shared(); relay_utils::relay_loop(source_client, target_client) .reconnect_delay(params.reconnect_delay) - .with_metrics(Some(metrics_prefix::

(¶ms.lane)), metrics_params) - .loop_metric(|registry, prefix| MessageLaneLoopMetrics::new(registry, prefix))? - .standalone_metric(|registry, prefix| GlobalMetrics::new(registry, prefix))? + .with_metrics(metrics_params) + .loop_metric(MessageLaneLoopMetrics::new(Some(&metrics_prefix::

(¶ms.lane)))?)? .expose() .await? - .run( - metrics_prefix::

(¶ms.lane), - move |source_client, target_client, metrics| { - run_until_connection_lost( - params.clone(), - source_client, - target_client, - metrics, - exit_signal.clone(), - ) - }, - ) + .run(metrics_prefix::

(¶ms.lane), move |source_client, target_client, metrics| { + run_until_connection_lost( + params.clone(), + source_client, + target_client, + metrics, + exit_signal.clone(), + ) + }) .await } -/// Run one-way message delivery loop until connection with target or source node is lost, or exit signal is received. -async fn run_until_connection_lost, TC: TargetClient

>( - params: Params, +/// Run one-way message delivery loop until connection with target or source node is lost, or exit +/// signal is received. +async fn run_until_connection_lost< + P: MessageLane, + Strategy: RelayStrategy, + SC: SourceClient

, + TC: TargetClient

, +>( + params: Params, source_client: SC, target_client: TC, metrics_msg: Option, @@ -446,11 +453,16 @@ async fn run_until_connection_lost, TC: Targ #[cfg(test)] pub(crate) mod tests { - use super::*; + use std::sync::Arc; + use futures::stream::StreamExt; use parking_lot::Mutex; + use relay_utils::{HeaderId, MaybeConnectionError}; - use std::sync::Arc; + + use crate::relay_strategy::AltruisticStrategy; + + use super::*; pub fn header_id(number: TestSourceHeaderNumber) -> TestSourceHeaderId { HeaderId(number, number) @@ -554,7 +566,7 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_source_fails { - return Err(TestError); + return Err(TestError) } Ok(data.source_state.clone()) } @@ -566,7 +578,7 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_source_fails { - return Err(TestError); + return Err(TestError) } Ok((id, data.source_latest_generated_nonce)) } @@ -606,11 +618,7 @@ pub(crate) mod tests { nonces: RangeInclusive, proof_parameters: MessageProofParameters, ) -> Result< - ( - SourceHeaderIdOf, - RangeInclusive, - TestMessagesProof, - ), + (SourceHeaderIdOf, RangeInclusive, TestMessagesProof), TestError, > { let mut data = self.data.lock(); @@ -691,7 +699,7 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_target_fails { - return Err(TestError); + return Err(TestError) } Ok(data.target_state.clone()) } @@ -703,7 +711,7 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_target_fails { - return Err(TestError); + return Err(TestError) } Ok((id, data.target_latest_received_nonce)) } @@ -729,7 +737,7 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_target_fails { - return Err(TestError); + return Err(TestError) } Ok((id, data.target_latest_confirmed_received_nonce)) } @@ -750,14 +758,15 @@ pub(crate) mod tests { let mut data = self.data.lock(); (self.tick)(&mut *data); if data.is_target_fails { - return Err(TestError); + return Err(TestError) } data.target_state.best_self = HeaderId(data.target_state.best_self.0 + 1, data.target_state.best_self.1 + 1); data.target_state.best_finalized_self = data.target_state.best_self; data.target_latest_received_nonce = *proof.0.end(); if let Some(target_latest_confirmed_received_nonce) = proof.1 { - data.target_latest_confirmed_received_nonce = target_latest_confirmed_received_nonce; + data.target_latest_confirmed_received_nonce = + target_latest_confirmed_received_nonce; } data.submitted_messages_proofs.push(proof); Ok(nonces) @@ -773,12 +782,13 @@ pub(crate) mod tests { async fn estimate_delivery_transaction_in_source_tokens( &self, nonces: RangeInclusive, + _total_prepaid_nonces: MessageNonce, total_dispatch_weight: Weight, total_size: u32, - ) -> TestSourceChainBalance { - BASE_MESSAGE_DELIVERY_TRANSACTION_COST * (nonces.end() - nonces.start() + 1) - + total_dispatch_weight - + total_size as TestSourceChainBalance + ) -> Result { + Ok(BASE_MESSAGE_DELIVERY_TRANSACTION_COST * (nonces.end() - nonces.start() + 1) + + total_dispatch_weight + + total_size as TestSourceChainBalance) } } @@ -791,14 +801,8 @@ pub(crate) mod tests { async_std::task::block_on(async { let data = Arc::new(Mutex::new(data)); - let source_client = TestSourceClient { - data: data.clone(), - tick: source_tick, - }; - let target_client = TestTargetClient { - data: data.clone(), - tick: target_tick, - }; + let source_client = TestSourceClient { data: data.clone(), tick: source_tick }; + let target_client = TestTargetClient { data: data.clone(), tick: target_tick }; let _ = run( Params { lane: [0, 0, 0, 0], @@ -812,7 +816,7 @@ pub(crate) mod tests { max_messages_in_single_batch: 4, max_messages_weight_in_single_batch: 4, max_messages_size_in_single_batch: 4, - relayer_mode: RelayerMode::Altruistic, + relay_strategy: AltruisticStrategy, }, }, source_client, @@ -901,7 +905,10 @@ pub(crate) mod tests { data.source_state.best_finalized_self = data.source_state.best_self; // headers relay must only be started when we need new target headers at source node if data.target_to_source_header_required.is_some() { - assert!(data.source_state.best_finalized_peer_at_best_self.0 < data.target_state.best_self.0); + assert!( + data.source_state.best_finalized_peer_at_best_self.0 < + data.target_state.best_self.0 + ); data.target_to_source_header_required = None; } // syncing target headers -> source chain @@ -918,7 +925,10 @@ pub(crate) mod tests { data.target_state.best_finalized_self = data.target_state.best_self; // headers relay must only be started when we need new source headers at target node if data.source_to_target_header_required.is_some() { - assert!(data.target_state.best_finalized_peer_at_best_self.0 < data.source_state.best_self.0); + assert!( + data.target_state.best_finalized_peer_at_best_self.0 < + data.source_state.best_self.0 + ); data.source_to_target_header_required = None; } // syncing source headers -> target chain diff --git a/relays/messages/src/message_race_delivery.rs b/relays/messages/src/message_race_delivery.rs new file mode 100644 index 000000000000..dc994364f178 --- /dev/null +++ b/relays/messages/src/message_race_delivery.rs @@ -0,0 +1,1076 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +//! Message delivery race delivers proof-of-messages from "lane.source" to "lane.target". + +use std::{collections::VecDeque, marker::PhantomData, ops::RangeInclusive, time::Duration}; + +use async_trait::async_trait; +use futures::stream::FusedStream; + +use bp_messages::{MessageNonce, UnrewardedRelayersState, Weight}; +use relay_utils::FailedClient; + +use crate::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + message_lane_loop::{ + MessageDeliveryParams, MessageDetailsMap, MessageProofParameters, + SourceClient as MessageLaneSourceClient, SourceClientState, + TargetClient as MessageLaneTargetClient, TargetClientState, + }, + message_race_loop::{ + MessageRace, NoncesRange, RaceState, RaceStrategy, SourceClient, SourceClientNonces, + TargetClient, TargetClientNonces, + }, + message_race_strategy::BasicStrategy, + metrics::MessageLaneLoopMetrics, + relay_strategy::{EnforcementStrategy, RelayMessagesBatchReference, RelayStrategy}, +}; + +/// Run message delivery race. +pub async fn run( + source_client: impl MessageLaneSourceClient

, + source_state_updates: impl FusedStream>, + target_client: impl MessageLaneTargetClient

, + target_state_updates: impl FusedStream>, + stall_timeout: Duration, + metrics_msg: Option, + params: MessageDeliveryParams, +) -> Result<(), FailedClient> { + crate::message_race_loop::run( + MessageDeliveryRaceSource { + client: source_client.clone(), + metrics_msg: metrics_msg.clone(), + _phantom: Default::default(), + }, + source_state_updates, + MessageDeliveryRaceTarget { + client: target_client.clone(), + metrics_msg, + _phantom: Default::default(), + }, + target_state_updates, + stall_timeout, + MessageDeliveryStrategy:: { + lane_source_client: source_client, + lane_target_client: target_client, + max_unrewarded_relayer_entries_at_target: params + .max_unrewarded_relayer_entries_at_target, + max_unconfirmed_nonces_at_target: params.max_unconfirmed_nonces_at_target, + max_messages_in_single_batch: params.max_messages_in_single_batch, + max_messages_weight_in_single_batch: params.max_messages_weight_in_single_batch, + max_messages_size_in_single_batch: params.max_messages_size_in_single_batch, + relay_strategy: params.relay_strategy, + latest_confirmed_nonces_at_source: VecDeque::new(), + target_nonces: None, + strategy: BasicStrategy::new(), + }, + ) + .await +} + +/// Message delivery race. +struct MessageDeliveryRace

(std::marker::PhantomData

); + +impl MessageRace for MessageDeliveryRace

{ + type SourceHeaderId = SourceHeaderIdOf

; + type TargetHeaderId = TargetHeaderIdOf

; + + type MessageNonce = MessageNonce; + type Proof = P::MessagesProof; + + fn source_name() -> String { + format!("{}::MessagesDelivery", P::SOURCE_NAME) + } + + fn target_name() -> String { + format!("{}::MessagesDelivery", P::TARGET_NAME) + } +} + +/// Message delivery race source, which is a source of the lane. +struct MessageDeliveryRaceSource { + client: C, + metrics_msg: Option, + _phantom: PhantomData

, +} + +#[async_trait] +impl SourceClient> for MessageDeliveryRaceSource +where + P: MessageLane, + C: MessageLaneSourceClient

, +{ + type Error = C::Error; + type NoncesRange = MessageDetailsMap; + type ProofParameters = MessageProofParameters; + + async fn nonces( + &self, + at_block: SourceHeaderIdOf

, + prev_latest_nonce: MessageNonce, + ) -> Result<(SourceHeaderIdOf

, SourceClientNonces), Self::Error> { + let (at_block, latest_generated_nonce) = + self.client.latest_generated_nonce(at_block).await?; + let (at_block, latest_confirmed_nonce) = + self.client.latest_confirmed_received_nonce(at_block).await?; + + if let Some(metrics_msg) = self.metrics_msg.as_ref() { + metrics_msg.update_source_latest_generated_nonce::

(latest_generated_nonce); + metrics_msg.update_source_latest_confirmed_nonce::

(latest_confirmed_nonce); + } + + let new_nonces = if latest_generated_nonce > prev_latest_nonce { + self.client + .generated_message_details( + at_block.clone(), + prev_latest_nonce + 1..=latest_generated_nonce, + ) + .await? + } else { + MessageDetailsMap::new() + }; + + Ok(( + at_block, + SourceClientNonces { new_nonces, confirmed_nonce: Some(latest_confirmed_nonce) }, + )) + } + + async fn generate_proof( + &self, + at_block: SourceHeaderIdOf

, + nonces: RangeInclusive, + proof_parameters: Self::ProofParameters, + ) -> Result<(SourceHeaderIdOf

, RangeInclusive, P::MessagesProof), Self::Error> + { + self.client.prove_messages(at_block, nonces, proof_parameters).await + } +} + +/// Message delivery race target, which is a target of the lane. +struct MessageDeliveryRaceTarget { + client: C, + metrics_msg: Option, + _phantom: PhantomData

, +} + +#[async_trait] +impl TargetClient> for MessageDeliveryRaceTarget +where + P: MessageLane, + C: MessageLaneTargetClient

, +{ + type Error = C::Error; + type TargetNoncesData = DeliveryRaceTargetNoncesData; + + async fn require_source_header(&self, id: SourceHeaderIdOf

) { + self.client.require_source_header_on_target(id).await + } + + async fn nonces( + &self, + at_block: TargetHeaderIdOf

, + update_metrics: bool, + ) -> Result<(TargetHeaderIdOf

, TargetClientNonces), Self::Error> + { + let (at_block, latest_received_nonce) = self.client.latest_received_nonce(at_block).await?; + let (at_block, latest_confirmed_nonce) = + self.client.latest_confirmed_received_nonce(at_block).await?; + let (at_block, unrewarded_relayers) = + self.client.unrewarded_relayers_state(at_block).await?; + + if update_metrics { + if let Some(metrics_msg) = self.metrics_msg.as_ref() { + metrics_msg.update_target_latest_received_nonce::

(latest_received_nonce); + metrics_msg.update_target_latest_confirmed_nonce::

(latest_confirmed_nonce); + } + } + + Ok(( + at_block, + TargetClientNonces { + latest_nonce: latest_received_nonce, + nonces_data: DeliveryRaceTargetNoncesData { + confirmed_nonce: latest_confirmed_nonce, + unrewarded_relayers, + }, + }, + )) + } + + async fn submit_proof( + &self, + generated_at_block: SourceHeaderIdOf

, + nonces: RangeInclusive, + proof: P::MessagesProof, + ) -> Result, Self::Error> { + self.client.submit_messages_proof(generated_at_block, nonces, proof).await + } +} + +/// Additional nonces data from the target client used by message delivery race. +#[derive(Debug, Clone)] +struct DeliveryRaceTargetNoncesData { + /// The latest nonce that we know: (1) has been delivered to us (2) has been confirmed + /// back to the source node (by confirmations race) and (3) relayer has received + /// reward for (and this has been confirmed by the message delivery race). + confirmed_nonce: MessageNonce, + /// State of the unrewarded relayers set at the target node. + unrewarded_relayers: UnrewardedRelayersState, +} + +/// Messages delivery strategy. +struct MessageDeliveryStrategy { + /// The client that is connected to the message lane source node. + lane_source_client: SC, + /// The client that is connected to the message lane target node. + lane_target_client: TC, + /// Maximal unrewarded relayer entries at target client. + max_unrewarded_relayer_entries_at_target: MessageNonce, + /// Maximal unconfirmed nonces at target client. + max_unconfirmed_nonces_at_target: MessageNonce, + /// Maximal number of messages in the single delivery transaction. + max_messages_in_single_batch: MessageNonce, + /// Maximal cumulative messages weight in the single delivery transaction. + max_messages_weight_in_single_batch: Weight, + /// Maximal messages size in the single delivery transaction. + max_messages_size_in_single_batch: u32, + /// Relayer operating mode. + relay_strategy: Strategy, + /// Latest confirmed nonces at the source client + the header id where we have first met this + /// nonce. + latest_confirmed_nonces_at_source: VecDeque<(SourceHeaderIdOf

, MessageNonce)>, + /// Target nonces from the source client. + target_nonces: Option>, + /// Basic delivery strategy. + strategy: MessageDeliveryStrategyBase

, +} + +type MessageDeliveryStrategyBase

= BasicStrategy< +

::SourceHeaderNumber, +

::SourceHeaderHash, +

::TargetHeaderNumber, +

::TargetHeaderHash, + MessageDetailsMap<

::SourceChainBalance>, +

::MessagesProof, +>; + +impl std::fmt::Debug + for MessageDeliveryStrategy +{ + fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { + fmt.debug_struct("MessageDeliveryStrategy") + .field( + "max_unrewarded_relayer_entries_at_target", + &self.max_unrewarded_relayer_entries_at_target, + ) + .field("max_unconfirmed_nonces_at_target", &self.max_unconfirmed_nonces_at_target) + .field("max_messages_in_single_batch", &self.max_messages_in_single_batch) + .field("max_messages_weight_in_single_batch", &self.max_messages_weight_in_single_batch) + .field("max_messages_size_in_single_batch", &self.max_messages_size_in_single_batch) + .field("latest_confirmed_nonces_at_source", &self.latest_confirmed_nonces_at_source) + .field("target_nonces", &self.target_nonces) + .field("strategy", &self.strategy) + .finish() + } +} + +impl MessageDeliveryStrategy { + /// Returns total weight of all undelivered messages. + fn total_queued_dispatch_weight(&self) -> Weight { + self.strategy + .source_queue() + .iter() + .flat_map(|(_, range)| range.values().map(|details| details.dispatch_weight)) + .fold(0, |total, weight| total.saturating_add(weight)) + } +} + +#[async_trait] +impl + RaceStrategy, TargetHeaderIdOf

, P::MessagesProof> + for MessageDeliveryStrategy +where + P: MessageLane, + SC: MessageLaneSourceClient

, + TC: MessageLaneTargetClient

, +{ + type SourceNoncesRange = MessageDetailsMap; + type ProofParameters = MessageProofParameters; + type TargetNoncesData = DeliveryRaceTargetNoncesData; + + fn is_empty(&self) -> bool { + self.strategy.is_empty() + } + + fn required_source_header_at_target( + &self, + current_best: &SourceHeaderIdOf

, + ) -> Option> { + let header_required_for_messages_delivery = + self.strategy.required_source_header_at_target(current_best); + let header_required_for_reward_confirmations_delivery = + self.latest_confirmed_nonces_at_source.back().map(|(id, _)| id.clone()); + match ( + header_required_for_messages_delivery, + header_required_for_reward_confirmations_delivery, + ) { + (Some(id1), Some(id2)) => Some(if id1.0 > id2.0 { id1 } else { id2 }), + (a, b) => a.or(b), + } + } + + fn best_at_source(&self) -> Option { + self.strategy.best_at_source() + } + + fn best_at_target(&self) -> Option { + self.strategy.best_at_target() + } + + fn source_nonces_updated( + &mut self, + at_block: SourceHeaderIdOf

, + nonces: SourceClientNonces, + ) { + if let Some(confirmed_nonce) = nonces.confirmed_nonce { + let is_confirmed_nonce_updated = self + .latest_confirmed_nonces_at_source + .back() + .map(|(_, prev_nonce)| *prev_nonce != confirmed_nonce) + .unwrap_or(true); + if is_confirmed_nonce_updated { + self.latest_confirmed_nonces_at_source + .push_back((at_block.clone(), confirmed_nonce)); + } + } + self.strategy.source_nonces_updated(at_block, nonces) + } + + fn best_target_nonces_updated( + &mut self, + nonces: TargetClientNonces, + race_state: &mut RaceState, TargetHeaderIdOf

, P::MessagesProof>, + ) { + // best target nonces must always be ge than finalized target nonces + let mut target_nonces = self.target_nonces.take().unwrap_or_else(|| nonces.clone()); + target_nonces.nonces_data = nonces.nonces_data.clone(); + target_nonces.latest_nonce = std::cmp::max(target_nonces.latest_nonce, nonces.latest_nonce); + self.target_nonces = Some(target_nonces); + + self.strategy.best_target_nonces_updated( + TargetClientNonces { latest_nonce: nonces.latest_nonce, nonces_data: () }, + race_state, + ) + } + + fn finalized_target_nonces_updated( + &mut self, + nonces: TargetClientNonces, + race_state: &mut RaceState, TargetHeaderIdOf

, P::MessagesProof>, + ) { + if let Some(ref best_finalized_source_header_id_at_best_target) = + race_state.best_finalized_source_header_id_at_best_target + { + let oldest_header_number_to_keep = best_finalized_source_header_id_at_best_target.0; + while self + .latest_confirmed_nonces_at_source + .front() + .map(|(id, _)| id.0 < oldest_header_number_to_keep) + .unwrap_or(false) + { + self.latest_confirmed_nonces_at_source.pop_front(); + } + } + + if let Some(ref mut target_nonces) = self.target_nonces { + target_nonces.latest_nonce = + std::cmp::max(target_nonces.latest_nonce, nonces.latest_nonce); + } + + self.strategy.finalized_target_nonces_updated( + TargetClientNonces { latest_nonce: nonces.latest_nonce, nonces_data: () }, + race_state, + ) + } + + async fn select_nonces_to_deliver( + &mut self, + race_state: RaceState, TargetHeaderIdOf

, P::MessagesProof>, + ) -> Option<(RangeInclusive, Self::ProofParameters)> { + let best_finalized_source_header_id_at_best_target = + race_state.best_finalized_source_header_id_at_best_target.clone()?; + let latest_confirmed_nonce_at_source = self + .latest_confirmed_nonces_at_source + .iter() + .take_while(|(id, _)| id.0 <= best_finalized_source_header_id_at_best_target.0) + .last() + .map(|(_, nonce)| *nonce)?; + let target_nonces = self.target_nonces.as_ref()?; + + // There's additional condition in the message delivery race: target would reject messages + // if there are too much unconfirmed messages at the inbound lane. + + // The receiving race is responsible to deliver confirmations back to the source chain. So + // if there's a lot of unconfirmed messages, let's wait until it'll be able to do its job. + let latest_received_nonce_at_target = target_nonces.latest_nonce; + let confirmations_missing = + latest_received_nonce_at_target.checked_sub(latest_confirmed_nonce_at_source); + match confirmations_missing { + Some(confirmations_missing) + if confirmations_missing >= self.max_unconfirmed_nonces_at_target => + { + log::debug!( + target: "bridge", + "Cannot deliver any more messages from {} to {}. Too many unconfirmed nonces \ + at target: target.latest_received={:?}, source.latest_confirmed={:?}, max={:?}", + MessageDeliveryRace::

::source_name(), + MessageDeliveryRace::

::target_name(), + latest_received_nonce_at_target, + latest_confirmed_nonce_at_source, + self.max_unconfirmed_nonces_at_target, + ); + + return None + }, + _ => (), + } + + // Ok - we may have new nonces to deliver. But target may still reject new messages, because + // we haven't notified it that (some) messages have been confirmed. So we may want to + // include updated `source.latest_confirmed` in the proof. + // + // Important note: we're including outbound state lane proof whenever there are unconfirmed + // nonces on the target chain. Other strategy is to include it only if it's absolutely + // necessary. + let latest_confirmed_nonce_at_target = target_nonces.nonces_data.confirmed_nonce; + let outbound_state_proof_required = + latest_confirmed_nonce_at_target < latest_confirmed_nonce_at_source; + + // The target node would also reject messages if there are too many entries in the + // "unrewarded relayers" set. If we are unable to prove new rewards to the target node, then + // we should wait for confirmations race. + let unrewarded_relayer_entries_limit_reached = + target_nonces.nonces_data.unrewarded_relayers.unrewarded_relayer_entries >= + self.max_unrewarded_relayer_entries_at_target; + if unrewarded_relayer_entries_limit_reached { + // so there are already too many unrewarded relayer entries in the set + // + // => check if we can prove enough rewards. If not, we should wait for more rewards to + // be paid + let number_of_rewards_being_proved = + latest_confirmed_nonce_at_source.saturating_sub(latest_confirmed_nonce_at_target); + let enough_rewards_being_proved = number_of_rewards_being_proved >= + target_nonces.nonces_data.unrewarded_relayers.messages_in_oldest_entry; + if !enough_rewards_being_proved { + return None + } + } + + // If we're here, then the confirmations race did its job && sending side now knows that + // messages have been delivered. Now let's select nonces that we want to deliver. + // + // We may deliver at most: + // + // max_unconfirmed_nonces_at_target - (latest_received_nonce_at_target - + // latest_confirmed_nonce_at_target) + // + // messages in the batch. But since we're including outbound state proof in the batch, then + // it may be increased to: + // + // max_unconfirmed_nonces_at_target - (latest_received_nonce_at_target - + // latest_confirmed_nonce_at_source) + let future_confirmed_nonce_at_target = if outbound_state_proof_required { + latest_confirmed_nonce_at_source + } else { + latest_confirmed_nonce_at_target + }; + let max_nonces = latest_received_nonce_at_target + .checked_sub(future_confirmed_nonce_at_target) + .and_then(|diff| self.max_unconfirmed_nonces_at_target.checked_sub(diff)) + .unwrap_or_default(); + let max_nonces = std::cmp::min(max_nonces, self.max_messages_in_single_batch); + let max_messages_weight_in_single_batch = self.max_messages_weight_in_single_batch; + let max_messages_size_in_single_batch = self.max_messages_size_in_single_batch; + let lane_source_client = self.lane_source_client.clone(); + let lane_target_client = self.lane_target_client.clone(); + + let maximal_source_queue_index = + self.strategy.maximal_available_source_queue_index(race_state)?; + let previous_total_dispatch_weight = self.total_queued_dispatch_weight(); + let source_queue = self.strategy.source_queue(); + + let reference = RelayMessagesBatchReference { + max_messages_in_this_batch: max_nonces, + max_messages_weight_in_single_batch, + max_messages_size_in_single_batch, + lane_source_client: lane_source_client.clone(), + lane_target_client: lane_target_client.clone(), + nonces_queue: source_queue.clone(), + nonces_queue_range: 0..maximal_source_queue_index + 1, + }; + + let mut strategy = EnforcementStrategy::new(self.relay_strategy.clone()); + let range_end = strategy.decide(reference).await?; + + let range_begin = source_queue[0].1.begin(); + let selected_nonces = range_begin..=range_end; + self.strategy.remove_le_nonces_from_source_queue(range_end); + + let new_total_dispatch_weight = self.total_queued_dispatch_weight(); + let dispatch_weight = previous_total_dispatch_weight - new_total_dispatch_weight; + + Some(( + selected_nonces, + MessageProofParameters { outbound_state_proof_required, dispatch_weight }, + )) + } +} + +impl NoncesRange for MessageDetailsMap { + fn begin(&self) -> MessageNonce { + self.keys().next().cloned().unwrap_or_default() + } + + fn end(&self) -> MessageNonce { + self.keys().next_back().cloned().unwrap_or_default() + } + + fn greater_than(mut self, nonce: MessageNonce) -> Option { + let gte = self.split_off(&(nonce + 1)); + if gte.is_empty() { + None + } else { + Some(gte) + } + } +} + +#[cfg(test)] +mod tests { + use bp_runtime::messages::DispatchFeePayment; + + use crate::{ + message_lane_loop::{ + tests::{ + header_id, TestMessageLane, TestMessagesProof, TestSourceChainBalance, + TestSourceClient, TestSourceHeaderId, TestTargetClient, TestTargetHeaderId, + BASE_MESSAGE_DELIVERY_TRANSACTION_COST, CONFIRMATION_TRANSACTION_COST, + }, + MessageDetails, RelayerMode, + }, + relay_strategy::MixStrategy, + }; + + use super::*; + + const DEFAULT_DISPATCH_WEIGHT: Weight = 1; + const DEFAULT_SIZE: u32 = 1; + const DEFAULT_REWARD: TestSourceChainBalance = CONFIRMATION_TRANSACTION_COST + + BASE_MESSAGE_DELIVERY_TRANSACTION_COST + + DEFAULT_DISPATCH_WEIGHT + + (DEFAULT_SIZE as TestSourceChainBalance); + + type TestRaceState = RaceState; + type TestStrategy = + MessageDeliveryStrategy; + + fn source_nonces( + new_nonces: RangeInclusive, + confirmed_nonce: MessageNonce, + reward: TestSourceChainBalance, + dispatch_fee_payment: DispatchFeePayment, + ) -> SourceClientNonces> { + SourceClientNonces { + new_nonces: new_nonces + .into_iter() + .map(|nonce| { + ( + nonce, + MessageDetails { + dispatch_weight: DEFAULT_DISPATCH_WEIGHT, + size: DEFAULT_SIZE, + reward, + dispatch_fee_payment, + }, + ) + }) + .into_iter() + .collect(), + confirmed_nonce: Some(confirmed_nonce), + } + } + + fn prepare_strategy() -> (TestRaceState, TestStrategy) { + let mut race_state = RaceState { + best_finalized_source_header_id_at_source: Some(header_id(1)), + best_finalized_source_header_id_at_best_target: Some(header_id(1)), + best_target_header_id: Some(header_id(1)), + best_finalized_target_header_id: Some(header_id(1)), + nonces_to_submit: None, + nonces_submitted: None, + }; + + let mut race_strategy = TestStrategy { + max_unrewarded_relayer_entries_at_target: 4, + max_unconfirmed_nonces_at_target: 4, + max_messages_in_single_batch: 4, + max_messages_weight_in_single_batch: 4, + max_messages_size_in_single_batch: 4, + latest_confirmed_nonces_at_source: vec![(header_id(1), 19)].into_iter().collect(), + lane_source_client: TestSourceClient::default(), + lane_target_client: TestTargetClient::default(), + target_nonces: Some(TargetClientNonces { + latest_nonce: 19, + nonces_data: DeliveryRaceTargetNoncesData { + confirmed_nonce: 19, + unrewarded_relayers: UnrewardedRelayersState { + unrewarded_relayer_entries: 0, + messages_in_oldest_entry: 0, + total_messages: 0, + }, + }, + }), + strategy: BasicStrategy::new(), + relay_strategy: MixStrategy::new(RelayerMode::Altruistic), + }; + + race_strategy.strategy.source_nonces_updated( + header_id(1), + source_nonces(20..=23, 19, DEFAULT_REWARD, DispatchFeePayment::AtSourceChain), + ); + + let target_nonces = TargetClientNonces { latest_nonce: 19, nonces_data: () }; + race_strategy + .strategy + .best_target_nonces_updated(target_nonces.clone(), &mut race_state); + race_strategy + .strategy + .finalized_target_nonces_updated(target_nonces, &mut race_state); + + (race_state, race_strategy) + } + + fn proof_parameters(state_required: bool, weight: Weight) -> MessageProofParameters { + MessageProofParameters { + outbound_state_proof_required: state_required, + dispatch_weight: weight, + } + } + + #[test] + fn weights_map_works_as_nonces_range() { + fn build_map( + range: RangeInclusive, + ) -> MessageDetailsMap { + range + .map(|idx| { + ( + idx, + MessageDetails { + dispatch_weight: idx, + size: idx as _, + reward: idx as _, + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + }, + ) + }) + .collect() + } + + let map = build_map(20..=30); + + assert_eq!(map.begin(), 20); + assert_eq!(map.end(), 30); + assert_eq!(map.clone().greater_than(10), Some(build_map(20..=30))); + assert_eq!(map.clone().greater_than(19), Some(build_map(20..=30))); + assert_eq!(map.clone().greater_than(20), Some(build_map(21..=30))); + assert_eq!(map.clone().greater_than(25), Some(build_map(26..=30))); + assert_eq!(map.clone().greater_than(29), Some(build_map(30..=30))); + assert_eq!(map.greater_than(30), None); + } + + #[async_std::test] + async fn message_delivery_strategy_selects_messages_to_deliver() { + let (state, mut strategy) = prepare_strategy(); + + // both sides are ready to relay new messages + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(false, 4))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_selects_nothing_if_too_many_confirmations_missing() { + let (state, mut strategy) = prepare_strategy(); + + // if there are already `max_unconfirmed_nonces_at_target` messages on target, + // we need to wait until confirmations will be delivered by receiving race + strategy.latest_confirmed_nonces_at_source = vec![( + header_id(1), + strategy.target_nonces.as_ref().unwrap().latest_nonce - + strategy.max_unconfirmed_nonces_at_target, + )] + .into_iter() + .collect(); + assert_eq!(strategy.select_nonces_to_deliver(state).await, None); + } + + #[async_std::test] + async fn message_delivery_strategy_includes_outbound_state_proof_when_new_nonces_are_available() + { + let (state, mut strategy) = prepare_strategy(); + + // if there are new confirmed nonces on source, we want to relay this information + // to target to prune rewards queue + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = + prev_confirmed_nonce_at_source - 1; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(true, 4))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_selects_nothing_if_there_are_too_many_unrewarded_relayers() { + let (state, mut strategy) = prepare_strategy(); + + // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, + // we need to wait until rewards will be paid + { + let mut unrewarded_relayers = + &mut strategy.target_nonces.as_mut().unwrap().nonces_data.unrewarded_relayers; + unrewarded_relayers.unrewarded_relayer_entries = + strategy.max_unrewarded_relayer_entries_at_target; + unrewarded_relayers.messages_in_oldest_entry = 4; + } + assert_eq!(strategy.select_nonces_to_deliver(state).await, None); + } + + #[async_std::test] + async fn message_delivery_strategy_selects_nothing_if_proved_rewards_is_not_enough_to_remove_oldest_unrewarded_entry( + ) { + let (state, mut strategy) = prepare_strategy(); + + // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, + // we need to prove at least `messages_in_oldest_entry` rewards + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + { + let mut nonces_data = &mut strategy.target_nonces.as_mut().unwrap().nonces_data; + nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 1; + let mut unrewarded_relayers = &mut nonces_data.unrewarded_relayers; + unrewarded_relayers.unrewarded_relayer_entries = + strategy.max_unrewarded_relayer_entries_at_target; + unrewarded_relayers.messages_in_oldest_entry = 4; + } + assert_eq!(strategy.select_nonces_to_deliver(state).await, None); + } + + #[async_std::test] + async fn message_delivery_strategy_includes_outbound_state_proof_if_proved_rewards_is_enough() { + let (state, mut strategy) = prepare_strategy(); + + // if there are already `max_unrewarded_relayer_entries_at_target` entries at target, + // we need to prove at least `messages_in_oldest_entry` rewards + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + { + let mut nonces_data = &mut strategy.target_nonces.as_mut().unwrap().nonces_data; + nonces_data.confirmed_nonce = prev_confirmed_nonce_at_source - 3; + let mut unrewarded_relayers = &mut nonces_data.unrewarded_relayers; + unrewarded_relayers.unrewarded_relayer_entries = + strategy.max_unrewarded_relayer_entries_at_target; + unrewarded_relayers.messages_in_oldest_entry = 3; + } + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(true, 4))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_limits_batch_by_messages_weight() { + let (state, mut strategy) = prepare_strategy(); + + // not all queued messages may fit in the batch, because batch has max weight + strategy.max_messages_weight_in_single_batch = 3; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=22), proof_parameters(false, 3))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_accepts_single_message_even_if_its_weight_overflows_maximal_weight( + ) { + let (state, mut strategy) = prepare_strategy(); + + // first message doesn't fit in the batch, because it has weight (10) that overflows max + // weight (4) + strategy.strategy.source_queue_mut()[0].1.get_mut(&20).unwrap().dispatch_weight = 10; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=20), proof_parameters(false, 10))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_limits_batch_by_messages_size() { + let (state, mut strategy) = prepare_strategy(); + + // not all queued messages may fit in the batch, because batch has max weight + strategy.max_messages_size_in_single_batch = 3; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=22), proof_parameters(false, 3))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_accepts_single_message_even_if_its_weight_overflows_maximal_size( + ) { + let (state, mut strategy) = prepare_strategy(); + + // first message doesn't fit in the batch, because it has weight (10) that overflows max + // weight (4) + strategy.strategy.source_queue_mut()[0].1.get_mut(&20).unwrap().size = 10; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=20), proof_parameters(false, 1))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_limits_batch_by_messages_count_when_there_is_upper_limit() { + let (state, mut strategy) = prepare_strategy(); + + // not all queued messages may fit in the batch, because batch has max number of messages + // limit + strategy.max_messages_in_single_batch = 3; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=22), proof_parameters(false, 3))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_limits_batch_by_messages_count_when_there_are_unconfirmed_nonces( + ) { + let (state, mut strategy) = prepare_strategy(); + + // 1 delivery confirmation from target to source is still missing, so we may only + // relay 3 new messages + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + strategy.latest_confirmed_nonces_at_source = + vec![(header_id(1), prev_confirmed_nonce_at_source - 1)].into_iter().collect(); + strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = + prev_confirmed_nonce_at_source - 1; + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=22), proof_parameters(false, 3))) + ); + } + + #[async_std::test] + async fn message_delivery_strategy_waits_for_confirmed_nonce_header_to_appear_on_target() { + // 1 delivery confirmation from target to source is still missing, so we may deliver + // reward confirmation with our message delivery transaction. But the problem is that + // the reward has been paid at header 2 && this header is still unknown to target node. + // + // => so we can't deliver more than 3 messages + let (mut state, mut strategy) = prepare_strategy(); + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + strategy.latest_confirmed_nonces_at_source = vec![ + (header_id(1), prev_confirmed_nonce_at_source - 1), + (header_id(2), prev_confirmed_nonce_at_source), + ] + .into_iter() + .collect(); + strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = + prev_confirmed_nonce_at_source - 1; + state.best_finalized_source_header_id_at_best_target = Some(header_id(1)); + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=22), proof_parameters(false, 3))) + ); + + // the same situation, but the header 2 is known to the target node, so we may deliver + // reward confirmation + let (mut state, mut strategy) = prepare_strategy(); + let prev_confirmed_nonce_at_source = + strategy.latest_confirmed_nonces_at_source.back().unwrap().1; + strategy.latest_confirmed_nonces_at_source = vec![ + (header_id(1), prev_confirmed_nonce_at_source - 1), + (header_id(2), prev_confirmed_nonce_at_source), + ] + .into_iter() + .collect(); + strategy.target_nonces.as_mut().unwrap().nonces_data.confirmed_nonce = + prev_confirmed_nonce_at_source - 1; + state.best_finalized_source_header_id_at_source = Some(header_id(2)); + state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(true, 4))) + ); + } + + #[async_std::test] + async fn source_header_is_required_when_confirmations_are_required() { + // let's prepare situation when: + // - all messages [20; 23] have been generated at source block#1; + let (mut state, mut strategy) = prepare_strategy(); + // + // - messages [20; 21] have been delivered, but messages [11; 20] can't be delivered because + // of unrewarded relayers vector capacity; + strategy.max_unconfirmed_nonces_at_target = 2; + assert_eq!( + strategy.select_nonces_to_deliver(state.clone()).await, + Some(((20..=21), proof_parameters(false, 2))) + ); + strategy.finalized_target_nonces_updated( + TargetClientNonces { + latest_nonce: 21, + nonces_data: DeliveryRaceTargetNoncesData { + confirmed_nonce: 19, + unrewarded_relayers: UnrewardedRelayersState { + unrewarded_relayer_entries: 2, + messages_in_oldest_entry: 2, + total_messages: 2, + }, + }, + }, + &mut state, + ); + assert_eq!(strategy.select_nonces_to_deliver(state).await, None); + // + // - messages [1; 10] receiving confirmation has been delivered at source block#2; + strategy.source_nonces_updated( + header_id(2), + SourceClientNonces { new_nonces: MessageDetailsMap::new(), confirmed_nonce: Some(21) }, + ); + // + // - so now we'll need to relay source block#11 to be able to accept messages [11; 20]. + assert_eq!(strategy.required_source_header_at_target(&header_id(1)), Some(header_id(2))); + } + + #[async_std::test] + async fn rational_relayer_is_delivering_messages_if_cost_is_equal_to_reward() { + let (state, mut strategy) = prepare_strategy(); + strategy.relay_strategy = MixStrategy::new(RelayerMode::Rational); + + // so now we have: + // - 20..=23 with reward = cost + // => strategy shall select all 20..=23 + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(false, 4))) + ); + } + + #[async_std::test] + async fn rational_relayer_is_not_delivering_messages_if_cost_is_larger_than_reward() { + let (mut state, mut strategy) = prepare_strategy(); + let nonces = source_nonces( + 24..=25, + 19, + DEFAULT_REWARD - BASE_MESSAGE_DELIVERY_TRANSACTION_COST, + DispatchFeePayment::AtSourceChain, + ); + strategy.strategy.source_nonces_updated(header_id(2), nonces); + state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); + strategy.relay_strategy = MixStrategy::new(RelayerMode::Rational); + + // so now we have: + // - 20..=23 with reward = cost + // - 24..=25 with reward less than cost + // => strategy shall only select 20..=23 + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=23), proof_parameters(false, 4))) + ); + } + + #[async_std::test] + async fn rational_relayer_is_delivering_unpaid_messages() { + async fn test_with_dispatch_fee_payment( + dispatch_fee_payment: DispatchFeePayment, + ) -> Option<(RangeInclusive, MessageProofParameters)> { + let (mut state, mut strategy) = prepare_strategy(); + let nonces = source_nonces( + 24..=24, + 19, + DEFAULT_REWARD - DEFAULT_DISPATCH_WEIGHT, + dispatch_fee_payment, + ); + strategy.strategy.source_nonces_updated(header_id(2), nonces); + state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); + strategy.max_unrewarded_relayer_entries_at_target = 100; + strategy.max_unconfirmed_nonces_at_target = 100; + strategy.max_messages_in_single_batch = 100; + strategy.max_messages_weight_in_single_batch = 100; + strategy.max_messages_size_in_single_batch = 100; + strategy.relay_strategy = MixStrategy::new(RelayerMode::Rational); + + // so now we have: + // - 20..=23 with reward = cost + // - 24..=24 with reward less than cost, but we're deducting `DEFAULT_DISPATCH_WEIGHT` + // from the cost, so it should be fine; + // => when MSG#24 fee is paid at the target chain, strategy shall select all 20..=24 + // => when MSG#25 fee is paid at the source chain, strategy shall only select 20..=23 + strategy.select_nonces_to_deliver(state).await + } + + assert_eq!( + test_with_dispatch_fee_payment(DispatchFeePayment::AtTargetChain).await, + Some(((20..=24), proof_parameters(false, 5))) + ); + assert_eq!( + test_with_dispatch_fee_payment(DispatchFeePayment::AtSourceChain).await, + Some(((20..=23), proof_parameters(false, 4))) + ); + } + + #[async_std::test] + async fn relayer_uses_flattened_view_of_the_source_queue_to_select_nonces() { + // Real scenario that has happened on test deployments: + // 1) relayer witnessed M1 at block 1 => it has separate entry in the `source_queue` + // 2) relayer witnessed M2 at block 2 => it has separate entry in the `source_queue` + // 3) if block 2 is known to the target node, then both M1 and M2 are selected for single + // delivery, even though weight(M1+M2) > larger than largest allowed weight + // + // This was happening because selector (`select_nonces_for_delivery_transaction`) has been + // called for every `source_queue` entry separately without preserving any context. + let (mut state, mut strategy) = prepare_strategy(); + let nonces = source_nonces(24..=25, 19, DEFAULT_REWARD, DispatchFeePayment::AtSourceChain); + strategy.strategy.source_nonces_updated(header_id(2), nonces); + strategy.max_unrewarded_relayer_entries_at_target = 100; + strategy.max_unconfirmed_nonces_at_target = 100; + strategy.max_messages_in_single_batch = 5; + strategy.max_messages_weight_in_single_batch = 100; + strategy.max_messages_size_in_single_batch = 100; + state.best_finalized_source_header_id_at_best_target = Some(header_id(2)); + + assert_eq!( + strategy.select_nonces_to_deliver(state).await, + Some(((20..=24), proof_parameters(false, 5))) + ); + } +} diff --git a/bridges/relays/messages/src/message_race_loop.rs b/relays/messages/src/message_race_loop.rs similarity index 92% rename from bridges/relays/messages/src/message_race_loop.rs rename to relays/messages/src/message_race_loop.rs index 3b427a2d0e27..a7254f70ee4a 100644 --- a/bridges/relays/messages/src/message_race_loop.rs +++ b/relays/messages/src/message_race_loop.rs @@ -54,10 +54,12 @@ pub trait MessageRace { } /// State of race source client. -type SourceClientState

= ClientState<

::SourceHeaderId,

::TargetHeaderId>; +type SourceClientState

= + ClientState<

::SourceHeaderId,

::TargetHeaderId>; /// State of race target client. -type TargetClientState

= ClientState<

::TargetHeaderId,

::SourceHeaderId>; +type TargetClientState

= + ClientState<

::TargetHeaderId,

::SourceHeaderId>; /// Inclusive nonces range. pub trait NoncesRange: Debug + Sized { @@ -76,7 +78,7 @@ pub struct SourceClientNonces { /// New nonces range known to the client. `New` here means all nonces generated after /// `prev_latest_nonce` passed to the `SourceClient::nonces` method. pub new_nonces: NoncesRange, - /// Latest nonce that is confirmed to the bridged client. This nonce only makes + /// The latest nonce that is confirmed to the bridged client. This nonce only makes /// sense in some races. In other races it is `None`. pub confirmed_nonce: Option, } @@ -84,7 +86,7 @@ pub struct SourceClientNonces { /// Nonces on the race target client. #[derive(Debug, Clone)] pub struct TargetClientNonces { - /// Latest nonce that is known to the target client. + /// The latest nonce that is known to the target client. pub latest_nonce: MessageNonce, /// Additional data from target node that may be used by the race. pub nonces_data: TargetNoncesData, @@ -93,7 +95,7 @@ pub struct TargetClientNonces { /// One of message lane clients, which is source client for the race. #[async_trait] pub trait SourceClient { - /// Type of error this clients returns. + /// Type of error these clients returns. type Error: std::fmt::Debug + MaybeConnectionError; /// Type of nonces range returned by the source client. type NoncesRange: NoncesRange; @@ -118,7 +120,7 @@ pub trait SourceClient { /// One of message lane clients, which is target client for the race. #[async_trait] pub trait TargetClient { - /// Type of error this clients returns. + /// Type of error these clients returns. type Error: std::fmt::Debug + MaybeConnectionError; /// Type of the additional data from the target client, used by the race. type TargetNoncesData: std::fmt::Debug; @@ -155,19 +157,26 @@ pub trait RaceStrategy: Debug { /// Should return true if nothing has to be synced. fn is_empty(&self) -> bool; /// Return id of source header that is required to be on target to continue synchronization. - fn required_source_header_at_target(&self, current_best: &SourceHeaderId) -> Option; - /// Return best nonce at source node. + fn required_source_header_at_target( + &self, + current_best: &SourceHeaderId, + ) -> Option; + /// Return the best nonce at source node. /// /// `Some` is returned only if we are sure that the value is greater or equal /// than the result of `best_at_target`. fn best_at_source(&self) -> Option; - /// Return best nonce at target node. + /// Return the best nonce at target node. /// /// May return `None` if value is yet unknown. fn best_at_target(&self) -> Option; /// Called when nonces are updated at source node of the race. - fn source_nonces_updated(&mut self, at_block: SourceHeaderId, nonces: SourceClientNonces); + fn source_nonces_updated( + &mut self, + at_block: SourceHeaderId, + nonces: SourceClientNonces, + ); /// Called when best nonces are updated at target node of the race. fn best_target_nonces_updated( &mut self, @@ -197,7 +206,7 @@ pub struct RaceState { /// Best finalized source header id at the best block on the target /// client (at the `best_finalized_source_header_id_at_best_target`). pub best_finalized_source_header_id_at_best_target: Option, - /// Best header id at the target client. + /// The best header id at the target client. pub best_target_header_id: Option, /// Best finalized header id at the target client. pub best_finalized_target_header_id: Option, @@ -430,8 +439,10 @@ pub async fn run, TC: TargetClient

>( strategy, ); - return Err(FailedClient::Both); - } else if race_state.nonces_to_submit.is_none() && race_state.nonces_submitted.is_none() && strategy.is_empty() + return Err(FailedClient::Both) + } else if race_state.nonces_to_submit.is_none() && + race_state.nonces_submitted.is_none() && + strategy.is_empty() { stall_countdown = Instant::now(); } @@ -439,7 +450,8 @@ pub async fn run, TC: TargetClient

>( if source_client_is_online { source_client_is_online = false; - let nonces_to_deliver = select_nonces_to_deliver(race_state.clone(), &mut strategy).await; + let nonces_to_deliver = + select_nonces_to_deliver(race_state.clone(), &mut strategy).await; let best_at_source = strategy.best_at_source(); if let Some((at_block, nonces_range, proof_parameters)) = nonces_to_deliver { @@ -451,9 +463,7 @@ pub async fn run, TC: TargetClient

>( at_block, ); source_generate_proof.set( - race_source - .generate_proof(at_block, nonces_range, proof_parameters) - .fuse(), + race_source.generate_proof(at_block, nonces_range, proof_parameters).fuse(), ); } else if source_nonces_required && best_at_source.is_some() { log::debug!(target: "bridge", "Asking {} about message nonces", P::source_name()); @@ -516,7 +526,9 @@ pub async fn run, TC: TargetClient

>( } } -impl Default for RaceState { +impl Default + for RaceState +{ fn default() -> Self { RaceState { best_finalized_source_header_id_at_source: None, @@ -539,7 +551,7 @@ where let need_update = now_time.saturating_duration_since(prev_time) > Duration::from_secs(10); if !need_update { - return prev_time; + return prev_time } let now_best_nonce_at_source = strategy.best_at_source(); @@ -569,11 +581,7 @@ where .select_nonces_to_deliver(race_state) .await .map(|(nonces_range, proof_parameters)| { - ( - best_finalized_source_header_id_at_best_target, - nonces_range, - proof_parameters, - ) + (best_finalized_source_header_id_at_best_target, nonces_range, proof_parameters) }) } @@ -592,8 +600,14 @@ mod tests { // target node only knows about source' BEST_AT_TARGET block // source node has BEST_AT_SOURCE > BEST_AT_TARGET block let mut race_state = RaceState::<_, _, ()> { - best_finalized_source_header_id_at_source: Some(HeaderId(BEST_AT_SOURCE, BEST_AT_SOURCE)), - best_finalized_source_header_id_at_best_target: Some(HeaderId(BEST_AT_TARGET, BEST_AT_TARGET)), + best_finalized_source_header_id_at_source: Some(HeaderId( + BEST_AT_SOURCE, + BEST_AT_SOURCE, + )), + best_finalized_source_header_id_at_best_target: Some(HeaderId( + BEST_AT_TARGET, + BEST_AT_TARGET, + )), best_target_header_id: Some(HeaderId(0, 0)), best_finalized_target_header_id: Some(HeaderId(0, 0)), nonces_to_submit: None, @@ -604,16 +618,10 @@ mod tests { let mut strategy = BasicStrategy::new(); strategy.source_nonces_updated( HeaderId(GENERATED_AT, GENERATED_AT), - SourceClientNonces { - new_nonces: 0..=10, - confirmed_nonce: None, - }, + SourceClientNonces { new_nonces: 0..=10, confirmed_nonce: None }, ); strategy.best_target_nonces_updated( - TargetClientNonces { - latest_nonce: 5u64, - nonces_data: (), - }, + TargetClientNonces { latest_nonce: 5u64, nonces_data: () }, &mut race_state, ); diff --git a/bridges/relays/messages/src/message_race_receiving.rs b/relays/messages/src/message_race_receiving.rs similarity index 87% rename from bridges/relays/messages/src/message_race_receiving.rs rename to relays/messages/src/message_race_receiving.rs index 4381b63591f7..5aa36cbd9c6d 100644 --- a/bridges/relays/messages/src/message_race_receiving.rs +++ b/relays/messages/src/message_race_receiving.rs @@ -11,18 +11,21 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -//! Message receiving race delivers proof-of-messages-delivery from lane.target to lane.source. - -use crate::message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}; -use crate::message_lane_loop::{ - SourceClient as MessageLaneSourceClient, SourceClientState, TargetClient as MessageLaneTargetClient, - TargetClientState, -}; -use crate::message_race_loop::{ - MessageRace, NoncesRange, SourceClient, SourceClientNonces, TargetClient, TargetClientNonces, +//! Message receiving race delivers proof-of-messages-delivery from "lane.target" to "lane.source". + +use crate::{ + message_lane::{MessageLane, SourceHeaderIdOf, TargetHeaderIdOf}, + message_lane_loop::{ + SourceClient as MessageLaneSourceClient, SourceClientState, + TargetClient as MessageLaneTargetClient, TargetClientState, + }, + message_race_loop::{ + MessageRace, NoncesRange, SourceClient, SourceClientNonces, TargetClient, + TargetClientNonces, + }, + message_race_strategy::BasicStrategy, + metrics::MessageLaneLoopMetrics, }; -use crate::message_race_strategy::BasicStrategy; -use crate::metrics::MessageLaneLoopMetrics; use async_trait::async_trait; use bp_messages::MessageNonce; @@ -129,11 +132,7 @@ where nonces: RangeInclusive, _proof_parameters: Self::ProofParameters, ) -> Result< - ( - TargetHeaderIdOf

, - RangeInclusive, - P::MessagesReceivingProof, - ), + (TargetHeaderIdOf

, RangeInclusive, P::MessagesReceivingProof), Self::Error, > { self.client @@ -168,19 +167,14 @@ where at_block: SourceHeaderIdOf

, update_metrics: bool, ) -> Result<(SourceHeaderIdOf

, TargetClientNonces<()>), Self::Error> { - let (at_block, latest_confirmed_nonce) = self.client.latest_confirmed_received_nonce(at_block).await?; + let (at_block, latest_confirmed_nonce) = + self.client.latest_confirmed_received_nonce(at_block).await?; if update_metrics { if let Some(metrics_msg) = self.metrics_msg.as_ref() { metrics_msg.update_source_latest_confirmed_nonce::

(latest_confirmed_nonce); } } - Ok(( - at_block, - TargetClientNonces { - latest_nonce: latest_confirmed_nonce, - nonces_data: (), - }, - )) + Ok((at_block, TargetClientNonces { latest_nonce: latest_confirmed_nonce, nonces_data: () })) } async fn submit_proof( @@ -189,9 +183,7 @@ where nonces: RangeInclusive, proof: P::MessagesReceivingProof, ) -> Result, Self::Error> { - self.client - .submit_messages_receiving_proof(generated_at_block, proof) - .await?; + self.client.submit_messages_receiving_proof(generated_at_block, proof).await?; Ok(nonces) } } diff --git a/bridges/relays/messages/src/message_race_strategy.rs b/relays/messages/src/message_race_strategy.rs similarity index 88% rename from bridges/relays/messages/src/message_race_strategy.rs rename to relays/messages/src/message_race_strategy.rs index ed4a276e1429..9b9091b979f6 100644 --- a/bridges/relays/messages/src/message_race_strategy.rs +++ b/relays/messages/src/message_race_strategy.rs @@ -17,7 +17,9 @@ //! 2) new nonces may be proved to target node (i.e. they have appeared at the //! block, which is known to the target node). -use crate::message_race_loop::{NoncesRange, RaceState, RaceStrategy, SourceClientNonces, TargetClientNonces}; +use crate::message_race_loop::{ + NoncesRange, RaceState, RaceStrategy, SourceClientNonces, TargetClientNonces, +}; use async_trait::async_trait; use bp_messages::MessageNonce; @@ -40,15 +42,29 @@ pub struct BasicStrategy< > { /// All queued nonces. source_queue: SourceRangesQueue, - /// Best nonce known to target node (at its best block). `None` if it has not been received yet. + /// The best nonce known to target node (at its best block). `None` if it has not been received + /// yet. best_target_nonce: Option, /// Unused generic types dump. _phantom: PhantomData<(TargetHeaderNumber, TargetHeaderHash, Proof)>, } -impl - BasicStrategy -where +impl< + SourceHeaderNumber, + SourceHeaderHash, + TargetHeaderNumber, + TargetHeaderHash, + SourceNoncesRange, + Proof, + > + BasicStrategy< + SourceHeaderNumber, + SourceHeaderHash, + TargetHeaderNumber, + TargetHeaderHash, + SourceNoncesRange, + Proof, + > where SourceHeaderHash: Clone, SourceHeaderNumber: Clone + Ord, SourceNoncesRange: NoncesRange, @@ -79,9 +95,9 @@ where /// Returns index of the latest source queue entry, that may be delivered to the target node. /// - /// Returns `None` if no entries may be delivered. All entries before and including the `Some(_)` - /// index are guaranteed to be witnessed at source blocks that are known to be finalized at the - /// target node. + /// Returns `None` if no entries may be delivered. All entries before and including the + /// `Some(_)` index are guaranteed to be witnessed at source blocks that are known to be + /// finalized at the target node. pub fn maximal_available_source_queue_index( &self, race_state: RaceState< @@ -95,12 +111,12 @@ where // if we have already selected nonces that we want to submit, do nothing if race_state.nonces_to_submit.is_some() { - return None; + return None } // if we already submitted some nonces, do nothing if race_state.nonces_submitted.is_some() { - return None; + return None } // 1) we want to deliver all nonces, starting from `target_nonce + 1` @@ -124,17 +140,34 @@ where while let Some((queued_at, queued_range)) = self.source_queue.pop_front() { if let Some(range_to_requeue) = queued_range.greater_than(nonce) { self.source_queue.push_front((queued_at, range_to_requeue)); - break; + break } } } } #[async_trait] -impl - RaceStrategy, HeaderId, Proof> - for BasicStrategy -where +impl< + SourceHeaderNumber, + SourceHeaderHash, + TargetHeaderNumber, + TargetHeaderHash, + SourceNoncesRange, + Proof, + > + RaceStrategy< + HeaderId, + HeaderId, + Proof, + > + for BasicStrategy< + SourceHeaderNumber, + SourceHeaderHash, + TargetHeaderNumber, + TargetHeaderHash, + SourceNoncesRange, + Proof, + > where SourceHeaderHash: Clone + Debug + Send, SourceHeaderNumber: Clone + Ord + Debug + Send, SourceNoncesRange: NoncesRange + Debug + Send, @@ -162,7 +195,8 @@ where fn best_at_source(&self) -> Option { let best_in_queue = self.source_queue.back().map(|(_, range)| range.end()); match (best_in_queue, self.best_target_nonce) { - (Some(best_in_queue), Some(best_target_nonce)) if best_in_queue > best_target_nonce => Some(best_in_queue), + (Some(best_in_queue), Some(best_target_nonce)) if best_in_queue > best_target_nonce => + Some(best_in_queue), (_, Some(best_target_nonce)) => Some(best_target_nonce), (_, None) => None, } @@ -205,18 +239,17 @@ where if let Some(best_target_nonce) = self.best_target_nonce { if nonce < best_target_nonce { - return; + return } } while let Some(true) = self.source_queue.front().map(|(_, range)| range.begin() <= nonce) { - let maybe_subrange = self - .source_queue - .pop_front() - .and_then(|(at_block, range)| range.greater_than(nonce).map(|subrange| (at_block, subrange))); + let maybe_subrange = self.source_queue.pop_front().and_then(|(at_block, range)| { + range.greater_than(nonce).map(|subrange| (at_block, subrange)) + }); if let Some((at_block, subrange)) = maybe_subrange { self.source_queue.push_front((at_block, subrange)); - break; + break } } @@ -238,10 +271,8 @@ where race_state.nonces_submitted = None; } - self.best_target_nonce = Some(std::cmp::max( - self.best_target_nonce.unwrap_or(nonces.latest_nonce), - nonce, - )); + self.best_target_nonce = + Some(std::cmp::max(self.best_target_nonce.unwrap_or(nonces.latest_nonce), nonce)); } fn finalized_target_nonces_updated( @@ -278,9 +309,12 @@ where #[cfg(test)] mod tests { use super::*; - use crate::message_lane::MessageLane; - use crate::message_lane_loop::tests::{ - header_id, TestMessageLane, TestMessagesProof, TestSourceHeaderHash, TestSourceHeaderNumber, + use crate::{ + message_lane::MessageLane, + message_lane_loop::tests::{ + header_id, TestMessageLane, TestMessagesProof, TestSourceHeaderHash, + TestSourceHeaderNumber, + }, }; type SourceNoncesRange = RangeInclusive; @@ -295,17 +329,11 @@ mod tests { >; fn source_nonces(new_nonces: SourceNoncesRange) -> SourceClientNonces { - SourceClientNonces { - new_nonces, - confirmed_nonce: None, - } + SourceClientNonces { new_nonces, confirmed_nonce: None } } fn target_nonces(latest_nonce: MessageNonce) -> TargetClientNonces<()> { - TargetClientNonces { - latest_nonce, - nonces_data: (), - } + TargetClientNonces { latest_nonce, nonces_data: () } } #[test] @@ -420,18 +448,12 @@ mod tests { strategy.source_nonces_updated(header_id(5), source_nonces(7..=8)); state.best_finalized_source_header_id_at_best_target = Some(header_id(4)); - assert_eq!( - strategy.select_nonces_to_deliver(state.clone()).await, - Some((1..=6, ())) - ); + assert_eq!(strategy.select_nonces_to_deliver(state.clone()).await, Some((1..=6, ()))); strategy.best_target_nonces_updated(target_nonces(6), &mut state); assert_eq!(strategy.select_nonces_to_deliver(state.clone()).await, None); state.best_finalized_source_header_id_at_best_target = Some(header_id(5)); - assert_eq!( - strategy.select_nonces_to_deliver(state.clone()).await, - Some((7..=8, ())) - ); + assert_eq!(strategy.select_nonces_to_deliver(state.clone()).await, Some((7..=8, ()))); strategy.best_target_nonces_updated(target_nonces(8), &mut state); assert_eq!(strategy.select_nonces_to_deliver(state.clone()).await, None); } @@ -471,16 +493,17 @@ mod tests { strategy.source_nonces_updated(header_id(3), source_nonces(7..=9)); fn source_queue_nonces( - source_queue: &SourceRangesQueue, + source_queue: &SourceRangesQueue< + TestSourceHeaderHash, + TestSourceHeaderNumber, + SourceNoncesRange, + >, ) -> Vec { source_queue.iter().flat_map(|(_, range)| range.clone()).collect() } strategy.remove_le_nonces_from_source_queue(1); - assert_eq!( - source_queue_nonces(&strategy.source_queue), - vec![2, 3, 4, 5, 6, 7, 8, 9], - ); + assert_eq!(source_queue_nonces(&strategy.source_queue), vec![2, 3, 4, 5, 6, 7, 8, 9],); strategy.remove_le_nonces_from_source_queue(5); assert_eq!(source_queue_nonces(&strategy.source_queue), vec![6, 7, 8, 9],); diff --git a/relays/messages/src/metrics.rs b/relays/messages/src/metrics.rs new file mode 100644 index 000000000000..eac2f703692a --- /dev/null +++ b/relays/messages/src/metrics.rs @@ -0,0 +1,126 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Metrics for message lane relay loop. + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{SourceClientState, TargetClientState}, +}; + +use bp_messages::MessageNonce; +use relay_utils::metrics::{ + metric_name, register, GaugeVec, Metric, Opts, PrometheusError, Registry, U64, +}; + +/// Message lane relay metrics. +/// +/// Cloning only clones references. +#[derive(Clone)] +pub struct MessageLaneLoopMetrics { + /// Best finalized block numbers - "source", "target", "source_at_target", "target_at_source". + best_block_numbers: GaugeVec, + /// Lane state nonces: "source_latest_generated", "source_latest_confirmed", + /// "target_latest_received", "target_latest_confirmed". + lane_state_nonces: GaugeVec, +} + +impl MessageLaneLoopMetrics { + /// Create and register messages loop metrics. + pub fn new(prefix: Option<&str>) -> Result { + Ok(MessageLaneLoopMetrics { + best_block_numbers: GaugeVec::new( + Opts::new( + metric_name(prefix, "best_block_numbers"), + "Best finalized block numbers", + ), + &["type"], + )?, + lane_state_nonces: GaugeVec::new( + Opts::new(metric_name(prefix, "lane_state_nonces"), "Nonces of the lane state"), + &["type"], + )?, + }) + } + + /// Update source client state metrics. + pub fn update_source_state(&self, source_client_state: SourceClientState

) { + self.best_block_numbers + .with_label_values(&["source"]) + .set(source_client_state.best_self.0.into()); + self.best_block_numbers + .with_label_values(&["target_at_source"]) + .set(source_client_state.best_finalized_peer_at_best_self.0.into()); + } + + /// Update target client state metrics. + pub fn update_target_state(&self, target_client_state: TargetClientState

) { + self.best_block_numbers + .with_label_values(&["target"]) + .set(target_client_state.best_self.0.into()); + self.best_block_numbers + .with_label_values(&["source_at_target"]) + .set(target_client_state.best_finalized_peer_at_best_self.0.into()); + } + + /// Update latest generated nonce at source. + pub fn update_source_latest_generated_nonce( + &self, + source_latest_generated_nonce: MessageNonce, + ) { + self.lane_state_nonces + .with_label_values(&["source_latest_generated"]) + .set(source_latest_generated_nonce); + } + + /// Update the latest confirmed nonce at source. + pub fn update_source_latest_confirmed_nonce( + &self, + source_latest_confirmed_nonce: MessageNonce, + ) { + self.lane_state_nonces + .with_label_values(&["source_latest_confirmed"]) + .set(source_latest_confirmed_nonce); + } + + /// Update the latest received nonce at target. + pub fn update_target_latest_received_nonce( + &self, + target_latest_generated_nonce: MessageNonce, + ) { + self.lane_state_nonces + .with_label_values(&["target_latest_received"]) + .set(target_latest_generated_nonce); + } + + /// Update the latest confirmed nonce at target. + pub fn update_target_latest_confirmed_nonce( + &self, + target_latest_confirmed_nonce: MessageNonce, + ) { + self.lane_state_nonces + .with_label_values(&["target_latest_confirmed"]) + .set(target_latest_confirmed_nonce); + } +} + +impl Metric for MessageLaneLoopMetrics { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.best_block_numbers.clone(), registry)?; + register(self.lane_state_nonces.clone(), registry)?; + Ok(()) + } +} diff --git a/relays/messages/src/relay_strategy/altruistic_strategy.rs b/relays/messages/src/relay_strategy/altruistic_strategy.rs new file mode 100644 index 000000000000..d6fec7f1297b --- /dev/null +++ b/relays/messages/src/relay_strategy/altruistic_strategy.rs @@ -0,0 +1,45 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Altruistic relay strategy + +use async_trait::async_trait; + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{ + SourceClient as MessageLaneSourceClient, TargetClient as MessageLaneTargetClient, + }, + relay_strategy::{RelayReference, RelayStrategy}, +}; + +/// The relayer doesn't care about rewards. +#[derive(Clone)] +pub struct AltruisticStrategy; + +#[async_trait] +impl RelayStrategy for AltruisticStrategy { + async fn decide< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, + >( + &mut self, + _reference: &mut RelayReference, + ) -> bool { + true + } +} diff --git a/relays/messages/src/relay_strategy/enforcement_strategy.rs b/relays/messages/src/relay_strategy/enforcement_strategy.rs new file mode 100644 index 000000000000..1e9ef5bdbf81 --- /dev/null +++ b/relays/messages/src/relay_strategy/enforcement_strategy.rs @@ -0,0 +1,219 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! enforcement strategy + +use num_traits::Zero; + +use bp_messages::{MessageNonce, Weight}; +use bp_runtime::messages::DispatchFeePayment; + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{ + MessageDetails, SourceClient as MessageLaneSourceClient, + TargetClient as MessageLaneTargetClient, + }, + message_race_loop::NoncesRange, + relay_strategy::{RelayMessagesBatchReference, RelayReference, RelayStrategy}, +}; + +/// Do hard check and run soft check strategy +#[derive(Clone)] +pub struct EnforcementStrategy { + strategy: Strategy, +} + +impl EnforcementStrategy { + pub fn new(strategy: Strategy) -> Self { + Self { strategy } + } +} + +impl EnforcementStrategy { + pub async fn decide< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, + >( + &mut self, + reference: RelayMessagesBatchReference, + ) -> Option { + let mut hard_selected_count = 0; + let mut soft_selected_count = 0; + + let mut selected_weight: Weight = 0; + let mut selected_count: MessageNonce = 0; + + let hard_selected_begin_nonce = + reference.nonces_queue[reference.nonces_queue_range.start].1.begin(); + + // relay reference + let mut relay_reference = RelayReference { + lane_source_client: reference.lane_source_client.clone(), + lane_target_client: reference.lane_target_client.clone(), + + selected_reward: P::SourceChainBalance::zero(), + selected_cost: P::SourceChainBalance::zero(), + selected_size: 0, + + total_reward: P::SourceChainBalance::zero(), + total_confirmations_cost: P::SourceChainBalance::zero(), + total_cost: P::SourceChainBalance::zero(), + + hard_selected_begin_nonce, + selected_prepaid_nonces: 0, + selected_unpaid_weight: 0, + + index: 0, + nonce: 0, + details: MessageDetails { + dispatch_weight: 0, + size: 0, + reward: P::SourceChainBalance::zero(), + dispatch_fee_payment: DispatchFeePayment::AtSourceChain, + }, + }; + + let all_ready_nonces = reference + .nonces_queue + .range(reference.nonces_queue_range.clone()) + .flat_map(|(_, ready_nonces)| ready_nonces.iter()) + .enumerate(); + for (index, (nonce, details)) in all_ready_nonces { + relay_reference.index = index; + relay_reference.nonce = *nonce; + relay_reference.details = *details; + + // Since we (hopefully) have some reserves in `max_messages_weight_in_single_batch` + // and `max_messages_size_in_single_batch`, we may still try to submit transaction + // with single message if message overflows these limits. The worst case would be if + // transaction will be rejected by the target runtime, but at least we have tried. + + // limit messages in the batch by weight + let new_selected_weight = match selected_weight.checked_add(details.dispatch_weight) { + Some(new_selected_weight) + if new_selected_weight <= reference.max_messages_weight_in_single_batch => + new_selected_weight, + new_selected_weight if selected_count == 0 => { + log::warn!( + target: "bridge", + "Going to submit message delivery transaction with declared dispatch \ + weight {:?} that overflows maximal configured weight {}", + new_selected_weight, + reference.max_messages_weight_in_single_batch, + ); + new_selected_weight.unwrap_or(Weight::MAX) + }, + _ => break, + }; + + // limit messages in the batch by size + let new_selected_size = match relay_reference.selected_size.checked_add(details.size) { + Some(new_selected_size) + if new_selected_size <= reference.max_messages_size_in_single_batch => + new_selected_size, + new_selected_size if selected_count == 0 => { + log::warn!( + target: "bridge", + "Going to submit message delivery transaction with message \ + size {:?} that overflows maximal configured size {}", + new_selected_size, + reference.max_messages_size_in_single_batch, + ); + new_selected_size.unwrap_or(u32::MAX) + }, + _ => break, + }; + + // limit number of messages in the batch + let new_selected_count = selected_count + 1; + if new_selected_count > reference.max_messages_in_this_batch { + break + } + relay_reference.selected_size = new_selected_size; + + // If dispatch fee has been paid at the source chain, it means that it is **relayer** + // who's paying for dispatch at the target chain AND reward must cover this dispatch + // fee. + // + // If dispatch fee is paid at the target chain, it means that it'll be withdrawn from + // the dispatch origin account AND reward is not covering this fee. + // + // So in the latter case we're not adding the dispatch weight to the delivery + // transaction weight. + let mut new_selected_prepaid_nonces = relay_reference.selected_prepaid_nonces; + let new_selected_unpaid_weight = match details.dispatch_fee_payment { + DispatchFeePayment::AtSourceChain => { + new_selected_prepaid_nonces += 1; + relay_reference.selected_unpaid_weight.saturating_add(details.dispatch_weight) + }, + DispatchFeePayment::AtTargetChain => relay_reference.selected_unpaid_weight, + }; + relay_reference.selected_prepaid_nonces = new_selected_prepaid_nonces; + relay_reference.selected_unpaid_weight = new_selected_unpaid_weight; + + // now the message has passed all 'strong' checks, and we CAN deliver it. But do we WANT + // to deliver it? It depends on the relayer strategy. + if self.strategy.decide(&mut relay_reference).await { + soft_selected_count = index + 1; + } + + hard_selected_count = index + 1; + selected_weight = new_selected_weight; + selected_count = new_selected_count; + } + + if hard_selected_count != soft_selected_count { + let hard_selected_end_nonce = + hard_selected_begin_nonce + hard_selected_count as MessageNonce - 1; + let soft_selected_begin_nonce = hard_selected_begin_nonce; + let soft_selected_end_nonce = + soft_selected_begin_nonce + soft_selected_count as MessageNonce - 1; + log::warn!( + target: "bridge", + "Relayer may deliver nonces [{:?}; {:?}], but because of its strategy it has selected \ + nonces [{:?}; {:?}].", + hard_selected_begin_nonce, + hard_selected_end_nonce, + soft_selected_begin_nonce, + soft_selected_end_nonce, + ); + + hard_selected_count = soft_selected_count; + } + + if hard_selected_count != 0 { + if relay_reference.selected_reward != P::SourceChainBalance::zero() && + relay_reference.selected_cost != P::SourceChainBalance::zero() + { + log::trace!( + target: "bridge", + "Expected reward from delivering nonces [{:?}; {:?}] is: {:?} - {:?} = {:?}", + hard_selected_begin_nonce, + hard_selected_begin_nonce + hard_selected_count as MessageNonce - 1, + &relay_reference.selected_reward, + &relay_reference.selected_cost, + relay_reference.selected_reward - relay_reference.selected_cost, + ); + } + + Some(hard_selected_begin_nonce + hard_selected_count as MessageNonce - 1) + } else { + None + } + } +} diff --git a/relays/messages/src/relay_strategy/mix_strategy.rs b/relays/messages/src/relay_strategy/mix_strategy.rs new file mode 100644 index 000000000000..4ac7fe1d0ed0 --- /dev/null +++ b/relays/messages/src/relay_strategy/mix_strategy.rs @@ -0,0 +1,58 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Adapter for using `enum RelayerMode` in a context which requires `RelayStrategy`. + +use async_trait::async_trait; + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{ + RelayerMode, SourceClient as MessageLaneSourceClient, + TargetClient as MessageLaneTargetClient, + }, + relay_strategy::{AltruisticStrategy, RationalStrategy, RelayReference, RelayStrategy}, +}; + +/// `RelayerMode` adapter. +#[derive(Clone)] +pub struct MixStrategy { + relayer_mode: RelayerMode, +} + +impl MixStrategy { + /// Create mix strategy instance + pub fn new(relayer_mode: RelayerMode) -> Self { + Self { relayer_mode } + } +} + +#[async_trait] +impl RelayStrategy for MixStrategy { + async fn decide< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, + >( + &mut self, + reference: &mut RelayReference, + ) -> bool { + match self.relayer_mode { + RelayerMode::Altruistic => AltruisticStrategy.decide(reference).await, + RelayerMode::Rational => RationalStrategy.decide(reference).await, + } + } +} diff --git a/relays/messages/src/relay_strategy/mod.rs b/relays/messages/src/relay_strategy/mod.rs new file mode 100644 index 000000000000..d902bd93e5cf --- /dev/null +++ b/relays/messages/src/relay_strategy/mod.rs @@ -0,0 +1,123 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Relayer strategy + +use std::ops::Range; + +use async_trait::async_trait; + +use bp_messages::{MessageNonce, Weight}; + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{ + MessageDetails, MessageDetailsMap, SourceClient as MessageLaneSourceClient, + TargetClient as MessageLaneTargetClient, + }, + message_race_strategy::SourceRangesQueue, +}; + +pub(crate) use self::enforcement_strategy::*; +pub use self::{altruistic_strategy::*, mix_strategy::*, rational_strategy::*}; + +mod altruistic_strategy; +mod enforcement_strategy; +mod mix_strategy; +mod rational_strategy; + +/// Relayer strategy trait +#[async_trait] +pub trait RelayStrategy: 'static + Clone + Send + Sync { + /// The relayer decide how to process nonce by reference. + /// From given set of source nonces, that are ready to be delivered, select nonces + /// to fit into single delivery transaction. + /// + /// The function returns last nonce that must be delivered to the target chain. + async fn decide< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, + >( + &mut self, + reference: &mut RelayReference, + ) -> bool; +} + +/// Reference data for participating in relay +pub struct RelayReference< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, +> { + /// The client that is connected to the message lane source node. + pub lane_source_client: SourceClient, + /// The client that is connected to the message lane target node. + pub lane_target_client: TargetClient, + /// Current block reward summary + pub selected_reward: P::SourceChainBalance, + /// Current block cost summary + pub selected_cost: P::SourceChainBalance, + /// Messages size summary + pub selected_size: u32, + + /// Current block reward summary + pub total_reward: P::SourceChainBalance, + /// All confirmations cost + pub total_confirmations_cost: P::SourceChainBalance, + /// Current block cost summary + pub total_cost: P::SourceChainBalance, + + /// Hard check begin nonce + pub hard_selected_begin_nonce: MessageNonce, + /// Count prepaid nonces + pub selected_prepaid_nonces: MessageNonce, + /// Unpaid nonces weight summary + pub selected_unpaid_weight: Weight, + + /// Index by all ready nonces + pub index: usize, + /// Current nonce + pub nonce: MessageNonce, + /// Current nonce details + pub details: MessageDetails, +} + +/// Relay reference data +pub struct RelayMessagesBatchReference< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, +> { + /// Maximal number of relayed messages in single delivery transaction. + pub max_messages_in_this_batch: MessageNonce, + /// Maximal cumulative dispatch weight of relayed messages in single delivery transaction. + pub max_messages_weight_in_single_batch: Weight, + /// Maximal cumulative size of relayed messages in single delivery transaction. + pub max_messages_size_in_single_batch: u32, + /// The client that is connected to the message lane source node. + pub lane_source_client: SourceClient, + /// The client that is connected to the message lane target node. + pub lane_target_client: TargetClient, + /// Source queue. + pub nonces_queue: SourceRangesQueue< + P::SourceHeaderHash, + P::SourceHeaderNumber, + MessageDetailsMap, + >, + /// Source queue range + pub nonces_queue_range: Range, +} diff --git a/relays/messages/src/relay_strategy/rational_strategy.rs b/relays/messages/src/relay_strategy/rational_strategy.rs new file mode 100644 index 000000000000..fd0a1ffafc8b --- /dev/null +++ b/relays/messages/src/relay_strategy/rational_strategy.rs @@ -0,0 +1,122 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Rational relay strategy + +use async_trait::async_trait; +use num_traits::SaturatingAdd; + +use bp_messages::MessageNonce; + +use crate::{ + message_lane::MessageLane, + message_lane_loop::{ + SourceClient as MessageLaneSourceClient, TargetClient as MessageLaneTargetClient, + }, + relay_strategy::{RelayReference, RelayStrategy}, +}; + +/// The relayer will deliver all messages and confirmations as long as he's not losing any +/// funds. +#[derive(Clone)] +pub struct RationalStrategy; + +#[async_trait] +impl RelayStrategy for RationalStrategy { + async fn decide< + P: MessageLane, + SourceClient: MessageLaneSourceClient

, + TargetClient: MessageLaneTargetClient

, + >( + &mut self, + reference: &mut RelayReference, + ) -> bool { + // technically, multiple confirmations will be delivered in a single transaction, + // meaning less loses for relayer. But here we don't know the final relayer yet, so + // we're adding a separate transaction for every message. Normally, this cost is covered + // by the message sender. Probably reconsider this? + let confirmation_transaction_cost = + reference.lane_source_client.estimate_confirmation_transaction().await; + + let delivery_transaction_cost = match reference + .lane_target_client + .estimate_delivery_transaction_in_source_tokens( + reference.hard_selected_begin_nonce..= + (reference.hard_selected_begin_nonce + reference.index as MessageNonce), + reference.selected_prepaid_nonces, + reference.selected_unpaid_weight, + reference.selected_size as u32, + ) + .await + { + Ok(v) => v, + Err(err) => { + log::debug!( + target: "bridge", + "Failed to estimate delivery transaction cost: {:?}. No nonces selected for delivery", + err, + ); + return false + }, + }; + + // if it is the first message that makes reward less than cost, let's log it + // if this message makes batch profitable again, let's log it + let is_total_reward_less_than_cost = reference.total_reward < reference.total_cost; + let prev_total_cost = reference.total_cost; + let prev_total_reward = reference.total_reward; + reference.total_confirmations_cost = reference + .total_confirmations_cost + .saturating_add(&confirmation_transaction_cost); + reference.total_reward = reference.total_reward.saturating_add(&reference.details.reward); + reference.total_cost = + reference.total_confirmations_cost.saturating_add(&delivery_transaction_cost); + if !is_total_reward_less_than_cost && reference.total_reward < reference.total_cost { + log::debug!( + target: "bridge", + "Message with nonce {} (reward = {:?}) changes total cost {:?}->{:?} and makes it larger than \ + total reward {:?}->{:?}", + reference.nonce, + reference.details.reward, + prev_total_cost, + reference.total_cost, + prev_total_reward, + reference.total_reward, + ); + } else if is_total_reward_less_than_cost && reference.total_reward >= reference.total_cost { + log::debug!( + target: "bridge", + "Message with nonce {} (reward = {:?}) changes total cost {:?}->{:?} and makes it less than or \ + equal to the total reward {:?}->{:?} (again)", + reference.nonce, + reference.details.reward, + prev_total_cost, + reference.total_cost, + prev_total_reward, + reference.total_reward, + ); + } + + // Rational relayer never want to lose his funds + if reference.total_reward >= reference.total_cost { + reference.selected_reward = reference.total_reward; + reference.selected_cost = reference.total_cost; + return true + } + + false + } +} diff --git a/relays/utils/Cargo.toml b/relays/utils/Cargo.toml new file mode 100644 index 000000000000..a08c3b3d688d --- /dev/null +++ b/relays/utils/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "relay-utils" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" + +[dependencies] +ansi_term = "0.12" +anyhow = "1.0" +async-std = "1.6.5" +async-trait = "0.1.40" +backoff = "0.2" +isahc = "1.2" +env_logger = "0.8.2" +futures = "0.3.5" +jsonpath_lib = "0.2" +log = "0.4.11" +num-traits = "0.2" +serde_json = "1.0" +sysinfo = "0.15" +time = "0.2" +thiserror = "1.0.26" + +# Bridge dependencies + +bp-runtime = { path = "../../primitives/runtime" } + +# Substrate dependencies + +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/relays/utils/src/error.rs b/relays/utils/src/error.rs new file mode 100644 index 000000000000..26f1d0cacefd --- /dev/null +++ b/relays/utils/src/error.rs @@ -0,0 +1,46 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use std::net::AddrParseError; +use thiserror::Error; + +/// Result type used by relay utilities. +pub type Result = std::result::Result; + +/// Relay utilities errors. +#[derive(Error, Debug)] +pub enum Error { + /// Failed to request a float value from HTTP service. + #[error("Failed to fetch token price from remote server: {0}")] + FetchTokenPrice(#[source] anyhow::Error), + /// Failed to parse the response from HTTP service. + #[error("Failed to parse HTTP service response: {0:?}. Response: {1:?}")] + ParseHttp(serde_json::Error, String), + /// Failed to select response value from the Json response. + #[error("Failed to select value from response: {0:?}. Response: {1:?}")] + SelectResponseValue(jsonpath_lib::JsonPathError, String), + /// Failed to parse float value from the selected value. + #[error( + "Failed to parse float value {0:?} from response. It is assumed to be positive and normal" + )] + ParseFloat(f64), + /// Couldn't found value in the JSON response. + #[error("Missing required value from response: {0:?}")] + MissingResponseValue(String), + /// Invalid host address was used for exposing Prometheus metrics. + #[error("Invalid host {0} is used to expose Prometheus metrics: {1}")] + ExposingMetricsInvalidHost(String, AddrParseError), + /// Prometheus error. + #[error("{0}")] + Prometheus(#[from] substrate_prometheus_endpoint::prometheus::Error), +} diff --git a/bridges/relays/utils/src/initialize.rs b/relays/utils/src/initialize.rs similarity index 94% rename from bridges/relays/utils/src/initialize.rs rename to relays/utils/src/initialize.rs index b87937923bd4..8c13a4d61cb3 100644 --- a/bridges/relays/utils/src/initialize.rs +++ b/relays/utils/src/initialize.rs @@ -62,14 +62,7 @@ pub fn initialize_logger(with_timestamp: bool) { let log_level = color_level(record.level()); let log_target = color_target(record.target()); - writeln!( - buf, - "{}{} {} {}", - loop_name_prefix(), - log_level, - log_target, - record.args(), - ) + writeln!(buf, "{}{} {} {}", loop_name_prefix(), log_level, log_target, record.args(),) }); } @@ -81,12 +74,14 @@ pub(crate) fn initialize_loop(loop_name: String) { LOOP_NAME.with(|g_loop_name| *g_loop_name.borrow_mut() = loop_name); } -/// Returns loop name prefix to use in logs. The prefix is initialized with the `initialize_loop` call. +/// Returns loop name prefix to use in logs. The prefix is initialized with the `initialize_loop` +/// call. fn loop_name_prefix() -> String { // try_with to avoid panic outside of async-std task context LOOP_NAME .try_with(|loop_name| { - // using borrow is ok here, because loop is only initialized once (=> borrow_mut will only be called once) + // using borrow is ok here, because loop is only initialized once (=> borrow_mut will + // only be called once) let loop_name = loop_name.borrow(); if loop_name.is_empty() { String::new() diff --git a/relays/utils/src/lib.rs b/relays/utils/src/lib.rs new file mode 100644 index 000000000000..a335be791242 --- /dev/null +++ b/relays/utils/src/lib.rs @@ -0,0 +1,273 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Utilities used by different relays. + +pub use bp_runtime::HeaderId; +pub use error::Error; +pub use relay_loop::{relay_loop, relay_metrics}; + +use backoff::{backoff::Backoff, ExponentialBackoff}; +use futures::future::FutureExt; +use std::time::Duration; +use thiserror::Error; + +/// Max delay after connection-unrelated error happened before we'll try the +/// same request again. +pub const MAX_BACKOFF_INTERVAL: Duration = Duration::from_secs(60); +/// Delay after connection-related error happened before we'll try +/// reconnection again. +pub const CONNECTION_ERROR_DELAY: Duration = Duration::from_secs(10); + +pub mod error; +pub mod initialize; +pub mod metrics; +pub mod relay_loop; + +/// Block number traits shared by all chains that relay is able to serve. +pub trait BlockNumberBase: + 'static + + From + + Into + + Ord + + Clone + + Copy + + Default + + Send + + Sync + + std::fmt::Debug + + std::fmt::Display + + std::hash::Hash + + std::ops::Add + + std::ops::Sub + + num_traits::CheckedSub + + num_traits::Saturating + + num_traits::Zero + + num_traits::One +{ +} + +impl BlockNumberBase for T where + T: 'static + + From + + Into + + Ord + + Clone + + Copy + + Default + + Send + + Sync + + std::fmt::Debug + + std::fmt::Display + + std::hash::Hash + + std::ops::Add + + std::ops::Sub + + num_traits::CheckedSub + + num_traits::Saturating + + num_traits::Zero + + num_traits::One +{ +} + +/// Macro that returns (client, Err(error)) tuple from function if result is Err(error). +#[macro_export] +macro_rules! bail_on_error { + ($result: expr) => { + match $result { + (client, Ok(result)) => (client, result), + (client, Err(error)) => return (client, Err(error)), + } + }; +} + +/// Macro that returns (client, Err(error)) tuple from function if result is Err(error). +#[macro_export] +macro_rules! bail_on_arg_error { + ($result: expr, $client: ident) => { + match $result { + Ok(result) => result, + Err(error) => return ($client, Err(error)), + } + }; +} + +/// Error type that can signal connection errors. +pub trait MaybeConnectionError { + /// Returns true if error (maybe) represents connection error. + fn is_connection_error(&self) -> bool; +} + +/// Stringified error that may be either connection-related or not. +#[derive(Error, Debug)] +pub enum StringifiedMaybeConnectionError { + /// The error is connection-related error. + #[error("{0}")] + Connection(String), + /// The error is connection-unrelated error. + #[error("{0}")] + NonConnection(String), +} + +impl StringifiedMaybeConnectionError { + /// Create new stringified connection error. + pub fn new(is_connection_error: bool, error: String) -> Self { + if is_connection_error { + StringifiedMaybeConnectionError::Connection(error) + } else { + StringifiedMaybeConnectionError::NonConnection(error) + } + } +} + +impl MaybeConnectionError for StringifiedMaybeConnectionError { + fn is_connection_error(&self) -> bool { + match *self { + StringifiedMaybeConnectionError::Connection(_) => true, + StringifiedMaybeConnectionError::NonConnection(_) => false, + } + } +} + +/// Exponential backoff for connection-unrelated errors retries. +pub fn retry_backoff() -> ExponentialBackoff { + ExponentialBackoff { + // we do not want relayer to stop + max_elapsed_time: None, + max_interval: MAX_BACKOFF_INTERVAL, + ..Default::default() + } +} + +/// Compact format of IDs vector. +pub fn format_ids(mut ids: impl ExactSizeIterator) -> String { + const NTH_PROOF: &str = "we have checked len; qed"; + match ids.len() { + 0 => "".into(), + 1 => format!("{:?}", ids.next().expect(NTH_PROOF)), + 2 => { + let id0 = ids.next().expect(NTH_PROOF); + let id1 = ids.next().expect(NTH_PROOF); + format!("[{:?}, {:?}]", id0, id1) + }, + len => { + let id0 = ids.next().expect(NTH_PROOF); + let id_last = ids.last().expect(NTH_PROOF); + format!("{}:[{:?} ... {:?}]", len, id0, id_last) + }, + } +} + +/// Stream that emits item every `timeout_ms` milliseconds. +pub fn interval(timeout: Duration) -> impl futures::Stream { + futures::stream::unfold((), move |_| async move { + async_std::task::sleep(timeout).await; + Some(((), ())) + }) +} + +/// Which client has caused error. +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum FailedClient { + /// It is the source client who has caused error. + Source, + /// It is the target client who has caused error. + Target, + /// Both clients are failing, or we just encountered some other error that + /// should be treated like that. + Both, +} + +/// Future process result. +#[derive(Debug, Clone, Copy)] +pub enum ProcessFutureResult { + /// Future has been processed successfully. + Success, + /// Future has failed with non-connection error. + Failed, + /// Future has failed with connection error. + ConnectionFailed, +} + +impl ProcessFutureResult { + /// Returns true if result is Success. + pub fn is_ok(self) -> bool { + match self { + ProcessFutureResult::Success => true, + ProcessFutureResult::Failed | ProcessFutureResult::ConnectionFailed => false, + } + } + + /// Returns Ok(true) if future has succeeded. + /// Returns Ok(false) if future has failed with non-connection error. + /// Returns Err if future is `ConnectionFailed`. + pub fn fail_if_connection_error( + self, + failed_client: FailedClient, + ) -> Result { + match self { + ProcessFutureResult::Success => Ok(true), + ProcessFutureResult::Failed => Ok(false), + ProcessFutureResult::ConnectionFailed => Err(failed_client), + } + } +} + +/// Process result of the future from a client. +pub fn process_future_result( + result: Result, + retry_backoff: &mut ExponentialBackoff, + on_success: impl FnOnce(TResult), + go_offline_future: &mut std::pin::Pin<&mut futures::future::Fuse>, + go_offline: impl FnOnce(Duration) -> TGoOfflineFuture, + error_pattern: impl FnOnce() -> String, +) -> ProcessFutureResult +where + TError: std::fmt::Debug + MaybeConnectionError, + TGoOfflineFuture: FutureExt, +{ + match result { + Ok(result) => { + on_success(result); + retry_backoff.reset(); + ProcessFutureResult::Success + }, + Err(error) if error.is_connection_error() => { + log::error!( + target: "bridge", + "{}: {:?}. Going to restart", + error_pattern(), + error, + ); + + retry_backoff.reset(); + go_offline_future.set(go_offline(CONNECTION_ERROR_DELAY).fuse()); + ProcessFutureResult::ConnectionFailed + }, + Err(error) => { + let retry_delay = retry_backoff.next_backoff().unwrap_or(CONNECTION_ERROR_DELAY); + log::error!( + target: "bridge", + "{}: {:?}. Retrying in {}", + error_pattern(), + error, + retry_delay.as_secs_f64(), + ); + + go_offline_future.set(go_offline(retry_delay).fuse()); + ProcessFutureResult::Failed + }, + } +} diff --git a/relays/utils/src/metrics.rs b/relays/utils/src/metrics.rs new file mode 100644 index 000000000000..805fe70bfe85 --- /dev/null +++ b/relays/utils/src/metrics.rs @@ -0,0 +1,162 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +pub use float_json_value::FloatJsonValueMetric; +pub use global::GlobalMetrics; +pub use substrate_prometheus_endpoint::{ + prometheus::core::{Atomic, Collector}, + register, Counter, CounterVec, Gauge, GaugeVec, Opts, PrometheusError, Registry, F64, U64, +}; + +use async_std::sync::{Arc, RwLock}; +use async_trait::async_trait; +use std::{fmt::Debug, time::Duration}; + +mod float_json_value; +mod global; + +/// Shared reference to `f64` value that is updated by the metric. +pub type F64SharedRef = Arc>>; + +/// Unparsed address that needs to be used to expose Prometheus metrics. +#[derive(Debug, Clone)] +pub struct MetricsAddress { + /// Serve HTTP requests at given host. + pub host: String, + /// Serve HTTP requests at given port. + pub port: u16, +} + +/// Prometheus endpoint MetricsParams. +#[derive(Debug, Clone)] +pub struct MetricsParams { + /// Interface and TCP port to be used when exposing Prometheus metrics. + pub address: Option, + /// Metrics registry. May be `Some(_)` if several components share the same endpoint. + pub registry: Registry, +} + +/// Metric API. +pub trait Metric: Clone + Send + Sync + 'static { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError>; +} + +/// Standalone metric API. +/// +/// Metrics of this kind know how to update themselves, so we may just spawn and forget the +/// asynchronous self-update task. +#[async_trait] +pub trait StandaloneMetric: Metric { + /// Update metric values. + async fn update(&self); + + /// Metrics update interval. + fn update_interval(&self) -> Duration; + + /// Register and spawn metric. Metric is only spawned if it is registered for the first time. + fn register_and_spawn(self, registry: &Registry) -> Result<(), PrometheusError> { + match self.register(registry) { + Ok(()) => { + self.spawn(); + Ok(()) + }, + Err(PrometheusError::AlreadyReg) => Ok(()), + Err(e) => Err(e), + } + } + + /// Spawn the self update task that will keep update metric value at given intervals. + fn spawn(self) { + async_std::task::spawn(async move { + let update_interval = self.update_interval(); + loop { + self.update().await; + async_std::task::sleep(update_interval).await; + } + }); + } +} + +impl Default for MetricsAddress { + fn default() -> Self { + MetricsAddress { host: "127.0.0.1".into(), port: 9616 } + } +} + +impl MetricsParams { + /// Creates metrics params so that metrics are not exposed. + pub fn disabled() -> Self { + MetricsParams { address: None, registry: Registry::new() } + } + + /// Do not expose metrics. + pub fn disable(mut self) -> Self { + self.address = None; + self + } +} + +impl From> for MetricsParams { + fn from(address: Option) -> Self { + MetricsParams { address, registry: Registry::new() } + } +} + +/// Returns metric name optionally prefixed with given prefix. +pub fn metric_name(prefix: Option<&str>, name: &str) -> String { + if let Some(prefix) = prefix { + format!("{}_{}", prefix, name) + } else { + name.into() + } +} + +/// Set value of gauge metric. +/// +/// If value is `Ok(None)` or `Err(_)`, metric would have default value. +pub fn set_gauge_value, E: Debug>( + gauge: &Gauge, + value: Result, E>, +) { + gauge.set(match value { + Ok(Some(value)) => { + log::trace!( + target: "bridge-metrics", + "Updated value of metric '{:?}': {:?}", + gauge.desc().first().map(|d| &d.fq_name), + value, + ); + value + }, + Ok(None) => { + log::warn!( + target: "bridge-metrics", + "Failed to update metric '{:?}': value is empty", + gauge.desc().first().map(|d| &d.fq_name), + ); + Default::default() + }, + Err(error) => { + log::warn!( + target: "bridge-metrics", + "Failed to update metric '{:?}': {:?}", + gauge.desc().first().map(|d| &d.fq_name), + error, + ); + Default::default() + }, + }) +} diff --git a/relays/utils/src/metrics/float_json_value.rs b/relays/utils/src/metrics/float_json_value.rs new file mode 100644 index 000000000000..7535cbef9863 --- /dev/null +++ b/relays/utils/src/metrics/float_json_value.rs @@ -0,0 +1,147 @@ +// Copyright 2019-2020 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + error::{self, Error}, + metrics::{ + metric_name, register, F64SharedRef, Gauge, Metric, PrometheusError, Registry, + StandaloneMetric, F64, + }, +}; + +use async_std::sync::{Arc, RwLock}; +use async_trait::async_trait; +use std::time::Duration; + +/// Value update interval. +const UPDATE_INTERVAL: Duration = Duration::from_secs(60); + +/// Metric that represents float value received from HTTP service as float gauge. +/// +/// The float value returned by the service is assumed to be normal (`f64::is_normal` +/// should return `true`) and strictly positive. +#[derive(Debug, Clone)] +pub struct FloatJsonValueMetric { + url: String, + json_path: String, + metric: Gauge, + shared_value_ref: F64SharedRef, +} + +impl FloatJsonValueMetric { + /// Create new metric instance with given name and help. + pub fn new( + url: String, + json_path: String, + name: String, + help: String, + ) -> Result { + let shared_value_ref = Arc::new(RwLock::new(None)); + Ok(FloatJsonValueMetric { + url, + json_path, + metric: Gauge::new(metric_name(None, &name), help)?, + shared_value_ref, + }) + } + + /// Get shared reference to metric value. + pub fn shared_value_ref(&self) -> F64SharedRef { + self.shared_value_ref.clone() + } + + /// Request value from HTTP service. + async fn request_value(&self) -> anyhow::Result { + use isahc::{AsyncReadResponseExt, HttpClient, Request}; + + let request = Request::get(&self.url).header("Accept", "application/json").body(())?; + let raw_response = HttpClient::new()?.send_async(request).await?.text().await?; + Ok(raw_response) + } + + /// Read value from HTTP service. + async fn read_value(&self) -> error::Result { + let raw_response = self.request_value().await.map_err(Error::FetchTokenPrice)?; + parse_service_response(&self.json_path, &raw_response) + } +} + +impl Metric for FloatJsonValueMetric { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.metric.clone(), registry).map(drop) + } +} + +#[async_trait] +impl StandaloneMetric for FloatJsonValueMetric { + fn update_interval(&self) -> Duration { + UPDATE_INTERVAL + } + + async fn update(&self) { + let value = self.read_value().await; + let maybe_ok = value.as_ref().ok().copied(); + crate::metrics::set_gauge_value(&self.metric, value.map(Some)); + *self.shared_value_ref.write().await = maybe_ok; + } +} + +/// Parse HTTP service response. +fn parse_service_response(json_path: &str, response: &str) -> error::Result { + let json = + serde_json::from_str(response).map_err(|err| Error::ParseHttp(err, response.to_owned()))?; + + let mut selector = jsonpath_lib::selector(&json); + let maybe_selected_value = + selector(json_path).map_err(|err| Error::SelectResponseValue(err, response.to_owned()))?; + let selected_value = maybe_selected_value + .first() + .and_then(|v| v.as_f64()) + .ok_or_else(|| Error::MissingResponseValue(response.to_owned()))?; + if !selected_value.is_normal() || selected_value < 0.0 { + return Err(Error::ParseFloat(selected_value)) + } + + Ok(selected_value) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn parse_service_response_works() { + assert_eq!( + parse_service_response("$.kusama.usd", r#"{"kusama":{"usd":433.05}}"#).map_err(drop), + Ok(433.05), + ); + } + + #[test] + fn parse_service_response_rejects_negative_numbers() { + assert!(parse_service_response("$.kusama.usd", r#"{"kusama":{"usd":-433.05}}"#).is_err()); + } + + #[test] + fn parse_service_response_rejects_zero_numbers() { + assert!(parse_service_response("$.kusama.usd", r#"{"kusama":{"usd":0.0}}"#).is_err()); + } + + #[test] + fn parse_service_response_rejects_nan() { + assert!(parse_service_response("$.kusama.usd", r#"{"kusama":{"usd":NaN}}"#).is_err()); + } +} diff --git a/relays/utils/src/metrics/global.rs b/relays/utils/src/metrics/global.rs new file mode 100644 index 000000000000..df90a2c48234 --- /dev/null +++ b/relays/utils/src/metrics/global.rs @@ -0,0 +1,118 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +//! Global system-wide Prometheus metrics exposed by relays. + +use crate::metrics::{ + metric_name, register, Gauge, GaugeVec, Metric, Opts, PrometheusError, Registry, + StandaloneMetric, F64, U64, +}; + +use async_std::sync::{Arc, Mutex}; +use async_trait::async_trait; +use std::time::Duration; +use sysinfo::{ProcessExt, RefreshKind, System, SystemExt}; + +/// Global metrics update interval. +const UPDATE_INTERVAL: Duration = Duration::from_secs(10); + +/// Global Prometheus metrics. +#[derive(Debug, Clone)] +pub struct GlobalMetrics { + system: Arc>, + system_average_load: GaugeVec, + process_cpu_usage_percentage: Gauge, + process_memory_usage_bytes: Gauge, +} + +impl GlobalMetrics { + /// Create and register global metrics. + pub fn new() -> Result { + Ok(GlobalMetrics { + system: Arc::new(Mutex::new(System::new_with_specifics(RefreshKind::everything()))), + system_average_load: GaugeVec::new( + Opts::new(metric_name(None, "system_average_load"), "System load average"), + &["over"], + )?, + process_cpu_usage_percentage: Gauge::new( + metric_name(None, "process_cpu_usage_percentage"), + "Process CPU usage", + )?, + process_memory_usage_bytes: Gauge::new( + metric_name(None, "process_memory_usage_bytes"), + "Process memory (resident set size) usage", + )?, + }) + } +} + +impl Metric for GlobalMetrics { + fn register(&self, registry: &Registry) -> Result<(), PrometheusError> { + register(self.system_average_load.clone(), registry)?; + register(self.process_cpu_usage_percentage.clone(), registry)?; + register(self.process_memory_usage_bytes.clone(), registry)?; + Ok(()) + } +} + +#[async_trait] +impl StandaloneMetric for GlobalMetrics { + async fn update(&self) { + // update system-wide metrics + let mut system = self.system.lock().await; + let load = system.get_load_average(); + self.system_average_load.with_label_values(&["1min"]).set(load.one); + self.system_average_load.with_label_values(&["5min"]).set(load.five); + self.system_average_load.with_label_values(&["15min"]).set(load.fifteen); + + // update process-related metrics + let pid = sysinfo::get_current_pid().expect( + "only fails where pid is unavailable (os=unknown || arch=wasm32);\ + relay is not supposed to run in such MetricsParamss;\ + qed", + ); + let is_process_refreshed = system.refresh_process(pid); + match (is_process_refreshed, system.get_process(pid)) { + (true, Some(process_info)) => { + let cpu_usage = process_info.cpu_usage() as f64; + let memory_usage = process_info.memory() * 1024; + log::trace!( + target: "bridge-metrics", + "Refreshed process metrics: CPU={}, memory={}", + cpu_usage, + memory_usage, + ); + + self.process_cpu_usage_percentage.set(if cpu_usage.is_finite() { + cpu_usage + } else { + 0f64 + }); + self.process_memory_usage_bytes.set(memory_usage); + }, + _ => { + log::warn!( + target: "bridge-metrics", + "Failed to refresh process information. Metrics may show obsolete values", + ); + }, + } + } + + fn update_interval(&self) -> Duration { + UPDATE_INTERVAL + } +} diff --git a/relays/utils/src/relay_loop.rs b/relays/utils/src/relay_loop.rs new file mode 100644 index 000000000000..a992aaaf57ee --- /dev/null +++ b/relays/utils/src/relay_loop.rs @@ -0,0 +1,248 @@ +// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// This file is part of Parity Bridges Common. + +// Parity Bridges Common is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Bridges Common is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Bridges Common. If not, see . + +use crate::{ + error::Error, + metrics::{Metric, MetricsAddress, MetricsParams}, + FailedClient, MaybeConnectionError, +}; + +use async_trait::async_trait; +use std::{fmt::Debug, future::Future, net::SocketAddr, time::Duration}; +use substrate_prometheus_endpoint::{init_prometheus, Registry}; + +/// Default pause between reconnect attempts. +pub const RECONNECT_DELAY: Duration = Duration::from_secs(10); + +/// Basic blockchain client from relay perspective. +#[async_trait] +pub trait Client: 'static + Clone + Send + Sync { + /// Type of error these clients returns. + type Error: 'static + Debug + MaybeConnectionError + Send + Sync; + + /// Try to reconnect to source node. + async fn reconnect(&mut self) -> Result<(), Self::Error>; +} + +#[async_trait] +impl Client for () { + type Error = crate::StringifiedMaybeConnectionError; + + async fn reconnect(&mut self) -> Result<(), Self::Error> { + Ok(()) + } +} + +/// Returns generic loop that may be customized and started. +pub fn relay_loop(source_client: SC, target_client: TC) -> Loop { + Loop { reconnect_delay: RECONNECT_DELAY, source_client, target_client, loop_metric: None } +} + +/// Returns generic relay loop metrics that may be customized and used in one or several relay +/// loops. +pub fn relay_metrics(params: MetricsParams) -> LoopMetrics<(), (), ()> { + LoopMetrics { + relay_loop: Loop { + reconnect_delay: RECONNECT_DELAY, + source_client: (), + target_client: (), + loop_metric: None, + }, + address: params.address, + registry: params.registry, + loop_metric: None, + } +} + +/// Generic relay loop. +pub struct Loop { + reconnect_delay: Duration, + source_client: SC, + target_client: TC, + loop_metric: Option, +} + +/// Relay loop metrics builder. +pub struct LoopMetrics { + relay_loop: Loop, + address: Option, + registry: Registry, + loop_metric: Option, +} + +impl Loop { + /// Customize delay between reconnect attempts. + pub fn reconnect_delay(mut self, reconnect_delay: Duration) -> Self { + self.reconnect_delay = reconnect_delay; + self + } + + /// Start building loop metrics using given prefix. + pub fn with_metrics(self, params: MetricsParams) -> LoopMetrics { + LoopMetrics { + relay_loop: Loop { + reconnect_delay: self.reconnect_delay, + source_client: self.source_client, + target_client: self.target_client, + loop_metric: None, + }, + address: params.address, + registry: params.registry, + loop_metric: None, + } + } + + /// Run relay loop. + /// + /// This function represents an outer loop, which in turn calls provided `run_loop` function to + /// do actual job. When `run_loop` returns, this outer loop reconnects to failed client (source, + /// target or both) and calls `run_loop` again. + pub async fn run(mut self, loop_name: String, run_loop: R) -> Result<(), Error> + where + R: 'static + Send + Fn(SC, TC, Option) -> F, + F: 'static + Send + Future>, + SC: 'static + Client, + TC: 'static + Client, + LM: 'static + Send + Clone, + { + let run_loop_task = async move { + crate::initialize::initialize_loop(loop_name); + + loop { + let loop_metric = self.loop_metric.clone(); + let future_result = + run_loop(self.source_client.clone(), self.target_client.clone(), loop_metric); + let result = future_result.await; + + match result { + Ok(()) => break, + Err(failed_client) => + reconnect_failed_client( + failed_client, + self.reconnect_delay, + &mut self.source_client, + &mut self.target_client, + ) + .await, + } + + log::debug!(target: "bridge", "Restarting relay loop"); + } + + Ok(()) + }; + + async_std::task::spawn(run_loop_task).await + } +} + +impl LoopMetrics { + /// Add relay loop metrics. + /// + /// Loop metrics will be passed to the loop callback. + pub fn loop_metric( + self, + metric: NewLM, + ) -> Result, Error> { + metric.register(&self.registry)?; + + Ok(LoopMetrics { + relay_loop: self.relay_loop, + address: self.address, + registry: self.registry, + loop_metric: Some(metric), + }) + } + + /// Convert into `MetricsParams` structure so that metrics registry may be extended later. + pub fn into_params(self) -> MetricsParams { + MetricsParams { address: self.address, registry: self.registry } + } + + /// Expose metrics using address passed at creation. + /// + /// If passed `address` is `None`, metrics are not exposed. + pub async fn expose(self) -> Result, Error> { + if let Some(address) = self.address { + let socket_addr = SocketAddr::new( + address + .host + .parse() + .map_err(|err| Error::ExposingMetricsInvalidHost(address.host.clone(), err))?, + address.port, + ); + + let registry = self.registry; + async_std::task::spawn(async move { + let result = init_prometheus(socket_addr, registry).await; + log::trace!( + target: "bridge-metrics", + "Prometheus endpoint has exited with result: {:?}", + result, + ); + }); + } + + Ok(Loop { + reconnect_delay: self.relay_loop.reconnect_delay, + source_client: self.relay_loop.source_client, + target_client: self.relay_loop.target_client, + loop_metric: self.loop_metric, + }) + } +} + +/// Deal with the client who has returned connection error. +pub async fn reconnect_failed_client( + failed_client: FailedClient, + reconnect_delay: Duration, + source_client: &mut impl Client, + target_client: &mut impl Client, +) { + loop { + async_std::task::sleep(reconnect_delay).await; + if failed_client == FailedClient::Both || failed_client == FailedClient::Source { + match source_client.reconnect().await { + Ok(()) => (), + Err(error) => { + log::warn!( + target: "bridge", + "Failed to reconnect to source client. Going to retry in {}s: {:?}", + reconnect_delay.as_secs(), + error, + ); + continue + }, + } + } + if failed_client == FailedClient::Both || failed_client == FailedClient::Target { + match target_client.reconnect().await { + Ok(()) => (), + Err(error) => { + log::warn!( + target: "bridge", + "Failed to reconnect to target client. Going to retry in {}s: {:?}", + reconnect_delay.as_secs(), + error, + ); + continue + }, + } + } + + break + } +} diff --git a/roadmap/implementers-guide/.gitignore b/roadmap/implementers-guide/.gitignore deleted file mode 100644 index ac55c8234c36..000000000000 --- a/roadmap/implementers-guide/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -book/ -*.generated.svg diff --git a/roadmap/implementers-guide/README.md b/roadmap/implementers-guide/README.md deleted file mode 100644 index 0bbc07746912..000000000000 --- a/roadmap/implementers-guide/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# The Polkadot Parachain Host Implementers' Guide - -The implementers' guide is compiled from several source files with [mdBook](https://github.com/rust-lang/mdBook). To view it live, locally, from the repo root: - -```sh -cargo install mdbook mdbook-linkcheck mdbook-graphviz -mdbook serve roadmap/implementers-guide -open http://localhost:3000 -``` diff --git a/roadmap/implementers-guide/book.toml b/roadmap/implementers-guide/book.toml deleted file mode 100644 index 8805ca4c38c3..000000000000 --- a/roadmap/implementers-guide/book.toml +++ /dev/null @@ -1,16 +0,0 @@ -[book] -authors = ["Rob Habermeier", "Peter Goodspeed-Niklaus"] -language = "en" -multilingual = false -src = "src" -title = "The Polkadot Parachain Host Implementers' Guide" - -[preprocessor.graphviz] -command = "mdbook-graphviz" -[preprocessor.mermaid] -command = "mdbook-mermaid" - -[output.html] -additional-js = ["mermaid.min.js", "mermaid-init.js"] - -[output.linkcheck] diff --git a/roadmap/implementers-guide/mermaid-init.js b/roadmap/implementers-guide/mermaid-init.js deleted file mode 100644 index 313a6e8bc89d..000000000000 --- a/roadmap/implementers-guide/mermaid-init.js +++ /dev/null @@ -1 +0,0 @@ -mermaid.initialize({startOnLoad:true}); diff --git a/roadmap/implementers-guide/mermaid.min.js b/roadmap/implementers-guide/mermaid.min.js deleted file mode 100644 index 8d71a81caf41..000000000000 --- a/roadmap/implementers-guide/mermaid.min.js +++ /dev/null @@ -1,32 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=383)}([function(t,e,n){"use strict";n.r(e);var r=function(t,e){return te?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,c=o,u=function(t,e){null==e&&(e=l);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);nt?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,c=0;if(null==e)for(;++o1)return c/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o=n)for(r=i=n;++on&&(r=n),i=n)for(r=i=n;++on&&(r=n),i0)return[t];if((r=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=0?(a>=w?10:a>=E?5:a>=T?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=w?10:a>=E?5:a>=T?2:1)}function A(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=w?i*=10:a>=E?i*=5:a>=T&&(i*=2),eh;)f.pop(),--d;var p,g=new Array(d+1);for(i=0;i<=d;++i)(p=g[i]=[]).x0=i>0?f[i-1]:l,p.x1=i=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},N=function(t,e,n){return t=b.call(t,d).sort(r),Math.ceil((n-e)/(2*(D(t,.75)-D(t,.25))*Math.pow(t.length,-1/3)))},B=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},L=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++ar&&(r=n)}else for(;++a=n)for(r=n;++ar&&(r=n);return r},F=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},j=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++an&&(r=n)}else for(;++a=n)for(r=n;++an&&(r=n);return r},R=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},Y=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function ct(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var _t="http://www.w3.org/1999/xhtml",kt={svg:"http://www.w3.org/2000/svg",xhtml:_t,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},wt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),kt.hasOwnProperty(e)?{space:kt[e],local:t}:t};function Et(t){return function(){this.removeAttribute(t)}}function Tt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ct(t,e){return function(){this.setAttribute(t,e)}}function St(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function At(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Mt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var Ot=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Dt(t){return function(){this.style.removeProperty(t)}}function Nt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Bt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Lt(t,e){return t.style.getPropertyValue(e)||Ot(t).getComputedStyle(t,null).getPropertyValue(e)}function Ft(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function It(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function jt(t){return t.trim().split(/^|\s+/)}function Rt(t){return t.classList||new Yt(t)}function Yt(t){this._node=t,this._names=jt(t.getAttribute("class")||"")}function zt(t,e){for(var n=Rt(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ht(){this.textContent=""}function Gt(t){return function(){this.textContent=t}}function qt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Xt(){this.innerHTML=""}function Zt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Qt(){this.nextSibling&&this.parentNode.appendChild(this)}function Kt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function te(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_t&&e.documentElement.namespaceURI===_t?e.createElement(t):e.createElementNS(n,t)}}function ee(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var ne=function(t){var e=wt(t);return(e.local?ee:te)(e)};function re(){return null}function ie(){var t=this.parentNode;t&&t.removeChild(this)}function ae(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}var se={},ce=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(se={mouseenter:"mouseover",mouseleave:"mouseout"}));function ue(t,e,n){return t=le(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function le(t,e,n){return function(r){var i=ce;ce=r;try{t.call(this,this.__data__,e,n)}finally{ce=i}}}function he(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function fe(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=_&&(_=x+1);!(b=v[_])&&++_=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?Dt:"function"==typeof e?Bt:Nt)(t,e,null==n?"":n)):Lt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Ft:"function"==typeof e?It:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=jt(t+"");if(arguments.length<2){for(var r=Rt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Le.exec(t))?new qe(e[1],e[2],e[3],1):(e=Fe.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?Ve(e[1],e[2],e[3],e[4]):(e=Ie.exec(t))?Ve(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=je.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=Re.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?We(Ye[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function We(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Ve(t,e,n,r){return r<=0&&(t=e=n=NaN),new qe(t,e,n,r)}function He(t){return t instanceof Me||(t=$e(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Ge(t,e,n,r){return 1===arguments.length?He(t):new qe(t,e,n,null==r?1:r)}function qe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Xe(){return"#"+Je(this.r)+Je(this.g)+Je(this.b)}function Ze(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Qe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new en(t,e,n,r)}function Ke(t){if(t instanceof en)return new en(t.h,t.s,t.l,t.opacity);if(t instanceof Me||(t=$e(t)),!t)return new en;if(t instanceof en)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new en(o,s,c,t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Ke(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function nn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Se(Me,$e,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Ue,toString:Ue}),Se(qe,Ge,Ae(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xe,formatHex:Xe,formatRgb:Ze,toString:Ze})),Se(en,tn,Ae(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new en(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new en(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new qe(nn(t>=240?t-240:t+120,i,r),nn(t,i,r),nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var an=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r180||n<-180?n-360*Math.round(n/360):n):sn(isNaN(t)?e:t)}function ln(t){return 1==(t=+t)?hn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):sn(isNaN(e)?n:e)}}function hn(t,e){var n=e-t;return n?cn(t,n):sn(isNaN(t)?e:t)}var fn=function t(e){var n=ln(e);function r(t,e){var r=n((t=Ge(t)).r,(e=Ge(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=hn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function dn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:_n(n,r)})),a=En.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Bn}function Hn(){In=(Pn=Rn.now())+jn,Bn=Ln=0;try{Vn()}finally{Bn=0,function(){var t,e,n=Tn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Tn=e);Cn=t,qn(r)}(),In=0}}function Gn(){var t=Rn.now(),e=t-Pn;e>1e3&&(jn-=e,Pn=t)}function qn(t){Bn||(Ln&&(Ln=clearTimeout(Ln)),t-In>24?(t<1/0&&(Ln=setTimeout(Hn,t-Rn.now()-jn)),Fn&&(Fn=clearInterval(Fn))):(Fn||(Pn=Rn.now(),Fn=setInterval(Gn,1e3)),Bn=1,Yn(Hn)))}$n.prototype=Wn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zn():+n)+(null==e?0:+e),this._next||Cn===this||(Cn?Cn._next=this:Tn=this,Cn=this),this._call=t,this._time=n,qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,qn())}};var Xn=function(t,e,n){var r=new $n;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},Zn=lt("start","end","cancel","interrupt"),Jn=[],Qn=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Xn(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function tr(t,e){var n=er(t,e);if(n.state>3)throw new Error("too late; already running");return n}function er(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var nr,rr,ir,ar,or=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}},sr=180/Math.PI,cr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},ur=function(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_n(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_n(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_n(t,n)},{i:s-2,x:_n(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Kn:tr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Br=_e.prototype.constructor;function Lr(t){return function(){this.style.removeProperty(t)}}function Fr(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Pr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Fr(t,a,n)),r}return a._value=e,a}function Ir(t){return function(e){this.textContent=t.call(this,e)}}function jr(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Ir(r)),e}return r._value=t,r}var Rr=0;function Yr(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zr(t){return _e().transition(t)}function Ur(){return++Rr}var $r=_e.prototype;function Wr(t){return t*t*t}function Vr(t){return--t*t*t+1}function Hr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Yr.prototype=zr.prototype={constructor:Yr,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ft(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o1&&n.name===e)return new Yr([[t]],Xr,e,+r);return null},Jr=function(t){return function(){return t}},Qr=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Kr(){ce.stopImmediatePropagation()}var ti=function(){ce.preventDefault(),ce.stopImmediatePropagation()},ei={name:"drag"},ni={name:"space"},ri={name:"handle"},ii={name:"center"};function ai(t){return[+t[0],+t[1]]}function oi(t){return[ai(t[0]),ai(t[1])]}function si(t){return function(e){return Dn(e,ce.touches,t)}}var ci={name:"x",handles:["w","e"].map(yi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ui={name:"y",handles:["n","s"].map(yi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},li={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(yi),input:function(t){return null==t?null:oi(t)},output:function(t){return t}},hi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},fi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},di={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},pi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},gi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function yi(t){return{type:t}}function vi(){return!ce.ctrlKey&&!ce.button}function mi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function xi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function _i(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function ki(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function wi(){return Ci(ci)}function Ei(){return Ci(ui)}var Ti=function(){return Ci(li)};function Ci(t){var e,n=mi,r=vi,i=bi,a=!0,o=lt("start","brush","end"),s=6;function c(e){var n=e.property("__brush",g).selectAll(".overlay").data([yi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",hi.overlay).merge(n).each((function(){var t=xi(this).extent;ke(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([yi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",hi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return hi[t.type]})),e.each(u).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",f).filter(i).on("touchstart.brush",f).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function u(){var t=ke(this),e=xi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new h(t,e)}function h(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function f(){if((!e||ce.touches)&&r.apply(this,arguments)){var n,i,o,s,c,h,f,d,p,g,y,v=this,m=ce.target.__data__.type,b="selection"===(a&&ce.metaKey?m="overlay":m)?ei:a&&ce.altKey?ii:ri,x=t===ui?null:pi[m],_=t===ci?null:gi[m],k=xi(v),w=k.extent,E=k.selection,T=w[0][0],C=w[0][1],S=w[1][0],A=w[1][1],M=0,O=0,D=x&&_&&a&&ce.shiftKey,N=ce.touches?si(ce.changedTouches[0].identifier):Nn,B=N(v),L=B,F=l(v,arguments,!0).beforestart();"overlay"===m?(E&&(p=!0),k.selection=E=[[n=t===ui?T:B[0],o=t===ci?C:B[1]],[c=t===ui?S:n,f=t===ci?A:o]]):(n=E[0][0],o=E[0][1],c=E[1][0],f=E[1][1]),i=n,s=o,h=c,d=f;var P=ke(v).attr("pointer-events","none"),I=P.selectAll(".overlay").attr("cursor",hi[m]);if(ce.touches)F.moved=R,F.ended=z;else{var j=ke(ce.view).on("mousemove.brush",R,!0).on("mouseup.brush",z,!0);a&&j.on("keydown.brush",U,!0).on("keyup.brush",$,!0),Te(ce.view)}Kr(),or(v),u.call(v),F.start()}function R(){var t=N(v);!D||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,p=!0,ti(),Y()}function Y(){var t;switch(M=L[0]-B[0],O=L[1]-B[1],b){case ni:case ei:x&&(M=Math.max(T-n,Math.min(S-c,M)),i=n+M,h=c+M),_&&(O=Math.max(C-o,Math.min(A-f,O)),s=o+O,d=f+O);break;case ri:x<0?(M=Math.max(T-n,Math.min(S-n,M)),i=n+M,h=c):x>0&&(M=Math.max(T-c,Math.min(S-c,M)),i=n,h=c+M),_<0?(O=Math.max(C-o,Math.min(A-o,O)),s=o+O,d=f):_>0&&(O=Math.max(C-f,Math.min(A-f,O)),s=o,d=f+O);break;case ii:x&&(i=Math.max(T,Math.min(S,n-M*x)),h=Math.max(T,Math.min(S,c+M*x))),_&&(s=Math.max(C,Math.min(A,o-O*_)),d=Math.max(C,Math.min(A,f+O*_)))}h0&&(n=i-M),_<0?f=d-O:_>0&&(o=s-O),b=ni,I.attr("cursor",hi.selection),Y());break;default:return}ti()}function $(){switch(ce.keyCode){case 16:D&&(g=y=D=!1,Y());break;case 18:b===ii&&(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri,Y());break;case 32:b===ni&&(ce.altKey?(x&&(c=h-M*x,n=i+M*x),_&&(f=d-O*_,o=s+O*_),b=ii):(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri),I.attr("cursor",hi[m]),Y());break;default:return}ti()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function g(){var e=this.__brush||{selection:null};return e.extent=oi(n.apply(this,arguments)),e.dim=t,e}return c.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=An(a,o);function c(t){r.selection=1===t&&null===o?null:s(t),u.call(e),i.brush()}return null!==a&&null!==o?c:c(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();or(e),i.selection=null===a?null:a,u.call(e),o.start().brush().end()}))},c.clear=function(t){c.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){pe(new Qr(c,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},c.extent=function(t){return arguments.length?(n="function"==typeof t?t:Jr(oi(t)),c):n},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Jr(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Jr(!!t),c):i},c.handleSize=function(t){return arguments.length?(s=+t,c):s},c.keyModifiers=function(t){return arguments.length?(a=!!t,c):a},c.on=function(){var t=o.on.apply(o,arguments);return t===o?c:t},c}var Si=Math.cos,Ai=Math.sin,Mi=Math.PI,Oi=Mi/2,Di=2*Mi,Ni=Math.max;function Bi(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Li=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,c,u,l,h=i.length,f=[],d=k(h),p=[],g=[],y=g.groups=new Array(h),v=new Array(h*h);for(a=0,u=-1;++u1e-6)if(Math.abs(l*s-c*u)>1e-6&&i){var f=n-a,d=r-o,p=s*s+c*c,g=f*f+d*d,y=Math.sqrt(p),v=Math.sqrt(h),m=i*Math.tan((Ii-Math.acos((p+h-g)/(2*y*v)))/2),b=m/v,x=m/y;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+x*s)+","+(this._y1=e+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-u)>1e-6)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%ji+ji),h>Ri?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>1e-6&&(this._+="A"+n+","+n+",0,"+ +(h>=Ii)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Ui=zi;function $i(t){return t.source}function Wi(t){return t.target}function Vi(t){return t.radius}function Hi(t){return t.startAngle}function Gi(t){return t.endAngle}var qi=function(){var t=$i,e=Wi,n=Vi,r=Hi,i=Gi,a=null;function o(){var o,s=Fi.call(arguments),c=t.apply(this,s),u=e.apply(this,s),l=+n.apply(this,(s[0]=c,s)),h=r.apply(this,s)-Oi,f=i.apply(this,s)-Oi,d=l*Si(h),p=l*Ai(h),g=+n.apply(this,(s[0]=u,s)),y=r.apply(this,s)-Oi,v=i.apply(this,s)-Oi;if(a||(a=o=Ui()),a.moveTo(d,p),a.arc(0,0,l,h,f),h===y&&f===v||(a.quadraticCurveTo(0,0,g*Si(y),g*Ai(y)),a.arc(0,0,g,y,v)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Pi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Pi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Pi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function Xi(){}function Zi(t,e){var n=new Xi;if(t instanceof Xi)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var c,u,l,h=-1,f=n.length,d=r[i++],p=Ji(),g=o();++hr.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,ea,na),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Ki(){return{}}function ta(t,e,n){t[e]=n}function ea(){return Ji()}function na(t,e,n){t.set(e,n)}function ra(){}var ia=Ji.prototype;function aa(t,e){var n=new ra;if(t instanceof ra)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/(6/29*3*(6/29))+4/29}function va(t){return t>6/29?t*t*t:6/29*3*(6/29)*(t-4/29)}function ma(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ba(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xa(t){if(t instanceof wa)return new wa(t.h,t.c,t.l,t.opacity);if(t instanceof ga||(t=fa(t)),0===t.a&&0===t.b)return new wa(NaN,0r!=d>r&&n<(f-u)*(r-l)/(d-l)+u&&(i=-i)}return i}function Ia(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var ja=function(){},Ra=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Ya=function(){var t=1,e=1,n=M,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(Ba);else{var r=y(t),i=r[0],o=r[1];e=A(i,o,e),e=k(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,c,u,l,h,f=new Array,d=new Array;a=s=-1,u=n[0]>=r,Ra[u<<1].forEach(p);for(;++a=r,Ra[c|u<<1].forEach(p);Ra[u<<0].forEach(p);for(;++s=r,l=n[s*t]>=r,Ra[u<<1|l<<2].forEach(p);++a=r,h=l,l=n[s*t+a+1]>=r,Ra[c|u<<1|l<<2|h<<3].forEach(p);Ra[u|l<<3].forEach(p)}a=-1,l=n[s*t]>=r,Ra[l<<2].forEach(p);for(;++a=r,Ra[l<<2|h<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],c=[t[1][0]+a,t[1][1]+s],u=o(r),l=o(c);(e=d[u])?(n=f[l])?(delete d[e.end],delete f[n.start],e===n?(e.ring.push(c),i(e.ring)):f[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(c),d[e.end=l]=e):(e=f[l])?(n=d[u])?(delete f[e.start],delete d[n.end],e===n?(e.ring.push(c),i(e.ring)):f[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete f[e.start],e.ring.unshift(r),f[e.start=u]=e):f[u]=d[l]={start:u,end:l,ring:[r,c]}}Ra[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:ja,i):r===s},i};function za(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[s-a+o*r]),e.data[s-n+o*r]=c/Math.min(s+1,r-1+a-s,a))}function Ua(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=c/Math.min(s+1,i-1+a-s,a))}function $a(t){return t[0]}function Wa(t){return t[1]}function Va(){return 1}var Ha=function(){var t=$a,e=Wa,n=Va,r=960,i=500,a=20,o=2,s=3*a,c=r+2*s>>o,u=i+2*s>>o,l=La(20);function h(r){var i=new Float32Array(c*u),h=new Float32Array(c*u);r.forEach((function(r,a,l){var h=+t(r,a,l)+s>>o,f=+e(r,a,l)+s>>o,d=+n(r,a,l);h>=0&&h=0&&f>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=L(i);d=A(0,p,d),(d=k(0,Math.floor(p/d)*d,d)).shift()}return Ya().thresholds(d).size([c,u])(i).map(f)}function f(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return c=r+2*(s=3*a)>>o,u=i+2*s>>o,h}return h.x=function(e){return arguments.length?(t="function"==typeof e?e:La(+e),h):t},h.y=function(t){return arguments.length?(e="function"==typeof t?t:La(+t),h):e},h.weight=function(t){return arguments.length?(n="function"==typeof t?t:La(+t),h):n},h.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,y()},h.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},h.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),h):l},h.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},h},Ga=function(t){return function(){return t}};function qa(t,e,n,r,i,a,o,s,c,u){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=c,this._=u}function Xa(){return!ce.ctrlKey&&!ce.button}function Za(){return this.parentNode}function Ja(t){return null==t?{x:ce.x,y:ce.y}:t}function Qa(){return navigator.maxTouchPoints||"ontouchstart"in this}qa.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Ka=function(){var t,e,n,r,i=Xa,a=Za,o=Ja,s=Qa,c={},u=lt("start","drag","end"),l=0,h=0;function f(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",y).on("touchmove.drag",v).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Nn,this,arguments);o&&(ke(ce.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Te(ce.view),we(),n=!1,t=ce.clientX,e=ce.clientY,o("start"))}}function p(){if(Ee(),!n){var r=ce.clientX-t,i=ce.clientY-e;n=r*r+i*i>h}c.mouse("drag")}function g(){ke(ce.view).on("mousemove.drag mouseup.drag",null),Ce(ce.view,n),Ee(),c.mouse("end")}function y(){if(i.apply(this,arguments)){var t,e,n=ce.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t9999?"+"+io(e,6):io(e,4))+"-"+io(t.getUTCMonth()+1,2)+"-"+io(t.getUTCDate(),2)+(a?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"."+io(a,3)+"Z":i?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"Z":r||n?"T"+io(n,2)+":"+io(r,2)+"Z":"")}var oo=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,c=a<=0,u=!1;function l(){if(c)return eo;if(u)return u=!1,to;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++=a?c=!0:10===(r=t.charCodeAt(o++))?u=!0:13===r&&(u=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o,i=d,!(d=d[h=l<<1|u]))return i[h]=p,t;if(s=+t._x.call(null,d.data),c=+t._y.call(null,d.data),e===s&&n===c)return p.next=d,i?i[h]=p:t._root=p,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(u=e>=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o}while((h=l<<1|u)==(f=(c>=o)<<1|s>=a));return i[f]=d,i[h]=p,t}var _s=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function ks(t){return t[0]}function ws(t){return t[1]}function Es(t,e,n){var r=new Ts(null==e?ks:e,null==n?ws:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ts(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Cs(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Ss=Es.prototype=Ts.prototype;function As(t){return t.x+t.vx}function Ms(t){return t.y+t.vy}Ss.copy=function(){var t,e,n=new Ts(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Cs(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Cs(e));return n},Ss.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return xs(this.cover(e,n),e,n,t)},Ss.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),c=1/0,u=1/0,l=-1/0,h=-1/0;for(n=0;nl&&(l=r),ih&&(h=i));if(c>l||u>h)return this;for(this.cover(c,u).cover(l,h),n=0;nt||t>=i||r>e||e>=a;)switch(s=(ef||(a=c.y0)>d||(o=c.x1)=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=c)}else{var m=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),x=m*m+b*b;if(x=(s=(p+y)/2))?p=s:y=s,(l=o>=(c=(g+v)/2))?g=c:v=c,e=d,!(d=d[h=l<<1|u]))return this;if(!d.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(n=e,f=h)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[h]=i:delete e[h],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[f]=d:this._root=d),this):(this._root=i,this)},Ss.removeAll=function(t){for(var e=0,n=t.length;ec+d||iu+d||as.index){var p=c-o.x-o.vx,g=u-o.y-o.vy,y=p*p+g*g;yt.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,c,u=0,l=t.length;for(null==r?r=1/0:r*=r,u=0;u1?(u.on(t,n),e):u.on(t)}}},js=function(){var t,e,n,r,i=ms(-30),a=1,o=1/0,s=.81;function c(r){var i,a=t.length,o=Es(t,Ls,Fs).visitAfter(l);for(n=r,i=0;i=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=bs())*l),0===h&&(d+=(h=bs())*h),d1?r[0]+r.slice(2):r,+t.slice(n+1)]},$s=function(t){return(t=Us(Math.abs(t)))?t[1]:NaN},Ws=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Vs(t){if(!(e=Ws.exec(t)))throw new Error("invalid format: "+t);var e;return new Hs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Hs(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Vs.prototype=Hs.prototype,Hs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Gs,qs,Xs,Zs,Js=function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Qs={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Js(100*t,e)},r:Js,s:function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Gs=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Us(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Ks=function(t){return t},tc=Array.prototype.map,ec=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],nc=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Ks:(e=tc.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Ks:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Vs(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Qs[m]||(void 0===y&&(y=12),v=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",x="$"===f?a:/[%p]/.test(m)?c:"",_=Qs[m],k=/[defgprs%]/.test(m);function w(t){var i,a,c,f=b,w=x;if("c"===m)w=_(t)+w,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?l:_(Math.abs(t),y),v&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),E&&0==+t&&(E=!1),f=(E?"("===h?h:u:"-"===h||"("===h?"":h)+f,w=("s"===m?ec[8+Gs/3]:"")+w+(E&&"("===h?")":""),k)for(i=-1,a=t.length;++i(c=t.charCodeAt(i))||c>57){w=(46===c?o+t.slice(i+1):t.slice(i))+w,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var T=f.length+t.length+w.length,C=T>1)+f+t+w+C.slice(T);break;default:t=C+f+t+w}return s(t)}return y=void 0===y?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),w.toString=function(){return t+""},w}return{format:h,formatPrefix:function(t,e){var n=h(((t=Vs(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($s(e)/3))),i=Math.pow(10,-r),a=ec[8+r/3];return function(t){return n(i*t)+a}}}};function rc(t){return qs=nc(t),Xs=qs.format,Zs=qs.formatPrefix,qs}rc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var ic=function(t){return Math.max(0,-$s(Math.abs(t)))},ac=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor($s(e)/3)))-$s(Math.abs(t)))},oc=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$s(e)-$s(t))+1},sc=function(){return new cc};function cc(){this.reset()}cc.prototype={constructor:cc,reset:function(){this.s=this.t=0},add:function(t){lc(uc,t,this.t),lc(this,uc.s,this.s),this.s?this.t+=uc.t:this.s=uc.t},valueOf:function(){return this.s}};var uc=new cc;function lc(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var hc=Math.PI,fc=hc/2,dc=hc/4,pc=2*hc,gc=180/hc,yc=hc/180,vc=Math.abs,mc=Math.atan,bc=Math.atan2,xc=Math.cos,_c=Math.ceil,kc=Math.exp,wc=(Math.floor,Math.log),Ec=Math.pow,Tc=Math.sin,Cc=Math.sign||function(t){return t>0?1:t<0?-1:0},Sc=Math.sqrt,Ac=Math.tan;function Mc(t){return t>1?0:t<-1?hc:Math.acos(t)}function Oc(t){return t>1?fc:t<-1?-fc:Math.asin(t)}function Dc(t){return(t=Tc(t/2))*t}function Nc(){}function Bc(t,e){t&&Fc.hasOwnProperty(t.type)&&Fc[t.type](t,e)}var Lc={Feature:function(t,e){Bc(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r=0?1:-1,i=r*n,a=xc(e=(e*=yc)/2+dc),o=Tc(e),s=Uc*o,c=zc*a+s*xc(i),u=s*r*Tc(i);Wc.add(bc(u,c)),Yc=t,zc=a,Uc=o}var Jc=function(t){return Vc.reset(),$c(t,Hc),2*Vc};function Qc(t){return[bc(t[1],t[0]),Oc(t[2])]}function Kc(t){var e=t[0],n=t[1],r=xc(n);return[r*xc(e),r*Tc(e),Tc(n)]}function tu(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function eu(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function nu(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ru(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function iu(t){var e=Sc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var au,ou,su,cu,uu,lu,hu,fu,du,pu,gu=sc(),yu={point:vu,lineStart:bu,lineEnd:xu,polygonStart:function(){yu.point=_u,yu.lineStart=ku,yu.lineEnd=wu,gu.reset(),Hc.polygonStart()},polygonEnd:function(){Hc.polygonEnd(),yu.point=vu,yu.lineStart=bu,yu.lineEnd=xu,Wc<0?(au=-(su=180),ou=-(cu=90)):gu>1e-6?cu=90:gu<-1e-6&&(ou=-90),pu[0]=au,pu[1]=su},sphere:function(){au=-(su=180),ou=-(cu=90)}};function vu(t,e){du.push(pu=[au=t,su=t]),ecu&&(cu=e)}function mu(t,e){var n=Kc([t*yc,e*yc]);if(fu){var r=eu(fu,n),i=eu([r[1],-r[0],0],r);iu(i),i=Qc(i);var a,o=t-uu,s=o>0?1:-1,c=i[0]*gc*s,u=vc(o)>180;u^(s*uucu&&(cu=a):u^(s*uu<(c=(c+360)%360-180)&&ccu&&(cu=e)),u?tEu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t):su>=au?(tsu&&(su=t)):t>uu?Eu(au,t)>Eu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t)}else du.push(pu=[au=t,su=t]);ecu&&(cu=e),fu=n,uu=t}function bu(){yu.point=mu}function xu(){pu[0]=au,pu[1]=su,yu.point=vu,fu=null}function _u(t,e){if(fu){var n=t-uu;gu.add(vc(n)>180?n+(n>0?360:-360):n)}else lu=t,hu=e;Hc.point(t,e),mu(t,e)}function ku(){Hc.lineStart()}function wu(){_u(lu,hu),Hc.lineEnd(),vc(gu)>1e-6&&(au=-(su=180)),pu[0]=au,pu[1]=su,fu=null}function Eu(t,e){return(e-=t)<0?e+360:e}function Tu(t,e){return t[0]-e[0]}function Cu(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEu(r[0],r[1])&&(r[1]=i[1]),Eu(i[0],r[1])>Eu(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=Eu(r[1],i[0]))>o&&(o=s,au=i[0],su=r[1])}return du=pu=null,au===1/0||ou===1/0?[[NaN,NaN],[NaN,NaN]]:[[au,ou],[su,cu]]},Wu={sphere:Nc,point:Vu,lineStart:Gu,lineEnd:Zu,polygonStart:function(){Wu.lineStart=Ju,Wu.lineEnd=Qu},polygonEnd:function(){Wu.lineStart=Gu,Wu.lineEnd=Zu}};function Vu(t,e){t*=yc;var n=xc(e*=yc);Hu(n*xc(t),n*Tc(t),Tc(e))}function Hu(t,e,n){++Su,Mu+=(t-Mu)/Su,Ou+=(e-Ou)/Su,Du+=(n-Du)/Su}function Gu(){Wu.point=qu}function qu(t,e){t*=yc;var n=xc(e*=yc);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Wu.point=Xu,Hu(Yu,zu,Uu)}function Xu(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=bc(Sc((o=zu*a-Uu*i)*o+(o=Uu*r-Yu*a)*o+(o=Yu*i-zu*r)*o),Yu*r+zu*i+Uu*a);Au+=o,Nu+=o*(Yu+(Yu=r)),Bu+=o*(zu+(zu=i)),Lu+=o*(Uu+(Uu=a)),Hu(Yu,zu,Uu)}function Zu(){Wu.point=Vu}function Ju(){Wu.point=Ku}function Qu(){tl(ju,Ru),Wu.point=Vu}function Ku(t,e){ju=t,Ru=e,t*=yc,e*=yc,Wu.point=tl;var n=xc(e);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Hu(Yu,zu,Uu)}function tl(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=zu*a-Uu*i,s=Uu*r-Yu*a,c=Yu*i-zu*r,u=Sc(o*o+s*s+c*c),l=Oc(u),h=u&&-l/u;Fu+=h*o,Pu+=h*s,Iu+=h*c,Au+=l,Nu+=l*(Yu+(Yu=r)),Bu+=l*(zu+(zu=i)),Lu+=l*(Uu+(Uu=a)),Hu(Yu,zu,Uu)}var el=function(t){Su=Au=Mu=Ou=Du=Nu=Bu=Lu=Fu=Pu=Iu=0,$c(t,Wu);var e=Fu,n=Pu,r=Iu,i=e*e+n*n+r*r;return i<1e-12&&(e=Nu,n=Bu,r=Lu,Au<1e-6&&(e=Mu,n=Ou,r=Du),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[bc(n,e)*gc,Oc(r/Sc(i))*gc]},nl=function(t){return function(){return t}},rl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function il(t,e){return[vc(t)>hc?t+Math.round(-t/pc)*pc:t,e]}function al(t,e,n){return(t%=pc)?e||n?rl(sl(t),cl(e,n)):sl(t):e||n?cl(e,n):il}function ol(t){return function(e,n){return[(e+=t)>hc?e-pc:e<-hc?e+pc:e,n]}}function sl(t){var e=ol(t);return e.invert=ol(-t),e}function cl(t,e){var n=xc(t),r=Tc(t),i=xc(e),a=Tc(e);function o(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*n+s*r;return[bc(c*i-l*a,s*n-u*r),Oc(l*i+c*a)]}return o.invert=function(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*i-c*a;return[bc(c*i+u*a,s*n+l*r),Oc(l*n-s*r)]},o}il.invert=il;var ul=function(t){function e(e){return(e=t(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e}return t=al(t[0]*yc,t[1]*yc,t.length>2?t[2]*yc:0),e.invert=function(e){return(e=t.invert(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e},e};function ll(t,e,n,r,i,a){if(n){var o=xc(e),s=Tc(e),c=r*n;null==i?(i=e+r*pc,a=e-c/2):(i=hl(o,i),a=hl(o,a),(r>0?ia)&&(i+=r*pc));for(var u,l=i;r>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},pl=function(t,e){return vc(t[0]-e[0])<1e-6&&vc(t[1]-e[1])<1e-6};function gl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var yl=function(t,e,n,r,i){var a,o,s=[],c=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(pl(r,o)){for(i.lineStart(),a=0;a=0;--a)i.point((l=u[a])[0],l[1]);else r(f.x,f.p.x,-1,i);f=f.p}u=(f=f.o).z,d=!d}while(!f.v);i.lineEnd()}}};function vl(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=0?1:-1,T=E*w,C=T>hc,S=g*_;if(ml.add(bc(S*E*Tc(T),y*k+S*xc(T))),o+=C?w+E*pc:w,C^d>=n^b>=n){var A=eu(Kc(f),Kc(m));iu(A);var M=eu(a,A);iu(M);var O=(C^w>=0?-1:1)*Oc(M[2]);(r>O||r===O&&(A[0]||A[1]))&&(s+=C^w>=0?1:-1)}}return(o<-1e-6||o<1e-6&&ml<-1e-6)^1&s},_l=function(t,e,n,r){return function(i){var a,o,s,c=e(i),u=dl(),l=e(u),h=!1,f={point:d,lineStart:g,lineEnd:y,polygonStart:function(){f.point=v,f.lineStart=m,f.lineEnd=b,o=[],a=[]},polygonEnd:function(){f.point=d,f.lineStart=g,f.lineEnd=y,o=I(o);var t=xl(a,r);o.length?(h||(i.polygonStart(),h=!0),yl(o,wl,t,n,i)):t&&(h||(i.polygonStart(),h=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){c.point(t,e)}function g(){f.point=p,c.lineStart()}function y(){f.point=d,c.lineEnd()}function v(t,e){s.push([t,e]),l.point(t,e)}function m(){l.lineStart(),s=[]}function b(){v(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,c=l.clean(),f=u.result(),d=f.length;if(s.pop(),a.push(s),s=null,d)if(1&c){if((e=(n=f[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),t=0;t1&&2&c&&f.push(f.pop().concat(f.shift())),o.push(f.filter(kl))}return f}};function kl(t){return t.length>1}function wl(t,e){return((t=t.x)[0]<0?t[1]-fc-1e-6:fc-t[1])-((e=e.x)[0]<0?e[1]-fc-1e-6:fc-e[1])}var El=_l((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?hc:-hc,c=vc(a-n);vc(c-hc)<1e-6?(t.point(n,r=(r+o)/2>0?fc:-fc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&c>=hc&&(vc(n-i)<1e-6&&(n-=1e-6*i),vc(a-s)<1e-6&&(a-=1e-6*s),r=function(t,e,n,r){var i,a,o=Tc(t-n);return vc(o)>1e-6?mc((Tc(e)*(a=xc(r))*Tc(n)-Tc(r)*(i=xc(e))*Tc(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*fc,r.point(-hc,i),r.point(0,i),r.point(hc,i),r.point(hc,0),r.point(hc,-i),r.point(0,-i),r.point(-hc,-i),r.point(-hc,0),r.point(-hc,i);else if(vc(t[0]-e[0])>1e-6){var a=t[0]0,i=vc(e)>1e-6;function a(t,n){return xc(t)*xc(n)>e}function o(t,n,r){var i=[1,0,0],a=eu(Kc(t),Kc(n)),o=tu(a,a),s=a[0],c=o-s*s;if(!c)return!r&&t;var u=e*o/c,l=-e*s/c,h=eu(i,a),f=ru(i,u);nu(f,ru(a,l));var d=h,p=tu(f,d),g=tu(d,d),y=p*p-g*(tu(f,f)-1);if(!(y<0)){var v=Sc(y),m=ru(d,(-p-v)/g);if(nu(m,f),m=Qc(m),!r)return m;var b,x=t[0],_=n[0],k=t[1],w=n[1];_0^m[1]<(vc(m[0]-x)<1e-6?k:w):k<=m[1]&&m[1]<=w:E>hc^(x<=m[0]&&m[0]<=_)){var C=ru(d,(-p+v)/g);return nu(C,f),[m,Qc(C)]}}}function s(e,n){var i=r?t:hc-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return _l(a,(function(t){var e,n,c,u,l;return{lineStart:function(){u=c=!1,l=1},point:function(h,f){var d,p=[h,f],g=a(h,f),y=r?g?0:s(h,f):g?s(h+(h<0?hc:-hc),f):0;if(!e&&(u=c=g)&&t.lineStart(),g!==c&&(!(d=o(e,p))||pl(e,d)||pl(p,d))&&(p[0]+=1e-6,p[1]+=1e-6,g=a(p[0],p[1])),g!==c)l=0,g?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var v;y&n||!(v=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&pl(e,p)||t.point(p[0],p[1]),e=p,c=g,n=y},lineEnd:function(){c&&t.lineEnd(),e=null},clean:function(){return l|(u&&c)<<1}}}),(function(e,r,i,a){ll(a,t,n,i,e,r)}),r?[0,-t]:[-hc,t-hc])};function Cl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,u){var l=0,h=0;if(null==i||(l=o(i,s))!==(h=o(a,s))||c(i,a)<0^s>0)do{u.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==h);else u.point(a[0],a[1])}function o(r,i){return vc(r[0]-t)<1e-6?i>0?0:3:vc(r[0]-n)<1e-6?i>0?2:1:vc(r[1]-e)<1e-6?i>0?1:0:i>0?3:2}function s(t,e){return c(t.x,e.x)}function c(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var c,u,l,h,f,d,p,g,y,v,m,b=o,x=dl(),_={point:k,lineStart:function(){_.point=w,u&&u.push(l=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(w(h,f),d&&y&&x.rejoin(),c.push(x.result()));_.point=k,y&&b.lineEnd()},polygonStart:function(){b=x,c=[],u=[],m=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;nr&&(f-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(f-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=m&&e,i=(c=I(c)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&yl(c,s,e,a,o),o.polygonEnd());b=o,c=u=l=null}};function k(t,e){i(t,e)&&b.point(t,e)}function w(a,o){var s=i(a,o);if(u&&l.push([a,o]),v)h=a,f=o,d=s,v=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&y)b.point(a,o);else{var c=[p=Math.max(-1e9,Math.min(1e9,p)),g=Math.max(-1e9,Math.min(1e9,g))],x=[a=Math.max(-1e9,Math.min(1e9,a)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,n,r,i,a){var o,s=t[0],c=t[1],u=0,l=1,h=e[0]-s,f=e[1]-c;if(o=n-s,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=i-s,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>u&&(u=o)}else if(h>0){if(o0)){if(o/=f,f<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=a-c,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>u&&(u=o)}else if(f>0){if(o0&&(t[0]=s+u*h,t[1]=c+u*f),l<1&&(e[0]=s+l*h,e[1]=c+l*f),!0}}}}}(c,x,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),m=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(x[0],x[1]),s||b.lineEnd(),m=!1)}p=a,g=o,y=s}return _}}var Sl,Al,Ml,Ol=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Cl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Dl=sc(),Nl={sphere:Nc,point:Nc,lineStart:function(){Nl.point=Ll,Nl.lineEnd=Bl},lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc};function Bl(){Nl.point=Nl.lineEnd=Nc}function Ll(t,e){Sl=t*=yc,Al=Tc(e*=yc),Ml=xc(e),Nl.point=Fl}function Fl(t,e){t*=yc;var n=Tc(e*=yc),r=xc(e),i=vc(t-Sl),a=xc(i),o=r*Tc(i),s=Ml*n-Al*r*a,c=Al*n+Ml*r*a;Dl.add(bc(Sc(o*o+s*s),c)),Sl=t,Al=n,Ml=r}var Pl=function(t){return Dl.reset(),$c(t,Nl),+Dl},Il=[null,null],jl={type:"LineString",coordinates:Il},Rl=function(t,e){return Il[0]=t,Il[1]=e,Pl(jl)},Yl={Feature:function(t,e){return Ul(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r0&&(i=Rl(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<1e-12*i)return!0;n=r}return!1}function Vl(t,e){return!!xl(t.map(Hl),Gl(e))}function Hl(t){return(t=t.map(Gl)).pop(),t}function Gl(t){return[t[0]*yc,t[1]*yc]}var ql=function(t,e){return(t&&Yl.hasOwnProperty(t.type)?Yl[t.type]:Ul)(t,e)};function Xl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Zl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Jl(){var t,e,n,r,i,a,o,s,c,u,l,h,f=10,d=f,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:m()}}function m(){return k(_c(r/p)*p,n,p).map(l).concat(k(_c(s/g)*g,o,g).map(h)).concat(k(_c(e/f)*f,t,f).filter((function(t){return vc(t%p)>1e-6})).map(c)).concat(k(_c(a/d)*d,i,d).filter((function(t){return vc(t%g)>1e-6})).map(u))}return v.lines=function(){return m().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(h(o).slice(1),l(n).reverse().slice(1),h(s).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),v.precision(y)):[[r,s],[n,o]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),v.precision(y)):[[e,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(f=+t[0],d=+t[1],v):[f,d]},v.precision=function(f){return arguments.length?(y=+f,c=Xl(a,i,90),u=Zl(e,t,y),l=Xl(s,o,90),h=Zl(r,n,y),v):y},v.extentMajor([[-180,1e-6-90],[180,90-1e-6]]).extentMinor([[-180,-80-1e-6],[180,80+1e-6]])}function Ql(){return Jl()()}var Kl,th,eh,nh,rh=function(t,e){var n=t[0]*yc,r=t[1]*yc,i=e[0]*yc,a=e[1]*yc,o=xc(r),s=Tc(r),c=xc(a),u=Tc(a),l=o*xc(n),h=o*Tc(n),f=c*xc(i),d=c*Tc(i),p=2*Oc(Sc(Dc(a-r)+o*c*Dc(i-n))),g=Tc(p),y=p?function(t){var e=Tc(t*=p)/g,n=Tc(p-t)/g,r=n*l+e*f,i=n*h+e*d,a=n*s+e*u;return[bc(i,r)*gc,bc(a,Sc(r*r+i*i))*gc]}:function(){return[n*gc,r*gc]};return y.distance=p,y},ih=function(t){return t},ah=sc(),oh=sc(),sh={point:Nc,lineStart:Nc,lineEnd:Nc,polygonStart:function(){sh.lineStart=ch,sh.lineEnd=hh},polygonEnd:function(){sh.lineStart=sh.lineEnd=sh.point=Nc,ah.add(vc(oh)),oh.reset()},result:function(){var t=ah/2;return ah.reset(),t}};function ch(){sh.point=uh}function uh(t,e){sh.point=lh,Kl=eh=t,th=nh=e}function lh(t,e){oh.add(nh*t-eh*e),eh=t,nh=e}function hh(){lh(Kl,th)}var fh=sh,dh=1/0,ph=dh,gh=-dh,yh=gh;var vh,mh,bh,xh,_h={point:function(t,e){tgh&&(gh=t);eyh&&(yh=e)},lineStart:Nc,lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc,result:function(){var t=[[dh,ph],[gh,yh]];return gh=yh=-(ph=dh=1/0),t}},kh=0,wh=0,Eh=0,Th=0,Ch=0,Sh=0,Ah=0,Mh=0,Oh=0,Dh={point:Nh,lineStart:Bh,lineEnd:Ph,polygonStart:function(){Dh.lineStart=Ih,Dh.lineEnd=jh},polygonEnd:function(){Dh.point=Nh,Dh.lineStart=Bh,Dh.lineEnd=Ph},result:function(){var t=Oh?[Ah/Oh,Mh/Oh]:Sh?[Th/Sh,Ch/Sh]:Eh?[kh/Eh,wh/Eh]:[NaN,NaN];return kh=wh=Eh=Th=Ch=Sh=Ah=Mh=Oh=0,t}};function Nh(t,e){kh+=t,wh+=e,++Eh}function Bh(){Dh.point=Lh}function Lh(t,e){Dh.point=Fh,Nh(bh=t,xh=e)}function Fh(t,e){var n=t-bh,r=e-xh,i=Sc(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Sh+=i,Nh(bh=t,xh=e)}function Ph(){Dh.point=Nh}function Ih(){Dh.point=Rh}function jh(){Yh(vh,mh)}function Rh(t,e){Dh.point=Yh,Nh(vh=bh=t,mh=xh=e)}function Yh(t,e){var n=t-bh,r=e-xh,i=Sc(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Sh+=i,Ah+=(i=xh*t-bh*e)*(bh+t),Mh+=i*(xh+e),Oh+=3*i,Nh(bh=t,xh=e)}var zh=Dh;function Uh(t){this._context=t}Uh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,pc)}},result:Nc};var $h,Wh,Vh,Hh,Gh,qh=sc(),Xh={point:Nc,lineStart:function(){Xh.point=Zh},lineEnd:function(){$h&&Jh(Wh,Vh),Xh.point=Nc},polygonStart:function(){$h=!0},polygonEnd:function(){$h=null},result:function(){var t=+qh;return qh.reset(),t}};function Zh(t,e){Xh.point=Jh,Wh=Hh=t,Vh=Gh=e}function Jh(t,e){Hh-=t,Gh-=e,qh.add(Sc(Hh*Hh+Gh*Gh)),Hh=t,Gh=e}var Qh=Xh;function Kh(){this._string=[]}function tf(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}Kh.prototype={_radius:4.5,_circle:tf(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=tf(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ef=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),$c(t,n(r))),r.result()}return a.area=function(t){return $c(t,n(fh)),fh.result()},a.measure=function(t){return $c(t,n(Qh)),Qh.result()},a.bounds=function(t){return $c(t,n(_h)),_h.result()},a.centroid=function(t){return $c(t,n(zh)),zh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,ih):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new Kh):new Uh(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},nf=function(t){return{stream:rf(t)}};function rf(t){return function(e){var n=new af;for(var r in t)n[r]=t[r];return n.stream=e,n}}function af(){}function of(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),$c(n,t.stream(_h)),e(_h.result()),null!=r&&t.clipExtent(r),t}function sf(t,e,n){return of(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function cf(t,e,n){return sf(t,[[0,0],e],n)}function uf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function lf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}af.prototype={constructor:af,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var hf=xc(30*yc),ff=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,c,u,l,h,f,d,p,g,y){var v=u-r,m=l-i,b=v*v+m*m;if(b>4*e&&g--){var x=o+f,_=s+d,k=c+p,w=Sc(x*x+_*_+k*k),E=Oc(k/=w),T=vc(vc(k)-1)<1e-6||vc(a-h)<1e-6?(a+h)/2:bc(_,x),C=t(T,E),S=C[0],A=C[1],M=S-r,O=A-i,D=m*M-v*O;(D*D/b>e||vc((v*M+m*O)/b-.5)>.3||o*f+s*d+c*p2?t[2]%360*yc:0,S()):[y*gc,v*gc,m*gc]},T.angle=function(t){return arguments.length?(b=t%360*yc,S()):b*gc},T.precision=function(t){return arguments.length?(o=ff(s,E=t*t),A()):Sc(E)},T.fitExtent=function(t,e){return sf(T,t,e)},T.fitSize=function(t,e){return cf(T,t,e)},T.fitWidth=function(t,e){return uf(T,t,e)},T.fitHeight=function(t,e){return lf(T,t,e)},function(){return e=t.apply(this,arguments),T.invert=e.invert&&C,S()}}function mf(t){var e=0,n=hc/3,r=vf(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*yc,n=t[1]*yc):[e*gc,n*gc]},i}function bf(t,e){var n=Tc(t),r=(n+Tc(e))/2;if(vc(r)<1e-6)return function(t){var e=xc(t);function n(t,n){return[t*e,Tc(n)/e]}return n.invert=function(t,n){return[t/e,Oc(n*e)]},n}(t);var i=1+n*(2*r-n),a=Sc(i)/r;function o(t,e){var n=Sc(i-2*r*Tc(e))/r;return[n*Tc(t*=r),a-n*xc(t)]}return o.invert=function(t,e){var n=a-e;return[bc(t,vc(n))/r*Cc(n),Oc((i-(t*t+n*n)*r*r)/(2*r))]},o}var xf=function(){return mf(bf).scale(155.424).center([0,33.6442])},_f=function(){return xf().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var kf=function(){var t,e,n,r,i,a,o=_f(),s=xf().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=xf().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),c.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n0?e<1e-6-fc&&(e=1e-6-fc):e>fc-1e-6&&(e=fc-1e-6);var n=i/Ec(Nf(e),r);return[n*Tc(r*t),i-n*xc(r*t)]}return a.invert=function(t,e){var n=i-e,a=Cc(r)*Sc(t*t+n*n);return[bc(t,vc(n))/r*Cc(n),2*mc(Ec(i/a,1/r))-fc]},a}var Lf=function(){return mf(Bf).scale(109.5).parallels([30,30])};function Ff(t,e){return[t,e]}Ff.invert=Ff;var Pf=function(){return yf(Ff).scale(152.63)};function If(t,e){var n=xc(t),r=t===e?Tc(t):(n-xc(e))/(e-t),i=n/r+t;if(vc(r)<1e-6)return Ff;function a(t,e){var n=i-e,a=r*t;return[n*Tc(a),i-n*xc(a)]}return a.invert=function(t,e){var n=i-e;return[bc(t,vc(n))/r*Cc(n),i-Cc(r)*Sc(t*t+n*n)]},a}var jf=function(){return mf(If).scale(131.154).center([0,13.9389])},Rf=1.340264,Yf=-.081106,zf=893e-6,Uf=.003796,$f=Sc(3)/2;function Wf(t,e){var n=Oc($f*Tc(e)),r=n*n,i=r*r*r;return[t*xc(n)/($f*(Rf+3*Yf*r+i*(7*zf+9*Uf*r))),n*(Rf+Yf*r+i*(zf+Uf*r))]}Wf.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(Rf+Yf*i+a*(zf+Uf*i))-e)/(Rf+3*Yf*i+a*(7*zf+9*Uf*i)))*r)*i*i,!(vc(n)<1e-12));++o);return[$f*t*(Rf+3*Yf*i+a*(7*zf+9*Uf*i))/xc(r),Oc(Tc(r)/$f)]};var Vf=function(){return yf(Wf).scale(177.158)};function Hf(t,e){var n=xc(e),r=xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}Hf.invert=Ef(mc);var Gf=function(){return yf(Hf).scale(144.049).clipAngle(60)};function qf(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?ih:rf({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Xf=function(){var t,e,n,r,i,a,o=1,s=0,c=0,u=1,l=1,h=ih,f=null,d=ih;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=h(d(i=t))},postclip:function(r){return arguments.length?(d=r,f=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(f=t=e=n=null,ih):Cl(f=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==f?null:[[f,t],[e,n]]},scale:function(t){return arguments.length?(h=qf((o=+t)*u,o*l,s,c),p()):o},translate:function(t){return arguments.length?(h=qf(o*u,o*l,s=+t[0],c=+t[1]),p()):[s,c]},reflectX:function(t){return arguments.length?(h=qf(o*(u=t?-1:1),o*l,s,c),p()):u<0},reflectY:function(t){return arguments.length?(h=qf(o*u,o*(l=t?-1:1),s,c),p()):l<0},fitExtent:function(t,e){return sf(a,t,e)},fitSize:function(t,e){return cf(a,t,e)},fitWidth:function(t,e){return uf(a,t,e)},fitHeight:function(t,e){return lf(a,t,e)}}};function Zf(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Zf.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(vc(n)>1e-6&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Jf=function(){return yf(Zf).scale(175.295)};function Qf(t,e){return[xc(e)*Tc(t),Tc(e)]}Qf.invert=Ef(Oc);var Kf=function(){return yf(Qf).scale(249.5).clipAngle(90+1e-6)};function td(t,e){var n=xc(e),r=1+xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}td.invert=Ef((function(t){return 2*mc(t)}));var ed=function(){return yf(td).scale(250).clipAngle(142)};function nd(t,e){return[wc(Ac((fc+e)/2)),-t]}nd.invert=function(t,e){return[-e,2*mc(kc(t))-fc]};var rd=function(){var t=Df(nd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function id(t,e){return t.parent===e.parent?1:2}function ad(t,e){return t+e.x}function od(t,e){return Math.max(t,e.y)}var sd=function(){var t=id,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ad,0)/t.length}(n),e.y=function(t){return 1+t.reduce(od,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),c=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=s.x-t(s,c)/2,l=c.x+t(c,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(l-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function cd(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function ud(t,e){var n,r,i,a,o,s=new dd(t),c=+t.value&&(s.value=t.value),u=[s];for(null==e&&(e=ld);n=u.pop();)if(c&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)u.push(r=n.children[a]=new dd(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(fd)}function ld(t){return t.children}function hd(t){t.data=t.data.data}function fd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dd(t){this.data=t,this.depth=this.height=0,this.parent=null}dd.prototype=ud.prototype={constructor:dd,count:function(){return this.eachAfter(cd)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return ud(this).eachBefore(hd)}};var pd=Array.prototype.slice;var gd=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pd.call(t))).length,a=[];r0&&n*n>r*r+i*i}function bd(t,e){for(var n=0;n(o*=o)?(r=(u+o-i)/(2*u),a=Math.sqrt(Math.max(0,o/u-r*r)),n.x=t.x-r*s-a*c,n.y=t.y-r*c+a*s):(r=(u+i-o)/(2*u),a=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*s-a*c,n.y=e.y+r*c+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ed(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Td(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Cd(t){this._=t,this.next=null,this.previous=null}function Sd(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,c,u,l,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;wd(n,e,r=t[2]),e=new Cd(e),n=new Cd(n),r=new Cd(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Od(e),n):t},n.parentId=function(t){return arguments.length?(e=Od(t),n):e},n};function Hd(t,e){return t.parent===e.parent?1:2}function Gd(t){var e=t.children;return e?e[0]:t.t}function qd(t){var e=t.children;return e?e[e.length-1]:t.t}function Xd(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zd(t,e,n){return t.a.parent===e.parent?t.a:n}function Jd(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jd.prototype=Object.create(dd.prototype);var Qd=function(){var t=Hd,e=1,n=1,r=null;function i(i){var c=function(t){for(var e,n,r,i,a,o=new Jd(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jd(r[i],i)),n.parent=e;return(o.parent=new Jd(null,0)).children=[o],o}(i);if(c.eachAfter(a),c.parent.m=-c.z,c.eachBefore(o),r)i.eachBefore(s);else{var u=i,l=i,h=i;i.eachBefore((function(t){t.xl.x&&(l=t),t.depth>h.depth&&(h=t)}));var f=u===l?1:t(u,l)/2,d=f-u.x,p=e/(l.x+f+d),g=n/(h.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,c=a.parent.children[0],u=a.m,l=o.m,h=s.m,f=c.m;s=qd(s),a=Gd(a),s&&a;)c=Gd(c),(o=qd(o)).a=e,(i=s.z+h-a.z-u+t(s._,a._))>0&&(Xd(Zd(s,e,r),e,i),u+=i,l+=i),h+=s.m,u+=a.m,f+=c.m,l+=o.m;s&&!qd(o)&&(o.t=s,o.m+=h-l),a&&!Gd(c)&&(c.t=a,c.m+=u-f,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},Kd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,c=o.length,u=t.value&&(i-n)/t.value;++sf&&(f=s),y=l*l*g,(d=Math.max(f/y,y/h))>p){l-=s;break}p=d}v.push(o={value:l,dice:c1?e:1)},n}(tp),rp=function(){var t=np,e=!1,n=1,r=1,i=[0],a=Dd,o=Dd,s=Dd,c=Dd,u=Dd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(h),i=[0],e&&t.eachBefore(jd),t}function h(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,h=e.x1-n,f=e.y1-n;h=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=c)}var h=u[e],f=r/2+h,d=e+1,p=n-1;for(;d>>1;u[g]c-a){var m=(i*v+o*y)/r;t(e,d,y,i,a,m,c),t(d,n,v,m,a,o,c)}else{var b=(a*v+c*y)/r;t(e,d,y,i,a,o,b),t(d,n,v,i,b,o,c)}}(0,c,t.value,e,n,r,i)},ap=function(t,e,n,r,i){(1&t.depth?Kd:Rd)(t,e,n,r,i)},op=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,c,u,l,h=-1,f=o.length,d=t.value;++h1?e:1)},n}(tp),sp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},cp=function(t,e){var n=un(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},up=function(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}},lp=Math.SQRT2;function hp(t){return((t=Math.exp(t))+1/t)/2}var fp=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],c=e[1],u=e[2],l=s-i,h=c-a,f=l*l+h*h;if(f<1e-12)r=Math.log(u/o)/lp,n=function(t){return[i+t*l,a+t*h,o*Math.exp(lp*t*r)]};else{var d=Math.sqrt(f),p=(u*u-o*o+4*f)/(2*o*2*d),g=(u*u-o*o-4*f)/(2*u*2*d),y=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-y)/lp,n=function(t){var e,n=t*r,s=hp(y),c=o/(2*d)*(s*(e=lp*n+y,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(y));return[i+c*l,a+c*h,o*s/hp(lp*n+y)]}}return n.duration=1e3*r,n};function dp(t){return function(e,n){var r=t((e=tn(e)).h,(n=tn(n)).h),i=hn(e.s,n.s),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var pp=dp(un),gp=dp(hn);function yp(t,e){var n=hn((t=pa(t)).l,(e=pa(e)).l),r=hn(t.a,e.a),i=hn(t.b,e.b),a=hn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function vp(t){return function(e,n){var r=t((e=ka(e)).h,(n=ka(n)).h),i=hn(e.c,n.c),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var mp=vp(un),bp=vp(hn);function xp(t){return function e(n){function r(e,r){var i=t((e=Oa(e)).h,(r=Oa(r)).h),a=hn(e.s,r.s),o=hn(e.l,r.l),s=hn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}var _p=xp(un),kp=xp(hn);function wp(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n1&&(e=t[a[o-2]],n=t[a[o-1]],r=t[s],(n[0]-e[0])*(r[1]-e[1])-(n[1]-e[1])*(r[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}var Mp=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e=0;--e)u.push(t[r[a[e]][2]]);for(e=+s;es!=u>s&&o<(c-n)*(s-r)/(u-r)+n&&(l=!l),c=n,u=r;return l},Dp=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],c=0;++r1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Np),Fp=function t(e){function n(){var t=Lp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Np),Pp=function t(e){function n(t){return function(){for(var n=0,r=0;rr&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function tg(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i2?eg:tg,i=a=null,h}function h(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),_n)))(n)))},h.domain=function(t){return arguments.length?(o=Up.call(t,Xp),u===Jp||(u=Kp(o)),l()):o.slice()},h.range=function(t){return arguments.length?(s=$p.call(t),l()):s.slice()},h.rangeRound=function(t){return s=$p.call(t),c=up,l()},h.clamp=function(t){return arguments.length?(u=t?Kp(o):Jp,h):u!==Jp},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}function ig(t,e){return rg()(t,e)}var ag=function(t,e,n,r){var i,a=A(t,e,n);switch((r=Vs(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=ac(a,o))||(r.precision=i),Zs(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=oc(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=ic(a))||(r.precision=i-2*("%"===r.type))}return Xs(r)};function og(t){var e=t.domain;return t.ticks=function(t){var n=e();return C(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ag(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],c=i[o];return c0?r=S(s=Math.floor(s/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=S(s=Math.ceil(s*r)/r,c=Math.floor(c*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(c/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(c*r)/r,e(i)),t},t}function sg(){var t=ig(Jp,Jp);return t.copy=function(){return ng(t,sg())},Rp.apply(t,arguments),og(t)}function cg(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Up.call(e,Xp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return cg(t).unknown(e)},t=arguments.length?Up.call(t,Xp):[0,1],og(n)}var ug=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o0){for(;fc)break;g.push(h)}}else for(;f=1;--l)if(!((h=u*l)c)break;g.push(h)}}else g=C(f,d,Math.min(d-f,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Xs(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a0?i[r-1]:e[0],r=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Mg().domain([e,n]).range(a).unknown(t)},Rp.apply(og(o),arguments)}function Og(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[c(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=$p.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=$p.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Og().domain(e).range(n).unknown(t)},Rp.apply(i,arguments)}var Dg=new Date,Ng=new Date;function Bg(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Dg.setTime(+e),Ng.setTime(+r),t(Dg),t(Ng),Math.floor(n(Dg,Ng))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Lg=Bg((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Lg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var Fg=Lg,Pg=Lg.range,Ig=Bg((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),jg=Ig,Rg=Ig.range;function Yg(t){return Bg((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var zg=Yg(0),Ug=Yg(1),$g=Yg(2),Wg=Yg(3),Vg=Yg(4),Hg=Yg(5),Gg=Yg(6),qg=zg.range,Xg=Ug.range,Zg=$g.range,Jg=Wg.range,Qg=Vg.range,Kg=Hg.range,ty=Gg.range,ey=Bg((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ny=ey,ry=ey.range,iy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),ay=iy,oy=iy.range,sy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),cy=sy,uy=sy.range,ly=Bg((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),hy=ly,fy=ly.range,dy=Bg((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));dy.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Bg((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):dy:null};var py=dy,gy=dy.range;function yy(t){return Bg((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var vy=yy(0),my=yy(1),by=yy(2),xy=yy(3),_y=yy(4),ky=yy(5),wy=yy(6),Ey=vy.range,Ty=my.range,Cy=by.range,Sy=xy.range,Ay=_y.range,My=ky.range,Oy=wy.range,Dy=Bg((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),Ny=Dy,By=Dy.range,Ly=Bg((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ly.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var Fy=Ly,Py=Ly.range;function Iy(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function jy(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ry(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yy(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Qy(i),l=Ky(i),h=Qy(a),f=Ky(a),d=Qy(o),p=Ky(o),g=Qy(s),y=Ky(s),v=Qy(c),m=Ky(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:xv,e:xv,f:Tv,H:_v,I:kv,j:wv,L:Ev,m:Cv,M:Sv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:em,s:nm,S:Av,u:Mv,U:Ov,V:Dv,w:Nv,W:Bv,x:null,X:null,y:Lv,Y:Fv,Z:Pv,"%":tm},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Iv,e:Iv,f:Uv,H:jv,I:Rv,j:Yv,L:zv,m:$v,M:Wv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:em,s:nm,S:Vv,u:Hv,U:Gv,V:qv,w:Xv,W:Zv,x:null,X:null,y:Jv,Y:Qv,Z:Kv,"%":tm},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:lv,e:lv,f:yv,H:fv,I:fv,j:hv,L:gv,m:uv,M:dv,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:cv,Q:mv,s:bv,S:pv,u:ev,U:nv,V:rv,w:tv,W:iv,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:ov,Y:av,Z:sv,"%":vv};function k(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=jy(Ry(a.y,0,1))).getUTCDay(),r=i>4||0===i?my.ceil(r):my(r),r=Ny.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Iy(Ry(a.y,0,1))).getDay(),r=i>4||0===i?Ug.ceil(r):Ug(r),r=ny.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?jy(Ry(a.y,0,1)).getUTCDay():Iy(Ry(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,jy(a)):Iy(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=_[i in Hy?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(b.x=k(n,b),b.X=k(r,b),b.c=k(e,b),x.x=k(n,x),x.X=k(r,x),x.c=k(e,x),{format:function(t){var e=k(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=w(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=w(t+="",!0);return e.toString=function(){return t},e}})}var zy,Uy,$y,Wy,Vy,Hy={"-":"",_:" ",0:"0"},Gy=/^\s*\d+/,qy=/^%/,Xy=/[\\^$*+?|[\]().{}]/g;function Zy(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),n+r[0].length):-1}function sv(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function cv(t,e,n){var r=Gy.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function uv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function hv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function fv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function gv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function yv(t,e,n){var r=Gy.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function vv(t,e,n){var r=qy.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function mv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function bv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xv(t,e){return Zy(t.getDate(),e,2)}function _v(t,e){return Zy(t.getHours(),e,2)}function kv(t,e){return Zy(t.getHours()%12||12,e,2)}function wv(t,e){return Zy(1+ny.count(Fg(t),t),e,3)}function Ev(t,e){return Zy(t.getMilliseconds(),e,3)}function Tv(t,e){return Ev(t,e)+"000"}function Cv(t,e){return Zy(t.getMonth()+1,e,2)}function Sv(t,e){return Zy(t.getMinutes(),e,2)}function Av(t,e){return Zy(t.getSeconds(),e,2)}function Mv(t){var e=t.getDay();return 0===e?7:e}function Ov(t,e){return Zy(zg.count(Fg(t)-1,t),e,2)}function Dv(t,e){var n=t.getDay();return t=n>=4||0===n?Vg(t):Vg.ceil(t),Zy(Vg.count(Fg(t),t)+(4===Fg(t).getDay()),e,2)}function Nv(t){return t.getDay()}function Bv(t,e){return Zy(Ug.count(Fg(t)-1,t),e,2)}function Lv(t,e){return Zy(t.getFullYear()%100,e,2)}function Fv(t,e){return Zy(t.getFullYear()%1e4,e,4)}function Pv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Zy(e/60|0,"0",2)+Zy(e%60,"0",2)}function Iv(t,e){return Zy(t.getUTCDate(),e,2)}function jv(t,e){return Zy(t.getUTCHours(),e,2)}function Rv(t,e){return Zy(t.getUTCHours()%12||12,e,2)}function Yv(t,e){return Zy(1+Ny.count(Fy(t),t),e,3)}function zv(t,e){return Zy(t.getUTCMilliseconds(),e,3)}function Uv(t,e){return zv(t,e)+"000"}function $v(t,e){return Zy(t.getUTCMonth()+1,e,2)}function Wv(t,e){return Zy(t.getUTCMinutes(),e,2)}function Vv(t,e){return Zy(t.getUTCSeconds(),e,2)}function Hv(t){var e=t.getUTCDay();return 0===e?7:e}function Gv(t,e){return Zy(vy.count(Fy(t)-1,t),e,2)}function qv(t,e){var n=t.getUTCDay();return t=n>=4||0===n?_y(t):_y.ceil(t),Zy(_y.count(Fy(t),t)+(4===Fy(t).getUTCDay()),e,2)}function Xv(t){return t.getUTCDay()}function Zv(t,e){return Zy(my.count(Fy(t)-1,t),e,2)}function Jv(t,e){return Zy(t.getUTCFullYear()%100,e,2)}function Qv(t,e){return Zy(t.getUTCFullYear()%1e4,e,4)}function Kv(){return"+0000"}function tm(){return"%"}function em(t){return+t}function nm(t){return Math.floor(+t/1e3)}function rm(t){return zy=Yy(t),Uy=zy.format,$y=zy.parse,Wy=zy.utcFormat,Vy=zy.utcParse,zy}rm({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function im(t){return new Date(t)}function am(t){return t instanceof Date?+t:+new Date(+t)}function om(t,e,n,r,a,o,s,c,u){var l=ig(Jp,Jp),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),y=u("%I %p"),v=u("%a %d"),m=u("%b %d"),b=u("%B"),x=u("%Y"),_=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[a,1,36e5],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function k(i){return(s(i)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return qb.h=360*t-100,qb.s=1.5-1.5*e,qb.l=.8-.9*e,qb+""},Zb=Ge(),Jb=Math.PI/3,Qb=2*Math.PI/3,Kb=function(t){var e;return t=(.5-t)*Math.PI,Zb.r=255*(e=Math.sin(t))*e,Zb.g=255*(e=Math.sin(t+Jb))*e,Zb.b=255*(e=Math.sin(t+Qb))*e,Zb+""},tx=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var nx=ex(Nm("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=ex(Nm("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ix=ex(Nm("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ax=ex(Nm("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),ox=function(t){return ke(ne(t).call(document.documentElement))},sx=0;function cx(){return new ux}function ux(){this._="@"+(++sx).toString(36)}ux.prototype=cx.prototype={constructor:ux,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var lx=function(t){return"string"==typeof t?new be([document.querySelectorAll(t)],[document.documentElement]):new be([null==t?[]:t],me)},hx=function(t,e){null==e&&(e=Mn().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n1?0:t<-1?xx:Math.acos(t)}function Ex(t){return t>=1?_x:t<=-1?-_x:Math.asin(t)}function Tx(t){return t.innerRadius}function Cx(t){return t.outerRadius}function Sx(t){return t.startAngle}function Ax(t){return t.endAngle}function Mx(t){return t&&t.padAngle}function Ox(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*f<1e-12))return[t+(f=(l*(e-a)-h*(t-i))/f)*c,e+f*u]}function Dx(t,e,n,r,i,a,o){var s=t-n,c=e-r,u=(o?a:-a)/bx(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,p=n+l,g=r+h,y=(f+p)/2,v=(d+g)/2,m=p-f,b=g-d,x=m*m+b*b,_=i-a,k=f*g-p*d,w=(b<0?-1:1)*bx(yx(0,_*_*x-k*k)),E=(k*b-m*w)/x,T=(-k*m-b*w)/x,C=(k*b+m*w)/x,S=(-k*m+b*w)/x,A=E-y,M=T-v,O=C-y,D=S-v;return A*A+M*M>O*O+D*D&&(E=C,T=S),{cx:E,cy:T,x01:-l,y01:-h,x11:E*(i/_-1),y11:T*(i/_-1)}}var Nx=function(){var t=Tx,e=Cx,n=fx(0),r=null,i=Sx,a=Ax,o=Mx,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-_x,d=a.apply(this,arguments)-_x,p=dx(d-f),g=d>f;if(s||(s=c=Ui()),h1e-12)if(p>kx-1e-12)s.moveTo(h*gx(f),h*mx(f)),s.arc(0,0,h,f,d,!g),l>1e-12&&(s.moveTo(l*gx(d),l*mx(d)),s.arc(0,0,l,d,f,g));else{var y,v,m=f,b=d,x=f,_=d,k=p,w=p,E=o.apply(this,arguments)/2,T=E>1e-12&&(r?+r.apply(this,arguments):bx(l*l+h*h)),C=vx(dx(h-l)/2,+n.apply(this,arguments)),S=C,A=C;if(T>1e-12){var M=Ex(T/l*mx(E)),O=Ex(T/h*mx(E));(k-=2*M)>1e-12?(x+=M*=g?1:-1,_-=M):(k=0,x=_=(f+d)/2),(w-=2*O)>1e-12?(m+=O*=g?1:-1,b-=O):(w=0,m=b=(f+d)/2)}var D=h*gx(m),N=h*mx(m),B=l*gx(_),L=l*mx(_);if(C>1e-12){var F,P=h*gx(b),I=h*mx(b),j=l*gx(x),R=l*mx(x);if(p1e-12?A>1e-12?(y=Dx(j,R,D,N,h,A,g),v=Dx(P,I,B,L,h,A,g),s.moveTo(y.cx+y.x01,y.cy+y.y01),A1e-12&&k>1e-12?S>1e-12?(y=Dx(B,L,P,I,l,-S,g),v=Dx(D,N,j,R,l,-S,g),s.lineTo(y.cx+y.x01,y.cy+y.y01),S=l;--h)s.point(y[h],v[h]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+t(f,u,c),v[u]=+n(f,u,c),s.point(e?+e(f,u,c):y[u],r?+r(f,u,c):v[u]))}if(d)return s=null,d+""||null}function u(){return Ix().defined(i).curve(o).context(a)}return c.x=function(n){return arguments.length?(t="function"==typeof n?n:fx(+n),e=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),c):t},c.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:fx(+t),c):e},c.y=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),r=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),c):n},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:fx(+t),c):r},c.lineX0=c.lineY0=function(){return u().x(t).y(n)},c.lineY1=function(){return u().x(t).y(r)},c.lineX1=function(){return u().x(e).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:fx(!!t),c):i},c.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),c):o},c.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),c):a},c},Rx=function(t,e){return et?1:e>=t?0:NaN},Yx=function(t){return t},zx=function(){var t=Yx,e=Rx,n=null,r=fx(0),i=fx(kx),a=fx(0);function o(o){var s,c,u,l,h,f=o.length,d=0,p=new Array(f),g=new Array(f),y=+r.apply(this,arguments),v=Math.min(kx,Math.max(-kx,i.apply(this,arguments)-y)),m=Math.min(Math.abs(v)/f,a.apply(this,arguments)),b=m*(v<0?-1:1);for(s=0;s0&&(d+=h);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(v-f*b)/d:0;s0?h*u:0)+b,g[c]={data:o[c],index:s,value:h,startAngle:y,endAngle:l,padAngle:m};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:fx(+t),o):a},o},Ux=Wx(Lx);function $x(t){this._curve=t}function Wx(t){function e(e){return new $x(t(e))}return e._curve=t,e}function Vx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t}$x.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Hx=function(){return Vx(Ix().curve(Ux))},Gx=function(){var t=jx().curve(Ux),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vx(n())},delete t.lineX0,t.lineEndAngle=function(){return Vx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t},qx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Xx=Array.prototype.slice;function Zx(t){return t.source}function Jx(t){return t.target}function Qx(t){var e=Zx,n=Jx,r=Fx,i=Px,a=null;function o(){var o,s=Xx.call(arguments),c=e.apply(this,s),u=n.apply(this,s);if(a||(a=o=Ui()),t(a,+r.apply(this,(s[0]=c,s)),+i.apply(this,s),+r.apply(this,(s[0]=u,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Kx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function t_(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function e_(t,e,n,r,i){var a=qx(e,n),o=qx(e,n=(n+i)/2),s=qx(r,n),c=qx(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],c[0],c[1])}function n_(){return Qx(Kx)}function r_(){return Qx(t_)}function i_(){var t=Qx(e_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var a_={draw:function(t,e){var n=Math.sqrt(e/xx);t.moveTo(n,0),t.arc(0,0,n,0,kx)}},o_={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},s_=Math.sqrt(1/3),c_=2*s_,u_={draw:function(t,e){var n=Math.sqrt(e/c_),r=n*s_;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},l_=Math.sin(xx/10)/Math.sin(7*xx/10),h_=Math.sin(kx/10)*l_,f_=-Math.cos(kx/10)*l_,d_={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=h_*n,i=f_*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=kx*a/5,s=Math.cos(o),c=Math.sin(o);t.lineTo(c*n,-s*n),t.lineTo(s*r-c*i,c*r+s*i)}t.closePath()}},p_={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},g_=Math.sqrt(3),y_={draw:function(t,e){var n=-Math.sqrt(e/(3*g_));t.moveTo(0,2*n),t.lineTo(-g_*n,-n),t.lineTo(g_*n,-n),t.closePath()}},v_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),b_=3*(m_/2+1),x_={draw:function(t,e){var n=Math.sqrt(e/b_),r=n/2,i=n*m_,a=r,o=n*m_+n,s=-a,c=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,c),t.lineTo(-.5*r-v_*i,v_*r+-.5*i),t.lineTo(-.5*a-v_*o,v_*a+-.5*o),t.lineTo(-.5*s-v_*c,v_*s+-.5*c),t.lineTo(-.5*r+v_*i,-.5*i-v_*r),t.lineTo(-.5*a+v_*o,-.5*o-v_*a),t.lineTo(-.5*s+v_*c,-.5*c-v_*s),t.closePath()}},__=[a_,o_,u_,p_,d_,y_,x_],k_=function(){var t=fx(a_),e=fx(64),n=null;function r(){var r;if(n||(n=r=Ui()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:fx(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:fx(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},w_=function(){};function E_(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function T_(t){this._context=t}T_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:E_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var C_=function(t){return new T_(t)};function S_(t){this._context=t}S_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var A_=function(t){return new S_(t)};function M_(t){this._context=t}M_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var O_=function(t){return new M_(t)};function D_(t,e){this._basis=new T_(t),this._beta=e}D_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*o),this._beta*e[c]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var N_=function t(e){function n(t){return 1===e?new T_(t):new D_(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function B_(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function L_(t,e){this._context=t,this._k=(1-e)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:B_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var F_=function t(e){function n(t){return new L_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function P_(t,e){this._context=t,this._k=(1-e)/6}P_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var I_=function t(e){function n(t){return new P_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function j_(t,e){this._context=t,this._k=(1-e)/6}j_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var R_=function t(e){function n(t){return new j_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Y_(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function z_(t,e){this._context=t,this._alpha=e}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var U_=function t(e){function n(t){return e?new z_(t,e):new L_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function $_(t,e){this._context=t,this._alpha=e}$_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var W_=function t(e){function n(t){return e?new $_(t,e):new P_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function V_(t,e){this._context=t,this._alpha=e}V_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var H_=function t(e){function n(t){return e?new V_(t,e):new j_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function G_(t){this._context=t}G_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var q_=function(t){return new G_(t)};function X_(t){return t<0?-1:1}function Z_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(X_(a)+X_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function J_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Q_(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function K_(t){this._context=t}function tk(t){this._context=new ek(t)}function ek(t){this._context=t}function nk(t){return new K_(t)}function rk(t){return new tk(t)}function ik(t){this._context=t}function ak(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var ck=function(t){return new sk(t,.5)};function uk(t){return new sk(t,0)}function lk(t){return new sk(t,1)}var hk=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function dk(t,e){return t[e]}var pk=function(){var t=fx([]),e=fk,n=hk,r=dk;function i(i){var a,o,s=t.apply(this,arguments),c=i.length,u=s.length,l=new Array(u);for(a=0;a0){for(var n,r,i,a=0,o=t[0].length;a0)for(var n,r,i,a,o,s,c=0,u=t[e[0]].length;c0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},vk=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;oa&&(a=e,r=n);return r}var _k=function(t){var e=t.map(kk);return fk(t).sort((function(t,n){return e[t]-e[n]}))};function kk(t){for(var e,n=0,r=-1,i=t.length;++r0)){if(a/=f,f<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=r-c,f||!(a<0)){if(a/=f,f<0){if(a>h)return;a>l&&(l=a)}else if(f>0){if(a0)){if(a/=d,d<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>h)return;a>l&&(l=a)}else if(d>0){if(a0||h<1)||(l>0&&(t[0]=[c+l*f,u+l*d]),h<1&&(t[1]=[c+h*f,u+h*d]),!0)}}}}}function Uk(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,c=t[0],u=t.left,l=t.right,h=u[0],f=u[1],d=l[0],p=l[1],g=(h+d)/2,y=(f+p)/2;if(p===f){if(g=r)return;if(h>d){if(c){if(c[1]>=i)return}else c=[g,n];a=[g,i]}else{if(c){if(c[1]1)if(h>d){if(c){if(c[1]>=i)return}else c=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(c){if(c[1]=r)return}else c=[e,o*e+s];a=[r,o*r+s]}else{if(c){if(c[0]=-lw)){var d=c*c+u*u,p=l*l+h*h,g=(h*d-u*p)/f,y=(c*p-l*d)/f,v=Gk.pop()||new qk;v.arc=t,v.site=i,v.x=g+o,v.y=(v.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=v;for(var m=null,b=sw._;b;)if(v.yuw)s=s.L;else{if(!((i=a-iw(s,o))>uw)){r>-uw?(e=s.P,n=s):i>-uw?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){ow[t.index]={site:t,halfedges:[]}}(t);var c=Kk(t);if(aw.insert(e,c),e||n){if(e===n)return Zk(e),n=Kk(e.site),aw.insert(c,n),c.edge=n.edge=jk(e.site,c.site),Xk(e),void Xk(n);if(n){Zk(e),Zk(n);var u=e.site,l=u[0],h=u[1],f=t[0]-l,d=t[1]-h,p=n.site,g=p[0]-l,y=p[1]-h,v=2*(f*y-d*g),m=f*f+d*d,b=g*g+y*y,x=[(y*m-d*b)/v+l,(f*b-g*m)/v+h];Yk(n.edge,u,p,x),c.edge=jk(u,t,null,x),n.edge=jk(t,p,null,x),Xk(e),Xk(n)}else c.edge=jk(e.site,c.site)}}function rw(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],c=n[1],u=c-e;if(!u)return s;var l=s-r,h=1/a-1/u,f=l/u;return h?(-f+Math.sqrt(f*f-2*h*(l*l/(-2*u)-c+u/2+i-a/2)))/h+r:(r+s)/2}function iw(t,e){var n=t.N;if(n)return rw(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var aw,ow,sw,cw,uw=1e-6,lw=1e-12;function hw(t,e){return e[1]-t[1]||e[0]-t[0]}function fw(t,e){var n,r,i,a=t.sort(hw).pop();for(cw=[],ow=new Array(t.length),aw=new Ik,sw=new Ik;;)if(i=Hk,a&&(!i||a[1]uw||Math.abs(i[0][1]-i[1][1])>uw)||delete cw[a]}(o,s,c,u),function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y=ow.length,v=!0;for(i=0;iuw||Math.abs(g-f)>uw)&&(c.splice(s,0,cw.push(Rk(o,d,Math.abs(p-t)uw?[t,Math.abs(h-t)uw?[Math.abs(f-r)uw?[n,Math.abs(h-n)uw?[Math.abs(f-e)=s)return null;var c=t-i.site[0],u=e-i.site[1],l=c*c+u*u;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var c=t-s[0],u=e-s[1],h=c*c+u*u;hr?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var Sw=function(){var t,e,n=_w,r=kw,i=Cw,a=Ew,o=Tw,s=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],u=250,l=fp,h=lt("start","zoom","end"),f=0;function d(t){t.property("__zoom",ww).on("wheel.zoom",x).on("mousedown.zoom",_).on("dblclick.zoom",k).filter(o).on("touchstart.zoom",w).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new yw(e,t.x,t.y)}function g(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new yw(t.k,r,i)}function y(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function v(t,e,n){t.on("start.zoom",(function(){m(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){m(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=m(t,i),o=r.apply(t,i),s=null==n?y(o):"function"==typeof n?n.apply(t,i):n,c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),u=t.__zoom,h="function"==typeof e?e.apply(t,i):e,f=l(u.invert(s).concat(c/u.k),h.invert(s).concat(c/h.k));return function(t){if(1===t)t=h;else{var e=f(t),n=c/e[2];t=new yw(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function m(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=m(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Nn(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],or(this),t.start()}xw(),t.wheel=setTimeout(u,150),t.zoom("mouse",i(g(p(e,r),t.mouse[0],t.mouse[1]),t.extent,c))}function u(){t.wheel=null,t.end()}}function _(){if(!e&&n.apply(this,arguments)){var t=m(this,arguments,!0),r=ke(ce.view).on("mousemove.zoom",u,!0).on("mouseup.zoom",l,!0),a=Nn(this),o=ce.clientX,s=ce.clientY;Te(ce.view),bw(),t.mouse=[a,this.__zoom.invert(a)],or(this),t.start()}function u(){if(xw(),!t.moved){var e=ce.clientX-o,n=ce.clientY-s;t.moved=e*e+n*n>f}t.zoom("mouse",i(g(t.that.__zoom,t.mouse[0]=Nn(t.that),t.mouse[1]),t.extent,c))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Ce(ce.view,t.moved),xw(),t.end()}}function k(){if(n.apply(this,arguments)){var t=this.__zoom,e=Nn(this),a=t.invert(e),o=t.k*(ce.shiftKey?.5:2),s=i(g(p(t,o),e,a),r.apply(this,arguments),c);xw(),u>0?ke(this).transition().duration(u).call(v,s,e):ke(this).call(d.transform,s)}}function w(){if(n.apply(this,arguments)){var e,r,i,a,o=ce.touches,s=o.length,c=m(this,arguments,ce.changedTouches.length===s);for(bw(),r=0;rh&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},M={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),56;case 1:return this.begin("type_directive"),57;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),59;case 4:return 58;case 5:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),48;case 13:return this.popState(),this.popState(),this.begin("LINE"),18;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),27;case 16:return this.begin("LINE"),29;case 17:return this.begin("LINE"),30;case 18:return this.begin("LINE"),31;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),33;case 21:return this.begin("LINE"),35;case 22:return this.popState(),19;case 23:return 28;case 24:return 43;case 25:return 44;case 26:return 39;case 27:return 37;case 28:return this.begin("ID"),22;case 29:return this.begin("ID"),23;case 30:return 25;case 31:return 7;case 32:return 21;case 33:return 42;case 34:return 5;case 35:return e.yytext=e.yytext.trim(),48;case 36:return 51;case 37:return 52;case 38:return 49;case 39:return 50;case 40:return 53;case 41:return 54;case 42:return 55;case 43:return 46;case 44:return 47;case 45:return 5;case 46:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,12],inclusive:!1},ALIAS:{rules:[7,8,13,14],inclusive:!1},LINE:{rules:[7,8,22],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};function O(){this.yy={}}return A.lexer=M,O.prototype=A,A.Parser=O,new O}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){var r=n(198);t.exports={Graph:r.Graph,json:n(301),alg:n(302),version:r.version}},function(t,e,n){var r;try{r={cloneDeep:n(313),constant:n(86),defaults:n(154),each:n(87),filter:n(128),find:n(314),flatten:n(156),forEach:n(126),forIn:n(319),has:n(93),isUndefined:n(139),last:n(320),map:n(140),mapValues:n(321),max:n(322),merge:n(324),min:n(329),minBy:n(330),now:n(331),pick:n(161),range:n(162),reduce:n(142),sortBy:n(338),uniqueId:n(163),values:n(147),zipObject:n(343)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){ -/** - * @license - * Copyright (c) 2012-2013 Chris Pettitt - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -t.exports={graphlib:n(311),dagre:n(153),intersect:n(368),render:n(370),util:n(12),version:n(382)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=u*o/s,r=u):(o<0&&(c=-c),n=c,r=c*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(173),i=n(174),a=n(175),o={channel:r.default,lang:i.default,unit:a.default};e.default=o},function(t,e,n){var r;try{r={clone:n(199),constant:n(86),each:n(87),filter:n(128),has:n(93),isArray:n(5),isEmpty:n(276),isFunction:n(37),isUndefined:n(139),keys:n(30),map:n(140),reduce:n(142),size:n(279),transform:n(285),union:n(286),values:n(147)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(43);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,7],n=[1,6],r=[1,14],i=[1,25],a=[1,28],o=[1,26],s=[1,27],c=[1,29],u=[1,30],l=[1,31],h=[1,33],f=[1,34],d=[1,35],p=[10,19],g=[1,47],y=[1,48],v=[1,49],m=[1,50],b=[1,51],x=[1,52],_=[10,19,25,32,33,41,44,45,46,47,48,49],k=[10,19,23,25,32,33,37,41,44,45,46,47,48,49,66,67,68],w=[10,13,17,19],E=[41,66,67,68],T=[41,48,49,66,67,68],C=[41,44,45,46,47,66,67,68],S=[10,19,25],A=[1,81],M={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,graphConfig:6,openDirective:7,typeDirective:8,closeDirective:9,NEWLINE:10,":":11,argDirective:12,open_directive:13,type_directive:14,arg_directive:15,close_directive:16,CLASS_DIAGRAM:17,statements:18,EOF:19,statement:20,className:21,alphaNumToken:22,GENERICTYPE:23,relationStatement:24,LABEL:25,classStatement:26,methodStatement:27,annotationStatement:28,clickStatement:29,cssClassStatement:30,CLASS:31,STYLE_SEPARATOR:32,STRUCT_START:33,members:34,STRUCT_STOP:35,ANNOTATION_START:36,ANNOTATION_END:37,MEMBER:38,SEPARATOR:39,relation:40,STR:41,relationType:42,lineType:43,AGGREGATION:44,EXTENSION:45,COMPOSITION:46,DEPENDENCY:47,LINE:48,DOTTED_LINE:49,CALLBACK:50,LINK:51,CSSCLASS:52,commentToken:53,textToken:54,graphCodeTokens:55,textNoTagsToken:56,TAGSTART:57,TAGEND:58,"==":59,"--":60,PCT:61,DEFAULT:62,SPACE:63,MINUS:64,keywords:65,UNICODE_TEXT:66,NUM:67,ALPHA:68,$accept:0,$end:1},terminals_:{2:"error",10:"NEWLINE",11:":",13:"open_directive",14:"type_directive",15:"arg_directive",16:"close_directive",17:"CLASS_DIAGRAM",19:"EOF",23:"GENERICTYPE",25:"LABEL",31:"CLASS",32:"STYLE_SEPARATOR",33:"STRUCT_START",35:"STRUCT_STOP",36:"ANNOTATION_START",37:"ANNOTATION_END",38:"MEMBER",39:"SEPARATOR",41:"STR",44:"AGGREGATION",45:"EXTENSION",46:"COMPOSITION",47:"DEPENDENCY",48:"LINE",49:"DOTTED_LINE",50:"CALLBACK",51:"LINK",52:"CSSCLASS",55:"graphCodeTokens",57:"TAGSTART",58:"TAGEND",59:"==",60:"--",61:"PCT",62:"DEFAULT",63:"SPACE",64:"MINUS",65:"keywords",66:"UNICODE_TEXT",67:"NUM",68:"ALPHA"},productions_:[0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,2],[21,3],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[26,2],[26,4],[26,5],[26,7],[28,4],[34,1],[34,2],[27,1],[27,2],[27,1],[27,1],[24,3],[24,4],[24,4],[24,5],[40,3],[40,2],[40,2],[40,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[29,3],[29,4],[29,3],[29,4],[30,3],[53,1],[53,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[22,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:r.parseDirective("%%{","open_directive");break;case 7:r.parseDirective(a[s],"type_directive");break;case 8:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 9:r.parseDirective("}%%","close_directive","class");break;case 14:this.$=a[s];break;case 15:this.$=a[s-1]+a[s];break;case 16:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 17:this.$=a[s-1]+"~"+a[s];break;case 18:r.addRelation(a[s]);break;case 19:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 26:r.addClass(a[s]);break;case 27:r.addClass(a[s-2]),r.setCssClass(a[s-2],a[s]);break;case 28:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 29:r.addClass(a[s-5]),r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 30:r.addAnnotation(a[s],a[s-2]);break;case 31:this.$=[a[s]];break;case 32:a[s].push(a[s-1]),this.$=a[s];break;case 33:break;case 34:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 35:case 36:break;case 37:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 38:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 39:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 40:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 41:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 42:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 43:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 44:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 45:this.$=r.relationType.AGGREGATION;break;case 46:this.$=r.relationType.EXTENSION;break;case 47:this.$=r.relationType.COMPOSITION;break;case 48:this.$=r.relationType.DEPENDENCY;break;case 49:this.$=r.lineType.LINE;break;case 50:this.$=r.lineType.DOTTED_LINE;break;case 51:this.$=a[s-2],r.setClickEvent(a[s-1],a[s],void 0);break;case 52:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 53:this.$=a[s-2],r.setLink(a[s-1],a[s],void 0);break;case 54:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 55:r.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:5,13:e,17:n},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:e,17:n},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:r},t([11,16],[2,7]),{5:23,7:5,13:e,18:15,20:16,21:24,22:32,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,52:l,66:h,67:f,68:d},{10:[1,36]},{12:37,15:[1,38]},{10:[2,9]},{19:[1,39]},{10:[1,40],19:[2,11]},t(p,[2,18],{25:[1,41]}),t(p,[2,20]),t(p,[2,21]),t(p,[2,22]),t(p,[2,23]),t(p,[2,24]),t(p,[2,25]),t(p,[2,33],{40:42,42:45,43:46,25:[1,44],41:[1,43],44:g,45:y,46:v,47:m,48:b,49:x}),{21:53,22:32,66:h,67:f,68:d},t(p,[2,35]),t(p,[2,36]),{22:54,66:h,67:f,68:d},{21:55,22:32,66:h,67:f,68:d},{21:56,22:32,66:h,67:f,68:d},{41:[1,57]},t(_,[2,14],{22:32,21:58,23:[1,59],66:h,67:f,68:d}),t(k,[2,69]),t(k,[2,70]),t(k,[2,71]),t(w,[2,4]),{9:60,16:r},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:e,18:61,19:[2,12],20:16,21:24,22:32,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,52:l,66:h,67:f,68:d},t(p,[2,19]),{21:62,22:32,41:[1,63],66:h,67:f,68:d},{40:64,42:45,43:46,44:g,45:y,46:v,47:m,48:b,49:x},t(p,[2,34]),{43:65,48:b,49:x},t(E,[2,44],{42:66,44:g,45:y,46:v,47:m}),t(T,[2,45]),t(T,[2,46]),t(T,[2,47]),t(T,[2,48]),t(C,[2,49]),t(C,[2,50]),t(p,[2,26],{32:[1,67],33:[1,68]}),{37:[1,69]},{41:[1,70]},{41:[1,71]},{22:72,66:h,67:f,68:d},t(_,[2,15]),t(_,[2,17],{22:32,21:73,66:h,67:f,68:d}),{10:[1,74]},{19:[2,13]},t(S,[2,37]),{21:75,22:32,66:h,67:f,68:d},{21:76,22:32,41:[1,77],66:h,67:f,68:d},t(E,[2,43],{42:78,44:g,45:y,46:v,47:m}),t(E,[2,42]),{22:79,66:h,67:f,68:d},{34:80,38:A},{21:82,22:32,66:h,67:f,68:d},t(p,[2,51],{41:[1,83]}),t(p,[2,53],{41:[1,84]}),t(p,[2,55]),t(_,[2,16]),t(w,[2,5]),t(S,[2,39]),t(S,[2,38]),{21:85,22:32,66:h,67:f,68:d},t(E,[2,41]),t(p,[2,27],{33:[1,86]}),{35:[1,87]},{34:88,35:[2,31],38:A},t(p,[2,30]),t(p,[2,52]),t(p,[2,54]),t(S,[2,40]),{34:89,38:A},t(p,[2,28]),{35:[2,32]},{35:[1,90]},t(p,[2,29])],defaultActions:{2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],38:[2,8],39:[2,10],61:[2,13],88:[2,32]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},O={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),13;case 1:return this.begin("type_directive"),14;case 2:return this.popState(),this.begin("arg_directive"),11;case 3:return this.popState(),this.popState(),16;case 4:return 15;case 5:case 6:break;case 7:return 10;case 8:break;case 9:case 10:return 17;case 11:return this.begin("struct"),33;case 12:return"EOF_IN_STRUCT";case 13:return"OPEN_IN_STRUCT";case 14:return this.popState(),35;case 15:break;case 16:return"MEMBER";case 17:return 31;case 18:return 52;case 19:return 50;case 20:return 51;case 21:return 36;case 22:return 37;case 23:this.begin("generic");break;case 24:this.popState();break;case 25:return"GENERICTYPE";case 26:this.begin("string");break;case 27:this.popState();break;case 28:return"STR";case 29:case 30:return 45;case 31:case 32:return 47;case 33:return 46;case 34:return 44;case 35:return 48;case 36:return 49;case 37:return 25;case 38:return 32;case 39:return 64;case 40:return"DOT";case 41:return"PLUS";case 42:return 61;case 43:case 44:return"EQUALS";case 45:return 68;case 46:return"PUNCTUATION";case 47:return 67;case 48:return 66;case 49:return 63;case 50:return 19}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{string:{rules:[27,28],inclusive:!1},generic:{rules:[24,25],inclusive:!1},struct:{rules:[12,13,14,15,16],inclusive:!1},open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],inclusive:!0}}};function D(){this.yy={}}return M.lexer=O,D.prototype=M,M.Parser=D,new D}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var c,u=[],l=!1,h=-1;function f(){l&&c&&(l=!1,c.length?u=c.concat(u):h=-1,u.length&&d())}function d(){if(!l){var t=s(f);l=!0;for(var e=u.length;e;){for(c=u,u=[];++h1)for(var n=1;n=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,c=0;c=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(14))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,28],d=[1,23],p=[1,24],g=[1,25],y=[1,26],v=[1,29],m=[1,32],b=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],x=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],_=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],k=[4,5,14,15,17,19,20,22,23,24,25,26,36,39],w={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CONCURRENT:25,note:26,notePosition:27,NOTE_TEXT:28,openDirective:29,typeDirective:30,closeDirective:31,":":32,argDirective:33,eol:34,";":35,EDGE_STATE:36,left_of:37,right_of:38,open_directive:39,type_directive:40,arg_directive:41,close_directive:42,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CONCURRENT",26:"note",28:"NOTE_TEXT",32:":",35:";",36:"EDGE_STATE",37:"left_of",38:"right_of",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:this.$=a[s];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 18:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 20:this.$={stmt:"state",id:a[s],type:"fork"};break;case 21:this.$={stmt:"state",id:a[s],type:"join"};break;case 22:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 23:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:case 31:this.$=a[s];break;case 34:r.parseDirective("%%{","open_directive");break;case 35:r.parseDirective(a[s],"type_directive");break;case 36:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 37:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:r,29:6,39:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,29:6,39:i},{3:9,4:e,5:n,6:4,7:r,29:6,39:i},{3:10,4:e,5:n,6:4,7:r,29:6,39:i},t([1,4,5,14,15,17,20,22,23,24,25,26,36,39],a,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},{31:30,32:[1,31],42:m},t([32,42],[2,35]),t(b,[2,6]),{6:27,10:33,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,8]),t(b,[2,9]),t(b,[2,10],{12:[1,34],13:[1,35]}),t(b,[2,14]),{16:[1,36]},t(b,[2,16],{18:[1,37]}),{21:[1,38]},t(b,[2,20]),t(b,[2,21]),t(b,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},t(b,[2,25]),t(x,[2,30]),t(x,[2,31]),t(_,[2,26]),{33:43,41:[1,44]},t(_,[2,37]),t(b,[2,7]),t(b,[2,11]),{11:45,22:f,36:v},t(b,[2,15]),t(k,a,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:m},{42:[2,36]},t(b,[2,12],{12:[1,51]}),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,52],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},t(_,[2,27]),t(b,[2,13]),t(b,[2,17]),t(k,a,{8:56}),t(b,[2,23]),t(b,[2,24]),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,57],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,19])],defaultActions:{7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},E={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),39;case 1:return this.begin("type_directive"),40;case 2:return this.popState(),this.begin("arg_directive"),32;case 3:return this.popState(),this.popState(),42;case 4:return 41;case 5:break;case 6:console.log("Crap after close");break;case 7:return 5;case 8:case 9:case 10:case 11:break;case 12:return this.pushState("SCALE"),15;case 13:return 16;case 14:this.popState();break;case 15:this.pushState("STATE");break;case 16:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 17:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 18:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 19:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 20:this.begin("STATE_STRING");break;case 21:return this.popState(),this.pushState("STATE_ID"),"AS";case 22:return this.popState(),"ID";case 23:this.popState();break;case 24:return"STATE_DESCR";case 25:return 17;case 26:this.popState();break;case 27:return this.popState(),this.pushState("struct"),18;case 28:return this.popState(),19;case 29:break;case 30:return this.begin("NOTE"),26;case 31:return this.popState(),this.pushState("NOTE_ID"),37;case 32:return this.popState(),this.pushState("NOTE_ID"),38;case 33:this.popState(),this.pushState("FLOATING_NOTE");break;case 34:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 35:break;case 36:return"NOTE_TEXT";case 37:return this.popState(),"ID";case 38:return this.popState(),this.pushState("NOTE_TEXT"),22;case 39:return this.popState(),e.yytext=e.yytext.substr(2).trim(),28;case 40:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),28;case 41:case 42:return 7;case 43:return 14;case 44:return 36;case 45:return 22;case 46:return e.yytext=e.yytext.trim(),12;case 47:return 13;case 48:return 25;case 49:return 5;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:\s*[^:;]+end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},close_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[3,4,9,10],inclusive:!1},type_directive:{rules:[2,3,9,10],inclusive:!1},open_directive:{rules:[1,9,10],inclusive:!1},struct:{rules:[9,10,15,28,29,30,44,45,46,47,48],inclusive:!1},FLOATING_NOTE_ID:{rules:[37],inclusive:!1},FLOATING_NOTE:{rules:[34,35,36],inclusive:!1},NOTE_TEXT:{rules:[39,40],inclusive:!1},NOTE_ID:{rules:[38],inclusive:!1},NOTE:{rules:[31,32,33],inclusive:!1},SCALE:{rules:[13,14],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[22],inclusive:!1},STATE_STRING:{rules:[23,24],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,16,17,18,19,20,21,25,26,27],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],inclusive:!0}}};function T(){this.yy={}}return w.lexer=E,T.prototype=w,w.Parser=T,new T}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n>>0,r=0;ryt(t)?(a=t+1,s-yt(t)):(a=t,s),{year:a,dayOfYear:o}}function Ft(t,e,n){var r,i,a=Bt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Pt(i=t.year()-1,e,n):o>Pt(t.year(),e,n)?(r=o-Pt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Pt(t,e,n){var r=Bt(t,e,n),i=Bt(t+1,e,n);return(yt(t)-r+i)/7}function It(t,e){return t.slice(e,7).concat(t.slice(0,e))}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),j("week",5),j("isoWeek",5),lt("w",Q),lt("ww",Q,q),lt("W",Q),lt("WW",Q,q),gt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=w(t)})),W("d",0,"do","day"),W("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),W("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),W("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),lt("d",Q),lt("e",Q),lt("E",Q),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),gt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),gt(["d","e","E"],(function(t,e,n,r){e[r]=w(t)}));var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Rt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=ct,Ut=ct,$t=ct;function Wt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],c=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),c.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),c.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ft(s[e]),c[e]=ft(c[e]),u[e]=ft(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Vt(){return this.hours()%12||12}function Ht(t,e){W(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Gt(t,e){return e._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Vt),W("k",["kk",2],0,(function(){return this.hours()||24})),W("hmm",0,0,(function(){return""+Vt.apply(this)+R(this.minutes(),2)})),W("hmmss",0,0,(function(){return""+Vt.apply(this)+R(this.minutes(),2)+R(this.seconds(),2)})),W("Hmm",0,0,(function(){return""+this.hours()+R(this.minutes(),2)})),W("Hmmss",0,0,(function(){return""+this.hours()+R(this.minutes(),2)+R(this.seconds(),2)})),Ht("a",!0),Ht("A",!1),L("hour","h"),j("hour",13),lt("a",Gt),lt("A",Gt),lt("H",Q),lt("h",Q),lt("k",Q),lt("HH",Q,q),lt("hh",Q,q),lt("kk",Q,q),lt("hmm",K),lt("hmmss",tt),lt("Hmm",K),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=w(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=w(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i))}));var qt,Xt=xt("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Tt,monthsShort:Ct,week:{dow:0,doy:6},weekdays:jt,weekdaysMin:Yt,weekdaysShort:Rt,meridiemParse:/[ap]\.?m?\.?/i},Jt={},Qt={};function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Jt[e]&&void 0!==t&&t&&t.exports)try{r=qt._abbr,n(171)("./"+e),ee(r)}catch(e){}return Jt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function ne(t,e){if(null===e)return delete Jt[t],null;var n,r=Zt;if(e.abbr=t,null!=Jt[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Jt[t]._config;else if(null!=e.parentLocale)if(null!=Jt[e.parentLocale])r=Jt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Qt[e.parentLocale]||(Qt[e.parentLocale]=[]),Qt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Jt[t]=new N(D(r,e)),Qt[t]&&Qt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Jt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a=e&&E(i,n,!0)>=e-1)break;e--}a++}return qt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11wt(n[0],n[1])?2:n[3]<0||24Pt(n,a,o)?p(t)._overflowWeeks=!0:null!=c?p(t)._overflowWeekday=!0:(s=Lt(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>yt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Nt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Nt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],fe=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,c=se.exec(s)||ce.exec(s);if(c){for(p(t).iso=!0,e=0,n=le.length;en.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Be,on.isUTC=Be,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=C("dates accessor is deprecated. Use date instead.",Ke),on.months=C("months accessor is deprecated. Use month instead",At),on.years=C("years accessor is deprecated. Use year instead",bt),on.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),(t=me(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},qt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:this.popState();break;case 9:return"STR";case 10:return 75;case 11:return 84;case 12:return 76;case 13:return 90;case 14:return 77;case 15:return 78;case 16:return 79;case 17:case 18:return t.lex.firstGraph()&&this.begin("dir"),24;case 19:return 38;case 20:return 42;case 21:case 22:case 23:case 24:return 87;case 25:return this.popState(),25;case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:return this.popState(),26;case 36:return 91;case 37:return 99;case 38:return 47;case 39:return 96;case 40:return 46;case 41:return 20;case 42:return 92;case 43:return 110;case 44:case 45:case 46:return 70;case 47:case 48:case 49:return 69;case 50:return 51;case 51:return 52;case 52:return 53;case 53:return 54;case 54:return 55;case 55:return 56;case 56:return 57;case 57:return 58;case 58:return 97;case 59:return 100;case 60:return 111;case 61:return 108;case 62:return 101;case 63:case 64:return 109;case 65:return 102;case 66:return 61;case 67:return 81;case 68:return"SEP";case 69:return 80;case 70:return 95;case 71:return 63;case 72:return 62;case 73:return 65;case 74:return 64;case 75:return 106;case 76:return 107;case 77:return 71;case 78:return 49;case 79:return 50;case 80:return 40;case 81:return 41;case 82:return 59;case 83:return 60;case 84:return 117;case 85:return 21;case 86:return 22;case 87:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[25,26,27,28,29,30,31,32,33,34,35],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],inclusive:!0}}};function Xt(){this.yy={}}return Gt.lexer=qt,Xt.prototype=Gt,Gt.Parser=Xt,new Xt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[7,9,11,12,13,14,15,16,17,18,20,27,32],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,23],f=[1,25],d=[1,28],p=[5,7,9,11,12,13,14,15,16,17,18,20,27,32],g={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,axisFormat:14,excludes:15,todayMarker:16,title:17,section:18,clickStatement:19,taskTxt:20,taskData:21,openDirective:22,typeDirective:23,closeDirective:24,":":25,argDirective:26,click:27,callbackname:28,callbackargs:29,href:30,clickStatementDebug:31,open_directive:32,type_directive:33,arg_directive:34,close_directive:35,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"axisFormat",15:"excludes",16:"todayMarker",17:"title",18:"section",20:"taskTxt",21:"taskData",25:":",27:"click",28:"callbackname",29:"callbackargs",30:"href",32:"open_directive",33:"type_directive",34:"arg_directive",35:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[19,2],[19,3],[19,3],[19,4],[19,3],[19,4],[19,2],[31,2],[31,3],[31,3],[31,4],[31,3],[31,4],[31,2],[22,1],[23,1],[26,1],[24,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 9:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 12:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 13:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 14:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 17:r.addTask(a[s-1],a[s]),this.$="task";break;case 21:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 22:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 23:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 24:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 25:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 26:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 27:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 28:case 34:this.$=a[s-1]+" "+a[s];break;case 29:case 30:case 32:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 31:case 33:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 35:r.parseDirective("%%{","open_directive");break;case 36:r.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 38:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,22:4,32:n},{1:[3]},{3:6,4:2,5:e,22:4,32:n},t(r,[2,3],{6:7}),{23:8,33:[1,9]},{33:[2,35]},{1:[2,1]},{4:24,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},{24:26,25:[1,27],35:d},t([25,35],[2,36]),t(r,[2,8],{1:[2,2]}),t(r,[2,4]),{4:24,10:29,12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{21:[1,30]},t(r,[2,18]),{28:[1,31],30:[1,32]},{11:[1,33]},{26:34,34:[1,35]},{11:[2,38]},t(r,[2,5]),t(r,[2,17]),t(r,[2,21],{29:[1,36],30:[1,37]}),t(r,[2,27],{28:[1,38]}),t(p,[2,19]),{24:39,35:d},{35:[2,37]},t(r,[2,22],{30:[1,40]}),t(r,[2,23]),t(r,[2,25],{29:[1,41]}),{11:[1,42]},t(r,[2,24]),t(r,[2,26]),t(p,[2,20])],defaultActions:{5:[2,35],6:[2,1],28:[2,38],35:[2,37]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),32;case 1:return this.begin("type_directive"),33;case 2:return this.popState(),this.begin("arg_directive"),25;case 3:return this.popState(),this.popState(),35;case 4:return 34;case 5:case 6:case 7:break;case 8:return 11;case 9:case 10:case 11:break;case 12:this.begin("href");break;case 13:this.popState();break;case 14:return 30;case 15:this.begin("callbackname");break;case 16:this.popState();break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 28;case 19:this.popState();break;case 20:return 29;case 21:this.begin("click");break;case 22:this.popState();break;case 23:return 27;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 16;case 30:return"date";case 31:return 17;case 32:return 18;case 33:return 20;case 34:return 21;case 35:return 25;case 36:return 7;case 37:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37],inclusive:!0}}};function v(){this.yy={}}return g.lexer=y,v.prototype=g,g.Parser=v,new v}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],o=[1,17],s=[1,21],c=[4,6,9,11,17,18,19,21],u={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 11:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 13:r.addTask(a[s-1],a[s]),this.$="task";break;case 15:r.parseDirective("%%{","open_directive");break;case 16:r.parseDirective(a[s],"type_directive");break;case 17:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 18:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:o,21:n},{1:[2,2]},{14:19,15:[1,20],24:s},t([15,24],[2,16]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:o,21:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,12]),{20:[1,23]},t(r,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(r,[2,5]),t(r,[2,13]),t(c,[2,9]),{14:27,24:s},{24:[2,17]},{11:[1,28]},t(c,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:break;case 7:return 11;case 8:case 9:break;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function h(){this.yy={}}return u.lexer=l,h.prototype=u,u.Parser=h,new h}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e){return r.default.lang.round(i.default.parse(t)[e])}},function(t,e,n){var r=n(112),i=n(82),a=n(24);t.exports=function(t){return a(t)?r(t):i(t)}},function(t,e,n){var r;if(!r)try{r=n(0)}catch(t){}r||(r=window.d3),t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e,n){var a=i.default.parse(t),o=a[e],s=r.default.channel.clamp[e](o+n);return o!==s&&(a[e]=s),i.default.stringify(a)}},function(t,e,n){var r=n(210),i=n(216);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(38),i=n(212),a=n(213),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(34),i=n(11);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,n){var r=n(16).Symbol;t.exports=r},function(t,e,n){(function(t){var r=n(16),i=n(232),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||i;t.exports=c}).call(this,n(7)(t))},function(t,e,n){var r=n(112),i=n(236),a=n(24);t.exports=function(t){return a(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(241),i=n(77),a=n(242),o=n(121),s=n(243),c=n(34),u=n(110),l=u(r),h=u(i),f=u(a),d=u(o),p=u(s),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||a&&"[object Promise]"!=g(a.resolve())||o&&"[object Set]"!=g(new o)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case l:return"[object DataView]";case h:return"[object Map]";case f:return"[object Promise]";case d:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=g},function(t,e,n){var r=n(34),i=n(21);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r;try{r={defaults:n(154),each:n(87),isFunction:n(37),isPlainObject:n(158),pick:n(161),has:n(93),range:n(162),uniqueId:n(163)}}catch(t){}r||(r=window._),t.exports=r},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.8.3","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --colors","build:production":"yarn build:development -p --config webpack.config.prod.babel.js","build":"yarn build:development && yarn build:production","postbuild":"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","babel-eslint":"^10.1.0","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","khroma":"^1.1.0","minify":"^4.1.1","moment-mini":"^2.22.1","stylis":"^3.5.2"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}')},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=new(n(176).default)({r:0,g:0,b:0,a:0},"transparent");e.default=r},function(t,e,n){var r=n(58),i=n(59);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,c=e.length;++s-1&&t%1==0&&t-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},c={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function u(){this.yy={}}return s.lexer=c,u.prototype=s,s.Parser=u,new u}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,5],r=[1,6],i=[1,7],a=[1,9],o=[1,10,12,19,20,21,22],s=[1,6,10,12,19,20,21,22],c=[19,20,21],u=[1,22],l=[6,19,20,21,22],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,NEWLINE:19,";":20,EOF:21,open_directive:22,type_directive:23,arg_directive:24,close_directive:25,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",10:"txt",11:"value",12:"title",13:"title_value",17:":",19:"NEWLINE",20:";",21:"EOF",22:"open_directive",23:"type_directive",24:"arg_directive",25:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1];break;case 8:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 9:this.$=a[s].trim(),r.setTitle(this.$);break;case 16:r.parseDirective("%%{","open_directive");break;case 17:r.parseDirective(a[s],"type_directive");break;case 18:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 19:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{1:[3]},{3:10,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{3:11,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},t(o,[2,4],{7:12}),t(s,[2,13]),t(s,[2,14]),t(s,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},t(c,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:a}),{16:20,17:[1,21],25:u},t([17,25],[2,17]),t(o,[2,5]),{4:23,19:n,20:r,21:i},{11:[1,24]},{13:[1,25]},t(c,[2,10]),t(l,[2,11]),{18:26,24:[1,27]},t(l,[2,19]),t(o,[2,6]),t(c,[2,8]),t(c,[2,9]),{16:28,25:u},{25:[2,18]},t(l,[2,12])],defaultActions:{9:[2,16],10:[2,1],11:[2,2],27:[2,18]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},f={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),22;case 1:return this.begin("type_directive"),23;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),25;case 4:return 24;case 5:case 6:break;case 7:return 19;case 8:case 9:break;case 10:return this.begin("title"),12;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return"value";case 17:return 21}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17],inclusive:!0}}};function d(){this.yy={}}return h.lexer=f,d.prototype=h,h.Parser=d,new d}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,20,30],i=[1,17],a=[1,20],o=[1,24],s=[1,25],c=[1,26],u=[1,27],l=[20,27,28],h=[4,6,9,11,20,30],f=[23,24,25,26],d={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,ALPHANUM:20,cardinality:21,relType:22,ZERO_OR_ONE:23,ZERO_OR_MORE:24,ONE_OR_MORE:25,ONLY_ONE:26,NON_IDENTIFYING:27,IDENTIFYING:28,WORD:29,open_directive:30,type_directive:31,arg_directive:32,close_directive:33,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"ALPHANUM",23:"ZERO_OR_ONE",24:"ZERO_OR_MORE",25:"ONE_OR_MORE",26:"ONLY_ONE",27:"NON_IDENTIFYING",28:"IDENTIFYING",29:"WORD",30:"open_directive",31:"type_directive",32:"arg_directive",33:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,1],[17,1],[18,3],[21,1],[21,1],[21,1],[21,1],[22,1],[22,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 12:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:r.addEntity(a[s]);break;case 14:this.$=a[s];break;case 15:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 16:this.$=r.Cardinality.ZERO_OR_ONE;break;case 17:this.$=r.Cardinality.ZERO_OR_MORE;break;case 18:this.$=r.Cardinality.ONE_OR_MORE;break;case 19:this.$=r.Cardinality.ONLY_ONE;break;case 20:this.$=r.Identification.NON_IDENTIFYING;break;case 21:this.$=r.Identification.IDENTIFYING;break;case 22:this.$=a[s].replace(/"/g,"");break;case 23:this.$=a[s];break;case 24:r.parseDirective("%%{","open_directive");break;case 25:r.parseDirective(a[s],"type_directive");break;case 26:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 27:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,30:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,30:n},{13:8,31:[1,9]},{31:[2,24]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,20:i,30:n},{1:[2,2]},{14:18,15:[1,19],33:a},t([15,33],[2,25]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:15,10:21,12:4,17:16,20:i,30:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,13],{18:22,21:23,23:o,24:s,25:c,26:u}),t([6,9,11,15,20,23,24,25,26,30],[2,14]),{11:[1,28]},{16:29,32:[1,30]},{11:[2,27]},t(r,[2,5]),{17:31,20:i},{22:32,27:[1,33],28:[1,34]},t(l,[2,16]),t(l,[2,17]),t(l,[2,18]),t(l,[2,19]),t(h,[2,9]),{14:35,33:a},{33:[2,26]},{15:[1,36]},{21:37,23:o,24:s,25:c,26:u},t(f,[2,20]),t(f,[2,21]),{11:[1,38]},{19:39,20:[1,41],29:[1,40]},{20:[2,15]},t(h,[2,10]),t(r,[2,12]),t(r,[2,22]),t(r,[2,23])],defaultActions:{5:[2,24],7:[2,2],20:[2,27],30:[2,26],37:[2,15]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,S,A,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in A=[],o[k])this.terminals_[T]&&T>h&&A.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:A})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},p={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),30;case 1:return this.begin("type_directive"),31;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),33;case 4:return 32;case 5:case 6:break;case 7:return 11;case 8:break;case 9:return 9;case 10:return 29;case 11:return 4;case 12:return 23;case 13:return 24;case 14:return 25;case 15:return 26;case 16:return 23;case 17:return 24;case 18:return 25;case 19:return 27;case 20:return 28;case 21:case 22:return 27;case 23:return 20;case 24:return e.yytext[0];case 25:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};function g(){this.yy={}}return d.lexer=p,g.prototype=d,d.Parser=g,new g}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.ALL=0]="ALL",t[t.RGB=1]="RGB",t[t.HSL=2]="HSL"}(r||(r={})),e.TYPE=r},function(t,e,n){"use strict";var r=n(10);t.exports=i;function i(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function a(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function s(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function c(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function u(t,e){return s(t,e.v,e.w,e.name)}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(t){return this._label=t,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return r.keys(this._nodes)},i.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},i.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},i.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},i.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(t){return this._nodes[t]},i.prototype.hasNode=function(t){return r.has(this._nodes,t)},i.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e="\0";else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},i.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},i.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}},i.prototype.children=function(t){if(r.isUndefined(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if("\0"===t)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},i.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},i.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},i.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},i.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},i.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return r.values(this._edgeObjs)},i.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},i.prototype.setEdge=function(){var t,e,n,i,o=!1,u=arguments[0];"object"==typeof u&&null!==u&&"v"in u?(t=u.v,e=u.w,n=u.name,2===arguments.length&&(i=arguments[1],o=!0)):(t=u,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],o=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=s(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return o&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=o?i:this._defaultEdgeLabelFn(t,e,n);var h=c(this._isDirected,t,e,n);return t=h.v,e=h.w,Object.freeze(h),this._edgeObjs[l]=h,a(this._preds[e],t),a(this._sucs[t],e),this._in[e][l]=h,this._out[t][l]=h,this._edgeCount++,this},i.prototype.edge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return this._edgeLabels[r]},i.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},i.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},i.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},i.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},i.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){var r=n(33)(n(16),"Map");t.exports=r},function(t,e,n){var r=n(217),i=n(224),a=n(226),o=n(227),s=n(228);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){(function(t){var r=n(109),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s}).call(this,n(7)(t))},function(t,e,n){var r=n(62),i=n(234),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(116),i=n(117),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},function(t,e,n){var r=n(42);t.exports=function(t,e,n){for(var i=-1,a=t.length;++i4,u=c?1:17,l=c?8:4,h=s?0:-1,f=c?255:15;return i.default.set({r:(r>>l*(h+3)&f)*u,g:(r>>l*(h+2)&f)*u,b:(r>>l*(h+1)&f)*u,a:s?(r&f)*u/255:1},t)}}},stringify:function(t){return t.a<1?"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]+r.default.unit.frac2hex(t.a):"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]}};e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a=n(15);e.default=function(t,e,n,o){void 0===o&&(o=1);var s=i.default.set({h:r.default.channel.clamp.h(t),s:r.default.channel.clamp.s(e),l:r.default.channel.clamp.l(n),a:r.default.channel.clamp.a(o)});return a.default.stringify(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"a")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t){var e=i.default.parse(t),n=e.r,a=e.g,o=e.b,s=.2126*r.default.channel.toLinear(n)+.7152*r.default.channel.toLinear(a)+.0722*r.default.channel.toLinear(o);return r.default.lang.round(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(102);e.default=function(t){return r.default(t)>=.5}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(52);e.default=function(t,e){var n=r.default.parse(t),a={};for(var o in e)e[o]&&(a[o]=n[o]+e[o]);return i.default(t,a)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(51);e.default=function(t,e,n){void 0===n&&(n=50);var a=r.default.parse(t),o=a.r,s=a.g,c=a.b,u=a.a,l=r.default.parse(e),h=l.r,f=l.g,d=l.b,p=l.a,g=n/100,y=2*g-1,v=u-p,m=((y*v==-1?y:(y+v)/(1+y*v))+1)/2,b=1-m,x=o*m+h*b,_=s*m+f*b,k=c*m+d*b,w=u*g+p*(1-g);return i.default(x,_,k,w)}},function(t,e,n){var r=n(53),i=n(79),a=n(58),o=n(229),s=n(235),c=n(114),u=n(115),l=n(238),h=n(239),f=n(119),d=n(240),p=n(41),g=n(244),y=n(245),v=n(124),m=n(5),b=n(39),x=n(249),_=n(11),k=n(251),w=n(30),E={};E["[object Arguments]"]=E["[object Array]"]=E["[object ArrayBuffer]"]=E["[object DataView]"]=E["[object Boolean]"]=E["[object Date]"]=E["[object Float32Array]"]=E["[object Float64Array]"]=E["[object Int8Array]"]=E["[object Int16Array]"]=E["[object Int32Array]"]=E["[object Map]"]=E["[object Number]"]=E["[object Object]"]=E["[object RegExp]"]=E["[object Set]"]=E["[object String]"]=E["[object Symbol]"]=E["[object Uint8Array]"]=E["[object Uint8ClampedArray]"]=E["[object Uint16Array]"]=E["[object Uint32Array]"]=!0,E["[object Error]"]=E["[object Function]"]=E["[object WeakMap]"]=!1,t.exports=function t(e,n,T,C,S,A){var M,O=1&n,D=2&n,N=4&n;if(T&&(M=S?T(e,C,S,A):T(e)),void 0!==M)return M;if(!_(e))return e;var B=m(e);if(B){if(M=g(e),!O)return u(e,M)}else{var L=p(e),F="[object Function]"==L||"[object GeneratorFunction]"==L;if(b(e))return c(e,O);if("[object Object]"==L||"[object Arguments]"==L||F&&!S){if(M=D||F?{}:v(e),!O)return D?h(e,s(M,e)):l(e,o(M,e))}else{if(!E[L])return S?e:{};M=y(e,L,O)}}A||(A=new r);var P=A.get(e);if(P)return P;A.set(e,M),k(e)?e.forEach((function(r){M.add(t(r,n,T,r,e,A))})):x(e)&&e.forEach((function(r,i){M.set(i,t(r,n,T,i,e,A))}));var I=N?D?d:f:D?keysIn:w,j=B?void 0:I(e);return i(j||e,(function(r,i){j&&(r=e[i=r]),a(M,i,t(r,n,T,i,e,A))})),M}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(211))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(33),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(230),i=n(47),a=n(5),o=n(39),s=n(60),c=n(48),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),l=!n&&i(t),h=!n&&!l&&o(t),f=!n&&!l&&!h&&c(t),d=n||l||h||f,p=d?r(t.length,String):[],g=p.length;for(var y in t)!e&&!u.call(t,y)||d&&("length"==y||h&&("offset"==y||"parent"==y)||f&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,g))||p.push(y);return p}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){(function(t){var r=n(16),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=s?s(n):new t.constructor(n);return t.copy(r),r}}).call(this,n(7)(t))},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++nl))return!1;var f=c.get(t);if(f&&c.get(e))return f==e;var d=-1,p=!0,g=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d0&&(a=c.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(u);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){var r=n(10);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priority2?e[2]:void 0;for(u&&a(e[0],e[1],u)&&(r=1);++n1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o);return{x:i+n,y:a+r}}},function(t,e,n){t.exports=function t(e){"use strict";var n=/^\0+/g,r=/[\0\r\f]/g,i=/: */g,a=/zoo|gra/,o=/([,: ])(transform)/g,s=/,+\s*(?![^(]*[)])/g,c=/ +\s*(?![^(]*[)])/g,u=/ *[\0] */g,l=/,\r+?/g,h=/([\t\r\n ])*\f?&/g,f=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,d=/\W+/g,p=/@(k\w+)\s*(\S*)\s*/,g=/::(place)/g,y=/:(read-only)/g,v=/\s+(?=[{\];=:>])/g,m=/([[}=:>])\s+/g,b=/(\{[^{]+?);(?=\})/g,x=/\s{2,}/g,_=/([^\(])(:+) */g,k=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,E=/([\s\S]*?);/g,T=/-self|flex-/g,C=/[^]*?(:[rp][el]a[\w-]+)[^]*/,S=/stretch|:\s*\w+\-(?:conte|avail)/,A=/([^-])(image-set\()/,M="-webkit-",O="-moz-",D="-ms-",N=1,B=1,L=0,F=1,P=1,I=1,j=0,R=0,Y=0,z=[],U=[],$=0,W=null,V=0,H=1,G="",q="",X="";function Z(t,e,i,a,o){for(var s,c,l=0,h=0,f=0,d=0,v=0,m=0,b=0,x=0,k=0,E=0,T=0,C=0,S=0,A=0,O=0,D=0,j=0,U=0,W=0,Q=i.length,it=Q-1,at="",ot="",st="",ct="",ut="",lt="";O0&&(ot=ot.replace(r,"")),ot.trim().length>0)){switch(b){case 32:case 9:case 59:case 13:case 10:break;default:ot+=i.charAt(O)}b=59}if(1===j)switch(b){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:j=0;case 9:case 13:case 10:case 32:break;default:for(j=0,W=O,v=b,O--,b=59;W0&&(++O,b=v);case 123:W=Q}}switch(b){case 123:for(v=(ot=ot.trim()).charCodeAt(0),T=1,W=++O;O0&&(ot=ot.replace(r,"")),m=ot.charCodeAt(1)){case 100:case 109:case 115:case 45:s=e;break;default:s=z}if(W=(st=Z(e,s,st,m,o+1)).length,Y>0&&0===W&&(W=ot.length),$>0&&(c=nt(3,st,s=J(z,ot,U),e,B,N,W,m,o,a),ot=s.join(""),void 0!==c&&0===(W=(st=c.trim()).length)&&(m=0,st="")),W>0)switch(m){case 115:ot=ot.replace(w,et);case 100:case 109:case 45:st=ot+"{"+st+"}";break;case 107:st=(ot=ot.replace(p,"$1 $2"+(H>0?G:"")))+"{"+st+"}",st=1===P||2===P&&tt("@"+st,3)?"@"+M+st+"@"+st:"@"+st;break;default:st=ot+st,112===a&&(ct+=st,st="")}else st="";break;default:st=Z(e,J(e,ot,U),st,a,o+1)}ut+=st,C=0,j=0,A=0,D=0,U=0,S=0,ot="",st="",b=i.charCodeAt(++O);break;case 125:case 59:if((W=(ot=(D>0?ot.replace(r,""):ot).trim()).length)>1)switch(0===A&&(45===(v=ot.charCodeAt(0))||v>96&&v<123)&&(W=(ot=ot.replace(" ",":")).length),$>0&&void 0!==(c=nt(1,ot,e,t,B,N,ct.length,a,o,a))&&0===(W=(ot=c.trim()).length)&&(ot="\0\0"),v=ot.charCodeAt(0),m=ot.charCodeAt(1),v){case 0:break;case 64:if(105===m||99===m){lt+=ot+i.charAt(O);break}default:if(58===ot.charCodeAt(W-1))break;ct+=K(ot,v,m,ot.charCodeAt(2))}C=0,j=0,A=0,D=0,U=0,ot="",b=i.charCodeAt(++O)}}switch(b){case 13:case 10:if(h+d+f+l+R===0)switch(E){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:A>0&&(j=1)}47===h?h=0:F+C===0&&107!==a&&ot.length>0&&(D=1,ot+="\0"),$*V>0&&nt(0,ot,e,t,B,N,ct.length,a,o,a),N=1,B++;break;case 59:case 125:if(h+d+f+l===0){N++;break}default:switch(N++,at=i.charAt(O),b){case 9:case 32:if(d+l+h===0)switch(x){case 44:case 58:case 9:case 32:at="";break;default:32!==b&&(at=" ")}break;case 0:at="\\0";break;case 12:at="\\f";break;case 11:at="\\v";break;case 38:d+h+l===0&&F>0&&(U=1,D=1,at="\f"+at);break;case 108:if(d+h+l+L===0&&A>0)switch(O-A){case 2:112===x&&58===i.charCodeAt(O-3)&&(L=x);case 8:111===k&&(L=k)}break;case 58:d+h+l===0&&(A=O);break;case 44:h+f+d+l===0&&(D=1,at+="\r");break;case 34:case 39:0===h&&(d=d===b?0:0===d?b:d);break;case 91:d+h+f===0&&l++;break;case 93:d+h+f===0&&l--;break;case 41:d+h+l===0&&f--;break;case 40:if(d+h+l===0){if(0===C)switch(2*x+3*k){case 533:break;default:T=0,C=1}f++}break;case 64:h+f+d+l+A+S===0&&(S=1);break;case 42:case 47:if(d+l+f>0)break;switch(h){case 0:switch(2*b+3*i.charCodeAt(O+1)){case 235:h=47;break;case 220:W=O,h=42}break;case 42:47===b&&42===x&&W+2!==O&&(33===i.charCodeAt(W+2)&&(ct+=i.substring(W,O+1)),at="",h=0)}}if(0===h){if(F+d+l+S===0&&107!==a&&59!==b)switch(b){case 44:case 126:case 62:case 43:case 41:case 40:if(0===C){switch(x){case 9:case 32:case 10:case 13:at+="\0";break;default:at="\0"+at+(44===b?"":"\0")}D=1}else switch(b){case 40:A+7===O&&108===x&&(A=0),C=++T;break;case 41:0==(C=--T)&&(D=1,at+="\0")}break;case 9:case 32:switch(x){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===C&&(D=1,at+="\0")}}ot+=at,32!==b&&9!==b&&(E=b)}}k=x,x=b,O++}if(W=ct.length,Y>0&&0===W&&0===ut.length&&0===e[0].length==0&&(109!==a||1===e.length&&(F>0?q:X)===e[0])&&(W=e.join(",").length+2),W>0){if(s=0===F&&107!==a?function(t){for(var e,n,i=0,a=t.length,o=Array(a);i1)){if(f=c.charCodeAt(c.length-1),d=n.charCodeAt(0),e="",0!==l)switch(f){case 42:case 126:case 62:case 43:case 32:case 40:break;default:e=" "}switch(d){case 38:n=e+q;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:n=e+n+q;break;case 58:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(I>0){n=e+n.substring(8,h-1);break}default:(l<1||s[l-1].length<1)&&(n=e+q+n)}break;case 44:e="";default:n=h>1&&n.indexOf(":")>0?e+n.replace(_,"$1"+q+"$2"):e+n+q}c+=n}o[i]=c.replace(r,"").trim()}return o}(e):e,$>0&&void 0!==(c=nt(2,ct,s,t,B,N,W,a,o,a))&&0===(ct=c).length)return lt+ct+ut;if(ct=s.join(",")+"{"+ct+"}",P*L!=0){switch(2!==P||tt(ct,2)||(L=0),L){case 111:ct=ct.replace(y,":-moz-$1")+ct;break;case 112:ct=ct.replace(g,"::-webkit-input-$1")+ct.replace(g,"::-moz-$1")+ct.replace(g,":-ms-input-$1")+ct}L=0}}return lt+ct+ut}function J(t,e,n){var r=e.trim().split(l),i=r,a=r.length,o=t.length;switch(o){case 0:case 1:for(var s=0,c=0===o?"":t[0]+" ";s0&&F>0)return i.replace(f,"$1").replace(h,"$1"+X);break;default:return t.trim()+i.replace(h,"$1"+t.trim())}default:if(n*F>0&&i.indexOf("\f")>0)return i.replace(h,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+i}function K(t,e,n,r){var u,l=0,h=t+";",f=2*e+3*n+4*r;if(944===f)return function(t){var e=t.length,n=t.indexOf(":",9)+1,r=t.substring(0,n).trim(),i=t.substring(n,e-1).trim();switch(t.charCodeAt(9)*H){case 0:break;case 45:if(110!==t.charCodeAt(10))break;default:var a=i.split((i="",s)),o=0;for(n=0,e=a.length;o64&&h<90||h>96&&h<123||95===h||45===h&&45!==u.charCodeAt(1)))switch(isNaN(parseFloat(u))+(-1!==u.indexOf("("))){case 1:switch(u){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:u+=G}}l[n++]=u}i+=(0===o?"":",")+l.join(" ")}}return i=r+i+";",1===P||2===P&&tt(i,1)?M+i+i:i}(h);if(0===P||2===P&&!tt(h,1))return h;switch(f){case 1015:return 97===h.charCodeAt(10)?M+h+h:h;case 951:return 116===h.charCodeAt(3)?M+h+h:h;case 963:return 110===h.charCodeAt(5)?M+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return M+h+h;case 978:return M+h+O+h+h;case 1019:case 983:return M+h+O+h+D+h+h;case 883:return 45===h.charCodeAt(8)?M+h+h:h.indexOf("image-set(",11)>0?h.replace(A,"$1-webkit-$2")+h:h;case 932:if(45===h.charCodeAt(4))switch(h.charCodeAt(5)){case 103:return M+"box-"+h.replace("-grow","")+M+h+D+h.replace("grow","positive")+h;case 115:return M+h+D+h.replace("shrink","negative")+h;case 98:return M+h+D+h.replace("basis","preferred-size")+h}return M+h+D+h+h;case 964:return M+h+D+"flex-"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return u=h.substring(h.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),M+"box-pack"+u+M+h+D+"flex-pack"+u+h;case 1005:return a.test(h)?h.replace(i,":"+M)+h.replace(i,":"+O)+h:h;case 1e3:switch(l=(u=h.substring(13).trim()).indexOf("-")+1,u.charCodeAt(0)+u.charCodeAt(l)){case 226:u=h.replace(k,"tb");break;case 232:u=h.replace(k,"tb-rl");break;case 220:u=h.replace(k,"lr");break;default:return h}return M+h+D+u+h;case 1017:if(-1===h.indexOf("sticky",9))return h;case 975:switch(l=(h=t).length-10,f=(u=(33===h.charCodeAt(l)?h.substring(0,l):h).substring(t.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|u.charCodeAt(7))){case 203:if(u.charCodeAt(8)<111)break;case 115:h=h.replace(u,M+u)+";"+h;break;case 207:case 102:h=h.replace(u,M+(f>102?"inline-":"")+"box")+";"+h.replace(u,M+u)+";"+h.replace(u,D+u+"box")+";"+h}return h+";";case 938:if(45===h.charCodeAt(5))switch(h.charCodeAt(6)){case 105:return u=h.replace("-items",""),M+h+M+"box-"+u+D+"flex-"+u+h;case 115:return M+h+D+"flex-item-"+h.replace(T,"")+h;default:return M+h+D+"flex-line-pack"+h.replace("align-content","").replace(T,"")+h}break;case 973:case 989:if(45!==h.charCodeAt(3)||122===h.charCodeAt(4))break;case 931:case 953:if(!0===S.test(t))return 115===(u=t.substring(t.indexOf(":")+1)).charCodeAt(0)?K(t.replace("stretch","fill-available"),e,n,r).replace(":fill-available",":stretch"):h.replace(u,M+u)+h.replace(u,O+u.replace("fill-",""))+h;break;case 962:if(h=M+h+(102===h.charCodeAt(5)?D+h:"")+h,n+r===211&&105===h.charCodeAt(13)&&h.indexOf("transform",10)>0)return h.substring(0,h.indexOf(";",27)+1).replace(o,"$1-webkit-$2")+h}return h}function tt(t,e){var n=t.indexOf(1===e?":":"{"),r=t.substring(0,3!==e?n:10),i=t.substring(n+1,t.length-1);return W(2!==e?r:r.replace(C,"$1"),i,e)}function et(t,e){var n=K(e,e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2));return n!==e+";"?n.replace(E," or ($1)").substring(4):"("+e+")"}function nt(t,e,n,r,i,a,o,s,c,u){for(var l,h=0,f=e;h<$;++h)switch(l=U[h].call(at,t,f,n,r,i,a,o,s,c,u)){case void 0:case!1:case!0:case null:break;default:f=l}if(f!==e)return f}function rt(t,e,n,r){for(var i=e+1;i0&&(G=i.replace(d,91===a?"":"-")),a=1,1===F?X=i:q=i;var o,s=[X];$>0&&void 0!==(o=nt(-1,n,s,s,B,N,0,0,0,0))&&"string"==typeof o&&(n=o);var c=Z(z,s,n,0,0);return $>0&&void 0!==(o=nt(-2,c,s,s,B,N,c.length,0,0,0))&&"string"!=typeof(c=o)&&(a=0),G="",X="",q="",L=0,B=1,N=1,j*a==0?c:function(t){return t.replace(r,"").replace(v,"").replace(m,"$1").replace(b,"$1").replace(x," ")}(c)}return at.use=function t(e){switch(e){case void 0:case null:$=U.length=0;break;default:if("function"==typeof e)U[$++]=e;else if("object"==typeof e)for(var n=0,r=e.length;n=255?255:t<0?0:t},g:function(t){return t>=255?255:t<0?0:t},b:function(t){return t>=255?255:t<0?0:t},h:function(t){return t%360},s:function(t){return t>=100?100:t<0?0:t},l:function(t){return t>=100?100:t<0?0:t},a:function(t){return t>=1?1:t<0?0:t}},toLinear:function(t){var e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t},hsl2rgb:function(t,e){var n=t.h,i=t.s,a=t.l;if(100===i)return 2.55*a;n/=360,i/=100;var o=(a/=100)<.5?a*(1+i):a+i-a*i,s=2*a-o;switch(e){case"r":return 255*r.hue2rgb(s,o,n+1/3);case"g":return 255*r.hue2rgb(s,o,n);case"b":return 255*r.hue2rgb(s,o,n-1/3)}},rgb2hsl:function(t,e){var n=t.r,r=t.g,i=t.b;n/=255,r/=255,i/=255;var a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if("l"===e)return 100*s;if(a===o)return 0;var c=a-o;if("s"===e)return 100*(s>.5?c/(2-a-o):c/(a+o));switch(a){case n:return 60*((r-i)/c+(r1?e:"0"+e},dec2hex:function(t){var e=Math.round(t).toString(16);return e.length>1?e:"0"+e}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(75),a=n(177),o=function(){function t(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a.default}return t.prototype.set=function(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.TYPE.ALL,this},t.prototype._ensureHSL=function(){void 0===this.data.h&&(this.data.h=r.default.channel.rgb2hsl(this.data,"h")),void 0===this.data.s&&(this.data.s=r.default.channel.rgb2hsl(this.data,"s")),void 0===this.data.l&&(this.data.l=r.default.channel.rgb2hsl(this.data,"l"))},t.prototype._ensureRGB=function(){void 0===this.data.r&&(this.data.r=r.default.channel.hsl2rgb(this.data,"r")),void 0===this.data.g&&(this.data.g=r.default.channel.hsl2rgb(this.data,"g")),void 0===this.data.b&&(this.data.b=r.default.channel.hsl2rgb(this.data,"b"))},Object.defineProperty(t.prototype,"r",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.r?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"r")):this.data.r},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.r=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.g?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"g")):this.data.g},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.g=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.b?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"b")):this.data.b},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.b=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"h",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.h?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"h")):this.data.h},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.h=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"s",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.s?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"s")):this.data.s},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.s=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"l",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.l?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"l")):this.data.l},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.l=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"a",{get:function(){return this.data.a},set:function(t){this.changed=!0,this.data.a=t},enumerable:!0,configurable:!0}),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(75),i=function(){function t(){this.type=r.TYPE.ALL}return t.prototype.get=function(){return this.type},t.prototype.set=function(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t},t.prototype.reset=function(){this.type=r.TYPE.ALL},t.prototype.is=function(t){return this.type===t},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i={};e.DEC2HEX=i;for(var a=0;a<=255;a++)i[a]=r.default.unit.dec2hex(a)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(99),i={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:function(t){t=t.toLowerCase();var e=i.colors[t];if(e)return r.default.parse(e)},stringify:function(t){var e=r.default.stringify(t);for(var n in i.colors)if(i.colors[n]===e)return n}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:function(t){var e=t.charCodeAt(0);if(114===e||82===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5],h=n[6],f=n[7],d=n[8];return i.default.set({r:r.default.channel.clamp.r(s?2.55*parseFloat(o):parseFloat(o)),g:r.default.channel.clamp.g(u?2.55*parseFloat(c):parseFloat(c)),b:r.default.channel.clamp.b(h?2.55*parseFloat(l):parseFloat(l)),a:f?r.default.channel.clamp.a(d?parseFloat(f)/100:parseFloat(f)):1},t)}}},stringify:function(t){return t.a<1?"rgba("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+", "+r.default.lang.round(t.a)+")":"rgb("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+")"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:function(t){var e=t.match(a.hueRe);if(e){var n=e[1];switch(e[2]){case"grad":return r.default.channel.clamp.h(.9*parseFloat(n));case"rad":return r.default.channel.clamp.h(180*parseFloat(n)/Math.PI);case"turn":return r.default.channel.clamp.h(360*parseFloat(n))}}return r.default.channel.clamp.h(parseFloat(t))},parse:function(t){var e=t.charCodeAt(0);if(104===e||72===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5];return i.default.set({h:a._hue2deg(o),s:r.default.channel.clamp.s(parseFloat(s)),l:r.default.channel.clamp.l(parseFloat(c)),a:u?r.default.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)}}},stringify:function(t){return t.a<1?"hsla("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%, "+t.a+")":"hsl("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%)"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"r")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"g")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"b")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"h")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"s")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"l")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(103);e.default=function(t){return!r.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15);e.default=function(t){try{return r.default.parse(t),!0}catch(t){return!1}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t){return r.default(t,"h",180)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(52);e.default=function(t){return r.default(t,{s:0})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(107);e.default=function(t,e){void 0===e&&(e=100);var n=r.default.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,i.default(n,t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15),a=n(106);e.default=function(t,e){var n,o,s,c=i.default.parse(t),u={};for(var l in e)u[l]=(n=c[l],o=e[l],s=r.default.channel.max[l],o>0?(s-n)*o/100:n*o/100);return a.default(t,u)}},function(t,e,n){t.exports={Graph:n(76),version:n(300)}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,4)}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(55),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},function(t,e,n){var r=n(55);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(55);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(55);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(54);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(54),i=n(77),a=n(78);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(37),i=n(214),a=n(11),o=n(110),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,h=u.hasOwnProperty,f=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?f:s).test(o(t))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(38),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(215),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},function(t,e,n){var r=n(16)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(218),i=n(54),a=n(77);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},function(t,e,n){var r=n(219),i=n(220),a=n(221),o=n(222),s=n(223);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(131),i=n(292),a=n(296),o=n(132),s=n(297),c=n(90);t.exports=function(t,e,n){var u=-1,l=i,h=t.length,f=!0,d=[],p=d;if(n)f=!1,l=a;else if(h>=200){var g=e?null:s(t);if(g)return c(g);f=!1,l=o,p=new r}else p=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(145),i=n(294),a=n(295);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(10);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s0;){if(n=c.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(u)}return o}},function(t,e,n){var r;try{r=n(3)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e,n){"use strict";var r=n(4),i=n(345),a=n(348),o=n(349),s=n(8).normalizeRanks,c=n(351),u=n(8).removeEmptyRanks,l=n(352),h=n(353),f=n(354),d=n(355),p=n(364),g=n(8),y=n(17).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?g.time:g.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new y({multigraph:!0,compound:!0}),n=C(t.graph());return e.setGraph(r.merge({},m,T(n,v),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=C(t.node(n));e.setNode(n,r.defaults(T(i,x),_)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=C(t.edge(n));e.setEdge(n,r.merge({},w,T(i,k),r.pick(i,E)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(g.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};g.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){u(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){c(t)})),e(" addBorderSegments",(function(){h(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=g.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){g.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){f.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){f.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,o=t.y,s=t.width,c=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-c/2),a=Math.max(a,o+c/2)}r.forEach(t.nodes(),(function(e){u(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&u(n)})),e-=s,i-=c,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(g.intersectRect(a,n)),i.points.push(g.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var v=["nodesep","edgesep","ranksep","marginx","marginy"],m={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],x=["width","height"],_={width:0,height:0},k=["minlen","weight","width","height","labeloffset"],w={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function T(t,e){return r.mapValues(r.pick(t,e),Number)}function C(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,5)}},function(t,e,n){var r=n(315)(n(316));t.exports=r},function(t,e,n){var r=n(25),i=n(24),a=n(30);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var c=r(n,3);e=a(e),n=function(t){return c(s[t],t,s)}}var u=t(e,n,o);return u>-1?s[c?e[u]:u]:void 0}}},function(t,e,n){var r=n(145),i=n(25),a=n(317),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=o(s+c,0)),r(t,i(e,3),c)}},function(t,e,n){var r=n(155);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(11),i=n(42),a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return NaN;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=s.test(t);return n||c.test(t)?u(t.slice(2),n?2:8):o.test(t)?NaN:+t}},function(t,e,n){var r=n(89),i=n(127),a=n(40);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){var r=n(59),i=n(88),a=n(25);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},function(t,e,n){var r=n(95),i=n(323),a=n(35);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e){t.exports=function(t,e){return t>e}},function(t,e,n){var r=n(325),i=n(328)((function(t,e,n){r(t,e,n)}));t.exports=i},function(t,e,n){var r=n(53),i=n(157),a=n(89),o=n(326),s=n(11),c=n(40),u=n(159);t.exports=function t(e,n,l,h,f){e!==n&&a(n,(function(a,c){if(f||(f=new r),s(a))o(e,n,c,l,t,h,f);else{var d=h?h(u(e,c),a,c+"",e,n,f):void 0;void 0===d&&(d=a),i(e,c,d)}}),c)}},function(t,e,n){var r=n(157),i=n(114),a=n(123),o=n(115),s=n(124),c=n(47),u=n(5),l=n(146),h=n(39),f=n(37),d=n(11),p=n(158),g=n(48),y=n(159),v=n(327);t.exports=function(t,e,n,m,b,x,_){var k=y(t,n),w=y(e,n),E=_.get(w);if(E)r(t,n,E);else{var T=x?x(k,w,n+"",t,e,_):void 0,C=void 0===T;if(C){var S=u(w),A=!S&&h(w),M=!S&&!A&&g(w);T=w,S||A||M?u(k)?T=k:l(k)?T=o(k):A?(C=!1,T=i(w,!0)):M?(C=!1,T=a(w,!0)):T=[]:p(w)||c(w)?(T=k,c(k)?T=v(k):d(k)&&!f(k)||(T=s(w))):C=!1}C&&(_.set(w,T),b(T,w,m,x,_),_.delete(w)),r(t,n,T)}}},function(t,e,n){var r=n(46),i=n(40);t.exports=function(t){return r(t,i(t))}},function(t,e,n){var r=n(67),i=n(68);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},function(t,e,n){var r=n(66),i=n(25),a=n(141),o=n(340),s=n(61),c=n(341),u=n(35);t.exports=function(t,e,n){var l=-1;e=r(e.length?e:[u],s(i));var h=a(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++l,value:t}}));return o(h,(function(t,e){return c(t,e,n)}))}},function(t,e){t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},function(t,e,n){var r=n(342);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,c=n.length;++i=c?u:u*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(42);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,c=null===e,u=e==e,l=r(e);if(!c&&!l&&!o&&t>e||o&&s&&u&&!c&&!l||i&&s&&u||!n&&u||!a)return 1;if(!i&&!o&&!l&&t0;--c)if(r=e[c].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(u,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,c(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,c(e,n,o)})),t.removeNode(i.v),o}function c(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},function(t,e){function n(){var t={};t._next=t._prev=t,this._sentinel=t}function r(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function i(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=n,n.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return r(e),e},n.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&r(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},n.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,i)),n=n._prev;return"["+t.join(", ")+"]"}},function(t,e,n){"use strict";var r=n(4),i=n(8);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,c=e.w,u=t.node(c).rank,l=e.name,h=t.edge(e),f=h.labelRank;if(u===s+1)return;for(t.removeEdge(e),a=0,++s;sc.lim&&(u=c,l=!0);var h=r.filter(e.edges(),(function(e){return l===m(t,t.node(e.v),u)&&l!==m(t,t.node(e.w),u)}));return r.minBy(h,(function(t){return a(e,t)}))}function v(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),h(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function m(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=h,l.calcCutValue=f,l.leaveEdge=g,l.enterEdge=y,l.exchangeEdges=v},function(t,e,n){var r=n(4);t.exports=function(t){var e=function(t){var e={},n=0;function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}}return r.forEach(t.children(),i),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],c=Math.min(e[n].low,e[r].low),u=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>c||u>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRank=2),s=l.buildLayerMatrix(t);var y=a(t,s);y0;)e%2&&(n+=c[e+1]),c[e=e-1>>1]+=t.weight;u+=t.weight*n}))),u}t.exports=function(t,e){for(var n=0,r=1;r=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){var r=n(4),i=n(8);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n=i.partition(t,(function(t){return r.has(t,"barycenter")})),o=n.lhs,s=r.sortBy(n.rhs,(function(t){return-t.i})),c=[],u=0,l=0,h=0;o.sort((f=!!e,function(t,e){return t.barycentere.barycenter?1:f?e.i-t.i:t.i-e.i})),h=a(c,s,h),r.forEach(o,(function(t){h+=t.vs.length,c.push(t.vs),u+=t.barycenter*t.weight,l+=t.weight,h=a(c,s,h)}));var f;var d={vs:r.flatten(c,!0)};l&&(d.barycenter=u/l,d.weight=l);return d}},function(t,e,n){var r=n(4),i=n(17).Graph;t.exports=function(t,e,n){var a=function(t){var e;for(;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),c=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,c||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){var r=n(4);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},function(t,e,n){"use strict";var r=n(4),i=n(8),a=n(365).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph,a=n(8);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,u=r.last(i);return r.forEach(i,(function(e,l){var h=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),f=h?t.node(h).order:s;(h||e===u)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(os)&&c(n,e,u)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,c){if("border"===t.node(r).dummy){var u=t.predecessors(r);u.length&&(a=t.node(u[0]).order,i(n,s,c,o,a),s=c,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function c(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function u(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var c=i(t);if(c.length)for(var l=((c=r.sortBy(c,(function(t){return s[t]}))).length-1)/2,h=Math.floor(l),f=Math.ceil(l);h<=f;++h){var d=c[h];o[t]===t&&e0}t.exports=function(t,e,r,i){var a,o,s,c,u,l,h,f,d,p,g,y,v;if(a=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+u,p=a*i.x+s*i.y+u,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,c=r.x-i.x,l=i.x*r.y-r.x*i.y,h=o*t.x+c*t.y+l,f=o*e.x+c*e.y+l,0!==h&&0!==f&&n(h,f))return;if(0===(g=a*c-o*s))return;return y=Math.abs(g/2),{x:(v=s*l-c*u)<0?(v-y)/g:(v+y)/g,y:(v=o*u-a*l)<0?(v-y)/g:(v+y)/g}}},function(t,e,n){var r=n(43),i=n(31),a=n(153).layout;t.exports=function(){var t=n(371),e=n(374),i=n(375),u=n(376),l=n(377),h=n(378),f=n(379),d=n(380),p=n(381),g=function(n,g){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(g);var y=c(n,"output"),v=c(y,"clusters"),m=c(y,"edgePaths"),b=i(c(y,"edgeLabels"),g),x=t(c(y,"nodes"),g,d);a(g),l(x,g),h(b,g),u(m,g,p);var _=e(v,g);f(_,g),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(g)};return g.createNodes=function(e){return arguments.length?(t=e,g):t},g.createClusters=function(t){return arguments.length?(e=t,g):e},g.createEdgeLabels=function(t){return arguments.length?(i=t,g):i},g.createEdgePaths=function(t){return arguments.length?(u=t,g):u},g.shapes=function(t){return arguments.length?(d=t,g):d},g.arrows=function(t){return arguments.length?(p=t,g):p},g};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function c(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(43),i=n(97),a=n(12),o=n(31);t.exports=function(t,e,n){var s,c=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),u=t.selectAll("g.node").data(c,(function(t){return t})).classed("update",!0);u.exit().remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),c=o.select(this);a.applyClass(c,s.class,(c.classed("update")?"update ":"")+"node"),c.select("g.label").remove();var u=c.append("g").attr("class","label"),l=i(u,s),h=n[s.shape],f=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&c.attr("id",s.id),s.labelId&&u.attr("id",s.labelId),r.has(s,"width")&&(f.width=s.width),r.has(s,"height")&&(f.height=s.height),f.width+=s.paddingLeft+s.paddingRight,f.height+=s.paddingTop+s.paddingBottom,u.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=h(d,f,s).classed("label-container",!0);a.applyStyle(p,s.style);var g=p.node().getBBox();s.width=g.width,s.height=g.height})),s=u.exit?u.exit():u.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),u}},function(t,e,n){var r=n(12);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==h[t]&&(t=h[t])),f.trace=function(){},f.debug=function(){},f.info=function(){},f.warn=function(){},f.error=function(){},f.fatal=function(){},t<=h.fatal&&(f.fatal=console.error?console.error.bind(console,p("FATAL"),"color: orange"):console.log.bind(console,"",p("FATAL"))),t<=h.error&&(f.error=console.error?console.error.bind(console,p("ERROR"),"color: orange"):console.log.bind(console,"",p("ERROR"))),t<=h.warn&&(f.warn=console.warn?console.warn.bind(console,p("WARN"),"color: orange"):console.log.bind(console,"",p("WARN"))),t<=h.info&&(f.info=console.info?console.info.bind(console,p("INFO"),"color: lightblue"):console.log.bind(console,"",p("INFO"))),t<=h.debug&&(f.debug=console.debug?console.debug.bind(console,p("DEBUG"),"color: lightgreen"):console.log.bind(console,"",p("DEBUG")))},p=function(t){var e=l()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")},g=n(70),y=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}return e},v=//gi,m=function(t){return t.replace(v,"#br#")},b=function(t){return t.replace(/#br#/g,"
")},x={getRows:function(t){if(!t)return 1;var e=m(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},sanitizeText:function(t,e){var n=t,r=!0;if(!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),r){var i=e.securityLevel;"antiscript"===i?n=y(n):"loose"!==i&&(n=(n=(n=m(n)).replace(//g,">")).replace(/=/g,"="),n=b(n))}return n},hasBreaks:function(t){return//gi.test(t)},splitBreaks:function(t){return t.split(//gi)},lineBreakRegex:v,removeScript:y};function _(t){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function k(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:null;try{var n=new RegExp("[%]{2}(?![{]".concat(T.source,")(?=[}][%]{2}).*\n"),"ig");t=t.trim().replace(n,"").replace(/'/gm,'"'),f.debug("Detecting diagram directive".concat(null!==e?" type:"+e:""," based on the text:").concat(t));for(var r,i=[];null!==(r=E.exec(t));)if(r.index===E.lastIndex&&E.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){var a=r[1]?r[1]:r[2],o=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:a,args:o})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return f.error("ERROR: ".concat(n.message," - Unable to parse directive").concat(null!==e?" type:"+e:""," based on the text:").concat(t)),{type:null,args:null}}},A=function(t){return t=t.replace(E,"").replace(C,"\n"),f.debug("Detecting diagram type based on the text "+t),t.match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram-v2/)?"classDiagram":t.match(/^\s*classDiagram/)?"class":t.match(/^\s*stateDiagram-v2/)?"stateDiagram":t.match(/^\s*stateDiagram/)?"state":t.match(/^\s*gitGraph/)?"git":t.match(/^\s*flowchart/)?"flowchart-v2":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":t.match(/^\s*erDiagram/)?"er":t.match(/^\s*journey/)?"journey":"flowchart"},M=function(t,e){var n={};return function(){for(var r=arguments.length,i=new Array(r),a=0;a"},n),x.lineBreakRegex.test(t))return t;var r=t.split(" "),i=[],a="";return r.forEach((function(t,o){var s=Y("".concat(t," "),n),c=Y(a,n);if(s>e){var u=R(t,e,"-",n),l=u.hyphenatedStrings,h=u.remainingWord;i.push.apply(i,[a].concat(k(l))),a=h}else c+s>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===r.length&&i.push(a)})),i.filter((function(t){return""!==t})).join(n.joinWith)}),(function(t,e,n){return"".concat(t,"-").concat(e,"-").concat(n.fontSize,"-").concat(n.fontWeight,"-").concat(n.fontFamily,"-").concat(n.joinWith)})),R=M((function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);var i=t.split(""),a=[],o="";return i.forEach((function(t,s){var c="".concat(o).concat(t);if(Y(c,r)>=e){var u=s+1,l=i.length===u,h="".concat(c).concat(n);a.push(l?c:h),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;return"".concat(t,"-").concat(e,"-").concat(n,"-").concat(r.fontSize,"-").concat(r.fontWeight,"-").concat(r.fontFamily)})),Y=function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),z(t,e).width},z=M((function(t,e){var n=e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),r=n.fontSize,i=n.fontFamily,a=n.fontWeight;if(!t)return{width:0,height:0};var o=["sans-serif",i],c=t.split(x.lineBreakRegex),u=[],l=Object(s.select)("body");if(!l.remove)return{width:0,height:0,lineHeight:0};for(var h=l.append("svg"),f=0,d=o;fu[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]}),(function(t,e){return"".concat(t,"-").concat(e.fontSize,"-").concat(e.fontWeight,"-").concat(e.fontFamily)})),U=function(t,e,n){var r=new Map;return r.set("height",t),n?(r.set("width","100%"),r.set("style","max-width: ".concat(e,"px;"))):r.set("width",e),r},$=function(t,e,n,r){!function(t,e){var n=!0,r=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value;t.attr(s[0],s[1])}}catch(t){r=!0,i=t}finally{try{n||null==o.return||o.return()}finally{if(r)throw i}}}(t,U(e,n,r))},W={assignWithDepth:P,wrapLabel:j,calculateTextHeight:function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),z(t,e).height},calculateTextWidth:Y,calculateTextDimensions:z,calculateSvgSizeAttrs:U,configureSvgSize:$,detectInit:function(t){var e=S(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(e)){var r=e.map((function(t){return t.args}));n=P(n,k(r))}else n=e.args;if(n){var i=A(t);["config"].forEach((function(t){void 0!==n[t]&&("flowchart-v2"===i&&(i="flowchart"),n[i]=n[t],delete n[t])}))}return n},detectDirective:S,detectType:A,isSubstringInArray:function(t,e){for(var n=0;n=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:function(t,e,n){var r;f.info("our points",e),e[0]!==n&&(e=e.reverse()),e.forEach((function(t){D(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=D(t,r);if(e=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var o=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),c={x:0,y:0};return c.x=Math.sin(s)*o+(e[0].x+i.x)/2,c.y=-Math.cos(s)*o+(e[0].y+i.y)/2,c},calcTerminalLabelPosition:function(t,e,n){var r,i=JSON.parse(JSON.stringify(n));f.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((function(t){D(t,r),r=t}));var a,o=25;r=void 0,i.forEach((function(t){if(r&&!a){var e=D(t,r);if(e=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var s=10,c=Math.atan2(i[0].y-a.y,i[0].x-a.x),u={x:0,y:0};return u.x=Math.sin(c)*s+(i[0].x+a.x)/2,u.y=-Math.cos(c)*s+(i[0].y+a.y)/2,"start_left"===e&&(u.x=Math.sin(c+Math.PI)*s+(i[0].x+a.x)/2,u.y=-Math.cos(c+Math.PI)*s+(i[0].y+a.y)/2),"end_right"===e&&(u.x=Math.sin(c-Math.PI)*s+(i[0].x+a.x)/2-5,u.y=-Math.cos(c-Math.PI)*s+(i[0].y+a.y)/2-5),"end_left"===e&&(u.x=Math.sin(c)*s+(i[0].x+a.x)/2-5,u.y=-Math.cos(c)*s+(i[0].y+a.y)/2-5),u},formatUrl:function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?Object(g.sanitizeUrl)(n):n},getStylesFromArray:N,generateId:L,random:F,memoize:M,runFunc:function(t){for(var e,n=t.split("."),r=n.length-1,i=n[r],a=window,o=0;o1?s-1:0),u=1;u=0&&(n=!0)})),n},Gt=function(t,e){var n=[];return t.nodes.forEach((function(r,i){Ht(e,r)||n.push(t.nodes[i])})),{nodes:n}},qt={parseDirective:function(t,e,n){$o.parseDirective(this,t,e,n)},defaultConfig:function(){return pt.flowchart},addVertex:function(t,e,n,r,i){var a,o=t;void 0!==o&&0!==o.trim().length&&(void 0===Mt[o]&&(Mt[o]={id:o,domId:"flowchart-"+o+"-"+St,styles:[],classes:[]}),St++,void 0!==e?(At=xt(),'"'===(a=x.sanitizeText(e.trim(),At))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),Mt[o].text=a):void 0===Mt[o].text&&(Mt[o].text=t),void 0!==n&&(Mt[o].type=n),null!=r&&r.forEach((function(t){Mt[o].styles.push(t)})),null!=i&&i.forEach((function(t){Mt[o].classes.push(t)})))},lookUpDomId:jt,addLink:function(t,e,n,r){var i,a;for(i=0;i/)&&(Tt="LR"),Tt.match(/.*v/)&&(Tt="TB")},setClass:Yt,getTooltip:function(t){return Lt[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e){var n=jt(t);"loose"===xt().securityLevel&&void 0!==e&&void 0!==Mt[t]&&(Mt[t].haveCallback=!0,It.push((function(){var r=document.querySelector('[id="'.concat(n,'"]'));null!==r&&r.addEventListener("click",(function(){W.runFunc(e,t)}),!1)})))}(t,e)})),zt(t,n),Yt(t,"clickable")},setLink:function(t,e,n,r){t.split(",").forEach((function(t){void 0!==Mt[t]&&(Mt[t].link=W.formatUrl(e,At),Mt[t].linkTarget=r)})),zt(t,n),Yt(t,"clickable")},bindFunctions:function(t){It.forEach((function(e){e(t)}))},getDirection:function(){return Tt.trim()},getVertices:function(){return Mt},getEdges:function(){return Ot},getClasses:function(){return Dt},clear:function(t){Mt={},Dt={},Ot=[],(It=[]).push(Ut),Nt=[],Bt={},Ft=0,Lt=[],Pt=!0,Ct=t||"gen-1"},setGen:function(t){Ct=t||"gen-1"},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},addSubGraph:function(t,e,n){var r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);var a,o,s,c=[];if(a=c.concat.apply(c,e),o={boolean:{},number:{},string:{}},s=[],c=a.filter((function(t){var e=Et(t);return""!==t.trim()&&(e in o?!o[e].hasOwnProperty(t)&&(o[e][t]=!0):!(s.indexOf(t)>=0)&&s.push(t))})),"gen-1"===Ct){f.warn("LOOKING UP");for(var u=0;u0&&function t(e,n){var r=Nt[n].nodes;if(!((Wt+=1)>2e3)){if(Vt[Wt]=n,Nt[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}}("none",Nt.length-1)},getSubGraphs:function(){return Nt},destructLink:function(t,e){var n,r=function(t){var e=t.trim(),n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}var i="normal",a=n.length-1;"="===n[0]&&(i="thick");var o=function(t,e){for(var n=e.length,r=0,i=0;in.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},c}function fe(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var de={addToRender:function(t){t.shapes().question=ee,t.shapes().hexagon=ne,t.shapes().stadium=ue,t.shapes().subroutine=le,t.shapes().cylinder=he,t.shapes().rect_left_inv_arrow=re,t.shapes().lean_right=ie,t.shapes().lean_left=ae,t.shapes().trapezoid=oe,t.shapes().inv_trapezoid=se,t.shapes().rect_right_inv_arrow=ce},addToRenderV2:function(t){t({question:ee}),t({hexagon:ne}),t({stadium:ue}),t({subroutine:le}),t({cylinder:he}),t({rect_left_inv_arrow:re}),t({lean_right:ie}),t({lean_left:ae}),t({trapezoid:oe}),t({inv_trapezoid:se}),t({rect_right_inv_arrow:ce})}},pe={},ge=function(t,e,n){var r=Object(s.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=N(i.styles),c=void 0!==i.text?i.text:i.id;if(xt().flowchart.htmlLabels){var u={label:c.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=te()(r,u).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var h=c.split(x.lineBreakRegex),d=0;d').concat(a.text.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),"")):(l.labelType="text",l.label=a.text.replace(x.lineBreakRegex,"\n"),void 0===a.style&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),l.id=o,l.class=c+" "+u,l.minlen=a.length||1,e.setEdge(qt.lookUpDomId(a.start),qt.lookUpDomId(a.end),l,i)}))},ve=function(t){for(var e=Object.keys(t),n=0;n=0;h--)i=l[h],qt.addVertex(i.id,i.title,"group",void 0,i.classes);var d=qt.getVertices();f.warn("Get vertices",d);var p=qt.getEdges(),g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(s.selectAll)("cluster").append("text");for(var y=0;y"),f.info("vertexText"+i),function(t){var e,n,r=Object(s.select)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),i=r.append("xhtml:div"),a=t.label,o=t.isNode?"nodeLabel":"edgeLabel";return i.html(''+a+""),e=i,(n=t.labelStyle)&&e.attr("style",n),i.style("display","inline-block"),i.style("white-space","nowrap"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}({isNode:r,label:i.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),labelStyle:e.replace("fill:","color:")});var a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));var o=[];o="string"==typeof i?i.split(/\\n|\n|/gi):Array.isArray(i)?i:[];for(var c=0;c0)t(a,n,r,i);else{var o=n.node(a);f.info("cp ",a," to ",i," with parent ",e),r.setNode(a,o),i!==n.parent(a)&&(f.warn("Setting parent",a,n.parent(a)),r.setParent(a,n.parent(a))),e!==i&&a!==e?(f.debug("Setting parent",a,e),r.setParent(a,e)):(f.info("In copy ",e,"root",i,"data",n.node(e),i),f.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var s=n.edges(a);f.debug("Copying Edges",s),s.forEach((function(t){f.info("Edge",t);var a=n.edge(t.v,t.w,t.name);f.info("Edge data",a,i);try{!function(t,e){return f.info("Decendants of ",e," is ",Me[e]),f.info("Edge is ",t),t.v!==e&&(t.w!==e&&(Me[e]?(f.info("Here "),Me[e].indexOf(t.v)>=0||(!!De(t.v,e)||(!!De(t.w,e)||Me[e].indexOf(t.w)>=0))):(f.debug("Tilt, ",e,",not in decendants"),!1)))}(t,i)?f.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(f.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),f.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){f.error(t)}}))}f.debug("Removing node",a),n.removeNode(a)}))},Be=function t(e,n){f.trace("Searching",e);var r=n.children(e);if(f.trace("Searching children of id ",e,r),r.length<1)return f.trace("This is a valid node",e),e;for(var i=0;i ",a),a}},Le=function(t){return Ae[t]&&Ae[t].externalConnections&&Ae[t]?Ae[t].id:t},Fe=function(t,e){!t||e>10?f.debug("Opting out, no graph "):(f.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(f.warn("Cluster identified",e," Replacement id in edges: ",Be(e,t)),Me[e]=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a0?(f.debug("Cluster identified",e,Me),r.forEach((function(t){t.v!==e&&t.w!==e&&(De(t.v,e)^De(t.w,e)&&(f.warn("Edge: ",t," leaves cluster ",e),f.warn("Decendants of XXX ",e,": ",Me[e]),Ae[e].externalConnections=!0))}))):f.debug("Not a cluster ",e,Me)})),t.edges().forEach((function(e){var n=t.edge(e);f.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),f.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;f.warn("Fix XXX",Ae,"ids:",e.v,e.w,"Translateing: ",Ae[e.v]," --- ",Ae[e.w]),(Ae[e.v]||Ae[e.w])&&(f.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=Le(e.v),i=Le(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),f.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),f.warn("Adjusted Graph",H.a.json.write(t)),Pe(t,0),f.trace(Ae))},Pe=function t(e,n){if(f.warn("extractor - ",n,H.a.json.write(e),e.children("D")),n>10)f.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a0}if(i){f.debug("Nodes = ",r,n);for(var c=0;c0){f.warn("Cluster without external connections, without a parent and with children",u,n);var l=e.graph(),h=new H.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===l.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));f.warn("Old graph before copy",H.a.json.write(e)),Ne(u,e,h,u),e.setNode(u,{clusterNode:!0,id:u,clusterData:Ae[u].clusterData,labelText:Ae[u].labelText,graph:h}),f.warn("New graph after copy node: (",u,")",H.a.json.write(h)),f.debug("Old graph after copy",H.a.json.write(e))}else f.warn("Cluster ** ",u," **not meeting the criteria !externalConnections:",!Ae[u].externalConnections," no parent: ",!e.parent(u)," children ",e.children(u)&&e.children(u).length>0,e.children("D"),n),f.debug(Ae);else f.debug("Not a cluster",u,n)}r=e.nodes(),f.warn("New list of nodes",r);for(var d=0;d0}var Ue=function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y;if(i=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,f=i*n.x+o*n.y+c,d=i*r.x+o*r.y+c,!(0!==f&&0!==d&&ze(f,d)||(a=r.y-n.y,s=n.x-r.x,u=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+u,h=a*e.x+s*e.y+u,0!==l&&0!==h&&ze(l,h)||0==(p=i*s-a*o))))return g=Math.abs(p/2),{x:(y=o*u-s*c)<0?(y-g)/p:(y+g)/p,y:(y=a*c-i*u)<0?(y-g)/p:(y+g)/p}},$e=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=r-t.width/2-o,u=i-t.height/2-s,l=0;l1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o),{x:i+n,y:a+r}},Ve={node:n.n(je).a,circle:Ye,ellipse:Re,polygon:$e,rect:We},He=function(t,e){var n=Te(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;f.info("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ce(e,o),e.intersect=function(t){return Ve.rect(e,t)},r},Ge=[],qe={},Xe=0,Ze=[],Je=function(t){var e="",n=t;if(t.indexOf("~")>0){var r=t.split("~");n=r[0],e=r[1]}return{className:n,type:e}},Qe=function(t){var e=Je(t);void 0===qe[e.className]&&(qe[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:"classid-"+e.className+"-"+Xe},Xe++)},Ke=function(t){for(var e=Object.keys(qe),n=0;n>")?r.annotations.push(i.substring(2,i.length-2)):i.indexOf(")")>0?r.methods.push(i):i&&r.members.push(i)}},en=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n="classid-"+n),void 0!==qe[n]&&qe[n].cssClasses.push(e)}))},nn=function(t,e,n){var r=xt(),i=t,a=Ke(i);"loose"===r.securityLevel&&void 0!==e&&void 0!==qe[i]&&(n&&(qe[i].tooltip=x.sanitizeText(n,r)),Ze.push((function(){var t=document.querySelector('[id="'.concat(a,'"]'));null!==t&&t.addEventListener("click",(function(){W.runFunc(e,a)}),!1)})))},rn={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},an=function(t){var e=Object(s.select)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=Object(s.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(s.select)(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=Object(s.select)(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),Object(s.select)(this).classed("hover",!1)}))};Ze.push(an);var on={parseDirective:function(t,e,n){$o.parseDirective(this,t,e,n)},getConfig:function(){return xt().class},addClass:Qe,bindFunctions:function(t){Ze.forEach((function(e){e(t)}))},clear:function(){Ge=[],qe={},(Ze=[]).push(an)},getClass:function(t){return qe[t]},getClasses:function(){return qe},addAnnotation:function(t,e){var n=Je(t).className;qe[n].annotations.push(e)},getRelations:function(){return Ge},addRelation:function(t){f.debug("Adding relation: "+JSON.stringify(t)),Qe(t.id1),Qe(t.id2),t.id1=Je(t.id1).className,t.id2=Je(t.id2).className,Ge.push(t)},addMember:tn,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((function(e){return tn(t,e)})))},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(1).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:rn,setClickEvent:function(t,e,n){t.split(",").forEach((function(t){nn(t,e,n),qe[t].haveCallback=!0})),en(t,"clickable")},setCssClass:en,setLink:function(t,e,n){var r=xt();t.split(",").forEach((function(t){var i=t;t[0].match(/\d/)&&(i="classid-"+i),void 0!==qe[i]&&(qe[i].link=W.formatUrl(e,r),n&&(qe[i].tooltip=x.sanitizeText(n,r)))})),en(t,"clickable")},lookUpDomId:Ke},sn=0,cn=function(t){var e=t.match(/(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+)/),n=t.match(/^([+|\-|~|#])?(\w+) *\( *(.*)\) *(\*|\$)? *(\w*[~|[\]]*\s*\w*~?)$/);return e&&!n?un(e):n?ln(n):hn(t)},un=function(t){var e="";try{e=(t[1]?t[1].trim():"")+(t[2]?t[2].trim():"")+(t[3]?dn(t[3].trim()):"")+" "+(t[4]?t[4].trim():"")}catch(n){e=t}return{displayText:e,cssStyle:""}},ln=function(t){var e="",n="";try{var r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?dn(t[3].trim()):"",o=t[4]?t[4].trim():"";n=r+i+"("+a+")"+(t[5]?" : "+dn(t[5]).trim():""),e=pn(o)}catch(e){n=t}return{displayText:n,cssStyle:e}},hn=function(t){var e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){var o="",s="",c=t.substring(0,1);c.match(/\w/)?s=t.substring(0,i).trim():(c.match(/\+|-|~|#/)&&(o=c),s=t.substring(1,i).trim());var u=t.substring(i+1,a),l=t.substring(a+1,1);n=pn(l),e=o+s+"("+dn(u.trim())+")",a<"".length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+dn(r))}else e=dn(t);return{displayText:e,cssStyle:n}},fn=function(t,e,n,r){var i=cn(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},dn=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},pn=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},gn=function(t,e,n){f.info("Rendering class "+e);var r,i=e.id,a={id:i,label:e.id,width:0,height:0},o=t.append("g").attr("id",Ke(i)).attr("class","classGroup");r=e.link?o.append("svg:a").attr("xlink:href",e.link).attr("target","_blank").append("text").attr("y",n.textHeight+n.padding).attr("x",0):o.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var s=!0;e.annotations.forEach((function(t){var e=r.append("tspan").text("«"+t+"»");s||e.attr("dy",n.textHeight),s=!1}));var c=e.id;void 0!==e.type&&""!==e.type&&(c+="<"+e.type+">");var u=r.append("tspan").text(c).attr("class","title");s||u.attr("dy",n.textHeight);var l=r.node().getBBox().height,h=o.append("line").attr("x1",0).attr("y1",n.padding+l+n.dividerMargin/2).attr("y2",n.padding+l+n.dividerMargin/2),d=o.append("text").attr("x",n.padding).attr("y",l+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.members.forEach((function(t){fn(d,t,s,n),s=!1}));var p=d.node().getBBox(),g=o.append("line").attr("x1",0).attr("y1",n.padding+l+n.dividerMargin+p.height).attr("y2",n.padding+l+n.dividerMargin+p.height),y=o.append("text").attr("x",n.padding).attr("y",l+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.methods.forEach((function(t){fn(y,t,s,n),s=!1}));var v=o.node().getBBox(),m=" ";e.cssClasses.length>0&&(m+=e.cssClasses.join(" "));var b=o.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*n.padding).attr("height",v.height+n.padding+.5*n.dividerMargin).attr("class",m).node().getBBox().width;return r.node().childNodes.forEach((function(t){t.setAttribute("x",(b-t.getBBox().width)/2)})),e.tooltip&&r.insert("title").text(e.tooltip),h.attr("x2",b),g.attr("x2",b),a.width=b,a.height=v.height+n.padding+.5*n.dividerMargin,a},yn=function(t,e,n,r){var i=function(t){switch(t){case rn.AGGREGATION:return"aggregation";case rn.EXTENSION:return"extension";case rn.COMPOSITION:return"composition";case rn.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var a,o,c=e.points,u=Object(s.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(s.curveBasis),l=t.append("path").attr("d",u(c)).attr("id","edge"+sn).attr("class","relation"),h="";r.arrowMarkerAbsolute&&(h=(h=(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+h+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+h+"#"+i(n.relation.type2)+"End)");var d,p,g,y,v=e.points.length,m=W.calcLabelPosition(e.points);if(a=m.x,o=m.y,v%2!=0&&v>1){var b=W.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),x=W.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[v-1]);f.debug("cardinality_1_point "+JSON.stringify(b)),f.debug("cardinality_2_point "+JSON.stringify(x)),d=b.x,p=b.y,g=x.x,y=x.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),k=_.append("text").attr("class","label").attr("x",a).attr("y",o).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=k;var w=k.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",w.x-r.padding/2).attr("y",w.y-r.padding/2).attr("width",w.width+r.padding).attr("height",w.height+r.padding)}(f.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1)&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",d).attr("y",p).attr("fill","black").attr("font-size","6").text(n.relationTitle1);void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2);sn++},vn=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").style("stroke","black").style("fill","black").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Ce(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Ve.rect(e,t)},r},mn={question:function(t,e){var n=Te(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];f.info("Question main (Circle)");var s=Se(r,a,a,o);return Ce(e,s),e.intersect=function(t){return f.warn("Intersect called"),Ve.polygon(e,o,t)},r},rect:function(t,e){var n=Te(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;f.trace("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ce(e,o),e.intersect=function(t){return Ve.rect(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r=t.insert("g").attr("class",n).attr("id",e.domId||e.id),i=r.insert("rect",":first-child"),a=r.insert("line"),o=r.insert("g").attr("class","label"),c=e.labelText.flat();f.info("Label text",c[0]);var u,l=o.node().appendChild(Ee(c[0],e.labelStyle,!0,!0));if(xt().flowchart.htmlLabels){var h=l.children[0],d=Object(s.select)(l);u=h.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}f.info("Text 2",c);var p=c.slice(1,c.length),g=l.getBBox(),y=o.node().appendChild(Ee(p.join("
"),e.labelStyle,!0,!0));if(xt().flowchart.htmlLabels){var v=y.children[0],m=Object(s.select)(y);u=v.getBoundingClientRect(),m.attr("width",u.width),m.attr("height",u.height)}var b=e.padding/2;return Object(s.select)(y).attr("transform","translate( "+(u.width>g.width?0:(g.width-u.width)/2)+", "+(g.height+b+5)+")"),Object(s.select)(l).attr("transform","translate( "+(u.widthe.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Ce(e,r),e.intersect=function(t){return Ve.circle(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Ce(e,i),e.intersect=function(t){return Ve.circle(e,7,t)},n},note:He,subroutine:function(t,e){var n=Te(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=Se(r,a,o,[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}]);return Ce(e,s),e.intersect=function(t){return Ve.polygon(e,t)},r},fork:vn,join:vn,class_box:function(t,e){var n,r=e.padding/2;n=e.classes?"node "+e.classes:"node default";var i=t.insert("g").attr("class",n).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),o=i.insert("line"),c=i.insert("line"),u=0,l=4,h=i.insert("g").attr("class","label"),f=0,d=e.classData.annotations&&e.classData.annotations[0],p=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",g=h.node().appendChild(Ee(p,e.labelStyle,!0,!0)),y=g.getBBox();if(xt().flowchart.htmlLabels){var v=g.children[0],m=Object(s.select)(g);y=v.getBoundingClientRect(),m.attr("width",y.width),m.attr("height",y.height)}e.classData.annotations[0]&&(l+=y.height+4,u+=y.width);var b=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(b+="<"+e.classData.type+">");var x=h.node().appendChild(Ee(b,e.labelStyle,!0,!0));Object(s.select)(x).attr("class","classTitle");var _=x.getBBox();if(xt().flowchart.htmlLabels){var k=x.children[0],w=Object(s.select)(x);_=k.getBoundingClientRect(),w.attr("width",_.width),w.attr("height",_.height)}l+=_.height+4,_.width>u&&(u=_.width);var E=[];e.classData.members.forEach((function(t){var n=cn(t).displayText,r=h.node().appendChild(Ee(n,e.labelStyle,!0,!0)),i=r.getBBox();if(xt().flowchart.htmlLabels){var a=r.children[0],o=Object(s.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>u&&(u=i.width),l+=i.height+4,E.push(r)})),l+=8;var T=[];if(e.classData.methods.forEach((function(t){var n=cn(t).displayText,r=h.node().appendChild(Ee(n,e.labelStyle,!0,!0)),i=r.getBBox();if(xt().flowchart.htmlLabels){var a=r.children[0],o=Object(s.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>u&&(u=i.width),l+=i.height+4,T.push(r)})),l+=8,d){var C=(u-y.width)/2;Object(s.select)(g).attr("transform","translate( "+(-1*u/2+C)+", "+-1*l/2+")"),f=y.height+4}var S=(u-_.width)/2;return Object(s.select)(x).attr("transform","translate( "+(-1*u/2+S)+", "+(-1*l/2+f)+")"),f+=_.height+4,o.attr("class","divider").attr("x1",-u/2-r).attr("x2",u/2+r).attr("y1",-l/2-r+8+f).attr("y2",-l/2-r+8+f),f+=8,E.forEach((function(t){Object(s.select)(t).attr("transform","translate( "+-u/2+", "+(-1*l/2+f+4)+")"),f+=_.height+4})),f+=8,c.attr("class","divider").attr("x1",-u/2-r).attr("x2",u/2+r).attr("y1",-l/2-r+8+f).attr("y2",-l/2-r+8+f),f+=8,T.forEach((function(t){Object(s.select)(t).attr("transform","translate( "+-u/2+", "+(-1*l/2+f)+")"),f+=_.height+4})),a.attr("class","outer title-state").attr("x",-u/2-r).attr("y",-l/2-r).attr("width",u+e.padding).attr("height",l+e.padding),Ce(e,a),e.intersect=function(t){return Ve.rect(e,t)},i}},bn={},xn=function(t){var e=bn[t.id];f.trace("Transforming node",t,"translate("+(t.x-t.width/2-5)+", "+(t.y-t.height/2-5)+")");t.clusterNode?e.attr("transform","translate("+(t.x-t.width/2-8)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")")},_n={rect:function(t,e){f.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(Ee(e.labelText,e.labelStyle,void 0,!0)),o=a.getBBox();if(xt().flowchart.htmlLabels){var c=a.children[0],u=Object(s.select)(a);o=c.getBoundingClientRect(),u.attr("width",o.width),u.attr("height",o.height)}var l=0*e.padding,h=l/2;f.trace("Data ",e,JSON.stringify(e)),r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h).attr("width",e.width+l).attr("height",e.height+l),i.attr("transform","translate("+(e.x-o.width/2)+", "+(e.y-e.height/2-e.padding/3+3)+")");var d=r.node().getBBox();return e.width=d.width,e.height=d.height,e.intersect=function(t){return We(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(Ee(e.labelText,e.labelStyle,void 0,!0)),c=o.getBBox();if(xt().flowchart.htmlLabels){var u=o.children[0],l=Object(s.select)(o);c=u.getBoundingClientRect(),l.attr("width",c.width),l.attr("height",c.height)}c=o.getBBox();var h=0*e.padding,f=h/2;r.attr("class","outer").attr("x",e.x-e.width/2-f).attr("y",e.y-e.height/2-f).attr("width",e.width+h).attr("height",e.height+h),a.attr("class","inner").attr("x",e.x-e.width/2-f).attr("y",e.y-e.height/2-f+c.height-1).attr("width",e.width+h).attr("height",e.height+h-c.height-3),i.attr("transform","translate("+(e.x-c.width/2)+", "+(e.y-e.height/2-e.padding/3+(xt().flowchart.htmlLabels?5:3))+")");var d=r.node().getBBox();return e.width=d.width,e.height=d.height,e.intersect=function(t){return We(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return We(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return We(e,t)},n}},kn={},wn={},En={},Tn=function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>=o||a>=s},Cn=function(t,e,n){f.warn("intersection calc o:",e," i:",n,t);var r=t.x,i=t.y,a=Math.abs(r-n.x),o=t.width/2,s=n.xMath.abs(r-e.x)*c){var y=n.y0&&f.info("Recursive edges",n.edge(n.edges()[0]));var c=o.insert("g").attr("class","clusters"),u=o.insert("g").attr("class","edgePaths"),l=o.insert("g").attr("class","edgeLabels"),h=o.insert("g").attr("class","nodes");return n.nodes().forEach((function(e){var o=n.node(e);if(void 0!==i){var s=JSON.parse(JSON.stringify(i.clusterData));f.info("Setting data for cluster XXX (",e,") ",s,i),n.setNode(i.id,s),n.parent(e)||(f.warn("Setting parent",e,i.id),n.setParent(e,i.id,s))}if(f.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),o&&o.clusterNode){f.info("Cluster identified",e,o,n.node(e));var c=t(h,o.graph,r,n.node(e));Ce(o,c),function(t,e){bn[e.id]=t}(c,o),f.warn("Recursive render complete",c,o)}else n.children(e).length>0?(f.info("Cluster - the non recursive path XXX",e,o.id,o,n),f.info(Be(o.id,n)),Ae[o.id]={id:Be(o.id,n),node:o}):(f.info("Node - the non recursive path",e,o.id,o),function(t,e,n){var r,i;e.link?(r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget||"_blank"),i=mn[e.shape](r,e,n)):r=i=mn[e.shape](t,e,n),e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),bn[e.id]=r,e.haveCallback&&bn[e.id].attr("class",bn[e.id].attr("class")+" clickable")}(h,n.node(e),a))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);f.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),f.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),f.info("Fix",Ae,"ids:",t.v,t.w,"Translateing: ",Ae[t.v],Ae[t.w]),function(t,e){var n=Ee(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a=n.getBBox();if(xt().flowchart.htmlLabels){var o=n.children[0],c=Object(s.select)(n);a=o.getBoundingClientRect(),c.attr("width",a.width),c.attr("height",a.height)}if(i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),wn[e.id]=r,e.width=a.width,e.height=a.height,e.startLabelLeft){var u=Ee(e.startLabelLeft,e.labelStyle),l=t.insert("g").attr("class","edgeTerminals"),h=l.insert("g").attr("class","inner");h.node().appendChild(u);var f=u.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),En[e.id]||(En[e.id]={}),En[e.id].startLeft=l}if(e.startLabelRight){var d=Ee(e.startLabelRight,e.labelStyle),p=t.insert("g").attr("class","edgeTerminals"),g=p.insert("g").attr("class","inner");p.node().appendChild(d),g.node().appendChild(d);var y=d.getBBox();g.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),En[e.id]||(En[e.id]={}),En[e.id].startRight=p}if(e.endLabelLeft){var v=Ee(e.endLabelLeft,e.labelStyle),m=t.insert("g").attr("class","edgeTerminals"),b=m.insert("g").attr("class","inner");b.node().appendChild(v);var x=v.getBBox();b.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),m.node().appendChild(v),En[e.id]||(En[e.id]={}),En[e.id].endLeft=m}if(e.endLabelRight){var _=Ee(e.endLabelRight,e.labelStyle),k=t.insert("g").attr("class","edgeTerminals"),w=k.insert("g").attr("class","inner");w.node().appendChild(_);var E=_.getBBox();w.attr("transform","translate("+-E.width/2+", "+-E.height/2+")"),k.node().appendChild(_),En[e.id]||(En[e.id]={}),En[e.id].endRight=k}}(l,e)})),n.edges().forEach((function(t){f.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),f.info("#############################################"),f.info("### Layout ###"),f.info("#############################################"),f.info(n),_e.a.layout(n),f.info("Graph after layout:",H.a.json.write(n)),Ie(n).forEach((function(t){var e=n.node(t);f.info("Position "+t+": "+JSON.stringify(n.node(t))),f.info("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?xn(e):n.children(t).length>0?(!function(t,e){f.trace("Inserting cluster");var n=e.shape||"rect";kn[e.id]=_n[n](t,e)}(c,e),Ae[e.id].node=e):xn(e)})),n.edges().forEach((function(t){var e=n.edge(t);f.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e);var i=function(t,e,n,r,i,a){var o=n.points,c=!1,u=a.node(e.v),l=a.node(e.w);if(l.intersect&&u.intersect&&((o=o.slice(1,n.points.length-1)).unshift(u.intersect(o[0])),f.info("Last point",o[o.length-1],l,l.intersect(o[o.length-1])),o.push(l.intersect(o[o.length-1]))),n.toCluster){var h;f.trace("edge",n),f.trace("to cluster",r[n.toCluster]),o=[];var d=!1;n.points.forEach((function(t){var e=r[n.toCluster].node;if(Tn(e,t)||d)d||o.push(t);else{f.trace("inside",n.toCluster,t,h);var i=Cn(e,h,t),a=!1;o.forEach((function(t){a=a||t.x===i.x&&t.y===i.y})),o.find((function(t){return t.x===i.x&&t.y===i.y}))?f.warn("no intersect",i,o):o.push(i),d=!0}h=t})),c=!0}if(n.fromCluster){f.trace("edge",n),f.warn("from cluster",r[n.fromCluster]);for(var p,g=[],y=!1,v=o.length-1;v>=0;v--){var m=o[v],b=r[n.fromCluster].node;if(Tn(b,m)||y)f.trace("Outside point",m),y||g.unshift(m);else{f.warn("inside",n.fromCluster,m,b);var x=Cn(b,p,m);g.unshift(x),y=!0}p=m}o=g,c=!0}var _,k=o.filter((function(t){return!Number.isNaN(t.y)})),w=Object(s.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(s.curveBasis);switch(n.thickness){case"normal":_="edge-thickness-normal";break;case"thick":_="edge-thickness-thick";break;default:_=""}switch(n.pattern){case"solid":_+=" edge-pattern-solid";break;case"dotted":_+=" edge-pattern-dotted";break;case"dashed":_+=" edge-pattern-dashed"}var E=t.append("path").attr("d",w(k)).attr("id",n.id).attr("class"," "+_+(n.classes?" "+n.classes:"")).attr("style",n.style),T="";switch(xt().state.arrowMarkerAbsolute&&(T=(T=(T=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),f.info("arrowTypeStart",n.arrowTypeStart),f.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":E.attr("marker-start","url("+T+"#"+i+"-crossStart)");break;case"arrow_point":E.attr("marker-start","url("+T+"#"+i+"-pointStart)");break;case"arrow_barb":E.attr("marker-start","url("+T+"#"+i+"-barbStart)");break;case"arrow_circle":E.attr("marker-start","url("+T+"#"+i+"-circleStart)");break;case"aggregation":E.attr("marker-start","url("+T+"#"+i+"-aggregationStart)");break;case"extension":E.attr("marker-start","url("+T+"#"+i+"-extensionStart)");break;case"composition":E.attr("marker-start","url("+T+"#"+i+"-compositionStart)");break;case"dependency":E.attr("marker-start","url("+T+"#"+i+"-dependencyStart)")}switch(n.arrowTypeEnd){case"arrow_cross":E.attr("marker-end","url("+T+"#"+i+"-crossEnd)");break;case"arrow_point":E.attr("marker-end","url("+T+"#"+i+"-pointEnd)");break;case"arrow_barb":E.attr("marker-end","url("+T+"#"+i+"-barbEnd)");break;case"arrow_circle":E.attr("marker-end","url("+T+"#"+i+"-circleEnd)");break;case"aggregation":E.attr("marker-end","url("+T+"#"+i+"-aggregationEnd)");break;case"extension":E.attr("marker-end","url("+T+"#"+i+"-extensionEnd)");break;case"composition":E.attr("marker-end","url("+T+"#"+i+"-compositionEnd)");break;case"dependency":E.attr("marker-end","url("+T+"#"+i+"-dependencyEnd)")}var C={};return c&&(C.updatedPath=o),C.originalPath=n.points,C}(u,t,e,Ae,r,n);!function(t,e){f.info("Moving label",t.id,t.label,wn[t.id]);var n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){var r=wn[t.id],i=t.x,a=t.y;if(n){var o=W.calcLabelPosition(n);f.info("Moving label from (",i,",",a,") to (",o.x,",",o.y,")")}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){var s=En[t.id].startLeft,c=t.x,u=t.y;if(n){var l=W.calcTerminalLabelPosition(0,"start_left",n);c=l.x,u=l.y}s.attr("transform","translate("+c+", "+u+")")}if(t.startLabelRight){var h=En[t.id].startRight,d=t.x,p=t.y;if(n){var g=W.calcTerminalLabelPosition(0,"start_right",n);d=g.x,p=g.y}h.attr("transform","translate("+d+", "+p+")")}if(t.endLabelLeft){var y=En[t.id].endLeft,v=t.x,m=t.y;if(n){var b=W.calcTerminalLabelPosition(0,"end_left",n);v=b.x,m=b.y}y.attr("transform","translate("+v+", "+m+")")}if(t.endLabelRight){var x=En[t.id].endRight,_=t.x,k=t.y;if(n){var w=W.calcTerminalLabelPosition(0,"end_right",n);_=w.x,k=w.y}x.attr("transform","translate("+_+", "+k+")")}}(e,i)})),o},An=function(t,e,n,r,i){we(t,n,r,i),bn={},wn={},En={},kn={},Me={},Oe={},Ae={},f.warn("Graph at first:",H.a.json.write(e)),Fe(e),f.warn("Graph after:",H.a.json.write(e)),Sn(t,e,r)},Mn={},On=function(t,e,n){var r=Object(s.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=N(i.styles),c=void 0!==i.text?i.text:i.id;if(xt().flowchart.htmlLabels){var u={label:c.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=te()(r,u).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var h=c.split(x.lineBreakRegex),d=0;d=0;h--)i=l[h],f.info("Subgraph - ",i),qt.addVertex(i.id,i.title,"group",void 0,i.classes);var d=qt.getVertices(),p=qt.getEdges();f.info(p);var g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(s.selectAll)("cluster").append("text");for(var y=0;y0)switch(e.valign){case"top":case"start":s=function(){return Math.round(e.y+e.textMargin)};break;case"middle":case"center":s=function(){return Math.round(e.y+(n+r+e.textMargin)/2)};break;case"bottom":case"end":s=function(){return Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="text-after-edge",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="text-before-edge",e.alignmentBaseline="middle"}for(var c=0;c0&&(r+=(l._groups||l)[0][0].getBBox().height,n=r),a.push(l)}return a},Pn=function(t,e){var n,r,i,a,o,s=t.append("polygon");return s.attr("points",(n=e.x,r=e.y,i=e.width,a=e.height,n+","+r+" "+(n+i)+","+r+" "+(n+i)+","+(r+a-(o=7))+" "+(n+i-1.2*o)+","+(r+a)+" "+n+","+(r+a))),s.attr("class","labelBox"),e.y=e.y+e.height/2,Fn(t,e),s},In=-1,jn=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},Rn=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Yn=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c){for(var u=c.actorFontSize,l=c.actorFontFamily,h=c.actorFontWeight,f=t.split(x.lineBreakRegex),d=0;d2&&void 0!==arguments[2]?arguments[2]:{text:void 0,wrap:void 0},r=arguments.length>3?arguments[3]:void 0;if(r===nr.ACTIVE_END){var i=Kn(t.actor);if(i<1){var a=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw a.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return Hn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&er()||!!n.wrap,type:r}),!0},er=function(){return Jn},nr={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23},rr=function(t,e,n){var r={actor:t,placement:e,message:n.text,wrap:void 0===n.wrap&&er()||!!n.wrap},i=[].concat(t,t);Gn.push(r),Hn.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&er()||!!n.wrap,type:nr.NOTE,placement:e})},ir=function(t){qn=t.text,Xn=void 0===t.wrap&&er()||!!t.wrap},ar={addActor:Qn,addMessage:function(t,e,n,r){Hn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&er()||!!n.wrap,answer:r})},addSignal:tr,autoWrap:er,setWrap:function(t){Jn=t},enableSequenceNumbers:function(){Zn=!0},showSequenceNumbers:function(){return Zn},getMessages:function(){return Hn},getActors:function(){return Vn},getActor:function(t){return Vn[t]},getActorKeys:function(){return Object.keys(Vn)},getTitle:function(){return qn},parseDirective:function(t,e,n){$o.parseDirective(this,t,e,n)},getConfig:function(){return xt().sequence},getTitleWrapped:function(){return Xn},clear:function(){Vn={},Hn=[]},parseMessage:function(t){var e=t.trim(),n={text:e.replace(/^[:]?(?:no)?wrap:/,"").trim(),wrap:null===e.match(/^[:]?(?:no)?wrap:/)?x.hasBreaks(e)||void 0:null!==e.match(/^[:]?wrap:/)||null===e.match(/^[:]?nowrap:/)&&void 0};return f.debug("parseMessage:",n),n},LINETYPE:nr,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:rr,setTitle:ir,apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"addActor":Qn(e.actor,e.actor,e.description);break;case"activeStart":case"activeEnd":tr(e.actor,void 0,void 0,e.signalType);break;case"addNote":rr(e.actor,e.placement,e.text);break;case"addMessage":tr(e.from,e.to,e.msg,e.signalType);break;case"loopStart":tr(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":tr(void 0,void 0,void 0,e.signalType);break;case"rectStart":tr(void 0,void 0,e.color,e.signalType);break;case"rectEnd":tr(void 0,void 0,void 0,e.signalType);break;case"optStart":tr(void 0,void 0,e.optText,e.signalType);break;case"optEnd":tr(void 0,void 0,void 0,e.signalType);break;case"altStart":case"else":tr(void 0,void 0,e.altText,e.signalType);break;case"altEnd":tr(void 0,void 0,void 0,e.signalType);break;case"setTitle":ir(e.text);break;case"parStart":case"and":tr(void 0,void 0,e.parText,e.signalType);break;case"parEnd":tr(void 0,void 0,void 0,e.signalType)}}};Un.parser.yy=ar;var or={},sr={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((function(t){return t.height||0})))+(0===this.loops.length?0:this.loops.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.messages.length?0:this.messages.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.notes.length?0:this.notes.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,fr(Un.parser.yy.getConfig())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=this,a=0;function o(o){return function(s){a++;var c=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-c*or.boxMargin,Math.min),i.updateVal(s,"stopy",r+c*or.boxMargin,Math.max),i.updateVal(sr.data,"startx",t-c*or.boxMargin,Math.min),i.updateVal(sr.data,"stopx",n+c*or.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-c*or.boxMargin,Math.min),i.updateVal(s,"stopx",n+c*or.boxMargin,Math.max),i.updateVal(sr.data,"starty",e-c*or.boxMargin,Math.min),i.updateVal(sr.data,"stopy",r+c*or.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(sr.data,"startx",i,Math.min),this.updateVal(sr.data,"starty",o,Math.min),this.updateVal(sr.data,"stopx",a,Math.max),this.updateVal(sr.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e,n){var r=n[t.from.actor],i=dr(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*or.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+or.activationWidth,stopy:void 0,actor:t.from.actor,anchored:zn.anchorElement(e)})},endActivation:function(t){var e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:sr.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},cr=function(t){return{fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}},ur=function(t){return{fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}},lr=function(t){return{fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}},hr=function(t,e,n,r){for(var i=0,a=0,o=0;o0&&o.forEach((function(r){if(n=r,i.startx===i.stopx){var a=e[t.from],o=e[t.to];n.from=Math.min(a.x-i.width/2,a.x-a.width/2,n.from),n.to=Math.max(o.x+i.width/2,o.x+a.width/2,n.to),n.width=Math.max(n.width,Math.abs(n.to-n.from))-or.labelBoxWidth}else n.from=Math.min(i.startx,n.from),n.to=Math.max(i.stopx,n.to),n.width=Math.max(n.width,i.width)-or.labelBoxWidth})))})),sr.activations=[],f.debug("Loop type widths:",a),a},br={bounds:sr,drawActors:hr,setConf:fr,draw:function(t,e){or=xt().sequence,Un.parser.yy.clear(),Un.parser.yy.setWrap(or.wrap),Un.parser.parse(t+"\n"),sr.init(),f.debug("C:".concat(JSON.stringify(or,null,2)));var n=Object(s.select)('[id="'.concat(e,'"]')),r=Un.parser.yy.getActors(),i=Un.parser.yy.getActorKeys(),a=Un.parser.yy.getMessages(),o=Un.parser.yy.getTitle(),c=yr(r,a);or.height=vr(r,c),hr(n,r,i,0);var u=mr(a,r,c);zn.insertArrowHead(n),zn.insertArrowCrossHead(n),zn.insertSequenceNumber(n);var l=1;a.forEach((function(t){var e,i,a;switch(t.type){case Un.parser.yy.LINETYPE.NOTE:i=t.noteModel,function(t,e){sr.bumpVerticalPos(or.boxMargin),e.height=or.boxMargin,e.starty=sr.getVerticalPos();var n=zn.getNoteRect();n.x=e.startx,n.y=e.starty,n.width=e.width||or.width,n.class="note";var r=t.append("g"),i=zn.drawRect(r,n),a=zn.getTextObj();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=or.noteFontFamily,a.fontSize=or.noteFontSize,a.fontWeight=or.noteFontWeight,a.anchor=or.noteAlign,a.textMargin=or.noteMargin,a.valign=or.noteAlign,a.wrap=!0;var o=Fn(r,a),s=Math.round(o.map((function(t){return(t._groups||t)[0][0].getBBox().height})).reduce((function(t,e){return t+e})));i.attr("height",s+2*or.noteMargin),e.height+=s+2*or.noteMargin,sr.bumpVerticalPos(s+2*or.noteMargin),e.stopy=e.starty+s+2*or.noteMargin,e.stopx=e.startx+n.width,sr.insert(e.startx,e.starty,e.stopx,e.stopy),sr.models.addNote(e)}(n,i);break;case Un.parser.yy.LINETYPE.ACTIVE_START:sr.newActivation(t,n,r);break;case Un.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){var r=sr.endActivation(t);r.starty+18>e&&(r.starty=e-6,e+=12),zn.drawActivation(n,r,e,or,dr(t.from.actor).length),sr.insert(r.startx,e-10,r.stopx,e)}(t,sr.getVerticalPos());break;case Un.parser.yy.LINETYPE.LOOP_START:gr(u,t,or.boxMargin,or.boxMargin+or.boxTextMargin,(function(t){return sr.newLoop(t)}));break;case Un.parser.yy.LINETYPE.LOOP_END:e=sr.endLoop(),zn.drawLoop(n,e,"loop",or),sr.bumpVerticalPos(e.stopy-sr.getVerticalPos()),sr.models.addLoop(e);break;case Un.parser.yy.LINETYPE.RECT_START:gr(u,t,or.boxMargin,or.boxMargin,(function(t){return sr.newLoop(void 0,t.message)}));break;case Un.parser.yy.LINETYPE.RECT_END:e=sr.endLoop(),zn.drawBackgroundRect(n,e),sr.models.addLoop(e),sr.bumpVerticalPos(e.stopy-sr.getVerticalPos());break;case Un.parser.yy.LINETYPE.OPT_START:gr(u,t,or.boxMargin,or.boxMargin+or.boxTextMargin,(function(t){return sr.newLoop(t)}));break;case Un.parser.yy.LINETYPE.OPT_END:e=sr.endLoop(),zn.drawLoop(n,e,"opt",or),sr.bumpVerticalPos(e.stopy-sr.getVerticalPos()),sr.models.addLoop(e);break;case Un.parser.yy.LINETYPE.ALT_START:gr(u,t,or.boxMargin,or.boxMargin+or.boxTextMargin,(function(t){return sr.newLoop(t)}));break;case Un.parser.yy.LINETYPE.ALT_ELSE:gr(u,t,or.boxMargin+or.boxTextMargin,or.boxMargin,(function(t){return sr.addSectionToLoop(t)}));break;case Un.parser.yy.LINETYPE.ALT_END:e=sr.endLoop(),zn.drawLoop(n,e,"alt",or),sr.bumpVerticalPos(e.stopy-sr.getVerticalPos()),sr.models.addLoop(e);break;case Un.parser.yy.LINETYPE.PAR_START:gr(u,t,or.boxMargin,or.boxMargin+or.boxTextMargin,(function(t){return sr.newLoop(t)}));break;case Un.parser.yy.LINETYPE.PAR_AND:gr(u,t,or.boxMargin+or.boxTextMargin,or.boxMargin,(function(t){return sr.addSectionToLoop(t)}));break;case Un.parser.yy.LINETYPE.PAR_END:e=sr.endLoop(),zn.drawLoop(n,e,"par",or),sr.bumpVerticalPos(e.stopy-sr.getVerticalPos()),sr.models.addLoop(e);break;default:try{(a=t.msgModel).starty=sr.getVerticalPos(),a.sequenceIndex=l,function(t,e){sr.bumpVerticalPos(10);var n=e.startx,r=e.stopx,i=e.starty,a=e.message,o=e.type,s=e.sequenceIndex,c=e.wrap,u=x.splitBreaks(a).length,l=W.calculateTextDimensions(a,cr(or)),h=l.height/u;e.height+=h,sr.bumpVerticalPos(h);var f=zn.getTextObj();f.x=n,f.y=i+10,f.width=r-n,f.class="messageText",f.dy="1em",f.text=a,f.fontFamily=or.messageFontFamily,f.fontSize=or.messageFontSize,f.fontWeight=or.messageFontWeight,f.anchor=or.messageAlign,f.valign=or.messageAlign,f.textMargin=or.wrapPadding,f.tspan=!1,f.wrap=c,Fn(t,f);var d,p,g=l.height-10,y=l.width;if(n===r){p=sr.getVerticalPos()+g,or.rightAngles?d=t.append("path").attr("d","M ".concat(n,",").concat(p," H ").concat(n+Math.max(or.width/2,y/2)," V ").concat(p+25," H ").concat(n)):(g+=or.boxMargin,p=sr.getVerticalPos()+g,d=t.append("path").attr("d","M "+n+","+p+" C "+(n+60)+","+(p-10)+" "+(n+60)+","+(p+30)+" "+n+","+(p+20))),g+=30;var v=Math.max(y/2,or.width/2);sr.insert(n-v,sr.getVerticalPos()-10+g,r+v,sr.getVerticalPos()+30+g)}else g+=or.boxMargin,p=sr.getVerticalPos()+g,(d=t.append("line")).attr("x1",n),d.attr("y1",p),d.attr("x2",r),d.attr("y2",p),sr.insert(n,p-10,r,p);o===Un.parser.yy.LINETYPE.DOTTED||o===Un.parser.yy.LINETYPE.DOTTED_CROSS||o===Un.parser.yy.LINETYPE.DOTTED_OPEN?(d.style("stroke-dasharray","3, 3"),d.attr("class","messageLine1")):d.attr("class","messageLine0");var m="";or.arrowMarkerAbsolute&&(m=(m=(m=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),d.attr("stroke-width",2),d.attr("stroke","none"),d.style("fill","none"),o!==Un.parser.yy.LINETYPE.SOLID&&o!==Un.parser.yy.LINETYPE.DOTTED||d.attr("marker-end","url("+m+"#arrowhead)"),o!==Un.parser.yy.LINETYPE.SOLID_CROSS&&o!==Un.parser.yy.LINETYPE.DOTTED_CROSS||d.attr("marker-end","url("+m+"#crosshead)"),(ar.showSequenceNumbers()||or.showSequenceNumbers)&&(d.attr("marker-start","url("+m+"#sequencenumber)"),t.append("text").attr("x",n).attr("y",p+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(s)),sr.bumpVerticalPos(g),e.height+=g,e.stopy=e.starty+e.height,sr.insert(e.fromBounds,e.starty,e.toBounds,e.stopy)}(n,a),sr.models.addMessage(a)}catch(t){f.error("error while drawing message",t)}}[Un.parser.yy.LINETYPE.SOLID_OPEN,Un.parser.yy.LINETYPE.DOTTED_OPEN,Un.parser.yy.LINETYPE.SOLID,Un.parser.yy.LINETYPE.DOTTED,Un.parser.yy.LINETYPE.SOLID_CROSS,Un.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type)&&l++})),or.mirrorActors&&(sr.bumpVerticalPos(2*or.boxMargin),hr(n,r,i,sr.getVerticalPos()));var h=sr.getBounds().bounds;f.debug("For line height fix Querying: #"+e+" .actor-line"),Object(s.selectAll)("#"+e+" .actor-line").attr("y2",h.stopy);var d=h.stopy-h.starty+2*or.diagramMarginY;or.mirrorActors&&(d=d-or.boxMargin+or.bottomMarginAdj);var p=h.stopx-h.startx+2*or.diagramMarginX;o&&n.append("text").text(o).attr("x",(h.stopx-h.startx)/2-2*or.diagramMarginX).attr("y",-25),$(n,d,p,or.useMaxWidth);var g=o?40:0;n.attr("viewBox",h.startx-or.diagramMarginX+" -"+(or.diagramMarginY+g)+" "+p+" "+(d+g)),f.debug("models:",sr.models)}},xr=n(27),_r=n.n(xr);function kr(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},jr=function(t,e,n){if(n.length&&!t.manualEndTime){var r=l()(t.startTime,e,!0);r.add(1,"d");var i=l()(t.endTime,e,!0),a=Rr(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a}},Rr=function(t,e,n,r){for(var i=!1,a=null;t<=e;)i||(a=e.toDate()),(i=Ir(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},Yr=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var i=null;if(r[1].split(" ").forEach((function(t){var e=Gr(t);void 0!==e&&(i?e.endTime>i.endTime&&(i=e):i=e)})),i)return i.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var o=l()(n,e.trim(),!0);return o.isValid()?o.toDate():(f.debug("Invalid date:"+n),f.debug("With date format:"+e.trim()),new Date)},zr=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},Ur=function(t,e,n,r){r=r||!1,n=n.trim();var i=l()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):zr(/^([\d]+)([wdhms])/.exec(n.trim()),l()(t))},$r=0,Wr=function(t){return void 0===t?"task"+($r+=1):t},Vr=[],Hr={},Gr=function(t){var e=Hr[t];return Vr[e]},qr=function(){for(var t=function(t){var e=Vr[t],n="";switch(Vr[t].raw.startTime.type){case"prevTaskEnd":var r=Gr(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=Yr(0,Tr,Vr[t].raw.startTime.startData))&&(Vr[t].startTime=n)}return Vr[t].startTime&&(Vr[t].endTime=Ur(Vr[t].startTime,Tr,Vr[t].raw.endTime.data,Fr),Vr[t].endTime&&(Vr[t].processed=!0,Vr[t].manualEndTime=l()(Vr[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),jr(Vr[t],Tr,Ar))),Vr[t].processed},e=!0,n=0;nr?i=1:n0&&(e=t.classes.join(" "));for(var n=0,r=0;rn-e?n+a+1.5*ti.leftPadding>u?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return t.order*e+ti.barHeight/2+(ti.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){var e=o(t.startTime),n=o(t.endTime);t.milestone&&(n=e+i);var r=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var s=0,l=0;ln-e?n+r+1.5*ti.leftPadding>u?a+" taskTextOutsideLeft taskTextOutside"+s+" "+h:a+" taskTextOutsideRight taskTextOutside"+s+" "+h+" width-"+r:a+" taskText taskText"+s+" "+h+" width-"+r}))}(t,i,u,f,r,0,e),function(t,e){for(var n=[],r=0,i=0;i0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(var o=0;o "+t.w+": "+JSON.stringify(i.edge(t))),yn(r,i.edge(t),i.edge(t).relation,oi))}));var h=r.node().getBBox(),d=h.width+40,p=h.height+40;$(r,p,d,oi.useMaxWidth);var g="".concat(h.x-20," ").concat(h.y-20," ").concat(d," ").concat(p);f.debug("viewBox ".concat(g)),r.attr("viewBox",g)};ri.parser.yy=on;var li={dividerMargin:10,padding:5,textHeight:10},hi=function(t){Object.keys(t).forEach((function(e){li[e]=t[e]}))},fi=function(t,e){f.info("Drawing class"),on.clear(),ri.parser.parse(t);var n=xt().flowchart;f.info("config:",n);var r=n.nodeSpacing||50,i=n.rankSpacing||50,a=new H.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TD",nodesep:r,ranksep:i,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),o=on.getClasses(),c=on.getRelations();f.info(c),function(t,e){var n=Object.keys(t);f.info("keys:",n),f.info(t),n.forEach((function(n){var r=t[n],i="";r.cssClasses.length>0&&(i=i+" "+r.cssClasses.join(" "));var a={labelStyle:""},o=void 0!==r.text?r.text:r.id,s="";switch(r.type){case"class":s="class_box";break;default:s="class_box"}e.setNode(r.id,{labelStyle:a.labelStyle,shape:s,labelText:o,classData:r,rx:0,ry:0,class:i,style:a.style,id:r.id,domId:r.domId,haveCallback:r.haveCallback,link:r.link,width:"group"===r.type?500:void 0,type:r.type,padding:xt().flowchart.padding}),f.info("setNode",{labelStyle:a.labelStyle,shape:s,labelText:o,rx:0,ry:0,class:i,style:a.style,id:r.id,width:"group"===r.type?500:void 0,type:r.type,padding:xt().flowchart.padding})}))}(o,a),function(t,e){var n=0;t.forEach((function(r){n++;var i={classes:"relation"};i.pattern=1==r.relation.lineType?"dashed":"solid",i.id="id"+n,"arrow_open"===r.type?i.arrowhead="none":i.arrowhead="normal",f.info(i,r),i.startLabelRight="none"===r.relationTitle1?"":r.relationTitle1,i.endLabelLeft="none"===r.relationTitle2?"":r.relationTitle2,i.arrowTypeStart=di(r.relation.type1),i.arrowTypeEnd=di(r.relation.type2);var a="",o="";if(void 0!==r.style){var c=N(r.style);a=c.style,o=c.labelStyle}else a="fill:none";i.style=a,i.labelStyle=o,void 0!==r.interpolate?i.curve=O(r.interpolate,s.curveLinear):void 0!==t.defaultInterpolate?i.curve=O(t.defaultInterpolate,s.curveLinear):i.curve=O(li.curve,s.curveLinear),r.text=r.title,void 0===r.text?void 0!==r.style&&(i.arrowheadStyle="fill: #333"):(i.arrowheadStyle="fill: #333",i.labelpos="c",xt().flowchart.htmlLabels,i.labelType="text",i.label=r.text.replace(x.lineBreakRegex,"\n"),void 0===r.style&&(i.style=i.style||"stroke: #333; stroke-width: 1.5px;fill:none"),i.labelStyle=i.labelStyle.replace("color:","fill:")),e.setEdge(r.id1,r.id2,i,n)}))}(c,a);var u=Object(s.select)('[id="'.concat(e,'"]'));u.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var l=Object(s.select)("#"+e+" g");An(l,a,["aggregation","extension","composition","dependency"],"classDiagram",e);var h=u.node().getBBox(),d=h.width+16,p=h.height+16;if(f.debug("new ViewBox 0 0 ".concat(d," ").concat(p),"translate(".concat(8-a._label.marginx,", ").concat(8-a._label.marginy,")")),$(u,p,d,n.useMaxWidth),u.attr("viewBox","0 0 ".concat(d," ").concat(p)),u.select("g").attr("transform","translate(".concat(8-a._label.marginx,", ").concat(8-h.y,")")),!n.htmlLabels)for(var g=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),y=0;y0&&o.length>0){var c={stmt:"state",id:L(),type:"divider",doc:yi(o)};i.push(yi(c)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}}({id:"root"},{id:"root",doc:vi},!0),{id:"root",doc:vi}},extract:function(t){var e;e=t.doc?t.doc:t,f.info(e),ki(),f.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&_i(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&wi(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()}},Ai=n(22),Mi=n.n(Ai),Oi={},Di=function(t,e){Oi[t]=e},Ni=function(t,e){var n=t.append("text").attr("x",2*xt().state.padding).attr("y",xt().state.textHeight+1.3*xt().state.padding).attr("font-size",xt().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",xt().state.padding).attr("y",r+.4*xt().state.padding+xt().state.dividerMargin+xt().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){var r=t.append("tspan").attr("x",2*xt().state.padding).text(e);n||r.attr("dy",xt().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",xt().state.padding).attr("y1",xt().state.padding+r+xt().state.dividerMargin/2).attr("y2",xt().state.padding+r+xt().state.dividerMargin/2).attr("class","descr-divider"),c=i.node().getBBox(),u=Math.max(c.width,n.width);return s.attr("x2",u+3*xt().state.padding),t.insert("rect",":first-child").attr("x",xt().state.padding).attr("y",xt().state.padding).attr("width",u+2*xt().state.padding).attr("height",c.height+r+2*xt().state.padding).attr("rx",xt().state.radius),t},Bi=function(t,e,n){var r,i=xt().state.padding,a=2*xt().state.padding,o=t.node().getBBox(),s=o.width,c=o.x,u=t.append("text").attr("x",0).attr("y",xt().state.titleShift).attr("font-size",xt().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+a,h=Math.max(l,s);h===s&&(h+=a);var f=t.node().getBBox();e.doc,r=c-i,l>s&&(r=(s-h)/2+i),Math.abs(c-f.x)s&&(r=c-(l-s)/2);var d=1-xt().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",d).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",f.height+xt().state.textHeight+xt().state.titleShift+1).attr("rx","0"),u.attr("x",r+i),l<=s&&u.attr("x",c+(h-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",xt().state.titleShift-xt().state.textHeight-xt().state.padding).attr("width",h).attr("height",3*xt().state.textHeight).attr("rx",xt().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",xt().state.titleShift-xt().state.textHeight-xt().state.padding).attr("width",h).attr("height",f.height+3+2*xt().state.textHeight).attr("rx",xt().state.radius),t},Li=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",xt().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o=t.replace(/\r\n/g,"
"),s=(o=o.replace(/\n/g,"
")).split(x.lineBreakRegex),c=1.25*xt().state.noteMargin,u=!0,l=!1,h=void 0;try{for(var f,d=s[Symbol.iterator]();!(u=(f=d.next()).done);u=!0){var p=f.value.trim();if(p.length>0){var g=a.append("tspan");if(g.text(p),0===c)c+=g.node().getBBox().height;i+=c,g.attr("x",e+xt().state.noteMargin),g.attr("y",n+i+1.25*xt().state.noteMargin)}}}catch(t){l=!0,h=t}finally{try{u||null==d.return||d.return()}finally{if(l)throw h}}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*xt().state.noteMargin),n.attr("width",i+2*xt().state.noteMargin),n},Fi=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").attr("class","start-state").attr("r",xt().state.sizeUnit).attr("cx",xt().state.padding+xt().state.sizeUnit).attr("cy",xt().state.padding+xt().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").attr("class","end-state-outer").attr("r",xt().state.sizeUnit+xt().state.miniPadding).attr("cx",xt().state.padding+xt().state.sizeUnit+xt().state.miniPadding).attr("cy",xt().state.padding+xt().state.sizeUnit+xt().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",xt().state.sizeUnit).attr("cx",xt().state.padding+xt().state.sizeUnit+2).attr("cy",xt().state.padding+xt().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=xt().state.forkWidth,r=xt().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",xt().state.padding).attr("y",xt().state.padding)}(i,e),"note"===e.type&&Li(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",xt().state.textHeight).attr("class","divider").attr("x2",2*xt().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*xt().state.padding).attr("y",xt().state.textHeight+2*xt().state.padding).attr("font-size",xt().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",xt().state.padding).attr("y",xt().state.padding).attr("width",r.width+2*xt().state.padding).attr("height",r.height+2*xt().state.padding).attr("rx",xt().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&Ni(i,e);var a=i.node().getBBox();return r.width=a.width+2*xt().state.padding,r.height=a.height+2*xt().state.padding,Di(n,r),r},Pi=0;Ai.parser.yy=Si;var Ii={},ji=function t(e,n,r,i){var a,o=new H.a.Graph({compound:!0,multigraph:!0}),c=!0;for(a=0;a "+t.w+": "+JSON.stringify(o.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Object(s.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(s.curveBasis),a=t.append("path").attr("d",i(r)).attr("id","edge"+Pi).attr("class","transition"),o="";if(xt().state.arrowMarkerAbsolute&&(o=(o=(o=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),a.attr("marker-end","url("+o+"#"+function(t){switch(t){case Si.relationType.AGGREGATION:return"aggregation";case Si.relationType.EXTENSION:return"extension";case Si.relationType.COMPOSITION:return"composition";case Si.relationType.DEPENDENCY:return"dependency"}}(Si.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var c=t.append("g").attr("class","stateLabel"),u=W.calcLabelPosition(e.points),l=u.x,h=u.y,d=x.getRows(n.title),p=0,g=[],y=0,v=0,m=0;m<=d.length;m++){var b=c.append("text").attr("text-anchor","middle").text(d[m]).attr("x",l).attr("y",h+p),_=b.node().getBBox();if(y=Math.max(y,_.width),v=Math.min(v,_.x),f.info(_.x,l,h+p),0===p){var k=b.node().getBBox();p=k.height,f.info("Title height",p,h)}g.push(b)}var w=p*d.length;if(d.length>1){var E=(d.length-1)*p*.5;g.forEach((function(t,e){return t.attr("y",h+e*p-E)})),w=p*d.length}var T=c.node().getBBox();c.insert("rect",":first-child").attr("class","box").attr("x",l-y/2-xt().state.padding/2).attr("y",h-w/2-xt().state.padding/2-3.5).attr("width",y+xt().state.padding).attr("height",w+xt().state.padding),f.info(T)}Pi++}(n,o.edge(t),o.edge(t).relation))})),w=k.getBBox();var E={id:r||"root",label:r||"root",width:0,height:0};return E.width=w.width+2*gi.padding,E.height=w.height+2*gi.padding,f.debug("Doc rendered",E,o),E},Ri=function(){},Yi=function(t,e){gi=xt().state,Ai.parser.yy.clear(),Ai.parser.parse(t),f.debug("Rendering diagram "+t);var n=Object(s.select)("[id='".concat(e,"']"));n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new H.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var r=Si.getRootDoc();ji(r,n,void 0,!1);var i=gi.padding,a=n.node().getBBox(),o=a.width+2*i,c=a.height+2*i;$(n,c,1.75*o,gi.useMaxWidth),n.attr("viewBox","".concat(a.x-gi.padding," ").concat(a.y-gi.padding," ")+o+" "+c)},zi={},Ui={},$i=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),Ui[n.id]||(Ui[n.id]={id:n.id,shape:i,description:n.id,classes:"statediagram-state"}),n.description&&(Array.isArray(Ui[n.id].description)?(Ui[n.id].shape="rectWithTitle",Ui[n.id].description.push(n.description)):Ui[n.id].description.length>0?(Ui[n.id].shape="rectWithTitle",Ui[n.id].description===n.id?Ui[n.id].description=[n.description]:Ui[n.id].description=[Ui[n.id].description,n.description]):(Ui[n.id].shape="rect",Ui[n.id].description=n.description)),!Ui[n.id].type&&n.doc&&(f.info("Setting cluser for ",n.id),Ui[n.id].type="group",Ui[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",Ui[n.id].classes=Ui[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:Ui[n.id].shape,labelText:Ui[n.id].description,classes:Ui[n.id].classes,style:"",id:n.id,domId:"state-"+n.id+"-"+Wi,type:Ui[n.id].type,padding:15};if(n.note){var o={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note",domId:"state-"+n.id+"----note-"+Wi,type:Ui[n.id].type,padding:15},s={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:Ui[n.id].classes,style:"",id:n.id+"----parent",domId:"state-"+n.id+"----parent-"+Wi,type:"group",padding:0};Wi++,t.setNode(n.id+"----parent",s),t.setNode(o.id,o),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(o.id,n.id+"----parent");var c=n.id,u=o.id;"left of"===n.note.position&&(c=o.id,u=n.id),t.setEdge(c,u,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"transition note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(f.info("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(f.info("Adding nodes children "),Vi(t,n,n.doc,!r))},Wi=0,Vi=function(t,e,n,r){Wi=0,f.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)$i(t,e,n,r);else if("relation"===n.stmt){$i(t,e,n.state1,r),$i(t,e,n.state2,r);var i={id:"edge"+Wi,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:"fill:none",labelStyle:"",label:n.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal",classes:"transition"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,Wi),Wi++}}))},Hi=function(t){for(var e=Object.keys(t),n=0;ne.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,o=[n,e.id,e.seq];for(var s in Zi)Zi[s]===e.id&&o.push(s);if(f.debug(o.join(" ")),Array.isArray(e.parent)){var c=qi[e.parent[0]];ra(t,e,c),t.push(qi[e.parent[1]])}else{if(null==e.parent)return;var u=qi[e.parent];ra(t,e,u)}r=t,i=function(t){return t.id},a=Object.create(null),ia(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var aa,oa=function(){var t=Object.keys(qi).map((function(t){return qi[t]}));return t.forEach((function(t){f.debug(t.id)})),t.sort((function(t,e){return e.seq-t.seq})),t},sa={setDirection:function(t){Qi=t},setOptions:function(t){f.debug("options str",t),t=(t=t&&t.trim())||"{}";try{na=JSON.parse(t)}catch(t){f.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return na},commit:function(t){var e={id:ta(),message:t,seq:Ki++,parent:null==Xi?null:Xi.id};Xi=e,qi[e.id]=e,Zi[Ji]=e.id,f.debug("in pushCommit "+e.id)},branch:function(t){Zi[t]=null!=Xi?Xi.id:null,f.debug("in createBranch")},merge:function(t){var e=qi[Zi[Ji]],n=qi[Zi[t]];if(function(t,e){return t.seq>e.seq&&ea(e,t)}(e,n))f.debug("Already merged");else{if(ea(e,n))Zi[Ji]=Zi[t],Xi=qi[Zi[Ji]];else{var r={id:ta(),message:"merged branch "+t+" into "+Ji,seq:Ki++,parent:[null==Xi?null:Xi.id,Zi[t]]};Xi=r,qi[r.id]=r,Zi[Ji]=r.id}f.debug(Zi),f.debug("in mergeBranch")}},checkout:function(t){f.debug("in checkout");var e=Zi[Ji=t];Xi=qi[e]},reset:function(t){f.debug("in reset",t);var e=t.split(":")[0],n=parseInt(t.split(":")[1]),r="HEAD"===e?Xi:qi[Zi[e]];for(f.debug(r,n);n>0;)if(n--,!(r=qi[r.parent])){var i="Critical error - unique parent commit not found during reset";throw f.error(i),i}Xi=r,Zi[Ji]=r.id},prettyPrint:function(){f.debug(qi),ia([oa()[0]])},clear:function(){qi={},Zi={master:Xi=null},Ji="master",Ki=0},getBranchesAsObjArray:function(){var t=[];for(var e in Zi)t.push({name:e,commit:qi[Zi[e]]});return t},getBranches:function(){return Zi},getCommits:function(){return qi},getCommitsArray:oa,getCurrentBranch:function(){return Ji},getDirection:function(){return Qi},getHead:function(){return Xi}},ca=n(71),ua=n.n(ca),la={},ha={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},fa={};function da(t,e,n,r){var i=O(r,s.curveBasis),a=ha.branchColors[n%ha.branchColors.length],o=Object(s.line)().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",o(e)).style("stroke",a).style("stroke-width",ha.lineStrokeWidth).style("fill","none")}function pa(t,e){e=e||t.node().getBBox();var n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function ga(t,e,n,r,i){f.debug("svgDrawLineForCommits: ",e,n);var a=pa(t.select("#node-"+e+" circle")),o=pa(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>ha.nodeSpacing){var s={x:a.left-ha.nodeSpacing,y:o.top+o.height/2};da(t,[s,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),da(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-ha.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-ha.nodeSpacing/2,y:s.y},s],i)}else da(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-ha.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-ha.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>ha.nodeSpacing){var c={x:o.left+o.width/2,y:a.top+a.height+ha.nodeSpacing};da(t,[c,{x:o.left+o.width/2,y:o.top}],i,"linear"),da(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+ha.nodeSpacing/2},{x:o.left+o.width/2,y:c.y-ha.nodeSpacing/2},c],i)}else da(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+ha.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-ha.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function ya(t,e){return t.select(e).node().cloneNode(!0)}function va(t,e,n,r){var i,a=Object.keys(la).length;if("string"==typeof e)do{if(i=la[e],f.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;t.append((function(){return ya(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*ha.nodeSpacing+ha.leftMargin)+", "+aa*ha.branchOffset+")";case"BT":return"translate("+(aa*ha.branchOffset+ha.leftMargin)+", "+(a-i.seq)*ha.nodeSpacing+")"}})).attr("fill",ha.nodeFillColor).attr("stroke",ha.nodeStrokeColor).attr("stroke-width",ha.nodeStrokeWidth);var o=void 0;for(var s in n)if(n[s].commit===i){o=n[s];break}o&&(f.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&la[e]);Array.isArray(e)&&(f.debug("found merge commmit",e),va(t,e[0],n,r),aa++,va(t,e[1],n,r),aa--)}function ma(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(ga(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=la[e.parent]):Array.isArray(e.parent)&&(ga(t,e.id,e.parent[0],n,r),ga(t,e.id,e.parent[1],n,r+1),ma(t,la[e.parent[1]],n,r+1),e.lineDrawn=!0,e=la[e.parent[0]])}var ba,xa=function(t){fa=t},_a=function(t,e,n){try{var r=ua.a.parser;r.yy=sa,r.yy.clear(),f.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),ha=Object.assign(ha,fa,sa.getOptions()),f.debug("effective options",ha);var i=sa.getDirection();la=sa.getCommits();var a=sa.getBranchesAsObjArray();"BT"===i&&(ha.nodeLabel.x=a.length*ha.branchOffset,ha.nodeLabel.width="100%",ha.nodeLabel.y=-2*ha.nodeRadius);var o=Object(s.select)('[id="'.concat(e,'"]'));for(var c in function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",ha.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",ha.nodeLabel.width).attr("height",ha.nodeLabel.height).attr("x",ha.nodeLabel.x).attr("y",ha.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(o),aa=1,a){var u=a[c];va(o,u.commit.id,a,i),ma(o,u.commit,i),aa++}o.attr("height",(function(){return"BT"===i?Object.keys(la).length*ha.nodeSpacing:(a.length+1)*ha.branchOffset}))}catch(t){f.error("Error while rendering gitgraph"),f.error(t.message)}},ka="",wa=!1,Ea={setMessage:function(t){f.debug("Setting message to: "+t),ka=t},getMessage:function(){return ka},setInfo:function(t){wa=t},getInfo:function(){return wa}},Ta=n(72),Ca=n.n(Ta),Sa={},Aa=function(t){Object.keys(t).forEach((function(e){Sa[e]=t[e]}))},Ma=function(t,e,n){try{var r=Ca.a.parser;r.yy=Ea,f.debug("Renering info diagram\n"+t),r.parse(t),f.debug("Parsed info diagram");var i=Object(s.select)("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){f.error("Error while rendering info diagram"),f.error(t.message)}},Oa={},Da=function(t){Object.keys(t).forEach((function(e){Oa[e]=t[e]}))},Na=function(t,e){try{f.debug("Renering svg for syntax error\n");var n=Object(s.select)("#"+t),r=n.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1240).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1050).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+e),n.attr("height",100),n.attr("width",400),n.attr("viewBox","768 0 512 512")}catch(t){f.error("Error while rendering info diagram"),f.error(t.message)}},Ba={},La="",Fa={parseDirective:function(t,e,n){$o.parseDirective(this,t,e,n)},getConfig:function(){return xt().pie},addSection:function(t,e){void 0===Ba[t]&&(Ba[t]=e,f.debug("Added new section :",t))},getSections:function(){return Ba},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Ba={},La=""},setTitle:function(t){La=t},getTitle:function(){return La}},Pa=n(73),Ia=n.n(Pa),ja={},Ra=function(t){Object.keys(t).forEach((function(e){ja[e]=t[e]}))},Ya=function(t,e){try{var n=Ia.a.parser;n.yy=Fa,f.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),f.debug("Parsed info diagram");var r=document.getElementById(e);void 0===(ba=r.parentElement.offsetWidth)&&(ba=1200),void 0!==ja.useWidth&&(ba=ja.useWidth);var i=Object(s.select)("#"+e);$(i,450,ba,ja.useMaxWidth),r.setAttribute("viewBox","0 0 "+ba+" 450");var a=Math.min(ba,450)/2-40,o=i.append("g").attr("transform","translate("+ba/2+",225)"),c=Fa.getSections(),u=0;Object.keys(c).forEach((function(t){u+=c[t]}));var l=Object(s.scaleOrdinal)().domain(c).range(s.schemeSet2),h=Object(s.pie)().value((function(t){return t.value}))(Object(s.entries)(c)),d=Object(s.arc)().innerRadius(0).outerRadius(a);o.selectAll("mySlices").data(h).enter().append("path").attr("d",d).attr("fill",(function(t){return l(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),o.selectAll("mySlices").data(h).enter().append("text").text((function(t){return(t.data.value/u*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+d.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),o.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var p=o.selectAll(".legend").data(l.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*l.domain().length/2)+")"}));p.append("rect").attr("width",18).attr("height",18).style("fill",l).style("stroke",l),p.append("text").attr("x",22).attr("y",14).text((function(t){return t}))}catch(t){f.error("Error while rendering info diagram"),f.error(t)}},za={},Ua=[],$a="",Wa={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){$o.parseDirective(this,t,e,n)},getConfig:function(){return xt().er},addEntity:function(t){void 0===za[t]&&(za[t]=t,f.debug("Added new entity :",t))},getEntities:function(){return za},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};Ua.push(i),f.debug("Added new relationship :",i)},getRelationships:function(){return Ua},clear:function(){za={},Ua=[],$a=""},setTitle:function(t){$a=t},getTitle:function(){return $a}},Va=n(74),Ha=n.n(Va),Ga={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},qa=Ga,Xa=function(t,e){var n;t.append("defs").append("marker").attr("id",Ga.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Ga.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Ga.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Ga.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Ga.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Ga.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",Ga.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",Ga.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},Za={},Ja=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},Qa=0,Ka=function(t){for(var e=Object.keys(t),n=0;n/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},go=-1,yo=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},vo=function(){function t(t,e,n,i,a,o,s,c){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c,u){for(var l=c.taskFontSize,h=c.taskFontFamily,f=t.split(//gi),d=0;d3?function(t){var e=Object(s.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+2)+")")}(c):o.score<3?function(t){var e=Object(s.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+7)+")")}(c):function(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",o.cx-5).attr("y1",o.cy+7).attr("x2",o.cx+5).attr("y2",o.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(c);var u=yo();u.x=e.x,u.y=e.y,u.fill=e.fill,u.width=n.width,u.height=n.height,u.class="task task-type-"+e.num,u.rx=3,u.ry=3,ho(i,u);var l=e.x+14;e.people.forEach((function(t){var n=e.actors[t],r={cx:l,cy:e.y,r:7,fill:n,stroke:"#000",title:t};fo(i,r),l+=10})),vo(n)(e.task,i,u.x,u.y,u.width,u.height,{class:"task"},n,e.colour)},ko=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")};eo.parser.yy=lo;var wo={leftMargin:150,diagramMarginX:50,diagramMarginY:20,taskMargin:50,width:150,height:50,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},Eo={};var To=wo.leftMargin,Co={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var c=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-c*wo.boxMargin,Math.min),a.updateVal(s,"stopy",r+c*wo.boxMargin,Math.max),a.updateVal(Co.data,"startx",t-c*wo.boxMargin,Math.min),a.updateVal(Co.data,"stopx",n+c*wo.boxMargin,Math.max),"activation"!==i&&(a.updateVal(s,"startx",t-c*wo.boxMargin,Math.min),a.updateVal(s,"stopx",n+c*wo.boxMargin,Math.max),a.updateVal(Co.data,"starty",e-c*wo.boxMargin,Math.min),a.updateVal(Co.data,"stopy",r+c*wo.boxMargin,Math.max))}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Co.data,"startx",i,Math.min),this.updateVal(Co.data,"starty",o,Math.min),this.updateVal(Co.data,"stopx",a,Math.max),this.updateVal(Co.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},So=wo.sectionFills,Ao=wo.sectionColours,Mo=function(t,e,n){for(var r="",i=n+(2*wo.height+wo.diagramMarginY),a=0,o="#CCC",s="black",c=0,u=0;u tspan {\n fill: ").concat(t.actorTextColor,";\n stroke: none;\n }\n\n .actor-line {\n stroke: ").concat(t.actorLineColor,";\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ").concat(t.signalColor,";\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.signalColor,";\n }\n\n #arrowhead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .sequenceNumber {\n fill: ").concat(t.sequenceNumberColor,";\n }\n\n #sequencenumber {\n fill: ").concat(t.signalColor,";\n }\n\n #crosshead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .messageText {\n fill: ").concat(t.signalTextColor,";\n stroke: ").concat(t.signalTextColor,";\n }\n\n .labelBox {\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBkgColor,";\n }\n\n .labelText, .labelText > tspan {\n fill: ").concat(t.labelTextColor,";\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ").concat(t.loopTextColor,";\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBorderColor,";\n }\n\n .note {\n //stroke: #decc93;\n stroke: ").concat(t.noteBorderColor,";\n fill: ").concat(t.noteBkgColor,";\n }\n\n .noteText, .noteText > tspan {\n fill: ").concat(t.noteTextColor,";\n stroke: none;\n }\n\n .activation0 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation1 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation2 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n")},gantt:function(t){return'\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: '.concat(t.sectionBkgColor,";\n }\n\n .section2 {\n fill: ").concat(t.sectionBkgColor2,";\n }\n\n .section1,\n .section3 {\n fill: ").concat(t.altSectionBkgColor,";\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle1 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle2 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle3 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ").concat(t.gridColor,";\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ").concat(t.todayLineColor,";\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ").concat(t.taskTextColor,";\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ").concat(t.taskBkgColor,";\n stroke: ").concat(t.taskBorderColor,";\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ").concat(t.activeTaskBkgColor,";\n stroke: ").concat(t.activeTaskBorderColor,";\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ").concat(t.doneTaskBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.critBkgColor,";\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.activeTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ").concat(t.textColor," ;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n")},classDiagram:No,"classDiagram-v2":No,class:No,stateDiagram:Lo,state:Lo,git:function(){return"\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n"},info:function(){return""},pie:function(t){return".pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ".concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n }\n .slice {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n // fill: white;\n }\n .legend text {\n fill: ").concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n font-size: 17px;\n }\n")},er:function(t){return"\n .entityBox {\n fill: ".concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n }\n\n .relationshipLabelBox {\n fill: ").concat(t.tertiaryColor,";\n opacity: 0.7;\n background-color: ").concat(t.tertiaryColor,";\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ").concat(t.lineColor,";\n }\n")},journey:function(t){return".label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n color: ".concat(t.textColor,";\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ").concat(t.textColor,"\n }\n\n .legend {\n fill: ").concat(t.textColor,";\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ").concat(t.textColor,"\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(t.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(t.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(t.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ").concat(t.titleColor,";\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ").concat(t.tertiaryColor,";\n border: 1px solid ").concat(t.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType0):"",";\n }\n .task-type-1, .section-type-1 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType1):"",";\n }\n .task-type-2, .section-type-2 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType2):"",";\n }\n .task-type-3, .section-type-3 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType3):"",";\n }\n .task-type-4, .section-type-4 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType4):"",";\n }\n .task-type-5, .section-type-5 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType5):"",";\n }\n .task-type-6, .section-type-6 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType6):"",";\n }\n .task-type-7, .section-type-7 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType7):"",";\n }\n")}},Po=function(t,e,n){return" {\n font-family: ".concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n fill: ").concat(n.textColor,"\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ").concat(n.errorBkgColor,";\n }\n .error-text {\n fill: ").concat(n.errorTextColor,";\n stroke: ").concat(n.errorTextColor,";\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ").concat(n.lineColor,";\n }\n .marker.cross {\n stroke: ").concat(n.lineColor,";\n }\n\n svg {\n font-family: ").concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n }\n\n ").concat(Fo[t](n),"\n\n ").concat(e,"\n\n ").concat(t," { fill: apa;}\n")};function Io(t){return(Io="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var jo={},Ro=function(t,e,n){switch(f.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),e.args,kt(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;default:f.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}};function Yo(t){xa(t.git),ve(t.flowchart),Nn(t.flowchart),void 0!==t.sequenceDiagram&&br.setConf(P(t.sequence,t.sequenceDiagram)),br.setConf(t.sequence),ei(t.gantt),ci(t.class),Ri(t.state),Hi(t.state),Aa(t.class),Ra(t.class),Ka(t.er),Oo(t.journey),Da(t.class)}function zo(){}var Uo=Object.freeze({render:function(t,e,n,r){wt();var i=e,a=W.detectInit(i);a&&kt(a);var u=xt();if(e.length>u.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(s.select)(r).append("div").attr("id","d"+t).attr("style","font-family: "+u.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var l=document.getElementById(t);l&&l.remove();var h=document.querySelector("#d"+t);h&&h.remove(),Object(s.select)("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=i,i=function(t){var e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}))}(i);var d=Object(s.select)("#d"+t).node(),p=W.detectType(i),g=d.firstChild,y=g.firstChild,v="";if(void 0!==u.themeCSS&&(v+="\n".concat(u.themeCSS)),void 0!==u.fontFamily&&(v+="\n:root { --mermaid-font-family: ".concat(u.fontFamily,"}")),void 0!==u.altFontFamily&&(v+="\n:root { --mermaid-alt-font-family: ".concat(u.altFontFamily,"}")),"flowchart"===p||"flowchart-v2"===p||"graph"===p){var m=me(i);for(var b in m)v+="\n.".concat(b," > * { ").concat(m[b].styles.join(" !important; ")," !important; }"),m[b].textStyles&&(v+="\n.".concat(b," tspan { ").concat(m[b].textStyles.join(" !important; ")," !important; }"))}var x=(new o.a)("#".concat(t),Po(p,v,u.themeVariables)),_=document.createElement("style");_.innerHTML=x,g.insertBefore(_,y);try{switch(p){case"git":u.flowchart.arrowMarkerAbsolute=u.arrowMarkerAbsolute,xa(u.git),_a(i,t,!1);break;case"flowchart":u.flowchart.arrowMarkerAbsolute=u.arrowMarkerAbsolute,ve(u.flowchart),be(i,t,!1);break;case"flowchart-v2":u.flowchart.arrowMarkerAbsolute=u.arrowMarkerAbsolute,Nn(u.flowchart),Bn(i,t,!1);break;case"sequence":u.sequence.arrowMarkerAbsolute=u.arrowMarkerAbsolute,u.sequenceDiagram?(br.setConf(Object.assign(u.sequence,u.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):br.setConf(u.sequence),br.draw(i,t);break;case"gantt":u.gantt.arrowMarkerAbsolute=u.arrowMarkerAbsolute,ei(u.gantt),ni(i,t);break;case"class":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,ci(u.class),ui(i,t);break;case"classDiagram":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,hi(u.class),fi(i,t);break;case"state":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,Ri(u.state),Yi(i,t);break;case"stateDiagram":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,Hi(u.state),Gi(i,t);break;case"info":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,Aa(u.class),Ma(i,t,c.version);break;case"pie":u.class.arrowMarkerAbsolute=u.arrowMarkerAbsolute,Ra(u.pie),Ya(i,t,c.version);break;case"er":Ka(u.er),to(i,t,c.version);break;case"journey":Oo(u.journey),Do(i,t,c.version)}}catch(e){throw Na(t,c.version),e}Object(s.select)('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var k=Object(s.select)("#d"+t).node().innerHTML;if(f.debug("cnf.arrowMarkerAbsolute",u.arrowMarkerAbsolute),u.arrowMarkerAbsolute&&"false"!==u.arrowMarkerAbsolute||(k=k.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),k=function(t){var e=t;return e=(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(k),void 0!==n)switch(p){case"flowchart":case"flowchart-v2":n(k,qt.bindFunctions);break;case"gantt":n(k,Jr.bindFunctions);break;case"class":case"classDiagram":n(k,on.bindFunctions);break;default:n(k)}else f.debug("CB = undefined!");var w=Object(s.select)("#d"+t).node();return null!==w&&"function"==typeof w.remove&&Object(s.select)("#d"+t).node().remove(),k},parse:function(t){var e=W.detectInit(t);e&&f.debug("reinit ",e);var n,r=W.detectType(t);switch(f.debug("Type "+r),r){case"git":(n=ua.a).parser.yy=sa;break;case"flowchart":case"flowchart-v2":qt.clear(),(n=Zt.a).parser.yy=qt;break;case"sequence":(n=$n.a).parser.yy=ar;break;case"gantt":(n=_r.a).parser.yy=Jr;break;case"class":case"classDiagram":(n=ii.a).parser.yy=on;break;case"state":case"stateDiagram":(n=Mi.a).parser.yy=Si;break;case"info":f.debug("info info info"),(n=Ca.a).parser.yy=Ea;break;case"pie":f.debug("pie"),(n=Ia.a).parser.yy=Fa;break;case"er":f.debug("er"),(n=Ha.a).parser.yy=Wa;break;case"journey":f.debug("Journey"),(n=no.a).parser.yy=lo}return n.parser.yy.graphType=r,n.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},n.parse(t),n},parseDirective:function(t,e,n,r){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":jo={};break;case"type_directive":jo.type=e.toLowerCase();break;case"arg_directive":jo.args=JSON.parse(e);break;case"close_directive":Ro(t,jo,r),jo=null}}catch(t){f.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),f.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),ft=P({},t),t&&t.theme&<[t.theme]?t.themeVariables=lt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=lt.default.getThemeVariables(t.themeVariables));var e="object"===Io(t)?function(t){return gt=P({},pt),gt=P(gt,t),t.theme&&(gt.themeVariables=lt[t.theme].getThemeVariables(t.themeVariables)),vt=mt(gt,yt),gt}(t):bt();Yo(e),d(e.logLevel)},reinitialize:zo,getConfig:xt,setConfig:function(t){return P(vt,t),xt()},getSiteConfig:bt,updateSiteConfig:function(t){return gt=P(gt,t),mt(gt,yt),gt},reset:function(){wt()},globalReset:function(){wt(),Yo(xt())},defaultConfig:pt});d(xt().logLevel),wt(xt());var $o=Uo,Wo=function(){Vo.startOnLoad?$o.getConfig().startOnLoad&&Vo.init():void 0===Vo.startOnLoad&&(f.debug("In start, no config"),$o.getConfig().startOnLoad&&Vo.init())};"undefined"!=typeof document&& -/*! - * Wait for document loaded before starting the execution - */ -window.addEventListener("load",(function(){Wo()}),!1);var Vo={startOnLoad:!0,htmlLabels:!0,mermaidAPI:$o,parse:$o.parse,render:$o.render,init:function(){var t,e,n,r=this,a=$o.getConfig();arguments.length>=2?( -/*! sequence config was passed as #1 */ -void 0!==arguments[0]&&(Vo.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],f.debug("Callback function found")):void 0!==a.mermaid&&("function"==typeof a.mermaid.callback?(e=a.mermaid.callback,f.debug("Callback function found")):f.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,f.debug("Start On Load before: "+Vo.startOnLoad),void 0!==Vo.startOnLoad&&(f.debug("Start On Load inner: "+Vo.startOnLoad),$o.updateSiteConfig({startOnLoad:Vo.startOnLoad})),void 0!==Vo.ganttConfig&&$o.updateSiteConfig({gantt:Vo.ganttConfig});for(var o=function(a){var o=t[a]; -/*! Check if previously processed */if(o.getAttribute("data-processed"))return"continue";o.setAttribute("data-processed",!0);var s="mermaid-".concat(Date.now());n=i(n=o.innerHTML).trim().replace(//gi,"
");var c=W.detectInit(n);c&&f.debug("Detected early reinit: ",c);try{$o.render(s,n,(function(t,n){o.innerHTML=t,void 0!==e&&e(s),n&&n(o)}),o)}catch(t){f.warn("Syntax Error rendering"),f.warn(t),r.parseError&&r.parseError(t)}},s=0;s b3 - b4 -> b3 - b3 -> b1 - b2 -> genesis - b1 -> genesis -} -``` - -A blockchain network is comprised of nodes. These nodes each have a view of many different forks of a blockchain and must decide which forks to follow and what actions to take based on the forks of the chain that they are aware of. - -So in specifying an architecture to carry out the functionality of a Parachain Host, we have to answer two categories of questions: - -1. What is the state-transition function of the blockchain? What is necessary for a transition to be considered valid, and what information is carried within the implicit state of a block? -1. Being aware of various forks of the blockchain as well as global private state such as a view of the current time, what behaviors should a node undertake? What information should a node extract from the state of which forks, and how should that information be used? - -The first category of questions will be addressed by the Runtime, which defines the state-transition logic of the chain. Runtime logic only has to focus on the perspective of one chain, as each state has only a single parent state. - -The second category of questions addressed by Node-side behavior. Node-side behavior defines all activities that a node undertakes, given its view of the blockchain/block-DAG. Node-side behavior can take into account all or many of the forks of the blockchain, and only conditionally undertake certain activities based on which forks it is aware of, as well as the state of the head of those forks. - -```dot process -digraph G { - Runtime [shape=box] - "Node" [shape=box margin=0.5] - Transport [shape=rectangle width=5] - - Runtime -> "Node" [dir=both label="Runtime API"] - - "Node" -> Transport [penwidth=1] -} - -``` - -It is also helpful to divide Node-side behavior into two further categories: Networking and Core. Networking behaviors relate to how information is distributed between nodes. Core behaviors relate to internal work that a specific node does. These two categories of behavior often interact, but can be heavily abstracted from each other. Core behaviors care that information is distributed and received, but not the internal details of how distribution and receipt function. Networking behaviors act on requests for distribution or fetching of information, but are not concerned with how the information is used afterwards. This allows us to create clean boundaries between Core and Networking activities, improving the modularity of the code. - -```text - ___________________ ____________________ - / Core \ / Networking \ - | | Send "Hello" | | - | |- to "foo" --->| | - | | | | - | | | | - | | | | - | | Got "World" | | - | |<-- from "bar" --| | - | | | | - \___________________/ \____________________/ - ______| |______ - ___Transport___ - -``` - -Node-side behavior is split up into various subsystems. Subsystems are long-lived workers that perform a particular category of work. Subsystems can communicate with each other, and do so via an [Overseer](node/overseer.md) that prevents race conditions. - -Runtime logic is divided up into Modules and APIs. Modules encapsulate particular behavior of the system. Modules consist of storage, routines, and entry-points. Routines are invoked by entry points, by other modules, upon block initialization or closing. Routines can read and alter the storage of the module. Entry-points are the means by which new information is introduced to a module and can limit the origins (user, root, parachain) that they accept being called by. Each block in the blockchain contains a set of Extrinsics. Each extrinsic targets a a specific entry point to trigger and which data should be passed to it. Runtime APIs provide a means for Node-side behavior to extract meaningful information from the state of a single fork. - -These two aspects of the implementation are heavily dependent on each other. The Runtime depends on Node-side behavior to author blocks, and to include Extrinsics which trigger the correct entry points. The Node-side behavior relies on Runtime APIs to extract information necessary to determine which actions to take. diff --git a/roadmap/implementers-guide/src/disputes-flow.md b/roadmap/implementers-guide/src/disputes-flow.md deleted file mode 100644 index 35d5b3c5791e..000000000000 --- a/roadmap/implementers-guide/src/disputes-flow.md +++ /dev/null @@ -1,125 +0,0 @@ -# Disputes Flows - -A component-free description in what-if form with addition state graphs of the dispute. - -```mermaid -stateDiagram-v2 - [*] --> WaitForBackingVote: negative Vote received - [*] --> WaitForDisputeVote: backing Vote received - WaitForBackingVote --> Open: negative Vote received - WaitForDisputeVote --> Open: backing Vote received - Open --> Concluded: Timeout without supermajority - Open --> Concluded: Incoming Vote via Gossip - Open --> Open: No ⅔ supermajority - Open --> [*] - Concluded --> [*] -``` - ---- - -```mermaid -stateDiagram-v2 - [*] --> Open: First Vote(s) received - Open --> HasPoV : Fetch Availability Store for PoV - - HasPoV --> HasCode : Fetch historical Code - HasCode --> VerifyWithRuntime: All Data locally avail - - Open --> DisputeAvailabilityDataReceived - DisputeAvailabilityDataReceived --> VerifyWithRuntime: Received Gossip - - HasPoV --> RequestDisputeAvailabilityData: nope - HasCode --> RequestDisputeAvailabilityData: nope - RequestDisputeAvailabilityData --> VerifyWithRuntime: Received - RequestDisputeAvailabilityData --> RequestDisputeAvailabilityData: Timed out - pick another peer - - VerifyWithRuntime --> CastVoteValid: Block Valid - VerifyWithRuntime --> CastVoteInvalid: Block Invalid - CastVoteInvalid --> GossipVote - CastVoteValid --> GossipVote - GossipVote --> [*] - -``` - ---- - -Dispute Availability Data - -```mermaid -stateDiagram-v2 - [*] --> Open: First Vote(s) received - Open --> DisputeDataAvail: somehow the data became available - Open --> RespondUnavailable: Data not available - IncomingRequestDisputeAvailabilityData --> RespondUnavailable - IncomingRequestDisputeAvailabilityData --> DisputeDataAvail - DisputeDataAvail --> RespondWithDisputeAvailabilityData: Send - VoteGossipReceived --> Track: implies source peer has
dispute availablity data -``` - ---- - -Peer handling - -```mermaid -stateDiagram-v2 - [*] --> Open: First Vote(s) received - Open --> GossipVotes: for all current peers - Open --> PeerConnected: another - PeerConnected --> GossipVotes: Peer connects - GossipVotes --> [*] -``` - -## Conditional formulation - -The set of validators eligible to vote consists of -the validators that had duty at the time of backing, plus backing votes by the backing validators. - -If a validator receives an initial dispute message (a set of votes where there are at least two opposing votes contained), and the PoV or Code are hence not reconstructable from local storage, that validator must request the required data from its peers. - -The dispute availability message must contain code, persisted validation data, and the proof of validity. - -Only peers that already voted shall be queried for the dispute availability data. - -The peer to be queried for disputes data, must be picked at random. - -A validator must retain code, persisted validation data and PoV until a block, that contains the dispute resolution, is finalized - plus an additional 24h. - -Dispute availability gossip must continue beyond the dispute resolution, until the post resolution timeout expired (equiv to the timeout until which additional late votes are accepted). - -Remote disputes are disputes that are in relation to a chain that is not part of the local validators active heads. - -All incoming votes must be persisted. - -Persisted votes stay persisted for `N` sessions, and are cleaned up on a per session basis. - -Votes must be queryable by a particular validator, identified by its signing key. - -Votes must be queryable by a particular validator, identified by a session index and the validator index valid in that session. - -If there exists a negative and a positive fork for a particular block, a dispute is detected. - -If a dispute is detected, all currently available votes for that block must be gossiped. - -If an incoming dispute vote is detected, a validator must cast their own vote. The vote is determined by validating the PoV with the Code at the time of backing the block in question. - -If the validator was also a backer of the block, validation and casting an additional vote should be skipped. - -If the count of votes pro or cons regarding the disputed block, reaches the required ⅔ supermajority (including the backing votes), the conclusion must be recorded on chain and the voters on the loosing and no-shows being slashed appropriately. - -If a block is found invalid by a dispute resolution, it must be blacklisted to avoid resync or further build on that chain if other chains are available (to be detailed in the grandpa fork choice rule). - -A dispute accepts Votes after the dispute is resolved, for 1d. - -If a vote is received, after the dispute is resolved, the vote shall still be recorded in the state root, albeit yielding less reward. - -Recording in the state root might happen batched, at timeout expiry. - -If a new active head/chain appears, and the dispute resolution was not recorded on that chain yet, the dispute resolution or open dispute must be recorded / transplanted to that chain as well, since the disputes must be present on all chains to make sure the offender is punished. - -If a validator votes in two opposing ways, this composes of a double vote like in other cases (backing, approval voting). - -If a dispute is not resolved within due time, all validators are to be slashed for a small amount. - -If a dispute is not resolved within due time, governance mode shall be entered for manual resolution. - -If a validator unexpectedly restarts, the dispute shall be continued with the state based on votes being cast and being present in persistent storage. diff --git a/roadmap/implementers-guide/src/further-reading.md b/roadmap/implementers-guide/src/further-reading.md deleted file mode 100644 index 535a2204d948..000000000000 --- a/roadmap/implementers-guide/src/further-reading.md +++ /dev/null @@ -1,4 +0,0 @@ -# Further Reading - -- Polkadot Wiki on Consensus: -- Polkadot Spec: diff --git a/roadmap/implementers-guide/src/glossary.md b/roadmap/implementers-guide/src/glossary.md deleted file mode 100644 index a64c5bd00a50..000000000000 --- a/roadmap/implementers-guide/src/glossary.md +++ /dev/null @@ -1,45 +0,0 @@ -# Glossary - -Here you can find definitions of a bunch of jargon, usually specific to the Polkadot project. - -- BABE: (Blind Assignment for Blockchain Extension). The algorithm validators use to safely extend the Relay Chain. See [the Polkadot wiki][0] for more information. -- Backable Candidate: A Parachain Candidate which is backed by a majority of validators assigned to a given parachain. -- Backed Candidate: A Backable Candidate noted in a relay-chain block -- Backing: A set of statements proving that a Parachain Candidate is backable. -- Collator: A node who generates Proofs-of-Validity (PoV) for blocks of a specific parachain. -- DMP: (Downward Message Passing). Message passing from the relay-chain to a parachain. Also there is a runtime parachains module with the same name. -- DMQ: (Downward Message Queue). A message queue for messages from the relay-chain down to a parachain. A parachain has -exactly one downward message queue. -- Extrinsic: An element of a relay-chain block which triggers a specific entry-point of a runtime module with given arguments. -- GRANDPA: (Ghost-based Recursive ANcestor Deriving Prefix Agreement). The algorithm validators use to guarantee finality of the Relay Chain. -- HRMP: (Horizontally Relay-routed Message Passing). A mechanism for message passing between parachains (hence horizontal) that leverages the relay-chain storage. Predates XCMP. Also there is a runtime parachains module with the same name. -- Inclusion Pipeline: The set of steps taken to carry a Parachain Candidate from authoring, to backing, to availability and full inclusion in an active fork of its parachain. -- Module: A component of the Runtime logic, encapsulating storage, routines, and entry-points. -- Module Entry Point: A recipient of new information presented to the Runtime. This may trigger routines. -- Module Routine: A piece of code executed within a module by block initialization, closing, or upon an entry point being triggered. This may execute computation, and read or write storage. -- MQC: (Message Queue Chain). A cryptographic data structure that resembles an append-only linked list which doesn't store original values but only their hashes. The whole structure is described by a single hash, referred as a "head". When a value is appended, it's contents hashed with the previous head creating a hash that becomes a new head. -- Node: A participant in the Polkadot network, who follows the protocols of communication and connection to other nodes. Nodes form a peer-to-peer network topology without a central authority. -- Parachain Candidate, or Candidate: A proposed block for inclusion into a parachain. -- Parablock: A block in a parachain. -- Parachain: A constituent chain secured by the Relay Chain's validators. -- Parachain Validators: A subset of validators assigned during a period of time to back candidates for a specific parachain -- Parathread: A parachain which is scheduled on a pay-as-you-go basis. -- PDK (Parachain Development Kit): A toolset that allows one to develop a parachain. Cumulus is a PDK. -- Preimage: In our context, if `H(X) = Y` where `H` is a hash function and `Y` is the hash, then `X` is the hash preimage. -- Proof-of-Validity (PoV): A stateless-client proof that a parachain candidate is valid, with respect to some validation function. -- Relay Parent: A block in the relay chain, referred to in a context where work is being done in the context of the state at this block. -- Router: The router module is a meta module that consists of three runtime modules responsible for routing messages between paras and the relay chain. The three separate runtime modules are: Dmp, Ump, Hrmp, each responsible for the respective part of message routing. -- Runtime: The relay-chain state machine. -- Runtime Module: See Module. -- Runtime API: A means for the node-side behavior to access structured information based on the state of a fork of the blockchain. -- Secondary Checker: A validator who has been randomly selected to perform secondary approval checks on a parablock which is pending approval. -- Subsystem: A long-running task which is responsible for carrying out a particular category of work. -- UMP: (Upward Message Passing) A vertical message passing mechanism from a parachain to the relay chain. -- Validator: Specially-selected node in the network who is responsible for validating parachain blocks and issuing attestations about their validity. -- Validation Function: A piece of Wasm code that describes the state-transition function of a parachain. -- VMP: (Vertical Message Passing) A family of mechanisms that are responsible for message exchange between the relay chain and parachains. -- XCMP (Cross-Chain Message Passing) A type of horizontal message passing (i.e. between parachains) that allows secure message passing directly between parachains and has minimal resource requirements from the relay chain, thus highly scalable. - -Also of use is the [Substrate Glossary](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary). - -[0]: https://wiki.polkadot.network/docs/learn-consensus diff --git a/roadmap/implementers-guide/src/messaging.md b/roadmap/implementers-guide/src/messaging.md deleted file mode 100644 index edc810e03415..000000000000 --- a/roadmap/implementers-guide/src/messaging.md +++ /dev/null @@ -1,105 +0,0 @@ -# Messaging Overview - -The Polkadot Host has a few mechanisms that are responsible for message passing. They can be generally divided -on two categories: Horizontal and Vertical. Horizontal Message Passing (HMP) refers to mechanisms -that are responsible for exchanging messages between parachains. Vertical Message Passing (VMP) is -used for communication between the relay chain and parachains. - -## Vertical Message Passing - -```dot process -digraph { - rc [shape=Mdiamond label="Relay Chain"]; - p1 [shape=box label = "Parachain"]; - - rc -> p1 [label="DMP"]; - p1 -> rc [label="UMP"]; -} -``` - -Downward Message Passing (DMP) is a mechanism for delivering messages to parachains from the relay chain. - -Each parachain has its own queue that stores all pending inbound downward messages. A parachain -doesn't have to process all messages at once, however, there are rules as to how the downward message queue -should be processed. Currently, at least one message must be consumed per candidate if the queue is not empty. -The downward message queue doesn't have a cap on its size and it is up to the relay-chain to put mechanisms -that prevent spamming in place. - -Upward Message Passing (UMP) is a mechanism responsible for delivering messages in the opposite direction: -from a parachain up to the relay chain. Upward messages are essentially byte blobs. However, they are interpreted -by the relay-chain according to the XCM standard. - -The XCM standard is a common vocabulary of messages. The XCM standard doesn't require a particular interpretation of -a message. However, the parachains host (e.g. Polkadot) guarantees certain semantics for those. - -Moreover, while most XCM messages are handled by the on-chain XCM interpreter, some of the messages are special -cased. Specifically, those messages can be checked during the acceptance criteria and thus invalid -messages would lead to rejecting the candidate itself. - -One kind of such a message is `Xcm::Transact`. This upward message can be seen as a way for a parachain -to execute arbitrary entrypoints on the relay-chain. `Xcm::Transact` messages resemble regular extrinsics with the exception that they -originate from a parachain. - -The payload of `Xcm::Transact` messages is referred as to `Dispatchable`. When a candidate with such a message is enacted -the dispatchables are put into a queue corresponding to the parachain. There can be only so many dispatchables in that queue at once. -The weight that processing of the dispatchables can consume is limited by a preconfigured value. Therefore, it is possible -that some dispatchables will be left for later blocks. To make the dispatching more fair, the queues are processed turn-by-turn -in a round robin fashion. - -The second category of special cased XCM messages are for horizontal messaging channel management, -namely messages meant to request opening and closing HRMP channels (HRMP will be described below). - -## Horizontal Message Passing - -```dot process -digraph { - rc [shape=Mdiamond color="gray" fontcolor="gray" label="Relay Chain"]; - - subgraph { - rank = "same" - p1 [shape=box label = "Parachain 1"]; - p2 [shape=box label = "Parachain 2"]; - } - - rc -> p1 [label="DMP" color="gray" fontcolor="gray"]; - p1 -> rc [label="UMP" color="gray" fontcolor="gray"]; - - rc -> p2 [label="DMP" color="gray" fontcolor="gray"]; - p2 -> rc [label="UMP" color="gray" fontcolor="gray"]; - - p2 -> p1 [dir=both label="XCMP"]; -} -``` - -### Cross-Chain Message Passing - -The most important member of this family is XCMP. - -> ℹ️ XCMP is currently under construction and details are subject for change. - -XCMP is a message passing mechanism between parachains that require minimal involvement of the relay chain. -The relay chain provides means for sending parachains to authenticate messages sent to recipient parachains. - -Semantically communication occurs through so called channels. A channel is unidirectional and it has -two endpoints, for sender and for recipient. A channel can be opened only if the both parties agree -and closed unilaterally. - -Only the channel metadata is stored on the relay-chain in a very compact form: all messages and their -contents sent by the sender parachain are encoded using only one root hash. This root is referred as -MQC head. - -The authenticity of the messages must be proven using that root hash to the receiving party at the -candidate authoring time. The proof stems from the relay parent storage that contains the root hash of the channel. -Since not all messages are required to be processed by the receiver's candidate, only the processed -messages are supplied (i.e. preimages), rest are provided as hashes. - -Further details can be found at the official repository for the -[Cross-Consensus Message Format (XCM)](https://github.com/paritytech/xcm-format/blob/master/README.md), as well as -at the [W3F research website](https://research.web3.foundation/en/latest/polkadot/XCMP.html) and -[this blogpost](https://medium.com/web3foundation/polkadots-messaging-scheme-b1ec560908b7). - -HRMP (Horizontally Relay-routed Message Passing) is a stop gap that predates XCMP. Semantically, it mimics XCMP's interface. -The crucial difference from XCMP though is that all the messages are stored in the relay-chain storage. That makes -things simple but at the same time that makes HRMP more demanding in terms of resources thus making it more expensive. - -Once XCMP is available we expect to retire HRMP. diff --git a/roadmap/implementers-guide/src/node/README.md b/roadmap/implementers-guide/src/node/README.md deleted file mode 100644 index f20c970aff6c..000000000000 --- a/roadmap/implementers-guide/src/node/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Node Architecture - -## Design Goals - -* Modularity: Components of the system should be as self-contained as possible. Communication boundaries between components should be well-defined and mockable. This is key to creating testable, easily reviewable code. -* Minimizing side effects: Components of the system should aim to minimize side effects and to communicate with other components via message-passing. -* Operational Safety: The software will be managing signing keys where conflicting messages can lead to large amounts of value to be slashed. Care should be taken to ensure that no messages are signed incorrectly or in conflict with each other. - -The architecture of the node-side behavior aims to embody the Rust principles of ownership and message-passing to create clean, isolatable code. Each resource should have a single owner, with minimal sharing where unavoidable. - -Many operations that need to be carried out involve the network, which is asynchronous. This asynchrony affects all core subsystems that rely on the network as well. The approach of hierarchical state machines is well-suited to this kind of environment. - -We introduce - -## Components - -The node architecture consists of the following components: - * The Overseer (and subsystems): A hierarchy of state machines where an overseer supervises subsystems. Subsystems can contain their own internal hierarchy of jobs. This is elaborated on in the next section on Subsystems. - * A block proposer: Logic triggered by the consensus algorithm of the chain when the node should author a block. - * A GRANDPA voting rule: A strategy for selecting chains to vote on in the GRANDPA algorithm to ensure that only valid parachain candidates appear in finalized relay-chain blocks. - -## Assumptions - -The Node-side code comes with a set of assumptions that we build upon. These assumptions encompass most of the fundamental blockchain functionality. - -We assume the following constraints regarding provided basic functionality: - * The underlying **consensus** algorithm, whether it is BABE or SASSAFRAS is implemented. - * There is a **chain synchronization** protocol which will search for and download the longest available chains at all times. - * The **state** of all blocks at the head of the chain is available. There may be **state pruning** such that state of the last `k` blocks behind the last finalized block are available, as well as the state of all their descendents. This assumption implies that the state of all active leaves and their last `k` ancestors are all available. The underlying implementation is expected to support `k` of a few hundred blocks, but we reduce this to a very conservative `k=5` for our purposes. - * There is an underlying **networking** framework which provides **peer discovery** services which will provide us with peers and will not create "loopback" connections to our own node. The number of peers we will have is assumed to be bounded at 1000. - * There is a **transaction pool** and a **transaction propagation** mechanism which maintains a set of current transactions and distributes to connected peers. Current transactions are those which are not outdated relative to some "best" fork of the chain, which is part of the active heads, and have not been included in the best fork. diff --git a/roadmap/implementers-guide/src/node/approval/README.md b/roadmap/implementers-guide/src/node/approval/README.md deleted file mode 100644 index ac636853084e..000000000000 --- a/roadmap/implementers-guide/src/node/approval/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Approval Subsystems - -The approval subsystems implement the node-side of the [Approval Protocol](../../protocol-approval.md). - -We make a divide between the [assignment/voting logic](approval-voting.md) and the [distribution logic](approval-distribution.md) that distributes assignment certifications and approval votes. The logic in the assignment and voting also informs the GRANDPA voting rule on how to vote. - -These subsystems are intended to flag issues and begin [participating in live disputes](../disputes/dispute-participation.md). Dispute subsystems also track all observed votes (backing, approval, and dispute-specific) by all validators on all candidates. diff --git a/roadmap/implementers-guide/src/node/approval/approval-distribution.md b/roadmap/implementers-guide/src/node/approval/approval-distribution.md deleted file mode 100644 index 68f0ab59b196..000000000000 --- a/roadmap/implementers-guide/src/node/approval/approval-distribution.md +++ /dev/null @@ -1,252 +0,0 @@ -# Approval Distribution - -A subsystem for the distribution of assignments and approvals for approval checks on candidates over the network. - -The [Approval Voting](approval-voting.md) subsystem is responsible for active participation in a protocol designed to select a sufficient number of validators to check each and every candidate which appears in the relay chain. Statements of participation in this checking process are divided into two kinds: - - **Assignments** indicate that validators have been selected to do checking - - **Approvals** indicate that validators have checked and found the candidate satisfactory. - -The [Approval Voting](approval-voting.md) subsystem handles all the issuing and tallying of this protocol, but this subsystem is responsible for the disbursal of statements among the validator-set. - -The inclusion pipeline of candidates concludes after availability, and only after inclusion do candidates actually get pushed into the approval checking pipeline. As such, this protocol deals with the candidates _made available by_ particular blocks, as opposed to the candidates which actually appear within those blocks, which are the candidates _backed by_ those blocks. Unless stated otherwise, whenever we reference a candidate partially by block hash, we are referring to the set of candidates _made available by_ those blocks. - -We implement this protocol as a gossip protocol, and like other parachain-related gossip protocols our primary concerns are about ensuring fast message propagation while maintaining an upper bound on the number of messages any given node must store at any time. - -Approval messages should always follow assignments, so we need to be able to discern two pieces of information based on our [View](../../types/network.md#universal-types): - 1. Is a particular assignment relevant under a given `View`? - 2. Is a particular approval relevant to any assignment in a set? - -For our own local view, these two queries must not yield false negatives. When applied to our peers' views, it is acceptable for them to yield false negatives. The reason for that is that our peers' views may be beyond ours, and we are not capable of fully evaluating them. Once we have caught up, we can check again for false negatives to continue distributing. - -For assignments, what we need to be checking is whether we are aware of the (block, candidate) pair that the assignment references. For approvals, we need to be aware of an assignment by the same validator which references the candidate being approved. - -However, awareness on its own of a (block, candidate) pair would imply that even ancient candidates all the way back to the genesis are relevant. We are actually not interested in anything before finality. - - -## Protocol - -Input: - - `ApprovalDistributionMessage::NewBlocks` - - `ApprovalDistributionMessage::DistributeAssignment` - - `ApprovalDistributionMessage::DistributeApproval` - - `ApprovalDistributionMessage::NetworkBridgeUpdateV1` - - `OverseerSignal::BlockFinalized` - -Output: - - `ApprovalVotingMessage::CheckAndImportAssignment` - - `ApprovalVotingMessage::CheckAndImportApproval` - - `NetworkBridgeMessage::SendValidationMessage::ApprovalDistribution` - -## Functionality - -```rust -type BlockScopedCandidate = (Hash, CandidateHash); - -enum PendingMessage { - Assignment(IndirectAssignmentCert, CoreIndex), - Approval(IndirectSignedApprovalVote), -} - -/// The `State` struct is responsible for tracking the overall state of the subsystem. -/// -/// It tracks metadata about our view of the unfinalized chain, which assignments and approvals we have seen, and our peers' views. -struct State { - // These two fields are used in conjunction to construct a view over the unfinalized chain. - blocks_by_number: BTreeMap>, - blocks: HashMap, - - /// Our view updates to our peers can race with `NewBlocks` updates. We store messages received - /// against the directly mentioned blocks in our view in this map until `NewBlocks` is received. - /// - /// As long as the parent is already in the `blocks` map and `NewBlocks` messages aren't delayed - /// by more than a block length, this strategy will work well for mitigating the race. This is - /// also a race that occurs typically on local networks. - pending_known: HashMap)>>, - - // Peer view data is partially stored here, and partially inline within the `BlockEntry`s - peer_views: HashMap, -} - -enum MessageFingerprint { - Assigment(Hash, u32, ValidatorIndex), - Approval(Hash, u32, ValidatorIndex), -} - -struct Knowledge { - known_messages: HashSet, -} - -struct PeerKnowledge { - /// The knowledge we've sent to the peer. - sent: Knowledge, - /// The knowledge we've received from the peer. - received: Knowledge, -} - -/// Information about blocks in our current view as well as whether peers know of them. -struct BlockEntry { - // Peers who we know are aware of this block and thus, the candidates within it. This maps to their knowledge of messages. - known_by: HashMap, - // The number of the block. - number: BlockNumber, - // The parent hash of the block. - parent_hash: Hash, - // Our knowledge of messages. - knowledge: Knowledge, - // A votes entry for each candidate. - candidates: IndexMap, -} - -enum ApprovalState { - Assigned(AssignmentCert), - Approved(AssignmentCert, ApprovalSignature), -} - -/// Information about candidates in the context of a particular block they are included in. In other words, -/// multiple `CandidateEntry`s may exist for the same candidate, if it is included by multiple blocks - this is likely the case -/// when there are forks. -struct CandidateEntry { - approvals: HashMap, -} -``` - -### Network updates - -#### `NetworkBridgeEvent::PeerConnected` - -Add a blank view to the `peer_views` state. - -#### `NetworkBridgeEvent::PeerDisconnected` - -Remove the view under the associated `PeerId` from `State::peer_views`. - -Iterate over every `BlockEntry` and remove `PeerId` from it. - -#### `NetworkBridgeEvent::OurViewChange` - -Remove entries in `pending_known` for all hashes not present in the view. -Ensure a vector is present in `pending_known` for each hash in the view that does not have an entry in `blocks`. - -#### `NetworkBridgeEvent::PeerViewChange` - -Invoke `unify_with_peer(peer, view)` to catch them up to messages we have. - -We also need to use the `view.finalized_number` to remove the `PeerId` from any blocks that it won't be wanting information about anymore. Note that we have to be on guard for peers doing crazy stuff like jumping their 'finalized_number` forward 10 trillion blocks to try and get us stuck in a loop for ages. - -One of the safeguards we can implement is to reject view updates from peers where the new `finalized_number` is less than the previous. - -We augment that by defining `constrain(x)` to output the x bounded by the first and last numbers in `state.blocks_by_number`. - -From there, we can loop backwards from `constrain(view.finalized_number)` until `constrain(last_view.finalized_number)` is reached, removing the `PeerId` from all `BlockEntry`s referenced at that height. We can break the loop early if we ever exit the bound supplied by the first block in `state.blocks_by_number`. - -#### `NetworkBridgeEvent::PeerMessage` - -If the block hash referenced by the message exists in `pending_known`, add it to the vector of pending messages and return. - -If the message is of type `ApprovalDistributionV1Message::Assignment(assignment_cert, claimed_index)`, then call `import_and_circulate_assignment(MessageSource::Peer(sender), assignment_cert, claimed_index)` - -If the message is of type `ApprovalDistributionV1Message::Approval(approval_vote)`, then call `import_and_circulate_approval(MessageSource::Peer(sender), approval_vote)` - -### Subsystem Updates - -#### `ApprovalDistributionMessage::NewBlocks` - -Create `BlockEntry` and `CandidateEntries` for all blocks. - -For all entries in `pending_known`: - * If there is now an entry under `blocks` for the block hash, drain all messages and import with `import_and_circulate_assignment` and `import_and_circulate_approval`. - -For all peers: - * Compute `view_intersection` as the intersection of the peer's view blocks with the hashes of the new blocks. - * Invoke `unify_with_peer(peer, view_intersection)`. - -#### `ApprovalDistributionMessage::DistributeAsignment` - -Call `import_and_circulate_assignment` with `MessageSource::Local`. - -#### `ApprovalDistributionMessage::DistributeApproval` - -Call `import_and_circulate_approval` with `MessageSource::Local`. - -#### `OverseerSignal::BlockFinalized` - -Prune all lists from `blocks_by_number` with number less than or equal to `finalized_number`. Prune all the `BlockEntry`s referenced by those lists. - - -### Utility - -```rust -enum MessageSource { - Peer(PeerId), - Local, -} -``` - -#### `import_and_circulate_assignment(source: MessageSource, assignment: IndirectAssignmentCert, claimed_candidate_index: CandidateIndex)` - -Imports an assignment cert referenced by block hash and candidate index. As a postcondition, if the cert is valid, it will have distributed the cert to all peers who have the block in their view, with the exclusion of the peer referenced by the `MessageSource`. - -We maintain a few invariants: - * we only send an assignment to a peer after we add its fingerprint to our knowledge - * we add a fingerprint of an assignment to our knowledge only if it's valid and hasn't been added before - -The algorithm is the following: - - * Load the BlockEntry using `assignment.block_hash`. If it does not exist, report the source if it is `MessageSource::Peer` and return. - * Compute a fingerprint for the `assignment` using `claimed_candidate_index`. - * If the source is `MessageSource::Peer(sender)`: - * check if `peer` appears under `known_by` and whether the fingerprint is in the knowledge of the peer. If the peer does not know the block, report for providing data out-of-view and proceed. If the peer does know the block and the `sent` knowledge contains the fingerprint, report for providing replicate data and return, otherwise, insert into the `received` knowledge and return. - * If the message fingerprint appears under the `BlockEntry`'s `Knowledge`, give the peer a small positive reputation boost, - add the fingerprint to the peer's knowledge only if it knows about the block and return. - Note that we must do this after checking for out-of-view and if the peers knows about the block to avoid being spammed. - If we did this check earlier, a peer could provide data out-of-view repeatedly and be rewarded for it. - * Dispatch `ApprovalVotingMessage::CheckAndImportAssignment(assignment)` and wait for the response. - * If the result is `AssignmentCheckResult::Accepted` - * If the vote was accepted but not duplicate, give the peer a positive reputation boost - * add the fingerprint to both our and the peer's knowledge in the `BlockEntry`. Note that we only doing this after making sure we have the right fingerprint. - * If the result is `AssignmentCheckResult::AcceptedDuplicate`, add the fingerprint to the peer's knowledge if it knows about the block and return. - * If the result is `AssignmentCheckResult::TooFarInFuture`, mildly punish the peer and return. - * If the result is `AssignmentCheckResult::Bad`, punish the peer and return. - * If the source is `MessageSource::Local(CandidateIndex)` - * check if the fingerprint appears under the `BlockEntry's` knowledge. If not, add it. - * Load the candidate entry for the given candidate index. It should exist unless there is a logic error in the approval voting subsystem. - * Set the approval state for the validator index to `ApprovalState::Assigned` unless the approval state is set already. This should not happen as long as the approval voting subsystem instructs us to ignore duplicate assignments. - * Dispatch a `ApprovalDistributionV1Message::Assignment(assignment, candidate_index)` to all peers in the `BlockEntry`'s `known_by` set, excluding the peer in the `source`, if `source` has kind `MessageSource::Peer`. Add the fingerprint of the assignment to the knowledge of each peer. - - -#### `import_and_circulate_approval(source: MessageSource, approval: IndirectSignedApprovalVote)` - -Imports an approval signature referenced by block hash and candidate index: - - * Load the BlockEntry using `approval.block_hash` and the candidate entry using `approval.candidate_entry`. If either does not exist, report the source if it is `MessageSource::Peer` and return. - * Compute a fingerprint for the approval. - * Compute a fingerprint for the corresponding assignment. If the `BlockEntry`'s knowledge does not contain that fingerprint, then report the source if it is `MessageSource::Peer` and return. All references to a fingerprint after this refer to the approval's, not the assignment's. - * If the source is `MessageSource::Peer(sender)`: - * check if `peer` appears under `known_by` and whether the fingerprint is in the knowledge of the peer. If the peer does not know the block, report for providing data out-of-view and proceed. If the peer does know the block and the `sent` knowledge contains the fingerprint, report for providing replicate data and return, otherwise, insert into the `received` knowledge and return. - * If the message fingerprint appears under the `BlockEntry`'s `Knowledge`, give the peer a small positive reputation boost, - add the fingerprint to the peer's knowledge only if it knows about the block and return. - Note that we must do this after checking for out-of-view to avoid being spammed. If we did this check earlier, a peer could provide data out-of-view repeatedly and be rewarded for it. - * Dispatch `ApprovalVotingMessage::CheckAndImportApproval(approval)` and wait for the response. - * If the result is `VoteCheckResult::Accepted(())`: - * Give the peer a positive reputation boost and add the fingerprint to both our and the peer's knowledge. - * If the result is `VoteCheckResult::Bad`: - * Report the peer and return. - * Load the candidate entry for the given candidate index. It should exist unless there is a logic error in the approval voting subsystem. - * Set the approval state for the validator index to `ApprovalState::Approved`. It should already be in the `Assigned` state as our `BlockEntry` knowledge contains a fingerprint for the assignment. - * Dispatch a `ApprovalDistributionV1Message::Approval(approval)` to all peers in the `BlockEntry`'s `known_by` set, excluding the peer in the `source`, if `source` has kind `MessageSource::Peer`. Add the fingerprint of the assignment to the knowledge of each peer. Note that this obeys the politeness conditions: - * We guarantee elsewhere that all peers within `known_by` are aware of all assignments relative to the block. - * We've checked that this specific approval has a corresponding assignment within the `BlockEntry`. - * Thus, all peers are aware of the assignment or have a message to them in-flight which will make them so. - - -#### `unify_with_peer(peer: PeerId, view)`: - -1. Initialize a set `fresh_blocks = {}` - -For each block in the view: - 2. Load the `BlockEntry` for the block. If the block is unknown, or the number is less than or equal to the view's finalized number go to step 6. - 3. Inspect the `known_by` set of the `BlockEntry`. If the peer is already present, go to step 6. - 4. Add the peer to `known_by` with a cloned version of `block_entry.knowledge`. and add the hash of the block to `fresh_blocks`. - 5. Return to step 2 with the ancestor of the block. - -6. For each block in `fresh_blocks`, send all assignments and approvals for all candidates in those blocks to the peer. diff --git a/roadmap/implementers-guide/src/node/approval/approval-voting.md b/roadmap/implementers-guide/src/node/approval/approval-voting.md deleted file mode 100644 index 0ba6e0db23ef..000000000000 --- a/roadmap/implementers-guide/src/node/approval/approval-voting.md +++ /dev/null @@ -1,376 +0,0 @@ -# Approval Voting - -Reading the [section on the approval protocol](../../protocol-approval.md) will likely be necessary to understand the aims of this subsystem. - -Approval votes are split into two parts: Assignments and Approvals. Validators first broadcast their assignment to indicate intent to check a candidate. Upon successfully checking, they broadcast an approval vote. If a validator doesn't broadcast their approval vote shortly after issuing an assignment, this is an indication that they are being prevented from recovering or validating the block data and that more validators should self-select to check the candidate. This is known as a "no-show". - -The core of this subsystem is a Tick-based timer loop, where Ticks are 500ms. We also reason about time in terms of DelayTranches, which measure the number of ticks elapsed since a block was produced. We track metadata for all un-finalized but included candidates. We compute our local assignments to check each candidate, as well as which DelayTranche those assignments may be minimally triggered at. As the same candidate may appear in more than one block, we must produce our potential assignments for each (Block, Candidate) pair. The timing loop is based on waiting for assignments to become no-shows or waiting to broadcast and begin our own assignment to check. - -Another main component of this subsystem is the logic for determining when a (Block, Candidate) pair has been approved and when to broadcast and trigger our own assignment. Once a (Block, Candidate) pair has been approved, we mark a corresponding bit in the BlockEntry that indicates the candidate has been approved under the block. When we trigger our own assignment, we broadcast it via Approval Distribution, begin fetching the data from Availability Recovery, and then pass it through to the Candidate Validation. Once these steps are successful, we issue our approval vote. If any of these steps fail, we don't issue any vote and will "no-show" from the perspective of other validators. In the future we will initiate disputes as well. - -Where this all fits into Polkadot is via block finality. Our goal is to not finalize any block containing a candidate that is not approved. We provide a hook for a custom GRANDPA voting rule - GRANDPA makes requests of the form (target, minimum) consisting of a target block (i.e. longest chain) that it would like to finalize, and a minimum block which, due to the rules of GRANDPA, must be voted on. The minimum is typically the last finalized block, but may be beyond it, in the case of having a last-round-estimate beyond the last finalized. Thus, our goal is to inform GRANDPA of some block between target and minimum which we believe can be finalized safely. We do this by iterating backwards from the target to the minimum and finding the longest continuous chain from minimum where all candidates included by those blocks have been approved. - -## Protocol - -Input: - - `ApprovalVotingMessage::CheckAndImportAssignment` - - `ApprovalVotingMessage::CheckAndImportApproval` - - `ApprovalVotingMessage::ApprovedAncestor` - -Output: - - `ApprovalDistributionMessage::DistributeAssignment` - - `ApprovalDistributionMessage::DistributeApproval` - - `RuntimeApiMessage::Request` - - `ChainApiMessage` - - `AvailabilityRecoveryMessage::Recover` - - `CandidateExecutionMessage::ValidateFromExhaustive` - -## Functionality - -The approval voting subsystem is responsible for casting votes and determining approval of candidates and as a result, blocks. - -This subsystem wraps a database which is used to store metadata about unfinalized blocks and the candidates within them. Candidates may appear in multiple blocks, and assignment criteria are chosen differently based on the hash of the block they appear in. - -## Database Schema - -The database schema is designed with the following goals in mind: - 1. To provide an easy index from unfinalized blocks to candidates - 1. To provide a lookup from candidate hash to approval status - 1. To be easy to clear on start-up. What has happened while we were offline is unimportant. - 1. To be fast to clear entries outdated by finality - -Structs: - -```rust -struct TrancheEntry { - tranche: DelayTranche, - // assigned validators who have not yet approved, and the instant we received - // their assignment. - assignments: Vec<(ValidatorIndex, Tick)>, -} - -struct OurAssignment { - cert: AssignmentCert, - tranche: DelayTranche, - validator_index: ValidatorIndex, - triggered: bool, -} - -struct ApprovalEntry { - tranches: Vec, // sorted ascending by tranche number. - backing_group: GroupIndex, - our_assignment: Option, - our_approval_sig: Option, - assignments: Bitfield, // n_validators bits - approved: bool, -} - -struct CandidateEntry { - candidate: CandidateReceipt, - session: SessionIndex, - // Assignments are based on blocks, so we need to track assignments separately - // based on the block we are looking at. - block_assignments: HashMap, - approvals: Bitfield, // n_validators bits -} - -struct BlockEntry { - block_hash: Hash, - session: SessionIndex, - slot: Slot, - // random bytes derived from the VRF submitted within the block by the block - // author as a credential and used as input to approval assignment criteria. - relay_vrf_story: [u8; 32], - // The candidates included as-of this block and the index of the core they are - // leaving. Sorted ascending by core index. - candidates: Vec<(CoreIndex, Hash)>, - // A bitfield where the i'th bit corresponds to the i'th candidate in `candidates`. - // The i'th bit is `true` iff the candidate has been approved in the context of - // this block. The block can be considered approved has all bits set to 1 - approved_bitfield: Bitfield, - children: Vec, -} - -// slot_duration * 2 + DelayTranche gives the number of delay tranches since the -// unix epoch. -type Tick = u64; - -struct StoredBlockRange(BlockNumber, BlockNumber); -``` - -In the schema, we map - -``` -"StoredBlocks" => StoredBlockRange -BlockNumber => Vec -BlockHash => BlockEntry -CandidateHash => CandidateEntry -``` - -## Logic - -```rust -const APPROVAL_SESSIONS: SessionIndex = 6; -``` - -In-memory state: - -```rust -struct ApprovalVoteRequest { - validator_index: ValidatorIndex, - block_hash: Hash, - candidate_index: CandidateIndex, -} - -// Requests that background work (approval voting tasks) may need to make of the main subsystem -// task. -enum BackgroundRequest { - ApprovalVote(ApprovalVoteRequest), - // .. others, unspecified as per implementation. -} - -// This is the general state of the subsystem. The actual implementation may split this -// into further pieces. -struct State { - earliest_session: SessionIndex, - session_info: Vec, - babe_epoch: Option, // information about a cached BABE epoch. - keystore: KeyStore, - - // A scheduler which keeps at most one wakeup per hash, candidate hash pair and - // maps such pairs to `Tick`s. - wakeups: Wakeups, - - // These are connected to each other. - background_tx: mpsc::Sender, - background_rx: mpsc::Receiver, -} -``` - -This guide section makes no explicit references to writes to or reads from disk. Instead, it handles them implicitly, with the understanding that updates to block, candidate, and approval entries are persisted to disk. - -[`SessionInfo`](../../runtime/session_info.md) - -On start-up, we clear everything currently stored by the database. This is done by loading the `StoredBlockRange`, iterating through each block number, iterating through each block hash, and iterating through each candidate referenced by each block. Although this is `O(o*n*p)`, we don't expect to have more than a few unfinalized blocks at any time and in extreme cases, a few thousand. The clearing operation should be relatively fast as a result. - -Main loop: - * Each iteration, select over all of - * The next `Tick` in `wakeups`: trigger `wakeup_process` for each `(Hash, Hash)` pair scheduled under the `Tick` and then remove all entries under the `Tick`. - * The next message from the overseer: handle the message as described in the [Incoming Messages section](#incoming-messages) - * The next approval vote request from `background_rx` - * If this is an `ApprovalVoteRequest`, [Issue an approval vote](#issue-approval-vote). - -### Incoming Messages - -#### `OverseerSignal::BlockFinalized` - -On receiving an `OverseerSignal::BlockFinalized(h)`, we fetch the block number `b` of that block from the ChainApi subsystem. We update our `StoredBlockRange` to begin at `b+1`. Additionally, we remove all block entries and candidates referenced by them up to and including `b`. Lastly, we prune out all descendents of `h` transitively: when we remove a `BlockEntry` with number `b` that is not equal to `h`, we recursively delete all the `BlockEntry`s referenced as children. We remove the `block_assignments` entry for the block hash and if `block_assignments` is now empty, remove the `CandidateEntry`. We also update each of the `BlockNumber -> Vec` keys in the database to reflect the blocks at that height, clearing if empty. - - -#### `OverseerSignal::ActiveLeavesUpdate` - -On receiving an `OverseerSignal::ActiveLeavesUpdate(update)`: - * We determine the set of new blocks that were not in our previous view. This is done by querying the ancestry of all new items in the view and contrasting against the stored `BlockNumber`s. Typically, there will be only one new block. We fetch the headers and information on these blocks from the ChainApi subsystem. Stale leaves in the update can be ignored. - * We update the `StoredBlockRange` and the `BlockNumber` maps. - * We use the RuntimeApiSubsystem to determine information about these blocks. It is generally safe to assume that runtime state is available for recent, unfinalized blocks. In the case that it isn't, it means that we are catching up to the head of the chain and needn't worry about assignments to those blocks anyway, as the security assumption of the protocol tolerates nodes being temporarily offline or out-of-date. - * We fetch the set of candidates included by each block by dispatching a `RuntimeApiRequest::CandidateEvents` and checking the `CandidateIncluded` events. - * We fetch the session of the block by dispatching a `session_index_for_child` request with the parent-hash of the block. - * If the `session index - APPROVAL_SESSIONS > state.earliest_session`, then bump `state.earliest_sessions` to that amount and prune earlier sessions. - * If the session isn't in our `state.session_info`, load the session info for it and for all sessions since the earliest-session, including the earliest-session, if that is missing. And it can be, just after pruning, if we've done a big jump forward, as is the case when we've just finished chain synchronization. - * If any of the runtime API calls fail, we just warn and skip the block. - * We use the RuntimeApiSubsystem to determine the set of candidates included in these blocks and use BABE logic to determine the slot number and VRF of the blocks. - * We also note how late we appear to have received the block. We create a `BlockEntry` for each block and a `CandidateEntry` for each candidate obtained from `CandidateIncluded` events after making a `RuntimeApiRequest::CandidateEvents` request. - * For each candidate, if the amount of needed approvals is more than the validators remaining after the backing group of the candidate is subtracted, then the candidate is insta-approved as approval would be impossible otherwise. If all candidates in the block are insta-approved, or there are no candidates in the block, then the block is insta-approved. If the block is insta-approved, a [`ChainSelectionMessage::Approvedl][CSM] should be sent for the block. - * Ensure that the `CandidateEntry` contains a `block_assignments` entry for the block, with the correct backing group set. - * If a validator in this session, compute and assign `our_assignment` for the `block_assignments` - * Only if not a member of the backing group. - * Run `RelayVRFModulo` and `RelayVRFDelay` according to the [the approvals protocol section](../../protocol-approval.md#assignment-criteria). Ensure that the assigned core derived from the output is covered by the auxiliary signature aggregated in the `VRFPRoof`. - * [Handle Wakeup](#handle-wakeup) for each new candidate in each new block - this will automatically broadcast a 0-tranche assignment, kick off approval work, and schedule the next delay. - * Dispatch an `ApprovalDistributionMessage::NewBlocks` with the meta information filled out for each new block. - -#### `ApprovalVotingMessage::CheckAndImportAssignment` - -On receiving a `ApprovalVotingMessage::CheckAndImportAssignment` message, we check the assignment cert against the block entry. The cert itself contains information necessary to determine the candidate that is being assigned-to. In detail: - * Load the `BlockEntry` for the relay-parent referenced by the message. If there is none, return `AssignmentCheckResult::Bad`. - * Fetch the `SessionInfo` for the session of the block - * Determine the assignment key of the validator based on that. - * Determine the claimed core index by looking up the candidate with given index in `block_entry.candidates`. Return `AssignmentCheckResult::Bad` if missing. - * Check the assignment cert - * If the cert kind is `RelayVRFModulo`, then the certificate is valid as long as `sample < session_info.relay_vrf_samples` and the VRF is valid for the validator's key with the input `block_entry.relay_vrf_story ++ sample.encode()` as described with [the approvals protocol section](../../protocol-approval.md#assignment-criteria). We set `core_index = vrf.make_bytes().to_u32() % session_info.n_cores`. If the `BlockEntry` causes inclusion of a candidate at `core_index`, then this is a valid assignment for the candidate at `core_index` and has delay tranche 0. Otherwise, it can be ignored. - * If the cert kind is `RelayVRFDelay`, then we check if the VRF is valid for the validator's key with the input `block_entry.relay_vrf_story ++ cert.core_index.encode()` as described in [the approvals protocol section](../../protocol-approval.md#assignment-criteria). The cert can be ignored if the block did not cause inclusion of a candidate on that core index. Otherwise, this is a valid assignment for the included candidate. The delay tranche for the assignment is determined by reducing `(vrf.make_bytes().to_u64() % (session_info.n_delay_tranches + session_info.zeroth_delay_tranche_width)).saturating_sub(session_info.zeroth_delay_tranche_width)`. - * We also check that the core index derived by the output is covered by the `VRFProof` by means of an auxiliary signature. - * If the delay tranche is too far in the future, return `AssignmentCheckResult::TooFarInFuture`. - * Import the assignment. - * Load the candidate in question and access the `approval_entry` for the block hash the cert references. - * Ignore if we already observe the validator as having been assigned. - * Ensure the validator index is not part of the backing group for the candidate. - * Ensure the validator index is not present in the approval entry already. - * Create a tranche entry for the delay tranche in the approval entry and note the assignment within it. - * Note the candidate index within the approval entry. - * [Schedule a wakeup](#schedule-wakeup) for this block, candidate pair. - * return the appropriate `AssignmentCheckResult` on the response channel. - -#### `ApprovalVotingMessage::CheckAndImportApproval` - -On receiving a `CheckAndImportApproval(indirect_approval_vote, response_channel)` message: - * Fetch the `BlockEntry` from the indirect approval vote's `block_hash`. If none, return `ApprovalCheckResult::Bad`. - * Fetch the `CandidateEntry` from the indirect approval vote's `candidate_index`. If the block did not trigger inclusion of enough candidates, return `ApprovalCheckResult::Bad`. - * Construct a `SignedApprovalVote` using the candidate hash and check against the validator's approval key, based on the session info of the block. If invalid or no such validator, return `ApprovalCheckResult::Bad`. - * Send `ApprovalCheckResult::Accepted` - * Dispatch a [`DisputeCoordinatorMessage::ImportStatement`](../../types/overseer-protocol.md#dispute-coordinator-message) with the approval statement. - * [Import the checked approval vote](#import-checked-approval) - -#### `ApprovalVotingMessage::ApprovedAncestor` - -On receiving an `ApprovedAncestor(Hash, BlockNumber, response_channel)`: - * Iterate over the ancestry of the hash all the way back to block number given, starting from the provided block hash. Load the `CandidateHash`es from each block entry. - * Keep track of an `all_approved_max: Option<(Hash, BlockNumber, Vec<(Hash, Vec))>`. - * For each block hash encountered, load the `BlockEntry` associated. If any are not found, return `None` on the response channel and conclude. - * If the block entry's `approval_bitfield` has all bits set to 1 and `all_approved_max == None`, set `all_approved_max = Some((current_hash, current_number))`. - * If the block entry's `approval_bitfield` has any 0 bits, set `all_approved_max = None`. - * If `all_approved_max` is `Some`, push the current block hash and candidate hashes onto the list of blocks and candidates `all_approved_max`. - * After iterating all ancestry, return `all_approved_max`. - -### Updates and Auxiliary Logic - -#### Import Checked Approval - * Import an approval vote which we can assume to have passed signature checks and correspond to an imported assignment. - * Requires `(BlockEntry, CandidateEntry, ValidatorIndex)` - * Set the corresponding bit of the `approvals` bitfield in the `CandidateEntry` to `1`. If already `1`, return. - * Checks the approval state of a candidate under a specific block, and updates the block and candidate entries accordingly. - * Checks the `ApprovalEntry` for the block. - * [determine the tranches to inspect](#determine-required-tranches) of the candidate, - * [the candidate is approved under the block](#check-approval), set the corresponding bit in the `block_entry.approved_bitfield`. - * If the block is now fully approved and was not before, send a [`ChainSelectionMessage::Approved`][CSM]. - * Otherwise, [schedule a wakeup of the candidate](#schedule-wakeup) - * If the approval vote originates locally, set the `our_approval_sig` in the candidate entry. - -#### Handling Wakeup - * Handle a previously-scheduled wakeup of a candidate under a specific block. - * Requires `(relay_block, candidate_hash)` - * Load the `BlockEntry` and `CandidateEntry` from disk. If either is not present, this may have lost a race with finality and can be ignored. Also load the `ApprovalEntry` for the block and candidate. - * [determine the `RequiredTranches` of the candidate](#determine-required-tranches). - * Determine if we should trigger our assignment. - * If we've already triggered or `OurAssignment` is `None`, we do not trigger. - * If we have `RequiredTranches::All`, then we trigger if the candidate is [not approved](#check-approval). We have no next wakeup as we assume that other validators are doing the same and we will be implicitly woken up by handling new votes. - * If we have `RequiredTranches::Pending { considered, next_no_show, uncovered, maximum_broadcast, clock_drift }`, then we trigger if our assignment's tranche is less than or equal to `maximum_broadcast` and the current tick, with `clock_drift` applied, is at least the tick of our tranche. - * If we have `RequiredTranches::Exact { .. }` then we do not trigger, because this value indicates that no new assignments are needed at the moment. - * If we should trigger our assignment - * Import the assignment to the `ApprovalEntry` - * Broadcast on network with an `ApprovalDistributionMessage::DistributeAssignment`. - * [Launch approval work](#launch-approval-work) for the candidate. - * [Schedule a new wakeup](#schedule-wakeup) of the candidate. - -#### Schedule Wakeup - * Requires `(approval_entry, candidate_entry)` which effectively denotes a `(Block Hash, Candidate Hash)` pair - the candidate, along with the block it appears in. - * Also requires `RequiredTranches` - * If the `approval_entry` is approved, this doesn't need to be woken up again. - * If `RequiredTranches::All` - no wakeup. We assume other incoming votes will trigger wakeup and potentially re-schedule. - * If `RequiredTranches::Pending { considered, next_no_show, uncovered, maximum_broadcast, clock_drift }` - schedule at the lesser of the next no-show tick, or the tick, offset positively by `clock_drift` of the next non-empty tranche we are aware of after `considered`, including any tranche containing our own unbroadcast assignment. This can lead to no wakeup in the case that we have already broadcast our assignment and there are no pending no-shows; that is, we have approval votes for every assignment we've received that is not already a no-show. In this case, we will be re-triggered by other validators broadcasting their assignments. - * If `RequiredTranches::Exact { next_no_show, .. } - set a wakeup for the next no-show tick. - -#### Launch Approval Work - * Requires `(SessionIndex, SessionInfo, CandidateReceipt, ValidatorIndex, backing_group, block_hash, candidate_index)` - * Extract the public key of the `ValidatorIndex` from the `SessionInfo` for the session. - * Issue an `AvailabilityRecoveryMessage::RecoverAvailableData(candidate, session_index, Some(backing_group), response_sender)` - * Load the historical validation code of the parachain by dispatching a `RuntimeApiRequest::ValidationCodeByHash(`descriptor.validation_code_hash`)` against the state of `block_hash`. - * Spawn a background task with a clone of `background_tx` - * Wait for the available data - * Issue a `CandidateValidationMessage::ValidateFromExhaustive` message - * Wait for the result of validation - * Check that the result of validation, if valid, matches the commitments in the receipt. - * If valid, issue a message on `background_tx` detailing the request. - * If any of the data, the candidate, or the commitments are invalid, issue on `background_tx` a [`DisputeCoordinatorMessage::IssueLocalStatement`](../../types/overseer-protocol.md#dispute-coordinator-message) with `valid = false` to initiate a dispute. - -#### Issue Approval Vote - * Fetch the block entry and candidate entry. Ignore if `None` - we've probably just lost a race with finality. - * Construct a `SignedApprovalVote` with the validator index for the session. - * [Import the checked approval vote](#import-checked-approval). It is "checked" as we've just issued the signature. - * Construct a `IndirectSignedApprovalVote` using the information about the vote. - * Dispatch `ApprovalDistributionMessage::DistributeApproval`. - -### Determining Approval of Candidate - -#### Determine Required Tranches - -This logic is for inspecting an approval entry that tracks the assignments received, along with information on which assignments have corresponding approval votes. Inspection also involves the current time and expected requirements and is used to help the higher-level code determine the following: - * Whether to broadcast the local assignment - * Whether to check that the candidate entry has been completely approved. - * If the candidate is waiting on approval, when to schedule the next wakeup of the `(candidate, block)` pair at a point where the state machine could be advanced. - -These routines are pure functions which only depend on the environmental state. The expectation is that this determination is re-run every time we attempt to update an approval entry: either when we trigger a wakeup to advance the state machine based on a no-show or our own broadcast, or when we receive further assignments or approvals from the network. - -Thus it may be that at some point in time, we consider that tranches 0..X is required to be considered, but as we receive more information, we might require fewer tranches. Or votes that we perceived to be missing and require replacement are filled in and change our view. - -Requires `(approval_entry, approvals_received, tranche_now, block_tick, no_show_duration, needed_approvals)` - -```rust -enum RequiredTranches { - // All validators appear to be required, based on tranches already taken and remaining no-shows. - All, - // More tranches required - We're awaiting more assignments. - Pending { - /// The highest considered delay tranche when counting assignments. - considered: DelayTranche, - /// The tick at which the next no-show, of the assignments counted, would occur. - next_no_show: Option, - /// The highest tranche to consider when looking to broadcast own assignment. - /// This should be considered along with the clock drift to avoid broadcasting - /// assignments that are before the local time. - maximum_broadcast: DelayTranche, - /// The clock drift, in ticks, to apply to the local clock when determining whether - /// to broadcast an assignment or when to schedule a wakeup. The local clock should be treated - /// as though it is `clock_drift` ticks earlier. - clock_drift: Tick, - }, - // An exact number of required tranches and a number of no-shows. This indicates that the amount of `needed_approvals` are assigned and additionally all no-shows are covered. - Exact { - /// The tranche to inspect up to. - needed: DelayTranche, - /// The amount of missing votes that should be tolerated. - tolerated_missing: usize, - /// When the next no-show would be, if any. This is used to schedule the next wakeup in the - /// event that there are some assignments that don't have corresponding approval votes. If this - /// is `None`, all assignments have approvals. - next_no_show: Option, - } -} -``` - -**Clock-drift and Tranche-taking** - -Our vote-counting procedure depends heavily on how we interpret time based on the presence of no-shows - assignments which have no corresponding approval after some time. - -We have this is because of how we handle no-shows: we keep track of the depth of no-shows we are covering. - -As an example: there may be initial no-shows in tranche 0. It'll take `no_show_duration` ticks before those are considered no-shows. Then, we don't want to immediately take `no_show_duration` more tranches. Instead, we want to take one tranche for each uncovered no-show. However, as we take those tranches, there may be further no-shows. Since these depth-1 no-shows should have only been triggered after the depth-0 no-shows were already known to be no-shows, we need to discount the local clock by `no_show_duration` to see whether these should be considered no-shows or not. There may be malicious parties who broadcast their assignment earlier than they were meant to, who shouldn't be counted as instant no-shows. We continue onwards to cover all depth-1 no-shows which may lead to depth-2 no-shows and so on. - -Likewise, when considering how many tranches to take, the no-show depth should be used to apply a depth-discount or clock drift to the `tranche_now`. - -**Procedure** - - * Start with `depth = 0`. - * Set a clock drift of `depth * no_show_duration` - * Take tranches up to `tranche_now - clock_drift` until all needed assignments are met. - * Keep track of the `next_no_show` according to the clock drift, as we go. - * If running out of tranches before then, return `Pending { considered, next_no_show, maximum_broadcast, clock_drift }` - * If there are no no-shows, return `Exact { needed, tolerated_missing, next_no_show }` - * `maximum_broadcast` is either `DelayTranche::max_value()` at tranche 0 or otherwise by the last considered tranche + the number of uncovered no-shows at this point. - * If there are no-shows, return to the beginning, incrementing `depth` and attempting to cover the number of no-shows. Each no-show must be covered by a non-empty tranche, which are tranches that have at least one assignment. Each non-empty tranche covers exactly one no-show. - * If at any point, it seems that all validators are required, do an early return with `RequiredTranches::All` which indicates that everyone should broadcast. - -#### Check Approval - * Check whether a candidate is approved under a particular block. - * Requires `(block_entry, candidate_entry, approval_entry, n_tranches)` - * If we have `3 * n_approvals > n_validators`, return true. This is because any set with f+1 validators must have at least one honest validator, who has approved the candidate. - * If `n_tranches` is `RequiredTranches::Pending`, return false - * If `n_tranches` is `RequiredTranches::All`, return false. - * If `n_tranches` is `RequiredTranches::Exact { tranche, tolerated_missing, .. }`, then we return whether all assigned validators up to `tranche` less `tolerated_missing` have approved. e.g. if we had 5 tranches and 1 tolerated missing, we would accept only if all but 1 of assigned validators in tranches 0..=5 have approved. In that example, we also accept all validators in tranches 0..=5 having approved, but that would indicate that the `RequiredTranches` value was incorrectly constructed, so it is not realistic. `tolerated_missing` actually represents covered no-shows. If there are more missing approvals than there are tolerated missing, that indicates that there are some assignments which are not yet no-shows, but may become no-shows, and we should wait for the validators to either approve or become no-shows. - -### Time - -#### Current Tranche - * Given the slot number of a block, and the current time, this informs about the current tranche. - * Convert `time.saturating_sub(slot_number.to_time())` to a delay tranches value - -[CSM]: ../../types/overseer-protocol.md#chainselectionmessage diff --git a/roadmap/implementers-guide/src/node/availability/README.md b/roadmap/implementers-guide/src/node/availability/README.md deleted file mode 100644 index 46ee4b204982..000000000000 --- a/roadmap/implementers-guide/src/node/availability/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Availability Subsystems - -The availability subsystems are responsible for ensuring that Proofs of Validity of backed candidates are widely available within the validator set, without requiring every node to retain a full copy. They accomplish this by broadly distributing erasure-coded chunks of the PoV, keeping track of which validator has which chunk by means of signed bitfields. They are also responsible for reassembling a complete PoV when required, e.g. when a fisherman reports a potentially invalid block. diff --git a/roadmap/implementers-guide/src/node/availability/availability-distribution.md b/roadmap/implementers-guide/src/node/availability/availability-distribution.md deleted file mode 100644 index da12cf4b33cb..000000000000 --- a/roadmap/implementers-guide/src/node/availability/availability-distribution.md +++ /dev/null @@ -1,98 +0,0 @@ -# Availability Distribution - -This subsystem is responsible for distribution availability data to peers. -Availability data are chunks, `PoV`s and `AvailableData` (which is `PoV` + -`PersistedValidationData`). It does so via request response protocols. - -In particular this subsystem is responsible for: - -- Respond to network requests requesting availability data by querying the - [Availability Store](../utility/availability-store.md). -- Request chunks from backing validators to put them in the local `Availability - Store` whenever we find an occupied core on the chain, - this is to ensure availability by at least 2/3+ of all validators, this - happens after a candidate is backed. -- Fetch `PoV` from validators, when requested via `FetchPoV` message from - backing (pov_requester module). -- -The backing subsystem is responsible of making available data available in the -local `Availability Store` upon validation. This subsystem will serve any -network requests by querying that store. - -## Protocol - -This subsystem does not handle any peer set messages, but the `pov_requester` -does connecto to validators of the same backing group on the validation peer -set, to ensure fast propagation of statements between those validators and for -ensuring already established connections for requesting `PoV`s. Other than that -this subsystem drives request/response protocols. - -Input: - -- OverseerSignal::ActiveLeaves(`[ActiveLeavesUpdate]`) -- AvailabilityDistributionMessage{msg: ChunkFetchingRequest} -- AvailabilityDistributionMessage{msg: PoVFetchingRequest} -- AvailabilityDistributionMessage{msg: FetchPoV} - -Output: - -- NetworkBridgeMessage::SendRequests(`[Requests]`, IfDisconnected::TryConnect) -- AvailabilityStore::QueryChunk(candidate_hash, index, response_channel) -- AvailabilityStore::StoreChunk(candidate_hash, chunk) -- AvailabilityStore::QueryAvailableData(candidate_hash, response_channel) -- RuntimeApiRequest::SessionIndexForChild -- RuntimeApiRequest::SessionInfo -- RuntimeApiRequest::AvailabilityCores - -## Functionality - -### PoV Requester - -The PoV requester in the `pov_requester` module takes care of staying connected -to validators of the current backing group of this very validator on the `Validation` -peer set and it will handle `FetchPoV` requests by issuing network requests to -those validators. It will check the hash of the received `PoV`, but will not do any -further validation. That needs to be done by the original `FetchPoV` sender -(backing subsystem). - -### Chunk Requester - -After a candidate is backed, the availability of the PoV block must be confirmed -by 2/3+ of all validators. The chunk requester is responsible of making that -availability a reality. - -It does that by querying checking occupied cores for all active leaves. For each -occupied core it will spawn a task fetching the erasure chunk which has the -`ValidatorIndex` of the node. For this an `ChunkFetchingRequest` is issued, via -substrate's generic request/response protocol. - -The spawned task will start trying to fetch the chunk from validators in -responsible group of the occupied core, in a random order. For ensuring that we -use already open TCP connections wherever possible, the requester maintains a -cache and preserves that random order for the entire session. - -Note however that, because not all validators in a group have to be actual -backers, not all of them are required to have the needed chunk. This in turn -could lead to low throughput, as we have to wait for fetches to fail, -before reaching a validator finally having our chunk. We do rank back validators -not delivering our chunk, but as backers could vary from block to block on a -perfectly legitimate basis, this is still not ideal. See issues [2509](https://github.com/paritytech/polkadot/issues/2509) and [2512](https://github.com/paritytech/polkadot/issues/2512) -for more information. - -The current implementation also only fetches chunks for occupied cores in blocks -in active leaves. This means though, if active leaves skips a block or we are -particularly slow in fetching our chunk, we might not fetch our chunk if -availability reached 2/3 fast enough (slot becomes free). This is not desirable -as we would like as many validators as possible to have their chunk. See this -[issue](https://github.com/paritytech/polkadot/issues/2513) for more details. - - -### Serving - -On the other side the subsystem will listen for incoming `ChunkFetchingRequest`s -and `PoVFetchingRequest`s from the network bridge and will respond to queries, -by looking the requested chunks and `PoV`s up in the availability store, this -happens in the `responder` module. - -We rely on the backing subsystem to make available data available locally in the -`Availability Store` after it has validated it. diff --git a/roadmap/implementers-guide/src/node/availability/availability-recovery.md b/roadmap/implementers-guide/src/node/availability/availability-recovery.md deleted file mode 100644 index 19004f456cda..000000000000 --- a/roadmap/implementers-guide/src/node/availability/availability-recovery.md +++ /dev/null @@ -1,143 +0,0 @@ -# Availability Recovery - -This subsystem is the inverse of the [Availability Distribution](availability-distribution.md) subsystem: validators will serve the availability chunks kept in the availability store to nodes who connect to them. And the subsystem will also implement the other side: the logic for nodes to connect to validators, request availability pieces, and reconstruct the `AvailableData`. - -This version of the availability recovery subsystem is based off of direct connections to validators. In order to recover any given `AvailableData`, we must recover at least `f + 1` pieces from validators of the session. Thus, we will connect to and query randomly chosen validators until we have received `f + 1` pieces. - -## Protocol - -`PeerSet`: `Validation` - -Input: - -- NetworkBridgeUpdateV1(update) -- AvailabilityRecoveryMessage::RecoverAvailableData(candidate, session, backing_group, response) - -Output: - -- NetworkBridge::SendValidationMessage -- NetworkBridge::ReportPeer -- AvailabilityStore::QueryChunk - -## Functionality - -We hold a state which tracks the current recovery interactions we have live, as well as which request IDs correspond to which interactions. An interaction is a structure encapsulating all interaction with the network necessary to recover the available data. - -```rust -struct State { - /// Each interaction is implemented as its own remote async task, and these handles are remote - /// for it. - interactions: FuturesUnordered, - /// A multiplexer over receivers from live interactions. - interaction_receivers: FuturesUnordered>, - /// A recent block hash for which state should be available. - live_block_hash: Hash, - // An LRU cache of recently recovered data. - availability_lru: LruCache>, -} - -/// This is a future, which concludes either when a response is received from the interaction, -/// or all the `awaiting` channels have closed. -struct InteractionHandle { - candidate_hash: CandidateHash, - interaction_response: RemoteHandle, - awaiting: Vec>>, -} - -struct Unavailable; -struct Concluded(CandidateHash, Result); - -struct InteractionParams { - validator_authority_keys: Vec, - validators: Vec, - // The number of pieces needed. - threshold: usize, - candidate_hash: Hash, - erasure_root: Hash, -} - -enum InteractionPhase { - RequestFromBackers { - // a random shuffling of the validators from the backing group which indicates the order - // in which we connect to them and request the chunk. - shuffled_backers: Vec, - } - RequestChunks { - // a random shuffling of the validators which indicates the order in which we connect to the validators and - // request the chunk from them. - shuffling: Vec, - received_chunks: Map, - requesting_chunks: FuturesUnordered>, - } -} - -struct Interaction { - to_subsystems: SubsystemSender, - params: InteractionParams, - phase: InteractionPhase, -} -``` - -### Signal Handling - -On `ActiveLeavesUpdate`, if `activated` is non-empty, set `state.live_block_hash` to the first block in `Activated`. - -Ignore `BlockFinalized` signals. - -On `Conclude`, shut down the subsystem. - -#### `AvailabilityRecoveryMessage::RecoverAvailableData(receipt, session, Option, response)` - -1. Check the `availability_lru` for the candidate and return the data if so. -1. Check if there is already an interaction handle for the request. If so, add the response handle to it. -1. Otherwise, load the session info for the given session under the state of `live_block_hash`, and initiate an interaction with *launch_interaction*. Add an interaction handle to the state and add the response channel to it. -1. If the session info is not available, return `RecoveryError::Unavailable` on the response channel. - -### From-interaction logic - -#### `FromInteraction::Concluded` - -1. Load the entry from the `interactions` map. It should always exist, if not for logic errors. Send the result to each member of `awaiting`. -1. Add the entry to the availability_lru. - -### Interaction logic - -#### `launch_interaction(session_index, session_info, candidate_receipt, candidate_hash, Option)` - -1. Compute the threshold from the session info. It should be `f + 1`, where `n = 3f + k`, where `k in {1, 2, 3}`, and `n` is the number of validators. -1. Set the various fields of `InteractionParams` based on the validator lists in `session_info` and information about the candidate. -1. If the `backing_group_index` is `Some`, start in the `RequestFromBackers` phase with a shuffling of the backing group validator indices and a `None` requesting value. -1. Otherwise, start in the `RequestChunks` phase with `received_chunks`,`requesting_chunks`, and `next_shuffling` all empty. -1. Set the `to_subsystems` sender to be equal to a clone of the `SubsystemContext`'s sender. -1. Initialize `received_chunks` to an empty set, as well as `requesting_chunks`. - -Launch the interaction as a background task running `interaction_loop(interaction)`. - -#### `interaction_loop(interaction) -> Result` - -```rust -// How many parallel requests to have going at once. -const N_PARALLEL: usize = 50; -``` - -* Request `AvailabilityStoreMessage::QueryAvailableData`. If it exists, return that. -* If the phase is `InteractionPhase::RequestFromBackers` - * Loop: - * If the `requesting_pov` is `Some`, poll for updates on it. If it concludes, set `requesting_pov` to `None`. - * If the `requesting_pov` is `None`, take the next backer off the `shuffled_backers`. - * If the backer is `Some`, issue a `NetworkBridgeMessage::Requests` with a network request for the `AvailableData` and wait for the response. - * If it concludes with a `None` result, return to beginning. - * If it concludes with available data, attempt a re-encoding. - * If it has the correct erasure-root, break and issue a `Ok(available_data)`. - * If it has an incorrect erasure-root, return to beginning. - * If the backer is `None`, set the phase to `InteractionPhase::RequestChunks` with a random shuffling of validators and empty `next_shuffling`, `received_chunks`, and `requesting_chunks` and break the loop. - -* If the phase is `InteractionPhase::RequestChunks`: - * Request `AvailabilityStoreMessage::QueryAllChunks`. For each chunk that exists, add it to `received_chunks` and remote the validator from `shuffling`. - * Loop: - * If `received_chunks + requesting_chunks + shuffling` lengths are less than the threshold, break and return `Err(Unavailable)`. - * Poll for new updates from `requesting_chunks`. Check merkle proofs of any received chunks. If the request simply fails due to network issues, insert into the front of `shuffling` to be retried. - * If `received_chunks` has more than `threshold` entries, attempt to recover the data. If that fails, or a re-encoding produces an incorrect erasure-root, break and issue a `Err(RecoveryError::Invalid)`. If correct, break and issue `Ok(available_data)`. - * While there are fewer than `N_PARALLEL` entries in `requesting_chunks`, - * Pop the next item from `shuffling`. If it's empty and `requesting_chunks` is empty, return `Err(RecoveryError::Unavailable)`. - * Issue a `NetworkBridgeMessage::Requests` and wait for the response in `requesting_chunks`. diff --git a/roadmap/implementers-guide/src/node/availability/bitfield-distribution.md b/roadmap/implementers-guide/src/node/availability/bitfield-distribution.md deleted file mode 100644 index 53bd8a1bced6..000000000000 --- a/roadmap/implementers-guide/src/node/availability/bitfield-distribution.md +++ /dev/null @@ -1,34 +0,0 @@ -# Bitfield Distribution - -Validators vote on the availability of a backed candidate by issuing signed bitfields, where each bit corresponds to a single candidate. These bitfields can be used to compactly determine which backed candidates are available or not based on a 2/3+ quorum. - -## Protocol - -`PeerSet`: `Validation` - -Input: -[`BitfieldDistributionMessage`](../../types/overseer-protocol.md#bitfield-distribution-message) which are gossiped to all peers, no matter if validator or not. - -Output: - -- `NetworkBridge::SendValidationMessage([PeerId], message)` gossip a verified incoming bitfield on to interested subsystems within this validator node. -- `NetworkBridge::ReportPeer(PeerId, cost_or_benefit)` improve or penalize the reputation of peers based on the messages that are received relative to the current view. -- `ProvisionerMessage::ProvisionableData(ProvisionableData::Bitfield(relay_parent, SignedAvailabilityBitfield))` pass - on the bitfield to the other submodules via the overseer. - -## Functionality - -This is implemented as a gossip system. - -It is necessary to track peer connection, view change, and disconnection events, in order to maintain an index of which peers are interested in which relay parent bitfields. - - -Before gossiping incoming bitfields, they must be checked to be signed by one of the validators -of the validator set relevant to the current relay parent. -Only accept bitfields relevant to our current view and only distribute bitfields to other peers when relevant to their most recent view. -Accept and distribute only one bitfield per validator. - - -When receiving a bitfield either from the network or from a `DistributeBitfield` message, forward it along to the block authorship (provisioning) subsystem for potential inclusion in a block. - -Peers connecting after a set of valid bitfield gossip messages was received, those messages must be cached and sent upon connection of new peers or re-connecting peers. diff --git a/roadmap/implementers-guide/src/node/availability/bitfield-signing.md b/roadmap/implementers-guide/src/node/availability/bitfield-signing.md deleted file mode 100644 index 4fdea331db90..000000000000 --- a/roadmap/implementers-guide/src/node/availability/bitfield-signing.md +++ /dev/null @@ -1,29 +0,0 @@ -# Bitfield Signing - -Validators vote on the availability of a backed candidate by issuing signed bitfields, where each bit corresponds to a single candidate. These bitfields can be used to compactly determine which backed candidates are available or not based on a 2/3+ quorum. - -## Protocol - -Input: - -There is no dedicated input mechanism for bitfield signing. Instead, Bitfield Signing produces a bitfield representing the current state of availability on `StartWork`. - -Output: - -- BitfieldDistribution::DistributeBitfield: distribute a locally signed bitfield -- AvailabilityStore::QueryChunk(CandidateHash, validator_index, response_channel) - -## Functionality - -Upon receipt of an `ActiveLeavesUpdate`, launch bitfield signing job for each `activated` head referring to a fresh leaf. Stop the job for each `deactivated` head. - -## Bitfield Signing Job - -Localized to a specific relay-parent `r` -If not running as a validator, do nothing. - -- Begin by waiting a fixed period of time so availability distribution has the chance to make candidates available. -- Determine our validator index `i`, the set of backed candidates pending availability in `r`, and which bit of the bitfield each corresponds to. -- Start with an empty bitfield. For each bit in the bitfield, if there is a candidate pending availability, query the [Availability Store](../utility/availability-store.md) for whether we have the availability chunk for our validator index. The `OccupiedCore` struct contains the candidate hash so the full candidate does not need to be fetched from runtime. -- For all chunks we have, set the corresponding bit in the bitfield. -- Sign the bitfield and dispatch a `BitfieldDistribution::DistributeBitfield` message. diff --git a/roadmap/implementers-guide/src/node/backing/README.md b/roadmap/implementers-guide/src/node/backing/README.md deleted file mode 100644 index ac47abefb0d0..000000000000 --- a/roadmap/implementers-guide/src/node/backing/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Backing Subsystems - -The backing subsystems, when conceived as a black box, receive an arbitrary quantity of parablock candidates and associated proofs of validity from arbitrary untrusted collators. From these, they produce a bounded quantity of backable candidates which relay chain block authors may choose to include in a subsequent block. - -In broad strokes, the flow operates like this: - -- **Candidate Selection** winnows the field of parablock candidates, selecting up to one of them to second. -- **Candidate Backing** ensures that a seconding candidate is valid, then generates the appropriate `Statement`. It also keeps track of which candidates have received the backing of a quorum of other validators. -- **Statement Distribution** is the networking component which ensures that all validators receive each others' statements. -- **PoV Distribution** is the networking component which ensures that validators considering a candidate can get the appropriate PoV. diff --git a/roadmap/implementers-guide/src/node/backing/candidate-backing.md b/roadmap/implementers-guide/src/node/backing/candidate-backing.md deleted file mode 100644 index 824ac2a53e58..000000000000 --- a/roadmap/implementers-guide/src/node/backing/candidate-backing.md +++ /dev/null @@ -1,148 +0,0 @@ -# Candidate Backing - -The Candidate Backing subsystem ensures every parablock considered for relay block inclusion has been seconded by at least one validator, and approved by a quorum. Parablocks for which no validator will assert correctness are discarded. If the block later proves invalid, the initial backers are slashable; this gives polkadot a rational threat model during subsequent stages. - -Its role is to produce backable candidates for inclusion in new relay-chain blocks. It does so by issuing signed [`Statement`s][Statement] and tracking received statements signed by other validators. Once enough statements are received, they can be combined into backing for specific candidates. - -Note that though the candidate backing subsystem attempts to produce as many backable candidates as possible, it does _not_ attempt to choose a single authoritative one. The choice of which actually gets included is ultimately up to the block author, by whatever metrics it may use; those are opaque to this subsystem. - -Once a sufficient quorum has agreed that a candidate is valid, this subsystem notifies the [Provisioner][PV], which in turn engages block production mechanisms to include the parablock. - -## Protocol - -Input: [`CandidateBackingMessage`][CBM] - -Output: - -- [`CandidateValidationMessage`][CVM] -- [`RuntimeApiMessage`][RAM] -- [`CollatorProtocolMessage`][CPM] -- [`ProvisionerMessage`][PM] -- [`AvailabilityDistributionMessage`][ADM] -- [`StatementDistributionMessage`][SDM] - -## Functionality - -The [Collator Protocol][CP] subsystem is the primary source of non-overseer messages into this subsystem. That subsystem generates appropriate [`CandidateBackingMessage`s][CBM] and passes them to this subsystem. - -This subsystem requests validation from the [Candidate Validation][CV] and generates an appropriate [`Statement`][Statement]. All `Statement`s are then passed on to the [Statement Distribution][SD] subsystem to be gossiped to peers. When [Candidate Validation][CV] decides that a candidate is invalid, and it was recommended to us to second by our own [Collator Protocol][CP] subsystem, a message is sent to the [Collator Protocol][CP] subsystem with the candidate's hash so that the collator which recommended it can be penalized. - -The subsystem should maintain a set of handles to Candidate Backing Jobs that are currently live, as well as the relay-parent to which they correspond. - -### On Overseer Signal - -* If the signal is an [`OverseerSignal`][OverseerSignal]`::ActiveLeavesUpdate`: - * spawn a Candidate Backing Job for each `activated` head referring to a fresh leaf, storing a bidirectional channel with the Candidate Backing Job in the set of handles. - * cease the Candidate Backing Job for each `deactivated` head, if any. -* If the signal is an [`OverseerSignal`][OverseerSignal]`::Conclude`: Forward conclude messages to all jobs, wait a small amount of time for them to join, and then exit. - -### On Receiving `CandidateBackingMessage` - -* If the message is a [`CandidateBackingMessage`][CBM]`::GetBackedCandidates`, get all backable candidates from the statement table and send them back. -* If the message is a [`CandidateBackingMessage`][CBM]`::Second`, sign and dispatch a `Seconded` statement only if we have not seconded any other candidate and have not signed a `Valid` statement for the requested candidate. Signing both a `Seconded` and `Valid` message is a double-voting misbehavior with a heavy penalty, and this could occur if another validator has seconded the same candidate and we've received their message before the internal seconding request. -* If the message is a [`CandidateBackingMessage`][CBM]`::Statement`, count the statement to the quorum. If the statement in the message is `Seconded` and it contains a candidate that belongs to our assignment, request the corresponding `PoV` from the backing node via `AvailabilityDistribution` and launch validation. Issue our own `Valid` or `Invalid` statement as a result. - -If the seconding node did not provide us with the `PoV` we will retry fetching from other backing validators. - - -> big TODO: "contextual execution" -> -> * At the moment we only allow inclusion of _new_ parachain candidates validated by _current_ validators. -> * Allow inclusion of _old_ parachain candidates validated by _current_ validators. -> * Allow inclusion of _old_ parachain candidates validated by _old_ validators. -> -> This will probably blur the lines between jobs, will probably require inter-job communication and a short-term memory of recently backable, but not backed candidates. - -## Candidate Backing Job - -The Candidate Backing Job represents the work a node does for backing candidates with respect to a particular relay-parent. - -The goal of a Candidate Backing Job is to produce as many backable candidates as possible. This is done via signed [`Statement`s][STMT] by validators. If a candidate receives a majority of supporting Statements from the Parachain Validators currently assigned, then that candidate is considered backable. - -### On Startup - -* Fetch current validator set, validator -> parachain assignments from [`Runtime API`][RA] subsystem using [`RuntimeApiRequest::Validators`][RAM] and [`RuntimeApiRequest::ValidatorGroups`][RAM] -* Determine if the node controls a key in the current validator set. Call this the local key if so. -* If the local key exists, extract the parachain head and validation function from the [`Runtime API`][RA] for the parachain the local key is assigned to by issuing a [`RuntimeApiRequest::Validators`][RAM] -* Issue a [`RuntimeApiRequest::SigningContext`][RAM] message to get a context that will later be used upon signing. - -### On Receiving New Candidate Backing Message - -```rust -match msg { - GetBackedCandidates(hashes, tx) => { - // Send back a set of backable candidates. - } - CandidateBackingMessage::Second(hash, candidate) => { - if candidate is unknown and in local assignment { - if spawn_validation_work(candidate, parachain head, validation function).await == Valid { - send(DistributePoV(pov)) - } - } - } - CandidateBackingMessage::Statement(hash, statement) => { - // count to the votes on this candidate - if let Statement::Seconded(candidate) = statement { - if candidate.parachain_id == our_assignment { - spawn_validation_work(candidate, parachain head, validation function) - } - } - } -} -``` - -Add `Seconded` statements and `Valid` statements to a quorum. If quorum reaches validator-group majority, send a [`ProvisionerMessage`][PM]`::ProvisionableData(ProvisionableData::BackedCandidate(CandidateReceipt))` message. -`Invalid` statements that conflict with already witnessed `Seconded` and `Valid` statements for the given candidate, statements that are double-votes, self-contradictions and so on, should result in issuing a [`ProvisionerMessage`][PM]`::MisbehaviorReport` message for each newly detected case of this kind. - -On each incoming statement, [`DisputeCoordinatorMessage::ImportStatement`][DCM] should be issued. - -### Validating Candidates. - -```rust -fn spawn_validation_work(candidate, parachain head, validation function) { - asynchronously { - let pov = (fetch pov block).await - - let valid = (validate pov block).await; - if valid { - // make PoV available for later distribution. Send data to the availability store to keep. - // sign and dispatch `valid` statement to network if we have not seconded the given candidate. - } else { - // sign and dispatch `invalid` statement to network. - } - } -} -``` - -### Fetch Pov Block - -Create a `(sender, receiver)` pair. -Dispatch a [`AvailabilityDistributionMessage`][ADM]`::FetchPoV{ validator_index, pov_hash, candidate_hash, tx, } and listen on the passed receiver for a response. Availability distribution will send the request to the validator specified by `validator_index`, which might not be serving it for whatever reasons, therefore we need to retry with other backing validators in that case. - - -### Validate PoV Block - -Create a `(sender, receiver)` pair. -Dispatch a `CandidateValidationMessage::Validate(validation function, candidate, pov, sender)` and listen on the receiver for a response. - -### Distribute Signed Statement - -Dispatch a [`StatementDistributionMessage`][SDM]`::Share(relay_parent, SignedFullStatement)`. - -[OverseerSignal]: ../../types/overseer-protocol.md#overseer-signal -[Statement]: ../../types/backing.md#statement-type -[STMT]: ../../types/backing.md#statement-type -[CPM]: ../../types/overseer-protocol.md#collator-protocol-message -[RAM]: ../../types/overseer-protocol.md#runtime-api-message -[CVM]: ../../types/overseer-protocol.md#validation-request-type -[PM]: ../../types/overseer-protocol.md#provisioner-message -[CBM]: ../../types/overseer-protocol.md#candidate-backing-message -[ADM]: ../../types/overseer-protocol.md#availability-distribution-message -[SDM]: ../../types/overseer-protocol.md#statement-distribution-message -[DCM]: ../../types/overseer-protocol.md#dispute-coordinator-message - -[CP]: ../collators/collator-protocol.md -[CV]: ../utility/candidate-validation.md -[SD]: statement-distribution.md -[RA]: ../utility/runtime-api.md -[PV]: ../utility/provisioner.md diff --git a/roadmap/implementers-guide/src/node/backing/statement-distribution.md b/roadmap/implementers-guide/src/node/backing/statement-distribution.md deleted file mode 100644 index 8ff192cd90e1..000000000000 --- a/roadmap/implementers-guide/src/node/backing/statement-distribution.md +++ /dev/null @@ -1,107 +0,0 @@ -# Statement Distribution - -The Statement Distribution Subsystem is responsible for distributing statements about seconded candidates between validators. - -## Protocol - -`PeerSet`: `Validation` - -Input: - -- NetworkBridgeUpdate(update) -- StatementDistributionMessage - -Output: - -- NetworkBridge::SendMessage(`[PeerId]`, message) -- NetworkBridge::SendRequests (StatementFetching) -- NetworkBridge::ReportPeer(PeerId, cost_or_benefit) - -## Functionality - -Implemented as a gossip protocol. Handle updates to our view and peers' views. Neighbor packets are used to inform peers which chain heads we are interested in data for. - -It is responsible for distributing signed statements that we have generated and forwarding them, and for detecting a variety of Validator misbehaviors for reporting to [Misbehavior Arbitration](../utility/misbehavior-arbitration.md). During the Backing stage of the inclusion pipeline, it's the main point of contact with peer nodes. On receiving a signed statement from a peer in the same backing group, assuming the peer receipt state machine is in an appropriate state, it sends the Candidate Receipt to the [Candidate Backing subsystem](candidate-backing.md) to handle the validator's statement. On receiving `StatementDistributionMessage::Share` we make sure to send messages to our backing group in addition to random other peers, to ensure a fast backing process and getting all statements quickly for distribtution. - -Track equivocating validators and stop accepting information from them. Establish a data-dependency order: - -- In order to receive a `Seconded` message we have the corresponding chain head in our view -- In order to receive an `Valid` message we must have received the corresponding `Seconded` message. - -And respect this data-dependency order from our peers by respecting their views. This subsystem is responsible for checking message signatures. - -The Statement Distribution subsystem sends statements to peer nodes. - -## Peer Receipt State Machine - -There is a very simple state machine which governs which messages we are willing to receive from peers. Not depicted in the state machine: on initial receipt of any [`SignedFullStatement`](../../types/backing.md#signed-statement-type), validate that the provided signature does in fact sign the included data. Note that each individual parablock candidate gets its own instance of this state machine; it is perfectly legal to receive a `Valid(X)` before a `Seconded(Y)`, as long as a `Seconded(X)` has been received. - -A: Initial State. Receive `SignedFullStatement(Statement::Second)`: extract `Statement`, forward to Candidate Backing, proceed to B. Receive any other `SignedFullStatement` variant: drop it. - -B: Receive any `SignedFullStatement`: check signature and determine whether the statement is new to us. if new, forward to Candidate Backing and circulate to other peers. Receive `OverseerMessage::StopWork`: proceed to C. - -C: Receive any message for this block: drop it. - -For large statements (see below), we also keep track of the total received large -statements per peer and have a hard limit on that number for flood protection. -This is necessary as in the current code we only forward statements once we have -all the data, therefore flood protection for large statement is a bit more -subtle. This will become an obsolete problem once [off chain code -upgrades](https://github.com/paritytech/polkadot/issues/2979) are implemented. - -## Peer Knowledge Tracking - -The peer receipt state machine implies that for parsimony of network resources, we should model the knowledge of our peers, and help them out. For example, let's consider a case with peers A, B, and C, validators X and Y, and candidate M. A sends us a `Statement::Second(M)` signed by X. We've double-checked it, and it's valid. While we're checking it, we receive a copy of X's `Statement::Second(M)` from `B`, along with a `Statement::Valid(M)` signed by Y. - -Our response to A is just the `Statement::Valid(M)` signed by Y. However, we haven't heard anything about this from C. Therefore, we send it everything we have: first a copy of X's `Statement::Second`, then Y's `Statement::Valid`. - -This system implies a certain level of duplication of messages--we received X's `Statement::Second` from both our peers, and C may experience the same--but it minimizes the degree to which messages are simply dropped. - -And respect this data-dependency order from our peers. This subsystem is responsible for checking message signatures. - -No jobs. We follow view changes from the [`NetworkBridge`](../utility/network-bridge.md), which in turn is updated by the overseer. - -## Equivocations and Flood Protection - -An equivocation is a double-vote by a validator. The [Candidate Backing](candidate-backing.md) Subsystem is better-suited than this one to detect equivocations as it adds votes to quorum trackers. - -At this level, we are primarily concerned about flood-protection, and to some extent, detecting equivocations is a part of that. In particular, we are interested in detecting equivocations of `Seconded` statements. Since every other statement is dependent on `Seconded` statements, ensuring that we only ever hold a bounded number of `Seconded` statements is sufficient for flood-protection. - -The simple approach is to say that we only receive up to two `Seconded` statements per validator per chain head. However, the marginal cost of equivocation, conditional on having already equivocated, is close to 0, since a single double-vote offence is counted as all double-vote offences for a particular chain-head. Even if it were not, there is some amount of equivocations that can be done such that the marginal cost of issuing further equivocations is close to 0, as there would be an amount of equivocations necessary to be completely and totally obliterated by the slashing algorithm. We fear the validator with nothing left to lose. - -With that in mind, this simple approach has a caveat worth digging deeper into. - -First: We may be aware of two equivocated `Seconded` statements issued by a validator. A totally honest peer of ours can also be aware of one or two different `Seconded` statements issued by the same validator. And yet another peer may be aware of one or two _more_ `Seconded` statements. And so on. This interacts badly with pre-emptive sending logic. Upon sending a `Seconded` statement to a peer, we will want to pre-emptively follow up with all statements relative to that candidate. Waiting for acknowledgement introduces latency at every hop, so that is best avoided. What can happen is that upon receipt of the `Seconded` statement, the peer will discard it as it falls beyond the bound of 2 that it is allowed to store. It cannot store anything in memory about discarded candidates as that would introduce a DoS vector. Then, the peer would receive from us all of the statements pertaining to that candidate, which, from its perspective, would be undesired - they are data-dependent on the `Seconded` statement we sent them, but they have erased all record of that from their memory. Upon receiving a potential flood of undesired statements, this 100% honest peer may choose to disconnect from us. In this way, an adversary may be able to partition the network with careful distribution of equivocated `Seconded` statements. - -The fix is to track, per-peer, the hashes of up to 4 candidates per validator (per relay-parent) that the peer is aware of. It is 4 because we may send them 2 and they may send us 2 different ones. We track the data that they are aware of as the union of things we have sent them and things they have sent us. If we receive a 1st or 2nd `Seconded` statement from a peer, we note it in the peer's known candidates even if we do disregard the data locally. And then, upon receipt of any data dependent on that statement, we do not reduce that peer's standing in our eyes, as the data was not undesired. - -There is another caveat to the fix: we don't want to allow the peer to flood us because it has set things up in a way that it knows we will drop all of its traffic. -We also track how many statements we have received per peer, per candidate, and per chain-head. This is any statement concerning a particular candidate: `Seconded`, `Valid`, or `Invalid`. If we ever receive a statement from a peer which would push any of these counters beyond twice the amount of validators at the chain-head, we begin to lower the peer's standing and eventually disconnect. This bound is a massive overestimate and could be reduced to twice the number of validators in the corresponding validator group. It is worth noting that the goal at the time of writing is to ensure any finite bound on the amount of stored data, as any equivocation results in a large slash. - -## Large statements - -Seconded statements can become quite large on parachain runtime upgrades for -example. For this reason, there exists a `LargeStatement` constructor for the -`StatementDistributionMessage` wire message, which only contains light metadata -of a statement. The actual candidate data is not included. This message type is -used whenever a message is deemed large. The receiver of such a message needs to -request the actual payload via request/response by means of a -`StatementFetching` request. - -This is necessary as distribution of a large payload (mega bytes) via gossip -would make the network collapse and timely distribution of statements would no -longer be possible. By using request/response it is ensured that each peer only -transferes large data once. We only take good care to detect an overloaded -peer early and immediately move on to a different peer for fetching the data. -This mechanism should result in a good load distribution and therefore a rather -optimal distribution path. - -With these optimizations, distribution of payloads in the size of up to 3 to 4 -MB should work with Kusama validator specifications. For scaling up even more, -runtime upgrades and message passing should be done off chain at some point. - -Flood protection considerations: For making DoS attacks slightly harder on this -subsystem, nodes will only respond to large statement requests, when they -previously notified that peer via gossip about that statement. So, it is not -possible to DoS nodes at scale, by requesting candidate data over and over -again. diff --git a/roadmap/implementers-guide/src/node/collators/README.md b/roadmap/implementers-guide/src/node/collators/README.md deleted file mode 100644 index ae29697bb120..000000000000 --- a/roadmap/implementers-guide/src/node/collators/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Collators - -Collators are special nodes which bridge a parachain to the relay chain. They are simultaneously full nodes of the parachain, and at least light clients of the relay chain. Their overall contribution to the system is the generation of Proofs of Validity for parachain candidates. diff --git a/roadmap/implementers-guide/src/node/collators/collation-generation.md b/roadmap/implementers-guide/src/node/collators/collation-generation.md deleted file mode 100644 index 34be8ea7c139..000000000000 --- a/roadmap/implementers-guide/src/node/collators/collation-generation.md +++ /dev/null @@ -1,83 +0,0 @@ -# Collation Generation - -The collation generation subsystem is executed on collator nodes and produces candidates to be distributed to validators. If configured to produce collations for a para, it produces collations and then feeds them to the [Collator Protocol][CP] subsystem, which handles the networking. - -## Protocol - -Input: `CollationGenerationMessage` - -```rust -enum CollationGenerationMessage { - Initialize(CollationGenerationConfig), -} -``` - -No more than one initialization message should ever be sent to the collation generation subsystem. - -Output: `CollationDistributionMessage` - -## Functionality - -The process of generating a collation for a parachain is very parachain-specific. As such, the details of how to do so are left beyond the scope of this description. The subsystem should be implemented as an abstract wrapper, which is aware of this configuration: - -```rust -pub struct Collation { - /// Messages destined to be interpreted by the Relay chain itself. - pub upward_messages: Vec, - /// New validation code. - pub new_validation_code: Option, - /// The head-data produced as a result of execution. - pub head_data: HeadData, - /// Proof to verify the state transition of the parachain. - pub proof_of_validity: PoV, -} - -/// Result of the [`CollatorFn`] invocation. -pub struct CollationResult { - /// The collation that was build. - collation: Collation, - /// An optional result sender that should be informed about a successfully seconded collation. - /// - /// There is no guarantee that this sender is informed ever about any result, it is completly okay to just drop it. - /// However, if it is called, it should be called with the signed statement of a parachain validator seconding the - /// collation. - result_sender: Option>, -} - -/// Collation function. -/// -/// Will be called with the hash of the relay chain block the parachain block should be build on and the -/// [`ValidationData`] that provides information about the state of the parachain on the relay chain. -/// -/// Returns an optional [`CollationResult`]. -pub type CollatorFn = Box< - dyn Fn(Hash, &PersistedValidationData) -> Pin> + Send>> - + Send - + Sync, ->; - -struct CollationGenerationConfig { - key: CollatorPair, - /// Collate will be called with the relay chain hash the parachain should build - /// a block on and the `ValidationData` that provides information about the state - /// of the parachain on the relay chain. - collator: CollatorFn, - para_id: ParaId, -} -``` - -The configuration should be optional, to allow for the case where the node is not run with the capability to collate. - -On `ActiveLeavesUpdate`: - -* If there is no collation generation config, ignore. -* Otherwise, for each `activated` head in the update: - * Determine if the para is scheduled on any core by fetching the `availability_cores` Runtime API. - > TODO: figure out what to do in the case of occupied cores; see [this issue](https://github.com/paritytech/polkadot/issues/1573). - * Determine an occupied core assumption to make about the para. Scheduled cores can make `OccupiedCoreAssumption::Free`. - * Use the Runtime API subsystem to fetch the full validation data. - * Invoke the `collator`, and use its outputs to produce a `CandidateReceipt`, signed with the configuration's `key`. - * Dispatch a [`CollatorProtocolMessage`][CPM]`::DistributeCollation(receipt, pov)`. - -[CP]: collator-protocol.md -[CPM]: ../../types/overseer-protocol.md#collatorprotocolmessage diff --git a/roadmap/implementers-guide/src/node/collators/collator-protocol.md b/roadmap/implementers-guide/src/node/collators/collator-protocol.md deleted file mode 100644 index 1afbaeb77033..000000000000 --- a/roadmap/implementers-guide/src/node/collators/collator-protocol.md +++ /dev/null @@ -1,138 +0,0 @@ -# Collator Protocol - -The Collator Protocol implements the network protocol by which collators and validators communicate. It is used by collators to distribute collations to validators and used by validators to accept collations by collators. - -Collator-to-Validator networking is more difficult than Validator-to-Validator networking because the set of possible collators for any given para is unbounded, unlike the validator set. Validator-to-Validator networking protocols can easily be implemented as gossip because the data can be bounded, and validators can authenticate each other by their `PeerId`s for the purposes of instantiating and accepting connections. - -Since, at least at the level of the para abstraction, the collator-set for any given para is unbounded, validators need to make sure that they are receiving connections from capable and honest collators and that their bandwidth and time are not being wasted by attackers. Communicating across this trust-boundary is the most difficult part of this subsystem. - -Validation of candidates is a heavy task, and furthermore, the [`PoV`][PoV] itself is a large piece of data. Empirically, `PoV`s are on the order of 10MB. - -> TODO: note the incremental validation function Ximin proposes at https://github.com/paritytech/polkadot/issues/1348 - -As this network protocol serves as a bridge between collators and validators, it communicates primarily with one subsystem on behalf of each. As a collator, this will receive messages from the [`CollationGeneration`][CG] subsystem. As a validator, this will communicate only with the [`CandidateBacking`][CB]. - -## Protocol - -Input: [`CollatorProtocolMessage`][CPM] - -Output: - -- [`RuntimeApiMessage`][RAM] -- [`NetworkBridgeMessage`][NBM] -- [`CandidateBackingMessage`][CBM] - -## Functionality - -This network protocol uses the `Collation` peer-set of the [`NetworkBridge`][NB]. - -It uses the [`CollatorProtocolV1Message`](../../types/network.md#collator-protocol) as its `WireMessage` - -Since this protocol functions both for validators and collators, it is easiest to go through the protocol actions for each of them separately. - -Validators and collators. -```dot process -digraph { - c1 [shape=MSquare, label="Collator 1"]; - c2 [shape=MSquare, label="Collator 2"]; - - v1 [shape=MSquare, label="Validator 1"]; - v2 [shape=MSquare, label="Validator 2"]; - - c1 -> v1; - c1 -> v2; - c2 -> v2; -} -``` - -### Collators - -It is assumed that collators are only collating on a single parachain. Collations are generated by the [Collation Generation][CG] subsystem. We will keep up to one local collation per relay-parent, based on `DistributeCollation` messages. If the para is not scheduled or next up on any core, at the relay-parent, or the relay-parent isn't in the active-leaves set, we ignore the message as it must be invalid in that case - although this indicates a logic error elsewhere in the node. - -We keep track of the Para ID we are collating on as a collator. This starts as `None`, and is updated with each `CollateOn` message received. If the `ParaId` of a collation requested to be distributed does not match the one we expect, we ignore the message. - -As with most other subsystems, we track the active leaves set by following `ActiveLeavesUpdate` signals. - -For the purposes of actually distributing a collation, we need to be connected to the validators who are interested in collations on that `ParaId` at this point in time. We assume that there is a discovery API for connecting to a set of validators. - -As seen in the [Scheduler Module][SCH] of the runtime, validator groups are fixed for an entire session and their rotations across cores are predictable. Collators will want to do these things when attempting to distribute collations at a given relay-parent: - * Determine which core the para collated-on is assigned to. - * Determine the group on that core and the next group on that core. - * Issue a discovery request for the validators of the current group and the next group with[`NetworkBridgeMessage`][NBM]`::ConnectToValidators`. - -Once connected to the relevant peers for the current group assigned to the core (transitively, the para), advertise the collation to any of them which advertise the relay-parent in their view (as provided by the [Network Bridge][NB]). If any respond with a request for the full collation, provide it. Upon receiving a view update from any of these peers which includes a relay-parent for which we have a collation that they will find relevant, advertise the collation to them if we haven't already. - -### Validators - -On the validator side of the protocol, validators need to accept incoming connections from collators. They should keep some peer slots open for accepting new speculative connections from collators and should disconnect from collators who are not relevant. - -```dot process -digraph G { - label = "Declaring, advertising, and providing collations"; - labelloc = "t"; - rankdir = LR; - - subgraph cluster_collator { - rank = min; - label = "Collator"; - graph[style = border, rank = min]; - - c1, c2 [label = ""]; - } - - subgraph cluster_validator { - rank = same; - label = "Validator"; - graph[style = border]; - - v1, v2 [label = ""]; - } - - c1 -> v1 [label = "Declare and advertise"]; - - v1 -> c2 [label = "Request"]; - - c2 -> v2 [label = "Provide"]; - - v2 -> v2 [label = "Note Good/Bad"]; -} -``` - -When peers connect to us, they can `Declare` that they represent a collator with given public key and intend to collate on a specific para ID. Once they've declared that, and we checked their signature, they can begin to send advertisements of collations. The peers should not send us any advertisements for collations that are on a relay-parent outside of our view or for a para outside of the one they've declared. - -The protocol tracks advertisements received and the source of the advertisement. The advertisement source is the `PeerId` of the peer who sent the message. We accept one advertisement per collator per source per relay-parent. - -As a validator, we will handle requests from other subsystems to fetch a collation on a specific `ParaId` and relay-parent. These requests are made with the request response protocol `CollationFetchingRequest` request. To do so, we need to first check if we have already gathered a collation on that `ParaId` and relay-parent. If not, we need to select one of the advertisements and issue a request for it. If we've already issued a request, we shouldn't issue another one until the first has returned. - -When acting on an advertisement, we issue a `Requests::CollationFetching`. If the request times out, we need to note the collator as being unreliable and reduce its priority relative to other collators. - -As a validator, once the collation has been fetched some other subsystem will inspect and do deeper validation of the collation. The subsystem will report to this subsystem with a [`CollatorProtocolMessage`][CPM]`::ReportCollator`. In that case, if we are connected directly to the collator, we apply a cost to the `PeerId` associated with the collator and potentially disconnect or blacklist it. If the collation is seconded, we notify the collator and apply a benefit to the `PeerId` associated with the collator. - -### Interaction with [Candidate Backing][CB] - -As collators advertise the availability, a validator will simply second the first valid parablock candidate per relay head by sending a [`CandidateBackingMessage`][CBM]`::Second`. Note that this message contains the relay parent of the advertised collation, the candidate receipt and the [PoV][PoV]. - -Subsequently, once a valid parablock candidate has been seconded, the [`CandidateBacking`][CB] subsystem will send a [`CollatorProtocolMessage`][CPM]`::Seconded`, which will trigger this subsystem to notify the collator at the `PeerId` that first advertised the parablock on the seconded relay head of their successful seconding. - - -## Future Work - -Several approaches have been discussed, but all have some issues: - -- The current approach is very straightforward. However, that protocol is vulnerable to a single collator which, as an attack or simply through chance, gets its block candidate to the node more often than its fair share of the time. -- If collators produce blocks via Aura, BABE or in future Sassafrass, it may be possible to choose an "Official" collator for the round, but it may be tricky to ensure that the PVF logic is enforced at collator leader election. -- We could use relay-chain BABE randomness to generate some delay `D` on the order of 1 second, +- 1 second. The collator would then second the first valid parablock which arrives after `D`, or in case none has arrived by `2*D`, the last valid parablock which has arrived. This makes it very hard for a collator to game the system to always get its block nominated, but it reduces the maximum throughput of the system by introducing delay into an already tight schedule. -- A variation of that scheme would be to have a fixed acceptance window `D` for parablock candidates and keep track of count `C`: the number of parablock candidates received. At the end of the period `D`, we choose a random number I in the range [0, C) and second the block at Index I. Its drawback is the same: it must wait the full `D` period before seconding any of its received candidates, reducing throughput. -- In order to protect against DoS attacks, it may be prudent to run throw out collations from collators that have behaved poorly (whether recently or historically) and subsequently only verify the PoV for the most suitable of collations. - -[CB]: ../backing/candidate-backing.md -[CBM]: ../../types/overseer-protocol.md#candidate-backing-mesage -[CG]: collation-generation.md -[CPM]: ../../types/overseer-protocol.md#collator-protocol-message -[CS]: ../backing/candidate-selection.md -[CSM]: ../../types/overseer-protocol.md#candidate-selection-message -[NB]: ../utility/network-bridge.md -[NBM]: ../../types/overseer-protocol.md#network-bridge-message -[PoV]: ../../types/availability.md#proofofvalidity -[RAM]: ../../types/overseer-protocol.md#runtime-api-message -[SCH]: ../../runtime/scheduler.md diff --git a/roadmap/implementers-guide/src/node/disputes/README.md b/roadmap/implementers-guide/src/node/disputes/README.md deleted file mode 100644 index db4a05ccfcb7..000000000000 --- a/roadmap/implementers-guide/src/node/disputes/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Disputes Subsystems - -This section is for the node-side subsystems that lead to participation in disputes. There are five major roles that validator nodes must participate in when it comes to disputes - * Detection. Detect bad parablocks, either during candidate backing or approval checking, and initiate a dispute. - * Participation. Participate in active disputes. When a node becomes aware of a dispute, it should recover the data for the disputed block, check the validity of the parablock, and issue a statement regarding the validity of the parablock. - * Distribution. Validators should notify each other of active disputes and relevant statements over the network. - * Submission. When authoring a block, a validator should inspect the state of the parent block and provide any information about disputes that the chain needs as part of the ParaInherent. This should initialize new disputes on-chain as necessary. - * Fork-choice and Finality. When observing a block issuing a DisputeRollback digest in the header, that branch of the relay chain should be abandoned all the way back to the indicated block. When voting on chains in GRANDPA, no chains that contain blocks that are or have been disputed should be voted on. - -## Components - -### Dispute Coordinator - -This component is responsible for coordinating other subsystems around disputes. - -This component should track all statements received from all validators over some window of sessions. This includes backing statements, approval votes, and statements made specifically for disputes. This will be used to identify disagreements or instances where validators conflict with themselves. - -This is responsible for tracking and initiating disputes. Disputes will be initiated either externally by another subsystem which has identified an issue with a parablock or internally upon observing two statements which conflict with each other on the validity of a parablock. - -No more than one statement by each validator on each side of the dispute needs to be stored. That is, validators are allowed to participate on both sides of the dispute, although we won't write code to do so. Such behavior has negative EV in the runtime. - -This will notify the dispute participation subsystem of a new dispute if the local validator has not issued any statements on the disputed candidate already. - -Locally authored statements related to disputes will be forwarded to the dispute distribution subsystem. - -This subsystem also provides two further behaviors for the interactions between disputes and fork-choice - - Enhancing the finality voting rule. Given description of a chain and candidates included at different heights in that chain, it returns the BlockHash corresponding to the highest BlockNumber that there are no disputes before. I expect that we will slightly change ApprovalVoting::ApprovedAncestor to return this set and then the target block to vote on will be further constrained by this function. - - Chain roll-backs. Whenever importing new blocks, the header should be scanned for a roll-back digest. If there is one, the chain should be rolled back according to the digest. I expect this would be implemented with a ChainApi function and possibly an ApprovalVoting function to clean up the approval voting DB. - -### Dispute Participation - -This subsystem ties together the dispute tracker, availability recovery, candidate validation, and dispute distribution subsystems. When notified of a new dispute by the Dispute Tracker, the data should be recovered, the validation code loaded from the relay chain, and the candidate is executed. - -A statement depending on the outcome of the execution is produced, signed, and imported to the dispute tracker. - -### Dispute Distribution - -This is a networking component by which validators notify each other of live disputes and statements on those disputes. - -Validators will in the future distribute votes to each other via the network, but at the moment learn of disputes just from watching the chain. diff --git a/roadmap/implementers-guide/src/node/disputes/dispute-coordinator.md b/roadmap/implementers-guide/src/node/disputes/dispute-coordinator.md deleted file mode 100644 index 794fc5a08069..000000000000 --- a/roadmap/implementers-guide/src/node/disputes/dispute-coordinator.md +++ /dev/null @@ -1,126 +0,0 @@ -# Dispute Coordinator - -This is the central subsystem of the node-side components which participate in disputes. This subsystem wraps a database which tracks all statements observed by all validators over some window of sessions. Votes older than this session window are pruned. - -This subsystem will be the point which produce dispute votes, either positive or negative, based on locally-observed validation results as well as a sink for votes received by other subsystems. When importing a dispute vote from another node, this will trigger the [dispute participation](dispute-participation.md) subsystem to recover and validate the block and call back to this subsystem. - -## Database Schema - -We use an underlying Key-Value database where we assume we have the following operations available: - * `write(key, value)` - * `read(key) -> Option` - * `iter_with_prefix(prefix) -> Iterator<(key, value)>` - gives all keys and values in lexicographical order where the key starts with `prefix`. - -We use this database to encode the following schema: - -```rust -("candidate-votes", SessionIndex, CandidateHash) -> Option -"active-disputes" -> ActiveDisputes -"earliest-session" -> Option -``` - -The meta information that we track per-candidate is defined as the `CandidateVotes` struct. -This draws on the [dispute statement types][DisputeTypes] - -```rust -struct CandidateVotes { - // The receipt of the candidate itself. - candidate_receipt: CandidateReceipt, - // Sorted by validator index. - valid: Vec<(ValidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, - // Sorted by validator index. - invalid: Vec<(InvalidDisputeStatementKind, ValidatorIndex, ValidatorSignature)>, -} - -struct ActiveDisputes { - // sorted by session index and then by candidate hash. - disputed: Vec<(SessionIndex, CandidateHash)>, -} -``` - -## Protocol - -Input: [`DisputeCoordinatorMessage`][DisputeCoordinatorMessage] - -Output: - - [`RuntimeApiMessage`][RuntimeApiMessage] - - [`DisputeParticipationMessage`][DisputeParticipationMessage] - -## Functionality - -This assumes a constant `DISPUTE_WINDOW: SessionIndex`. This should correspond to at least 1 day. - -Ephemeral in-memory state: - -```rust -struct State { - keystore: KeyStore, - highest_session: SessionIndex, -} -``` - -### On `OverseerSignal::ActiveLeavesUpdate` - -For each leaf in the leaves update: - * Fetch the session index for the child of the block with a [`RuntimeApiMessage::SessionIndexForChild`][RuntimeApiMessage]. - * If the session index is higher than `state.highest_session`: - * update `state.highest_session` - * remove everything with session index less than `state.highest_session - DISPUTE_WINDOW` from the `"active-disputes"` in the DB. - * Use `iter_with_prefix` to remove everything from `"earliest-session"` up to `state.highest_session - DISPUTE_WINDOW` from the DB under `"candidate-votes"`. - * Update `"earliest-session"` to be equal to `state.highest_session - DISPUTE_WINDOW`. - * For each new block, explicitly or implicitly, under the new leaf, scan for a dispute digest which indicates a rollback. If a rollback is detected, use the ChainApi subsystem to blacklist the chain. - -### On `OverseerSignal::Conclude` - -Exit gracefully. - -### On `OverseerSignal::BlockFinalized` - -Do nothing. - -### On `DisputeCoordinatorMessage::ImportStatement` - -* Deconstruct into parts `{ candidate_hash, candidate_receipt, session, statements }`. -* If the session is earlier than `state.highest_session - DISPUTE_WINDOW`, return. -* Load from underlying DB by querying `("candidate-votes", session, candidate_hash). If that does not exist, create fresh with the given candidate receipt. -* If candidate votes is empty and the statements only contain dispute-specific votes, return. -* Otherwise, if there is already an entry from the validator in the respective `valid` or `invalid` field of the `CandidateVotes`, return. -* Add an entry to the respective `valid` or `invalid` list of the `CandidateVotes` for each statement in `statements`. -* Write the `CandidateVotes` to the underyling DB. -* If the both `valid` and `invalid` lists now have non-zero length where previously one or both had zero length, the candidate is now freshly disputed. -* If freshly disputed, load `"active-disputes"` and add the candidate hash and session index. Also issue a [`DisputeParticipationMessage::Participate`][DisputeParticipationMessage]. -* If the dispute now has supermajority votes in the "valid" direction, according to the `SessionInfo` of the dispute candidate's session, remove from `"active-disputes"`. -* If the dispute now has supermajority votes in the "invalid" direction, there is no need to do anything explicitly. The actual rollback will be handled during the active leaves update by observing digests from the runtime. -* Write `"active-disputes"` - -### On `DisputeCoordinatorMessage::ActiveDisputes` - -* Load `"active-disputes"` and return the data contained within. - -### On `DisputeCoordinatorMessage::QueryCandidateVotes` - -* Load `"candidate-votes"` and return the data within or `None` if missing. - -### On `DisputeCoordinatorMessage::IssueLocalStatement` - -* Deconstruct into parts `{ session_index, candidate_hash, candidate_receipt, is_valid }`. -* Construct a [`DisputeStatement`][DisputeStatement] based on `Valid` or `Invalid`, depending on the parameterization of this routine. -* Sign the statement with each key in the `SessionInfo`'s list of parachain validation keys which is present in the keystore, except those whose indices appear in `voted_indices`. This will typically just be one key, but this does provide some future-proofing for situations where the same node may run on behalf multiple validators. At the time of writing, this is not a use-case we support as other subsystems do not invariably provide this guarantee. -* Write statement to DB. -* Send a `DisputeDistributionMessage::SendDispute` message to get the vote - distributed to other validators. - -### On `DisputeCoordinatorMessage::DetermineUndisputedChain` - -* Load `"active-disputes"`. -* Deconstruct into parts `{ base_number, block_descriptions, rx }` -* Starting from the beginning of `block_descriptions`: - 1. Check the `ActiveDisputes` for a dispute of each candidate in the block description. - 1. If there is a dispute, exit the loop. -* For the highest index `i` reached in the `block_descriptions`, send `(base_number + i + 1, block_hash)` on the channel, unless `i` is 0, in which case `None` should be sent. The `block_hash` is determined by inspecting `block_descriptions[i]`. - -[DisputeTypes]: ../../types/disputes.md -[DisputeStatement]: ../../types/disputes.md#disputestatement -[DisputeCoordinatorMessage]: ../../types/overseer-protocol.md#dispute-coordinator-message -[RuntimeApiMessage]: ../../types/overseer-protocol.md#runtime-api-message -[DisputeParticipationMessage]: ../../types/overseer-protocol.md#dispute-participation-message diff --git a/roadmap/implementers-guide/src/node/disputes/dispute-distribution.md b/roadmap/implementers-guide/src/node/disputes/dispute-distribution.md deleted file mode 100644 index c8e47cd0bdd3..000000000000 --- a/roadmap/implementers-guide/src/node/disputes/dispute-distribution.md +++ /dev/null @@ -1,351 +0,0 @@ -# Dispute Distribution - -Dispute distribution is responsible for ensuring all concerned validators will be aware of a dispute and have the relevant votes. - -## Design Goals - -This design should result in a protocol that is: - -- resilient to nodes being temporarily unavailable -- make sure nodes are aware of a dispute quickly -- relatively efficient, should not cause too much stress on the network -- be resilient when it comes to spam -- be simple and boring: We want disputes to work when they happen - -## Protocol - -### Input - -[`DisputeDistributionMessage`][DisputeDistributionMessage] - -### Output - -- [`DisputeCoordinatorMessage::ActiveDisputes`][DisputeParticipationMessage] -- [`DisputeCoordinatorMessage::ImportStatements`][DisputeParticipationMessage] -- [`DisputeCoordinatorMessage::QueryCandidateVotes`][DisputeParticipationMessage] -- [`RuntimeApiMessage`][RuntimeApiMessage] - -### Wire format - -#### Disputes - -Protocol: "/polkadot/send\_dispute/1" - -Request: - -```rust -struct DisputeRequest { - // Either initiating invalid vote or our own (if we voted invalid). - invalid_vote: InvalidVote, - // Some invalid vote (can be from backing/approval) or our own if we voted - // valid. - valid_vote: ValidVote, -} - -struct InvalidVote { - subject: VoteSubject, - kind: InvalidDisputeStatementKind, -} - -struct ValidVote { - subject: VoteSubject, - kind: ValidDisputeStatementKind, -} - -struct VoteSubject { - /// The candidate being disputed. - candidate_hash: CandidateHash, - /// The voting validator. - validator_index: ValidatorIndex, - /// The session the candidate appears in. - candidate_session: SessionIndex, - /// The validator signature, that can be verified when constructing a - /// `SignedDisputeStatement`. - validator_signature: ValidatorSignature, -} -``` - -Response: - -```rust -enum DisputeResponse { - Confirmed -} -``` - -#### Vote Recovery - -Protocol: "/polkadot/req\_votes/1" - -```rust -struct IHaveVotesRequest { - candidate_hash: CandidateHash, - session: SessionIndex, - valid_votes: Bitfield, - invalid_votes: Bitfield, -} - -``` - -Response: - -```rust -struct VotesResponse { - /// All votes we have, but the requester was missing. - missing: Vec<(DisputeStatement, ValidatorIndex, ValidatorSignature)>, -} -``` - -## Functionality - -Distributing disputes needs to be a reliable protocol. We would like to make as -sure as possible that our vote got properly delivered to all concerned -validators. For this to work, this subsystem won't be gossip based, but instead -will use a request/response protocol for application level confirmations. The -request will be the payload (the actual votes/statements), the response will -be the confirmation. See [above][#wire-format]. - -### Starting a Dispute - -A dispute is initiated once a node sends the first `DisputeRequest` wire message, -which must contain an "invalid" vote and a "valid" vote. - -The dispute distribution subsystem can get instructed to send that message out to -all concerned validators by means of a `DisputeDistributionMessage::SendDispute` -message. That message must contain an invalid vote from the local node and some -valid one, e.g. a backing statement. - -We include a valid vote as well, so any node regardless of whether it is synced -with the chain or not or has seen backing/approval vote can see that there are -conflicting votes available, hence we have a valid dispute. Nodes will still -need to check whether the disputing votes are somewhat current and not some -stale ones. - -### Participating in a Dispute - -Upon receiving a `DisputeRequest` message, a dispute distribution will trigger the -import of the received votes via the dispute coordinator -(`DisputeCoordinatorMessage::ImportStatements`). The dispute coordinator will -take care of participating in that dispute if necessary. Once it is done, the -coordinator will send a `DisputeDistributionMessage::SendDispute` message to dispute -distribution. From here, everything is the same as for starting a dispute, -except that if the local node deemed the candidate valid, the `SendDispute` -message will contain a valid vote signed by our node and will contain the -initially received `Invalid` vote. - -Note, that we rely on the coordinator to check availability for spam protection -(see below). -In case the current node is only a potential block producer and does not -actually need to recover availability (as it is not going to participate in the -dispute), there is a potential optimization available: The coordinator could -first just check whether we have our piece and only if we don't, try to recover -availability. Our node having a piece would be proof enough of the -data to be available and thus the dispute to not be spam. - -### Sending of messages - -Starting and participating in a dispute are pretty similar from the perspective -of disptute distribution. Once we receive a `SendDispute` message we try to make -sure to get the data out. We keep track of all the parachain validators that -should see the message, which are all the parachain validators of the session -where the dispute happened as they will want to participate in the dispute. In -addition we also need to get the votes out to all authorities of the current -session (which might be the same or not and may change during the dispute). -Those authorities will not participate in the dispute, but need to see the -statements so they can include them in blocks. - -We keep track of connected parachain validators and authorities and will issue -warnings in the logs if connected nodes are less than two thirds of the -corresponding sets. We also only consider a message transmitted, once we -received a confirmation message. If not, we will keep retrying getting that -message out as long as the dispute is deemed alive. To determine whether a -dispute is still alive we will issue a -`DisputeCoordinatorMessage::ActiveDisputes` message before each retry run. Once -a dispute is no longer live, we will clean up the state accordingly. - -### Reception & Spam Considerations - -Because we are not forwarding foreign statements, spam is not so much of an -issue as in other subsystems. Rate limiting should be implemented at the -substrate level, see -[#7750](https://github.com/paritytech/substrate/issues/7750). Still we should -make sure that it is not possible via spamming to prevent a dispute concluding -or worse from getting noticed. - -Considered attack vectors: - -1. Invalid disputes (candidate does not exist) could make us - run out of resources. E.g. if we recorded every statement, we could run out - of disk space eventually. -2. An attacker can just flood us with notifications on any notification - protocol, assuming flood protection is not effective enough, our unbounded - buffers can fill up and we will run out of memory eventually. -3. Attackers could spam us at a high rate with invalid disputes. Our incoming - queue of requests could get monopolized by those malicious requests and we - won't be able to import any valid disputes and we could run out of resources, - if we tried to process them all in parallel. - -For tackling 1, we make sure to not occupy resources before we don't know a -candidate is available. So we will not record statements to disk until we -recovered availability for the candidate or know by some other means that the -dispute is legit. - -For 2, we will pick up on any dispute on restart, so assuming that any realistic -memory filling attack will take some time, we should be able to participate in a -dispute under such attacks. - -For 3, full monopolization of the incoming queue should not be possible assuming -substrate handles incoming requests in a somewhat fair way. Still we want some -defense mechanisms, at the very least we need to make sure to not exhaust -resources. - -The dispute coordinator will notify us -via `DisputeDistributionMessage::ReportCandidateUnavailable` about unavailable -candidates and we can disconnect from such peers/decrease their reputation -drastically. This alone should get us quite far with regards to queue -monopolization, as availability recovery is expected to fail relatively quickly -for unavailable data. - -Still if those spam messages come at a very high rate, we might still run out of -resources if we immediately call `DisputeCoordinatorMessage::ImportStatements` -on each one of them. Secondly with our assumption of 1/3 dishonest validators, -getting rid of all of them will take some time, depending on reputation timeouts -some of them might even be able to reconnect eventually. - -To mitigate those issues we will process dispute messages with a maximum -parallelism `N`. We initiate import processes for up to `N` candidates in -parallel. Once we reached `N` parallel requests we will start back pressuring on -the incoming requests. This saves us from resource exhaustion. - -To reduce impact of malicious nodes further, we can keep track from which nodes the -currently importing statements came from and will drop requests from nodes that -already have imports in flight. - -Honest nodes are not expected to send dispute statements at a high rate, but -even if they did: - -- we will import at least the first one and if it is valid it will trigger a - dispute, preventing finality. -- Chances are good that the first sent candidate from a peer is indeed the - oldest one (if they differ in age at all). -- for the dropped request any honest node will retry sending. -- there will be other nodes notifying us about that dispute as well. -- honest votes have a speed advantage on average. Apart from the very first - dispute statement for a candidate, which might cause the availability recovery - process, imports of honest votes will be super fast, while for spam imports - they will always take some time as we have to wait for availability to fail. - -So this general rate limit, that we drop requests from same peers if they come -faster than we can import the statements should not cause any problems for -honest nodes and is in their favour. - -Size of `N`: The larger `N` the better we can handle distributed flood attacks -(see previous paragraph), but we also get potentially more availability recovery -processes happening at the same time, which slows down the individual processes. -And we rather want to have one finish quickly than lots slowly at the same time. -On the other hand, valid disputes are expected to be rare, so if we ever exhaust -`N` it is very likely that this is caused by spam and spam recoveries don't cost -too much bandwidth due to empty responses. - -Considering that an attacker would need to attack many nodes in parallel to have -any effect, an `N` of 10 seems to be a good compromise. For honest requests, most -of those imports will likely concern the same candidate, and for dishonest ones -we get to disconnect from up to ten colluding adversaries at a time. - -For the size of the channel for incoming requests: Due to dropping of repeated -requests from same nodes we can make the channel relatively large without fear -of lots of spam requests sitting there wasting our time, even after we already -blocked a peer. For valid disputes, incoming requests can become bursty. On the -other hand we will also be very quick in processing them. A channel size of 100 -requests seems plenty and should be able to handle bursts adequately. - -### Node Startup - -On startup we need to check with the dispute coordinator for any ongoing -disputes and assume we have not yet sent our statement for those. In case we -find an explicit statement from ourselves via -`DisputeCoordinatorMessage::QueryCandidateVotes` we will pretend to just have -received a `SendDispute` message for that candidate. - -## Backing and Approval Votes - -Backing and approval votes get imported when they arrive/are created via the -distpute coordinator by corresponding subsystems. - -We assume that under normal operation each node will be aware of backing and -approval votes and optimize for that case. Nevertheless we want disputes to -conclude fast and reliable, therefore if a node is not aware of backing/approval -votes it can request the missing votes from the node that informed it about the -dispute (see [Resiliency](#Resiliency]) - -## Resiliency - -The above protocol should be sufficient for most cases, but there are certain -cases we also want to have covered: - -- Non validator nodes might be interested in ongoing voting, even before it is - recorded on chain. -- Nodes might have missed votes, especially backing or approval votes. - Recovering them from chain is difficult and expensive, due to runtime upgrades - and untyped extrinsics. - -To cover those cases, we introduce a second request/response protocol, which can -be handled on a lower priority basis as the one above. It consists of the -request/response messages as described in the [protocol -section][#vote-recovery]. - -Nodes may send those requests to validators, if they feel they are missing -votes. E.g. after some timeout, if no majority was reached yet in their point of -view or if they are not aware of any backing/approval votes for a received -disputed candidate. - -The receiver of a `IHaveVotesRequest` message will do the following: - -1. See if the sender is missing votes we are aware of - if so, respond with - those votes. -2. Check whether the sender knows about any votes, we don't know about and if so - send a `IHaveVotesRequest` request back, with our knowledge. -3. Record the peer's knowledge. - -When to send `IHaveVotesRequest` messages: - -1. Whenever we are asked to do so via - `DisputeDistributionMessage::FetchMissingVotes`. -2. Approximately once per block to some random validator as long as the dispute - is active. - -Spam considerations: Nodes want to accept those messages once per validator and -per slot. They are free to drop more frequent requests or requests for stale -data. Requests coming from non validator nodes, can be handled on a best effort -basis. - -## Considerations - -Dispute distribution is critical. We should keep track of available validator -connections and issue warnings if we are not connected to a majority of -validators. We should also keep track of failed sending attempts and log -warnings accordingly. As disputes are rare and TCP is a reliable protocol, -probably each failed attempt should trigger a warning in logs and also logged -into some Prometheus metric. - -## Disputes for non available candidates - -If deemed necessary we can later on also support disputes for non available -candidates, but disputes for those cases have totally different requirements. - -First of all such disputes are not time critical. We just want to have -some offender slashed at some point, but we have no risk of finalizing any bad -data. - -Second, as we won't have availability for such data, the node that initiated the -dispute will be responsible for providing the disputed data initially. Then -nodes which did the check already are also providers of the data, hence -distributing load and making prevention of the dispute from concluding harder -and harder over time. Assuming an attacker can not DoS a node forever, the -dispute will succeed eventually, which is all that matters. And again, even if -an attacker managed to prevent such a dispute from happening somehow, there is -no real harm done: There was no serious attack to begin with. - -[DistputeDistributionMessage]: ../../types/overseer-protocol.md#dispute-distribution-message -[RuntimeApiMessage]: ../../types/overseer-protocol.md#runtime-api-message -[DisputeParticipationMessage]: ../../types/overseer-protocol.md#dispute-participation-message diff --git a/roadmap/implementers-guide/src/node/disputes/dispute-participation.md b/roadmap/implementers-guide/src/node/disputes/dispute-participation.md deleted file mode 100644 index 3eb11da1a0b5..000000000000 --- a/roadmap/implementers-guide/src/node/disputes/dispute-participation.md +++ /dev/null @@ -1,65 +0,0 @@ -# Dispute Participation - -This subsystem is responsible for actually participating in disputes: when notified of a dispute, we need to recover the candidate data, validate the candidate, and cast our vote in the dispute. - -Fortunately, most of that work is handled by other subsystems; this subsystem is just a small glue component for tying other subsystems together and issuing statements based on their validity. - -## Protocol - -Input: [DisputeParticipationMessage][DisputeParticipationMessage] - -Output: - - [RuntimeApiMessage][RuntimeApiMessage] - - [CandidateValidationMessage][CandidateValidationMessage] - - [AvailabilityRecoveryMessage][AvailabilityRecoveryMessage] - - [ChainApiMessage][ChainApiMessage] - -## Functionality - -In-memory state: - -```rust -struct State { - recent_block_hash: Option<(BlockNumber, Hash)> -} -``` - -### On `OverseerSignal::ActiveLeavesUpdate` - -Update `recent_block` in in-memory state according to the highest observed active leaf. - -### On `OverseerSignal::BlockFinalized` - -Do nothing. - -### On `OverseerSignal::Conclude` - -Conclude. - -### On `DisputeParticipationMessage::Participate` - -* Decompose into parts: `{ candidate_hash, candidate_receipt, session, voted_indices }` -* Issue an [`AvailabilityRecoveryMessage::RecoverAvailableData`][AvailabilityRecoveryMessage] -* If the result is `Unavailable`, return. -* If the result is `Invalid`, [cast invalid votes](#cast-votes) and return. -* If the data is recovered, dispatch a [`RuntimeApiMessage::ValidationCodeByHash`][RuntimeApiMessage] with the parameters `(candidate_receipt.descriptor.validation_code_hash)` at `state.recent_block.hash`. -* Dispatch a [`AvailabilityStoreMessage::StoreAvailableData`][AvailabilityStoreMessage] with the data. -* If the code is not fetched from the chain, return. This should be impossible with correct relay chain configuration, at least if chain synchronization is working correctly. -* Dispatch a [`CandidateValidationMessage::ValidateFromExhaustive`][CandidateValidationMessage] with the available data and the validation code. -* If the validation result is `Invalid`, [cast invalid votes](#cast-votes) and return. -* If the validation fails, [cast invalid votes](#cast-votes) and return. -* If the validation succeeds, compute the `CandidateCommitments` based on the validation result and compare against the candidate receipt's `commitments_hash`. If they match, [cast valid votes](#cast-votes) and if not, [cast invalid votes](#cast-votes). - -### Cast Votes - -This requires the parameters `{ candidate_receipt, candidate_hash, session, voted_indices }` as well as a choice of either `Valid` or `Invalid`. - -Invoke [`DisputeCoordinatorMessage::IssueLocalStatement`][DisputeCoordinatorMessage] with `is_valid` according to the parametrization. - -[RuntimeApiMessage]: ../../types/overseer-protocol.md#runtime-api-message -[DisputeParticipationMessage]: ../../types/overseer-protocol.md#dispute-participation-message -[DisputeCoordinatorMessage]: ../../types/overseer-protocol.md#dispute-coordinator-message -[CandidateValidationMessage]: ../../types/overseer-protocol.md#candidate-validation-message -[AvailabilityRecoveryMessage]: ../../types/overseer-protocol.md#availability-recovery-message -[ChainApiMessage]: ../../types/overseer-protocol.md#chain-api-message -[AvailabilityStoreMessage]: ../../types/overseer-protocol.md#availability-store-message diff --git a/roadmap/implementers-guide/src/node/grandpa-voting-rule.md b/roadmap/implementers-guide/src/node/grandpa-voting-rule.md deleted file mode 100644 index 5e608ccfd62e..000000000000 --- a/roadmap/implementers-guide/src/node/grandpa-voting-rule.md +++ /dev/null @@ -1,10 +0,0 @@ -# GRANDPA Voting Rule - -Specifics on the motivation and types of constraints we apply to the GRANDPA voting logic as well as the definitions of **viable** and **finalizable** blocks can be found in the [Chain Selection Protocol](../protocol-chain-selection.md) section. -The subsystem which provides us with viable leaves is the [Chain Selection Subsystem](utility/chain-selection.md). - -GRANDPA's regular voting rule is for each validator to select the longest chain they are aware of. GRANDPA proceeds in rounds, collecting information from all online validators and determines the blocks that a supermajority of validators all have in common with each other. - -The low-level GRANDPA logic will provide us with a **required block**. We can find the best leaf containing that block in its chain with the [`ChainSelectionMessage::BestLeafContaining`](../types/overseer-protocol.md#chain-selection-message). If the result is `None`, then we will simply cast a vote on the required block. - -The **viable** leaves provided from the chain selection subsystem are not necessarily **finalizable**, so we need to perform further work to discover the finalizable ancestor of the block. The first constraint is to avoid voting on any unapproved block. The highest approved ancestor of a given block can be determined by querying the Approval Voting subsystem via the [`ApprovalVotingMessage::ApprovedAncestor`](../types/overseer-protocol.md#approval-voting) message. If the response is `Some`, we continue and apply the second constraint. The second constraint is to avoid voting on any block containing a candidate undergoing an active dispute. The list of block hashes and candidates returned from `ApprovedAncestor` should be reversed, and passed to the [`DisputeCoordinatorMessage::DetermineUndisputedChain`](../types/overseer-protocol.md#dispute-coordinator-message) to determine the **finalizable** block which will be our eventual vote. diff --git a/roadmap/implementers-guide/src/node/overseer.md b/roadmap/implementers-guide/src/node/overseer.md deleted file mode 100644 index 35b69ff28305..000000000000 --- a/roadmap/implementers-guide/src/node/overseer.md +++ /dev/null @@ -1,98 +0,0 @@ -# Overseer - -The overseer is responsible for these tasks: - -1. Setting up, monitoring, and handing failure for overseen subsystems. -1. Providing a "heartbeat" of which relay-parents subsystems should be working on. -1. Acting as a message bus between subsystems. - -The hierarchy of subsystems: - -```text -+--------------+ +------------------+ +--------------------+ -| | | |----> Subsystem A | -| Block Import | | | +--------------------+ -| Events |------> | +--------------------+ -+--------------+ | |----> Subsystem B | - | Overseer | +--------------------+ -+--------------+ | | +--------------------+ -| | | |----> Subsystem C | -| Finalization |------> | +--------------------+ -| Events | | | +--------------------+ -| | | |----> Subsystem D | -+--------------+ +------------------+ +--------------------+ - -``` - -The overseer determines work to do based on block import events and block finalization events. It does this by keeping track of the set of relay-parents for which work is currently being done. This is known as the "active leaves" set. It determines an initial set of active leaves on startup based on the data on-disk, and uses events about blockchain import to update the active leaves. Updates lead to [`OverseerSignal`](../types/overseer-protocol.md#overseer-signal)`::ActiveLeavesUpdate` being sent according to new relay-parents, as well as relay-parents to stop considering. Block import events inform the overseer of leaves that no longer need to be built on, now that they have children, and inform us to begin building on those children. Block finalization events inform us when we can stop focusing on blocks that appear to have been orphaned. - -The overseer is also responsible for tracking the freshness of active leaves. Leaves are fresh when they're encountered for the first time, and stale when they're encountered for subsequent times. This can occur after chain reversions or when the fork-choice rule abandons some chain. This distinction is used to manage **Reversion Safety**. Consensus messages are often localized to a specific relay-parent, and it is often a misbehavior to equivocate or sign two conflicting messages. When reverting the chain, we may begin work on a leaf that subsystems have already signed messages for. Subsystems which need to account for reversion safety should avoid performing work on stale leaves. - -The overseer's logic can be described with these functions: - -## On Startup - -* Start all subsystems -* Determine all blocks of the blockchain that should be built on. This should typically be the head of the best fork of the chain we are aware of. Sometimes add recent forks as well. -* Send an `OverseerSignal::ActiveLeavesUpdate` to all subsystems with `activated` containing each of these blocks. -* Begin listening for block import and finality events - -## On Block Import Event - -* Apply the block import event to the active leaves. A new block should lead to its addition to the active leaves set and its parent being deactivated. -* Mark any stale leaves as stale. The overseer should track all leaves it activates to determine whether leaves are fresh or stale. -* Send an `OverseerSignal::ActiveLeavesUpdate` message to all subsystems containing all activated and deactivated leaves. -* Ensure all `ActiveLeavesUpdate` messages are flushed before resuming activity as a message router. - -> TODO: in the future, we may want to avoid building on too many sibling blocks at once. the notion of a "preferred head" among many competing sibling blocks would imply changes in our "active leaves" update rules here - -## On Finalization Event - -* Note the height `h` of the newly finalized block `B`. -* Prune all leaves from the active leaves which have height `<= h` and are not `B`. -* Issue `OverseerSignal::ActiveLeavesUpdate` containing all deactivated leaves. - -## On Subsystem Failure - -Subsystems are essential tasks meant to run as long as the node does. Subsystems can spawn ephemeral work in the form of jobs, but the subsystems themselves should not go down. If a subsystem goes down, it will be because of a critical error that should take the entire node down as well. - -## Communication Between Subsystems - -When a subsystem wants to communicate with another subsystem, or, more typically, a job within a subsystem wants to communicate with its counterpart under another subsystem, that communication must happen via the overseer. Consider this example where a job on subsystem A wants to send a message to its counterpart under subsystem B. This is a realistic scenario, where you can imagine that both jobs correspond to work under the same relay-parent. - -```text - +--------+ +--------+ - | | | | - |Job A-1 | (sends message) (receives message) |Job B-1 | - | | | | - +----|---+ +----^---+ - | +------------------------------+ ^ - v | | | -+---------v---------+ | | +---------|---------+ -| | | | | | -| Subsystem A | | Overseer / Message | | Subsystem B | -| -------->> Bus -------->> | -| | | | | | -+-------------------+ | | +-------------------+ - | | - +------------------------------+ -``` - -First, the subsystem that spawned a job is responsible for handling the first step of the communication. The overseer is not aware of the hierarchy of tasks within any given subsystem and is only responsible for subsystem-to-subsystem communication. So the sending subsystem must pass on the message via the overseer to the receiving subsystem, in such a way that the receiving subsystem can further address the communication to one of its internal tasks, if necessary. - -This communication prevents a certain class of race conditions. When the Overseer determines that it is time for subsystems to begin working on top of a particular relay-parent, it will dispatch a `ActiveLeavesUpdate` message to all subsystems to do so, and those messages will be handled asynchronously by those subsystems. Some subsystems will receive those messsages before others, and it is important that a message sent by subsystem A after receiving `ActiveLeavesUpdate` message will arrive at subsystem B after its `ActiveLeavesUpdate` message. If subsystem A maintaned an independent channel with subsystem B to communicate, it would be possible for subsystem B to handle the side message before the `ActiveLeavesUpdate` message, but it wouldn't have any logical course of action to take with the side message - leading to it being discarded or improperly handled. Well-architectured state machines should have a single source of inputs, so that is what we do here. - -One exception is reasonable to make for responses to requests. A request should be made via the overseer in order to ensure that it arrives after any relevant `ActiveLeavesUpdate` message. A subsystem issuing a request as a result of a `ActiveLeavesUpdate` message can safely receive the response via a side-channel for two reasons: - -1. It's impossible for a request to be answered before it arrives, it is provable that any response to a request obeys the same ordering constraint. -1. The request was sent as a result of handling a `ActiveLeavesUpdate` message. Then there is no possible future in which the `ActiveLeavesUpdate` message has not been handled upon the receipt of the response. - -So as a single exception to the rule that all communication must happen via the overseer we allow the receipt of responses to requests via a side-channel, which may be established for that purpose. This simplifies any cases where the outside world desires to make a request to a subsystem, as the outside world can then establish a side-channel to receive the response on. - -It's important to note that the overseer is not aware of the internals of subsystems, and this extends to the jobs that they spawn. The overseer isn't aware of the existence or definition of those jobs, and is only aware of the outer subsystems with which it interacts. This gives subsystem implementations leeway to define internal jobs as they see fit, and to wrap a more complex hierarchy of state machines than having a single layer of jobs for relay-parent-based work. Likewise, subsystems aren't required to spawn jobs. Certain types of subsystems, such as those for shared storage or networking resources, won't perform block-based work but would still benefit from being on the Overseer's message bus. These subsystems can just ignore the overseer's signals for block-based work. - -Furthermore, the protocols by which subsystems communicate with each other should be well-defined irrespective of the implementation of the subsystem. In other words, their interface should be distinct from their implementation. This will prevent subsystems from accessing aspects of each other that are beyond the scope of the communication boundary. - -## On shutdown - -Send an `OverseerSignal::Conclude` message to each subsystem and wait some time for them to conclude before hard-exiting. diff --git a/roadmap/implementers-guide/src/node/subsystems-and-jobs.md b/roadmap/implementers-guide/src/node/subsystems-and-jobs.md deleted file mode 100644 index bffee1ffd2b1..000000000000 --- a/roadmap/implementers-guide/src/node/subsystems-and-jobs.md +++ /dev/null @@ -1,418 +0,0 @@ -# Subsystems and Jobs - -In this section we define the notions of Subsystems and Jobs. These are guidelines for how we will employ an architecture of hierarchical state machines. We'll have a top-level state machine which oversees the next level of state machines which oversee another layer of state machines and so on. The next sections will lay out these guidelines for what we've called subsystems and jobs, since this model applies to many of the tasks that the Node-side behavior needs to encompass, but these are only guidelines and some Subsystems may have deeper hierarchies internally. - -Subsystems are long-lived worker tasks that are in charge of performing some particular kind of work. All subsystems can communicate with each other via a well-defined protocol. Subsystems can't generally communicate directly, but must coordinate communication through an [Overseer](overseer.md), which is responsible for relaying messages, handling subsystem failures, and dispatching work signals. - -Most work that happens on the Node-side is related to building on top of a specific relay-chain block, which is contextually known as the "relay parent". We call it the relay parent to explicitly denote that it is a block in the relay chain and not on a parachain. We refer to the parent because when we are in the process of building a new block, we don't know what that new block is going to be. The parent block is our only stable point of reference, even though it is usually only useful when it is not yet a parent but in fact a leaf of the block-DAG expected to soon become a parent (because validators are authoring on top of it). Furthermore, we are assuming a forkful blockchain-extension protocol, which means that there may be multiple possible children of the relay-parent. Even if the relay parent has multiple children blocks, the parent of those children is the same, and the context in which those children is authored should be the same. The parent block is the best and most stable reference to use for defining the scope of work items and messages, and is typically referred to by its cryptographic hash. - -Since this goal of determining when to start and conclude work relative to a specific relay-parent is common to most, if not all subsystems, it is logically the job of the Overseer to distribute those signals as opposed to each subsystem duplicating that effort, potentially being out of synchronization with each other. Subsystem A should be able to expect that subsystem B is working on the same relay-parents as it is. One of the Overseer's tasks is to provide this heartbeat, or synchronized rhythm, to the system. - -The work that subsystems spawn to be done on a specific relay-parent is known as a job. Subsystems should set up and tear down jobs according to the signals received from the overseer. Subsystems may share or cache state between jobs. - -Subsystems must be robust to spurious exits. The outputs of the set of subsystems as a whole comprises of signed messages and data committed to disk. Care must be taken to avoid issuing messages that are not substantiated. Since subsystems need to be safe under spurious exits, it is the expected behavior that an `OverseerSignal::Conclude` can just lead to breaking the loop and exiting directly as opposed to waiting for everything to shut down gracefully. - -## Subsystem Message Traffic - -Which subsystems send messages to which other subsystems. - -**Note**: This diagram omits the overseer for simplicity. In fact, all messages are relayed via the overseer. - -**Note**: Messages with a filled diamond arrowhead ("♦") include a `oneshot::Sender` which communicates a response from the recipient. -Messages with an open triangle arrowhead ("Δ") do not include a return sender. - -```dot process -digraph { - rankdir=LR; - node [shape = oval]; - concentrate = true; - - av_store [label = "Availability Store"] - avail_dist [label = "Availability Distribution"] - avail_rcov [label = "Availability Recovery"] - bitf_dist [label = "Bitfield Distribution"] - bitf_sign [label = "Bitfield Signing"] - cand_back [label = "Candidate Backing"] - cand_sel [label = "Candidate Selection"] - cand_val [label = "Candidate Validation"] - chn_api [label = "Chain API"] - coll_gen [label = "Collation Generation"] - coll_prot [label = "Collator Protocol"] - net_brdg [label = "Network Bridge"] - pov_dist [label = "PoV Distribution"] - provisioner [label = "Provisioner"] - runt_api [label = "Runtime API"] - stmt_dist [label = "Statement Distribution"] - - av_store -> runt_api [arrowhead = "diamond", label = "Request::CandidateEvents"] - av_store -> chn_api [arrowhead = "diamond", label = "BlockNumber"] - av_store -> chn_api [arrowhead = "diamond", label = "BlockHeader"] - av_store -> runt_api [arrowhead = "diamond", label = "Request::Validators"] - av_store -> chn_api [arrowhead = "diamond", label = "FinalizedBlockHash"] - - avail_dist -> net_brdg [arrowhead = "onormal", label = "Request::SendValidationMessages"] - avail_dist -> runt_api [arrowhead = "diamond", label = "Request::AvailabilityCores"] - avail_dist -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - avail_dist -> av_store [arrowhead = "diamond", label = "QueryDataAvailability"] - avail_dist -> av_store [arrowhead = "diamond", label = "QueryChunk"] - avail_dist -> av_store [arrowhead = "diamond", label = "StoreChunk"] - avail_dist -> runt_api [arrowhead = "diamond", label = "Request::Validators"] - avail_dist -> chn_api [arrowhead = "diamond", label = "Ancestors"] - avail_dist -> runt_api [arrowhead = "diamond", label = "Request::SessionIndexForChild"] - - avail_rcov -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - avail_rcov -> av_store [arrowhead = "diamond", label = "QueryChunk"] - avail_rcov -> net_brdg [arrowhead = "diamond", label = "ConnectToValidators"] - avail_rcov -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage::Chunk"] - avail_rcov -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage::RequestChunk"] - - bitf_dist -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - bitf_dist -> provisioner [arrowhead = "onormal", label = "ProvisionableData::Bitfield"] - bitf_dist -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage"] - bitf_dist -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage"] - bitf_dist -> runt_api [arrowhead = "diamond", label = "Request::Validatiors"] - bitf_dist -> runt_api [arrowhead = "diamond", label = "Request::SessionIndexForChild"] - - bitf_sign -> av_store [arrowhead = "diamond", label = "QueryChunkAvailability"] - bitf_sign -> runt_api [arrowhead = "diamond", label = "Request::AvailabilityCores"] - bitf_sign -> bitf_dist [arrowhead = "onormal", label = "DistributeBitfield"] - - cand_back -> av_store [arrowhead = "diamond", label = "StoreAvailableData"] - cand_back -> pov_dist [arrowhead = "diamond", label = "FetchPoV"] - cand_back -> cand_val [arrowhead = "diamond", label = "ValidateFromChainState"] - cand_back -> cand_sel [arrowhead = "onormal", label = "Invalid"] - cand_back -> provisioner [arrowhead = "onormal", label = "ProvisionableData::MisbehaviorReport"] - cand_back -> provisioner [arrowhead = "onormal", label = "ProvisionableData::BackedCandidate"] - cand_back -> pov_dist [arrowhead = "onormal", label = "DistributePoV"] - cand_back -> stmt_dist [arrowhead = "onormal", label = "Share"] - - cand_sel -> coll_prot [arrowhead = "diamond", label = "FetchCollation"] - cand_sel -> cand_back [arrowhead = "onormal", label = "Second"] - cand_sel -> coll_prot [arrowhead = "onormal", label = "ReportCollator"] - - cand_val -> runt_api [arrowhead = "diamond", label = "Request::PersistedValidationData"] - cand_val -> runt_api [arrowhead = "diamond", label = "Request::ValidationCode"] - cand_val -> runt_api [arrowhead = "diamond", label = "Request::CheckValidationOutputs"] - - coll_gen -> coll_prot [arrowhead = "onormal", label = "DistributeCollation"] - - coll_prot -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - coll_prot -> net_brdg [arrowhead = "onormal", label = "Declare"] - coll_prot -> net_brdg [arrowhead = "onormal", label = "AdvertiseCollation"] - coll_prot -> net_brdg [arrowhead = "onormal", label = "Collation"] - coll_prot -> net_brdg [arrowhead = "onormal", label = "RequestCollation"] - coll_prot -> cand_sel [arrowhead = "onormal", label = "Collation"] - - net_brdg -> avail_dist [arrowhead = "onormal", label = "NetworkBridgeUpdateV1"] - net_brdg -> bitf_dist [arrowhead = "onormal", label = "NetworkBridgeUpdateV1"] - net_brdg -> pov_dist [arrowhead = "onormal", label = "NetworkBridgeUpdateV1"] - net_brdg -> stmt_dist [arrowhead = "onormal", label = "NetworkBridgeUpdateV1"] - net_brdg -> coll_prot [arrowhead = "onormal", label = "NetworkBridgeUpdateV1"] - - pov_dist -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage"] - pov_dist -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - - provisioner -> cand_back [arrowhead = "diamond", label = "GetBackedCandidates"] - provisioner -> chn_api [arrowhead = "diamond", label = "BlockNumber"] - - stmt_dist -> net_brdg [arrowhead = "onormal", label = "SendValidationMessage"] - stmt_dist -> net_brdg [arrowhead = "onormal", label = "ReportPeer"] - stmt_dist -> cand_back [arrowhead = "onormal", label = "Statement"] - stmt_dist -> runt_api [arrowhead = "onormal", label = "Request::Validators"] - stmt_dist -> runt_api [arrowhead = "onormal", label = "Request::SessionIndexForChild"] -} -``` - -## The Path to Inclusion (Node Side) - -Let's contextualize that diagram a bit by following a parachain block from its creation through finalization. -Parachains can use completely arbitrary processes to generate blocks. The relay chain doesn't know or care about -the details; each parachain just needs to provide a [collator](collators/collation-generation.md). - -**Note**: Inter-subsystem communications are relayed via the overseer, but that step is omitted here for brevity. - -**Note**: Dashed lines indicate a request/response cycle, where the response is communicated asynchronously via -a oneshot channel. Adjacent dashed lines may be processed in parallel. - -```mermaid -sequenceDiagram - participant Overseer - participant CollationGeneration - participant RuntimeApi - participant CollatorProtocol - - Overseer ->> CollationGeneration: ActiveLeavesUpdate - loop for each activated head - CollationGeneration -->> RuntimeApi: Request availability cores - CollationGeneration -->> RuntimeApi: Request validators - - Note over CollationGeneration: Determine an appropriate ScheduledCore
and OccupiedCoreAssumption - - CollationGeneration -->> RuntimeApi: Request full validation data - - Note over CollationGeneration: Build the collation - - CollationGeneration ->> CollatorProtocol: DistributeCollation - end -``` - -The `DistributeCollation` messages that `CollationGeneration` sends to the `CollatorProtocol` contains -two items: a `CandidateReceipt` and `PoV`. The `CollatorProtocol` is then responsible for distributing -that collation to interested validators. However, not all potential collations are of interest. The -`CandidateSelection` subsystem is responsible for determining which collations are interesting, before -`CollatorProtocol` actually fetches the collation. - -```mermaid -sequenceDiagram - participant CollationGeneration - participant CS as CollatorProtocol::CollatorSide - participant NB as NetworkBridge - participant VS as CollatorProtocol::ValidatorSide - participant CandidateSelection - - CollationGeneration ->> CS: DistributeCollation - CS -->> NB: ConnectToValidators - - Note over CS,NB: This connects to multiple validators. - - CS ->> NB: Declare - NB ->> VS: Declare - - Note over CS: Ensure that the connected validator is among
the para's validator set. Otherwise, skip it. - - CS ->> NB: AdvertiseCollation - NB ->> VS: AdvertiseCollation - - VS ->> CandidateSelection: Collation - - Note over CandidateSelection: Lots of other machinery in play here,
but there are only three outcomes from the
perspective of the `CollatorProtocol`: - - alt happy path - CandidateSelection -->> VS: FetchCollation - Activate VS - VS ->> NB: RequestCollation - NB ->> CS: RequestCollation - CS ->> NB: Collation - NB ->> VS: Collation - Deactivate VS - - else collation invalid or unexpected - CandidateSelection ->> VS: ReportCollator - VS ->> NB: ReportPeer - - else CandidateSelection already selected a different candidate - Note over CandidateSelection: silently drop - end -``` - -Assuming we hit the happy path, flow continues with `CandidateSelection` receiving a `(candidate_receipt, pov)` as -the return value from its -`FetchCollation` request. The only time `CandidateSelection` actively requests a collation is when -it hasn't yet seconded one for some `relay_parent`, and is ready to second. - -```mermaid -sequenceDiagram - participant CS as CandidateSelection - participant CB as CandidateBacking - participant CV as CandidateValidation - participant PV as Provisioner - participant SD as StatementDistribution - participant PD as PoVDistribution - - CS ->> CB: Second - % fn validate_and_make_available - CB -->> CV: ValidateFromChainState - - Note over CB,CV: There's some complication in the source, as
candidates are actually validated in a separate task. - - alt valid - Note over CB: This is where we transform the CandidateReceipt into a CommittedCandidateReceipt - % CandidateBackingJob::sign_import_and_distribute_statement - % CandidateBackingJob::import_statement - CB ->> PV: ProvisionableData::BackedCandidate - % CandidateBackingJob::issue_new_misbehaviors - opt if there is misbehavior to report - CB ->> PV: ProvisionableData::MisbehaviorReport - end - % CandidateBackingJob::distribute_signed_statement - CB ->> SD: Share - % CandidateBackingJob::distribute_pov - CB ->> PD: DistributePoV - else invalid - CB ->> CS: Invalid - end -``` - -At this point, you'll see that control flows in two directions: to `StatementDistribution` to distribute -the `SignedStatement`, and to `PoVDistribution` to distribute the `PoV`. However, that's largely a mirage: -while the initial implementation distributes `PoV`s by gossip, that's inefficient, and will be replaced -with a system which fetches `PoV`s only when actually necessary. - -> TODO: figure out more precisely the current status and plans; write them up - -Therefore, we'll follow the `SignedStatement`. The `StatementDistribution` subsystem is largely concerned -with implementing a gossip protocol: - -```mermaid -sequenceDiagram - participant SD as StatementDistribution - participant NB as NetworkBridge - - alt On receipt of a
SignedStatement from CandidateBacking - % fn circulate_statement_and_dependents - SD ->> NB: SendValidationMessage - - Note right of NB: Bridge sends validation message to all appropriate peers - else On receipt of peer validation message - NB ->> SD: NetworkBridgeUpdateV1 - - % fn handle_incoming_message - alt if we aren't already aware of the relay parent for this statement - SD ->> NB: ReportPeer - end - - % fn circulate_statement - opt if we know of peers who haven't seen this message, gossip it - SD ->> NB: SendValidationMessage - end - end -``` - -But who are these `Listener`s who've asked to be notified about incoming `SignedStatement`s? -Nobody, as yet. - -Let's pick back up with the PoV Distribution subsystem. - -```mermaid -sequenceDiagram - participant CB as CandidateBacking - participant PD as PoVDistribution - participant Listener - participant NB as NetworkBridge - - CB ->> PD: DistributePoV - - Note over PD,Listener: Various subsystems can register listeners for when PoVs arrive - - loop for each Listener - PD ->> Listener: Arc - end - - Note over PD: Gossip to connected peers - - PD ->> NB: SendPoV - - Note over PD,NB: On receipt of a network PoV, PovDistribution forwards it to each Listener.
It also penalizes bad gossipers. -``` - -Unlike in the case of `StatementDistribution`, there is another subsystem which in various circumstances -already registers a listener to be notified when a new `PoV` arrives: `CandidateBacking`. Note that this -is the second time that `CandidateBacking` has gotten involved. The first instance was from the perspective -of the validator choosing to second a candidate via its `CandidateSelection` subsystem. This time, it's -from the perspective of some other validator, being informed that this foreign `PoV` has been received. - -```mermaid -sequenceDiagram - participant SD as StatementDistribution - participant CB as CandidateBacking - participant PD as PoVDistribution - participant AS as AvailabilityStore - - SD ->> CB: Statement - % CB::maybe_validate_and_import => CB::kick_off_validation_work - CB -->> PD: FetchPoV - Note over CB,PD: This call creates the Listener from the previous diagram - - CB ->> AS: StoreAvailableData -``` - -At this point, things have gone a bit nonlinear. Let's pick up the thread again with `BitfieldSigning`. As -the `Overseer` activates each relay parent, it starts a `BitfieldSigningJob` which operates on an extremely -simple metric: after creation, it immediately goes to sleep for 1.5 seconds. On waking, it records the state -of the world pertaining to availability at that moment. - -```mermaid -sequenceDiagram - participant OS as Overseer - participant BS as BitfieldSigning - participant RA as RuntimeApi - participant AS as AvailabilityStore - participant BD as BitfieldDistribution - - OS ->> BS: ActiveLeavesUpdate - loop for each activated relay parent - Note over BS: Wait 1.5 seconds - BS -->> RA: Request::AvailabilityCores - loop for each availability core - BS -->> AS: QueryChunkAvailability - end - BS ->> BD: DistributeBitfield - end -``` - -`BitfieldDistribution` is, like the other `*Distribution` subsystems, primarily interested in implementing -a peer-to-peer gossip network propagating its particular messages. However, it also serves as an essential -relay passing the message along. - -```mermaid -sequenceDiagram - participant BS as BitfieldSigning - participant BD as BitfieldDistribution - participant NB as NetworkBridge - participant PV as Provisioner - - BS ->> BD: DistributeBitfield - BD ->> PV: ProvisionableData::Bitfield - BD ->> NB: SendValidationMessage::BitfieldDistribution::Bitfield -``` - -We've now seen the message flow to the `Provisioner`: both `CandidateBacking` and `BitfieldDistribution` -contribute provisionable data. Now, let's look at that subsystem. - -Much like the `BitfieldSigning` subsystem, the `Provisioner` creates a new job for each newly-activated -leaf, and starts a timer. Unlike `BitfieldSigning`, we won't depict that part of the process, because -the `Provisioner` also has other things going on. - -```mermaid -sequenceDiagram - participant A as Arbitrary - participant PV as Provisioner - participant CB as CandidateBacking - participant BD as BitfieldDistribution - participant RA as RuntimeApi - participant PI as ParachainsInherentDataProvider - - alt receive provisionable data - alt - CB ->> PV: ProvisionableData - else - BD ->> PV: ProvisionableData - end - - loop over stored Senders - PV ->> A: ProvisionableData - end - - Note over PV: store bitfields and backed candidates - else receive request for inherent data - PI ->> PV: RequestInherentData - alt we have already constructed the inherent data - PV ->> PI: send the inherent data - else we have not yet constructed the inherent data - Note over PV,PI: Store the return sender without sending immediately - end - else timer times out - note over PV: Waited 2 seconds - PV -->> RA: RuntimeApiRequest::AvailabilityCores - Note over PV: construct and store the inherent data - loop over stored inherent data requests - PV ->> PI: (SignedAvailabilityBitfields, BackedCandidates) - end - end -``` - -In principle, any arbitrary subsystem could send a `RequestInherentData` to the `Provisioner`. In practice, -only the `ParachainsInherentDataProvider` does so. - -The tuple `(SignedAvailabilityBitfields, BackedCandidates, ParentHeader)` is injected by the `ParachainsInherentDataProvider` -into the inherent data. From that point on, control passes from the node to the runtime. diff --git a/roadmap/implementers-guide/src/node/utility/README.md b/roadmap/implementers-guide/src/node/utility/README.md deleted file mode 100644 index 4b79f057a525..000000000000 --- a/roadmap/implementers-guide/src/node/utility/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Utility Subsystems - -The utility subsystems are an assortment which don't have a natural home in another subsystem collection. diff --git a/roadmap/implementers-guide/src/node/utility/availability-store.md b/roadmap/implementers-guide/src/node/utility/availability-store.md deleted file mode 100644 index aec10b1967e8..000000000000 --- a/roadmap/implementers-guide/src/node/utility/availability-store.md +++ /dev/null @@ -1,207 +0,0 @@ -# Availability Store - -This is a utility subsystem responsible for keeping available certain data and pruning that data. - -The two data types: - -- Full PoV blocks of candidates we have validated -- Availability chunks of candidates that were backed and noted available on-chain. - -For each of these data we have pruning rules that determine how long we need to keep that data available. - -PoV hypothetically only need to be kept around until the block where the data was made fully available is finalized. However, disputes can revert finality, so we need to be a bit more conservative and we add a delay. We should keep the PoV until a block that finalized availability of it has been finalized for 1 day + 1 hour. - -Availability chunks need to be kept available until the dispute period for the corresponding candidate has ended. We can accomplish this by using the same criterion as the above. This gives us a pruning condition of the block finalizing availability of the chunk being final for 1 day + 1 hour. - -There is also the case where a validator commits to make a PoV available, but the corresponding candidate is never backed. In this case, we keep the PoV available for 1 hour. - -There may be multiple competing blocks all ending the availability phase for a particular candidate. Until finality, it will be unclear which of those is actually the canonical chain, so the pruning records for PoVs and Availability chunks should keep track of all such blocks. - -## Lifetime of the block data and chunks in storage - -```dot process -digraph { - label = "Block data FSM\n\n\n"; - labelloc = "t"; - rankdir="LR"; - - st [label = "Stored"; shape = circle] - inc [label = "Included"; shape = circle] - fin [label = "Finalized"; shape = circle] - prn [label = "Pruned"; shape = circle] - - st -> inc [label = "Block\nincluded"] - st -> prn [label = "Stored block\ntimed out"] - inc -> fin [label = "Block\nfinalized"] - inc -> st [label = "Competing blocks\nfinalized"] - fin -> prn [label = "Block keep time\n(1 day + 1 hour) elapsed"] -} -``` - -## Database Schema - -We use an underlying Key-Value database where we assume we have the following operations available: - * `write(key, value)` - * `read(key) -> Option` - * `iter_with_prefix(prefix) -> Iterator<(key, value)>` - gives all keys and values in lexicographical order where the key starts with `prefix`. - -We use this database to encode the following schema: - -``` -("available", CandidateHash) -> Option -("chunk", CandidateHash, u32) -> Option -("meta", CandidateHash) -> Option - -("unfinalized", BlockNumber, BlockHash, CandidateHash) -> Option<()> -("prune_by_time", Timestamp, CandidateHash) -> Option<()> -``` - -Timestamps are the wall-clock seconds since unix epoch. Timestamps and block numbers are both encoded as big-endian so lexicographic order is ascending. - -The meta information that we track per-candidate is defined as the `CandidateMeta` struct - -```rust -struct CandidateMeta { - state: State, - data_available: bool, - chunks_stored: Bitfield, -} - -enum State { - /// Candidate data was first observed at the given time but is not available in any block. - Unavailable(Timestamp), - /// The candidate was first observed at the given time and was included in the given list of unfinalized blocks, which may be - /// empty. The timestamp here is not used for pruning. Either one of these blocks will be finalized or the state will regress to - /// `State::Unavailable`, in which case the same timestamp will be reused. - Unfinalized(Timestamp, Vec<(BlockNumber, BlockHash)>), - /// Candidate data has appeared in a finalized block and did so at the given time. - Finalized(Timestamp) -} -``` - -We maintain the invariant that if a candidate has a meta entry, its available data exists on disk if `data_available` is true. All chunks mentioned in the meta entry are available. - -Additionally, there is exactly one `prune_by_time` entry which holds the candidate hash unless the state is `Unfinalized`. There may be zero, one, or many "unfinalized" keys with the given candidate, and this will correspond to the `state` of the meta entry. - -## Protocol - -Input: [`AvailabilityStoreMessage`][ASM] - -Output: -- [`RuntimeApiMessage`][RAM] - - -## Functionality - -For each head in the `activated` list: - - Load all ancestors of the head back to the finalized block so we don't miss anything if import notifications are missed. If a `StoreChunk` message is received for a candidate which has no entry, then we will prematurely lose the data. - - Note any new candidates backed in the head. Update the `CandidateMeta` for each. If the `CandidateMeta` does not exist, create it as `Unavailable` with the current timestamp. Register a `"prune_by_time"` entry based on the current timestamp + 1 hour. - - Note any new candidate included in the head. Update the `CandidateMeta` for each, performing a transition from `Unavailable` to `Unfinalized` if necessary. That includes removing the `"prune_by_time"` entry. Add the head hash and number to the state, if unfinalized. Add an `"unfinalized"` entry for the block and candidate. - - The `CandidateEvent` runtime API can be used for this purpose. - -On `OverseerSignal::BlockFinalized(finalized)` events: - - for each key in `iter_with_prefix("unfinalized")` - - Stop if the key is beyond `("unfinalized, finalized)` - - For each block number f that we encounter, load the finalized hash for that block. - - The state of each `CandidateMeta` we encounter here must be `Unfinalized`, since we loaded the candidate from an `"unfinalized"` key. - - For each candidate that we encounter under `f` and the finalized block hash, - - Update the `CandidateMeta` to have `State::Finalized`. Remove all `"unfinalized"` entries from the old `Unfinalized` state. - - Register a `"prune_by_time"` entry for the candidate based on the current time + 1 day + 1 hour. - - For each candidate that we encounter under `f` which is not under the finalized block hash, - - Remove all entries under `f` in the `Unfinalized` state. - - If the `CandidateMeta` has state `Unfinalized` with an empty list of blocks, downgrade to `Unavailable` and re-schedule pruning under the timestamp + 1 hour. We do not prune here as the candidate still may be included in a descendent of the finalized chain. - - Remove all `"unfinalized"` keys under `f`. - - Update last_finalized = finalized. - - This is roughly `O(n * m)` where n is the number of blocks finalized since the last update, and `m` is the number of parachains. - -On `QueryAvailableData` message: - - - Query `("available", candidate_hash)` - - This is `O(n)` in the size of the data, which may be large. - -On `QueryDataAvailability` message: - - - Query whether `("meta", candidate_hash)` exists and `data_available == true`. - - This is `O(n)` in the size of the metadata which is small. - -On `QueryChunk` message: - - - Query `("chunk", candidate_hash, index)` - - This is `O(n)` in the size of the data, which may be large. - -On `QueryAllChunks` message: - - Query `("meta", candidate_hash)`. If `None`, send an empty response and return. - - For all `1` bits in the `chunks_stored`, query `("chunk", candidate_hash, index)`. Ignore but warn on errors, and return a vector of all loaded chunks. - -On `QueryChunkAvailability message: - - - Query whether `("meta", candidate_hash)` exists and the bit at `index` is set. - - This is `O(n)` in the size of the metadata which is small. - -On `StoreChunk` message: - - - If there is a `CandidateMeta` under the candidate hash, set the bit of the erasure-chunk in the `chunks_stored` bitfield to `1`. If it was not `1` already, write the chunk under `("chunk", candidate_hash, chunk_index)`. - - This is `O(n)` in the size of the chunk. - -On `StoreAvailableData` message: - - - If there is no `CandidateMeta` under the candidate hash, create it with `State::Unavailable(now)`. Load the `CandidateMeta` otherwise. - - Store `data` under `("available", candidate_hash)` and set `data_available` to true. - - Store each chunk under `("chunk", candidate_hash, index)` and set every bit in `chunks_stored` to `1`. - - This is `O(n)` in the size of the data as the aggregate size of the chunks is proportional to the data. - -Every 5 minutes, run a pruning routine: - - - for each key in `iter_with_prefix("prune_by_time")`: - - If the key is beyond ("prune_by_time", now), return. - - Remove the key. - - Extract `candidate_hash` from the key. - - Load and remove the `("meta", candidate_hash)` - - For each erasure chunk bit set, remove `("chunk", candidate_hash, bit_index)`. - - If `data_available`, remove `("available", candidate_hash) - - This is O(n * m) in the amount of candidates and average size of the data stored. This is probably the most expensive operation but does not need - to be run very often. - -## Basic scenarios to test - -Basically we need to test the correctness of data flow through state FSMs described earlier. These tests obviously assume that some mocking of time is happening. - -- Stored data that is never included pruned in necessary timeout - - A block (and/or a chunk) is added to the store. - - We never note that the respective candidate is included. - - Until a defined timeout the data in question is available. - - After this timeout the data is no longer available. - -- Stored data is kept until we are certain it is finalized. - - A block (and/or a chunk) is added to the store. - - It is available. - - Before the inclusion timeout expires notify storage that the candidate was included. - - The data is still available. - - Wait for an absurd amount of time (longer than 1 day). - - Check that the data is still available. - - Send finality notification about the block in question. - - Wait for some time below finalized data timeout. - - The data is still available. - - Wait until the data should have been pruned. - - The data is no longer available. - -- Forkfulness of the relay chain is taken into account - - Block `B1` is added to the store. - - Block `B2` is added to the store. - - Notify the subsystem that both `B1` and `B2` were included in different leafs of relay chain. - - Notify the subsystem that the leaf with `B1` was finalized. - - Leaf with `B2` is never finalized. - - Leaf with `B2` is pruned and its data is no longer available. - - Wait until the finalized data of `B1` should have been pruned. - - `B1` is no longer available. - -[RAM]: ../../types/overseer-protocol.md#runtime-api-message -[ASM]: ../../types/overseer-protocol.md#availability-store-message diff --git a/roadmap/implementers-guide/src/node/utility/candidate-validation.md b/roadmap/implementers-guide/src/node/utility/candidate-validation.md deleted file mode 100644 index c34672368c32..000000000000 --- a/roadmap/implementers-guide/src/node/utility/candidate-validation.md +++ /dev/null @@ -1,47 +0,0 @@ -# Candidate Validation - -This subsystem is responsible for handling candidate validation requests. It is a simple request/response server. - -A variety of subsystems want to know if a parachain block candidate is valid. None of them care about the detailed mechanics of how a candidate gets validated, just the results. This subsystem handles those details. - -## Protocol - -Input: [`CandidateValidationMessage`](../../types/overseer-protocol.md#validation-request-type) - -Output: Validation result via the provided response side-channel. - -## Functionality - -This subsystem answers two types of requests: one which draws out validation data from the state, and another which accepts all validation data exhaustively. The goal of both request types is to validate a candidate. There are three possible outputs of validation: either the candidate is valid, the candidate is invalid, or an internal error occurred. Whatever the end result is, it will be returned on the response channel to the requestor. - -Parachain candidates are validated against their validation function: A piece of Wasm code that is describes the state-transition of the parachain. Validation function execution is not metered. This means that an execution which is an infinite loop or simply takes too long must be forcibly exited by some other means. For this reason, we recommend dispatching candidate validation to be done on subprocesses which can be killed if they time-out. - -Upon receiving a validation request, the first thing the candidate validation subsystem should do is make sure it has all the necessary parameters to the validation function. These are: - * The Validation Function itself. - * The [`CandidateDescriptor`](../../types/candidate.md#candidatedescriptor). - * The [`ValidationData`](../../types/candidate.md#validationdata). - * The [`PoV`](../../types/availability.md#proofofvalidity). - -### Determining Parameters - -For a [`CandidateValidationMessage`][CVM]`::ValidateFromExhaustive`, these parameters are exhaustively provided. - -For a [`CandidateValidationMessage`][CVM]`::ValidateFromChainState`, some more work needs to be done. Due to the uncertainty of Availability Cores (implemented in the [`Scheduler`](../../runtime/scheduler.md) module of the runtime), a candidate at a particular relay-parent and for a particular para may have two different valid validation-data to be executed under depending on what is assumed to happen if the para is occupying a core at the onset of the new block. This is encoded as an `OccupiedCoreAssumption` in the runtime API. - -The way that we can determine which assumption the candidate is meant to be executed under is simply to do an exhaustive check of both possibilities based on the state of the relay-parent. First we fetch the validation data under the assumption that the block occupying becomes available. If the `validation_data_hash` of the `CandidateDescriptor` matches this validation data, we use that. Otherwise, if the `validation_data_hash` matches the validation data fetched under the `TimedOut` assumption, we use that. Otherwise, we return a `ValidationResult::Invalid` response and conclude. - -Then, we can fetch the validation code from the runtime based on which type of candidate this is. This gives us all the parameters. The descriptor and PoV come from the request itself, and the other parameters have been derived from the state. - -> TODO: This would be a great place for caching to avoid making lots of runtime requests. That would need a job, though. - -### Execution of the Parachain Wasm - -Once we have all parameters, we can spin up a background task to perform the validation in a way that doesn't hold up the entire event loop. Before invoking the validation function itself, this should first do some basic checks: - * The collator signature is valid - * The PoV provided matches the `pov_hash` field of the descriptor - -### Checking Validation Outputs - -If we can assume the presence of the relay-chain state (that is, during processing [`CandidateValidationMessage`][CVM]`::ValidateFromChainState`) we can run all the checks that the relay-chain would run at the inclusion time thus confirming that the candidate will be accepted. - -[CVM]: ../../types/overseer-protocol.md#validationrequesttype diff --git a/roadmap/implementers-guide/src/node/utility/chain-api.md b/roadmap/implementers-guide/src/node/utility/chain-api.md deleted file mode 100644 index e9ef9b5695bc..000000000000 --- a/roadmap/implementers-guide/src/node/utility/chain-api.md +++ /dev/null @@ -1,21 +0,0 @@ -# Chain API - -The Chain API subsystem is responsible for providing a single point of access to chain state data via a set of pre-determined queries. - -## Protocol - -Input: [`ChainApiMessage`](../../types/overseer-protocol.md#chain-api-message) - -Output: None - -## Functionality - -On receipt of `ChainApiMessage`, answer the request and provide the response to the side-channel embedded within the request. - -Currently, the following requests are supported: -* Block hash to number -* Block hash to header -* Block weight -* Finalized block number to hash -* Last finalized block number -* Ancestors diff --git a/roadmap/implementers-guide/src/node/utility/chain-selection.md b/roadmap/implementers-guide/src/node/utility/chain-selection.md deleted file mode 100644 index 3eeaf998f4fb..000000000000 --- a/roadmap/implementers-guide/src/node/utility/chain-selection.md +++ /dev/null @@ -1,34 +0,0 @@ -# Chain Selection Subsystem - -This subsystem implements the necessary metadata for the implementation of the [chain selection](../../protocol-chain-selection.md) portion of the protocol. - -The subsystem wraps a database component which maintains a view of the unfinalized chain and records the properties of each block: whether the block is **viable**, whether it is **stagnant**, and whether it is **reverted**. It should also maintain an updated set of active leaves in accordance with this view, which should be cheap to query. Leaves are ordered descending first by weight and then by block number. - -This subsystem needs to update its information on the unfinalized chain: - * On every leaf-activated signal - * On every block-finalized signal - * On every `ChainSelectionMessage::Approve` - * Periodically, to detect stagnation. - -Simple implementations of these updates do O(n_unfinalized_blocks) disk operations. If the amount of unfinalized blocks is relatively small, the updates should not take very much time. However, in cases where there are hundreds or thousands of unfinalized blocks the naive implementations of these update algorithms would have to be replaced with more sophisticated versions. - -### `OverseerSignal::ActiveLeavesUpdate` - -Determine all new blocks implicitly referenced by any new active leaves and add them to the view. Update the set of viable leaves accordingly. The weights of imported blocks can be determined by the [`ChainApiMessage::BlockWeight`](../../types/overseer-protocol.md#chain-api-message). - -### `OverseerSignal::BlockFinalized` - -Delete data for all orphaned chains and update all metadata descending from the new finalized block accordingly, along with the set of viable leaves. Note that finalizing a **reverted** or **stagnant** block means that the descendants of those blocks may lose that status because the definitions of those properties don't include the finalized chain. Update the set of viable leaves accordingly. - -### `ChainSelectionMessage::Approved` - -Update the approval status of the referenced block. If the block was stagnant and thus non-viable and is now viable, then the metadata of all of its descendants needs to be updated as well, as they may no longer be stagnant either. Update the set of viable leaves accordingly. - -### `ChainSelectionMessage::BestLeafContaining` - -If the required block is unknown or not viable, then return `None`. -Iterate over all leaves, returning the first leaf containing the required block in its chain, and `None` otherwise. - -### Periodically - -Detect stagnant blocks and apply the stagnant definition to all descendants. Update the set of viable leaves accordingly. diff --git a/roadmap/implementers-guide/src/node/utility/gossip-support.md b/roadmap/implementers-guide/src/node/utility/gossip-support.md deleted file mode 100644 index 8309c312f6f5..000000000000 --- a/roadmap/implementers-guide/src/node/utility/gossip-support.md +++ /dev/null @@ -1,19 +0,0 @@ -# Gossip Support - -The Gossip Support Subsystem is responsible for keeping track of session changes -and issuing a connection request to all validators in the next, current and -a few past sessions if we are a validator in these sessions. -The request will add all validators to a reserved PeerSet, meaning we will not -reject a connection request from any validator in that set. - -In addition to that, it creates a gossip overlay topology per session which -limits the amount of messages sent and received to be an order of sqrt of the -validators. Our neighbors in this graph will be forwarded to the network bridge -with the `NetworkBridgeMessage::NewGossipTopology` message. - -See https://github.com/paritytech/polkadot/issues/3239 for more details. - -The gossip topology is used by parachain distribution subsystems, -such as Bitfield Distrubution, (small) Statement Distributuion and -Approval Distibution to limit the amount of peers we send messages to -and handle view updates. diff --git a/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md b/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md deleted file mode 100644 index 820bafd9d68a..000000000000 --- a/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md +++ /dev/null @@ -1,7 +0,0 @@ -# Misbehavior Arbitration - -The Misbehavior Arbitration subsystem collects reports of validator misbehavior, and slashes the stake of both misbehaving validator nodes and false accusers. - -> TODO: It is not yet fully specified; that problem is postponed to a future PR. - -One policy question we've decided even so: in the event that MA has to call all validators to check some block about which some validators disagree, the minority voters all get slashed, and the majority voters all get rewarded. Validators which abstain have a minor slash penalty, but probably not in the same order of magnitude as those who vote wrong. diff --git a/roadmap/implementers-guide/src/node/utility/network-bridge.md b/roadmap/implementers-guide/src/node/utility/network-bridge.md deleted file mode 100644 index a524315ffbce..000000000000 --- a/roadmap/implementers-guide/src/node/utility/network-bridge.md +++ /dev/null @@ -1,135 +0,0 @@ -# Network Bridge - -One of the main features of the overseer/subsystem duality is to avoid shared ownership of resources and to communicate via message-passing. However, implementing each networking subsystem as its own network protocol brings a fair share of challenges. - -The most notable challenge is coordinating and eliminating race conditions of peer connection and disconnection events. If we have many network protocols that peers are supposed to be connected on, it is difficult to enforce that a peer is indeed connected on all of them or the order in which those protocols receive notifications that peers have connected. This becomes especially difficult when attempting to share peer state across protocols. All of the Parachain-Host's gossip protocols eliminate DoS with a data-dependency on current chain heads. However, it is inefficient and confusing to implement the logic for tracking our current chain heads as well as our peers' on each of those subsystems. Having one subsystem for tracking this shared state and distributing it to the others is an improvement in architecture and efficiency. - -One other piece of shared state to track is peer reputation. When peers are found to have provided value or cost, we adjust their reputation accordingly. - -So in short, this Subsystem acts as a bridge between an actual network component and a subsystem's protocol. The implementation of the underlying network component is beyond the scope of this module. We make certain assumptions about the network component: - * The network allows registering of protocols and multiple versions of each protocol. - * The network handles version negotiation of protocols with peers and only connects the peer on the highest version of the protocol. - * Each protocol has its own peer-set, although there may be some overlap. - * The network provides peer-set management utilities for discovering the peer-IDs of validators and a means of dialing peers with given IDs. - - -The network bridge makes use of the peer-set feature, but is not generic over peer-set. Instead, it exposes two peer-sets that event producers can attach to: `Validation` and `Collation`. More information can be found on the documentation of the [`NetworkBridgeMessage`][NBM]. - -## Protocol - -Input: [`NetworkBridgeMessage`][NBM] - - -Output: - - [`ApprovalDistributionMessage`][AppD]`::NetworkBridgeUpdateV1` - - [`BitfieldDistributionMessage`][BitD]`::NetworkBridgeUpdateV1` - - [`CollatorProtocolMessage`][CollP]`::NetworkBridgeUpdateV1` - - [`StatementDistributionMessage`][StmtD]`::NetworkBridgeUpdateV1` - -## Functionality - -This network bridge sends messages of these types over the network. - -```rust -enum WireMessage { - ProtocolMessage(M), - ViewUpdate(View), -} -``` - -and instantiates this type twice, once using the [`ValidationProtocolV1`][VP1] message type, and once with the [`CollationProtocolV1`][CP1] message type. - -```rust -type ValidationV1Message = WireMessage; -type CollationV1Message = WireMessage; -``` - -### Startup - -On startup, we register two protocols with the underlying network utility. One for validation and one for collation. We register only version 1 of each of these protocols. - -### Main Loop - -The bulk of the work done by this subsystem is in responding to network events, signals from the overseer, and messages from other subsystems. - -Each network event is associated with a particular peer-set. - -### Overseer Signal: ActiveLeavesUpdate - -The `activated` and `deactivated` lists determine the evolution of our local view over time. A `ProtocolMessage::ViewUpdate` is issued to each connected peer on each peer-set, and a `NetworkBridgeEvent::OurViewChange` is issued to each event handler for each protocol. - -We only send view updates if the node has indicated that it has finished major blockchain synchronization. - -If we are connected to the same peer on both peer-sets, we will send the peer two view updates as a result. - -### Overseer Signal: BlockFinalized - -We update our view's `finalized_number` to the provided one and delay `ProtocolMessage::ViewUpdate` and `NetworkBridgeEvent::OurViewChange` till the next `ActiveLeavesUpdate`. - -### Network Event: Peer Connected - -Issue a `NetworkBridgeEvent::PeerConnected` for each [Event Handler](#event-handlers) of the peer-set and negotiated protocol version of the peer. Also issue a `NetworkBridgeEvent::PeerViewChange` and send the peer our current view, but only if the node has indicated that it has finished major blockchain synchronization. Otherwise, we only send the peer an empty view. - -### Network Event: Peer Disconnected - -Issue a `NetworkBridgeEvent::PeerDisconnected` for each [Event Handler](#event-handlers) of the peer-set and negotiated protocol version of the peer. - -### Network Event: ProtocolMessage - -Map the message onto the corresponding [Event Handler](#event-handlers) based on the peer-set this message was received on and dispatch via overseer. - -### Network Event: ViewUpdate - -- Check that the new view is valid and note it as the most recent view update of the peer on this peer-set. -- Map a `NetworkBridgeEvent::PeerViewChange` onto the corresponding [Event Handler](#event-handlers) based on the peer-set this message was received on and dispatch via overseer. - -### ReportPeer - -- Adjust peer reputation according to cost or benefit provided - -### DisconnectPeer - -- Disconnect the peer from the peer-set requested, if connected. - -### SendValidationMessage / SendValidationMessages - -- Issue a corresponding `ProtocolMessage` to each listed peer on the validation peer-set. - -### SendCollationMessage / SendCollationMessages - -- Issue a corresponding `ProtocolMessage` to each listed peer on the collation peer-set. - -### ConnectToValidators - -- Determine the DHT keys to use for each validator based on the relay-chain state and Runtime API. -- Recover the Peer IDs of the validators from the DHT. There may be more than one peer ID per validator. -- Send all `(ValidatorId, PeerId)` pairs on the response channel. -- Feed all Peer IDs to peer set manager the underlying network provides. - -### NewGossipTopology - -- Map all `AuthorityDiscoveryId`s to `PeerId`s and issue a corresponding `NetworkBridgeUpdateV1` - to all validation subsystems. - -## Event Handlers - -Network bridge event handlers are the intended recipients of particular network protocol messages. These are each a variant of a message to be sent via the overseer. - -### Validation V1 - -* `ApprovalDistributionV1Message -> ApprovalDistributionMessage::NetworkBridgeUpdateV1` -* `BitfieldDistributionV1Message -> BitfieldDistributionMessage::NetworkBridgeUpdateV1` -* `StatementDistributionV1Message -> StatementDistributionMessage::NetworkBridgeUpdateV1` - -### Collation V1 - -* `CollatorProtocolV1Message -> CollatorProtocolMessage::NetworkBridgeUpdateV1` - -[NBM]: ../../types/overseer-protocol.md#network-bridge-message -[AppD]: ../../types/overseer-protocol.md#approval-distribution-message -[BitD]: ../../types/overseer-protocol.md#bitfield-distribution-message -[StmtD]: ../../types/overseer-protocol.md#statement-distribution-message -[CollP]: ../../types/overseer-protocol.md#collator-protocol-message - -[VP1]: ../../types/network.md#validation-v1 -[CP1]: ../../types/network.md#collation-v1 diff --git a/roadmap/implementers-guide/src/node/utility/peer-set-manager.md b/roadmap/implementers-guide/src/node/utility/peer-set-manager.md deleted file mode 100644 index bf2d46153670..000000000000 --- a/roadmap/implementers-guide/src/node/utility/peer-set-manager.md +++ /dev/null @@ -1,9 +0,0 @@ -# Peer Set Manager - -> TODO - -## Protocol - -## Functionality - -## Jobs, if any diff --git a/roadmap/implementers-guide/src/node/utility/provisioner.md b/roadmap/implementers-guide/src/node/utility/provisioner.md deleted file mode 100644 index 0e8aa059635b..000000000000 --- a/roadmap/implementers-guide/src/node/utility/provisioner.md +++ /dev/null @@ -1,135 +0,0 @@ -# Provisioner - -Relay chain block authorship authority is governed by BABE and is beyond the scope of the Overseer and the rest of the subsystems. That said, ultimately the block author needs to select a set of backable parachain candidates and other consensus data, and assemble a block from them. This subsystem is responsible for providing the necessary data to all potential block authors. - -A major feature of the provisioner: this subsystem is responsible for ensuring that parachain block candidates are sufficiently available before sending them to potential block authors. - -## Provisionable Data - -There are several distinct types of provisionable data, but they share this property in common: all should eventually be included in a relay chain block. - -### Backed Candidates - -The block author can choose 0 or 1 backed parachain candidates per parachain; the only constraint is that each backed candidate has the appropriate relay parent. However, the choice of a backed candidate must be the block author's; the provisioner must ensure that block authors are aware of all available [`BackedCandidate`s](../../types/backing.md#backed-candidate). - -### Signed Bitfields - -[Signed bitfields](../../types/availability.md#signed-availability-bitfield) are attestations from a particular validator about which candidates it believes are available. - -### Misbehavior Reports - -Misbehavior reports are self-contained proofs of misbehavior by a validator or group of validators. For example, it is very easy to verify a double-voting misbehavior report: the report contains two votes signed by the same key, advocating different outcomes. Concretely, misbehavior reports become inherents which cause dots to be slashed. - -Note that there is no mechanism in place which forces a block author to include a misbehavior report which it doesn't like, for example if it would be slashed by such a report. The chain's defense against this is to have a relatively long slash period, such that it's likely to encounter an honest author before the slash period expires. - -### Dispute Inherent - -The dispute inherent is similar to a misbehavior report in that it is an attestation of misbehavior on the part of a validator or group of validators. Unlike a misbehavior report, it is not self-contained: resolution requires coordinated action by several validators. The canonical example of a dispute inherent involves an approval checker discovering that a set of validators has improperly approved an invalid parachain block: resolving this requires the entire validator set to re-validate the block, so that the minority can be slashed. - -Dispute resolution is complex and is explained in substantially more detail [here](../../runtime/disputes.md). - -> TODO: The provisioner is responsible for selecting remote disputes to replay. Let's figure out the details. - -## Protocol - -Input: [`ProvisionerMessage`](../../types/overseer-protocol.md#provisioner-message). Backed candidates come from the [Candidate Backing subsystem](../backing/candidate-backing.md), signed bitfields come from the [Bitfield Distribution subsystem](../availability/bitfield-distribution.md), and misbehavior reports and disputes come from the [Misbehavior Arbitration subsystem](misbehavior-arbitration.md). - -At initialization, this subsystem has no outputs. - -Block authors request the inherent data they should use for constructing the inherent in the block which contains parachain execution information. - -## Block Production - -When a validator is selected by BABE to author a block, it becomes a block producer. The provisioner is the subsystem best suited to choosing which specific backed candidates and availability bitfields should be assembled into the block. To engage this functionality, a `ProvisionerMessage::RequestInherentData` is sent; the response is a [`ParaInherentData`](../../types/runtime.md#parainherentdata). There are never two distinct parachain candidates included for the same parachain and that new parachain candidates cannot be backed until the previous one either gets declared available or expired. Appropriate bitfields, as outlined in the section on [bitfield selection](#bitfield-selection), and any dispute statements should be attached as well. - -### Bitfield Selection - -Our goal with respect to bitfields is simple: maximize availability. However, it's not quite as simple as always including all bitfields; there are constraints which still need to be met: - -- We cannot choose more than one bitfield per validator. -- Each bitfield must correspond to an occupied core. - -Beyond that, a semi-arbitrary selection policy is fine. In order to meet the goal of maximizing availability, a heuristic of picking the bitfield with the greatest number of 1 bits set in the event of conflict is useful. - -### Candidate Selection - -The goal of candidate selection is to determine which cores are free, and then to the degree possible, pick a candidate appropriate to each free core. - -To determine availability: - -- Get the list of core states from the runtime API -- For each core state: - - On `CoreState::Scheduled`, then we can make an `OccupiedCoreAssumption::Free`. - - On `CoreState::Occupied`, then we may be able to make an assumption: - - If the bitfields indicate availability and there is a scheduled `next_up_on_available`, then we can make an `OccupiedCoreAssumption::Included`. - - If the bitfields do not indicate availability, and there is a scheduled `next_up_on_time_out`, and `occupied_core.time_out_at == block_number_under_production`, then we can make an `OccupiedCoreAssumption::TimedOut`. - - If we did not make an `OccupiedCoreAssumption`, then continue on to the next core. - - Now compute the core's `validation_data_hash`: get the `PersistedValidationData` from the runtime, given the known `ParaId` and `OccupiedCoreAssumption`; - - Find an appropriate candidate for the core. - - There are two constraints: `backed_candidate.candidate.descriptor.para_id == scheduled_core.para_id && candidate.candidate.descriptor.validation_data_hash == computed_validation_data_hash`. - - In the event that more than one candidate meets the constraints, selection between the candidates is arbitrary. However, not more than one candidate can be selected per core. - -The end result of this process is a vector of `BackedCandidate`s, sorted in order of their core index. Furthermore, this process should select at maximum one candidate which upgrades the runtime validation code. - -### Dispute Statement Selection - -This is the point at which the block author provides further votes to active disputes or initiates new disputes in the runtime state. - -We must take care not to overwhelm the "spam slots" of the chain. That is, to avoid too many votes from the same validators being placed into the chain, which would trigger the anti-spam protection functionality of the [disputes module](../../runtime/disputes.md). - -To select disputes: - -- Make a `DisputesInfo` runtime API call and decompose into `{ spam_slots, disputes }`. Bind `disputes` to `onchain_disputes`. -- Issue a `DisputeCoordinatorMessage::ActiveDisputes` message and wait for the response. Assign the value to `offchain_disputes`. -- Make a `CandidatesIncluded` runtime API call for each dispute in `offchain_disputes` and tag each offchain dispute as local if the result for it is `true`. -- Initialize `NewSpamSlots: Map<(SessionIndex, ValidatorIndex), u32>` as an empty map. -- For each dispute in `offchain_disputes`: - 1. Make a `RuntimeApiRequest::SessionInfo` against the parent hash for the session of the dispute. If `None`, continue - this chain is in the past relative to the session the dispute belongs to and we can import it when it reaches that session. - 1. Load the spam slots from `spam_slots` for the given session. If it isn't present, treat as though all zeros. - 1. construct a `DisputeStatementSet` of all offchain votes we are aware of that the onchain doesn't already have a `valid` or `invalid` bit set for, respectively. - 1. If the `onchain_disputes` contains an entry for the dispute, load that. Otherwise, treat as empty. - 1. If the offchain dispute is local or the `DisputeStatementSet` and the onchain dispute together have at least `byzantine_threshold + 1` validators in it, continue to the next offchain dispute. - 1. Otherwise - 1. Filter out all votes from the `DisputeStatementSet` where the amount of spam slots occupied on-chain by the validator, plus the `NewSpamSlots` value, plus 1, is greater than `spam_slots.max_spam_slots`. - 1. After filtering, if either the `valid` or `invalid` lists in the combination of the `DisputeStatementSet` and the onchain dispute is empty, skip this dispute. - 1. Add 1 to the `NewSpamSlots` value for each validator in the `DisputeStatementSet`. -- Construct a `MultiDisputeStatementSet` for each `DisputeStatement` and return that. - -### Determining Bitfield Availability - -An occupied core has a `CoreAvailability` bitfield. We also have a list of `SignedAvailabilityBitfield`s. We need to determine from these whether or not a core at a particular index has become available. - -The key insight required is that `CoreAvailability` is transverse to the `SignedAvailabilityBitfield`s: if we conceptualize the list of bitfields as many rows, each bit of which is its own column, then `CoreAvailability` for a given core index is the vertical slice of bits in the set at that index. - -To compute bitfield availability, then: - -- Start with a copy of `OccupiedCore.availability` -- For each bitfield in the list of `SignedAvailabilityBitfield`s: - - Get the bitfield's `validator_index` - - Update the availability. Conceptually, assuming bit vectors: `availability[validator_index] |= bitfield[core_idx]` -- Availability has a 2/3 threshold. Therefore: `3 * availability.count_ones() >= 2 * availability.len()` - -### Notes - -See also: [Scheduler Module: Availability Cores](../../runtime/scheduler.md#availability-cores). - -## Functionality - -The subsystem should maintain a set of handles to Block Authorship Provisioning Jobs that are currently live. - -### On Overseer Signal - -- `ActiveLeavesUpdate`: - - For each `activated` head: - - spawn a Block Authorship Provisioning Job with the given relay parent, storing a bidirectional channel with that job. - - For each `deactivated` head: - - terminate the Block Authorship Provisioning Job for the given relay parent, if any. -- `Conclude`: Forward `Conclude` to all jobs, waiting a small amount of time for them to join, and then hard-exiting. - -### On `ProvisionerMessage` - -Forward the message to the appropriate Block Authorship Provisioning Job, or discard if no appropriate job is currently active. - -## Block Authorship Provisioning Job - -Maintain the set of channels to block authors. On receiving provisionable data, send a copy over each channel. diff --git a/roadmap/implementers-guide/src/node/utility/runtime-api.md b/roadmap/implementers-guide/src/node/utility/runtime-api.md deleted file mode 100644 index 79df9a1d2d82..000000000000 --- a/roadmap/implementers-guide/src/node/utility/runtime-api.md +++ /dev/null @@ -1,19 +0,0 @@ -# Runtime API - -The Runtime API subsystem is responsible for providing a single point of access to runtime state data via a set of pre-determined queries. This prevents shared ownership of a blockchain client resource by providing - -## Protocol - -Input: [`RuntimeApiMessage`](../../types/overseer-protocol.md#runtime-api-message) - -Output: None - -## Functionality - -On receipt of `RuntimeApiMessage::Request(relay_parent, request)`, answer the request using the post-state of the relay_parent provided and provide the response to the side-channel embedded within the request. - -> TODO Do some caching. The underlying rocksdb already has a cache of trie nodes so duplicate requests are unlikely to hit disk. Not required for functionality. - -## Jobs - -> TODO Don't limit requests based on parent hash, but limit caching. No caching should be done for any requests on relay_parents that are not active based on `ActiveLeavesUpdate` messages. Maybe with some leeway for things that have just been stopped. diff --git a/roadmap/implementers-guide/src/protocol-approval.md b/roadmap/implementers-guide/src/protocol-approval.md deleted file mode 100644 index 0ff1f2047f60..000000000000 --- a/roadmap/implementers-guide/src/protocol-approval.md +++ /dev/null @@ -1,202 +0,0 @@ -# Approval Process - -The Approval Process is the mechanism by which the relay-chain ensures that only valid parablocks are finalized and that backing validators are held accountable for managing to get bad blocks included into the relay chain. - -Having a parachain include a bad block into a fork of the relay-chain is not catastrophic as long as the block isn't finalized by the relay-chain's finality gadget, GRANDPA. If the block isn't finalized, that means that the fork of the relay-chain can be reverted in favor of another by means of a dynamic fork-choice rule which leads honest validators to ignore any forks containing that parablock. - -Dealing with a bad parablock proceeds in these stages: -1. Detection -2. Escalation -3. Consequences - -First, the bad block must be detected by an honest party. Second, the honest party must escalate the bad block to be checked by all validators. And last, the correct consequences of a bad block must occur. The first consequence, as mentioned above, is to revert the chain so what full nodes perceive to be best no longer contains the bad parablock. The second consequence is to slash all malicious validators. Note that, if the chain containing the bad block is reverted, that the result of the dispute needs to be transplanted or at least transplantable to all other forks of the chain so that malicious validators are slashed in all possible histories. Phrased alternatively, there needs to be no possible relay-chain in which malicious validators get away cost-free. - -Accepting a parablock is the end result of having passed through the detection stage without dispute, or having passed through the escalation/dispute stage with a positive outcome. For this to work, we need the detection procedure to have the properties that enough honest validators are always selected to check the parablock and that they cannot be interfered with by an adversary. This needs to be balanced with the scaling concern of parachains in general: the easiest way to get the first property is to have everyone check everything, but that is clearly too heavy. So we also have a desired constraint on the other property that we have as few validators as possible check any particular parablock. Our assignment function is the method by which we select validators to do approval checks on parablocks. - -It often makes more sense to think of relay-chain blocks as having been approved or not as opposed to thinking about whether parablocks have been approved. A relay-chain block containing a single bad parablock needs to be reverted, and a relay-chain block that contains only approved parablocks can be called approved, as long as its parent relay-chain block is also approved. It is important that the validity of any particular relay-chain block depend on the validity of its ancestry, so we do not finalize a block which has a bad block in its ancestry. - -```dot process Approval Process -digraph { - Included -> Assignments -> Approval -> Finality - Assignments -> Escalation -> Consequences -} -``` - -Approval has roughly two parts: - -- **Assignments** determines which validators performs approval checks on which candidates. It ensures that each candidate receives enough random checkers, while reducing adversaries' odds for obtaining enough checkers, and limiting adversaries' foreknowledge. It tracks approval votes to identify when "no show" approval check takes suspiciously long, perhaps indicating the node being under attack, and assigns more checks in this case. It tracks relay chain equivocations to determine when adversaries possibly gained foreknowledge about assignments, and adds additional checks in this case. - -- **Approval checks** listens to the assignments subsystem for outgoing assignment notices that we shall check specific candidates. It then performs these checks by first invoking the reconstruction subsystem to obtain the candidate, second invoking the candidate validity utility subsystem upon the candidate, and finally sending out an approval vote, or perhaps initiating a dispute. - -These both run first as off-chain consensus protocols using messages gossiped among all validators, and second as an on-chain record of this off-chain protocols' progress after the fact. We need the on-chain protocol to provide rewards for the off-chain protocol. - -Approval requires two gossiped message types, assignment notices created by its assignments subsystem, and approval votes sent by our approval checks subsystem when authorized by the candidate validity utility subsystem. - -### Approval keys - -We need two separate keys for the approval subsystem: - -- **Approval assignment keys** are sr25519/schnorrkel keys used only for the assignment criteria VRFs. We implicitly sign assignment notices with approval assignment keys by including their relay chain context and additional data in the VRF's extra message, but exclude these from its VRF input. - -- **Approval vote keys** would only sign off on candidate parablock validity and has no natural key type restrictions. There's no need for this to actualy embody a new session key type. We just want to make a distinction between assignments and approvals, although distant future node configurations might favor separate roles. We re-use the same keys as are used for parachain backing in practice. - -Approval vote keys could relatively easily be handled by some hardened signer tooling, perhaps even HSMs assuming we select ed25519 for approval vote keys. Approval assignment keys might or might not support hardened signer tooling, but doing so sounds far more complex. In fact, assignment keys determine only VRF outputs that determine approval checker assignments, for which they can only act or not act, so they cannot equivocate, lie, etc. and represent little if any slashing risk for validator operators. - -In future, we shall determine which among the several hardening techniques best benefits the netwrok as a whole. We could provide a multi-process multi-machine architecture for validators, perhaps even reminiscent of GNUNet, or perhaps more resembling smart HSM tooling. We might instead design a system that more resembled full systems, like like Cosmos' sentry nodes. In either case, approval assignments might be handled by a slightly hardened machine, but not necessarily nearly as hardened as approval votes, but approval votes machines must similarly run foreign WASM code, which increases their risk, so assignments being separate sounds helpful. - -## Assignments - -Approval assignment determines on which candidate parachain blocks each validator performs approval checks. An approval session considers only one relay chain block and assigns only those candidates that relay chain block declares available. - -Assignment balances several concerns: - -- limits adversaries' foreknowledge about assignments, -- ensures enough checkers, and -- distributes assignments relatively equitably. - -Assignees determine their own assignments to check specific candidates using two or three assignment criteria. Assignees never reveal their assignments until relevant, and gossip delays assignments sent early, which limits others' foreknowledge. Assignees learn their assignment only with the relay chain block. - -All criteria require the validator evaluate a verifiable random function (VRF) using their VRF secret key. All criteria input specific data called "stories" about the session's relay chain block, and output candidates to check and a precedence called a `DelayTranche`. - -We liberate availability cores when their candidate becomes available of course, but one approval assignment criteria continues associating each candidate with the core number it occupied when it became available. - -Assignment operates in loosely timed rounds determined by this `DelayTranche`s, which proceed roughly 12 times faster than six second block production assuming half second gossip times. If a candidate `C` needs more approval checkers by the time we reach round `t` then any validators with an assignment to `C` in delay tranche `t` gossip their send assignment notice for `C`. We continue until all candidates have enough approval checkers assigned. We take entire tranches together if we do not yet have enough, so we expect strictly more than enough checkers. We also take later tranches if some checkers return their approval votes too slow (see no shows below). - -Assignment ensures validators check those relay chain blocks for which they have delay tranche zero aka the highest precedence, so that adversaries always face honest checkers equal to the expected number of assignments with delay tranche zero. - -Among these criteria, the BABE VRF output provides the story for two, which reduces how frequently adversaries could position their own checkers. We have one criterion whose story consists of the candidate's block hash plus external knowledge that a relay chain equivocation exists with a conflicting candidate. It provides unforeseeable assignments when adversaries gain foreknowledge about the other two by committing an equivocation in relay chain block production. - -## Announcements / Notices - -We gossip assignment notices among nodes so that all validators know which validators should check each candidate, and if any candidate requires more checkers. - -Assignment notices consist of a relay chain context given by a block hash, an assignment criteria, consisting of the criteria identifier and optionally a criteria specific field, an assignee identifier, and a VRF signature by the assignee, which itself consists of a VRF pre-output and a DLEQ proof. Its VRF input consists of the criteria, usually including a criteria specific field, and a "story" about its relay chain context block. - -We never include stories inside the gossip messages containing assignment notices, but require each validator reconstruct them. We never care about assignments in the disputes process, so this does not complicate remote disputes. - -In a Schnorr VRF, there is an extra signed message distinct from this input, which we set to the relay chain block hash. As a result, assignment notices are self signing and can be "politely" gossiped without additional signatures, meaning between nodes who can compute the story from the relay chain context. In other words, if we cannot compute the story required by an assignment notice's VRF part then our self signing property fails and we cannot verify its origin. We could fix this with either another signature layer (64 bytes) or by including the VRF input point computed from the story (32 bytes), but doing so appears unhelpful. - -Any validator could send their assignment notices and/or approval votes too early. We gossip the approval votes early because they represent a major commitment by the validator. We delay gossiping the assignment notices until they agree with our local clock however. We also impose a politeness condition that the recipient knows the relay chain context used by the assignment notice. - -## Stories - -We based assignment criteria upon two possible "stories" about the relay chain block `R` that included the candidate aka declared the candidate available. All stories have an output that attempts to minimize adversarial influence, which then acts as the VRF input for an assignment criteria. - -We first have a `RelayVRFStory` that outputs the randomness from another VRF output produced by the relay chain block producer when creating `R`. Among honest nodes, only this one relay chain block producer who creates `R` knew the story in advance, and even they knew nothing two epochs previously. - -In BABE, we create this value calling `schnorrkel::vrf::VRFInOut::make_bytes` with a context "A&V RC-VRF", with the `VRFInOut` coming from either the VRF that authorized block production for primary blocks, or else from the secondary block VRF for the secondary block type. - -In Sassafras, we shall always use the non-anonymized recycling VRF output, never the anonymized ring VRF that authorizes block production. We do not currently know if Sassafras shall have a separate schnorrkel key, but if it reuses its ring VRF key there is an equivalent `ring_vrf::VRFInOut::make_bytes`. - -We like that `RelayVRFStory` admits relatively few choices, but an adversary who equivocates in relay chain block production could learn assignments that depend upon the `RelayVRFStory` too early because the same relay chain VRF appears in multiple blocks. - -We therefore provide a secondary `RelayEquivocationStory` that outputs the candidate's block hash, but only for candidate equivocations. We say a candidate `C` in `R` is an equivocation when there exists another relay chain block `R1` that equivocates for `R` in the sense that `R` and `R1` have the same `RelayVRFStory`, but `R` contains `C` and `R1` does not contain `C`. - -We want checkers for candidate equivocations that lie outside our preferred relay chain as well, which represents a slightly different usage for the assignments module, and might require more information in the gossip messages. - -## Assignment criteria - -Assignment criteria compute actual assignments using stories and the validators' secret approval assignment key. Assignment criteria output a `Position` consisting of both a `ParaId` to be checked, as well as a precedence `DelayTranche` for when the assignment becomes valid. - -Assignment criteria come in three flavors, `RelayVRFModulo`, `RelayVRFDelay` and `RelayEquivocation`. Among these, both `RelayVRFModulo` and `RelayVRFDelay` run a VRF whose input is the output of a `RelayVRFStory`, while `RelayEquivocation` runs a VRF whose input is the output of a `RelayEquivocationStory`. - -Among these, we have two distinct VRF output computations: - -`RelayVRFModulo` runs several distinct samples whose VRF input is the `RelayVRFStory` and the sample number. It computes the VRF output with `schnorrkel::vrf::VRFInOut::make_bytes` using the context "A&V Core", reduces this number modulo the number of availability cores, and outputs the candidate just declared available by, and included by aka leaving, that availability core. We drop any samples that return no candidate because no candidate was leaving the sampled availability core in this relay chain block. We choose three samples initially, but we could make polkadot more secure and efficient by increasing this to four or five, and reducing the backing checks accordingly. All successful `RelayVRFModulo` samples are assigned delay tranche zero. - -There is no sampling process for `RelayVRFDelay` and `RelayEquivocation`. We instead run them on specific candidates and they compute a delay from their VRF output. `RelayVRFDelay` runs for all candidates included under, aka declared available by, a relay chain block, and inputs the associated VRF output via `RelayVRFStory`. `RelayEquivocation` runs only on candidate block equivocations, and inputs their block hashes via the `RelayEquivocation` story. - -`RelayVRFDelay` and `RelayEquivocation` both compute their output with `schnorrkel::vrf::VRFInOut::make_bytes` using the context "A&V Tranche" and reduce the result modulo `num_delay_tranches + zeroth_delay_tranche_width`, and consolidate results 0 through `zeroth_delay_tranche_width` to be 0. In this way, they ensure the zeroth delay tranche has `zeroth_delay_tranche_width+1` times as many assignments as any other tranche. - -As future work (or TODO?), we should merge assignment notices with the same delay and story using `vrf_merge`. We cannot merge those with the same delay and different stories because `RelayEquivocationStory`s could change but `RelayVRFStory` never changes. - -## Announcer and Watcher/Tracker - -We track all validators' announced approval assignments for each candidate associated to each relay chain block, which tells us which validators were assigned to which candidates. - -We permit at most one assignment per candidate per story per validator, so one validator could be assigned under both the `RelayVRFDelay` and `RelayEquivocation` criteria, but not under both `RelayVRFModulo` and `RelayVRFDelay` criteria, since those both use the same story. We permit only one approval vote per candidate per validator, which counts for any applicable criteria. - -We announce, and start checking for, our own assignments when their tranche's delay is reached, but only if the tracker says the assignee candidate requires more approval checkers. We never announce an assignment we believe unnecessary because early announcements gives an adversary information. All delay tranche zero assignments always get announced, which includes all `RelayVRFModulo` assignments. - -In other words, if some candidate `C` needs more approval checkers by the time we reach round `t` then any validators with an assignment to `C` in delay tranche `t` gossip their send assignment notice for `C`, and begin reconstruction and validation for 'C. If however `C` reached enough assignments, then validators with later assignments skip announcing their assignments. - -We continue until all candidates have enough approval checkers assigned. We never prioritize assignments within tranches and count all or no assignments for a given tranche together, so we often overshoot the target number of assigned approval checkers. - -### No shows - -We have a "no show" timeout longer than one relay chain slot, so at least 6 seconds, during which we expect approval checks should succeed in reconstructing the candidate block, in redoing its erasure coding to check the candidate receipt, and finally in rechecking the candidate block itself. - -We consider a validator a "no show" if they do not approve or dispute within this "no show" timeout from our receiving their assignment notice. We time this from our receipt of their assignment notice instead of our imagined real time for their tranche because otherwise receiving late assignment notices creates immediate "no shows" and unnecessary work. - -We worry "no shows" represent a validator under denial of service attack, presumably to prevent it from reconstructing the candidate, but perhaps delaying it form gossiping a dispute too. We therefore always replace "no shows" by adding one entire extra delay tranche worth of validators, so such attacks always result in additional checkers. - -As an example, imagine we need 20 checkers, but tranche zero produces only 14, and tranche one only 4, then we take all 5 from tranche two, and thus require 23 checkers for that candidate. If one checker Charlie from tranche one or two does not respond within say 8 seconds, then we add all 7 checkers from tranche three. If again one checker Cindy from tranche three does not respond within 8 seconds then we take all 3 checkers from tranche four. We now have 33 checkers working on the candidate, so this escalated quickly. - -We escalated so quickly because we worried that Charlie and Cindy might be the only honest checkers assigned to that candidate. If therefore either Charlie or Cindy finally return an approval, then we can conclude approval, and abandon the checkers from tranche four. - -We therefore require the "no show" timeout to be longer than a relay chain slot so that we can witness "no shows" on-chain. We discuss below how this helps reward validators who replace "no shows". - -We avoid slashing for "no shows" per se, although being "no show" could enter into some computation that punishes repeated poor performance, presumably replaces ImOnline, and we could reduce their rewards and further rewards those who filled in. - -As future work, we foresee expanding the "no show" scheme to anonymizes the additional checkers, like by using assignment noticed with a new criteria that employs a ring VRF and then all validators providing cover by requesting a couple erasure coded pieces, but such anonymity scheme sound extremely complex and lie far beyond our initial functionality. - -## Assignment postponement - -We expect validators could occasionally overloaded when they randomly acquire too many assignments. All these fluctuations amortize over multiple blocks fairly well, but this slows down finality. - -We therefore permit validators to delay sending their assignment noticed intentionally. If nobody knows about their assignment then they avoid creating "no shows" and the workload progresses normally. - -We strongly prefer if postponements come from tranches higher aka less important than zero because tranche zero checks provide somewhat more security. - -TODO: When? Is this optimal for the network? etc. - -## On-chain verification - -We should verify approval on-chain to reward approval checkers. We therefore require the "no show" timeout to be longer than a relay chain slot so that we can witness "no shows" on-chain, which helps with this goal. The major challenge with an on-chain record of the off-chain process is adversarial block producers who may either censor votes or publish votes to the chain which cause other votes to be ignored and unrewards (reward stealing). - -In principle, all validators have some "tranche" at which they're assigned to the parachain candidate, which ensures we reach enough validators eventually. As noted above, we often retract "no shows" when the slow validator eventually shows up, so witnessing their initially being a "no show" helps manage rewards. - -We expect on-chain verification should work in two phases: We first record assignments notices and approval votes on-chain in relay chain block, doing the VRF or regular signature verification again in block verification, and inserting chain authenticated unsigned notes into the relay chain state that contain the checker, tranche, paraid, and relay block height for each assignment notice. We then later have another relay chain block that runs some "approved" intrinsic, which extract all these notes from the state and feeds them into our approval code. - -We now encounter one niche concern in the interaction between postponement and on-chain verification: Any validator with a tranche zero (or other low) assignment could delay sending an assignment notice, like because they postponed their assigned tranche (which is allowed). If they later send this assignment notices right around finality time, then they race with this approved. intrinsic: If their announcement gets on-chain (also allowed), then yes it delays finality. If it does not get on-chain, then yes we've one announcement that the off-chain consensus system says is valid, but the chain ignores for being too slow. - -We need the chain to win in this case, but doing this requires imposing an annoyingly long overarching delay upon finality. We might explore limits on postponement too, but this sounds much harder. - -## Parameters - -We prefer doing approval checkers assignments under `RelayVRFModulo` as opposed to `RelayVRFDelay` because `RelayVRFModulo` avoids giving individual checkers too many assignments and tranche zero assignments benefit security the most. We suggest assigning at least 16 checkers under `RelayVRFModulo` although assignment levels have never been properly analysed. - -Our delay criteria `RelayVRFDelay` and `RelayEquivocation` both have two primary paramaters, expected checkers per tranche and the zeroth delay tranche width. - -We require expected checkers per tranche to be less than three because otherwise an adversary with 1/3 stake could force all nodes into checking all blocks. We strongly recommend expected checkers per tranche to be less than two, which helps avoid both accedental and intentional explosions. We also suggest expected checkers per tranche be larger than one, which helps prevent adversaries from predicting than advancing one tranche adds only their own validators. - -We improve security more with tranche zero assignments, so `RelayEquivocation` should consolidates its first several tranches into tranche zero. We describe this as the zeroth delay tranche width, which initially we set to 12 for `RelayEquivocation` and `1` for `RelayVRFDelay`. - -## Why VRFs? - -We do assignments with VRFs to give "enough" checkers some meaning beyond merely "expected" checkers: - -We could specify a protocol that used only system randomness, which works because our strongest defense is the expected number of honest checkers who assign themselves. In this, adversaries could trivially flood their own blocks with their own checkers, so this strong defense becomes our only defense, and delay tranches become useless, so some blocks actually have zero approval checkers and possibly only one checker overall. - -VRFs though require adversaries wait far longer between such attacks, which also helps against adversaries with little at stake because they compromised validators. VRFs raise user confidence that no such "drive by" attacks occurred because the delay tranche system ensure at least some minimum number of approval checkers. In this vein, VRFs permit reducing backing checks and increasing approval checks, which makes polkadot more efficient. - -## Gossip - -Any validator could send their assignment notices and/or approval votes too early. We gossip the approval votes because they represent a major commitment by the validator. We retain but delay gossiping the assignment notices until they agree with our local clock. - -Assignment notices being gossiped too early might create a denial of service vector. If so, we might exploit the relative time scheme that synchronises our clocks, which conceivably permits just dropping excessively early assignments. - -## Finality GRANDPA Voting Rule - -The relay-chain requires validators to participate in GRANDPA. In GRANDPA, validators submit off-chain votes on what they believe to be the best block of the chain, and GRANDPA determines the common block contained by a supermajority of sub-chains. There are also additional constraints on what can be submitted based on results of previous rounds of voting. - -In order to avoid finalizing anything which has not received enough approval votes or is disputed, we will pair the approval protocol with an alteration to the GRANDPA voting strategy for honest nodes which causes them to vote only on chains where every parachain candidate within has been approved. Furthermore, the voting rule prevents voting for chains where there is any live dispute or any dispute has resolved to a candidate being invalid. - -Thus, the finalized relay-chain should contain only relay-chain blocks where a majority believe that every block within has been sufficiently approved. - -### Future work - -We could consider additional gossip messages with which nodes claims "slow availability" and/or "slow candidate" to fine tune the assignments "no show" system, but long enough "no show" delays suffice probably. - -We shall develop more practical experience with UDP once the availability system works using direct UDP connections. In this, we should discover if reconstruction performs adequately with a complete graphs or -benefits from topology restrictions. At this point, an assignment notices could implicitly request pieces from a random 1/3rd, perhaps topology restricted, which saves one gossip round. If this preliminary fast reconstruction fails, then nodes' request alternative pieces directly. There is an interesting design space in how this overlaps with "slow availability" claims. diff --git a/roadmap/implementers-guide/src/protocol-chain-selection.md b/roadmap/implementers-guide/src/protocol-chain-selection.md deleted file mode 100644 index 4f90a26949d8..000000000000 --- a/roadmap/implementers-guide/src/protocol-chain-selection.md +++ /dev/null @@ -1,48 +0,0 @@ -# Chain Selection - -Chain selection processes in blockchains are used for the purpose of selecting blocks to build on and finalize. It is important for these processes to be consistent among nodes and resilient to a maximum proportion of malicious nodes which do not obey the chain selection process. - -The parachain host uses both a block authoring system and a finality gadget. The chain selection strategy of the parachain host involves two key components: a _leaf-selection_ rule and a set of _finality constraints_. When it's a validator's turn to author on a block, they are expected to select the best block via the leaf-selection rule to build on top of. When a validator is participating in finality, there is a minimum block which can be voted on, which is usually the finalized block. The validator should select the best chain according to the leaf-selection rule and subsequently apply the finality constraints to arrive at the actual vote cast by that validator. - -Before diving into the particularities of the leaf-selection rule and the finality constraints, it's important to discuss the goals that these components are meant to achieve. For this it is useful to create the definitions of _viable_ and _finalizable_ blocks. - -### Property Definitions - -A block is considered **viable** when all of the following hold: - 1. It is or descends from the finalized block - 2. It is not **stagnant** - 3. It is not **reverted**. - -A block is considered a **viable leaf** when all of the following hold: - 1. It is **viable** - 2. It has no **viable** descendant. - -A block is considered **stagnant** when either: - 1. It is unfinalized, is not approved, and has not been approved within 2 minutes - 2. Its parent is **stagnant**. - -A block is considered **reverted** when either: - 1. It is unfinalized and includes a candidate which has lost a dispute - 2. Its parent is **reverted** - -A block is considered **finalizable** when all of the following hold: - 1. It is **viable** - 2. Its parent, if unfinalized, is **finalizable**. - 3. It is either finalized or approved. - 4. It is either finalized or includes no candidates which have unresolved disputes or have lost a dispute. - - -### The leaf-selection rule - -We assume that every block has an implicit weight or score which can be used to compare blocks. In BABE, this is determined by the number of primary slots included in the chain. In PoW, this is the chain with either the most work or GHOST weight. - -The leaf-selection rule based on our definitions above is simple: we take the maximum-scoring viable leaf we are aware of. In the case of a tie we select the one with a lower lexicographical block hash. - -### The best-chain-containing rule - -Finality gadgets, as mentioned above, will often impose an additional requirement to vote on a chain containing a specific block, known as the **required** block. Although this is typically the most recently finalized block, it is possible that it may be a block that is unfinalized. When receiving such a request: -1. If the required block is the best finalized block, then select the best viable leaf. -2. If the required block is unfinalized and non-viable, then select the required block and go no further. This is likely an indication that something bad will be finalized in the network, which will never happen when approvals & disputes are functioning correctly. Nevertheless we account for the case here. -3. If the required block is unfinalized and non-viable, then iterate over the viable leaves in descending order by score and select the first one which contains the required block in its chain. Backwards iteration is a simple way to check this, but if unfinalized chains grow long then Merkle Mountain-Ranges will most likely be more efficient. - -Once selecting a leaf, the chain should be constrained to the maximum of the required block or the highest **finalizable** ancestor. diff --git a/roadmap/implementers-guide/src/protocol-disputes.md b/roadmap/implementers-guide/src/protocol-disputes.md deleted file mode 100644 index 39680ff7fd7a..000000000000 --- a/roadmap/implementers-guide/src/protocol-disputes.md +++ /dev/null @@ -1,63 +0,0 @@ -# Disputes - -Fast forward to [more detailed disputes requirments](./disputes-flow.md). - -## Motivation and Background - -All parachain blocks that end up in the finalized relay chain should be valid. This does not apply to blocks that are only backed, but not included. - -We have two primary components for ensuring that nothing invalid ends up in the finalized relay chain: - * Approval Checking, as described [here](./protocol-approval.md) and implemented according to the [Approval Voting](node/approval/approval-voting.md) subsystem. This protocol can be shown to prevent invalid parachain blocks from making their way into the finalized relay chain as long as the amount of attempts are limited. - * Disputes, this protocol, which ensures that each attempt to include something bad is caught, and the offending validators are punished. -Disputes differ from backing and approval process (and can not be part of those) in that a dispute is independent of a particular fork, while both backing and approval operate on particular forks. This distinction is important! Approval voting stops, if an alternative fork which might not contain the currently approved candidate gets finalized. This is totally fine from the perspective of approval voting as its sole purpose is to make sure invalid blocks won't get finalized. For disputes on the other hand we have different requirements: Even though the "danger" is past and the adversaries were not able to get their invalid block approved, we still want them to get slashed for the attempt. Otherwise they just have been able to get a free try, but this is something we need to avoid in our security model, as it is based on the assumption that the probability of getting an invalid block finalized is very low and an attacker would get bankrupt before it could have tried often enough. - -Every dispute stems from a disagreement among two or more validators. If a bad actor creates a bad block, but the bad actor never distributes it to honest validators, then nobody will dispute it. Of course, such a situation is not even an attack on the network, so we don't need to worry about defending against it. - -From most to least important, here are the attack scenarios we are interested in identifying and deterring: - * A parablock included on a branch of the relay chain is bad - * A parablock backed on a branch of the relay chain is bad - * A parablock seconded, but not backed on any branch of the relay chain, is bad. - -As covered in the [protocol overview](./protocol-overview.md), checking a parachain block requires 3 pieces of data: the parachain validation code, the [`AvailableData`](types/availability.md), and the [`CandidateReceipt`](types/candidate.md). The validation code is available on-chain, and published ahead of time, so that no two branches of the relay chain have diverging views of the validation code for a given parachain. Note that only for the first scenario, where the parablock has been included on a branch of the relay chain, is the data necessarily available. Thus, dispute processes should begin with an availability process to ensure availability of the `AvailableData`. This availability process will conclude quickly if the data is already available. If the data is not already available, then the initiator of the dispute must make it available. - -Disputes have both an on-chain and an off-chain component. Slashing and punishment is handled on-chain, so votes by validators on either side of the dispute must be placed on-chain. Furthermore, a dispute on one branch of the relay chain should be transposed to all other active branches of the relay chain. The fact that slashing occurs _in all histories_ is crucial for deterring attempts to attack the network. The attacker should not be able to escape with their funds because the network has moved on to another branch of the relay chain where no attack was attempted. - -In fact, this is why we introduce a distinction between _local_ and _remote_ disputes. We categorize disputes as either local or remote relative to any particular branch of the relay chain. Local disputes are about dealing with our first scenario, where a parablock has been included on the specific branch we are looking at. In these cases, the chain is corrupted all the way back to the point where the parablock was backed and must be discarded. However, as mentioned before, the dispute must propagate to all other branches of the relay chain. All other disputes are considered _remote_. For the on-chain component, when handling a dispute for a block which was not included in the current fork of the relay chain, it is impossible to discern between our attack scenarios. It is possible that the parablock was included somewhere, or backed somewhere, or wasn't backed anywhere. The on-chain component for handling these cases will be the same. - -## Initiation - -Disputes are initiated by any validator who finds their opinion on the validity of a parablock in opposition to another issued statement. As all statements currently gathered by the relay chain imply validity, disputes will be initiated only by nodes which perceive that the parablock is bad. - -The initiation of a dispute begins off-chain. A validator signs a message indicating that it disputes the validity of the parablock and notifies all other validators, off-chain, of all of the statements it is aware of for the disputed parablock. These may be backing statements or approval-checking statements. It is worth noting that there is no special message type for initiating a dispute. It is the same message as is used to participate in a dispute and vote negatively. As such, there is no consensus required on who initiated a dispute, only on the fact that there is a dispute in-progress. - -In practice, the initiator of a dispute will be either one of the backers or one of the approval checkers for the parablock. If the result of execution is found to be invalid, the validator will initiate the dispute as described above. Furthermore, if the dispute occurs during the backing phase, the initiator must make the data available to other validators. If the dispute occurs during approval checking, the data is already available. - -Lastly, it is possible that for backing disputes, i.e. where the data is not already available among all validators, that an adversary may DoS the few parties who are checking the block to prevent them from distributing the data to other validators participating in the dispute process. Note that this can only occur pre-inclusion for any given parablock, so the downside of this attack is small and it is not security-critical to address these cases. However, we assume that the adversary can only prevent the validator from issuing messages for a limited amount of time. We also assume that there is a side-channel where the relay chain's governance mechanisms can trigger disputes by providing the full PoV and candidate receipt on-chain manually. - -## Dispute Participation - -Once becoming aware of a dispute, it is the responsibility of all validators to participate in the dispute. Concretely, this means: - * Circulate all statements about the candidate that we are aware of - backing statements, approval checking statements, and dispute statements. - * If we have already issued any type of statement about the candidate, go no further. - * Download the [`AvailableData`](types/availability.md). If possible, this should first be attempted from other dispute participants or backing validators, and then [(via erasure-coding)](node/availability/availability-recovery.md) from all validators. - * Extract the Validation Code from any recent relay chain block. Code is guaranteed to be kept available on-chain, so we don't need to download any particular fork of the chain. - * Execute the block under the validation code, using the `AvailableData`, and check that all outputs are correct, including the `erasure-root` of the [`CandidateReceipt`](types/candidate.md). - * Issue a dispute participation statement to the effect of the validity of the candidate block. - -Disputes _conclude_ after ⅔ supermajority is reached in either direction. - -The on-chain component of disputes can be initiated by providing any two conflicting votes and it also waits for a ⅔ supermajority on either side. The on-chain component also tracks which parablocks have already been disputed so the same parablock may only be disputed once on any particular branch of the relay chain. Lastly, it also tracks which blocks have been included on the current branch of the relay chain. When a dispute is initiated for a para, inclusion is halted for the para until the dispute concludes. - -The author of a relay chain block should initiate the on-chain component of disputes for all disputes which the chain is not aware of, and provide all statements to the on-chain component as well. This should all be done via _inherents_. - -Validators can learn about dispute statements in two ways: - * Receiving them from other validators over gossip - * Scraping them from imported blocks of the relay chain. This is also used for validators to track other types of statements, such as backing statements. - -Validators are rewarded for providing statements to the chain as well as for participating in the dispute, on either side. However, the losing side of the dispute is slashed. - -## Dispute Conclusion - -Disputes, roughly, are over when one side reaches a ⅔ supermajority. They may also conclude after a timeout, without either side witnessing supermajority, which will only happen if the majority of validators are unable to vote for some reason. Furthermore, disputes on-chain will stay open for some fixed amount of time even after concluding, to accept new votes. - -Late votes, after the dispute already reached a ⅔ supermajority, must be rewarded (albeit a smaller amount) as well. diff --git a/roadmap/implementers-guide/src/protocol-overview.md b/roadmap/implementers-guide/src/protocol-overview.md deleted file mode 100644 index 8f6c389ab4af..000000000000 --- a/roadmap/implementers-guide/src/protocol-overview.md +++ /dev/null @@ -1,220 +0,0 @@ -# Protocol Overview - -This section aims to describe, at a high level, the actors and protocols involved in running parachains in Polkadot. Specifically, we describe how different actors communicate with each other, what data structures they keep both individually and collectively, and the high-level purpose on why they do these things. - -Our top-level goal is to carry a parachain block from authoring to secure inclusion, and define a process which can be carried out repeatedly and in parallel for many different parachains to extend them over time. Understanding of the high-level approach taken here is important to provide context for the proposed architecture further on. The key parts of Polkadot relevant to this are the main Polkadot blockchain, known as the relay-chain, and the actors which provide security and inputs to this blockchain. - -First, it's important to go over the main actors we have involved in this protocol. - -1. Validators. These nodes are responsible for validating proposed parachain blocks. They do so by checking a Proof-of-Validity (PoV) of the block and ensuring that the PoV remains available. They put financial capital down as "skin in the game" which can be slashed (destroyed) if they are proven to have misvalidated. -1. Collators. These nodes are responsible for creating the Proofs-of-Validity that validators know how to check. Creating a PoV typically requires familiarity with the transaction format and block authoring rules of the parachain, as well as having access to the full state of the parachain. -1. Fishermen. These are user-operated, permissionless nodes whose goal is to catch misbehaving validators in exchange for a bounty. Collators and validators can behave as Fishermen too. Fishermen aren't necessary for security, and aren't covered in-depth by this document. - -This implies a simple pipeline where collators send validators parachain blocks and their requisite PoV to check. Then, validators validate the block using the PoV, signing statements which describe either the positive or negative outcome, and with enough positive statements, the block can be noted on the relay-chain. Negative statements are not a veto but will lead to a dispute, with those on the wrong side being slashed. If another validator later detects that a validator or group of validators incorrectly signed a statement claiming a block was valid, then those validators will be _slashed_, with the checker receiving a bounty. - -However, there is a problem with this formulation. In order for another validator to check the previous group of validators' work after the fact, the PoV must remain _available_ so the other validator can fetch it in order to check the work. The PoVs are expected to be too large to include in the blockchain directly, so we require an alternate _data availability_ scheme which requires validators to prove that the inputs to their work will remain available, and so their work can be checked. Empirical tests tell us that many PoVs may be between 1 and 10MB during periods of heavy load. - -Here is a description of the Inclusion Pipeline: the path a parachain block (or parablock, for short) takes from creation to inclusion: - -1. Validators are selected and assigned to parachains by the Validator Assignment routine. -1. A collator produces the parachain block, which is known as a parachain candidate or candidate, along with a PoV for the candidate. -1. The collator forwards the candidate and PoV to validators assigned to the same parachain via the [Collator Protocol](node/collators/collator-protocol.md). -1. The validators assigned to a parachain at a given point in time participate in the [Candidate Backing subsystem](node/backing/candidate-backing.md) to validate candidates that were put forward for validation. Candidates which gather enough signed validity statements from validators are considered "backable". Their backing is the set of signed validity statements. -1. A relay-chain block author, selected by BABE, can note up to one (1) backable candidate for each parachain to include in the relay-chain block alongside its backing. A backable candidate once included in the relay-chain is considered backed in that fork of the relay-chain. -1. Once backed in the relay-chain, the parachain candidate is considered to be "pending availability". It is not considered to be included as part of the parachain until it is proven available. -1. In the following relay-chain blocks, validators will participate in the [Availability Distribution subsystem](node/availability/availability-distribution.md) to ensure availability of the candidate. Information regarding the availability of the candidate will be noted in the subsequent relay-chain blocks. -1. Once the relay-chain state machine has enough information to consider the candidate's PoV as being available, the candidate is considered to be part of the parachain and is graduated to being a full parachain block, or parablock for short. - -Note that the candidate can fail to be included in any of the following ways: - -- The collator is not able to propagate the candidate to any validators assigned to the parachain. -- The candidate is not backed by validators participating in the Candidate Backing Subsystem. -- The candidate is not selected by a relay-chain block author to be included in the relay chain -- The candidate's PoV is not considered as available within a timeout and is discarded from the relay chain. - -This process can be divided further down. Steps 2 & 3 relate to the work of the collator in collating and distributing the candidate to validators via the Collation Distribution Subsystem. Steps 3 & 4 relate to the work of the validators in the Candidate Backing Subsystem and the block author (itself a validator) to include the block into the relay chain. Steps 6, 7, and 8 correspond to the logic of the relay-chain state-machine (otherwise known as the Runtime) used to fully incorporate the block into the chain. Step 7 requires further work on the validators' parts to participate in the Availability Distribution Subsystem and include that information into the relay chain for step 8 to be fully realized. - -This brings us to the second part of the process. Once a parablock is considered available and part of the parachain, it is still "pending approval". At this stage in the pipeline, the parablock has been backed by a majority of validators in the group assigned to that parachain, and its data has been guaranteed available by the set of validators as a whole. Once it's considered available, the host will even begin to accept children of that block. At this point, we can consider the parablock as having been tentatively included in the parachain, although more confirmations are desired. However, the validators in the parachain-group (known as the "Parachain Validators" for that parachain) are sampled from a validator set which contains some proportion of byzantine, or arbitrarily malicious members. This implies that the Parachain Validators for some parachain may be majority-dishonest, which means that (secondary) approval checks must be done on the block before it can be considered approved. This is necessary only because the Parachain Validators for a given parachain are sampled from an overall validator set which is assumed to be up to <1/3 dishonest - meaning that there is a chance to randomly sample Parachain Validators for a parachain that are majority or fully dishonest and can back a candidate wrongly. The Approval Process allows us to detect such misbehavior after-the-fact without allocating more Parachain Validators and reducing the throughput of the system. A parablock's failure to pass the approval process will invalidate the block as well as all of its descendents. However, only the validators who backed the block in question will be slashed, not the validators who backed the descendents. - -The Approval Process, at a glance, looks like this: - -1. Parablocks that have been included by the Inclusion Pipeline are pending approval for a time-window known as the secondary checking window. -1. During the secondary-checking window, validators randomly self-select to perform secondary checks on the parablock. -1. These validators, known in this context as secondary checkers, acquire the parablock and its PoV, and re-run the validation function. -1. The secondary checkers gossip the result of their checks. Contradictory results lead to escalation, where all validators are required to check the block. The validators on the losing side of the dispute are slashed. -1. At the end of the Approval Process, the parablock is either Approved or it is rejected. More on the rejection process later. - -More information on the Approval Process can be found in the dedicated section on [Approval](protocol-approval.md). More information on Disputes can be found in the dedicated section on [Disputes](protocol-disputes.md). - -These two pipelines sum up the sequence of events necessary to extend and acquire full security on a Parablock. Note that the Inclusion Pipeline must conclude for a specific parachain before a new block can be accepted on that parachain. After inclusion, the Approval Process kicks off, and can be running for many parachain blocks at once. - -Reiterating the lifecycle of a candidate: - -1. Candidate: put forward by a collator to a validator. -1. Seconded: put forward by a validator to other validators -1. Backable: validity attested to by a majority of assigned validators -1. Backed: Backable & noted in a fork of the relay-chain. -1. Pending availability: Backed but not yet considered available. -1. Included: Backed and considered available. -1. Accepted: Backed, available, and undisputed - -```dot process Inclusion Pipeline -digraph { - subgraph cluster_vg { - label=< - Parachain Validators -
- (subset of all) - > - labeljust=l - style=filled - color=lightgrey - node [style=filled color=white] - - v1 [label="Validator 1"] - v2 [label="Validator 2"] - v3 [label="Validator 3"] - - b [label="(3) Backable", shape=box] - - v1 -> v2 [label="(2) Seconded"] - v1 -> v3 [label="(2) Seconded"] - - v2 -> b [style=dashed arrowhead=none] - v3 -> b [style=dashed arrowhead=none] - v1 -> b [style=dashed arrowhead=none] - } - - v4 [label=< - Validator 4 (relay chain) -
- - (selected by BABE) - - >] - - col [label="Collator"] - pa [label="(5) Relay Block (Pending Availability)", shape=box] - pb [label="Parablock", shape=box] - rc [label="Relay Chain Validators"] - - subgraph cluster_approval { - label=< - Secondary Checkers -
- (subset of all) - > - labeljust=l - style=filled - color=lightgrey - node [style=filled color=white] - - a5 [label="Validator 5"] - a6 [label="Validator 6"] - a7 [label="Validator 7"] - } - - b -> v4 [label="(4) Backed"] - col -> v1 [label="(1) Candidate"] - v4 -> pa - pa -> pb [label="(6) a few blocks later..." arrowhead=none] - pb -> a5 - pb -> a6 - pb -> a7 - - a5 -> rc [label="(7) Approved"] - a6 -> rc [label="(7) Approved"] - a7 -> rc [label="(7) Approved"] -} -``` - -The diagram above shows the happy path of a block from (1) Candidate to the (7) Approved state. - -It is also important to take note of the fact that the relay-chain is extended by BABE, which is a forkful algorithm. That means that different block authors can be chosen at the same time, and may not be building on the same block parent. Furthermore, the set of validators is not fixed, nor is the set of parachains. And even with the same set of validators and parachains, the validators' assignments to parachains is flexible. This means that the architecture proposed in the next chapters must deal with the variability and multiplicity of the network state. - - -```dot process -digraph { - rca [label="Relay Block A" shape=box] - rcb [label="Relay Block B" shape=box] - rcc [label="Relay Block C" shape=box] - - vg1 [label=< - Validator Group 1 -
-
- - (Validator 4) -
- (Validator 1) (Validator 2) -
- (Validator 5) -
- >] - vg2 [label=< - Validator Group 2 -
-
- - (Validator 7) -
- (Validator 3) (Validator 6) -
- >] - - rcb -> rca - rcc -> rcb - - vg1 -> rcc [label="Building on C" style=dashed arrowhead=none] - vg2 -> rcb [label="Building on B" style=dashed arrowhead=none] -} -``` - -In this example, group 1 has received block C while the others have not due to network asynchrony. Now, a validator from group 2 may be able to build another block on top of B, called C'. Assume that afterwards, some validators become aware of both C and C', while others remain only aware of one. - -```dot process -digraph { - rca [label="Relay Block A" shape=box] - rcb [label="Relay Block B" shape=box] - rcc [label="Relay Block C" shape=box] - rcc_prime [label="Relay Block C'" shape=box] - - vg1 [label=< - Validator Group 1 -
-
- - (Validator 4) (Validator 1) - - >] - vg2 [label=< - Validator Group 2 -
-
- - (Validator 7) (Validator 6) - - >] - vg3 [label=< - Validator Group 3 -
-
- - (Validator 2) (Validator 3) -
- (Validator 5) -
- >] - - rcb -> rca - rcc -> rcb - rcc_prime -> rcb - - vg1 -> rcc [style=dashed arrowhead=none] - vg2 -> rcc_prime [style=dashed arrowhead=none] - vg3 -> rcc_prime [style=dashed arrowhead=none] - vg3 -> rcc [style=dashed arrowhead=none] -} -``` - -Those validators that are aware of many competing heads must be aware of the work happening on each one. They may contribute to some or a full extent on both. It is possible that due to network asynchrony two forks may grow in parallel for some time, although in the absence of an adversarial network this is unlikely in the case where there are validators who are aware of both chain heads. diff --git a/roadmap/implementers-guide/src/runtime-api/README.md b/roadmap/implementers-guide/src/runtime-api/README.md deleted file mode 100644 index a40290a2d065..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# Runtime APIs - -Runtime APIs are the means by which the node-side code extracts information from the state of the runtime. - -Every block in the relay-chain contains a *state root* which is the root hash of a state trie encapsulating all storage of runtime modules after execution of the block. This is a cryptographic commitment to a unique state. We use the terminology of accessing the *state at* a block to refer accessing the state referred to by the state root of that block. - -Although Runtime APIs are often used for simple storage access, they are actually empowered to do arbitrary computation. The implementation of the Runtime APIs lives within the Runtime as Wasm code and exposes extern functions that can be invoked with arguments and have a return value. Runtime APIs have access to a variety of host functions, which are contextual functions provided by the Wasm execution context, that allow it to carry out many different types of behaviors. - -Abilities provided by host functions includes: - -* State Access -* Offchain-DB Access -* Submitting transactions to the transaction queue -* Optimized versions of cryptographic functions -* More - -So it is clear that Runtime APIs are a versatile and powerful tool to leverage the state of the chain. In general, we will use Runtime APIs for these purposes: - -* Access of a storage item -* Access of a bundle of related storage items -* Deriving a value from storage based on arguments -* Submitting misbehavior reports - -More broadly, we have the goal of using Runtime APIs to write Node-side code that fulfills the requirements set by the Runtime. In particular, the constraints set forth by the [Scheduler](../runtime/scheduler.md) and [Inclusion](../runtime/inclusion.md) modules. These modules are responsible for advancing paras with a two-phase protocol where validators are first chosen to validate and back a candidate and then required to ensure availability of referenced data. In the second phase, validators are meant to attest to those para-candidates that they have their availability chunk for. As the Node-side code needs to generate the inputs into these two phases, the runtime API needs to transmit information from the runtime that is aware of the Availability Cores model instantiated by the Scheduler and Inclusion modules. - -Node-side code is also responsible for detecting and reporting misbehavior performed by other validators, and the set of Runtime APIs needs to provide methods for observing live disputes and submitting reports as transactions. - -The next sections will contain information on specific runtime APIs. The format is this: - -```rust -/// Fetch the value of the runtime API at the block. -/// -/// Definitionally, the `at` parameter cannot be any block that is not in the chain. -/// Thus the return value is unconditional. However, for in-practice implementations -/// it may be possible to provide an `at` parameter as a hash, which may not refer to a -/// valid block or one which implements the runtime API. In those cases it would be -/// best for the implementation to return an error indicating the failure mode. -fn some_runtime_api(at: Block, arg1: Type1, arg2: Type2, ...) -> ReturnValue; -``` - -Certain runtime APIs concerning the state of a para require the caller to provide an `OccupiedCoreAssumption`. This indicates how the result of the runtime API should be computed if there is a candidate from the para occupying an availability core in the [Inclusion Module](../runtime/inclusion.md). - -The choices of assumption are whether the candidate occupying that core should be assumed to have been made available and included or timed out and discarded, along with a third option to assert that the core was not occupied. This choice affects everything from the parent head-data, the validation code, and the state of message-queues. Typically, users will take the assumption that either the core was free or that the occupying candidate was included, as timeouts are expected only in adversarial circumstances and even so, only in a small minority of blocks directly following validator set rotations. - -```rust -/// An assumption being made about the state of an occupied core. -enum OccupiedCoreAssumption { - /// The candidate occupying the core was made available and included to free the core. - Included, - /// The candidate occupying the core timed out and freed the core without advancing the para. - TimedOut, - /// The core was not occupied to begin with. - Free, -} -``` \ No newline at end of file diff --git a/roadmap/implementers-guide/src/runtime-api/availability-cores.md b/roadmap/implementers-guide/src/runtime-api/availability-cores.md deleted file mode 100644 index b95af2343b36..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/availability-cores.md +++ /dev/null @@ -1,59 +0,0 @@ -# Availability Cores - -Yields information on all availability cores. Cores are either free or occupied. Free cores can have paras assigned to them. Occupied cores don't, but they can become available part-way through a block due to bitfields and then have something scheduled on them. To allow optimistic validation of candidates, the occupied cores are accompanied by information on what is upcoming. This information can be leveraged when validators perceive that there is a high likelihood of a core becoming available based on bitfields seen, and then optimistically validate something that would become scheduled based on that, although there is no guarantee on what the block producer will actually include in the block. - -See also the [Scheduler Module](../runtime/scheduler.md) for a high-level description of what an availability core is and why it exists. - -```rust -fn availability_cores(at: Block) -> Vec; -``` - -This is all the information that a validator needs about scheduling for the current block. It includes all information on [Scheduler](../runtime/scheduler.md) core-assignments and [Inclusion](../runtime/inclusion.md) state of blocks occupying availability cores. It includes data necessary to determine not only which paras are assigned now, but which cores are likely to become freed after processing bitfields, and exactly which bitfields would be necessary to make them so. The implementation of this runtime API should invoke `Scheduler::clear` and `Scheduler::schedule(Vec::new(), current_block_number + 1)` to ensure that scheduling is accurate. - -```rust -struct OccupiedCore { - // NOTE: this has no ParaId as it can be deduced from the candidate descriptor. - /// If this core is freed by availability, this is the assignment that is next up on this - /// core, if any. None if there is nothing queued for this core. - next_up_on_available: Option, - /// The relay-chain block number this began occupying the core at. - occupied_since: BlockNumber, - /// The relay-chain block this will time-out at, if any. - time_out_at: BlockNumber, - /// If this core is freed by being timed-out, this is the assignment that is next up on this - /// core. None if there is nothing queued for this core or there is no possibility of timing - /// out. - next_up_on_time_out: Option, - /// A bitfield with 1 bit for each validator in the set. `1` bits mean that the corresponding - /// validators has attested to availability on-chain. A 2/3+ majority of `1` bits means that - /// this will be available. - availability: Bitfield, - /// The group assigned to distribute availability pieces of this candidate. - group_responsible: GroupIndex, - /// The hash of the candidate occupying the core. - candidate_hash: CandidateHash, - /// The descriptor of the candidate occupying the core. - candidate_descriptor: CandidateDescriptor, -} - -struct ScheduledCore { - /// The ID of a para scheduled. - para_id: ParaId, - /// The collator required to author the block, if any. - collator: Option, -} - -enum CoreState { - /// The core is currently occupied. - Occupied(OccupiedCore), - /// The core is currently free, with a para scheduled and given the opportunity - /// to occupy. - /// - /// If a particular Collator is required to author this block, that is also present in this - /// variant. - Scheduled(ScheduledCore), - /// The core is currently free and there is nothing scheduled. This can be the case for parathread - /// cores when there are no parathread blocks queued. Parachain cores will never be left idle. - Free, -} -``` diff --git a/roadmap/implementers-guide/src/runtime-api/candidate-events.md b/roadmap/implementers-guide/src/runtime-api/candidate-events.md deleted file mode 100644 index 1bea22745a05..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/candidate-events.md +++ /dev/null @@ -1,16 +0,0 @@ -# Candidate Events - -Yields a vector of events concerning candidates that occurred within the given block. - -```rust -enum CandidateEvent { - /// This candidate receipt was backed in the most recent block. - CandidateBacked(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// This candidate receipt was included and became a parablock at the most recent block. - CandidateIncluded(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// This candidate receipt was not made available in time and timed out. - CandidateTimedOut(CandidateReceipt, HeadData, CoreIndex), -} - -fn candidate_events(at: Block) -> Vec; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/candidate-pending-availability.md b/roadmap/implementers-guide/src/runtime-api/candidate-pending-availability.md deleted file mode 100644 index 9c8969f6a958..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/candidate-pending-availability.md +++ /dev/null @@ -1,7 +0,0 @@ -# Candidate Pending Availability - -Get the receipt of a candidate pending availability. This returns `Some` for any paras assigned to occupied cores in `availability_cores` and `None` otherwise. - -```rust -fn candidate_pending_availability(at: Block, ParaId) -> Option; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/candidates-included.md b/roadmap/implementers-guide/src/runtime-api/candidates-included.md deleted file mode 100644 index 7692c422833d..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/candidates-included.md +++ /dev/null @@ -1,8 +0,0 @@ -# Candidates Included - -This runtime API is for checking which candidates have been included within the chain, locally. - -```rust -/// Input and output have the same length. -fn candidates_included(Vec<(SessionIndex, CandidateHash)>) -> Vec; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/disputes-info.md b/roadmap/implementers-guide/src/runtime-api/disputes-info.md deleted file mode 100644 index 3548d5fb5793..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/disputes-info.md +++ /dev/null @@ -1,24 +0,0 @@ -# Disputes Info - -Get information about all disputes known by the chain as well as information about which validators the disputes subsystem will accept disputes from. These disputes may be either live or concluded. The [`DisputeState`](../types/disputes.md#disputestate) can be used to determine whether the dispute still accepts votes, as well as which validators' votes may be included. - -```rust -struct Dispute { - session: SessionIndex, - candidate: CandidateHash, - dispute_state: DisputeState, - local: bool, -} - -struct SpamSlotsInfo { - max_spam_slots: u32, - session_spam_slots: Vec<(SessionIndex, Vec)>, -} - -struct DisputesInfo { - disputes: Vec, - spam_slots: SpamSlotsInfo, -} - -fn disputes_info() -> DisputesInfo; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/persisted-validation-data.md b/roadmap/implementers-guide/src/runtime-api/persisted-validation-data.md deleted file mode 100644 index 2fd3e55c8712..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/persisted-validation-data.md +++ /dev/null @@ -1,11 +0,0 @@ -# Persisted Validation Data - -Yields the [`PersistedValidationData`](../types/candidate.md#persistedvalidationdata) for the given [`ParaId`](../types/candidate.md#paraid) along with an assumption that should be used if the para currently occupies a core: - -```rust -/// Returns the persisted validation data for the given para and occupied core assumption. -/// -/// Returns `None` if either the para is not registered or the assumption is `Freed` -/// and the para already occupies a core. -fn persisted_validation_data(at: Block, ParaId, OccupiedCoreAssumption) -> Option; -``` \ No newline at end of file diff --git a/roadmap/implementers-guide/src/runtime-api/session-index.md b/roadmap/implementers-guide/src/runtime-api/session-index.md deleted file mode 100644 index 1baf6a167dbb..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/session-index.md +++ /dev/null @@ -1,12 +0,0 @@ -# Session Index - -Get the session index that is expected at the child of a block. - -In the [`Initializer`](../runtime/initializer.md) module, session changes are buffered by one block. The session index of the child of any relay block is always predictable by that block's state. - -This session index can be used to derive a [`SigningContext`](../types/candidate.md#signing-context). - -```rust -/// Returns the session index expected at a child of the block. -fn session_index_for_child(at: Block) -> SessionIndex; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/validation-code.md b/roadmap/implementers-guide/src/runtime-api/validation-code.md deleted file mode 100644 index b39247570016..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/validation-code.md +++ /dev/null @@ -1,13 +0,0 @@ -# Validation Code - -Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`. - -```rust -fn validation_code(at: Block, ParaId, OccupiedCoreAssumption) -> Option; -``` - -Fetch the validation code (past, present or future) by its hash. - -```rust -fn validation_code_by_hash(at: Block, ValidationCodeHash) -> Option; -``` diff --git a/roadmap/implementers-guide/src/runtime-api/validator-groups.md b/roadmap/implementers-guide/src/runtime-api/validator-groups.md deleted file mode 100644 index 8815a0217411..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/validator-groups.md +++ /dev/null @@ -1,31 +0,0 @@ -# Validator Groups - -Yields the validator groups used during the current session. The validators in the groups are referred to by their index into the validator-set and this is assumed to be as-of the child of the block whose state is being queried. - -```rust -/// A helper data-type for tracking validator-group rotations. -struct GroupRotationInfo { - session_start_block: BlockNumber, - group_rotation_frequency: BlockNumber, - now: BlockNumber, // The successor of the block in whose state this runtime API is queried. -} - -impl GroupRotationInfo { - /// Returns the index of the group needed to validate the core at the given index, - /// assuming the given amount of cores/groups. - fn group_for_core(&self, core_index, cores) -> GroupIndex; - - /// Returns the block number of the next rotation after the current block. If the current block - /// is 10 and the rotation frequency is 5, this should return 15. - fn next_rotation_at(&self) -> BlockNumber; - - /// Returns the block number of the last rotation before or including the current block. If the - /// current block is 10 and the rotation frequency is 5, this should return 10. - fn last_rotation_at(&self) -> BlockNumber; -} - -/// Returns the validator groups and rotation info localized based on the block whose state -/// this is invoked on. Note that `now` in the `GroupRotationInfo` should be the successor of -/// the number of the block. -fn validator_groups(at: Block) -> (Vec>, GroupRotationInfo); -``` diff --git a/roadmap/implementers-guide/src/runtime-api/validators.md b/roadmap/implementers-guide/src/runtime-api/validators.md deleted file mode 100644 index b7f1d9647547..000000000000 --- a/roadmap/implementers-guide/src/runtime-api/validators.md +++ /dev/null @@ -1,7 +0,0 @@ -# Validators - -Yields the validator-set at the state of a given block. This validator set is always the one responsible for backing parachains in the child of the provided block. - -```rust -fn validators(at: Block) -> Vec; -``` diff --git a/roadmap/implementers-guide/src/runtime/README.md b/roadmap/implementers-guide/src/runtime/README.md deleted file mode 100644 index c3cddbda7a95..000000000000 --- a/roadmap/implementers-guide/src/runtime/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# Runtime Architecture - -It's clear that we want to separate different aspects of the runtime logic into different modules. Modules define their own storage, routines, and entry-points. They also define initialization and finalization logic. - -Due to the (lack of) guarantees provided by a particular blockchain-runtime framework, there is no defined or dependable order in which modules' initialization or finalization logic will run. Supporting this blockchain-runtime framework is important enough to include that same uncertainty in our model of runtime modules in this guide. Furthermore, initialization logic of modules can trigger the entry-points or routines of other modules. This is one architectural pressure against dividing the runtime logic into multiple modules. However, in this case the benefits of splitting things up outweigh the costs, provided that we take certain precautions against initialization and entry-point races. - -We also expect, although it's beyond the scope of this guide, that these runtime modules will exist alongside various other modules. This has two facets to consider. First, even if the modules that we describe here don't invoke each others' entry points or routines during initialization, we still have to protect against those other modules doing that. Second, some of those modules are expected to provide governance capabilities for the chain. Configuration exposed by parachain-host modules is mostly for the benefit of these governance modules, to allow the operators or community of the chain to tweak parameters. - -The runtime's primary roles to manage scheduling and updating of parachains and parathreads, as well as handling misbehavior reports and slashing. This guide doesn't focus on how parachains or parathreads are registered, only that they are. Also, this runtime description assumes that validator sets are selected somehow, but doesn't assume any other details than a periodic _session change_ event. Session changes give information about the incoming validator set and the validator set of the following session. - -The runtime also serves another role, which is to make data available to the Node-side logic via Runtime APIs. These Runtime APIs should be sufficient for the Node-side code to author blocks correctly. - -There is some functionality of the relay chain relating to parachains that we also consider beyond the scope of this document. In particular, all modules related to how parachains are registered aren't part of this guide, although we do provide routines that should be called by the registration process. - -We will split the logic of the runtime up into these modules: - -* Initializer: manage initialization order of the other modules. -* Shared: manages shared storage and configurations for other modules. -* Configuration: manage configuration and configuration updates in a non-racy manner. -* Paras: manage chain-head and validation code for parachains and parathreads. -* Scheduler: manages parachain and parathread scheduling as well as validator assignments. -* Inclusion: handles the inclusion and availability of scheduled parachains and parathreads. -* Validity: handles secondary checks and dispute resolution for included, available parablocks. -* Hrmp: handles horizontal messages between paras. -* Ump: Handles upward messages from a para to the relay chain. -* Dmp: Handles downward messages from the relay chain to the para. - -The [Initializer module](initializer.md) is special - it's responsible for handling the initialization logic of the other modules to ensure that the correct initialization order and related invariants are maintained. The other modules won't specify a on-initialize logic, but will instead expose a special semi-private routine that the initialization module will call. The other modules are relatively straightforward and perform the roles described above. - -The Parachain Host operates under a changing set of validators. Time is split up into periodic sessions, where each session brings a potentially new set of validators. Sessions are buffered by one, meaning that the validators of the upcoming session `n+1` are determined at the end of session `n-1`, right before session `n` starts. Parachain Host runtime modules need to react to changes in the validator set, as it will affect the runtime logic for processing candidate backing, availability bitfields, and misbehavior reports. The Parachain Host modules can't determine ahead-of-time exactly when session change notifications are going to happen within the block (note: this depends on module initialization order again - better to put session before parachains modules). - -The relay chain is intended to use BABE or SASSAFRAS, which both have the property that a session changing at a block is determined not by the number of the block but instead by the time the block is authored. In some sense, sessions change in-between blocks, not at blocks. This has the side effect that the session of a child block cannot be determined solely by the parent block's identifier. Being able to unilaterally determine the validator-set at a specific block based on its parent hash would make a lot of Node-side logic much simpler. - -In order to regain the property that the validator set of a block is predictable by its parent block, we delay session changes' application to Parachains by 1 block. This means that if there is a session change at block X, that session change will be stored and applied during initialization of direct descendents of X. This principal side effect of this change is that the Parachains runtime can disagree with session or consensus modules about which session it currently is. Misbehavior reporting routines in particular will be affected by this, although not severely. The parachains runtime might believe it is the last block of the session while the system is really in the first block of the next session. In such cases, a historical validator-set membership proof will need to accompany any misbehavior report, although they typically do not need to during current-session misbehavior reports. - -So the other role of the initializer module is to forward session change notifications to modules in the initialization order. Session change is also the point at which the [Configuration Module](configuration.md) updates the configuration. Most of the other modules will handle changes in the configuration during their session change operation, so the initializer should provide both the old and new configuration to all the other -modules alongside the session change notification. This means that a session change notification should consist of the following data: - -```rust -struct SessionChangeNotification { - // The new validators in the session. - validators: Vec, - // The validators for the next session. - queued: Vec, - // The configuration before handling the session change. - prev_config: HostConfiguration, - // The configuration after handling the session change. - new_config: HostConfiguration, - // A secure randomn seed for the session, gathered from BABE. - random_seed: [u8; 32], - // The session index of the beginning session. - session_index: SessionIndex, -} -``` - -> TODO Diagram: order of runtime operations (initialization, session change) diff --git a/roadmap/implementers-guide/src/runtime/configuration.md b/roadmap/implementers-guide/src/runtime/configuration.md deleted file mode 100644 index 37e5202429e1..000000000000 --- a/roadmap/implementers-guide/src/runtime/configuration.md +++ /dev/null @@ -1,42 +0,0 @@ -# Configuration Module - -This module is responsible for managing all configuration of the parachain host in-flight. It provides a central point for configuration updates to prevent races between configuration changes and parachain-processing logic. Configuration can only change during the session change routine, and as this module handles the session change notification first it provides an invariant that the configuration does not change throughout the entire session. Both the [scheduler](scheduler.md) and [inclusion](inclusion.md) modules rely on this invariant to ensure proper behavior of the scheduler. - -The configuration that we will be tracking is the [`HostConfiguration`](../types/runtime.md#host-configuration) struct. - -## Storage - -The configuration module is responsible for two main pieces of storage. - -```rust -/// The current configuration to be used. -Configuration: HostConfiguration; -/// A pending configuration to be applied on session change. -PendingConfiguration: Option; -``` - -## Session change - -The session change routine for the Configuration module is simple. If the `PendingConfiguration` is `Some`, take its value and set `Configuration` to be equal to it. Reset `PendingConfiguration` to `None`. - -## Routines - -```rust -/// Get the host configuration. -pub fn configuration() -> HostConfiguration { - Configuration::get() -} - -/// Updating the pending configuration to be applied later. -fn update_configuration(f: impl FnOnce(&mut HostConfiguration)) { - PendingConfiguration::mutate(|pending| { - let mut x = pending.unwrap_or_else(Self::configuration); - f(&mut x); - *pending = Some(x); - }) -} -``` - -## Entry-points - -The Configuration module exposes an entry point for each configuration member. These entry-points accept calls only from governance origins. These entry-points will use the `update_configuration` routine to update the specific configuration field. diff --git a/roadmap/implementers-guide/src/runtime/disputes.md b/roadmap/implementers-guide/src/runtime/disputes.md deleted file mode 100644 index 4faece7cb092..000000000000 --- a/roadmap/implementers-guide/src/runtime/disputes.md +++ /dev/null @@ -1,103 +0,0 @@ -# Disputes Module - -After a backed candidate is made available, it is included and proceeds into an acceptance period during which validators are randomly selected to do (secondary) approval checks of the parablock. Any reports disputing the validity of the candidate will cause escalation, where even more validators are requested to check the block, and so on, until either the parablock is determined to be invalid or valid. Those on the wrong side of the dispute are slashed and, if the parablock is deemed invalid, the relay chain is rolled back to a point before that block was included. - -However, this isn't the end of the story. We are working in a forkful blockchain environment, which carries three important considerations: - -1. For security, validators that misbehave shouldn't only be slashed on one fork, but on all possible forks. Validators that misbehave shouldn't be able to create a new fork of the chain when caught and get away with their misbehavior. -1. It is possible (and likely) that the parablock being contested has not appeared on all forks. -1. If a block author believes that there is a disputed parablock on a specific fork that will resolve to a reversion of the fork, that block author is better incentivized to build on a different fork which does not include that parablock. - -This means that in all likelihood, there is the possibility of disputes that are started on one fork of the relay chain, and as soon as the dispute resolution process starts to indicate that the parablock is indeed invalid, that fork of the relay chain will be abandoned and the dispute will never be fully resolved on that chain. - -Even if this doesn't happen, there is the possibility that there are two disputes underway, and one resolves leading to a reversion of the chain before the other has concluded. In this case we want to both transplant the concluded dispute onto other forks of the chain as well as the unconcluded dispute. - -We account for these requirements by having the disputes module handle two kinds of disputes. - -1. Local disputes: those contesting the validity of the current fork by disputing a parablock included within it. -1. Remote disputes: a dispute that has partially or fully resolved on another fork which is transplanted to the local fork for completion and eventual slashing. - -When a local dispute concludes negatively, the chain needs to be abandoned and reverted back to a block where the state does not contain the bad parablock. We expect that due to the [Approval Checking Protocol](../protocol-approval.md), the current executing block should not be finalized. So we do two things when a local dispute concludes negatively: -1. Freeze the state of parachains so nothing further is backed or included. -1. Issue a digest in the header of the block that signals to nodes that this branch of the chain is to be abandoned. - -If, as is expected, the chain is unfinalized, the freeze will have no effect as no honest validator will attempt to build on the frozen chain. However, if the approval checking protocol has failed and the bad parablock is finalized, the freeze serves to put the chain into a governance-only mode. - -The storage of this module is designed around tracking [`DisputeState`s](../types/disputes.md#disputestate), updating them with votes, and tracking blocks included by this branch of the relay chain. It also contains a `Frozen` parameter designed to freeze the state of all parachains. - -## Storage - -Storage Layout: - -```rust -LastPrunedSession: Option, - -// All ongoing or concluded disputes for the last several sessions. -Disputes: double_map (SessionIndex, CandidateHash) -> Option, -// All included blocks on the chain, as well as the block number in this chain that -// should be reverted back to if the candidate is disputed and determined to be invalid. -Included: double_map (SessionIndex, CandidateHash) -> Option, -// Maps session indices to a vector indicating the number of potentially-spam disputes -// each validator is participating in. Potentially-spam disputes are remote disputes which have -// fewer than `byzantine_threshold + 1` validators. -// -// The i'th entry of the vector corresponds to the i'th validator in the session. -SpamSlots: map SessionIndex -> Vec, -// Whether the chain is frozen or not. Starts as `false`. When this is `true`, -// the chain will not accept any new parachain blocks for backing or inclusion. -// It can only be set back to `false` by governance intervention. -Frozen: bool, -``` - -> `byzantine_threshold` refers to the maximum number `f` of validators which may be byzantine. The total number of validators is `n = 3f + e` where `e in { 1, 2, 3 }`. - -## Session Change - -1. If the current session is not greater than `config.dispute_period + 1`, nothing to do here. -1. Set `pruning_target = current_session - config.dispute_period - 1`. We add the extra `1` because we want to keep things for `config.dispute_period` _full_ sessions. The stuff at the end of the most recent session has been around for ~0 sessions, not ~1. -1. If `LastPrunedSession` is `None`, then set `LastPrunedSession` to `Some(pruning_target)` and return. -1. Otherwise, clear out all disputes, included candidates, and `SpamSlots` entries in the range `last_pruned..=pruning_target` and set `LastPrunedSession` to `Some(pruning_target)`. - -## Block Initialization - -1. Iterate through all disputes. If any have not concluded and started more than `config.dispute_conclusion_by_timeout_period` blocks ago, set them to `Concluded` and mildly punish all validators associated, as they have failed to distribute available data. If the `Included` map does not contain the candidate and there are fewer than `byzantine_threshold + 1` participating validators, reduce `SpamSlots` for all participating validators. - -## Routines - -* `provide_multi_dispute_data(MultiDisputeStatementSet) -> Vec<(SessionIndex, Hash)>`: - 1. Fail if any disputes in the set are duplicate or concluded before the `config.dispute_post_conclusion_acceptance_period` window relative to now. - 1. Pass on each dispute statement set to `provide_dispute_data`, propagating failure. - 1. Return a list of all candidates who just had disputes initiated. - -* `provide_dispute_data(DisputeStatementSet) -> bool`: Provide data to an ongoing dispute or initiate a dispute. - 1. All statements must be issued under the correct session for the correct candidate. - 1. `SessionInfo` is used to check statement signatures and this function should fail if any signatures are invalid. - 1. If there is no dispute under `Disputes`, create a new `DisputeState` with blank bitfields. - 1. If `concluded_at` is `Some`, and is `concluded_at + config.post_conclusion_acceptance_period < now`, return false. - 1. If the overlap of the validators in the `DisputeStatementSet` and those already present in the `DisputeState` is fewer in number than `byzantine_threshold + 1` and the candidate is not present in the `Included` map - 1. increment `SpamSlots` for each validator in the `DisputeStatementSet` which is not already in the `DisputeState`. Initialize the `SpamSlots` to a zeroed vector first, if necessary. - 1. If the value for any spam slot exceeds `config.dispute_max_spam_slots`, return false. - 1. If the overlap of the validators in the `DisputeStatementSet` and those already present in the `DisputeState` is at least `byzantine_threshold + 1`, the `DisputeState` has fewer than `byzantine_threshold + 1` validators, and the candidate is not present in the `Included` map, decrement `SpamSlots` for each validator in the `DisputeState`. - 1. Import all statements into the dispute. This should fail if any statements are duplicate; if the corresponding bit for the corresponding validator is set in the dispute already. - 1. If `concluded_at` is `None`, reward all statements slightly less. - 1. If `concluded_at` is `Some`, reward all statements slightly less. - 1. If either side now has supermajority, slash the other side. This may be both sides, and we support this possibility in code, but note that this requires validators to participate on both sides which has negative expected value. Set `concluded_at` to `Some(now)`. - 1. If just concluded against the candidate and the `Included` map contains `(session, candidate)`: invoke `revert_and_freeze` with the stored block number. - 1. Return true if just initiated, false otherwise. - -* `disputes() -> Vec<(SessionIndex, CandidateHash, DisputeState)>`: Get a list of all disputes and info about dispute state. - 1. Iterate over all disputes in `Disputes`. Set the flag according to `concluded`. - -* `note_included(SessionIndex, CandidateHash, included_in: BlockNumber)`: - 1. Add `(SessionIndex, CandidateHash)` to the `Included` map with `included_in - 1` as the value. - 1. If there is a dispute under `(Sessionindex, CandidateHash)` with fewer than `byzantine_threshold + 1` participating validators, decrement `SpamSlots` for each validator in the `DisputeState`. - 1. If there is a dispute under `(SessionIndex, CandidateHash)` that has concluded against the candidate, invoke `revert_and_freeze` with the stored block number. - -* `could_be_invalid(SessionIndex, CandidateHash) -> bool`: Returns whether a candidate has a live dispute ongoing or a dispute which has already concluded in the negative. - -* `is_frozen()`: Load the value of `Frozen` from storage. - -* `revert_and_freeze(BlockNumber): - 1. If `is_frozen()` return. - 1. issue a digest in the block header which indicates the chain is to be abandoned back to the stored block number. - 1. Set `Frozen` to true. diff --git a/roadmap/implementers-guide/src/runtime/dmp.md b/roadmap/implementers-guide/src/runtime/dmp.md deleted file mode 100644 index df261db94576..000000000000 --- a/roadmap/implementers-guide/src/runtime/dmp.md +++ /dev/null @@ -1,51 +0,0 @@ -# DMP Module - -A module responsible for Downward Message Processing (DMP). See [Messaging Overview](../messaging.md) for more details. - -## Storage - -Storage layout required for implementation of DMP. - -```rust -/// The downward messages addressed for a certain para. -DownwardMessageQueues: map ParaId => Vec; -/// A mapping that stores the downward message queue MQC head for each para. -/// -/// Each link in this chain has a form: -/// `(prev_head, B, H(M))`, where -/// - `prev_head`: is the previous head hash or zero if none. -/// - `B`: is the relay-chain block number in which a message was appended. -/// - `H(M)`: is the hash of the message being appended. -DownwardMessageQueueHeads: map ParaId => Hash; -``` - -## Initialization - -No initialization routine runs for this module. - -## Routines - -Candidate Acceptance Function: - -* `check_processed_downward_messages(P: ParaId, processed_downward_messages: u32)`: - 1. Checks that `DownwardMessageQueues` for `P` is at least `processed_downward_messages` long. - 1. Checks that `processed_downward_messages` is at least 1 if `DownwardMessageQueues` for `P` is not empty. - -Candidate Enactment: - -* `prune_dmq(P: ParaId, processed_downward_messages: u32)`: - 1. Remove the first `processed_downward_messages` from the `DownwardMessageQueues` of `P`. - -Utility routines. - -`queue_downward_message(P: ParaId, M: DownwardMessage)`: - 1. Check if the size of `M` exceeds the `config.max_downward_message_size`. If so, return an error. - 1. Wrap `M` into `InboundDownwardMessage` using the current block number for `sent_at`. - 1. Obtain a new MQC link for the resulting `InboundDownwardMessage` and replace `DownwardMessageQueueHeads` for `P` with the resulting hash. - 1. Add the resulting `InboundDownwardMessage` into `DownwardMessageQueues` for `P`. - -## Session Change - -1. For each `P` in `outgoing_paras` (generated by `Paras::on_new_session`): - 1. Remove all `DownwardMessageQueues` of `P`. - 1. Remove `DownwardMessageQueueHeads` for `P`. diff --git a/roadmap/implementers-guide/src/runtime/hrmp.md b/roadmap/implementers-guide/src/runtime/hrmp.md deleted file mode 100644 index a19e89b0b379..000000000000 --- a/roadmap/implementers-guide/src/runtime/hrmp.md +++ /dev/null @@ -1,267 +0,0 @@ -# HRMP Module - -A module responsible for Horizontally Relay-routed Message Passing (HRMP). See [Messaging Overview](../messaging.md) for more details. - -## Storage - -HRMP related structs: - -```rust -/// A description of a request to open an HRMP channel. -struct HrmpOpenChannelRequest { - /// Indicates if this request was confirmed by the recipient. - confirmed: bool, - /// How many session boundaries ago this request was seen. - age: SessionIndex, - /// The amount that the sender supplied at the time of creation of this request. - sender_deposit: Balance, - /// The maximum message size that could be put into the channel. - max_message_size: u32, - /// The maximum number of messages that can be pending in the channel at once. - max_capacity: u32, - /// The maximum total size of the messages that can be pending in the channel at once. - max_total_size: u32, -} - -/// A metadata of an HRMP channel. -struct HrmpChannel { - /// The amount that the sender supplied as a deposit when opening this channel. - sender_deposit: Balance, - /// The amount that the recipient supplied as a deposit when accepting opening this channel. - recipient_deposit: Balance, - /// The maximum number of messages that can be pending in the channel at once. - max_capacity: u32, - /// The maximum total size of the messages that can be pending in the channel at once. - max_total_size: u32, - /// The maximum message size that could be put into the channel. - max_message_size: u32, - /// The current number of messages pending in the channel. - /// Invariant: should be less or equal to `max_capacity`. - msg_count: u32, - /// The total size in bytes of all message payloads in the channel. - /// Invariant: should be less or equal to `max_total_size`. - total_size: u32, - /// A head of the Message Queue Chain for this channel. Each link in this chain has a form: - /// `(prev_head, B, H(M))`, where - /// - `prev_head`: is the previous value of `mqc_head` or zero if none. - /// - `B`: is the [relay-chain] block number in which a message was appended - /// - `H(M)`: is the hash of the message being appended. - /// This value is initialized to a special value that consists of all zeroes which indicates - /// that no messages were previously added. - mqc_head: Option, -} -``` -HRMP related storage layout - -```rust -/// The set of pending HRMP open channel requests. -/// -/// The set is accompanied by a list for iteration. -/// -/// Invariant: -/// - There are no channels that exists in list but not in the set and vice versa. -HrmpOpenChannelRequests: map HrmpChannelId => Option; -HrmpOpenChannelRequestsList: Vec; - -/// This mapping tracks how many open channel requests are inititated by a given sender para. -/// Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has `(X, _)` -/// as the number of `HrmpOpenChannelRequestCount` for `X`. -HrmpOpenChannelRequestCount: map ParaId => u32; -/// This mapping tracks how many open channel requests were accepted by a given recipient para. -/// Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with -/// `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`. -HrmpAcceptedChannelRequestCount: map ParaId => u32; - -/// A set of pending HRMP close channel requests that are going to be closed during the session change. -/// Used for checking if a given channel is registered for closure. -/// -/// The set is accompanied by a list for iteration. -/// -/// Invariant: -/// - There are no channels that exists in list but not in the set and vice versa. -HrmpCloseChannelRequests: map HrmpChannelId => Option<()>; -HrmpCloseChannelRequestsList: Vec; - -/// The HRMP watermark associated with each para. -/// Invariant: -/// - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a session. -HrmpWatermarks: map ParaId => Option; -/// HRMP channel data associated with each para. -/// Invariant: -/// - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session. -HrmpChannels: map HrmpChannelId => Option; -/// Ingress/egress indexes allow to find all the senders and receivers given the opposite -/// side. I.e. -/// -/// (a) ingress index allows to find all the senders for a given recipient. -/// (b) egress index allows to find all the recipients for a given sender. -/// -/// Invariants: -/// - for each ingress index entry for `P` each item `I` in the index should present in `HrmpChannels` -/// as `(I, P)`. -/// - for each egress index entry for `P` each item `E` in the index should present in `HrmpChannels` -/// as `(P, E)`. -/// - there should be no other dangling channels in `HrmpChannels`. -/// - the vectors are sorted. -HrmpIngressChannelsIndex: map ParaId => Vec; -HrmpEgressChannelsIndex: map ParaId => Vec; -/// Storage for the messages for each channel. -/// Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`. -HrmpChannelContents: map HrmpChannelId => Vec; -/// Maintains a mapping that can be used to answer the question: -/// What paras sent a message at the given block number for a given reciever. -/// Invariants: -/// - The inner `Vec` is never empty. -/// - The inner `Vec` cannot store two same `ParaId`. -/// - The outer vector is sorted ascending by block number and cannot store two items with the same -/// block number. -HrmpChannelDigests: map ParaId => Vec<(BlockNumber, Vec)>; -``` - -## Initialization - -No initialization routine runs for this module. - -## Routines - -Candidate Acceptance Function: - -* `check_hrmp_watermark(P: ParaId, new_hrmp_watermark)`: - 1. `new_hrmp_watermark` should be strictly greater than the value of `HrmpWatermarks` for `P` (if any). - 1. `new_hrmp_watermark` must not be greater than the context's block number. - 1. `new_hrmp_watermark` should be either - 1. equal to the context's block number - 1. or in `HrmpChannelDigests` for `P` an entry with the block number should exist -* `check_outbound_hrmp(sender: ParaId, Vec)`: - 1. Checks that there are at most `config.hrmp_max_message_num_per_candidate` messages. - 1. Checks that horizontal messages are sorted by ascending recipient ParaId and there is no two horizontal messages have the same recipient. - 1. For each horizontal message `M` with the channel `C` identified by `(sender, M.recipient)` check: - 1. exists - 1. `M`'s payload size doesn't exceed a preconfigured limit `C.max_message_size` - 1. `M`'s payload size summed with the `C.total_size` doesn't exceed a preconfigured limit `C.max_total_size`. - 1. `C.msg_count + 1` doesn't exceed a preconfigured limit `C.max_capacity`. - -Candidate Enactment: - -* `queue_outbound_hrmp(sender: ParaId, Vec)`: - 1. For each horizontal message `HM` with the channel `C` identified by `(sender, HM.recipient)`: - 1. Append `HM` into `HrmpChannelContents` that corresponds to `C` with `sent_at` equals to the current block number. - 1. Locate or create an entry in `HrmpChannelDigests` for `HM.recipient` and append `sender` into the entry's list. - 1. Increment `C.msg_count` - 1. Increment `C.total_size` by `HM`'s payload size - 1. Append a new link to the MQC and save the new head in `C.mqc_head`. Note that the current block number as of enactment is used for the link. -* `prune_hrmp(recipient, new_hrmp_watermark)`: - 1. From `HrmpChannelDigests` for `recipient` remove all entries up to an entry with block number equal to `new_hrmp_watermark`. - 1. From the removed digests construct a set of paras that sent new messages within the interval between the old and new watermarks. - 1. For each channel `C` identified by `(sender, recipient)` for each `sender` coming from the set, prune messages up to the `new_hrmp_watermark`. - 1. For each pruned message `M` from channel `C`: - 1. Decrement `C.msg_count` - 1. Decrement `C.total_size` by `M`'s payload size. - 1. Set `HrmpWatermarks` for `P` to be equal to `new_hrmp_watermark` - > NOTE: That collecting digests can be inefficient and the time it takes grows very fast. Thanks to the aggresive - > parametrization this shouldn't be a big of a deal. - > If that becomes a problem consider introducing an extra dictionary which says at what block the given sender - > sent a message to the recipient. - -## Entry-points - -The following entry-points are meant to be used for HRMP channel management. - -Those entry-points are meant to be called from a parachain. `origin` is defined as the `ParaId` of -the parachain executed the message. - -* `hrmp_init_open_channel(recipient, proposed_max_capacity, proposed_max_message_size)`: - 1. Check that the `origin` is not `recipient`. - 1. Check that `proposed_max_capacity` is less or equal to `config.hrmp_channel_max_capacity` and greater than zero. - 1. Check that `proposed_max_message_size` is less or equal to `config.hrmp_channel_max_message_size` and greater than zero. - 1. Check that `recipient` is a valid para. - 1. Check that there is no existing channel for `(origin, recipient)` in `HrmpChannels`. - 1. Check that there is no existing open channel request (`origin`, `recipient`) in `HrmpOpenChannelRequests`. - 1. Check that the sum of the number of already opened HRMP channels by the `origin` (the size - of the set found `HrmpEgressChannelsIndex` for `origin`) and the number of open requests by the - `origin` (the value from `HrmpOpenChannelRequestCount` for `origin`) doesn't exceed the limit of - channels (`config.hrmp_max_parachain_outbound_channels` or `config.hrmp_max_parathread_outbound_channels`) minus 1. - 1. Check that `origin`'s balance is more or equal to `config.hrmp_sender_deposit` - 1. Reserve the deposit for the `origin` according to `config.hrmp_sender_deposit` - 1. Increase `HrmpOpenChannelRequestCount` by 1 for `origin`. - 1. Append `(origin, recipient)` to `HrmpOpenChannelRequestsList`. - 1. Add a new entry to `HrmpOpenChannelRequests` for `(origin, recipient)` - 1. Set `sender_deposit` to `config.hrmp_sender_deposit` - 1. Set `max_capacity` to `proposed_max_capacity` - 1. Set `max_message_size` to `proposed_max_message_size` - 1. Set `max_total_size` to `config.hrmp_channel_max_total_size` - 1. Send a downward message to `recipient` notifying about an inbound HRMP channel request. - - The DM is sent using `queue_downward_message`. - - The DM is represented by the `HrmpNewChannelOpenRequest` XCM message. - - `sender` is set to `origin`, - - `max_message_size` is set to `proposed_max_message_size`, - - `max_capacity` is set to `proposed_max_capacity`. -* `hrmp_accept_open_channel(sender)`: - 1. Check that there is an existing request between (`sender`, `origin`) in `HrmpOpenChannelRequests` - 1. Check that it is not confirmed. - 1. Check that the sum of the number of inbound HRMP channels opened to `origin` (the size of the set - found in `HrmpIngressChannelsIndex` for `origin`) and the number of accepted open requests by the `origin` - (the value from `HrmpAcceptedChannelRequestCount` for `origin`) doesn't exceed the limit of channels - (`config.hrmp_max_parachain_inbound_channels` or `config.hrmp_max_parathread_inbound_channels`) - minus 1. - 1. Check that `origin`'s balance is more or equal to `config.hrmp_recipient_deposit`. - 1. Reserve the deposit for the `origin` according to `config.hrmp_recipient_deposit` - 1. For the request in `HrmpOpenChannelRequests` identified by `(sender, P)`, set `confirmed` flag to `true`. - 1. Increase `HrmpAcceptedChannelRequestCount` by 1 for `origin`. - 1. Send a downward message to `sender` notifying that the channel request was accepted. - - The DM is sent using `queue_downward_message`. - - The DM is represented by the `HrmpChannelAccepted` XCM message. - - `recipient` is set to `origin`. -* `hrmp_close_channel(ch)`: - 1. Check that `origin` is either `ch.sender` or `ch.recipient` - 1. Check that `HrmpChannels` for `ch` exists. - 1. Check that `ch` is not in the `HrmpCloseChannelRequests` set. - 1. If not already there, insert a new entry `Some(())` to `HrmpCloseChannelRequests` for `ch` - and append `ch` to `HrmpCloseChannelRequestsList`. - 1. Send a downward message to the opposite party notifying about the channel closing. - - The DM is sent using `queue_downward_message`. - - The DM is represented by the `HrmpChannelClosing` XCM message with: - - `initator` is set to `origin`, - - `sender` is set to `ch.sender`, - - `recipient` is set to `ch.recipient`. - - The opposite party is `ch.sender` if `origin` is `ch.recipient` and `ch.recipient` if `origin` is `ch.sender`. - -## Session Change - -1. For each `P` in `outgoing_paras` (generated by `Paras::on_new_session`): - 1. Remove all inbound channels of `P`, i.e. `(_, P)`, - 1. Remove all outbound channels of `P`, i.e. `(P, _)`, - 1. Remove `HrmpOpenChannelRequestCount` for `P` - 1. Remove `HrmpAcceptedChannelRequestCount` for `P`. -1. For each channel designator `D` in `HrmpOpenChannelRequestsList` we query the request `R` from `HrmpOpenChannelRequests`: - 1. if `R.confirmed = false`: - 1. increment `R.age` by 1. - 1. if `R.age` reached a preconfigured time-to-live limit `config.hrmp_open_request_ttl`, then: - 1. refund `R.sender_deposit` to the sender - 1. decrement `HrmpOpenChannelRequestCount` for `D.sender` by 1. - 1. remove `R` - 1. remove `D` - 2. if `R.confirmed = true`, - 1. if both `D.sender` and `D.recipient` are not offboarded. - 1. create a new channel `C` between `(D.sender, D.recipient)`. - 1. Initialize the `C.sender_deposit` with `R.sender_deposit` and `C.recipient_deposit` - with the value found in the configuration `config.hrmp_recipient_deposit`. - 1. Insert `sender` into the set `HrmpIngressChannelsIndex` for the `recipient`. - 1. Insert `recipient` into the set `HrmpEgressChannelsIndex` for the `sender`. - 1. decrement `HrmpOpenChannelRequestCount` for `D.sender` by 1. - 1. decrement `HrmpAcceptedChannelRequestCount` for `D.recipient` by 1. - 1. remove `R` - 1. remove `D` -1. For each HRMP channel designator `D` in `HrmpCloseChannelRequestsList` - 1. remove the channel identified by `D`, if exists. - 1. remove `D` from `HrmpCloseChannelRequests`. - 1. remove `D` from `HrmpCloseChannelRequestsList` - -To remove a HRMP channel `C` identified with a tuple `(sender, recipient)`: - -1. Return `C.sender_deposit` to the `sender`. -1. Return `C.recipient_deposit` to the `recipient`. -1. Remove `C` from `HrmpChannels`. -1. Remove `C` from `HrmpChannelContents`. -1. Remove `recipient` from the set `HrmpEgressChannelsIndex` for `sender`. -1. Remove `sender` from the set `HrmpIngressChannelsIndex` for `recipient`. diff --git a/roadmap/implementers-guide/src/runtime/inclusion.md b/roadmap/implementers-guide/src/runtime/inclusion.md deleted file mode 100644 index 84c1cc9d8b61..000000000000 --- a/roadmap/implementers-guide/src/runtime/inclusion.md +++ /dev/null @@ -1,93 +0,0 @@ -# Inclusion Module - -The inclusion module is responsible for inclusion and availability of scheduled parachains and parathreads. - -## Storage - -Helper structs: - -```rust -struct AvailabilityBitfield { - bitfield: BitVec, // one bit per core. - submitted_at: BlockNumber, // for accounting, as meaning of bits may change over time. -} - -struct CandidatePendingAvailability { - core: CoreIndex, // availability core - hash: CandidateHash, - descriptor: CandidateDescriptor, - availability_votes: Bitfield, // one bit per validator. - relay_parent_number: BlockNumber, // number of the relay-parent. - backers: Bitfield, // one bit per validator, set for those who backed the candidate. - backed_in_number: BlockNumber, - backing_group: GroupIndex, -} -``` - -Storage Layout: - -```rust -/// The latest bitfield for each validator, referred to by index. -bitfields: map ValidatorIndex => AvailabilityBitfield; -/// Candidates pending availability. -PendingAvailability: map ParaId => CandidatePendingAvailability; -/// The commitments of candidates pending availability, by ParaId. -PendingAvailabilityCommitments: map ParaId => CandidateCommitments; -``` - -## Session Change - -1. Clear out all candidates pending availability. -1. Clear out all validator bitfields. - -## Routines - -All failed checks should lead to an unrecoverable error making the block invalid. - -* `process_bitfields(expected_bits, Bitfields, core_lookup: Fn(CoreIndex) -> Option)`: - 1. check that there is at most 1 bitfield per validator and that the number of bits in each bitfield is equal to expected_bits. - 1. check that there are no duplicates - 1. check all validator signatures. - 1. apply each bit of bitfield to the corresponding pending candidate. looking up parathread cores using the `core_lookup`. Disregard bitfields that have a `1` bit for any free cores. - 1. For each applied bit of each availability-bitfield, set the bit for the validator in the `CandidatePendingAvailability`'s `availability_votes` bitfield. Track all candidates that now have >2/3 of bits set in their `availability_votes`. These candidates are now available and can be enacted. - 1. For all now-available candidates, invoke the `enact_candidate` routine with the candidate and relay-parent number. - 1. Return a list of `(CoreIndex, CandidateHash)` from freed cores consisting of the cores where candidates have become available. -* `process_candidates(parent_storage_root, BackedCandidates, scheduled: Vec, group_validators: Fn(GroupIndex) -> Option>)`: - 1. check that each candidate corresponds to a scheduled core and that they are ordered in the same order the cores appear in assignments in `scheduled`. - 1. check that `scheduled` is sorted ascending by `CoreIndex`, without duplicates. - 1. check that there is no candidate pending availability for any scheduled `ParaId`. - 1. check that each candidate's `validation_data_hash` corresponds to a `PersistedValidationData` computed from the current state. - > NOTE: With contextual execution in place, validation data will be obtained as of the state of the context block. However, only the state of the current block can be used for such a query. - 1. If the core assignment includes a specific collator, ensure the backed candidate is issued by that collator. - 1. Ensure that any code upgrade scheduled by the candidate does not happen within `config.validation_upgrade_frequency` of `Paras::last_code_upgrade(para_id, true)`, if any, comparing against the value of `Paras::FutureCodeUpgrades` for the given para ID. - 1. Check the collator's signature on the candidate data. - 1. check the backing of the candidate using the signatures and the bitfields, comparing against the validators assigned to the groups, fetched with the `group_validators` lookup. - 1. call `Ump::check_upward_messages(para, commitments.upward_messages)` to check that the upward messages are valid. - 1. call `Dmp::check_processed_downward_messages(para, commitments.processed_downward_messages)` to check that the DMQ is properly drained. - 1. call `Hrmp::check_hrmp_watermark(para, commitments.hrmp_watermark)` for each candidate to check rules of processing the HRMP watermark. - 1. using `Hrmp::check_outbound_hrmp(sender, commitments.horizontal_messages)` ensure that the each candidate sent a valid set of horizontal messages - 1. create an entry in the `PendingAvailability` map for each backed candidate with a blank `availability_votes` bitfield. - 1. create a corresponding entry in the `PendingAvailabilityCommitments` with the commitments. - 1. Return a `Vec` of all scheduled cores of the list of passed assignments that a candidate was successfully backed for, sorted ascending by CoreIndex. -* `enact_candidate(relay_parent_number: BlockNumber, CommittedCandidateReceipt)`: - 1. If the receipt contains a code upgrade, Call `Paras::schedule_code_upgrade(para_id, code, relay_parent_number + config.validationl_upgrade_delay)`. - > TODO: Note that this is safe as long as we never enact candidates where the relay parent is across a session boundary. In that case, which we should be careful to avoid with contextual execution, the configuration might have changed and the para may de-sync from the host's understanding of it. - 1. Reward all backing validators of each candidate, contained within the `backers` field. - 1. call `Ump::receive_upward_messages` for each backed candidate, using the [`UpwardMessage`s](../types/messages.md#upward-message) from the [`CandidateCommitments`](../types/candidate.md#candidate-commitments). - 1. call `Dmp::prune_dmq` with the para id of the candidate and the candidate's `processed_downward_messages`. - 1. call `Hrmp::prune_hrmp` with the para id of the candiate and the candidate's `hrmp_watermark`. - 1. call `Hrmp::queue_outbound_hrmp` with the para id of the candidate and the list of horizontal messages taken from the commitment, - 1. Call `Paras::note_new_head` using the `HeadData` from the receipt and `relay_parent_number`. -* `collect_pending`: - - ```rust - fn collect_pending(f: impl Fn(CoreIndex, BlockNumber) -> bool) -> Vec { - // sweep through all paras pending availability. if the predicate returns true, when given the core index and - // the block number the candidate has been pending availability since, then clean up the corresponding storage for that candidate and the commitments. - // return a vector of cleaned-up core IDs. - } - ``` -* `force_enact(ParaId)`: Forcibly enact the candidate with the given ID as though it had been deemed available by bitfields. Is a no-op if there is no candidate pending availability for this para-id. This should generally not be used but it is useful during execution of Runtime APIs, where the changes to the state are expected to be discarded directly after. -* `candidate_pending_availability(ParaId) -> Option`: returns the `CommittedCandidateReceipt` pending availability for the para provided, if any. -* `pending_availability(ParaId) -> Option`: returns the metadata around the candidate pending availability for the para, if any. -* `collect_disputed(disputed: Vec) -> Vec`: Sweeps through all paras pending availability. If the candidate hash is one of the disputed candidates, then clean up the corresponding storage for that candidate and the commitments. Return a vector of cleaned-up core IDs. diff --git a/roadmap/implementers-guide/src/runtime/initializer.md b/roadmap/implementers-guide/src/runtime/initializer.md deleted file mode 100644 index ffeacd5cb357..000000000000 --- a/roadmap/implementers-guide/src/runtime/initializer.md +++ /dev/null @@ -1,45 +0,0 @@ -# Initializer Module - -This module is responsible for initializing the other modules in a deterministic order. It also has one other purpose as described in the overview of the runtime: accepting and forwarding session change notifications. - -## Storage - -```rust -HasInitialized: bool; -// buffered session changes along with the block number at which they should be applied. -// -// typically this will be empty or one element long. ordered ascending by BlockNumber and insertion -// order. -BufferedSessionChanges: Vec<(BlockNumber, ValidatorSet, ValidatorSet)>; -``` - -## Initialization - -Before initializing modules, remove all changes from the `BufferedSessionChanges` with number less than or equal to the current block number, and apply the last one. The session change is applied to all modules in the same order as initialization. - -The other parachains modules are initialized in this order: - -1. Configuration -1. Shared -1. Paras -1. Scheduler -1. Inclusion -1. SessionInfo -1. Disputes -1. DMP -1. UMP -1. HRMP - -The [Configuration Module](configuration.md) is first, since all other modules need to operate under the same configuration as each other. Then the [Shared](shared.md) module is invoked, which determines the set of active validators. It would lead to inconsistency if, for example, the scheduler ran first and then the configuration was updated before the Inclusion module. - -Set `HasInitialized` to true. - -## Session Change - -Store the session change information in `BufferedSessionChange` along with the block number at which it was submitted, plus one. Although the expected operational parameters of the block authorship system should prevent more than one change from being buffered at any time, it may occur. Regardless, we always need to track the block number at which the session change can be applied so as to remain flexible over session change notifications being issued before or after initialization of the current block. - -## Finalization - -Finalization order is less important in this case than initialization order, so we finalize the modules in the reverse order from initialization. - -Set `HasInitialized` to false. diff --git a/roadmap/implementers-guide/src/runtime/parainherent.md b/roadmap/implementers-guide/src/runtime/parainherent.md deleted file mode 100644 index ed4d6fe7d90b..000000000000 --- a/roadmap/implementers-guide/src/runtime/parainherent.md +++ /dev/null @@ -1,41 +0,0 @@ -# ParaInherent - -This module is responsible for providing all data given to the runtime by the block author to the various parachains modules. The entry-point is mandatory, in that it must be invoked exactly once within every block, and it is also "inherent", in that it is provided with no origin by the block author. The data within it carries its own authentication; i.e. the data takes the form of signed statements by validators. If any of the steps within fails, the entry-point is considered as having failed and the block will be invalid. - -This module does not have the same initialization/finalization concerns as the others, as it only requires that entry points be triggered after all modules have initialized and that finalization happens after entry points are triggered. Both of these are assumptions we have already made about the runtime's order of operations, so this module doesn't need to be initialized or finalized by the `Initializer`. - -There are a couple of important notes to the operations in this inherent as they relate to disputes. -1. We don't accept bitfields or backed candidates if in "governance-only" mode from having a local dispute conclude on this fork. -1. When disputes are initiated, we remove the block from pending availability. This allows us to roll back chains to the block before blocks are included as opposed to backing. It's important to do this before processing bitfields. -1. `Inclusion::collect_disputed` is kind of expensive so it's important to gate this on whether there are actually any new disputes. Which should be never. -1. And we don't accept parablocks that have open disputes or disputes that have concluded against the candidate. It's important to import dispute statements before backing, but this is already the case as disputes are imported before processing bitfields. - -## Storage - -```rust -Included: Option<()>, -``` - -## Finalization - -1. Take (get and clear) the value of `Included`. If it is not `Some`, throw an unrecoverable error. - -## Entry Points - -* `enter`: This entry-point accepts three parameters: The relay-chain parent block header, [`Bitfields`](../types/availability.md#signed-availability-bitfield) and [`BackedCandidates`](../types/backing.md#backed-candidate). - 1. Hash the parent header and make sure that it corresponds to the block hash of the parent (tracked by the `frame_system` FRAME module), - 1. Invoke `Disputes::provide_multi_dispute_data`. - 1. If `Disputes::is_frozen`, return and set `Included` to `Some(())`. - 1. If there are any created disputes from the current session, invoke `Inclusion::collect_disputed` with the disputed candidates. Annotate each returned core with `FreedReason::Concluded`. - 1. The `Bitfields` are first forwarded to the `Inclusion::process_bitfields` routine, returning a set of freed cores. Provide the number of availability cores (`Scheduler::availability_cores().len()`) as the expected number of bits and a `Scheduler::core_para` as a core-lookup to the `process_bitfields` routine. Annotate each of these freed cores with `FreedReason::Concluded`. - 1. For each freed candidate from the `Inclusion::process_bitfields` call, invoke `Disputes::note_included(current_session, candidate)`. - 1. If `Scheduler::availability_timeout_predicate` is `Some`, invoke `Inclusion::collect_pending` using it and annotate each of those freed cores with `FreedReason::TimedOut`. - 1. Combine and sort the dispute-freed cores, the bitfield-freed cores, and the timed-out cores. - 1. Invoke `Scheduler::clear` - 1. Invoke `Scheduler::schedule(freed_cores, System::current_block())` - 1. Extract `parent_storage_root` from the parent header, - 1. If `Disputes::could_be_invalid(current_session, candidate)` is true for any of the `backed_candidates`, fail. - 1. Invoke the `Inclusion::process_candidates` routine with the parameters `(parent_storage_root, backed_candidates, Scheduler::scheduled(), Scheduler::group_validators)`. - 1. Call `Scheduler::occupied` using the return value of the `Inclusion::process_candidates` call above, first sorting the list of assigned core indices. - 1. Call the `Ump::process_pending_upward_messages` routine to execute all messages in upward dispatch queues. - 1. If all of the above succeeds, set `Included` to `Some(())`. diff --git a/roadmap/implementers-guide/src/runtime/paras.md b/roadmap/implementers-guide/src/runtime/paras.md deleted file mode 100644 index a06580e312c8..000000000000 --- a/roadmap/implementers-guide/src/runtime/paras.md +++ /dev/null @@ -1,208 +0,0 @@ -# Paras Module - -The Paras module is responsible for storing information on parachains and parathreads. Registered -parachains and parathreads cannot change except at session boundaries and after at least a full -session has passed. This is primarily to ensure that the number and meaning of bits required for the -availability bitfields does not change except at session boundaries. - -It's also responsible for managing parachain validation code upgrades as well as maintaining -availability of old parachain code and its pruning. - -## Storage - -### Utility Structs - -```rust -// the two key times necessary to track for every code replacement. -pub struct ReplacementTimes { - /// The relay-chain block number that the code upgrade was expected to be activated. - /// This is when the code change occurs from the para's perspective - after the - /// first parablock included with a relay-parent with number >= this value. - expected_at: BlockNumber, - /// The relay-chain block number at which the parablock activating the code upgrade was - /// actually included. This means considered included and available, so this is the time at which - /// that parablock enters the acceptance period in this fork of the relay-chain. - activated_at: BlockNumber, -} - -/// Metadata used to track previous parachain validation code that we keep in -/// the state. -pub struct ParaPastCodeMeta { - // Block numbers where the code was expected to be replaced and where the code - // was actually replaced, respectively. The first is used to do accurate lookups - // of historic code in historic contexts, whereas the second is used to do - // pruning on an accurate timeframe. These can be used as indices - // into the `PastCode` map along with the `ParaId` to fetch the code itself. - upgrade_times: Vec, - // This tracks the highest pruned code-replacement, if any. - last_pruned: Option, -} - -enum UseCodeAt { - // Use the current code. - Current, - // Use the code that was replaced at the given block number. - ReplacedAt(BlockNumber), -} - -struct ParaGenesisArgs { - /// The initial head-data to use. - genesis_head: HeadData, - /// The validation code to start with. - validation_code: ValidationCode, - /// True if parachain, false if parathread. - parachain: bool, -} - -/// The possible states of a para, to take into account delayed lifecycle changes. -pub enum ParaLifecycle { - /// A Para is new and is onboarding. - Onboarding, - /// Para is a Parathread. - Parathread, - /// Para is a Parachain. - Parachain, - /// Para is a Parathread which is upgrading to a Parachain. - UpgradingParathread, - /// Para is a Parachain which is downgrading to a Parathread. - DowngradingParachain, - /// Parathread is being offboarded. - OutgoingParathread, - /// Parachain is being offboarded. - OutgoingParachain, -} -``` - -#### Para Lifecycle - -Because the state of parachains and parathreads are delayed by a session, we track the specific -state of the para using the `ParaLifecycle` enum. - -``` -None Parathread Parachain - + + + - | | | - | (2 Session Delay) | | - | | | - +----------------------->+ | - | Onboarding | | - | | | - +-------------------------------------------------->+ - | Onboarding | | - | | | - | +------------------------->+ - | | UpgradingParathread | - | | | - | +<-------------------------+ - | | DowngradingParachain | - | | | - |<-----------------------+ | - | OutgoingParathread | | - | | | - +<--------------------------------------------------+ - | | OutgoingParachain | - | | | - + + + -``` - -During the transition period, the para object is still considered in its existing state. - -### Storage Layout - -```rust -/// All parachains. Ordered ascending by ParaId. Parathreads are not included. -Parachains: Vec, -/// The current lifecycle state of all known Para Ids. -ParaLifecycle: map ParaId => Option, -/// The head-data of every registered para. -Heads: map ParaId => Option; -/// The validation code hash of every live para. -CurrentCodeHash: map ParaId => Option; -/// Actual past code hash, indicated by the para id as well as the block number at which it became outdated. -PastCodeHash: map (ParaId, BlockNumber) => Option; -/// Past code of parachains. The parachains themselves may not be registered anymore, -/// but we also keep their code on-chain for the same amount of time as outdated code -/// to keep it available for secondary checkers. -PastCodeMeta: map ParaId => ParaPastCodeMeta; -/// Which paras have past code that needs pruning and the relay-chain block at which the code was replaced. -/// Note that this is the actual height of the included block, not the expected height at which the -/// code upgrade would be applied, although they may be equal. -/// This is to ensure the entire acceptance period is covered, not an offset acceptance period starting -/// from the time at which the parachain perceives a code upgrade as having occurred. -/// Multiple entries for a single para are permitted. Ordered ascending by block number. -PastCodePruning: Vec<(ParaId, BlockNumber)>; -/// The block number at which the planned code change is expected for a para. -/// The change will be applied after the first parablock for this ID included which executes -/// in the context of a relay chain block with a number >= `expected_at`. -FutureCodeUpgrades: map ParaId => Option; -/// The actual future code of a para. -FutureCodeHash: map ParaId => Option; -/// The actions to perform during the start of a specific session index. -ActionsQueue: map SessionIndex => Vec; -/// Upcoming paras instantiation arguments. -UpcomingParasGenesis: map ParaId => Option; -/// The number of references on the validation code in `CodeByHash` storage. -CodeByHashRefs: map ValidationCodeHash => u32; -/// Validation code stored by its hash. -CodeByHash: map ValidationCodeHash => Option -``` - -## Session Change - -1. Execute all queued actions for paralifecycle changes: - 1. Clean up outgoing paras. - 1. This means removing the entries under `Heads`, `CurrentCode`, `FutureCodeUpgrades`, and - `FutureCode`. An according entry should be added to `PastCode`, `PastCodeMeta`, and - `PastCodePruning` using the outgoing `ParaId` and removed `CurrentCode` value. This is - because any outdated validation code must remain available on-chain for a determined amount - of blocks, and validation code outdated by de-registering the para is still subject to that - invariant. - 1. Apply all incoming paras by initializing the `Heads` and `CurrentCode` using the genesis - parameters. - 1. Amend the `Parachains` list and `ParaLifecycle` to reflect changes in registered parachains. - 1. Amend the `ParaLifecycle` set to reflect changes in registered parathreads. - 1. Upgrade all parathreads that should become parachains, updating the `Parachains` list and - `ParaLifecycle`. - 1. Downgrade all parachains that should become parathreads, updating the `Parachains` list and - `ParaLifecycle`. - 1. Return list of outgoing paras to the initializer for use by other modules. - -## Initialization - -1. Do pruning based on all entries in `PastCodePruning` with `BlockNumber <= now`. Update the - corresponding `PastCodeMeta` and `PastCode` accordingly. - -## Routines - -* `schedule_para_initialize(ParaId, ParaGenesisArgs)`: Schedule a para to be initialized at the next - session. Noop if para is already registered in the system with some `ParaLifecycle`. -* `schedule_para_cleanup(ParaId)`: Schedule a para to be cleaned up after the next full session. -* `schedule_parathread_upgrade(ParaId)`: Schedule a parathread to be upgraded to a parachain. -* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded to a parathread. -* `schedule_code_upgrade(ParaId, CurrentCode, expected_at: BlockNumber)`: Schedule a future code - upgrade of the given parachain, to be applied after inclusion of a block of the same parachain - executed in the context of a relay-chain block with number >= `expected_at`. -* `note_new_head(ParaId, HeadData, BlockNumber)`: note that a para has progressed to a new head, - where the new head was executed in the context of a relay-chain block with given number. This will - apply pending code upgrades based on the block number provided. -* `validation_code_at(ParaId, at: BlockNumber, assume_intermediate: Option)`: Fetches - the validation code to be used when validating a block in the context of the given relay-chain - height. A second block number parameter may be used to tell the lookup to proceed as if an - intermediate parablock has been included at the given relay-chain height. This may return past, - current, or (with certain choices of `assume_intermediate`) future code. `assume_intermediate`, if - provided, must be before `at`. If the validation code has been pruned, this will return `None`. -* `validation_code_hash_at(ParaId, at: BlockNumber, assume_intermediate: Option)`: Just like `validation_code_at`, but returns the code hash. -* `lifecycle(ParaId) -> Option`: Return the `ParaLifecycle` of a para. -* `is_parachain(ParaId) -> bool`: Returns true if the para ID references any live parachain, - including those which may be transitioning to a parathread in the future. -* `is_parathread(ParaId) -> bool`: Returns true if the para ID references any live parathread, - including those which may be transitioning to a parachain in the future. -* `is_valid_para(ParaId) -> bool`: Returns true if the para ID references either a live parathread - or live parachain. -* `last_code_upgrade(id: ParaId, include_future: bool) -> Option`: The block number of - the last scheduled upgrade of the requested para. Includes future upgrades if the flag is set. - This is the `expected_at` number, not the `activated_at` number. - -## Finalization - -No finalization routine runs for this module. diff --git a/roadmap/implementers-guide/src/runtime/scheduler.md b/roadmap/implementers-guide/src/runtime/scheduler.md deleted file mode 100644 index 68b1a8abb722..000000000000 --- a/roadmap/implementers-guide/src/runtime/scheduler.md +++ /dev/null @@ -1,231 +0,0 @@ -# Scheduler Module - -> TODO: this section is still heavily under construction. key questions about availability cores and validator assignment are still open and the flow of the the section may be contradictory or inconsistent - -The Scheduler module is responsible for two main tasks: - -- Partitioning validators into groups and assigning groups to parachains and parathreads. -- Scheduling parachains and parathreads - -It aims to achieve these tasks with these goals in mind: - -- It should be possible to know at least a block ahead-of-time, ideally more, which validators are going to be assigned to which parachains. -- Parachains that have a candidate pending availability in this fork of the chain should not be assigned. -- Validator assignments should not be gameable. Malicious cartels should not be able to manipulate the scheduler to assign themselves as desired. -- High or close to optimal throughput of parachains and parathreads. Work among validator groups should be balanced. - -## Availability Cores - -The Scheduler manages resource allocation using the concept of "Availability Cores". There will be one availability core for each parachain, and a fixed number of cores used for multiplexing parathreads. Validators will be partitioned into groups, with the same number of groups as availability cores. Validator groups will be assigned to different availability cores over time. - -An availability core can exist in either one of two states at the beginning or end of a block: free or occupied. A free availability core can have a parachain or parathread assigned to it for the potential to have a backed candidate included. After backing, the core enters the occupied state as the backed candidate is pending availability. There is an important distinction: a core is not considered occupied until it is in charge of a block pending availability, although the implementation may treat scheduled cores the same as occupied ones for brevity. A core exits the occupied state when the candidate is no longer pending availability - either on timeout or on availability. A core starting in the occupied state can move to the free state and back to occupied all within a single block, as availability bitfields are processed before backed candidates. At the end of the block, there is a possible timeout on availability which can move the core back to the free state if occupied. - -Cores are treated as an ordered list and are typically referred to by their index in that list. - -```dot process -digraph { - label = "Availability Core State Machine\n\n\n"; - labelloc = "t"; - - { rank=same vg1 vg2 } - - vg1 [label = "Free" shape=rectangle] - vg2 [label = "Occupied" shape=rectangle] - - vg1 -> vg2 [label = "Assignment & Backing" ] - vg2 -> vg1 [label = "Availability or Timeout" ] -} -``` - -```dot process -digraph { - label = "Availability Core Transitions within Block\n\n\n"; - labelloc = "t"; - splines="line"; - - subgraph cluster_left { - label = ""; - labelloc = "t"; - - fr1 [label = "Free" shape=rectangle] - fr2 [label = "Free" shape=rectangle] - occ [label = "Occupied" shape=rectangle] - - fr1 -> fr2 [label = "No Backing"] - fr1 -> occ [label = "Backing"] - - { rank=same fr2 occ } - } - - subgraph cluster_right { - label = ""; - labelloc = "t"; - - occ2 [label = "Occupied" shape=rectangle] - fr3 [label = "Free" shape=rectangle] - fr4 [label = "Free" shape=rectangle] - occ3 [label = "Occupied" shape=rectangle] - occ4 [label = "Occupied" shape=rectangle] - - occ2 -> fr3 [label = "Availability"] - occ2 -> occ3 [label = "No availability"] - fr3 -> fr4 [label = "No backing"] - fr3 -> occ4 [label = "Backing"] - occ3 -> occ4 [label = "(no change)"] - occ3 -> fr3 [label = "Availability Timeout"] - - { rank=same; fr3[group=g1]; occ3[group=g2] } - { rank=same; fr4[group=g1]; occ4[group=g2] } - } -} -``` - -## Validator Groups - -Validator group assignments do not need to change very quickly. The security benefits of fast rotation are redundant with the challenge mechanism in the [Approval process](../protocol-approval.md). Because of this, we only divide validators into groups at the beginning of the session and do not shuffle membership during the session. However, we do take steps to ensure that no particular validator group has dominance over a single parachain or parathread-multiplexer for an entire session to provide better guarantees of liveness. - -Validator groups rotate across availability cores in a round-robin fashion, with rotation occurring at fixed intervals. The i'th group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the number of cores. This makes upcoming rotations within the same session predictable. - -When a rotation occurs, validator groups are still responsible for distributing availability chunks for any previous cores that are still occupied and pending availability. In practice, rotation and availability-timeout frequencies should be set so this will only be the core they have just been rotated from. It is possible that a validator group is rotated onto a core which is currently occupied. In this case, the validator group will have nothing to do until the previously-assigned group finishes their availability work and frees the core or the availability process times out. Depending on if the core is for a parachain or parathread, a different timeout `t` from the [`HostConfiguration`](../types/runtime.md#host-configuration) will apply. Availability timeouts should only be triggered in the first `t-1` blocks after the beginning of a rotation. - -## Claims - -Parathreads operate on a system of claims. Collators participate in auctions to stake a claim on authoring the next block of a parathread, although the auction mechanism is beyond the scope of the scheduler. The scheduler guarantees that they'll be given at least a certain number of attempts to author a candidate that is backed. Attempts that fail during the availability phase are not counted, since ensuring availability at that stage is the responsibility of the backing validators, not of the collator. When a claim is accepted, it is placed into a queue of claims, and each claim is assigned to a particular parathread-multiplexing core in advance. Given that the current assignments of validator groups to cores are known, and the upcoming assignments are predictable, it is possible for parathread collators to know who they should be talking to now and how they should begin establishing connections with as a fallback. - -With this information, the Node-side can be aware of which parathreads have a good chance of being includable within the relay-chain block and can focus any additional resources on backing candidates from those parathreads. Furthermore, Node-side code is aware of which validator group will be responsible for that thread. If the necessary conditions are reached for core reassignment, those candidates can be backed within the same block as the core being freed. - -Parathread claims, when scheduled onto a free core, may not result in a block pending availability. This may be due to collator error, networking timeout, or censorship by the validator group. In this case, the claims should be retried a certain number of times to give the collator a fair shot. - -## Storage - -Utility structs: - -```rust -// A claim on authoring the next block for a given parathread. -struct ParathreadClaim(ParaId, CollatorId); - -// An entry tracking a claim to ensure it does not pass the maximum number of retries. -struct ParathreadEntry { - claim: ParathreadClaim, - retries: u32, -} - -// A queued parathread entry, pre-assigned to a core. -struct QueuedParathread { - claim: ParathreadEntry, - /// offset within the set of para-threads ranged `0..config.parathread_cores`. - core_offset: u32, -} - -struct ParathreadQueue { - queue: Vec, - /// offset within the set of para-threads ranged `0..config.parathread_cores`. - next_core_offset: u32, -} - -enum CoreOccupied { - Parathread(ParathreadEntry), // claim & retries - Parachain, -} - -enum AssignmentKind { - Parachain, - Parathread(CollatorId, u32), -} - -struct CoreAssignment { - core: CoreIndex, - para_id: ParaId, - kind: AssignmentKind, - group_idx: GroupIndex, -} -// reasons a core might be freed. -enum FreedReason { - Concluded, - TimedOut, -} -``` - -Storage layout: - -```rust -/// All the validator groups. One for each core. Indices are into the `ActiveValidators` storage. -ValidatorGroups: Vec>; -/// A queue of upcoming claims and which core they should be mapped onto. -ParathreadQueue: ParathreadQueue; -/// One entry for each availability core. Entries are `None` if the core is not currently occupied. -/// The i'th parachain belongs to the i'th core, with the remaining cores all being -/// parathread-multiplexers. -AvailabilityCores: Vec>; -/// An index used to ensure that only one claim on a parathread exists in the queue or is -/// currently being handled by an occupied core. -ParathreadClaimIndex: Vec; -/// The block number where the session start occurred. Used to track how many group rotations have occurred. -SessionStartBlock: BlockNumber; -/// Currently scheduled cores - free but up to be occupied. -/// The value contained here will not be valid after the end of a block. -/// Runtime APIs should be used to determine scheduled cores -/// for the upcoming block. -Scheduled: Vec, // sorted ascending by CoreIndex. -``` - -## Session Change - -Session changes are the only time that configuration can change, and the [Configuration module](configuration.md)'s session-change logic is handled before this module's. We also lean on the behavior of the [Inclusion module](inclusion.md) which clears all its occupied cores on session change. Thus we don't have to worry about cores being occupied across session boundaries and it is safe to re-size the `AvailabilityCores` bitfield. - -Actions: - -1. Set `SessionStartBlock` to current block number + 1, as session changes are applied at the end of the block. -1. Clear all `Some` members of `AvailabilityCores`. Return all parathread claims to queue with retries un-incremented. -1. Set `configuration = Configuration::configuration()` (see [`HostConfiguration`](../types/runtime.md#host-configuration)) -1. Fetch `Shared::ActiveValidators` as AV. -1. Determine the number of cores & validator groups as `n_cores`. This is the maximum of - 1. `Paras::parachains().len() + configuration.parathread_cores` - 1. `n_validators / max_validators_per_core` if `configuration.max_validators_per_core` is `Some` and non-zero. -1. Resize `AvailabilityCores` to have length `n_cores` with all `None` entries. -1. Compute new validator groups by shuffling using a secure randomness beacon - - Note that the total number of validators `V` in AV may not be evenly divided by `n_cores`. - - The groups are selected by partitioning AV. The first V % N groups will have (V / n_cores) + 1 members, while the remaining groups will have (V / N) members each. - - Instead of using the indices within AV, which point to the broader set, indices _into_ AV should be used. This implies that groups should have simply ascending validator indices. -1. Prune the parathread queue to remove all retries beyond `configuration.parathread_retries`. - - Also prune all parathread claims corresponding to de-registered parathreads. - - all pruned claims should have their entry removed from the parathread index. - - assign all non-pruned claims to new cores if the number of parathread cores has changed between the `new_config` and `old_config` of the `SessionChangeNotification`. - - Assign claims in equal balance across all cores if rebalancing, and set the `next_core` of the `ParathreadQueue` by incrementing the relative index of the last assigned core and taking it modulo the number of parathread cores. - -## Initialization - -No initialization routine runs for this module. - -## Finalization - -No finalization routine runs for this module. - -## Routines - -- `add_parathread_claim(ParathreadClaim)`: Add a parathread claim to the queue. - - Fails if any parathread claim on the same parathread is currently indexed. - - Fails if the queue length is >= `config.scheduling_lookahead * config.parathread_cores`. - - The core used for the parathread claim is the `next_core` field of the `ParathreadQueue` and adding `Paras::parachains().len()` to it. - - `next_core` is then updated by adding 1 and taking it modulo `config.parathread_cores`. - - The claim is then added to the claim index. -- `schedule(Vec<(CoreIndex, FreedReason)>, now: BlockNumber)`: schedule new core assignments, with a parameter indicating previously-occupied cores which are to be considered returned and why they are being returned. - - All freed parachain cores should be assigned to their respective parachain - - All freed parathread cores whose reason for freeing was `FreedReason::Concluded` should have the claim removed from the claim index. - - All freed parathread cores whose reason for freeing was `FreedReason::TimedOut` should have the claim added to the parathread queue again without retries incremented - - All freed parathread cores should take the next parathread entry from the queue. - - The i'th validator group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the total number of cores. This makes upcoming rotations within the same session predictable. Rotations are based off of `now`. -- `scheduled() -> Vec`: Get currently scheduled core assignments. -- `occupied(Vec)`. Note that the given cores have become occupied. - - Behavior undefined if any given cores were not scheduled. - - Behavior undefined if the given cores are not sorted ascending by core index - - This clears them from `Scheduled` and marks each corresponding `core` in the `AvailabilityCores` as occupied. - - Since both the availability cores and the newly-occupied cores lists are sorted ascending, this method can be implemented efficiently. -- `core_para(CoreIndex) -> ParaId`: return the currently-scheduled or occupied ParaId for the given core. -- `group_validators(GroupIndex) -> Option>`: return all validators in a given group, if the group index is valid for this session. -- `availability_timeout_predicate() -> Option bool>`: returns an optional predicate that should be used for timing out occupied cores. if `None`, no timing-out should be done. The predicate accepts the index of the core, and the block number since which it has been occupied. The predicate should be implemented based on the time since the last validator group rotation, and the respective parachain and parathread timeouts, i.e. only within `max(config.chain_availability_period, config.thread_availability_period)` of the last rotation would this return `Some`. -- `group_rotation_info(now: BlockNumber) -> GroupRotationInfo`: Returns a helper for determining group rotation. -- `next_up_on_available(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it became available. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For parachains, this is always the ID of the parachain and no specified collator. For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that core, and is `None` if there isn't one. -- `next_up_on_time_out(CoreIndex) -> Option`: Return the next thing that will be scheduled on this core assuming it is currently occupied and the candidate occupying it timed out. Returns in `ScheduledCore` format (todo: link to Runtime APIs page; linkcheck doesn't allow this right now). For parachains, this is always the ID of the parachain and no specified collator. For parathreads, this is based on the next item in the `ParathreadQueue` assigned to that core, or if there isn't one, the claim that is currently occupying the core. Otherwise `None`. -- `clear()`: - - Free all scheduled cores and return parathread claims to queue, with retries incremented. Skip parathreads which no longer exist under paras. diff --git a/roadmap/implementers-guide/src/runtime/session_info.md b/roadmap/implementers-guide/src/runtime/session_info.md deleted file mode 100644 index a37f61af08d7..000000000000 --- a/roadmap/implementers-guide/src/runtime/session_info.md +++ /dev/null @@ -1,55 +0,0 @@ -# Session Info - -For disputes and approvals, we need access to information about validator sets from prior sessions. We also often want easy access to the same information about the current session's validator set. This module aggregates and stores this information in a rolling window while providing easy APIs for access. - -## Storage - -Helper structs: - -```rust -struct SessionInfo { - // validators in canonical ordering. These are the public keys used for backing, - // dispute participation, and approvals. - validators: Vec, - // validators' authority discovery keys for the session in canonical ordering. - discovery_keys: Vec, - // The assignment keys for validators. - assignment_keys: Vec, - // validators in shuffled ordering - these are the validator groups as produced - // by the `Scheduler` module for the session and are typically referred to by - // `GroupIndex`. - validator_groups: Vec>, - // The number of availability cores used by the protocol during this session. - n_cores: u32, - // the zeroth delay tranche width. - zeroth_delay_tranche_width: u32, - // The number of samples we do of relay_vrf_modulo. - relay_vrf_modulo_samples: u32, - // The number of delay tranches in total. - n_delay_tranches: u32, - // How many slots (BABE / SASSAFRAS) must pass before an assignment is considered a - // no-show. - no_show_slots: u32, - /// The number of validators needed to approve a block. - needed_approvals: u32, -} -``` - -Storage Layout: - -```rust -/// The earliest session for which previous session info is stored. -EarliestStoredSession: SessionIndex, -/// Session information. Should have an entry from `EarliestStoredSession..=CurrentSessionIndex` -Sessions: map SessionIndex => Option, -``` - -## Session Change - -1. Update `EarliestStoredSession` based on `config.dispute_period` and remove all entries from `Sessions` from the previous value up to the new value. -1. Create a new entry in `Sessions` with information about the current session. Use `shared::ActiveValidators` to determine the indices into the broader validator sets (validation, assignment, discovery) which are actually used for parachain validation. Only these validators should appear in the `SessionInfo`. - -## Routines - -* `earliest_stored_session() -> SessionIndex`: Yields the earliest session for which we have information stored. -* `session_info(session: SessionIndex) -> Option`: Yields the session info for the given session, if stored. diff --git a/roadmap/implementers-guide/src/runtime/shared.md b/roadmap/implementers-guide/src/runtime/shared.md deleted file mode 100644 index ae538928d5fe..000000000000 --- a/roadmap/implementers-guide/src/runtime/shared.md +++ /dev/null @@ -1,62 +0,0 @@ -# Shared Module - -This module is responsible for managing shared storage and configuration for other modules. - -It is important that other pallets are able to use the Shared Module, so it should not have a -dependency on any other modules in the Parachains Runtime. - -For the moment, it is used exclusively to track the current session index across the Parachains -Runtime system, and when it should be allowed to schedule future changes to Paras or Configurations. - -## Constants - -```rust -// `SESSION_DELAY` is used to delay any changes to Paras registration or configurations. -// Wait until the session index is 2 larger then the current index to apply any changes, -// which guarantees that at least one full session has passed before any changes are applied. -pub(crate) const SESSION_DELAY: SessionIndex = 2; -``` - -## Storage - -```rust -/// The current session index within the Parachains Runtime system. -CurrentSessionIndex: SessionIndex; -/// All the validators actively participating in parachain consensus. -/// Indices are into the broader validator set. -ActiveValidatorIndices: Vec, -/// The parachain attestation keys of the validators actively participating in parachain consensus. -/// This should be the same length as `ActiveValidatorIndices`. -ActiveValidatorKeys: Vec -``` - -## Initialization - -The Shared Module currently has no initialization routines. - -The Shared Module is initialized directly after the Configuration module, but before all other -modules. It is important to update the Shared Module before any other module since its state may be -used within the logic of other modules, and it is important that the state is consistent across -them. - -## Session Change - -During a session change, the Shared Module receives and stores the current Session Index directly from the initializer module, along with the broader validator set, and it returns the new list of validators. - -The list of validators should be first shuffled according to the chain's random seed and then truncated. The indices of these validators should be set to `ActiveValidatorIndices` and then returned back to the initializer. `ActiveValidatorKeys` should be set accordingly. - -This information is used in the: - -* Configuration Module: For delaying updates to configurations until at lease one full session has - passed. -* Paras Module: For delaying updates to paras until at least one full session has passed. - -## Finalization - -The Shared Module currently has no finalization routines. - -## Functions - -* `scheduled_sessions() -> SessionIndex`: Return the next session index where updates to the - Parachains Runtime system would be safe to apply. -* `set_session_index(SessionIndex)`: For tests. Set the current session index in the Shared Module. diff --git a/roadmap/implementers-guide/src/runtime/ump.md b/roadmap/implementers-guide/src/runtime/ump.md deleted file mode 100644 index 79e06e5ed0af..000000000000 --- a/roadmap/implementers-guide/src/runtime/ump.md +++ /dev/null @@ -1,87 +0,0 @@ -# UMP Module - -A module responsible for Upward Message Passing (UMP). See [Messaging Overview](../messaging.md) for more details. - -## Storage - -Storage related to UMP - -```rust -/// The messages waiting to be handled by the relay-chain originating from a certain parachain. -/// -/// Note that some upward messages might have been already processed by the inclusion logic. E.g. -/// channel management messages. -/// -/// The messages are processed in FIFO order. -RelayDispatchQueues: map ParaId => Vec; -/// Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`. -/// -/// First item in the tuple is the count of messages and second -/// is the total length (in bytes) of the message payloads. -/// -/// Note that this is an auxilary mapping: it's possible to tell the byte size and the number of -/// messages only looking at `RelayDispatchQueues`. This mapping is separate to avoid the cost of -/// loading the whole message queue if only the total size and count are required. -/// -/// Invariant: -/// - The set of keys should exactly match the set of keys of `RelayDispatchQueues`. -RelayDispatchQueueSize: map ParaId => (u32, u32); // (num_messages, total_bytes) -/// The ordered list of `ParaId`s that have a `RelayDispatchQueue` entry. -/// -/// Invariant: -/// - The set of items from this vector should be exactly the set of the keys in -/// `RelayDispatchQueues` and `RelayDispatchQueueSize`. -NeedsDispatch: Vec; -/// This is the para that gets dispatched first during the next upward dispatchable queue -/// execution round. -/// -/// Invariant: -/// - If `Some(para)`, then `para` must be present in `NeedsDispatch`. -NextDispatchRoundStartWith: Option; -``` - - -## Initialization - -No initialization routine runs for this module. - -## Routines - -Candidate Acceptance Function: - -* `check_upward_messages(P: ParaId, Vec`): - 1. Checks that there are at most `config.max_upward_message_num_per_candidate` messages. - 1. Checks that no message exceeds `config.max_upward_message_size`. - 1. Verify that `RelayDispatchQueueSize` for `P` has enough capacity for the messages - -Candidate Enactment: - -* `receive_upward_messages(P: ParaId, Vec)`: - 1. Process each upward message `M` in order: - 1. Append the message to `RelayDispatchQueues` for `P` - 1. Increment the size and the count in `RelayDispatchQueueSize` for `P`. - 1. Ensure that `P` is present in `NeedsDispatch`. - -The following routine is meant to execute pending entries in upward message queues. This function doesn't fail, even if -dispatching any of individual upward messages returns an error. - -`process_pending_upward_messages()`: - 1. Initialize a cumulative weight counter `T` to 0 - 1. Iterate over items in `NeedsDispatch` cyclically, starting with `NextDispatchRoundStartWith`. If the item specified is `None` start from the beginning. For each `P` encountered: - 1. Dequeue the first upward message `D` from `RelayDispatchQueues` for `P` - 1. Decrement the size of the message from `RelayDispatchQueueSize` for `P` - 1. Delegate processing of the message to the runtime. The weight consumed is added to `T`. - 1. If `T >= config.ump_service_total_weight`, set `NextDispatchRoundStartWith` to `P` and finish processing. - 1. If `RelayDispatchQueues` for `P` became empty, remove `P` from `NeedsDispatch`. - 1. If `NeedsDispatch` became empty then finish processing and set `NextDispatchRoundStartWith` to `None`. - > NOTE that in practice we would need to approach the weight calculation more thoroughly, i.e. incorporate all operations - > that could take place on the course of handling these upward messages. - -## Session Change - -1. For each `P` in `outgoing_paras` (generated by `Paras::on_new_session`): - 1. Remove `RelayDispatchQueueSize` of `P`. - 1. Remove `RelayDispatchQueues` of `P`. - 1. Remove `P` if it exists in `NeedsDispatch`. - 1. If `P` is in `NextDispatchRoundStartWith`, then reset it to `None` - - Note that if we don't remove the open/close requests since they are going to die out naturally at the end of the session. diff --git a/roadmap/implementers-guide/src/types/README.md b/roadmap/implementers-guide/src/types/README.md deleted file mode 100644 index 7c8bec153527..000000000000 --- a/roadmap/implementers-guide/src/types/README.md +++ /dev/null @@ -1,432 +0,0 @@ -# Type Definitions - -This section of the guide provides type definitions of various categories. - -## V1 Overview - -Diagrams are rendered in high resolution; open them in a separate tab to see full scale. - -These data types are defined in `polkadot/primitives/src/v1.rs`: - -```dot process -digraph { - rankdir = LR; - node [shape = plain] - - CandidateDescriptor [label = < - - - - - - - - - -
CandidateDescriptor<H = Hash>
para_idId
relay_parentH
collatorCollatorId
persisted_validation_data_hashHash
pov_hashHash
erasure_rootHash
signatureCollatorSignature
- >] - - CandidateDescriptor:para_id -> Id:w - CandidateDescriptor:pov_hash -> PoVHash - CandidateDescriptor:collator -> CollatorId:w - CandidateDescriptor:persisted_validation_data_hash -> PersistedValidationDataHash - - Id [label="polkadot_parachain::primitives::Id"] - CollatorId [label="polkadot_primitives::v0::CollatorId"] - - PoVHash [label = "Hash", shape="doublecircle", fill="gray90"] - - PoVHash -> PoV:name - - CandidateReceipt [label = < - - - - -
CandidateReceipt<H = Hash>
descriptorCandidateDescriptor<H>
commitments_hashHash
- >] - - CandidateReceipt:descriptor -> CandidateDescriptor:name - CandidateReceipt:commitments_hash -> CandidateCommitmentsHash - - CandidateHash [label = "Hash", shape="doublecircle", fill="gray90"] - CandidateHash -> CandidateReceipt:name - - CandidateCommitmentsHash [label = "Hash", shape="doublecircle", fill="gray90"] - CandidateCommitmentsHash -> CandidateCommitments:name - - FullCandidateReceipt [label = < - - - - -
FullCandidateReceipt<H = Hash, N = BlockNumber>
innerCandidateReceipt<H>
validation_dataValidationData<N>
- >] - - FullCandidateReceipt:inner -> CandidateReceipt:name - FullCandidateReceipt:validation_data -> ValidationData:name - - CommittedCandidateReceipt [label = < - - - - -
CommittedCandidateReceipt<H = Hash>
descriptorCandidateDescriptor<H>
commitmentsCandidateCommitments
- >] - - CommittedCandidateReceipt:descriptor -> CandidateDescriptor:name - CommittedCandidateReceipt:commitments -> CandidateCommitments:name - - ValidationData [label = < - - - - -
ValidationData<N = BlockNumber>
persistedPersistedValidationData<N>
transientTransientValidationData<N>
- >] - - ValidationData:persisted -> PersistedValidationData:name - ValidationData:transient -> TransientValidationData:name - - PersistedValidationData [label = < - - - - - - -
PersistedValidationData<N = BlockNumber>
parent_headHeadData
block_numberN
relay_parent_storage_rootHash
max_pov_sizeu32
- >] - - PersistedValidationData:parent_head -> HeadData:w - - PersistedValidationDataHash [label = "Hash", shape="doublecircle", fill="gray90"] - PersistedValidationDataHash -> PersistedValidationData:name - - TransientValidationData [label = < - - - - - - - -
TransientValidationData<N = BlockNumber>
max_code_sizeu32
max_head_data_sizeu32
balanceBalance
code_upgrade_allowedOption<N>
dmq_lengthu32
- >] - - TransientValidationData:balance -> "polkadot_core_primitives::v1::Balance":w - - CandidateCommitments [label = < - - - - - - - - -
CandidateCommitments<N = BlockNumber>
upward_messagesVec<UpwardMessage>
horizontal_messagesVec<OutboundHrmpMessage<Id>>
new_validation_codeOption<ValidationCode>
head_dataHeadData
processed_downward_messagesu32
hrmp_watermarkN
- >] - - CandidateCommitments:upward_messages -> "polkadot_parachain::primitives::UpwardMessage":w - CandidateCommitments:horizontal_messages -> "polkadot_core_primitives::v1::OutboundHrmpMessage":w - CandidateCommitments:head_data -> HeadData:w - CandidateCommitments:horizontal_messages -> "polkadot_parachain::primitives::Id":w - CandidateCommitments:new_validation_code -> "polkadot_parachain::primitives::ValidationCode":w - - PoV [label = < - - - -
PoV
block_dataBlockData
- >] - - PoV:block_data -> "polkadot_parachain::primitives::BlockData":w - - BackedCandidate [label = < - - - - - -
BackedCandidate<H = Hash>
candidateCommittedCandidateReceipt<H>
validity_votesVec<ValidityAttestation>
validator_indicesBitVec
- >] - - BackedCandidate:candidate -> CommittedCandidateReceipt:name - BackedCandidate:validity_votes -> "polkadot_primitives:v0:ValidityAttestation":w - - HeadData [label = "polkadot_parachain::primitives::HeadData"] - - CoreIndex [label = < - - - -
CoreIndex
0u32
- >] - - GroupIndex [label = < - - - -
GroupIndex
0u32
- >] - - ParathreadClaim [label = < - - - - -
ParathreadClaim
0Id
1CollatorId
- >] - - ParathreadClaim:0 -> Id:w - ParathreadClaim:1 -> CollatorId:w - - MessageQueueChainLink [label = "(prev_head, B, H(M))\nSee doc of AbridgedHrmpChannel::mqc_head"] - MQCHash [label = "Hash", shape="doublecircle", fill="gray90"] - - MQCHash -> MessageQueueChainLink - - ParathreadEntry [label = < - - - - -
ParathreadEntry
claimParathreadClaim
retriesu32
- >] - - ParathreadEntry:claim -> ParathreadClaim:name - - CoreOccupied [label = < - - - - -
enum CoreOccupied
Parathread(ParathreadEntry)
Parachain
- >] - - CoreOccupied:parathread -> ParathreadEntry:name - - AvailableData [label = < - - - - -
AvailableData
povArc<PoV>
validation_dataPersistedValidationData
- >] - - AvailableData:pov -> PoV:name - AvailableData:validation_data -> PersistedValidationData:name - - GroupRotationInfo [label = < - - - - - -
GroupRotationInfo<N = BlockNumber>
session_start_blockN
group_rotation_frequencyN
nowN
- >] - - OccupiedCore [label = < - - - - - - - - - - -
OccupiedCore<H = Hash, N = BlockNumber>
next_up_on_availableOption<ScheduledCore>
occupied_sinceN
time_out_atN
next_up_on_time_outOption<ScheduledCore>
availabilityBitVec
group_responsibleGroupIndex
candidate_hashCandidateHash
candidate_descriptorCandidateDescriptor
- >] - - OccupiedCore:next_up_on_available -> ScheduledCore:name - OccupiedCore:next_up_on_time_out -> ScheduledCore:name - OccupiedCore:group_responsible -> GroupIndex - OccupiedCore:candidate_hash -> CandidateHash - OccupiedCore:candidate_descriptor -> CandidateDescriptor:name - - ScheduledCore [label = < - - - - -
ScheduledCore
para_idId
collatorOption<CollatorId>
- >] - - ScheduledCore:para_id -> Id:w - ScheduledCore:collator -> CollatorId:w - - CoreState [label = < - - - - - -
enum CoreState<H = Hash, N = BlockNumber>
Occupied(OccupiedCore<H, N>)
Scheduled(ScheduledCore)
Free
- >] - - CoreState:occupied -> OccupiedCore:name - CoreState:scheduled -> ScheduledCore:name - - CandidateEvent [label = < - - - - - -
enum CandidateEvent<H = Hash>
CandidateBacked(CandidateReceipt<H>, HeadData)
CandidateIncluded(CandidateReceipt<H>, HeadData)
CandidateTimedOut(CandidateReceipt<H>, HeadData)
- >] - - CandidateEvent:e -> CandidateReceipt:name - CandidateEvent:e -> HeadData:w - - SessionInfo [label = < - - - - - - - - - - - - -
SessionInfo
validatorsVec<ValidatorId>
discovery_keysVec<AuthorityDiscoveryId>
assignment_keysVec<AssignmentId>
validator_groupsVec<Vec<ValidatorIndex>>
n_coresu32
zeroth_delay_tranche_widthu32
relay_vrf_modulo_samplesu32
n_delay_tranchesu32
no_show_slotsu32
needed_approvalsu32
- >] - - SessionInfo:validators -> ValidatorId:w - SessionInfo:discovery_keys -> AuthorityDiscoveryId:w - SessionInfo:validator_groups -> ValidatorIndex:w - - ValidatorId [label = "polkadot_primitives::v0::ValidatorId"] - AuthorityDiscoveryId [label = "sp_authority_discovery::AuthorityId"] - ValidatorIndex [label = "polkadot_primitives::v0::ValidatorIndex"] - - AbridgedHostConfiguration [label = < - - - - - - - - - - - -
AbridgedHostConfiguration
max_code_sizeu32
max_head_data_sizeu32
max_upward_queue_countu32
max_upward_queue_sizeu32
max_upward_message_sizeu32
max_upward_messages_num_per_candidateu32
hrmp_max_message_num_per_candidateu32
validation_upgrade_frequencyBlockNumber
validation_upgrade_delayBlockNumber
- >] - - AbridgedHrmpChannel [label = < - - - - - - - - -
AbridgedHrmpChannel
max_capacityu32
max_total_sizeu32
max_message_sizeu32
msg_countu32
total_sizeu32
mqc_headOption<Hash>
- >] - - AbridgedHrmpChannel:mqc_head -> MQCHash -} -``` - -These data types are defined in `polkadot/parachain/src/primitives.rs`: - -```dot process -digraph { - rankdir = LR; - node [shape = plain] - - HeadData [label = < - - - -
HeadData
0Vec<u8>
- >] - - ValidationCode [label = < - - - -
ValidationCode
0Vec<u8>
- >] - - BlockData [label = < - - - -
BlockData
0Vec<u8>
- >] - - Id [label = < - - - -
Id
0u32
- >] - - Sibling [label = < - - - -
Sibling
0Id
- >] - - Sibling:0 -> Id:name - - HrmpChannelId [label = < - - - - -
HrmpChannelId
senderId
recipientId
- >] - - HrmpChannelId:e -> Id:name - - ValidationParams [label = < - - - - - - -
ValidationParams
parent_headHeadData
block_dataBlockData
relay_parent_numberRelayChainBlockNumber
relay_parent_storage_rootHash
- >] - - ValidationParams:parent_head -> HeadData:name - ValidationParams:block_data -> BlockData:name - ValidationParams:relay_parent_number -> RelayChainBlockNumber:w - - RelayChainBlockNumber [label = "polkadot_core_primitives::BlockNumber"] - - ValidationResult [label = < - - - - - - - - -
ValidationResult
head_dataHeadData
new_validation_codeOption<ValidationCode>
upward_messagesVec<UpwardMessage>
horizontal_messagesVec<OutboundHrmpMessage<Id>>
processed_downward_messagesu32
hrmp_watermarkRelayChainBlockNumber
- >] - - ValidationResult:head_data -> HeadData:name - ValidationResult:new_validation_code -> ValidationCode:name - ValidationResult:upward_messages -> UpwardMessage:w - ValidationResult:horizontal_messages -> OutboundHrmpMessage:w - ValidationResult:horizontal_messages -> Id:name - ValidationResult:hrmp_watermark -> RelayChainBlockNumber:w - - UpwardMessage [label = "Vec"] - OutboundHrmpMessage [label = "polkadot_core_primitives::OutboundHrmpMessage"] -} -``` diff --git a/roadmap/implementers-guide/src/types/approval.md b/roadmap/implementers-guide/src/types/approval.md deleted file mode 100644 index 5cebd35b2837..000000000000 --- a/roadmap/implementers-guide/src/types/approval.md +++ /dev/null @@ -1,101 +0,0 @@ -# Approval Types - -## AssignmentId - -The public key of a keypair used by a validator for determining assignments to approve included parachain candidates. - -## AssignmentCert - -An `AssignmentCert`, short for Assignment Certificate, is a piece of data provided by a validator to prove that they have been selected to perform secondary approval checks on an included candidate. - -These certificates can be checked in the context of a specific block, candidate, and validator assignment VRF key. The block state will also provide further context about the availability core states at that block. - -```rust -enum AssignmentCertKind { - RelayVRFModulo { - sample: u32, - }, - RelayVRFDelay { - core_index: CoreIndex, - } -} - -struct AssignmentCert { - // The criterion which is claimed to be met by this cert. - kind: AssignmentCertKind, - // The VRF showing the criterion is met. - vrf: (VRFPreOut, VRFProof), -} -``` - -> TODO: RelayEquivocation cert. Probably can only be broadcast to chains that have handled an equivocation report. - -## IndirectAssignmentCert - -An assignment cert which refers to the candidate under which the assignment is relevant by block hash. - -```rust -struct IndirectAssignmentCert { - // A block hash where the candidate appears. - block_hash: Hash, - validator: ValidatorIndex, - cert: AssignmentCert, -} -``` - -## ApprovalVote - -A vote of approval on a candidate. - -```rust -struct ApprovalVote(Hash); -``` - -## SignedApprovalVote - -An approval vote signed with a validator's key. This should be verifiable under the `ValidatorId` corresponding to the `ValidatorIndex` of the session, which should be implicit from context. - -```rust -struct SignedApprovalVote { - vote: ApprovalVote, - validator: ValidatorIndex, - signature: ValidatorSignature, -} -``` - -## IndirectSignedApprovalVote - -A signed approval vote which references the candidate indirectly via the block. If there exists a look-up to the candidate hash from the block hash and candidate index, then this can be transformed into a `SignedApprovalVote`. - -Although this vote references the candidate by a specific block hash and candidate index, the signature is computed on the actual `SignedApprovalVote` payload. - -```rust -struct IndirectSignedApprovalVote { - // A block hash where the candidate appears. - block_hash: Hash, - // The index of the candidate in the list of candidates fully included as-of the block. - candidate_index: CandidateIndex, - validator: ValidatorIndex, - signature: ValidatorSignature, -} -``` - -## CheckedAssignmentCert - -An assignment cert which has checked both the VRF and the validity of the implied assignment according to the selection criteria rules of the protocol. This type should be declared in such a way as to be instantiable only when the checks have actually been done. Fields should be accessible via getters, not direct struct access. - -```rust -struct CheckedAssignmentCert { - cert: AssignmentCert, - validator: ValidatorIndex, - relay_block: Hash, - candidate_hash: Hash, - delay_tranche: DelayTranche, -} -``` - -## DelayTranche - -```rust -type DelayTranche = u32; -``` diff --git a/roadmap/implementers-guide/src/types/availability.md b/roadmap/implementers-guide/src/types/availability.md deleted file mode 100644 index e2b90e86f43f..000000000000 --- a/roadmap/implementers-guide/src/types/availability.md +++ /dev/null @@ -1,65 +0,0 @@ -# Availability - -One of the key roles of validators is to ensure availability of all data necessary to validate -candidates for the duration of a challenge period. This is done via an erasure-coding of the data to keep available. - -## Signed Availability Bitfield - -A bitfield [signed](backing.md#signed-wrapper) by a particular validator about the availability of pending candidates. - - -```rust -type SignedAvailabilityBitfield = Signed; - -struct Bitfields(Vec<(SignedAvailabilityBitfield)>), // bitfields sorted by validator index, ascending -``` - -### Semantics - -A `SignedAvailabilityBitfield` represents the view from a particular validator's perspective. Each bit in the bitfield corresponds to a single [availability core](../runtime-api/availability-cores.md). A `1` bit indicates that the validator believes the following statements to be true for a core: - -- the availability core is occupied -- there exists a [`CommittedCandidateReceipt`](candidate.html#committed-candidate-receipt) corresponding to that core. In other words, that para has a block in progress. -- the validator's [Availability Store](../node/utility/availability-store.md) contains a chunk of that parablock's PoV. - -In other words, it is the transpose of [`OccupiedCore::availability`](../runtime-api/availability-cores.md). - -## Proof-of-Validity - -Often referred to as PoV, this is a type-safe wrapper around bytes (`Vec`) when referring to data that acts as a stateless-client proof of validity of a candidate, when used as input to the validation function of the para. - -```rust -struct PoV(Vec); -``` - - -## Available Data - -This is the data we want to keep available for each [candidate](candidate.md) included in the relay chain. This is the PoV of the block, as well as the [`PersistedValidationData`](candidate.md#persistedvalidationdata) - -```rust -struct AvailableData { - /// The Proof-of-Validation of the candidate. - pov: Arc, - /// The persisted validation data used to check the candidate. - validation_data: PersistedValidationData, -} -``` - -> TODO: With XCMP, we also need to keep available the outgoing messages as a result of para-validation. - -## Erasure Chunk - -The [`AvailableData`](#availabledata) is split up into an erasure-coding as part of the availability process. Each validator gets a chunk. This describes one of those chunks, along with its proof against a merkle root hash, which should be apparent from context, and is the `erasure_root` field of a [`CandidateDescriptor`](candidate.md#candidatedescriptor). - - -```rust -struct ErasureChunk { - /// The erasure-encoded chunk of data belonging to the candidate block. - chunk: Vec, - /// The index of this erasure-encoded chunk of data. - index: u32, - /// Proof for this chunk's branch in the Merkle tree. - proof: Vec>, -} -``` diff --git a/roadmap/implementers-guide/src/types/backing.md b/roadmap/implementers-guide/src/types/backing.md deleted file mode 100644 index 5fcb3ae161b6..000000000000 --- a/roadmap/implementers-guide/src/types/backing.md +++ /dev/null @@ -1,116 +0,0 @@ -# Backing Types - -[Candidates](candidate.md) go through many phases before being considered included in a fork of the relay chain and eventually accepted. - -These types describe the data used in the backing phase. Some are sent over the wire within subsystems, and some are simply included in the relay-chain block. - -## Validity Attestation - -An attestation of validity for a candidate, used as part of a backing. Both the `Seconded` and `Valid` statements are considered attestations of validity. This structure is only useful where the candidate referenced is apparent. - -```rust -enum ValidityAttestation { - /// Implicit validity attestation by issuing. - /// This corresponds to issuance of a `Seconded` statement. - Implicit(ValidatorSignature), - /// An explicit attestation. This corresponds to issuance of a - /// `Valid` statement. - Explicit(ValidatorSignature), -} -``` - -## Signed Wrapper - -There are a few distinct types which we desire to sign, and validate the signatures of. Instead of duplicating this work, we extract a signed wrapper. - -```rust,ignore -/// A signed type which encapsulates the common desire to sign some data and validate a signature. -/// -/// Note that the internal fields are not public; they are all accessable by immutable getters. -/// This reduces the chance that they are accidentally mutated, invalidating the signature. -struct Signed { - /// The payload is part of the signed data. The rest is the signing context, - /// which is known both at signing and at validation. - payload: Payload, - /// The index of the validator signing this statement. - validator_index: ValidatorIndex, - /// The signature by the validator of the signed payload. - signature: ValidatorSignature, -} - -impl, RealPayload: Encode> Signed { - fn sign(payload: Payload, context: SigningContext, index: ValidatorIndex, key: ValidatorPair) -> Signed { ... } - fn validate(&self, context: SigningContext, key: ValidatorId) -> bool { ... } -} -``` - -Note the presence of the [`SigningContext`](../types/candidate.md#signing-context) in the signatures of the `sign` and `validate` methods. To ensure cryptographic security, the actual signed payload is always the SCALE encoding of `(payload.into(), signing_context)`. Including the signing context prevents replay attacks. - -`EncodeAs` is a helper trait with a blanket impl which ensures that any `T` can `EncodeAs`. Therefore, for the generic case where `RealPayload = Payload`, it changes nothing. However, we `impl EncodeAs for Statement`, which helps efficiency. - -## Statement Type - -The [Candidate Backing subsystem](../node/backing/candidate-backing.md) issues and signs these after candidate validation. - -```rust -/// A statement about the validity of a parachain candidate. -enum Statement { - /// A statement about a new candidate being seconded by a validator. This is an implicit validity vote. - /// - /// The main semantic difference between `Seconded` and `Valid` comes from the fact that every validator may - /// second only 1 candidate; this places an upper bound on the total number of candidates whose validity - /// needs to be checked. A validator who seconds more than 1 parachain candidate per relay head is subject - /// to slashing. - Seconded(CommittedCandidateReceipt), - /// A statement about the validity of a candidate, based on candidate's hash. - Valid(Hash), -} - -/// A statement about the validity of a parachain candidate. -/// -/// This variant should only be used in the production of `SignedStatement`s. The only difference between -/// this enum and `Statement` is that the `Seconded` variant contains a `Hash` instead of a `CandidateReceipt`. -/// The rationale behind the difference is that the signature should always be on the hash instead of the -/// full data, as this lowers the requirement for checking while retaining necessary cryptographic properties -enum CompactStatement { - /// A statement about a new candidate being seconded by a validator. This is an implicit validity vote. - Seconded(Hash), - /// A statement about the validity of a candidate, based on candidate's hash. - Valid(Hash), -} -``` - -`CompactStatement` exists because a `CandidateReceipt` includes `HeadData`, which does not have a bounded size. - -## Signed Statement Type - -A statement which has been [cryptographically signed](#signed-wrapper) by a validator. - -```rust -/// A signed statement, containing the committed candidate receipt in the `Seconded` variant. -pub type SignedFullStatement = Signed; - -/// A signed statement, containing only the hash. -pub type SignedStatement = Signed; -``` - -Munging the signed `Statement` into a `CompactStatement` before signing allows the candidate receipt itself to be omitted when checking a signature on a `Seconded` statement. - -## Backed Candidate - -An [`CommittedCandidateReceipt`](candidate.md#committed-candidate-receipt) along with all data necessary to prove its backing. This is submitted to the relay-chain to process and move along the candidate to the pending-availability stage. - -```rust -struct BackedCandidate { - candidate: CommittedCandidateReceipt, - validity_votes: Vec, - // the indices of validators who signed the candidate within the group. There is no need to include - // bit for any validators who are not in the group, so this is more compact. - // The number of bits is the number of validators in the group. - // - // the group should be apparent from context. - validator_indices: BitVec, -} - -struct BackedCandidates(Vec); // sorted by para-id. -``` diff --git a/roadmap/implementers-guide/src/types/candidate.md b/roadmap/implementers-guide/src/types/candidate.md deleted file mode 100644 index 5dccfb6c40b9..000000000000 --- a/roadmap/implementers-guide/src/types/candidate.md +++ /dev/null @@ -1,170 +0,0 @@ -# Candidate Types - -Para candidates are some of the most common types, both within the runtime and on the Node-side. -Candidates are the fundamental datatype for advancing parachains and parathreads, encapsulating the collator's signature, the context of the parablock, the commitments to the output, and a commitment to the data which proves it valid. - -In a way, this entire guide is about these candidates: how they are scheduled, constructed, backed, included, and challenged. - -This section will describe the base candidate type, its components, and variants that contain extra data. - -## Para Id - -A unique 32-bit identifier referring to a specific para (chain or thread). The relay-chain runtime guarantees that `ParaId`s are unique for the duration of any session, but recycling and reuse over a longer period of time is permitted. - -```rust -struct ParaId(u32); -``` - -## Candidate Receipt - -Much info in a [`FullCandidateReceipt`](#full-candidate-receipt) is duplicated from the relay-chain state. When the corresponding relay-chain state is considered widely available, the Candidate Receipt should be favored over the `FullCandidateReceipt`. - -Examples of situations where the state is readily available includes within the scope of work done by subsystems working on a given relay-parent, or within the logic of the runtime importing a backed candidate. - -```rust -/// A candidate-receipt. -struct CandidateReceipt { - /// The descriptor of the candidate. - descriptor: CandidateDescriptor, - /// The hash of the encoded commitments made as a result of candidate execution. - commitments_hash: Hash, -} -``` - -## Full Candidate Receipt - -This is the full receipt type. The `PersistedValidationData` are technically redundant with the `inner.relay_parent`, which uniquely describes the block in the blockchain from whose state these values are derived. The [`CandidateReceipt`](#candidate-receipt) variant is often used instead for this reason. - -However, the Full Candidate Receipt type is useful as a means of avoiding the implicit dependency on availability of old blockchain state. In situations such as availability and approval, having the full description of the candidate within a self-contained struct is convenient. - -```rust -/// All data pertaining to the execution of a para candidate. -struct FullCandidateReceipt { - inner: CandidateReceipt, - validation_data: PeristedValidationData, -} -``` - -## Committed Candidate Receipt - -This is a variant of the candidate receipt which includes the commitments of the candidate receipt alongside the descriptor. This should be favored over the [`Candidate Receipt`](#candidate-receipt) in situations where the candidate is not going to be executed but the actual data committed to is important. This is often the case in the backing phase. - -The hash of the committed candidate receipt will be the same as the corresponding [`Candidate Receipt`](#candidate-receipt), because it is computed by first hashing the encoding of the commitments to form a plain [`Candidate Receipt`](#candidate-receipt). - -```rust -/// A candidate-receipt with commitments directly included. -struct CommittedCandidateReceipt { - /// The descriptor of the candidate. - descriptor: CandidateDescriptor, - /// The commitments of the candidate receipt. - commitments: CandidateCommitments, -} -``` - -## Candidate Descriptor - -This struct is pure description of the candidate, in a lightweight format. - -```rust -/// A unique descriptor of the candidate receipt. -struct CandidateDescriptor { - /// The ID of the para this is a candidate for. - para_id: ParaId, - /// The hash of the relay-chain block this is executed in the context of. - relay_parent: Hash, - /// The collator's sr25519 public key. - collator: CollatorId, - /// The blake2-256 hash of the persisted validation data. These are extra parameters - /// derived from relay-chain state that influence the validity of the block which - /// must also be kept available for secondary checkers. - persisted_validation_data_hash: Hash, - /// The blake2-256 hash of the pov-block. - pov_hash: Hash, - /// The root of a block's erasure encoding Merkle tree. - erasure_root: Hash, - /// Signature on blake2-256 of components of this receipt: - /// The parachain index, the relay parent, the validation data hash, and the pov_hash. - signature: CollatorSignature, - /// Hash of the para header that is being generated by this candidate. - para_head: Hash, - /// The blake2-256 hash of the validation code bytes. - validation_code_hash: ValidationCodeHash, -} -``` - -## PersistedValidationData - -The validation data provides information about how to create the inputs for validation of a candidate. This information is derived from the chain state and will vary from para to para, although some of the fields may be the same for every para. - -Since this data is used to form inputs to the validation function, it needs to be persisted by the availability system to avoid dependence on availability of the relay-chain state. - -Furthermore, the validation data acts as a way to authorize the additional data the collator needs to pass to the validation function. For example, the validation function can check whether the incoming messages (e.g. downward messages) were actually sent by using the data provided in the validation data using so called MQC heads. - -Since the commitments of the validation function are checked by the relay-chain, secondary checkers can rely on the invariant that the relay-chain only includes para-blocks for which these checks have already been done. As such, there is no need for the validation data used to inform validators and collators about the checks the relay-chain will perform to be persisted by the availability system. - -The `PersistedValidationData` should be relatively lightweight primarly because it is constructed during inclusion for each candidate and therefore lies on the critical path of inclusion. - -```rust -struct PersistedValidationData { - /// The parent head-data. - parent_head: HeadData, - /// The relay-chain block number this is in the context of. This informs the collator. - relay_parent_number: BlockNumber, - /// The relay-chain block storage root this is in the context of. - relay_parent_storage_root: Hash, - /// The list of MQC heads for the inbound channels paired with the sender para ids. This - /// vector is sorted ascending by the para id and doesn't contain multiple entries with the same - /// sender. - /// - /// The HRMP MQC heads will be used by the validation function to authorize the input messages passed - /// by the collator. - hrmp_mqc_heads: Vec<(ParaId, Hash)>, - /// The maximum legal size of a POV block, in bytes. - pub max_pov_size: u32, -} -``` - -## HeadData - -Head data is a type-safe abstraction around bytes (`Vec`) for the purposes of representing heads of parachains or parathreads. - -```rust -struct HeadData(Vec); -``` - -## Candidate Commitments - -The execution and validation of parachain or parathread candidates produces a number of values which either must be committed to on the relay chain or committed to the state of the relay chain. - -```rust -/// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Default))] -struct CandidateCommitments { - /// Messages directed to other paras routed via the relay chain. - horizontal_messages: Vec, - /// Messages destined to be interpreted by the Relay chain itself. - upward_messages: Vec, - /// New validation code. - new_validation_code: Option, - /// The head-data produced as a result of execution. - head_data: HeadData, - /// The number of messages processed from the DMQ. - processed_downward_messages: u32, - /// The mark which specifies the block number up to which all inbound HRMP messages are processed. - hrmp_watermark: BlockNumber, -} -``` - -## Signing Context - -This struct provides context to signatures by combining with various payloads to localize the signature to a particular session index and relay-chain hash. Having these fields included in the signature makes misbehavior attribution much simpler. - -```rust -struct SigningContext { - /// The relay-chain block hash this signature is in the context of. - parent_hash: Hash, - /// The session index this signature is in the context of. - session_index: SessionIndex, -} -``` diff --git a/roadmap/implementers-guide/src/types/chain.md b/roadmap/implementers-guide/src/types/chain.md deleted file mode 100644 index e8ec6cea8f4a..000000000000 --- a/roadmap/implementers-guide/src/types/chain.md +++ /dev/null @@ -1,30 +0,0 @@ -# Chain - -Types pertaining to the relay-chain - events, structures, etc. - -## Block Import Event - -```rust -/// Indicates that a new block has been added to the blockchain. -struct BlockImportEvent { - /// The block header-hash. - hash: Hash, - /// The header itself. - header: Header, - /// Whether this block is considered the head of the best chain according to the - /// event emitter's fork-choice rule. - new_best: bool, -} -``` - -## Block Finalization Event - -```rust -/// Indicates that a new block has been finalized. -struct BlockFinalizationEvent { - /// The block header-hash. - hash: Hash, - /// The header of the finalized block. - header: Header, -} -``` diff --git a/roadmap/implementers-guide/src/types/disputes.md b/roadmap/implementers-guide/src/types/disputes.md deleted file mode 100644 index becace642dfe..000000000000 --- a/roadmap/implementers-guide/src/types/disputes.md +++ /dev/null @@ -1,73 +0,0 @@ -# Disputes - -## DisputeStatementSet - -```rust -/// A set of statements about a specific candidate. -struct DisputeStatementSet { - candidate_hash: CandidateHash, - session: SessionIndex, - statements: Vec<(DisputeStatement, ValidatorIndex, ValidatorSignature)>, -} -``` - -## DisputeStatement - -```rust -/// A statement about a candidate, to be used within some dispute resolution process. -/// -/// Statements are either in favor of the candidate's validity or against it. -enum DisputeStatement { - /// A valid statement, of the given kind - Valid(ValidDisputeStatementKind), - /// An invalid statement, of the given kind. - Invalid(InvalidDisputeStatementKind), -} - -``` - -## Dispute Statement Kinds - -Kinds of dispute statements. Each of these can be combined with a candidate hash, session index, validator public key, and validator signature to reproduce and check the original statement. - -```rust -enum ValidDisputeStatementKind { - Explicit, - BackingSeconded, - BackingValid, - ApprovalChecking, -} - -enum InvalidDisputeStatementKind { - Explicit, -} -``` - -## ExplicitDisputeStatement - -```rust -struct ExplicitDisputeStatement { - valid: bool, - candidate_hash: CandidateHash, - session: SessionIndex, -} -``` - -## MultiDisputeStatementSet - -Sets of statements for many (zero or more) disputes. - -```rust -type MultiDisputeStatementSet = Vec; -``` - -## DisputeState - -```rust -struct DisputeState { - validators_for: Bitfield, // one bit per validator. - validators_against: Bitfield, // one bit per validator. - start: BlockNumber, - concluded_at: Option, -} -``` diff --git a/roadmap/implementers-guide/src/types/messages.md b/roadmap/implementers-guide/src/types/messages.md deleted file mode 100644 index 8ea58d14e85d..000000000000 --- a/roadmap/implementers-guide/src/types/messages.md +++ /dev/null @@ -1,74 +0,0 @@ -# Message types - -Types of messages that are passed between parachains and the relay chain: UMP, DMP, XCMP. - -There is also HRMP (Horizontally Relay-routed Message Passing) which provides the same functionality -although with smaller scalability potential. - -## Vertical Message Passing - -Types required for message passing between the relay-chain and a parachain. - -Actual contents of the messages is specified by the XCM standard. - -```rust,ignore -/// A message sent from a parachain to the relay-chain. -type UpwardMessage = Vec; - -/// A message sent from the relay-chain down to a parachain. -/// -/// The size of the message is limited by the `config.max_downward_message_size` -/// parameter. -type DownwardMessage = Vec; - -/// This struct extends `DownwardMessage` by adding the relay-chain block number when the message was -/// enqueued in the downward message queue. -struct InboundDownwardMessage { - /// The block number at which this messages was put into the downward message queue. - pub sent_at: BlockNumber, - /// The actual downward message to processes. - pub msg: DownwardMessage, -} -``` - -## Horizontal Message Passing - -## HrmpChannelId - -A type that uniquely identifies an HRMP channel. An HRMP channel is established between two paras. -In text, we use the notation `(A, B)` to specify a channel between A and B. The channels are -unidirectional, meaning that `(A, B)` and `(B, A)` refer to different channels. The convention is -that we use the first item tuple for the sender and the second for the recipient. Only one channel -is allowed between two participants in one direction, i.e. there cannot be 2 different channels -identified by `(A, B)`. - -```rust,ignore -struct HrmpChannelId { - sender: ParaId, - recipient: ParaId, -} -``` - -## Horizontal Message - -This is a message sent from a parachain to another parachain that travels through the relay chain. -This message ends up in the recipient's mailbox. A size of a horizontal message is defined by its -`data` payload. - -```rust,ignore -struct OutboundHrmpMessage { - /// The para that will get this message in its downward message queue. - pub recipient: ParaId, - /// The message payload. - pub data: Vec, -} - -struct InboundHrmpMessage { - /// The block number at which this message was sent. - /// Specifically, it is the block number at which the candidate that sends this message was - /// enacted. - pub sent_at: BlockNumber, - /// The message payload. - pub data: Vec, -} -``` diff --git a/roadmap/implementers-guide/src/types/network.md b/roadmap/implementers-guide/src/types/network.md deleted file mode 100644 index 4a71f42e1fbe..000000000000 --- a/roadmap/implementers-guide/src/types/network.md +++ /dev/null @@ -1,165 +0,0 @@ -# Network Types - -These types are those that are actually sent over the network to subsystems. - -## Universal Types - -```rust -type RequestId = u64; -type ProtocolVersion = u32; -struct PeerId(...); // opaque, unique identifier of a peer. -struct View { - // Up to `N` (5?) chain heads. - heads: Vec, - // The number of the finalized block. - finalized_number: BlockNumber, -} - -enum ObservedRole { - Full, - Light, -} -``` - -## V1 Network Subsystem Message Types - -### Approval Distribution V1 - -```rust -enum ApprovalDistributionV1Message { - /// Assignments for candidates in recent, unfinalized blocks. - /// - /// The u32 is the claimed index of the candidate this assignment corresponds to. Actually checking the assignment - /// may yield a different result. - Assignments(Vec<(IndirectAssignmentCert, u32)>), - /// Approvals for candidates in some recent, unfinalized block. - Approvals(Vec), -} -``` - -### Availability Distribution V1 - -```rust -enum AvailabilityDistributionV1Message { - /// An erasure chunk for a given candidate hash. - Chunk(CandidateHash, ErasureChunk), -} -``` - -### Availability Recovery V1 - -```rust -enum AvailabilityRecoveryV1Message { - /// Request a chunk for a given candidate hash and validator index. - RequestChunk(RequestId, CandidateHash, ValidatorIndex), - /// Respond with chunk for a given candidate hash and validator index. - /// The response may be `None` if the requestee does not have the chunk. - Chunk(RequestId, Option), - /// Request the full data for a given candidate hash. - RequestFullData(RequestId, CandidateHash), - /// Respond with data for a given candidate hash and validator index. - /// The response may be `None` if the requestee does not have the data. - FullData(RequestId, Option), - -} -``` - -### Bitfield Distribution V1 - -```rust -enum BitfieldDistributionV1Message { - /// A signed availability bitfield for a given relay-parent hash. - Bitfield(Hash, SignedAvailabilityBitfield), -} -``` - -### PoV Distribution V1 - -```rust -enum PoVDistributionV1Message { - /// Notification that we are awaiting the given PoVs (by hash) against a - /// specific relay-parent hash. - Awaiting(Hash, Vec), - /// Notification of an awaited PoV, in a given relay-parent context. - /// (relay_parent, pov_hash, pov) - SendPoV(Hash, Hash, PoV), -} -``` - -### Statement Distribution V1 - -```rust -enum StatementDistributionV1Message { - /// A signed full statement under a given relay-parent. - Statement(Hash, SignedFullStatement) -} -``` - -### Collator Protocol V1 - -```rust -enum CollatorProtocolV1Message { - /// Declare the intent to advertise collations under a collator ID and `Para`, attaching a - /// signature of the `PeerId` of the node using the given collator ID key. - Declare(CollatorId, ParaId, CollatorSignature), - /// Advertise a collation to a validator. Can only be sent once the peer has - /// declared that they are a collator with given ID. - AdvertiseCollation(Hash), - /// A collation sent to a validator was seconded. - CollationSeconded(SignedFullStatement), -} -``` - -## V1 Wire Protocols - -### Validation V1 - -These are the messages for the protocol on the validation peer-set. - -```rust -enum ValidationProtocolV1 { - ApprovalDistribution(ApprovalDistributionV1Message), - AvailabilityDistribution(AvailabilityDistributionV1Message), - AvailabilityRecovery(AvailabilityRecoveryV1Message), - BitfieldDistribution(BitfieldDistributionV1Message), - PoVDistribution(PoVDistributionV1Message), - StatementDistribution(StatementDistributionV1Message), -} -``` - -### Collation V1 - -These are the messages for the protocol on the collation peer-set - -```rust -enum CollationProtocolV1 { - CollatorProtocol(CollatorProtocolV1Message), -} -``` - -## Network Bridge Event - -These updates are posted from the [Network Bridge Subsystem](../node/utility/network-bridge.md) to other subsystems based on registered listeners. - -```rust -enum NetworkBridgeEvent { - /// A peer with given ID is now connected. - PeerConnected(PeerId, ObservedRole), - /// A peer with given ID is now disconnected. - PeerDisconnected(PeerId), - /// Our neighbors in the new gossip topology. - /// We're not necessarily connected to all of them. - /// - /// This message is issued only on the validation peer set. - /// - /// Note, that the distribution subsystems need to handle the last - /// view update of the newly added gossip peers manually. - NewGossipTopology(HashSet), - /// We received a message from the given peer. - PeerMessage(PeerId, M), - /// The given peer has updated its description of its view. - PeerViewChange(PeerId, View), // guaranteed to come after peer connected event. - /// We have posted the given view update to all connected peers. - OurViewChange(View), -} -``` diff --git a/roadmap/implementers-guide/src/types/overseer-protocol.md b/roadmap/implementers-guide/src/types/overseer-protocol.md deleted file mode 100644 index 4ff1d76d99b0..000000000000 --- a/roadmap/implementers-guide/src/types/overseer-protocol.md +++ /dev/null @@ -1,824 +0,0 @@ -# Overseer Protocol - -This chapter contains message types sent to and from the overseer, and the underlying subsystem message types that are transmitted using these. - -## Overseer Signal - -Signals from the overseer to a subsystem to request change in execution that has to be obeyed by the subsystem. - -```rust -enum OverseerSignal { - /// Signal about a change in active leaves. - ActiveLeavesUpdate(ActiveLeavesUpdate), - /// Signal about a new best finalized block. - BlockFinalized(Hash), - /// Conclude all operation. - Conclude, -} -``` - -All subsystems have their own message types; all of them need to be able to listen for overseer signals as well. There are currently two proposals for how to handle that with unified communication channels: - -1. Retaining the `OverseerSignal` definition above, add `enum FromOverseer {Signal(OverseerSignal), Message(T)}`. -1. Add a generic varint to `OverseerSignal`: `Message(T)`. - -Either way, there will be some top-level type encapsulating messages from the overseer to each subsystem. - -## Active Leaves Update - -Indicates a change in active leaves. Activated leaves should have jobs, whereas deactivated leaves should lead to winding-down of work based on those leaves. - -```rust -enum LeafStatus { - // A leaf is fresh when it's the first time the leaf has been encountered. - // Most leaves should be fresh. - Fresh, - // A leaf is stale when it's encountered for a subsequent time. This will - // happen when the chain is reverted or the fork-choice rule abandons some - // chain. - Stale, -} - -struct ActiveLeavesUpdate { - activated: [(Hash, Number, LeafStatus)], // in practice, these should probably be a SmallVec - deactivated: [Hash], -} -``` - -## All Messages - -A message type tying together all message types that are used across Subsystems. - -```rust -enum AllMessages { - CandidateValidation(CandidateValidationMessage), - CandidateBacking(CandidateBackingMessage), - ChainApi(ChainApiMessage), - CollatorProtocol(CollatorProtocolMessage), - StatementDistribution(StatementDistributionMessage), - AvailabilityDistribution(AvailabilityDistributionMessage), - AvailabilityRecovery(AvailabilityRecoveryMessage), - BitfieldDistribution(BitfieldDistributionMessage), - BitfieldSigning(BitfieldSigningMessage), - Provisioner(ProvisionerMessage), - RuntimeApi(RuntimeApiMessage), - AvailabilityStore(AvailabilityStoreMessage), - NetworkBridge(NetworkBridgeMessage), - CollationGeneration(CollationGenerationMessage), - ApprovalVoting(ApprovalVotingMessage), - ApprovalDistribution(ApprovalDistributionMessage), - GossipSupport(GossipSupportMessage), - DisputeCoordinator(DisputeCoordinatorMessage), - DisputeParticipation(DisputeParticipationMessage), - ChainSelection(ChainSelectionMessage), -} -``` - -## Approval Voting Message - -Messages received by the approval voting subsystem. - -```rust -enum AssignmentCheckResult { - // The vote was accepted and should be propagated onwards. - Accepted, - // The vote was valid but duplicate and should not be propagated onwards. - AcceptedDuplicate, - // The vote was valid but too far in the future to accept right now. - TooFarInFuture, - // The vote was bad and should be ignored, reporting the peer who propagated it. - Bad(AssignmentCheckError), -} - -pub enum AssignmentCheckError { - UnknownBlock(Hash), - UnknownSessionIndex(SessionIndex), - InvalidCandidateIndex(CandidateIndex), - InvalidCandidate(CandidateIndex, CandidateHash), - InvalidCert(ValidatorIndex), - Internal(Hash, CandidateHash), -} - -enum ApprovalCheckResult { - // The vote was accepted and should be propagated onwards. - Accepted, - // The vote was bad and should be ignored, reporting the peer who propagated it. - Bad(ApprovalCheckError), -} - -pub enum ApprovalCheckError { - UnknownBlock(Hash), - UnknownSessionIndex(SessionIndex), - InvalidCandidateIndex(CandidateIndex), - InvalidValidatorIndex(ValidatorIndex), - InvalidCandidate(CandidateIndex, CandidateHash), - InvalidSignature(ValidatorIndex), - NoAssignment(ValidatorIndex), - Internal(Hash, CandidateHash), -} - -enum ApprovalVotingMessage { - /// Check if the assignment is valid and can be accepted by our view of the protocol. - /// Should not be sent unless the block hash is known. - CheckAndImportAssignment( - IndirectAssignmentCert, - CandidateIndex, // The index of the candidate included in the block. - ResponseChannel, - ), - /// Check if the approval vote is valid and can be accepted by our view of the - /// protocol. - /// - /// Should not be sent unless the block hash within the indirect vote is known. - CheckAndImportApproval( - IndirectSignedApprovalVote, - ResponseChannel, - ), - /// Returns the highest possible ancestor hash of the provided block hash which is - /// acceptable to vote on finality for. Along with that, return the lists of candidate hashes - /// which appear in every block from the (non-inclusive) base number up to (inclusive) the specified - /// approved ancestor. - /// This list starts from the highest block (the approved ancestor itself) and moves backwards - /// towards the base number. - /// - /// The base number is typically the number of the last finalized block, but in GRANDPA it is - /// possible for the base to be slightly higher than the last finalized block. - /// - /// The `BlockNumber` provided is the number of the block's ancestor which is the - /// earliest possible vote. - /// - /// It can also return the same block hash, if that is acceptable to vote upon. - /// Return `None` if the input hash is unrecognized. - ApprovedAncestor { - target_hash: Hash, - base_number: BlockNumber, - rx: ResponseChannel)>)>> - }, -} -``` - -## Approval Distribution Message - -Messages received by the approval distribution subsystem. - -```rust -/// Metadata about a block which is now live in the approval protocol. -struct BlockApprovalMeta { - /// The hash of the block. - hash: Hash, - /// The number of the block. - number: BlockNumber, - /// The candidates included by the block. Note that these are not the same as the candidates that appear within the - /// block body. - parent_hash: Hash, - /// The candidates included by the block. Note that these are not the same as the candidates that appear within the - /// block body. - candidates: Vec, - /// The consensus slot of the block. - slot: Slot, -} - -enum ApprovalDistributionMessage { - /// Notify the `ApprovalDistribution` subsystem about new blocks and the candidates contained within - /// them. - NewBlocks(Vec), - /// Distribute an assignment cert from the local validator. The cert is assumed - /// to be valid, relevant, and for the given relay-parent and validator index. - /// - /// The `u32` param is the candidate index in the fully-included list. - DistributeAssignment(IndirectAssignmentCert, u32), - /// Distribute an approval vote for the local validator. The approval vote is assumed to be - /// valid, relevant, and the corresponding approval already issued. If not, the subsystem is free to drop - /// the message. - DistributeApproval(IndirectSignedApprovalVote), - /// An update from the network bridge. - NetworkBridgeUpdateV1(NetworkBridgeEvent), -} -``` - -## Availability Distribution Message - -Messages received by the availability distribution subsystem. - -This is a network protocol that receives messages of type [`AvailabilityDistributionV1Message`][AvailabilityDistributionV1NetworkMessage]. - -```rust -enum AvailabilityDistributionMessage { - /// Incoming network request for an availability chunk. - ChunkFetchingRequest(IncomingRequest), - /// Incoming network request for a seconded PoV. - PoVFetchingRequest(IncomingRequest), - /// Instruct availability distribution to fetch a remote PoV. - /// - /// NOTE: The result of this fetch is not yet locally validated and could be bogus. - FetchPoV { - /// The relay parent giving the necessary context. - relay_parent: Hash, - /// Validator to fetch the PoV from. - from_validator: ValidatorIndex, - /// Candidate hash to fetch the PoV for. - candidate_hash: CandidateHash, - /// Expected hash of the PoV, a PoV not matching this hash will be rejected. - pov_hash: Hash, - /// Sender for getting back the result of this fetch. - /// - /// The sender will be canceled if the fetching failed for some reason. - tx: oneshot::Sender, - }, -} -``` - -## Availability Recovery Message - -Messages received by the availability recovery subsystem. - -```rust -enum RecoveryError { - Invalid, - Unavailable, -} -enum AvailabilityRecoveryMessage { - /// Recover available data from validators on the network. - RecoverAvailableData( - CandidateReceipt, - SessionIndex, - Option, // Backing validator group to request the data directly from. - ResponseChannel>, - ), -} -``` - -## Availability Store Message - -Messages to and from the availability store. - -```rust -enum AvailabilityStoreMessage { - /// Query the `AvailableData` of a candidate by hash. - QueryAvailableData(CandidateHash, ResponseChannel>), - /// Query whether an `AvailableData` exists within the AV Store. - QueryDataAvailability(CandidateHash, ResponseChannel), - /// Query a specific availability chunk of the candidate's erasure-coding by validator index. - /// Returns the chunk and its inclusion proof against the candidate's erasure-root. - QueryChunk(CandidateHash, ValidatorIndex, ResponseChannel>), - /// Query all chunks that we have locally for the given candidate hash. - QueryAllChunks(CandidateHash, ResponseChannel>), - /// Store a specific chunk of the candidate's erasure-coding by validator index, with an - /// accompanying proof. - StoreChunk(CandidateHash, ErasureChunk, ResponseChannel>), - /// Store `AvailableData`. If `ValidatorIndex` is provided, also store this validator's - /// `ErasureChunk`. - StoreAvailableData(CandidateHash, Option, u32, AvailableData, ResponseChannel>), -} -``` - -## Bitfield Distribution Message - -Messages received by the bitfield distribution subsystem. -This is a network protocol that receives messages of type [`BitfieldDistributionV1Message`][BitfieldDistributionV1NetworkMessage]. - -```rust -enum BitfieldDistributionMessage { - /// Distribute a bitfield signed by a validator to other validators. - /// The bitfield distribution subsystem will assume this is indeed correctly signed. - DistributeBitfield(relay_parent, SignedAvailabilityBitfield), - /// Receive a network bridge update. - NetworkBridgeUpdateV1(NetworkBridgeEvent), -} -``` - -## Bitfield Signing Message - -Currently, the bitfield signing subsystem receives no specific messages. - -```rust -/// Non-instantiable message type -enum BitfieldSigningMessage { } -``` - -## Candidate Backing Message - -```rust -enum CandidateBackingMessage { - /// Requests a set of backable candidates that could be backed in a child of the given - /// relay-parent, referenced by its hash. - GetBackedCandidates(Hash, Vec, ResponseChannel>), - /// Note that the Candidate Backing subsystem should second the given candidate in the context of the - /// given relay-parent (ref. by hash). This candidate must be validated using the provided PoV. - /// The PoV is expected to match the `pov_hash` in the descriptor. - Second(Hash, CandidateReceipt, PoV), - /// Note a peer validator's statement about a particular candidate. Disagreements about validity must be escalated - /// to a broader check by Misbehavior Arbitration. Agreements are simply tallied until a quorum is reached. - Statement(Statement), -} -``` - -## Chain API Message - -The Chain API subsystem is responsible for providing an interface to chain data. - -```rust -enum ChainApiMessage { - /// Get the block number by hash. - /// Returns `None` if a block with the given hash is not present in the db. - BlockNumber(Hash, ResponseChannel, Error>>), - /// Request the block header by hash. - /// Returns `None` if a block with the given hash is not present in the db. - BlockHeader(Hash, ResponseChannel, Error>>), - /// Get the cumulative weight of the given block, by hash. - /// If the block or weight is unknown, this returns `None`. - /// - /// Weight is used for comparing blocks in a fork-choice rule. - BlockWeight(Hash, ResponseChannel, Error>>), - /// Get the finalized block hash by number. - /// Returns `None` if a block with the given number is not present in the db. - /// Note: the caller must ensure the block is finalized. - FinalizedBlockHash(BlockNumber, ResponseChannel, Error>>), - /// Get the last finalized block number. - /// This request always succeeds. - FinalizedBlockNumber(ResponseChannel>), - /// Request the `k` ancestors block hashes of a block with the given hash. - /// The response channel may return a `Vec` of size up to `k` - /// filled with ancestors hashes with the following order: - /// `parent`, `grandparent`, ... - Ancestors { - /// The hash of the block in question. - hash: Hash, - /// The number of ancestors to request. - k: usize, - /// The response channel. - response_channel: ResponseChannel, Error>>, - } -} -``` - -## Chain Selection Message - -Messages received by the [Chain Selection subsystem](../node/utility/chain-selection.md) - -```rust -enum ChainSelectionMessage { - /// Signal to the chain selection subsystem that a specific block has been approved. - Approved(Hash), - /// Request the leaves in descending order by score. - Leaves(ResponseChannel>), - /// Request the best leaf containing the given block in its ancestry. Return `None` if - /// there is no such leaf. - BestLeafContaining(Hash, ResponseChannel>), - -} -``` - -## Collator Protocol Message - -Messages received by the [Collator Protocol subsystem](../node/collators/collator-protocol.md) - -This is a network protocol that receives messages of type [`CollatorProtocolV1Message`][CollatorProtocolV1NetworkMessage]. - -```rust -enum CollatorProtocolMessage { - /// Signal to the collator protocol that it should connect to validators with the expectation - /// of collating on the given para. This is only expected to be called once, early on, if at all, - /// and only by the Collation Generation subsystem. As such, it will overwrite the value of - /// the previous signal. - /// - /// This should be sent before any `DistributeCollation` message. - CollateOn(ParaId), - /// Provide a collation to distribute to validators with an optional result sender. - /// - /// The result sender should be informed when at least one parachain validator seconded the collation. It is also - /// completely okay to just drop the sender. - DistributeCollation(CandidateReceipt, PoV, Option>), - /// Fetch a collation under the given relay-parent for the given ParaId. - FetchCollation(Hash, ParaId, ResponseChannel<(CandidateReceipt, PoV)>), - /// Report a collator as having provided an invalid collation. This should lead to disconnect - /// and blacklist of the collator. - ReportCollator(CollatorId), - /// Note a collator as having provided a good collation. - NoteGoodCollation(CollatorId, SignedFullStatement), - /// Notify a collator that its collation was seconded. - NotifyCollationSeconded(CollatorId, Hash, SignedFullStatement), -} -``` - -## Dispute Coordinator Message - -Messages received by the [Dispute Coordinator subsystem](../node/disputes/dispute-coordinator.md) - -This subsystem coordinates participation in disputes, tracks live disputes, and observed statements of validators from subsystems. - -```rust -enum DisputeCoordinatorMessage { - /// Import a statement by a validator about a candidate. - /// - /// The subsystem will silently discard ancient statements or sets of only dispute-specific statements for - /// candidates that are previously unknown to the subsystem. The former is simply because ancient - /// data is not relevant and the latter is as a DoS prevention mechanism. Both backing and approval - /// statements already undergo anti-DoS procedures in their respective subsystems, but statements - /// cast specifically for disputes are not necessarily relevant to any candidate the system is - /// already aware of and thus present a DoS vector. Our expectation is that nodes will notify each - /// other of disputes over the network by providing (at least) 2 conflicting statements, of which one is either - /// a backing or validation statement. - /// - /// This does not do any checking of the message signature. - ImportStatements { - /// The hash of the candidate. - candidate_hash: CandidateHash, - /// The candidate receipt itself. - candidate_receipt: CandidateReceipt, - /// The session the candidate appears in. - session: SessionIndex, - /// Triples containing the following: - /// - A statement, either indicating validity or invalidity of the candidate. - /// - The validator index (within the session of the candidate) of the validator casting the vote. - /// - The signature of the validator casting the vote. - statements: Vec<(DisputeStatement, ValidatorIndex, ValidatorSignature)>, - - /// Inform the requester once we finished importing. - /// - /// This is, we either discarded the votes, just record them because we - /// casted our vote already or recovered availability for the candidate - /// successfully. - pending_confirmation: oneshot::Sender<()>, - }, - /// Fetch a list of all active disputes that the co-ordinator is aware of. - ActiveDisputes(ResponseChannel>), - /// Get candidate votes for a candidate. - QueryCandidateVotes(SessionIndex, CandidateHash, ResponseChannel>), - /// Sign and issue local dispute votes. A value of `true` indicates validity, and `false` invalidity. - IssueLocalStatement(SessionIndex, CandidateHash, CandidateReceipt, bool), - /// Determine the highest undisputed block within the given chain, based on where candidates - /// were included. If even the base block should not be finalized due to a dispute, - /// then `None` should be returned on the channel. - /// - /// The block descriptions begin counting upwards from the block after the given `base_number`. The `base_number` - /// is typically the number of the last finalized block but may be slightly higher. This block - /// is inevitably going to be finalized so it is not accounted for by this function. - DetermineUndisputedChain { - base_number: BlockNumber, - block_descriptions: Vec<(BlockHash, SessionIndex, Vec)>, - rx: ResponseSender>, - } -} -``` - -## Dispute Participation Message - -Messages received by the [Dispute Participation subsystem](../node/disputes/dispute-participation.md) - -This subsystem simply executes requests to evaluate a candidate. - -```rust -enum DisputeParticipationMessage { - /// Validate a candidate for the purposes of participating in a dispute. - Participate { - /// The hash of the candidate - candidate_hash: CandidateHash, - /// The candidate receipt itself. - candidate_receipt: CandidateReceipt, - /// The session the candidate appears in. - session: SessionIndex, - /// The number of validators in the session. - n_validators: u32, - } -} -``` - -## Dispute Distribution Message - -Messages received by the [Dispute Distribution -subsystem](../node/disputes/dispute-distribution.md). This subsystem is -responsible of distributing explicit dispute statements. - -```rust -enum DisputeDistributionMessage { - - /// Tell dispute distribution to distribute an explicit dispute statement to - /// validators. - SendDispute((ValidVote, InvalidVote)), - - /// Ask DisputeDistribution to get votes we don't know about. - /// Fetched votes will be reported via `DisputeCoordinatorMessage::ImportStatements` - FetchMissingVotes { - candidate_hash: CandidateHash, - session: SessionIndex, - known_valid_votes: Bitfield, - known_invalid_votes: Bitfield, - /// Optional validator to query from. `ValidatorIndex` as in the above - /// referenced session. - from_validator: Option, - } - /// Tell the subsystem that a candidate is not available. Dispute distribution - /// can punish peers distributing votes on unavailable hashes. - ReportCandidateUnavailable(CandidateHash), -} -``` - -## Network Bridge Message - -Messages received by the network bridge. This subsystem is invoked by others to manipulate access -to the low-level networking code. - -```rust -/// Peer-sets handled by the network bridge. -enum PeerSet { - /// The collation peer-set is used to distribute collations from collators to validators. - Collation, - /// The validation peer-set is used to distribute information relevant to parachain - /// validation among validators. This may include nodes which are not validators, - /// as some protocols on this peer-set are expected to be gossip. - Validation, -} - -enum NetworkBridgeMessage { - /// Report a cost or benefit of a peer. Negative values are costs, positive are benefits. - ReportPeer(PeerId, cost_benefit: i32), - /// Disconnect a peer from the given peer-set without affecting their reputation. - DisconnectPeer(PeerId, PeerSet), - /// Send a message to one or more peers on the validation peerset. - SendValidationMessage([PeerId], ValidationProtocolV1), - /// Send a message to one or more peers on the collation peerset. - SendCollationMessage([PeerId], ValidationProtocolV1), - /// Send multiple validation messages. - SendValidationMessages([([PeerId, ValidationProtocolV1])]), - /// Send multiple collation messages. - SendCollationMessages([([PeerId, ValidationProtocolV1])]), - /// Connect to peers who represent the given `validator_ids`. - /// - /// Also ask the network to stay connected to these peers at least - /// until a new request is issued. - /// - /// Because it overrides the previous request, it must be ensured - /// that `validator_ids` include all peers the subsystems - /// are interested in (per `PeerSet`). - /// - /// A caller can learn about validator connections by listening to the - /// `PeerConnected` events from the network bridge. - ConnectToValidators { - /// Ids of the validators to connect to. - validator_ids: Vec, - /// The underlying protocol to use for this request. - peer_set: PeerSet, - /// Sends back the number of `AuthorityDiscoveryId`s which - /// authority discovery has failed to resolve. - failed: oneshot::Sender, - }, - /// Inform the distribution subsystems about the new - /// gossip network topology formed. - NewGossipTopology { - /// Ids of our neighbors in the new gossip topology. - /// We're not necessarily connected to all of them, but we should. - our_neighbors: HashSet, - } -} -``` - -## Misbehavior Report - -```rust -pub type Misbehavior = generic::Misbehavior< - CommittedCandidateReceipt, - CandidateHash, - ValidatorIndex, - ValidatorSignature, ->; - -mod generic { - /// Misbehavior: voting more than one way on candidate validity. - /// - /// Since there are three possible ways to vote, a double vote is possible in - /// three possible combinations (unordered) - pub enum ValidityDoubleVote { - /// Implicit vote by issuing and explicitly voting validity. - IssuedAndValidity((Candidate, Signature), (Digest, Signature)), - /// Implicit vote by issuing and explicitly voting invalidity - IssuedAndInvalidity((Candidate, Signature), (Digest, Signature)), - /// Direct votes for validity and invalidity - ValidityAndInvalidity(Candidate, Signature, Signature), - } - - /// Misbehavior: multiple signatures on same statement. - pub enum DoubleSign { - /// On candidate. - Candidate(Candidate, Signature, Signature), - /// On validity. - Validity(Digest, Signature, Signature), - /// On invalidity. - Invalidity(Digest, Signature, Signature), - } - - /// Misbehavior: declaring multiple candidates. - pub struct MultipleCandidates { - /// The first candidate seen. - pub first: (Candidate, Signature), - /// The second candidate seen. - pub second: (Candidate, Signature), - } - - /// Misbehavior: submitted statement for wrong group. - pub struct UnauthorizedStatement { - /// A signed statement which was submitted without proper authority. - pub statement: SignedStatement, - } - - pub enum Misbehavior { - /// Voted invalid and valid on validity. - ValidityDoubleVote(ValidityDoubleVote), - /// Submitted multiple candidates. - MultipleCandidates(MultipleCandidates), - /// Submitted a message that was unauthorized. - UnauthorizedStatement(UnauthorizedStatement), - /// Submitted two valid signatures for the same message. - DoubleSign(DoubleSign), - } -} -``` - -## PoV Distribution Message - -This is a network protocol that receives messages of type [`PoVDistributionV1Message`][PoVDistributionV1NetworkMessage]. - -```rust -enum PoVDistributionMessage { - /// Fetch a PoV from the network. - /// - /// This `CandidateDescriptor` should correspond to a candidate seconded under the provided - /// relay-parent hash. - FetchPoV(Hash, CandidateDescriptor, ResponseChannel), - /// Distribute a PoV for the given relay-parent and CandidateDescriptor. - /// The PoV should correctly hash to the PoV hash mentioned in the CandidateDescriptor - DistributePoV(Hash, CandidateDescriptor, PoV), - /// An update from the network bridge. - NetworkBridgeUpdateV1(NetworkBridgeEvent), -} -``` - -## Provisioner Message - -```rust -/// This data becomes intrinsics or extrinsics which should be included in a future relay chain block. -enum ProvisionableData { - /// This bitfield indicates the availability of various candidate blocks. - Bitfield(Hash, SignedAvailabilityBitfield), - /// The Candidate Backing subsystem believes that this candidate is valid, pending availability. - BackedCandidate(CandidateReceipt), - /// Misbehavior reports are self-contained proofs of validator misbehavior. - MisbehaviorReport(Hash, MisbehaviorReport), - /// Disputes trigger a broad dispute resolution process. - Dispute(Hash, Signature), -} - -/// Message to the Provisioner. -/// -/// In all cases, the Hash is that of the relay parent. -enum ProvisionerMessage { - /// This message allows external subsystems to request current inherent data that could be used for - /// advancing the state of parachain consensus in a block building upon the given hash. - /// - /// If called at different points in time, this may give different results. - RequestInherentData(Hash, oneshot::Sender), - /// This data should become part of a relay chain block - ProvisionableData(ProvisionableData), -} -``` - -## Runtime API Message - -The Runtime API subsystem is responsible for providing an interface to the state of the chain's runtime. - -This is fueled by an auxiliary type encapsulating all request types defined in the Runtime API section of the guide. - -> TODO: link to the Runtime API section. Not possible currently because of https://github.com/Michael-F-Bryan/mdbook-linkcheck/issues/25. Once v0.7.1 is released it will work. - -```rust -enum RuntimeApiRequest { - /// Get the current validator set. - Validators(ResponseChannel>), - /// Get the validator groups and rotation info. - ValidatorGroups(ResponseChannel<(Vec>, GroupRotationInfo)>), - /// Get information about all availability cores. - AvailabilityCores(ResponseChannel>), - /// with the given occupied core assumption. - PersistedValidationData( - ParaId, - OccupiedCoreAssumption, - ResponseChannel>, - ), - /// Sends back `true` if the commitments pass all acceptance criteria checks. - CheckValidationOutputs( - ParaId, - CandidateCommitments, - RuntimeApiSender, - ), - /// Get the session index for children of the block. This can be used to construct a signing - /// context. - SessionIndexForChild(ResponseChannel), - /// Get the validation code for a specific para, using the given occupied core assumption. - ValidationCode(ParaId, OccupiedCoreAssumption, ResponseChannel>), - /// Get validation code by its hash, either past, current or future code can be returned, - /// as long as state is still available. - ValidationCodeByHash(ValidationCodeHash, RuntimeApiSender>), - /// Get a committed candidate receipt for all candidates pending availability. - CandidatePendingAvailability(ParaId, ResponseChannel>), - /// Get all events concerning candidates in the last block. - CandidateEvents(ResponseChannel>), - /// Get the session info for the given session, if stored. - SessionInfo(SessionIndex, ResponseChannel>), - /// Get all the pending inbound messages in the downward message queue for a para. - DmqContents(ParaId, ResponseChannel>>), - /// Get the contents of all channels addressed to the given recipient. Channels that have no - /// messages in them are also included. - InboundHrmpChannelsContents(ParaId, ResponseChannel>>>), - /// Get information about the BABE epoch this block was produced in. - BabeEpoch(ResponseChannel), -} - -enum RuntimeApiMessage { - /// Make a request of the runtime API against the post-state of the given relay-parent. - Request(Hash, RuntimeApiRequest), -} -``` - -## Statement Distribution Message - -The Statement Distribution subsystem distributes signed statements and candidates from validators to other validators. It does this by distributing full statements, which embed the candidate receipt, as opposed to compact statements which don't. -It receives updates from the network bridge and signed statements to share with other validators. - -This is a network protocol that receives messages of type [`StatementDistributionV1Message`][StatementDistributionV1NetworkMessage]. - -```rust -enum StatementDistributionMessage { - /// An update from the network bridge. - NetworkBridgeUpdateV1(NetworkBridgeEvent), - /// We have validated a candidate and want to share our judgment with our peers. - /// The hash is the relay parent. - /// - /// The statement distribution subsystem assumes that the statement should be correctly - /// signed. - Share(Hash, SignedFullStatement), -} -``` - -## Validation Request Type - -Various modules request that the [Candidate Validation subsystem](../node/utility/candidate-validation.md) validate a block with this message. It returns [`ValidationOutputs`](candidate.md#validationoutputs) for successful validation. - -```rust - -/// Result of the validation of the candidate. -enum ValidationResult { - /// Candidate is valid, and here are the outputs and the validation data used to form inputs. - /// In practice, this should be a shared type so that validation caching can be done. - Valid(CandidateCommitments, PersistedValidationData), - /// Candidate is invalid. - Invalid, -} - -/// Messages received by the Validation subsystem. -/// -/// ## Validation Requests -/// -/// Validation requests made to the subsystem should return an error only on internal error. -/// Otherwise, they should return either `Ok(ValidationResult::Valid(_))` -/// or `Ok(ValidationResult::Invalid)`. -#[derive(Debug)] -pub enum CandidateValidationMessage { - /// Validate a candidate with provided parameters using relay-chain state. - /// - /// This will implicitly attempt to gather the `PersistedValidationData` and `ValidationCode` - /// from the runtime API of the chain, based on the `relay_parent` - /// of the `CandidateDescriptor`. - /// - /// This will also perform checking of validation outputs against the acceptance criteria. - /// - /// If there is no state available which can provide this data or the core for - /// the para is not free at the relay-parent, an error is returned. - ValidateFromChainState( - CandidateDescriptor, - Arc, - oneshot::Sender>, - ), - /// Validate a candidate with provided, exhaustive parameters for validation. - /// - /// Explicitly provide the `PersistedValidationData` and `ValidationCode` so this can do full - /// validation without needing to access the state of the relay-chain. - /// - /// This request doesn't involve acceptance criteria checking, therefore only useful for the - /// cases where the validity of the candidate is established. This is the case for the typical - /// use-case: secondary checkers would use this request relying on the full prior checks - /// performed by the relay-chain. - ValidateFromExhaustive( - PersistedValidationData, - ValidationCode, - CandidateDescriptor, - Arc, - oneshot::Sender>, - ), -} -``` - -[NBE]: ../network.md#network-bridge-event -[AvailabilityDistributionV1NetworkMessage]: network.md#availability-distribution-v1 -[BitfieldDistributionV1NetworkMessage]: network.md#bitfield-distribution-v1 -[PoVDistributionV1NetworkMessage]: network.md#pov-distribution-v1 -[StatementDistributionV1NetworkMessage]: network.md#statement-distribution-v1 -[CollatorProtocolV1NetworkMessage]: network.md#collator-protocol-v1 diff --git a/roadmap/implementers-guide/src/types/runtime.md b/roadmap/implementers-guide/src/types/runtime.md deleted file mode 100644 index 8f52bf8bc76a..000000000000 --- a/roadmap/implementers-guide/src/types/runtime.md +++ /dev/null @@ -1,132 +0,0 @@ -# Runtime - -Types used within the runtime exclusively and pervasively. - -## Host Configuration - -The internal-to-runtime configuration of the parachain host. This is expected to be altered only by governance procedures. - -```rust -struct HostConfiguration { - /// The minimum frequency at which parachains can update their validation code. - pub validation_upgrade_frequency: BlockNumber, - /// The delay, in blocks, before a validation upgrade is applied. - pub validation_upgrade_delay: BlockNumber, - /// How long to keep code on-chain, in blocks. This should be sufficiently long that disputes - /// have concluded. - pub code_retention_period: BlockNumber, - /// The maximum validation code size, in bytes. - pub max_code_size: u32, - /// The maximum head-data size, in bytes. - pub max_head_data_size: u32, - /// The amount of availability cores to dedicate to parathreads. - pub parathread_cores: u32, - /// The number of retries that a parathread author has to submit their block. - pub parathread_retries: u32, - /// How often parachain groups should be rotated across parachains. - pub group_rotation_frequency: BlockNumber, - /// The availability period, in blocks, for parachains. This is the amount of blocks - /// after inclusion that validators have to make the block available and signal its availability to - /// the chain. Must be at least 1. - pub chain_availability_period: BlockNumber, - /// The availability period, in blocks, for parathreads. Same as the `chain_availability_period`, - /// but a differing timeout due to differing requirements. Must be at least 1. - pub thread_availability_period: BlockNumber, - /// The amount of blocks ahead to schedule parathreads. - pub scheduling_lookahead: u32, - /// The maximum number of validators to have per core. `None` means no maximum. - pub max_validators_per_core: Option, - /// The maximum number of validators to use for parachains, in total. `None` means no maximum. - pub max_validators: Option, - /// The amount of sessions to keep for disputes. - pub dispute_period: SessionIndex, - /// How long after dispute conclusion to accept statements. - pub dispute_post_conclusion_acceptance_period: BlockNumber, - /// The maximum number of dispute spam slots - pub dispute_max_spam_slots: u32, - /// How long it takes for a dispute to conclude by time-out, if no supermajority is reached. - pub dispute_conclusion_by_time_out_period: BlockNumber, - /// The amount of consensus slots that must pass between submitting an assignment and - /// submitting an approval vote before a validator is considered a no-show. - /// Must be at least 1. - pub no_show_slots: u32, - /// The number of delay tranches in total. - pub n_delay_tranches: u32, - /// The width of the zeroth delay tranche for approval assignments. This many delay tranches - /// beyond 0 are all consolidated to form a wide 0 tranche. - pub zeroth_delay_tranche_width: u32, - /// The number of validators needed to approve a block. - pub needed_approvals: u32, - /// The number of samples to do of the RelayVRFModulo approval assignment criterion. - pub relay_vrf_modulo_samples: u32, - /// Total number of individual messages allowed in the parachain -> relay-chain message queue. - pub max_upward_queue_count: u32, - /// Total size of messages allowed in the parachain -> relay-chain message queue before which - /// no further messages may be added to it. If it exceeds this then the queue may contain only - /// a single message. - pub max_upward_queue_size: u32, - /// The amount of weight we wish to devote to the processing the dispatchable upward messages - /// stage. - /// - /// NOTE that this is a soft limit and could be exceeded. - pub ump_service_total_weight: Weight, - /// The maximum size of an upward message that can be sent by a candidate. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub max_upward_message_size: u32, - /// The maximum number of messages that a candidate can contain. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub max_upward_message_num_per_candidate: u32, - /// The maximum size of a message that can be put in a downward message queue. - /// - /// Since we require receiving at least one DMP message the obvious upper bound of the size is - /// the PoV size. Of course, there is a lot of other different things that a parachain may - /// decide to do with its PoV so this value in practice will be picked as a fraction of the PoV - /// size. - pub max_downward_message_size: u32, - /// Number of sessions after which an HRMP open channel request expires. - pub hrmp_open_request_ttl: u32, - /// The deposit that the sender should provide for opening an HRMP channel. - pub hrmp_sender_deposit: u32, - /// The deposit that the recipient should provide for accepting opening an HRMP channel. - pub hrmp_recipient_deposit: u32, - /// The maximum number of messages allowed in an HRMP channel at once. - pub hrmp_channel_max_capacity: u32, - /// The maximum total size of messages in bytes allowed in an HRMP channel at once. - pub hrmp_channel_max_total_size: u32, - /// The maximum number of inbound HRMP channels a parachain is allowed to accept. - pub hrmp_max_parachain_inbound_channels: u32, - /// The maximum number of inbound HRMP channels a parathread is allowed to accept. - pub hrmp_max_parathread_inbound_channels: u32, - /// The maximum size of a message that could ever be put into an HRMP channel. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub hrmp_channel_max_message_size: u32, - /// The maximum number of outbound HRMP channels a parachain is allowed to open. - pub hrmp_max_parachain_outbound_channels: u32, - /// The maximum number of outbound HRMP channels a parathread is allowed to open. - pub hrmp_max_parathread_outbound_channels: u32, - /// The maximum number of outbound HRMP messages can be sent by a candidate. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub hrmp_max_message_num_per_candidate: u32, -} -``` - -## ParaInherentData - -Inherent data passed to a runtime entry-point for the advancement of parachain consensus. - -This contains 3 pieces of data: -1. [`Bitfields`](availability.md#signed-availability-bitfield) -2. [`BackedCandidates`](backing.md#backed-candidate) -3. [`MultiDisputeStatementSet`](disputes.md#multidisputestatementset) - -```rust -struct ParaInherentData { - bitfields: Bitfields, - backed_candidates: BackedCandidates, - dispute_statements: MultiDisputeStatementSet, -} -``` diff --git a/roadmap/implementers-guide/src/whence-parachains.md b/roadmap/implementers-guide/src/whence-parachains.md deleted file mode 100644 index 41842e93943b..000000000000 --- a/roadmap/implementers-guide/src/whence-parachains.md +++ /dev/null @@ -1,29 +0,0 @@ -# Whence Parachains - -Parachains are the solution to a problem. As with any solution, it cannot be understood without first understanding the problem. So let's start by going over the issues faced by blockchain technology that led to us beginning to explore the design space for something like parachains. - -## Issue 1: Scalability - -It became clear a few years ago that the transaction throughput of simple Proof-of-Work (PoW) blockchains such as Bitcoin, Ethereum, and myriad others was simply too low. - -> TODO: what if there were more blockchains, etc. - -Proof-of-Stake (PoS) systems can accomplish higher throughput than PoW blockchains. PoS systems are secured by bonded capital as opposed to spent effort - liquidity opportunity cost vs. burning electricity. The way they work is by selecting a set of validators with known economic identity who lock up tokens in exchange for earning the right to "validate" or participate in the consensus process. If they are found to carry out that process wrongly, they will be slashed, meaning some or all of the locked tokens will be burned. This provides a strong disincentive in the direction of misbehavior. - -Since the consensus protocol doesn't revolve around wasting effort, block times and agreement can occur much faster. Solutions to PoW challenges don't have to be found before a block can be authored, so the overhead of authoring a block is reduced to only the costs of creating and distributing the block. - -However, consensus on a PoS chain requires full agreement of 2/3+ of the validator set for everything that occurs at Layer 1: all logic which is carried out as part of the blockchain's state machine. This means that everybody still needs to check everything. Furthermore, validators may have different views of the system based on the information that they receive over an asynchronous network, making agreement on the latest state more difficult. - -Parachains are an example of a **sharded** protocol. Sharding is a concept borrowed from traditional database architecture. Rather than requiring every participant to check every transaction, we require each participant to check some subset of transactions, with enough redundancy baked in that byzantine (arbitrarily malicious) participants can't sneak in invalid transactions - at least not without being detected and getting slashed, with those transactions reverted. - -Sharding and Proof-of-Stake in coordination with each other allow a parachain host to provide full security on many parachains, even without all participants checking all state transitions. - -> TODO: note about network effects & bridging - -## Issue 2: Flexibility / Specialization - -"dumb" VMs don't give you the flexibility. Any engineer knows that being able to specialize on a problem gives them and their users more _leverage_. - -> TODO: expand on leverage - -Having recognized these issues, we set out to find a solution to these problems, which could allow developers to create and deploy purpose-built blockchains unified under a common source of security, with the capability of message-passing between them; a _heterogeneous sharding solution_, which we have come to know as **Parachains**. diff --git a/roadmap/parachains.md b/roadmap/parachains.md deleted file mode 100644 index 89e8fdaf3892..000000000000 --- a/roadmap/parachains.md +++ /dev/null @@ -1,233 +0,0 @@ -# Parachains Roadmap -This is a roadmap for the core technology underlying Parachains - what protocols, APIs, and code paths need to be in place to fully instantiate a self-sufficient and secure parachain. We don't attempt to cover anything on what APIs a parachain toolkit might expose in order to make use of parachain features - only how those features are implemented and the low-level APIs that they expose to the validation function, if any. - -## Categories -We will use these categories to delineate features: - -*Runtime*: Runtime code for the Relay chain specifying consensus-critical state and updates that all full nodes must maintain or perform. - -*Networking*: Protocols for nodes to speak to each other and transmit information across the network. - -*Node*: State or updates that must be maintained or performed by some or all nodes off-chain. Often interfaces with networking components, and references runtime state. - ---- -## Sub-projects and features: -This section contains various sub-projects and the features that make them up. - -### Infrastructure/API - -#### *Peer Set Management* - -Category: Networking - -Validators assigned to a parachain need a way to discover and connect to collators in order to get fresh parachain blocks to validate. - -Collators need to discover and connect to validators in order to submit parachain blocks. - -Fishermen need to talk to validators and collators to fetch available data and circulate reports. - -Some connections are long-lived, some are just for a single request. - -#### Custom libp2p sub-protocols - -Polkadot parachains involve many distinct networking protocols. Ideally, we'd be able to spawn each of these as a separate futures task which communicates via channel with other protocols or node code as necessary. This requires changes in Substrate and libp2p. - ---- -### Assignment - -#### *Auctions* - -Category: Runtime - -Auctioning and registration of parachains. This is already implemented and follows the [Parachain Allocation — Research at W3F](https://research.web3.foundation/en/latest/polkadot/Parachain-Allocation.html) document. - -#### *Parathread Auctions* - -Category: Runtime - -Parathreads are pay-as-you-go parachains. This consists of an on-chain mechanism for resolving an auction by collators and ensuring that they author a block. - -The node-side portion of parathreads is for collators to actually cast bids and to be configured for which conditions to cast bids under. - -#### *Validator Assignment* - -Category: Runtime - -Assignment of validators to parachains. Validators are only assigned to parachains for a short period of time. Tweakable parameters include length of time assigned to each parachain and length of time in advance that the network is aware of validators' assignments. - ---- -### Agreement - -#### *Attestation Circulation* - -Category: Networking - -A black-box networking component for circulating attestation messages (`Candidate`, `Valid`, `Invalid`) between validators of any given parachain to create a quorum on which blocks can be included. - -#### *Availability Erasure-coding* - -Category: Node, Networking - -For each potential, considered parachain block, perform an erasure-coding of the PoV and outgoing messages of the block. Call the number of validators on the relay chain for the Relay-chain block this parachain block is being considered for inclusion in `n`. Erasure-code into `n` pieces, where any `f + 1` can recover (`f` being the maximum number of tolerated faulty nodes = ~ `n / 3`). The `i'th` validator stores the `i'th` piece of the coding and provides it to any who ask. - -#### *PoV block fetching* - -Category: Networking - -A black-box networking component for validators or fishermen on a parachain to obtain the PoV block referenced by hash in an attestation, for the purpose of validating. When fetching "current" PoV blocks (close to the head of the chain, or relating to the block currently being built), this should be fast. When fetching "old" PoV blocks, it should be possible and fall back on recovering from the availability erasure-coding. - -#### *Parathread Auction Voting* - -Category: Node, Networking - -How and when collators are configured to cast votes in parathread auctions. - -#### *Collation Loop* - -Category: Node, Networking - -The main event loop of a collator node: - 1. new relay chain block B - 2. sync new parachain head P w.r.t. B - 3. build new child of P - 4. submit to validators - ---- -### Cross-chain Messaging - -https://hackmd.io/ILoQltEISP697oMYe4HbrA?view -https://github.com/paritytech/polkadot/issues/597 - -The biggest sub-project of the parachains roadmap - how messages are sent between parachains. This involves the state-machine ordering of incoming messages, protocols for fetching those messages, and node logic for persisting the messages. - -This is designed around a concept of unidirectional _channels_ between paras, which consist of a sender and receiver. At each relay chain block, each para has an opportunity to send a message on each channel for which it controls the sending half. It will also attempt to process messages on each receiving half of the channel which it controls _in order_: messages sent at block height `b` must be processed before those sent at block height `b+1`. For messages on different channels sent at the same block height, there will be some well-defined order in which they should be processed. - -This means that a receiving para will have a maximum height differential of `1` in terms of the most recently processed message's send-height across all of the channels it is receiving on. The minimum processed send-height of a receiving para is known as its _watermark_. All messages on all channels sending to this para before or at the watermark have been processed. - -#### *Finalize CandidateReceipt format* - -Category: Runtime / Node - -The `CandidateReceipt` is the wrapper around a parablock header which is submitted to the runtime. It contains cryptographic commitments to data which is important for validation or interpretation of the parablock, including the hash of the witness data and outgoing message data. - -The `CandidateReceipt` format should be finalized in accordance to the XCMP writeups linked above - most importantly, to be altered to hold `bitfield` and `message_root` fields which cryptographically commit to the state of each open channel. - -#### *Finalize PovBlock format* - -Category: Runtime / Node - -The `PovBlock` or `Proof-of-Validity` block contains all the data you need to validate a parablock. It will need to contain incoming message queues and potentially outgoing ones as well. - -#### *CST Update Procedure* - -Category: Runtime - -Storage definitions and update logic of the Channel State Table (CST) based on the supplied `CandidateReceipt`s in a relay chain block. - -#### *CST Entry Proof Generation and Checking* - -Category: Node - -Means for full nodes of the relay chain to generate proofs of items in the CST and for light clients or pruned nodes to check those proofs. - -#### *MQC Storage and Distribution Protocol* - -Category: Node - -Every channel's state is described by a Message Queue Chain (MQC) which is a hash-chain, where the links are defined by `(M, b, H)`: the message most recently sent, the block height at which the prior message was sent, and the hash of the prior link. - -It is the responsibility of the full nodes of the _sending_ para to maintain all links of the MQC up to and including the link where `b` is less than the watermark of the _receiving_ para. - -Full nodes of the para will be aware of the head of all MQCs for its channels because they are produced by execution of the block. This will take collaboration with the Cumulus team (https://github.com/paritytech/cumulus) on APIs. - -We will need a network where collators of paras can discover and fetch the relevant portion of the MQC incoming from all channels. - -#### *Channel Registrar and Economics* - -Category: Runtime - -Runtime logic for paras to open and close channels by putting down a deposit. The amount of channels a parathread can open will be limited. Channels that are pending close should remain open until the watermark of the recipient has reached the block height of the close request. - ---- -### Fishing/Slashing - -#### *Validity/Availability Report Handler* - -Category: Runtime - -In Polkadot, a bad parachain group can force inclusion of an invalid or unavailable parachain block. It is the job of fishermen to detect those blocks and report them to the runtime. This item is about the report handler - -The W3F-research writeup on availability/validity provides a high-level view of the dispute resolution process: [Availability and Validity — Research at W3F](https://research.web3.foundation/en/latest/polkadot/Availability_and_Validity.html) - -One of the main behaviors that is unimplemented and needs to be is the _rollback_ that occurs when the dispute resolution process concludes that an error has been made. When we mark a parachain block as having been invalid or unavailable, we need to roll back all parachains to a point from just before this state. We would also need to roll back relay chain state, because there may have been messages from a parachain to a relay chain that now need to be rolled back. The easiest thing to do would be to side-step that by putting a delay on upwards messages, but this would impact the UX of parachain participation in slot auctions, council votes, etc. considerably. Assuming we can't side-step this, we will have to find a way to roll back selected state of the relay chain. - -#### *Double-vote Slash Handler* - -Category: Runtime - -In the attestation process, validators may submit only one `Candidate` message for a given relay chain block. If issuing a `Candidate` message on a parachain block, neither a `Valid` or `Invalid` vote cannot be issued on that parachain block, as the `Candidate` message is an implicit validity vote. Otherwise, it is illegal to cast both a `Valid` and `Invalid` vote on a given parachain block. - -Runtime handlers that take two conflicting votes as arguments and slash the offender are needed. - -#### *Validity/Availability Fishing* - -Category: Node - -This code-path is also taken by validators who self-select based on VRF [Availability and Validity — Research at W3F](https://research.web3.foundation/en/latest/polkadot/Availability_and_Validity.html). Validators and fishermen will select parachain blocks to re-validate. In these steps: -* Attempt to recover the PoV block, falling back on the erasure-coding. If not available, issue report. -* Attempt to validate the PoV block. If invalid, issue report. - -#### *Double-vote Fishing* - -Category: Node - -Nodes that observe a double-vote in the attestation process should submit a report to the chain to trigger slashing. - ---- - -# Phases -This roadmap is divided up into phases, where each represents another set of deliverables or iteration on a black-box component with respect to the prior phase. - -## Phase 0: MVP -The very first phase - this is parachains without slashing (full security) or cross-chain messaging. It is primarily a PoC that registration and validation are working correctly. - -### Infrastructure/API: - - Custom libp2p sub-protocols - - Peer Set Management - -### Assignment: - - Auctions - - Parathread Auctions - - Validator Assignment - -### Agreement: - - Attestation Circulation (black box: gossip) - - Availability Erasure-coding (black box: gossip) - - PoV block fetching (black box: gossip) - - Collation Loop - -### Cross-chain Messaging: - - Finalize `CandidateReceipt` format - -## Phase 1: Fishing and Slashing - -This phase marks advancement in the security of parachains. Once completed, parachains are a full-fledged cryptoeconomically secure rollup primitive. This phase also includes implementation work on XCMP, but does not enable it fully. - -### Agreement - - Availability Erasure-coding (black box: targeted distribution) - - PoV block fetching (black box: targeted distribution and fetching) - -### Fishing/Slashing - - Validity/Availability Report Handler - - Double-vote Slash Handler - - Validity/Availability Fishing - - Double-vote Fishing - -### Cross-chain Messaging: - - Finalize `PoVBlock` format. - -## Phase 2: Messaging - -This phase marks delivery of cross-chain messaging. - -Pretty much everything left from the XCMP section. diff --git a/roadmap/phase-1.png b/roadmap/phase-1.png deleted file mode 100644 index d6d272aefb09..000000000000 Binary files a/roadmap/phase-1.png and /dev/null differ diff --git a/roadmap/phase-1.toml b/roadmap/phase-1.toml deleted file mode 100644 index 50ef1f741fe9..000000000000 --- a/roadmap/phase-1.toml +++ /dev/null @@ -1,64 +0,0 @@ -# Phase 0 - -[[group]] -name = "phase-0" -label = "Phase 0: MVP" -items = [] - -# Phase 1 - -[[group]] -name = "two-phase-inclusion" -label = "Two-phase inclusion of parachain candidates" -requires = ["phase-0"] -items = [ - { label = "Buffer submitted parachain candidate until considered available." }, - { label = "Validators submit signed bitfields re: availability of parachains" }, - { label = "relay chain fully includes candidate once considered available" } -] - -[[group]] -name = "secondary-checking" -label = "Secondary checks and self-selection by validators" -requires = ["two-phase-inclusion"] -items = [ - { label = "Extract #VCheck for all checkable candidates" }, - { label = "Maintain a frontier of candidates that are likely to be checked soon" }, - { label = "Listen for new reports on candidates and new checks to update frontier" }, -] - -[[group]] -name = "runtime-availability-validity-slashing" -label = "Availability and Validity slashing in the runtime" -requires = ["two-phase-inclusion"] -items = [ - { label = "Track all candidates within the slash period as well as their session" }, - { label = "Submit secondary checks to runtime", port = "submitsecondary", requires = ["secondary-checking"]}, - { label = "Track reports and attestatations for candidates" }, -] - -[[group]] -name = "non-direct-ancestor" -label = "Allow candidates with non-direct ancestor" -items = [ - { label = "Extend GlobalValidationData with random seed and session index"}, - { label = "Block author can provide minimally-attested candidate with older relay parent" }, - { label = "Runtime can accept and process candidates with older relay-parent" }, - { label = "Revise availability-store pruning to ensure only needed data is kept" }, -] - -[[group]] -name = "grandpa-voting-rule" -label = "GRANDPA voting rule to follow valid/available chains" -requires = ["runtime-availability-validity-slashing"] -items = [ - { label = "Add a utility to flag a block and all of its ancestors as abandoned" }, - { label = "Accept new blocks on abandoned but mark them abandoned as well." }, - { label = "Do not vote or build on abandoned chains" }, -] - -[[group]] -name = "phase-1" -label = "Phase 1: Availability and Validity" -requires = ["non-direct-ancestor", "grandpa-voting-rule", "runtime-availability-validity-slashing"] -items = [] diff --git a/roadmap/render.sh b/roadmap/render.sh deleted file mode 100644 index a54384bac459..000000000000 --- a/roadmap/render.sh +++ /dev/null @@ -1,11 +0,0 @@ -# requires skill-tree: github.com/nikomatsakis/skill-tree - -render () { - echo "Rendering $1" - skill-tree $1.toml output - python3 -c "from graphviz import render; render('dot', 'png', 'output/skill-tree.dot')" - mv output/skill-tree.dot.png "$1.png" - rm -rf output -} - -render phase-1 diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml deleted file mode 100644 index 0c8a1f73517e..000000000000 --- a/rpc/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "polkadot-rpc" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -jsonrpc-core = "15.1.0" -polkadot-primitives = { path = "../primitives" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-babe-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-consensus-epochs = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-sync-state-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -txpool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master" } -frame-rpc-system = { package = "substrate-frame-rpc-system", git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-mmr-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } -parity-scale-codec = { version = "2.0.0", default-features = false } -sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -beefy-gadget = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } -beefy-gadget-rpc = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs deleted file mode 100644 index 361e1d21fea0..000000000000 --- a/rpc/src/lib.rs +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot-specific RPCs implementation. - -#![warn(missing_docs)] - -use std::sync::Arc; - -use polkadot_primitives::v0::{Block, BlockNumber, AccountId, Nonce, Balance, Hash}; -use sp_api::ProvideRuntimeApi; -use txpool_api::TransactionPool; -use sp_block_builder::BlockBuilder; -use sp_blockchain::{HeaderBackend, HeaderMetadata, Error as BlockChainError}; -use sp_consensus::SelectChain; -use sp_consensus_babe::BabeApi; -use sp_keystore::SyncCryptoStorePtr; -use sc_client_api::AuxStore; -use sc_client_api::light::{Fetcher, RemoteBlockchain}; -use sc_consensus_babe::Epoch; -use sc_finality_grandpa::FinalityProofProvider; -use sc_sync_state_rpc::{SyncStateRpcApi, SyncStateRpcHandler}; -pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; - -/// A type representing all RPC extensions. -pub type RpcExtension = jsonrpc_core::IoHandler; - -/// Light client extra dependencies. -pub struct LightDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// Remote access to the blockchain (async). - pub remote_blockchain: Arc>, - /// Fetcher instance. - pub fetcher: Arc, -} - -/// Extra dependencies for BABE. -pub struct BabeDeps { - /// BABE protocol config. - pub babe_config: sc_consensus_babe::Config, - /// BABE pending epoch changes. - pub shared_epoch_changes: sc_consensus_epochs::SharedEpochChanges, - /// The keystore that manages the keys of the node. - pub keystore: SyncCryptoStorePtr, -} - -/// Dependencies for GRANDPA -pub struct GrandpaDeps { - /// Voting round info. - pub shared_voter_state: sc_finality_grandpa::SharedVoterState, - /// Authority set info. - pub shared_authority_set: sc_finality_grandpa::SharedAuthoritySet, - /// Receives notifications about justification events from Grandpa. - pub justification_stream: sc_finality_grandpa::GrandpaJustificationStream, - /// Executor to drive the subscription manager in the Grandpa RPC handler. - pub subscription_executor: sc_rpc::SubscriptionTaskExecutor, - /// Finality proof provider. - pub finality_provider: Arc>, -} - -/// Dependencies for BEEFY -pub struct BeefyDeps { - /// Receives notifications about signed commitment events from BEEFY. - pub beefy_commitment_stream: beefy_gadget::notification::BeefySignedCommitmentStream, - /// Executor to drive the subscription manager in the BEEFY RPC handler. - pub subscription_executor: sc_rpc::SubscriptionTaskExecutor, -} - -/// Full client dependencies -pub struct FullDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// The SelectChain Strategy - pub select_chain: SC, - /// A copy of the chain spec. - pub chain_spec: Box, - /// Whether to deny unsafe calls - pub deny_unsafe: DenyUnsafe, - /// BABE specific dependencies. - pub babe: BabeDeps, - /// GRANDPA specific dependencies. - pub grandpa: GrandpaDeps, - /// BEEFY specific dependencies. - pub beefy: BeefyDeps, -} - -/// Instantiate all RPC extensions. -pub fn create_full(deps: FullDeps) -> RpcExtension where - C: ProvideRuntimeApi + HeaderBackend + AuxStore + - HeaderMetadata + Send + Sync + 'static, - C::Api: frame_rpc_system::AccountNonceApi, - C::Api: pallet_mmr_rpc::MmrRuntimeApi::Hash>, - C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, - C::Api: BabeApi, - C::Api: BlockBuilder, - P: TransactionPool + Sync + Send + 'static, - SC: SelectChain + 'static, - B: sc_client_api::Backend + Send + Sync + 'static, - B::State: sc_client_api::StateBackend>, -{ - use frame_rpc_system::{FullSystem, SystemApi}; - use pallet_mmr_rpc::{MmrApi, Mmr}; - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use sc_consensus_babe_rpc::BabeRpcHandler; - use sc_finality_grandpa_rpc::{GrandpaApi, GrandpaRpcHandler}; - - let mut io = jsonrpc_core::IoHandler::default(); - let FullDeps { - client, - pool, - select_chain, - chain_spec, - deny_unsafe, - babe, - grandpa, - beefy, - } = deps; - let BabeDeps { - keystore, - babe_config, - shared_epoch_changes, - } = babe; - let GrandpaDeps { - shared_voter_state, - shared_authority_set, - justification_stream, - subscription_executor, - finality_provider, - } = grandpa; - - io.extend_with( - SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe)) - ); - io.extend_with( - TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone())) - ); - io.extend_with( - MmrApi::to_delegate(Mmr::new(client.clone())) - ); - io.extend_with( - sc_consensus_babe_rpc::BabeApi::to_delegate( - BabeRpcHandler::new( - client.clone(), - shared_epoch_changes.clone(), - keystore, - babe_config, - select_chain, - deny_unsafe, - ) - ) - ); - io.extend_with( - GrandpaApi::to_delegate(GrandpaRpcHandler::new( - shared_authority_set.clone(), - shared_voter_state, - justification_stream, - subscription_executor, - finality_provider, - )) - ); - io.extend_with( - SyncStateRpcApi::to_delegate(SyncStateRpcHandler::new( - chain_spec, - client, - shared_authority_set, - shared_epoch_changes, - deny_unsafe, - )) - ); - - io.extend_with(beefy_gadget_rpc::BeefyApi::to_delegate( - beefy_gadget_rpc::BeefyRpcHandler::new( - beefy.beefy_commitment_stream, - beefy.subscription_executor, - ), - )); - - io -} - -/// Instantiate all RPC extensions for light node. -pub fn create_light(deps: LightDeps) -> RpcExtension - where - C: ProvideRuntimeApi, - C: HeaderBackend, - C: Send + Sync + 'static, - C::Api: frame_rpc_system::AccountNonceApi, - C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, - P: TransactionPool + Sync + Send + 'static, - F: Fetcher + 'static, -{ - use frame_rpc_system::{LightSystem, SystemApi}; - - let LightDeps { - client, - pool, - remote_blockchain, - fetcher, - } = deps; - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with( - SystemApi::::to_delegate(LightSystem::new(client, remote_blockchain, fetcher, pool)) - ); - io -} diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml deleted file mode 100644 index 5c01835ca726..000000000000 --- a/runtime/common/Cargo.toml +++ /dev/null @@ -1,121 +0,0 @@ -[package] -name = "polkadot-runtime-common" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -impl-trait-for-tuples = "0.2.0" -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.13", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -static_assertions = "1.1.0" - -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-beefy = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -pallet-mmr = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features=false, optional = true } - -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -libsecp256k1 = { version = "0.3.5", default-features = false } -runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } - -slot-range-helper = { path = "slot_range_helper", default-features = false } -xcm = { path = "../../xcm", default-features = false } - -[dev-dependencies] -hex-literal = "0.3.1" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support-test = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -trie-db = "0.22.3" -serde_json = "1.0.61" -libsecp256k1 = "0.3.5" - -[features] -default = ["std"] -no_std = [] -std = [ - "beefy-primitives/std", - "bitvec/std", - "parity-scale-codec/std", - "log/std", - "rustc-hex/std", - "serde_derive", - "serde/std", - "primitives/std", - "inherents/std", - "sp-core/std", - "sp-api/std", - "sp-std/std", - "sp-io/std", - "frame-support/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-beefy/std", - "pallet-mmr/std", - "pallet-session/std", - "pallet-staking/std", - "pallet-timestamp/std", - "pallet-vesting/std", - "pallet-transaction-payment/std", - "pallet-treasury/std", - "slot-range-helper/std", - "sp-runtime/std", - "sp-session/std", - "sp-staking/std", - "frame-system/std", - "libsecp256k1/std", - "runtime-parachains/std", - "xcm/std", -] -runtime-benchmarks = [ - "libsecp256k1/hmac", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "runtime-parachains/runtime-benchmarks", - "pallet-babe/runtime-benchmarks", -] -try-runtime = [ - "runtime-parachains/try-runtime", - "pallet-authorship/try-runtime", - "pallet-balances/try-runtime", - "pallet-session/try-runtime", - "pallet-staking/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-vesting/try-runtime", - "pallet-transaction-payment/try-runtime", - "pallet-treasury/try-runtime", -] diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml deleted file mode 100644 index 84e6184b70e2..000000000000 --- a/runtime/common/slot_range_helper/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "slot-range-helper" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -paste = "1.0" -enumn = "0.1.3" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[features] -default = ["std"] -std = [ - "sp-std/std", - "parity-scale-codec/std", - "sp-runtime/std", -] diff --git a/runtime/common/slot_range_helper/src/lib.rs b/runtime/common/slot_range_helper/src/lib.rs deleted file mode 100644 index ec680c87d736..000000000000 --- a/runtime/common/slot_range_helper/src/lib.rs +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A helper macro for generating SlotRange enum. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub use sp_std::{result, ops::Add, convert::TryInto}; -pub use sp_runtime::traits::CheckedSub; -pub use parity_scale_codec::{Encode, Decode}; -pub use paste; -pub use enumn::N; - -/// This macro generates a `SlotRange` enum of arbitrary length for use in the Slot Auction -/// mechanism on Polkadot. -/// -/// Usage: -/// ``` -/// slot_range_helper::generate_slot_range!(Zero(0), One(1), Two(2), Three(3)); -/// ``` -/// -/// To extend the usage, continue to add `Identifier(value)` items to the macro. -/// -/// This will generate an enum `SlotRange` with the following properties: -/// -/// * Enum variants will range from all consecutive combinations of inputs, i.e. -/// `ZeroZero`, `ZeroOne`, `ZeroTwo`, `ZeroThree`, `OneOne`, `OneTwo`, `OneThree`... -/// * A constant `LEASE_PERIODS_PER_SLOT` will count the number of lease periods. -/// * A constant `SLOT_RANGE_COUNT` will count the total number of enum variants. -/// * A function `as_pair` will return a tuple representation of the `SlotRange`. -/// * A function `intersects` will tell you if two slot ranges intersect with one another. -/// * A function `len` will tell you the length of occupying a `SlotRange`. -/// * A function `new_bounded` will generate a `SlotRange` from an input of the current -/// lease period, the starting lease period, and the final lease period. -#[macro_export] -macro_rules! generate_slot_range{ - // Entry point - ($( $x:ident ( $e:expr ) ),*) => { - $crate::generate_lease_period_per_slot!( $( $x )* ); - $crate::generate_slot_range!(@inner - { } - $( $x ( $e ) )* - ); - }; - // Does the magic... - (@inner - { $( $parsed:ident ( $t1:expr, $t2:expr ) )* } - $current:ident ( $ce:expr ) - $( $remaining:ident ( $re:expr ) )* - ) => { - $crate::paste::paste! { - $crate::generate_slot_range!(@inner - { - $( $parsed ( $t1, $t2 ) )* - [< $current $current >] ( $ce, $ce ) - $( [< $current $remaining >] ($ce, $re) )* - } - $( $remaining ( $re ) )* - ); - } - }; - (@inner - { $( $parsed:ident ( $t1:expr, $t2:expr ) )* } - ) => { - $crate::generate_slot_range_enum!(@inner $( $parsed )* ); - - $crate::generate_slot_range_count!( $( $parsed )* ); - - #[cfg(feature = "std")] - impl std::fmt::Debug for SlotRange { - fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { - let p = self.as_pair(); - write!(fmt, "[{}..{}]", p.0, p.1) - } - } - - impl SlotRange { - pub const LEASE_PERIODS_PER_SLOT: usize = LEASE_PERIODS_PER_SLOT; - pub const SLOT_RANGE_COUNT: usize = SLOT_RANGE_COUNT; - - $crate::generate_slot_range_as_pair!(@inner $( $parsed ( $t1, $t2 ) )* ); - - $crate::generate_slot_range_len!(@inner $( $parsed ( $t1, $t2 ) )* ); - - $crate::generate_slot_range_new_bounded!(@inner $( $parsed ( $t1, $t2 ) )* ); - } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_slot_range_enum { - (@inner - $( $parsed:ident )* - ) => { - /// A compactly represented sub-range from the series. - #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, $crate::Encode, $crate::Decode, $crate::N)] - #[repr(u8)] - pub enum SlotRange { $( $parsed ),* } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_slot_range_as_pair { - (@inner - $( $parsed:ident ( $t1:expr, $t2:expr ) )* - ) => { - /// Return true if two `SlotRange` intersect in their lease periods. - pub fn intersects(&self, other: SlotRange) -> bool { - let a = self.as_pair(); - let b = other.as_pair(); - b.0 <= a.1 && a.0 <= b.1 - // == !(b.0 > a.1 || a.0 > b.1) - } - - /// Return a tuple representation of the `SlotRange`. - /// - /// Example:`SlotRange::OneTwo.as_pair() == (1, 2)` - pub fn as_pair(&self) -> (u8, u8) { - match self { - $( SlotRange::$parsed => { ($t1, $t2) } )* - } - } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_slot_range_len { - // Use evaluated length in function. - (@inner - $( $parsed:ident ( $t1:expr, $t2:expr ) )* - ) => { - /// Return the length of occupying a `SlotRange`. - /// - /// Example:`SlotRange::OneTwo.len() == 2` - pub fn len(&self) -> usize { - match self { - // len (0, 2) = 2 - 0 + 1 = 3 - $( SlotRange::$parsed => { ( $t2 - $t1 + 1) } )* - } - } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_slot_range_new_bounded { - (@inner - $( $parsed:ident ( $t1:expr, $t2:expr ) )* - ) => { - /// Construct a `SlotRange` from the current lease period, the first lease period of the range, - /// and the last lease period of the range. - /// - /// For example: `SlotRange::new_bounded(1, 2, 3) == SlotRange::OneTwo`. - pub fn new_bounded< - Index: $crate::Add + $crate::CheckedSub + Copy + Ord + From + $crate::TryInto - >( - current: Index, - first: Index, - last: Index - ) -> $crate::result::Result { - if first > last || first < current || last >= current + (LEASE_PERIODS_PER_SLOT as u32).into() { - return Err("Invalid range for this auction") - } - let count: u32 = last.checked_sub(&first) - .ok_or("range ends before it begins")? - .try_into() - .map_err(|_| "range too big")?; - let first: u32 = first.checked_sub(¤t) - .ok_or("range begins too early")? - .try_into() - .map_err(|_| "start too far")?; - match (first, first + count) { - $( ($t1, $t2) => { Ok(SlotRange::$parsed) })* - _ => Err("bad range"), - } - } - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_slot_range_count { - ( - $start:ident $( $rest:ident )* - ) => { - $crate::generate_slot_range_count!(@inner 1; $( $rest )*); - }; - (@inner - $count:expr; - $start:ident $( $rest:ident )* - ) => { - $crate::generate_slot_range_count!(@inner $count + 1; $( $rest )*); - }; - (@inner - $count:expr; - ) => { - const SLOT_RANGE_COUNT: usize = $count; - }; -} - -#[macro_export] -#[doc(hidden)] -macro_rules! generate_lease_period_per_slot { - ( - $start:ident $( $rest:ident )* - ) => { - $crate::generate_lease_period_per_slot!(@inner 1; $( $rest )*); - }; - (@inner - $count:expr; - $start:ident $( $rest:ident )* - ) => { - $crate::generate_lease_period_per_slot!(@inner $count + 1; $( $rest )*); - }; - (@inner - $count:expr; - ) => { - const LEASE_PERIODS_PER_SLOT: usize = $count; - }; -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn slot_range_4_works() { - generate_slot_range!(Zero(0), One(1), Two(2), Three(3)); - - assert_eq!(SlotRange::LEASE_PERIODS_PER_SLOT, 4); - // Sum over n from 0 - 4 - assert_eq!(SlotRange::SLOT_RANGE_COUNT, 10); - assert_eq!(SlotRange::new_bounded(0u32, 1u32, 2u32).unwrap(), SlotRange::OneTwo); - assert_eq!(SlotRange::new_bounded(5u32, 6u32, 7u32).unwrap(), SlotRange::OneTwo); - assert!(SlotRange::new_bounded(10u32, 6u32, 7u32).is_err()); - assert!(SlotRange::new_bounded(10u32, 16u32, 17u32).is_err()); - assert!(SlotRange::new_bounded(10u32, 11u32, 10u32).is_err()); - assert_eq!(SlotRange::TwoTwo.len(), 1); - assert_eq!(SlotRange::OneTwo.len(), 2); - assert_eq!(SlotRange::ZeroThree.len(), 4); - assert!(SlotRange::ZeroOne.intersects(SlotRange::OneThree)); - assert!(!SlotRange::ZeroOne.intersects(SlotRange::TwoThree)); - assert_eq!(SlotRange::ZeroZero.as_pair(), (0, 0)); - assert_eq!(SlotRange::OneThree.as_pair(), (1, 3)); - } - - #[test] - fn slot_range_8_works() { - generate_slot_range!(Zero(0), One(1), Two(2), Three(3), Four(4), Five(5), Six(6), Seven(7)); - - assert_eq!(SlotRange::LEASE_PERIODS_PER_SLOT, 8); - // Sum over n from 0 to 8 - assert_eq!(SlotRange::SLOT_RANGE_COUNT, 36); - assert_eq!(SlotRange::new_bounded(0u32, 1u32, 2u32).unwrap(), SlotRange::OneTwo); - assert_eq!(SlotRange::new_bounded(5u32, 6u32, 7u32).unwrap(), SlotRange::OneTwo); - assert!(SlotRange::new_bounded(10u32, 6u32, 7u32).is_err()); - // This one passes with slot range 8 - assert_eq!(SlotRange::new_bounded(10u32, 16u32, 17u32).unwrap(), SlotRange::SixSeven); - assert!(SlotRange::new_bounded(10u32, 17u32, 18u32).is_err()); - assert!(SlotRange::new_bounded(10u32, 20u32, 21u32).is_err()); - assert!(SlotRange::new_bounded(10u32, 11u32, 10u32).is_err()); - assert_eq!(SlotRange::TwoTwo.len(), 1); - assert_eq!(SlotRange::OneTwo.len(), 2); - assert_eq!(SlotRange::ZeroThree.len(), 4); - assert_eq!(SlotRange::ZeroSeven.len(), 8); - assert!(SlotRange::ZeroOne.intersects(SlotRange::OneThree)); - assert!(!SlotRange::ZeroOne.intersects(SlotRange::TwoThree)); - assert!(SlotRange::FiveSix.intersects(SlotRange::SixSeven)); - assert!(!SlotRange::ThreeFive.intersects(SlotRange::SixSeven)); - assert_eq!(SlotRange::ZeroZero.as_pair(), (0, 0)); - assert_eq!(SlotRange::OneThree.as_pair(), (1, 3)); - assert_eq!(SlotRange::SixSeven.as_pair(), (6, 7)); - } -} diff --git a/runtime/common/src/auctions.rs b/runtime/common/src/auctions.rs deleted file mode 100644 index d6b520711e36..000000000000 --- a/runtime/common/src/auctions.rs +++ /dev/null @@ -1,1676 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Auctioning system to determine the set of Parachains in operation. This includes logic for the -//! auctioning mechanism and for reserving balance as part of the "payment". Unreserving the balance -//! happens elsewhere. - -use sp_std::{prelude::*, mem::swap}; -use sp_runtime::traits::{CheckedSub, Zero, One, Saturating}; -use frame_support::{ - ensure, dispatch::DispatchResult, - traits::{Randomness, Currency, ReservableCurrency, Get}, - weights::{Weight}, -}; -use primitives::v1::Id as ParaId; -use crate::slot_range::SlotRange; -use crate::traits::{Leaser, LeaseError, Auctioneer, Registrar, AuctionStatus}; -use parity_scale_codec::Decode; -pub use pallet::*; - -type CurrencyOf = <::Leaser as Leaser>::Currency; -type BalanceOf = - <<::Leaser as Leaser>::Currency as Currency<::AccountId>>::Balance; - -pub trait WeightInfo { - fn new_auction() -> Weight; - fn bid() -> Weight; - fn cancel_auction() -> Weight; - fn on_initialize() -> Weight; -} - -pub struct TestWeightInfo; -impl WeightInfo for TestWeightInfo { - fn new_auction() -> Weight { 0 } - fn bid() -> Weight { 0 } - fn cancel_auction() -> Weight { 0 } - fn on_initialize() -> Weight { 0 } -} - -/// An auction index. We count auctions in this type. -pub type AuctionIndex = u32; - -type LeasePeriodOf = <::Leaser as Leaser>::LeasePeriod; -// Winning data type. This encodes the top bidders of each range together with their bid. -type WinningData = - [Option<(::AccountId, ParaId, BalanceOf)>; SlotRange::SLOT_RANGE_COUNT]; -// Winners data type. This encodes each of the final winners of a parachain auction, the parachain -// index assigned to them, their winning bid and the range that they won. -type WinnersData = Vec<(::AccountId, ParaId, BalanceOf, SlotRange)>; - -#[frame_support::pallet] -pub mod pallet { - use frame_support::{pallet_prelude::*, traits::EnsureOrigin, weights::DispatchClass}; - use frame_system::{pallet_prelude::*, ensure_signed, ensure_root}; - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - /// The module's configuration trait. - #[pallet::config] - pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + IsType<::Event>; - - /// The type representing the leasing system. - type Leaser: Leaser; - - /// The parachain registrar type. - type Registrar: Registrar; - - /// The number of blocks over which an auction may be retroactively ended. - #[pallet::constant] - type EndingPeriod: Get; - - /// The length of each sample to take during the ending period. - /// - /// EndingPeriod / SampleLength = Total # of Samples - #[pallet::constant] - type SampleLength: Get; - - /// Something that provides randomness in the runtime. - type Randomness: Randomness; - - /// The origin which may initiate auctions. - type InitiateOrigin: EnsureOrigin; - - /// Weight Information for the Extrinsics in the Pallet - type WeightInfo: WeightInfo; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::AccountId = "AccountId", - T::BlockNumber = "BlockNumber", - LeasePeriodOf = "LeasePeriod", - BalanceOf = "Balance", - )] - pub enum Event { - /// An auction started. Provides its index and the block number where it will begin to - /// close and the first lease period of the quadruplet that is auctioned. - /// [auction_index, lease_period, ending] - AuctionStarted(AuctionIndex, LeasePeriodOf, T::BlockNumber), - /// An auction ended. All funds become unreserved. [auction_index] - AuctionClosed(AuctionIndex), - /// Funds were reserved for a winning bid. First balance is the extra amount reserved. - /// Second is the total. [bidder, extra_reserved, total_amount] - Reserved(T::AccountId, BalanceOf, BalanceOf), - /// Funds were unreserved since bidder is no longer active. [bidder, amount] - Unreserved(T::AccountId, BalanceOf), - /// Someone attempted to lease the same slot twice for a parachain. The amount is held in reserve - /// but no parachain slot has been leased. - /// \[parachain_id, leaser, amount\] - ReserveConfiscated(ParaId, T::AccountId, BalanceOf), - /// A new bid has been accepted as the current winner. - /// \[who, para_id, amount, first_slot, last_slot\] - BidAccepted(T::AccountId, ParaId, BalanceOf, LeasePeriodOf, LeasePeriodOf), - /// The winning offset was chosen for an auction. This will map into the `Winning` storage map. - /// \[auction_index, block_number\] - WinningOffset(AuctionIndex, T::BlockNumber), - } - - #[pallet::error] - pub enum Error { - /// This auction is already in progress. - AuctionInProgress, - /// The lease period is in the past. - LeasePeriodInPast, - /// Para is not registered - ParaNotRegistered, - /// Not a current auction. - NotCurrentAuction, - /// Not an auction. - NotAuction, - /// Auction has already ended. - AuctionEnded, - /// The para is already leased out for part of this range. - AlreadyLeasedOut, - } - - /// Number of auctions started so far. - #[pallet::storage] - #[pallet::getter(fn auction_counter)] - pub type AuctionCounter = StorageValue<_, AuctionIndex, ValueQuery>; - - /// Information relating to the current auction, if there is one. - /// - /// The first item in the tuple is the lease period index that the first of the four - /// contiguous lease periods on auction is for. The second is the block number when the - /// auction will "begin to end", i.e. the first block of the Ending Period of the auction. - #[pallet::storage] - #[pallet::getter(fn auction_info)] - pub type AuctionInfo = StorageValue<_, (LeasePeriodOf, T::BlockNumber)>; - - /// Amounts currently reserved in the accounts of the bidders currently winning - /// (sub-)ranges. - #[pallet::storage] - #[pallet::getter(fn reserved_amounts)] - pub type ReservedAmounts = StorageMap<_, Twox64Concat, (T::AccountId, ParaId), BalanceOf>; - - /// The winning bids for each of the 10 ranges at each sample in the final Ending Period of - /// the current auction. The map's key is the 0-based index into the Sample Size. The - /// first sample of the ending period is 0; the last is `Sample Size - 1`. - #[pallet::storage] - #[pallet::getter(fn winning)] - pub type Winning = StorageMap<_, Twox64Concat, T::BlockNumber, WinningData>; - - #[pallet::extra_constants] - impl Pallet { - //TODO: rename to snake case after https://github.com/paritytech/substrate/issues/8826 fixed. - #[allow(non_snake_case)] - fn SlotRangeCount() -> u32 { - SlotRange::SLOT_RANGE_COUNT as u32 - } - - //TODO: rename to snake case after https://github.com/paritytech/substrate/issues/8826 fixed. - #[allow(non_snake_case)] - fn LeasePeriodsPerSlot() -> u32 { - SlotRange::LEASE_PERIODS_PER_SLOT as u32 - } - } - - #[pallet::hooks] - impl Hooks> for Pallet { - fn on_initialize(n: T::BlockNumber) -> Weight { - let mut weight = T::DbWeight::get().reads(1); - - // If the current auction was in its ending period last block, then ensure that the (sub-)range - // winner information is duplicated from the previous block in case no bids happened in the - // last block. - if let AuctionStatus::EndingPeriod(offset, _sub_sample) = Self::auction_status(n) { - weight = weight.saturating_add(T::DbWeight::get().reads(1)); - if !Winning::::contains_key(&offset) { - weight = weight.saturating_add(T::DbWeight::get().writes(1)); - let winning_data = offset.checked_sub(&One::one()) - .and_then(Winning::::get) - .unwrap_or([Self::EMPTY; SlotRange::SLOT_RANGE_COUNT]); - Winning::::insert(offset, winning_data); - } - } - - // Check to see if an auction just ended. - if let Some((winning_ranges, auction_lease_period_index)) = Self::check_auction_end(n) { - // Auction is ended now. We have the winning ranges and the lease period index which - // acts as the offset. Handle it. - Self::manage_auction_end( - auction_lease_period_index, - winning_ranges, - ); - weight = weight.saturating_add(T::WeightInfo::on_initialize()); - } - - weight - } - } - - #[pallet::call] - impl Pallet { - /// Create a new auction. - /// - /// This can only happen when there isn't already an auction in progress and may only be - /// called by the root origin. Accepts the `duration` of this auction and the - /// `lease_period_index` of the initial lease period of the four that are to be auctioned. - #[pallet::weight((T::WeightInfo::new_auction(), DispatchClass::Operational))] - pub fn new_auction( - origin: OriginFor, - #[pallet::compact] duration: T::BlockNumber, - #[pallet::compact] lease_period_index: LeasePeriodOf, - ) -> DispatchResult { - T::InitiateOrigin::ensure_origin(origin)?; - Self::do_new_auction(duration, lease_period_index) - } - - /// Make a new bid from an account (including a parachain account) for deploying a new - /// parachain. - /// - /// Multiple simultaneous bids from the same bidder are allowed only as long as all active - /// bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted. - /// - /// - `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and - /// funded by) the same account. - /// - `auction_index` is the index of the auction to bid on. Should just be the present - /// value of `AuctionCounter`. - /// - `first_slot` is the first lease period index of the range to bid on. This is the - /// absolute lease period index value, not an auction-specific offset. - /// - `last_slot` is the last lease period index of the range to bid on. This is the - /// absolute lease period index value, not an auction-specific offset. - /// - `amount` is the amount to bid to be held as deposit for the parachain should the - /// bid win. This amount is held throughout the range. - #[pallet::weight(T::WeightInfo::bid())] - pub fn bid( - origin: OriginFor, - #[pallet::compact] para: ParaId, - #[pallet::compact] auction_index: AuctionIndex, - #[pallet::compact] first_slot: LeasePeriodOf, - #[pallet::compact] last_slot: LeasePeriodOf, - #[pallet::compact] amount: BalanceOf - ) -> DispatchResult { - let who = ensure_signed(origin)?; - Self::handle_bid(who, para, auction_index, first_slot, last_slot, amount)?; - Ok(()) - } - - /// Cancel an in-progress auction. - /// - /// Can only be called by Root origin. - #[pallet::weight(T::WeightInfo::cancel_auction())] - pub fn cancel_auction(origin: OriginFor) -> DispatchResult { - ensure_root(origin)?; - // Unreserve all bids. - for ((bidder, _), amount) in ReservedAmounts::::drain() { - CurrencyOf::::unreserve(&bidder, amount); - } - Winning::::remove_all(None); - AuctionInfo::::kill(); - Ok(()) - } - } -} - -impl Auctioneer for Pallet { - type AccountId = T::AccountId; - type BlockNumber = T::BlockNumber; - type LeasePeriod = T::BlockNumber; - type Currency = CurrencyOf; - - fn new_auction( - duration: T::BlockNumber, - lease_period_index: LeasePeriodOf, - ) -> DispatchResult { - Self::do_new_auction(duration, lease_period_index) - } - - // Returns the status of the auction given the current block number. - fn auction_status(now: Self::BlockNumber) -> AuctionStatus { - let early_end = match AuctionInfo::::get() { - Some((_, early_end)) => early_end, - None => return AuctionStatus::NotStarted, - }; - - let after_early_end = match now.checked_sub(&early_end) { - Some(after_early_end) => after_early_end, - None => return AuctionStatus::StartingPeriod, - }; - - let ending_period = T::EndingPeriod::get(); - if after_early_end < ending_period { - let sample_length = T::SampleLength::get().max(One::one()); - let sample = after_early_end / sample_length; - let sub_sample = after_early_end % sample_length; - return AuctionStatus::EndingPeriod(sample, sub_sample) - } else { - // This is safe because of the comparison operator above - return AuctionStatus::VrfDelay(after_early_end - ending_period) - } - } - - fn place_bid( - bidder: T::AccountId, - para: ParaId, - first_slot: LeasePeriodOf, - last_slot: LeasePeriodOf, - amount: BalanceOf, - ) -> DispatchResult { - Self::handle_bid(bidder, para, AuctionCounter::::get(), first_slot, last_slot, amount) - } - - fn lease_period_index() -> Self::LeasePeriod { - T::Leaser::lease_period_index() - } - - fn lease_period() -> Self::LeasePeriod { - T::Leaser::lease_period() - } - - fn has_won_an_auction(para: ParaId, bidder: &T::AccountId) -> bool { - !T::Leaser::deposit_held(para, bidder).is_zero() - } -} - -impl Pallet { - // A trick to allow me to initialize large arrays with nothing in them. - const EMPTY: Option<(::AccountId, ParaId, BalanceOf)> = None; - - /// Create a new auction. - /// - /// This can only happen when there isn't already an auction in progress. Accepts the `duration` - /// of this auction and the `lease_period_index` of the initial lease period of the four that - /// are to be auctioned. - fn do_new_auction( - duration: T::BlockNumber, - lease_period_index: LeasePeriodOf, - ) -> DispatchResult { - let maybe_auction = AuctionInfo::::get(); - ensure!(maybe_auction.is_none(), Error::::AuctionInProgress); - ensure!(lease_period_index >= T::Leaser::lease_period_index(), Error::::LeasePeriodInPast); - - // Bump the counter. - let n = AuctionCounter::::mutate(|n| { *n += 1; *n }); - - // Set the information. - let ending = frame_system::Pallet::::block_number().saturating_add(duration); - AuctionInfo::::put((lease_period_index, ending)); - - Self::deposit_event(Event::::AuctionStarted(n, lease_period_index, ending)); - Ok(()) - } - - /// Actually place a bid in the current auction. - /// - /// - `bidder`: The account that will be funding this bid. - /// - `auction_index`: The auction index of the bid. For this to succeed, must equal - /// the current value of `AuctionCounter`. - /// - `first_slot`: The first lease period index of the range to be bid on. - /// - `last_slot`: The last lease period index of the range to be bid on (inclusive). - /// - `amount`: The total amount to be the bid for deposit over the range. - pub fn handle_bid( - bidder: T::AccountId, - para: ParaId, - auction_index: u32, - first_slot: LeasePeriodOf, - last_slot: LeasePeriodOf, - amount: BalanceOf, - ) -> DispatchResult { - // Ensure para is registered before placing a bid on it. - ensure!(T::Registrar::is_registered(para), Error::::ParaNotRegistered); - // Bidding on latest auction. - ensure!(auction_index == AuctionCounter::::get(), Error::::NotCurrentAuction); - // Assume it's actually an auction (this should never fail because of above). - let (first_lease_period, _) = AuctionInfo::::get().ok_or(Error::::NotAuction)?; - - // Get the auction status and the current sample block. For the starting period, the sample - // block is zero. - let auction_status = Self::auction_status(frame_system::Pallet::::block_number()); - // The offset into the ending samples of the auction. - let offset = match auction_status { - AuctionStatus::NotStarted => return Err(Error::::AuctionEnded.into()), - AuctionStatus::StartingPeriod => Zero::zero(), - AuctionStatus::EndingPeriod(o, _) => o, - AuctionStatus::VrfDelay(_) => return Err(Error::::AuctionEnded.into()), - }; - - // We also make sure that the bid is not for any existing leases the para already has. - ensure!(!T::Leaser::already_leased(para, first_slot, last_slot), Error::::AlreadyLeasedOut); - - // Our range. - let range = SlotRange::new_bounded(first_lease_period, first_slot, last_slot)?; - // Range as an array index. - let range_index = range as u8 as usize; - - // The current winning ranges. - let mut current_winning = Winning::::get(offset) - .or_else(|| offset.checked_sub(&One::one()).and_then(Winning::::get)) - .unwrap_or([Self::EMPTY; SlotRange::SLOT_RANGE_COUNT]); - - // If this bid beat the previous winner of our range. - if current_winning[range_index].as_ref().map_or(true, |last| amount > last.2) { - // Ok; we are the new winner of this range - reserve the additional amount and record. - - // Get the amount already held on deposit if this is a renewal bid (i.e. there's - // an existing lease on the same para by the same leaser). - let existing_lease_deposit = T::Leaser::deposit_held(para, &bidder); - let reserve_required = amount.saturating_sub(existing_lease_deposit); - - // Get the amount already reserved in any prior and still active bids by us. - let bidder_para = (bidder.clone(), para); - let already_reserved = ReservedAmounts::::get(&bidder_para).unwrap_or_default(); - - // If these don't already cover the bid... - if let Some(additional) = reserve_required.checked_sub(&already_reserved) { - // ...then reserve some more funds from their account, failing if there's not - // enough funds. - CurrencyOf::::reserve(&bidder, additional)?; - // ...and record the amount reserved. - ReservedAmounts::::insert(&bidder_para, reserve_required); - - Self::deposit_event(Event::::Reserved( - bidder.clone(), - additional, - reserve_required, - )); - } - - // Return any funds reserved for the previous winner if we are not in the ending period - // and they no longer have any active bids. - let mut outgoing_winner = Some((bidder.clone(), para, amount)); - swap(&mut current_winning[range_index], &mut outgoing_winner); - if let Some((who, para, _amount)) = outgoing_winner { - if auction_status.is_starting() && current_winning.iter() - .filter_map(Option::as_ref) - .all(|&(ref other, other_para, _)| other != &who || other_para != para) - { - // Previous bidder is no longer winning any ranges: unreserve their funds. - if let Some(amount) = ReservedAmounts::::take(&(who.clone(), para)) { - // It really should be reserved; there's not much we can do here on fail. - let err_amt = CurrencyOf::::unreserve(&who, amount); - debug_assert!(err_amt.is_zero()); - Self::deposit_event(Event::::Unreserved(who, amount)); - } - } - } - - // Update the range winner. - Winning::::insert(offset, ¤t_winning); - Self::deposit_event(Event::::BidAccepted(bidder, para, amount, first_slot, last_slot)); - } - Ok(()) - } - - /// Some when the auction's end is known (with the end block number). None if it is unknown. - /// If `Some` then the block number must be at most the previous block and at least the - /// previous block minus `T::EndingPeriod::get()`. - /// - /// This mutates the state, cleaning up `AuctionInfo` and `Winning` in the case of an auction - /// ending. An immediately subsequent call with the same argument will always return `None`. - fn check_auction_end(now: T::BlockNumber) -> Option<(WinningData, LeasePeriodOf)> { - if let Some((lease_period_index, early_end)) = AuctionInfo::::get() { - let ending_period = T::EndingPeriod::get(); - let late_end = early_end.saturating_add(ending_period); - let is_ended = now >= late_end; - if is_ended { - // auction definitely ended. - // check to see if we can determine the actual ending point. - let (raw_offset, known_since) = T::Randomness::random(&b"para_auction"[..]); - - if late_end <= known_since { - // Our random seed was known only after the auction ended. Good to use. - let raw_offset_block_number = ::decode(&mut raw_offset.as_ref()) - .expect("secure hashes should always be bigger than the block number; qed"); - let offset = (raw_offset_block_number % ending_period) / T::SampleLength::get().max(One::one()); - - let auction_counter = AuctionCounter::::get(); - Self::deposit_event(Event::::WinningOffset(auction_counter, offset)); - let res = Winning::::get(offset).unwrap_or([Self::EMPTY; SlotRange::SLOT_RANGE_COUNT]); - // This `remove_all` statement should remove at most `EndingPeriod` / `SampleLength` items, - // which should be bounded and sensibly configured in the runtime. - Winning::::remove_all(None); - AuctionInfo::::kill(); - return Some((res, lease_period_index)) - } - } - } - None - } - - /// Auction just ended. We have the current lease period, the auction's lease period (which - /// is guaranteed to be at least the current period) and the bidders that were winning each - /// range at the time of the auction's close. - fn manage_auction_end( - auction_lease_period_index: LeasePeriodOf, - winning_ranges: WinningData, - ) { - // First, unreserve all amounts that were reserved for the bids. We will later re-reserve the - // amounts from the bidders that ended up being assigned the slot so there's no need to - // special-case them here. - for ((bidder, _), amount) in ReservedAmounts::::drain() { - CurrencyOf::::unreserve(&bidder, amount); - } - - // Next, calculate the winning combination of slots and thus the final winners of the - // auction. - let winners = Self::calculate_winners(winning_ranges); - - // Go through those winners and re-reserve their bid, updating our table of deposits - // accordingly. - for (leaser, para, amount, range) in winners.into_iter() { - let begin_offset = LeasePeriodOf::::from(range.as_pair().0 as u32); - let period_begin = auction_lease_period_index + begin_offset; - let period_count = LeasePeriodOf::::from(range.len() as u32); - - match T::Leaser::lease_out(para, &leaser, amount, period_begin, period_count) { - Err(LeaseError::ReserveFailed) | Err(LeaseError::AlreadyEnded) => { - // Should never happen since we just unreserved this amount (and our offset is from the - // present period). But if it does, there's not much we can do. - } - Err(LeaseError::AlreadyLeased) => { - // The leaser attempted to get a second lease on the same para ID, possibly griefing us. Let's - // keep the amount reserved and let governance sort it out. - if CurrencyOf::::reserve(&leaser, amount).is_ok() { - Self::deposit_event(Event::::ReserveConfiscated(para, leaser, amount)); - } - } - Ok(()) => {}, // Nothing to report. - } - } - - Self::deposit_event(Event::::AuctionClosed(AuctionCounter::::get())); - } - - /// Calculate the final winners from the winning slots. - /// - /// This is a simple dynamic programming algorithm designed by Al, the original code is at: - /// https://github.com/w3f/consensus/blob/master/NPoS/auctiondynamicthing.py - fn calculate_winners( - mut winning: WinningData - ) -> WinnersData { - let winning_ranges = { - let mut best_winners_ending_at: - [(Vec, BalanceOf); SlotRange::LEASE_PERIODS_PER_SLOT] = Default::default(); - let best_bid = |range: SlotRange| { - winning[range as u8 as usize].as_ref() - .map(|(_, _, amount)| *amount * (range.len() as u32).into()) - }; - for i in 0..SlotRange::LEASE_PERIODS_PER_SLOT { - let r = SlotRange::new_bounded(0, 0, i as u32).expect("`i < 4`; qed"); - if let Some(bid) = best_bid(r) { - best_winners_ending_at[i] = (vec![r], bid); - } - for j in 0..i { - let r = SlotRange::new_bounded(0, j as u32 + 1, i as u32) - .expect("`i < LPPS`; `j < i`; `j + 1 < LPPS`; qed"); - if let Some(mut bid) = best_bid(r) { - bid += best_winners_ending_at[j].1; - if bid > best_winners_ending_at[i].1 { - let mut new_winners = best_winners_ending_at[j].0.clone(); - new_winners.push(r); - best_winners_ending_at[i] = (new_winners, bid); - } - } else { - if best_winners_ending_at[j].1 > best_winners_ending_at[i].1 { - best_winners_ending_at[i] = best_winners_ending_at[j].clone(); - } - } - } - } - best_winners_ending_at[SlotRange::LEASE_PERIODS_PER_SLOT - 1].0.clone() - }; - - winning_ranges.into_iter().map(|range| { - let mut final_winner = Default::default(); - swap(&mut final_winner, winning[range as u8 as usize].as_mut() - .expect("none values are filtered out in previous logic; qed")); - let (bidder, para, amount) = final_winner; - (bidder, para, amount, range) - }).collect::>() - } -} - -/// tests for this module -#[cfg(test)] -mod tests { - use super::*; - use std::{collections::BTreeMap, cell::RefCell}; - use sp_core::H256; - use sp_runtime::traits::{BlakeTwo256, IdentityLookup}; - use frame_support::{ - parameter_types, ord_parameter_types, assert_ok, assert_noop, assert_storage_noop, - traits::{OnInitialize, OnFinalize}, - dispatch::DispatchError::BadOrigin, - }; - use frame_system::{EnsureSignedBy, EnsureOneOf, EnsureRoot}; - use pallet_balances; - use crate::{auctions, mock::TestRegistrar}; - use primitives::v1::{BlockNumber, Header, Id as ParaId}; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Auctions: auctions::{Pallet, Call, Storage, Event}, - } - ); - - parameter_types! { - pub const BlockHashCount: u32 = 250; - } - impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: u64 = 1; - pub const MaxReserves: u32 = 50; - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type WeightInfo = (); - type MaxLocks = (); - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - } - - #[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Copy, Debug)] - pub struct LeaseData { - leaser: u64, - amount: u64, - } - - thread_local! { - pub static LEASES: - RefCell> = RefCell::new(BTreeMap::new()); - } - - fn leases() -> Vec<((ParaId, BlockNumber), LeaseData)> { - LEASES.with(|p| (&*p.borrow()).clone().into_iter().collect::>()) - } - - pub struct TestLeaser; - impl Leaser for TestLeaser { - type AccountId = u64; - type LeasePeriod = BlockNumber; - type Currency = Balances; - - fn lease_out( - para: ParaId, - leaser: &Self::AccountId, - amount: >::Balance, - period_begin: Self::LeasePeriod, - period_count: Self::LeasePeriod, - ) -> Result<(), LeaseError> { - LEASES.with(|l| { - let mut leases = l.borrow_mut(); - if period_begin < Self::lease_period_index() { - return Err(LeaseError::AlreadyEnded) - } - for period in period_begin..(period_begin + period_count) { - if leases.contains_key(&(para, period)) { - return Err(LeaseError::AlreadyLeased) - } - leases.insert((para, period), LeaseData { leaser: leaser.clone(), amount }); - } - Ok(()) - }) - } - - fn deposit_held( - para: ParaId, - leaser: &Self::AccountId - ) -> >::Balance { - leases().iter() - .filter_map(|((id, _period), data)| - if id == ¶ && &data.leaser == leaser { Some(data.amount) } else { None } - ) - .max() - .unwrap_or_default() - } - - fn lease_period() -> Self::LeasePeriod { - 10 - } - - fn lease_period_index() -> Self::LeasePeriod { - (System::block_number() / Self::lease_period()).into() - } - - fn already_leased( - para_id: ParaId, - first_period: Self::LeasePeriod, - last_period: Self::LeasePeriod - ) -> bool { - leases().into_iter().any(|((para, period), _data)| { - para == para_id && - first_period <= period && - period <= last_period - }) - } - } - - ord_parameter_types!{ - pub const Six: u64 = 6; - } - - type RootOrSix = EnsureOneOf< - u64, - EnsureRoot, - EnsureSignedBy, - >; - - thread_local! { - pub static LAST_RANDOM: RefCell> = RefCell::new(None); - } - fn set_last_random(output: H256, known_since: u32) { - LAST_RANDOM.with(|p| *p.borrow_mut() = Some((output, known_since))) - } - pub struct TestPastRandomness; - impl Randomness for TestPastRandomness { - fn random(_subject: &[u8]) -> (H256, u32) { - LAST_RANDOM.with(|p| { - if let Some((output, known_since)) = &*p.borrow() { - (*output, *known_since) - } else { - (H256::zero(), frame_system::Pallet::::block_number()) - } - }) - } - } - - parameter_types!{ - pub static EndingPeriod: BlockNumber = 3; - pub static SampleLength: BlockNumber = 1; - } - - impl Config for Test { - type Event = Event; - type Leaser = TestLeaser; - type Registrar = TestRegistrar; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = TestPastRandomness; - type InitiateOrigin = RootOrSix; - type WeightInfo = crate::auctions::TestWeightInfo; - } - - // This function basically just builds a genesis storage key/value store according to - // our desired mock up. - pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - pallet_balances::GenesisConfig::{ - balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], - }.assimilate_storage(&mut t).unwrap(); - let mut ext: sp_io::TestExternalities = t.into(); - ext.execute_with(|| { - // Register para 0, 1, 2, and 3 for tests - assert_ok!(TestRegistrar::::register(1, 0.into(), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, 1.into(), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, 2.into(), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, 3.into(), Default::default(), Default::default())); - }); - ext - } - - fn run_to_block(n: BlockNumber) { - while System::block_number() < n { - Auctions::on_finalize(System::block_number()); - Balances::on_finalize(System::block_number()); - System::on_finalize(System::block_number()); - System::set_block_number(System::block_number() + 1); - System::on_initialize(System::block_number()); - Balances::on_initialize(System::block_number()); - Auctions::on_initialize(System::block_number()); - } - } - - #[test] - fn basic_setup_works() { - new_test_ext().execute_with(|| { - assert_eq!(AuctionCounter::::get(), 0); - assert_eq!(TestLeaser::deposit_held(0u32.into(), &1), 0); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - - run_to_block(10); - - assert_eq!(AuctionCounter::::get(), 0); - assert_eq!(TestLeaser::deposit_held(0u32.into(), &1), 0); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - }); - } - - #[test] - fn can_start_auction() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_noop!(Auctions::new_auction(Origin::signed(1), 5, 1), BadOrigin); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - - assert_eq!(AuctionCounter::::get(), 1); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - }); - } - - #[test] - fn bidding_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 5)); - - assert_eq!(Balances::reserved_balance(1), 5); - assert_eq!(Balances::free_balance(1), 5); - assert_eq!( - Auctions::winning(0).unwrap()[SlotRange::ZeroThree as u8 as usize], - Some((1, 0.into(), 5)) - ); - }); - } - - #[test] - fn under_bidding_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 5)); - - assert_storage_noop!( - {assert_ok!(Auctions::bid(Origin::signed(2), 0.into(), 1, 1, 4, 1));} - ); - }); - } - - #[test] - fn over_bidding_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 5)); - assert_ok!(Auctions::bid(Origin::signed(2), 0.into(), 1, 1, 4, 6)); - - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(Balances::free_balance(1), 10); - assert_eq!(Balances::reserved_balance(2), 6); - assert_eq!(Balances::free_balance(2), 14); - assert_eq!( - Auctions::winning(0).unwrap()[SlotRange::ZeroThree as u8 as usize], - Some((2, 0.into(), 6)) - ); - }); - } - - #[test] - fn auction_proceeds_correctly() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - - assert_eq!(AuctionCounter::::get(), 1); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(2); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(3); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(4); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(5); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(6); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 0)); - - run_to_block(7); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(1, 0)); - - run_to_block(8); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 0)); - - run_to_block(9); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - }); - } - - #[test] - fn can_win_auction() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 1)); - assert_eq!(Balances::reserved_balance(1), 1); - assert_eq!(Balances::free_balance(1), 9); - run_to_block(9); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 2), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 3), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 4), LeaseData { leaser: 1, amount: 1 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 1); - }); - } - - #[test] - fn can_win_auction_with_late_randomness() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 1)); - assert_eq!(Balances::reserved_balance(1), 1); - assert_eq!(Balances::free_balance(1), 9); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - run_to_block(8); - // Auction has not yet ended. - assert_eq!(leases(), vec![]); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 0)); - // This will prevent the auction's winner from being decided in the next block, since the random - // seed was known before the final bids were made. - set_last_random(H256::zero(), 8); - // Auction definitely ended now, but we don't know exactly when in the last 3 blocks yet since - // no randomness available yet. - run_to_block(9); - // Auction has now ended... But auction winner still not yet decided, so no leases yet. - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::VrfDelay(0)); - assert_eq!(leases(), vec![]); - - // Random seed now updated to a value known at block 9, when the auction ended. This means - // that the winner can now be chosen. - set_last_random(H256::zero(), 9); - run_to_block(10); - // Auction ended and winner selected - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 2), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 3), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 4), LeaseData { leaser: 1, amount: 1 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 1); - }); - } - - #[test] - fn can_win_incomplete_auction() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 4, 4, 5)); - run_to_block(9); - - assert_eq!(leases(), vec![ - ((0.into(), 4), LeaseData { leaser: 1, amount: 5 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 5); - }); - } - - #[test] - fn should_choose_best_combination() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 1, 1)); - assert_ok!(Auctions::bid(Origin::signed(2), 0.into(), 1, 2, 3, 4)); - assert_ok!(Auctions::bid(Origin::signed(3), 0.into(), 1, 4, 4, 2)); - assert_ok!(Auctions::bid(Origin::signed(1), 1.into(), 1, 1, 4, 2)); - run_to_block(9); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 2), LeaseData { leaser: 2, amount: 4 }), - ((0.into(), 3), LeaseData { leaser: 2, amount: 4 }), - ((0.into(), 4), LeaseData { leaser: 3, amount: 2 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 1); - assert_eq!(TestLeaser::deposit_held(1.into(), &1), 0); - assert_eq!(TestLeaser::deposit_held(0.into(), &2), 4); - assert_eq!(TestLeaser::deposit_held(0.into(), &3), 2); - }); - } - - #[test] - fn gap_bid_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - - // User 1 will make a bid for period 1 and 4 for the same Para 0 - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 1, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 4, 4, 4)); - - // User 2 and 3 will make a bid for para 1 on period 2 and 3 respectively - assert_ok!(Auctions::bid(Origin::signed(2), 1.into(), 1, 2, 2, 2)); - assert_ok!(Auctions::bid(Origin::signed(3), 1.into(), 1, 3, 3, 3)); - - // Total reserved should be the max of the two - assert_eq!(Balances::reserved_balance(1), 4); - - // Other people are reserved correctly too - assert_eq!(Balances::reserved_balance(2), 2); - assert_eq!(Balances::reserved_balance(3), 3); - - // End the auction. - run_to_block(9); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 4), LeaseData { leaser: 1, amount: 4 }), - ((1.into(), 2), LeaseData { leaser: 2, amount: 2 }), - ((1.into(), 3), LeaseData { leaser: 3, amount: 3 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 4); - assert_eq!(TestLeaser::deposit_held(1.into(), &2), 2); - assert_eq!(TestLeaser::deposit_held(1.into(), &3), 3); - }); - } - - #[test] - fn deposit_credit_should_work() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 1, 5)); - assert_eq!(Balances::reserved_balance(1), 5); - run_to_block(10); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 5 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 5); - - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 2)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 2, 2, 2, 6)); - // Only 1 reserved since we have a deposit credit of 5. - assert_eq!(Balances::reserved_balance(1), 1); - run_to_block(20); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 5 }), - ((0.into(), 2), LeaseData { leaser: 1, amount: 6 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 6); - }); - } - - #[test] - fn deposit_credit_on_alt_para_should_not_count() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 1, 5)); - assert_eq!(Balances::reserved_balance(1), 5); - run_to_block(10); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 5 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 5); - - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 2)); - assert_ok!(Auctions::bid(Origin::signed(1), 1.into(), 2, 2, 2, 6)); - // 6 reserved since we are bidding on a new para; only works because we don't - assert_eq!(Balances::reserved_balance(1), 6); - run_to_block(20); - - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 1, amount: 5 }), - ((1.into(), 2), LeaseData { leaser: 1, amount: 6 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 5); - assert_eq!(TestLeaser::deposit_held(1.into(), &1), 6); - }); - } - - #[test] - fn multiple_bids_work_pre_ending() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - - for i in 1..6u64 { - run_to_block(i as _); - assert_ok!(Auctions::bid(Origin::signed(i), 0.into(), 1, 1, 4, i)); - for j in 1..6 { - assert_eq!(Balances::reserved_balance(j), if j == i { j } else { 0 }); - assert_eq!(Balances::free_balance(j), if j == i { j * 9 } else { j * 10 }); - } - } - - run_to_block(9); - assert_eq!(leases(), vec![ - ((0.into(), 1), LeaseData { leaser: 5, amount: 5 }), - ((0.into(), 2), LeaseData { leaser: 5, amount: 5 }), - ((0.into(), 3), LeaseData { leaser: 5, amount: 5 }), - ((0.into(), 4), LeaseData { leaser: 5, amount: 5 }), - ]); - }); - } - - #[test] - fn multiple_bids_work_post_ending() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(Auctions::new_auction(Origin::signed(6), 0, 1)); - - for i in 1..6u64 { - run_to_block(((i - 1) / 2 + 1) as _); - assert_ok!(Auctions::bid(Origin::signed(i), 0.into(), 1, 1, 4, i)); - for j in 1..6 { - assert_eq!(Balances::reserved_balance(j), if j <= i { j } else { 0 }); - assert_eq!(Balances::free_balance(j), if j <= i { j * 9 } else { j * 10 }); - } - } - for i in 1..6u64 { - assert_eq!(ReservedAmounts::::get((i, ParaId::from(0))).unwrap(), i); - } - - run_to_block(5); - assert_eq!(leases(), (1..=4).map(|i| ((0.into(), i), LeaseData { leaser: 2, amount: 2 })).collect::>()); - }); - } - - #[test] - fn incomplete_calculate_winners_works() { - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ThreeThree as u8 as usize] = Some((1, 0.into(), 1)); - - let winners = vec![ - (1, 0.into(), 1, SlotRange::ThreeThree) - ]; - - assert_eq!(Auctions::calculate_winners(winning), winners); - } - - #[test] - fn first_incomplete_calculate_winners_works() { - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[0] = Some((1, 0.into(), 1)); - - let winners = vec![ - (1, 0.into(), 1, SlotRange::ZeroZero) - ]; - - assert_eq!(Auctions::calculate_winners(winning), winners); - } - - #[test] - fn calculate_winners_works() { - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ZeroZero as u8 as usize] = Some((2, 0.into(), 2)); - winning[SlotRange::ZeroThree as u8 as usize] = Some((1, 100.into(), 1)); - winning[SlotRange::OneOne as u8 as usize] = Some((3, 1.into(), 1)); - winning[SlotRange::TwoTwo as u8 as usize] = Some((1, 2.into(), 53)); - winning[SlotRange::ThreeThree as u8 as usize] = Some((5, 3.into(), 1)); - - let winners = vec![ - (2, 0.into(), 2, SlotRange::ZeroZero), - (3, 1.into(), 1, SlotRange::OneOne), - (1, 2.into(), 53, SlotRange::TwoTwo), - (5, 3.into(), 1, SlotRange::ThreeThree), - ]; - assert_eq!(Auctions::calculate_winners(winning.clone()), winners); - - winning[SlotRange::ZeroOne as u8 as usize] = Some((4, 10.into(), 3)); - let winners = vec![ - (4, 10.into(), 3, SlotRange::ZeroOne), - (1, 2.into(), 53, SlotRange::TwoTwo), - (5, 3.into(), 1, SlotRange::ThreeThree), - ]; - assert_eq!(Auctions::calculate_winners(winning.clone()), winners); - - winning[SlotRange::ZeroThree as u8 as usize] = Some((1, 100.into(), 100)); - let winners = vec![ - (1, 100.into(), 100, SlotRange::ZeroThree), - ]; - assert_eq!(Auctions::calculate_winners(winning.clone()), winners); - } - - #[test] - fn lower_bids_are_correctly_refunded() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 1, 1)); - let para_1 = ParaId::from(1); - let para_2 = ParaId::from(2); - - // Make a bid and reserve a balance - assert_ok!(Auctions::bid(Origin::signed(1), para_1, 1, 1, 4, 10)); - assert_eq!(Balances::reserved_balance(1), 10); - assert_eq!(ReservedAmounts::::get((1, para_1)), Some(10)); - assert_eq!(Balances::reserved_balance(2), 0); - assert_eq!(ReservedAmounts::::get((2, para_2)), None); - - // Bigger bid, reserves new balance and returns funds - assert_ok!(Auctions::bid(Origin::signed(2), para_2, 1, 1, 4, 20)); - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(ReservedAmounts::::get((1, para_1)), None); - assert_eq!(Balances::reserved_balance(2), 20); - assert_eq!(ReservedAmounts::::get((2, para_2)), Some(20)); - }); - } - - #[test] - fn initialize_winners_in_ending_period_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 9, 1)); - let para_1 = ParaId::from(1); - let para_2 = ParaId::from(2); - let para_3 = ParaId::from(3); - - // Make bids - assert_ok!(Auctions::bid(Origin::signed(1), para_1, 1, 1, 4, 10)); - assert_ok!(Auctions::bid(Origin::signed(2), para_2, 1, 3, 4, 20)); - - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ZeroThree as u8 as usize] = Some((1, para_1, 10)); - winning[SlotRange::TwoThree as u8 as usize] = Some((2, para_2, 20)); - assert_eq!(Auctions::winning(0), Some(winning)); - - run_to_block(9); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(10); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 0)); - assert_eq!(Auctions::winning(0), Some(winning)); - - run_to_block(11); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(1, 0)); - assert_eq!(Auctions::winning(1), Some(winning)); - assert_ok!(Auctions::bid(Origin::signed(3), para_3, 1, 3, 4, 30)); - - run_to_block(12); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 0)); - winning[SlotRange::TwoThree as u8 as usize] = Some((3, para_3, 30)); - assert_eq!(Auctions::winning(2), Some(winning)); - }); - } - - #[test] - fn handle_bid_requires_registered_para() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_noop!(Auctions::bid(Origin::signed(1), 1337.into(), 1, 1, 4, 1), Error::::ParaNotRegistered); - assert_ok!(TestRegistrar::::register(1, 1337.into(), Default::default(), Default::default())); - assert_ok!(Auctions::bid(Origin::signed(1), 1337.into(), 1, 1, 4, 1)); - }); - } - - #[test] - fn handle_bid_checks_existing_lease_periods() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 2, 3, 1)); - assert_eq!(Balances::reserved_balance(1), 1); - assert_eq!(Balances::free_balance(1), 9); - run_to_block(9); - - assert_eq!(leases(), vec![ - ((0.into(), 2), LeaseData { leaser: 1, amount: 1 }), - ((0.into(), 3), LeaseData { leaser: 1, amount: 1 }), - ]); - assert_eq!(TestLeaser::deposit_held(0.into(), &1), 1); - - // Para 1 just won an auction above and won some lease periods. - // No bids can work which overlap these periods. - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_noop!( - Auctions::bid(Origin::signed(1), 0.into(), 2, 1, 4, 1), - Error::::AlreadyLeasedOut, - ); - assert_noop!( - Auctions::bid(Origin::signed(1), 0.into(), 2, 1, 2, 1), - Error::::AlreadyLeasedOut, - ); - assert_noop!( - Auctions::bid(Origin::signed(1), 0.into(), 2, 3, 4, 1), - Error::::AlreadyLeasedOut, - ); - // This is okay, not an overlapping bid. - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 2, 1, 1, 1)); - }); - } - - // Here we will test that taking only 10 samples during the ending period works as expected. - #[test] - fn less_winning_samples_work() { - new_test_ext().execute_with(|| { - EndingPeriod::set(30); - SampleLength::set(10); - - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 9, 11)); - let para_1 = ParaId::from(1); - let para_2 = ParaId::from(2); - let para_3 = ParaId::from(3); - - // Make bids - assert_ok!(Auctions::bid(Origin::signed(1), para_1, 1, 11, 14, 10)); - assert_ok!(Auctions::bid(Origin::signed(2), para_2, 1, 13, 14, 20)); - - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ZeroThree as u8 as usize] = Some((1, para_1, 10)); - winning[SlotRange::TwoThree as u8 as usize] = Some((2, para_2, 20)); - assert_eq!(Auctions::winning(0), Some(winning)); - - run_to_block(9); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(10); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 0)); - assert_eq!(Auctions::winning(0), Some(winning)); - - // New bids update the current winning - assert_ok!(Auctions::bid(Origin::signed(3), para_3, 1, 14, 14, 30)); - winning[SlotRange::ThreeThree as u8 as usize] = Some((3, para_3, 30)); - assert_eq!(Auctions::winning(0), Some(winning)); - - run_to_block(20); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(1, 0)); - assert_eq!(Auctions::winning(1), Some(winning)); - run_to_block(25); - // Overbid mid sample - assert_ok!(Auctions::bid(Origin::signed(3), para_3, 1, 13, 14, 30)); - winning[SlotRange::TwoThree as u8 as usize] = Some((3, para_3, 30)); - assert_eq!(Auctions::winning(1), Some(winning)); - - run_to_block(30); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 0)); - assert_eq!(Auctions::winning(2), Some(winning)); - - set_last_random(H256::from([254; 32]), 40); - run_to_block(40); - // Auction ended and winner selected - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - assert_eq!(leases(), vec![ - ((3.into(), 13), LeaseData { leaser: 3, amount: 30 }), - ((3.into(), 14), LeaseData { leaser: 3, amount: 30 }), - ]); - }); - } - - #[test] - fn auction_status_works() { - new_test_ext().execute_with(|| { - EndingPeriod::set(30); - SampleLength::set(10); - set_last_random(Default::default(), 0); - - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 9, 11)); - - run_to_block(9); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::StartingPeriod); - - run_to_block(10); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 0)); - - run_to_block(11); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 1)); - - run_to_block(19); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(0, 9)); - - run_to_block(20); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(1, 0)); - - run_to_block(25); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(1, 5)); - - run_to_block(30); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 0)); - - run_to_block(39); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::EndingPeriod(2, 9)); - - run_to_block(40); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::VrfDelay(0)); - - run_to_block(44); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::VrfDelay(4)); - - set_last_random(Default::default(), 45); - run_to_block(45); - assert_eq!(Auctions::auction_status(System::block_number()), AuctionStatus::::NotStarted); - }); - } - - #[test] - fn can_cancel_auction() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(Auctions::new_auction(Origin::signed(6), 5, 1)); - assert_ok!(Auctions::bid(Origin::signed(1), 0.into(), 1, 1, 4, 1)); - assert_eq!(Balances::reserved_balance(1), 1); - assert_eq!(Balances::free_balance(1), 9); - - assert_noop!(Auctions::cancel_auction(Origin::signed(6)), BadOrigin); - assert_ok!(Auctions::cancel_auction(Origin::root())); - - assert!(AuctionInfo::::get().is_none()); - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(ReservedAmounts::::iter().count(), 0); - assert_eq!(Winning::::iter().count(), 0); - }); - } -} - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking { - use super::{*, Pallet as Auctions}; - use frame_system::RawOrigin; - use frame_support::traits::{EnsureOrigin, OnInitialize}; - use sp_runtime::{traits::Bounded, SaturatedConversion}; - - use frame_benchmarking::{benchmarks, whitelisted_caller, account, impl_benchmark_test_suite}; - - fn assert_last_event(generic_event: ::Event) { - let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); - // compare to the last event record - let frame_system::EventRecord { event, .. } = &events[events.len() - 1]; - assert_eq!(event, &system_event); - } - - fn fill_winners(lease_period_index: LeasePeriodOf) { - let auction_index = AuctionCounter::::get(); - let minimum_balance = CurrencyOf::::minimum_balance(); - - for n in 1 ..= SlotRange::SLOT_RANGE_COUNT as u32 { - let owner = account("owner", n, 0); - let worst_validation_code = T::Registrar::worst_validation_code(); - let worst_head_data = T::Registrar::worst_head_data(); - CurrencyOf::::make_free_balance_be(&owner, BalanceOf::::max_value()); - - assert!(T::Registrar::register( - owner, - ParaId::from(n), - worst_head_data, - worst_validation_code - ).is_ok()); - } - - T::Registrar::execute_pending_transitions(); - - for n in 1 ..= SlotRange::SLOT_RANGE_COUNT as u32 { - let bidder = account("bidder", n, 0); - CurrencyOf::::make_free_balance_be(&bidder, BalanceOf::::max_value()); - - let slot_range = SlotRange::n((n - 1) as u8).unwrap(); - let (start, end) = slot_range.as_pair(); - - assert!(Auctions::::bid( - RawOrigin::Signed(bidder).into(), - ParaId::from(n), - auction_index, - lease_period_index + start.into(), // First Slot - lease_period_index + end.into(), // Last slot - minimum_balance.saturating_mul(n.into()), // Amount - ).is_ok()); - } - } - - benchmarks! { - where_clause { where T: pallet_babe::Config } - - new_auction { - let duration = T::BlockNumber::max_value(); - let lease_period_index = LeasePeriodOf::::max_value(); - let origin = T::InitiateOrigin::successful_origin(); - }: _(RawOrigin::Root, duration, lease_period_index) - verify { - assert_last_event::(Event::::AuctionStarted( - AuctionCounter::::get(), - LeasePeriodOf::::max_value(), - T::BlockNumber::max_value(), - ).into()); - } - - // Worst case scenario a new bid comes in which kicks out an existing bid for the same slot. - bid { - // Create a new auction - let duration = T::BlockNumber::max_value(); - let lease_period_index = LeasePeriodOf::::zero(); - Auctions::::new_auction(RawOrigin::Root.into(), duration, lease_period_index)?; - - let para = ParaId::from(0); - let new_para = ParaId::from(1); - - // Register the paras - let owner = account("owner", 0, 0); - CurrencyOf::::make_free_balance_be(&owner, BalanceOf::::max_value()); - let worst_head_data = T::Registrar::worst_head_data(); - let worst_validation_code = T::Registrar::worst_validation_code(); - T::Registrar::register(owner.clone(), para, worst_head_data.clone(), worst_validation_code.clone())?; - T::Registrar::register(owner, new_para, worst_head_data, worst_validation_code)?; - T::Registrar::execute_pending_transitions(); - - // Make an existing bid - let auction_index = AuctionCounter::::get(); - let first_slot = AuctionInfo::::get().unwrap().0; - let last_slot = first_slot + 3u32.into(); - let first_amount = CurrencyOf::::minimum_balance(); - let first_bidder: T::AccountId = account("first_bidder", 0, 0); - CurrencyOf::::make_free_balance_be(&first_bidder, BalanceOf::::max_value()); - Auctions::::bid( - RawOrigin::Signed(first_bidder.clone()).into(), - para, - auction_index, - first_slot, - last_slot, - first_amount, - )?; - - let caller: T::AccountId = whitelisted_caller(); - CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); - let bigger_amount = CurrencyOf::::minimum_balance().saturating_mul(10u32.into()); - assert_eq!(CurrencyOf::::reserved_balance(&first_bidder), first_amount); - }: _(RawOrigin::Signed(caller.clone()), new_para, auction_index, first_slot, last_slot, bigger_amount) - verify { - // Confirms that we unreserved funds from a previous bidder, which is worst case scenario. - assert_eq!(CurrencyOf::::reserved_balance(&caller), bigger_amount); - } - - // Worst case: 10 bidders taking all wining spots, and we need to calculate the winner for auction end. - // Entire winner map should be full and removed at the end of the benchmark. - on_initialize { - // Create a new auction - let duration: T::BlockNumber = 99u32.into(); - let lease_period_index = LeasePeriodOf::::zero(); - let now = frame_system::Pallet::::block_number(); - Auctions::::new_auction(RawOrigin::Root.into(), duration, lease_period_index)?; - - fill_winners::(lease_period_index); - - for winner in Winning::::get(T::BlockNumber::from(0u32)).unwrap().iter() { - assert!(winner.is_some()); - } - - let winning_data = Winning::::get(T::BlockNumber::from(0u32)).unwrap(); - // Make winning map full - for i in 0u32 .. (T::EndingPeriod::get() / T::SampleLength::get()).saturated_into() { - Winning::::insert(T::BlockNumber::from(i), winning_data.clone()); - } - - // Move ahead to the block we want to initialize - frame_system::Pallet::::set_block_number(duration + now + T::EndingPeriod::get()); - - // Trigger epoch change for new random number value: - { - pallet_babe::Pallet::::on_initialize(duration + now + T::EndingPeriod::get()); - let authorities = pallet_babe::Pallet::::authorities(); - let next_authorities = authorities.clone(); - pallet_babe::Pallet::::enact_epoch_change(authorities, next_authorities); - } - - }: { - Auctions::::on_initialize(duration + now + T::EndingPeriod::get()); - } verify { - let auction_index = AuctionCounter::::get(); - assert_last_event::(Event::::AuctionClosed(auction_index).into()); - assert!(Winning::::iter().count().is_zero()); - } - - // Worst case: 10 bidders taking all wining spots, and winning data is full. - cancel_auction { - // Create a new auction - let duration: T::BlockNumber = 99u32.into(); - let lease_period_index = LeasePeriodOf::::zero(); - let now = frame_system::Pallet::::block_number(); - Auctions::::new_auction(RawOrigin::Root.into(), duration, lease_period_index)?; - - fill_winners::(lease_period_index); - - let winning_data = Winning::::get(T::BlockNumber::from(0u32)).unwrap(); - for winner in winning_data.iter() { - assert!(winner.is_some()); - } - - // Make winning map full - for i in 0u32 .. (T::EndingPeriod::get() / T::SampleLength::get()).saturated_into() { - Winning::::insert(T::BlockNumber::from(i), winning_data.clone()); - } - assert!(AuctionInfo::::get().is_some()); - }: _(RawOrigin::Root) - verify { - assert!(AuctionInfo::::get().is_none()); - } - } - - impl_benchmark_test_suite!( - Auctions, - crate::integration_tests::new_test_ext(), - crate::integration_tests::Test, - ); -} diff --git a/runtime/common/src/claims.rs b/runtime/common/src/claims.rs deleted file mode 100644 index 9b8b788d3ea5..000000000000 --- a/runtime/common/src/claims.rs +++ /dev/null @@ -1,1405 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Pallet to process claims from Ethereum addresses. - -use sp_std::{prelude::*, fmt::Debug}; -use sp_io::{hashing::keccak_256, crypto::secp256k1_ecdsa_recover}; -use frame_support::{ensure, traits::{Currency, Get, VestingSchedule, IsSubType}, weights::Weight}; -use parity_scale_codec::{Encode, Decode}; -#[cfg(feature = "std")] -use serde::{self, Serialize, Deserialize, Serializer, Deserializer}; -#[cfg(feature = "std")] -use sp_runtime::traits::Zero; -use sp_runtime::{ - traits::{CheckedSub, SignedExtension, DispatchInfoOf}, RuntimeDebug, - transaction_validity::{ - TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError, - }, -}; -use primitives::v1::ValidityError; -pub use pallet::*; - -type CurrencyOf = <::VestingSchedule as VestingSchedule<::AccountId>>::Currency; -type BalanceOf = as Currency<::AccountId>>::Balance; - -pub trait WeightInfo { - fn claim() -> Weight; - fn mint_claim() -> Weight; - fn claim_attest() -> Weight; - fn attest() -> Weight; - fn move_claim() -> Weight; -} - -pub struct TestWeightInfo; -impl WeightInfo for TestWeightInfo { - fn claim() -> Weight { 0 } - fn mint_claim() -> Weight { 0 } - fn claim_attest() -> Weight { 0 } - fn attest() -> Weight { 0 } - fn move_claim() -> Weight { 0 } -} - -/// The kind of statement an account needs to make for a claim to be valid. -#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub enum StatementKind { - /// Statement required to be made by non-SAFT holders. - Regular, - /// Statement required to be made by SAFT holders. - Saft, -} - -impl StatementKind { - /// Convert this to the (English) statement it represents. - fn to_text(self) -> &'static [u8] { - match self { - StatementKind::Regular => - &b"I hereby agree to the terms of the statement whose SHA-256 multihash is \ - Qmc1XYqT6S39WNp2UeiRUrZichUWUPpGEThDE6dAb3f6Ny. (This may be found at the URL: \ - https://statement.polkadot.network/regular.html)"[..], - StatementKind::Saft => - &b"I hereby agree to the terms of the statement whose SHA-256 multihash is \ - QmXEkMahfhHJPzT3RjkXiZVFi77ZeVeuxtAjhojGRNYckz. (This may be found at the URL: \ - https://statement.polkadot.network/saft.html)"[..], - } - } -} - -impl Default for StatementKind { - fn default() -> Self { - StatementKind::Regular - } -} - -/// An Ethereum address (i.e. 20 bytes, used to represent an Ethereum account). -/// -/// This gets serialized to the 0x-prefixed hex representation. -#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, Default, RuntimeDebug)] -pub struct EthereumAddress([u8; 20]); - -#[cfg(feature = "std")] -impl Serialize for EthereumAddress { - fn serialize(&self, serializer: S) -> Result where S: Serializer { - let hex: String = rustc_hex::ToHex::to_hex(&self.0[..]); - serializer.serialize_str(&format!("0x{}", hex)) - } -} - -#[cfg(feature = "std")] -impl<'de> Deserialize<'de> for EthereumAddress { - fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { - let base_string = String::deserialize(deserializer)?; - let offset = if base_string.starts_with("0x") { 2 } else { 0 }; - let s = &base_string[offset..]; - if s.len() != 40 { - Err(serde::de::Error::custom("Bad length of Ethereum address (should be 42 including '0x')"))?; - } - let raw: Vec = rustc_hex::FromHex::from_hex(s) - .map_err(|e| serde::de::Error::custom(format!("{:?}", e)))?; - let mut r = Self::default(); - r.0.copy_from_slice(&raw); - Ok(r) - } -} - -#[derive(Encode, Decode, Clone)] -pub struct EcdsaSignature(pub [u8; 65]); - -impl PartialEq for EcdsaSignature { - fn eq(&self, other: &Self) -> bool { - &self.0[..] == &other.0[..] - } -} - -impl sp_std::fmt::Debug for EcdsaSignature { - fn fmt(&self, f: &mut sp_std::fmt::Formatter<'_>) -> sp_std::fmt::Result { - write!(f, "EcdsaSignature({:?})", &self.0[..]) - } -} - -#[frame_support::pallet] -pub mod pallet { - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - /// Configuration trait. - #[pallet::config] - pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + IsType<::Event>; - type VestingSchedule: VestingSchedule; - #[pallet::constant] - type Prefix: Get<&'static [u8]>; - type MoveClaimOrigin: EnsureOrigin; - type WeightInfo: WeightInfo; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId", BalanceOf = "Balance")] - pub enum Event { - /// Someone claimed some DOTs. [who, ethereum_address, amount] - Claimed(T::AccountId, EthereumAddress, BalanceOf), - } - - #[pallet::error] - pub enum Error { - /// Invalid Ethereum signature. - InvalidEthereumSignature, - /// Ethereum address has no claim. - SignerHasNoClaim, - /// Account ID sending tx has no claim. - SenderHasNoClaim, - /// There's not enough in the pot to pay out some unvested amount. Generally implies a logic - /// error. - PotUnderflow, - /// A needed statement was not included. - InvalidStatement, - /// The account already has a vested balance. - VestedBalanceExists, - } - - #[pallet::storage] - #[pallet::getter(fn claims)] - pub(super) type Claims = StorageMap<_, Identity, EthereumAddress, BalanceOf>; - - #[pallet::storage] - #[pallet::getter(fn total)] - pub(super) type Total = StorageValue<_, BalanceOf, ValueQuery>; - - /// Vesting schedule for a claim. - /// First balance is the total amount that should be held for vesting. - /// Second balance is how much should be unlocked per block. - /// The block number is when the vesting should start. - #[pallet::storage] - #[pallet::getter(fn vesting)] - pub(super) type Vesting = StorageMap< - _, - Identity, EthereumAddress, - (BalanceOf, BalanceOf, T::BlockNumber), - >; - - /// The statement kind that must be signed, if any. - #[pallet::storage] - pub(super) type Signing = StorageMap<_, Identity, EthereumAddress, StatementKind>; - - /// Pre-claimed Ethereum accounts, by the Account ID that they are claimed to. - #[pallet::storage] - pub(super) type Preclaims = StorageMap<_, Identity, T::AccountId, EthereumAddress>; - - #[pallet::genesis_config] - pub struct GenesisConfig { - pub claims: Vec<(EthereumAddress, BalanceOf, Option, Option)>, - pub vesting: Vec<(EthereumAddress, (BalanceOf, BalanceOf, T::BlockNumber))>, - } - - #[cfg(feature = "std")] - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { - claims: Default::default(), - vesting: Default::default(), - } - } - } - - #[pallet::genesis_build] - impl GenesisBuild for GenesisConfig { - fn build(&self) { - // build `Claims` - self.claims.iter().map(|(a, b, _, _)| (a.clone(), b.clone())).for_each(|(a, b)| { - Claims::::insert(a, b); - }); - // build `Total` - Total::::put( - self.claims.iter().fold(Zero::zero(), |acc: BalanceOf, &(_, b, _, _)| acc + b), - ); - // build `Vesting` - self.vesting.iter().for_each(|(k, v)| { Vesting::::insert(k, v); }); - // build `Signing` - self.claims.iter() - .filter_map(|(a, _, _, s)| Some((a.clone(), s.clone()?))) - .for_each(|(a, s)| { - Signing::::insert(a, s); - }); - // build `Preclaims` - self.claims.iter() - .filter_map(|(a, _, i, _)| Some((i.clone()?, a.clone()))) - .for_each(|(i, a)| { - Preclaims::::insert(i, a); - }); - } - } - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - /// Make a claim to collect your DOTs. - /// - /// The dispatch origin for this call must be _None_. - /// - /// Unsigned Validation: - /// A call to claim is deemed valid if the signature provided matches - /// the expected signed message of: - /// - /// > Ethereum Signed Message: - /// > (configured prefix string)(address) - /// - /// and `address` matches the `dest` account. - /// - /// Parameters: - /// - `dest`: The destination account to payout the claim. - /// - `ethereum_signature`: The signature of an ethereum signed message - /// matching the format described above. - /// - /// - /// The weight of this call is invariant over the input parameters. - /// Weight includes logic to validate unsigned `claim` call. - /// - /// Total Complexity: O(1) - /// - #[pallet::weight(T::WeightInfo::claim())] - pub fn claim( - origin: OriginFor, - dest: T::AccountId, - ethereum_signature: EcdsaSignature - ) -> DispatchResult { - ensure_none(origin)?; - - let data = dest.using_encoded(to_ascii_hex); - let signer = Self::eth_recover(ðereum_signature, &data, &[][..]) - .ok_or(Error::::InvalidEthereumSignature)?; - ensure!(Signing::::get(&signer).is_none(), Error::::InvalidStatement); - - Self::process_claim(signer, dest)?; - Ok(()) - } - - /// Mint a new claim to collect DOTs. - /// - /// The dispatch origin for this call must be _Root_. - /// - /// Parameters: - /// - `who`: The Ethereum address allowed to collect this claim. - /// - `value`: The number of DOTs that will be claimed. - /// - `vesting_schedule`: An optional vesting schedule for these DOTs. - /// - /// - /// The weight of this call is invariant over the input parameters. - /// We assume worst case that both vesting and statement is being inserted. - /// - /// Total Complexity: O(1) - /// - #[pallet::weight(T::WeightInfo::mint_claim())] - pub fn mint_claim( - origin: OriginFor, - who: EthereumAddress, - value: BalanceOf, - vesting_schedule: Option<(BalanceOf, BalanceOf, T::BlockNumber)>, - statement: Option, - ) -> DispatchResult { - ensure_root(origin)?; - - >::mutate(|t| *t += value); - >::insert(who, value); - if let Some(vs) = vesting_schedule { - >::insert(who, vs); - } - if let Some(s) = statement { - Signing::::insert(who, s); - } - Ok(()) - } - - /// Make a claim to collect your DOTs by signing a statement. - /// - /// The dispatch origin for this call must be _None_. - /// - /// Unsigned Validation: - /// A call to `claim_attest` is deemed valid if the signature provided matches - /// the expected signed message of: - /// - /// > Ethereum Signed Message: - /// > (configured prefix string)(address)(statement) - /// - /// and `address` matches the `dest` account; the `statement` must match that which is - /// expected according to your purchase arrangement. - /// - /// Parameters: - /// - `dest`: The destination account to payout the claim. - /// - `ethereum_signature`: The signature of an ethereum signed message - /// matching the format described above. - /// - `statement`: The identity of the statement which is being attested to in the signature. - /// - /// - /// The weight of this call is invariant over the input parameters. - /// Weight includes logic to validate unsigned `claim_attest` call. - /// - /// Total Complexity: O(1) - /// - #[pallet::weight(T::WeightInfo::claim_attest())] - pub fn claim_attest( - origin: OriginFor, - dest: T::AccountId, - ethereum_signature: EcdsaSignature, - statement: Vec, - ) -> DispatchResult { - ensure_none(origin)?; - - let data = dest.using_encoded(to_ascii_hex); - let signer = Self::eth_recover(ðereum_signature, &data, &statement) - .ok_or(Error::::InvalidEthereumSignature)?; - if let Some(s) = Signing::::get(signer) { - ensure!(s.to_text() == &statement[..], Error::::InvalidStatement); - } - Self::process_claim(signer, dest)?; - Ok(()) - } - - /// Attest to a statement, needed to finalize the claims process. - /// - /// WARNING: Insecure unless your chain includes `PrevalidateAttests` as a `SignedExtension`. - /// - /// Unsigned Validation: - /// A call to attest is deemed valid if the sender has a `Preclaim` registered - /// and provides a `statement` which is expected for the account. - /// - /// Parameters: - /// - `statement`: The identity of the statement which is being attested to in the signature. - /// - /// - /// The weight of this call is invariant over the input parameters. - /// Weight includes logic to do pre-validation on `attest` call. - /// - /// Total Complexity: O(1) - /// - #[pallet::weight(( - T::WeightInfo::attest(), - DispatchClass::Normal, - Pays::No - ))] - pub fn attest(origin: OriginFor, statement: Vec) -> DispatchResult { - let who = ensure_signed(origin)?; - let signer = Preclaims::::get(&who).ok_or(Error::::SenderHasNoClaim)?; - if let Some(s) = Signing::::get(signer) { - ensure!(s.to_text() == &statement[..], Error::::InvalidStatement); - } - Self::process_claim(signer, who.clone())?; - Preclaims::::remove(&who); - Ok(()) - } - - #[pallet::weight(T::WeightInfo::move_claim())] - pub fn move_claim( - origin: OriginFor, - old: EthereumAddress, - new: EthereumAddress, - maybe_preclaim: Option, - ) -> DispatchResultWithPostInfo { - T::MoveClaimOrigin::try_origin(origin).map(|_| ()).or_else(ensure_root)?; - - Claims::::take(&old).map(|c| Claims::::insert(&new, c)); - Vesting::::take(&old).map(|c| Vesting::::insert(&new, c)); - Signing::::take(&old).map(|c| Signing::::insert(&new, c)); - maybe_preclaim.map(|preclaim| Preclaims::::mutate(&preclaim, |maybe_o| - if maybe_o.as_ref().map_or(false, |o| o == &old) { *maybe_o = Some(new) } - )); - Ok(Pays::No.into()) - } - } - - #[pallet::validate_unsigned] - impl ValidateUnsigned for Pallet { - type Call = Call; - - fn validate_unsigned(_source: TransactionSource, call: &Self::Call) -> TransactionValidity { - const PRIORITY: u64 = 100; - - let (maybe_signer, maybe_statement) = match call { - // - // The weight of this logic is included in the `claim` dispatchable. - // - Call::claim(account, ethereum_signature) => { - let data = account.using_encoded(to_ascii_hex); - (Self::eth_recover(ðereum_signature, &data, &[][..]), None) - } - // - // The weight of this logic is included in the `claim_attest` dispatchable. - // - Call::claim_attest(account, ethereum_signature, statement) => { - let data = account.using_encoded(to_ascii_hex); - (Self::eth_recover(ðereum_signature, &data, &statement), Some(statement.as_slice())) - } - _ => return Err(InvalidTransaction::Call.into()), - }; - - let signer = maybe_signer - .ok_or(InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()))?; - - let e = InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()); - ensure!(>::contains_key(&signer), e); - - let e = InvalidTransaction::Custom(ValidityError::InvalidStatement.into()); - match Signing::::get(signer) { - None => ensure!(maybe_statement.is_none(), e), - Some(s) => ensure!(Some(s.to_text()) == maybe_statement, e), - } - - Ok(ValidTransaction { - priority: PRIORITY, - requires: vec![], - provides: vec![("claims", signer).encode()], - longevity: TransactionLongevity::max_value(), - propagate: true, - }) - } - } -} - -/// Converts the given binary data into ASCII-encoded hex. It will be twice the length. -fn to_ascii_hex(data: &[u8]) -> Vec { - let mut r = Vec::with_capacity(data.len() * 2); - let mut push_nibble = |n| r.push(if n < 10 { b'0' + n } else { b'a' - 10 + n }); - for &b in data.iter() { - push_nibble(b / 16); - push_nibble(b % 16); - } - r -} - -impl Pallet { - // Constructs the message that Ethereum RPC's `personal_sign` and `eth_sign` would sign. - fn ethereum_signable_message(what: &[u8], extra: &[u8]) -> Vec { - let prefix = T::Prefix::get(); - let mut l = prefix.len() + what.len() + extra.len(); - let mut rev = Vec::new(); - while l > 0 { - rev.push(b'0' + (l % 10) as u8); - l /= 10; - } - let mut v = b"\x19Ethereum Signed Message:\n".to_vec(); - v.extend(rev.into_iter().rev()); - v.extend_from_slice(&prefix[..]); - v.extend_from_slice(what); - v.extend_from_slice(extra); - v - } - - // Attempts to recover the Ethereum address from a message signature signed by using - // the Ethereum RPC's `personal_sign` and `eth_sign`. - fn eth_recover(s: &EcdsaSignature, what: &[u8], extra: &[u8]) -> Option { - let msg = keccak_256(&Self::ethereum_signable_message(what, extra)); - let mut res = EthereumAddress::default(); - res.0.copy_from_slice(&keccak_256(&secp256k1_ecdsa_recover(&s.0, &msg).ok()?[..])[12..]); - Some(res) - } - - fn process_claim(signer: EthereumAddress, dest: T::AccountId) -> sp_runtime::DispatchResult { - let balance_due = >::get(&signer) - .ok_or(Error::::SignerHasNoClaim)?; - - let new_total = Self::total().checked_sub(&balance_due).ok_or(Error::::PotUnderflow)?; - - let vesting = Vesting::::get(&signer); - if vesting.is_some() && T::VestingSchedule::vesting_balance(&dest).is_some() { - return Err(Error::::VestedBalanceExists.into()) - } - - // We first need to deposit the balance to ensure that the account exists. - CurrencyOf::::deposit_creating(&dest, balance_due); - - // Check if this claim should have a vesting schedule. - if let Some(vs) = vesting { - // This can only fail if the account already has a vesting schedule, - // but this is checked above. - T::VestingSchedule::add_vesting_schedule(&dest, vs.0, vs.1, vs.2) - .expect("No other vesting schedule exists, as checked above; qed"); - } - - >::put(new_total); - >::remove(&signer); - >::remove(&signer); - Signing::::remove(&signer); - - // Let's deposit an event to let the outside world know this happened. - Self::deposit_event(Event::::Claimed(dest, signer, balance_due)); - - Ok(()) - } -} - -/// Validate `attest` calls prior to execution. Needed to avoid a DoS attack since they are -/// otherwise free to place on chain. -#[derive(Encode, Decode, Clone, Eq, PartialEq)] -pub struct PrevalidateAttests(sp_std::marker::PhantomData) where - ::Call: IsSubType>; - -impl Debug for PrevalidateAttests where - ::Call: IsSubType> -{ - #[cfg(feature = "std")] - fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - write!(f, "PrevalidateAttests") - } - - #[cfg(not(feature = "std"))] - fn fmt(&self, _: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - Ok(()) - } -} - -impl PrevalidateAttests where - ::Call: IsSubType> -{ - /// Create new `SignedExtension` to check runtime version. - pub fn new() -> Self { - Self(sp_std::marker::PhantomData) - } -} - -impl SignedExtension for PrevalidateAttests where - ::Call: IsSubType> -{ - type AccountId = T::AccountId; - type Call = ::Call; - type AdditionalSigned = (); - type Pre = (); - const IDENTIFIER: &'static str = "PrevalidateAttests"; - - fn additional_signed(&self) -> Result { - Ok(()) - } - - // - // The weight of this logic is included in the `attest` dispatchable. - // - fn validate( - &self, - who: &Self::AccountId, - call: &Self::Call, - _info: &DispatchInfoOf, - _len: usize, - ) -> TransactionValidity { - if let Some(local_call) = call.is_sub_type() { - if let Call::attest(attested_statement) = local_call { - let signer = Preclaims::::get(who) - .ok_or(InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()))?; - if let Some(s) = Signing::::get(signer) { - let e = InvalidTransaction::Custom(ValidityError::InvalidStatement.into()); - ensure!(&attested_statement[..] == s.to_text(), e); - } - } - } - Ok(ValidTransaction::default()) - } -} - -#[cfg(any(test, feature = "runtime-benchmarks"))] -mod secp_utils { - use super::*; - use secp256k1; - - pub fn public(secret: &secp256k1::SecretKey) -> secp256k1::PublicKey { - secp256k1::PublicKey::from_secret_key(secret) - } - pub fn eth(secret: &secp256k1::SecretKey) -> EthereumAddress { - let mut res = EthereumAddress::default(); - res.0.copy_from_slice(&keccak_256(&public(secret).serialize()[1..65])[12..]); - res - } - pub fn sig(secret: &secp256k1::SecretKey, what: &[u8], extra: &[u8]) -> EcdsaSignature { - let msg = keccak_256(&>::ethereum_signable_message(&to_ascii_hex(what)[..], extra)); - let (sig, recovery_id) = secp256k1::sign(&secp256k1::Message::parse(&msg), secret); - let mut r = [0u8; 65]; - r[0..64].copy_from_slice(&sig.serialize()[..]); - r[64] = recovery_id.serialize(); - EcdsaSignature(r) - } -} - -#[cfg(test)] -mod tests { - use secp256k1; - use hex_literal::hex; - use super::*; - use secp_utils::*; - - use sp_core::H256; - use parity_scale_codec::Encode; - // The testing primitives are very useful for avoiding having to work with signatures - // or public keys. `u64` is used as the `AccountId` and no `Signature`s are required. - use sp_runtime::{ - traits::{BlakeTwo256, IdentityLookup, Identity}, - transaction_validity::TransactionLongevity, - testing::Header, - }; - use frame_support::{ - assert_ok, assert_err, assert_noop, parameter_types, - ord_parameter_types, weights::{Pays, GetDispatchInfo}, traits::{ExistenceRequirement, GenesisBuild}, - dispatch::DispatchError::BadOrigin, - }; - use pallet_balances; - use crate::claims; - use claims::Call as ClaimsCall; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Vesting: pallet_vesting::{Pallet, Call, Storage, Config, Event}, - Claims: claims::{Pallet, Call, Storage, Config, Event, ValidateUnsigned}, - } - ); - - parameter_types! { - pub const BlockHashCount: u32 = 250; - } - impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: u64 = 1; - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - } - - parameter_types! { - pub const MinVestedTransfer: u64 = 0; - } - - impl pallet_vesting::Config for Test { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = Identity; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = (); - } - - parameter_types!{ - pub Prefix: &'static [u8] = b"Pay RUSTs to the TEST account:"; - } - ord_parameter_types! { - pub const Six: u64 = 6; - } - - impl Config for Test { - type Event = Event; - type VestingSchedule = Vesting; - type Prefix = Prefix; - type MoveClaimOrigin = frame_system::EnsureSignedBy; - type WeightInfo = TestWeightInfo; - } - - fn alice() -> secp256k1::SecretKey { - secp256k1::SecretKey::parse(&keccak_256(b"Alice")).unwrap() - } - fn bob() -> secp256k1::SecretKey { - secp256k1::SecretKey::parse(&keccak_256(b"Bob")).unwrap() - } - fn dave() -> secp256k1::SecretKey { - secp256k1::SecretKey::parse(&keccak_256(b"Dave")).unwrap() - } - fn eve() -> secp256k1::SecretKey { - secp256k1::SecretKey::parse(&keccak_256(b"Eve")).unwrap() - } - fn frank() -> secp256k1::SecretKey { - secp256k1::SecretKey::parse(&keccak_256(b"Frank")).unwrap() - } - - // This function basically just builds a genesis storage key/value store according to - // our desired mockup. - pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - // We use default for brevity, but you can configure as desired if needed. - pallet_balances::GenesisConfig::::default().assimilate_storage(&mut t).unwrap(); - claims::GenesisConfig::{ - claims: vec![ - (eth(&alice()), 100, None, None), - (eth(&dave()), 200, None, Some(StatementKind::Regular)), - (eth(&eve()), 300, Some(42), Some(StatementKind::Saft)), - (eth(&frank()), 400, Some(43), None), - ], - vesting: vec![(eth(&alice()), (50, 10, 1))], - }.assimilate_storage(&mut t).unwrap(); - t.into() - } - - fn total_claims() -> u64 { - 100 + 200 + 300 + 400 - } - - #[test] - fn basic_setup_works() { - new_test_ext().execute_with(|| { - assert_eq!(Claims::total(), total_claims()); - assert_eq!(Claims::claims(ð(&alice())), Some(100)); - assert_eq!(Claims::claims(ð(&dave())), Some(200)); - assert_eq!(Claims::claims(ð(&eve())), Some(300)); - assert_eq!(Claims::claims(ð(&frank())), Some(400)); - assert_eq!(Claims::claims(&EthereumAddress::default()), None); - assert_eq!(Claims::vesting(ð(&alice())), Some((50, 10, 1))); - }); - } - - #[test] - fn serde_works() { - let x = EthereumAddress(hex!["0123456789abcdef0123456789abcdef01234567"]); - let y = serde_json::to_string(&x).unwrap(); - assert_eq!(y, "\"0x0123456789abcdef0123456789abcdef01234567\""); - let z: EthereumAddress = serde_json::from_str(&y).unwrap(); - assert_eq!(x, z); - } - - #[test] - fn claiming_works() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..]))); - assert_eq!(Balances::free_balance(&42), 100); - assert_eq!(Vesting::vesting_balance(&42), Some(50)); - assert_eq!(Claims::total(), total_claims() - 100); - }); - } - - #[test] - fn basic_claim_moving_works() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_noop!(Claims::move_claim(Origin::signed(1), eth(&alice()), eth(&bob()), None), BadOrigin); - assert_ok!(Claims::move_claim(Origin::signed(6), eth(&alice()), eth(&bob()), None)); - assert_noop!(Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..])), Error::::SignerHasNoClaim); - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&bob(), &42u64.encode(), &[][..]))); - assert_eq!(Balances::free_balance(&42), 100); - assert_eq!(Vesting::vesting_balance(&42), Some(50)); - assert_eq!(Claims::total(), total_claims() - 100); - }); - } - - #[test] - fn claim_attest_moving_works() { - new_test_ext().execute_with(|| { - assert_ok!(Claims::move_claim(Origin::signed(6), eth(&dave()), eth(&bob()), None)); - let s = sig::(&bob(), &42u64.encode(), StatementKind::Regular.to_text()); - assert_ok!(Claims::claim_attest(Origin::none(), 42, s, StatementKind::Regular.to_text().to_vec())); - assert_eq!(Balances::free_balance(&42), 200); - }); - } - - #[test] - fn attest_moving_works() { - new_test_ext().execute_with(|| { - assert_ok!(Claims::move_claim(Origin::signed(6), eth(&eve()), eth(&bob()), Some(42))); - assert_ok!(Claims::attest(Origin::signed(42), StatementKind::Saft.to_text().to_vec())); - assert_eq!(Balances::free_balance(&42), 300); - }); - } - - #[test] - fn claiming_does_not_bypass_signing() { - new_test_ext().execute_with(|| { - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..]))); - assert_noop!( - Claims::claim(Origin::none(), 42, sig::(&dave(), &42u64.encode(), &[][..])), - Error::::InvalidStatement, - ); - assert_noop!( - Claims::claim(Origin::none(), 42, sig::(&eve(), &42u64.encode(), &[][..])), - Error::::InvalidStatement, - ); - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&frank(), &42u64.encode(), &[][..]))); - }); - } - - #[test] - fn attest_claiming_works() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - let s = sig::(&dave(), &42u64.encode(), StatementKind::Saft.to_text()); - let r = Claims::claim_attest(Origin::none(), 42, s.clone(), StatementKind::Saft.to_text().to_vec()); - assert_noop!(r, Error::::InvalidStatement); - - let r = Claims::claim_attest(Origin::none(), 42, s, StatementKind::Regular.to_text().to_vec()); - assert_noop!(r, Error::::SignerHasNoClaim); - // ^^^ we use ecdsa_recover, so an invalid signature just results in a random signer id - // being recovered, which realistically will never have a claim. - - let s = sig::(&dave(), &42u64.encode(), StatementKind::Regular.to_text()); - assert_ok!(Claims::claim_attest(Origin::none(), 42, s, StatementKind::Regular.to_text().to_vec())); - assert_eq!(Balances::free_balance(&42), 200); - assert_eq!(Claims::total(), total_claims() - 200); - - let s = sig::(&dave(), &42u64.encode(), StatementKind::Regular.to_text()); - let r = Claims::claim_attest(Origin::none(), 42, s, StatementKind::Regular.to_text().to_vec()); - assert_noop!(r, Error::::SignerHasNoClaim); - }); - } - - #[test] - fn attesting_works() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_noop!(Claims::attest(Origin::signed(69), StatementKind::Saft.to_text().to_vec()), Error::::SenderHasNoClaim); - assert_noop!(Claims::attest(Origin::signed(42), StatementKind::Regular.to_text().to_vec()), Error::::InvalidStatement); - assert_ok!(Claims::attest(Origin::signed(42), StatementKind::Saft.to_text().to_vec())); - assert_eq!(Balances::free_balance(&42), 300); - assert_eq!(Claims::total(), total_claims() - 300); - }); - } - - #[test] - fn claim_cannot_clobber_preclaim() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - // Alice's claim is 100 - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..]))); - assert_eq!(Balances::free_balance(&42), 100); - // Eve's claim is 300 through Account 42 - assert_ok!(Claims::attest(Origin::signed(42), StatementKind::Saft.to_text().to_vec())); - assert_eq!(Balances::free_balance(&42), 100 + 300); - assert_eq!(Claims::total(), total_claims() - 400); - }); - } - - #[test] - fn valid_attest_transactions_are_free() { - new_test_ext().execute_with(|| { - let p = PrevalidateAttests::::new(); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Saft.to_text().to_vec())); - let di = c.get_dispatch_info(); - assert_eq!(di.pays_fee, Pays::No); - let r = p.validate(&42, &c, &di, 20); - assert_eq!(r, TransactionValidity::Ok(ValidTransaction::default())); - }); - } - - #[test] - fn invalid_attest_transactions_are_recognised() { - new_test_ext().execute_with(|| { - let p = PrevalidateAttests::::new(); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Regular.to_text().to_vec())); - let di = c.get_dispatch_info(); - let r = p.validate(&42, &c, &di, 20); - assert!(r.is_err()); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Saft.to_text().to_vec())); - let di = c.get_dispatch_info(); - let r = p.validate(&69, &c, &di, 20); - assert!(r.is_err()); - }); - } - - #[test] - fn cannot_bypass_attest_claiming() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - let s = sig::(&dave(), &42u64.encode(), &[]); - let r = Claims::claim(Origin::none(), 42, s.clone()); - assert_noop!(r, Error::::InvalidStatement); - }); - } - - #[test] - fn add_claim_works() { - new_test_ext().execute_with(|| { - assert_noop!( - Claims::mint_claim(Origin::signed(42), eth(&bob()), 200, None, None), - sp_runtime::traits::BadOrigin, - ); - assert_eq!(Balances::free_balance(42), 0); - assert_noop!( - Claims::claim(Origin::none(), 69, sig::(&bob(), &69u64.encode(), &[][..])), - Error::::SignerHasNoClaim, - ); - assert_ok!(Claims::mint_claim(Origin::root(), eth(&bob()), 200, None, None)); - assert_eq!(Claims::total(), total_claims() + 200); - assert_ok!(Claims::claim(Origin::none(), 69, sig::(&bob(), &69u64.encode(), &[][..]))); - assert_eq!(Balances::free_balance(&69), 200); - assert_eq!(Vesting::vesting_balance(&69), None); - assert_eq!(Claims::total(), total_claims()); - }); - } - - #[test] - fn add_claim_with_vesting_works() { - new_test_ext().execute_with(|| { - assert_noop!( - Claims::mint_claim(Origin::signed(42), eth(&bob()), 200, Some((50, 10, 1)), None), - sp_runtime::traits::BadOrigin, - ); - assert_eq!(Balances::free_balance(42), 0); - assert_noop!( - Claims::claim(Origin::none(), 69, sig::(&bob(), &69u64.encode(), &[][..])), - Error::::SignerHasNoClaim, - ); - assert_ok!(Claims::mint_claim(Origin::root(), eth(&bob()), 200, Some((50, 10, 1)), None)); - assert_ok!(Claims::claim(Origin::none(), 69, sig::(&bob(), &69u64.encode(), &[][..]))); - assert_eq!(Balances::free_balance(&69), 200); - assert_eq!(Vesting::vesting_balance(&69), Some(50)); - - // Make sure we can not transfer the vested balance. - assert_err!( - >::transfer(&69, &80, 180, ExistenceRequirement::AllowDeath), - pallet_balances::Error::::LiquidityRestrictions, - ); - }); - } - - #[test] - fn add_claim_with_statement_works() { - new_test_ext().execute_with(|| { - assert_noop!( - Claims::mint_claim(Origin::signed(42), eth(&bob()), 200, None, Some(StatementKind::Regular)), - sp_runtime::traits::BadOrigin, - ); - assert_eq!(Balances::free_balance(42), 0); - let signature = sig::(&bob(), &69u64.encode(), StatementKind::Regular.to_text()); - assert_noop!( - Claims::claim_attest( - Origin::none(), 69, signature.clone(), StatementKind::Regular.to_text().to_vec() - ), - Error::::SignerHasNoClaim - ); - assert_ok!(Claims::mint_claim(Origin::root(), eth(&bob()), 200, None, Some(StatementKind::Regular))); - assert_noop!( - Claims::claim_attest( - Origin::none(), 69, signature.clone(), vec![], - ), - Error::::SignerHasNoClaim - ); - assert_ok!( - Claims::claim_attest( - Origin::none(), 69, signature.clone(), StatementKind::Regular.to_text().to_vec() - ) - ); - assert_eq!(Balances::free_balance(&69), 200); - }); - } - - #[test] - fn origin_signed_claiming_fail() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_err!( - Claims::claim(Origin::signed(42), 42, sig::(&alice(), &42u64.encode(), &[][..])), - sp_runtime::traits::BadOrigin, - ); - }); - } - - #[test] - fn double_claiming_doesnt_work() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_ok!(Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..]))); - assert_noop!( - Claims::claim(Origin::none(), 42, sig::(&alice(), &42u64.encode(), &[][..])), - Error::::SignerHasNoClaim - ); - }); - } - - #[test] - fn claiming_while_vested_doesnt_work() { - new_test_ext().execute_with(|| { - // A user is already vested - assert_ok!(::VestingSchedule::add_vesting_schedule(&69, total_claims(), 100, 10)); - CurrencyOf::::make_free_balance_be(&69, total_claims()); - assert_eq!(Balances::free_balance(69), total_claims()); - assert_ok!(Claims::mint_claim(Origin::root(), eth(&bob()), 200, Some((50, 10, 1)), None)); - // New total - assert_eq!(Claims::total(), total_claims() + 200); - - // They should not be able to claim - assert_noop!( - Claims::claim(Origin::none(), 69, sig::(&bob(), &69u64.encode(), &[][..])), - Error::::VestedBalanceExists, - ); - }); - } - - #[test] - fn non_sender_sig_doesnt_work() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_noop!( - Claims::claim(Origin::none(), 42, sig::(&alice(), &69u64.encode(), &[][..])), - Error::::SignerHasNoClaim - ); - }); - } - - #[test] - fn non_claimant_doesnt_work() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::free_balance(42), 0); - assert_noop!( - Claims::claim(Origin::none(), 42, sig::(&bob(), &69u64.encode(), &[][..])), - Error::::SignerHasNoClaim - ); - }); - } - - #[test] - fn real_eth_sig_works() { - new_test_ext().execute_with(|| { - // "Pay RUSTs to the TEST account:2a00000000000000" - let sig = hex!["444023e89b67e67c0562ed0305d252a5dd12b2af5ac51d6d3cb69a0b486bc4b3191401802dc29d26d586221f7256cd3329fe82174bdf659baea149a40e1c495d1c"]; - let sig = EcdsaSignature(sig); - let who = 42u64.using_encoded(to_ascii_hex); - let signer = Claims::eth_recover(&sig, &who, &[][..]).unwrap(); - assert_eq!(signer.0, hex!["6d31165d5d932d571f3b44695653b46dcc327e84"]); - }); - } - - #[test] - fn validate_unsigned_works() { - use sp_runtime::traits::ValidateUnsigned; - let source = sp_runtime::transaction_validity::TransactionSource::External; - - new_test_ext().execute_with(|| { - assert_eq!( - >::validate_unsigned(source, &ClaimsCall::claim(1, sig::(&alice(), &1u64.encode(), &[][..]))), - Ok(ValidTransaction { - priority: 100, - requires: vec![], - provides: vec![("claims", eth(&alice())).encode()], - longevity: TransactionLongevity::max_value(), - propagate: true, - }) - ); - assert_eq!( - >::validate_unsigned(source, &ClaimsCall::claim(0, EcdsaSignature([0; 65]))), - InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()).into(), - ); - assert_eq!( - >::validate_unsigned(source, &ClaimsCall::claim(1, sig::(&bob(), &1u64.encode(), &[][..]))), - InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), - ); - let s = sig::(&dave(), &1u64.encode(), StatementKind::Regular.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); - assert_eq!( - >::validate_unsigned(source, &call), - Ok(ValidTransaction { - priority: 100, - requires: vec![], - provides: vec![("claims", eth(&dave())).encode()], - longevity: TransactionLongevity::max_value(), - propagate: true, - }) - ); - assert_eq!( - >::validate_unsigned( - source, - &ClaimsCall::claim_attest(1, EcdsaSignature([0; 65]), - StatementKind::Regular.to_text().to_vec()) - ), - InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()).into(), - ); - - let s = sig::(&bob(), &1u64.encode(), StatementKind::Regular.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); - assert_eq!( - >::validate_unsigned(source, &call), - InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), - ); - - let s = sig::(&dave(), &1u64.encode(), StatementKind::Saft.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); - assert_eq!( - >::validate_unsigned(source, &call), - InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), - ); - - let s = sig::(&dave(), &1u64.encode(), StatementKind::Saft.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Saft.to_text().to_vec()); - assert_eq!( - >::validate_unsigned(source, &call), - InvalidTransaction::Custom(ValidityError::InvalidStatement.into()).into(), - ); - }); - } -} - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking { - use super::*; - use secp_utils::*; - use frame_system::RawOrigin; - use frame_benchmarking::{benchmarks, account}; - use sp_runtime::DispatchResult; - use sp_runtime::traits::ValidateUnsigned; - use crate::claims::Call; - - const SEED: u32 = 0; - - const MAX_CLAIMS: u32 = 10_000; - const VALUE: u32 = 1_000_000; - - fn create_claim(input: u32) -> DispatchResult { - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&input.encode())).unwrap(); - let eth_address = eth(&secret_key); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, None)?; - Ok(()) - } - - fn create_claim_attest(input: u32) -> DispatchResult { - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&input.encode())).unwrap(); - let eth_address = eth(&secret_key); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - super::Pallet::::mint_claim( - RawOrigin::Root.into(), - eth_address, - VALUE.into(), - vesting, - Some(Default::default()) - )?; - Ok(()) - } - - benchmarks! { - // Benchmark `claim` including `validate_unsigned` logic. - claim { - let c = MAX_CLAIMS; - - for i in 0 .. c / 2 { - create_claim::(c)?; - create_claim_attest::(u32::max_value() - c)?; - } - - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&c.encode())).unwrap(); - let eth_address = eth(&secret_key); - let account: T::AccountId = account("user", c, SEED); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - let signature = sig::(&secret_key, &account.encode(), &[][..]); - super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, None)?; - assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - let source = sp_runtime::transaction_validity::TransactionSource::External; - let call = Call::::claim(account.clone(), signature.clone()); - }: { - super::Pallet::::validate_unsigned(source, &call)?; - super::Pallet::::claim(RawOrigin::None.into(), account, signature)?; - } - verify { - assert_eq!(Claims::::get(eth_address), None); - } - - // Benchmark `mint_claim` when there already exists `c` claims in storage. - mint_claim { - let c = MAX_CLAIMS; - - for i in 0 .. c / 2 { - create_claim::(c)?; - create_claim_attest::(u32::max_value() - c)?; - } - - let eth_address = account("eth_address", 0, SEED); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - let statement = StatementKind::Regular; - }: _(RawOrigin::Root, eth_address, VALUE.into(), vesting, Some(statement)) - verify { - assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - } - - // Benchmark `claim_attest` including `validate_unsigned` logic. - claim_attest { - let c = MAX_CLAIMS; - - for i in 0 .. c / 2 { - create_claim::(c)?; - create_claim_attest::(u32::max_value() - c)?; - } - - // Crate signature - let attest_c = u32::max_value() - c; - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&attest_c.encode())).unwrap(); - let eth_address = eth(&secret_key); - let account: T::AccountId = account("user", c, SEED); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - let statement = StatementKind::Regular; - let signature = sig::(&secret_key, &account.encode(), statement.to_text()); - super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, Some(statement))?; - assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - let call = Call::::claim_attest(account.clone(), signature.clone(), StatementKind::Regular.to_text().to_vec()); - let source = sp_runtime::transaction_validity::TransactionSource::External; - }: { - super::Pallet::::validate_unsigned(source, &call)?; - super::Pallet::::claim_attest(RawOrigin::None.into(), account, signature, statement.to_text().to_vec())?; - } - verify { - assert_eq!(Claims::::get(eth_address), None); - } - - // Benchmark `attest` including prevalidate logic. - attest { - let c = MAX_CLAIMS; - - for i in 0 .. c / 2 { - create_claim::(c)?; - create_claim_attest::(u32::max_value() - c)?; - } - - let attest_c = u32::max_value() - c; - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&attest_c.encode())).unwrap(); - let eth_address = eth(&secret_key); - let account: T::AccountId = account("user", c, SEED); - let vesting = Some((100_000u32.into(), 1_000u32.into(), 100u32.into())); - let statement = StatementKind::Regular; - let signature = sig::(&secret_key, &account.encode(), statement.to_text()); - super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, Some(statement))?; - Preclaims::::insert(&account, eth_address); - assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - - let call = super::Call::attest(StatementKind::Regular.to_text().to_vec()); - // We have to copy the validate statement here because of trait issues... :( - let validate = |who: &T::AccountId, call: &super::Call| -> DispatchResult { - if let Call::attest(attested_statement) = call { - let signer = Preclaims::::get(who).ok_or("signer has no claim")?; - if let Some(s) = Signing::::get(signer) { - ensure!(&attested_statement[..] == s.to_text(), "invalid statement"); - } - } - Ok(()) - }; - }: { - validate(&account, &call)?; - super::Pallet::::attest(RawOrigin::Signed(account).into(), statement.to_text().to_vec())?; - } - verify { - assert_eq!(Claims::::get(eth_address), None); - } - - move_claim { - let c = MAX_CLAIMS; - - for i in 0 .. c / 2 { - create_claim::(c)?; - create_claim_attest::(u32::max_value() - c)?; - } - - let attest_c = u32::max_value() - c; - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&attest_c.encode())).unwrap(); - let eth_address = eth(&secret_key); - - let new_secret_key = secp256k1::SecretKey::parse(&keccak_256(&(u32::max_value()/2).encode())).unwrap(); - let new_eth_address = eth(&new_secret_key); - - let account: T::AccountId = account("user", c, SEED); - Preclaims::::insert(&account, eth_address); - - assert!(Claims::::contains_key(eth_address)); - assert!(!Claims::::contains_key(new_eth_address)); - }: _(RawOrigin::Root, eth_address, new_eth_address, Some(account)) - verify { - assert!(!Claims::::contains_key(eth_address)); - assert!(Claims::::contains_key(new_eth_address)); - } - - // Benchmark the time it takes to do `repeat` number of keccak256 hashes - #[extra] - keccak256 { - let i in 0 .. 10_000; - let bytes = (i).encode(); - }: { - for index in 0 .. i { - let _hash = keccak_256(&bytes); - } - } - - // Benchmark the time it takes to do `repeat` number of `eth_recover` - #[extra] - eth_recover { - let i in 0 .. 1_000; - // Crate signature - let secret_key = secp256k1::SecretKey::parse(&keccak_256(&i.encode())).unwrap(); - let account: T::AccountId = account("user", i, SEED); - let signature = sig::(&secret_key, &account.encode(), &[][..]); - let data = account.using_encoded(to_ascii_hex); - let extra = StatementKind::default().to_text(); - }: { - for _ in 0 .. i { - assert!(super::Pallet::::eth_recover(&signature, &data, extra).is_some()); - } - } - } - - #[cfg(test)] - mod tests { - use super::*; - use crate::claims::tests::{new_test_ext, Test}; - use frame_support::assert_ok; - - #[test] - fn test_benchmarks() { - new_test_ext().execute_with(|| { - assert_ok!(test_benchmark_claim::()); - assert_ok!(test_benchmark_mint_claim::()); - assert_ok!(test_benchmark_claim_attest::()); - assert_ok!(test_benchmark_attest::()); - assert_ok!(test_benchmark_move_claim::()); - assert_ok!(test_benchmark_keccak256::()); - assert_ok!(test_benchmark_eth_recover::()); - }); - } - } -} diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs deleted file mode 100644 index cb257dd17228..000000000000 --- a/runtime/common/src/crowdloan.rs +++ /dev/null @@ -1,1888 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! # Parachain Crowdloaning pallet -//! -//! The point of this pallet is to allow parachain projects to offer the ability to help fund a -//! deposit for the parachain. When the crowdloan has ended, the funds are returned. -//! -//! Each fund has a child-trie which stores all contributors account IDs together with the amount -//! they contributed; the root of this can then be used by the parachain to allow contributors to -//! prove that they made some particular contribution to the project (e.g. to be rewarded through -//! some token or badge). The trie is retained for later (efficient) redistribution back to the -//! contributors. -//! -//! Contributions must be of at least `MinContribution` (to account for the resources taken in -//! tracking contributions), and may never tally greater than the fund's `cap`, set and fixed at the -//! time of creation. The `create` call may be used to create a new fund. In order to do this, then -//! a deposit must be paid of the amount `SubmissionDeposit`. Substantial resources are taken on -//! the main trie in tracking a fund and this accounts for that. -//! -//! Funds may be set up during an auction period; their closing time is fixed at creation (as a -//! block number) and if the fund is not successful by the closing time, then it can be dissolved. -//! Funds may span multiple auctions, and even auctions that sell differing periods. However, for a -//! fund to be active in bidding for an auction, it *must* have had *at least one bid* since the end -//! of the last auction. Until a fund takes a further bid following the end of an auction, then it -//! will be inactive. -//! -//! Contributors will get a refund of their contributions from completed funds before the crowdloan -//! can be dissolved. -//! -//! Funds may accept contributions at any point before their success or end. When a parachain -//! slot auction enters its ending period, then parachains will each place a bid; the bid will be -//! raised once per block if the parachain had additional funds contributed since the last bid. -//! -//! Successful funds remain tracked (in the `Funds` storage item and the associated child trie) as long as -//! the parachain remains active. Users can withdraw their funds once the slot is completed and funds are -//! returned to the crowdloan account. - -use frame_support::{ - ensure, Identity, PalletId, - storage::{child, ChildTriePrefixIterator}, - traits::{ - Currency, ReservableCurrency, Get, ExistenceRequirement::AllowDeath - }, - pallet_prelude::Weight, -}; -use sp_runtime::{ - RuntimeDebug, MultiSignature, MultiSigner, - traits::{ - AccountIdConversion, Hash, Saturating, Zero, One, CheckedAdd, Verify, IdentifyAccount, - }, -}; -use crate::traits::{Registrar, Auctioneer}; -use crate::slot_range::SlotRange; -use parity_scale_codec::{Encode, Decode}; -use sp_std::vec::Vec; -use primitives::v1::Id as ParaId; -pub use pallet::*; - -type CurrencyOf = <::Auctioneer as Auctioneer>::Currency; -type LeasePeriodOf = <::Auctioneer as Auctioneer>::LeasePeriod; -type BalanceOf = as Currency<::AccountId>>::Balance; - -#[allow(dead_code)] -type NegativeImbalanceOf = as Currency<::AccountId>>::NegativeImbalance; - -type TrieIndex = u32; - -pub trait WeightInfo { - fn create() -> Weight; - fn contribute() -> Weight; - fn withdraw() -> Weight; - fn refund(k: u32, ) -> Weight; - fn dissolve() -> Weight; - fn edit() -> Weight; - fn add_memo() -> Weight; - fn on_initialize(n: u32, ) -> Weight; - fn poke() -> Weight; -} - -pub struct TestWeightInfo; -impl WeightInfo for TestWeightInfo { - fn create() -> Weight { 0 } - fn contribute() -> Weight { 0 } - fn withdraw() -> Weight { 0 } - fn refund(_k: u32, ) -> Weight { 0 } - fn dissolve() -> Weight { 0 } - fn edit() -> Weight { 0 } - fn add_memo() -> Weight { 0 } - fn on_initialize(_n: u32, ) -> Weight { 0 } - fn poke() -> Weight { 0 } -} - -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] -pub enum LastContribution { - Never, - PreEnding(u32), - Ending(BlockNumber), -} - -/// Information on a funding effort for a pre-existing parachain. We assume that the parachain ID -/// is known as it's used for the key of the storage item for which this is the value (`Funds`). -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] -#[codec(dumb_trait_bound)] -pub struct FundInfo { - /// The owning account who placed the deposit. - depositor: AccountId, - /// An optional verifier. If exists, contributions must be signed by verifier. - verifier: Option, - /// The amount of deposit placed. - deposit: Balance, - /// The total amount raised. - raised: Balance, - /// Block number after which the funding must have succeeded. If not successful at this number - /// then everyone may withdraw their funds. - end: BlockNumber, - /// A hard-cap on the amount that may be contributed. - cap: Balance, - /// The most recent block that this had a contribution. Determines if we make a bid or not. - /// If this is `Never`, this fund has never received a contribution. - /// If this is `PreEnding(n)`, this fund received a contribution sometime in auction - /// number `n` before the ending period. - /// If this is `Ending(n)`, this fund received a contribution during the current ending period, - /// where `n` is how far into the ending period the contribution was made. - last_contribution: LastContribution, - /// First lease period in range to bid on; it's actually a LeasePeriod, but that's the same type - /// as BlockNumber. - first_period: LeasePeriod, - /// Last lease period in range to bid on; it's actually a LeasePeriod, but that's the same type - /// as BlockNumber. - last_period: LeasePeriod, - /// Index used for the child trie of this fund - trie_index: TrieIndex, -} - -#[frame_support::pallet] -pub mod pallet { - use frame_support::pallet_prelude::*; - use frame_system::{pallet_prelude::*, ensure_signed, ensure_root}; - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - #[pallet::config] - pub trait Config: frame_system::Config { - type Event: From> + IsType<::Event>; - - /// PalletId for the crowdloan pallet. An appropriate value could be ```PalletId(*b"py/cfund")``` - #[pallet::constant] - type PalletId: Get; - - /// The amount to be held on deposit by the depositor of a crowdloan. - type SubmissionDeposit: Get>; - - /// The minimum amount that may be contributed into a crowdloan. Should almost certainly be at - /// least ExistentialDeposit. - #[pallet::constant] - type MinContribution: Get>; - - /// Max number of storage keys to remove per extrinsic call. - #[pallet::constant] - type RemoveKeysLimit: Get; - - /// The parachain registrar type. We jus use this to ensure that only the manager of a para is able to - /// start a crowdloan for its slot. - type Registrar: Registrar; - - /// The type representing the auctioning system. - type Auctioneer: Auctioneer< - AccountId=Self::AccountId, - BlockNumber=Self::BlockNumber, - LeasePeriod=Self::BlockNumber, - >; - - /// The maximum length for the memo attached to a crowdloan contribution. - type MaxMemoLength: Get; - - /// Weight Information for the Extrinsics in the Pallet - type WeightInfo: WeightInfo; - } - - /// Info on all of the funds. - #[pallet::storage] - #[pallet::getter(fn funds)] - pub(super) type Funds = StorageMap< - _, - Twox64Concat, ParaId, - FundInfo, T::BlockNumber, LeasePeriodOf>, - >; - - /// The funds that have had additional contributions during the last block. This is used - /// in order to determine which funds should submit new or updated bids. - #[pallet::storage] - #[pallet::getter(fn new_raise)] - pub(super) type NewRaise = StorageValue<_, Vec, ValueQuery>; - - /// The number of auctions that have entered into their ending period so far. - #[pallet::storage] - #[pallet::getter(fn endings_count)] - pub(super) type EndingsCount = StorageValue<_, u32, ValueQuery>; - - /// Tracker for the next available trie index - #[pallet::storage] - #[pallet::getter(fn next_trie_index)] - pub(super) type NextTrieIndex = StorageValue<_, u32, ValueQuery>; - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId", BalanceOf = "Balance")] - pub enum Event { - /// Create a new crowdloaning campaign. [fund_index] - Created(ParaId), - /// Contributed to a crowd sale. [who, fund_index, amount] - Contributed(T::AccountId, ParaId, BalanceOf), - /// Withdrew full balance of a contributor. [who, fund_index, amount] - Withdrew(T::AccountId, ParaId, BalanceOf), - /// The loans in a fund have been partially dissolved, i.e. there are some left - /// over child keys that still need to be killed. [fund_index] - PartiallyRefunded(ParaId), - /// All loans in a fund have been refunded. [fund_index] - AllRefunded(ParaId), - /// Fund is dissolved. [fund_index] - Dissolved(ParaId), - /// The result of trying to submit a new bid to the Slots pallet. - HandleBidResult(ParaId, DispatchResult), - /// The configuration to a crowdloan has been edited. [fund_index] - Edited(ParaId), - /// A memo has been updated. [who, fund_index, memo] - MemoUpdated(T::AccountId, ParaId, Vec), - /// A parachain has been moved to NewRaise - AddedToNewRaise(ParaId), - } - - #[pallet::error] - pub enum Error { - /// The current lease period is more than the first lease period. - FirstPeriodInPast, - /// The first lease period needs to at least be less than 3 `max_value`. - FirstPeriodTooFarInFuture, - /// Last lease period must be greater than first lease period. - LastPeriodBeforeFirstPeriod, - /// The last lease period cannot be more then 3 periods after the first period. - LastPeriodTooFarInFuture, - /// The campaign ends before the current block number. The end must be in the future. - CannotEndInPast, - /// The end date for this crowdloan is not sensible. - EndTooFarInFuture, - /// There was an overflow. - Overflow, - /// The contribution was below the minimum, `MinContribution`. - ContributionTooSmall, - /// Invalid fund index. - InvalidParaId, - /// Contributions exceed maximum amount. - CapExceeded, - /// The contribution period has already ended. - ContributionPeriodOver, - /// The origin of this call is invalid. - InvalidOrigin, - /// This crowdloan does not correspond to a parachain. - NotParachain, - /// This parachain lease is still active and retirement cannot yet begin. - LeaseActive, - /// This parachain's bid or lease is still active and withdraw cannot yet begin. - BidOrLeaseActive, - /// The crowdloan has not yet ended. - FundNotEnded, - /// There are no contributions stored in this crowdloan. - NoContributions, - /// The crowdloan is not ready to dissolve. Potentially still has a slot or in retirement period. - NotReadyToDissolve, - /// Invalid signature. - InvalidSignature, - /// The provided memo is too large. - MemoTooLarge, - /// The fund is already in NewRaise - AlreadyInNewRaise, - /// No contributions allowed during the VRF delay - VrfDelayInProgress, - } - - #[pallet::hooks] - impl Hooks> for Pallet { - fn on_initialize(num: T::BlockNumber) -> frame_support::weights::Weight { - if let Some((sample, sub_sample)) = T::Auctioneer::auction_status(num).is_ending() { - // This is the very first block in the ending period - if sample.is_zero() && sub_sample.is_zero() { - // first block of ending period. - EndingsCount::::mutate(|c| *c += 1); - } - let new_raise = NewRaise::::take(); - let new_raise_len = new_raise.len() as u32; - for (fund, para_id) in new_raise.into_iter().filter_map(|i| Self::funds(i).map(|f| (f, i))) { - // Care needs to be taken by the crowdloan creator that this function will succeed given - // the crowdloaning configuration. We do some checks ahead of time in crowdloan `create`. - let result = T::Auctioneer::place_bid( - Self::fund_account_id(para_id), - para_id, - fund.first_period, - fund.last_period, - fund.raised, - ); - - Self::deposit_event(Event::::HandleBidResult(para_id, result)); - } - T::WeightInfo::on_initialize(new_raise_len) - } else { - T::DbWeight::get().reads(1) - } - } - } - - #[pallet::call] - impl Pallet { - /// Create a new crowdloaning campaign for a parachain slot with the given lease period range. - /// - /// This applies a lock to your parachain configuration, ensuring that it cannot be changed - /// by the parachain manager. - #[pallet::weight(T::WeightInfo::create())] - pub fn create( - origin: OriginFor, - #[pallet::compact] index: ParaId, - #[pallet::compact] cap: BalanceOf, - #[pallet::compact] first_period: LeasePeriodOf, - #[pallet::compact] last_period: LeasePeriodOf, - #[pallet::compact] end: T::BlockNumber, - verifier: Option, - ) -> DispatchResult { - let depositor = ensure_signed(origin)?; - - ensure!(first_period <= last_period, Error::::LastPeriodBeforeFirstPeriod); - let last_period_limit = first_period - .checked_add(&((SlotRange::LEASE_PERIODS_PER_SLOT as u32) - 1).into()) - .ok_or(Error::::FirstPeriodTooFarInFuture)?; - ensure!(last_period <= last_period_limit, Error::::LastPeriodTooFarInFuture); - ensure!(end > >::block_number(), Error::::CannotEndInPast); - let last_possible_win_date = (first_period.saturating_add(One::one())).saturating_mul(T::Auctioneer::lease_period()); - ensure!(end <= last_possible_win_date, Error::::EndTooFarInFuture); - ensure!(first_period >= T::Auctioneer::lease_period_index(), Error::::FirstPeriodInPast); - - // There should not be an existing fund. - ensure!(!Funds::::contains_key(index), Error::::FundNotEnded); - - let manager = T::Registrar::manager_of(index).ok_or(Error::::InvalidParaId)?; - ensure!(depositor == manager, Error::::InvalidOrigin); - ensure!(T::Registrar::is_registered(index), Error::::InvalidParaId); - - let trie_index = Self::next_trie_index(); - let new_trie_index = trie_index.checked_add(1).ok_or(Error::::Overflow)?; - - let deposit = T::SubmissionDeposit::get(); - - CurrencyOf::::reserve(&depositor, deposit)?; - - Funds::::insert(index, FundInfo { - depositor, - verifier, - deposit, - raised: Zero::zero(), - end, - cap, - last_contribution: LastContribution::Never, - first_period, - last_period, - trie_index, - }); - - NextTrieIndex::::put(new_trie_index); - // Add a lock to the para so that the configuration cannot be changed. - T::Registrar::apply_lock(index); - - Self::deposit_event(Event::::Created(index)); - Ok(()) - } - - /// Contribute to a crowd sale. This will transfer some balance over to fund a parachain - /// slot. It will be withdrawable when the crowdloan has ended and the funds are unused. - #[pallet::weight(T::WeightInfo::contribute())] - pub fn contribute( - origin: OriginFor, - #[pallet::compact] index: ParaId, - #[pallet::compact] value: BalanceOf, - signature: Option, - ) -> DispatchResult { - let who = ensure_signed(origin)?; - - ensure!(value >= T::MinContribution::get(), Error::::ContributionTooSmall); - let mut fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - fund.raised = fund.raised.checked_add(&value).ok_or(Error::::Overflow)?; - ensure!(fund.raised <= fund.cap, Error::::CapExceeded); - - // Make sure crowdloan has not ended - let now = >::block_number(); - ensure!(now < fund.end, Error::::ContributionPeriodOver); - - // Make sure crowdloan is in a valid lease period - let current_lease_period = T::Auctioneer::lease_period_index(); - ensure!(current_lease_period <= fund.first_period, Error::::ContributionPeriodOver); - - // Make sure crowdloan has not already won. - let fund_account = Self::fund_account_id(index); - ensure!(!T::Auctioneer::has_won_an_auction(index, &fund_account), Error::::BidOrLeaseActive); - - // We disallow any crowdloan contributions during the VRF Period, so that people do not sneak their - // contributions into the auction when it would not impact the outcome. - ensure!(!T::Auctioneer::auction_status(now).is_vrf(), Error::::VrfDelayInProgress); - - let (old_balance, memo) = Self::contribution_get(fund.trie_index, &who); - - if let Some(ref verifier) = fund.verifier { - let signature = signature.ok_or(Error::::InvalidSignature)?; - let payload = (index, &who, old_balance, value); - let valid = payload.using_encoded(|encoded| signature.verify(encoded, &verifier.clone().into_account())); - ensure!(valid, Error::::InvalidSignature); - } - - CurrencyOf::::transfer(&who, &fund_account, value, AllowDeath)?; - - let balance = old_balance.saturating_add(value); - Self::contribution_put(fund.trie_index, &who, &balance, &memo); - - if T::Auctioneer::auction_status(now).is_ending().is_some() { - match fund.last_contribution { - // In ending period; must ensure that we are in NewRaise. - LastContribution::Ending(n) if n == now => { - // do nothing - already in NewRaise - } - _ => { - NewRaise::::append(index); - fund.last_contribution = LastContribution::Ending(now); - } - } - } else { - let endings_count = Self::endings_count(); - match fund.last_contribution { - LastContribution::PreEnding(a) if a == endings_count => { - // Not in ending period and no auctions have ended ending since our - // previous bid which was also not in an ending period. - // `NewRaise` will contain our ID still: Do nothing. - } - _ => { - // Not in ending period; but an auction has been ending since our previous - // bid, or we never had one to begin with. Add bid. - NewRaise::::append(index); - fund.last_contribution = LastContribution::PreEnding(endings_count); - } - } - } - - Funds::::insert(index, &fund); - - Self::deposit_event(Event::::Contributed(who, index, value)); - Ok(()) - } - - /// Withdraw full balance of a specific contributor. - /// - /// Origin must be signed, but can come from anyone. - /// - /// The fund must be either in, or ready for, retirement. For a fund to be *in* retirement, then the retirement - /// flag must be set. For a fund to be ready for retirement, then: - /// - it must not already be in retirement; - /// - the amount of raised funds must be bigger than the _free_ balance of the account; - /// - and either: - /// - the block number must be at least `end`; or - /// - the current lease period must be greater than the fund's `last_period`. - /// - /// In this case, the fund's retirement flag is set and its `end` is reset to the current block - /// number. - /// - /// - `who`: The account whose contribution should be withdrawn. - /// - `index`: The parachain to whose crowdloan the contribution was made. - #[pallet::weight(T::WeightInfo::withdraw())] - pub fn withdraw( - origin: OriginFor, - who: T::AccountId, - #[pallet::compact] index: ParaId, - ) -> DispatchResult { - ensure_signed(origin)?; - - let mut fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - let now = frame_system::Pallet::::block_number(); - let fund_account = Self::fund_account_id(index); - Self::ensure_crowdloan_ended(now, &fund_account, &fund)?; - - let (balance, _) = Self::contribution_get(fund.trie_index, &who); - ensure!(balance > Zero::zero(), Error::::NoContributions); - - CurrencyOf::::transfer(&fund_account, &who, balance, AllowDeath)?; - - Self::contribution_kill(fund.trie_index, &who); - fund.raised = fund.raised.saturating_sub(balance); - - Funds::::insert(index, &fund); - - Self::deposit_event(Event::::Withdrew(who, index, balance)); - Ok(()) - } - - /// Automatically refund contributors of an ended crowdloan. - /// Due to weight restrictions, this function may need to be called multiple - /// times to fully refund all users. We will refund `RemoveKeysLimit` users at a time. - /// - /// Origin must be signed, but can come from anyone. - #[pallet::weight(T::WeightInfo::refund(T::RemoveKeysLimit::get()))] - pub fn refund( - origin: OriginFor, - #[pallet::compact] index: ParaId, - ) -> DispatchResultWithPostInfo { - ensure_signed(origin)?; - - let mut fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - let now = frame_system::Pallet::::block_number(); - let fund_account = Self::fund_account_id(index); - Self::ensure_crowdloan_ended(now, &fund_account, &fund)?; - - let mut refund_count = 0u32; - // Try killing the crowdloan child trie - let contributions = Self::contribution_iterator(fund.trie_index); - // Assume everyone will be refunded. - let mut all_refunded = true; - for (who, (balance, _)) in contributions { - if refund_count >= T::RemoveKeysLimit::get() { - // Not everyone was able to be refunded this time around. - all_refunded = false; - break; - } - CurrencyOf::::transfer(&fund_account, &who, balance, AllowDeath)?; - Self::contribution_kill(fund.trie_index, &who); - fund.raised = fund.raised.saturating_sub(balance); - refund_count += 1; - } - - // Save the changes. - Funds::::insert(index, &fund); - - if all_refunded { - Self::deposit_event(Event::::AllRefunded(index)); - // Refund for unused refund count. - Ok(Some(T::WeightInfo::refund(refund_count)).into()) - } else { - Self::deposit_event(Event::::PartiallyRefunded(index)); - // No weight to refund since we did not finish the loop. - Ok(().into()) - } - } - - /// Remove a fund after the retirement period has ended and all funds have been returned. - #[pallet::weight(T::WeightInfo::dissolve())] - pub fn dissolve(origin: OriginFor, #[pallet::compact] index: ParaId) -> DispatchResult { - let who = ensure_signed(origin)?; - - let fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - let now = frame_system::Pallet::::block_number(); - - // Only allow dissolution when the raised funds goes to zero, - // and the caller is the fund creator or we are past the end date. - let permitted = who == fund.depositor || now >= fund.end; - let can_dissolve = permitted && fund.raised.is_zero(); - ensure!(can_dissolve, Error::::NotReadyToDissolve); - - // Assuming state is not corrupted, the child trie should already be cleaned up - // and all funds in the crowdloan account have been returned. If not, governance - // can take care of that. - debug_assert!(Self::contribution_iterator(fund.trie_index).count().is_zero()); - - CurrencyOf::::unreserve(&fund.depositor, fund.deposit); - Funds::::remove(index); - Self::deposit_event(Event::::Dissolved(index)); - Ok(()) - } - - /// Edit the configuration for an in-progress crowdloan. - /// - /// Can only be called by Root origin. - #[pallet::weight(T::WeightInfo::edit())] - pub fn edit( - origin: OriginFor, - #[pallet::compact] index: ParaId, - #[pallet::compact] cap: BalanceOf, - #[pallet::compact] first_period: LeasePeriodOf, - #[pallet::compact] last_period: LeasePeriodOf, - #[pallet::compact] end: T::BlockNumber, - verifier: Option, - ) -> DispatchResult { - ensure_root(origin)?; - - let fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - - Funds::::insert(index, FundInfo { - depositor: fund.depositor, - verifier, - deposit: fund.deposit, - raised: fund.raised, - end, - cap, - last_contribution: fund.last_contribution, - first_period, - last_period, - trie_index: fund.trie_index, - }); - - Self::deposit_event(Event::::Edited(index)); - Ok(()) - } - - /// Add an optional memo to an existing crowdloan contribution. - /// - /// Origin must be Signed, and the user must have contributed to the crowdloan. - #[pallet::weight(T::WeightInfo::add_memo())] - pub fn add_memo(origin: OriginFor, index: ParaId, memo: Vec) -> DispatchResult { - let who = ensure_signed(origin)?; - - ensure!(memo.len() <= T::MaxMemoLength::get().into(), Error::::MemoTooLarge); - let fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - - let (balance, _) = Self::contribution_get(fund.trie_index, &who); - ensure!(balance > Zero::zero(), Error::::NoContributions); - - Self::contribution_put(fund.trie_index, &who, &balance, &memo); - Self::deposit_event(Event::::MemoUpdated(who, index, memo)); - Ok(()) - } - - /// Poke the fund into NewRaise - /// - /// Origin must be Signed, and the fund has non-zero raise. - #[pallet::weight(T::WeightInfo::poke())] - pub fn poke(origin: OriginFor, index: ParaId) -> DispatchResult { - ensure_signed(origin)?; - let fund = Self::funds(index).ok_or(Error::::InvalidParaId)?; - ensure!(!fund.raised.is_zero(), Error::::NoContributions); - ensure!(!NewRaise::::get().contains(&index), Error::::AlreadyInNewRaise); - NewRaise::::append(index); - Self::deposit_event(Event::::AddedToNewRaise(index)); - Ok(()) - } - } -} - -impl Pallet { - /// The account ID of the fund pot. - /// - /// This actually does computation. If you need to keep using it, then make sure you cache the - /// value and only call this once. - pub fn fund_account_id(index: ParaId) -> T::AccountId { - T::PalletId::get().into_sub_account(index) - } - - pub fn id_from_index(index: TrieIndex) -> child::ChildInfo { - let mut buf = Vec::new(); - buf.extend_from_slice(b"crowdloan"); - buf.extend_from_slice(&index.encode()[..]); - child::ChildInfo::new_default(T::Hashing::hash(&buf[..]).as_ref()) - } - - pub fn contribution_put(index: TrieIndex, who: &T::AccountId, balance: &BalanceOf, memo: &[u8]) { - who.using_encoded(|b| child::put(&Self::id_from_index(index), b, &(balance, memo))); - } - - pub fn contribution_get(index: TrieIndex, who: &T::AccountId) -> (BalanceOf, Vec) { - who.using_encoded(|b| child::get_or_default::<(BalanceOf, Vec)>( - &Self::id_from_index(index), - b, - )) - } - - pub fn contribution_kill(index: TrieIndex, who: &T::AccountId) { - who.using_encoded(|b| child::kill(&Self::id_from_index(index), b)); - } - - pub fn crowdloan_kill(index: TrieIndex) -> child::KillStorageResult { - child::kill_storage(&Self::id_from_index(index), Some(T::RemoveKeysLimit::get())) - } - - pub fn contribution_iterator( - index: TrieIndex - ) -> ChildTriePrefixIterator<(T::AccountId, (BalanceOf, Vec))> { - ChildTriePrefixIterator::<_>::with_prefix_over_key::(&Self::id_from_index(index), &[]) - } - - /// This function checks all conditions which would qualify a crowdloan has ended. - /// * If we have reached the `fund.end` block OR the first lease period the fund is - /// trying to bid for has started already. - /// * And, if the fund has enough free funds to refund full raised amount. - fn ensure_crowdloan_ended( - now: T::BlockNumber, - fund_account: &T::AccountId, - fund: &FundInfo, T::BlockNumber, LeasePeriodOf> - ) -> sp_runtime::DispatchResult { - // `fund.end` can represent the end of a failed crowdloan or the beginning of retirement - // If the current lease period is past the first period they are trying to bid for, then - // it is already too late to win the bid. - let current_lease_period = T::Auctioneer::lease_period_index(); - ensure!(now >= fund.end || current_lease_period > fund.first_period, Error::::FundNotEnded); - // free balance must greater than or equal amount raised, otherwise funds are being used - // and a bid or lease must be active. - ensure!(CurrencyOf::::free_balance(&fund_account) >= fund.raised, Error::::BidOrLeaseActive); - - Ok(()) - } -} - -impl crate::traits::OnSwap for Pallet { - fn on_swap(one: ParaId, other: ParaId) { - Funds::::mutate(one, |x| - Funds::::mutate(other, |y| - sp_std::mem::swap(x, y) - ) - ) - } -} - -#[cfg(any(feature = "runtime-benchmarks", test))] -mod crypto { - use sp_core::ed25519; - use sp_io::crypto::{ed25519_sign, ed25519_generate}; - use sp_std::{ - vec::Vec, - convert::TryFrom, - }; - use sp_runtime::{MultiSigner, MultiSignature}; - - pub fn create_ed25519_pubkey(seed: Vec) -> MultiSigner { - ed25519_generate(0.into(), Some(seed)).into() - } - - pub fn create_ed25519_signature(payload: &[u8], pubkey: MultiSigner) -> MultiSignature { - let edpubkey = ed25519::Public::try_from(pubkey).unwrap(); - let edsig = ed25519_sign(0.into(), &edpubkey, payload).unwrap(); - edsig.into() - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use std::{cell::RefCell, sync::Arc, collections::BTreeMap}; - use frame_support::{ - assert_ok, assert_noop, parameter_types, - traits::{OnInitialize, OnFinalize}, - }; - use sp_core::H256; - use primitives::v1::Id as ParaId; - // The testing primitives are very useful for avoiding having to work with signatures - // or public keys. `u64` is used as the `AccountId` and no `Signature`s are requried. - use sp_runtime::{ - testing::Header, traits::{BlakeTwo256, IdentityLookup}, DispatchResult, - }; - use crate::{ - mock::TestRegistrar, - traits::{OnSwap, AuctionStatus}, - crowdloan, - }; - use sp_keystore::{KeystoreExt, testing::KeyStore}; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event}, - } - ); - - parameter_types! { - pub const BlockHashCount: u32 = 250; - } - - type BlockNumber = u64; - - impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: u64 = 1; - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - } - - #[derive(Copy, Clone, Eq, PartialEq, Debug)] - struct BidPlaced { - height: u64, - bidder: u64, - para: ParaId, - first_period: u64, - last_period: u64, - amount: u64 - } - thread_local! { - static AUCTION: RefCell> = RefCell::new(None); - static VRF_DELAY: RefCell = RefCell::new(0); - static ENDING_PERIOD: RefCell = RefCell::new(5); - static BIDS_PLACED: RefCell> = RefCell::new(Vec::new()); - static HAS_WON: RefCell> = RefCell::new(BTreeMap::new()); - } - - #[allow(unused)] - fn set_ending_period(ending_period: u64) { - ENDING_PERIOD.with(|p| *p.borrow_mut() = ending_period); - } - fn auction() -> Option<(u64, u64)> { - AUCTION.with(|p| p.borrow().clone()) - } - fn ending_period() -> u64 { - ENDING_PERIOD.with(|p| p.borrow().clone()) - } - fn bids() -> Vec { - BIDS_PLACED.with(|p| p.borrow().clone()) - } - fn vrf_delay() -> u64 { - VRF_DELAY.with(|p| p.borrow().clone()) - } - fn set_vrf_delay(delay: u64) { - VRF_DELAY.with(|p| *p.borrow_mut() = delay); - } - // Emulate what would happen if we won an auction: - // balance is reserved and a deposit_held is recorded - fn set_winner(para: ParaId, who: u64, winner: bool) { - let account_id = Crowdloan::fund_account_id(para); - if winner { - let free_balance = Balances::free_balance(&account_id); - Balances::reserve(&account_id, free_balance).expect("should be able to reserve free balance"); - } else { - let reserved_balance = Balances::reserved_balance(&account_id); - Balances::unreserve(&account_id, reserved_balance); - } - HAS_WON.with(|p| p.borrow_mut().insert((para, who), winner)); - } - - pub struct TestAuctioneer; - impl Auctioneer for TestAuctioneer { - type AccountId = u64; - type BlockNumber = BlockNumber; - type LeasePeriod = u64; - type Currency = Balances; - - fn new_auction(duration: u64, lease_period_index: u64) -> DispatchResult { - assert!(lease_period_index >= Self::lease_period_index()); - - let ending = System::block_number().saturating_add(duration); - AUCTION.with(|p| *p.borrow_mut() = Some((lease_period_index, ending))); - Ok(()) - } - - fn auction_status(now: u64) -> AuctionStatus { - let early_end = match auction() { - Some((_, early_end)) => early_end, - None => return AuctionStatus::NotStarted, - }; - let after_early_end = match now.checked_sub(early_end) { - Some(after_early_end) => after_early_end, - None => return AuctionStatus::StartingPeriod, - }; - - let ending_period = ending_period(); - if after_early_end < ending_period { - return AuctionStatus::EndingPeriod(after_early_end, 0) - } else { - let after_end = after_early_end - ending_period; - // Optional VRF delay - if after_end < vrf_delay() { - return AuctionStatus::VrfDelay(after_end); - } else { - // VRF delay is done, so we just end the auction - return AuctionStatus::NotStarted; - } - } - } - - fn place_bid( - bidder: u64, - para: ParaId, - first_period: u64, - last_period: u64, - amount: u64 - ) -> DispatchResult { - let height = System::block_number(); - BIDS_PLACED.with(|p| p.borrow_mut().push(BidPlaced { height, bidder, para, first_period, last_period, amount })); - Ok(()) - } - - fn lease_period_index() -> u64 { - System::block_number() / Self::lease_period() - } - - fn lease_period() -> u64 { - 20 - } - - fn has_won_an_auction(para: ParaId, bidder: &u64) -> bool { - HAS_WON.with(|p| *p.borrow().get(&(para, *bidder)).unwrap_or(&false)) - } - } - - parameter_types! { - pub const SubmissionDeposit: u64 = 1; - pub const MinContribution: u64 = 10; - pub const CrowdloanPalletId: PalletId = PalletId(*b"py/cfund"); - pub const RemoveKeysLimit: u32 = 10; - pub const MaxMemoLength: u8 = 32; - } - - impl Config for Test { - type Event = Event; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type PalletId = CrowdloanPalletId; - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = TestRegistrar; - type Auctioneer = TestAuctioneer; - type MaxMemoLength = MaxMemoLength; - type WeightInfo = crate::crowdloan::TestWeightInfo; - } - - use pallet_balances::Error as BalancesError; - - // This function basically just builds a genesis storage key/value store according to - // our desired mockup. - pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - pallet_balances::GenesisConfig::{ - balances: vec![(1, 1000), (2, 2000), (3, 3000), (4, 4000)], - }.assimilate_storage(&mut t).unwrap(); - let keystore = KeyStore::new(); - let mut t: sp_io::TestExternalities = t.into(); - t.register_extension(KeystoreExt(Arc::new(keystore))); - t - } - - fn new_para() -> ParaId { - for i in 0.. { - let para: ParaId = i.into(); - if TestRegistrar::::is_registered(para) { continue } - assert_ok!(TestRegistrar::::register(1, para, Default::default(), Default::default())); - return para; - } - unreachable!() - } - - fn run_to_block(n: u64) { - while System::block_number() < n { - Crowdloan::on_finalize(System::block_number()); - Balances::on_finalize(System::block_number()); - System::on_finalize(System::block_number()); - System::set_block_number(System::block_number() + 1); - System::on_initialize(System::block_number()); - Balances::on_initialize(System::block_number()); - Crowdloan::on_initialize(System::block_number()); - } - } - - fn last_event() -> Event { - System::events().pop().expect("Event expected").event - } - - #[test] - fn basic_setup_works() { - new_test_ext().execute_with(|| { - assert_eq!(System::block_number(), 0); - assert_eq!(Crowdloan::funds(ParaId::from(0)), None); - let empty: Vec = Vec::new(); - assert_eq!(Crowdloan::new_raise(), empty); - assert_eq!(Crowdloan::contribution_get(0u32, &1).0, 0); - assert_eq!(Crowdloan::endings_count(), 0); - - assert_ok!(TestAuctioneer::new_auction(5, 0)); - - assert_eq!(bids(), vec![]); - assert_ok!(TestAuctioneer::place_bid(1, 2.into(), 0, 3, 6)); - let b = BidPlaced { height: 0, bidder: 1, para: 2.into(), first_period: 0, last_period: 3, amount: 6 }; - assert_eq!(bids(), vec![b]); - assert_eq!(TestAuctioneer::auction_status(4), AuctionStatus::::StartingPeriod); - assert_eq!(TestAuctioneer::auction_status(5), AuctionStatus::::EndingPeriod(0, 0)); - assert_eq!(TestAuctioneer::auction_status(9), AuctionStatus::::EndingPeriod(4, 0)); - assert_eq!(TestAuctioneer::auction_status(11), AuctionStatus::::NotStarted); - }); - } - - #[test] - fn create_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - // Now try to create a crowdloan campaign - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 9, None)); - // This is what the initial `fund_info` should look like - let fund_info = FundInfo { - depositor: 1, - verifier: None, - deposit: 1, - raised: 0, - // 5 blocks length + 3 block ending period + 1 starting block - end: 9, - cap: 1000, - last_contribution: LastContribution::Never, - first_period: 1, - last_period: 4, - trie_index: 0, - }; - assert_eq!(Crowdloan::funds(para), Some(fund_info)); - // User has deposit removed from their free balance - assert_eq!(Balances::free_balance(1), 999); - // Deposit is placed in reserved - assert_eq!(Balances::reserved_balance(1), 1); - // No new raise until first contribution - let empty: Vec = Vec::new(); - assert_eq!(Crowdloan::new_raise(), empty); - }); - } - - #[test] - fn create_with_verifier_works() { - new_test_ext().execute_with(|| { - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - let para = new_para(); - // Now try to create a crowdloan campaign - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 9, Some(pubkey.clone()))); - // This is what the initial `fund_info` should look like - let fund_info = FundInfo { - depositor: 1, - verifier: Some(pubkey), - deposit: 1, - raised: 0, - // 5 blocks length + 3 block ending period + 1 starting block - end: 9, - cap: 1000, - last_contribution: LastContribution::Never, - first_period: 1, - last_period: 4, - trie_index: 0, - }; - assert_eq!(Crowdloan::funds(ParaId::from(0)), Some(fund_info)); - // User has deposit removed from their free balance - assert_eq!(Balances::free_balance(1), 999); - // Deposit is placed in reserved - assert_eq!(Balances::reserved_balance(1), 1); - // No new raise until first contribution - let empty: Vec = Vec::new(); - assert_eq!(Crowdloan::new_raise(), empty); - }); - } - - #[test] - fn create_handles_basic_errors() { - new_test_ext().execute_with(|| { - // Now try to create a crowdloan campaign - let para = new_para(); - - let e = Error::::InvalidParaId; - assert_noop!(Crowdloan::create(Origin::signed(1), 1.into(), 1000, 1, 4, 9, None), e); - // Cannot create a crowdloan with bad lease periods - let e = Error::::LastPeriodBeforeFirstPeriod; - assert_noop!(Crowdloan::create(Origin::signed(1), para, 1000, 4, 1, 9, None), e); - let e = Error::::LastPeriodTooFarInFuture; - assert_noop!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 9, 9, None), e); - - // Cannot create a crowdloan without some deposit funds - assert_ok!(TestRegistrar::::register(1337, ParaId::from(1234), Default::default(), Default::default())); - let e = BalancesError::::InsufficientBalance; - assert_noop!(Crowdloan::create(Origin::signed(1337), ParaId::from(1234), 1000, 1, 3, 9, None), e); - - // Cannot create a crowdloan with nonsense end date - // This crowdloan would end in lease period 2, but is bidding for some slot that starts in lease period 1. - assert_noop!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 41, None), Error::::EndTooFarInFuture); - }); - } - - #[test] - fn contribute_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 9, None)); - - // No contributions yet - assert_eq!(Crowdloan::contribution_get(u32::from(para), &1).0, 0); - - // User 1 contributes to their own crowdloan - assert_ok!(Crowdloan::contribute(Origin::signed(1), para, 49, None)); - // User 1 has spent some funds to do this, transfer fees **are** taken - assert_eq!(Balances::free_balance(1), 950); - // Contributions are stored in the trie - assert_eq!(Crowdloan::contribution_get(u32::from(para), &1).0, 49); - // Contributions appear in free balance of crowdloan - assert_eq!(Balances::free_balance(Crowdloan::fund_account_id(para)), 49); - // Crowdloan is added to NewRaise - assert_eq!(Crowdloan::new_raise(), vec![para]); - - let fund = Crowdloan::funds(para).unwrap(); - - // Last contribution time recorded - assert_eq!(fund.last_contribution, LastContribution::PreEnding(0)); - assert_eq!(fund.raised, 49); - }); - } - - #[test] - fn contribute_with_verifier_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 9, Some(pubkey.clone()))); - - // No contributions yet - assert_eq!(Crowdloan::contribution_get(u32::from(para), &1).0, 0); - - // Missing signature - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 49, None), Error::::InvalidSignature); - - let payload = (0u32, 1u64, 0u64, 49u64); - let valid_signature = crypto::create_ed25519_signature(&payload.encode(), pubkey.clone()); - let invalid_signature = MultiSignature::default(); - - // Invalid signature - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 49, Some(invalid_signature)), Error::::InvalidSignature); - - // Valid signature wrong parameter - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 50, Some(valid_signature.clone())), Error::::InvalidSignature); - assert_noop!(Crowdloan::contribute(Origin::signed(2), para, 49, Some(valid_signature.clone())), Error::::InvalidSignature); - - // Valid signature - assert_ok!(Crowdloan::contribute(Origin::signed(1), para, 49, Some(valid_signature.clone()))); - - // Reuse valid signature - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 49, Some(valid_signature)), Error::::InvalidSignature); - - let payload_2 = (0u32, 1u64, 49u64, 10u64); - let valid_signature_2 = crypto::create_ed25519_signature(&payload_2.encode(), pubkey); - - // New valid signature - assert_ok!(Crowdloan::contribute(Origin::signed(1), para, 10, Some(valid_signature_2))); - - // Contributions appear in free balance of crowdloan - assert_eq!(Balances::free_balance(Crowdloan::fund_account_id(para)), 59); - - // Contribution amount is correct - let fund = Crowdloan::funds(para).unwrap(); - assert_eq!(fund.raised, 59); - }); - } - - #[test] - fn contribute_handles_basic_errors() { - new_test_ext().execute_with(|| { - let para = new_para(); - - // Cannot contribute to non-existing fund - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 49, None), Error::::InvalidParaId); - // Cannot contribute below minimum contribution - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 9, None), Error::::ContributionTooSmall); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 4, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(1), para, 101, None)); - - // Cannot contribute past the limit - assert_noop!(Crowdloan::contribute(Origin::signed(2), para, 900, None), Error::::CapExceeded); - - // Move past end date - run_to_block(10); - - // Cannot contribute to ended fund - assert_noop!(Crowdloan::contribute(Origin::signed(1), para, 49, None), Error::::ContributionPeriodOver); - - // If a crowdloan has already won, it should not allow contributions. - let para_2 = new_para(); - assert_ok!(Crowdloan::create(Origin::signed(1), para_2, 1000, 1, 4, 40, None)); - // Emulate a win by leasing out and putting a deposit. Slots pallet would normally do this. - let crowdloan_account = Crowdloan::fund_account_id(para_2); - set_winner(para_2, crowdloan_account, true); - assert_noop!(Crowdloan::contribute(Origin::signed(1), para_2, 49, None), Error::::BidOrLeaseActive); - - // Move past lease period 1, should not be allowed to have further contributions with a crowdloan - // that has starting period 1. - let para_3 = new_para(); - assert_ok!(Crowdloan::create(Origin::signed(1), para_3, 1000, 1, 4, 40, None)); - run_to_block(40); - assert_eq!(TestAuctioneer::lease_period_index(), 2); - assert_noop!(Crowdloan::contribute(Origin::signed(1), para_3, 49, None), Error::::ContributionPeriodOver); - }); - } - - #[test] - fn cannot_contribute_during_vrf() { - new_test_ext().execute_with(|| { - set_vrf_delay(5); - - let para = new_para(); - let first_period = 1; - let last_period = 4; - - assert_ok!(TestAuctioneer::new_auction(5, 0)); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, first_period, last_period, 20, None)); - - run_to_block(8); - // Can def contribute when auction is running. - assert!(TestAuctioneer::auction_status(System::block_number()).is_ending().is_some()); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 250, None)); - - run_to_block(10); - // Can't contribute when auction is in the VRF delay period. - assert!(TestAuctioneer::auction_status(System::block_number()).is_vrf()); - assert_noop!(Crowdloan::contribute(Origin::signed(2), para, 250, None), Error::::VrfDelayInProgress); - - run_to_block(15); - // Its fine to contribute when no auction is running. - assert!(!TestAuctioneer::auction_status(System::block_number()).is_in_progress()); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 250, None)); - }) - } - - #[test] - fn bidding_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let first_period = 1; - let last_period = 4; - - assert_ok!(TestAuctioneer::new_auction(5, 0)); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, first_period, last_period, 9, None)); - let bidder = Crowdloan::fund_account_id(para); - - // Fund crowdloan - run_to_block(1); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - run_to_block(3); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 150, None)); - run_to_block(5); - assert_ok!(Crowdloan::contribute(Origin::signed(4), para, 200, None)); - run_to_block(8); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 250, None)); - run_to_block(10); - - assert_eq!(bids(), vec![ - BidPlaced { height: 5, amount: 250, bidder, para, first_period, last_period }, - BidPlaced { height: 6, amount: 450, bidder, para, first_period, last_period }, - BidPlaced { height: 9, amount: 700, bidder, para, first_period, last_period }, - ]); - - // Endings count incremented - assert_eq!(Crowdloan::endings_count(), 1); - }); - } - - #[test] - fn withdraw_from_failed_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 50, None)); - - run_to_block(10); - let account_id = Crowdloan::fund_account_id(para); - // para has no reserved funds, indicating it did not win the auction. - assert_eq!(Balances::reserved_balance(&account_id), 0); - // but there's still the funds in its balance. - assert_eq!(Balances::free_balance(&account_id), 150); - assert_eq!(Balances::free_balance(2), 1900); - assert_eq!(Balances::free_balance(3), 2950); - - assert_ok!(Crowdloan::withdraw(Origin::signed(2), 2, para)); - assert_eq!(Balances::free_balance(&account_id), 50); - assert_eq!(Balances::free_balance(2), 2000); - - assert_ok!(Crowdloan::withdraw(Origin::signed(2), 3, para)); - assert_eq!(Balances::free_balance(&account_id), 0); - assert_eq!(Balances::free_balance(3), 3000); - }); - } - - #[test] - fn withdraw_cannot_be_griefed() { - new_test_ext().execute_with(|| { - let para = new_para(); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - - run_to_block(10); - let account_id = Crowdloan::fund_account_id(para); - - // user sends the crowdloan funds trying to make an accounting error - assert_ok!(Balances::transfer(Origin::signed(1), account_id, 10)); - - // overfunded now - assert_eq!(Balances::free_balance(&account_id), 110); - assert_eq!(Balances::free_balance(2), 1900); - - assert_ok!(Crowdloan::withdraw(Origin::signed(2), 2, para)); - assert_eq!(Balances::free_balance(2), 2000); - - // Some funds are left over - assert_eq!(Balances::free_balance(&account_id), 10); - // They wil be left in the account at the end - assert_ok!(Crowdloan::dissolve(Origin::signed(1), para)); - assert_eq!(Balances::free_balance(&account_id), 10); - }); - } - - #[test] - fn refund_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let account_id = Crowdloan::fund_account_id(para); - - // Set up a crowdloan ending on 9 - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - // Make some contributions - assert_ok!(Crowdloan::contribute(Origin::signed(1), para, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 200, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 300, None)); - - assert_eq!(Balances::free_balance(account_id), 600); - - // Can't refund before the crowdloan it has ended - assert_noop!( - Crowdloan::refund(Origin::signed(1337), para), - Error::::FundNotEnded, - ); - - // Move to the end of the crowdloan - run_to_block(10); - assert_ok!(Crowdloan::refund(Origin::signed(1337), para)); - - // Funds are returned - assert_eq!(Balances::free_balance(account_id), 0); - // 1 deposit for the crowdloan which hasn't dissolved yet. - assert_eq!(Balances::free_balance(1), 1000 - 1); - assert_eq!(Balances::free_balance(2), 2000); - assert_eq!(Balances::free_balance(3), 3000); - }); - } - - #[test] - fn multiple_refund_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let account_id = Crowdloan::fund_account_id(para); - - // Set up a crowdloan ending on 9 - assert_ok!(Crowdloan::create(Origin::signed(1), para, 100000, 1, 1, 9, None)); - // Make more contributions than our limit - for i in 1 ..= RemoveKeysLimit::get() * 2 { - Balances::make_free_balance_be(&i.into(), (1000 * i).into()); - assert_ok!(Crowdloan::contribute(Origin::signed(i.into()), para, (i * 100).into(), None)); - } - - assert_eq!(Balances::free_balance(account_id), 21000); - - // Move to the end of the crowdloan - run_to_block(10); - assert_ok!(Crowdloan::refund(Origin::signed(1337), para)); - assert_eq!(last_event(), super::Event::::PartiallyRefunded(para).into()); - - // Funds still left over - assert!(!Balances::free_balance(account_id).is_zero()); - - // Call again - assert_ok!(Crowdloan::refund(Origin::signed(1337), para)); - assert_eq!(last_event(), super::Event::::AllRefunded(para).into()); - - // Funds are returned - assert_eq!(Balances::free_balance(account_id), 0); - // 1 deposit for the crowdloan which hasn't dissolved yet. - for i in 1 ..= RemoveKeysLimit::get() * 2 { - assert_eq!(Balances::free_balance(&i.into()), i as u64 * 1000); - } - }); - } - - #[test] - fn refund_and_dissolve_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let issuance = Balances::total_issuance(); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 50, None)); - - run_to_block(10); - // All funds are refunded - assert_ok!(Crowdloan::refund(Origin::signed(2), para)); - - // Now that `fund.raised` is zero, it can be dissolved. - assert_ok!(Crowdloan::dissolve(Origin::signed(1), para)); - assert_eq!(Balances::free_balance(1), 1000); - assert_eq!(Balances::free_balance(2), 2000); - assert_eq!(Balances::free_balance(3), 3000); - assert_eq!(Balances::total_issuance(), issuance); - }); - } - - #[test] - fn dissolve_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let issuance = Balances::total_issuance(); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 50, None)); - - // Can't dissolve before it ends - assert_noop!(Crowdloan::dissolve(Origin::signed(1), para), Error::::NotReadyToDissolve); - - run_to_block(10); - set_winner(para, 1, true); - // Can't dissolve when it won. - assert_noop!(Crowdloan::dissolve(Origin::signed(1), para), Error::::NotReadyToDissolve); - set_winner(para, 1, false); - - // Can't dissolve while it still has user funds - assert_noop!(Crowdloan::dissolve(Origin::signed(1), para), Error::::NotReadyToDissolve); - - // All funds are refunded - assert_ok!(Crowdloan::refund(Origin::signed(2), para)); - - // Now that `fund.raised` is zero, it can be dissolved. - assert_ok!(Crowdloan::dissolve(Origin::signed(1), para)); - assert_eq!(Balances::free_balance(1), 1000); - assert_eq!(Balances::free_balance(2), 2000); - assert_eq!(Balances::free_balance(3), 3000); - assert_eq!(Balances::total_issuance(), issuance); - }); - } - - #[test] - fn withdraw_from_finished_works() { - new_test_ext().execute_with(|| { - let para = new_para(); - let account_id = Crowdloan::fund_account_id(para); - - // Set up a crowdloan - assert_ok!(Crowdloan::create(Origin::signed(1), para, 1000, 1, 1, 9, None)); - - // Fund crowdloans. - assert_ok!(Crowdloan::contribute(Origin::signed(2), para, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para, 50, None)); - // simulate the reserving of para's funds. this actually happens in the Slots pallet. - assert_ok!(Balances::reserve(&account_id, 150)); - - run_to_block(19); - assert_noop!(Crowdloan::withdraw(Origin::signed(2), 2, para), Error::::BidOrLeaseActive); - - run_to_block(20); - // simulate the unreserving of para's funds, now that the lease expired. this actually - // happens in the Slots pallet. - Balances::unreserve(&account_id, 150); - - // para has no reserved funds, indicating it did ot win the auction. - assert_eq!(Balances::reserved_balance(&account_id), 0); - // but there's still the funds in its balance. - assert_eq!(Balances::free_balance(&account_id), 150); - assert_eq!(Balances::free_balance(2), 1900); - assert_eq!(Balances::free_balance(3), 2950); - - assert_ok!(Crowdloan::withdraw(Origin::signed(2), 2, para)); - assert_eq!(Balances::free_balance(&account_id), 50); - assert_eq!(Balances::free_balance(2), 2000); - - assert_ok!(Crowdloan::withdraw(Origin::signed(2), 3, para)); - assert_eq!(Balances::free_balance(&account_id), 0); - assert_eq!(Balances::free_balance(3), 3000); - }); - } - - #[test] - fn on_swap_works() { - new_test_ext().execute_with(|| { - let para_1 = new_para(); - let para_2 = new_para(); - - // Set up crowdloans - assert_ok!(Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::create(Origin::signed(1), para_2, 1000, 1, 1, 9, None)); - // Different contributions - assert_ok!(Crowdloan::contribute(Origin::signed(2), para_1, 100, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(3), para_2, 50, None)); - // Original state - assert_eq!(Funds::::get(para_1).unwrap().raised, 100); - assert_eq!(Funds::::get(para_2).unwrap().raised, 50); - // Swap - Crowdloan::on_swap(para_1, para_2); - // Final state - assert_eq!(Funds::::get(para_2).unwrap().raised, 100); - assert_eq!(Funds::::get(para_1).unwrap().raised, 50); - }); - } - - #[test] - fn cannot_create_fund_when_already_active() { - new_test_ext().execute_with(|| { - let para_1 = new_para(); - - assert_ok!(Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None)); - // Cannot create a fund again - assert_noop!( - Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None), - Error::::FundNotEnded, - ); - - }); - } - - #[test] - fn edit_works() { - new_test_ext().execute_with(|| { - let para_1 = new_para(); - - assert_ok!(Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None)); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para_1, 100, None)); - let old_crowdloan = Crowdloan::funds(para_1).unwrap(); - - assert_ok!(Crowdloan::edit(Origin::root(), para_1, 1234, 2, 3, 4, None)); - let new_crowdloan = Crowdloan::funds(para_1).unwrap(); - - // Some things stay the same - assert_eq!(old_crowdloan.depositor, new_crowdloan.depositor); - assert_eq!(old_crowdloan.deposit, new_crowdloan.deposit); - assert_eq!(old_crowdloan.raised, new_crowdloan.raised); - - // Some things change - assert!(old_crowdloan.cap != new_crowdloan.cap); - assert!(old_crowdloan.first_period != new_crowdloan.first_period); - assert!(old_crowdloan.last_period != new_crowdloan.last_period); - }); - } - - #[test] - fn add_memo_works() { - new_test_ext().execute_with(|| { - let para_1 = new_para(); - - assert_ok!(Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None)); - // Cant add a memo before you have contributed. - assert_noop!( - Crowdloan::add_memo(Origin::signed(1), para_1, b"hello, world".to_vec()), - Error::::NoContributions, - ); - // Make a contribution. Initially no memo. - assert_ok!(Crowdloan::contribute(Origin::signed(1), para_1, 100, None)); - assert_eq!(Crowdloan::contribution_get(0u32, &1), (100, vec![])); - // Can't place a memo that is too large. - assert_noop!( - Crowdloan::add_memo(Origin::signed(1), para_1, vec![123; 123]), - Error::::MemoTooLarge, - ); - // Adding a memo to an existing contribution works - assert_ok!(Crowdloan::add_memo(Origin::signed(1), para_1, b"hello, world".to_vec())); - assert_eq!(Crowdloan::contribution_get(0u32, &1), (100, b"hello, world".to_vec())); - // Can contribute again and data persists - assert_ok!(Crowdloan::contribute(Origin::signed(1), para_1, 100, None)); - assert_eq!(Crowdloan::contribution_get(0u32, &1), (200, b"hello, world".to_vec())); - }); - } - - #[test] - fn poke_works() { - new_test_ext().execute_with(|| { - let para_1 = new_para(); - - assert_ok!(TestAuctioneer::new_auction(5, 0)); - assert_ok!(Crowdloan::create(Origin::signed(1), para_1, 1000, 1, 1, 9, None)); - // Should fail when no contributions. - assert_noop!( - Crowdloan::poke(Origin::signed(1), para_1), - Error::::NoContributions - ); - assert_ok!(Crowdloan::contribute(Origin::signed(2), para_1, 100, None)); - run_to_block(6); - assert_ok!(Crowdloan::poke(Origin::signed(1), para_1)); - assert_eq!(Crowdloan::new_raise(), vec![para_1]); - assert_noop!( - Crowdloan::poke(Origin::signed(1), para_1), - Error::::AlreadyInNewRaise - ); - }); - } -} - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking { - use super::{*, Pallet as Crowdloan}; - use frame_system::RawOrigin; - use frame_support::{ - assert_ok, - traits::OnInitialize, - }; - use sp_runtime::traits::{Bounded, CheckedSub}; - use sp_std::prelude::*; - - use frame_benchmarking::{benchmarks, whitelisted_caller, account, impl_benchmark_test_suite}; - - fn assert_last_event(generic_event: ::Event) { - let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); - // compare to the last event record - let frame_system::EventRecord { event, .. } = &events[events.len() - 1]; - assert_eq!(event, &system_event); - } - - fn create_fund(id: u32, end: T::BlockNumber) -> ParaId { - let cap = BalanceOf::::max_value(); - let lease_period_index = T::Auctioneer::lease_period_index(); - let first_period = lease_period_index; - let last_period = lease_period_index + ((SlotRange::LEASE_PERIODS_PER_SLOT as u32) - 1).into(); - let para_id = id.into(); - - let caller = account("fund_creator", id, 0); - CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); - - // Assume ed25519 is most complex signature format - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - - let head_data = T::Registrar::worst_head_data(); - let validation_code = T::Registrar::worst_validation_code(); - assert_ok!(T::Registrar::register(caller.clone(), para_id, head_data, validation_code)); - T::Registrar::execute_pending_transitions(); - - assert_ok!(Crowdloan::::create( - RawOrigin::Signed(caller).into(), - para_id, - cap, - first_period, - last_period, - end, - Some(pubkey) - )); - - para_id - } - - fn contribute_fund(who: &T::AccountId, index: ParaId) { - CurrencyOf::::make_free_balance_be(&who, BalanceOf::::max_value()); - let value = T::MinContribution::get(); - - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - let payload = (index, &who, BalanceOf::::default(), value); - let sig = crypto::create_ed25519_signature(&payload.encode(), pubkey); - - assert_ok!(Crowdloan::::contribute(RawOrigin::Signed(who.clone()).into(), index, value, Some(sig))); - } - - benchmarks! { - create { - let para_id = ParaId::from(1); - let cap = BalanceOf::::max_value(); - let first_period = 0u32.into(); - let last_period = 3u32.into(); - let end = T::Auctioneer::lease_period(); - - let caller: T::AccountId = whitelisted_caller(); - let head_data = T::Registrar::worst_head_data(); - let validation_code = T::Registrar::worst_validation_code(); - - let verifier = account("verifier", 0, 0); - - CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); - T::Registrar::register(caller.clone(), para_id, head_data, validation_code)?; - T::Registrar::execute_pending_transitions(); - - }: _(RawOrigin::Signed(caller), para_id, cap, first_period, last_period, end, Some(verifier)) - verify { - assert_last_event::(Event::::Created(para_id).into()) - } - - // Contribute has two arms: PreEnding and Ending, but both are equal complexity. - contribute { - let fund_index = create_fund::(1, 100u32.into()); - let caller: T::AccountId = whitelisted_caller(); - let contribution = T::MinContribution::get(); - CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); - assert!(NewRaise::::get().is_empty()); - - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - let payload = (fund_index, &caller, BalanceOf::::default(), contribution); - let sig = crypto::create_ed25519_signature(&payload.encode(), pubkey); - - }: _(RawOrigin::Signed(caller.clone()), fund_index, contribution, Some(sig)) - verify { - // NewRaise is appended to, so we don't need to fill it up for worst case scenario. - assert!(!NewRaise::::get().is_empty()); - assert_last_event::(Event::::Contributed(caller, fund_index, contribution).into()); - } - - withdraw { - let fund_index = create_fund::(1337, 100u32.into()); - let caller: T::AccountId = whitelisted_caller(); - let contributor = account("contributor", 0, 0); - contribute_fund::(&contributor, fund_index); - frame_system::Pallet::::set_block_number(200u32.into()); - }: _(RawOrigin::Signed(caller), contributor.clone(), fund_index) - verify { - assert_last_event::(Event::::Withdrew(contributor, fund_index, T::MinContribution::get()).into()); - } - - // Worst case: Refund removes `RemoveKeysLimit` keys, and is fully refunded. - refund { - let k in 0 .. T::RemoveKeysLimit::get(); - let fund_index = create_fund::(1337, 100u32.into()); - - // Dissolve will remove at most `RemoveKeysLimit` at once. - for i in 0 .. k { - contribute_fund::(&account("contributor", i, 0), fund_index); - } - - let caller: T::AccountId = whitelisted_caller(); - frame_system::Pallet::::set_block_number(200u32.into()); - }: _(RawOrigin::Signed(caller), fund_index) - verify { - assert_last_event::(Event::::AllRefunded(fund_index).into()); - } - - dissolve { - let fund_index = create_fund::(1337, 100u32.into()); - let caller: T::AccountId = whitelisted_caller(); - frame_system::Pallet::::set_block_number(T::BlockNumber::max_value()); - }: _(RawOrigin::Signed(caller.clone()), fund_index) - verify { - assert_last_event::(Event::::Dissolved(fund_index).into()); - } - - edit { - let para_id = ParaId::from(1); - let cap = BalanceOf::::max_value(); - let first_period = 0u32.into(); - let last_period = 3u32.into(); - let end = T::Auctioneer::lease_period(); - - let caller: T::AccountId = whitelisted_caller(); - let head_data = T::Registrar::worst_head_data(); - let validation_code = T::Registrar::worst_validation_code(); - - let verifier: MultiSigner = account("verifier", 0, 0); - - CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); - T::Registrar::register(caller.clone(), para_id, head_data, validation_code)?; - T::Registrar::execute_pending_transitions(); - - Crowdloan::::create( - RawOrigin::Signed(caller).into(), - para_id, cap, first_period, last_period, end, Some(verifier.clone()), - )?; - - // Doesn't matter what we edit to, so use the same values. - }: _(RawOrigin::Root, para_id, cap, first_period, last_period, end, Some(verifier)) - verify { - assert_last_event::(Event::::Edited(para_id).into()) - } - - add_memo { - let fund_index = create_fund::(1, 100u32.into()); - let caller: T::AccountId = whitelisted_caller(); - contribute_fund::(&caller, fund_index); - let worst_memo = vec![42; T::MaxMemoLength::get().into()]; - }: _(RawOrigin::Signed(caller.clone()), fund_index, worst_memo.clone()) - verify { - let fund = Funds::::get(fund_index).expect("fund was created..."); - assert_eq!( - Crowdloan::::contribution_get(fund.trie_index, &caller), - (T::MinContribution::get(), worst_memo), - ); - } - - poke { - let fund_index = create_fund::(1, 100u32.into()); - let caller: T::AccountId = whitelisted_caller(); - contribute_fund::(&caller, fund_index); - NewRaise::::kill(); - assert!(NewRaise::::get().is_empty()); - }: _(RawOrigin::Signed(caller), fund_index) - verify { - assert!(!NewRaise::::get().is_empty()); - assert_last_event::(Event::::AddedToNewRaise(fund_index).into()) - } - - // Worst case scenario: N funds are all in the `NewRaise` list, we are - // in the beginning of the ending period, and each fund outbids the next - // over the same periods. - on_initialize { - // We test the complexity over different number of new raise - let n in 2 .. 100; - let end_block: T::BlockNumber = 100u32.into(); - - let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); - - for i in 0 .. n { - let fund_index = create_fund::(i, end_block); - let contributor: T::AccountId = account("contributor", i, 0); - let contribution = T::MinContribution::get() * (i + 1).into(); - let payload = (fund_index, &contributor, BalanceOf::::default(), contribution); - let sig = crypto::create_ed25519_signature(&payload.encode(), pubkey.clone()); - - CurrencyOf::::make_free_balance_be(&contributor, BalanceOf::::max_value()); - Crowdloan::::contribute(RawOrigin::Signed(contributor).into(), fund_index, contribution, Some(sig))?; - } - - let lease_period_index = T::Auctioneer::lease_period_index(); - let duration = end_block - .checked_sub(&frame_system::Pallet::::block_number()) - .ok_or("duration of auction less than zero")?; - T::Auctioneer::new_auction(duration, lease_period_index)?; - - assert_eq!(T::Auctioneer::auction_status(end_block).is_ending(), Some((0u32.into(), 0u32.into()))); - assert_eq!(NewRaise::::get().len(), n as usize); - let old_endings_count = EndingsCount::::get(); - }: { - Crowdloan::::on_initialize(end_block); - } verify { - assert_eq!(EndingsCount::::get(), old_endings_count + 1); - assert_last_event::(Event::::HandleBidResult((n - 1).into(), Ok(())).into()); - } - } - - impl_benchmark_test_suite!( - Crowdloan, - crate::integration_tests::new_test_ext(), - crate::integration_tests::Test, - ); -} diff --git a/runtime/common/src/impls.rs b/runtime/common/src/impls.rs deleted file mode 100644 index e2504fd1f291..000000000000 --- a/runtime/common/src/impls.rs +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Auxillary struct/enums for polkadot runtime. - -use frame_support::traits::{OnUnbalanced, Imbalance, Currency}; -use crate::NegativeImbalance; - -/// Logic for the author to get a portion of fees. -pub struct ToAuthor(sp_std::marker::PhantomData); -impl OnUnbalanced> for ToAuthor -where - R: pallet_balances::Config + pallet_authorship::Config, - ::AccountId: From, - ::AccountId: Into, - ::Event: From>, -{ - fn on_nonzero_unbalanced(amount: NegativeImbalance) { - let numeric_amount = amount.peek(); - let author = >::author(); - >::resolve_creating(&>::author(), amount); - >::deposit_event(pallet_balances::Event::Deposit(author, numeric_amount)); - } -} - -pub struct DealWithFees(sp_std::marker::PhantomData); -impl OnUnbalanced> for DealWithFees -where - R: pallet_balances::Config + pallet_treasury::Config + pallet_authorship::Config, - pallet_treasury::Module: OnUnbalanced>, - ::AccountId: From, - ::AccountId: Into, - ::Event: From>, -{ - fn on_unbalanceds(mut fees_then_tips: impl Iterator>) { - if let Some(fees) = fees_then_tips.next() { - // for fees, 80% to treasury, 20% to author - let mut split = fees.ration(80, 20); - if let Some(tips) = fees_then_tips.next() { - // for tips, if any, 100% to author - tips.merge_into(&mut split.1); - } - use pallet_treasury::Module as Treasury; - as OnUnbalanced<_>>::on_unbalanced(split.0); - as OnUnbalanced<_>>::on_unbalanced(split.1); - } - } -} - - -#[cfg(test)] -mod tests { - use super::*; - use frame_system::limits; - use frame_support::{parameter_types, PalletId, weights::DispatchClass}; - use frame_support::traits::FindAuthor; - use sp_core::H256; - use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup}, - Perbill, - }; - use primitives::v1::AccountId; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Authorship: pallet_authorship::{Pallet, Call, Storage, Inherent}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event}, - } - ); - - parameter_types! { - pub const BlockHashCount: u64 = 250; - pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() - .base_block(10) - .for_class(DispatchClass::all(), |weight| { - weight.base_extrinsic = 100; - }) - .for_class(DispatchClass::non_mandatory(), |weight| { - weight.max_total = Some(1024); - }) - .build_or_panic(); - pub BlockLength: limits::BlockLength = limits::BlockLength::max(2 * 1024); - pub const AvailableBlockRatio: Perbill = Perbill::one(); - } - - impl frame_system::Config for Test { - type BaseCallFilter = (); - type Origin = Origin; - type Index = u64; - type BlockNumber = u64; - type Call = Call; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type BlockLength = BlockLength; - type BlockWeights = BlockWeights; - type DbWeight = (); - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = (); - type AccountStore = System; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - } - - parameter_types! { - pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry"); - pub const MaxApprovals: u32 = 100; - } - - impl pallet_treasury::Config for Test { - type Currency = pallet_balances::Pallet; - type ApproveOrigin = frame_system::EnsureRoot; - type RejectOrigin = frame_system::EnsureRoot; - type Event = Event; - type OnSlash = (); - type ProposalBond = (); - type ProposalBondMinimum = (); - type SpendPeriod = (); - type Burn = (); - type BurnDestination = (); - type PalletId = TreasuryPalletId; - type SpendFunds = (); - type MaxApprovals = MaxApprovals; - type WeightInfo = (); - } - - pub struct OneAuthor; - impl FindAuthor for OneAuthor { - fn find_author<'a, I>(_: I) -> Option - where I: 'a, - { - Some(Default::default()) - } - } - impl pallet_authorship::Config for Test { - type FindAuthor = OneAuthor; - type UncleGenerations = (); - type FilterUncle = (); - type EventHandler = (); - } - - pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - // We use default for brevity, but you can configure as desired if needed. - pallet_balances::GenesisConfig::::default().assimilate_storage(&mut t).unwrap(); - t.into() - } - - #[test] - fn test_fees_and_tip_split() { - new_test_ext().execute_with(|| { - let fee = Balances::issue(10); - let tip = Balances::issue(20); - - assert_eq!(Balances::free_balance(Treasury::account_id()), 0); - assert_eq!(Balances::free_balance(AccountId::default()), 0); - - DealWithFees::on_unbalanceds(vec![fee, tip].into_iter()); - - // Author gets 100% of tip and 20% of fee = 22 - assert_eq!(Balances::free_balance(AccountId::default()), 22); - // Treasury gets 80% of fee - assert_eq!(Balances::free_balance(Treasury::account_id()), 8); - }); - } -} diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs deleted file mode 100644 index dfca5f5cbc7f..000000000000 --- a/runtime/common/src/integration_tests.rs +++ /dev/null @@ -1,1245 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Mocking utilities for testing with real pallets. - -use sp_std::sync::Arc; -use sp_io::TestExternalities; -use sp_core::{H256, crypto::KeyTypeId}; -use sp_runtime::{ - traits::{ - BlakeTwo256, IdentityLookup, One, - }, -}; -use sp_keystore::{KeystoreExt, testing::KeyStore}; -use primitives::v1::{BlockNumber, Header, Id as ParaId, ValidationCode, HeadData, LOWEST_PUBLIC_ID}; -use frame_support::{ - parameter_types, assert_ok, assert_noop, PalletId, - storage::StorageMap, - traits::{Currency, OnInitialize, OnFinalize, KeyOwnerProofSystem}, -}; -use frame_system::EnsureRoot; -use runtime_parachains::{ - ParaLifecycle, Origin as ParaOrigin, - paras, configuration, shared, -}; -use frame_support_test::TestRandomness; -use crate::{ - auctions, crowdloan, slots, paras_registrar, - slot_range::SlotRange, - traits::{ - Registrar as RegistrarT, Auctioneer, AuctionStatus, - }, -}; - -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; -type Block = frame_system::mocking::MockBlock; - -type AccountId = u32; -type Balance = u32; -type Moment = u32; - -frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - // System Stuff - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, - - // Parachains Runtime - Configuration: configuration::{Pallet, Call, Storage, Config}, - Paras: paras::{Pallet, Origin, Call, Storage, Event, Config}, - - // Para Onboarding Pallets - Registrar: paras_registrar::{Pallet, Call, Storage, Event}, - Auctions: auctions::{Pallet, Call, Storage, Event}, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event}, - Slots: slots::{Pallet, Call, Storage, Event}, - } -); - -use crate::crowdloan::Error as CrowdloanError; -use crate::auctions::Error as AuctionsError; - -parameter_types! { - pub const BlockHashCount: u32 = 250; - pub BlockWeights: frame_system::limits::BlockWeights = - frame_system::limits::BlockWeights::simple_max(4 * 1024 * 1024); -} - -impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = BlockWeights; - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); -} - -parameter_types! { - pub const EpochDuration: u64 = 10; - pub const ExpectedBlockTime: Moment = 6_000; - pub const ReportLongevity: u64 = 10; -} - -impl pallet_babe::Config for Test { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - type KeyOwnerProofSystem = (); - type KeyOwnerProof = - >::Proof; - type KeyOwnerIdentification = >::IdentificationTuple; - type HandleEquivocation = (); - type WeightInfo = (); -} - -parameter_types! { - pub const MinimumPeriod: Moment = 6_000 / 2; -} - -impl pallet_timestamp::Config for Test { - type Moment = Moment; - type OnTimestampSet = (); - type MinimumPeriod = MinimumPeriod; - type WeightInfo = (); -} - -parameter_types! { - pub static ExistentialDeposit: Balance = 1; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Test { - type MaxLocks = (); - type Balance = Balance; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type WeightInfo = (); - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; -} - -impl configuration::Config for Test { } - -impl shared::Config for Test { } - -impl paras::Config for Test { - type Origin = Origin; - type Event = Event; -} - -parameter_types! { - pub const ParaDeposit: Balance = 500; - pub const DataDepositPerByte: Balance = 1; -} - -impl paras_registrar::Config for Test { - type Event = Event; - type OnSwap = (Crowdloan, Slots); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type Currency = Balances; - type Origin = Origin; - type WeightInfo = crate::paras_registrar::TestWeightInfo; -} - -parameter_types! { - pub const EndingPeriod: BlockNumber = 10; - pub const SampleLength: BlockNumber = 1; -} - -impl auctions::Config for Test { - type Event = Event; - type Leaser = Slots; - type Registrar = Registrar; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = TestRandomness; - type InitiateOrigin = EnsureRoot; - type WeightInfo = crate::auctions::TestWeightInfo; -} - -parameter_types! { - pub const LeasePeriod: BlockNumber = 100; -} - -impl slots::Config for Test { - type Event = Event; - type Currency = Balances; - type Registrar = Registrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = crate::slots::TestWeightInfo; -} - -parameter_types! { - pub const CrowdloanId: PalletId = PalletId(*b"py/cfund"); - pub const SubmissionDeposit: Balance = 100; - pub const MinContribution: Balance = 1; - pub const RemoveKeysLimit: u32 = 100; - pub const MaxMemoLength: u8 = 32; -} - -impl crowdloan::Config for Test { - type Event = Event; - type PalletId = CrowdloanId; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = Registrar; - type Auctioneer = Auctions; - type MaxMemoLength = MaxMemoLength; - type WeightInfo = crate::crowdloan::TestWeightInfo; -} - -/// Create a new set of test externalities. -pub fn new_test_ext() -> TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - configuration::GenesisConfig:: { - config: configuration::HostConfiguration { - max_code_size: 2 * 1024 * 1024, // 2 MB - max_head_data_size: 1 * 1024 * 1024, // 1 MB - ..Default::default() - }, - }.assimilate_storage(&mut t).unwrap(); - let keystore = KeyStore::new(); - let mut ext: sp_io::TestExternalities = t.into(); - ext.register_extension(KeystoreExt(Arc::new(keystore))); - ext.execute_with(|| System::set_block_number(1)); - ext -} - -const BLOCKS_PER_SESSION: u32 = 10; - -fn maybe_new_session(n: u32) { - if n % BLOCKS_PER_SESSION == 0 { - shared::Module::::set_session_index( - shared::Module::::session_index() + 1 - ); - Paras::test_on_new_session(); - } -} - -fn test_genesis_head(size: usize) -> HeadData { - HeadData(vec![0u8; size]) -} - -fn test_validation_code(size: usize) -> ValidationCode { - let validation_code = vec![0u8; size as usize]; - ValidationCode(validation_code) -} - -fn para_origin(id: u32) -> ParaOrigin { - ParaOrigin::Parachain(id.into()) -} - -fn run_to_block(n: u32) { - assert!(System::block_number() < n); - while System::block_number() < n { - let block_number = System::block_number(); - AllPallets::on_finalize(block_number); - System::on_finalize(block_number); - System::set_block_number(block_number + 1); - System::on_initialize(block_number + 1); - maybe_new_session(block_number + 1); - AllPallets::on_initialize(block_number + 1); - } -} - -fn run_to_session(n: u32) { - let block_number = BLOCKS_PER_SESSION * n; - run_to_block(block_number); -} - -fn last_event() -> Event { - System::events().pop().expect("Event expected").event -} - -#[test] -fn basic_end_to_end_works() { - new_test_ext().execute_with(|| { - let para_1 = LOWEST_PUBLIC_ID; - let para_2 = LOWEST_PUBLIC_ID + 1; - assert!(System::block_number().is_one()); - // User 1 and 2 will own parachains - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - // First register 2 parathreads - let genesis_head = Registrar::worst_head_data(); - let validation_code = Registrar::worst_validation_code(); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(para_1), - genesis_head.clone(), - validation_code.clone(), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - ParaId::from(2001), - genesis_head, - validation_code, - )); - - // Paras should be onboarding - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Onboarding)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Onboarding)); - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // 2 sessions later they are parathreads - run_to_session(2); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Para 1 will bid directly for slot 1, 2 - // Open a crowdloan for Para 2 for slot 3, 4 - assert_ok!(Crowdloan::create( - Origin::signed(2), - ParaId::from(para_2), - 1_000, // Cap - lease_period_index_start + 2, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End - None, - )); - let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(para_2)); - - // Auction ending begins on block 100, so we make a bid before then. - run_to_block(90); - - Balances::make_free_balance_be(&10, 1_000_000_000); - Balances::make_free_balance_be(&20, 1_000_000_000); - - // User 10 will bid directly for parachain 1 - assert_ok!(Auctions::bid( - Origin::signed(10), - ParaId::from(para_1), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 910, // Amount - )); - - // User 2 will be a contribute to crowdloan for parachain 2 - Balances::make_free_balance_be(&2, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(2), ParaId::from(para_2), 920, None)); - - // Auction ends at block 110 - run_to_block(109); - assert_eq!( - last_event(), - crowdloan::Event::::HandleBidResult(ParaId::from(para_2), Ok(())).into(), - ); - run_to_block(110); - assert_eq!( - last_event(), - auctions::Event::::AuctionClosed(1).into(), - ); - - // Paras should have won slots - assert_eq!( - slots::Leases::::get(ParaId::from(para_1)), - // -- 1 --- 2 --- 3 --------- 4 ------------ 5 -------- - vec![None, None, None, Some((10, 910)), Some((10, 910))], - ); - assert_eq!( - slots::Leases::::get(ParaId::from(para_2)), - // -- 1 --- 2 --- 3 --- 4 --- 5 ---------------- 6 --------------------------- 7 ---------------- - vec![None, None, None, None, None, Some((crowdloan_account, 920)), Some((crowdloan_account, 920))], - ); - - // Should not be able to contribute to a winning crowdloan - Balances::make_free_balance_be(&3, 1_000_000_000); - assert_noop!(Crowdloan::contribute(Origin::signed(3), ParaId::from(2001), 10, None), CrowdloanError::::BidOrLeaseActive); - - // New leases will start on block 400 - let lease_start_block = 400; - run_to_block(lease_start_block); - - // First slot, Para 1 should be transitioning to Parachain - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::UpgradingParathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Two sessions later, it has upgraded - run_to_block(lease_start_block + 20); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Second slot nothing happens :) - run_to_block(lease_start_block + 100); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Third slot, Para 2 should be upgrading, and Para 1 is downgrading - run_to_block(lease_start_block + 200); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::DowngradingParachain)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::UpgradingParathread)); - - // Two sessions later, they have transitioned - run_to_block(lease_start_block + 220); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); - - // Fourth slot nothing happens :) - run_to_block(lease_start_block + 300); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); - - // Fifth slot, Para 2 is downgrading - run_to_block(lease_start_block + 400); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::DowngradingParachain)); - - // Two sessions later, Para 2 is downgraded - run_to_block(lease_start_block + 420); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - }); -} - -#[test] -fn basic_errors_fail() { - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); - let para_id = LOWEST_PUBLIC_ID; - // Can't double register - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - - let genesis_head = Registrar::worst_head_data(); - let validation_code = Registrar::worst_validation_code(); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - genesis_head.clone(), - validation_code.clone(), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_noop!(Registrar::register( - Origin::signed(2), - para_id, - genesis_head, - validation_code, - ), paras_registrar::Error::::NotOwner); - - // Start an auction - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // Cannot create a crowdloan if you do not own the para - assert_noop!(Crowdloan::create( - Origin::signed(2), - para_id, - 1_000, // Cap - lease_period_index_start + 2, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End - None, - ), crowdloan::Error::::InvalidOrigin); - }); -} - -#[test] -fn competing_slots() { - // This test will verify that competing slots, from different sources will resolve appropriately. - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); - let max_bids = 10u32; - let para_id = LOWEST_PUBLIC_ID; - - // Create n paras and owners - for n in 1 ..= max_bids { - Balances::make_free_balance_be(&n, 1_000_000_000); - let genesis_head = Registrar::worst_head_data(); - let validation_code = Registrar::worst_validation_code(); - assert_ok!(Registrar::reserve(Origin::signed(n))); - assert_ok!(Registrar::register( - Origin::signed(n), - para_id + n - 1, - genesis_head, - validation_code, - )); - } - - // Start a new auction in the future - let duration = 149u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // Paras should be onboarded - run_to_block(20); // session 2 - - for n in 1 ..= max_bids { - // Increment block number - run_to_block(System::block_number() + 10); - - Balances::make_free_balance_be(&(n * 10), n * 1_000); - - let (start, end) = match n { - 1 => (0, 0), - 2 => (0, 1), - 3 => (0, 2), - 4 => (0, 3), - 5 => (1, 1), - 6 => (1, 2), - 7 => (1, 3), - 8 => (2, 2), - 9 => (2, 3), - 10 => (3, 3), - _ => panic!("test not meant for this"), - }; - - // Users will bid directly for parachain - assert_ok!(Auctions::bid( - Origin::signed(n * 10), - para_id + n - 1, - 1, // Auction Index - lease_period_index_start + start, // First Slot - lease_period_index_start + end, // Last slot - n * 900, // Amount - )); - } - - // Auction should be done after ending period - run_to_block(160); - - // Appropriate Paras should have won slots - // 900 + 4500 + 2x 8100 = 21,600 - // 900 + 4500 + 7200 + 9000 = 21,600 - assert_eq!( - slots::Leases::::get(para_id), - // -- 1 --- 2 --- 3 ---------- 4 ------ - vec![None, None, None, Some((10, 900))], - ); - assert_eq!( - slots::Leases::::get(para_id + 4), - // -- 1 --- 2 --- 3 --- 4 ---------- 5 ------- - vec![None, None, None, None, Some((50, 4500))], - ); - // TODO: Is this right? - assert_eq!( - slots::Leases::::get(para_id + 8), - // -- 1 --- 2 --- 3 --- 4 --- 5 ---------- 6 --------------- 7 ------- - vec![None, None, None, None, None, Some((90, 8100)), Some((90, 8100))], - ); - }); -} - -#[test] -fn competing_bids() { - // This test will verify that competing bids, from different sources will resolve appropriately. - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); - - let start_para = LOWEST_PUBLIC_ID - 1; - // Create 3 paras and owners - for n in 1 ..= 3 { - Balances::make_free_balance_be(&n, 1_000_000_000); - let genesis_head = Registrar::worst_head_data(); - let validation_code = Registrar::worst_validation_code(); - assert_ok!(Registrar::reserve(Origin::signed(n))); - assert_ok!(Registrar::register( - Origin::signed(n), - ParaId::from(start_para + n), - genesis_head, - validation_code, - )); - } - - // Finish registration of paras. - run_to_session(2); - - // Start a new auction in the future - let starting_block = System::block_number(); - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - for n in 1 ..= 3 { - // Create a crowdloan for each para - assert_ok!(Crowdloan::create( - Origin::signed(n), - ParaId::from(start_para + n), - 100_000, // Cap - lease_period_index_start + 2, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End, - None, - )); - } - - for n in 1 ..= 9 { - // Increment block number - run_to_block(starting_block + n * 10); - - Balances::make_free_balance_be(&(n * 10), n * 1_000); - - let para = start_para + n % 3 + 1; - - if n % 2 == 0 { - // User 10 will bid directly for parachain 1 - assert_ok!(Auctions::bid( - Origin::signed(n * 10), - ParaId::from(para), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - n * 900, // Amount - )); - } else { - // User 20 will be a contribute to crowdloan for parachain 2 - assert_ok!(Crowdloan::contribute( - Origin::signed(n * 10), - ParaId::from(para), - n + 900, - None, - )); - } - } - - // Auction should be done - run_to_block(starting_block + 110); - - // Appropriate Paras should have won slots - let crowdloan_2 = Crowdloan::fund_account_id(ParaId::from(2001)); - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // -- 1 --- 2 --- 3 --- 4 --- 5 ------------- 6 ------------------------ 7 ------------- - vec![None, None, None, None, None, Some((crowdloan_2, 1812)), Some((crowdloan_2, 1812))], - ); - assert_eq!( - slots::Leases::::get(ParaId::from(2002)), - // -- 1 --- 2 --- 3 ---------- 4 --------------- 5 ------- - vec![None, None, None, Some((80, 7200)), Some((80, 7200))], - ); - }); -} - -#[test] -fn basic_swap_works() { - // This test will test a swap between a parachain and parathread works successfully. - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); // So events are emitted - // User 1 and 2 will own paras - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - // First register 2 parathreads with different data - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(2000), - test_genesis_head(10), - test_validation_code(10), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - ParaId::from(2001), - test_genesis_head(20), - test_validation_code(20), - )); - - // Paras should be onboarding - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Onboarding)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Onboarding)); - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // 2 sessions later they are parathreads - run_to_session(2); - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); - - // Open a crowdloan for Para 1 for slots 0-3 - assert_ok!(Crowdloan::create( - Origin::signed(1), - ParaId::from(2000), - 1_000_000, // Cap - lease_period_index_start + 0, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End - None, - )); - let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(2000)); - - // Bunch of contributions - let mut total = 0; - for i in 10 .. 20 { - Balances::make_free_balance_be(&i, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(i), ParaId::from(2000), 900 - i, None)); - total += 900 - i; - } - assert!(total > 0); - assert_eq!(Balances::free_balance(&crowdloan_account), total); - - // Go to end of auction where everyone won their slots - run_to_block(200); - - // Deposit is appropriately taken - // ----------------------------------------- para deposit --- crowdloan - assert_eq!(Balances::reserved_balance(&1), (500 + 10 * 2 * 1) + 100); - assert_eq!(Balances::reserved_balance(&2), 500 + 20 * 2 * 1); - assert_eq!(Balances::reserved_balance(&crowdloan_account), total); - // Crowdloan is appropriately set - assert!(Crowdloan::funds(ParaId::from(2000)).is_some()); - assert!(Crowdloan::funds(ParaId::from(2001)).is_none()); - - // New leases will start on block 400 - let lease_start_block = 400; - run_to_block(lease_start_block); - - // Slots are won by Para 1 - assert!(!Slots::lease(ParaId::from(2000)).is_empty()); - assert!(Slots::lease(ParaId::from(2001)).is_empty()); - - // 2 sessions later it is a parachain - run_to_block(lease_start_block + 20); - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parachain)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); - - // Initiate a swap - assert_ok!(Registrar::swap(para_origin(2000).into(), ParaId::from(2000), ParaId::from(2001))); - assert_ok!(Registrar::swap(para_origin(2001).into(), ParaId::from(2001), ParaId::from(2000))); - - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::DowngradingParachain)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::UpgradingParathread)); - - // 2 session later they have swapped - run_to_block(lease_start_block + 40); - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parachain)); - - // Deregister parathread - assert_ok!(Registrar::deregister(para_origin(2000).into(), ParaId::from(2000))); - // Correct deposit is unreserved - assert_eq!(Balances::reserved_balance(&1), 100); // crowdloan deposit left over - assert_eq!(Balances::reserved_balance(&2), 500 + 20 * 2 * 1); - // Crowdloan ownership is swapped - assert!(Crowdloan::funds(ParaId::from(2000)).is_none()); - assert!(Crowdloan::funds(ParaId::from(2001)).is_some()); - // Slot is swapped - assert!(Slots::lease(ParaId::from(2000)).is_empty()); - assert!(!Slots::lease(ParaId::from(2001)).is_empty()); - - // Cant dissolve - assert_noop!(Crowdloan::dissolve(Origin::signed(1), ParaId::from(2000)), CrowdloanError::::InvalidParaId); - assert_noop!(Crowdloan::dissolve(Origin::signed(2), ParaId::from(2001)), CrowdloanError::::NotReadyToDissolve); - - // Go way in the future when the para is offboarded - run_to_block(lease_start_block + 1000); - - // Withdraw of contributions works - assert_eq!(Balances::free_balance(&crowdloan_account), total); - for i in 10 .. 20 { - assert_ok!(Crowdloan::withdraw(Origin::signed(i), i, ParaId::from(2001))); - } - assert_eq!(Balances::free_balance(&crowdloan_account), 0); - - // Dissolve returns the balance of the person who put a deposit for crowdloan - assert_ok!(Crowdloan::dissolve(Origin::signed(1), ParaId::from(2001))); - assert_eq!(Balances::reserved_balance(&1), 0); - assert_eq!(Balances::reserved_balance(&2), 500 + 20 * 2 * 1); - - // Final deregister sets everything back to the start - assert_ok!(Registrar::deregister(para_origin(2001).into(), ParaId::from(2001))); - assert_eq!(Balances::reserved_balance(&2), 0); - }) -} - -#[test] -fn crowdloan_ending_period_bid() { - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); // So events are emitted - // User 1 and 2 will own paras - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - // First register 2 parathreads - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(2000), - test_genesis_head(10), - test_validation_code(10), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - ParaId::from(2001), - test_genesis_head(20), - test_validation_code(20), - )); - - // Paras should be onboarding - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Onboarding)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Onboarding)); - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // 2 sessions later they are parathreads - run_to_session(2); - assert_eq!(Paras::lifecycle(ParaId::from(2000)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(2001)), Some(ParaLifecycle::Parathread)); - - // Open a crowdloan for Para 1 for slots 0-3 - assert_ok!(Crowdloan::create( - Origin::signed(1), - ParaId::from(2000), - 1_000_000, // Cap - lease_period_index_start + 0, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End - None, - )); - let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(2000)); - - // Bunch of contributions - let mut total = 0; - for i in 10 .. 20 { - Balances::make_free_balance_be(&i, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(i), ParaId::from(2000), 900 - i, None)); - total += 900 - i; - } - assert!(total > 0); - assert_eq!(Balances::free_balance(&crowdloan_account), total); - - // Bid for para 2 directly - Balances::make_free_balance_be(&2, 1_000_000_000); - assert_ok!(Auctions::bid( - Origin::signed(2), - ParaId::from(2001), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 900, // Amount - )); - - // Go to beginning of ending period - run_to_block(100); - - assert_eq!(Auctions::auction_status(100), AuctionStatus::::EndingPeriod(0, 0)); - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ZeroOne as u8 as usize] = Some((2, ParaId::from(2001), 900)); - winning[SlotRange::ZeroThree as u8 as usize] = Some((crowdloan_account, ParaId::from(2000), total)); - - assert_eq!(Auctions::winning(0), Some(winning)); - - run_to_block(101); - - Balances::make_free_balance_be(&1234, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(1234), ParaId::from(2000), 900, None)); - - // Data propagates correctly - run_to_block(102); - let mut winning = [None; SlotRange::SLOT_RANGE_COUNT]; - winning[SlotRange::ZeroOne as u8 as usize] = Some((2, ParaId::from(2001), 900)); - winning[SlotRange::ZeroThree as u8 as usize] = Some((crowdloan_account, ParaId::from(2000), total + 900)); - assert_eq!(Auctions::winning(2), Some(winning)); - }) -} - -#[test] -fn auction_bid_requires_registered_para() { - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); // So events are emitted - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // Can't bid with non-registered paras - Balances::make_free_balance_be(&1, 1_000_000_000); - assert_noop!(Auctions::bid( - Origin::signed(1), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 900, // Amount - ), AuctionsError::::ParaNotRegistered); - - // Now we register the para - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(2000), - test_genesis_head(10), - test_validation_code(10), - )); - - // Still can't bid until it is fully onboarded - assert_noop!(Auctions::bid( - Origin::signed(1), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 900, // Amount - ), AuctionsError::::ParaNotRegistered); - - // Onboarded on Session 2 - run_to_session(2); - - // Success - Balances::make_free_balance_be(&1, 1_000_000_000); - assert_ok!(Auctions::bid( - Origin::signed(1), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 900, // Amount - )); - }); -} - -#[test] -fn gap_bids_work() { - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); // So events are emitted - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - - // Now register 2 paras - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(2000), - test_genesis_head(10), - test_validation_code(10), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - ParaId::from(2001), - test_genesis_head(10), - test_validation_code(10), - )); - - // Onboarded on Session 2 - run_to_session(2); - - // Make bids - Balances::make_free_balance_be(&10, 1_000_000_000); - Balances::make_free_balance_be(&20, 1_000_000_000); - // Slot 1 for 100 from 10 - assert_ok!(Auctions::bid( - Origin::signed(10), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 0, // Last slot - 100, // Amount - )); - // Slot 4 for 400 from 10 - assert_ok!(Auctions::bid( - Origin::signed(10), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 3, // First Slot - lease_period_index_start + 3, // Last slot - 400, // Amount - )); - - // A bid for another para is counted separately. - assert_ok!(Auctions::bid( - Origin::signed(10), - ParaId::from(2001), - 1, // Auction Index - lease_period_index_start + 1, // First Slot - lease_period_index_start + 1, // Last slot - 555, // Amount - )); - assert_eq!(Balances::reserved_balance(&10), 400 + 555); - - // Slot 2 for 800 from 20, overtaking 10's bid - assert_ok!(Auctions::bid( - Origin::signed(20), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 1, // First Slot - lease_period_index_start + 1, // Last slot - 800, // Amount - )); - // Slot 3 for 200 from 20 - assert_ok!(Auctions::bid( - Origin::signed(20), - ParaId::from(2000), - 1, // Auction Index - lease_period_index_start + 2, // First Slot - lease_period_index_start + 2, // Last slot - 200, // Amount - )); - - // Finish the auction - run_to_block(110); - - // Should have won the lease periods - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // -- 1 --- 2 --- 3 ---------- 4 -------------- 5 -------------- 6 -------------- 7 ------- - vec![None, None, None, Some((10, 100)), Some((20, 800)), Some((20, 200)), Some((10, 400))], - ); - // Appropriate amount is reserved (largest of the values) - assert_eq!(Balances::reserved_balance(&10), 400); - // Appropriate amount is reserved (largest of the values) - assert_eq!(Balances::reserved_balance(&20), 800); - - // Progress through the leases and note the correct amount of balance is reserved. - - run_to_block(400); - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // --------- 4 -------------- 5 -------------- 6 -------------- 7 ------- - vec![Some((10, 100)), Some((20, 800)), Some((20, 200)), Some((10, 400))], - ); - // Nothing changed. - assert_eq!(Balances::reserved_balance(&10), 400); - assert_eq!(Balances::reserved_balance(&20), 800); - - // Lease period 4 is done, but nothing is unreserved since user 1 has a debt on lease 7 - run_to_block(500); - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // --------- 5 -------------- 6 -------------- 7 ------- - vec![Some((20, 800)), Some((20, 200)), Some((10, 400))], - ); - // Nothing changed. - assert_eq!(Balances::reserved_balance(&10), 400); - assert_eq!(Balances::reserved_balance(&20), 800); - - // Lease period 5 is done, and 20 will unreserve down to 200. - run_to_block(600); - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // --------- 6 -------------- 7 ------- - vec![Some((20, 200)), Some((10, 400))], - ); - assert_eq!(Balances::reserved_balance(&10), 400); - assert_eq!(Balances::reserved_balance(&20), 200); - - // Lease period 6 is done, and 20 will unreserve everything. - run_to_block(700); - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // --------- 7 ------- - vec![Some((10, 400))], - ); - assert_eq!(Balances::reserved_balance(&10), 400); - assert_eq!(Balances::reserved_balance(&20), 0); - - // All leases are done. Everything is unreserved. - run_to_block(800); - assert_eq!(slots::Leases::::get(ParaId::from(2000)), vec![]); - assert_eq!(Balances::reserved_balance(&10), 0); - assert_eq!(Balances::reserved_balance(&20), 0); - }); -} - -// This test verifies that if a parachain already has won some lease periods, that it cannot bid for -// any of those same lease periods again. -#[test] -fn cant_bid_on_existing_lease_periods() { - new_test_ext().execute_with(|| { - assert!(System::block_number().is_one()); // So events are emitted - Balances::make_free_balance_be(&1, 1_000_000_000); - // First register a parathread - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(2000), - test_genesis_head(10), - test_validation_code(10), - )); - - // Start a new auction in the future - let starting_block = System::block_number(); - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // 2 sessions later they are parathreads - run_to_session(2); - - // Open a crowdloan for Para 1 for slots 0-3 - assert_ok!(Crowdloan::create( - Origin::signed(1), - ParaId::from(2000), - 1_000_000, // Cap - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last Slot - 400, // Long block end - None, - )); - let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(2000)); - - // Bunch of contributions - let mut total = 0; - for i in 10 .. 20 { - Balances::make_free_balance_be(&i, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(i), ParaId::from(2000), 900 - i, None)); - total += 900 - i; - } - assert!(total > 0); - assert_eq!(Balances::free_balance(&crowdloan_account), total); - - // Finish the auction. - run_to_block(starting_block + 110); - - // Appropriate Paras should have won slots - assert_eq!( - slots::Leases::::get(ParaId::from(2000)), - // -- 1 --- 2 --- 3 ------------- 4 ------------------------ 5 ------------- - vec![None, None, None, Some((crowdloan_account, 8855)), Some((crowdloan_account, 8855))], - ); - - // Let's start another auction for the same range - let starting_block = System::block_number(); - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // Poke the crowdloan into `NewRaise` - assert_ok!(Crowdloan::poke(Origin::signed(1), ParaId::from(2000))); - assert_eq!(Crowdloan::new_raise(), vec![ParaId::from(2000)]); - - // Beginning of ending block. - run_to_block(starting_block + 100); - - // Bids cannot be made which intersect - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start + 0, - lease_period_index_start + 1, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start + 1, - lease_period_index_start + 2, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start - 1, - lease_period_index_start + 0, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start + 0, - lease_period_index_start + 0, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start + 1, - lease_period_index_start + 1, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - assert_noop!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start - 1, - lease_period_index_start + 5, - 100, - ), AuctionsError::::AlreadyLeasedOut, - ); - - // Will work when not overlapping - assert_ok!( - Auctions::bid( - Origin::signed(crowdloan_account), - ParaId::from(2000), - 2, - lease_period_index_start + 2, - lease_period_index_start + 3, - 100, - ) - ); - }); -} diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs deleted file mode 100644 index 406b3fc17c56..000000000000 --- a/runtime/common/src/lib.rs +++ /dev/null @@ -1,329 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Common runtime code for Polkadot and Kusama. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod claims; -pub mod slots; -pub mod auctions; -pub mod crowdloan; -pub mod purchase; -pub mod impls; -pub mod mmr; -pub mod paras_sudo_wrapper; -pub mod paras_registrar; -pub mod slot_range; -pub mod traits; -pub mod xcm_sender; - -#[cfg(test)] -mod mock; -#[cfg(test)] -mod integration_tests; - -use beefy_primitives::crypto::AuthorityId as BeefyId; -use primitives::v1::{AccountId, AssignmentId, BlockNumber, ValidatorId}; -use sp_runtime::{Perquintill, Perbill, FixedPointNumber}; -use frame_system::limits; -use frame_support::{ - parameter_types, traits::{Currency, OneSessionHandler}, - weights::{Weight, constants::WEIGHT_PER_SECOND, DispatchClass}, -}; -use pallet_transaction_payment::{TargetedFeeAdjustment, Multiplier}; -use static_assertions::const_assert; -pub use frame_support::weights::constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; - -#[cfg(feature = "std")] -pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use pallet_timestamp::Call as TimestampCall; -pub use pallet_balances::Call as BalancesCall; - -/// Implementations of some helper traits passed into runtime modules as associated types. -pub use impls::ToAuthor; - -pub type NegativeImbalance = as Currency<::AccountId>>::NegativeImbalance; - -/// We assume that an on-initialize consumes 1% of the weight on average, hence a single extrinsic -/// will not be allowed to consume more than `AvailableBlockRatio - 1%`. -pub const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(1); -/// We allow `Normal` extrinsics to fill up the block up to 75%, the rest can be used -/// by Operational extrinsics. -const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); -/// We allow for 2 seconds of compute with a 6 second average block time. -pub const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; - -const_assert!(NORMAL_DISPATCH_RATIO.deconstruct() >= AVERAGE_ON_INITIALIZE_RATIO.deconstruct()); - -// Common constants used in all runtimes. -parameter_types! { - pub const BlockHashCount: BlockNumber = 2400; - /// The portion of the `NORMAL_DISPATCH_RATIO` that we adjust the fees with. Blocks filled less - /// than this will decrease the weight and more will increase. - pub const TargetBlockFullness: Perquintill = Perquintill::from_percent(25); - /// The adjustment variable of the runtime. Higher values will cause `TargetBlockFullness` to - /// change the fees more rapidly. - pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000); - /// Minimum amount of the multiplier. This value cannot be too low. A test case should ensure - /// that combined with `AdjustmentVariable`, we can recover from the minimum. - /// See `multiplier_can_grow_from_zero`. - pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128); - /// Maximum length of block. Up to 5MB. - pub BlockLength: limits::BlockLength = - limits::BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); - /// Block weights base values and limits. - pub BlockWeights: limits::BlockWeights = limits::BlockWeights::builder() - .base_block(BlockExecutionWeight::get()) - .for_class(DispatchClass::all(), |weights| { - weights.base_extrinsic = ExtrinsicBaseWeight::get(); - }) - .for_class(DispatchClass::Normal, |weights| { - weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT); - }) - .for_class(DispatchClass::Operational, |weights| { - weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT); - // Operational transactions have an extra reserved space, so that they - // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`. - weights.reserved = Some( - MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT, - ); - }) - .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO) - .build_or_panic(); -} - -parameter_types! { - /// A limit for off-chain phragmen unsigned solution submission. - /// - /// We want to keep it as high as possible, but can't risk having it reject, - /// so we always subtract the base block execution weight. - pub OffchainSolutionWeightLimit: Weight = BlockWeights::get() - .get(DispatchClass::Normal) - .max_extrinsic - .expect("Normal extrinsics have weight limit configured by default; qed") - .saturating_sub(BlockExecutionWeight::get()); - - /// A limit for off-chain phragmen unsigned solution length. - /// - /// We allow up to 90% of the block's size to be consumed by the solution. - pub OffchainSolutionLengthLimit: u32 = Perbill::from_rational(90_u32, 100) * - *BlockLength::get() - .max - .get(DispatchClass::Normal); -} - -/// Parameterized slow adjusting fee updated based on -/// https://w3f-research.readthedocs.io/en/latest/polkadot/Token%20Economics.html#-2.-slow-adjusting-mechanism -pub type SlowAdjustingFeeUpdate = TargetedFeeAdjustment< - R, - TargetBlockFullness, - AdjustmentVariable, - MinimumMultiplier ->; - -/// The type used for currency conversion. -/// -/// This must only be used as long as the balance type is u128. -pub type CurrencyToVote = frame_support::traits::U128CurrencyToVote; -static_assertions::assert_eq_size!(primitives::v1::Balance, u128); - -/// A placeholder since there is currently no provided session key handler for parachain validator -/// keys. -pub struct ParachainSessionKeyPlaceholder(sp_std::marker::PhantomData); -impl sp_runtime::BoundToRuntimeAppPublic for ParachainSessionKeyPlaceholder { - type Public = ValidatorId; -} - -impl OneSessionHandler for ParachainSessionKeyPlaceholder -{ - type Key = ValidatorId; - - fn on_genesis_session<'a, I: 'a>(_validators: I) where - I: Iterator, - T::AccountId: 'a - { - - } - - fn on_new_session<'a, I: 'a>(_changed: bool, _v: I, _q: I) where - I: Iterator, - T::AccountId: 'a - { - - } - - fn on_disabled(_: usize) { } -} - -/// A placeholder since there is currently no provided session key handler for parachain validator -/// keys. -pub struct AssignmentSessionKeyPlaceholder(sp_std::marker::PhantomData); -impl sp_runtime::BoundToRuntimeAppPublic for AssignmentSessionKeyPlaceholder { - type Public = AssignmentId; -} - -impl OneSessionHandler for AssignmentSessionKeyPlaceholder -{ - type Key = AssignmentId; - - fn on_genesis_session<'a, I: 'a>(_validators: I) where - I: Iterator, - T::AccountId: 'a - { - - } - - fn on_new_session<'a, I: 'a>(_changed: bool, _v: I, _q: I) where - I: Iterator, - T::AccountId: 'a - { - - } - - fn on_disabled(_: usize) { } -} - -/// Generates a `BeefyId` from the given `AccountId`. The resulting `BeefyId` is -/// a dummy value and this is a utility function meant to be used when migration -/// session keys. -pub fn dummy_beefy_id_from_account_id(a: AccountId) -> BeefyId { - let mut id = BeefyId::default(); - let id_raw: &mut [u8] = id.as_mut(); - - // NOTE: AccountId is 32 bytes, whereas BeefyId is 33 bytes. - id_raw[1..].copy_from_slice(a.as_ref()); - id_raw[0..4].copy_from_slice(b"beef"); - - id -} - -#[cfg(test)] -mod multiplier_tests { - use super::*; - use frame_support::{parameter_types, weights::Weight}; - use sp_core::H256; - use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup, Convert, One}, - Perbill, - }; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Runtime where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event} - } - ); - - parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const AvailableBlockRatio: Perbill = Perbill::one(); - pub BlockLength: frame_system::limits::BlockLength = - frame_system::limits::BlockLength::max(2 * 1024); - pub BlockWeights: frame_system::limits::BlockWeights = - frame_system::limits::BlockWeights::simple_max(1024); - } - - impl frame_system::Config for Runtime { - type BaseCallFilter = (); - type BlockWeights = BlockWeights; - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Index = u64; - type BlockNumber = u64; - type Call = Call; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = (); - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - fn run_with_system_weight(w: Weight, mut assertions: F) where F: FnMut() -> () { - let mut t: sp_io::TestExternalities = - frame_system::GenesisConfig::default().build_storage::().unwrap().into(); - t.execute_with(|| { - System::set_block_consumed_resources(w, 0); - assertions() - }); - } - - #[test] - fn multiplier_can_grow_from_zero() { - let minimum_multiplier = MinimumMultiplier::get(); - let target = TargetBlockFullness::get() * - BlockWeights::get().get(DispatchClass::Normal).max_total.unwrap(); - // if the min is too small, then this will not change, and we are doomed forever. - // the weight is 1/100th bigger than target. - run_with_system_weight(target * 101 / 100, || { - let next = SlowAdjustingFeeUpdate::::convert(minimum_multiplier); - assert!(next > minimum_multiplier, "{:?} !>= {:?}", next, minimum_multiplier); - }) - } - - #[test] - #[ignore] - fn multiplier_growth_simulator() { - // assume the multiplier is initially set to its minimum. We update it with values twice the - //target (target is 25%, thus 50%) and we see at which point it reaches 1. - let mut multiplier = MinimumMultiplier::get(); - let block_weight = TargetBlockFullness::get() - * BlockWeights::get().get(DispatchClass::Normal).max_total.unwrap() - * 2; - let mut blocks = 0; - while multiplier <= Multiplier::one() { - run_with_system_weight(block_weight, || { - let next = SlowAdjustingFeeUpdate::::convert(multiplier); - // ensure that it is growing as well. - assert!(next > multiplier, "{:?} !>= {:?}", next, multiplier); - multiplier = next; - }); - blocks += 1; - println!("block = {} multiplier {:?}", blocks, multiplier); - } - } - - #[test] - fn generate_dummy_unique_beefy_id_from_account_id() { - let acc1 = AccountId::new([0; 32]); - let acc2 = AccountId::new([1; 32]); - - let beefy_id1 = dummy_beefy_id_from_account_id(acc1); - let beefy_id2 = dummy_beefy_id_from_account_id(acc2); - - assert_ne!(beefy_id1, beefy_id2); - } -} diff --git a/runtime/common/src/mmr.rs b/runtime/common/src/mmr.rs deleted file mode 100644 index 2cf2bf115cd0..000000000000 --- a/runtime/common/src/mmr.rs +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A pallet responsible for creating Merkle Mountain Range (MMR) leaf for current block. - -use beefy_primitives::ValidatorSetId; -use sp_core::H256; -use sp_runtime::traits::Convert; -use sp_std::prelude::*; -use frame_support::RuntimeDebug; -use pallet_mmr::primitives::LeafDataProvider; -use parity_scale_codec::{Encode, Decode}; -use runtime_parachains::paras; -pub use pallet::*; - -/// A BEEFY consensus digest item with MMR root hash. -pub struct DepositBeefyDigest(sp_std::marker::PhantomData); - -impl pallet_mmr::primitives::OnNewRoot for DepositBeefyDigest where - T: pallet_mmr::Config, - T: pallet_beefy::Config, -{ - fn on_new_root(root: &::Hash) { - let digest = sp_runtime::generic::DigestItem::Consensus( - beefy_primitives::BEEFY_ENGINE_ID, - parity_scale_codec::Encode::encode( - &beefy_primitives::ConsensusLog::<::BeefyId>::MmrRoot(*root) - ), - ); - >::deposit_log(digest); - } -} - -/// Convert BEEFY secp256k1 public keys into uncompressed form -pub struct UncompressBeefyEcdsaKeys; -impl Convert> for UncompressBeefyEcdsaKeys { - fn convert(a: beefy_primitives::crypto::AuthorityId) -> Vec { - use sp_core::crypto::Public; - let compressed_key = a.as_slice(); - // TODO [ToDr] Temporary workaround until we have a better way to get uncompressed keys. - secp256k1::PublicKey::parse_slice(compressed_key, Some(secp256k1::PublicKeyFormat::Compressed)) - .map(|pub_key| pub_key.serialize().to_vec()) - .map_err(|_| { - log::error!(target: "runtime::beefy", "Invalid BEEFY PublicKey format!"); - }) - .unwrap_or_default() - } -} - -/// A leaf that gets added every block to the MMR constructed by [pallet_mmr]. -#[derive(RuntimeDebug, PartialEq, Eq, Clone, Encode, Decode)] -pub struct MmrLeaf { - /// Current block parent number and hash. - pub parent_number_and_hash: (BlockNumber, Hash), - /// A merkle root of all registered parachain heads. - pub parachain_heads: MerkleRoot, - /// A merkle root of the next BEEFY authority set. - pub beefy_next_authority_set: BeefyNextAuthoritySet, -} - -/// Details of the next BEEFY authority set. -#[derive(RuntimeDebug, Default, PartialEq, Eq, Clone, Encode, Decode)] -pub struct BeefyNextAuthoritySet { - /// Id of the next set. - /// - /// Id is required to correlate BEEFY signed commitments with the validator set. - /// Light Client can easily verify that the commitment witness it is getting is - /// produced by the latest validator set. - pub id: ValidatorSetId, - /// Number of validators in the set. - /// - /// Some BEEFY Light Clients may use an interactive protocol to verify only subset - /// of signatures. We put set length here, so that these clients can verify the minimal - /// number of required signatures. - pub len: u32, - /// Merkle Root Hash build from BEEFY AuthorityIds. - /// - /// This is used by Light Clients to confirm that the commitments are signed by the correct - /// validator set. Light Clients using interactive protocol, might verify only subset of - /// signatures, hence don't require the full list here (will receive inclusion proofs). - pub root: MerkleRoot, -} - -type MerkleRootOf = ::Hash; - -/// A type that is able to return current list of parachain heads that end up in the MMR leaf. -pub trait ParachainHeadsProvider { - /// Return a list of encoded parachain heads. - fn encoded_heads() -> Vec>; -} - -/// A default implementation for runtimes without parachains. -impl ParachainHeadsProvider for () { - fn encoded_heads() -> Vec> { - Default::default() - } -} - -impl ParachainHeadsProvider for paras::Pallet { - fn encoded_heads() -> Vec> { - paras::Pallet::::parachains() - .into_iter() - .map(paras::Pallet::::para_head) - .map(|maybe_para_head| maybe_para_head.encode()) - .collect() - } -} - -#[frame_support::pallet] -pub mod pallet { - use frame_support::pallet_prelude::*; - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - /// The module's configuration trait. - #[pallet::config] - #[pallet::disable_frame_system_supertrait_check] - pub trait Config: pallet_mmr::Config + pallet_beefy::Config { - /// Convert BEEFY AuthorityId to a form that would end up in the Merkle Tree. - /// - /// For instance for ECDSA (secp256k1) we want to store uncompressed public keys (65 bytes) - /// to simplify using them on Ethereum chain, but the rest of the Substrate codebase - /// is storing them compressed (33 bytes) for efficiency reasons. - type BeefyAuthorityToMerkleLeaf: Convert<::BeefyId, Vec>; - - /// Retrieve a list of current parachain heads. - /// - /// The trait is implemented for `paras` module, but since not all chains might have parachains, - /// and we want to keep the MMR leaf structure uniform, it's possible to use `()` as well to - /// simply put dummy data to the leaf. - type ParachainHeads: ParachainHeadsProvider; - } - - /// Details of next BEEFY authority set. - /// - /// This storage entry is used as cache for calls to [`update_beefy_next_authority_set`]. - #[pallet::storage] - #[pallet::getter(fn beefy_next_authorities)] - pub type BeefyNextAuthorities = StorageValue< - _, - BeefyNextAuthoritySet>, - ValueQuery, - >; -} - -impl LeafDataProvider for Pallet where - MerkleRootOf: From, -{ - type LeafData = MmrLeaf< - ::BlockNumber, - ::Hash, - MerkleRootOf, - >; - - fn leaf_data() -> Self::LeafData { - MmrLeaf { - parent_number_and_hash: frame_system::Pallet::::leaf_data(), - parachain_heads: Pallet::::parachain_heads_merkle_root(), - beefy_next_authority_set: Pallet::::update_beefy_next_authority_set(), - } - } -} - -impl Pallet where - MerkleRootOf: From, - ::BeefyId: -{ - /// Returns latest root hash of a merkle tree constructed from all registered parachain headers. - /// - /// NOTE this does not include parathreads - only parachains are part of the merkle tree. - /// - /// NOTE This is an initial and inefficient implementation, which re-constructs - /// the merkle tree every block. Instead we should update the merkle root in [Self::on_initialize] - /// call of this pallet and update the merkle tree efficiently (use on-chain storage to persist inner nodes). - fn parachain_heads_merkle_root() -> MerkleRootOf { - let para_heads = T::ParachainHeads::encoded_heads(); - sp_io::trie::keccak_256_ordered_root(para_heads).into() - } - - /// Returns details of the next BEEFY authority set. - /// - /// Details contain authority set id, authority set length and a merkle root, - /// constructed from uncompressed secp256k1 public keys of the next BEEFY authority set. - /// - /// This function will use a storage-cached entry in case the set didn't change, or compute and cache - /// new one in case it did. - fn update_beefy_next_authority_set() -> BeefyNextAuthoritySet> { - let id = pallet_beefy::Pallet::::validator_set_id() + 1; - let current_next = Self::beefy_next_authorities(); - // avoid computing the merkle tree if validator set id didn't change. - if id == current_next.id { - return current_next; - } - - let beefy_public_keys = pallet_beefy::Pallet::::next_authorities() - .into_iter() - .map(T::BeefyAuthorityToMerkleLeaf::convert) - .collect::>(); - let len = beefy_public_keys.len() as u32; - let root: MerkleRootOf = sp_io::trie::keccak_256_ordered_root(beefy_public_keys).into(); - let next_set = BeefyNextAuthoritySet { - id, - len, - root, - }; - // cache the result - BeefyNextAuthorities::::put(&next_set); - next_set - } -} diff --git a/runtime/common/src/mock.rs b/runtime/common/src/mock.rs deleted file mode 100644 index 5e62681bd72f..000000000000 --- a/runtime/common/src/mock.rs +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Mocking utilities for testing. - -use std::{cell::RefCell, collections::HashMap}; -use parity_scale_codec::{Encode, Decode}; -use sp_runtime::traits::SaturatedConversion; -use frame_support::dispatch::{DispatchError, DispatchResult}; -use primitives::v1::{HeadData, ValidationCode, Id as ParaId}; -use crate::traits::Registrar; - -thread_local! { - static OPERATIONS: RefCell> = RefCell::new(Vec::new()); - static PARACHAINS: RefCell> = RefCell::new(Vec::new()); - static PARATHREADS: RefCell> = RefCell::new(Vec::new()); - static LOCKS: RefCell> = RefCell::new(HashMap::new()); - static MANAGERS: RefCell>> = RefCell::new(HashMap::new()); -} - -pub struct TestRegistrar(sp_std::marker::PhantomData); - -impl Registrar for TestRegistrar { - type AccountId = T::AccountId; - - fn manager_of(id: ParaId) -> Option { - MANAGERS.with(|x| x.borrow().get(&id).and_then(|v| T::AccountId::decode(&mut &v[..]).ok())) - } - - fn parachains() -> Vec { - PARACHAINS.with(|x| x.borrow().clone()) - } - - fn is_parathread(id: ParaId) -> bool { - PARATHREADS.with(|x| x.borrow().binary_search(&id).is_ok()) - } - - fn apply_lock(id: ParaId) { - LOCKS.with(|x| x.borrow_mut().insert(id, true)); - } - - fn remove_lock(id: ParaId) { - LOCKS.with(|x| x.borrow_mut().insert(id, false)); - } - - fn register( - manager: Self::AccountId, - id: ParaId, - _genesis_head: HeadData, - _validation_code: ValidationCode, - ) -> DispatchResult { - // Should not be parachain. - PARACHAINS.with(|x| { - let parachains = x.borrow_mut(); - match parachains.binary_search(&id) { - Ok(_) => Err(DispatchError::Other("Already Parachain")), - Err(_) => Ok(()), - } - })?; - // Should not be parathread, then make it. - PARATHREADS.with(|x| { - let mut parathreads = x.borrow_mut(); - match parathreads.binary_search(&id) { - Ok(_) => Err(DispatchError::Other("Already Parathread")), - Err(i) => { - parathreads.insert(i, id); - Ok(()) - }, - } - })?; - MANAGERS.with(|x| x.borrow_mut().insert(id, manager.encode())); - Ok(()) - } - - fn deregister(id: ParaId) -> DispatchResult { - // Should not be parachain. - PARACHAINS.with(|x| { - let parachains = x.borrow_mut(); - match parachains.binary_search(&id) { - Ok(_) => Err(DispatchError::Other("cannot deregister parachain")), - Err(_) => Ok(()), - } - })?; - // Remove from parathread. - PARATHREADS.with(|x| { - let mut parathreads = x.borrow_mut(); - match parathreads.binary_search(&id) { - Ok(i) => { - parathreads.remove(i); - Ok(()) - }, - Err(_) => Err(DispatchError::Other("not parathread, so cannot `deregister`")), - } - })?; - MANAGERS.with(|x| x.borrow_mut().remove(&id)); - Ok(()) - } - - fn make_parachain(id: ParaId) -> DispatchResult { - PARATHREADS.with(|x| { - let mut parathreads = x.borrow_mut(); - match parathreads.binary_search(&id) { - Ok(i) => { - parathreads.remove(i); - Ok(()) - }, - Err(_) => Err(DispatchError::Other("not parathread, so cannot `make_parachain`")), - } - })?; - PARACHAINS.with(|x| { - let mut parachains = x.borrow_mut(); - match parachains.binary_search(&id) { - Ok(_) => Err(DispatchError::Other("already parachain, so cannot `make_parachain`")), - Err(i) => { - parachains.insert(i, id); - Ok(()) - }, - } - })?; - OPERATIONS.with(|x| x.borrow_mut().push( - (id, frame_system::Pallet::::block_number().saturated_into(), true) - )); - Ok(()) - } - fn make_parathread(id: ParaId) -> DispatchResult { - PARACHAINS.with(|x| { - let mut parachains = x.borrow_mut(); - match parachains.binary_search(&id) { - Ok(i) => { - parachains.remove(i); - Ok(()) - }, - Err(_) => Err(DispatchError::Other("not parachain, so cannot `make_parathread`")), - } - })?; - PARATHREADS.with(|x| { - let mut parathreads = x.borrow_mut(); - match parathreads.binary_search(&id) { - Ok(_) => Err(DispatchError::Other("already parathread, so cannot `make_parathread`")), - Err(i) => { - parathreads.insert(i, id); - Ok(()) - }, - } - })?; - OPERATIONS.with(|x| x.borrow_mut().push( - (id, frame_system::Pallet::::block_number().saturated_into(), false) - )); - Ok(()) - } - - #[cfg(test)] - fn worst_head_data() -> HeadData { - vec![0u8; 1000].into() - } - - #[cfg(test)] - fn worst_validation_code() -> ValidationCode { - let validation_code = vec![0u8; 1000]; - validation_code.into() - } - - #[cfg(test)] - fn execute_pending_transitions() {} -} - -impl TestRegistrar { - pub fn operations() -> Vec<(ParaId, T::BlockNumber, bool)> { - OPERATIONS.with(|x| x.borrow().iter().map(|(p, b, c)| (*p, (*b).into(), *c)).collect::>()) - } - - #[allow(dead_code)] - pub fn parachains() -> Vec { - PARACHAINS.with(|x| x.borrow().clone()) - } - - #[allow(dead_code)] - pub fn parathreads() -> Vec { - PARATHREADS.with(|x| x.borrow().clone()) - } - - #[allow(dead_code)] - pub fn clear_storage() { - OPERATIONS.with(|x| x.borrow_mut().clear()); - PARACHAINS.with(|x| x.borrow_mut().clear()); - PARATHREADS.with(|x| x.borrow_mut().clear()); - MANAGERS.with(|x| x.borrow_mut().clear()); - } -} diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs deleted file mode 100644 index 26c3ce20d26b..000000000000 --- a/runtime/common/src/paras_registrar.rs +++ /dev/null @@ -1,1132 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Pallet to handle parathread/parachain registration and related fund management. -//! In essence this is a simple wrapper around `paras`. - -use sp_std::{prelude::*, result}; -use frame_support::{ - ensure, - dispatch::DispatchResult, - traits::{Get, Currency, ReservableCurrency}, - pallet_prelude::Weight, -}; -use frame_system::{self, ensure_root, ensure_signed}; -use primitives::v1::{ - Id as ParaId, ValidationCode, HeadData, LOWEST_PUBLIC_ID, -}; -use runtime_parachains::{ - paras::{ - self, - ParaGenesisArgs, - }, - configuration, - ensure_parachain, - Origin, ParaLifecycle, -}; - -use crate::traits::{Registrar, OnSwap}; -use parity_scale_codec::{Encode, Decode}; -use sp_runtime::{RuntimeDebug, traits::{Saturating, CheckedSub}}; -pub use pallet::*; - -#[derive(Encode, Decode, Clone, PartialEq, Eq, Default, RuntimeDebug)] -pub struct ParaInfo { - /// The account that has placed a deposit for registering this para. - pub(crate) manager: Account, - /// The amount reserved by the `manager` account for the registration. - deposit: Balance, - /// Whether the para registration should be locked from being controlled by the manager. - locked: bool, -} - -type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; - -pub trait WeightInfo { - fn reserve() -> Weight; - fn register() -> Weight; - fn force_register() -> Weight; - fn deregister() -> Weight; - fn swap() -> Weight; -} - -pub struct TestWeightInfo; -impl WeightInfo for TestWeightInfo { - fn reserve() -> Weight { 0 } - fn register() -> Weight { 0 } - fn force_register() -> Weight { 0 } - fn deregister() -> Weight { 0 } - fn swap() -> Weight { 0 } -} - -#[frame_support::pallet] -pub mod pallet { - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - #[pallet::config] - #[pallet::disable_frame_system_supertrait_check] - pub trait Config: configuration::Config + paras::Config { - /// The overarching event type. - type Event: From> + IsType<::Event>; - - /// The aggregated origin type must support the `parachains` origin. We require that we can - /// infallibly convert between this origin and the system origin, but in reality, they're the - /// same type, we just can't express that to the Rust type system without writing a `where` - /// clause everywhere. - type Origin: From<::Origin> - + Into::Origin>>; - - /// The system's currency for parathread payment. - type Currency: ReservableCurrency; - - /// Runtime hook for when a parachain and parathread swap. - type OnSwap: crate::traits::OnSwap; - - /// The deposit to be paid to run a parathread. - /// This should include the cost for storing the genesis head and validation code. - #[pallet::constant] - type ParaDeposit: Get>; - - /// The deposit to be paid per byte stored on chain. - #[pallet::constant] - type DataDepositPerByte: Get>; - - /// Weight Information for the Extrinsics in the Pallet - type WeightInfo: WeightInfo; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId")] - pub enum Event { - Registered(ParaId, T::AccountId), - Deregistered(ParaId), - Reserved(ParaId, T::AccountId), - } - - #[pallet::error] - pub enum Error { - /// The ID is not registered. - NotRegistered, - /// The ID is already registered. - AlreadyRegistered, - /// The caller is not the owner of this Id. - NotOwner, - /// Invalid para code size. - CodeTooLarge, - /// Invalid para head data size. - HeadDataTooLarge, - /// Para is not a Parachain. - NotParachain, - /// Para is not a Parathread. - NotParathread, - /// Cannot deregister para - CannotDeregister, - /// Cannot schedule downgrade of parachain to parathread - CannotDowngrade, - /// Cannot schedule upgrade of parathread to parachain - CannotUpgrade, - /// Para is locked from manipulation by the manager. Must use parachain or relay chain governance. - ParaLocked, - /// The ID given for registration has not been reserved. - NotReserved, - } - - /// Pending swap operations. - #[pallet::storage] - pub(super) type PendingSwap = StorageMap<_, Twox64Concat, ParaId, ParaId>; - - /// Amount held on deposit for each para and the original depositor. - /// - /// The given account ID is responsible for registering the code and initial head data, but may only do - /// so if it isn't yet registered. (After that, it's up to governance to do so.) - #[pallet::storage] - pub type Paras = StorageMap<_, Twox64Concat, ParaId, ParaInfo>>; - - /// The next free `ParaId`. - #[pallet::storage] - pub type NextFreeParaId = StorageValue<_, ParaId, ValueQuery>; - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - /// Register head data and validation code for a reserved Para Id. - /// - /// ## Arguments - /// - `origin`: Must be called by a `Signed` origin. - /// - `id`: The para ID. Must be owned/managed by the `origin` signing account. - /// - `genesis_head`: The genesis head data of the parachain/thread. - /// - `validation_code`: The initial validation code of the parachain/thread. - /// - /// ## Deposits/Fees - /// The origin signed account must reserve a corresponding deposit for the registration. Anything already - /// reserved previously for this para ID is accounted for. - /// - /// ## Events - /// The `Registered` event is emitted in case of success. - #[pallet::weight(T::WeightInfo::register())] - pub fn register( - origin: OriginFor, - id: ParaId, - genesis_head: HeadData, - validation_code: ValidationCode, - ) -> DispatchResult { - let who = ensure_signed(origin)?; - Self::do_register(who, None, id, genesis_head, validation_code, true)?; - Ok(()) - } - - /// Force the registration of a Para Id on the relay chain. - /// - /// This function must be called by a Root origin. - /// - /// The deposit taken can be specified for this registration. Any ParaId - /// can be registered, including sub-1000 IDs which are System Parachains. - #[pallet::weight(T::WeightInfo::force_register())] - pub fn force_register( - origin: OriginFor, - who: T::AccountId, - deposit: BalanceOf, - id: ParaId, - genesis_head: HeadData, - validation_code: ValidationCode, - ) -> DispatchResult { - ensure_root(origin)?; - Self::do_register(who, Some(deposit), id, genesis_head, validation_code, false) - } - - /// Deregister a Para Id, freeing all data and returning any deposit. - /// - /// The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread. - #[pallet::weight(T::WeightInfo::deregister())] - pub fn deregister(origin: OriginFor, id: ParaId) -> DispatchResult { - Self::ensure_root_para_or_owner(origin, id)?; - Self::do_deregister(id) - } - - /// Swap a parachain with another parachain or parathread. - /// - /// The origin must be Root, the `para` owner, or the `para` itself. - /// - /// The swap will happen only if there is already an opposite swap pending. If there is not, - /// the swap will be stored in the pending swaps map, ready for a later confirmatory swap. - /// - /// The `ParaId`s remain mapped to the same head data and code so external code can rely on - /// `ParaId` to be a long-term identifier of a notional "parachain". However, their - /// scheduling info (i.e. whether they're a parathread or parachain), auction information - /// and the auction deposit are switched. - #[pallet::weight(T::WeightInfo::swap())] - pub fn swap(origin: OriginFor, id: ParaId, other: ParaId) -> DispatchResult { - Self::ensure_root_para_or_owner(origin, id)?; - - if PendingSwap::::get(other) == Some(id) { - if let Some(other_lifecycle) = paras::Pallet::::lifecycle(other) { - if let Some(id_lifecycle) = paras::Pallet::::lifecycle(id) { - // identify which is a parachain and which is a parathread - if id_lifecycle.is_parachain() && other_lifecycle.is_parathread() { - // We check that both paras are in an appropriate lifecycle for a swap, - // so these should never fail. - let res1 = runtime_parachains::schedule_parachain_downgrade::(id); - debug_assert!(res1.is_ok()); - let res2 = runtime_parachains::schedule_parathread_upgrade::(other); - debug_assert!(res2.is_ok()); - T::OnSwap::on_swap(id, other); - } else if id_lifecycle.is_parathread() && other_lifecycle.is_parachain() { - // We check that both paras are in an appropriate lifecycle for a swap, - // so these should never fail. - let res1 = runtime_parachains::schedule_parachain_downgrade::(other); - debug_assert!(res1.is_ok()); - let res2 = runtime_parachains::schedule_parathread_upgrade::(id); - debug_assert!(res2.is_ok()); - T::OnSwap::on_swap(id, other); - } - - PendingSwap::::remove(other); - } - } - } else { - PendingSwap::::insert(id, other); - } - - Ok(()) - } - - /// Remove a manager lock from a para. This will allow the manager of a - /// previously locked para to deregister or swap a para without using governance. - /// - /// Can only be called by the Root origin. - #[pallet::weight(T::DbWeight::get().reads_writes(1, 1))] - pub fn force_remove_lock(origin: OriginFor, para: ParaId) -> DispatchResult { - ensure_root(origin)?; - Self::remove_lock(para); - Ok(()) - } - - /// Reserve a Para Id on the relay chain. - /// - /// This function will reserve a new Para Id to be owned/managed by the origin account. - /// The origin account is able to register head data and validation code using `register` to create - /// a parathread. Using the Slots pallet, a parathread can then be upgraded to get a parachain slot. - /// - /// ## Arguments - /// - `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new para ID. - /// - /// ## Deposits/Fees - /// The origin must reserve a deposit of `ParaDeposit` for the registration. - /// - /// ## Events - /// The `Reserved` event is emitted in case of success, which provides the ID reserved for use. - #[pallet::weight(T::WeightInfo::reserve())] - pub fn reserve(origin: OriginFor) -> DispatchResult { - let who = ensure_signed(origin)?; - let id = NextFreeParaId::::get().max(LOWEST_PUBLIC_ID); - Self::do_reserve(who, None, id)?; - NextFreeParaId::::set(id + 1); - Ok(()) - } - } -} - -impl Registrar for Pallet { - type AccountId = T::AccountId; - - /// Return the manager `AccountId` of a para if one exists. - fn manager_of(id: ParaId) -> Option { - Some(Paras::::get(id)?.manager) - } - - // All parachains. Ordered ascending by ParaId. Parathreads are not included. - fn parachains() -> Vec { - paras::Pallet::::parachains() - } - - // Return if a para is a parathread - fn is_parathread(id: ParaId) -> bool { - paras::Pallet::::is_parathread(id) - } - - // Return if a para is a parachain - fn is_parachain(id: ParaId) -> bool { - paras::Pallet::::is_parachain(id) - } - - // Apply a lock to the parachain. - fn apply_lock(id: ParaId) { - Paras::::mutate(id, |x| x.as_mut().map(|mut info| info.locked = true)); - } - - // Apply a lock to the parachain. - fn remove_lock(id: ParaId) { - Paras::::mutate(id, |x| x.as_mut().map(|mut info| info.locked = false)); - } - - // Register a Para ID under control of `manager`. - // - // Note this is a backend registration api, so verification of ParaId - // is not done here to prevent. - fn register( - manager: T::AccountId, - id: ParaId, - genesis_head: HeadData, - validation_code: ValidationCode, - ) -> DispatchResult { - Self::do_register(manager, None, id, genesis_head, validation_code, false) - } - - // Deregister a Para ID, free any data, and return any deposits. - fn deregister(id: ParaId) -> DispatchResult { - Self::do_deregister(id) - } - - // Upgrade a registered parathread into a parachain. - fn make_parachain(id: ParaId) -> DispatchResult { - // Para backend should think this is a parathread... - ensure!(paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parathread), Error::::NotParathread); - runtime_parachains::schedule_parathread_upgrade::(id).map_err(|_| Error::::CannotUpgrade)?; - // Once a para has upgraded to a parachain, it can no longer be managed by the owner. - // Intentionally, the flag stays with the para even after downgrade. - Self::apply_lock(id); - Ok(()) - } - - // Downgrade a registered para into a parathread. - fn make_parathread(id: ParaId) -> DispatchResult { - // Para backend should think this is a parachain... - ensure!(paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parachain), Error::::NotParachain); - runtime_parachains::schedule_parachain_downgrade::(id).map_err(|_| Error::::CannotDowngrade)?; - Ok(()) - } - - #[cfg(any(feature = "runtime-benchmarks", test))] - fn worst_head_data() -> HeadData { - let max_head_size = configuration::Pallet::::config().max_head_data_size; - assert!(max_head_size > 0, "max_head_data can't be zero for generating worst head data."); - vec![0u8; max_head_size as usize].into() - } - - #[cfg(any(feature = "runtime-benchmarks", test))] - fn worst_validation_code() -> ValidationCode { - let max_code_size = configuration::Pallet::::config().max_code_size; - assert!(max_code_size > 0, "max_code_size can't be zero for generating worst code data."); - let validation_code = vec![0u8; max_code_size as usize]; - validation_code.into() - } - - #[cfg(any(feature = "runtime-benchmarks", test))] - fn execute_pending_transitions() { - use runtime_parachains::shared; - shared::Pallet::::set_session_index( - shared::Pallet::::scheduled_session() - ); - paras::Pallet::::test_on_new_session(); - } -} - -impl Pallet { - /// Ensure the origin is one of Root, the `para` owner, or the `para` itself. - /// If the origin is the `para` owner, the `para` must be unlocked. - fn ensure_root_para_or_owner(origin: ::Origin, id: ParaId) -> DispatchResult { - ensure_signed(origin.clone()).map_err(|e| e.into()) - .and_then(|who| -> DispatchResult { - let para_info = Paras::::get(id).ok_or(Error::::NotRegistered)?; - ensure!(!para_info.locked, Error::::ParaLocked); - ensure!(para_info.manager == who, Error::::NotOwner); - Ok(()) - }) - .or_else(|_| -> DispatchResult { - // Else check if para origin... - let caller_id = ensure_parachain(::Origin::from(origin.clone()))?; - ensure!(caller_id == id, Error::::NotOwner); - Ok(()) - }).or_else(|_| -> DispatchResult { - // Check if root... - ensure_root(origin.clone()).map_err(|e| e.into()) - }) - } - - fn do_reserve( - who: T::AccountId, - deposit_override: Option>, - id: ParaId, - ) -> DispatchResult { - ensure!(!Paras::::contains_key(id), Error::::AlreadyRegistered); - ensure!(paras::Pallet::::lifecycle(id).is_none(), Error::::AlreadyRegistered); - - let deposit = deposit_override.unwrap_or_else(T::ParaDeposit::get); - ::Currency::reserve(&who, deposit)?; - let info = ParaInfo { - manager: who.clone(), - deposit, - locked: false, - }; - - Paras::::insert(id, info); - Self::deposit_event(Event::::Reserved(id, who)); - Ok(()) - } - - /// Attempt to register a new Para Id under management of `who` in the - /// system with the given information. - fn do_register( - who: T::AccountId, - deposit_override: Option>, - id: ParaId, - genesis_head: HeadData, - validation_code: ValidationCode, - ensure_reserved: bool, - ) -> DispatchResult { - let deposited = if let Some(para_data) = Paras::::get(id) { - ensure!(para_data.manager == who, Error::::NotOwner); - ensure!(!para_data.locked, Error::::ParaLocked); - para_data.deposit - } else { - ensure!(!ensure_reserved, Error::::NotReserved); - Default::default() - }; - ensure!(paras::Pallet::::lifecycle(id).is_none(), Error::::AlreadyRegistered); - let (genesis, deposit) = Self::validate_onboarding_data( - genesis_head, - validation_code, - false - )?; - let deposit = deposit_override.unwrap_or(deposit); - - if let Some(additional) = deposit.checked_sub(&deposited) { - ::Currency::reserve(&who, additional)?; - } else if let Some(rebate) = deposited.checked_sub(&deposit) { - ::Currency::unreserve(&who, rebate); - }; - let info = ParaInfo { - manager: who.clone(), - deposit, - locked: false, - }; - - Paras::::insert(id, info); - // We check above that para has no lifecycle, so this should not fail. - let res = runtime_parachains::schedule_para_initialize::(id, genesis); - debug_assert!(res.is_ok()); - Self::deposit_event(Event::::Registered(id, who)); - Ok(()) - } - - /// Deregister a Para Id, freeing all data returning any deposit. - fn do_deregister(id: ParaId) -> DispatchResult { - match paras::Pallet::::lifecycle(id) { - // Para must be a parathread, or not exist at all. - Some(ParaLifecycle::Parathread) | None => {}, - _ => return Err(Error::::NotParathread.into()) - } - runtime_parachains::schedule_para_cleanup::(id).map_err(|_| Error::::CannotDeregister)?; - - if let Some(info) = Paras::::take(&id) { - ::Currency::unreserve(&info.manager, info.deposit); - } - - PendingSwap::::remove(id); - Self::deposit_event(Event::::Deregistered(id)); - Ok(()) - } - - /// Verifies the onboarding data is valid for a para. - /// - /// Returns `ParaGenesisArgs` and the deposit needed for the data. - fn validate_onboarding_data( - genesis_head: HeadData, - validation_code: ValidationCode, - parachain: bool, - ) -> Result<(ParaGenesisArgs, BalanceOf), sp_runtime::DispatchError> { - let config = configuration::Pallet::::config(); - ensure!(validation_code.0.len() <= config.max_code_size as usize, Error::::CodeTooLarge); - ensure!(genesis_head.0.len() <= config.max_head_data_size as usize, Error::::HeadDataTooLarge); - - let per_byte_fee = T::DataDepositPerByte::get(); - let deposit = T::ParaDeposit::get() - .saturating_add( - per_byte_fee.saturating_mul((genesis_head.0.len() as u32).into()) - ).saturating_add( - per_byte_fee.saturating_mul((validation_code.0.len() as u32).into()) - ); - - Ok((ParaGenesisArgs { - genesis_head, - validation_code, - parachain, - }, deposit)) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use sp_io::TestExternalities; - use sp_core::H256; - use sp_runtime::{ - traits::{ - BlakeTwo256, IdentityLookup, - }, Perbill, - }; - use primitives::v1::{Balance, BlockNumber, Header}; - use frame_system::limits; - use frame_support::{ - traits::{OnInitialize, OnFinalize}, - assert_ok, assert_noop, parameter_types, - error::BadOrigin, - }; - use runtime_parachains::{configuration, shared}; - use pallet_balances::Error as BalancesError; - use crate::traits::Registrar as RegistrarTrait; - use crate::paras_registrar; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - ParachainsConfiguration: configuration::{Pallet, Call, Storage, Config}, - Parachains: paras::{Pallet, Origin, Call, Storage, Config, Event}, - Registrar: paras_registrar::{Pallet, Call, Storage, Event}, - } - ); - - const NORMAL_RATIO: Perbill = Perbill::from_percent(75); - parameter_types! { - pub const BlockHashCount: u32 = 250; - pub BlockWeights: limits::BlockWeights = - frame_system::limits::BlockWeights::simple_max(1024); - pub BlockLength: limits::BlockLength = - limits::BlockLength::max_with_normal_ratio(4 * 1024 * 1024, NORMAL_RATIO); - } - - impl frame_system::Config for Test { - type BaseCallFilter = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type DbWeight = (); - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: Balance = 1; - } - - impl pallet_balances::Config for Test { - type Balance = u128; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - } - - impl shared::Config for Test {} - - impl paras::Config for Test { - type Origin = Origin; - type Event = Event; - } - - impl configuration::Config for Test { } - - parameter_types! { - pub const ParaDeposit: Balance = 10; - pub const DataDepositPerByte: Balance = 1; - pub const QueueSize: usize = 2; - pub const MaxRetries: u32 = 3; - } - - impl Config for Test { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type OnSwap = (); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type WeightInfo = TestWeightInfo; - } - - pub fn new_test_ext() -> TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - - configuration::GenesisConfig:: { - config: configuration::HostConfiguration { - max_code_size: 2 * 1024 * 1024, // 2 MB - max_head_data_size: 1 * 1024 * 1024, // 1 MB - ..Default::default() - }, - }.assimilate_storage(&mut t).unwrap(); - - pallet_balances::GenesisConfig:: { - balances: vec![(1, 10_000_000), (2, 10_000_000)], - }.assimilate_storage(&mut t).unwrap(); - - t.into() - } - - const BLOCKS_PER_SESSION: u32 = 3; - - fn run_to_block(n: BlockNumber) { - // NOTE that this function only simulates modules of interest. Depending on new pallet may - // require adding it here. - assert!(System::block_number() < n); - while System::block_number() < n { - let b = System::block_number(); - - if System::block_number() > 1 { - System::on_finalize(System::block_number()); - } - // Session change every 3 blocks. - if (b + 1) % BLOCKS_PER_SESSION == 0 { - shared::Pallet::::set_session_index( - shared::Pallet::::session_index() + 1 - ); - Parachains::test_on_new_session(); - } - System::set_block_number(b + 1); - System::on_initialize(System::block_number()); - } - } - - fn run_to_session(n: BlockNumber) { - let block_number = n * BLOCKS_PER_SESSION; - run_to_block(block_number); - } - - fn test_genesis_head(size: usize) -> HeadData { - HeadData(vec![0u8; size]) - } - - fn test_validation_code(size: usize) -> ValidationCode { - let validation_code = vec![0u8; size as usize]; - ValidationCode(validation_code) - } - - fn para_origin(id: ParaId) -> Origin { - runtime_parachains::Origin::Parachain(id).into() - } - - fn max_code_size() -> u32 { - ParachainsConfiguration::config().max_code_size - } - - fn max_head_size() -> u32 { - ParachainsConfiguration::config().max_head_data_size - } - - #[test] - fn basic_setup_works() { - new_test_ext().execute_with(|| { - assert_eq!(PendingSwap::::get(&ParaId::from(0u32)), None); - assert_eq!(Paras::::get(&ParaId::from(0u32)), None); - }); - } - - #[test] - fn end_to_end_scenario_works() { - new_test_ext().execute_with(|| { - let para_id = LOWEST_PUBLIC_ID; - run_to_block(1); - // first para is not yet registered - assert!(!Parachains::is_parathread(para_id)); - // We register the Para ID - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(32), - test_validation_code(32), - )); - run_to_session(2); - // It is now a parathread. - assert!(Parachains::is_parathread(para_id)); - assert!(!Parachains::is_parachain(para_id)); - // Some other external process will elevate parathread to parachain - assert_ok!(Registrar::make_parachain(para_id)); - run_to_session(4); - // It is now a parachain. - assert!(!Parachains::is_parathread(para_id)); - assert!(Parachains::is_parachain(para_id)); - // Turn it back into a parathread - assert_ok!(Registrar::make_parathread(para_id)); - run_to_session(6); - assert!(Parachains::is_parathread(para_id)); - assert!(!Parachains::is_parachain(para_id)); - // Deregister it - assert_ok!(Registrar::deregister( - Origin::root(), - para_id, - )); - run_to_session(8); - // It is nothing - assert!(!Parachains::is_parathread(para_id)); - assert!(!Parachains::is_parachain(para_id)); - }); - } - - #[test] - fn register_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - let para_id = LOWEST_PUBLIC_ID; - assert!(!Parachains::is_parathread(para_id)); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_eq!(Balances::reserved_balance(&1), ::ParaDeposit::get()); - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(32), - test_validation_code(32), - )); - run_to_session(2); - assert!(Parachains::is_parathread(para_id)); - assert_eq!( - Balances::reserved_balance(&1), - ::ParaDeposit::get() + 64 * ::DataDepositPerByte::get() - ); - }); - } - - #[test] - fn register_handles_basic_errors() { - new_test_ext().execute_with(|| { - let para_id = LOWEST_PUBLIC_ID; - - assert_noop!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - ), Error::::NotReserved); - - // Successfully register para - assert_ok!(Registrar::reserve(Origin::signed(1))); - - assert_noop!(Registrar::register( - Origin::signed(2), - para_id, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - ), Error::::NotOwner); - - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - )); - - run_to_session(2); - - assert_ok!(Registrar::deregister(Origin::root(), para_id)); - - // Can't do it again - assert_noop!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - ), Error::::NotReserved); - - // Head Size Check - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_noop!(Registrar::register( - Origin::signed(2), - para_id + 1, - test_genesis_head((max_head_size() + 1) as usize), - test_validation_code(max_code_size() as usize), - ), Error::::HeadDataTooLarge); - - // Code Size Check - assert_noop!(Registrar::register( - Origin::signed(2), - para_id + 1, - test_genesis_head(max_head_size() as usize), - test_validation_code((max_code_size() + 1) as usize), - ), Error::::CodeTooLarge); - - // Needs enough funds for deposit - assert_noop!(Registrar::reserve(Origin::signed(1337)), BalancesError::::InsufficientBalance); - }); - } - - #[test] - fn deregister_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - let para_id = LOWEST_PUBLIC_ID; - assert!(!Parachains::is_parathread(para_id)); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(32), - test_validation_code(32), - )); - run_to_session(2); - assert!(Parachains::is_parathread(para_id)); - assert_ok!(Registrar::deregister( - Origin::root(), - para_id, - )); - run_to_session(4); - assert!(paras::Pallet::::lifecycle(para_id).is_none()); - assert_eq!(Balances::reserved_balance(&1), 0); - }); - } - - #[test] - fn deregister_handles_basic_errors() { - new_test_ext().execute_with(|| { - run_to_block(1); - let para_id = LOWEST_PUBLIC_ID; - assert!(!Parachains::is_parathread(para_id)); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - test_genesis_head(32), - test_validation_code(32), - )); - run_to_session(2); - assert!(Parachains::is_parathread(para_id)); - // Owner check - assert_noop!(Registrar::deregister( - Origin::signed(2), - para_id, - ), BadOrigin); - assert_ok!(Registrar::make_parachain(para_id)); - run_to_session(4); - // Cant directly deregister parachain - assert_noop!(Registrar::deregister( - Origin::root(), - para_id, - ), Error::::NotParathread); - }); - } - - #[test] - fn swap_works() { - new_test_ext().execute_with(|| { - // Successfully register first two parachains - let para_1 = LOWEST_PUBLIC_ID; - let para_2 = LOWEST_PUBLIC_ID + 1; - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - para_1, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - para_2, - test_genesis_head(max_head_size() as usize), - test_validation_code(max_code_size() as usize), - )); - run_to_session(2); - - // Upgrade 1023 into a parachain - assert_ok!(Registrar::make_parachain(para_1)); - - run_to_session(4); - - // Roles are as we expect - assert!(Parachains::is_parachain(para_1)); - assert!(!Parachains::is_parathread(para_1)); - assert!(!Parachains::is_parachain(para_2)); - assert!(Parachains::is_parathread(para_2)); - - // Both paras initiate a swap - assert_ok!(Registrar::swap( - para_origin(para_1), - para_1, - para_2, - )); - assert_ok!(Registrar::swap( - para_origin(para_2), - para_2, - para_1, - )); - - run_to_session(6); - - // Deregister a parathread that was originally a parachain - assert_eq!(Parachains::lifecycle(para_1), Some(ParaLifecycle::Parathread)); - assert_ok!(Registrar::deregister(runtime_parachains::Origin::Parachain(para_1).into(), para_1)); - - run_to_block(21); - - // Roles are swapped - assert!(!Parachains::is_parachain(para_1)); - assert!(Parachains::is_parathread(para_1)); - assert!(Parachains::is_parachain(para_2)); - assert!(!Parachains::is_parathread(para_2)); - }); - } - - #[test] - fn para_lock_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(Registrar::reserve(Origin::signed(1))); - let para_id = LOWEST_PUBLIC_ID; - assert_ok!(Registrar::register( - Origin::signed(1), - para_id, - vec![1; 3].into(), - vec![1, 2, 3].into(), - )); - - // Owner can call swap - assert_ok!(Registrar::swap(Origin::signed(1), para_id, para_id + 1)); - - // 2 session changes to fully onboard. - run_to_session(2); - assert_eq!(Parachains::lifecycle(para_id), Some(ParaLifecycle::Parathread)); - - // Once they begin onboarding, we lock them in. - assert_ok!(Registrar::make_parachain(para_id)); - - // Owner cannot call swap anymore - assert_noop!(Registrar::swap(Origin::signed(1), para_id, para_id + 2), BadOrigin); - }); - } -} - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking { - use super::{*, Pallet as Registrar}; - use frame_system::RawOrigin; - use frame_support::assert_ok; - use sp_runtime::traits::Bounded; - use crate::traits::{Registrar as RegistrarT}; - use runtime_parachains::{paras, shared, Origin as ParaOrigin}; - - use frame_benchmarking::{account, benchmarks, whitelisted_caller, impl_benchmark_test_suite}; - - fn assert_last_event(generic_event: ::Event) { - let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); - // compare to the last event record - let frame_system::EventRecord { event, .. } = &events[events.len() - 1]; - assert_eq!(event, &system_event); - } - - fn register_para(id: u32) -> ParaId { - let para = ParaId::from(id); - let genesis_head = Registrar::::worst_head_data(); - let validation_code = Registrar::::worst_validation_code(); - let caller: T::AccountId = whitelisted_caller(); - T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - assert_ok!(Registrar::::reserve(RawOrigin::Signed(caller.clone()).into())); - assert_ok!(Registrar::::register(RawOrigin::Signed(caller).into(), para, genesis_head, validation_code)); - return para; - } - - fn para_origin(id: u32) -> ParaOrigin { - ParaOrigin::Parachain(id.into()) - } - - // This function moves forward to the next scheduled session for parachain lifecycle upgrades. - fn next_scheduled_session() { - shared::Pallet::::set_session_index( - shared::Pallet::::scheduled_session() - ); - paras::Pallet::::test_on_new_session(); - } - - benchmarks! { - where_clause { where ParaOrigin: Into<::Origin> } - - reserve { - let caller: T::AccountId = whitelisted_caller(); - T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - }: _(RawOrigin::Signed(caller.clone())) - verify { - assert_last_event::(Event::::Reserved(LOWEST_PUBLIC_ID, caller).into()); - assert!(Paras::::get(LOWEST_PUBLIC_ID).is_some()); - assert_eq!(paras::Pallet::::lifecycle(LOWEST_PUBLIC_ID), None); - } - - register { - let para = LOWEST_PUBLIC_ID; - let genesis_head = Registrar::::worst_head_data(); - let validation_code = Registrar::::worst_validation_code(); - let caller: T::AccountId = whitelisted_caller(); - T::Currency::make_free_balance_be(&caller, BalanceOf::::max_value()); - assert_ok!(Registrar::::reserve(RawOrigin::Signed(caller.clone()).into())); - }: _(RawOrigin::Signed(caller.clone()), para, genesis_head, validation_code) - verify { - assert_last_event::(Event::::Registered(para, caller).into()); - assert_eq!(paras::Pallet::::lifecycle(para), Some(ParaLifecycle::Onboarding)); - next_scheduled_session::(); - assert_eq!(paras::Pallet::::lifecycle(para), Some(ParaLifecycle::Parathread)); - } - - force_register { - let manager: T::AccountId = account("manager", 0, 0); - let deposit = 0u32.into(); - let para = ParaId::from(69); - let genesis_head = Registrar::::worst_head_data(); - let validation_code = Registrar::::worst_validation_code(); - }: _(RawOrigin::Root, manager.clone(), deposit, para, genesis_head, validation_code) - verify { - assert_last_event::(Event::::Registered(para, manager).into()); - assert_eq!(paras::Pallet::::lifecycle(para), Some(ParaLifecycle::Onboarding)); - next_scheduled_session::(); - assert_eq!(paras::Pallet::::lifecycle(para), Some(ParaLifecycle::Parathread)); - } - - deregister { - let para = register_para::(LOWEST_PUBLIC_ID.into()); - next_scheduled_session::(); - let caller: T::AccountId = whitelisted_caller(); - }: _(RawOrigin::Signed(caller), para) - verify { - assert_last_event::(Event::::Deregistered(para).into()); - } - - swap { - let parathread = register_para::(LOWEST_PUBLIC_ID.into()); - let parachain = register_para::((LOWEST_PUBLIC_ID + 1).into()); - - let parachain_origin = para_origin(parachain.into()); - - // Actually finish registration process - next_scheduled_session::(); - - // Upgrade the parachain - Registrar::::make_parachain(parachain)?; - next_scheduled_session::(); - - assert_eq!(paras::Pallet::::lifecycle(parachain), Some(ParaLifecycle::Parachain)); - assert_eq!(paras::Pallet::::lifecycle(parathread), Some(ParaLifecycle::Parathread)); - - let caller: T::AccountId = whitelisted_caller(); - Registrar::::swap(parachain_origin.into(), parachain, parathread)?; - }: _(RawOrigin::Signed(caller.clone()), parathread, parachain) - verify { - next_scheduled_session::(); - // Swapped! - assert_eq!(paras::Pallet::::lifecycle(parachain), Some(ParaLifecycle::Parathread)); - assert_eq!(paras::Pallet::::lifecycle(parathread), Some(ParaLifecycle::Parachain)); - } - } - - impl_benchmark_test_suite!( - Registrar, - crate::integration_tests::new_test_ext(), - crate::integration_tests::Test, - ); -} diff --git a/runtime/common/src/paras_sudo_wrapper.rs b/runtime/common/src/paras_sudo_wrapper.rs deleted file mode 100644 index 8bef0afb2a8f..000000000000 --- a/runtime/common/src/paras_sudo_wrapper.rs +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A simple wrapper allowing `Sudo` to call into `paras` routines. - -use frame_support::pallet_prelude::*; -use frame_system::pallet_prelude::*; -use runtime_parachains::{ - configuration, dmp, ump, hrmp, - ParaLifecycle, - paras::{self, ParaGenesisArgs}, -}; -use primitives::v1::Id as ParaId; -use parity_scale_codec::Encode; -pub use pallet::*; - -#[frame_support::pallet] -pub mod pallet { - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - #[pallet::config] - #[pallet::disable_frame_system_supertrait_check] - pub trait Config: - configuration::Config + paras::Config + dmp::Config + ump::Config + hrmp::Config {} - - - #[pallet::error] - pub enum Error { - /// The specified parachain or parathread is not registered. - ParaDoesntExist, - /// The specified parachain or parathread is already registered. - ParaAlreadyExists, - /// A DMP message couldn't be sent because it exceeds the maximum size allowed for a downward - /// message. - ExceedsMaxMessageSize, - /// Could not schedule para cleanup. - CouldntCleanup, - /// Not a parathread. - NotParathread, - /// Not a parachain. - NotParachain, - /// Cannot upgrade parathread. - CannotUpgrade, - /// Cannot downgrade parachain. - CannotDowngrade, - } - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - /// Schedule a para to be initialized at the start of the next session. - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_schedule_para_initialize( - origin: OriginFor, - id: ParaId, - genesis: ParaGenesisArgs, - ) -> DispatchResult { - ensure_root(origin)?; - runtime_parachains::schedule_para_initialize::(id, genesis) - .map_err(|_| Error::::ParaAlreadyExists)?; - Ok(()) - } - - /// Schedule a para to be cleaned up at the start of the next session. - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_schedule_para_cleanup(origin: OriginFor, id: ParaId) -> DispatchResult { - ensure_root(origin)?; - runtime_parachains::schedule_para_cleanup::(id).map_err(|_| Error::::CouldntCleanup)?; - Ok(()) - } - - /// Upgrade a parathread to a parachain - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_schedule_parathread_upgrade(origin: OriginFor, id: ParaId) -> DispatchResult { - ensure_root(origin)?; - // Para backend should think this is a parathread... - ensure!( - paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parathread), - Error::::NotParathread, - ); - runtime_parachains::schedule_parathread_upgrade::(id) - .map_err(|_| Error::::CannotUpgrade)?; - Ok(()) - } - - /// Downgrade a parachain to a parathread - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_schedule_parachain_downgrade(origin: OriginFor, id: ParaId) -> DispatchResult { - ensure_root(origin)?; - // Para backend should think this is a parachain... - ensure!( - paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parachain), - Error::::NotParachain, - ); - runtime_parachains::schedule_parachain_downgrade::(id) - .map_err(|_| Error::::CannotDowngrade)?; - Ok(()) - } - - /// Send a downward XCM to the given para. - /// - /// The given parachain should exist and the payload should not exceed the preconfigured size - /// `config.max_downward_message_size`. - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_queue_downward_xcm( - origin: OriginFor, - id: ParaId, - xcm: xcm::opaque::VersionedXcm, - ) -> DispatchResult { - ensure_root(origin)?; - ensure!(>::is_valid_para(id), Error::::ParaDoesntExist); - let config = >::config(); - >::queue_downward_message(&config, id, xcm.encode()) - .map_err(|e| match e { - dmp::QueueDownwardMessageError::ExceedsMaxMessageSize => - Error::::ExceedsMaxMessageSize.into(), - }) - } - - /// Forcefully establish a channel from the sender to the recipient. - /// - /// This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by - /// `Hrmp::hrmp_accept_open_channel`. - #[pallet::weight((1_000, DispatchClass::Operational))] - pub fn sudo_establish_hrmp_channel( - origin: OriginFor, - sender: ParaId, - recipient: ParaId, - max_capacity: u32, - max_message_size: u32, - ) -> DispatchResult { - ensure_root(origin)?; - - >::init_open_channel( - sender, - recipient, - max_capacity, - max_message_size, - )?; - >::accept_open_channel(recipient, sender)?; - Ok(()) - } - } -} diff --git a/runtime/common/src/purchase.rs b/runtime/common/src/purchase.rs deleted file mode 100644 index 675e0f885870..000000000000 --- a/runtime/common/src/purchase.rs +++ /dev/null @@ -1,1087 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -//! Pallet to process purchase of DOTs. - -use parity_scale_codec::{Encode, Decode}; -use sp_runtime::{Permill, RuntimeDebug, DispatchResult, DispatchError, AnySignature}; -use sp_runtime::traits::{Zero, CheckedAdd, Verify, Saturating}; -use frame_support::pallet_prelude::*; -use frame_support::traits::{ - EnsureOrigin, Currency, ExistenceRequirement, VestingSchedule, Get -}; -use frame_system::pallet_prelude::*; -use sp_core::sr25519; -use sp_std::prelude::*; -pub use pallet::*; - -type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; - -/// The kind of a statement an account needs to make for a claim to be valid. -#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug)] -pub enum AccountValidity { - /// Account is not valid. - Invalid, - /// Account has initiated the account creation process. - Initiated, - /// Account is pending validation. - Pending, - /// Account is valid with a low contribution amount. - ValidLow, - /// Account is valid with a high contribution amount. - ValidHigh, - /// Account has completed the purchase process. - Completed, -} - -impl Default for AccountValidity { - fn default() -> Self { - AccountValidity::Invalid - } -} - -impl AccountValidity { - fn is_valid(&self) -> bool { - match self { - Self::Invalid => false, - Self::Initiated => false, - Self::Pending => false, - Self::ValidLow => true, - Self::ValidHigh => true, - Self::Completed => false, - } - } -} - -/// All information about an account regarding the purchase of DOTs. -#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, RuntimeDebug)] -pub struct AccountStatus { - /// The current validity status of the user. Will denote if the user has passed KYC, - /// how much they are able to purchase, and when their purchase process has completed. - validity: AccountValidity, - /// The amount of free DOTs they have purchased. - free_balance: Balance, - /// The amount of locked DOTs they have purchased. - locked_balance: Balance, - /// Their sr25519/ed25519 signature verifying they have signed our required statement. - signature: Vec, - /// The percentage of VAT the purchaser is responsible for. This is already factored into account balance. - vat: Permill, -} - -#[frame_support::pallet] -pub mod pallet { - use super::*; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - #[pallet::config] - pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + IsType<::Event>; - - /// Balances Pallet - type Currency: Currency; - - /// Vesting Pallet - type VestingSchedule: VestingSchedule; - - /// The origin allowed to set account status. - type ValidityOrigin: EnsureOrigin; - - /// The origin allowed to make configurations to the pallet. - type ConfigurationOrigin: EnsureOrigin; - - /// The maximum statement length for the statement users to sign when creating an account. - #[pallet::constant] - type MaxStatementLength: Get; - - /// The amount of purchased locked DOTs that we will unlock for basic actions on the chain. - #[pallet::constant] - type UnlockedProportion: Get; - - /// The maximum amount of locked DOTs that we will unlock. - #[pallet::constant] - type MaxUnlocked: Get>; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::AccountId = "AccountId", - T::BlockNumber = "BlockNumber", - BalanceOf = "Balance", - )] - pub enum Event { - /// A [new] account was created. - AccountCreated(T::AccountId), - /// Someone's account validity was updated. [who, validity] - ValidityUpdated(T::AccountId, AccountValidity), - /// Someone's purchase balance was updated. [who, free, locked] - BalanceUpdated(T::AccountId, BalanceOf, BalanceOf), - /// A payout was made to a purchaser. [who, free, locked] - PaymentComplete(T::AccountId, BalanceOf, BalanceOf), - /// A new payment account was set. [who] - PaymentAccountSet(T::AccountId), - /// A new statement was set. - StatementUpdated, - /// A new statement was set. [block_number] - UnlockBlockUpdated(T::BlockNumber), - } - - #[pallet::error] - pub enum Error { - /// Account is not currently valid to use. - InvalidAccount, - /// Account used in the purchase already exists. - ExistingAccount, - /// Provided signature is invalid - InvalidSignature, - /// Account has already completed the purchase process. - AlreadyCompleted, - /// An overflow occurred when doing calculations. - Overflow, - /// The statement is too long to be stored on chain. - InvalidStatement, - /// The unlock block is in the past! - InvalidUnlockBlock, - /// Vesting schedule already exists for this account. - VestingScheduleExists, - } - - // A map of all participants in the DOT purchase process. - #[pallet::storage] - pub(super) type Accounts = StorageMap< - _, - Blake2_128Concat, T::AccountId, - AccountStatus>, - ValueQuery, - >; - - // The account that will be used to payout participants of the DOT purchase process. - #[pallet::storage] - pub(super) type PaymentAccount = StorageValue<_, T::AccountId, ValueQuery>; - - // The statement purchasers will need to sign to participate. - #[pallet::storage] - pub(super) type Statement = StorageValue<_, Vec, ValueQuery>; - - // The block where all locked dots will unlock. - #[pallet::storage] - pub(super) type UnlockBlock = StorageValue<_, T::BlockNumber, ValueQuery>; - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - /// Create a new account. Proof of existence through a valid signed message. - /// - /// We check that the account does not exist at this stage. - /// - /// Origin must match the `ValidityOrigin`. - #[pallet::weight(200_000_000 + T::DbWeight::get().reads_writes(4, 1))] - pub fn create_account( - origin: OriginFor, - who: T::AccountId, - signature: Vec - ) -> DispatchResult { - T::ValidityOrigin::ensure_origin(origin)?; - // Account is already being tracked by the pallet. - ensure!(!Accounts::::contains_key(&who), Error::::ExistingAccount); - // Account should not have a vesting schedule. - ensure!(T::VestingSchedule::vesting_balance(&who).is_none(), Error::::VestingScheduleExists); - - // Verify the signature provided is valid for the statement. - Self::verify_signature(&who, &signature)?; - - // Create a new pending account. - let status = AccountStatus { - validity: AccountValidity::Initiated, - signature, - free_balance: Zero::zero(), - locked_balance: Zero::zero(), - vat: Permill::zero(), - }; - Accounts::::insert(&who, status); - Self::deposit_event(Event::::AccountCreated(who)); - Ok(()) - } - - /// Update the validity status of an existing account. If set to completed, the account - /// will no longer be able to continue through the crowdfund process. - /// - /// We check tht the account exists at this stage, but has not completed the process. - /// - /// Origin must match the `ValidityOrigin`. - #[pallet::weight(T::DbWeight::get().reads_writes(1, 1))] - pub fn update_validity_status( - origin: OriginFor, - who: T::AccountId, - validity: AccountValidity - ) -> DispatchResult { - T::ValidityOrigin::ensure_origin(origin)?; - ensure!(Accounts::::contains_key(&who), Error::::InvalidAccount); - Accounts::::try_mutate(&who, |status: &mut AccountStatus>| -> DispatchResult { - ensure!(status.validity != AccountValidity::Completed, Error::::AlreadyCompleted); - status.validity = validity; - Ok(()) - })?; - Self::deposit_event(Event::::ValidityUpdated(who, validity)); - Ok(()) - } - - /// Update the balance of a valid account. - /// - /// We check tht the account is valid for a balance transfer at this point. - /// - /// Origin must match the `ValidityOrigin`. - #[pallet::weight(T::DbWeight::get().reads_writes(2, 1))] - pub fn update_balance( - origin: OriginFor, - who: T::AccountId, - free_balance: BalanceOf, - locked_balance: BalanceOf, - vat: Permill, - ) -> DispatchResult { - T::ValidityOrigin::ensure_origin(origin)?; - - Accounts::::try_mutate(&who, |status: &mut AccountStatus>| -> DispatchResult { - // Account has a valid status (not Invalid, Pending, or Completed)... - ensure!(status.validity.is_valid(), Error::::InvalidAccount); - - free_balance.checked_add(&locked_balance).ok_or(Error::::Overflow)?; - status.free_balance = free_balance; - status.locked_balance = locked_balance; - status.vat = vat; - Ok(()) - })?; - Self::deposit_event(Event::::BalanceUpdated(who, free_balance, locked_balance)); - Ok(()) - } - - /// Pay the user and complete the purchase process. - /// - /// We reverify all assumptions about the state of an account, and complete the process. - /// - /// Origin must match the configured `PaymentAccount`. - #[pallet::weight(T::DbWeight::get().reads_writes(4, 2))] - pub fn payout(origin: OriginFor, who: T::AccountId) -> DispatchResult { - // Payments must be made directly by the `PaymentAccount`. - let payment_account = ensure_signed(origin)?; - ensure!(payment_account == PaymentAccount::::get(), DispatchError::BadOrigin); - - // Account should not have a vesting schedule. - ensure!(T::VestingSchedule::vesting_balance(&who).is_none(), Error::::VestingScheduleExists); - - Accounts::::try_mutate(&who, |status: &mut AccountStatus>| -> DispatchResult { - // Account has a valid status (not Invalid, Pending, or Completed)... - ensure!(status.validity.is_valid(), Error::::InvalidAccount); - - // Transfer funds from the payment account into the purchasing user. - let total_balance = status.free_balance - .checked_add(&status.locked_balance) - .ok_or(Error::::Overflow)?; - T::Currency::transfer(&payment_account, &who, total_balance, ExistenceRequirement::AllowDeath)?; - - if !status.locked_balance.is_zero() { - let unlock_block = UnlockBlock::::get(); - // We allow some configurable portion of the purchased locked DOTs to be unlocked for basic usage. - let unlocked = (T::UnlockedProportion::get() * status.locked_balance).min(T::MaxUnlocked::get()); - let locked = status.locked_balance.saturating_sub(unlocked); - // We checked that this account has no existing vesting schedule. So this function should - // never fail, however if it does, not much we can do about it at this point. - let _ = T::VestingSchedule::add_vesting_schedule( - // Apply vesting schedule to this user - &who, - // For this much amount - locked, - // Unlocking the full amount after one block - locked, - // When everything unlocks - unlock_block - ); - } - - // Setting the user account to `Completed` ends the purchase process for this user. - status.validity = AccountValidity::Completed; - Self::deposit_event( - Event::::PaymentComplete(who.clone(), status.free_balance, status.locked_balance) - ); - Ok(()) - })?; - Ok(()) - } - - /* Configuration Operations */ - - /// Set the account that will be used to payout users in the DOT purchase process. - /// - /// Origin must match the `ConfigurationOrigin` - #[pallet::weight(T::DbWeight::get().writes(1))] - pub fn set_payment_account(origin: OriginFor, who: T::AccountId) -> DispatchResult { - T::ConfigurationOrigin::ensure_origin(origin)?; - // Possibly this is worse than having the caller account be the payment account? - PaymentAccount::::set(who.clone()); - Self::deposit_event(Event::::PaymentAccountSet(who)); - Ok(()) - } - - /// Set the statement that must be signed for a user to participate on the DOT sale. - /// - /// Origin must match the `ConfigurationOrigin` - #[pallet::weight(T::DbWeight::get().writes(1))] - pub fn set_statement(origin: OriginFor, statement: Vec) -> DispatchResult { - T::ConfigurationOrigin::ensure_origin(origin)?; - ensure!((statement.len() as u32) < T::MaxStatementLength::get(), Error::::InvalidStatement); - // Possibly this is worse than having the caller account be the payment account? - Statement::::set(statement); - Self::deposit_event(Event::::StatementUpdated); - Ok(()) - } - - /// Set the block where locked DOTs will become unlocked. - /// - /// Origin must match the `ConfigurationOrigin` - #[pallet::weight(T::DbWeight::get().writes(1))] - pub fn set_unlock_block(origin: OriginFor, unlock_block: T::BlockNumber) -> DispatchResult { - T::ConfigurationOrigin::ensure_origin(origin)?; - ensure!(unlock_block > frame_system::Pallet::::block_number(), Error::::InvalidUnlockBlock); - // Possibly this is worse than having the caller account be the payment account? - UnlockBlock::::set(unlock_block); - Self::deposit_event(Event::::UnlockBlockUpdated(unlock_block)); - Ok(()) - } - } -} - -impl Pallet { - fn verify_signature(who: &T::AccountId, signature: &[u8]) -> Result<(), DispatchError> { - // sr25519 always expects a 64 byte signature. - ensure!(signature.len() == 64, Error::::InvalidSignature); - let signature: AnySignature = sr25519::Signature::from_slice(signature).into(); - - // In Polkadot, the AccountId is always the same as the 32 byte public key. - let account_bytes: [u8; 32] = account_to_bytes(who)?; - let public_key = sr25519::Public::from_raw(account_bytes); - - let message = Statement::::get(); - - // Check if everything is good or not. - match signature.verify(message.as_slice(), &public_key) { - true => Ok(()), - false => Err(Error::::InvalidSignature)?, - } - } -} - -// This function converts a 32 byte AccountId to its byte-array equivalent form. -fn account_to_bytes(account: &AccountId) -> Result<[u8; 32], DispatchError> - where AccountId: Encode, -{ - let account_vec = account.encode(); - ensure!(account_vec.len() == 32, "AccountId must be 32 bytes."); - let mut bytes = [0u8; 32]; - bytes.copy_from_slice(&account_vec); - Ok(bytes) -} - -/// WARNING: Executing this function will clear all storage used by this pallet. -/// Be sure this is what you want... -pub fn remove_pallet() -> frame_support::weights::Weight - where T: frame_system::Config -{ - use frame_support::migration::remove_storage_prefix; - remove_storage_prefix(b"Purchase", b"Accounts", b""); - remove_storage_prefix(b"Purchase", b"PaymentAccount", b""); - remove_storage_prefix(b"Purchase", b"Statement", b""); - remove_storage_prefix(b"Purchase", b"UnlockBlock", b""); - - ::BlockWeights::get().max_block -} - -#[cfg(test)] -mod tests { - use super::*; - - use sp_core::{H256, Pair, Public, crypto::AccountId32, ed25519}; - // The testing primitives are very useful for avoiding having to work with signatures - // or public keys. `u64` is used as the `AccountId` and no `Signature`s are required. - use sp_runtime::{ - MultiSignature, - traits::{BlakeTwo256, IdentityLookup, Identity, Verify, IdentifyAccount, Dispatchable}, - testing::Header - }; - use frame_support::{ - assert_ok, assert_noop, parameter_types, - ord_parameter_types, dispatch::DispatchError::BadOrigin, - }; - use frame_support::traits::Currency; - use pallet_balances::Error as BalancesError; - use crate::purchase; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Vesting: pallet_vesting::{Pallet, Call, Storage, Config, Event}, - Purchase: purchase::{Pallet, Call, Storage, Event}, - } - ); - - type AccountId = AccountId32; - - parameter_types! { - pub const BlockHashCount: u32 = 250; - } - impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = u64; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: u64 = 1; - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - } - - parameter_types! { - pub const MinVestedTransfer: u64 = 0; - } - - impl pallet_vesting::Config for Test { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = Identity; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = (); - } - - parameter_types! { - pub const MaxStatementLength: u32 = 1_000; - pub const UnlockedProportion: Permill = Permill::from_percent(10); - pub const MaxUnlocked: u64 = 10; - } - - ord_parameter_types! { - pub const ValidityOrigin: AccountId = AccountId32::from([0u8; 32]); - pub const PaymentOrigin: AccountId = AccountId32::from([1u8; 32]); - pub const ConfigurationOrigin: AccountId = AccountId32::from([2u8; 32]); - } - - impl Config for Test { - type Event = Event; - type Currency = Balances; - type VestingSchedule = Vesting; - type ValidityOrigin = frame_system::EnsureSignedBy; - type ConfigurationOrigin = frame_system::EnsureSignedBy; - type MaxStatementLength = MaxStatementLength; - type UnlockedProportion = UnlockedProportion; - type MaxUnlocked = MaxUnlocked; - } - - // This function basically just builds a genesis storage key/value store according to - // our desired mockup. It also executes our `setup` function which sets up this pallet for use. - pub fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - let mut ext = sp_io::TestExternalities::new(t); - ext.execute_with(|| setup()); - ext - } - - fn setup() { - let statement = b"Hello, World".to_vec(); - let unlock_block = 100; - Purchase::set_statement(Origin::signed(configuration_origin()), statement).unwrap(); - Purchase::set_unlock_block(Origin::signed(configuration_origin()), unlock_block).unwrap(); - Purchase::set_payment_account(Origin::signed(configuration_origin()), payment_account()).unwrap(); - Balances::make_free_balance_be(&payment_account(), 100_000); - } - - type AccountPublic = ::Signer; - - /// Helper function to generate a crypto pair from seed - fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() - } - - /// Helper function to generate an account ID from seed - fn get_account_id_from_seed(seed: &str) -> AccountId where - AccountPublic: From<::Public> - { - AccountPublic::from(get_from_seed::(seed)).into_account() - } - - fn alice() -> AccountId { - get_account_id_from_seed::("Alice") - } - - fn alice_ed25519() -> AccountId { - get_account_id_from_seed::("Alice") - } - - fn bob() -> AccountId { - get_account_id_from_seed::("Bob") - } - - fn alice_signature() -> [u8; 64] { - // echo -n "Hello, World" | subkey -s sign "bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice" - hex_literal::hex!("20e0faffdf4dfe939f2faa560f73b1d01cde8472e2b690b7b40606a374244c3a2e9eb9c8107c10b605138374003af8819bd4387d7c24a66ee9253c2e688ab881") - } - - fn bob_signature() -> [u8; 64] { - // echo -n "Hello, World" | subkey -s sign "bottom drive obey lake curtain smoke basket hold race lonely fit walk//Bob" - hex_literal::hex!("d6d460187ecf530f3ec2d6e3ac91b9d083c8fbd8f1112d92a82e4d84df552d18d338e6da8944eba6e84afaacf8a9850f54e7b53a84530d649be2e0119c7ce889") - } - - fn alice_signature_ed25519() -> [u8; 64] { - // echo -n "Hello, World" | subkey -e sign "bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice" - hex_literal::hex!("ee3f5a6cbfc12a8f00c18b811dc921b550ddf272354cda4b9a57b1d06213fcd8509f5af18425d39a279d13622f14806c3e978e2163981f2ec1c06e9628460b0e") - } - - fn validity_origin() -> AccountId { - ValidityOrigin::get() - } - - fn configuration_origin() -> AccountId { - ConfigurationOrigin::get() - } - - fn payment_account() -> AccountId { - [42u8; 32].into() - } - - #[test] - fn set_statement_works_and_handles_basic_errors() { - new_test_ext().execute_with(|| { - let statement = b"Test Set Statement".to_vec(); - // Invalid origin - assert_noop!( - Purchase::set_statement(Origin::signed(alice()), statement.clone()), - BadOrigin, - ); - // Too Long - let long_statement = [0u8; 10_000].to_vec(); - assert_noop!( - Purchase::set_statement(Origin::signed(configuration_origin()), long_statement), - Error::::InvalidStatement, - ); - // Just right... - assert_ok!(Purchase::set_statement(Origin::signed(configuration_origin()), statement.clone())); - assert_eq!(Statement::::get(), statement); - }); - } - - #[test] - fn set_unlock_block_works_and_handles_basic_errors() { - new_test_ext().execute_with(|| { - let unlock_block = 69; - // Invalid origin - assert_noop!( - Purchase::set_unlock_block(Origin::signed(alice()), unlock_block), - BadOrigin, - ); - // Block Number in Past - let bad_unlock_block = 50; - System::set_block_number(bad_unlock_block); - assert_noop!( - Purchase::set_unlock_block(Origin::signed(configuration_origin()), bad_unlock_block), - Error::::InvalidUnlockBlock, - ); - // Just right... - assert_ok!(Purchase::set_unlock_block(Origin::signed(configuration_origin()), unlock_block)); - assert_eq!(UnlockBlock::::get(), unlock_block); - }); - } - - #[test] - fn set_payment_account_works_and_handles_basic_errors() { - new_test_ext().execute_with(|| { - let payment_account: AccountId = [69u8; 32].into(); - // Invalid Origin - assert_noop!( - Purchase::set_payment_account(Origin::signed(alice()), payment_account.clone()), - BadOrigin, - ); - // Just right... - assert_ok!(Purchase::set_payment_account(Origin::signed(configuration_origin()), payment_account.clone())); - assert_eq!(PaymentAccount::::get(), payment_account); - }); - } - - #[test] - fn signature_verification_works() { - new_test_ext().execute_with(|| { - assert_ok!(Purchase::verify_signature(&alice(), &alice_signature())); - assert_ok!(Purchase::verify_signature(&alice_ed25519(), &alice_signature_ed25519())); - assert_ok!(Purchase::verify_signature(&bob(), &bob_signature())); - - // Mixing and matching fails - assert_noop!(Purchase::verify_signature(&alice(), &bob_signature()), Error::::InvalidSignature); - assert_noop!(Purchase::verify_signature(&bob(), &alice_signature()), Error::::InvalidSignature); - }); - } - - #[test] - fn account_creation_works() { - new_test_ext().execute_with(|| { - assert!(!Accounts::::contains_key(alice())); - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec(), - )); - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::Initiated, - free_balance: Zero::zero(), - locked_balance: Zero::zero(), - signature: alice_signature().to_vec(), - vat: Permill::zero(), - } - ); - }); - } - - #[test] - fn account_creation_handles_basic_errors() { - new_test_ext().execute_with(|| { - // Wrong Origin - assert_noop!( - Purchase::create_account(Origin::signed(alice()), alice(), alice_signature().to_vec()), - BadOrigin, - ); - - // Wrong Account/Signature - assert_noop!( - Purchase::create_account(Origin::signed(validity_origin()), alice(), bob_signature().to_vec()), - Error::::InvalidSignature, - ); - - // Account with vesting - assert_ok!(::VestingSchedule::add_vesting_schedule( - &alice(), - 100, - 1, - 50 - )); - assert_noop!( - Purchase::create_account(Origin::signed(validity_origin()), alice(), alice_signature().to_vec()), - Error::::VestingScheduleExists, - ); - - // Duplicate Purchasing Account - assert_ok!( - Purchase::create_account(Origin::signed(validity_origin()), bob(), bob_signature().to_vec()) - ); - assert_noop!( - Purchase::create_account(Origin::signed(validity_origin()), bob(), bob_signature().to_vec()), - Error::::ExistingAccount, - ); - }); - } - - #[test] - fn update_validity_status_works() { - new_test_ext().execute_with(|| { - // Alice account is created. - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec(), - )); - // She submits KYC, and we update the status to `Pending`. - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::Pending, - )); - // KYC comes back negative, so we mark the account invalid. - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::Invalid, - )); - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::Invalid, - free_balance: Zero::zero(), - locked_balance: Zero::zero(), - signature: alice_signature().to_vec(), - vat: Permill::zero(), - } - ); - // She fixes it, we mark her account valid. - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::ValidLow, - )); - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::ValidLow, - free_balance: Zero::zero(), - locked_balance: Zero::zero(), - signature: alice_signature().to_vec(), - vat: Permill::zero(), - } - ); - }); - } - - #[test] - fn update_validity_status_handles_basic_errors() { - new_test_ext().execute_with(|| { - // Wrong Origin - assert_noop!(Purchase::update_validity_status( - Origin::signed(alice()), - alice(), - AccountValidity::Pending, - ), BadOrigin); - // Inactive Account - assert_noop!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::Pending, - ), Error::::InvalidAccount); - // Already Completed - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec(), - )); - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::Completed, - )); - assert_noop!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::Pending, - ), Error::::AlreadyCompleted); - }); - } - - #[test] - fn update_balance_works() { - new_test_ext().execute_with(|| { - // Alice account is created - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec()) - ); - // And approved for basic contribution - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::ValidLow, - )); - // We set a balance on the user based on the payment they made. 50 locked, 50 free. - assert_ok!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - 50, - 50, - Permill::from_rational(77u32, 1000u32), - )); - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::ValidLow, - free_balance: 50, - locked_balance: 50, - signature: alice_signature().to_vec(), - vat: Permill::from_parts(77000), - } - ); - // We can update the balance based on new information. - assert_ok!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - 25, - 50, - Permill::zero(), - )); - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::ValidLow, - free_balance: 25, - locked_balance: 50, - signature: alice_signature().to_vec(), - vat: Permill::zero(), - } - ); - }); - } - - #[test] - fn update_balance_handles_basic_errors() { - new_test_ext().execute_with(|| { - // Wrong Origin - assert_noop!(Purchase::update_balance( - Origin::signed(alice()), - alice(), - 50, - 50, - Permill::zero(), - ), BadOrigin); - // Inactive Account - assert_noop!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - 50, - 50, - Permill::zero(), - ), Error::::InvalidAccount); - // Overflow - assert_noop!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - u64::max_value(), - u64::max_value(), - Permill::zero(), - ), Error::::InvalidAccount); - }); - } - - #[test] - fn payout_works() { - new_test_ext().execute_with(|| { - // Alice and Bob accounts are created - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec()) - ); - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - bob(), - bob_signature().to_vec()) - ); - // Alice is approved for basic contribution - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::ValidLow, - )); - // Bob is approved for high contribution - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - bob(), - AccountValidity::ValidHigh, - )); - // We set a balance on the users based on the payment they made. 50 locked, 50 free. - assert_ok!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - 50, - 50, - Permill::zero(), - )); - assert_ok!(Purchase::update_balance( - Origin::signed(validity_origin()), - bob(), - 100, - 150, - Permill::zero(), - )); - // Now we call payout for Alice and Bob. - assert_ok!(Purchase::payout( - Origin::signed(payment_account()), - alice(), - )); - assert_ok!(Purchase::payout( - Origin::signed(payment_account()), - bob(), - )); - // Payment is made. - assert_eq!(::Currency::free_balance(&payment_account()), 99_650); - assert_eq!(::Currency::free_balance(&alice()), 100); - // 10% of the 50 units is unlocked automatically for Alice - assert_eq!(::VestingSchedule::vesting_balance(&alice()), Some(45)); - assert_eq!(::Currency::free_balance(&bob()), 250); - // A max of 10 units is unlocked automatically for Bob - assert_eq!(::VestingSchedule::vesting_balance(&bob()), Some(140)); - // Status is completed. - assert_eq!( - Accounts::::get(alice()), - AccountStatus { - validity: AccountValidity::Completed, - free_balance: 50, - locked_balance: 50, - signature: alice_signature().to_vec(), - vat: Permill::zero(), - } - ); - assert_eq!( - Accounts::::get(bob()), - AccountStatus { - validity: AccountValidity::Completed, - free_balance: 100, - locked_balance: 150, - signature: bob_signature().to_vec(), - vat: Permill::zero(), - } - ); - // Vesting lock is removed in whole on block 101 (100 blocks after block 1) - System::set_block_number(100); - let vest_call = Call::Vesting(pallet_vesting::Call::::vest()); - assert_ok!(vest_call.clone().dispatch(Origin::signed(alice()))); - assert_ok!(vest_call.clone().dispatch(Origin::signed(bob()))); - assert_eq!(::VestingSchedule::vesting_balance(&alice()), Some(45)); - assert_eq!(::VestingSchedule::vesting_balance(&bob()), Some(140)); - System::set_block_number(101); - assert_ok!(vest_call.clone().dispatch(Origin::signed(alice()))); - assert_ok!(vest_call.clone().dispatch(Origin::signed(bob()))); - assert_eq!(::VestingSchedule::vesting_balance(&alice()), None); - assert_eq!(::VestingSchedule::vesting_balance(&bob()), None); - }); - } - - #[test] - fn payout_handles_basic_errors() { - new_test_ext().execute_with(|| { - // Wrong Origin - assert_noop!(Purchase::payout( - Origin::signed(alice()), - alice(), - ), BadOrigin); - // Account with Existing Vesting Schedule - assert_ok!(::VestingSchedule::add_vesting_schedule( - &bob(), 100, 1, 50, - )); - assert_noop!(Purchase::payout( - Origin::signed(payment_account()), - bob(), - ), Error::::VestingScheduleExists); - // Invalid Account (never created) - assert_noop!(Purchase::payout( - Origin::signed(payment_account()), - alice(), - ), Error::::InvalidAccount); - // Invalid Account (created, but not valid) - assert_ok!(Purchase::create_account( - Origin::signed(validity_origin()), - alice(), - alice_signature().to_vec()) - ); - assert_noop!(Purchase::payout( - Origin::signed(payment_account()), - alice(), - ), Error::::InvalidAccount); - // Not enough funds in payment account - assert_ok!(Purchase::update_validity_status( - Origin::signed(validity_origin()), - alice(), - AccountValidity::ValidHigh, - )); - assert_ok!(Purchase::update_balance( - Origin::signed(validity_origin()), - alice(), - 100_000, - 100_000, - Permill::zero(), - )); - assert_noop!(Purchase::payout( - Origin::signed(payment_account()), - alice(), - ), BalancesError::::InsufficientBalance); - }); - } - - #[test] - fn remove_pallet_works() { - new_test_ext().execute_with(|| { - let account_status = AccountStatus { - validity: AccountValidity::Completed, - free_balance: 1234, - locked_balance: 4321, - signature: b"my signature".to_vec(), - vat: Permill::from_percent(50), - }; - - // Add some storage. - Accounts::::insert(alice(), account_status.clone()); - Accounts::::insert(bob(), account_status); - PaymentAccount::::put(alice()); - Statement::::put(b"hello, world!".to_vec()); - UnlockBlock::::put(4); - - // Verify storage exists. - assert_eq!(Accounts::::iter().count(), 2); - assert!(PaymentAccount::::exists()); - assert!(Statement::::exists()); - assert!(UnlockBlock::::exists()); - - // Remove storage. - remove_pallet::(); - - // Verify storage is gone. - assert_eq!(Accounts::::iter().count(), 0); - assert!(!PaymentAccount::::exists()); - assert!(!Statement::::exists()); - assert!(!UnlockBlock::::exists()); - }); - } -} diff --git a/runtime/common/src/slot_range.rs b/runtime/common/src/slot_range.rs deleted file mode 100644 index 3dcda158dd33..000000000000 --- a/runtime/common/src/slot_range.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The SlotRange struct which succinctly handles the 36 values that -//! represent all sub ranges between 0 and 7 inclusive. - -slot_range_helper::generate_slot_range!(Zero(0), One(1), Two(2), Three(3), Four(4), Five(5), Six(6), Seven(7)); - -// Will generate: -// pub enum SlotRange { -// ZeroZero, 0 -// ZeroOne, 1 -// ZeroTwo, 2 -// ZeroThree, 3 -// ZeroFour, 4 -// ZeroFive, 5 -// ZeroSix, 6 -// ZeroSeven, 7 -// OneOne, 8 -// OneTwo, 9 -// OneThree, 10 -// OneFour, 11 -// OneFive, 12 -// OneSix, 13 -// OneSeven, 14 -// TwoTwo, 15 -// TwoThree, 16 -// TwoFour, 17 -// TwoFive, 18 -// TwoSix, 19 -// TwoSeven, 20 -// ThreeThree, 21 -// ThreeFour, 22 -// ThreeFive, 23 -// ThreeSix, 24 -// ThreeSeven, 25 -// FourFour, 26 -// FourFive, 27 -// FourSix, 28 -// FourSeven, 29 -// FiveFive, 30 -// FiveSix, 31 -// FiveSeven, 32 -// SixSix, 33 -// SixSeven, 34 -// SevenSeven, 35 -// } diff --git a/runtime/common/src/slots.rs b/runtime/common/src/slots.rs deleted file mode 100644 index 4fd633fc3e80..000000000000 --- a/runtime/common/src/slots.rs +++ /dev/null @@ -1,993 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Parathread and parachains leasing system. Allows para IDs to be claimed, the code and data to be initialized and -//! parachain slots (i.e. continuous scheduling) to be leased. Also allows for parachains and parathreads to be -//! swapped. -//! -//! This doesn't handle the mechanics of determining which para ID actually ends up with a parachain lease. This -//! must handled by a separately, through the trait interface that this pallet provides or the root dispatchables. - -use sp_std::prelude::*; -use sp_runtime::traits::{CheckedSub, Zero, CheckedConversion, Saturating}; -use frame_support::{ - decl_module, decl_storage, decl_event, decl_error, dispatch::DispatchResult, - traits::{Currency, ReservableCurrency, Get}, weights::Weight, -}; -use primitives::v1::Id as ParaId; -use frame_system::{ensure_signed, ensure_root}; -use crate::traits::{Leaser, LeaseError, Registrar}; - -type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; -type LeasePeriodOf = ::BlockNumber; - -pub trait WeightInfo { - fn force_lease() -> Weight; - fn manage_lease_period_start(c: u32, t: u32) -> Weight; - fn clear_all_leases() -> Weight; - fn trigger_onboard() -> Weight; -} - -pub struct TestWeightInfo; -impl WeightInfo for TestWeightInfo { - fn force_lease() -> Weight { 0 } - fn manage_lease_period_start(_c: u32, _t:u32) -> Weight { 0 } - fn clear_all_leases() -> Weight { 0 } - fn trigger_onboard() -> Weight { 0 } -} - -/// The module's configuration trait. -pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + Into<::Event>; - - /// The currency type used for bidding. - type Currency: ReservableCurrency; - - /// The parachain registrar type. - type Registrar: Registrar; - - /// The number of blocks over which a single period lasts. - type LeasePeriod: Get; - - /// Weight Information for the Extrinsics in the Pallet - type WeightInfo: WeightInfo; -} - -// This module's storage items. -decl_storage! { - trait Store for Module as Slots { - /// Amounts held on deposit for each (possibly future) leased parachain. - /// - /// The actual amount locked on its behalf by any account at any time is the maximum of the second values - /// of the items in this list whose first value is the account. - /// - /// The first item in the list is the amount locked for the current Lease Period. Following - /// items are for the subsequent lease periods. - /// - /// The default value (an empty list) implies that the parachain no longer exists (or never - /// existed) as far as this module is concerned. - /// - /// If a parachain doesn't exist *yet* but is scheduled to exist in the future, then it - /// will be left-padded with one or more `None`s to denote the fact that nothing is held on - /// deposit for the non-existent chain currently, but is held at some point in the future. - /// - /// It is illegal for a `None` value to trail in the list. - pub Leases get(fn lease): map hasher(twox_64_concat) ParaId => Vec)>>; - } -} - -decl_event!( - pub enum Event where - AccountId = ::AccountId, - LeasePeriod = LeasePeriodOf, - ParaId = ParaId, - Balance = BalanceOf, - { - /// A new [lease_period] is beginning. - NewLeasePeriod(LeasePeriod), - /// A para has won the right to a continuous set of lease periods as a parachain. - /// First balance is any extra amount reserved on top of the para's existing deposit. - /// Second balance is the total amount reserved. - /// \[parachain_id, leaser, period_begin, period_count, extra_reserved, total_amount\] - Leased(ParaId, AccountId, LeasePeriod, LeasePeriod, Balance, Balance), - } -); - -decl_error! { - pub enum Error for Module { - /// The parachain ID is not onboarding. - ParaNotOnboarding, - /// There was an error with the lease. - LeaseError, - } -} - -decl_module! { - pub struct Module for enum Call where origin: T::Origin { - type Error = Error; - - const LeasePeriod: T::BlockNumber = T::LeasePeriod::get(); - - fn deposit_event() = default; - - fn on_initialize(n: T::BlockNumber) -> Weight { - // If we're beginning a new lease period then handle that. - let lease_period = T::LeasePeriod::get(); - if (n % lease_period).is_zero() { - let lease_period_index = n / lease_period; - Self::manage_lease_period_start(lease_period_index) - } else { - 0 - } - } - - /// Just a hotwire into the `lease_out` call, in case Root wants to force some lease to happen - /// independently of any other on-chain mechanism to use it. - /// - /// Can only be called by the Root origin. - #[weight = T::WeightInfo::force_lease()] - pub fn force_lease(origin, - para: ParaId, - leaser: T::AccountId, - amount: BalanceOf, - period_begin: LeasePeriodOf, - period_count: LeasePeriodOf, - ) -> DispatchResult { - ensure_root(origin)?; - Self::lease_out(para, &leaser, amount, period_begin, period_count) - .map_err(|_| Error::::LeaseError)?; - Ok(()) - } - - /// Clear all leases for a Para Id, refunding any deposits back to the original owners. - /// - /// Can only be called by the Root origin. - #[weight = T::WeightInfo::clear_all_leases()] - pub fn clear_all_leases(origin, para: ParaId) -> DispatchResult { - ensure_root(origin)?; - let deposits = Self::all_deposits_held(para); - - // Refund any deposits for these leases - for (who, deposit) in deposits { - let err_amount = T::Currency::unreserve(&who, deposit); - debug_assert!(err_amount.is_zero()); - } - - Leases::::remove(para); - Ok(()) - } - - /// Try to onboard a parachain that has a lease for the current lease period. - /// - /// This function can be useful if there was some state issue with a para that should - /// have onboarded, but was unable to. As long as they have a lease period, we can - /// let them onboard from here. - /// - /// Origin must be signed, but can be called by anyone. - #[weight = T::WeightInfo::trigger_onboard()] - pub fn trigger_onboard(origin, para: ParaId) -> DispatchResult { - let _ = ensure_signed(origin)?; - let leases = Leases::::get(para); - match leases.first() { - // If the first element in leases is present, then it has a lease! - // We can try to onboard it. - Some(Some(_lease_info)) => { - T::Registrar::make_parachain(para)? - }, - // Otherwise, it does not have a lease. - Some(None) | None => { - return Err(Error::::ParaNotOnboarding.into()); - } - }; - Ok(()) - } - } -} - -impl Module { - /// A new lease period is beginning. We're at the start of the first block of it. - /// - /// We need to on-board and off-board parachains as needed. We should also handle reducing/ - /// returning deposits. - fn manage_lease_period_start(lease_period_index: LeasePeriodOf) -> Weight { - Self::deposit_event(RawEvent::NewLeasePeriod(lease_period_index)); - - let old_parachains = T::Registrar::parachains(); - - // Figure out what chains need bringing on. - let mut parachains = Vec::new(); - for (para, mut lease_periods) in Leases::::iter() { - if lease_periods.is_empty() { continue } - // ^^ should never be empty since we would have deleted the entry otherwise. - - if lease_periods.len() == 1 { - // Just one entry, which corresponds to the now-ended lease period. - // - // `para` is now just a parathread. - // - // Unreserve whatever is left. - if let Some((who, value)) = &lease_periods[0] { - T::Currency::unreserve(&who, *value); - } - - // Remove the now-empty lease list. - Leases::::remove(para); - } else { - // The parachain entry has leased future periods. - - // We need to pop the first deposit entry, which corresponds to the now- - // ended lease period. - let maybe_ended_lease = lease_periods.remove(0); - - Leases::::insert(para, &lease_periods); - - // If we *were* active in the last period and so have ended a lease... - if let Some(ended_lease) = maybe_ended_lease { - // Then we need to get the new amount that should continue to be held on - // deposit for the parachain. - let now_held = Self::deposit_held(para, &ended_lease.0); - - // If this is less than what we were holding for this leaser's now-ended lease, then - // unreserve it. - if let Some(rebate) = ended_lease.1.checked_sub(&now_held) { - T::Currency::unreserve(&ended_lease.0, rebate); - } - } - - // If we have an active lease in the new period, then add to the current parachains - if lease_periods[0].is_some() { - parachains.push(para); - } - } - } - parachains.sort(); - - for para in parachains.iter() { - if old_parachains.binary_search(para).is_err() { - // incoming. - let res = T::Registrar::make_parachain(*para); - debug_assert!(res.is_ok()); - } - } - - for para in old_parachains.iter() { - if parachains.binary_search(para).is_err() { - // outgoing. - let res = T::Registrar::make_parathread(*para); - debug_assert!(res.is_ok()); - } - } - - T::WeightInfo::manage_lease_period_start( - old_parachains.len() as u32, - parachains.len() as u32, - ) - } - - // Return a vector of (user, balance) for all deposits for a parachain. - // Useful when trying to clean up a parachain leases, as this would tell - // you all the balances you need to unreserve. - fn all_deposits_held(para: ParaId) -> Vec<(T::AccountId, BalanceOf)> { - let mut tracker = sp_std::collections::btree_map::BTreeMap::new(); - Leases::::get(para) - .into_iter() - .for_each(|lease| { - match lease { - Some((who, amount)) => { - match tracker.get(&who) { - Some(prev_amount) => { - if amount > *prev_amount { - tracker.insert(who, amount); - } - }, - None => { - tracker.insert(who, amount); - } - } - }, - None => {}, - } - }); - - tracker.into_iter().collect() - } -} - -impl crate::traits::OnSwap for Module { - fn on_swap(one: ParaId, other: ParaId) { - Leases::::mutate(one, |x| - Leases::::mutate(other, |y| - sp_std::mem::swap(x, y) - ) - ) - } -} - -impl Leaser for Module { - type AccountId = T::AccountId; - type LeasePeriod = T::BlockNumber; - type Currency = T::Currency; - - fn lease_out( - para: ParaId, - leaser: &Self::AccountId, - amount: >::Balance, - period_begin: Self::LeasePeriod, - period_count: Self::LeasePeriod, - ) -> Result<(), LeaseError> { - let current_lease_period = Self::lease_period_index(); - // Finally, we update the deposit held so it is `amount` for the new lease period - // indices that were won in the auction. - let offset = period_begin - .checked_sub(¤t_lease_period) - .and_then(|x| x.checked_into::()) - .ok_or(LeaseError::AlreadyEnded)?; - - // offset is the amount into the `Deposits` items list that our lease begins. `period_count` - // is the number of items that it lasts for. - - // The lease period index range (begin, end) that newly belongs to this parachain - // ID. We need to ensure that it features in `Deposits` to prevent it from being - // reaped too early (any managed parachain whose `Deposits` set runs low will be - // removed). - Leases::::try_mutate(para, |d| { - // Left-pad with `None`s as necessary. - if d.len() < offset { - d.resize_with(offset, || { None }); - } - let period_count_usize = period_count.checked_into::() - .ok_or(LeaseError::AlreadyEnded)?; - // Then place the deposit values for as long as the chain should exist. - for i in offset .. (offset + period_count_usize) { - if d.len() > i { - // Already exists but it's `None`. That means a later slot was already leased. - // No problem. - if d[i] == None { - d[i] = Some((leaser.clone(), amount)); - } else { - // The chain tried to lease the same period twice. This might be a griefing - // attempt. - // - // We bail, not giving any lease and leave it for governance to sort out. - return Err(LeaseError::AlreadyLeased); - } - } else if d.len() == i { - // Doesn't exist. This is usual. - d.push(Some((leaser.clone(), amount))); - } else { - // earlier resize means it must be >= i; qed - // defensive code though since we really don't want to panic here. - } - } - - // Figure out whether we already have some funds of `leaser` held in reserve for `para_id`. - // If so, then we can deduct those from the amount that we need to reserve. - let maybe_additional = amount.checked_sub(&Self::deposit_held(para, &leaser)); - if let Some(ref additional) = maybe_additional { - T::Currency::reserve(&leaser, *additional) - .map_err(|_| LeaseError::ReserveFailed)?; - } - - let reserved = maybe_additional.unwrap_or_default(); - - // Check if current lease period is same as period begin, and onboard them directly. - // This will allow us to support onboarding new parachains in the middle of a lease period. - if current_lease_period == period_begin { - // Best effort. Not much we can do if this fails. - let _ = T::Registrar::make_parachain(para); - } - - Self::deposit_event( - RawEvent::Leased(para, leaser.clone(), period_begin, period_count, reserved, amount) - ); - - Ok(()) - }) - } - - fn deposit_held(para: ParaId, leaser: &Self::AccountId) -> >::Balance { - Leases::::get(para) - .into_iter() - .map(|lease| { - match lease { - Some((who, amount)) => { - if &who == leaser { amount } else { Zero::zero() } - }, - None => Zero::zero(), - } - }) - .max() - .unwrap_or_else(Zero::zero) - } - - fn lease_period() -> Self::LeasePeriod { - T::LeasePeriod::get() - } - - fn lease_period_index() -> Self::LeasePeriod { - >::block_number() / T::LeasePeriod::get() - } - - fn already_leased( - para_id: ParaId, - first_period: Self::LeasePeriod, - last_period: Self::LeasePeriod, - ) -> bool { - let current_lease_period = Self::lease_period_index(); - - // Can't look in the past, so we pick whichever is the biggest. - let start_period = first_period.max(current_lease_period); - // Find the offset to look into the lease period list. - // Subtraction is safe because of max above. - let offset = match (start_period - current_lease_period).checked_into::() { - Some(offset) => offset, - None => return true, - }; - - // This calculates how deep we should look in the vec for a potential lease. - let period_count = match last_period.saturating_sub(start_period).checked_into::() { - Some(period_count) => period_count, - None => return true, - }; - - // Get the leases, and check each item in the vec which is part of the range we are checking. - let leases = Leases::::get(para_id); - for slot in offset ..= offset + period_count { - if let Some(Some(_)) = leases.get(slot) { - // If there exists any lease period, we exit early and return true. - return true - } - } - - // If we got here, then we did not find any overlapping leases. - false - } -} - - -/// tests for this module -#[cfg(test)] -mod tests { - use super::*; - - use sp_core::H256; - use sp_runtime::traits::{BlakeTwo256, IdentityLookup}; - use frame_support::{ - parameter_types, assert_ok, assert_noop, - traits::{OnInitialize, OnFinalize} - }; - use pallet_balances; - use primitives::v1::{BlockNumber, Header}; - use crate::{slots, mock::TestRegistrar}; - - type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; - type Block = frame_system::mocking::MockBlock; - - frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Slots: slots::{Pallet, Call, Storage, Event}, - } - ); - - parameter_types! { - pub const BlockHashCount: u32 = 250; - } - impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = (); - type BlockLength = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type DbWeight = (); - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); - } - - parameter_types! { - pub const ExistentialDeposit: u64 = 1; - } - - impl pallet_balances::Config for Test { - type Balance = u64; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type WeightInfo = (); - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - } - - parameter_types! { - pub const LeasePeriod: BlockNumber = 10; - pub const ParaDeposit: u64 = 1; - } - - impl Config for Test { - type Event = Event; - type Currency = Balances; - type Registrar = TestRegistrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = crate::slots::TestWeightInfo; - } - - // This function basically just builds a genesis storage key/value store according to - // our desired mock up. - pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); - pallet_balances::GenesisConfig:: { - balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], - }.assimilate_storage(&mut t).unwrap(); - t.into() - } - - fn run_to_block(n: BlockNumber) { - while System::block_number() < n { - Slots::on_finalize(System::block_number()); - Balances::on_finalize(System::block_number()); - System::on_finalize(System::block_number()); - System::set_block_number(System::block_number() + 1); - System::on_initialize(System::block_number()); - Balances::on_initialize(System::block_number()); - Slots::on_initialize(System::block_number()); - } - } - - #[test] - fn basic_setup_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_eq!(Slots::lease_period(), 10); - assert_eq!(Slots::lease_period_index(), 0); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - - run_to_block(10); - assert_eq!(Slots::lease_period_index(), 1); - }); - } - - #[test] - fn lease_lifecycle_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - assert_ok!(Slots::lease_out(1.into(), &1, 1, 1, 1)); - assert_eq!(Slots::deposit_held(1.into(), &1), 1); - assert_eq!(Balances::reserved_balance(1), 1); - - run_to_block(19); - assert_eq!(Slots::deposit_held(1.into(), &1), 1); - assert_eq!(Balances::reserved_balance(1), 1); - - run_to_block(20); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 10, true), - (1.into(), 20, false), - ]); - }); - } - - #[test] - fn lease_interrupted_lifecycle_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - assert_ok!(Slots::lease_out(1.into(), &1, 6, 1, 1)); - assert_ok!(Slots::lease_out(1.into(), &1, 4, 3, 1)); - - run_to_block(19); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - run_to_block(20); - assert_eq!(Slots::deposit_held(1.into(), &1), 4); - assert_eq!(Balances::reserved_balance(1), 4); - - run_to_block(39); - assert_eq!(Slots::deposit_held(1.into(), &1), 4); - assert_eq!(Balances::reserved_balance(1), 4); - - run_to_block(40); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 10, true), - (1.into(), 20, false), - (1.into(), 30, true), - (1.into(), 40, false), - ]); - }); - } - - #[test] - fn lease_relayed_lifecycle_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - assert!(Slots::lease_out(1.into(), &1, 6, 1, 1).is_ok()); - assert!(Slots::lease_out(1.into(), &2, 4, 2, 1).is_ok()); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - assert_eq!(Slots::deposit_held(1.into(), &2), 4); - assert_eq!(Balances::reserved_balance(2), 4); - - run_to_block(19); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - assert_eq!(Slots::deposit_held(1.into(), &2), 4); - assert_eq!(Balances::reserved_balance(2), 4); - - run_to_block(20); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(Slots::deposit_held(1.into(), &2), 4); - assert_eq!(Balances::reserved_balance(2), 4); - - run_to_block(29); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(Slots::deposit_held(1.into(), &2), 4); - assert_eq!(Balances::reserved_balance(2), 4); - - run_to_block(30); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - assert_eq!(Slots::deposit_held(1.into(), &2), 0); - assert_eq!(Balances::reserved_balance(2), 0); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 10, true), - (1.into(), 30, false), - ]); - }); - } - - #[test] - fn lease_deposit_increase_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - assert!(Slots::lease_out(1.into(), &1, 4, 1, 1).is_ok()); - assert_eq!(Slots::deposit_held(1.into(), &1), 4); - assert_eq!(Balances::reserved_balance(1), 4); - - assert!(Slots::lease_out(1.into(), &1, 6, 2, 1).is_ok()); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - run_to_block(29); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - run_to_block(30); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 10, true), - (1.into(), 30, false), - ]); - }); - } - - #[test] - fn lease_deposit_decrease_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - assert!(Slots::lease_out(1.into(), &1, 6, 1, 1).is_ok()); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - assert!(Slots::lease_out(1.into(), &1, 4, 2, 1).is_ok()); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - run_to_block(19); - assert_eq!(Slots::deposit_held(1.into(), &1), 6); - assert_eq!(Balances::reserved_balance(1), 6); - - run_to_block(20); - assert_eq!(Slots::deposit_held(1.into(), &1), 4); - assert_eq!(Balances::reserved_balance(1), 4); - - run_to_block(29); - assert_eq!(Slots::deposit_held(1.into(), &1), 4); - assert_eq!(Balances::reserved_balance(1), 4); - - run_to_block(30); - assert_eq!(Slots::deposit_held(1.into(), &1), 0); - assert_eq!(Balances::reserved_balance(1), 0); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 10, true), - (1.into(), 30, false), - ]); - }); - } - - #[test] - fn clear_all_leases_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - - let max_num = 5u32; - - // max_num different people are reserved for leases to Para ID 1 - for i in 1u32 ..= max_num { - let j: u64 = i.into(); - assert_ok!(Slots::lease_out(1.into(), &j, j * 10, i * i, i)); - assert_eq!(Slots::deposit_held(1.into(), &j), j * 10); - assert_eq!(Balances::reserved_balance(j), j * 10); - } - - assert_ok!(Slots::clear_all_leases(Origin::root(), 1.into())); - - // Balances cleaned up correctly - for i in 1u32 ..= max_num { - let j: u64 = i.into(); - assert_eq!(Slots::deposit_held(1.into(), &j), 0); - assert_eq!(Balances::reserved_balance(j), 0); - } - - // Leases is empty. - assert!(Leases::::get(ParaId::from(1)).is_empty()); - }); - } - - #[test] - fn lease_out_current_lease_period() { - new_test_ext().execute_with(|| { - run_to_block(1); - - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, ParaId::from(2), Default::default(), Default::default())); - - run_to_block(20); - assert_eq!(Slots::lease_period_index(), 2); - // Can't lease from the past - assert!(Slots::lease_out(1.into(), &1, 1, 1, 1).is_err()); - // Lease in the current period triggers onboarding - assert_ok!(Slots::lease_out(1.into(), &1, 1, 2, 1)); - // Lease in the future doesn't - assert_ok!(Slots::lease_out(2.into(), &1, 1, 3, 1)); - - assert_eq!(TestRegistrar::::operations(), vec![ - (1.into(), 20, true), - ]); - }); - } - - #[test] - fn trigger_onboard_works() { - new_test_ext().execute_with(|| { - run_to_block(1); - assert_ok!(TestRegistrar::::register(1, ParaId::from(1), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, ParaId::from(2), Default::default(), Default::default())); - assert_ok!(TestRegistrar::::register(1, ParaId::from(3), Default::default(), Default::default())); - - // We will directly manipulate leases to emulate some kind of failure in the system. - // Para 1 will have no leases - // Para 2 will have a lease period in the current index - Leases::::insert(ParaId::from(2), vec![Some((0, 0))]); - // Para 3 will have a lease period in a future index - Leases::::insert(ParaId::from(3), vec![None, None, Some((0, 0))]); - - // Para 1 should fail cause they don't have any leases - assert_noop!(Slots::trigger_onboard(Origin::signed(1), 1.into()), Error::::ParaNotOnboarding); - - // Para 2 should succeed - assert_ok!(Slots::trigger_onboard(Origin::signed(1), 2.into())); - - // Para 3 should fail cause their lease is in the future - assert_noop!(Slots::trigger_onboard(Origin::signed(1), 3.into()), Error::::ParaNotOnboarding); - - // Trying Para 2 again should fail cause they are not currently a parathread - assert!(Slots::trigger_onboard(Origin::signed(1), 2.into()).is_err()); - - assert_eq!(TestRegistrar::::operations(), vec![ - (2.into(), 1, true), - ]); - }); - } -} - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking { - use super::*; - use frame_system::RawOrigin; - use frame_support::assert_ok; - use sp_runtime::traits::Bounded; - - use frame_benchmarking::{benchmarks, account, whitelisted_caller, impl_benchmark_test_suite}; - - use crate::slots::Module as Slots; - - fn assert_last_event(generic_event: ::Event) { - let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); - // compare to the last event record - let frame_system::EventRecord { event, .. } = &events[events.len() - 1]; - assert_eq!(event, &system_event); - } - - fn register_a_parathread(i: u32) -> (ParaId, T::AccountId) { - let para = ParaId::from(i); - let leaser: T::AccountId = account("leaser", i, 0); - T::Currency::make_free_balance_be(&leaser, BalanceOf::::max_value()); - let worst_head_data = T::Registrar::worst_head_data(); - let worst_validation_code = T::Registrar::worst_validation_code(); - - assert_ok!(T::Registrar::register(leaser.clone(), para, worst_head_data, worst_validation_code)); - T::Registrar::execute_pending_transitions(); - - (para, leaser) - } - - benchmarks! { - force_lease { - let para = ParaId::from(1337); - let leaser: T::AccountId = account("leaser", 0, 0); - T::Currency::make_free_balance_be(&leaser, BalanceOf::::max_value()); - let amount = T::Currency::minimum_balance(); - let period_begin = 69u32.into(); - let period_count = 3u32.into(); - }: _(RawOrigin::Root, para, leaser.clone(), amount, period_begin, period_count) - verify { - assert_last_event::(RawEvent::Leased(para, leaser, period_begin, period_count, amount, amount).into()); - } - - // Worst case scenario, T parathreads onboard, and C parachains offboard. - manage_lease_period_start { - // Assume reasonable maximum of 100 paras at any time - let c in 1 .. 100; - let t in 1 .. 100; - - let period_begin = 1u32.into(); - let period_count = 4u32.into(); - - // Make T parathreads - let paras_info = (0..t).map(|i| { - register_a_parathread::(i) - }).collect::>(); - - T::Registrar::execute_pending_transitions(); - - // T parathread are upgrading to parachains - for (para, leaser) in paras_info { - let amount = T::Currency::minimum_balance(); - - Slots::::force_lease(RawOrigin::Root.into(), para, leaser, amount, period_begin, period_count)?; - } - - T::Registrar::execute_pending_transitions(); - - // C parachains are downgrading to parathreads - for i in 200 .. 200 + c { - let (para, leaser) = register_a_parathread::(i); - T::Registrar::make_parachain(para)?; - } - - T::Registrar::execute_pending_transitions(); - - for i in 0 .. t { - assert!(T::Registrar::is_parathread(ParaId::from(i))); - } - - for i in 200 .. 200 + c { - assert!(T::Registrar::is_parachain(ParaId::from(i))); - } - }: { - Slots::::manage_lease_period_start(period_begin); - } verify { - // All paras should have switched. - T::Registrar::execute_pending_transitions(); - for i in 0 .. t { - assert!(T::Registrar::is_parachain(ParaId::from(i))); - } - for i in 200 .. 200 + c { - assert!(T::Registrar::is_parathread(ParaId::from(i))); - } - } - - // Assume that at most 8 people have deposits for leases on a parachain. - // This would cover at least 4 years of leases in the worst case scenario. - clear_all_leases { - let max_people = 8; - let (para, _) = register_a_parathread::(1); - - for i in 0 .. max_people { - let leaser = account("lease_deposit", i, 0); - let amount = T::Currency::minimum_balance(); - T::Currency::make_free_balance_be(&leaser, BalanceOf::::max_value()); - - // Average slot has 4 lease periods. - let period_count: LeasePeriodOf = 4u32.into(); - let period_begin = period_count * i.into(); - Slots::::force_lease(RawOrigin::Root.into(), para, leaser, amount, period_begin, period_count)?; - } - - for i in 0 .. max_people { - let leaser = account("lease_deposit", i, 0); - assert_eq!(T::Currency::reserved_balance(&leaser), T::Currency::minimum_balance()); - } - - }: _(RawOrigin::Root, para) - verify { - for i in 0 .. max_people { - let leaser = account("lease_deposit", i, 0); - assert_eq!(T::Currency::reserved_balance(&leaser), 0u32.into()); - } - } - - trigger_onboard { - // get a parachain into a bad state where they did not onboard - let (para, _) = register_a_parathread::(1); - Leases::::insert(para, vec![Some((T::AccountId::default(), BalanceOf::::default()))]); - assert!(T::Registrar::is_parathread(para)); - let caller = whitelisted_caller(); - }: _(RawOrigin::Signed(caller), para) - verify { - T::Registrar::execute_pending_transitions(); - assert!(T::Registrar::is_parachain(para)); - } - } - - impl_benchmark_test_suite!( - Slots, - crate::integration_tests::new_test_ext(), - crate::integration_tests::Test, - ); -} diff --git a/runtime/common/src/traits.rs b/runtime/common/src/traits.rs deleted file mode 100644 index 35a369bb292d..000000000000 --- a/runtime/common/src/traits.rs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Traits used across pallets for Polkadot. - -use sp_std::vec::*; -use primitives::v1::{HeadData, ValidationCode, Id as ParaId}; -use frame_support::{ - dispatch::DispatchResult, - traits::{Currency, ReservableCurrency}, -}; - -/// Parachain registration API. -pub trait Registrar { - /// The account ID type that encodes a parachain manager ID. - type AccountId; - - /// Report the manager (permissioned owner) of a parachain, if there is one. - fn manager_of(id: ParaId) -> Option; - - /// All parachains. Ordered ascending by ParaId. Parathreads are not included. - fn parachains() -> Vec; - - /// Return if a ParaId is a Parachain. - fn is_parachain(id: ParaId) -> bool { - Self::parachains().binary_search(&id).is_ok() - } - - /// Return if a ParaId is a Parathread. - fn is_parathread(id: ParaId) -> bool; - - /// Return if a ParaId is registered in the system. - fn is_registered(id: ParaId) -> bool { - Self::is_parathread(id) || Self::is_parachain(id) - } - - /// Apply a lock to the para registration so that it cannot be modified by - /// the manager directly. Instead the para must use its sovereign governance - /// or the governance of the relay chain. - fn apply_lock(id: ParaId); - - /// Remove any lock on the para registration. - fn remove_lock(id: ParaId); - - /// Register a Para ID under control of `who`. Registration may be be - /// delayed by session rotation. - fn register( - who: Self::AccountId, - id: ParaId, - genesis_head: HeadData, - validation_code: ValidationCode, - ) -> DispatchResult; - - /// Deregister a Para ID, free any data, and return any deposits. - fn deregister(id: ParaId) -> DispatchResult; - - /// Elevate a para to parachain status. - fn make_parachain(id: ParaId) -> DispatchResult; - - /// Lower a para back to normal from parachain status. - fn make_parathread(id: ParaId) -> DispatchResult; - - #[cfg(any(feature = "runtime-benchmarks", test))] - fn worst_head_data() -> HeadData; - - #[cfg(any(feature = "runtime-benchmarks", test))] - fn worst_validation_code() -> ValidationCode; - - /// Execute any pending state transitions for paras. - /// For example onboarding to parathread, or parathread to parachain. - #[cfg(any(feature = "runtime-benchmarks", test))] - fn execute_pending_transitions(); -} - -/// Error type for something that went wrong with leasing. -#[derive(Debug)] -pub enum LeaseError { - /// Unable to reserve the funds in the leaser's account. - ReserveFailed, - /// There is already a lease on at least one period for the given para. - AlreadyLeased, - /// The period to be leased has already ended. - AlreadyEnded, -} - -/// Lease manager. Used by the auction module to handle parachain slot leases. -pub trait Leaser { - /// An account identifier for a leaser. - type AccountId; - - /// The measurement type for counting lease periods (generally just a `BlockNumber`). - type LeasePeriod; - - /// The currency type in which the lease is taken. - type Currency: ReservableCurrency; - - /// Lease a new parachain slot for `para`. - /// - /// `leaser` shall have a total of `amount` balance reserved by the implementor of this trait. - /// - /// Note: The implementor of the trait (the leasing system) is expected to do all reserve/unreserve calls. The - /// caller of this trait *SHOULD NOT* pre-reserve the deposit (though should ensure that it is reservable). - /// - /// The lease will last from `period_begin` for `period_count` lease periods. It is undefined if the `para` - /// already has a slot leased during those periods. - /// - /// Returns `Err` in the case of an error, and in which case nothing is changed. - fn lease_out( - para: ParaId, - leaser: &Self::AccountId, - amount: >::Balance, - period_begin: Self::LeasePeriod, - period_count: Self::LeasePeriod, - ) -> Result<(), LeaseError>; - - /// Return the amount of balance currently held in reserve on `leaser`'s account for leasing `para`. This won't - /// go down outside of a lease period. - fn deposit_held(para: ParaId, leaser: &Self::AccountId) -> >::Balance; - - /// The lease period. This is constant, but can't be a `const` due to it being a runtime configurable quantity. - fn lease_period() -> Self::LeasePeriod; - - /// Returns the current lease period. - fn lease_period_index() -> Self::LeasePeriod; - - /// Returns true if the parachain already has a lease in any of lease periods in the inclusive - /// range `[first_period, last_period]`, intersected with the unbounded range [`current_lease_period`..] . - fn already_leased( - para_id: ParaId, - first_period: Self::LeasePeriod, - last_period: Self::LeasePeriod - ) -> bool; -} - -/// An enum which tracks the status of the auction system, and which phase it is in. -#[derive(PartialEq, Debug)] -pub enum AuctionStatus { - /// An auction has not started yet. - NotStarted, - /// We are in the starting period of the auction, collecting initial bids. - StartingPeriod, - /// We are in the ending period of the auction, where we are taking snapshots of the winning - /// bids. This state supports "sampling", where we may only take a snapshot every N blocks. - /// In this case, the first number is the current sample number, and the second number - /// is the sub-sample. i.e. for sampling every 20 blocks, the 25th block in the ending period - /// will be `EndingPeriod(1, 5)`. - EndingPeriod(BlockNumber, BlockNumber), - /// We have completed the bidding process and are waiting for the VRF to return some acceptable - /// randomness to select the winner. The number represents how many blocks we have been waiting. - VrfDelay(BlockNumber), -} - -impl AuctionStatus { - /// Returns true if the auction is in any state other than `NotStarted`. - pub fn is_in_progress(&self) -> bool { - !matches!(self, Self::NotStarted) - } - /// Return true if the auction is in the starting period. - pub fn is_starting(&self) -> bool { - matches!(self, Self::StartingPeriod) - } - /// Returns `Some(sample, sub_sample)` if the auction is in the `EndingPeriod`, - /// otherwise returns `None`. - pub fn is_ending(self) -> Option<(BlockNumber, BlockNumber)> { - match self { - Self::EndingPeriod(sample, sub_sample) => Some((sample, sub_sample)), - _ => None, - } - } - /// Returns true if the auction is in the `VrfDelay` period. - pub fn is_vrf(&self) -> bool { - matches!(self, Self::VrfDelay(_)) - } -} - -pub trait Auctioneer { - /// An account identifier for a leaser. - type AccountId; - - /// The measurement type for counting blocks. - type BlockNumber; - - /// The measurement type for counting lease periods (generally the same as `BlockNumber`). - type LeasePeriod; - - /// The currency type in which the lease is taken. - type Currency: ReservableCurrency; - - /// Create a new auction. - /// - /// This can only happen when there isn't already an auction in progress. Accepts the `duration` - /// of this auction and the `lease_period_index` of the initial lease period of the four that - /// are to be auctioned. - fn new_auction(duration: Self::BlockNumber, lease_period_index: Self::LeasePeriod) -> DispatchResult; - - /// Given the current block number, return the current auction status. - fn auction_status(now: Self::BlockNumber) -> AuctionStatus; - - /// Place a bid in the current auction. - /// - /// - `bidder`: The account that will be funding this bid. - /// - `para`: The para to bid for. - /// - `first_slot`: The first lease period index of the range to be bid on. - /// - `last_slot`: The last lease period index of the range to be bid on (inclusive). - /// - `amount`: The total amount to be the bid for deposit over the range. - /// - /// The account `Bidder` must have at least `amount` available as a free balance in `Currency`. The - /// implementation *MUST* remove or reserve `amount` funds from `bidder` and those funds should be returned - /// or freed once the bid is rejected or lease has ended. - fn place_bid( - bidder: Self::AccountId, - para: ParaId, - first_slot: Self::LeasePeriod, - last_slot: Self::LeasePeriod, - amount: >::Balance, - ) -> DispatchResult; - - /// Returns the current lease period. - fn lease_period_index() -> Self::LeasePeriod; - - /// Returns the length of a lease period. - fn lease_period() -> Self::LeasePeriod; - - /// Check if the para and user combination has won an auction in the past. - fn has_won_an_auction(para: ParaId, bidder: &Self::AccountId) -> bool; -} - -/// Runtime hook for when we swap a parachain and parathread. -#[impl_trait_for_tuples::impl_for_tuples(30)] -pub trait OnSwap { - /// Updates any needed state/references to enact a logical swap of two parachains. Identity, - /// code and `head_data` remain equivalent for all parachains/threads, however other properties - /// such as leases, deposits held and thread/chain nature are swapped. - fn on_swap(one: ParaId, other: ParaId); -} diff --git a/runtime/common/src/xcm_sender.rs b/runtime/common/src/xcm_sender.rs deleted file mode 100644 index 0b817a237fb9..000000000000 --- a/runtime/common/src/xcm_sender.rs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Xcm sender for relay chain. - -use parity_scale_codec::Encode; -use sp_std::marker::PhantomData; -use xcm::opaque::{VersionedXcm, v0::{SendXcm, MultiLocation, Junction, Xcm, Result, Error}}; -use runtime_parachains::{configuration, dmp}; - -/// Xcm sender for relay chain. It only sends downward message. -pub struct ChildParachainRouter(PhantomData); - -impl SendXcm for ChildParachainRouter { - fn send_xcm(dest: MultiLocation, msg: Xcm) -> Result { - match dest { - MultiLocation::X1(Junction::Parachain(id)) => { - // Downward message passing. - let config = >::config(); - >::queue_downward_message( - &config, - id.into(), - VersionedXcm::from(msg).encode(), - ).map_err(Into::::into)?; - Ok(()) - } - d => Err(Error::CannotReachDestination(d, msg)), - } - } -} diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml deleted file mode 100644 index 17464e963c75..000000000000 --- a/runtime/kusama/Cargo.toml +++ /dev/null @@ -1,264 +0,0 @@ -[package] -name = "kusama-runtime" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.14", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -static_assertions = "1.1.0" -smallvec = "1.6.1" - -authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-arithmetic = { package = "sp-arithmetic", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-democracy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-elections-phragmen = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-gilt = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-identity = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-im-online = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-membership = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-multisig = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-nicks = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-proxy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-recovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-scheduler = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-society = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking-reward-fn = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-tips = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false } -frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-offences-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-session-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -hex-literal = { version = "0.3.1", optional = true } - -runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } -runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } - -xcm = { package = "xcm", path = "../../xcm", default-features = false } -xcm-executor = { package = "xcm-executor", path = "../../xcm/xcm-executor", default-features = false } -xcm-builder = { package = "xcm-builder", path = "../../xcm/xcm-builder", default-features = false } - -max-encoded-len = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[dev-dependencies] -hex-literal = "0.3.1" -libsecp256k1 = "0.3.5" -tiny-keccak = "2.0.2" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -separator = "0.4.1" -serde_json = "1.0.61" - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = ["std"] -no_std = [] -only-staking = [] -std = [ - "authority-discovery-primitives/std", - "bitvec/std", - "primitives/std", - "rustc-hex/std", - "parity-scale-codec/std", - "inherents/std", - "sp-core/std", - "sp-api/std", - "tx-pool-api/std", - "block-builder-api/std", - "offchain-primitives/std", - "sp-std/std", - "sp-io/std", - "frame-support/std", - "frame-executive/std", - "pallet-authority-discovery/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-bounties/std", - "pallet-transaction-payment/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-collective/std", - "pallet-elections-phragmen/std", - "pallet-election-provider-multi-phase/std", - "pallet-democracy/std", - "pallet-gilt/std", - "pallet-grandpa/std", - "pallet-identity/std", - "pallet-im-online/std", - "pallet-indices/std", - "pallet-membership/std", - "pallet-multisig/std", - "pallet-nicks/std", - "pallet-offences/std", - "pallet-proxy/std", - "pallet-recovery/std", - "pallet-scheduler/std", - "pallet-session/std", - "pallet-society/std", - "pallet-staking/std", - "pallet-staking-reward-fn/std", - "pallet-timestamp/std", - "pallet-tips/std", - "pallet-treasury/std", - "pallet-utility/std", - "pallet-vesting/std", - "pallet-babe/std", - "pallet-xcm/std", - "sp-runtime/std", - "sp-staking/std", - "frame-system/std", - "frame-system-rpc-runtime-api/std", - "sp-version/std", - "serde_derive", - "serde/std", - "log/std", - "babe-primitives/std", - "sp-session/std", - "runtime-common/std", - "runtime-parachains/std", - "frame-try-runtime/std", - "sp-npos-elections/std", - "beefy-primitives/std", - "pallet-mmr-primitives/std", - "xcm/std", - "xcm-executor/std", - "xcm-builder/std", - "max-encoded-len/std", - "frame-election-provider-support/std", -] -runtime-benchmarks = [ - "runtime-common/runtime-benchmarks", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", - "pallet-babe/runtime-benchmarks", - "pallet-balances/runtime-benchmarks", - "pallet-bounties/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", - "pallet-democracy/runtime-benchmarks", - "pallet-elections-phragmen/runtime-benchmarks", - "pallet-election-provider-multi-phase/runtime-benchmarks", - "pallet-gilt/runtime-benchmarks", - "pallet-grandpa/runtime-benchmarks", - "pallet-identity/runtime-benchmarks", - "pallet-im-online/runtime-benchmarks", - "pallet-indices/runtime-benchmarks", - "pallet-membership/runtime-benchmarks", - "pallet-multisig/runtime-benchmarks", - "pallet-proxy/runtime-benchmarks", - "pallet-scheduler/runtime-benchmarks", - "pallet-society/runtime-benchmarks", - "pallet-staking/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks", - "pallet-tips/runtime-benchmarks", - "pallet-treasury/runtime-benchmarks", - "pallet-utility/runtime-benchmarks", - "pallet-vesting/runtime-benchmarks", - "pallet-offences-benchmarking", - "pallet-session-benchmarking", - "pallet-xcm/runtime-benchmarks", - "frame-system-benchmarking", - "hex-literal", - "xcm-builder/runtime-benchmarks", - "frame-election-provider-support/runtime-benchmarks", -] -try-runtime = [ - "frame-executive/try-runtime", - "frame-try-runtime", - "frame-system/try-runtime", - "pallet-authority-discovery/try-runtime", - "pallet-authorship/try-runtime", - "pallet-balances/try-runtime", - "pallet-bounties/try-runtime", - "pallet-transaction-payment/try-runtime", - "pallet-collective/try-runtime", - "pallet-elections-phragmen/try-runtime", - "pallet-election-provider-multi-phase/try-runtime", - "pallet-democracy/try-runtime", - "pallet-grandpa/try-runtime", - "pallet-identity/try-runtime", - "pallet-im-online/try-runtime", - "pallet-indices/try-runtime", - "pallet-membership/try-runtime", - "pallet-multisig/try-runtime", - "pallet-nicks/try-runtime", - "pallet-offences/try-runtime", - "pallet-proxy/try-runtime", - "pallet-recovery/try-runtime", - "pallet-scheduler/try-runtime", - "pallet-session/try-runtime", - "pallet-society/try-runtime", - "pallet-staking/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-tips/try-runtime", - "pallet-treasury/try-runtime", - "pallet-utility/try-runtime", - "pallet-vesting/try-runtime", - "pallet-babe/try-runtime", - "runtime-common/try-runtime", -] -# When enabled, the runtime api will not be build. -# -# This is required by Cumulus to access certain types of the -# runtime without clashing with the runtime api exported functions -# in WASM. -disable-runtime-api = [] - -# A feature that should be enabled when the runtime should be build for on-chain -# deployment. This will disable stuff that shouldn't be part of the on-chain wasm -# to make it smaller like logging for example. -on-chain-release-build = [ - "sp-api/disable-logging", -] diff --git a/runtime/kusama/build.rs b/runtime/kusama/build.rs deleted file mode 100644 index a75ebb4edbe1..000000000000 --- a/runtime/kusama/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .import_memory() - .export_heap_base() - .build() -} diff --git a/runtime/kusama/src/constants.rs b/runtime/kusama/src/constants.rs deleted file mode 100644 index 29040efb481a..000000000000 --- a/runtime/kusama/src/constants.rs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// Money matters. -pub mod currency { - use primitives::v0::Balance; - - pub const UNITS: Balance = 1_000_000_000_000; - pub const CENTS: Balance = UNITS / 30_000; - pub const GRAND: Balance = CENTS * 100_000; - pub const MILLICENTS: Balance = CENTS / 1_000; - - pub const fn deposit(items: u32, bytes: u32) -> Balance { - items as Balance * 2_000 * CENTS + (bytes as Balance) * 100 * MILLICENTS - } -} - -/// Time and blocks. -pub mod time { - use primitives::v0::{Moment, BlockNumber}; - pub const MILLISECS_PER_BLOCK: Moment = 6000; - pub const SLOT_DURATION: Moment = MILLISECS_PER_BLOCK; - pub const EPOCH_DURATION_IN_SLOTS: BlockNumber = 1 * HOURS; - - // These time units are defined in number of blocks. - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; - pub const WEEKS: BlockNumber = DAYS * 7; - - // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. - pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); -} - -/// Fee-related. -pub mod fee { - pub use sp_runtime::Perbill; - use primitives::v0::Balance; - use runtime_common::ExtrinsicBaseWeight; - use frame_support::weights::{ - WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, - }; - use smallvec::smallvec; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); - - /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the - /// node's balance type. - /// - /// This should typically create a mapping between the following ranges: - /// - [0, MAXIMUM_BLOCK_WEIGHT] - /// - [Balance::min, Balance::max] - /// - /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: - /// - Setting it to `0` will essentially disable the weight fee. - /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. - pub struct WeightToFee; - impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - // in Kusama, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: - let p = super::currency::CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } - } -} - -#[cfg(test)] -mod tests { - use frame_support::weights::WeightToFeePolynomial; - use runtime_common::{MAXIMUM_BLOCK_WEIGHT, ExtrinsicBaseWeight}; - use super::fee::WeightToFee; - use super::currency::{CENTS, MILLICENTS}; - - #[test] - // This function tests that the fee for `MAXIMUM_BLOCK_WEIGHT` of weight is correct - fn full_block_fee_is_correct() { - // A full block should cost 1,600 CENTS - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&MAXIMUM_BLOCK_WEIGHT); - let y = 16 * 100 * CENTS; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } - - #[test] - // This function tests that the fee for `ExtrinsicBaseWeight` of weight is correct - fn extrinsic_base_fee_is_correct() { - // `ExtrinsicBaseWeight` should cost 1/10 of a CENT - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&ExtrinsicBaseWeight::get()); - let y = CENTS / 10; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } -} diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs deleted file mode 100644 index b0c1a1d006c7..000000000000 --- a/runtime/kusama/src/lib.rs +++ /dev/null @@ -1,1883 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Kusama runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] - -use pallet_transaction_payment::CurrencyAdapter; -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use sp_core::u32_trait::{_1, _2, _3, _5}; -use parity_scale_codec::{Encode, Decode}; -use primitives::v1::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CommittedCandidateReceipt, - CoreState, GroupRotationInfo, Hash, Id as ParaId, Moment, Nonce, OccupiedCoreAssumption, - PersistedValidationData, Signature, ValidationCode, ValidationCodeHash, ValidatorId, - ValidatorIndex, InboundDownwardMessage, InboundHrmpMessage, SessionInfo, -}; -use runtime_common::{ - claims, paras_registrar, xcm_sender, slots, auctions, crowdloan, - SlowAdjustingFeeUpdate, CurrencyToVote, impls::DealWithFees, - BlockHashCount, RocksDbWeight, BlockWeights, BlockLength, OffchainSolutionWeightLimit, OffchainSolutionLengthLimit, - ToAuthor, -}; - -use runtime_parachains::origin as parachains_origin; -use runtime_parachains::configuration as parachains_configuration; -use runtime_parachains::shared as parachains_shared; -use runtime_parachains::inclusion as parachains_inclusion; -use runtime_parachains::paras_inherent as parachains_paras_inherent; -use runtime_parachains::initializer as parachains_initializer; -use runtime_parachains::session_info as parachains_session_info; -use runtime_parachains::paras as parachains_paras; -use runtime_parachains::dmp as parachains_dmp; -use runtime_parachains::ump as parachains_ump; -use runtime_parachains::hrmp as parachains_hrmp; -use runtime_parachains::scheduler as parachains_scheduler; -use runtime_parachains::reward_points as parachains_reward_points; -use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl; - -use xcm::v0::{MultiLocation::{self, Null, X1}, NetworkId, BodyId, Xcm, Junction::Parachain}; -use xcm::v0::MultiAsset::{self, AllConcreteFungible}; -use xcm_builder::{ - AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter, - ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter, - IsConcrete, FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, - IsChildSystemParachain, UsingComponents, BackingToPlurality, SignedToAccountId32, -}; -use xcm_executor::XcmExecutor; -use sp_arithmetic::Perquintill; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - ApplyExtrinsicResult, KeyTypeId, Percent, Permill, Perbill, - transaction_validity::{TransactionValidity, TransactionSource, TransactionPriority}, - traits::{ - BlakeTwo256, Block as BlockT, OpaqueKeys, ConvertInto, AccountIdLookup, - Extrinsic as ExtrinsicT, SaturatedConversion, Verify, - }, -}; -#[cfg(feature = "runtime-benchmarks")] -use sp_runtime::RuntimeString; -use sp_version::RuntimeVersion; -use pallet_grandpa::{AuthorityId as GrandpaId, fg_primitives}; -#[cfg(any(feature = "std", test))] -use sp_version::NativeVersion; -use sp_core::OpaqueMetadata; -use sp_staking::SessionIndex; -use frame_support::{ - parameter_types, construct_runtime, RuntimeDebug, PalletId, - traits::{KeyOwnerProofSystem, LockIdentifier, Filter, InstanceFilter, All, MaxEncodedLen}, - weights::Weight, -}; -use frame_system::{EnsureRoot, EnsureOneOf}; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use pallet_session::historical as session_historical; -use static_assertions::const_assert; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use pallet_mmr_primitives as mmr; - -#[cfg(feature = "std")] -pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use pallet_timestamp::Call as TimestampCall; -pub use pallet_balances::Call as BalancesCall; - -/// Constant values used within the runtime. -pub mod constants; -use constants::{time::*, currency::*, fee::*}; - -// Weights used in the runtime. -mod weights; - -#[cfg(test)] -mod tests; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -/// Runtime version (Kusama). -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("kusama"), - impl_name: create_runtime_str!("parity-kusama"), - authoring_version: 2, - spec_version: 9070, - impl_version: 0, - #[cfg(not(feature = "disable-runtime-api"))] - apis: RUNTIME_API_VERSIONS, - #[cfg(feature = "disable-runtime-api")] - apis: version::create_apis_vec![[]], - transaction_version: 5, -}; - -/// The BABE epoch configuration at genesis. -pub const BABE_GENESIS_EPOCH_CONFIG: babe_primitives::BabeEpochConfiguration = - babe_primitives::BabeEpochConfiguration { - c: PRIMARY_PROBABILITY, - allowed_slots: babe_primitives::AllowedSlots::PrimaryAndSecondaryVRFSlots - }; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -/// Don't allow swaps until parathread story is more mature. -pub struct BaseFilter; -impl Filter for BaseFilter { - fn filter(c: &Call) -> bool { - !matches!(c, - Call::Registrar(paras_registrar::Call::swap(..)) - ) - } -} - -type MoreThanHalfCouncil = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective> ->; - -parameter_types! { - pub const Version: RuntimeVersion = VERSION; - pub const SS58Prefix: u8 = 2; -} - -impl frame_system::Config for Runtime { - type BaseCallFilter = BaseFilter; - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type Origin = Origin; - type Call = Call; - type Index = Nonce; - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = AccountIdLookup; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type DbWeight = RocksDbWeight; - type Version = Version; - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = weights::frame_system::WeightInfo; - type SS58Prefix = SS58Prefix; - type OnSetCode = (); -} - -parameter_types! { - pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * - BlockWeights::get().max_block; - pub const MaxScheduledPerBlock: u32 = 50; -} - -type ScheduleOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective> ->; - -impl pallet_scheduler::Config for Runtime { - type Event = Event; - type Origin = Origin; - type PalletsOrigin = OriginCaller; - type Call = Call; - type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = ScheduleOrigin; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = weights::pallet_scheduler::WeightInfo; -} - -parameter_types! { - pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS as u64; - pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; - pub const ReportLongevity: u64 = - BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); -} - -impl pallet_babe::Config for Runtime { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - - // session module is the trigger - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - - type KeyOwnerProof = >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type KeyOwnerProofSystem = Historical; - - type HandleEquivocation = - pallet_babe::EquivocationHandler; - - type WeightInfo = (); -} - -parameter_types! { - pub const IndexDeposit: Balance = 100 * CENTS; -} - -impl pallet_indices::Config for Runtime { - type AccountIndex = AccountIndex; - type Currency = Balances; - type Deposit = IndexDeposit; - type Event = Event; - type WeightInfo = weights::pallet_indices::WeightInfo; -} - -parameter_types! { - pub const ExistentialDeposit: Balance = 1 * CENTS; - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - type WeightInfo = weights::pallet_balances::WeightInfo; -} - -parameter_types! { - pub const TransactionByteFee: Balance = 10 * MILLICENTS; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = CurrencyAdapter>; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = WeightToFee; - type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; -} - -parameter_types! { - pub const MinimumPeriod: u64 = SLOT_DURATION / 2; -} -impl pallet_timestamp::Config for Runtime { - type Moment = u64; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; - type WeightInfo = weights::pallet_timestamp::WeightInfo; -} - -parameter_types! { - pub const UncleGenerations: u32 = 0; -} - -impl pallet_authorship::Config for Runtime { - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = (Staking, ImOnline); -} - -parameter_types! { - pub const Period: BlockNumber = 10 * MINUTES; - pub const Offset: BlockNumber = 0; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub im_online: ImOnline, - pub para_validator: ParasInitializer, - pub para_assignment: ParasSessionInfo, - pub authority_discovery: AuthorityDiscovery, - } -} - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = AccountId; - type ValidatorIdOf = pallet_staking::StashOf; - type ShouldEndSession = Babe; - type NextSessionRotation = Babe; - type SessionManager = pallet_session::historical::NoteHistoricalRoot; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type WeightInfo = weights::pallet_session::WeightInfo; -} - -impl pallet_session::historical::Config for Runtime { - type FullIdentification = pallet_staking::Exposure; - type FullIdentificationOf = pallet_staking::ExposureOf; -} - -parameter_types! { - // no signed phase for now, just unsigned. - pub const SignedPhase: u32 = 0; - pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_SLOTS / 4; - - // fallback: run election on-chain. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; - pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); - - // miner configs - pub const MinerMaxIterations: u32 = 10; - pub OffchainRepeat: BlockNumber = 5; -} - -sp_npos_elections::generate_solution_type!( - #[compact] - pub struct NposCompactSolution24::< - VoterIndex = u32, - TargetIndex = u16, - Accuracy = sp_runtime::PerU16, - >(24) -); - -impl pallet_election_provider_multi_phase::Config for Runtime { - type Event = Event; - type Currency = Balances; - type UnsignedPhase = UnsignedPhase; - type SignedPhase = SignedPhase; - type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; - type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. - type MinerMaxLength = OffchainSolutionLengthLimit; - type OffchainRepeat = OffchainRepeat; - type MinerTxPriority = NposSolutionPriority; - type DataProvider = Staking; - type CompactSolution = NposCompactSolution24; - type OnChainAccuracy = Perbill; - type Fallback = Fallback; - type BenchmarkingConfig = (); - type ForceOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, - >; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; -} - -fn era_payout( - total_staked: Balance, - non_gilt_issuance: Balance, - max_annual_inflation: Perquintill, - period_fraction: Perquintill, - auctioned_slots: u64, -) -> (Balance, Balance) { - use sp_arithmetic::traits::Saturating; - use pallet_staking_reward_fn::compute_inflation; - - let min_annual_inflation = Perquintill::from_rational(25u64, 1000u64); - let delta_annual_inflation = max_annual_inflation.saturating_sub(min_annual_inflation); - - // 30% reserved for up to 60 slots. - let auction_proportion = Perquintill::from_rational(auctioned_slots.min(60), 200u64); - - // Therefore the ideal amount at stake (as a percentage of total issuance) is 75% less the amount that we expect - // to be taken up with auctions. - let ideal_stake = Perquintill::from_percent(75) - .saturating_sub(auction_proportion); - - let stake = Perquintill::from_rational(total_staked, non_gilt_issuance); - let falloff = Perquintill::from_percent(5); - let adjustment = compute_inflation(stake, ideal_stake, falloff); - let staking_inflation = min_annual_inflation.saturating_add(delta_annual_inflation * adjustment); - - let max_payout = period_fraction * max_annual_inflation * non_gilt_issuance; - let staking_payout = (period_fraction * staking_inflation) * non_gilt_issuance; - let rest = max_payout.saturating_sub(staking_payout); - - let other_issuance = non_gilt_issuance.saturating_sub(total_staked); - if total_staked > other_issuance { - let _cap_rest = Perquintill::from_rational(other_issuance, total_staked) * staking_payout; - // We don't do anything with this, but if we wanted to, we could introduce a cap on the treasury amount - // with: `rest = rest.min(cap_rest);` - } - (staking_payout, rest) -} - -pub struct EraPayout; -impl pallet_staking::EraPayout for EraPayout { - fn era_payout( - total_staked: Balance, - _total_issuance: Balance, - era_duration_millis: u64, - ) -> (Balance, Balance) { - // TODO: #3011 Update with proper auctioned slots tracking. - // This should be fine for the first year of parachains. - let auctioned_slots: u64 = auctions::Pallet::::auction_counter().into(); - const MAX_ANNUAL_INFLATION: Perquintill = Perquintill::from_percent(10); - const MILLISECONDS_PER_YEAR: u64 = 1000 * 3600 * 24 * 36525 / 100; - - era_payout( - total_staked, - Gilt::issuance().non_gilt, - MAX_ANNUAL_INFLATION, - Perquintill::from_rational(era_duration_millis, MILLISECONDS_PER_YEAR), - auctioned_slots, - ) - } -} - -parameter_types! { - // Six sessions in an era (6 hours). - pub const SessionsPerEra: SessionIndex = 6; - // 28 eras for unbonding (7 days). - pub const BondingDuration: pallet_staking::EraIndex = 28; - // 27 eras in which slashes can be cancelled (slightly less than 7 days). - pub const SlashDeferDuration: pallet_staking::EraIndex = 27; - pub const MaxNominatorRewardedPerValidator: u32 = 256; -} - -type SlashCancelOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective> ->; - -impl pallet_staking::Config for Runtime { - const MAX_NOMINATIONS: u32 = ::LIMIT as u32; - type Currency = Balances; - type UnixTime = Timestamp; - type CurrencyToVote = CurrencyToVote; - type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig - >; - type RewardRemainder = Treasury; - type Event = Event; - type Slash = Treasury; - type Reward = (); - type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; - type SlashDeferDuration = SlashDeferDuration; - // A majority of the council or root can cancel the slash. - type SlashCancelOrigin = SlashCancelOrigin; - type SessionInterface = Self; - type EraPayout = EraPayout; - type NextNewSession = Session; - type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; - type WeightInfo = weights::pallet_staking::WeightInfo; -} - -parameter_types! { - pub const LaunchPeriod: BlockNumber = 7 * DAYS; - pub const VotingPeriod: BlockNumber = 7 * DAYS; - pub const FastTrackVotingPeriod: BlockNumber = 3 * HOURS; - pub const MinimumDeposit: Balance = 100 * CENTS; - pub const EnactmentPeriod: BlockNumber = 8 * DAYS; - pub const CooloffPeriod: BlockNumber = 7 * DAYS; - // One cent: $10,000 / MB - pub const PreimageByteDeposit: Balance = 10 * MILLICENTS; - pub const InstantAllowed: bool = true; - pub const MaxVotes: u32 = 100; - pub const MaxProposals: u32 = 100; -} - -impl pallet_democracy::Config for Runtime { - type Proposal = Call; - type Event = Event; - type Currency = Balances; - type EnactmentPeriod = EnactmentPeriod; - type LaunchPeriod = LaunchPeriod; - type VotingPeriod = VotingPeriod; - type MinimumDeposit = MinimumDeposit; - /// A straight majority of the council can decide what their next motion is. - type ExternalOrigin = pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; - /// A majority can have the next scheduled referendum be a straight majority-carries vote. - type ExternalMajorityOrigin = pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; - /// A unanimous council can have the next scheduled referendum be a straight default-carries - /// (NTB) vote. - type ExternalDefaultOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>; - /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote - /// be tabled immediately and with a shorter voting/enactment period. - type FastTrackOrigin = pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>; - type InstantOrigin = pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, TechnicalCollective>; - type InstantAllowed = InstantAllowed; - type FastTrackVotingPeriod = FastTrackVotingPeriod; - // To cancel a proposal which has been passed, 2/3 of the council must agree to it. - type CancellationOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, - >; - type BlacklistOrigin = EnsureRoot; - // To cancel a proposal before it has been passed, the technical committee must be unanimous or - // Root must agree. - type CancelProposalOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_1, _1, AccountId, TechnicalCollective>, - >; - // Any single technical committee member may veto a coming council proposal, however they can - // only do it once and it lasts only for the cooloff period. - type VetoOrigin = pallet_collective::EnsureMember; - type CooloffPeriod = CooloffPeriod; - type PreimageByteDeposit = PreimageByteDeposit; - type OperationalPreimageOrigin = pallet_collective::EnsureMember; - type Slash = Treasury; - type Scheduler = Scheduler; - type PalletsOrigin = OriginCaller; - type MaxVotes = MaxVotes; - type WeightInfo = weights::pallet_democracy::WeightInfo; - type MaxProposals = MaxProposals; -} - -parameter_types! { - pub const CouncilMotionDuration: BlockNumber = 3 * DAYS; - pub const CouncilMaxProposals: u32 = 100; - pub const CouncilMaxMembers: u32 = 100; -} - -type CouncilCollective = pallet_collective::Instance1; -impl pallet_collective::Config for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = CouncilMotionDuration; - type MaxProposals = CouncilMaxProposals; - type MaxMembers = CouncilMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = weights::pallet_collective::WeightInfo; -} - -parameter_types! { - pub const CandidacyBond: Balance = 100 * CENTS; - // 1 storage item created, key size is 32 bytes, value size is 16+16. - pub const VotingBondBase: Balance = deposit(1, 64); - // additional data per vote is 32 bytes (account id). - pub const VotingBondFactor: Balance = deposit(0, 32); - /// Daily council elections - pub const TermDuration: BlockNumber = 24 * HOURS; - pub const DesiredMembers: u32 = 19; - pub const DesiredRunnersUp: u32 = 19; - pub const PhragmenElectionPalletId: LockIdentifier = *b"phrelect"; -} - -// Make sure that there are no more than MaxMembers members elected via phragmen. -const_assert!(DesiredMembers::get() <= CouncilMaxMembers::get()); - -impl pallet_elections_phragmen::Config for Runtime { - type Event = Event; - type Currency = Balances; - type ChangeMembers = Council; - type InitializeMembers = Council; - type CurrencyToVote = frame_support::traits::U128CurrencyToVote; - type CandidacyBond = CandidacyBond; - type VotingBondBase = VotingBondBase; - type VotingBondFactor = VotingBondFactor; - type LoserCandidate = Treasury; - type KickedMember = Treasury; - type DesiredMembers = DesiredMembers; - type DesiredRunnersUp = DesiredRunnersUp; - type TermDuration = TermDuration; - type PalletId = PhragmenElectionPalletId; - type WeightInfo = weights::pallet_elections_phragmen::WeightInfo; -} - -parameter_types! { - pub const TechnicalMotionDuration: BlockNumber = 3 * DAYS; - pub const TechnicalMaxProposals: u32 = 100; - pub const TechnicalMaxMembers: u32 = 100; -} - -type TechnicalCollective = pallet_collective::Instance2; -impl pallet_collective::Config for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = TechnicalMotionDuration; - type MaxProposals = TechnicalMaxProposals; - type MaxMembers = TechnicalMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = weights::pallet_collective::WeightInfo; -} - -impl pallet_membership::Config for Runtime { - type Event = Event; - type AddOrigin = MoreThanHalfCouncil; - type RemoveOrigin = MoreThanHalfCouncil; - type SwapOrigin = MoreThanHalfCouncil; - type ResetOrigin = MoreThanHalfCouncil; - type PrimeOrigin = MoreThanHalfCouncil; - type MembershipInitialized = TechnicalCommittee; - type MembershipChanged = TechnicalCommittee; - type MaxMembers = TechnicalMaxMembers; - type WeightInfo = weights::pallet_membership::WeightInfo; -} - -parameter_types! { - pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = 2000 * CENTS; - pub const SpendPeriod: BlockNumber = 6 * DAYS; - pub const Burn: Permill = Permill::from_perthousand(2); - pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry"); - - pub const TipCountdown: BlockNumber = 1 * DAYS; - pub const TipFindersFee: Percent = Percent::from_percent(20); - pub const TipReportDepositBase: Balance = 100 * CENTS; - pub const DataDepositPerByte: Balance = 1 * CENTS; - pub const BountyDepositBase: Balance = 100 * CENTS; - pub const BountyDepositPayoutDelay: BlockNumber = 4 * DAYS; - pub const BountyUpdatePeriod: BlockNumber = 90 * DAYS; - pub const MaximumReasonLength: u32 = 16384; - pub const BountyCuratorDeposit: Permill = Permill::from_percent(50); - pub const BountyValueMinimum: Balance = 200 * CENTS; - pub const MaxApprovals: u32 = 100; -} - -type ApproveOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_3, _5, AccountId, CouncilCollective> ->; - -impl pallet_treasury::Config for Runtime { - type PalletId = TreasuryPalletId; - type Currency = Balances; - type ApproveOrigin = ApproveOrigin; - type RejectOrigin = MoreThanHalfCouncil; - type Event = Event; - type OnSlash = Treasury; - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ProposalBondMinimum; - type SpendPeriod = SpendPeriod; - type Burn = Burn; - type BurnDestination = Society; - type MaxApprovals = MaxApprovals; - type WeightInfo = weights::pallet_treasury::WeightInfo; - type SpendFunds = Bounties; -} - -impl pallet_bounties::Config for Runtime { - type BountyDepositBase = BountyDepositBase; - type BountyDepositPayoutDelay = BountyDepositPayoutDelay; - type BountyUpdatePeriod = BountyUpdatePeriod; - type BountyCuratorDeposit = BountyCuratorDeposit; - type BountyValueMinimum = BountyValueMinimum; - type DataDepositPerByte = DataDepositPerByte; - type Event = Event; - type MaximumReasonLength = MaximumReasonLength; - type WeightInfo = weights::pallet_bounties::WeightInfo; -} - -impl pallet_tips::Config for Runtime { - type MaximumReasonLength = MaximumReasonLength; - type DataDepositPerByte = DataDepositPerByte; - type Tippers = PhragmenElection; - type TipCountdown = TipCountdown; - type TipFindersFee = TipFindersFee; - type TipReportDepositBase = TipReportDepositBase; - type Event = Event; - type WeightInfo = weights::pallet_tips::WeightInfo; -} - -impl pallet_offences::Config for Runtime { - type Event = Event; - type IdentificationTuple = pallet_session::historical::IdentificationTuple; - type OnOffenceHandler = Staking; -} - -impl pallet_authority_discovery::Config for Runtime {} - -parameter_types! { - pub NposSolutionPriority: TransactionPriority = - Perbill::from_percent(90) * TransactionPriority::max_value(); - pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); -} - -impl pallet_im_online::Config for Runtime { - type AuthorityId = ImOnlineId; - type Event = Event; - type ValidatorSet = Historical; - type NextSessionRotation = Babe; - type ReportUnresponsiveness = Offences; - type UnsignedPriority = ImOnlineUnsignedPriority; - type WeightInfo = weights::pallet_im_online::WeightInfo; -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - - type KeyOwnerProof = - >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type KeyOwnerProofSystem = Historical; - - type HandleEquivocation = - pallet_grandpa::EquivocationHandler; - - type WeightInfo = (); -} - -/// Submits transaction with the node's public and signature type. Adheres to the signed extension -/// format of the chain. -impl frame_system::offchain::CreateSignedTransaction for Runtime where - Call: From, -{ - fn create_transaction>( - call: Call, - public: ::Signer, - account: AccountId, - nonce: ::Index, - ) -> Option<(Call, ::SignaturePayload)> { - use sp_runtime::traits::StaticLookup; - // take the biggest period possible. - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - - let current_block = System::block_number() - .saturated_into::() - // The `System::block_number` is initialized with `n+1`, - // so the actual block number is `n`. - .saturating_sub(1); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckMortality::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - let raw_payload = SignedPayload::new(call, extra).map_err(|e| { - log::warn!("Unable to create signed payload: {:?}", e); - }).ok()?; - let signature = raw_payload.using_encoded(|payload| { - C::sign(payload, public) - })?; - let (call, extra, _) = raw_payload.deconstruct(); - let address = ::Lookup::unlookup(account); - Some((call, (address, signature, extra))) - } -} - -impl frame_system::offchain::SigningTypes for Runtime { - type Public = ::Signer; - type Signature = Signature; -} - -impl frame_system::offchain::SendTransactionTypes for Runtime where - Call: From, -{ - type Extrinsic = UncheckedExtrinsic; - type OverarchingCall = Call; -} - -parameter_types! { - pub Prefix: &'static [u8] = b"Pay KSMs to the Kusama account:"; -} - -impl claims::Config for Runtime { - type Event = Event; - type VestingSchedule = Vesting; - type Prefix = Prefix; - type MoveClaimOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; - type WeightInfo = weights::runtime_common_claims::WeightInfo; -} - -parameter_types! { - // Minimum 100 bytes/KSM deposited (1 CENT/byte) - pub const BasicDeposit: Balance = 1000 * CENTS; // 258 bytes on-chain - pub const FieldDeposit: Balance = 250 * CENTS; // 66 bytes on-chain - pub const SubAccountDeposit: Balance = 200 * CENTS; // 53 bytes on-chain - pub const MaxSubAccounts: u32 = 100; - pub const MaxAdditionalFields: u32 = 100; - pub const MaxRegistrars: u32 = 20; -} - -impl pallet_identity::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BasicDeposit = BasicDeposit; - type FieldDeposit = FieldDeposit; - type SubAccountDeposit = SubAccountDeposit; - type MaxSubAccounts = MaxSubAccounts; - type MaxAdditionalFields = MaxAdditionalFields; - type MaxRegistrars = MaxRegistrars; - type Slashed = Treasury; - type ForceOrigin = MoreThanHalfCouncil; - type RegistrarOrigin = MoreThanHalfCouncil; - type WeightInfo = weights::pallet_identity::WeightInfo; -} - -impl pallet_utility::Config for Runtime { - type Event = Event; - type Call = Call; - type WeightInfo = weights::pallet_utility::WeightInfo; -} - -parameter_types! { - // One storage item; key size is 32; value is size 4+4+16+32 bytes = 56 bytes. - pub const DepositBase: Balance = deposit(1, 88); - // Additional storage item size of 32 bytes. - pub const DepositFactor: Balance = deposit(0, 32); - pub const MaxSignatories: u16 = 100; -} - -impl pallet_multisig::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type DepositBase = DepositBase; - type DepositFactor = DepositFactor; - type MaxSignatories = MaxSignatories; - type WeightInfo = weights::pallet_multisig::WeightInfo; -} - -parameter_types! { - pub const ConfigDepositBase: Balance = 500 * CENTS; - pub const FriendDepositFactor: Balance = 50 * CENTS; - pub const MaxFriends: u16 = 9; - pub const RecoveryDeposit: Balance = 500 * CENTS; -} - -impl pallet_recovery::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ConfigDepositBase = ConfigDepositBase; - type FriendDepositFactor = FriendDepositFactor; - type MaxFriends = MaxFriends; - type RecoveryDeposit = RecoveryDeposit; -} - -parameter_types! { - pub const CandidateDeposit: Balance = 1000 * CENTS; - pub const WrongSideDeduction: Balance = 200 * CENTS; - pub const MaxStrikes: u32 = 10; - pub const RotationPeriod: BlockNumber = 7 * DAYS; - pub const PeriodSpend: Balance = 50000 * CENTS; - pub const MaxLockDuration: BlockNumber = 36 * 30 * DAYS; - pub const ChallengePeriod: BlockNumber = 7 * DAYS; - pub const MaxCandidateIntake: u32 = 1; - pub const SocietyPalletId: PalletId = PalletId(*b"py/socie"); -} - -impl pallet_society::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type CandidateDeposit = CandidateDeposit; - type WrongSideDeduction = WrongSideDeduction; - type MaxStrikes = MaxStrikes; - type PeriodSpend = PeriodSpend; - type MembershipChanged = (); - type RotationPeriod = RotationPeriod; - type MaxLockDuration = MaxLockDuration; - type FounderSetOrigin = pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; - type SuspensionJudgementOrigin = pallet_society::EnsureFounder; - type ChallengePeriod = ChallengePeriod; - type MaxCandidateIntake = MaxCandidateIntake; - type PalletId = SocietyPalletId; -} - -parameter_types! { - pub const MinVestedTransfer: Balance = 100 * CENTS; -} - -impl pallet_vesting::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = ConvertInto; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = weights::pallet_vesting::WeightInfo; -} - -parameter_types! { - // One storage item; key size 32, value size 8; . - pub const ProxyDepositBase: Balance = deposit(1, 8); - // Additional storage item size of 33 bytes. - pub const ProxyDepositFactor: Balance = deposit(0, 33); - pub const MaxProxies: u16 = 32; - pub const AnnouncementDepositBase: Balance = deposit(1, 8); - pub const AnnouncementDepositFactor: Balance = deposit(0, 66); - pub const MaxPending: u16 = 32; -} - -/// The type used to represent the kinds of proxying allowed. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen)] -pub enum ProxyType { - Any, - NonTransfer, - Governance, - Staking, - IdentityJudgement, - CancelProxy, -} -impl Default for ProxyType { fn default() -> Self { Self::Any } } -impl InstanceFilter for ProxyType { - fn filter(&self, c: &Call) -> bool { - match self { - ProxyType::Any => true, - ProxyType::NonTransfer => matches!(c, - Call::System(..) | - Call::Babe(..) | - Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | - // Specifically omitting Indices `transfer`, `force_transfer` - // Specifically omitting the entire Balances pallet - Call::Authorship(..) | - Call::Staking(..) | - Call::Session(..) | - Call::Grandpa(..) | - Call::ImOnline(..) | - Call::Democracy(..) | - Call::Council(..) | - Call::TechnicalCommittee(..) | - Call::PhragmenElection(..) | - Call::TechnicalMembership(..) | - Call::Treasury(..) | - Call::Bounties(..) | - Call::Tips(..) | - Call::Claims(..) | - Call::Utility(..) | - Call::Identity(..) | - Call::Society(..) | - Call::Recovery(pallet_recovery::Call::as_recovered(..)) | - Call::Recovery(pallet_recovery::Call::vouch_recovery(..)) | - Call::Recovery(pallet_recovery::Call::claim_recovery(..)) | - Call::Recovery(pallet_recovery::Call::close_recovery(..)) | - Call::Recovery(pallet_recovery::Call::remove_recovery(..)) | - Call::Recovery(pallet_recovery::Call::cancel_recovered(..)) | - // Specifically omitting Recovery `create_recovery`, `initiate_recovery` - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | - // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` - Call::Scheduler(..) | - Call::Proxy(..) | - Call::Multisig(..) | - Call::Gilt(..) | - Call::Registrar(paras_registrar::Call::register(..)) | - Call::Registrar(paras_registrar::Call::deregister(..)) | - // Specifically omitting Registrar `swap` - Call::Registrar(paras_registrar::Call::reserve(..)) | - Call::Crowdloan(..) | - Call::Slots(..) | - Call::Auctions(..) - // Specifically omitting the entire XCM Pallet - ), - ProxyType::Governance => matches!(c, - Call::Democracy(..) | - Call::Council(..) | - Call::TechnicalCommittee(..) | - Call::PhragmenElection(..) | - Call::Treasury(..) | - Call::Bounties(..) | - Call::Tips(..) | - Call::Utility(..) - ), - ProxyType::Staking => matches!(c, - Call::Staking(..) | - Call::Session(..) | - Call::Utility(..) - ), - ProxyType::IdentityJudgement => matches!(c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | - Call::Utility(..) - ), - ProxyType::CancelProxy => matches!(c, - Call::Proxy(pallet_proxy::Call::reject_announcement(..)) - ) - } - } - fn is_superset(&self, o: &Self) -> bool { - match (self, o) { - (x, y) if x == y => true, - (ProxyType::Any, _) => true, - (_, ProxyType::Any) => false, - (ProxyType::NonTransfer, _) => true, - _ => false, - } - } -} - -impl pallet_proxy::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ProxyType = ProxyType; - type ProxyDepositBase = ProxyDepositBase; - type ProxyDepositFactor = ProxyDepositFactor; - type MaxProxies = MaxProxies; - type WeightInfo = weights::pallet_proxy::WeightInfo; - type MaxPending = MaxPending; - type CallHasher = BlakeTwo256; - type AnnouncementDepositBase = AnnouncementDepositBase; - type AnnouncementDepositFactor = AnnouncementDepositFactor; -} - -impl parachains_origin::Config for Runtime {} - -impl parachains_configuration::Config for Runtime {} - -impl parachains_shared::Config for Runtime {} - -impl parachains_session_info::Config for Runtime {} - -impl parachains_inclusion::Config for Runtime { - type Event = Event; - type RewardValidators = parachains_reward_points::RewardValidatorsWithEraPoints; -} - -impl parachains_paras::Config for Runtime { - type Origin = Origin; - type Event = Event; -} - -parameter_types! { - pub const FirstMessageFactorPercent: u64 = 100; -} - -impl parachains_ump::Config for Runtime { - type Event = Event; - type UmpSink = crate::parachains_ump::XcmSink, Runtime>; - type FirstMessageFactorPercent = FirstMessageFactorPercent; -} - -impl parachains_dmp::Config for Runtime {} - -impl parachains_hrmp::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; -} - -impl parachains_paras_inherent::Config for Runtime {} - -impl parachains_scheduler::Config for Runtime {} - -impl parachains_initializer::Config for Runtime { - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type ForceOrigin = EnsureRoot; -} - -parameter_types! { - pub const ParaDeposit: Balance = 40 * UNITS; -} - -impl paras_registrar::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type OnSwap = (Crowdloan, Slots); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type WeightInfo = weights::runtime_common_paras_registrar::WeightInfo; -} - -parameter_types! { - // 6 weeks - pub const LeasePeriod: BlockNumber = 6 * WEEKS; -} - -impl slots::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Registrar = Registrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = weights::runtime_common_slots::WeightInfo; -} - -parameter_types! { - pub const CrowdloanId: PalletId = PalletId(*b"py/cfund"); - pub const SubmissionDeposit: Balance = 3 * GRAND; // ~ 10 KSM - pub const MinContribution: Balance = 3_000 * CENTS; // ~ .1 KSM - pub const RemoveKeysLimit: u32 = 1000; - // Allow 32 bytes for an additional memo to a crowdloan. - pub const MaxMemoLength: u8 = 32; -} - -impl crowdloan::Config for Runtime { - type Event = Event; - type PalletId = CrowdloanId; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = Registrar; - type Auctioneer = Auctions; - type MaxMemoLength = MaxMemoLength; - type WeightInfo = weights::runtime_common_crowdloan::WeightInfo; -} - -parameter_types! { - // The average auction is 7 days long, so this will be 70% for ending period. - // 5 Days = 72000 Blocks @ 6 sec per block - pub const EndingPeriod: BlockNumber = 5 * DAYS; - // ~ 1000 samples per day -> ~ 20 blocks per sample -> 2 minute samples - pub const SampleLength: BlockNumber = 2 * MINUTES; -} - -type AuctionInitiate = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective> ->; - -impl auctions::Config for Runtime { - type Event = Event; - type Leaser = Slots; - type Registrar = Registrar; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type InitiateOrigin = AuctionInitiate; - type WeightInfo = weights::runtime_common_auctions::WeightInfo; -} - -parameter_types! { - /// The location of the KSM token, from the context of this chain. Since this token is native to this - /// chain, we make it synonymous with it and thus it is the `Null` location, which means "equivalent to - /// the context". - pub const KsmLocation: MultiLocation = MultiLocation::Null; - /// The Kusama network ID. This is named. - pub const KusamaNetwork: NetworkId = NetworkId::Kusama; - /// Our XCM location ancestry - i.e. what, if anything, `Parent` means evaluated in our context. Since - /// Kusama is a top-level relay-chain, there is no ancestry. - pub const Ancestry: MultiLocation = MultiLocation::Null; - /// The check account, which holds any native assets that have been teleported out and not back in (yet). - pub CheckAccount: AccountId = XcmPallet::check_account(); -} - -/// The canonical means of converting a `MultiLocation` into an `AccountId`, used when we want to determine -/// the sovereign account controlled by a location. -pub type SovereignAccountOf = ( - // We can convert a child parachain using the standard `AccountId` conversion. - ChildParachainConvertsVia, - // We can directly alias an `AccountId32` into a local account. - AccountId32Aliases, -); - -/// Our asset transactor. This is what allows us to interest with the runtime facilities from the point of -/// view of XCM-only concepts like `MultiLocation` and `MultiAsset`. -/// -/// Ours is only aware of the Balances pallet, which is mapped to `KsmLocation`. -pub type LocalAssetTransactor = - XcmCurrencyAdapter< - // Use this currency: - Balances, - // Use this currency when it is a fungible asset matching the given location or name: - IsConcrete, - // We can convert the MultiLocations with our converter above: - SovereignAccountOf, - // Our chain's account ID type (we can't get away without mentioning it explicitly): - AccountId, - // We track our teleports in/out to keep total issuance correct. - CheckAccount, - >; - -/// The means that we convert an the XCM message origin location into a local dispatch origin. -type LocalOriginConverter = ( - // A `Signed` origin of the sovereign account that the original location controls. - SovereignSignedViaLocation, - // A child parachain, natively expressed, has the `Parachain` origin. - ChildParachainAsNative, - // The AccountId32 location type can be expressed natively as a `Signed` origin. - SignedAccountId32AsNative, - // A system child parachain, expressed as a Superuser, converts to the `Root` origin. - ChildSystemParachainAsSuperuser, -); - -parameter_types! { - /// The amount of weight an XCM operation takes. This is a safe overestimate. - pub const BaseXcmWeight: Weight = 1_000_000_000; -} - -/// The XCM router. When we want to send an XCM message, we use this type. It amalgamates all of our -/// individual routers. -pub type XcmRouter = ( - // Only one router so far - use DMP to communicate with child parachains. - xcm_sender::ChildParachainRouter, -); - -parameter_types! { - pub const KusamaForStatemint: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(1000))); -} -pub type TrustedTeleporters = ( - xcm_builder::Case, -); - -/// The barriers one of which must be passed for an XCM message to be executed. -pub type Barrier = ( - // Weight that is paid for may be consumed. - TakeWeightCredit, - // If the message is one that immediately attemps to pay for execution, then allow it. - AllowTopLevelPaidExecutionFrom>, - // Messages coming from system parachains need not pay for execution. - AllowUnpaidExecutionFrom>, -); - -pub struct XcmConfig; -impl xcm_executor::Config for XcmConfig { - type Call = Call; - type XcmSender = XcmRouter; - type AssetTransactor = LocalAssetTransactor; - type OriginConverter = LocalOriginConverter; - type IsReserve = (); - type IsTeleporter = TrustedTeleporters; - type LocationInverter = LocationInverter; - type Barrier = Barrier; - type Weigher = FixedWeightBounds; - // The weight trader piggybacks on the existing transaction-fee conversion logic. - type Trader = UsingComponents>; - type ResponseHandler = (); -} - -parameter_types! { - pub const CouncilBodyId: BodyId = BodyId::Executive; -} - -/// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location -/// of this chain. -pub type LocalOriginToLocation = ( - // We allow an origin from the Collective pallet to be used in XCM as a corresponding Plurality of the - // `Unit` body. - BackingToPlurality, CouncilBodyId>, - // And a usual Signed origin to be used in XCM as a corresponding AccountId32 - SignedToAccountId32, -); - -pub struct OnlyWithdrawTeleportForAccounts; -impl frame_support::traits::Contains<(MultiLocation, Xcm)> for OnlyWithdrawTeleportForAccounts { - fn contains((ref origin, ref msg): &(MultiLocation, Xcm)) -> bool { - use xcm::v0::{ - Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset}, - MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Plurality}, - }; - match origin { - // Root and council are are allowed to execute anything. - Null | X1(Plurality { .. }) => true, - X1(AccountId32 { .. }) => { - // An account ID trying to send a message. We ensure that it's sensible. - // This checks that it's of the form: - // WithdrawAsset { - // assets: [ ConcreteFungible { id: Null } ], - // effects: [ BuyExecution, InitiateTeleport { - // assets: All, - // dest: Parachain, - // effects: [ BuyExecution, DepositAssets { - // assets: All, - // dest: AccountId32, - // } ] - // } ] - // } - matches!(msg, WithdrawAsset { ref assets, ref effects } - if assets.len() == 1 - && matches!(assets[0], ConcreteFungible { id: Null, .. }) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], InitiateTeleport { ref assets, dest: X1(Parachain(..)), ref effects } - if assets.len() == 1 - && matches!(assets[0], All) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], DepositAsset { ref assets, dest: X1(AccountId32{..}) } - if assets.len() == 1 - && matches!(assets[0], All) - ) - ) - ) - } - // Nobody else is allowed to execute anything. - _ => false, - } - } -} - -impl pallet_xcm::Config for Runtime { - type Event = Event; - type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; - type XcmRouter = XcmRouter; - // Anyone can execute XCM messages locally... - type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin; - // ...but they must match our filter, which requires them to be a simple withdraw + teleport. - type XcmExecuteFilter = OnlyWithdrawTeleportForAccounts; - type XcmExecutor = XcmExecutor; - type XcmTeleportFilter = All<(MultiLocation, Vec)>; - type XcmReserveTransferFilter = All<(MultiLocation, Vec)>; - type Weigher = FixedWeightBounds; -} - -parameter_types! { - pub IgnoredIssuance: Balance = Treasury::pot(); - pub const QueueCount: u32 = 300; - pub const MaxQueueLen: u32 = 1000; - pub const FifoQueueLen: u32 = 250; - pub const GiltPeriod: BlockNumber = 30 * DAYS; - pub const MinFreeze: Balance = 10_000 * CENTS; - pub const IntakePeriod: BlockNumber = 5 * MINUTES; - pub const MaxIntakeBids: u32 = 100; -} - -impl pallet_gilt::Config for Runtime { - type Event = Event; - type Currency = Balances; - type CurrencyBalance = Balance; - type AdminOrigin = MoreThanHalfCouncil; - type Deficit = (); // Mint - type Surplus = (); // Burn - type IgnoredIssuance = IgnoredIssuance; - type QueueCount = QueueCount; - type MaxQueueLen = MaxQueueLen; - type FifoQueueLen = FifoQueueLen; - type Period = GiltPeriod; - type MinFreeze = MinFreeze; - type IntakePeriod = IntakePeriod; - type MaxIntakeBids = MaxIntakeBids; - type WeightInfo = weights::pallet_gilt::WeightInfo; -} - -construct_runtime! { - pub enum Runtime where - Block = Block, - NodeBlock = primitives::v1::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - // Basic stuff; balances is uncallable initially. - System: frame_system::{Pallet, Call, Storage, Config, Event} = 0, - - // Must be before session. - Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned} = 1, - - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 2, - Indices: pallet_indices::{Pallet, Call, Storage, Config, Event} = 3, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 4, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 33, - - // Consensus support. - Authorship: pallet_authorship::{Pallet, Call, Storage} = 5, - Staking: pallet_staking::{Pallet, Call, Storage, Config, Event} = 6, - Offences: pallet_offences::{Pallet, Storage, Event} = 7, - Historical: session_historical::{Pallet} = 34, - Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 8, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event, ValidateUnsigned} = 10, - ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config} = 11, - AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config} = 12, - - // Governance stuff; uncallable initially. - Democracy: pallet_democracy::{Pallet, Call, Storage, Config, Event} = 13, - Council: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 14, - TechnicalCommittee: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 15, - PhragmenElection: pallet_elections_phragmen::{Pallet, Call, Storage, Event, Config} = 16, - TechnicalMembership: pallet_membership::::{Pallet, Call, Storage, Event, Config} = 17, - Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event} = 18, - - // Claims. Usable initially. - Claims: claims::{Pallet, Call, Storage, Event, Config, ValidateUnsigned} = 19, - - // Utility module. - Utility: pallet_utility::{Pallet, Call, Event} = 24, - - // Less simple identity module. - Identity: pallet_identity::{Pallet, Call, Storage, Event} = 25, - - // Society module. - Society: pallet_society::{Pallet, Call, Storage, Event} = 26, - - // Social recovery module. - Recovery: pallet_recovery::{Pallet, Call, Storage, Event} = 27, - - // Vesting. Usable initially, but removed once all vesting is finished. - Vesting: pallet_vesting::{Pallet, Call, Storage, Event, Config} = 28, - - // System scheduler. - Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 29, - - // Proxy module. Late addition. - Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 30, - - // Multisig module. Late addition. - Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 31, - - // Bounties module. - Bounties: pallet_bounties::{Pallet, Call, Storage, Event} = 35, - - // Tips module. - Tips: pallet_tips::{Pallet, Call, Storage, Event} = 36, - - // Election pallet. Only works with staking, but placed here to maintain indices. - ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 37, - - // Gilts pallet. - Gilt: pallet_gilt::{Pallet, Call, Storage, Event, Config} = 38, - - // Parachains pallets. Start indices at 50 to leave room. - ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50, - ParachainsConfiguration: parachains_configuration::{Pallet, Call, Storage, Config} = 51, - ParasShared: parachains_shared::{Pallet, Call, Storage} = 52, - ParasInclusion: parachains_inclusion::{Pallet, Call, Storage, Event} = 53, - ParasInherent: parachains_paras_inherent::{Pallet, Call, Storage, Inherent} = 54, - ParasScheduler: parachains_scheduler::{Pallet, Call, Storage} = 55, - Paras: parachains_paras::{Pallet, Call, Storage, Event, Config} = 56, - ParasInitializer: parachains_initializer::{Pallet, Call, Storage} = 57, - ParasDmp: parachains_dmp::{Pallet, Call, Storage} = 58, - ParasUmp: parachains_ump::{Pallet, Call, Storage, Event} = 59, - ParasHrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 60, - ParasSessionInfo: parachains_session_info::{Pallet, Call, Storage} = 61, - - // Parachain Onboarding Pallets. Start indices at 70 to leave room. - Registrar: paras_registrar::{Pallet, Call, Storage, Event} = 70, - Slots: slots::{Pallet, Call, Storage, Event} = 71, - Auctions: auctions::{Pallet, Call, Storage, Event} = 72, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 73, - - // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, - } -} - -/// The address format for describing accounts. -pub type Address = sp_runtime::MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckMortality, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, -); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = frame_executive::Executive< - Runtime, - Block, - frame_system::ChainContext, - Runtime, - AllPallets, - RemoveCollectiveFlip, ->; -/// The payload being signed in the transactions. -pub type SignedPayload = generic::SignedPayload; - -pub struct RemoveCollectiveFlip; -impl frame_support::traits::OnRuntimeUpgrade for RemoveCollectiveFlip { - fn on_runtime_upgrade() -> Weight { - use frame_support::storage::migration; - // Remove the storage value `RandomMaterial` from removed pallet `RandomnessCollectiveFlip` - migration::remove_storage_prefix(b"RandomnessCollectiveFlip", b"RandomMaterial", b""); - ::DbWeight::get().writes(1) - } -} - -#[cfg(not(feature = "disable-runtime-api"))] -sp_api::impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: inherents::InherentData, - ) -> inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl tx_pool_api::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl primitives::v1::ParachainHost for Runtime { - fn validators() -> Vec { - parachains_runtime_api_impl::validators::() - } - - fn validator_groups() -> (Vec>, GroupRotationInfo) { - parachains_runtime_api_impl::validator_groups::() - } - - fn availability_cores() -> Vec> { - parachains_runtime_api_impl::availability_cores::() - } - - fn persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option> { - parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) - } - - fn check_validation_outputs( - para_id: ParaId, - outputs: primitives::v1::CandidateCommitments, - ) -> bool { - parachains_runtime_api_impl::check_validation_outputs::(para_id, outputs) - } - - fn session_index_for_child() -> SessionIndex { - parachains_runtime_api_impl::session_index_for_child::() - } - - fn validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option { - parachains_runtime_api_impl::validation_code::(para_id, assumption) - } - - fn candidate_pending_availability(para_id: ParaId) -> Option> { - parachains_runtime_api_impl::candidate_pending_availability::(para_id) - } - - fn candidate_events() -> Vec> { - parachains_runtime_api_impl::candidate_events::(|ev| { - match ev { - Event::ParasInclusion(ev) => { - Some(ev) - } - _ => None, - } - }) - } - - fn session_info(index: SessionIndex) -> Option { - parachains_runtime_api_impl::session_info::(index) - } - - fn dmq_contents(recipient: ParaId) -> Vec> { - parachains_runtime_api_impl::dmq_contents::(recipient) - } - - fn inbound_hrmp_channels_contents( - recipient: ParaId - ) -> BTreeMap>> { - parachains_runtime_api_impl::inbound_hrmp_channels_contents::(recipient) - } - - fn validation_code_by_hash(hash: ValidationCodeHash) -> Option { - parachains_runtime_api_impl::validation_code_by_hash::(hash) - } - } - - impl beefy_primitives::BeefyApi for Runtime { - fn validator_set() -> beefy_primitives::ValidatorSet { - // dummy implementation due to lack of BEEFY pallet. - beefy_primitives::ValidatorSet { validators: Vec::new(), id: 0 } - } - } - - impl mmr::MmrApi for Runtime { - fn generate_proof(_leaf_index: u64) - -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::GenerateProof) - } - - fn verify_proof(_leaf: mmr::EncodableOpaqueLeaf, _proof: mmr::Proof) - -> Result<(), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - - fn verify_proof_stateless( - _root: Hash, - _leaf: mmr::EncodableOpaqueLeaf, - _proof: mmr::Proof - ) -> Result<(), mmr::Error> { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - sp_runtime::traits::NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - authority_id: fg_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((fg_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(fg_primitives::OpaqueKeyOwnershipProof::new) - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } - - fn current_epoch_start() -> babe_primitives::Slot { - Babe::current_epoch_start() - } - - fn current_epoch() -> babe_primitives::Epoch { - Babe::current_epoch() - } - - fn next_epoch() -> babe_primitives::Epoch { - Babe::next_epoch() - } - - fn generate_key_ownership_proof( - _slot: babe_primitives::Slot, - authority_id: babe_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((babe_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(babe_primitives::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: babe_primitives::EquivocationProof<::Header>, - key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Babe::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - } - - impl authority_discovery_primitives::AuthorityDiscoveryApi for Runtime { - fn authorities() -> Vec { - parachains_runtime_api_impl::relevant_authority_ids::() - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Nonce { - System::account_nonce(account) - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - #[cfg(feature = "try-runtime")] - impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { - log::info!("try-runtime::on_runtime_upgrade kusama."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) - } - } - - #[cfg(feature = "runtime-benchmarks")] - impl frame_benchmarking::Benchmark for Runtime { - fn dispatch_benchmark( - config: frame_benchmarking::BenchmarkConfig - ) -> Result, RuntimeString> { - use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; - // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency issues. - // To get around that, we separated the Session benchmarks into its own crate, which is why - // we need these two lines below. - use pallet_session_benchmarking::Pallet as SessionBench; - use pallet_offences_benchmarking::Pallet as OffencesBench; - use frame_system_benchmarking::Pallet as SystemBench; - - impl pallet_session_benchmarking::Config for Runtime {} - impl pallet_offences_benchmarking::Config for Runtime {} - impl frame_system_benchmarking::Config for Runtime {} - - let whitelist: Vec = vec![ - // Block Number - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), - // Total Issuance - hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), - // Execution Phase - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), - // Event Count - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), - // System Events - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), - // Treasury Account - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(), - ]; - - let mut batches = Vec::::new(); - let params = (&config, &whitelist); - // Polkadot - // NOTE: Make sure to prefix these `runtime_common::` so that path resolves correctly - // in the generated file. - add_benchmark!(params, batches, runtime_common::auctions, Auctions); - add_benchmark!(params, batches, runtime_common::crowdloan, Crowdloan); - add_benchmark!(params, batches, runtime_common::claims, Claims); - add_benchmark!(params, batches, runtime_common::slots, Slots); - add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); - // Substrate - add_benchmark!(params, batches, pallet_balances, Balances); - add_benchmark!(params, batches, pallet_bounties, Bounties); - add_benchmark!(params, batches, pallet_collective, Council); - add_benchmark!(params, batches, pallet_democracy, Democracy); - add_benchmark!(params, batches, pallet_elections_phragmen, PhragmenElection); - add_benchmark!(params, batches, pallet_election_provider_multi_phase, ElectionProviderMultiPhase); - add_benchmark!(params, batches, pallet_gilt, Gilt); - add_benchmark!(params, batches, pallet_identity, Identity); - add_benchmark!(params, batches, pallet_im_online, ImOnline); - add_benchmark!(params, batches, pallet_indices, Indices); - add_benchmark!(params, batches, pallet_membership, TechnicalMembership); - add_benchmark!(params, batches, pallet_multisig, Multisig); - add_benchmark!(params, batches, pallet_offences, OffencesBench::); - add_benchmark!(params, batches, pallet_proxy, Proxy); - add_benchmark!(params, batches, pallet_scheduler, Scheduler); - add_benchmark!(params, batches, pallet_session, SessionBench::); - add_benchmark!(params, batches, pallet_staking, Staking); - add_benchmark!(params, batches, frame_system, SystemBench::); - add_benchmark!(params, batches, pallet_timestamp, Timestamp); - add_benchmark!(params, batches, pallet_tips, Tips); - add_benchmark!(params, batches, pallet_treasury, Treasury); - add_benchmark!(params, batches, pallet_utility, Utility); - add_benchmark!(params, batches, pallet_vesting, Vesting); - - if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } - Ok(batches) - } - } -} diff --git a/runtime/kusama/src/tests.rs b/runtime/kusama/src/tests.rs deleted file mode 100644 index c6423ae9ebfd..000000000000 --- a/runtime/kusama/src/tests.rs +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Tests for the Kusama Runtime Configuration - -use crate::*; -use frame_support::weights::WeightToFeePolynomial; -use sp_runtime::FixedPointNumber; -use frame_support::weights::GetDispatchInfo; -use parity_scale_codec::Encode; -use pallet_transaction_payment::Multiplier; -use separator::Separatable; - -#[test] -fn remove_keys_weight_is_sensible() { - use runtime_common::crowdloan::WeightInfo; - let max_weight = ::WeightInfo::refund(RemoveKeysLimit::get()); - // Max remove keys limit should be no more than half the total block weight. - assert!(max_weight * 2 < BlockWeights::get().max_block); -} - -#[test] -fn sample_size_is_sensible() { - use runtime_common::auctions::WeightInfo; - // Need to clean up all samples at the end of an auction. - let samples: BlockNumber = EndingPeriod::get() / SampleLength::get(); - let max_weight: Weight = RocksDbWeight::get().reads_writes(samples.into(), samples.into()); - // Max sample cleanup should be no more than half the total block weight. - assert!(max_weight * 2 < BlockWeights::get().max_block); - assert!(::WeightInfo::on_initialize() * 2 < BlockWeights::get().max_block); -} - -#[test] -fn payout_weight_portion() { - use pallet_staking::WeightInfo; - let payout_weight = - ::WeightInfo::payout_stakers_alive_staked( - MaxNominatorRewardedPerValidator::get(), - ) as f64; - let block_weight = BlockWeights::get().max_block as f64; - - println!( - "a full payout takes {:.2} of the block weight [{} / {}]", - payout_weight / block_weight, - payout_weight, - block_weight - ); - assert!(payout_weight * 2f64 < block_weight); -} - -#[test] -#[ignore] -fn block_cost() { - let max_block_weight = BlockWeights::get().max_block; - let raw_fee = WeightToFee::calc(&max_block_weight); - - println!( - "Full Block weight == {} // WeightToFee(full_block) == {} plank", - max_block_weight, - raw_fee.separated_string(), - ); -} - -#[test] -#[ignore] -fn transfer_cost_min_multiplier() { - let min_multiplier = runtime_common::MinimumMultiplier::get(); - let call = >::transfer_keep_alive(Default::default(), Default::default()); - let info = call.get_dispatch_info(); - // convert to outer call. - let call = Call::Balances(call); - let len = call.using_encoded(|e| e.len()) as u32; - - let mut ext = sp_io::TestExternalities::new_empty(); - let mut test_with_multiplier = |m| { - ext.execute_with(|| { - pallet_transaction_payment::NextFeeMultiplier::::put(m); - let fee = TransactionPayment::compute_fee(len, &info, 0); - println!( - "weight = {:?} // multiplier = {:?} // full transfer fee = {:?}", - info.weight.separated_string(), - pallet_transaction_payment::NextFeeMultiplier::::get(), - fee.separated_string(), - ); - }); - }; - - test_with_multiplier(min_multiplier); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000_000u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000_000_000u128)); -} - -#[test] -fn nominator_limit() { - use pallet_election_provider_multi_phase::WeightInfo; - // starting point of the nominators. - let all_voters: u32 = 10_000; - - // assuming we want around 5k candidates and 1k active validators. - let all_targets: u32 = 5_000; - let desired: u32 = 1_000; - let weight_with = |active| { - ::WeightInfo::submit_unsigned( - all_voters.max(active), - all_targets, - active, - desired, - ) - }; - - let mut active = 1; - while weight_with(active) <= OffchainSolutionWeightLimit::get() || active == all_voters { - active += 1; - } - - println!("can support {} nominators to yield a weight of {}", active, weight_with(active)); -} - -#[test] -fn compute_inflation_should_give_sensible_results() { - assert_eq!(pallet_staking_reward_fn::compute_inflation( - Perquintill::from_percent(75), - Perquintill::from_percent(75), - Perquintill::from_percent(5), - ), Perquintill::one()); - assert_eq!(pallet_staking_reward_fn::compute_inflation( - Perquintill::from_percent(50), - Perquintill::from_percent(75), - Perquintill::from_percent(5), - ), Perquintill::from_rational(2u64, 3u64)); - assert_eq!(pallet_staking_reward_fn::compute_inflation( - Perquintill::from_percent(80), - Perquintill::from_percent(75), - Perquintill::from_percent(5), - ), Perquintill::from_rational(1u64, 2u64)); -} - -#[test] -fn era_payout_should_give_sensible_results() { - assert_eq!(era_payout( - 75, - 100, - Perquintill::from_percent(10), - Perquintill::one(), - 0, - ), (10, 0)); - assert_eq!(era_payout( - 80, - 100, - Perquintill::from_percent(10), - Perquintill::one(), - 0, - ), (6, 4)); -} diff --git a/runtime/kusama/src/weights/frame_system.rs b/runtime/kusama/src/weights/frame_system.rs deleted file mode 100644 index e5c7f504a094..000000000000 --- a/runtime/kusama/src/weights/frame_system.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for frame_system -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=frame_system -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for frame_system. -pub struct WeightInfo(PhantomData); -impl frame_system::WeightInfo for WeightInfo { - fn remark(_b: u32, ) -> Weight { - (1_234_000 as Weight) - } - fn remark_with_event(b: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) - } - fn set_heap_pages() -> Weight { - (1_670_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_changes_trie_config() -> Weight { - (9_897_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn set_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((529_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((381_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_prefix(p: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((788_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } -} diff --git a/runtime/kusama/src/weights/mod.rs b/runtime/kusama/src/weights/mod.rs deleted file mode 100644 index a83b57bfcdf8..000000000000 --- a/runtime/kusama/src/weights/mod.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2020 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! A list of the different weight modules for our runtime. - -pub mod frame_system; -pub mod pallet_balances; -pub mod pallet_bounties; -pub mod pallet_collective; -pub mod pallet_democracy; -pub mod pallet_elections_phragmen; -pub mod pallet_election_provider_multi_phase; -pub mod pallet_gilt; -pub mod pallet_identity; -pub mod pallet_im_online; -pub mod pallet_indices; -pub mod pallet_membership; -pub mod pallet_multisig; -pub mod pallet_proxy; -pub mod pallet_scheduler; -pub mod pallet_session; -pub mod pallet_staking; -pub mod pallet_timestamp; -pub mod pallet_tips; -pub mod pallet_treasury; -pub mod pallet_utility; -pub mod pallet_vesting; -pub mod runtime_common_auctions; -pub mod runtime_common_claims; -pub mod runtime_common_crowdloan; -pub mod runtime_common_paras_registrar; -pub mod runtime_common_slots; diff --git a/runtime/kusama/src/weights/pallet_balances.rs b/runtime/kusama/src/weights/pallet_balances.rs deleted file mode 100644 index c030c3dcafee..000000000000 --- a/runtime/kusama/src/weights/pallet_balances.rs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_balances -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_balances -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_balances. -pub struct WeightInfo(PhantomData); -impl pallet_balances::WeightInfo for WeightInfo { - fn transfer() -> Weight { - (72_443_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer_keep_alive() -> Weight { - (52_788_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_creating() -> Weight { - (28_510_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_killing() -> Weight { - (34_621_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (70_962_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn transfer_all() -> Weight { - (66_162_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_bounties.rs b/runtime/kusama/src/weights/pallet_bounties.rs deleted file mode 100644 index c8d37d90a3fd..000000000000 --- a/runtime/kusama/src/weights/pallet_bounties.rs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_bounties -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_bounties -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_bounties. -pub struct WeightInfo(PhantomData); -impl pallet_bounties::WeightInfo for WeightInfo { - fn propose_bounty(d: u32, ) -> Weight { - (42_863_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn approve_bounty() -> Weight { - (11_260_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn propose_curator() -> Weight { - (8_487_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn unassign_curator() -> Weight { - (52_302_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn accept_curator() -> Weight { - (36_396_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn award_bounty() -> Weight { - (24_492_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn claim_bounty() -> Weight { - (124_315_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(5 as Weight)) - } - fn close_bounty_proposed() -> Weight { - (51_443_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_bounty_active() -> Weight { - (82_325_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn extend_bounty_expiry() -> Weight { - (23_740_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn spend_funds(b: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 12_000 - .saturating_add((59_403_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(b as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight))) - } -} diff --git a/runtime/kusama/src/weights/pallet_collective.rs b/runtime/kusama/src/weights/pallet_collective.rs deleted file mode 100644 index aeac3eaea6d5..000000000000 --- a/runtime/kusama/src/weights/pallet_collective.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_collective -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_collective -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_collective. -pub struct WeightInfo(PhantomData); -impl pallet_collective::WeightInfo for WeightInfo { - fn set_members(m: u32, n: u32, p: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 4_000 - .saturating_add((14_300_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 4_000 - .saturating_add((95_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 4_000 - .saturating_add((19_625_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(p as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } - fn execute(b: u32, m: u32, ) -> Weight { - (23_351_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((87_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn propose_execute(b: u32, m: u32, ) -> Weight { - (28_075_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((175_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - } - fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight { - (43_983_000 as Weight) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((94_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((365_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn vote(m: u32, ) -> Weight { - (32_626_000 as Weight) - // Standard Error: 0 - .saturating_add((206_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn close_early_disapproved(m: u32, p: u32, ) -> Weight { - (42_402_000 as Weight) - // Standard Error: 0 - .saturating_add((174_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((339_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight { - (62_616_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((175_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((343_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_disapproved(m: u32, p: u32, ) -> Weight { - (46_908_000 as Weight) - // Standard Error: 0 - .saturating_add((177_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((341_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_approved(b: u32, m: u32, p: u32, ) -> Weight { - (66_697_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((176_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((345_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn disapprove_proposal(p: u32, ) -> Weight { - (25_921_000 as Weight) - // Standard Error: 0 - .saturating_add((346_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_democracy.rs b/runtime/kusama/src/weights/pallet_democracy.rs deleted file mode 100644 index 56373855862e..000000000000 --- a/runtime/kusama/src/weights/pallet_democracy.rs +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_democracy -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_democracy -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_democracy. -pub struct WeightInfo(PhantomData); -impl pallet_democracy::WeightInfo for WeightInfo { - fn propose() -> Weight { - (57_057_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn second(s: u32, ) -> Weight { - (38_340_000 as Weight) - // Standard Error: 0 - .saturating_add((139_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn vote_new(r: u32, ) -> Weight { - (43_376_000 as Weight) - // Standard Error: 0 - .saturating_add((182_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn vote_existing(r: u32, ) -> Weight { - (43_661_000 as Weight) - // Standard Error: 0 - .saturating_add((173_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn emergency_cancel() -> Weight { - (28_302_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn blacklist(p: u32, ) -> Weight { - (76_895_000 as Weight) - // Standard Error: 4_000 - .saturating_add((467_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn external_propose(v: u32, ) -> Weight { - (13_005_000 as Weight) - // Standard Error: 0 - .saturating_add((84_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn external_propose_majority() -> Weight { - (2_734_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn external_propose_default() -> Weight { - (2_716_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn fast_track() -> Weight { - (27_335_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn veto_external(v: u32, ) -> Weight { - (27_918_000 as Weight) - // Standard Error: 0 - .saturating_add((119_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn cancel_proposal(p: u32, ) -> Weight { - (50_828_000 as Weight) - // Standard Error: 0 - .saturating_add((440_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn cancel_referendum() -> Weight { - (17_244_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel_queued(r: u32, ) -> Weight { - (33_078_000 as Weight) - // Standard Error: 15_000 - .saturating_add((4_660_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn on_initialize_base(r: u32, ) -> Weight { - (7_135_000 as Weight) - // Standard Error: 4_000 - .saturating_add((5_086_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - } - fn delegate(r: u32, ) -> Weight { - (53_113_000 as Weight) - // Standard Error: 5_000 - .saturating_add((7_074_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) - } - fn undelegate(r: u32, ) -> Weight { - (23_010_000 as Weight) - // Standard Error: 5_000 - .saturating_add((7_048_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) - } - fn clear_public_proposals() -> Weight { - (2_640_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn note_preimage(b: u32, ) -> Weight { - (41_512_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn note_imminent_preimage(b: u32, ) -> Weight { - (26_759_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn reap_preimage(b: u32, ) -> Weight { - (37_154_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn unlock_remove(r: u32, ) -> Weight { - (37_083_000 as Weight) - // Standard Error: 0 - .saturating_add((49_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn unlock_set(r: u32, ) -> Weight { - (34_821_000 as Weight) - // Standard Error: 0 - .saturating_add((159_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn remove_vote(r: u32, ) -> Weight { - (19_491_000 as Weight) - // Standard Error: 0 - .saturating_add((148_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_other_vote(r: u32, ) -> Weight { - (19_498_000 as Weight) - // Standard Error: 0 - .saturating_add((148_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs b/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs deleted file mode 100644 index 675578ddaa54..000000000000 --- a/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_election_provider_multi_phase -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_election_provider_multi_phase -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_election_provider_multi_phase. -pub struct WeightInfo(PhantomData); -impl pallet_election_provider_multi_phase::WeightInfo for WeightInfo { - fn on_initialize_nothing() -> Weight { - (22_984_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - } - fn on_initialize_open_signed() -> Weight { - (83_667_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_with_snapshot() -> Weight { - (83_403_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_without_snapshot() -> Weight { - (18_070_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn elect_queued() -> Weight { - (8_641_847_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 13_000 - .saturating_add((4_805_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 44_000 - .saturating_add((305_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 13_000 - .saturating_add((16_090_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 67_000 - .saturating_add((5_619_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn feasibility_check(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 8_000 - .saturating_add((4_729_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 29_000 - .saturating_add((124_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 8_000 - .saturating_add((13_511_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 44_000 - .saturating_add((4_469_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_elections_phragmen.rs b/runtime/kusama/src/weights/pallet_elections_phragmen.rs deleted file mode 100644 index df20c7b17afd..000000000000 --- a/runtime/kusama/src/weights/pallet_elections_phragmen.rs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_elections_phragmen -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 2.0.0 -//! DATE: 2020-12-09, STEPS: [50, ], REPEAT: 20, LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_elections_phragmen -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_elections_phragmen. -pub struct WeightInfo(PhantomData); -impl pallet_elections_phragmen::WeightInfo for WeightInfo { - fn vote_equal(v: u32, ) -> Weight { - (54_923_000 as Weight) - .saturating_add((324_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vote_more(v: u32, ) -> Weight { - (83_389_000 as Weight) - .saturating_add((341_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vote_less(v: u32, ) -> Weight { - (78_865_000 as Weight) - .saturating_add((343_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_voter() -> Weight { - (72_370_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn submit_candidacy(c: u32, ) -> Weight { - (68_455_000 as Weight) - .saturating_add((370_000 as Weight).saturating_mul(c as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn renounce_candidacy_candidate(c: u32, ) -> Weight { - (54_009_000 as Weight) - .saturating_add((200_000 as Weight).saturating_mul(c as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn renounce_candidacy_members() -> Weight { - (84_797_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn renounce_candidacy_runners_up() -> Weight { - (59_095_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_member_with_replacement() -> Weight { - (132_820_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(5 as Weight)) - } - fn remove_member_wrong_refund() -> Weight { - (8_551_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn clean_defunct_voters(v: u32, _d: u32, ) -> Weight { - (0 as Weight) - .saturating_add((151_754_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) - } - fn election_phragmen(c: u32, v: u32, e: u32, ) -> Weight { - (0 as Weight) - .saturating_add((134_602_000 as Weight).saturating_mul(c as Weight)) - .saturating_add((111_037_000 as Weight).saturating_mul(v as Weight)) - .saturating_add((7_150_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) - } -} diff --git a/runtime/kusama/src/weights/pallet_gilt.rs b/runtime/kusama/src/weights/pallet_gilt.rs deleted file mode 100644 index 969957f64f20..000000000000 --- a/runtime/kusama/src/weights/pallet_gilt.rs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_gilt -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_gilt -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_gilt. -pub struct WeightInfo(PhantomData); -impl pallet_gilt::WeightInfo for WeightInfo { - fn place_bid(l: u32, ) -> Weight { - (51_257_000 as Weight) - // Standard Error: 0 - .saturating_add((171_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn place_bid_max() -> Weight { - (196_161_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn retract_bid(l: u32, ) -> Weight { - (51_317_000 as Weight) - // Standard Error: 0 - .saturating_add((144_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn set_target() -> Weight { - (5_785_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn thaw() -> Weight { - (68_092_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn pursue_target_noop() -> Weight { - (3_242_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn pursue_target_per_item(b: u32, ) -> Weight { - (52_205_000 as Weight) - // Standard Error: 1_000 - .saturating_add((9_944_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight))) - } - fn pursue_target_per_queue(q: u32, ) -> Weight { - (16_887_000 as Weight) - // Standard Error: 6_000 - .saturating_add((16_321_000 as Weight).saturating_mul(q as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(q as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(q as Weight))) - } -} diff --git a/runtime/kusama/src/weights/pallet_identity.rs b/runtime/kusama/src/weights/pallet_identity.rs deleted file mode 100644 index 8d93e14be4c7..000000000000 --- a/runtime/kusama/src/weights/pallet_identity.rs +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_identity -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_identity -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_identity. -pub struct WeightInfo(PhantomData); -impl pallet_identity::WeightInfo for WeightInfo { - fn add_registrar(r: u32, ) -> Weight { - (21_467_000 as Weight) - // Standard Error: 2_000 - .saturating_add((200_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_identity(r: u32, x: u32, ) -> Weight { - (52_103_000 as Weight) - // Standard Error: 15_000 - .saturating_add((201_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((932_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_subs_new(s: u32, ) -> Weight { - (40_048_000 as Weight) - // Standard Error: 1_000 - .saturating_add((6_295_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn set_subs_old(p: u32, ) -> Weight { - (40_539_000 as Weight) - // Standard Error: 0 - .saturating_add((1_996_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } - fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight { - (49_774_000 as Weight) - // Standard Error: 5_000 - .saturating_add((139_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_985_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((602_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn request_judgement(r: u32, x: u32, ) -> Weight { - (53_847_000 as Weight) - // Standard Error: 4_000 - .saturating_add((235_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_156_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel_request(r: u32, x: u32, ) -> Weight { - (49_428_000 as Weight) - // Standard Error: 6_000 - .saturating_add((147_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_142_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fee(r: u32, ) -> Weight { - (7_739_000 as Weight) - // Standard Error: 1_000 - .saturating_add((168_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_account_id(r: u32, ) -> Weight { - (8_326_000 as Weight) - // Standard Error: 0 - .saturating_add((175_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fields(r: u32, ) -> Weight { - (7_725_000 as Weight) - // Standard Error: 1_000 - .saturating_add((170_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn provide_judgement(r: u32, x: u32, ) -> Weight { - (35_272_000 as Weight) - // Standard Error: 4_000 - .saturating_add((188_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_147_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight { - (63_036_000 as Weight) - // Standard Error: 5_000 - .saturating_add((88_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_987_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((10_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn add_sub(s: u32, ) -> Weight { - (53_817_000 as Weight) - // Standard Error: 0 - .saturating_add((145_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn rename_sub(s: u32, ) -> Weight { - (16_130_000 as Weight) - // Standard Error: 0 - .saturating_add((21_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_sub(s: u32, ) -> Weight { - (54_744_000 as Weight) - // Standard Error: 0 - .saturating_add((127_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn quit_sub(s: u32, ) -> Weight { - (33_675_000 as Weight) - // Standard Error: 0 - .saturating_add((123_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_im_online.rs b/runtime/kusama/src/weights/pallet_im_online.rs deleted file mode 100644 index f226108c7287..000000000000 --- a/runtime/kusama/src/weights/pallet_im_online.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_im_online -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_im_online -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_im_online. -pub struct WeightInfo(PhantomData); -impl pallet_im_online::WeightInfo for WeightInfo { - fn validate_unsigned_and_then_heartbeat(k: u32, e: u32, ) -> Weight { - (87_465_000 as Weight) - // Standard Error: 0 - .saturating_add((169_000 as Weight).saturating_mul(k as Weight)) - // Standard Error: 1_000 - .saturating_add((335_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_indices.rs b/runtime/kusama/src/weights/pallet_indices.rs deleted file mode 100644 index d37264f7facd..000000000000 --- a/runtime/kusama/src/weights/pallet_indices.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_indices -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_indices -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_indices. -pub struct WeightInfo(PhantomData); -impl pallet_indices::WeightInfo for WeightInfo { - fn claim() -> Weight { - (39_903_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer() -> Weight { - (48_162_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn free() -> Weight { - (39_958_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (40_459_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn freeze() -> Weight { - (37_761_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_membership.rs b/runtime/kusama/src/weights/pallet_membership.rs deleted file mode 100644 index 7878243a203b..000000000000 --- a/runtime/kusama/src/weights/pallet_membership.rs +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_membership -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_membership -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_membership. -pub struct WeightInfo(PhantomData); -impl pallet_membership::WeightInfo for WeightInfo { - fn add_member(m: u32, ) -> Weight { - (23_510_000 as Weight) - // Standard Error: 1_000 - .saturating_add((126_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn remove_member(m: u32, ) -> Weight { - (28_576_000 as Weight) - // Standard Error: 0 - .saturating_add((102_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn swap_member(m: u32, ) -> Weight { - (28_826_000 as Weight) - // Standard Error: 0 - .saturating_add((117_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn reset_member(m: u32, ) -> Weight { - (29_556_000 as Weight) - // Standard Error: 0 - .saturating_add((271_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn change_key(m: u32, ) -> Weight { - (30_300_000 as Weight) - // Standard Error: 0 - .saturating_add((113_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn set_prime(m: u32, ) -> Weight { - (7_436_000 as Weight) - // Standard Error: 0 - .saturating_add((84_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn clear_prime(m: u32, ) -> Weight { - (2_947_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_multisig.rs b/runtime/kusama/src/weights/pallet_multisig.rs deleted file mode 100644 index 2d05d2d877dd..000000000000 --- a/runtime/kusama/src/weights/pallet_multisig.rs +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_multisig -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_multisig -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_multisig. -pub struct WeightInfo(PhantomData); -impl pallet_multisig::WeightInfo for WeightInfo { - fn as_multi_threshold_1(_z: u32, ) -> Weight { - (10_273_000 as Weight) - } - fn as_multi_create(s: u32, z: u32, ) -> Weight { - (50_795_000 as Weight) - // Standard Error: 0 - .saturating_add((85_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (56_223_000 as Weight) - // Standard Error: 0 - .saturating_add((91_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (29_190_000 as Weight) - // Standard Error: 0 - .saturating_add((86_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (53_138_000 as Weight) - // Standard Error: 0 - .saturating_add((98_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (73_267_000 as Weight) - // Standard Error: 2_000 - .saturating_add((195_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn approve_as_multi_create(s: u32, ) -> Weight { - (50_201_000 as Weight) - // Standard Error: 0 - .saturating_add((83_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_approve(s: u32, ) -> Weight { - (28_525_000 as Weight) - // Standard Error: 0 - .saturating_add((88_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_complete(s: u32, ) -> Weight { - (120_751_000 as Weight) - // Standard Error: 0 - .saturating_add((196_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn cancel_as_multi(s: u32, ) -> Weight { - (86_776_000 as Weight) - // Standard Error: 0 - .saturating_add((86_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_proxy.rs b/runtime/kusama/src/weights/pallet_proxy.rs deleted file mode 100644 index 195a8613a601..000000000000 --- a/runtime/kusama/src/weights/pallet_proxy.rs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_proxy -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_proxy -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_proxy. -pub struct WeightInfo(PhantomData); -impl pallet_proxy::WeightInfo for WeightInfo { - fn proxy(p: u32, ) -> Weight { - (24_270_000 as Weight) - // Standard Error: 1_000 - .saturating_add((130_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn proxy_announced(a: u32, p: u32, ) -> Weight { - (54_046_000 as Weight) - // Standard Error: 1_000 - .saturating_add((503_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((107_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_announcement(a: u32, _p: u32, ) -> Weight { - (36_894_000 as Weight) - // Standard Error: 1_000 - .saturating_add((489_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn reject_announcement(a: u32, _p: u32, ) -> Weight { - (36_533_000 as Weight) - // Standard Error: 1_000 - .saturating_add((497_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn announce(a: u32, p: u32, ) -> Weight { - (49_934_000 as Weight) - // Standard Error: 1_000 - .saturating_add((495_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((111_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn add_proxy(p: u32, ) -> Weight { - (34_641_000 as Weight) - // Standard Error: 1_000 - .saturating_add((190_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxy(p: u32, ) -> Weight { - (34_496_000 as Weight) - // Standard Error: 2_000 - .saturating_add((213_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxies(p: u32, ) -> Weight { - (33_022_000 as Weight) - // Standard Error: 1_000 - .saturating_add((139_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn anonymous(p: u32, ) -> Weight { - (47_629_000 as Weight) - // Standard Error: 1_000 - .saturating_add((33_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_anonymous(p: u32, ) -> Weight { - (34_875_000 as Weight) - // Standard Error: 1_000 - .saturating_add((135_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_scheduler.rs b/runtime/kusama/src/weights/pallet_scheduler.rs deleted file mode 100644 index 4b00baa217fd..000000000000 --- a/runtime/kusama/src/weights/pallet_scheduler.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_scheduler -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_scheduler -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_scheduler. -pub struct WeightInfo(PhantomData); -impl pallet_scheduler::WeightInfo for WeightInfo { - fn schedule(s: u32, ) -> Weight { - (28_189_000 as Weight) - // Standard Error: 0 - .saturating_add((42_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel(s: u32, ) -> Weight { - (27_165_000 as Weight) - // Standard Error: 14_000 - .saturating_add((4_332_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn schedule_named(s: u32, ) -> Weight { - (33_852_000 as Weight) - // Standard Error: 1_000 - .saturating_add((62_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn cancel_named(s: u32, ) -> Weight { - (29_352_000 as Weight) - // Standard Error: 14_000 - .saturating_add((4_346_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_session.rs b/runtime/kusama/src/weights/pallet_session.rs deleted file mode 100644 index 92bbfe9443ad..000000000000 --- a/runtime/kusama/src/weights/pallet_session.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_session -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_session -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_session. -pub struct WeightInfo(PhantomData); -impl pallet_session::WeightInfo for WeightInfo { - fn set_keys() -> Weight { - (70_343_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } - fn purge_keys() -> Weight { - (40_249_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_staking.rs b/runtime/kusama/src/weights/pallet_staking.rs deleted file mode 100644 index 068f6953f7cb..000000000000 --- a/runtime/kusama/src/weights/pallet_staking.rs +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_staking -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_staking -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_staking. -pub struct WeightInfo(PhantomData); -impl pallet_staking::WeightInfo for WeightInfo { - fn bond() -> Weight { - (68_483_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn bond_extra() -> Weight { - (52_724_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn unbond() -> Weight { - (56_614_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_update(s: u32, ) -> Weight { - (48_650_000 as Weight) - // Standard Error: 0 - .saturating_add((28_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_kill(s: u32, ) -> Weight { - (79_902_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_200_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn validate() -> Weight { - (29_119_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn kick(k: u32, ) -> Weight { - (10_981_000 as Weight) - // Standard Error: 6_000 - .saturating_add((17_518_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) - } - fn nominate(n: u32, ) -> Weight { - (35_585_000 as Weight) - // Standard Error: 6_000 - .saturating_add((5_106_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn chill() -> Weight { - (16_193_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - } - fn set_payee() -> Weight { - (10_861_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_controller() -> Weight { - (23_628_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_validator_count() -> Weight { - (2_081_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_no_eras() -> Weight { - (2_358_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era() -> Weight { - (2_338_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era_always() -> Weight { - (2_312_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_invulnerables(v: u32, ) -> Weight { - (2_285_000 as Weight) - // Standard Error: 0 - .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_unstake(s: u32, ) -> Weight { - (55_848_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_197_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn cancel_deferred_slash(s: u32, ) -> Weight { - (3_386_960_000 as Weight) - // Standard Error: 221_000 - .saturating_add((19_794_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn payout_stakers_dead_controller(n: u32, ) -> Weight { - (109_960_000 as Weight) - // Standard Error: 16_000 - .saturating_add((47_064_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) - } - fn payout_stakers_alive_staked(n: u32, ) -> Weight { - (145_438_000 as Weight) - // Standard Error: 24_000 - .saturating_add((59_384_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) - } - fn rebond(l: u32, ) -> Weight { - (45_646_000 as Weight) - // Standard Error: 1_000 - .saturating_add((72_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_history_depth(e: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 70_000 - .saturating_add((32_189_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) - } - fn reap_stash(s: u32, ) -> Weight { - (66_554_000 as Weight) - // Standard Error: 0 - .saturating_add((2_198_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn new_era(v: u32, n: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 749_000 - .saturating_add((299_115_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 37_000 - .saturating_add((46_619_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) - } - fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 97_000 - .saturating_add((24_261_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 97_000 - .saturating_add((27_765_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_310_000 - .saturating_add((22_891_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - } - fn get_npos_targets(v: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 31_000 - .saturating_add((10_297_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) - } - fn update_staking_limits() -> Weight { - (4_799_000 as Weight) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn chill_other() -> Weight { - (31_294_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_timestamp.rs b/runtime/kusama/src/weights/pallet_timestamp.rs deleted file mode 100644 index 094e394eb420..000000000000 --- a/runtime/kusama/src/weights/pallet_timestamp.rs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_timestamp -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_timestamp -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_timestamp. -pub struct WeightInfo(PhantomData); -impl pallet_timestamp::WeightInfo for WeightInfo { - fn set() -> Weight { - (10_330_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_finalize() -> Weight { - (4_458_000 as Weight) - } -} diff --git a/runtime/kusama/src/weights/pallet_tips.rs b/runtime/kusama/src/weights/pallet_tips.rs deleted file mode 100644 index 370c01ef395d..000000000000 --- a/runtime/kusama/src/weights/pallet_tips.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_tips -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_tips -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_tips. -pub struct WeightInfo(PhantomData); -impl pallet_tips::WeightInfo for WeightInfo { - fn report_awesome(r: u32, ) -> Weight { - (50_649_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn retract_tip() -> Weight { - (45_588_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn tip_new(r: u32, t: u32, ) -> Weight { - (29_606_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((124_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn tip(t: u32, ) -> Weight { - (18_751_000 as Weight) - // Standard Error: 0 - .saturating_add((567_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn close_tip(t: u32, ) -> Weight { - (81_517_000 as Weight) - // Standard Error: 0 - .saturating_add((318_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn slash_tip(t: u32, ) -> Weight { - (24_467_000 as Weight) - // Standard Error: 0 - .saturating_add((7_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_treasury.rs b/runtime/kusama/src/weights/pallet_treasury.rs deleted file mode 100644 index 24c2c1c36a0e..000000000000 --- a/runtime/kusama/src/weights/pallet_treasury.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_treasury -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_treasury -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_treasury. -pub struct WeightInfo(PhantomData); -impl pallet_treasury::WeightInfo for WeightInfo { - fn propose_spend() -> Weight { - (40_599_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn reject_proposal() -> Weight { - (49_321_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn approve_proposal(p: u32, ) -> Weight { - (12_230_000 as Weight) - // Standard Error: 0 - .saturating_add((34_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_initialize_proposals(p: u32, ) -> Weight { - (75_382_000 as Weight) - // Standard Error: 16_000 - .saturating_add((59_314_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(p as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(p as Weight))) - } -} diff --git a/runtime/kusama/src/weights/pallet_utility.rs b/runtime/kusama/src/weights/pallet_utility.rs deleted file mode 100644 index 02dda1721835..000000000000 --- a/runtime/kusama/src/weights/pallet_utility.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_utility -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_utility -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_utility. -pub struct WeightInfo(PhantomData); -impl pallet_utility::WeightInfo for WeightInfo { - fn batch(c: u32, ) -> Weight { - (14_911_000 as Weight) - // Standard Error: 0 - .saturating_add((2_456_000 as Weight).saturating_mul(c as Weight)) - } - fn as_derivative() -> Weight { - (5_087_000 as Weight) - } - fn batch_all(c: u32, ) -> Weight { - (16_211_000 as Weight) - // Standard Error: 0 - .saturating_add((3_296_000 as Weight).saturating_mul(c as Weight)) - } -} diff --git a/runtime/kusama/src/weights/pallet_vesting.rs b/runtime/kusama/src/weights/pallet_vesting.rs deleted file mode 100644 index acf043b67e20..000000000000 --- a/runtime/kusama/src/weights/pallet_vesting.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_vesting -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-19, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_vesting -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_vesting. -pub struct WeightInfo(PhantomData); -impl pallet_vesting::WeightInfo for WeightInfo { - fn vest_locked(l: u32, ) -> Weight { - (41_675_000 as Weight) - // Standard Error: 7_000 - .saturating_add((159_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn vest_unlocked(l: u32, ) -> Weight { - (44_454_000 as Weight) - // Standard Error: 4_000 - .saturating_add((129_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_locked(l: u32, ) -> Weight { - (41_313_000 as Weight) - // Standard Error: 7_000 - .saturating_add((161_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_unlocked(l: u32, ) -> Weight { - (44_088_000 as Weight) - // Standard Error: 4_000 - .saturating_add((131_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn vested_transfer(l: u32, ) -> Weight { - (95_360_000 as Weight) - // Standard Error: 6_000 - .saturating_add((152_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn force_vested_transfer(l: u32, ) -> Weight { - (94_577_000 as Weight) - // Standard Error: 6_000 - .saturating_add((149_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/runtime_common_auctions.rs b/runtime/kusama/src/weights/runtime_common_auctions.rs deleted file mode 100644 index f33b909ae1d2..000000000000 --- a/runtime/kusama/src/weights/runtime_common_auctions.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::auctions -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-24, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::auctions -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/runtime_common_auctions.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::auctions. -pub struct WeightInfo(PhantomData); -impl runtime_common::auctions::WeightInfo for WeightInfo { - fn new_auction() -> Weight { - (29_554_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn bid() -> Weight { - (154_464_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize() -> Weight { - (33_239_172_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3688 as Weight)) - .saturating_add(T::DbWeight::get().writes(3683 as Weight)) - } - fn cancel_auction() -> Weight { - (7_021_314_000 as Weight) - .saturating_add(T::DbWeight::get().reads(73 as Weight)) - .saturating_add(T::DbWeight::get().writes(3673 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/runtime_common_claims.rs b/runtime/kusama/src/weights/runtime_common_claims.rs deleted file mode 100644 index 0277b96f3f9e..000000000000 --- a/runtime/kusama/src/weights/runtime_common_claims.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::claims -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::claims -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::claims. -pub struct WeightInfo(PhantomData); -impl runtime_common::claims::WeightInfo for WeightInfo { - fn claim() -> Weight { - (443_398_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn mint_claim() -> Weight { - (12_397_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn claim_attest() -> Weight { - (444_202_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn attest() -> Weight { - (130_109_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } - fn move_claim() -> Weight { - (27_762_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/runtime_common_crowdloan.rs b/runtime/kusama/src/weights/runtime_common_crowdloan.rs deleted file mode 100644 index 0f4382bb1a16..000000000000 --- a/runtime/kusama/src/weights/runtime_common_crowdloan.rs +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::crowdloan -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-24, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::crowdloan -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/runtime_common_crowdloan.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::crowdloan. -pub struct WeightInfo(PhantomData); -impl runtime_common::crowdloan::WeightInfo for WeightInfo { - fn create() -> Weight { - (93_538_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn contribute() -> Weight { - (581_495_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn withdraw() -> Weight { - (127_588_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn refund(k: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 52_000 - .saturating_add((56_719_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(k as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(k as Weight))) - } - fn dissolve() -> Weight { - (68_758_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn edit() -> Weight { - (42_049_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn add_memo() -> Weight { - (65_306_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn poke() -> Weight { - (51_610_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_initialize(n: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 32_000 - .saturating_add((131_978_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) - } -} diff --git a/runtime/kusama/src/weights/runtime_common_paras_registrar.rs b/runtime/kusama/src/weights/runtime_common_paras_registrar.rs deleted file mode 100644 index a10b1215f48f..000000000000 --- a/runtime/kusama/src/weights/runtime_common_paras_registrar.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::paras_registrar -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-21, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::paras_registrar -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/runtime_common_paras_registrar.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::paras_registrar. -pub struct WeightInfo(PhantomData); -impl runtime_common::paras_registrar::WeightInfo for WeightInfo { - fn reserve() -> Weight { - (59_279_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn register() -> Weight { - (4_148_907_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn force_register() -> Weight { - (4_144_844_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn deregister() -> Weight { - (90_495_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn swap() -> Weight { - (80_604_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) - } -} diff --git a/runtime/kusama/src/weights/runtime_common_slots.rs b/runtime/kusama/src/weights/runtime_common_slots.rs deleted file mode 100644 index 0762ded1a116..000000000000 --- a/runtime/kusama/src/weights/runtime_common_slots.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::slots -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-25, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=kusama-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::slots -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/kusama/src/weights/runtime_common_slots.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::slots. -pub struct WeightInfo(PhantomData); -impl runtime_common::slots::WeightInfo for WeightInfo { - fn force_lease() -> Weight { - (54_624_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn manage_lease_period_start(c: u32, t: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 36_000 - .saturating_add((19_526_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 36_000 - .saturating_add((42_887_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(t as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(t as Weight))) - } - fn clear_all_leases() -> Weight { - (230_377_000 as Weight) - .saturating_add(T::DbWeight::get().reads(9 as Weight)) - .saturating_add(T::DbWeight::get().writes(9 as Weight)) - } - fn trigger_onboard() -> Weight { - (45_884_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } -} diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml deleted file mode 100644 index 12989b60ab08..000000000000 --- a/runtime/parachains/Cargo.toml +++ /dev/null @@ -1,105 +0,0 @@ -[package] -name = "polkadot-runtime-parachains" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.14", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", features = [ "derive" ], optional = true } -derive_more = "0.99.14" - -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } - -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } - -xcm = { package = "xcm", path = "../../xcm", default-features = false } -xcm-executor = { package = "xcm-executor", path = "../../xcm/xcm-executor", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -libsecp256k1 = { version = "0.3.5", default-features = false, optional = true } - -rand = { version = "0.8.3", default-features = false } -rand_chacha = { version = "0.3.1", default-features = false } - -[dev-dependencies] -futures = "0.3.15" -hex-literal = "0.3.1" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support-test = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.61" -libsecp256k1 = "0.3.5" -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } - - -[features] -default = ["std"] -no_std = [] -std = [ - "bitvec/std", - "parity-scale-codec/std", - "rustc-hex/std", - "serde", - "primitives/std", - "inherents/std", - "sp-core/std", - "sp-api/std", - "sp-keystore", - "sp-std/std", - "sp-io/std", - "frame-support/std", - "sp-runtime/std", - "sp-session/std", - "sp-staking/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-session/std", - "pallet-staking/std", - "pallet-timestamp/std", - "pallet-vesting/std", - "frame-system/std", - "xcm/std", - "xcm-executor/std", - "log/std", -] -runtime-benchmarks = [ - "libsecp256k1/hmac", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", -] -try-runtime = [ - "frame-support/try-runtime", - "pallet-authorship/try-runtime", - "pallet-balances/try-runtime", - "pallet-session/try-runtime", - "pallet-staking/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-vesting/try-runtime", -] diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs deleted file mode 100644 index 5b500b9d0ded..000000000000 --- a/runtime/parachains/src/configuration.rs +++ /dev/null @@ -1,1029 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Configuration manager for the Polkadot runtime parachains logic. -//! -//! Configuration can change only at session boundaries and is buffered until then. - -use sp_std::prelude::*; -use primitives::v1::{Balance, SessionIndex, MAX_CODE_SIZE, MAX_POV_SIZE}; -use frame_support::{ - decl_storage, decl_module, decl_error, - ensure, - dispatch::DispatchResult, - weights::{DispatchClass, Weight}, -}; -use parity_scale_codec::{Encode, Decode}; -use frame_system::ensure_root; -use sp_runtime::traits::Zero; -use crate::shared; - -/// All configuration of the runtime with respect to parachains and parathreads. -#[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug)] -#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] -pub struct HostConfiguration { - // NOTE: This structure is used by parachains via merkle proofs. Therefore, this struct requires - // special treatment. - // - // A parachain requested this struct can only depend on the subset of this struct. Specifically, - // only a first few fields can be depended upon. These fields cannot be changed without - // corresponding migration of the parachains. - - /** - * The parameters that are required for the parachains. - */ - - /// The maximum validation code size, in bytes. - pub max_code_size: u32, - /// The maximum head-data size, in bytes. - pub max_head_data_size: u32, - /// Total number of individual messages allowed in the parachain -> relay-chain message queue. - pub max_upward_queue_count: u32, - /// Total size of messages allowed in the parachain -> relay-chain message queue before which - /// no further messages may be added to it. If it exceeds this then the queue may contain only - /// a single message. - pub max_upward_queue_size: u32, - /// The maximum size of an upward message that can be sent by a candidate. - /// - /// This parameter affects the size upper bound of the `CandidateCommitments`. - pub max_upward_message_size: u32, - /// The maximum number of messages that a candidate can contain. - /// - /// This parameter affects the size upper bound of the `CandidateCommitments`. - pub max_upward_message_num_per_candidate: u32, - /// The maximum number of outbound HRMP messages can be sent by a candidate. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub hrmp_max_message_num_per_candidate: u32, - /// The minimum frequency at which parachains can update their validation code. - pub validation_upgrade_frequency: BlockNumber, - /// The delay, in blocks, before a validation upgrade is applied. - pub validation_upgrade_delay: BlockNumber, - - /** - * The parameters that are not essential, but still may be of interest for parachains. - */ - - /// The maximum POV block size, in bytes. - pub max_pov_size: u32, - /// The maximum size of a message that can be put in a downward message queue. - /// - /// Since we require receiving at least one DMP message the obvious upper bound of the size is - /// the PoV size. Of course, there is a lot of other different things that a parachain may - /// decide to do with its PoV so this value in practice will be picked as a fraction of the PoV - /// size. - pub max_downward_message_size: u32, - /// The amount of weight we wish to devote to the processing the dispatchable upward messages - /// stage. - /// - /// NOTE that this is a soft limit and could be exceeded. - pub ump_service_total_weight: Weight, - /// The maximum number of outbound HRMP channels a parachain is allowed to open. - pub hrmp_max_parachain_outbound_channels: u32, - /// The maximum number of outbound HRMP channels a parathread is allowed to open. - pub hrmp_max_parathread_outbound_channels: u32, - /// Number of sessions after which an HRMP open channel request expires. - pub hrmp_open_request_ttl: u32, - /// The deposit that the sender should provide for opening an HRMP channel. - pub hrmp_sender_deposit: Balance, - /// The deposit that the recipient should provide for accepting opening an HRMP channel. - pub hrmp_recipient_deposit: Balance, - /// The maximum number of messages allowed in an HRMP channel at once. - pub hrmp_channel_max_capacity: u32, - /// The maximum total size of messages in bytes allowed in an HRMP channel at once. - pub hrmp_channel_max_total_size: u32, - /// The maximum number of inbound HRMP channels a parachain is allowed to accept. - pub hrmp_max_parachain_inbound_channels: u32, - /// The maximum number of inbound HRMP channels a parathread is allowed to accept. - pub hrmp_max_parathread_inbound_channels: u32, - /// The maximum size of a message that could ever be put into an HRMP channel. - /// - /// This parameter affects the upper bound of size of `CandidateCommitments`. - pub hrmp_channel_max_message_size: u32, - - /** - * Parameters that will unlikely be needed by parachains. - */ - - /// How long to keep code on-chain, in blocks. This should be sufficiently long that disputes - /// have concluded. - pub code_retention_period: BlockNumber, - /// The amount of execution cores to dedicate to parathread execution. - pub parathread_cores: u32, - /// The number of retries that a parathread author has to submit their block. - pub parathread_retries: u32, - /// How often parachain groups should be rotated across parachains. - /// - /// Must be non-zero. - pub group_rotation_frequency: BlockNumber, - /// The availability period, in blocks, for parachains. This is the amount of blocks - /// after inclusion that validators have to make the block available and signal its availability to - /// the chain. - /// - /// Must be at least 1. - pub chain_availability_period: BlockNumber, - /// The availability period, in blocks, for parathreads. Same as the `chain_availability_period`, - /// but a differing timeout due to differing requirements. - /// - /// Must be at least 1. - pub thread_availability_period: BlockNumber, - /// The amount of blocks ahead to schedule parachains and parathreads. - pub scheduling_lookahead: u32, - /// The maximum number of validators to have per core. - /// - /// `None` means no maximum. - pub max_validators_per_core: Option, - /// The maximum number of valdiators to use for parachain consensus, period. - /// - /// `None` means no maximum. - pub max_validators: Option, - /// The amount of sessions to keep for disputes. - pub dispute_period: SessionIndex, - /// How long after dispute conclusion to accept statements. - pub dispute_post_conclusion_acceptance_period: BlockNumber, - /// The maximum number of dispute spam slots - pub dispute_max_spam_slots: u32, - /// How long it takes for a dispute to conclude by time-out, if no supermajority is reached. - pub dispute_conclusion_by_time_out_period: BlockNumber, - /// The amount of consensus slots that must pass between submitting an assignment and - /// submitting an approval vote before a validator is considered a no-show. - /// - /// Must be at least 1. - pub no_show_slots: u32, - /// The number of delay tranches in total. - pub n_delay_tranches: u32, - /// The width of the zeroth delay tranche for approval assignments. This many delay tranches - /// beyond 0 are all consolidated to form a wide 0 tranche. - pub zeroth_delay_tranche_width: u32, - /// The number of validators needed to approve a block. - pub needed_approvals: u32, - /// The number of samples to do of the RelayVRFModulo approval assignment criterion. - pub relay_vrf_modulo_samples: u32, -} - -impl> Default for HostConfiguration { - fn default() -> Self { - Self { - group_rotation_frequency: 1u32.into(), - chain_availability_period: 1u32.into(), - thread_availability_period: 1u32.into(), - no_show_slots: 1u32.into(), - validation_upgrade_frequency: Default::default(), - validation_upgrade_delay: Default::default(), - code_retention_period: Default::default(), - max_code_size: Default::default(), - max_pov_size: Default::default(), - max_head_data_size: Default::default(), - parathread_cores: Default::default(), - parathread_retries: Default::default(), - scheduling_lookahead: Default::default(), - max_validators_per_core: Default::default(), - max_validators: None, - dispute_period: 6, - dispute_post_conclusion_acceptance_period: 100.into(), - dispute_max_spam_slots: 2, - dispute_conclusion_by_time_out_period: 200.into(), - n_delay_tranches: Default::default(), - zeroth_delay_tranche_width: Default::default(), - needed_approvals: Default::default(), - relay_vrf_modulo_samples: Default::default(), - max_upward_queue_count: Default::default(), - max_upward_queue_size: Default::default(), - max_downward_message_size: Default::default(), - ump_service_total_weight: Default::default(), - max_upward_message_size: Default::default(), - max_upward_message_num_per_candidate: Default::default(), - hrmp_open_request_ttl: Default::default(), - hrmp_sender_deposit: Default::default(), - hrmp_recipient_deposit: Default::default(), - hrmp_channel_max_capacity: Default::default(), - hrmp_channel_max_total_size: Default::default(), - hrmp_max_parachain_inbound_channels: Default::default(), - hrmp_max_parathread_inbound_channels: Default::default(), - hrmp_channel_max_message_size: Default::default(), - hrmp_max_parachain_outbound_channels: Default::default(), - hrmp_max_parathread_outbound_channels: Default::default(), - hrmp_max_message_num_per_candidate: Default::default(), - } - } -} - -impl HostConfiguration { - /// Checks that this instance is consistent with the requirements on each individual member. - /// - /// # Panic - /// - /// This function panics if any member is not set properly. - pub fn check_consistency(&self) { - if self.group_rotation_frequency.is_zero() { - panic!("`group_rotation_frequency` must be non-zero!") - } - - if self.chain_availability_period.is_zero() { - panic!("`chain_availability_period` must be at least 1!") - } - - if self.thread_availability_period.is_zero() { - panic!("`thread_availability_period` must be at least 1!") - } - - if self.no_show_slots.is_zero() { - panic!("`no_show_slots` must be at least 1!") - } - - if self.max_code_size > MAX_CODE_SIZE { - panic!( - "`max_code_size` ({}) is bigger than allowed by the client ({})", - self.max_code_size, - MAX_CODE_SIZE, - ) - } - - if self.max_pov_size > MAX_POV_SIZE { - panic!("`max_pov_size` is bigger than allowed by the client") - } - } -} - -pub trait Config: frame_system::Config + shared::Config { } - -decl_storage! { - trait Store for Module as Configuration { - /// The active configuration for the current session. - ActiveConfig get(fn config) config(): HostConfiguration; - /// Pending configuration (if any) for the next session. - PendingConfig: map hasher(twox_64_concat) SessionIndex => Option>; - } - add_extra_genesis { - build(|config: &Self| { - config.config.check_consistency(); - }) - } -} - -decl_error! { - pub enum Error for Module { - /// The new value for a configuration parameter is invalid. - InvalidNewValue, - } -} - -decl_module! { - /// The parachains configuration module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - /// Set the validation upgrade frequency. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_validation_upgrade_frequency(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.validation_upgrade_frequency, new) != new - }); - Ok(()) - } - - /// Set the validation upgrade delay. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_validation_upgrade_delay(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.validation_upgrade_delay, new) != new - }); - Ok(()) - } - - /// Set the acceptance period for an included candidate. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_code_retention_period(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.code_retention_period, new) != new - }); - Ok(()) - } - - /// Set the max validation code size for incoming upgrades. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_code_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - ensure!(new <= MAX_CODE_SIZE, Error::::InvalidNewValue); - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_code_size, new) != new - }); - Ok(()) - } - - /// Set the max POV block size for incoming upgrades. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_pov_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - ensure!(new <= MAX_POV_SIZE, Error::::InvalidNewValue); - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_pov_size, new) != new - }); - Ok(()) - } - - /// Set the max head data size for paras. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_head_data_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_head_data_size, new) != new - }); - Ok(()) - } - - /// Set the number of parathread execution cores. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_parathread_cores(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.parathread_cores, new) != new - }); - Ok(()) - } - - /// Set the number of retries for a particular parathread. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_parathread_retries(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.parathread_retries, new) != new - }); - Ok(()) - } - - - /// Set the parachain validator-group rotation frequency - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_group_rotation_frequency(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - - ensure!(!new.is_zero(), Error::::InvalidNewValue); - - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.group_rotation_frequency, new) != new - }); - Ok(()) - } - - /// Set the availability period for parachains. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_chain_availability_period(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - - ensure!(!new.is_zero(), Error::::InvalidNewValue); - - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.chain_availability_period, new) != new - }); - Ok(()) - } - - /// Set the availability period for parathreads. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_thread_availability_period(origin, new: T::BlockNumber) -> DispatchResult { - ensure_root(origin)?; - - ensure!(!new.is_zero(), Error::::InvalidNewValue); - - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.thread_availability_period, new) != new - }); - Ok(()) - } - - /// Set the scheduling lookahead, in expected number of blocks at peak throughput. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_scheduling_lookahead(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.scheduling_lookahead, new) != new - }); - Ok(()) - } - - /// Set the maximum number of validators to assign to any core. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_validators_per_core(origin, new: Option) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_validators_per_core, new) != new - }); - Ok(()) - } - - /// Set the maximum number of validators to use in parachain consensus. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_validators(origin, new: Option) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_validators, new) != new - }); - Ok(()) - } - - /// Set the dispute period, in number of sessions to keep for disputes. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_dispute_period(origin, new: SessionIndex) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.dispute_period, new) != new - }); - Ok(()) - } - - /// Set the dispute post conclusion acceptance period. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_dispute_post_conclusion_acceptance_period( - origin, - new: T::BlockNumber, - ) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.dispute_post_conclusion_acceptance_period, new) != new - }); - Ok(()) - } - - /// Set the maximum number of dispute spam slots. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_dispute_max_spam_slots(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.dispute_max_spam_slots, new) != new - }); - Ok(()) - } - - /// Set the dispute conclusion by time out period. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_dispute_conclusion_by_time_out_period(origin, new: T::BlockNumber) - -> DispatchResult - { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.dispute_conclusion_by_time_out_period, new) != new - }); - Ok(()) - } - - /// Set the no show slots, in number of number of consensus slots. - /// Must be at least 1. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_no_show_slots(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - - ensure!(!new.is_zero(), Error::::InvalidNewValue); - - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.no_show_slots, new) != new - }); - Ok(()) - } - - /// Set the total number of delay tranches. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_n_delay_tranches(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.n_delay_tranches, new) != new - }); - Ok(()) - } - - /// Set the zeroth delay tranche width. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_zeroth_delay_tranche_width(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.zeroth_delay_tranche_width, new) != new - }); - Ok(()) - } - - /// Set the number of validators needed to approve a block. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_needed_approvals(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.needed_approvals, new) != new - }); - Ok(()) - } - - /// Set the number of samples to do of the RelayVRFModulo approval assignment criterion. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_relay_vrf_modulo_samples(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.relay_vrf_modulo_samples, new) != new - }); - Ok(()) - } - - /// Sets the maximum items that can present in a upward dispatch queue at once. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_upward_queue_count(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_upward_queue_count, new) != new - }); - Ok(()) - } - - /// Sets the maximum total size of items that can present in a upward dispatch queue at once. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_upward_queue_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_upward_queue_size, new) != new - }); - Ok(()) - } - - /// Set the critical downward message size. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_downward_message_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_downward_message_size, new) != new - }); - Ok(()) - } - - /// Sets the soft limit for the phase of dispatching dispatchable upward messages. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_ump_service_total_weight(origin, new: Weight) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.ump_service_total_weight, new) != new - }); - Ok(()) - } - - /// Sets the maximum size of an upward message that can be sent by a candidate. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_upward_message_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_upward_message_size, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of messages that a candidate can contain. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_max_upward_message_num_per_candidate(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.max_upward_message_num_per_candidate, new) != new - }); - Ok(()) - } - - /// Sets the number of sessions after which an HRMP open channel request expires. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_open_request_ttl(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_open_request_ttl, new) != new - }); - Ok(()) - } - - /// Sets the amount of funds that the sender should provide for opening an HRMP channel. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_sender_deposit(origin, new: Balance) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_sender_deposit, new) != new - }); - Ok(()) - } - - /// Sets the amount of funds that the recipient should provide for accepting opening an HRMP - /// channel. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_recipient_deposit(origin, new: Balance) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_recipient_deposit, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of messages allowed in an HRMP channel at once. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_channel_max_capacity(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_channel_max_capacity, new) != new - }); - Ok(()) - } - - /// Sets the maximum total size of messages in bytes allowed in an HRMP channel at once. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_channel_max_total_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_channel_max_total_size, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of inbound HRMP channels a parachain is allowed to accept. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_max_parachain_inbound_channels(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_max_parachain_inbound_channels, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of inbound HRMP channels a parathread is allowed to accept. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_max_parathread_inbound_channels(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_max_parathread_inbound_channels, new) != new - }); - Ok(()) - } - - /// Sets the maximum size of a message that could ever be put into an HRMP channel. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_channel_max_message_size(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_channel_max_message_size, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of outbound HRMP channels a parachain is allowed to open. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_max_parachain_outbound_channels(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_max_parachain_outbound_channels, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of outbound HRMP channels a parathread is allowed to open. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_max_parathread_outbound_channels(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_max_parathread_outbound_channels, new) != new - }); - Ok(()) - } - - /// Sets the maximum number of outbound HRMP messages can be sent by a candidate. - #[weight = (1_000, DispatchClass::Operational)] - pub fn set_hrmp_max_message_num_per_candidate(origin, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_max_message_num_per_candidate, new) != new - }); - Ok(()) - } - } -} - -impl Module { - /// Called by the initializer to initialize the configuration module. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Called by the initializer to finalize the configuration module. - pub(crate) fn initializer_finalize() { } - - /// Called by the initializer to note that a new session has started. - pub(crate) fn initializer_on_new_session( - session_index: &SessionIndex, - ) { - if let Some(pending) = ::PendingConfig::take(session_index) { - ::ActiveConfig::set(pending); - } - } - - /// Return the session index that should be used for any future scheduled changes. - fn scheduled_session() -> SessionIndex { - shared::Module::::scheduled_session() - } - - /// Forcibly set the active config. This should be used with extreme care, and typically - /// only when enabling parachains runtime modules for the first time on a chain which has - /// been running without them. - pub fn force_set_active_config(config: HostConfiguration) { - ::ActiveConfig::set(config); - } - - // NOTE: Explicitly tell rustc not to inline this because otherwise heuristics note the incoming - // closure making it's attractive to inline. However, in this case, we will end up with lots of - // duplicated code (making this function to show up in the top of heaviest functions) only for - // the sake of essentially avoiding an indirect call. Doesn't worth it. - #[inline(never)] - fn update_config_member( - updater: impl FnOnce(&mut HostConfiguration) -> bool, - ) { - let scheduled_session = Self::scheduled_session(); - let pending = ::PendingConfig::get(scheduled_session); - let mut prev = pending.unwrap_or_else(Self::config); - - if updater(&mut prev) { - ::PendingConfig::insert(scheduled_session, prev); - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{new_test_ext, Configuration, Origin}; - - use frame_support::assert_ok; - - #[test] - fn config_changes_after_2_session_boundary() { - new_test_ext(Default::default()).execute_with(|| { - let old_config = Configuration::config(); - let mut config = old_config.clone(); - config.validation_upgrade_delay = 100; - assert!(old_config != config); - - assert_ok!(Configuration::set_validation_upgrade_delay(Origin::root(), 100)); - - assert_eq!(Configuration::config(), old_config); - assert_eq!(::PendingConfig::get(1), None); - - Configuration::initializer_on_new_session(&1); - - assert_eq!(Configuration::config(), old_config); - assert_eq!(::PendingConfig::get(2), Some(config.clone())); - - Configuration::initializer_on_new_session(&2); - - assert_eq!(Configuration::config(), config); - assert_eq!(::PendingConfig::get(3), None); - }) - } - - #[test] - fn setting_pending_config_members() { - new_test_ext(Default::default()).execute_with(|| { - let new_config = HostConfiguration { - validation_upgrade_frequency: 100, - validation_upgrade_delay: 10, - code_retention_period: 5, - max_code_size: 100_000, - max_pov_size: 1024, - max_head_data_size: 1_000, - parathread_cores: 2, - parathread_retries: 5, - group_rotation_frequency: 20, - chain_availability_period: 10, - thread_availability_period: 8, - scheduling_lookahead: 3, - max_validators_per_core: None, - max_validators: None, - dispute_period: 239, - dispute_post_conclusion_acceptance_period: 10, - dispute_max_spam_slots: 2, - dispute_conclusion_by_time_out_period: 512, - no_show_slots: 240, - n_delay_tranches: 241, - zeroth_delay_tranche_width: 242, - needed_approvals: 242, - relay_vrf_modulo_samples: 243, - max_upward_queue_count: 1337, - max_upward_queue_size: 228, - max_downward_message_size: 2048, - ump_service_total_weight: 20000, - max_upward_message_size: 448, - max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 1312, - hrmp_sender_deposit: 22, - hrmp_recipient_deposit: 4905, - hrmp_channel_max_capacity: 3921, - hrmp_channel_max_total_size: 7687, - hrmp_max_parachain_inbound_channels: 3722, - hrmp_max_parathread_inbound_channels: 1967, - hrmp_channel_max_message_size: 8192, - hrmp_max_parachain_outbound_channels: 100, - hrmp_max_parathread_outbound_channels: 200, - hrmp_max_message_num_per_candidate: 20, - }; - - assert!(::PendingConfig::get(shared::SESSION_DELAY).is_none()); - - Configuration::set_validation_upgrade_frequency( - Origin::root(), new_config.validation_upgrade_frequency, - ).unwrap(); - Configuration::set_validation_upgrade_delay( - Origin::root(), new_config.validation_upgrade_delay, - ).unwrap(); - Configuration::set_code_retention_period( - Origin::root(), new_config.code_retention_period, - ).unwrap(); - Configuration::set_max_code_size( - Origin::root(), new_config.max_code_size, - ).unwrap(); - Configuration::set_max_pov_size( - Origin::root(), new_config.max_pov_size, - ).unwrap(); - Configuration::set_max_head_data_size( - Origin::root(), new_config.max_head_data_size, - ).unwrap(); - Configuration::set_parathread_cores( - Origin::root(), new_config.parathread_cores, - ).unwrap(); - Configuration::set_parathread_retries( - Origin::root(), new_config.parathread_retries, - ).unwrap(); - Configuration::set_group_rotation_frequency( - Origin::root(), new_config.group_rotation_frequency, - ).unwrap(); - Configuration::set_chain_availability_period( - Origin::root(), new_config.chain_availability_period, - ).unwrap(); - Configuration::set_thread_availability_period( - Origin::root(), new_config.thread_availability_period, - ).unwrap(); - Configuration::set_scheduling_lookahead( - Origin::root(), new_config.scheduling_lookahead, - ).unwrap(); - Configuration::set_max_validators_per_core( - Origin::root(), new_config.max_validators_per_core, - ).unwrap(); - Configuration::set_max_validators( - Origin::root(), new_config.max_validators, - ).unwrap(); - Configuration::set_dispute_period( - Origin::root(), new_config.dispute_period, - ).unwrap(); - Configuration::set_dispute_post_conclusion_acceptance_period( - Origin::root(), new_config.dispute_post_conclusion_acceptance_period, - ).unwrap(); - Configuration::set_dispute_max_spam_slots( - Origin::root(), new_config.dispute_max_spam_slots, - ).unwrap(); - Configuration::set_dispute_conclusion_by_time_out_period( - Origin::root(), new_config.dispute_conclusion_by_time_out_period, - ).unwrap(); - Configuration::set_no_show_slots( - Origin::root(), new_config.no_show_slots, - ).unwrap(); - Configuration::set_n_delay_tranches( - Origin::root(), new_config.n_delay_tranches, - ).unwrap(); - Configuration::set_zeroth_delay_tranche_width( - Origin::root(), new_config.zeroth_delay_tranche_width, - ).unwrap(); - Configuration::set_needed_approvals( - Origin::root(), new_config.needed_approvals, - ).unwrap(); - Configuration::set_relay_vrf_modulo_samples( - Origin::root(), new_config.relay_vrf_modulo_samples, - ).unwrap(); - Configuration::set_max_upward_queue_count( - Origin::root(), new_config.max_upward_queue_count, - ).unwrap(); - Configuration::set_max_upward_queue_size( - Origin::root(), new_config.max_upward_queue_size, - ).unwrap(); - Configuration::set_max_downward_message_size( - Origin::root(), new_config.max_downward_message_size, - ).unwrap(); - Configuration::set_ump_service_total_weight( - Origin::root(), new_config.ump_service_total_weight, - ).unwrap(); - Configuration::set_max_upward_message_size( - Origin::root(), new_config.max_upward_message_size, - ).unwrap(); - Configuration::set_max_upward_message_num_per_candidate( - Origin::root(), new_config.max_upward_message_num_per_candidate, - ).unwrap(); - Configuration::set_hrmp_open_request_ttl( - Origin::root(), - new_config.hrmp_open_request_ttl, - ).unwrap(); - Configuration::set_hrmp_sender_deposit( - Origin::root(), - new_config.hrmp_sender_deposit, - ).unwrap(); - Configuration::set_hrmp_recipient_deposit( - Origin::root(), - new_config.hrmp_recipient_deposit, - ).unwrap(); - Configuration::set_hrmp_channel_max_capacity( - Origin::root(), - new_config.hrmp_channel_max_capacity, - ).unwrap(); - Configuration::set_hrmp_channel_max_total_size( - Origin::root(), - new_config.hrmp_channel_max_total_size, - ).unwrap(); - Configuration::set_hrmp_max_parachain_inbound_channels( - Origin::root(), - new_config.hrmp_max_parachain_inbound_channels, - ).unwrap(); - Configuration::set_hrmp_max_parathread_inbound_channels( - Origin::root(), - new_config.hrmp_max_parathread_inbound_channels, - ).unwrap(); - Configuration::set_hrmp_channel_max_message_size( - Origin::root(), - new_config.hrmp_channel_max_message_size, - ).unwrap(); - Configuration::set_hrmp_max_parachain_outbound_channels( - Origin::root(), - new_config.hrmp_max_parachain_outbound_channels, - ).unwrap(); - Configuration::set_hrmp_max_parathread_outbound_channels( - Origin::root(), - new_config.hrmp_max_parathread_outbound_channels, - ).unwrap(); - Configuration::set_hrmp_max_message_num_per_candidate( - Origin::root(), - new_config.hrmp_max_message_num_per_candidate, - ).unwrap(); - - assert_eq!(::PendingConfig::get(shared::SESSION_DELAY), Some(new_config)); - }) - } - - #[test] - fn non_root_cannot_set_config() { - new_test_ext(Default::default()).execute_with(|| { - assert!(Configuration::set_validation_upgrade_delay(Origin::signed(1), 100).is_err()); - }); - } - - #[test] - fn setting_config_to_same_as_current_is_noop() { - new_test_ext(Default::default()).execute_with(|| { - Configuration::set_validation_upgrade_delay(Origin::root(), Default::default()).unwrap(); - assert!(::PendingConfig::get(shared::SESSION_DELAY).is_none()) - }); - } - - #[test] - fn verify_externally_accessible() { - // This test verifies that the value can be accessed through the well known keys and the - // host configuration decodes into the abridged version. - - use primitives::v1::{well_known_keys, AbridgedHostConfiguration}; - - new_test_ext(Default::default()).execute_with(|| { - let ground_truth = HostConfiguration::default(); - - // Make sure that the configuration is stored in the storage. - ::ActiveConfig::put(ground_truth.clone()); - - // Extract the active config via the well known key. - let raw_active_config = sp_io::storage::get(well_known_keys::ACTIVE_CONFIG) - .expect("config must be present in storage under ACTIVE_CONFIG"); - let abridged_config = AbridgedHostConfiguration::decode(&mut &raw_active_config[..]) - .expect("HostConfiguration must be decodable into AbridgedHostConfiguration"); - - assert_eq!( - abridged_config, - AbridgedHostConfiguration { - max_code_size: ground_truth.max_code_size, - max_head_data_size: ground_truth.max_head_data_size, - max_upward_queue_count: ground_truth.max_upward_queue_count, - max_upward_queue_size: ground_truth.max_upward_queue_size, - max_upward_message_size: ground_truth.max_upward_message_size, - max_upward_message_num_per_candidate: ground_truth - .max_upward_message_num_per_candidate, - hrmp_max_message_num_per_candidate: ground_truth - .hrmp_max_message_num_per_candidate, - validation_upgrade_frequency: ground_truth.validation_upgrade_frequency, - validation_upgrade_delay: ground_truth.validation_upgrade_delay, - }, - ); - }); - } -} diff --git a/runtime/parachains/src/dmp.rs b/runtime/parachains/src/dmp.rs deleted file mode 100644 index 023996762dbe..000000000000 --- a/runtime/parachains/src/dmp.rs +++ /dev/null @@ -1,414 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - configuration::{self, HostConfiguration}, - initializer, -}; -use frame_support::{decl_module, decl_storage, StorageMap, weights::Weight, traits::Get}; -use sp_std::{fmt, prelude::*}; -use sp_runtime::traits::{BlakeTwo256, Hash as HashT, SaturatedConversion}; -use primitives::v1::{Id as ParaId, DownwardMessage, InboundDownwardMessage, Hash}; -use xcm::v0::Error as XcmError; - -/// An error sending a downward message. -#[cfg_attr(test, derive(Debug))] -pub enum QueueDownwardMessageError { - /// The message being sent exceeds the configured max message size. - ExceedsMaxMessageSize, -} - -impl From for XcmError { - fn from(err: QueueDownwardMessageError) -> Self { - match err { - QueueDownwardMessageError::ExceedsMaxMessageSize => XcmError::ExceedsMaxMessageSize, - } - } -} - -/// An error returned by [`check_processed_downward_messages`] that indicates an acceptance check -/// didn't pass. -pub enum ProcessedDownwardMessagesAcceptanceErr { - /// If there are pending messages then `processed_downward_messages` should be at least 1, - AdvancementRule, - /// `processed_downward_messages` should not be greater than the number of pending messages. - Underflow { - processed_downward_messages: u32, - dmq_length: u32, - }, -} - -impl fmt::Debug for ProcessedDownwardMessagesAcceptanceErr { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - use ProcessedDownwardMessagesAcceptanceErr::*; - match *self { - AdvancementRule => write!( - fmt, - "DMQ is not empty, but processed_downward_messages is 0", - ), - Underflow { - processed_downward_messages, - dmq_length, - } => write!( - fmt, - "processed_downward_messages = {}, but dmq_length is only {}", - processed_downward_messages, dmq_length, - ), - } - } -} - -pub trait Config: frame_system::Config + configuration::Config {} - -decl_storage! { - trait Store for Module as Dmp { - /// The downward messages addressed for a certain para. - DownwardMessageQueues: map hasher(twox_64_concat) ParaId => Vec>; - /// A mapping that stores the downward message queue MQC head for each para. - /// - /// Each link in this chain has a form: - /// `(prev_head, B, H(M))`, where - /// - `prev_head`: is the previous head hash or zero if none. - /// - `B`: is the relay-chain block number in which a message was appended. - /// - `H(M)`: is the hash of the message being appended. - DownwardMessageQueueHeads: map hasher(twox_64_concat) ParaId => Hash; - } -} - -decl_module! { - /// The DMP module. - pub struct Module for enum Call where origin: ::Origin { } -} - -/// Routines and getters related to downward message passing. -impl Module { - /// Block initialization logic, called by initializer. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Block finalization logic, called by initializer. - pub(crate) fn initializer_finalize() {} - - /// Called by the initializer to note that a new session has started. - pub(crate) fn initializer_on_new_session( - _notification: &initializer::SessionChangeNotification, - outgoing_paras: &[ParaId], - ) { - Self::perform_outgoing_para_cleanup(outgoing_paras); - } - - /// Iterate over all paras that were noted for offboarding and remove all the data - /// associated with them. - fn perform_outgoing_para_cleanup(outgoing: &[ParaId]) { - for outgoing_para in outgoing { - Self::clean_dmp_after_outgoing(outgoing_para); - } - } - - /// Remove all relevant storage items for an outgoing parachain. - fn clean_dmp_after_outgoing(outgoing_para: &ParaId) { - ::DownwardMessageQueues::remove(outgoing_para); - ::DownwardMessageQueueHeads::remove(outgoing_para); - } - - /// Enqueue a downward message to a specific recipient para. - /// - /// When encoded, the message should not exceed the `config.max_downward_message_size`. - /// Otherwise, the message won't be sent and `Err` will be returned. - /// - /// It is possible to send a downward message to a non-existent para. That, however, would lead - /// to a dangling storage. If the caller cannot statically prove that the recipient exists - /// then the caller should perform a runtime check. - pub fn queue_downward_message( - config: &HostConfiguration, - para: ParaId, - msg: DownwardMessage, - ) -> Result<(), QueueDownwardMessageError> { - let serialized_len = msg.len() as u32; - if serialized_len > config.max_downward_message_size { - return Err(QueueDownwardMessageError::ExceedsMaxMessageSize); - } - - let inbound = InboundDownwardMessage { - msg, - sent_at: >::block_number(), - }; - - // obtain the new link in the MQC and update the head. - ::DownwardMessageQueueHeads::mutate(para, |head| { - let new_head = - BlakeTwo256::hash_of(&(*head, inbound.sent_at, T::Hashing::hash_of(&inbound.msg))); - *head = new_head; - }); - - ::DownwardMessageQueues::mutate(para, |v| { - v.push(inbound); - }); - - Ok(()) - } - - /// Checks if the number of processed downward messages is valid. - pub(crate) fn check_processed_downward_messages( - para: ParaId, - processed_downward_messages: u32, - ) -> Result<(), ProcessedDownwardMessagesAcceptanceErr> { - let dmq_length = Self::dmq_length(para); - - if dmq_length > 0 && processed_downward_messages == 0 { - return Err(ProcessedDownwardMessagesAcceptanceErr::AdvancementRule); - } - if dmq_length < processed_downward_messages { - return Err(ProcessedDownwardMessagesAcceptanceErr::Underflow { - processed_downward_messages, - dmq_length, - }); - } - - Ok(()) - } - - /// Prunes the specified number of messages from the downward message queue of the given para. - pub(crate) fn prune_dmq(para: ParaId, processed_downward_messages: u32) -> Weight { - ::DownwardMessageQueues::mutate(para, |q| { - let processed_downward_messages = processed_downward_messages as usize; - if processed_downward_messages > q.len() { - // reaching this branch is unexpected due to the constraint established by - // `check_processed_downward_messages`. But better be safe than sorry. - q.clear(); - } else { - *q = q.split_off(processed_downward_messages); - } - }); - T::DbWeight::get().reads_writes(1, 1) - } - - /// Returns the Head of Message Queue Chain for the given para or `None` if there is none - /// associated with it. - #[cfg(test)] - fn dmq_mqc_head(para: ParaId) -> Hash { - ::DownwardMessageQueueHeads::get(¶) - } - - /// Returns the number of pending downward messages addressed to the given para. - /// - /// Returns 0 if the para doesn't have an associated downward message queue. - pub(crate) fn dmq_length(para: ParaId) -> u32 { - ::DownwardMessageQueues::decode_len(¶) - .unwrap_or(0) - .saturated_into::() - } - - /// Returns the downward message queue contents for the given para. - /// - /// The most recent messages are the latest in the vector. - pub(crate) fn dmq_contents(recipient: ParaId) -> Vec> { - ::DownwardMessageQueues::get(&recipient) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use hex_literal::hex; - use primitives::v1::BlockNumber; - use frame_support::traits::{OnFinalize, OnInitialize}; - use parity_scale_codec::Encode; - use crate::mock::{Configuration, new_test_ext, System, Dmp, MockGenesisConfig, Paras}; - - pub(crate) fn run_to_block(to: BlockNumber, new_session: Option>) { - while System::block_number() < to { - let b = System::block_number(); - Paras::initializer_finalize(); - Dmp::initializer_finalize(); - if new_session.as_ref().map_or(false, |v| v.contains(&(b + 1))) { - Dmp::initializer_on_new_session(&Default::default(), &Vec::new()); - } - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - Paras::initializer_finalize(); - Dmp::initializer_initialize(b + 1); - } - } - - fn default_genesis_config() -> MockGenesisConfig { - MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: crate::configuration::HostConfiguration { - max_downward_message_size: 1024, - ..Default::default() - }, - }, - ..Default::default() - } - } - - fn queue_downward_message( - para_id: ParaId, - msg: DownwardMessage, - ) -> Result<(), QueueDownwardMessageError> { - Dmp::queue_downward_message(&Configuration::config(), para_id, msg) - } - - #[test] - fn clean_dmp_works() { - let a = ParaId::from(1312); - let b = ParaId::from(228); - let c = ParaId::from(123); - - new_test_ext(default_genesis_config()).execute_with(|| { - // enqueue downward messages to A, B and C. - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - queue_downward_message(b, vec![4, 5, 6]).unwrap(); - queue_downward_message(c, vec![7, 8, 9]).unwrap(); - - let notification = crate::initializer::SessionChangeNotification::default(); - let outgoing_paras = vec![a, b]; - Dmp::initializer_on_new_session(¬ification, &outgoing_paras); - - assert!(::DownwardMessageQueues::get(&a).is_empty()); - assert!(::DownwardMessageQueues::get(&b).is_empty()); - assert!(!::DownwardMessageQueues::get(&c).is_empty()); - }); - } - - #[test] - fn dmq_length_and_head_updated_properly() { - let a = ParaId::from(1312); - let b = ParaId::from(228); - - new_test_ext(default_genesis_config()).execute_with(|| { - assert_eq!(Dmp::dmq_length(a), 0); - assert_eq!(Dmp::dmq_length(b), 0); - - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - - assert_eq!(Dmp::dmq_length(a), 1); - assert_eq!(Dmp::dmq_length(b), 0); - assert!(!Dmp::dmq_mqc_head(a).is_zero()); - assert!(Dmp::dmq_mqc_head(b).is_zero()); - }); - } - - #[test] - fn dmp_mqc_head_fixture() { - let a = ParaId::from(2000); - - new_test_ext(default_genesis_config()).execute_with(|| { - run_to_block(2, None); - assert!(Dmp::dmq_mqc_head(a).is_zero()); - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - - run_to_block(3, None); - queue_downward_message(a, vec![4, 5, 6]).unwrap(); - - assert_eq!( - Dmp::dmq_mqc_head(a), - hex!["88dc00db8cc9d22aa62b87807705831f164387dfa49f80a8600ed1cbe1704b6b"].into(), - ); - }); - } - - #[test] - fn check_processed_downward_messages() { - let a = ParaId::from(1312); - - new_test_ext(default_genesis_config()).execute_with(|| { - // processed_downward_messages=0 is allowed when the DMQ is empty. - assert!(Dmp::check_processed_downward_messages(a, 0).is_ok()); - - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - queue_downward_message(a, vec![4, 5, 6]).unwrap(); - queue_downward_message(a, vec![7, 8, 9]).unwrap(); - - // 0 doesn't pass if the DMQ has msgs. - assert!(!Dmp::check_processed_downward_messages(a, 0).is_ok()); - // a candidate can consume up to 3 messages - assert!(Dmp::check_processed_downward_messages(a, 1).is_ok()); - assert!(Dmp::check_processed_downward_messages(a, 2).is_ok()); - assert!(Dmp::check_processed_downward_messages(a, 3).is_ok()); - // there is no 4 messages in the queue - assert!(!Dmp::check_processed_downward_messages(a, 4).is_ok()); - }); - } - - #[test] - fn dmq_pruning() { - let a = ParaId::from(1312); - - new_test_ext(default_genesis_config()).execute_with(|| { - assert_eq!(Dmp::dmq_length(a), 0); - - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - queue_downward_message(a, vec![4, 5, 6]).unwrap(); - queue_downward_message(a, vec![7, 8, 9]).unwrap(); - assert_eq!(Dmp::dmq_length(a), 3); - - // pruning 0 elements shouldn't change anything. - Dmp::prune_dmq(a, 0); - assert_eq!(Dmp::dmq_length(a), 3); - - Dmp::prune_dmq(a, 2); - assert_eq!(Dmp::dmq_length(a), 1); - }); - } - - #[test] - fn queue_downward_message_critical() { - let a = ParaId::from(1312); - - let mut genesis = default_genesis_config(); - genesis.configuration.config.max_downward_message_size = 7; - - new_test_ext(genesis).execute_with(|| { - let smol = [0; 3].to_vec(); - let big = [0; 8].to_vec(); - - // still within limits - assert_eq!(smol.encode().len(), 4); - assert!(queue_downward_message(a, smol).is_ok()); - - // that's too big - assert_eq!(big.encode().len(), 9); - assert!(queue_downward_message(a, big).is_err()); - }); - } - - #[test] - fn verify_dmq_mqc_head_is_externally_accessible() { - use primitives::v1::well_known_keys; - use hex_literal::hex; - - let a = ParaId::from(2020); - - new_test_ext(default_genesis_config()).execute_with(|| { - let head = sp_io::storage::get(&well_known_keys::dmq_mqc_head(a)); - assert_eq!(head, None); - - queue_downward_message(a, vec![1, 2, 3]).unwrap(); - - let head = sp_io::storage::get(&well_known_keys::dmq_mqc_head(a)); - assert_eq!( - head, - Some(hex!["434f8579a2297dfea851bf6be33093c83a78b655a53ae141a7894494c0010589"].to_vec()) - ); - }); - } -} diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs deleted file mode 100644 index a04fd465dd6e..000000000000 --- a/runtime/parachains/src/hrmp.rs +++ /dev/null @@ -1,2010 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - ensure_parachain, - configuration::{self, HostConfiguration}, - initializer, paras, dmp, -}; -use parity_scale_codec::{Decode, Encode}; -use frame_support::{ - decl_storage, decl_module, decl_error, decl_event, ensure, traits::{Get, ReservableCurrency}, - weights::Weight, StorageMap, StorageValue, dispatch::DispatchResult, -}; -use frame_system::ensure_root; -use primitives::v1::{ - Balance, Hash, HrmpChannelId, Id as ParaId, InboundHrmpMessage, OutboundHrmpMessage, - SessionIndex, -}; -use sp_runtime::traits::{UniqueSaturatedInto, AccountIdConversion, BlakeTwo256, Hash as HashT}; -use sp_std::{ - mem, fmt, - collections::{btree_map::BTreeMap, btree_set::BTreeSet}, - prelude::*, -}; - -/// A description of a request to open an HRMP channel. -#[derive(Encode, Decode)] -pub struct HrmpOpenChannelRequest { - /// Indicates if this request was confirmed by the recipient. - pub confirmed: bool, - /// How many session boundaries ago this request was seen. - pub age: SessionIndex, - /// The amount that the sender supplied at the time of creation of this request. - pub sender_deposit: Balance, - /// The maximum message size that could be put into the channel. - pub max_message_size: u32, - /// The maximum number of messages that can be pending in the channel at once. - pub max_capacity: u32, - /// The maximum total size of the messages that can be pending in the channel at once. - pub max_total_size: u32, -} - -/// A metadata of an HRMP channel. -#[derive(Encode, Decode)] -#[cfg_attr(test, derive(Debug))] -pub struct HrmpChannel { - // NOTE: This structure is used by parachains via merkle proofs. Therefore, this struct requires - // special treatment. - // - // A parachain requested this struct can only depend on the subset of this struct. Specifically, - // only a first few fields can be depended upon (See `AbridgedHrmpChannel`). These fields cannot - // be changed without corresponding migration of parachains. - - /// The maximum number of messages that can be pending in the channel at once. - pub max_capacity: u32, - /// The maximum total size of the messages that can be pending in the channel at once. - pub max_total_size: u32, - /// The maximum message size that could be put into the channel. - pub max_message_size: u32, - /// The current number of messages pending in the channel. - /// Invariant: should be less or equal to `max_capacity`.s`. - pub msg_count: u32, - /// The total size in bytes of all message payloads in the channel. - /// Invariant: should be less or equal to `max_total_size`. - pub total_size: u32, - /// A head of the Message Queue Chain for this channel. Each link in this chain has a form: - /// `(prev_head, B, H(M))`, where - /// - `prev_head`: is the previous value of `mqc_head` or zero if none. - /// - `B`: is the [relay-chain] block number in which a message was appended - /// - `H(M)`: is the hash of the message being appended. - /// This value is initialized to a special value that consists of all zeroes which indicates - /// that no messages were previously added. - pub mqc_head: Option, - /// The amount that the sender supplied as a deposit when opening this channel. - pub sender_deposit: Balance, - /// The amount that the recipient supplied as a deposit when accepting opening this channel. - pub recipient_deposit: Balance, -} - -/// An error returned by [`check_hrmp_watermark`] that indicates an acceptance criteria check -/// didn't pass. -pub enum HrmpWatermarkAcceptanceErr { - AdvancementRule { - new_watermark: BlockNumber, - last_watermark: BlockNumber, - }, - AheadRelayParent { - new_watermark: BlockNumber, - relay_chain_parent_number: BlockNumber, - }, - LandsOnBlockWithNoMessages { - new_watermark: BlockNumber, - }, -} - -/// An error returned by [`check_outbound_hrmp`] that indicates an acceptance criteria check -/// didn't pass. -pub enum OutboundHrmpAcceptanceErr { - MoreMessagesThanPermitted { - sent: u32, - permitted: u32, - }, - NotSorted { - idx: u32, - }, - NoSuchChannel { - idx: u32, - channel_id: HrmpChannelId, - }, - MaxMessageSizeExceeded { - idx: u32, - msg_size: u32, - max_size: u32, - }, - TotalSizeExceeded { - idx: u32, - total_size: u32, - limit: u32, - }, - CapacityExceeded { - idx: u32, - count: u32, - limit: u32, - }, -} - -impl fmt::Debug for HrmpWatermarkAcceptanceErr -where - BlockNumber: fmt::Debug, -{ - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - use HrmpWatermarkAcceptanceErr::*; - match self { - AdvancementRule { - new_watermark, - last_watermark, - } => write!( - fmt, - "the HRMP watermark is not advanced relative to the last watermark ({:?} > {:?})", - new_watermark, last_watermark, - ), - AheadRelayParent { - new_watermark, - relay_chain_parent_number, - } => write!( - fmt, - "the HRMP watermark is ahead the relay-parent ({:?} > {:?})", - new_watermark, relay_chain_parent_number - ), - LandsOnBlockWithNoMessages { new_watermark } => write!( - fmt, - "the HRMP watermark ({:?}) doesn't land on a block with messages received", - new_watermark - ), - } - } -} - -impl fmt::Debug for OutboundHrmpAcceptanceErr { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - use OutboundHrmpAcceptanceErr::*; - match self { - MoreMessagesThanPermitted { sent, permitted } => write!( - fmt, - "more HRMP messages than permitted by config ({} > {})", - sent, permitted, - ), - NotSorted { idx } => write!( - fmt, - "the HRMP messages are not sorted (first unsorted is at index {})", - idx, - ), - NoSuchChannel { idx, channel_id } => write!( - fmt, - "the HRMP message at index {} is sent to a non existent channel {:?}->{:?}", - idx, channel_id.sender, channel_id.recipient, - ), - MaxMessageSizeExceeded { - idx, - msg_size, - max_size, - } => write!( - fmt, - "the HRMP message at index {} exceeds the negotiated channel maximum message size ({} > {})", - idx, msg_size, max_size, - ), - TotalSizeExceeded { - idx, - total_size, - limit, - } => write!( - fmt, - "sending the HRMP message at index {} would exceed the neogitiated channel total size ({} > {})", - idx, total_size, limit, - ), - CapacityExceeded { idx, count, limit } => write!( - fmt, - "sending the HRMP message at index {} would exceed the neogitiated channel capacity ({} > {})", - idx, count, limit, - ), - } - } -} - -pub trait Config: frame_system::Config + configuration::Config + paras::Config + dmp::Config { - /// The outer event type. - type Event: From + Into<::Event>; - - type Origin: From - + From<::Origin> - + Into::Origin>>; - - /// An interface for reserving deposits for opening channels. - /// - /// NOTE that this Currency instance will be charged with the amounts defined in the `Configuration` - /// module. Specifically, that means that the `Balance` of the `Currency` implementation should - /// be the same as `Balance` as used in the `Configuration`. - type Currency: ReservableCurrency; -} - -decl_storage! { - trait Store for Module as Hrmp { - /// The set of pending HRMP open channel requests. - /// - /// The set is accompanied by a list for iteration. - /// - /// Invariant: - /// - There are no channels that exists in list but not in the set and vice versa. - HrmpOpenChannelRequests: map hasher(twox_64_concat) HrmpChannelId => Option; - HrmpOpenChannelRequestsList: Vec; - - /// This mapping tracks how many open channel requests are inititated by a given sender para. - /// Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has `(X, _)` - /// as the number of `HrmpOpenChannelRequestCount` for `X`. - HrmpOpenChannelRequestCount: map hasher(twox_64_concat) ParaId => u32; - /// This mapping tracks how many open channel requests were accepted by a given recipient para. - /// Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with - /// `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`. - HrmpAcceptedChannelRequestCount: map hasher(twox_64_concat) ParaId => u32; - - /// A set of pending HRMP close channel requests that are going to be closed during the session change. - /// Used for checking if a given channel is registered for closure. - /// - /// The set is accompanied by a list for iteration. - /// - /// Invariant: - /// - There are no channels that exists in list but not in the set and vice versa. - HrmpCloseChannelRequests: map hasher(twox_64_concat) HrmpChannelId => Option<()>; - HrmpCloseChannelRequestsList: Vec; - - /// The HRMP watermark associated with each para. - /// Invariant: - /// - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a session. - HrmpWatermarks: map hasher(twox_64_concat) ParaId => Option; - /// HRMP channel data associated with each para. - /// Invariant: - /// - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session. - HrmpChannels: map hasher(twox_64_concat) HrmpChannelId => Option; - /// Ingress/egress indexes allow to find all the senders and receivers given the opposite - /// side. I.e. - /// - /// (a) ingress index allows to find all the senders for a given recipient. - /// (b) egress index allows to find all the recipients for a given sender. - /// - /// Invariants: - /// - for each ingress index entry for `P` each item `I` in the index should present in `HrmpChannels` - /// as `(I, P)`. - /// - for each egress index entry for `P` each item `E` in the index should present in `HrmpChannels` - /// as `(P, E)`. - /// - there should be no other dangling channels in `HrmpChannels`. - /// - the vectors are sorted. - HrmpIngressChannelsIndex: map hasher(twox_64_concat) ParaId => Vec; - // NOTE that this field is used by parachains via merkle storage proofs, therefore changing - // the format will require migration of parachains. - HrmpEgressChannelsIndex: map hasher(twox_64_concat) ParaId => Vec; - - /// Storage for the messages for each channel. - /// Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`. - HrmpChannelContents: map hasher(twox_64_concat) HrmpChannelId => Vec>; - /// Maintains a mapping that can be used to answer the question: - /// What paras sent a message at the given block number for a given reciever. - /// Invariants: - /// - The inner `Vec` is never empty. - /// - The inner `Vec` cannot store two same `ParaId`. - /// - The outer vector is sorted ascending by block number and cannot store two items with the same - /// block number. - HrmpChannelDigests: map hasher(twox_64_concat) ParaId => Vec<(T::BlockNumber, Vec)>; - } - add_extra_genesis { - /// Preopen the given HRMP channels. - /// - /// The values in the tuple corresponds to `(sender, recipient, max_capacity, max_message_size)`, - /// i.e. similar to `init_open_channel`. In fact, the initialization is performed as if - /// the `init_open_channel` and `accept_open_channel` were called with the respective parameters - /// and the session change take place. - /// - /// As such, each channel initializer should satisfy the same constraints, namely: - /// - /// 1. `max_capacity` and `max_message_size` should be within the limits set by the configuration module. - /// 2. `sender` and `recipient` must be valid paras. - config(preopen_hrmp_channels): Vec<(ParaId, ParaId, u32, u32)>; - build(|config| { - initialize_storage::(&config.preopen_hrmp_channels); - }) - } -} - -#[cfg(feature = "std")] -fn initialize_storage(preopen_hrmp_channels: &[(ParaId, ParaId, u32, u32)]) { - let host_config = configuration::Module::::config(); - for &(sender, recipient, max_capacity, max_message_size) in preopen_hrmp_channels { - if let Err(err) = preopen_hrmp_channel::(sender, recipient, max_capacity, max_message_size) { - panic!("failed to initialize the genesis storage: {:?}", err); - } - } - >::process_hrmp_open_channel_requests(&host_config); -} - -#[cfg(feature = "std")] -fn preopen_hrmp_channel( - sender: ParaId, - recipient: ParaId, - max_capacity: u32, - max_message_size: u32 -) -> DispatchResult { - >::init_open_channel( - sender, - recipient, - max_capacity, - max_message_size, - )?; - >::accept_open_channel(recipient, sender)?; - Ok(()) -} - -decl_error! { - pub enum Error for Module { - /// The sender tried to open a channel to themselves. - OpenHrmpChannelToSelf, - /// The recipient is not a valid para. - OpenHrmpChannelInvalidRecipient, - /// The requested capacity is zero. - OpenHrmpChannelZeroCapacity, - /// The requested capacity exceeds the global limit. - OpenHrmpChannelCapacityExceedsLimit, - /// The requested maximum message size is 0. - OpenHrmpChannelZeroMessageSize, - /// The open request requested the message size that exceeds the global limit. - OpenHrmpChannelMessageSizeExceedsLimit, - /// The channel already exists - OpenHrmpChannelAlreadyExists, - /// There is already a request to open the same channel. - OpenHrmpChannelAlreadyRequested, - /// The sender already has the maximum number of allowed outbound channels. - OpenHrmpChannelLimitExceeded, - /// The channel from the sender to the origin doesn't exist. - AcceptHrmpChannelDoesntExist, - /// The channel is already confirmed. - AcceptHrmpChannelAlreadyConfirmed, - /// The recipient already has the maximum number of allowed inbound channels. - AcceptHrmpChannelLimitExceeded, - /// The origin tries to close a channel where it is neither the sender nor the recipient. - CloseHrmpChannelUnauthorized, - /// The channel to be closed doesn't exist. - CloseHrmpChannelDoesntExist, - /// The channel close request is already requested. - CloseHrmpChannelAlreadyUnderway, - } -} - -decl_event! { - pub enum Event { - /// Open HRMP channel requested. - /// \[sender, recipient, proposed_max_capacity, proposed_max_message_size\] - OpenChannelRequested(ParaId, ParaId, u32, u32), - /// Open HRMP channel accepted. \[sender, recipient\] - OpenChannelAccepted(ParaId, ParaId), - /// HRMP channel closed. \[by_parachain, channel_id\] - ChannelClosed(ParaId, HrmpChannelId), - } -} - -decl_module! { - /// The HRMP module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - fn deposit_event() = default; - - /// Initiate opening a channel from a parachain to a given recipient with given channel - /// parameters. - /// - /// - `proposed_max_capacity` - specifies how many messages can be in the channel at once. - /// - `proposed_max_message_size` - specifies the maximum size of any of the messages. - /// - /// These numbers are a subject to the relay-chain configuration limits. - /// - /// The channel can be opened only after the recipient confirms it and only on a session - /// change. - #[weight = 0] - pub fn hrmp_init_open_channel( - origin, - recipient: ParaId, - proposed_max_capacity: u32, - proposed_max_message_size: u32, - ) -> DispatchResult { - let origin = ensure_parachain(::Origin::from(origin))?; - Self::init_open_channel( - origin, - recipient, - proposed_max_capacity, - proposed_max_message_size - )?; - Self::deposit_event(Event::OpenChannelRequested( - origin, - recipient, - proposed_max_capacity, - proposed_max_message_size - )); - Ok(()) - } - - /// Accept a pending open channel request from the given sender. - /// - /// The channel will be opened only on the next session boundary. - #[weight = 0] - pub fn hrmp_accept_open_channel(origin, sender: ParaId) -> DispatchResult { - let origin = ensure_parachain(::Origin::from(origin))?; - Self::accept_open_channel(origin, sender)?; - Self::deposit_event(Event::OpenChannelAccepted(sender, origin)); - Ok(()) - } - - /// Initiate unilateral closing of a channel. The origin must be either the sender or the - /// recipient in the channel being closed. - /// - /// The closure can only happen on a session change. - #[weight = 0] - pub fn hrmp_close_channel(origin, channel_id: HrmpChannelId) -> DispatchResult { - let origin = ensure_parachain(::Origin::from(origin))?; - Self::close_channel(origin, channel_id.clone())?; - Self::deposit_event(Event::ChannelClosed(origin, channel_id)); - Ok(()) - } - - /// This extrinsic triggers the cleanup of all the HRMP storage items that - /// a para may have. Normally this happens once per session, but this allows - /// you to trigger the cleanup immediately for a specific parachain. - /// - /// Origin must be Root. - #[weight = 0] - pub fn force_clean_hrmp(origin, para: ParaId) -> DispatchResult { - ensure_root(origin)?; - Self::clean_hrmp_after_outgoing(¶); - Ok(()) - } - - /// Force process hrmp open channel requests. - /// - /// If there are pending HRMP open channel requests, you can use this - /// function process all of those requests immediately. - #[weight = 0] - pub fn force_process_hrmp_open(origin) -> DispatchResult { - ensure_root(origin)?; - let host_config = configuration::Module::::config(); - Self::process_hrmp_open_channel_requests(&host_config); - Ok(()) - } - - /// Force process hrmp close channel requests. - /// - /// If there are pending HRMP close channel requests, you can use this - /// function process all of those requests immediately. - #[weight = 0] - pub fn force_process_hrmp_close(origin) -> DispatchResult { - ensure_root(origin)?; - Self::process_hrmp_close_channel_requests(); - Ok(()) - } - } -} - -/// Routines and getters related to HRMP. -impl Module { - /// Block initialization logic, called by initializer. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Block finalization logic, called by initializer. - pub(crate) fn initializer_finalize() {} - - /// Called by the initializer to note that a new session has started. - pub(crate) fn initializer_on_new_session( - notification: &initializer::SessionChangeNotification, - outgoing_paras: &[ParaId], - ) { - Self::perform_outgoing_para_cleanup(outgoing_paras); - Self::process_hrmp_open_channel_requests(¬ification.prev_config); - Self::process_hrmp_close_channel_requests(); - } - - /// Iterate over all paras that were noted for offboarding and remove all the data - /// associated with them. - fn perform_outgoing_para_cleanup(outgoing: &[ParaId]) { - for outgoing_para in outgoing { - Self::clean_hrmp_after_outgoing(outgoing_para); - } - } - - /// Remove all storage entries associated with the given para. - fn clean_hrmp_after_outgoing(outgoing_para: &ParaId) { - ::HrmpOpenChannelRequestCount::remove(outgoing_para); - ::HrmpAcceptedChannelRequestCount::remove(outgoing_para); - - let ingress = ::HrmpIngressChannelsIndex::take(outgoing_para) - .into_iter() - .map(|sender| HrmpChannelId { - sender, - recipient: outgoing_para.clone(), - }); - let egress = ::HrmpEgressChannelsIndex::take(outgoing_para) - .into_iter() - .map(|recipient| HrmpChannelId { - sender: outgoing_para.clone(), - recipient, - }); - let mut to_close = ingress.chain(egress).collect::>(); - to_close.sort(); - to_close.dedup(); - - for channel in to_close { - Self::close_hrmp_channel(&channel); - } - } - - /// Iterate over all open channel requests and: - /// - /// - prune the stale requests - /// - enact the confirmed requests - fn process_hrmp_open_channel_requests(config: &HostConfiguration) { - let mut open_req_channels = ::HrmpOpenChannelRequestsList::get(); - if open_req_channels.is_empty() { - return; - } - - // iterate the vector starting from the end making our way to the beginning. This way we - // can leverage `swap_remove` to efficiently remove an item during iteration. - let mut idx = open_req_channels.len(); - loop { - // bail if we've iterated over all items. - if idx == 0 { - break; - } - - idx -= 1; - let channel_id = open_req_channels[idx].clone(); - let mut request = ::HrmpOpenChannelRequests::get(&channel_id).expect( - "can't be `None` due to the invariant that the list contains the same items as the set; qed", - ); - - if request.confirmed { - if >::is_valid_para(channel_id.sender) - && >::is_valid_para(channel_id.recipient) - { - ::HrmpChannels::insert( - &channel_id, - HrmpChannel { - sender_deposit: request.sender_deposit, - recipient_deposit: config.hrmp_recipient_deposit, - max_capacity: request.max_capacity, - max_total_size: request.max_total_size, - max_message_size: request.max_message_size, - msg_count: 0, - total_size: 0, - mqc_head: None, - }, - ); - - ::HrmpIngressChannelsIndex::mutate(&channel_id.recipient, |v| { - if let Err(i) = v.binary_search(&channel_id.sender) { - v.insert(i, channel_id.sender); - } - }); - ::HrmpEgressChannelsIndex::mutate(&channel_id.sender, |v| { - if let Err(i) = v.binary_search(&channel_id.recipient) { - v.insert(i, channel_id.recipient); - } - }); - } - - let new_open_channel_req_cnt = - ::HrmpOpenChannelRequestCount::get(&channel_id.sender) - .saturating_sub(1); - if new_open_channel_req_cnt != 0 { - ::HrmpOpenChannelRequestCount::insert( - &channel_id.sender, - new_open_channel_req_cnt, - ); - } else { - ::HrmpOpenChannelRequestCount::remove(&channel_id.sender); - } - - let new_accepted_channel_req_cnt = - ::HrmpAcceptedChannelRequestCount::get(&channel_id.recipient) - .saturating_sub(1); - if new_accepted_channel_req_cnt != 0 { - ::HrmpAcceptedChannelRequestCount::insert( - &channel_id.recipient, - new_accepted_channel_req_cnt, - ); - } else { - ::HrmpAcceptedChannelRequestCount::remove(&channel_id.recipient); - } - - let _ = open_req_channels.swap_remove(idx); - ::HrmpOpenChannelRequests::remove(&channel_id); - } else { - request.age += 1; - if request.age == config.hrmp_open_request_ttl { - // got stale - ::HrmpOpenChannelRequestCount::mutate(&channel_id.sender, |v| { - *v -= 1; - }); - - let _ = open_req_channels.swap_remove(idx); - if let Some(HrmpOpenChannelRequest { sender_deposit, .. }) = - ::HrmpOpenChannelRequests::take(&channel_id) - { - T::Currency::unreserve( - &channel_id.sender.into_account(), - sender_deposit.unique_saturated_into(), - ); - } - } else { - ::HrmpOpenChannelRequests::insert(&channel_id, request); - } - } - } - - ::HrmpOpenChannelRequestsList::put(open_req_channels); - } - - /// Iterate over all close channel requests unconditionally closing the channels. - fn process_hrmp_close_channel_requests() { - let close_reqs = ::HrmpCloseChannelRequestsList::take(); - for condemned_ch_id in close_reqs { - ::HrmpCloseChannelRequests::remove(&condemned_ch_id); - Self::close_hrmp_channel(&condemned_ch_id); - } - } - - /// Close and remove the designated HRMP channel. - /// - /// This includes returning the deposits. - /// - /// This function is indempotent, meaning that after the first application it should have no - /// effect (i.e. it won't return the deposits twice). - fn close_hrmp_channel(channel_id: &HrmpChannelId) { - if let Some(HrmpChannel { - sender_deposit, - recipient_deposit, - .. - }) = ::HrmpChannels::take(channel_id) - { - T::Currency::unreserve( - &channel_id.sender.into_account(), - sender_deposit.unique_saturated_into(), - ); - T::Currency::unreserve( - &channel_id.recipient.into_account(), - recipient_deposit.unique_saturated_into(), - ); - } - - ::HrmpChannelContents::remove(channel_id); - - ::HrmpEgressChannelsIndex::mutate(&channel_id.sender, |v| { - if let Ok(i) = v.binary_search(&channel_id.recipient) { - v.remove(i); - } - }); - ::HrmpIngressChannelsIndex::mutate(&channel_id.recipient, |v| { - if let Ok(i) = v.binary_search(&channel_id.sender) { - v.remove(i); - } - }); - } - - /// Check that the candidate of the given recipient controls the HRMP watermark properly. - pub(crate) fn check_hrmp_watermark( - recipient: ParaId, - relay_chain_parent_number: T::BlockNumber, - new_hrmp_watermark: T::BlockNumber, - ) -> Result<(), HrmpWatermarkAcceptanceErr> { - // First, check where the watermark CANNOT legally land. - // - // (a) For ensuring that messages are eventually, a rule requires each parablock new - // watermark should be greater than the last one. - // - // (b) However, a parachain cannot read into "the future", therefore the watermark should - // not be greater than the relay-chain context block which the parablock refers to. - if let Some(last_watermark) = ::HrmpWatermarks::get(&recipient) { - if new_hrmp_watermark <= last_watermark { - return Err(HrmpWatermarkAcceptanceErr::AdvancementRule { - new_watermark: new_hrmp_watermark, - last_watermark, - }); - } - } - if new_hrmp_watermark > relay_chain_parent_number { - return Err(HrmpWatermarkAcceptanceErr::AheadRelayParent { - new_watermark: new_hrmp_watermark, - relay_chain_parent_number, - }); - } - - // Second, check where the watermark CAN land. It's one of the following: - // - // (a) The relay parent block number. - // (b) A relay-chain block in which this para received at least one message. - if new_hrmp_watermark == relay_chain_parent_number { - Ok(()) - } else { - let digest = ::HrmpChannelDigests::get(&recipient); - if !digest - .binary_search_by_key(&new_hrmp_watermark, |(block_no, _)| *block_no) - .is_ok() - { - return Err(HrmpWatermarkAcceptanceErr::LandsOnBlockWithNoMessages { - new_watermark: new_hrmp_watermark, - }); - } - Ok(()) - } - } - - pub(crate) fn check_outbound_hrmp( - config: &HostConfiguration, - sender: ParaId, - out_hrmp_msgs: &[OutboundHrmpMessage], - ) -> Result<(), OutboundHrmpAcceptanceErr> { - if out_hrmp_msgs.len() as u32 > config.hrmp_max_message_num_per_candidate { - return Err(OutboundHrmpAcceptanceErr::MoreMessagesThanPermitted { - sent: out_hrmp_msgs.len() as u32, - permitted: config.hrmp_max_message_num_per_candidate, - }); - } - - let mut last_recipient = None::; - - for (idx, out_msg) in out_hrmp_msgs - .iter() - .enumerate() - .map(|(idx, out_msg)| (idx as u32, out_msg)) - { - match last_recipient { - // the messages must be sorted in ascending order and there must be no two messages sent - // to the same recipient. Thus we can check that every recipient is strictly greater than - // the previous one. - Some(last_recipient) if out_msg.recipient <= last_recipient => { - return Err(OutboundHrmpAcceptanceErr::NotSorted { idx }); - } - _ => last_recipient = Some(out_msg.recipient), - } - - let channel_id = HrmpChannelId { - sender, - recipient: out_msg.recipient, - }; - - let channel = match ::HrmpChannels::get(&channel_id) { - Some(channel) => channel, - None => { - return Err(OutboundHrmpAcceptanceErr::NoSuchChannel { channel_id, idx }); - } - }; - - let msg_size = out_msg.data.len() as u32; - if msg_size > channel.max_message_size { - return Err(OutboundHrmpAcceptanceErr::MaxMessageSizeExceeded { - idx, - msg_size, - max_size: channel.max_message_size, - }); - } - - let new_total_size = channel.total_size + out_msg.data.len() as u32; - if new_total_size > channel.max_total_size { - return Err(OutboundHrmpAcceptanceErr::TotalSizeExceeded { - idx, - total_size: new_total_size, - limit: channel.max_total_size, - }); - } - - let new_msg_count = channel.msg_count + 1; - if new_msg_count > channel.max_capacity { - return Err(OutboundHrmpAcceptanceErr::CapacityExceeded { - idx, - count: new_msg_count, - limit: channel.max_capacity, - }); - } - } - - Ok(()) - } - - pub(crate) fn prune_hrmp(recipient: ParaId, new_hrmp_watermark: T::BlockNumber) -> Weight { - let mut weight = 0; - - // sift through the incoming messages digest to collect the paras that sent at least one - // message to this parachain between the old and new watermarks. - let senders = ::HrmpChannelDigests::mutate(&recipient, |digest| { - let mut senders = BTreeSet::new(); - let mut leftover = Vec::with_capacity(digest.len()); - for (block_no, paras_sent_msg) in mem::replace(digest, Vec::new()) { - if block_no <= new_hrmp_watermark { - senders.extend(paras_sent_msg); - } else { - leftover.push((block_no, paras_sent_msg)); - } - } - *digest = leftover; - senders - }); - weight += T::DbWeight::get().reads_writes(1, 1); - - // having all senders we can trivially find out the channels which we need to prune. - let channels_to_prune = senders - .into_iter() - .map(|sender| HrmpChannelId { sender, recipient }); - for channel_id in channels_to_prune { - // prune each channel up to the new watermark keeping track how many messages we removed - // and what is the total byte size of them. - let (mut pruned_cnt, mut pruned_size) = (0, 0); - - let contents = ::HrmpChannelContents::get(&channel_id); - let mut leftover = Vec::with_capacity(contents.len()); - for msg in contents { - if msg.sent_at <= new_hrmp_watermark { - pruned_cnt += 1; - pruned_size += msg.data.len(); - } else { - leftover.push(msg); - } - } - if !leftover.is_empty() { - ::HrmpChannelContents::insert(&channel_id, leftover); - } else { - ::HrmpChannelContents::remove(&channel_id); - } - - // update the channel metadata. - ::HrmpChannels::mutate(&channel_id, |channel| { - if let Some(ref mut channel) = channel { - channel.msg_count -= pruned_cnt as u32; - channel.total_size -= pruned_size as u32; - } - }); - - weight += T::DbWeight::get().reads_writes(2, 2); - } - - ::HrmpWatermarks::insert(&recipient, new_hrmp_watermark); - weight += T::DbWeight::get().reads_writes(0, 1); - - weight - } - - /// Process the outbound HRMP messages by putting them into the appropriate recipient queues. - /// - /// Returns the amount of weight consumed. - pub(crate) fn queue_outbound_hrmp( - sender: ParaId, - out_hrmp_msgs: Vec>, - ) -> Weight { - let mut weight = 0; - let now = >::block_number(); - - for out_msg in out_hrmp_msgs { - let channel_id = HrmpChannelId { - sender, - recipient: out_msg.recipient, - }; - - let mut channel = match ::HrmpChannels::get(&channel_id) { - Some(channel) => channel, - None => { - // apparently, that since acceptance of this candidate the recipient was - // offboarded and the channel no longer exists. - continue; - } - }; - - let inbound = InboundHrmpMessage { - sent_at: now, - data: out_msg.data, - }; - - // book keeping - channel.msg_count += 1; - channel.total_size += inbound.data.len() as u32; - - // compute the new MQC head of the channel - let prev_head = channel.mqc_head.clone().unwrap_or(Default::default()); - let new_head = BlakeTwo256::hash_of(&( - prev_head, - inbound.sent_at, - T::Hashing::hash_of(&inbound.data), - )); - channel.mqc_head = Some(new_head); - - ::HrmpChannels::insert(&channel_id, channel); - ::HrmpChannelContents::append(&channel_id, inbound); - - // The digests are sorted in ascending by block number order. Assuming absence of - // contextual execution, there are only two possible scenarios here: - // - // (a) It's the first time anybody sends a message to this recipient within this block. - // In this case, the digest vector would be empty or the block number of the latest - // entry is smaller than the current. - // - // (b) Somebody has already sent a message within the current block. That means that - // the block number of the latest entry is equal to the current. - // - // Note that having the latest entry greater than the current block number is a logical - // error. - let mut recipient_digest = - ::HrmpChannelDigests::get(&channel_id.recipient); - if let Some(cur_block_digest) = recipient_digest - .last_mut() - .filter(|(block_no, _)| *block_no == now) - .map(|(_, ref mut d)| d) - { - cur_block_digest.push(sender); - } else { - recipient_digest.push((now, vec![sender])); - } - ::HrmpChannelDigests::insert(&channel_id.recipient, recipient_digest); - - weight += T::DbWeight::get().reads_writes(2, 2); - } - - weight - } - - /// Initiate opening a channel from a parachain to a given recipient with given channel - /// parameters. - /// - /// Basically the same as [`hrmp_init_open_channel`](Module::hrmp_init_open_channel) but intendend for calling directly from - /// other pallets rather than dispatched. - pub fn init_open_channel( - origin: ParaId, - recipient: ParaId, - proposed_max_capacity: u32, - proposed_max_message_size: u32, - ) -> DispatchResult { - ensure!(origin != recipient, Error::::OpenHrmpChannelToSelf); - ensure!( - >::is_valid_para(recipient), - Error::::OpenHrmpChannelInvalidRecipient, - ); - - let config = >::config(); - ensure!( - proposed_max_capacity > 0, - Error::::OpenHrmpChannelZeroCapacity, - ); - ensure!( - proposed_max_capacity <= config.hrmp_channel_max_capacity, - Error::::OpenHrmpChannelCapacityExceedsLimit, - ); - ensure!( - proposed_max_message_size > 0, - Error::::OpenHrmpChannelZeroMessageSize, - ); - ensure!( - proposed_max_message_size <= config.hrmp_channel_max_message_size, - Error::::OpenHrmpChannelMessageSizeExceedsLimit, - ); - - let channel_id = HrmpChannelId { - sender: origin, - recipient, - }; - ensure!( - ::HrmpOpenChannelRequests::get(&channel_id).is_none(), - Error::::OpenHrmpChannelAlreadyExists, - ); - ensure!( - ::HrmpChannels::get(&channel_id).is_none(), - Error::::OpenHrmpChannelAlreadyRequested, - ); - - let egress_cnt = - ::HrmpEgressChannelsIndex::decode_len(&origin).unwrap_or(0) as u32; - let open_req_cnt = ::HrmpOpenChannelRequestCount::get(&origin); - let channel_num_limit = if >::is_parathread(origin) { - config.hrmp_max_parathread_outbound_channels - } else { - config.hrmp_max_parachain_outbound_channels - }; - ensure!( - egress_cnt + open_req_cnt < channel_num_limit, - Error::::OpenHrmpChannelLimitExceeded, - ); - - T::Currency::reserve( - &origin.into_account(), - config.hrmp_sender_deposit.unique_saturated_into(), - )?; - - ::HrmpOpenChannelRequestCount::insert(&origin, open_req_cnt + 1); - ::HrmpOpenChannelRequests::insert( - &channel_id, - HrmpOpenChannelRequest { - confirmed: false, - age: 0, - sender_deposit: config.hrmp_sender_deposit, - max_capacity: proposed_max_capacity, - max_message_size: proposed_max_message_size, - max_total_size: config.hrmp_channel_max_total_size, - }, - ); - ::HrmpOpenChannelRequestsList::append(channel_id); - - let notification_bytes = { - use xcm::opaque::{v0::Xcm, VersionedXcm}; - use parity_scale_codec::Encode as _; - - VersionedXcm::from(Xcm::HrmpNewChannelOpenRequest { - sender: u32::from(origin), - max_capacity: proposed_max_capacity, - max_message_size: proposed_max_message_size, - }) - .encode() - }; - if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, recipient, notification_bytes) - { - // this should never happen unless the max downward message size is configured to an - // jokingly small number. - debug_assert!(false); - } - - Ok(()) - } - - /// Accept a pending open channel request from the given sender. - /// - /// Basically the same as [`hrmp_accept_open_channel`](Module::hrmp_accept_open_channel) but - /// intendend for calling directly from other pallets rather than dispatched. - pub fn accept_open_channel(origin: ParaId, sender: ParaId) -> DispatchResult { - let channel_id = HrmpChannelId { - sender, - recipient: origin, - }; - let mut channel_req = ::HrmpOpenChannelRequests::get(&channel_id) - .ok_or(Error::::AcceptHrmpChannelDoesntExist)?; - ensure!( - !channel_req.confirmed, - Error::::AcceptHrmpChannelAlreadyConfirmed, - ); - - // check if by accepting this open channel request, this parachain would exceed the - // number of inbound channels. - let config = >::config(); - let channel_num_limit = if >::is_parathread(origin) { - config.hrmp_max_parathread_inbound_channels - } else { - config.hrmp_max_parachain_inbound_channels - }; - let ingress_cnt = - ::HrmpIngressChannelsIndex::decode_len(&origin).unwrap_or(0) as u32; - let accepted_cnt = ::HrmpAcceptedChannelRequestCount::get(&origin); - ensure!( - ingress_cnt + accepted_cnt < channel_num_limit, - Error::::AcceptHrmpChannelLimitExceeded, - ); - - T::Currency::reserve( - &origin.into_account(), - config.hrmp_recipient_deposit.unique_saturated_into(), - )?; - - // persist the updated open channel request and then increment the number of accepted - // channels. - channel_req.confirmed = true; - ::HrmpOpenChannelRequests::insert(&channel_id, channel_req); - ::HrmpAcceptedChannelRequestCount::insert(&origin, accepted_cnt + 1); - - let notification_bytes = { - use parity_scale_codec::Encode as _; - use xcm::opaque::{v0::Xcm, VersionedXcm}; - - VersionedXcm::from(Xcm::HrmpChannelAccepted { - recipient: u32::from(origin), - }) - .encode() - }; - if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, sender, notification_bytes) - { - // this should never happen unless the max downward message size is configured to an - // jokingly small number. - debug_assert!(false); - } - - Ok(()) - } - - fn close_channel(origin: ParaId, channel_id: HrmpChannelId) -> Result<(), Error> { - // check if the origin is allowed to close the channel. - ensure!( - origin == channel_id.sender || origin == channel_id.recipient, - Error::::CloseHrmpChannelUnauthorized, - ); - - // check if the channel requested to close does exist. - ensure!( - ::HrmpChannels::get(&channel_id).is_some(), - Error::::CloseHrmpChannelDoesntExist, - ); - - // check that there is no outstanding close request for this channel - ensure!( - ::HrmpCloseChannelRequests::get(&channel_id).is_none(), - Error::::CloseHrmpChannelAlreadyUnderway, - ); - - ::HrmpCloseChannelRequests::insert(&channel_id, ()); - ::HrmpCloseChannelRequestsList::append(channel_id.clone()); - - let config = >::config(); - let notification_bytes = { - use parity_scale_codec::Encode as _; - use xcm::opaque::{v0::Xcm, VersionedXcm}; - - VersionedXcm::from(Xcm::HrmpChannelClosing { - initiator: u32::from(origin), - sender: u32::from(channel_id.sender), - recipient: u32::from(channel_id.recipient), - }) - .encode() - }; - let opposite_party = if origin == channel_id.sender { - channel_id.recipient - } else { - channel_id.sender - }; - if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, opposite_party, notification_bytes) - { - // this should never happen unless the max downward message size is configured to an - // jokingly small number. - debug_assert!(false); - } - - Ok(()) - } - - /// Returns the list of MQC heads for the inbound channels of the given recipient para paired - /// with the sender para ids. This vector is sorted ascending by the para id and doesn't contain - /// multiple entries with the same sender. - #[cfg(test)] - fn hrmp_mqc_heads(recipient: ParaId) -> Vec<(ParaId, Hash)> { - let sender_set = ::HrmpIngressChannelsIndex::get(&recipient); - - // The ingress channels vector is sorted, thus `mqc_heads` is sorted as well. - let mut mqc_heads = Vec::with_capacity(sender_set.len()); - for sender in sender_set { - let channel_metadata = - ::HrmpChannels::get(&HrmpChannelId { sender, recipient }); - let mqc_head = channel_metadata - .and_then(|metadata| metadata.mqc_head) - .unwrap_or(Hash::default()); - mqc_heads.push((sender, mqc_head)); - } - - mqc_heads - } - - /// Returns contents of all channels addressed to the given recipient. Channels that have no - /// messages in them are also included. - pub(crate) fn inbound_hrmp_channels_contents( - recipient: ParaId, - ) -> BTreeMap>> { - let sender_set = ::HrmpIngressChannelsIndex::get(&recipient); - - let mut inbound_hrmp_channels_contents = BTreeMap::new(); - for sender in sender_set { - let channel_contents = - ::HrmpChannelContents::get(&HrmpChannelId { sender, recipient }); - inbound_hrmp_channels_contents.insert(sender, channel_contents); - } - - inbound_hrmp_channels_contents - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{ - new_test_ext, Test, Configuration, Paras, Shared, Hrmp, System, MockGenesisConfig, - Event as MockEvent, - }; - use frame_support::{assert_noop, assert_ok, traits::Currency as _}; - use primitives::v1::BlockNumber; - use std::collections::{BTreeMap, HashSet}; - - fn run_to_block(to: BlockNumber, new_session: Option>) { - use frame_support::traits::{OnFinalize as _, OnInitialize as _}; - - let config = Configuration::config(); - while System::block_number() < to { - let b = System::block_number(); - - // NOTE: this is in reverse initialization order. - Hrmp::initializer_finalize(); - Paras::initializer_finalize(); - Shared::initializer_finalize(); - - if new_session.as_ref().map_or(false, |v| v.contains(&(b + 1))) { - let notification = crate::initializer::SessionChangeNotification { - prev_config: config.clone(), - new_config: config.clone(), - session_index: Shared::session_index() + 1, - ..Default::default() - }; - - // NOTE: this is in initialization order. - Shared::initializer_on_new_session( - notification.session_index, - notification.random_seed, - ¬ification.new_config, - notification.validators.clone(), - ); - let outgoing_paras = Paras::initializer_on_new_session(¬ification); - Hrmp::initializer_on_new_session(¬ification, &outgoing_paras); - } - - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - // NOTE: this is in initialization order. - Shared::initializer_initialize(b + 1); - Paras::initializer_initialize(b + 1); - Hrmp::initializer_initialize(b + 1); - } - } - - #[derive(Debug)] - struct GenesisConfigBuilder { - hrmp_channel_max_capacity: u32, - hrmp_channel_max_message_size: u32, - hrmp_max_parathread_outbound_channels: u32, - hrmp_max_parachain_outbound_channels: u32, - hrmp_max_parathread_inbound_channels: u32, - hrmp_max_parachain_inbound_channels: u32, - hrmp_max_message_num_per_candidate: u32, - hrmp_channel_max_total_size: u32, - hrmp_sender_deposit: Balance, - hrmp_recipient_deposit: Balance, - hrmp_open_request_ttl: u32, - } - - impl Default for GenesisConfigBuilder { - fn default() -> Self { - Self { - hrmp_channel_max_capacity: 2, - hrmp_channel_max_message_size: 8, - hrmp_max_parathread_outbound_channels: 1, - hrmp_max_parachain_outbound_channels: 2, - hrmp_max_parathread_inbound_channels: 1, - hrmp_max_parachain_inbound_channels: 2, - hrmp_max_message_num_per_candidate: 2, - hrmp_channel_max_total_size: 16, - hrmp_sender_deposit: 100, - hrmp_recipient_deposit: 100, - hrmp_open_request_ttl: 3, - } - } - } - - impl GenesisConfigBuilder { - fn build(self) -> crate::mock::MockGenesisConfig { - let mut genesis = default_genesis_config(); - let config = &mut genesis.configuration.config; - config.hrmp_channel_max_capacity = self.hrmp_channel_max_capacity; - config.hrmp_channel_max_message_size = self.hrmp_channel_max_message_size; - config.hrmp_max_parathread_outbound_channels = - self.hrmp_max_parathread_outbound_channels; - config.hrmp_max_parachain_outbound_channels = self.hrmp_max_parachain_outbound_channels; - config.hrmp_max_parathread_inbound_channels = self.hrmp_max_parathread_inbound_channels; - config.hrmp_max_parachain_inbound_channels = self.hrmp_max_parachain_inbound_channels; - config.hrmp_max_message_num_per_candidate = self.hrmp_max_message_num_per_candidate; - config.hrmp_channel_max_total_size = self.hrmp_channel_max_total_size; - config.hrmp_sender_deposit = self.hrmp_sender_deposit; - config.hrmp_recipient_deposit = self.hrmp_recipient_deposit; - config.hrmp_open_request_ttl = self.hrmp_open_request_ttl; - genesis - } - } - - fn default_genesis_config() -> MockGenesisConfig { - MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: crate::configuration::HostConfiguration { - max_downward_message_size: 1024, - ..Default::default() - }, - }, - ..Default::default() - } - } - - fn register_parachain_with_balance(id: ParaId, balance: Balance) { - assert_ok!(Paras::schedule_para_initialize( - id, - crate::paras::ParaGenesisArgs { - parachain: true, - genesis_head: vec![1].into(), - validation_code: vec![1].into(), - }, - )); - ::Currency::make_free_balance_be(&id.into_account(), balance); - } - - fn register_parachain(id: ParaId) { - register_parachain_with_balance(id, 1000); - } - - fn deregister_parachain(id: ParaId) { - assert_ok!(Paras::schedule_para_cleanup(id)); - } - - fn channel_exists(sender: ParaId, recipient: ParaId) -> bool { - ::HrmpChannels::get(&HrmpChannelId { sender, recipient }).is_some() - } - - fn assert_storage_consistency_exhaustive() { - use frame_support::IterableStorageMap; - - assert_eq!( - ::HrmpOpenChannelRequests::iter() - .map(|(k, _)| k) - .collect::>(), - ::HrmpOpenChannelRequestsList::get() - .into_iter() - .collect::>(), - ); - - // verify that the set of keys in `HrmpOpenChannelRequestCount` corresponds to the set - // of _senders_ in `HrmpOpenChannelRequests`. - // - // having ensured that, we can go ahead and go over all counts and verify that they match. - assert_eq!( - ::HrmpOpenChannelRequestCount::iter() - .map(|(k, _)| k) - .collect::>(), - ::HrmpOpenChannelRequests::iter() - .map(|(k, _)| k.sender) - .collect::>(), - ); - for (open_channel_initiator, expected_num) in - ::HrmpOpenChannelRequestCount::iter() - { - let actual_num = ::HrmpOpenChannelRequests::iter() - .filter(|(ch, _)| ch.sender == open_channel_initiator) - .count() as u32; - assert_eq!(expected_num, actual_num); - } - - // The same as above, but for accepted channel request count. Note that we are interested - // only in confirmed open requests. - assert_eq!( - ::HrmpAcceptedChannelRequestCount::iter() - .map(|(k, _)| k) - .collect::>(), - ::HrmpOpenChannelRequests::iter() - .filter(|(_, v)| v.confirmed) - .map(|(k, _)| k.recipient) - .collect::>(), - ); - for (channel_recipient, expected_num) in - ::HrmpAcceptedChannelRequestCount::iter() - { - let actual_num = ::HrmpOpenChannelRequests::iter() - .filter(|(ch, v)| ch.recipient == channel_recipient && v.confirmed) - .count() as u32; - assert_eq!(expected_num, actual_num); - } - - assert_eq!( - ::HrmpCloseChannelRequests::iter() - .map(|(k, _)| k) - .collect::>(), - ::HrmpCloseChannelRequestsList::get() - .into_iter() - .collect::>(), - ); - - // A HRMP watermark can be None for an onboarded parachain. However, an offboarded parachain - // cannot have an HRMP watermark: it should've been cleanup. - assert_contains_only_onboarded( - ::HrmpWatermarks::iter().map(|(k, _)| k), - "HRMP watermarks should contain only onboarded paras", - ); - - // An entry in `HrmpChannels` indicates that the channel is open. Only open channels can - // have contents. - for (non_empty_channel, contents) in ::HrmpChannelContents::iter() { - assert!(::HrmpChannels::contains_key( - &non_empty_channel - )); - - // pedantic check: there should be no empty vectors in storage, those should be modeled - // by a removed kv pair. - assert!(!contents.is_empty()); - } - - // Senders and recipients must be onboarded. Otherwise, all channels associated with them - // are removed. - assert_contains_only_onboarded( - ::HrmpChannels::iter().flat_map(|(k, _)| vec![k.sender, k.recipient]), - "senders and recipients in all channels should be onboarded", - ); - - // Check the docs for `HrmpIngressChannelsIndex` and `HrmpEgressChannelsIndex` in decl - // storage to get an index what are the channel mappings indexes. - // - // Here, from indexes. - // - // ingress egress - // - // a -> [x, y] x -> [a, b] - // b -> [x, z] y -> [a] - // z -> [b] - // - // we derive a list of channels they represent. - // - // (a, x) (a, x) - // (a, y) (a, y) - // (b, x) (b, x) - // (b, z) (b, z) - // - // and then that we compare that to the channel list in the `HrmpChannels`. - let channel_set_derived_from_ingress = ::HrmpIngressChannelsIndex::iter() - .flat_map(|(p, v)| v.into_iter().map(|i| (i, p)).collect::>()) - .collect::>(); - let channel_set_derived_from_egress = ::HrmpEgressChannelsIndex::iter() - .flat_map(|(p, v)| v.into_iter().map(|e| (p, e)).collect::>()) - .collect::>(); - let channel_set_ground_truth = ::HrmpChannels::iter() - .map(|(k, _)| (k.sender, k.recipient)) - .collect::>(); - assert_eq!( - channel_set_derived_from_ingress, - channel_set_derived_from_egress - ); - assert_eq!(channel_set_derived_from_egress, channel_set_ground_truth); - - ::HrmpIngressChannelsIndex::iter() - .map(|(_, v)| v) - .for_each(|v| assert_is_sorted(&v, "HrmpIngressChannelsIndex")); - ::HrmpEgressChannelsIndex::iter() - .map(|(_, v)| v) - .for_each(|v| assert_is_sorted(&v, "HrmpIngressChannelsIndex")); - - assert_contains_only_onboarded( - ::HrmpChannelDigests::iter().map(|(k, _)| k), - "HRMP channel digests should contain only onboarded paras", - ); - for (_digest_for_para, digest) in ::HrmpChannelDigests::iter() { - // Assert that items are in **strictly** ascending order. The strictness also implies - // there are no duplicates. - assert!(digest.windows(2).all(|xs| xs[0].0 < xs[1].0)); - - for (_, mut senders) in digest { - assert!(!senders.is_empty()); - - // check for duplicates. For that we sort the vector, then perform deduplication. - // if the vector stayed the same, there are no duplicates. - senders.sort(); - let orig_senders = senders.clone(); - senders.dedup(); - assert_eq!( - orig_senders, senders, - "duplicates removed implies existence of duplicates" - ); - } - } - - fn assert_contains_only_onboarded(iter: impl Iterator, cause: &str) { - for para in iter { - assert!( - Paras::is_valid_para(para), - "{}: {} para is offboarded", - cause, - para - ); - } - } - } - - fn assert_is_sorted(slice: &[T], id: &str) { - assert!( - slice.windows(2).all(|xs| xs[0] <= xs[1]), - "{} supposed to be sorted", - id - ); - } - - #[test] - fn empty_state_consistent_state() { - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn open_channel_works() { - let para_a = 1.into(); - let para_a_origin: crate::Origin = 1.into(); - let para_b = 3.into(); - let para_b_origin: crate::Origin = 3.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - // We need both A & B to be registered and alive parachains. - register_parachain(para_a); - register_parachain(para_b); - - run_to_block(5, Some(vec![4, 5])); - Hrmp::hrmp_init_open_channel(para_a_origin.into(), para_b, 2, 8).unwrap(); - assert_storage_consistency_exhaustive(); - assert!(System::events().iter().any(|record| - record.event == MockEvent::Hrmp(Event::OpenChannelRequested(para_a, para_b, 2, 8)) - )); - - Hrmp::hrmp_accept_open_channel(para_b_origin.into(), para_a).unwrap(); - assert_storage_consistency_exhaustive(); - assert!(System::events().iter().any(|record| - record.event == MockEvent::Hrmp(Event::OpenChannelAccepted(para_a, para_b)) - )); - - // Advance to a block 6, but without session change. That means that the channel has - // not been created yet. - run_to_block(6, None); - assert!(!channel_exists(para_a, para_b)); - assert_storage_consistency_exhaustive(); - - // Now let the session change happen and thus open the channel. - run_to_block(8, Some(vec![8])); - assert!(channel_exists(para_a, para_b)); - }); - } - - #[test] - fn close_channel_works() { - let para_a = 5.into(); - let para_b = 2.into(); - let para_b_origin: crate::Origin = 2.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - register_parachain(para_a); - register_parachain(para_b); - - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - - run_to_block(6, Some(vec![6])); - assert!(channel_exists(para_a, para_b)); - - // Close the channel. The effect is not immediate, but rather deferred to the next - // session change. - let channel_id = HrmpChannelId { - sender: para_a, - recipient: para_b, - }; - Hrmp::hrmp_close_channel(para_b_origin.into(), channel_id.clone()).unwrap(); - assert!(channel_exists(para_a, para_b)); - assert_storage_consistency_exhaustive(); - - // After the session change the channel should be closed. - run_to_block(8, Some(vec![8])); - assert!(!channel_exists(para_a, para_b)); - assert_storage_consistency_exhaustive(); - assert!(System::events().iter().any(|record| - record.event == MockEvent::Hrmp(Event::ChannelClosed(para_b, channel_id.clone())) - )); - }); - } - - #[test] - fn send_recv_messages() { - let para_a = 32.into(); - let para_b = 64.into(); - - let mut genesis = GenesisConfigBuilder::default(); - genesis.hrmp_channel_max_message_size = 20; - genesis.hrmp_channel_max_total_size = 20; - new_test_ext(genesis.build()).execute_with(|| { - register_parachain(para_a); - register_parachain(para_b); - - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 20).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - - // On Block 6: - // A sends a message to B - run_to_block(6, Some(vec![6])); - assert!(channel_exists(para_a, para_b)); - let msgs = vec![OutboundHrmpMessage { - recipient: para_b, - data: b"this is an emergency".to_vec(), - }]; - let config = Configuration::config(); - assert!(Hrmp::check_outbound_hrmp(&config, para_a, &msgs).is_ok()); - let _ = Hrmp::queue_outbound_hrmp(para_a, msgs); - assert_storage_consistency_exhaustive(); - - // On Block 7: - // B receives the message sent by A. B sets the watermark to 6. - run_to_block(7, None); - assert!(Hrmp::check_hrmp_watermark(para_b, 7, 6).is_ok()); - let _ = Hrmp::prune_hrmp(para_b, 6); - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn hrmp_mqc_head_fixture() { - let para_a = 2000.into(); - let para_b = 2024.into(); - - let mut genesis = GenesisConfigBuilder::default(); - genesis.hrmp_channel_max_message_size = 20; - genesis.hrmp_channel_max_total_size = 20; - new_test_ext(genesis.build()).execute_with(|| { - register_parachain(para_a); - register_parachain(para_b); - - run_to_block(2, Some(vec![1,2])); - Hrmp::init_open_channel(para_a, para_b, 2, 20).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - - run_to_block(3, Some(vec![3])); - let _ = Hrmp::queue_outbound_hrmp(para_a, vec![OutboundHrmpMessage { - recipient: para_b, - data: vec![1, 2, 3], - }]); - - run_to_block(4, None); - let _ = Hrmp::queue_outbound_hrmp(para_a, vec![OutboundHrmpMessage { - recipient: para_b, - data: vec![4, 5, 6], - }]); - - assert_eq!( - Hrmp::hrmp_mqc_heads(para_b), - vec![ - (para_a, hex_literal::hex!["a964fd3b4f3d3ce92a0e25e576b87590d92bb5cb7031909c7f29050e1f04a375"].into()), - ], - ); - }); - } - - #[test] - fn accept_incoming_request_and_offboard() { - let para_a = 32.into(); - let para_b = 64.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - register_parachain(para_a); - register_parachain(para_b); - - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - deregister_parachain(para_a); - - // On Block 7: 2x session change. The channel should not be created. - run_to_block(7, Some(vec![6, 7])); - assert!(!Paras::is_valid_para(para_a)); - assert!(!channel_exists(para_a, para_b)); - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn check_sent_messages() { - let para_a = 32.into(); - let para_b = 64.into(); - let para_c = 97.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - register_parachain(para_a); - register_parachain(para_b); - register_parachain(para_c); - - run_to_block(5, Some(vec![4, 5])); - - // Open two channels to the same receiver, b: - // a -> b, c -> b - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - Hrmp::init_open_channel(para_c, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_c).unwrap(); - - // On Block 6: session change. - run_to_block(6, Some(vec![6])); - assert!(Paras::is_valid_para(para_a)); - - let msgs = vec![OutboundHrmpMessage { - recipient: para_b, - data: b"knock".to_vec(), - }]; - let config = Configuration::config(); - assert!(Hrmp::check_outbound_hrmp(&config, para_a, &msgs).is_ok()); - let _ = Hrmp::queue_outbound_hrmp(para_a, msgs.clone()); - - // Verify that the sent messages are there and that also the empty channels are present. - let mqc_heads = Hrmp::hrmp_mqc_heads(para_b); - let contents = Hrmp::inbound_hrmp_channels_contents(para_b); - assert_eq!( - contents, - vec![ - ( - para_a, - vec![InboundHrmpMessage { - sent_at: 6, - data: b"knock".to_vec(), - }] - ), - (para_c, vec![]) - ] - .into_iter() - .collect::>(), - ); - assert_eq!( - mqc_heads, - vec![ - ( - para_a, - hex_literal::hex!( - "3bba6404e59c91f51deb2ae78f1273ebe75896850713e13f8c0eba4b0996c483" - ) - .into() - ), - (para_c, Default::default()) - ], - ); - - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn verify_externally_accessible() { - use primitives::v1::{well_known_keys, AbridgedHrmpChannel}; - - let para_a = 20.into(); - let para_b = 21.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - // Register two parachains, wait until a session change, then initiate channel open - // request and accept that, and finally wait until the next session. - register_parachain(para_a); - register_parachain(para_b); - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - run_to_block(8, Some(vec![8])); - - // Here we have a channel a->b opened. - // - // Try to obtain this channel from the storage and - // decode it into the abridged version. - assert!(channel_exists(para_a, para_b)); - let raw_hrmp_channel = - sp_io::storage::get(&well_known_keys::hrmp_channels(HrmpChannelId { - sender: para_a, - recipient: para_b, - })) - .expect("the channel exists and we must be able to get it through well known keys"); - let abridged_hrmp_channel = AbridgedHrmpChannel::decode(&mut &raw_hrmp_channel[..]) - .expect("HrmpChannel should be decodable as AbridgedHrmpChannel"); - - assert_eq!( - abridged_hrmp_channel, - AbridgedHrmpChannel { - max_capacity: 2, - max_total_size: 16, - max_message_size: 8, - msg_count: 0, - total_size: 0, - mqc_head: None, - }, - ); - - let raw_ingress_index = - sp_io::storage::get( - &well_known_keys::hrmp_ingress_channel_index(para_b), - ) - .expect("the ingress index must be present for para_b"); - let ingress_index = >::decode(&mut &raw_ingress_index[..]) - .expect("ingress indexx should be decodable as a list of para ids"); - assert_eq!( - ingress_index, - vec![para_a], - ); - - // Now, verify that we can access and decode the egress index. - let raw_egress_index = - sp_io::storage::get( - &well_known_keys::hrmp_egress_channel_index(para_a) - ) - .expect("the egress index must be present for para_a"); - let egress_index = >::decode(&mut &raw_egress_index[..]) - .expect("egress index should be decodable as a list of para ids"); - assert_eq!( - egress_index, - vec![para_b], - ); - }); - } - - #[test] - fn charging_deposits() { - let para_a = 32.into(); - let para_b = 64.into(); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - register_parachain_with_balance(para_a, 0); - register_parachain(para_b); - run_to_block(5, Some(vec![4, 5])); - - assert_noop!( - Hrmp::init_open_channel(para_a, para_b, 2, 8), - pallet_balances::Error::::InsufficientBalance - ); - }); - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - register_parachain(para_a); - register_parachain_with_balance(para_b, 0); - run_to_block(5, Some(vec![4, 5])); - - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - - assert_noop!( - Hrmp::accept_open_channel(para_b, para_a), - pallet_balances::Error::::InsufficientBalance - ); - }); - } - - #[test] - fn refund_deposit_on_normal_closure() { - let para_a = 32.into(); - let para_b = 64.into(); - - let mut genesis = GenesisConfigBuilder::default(); - genesis.hrmp_sender_deposit = 20; - genesis.hrmp_recipient_deposit = 15; - new_test_ext(genesis.build()).execute_with(|| { - // Register two parachains funded with different amounts of funds and arrange a channel. - register_parachain_with_balance(para_a, 100); - register_parachain_with_balance(para_b, 110); - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 80 - ); - assert_eq!( - ::Currency::free_balance(¶_b.into_account()), - 95 - ); - run_to_block(8, Some(vec![8])); - - // Now, we close the channel and wait until the next session. - Hrmp::close_channel( - para_b, - HrmpChannelId { - sender: para_a, - recipient: para_b, - }, - ) - .unwrap(); - run_to_block(10, Some(vec![10])); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 100 - ); - assert_eq!( - ::Currency::free_balance(¶_b.into_account()), - 110 - ); - }); - } - - #[test] - fn refund_deposit_on_request_expiry() { - let para_a = 32.into(); - let para_b = 64.into(); - - let mut genesis = GenesisConfigBuilder::default(); - genesis.hrmp_sender_deposit = 20; - genesis.hrmp_recipient_deposit = 15; - genesis.hrmp_open_request_ttl = 2; - new_test_ext(genesis.build()).execute_with(|| { - // Register two parachains funded with different amounts of funds, send an open channel - // request but do not accept it. - register_parachain_with_balance(para_a, 100); - register_parachain_with_balance(para_b, 110); - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 80 - ); - assert_eq!( - ::Currency::free_balance(¶_b.into_account()), - 110 - ); - - // Request age is 1 out of 2 - run_to_block(10, Some(vec![10])); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 80 - ); - - // Request age is 2 out of 2. The request should expire. - run_to_block(20, Some(vec![20])); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 100 - ); - }); - } - - #[test] - fn refund_deposit_on_offboarding() { - let para_a = 32.into(); - let para_b = 64.into(); - - let mut genesis = GenesisConfigBuilder::default(); - genesis.hrmp_sender_deposit = 20; - genesis.hrmp_recipient_deposit = 15; - new_test_ext(genesis.build()).execute_with(|| { - // Register two parachains and open a channel between them. - register_parachain_with_balance(para_a, 100); - register_parachain_with_balance(para_b, 110); - run_to_block(5, Some(vec![4, 5])); - Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 80 - ); - assert_eq!( - ::Currency::free_balance(¶_b.into_account()), - 95 - ); - run_to_block(8, Some(vec![8])); - assert!(channel_exists(para_a, para_b)); - - // Then deregister one parachain. - deregister_parachain(para_a); - run_to_block(10, Some(vec![9, 10])); - - // The channel should be removed. - assert!(!Paras::is_valid_para(para_a)); - assert!(!channel_exists(para_a, para_b)); - assert_storage_consistency_exhaustive(); - - assert_eq!( - ::Currency::free_balance(¶_a.into_account()), - 100 - ); - assert_eq!( - ::Currency::free_balance(¶_b.into_account()), - 110 - ); - }); - } -} diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs deleted file mode 100644 index 79b682a4d192..000000000000 --- a/runtime/parachains/src/inclusion.rs +++ /dev/null @@ -1,2556 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The inclusion module is responsible for inclusion and availability of scheduled parachains -//! and parathreads. -//! -//! It is responsible for carrying candidates from being backable to being backed, and then from backed -//! to included. - -use sp_std::prelude::*; -use primitives::v1::{ - CandidateCommitments, CandidateDescriptor, ValidatorIndex, Id as ParaId, - AvailabilityBitfield as AvailabilityBitfield, UncheckedSignedAvailabilityBitfields, SigningContext, - BackedCandidate, CoreIndex, GroupIndex, CommittedCandidateReceipt, - CandidateReceipt, HeadData, CandidateHash, -}; -use frame_support::{ - decl_storage, decl_module, decl_error, decl_event, ensure, dispatch::DispatchResult, IterableStorageMap, - weights::Weight, traits::Get, -}; -use parity_scale_codec::{Encode, Decode}; -use bitvec::{order::Lsb0 as BitOrderLsb0, vec::BitVec}; -use sp_runtime::{DispatchError, traits::{One, Saturating}}; - -use crate::{configuration, paras, dmp, ump, hrmp, shared, scheduler::CoreAssignment}; - -/// A bitfield signed by a validator indicating that it is keeping its piece of the erasure-coding -/// for any backed candidates referred to by a `1` bit available. -/// -/// The bitfield's signature should be checked at the point of submission. Afterwards it can be -/// dropped. -#[derive(Encode, Decode)] -#[cfg_attr(test, derive(Debug))] -pub struct AvailabilityBitfieldRecord { - bitfield: AvailabilityBitfield, // one bit per core. - submitted_at: N, // for accounting, as meaning of bits may change over time. -} - -/// A backed candidate pending availability. -#[derive(Encode, Decode, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct CandidatePendingAvailability { - /// The availability core this is assigned to. - core: CoreIndex, - /// The candidate hash. - hash: CandidateHash, - /// The candidate descriptor. - descriptor: CandidateDescriptor, - /// The received availability votes. One bit per validator. - availability_votes: BitVec, - /// The backers of the candidate pending availability. - backers: BitVec, - /// The block number of the relay-parent of the receipt. - relay_parent_number: N, - /// The block number of the relay-chain block this was backed in. - backed_in_number: N, - /// The group index backing this block. - backing_group: GroupIndex, -} - -impl CandidatePendingAvailability { - /// Get the availability votes on the candidate. - pub(crate) fn availability_votes(&self) -> &BitVec { - &self.availability_votes - } - - /// Get the relay-chain block number this was backed in. - pub(crate) fn backed_in_number(&self) -> &N { - &self.backed_in_number - } - - /// Get the core index. - pub(crate) fn core_occupied(&self)-> CoreIndex { - self.core.clone() - } - - /// Get the candidate hash. - pub(crate) fn candidate_hash(&self) -> CandidateHash { - self.hash - } - - /// Get the canddiate descriptor. - pub(crate) fn candidate_descriptor(&self) -> &CandidateDescriptor { - &self.descriptor - } -} - -/// A hook for applying validator rewards -pub trait RewardValidators { - // Reward the validators with the given indices for issuing backing statements. - fn reward_backing(validators: impl IntoIterator); - // Reward the validators with the given indices for issuing availability bitfields. - // Validators are sent to this hook when they have contributed to the availability - // of a candidate by setting a bit in their bitfield. - fn reward_bitfields(validators: impl IntoIterator); -} - -pub trait Config: - frame_system::Config - + shared::Config - + paras::Config - + dmp::Config - + ump::Config - + hrmp::Config - + configuration::Config -{ - type Event: From> + Into<::Event>; - type RewardValidators: RewardValidators; -} - -decl_storage! { - trait Store for Module as ParaInclusion { - /// The latest bitfield for each validator, referred to by their index in the validator set. - AvailabilityBitfields: map hasher(twox_64_concat) ValidatorIndex - => Option>; - - /// Candidates pending availability by `ParaId`. - PendingAvailability: map hasher(twox_64_concat) ParaId - => Option>; - - /// The commitments of candidates pending availability, by ParaId. - PendingAvailabilityCommitments: map hasher(twox_64_concat) ParaId - => Option; - } -} - -decl_error! { - pub enum Error for Module { - /// Availability bitfield has unexpected size. - WrongBitfieldSize, - /// Multiple bitfields submitted by same validator or validators out of order by index. - BitfieldDuplicateOrUnordered, - /// Validator index out of bounds. - ValidatorIndexOutOfBounds, - /// Invalid signature - InvalidBitfieldSignature, - /// Candidate submitted but para not scheduled. - UnscheduledCandidate, - /// Candidate scheduled despite pending candidate already existing for the para. - CandidateScheduledBeforeParaFree, - /// Candidate included with the wrong collator. - WrongCollator, - /// Scheduled cores out of order. - ScheduledOutOfOrder, - /// Head data exceeds the configured maximum. - HeadDataTooLarge, - /// Code upgrade prematurely. - PrematureCodeUpgrade, - /// Output code is too large - NewCodeTooLarge, - /// Candidate not in parent context. - CandidateNotInParentContext, - /// The bitfield contains a bit relating to an unassigned availability core. - UnoccupiedBitInBitfield, - /// Invalid group index in core assignment. - InvalidGroupIndex, - /// Insufficient (non-majority) backing. - InsufficientBacking, - /// Invalid (bad signature, unknown validator, etc.) backing. - InvalidBacking, - /// Collator did not sign PoV. - NotCollatorSigned, - /// The validation data hash does not match expected. - ValidationDataHashMismatch, - /// Internal error only returned when compiled with debug assertions. - InternalError, - /// The downward message queue is not processed correctly. - IncorrectDownwardMessageHandling, - /// At least one upward message sent does not pass the acceptance criteria. - InvalidUpwardMessages, - /// The candidate didn't follow the rules of HRMP watermark advancement. - HrmpWatermarkMishandling, - /// The HRMP messages sent by the candidate is not valid. - InvalidOutboundHrmp, - /// The validation code hash of the candidate is not valid. - InvalidValidationCodeHash, - } -} - -decl_event! { - pub enum Event where ::Hash { - /// A candidate was backed. [candidate, head_data] - CandidateBacked(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// A candidate was included. [candidate, head_data] - CandidateIncluded(CandidateReceipt, HeadData, CoreIndex, GroupIndex), - /// A candidate timed out. [candidate, head_data] - CandidateTimedOut(CandidateReceipt, HeadData, CoreIndex), - } -} - -decl_module! { - /// The parachain-candidate inclusion module. - pub struct Module - for enum Call where origin: ::Origin - { - type Error = Error; - - fn deposit_event() = default; - } -} - -const LOG_TARGET: &str = "runtime::inclusion"; - -impl Module { - /// Block initialization logic, called by initializer. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { 0 } - - /// Block finalization logic, called by initializer. - pub(crate) fn initializer_finalize() { } - - /// Handle an incoming session change. - pub(crate) fn initializer_on_new_session( - _notification: &crate::initializer::SessionChangeNotification - ) { - // unlike most drain methods, drained elements are not cleared on `Drop` of the iterator - // and require consumption. - for _ in ::drain() { } - for _ in >::drain() { } - for _ in >::drain() { } - } - - /// Process a set of incoming bitfields. Return a vec of cores freed by candidates - /// becoming available. - pub(crate) fn process_bitfields( - expected_bits: usize, - unchecked_bitfields: UncheckedSignedAvailabilityBitfields, - core_lookup: impl Fn(CoreIndex) -> Option, - ) -> Result, DispatchError> { - let validators = shared::Module::::active_validator_keys(); - let session_index = shared::Module::::session_index(); - - let mut assigned_paras_record: Vec<_> = (0..expected_bits) - .map(|bit_index| core_lookup(CoreIndex::from(bit_index as u32))) - .map(|core_para| core_para.map(|p| (p, PendingAvailability::::get(&p)))) - .collect(); - - - // do sanity checks on the bitfields: - // 1. no more than one bitfield per validator - // 2. bitfields are ascending by validator index. - // 3. each bitfield has exactly `expected_bits` - // 4. signature is valid. - let signed_bitfields = { - let occupied_bitmask: BitVec = assigned_paras_record.iter() - .map(|p| p.as_ref() - .map_or(false, |(_id, pending_availability)| pending_availability.is_some()) - ) - .collect(); - - let mut last_index = None; - - let signing_context = SigningContext { - parent_hash: >::parent_hash(), - session_index, - }; - - let mut signed_bitfields = Vec::with_capacity(unchecked_bitfields.len()); - - for unchecked_bitfield in unchecked_bitfields { - ensure!( - unchecked_bitfield.unchecked_payload().0.len() == expected_bits, - Error::::WrongBitfieldSize, - ); - - ensure!( - last_index.map_or(true, |last| last < unchecked_bitfield.unchecked_validator_index()), - Error::::BitfieldDuplicateOrUnordered, - ); - - ensure!( - (unchecked_bitfield.unchecked_validator_index().0 as usize) < validators.len(), - Error::::ValidatorIndexOutOfBounds, - ); - - ensure!( - occupied_bitmask.clone() & unchecked_bitfield.unchecked_payload().0.clone() == unchecked_bitfield.unchecked_payload().0, - Error::::UnoccupiedBitInBitfield, - ); - - let validator_public = &validators[unchecked_bitfield.unchecked_validator_index().0 as usize]; - - last_index = Some(unchecked_bitfield.unchecked_validator_index()); - - signed_bitfields.push( - unchecked_bitfield.try_into_checked( - &signing_context, - validator_public, - ).map_err(|_| Error::::InvalidBitfieldSignature)? - ); - } - signed_bitfields - }; - - let now = >::block_number(); - for signed_bitfield in signed_bitfields { - for (bit_idx, _) - in signed_bitfield.payload().0.iter().enumerate().filter(|(_, is_av)| **is_av) - { - let (_, pending_availability) = assigned_paras_record[bit_idx] - .as_mut() - .expect("validator bitfields checked not to contain bits corresponding to unoccupied cores; qed"); - - // defensive check - this is constructed by loading the availability bitfield record, - // which is always `Some` if the core is occupied - that's why we're here. - let val_idx = signed_bitfield.validator_index().0 as usize; - if let Some(mut bit) = pending_availability.as_mut() - .and_then(|r| r.availability_votes.get_mut(val_idx)) - { - *bit = true; - } else if cfg!(debug_assertions) { - ensure!(false, Error::::InternalError); - } - } - - let validator_index = signed_bitfield.validator_index(); - let record = AvailabilityBitfieldRecord { - bitfield: signed_bitfield.into_payload(), - submitted_at: now, - }; - - >::insert(&validator_index, record); - } - - let threshold = availability_threshold(validators.len()); - - let mut freed_cores = Vec::with_capacity(expected_bits); - for (para_id, pending_availability) in assigned_paras_record.into_iter() - .filter_map(|x| x) - .filter_map(|(id, p)| p.map(|p| (id, p))) - { - if pending_availability.availability_votes.count_ones() >= threshold { - >::remove(¶_id); - let commitments = match PendingAvailabilityCommitments::take(¶_id) { - Some(commitments) => commitments, - None => { - log::warn!( - target: LOG_TARGET, - "Inclusion::process_bitfields: PendingAvailability and PendingAvailabilityCommitments - are out of sync, did someone mess with the storage?", - ); - continue; - } - }; - - let receipt = CommittedCandidateReceipt { - descriptor: pending_availability.descriptor, - commitments, - }; - Self::enact_candidate( - pending_availability.relay_parent_number, - receipt, - pending_availability.backers, - pending_availability.availability_votes, - pending_availability.core, - pending_availability.backing_group, - ); - - freed_cores.push(pending_availability.core); - } else { - >::insert(¶_id, &pending_availability); - } - } - - // TODO: pass available candidates onwards to validity module once implemented. - // https://github.com/paritytech/polkadot/issues/1251 - - Ok(freed_cores) - } - - /// Process candidates that have been backed. Provide the relay storage root, a set of candidates - /// and scheduled cores. - /// - /// Both should be sorted ascending by core index, and the candidates should be a subset of - /// scheduled cores. If these conditions are not met, the execution of the function fails. - pub(crate) fn process_candidates( - parent_storage_root: T::Hash, - candidates: Vec>, - scheduled: Vec, - group_validators: impl Fn(GroupIndex) -> Option>, - ) -> Result, DispatchError> { - ensure!(candidates.len() <= scheduled.len(), Error::::UnscheduledCandidate); - - if scheduled.is_empty() { - return Ok(Vec::new()); - } - - let validators = shared::Module::::active_validator_keys(); - let parent_hash = >::parent_hash(); - - // At the moment we assume (and in fact enforce, below) that the relay-parent is always one - // before of the block where we include a candidate (i.e. this code path). - let now = >::block_number(); - let relay_parent_number = now - One::one(); - let check_cx = CandidateCheckContext::::new(now, relay_parent_number); - - // do all checks before writing storage. - let core_indices_and_backers = { - let mut skip = 0; - let mut core_indices_and_backers = Vec::with_capacity(candidates.len()); - let mut last_core = None; - - let mut check_assignment_in_order = |assignment: &CoreAssignment| -> DispatchResult { - ensure!( - last_core.map_or(true, |core| assignment.core > core), - Error::::ScheduledOutOfOrder, - ); - - last_core = Some(assignment.core); - Ok(()) - }; - - let signing_context = SigningContext { - parent_hash, - session_index: shared::Module::::session_index(), - }; - - // We combine an outer loop over candidates with an inner loop over the scheduled, - // where each iteration of the outer loop picks up at the position - // in scheduled just after the past iteration left off. - // - // If the candidates appear in the same order as they appear in `scheduled`, - // then they should always be found. If the end of `scheduled` is reached, - // then the candidate was either not scheduled or out-of-order. - // - // In the meantime, we do certain sanity checks on the candidates and on the scheduled - // list. - 'a: - for (candidate_idx, candidate) in candidates.iter().enumerate() { - let para_id = candidate.descriptor().para_id; - let mut backers = bitvec::bitvec![BitOrderLsb0, u8; 0; validators.len()]; - - // we require that the candidate is in the context of the parent block. - ensure!( - candidate.descriptor().relay_parent == parent_hash, - Error::::CandidateNotInParentContext, - ); - ensure!( - candidate.descriptor().check_collator_signature().is_ok(), - Error::::NotCollatorSigned, - ); - - let validation_code_hash = - >::validation_code_hash_at(para_id, now, None) - // A candidate for a parachain without current validation code is not scheduled. - .ok_or_else(|| Error::::UnscheduledCandidate)?; - ensure!( - candidate.descriptor().validation_code_hash == validation_code_hash, - Error::::InvalidValidationCodeHash, - ); - - if let Err(err) = check_cx - .check_validation_outputs( - para_id, - &candidate.candidate.commitments.head_data, - &candidate.candidate.commitments.new_validation_code, - candidate.candidate.commitments.processed_downward_messages, - &candidate.candidate.commitments.upward_messages, - T::BlockNumber::from(candidate.candidate.commitments.hrmp_watermark), - &candidate.candidate.commitments.horizontal_messages, - ) - { - log::debug!( - target: LOG_TARGET, - "Validation outputs checking during inclusion of a candidate {} for parachain `{}` failed: {:?}", - candidate_idx, - u32::from(para_id), - err, - ); - Err(err.strip_into_dispatch_err::())?; - }; - - for (i, assignment) in scheduled[skip..].iter().enumerate() { - check_assignment_in_order(assignment)?; - - if para_id == assignment.para_id { - if let Some(required_collator) = assignment.required_collator() { - ensure!( - required_collator == &candidate.descriptor().collator, - Error::::WrongCollator, - ); - } - - { - // this should never fail because the para is registered - let persisted_validation_data = - match crate::util::make_persisted_validation_data::( - para_id, - relay_parent_number, - parent_storage_root, - ) { - Some(l) => l, - None => { - // We don't want to error out here because it will - // brick the relay-chain. So we return early without - // doing anything. - return Ok(Vec::new()); - } - }; - - let expected = persisted_validation_data.hash(); - - ensure!( - expected == candidate.descriptor().persisted_validation_data_hash, - Error::::ValidationDataHashMismatch, - ); - } - - ensure!( - >::get(¶_id).is_none() && - ::get(¶_id).is_none(), - Error::::CandidateScheduledBeforeParaFree, - ); - - // account for already skipped, and then skip this one. - skip = i + skip + 1; - - let group_vals = group_validators(assignment.group_idx) - .ok_or_else(|| Error::::InvalidGroupIndex)?; - - // check the signatures in the backing and that it is a majority. - { - let maybe_amount_validated - = primitives::v1::check_candidate_backing( - &candidate, - &signing_context, - group_vals.len(), - |idx| group_vals.get(idx) - .and_then(|i| validators.get(i.0 as usize)) - .map(|v| v.clone()), - ); - - match maybe_amount_validated { - Ok(amount_validated) => ensure!( - amount_validated * 2 > group_vals.len(), - Error::::InsufficientBacking, - ), - Err(()) => { Err(Error::::InvalidBacking)?; } - } - - for (bit_idx, _) in candidate - .validator_indices.iter() - .enumerate().filter(|(_, signed)| **signed) - { - let val_idx = group_vals.get(bit_idx) - .expect("this query done above; qed"); - - backers.set(val_idx.0 as _, true); - } - } - - core_indices_and_backers.push((assignment.core, backers, assignment.group_idx)); - continue 'a; - } - } - - // end of loop reached means that the candidate didn't appear in the non-traversed - // section of the `scheduled` slice. either it was not scheduled or didn't appear in - // `candidates` in the correct order. - ensure!( - false, - Error::::UnscheduledCandidate, - ); - } - - // check remainder of scheduled cores, if any. - for assignment in scheduled[skip..].iter() { - check_assignment_in_order(assignment)?; - } - - core_indices_and_backers - }; - - // one more sweep for actually writing to storage. - let core_indices = core_indices_and_backers.iter().map(|&(ref c, _, _)| c.clone()).collect(); - for (candidate, (core, backers, group)) in candidates.into_iter().zip(core_indices_and_backers) { - let para_id = candidate.descriptor().para_id; - - // initialize all availability votes to 0. - let availability_votes: BitVec - = bitvec::bitvec![BitOrderLsb0, u8; 0; validators.len()]; - - Self::deposit_event(Event::::CandidateBacked( - candidate.candidate.to_plain(), - candidate.candidate.commitments.head_data.clone(), - core, - group, - )); - - let candidate_hash = candidate.candidate.hash(); - - let (descriptor, commitments) = ( - candidate.candidate.descriptor, - candidate.candidate.commitments, - ); - - >::insert(¶_id, CandidatePendingAvailability { - core, - hash: candidate_hash, - descriptor, - availability_votes, - relay_parent_number, - backers, - backed_in_number: check_cx.now, - backing_group: group, - }); - ::insert(¶_id, commitments); - } - - Ok(core_indices) - } - - /// Run the acceptance criteria checks on the given candidate commitments. - pub(crate) fn check_validation_outputs_for_runtime_api( - para_id: ParaId, - validation_outputs: primitives::v1::CandidateCommitments, - ) -> bool { - // This function is meant to be called from the runtime APIs against the relay-parent, hence - // `relay_parent_number` is equal to `now`. - let now = >::block_number(); - let relay_parent_number = now; - let check_cx = CandidateCheckContext::::new(now, relay_parent_number); - - if let Err(err) = check_cx.check_validation_outputs( - para_id, - &validation_outputs.head_data, - &validation_outputs.new_validation_code, - validation_outputs.processed_downward_messages, - &validation_outputs.upward_messages, - T::BlockNumber::from(validation_outputs.hrmp_watermark), - &validation_outputs.horizontal_messages, - ) { - log::debug!( - target: LOG_TARGET, - "Validation outputs checking for parachain `{}` failed: {:?}", - u32::from(para_id), - err, - ); - false - } else { - true - } - } - - fn enact_candidate( - relay_parent_number: T::BlockNumber, - receipt: CommittedCandidateReceipt, - backers: BitVec, - availability_votes: BitVec, - core_index: CoreIndex, - backing_group: GroupIndex, - ) -> Weight { - let plain = receipt.to_plain(); - let commitments = receipt.commitments; - let config = >::config(); - - T::RewardValidators::reward_backing(backers.iter().enumerate() - .filter(|(_, backed)| **backed) - .map(|(i, _)| ValidatorIndex(i as _)) - ); - - T::RewardValidators::reward_bitfields(availability_votes.iter().enumerate() - .filter(|(_, voted)| **voted) - .map(|(i, _)| ValidatorIndex(i as _)) - ); - - // initial weight is config read. - let mut weight = T::DbWeight::get().reads_writes(1, 0); - if let Some(new_code) = commitments.new_validation_code { - weight += >::schedule_code_upgrade( - receipt.descriptor.para_id, - new_code, - relay_parent_number + config.validation_upgrade_delay, - ); - } - - // enact the messaging facet of the candidate. - weight += >::prune_dmq( - receipt.descriptor.para_id, - commitments.processed_downward_messages, - ); - weight += >::receive_upward_messages( - receipt.descriptor.para_id, - commitments.upward_messages, - ); - weight += >::prune_hrmp( - receipt.descriptor.para_id, - T::BlockNumber::from(commitments.hrmp_watermark), - ); - weight += >::queue_outbound_hrmp( - receipt.descriptor.para_id, - commitments.horizontal_messages, - ); - - Self::deposit_event( - Event::::CandidateIncluded(plain, commitments.head_data.clone(), core_index, backing_group) - ); - - weight + >::note_new_head( - receipt.descriptor.para_id, - commitments.head_data, - relay_parent_number, - ) - } - - /// Cleans up all paras pending availability that the predicate returns true for. - /// - /// The predicate accepts the index of the core and the block number the core has been occupied - /// since (i.e. the block number the candidate was backed at in this fork of the relay chain). - /// - /// Returns a vector of cleaned-up core IDs. - pub(crate) fn collect_pending(pred: impl Fn(CoreIndex, T::BlockNumber) -> bool) -> Vec { - let mut cleaned_up_ids = Vec::new(); - let mut cleaned_up_cores = Vec::new(); - - for (para_id, pending_record) in >::iter() { - if pred(pending_record.core, pending_record.backed_in_number) { - cleaned_up_ids.push(para_id); - cleaned_up_cores.push(pending_record.core); - } - } - - for para_id in cleaned_up_ids { - let pending = >::take(¶_id); - let commitments = ::take(¶_id); - - if let (Some(pending), Some(commitments)) = (pending, commitments) { - // defensive: this should always be true. - let candidate = CandidateReceipt { - descriptor: pending.descriptor, - commitments_hash: commitments.hash(), - }; - - Self::deposit_event(Event::::CandidateTimedOut( - candidate, - commitments.head_data, - pending.core, - )); - } - } - - cleaned_up_cores - } - - /// Forcibly enact the candidate with the given ID as though it had been deemed available - /// by bitfields. - /// - /// Is a no-op if there is no candidate pending availability for this para-id. - /// This should generally not be used but it is useful during execution of Runtime APIs, - /// where the changes to the state are expected to be discarded directly after. - pub(crate) fn force_enact(para: ParaId) { - let pending = >::take(¶); - let commitments = ::take(¶); - - if let (Some(pending), Some(commitments)) = (pending, commitments) { - let candidate = CommittedCandidateReceipt { - descriptor: pending.descriptor, - commitments, - }; - - Self::enact_candidate( - pending.relay_parent_number, - candidate, - pending.backers, - pending.availability_votes, - pending.core, - pending.backing_group, - ); - } - } - - /// Returns the CommittedCandidateReceipt pending availability for the para provided, if any. - pub(crate) fn candidate_pending_availability(para: ParaId) - -> Option> - { - >::get(¶) - .map(|p| p.descriptor) - .and_then(|d| ::get(¶).map(move |c| (d, c))) - .map(|(d, c)| CommittedCandidateReceipt { descriptor: d, commitments: c }) - } - - /// Returns the metadata around the candidate pending availability for the - /// para provided, if any. - pub(crate) fn pending_availability(para: ParaId) - -> Option> - { - >::get(¶) - } -} - -const fn availability_threshold(n_validators: usize) -> usize { - let mut threshold = (n_validators * 2) / 3; - threshold += (n_validators * 2) % 3; - threshold -} - -#[derive(derive_more::From, Debug)] -enum AcceptanceCheckErr { - HeadDataTooLarge, - PrematureCodeUpgrade, - NewCodeTooLarge, - ProcessedDownwardMessages(dmp::ProcessedDownwardMessagesAcceptanceErr), - UpwardMessages(ump::AcceptanceCheckErr), - HrmpWatermark(hrmp::HrmpWatermarkAcceptanceErr), - OutboundHrmp(hrmp::OutboundHrmpAcceptanceErr), -} - -impl AcceptanceCheckErr { - /// Returns the same error so that it can be threaded through a needle of `DispatchError` and - /// ultimately returned from a `Dispatchable`. - fn strip_into_dispatch_err(self) -> Error { - use AcceptanceCheckErr::*; - match self { - HeadDataTooLarge => Error::::HeadDataTooLarge, - PrematureCodeUpgrade => Error::::PrematureCodeUpgrade, - NewCodeTooLarge => Error::::NewCodeTooLarge, - ProcessedDownwardMessages(_) => Error::::IncorrectDownwardMessageHandling, - UpwardMessages(_) => Error::::InvalidUpwardMessages, - HrmpWatermark(_) => Error::::HrmpWatermarkMishandling, - OutboundHrmp(_) => Error::::InvalidOutboundHrmp, - } - } -} - -/// A collection of data required for checking a candidate. -struct CandidateCheckContext { - config: configuration::HostConfiguration, - now: T::BlockNumber, - relay_parent_number: T::BlockNumber, -} - -impl CandidateCheckContext { - fn new(now: T::BlockNumber, relay_parent_number: T::BlockNumber) -> Self { - Self { - config: >::config(), - now, - relay_parent_number, - } - } - - /// Check the given outputs after candidate validation on whether it passes the acceptance - /// criteria. - fn check_validation_outputs( - &self, - para_id: ParaId, - head_data: &HeadData, - new_validation_code: &Option, - processed_downward_messages: u32, - upward_messages: &[primitives::v1::UpwardMessage], - hrmp_watermark: T::BlockNumber, - horizontal_messages: &[primitives::v1::OutboundHrmpMessage], - ) -> Result<(), AcceptanceCheckErr> { - ensure!( - head_data.0.len() <= self.config.max_head_data_size as _, - AcceptanceCheckErr::HeadDataTooLarge, - ); - - // if any, the code upgrade attempt is allowed. - if let Some(new_validation_code) = new_validation_code { - let valid_upgrade_attempt = >::last_code_upgrade(para_id, true) - .map_or(true, |last| { - last <= self.relay_parent_number - && self.relay_parent_number.saturating_sub(last) - >= self.config.validation_upgrade_frequency - }); - ensure!( - valid_upgrade_attempt, - AcceptanceCheckErr::PrematureCodeUpgrade, - ); - ensure!( - new_validation_code.0.len() <= self.config.max_code_size as _, - AcceptanceCheckErr::NewCodeTooLarge, - ); - } - - // check if the candidate passes the messaging acceptance criteria - >::check_processed_downward_messages( - para_id, - processed_downward_messages, - )?; - >::check_upward_messages(&self.config, para_id, upward_messages)?; - >::check_hrmp_watermark( - para_id, - self.relay_parent_number, - hrmp_watermark, - )?; - >::check_outbound_hrmp(&self.config, para_id, horizontal_messages)?; - - Ok(()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use std::sync::Arc; - use futures::executor::block_on; - use primitives::{v0::PARACHAIN_KEY_TYPE_ID, v1::UncheckedSignedAvailabilityBitfield}; - use primitives::v1::{BlockNumber, Hash}; - use primitives::v1::{ - SignedAvailabilityBitfield, CompactStatement as Statement, ValidityAttestation, CollatorId, - CandidateCommitments, SignedStatement, CandidateDescriptor, ValidationCode, ValidatorId, - }; - use sp_keystore::{SyncCryptoStorePtr, SyncCryptoStore}; - use frame_support::traits::{OnFinalize, OnInitialize}; - use keyring::Sr25519Keyring; - use sc_keystore::LocalKeystore; - use crate::mock::{ - new_test_ext, Configuration, Paras, System, Inclusion, - MockGenesisConfig, Test, Shared, - }; - use crate::initializer::SessionChangeNotification; - use crate::configuration::HostConfiguration; - use crate::paras::ParaGenesisArgs; - use crate::scheduler::AssignmentKind; - - fn default_config() -> HostConfiguration { - let mut config = HostConfiguration::default(); - config.parathread_cores = 1; - config.max_code_size = 3; - config - } - - fn genesis_config(paras: Vec<(ParaId, bool)>) -> MockGenesisConfig { - MockGenesisConfig { - paras: paras::GenesisConfig { - paras: paras.into_iter().map(|(id, is_chain)| (id, ParaGenesisArgs { - genesis_head: Vec::new().into(), - validation_code: Vec::new().into(), - parachain: is_chain, - })).collect(), - ..Default::default() - }, - configuration: configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - } - } - - #[derive(Debug, Clone, Copy, PartialEq)] - enum BackingKind { - #[allow(unused)] - Unanimous, - Threshold, - Lacking, - } - - fn collator_sign_candidate( - collator: Sr25519Keyring, - candidate: &mut CommittedCandidateReceipt, - ) { - candidate.descriptor.collator = collator.public().into(); - - let payload = primitives::v1::collator_signature_payload( - &candidate.descriptor.relay_parent, - &candidate.descriptor.para_id, - &candidate.descriptor.persisted_validation_data_hash, - &candidate.descriptor.pov_hash, - &candidate.descriptor.validation_code_hash, - ); - - candidate.descriptor.signature = collator.sign(&payload[..]).into(); - assert!(candidate.descriptor().check_collator_signature().is_ok()); - } - - async fn back_candidate( - candidate: CommittedCandidateReceipt, - validators: &[Sr25519Keyring], - group: &[ValidatorIndex], - keystore: &SyncCryptoStorePtr, - signing_context: &SigningContext, - kind: BackingKind, - ) -> BackedCandidate { - let mut validator_indices = bitvec::bitvec![BitOrderLsb0, u8; 0; group.len()]; - let threshold = (group.len() / 2) + 1; - - let signing = match kind { - BackingKind::Unanimous => group.len(), - BackingKind::Threshold => threshold, - BackingKind::Lacking => threshold.saturating_sub(1), - }; - - let mut validity_votes = Vec::with_capacity(signing); - let candidate_hash = candidate.hash(); - - for (idx_in_group, val_idx) in group.iter().enumerate().take(signing) { - let key: Sr25519Keyring = validators[val_idx.0 as usize]; - *validator_indices.get_mut(idx_in_group).unwrap() = true; - - let signature = SignedStatement::sign( - &keystore, - Statement::Valid(candidate_hash), - signing_context, - *val_idx, - &key.public().into(), - ).await.unwrap().unwrap().signature().clone(); - - validity_votes.push(ValidityAttestation::Explicit(signature).into()); - } - - let backed = BackedCandidate { - candidate, - validity_votes, - validator_indices, - }; - - let should_pass = match kind { - BackingKind::Unanimous | BackingKind::Threshold => true, - BackingKind::Lacking => false, - }; - - let successfully_backed = primitives::v1::check_candidate_backing( - &backed, - signing_context, - group.len(), - |i| Some(validators[group[i].0 as usize].public().into()), - ).ok().unwrap_or(0) * 2 > group.len(); - - if should_pass { - assert!(successfully_backed); - } else { - assert!(!successfully_backed); - } - - backed - } - - fn run_to_block( - to: BlockNumber, - new_session: impl Fn(BlockNumber) -> Option>, - ) { - while System::block_number() < to { - let b = System::block_number(); - - Inclusion::initializer_finalize(); - Paras::initializer_finalize(); - Shared::initializer_finalize(); - - if let Some(notification) = new_session(b + 1) { - Shared::initializer_on_new_session( - notification.session_index, - notification.random_seed, - ¬ification.new_config, - notification.validators.clone(), - ); - Paras::initializer_on_new_session(¬ification); - Inclusion::initializer_on_new_session(¬ification); - } - - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - Shared::initializer_initialize(b + 1); - Paras::initializer_initialize(b + 1); - Inclusion::initializer_initialize(b + 1); - } - } - - fn expected_bits() -> usize { - Paras::parachains().len() + Configuration::config().parathread_cores as usize - } - - fn default_bitfield() -> AvailabilityBitfield { - AvailabilityBitfield(bitvec::bitvec![BitOrderLsb0, u8; 0; expected_bits()]) - } - - fn default_availability_votes() -> BitVec { - bitvec::bitvec![BitOrderLsb0, u8; 0; Shared::active_validator_keys().len()] - } - - fn default_backing_bitfield() -> BitVec { - bitvec::bitvec![BitOrderLsb0, u8; 0; Shared::active_validator_keys().len()] - } - - fn backing_bitfield(v: &[usize]) -> BitVec { - let mut b = default_backing_bitfield(); - for i in v { - b.set(*i, true); - } - b - } - - fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() - } - - async fn sign_bitfield( - keystore: &SyncCryptoStorePtr, - key: &Sr25519Keyring, - validator_index: ValidatorIndex, - bitfield: AvailabilityBitfield, - signing_context: &SigningContext, - ) - -> SignedAvailabilityBitfield - { - SignedAvailabilityBitfield::sign( - &keystore, - bitfield, - &signing_context, - validator_index, - &key.public().into(), - ).await.unwrap().unwrap() - } - - #[derive(Default)] - struct TestCandidateBuilder { - para_id: ParaId, - head_data: HeadData, - pov_hash: Hash, - relay_parent: Hash, - persisted_validation_data_hash: Hash, - new_validation_code: Option, - validation_code: ValidationCode, - hrmp_watermark: BlockNumber, - } - - impl TestCandidateBuilder { - fn build(self) -> CommittedCandidateReceipt { - CommittedCandidateReceipt { - descriptor: CandidateDescriptor { - para_id: self.para_id, - pov_hash: self.pov_hash, - relay_parent: self.relay_parent, - persisted_validation_data_hash: self.persisted_validation_data_hash, - validation_code_hash: self.validation_code.hash(), - ..Default::default() - }, - commitments: CandidateCommitments { - head_data: self.head_data, - new_validation_code: self.new_validation_code, - hrmp_watermark: self.hrmp_watermark, - ..Default::default() - }, - } - } - } - - fn make_vdata_hash(para_id: ParaId) -> Option { - let relay_parent_number = >::block_number() - 1; - let persisted_validation_data - = crate::util::make_persisted_validation_data::( - para_id, - relay_parent_number, - Default::default(), - )?; - Some(persisted_validation_data.hash()) - } - - #[test] - fn collect_pending_cleans_up_pending() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - new_test_ext(genesis_config(paras)).execute_with(|| { - let default_candidate = TestCandidateBuilder::default().build(); - >::insert(chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: default_candidate.hash(), - descriptor: default_candidate.descriptor.clone(), - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(0), - }); - PendingAvailabilityCommitments::insert(chain_a, default_candidate.commitments.clone()); - - >::insert(&chain_b, CandidatePendingAvailability { - core: CoreIndex::from(1), - hash: default_candidate.hash(), - descriptor: default_candidate.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(1), - }); - PendingAvailabilityCommitments::insert(chain_b, default_candidate.commitments); - - run_to_block(5, |_| None); - - assert!(>::get(&chain_a).is_some()); - assert!(>::get(&chain_b).is_some()); - assert!(::get(&chain_a).is_some()); - assert!(::get(&chain_b).is_some()); - - Inclusion::collect_pending(|core, _since| core == CoreIndex::from(0)); - - assert!(>::get(&chain_a).is_none()); - assert!(>::get(&chain_b).is_some()); - assert!(::get(&chain_a).is_none()); - assert!(::get(&chain_b).is_some()); - }); - } - - #[test] - fn bitfield_checks() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - let signing_context = SigningContext { - parent_hash: System::parent_hash(), - session_index: 5, - }; - - let core_lookup = |core| match core { - core if core == CoreIndex::from(0) => Some(chain_a), - core if core == CoreIndex::from(1) => Some(chain_b), - core if core == CoreIndex::from(2) => Some(thread_a), - core if core == CoreIndex::from(3) => None, // for the expected_cores() + 1 test below. - _ => panic!("out of bounds for testing"), - }; - - // wrong number of bits. - { - let mut bare_bitfield = default_bitfield(); - bare_bitfield.0.push(false); - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ).is_err()); - } - - // wrong number of bits: other way around. - { - let bare_bitfield = default_bitfield(); - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - assert!(Inclusion::process_bitfields( - expected_bits() + 1, - vec![signed.into()], - &core_lookup, - ).is_err()); - } - - // duplicate. - { - let bare_bitfield = default_bitfield(); - let signed: UncheckedSignedAvailabilityBitfield = - block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )).into(); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed.clone(), signed], - &core_lookup, - ).is_err()); - } - - // out of order. - { - let bare_bitfield = default_bitfield(); - let signed_0 = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield.clone(), - &signing_context, - )).into(); - - let signed_1 = block_on(sign_bitfield( - &keystore, - &validators[1], - ValidatorIndex(1), - bare_bitfield, - &signing_context, - )).into(); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed_1, signed_0], - &core_lookup, - ).is_err()); - } - - // non-pending bit set. - { - let mut bare_bitfield = default_bitfield(); - *bare_bitfield.0.get_mut(0).unwrap() = true; - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ).is_err()); - } - - // empty bitfield signed: always OK, but kind of useless. - { - let bare_bitfield = default_bitfield(); - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ).is_ok()); - } - - // bitfield signed with pending bit signed. - { - let mut bare_bitfield = default_bitfield(); - - assert_eq!(core_lookup(CoreIndex::from(0)), Some(chain_a)); - - let default_candidate = TestCandidateBuilder::default().build(); - >::insert(chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: default_candidate.hash(), - descriptor: default_candidate.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(0), - }); - PendingAvailabilityCommitments::insert(chain_a, default_candidate.commitments); - - *bare_bitfield.0.get_mut(0).unwrap() = true; - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - assert!(Inclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ).is_ok()); - - >::remove(chain_a); - PendingAvailabilityCommitments::remove(chain_a); - } - - // bitfield signed with pending bit signed, but no commitments. - { - let mut bare_bitfield = default_bitfield(); - - assert_eq!(core_lookup(CoreIndex::from(0)), Some(chain_a)); - - let default_candidate = TestCandidateBuilder::default().build(); - >::insert(chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: default_candidate.hash(), - descriptor: default_candidate.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(0), - }); - - *bare_bitfield.0.get_mut(0).unwrap() = true; - let signed = block_on(sign_bitfield( - &keystore, - &validators[0], - ValidatorIndex(0), - bare_bitfield, - &signing_context, - )); - - // no core is freed - assert_eq!( - Inclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ), - Ok(vec![]), - ); - } - }); - } - - #[test] - fn supermajority_bitfields_trigger_availability() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - let signing_context = SigningContext { - parent_hash: System::parent_hash(), - session_index: 5, - }; - - let core_lookup = |core| match core { - core if core == CoreIndex::from(0) => Some(chain_a), - core if core == CoreIndex::from(1) => Some(chain_b), - core if core == CoreIndex::from(2) => Some(thread_a), - _ => panic!("Core out of bounds for 2 parachains and 1 parathread core."), - }; - - let candidate_a = TestCandidateBuilder { - para_id: chain_a, - head_data: vec![1, 2, 3, 4].into(), - ..Default::default() - }.build(); - - >::insert(chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: candidate_a.hash(), - descriptor: candidate_a.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: backing_bitfield(&[3, 4]), - backing_group: GroupIndex::from(0), - }); - PendingAvailabilityCommitments::insert(chain_a, candidate_a.commitments); - - let candidate_b = TestCandidateBuilder { - para_id: chain_b, - head_data: vec![5, 6, 7, 8].into(), - ..Default::default() - }.build(); - - >::insert(chain_b, CandidatePendingAvailability { - core: CoreIndex::from(1), - hash: candidate_b.hash(), - descriptor: candidate_b.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 0, - backed_in_number: 0, - backers: backing_bitfield(&[0, 2]), - backing_group: GroupIndex::from(1), - }); - PendingAvailabilityCommitments::insert(chain_b, candidate_b.commitments); - - // this bitfield signals that a and b are available. - let a_and_b_available = { - let mut bare_bitfield = default_bitfield(); - *bare_bitfield.0.get_mut(0).unwrap() = true; - *bare_bitfield.0.get_mut(1).unwrap() = true; - - bare_bitfield - }; - - // this bitfield signals that only a is available. - let a_available = { - let mut bare_bitfield = default_bitfield(); - *bare_bitfield.0.get_mut(0).unwrap() = true; - - bare_bitfield - }; - - let threshold = availability_threshold(validators.len()); - - // 4 of 5 first value >= 2/3 - assert_eq!(threshold, 4); - - let signed_bitfields = validators.iter().enumerate().filter_map(|(i, key)| { - let to_sign = if i < 3 { - a_and_b_available.clone() - } else if i < 4 { - a_available.clone() - } else { - // sign nothing. - return None - }; - - Some(block_on(sign_bitfield( - &keystore, - key, - ValidatorIndex(i as _), - to_sign, - &signing_context, - )).into()) - }).collect(); - - assert!(Inclusion::process_bitfields( - expected_bits(), - signed_bitfields, - &core_lookup, - ).is_ok()); - - // chain A had 4 signing off, which is >= threshold. - // chain B has 3 signing off, which is < threshold. - assert!(>::get(&chain_a).is_none()); - assert!(::get(&chain_a).is_none()); - assert!(::get(&chain_b).is_some()); - assert_eq!( - >::get(&chain_b).unwrap().availability_votes, - { - // check that votes from first 3 were tracked. - - let mut votes = default_availability_votes(); - *votes.get_mut(0).unwrap() = true; - *votes.get_mut(1).unwrap() = true; - *votes.get_mut(2).unwrap() = true; - - votes - }, - ); - - // and check that chain head was enacted. - assert_eq!(Paras::para_head(&chain_a), Some(vec![1, 2, 3, 4].into())); - - // Check that rewards are applied. - { - let rewards = crate::mock::availability_rewards(); - - assert_eq!(rewards.len(), 4); - assert_eq!(rewards.get(&ValidatorIndex(0)).unwrap(), &1); - assert_eq!(rewards.get(&ValidatorIndex(1)).unwrap(), &1); - assert_eq!(rewards.get(&ValidatorIndex(2)).unwrap(), &1); - assert_eq!(rewards.get(&ValidatorIndex(3)).unwrap(), &1); - } - - { - let rewards = crate::mock::backing_rewards(); - - assert_eq!(rewards.len(), 2); - assert_eq!(rewards.get(&ValidatorIndex(3)).unwrap(), &1); - assert_eq!(rewards.get(&ValidatorIndex(4)).unwrap(), &1); - } - }); - } - - #[test] - fn candidate_checks() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - // The block number of the relay-parent for testing. - const RELAY_PARENT_NUM: BlockNumber = 4; - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - run_to_block(5, |_| None); - - let signing_context = SigningContext { - parent_hash: System::parent_hash(), - session_index: 5, - }; - - let group_validators = |group_index: GroupIndex| match group_index { - group_index if group_index == GroupIndex::from(0) => Some(vec![0, 1]), - group_index if group_index == GroupIndex::from(1) => Some(vec![2, 3]), - group_index if group_index == GroupIndex::from(2) => Some(vec![4]), - _ => panic!("Group index out of bounds for 2 parachains and 1 parathread core"), - }.map(|m| m.into_iter().map(ValidatorIndex).collect::>()); - - let thread_collator: CollatorId = Sr25519Keyring::Two.public().into(); - - let chain_a_assignment = CoreAssignment { - core: CoreIndex::from(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex::from(0), - }; - - let chain_b_assignment = CoreAssignment { - core: CoreIndex::from(1), - para_id: chain_b, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex::from(1), - }; - - let thread_a_assignment = CoreAssignment { - core: CoreIndex::from(2), - para_id: thread_a, - kind: AssignmentKind::Parathread(thread_collator.clone(), 0), - group_idx: GroupIndex::from(2), - }; - - // unscheduled candidate. - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_b_assignment.clone()], - &group_validators, - ), - Err(Error::::UnscheduledCandidate.into()), - ); - } - - // candidates out of order. - { - let mut candidate_a = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - let mut candidate_b = TestCandidateBuilder { - para_id: chain_b, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(2), - persisted_validation_data_hash: make_vdata_hash(chain_b).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate_a, - ); - - collator_sign_candidate( - Sr25519Keyring::Two, - &mut candidate_b, - ); - - let backed_a = block_on(back_candidate( - candidate_a, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let backed_b = block_on(back_candidate( - candidate_b, - &validators, - group_validators(GroupIndex::from(1)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - // out-of-order manifests as unscheduled. - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed_b, backed_a], - vec![chain_a_assignment.clone(), chain_b_assignment.clone()], - &group_validators, - ), - Err(Error::::UnscheduledCandidate.into()), - ); - } - - // candidate not backed. - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Lacking, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::InsufficientBacking.into()), - ); - } - - // candidate not in parent context. - { - let wrong_parent_hash = Hash::repeat_byte(222); - assert!(System::parent_hash() != wrong_parent_hash); - - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: wrong_parent_hash, - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::CandidateNotInParentContext.into()), - ); - } - - // candidate has wrong collator. - { - let mut candidate = TestCandidateBuilder { - para_id: thread_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(thread_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - assert!(CollatorId::from(Sr25519Keyring::One.public()) != thread_collator); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(2)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![ - chain_a_assignment.clone(), - chain_b_assignment.clone(), - thread_a_assignment.clone(), - ], - &group_validators, - ), - Err(Error::::WrongCollator.into()), - ); - } - - // candidate not well-signed by collator. - { - let mut candidate = TestCandidateBuilder { - para_id: thread_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(thread_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - assert_eq!(CollatorId::from(Sr25519Keyring::Two.public()), thread_collator); - collator_sign_candidate( - Sr25519Keyring::Two, - &mut candidate, - ); - - // change the candidate after signing. - candidate.descriptor.pov_hash = Hash::repeat_byte(2); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(2)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![thread_a_assignment.clone()], - &group_validators, - ), - Err(Error::::NotCollatorSigned.into()), - ); - } - - // para occupied - reject. - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let candidate = TestCandidateBuilder::default().build(); - >::insert(&chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: candidate.hash(), - descriptor: candidate.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 3, - backed_in_number: 4, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(0), - }); - ::insert(&chain_a, candidate.commitments); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::CandidateScheduledBeforeParaFree.into()), - ); - - >::remove(&chain_a); - ::remove(&chain_a); - } - - // messed up commitments storage - do not panic - reject. - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - // this is not supposed to happen - ::insert(&chain_a, candidate.commitments.clone()); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::CandidateScheduledBeforeParaFree.into()), - ); - - ::remove(&chain_a); - } - - // interfering code upgrade - reject - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - new_validation_code: Some(vec![5, 6, 7, 8].into()), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - Paras::schedule_code_upgrade( - chain_a, - vec![1, 2, 3, 4].into(), - 10, - ); - - assert_eq!(Paras::last_code_upgrade(chain_a, true), Some(10)); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::PrematureCodeUpgrade.into()), - ); - } - - // Bad validation data hash - reject - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: [42u8; 32].into(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::ValidationDataHashMismatch.into()), - ); - } - - // bad validation code hash - { - let mut candidate = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - validation_code: ValidationCode(vec![1]), - ..Default::default() - }.build(); - - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate, - ); - - let backed = block_on(back_candidate( - candidate, - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - assert_eq!( - Inclusion::process_candidates( - Default::default(), - vec![backed], - vec![chain_a_assignment.clone()], - &group_validators, - ), - Err(Error::::InvalidValidationCodeHash.into()), - ); - } - }); - } - - #[test] - fn backing_works() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - // The block number of the relay-parent for testing. - const RELAY_PARENT_NUM: BlockNumber = 4; - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - run_to_block(5, |_| None); - - let signing_context = SigningContext { - parent_hash: System::parent_hash(), - session_index: 5, - }; - - let group_validators = |group_index: GroupIndex| match group_index { - group_index if group_index == GroupIndex::from(0) => Some(vec![0, 1]), - group_index if group_index == GroupIndex::from(1) => Some(vec![2, 3]), - group_index if group_index == GroupIndex::from(2) => Some(vec![4]), - _ => panic!("Group index out of bounds for 2 parachains and 1 parathread core"), - }.map(|vs| vs.into_iter().map(ValidatorIndex).collect::>()); - - let thread_collator: CollatorId = Sr25519Keyring::Two.public().into(); - - let chain_a_assignment = CoreAssignment { - core: CoreIndex::from(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex::from(0), - }; - - let chain_b_assignment = CoreAssignment { - core: CoreIndex::from(1), - para_id: chain_b, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex::from(1), - }; - - let thread_a_assignment = CoreAssignment { - core: CoreIndex::from(2), - para_id: thread_a, - kind: AssignmentKind::Parathread(thread_collator.clone(), 0), - group_idx: GroupIndex::from(2), - }; - - let mut candidate_a = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate_a, - ); - - let mut candidate_b = TestCandidateBuilder { - para_id: chain_b, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(2), - persisted_validation_data_hash: make_vdata_hash(chain_b).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate_b, - ); - - let mut candidate_c = TestCandidateBuilder { - para_id: thread_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(3), - persisted_validation_data_hash: make_vdata_hash(thread_a).unwrap(), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::Two, - &mut candidate_c, - ); - - let backed_a = block_on(back_candidate( - candidate_a.clone(), - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let backed_b = block_on(back_candidate( - candidate_b.clone(), - &validators, - group_validators(GroupIndex::from(1)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let backed_c = block_on(back_candidate( - candidate_c.clone(), - &validators, - group_validators(GroupIndex::from(2)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let occupied_cores = Inclusion::process_candidates( - Default::default(), - vec![backed_a, backed_b, backed_c], - vec![ - chain_a_assignment.clone(), - chain_b_assignment.clone(), - thread_a_assignment.clone(), - ], - &group_validators, - ).expect("candidates scheduled, in order, and backed"); - - assert_eq!(occupied_cores, vec![CoreIndex::from(0), CoreIndex::from(1), CoreIndex::from(2)]); - - assert_eq!( - >::get(&chain_a), - Some(CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: candidate_a.hash(), - descriptor: candidate_a.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: System::block_number() - 1, - backed_in_number: System::block_number(), - backers: backing_bitfield(&[0, 1]), - backing_group: GroupIndex::from(0), - }) - ); - assert_eq!( - ::get(&chain_a), - Some(candidate_a.commitments), - ); - - assert_eq!( - >::get(&chain_b), - Some(CandidatePendingAvailability { - core: CoreIndex::from(1), - hash: candidate_b.hash(), - descriptor: candidate_b.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: System::block_number() - 1, - backed_in_number: System::block_number(), - backers: backing_bitfield(&[2, 3]), - backing_group: GroupIndex::from(1), - }) - ); - assert_eq!( - ::get(&chain_b), - Some(candidate_b.commitments), - ); - - assert_eq!( - >::get(&thread_a), - Some(CandidatePendingAvailability { - core: CoreIndex::from(2), - hash: candidate_c.hash(), - descriptor: candidate_c.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: System::block_number() - 1, - backed_in_number: System::block_number(), - backers: backing_bitfield(&[4]), - backing_group: GroupIndex::from(2), - }) - ); - assert_eq!( - ::get(&thread_a), - Some(candidate_c.commitments), - ); - }); - } - - #[test] - fn can_include_candidate_with_ok_code_upgrade() { - let chain_a = ParaId::from(1); - - // The block number of the relay-parent for testing. - const RELAY_PARENT_NUM: BlockNumber = 4; - - let paras = vec![(chain_a, true)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - run_to_block(5, |_| None); - - let signing_context = SigningContext { - parent_hash: System::parent_hash(), - session_index: 5, - }; - - let group_validators = |group_index: GroupIndex| match group_index { - group_index if group_index == GroupIndex::from(0) => Some(vec![0, 1, 2, 3, 4]), - _ => panic!("Group index out of bounds for 1 parachain"), - }.map(|vs| vs.into_iter().map(ValidatorIndex).collect::>()); - - let chain_a_assignment = CoreAssignment { - core: CoreIndex::from(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex::from(0), - }; - - let mut candidate_a = TestCandidateBuilder { - para_id: chain_a, - relay_parent: System::parent_hash(), - pov_hash: Hash::repeat_byte(1), - persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), - new_validation_code: Some(vec![1, 2, 3].into()), - hrmp_watermark: RELAY_PARENT_NUM, - ..Default::default() - }.build(); - collator_sign_candidate( - Sr25519Keyring::One, - &mut candidate_a, - ); - - let backed_a = block_on(back_candidate( - candidate_a.clone(), - &validators, - group_validators(GroupIndex::from(0)).unwrap().as_ref(), - &keystore, - &signing_context, - BackingKind::Threshold, - )); - - let occupied_cores = Inclusion::process_candidates( - Default::default(), - vec![backed_a], - vec![ - chain_a_assignment.clone(), - ], - &group_validators, - ).expect("candidates scheduled, in order, and backed"); - - assert_eq!(occupied_cores, vec![CoreIndex::from(0)]); - - assert_eq!( - >::get(&chain_a), - Some(CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: candidate_a.hash(), - descriptor: candidate_a.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: System::block_number() - 1, - backed_in_number: System::block_number(), - backers: backing_bitfield(&[0, 1, 2]), - backing_group: GroupIndex::from(0), - }) - ); - assert_eq!( - ::get(&chain_a), - Some(candidate_a.commitments), - ); - }); - } - - #[test] - fn session_change_wipes() { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let thread_a = ParaId::from(3); - - let paras = vec![(chain_a, true), (chain_b, true), (thread_a, false)]; - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::in_memory()); - for validator in validators.iter() { - SyncCryptoStore::sr25519_generate_new(&*keystore, PARACHAIN_KEY_TYPE_ID, Some(&validator.to_seed())).unwrap(); - } - let validator_public = validator_pubkeys(&validators); - - new_test_ext(genesis_config(paras)).execute_with(|| { - shared::Module::::set_active_validators_ascending(validator_public.clone()); - shared::Module::::set_session_index(5); - - let validators_new = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - ]; - - let validator_public_new = validator_pubkeys(&validators_new); - - run_to_block(10, |_| None); - - >::insert( - &ValidatorIndex(0), - AvailabilityBitfieldRecord { - bitfield: default_bitfield(), - submitted_at: 9, - }, - ); - - >::insert( - &ValidatorIndex(1), - AvailabilityBitfieldRecord { - bitfield: default_bitfield(), - submitted_at: 9, - }, - ); - - >::insert( - &ValidatorIndex(4), - AvailabilityBitfieldRecord { - bitfield: default_bitfield(), - submitted_at: 9, - }, - ); - - let candidate = TestCandidateBuilder::default().build(); - >::insert(&chain_a, CandidatePendingAvailability { - core: CoreIndex::from(0), - hash: candidate.hash(), - descriptor: candidate.descriptor.clone(), - availability_votes: default_availability_votes(), - relay_parent_number: 5, - backed_in_number: 6, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(0), - }); - ::insert(&chain_a, candidate.commitments.clone()); - - >::insert(&chain_b, CandidatePendingAvailability { - core: CoreIndex::from(1), - hash: candidate.hash(), - descriptor: candidate.descriptor, - availability_votes: default_availability_votes(), - relay_parent_number: 6, - backed_in_number: 7, - backers: default_backing_bitfield(), - backing_group: GroupIndex::from(1), - }); - ::insert(&chain_b, candidate.commitments); - - run_to_block(11, |_| None); - - assert_eq!(shared::Module::::session_index(), 5); - - assert!(>::get(&ValidatorIndex(0)).is_some()); - assert!(>::get(&ValidatorIndex(1)).is_some()); - assert!(>::get(&ValidatorIndex(4)).is_some()); - - assert!(>::get(&chain_a).is_some()); - assert!(>::get(&chain_b).is_some()); - assert!(::get(&chain_a).is_some()); - assert!(::get(&chain_b).is_some()); - - run_to_block(12, |n| match n { - 12 => Some(SessionChangeNotification { - validators: validator_public_new.clone(), - queued: Vec::new(), - prev_config: default_config(), - new_config: default_config(), - random_seed: Default::default(), - session_index: 6, - }), - _ => None, - }); - - assert_eq!(shared::Module::::session_index(), 6); - - assert!(>::get(&ValidatorIndex(0)).is_none()); - assert!(>::get(&ValidatorIndex(1)).is_none()); - assert!(>::get(&ValidatorIndex(4)).is_none()); - - assert!(>::get(&chain_a).is_none()); - assert!(>::get(&chain_b).is_none()); - assert!(::get(&chain_a).is_none()); - assert!(::get(&chain_b).is_none()); - - assert!(>::iter().collect::>().is_empty()); - assert!(>::iter().collect::>().is_empty()); - assert!(::iter().collect::>().is_empty()); - }); - } -} diff --git a/runtime/parachains/src/initializer.rs b/runtime/parachains/src/initializer.rs deleted file mode 100644 index 9eb441fd8c12..000000000000 --- a/runtime/parachains/src/initializer.rs +++ /dev/null @@ -1,424 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! This module is responsible for maintaining a consistent initialization order for all other -//! parachains modules. It's also responsible for finalization and session change notifications. -//! -//! This module can throw fatal errors if session-change notifications are received after initialization. - -use sp_std::prelude::*; -use frame_support::weights::{Weight, DispatchClass}; -use frame_support::traits::EnsureOrigin; -use primitives::v1::{ValidatorId, SessionIndex, ConsensusLog, BlockNumber}; -use frame_support::{ - decl_storage, decl_module, decl_error, traits::{OneSessionHandler, Randomness}, -}; -use parity_scale_codec::{Encode, Decode}; -use crate::{ - configuration::{self, HostConfiguration}, - shared, paras, scheduler, inclusion, session_info, dmp, ump, hrmp, -}; - -/// Information about a session change that has just occurred. -#[derive(Clone)] -pub struct SessionChangeNotification { - /// The new validators in the session. - pub validators: Vec, - /// The qeueud validators for the following session. - pub queued: Vec, - /// The configuration before handling the session change - pub prev_config: HostConfiguration, - /// The configuration after handling the session change. - pub new_config: HostConfiguration, - /// A secure random seed for the session, gathered from BABE. - pub random_seed: [u8; 32], - /// New session index. - pub session_index: SessionIndex, -} - -impl> Default for SessionChangeNotification { - fn default() -> Self { - Self { - validators: Vec::new(), - queued: Vec::new(), - prev_config: HostConfiguration::default(), - new_config: HostConfiguration::default(), - random_seed: Default::default(), - session_index: Default::default(), - } - } -} - -#[derive(Encode, Decode)] -struct BufferedSessionChange { - validators: Vec, - queued: Vec, - session_index: SessionIndex, -} - -pub trait Config: - frame_system::Config - + configuration::Config - + shared::Config - + paras::Config - + scheduler::Config - + inclusion::Config - + session_info::Config - + dmp::Config - + ump::Config - + hrmp::Config -{ - /// A randomness beacon. - type Randomness: Randomness; - /// An origin which is allowed to force updates to parachains. - type ForceOrigin: EnsureOrigin<::Origin>; -} - -decl_storage! { - trait Store for Module as Initializer { - /// Whether the parachains modules have been initialized within this block. - /// - /// Semantically a bool, but this guarantees it should never hit the trie, - /// as this is cleared in `on_finalize` and Frame optimizes `None` values to be empty values. - /// - /// As a bool, `set(false)` and `remove()` both lead to the next `get()` being false, but one of - /// them writes to the trie and one does not. This confusion makes `Option<()>` more suitable for - /// the semantics of this variable. - HasInitialized: Option<()>; - /// Buffered session changes along with the block number at which they should be applied. - /// - /// Typically this will be empty or one element long. Apart from that this item never hits - /// the storage. - /// - /// However this is a `Vec` regardless to handle various edge cases that may occur at runtime - /// upgrade boundaries or if governance intervenes. - BufferedSessionChanges: Vec; - } -} - -decl_error! { - pub enum Error for Module { } -} - -decl_module! { - /// The initializer module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - fn on_initialize(now: T::BlockNumber) -> Weight { - // The other modules are initialized in this order: - // - Configuration - // - Paras - // - Scheduler - // - Inclusion - // - SessionInfo - // - Validity - // - DMP - // - UMP - // - HRMP - let total_weight = configuration::Module::::initializer_initialize(now) + - shared::Module::::initializer_initialize(now) + - paras::Module::::initializer_initialize(now) + - scheduler::Module::::initializer_initialize(now) + - inclusion::Module::::initializer_initialize(now) + - session_info::Module::::initializer_initialize(now) + - dmp::Module::::initializer_initialize(now) + - ump::Module::::initializer_initialize(now) + - hrmp::Module::::initializer_initialize(now); - - HasInitialized::set(Some(())); - - total_weight - } - - fn on_finalize() { - // reverse initialization order. - hrmp::Module::::initializer_finalize(); - ump::Module::::initializer_finalize(); - dmp::Module::::initializer_finalize(); - session_info::Module::::initializer_finalize(); - inclusion::Module::::initializer_finalize(); - scheduler::Module::::initializer_finalize(); - paras::Module::::initializer_finalize(); - shared::Module::::initializer_finalize(); - configuration::Module::::initializer_finalize(); - - // Apply buffered session changes as the last thing. This way the runtime APIs and the - // next block will observe the next session. - // - // Note that we only apply the last session as all others lasted less than a block (weirdly). - if let Some(BufferedSessionChange { - session_index, - validators, - queued, - }) = BufferedSessionChanges::take().pop() - { - Self::apply_new_session(session_index, validators, queued); - } - - HasInitialized::take(); - } - - /// Issue a signal to the consensus engine to forcibly act as though all parachain - /// blocks in all relay chain blocks up to and including the given number in the current - /// chain are valid and should be finalized. - #[weight = (0, DispatchClass::Operational)] - fn force_approve(origin, up_to: BlockNumber) { - T::ForceOrigin::ensure_origin(origin)?; - - frame_system::Pallet::::deposit_log(ConsensusLog::ForceApprove(up_to).into()); - } - } -} - -impl Module { - fn apply_new_session( - session_index: SessionIndex, - all_validators: Vec, - queued: Vec, - ) { - let prev_config = >::config(); - - let random_seed = { - let mut buf = [0u8; 32]; - // TODO: audit usage of randomness API - // https://github.com/paritytech/polkadot/issues/2601 - let (random_hash, _) = T::Randomness::random(&b"paras"[..]); - let len = sp_std::cmp::min(32, random_hash.as_ref().len()); - buf[..len].copy_from_slice(&random_hash.as_ref()[..len]); - buf - }; - - // We can't pass the new config into the thing that determines the new config, - // so we don't pass the `SessionChangeNotification` into this module. - configuration::Module::::initializer_on_new_session(&session_index); - - let new_config = >::config(); - - let validators = shared::Module::::initializer_on_new_session( - session_index, - random_seed.clone(), - &new_config, - all_validators, - ); - - let notification = SessionChangeNotification { - validators, - queued, - prev_config, - new_config, - random_seed, - session_index, - }; - - let outgoing_paras = paras::Module::::initializer_on_new_session(¬ification); - scheduler::Module::::initializer_on_new_session(¬ification); - inclusion::Module::::initializer_on_new_session(¬ification); - session_info::Module::::initializer_on_new_session(¬ification); - dmp::Module::::initializer_on_new_session(¬ification, &outgoing_paras); - ump::Module::::initializer_on_new_session(¬ification, &outgoing_paras); - hrmp::Module::::initializer_on_new_session(¬ification, &outgoing_paras); - } - - /// Should be called when a new session occurs. Buffers the session notification to be applied - /// at the end of the block. If `queued` is `None`, the `validators` are considered queued. - fn on_new_session<'a, I: 'a>( - _changed: bool, - session_index: SessionIndex, - validators: I, - queued: Option, - ) - where I: Iterator - { - let validators: Vec<_> = validators.map(|(_, v)| v).collect(); - let queued: Vec<_> = if let Some(queued) = queued { - queued.map(|(_, v)| v).collect() - } else { - validators.clone() - }; - - if session_index == 0 { - // Genesis session should be immediately enacted. - Self::apply_new_session(0, validators, queued); - } else { - BufferedSessionChanges::mutate(|v| v.push(BufferedSessionChange { - validators, - queued, - session_index, - })); - } - - } -} - -impl sp_runtime::BoundToRuntimeAppPublic for Module { - type Public = ValidatorId; -} - -impl OneSessionHandler for Module { - type Key = ValidatorId; - - fn on_genesis_session<'a, I: 'a>(validators: I) - where I: Iterator - { - >::on_new_session(false, 0, validators, None); - } - - fn on_new_session<'a, I: 'a>(changed: bool, validators: I, queued: I) - where I: Iterator - { - let session_index = >::current_index(); - >::on_new_session(changed, session_index, validators, Some(queued)); - } - - fn on_disabled(_i: usize) { } -} - -#[cfg(test)] -mod tests { - use super::*; - use primitives::v1::{Id as ParaId}; - use crate::mock::{ - new_test_ext, - Initializer, System, Dmp, Paras, Configuration, SessionInfo, MockGenesisConfig, - }; - - use frame_support::{ - assert_ok, - traits::{OnFinalize, OnInitialize}, - }; - - #[test] - fn session_0_is_instantly_applied() { - new_test_ext(Default::default()).execute_with(|| { - Initializer::on_new_session( - false, - 0, - Vec::new().into_iter(), - Some(Vec::new().into_iter()), - ); - - let v = ::get(); - assert!(v.is_empty()); - - assert_eq!(SessionInfo::earliest_stored_session(), 0); - assert!(SessionInfo::session_info(0).is_some()); - }); - } - - #[test] - fn session_change_before_initialize_is_still_buffered_after() { - new_test_ext(Default::default()).execute_with(|| { - Initializer::on_new_session( - false, - 1, - Vec::new().into_iter(), - Some(Vec::new().into_iter()), - ); - - let now = System::block_number(); - Initializer::on_initialize(now); - - let v = ::get(); - assert_eq!(v.len(), 1); - }); - } - - #[test] - fn session_change_applied_on_finalize() { - new_test_ext(Default::default()).execute_with(|| { - Initializer::on_initialize(1); - Initializer::on_new_session( - false, - 1, - Vec::new().into_iter(), - Some(Vec::new().into_iter()), - ); - - Initializer::on_finalize(1); - - assert!(::get().is_empty()); - }); - } - - #[test] - fn sets_flag_on_initialize() { - new_test_ext(Default::default()).execute_with(|| { - Initializer::on_initialize(1); - - assert!(HasInitialized::get().is_some()); - }) - } - - #[test] - fn clears_flag_on_finalize() { - new_test_ext(Default::default()).execute_with(|| { - Initializer::on_initialize(1); - Initializer::on_finalize(1); - - assert!(HasInitialized::get().is_none()); - }) - } - - #[test] - fn scheduled_cleanup_performed() { - let a = ParaId::from(1312); - let b = ParaId::from(228); - let c = ParaId::from(123); - - let mock_genesis = crate::paras::ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: Default::default(), - }; - - new_test_ext( - MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: crate::configuration::HostConfiguration { - max_downward_message_size: 1024, - ..Default::default() - }, - }, - paras: crate::paras::GenesisConfig { - paras: vec![ - (a, mock_genesis.clone()), - (b, mock_genesis.clone()), - (c, mock_genesis.clone()), - ], - ..Default::default() - }, - ..Default::default() - } - ).execute_with(|| { - - // enqueue downward messages to A, B and C. - assert_ok!(Dmp::queue_downward_message(&Configuration::config(), a, vec![1, 2, 3])); - assert_ok!(Dmp::queue_downward_message(&Configuration::config(), b, vec![4, 5, 6])); - assert_ok!(Dmp::queue_downward_message(&Configuration::config(), c, vec![7, 8, 9])); - - assert_ok!(Paras::schedule_para_cleanup(a)); - assert_ok!(Paras::schedule_para_cleanup(b)); - - // Apply session 2 in the future - Initializer::apply_new_session(2, vec![], vec![]); - - assert!(Dmp::dmq_contents(a).is_empty()); - assert!(Dmp::dmq_contents(b).is_empty()); - assert!(!Dmp::dmq_contents(c).is_empty()); - }); - } -} diff --git a/runtime/parachains/src/lib.rs b/runtime/parachains/src/lib.rs deleted file mode 100644 index b486d82958ac..000000000000 --- a/runtime/parachains/src/lib.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Runtime modules for parachains code. -//! -//! It is crucial to include all the modules from this crate in the runtime, in -//! particular the `Initializer` module, as it is responsible for initializing the state -//! of the other modules. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod configuration; -pub mod shared; -pub mod inclusion; -pub mod initializer; -pub mod paras; -pub mod paras_inherent; -pub mod scheduler; -pub mod session_info; -pub mod origin; -pub mod dmp; -pub mod ump; -pub mod hrmp; -pub mod reward_points; - -pub mod runtime_api_impl; - -mod util; - -#[cfg(test)] -mod mock; - -pub use origin::{Origin, ensure_parachain}; -use primitives::v1::Id as ParaId; -pub use paras::ParaLifecycle; - -/// Schedule a para to be initialized at the start of the next session with the given genesis data. -pub fn schedule_para_initialize( - id: ParaId, - genesis: paras::ParaGenesisArgs, -) -> Result<(), ()> { - >::schedule_para_initialize(id, genesis).map_err(|_| ()) -} - -/// Schedule a para to be cleaned up at the start of the next session. -pub fn schedule_para_cleanup(id: primitives::v1::Id) -> Result<(), ()> { - >::schedule_para_cleanup(id).map_err(|_| ()) -} - -/// Schedule a parathread to be upgraded to a parachain. -pub fn schedule_parathread_upgrade(id: ParaId) -> Result<(), ()> { - paras::Module::::schedule_parathread_upgrade(id).map_err(|_| ()) -} - -/// Schedule a parachain to be downgraded to a parathread. -pub fn schedule_parachain_downgrade(id: ParaId) -> Result<(), ()> { - paras::Module::::schedule_parachain_downgrade(id).map_err(|_| ()) -} diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs deleted file mode 100644 index 82d17a9e0b9d..000000000000 --- a/runtime/parachains/src/mock.rs +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Mocks for all the traits. - -use sp_io::TestExternalities; -use sp_core::H256; -use sp_runtime::traits::{ - BlakeTwo256, IdentityLookup, -}; -use primitives::v1::{AuthorityDiscoveryId, Balance, BlockNumber, Header, ValidatorIndex}; -use frame_support::parameter_types; -use frame_support_test::TestRandomness; -use std::cell::RefCell; -use std::collections::HashMap; -use crate::{ - inclusion, scheduler, dmp, ump, hrmp, session_info, paras, configuration, - initializer, shared, -}; - -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; -type Block = frame_system::mocking::MockBlock; - -frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Paras: paras::{Pallet, Origin, Call, Storage, Event, Config}, - Configuration: configuration::{Pallet, Call, Storage, Config}, - Shared: shared::{Pallet, Call, Storage}, - Inclusion: inclusion::{Pallet, Call, Storage, Event}, - Scheduler: scheduler::{Pallet, Call, Storage}, - Initializer: initializer::{Pallet, Call, Storage}, - Dmp: dmp::{Pallet, Call, Storage}, - Ump: ump::{Pallet, Call, Storage, Event}, - Hrmp: hrmp::{Pallet, Call, Storage, Event}, - SessionInfo: session_info::{Pallet, Call, Storage}, - } -); - -parameter_types! { - pub const BlockHashCount: u32 = 250; - pub BlockWeights: frame_system::limits::BlockWeights = - frame_system::limits::BlockWeights::simple_max(4 * 1024 * 1024); -} - -impl frame_system::Config for Test { - type BaseCallFilter = (); - type BlockWeights = BlockWeights; - type BlockLength = (); - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = H256; - type Hashing = BlakeTwo256; - type AccountId = u64; - type Lookup = IdentityLookup; - type Header = Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = (); - type OnSetCode = (); -} - -parameter_types! { - pub static ExistentialDeposit: u64 = 0; -} - -impl pallet_balances::Config for Test { - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type Balance = Balance; - type Event = Event; - type DustRemoval = (); - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type WeightInfo = (); -} - -impl crate::initializer::Config for Test { - type Randomness = TestRandomness; - type ForceOrigin = frame_system::EnsureRoot; -} - -impl crate::configuration::Config for Test { } - -impl crate::shared::Config for Test { } - -impl crate::paras::Config for Test { - type Origin = Origin; - type Event = Event; -} - -impl crate::dmp::Config for Test { } - -parameter_types! { - pub const FirstMessageFactorPercent: u64 = 100; -} - -impl crate::ump::Config for Test { - type Event = Event; - type UmpSink = crate::ump::mock_sink::MockUmpSink; - type FirstMessageFactorPercent = FirstMessageFactorPercent; -} - -impl crate::hrmp::Config for Test { - type Event = Event; - type Origin = Origin; - type Currency = pallet_balances::Pallet; -} - -impl crate::scheduler::Config for Test { } - -impl crate::inclusion::Config for Test { - type Event = Event; - type RewardValidators = TestRewardValidators; -} - -impl crate::paras_inherent::Config for Test { } - -impl crate::session_info::Config for Test { } - -thread_local! { - pub static DISCOVERY_AUTHORITIES: RefCell> = RefCell::new(Vec::new()); -} - -pub fn discovery_authorities() -> Vec { - DISCOVERY_AUTHORITIES.with(|r| r.borrow().clone()) -} - -pub fn set_discovery_authorities(new: Vec) { - DISCOVERY_AUTHORITIES.with(|r| *r.borrow_mut() = new); -} - -impl crate::session_info::AuthorityDiscoveryConfig for Test { - fn authorities() -> Vec { - discovery_authorities() - } -} - -thread_local! { - pub static BACKING_REWARDS: RefCell> - = RefCell::new(HashMap::new()); - - pub static AVAILABILITY_REWARDS: RefCell> - = RefCell::new(HashMap::new()); -} - -pub fn backing_rewards() -> HashMap { - BACKING_REWARDS.with(|r| r.borrow().clone()) -} - -pub fn availability_rewards() -> HashMap { - AVAILABILITY_REWARDS.with(|r| r.borrow().clone()) -} - -pub struct TestRewardValidators; - -impl inclusion::RewardValidators for TestRewardValidators { - fn reward_backing(v: impl IntoIterator) { - BACKING_REWARDS.with(|r| { - let mut r = r.borrow_mut(); - for i in v { - *r.entry(i).or_insert(0) += 1; - } - }) - } - fn reward_bitfields(v: impl IntoIterator) { - AVAILABILITY_REWARDS.with(|r| { - let mut r = r.borrow_mut(); - for i in v { - *r.entry(i).or_insert(0) += 1; - } - }) - } -} - -/// Create a new set of test externalities. -pub fn new_test_ext(state: MockGenesisConfig) -> TestExternalities { - BACKING_REWARDS.with(|r| r.borrow_mut().clear()); - AVAILABILITY_REWARDS.with(|r| r.borrow_mut().clear()); - - let mut t = state.system.build_storage::().unwrap(); - state.configuration.assimilate_storage(&mut t).unwrap(); - state.paras.assimilate_storage(&mut t).unwrap(); - - t.into() -} - -#[derive(Default)] -pub struct MockGenesisConfig { - pub system: frame_system::GenesisConfig, - pub configuration: crate::configuration::GenesisConfig, - pub paras: crate::paras::GenesisConfig, -} diff --git a/runtime/parachains/src/origin.rs b/runtime/parachains/src/origin.rs deleted file mode 100644 index f238b91fba9d..000000000000 --- a/runtime/parachains/src/origin.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Declaration of the parachain specific origin and a pallet that hosts it. - -use sp_std::result; -use sp_runtime::traits::BadOrigin; -use primitives::v1::Id as ParaId; -use parity_scale_codec::{Decode, Encode}; - -/// Origin for the parachains. -#[derive(PartialEq, Eq, Clone, Encode, Decode, sp_core::RuntimeDebug)] -pub enum Origin { - /// It comes from a parachain. - Parachain(ParaId), -} - -/// Ensure that the origin `o` represents a parachain. -/// Returns `Ok` with the parachain ID that effected the extrinsic or an `Err` otherwise. -pub fn ensure_parachain(o: OuterOrigin) -> result::Result - where OuterOrigin: Into> -{ - match o.into() { - Ok(Origin::Parachain(id)) => Ok(id), - _ => Err(BadOrigin), - } -} - -/// The origin module. -pub trait Config: frame_system::Config {} - -frame_support::decl_module! { - /// There is no way to register an origin type in `construct_runtime` without a pallet the origin - /// belongs to. - /// - /// This module fulfills only the single purpose of housing the `Origin` in `construct_runtime`. - /// - // ideally, though, the `construct_runtime` should support a free-standing origin. - pub struct Module for enum Call where origin: ::Origin {} -} - -impl From for Origin { - fn from(id: u32) -> Origin { - Origin::Parachain(id.into()) - } -} diff --git a/runtime/parachains/src/paras.rs b/runtime/parachains/src/paras.rs deleted file mode 100644 index 2d64721b833c..000000000000 --- a/runtime/parachains/src/paras.rs +++ /dev/null @@ -1,1794 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The paras module is responsible for storing data on parachains and parathreads. -//! -//! It tracks which paras are parachains, what their current head data is in -//! this fork of the relay chain, what their validation code is, and what their past and upcoming -//! validation code is. -//! -//! A para is not considered live until it is registered and activated in this module. Activation can -//! only occur at session boundaries. - -use sp_std::prelude::*; -use sp_std::result; -#[cfg(feature = "std")] -use sp_std::marker::PhantomData; -use primitives::v1::{ - Id as ParaId, ValidationCode, ValidationCodeHash, HeadData, SessionIndex, ConsensusLog, -}; -use sp_runtime::{traits::One, DispatchResult, SaturatedConversion}; -use frame_system::ensure_root; -use frame_support::{ - decl_storage, decl_module, decl_error, decl_event, ensure, - traits::Get, - weights::Weight, -}; -use parity_scale_codec::{Encode, Decode}; -use crate::{configuration, shared, initializer::SessionChangeNotification}; -use sp_core::RuntimeDebug; - -#[cfg(feature = "std")] -use serde::{Serialize, Deserialize}; - -pub use crate::Origin; - -pub trait Config: - frame_system::Config + - configuration::Config + - shared::Config -{ - /// The outer origin type. - type Origin: From - + From<::Origin> - + Into::Origin>>; - - type Event: From + Into<::Event>; -} - -// the two key times necessary to track for every code replacement. -#[derive(Default, Encode, Decode)] -#[cfg_attr(test, derive(Debug, Clone, PartialEq))] -pub struct ReplacementTimes { - /// The relay-chain block number that the code upgrade was expected to be activated. - /// This is when the code change occurs from the para's perspective - after the - /// first parablock included with a relay-parent with number >= this value. - expected_at: N, - /// The relay-chain block number at which the parablock activating the code upgrade was - /// actually included. This means considered included and available, so this is the time at which - /// that parablock enters the acceptance period in this fork of the relay-chain. - activated_at: N, -} - -/// Metadata used to track previous parachain validation code that we keep in -/// the state. -#[derive(Default, Encode, Decode)] -#[cfg_attr(test, derive(Debug, Clone, PartialEq))] -pub struct ParaPastCodeMeta { - /// Block numbers where the code was expected to be replaced and where the code - /// was actually replaced, respectively. The first is used to do accurate lookups - /// of historic code in historic contexts, whereas the second is used to do - /// pruning on an accurate timeframe. These can be used as indices - /// into the `PastCodeHash` map along with the `ParaId` to fetch the code itself. - upgrade_times: Vec>, - /// Tracks the highest pruned code-replacement, if any. This is the `activated_at` value, - /// not the `expected_at` value. - last_pruned: Option, -} - -#[cfg_attr(test, derive(Debug, PartialEq))] -enum UseCodeAt { - /// Use the current code. - Current, - /// Use the code that was replaced at the given block number. - /// This is an inclusive endpoint - a parablock in the context of a relay-chain block on this fork - /// with number N should use the code that is replaced at N. - ReplacedAt(N), -} - -/// The possible states of a para, to take into account delayed lifecycle changes. -/// -/// If the para is in a "transition state", it is expected that the parachain is -/// queued in the `ActionsQueue` to transition it into a stable state. Its lifecycle -/// state will be used to determine the state transition to apply to the para. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -pub enum ParaLifecycle { - /// Para is new and is onboarding as a Parathread or Parachain. - Onboarding, - /// Para is a Parathread. - Parathread, - /// Para is a Parachain. - Parachain, - /// Para is a Parathread which is upgrading to a Parachain. - UpgradingParathread, - /// Para is a Parachain which is downgrading to a Parathread. - DowngradingParachain, - /// Parathread is queued to be offboarded. - OffboardingParathread, - /// Parachain is queued to be offboarded. - OffboardingParachain, -} - -impl ParaLifecycle { - /// Returns true if parachain is currently onboarding. To learn if the - /// parachain is onboarding as a parachain or parathread, look at the - /// `UpcomingGenesis` storage item. - pub fn is_onboarding(&self) -> bool { - matches!(self, ParaLifecycle::Onboarding) - } - - /// Returns true if para is in a stable state, i.e. it is currently - /// a parachain or parathread, and not in any transition state. - pub fn is_stable(&self) -> bool { - matches!(self, ParaLifecycle::Parathread | ParaLifecycle::Parachain) - } - - /// Returns true if para is currently treated as a parachain. - /// This also includes transitioning states, so you may want to combine - /// this check with `is_stable` if you specifically want `Paralifecycle::Parachain`. - pub fn is_parachain(&self) -> bool { - matches!(self, - ParaLifecycle::Parachain | - ParaLifecycle::DowngradingParachain | - ParaLifecycle::OffboardingParachain - ) - } - - /// Returns true if para is currently treated as a parathread. - /// This also includes transitioning states, so you may want to combine - /// this check with `is_stable` if you specifically want `Paralifecycle::Parathread`. - pub fn is_parathread(&self) -> bool { - matches!(self, - ParaLifecycle::Parathread | - ParaLifecycle::UpgradingParathread | - ParaLifecycle::OffboardingParathread - ) - } - - /// Returns true if para is currently offboarding. - pub fn is_offboarding(&self) -> bool { - matches!(self, ParaLifecycle::OffboardingParathread | ParaLifecycle::OffboardingParachain) - } - - /// Returns true if para is in any transitionary state. - pub fn is_transitioning(&self) -> bool { - !Self::is_stable(self) - } -} - -impl ParaPastCodeMeta { - // note a replacement has occurred at a given block number. - fn note_replacement(&mut self, expected_at: N, activated_at: N) { - self.upgrade_times.push(ReplacementTimes { expected_at, activated_at }) - } - - // Yields an identifier that should be used for validating a - // parablock in the context of a particular relay-chain block number in this chain. - // - // a return value of `None` means that there is no code we are aware of that - // should be used to validate at the given height. - fn code_at(&self, para_at: N) -> Option> { - // Find out - // a) if there is a point where code was replaced in the current chain after the context - // we are finding out code for. - // b) what the index of that point is. - // - // The reason we use `activated_at` instead of `expected_at` is that a gap may occur - // between expectation and actual activation. Any block executed in a context from - // `expected_at..activated_at` is expected to activate the code upgrade and therefore should - // use the previous code. - // - // A block executed in the context of `activated_at` should use the new code. - // - // Cases where `expected_at` and `activated_at` are the same, that is, zero-delay code upgrades - // are also handled by this rule correctly. - let replaced_after_pos = self.upgrade_times.iter().position(|t| { - // example: code replaced at (5, 5) - // - // context #4 should use old code - // context #5 should use new code - // - // example: code replaced at (10, 20) - // context #9 should use the old code - // context #10 should use the old code - // context #19 should use the old code - // context #20 should use the new code - para_at < t.activated_at - }); - - if let Some(replaced_after_pos) = replaced_after_pos { - // The earliest stored code replacement needs to be special-cased, since we need to check - // against the pruning state to see if this replacement represents the correct code, or - // is simply after a replacement that actually represents the correct code, but has been pruned. - let was_pruned = replaced_after_pos == 0 - && self.last_pruned.map_or(false, |t| t >= para_at); - - if was_pruned { - None - } else { - Some(UseCodeAt::ReplacedAt(self.upgrade_times[replaced_after_pos].expected_at)) - } - } else { - // No code replacements after this context. - // This means either that the current code is valid, or `para_at` is so old that - // we don't know the code necessary anymore. Compare against `last_pruned` to determine. - self.last_pruned.as_ref().map_or( - Some(UseCodeAt::Current), // nothing pruned, use current - |earliest_activation| if ¶_at < earliest_activation { - None - } else { - Some(UseCodeAt::Current) - }, - ) - } - } - - // The block at which the most recently tracked code change occurred, from the perspective - // of the para. - fn most_recent_change(&self) -> Option { - self.upgrade_times.last().map(|x| x.expected_at.clone()) - } - - // prunes all code upgrade logs occurring at or before `max`. - // note that code replaced at `x` is the code used to validate all blocks before - // `x`. Thus, `max` should be outside of the slashing window when this is invoked. - // - // Since we don't want to prune anything inside the acceptance period, and the parablock only - // enters the acceptance period after being included, we prune based on the activation height of - // the code change, not the expected height of the code change. - // - // returns an iterator of block numbers at which code was replaced, where the replaced - // code should be now pruned, in ascending order. - fn prune_up_to(&'_ mut self, max: N) -> impl Iterator + '_ { - let to_prune = self.upgrade_times.iter().take_while(|t| t.activated_at <= max).count(); - let drained = if to_prune == 0 { - // no-op prune. - self.upgrade_times.drain(self.upgrade_times.len()..) - } else { - // if we are actually pruning something, update the last_pruned member. - self.last_pruned = Some(self.upgrade_times[to_prune - 1].activated_at); - self.upgrade_times.drain(..to_prune) - }; - - drained.map(|times| times.expected_at) - } -} - -/// Arguments for initializing a para. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct ParaGenesisArgs { - /// The initial head data to use. - pub genesis_head: HeadData, - /// The initial validation code to use. - pub validation_code: ValidationCode, - /// True if parachain, false if parathread. - pub parachain: bool, -} - -decl_storage! { - trait Store for Module as Paras { - /// All parachains. Ordered ascending by ParaId. Parathreads are not included. - Parachains get(fn parachains): Vec; - /// The current lifecycle of a all known Para IDs. - ParaLifecycles: map hasher(twox_64_concat) ParaId => Option; - /// The head-data of every registered para. - Heads get(fn para_head): map hasher(twox_64_concat) ParaId => Option; - /// The validation code hash of every live para. - /// - /// Corresponding code can be retrieved with [`CodeByHash`]. - CurrentCodeHash: map hasher(twox_64_concat) ParaId => Option; - /// Actual past code hash, indicated by the para id as well as the block number at which it - /// became outdated. - /// - /// Corresponding code can be retrieved with [`CodeByHash`]. - PastCodeHash: map hasher(twox_64_concat) (ParaId, T::BlockNumber) => Option; - /// Past code of parachains. The parachains themselves may not be registered anymore, - /// but we also keep their code on-chain for the same amount of time as outdated code - /// to keep it available for secondary checkers. - PastCodeMeta get(fn past_code_meta): - map hasher(twox_64_concat) ParaId => ParaPastCodeMeta; - /// Which paras have past code that needs pruning and the relay-chain block at which the code was replaced. - /// Note that this is the actual height of the included block, not the expected height at which the - /// code upgrade would be applied, although they may be equal. - /// This is to ensure the entire acceptance period is covered, not an offset acceptance period starting - /// from the time at which the parachain perceives a code upgrade as having occurred. - /// Multiple entries for a single para are permitted. Ordered ascending by block number. - PastCodePruning: Vec<(ParaId, T::BlockNumber)>; - /// The block number at which the planned code change is expected for a para. - /// The change will be applied after the first parablock for this ID included which executes - /// in the context of a relay chain block with a number >= `expected_at`. - FutureCodeUpgrades get(fn future_code_upgrade_at): map hasher(twox_64_concat) ParaId => Option; - /// The actual future code hash of a para. - /// - /// Corresponding code can be retrieved with [`CodeByHash`]. - FutureCodeHash: map hasher(twox_64_concat) ParaId => Option; - /// The actions to perform during the start of a specific session index. - ActionsQueue get(fn actions_queue): map hasher(twox_64_concat) SessionIndex => Vec; - /// Upcoming paras instantiation arguments. - UpcomingParasGenesis: map hasher(twox_64_concat) ParaId => Option; - /// The number of reference on the validation code in [`CodeByHash`] storage. - CodeByHashRefs: map hasher(identity) ValidationCodeHash => u32; - /// Validation code stored by its hash. - /// - /// This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and - /// [`PastCodeHash`]. - CodeByHash get(fn code_by_hash): map hasher(identity) ValidationCodeHash => Option; - } - add_extra_genesis { - config(paras): Vec<(ParaId, ParaGenesisArgs)>; - config(_phdata): PhantomData; - build(build::); - } -} - -#[cfg(feature = "std")] -fn build(config: &GenesisConfig) { - let mut parachains: Vec<_> = config.paras - .iter() - .filter(|(_, args)| args.parachain) - .map(|&(ref id, _)| id) - .cloned() - .collect(); - - parachains.sort(); - parachains.dedup(); - - Parachains::put(¶chains); - - for (id, genesis_args) in &config.paras { - let code_hash = genesis_args.validation_code.hash(); - >::increase_code_ref(&code_hash, &genesis_args.validation_code); - as Store>::CurrentCodeHash::insert(&id, &code_hash); - as Store>::Heads::insert(&id, &genesis_args.genesis_head); - if genesis_args.parachain { - ParaLifecycles::insert(&id, ParaLifecycle::Parachain); - } else { - ParaLifecycles::insert(&id, ParaLifecycle::Parathread); - } - } -} - -decl_error! { - pub enum Error for Module { - /// Para is not registered in our system. - NotRegistered, - /// Para cannot be onboarded because it is already tracked by our system. - CannotOnboard, - /// Para cannot be offboarded at this time. - CannotOffboard, - /// Para cannot be upgraded to a parachain. - CannotUpgrade, - /// Para cannot be downgraded to a parathread. - CannotDowngrade, - } -} - -decl_event! { - pub enum Event { - /// Current code has been updated for a Para. \[para_id\] - CurrentCodeUpdated(ParaId), - /// Current head has been updated for a Para. \[para_id\] - CurrentHeadUpdated(ParaId), - /// A code upgrade has been scheduled for a Para. \[para_id\] - CodeUpgradeScheduled(ParaId), - /// A new head has been noted for a Para. \[para_id\] - NewHeadNoted(ParaId), - /// A para has been queued to execute pending actions. \[para_id\] - ActionQueued(ParaId, SessionIndex), - } -} - -decl_module! { - /// The parachains configuration module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - fn deposit_event() = default; - - /// Set the storage for the parachain validation code immediately. - #[weight = 0] - fn force_set_current_code(origin, para: ParaId, new_code: ValidationCode) { - ensure_root(origin)?; - let prior_code_hash = ::CurrentCodeHash::get(¶).unwrap_or_default(); - let new_code_hash = new_code.hash(); - Self::increase_code_ref(&new_code_hash, &new_code); - ::CurrentCodeHash::insert(¶, new_code_hash); - - let now = frame_system::Pallet::::block_number(); - Self::note_past_code(para, now, now, prior_code_hash); - Self::deposit_event(Event::CurrentCodeUpdated(para)); - } - - /// Set the storage for the current parachain head data immediately. - #[weight = 0] - fn force_set_current_head(origin, para: ParaId, new_head: HeadData) { - ensure_root(origin)?; - ::Heads::insert(¶, new_head); - Self::deposit_event(Event::CurrentHeadUpdated(para)); - } - - /// Schedule a code upgrade for block `expected_at`. - #[weight = 0] - fn force_schedule_code_upgrade(origin, para: ParaId, new_code: ValidationCode, expected_at: T::BlockNumber) { - ensure_root(origin)?; - Self::schedule_code_upgrade(para, new_code, expected_at); - Self::deposit_event(Event::CodeUpgradeScheduled(para)); - } - - /// Note a new block head for para within the context of the current block. - #[weight = 0] - fn force_note_new_head(origin, para: ParaId, new_head: HeadData) { - ensure_root(origin)?; - let now = frame_system::Pallet::::block_number(); - Self::note_new_head(para, new_head, now); - Self::deposit_event(Event::NewHeadNoted(para)); - } - - /// Put a parachain directly into the next session's action queue. - /// We can't queue it any sooner than this without going into the - /// initializer... - #[weight = 0] - fn force_queue_action(origin, para: ParaId) { - ensure_root(origin)?; - let next_session = shared::Module::::session_index().saturating_add(One::one()); - ActionsQueue::mutate(next_session, |v| { - if let Err(i) = v.binary_search(¶) { - v.insert(i, para); - } - }); - Self::deposit_event(Event::ActionQueued(para, next_session)); - } - } -} - -impl Module { - /// Called by the initializer to initialize the configuration module. - pub(crate) fn initializer_initialize(now: T::BlockNumber) -> Weight { - Self::prune_old_code(now) - } - - /// Called by the initializer to finalize the configuration module. - pub(crate) fn initializer_finalize() { } - - /// Called by the initializer to note that a new session has started. - /// - /// Returns the list of outgoing paras from the actions queue. - pub(crate) fn initializer_on_new_session(notification: &SessionChangeNotification) -> Vec { - let outgoing_paras = Self::apply_actions_queue(notification.session_index); - outgoing_paras - } - - /// The validation code of live para. - pub(crate) fn current_code(para_id: &ParaId) -> Option { - CurrentCodeHash::get(para_id).and_then(|code_hash| { - let code = CodeByHash::get(&code_hash); - if code.is_none() { - log::error!( - "Pallet paras storage is inconsistent, code not found for hash {}", - code_hash, - ); - debug_assert!(false, "inconsistent paras storages"); - } - code - }) - } - - // Apply all para actions queued for the given session index. - // - // The actions to take are based on the lifecycle of of the paras. - // - // The final state of any para after the actions queue should be as a - // parachain, parathread, or not registered. (stable states) - // - // Returns the list of outgoing paras from the actions queue. - fn apply_actions_queue(session: SessionIndex) -> Vec { - let actions = ActionsQueue::take(session); - let mut parachains = ::Parachains::get(); - let now = >::block_number(); - let mut outgoing = Vec::new(); - - for para in actions { - let lifecycle = ParaLifecycles::get(¶); - match lifecycle { - None | Some(ParaLifecycle::Parathread) | Some(ParaLifecycle::Parachain) => { /* Nothing to do... */ }, - // Onboard a new parathread or parachain. - Some(ParaLifecycle::Onboarding) => { - if let Some(genesis_data) = ::UpcomingParasGenesis::take(¶) { - if genesis_data.parachain { - if let Err(i) = parachains.binary_search(¶) { - parachains.insert(i, para); - } - ParaLifecycles::insert(¶, ParaLifecycle::Parachain); - } else { - ParaLifecycles::insert(¶, ParaLifecycle::Parathread); - } - - let code_hash = genesis_data.validation_code.hash(); - ::Heads::insert(¶, genesis_data.genesis_head); - Self::increase_code_ref(&code_hash, &genesis_data.validation_code); - ::CurrentCodeHash::insert(¶, code_hash); - } - }, - // Upgrade a parathread to a parachain - Some(ParaLifecycle::UpgradingParathread) => { - if let Err(i) = parachains.binary_search(¶) { - parachains.insert(i, para); - } - ParaLifecycles::insert(¶, ParaLifecycle::Parachain); - }, - // Downgrade a parachain to a parathread - Some(ParaLifecycle::DowngradingParachain) => { - if let Ok(i) = parachains.binary_search(¶) { - parachains.remove(i); - } - ParaLifecycles::insert(¶, ParaLifecycle::Parathread); - }, - // Offboard a parathread or parachain from the system - Some(ParaLifecycle::OffboardingParachain) | Some(ParaLifecycle::OffboardingParathread) => { - if let Ok(i) = parachains.binary_search(¶) { - parachains.remove(i); - } - - ::Heads::remove(¶); - ::FutureCodeUpgrades::remove(¶); - ParaLifecycles::remove(¶); - let removed_future_code_hash = ::FutureCodeHash::take(¶); - if let Some(removed_future_code_hash) = removed_future_code_hash { - Self::decrease_code_ref(&removed_future_code_hash); - } - - let removed_code_hash = ::CurrentCodeHash::take(¶); - if let Some(removed_code_hash) = removed_code_hash { - Self::note_past_code(para, now, now, removed_code_hash); - } - - outgoing.push(para); - }, - } - } - - // Place the new parachains set in storage. - ::Parachains::set(parachains); - - return outgoing - } - - // note replacement of the code of para with given `id`, which occured in the - // context of the given relay-chain block number. provide the replaced code. - // - // `at` for para-triggered replacement is the block number of the relay-chain - // block in whose context the parablock was executed - // (i.e. number of `relay_parent` in the receipt) - fn note_past_code( - id: ParaId, - at: T::BlockNumber, - now: T::BlockNumber, - old_code_hash: ValidationCodeHash, - ) -> Weight { - ::PastCodeMeta::mutate(&id, |past_meta| { - past_meta.note_replacement(at, now); - }); - - ::PastCodeHash::insert(&(id, at), old_code_hash); - - // Schedule pruning for this past-code to be removed as soon as it - // exits the slashing window. - ::PastCodePruning::mutate(|pruning| { - let insert_idx = pruning.binary_search_by_key(&at, |&(_, b)| b) - .unwrap_or_else(|idx| idx); - pruning.insert(insert_idx, (id, now)); - }); - - T::DbWeight::get().reads_writes(2, 3) - } - - // looks at old code metadata, compares them to the current acceptance window, and prunes those - // that are too old. - fn prune_old_code(now: T::BlockNumber) -> Weight { - let config = configuration::Module::::config(); - let code_retention_period = config.code_retention_period; - if now <= code_retention_period { - let weight = T::DbWeight::get().reads_writes(1, 0); - return weight; - } - - // The height of any changes we no longer should keep around. - let pruning_height = now - (code_retention_period + One::one()); - - let pruning_tasks_done = - ::PastCodePruning::mutate(|pruning_tasks: &mut Vec<(_, T::BlockNumber)>| { - let (pruning_tasks_done, pruning_tasks_to_do) = { - // find all past code that has just exited the pruning window. - let up_to_idx = pruning_tasks.iter() - .take_while(|&(_, at)| at <= &pruning_height) - .count(); - (up_to_idx, pruning_tasks.drain(..up_to_idx)) - }; - - for (para_id, _) in pruning_tasks_to_do { - let full_deactivate = ::PastCodeMeta::mutate(¶_id, |meta| { - for pruned_repl_at in meta.prune_up_to(pruning_height) { - let removed_code_hash = - ::PastCodeHash::take(&(para_id, pruned_repl_at)); - - if let Some(removed_code_hash) = removed_code_hash { - Self::decrease_code_ref(&removed_code_hash); - } else { - log::warn!( - target: "runtime::paras", - "Missing code for removed hash {:?}", - removed_code_hash, - ); - } - } - - meta.most_recent_change().is_none() && Self::para_head(¶_id).is_none() - }); - - // This parachain has been removed and now the vestigial code - // has been removed from the state. clean up meta as well. - if full_deactivate { - ::PastCodeMeta::remove(¶_id); - } - } - - pruning_tasks_done as u64 - }); - - // 1 read for the meta for each pruning task, 1 read for the config - // 2 writes: updating the meta and pruning the code - T::DbWeight::get().reads_writes(1 + pruning_tasks_done, 2 * pruning_tasks_done) - } - - /// Verify that `schedule_para_initialize` can be called successfully. - /// - /// Returns false if para is already registered in the system. - pub fn can_schedule_para_initialize(id: &ParaId, _: &ParaGenesisArgs) -> bool { - let lifecycle = ParaLifecycles::get(id); - lifecycle.is_none() - } - - /// Schedule a para to be initialized at the start of the next session. - /// - /// Will return error if para is already registered in the system. - pub(crate) fn schedule_para_initialize(id: ParaId, genesis: ParaGenesisArgs) -> DispatchResult { - let scheduled_session = Self::scheduled_session(); - - // Make sure parachain isn't already in our system. - ensure!(Self::can_schedule_para_initialize(&id, &genesis), Error::::CannotOnboard); - - ParaLifecycles::insert(&id, ParaLifecycle::Onboarding); - UpcomingParasGenesis::insert(&id, genesis); - ActionsQueue::mutate(scheduled_session, |v| { - if let Err(i) = v.binary_search(&id) { - v.insert(i, id); - } - }); - - Ok(()) - } - - /// Schedule a para to be cleaned up at the start of the next session. - /// - /// Will return error if para is not a stable parachain or parathread. - /// - /// No-op if para is not registered at all. - pub(crate) fn schedule_para_cleanup(id: ParaId) -> DispatchResult { - let lifecycle = ParaLifecycles::get(&id); - match lifecycle { - // If para is not registered, nothing to do! - None => { - return Ok(()) - }, - Some(ParaLifecycle::Parathread) => { - ParaLifecycles::insert(&id, ParaLifecycle::OffboardingParathread); - }, - Some(ParaLifecycle::Parachain) => { - ParaLifecycles::insert(&id, ParaLifecycle::OffboardingParachain); - }, - _ => return Err(Error::::CannotOffboard)?, - } - - let scheduled_session = Self::scheduled_session(); - ActionsQueue::mutate(scheduled_session, |v| { - if let Err(i) = v.binary_search(&id) { - v.insert(i, id); - } - }); - - Ok(()) - } - - /// Schedule a parathread to be upgraded to a parachain. - /// - /// Will return error if `ParaLifecycle` is not `Parathread`. - pub(crate) fn schedule_parathread_upgrade(id: ParaId) -> DispatchResult { - let scheduled_session = Self::scheduled_session(); - let lifecycle = ParaLifecycles::get(&id).ok_or(Error::::NotRegistered)?; - - ensure!(lifecycle == ParaLifecycle::Parathread, Error::::CannotUpgrade); - - ParaLifecycles::insert(&id, ParaLifecycle::UpgradingParathread); - ActionsQueue::mutate(scheduled_session, |v| { - if let Err(i) = v.binary_search(&id) { - v.insert(i, id); - } - }); - - Ok(()) - } - - /// Schedule a parachain to be downgraded to a parathread. - /// - /// Noop if `ParaLifecycle` is not `Parachain`. - pub(crate) fn schedule_parachain_downgrade(id: ParaId) -> DispatchResult { - let scheduled_session = Self::scheduled_session(); - let lifecycle = ParaLifecycles::get(&id).ok_or(Error::::NotRegistered)?; - - ensure!(lifecycle == ParaLifecycle::Parachain, Error::::CannotDowngrade); - - ParaLifecycles::insert(&id, ParaLifecycle::DowngradingParachain); - ActionsQueue::mutate(scheduled_session, |v| { - if let Err(i) = v.binary_search(&id) { - v.insert(i, id); - } - }); - - Ok(()) - } - - /// Schedule a future code upgrade of the given parachain, to be applied after inclusion - /// of a block of the same parachain executed in the context of a relay-chain block - /// with number >= `expected_at` - /// - /// If there is already a scheduled code upgrade for the para, this is a no-op. - pub(crate) fn schedule_code_upgrade( - id: ParaId, - new_code: ValidationCode, - expected_at: T::BlockNumber, - ) -> Weight { - ::FutureCodeUpgrades::mutate(&id, |up| { - if up.is_some() { - T::DbWeight::get().reads_writes(1, 0) - } else { - *up = Some(expected_at); - - let new_code_hash = new_code.hash(); - let expected_at_u32 = expected_at.saturated_into(); - let log = ConsensusLog::ParaScheduleUpgradeCode(id, new_code_hash, expected_at_u32); - >::deposit_log(log.into()); - - let (reads, writes) = Self::increase_code_ref(&new_code_hash, &new_code); - FutureCodeHash::insert(&id, new_code_hash); - T::DbWeight::get().reads_writes(1 + reads, 2 + writes) - } - }) - } - - /// Note that a para has progressed to a new head, where the new head was executed in the context - /// of a relay-chain block with given number. This will apply pending code upgrades based - /// on the block number provided. - pub(crate) fn note_new_head( - id: ParaId, - new_head: HeadData, - execution_context: T::BlockNumber, - ) -> Weight { - Heads::insert(&id, new_head); - - if let Some(expected_at) = ::FutureCodeUpgrades::get(&id) { - if expected_at <= execution_context { - ::FutureCodeUpgrades::remove(&id); - - // Both should always be `Some` in this case, since a code upgrade is scheduled. - let new_code_hash = FutureCodeHash::take(&id).unwrap_or_default(); - let prior_code_hash = CurrentCodeHash::get(&id).unwrap_or_default(); - CurrentCodeHash::insert(&id, &new_code_hash); - - let log = ConsensusLog::ParaUpgradeCode(id, new_code_hash); - >::deposit_log(log.into()); - - // `now` is only used for registering pruning as part of `fn note_past_code` - let now = >::block_number(); - - let weight = Self::note_past_code( - id, - expected_at, - now, - prior_code_hash, - ); - - // add 1 to writes due to heads update. - weight + T::DbWeight::get().reads_writes(3, 1 + 3) - } else { - T::DbWeight::get().reads_writes(1, 1 + 0) - } - } else { - T::DbWeight::get().reads_writes(1, 1) - } - } - - /// Fetches the validation code hash for the validation code to be used when validating a block - /// in the context of the given relay-chain height. A second block number parameter may be used - /// to tell the lookup to proceed as if an intermediate parablock has been with the given - /// relay-chain height as its context. This may return the hash for the past, current, or - /// (with certain choices of `assume_intermediate`) future code. - /// - /// `assume_intermediate`, if provided, must be before `at`. This will return `None` if the validation - /// code has been pruned. - /// - /// To get associated code see [`Self::validation_code_at`]. - pub(crate) fn validation_code_hash_at( - id: ParaId, - at: T::BlockNumber, - assume_intermediate: Option, - ) -> Option { - if assume_intermediate.as_ref().map_or(false, |i| &at <= i) { - return None; - } - - let planned_upgrade = ::FutureCodeUpgrades::get(&id); - let upgrade_applied_intermediate = match assume_intermediate { - Some(a) => planned_upgrade.as_ref().map_or(false, |u| u <= &a), - None => false, - }; - - if upgrade_applied_intermediate { - FutureCodeHash::get(&id) - } else { - match Self::past_code_meta(&id).code_at(at) { - None => None, - Some(UseCodeAt::Current) => CurrentCodeHash::get(&id), - Some(UseCodeAt::ReplacedAt(replaced)) => ::PastCodeHash::get(&(id, replaced)), - } - } - } - - /// Returns the current lifecycle state of the para. - pub fn lifecycle(id: ParaId) -> Option { - ParaLifecycles::get(&id) - } - - /// Returns whether the given ID refers to a valid para. - /// - /// Paras that are onboarding or offboarding are not included. - pub fn is_valid_para(id: ParaId) -> bool { - if let Some(state) = ParaLifecycles::get(&id) { - !state.is_onboarding() && !state.is_offboarding() - } else { - false - } - } - - /// Whether a para ID corresponds to any live parachain. - /// - /// Includes parachains which will downgrade to a parathread in the future. - pub fn is_parachain(id: ParaId) -> bool { - if let Some(state) = ParaLifecycles::get(&id) { - state.is_parachain() - } else { - false - } - } - - /// Whether a para ID corresponds to any live parathread. - /// - /// Includes parathreads which will upgrade to parachains in the future. - pub fn is_parathread(id: ParaId) -> bool { - if let Some(state) = ParaLifecycles::get(&id) { - state.is_parathread() - } else { - false - } - } - - /// The block number of the last scheduled upgrade of the requested para. Includes future upgrades - /// if the flag is set. This is the `expected_at` number, not the `activated_at` number. - pub(crate) fn last_code_upgrade(id: ParaId, include_future: bool) -> Option { - if include_future { - if let Some(at) = Self::future_code_upgrade_at(id) { - return Some(at); - } - } - - Self::past_code_meta(&id).most_recent_change() - } - - /// Return the session index that should be used for any future scheduled changes. - fn scheduled_session() -> SessionIndex { - shared::Module::::scheduled_session() - } - - /// Store the validation code if not already stored, and increase the number of reference. - /// - /// Returns the number of storage reads and number of storage writes. - fn increase_code_ref(code_hash: &ValidationCodeHash, code: &ValidationCode) -> (u64, u64) { - let reads = 1; - let mut writes = 1; - ::CodeByHashRefs::mutate(code_hash, |refs| { - if *refs == 0 { - writes += 1; - ::CodeByHash::insert(code_hash, code); - } - *refs += 1; - }); - (reads, writes) - } - - /// Decrease the number of reference ofthe validation code and remove it from storage if zero - /// is reached. - fn decrease_code_ref(code_hash: &ValidationCodeHash) { - let refs = ::CodeByHashRefs::get(code_hash); - if refs <= 1 { - ::CodeByHash::remove(code_hash); - ::CodeByHashRefs::remove(code_hash); - } else { - ::CodeByHashRefs::insert(code_hash, refs - 1); - } - } - - /// Test function for triggering a new session in this pallet. - #[cfg(any(feature = "std", feature = "runtime-benchmarks", test))] - pub fn test_on_new_session() { - Self::initializer_on_new_session(&SessionChangeNotification { - session_index: shared::Module::::session_index(), - ..Default::default() - }); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use primitives::v1::BlockNumber; - use frame_support::{ - assert_ok, - traits::{OnFinalize, OnInitialize} - }; - - use crate::mock::{new_test_ext, Paras, Shared, System, MockGenesisConfig}; - use crate::configuration::HostConfiguration; - - fn run_to_block(to: BlockNumber, new_session: Option>) { - while System::block_number() < to { - let b = System::block_number(); - Paras::initializer_finalize(); - Shared::initializer_finalize(); - if new_session.as_ref().map_or(false, |v| v.contains(&(b + 1))) { - let mut session_change_notification = SessionChangeNotification::default(); - session_change_notification.session_index = Shared::session_index() + 1; - Shared::initializer_on_new_session( - session_change_notification.session_index, - session_change_notification.random_seed, - &session_change_notification.new_config, - session_change_notification.validators.clone(), - ); - Paras::initializer_on_new_session(&session_change_notification); - } - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - Shared::initializer_initialize(b + 1); - Paras::initializer_initialize(b + 1); - } - } - - fn upgrade_at(expected_at: BlockNumber, activated_at: BlockNumber) -> ReplacementTimes { - ReplacementTimes { expected_at, activated_at } - } - - fn check_code_is_stored(validation_code: &ValidationCode) { - assert!(::CodeByHashRefs::get(validation_code.hash()) != 0); - assert!(::CodeByHash::contains_key(validation_code.hash())); - } - - fn check_code_is_not_stored(validation_code: &ValidationCode) { - assert!(!::CodeByHashRefs::contains_key(validation_code.hash())); - assert!(!::CodeByHash::contains_key(validation_code.hash())); - } - - fn fetch_validation_code_at( - para_id: ParaId, - at: BlockNumber, - assume_intermediate: Option, - ) -> Option { - Paras::validation_code_hash_at(para_id, at, assume_intermediate) - .and_then(Paras::code_by_hash) - } - - #[test] - fn para_past_code_meta_gives_right_code() { - let mut past_code = ParaPastCodeMeta::default(); - assert_eq!(past_code.code_at(0u32), Some(UseCodeAt::Current)); - - past_code.note_replacement(10, 12); - assert_eq!(past_code.code_at(0), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(10), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(11), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(12), Some(UseCodeAt::Current)); - - past_code.note_replacement(20, 25); - assert_eq!(past_code.code_at(1), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(10), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(11), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(12), Some(UseCodeAt::ReplacedAt(20))); - assert_eq!(past_code.code_at(24), Some(UseCodeAt::ReplacedAt(20))); - assert_eq!(past_code.code_at(25), Some(UseCodeAt::Current)); - - past_code.note_replacement(30, 30); - assert_eq!(past_code.code_at(1), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(10), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(11), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(12), Some(UseCodeAt::ReplacedAt(20))); - assert_eq!(past_code.code_at(24), Some(UseCodeAt::ReplacedAt(20))); - assert_eq!(past_code.code_at(25), Some(UseCodeAt::ReplacedAt(30))); - assert_eq!(past_code.code_at(30), Some(UseCodeAt::Current)); - - past_code.last_pruned = Some(5); - assert_eq!(past_code.code_at(1), None); - assert_eq!(past_code.code_at(5), None); - assert_eq!(past_code.code_at(6), Some(UseCodeAt::ReplacedAt(10))); - assert_eq!(past_code.code_at(24), Some(UseCodeAt::ReplacedAt(20))); - assert_eq!(past_code.code_at(25), Some(UseCodeAt::ReplacedAt(30))); - assert_eq!(past_code.code_at(30), Some(UseCodeAt::Current)); - - } - - #[test] - fn para_past_code_pruning_works_correctly() { - let mut past_code = ParaPastCodeMeta::default(); - past_code.note_replacement(10u32, 10); - past_code.note_replacement(20, 25); - past_code.note_replacement(30, 35); - - let old = past_code.clone(); - assert!(past_code.prune_up_to(9).collect::>().is_empty()); - assert_eq!(old, past_code); - - assert_eq!(past_code.prune_up_to(10).collect::>(), vec![10]); - assert_eq!(past_code, ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(20, 25), upgrade_at(30, 35)], - last_pruned: Some(10), - }); - - assert!(past_code.prune_up_to(21).collect::>().is_empty()); - - assert_eq!(past_code.prune_up_to(26).collect::>(), vec![20]); - assert_eq!(past_code, ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(30, 35)], - last_pruned: Some(25), - }); - - past_code.note_replacement(40, 42); - past_code.note_replacement(50, 53); - past_code.note_replacement(60, 66); - - assert_eq!(past_code, ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(30, 35), upgrade_at(40, 42), upgrade_at(50, 53), upgrade_at(60, 66)], - last_pruned: Some(25), - }); - - assert_eq!(past_code.prune_up_to(60).collect::>(), vec![30, 40, 50]); - assert_eq!(past_code, ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(60, 66)], - last_pruned: Some(53), - }); - - assert_eq!(past_code.most_recent_change(), Some(60)); - assert_eq!(past_code.prune_up_to(66).collect::>(), vec![60]); - - assert_eq!(past_code, ParaPastCodeMeta { - upgrade_times: Vec::new(), - last_pruned: Some(66), - }); - } - - #[test] - fn para_past_code_pruning_in_initialize() { - let code_retention_period = 10; - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: Default::default(), - }), - (1u32.into(), ParaGenesisArgs { - parachain: false, - genesis_head: Default::default(), - validation_code: Default::default(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let id = ParaId::from(0u32); - let at_block: BlockNumber = 10; - let included_block: BlockNumber = 12; - let validation_code = ValidationCode(vec![1, 2, 3]); - - Paras::increase_code_ref(&validation_code.hash(), &validation_code); - ::PastCodeHash::insert(&(id, at_block), &validation_code.hash()); - ::PastCodePruning::put(&vec![(id, included_block)]); - - { - let mut code_meta = Paras::past_code_meta(&id); - code_meta.note_replacement(at_block, included_block); - ::PastCodeMeta::insert(&id, &code_meta); - } - - let pruned_at: BlockNumber = included_block + code_retention_period + 1; - assert_eq!(::PastCodeHash::get(&(id, at_block)), Some(validation_code.hash())); - check_code_is_stored(&validation_code); - - run_to_block(pruned_at - 1, None); - assert_eq!(::PastCodeHash::get(&(id, at_block)), Some(validation_code.hash())); - assert_eq!(Paras::past_code_meta(&id).most_recent_change(), Some(at_block)); - check_code_is_stored(&validation_code); - - run_to_block(pruned_at, None); - assert!(::PastCodeHash::get(&(id, at_block)).is_none()); - assert!(Paras::past_code_meta(&id).most_recent_change().is_none()); - check_code_is_not_stored(&validation_code); - }); - } - - #[test] - fn note_new_head_sets_head() { - let code_retention_period = 10; - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: Default::default(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let id_a = ParaId::from(0u32); - - assert_eq!(Paras::para_head(&id_a), Some(Default::default())); - - Paras::note_new_head(id_a, vec![1, 2, 3].into(), 0); - - assert_eq!(Paras::para_head(&id_a), Some(vec![1, 2, 3].into())); - }); - } - - #[test] - fn note_past_code_sets_up_pruning_correctly() { - let code_retention_period = 10; - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: Default::default(), - }), - (1u32.into(), ParaGenesisArgs { - parachain: false, - genesis_head: Default::default(), - validation_code: Default::default(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let id_a = ParaId::from(0u32); - let id_b = ParaId::from(1u32); - - Paras::note_past_code(id_a, 10, 12, ValidationCode(vec![1, 2, 3]).hash()); - Paras::note_past_code(id_b, 20, 23, ValidationCode(vec![4, 5, 6]).hash()); - - assert_eq!(::PastCodePruning::get(), vec![(id_a, 12), (id_b, 23)]); - assert_eq!( - Paras::past_code_meta(&id_a), - ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(10, 12)], - last_pruned: None, - } - ); - assert_eq!( - Paras::past_code_meta(&id_b), - ParaPastCodeMeta { - upgrade_times: vec![upgrade_at(20, 23)], - last_pruned: None, - } - ); - }); - } - - #[test] - fn code_upgrade_applied_after_delay() { - let code_retention_period = 10; - let validation_upgrade_delay = 5; - - let original_code = ValidationCode(vec![1, 2, 3]); - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: original_code.clone(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - validation_upgrade_delay, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - check_code_is_stored(&original_code); - - let para_id = ParaId::from(0); - let new_code = ValidationCode(vec![4, 5, 6]); - - run_to_block(2, None); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - - let expected_at = { - // this parablock is in the context of block 1. - let expected_at = 1 + validation_upgrade_delay; - Paras::schedule_code_upgrade(para_id, new_code.clone(), expected_at); - Paras::note_new_head(para_id, Default::default(), 1); - - assert!(Paras::past_code_meta(¶_id).most_recent_change().is_none()); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(expected_at)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - check_code_is_stored(&original_code); - check_code_is_stored(&new_code); - - expected_at - }; - - run_to_block(expected_at, None); - - // the candidate is in the context of the parent of `expected_at`, - // thus does not trigger the code upgrade. - { - Paras::note_new_head(para_id, Default::default(), expected_at - 1); - - assert!(Paras::past_code_meta(¶_id).most_recent_change().is_none()); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(expected_at)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - check_code_is_stored(&original_code); - check_code_is_stored(&new_code); - } - - run_to_block(expected_at + 1, None); - - // the candidate is in the context of `expected_at`, and triggers - // the upgrade. - { - Paras::note_new_head(para_id, Default::default(), expected_at); - - assert_eq!( - Paras::past_code_meta(¶_id).most_recent_change(), - Some(expected_at), - ); - assert_eq!( - ::PastCodeHash::get(&(para_id, expected_at)), - Some(original_code.hash()), - ); - assert!(::FutureCodeUpgrades::get(¶_id).is_none()); - assert!(::FutureCodeHash::get(¶_id).is_none()); - assert_eq!(Paras::current_code(¶_id), Some(new_code.clone())); - check_code_is_stored(&original_code); - check_code_is_stored(&new_code); - } - }); - } - - #[test] - fn code_upgrade_applied_after_delay_even_when_late() { - let code_retention_period = 10; - let validation_upgrade_delay = 5; - - let original_code = ValidationCode(vec![1, 2, 3]); - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: original_code.clone(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - validation_upgrade_delay, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let para_id = ParaId::from(0); - let new_code = ValidationCode(vec![4, 5, 6]); - - run_to_block(2, None); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - - let expected_at = { - // this parablock is in the context of block 1. - let expected_at = 1 + validation_upgrade_delay; - Paras::schedule_code_upgrade(para_id, new_code.clone(), expected_at); - Paras::note_new_head(para_id, Default::default(), 1); - - assert!(Paras::past_code_meta(¶_id).most_recent_change().is_none()); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(expected_at)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - - expected_at - }; - - run_to_block(expected_at + 1 + 4, None); - - // the candidate is in the context of the first descendent of `expected_at`, and triggers - // the upgrade. - { - Paras::note_new_head(para_id, Default::default(), expected_at + 4); - - assert_eq!( - Paras::past_code_meta(¶_id).most_recent_change(), - Some(expected_at), - ); - - // Some hypothetical block which would have triggered the code change - // should still use the old code. - assert_eq!( - Paras::past_code_meta(¶_id).code_at(expected_at), - Some(UseCodeAt::ReplacedAt(expected_at)), - ); - - // Some hypothetical block at the context which actually triggered the - // code change should still use the old code. - assert_eq!( - Paras::past_code_meta(¶_id).code_at(expected_at + 4), - Some(UseCodeAt::ReplacedAt(expected_at)), - ); - - // Some hypothetical block at the context after the code was upgraded - // should use the new code. - assert_eq!( - Paras::past_code_meta(¶_id).code_at(expected_at + 4 + 1), - Some(UseCodeAt::Current), - ); - - assert_eq!( - ::PastCodeHash::get(&(para_id, expected_at)), - Some(original_code.hash()), - ); - assert!(::FutureCodeUpgrades::get(¶_id).is_none()); - assert!(::FutureCodeHash::get(¶_id).is_none()); - assert_eq!(Paras::current_code(¶_id), Some(new_code.clone())); - } - }); - } - - #[test] - fn submit_code_change_when_not_allowed_is_err() { - let code_retention_period = 10; - - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: vec![1, 2, 3].into(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let para_id = ParaId::from(0); - let new_code = ValidationCode(vec![4, 5, 6]); - let newer_code = ValidationCode(vec![4, 5, 6, 7]); - - run_to_block(1, None); - - Paras::schedule_code_upgrade(para_id, new_code.clone(), 8); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(8)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - check_code_is_stored(&new_code); - - Paras::schedule_code_upgrade(para_id, newer_code.clone(), 10); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(8)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - check_code_is_not_stored(&newer_code); - }); - } - - #[test] - fn full_parachain_cleanup_storage() { - let code_retention_period = 10; - - let original_code = ValidationCode(vec![1, 2, 3]); - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: original_code.clone(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - check_code_is_stored(&original_code); - - let para_id = ParaId::from(0); - let new_code = ValidationCode(vec![4, 5, 6]); - - run_to_block(2, None); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - check_code_is_stored(&original_code); - - let expected_at = { - // this parablock is in the context of block 1. - let expected_at = 1 + 5; - Paras::schedule_code_upgrade(para_id, new_code.clone(), expected_at); - Paras::note_new_head(para_id, Default::default(), 1); - - assert!(Paras::past_code_meta(¶_id).most_recent_change().is_none()); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(expected_at)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - check_code_is_stored(&original_code); - check_code_is_stored(&new_code); - - expected_at - }; - - assert_ok!(Paras::schedule_para_cleanup(para_id)); - - // Just scheduling cleanup shouldn't change anything. - { - assert_eq!( - ::ActionsQueue::get(Paras::scheduled_session()), - vec![para_id], - ); - assert_eq!(Paras::parachains(), vec![para_id]); - - assert!(Paras::past_code_meta(¶_id).most_recent_change().is_none()); - assert_eq!(::FutureCodeUpgrades::get(¶_id), Some(expected_at)); - assert_eq!(::FutureCodeHash::get(¶_id), Some(new_code.hash())); - assert_eq!(Paras::current_code(¶_id), Some(original_code.clone())); - check_code_is_stored(&original_code); - check_code_is_stored(&new_code); - - assert_eq!(::Heads::get(¶_id), Some(Default::default())); - } - - // run to block #4, with a 2 session changes at the end of the block 2 & 3. - run_to_block(4, Some(vec![3,4])); - - // cleaning up the parachain should place the current parachain code - // into the past code buffer & schedule cleanup. - assert_eq!(Paras::past_code_meta(¶_id).most_recent_change(), Some(3)); - assert_eq!(::PastCodeHash::get(&(para_id, 3)), Some(original_code.hash())); - assert_eq!(::PastCodePruning::get(), vec![(para_id, 3)]); - check_code_is_stored(&original_code); - - // any future upgrades haven't been used to validate yet, so those - // are cleaned up immediately. - assert!(::FutureCodeUpgrades::get(¶_id).is_none()); - assert!(::FutureCodeHash::get(¶_id).is_none()); - assert!(Paras::current_code(¶_id).is_none()); - check_code_is_not_stored(&new_code); - - // run to do the final cleanup - let cleaned_up_at = 3 + code_retention_period + 1; - run_to_block(cleaned_up_at, None); - - // now the final cleanup: last past code cleaned up, and this triggers meta cleanup. - assert_eq!(Paras::past_code_meta(¶_id), Default::default()); - assert!(::PastCodeHash::get(&(para_id, 3)).is_none()); - assert!(::PastCodePruning::get().is_empty()); - check_code_is_not_stored(&original_code); - }); - } - - #[test] - fn para_incoming_at_session() { - new_test_ext(Default::default()).execute_with(|| { - run_to_block(1, None); - - let b = ParaId::from(525); - let a = ParaId::from(999); - let c = ParaId::from(333); - - assert_ok!(Paras::schedule_para_initialize( - b, - ParaGenesisArgs { - parachain: true, - genesis_head: vec![1].into(), - validation_code: vec![1].into(), - }, - )); - - assert_ok!(Paras::schedule_para_initialize( - a, - ParaGenesisArgs { - parachain: false, - genesis_head: vec![2].into(), - validation_code: vec![2].into(), - }, - )); - - assert_ok!(Paras::schedule_para_initialize( - c, - ParaGenesisArgs { - parachain: true, - genesis_head: vec![3].into(), - validation_code: vec![3].into(), - }, - )); - - assert_eq!( - ::ActionsQueue::get(Paras::scheduled_session()), - vec![c, b, a], - ); - - // Lifecycle is tracked correctly - assert_eq!(ParaLifecycles::get(&a), Some(ParaLifecycle::Onboarding)); - assert_eq!(ParaLifecycles::get(&b), Some(ParaLifecycle::Onboarding)); - assert_eq!(ParaLifecycles::get(&c), Some(ParaLifecycle::Onboarding)); - - // run to block without session change. - run_to_block(2, None); - - assert_eq!(Paras::parachains(), Vec::new()); - assert_eq!( - ::ActionsQueue::get(Paras::scheduled_session()), - vec![c, b, a], - ); - - // Lifecycle is tracked correctly - assert_eq!(ParaLifecycles::get(&a), Some(ParaLifecycle::Onboarding)); - assert_eq!(ParaLifecycles::get(&b), Some(ParaLifecycle::Onboarding)); - assert_eq!(ParaLifecycles::get(&c), Some(ParaLifecycle::Onboarding)); - - - // Two sessions pass, so action queue is triggered - run_to_block(4, Some(vec![3,4])); - - assert_eq!(Paras::parachains(), vec![c, b]); - assert_eq!(::ActionsQueue::get(Paras::scheduled_session()), Vec::new()); - - // Lifecycle is tracked correctly - assert_eq!(ParaLifecycles::get(&a), Some(ParaLifecycle::Parathread)); - assert_eq!(ParaLifecycles::get(&b), Some(ParaLifecycle::Parachain)); - assert_eq!(ParaLifecycles::get(&c), Some(ParaLifecycle::Parachain)); - - assert_eq!(Paras::current_code(&a), Some(vec![2].into())); - assert_eq!(Paras::current_code(&b), Some(vec![1].into())); - assert_eq!(Paras::current_code(&c), Some(vec![3].into())); - }) - } - - #[test] - fn code_hash_at_with_intermediate() { - let code_retention_period = 10; - - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: vec![1, 2, 3].into(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let para_id = ParaId::from(0); - let old_code: ValidationCode = vec![1, 2, 3].into(); - let new_code: ValidationCode = vec![4, 5, 6].into(); - Paras::schedule_code_upgrade(para_id, new_code.clone(), 10); - - // no intermediate, falls back on current/past. - assert_eq!(fetch_validation_code_at(para_id, 1, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 10, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 100, None), Some(old_code.clone())); - - // intermediate before upgrade meant to be applied, falls back on current. - assert_eq!(fetch_validation_code_at(para_id, 9, Some(8)), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 10, Some(9)), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 11, Some(9)), Some(old_code.clone())); - - // intermediate at or after upgrade applied - assert_eq!(fetch_validation_code_at(para_id, 11, Some(10)), Some(new_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 100, Some(11)), Some(new_code.clone())); - - run_to_block(code_retention_period + 5, None); - - // at <= intermediate not allowed - assert_eq!(fetch_validation_code_at(para_id, 10, Some(10)), None); - assert_eq!(fetch_validation_code_at(para_id, 9, Some(10)), None); - }); - } - - #[test] - fn code_hash_at_returns_up_to_end_of_code_retention_period() { - let code_retention_period = 10; - - let paras = vec![ - (0u32.into(), ParaGenesisArgs { - parachain: true, - genesis_head: Default::default(), - validation_code: vec![1, 2, 3].into(), - }), - ]; - - let genesis_config = MockGenesisConfig { - paras: GenesisConfig { paras, ..Default::default() }, - configuration: crate::configuration::GenesisConfig { - config: HostConfiguration { - code_retention_period, - ..Default::default() - }, - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let para_id = ParaId::from(0); - let old_code: ValidationCode = vec![1, 2, 3].into(); - let new_code: ValidationCode = vec![4, 5, 6].into(); - Paras::schedule_code_upgrade(para_id, new_code.clone(), 2); - - run_to_block(10, None); - Paras::note_new_head(para_id, Default::default(), 7); - - assert_eq!( - Paras::past_code_meta(¶_id).upgrade_times, - vec![upgrade_at(2, 10)], - ); - - assert_eq!(fetch_validation_code_at(para_id, 2, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 3, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 9, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 10, None), Some(new_code.clone())); - - run_to_block(10 + code_retention_period, None); - - assert_eq!(fetch_validation_code_at(para_id, 2, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 3, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 9, None), Some(old_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 10, None), Some(new_code.clone())); - - run_to_block(10 + code_retention_period + 1, None); - - // code entry should be pruned now. - - assert_eq!( - Paras::past_code_meta(¶_id), - ParaPastCodeMeta { - upgrade_times: Vec::new(), - last_pruned: Some(10), - }, - ); - - assert_eq!(fetch_validation_code_at(para_id, 2, None), None); // pruned :( - assert_eq!(fetch_validation_code_at(para_id, 9, None), None); - assert_eq!(fetch_validation_code_at(para_id, 10, None), Some(new_code.clone())); - assert_eq!(fetch_validation_code_at(para_id, 11, None), Some(new_code.clone())); - }); - } - - #[test] - fn code_ref_is_cleaned_correctly() { - new_test_ext(Default::default()).execute_with(|| { - let code: ValidationCode = vec![1, 2, 3].into(); - Paras::increase_code_ref(&code.hash(), &code); - Paras::increase_code_ref(&code.hash(), &code); - - assert!(CodeByHash::contains_key(code.hash())); - assert_eq!(CodeByHashRefs::get(code.hash()), 2); - - Paras::decrease_code_ref(&code.hash()); - - assert!(CodeByHash::contains_key(code.hash())); - assert_eq!(CodeByHashRefs::get(code.hash()), 1); - - Paras::decrease_code_ref(&code.hash()); - - assert!(!CodeByHash::contains_key(code.hash())); - assert!(!CodeByHashRefs::contains_key(code.hash())); - }); - } -} diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs deleted file mode 100644 index c96495d639e3..000000000000 --- a/runtime/parachains/src/paras_inherent.rs +++ /dev/null @@ -1,438 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Provides glue code over the scheduler and inclusion modules, and accepting -//! one inherent per block that can include new para candidates and bitfields. -//! -//! Unlike other modules in this crate, it does not need to be initialized by the initializer, -//! as it has no initialization logic and its finalization logic depends only on the details of -//! this module. - -use sp_std::prelude::*; -use sp_runtime::traits::Header as HeaderT; -use primitives::v1::{ - BackedCandidate, PARACHAINS_INHERENT_IDENTIFIER, InherentData as ParachainsInherentData, -}; -use frame_support::{ - decl_error, decl_module, decl_storage, ensure, - dispatch::DispatchResultWithPostInfo, - weights::{DispatchClass, Weight}, - traits::Get, - inherent::{InherentIdentifier, InherentData, MakeFatalError, ProvideInherent}, -}; -use frame_system::ensure_none; -use crate::{ - inclusion, - scheduler::{self, FreedReason}, - ump, -}; - -const LOG_TARGET: &str = "runtime::inclusion-inherent"; -// In the future, we should benchmark these consts; these are all untested assumptions for now. -const BACKED_CANDIDATE_WEIGHT: Weight = 100_000; -const INCLUSION_INHERENT_CLAIMED_WEIGHT: Weight = 1_000_000_000; -// we assume that 75% of an paras inherent's weight is used processing backed candidates -const MINIMAL_INCLUSION_INHERENT_WEIGHT: Weight = INCLUSION_INHERENT_CLAIMED_WEIGHT / 4; - -pub trait Config: inclusion::Config + scheduler::Config {} - -decl_storage! { - trait Store for Module as ParaInherent { - /// Whether the paras inherent was included within this block. - /// - /// The `Option<()>` is effectively a bool, but it never hits storage in the `None` variant - /// due to the guarantees of FRAME's storage APIs. - /// - /// If this is `None` at the end of the block, we panic and render the block invalid. - Included: Option<()>; - } -} - -decl_error! { - pub enum Error for Module { - /// Inclusion inherent called more than once per block. - TooManyInclusionInherents, - /// The hash of the submitted parent header doesn't correspond to the saved block hash of - /// the parent. - InvalidParentHeader, - } -} - -decl_module! { - /// The paras inherent module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - fn on_initialize() -> Weight { - T::DbWeight::get().reads_writes(1, 1) // in on_finalize. - } - - fn on_finalize() { - if Included::take().is_none() { - panic!("Bitfields and heads must be included every block"); - } - } - - /// Enter the paras inherent. This will process bitfields and backed candidates. - #[weight = ( - MINIMAL_INCLUSION_INHERENT_WEIGHT + data.backed_candidates.len() as Weight * BACKED_CANDIDATE_WEIGHT, - DispatchClass::Mandatory, - )] - pub fn enter( - origin, - data: ParachainsInherentData, - ) -> DispatchResultWithPostInfo { - let ParachainsInherentData { - bitfields: signed_bitfields, - backed_candidates, - parent_header, - disputes: _, - } = data; - - ensure_none(origin)?; - ensure!(!::exists(), Error::::TooManyInclusionInherents); - - // Check that the submitted parent header indeed corresponds to the previous block hash. - let parent_hash = >::parent_hash(); - ensure!( - parent_header.hash().as_ref() == parent_hash.as_ref(), - Error::::InvalidParentHeader, - ); - - // Process new availability bitfields, yielding any availability cores whose - // work has now concluded. - let expected_bits = >::availability_cores().len(); - let freed_concluded = >::process_bitfields( - expected_bits, - signed_bitfields, - >::core_para, - )?; - - // Handle timeouts for any availability core work. - let availability_pred = >::availability_timeout_predicate(); - let freed_timeout = if let Some(pred) = availability_pred { - >::collect_pending(pred) - } else { - Vec::new() - }; - - // Schedule paras again, given freed cores, and reasons for freeing. - let freed = freed_concluded.into_iter().map(|c| (c, FreedReason::Concluded)) - .chain(freed_timeout.into_iter().map(|c| (c, FreedReason::TimedOut))); - - >::clear(); - >::schedule( - freed, - >::block_number(), - ); - - let backed_candidates = limit_backed_candidates::(backed_candidates); - let backed_candidates_len = backed_candidates.len() as Weight; - - // Process backed candidates according to scheduled cores. - let parent_storage_root = parent_header.state_root().clone(); - let occupied = >::process_candidates( - parent_storage_root, - backed_candidates, - >::scheduled(), - >::group_validators, - )?; - - // Note which of the scheduled cores were actually occupied by a backed candidate. - >::occupied(&occupied); - - // Give some time slice to dispatch pending upward messages. - >::process_pending_upward_messages(); - - // And track that we've finished processing the inherent for this block. - Included::set(Some(())); - - Ok(Some( - MINIMAL_INCLUSION_INHERENT_WEIGHT + - (backed_candidates_len * BACKED_CANDIDATE_WEIGHT) - ).into()) - } - } -} - -/// Limit the number of backed candidates processed in order to stay within block weight limits. -/// -/// Use a configured assumption about the weight required to process a backed candidate and the -/// current block weight as of the execution of this function to ensure that we don't overload -/// the block with candidate processing. -/// -/// If the backed candidates exceed the available block weight remaining, then skips all of them. -/// This is somewhat less desirable than attempting to fit some of them, but is more fair in the -/// even that we can't trust the provisioner to provide a fair / random ordering of candidates. -fn limit_backed_candidates( - mut backed_candidates: Vec>, -) -> Vec> { - const MAX_CODE_UPGRADES: usize = 1; - - // Ignore any candidates beyond one that contain code upgrades. - // - // This is an artificial limitation that does not appear in the guide as it is a practical - // concern around execution. - { - let mut code_upgrades = 0; - backed_candidates.retain(|c| { - if c.candidate.commitments.new_validation_code.is_some() { - if code_upgrades >= MAX_CODE_UPGRADES { - return false - } - - code_upgrades +=1; - } - - true - }); - } - - // the weight of the paras inherent is already included in the current block weight, - // so our operation is simple: if the block is currently overloaded, make this intrinsic smaller - if frame_system::Pallet::::block_weight().total() > ::BlockWeights::get().max_block { - Vec::new() - } else { - backed_candidates - } -} - -impl ProvideInherent for Module { - type Call = Call; - type Error = MakeFatalError<()>; - const INHERENT_IDENTIFIER: InherentIdentifier = PARACHAINS_INHERENT_IDENTIFIER; - - fn create_inherent(data: &InherentData) -> Option { - let inherent_data: ParachainsInherentData - = match data.get_data(&Self::INHERENT_IDENTIFIER) - { - Ok(Some(d)) => d, - Ok(None) => return None, - Err(_) => { - log::warn!( - target: LOG_TARGET, - "ParachainsInherentData failed to decode", - ); - - return None; - } - }; - - // Sanity check: session changes can invalidate an inherent, and we _really_ don't want that to happen. - // See github.com/paritytech/polkadot/issues/1327 - let inherent_data = match Self::enter( - frame_system::RawOrigin::None.into(), - inherent_data.clone(), - ) { - Ok(_) => inherent_data, - Err(err) => { - log::warn!( - target: LOG_TARGET, - "dropping signed_bitfields and backed_candidates because they produced \ - an invalid paras inherent: {:?}", - err, - ); - - ParachainsInherentData { - bitfields: Vec::new(), - backed_candidates: Vec::new(), - disputes: Vec::new(), - parent_header: inherent_data.parent_header, - } - } - }; - - Some(Call::enter(inherent_data)) - } - - fn is_inherent(call: &Self::Call) -> bool { - matches!(call, Call::enter(..)) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use crate::mock::{ - new_test_ext, System, MockGenesisConfig, Test - }; - - mod limit_backed_candidates { - use super::*; - - #[test] - fn does_not_truncate_on_empty_block() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let backed_candidates = vec![BackedCandidate::default()]; - System::set_block_consumed_resources(0, 0); - assert_eq!(limit_backed_candidates::(backed_candidates).len(), 1); - }); - } - - #[test] - fn does_not_truncate_on_exactly_full_block() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let backed_candidates = vec![BackedCandidate::default()]; - let max_block_weight = ::BlockWeights::get().max_block; - // if the consumed resources are precisely equal to the max block weight, we do not truncate. - System::set_block_consumed_resources(max_block_weight, 0); - assert_eq!(limit_backed_candidates::(backed_candidates).len(), 1); - }); - } - - #[test] - fn truncates_on_over_full_block() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let backed_candidates = vec![BackedCandidate::default()]; - let max_block_weight = ::BlockWeights::get().max_block; - // if the consumed resources are precisely equal to the max block weight, we do not truncate. - System::set_block_consumed_resources(max_block_weight + 1, 0); - assert_eq!(limit_backed_candidates::(backed_candidates).len(), 0); - }); - } - - #[test] - fn all_backed_candidates_get_truncated() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let backed_candidates = vec![BackedCandidate::default(); 10]; - let max_block_weight = ::BlockWeights::get().max_block; - // if the consumed resources are precisely equal to the max block weight, we do not truncate. - System::set_block_consumed_resources(max_block_weight + 1, 0); - assert_eq!(limit_backed_candidates::(backed_candidates).len(), 0); - }); - } - - #[test] - fn ignores_subsequent_code_upgrades() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let mut backed = BackedCandidate::default(); - backed.candidate.commitments.new_validation_code = Some(Vec::new().into()); - let backed_candidates = (0..3).map(|_| backed.clone()).collect(); - assert_eq!(limit_backed_candidates::(backed_candidates).len(), 1); - }); - } - } - - mod paras_inherent_weight { - use super::*; - - use crate::mock::{ - new_test_ext, System, MockGenesisConfig, Test - }; - use primitives::v1::Header; - - use frame_support::traits::UnfilteredDispatchable; - - fn default_header() -> Header { - Header { - parent_hash: Default::default(), - number: 0, - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: Default::default(), - } - } - - /// We expect the weight of the paras inherent not to change when no truncation occurs: - /// its weight is dynamically computed from the size of the backed candidates list, and is - /// already incorporated into the current block weight when it is selected by the provisioner. - #[test] - fn weight_does_not_change_on_happy_path() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let header = default_header(); - System::set_block_number(1); - System::set_parent_hash(header.hash()); - - // number of bitfields doesn't affect the paras inherent weight, so we can mock it with an empty one - let signed_bitfields = Vec::new(); - // backed candidates must not be empty, so we can demonstrate that the weight has not changed - let backed_candidates = vec![BackedCandidate::default(); 10]; - - // the expected weight can always be computed by this formula - let expected_weight = MINIMAL_INCLUSION_INHERENT_WEIGHT + - (backed_candidates.len() as Weight * BACKED_CANDIDATE_WEIGHT); - - // we've used half the block weight; there's plenty of margin - let max_block_weight = ::BlockWeights::get().max_block; - let used_block_weight = max_block_weight / 2; - System::set_block_consumed_resources(used_block_weight, 0); - - // execute the paras inherent - let post_info = Call::::enter(ParachainsInherentData { - bitfields: signed_bitfields, - backed_candidates, - disputes: Vec::new(), - parent_header: default_header(), - }) - .dispatch_bypass_filter(None.into()).unwrap_err().post_info; - - // we don't directly check the block's weight post-call. Instead, we check that the - // call has returned the appropriate post-dispatch weight for refund, and trust - // Substrate to do the right thing with that information. - // - // In this case, the weight system can update the actual weight with the same amount, - // or return `None` to indicate that the pre-computed weight should not change. - // Either option is acceptable for our purposes. - if let Some(actual_weight) = post_info.actual_weight { - assert_eq!(actual_weight, expected_weight); - } - }); - } - - /// We expect the weight of the paras inherent to change when truncation occurs: its - /// weight was initially dynamically computed from the size of the backed candidates list, - /// but was reduced by truncation. - #[test] - fn weight_changes_when_backed_candidates_are_truncated() { - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let header = default_header(); - System::set_block_number(1); - System::set_parent_hash(header.hash()); - - // number of bitfields doesn't affect the paras inherent weight, so we can mock it with an empty one - let signed_bitfields = Vec::new(); - // backed candidates must not be empty, so we can demonstrate that the weight has not changed - let backed_candidates = vec![BackedCandidate::default(); 10]; - - // the expected weight with no blocks is just the minimum weight - let expected_weight = MINIMAL_INCLUSION_INHERENT_WEIGHT; - - // oops, looks like this mandatory call pushed the block weight over the limit - let max_block_weight = ::BlockWeights::get().max_block; - let used_block_weight = max_block_weight + 1; - System::set_block_consumed_resources(used_block_weight, 0); - - // execute the paras inherent - let post_info = Call::::enter(ParachainsInherentData { - bitfields: signed_bitfields, - backed_candidates, - disputes: Vec::new(), - parent_header: header, - }) - .dispatch_bypass_filter(None.into()).unwrap(); - - // we don't directly check the block's weight post-call. Instead, we check that the - // call has returned the appropriate post-dispatch weight for refund, and trust - // Substrate to do the right thing with that information. - assert_eq!( - post_info.actual_weight.unwrap(), - expected_weight, - ); - }); - } - } -} diff --git a/runtime/parachains/src/reward_points.rs b/runtime/parachains/src/reward_points.rs deleted file mode 100644 index 661fa00c3876..000000000000 --- a/runtime/parachains/src/reward_points.rs +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! An implementation of the `RewardValidators` trait used by `inclusion` that employs -//! `pallet-staking` to compute the rewards. -//! -//! Based on https://w3f-research.readthedocs.io/en/latest/polkadot/Token%20Economics.html -//! which doesn't currently mention availability bitfields. As such, we don't reward them -//! for the time being, although we will build schemes to do so in the future. - -use primitives::v1::ValidatorIndex; -use pallet_staking::SessionInterface; -use crate::shared; - -/// The amount of era points given by backing a candidate that is included. -pub const BACKING_POINTS: u32 = 20; - -/// Rewards validators for participating in parachains with era points in pallet-staking. -pub struct RewardValidatorsWithEraPoints(sp_std::marker::PhantomData); - -fn validators_to_reward(validators: &'_ [T], indirect_indices: I) -> impl IntoIterator where - C: shared::Config, - I: IntoIterator -{ - let validator_indirection = >::active_validator_indices(); - - indirect_indices.into_iter() - .filter_map(move |i| validator_indirection.get(i.0 as usize).map(|v| v.clone())) - .filter_map(move |i| validators.get(i.0 as usize)) -} - -impl crate::inclusion::RewardValidators for RewardValidatorsWithEraPoints - where C: pallet_staking::Config + shared::Config, -{ - fn reward_backing(indirect_indices: impl IntoIterator) { - // Fetch the validators from the _session_ because sessions are offset from eras - // and we are rewarding for behavior in current session. - let validators = C::SessionInterface::validators(); - - let rewards = validators_to_reward::(&validators, indirect_indices) - .into_iter() - .map(|v| (v.clone(), BACKING_POINTS)); - - >::reward_by_ids(rewards); - } - - fn reward_bitfields(_validators: impl IntoIterator) { } -} - -#[cfg(test)] -mod tests { - use super::*; - use primitives::v1::ValidatorId; - use crate::configuration::HostConfiguration; - use crate::mock::{new_test_ext, MockGenesisConfig, Shared, Test}; - use keyring::Sr25519Keyring; - - #[test] - fn rewards_based_on_indirection() { - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - - fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() - } - - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let mut config = HostConfiguration::default(); - config.max_validators = None; - - let pubkeys = validator_pubkeys(&validators); - - let shuffled_pubkeys = Shared::initializer_on_new_session( - 1, - [1; 32], - &config, - pubkeys, - ); - - assert_eq!( - shuffled_pubkeys, - validator_pubkeys(&[ - Sr25519Keyring::Ferdie, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Alice, - ]) - ); - - assert_eq!( - Shared::active_validator_indices(), - vec![ - ValidatorIndex(4), - ValidatorIndex(1), - ValidatorIndex(2), - ValidatorIndex(3), - ValidatorIndex(0), - ] - ); - - assert_eq!( - validators_to_reward::( - &validators, - vec![ValidatorIndex(0), ValidatorIndex(1), ValidatorIndex(2)], - ).into_iter().copied().collect::>(), - vec![Sr25519Keyring::Ferdie, Sr25519Keyring::Bob, Sr25519Keyring::Charlie], - ); - }) - } -} diff --git a/runtime/parachains/src/runtime_api_impl/mod.rs b/runtime/parachains/src/runtime_api_impl/mod.rs deleted file mode 100644 index 35c26fe35def..000000000000 --- a/runtime/parachains/src/runtime_api_impl/mod.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Runtime API implementations for Parachains. -//! -//! These are exposed as different modules using different sets of primitives. -//! At the moment there is only a v1 module and it is not completely clear how migration -//! to a v2 would be done. - -pub mod v1; diff --git a/runtime/parachains/src/runtime_api_impl/v1.rs b/runtime/parachains/src/runtime_api_impl/v1.rs deleted file mode 100644 index c91095a77547..000000000000 --- a/runtime/parachains/src/runtime_api_impl/v1.rs +++ /dev/null @@ -1,331 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -//! A module exporting runtime API implementation functions for all runtime APIs using v1 -//! primitives. -//! -//! Runtimes implementing the v1 runtime API are recommended to forward directly to these -//! functions. - -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use sp_runtime::traits::One; -use primitives::v1::{ - AuthorityDiscoveryId, CandidateEvent, CommittedCandidateReceipt, CoreIndex, CoreOccupied, - CoreState, GroupIndex, GroupRotationInfo, Id as ParaId, InboundDownwardMessage, - InboundHrmpMessage, OccupiedCore, OccupiedCoreAssumption, PersistedValidationData, - ScheduledCore, SessionIndex, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorId, - ValidatorIndex, -}; -use crate::{initializer, inclusion, scheduler, configuration, paras, session_info, dmp, hrmp, shared}; - - -/// Implementation for the `validators` function of the runtime API. -pub fn validators() -> Vec { - >::active_validator_keys() -} - -/// Implementation for the `validator_groups` function of the runtime API. -pub fn validator_groups() -> ( - Vec>, - GroupRotationInfo, -) { - let now = >::block_number() + One::one(); - - let groups = >::validator_groups(); - let rotation_info = >::group_rotation_info(now); - - (groups, rotation_info) -} - -/// Implementation for the `availability_cores` function of the runtime API. -pub fn availability_cores() -> Vec> { - let cores = >::availability_cores(); - let parachains = >::parachains(); - let config = >::config(); - - let now = >::block_number() + One::one(); - >::clear(); - >::schedule(Vec::new(), now); - - let rotation_info = >::group_rotation_info(now); - - let time_out_at = |backed_in_number, availability_period| { - let time_out_at = backed_in_number + availability_period; - - let current_window = rotation_info.last_rotation_at() + availability_period; - let next_rotation = rotation_info.next_rotation_at(); - - // If we are within `period` blocks of rotation, timeouts are being checked - // actively. We could even time out this block. - if time_out_at < current_window { - time_out_at - } else if time_out_at <= next_rotation { - // Otherwise, it will time out at the sooner of the next rotation - next_rotation - } else { - // or the scheduled time-out. This is by definition within `period` blocks - // of `next_rotation` and is thus a valid timeout block. - time_out_at - } - }; - - let group_responsible_for = |backed_in_number, core_index| { - match >::group_assigned_to_core(core_index, backed_in_number) { - Some(g) => g, - None => { - log::warn!( - target: "runtime::polkadot-api::v1", - "Could not determine the group responsible for core extracted \ - from list of cores for some prior block in same session", - ); - - GroupIndex(0) - } - } - }; - - let mut core_states: Vec<_> = cores.into_iter().enumerate().map(|(i, core)| match core { - Some(occupied) => { - CoreState::Occupied(match occupied { - CoreOccupied::Parachain => { - let para_id = parachains[i]; - let pending_availability = > - ::pending_availability(para_id) - .expect("Occupied core always has pending availability; qed"); - - let backed_in_number = pending_availability.backed_in_number().clone(); - OccupiedCore { - next_up_on_available: >::next_up_on_available( - CoreIndex(i as u32) - ), - occupied_since: backed_in_number, - time_out_at: time_out_at( - backed_in_number, - config.chain_availability_period, - ), - next_up_on_time_out: >::next_up_on_time_out( - CoreIndex(i as u32) - ), - availability: pending_availability.availability_votes().clone(), - group_responsible: group_responsible_for( - backed_in_number, - pending_availability.core_occupied(), - ), - candidate_hash: pending_availability.candidate_hash(), - candidate_descriptor: pending_availability.candidate_descriptor().clone(), - } - } - CoreOccupied::Parathread(p) => { - let para_id = p.claim.0; - let pending_availability = > - ::pending_availability(para_id) - .expect("Occupied core always has pending availability; qed"); - - let backed_in_number = pending_availability.backed_in_number().clone(); - OccupiedCore { - next_up_on_available: >::next_up_on_available( - CoreIndex(i as u32) - ), - occupied_since: backed_in_number, - time_out_at: time_out_at( - backed_in_number, - config.thread_availability_period, - ), - next_up_on_time_out: >::next_up_on_time_out( - CoreIndex(i as u32) - ), - availability: pending_availability.availability_votes().clone(), - group_responsible: group_responsible_for( - backed_in_number, - pending_availability.core_occupied(), - ), - candidate_hash: pending_availability.candidate_hash(), - candidate_descriptor: pending_availability.candidate_descriptor().clone(), - } - } - }) - } - None => CoreState::Free, - }).collect(); - - // This will overwrite only `Free` cores if the scheduler module is working as intended. - for scheduled in >::scheduled() { - core_states[scheduled.core.0 as usize] = CoreState::Scheduled(ScheduledCore { - para_id: scheduled.para_id, - collator: scheduled.required_collator().map(|c| c.clone()), - }); - } - - core_states -} - -fn with_assumption( - para_id: ParaId, - assumption: OccupiedCoreAssumption, - build: F, -) -> Option where - Config: inclusion::Config, - F: FnOnce() -> Option, -{ - match assumption { - OccupiedCoreAssumption::Included => { - >::force_enact(para_id); - build() - } - OccupiedCoreAssumption::TimedOut => { - build() - } - OccupiedCoreAssumption::Free => { - if >::pending_availability(para_id).is_some() { - None - } else { - build() - } - } - } -} - -/// Implementation for the `persisted_validation_data` function of the runtime API. -pub fn persisted_validation_data( - para_id: ParaId, - assumption: OccupiedCoreAssumption, -) -> Option> { - use parity_scale_codec::Decode as _; - let relay_parent_number = >::block_number(); - let relay_parent_storage_root = T::Hash::decode(&mut &sp_io::storage::root()[..]) - .expect("storage root must decode to the Hash type; qed"); - with_assumption::(para_id, assumption, || { - crate::util::make_persisted_validation_data::( - para_id, - relay_parent_number, - relay_parent_storage_root, - ) - }) -} - -/// Implementation for the `check_validation_outputs` function of the runtime API. -pub fn check_validation_outputs( - para_id: ParaId, - outputs: primitives::v1::CandidateCommitments, -) -> bool { - >::check_validation_outputs_for_runtime_api(para_id, outputs) -} - -/// Implementation for the `session_index_for_child` function of the runtime API. -pub fn session_index_for_child() -> SessionIndex { - // Just returns the session index from `inclusion`. Runtime APIs follow - // initialization so the initializer will have applied any pending session change - // which is expected at the child of the block whose context the runtime API was invoked - // in. - // - // Incidentally, this is also the rationale for why it is OK to query validators or - // occupied cores or etc. and expect the correct response "for child". - >::session_index() -} - -/// Implementation for the `AuthorityDiscoveryApi::authorities()` function of the runtime API. -/// It is a heavy call, but currently only used for authority discovery, so it is fine. -/// Gets next, current and some historical authority ids using session_info module. -pub fn relevant_authority_ids() -> Vec { - let current_session_index = session_index_for_child::(); - let earliest_stored_session = >::earliest_stored_session(); - - // Due to `max_validators`, the `SessionInfo` stores only the validators who are actively - // selected to participate in parachain consensus. We'd like all authorities for the current - // and next sessions to be used in authority-discovery. The two sets likely have large overlap. - let mut authority_ids = >::current_authorities(); - authority_ids.extend(>::next_authorities()); - - // Due to disputes, we'd like to remain connected to authorities of the previous few sessions. - // For this, we don't need anyone other than the validators actively participating in consensus. - for session_index in earliest_stored_session..current_session_index { - let info = >::session_info(session_index); - if let Some(mut info) = info { - authority_ids.append(&mut info.discovery_keys); - } - } - - authority_ids.sort(); - authority_ids.dedup(); - - authority_ids -} - -/// Implementation for the `validation_code` function of the runtime API. -pub fn validation_code( - para_id: ParaId, - assumption: OccupiedCoreAssumption, -) -> Option { - with_assumption::( - para_id, - assumption, - || >::current_code(¶_id), - ) -} - -/// Implementation for the `candidate_pending_availability` function of the runtime API. -pub fn candidate_pending_availability(para_id: ParaId) - -> Option> -{ - >::candidate_pending_availability(para_id) -} - -/// Implementation for the `candidate_events` function of the runtime API. -// NOTE: this runs without block initialization, as it accesses events. -// this means it can run in a different session than other runtime APIs at the same block. -pub fn candidate_events(extract_event: F) -> Vec> -where - T: initializer::Config, - F: Fn(::Event) -> Option>, -{ - use inclusion::Event as RawEvent; - - >::events().into_iter() - .filter_map(|record| extract_event(record.event)) - .map(|event| match event { - RawEvent::::CandidateBacked(c, h, core, group) - => CandidateEvent::CandidateBacked(c, h, core, group), - RawEvent::::CandidateIncluded(c, h, core, group) - => CandidateEvent::CandidateIncluded(c, h, core, group), - RawEvent::::CandidateTimedOut(c, h, core) - => CandidateEvent::CandidateTimedOut(c, h, core), - }) - .collect() -} - -/// Get the session info for the given session, if stored. -pub fn session_info(index: SessionIndex) -> Option { - >::session_info(index) -} - -/// Implementation for the `dmq_contents` function of the runtime API. -pub fn dmq_contents( - recipient: ParaId, -) -> Vec> { - >::dmq_contents(recipient) -} - -/// Implementation for the `inbound_hrmp_channels_contents` function of the runtime API. -pub fn inbound_hrmp_channels_contents( - recipient: ParaId, -) -> BTreeMap>> { - >::inbound_hrmp_channels_contents(recipient) -} - -/// Implementation for the `validation_code_by_hash` function of the runtime API. -pub fn validation_code_by_hash( - hash: ValidationCodeHash, -) -> Option { - >::code_by_hash(hash) -} diff --git a/runtime/parachains/src/scheduler.rs b/runtime/parachains/src/scheduler.rs deleted file mode 100644 index 32c7e169e735..000000000000 --- a/runtime/parachains/src/scheduler.rs +++ /dev/null @@ -1,2133 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The scheduler module for parachains and parathreads. -//! -//! This module is responsible for two main tasks: -//! - Paritioning validators into groups and assigning groups to parachains and parathreads -//! - Scheduling parachains and parathreads -//! -//! It aims to achieve these tasks with these goals in mind: -//! - It should be possible to know at least a block ahead-of-time, ideally more, -//! which validators are going to be assigned to which parachains. -//! - Parachains that have a candidate pending availability in this fork of the chain -//! should not be assigned. -//! - Validator assignments should not be gameable. Malicious cartels should not be able to -//! manipulate the scheduler to assign themselves as desired. -//! - High or close to optimal throughput of parachains and parathreads. Work among validator groups should be balanced. -//! -//! The Scheduler manages resource allocation using the concept of "Availability Cores". -//! There will be one availability core for each parachain, and a fixed number of cores -//! used for multiplexing parathreads. Validators will be partitioned into groups, with the same -//! number of groups as availability cores. Validator groups will be assigned to different availability cores -//! over time. - -use sp_std::prelude::*; -use sp_std::convert::TryInto; -use primitives::v1::{ - Id as ParaId, ValidatorIndex, CoreOccupied, CoreIndex, CollatorId, - GroupIndex, ParathreadClaim, ParathreadEntry, GroupRotationInfo, ScheduledCore, -}; -use frame_support::{ - decl_storage, decl_module, decl_error, - weights::Weight, -}; -use parity_scale_codec::{Encode, Decode}; -use sp_runtime::traits::{One, Saturating}; - -use crate::{configuration, paras, initializer::SessionChangeNotification}; - -/// A queued parathread entry, pre-assigned to a core. -#[derive(Encode, Decode, Default)] -#[cfg_attr(test, derive(PartialEq, Debug))] -pub struct QueuedParathread { - claim: ParathreadEntry, - core_offset: u32, -} - -/// The queue of all parathread claims. -#[derive(Encode, Decode, Default)] -#[cfg_attr(test, derive(PartialEq, Debug))] -pub struct ParathreadClaimQueue { - queue: Vec, - // this value is between 0 and config.parathread_cores - next_core_offset: u32, -} - -impl ParathreadClaimQueue { - /// Queue a parathread entry to be processed. - /// - /// Provide the entry and the number of parathread cores, which must be greater than 0. - fn enqueue_entry(&mut self, entry: ParathreadEntry, n_parathread_cores: u32) { - let core_offset = self.next_core_offset; - self.next_core_offset = (self.next_core_offset + 1) % n_parathread_cores; - - self.queue.push(QueuedParathread { - claim: entry, - core_offset, - }) - } - - /// Take next queued entry with given core offset, if any. - fn take_next_on_core(&mut self, core_offset: u32) -> Option { - let pos = self.queue.iter().position(|queued| queued.core_offset == core_offset); - pos.map(|i| self.queue.remove(i).claim) - } - - /// Get the next queued entry with given core offset, if any. - fn get_next_on_core(&self, core_offset: u32) -> Option<&ParathreadEntry> { - let pos = self.queue.iter().position(|queued| queued.core_offset == core_offset); - pos.map(|i| &self.queue[i].claim) - } -} - -/// Reasons a core might be freed -pub enum FreedReason { - /// The core's work concluded and the parablock assigned to it is considered available. - Concluded, - /// The core's work timed out. - TimedOut, -} - - -/// The assignment type. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug))] -pub enum AssignmentKind { - /// A parachain. - Parachain, - /// A parathread. - Parathread(CollatorId, u32), -} - -/// How a free core is scheduled to be assigned. -#[derive(Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(PartialEq, Debug))] -pub struct CoreAssignment { - /// The core that is assigned. - pub core: CoreIndex, - /// The unique ID of the para that is assigned to the core. - pub para_id: ParaId, - /// The kind of the assignment. - pub kind: AssignmentKind, - /// The index of the validator group assigned to the core. - pub group_idx: GroupIndex, -} - -impl CoreAssignment { - /// Get the ID of a collator who is required to collate this block. - pub fn required_collator(&self) -> Option<&CollatorId> { - match self.kind { - AssignmentKind::Parachain => None, - AssignmentKind::Parathread(ref id, _) => Some(id), - } - } - - /// Get the `CoreOccupied` from this. - pub fn to_core_occupied(&self) -> CoreOccupied { - match self.kind { - AssignmentKind::Parachain => CoreOccupied::Parachain, - AssignmentKind::Parathread(ref collator, retries) => CoreOccupied::Parathread( - ParathreadEntry { - claim: ParathreadClaim(self.para_id, collator.clone()), - retries, - } - ), - } - } -} - -pub trait Config: frame_system::Config + configuration::Config + paras::Config { } - -decl_storage! { - trait Store for Module as ParaScheduler { - /// All the validator groups. One for each core. Indices are into `ActiveValidators` - not the - /// broader set of Polkadot validators, but instead just the subset used for parachains during - /// this session. - /// - /// Bound: The number of cores is the sum of the numbers of parachains and parathread multiplexers. - /// Reasonably, 100-1000. The dominant factor is the number of validators: safe upper bound at 10k. - ValidatorGroups get(fn validator_groups): Vec>; - - /// A queue of upcoming claims and which core they should be mapped onto. - /// - /// The number of queued claims is bounded at the `scheduling_lookahead` - /// multiplied by the number of parathread multiplexer cores. Reasonably, 10 * 50 = 500. - ParathreadQueue: ParathreadClaimQueue; - /// One entry for each availability core. Entries are `None` if the core is not currently occupied. Can be - /// temporarily `Some` if scheduled but not occupied. - /// The i'th parachain belongs to the i'th core, with the remaining cores all being - /// parathread-multiplexers. - /// - /// Bounded by the maximum of either of these two values: - /// * The number of parachains and parathread multiplexers - /// * The number of validators divided by `configuration.max_validators_per_core`. - AvailabilityCores get(fn availability_cores): Vec>; - /// An index used to ensure that only one claim on a parathread exists in the queue or is - /// currently being handled by an occupied core. - /// - /// Bounded by the number of parathread cores and scheduling lookahead. Reasonably, 10 * 50 = 500. - ParathreadClaimIndex: Vec; - /// The block number where the session start occurred. Used to track how many group rotations have occurred. - /// - /// Note that in the context of parachains modules the session change is signalled during - /// the block and enacted at the end of the block (at the finalization stage, to be exact). - /// Thus for all intents and purposes the effect of the session change is observed at the - /// block following the session change, block number of which we save in this storage value. - SessionStartBlock get(fn session_start_block): T::BlockNumber; - /// Currently scheduled cores - free but up to be occupied. - /// - /// Bounded by the number of cores: one for each parachain and parathread multiplexer. - /// - /// The value contained here will not be valid after the end of a block. Runtime APIs should be used to determine scheduled cores/ - /// for the upcoming block. - Scheduled get(fn scheduled): Vec; // sorted ascending by CoreIndex. - } -} - -decl_error! { - pub enum Error for Module { } -} - -decl_module! { - /// The scheduler module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - } -} - -impl Module { - /// Called by the initializer to initialize the scheduler module. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Called by the initializer to finalize the scheduler module. - pub(crate) fn initializer_finalize() { } - - /// Called by the initializer to note that a new session has started. - pub(crate) fn initializer_on_new_session(notification: &SessionChangeNotification) { - let &SessionChangeNotification { - ref validators, - ref new_config, - .. - } = notification; - let config = new_config; - - let mut thread_queue = ParathreadQueue::get(); - let n_parachains = >::parachains().len() as u32; - let n_cores = core::cmp::max( - n_parachains + config.parathread_cores, - match config.max_validators_per_core { - Some(x) if x != 0 => { validators.len() as u32 / x }, - _ => 0, - }, - ); - - AvailabilityCores::mutate(|cores| { - // clear all occupied cores. - for maybe_occupied in cores.iter_mut() { - if let Some(CoreOccupied::Parathread(claim)) = maybe_occupied.take() { - let queued = QueuedParathread { - claim, - core_offset: 0, // this gets set later in the re-balancing. - }; - - thread_queue.queue.push(queued); - } - } - - cores.resize(n_cores as _, None); - }); - - // shuffle validators into groups. - if n_cores == 0 || validators.is_empty() { - ValidatorGroups::set(Vec::new()); - } else { - let group_base_size = validators.len() / n_cores as usize; - let n_larger_groups = validators.len() % n_cores as usize; - - // Groups contain indices into the validators from the session change notification, - // which are already shuffled. - - let mut groups: Vec> = Vec::new(); - for i in 0..n_larger_groups { - let offset = (group_base_size + 1) * i; - groups.push( - (0..group_base_size + 1).map(|j| offset + j).map(|j| ValidatorIndex(j as _)).collect() - ); - } - - for i in 0..(n_cores as usize - n_larger_groups) { - let offset = (n_larger_groups * (group_base_size + 1)) + (i * group_base_size); - groups.push( - (0..group_base_size).map(|j| offset + j).map(|j| ValidatorIndex(j as _)).collect() - ); - } - - ValidatorGroups::set(groups); - } - - // prune out all parathread claims with too many retries. - // assign all non-pruned claims to new cores, if they've changed. - ParathreadClaimIndex::mutate(|claim_index| { - // wipe all parathread metadata if no parathread cores are configured. - if config.parathread_cores == 0 { - thread_queue = ParathreadClaimQueue { - queue: Vec::new(), - next_core_offset: 0, - }; - claim_index.clear(); - return; - } - - // prune out all entries beyond retry or that no longer correspond to live parathread. - thread_queue.queue.retain(|queued| { - let will_keep = queued.claim.retries <= config.parathread_retries - && >::is_parathread(queued.claim.claim.0); - - if !will_keep { - let claim_para = queued.claim.claim.0; - - // clean up the pruned entry from the index. - if let Ok(i) = claim_index.binary_search(&claim_para) { - claim_index.remove(i); - } - } - - will_keep - }); - - // do re-balancing of claims. - { - for (i, queued) in thread_queue.queue.iter_mut().enumerate() { - queued.core_offset = (i as u32) % config.parathread_cores; - } - - thread_queue.next_core_offset = - ((thread_queue.queue.len()) as u32) % config.parathread_cores; - } - }); - ParathreadQueue::set(thread_queue); - - let now = >::block_number() + One::one(); - >::set(now); - } - - /// Add a parathread claim to the queue. If there is a competing claim in the queue or currently - /// assigned to a core, this call will fail. This call will also fail if the queue is full. - /// - /// Fails if the claim does not correspond to any live parathread. - #[allow(unused)] - pub fn add_parathread_claim(claim: ParathreadClaim) { - if !>::is_parathread(claim.0) { return } - - let config = >::config(); - let queue_max_size = config.parathread_cores * config.scheduling_lookahead; - - ParathreadQueue::mutate(|queue| { - if queue.queue.len() >= queue_max_size as usize { return } - - let para_id = claim.0; - - let competes_with_another = ParathreadClaimIndex::mutate(|index| { - match index.binary_search(¶_id) { - Ok(_) => true, - Err(i) => { - index.insert(i, para_id); - false - } - } - }); - - if competes_with_another { return } - - let entry = ParathreadEntry { claim, retries: 0 }; - queue.enqueue_entry(entry, config.parathread_cores); - }) - } - - /// Schedule all unassigned cores, where possible. Provide a list of cores that should be considered - /// newly-freed along with the reason for them being freed. The list is assumed to be sorted in - /// ascending order by core index. - pub(crate) fn schedule( - just_freed_cores: impl IntoIterator, - now: T::BlockNumber, - ) { - let mut cores = AvailabilityCores::get(); - let config = >::config(); - - for (freed_index, freed_reason) in just_freed_cores { - if (freed_index.0 as usize) < cores.len() { - match cores[freed_index.0 as usize].take() { - None => continue, - Some(CoreOccupied::Parachain) => {}, - Some(CoreOccupied::Parathread(entry)) => { - match freed_reason { - FreedReason::Concluded => { - // After a parathread candidate has successfully been included, - // open it up for further claims! - ParathreadClaimIndex::mutate(|index| { - if let Ok(i) = index.binary_search(&entry.claim.0) { - index.remove(i); - } - }) - } - FreedReason::TimedOut => { - // If a parathread candidate times out, it's not the collator's fault, - // so we don't increment retries. - ParathreadQueue::mutate(|queue| { - queue.enqueue_entry(entry, config.parathread_cores); - }) - } - } - } - } - } - } - - let parachains = >::parachains(); - let mut scheduled = Scheduled::get(); - let mut parathread_queue = ParathreadQueue::get(); - - if ValidatorGroups::get().is_empty() { return } - - { - let mut prev_scheduled_in_order = scheduled.iter().enumerate().peekable(); - - // Updates to the previous list of scheduled updates and the position of where to insert - // them, without accounting for prior updates. - let mut scheduled_updates: Vec<(usize, CoreAssignment)> = Vec::new(); - - // single-sweep O(n) in the number of cores. - for (core_index, _core) in cores.iter().enumerate().filter(|(_, ref c)| c.is_none()) { - let schedule_and_insert_at = { - // advance the iterator until just before the core index we are looking at now. - while prev_scheduled_in_order.peek().map_or( - false, - |(_, assign)| (assign.core.0 as usize) < core_index, - ) { - let _ = prev_scheduled_in_order.next(); - } - - // check the first entry already scheduled with core index >= than the one we - // are looking at. 3 cases: - // 1. No such entry, clearly this core is not scheduled, so we need to schedule and put at the end. - // 2. Entry exists and has same index as the core we are inspecting. do not schedule again. - // 3. Entry exists and has higher index than the core we are inspecting. schedule and note - // insertion position. - prev_scheduled_in_order.peek().map_or( - Some(scheduled.len()), - |(idx_in_scheduled, assign)| if (assign.core.0 as usize) == core_index { - None - } else { - Some(*idx_in_scheduled) - }, - ) - }; - - let schedule_and_insert_at = match schedule_and_insert_at { - None => continue, - Some(at) => at, - }; - - let core = CoreIndex(core_index as u32); - - let core_assignment = if core_index < parachains.len() { - // parachain core. - Some(CoreAssignment { - kind: AssignmentKind::Parachain, - para_id: parachains[core_index], - core: core.clone(), - group_idx: Self::group_assigned_to_core(core, now) - .expect("core is not out of bounds and we are guaranteed \ - to be after the most recent session start; qed"), - }) - } else { - // parathread core offset, rel. to beginning. - let core_offset = (core_index - parachains.len()) as u32; - - parathread_queue.take_next_on_core(core_offset).map(|entry| CoreAssignment { - kind: AssignmentKind::Parathread(entry.claim.1, entry.retries), - para_id: entry.claim.0, - core: core.clone(), - group_idx: Self::group_assigned_to_core(core, now) - .expect("core is not out of bounds and we are guaranteed \ - to be after the most recent session start; qed"), - }) - }; - - if let Some(assignment) = core_assignment { - scheduled_updates.push((schedule_and_insert_at, assignment)) - } - } - - // at this point, because `Scheduled` is guaranteed to be sorted and we navigated unassigned - // core indices in ascending order, we can enact the updates prepared by the previous actions. - // - // while inserting, we have to account for the amount of insertions already done. - // - // This is O(n) as well, capped at n operations, where n is the number of cores. - for (num_insertions_before, (insert_at, to_insert)) in scheduled_updates.into_iter().enumerate() { - let insert_at = num_insertions_before + insert_at; - scheduled.insert(insert_at, to_insert); - } - - // scheduled is guaranteed to be sorted after this point because it was sorted before, and we - // applied sorted updates at their correct positions, accounting for the offsets of previous - // insertions. - } - - Scheduled::set(scheduled); - ParathreadQueue::set(parathread_queue); - AvailabilityCores::set(cores); - } - - /// Note that the given cores have become occupied. Behavior undefined if any of the given cores were not scheduled - /// or the slice is not sorted ascending by core index. - /// - /// Complexity: O(n) in the number of scheduled cores, which is capped at the number of total cores. - /// This is efficient in the case that most scheduled cores are occupied. - pub(crate) fn occupied(now_occupied: &[CoreIndex]) { - if now_occupied.is_empty() { return } - - let mut availability_cores = AvailabilityCores::get(); - Scheduled::mutate(|scheduled| { - // The constraints on the function require that now_occupied is a sorted subset of the - // `scheduled` cores, which are also sorted. - - let mut occupied_iter = now_occupied.iter().cloned().peekable(); - scheduled.retain(|assignment| { - let retain = occupied_iter.peek().map_or(true, |occupied_idx| { - occupied_idx != &assignment.core - }); - - if !retain { - // remove this entry - it's now occupied. and begin inspecting the next extry - // of the occupied iterator. - let _ = occupied_iter.next(); - - availability_cores[assignment.core.0 as usize] = Some(assignment.to_core_occupied()); - } - - retain - }) - }); - - AvailabilityCores::set(availability_cores); - } - - /// Get the para (chain or thread) ID assigned to a particular core or index, if any. Core indices - /// out of bounds will return `None`, as will indices of unassigned cores. - pub(crate) fn core_para(core_index: CoreIndex) -> Option { - let cores = AvailabilityCores::get(); - match cores.get(core_index.0 as usize).and_then(|c| c.as_ref()) { - None => None, - Some(CoreOccupied::Parachain) => { - let parachains = >::parachains(); - Some(parachains[core_index.0 as usize]) - } - Some(CoreOccupied::Parathread(ref entry)) => Some(entry.claim.0), - } - } - - /// Get the validators in the given group, if the group index is valid for this session. - pub(crate) fn group_validators(group_index: GroupIndex) -> Option> { - ValidatorGroups::get().get(group_index.0 as usize).map(|g| g.clone()) - } - - /// Get the group assigned to a specific core by index at the current block number. Result undefined if the core index is unknown - /// or the block number is less than the session start index. - pub(crate) fn group_assigned_to_core(core: CoreIndex, at: T::BlockNumber) -> Option { - let config = >::config(); - let session_start_block = >::get(); - - if at < session_start_block { return None } - - let validator_groups = ValidatorGroups::get(); - - if core.0 as usize >= validator_groups.len() { return None } - - let rotations_since_session_start: T::BlockNumber = - (at - session_start_block) / config.group_rotation_frequency.into(); - - let rotations_since_session_start - = match >::try_into(rotations_since_session_start) - { - Ok(i) => i, - Err(_) => 0, // can only happen if rotations occur only once every u32::max(), - // so functionally no difference in behavior. - }; - - let group_idx = (core.0 as usize + rotations_since_session_start as usize) % validator_groups.len(); - Some(GroupIndex(group_idx as u32)) - } - - /// Returns an optional predicate that should be used for timing out occupied cores. - /// - /// If `None`, no timing-out should be done. The predicate accepts the index of the core, and the - /// block number since which it has been occupied, and the respective parachain and parathread - /// timeouts, i.e. only within `max(config.chain_availability_period, config.thread_availability_period)` - /// of the last rotation would this return `Some`, unless there are no rotations. - /// - /// This really should not be a box, but is working around a compiler limitation filed here: - /// https://github.com/rust-lang/rust/issues/73226 - /// which prevents us from testing the code if using `impl Trait`. - pub(crate) fn availability_timeout_predicate() -> Option bool>> { - let now = >::block_number(); - let config = >::config(); - - let session_start = >::get(); - let blocks_since_session_start = now.saturating_sub(session_start); - let blocks_since_last_rotation = blocks_since_session_start % config.group_rotation_frequency; - - let absolute_cutoff = sp_std::cmp::max( - config.chain_availability_period, - config.thread_availability_period, - ); - - let availability_cores = AvailabilityCores::get(); - - if blocks_since_last_rotation >= absolute_cutoff { - None - } else { - Some(Box::new(move |core_index: CoreIndex, pending_since| { - match availability_cores.get(core_index.0 as usize) { - None => true, // out-of-bounds, doesn't really matter what is returned. - Some(None) => true, // core not occupied, still doesn't really matter. - Some(Some(CoreOccupied::Parachain)) => { - if blocks_since_last_rotation >= config.chain_availability_period { - false // no pruning except recently after rotation. - } else { - now.saturating_sub(pending_since) >= config.chain_availability_period - } - } - Some(Some(CoreOccupied::Parathread(_))) => { - if blocks_since_last_rotation >= config.thread_availability_period { - false // no pruning except recently after rotation. - } else { - now.saturating_sub(pending_since) >= config.thread_availability_period - } - } - } - })) - } - } - - /// Returns a helper for determining group rotation. - pub(crate) fn group_rotation_info(now: T::BlockNumber) -> GroupRotationInfo { - let session_start_block = Self::session_start_block(); - let group_rotation_frequency = >::config() - .group_rotation_frequency; - - GroupRotationInfo { - session_start_block, - now, - group_rotation_frequency, - } - } - - /// Return the next thing that will be scheduled on this core assuming it is currently - /// occupied and the candidate occupying it became available. - /// - /// For parachains, this is always the ID of the parachain and no specified collator. - /// For parathreads, this is based on the next item in the ParathreadQueue assigned to that - /// core, and is None if there isn't one. - pub(crate) fn next_up_on_available(core: CoreIndex) -> Option { - let parachains = >::parachains(); - if (core.0 as usize) < parachains.len() { - Some(ScheduledCore { - para_id: parachains[core.0 as usize], - collator: None, - }) - } else { - let queue = ParathreadQueue::get(); - let core_offset = (core.0 as usize - parachains.len()) as u32; - queue.get_next_on_core(core_offset).map(|entry| ScheduledCore { - para_id: entry.claim.0, - collator: Some(entry.claim.1.clone()), - }) - } - } - - /// Return the next thing that will be scheduled on this core assuming it is currently - /// occupied and the candidate occupying it became available. - /// - /// For parachains, this is always the ID of the parachain and no specified collator. - /// For parathreads, this is based on the next item in the ParathreadQueue assigned to that - /// core, or if there isn't one, the claim that is currently occupying the core, as long - /// as the claim's retries would not exceed the limit. Otherwise None. - pub(crate) fn next_up_on_time_out(core: CoreIndex) -> Option { - let parachains = >::parachains(); - if (core.0 as usize) < parachains.len() { - Some(ScheduledCore { - para_id: parachains[core.0 as usize], - collator: None, - }) - } else { - let queue = ParathreadQueue::get(); - - // This is the next scheduled para on this core. - let core_offset = (core.0 as usize - parachains.len()) as u32; - queue.get_next_on_core(core_offset) - .map(|entry| ScheduledCore { - para_id: entry.claim.0, - collator: Some(entry.claim.1.clone()), - }) - .or_else(|| { - // Or, if none, the claim currently occupying the core, - // as it would be put back on the queue after timing out. - let cores = AvailabilityCores::get(); - cores.get(core.0 as usize).and_then(|c| c.as_ref()).and_then(|o| { - match o { - CoreOccupied::Parathread(entry) => { - Some(ScheduledCore { - para_id: entry.claim.0, - collator: Some(entry.claim.1.clone()), - }) - } - CoreOccupied::Parachain => None, // defensive; not possible. - } - }) - }) - } - } - - // Free all scheduled cores and return parathread claims to queue, with retries incremented. - pub(crate) fn clear() { - let config = >::config(); - ParathreadQueue::mutate(|queue| { - for core_assignment in Scheduled::take() { - if let AssignmentKind::Parathread(collator, retries) = core_assignment.kind { - if !>::is_parathread(core_assignment.para_id) { continue } - - let entry = ParathreadEntry { - claim: ParathreadClaim(core_assignment.para_id, collator), - retries: retries + 1, - }; - - if entry.retries <= config.parathread_retries { - queue.enqueue_entry(entry, config.parathread_cores); - } - } - } - }); - } -} - - -#[cfg(test)] -mod tests { - use super::*; - - use primitives::v1::{BlockNumber, ValidatorId, CollatorId, SessionIndex}; - use frame_support::{ - assert_ok, - traits::{OnFinalize, OnInitialize}, - }; - use keyring::Sr25519Keyring; - - use crate::mock::{new_test_ext, Configuration, Paras, Shared, System, Scheduler, MockGenesisConfig}; - use crate::initializer::SessionChangeNotification; - use crate::configuration::HostConfiguration; - use crate::paras::ParaGenesisArgs; - - fn schedule_blank_para(id: ParaId, is_chain: bool) { - assert_ok!(Paras::schedule_para_initialize(id, ParaGenesisArgs { - genesis_head: Vec::new().into(), - validation_code: Vec::new().into(), - parachain: is_chain, - })); - } - - fn run_to_block( - to: BlockNumber, - new_session: impl Fn(BlockNumber) -> Option>, - ) { - while System::block_number() < to { - let b = System::block_number(); - - Scheduler::initializer_finalize(); - Paras::initializer_finalize(); - - if let Some(notification) = new_session(b + 1) { - let mut notification_with_session_index = notification; - // We will make every session change trigger an action queue. Normally this may require 2 or more session changes. - if notification_with_session_index.session_index == SessionIndex::default() { - notification_with_session_index.session_index = Shared::scheduled_session(); - } - Paras::initializer_on_new_session(¬ification_with_session_index); - Scheduler::initializer_on_new_session(¬ification_with_session_index); - } - - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - Paras::initializer_initialize(b + 1); - Scheduler::initializer_initialize(b + 1); - - // In the real runt;me this is expected to be called by the `InclusionInherent` module. - Scheduler::clear(); - Scheduler::schedule(Vec::new(), b + 1); - } - } - - fn run_to_end_of_block( - to: BlockNumber, - new_session: impl Fn(BlockNumber) -> Option>, - ) { - run_to_block(to, &new_session); - - Scheduler::initializer_finalize(); - Paras::initializer_finalize(); - - if let Some(notification) = new_session(to + 1) { - Paras::initializer_on_new_session(¬ification); - Scheduler::initializer_on_new_session(¬ification); - } - - System::on_finalize(to); - } - - fn default_config() -> HostConfiguration { - HostConfiguration { - parathread_cores: 3, - group_rotation_frequency: 10, - chain_availability_period: 3, - thread_availability_period: 5, - scheduling_lookahead: 2, - parathread_retries: 1, - ..Default::default() - } - } - - #[test] - fn add_parathread_claim_works() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_id = ParaId::from(10); - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(thread_id, false); - - assert!(!Paras::is_parathread(thread_id)); - - run_to_block(10, |n| if n == 10 { Some(Default::default()) } else { None }); - - assert!(Paras::is_parathread(thread_id)); - - { - Scheduler::add_parathread_claim(ParathreadClaim(thread_id, collator.clone())); - let queue = ParathreadQueue::get(); - assert_eq!(queue.next_core_offset, 1); - assert_eq!(queue.queue.len(), 1); - assert_eq!(queue.queue[0], QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_id, collator.clone()), - retries: 0, - }, - core_offset: 0, - }); - } - - // due to the index, completing claims are not allowed. - { - let collator2 = CollatorId::from(Sr25519Keyring::Bob.public()); - Scheduler::add_parathread_claim(ParathreadClaim(thread_id, collator2.clone())); - let queue = ParathreadQueue::get(); - assert_eq!(queue.next_core_offset, 1); - assert_eq!(queue.queue.len(), 1); - assert_eq!(queue.queue[0], QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_id, collator.clone()), - retries: 0, - }, - core_offset: 0, - }); - } - - // claims on non-live parathreads have no effect. - { - let thread_id2 = ParaId::from(11); - Scheduler::add_parathread_claim(ParathreadClaim(thread_id2, collator.clone())); - let queue = ParathreadQueue::get(); - assert_eq!(queue.next_core_offset, 1); - assert_eq!(queue.queue.len(), 1); - assert_eq!(queue.queue[0], QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_id, collator.clone()), - retries: 0, - }, - core_offset: 0, - }); - } - }) - } - - #[test] - fn cannot_add_claim_when_no_parathread_cores() { - let config = { - let mut config = default_config(); - config.parathread_cores = 0; - config - }; - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config, - ..Default::default() - }, - ..Default::default() - }; - - let thread_id = ParaId::from(10); - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(thread_id, false); - - assert!(!Paras::is_parathread(thread_id)); - - run_to_block(10, |n| if n == 10 { Some(Default::default()) } else { None }); - - assert!(Paras::is_parathread(thread_id)); - - Scheduler::add_parathread_claim(ParathreadClaim(thread_id, collator.clone())); - assert_eq!(ParathreadQueue::get(), Default::default()); - }); - } - - #[test] - fn session_change_prunes_cores_beyond_retries_and_those_from_non_live_parathreads() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - let max_parathread_retries = default_config().parathread_retries; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - let thread_c = ParaId::from(3); - let thread_d = ParaId::from(4); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(Configuration::config(), default_config()); - - // threads a, b, and c will be live in next session, but not d. - { - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - schedule_blank_para(thread_c, false); - } - - // set up a queue as if n_cores was 4 and with some with many retries. - ParathreadQueue::put({ - let mut queue = ParathreadClaimQueue::default(); - - // Will be pruned: too many retries. - queue.enqueue_entry(ParathreadEntry { - claim: ParathreadClaim(thread_a, collator.clone()), - retries: max_parathread_retries + 1, - }, 4); - - // Will not be pruned. - queue.enqueue_entry(ParathreadEntry { - claim: ParathreadClaim(thread_b, collator.clone()), - retries: max_parathread_retries, - }, 4); - - // Will not be pruned. - queue.enqueue_entry(ParathreadEntry { - claim: ParathreadClaim(thread_c, collator.clone()), - retries: 0, - }, 4); - - // Will be pruned: not a live parathread. - queue.enqueue_entry(ParathreadEntry { - claim: ParathreadClaim(thread_d, collator.clone()), - retries: 0, - }, 4); - - queue - }); - - ParathreadClaimIndex::put(vec![thread_a, thread_b, thread_c, thread_d]); - - run_to_block( - 10, - |b| match b { - 10 => Some(SessionChangeNotification { - new_config: Configuration::config(), - ..Default::default() - }), - _ => None, - } - ); - assert_eq!(Configuration::config(), default_config()); - - let queue = ParathreadQueue::get(); - assert_eq!( - queue.queue, - vec![ - QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_b, collator.clone()), - retries: max_parathread_retries, - }, - core_offset: 0, - }, - QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_c, collator.clone()), - retries: 0, - }, - core_offset: 1, - }, - ] - ); - assert_eq!(queue.next_core_offset, 2); - - assert_eq!(ParathreadClaimIndex::get(), vec![thread_b, thread_c]); - }) - } - - #[test] - fn session_change_shuffles_validators() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - assert_eq!(default_config().parathread_cores, 3); - new_test_ext(genesis_config).execute_with(|| { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - // ensure that we have 5 groups by registering 2 parachains. - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - - - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ValidatorId::from(Sr25519Keyring::Ferdie.public()), - ValidatorId::from(Sr25519Keyring::One.public()), - ], - random_seed: [99; 32], - ..Default::default() - }), - _ => None, - }); - - let groups = ValidatorGroups::get(); - assert_eq!(groups.len(), 5); - - // first two groups have the overflow. - for i in 0..2 { - assert_eq!(groups[i].len(), 2); - } - - for i in 2..5 { - assert_eq!(groups[i].len(), 1); - } - }); - } - - #[test] - fn session_change_takes_only_max_per_core() { - let config = { - let mut config = default_config(); - config.parathread_cores = 0; - config.max_validators_per_core = Some(1); - config - }; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - new_test_ext(genesis_config).execute_with(|| { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let chain_c = ParaId::from(3); - - // ensure that we have 5 groups by registering 2 parachains. - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - schedule_blank_para(chain_c, false); - - - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ValidatorId::from(Sr25519Keyring::Ferdie.public()), - ValidatorId::from(Sr25519Keyring::One.public()), - ], - random_seed: [99; 32], - ..Default::default() - }), - _ => None, - }); - - let groups = ValidatorGroups::get(); - assert_eq!(groups.len(), 7); - - // Every validator gets its own group, even though there are 2 paras. - for i in 0..7 { - assert_eq!(groups[i].len(), 1); - } - }); - } - - #[test] - fn schedule_schedules() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - let thread_a = ParaId::from(3); - let thread_b = ParaId::from(4); - let thread_c = ParaId::from(5); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - // register 2 parachains - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - - // and 3 parathreads - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - schedule_blank_para(thread_c, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - { - let scheduled = Scheduler::scheduled(); - assert_eq!(scheduled.len(), 2); - - assert_eq!(scheduled[0], CoreAssignment { - core: CoreIndex(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(0), - }); - - assert_eq!(scheduled[1], CoreAssignment { - core: CoreIndex(1), - para_id: chain_b, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(1), - }); - } - - // add a couple of parathread claims. - Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_c, collator.clone())); - - run_to_block(2, |_| None); - - { - let scheduled = Scheduler::scheduled(); - assert_eq!(scheduled.len(), 4); - - assert_eq!(scheduled[0], CoreAssignment { - core: CoreIndex(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(0), - }); - - assert_eq!(scheduled[1], CoreAssignment { - core: CoreIndex(1), - para_id: chain_b, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(1), - }); - - assert_eq!(scheduled[2], CoreAssignment{ - core: CoreIndex(2), - para_id: thread_a, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(2), - }); - - assert_eq!(scheduled[3], CoreAssignment{ - core: CoreIndex(3), - para_id: thread_c, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(3), - }); - } - }); - } - - #[test] - fn schedule_schedules_including_just_freed() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - let thread_a = ParaId::from(3); - let thread_b = ParaId::from(4); - let thread_c = ParaId::from(5); - let thread_d = ParaId::from(6); - let thread_e = ParaId::from(7); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - // register 2 parachains - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - - // and 5 parathreads - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - schedule_blank_para(thread_c, false); - schedule_blank_para(thread_d, false); - schedule_blank_para(thread_e, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - // add a couple of parathread claims now that the parathreads are live. - Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_c, collator.clone())); - - run_to_block(2, |_| None); - - assert_eq!(Scheduler::scheduled().len(), 4); - - // cores 0, 1, 2, and 3 should be occupied. mark them as such. - Scheduler::occupied(&[CoreIndex(0), CoreIndex(1), CoreIndex(2), CoreIndex(3)]); - - { - let cores = AvailabilityCores::get(); - - assert!(cores[0].is_some()); - assert!(cores[1].is_some()); - assert!(cores[2].is_some()); - assert!(cores[3].is_some()); - assert!(cores[4].is_none()); - - assert!(Scheduler::scheduled().is_empty()); - } - - // add a couple more parathread claims - the claim on `b` will go to the 3rd parathread core (4) - // and the claim on `d` will go back to the 1st parathread core (2). The claim on `e` then - // will go for core `3`. - Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_d, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_e, collator.clone())); - - run_to_block(3, |_| None); - - { - let scheduled = Scheduler::scheduled(); - - // cores 0 and 1 are occupied by parachains. cores 2 and 3 are occupied by parathread - // claims. core 4 was free. - assert_eq!(scheduled.len(), 1); - assert_eq!(scheduled[0], CoreAssignment { - core: CoreIndex(4), - para_id: thread_b, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(4), - }); - } - - // now note that cores 0, 2, and 3 were freed. - Scheduler::schedule( - vec![ - (CoreIndex(0), FreedReason::Concluded), - (CoreIndex(2), FreedReason::Concluded), - (CoreIndex(3), FreedReason::TimedOut), // should go back on queue. - ], - 3 - ); - - { - let scheduled = Scheduler::scheduled(); - - // 1 thing scheduled before, + 3 cores freed. - assert_eq!(scheduled.len(), 4); - assert_eq!(scheduled[0], CoreAssignment { - core: CoreIndex(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(0), - }); - assert_eq!(scheduled[1], CoreAssignment { - core: CoreIndex(2), - para_id: thread_d, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(2), - }); - assert_eq!(scheduled[2], CoreAssignment { - core: CoreIndex(3), - para_id: thread_e, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(3), - }); - assert_eq!(scheduled[3], CoreAssignment { - core: CoreIndex(4), - para_id: thread_b, - kind: AssignmentKind::Parathread(collator.clone(), 0), - group_idx: GroupIndex(4), - }); - - // the prior claim on thread A concluded, but the claim on thread C was marked as - // timed out. - let index = ParathreadClaimIndex::get(); - let parathread_queue = ParathreadQueue::get(); - - // thread A claim should have been wiped, but thread C claim should remain. - assert_eq!(index, vec![thread_b, thread_c, thread_d, thread_e]); - - // Although C was descheduled, the core `4` was occupied so C goes back on the queue. - assert_eq!(parathread_queue.queue.len(), 1); - assert_eq!(parathread_queue.queue[0], QueuedParathread { - claim: ParathreadEntry { - claim: ParathreadClaim(thread_c, collator.clone()), - retries: 0, // retries not incremented by timeout - validators' fault. - }, - core_offset: 2, // reassigned to next core. thread_e claim was on offset 1. - }); - } - }); - } - - #[test] - fn schedule_clears_availability_cores() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - let chain_c = ParaId::from(3); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - // register 3 parachains - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - schedule_blank_para(chain_c, true); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - run_to_block(2, |_| None); - - assert_eq!(Scheduler::scheduled().len(), 3); - - // cores 0, 1, and 2 should be occupied. mark them as such. - Scheduler::occupied(&[CoreIndex(0), CoreIndex(1), CoreIndex(2)]); - - { - let cores = AvailabilityCores::get(); - - assert!(cores[0].is_some()); - assert!(cores[1].is_some()); - assert!(cores[2].is_some()); - - assert!(Scheduler::scheduled().is_empty()); - } - - run_to_block(3, |_| None); - - // now note that cores 0 and 2 were freed. - Scheduler::schedule( - vec![ - (CoreIndex(0), FreedReason::Concluded), - (CoreIndex(2), FreedReason::Concluded), - ], - 3, - ); - - { - let scheduled = Scheduler::scheduled(); - - assert_eq!(scheduled.len(), 2); - assert_eq!(scheduled[0], CoreAssignment { - core: CoreIndex(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(0), - }); - assert_eq!(scheduled[1], CoreAssignment { - core: CoreIndex(2), - para_id: chain_c, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(2), - }); - - // The freed cores should be `None` in `AvailabilityCores`. - let cores = AvailabilityCores::get(); - assert!(cores[0].is_none()); - assert!(cores[2].is_none()); - } - }); - } - - #[test] - fn schedule_rotates_groups() { - let config = { - let mut config = default_config(); - - // make sure parathread requests don't retry-out - config.parathread_retries = config.group_rotation_frequency * 3; - config.parathread_cores = 2; - config - }; - - let rotation_frequency = config.group_rotation_frequency; - let parathread_cores = config.parathread_cores; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - let session_start_block = ::SessionStartBlock::get(); - assert_eq!(session_start_block, 1); - - Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); - - run_to_block(2, |_| None); - - let assert_groups_rotated = |rotations: u32| { - let scheduled = Scheduler::scheduled(); - assert_eq!(scheduled.len(), 2); - assert_eq!(scheduled[0].group_idx, GroupIndex((0u32 + rotations) % parathread_cores)); - assert_eq!(scheduled[1].group_idx, GroupIndex((1u32 + rotations) % parathread_cores)); - }; - - assert_groups_rotated(0); - - // one block before first rotation. - run_to_block(rotation_frequency, |_| None); - - assert_groups_rotated(0); - - // first rotation. - run_to_block(rotation_frequency + 1, |_| None); - assert_groups_rotated(1); - - // one block before second rotation. - run_to_block(rotation_frequency * 2, |_| None); - assert_groups_rotated(1); - - // second rotation. - run_to_block(rotation_frequency * 2 + 1, |_| None); - assert_groups_rotated(2); - }); - } - - #[test] - fn parathread_claims_are_pruned_after_retries() { - let max_retries = default_config().parathread_retries; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); - - run_to_block(2, |_| None); - assert_eq!(Scheduler::scheduled().len(), 2); - - run_to_block(2 + max_retries, |_| None); - assert_eq!(Scheduler::scheduled().len(), 2); - - run_to_block(2 + max_retries + 1, |_| None); - assert_eq!(Scheduler::scheduled().len(), 0); - }); - } - - #[test] - fn availability_predicate_works() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let HostConfiguration { - group_rotation_frequency, - chain_availability_period, - thread_availability_period, - .. - } = default_config(); - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - assert!( - chain_availability_period < thread_availability_period - && thread_availability_period < group_rotation_frequency - ); - - let chain_a = ParaId::from(1); - let thread_a = ParaId::from(2); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(chain_a, true); - schedule_blank_para(thread_a, false); - - // start a new session with our chain & thread registered. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - // assign some availability cores. - { - AvailabilityCores::mutate(|cores| { - cores[0] = Some(CoreOccupied::Parachain); - cores[1] = Some(CoreOccupied::Parathread(ParathreadEntry { - claim: ParathreadClaim(thread_a, collator), - retries: 0, - })) - }); - } - - run_to_block(1 + thread_availability_period, |_| None); - assert!(Scheduler::availability_timeout_predicate().is_none()); - - run_to_block(1 + group_rotation_frequency, |_| None); - - { - let pred = Scheduler::availability_timeout_predicate() - .expect("predicate exists recently after rotation"); - - let now = System::block_number(); - let would_be_timed_out = now - thread_availability_period; - for i in 0..AvailabilityCores::get().len() { - // returns true for unoccupied cores. - // And can time out both threads and chains at this stage. - assert!(pred(CoreIndex(i as u32), would_be_timed_out)); - } - - assert!(!pred(CoreIndex(0), now)); // assigned: chain - assert!(!pred(CoreIndex(1), now)); // assigned: thread - assert!(pred(CoreIndex(2), now)); - - // check the tighter bound on chains vs threads. - assert!(pred(CoreIndex(0), now - chain_availability_period)); - assert!(!pred(CoreIndex(1), now - chain_availability_period)); - - // check the threshold is exact. - assert!(!pred(CoreIndex(0), now - chain_availability_period + 1)); - assert!(!pred(CoreIndex(1), now - thread_availability_period + 1)); - } - - run_to_block(1 + group_rotation_frequency + chain_availability_period, |_| None); - - { - let pred = Scheduler::availability_timeout_predicate() - .expect("predicate exists recently after rotation"); - - let would_be_timed_out = System::block_number() - thread_availability_period; - - assert!(!pred(CoreIndex(0), would_be_timed_out)); // chains can't be timed out now. - assert!(pred(CoreIndex(1), would_be_timed_out)); // but threads can. - } - - run_to_block(1 + group_rotation_frequency + thread_availability_period, |_| None); - - assert!(Scheduler::availability_timeout_predicate().is_none()); - }); - } - - #[test] - fn next_up_on_available_uses_next_scheduled_or_none_for_thread() { - let mut config = default_config(); - config.parathread_cores = 1; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - let thread_claim_a = ParathreadClaim(thread_a, collator.clone()); - let thread_claim_b = ParathreadClaim(thread_b, collator.clone()); - - Scheduler::add_parathread_claim(thread_claim_a.clone()); - - run_to_block(2, |_| None); - - { - assert_eq!(Scheduler::scheduled().len(), 1); - assert_eq!(Scheduler::availability_cores().len(), 1); - - Scheduler::occupied(&[CoreIndex(0)]); - - let cores = Scheduler::availability_cores(); - match cores[0].as_ref().unwrap() { - CoreOccupied::Parathread(entry) => assert_eq!(entry.claim, thread_claim_a), - _ => panic!("with no chains, only core should be a thread core"), - } - - assert!(Scheduler::next_up_on_available(CoreIndex(0)).is_none()); - - Scheduler::add_parathread_claim(thread_claim_b); - - let queue = ParathreadQueue::get(); - assert_eq!( - queue.get_next_on_core(0).unwrap().claim, - ParathreadClaim(thread_b, collator.clone()), - ); - - assert_eq!( - Scheduler::next_up_on_available(CoreIndex(0)).unwrap(), - ScheduledCore { - para_id: thread_b, - collator: Some(collator.clone()), - } - ); - } - }); - } - - #[test] - fn next_up_on_time_out_reuses_claim_if_nothing_queued() { - let mut config = default_config(); - config.parathread_cores = 1; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - let thread_claim_a = ParathreadClaim(thread_a, collator.clone()); - let thread_claim_b = ParathreadClaim(thread_b, collator.clone()); - - Scheduler::add_parathread_claim(thread_claim_a.clone()); - - run_to_block(2, |_| None); - - { - assert_eq!(Scheduler::scheduled().len(), 1); - assert_eq!(Scheduler::availability_cores().len(), 1); - - Scheduler::occupied(&[CoreIndex(0)]); - - let cores = Scheduler::availability_cores(); - match cores[0].as_ref().unwrap() { - CoreOccupied::Parathread(entry) => assert_eq!(entry.claim, thread_claim_a), - _ => panic!("with no chains, only core should be a thread core"), - } - - let queue = ParathreadQueue::get(); - assert!(queue.get_next_on_core(0).is_none()); - assert_eq!( - Scheduler::next_up_on_time_out(CoreIndex(0)).unwrap(), - ScheduledCore { - para_id: thread_a, - collator: Some(collator.clone()), - } - ); - - Scheduler::add_parathread_claim(thread_claim_b); - - let queue = ParathreadQueue::get(); - assert_eq!( - queue.get_next_on_core(0).unwrap().claim, - ParathreadClaim(thread_b, collator.clone()), - ); - - // Now that there is an earlier next-up, we use that. - assert_eq!( - Scheduler::next_up_on_available(CoreIndex(0)).unwrap(), - ScheduledCore { - para_id: thread_b, - collator: Some(collator.clone()), - } - ); - } - }); - } - - #[test] - fn next_up_on_available_is_parachain_always() { - let mut config = default_config(); - config.parathread_cores = 0; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - let chain_a = ParaId::from(1); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(chain_a, true); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - run_to_block(2, |_| None); - - { - assert_eq!(Scheduler::scheduled().len(), 1); - assert_eq!(Scheduler::availability_cores().len(), 1); - - Scheduler::occupied(&[CoreIndex(0)]); - - let cores = Scheduler::availability_cores(); - match cores[0].as_ref().unwrap() { - CoreOccupied::Parachain => {}, - _ => panic!("with no threads, only core should be a chain core"), - } - - // Now that there is an earlier next-up, we use that. - assert_eq!( - Scheduler::next_up_on_available(CoreIndex(0)).unwrap(), - ScheduledCore { - para_id: chain_a, - collator: None, - } - ); - } - }); - } - - #[test] - fn next_up_on_time_out_is_parachain_always() { - let mut config = default_config(); - config.parathread_cores = 0; - - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: config.clone(), - ..Default::default() - }, - ..Default::default() - }; - - let chain_a = ParaId::from(1); - - new_test_ext(genesis_config).execute_with(|| { - schedule_blank_para(chain_a, true); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: config.clone(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - run_to_block(2, |_| None); - - { - assert_eq!(Scheduler::scheduled().len(), 1); - assert_eq!(Scheduler::availability_cores().len(), 1); - - Scheduler::occupied(&[CoreIndex(0)]); - - let cores = Scheduler::availability_cores(); - match cores[0].as_ref().unwrap() { - CoreOccupied::Parachain => {}, - _ => panic!("with no threads, only core should be a chain core"), - } - - // Now that there is an earlier next-up, we use that. - assert_eq!( - Scheduler::next_up_on_available(CoreIndex(0)).unwrap(), - ScheduledCore { - para_id: chain_a, - collator: None, - } - ); - } - }); - } - - #[test] - fn session_change_requires_reschedule_dropping_removed_paras() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - assert_eq!(default_config().parathread_cores, 3); - new_test_ext(genesis_config).execute_with(|| { - let chain_a = ParaId::from(1); - let chain_b = ParaId::from(2); - - // ensure that we have 5 groups by registering 2 parachains. - schedule_blank_para(chain_a, true); - schedule_blank_para(chain_b, true); - - - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ValidatorId::from(Sr25519Keyring::Ferdie.public()), - ValidatorId::from(Sr25519Keyring::One.public()), - ], - random_seed: [99; 32], - ..Default::default() - }), - _ => None, - }); - - assert_eq!(Scheduler::scheduled().len(), 2); - - let groups = ValidatorGroups::get(); - assert_eq!(groups.len(), 5); - - assert_ok!(Paras::schedule_para_cleanup(chain_b)); - - run_to_end_of_block(2, |number| match number { - 2 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Bob.public()), - ValidatorId::from(Sr25519Keyring::Charlie.public()), - ValidatorId::from(Sr25519Keyring::Dave.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ValidatorId::from(Sr25519Keyring::Ferdie.public()), - ValidatorId::from(Sr25519Keyring::One.public()), - ], - random_seed: [99; 32], - ..Default::default() - }), - _ => None, - }); - - Scheduler::clear(); - Scheduler::schedule(Vec::new(), 3); - - assert_eq!( - Scheduler::scheduled(), - vec![ - CoreAssignment { - core: CoreIndex(0), - para_id: chain_a, - kind: AssignmentKind::Parachain, - group_idx: GroupIndex(0), - } - ], - ); - }); - } - - #[test] - fn parathread_claims_are_pruned_after_deregistration() { - let genesis_config = MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - }; - - let thread_a = ParaId::from(1); - let thread_b = ParaId::from(2); - - let collator = CollatorId::from(Sr25519Keyring::Alice.public()); - - new_test_ext(genesis_config).execute_with(|| { - assert_eq!(default_config().parathread_cores, 3); - - schedule_blank_para(thread_a, false); - schedule_blank_para(thread_b, false); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(1, |number| match number { - 1 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - Scheduler::add_parathread_claim(ParathreadClaim(thread_a, collator.clone())); - Scheduler::add_parathread_claim(ParathreadClaim(thread_b, collator.clone())); - - run_to_block(2, |_| None); - assert_eq!(Scheduler::scheduled().len(), 2); - - assert_ok!(Paras::schedule_para_cleanup(thread_a)); - - // start a new session to activate, 5 validators for 5 cores. - run_to_block(3, |number| match number { - 3 => Some(SessionChangeNotification { - new_config: default_config(), - validators: vec![ - ValidatorId::from(Sr25519Keyring::Alice.public()), - ValidatorId::from(Sr25519Keyring::Eve.public()), - ], - ..Default::default() - }), - _ => None, - }); - - assert_eq!(Scheduler::scheduled().len(), 1); - }); - } - -} diff --git a/runtime/parachains/src/session_info.rs b/runtime/parachains/src/session_info.rs deleted file mode 100644 index 159d966a86d2..000000000000 --- a/runtime/parachains/src/session_info.rs +++ /dev/null @@ -1,376 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The session info module provides information about validator sets -//! from prior sessions needed for approvals and disputes. -//! -//! See https://w3f.github.io/parachain-implementers-guide/runtime/session_info.html. - -use primitives::v1::{AssignmentId, AuthorityDiscoveryId, SessionIndex, SessionInfo}; -use frame_support::{ - decl_storage, decl_module, decl_error, - traits::OneSessionHandler, weights::Weight, -}; -use crate::{configuration, paras, scheduler, shared}; -use crate::util::take_active_subset; -use sp_std::vec::Vec; - -pub trait Config: - frame_system::Config - + configuration::Config - + shared::Config - + paras::Config - + scheduler::Config - + AuthorityDiscoveryConfig -{ -} - -decl_storage! { - trait Store for Module as ParaSessionInfo { - /// Assignment keys for the current session. - /// Note that this API is private due to it being prone to 'off-by-one' at session boundaries. - /// When in doubt, use `Sessions` API instead. - AssignmentKeysUnsafe: Vec; - /// The earliest session for which previous session info is stored. - EarliestStoredSession get(fn earliest_stored_session): SessionIndex; - /// Session information in a rolling window. - /// Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`. - /// Does not have any entries before the session index in the first session change notification. - Sessions get(fn session_info): map hasher(identity) SessionIndex => Option; - } -} - -decl_error! { - pub enum Error for Module { } -} - -decl_module! { - /// The session info module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - } -} - -/// An abstraction for the authority discovery pallet -/// to help with mock testing. -pub trait AuthorityDiscoveryConfig { - /// Retrieve authority identifiers of the current authority set in canonical ordering. - fn authorities() -> Vec; -} - -impl AuthorityDiscoveryConfig for T { - fn authorities() -> Vec { - >::current_authorities() - } -} - -impl Module { - /// Handle an incoming session change. - pub(crate) fn initializer_on_new_session( - notification: &crate::initializer::SessionChangeNotification - ) { - let config = >::config(); - - let dispute_period = config.dispute_period; - - let validators = notification.validators.clone(); - let discovery_keys = ::authorities(); - let assignment_keys = AssignmentKeysUnsafe::get(); - let active_set = >::active_validator_indices(); - - let validator_groups = >::validator_groups(); - let n_cores = >::availability_cores().len() as u32; - let zeroth_delay_tranche_width = config.zeroth_delay_tranche_width; - let relay_vrf_modulo_samples = config.relay_vrf_modulo_samples; - let n_delay_tranches = config.n_delay_tranches; - let no_show_slots = config.no_show_slots; - let needed_approvals = config.needed_approvals; - - let new_session_index = notification.session_index; - let old_earliest_stored_session = EarliestStoredSession::get(); - let new_earliest_stored_session = new_session_index.saturating_sub(dispute_period); - let new_earliest_stored_session = core::cmp::max(new_earliest_stored_session, old_earliest_stored_session); - // remove all entries from `Sessions` from the previous value up to the new value - // avoid a potentially heavy loop when introduced on a live chain - if old_earliest_stored_session != 0 || Sessions::get(0).is_some() { - for idx in old_earliest_stored_session..new_earliest_stored_session { - Sessions::remove(&idx); - } - // update `EarliestStoredSession` based on `config.dispute_period` - EarliestStoredSession::set(new_earliest_stored_session); - } else { - // just introduced on a live chain - EarliestStoredSession::set(new_session_index); - } - // create a new entry in `Sessions` with information about the current session - let new_session_info = SessionInfo { - validators, // these are from the notification and are thus already correct. - discovery_keys: take_active_subset(&active_set, &discovery_keys), - assignment_keys: take_active_subset(&active_set, &assignment_keys), - validator_groups, - n_cores, - zeroth_delay_tranche_width, - relay_vrf_modulo_samples, - n_delay_tranches, - no_show_slots, - needed_approvals, - }; - Sessions::insert(&new_session_index, &new_session_info); - } - - /// Called by the initializer to initialize the session info module. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Called by the initializer to finalize the session info module. - pub(crate) fn initializer_finalize() {} -} - -impl sp_runtime::BoundToRuntimeAppPublic for Module { - type Public = AssignmentId; -} - -impl OneSessionHandler for Module { - type Key = AssignmentId; - - fn on_genesis_session<'a, I: 'a>(_validators: I) - where I: Iterator - { - - } - - fn on_new_session<'a, I: 'a>(_changed: bool, validators: I, _queued: I) - where I: Iterator - { - let assignment_keys: Vec<_> = validators.map(|(_, v)| v).collect(); - AssignmentKeysUnsafe::set(assignment_keys); - } - - fn on_disabled(_i: usize) { } -} - - -#[cfg(test)] -mod tests { - use super::*; - use crate::mock::{ - new_test_ext, Configuration, SessionInfo, System, MockGenesisConfig, - Origin, Shared, - }; - use crate::initializer::SessionChangeNotification; - use crate::configuration::HostConfiguration; - use frame_support::traits::{OnFinalize, OnInitialize}; - use primitives::v1::{BlockNumber, ValidatorId, ValidatorIndex}; - use keyring::Sr25519Keyring; - - fn run_to_block( - to: BlockNumber, - new_session: impl Fn(BlockNumber) -> Option>, - ) { - while System::block_number() < to { - let b = System::block_number(); - - SessionInfo::initializer_finalize(); - Shared::initializer_finalize(); - Configuration::initializer_finalize(); - - if let Some(notification) = new_session(b + 1) { - Configuration::initializer_on_new_session( - ¬ification.session_index, - ); - Shared::initializer_on_new_session( - notification.session_index, - notification.random_seed, - ¬ification.new_config, - notification.validators.clone(), - ); - SessionInfo::initializer_on_new_session(¬ification); - } - - System::on_finalize(b); - - System::on_initialize(b + 1); - System::set_block_number(b + 1); - - Configuration::initializer_initialize(b + 1); - Shared::initializer_initialize(b + 1); - SessionInfo::initializer_initialize(b + 1); - } - } - - fn default_config() -> HostConfiguration { - HostConfiguration { - parathread_cores: 1, - dispute_period: 2, - needed_approvals: 3, - ..Default::default() - } - } - - fn genesis_config() -> MockGenesisConfig { - MockGenesisConfig { - configuration: configuration::GenesisConfig { - config: default_config(), - ..Default::default() - }, - ..Default::default() - } - } - - fn session_changes(n: BlockNumber) -> Option> { - if n % 10 == 0 { - Some(SessionChangeNotification { - session_index: n / 10, - ..Default::default() - }) - } else { - None - } - } - - fn new_session_every_block(n: BlockNumber) -> Option> { - Some(SessionChangeNotification{ - session_index: n, - ..Default::default() - }) - } - - #[test] - fn session_pruning_is_based_on_dispute_period() { - new_test_ext(genesis_config()).execute_with(|| { - // Dispute period starts at 2 - let config = Configuration::config(); - assert_eq!(config.dispute_period, 2); - - // Move to session 10 - run_to_block(100, session_changes); - // Earliest stored session is 10 - 2 = 8 - assert_eq!(EarliestStoredSession::get(), 8); - // Pruning works as expected - assert!(Sessions::get(7).is_none()); - assert!(Sessions::get(8).is_some()); - assert!(Sessions::get(9).is_some()); - - // changing dispute_period works - let dispute_period = 5; - Configuration::set_dispute_period(Origin::root(), dispute_period).unwrap(); - - // Dispute period does not automatically change - let config = Configuration::config(); - assert_eq!(config.dispute_period, 2); - // Two sessions later it will though - run_to_block(120, session_changes); - let config = Configuration::config(); - assert_eq!(config.dispute_period, 5); - - run_to_block(200, session_changes); - assert_eq!(EarliestStoredSession::get(), 20 - dispute_period); - - // Increase dispute period even more - let new_dispute_period = 16; - Configuration::set_dispute_period(Origin::root(), new_dispute_period).unwrap(); - - run_to_block(210, session_changes); - assert_eq!(EarliestStoredSession::get(), 21 - dispute_period); - - // Two sessions later it kicks in - run_to_block(220, session_changes); - let config = Configuration::config(); - assert_eq!(config.dispute_period, 16); - // Earliest session stays the same - assert_eq!(EarliestStoredSession::get(), 21 - dispute_period); - - // We still don't have enough stored sessions to start pruning - run_to_block(300, session_changes); - assert_eq!(EarliestStoredSession::get(), 21 - dispute_period); - - // now we do - run_to_block(420, session_changes); - assert_eq!(EarliestStoredSession::get(), 42 - new_dispute_period); - }) - } - - #[test] - fn session_info_is_based_on_config() { - new_test_ext(genesis_config()).execute_with(|| { - run_to_block(1, new_session_every_block); - let session = Sessions::get(&1).unwrap(); - assert_eq!(session.needed_approvals, 3); - - // change some param - Configuration::set_needed_approvals(Origin::root(), 42).unwrap(); - // 2 sessions later - run_to_block(3, new_session_every_block); - let session = Sessions::get(&3).unwrap(); - assert_eq!(session.needed_approvals, 42); - }) - } - - #[test] - fn session_info_active_subsets() { - let unscrambled = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Eve, - ]; - - let active_set = vec![ValidatorIndex(4), ValidatorIndex(0), ValidatorIndex(2)]; - - let unscrambled_validators: Vec - = unscrambled.iter().map(|v| v.public().into()).collect(); - let unscrambled_discovery: Vec - = unscrambled.iter().map(|v| v.public().into()).collect(); - let unscrambled_assignment: Vec - = unscrambled.iter().map(|v| v.public().into()).collect(); - - let validators = take_active_subset(&active_set, &unscrambled_validators); - - new_test_ext(genesis_config()).execute_with(|| { - Shared::set_active_validators_with_indices( - active_set.clone(), - validators.clone(), - ); - - assert_eq!(Shared::active_validator_indices(), active_set); - - AssignmentKeysUnsafe::set(unscrambled_assignment.clone()); - crate::mock::set_discovery_authorities(unscrambled_discovery.clone()); - assert_eq!(::authorities(), unscrambled_discovery); - - // invoke directly, because `run_to_block` will invoke `Shared` and clobber our - // values. - SessionInfo::initializer_on_new_session(&SessionChangeNotification { - session_index: 1, - validators: validators.clone(), - ..Default::default() - }); - let session = Sessions::get(&1).unwrap(); - - assert_eq!(session.validators, validators); - assert_eq!( - session.discovery_keys, - take_active_subset(&active_set, &unscrambled_discovery), - ); - assert_eq!( - session.assignment_keys, - take_active_subset(&active_set, &unscrambled_assignment), - ); - }) - } -} diff --git a/runtime/parachains/src/shared.rs b/runtime/parachains/src/shared.rs deleted file mode 100644 index 2cc51b1368e8..000000000000 --- a/runtime/parachains/src/shared.rs +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A module for any shared state that other pallets may want access to. -//! -//! To avoid cyclic dependencies, it is important that this module is not -//! dependent on any of the other modules. - -use primitives::v1::{SessionIndex, ValidatorId, ValidatorIndex}; -use frame_support::{ - decl_storage, decl_module, decl_error, - weights::Weight, -}; -use sp_std::vec::Vec; - -use rand::{SeedableRng, seq::SliceRandom}; -use rand_chacha::ChaCha20Rng; - -use crate::configuration::HostConfiguration; - -pub trait Config: frame_system::Config { } - -// `SESSION_DELAY` is used to delay any changes to Paras registration or configurations. -// Wait until the session index is 2 larger then the current index to apply any changes, -// which guarantees that at least one full session has passed before any changes are applied. -pub(crate) const SESSION_DELAY: SessionIndex = 2; - -decl_storage! { - trait Store for Module as ParasShared { - /// The current session index. - CurrentSessionIndex get(fn session_index): SessionIndex; - /// All the validators actively participating in parachain consensus. - /// Indices are into the broader validator set. - ActiveValidatorIndices get(fn active_validator_indices): Vec; - /// The parachain attestation keys of the validators actively participating in parachain consensus. - /// This should be the same length as `ActiveValidatorIndices`. - ActiveValidatorKeys get(fn active_validator_keys): Vec; - } -} - -decl_error! { - pub enum Error for Module { } -} - -decl_module! { - /// The session info module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - } -} - -impl Module { - /// Called by the initializer to initialize the configuration module. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Called by the initializer to finalize the configuration module. - pub(crate) fn initializer_finalize() { } - - /// Called by the initializer to note that a new session has started. - /// - /// Returns the list of outgoing paras from the actions queue. - pub(crate) fn initializer_on_new_session( - session_index: SessionIndex, - random_seed: [u8; 32], - new_config: &HostConfiguration, - all_validators: Vec, - ) -> Vec { - CurrentSessionIndex::set(session_index); - let mut rng: ChaCha20Rng = SeedableRng::from_seed(random_seed); - - let mut shuffled_indices: Vec<_> = (0..all_validators.len()) - .enumerate() - .map(|(i, _)| ValidatorIndex(i as _)) - .collect(); - - shuffled_indices.shuffle(&mut rng); - - if let Some(max) = new_config.max_validators { - shuffled_indices.truncate(max as usize); - } - - let active_validator_keys = crate::util::take_active_subset( - &shuffled_indices, - &all_validators, - ); - - ActiveValidatorIndices::set(shuffled_indices); - ActiveValidatorKeys::set(active_validator_keys.clone()); - - active_validator_keys - } - - /// Return the session index that should be used for any future scheduled changes. - pub fn scheduled_session() -> SessionIndex { - Self::session_index().saturating_add(SESSION_DELAY) - } - - /// Test function for setting the current session index. - #[cfg(any(feature = "std", feature = "runtime-benchmarks", test))] - pub fn set_session_index(index: SessionIndex) { - CurrentSessionIndex::set(index); - } - - #[cfg(test)] - pub(crate) fn set_active_validators_ascending(active: Vec) { - ActiveValidatorIndices::set( - (0..active.len()).map(|i| ValidatorIndex(i as _)).collect() - ); - ActiveValidatorKeys::set(active); - } - - #[cfg(test)] - pub(crate) fn set_active_validators_with_indices( - indices: Vec, - keys: Vec, - ) { - assert_eq!(indices.len(), keys.len()); - ActiveValidatorIndices::set(indices); - ActiveValidatorKeys::set(keys); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::configuration::HostConfiguration; - use crate::mock::{new_test_ext, MockGenesisConfig, Shared}; - use keyring::Sr25519Keyring; - - fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec { - val_ids.iter().map(|v| v.public().into()).collect() - } - - #[test] - fn sets_and_shuffles_validators() { - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - - let mut config = HostConfiguration::default(); - config.max_validators = None; - - let pubkeys = validator_pubkeys(&validators); - - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let validators = Shared::initializer_on_new_session( - 1, - [1; 32], - &config, - pubkeys, - ); - - assert_eq!( - validators, - validator_pubkeys(&[ - Sr25519Keyring::Ferdie, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Alice, - ]) - ); - - assert_eq!( - Shared::active_validator_keys(), - validators, - ); - - assert_eq!( - Shared::active_validator_indices(), - vec![ - ValidatorIndex(4), - ValidatorIndex(1), - ValidatorIndex(2), - ValidatorIndex(3), - ValidatorIndex(0), - ] - ); - }); - } - - #[test] - fn sets_truncates_and_shuffles_validators() { - let validators = vec![ - Sr25519Keyring::Alice, - Sr25519Keyring::Bob, - Sr25519Keyring::Charlie, - Sr25519Keyring::Dave, - Sr25519Keyring::Ferdie, - ]; - - let mut config = HostConfiguration::default(); - config.max_validators = Some(2); - - let pubkeys = validator_pubkeys(&validators); - - new_test_ext(MockGenesisConfig::default()).execute_with(|| { - let validators = Shared::initializer_on_new_session( - 1, - [1; 32], - &config, - pubkeys, - ); - - assert_eq!( - validators, - validator_pubkeys(&[ - Sr25519Keyring::Ferdie, - Sr25519Keyring::Bob, - ]) - ); - - assert_eq!( - Shared::active_validator_keys(), - validators, - ); - - assert_eq!( - Shared::active_validator_indices(), - vec![ - ValidatorIndex(4), - ValidatorIndex(1), - ] - ); - }); - } -} diff --git a/runtime/parachains/src/ump.rs b/runtime/parachains/src/ump.rs deleted file mode 100644 index 08c4da68e72f..000000000000 --- a/runtime/parachains/src/ump.rs +++ /dev/null @@ -1,984 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use crate::{ - configuration::{self, HostConfiguration}, - initializer, -}; -use sp_std::{prelude::*, fmt, marker::PhantomData, convert::TryFrom}; -use sp_std::collections::{btree_map::BTreeMap, vec_deque::VecDeque}; -use frame_support::{decl_module, decl_event, decl_storage, StorageMap, StorageValue, weights::Weight, traits::Get}; -use primitives::v1::{Id as ParaId, UpwardMessage}; -use xcm::v0::Outcome; - -/// All upward messages coming from parachains will be funneled into an implementation of this trait. -/// -/// The message is opaque from the perspective of UMP. The message size can range from 0 to -/// `config.max_upward_message_size`. -/// -/// It's up to the implementation of this trait to decide what to do with a message as long as it -/// returns the amount of weight consumed in the process of handling. Ignoring a message is a valid -/// strategy. -/// -/// There are no guarantees on how much time it takes for the message sent by a candidate to end up -/// in the sink after the candidate was enacted. That typically depends on the UMP traffic, the sizes -/// of upward messages and the configuration of UMP. -/// -/// It is possible that by the time the message is sank the origin parachain was offboarded. It is -/// up to the implementer to check that if it cares. -pub trait UmpSink { - /// Process an incoming upward message and return the amount of weight it consumed, or `None` if - /// it did not begin processing a message since it would otherwise exceed `max_weight`. - /// - /// See the trait docs for more details. - fn process_upward_message(origin: ParaId, msg: &[u8], max_weight: Weight) -> Result; -} - -/// An implementation of a sink that just swallows the message without consuming any weight. Returns -/// `Some(0)` indicating that no messages existed for it to process. -impl UmpSink for () { - fn process_upward_message(_: ParaId, _: &[u8], _: Weight) -> Result { - Ok(0) - } -} - -/// Simple type used to identify messages for the purpose of reporting events. Secure if and only -/// if the message content is unique. -pub type MessageId = [u8; 32]; - -/// A specific implementation of a UmpSink where messages are in the XCM format -/// and will be forwarded to the XCM Executor. -pub struct XcmSink(PhantomData<(XcmExecutor, Config)>); - -impl, C: Config> UmpSink for XcmSink { - fn process_upward_message(origin: ParaId, data: &[u8], max_weight: Weight) -> Result { - use parity_scale_codec::Decode; - use xcm::VersionedXcm; - use xcm::v0::{Xcm, Junction, MultiLocation, Error as XcmError}; - - let id = sp_io::hashing::blake2_256(&data[..]); - let maybe_msg = VersionedXcm::::decode(&mut &data[..]) - .map(Xcm::::try_from); - match maybe_msg { - Err(_) => { - Module::::deposit_event(Event::InvalidFormat(id)); - Ok(0) - }, - Ok(Err(())) => { - Module::::deposit_event(Event::UnsupportedVersion(id)); - Ok(0) - }, - Ok(Ok(xcm_message)) => { - let xcm_junction: Junction = Junction::Parachain(origin.into()); - let xcm_location: MultiLocation = xcm_junction.into(); - let outcome = XcmExecutor::execute_xcm(xcm_location, xcm_message, max_weight); - match outcome { - Outcome::Error(XcmError::WeightLimitReached(required)) => Err((id, required)), - outcome => { - let weight_used = outcome.weight_used(); - Module::::deposit_event(Event::ExecutedUpward(id, outcome)); - Ok(weight_used) - } - } - } - } - } -} - -/// An error returned by [`check_upward_messages`] that indicates a violation of one of acceptance -/// criteria rules. -pub enum AcceptanceCheckErr { - MoreMessagesThanPermitted { - sent: u32, - permitted: u32, - }, - MessageSize { - idx: u32, - msg_size: u32, - max_size: u32, - }, - CapacityExceeded { - count: u32, - limit: u32, - }, - TotalSizeExceeded { - total_size: u32, - limit: u32, - }, -} - -impl fmt::Debug for AcceptanceCheckErr { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - match *self { - AcceptanceCheckErr::MoreMessagesThanPermitted { sent, permitted } => write!( - fmt, - "more upward messages than permitted by config ({} > {})", - sent, permitted, - ), - AcceptanceCheckErr::MessageSize { - idx, - msg_size, - max_size, - } => write!( - fmt, - "upward message idx {} larger than permitted by config ({} > {})", - idx, msg_size, max_size, - ), - AcceptanceCheckErr::CapacityExceeded { count, limit } => write!( - fmt, - "the ump queue would have more items than permitted by config ({} > {})", - count, limit, - ), - AcceptanceCheckErr::TotalSizeExceeded { total_size, limit } => write!( - fmt, - "the ump queue would have grown past the max size permitted by config ({} > {})", - total_size, limit, - ), - } - } -} - -pub trait Config: frame_system::Config + configuration::Config { - /// The aggregate event. - type Event: From + Into<::Event>; - - /// A place where all received upward messages are funneled. - type UmpSink: UmpSink; - - /// The factor by which the weight limit it multiplied for the first UMP message to execute with. - /// - /// An amount less than 100 keeps more available weight in the queue for messages after the first, and potentially - /// stalls the queue in doing so. More than 100 will provide additional weight for the first message only. - /// - /// Generally you'll want this to be a bit more - 150 or 200 would be good values. - type FirstMessageFactorPercent: Get; -} - -decl_storage! { - trait Store for Module as Ump { - /// The messages waiting to be handled by the relay-chain originating from a certain parachain. - /// - /// Note that some upward messages might have been already processed by the inclusion logic. E.g. - /// channel management messages. - /// - /// The messages are processed in FIFO order. - RelayDispatchQueues: map hasher(twox_64_concat) ParaId => VecDeque; - /// Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`. - /// - /// First item in the tuple is the count of messages and second - /// is the total length (in bytes) of the message payloads. - /// - /// Note that this is an auxilary mapping: it's possible to tell the byte size and the number of - /// messages only looking at `RelayDispatchQueues`. This mapping is separate to avoid the cost of - /// loading the whole message queue if only the total size and count are required. - /// - /// Invariant: - /// - The set of keys should exactly match the set of keys of `RelayDispatchQueues`. - // NOTE that this field is used by parachains via merkle storage proofs, therefore changing - // the format will require migration of parachains. - RelayDispatchQueueSize: map hasher(twox_64_concat) ParaId => (u32, u32); - /// The ordered list of `ParaId`s that have a `RelayDispatchQueue` entry. - /// - /// Invariant: - /// - The set of items from this vector should be exactly the set of the keys in - /// `RelayDispatchQueues` and `RelayDispatchQueueSize`. - NeedsDispatch: Vec; - /// This is the para that gets will get dispatched first during the next upward dispatchable queue - /// execution round. - /// - /// Invariant: - /// - If `Some(para)`, then `para` must be present in `NeedsDispatch`. - NextDispatchRoundStartWith: Option; - } -} - -decl_event! { - pub enum Event { - /// Upward message is invalid XCM. - /// \[ id \] - InvalidFormat(MessageId), - /// Upward message is unsupported version of XCM. - /// \[ id \] - UnsupportedVersion(MessageId), - /// Upward message executed with the given outcome. - /// \[ id, outcome \] - ExecutedUpward(MessageId, Outcome), - /// The weight limit for handling downward messages was reached. - /// \[ id, remaining, required \] - WeightExhausted(MessageId, Weight, Weight), - /// Some downward messages have been received and will be processed. - /// \[ para, count, size \] - UpwardMessagesReceived(ParaId, u32, u32), - } -} - -decl_module! { - /// The UMP module. - pub struct Module for enum Call where origin: ::Origin { - /// Deposit one of this module's events by using the default implementation. - fn deposit_event() = default; - } -} - -/// Routines related to the upward message passing. -impl Module { - /// Block initialization logic, called by initializer. - pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { - 0 - } - - /// Block finalization logic, called by initializer. - pub(crate) fn initializer_finalize() {} - - /// Called by the initializer to note that a new session has started. - pub(crate) fn initializer_on_new_session( - _notification: &initializer::SessionChangeNotification, - outgoing_paras: &[ParaId], - ) { - Self::perform_outgoing_para_cleanup(outgoing_paras); - } - - /// Iterate over all paras that were noted for offboarding and remove all the data - /// associated with them. - fn perform_outgoing_para_cleanup(outgoing: &[ParaId]) { - for outgoing_para in outgoing { - Self::clean_ump_after_outgoing(outgoing_para); - } - } - - /// Remove all relevant storage items for an outgoing parachain. - fn clean_ump_after_outgoing(outgoing_para: &ParaId) { - ::RelayDispatchQueueSize::remove(outgoing_para); - ::RelayDispatchQueues::remove(outgoing_para); - - // Remove the outgoing para from the `NeedsDispatch` list and from - // `NextDispatchRoundStartWith`. - // - // That's needed for maintaining invariant that `NextDispatchRoundStartWith` points to an - // existing item in `NeedsDispatch`. - ::NeedsDispatch::mutate(|v| { - if let Ok(i) = v.binary_search(outgoing_para) { - v.remove(i); - } - }); - ::NextDispatchRoundStartWith::mutate(|v| { - *v = v.filter(|p| p == outgoing_para) - }); - } - - /// Check that all the upward messages sent by a candidate pass the acceptance criteria. Returns - /// false, if any of the messages doesn't pass. - pub(crate) fn check_upward_messages( - config: &HostConfiguration, - para: ParaId, - upward_messages: &[UpwardMessage], - ) -> Result<(), AcceptanceCheckErr> { - if upward_messages.len() as u32 > config.max_upward_message_num_per_candidate { - return Err(AcceptanceCheckErr::MoreMessagesThanPermitted { - sent: upward_messages.len() as u32, - permitted: config.max_upward_message_num_per_candidate, - }); - } - - let (mut para_queue_count, mut para_queue_size) = - ::RelayDispatchQueueSize::get(¶); - - for (idx, msg) in upward_messages.into_iter().enumerate() { - let msg_size = msg.len() as u32; - if msg_size > config.max_upward_message_size { - return Err(AcceptanceCheckErr::MessageSize { - idx: idx as u32, - msg_size, - max_size: config.max_upward_message_size, - }); - } - para_queue_count += 1; - para_queue_size += msg_size; - } - - // make sure that the queue is not overfilled. - // we do it here only once since returning false invalidates the whole relay-chain block. - if para_queue_count > config.max_upward_queue_count { - return Err(AcceptanceCheckErr::CapacityExceeded { - count: para_queue_count, - limit: config.max_upward_queue_count, - }); - } - if para_queue_size > config.max_upward_queue_size { - return Err(AcceptanceCheckErr::TotalSizeExceeded { - total_size: para_queue_size, - limit: config.max_upward_queue_size, - }); - } - - Ok(()) - } - - /// Enqueues `upward_messages` from a `para`'s accepted candidate block. - pub(crate) fn receive_upward_messages( - para: ParaId, - upward_messages: Vec, - ) -> Weight { - let mut weight = 0; - - if !upward_messages.is_empty() { - let (extra_count, extra_size) = upward_messages - .iter() - .fold((0, 0), |(cnt, size), d| (cnt + 1, size + d.len() as u32)); - - ::RelayDispatchQueues::mutate(¶, |v| { - v.extend(upward_messages.into_iter()) - }); - - ::RelayDispatchQueueSize::mutate(¶, |(ref mut cnt, ref mut size)| { - *cnt += extra_count; - *size += extra_size; - }); - - ::NeedsDispatch::mutate(|v| { - if let Err(i) = v.binary_search(¶) { - v.insert(i, para); - } - }); - - // NOTE: The actual computation is not accounted for. It should be benchmarked. - weight += T::DbWeight::get().reads_writes(3, 3); - - Self::deposit_event(Event::UpwardMessagesReceived(para, extra_count, extra_size)); - } - - weight - } - - /// Devote some time into dispatching pending upward messages. - pub(crate) fn process_pending_upward_messages() -> Weight { - let mut weight_used = 0; - - let config = >::config(); - let mut cursor = NeedsDispatchCursor::new::(); - let mut queue_cache = QueueCache::new(); - - while let Some(dispatchee) = cursor.peek() { - if weight_used >= config.ump_service_total_weight { - // Then check whether we've reached or overshoot the - // preferred weight for the dispatching stage. - // - // if so - bail. - break; - } - let max_weight = if weight_used == 0 { - // we increase the amount of weight that we're allowed to use on the first message to try to prevent - // the possibility of blockage of the queue. - config.ump_service_total_weight * T::FirstMessageFactorPercent::get() / 100 - } else { - config.ump_service_total_weight - weight_used - }; - - // dequeue the next message from the queue of the dispatchee - let (upward_message, became_empty) = queue_cache.dequeue::(dispatchee); - if let Some(upward_message) = upward_message { - match T::UmpSink::process_upward_message(dispatchee, &upward_message[..], max_weight) { - Ok(used) => weight_used += used, - Err((id, required)) => { - // we process messages in order and don't drop them if we run out of weight, so need to break - // here. - Self::deposit_event(Event::WeightExhausted(id, max_weight, required)); - break - }, - } - } - - if became_empty { - // the queue is empty now - this para doesn't need attention anymore. - cursor.remove(); - } else { - cursor.advance(); - } - } - - cursor.flush::(); - queue_cache.flush::(); - - weight_used - } -} - -/// To avoid constant fetching, deserializing and serialization the queues are cached. -/// -/// After an item dequeued from a queue for the first time, the queue is stored in this struct rather -/// than being serialized and persisted. -/// -/// This implementation works best when: -/// -/// 1. when the queues are shallow -/// 2. the dispatcher makes more than one cycle -/// -/// if the queues are deep and there are many we would load and keep the queues for a long time, -/// thus increasing the peak memory consumption of the wasm runtime. Under such conditions persisting -/// queues might play better since it's unlikely that they are going to be requested once more. -/// -/// On the other hand, the situation when deep queues exist and it takes more than one dipsatcher -/// cycle to traverse the queues is already sub-optimal and better be avoided. -/// -/// This struct is not supposed to be dropped but rather to be consumed by [`flush`]. -struct QueueCache(BTreeMap); - -struct QueueCacheEntry { - queue: VecDeque, - count: u32, - total_size: u32, -} - -impl QueueCache { - fn new() -> Self { - Self(BTreeMap::new()) - } - - /// Dequeues one item from the upward message queue of the given para. - /// - /// Returns `(upward_message, became_empty)`, where - /// - /// - `upward_message` a dequeued message or `None` if the queue _was_ empty. - /// - `became_empty` is true if the queue _became_ empty. - fn dequeue(&mut self, para: ParaId) -> (Option, bool) { - let cache_entry = self.0.entry(para).or_insert_with(|| { - let queue = as Store>::RelayDispatchQueues::get(¶); - let (count, total_size) = as Store>::RelayDispatchQueueSize::get(¶); - QueueCacheEntry { - queue, - count, - total_size, - } - }); - let upward_message = cache_entry.queue.pop_front(); - if let Some(ref msg) = upward_message { - cache_entry.count -= 1; - cache_entry.total_size -= msg.len() as u32; - } - - let became_empty = cache_entry.queue.is_empty(); - (upward_message, became_empty) - } - - /// Flushes the updated queues into the storage. - fn flush(self) { - // NOTE we use an explicit method here instead of Drop impl because it has unwanted semantics - // within runtime. It is dangerous to use because of double-panics and flushing on a panic - // is not necessary as well. - for ( - para, - QueueCacheEntry { - queue, - count, - total_size, - }, - ) in self.0 - { - if queue.is_empty() { - // remove the entries altogether. - as Store>::RelayDispatchQueues::remove(¶); - as Store>::RelayDispatchQueueSize::remove(¶); - } else { - as Store>::RelayDispatchQueues::insert(¶, queue); - as Store>::RelayDispatchQueueSize::insert(¶, (count, total_size)); - } - } - } -} - -/// A cursor that iterates over all entries in `NeedsDispatch`. -/// -/// This cursor will start with the para indicated by `NextDispatchRoundStartWith` storage entry. -/// This cursor is cyclic meaning that after reaching the end it will jump to the beginning. Unlike -/// an iterator, this cursor allows removing items during the iteration. -/// -/// Each iteration cycle *must be* concluded with a call to either `advance` or `remove`. -/// -/// This struct is not supposed to be dropped but rather to be consumed by [`flush`]. -#[derive(Debug)] -struct NeedsDispatchCursor { - needs_dispatch: Vec, - index: usize, -} - -impl NeedsDispatchCursor { - fn new() -> Self { - let needs_dispatch: Vec = as Store>::NeedsDispatch::get(); - let start_with = as Store>::NextDispatchRoundStartWith::get(); - - let initial_index = match start_with { - Some(para) => match needs_dispatch.binary_search(¶) { - Ok(found_index) => found_index, - Err(_supposed_index) => { - // well that's weird because we maintain an invariant that - // `NextDispatchRoundStartWith` must point into one of the items in - // `NeedsDispatch`. - // - // let's select 0 as the starting index as a safe bet. - debug_assert!(false); - 0 - } - }, - None => 0, - }; - - Self { - needs_dispatch, - index: initial_index, - } - } - - /// Returns the item the cursor points to. - fn peek(&self) -> Option { - self.needs_dispatch.get(self.index).cloned() - } - - /// Moves the cursor to the next item. - fn advance(&mut self) { - if self.needs_dispatch.is_empty() { - return; - } - self.index = (self.index + 1) % self.needs_dispatch.len(); - } - - /// Removes the item under the cursor. - fn remove(&mut self) { - if self.needs_dispatch.is_empty() { - return; - } - let _ = self.needs_dispatch.remove(self.index); - - // we might've removed the last element and that doesn't necessarily mean that `needs_dispatch` - // became empty. Reposition the cursor in this case to the beginning. - if self.needs_dispatch.get(self.index).is_none() { - self.index = 0; - } - } - - /// Flushes the dispatcher state into the persistent storage. - fn flush(self) { - let next_one = self.peek(); - as Store>::NextDispatchRoundStartWith::set(next_one); - as Store>::NeedsDispatch::put(self.needs_dispatch); - } -} - -#[cfg(test)] -pub(crate) mod mock_sink { - //! An implementation of a mock UMP sink that allows attaching a probe for mocking the weights - //! and checking the sent messages. - //! - //! A default behavior of the UMP sink is to ignore an incoming message and return 0 weight. - //! - //! A probe can be attached to the mock UMP sink. When attached, the mock sink would consult the - //! probe to check whether the received message was expected and what weight it should return. - //! - //! There are two rules on how to use a probe: - //! - //! 1. There can be only one active probe at a time. Creation of another probe while there is - //! already an active one leads to a panic. The probe is scoped to a thread where it was created. - //! - //! 2. All messages expected by the probe must be received by the time of dropping it. Unreceived - //! messages will lead to a panic while dropping a probe. - - use super::{UmpSink, UpwardMessage, ParaId, MessageId}; - use std::cell::RefCell; - use std::collections::vec_deque::VecDeque; - use frame_support::weights::Weight; - - #[derive(Debug)] - struct UmpExpectation { - expected_origin: ParaId, - expected_msg: UpwardMessage, - mock_weight: Weight, - } - - std::thread_local! { - // `Some` here indicates that there is an active probe. - static HOOK: RefCell>> = RefCell::new(None); - } - - pub struct MockUmpSink; - impl UmpSink for MockUmpSink { - fn process_upward_message(actual_origin: ParaId, actual_msg: &[u8], _max_weight: Weight) -> Result { - Ok(HOOK.with(|opt_hook| opt_hook.borrow_mut().as_mut().map(|hook| { - let UmpExpectation { - expected_origin, - expected_msg, - mock_weight, - } = match hook.pop_front() { - Some(expectation) => expectation, - None => { - panic!( - "The probe is active but didn't expect the message:\n\n\t{:?}.", - actual_msg, - ); - } - }; - assert_eq!(expected_origin, actual_origin); - assert_eq!(expected_msg, &actual_msg[..]); - mock_weight - })).unwrap_or(0)) - } - } - - pub struct Probe { - _private: (), - } - - impl Probe { - pub fn new() -> Self { - HOOK.with(|opt_hook| { - let prev = opt_hook.borrow_mut().replace(VecDeque::default()); - - // that can trigger if there were two probes were created during one session which - // is may be a bit strict, but may save time figuring out what's wrong. - // if you land here and you do need the two probes in one session consider - // dropping the the existing probe explicitly. - assert!(prev.is_none()); - }); - Self { _private: () } - } - - /// Add an expected message. - /// - /// The enqueued messages are processed in FIFO order. - pub fn assert_msg( - &mut self, - expected_origin: ParaId, - expected_msg: UpwardMessage, - mock_weight: Weight, - ) { - HOOK.with(|opt_hook| { - opt_hook - .borrow_mut() - .as_mut() - .unwrap() - .push_back(UmpExpectation { - expected_origin, - expected_msg, - mock_weight, - }) - }); - } - } - - impl Drop for Probe { - fn drop(&mut self) { - let _ = HOOK.try_with(|opt_hook| { - let prev = opt_hook.borrow_mut().take().expect( - "this probe was created and hasn't been yet destroyed; - the probe cannot be replaced; - there is only one probe at a time allowed; - thus it cannot be `None`; - qed", - ); - - if !prev.is_empty() { - // some messages are left unchecked. We should notify the developer about this. - // however, we do so only if the thread doesn't panic already. Otherwise, the - // developer would get a SIGILL or SIGABRT without a meaningful error message. - if !std::thread::panicking() { - panic!( - "the probe is dropped and not all expected messages arrived: {:?}", - prev - ); - } - } - }); - // an `Err` here signals here that the thread local was already destroyed. - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use super::mock_sink::Probe; - use crate::mock::{Configuration, Ump, new_test_ext, MockGenesisConfig}; - use frame_support::IterableStorageMap; - use std::collections::HashSet; - - struct GenesisConfigBuilder { - max_upward_message_size: u32, - max_upward_message_num_per_candidate: u32, - max_upward_queue_count: u32, - max_upward_queue_size: u32, - ump_service_total_weight: Weight, - } - - impl Default for GenesisConfigBuilder { - fn default() -> Self { - Self { - max_upward_message_size: 16, - max_upward_message_num_per_candidate: 2, - max_upward_queue_count: 4, - max_upward_queue_size: 64, - ump_service_total_weight: 1000, - } - } - } - - impl GenesisConfigBuilder { - fn build(self) -> crate::mock::MockGenesisConfig { - let mut genesis = default_genesis_config(); - let config = &mut genesis.configuration.config; - - config.max_upward_message_size = self.max_upward_message_size; - config.max_upward_message_num_per_candidate = self.max_upward_message_num_per_candidate; - config.max_upward_queue_count = self.max_upward_queue_count; - config.max_upward_queue_size = self.max_upward_queue_size; - config.ump_service_total_weight = - self.ump_service_total_weight; - genesis - } - } - - fn default_genesis_config() -> MockGenesisConfig { - MockGenesisConfig { - configuration: crate::configuration::GenesisConfig { - config: crate::configuration::HostConfiguration { - max_downward_message_size: 1024, - ..Default::default() - }, - }, - ..Default::default() - } - } - - fn queue_upward_msg(para: ParaId, msg: UpwardMessage) { - let msgs = vec![msg]; - assert!(Ump::check_upward_messages(&Configuration::config(), para, &msgs).is_ok()); - let _ = Ump::receive_upward_messages(para, msgs); - } - - fn assert_storage_consistency_exhaustive() { - // check that empty queues don't clutter the storage. - for (_para, queue) in ::RelayDispatchQueues::iter() { - assert!(!queue.is_empty()); - } - - // actually count the counts and sizes in queues and compare them to the bookkeeped version. - for (para, queue) in ::RelayDispatchQueues::iter() { - let (expected_count, expected_size) = ::RelayDispatchQueueSize::get(para); - let (actual_count, actual_size) = - queue.into_iter().fold((0, 0), |(acc_count, acc_size), x| { - (acc_count + 1, acc_size + x.len() as u32) - }); - - assert_eq!(expected_count, actual_count); - assert_eq!(expected_size, actual_size); - } - - // since we wipe the empty queues the sets of paras in queue contents, queue sizes and - // need dispatch set should all be equal. - let queue_contents_set = ::RelayDispatchQueues::iter() - .map(|(k, _)| k) - .collect::>(); - let queue_sizes_set = ::RelayDispatchQueueSize::iter() - .map(|(k, _)| k) - .collect::>(); - let needs_dispatch_set = ::NeedsDispatch::get() - .into_iter() - .collect::>(); - assert_eq!(queue_contents_set, queue_sizes_set); - assert_eq!(queue_contents_set, needs_dispatch_set); - - // `NextDispatchRoundStartWith` should point into a para that is tracked. - if let Some(para) = ::NextDispatchRoundStartWith::get() { - assert!(queue_contents_set.contains(¶)); - } - - // `NeedsDispatch` is always sorted. - assert!( - ::NeedsDispatch::get() - .windows(2) - .all(|xs| xs[0] <= xs[1]) - ); - } - - #[test] - fn dispatch_empty() { - new_test_ext(default_genesis_config()).execute_with(|| { - assert_storage_consistency_exhaustive(); - - // make sure that the case with empty queues is handled properly - Ump::process_pending_upward_messages(); - - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn dispatch_single_message() { - let a = ParaId::from(228); - let msg = vec![1, 2, 3]; - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - let mut probe = Probe::new(); - - probe.assert_msg(a, msg.clone(), 0); - queue_upward_msg(a, msg); - - Ump::process_pending_upward_messages(); - - assert_storage_consistency_exhaustive(); - }); - } - - #[test] - fn dispatch_resume_after_exceeding_dispatch_stage_weight() { - let a = ParaId::from(128); - let c = ParaId::from(228); - let q = ParaId::from(911); - - let a_msg_1 = vec![1, 2, 3]; - let a_msg_2 = vec![3, 2, 1]; - let c_msg_1 = vec![4, 5, 6]; - let c_msg_2 = vec![9, 8, 7]; - let q_msg = b"we are Q".to_vec(); - - new_test_ext( - GenesisConfigBuilder { - ump_service_total_weight: 500, - ..Default::default() - } - .build(), - ) - .execute_with(|| { - queue_upward_msg(q, q_msg.clone()); - queue_upward_msg(c, c_msg_1.clone()); - queue_upward_msg(a, a_msg_1.clone()); - queue_upward_msg(a, a_msg_2.clone()); - - assert_storage_consistency_exhaustive(); - - // we expect only two first messages to fit in the first iteration. - { - let mut probe = Probe::new(); - - probe.assert_msg(a, a_msg_1.clone(), 300); - probe.assert_msg(c, c_msg_1.clone(), 300); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); - - drop(probe); - } - - queue_upward_msg(c, c_msg_2.clone()); - assert_storage_consistency_exhaustive(); - - // second iteration should process the second message. - { - let mut probe = Probe::new(); - - probe.assert_msg(q, q_msg.clone(), 500); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); - - drop(probe); - } - - // 3rd iteration. - { - let mut probe = Probe::new(); - - probe.assert_msg(a, a_msg_2.clone(), 100); - probe.assert_msg(c, c_msg_2.clone(), 100); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); - - drop(probe); - } - - // finally, make sure that the queue is empty. - { - let probe = Probe::new(); - - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); - - drop(probe); - } - }); - } - - #[test] - fn dispatch_correctly_handle_remove_of_latest() { - let a = ParaId::from(1991); - let b = ParaId::from(1999); - - let a_msg_1 = vec![1, 2, 3]; - let a_msg_2 = vec![3, 2, 1]; - let b_msg_1 = vec![4, 5, 6]; - - new_test_ext( - GenesisConfigBuilder { - ump_service_total_weight: 900, - ..Default::default() - } - .build(), - ) - .execute_with(|| { - // We want to test here an edge case, where we remove the queue with the highest - // para id (i.e. last in the needs_dispatch order). - // - // If the last entry was removed we should proceed execution, assuming we still have - // weight available. - - queue_upward_msg(a, a_msg_1.clone()); - queue_upward_msg(a, a_msg_2.clone()); - queue_upward_msg(b, b_msg_1.clone()); - - { - let mut probe = Probe::new(); - - probe.assert_msg(a, a_msg_1.clone(), 300); - probe.assert_msg(b, b_msg_1.clone(), 300); - probe.assert_msg(a, a_msg_2.clone(), 300); - - Ump::process_pending_upward_messages(); - - drop(probe); - } - }); - } - - #[test] - fn verify_relay_dispatch_queue_size_is_externally_accessible() { - // Make sure that the relay dispatch queue size storage entry is accessible via well known - // keys and is decodable into a (u32, u32). - - use primitives::v1::well_known_keys; - use parity_scale_codec::Decode as _; - - let a = ParaId::from(228); - let msg = vec![1, 2, 3]; - - new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - queue_upward_msg(a, msg); - - let raw_queue_size = sp_io::storage::get(&well_known_keys::relay_dispatch_queue_size(a)) - .expect("enqueing a message should create the dispatch queue\ - and it should be accessible via the well known keys"); - let (cnt, size) = <(u32, u32)>::decode(&mut &raw_queue_size[..]) - .expect("the dispatch queue size should be decodable into (u32, u32)"); - - assert_eq!(cnt, 1); - assert_eq!(size, 3); - }); - } -} diff --git a/runtime/parachains/src/util.rs b/runtime/parachains/src/util.rs deleted file mode 100644 index 6cada4dd65ab..000000000000 --- a/runtime/parachains/src/util.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Utilities that don't belong to any particular module but may draw -//! on all modules. - -use primitives::v1::{Id as ParaId, PersistedValidationData, ValidatorIndex}; -use sp_std::vec::Vec; - -use crate::{configuration, paras, hrmp}; - -/// Make the persisted validation data for a particular parachain, a specified relay-parent and it's -/// storage root. -/// -/// This ties together the storage of several modules. -pub fn make_persisted_validation_data( - para_id: ParaId, - relay_parent_number: T::BlockNumber, - relay_parent_storage_root: T::Hash, -) -> Option> { - let config = >::config(); - - Some(PersistedValidationData { - parent_head: >::para_head(¶_id)?, - relay_parent_number, - relay_parent_storage_root, - max_pov_size: config.max_pov_size, - }) -} - -/// Take the active subset of a set containing all validators. -pub fn take_active_subset(active_validators: &[ValidatorIndex], set: &[T]) -> Vec { - let subset: Vec<_> = active_validators.iter() - .filter_map(|i| set.get(i.0 as usize)) - .cloned() - .collect(); - - if subset.len() != active_validators.len() { - log::warn!( - target: "runtime::parachains", - "Took active validators from set with wrong size", - ); - } - - subset -} diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml deleted file mode 100644 index 4c48db785829..000000000000 --- a/runtime/polkadot/Cargo.toml +++ /dev/null @@ -1,239 +0,0 @@ -[package] -name = "polkadot-runtime" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.14", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -static_assertions = "1.1.0" -smallvec = "1.6.1" - -authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-democracy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-elections-phragmen = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-identity = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-im-online = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-membership = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-multisig = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-nicks = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-proxy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-scheduler = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-tips = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-offences-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-session-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -hex-literal = { version = "0.3.1", optional = true } - -runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } - -max-encoded-len = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[dev-dependencies] -hex-literal = "0.3.1" -libsecp256k1 = "0.3.5" -tiny-keccak = "2.0.2" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -trie-db = "0.22.3" -serde_json = "1.0.61" -separator = "0.4.1" - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = ["std"] -no_std = [] -only-staking = [] -std = [ - "authority-discovery-primitives/std", - "bitvec/std", - "primitives/std", - "rustc-hex/std", - "parity-scale-codec/std", - "inherents/std", - "sp-core/std", - "sp-api/std", - "tx-pool-api/std", - "block-builder-api/std", - "offchain-primitives/std", - "sp-std/std", - "frame-support/std", - "frame-executive/std", - "pallet-authority-discovery/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-bounties/std", - "pallet-transaction-payment/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-collective/std", - "pallet-elections-phragmen/std", - "pallet-election-provider-multi-phase/std", - "pallet-democracy/std", - "pallet-grandpa/std", - "pallet-identity/std", - "pallet-im-online/std", - "pallet-indices/std", - "pallet-membership/std", - "pallet-multisig/std", - "pallet-nicks/std", - "pallet-offences/std", - "pallet-proxy/std", - "pallet-scheduler/std", - "pallet-session/std", - "pallet-staking/std", - "pallet-timestamp/std", - "pallet-treasury/std", - "pallet-tips/std", - "pallet-babe/std", - "pallet-vesting/std", - "pallet-utility/std", - "sp-runtime/std", - "sp-staking/std", - "frame-system/std", - "frame-system-rpc-runtime-api/std", - "sp-version/std", - "serde_derive", - "serde/std", - "log/std", - "babe-primitives/std", - "sp-session/std", - "runtime-common/std", - "frame-try-runtime/std", - "sp-npos-elections/std", - "beefy-primitives/std", - "pallet-mmr-primitives/std", - "max-encoded-len/std", - "frame-election-provider-support/std", -] -runtime-benchmarks = [ - "runtime-common/runtime-benchmarks", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", - "pallet-babe/runtime-benchmarks", - "pallet-balances/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", - "pallet-democracy/runtime-benchmarks", - "pallet-elections-phragmen/runtime-benchmarks", - "pallet-election-provider-multi-phase/runtime-benchmarks", - "pallet-grandpa/runtime-benchmarks", - "pallet-identity/runtime-benchmarks", - "pallet-im-online/runtime-benchmarks", - "pallet-indices/runtime-benchmarks", - "pallet-membership/runtime-benchmarks", - "pallet-multisig/runtime-benchmarks", - "pallet-proxy/runtime-benchmarks", - "pallet-scheduler/runtime-benchmarks", - "pallet-staking/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks", - "pallet-treasury/runtime-benchmarks", - "pallet-bounties/runtime-benchmarks", - "pallet-tips/runtime-benchmarks", - "pallet-utility/runtime-benchmarks", - "pallet-vesting/runtime-benchmarks", - "pallet-offences-benchmarking", - "pallet-session-benchmarking", - "frame-system-benchmarking", - "hex-literal", - "frame-election-provider-support/runtime-benchmarks", -] -try-runtime = [ - "frame-executive/try-runtime", - "frame-try-runtime", - "frame-system/try-runtime", - "pallet-authority-discovery/try-runtime", - "pallet-authorship/try-runtime", - "pallet-balances/try-runtime", - "pallet-bounties/try-runtime", - "pallet-transaction-payment/try-runtime", - "pallet-collective/try-runtime", - "pallet-elections-phragmen/try-runtime", - "pallet-election-provider-multi-phase/try-runtime", - "pallet-democracy/try-runtime", - "pallet-grandpa/try-runtime", - "pallet-identity/try-runtime", - "pallet-im-online/try-runtime", - "pallet-indices/try-runtime", - "pallet-membership/try-runtime", - "pallet-multisig/try-runtime", - "pallet-nicks/try-runtime", - "pallet-offences/try-runtime", - "pallet-proxy/try-runtime", - "pallet-scheduler/try-runtime", - "pallet-session/try-runtime", - "pallet-staking/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-treasury/try-runtime", - "pallet-tips/try-runtime", - "pallet-babe/try-runtime", - "pallet-vesting/try-runtime", - "pallet-utility/try-runtime", - "runtime-common/try-runtime", -] -# When enabled, the runtime api will not be build. -# -# This is required by Cumulus to access certain types of the -# runtime without clashing with the runtime api exported functions -# in WASM. -disable-runtime-api = [] - -# A feature that should be enabled when the runtime should be build for on-chain -# deployment. This will disable stuff that shouldn't be part of the on-chain wasm -# to make it smaller like logging for example. -on-chain-release-build = [ - "sp-api/disable-logging", -] diff --git a/runtime/polkadot/README.adoc b/runtime/polkadot/README.adoc deleted file mode 100644 index 33373310819f..000000000000 --- a/runtime/polkadot/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Runtime - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/runtime/polkadot/build.rs b/runtime/polkadot/build.rs deleted file mode 100644 index e4a139a06ae1..000000000000 --- a/runtime/polkadot/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .import_memory() - .export_heap_base() - .build() -} diff --git a/runtime/polkadot/src/constants.rs b/runtime/polkadot/src/constants.rs deleted file mode 100644 index ecfa74d78664..000000000000 --- a/runtime/polkadot/src/constants.rs +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// Money matters. -pub mod currency { - use primitives::v0::Balance; - - pub const UNITS: Balance = 10_000_000_000; - pub const DOLLARS: Balance = UNITS; // 10_000_000_000 - pub const CENTS: Balance = DOLLARS / 100; // 100_000_000 - pub const MILLICENTS: Balance = CENTS / 1_000; // 100_000 - - pub const fn deposit(items: u32, bytes: u32) -> Balance { - items as Balance * 20 * DOLLARS + (bytes as Balance) * 100 * MILLICENTS - } -} - -/// Time and blocks. -pub mod time { - use primitives::v0::{Moment, BlockNumber}; - pub const MILLISECS_PER_BLOCK: Moment = 6000; - pub const SLOT_DURATION: Moment = MILLISECS_PER_BLOCK; - pub const EPOCH_DURATION_IN_SLOTS: BlockNumber = 4 * HOURS; - - // These time units are defined in number of blocks. - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; - - // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. - pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); -} - -/// Fee-related. -pub mod fee { - pub use sp_runtime::Perbill; - use primitives::v0::Balance; - use runtime_common::ExtrinsicBaseWeight; - use frame_support::weights::{ - WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, - }; - use smallvec::smallvec; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); - - /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the - /// node's balance type. - /// - /// This should typically create a mapping between the following ranges: - /// - [0, MAXIMUM_BLOCK_WEIGHT] - /// - [Balance::min, Balance::max] - /// - /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: - /// - Setting it to `0` will essentially disable the weight fee. - /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. - pub struct WeightToFee; - impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - // in Polkadot, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: - let p = super::currency::CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } - } -} - -#[cfg(test)] -mod tests { - use frame_support::weights::WeightToFeePolynomial; - use runtime_common::{MAXIMUM_BLOCK_WEIGHT, ExtrinsicBaseWeight}; - use super::fee::WeightToFee; - use super::currency::{CENTS, DOLLARS, MILLICENTS}; - - #[test] - // This function tests that the fee for `MAXIMUM_BLOCK_WEIGHT` of weight is correct - fn full_block_fee_is_correct() { - // A full block should cost 16 DOLLARS - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&MAXIMUM_BLOCK_WEIGHT); - let y = 16 * DOLLARS; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } - - #[test] - // This function tests that the fee for `ExtrinsicBaseWeight` of weight is correct - fn extrinsic_base_fee_is_correct() { - // `ExtrinsicBaseWeight` should cost 1/10 of a CENT - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&ExtrinsicBaseWeight::get()); - let y = CENTS / 10; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } -} diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs deleted file mode 100644 index ebbc80a6425b..000000000000 --- a/runtime/polkadot/src/lib.rs +++ /dev/null @@ -1,1567 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Polkadot runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] - -use pallet_transaction_payment::CurrencyAdapter; -use runtime_common::{ - claims, SlowAdjustingFeeUpdate, CurrencyToVote, - impls::DealWithFees, - BlockHashCount, RocksDbWeight, BlockWeights, BlockLength, - OffchainSolutionWeightLimit, OffchainSolutionLengthLimit, - ParachainSessionKeyPlaceholder, AssignmentSessionKeyPlaceholder, -}; - -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use sp_core::u32_trait::{_1, _2, _3, _4, _5}; -use parity_scale_codec::{Encode, Decode}; -use primitives::v1::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CommittedCandidateReceipt, - CoreState, GroupRotationInfo, Hash, Id, Moment, Nonce, OccupiedCoreAssumption, - PersistedValidationData, Signature, ValidationCode, ValidationCodeHash, ValidatorId, - ValidatorIndex, InboundDownwardMessage, InboundHrmpMessage, SessionInfo, -}; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, - KeyTypeId, Percent, Permill, Perbill, curve::PiecewiseLinear, - transaction_validity::{TransactionValidity, TransactionSource, TransactionPriority}, - traits::{ - BlakeTwo256, Block as BlockT, OpaqueKeys, ConvertInto, AccountIdLookup, - Extrinsic as ExtrinsicT, SaturatedConversion, Verify, - }, -}; -#[cfg(feature = "runtime-benchmarks")] -use sp_runtime::RuntimeString; -use sp_version::RuntimeVersion; -use pallet_grandpa::{AuthorityId as GrandpaId, fg_primitives}; -#[cfg(any(feature = "std", test))] -use sp_version::NativeVersion; -use sp_core::OpaqueMetadata; -use sp_staking::SessionIndex; -use frame_support::{ - parameter_types, construct_runtime, RuntimeDebug, PalletId, - traits::{KeyOwnerProofSystem, LockIdentifier, Filter, MaxEncodedLen}, - weights::Weight, -}; -use frame_system::{EnsureRoot, EnsureOneOf}; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use pallet_session::historical as session_historical; -use static_assertions::const_assert; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use pallet_mmr_primitives as mmr; - -#[cfg(feature = "std")] -pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use pallet_timestamp::Call as TimestampCall; -pub use pallet_balances::Call as BalancesCall; - -/// Constant values used within the runtime. -pub mod constants; -use constants::{time::*, currency::*, fee::*}; -use frame_support::traits::InstanceFilter; - -// Weights used in the runtime. -mod weights; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -// Polkadot version identifier; -/// Runtime version (Polkadot). -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("polkadot"), - impl_name: create_runtime_str!("parity-polkadot"), - authoring_version: 0, - spec_version: 9070, - impl_version: 0, - #[cfg(not(feature = "disable-runtime-api"))] - apis: RUNTIME_API_VERSIONS, - #[cfg(feature = "disable-runtime-api")] - apis: version::create_apis_vec![[]], - transaction_version: 7, -}; - -/// The BABE epoch configuration at genesis. -pub const BABE_GENESIS_EPOCH_CONFIG: babe_primitives::BabeEpochConfiguration = - babe_primitives::BabeEpochConfiguration { - c: PRIMARY_PROBABILITY, - allowed_slots: babe_primitives::AllowedSlots::PrimaryAndSecondaryVRFSlots - }; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -pub struct BaseFilter; -impl Filter for BaseFilter { - fn filter(call: &Call) -> bool { - match call { - // These modules are all allowed to be called by transactions: - Call::Democracy(_) | Call::Council(_) | Call::TechnicalCommittee(_) | - Call::TechnicalMembership(_) | Call::Treasury(_) | Call::PhragmenElection(_) | - Call::System(_) | Call::Scheduler(_) | Call::Indices(_) | - Call::Babe(_) | Call::Timestamp(_) | Call::Balances(_) | - Call::Authorship(_) | Call::Staking(_) | - Call::Session(_) | Call::Grandpa(_) | Call::ImOnline(_) | - Call::Utility(_) | Call::Claims(_) | Call::Vesting(_) | - Call::Identity(_) | Call::Proxy(_) | Call::Multisig(_) | - Call::Bounties(_) | Call::Tips(_) | Call::ElectionProviderMultiPhase(_) - => true, - } - } -} - -type MoreThanHalfCouncil = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective> ->; - -parameter_types! { - pub const Version: RuntimeVersion = VERSION; - pub const SS58Prefix: u8 = 0; -} - -impl frame_system::Config for Runtime { - type BaseCallFilter = BaseFilter; - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type Origin = Origin; - type Call = Call; - type Index = Nonce; - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = AccountIdLookup; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type DbWeight = RocksDbWeight; - type Version = Version; - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = weights::frame_system::WeightInfo; - type SS58Prefix = SS58Prefix; - type OnSetCode = (); -} - -parameter_types! { - pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * - BlockWeights::get().max_block; - pub const MaxScheduledPerBlock: u32 = 50; -} - -type ScheduleOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective> ->; - -impl pallet_scheduler::Config for Runtime { - type Event = Event; - type Origin = Origin; - type PalletsOrigin = OriginCaller; - type Call = Call; - type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = ScheduleOrigin; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = weights::pallet_scheduler::WeightInfo; -} - -parameter_types! { - pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS as u64; - pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; - pub const ReportLongevity: u64 = - BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); -} - -impl pallet_babe::Config for Runtime { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - - // session module is the trigger - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - - type KeyOwnerProofSystem = Historical; - - type KeyOwnerProof = >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = - pallet_babe::EquivocationHandler; - - type WeightInfo = (); -} - -parameter_types! { - pub const IndexDeposit: Balance = 10 * DOLLARS; -} - -impl pallet_indices::Config for Runtime { - type AccountIndex = AccountIndex; - type Currency = Balances; - type Deposit = IndexDeposit; - type Event = Event; - type WeightInfo = weights::pallet_indices::WeightInfo; -} - -parameter_types! { - pub const ExistentialDeposit: Balance = 100 * CENTS; - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - type WeightInfo = weights::pallet_balances::WeightInfo; -} - -parameter_types! { - pub const TransactionByteFee: Balance = 10 * MILLICENTS; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = CurrencyAdapter>; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = WeightToFee; - type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; -} - -parameter_types! { - pub const MinimumPeriod: u64 = SLOT_DURATION / 2; -} -impl pallet_timestamp::Config for Runtime { - type Moment = u64; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; - type WeightInfo = weights::pallet_timestamp::WeightInfo; -} - -parameter_types! { - pub const UncleGenerations: u32 = 0; -} - -// TODO: substrate#2986 implement this properly -impl pallet_authorship::Config for Runtime { - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = (Staking, ImOnline); -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub im_online: ImOnline, - pub para_validator: ParachainSessionKeyPlaceholder, - pub para_assignment: AssignmentSessionKeyPlaceholder, - pub authority_discovery: AuthorityDiscovery, - } -} - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = AccountId; - type ValidatorIdOf = pallet_staking::StashOf; - type ShouldEndSession = Babe; - type NextSessionRotation = Babe; - type SessionManager = pallet_session::historical::NoteHistoricalRoot; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type WeightInfo = weights::pallet_session::WeightInfo; -} - -impl pallet_session::historical::Config for Runtime { - type FullIdentification = pallet_staking::Exposure; - type FullIdentificationOf = pallet_staking::ExposureOf; -} - -parameter_types! { - // no signed phase for now, just unsigned. - pub const SignedPhase: u32 = 0; - pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_SLOTS / 4; - - // fallback: run election on-chain. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; - pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); - - // miner configs - pub const MinerMaxIterations: u32 = 10; - pub OffchainRepeat: BlockNumber = 5; -} - -sp_npos_elections::generate_solution_type!( - #[compact] - pub struct NposCompactSolution16::< - VoterIndex = u32, - TargetIndex = u16, - Accuracy = sp_runtime::PerU16, - >(16) -); - -impl pallet_election_provider_multi_phase::Config for Runtime { - type Event = Event; - type Currency = Balances; - type SignedPhase = SignedPhase; - type UnsignedPhase = UnsignedPhase; - type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; - type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. - type MinerMaxLength = OffchainSolutionLengthLimit; - type OffchainRepeat = OffchainRepeat; - type MinerTxPriority = NposSolutionPriority; - type DataProvider = Staking; - type OnChainAccuracy = Perbill; - type CompactSolution = NposCompactSolution16; - type Fallback = Fallback; - type BenchmarkingConfig = (); - type ForceOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, - >; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; -} - -// TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and -// re-built in case input parameters have changed. The `ideal_stake` should be determined by the -// amount of parachain slots being bid on: this should be around `(75 - 25.min(slots / 4))%`. -pallet_staking_reward_curve::build! { - const REWARD_CURVE: PiecewiseLinear<'static> = curve!( - min_inflation: 0_025_000, - max_inflation: 0_100_000, - // 3:2:1 staked : parachains : float. - // while there's no parachains, then this is 75% staked : 25% float. - ideal_stake: 0_750_000, - falloff: 0_050_000, - max_piece_count: 40, - test_precision: 0_005_000, - ); -} - -parameter_types! { - // Six sessions in an era (24 hours). - pub const SessionsPerEra: SessionIndex = 6; - // 28 eras for unbonding (28 days). - pub const BondingDuration: pallet_staking::EraIndex = 28; - pub const SlashDeferDuration: pallet_staking::EraIndex = 27; - pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; - pub const MaxNominatorRewardedPerValidator: u32 = 256; -} - -type SlashCancelOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective> ->; - -impl pallet_staking::Config for Runtime { - const MAX_NOMINATIONS: u32 = ::LIMIT as u32; - type Currency = Balances; - type UnixTime = Timestamp; - type CurrencyToVote = CurrencyToVote; - type RewardRemainder = Treasury; - type Event = Event; - type Slash = Treasury; - type Reward = (); - type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; - type SlashDeferDuration = SlashDeferDuration; - // A super-majority of the council can cancel the slash. - type SlashCancelOrigin = SlashCancelOrigin; - type SessionInterface = Self; - type EraPayout = pallet_staking::ConvertCurve; - type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; - type NextNewSession = Session; - type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig - >; - type WeightInfo = weights::pallet_staking::WeightInfo; -} - -parameter_types! { - // Minimum 4 CENTS/byte - pub const BasicDeposit: Balance = deposit(1, 258); - pub const FieldDeposit: Balance = deposit(0, 66); - pub const SubAccountDeposit: Balance = deposit(1, 53); - pub const MaxSubAccounts: u32 = 100; - pub const MaxAdditionalFields: u32 = 100; - pub const MaxRegistrars: u32 = 20; -} - -impl pallet_identity::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BasicDeposit = BasicDeposit; - type FieldDeposit = FieldDeposit; - type SubAccountDeposit = SubAccountDeposit; - type MaxSubAccounts = MaxSubAccounts; - type MaxAdditionalFields = MaxAdditionalFields; - type MaxRegistrars = MaxRegistrars; - type Slashed = Treasury; - type ForceOrigin = MoreThanHalfCouncil; - type RegistrarOrigin = MoreThanHalfCouncil; - type WeightInfo = weights::pallet_identity::WeightInfo; -} - -parameter_types! { - pub const LaunchPeriod: BlockNumber = 28 * DAYS; - pub const VotingPeriod: BlockNumber = 28 * DAYS; - pub const FastTrackVotingPeriod: BlockNumber = 3 * HOURS; - pub const MinimumDeposit: Balance = 100 * DOLLARS; - pub const EnactmentPeriod: BlockNumber = 28 * DAYS; - pub const CooloffPeriod: BlockNumber = 7 * DAYS; - // One cent: $10,000 / MB - pub const PreimageByteDeposit: Balance = 1 * CENTS; - pub const InstantAllowed: bool = true; - pub const MaxVotes: u32 = 100; - pub const MaxProposals: u32 = 100; -} - -impl pallet_democracy::Config for Runtime { - type Proposal = Call; - type Event = Event; - type Currency = Balances; - type EnactmentPeriod = EnactmentPeriod; - type LaunchPeriod = LaunchPeriod; - type VotingPeriod = VotingPeriod; - type MinimumDeposit = MinimumDeposit; - /// A straight majority of the council can decide what their next motion is. - type ExternalOrigin = frame_system::EnsureOneOf, - frame_system::EnsureRoot, - >; - /// A 60% super-majority can have the next scheduled referendum be a straight majority-carries vote. - type ExternalMajorityOrigin = frame_system::EnsureOneOf, - frame_system::EnsureRoot, - >; - /// A unanimous council can have the next scheduled referendum be a straight default-carries - /// (NTB) vote. - type ExternalDefaultOrigin = frame_system::EnsureOneOf, - frame_system::EnsureRoot, - >; - /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote - /// be tabled immediately and with a shorter voting/enactment period. - type FastTrackOrigin = frame_system::EnsureOneOf, - frame_system::EnsureRoot, - >; - type InstantOrigin = frame_system::EnsureOneOf, - frame_system::EnsureRoot, - >; - type InstantAllowed = InstantAllowed; - type FastTrackVotingPeriod = FastTrackVotingPeriod; - // To cancel a proposal which has been passed, 2/3 of the council must agree to it. - type CancellationOrigin = EnsureOneOf, - EnsureRoot, - >; - // To cancel a proposal before it has been passed, the technical committee must be unanimous or - // Root must agree. - type CancelProposalOrigin = EnsureOneOf, - EnsureRoot, - >; - type BlacklistOrigin = EnsureRoot; - // Any single technical committee member may veto a coming council proposal, however they can - // only do it once and it lasts only for the cooloff period. - type VetoOrigin = pallet_collective::EnsureMember; - type CooloffPeriod = CooloffPeriod; - type PreimageByteDeposit = PreimageByteDeposit; - type OperationalPreimageOrigin = pallet_collective::EnsureMember; - type Slash = Treasury; - type Scheduler = Scheduler; - type PalletsOrigin = OriginCaller; - type MaxVotes = MaxVotes; - type WeightInfo = weights::pallet_democracy::WeightInfo; - type MaxProposals = MaxProposals; -} - -parameter_types! { - pub const CouncilMotionDuration: BlockNumber = 7 * DAYS; - pub const CouncilMaxProposals: u32 = 100; - pub const CouncilMaxMembers: u32 = 100; -} - -type CouncilCollective = pallet_collective::Instance1; -impl pallet_collective::Config for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = CouncilMotionDuration; - type MaxProposals = CouncilMaxProposals; - type MaxMembers = CouncilMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = weights::pallet_collective::WeightInfo; -} - -parameter_types! { - pub const CandidacyBond: Balance = 100 * DOLLARS; - // 1 storage item created, key size is 32 bytes, value size is 16+16. - pub const VotingBondBase: Balance = deposit(1, 64); - // additional data per vote is 32 bytes (account id). - pub const VotingBondFactor: Balance = deposit(0, 32); - /// Weekly council elections; scaling up to monthly eventually. - pub const TermDuration: BlockNumber = 7 * DAYS; - /// 13 members initially, to be increased to 23 eventually. - pub const DesiredMembers: u32 = 13; - pub const DesiredRunnersUp: u32 = 20; - pub const PhragmenElectionPalletId: LockIdentifier = *b"phrelect"; -} -// Make sure that there are no more than `MaxMembers` members elected via phragmen. -const_assert!(DesiredMembers::get() <= CouncilMaxMembers::get()); - -impl pallet_elections_phragmen::Config for Runtime { - type Event = Event; - type PalletId = PhragmenElectionPalletId; - type Currency = Balances; - type ChangeMembers = Council; - type InitializeMembers = Council; - type CurrencyToVote = frame_support::traits::U128CurrencyToVote; - type CandidacyBond = CandidacyBond; - type VotingBondBase = VotingBondBase; - type VotingBondFactor = VotingBondFactor; - type LoserCandidate = Treasury; - type KickedMember = Treasury; - type DesiredMembers = DesiredMembers; - type DesiredRunnersUp = DesiredRunnersUp; - type TermDuration = TermDuration; - type WeightInfo = weights::pallet_elections_phragmen::WeightInfo; -} - -parameter_types! { - pub const TechnicalMotionDuration: BlockNumber = 7 * DAYS; - pub const TechnicalMaxProposals: u32 = 100; - pub const TechnicalMaxMembers: u32 = 100; -} - -type TechnicalCollective = pallet_collective::Instance2; -impl pallet_collective::Config for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = TechnicalMotionDuration; - type MaxProposals = TechnicalMaxProposals; - type MaxMembers = TechnicalMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type WeightInfo = weights::pallet_collective::WeightInfo; -} - -impl pallet_membership::Config for Runtime { - type Event = Event; - type AddOrigin = MoreThanHalfCouncil; - type RemoveOrigin = MoreThanHalfCouncil; - type SwapOrigin = MoreThanHalfCouncil; - type ResetOrigin = MoreThanHalfCouncil; - type PrimeOrigin = MoreThanHalfCouncil; - type MembershipInitialized = TechnicalCommittee; - type MembershipChanged = TechnicalCommittee; - type MaxMembers = TechnicalMaxMembers; - type WeightInfo = weights::pallet_membership::WeightInfo; -} - -parameter_types! { - pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = 100 * DOLLARS; - pub const SpendPeriod: BlockNumber = 24 * DAYS; - pub const Burn: Permill = Permill::from_percent(1); - pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry"); - - pub const TipCountdown: BlockNumber = 1 * DAYS; - pub const TipFindersFee: Percent = Percent::from_percent(20); - pub const TipReportDepositBase: Balance = 1 * DOLLARS; - pub const DataDepositPerByte: Balance = 1 * CENTS; - pub const BountyDepositBase: Balance = 1 * DOLLARS; - pub const BountyDepositPayoutDelay: BlockNumber = 8 * DAYS; - pub const BountyUpdatePeriod: BlockNumber = 90 * DAYS; - pub const MaximumReasonLength: u32 = 16384; - pub const BountyCuratorDeposit: Permill = Permill::from_percent(50); - pub const BountyValueMinimum: Balance = 10 * DOLLARS; - pub const MaxApprovals: u32 = 100; -} - -type ApproveOrigin = EnsureOneOf< - AccountId, - EnsureRoot, - pallet_collective::EnsureProportionAtLeast<_3, _5, AccountId, CouncilCollective> ->; - -impl pallet_treasury::Config for Runtime { - type PalletId = TreasuryPalletId; - type Currency = Balances; - type ApproveOrigin = ApproveOrigin; - type RejectOrigin = MoreThanHalfCouncil; - type Event = Event; - type OnSlash = Treasury; - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ProposalBondMinimum; - type SpendPeriod = SpendPeriod; - type Burn = Burn; - type BurnDestination = (); - type SpendFunds = Bounties; - type MaxApprovals = MaxApprovals; - type WeightInfo = weights::pallet_treasury::WeightInfo; -} - -impl pallet_bounties::Config for Runtime { - type Event = Event; - type BountyDepositBase = BountyDepositBase; - type BountyDepositPayoutDelay = BountyDepositPayoutDelay; - type BountyUpdatePeriod = BountyUpdatePeriod; - type BountyCuratorDeposit = BountyCuratorDeposit; - type BountyValueMinimum = BountyValueMinimum; - type DataDepositPerByte = DataDepositPerByte; - type MaximumReasonLength = MaximumReasonLength; - type WeightInfo = weights::pallet_bounties::WeightInfo; -} - -impl pallet_tips::Config for Runtime { - type Event = Event; - type DataDepositPerByte = DataDepositPerByte; - type MaximumReasonLength = MaximumReasonLength; - type Tippers = PhragmenElection; - type TipCountdown = TipCountdown; - type TipFindersFee = TipFindersFee; - type TipReportDepositBase = TipReportDepositBase; - type WeightInfo = weights::pallet_tips::WeightInfo; -} - -impl pallet_offences::Config for Runtime { - type Event = Event; - type IdentificationTuple = pallet_session::historical::IdentificationTuple; - type OnOffenceHandler = Staking; -} - -impl pallet_authority_discovery::Config for Runtime {} - -parameter_types! { - pub NposSolutionPriority: TransactionPriority = - Perbill::from_percent(90) * TransactionPriority::max_value(); - pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); -} - -impl pallet_im_online::Config for Runtime { - type AuthorityId = ImOnlineId; - type Event = Event; - type ValidatorSet = Historical; - type NextSessionRotation = Babe; - type ReportUnresponsiveness = Offences; - type UnsignedPriority = ImOnlineUnsignedPriority; - type WeightInfo = weights::pallet_im_online::WeightInfo; -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - - type KeyOwnerProof = - >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type KeyOwnerProofSystem = Historical; - - type HandleEquivocation = - pallet_grandpa::EquivocationHandler; - - type WeightInfo = (); -} - -/// Submits a transaction with the node's public and signature type. Adheres to the signed extension -/// format of the chain. -impl frame_system::offchain::CreateSignedTransaction for Runtime where - Call: From, -{ - fn create_transaction>( - call: Call, - public: ::Signer, - account: AccountId, - nonce: ::Index, - ) -> Option<(Call, ::SignaturePayload)> { - use sp_runtime::traits::StaticLookup; - // take the biggest period possible. - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - - let current_block = System::block_number() - .saturated_into::() - // The `System::block_number` is initialized with `n+1`, - // so the actual block number is `n`. - .saturating_sub(1); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckMortality::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - claims::PrevalidateAttests::::new(), - ); - let raw_payload = SignedPayload::new(call, extra).map_err(|e| { - log::warn!("Unable to create signed payload: {:?}", e); - }).ok()?; - let signature = raw_payload.using_encoded(|payload| { - C::sign(payload, public) - })?; - let (call, extra, _) = raw_payload.deconstruct(); - let address = ::Lookup::unlookup(account); - Some((call, (address, signature, extra))) - } -} - -impl frame_system::offchain::SigningTypes for Runtime { - type Public = ::Signer; - type Signature = Signature; -} - -impl frame_system::offchain::SendTransactionTypes for Runtime where Call: From { - type Extrinsic = UncheckedExtrinsic; - type OverarchingCall = Call; -} - -parameter_types! { - pub const ParathreadDeposit: Balance = 500 * DOLLARS; - pub const QueueSize: usize = 2; - pub const MaxRetries: u32 = 3; -} - -parameter_types! { - pub Prefix: &'static [u8] = b"Pay DOTs to the Polkadot account:"; -} - -impl claims::Config for Runtime { - type Event = Event; - type VestingSchedule = Vesting; - type Prefix = Prefix; - /// At least 3/4 of the council must agree to a claim move before it can happen. - type MoveClaimOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; - type WeightInfo = weights::runtime_common_claims::WeightInfo; -} - -parameter_types! { - pub const MinVestedTransfer: Balance = 1 * DOLLARS; -} - -impl pallet_vesting::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = ConvertInto; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = weights::pallet_vesting::WeightInfo; -} - -impl pallet_utility::Config for Runtime { - type Event = Event; - type Call = Call; - type WeightInfo = weights::pallet_utility::WeightInfo; -} - -parameter_types! { - // One storage item; key size is 32; value is size 4+4+16+32 bytes = 56 bytes. - pub const DepositBase: Balance = deposit(1, 88); - // Additional storage item size of 32 bytes. - pub const DepositFactor: Balance = deposit(0, 32); - pub const MaxSignatories: u16 = 100; -} - -impl pallet_multisig::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type DepositBase = DepositBase; - type DepositFactor = DepositFactor; - type MaxSignatories = MaxSignatories; - type WeightInfo = weights::pallet_multisig::WeightInfo; -} - -parameter_types! { - // One storage item; key size 32, value size 8; . - pub const ProxyDepositBase: Balance = deposit(1, 8); - // Additional storage item size of 33 bytes. - pub const ProxyDepositFactor: Balance = deposit(0, 33); - pub const MaxProxies: u16 = 32; - pub const AnnouncementDepositBase: Balance = deposit(1, 8); - pub const AnnouncementDepositFactor: Balance = deposit(0, 66); - pub const MaxPending: u16 = 32; -} - -/// The type used to represent the kinds of proxying allowed. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen)] -pub enum ProxyType { - Any = 0, - NonTransfer = 1, - Governance = 2, - Staking = 3, - // Skip 4 as it is now removed (was SudoBalances) - IdentityJudgement = 5, - CancelProxy = 6, -} - -#[cfg(test)] -mod proxy_type_tests { - use super::*; - - #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug)] - pub enum OldProxyType { - Any, - NonTransfer, - Governance, - Staking, - SudoBalances, - IdentityJudgement, - } - - #[test] - fn proxy_type_decodes_correctly() { - for (i, j) in vec![ - (OldProxyType::Any, ProxyType::Any), - (OldProxyType::NonTransfer, ProxyType::NonTransfer), - (OldProxyType::Governance, ProxyType::Governance), - (OldProxyType::Staking, ProxyType::Staking), - (OldProxyType::IdentityJudgement, ProxyType::IdentityJudgement), - ].into_iter() { - assert_eq!(i.encode(), j.encode()); - } - assert!(ProxyType::decode(&mut &OldProxyType::SudoBalances.encode()[..]).is_err()); - } -} - -impl Default for ProxyType { fn default() -> Self { Self::Any } } -impl InstanceFilter for ProxyType { - fn filter(&self, c: &Call) -> bool { - match self { - ProxyType::Any => true, - ProxyType::NonTransfer => matches!(c, - Call::System(..) | - Call::Scheduler(..) | - Call::Babe(..) | - Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | - // Specifically omitting Indices `transfer`, `force_transfer` - // Specifically omitting the entire Balances pallet - Call::Authorship(..) | - Call::Staking(..) | - Call::Session(..) | - Call::Grandpa(..) | - Call::ImOnline(..) | - Call::Democracy(..) | - Call::Council(..) | - Call::TechnicalCommittee(..) | - Call::PhragmenElection(..) | - Call::TechnicalMembership(..) | - Call::Treasury(..) | - Call::Bounties(..) | - Call::Tips(..) | - Call::Claims(..) | - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | - // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` - Call::Utility(..) | - Call::Identity(..) | - Call::Proxy(..) | - Call::Multisig(..) - ), - ProxyType::Governance => matches!(c, - Call::Democracy(..) | - Call::Council(..) | - Call::TechnicalCommittee(..) | - Call::PhragmenElection(..) | - Call::Treasury(..) | - Call::Bounties(..) | - Call::Tips(..) | - Call::Utility(..) - ), - ProxyType::Staking => matches!(c, - Call::Staking(..) | - Call::Session(..) | - Call::Utility(..) - ), - ProxyType::IdentityJudgement => matches!(c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | - Call::Utility(..) - ), - ProxyType::CancelProxy => matches!(c, - Call::Proxy(pallet_proxy::Call::reject_announcement(..)) - ) - } - } - fn is_superset(&self, o: &Self) -> bool { - match (self, o) { - (x, y) if x == y => true, - (ProxyType::Any, _) => true, - (_, ProxyType::Any) => false, - (ProxyType::NonTransfer, _) => true, - _ => false, - } - } -} - -impl pallet_proxy::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ProxyType = ProxyType; - type ProxyDepositBase = ProxyDepositBase; - type ProxyDepositFactor = ProxyDepositFactor; - type MaxProxies = MaxProxies; - type WeightInfo = weights::pallet_proxy::WeightInfo; - type MaxPending = MaxPending; - type CallHasher = BlakeTwo256; - type AnnouncementDepositBase = AnnouncementDepositBase; - type AnnouncementDepositFactor = AnnouncementDepositFactor; -} - -construct_runtime! { - pub enum Runtime where - Block = Block, - NodeBlock = primitives::v1::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - // Basic stuff; balances is uncallable initially. - System: frame_system::{Pallet, Call, Storage, Config, Event} = 0, - Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 1, - - // Must be before session. - Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned} = 2, - - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 3, - Indices: pallet_indices::{Pallet, Call, Storage, Config, Event} = 4, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 5, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 32, - - // Consensus support. - Authorship: pallet_authorship::{Pallet, Call, Storage} = 6, - Staking: pallet_staking::{Pallet, Call, Storage, Config, Event} = 7, - Offences: pallet_offences::{Pallet, Storage, Event} = 8, - Historical: session_historical::{Pallet} = 33, - Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 9, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event, ValidateUnsigned} = 11, - ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config} = 12, - AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config} = 13, - - // Governance stuff. - Democracy: pallet_democracy::{Pallet, Call, Storage, Config, Event} = 14, - Council: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 15, - TechnicalCommittee: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 16, - PhragmenElection: pallet_elections_phragmen::{Pallet, Call, Storage, Event, Config} = 17, - TechnicalMembership: pallet_membership::::{Pallet, Call, Storage, Event, Config} = 18, - Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event} = 19, - - // Claims. Usable initially. - Claims: claims::{Pallet, Call, Storage, Event, Config, ValidateUnsigned} = 24, - // Vesting. Usable initially, but removed once all vesting is finished. - Vesting: pallet_vesting::{Pallet, Call, Storage, Event, Config} = 25, - // Cunning utilities. Usable initially. - Utility: pallet_utility::{Pallet, Call, Event} = 26, - - // Identity. Late addition. - Identity: pallet_identity::{Pallet, Call, Storage, Event} = 28, - - // Proxy module. Late addition. - Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 29, - - // Multisig dispatch. Late addition. - Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 30, - - // Bounties module. - Bounties: pallet_bounties::{Pallet, Call, Storage, Event} = 34, - - // Tips module. - Tips: pallet_tips::{Pallet, Call, Storage, Event} = 35, - - // Election pallet. Only works with staking, but placed here to maintain indices. - ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 36, - - } -} - -/// The address format for describing accounts. -pub type Address = sp_runtime::MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckMortality, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, - claims::PrevalidateAttests, -); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = frame_executive::Executive< - Runtime, - Block, - frame_system::ChainContext, - Runtime, - AllPallets, - RemoveCollectiveFlip, ->; -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; - -pub struct RemoveCollectiveFlip; -impl frame_support::traits::OnRuntimeUpgrade for RemoveCollectiveFlip { - fn on_runtime_upgrade() -> Weight { - use frame_support::storage::migration; - // Remove the storage value `RandomMaterial` from removed pallet `RandomnessCollectiveFlip` - migration::remove_storage_prefix(b"RandomnessCollectiveFlip", b"RandomMaterial", b""); - ::DbWeight::get().writes(1) - } -} - -#[cfg(not(feature = "disable-runtime-api"))] -sp_api::impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: inherents::InherentData, - ) -> inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl tx_pool_api::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl primitives::v1::ParachainHost for Runtime { - fn validators() -> Vec { - Vec::new() - } - - fn validator_groups() -> (Vec>, GroupRotationInfo) { - (Vec::new(), GroupRotationInfo { session_start_block: 0, group_rotation_frequency: 0, now: 0 }) - } - - fn availability_cores() -> Vec> { - Vec::new() - } - - fn persisted_validation_data(_: Id, _: OccupiedCoreAssumption) - -> Option> { - None - } - - fn check_validation_outputs(_: Id, _: primitives::v1::CandidateCommitments) -> bool { - false - } - - fn session_index_for_child() -> SessionIndex { - 0 - } - - fn session_info(_: SessionIndex) -> Option { - None - } - - fn validation_code(_: Id, _: OccupiedCoreAssumption) -> Option { - None - } - - fn candidate_pending_availability(_: Id) -> Option> { - None - } - - fn candidate_events() -> Vec> { - Vec::new() - } - - fn dmq_contents( - _recipient: Id, - ) -> Vec> { - Vec::new() - } - - fn inbound_hrmp_channels_contents( - _recipient: Id - ) -> BTreeMap>> { - BTreeMap::new() - } - - fn validation_code_by_hash(_hash: ValidationCodeHash) -> Option { - None - } - } - - impl beefy_primitives::BeefyApi for Runtime { - fn validator_set() -> beefy_primitives::ValidatorSet { - // dummy implementation due to lack of BEEFY pallet. - beefy_primitives::ValidatorSet { validators: Vec::new(), id: 0 } - } - } - - impl mmr::MmrApi for Runtime { - fn generate_proof(_leaf_index: u64) - -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::GenerateProof) - } - - fn verify_proof(_leaf: mmr::EncodableOpaqueLeaf, _proof: mmr::Proof) - -> Result<(), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - - fn verify_proof_stateless( - _root: Hash, - _leaf: mmr::EncodableOpaqueLeaf, - _proof: mmr::Proof - ) -> Result<(), mmr::Error> { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - sp_runtime::traits::NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - authority_id: fg_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((fg_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(fg_primitives::OpaqueKeyOwnershipProof::new) - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } - - fn current_epoch_start() -> babe_primitives::Slot { - Babe::current_epoch_start() - } - - fn current_epoch() -> babe_primitives::Epoch { - Babe::current_epoch() - } - - fn next_epoch() -> babe_primitives::Epoch { - Babe::next_epoch() - } - - fn generate_key_ownership_proof( - _slot: babe_primitives::Slot, - authority_id: babe_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((babe_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(babe_primitives::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: babe_primitives::EquivocationProof<::Header>, - key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Babe::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - } - - impl authority_discovery_primitives::AuthorityDiscoveryApi for Runtime { - fn authorities() -> Vec { - AuthorityDiscovery::authorities() - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Nonce { - System::account_nonce(account) - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - #[cfg(feature = "try-runtime")] - impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { - log::info!("try-runtime::on_runtime_upgrade polkadot."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) - } - } - - #[cfg(feature = "runtime-benchmarks")] - impl frame_benchmarking::Benchmark for Runtime { - fn dispatch_benchmark( - config: frame_benchmarking::BenchmarkConfig - ) -> Result, RuntimeString> { - use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; - // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency issues. - // To get around that, we separated the Session benchmarks into its own crate, which is why - // we need these two lines below. - use pallet_session_benchmarking::Pallet as SessionBench; - use pallet_offences_benchmarking::Pallet as OffencesBench; - use frame_system_benchmarking::Pallet as SystemBench; - - impl pallet_session_benchmarking::Config for Runtime {} - impl pallet_offences_benchmarking::Config for Runtime {} - impl frame_system_benchmarking::Config for Runtime {} - - let whitelist: Vec = vec![ - // Block Number - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), - // Total Issuance - hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), - // Execution Phase - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), - // Event Count - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), - // System Events - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), - // Treasury Account - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(), - ]; - - let mut batches = Vec::::new(); - let params = (&config, &whitelist); - // Polkadot - // NOTE: Make sure to prefix these `runtime_common::` so that path resolves correctly - // in the generated file. - add_benchmark!(params, batches, runtime_common::claims, Claims); - // Substrate - add_benchmark!(params, batches, pallet_balances, Balances); - add_benchmark!(params, batches, pallet_bounties, Bounties); - add_benchmark!(params, batches, pallet_collective, Council); - add_benchmark!(params, batches, pallet_democracy, Democracy); - add_benchmark!(params, batches, pallet_elections_phragmen, PhragmenElection); - add_benchmark!(params, batches, pallet_election_provider_multi_phase, ElectionProviderMultiPhase); - add_benchmark!(params, batches, pallet_identity, Identity); - add_benchmark!(params, batches, pallet_im_online, ImOnline); - add_benchmark!(params, batches, pallet_indices, Indices); - add_benchmark!(params, batches, pallet_membership, TechnicalMembership); - add_benchmark!(params, batches, pallet_multisig, Multisig); - add_benchmark!(params, batches, pallet_offences, OffencesBench::); - add_benchmark!(params, batches, pallet_proxy, Proxy); - add_benchmark!(params, batches, pallet_scheduler, Scheduler); - add_benchmark!(params, batches, pallet_session, SessionBench::); - add_benchmark!(params, batches, pallet_staking, Staking); - add_benchmark!(params, batches, frame_system, SystemBench::); - add_benchmark!(params, batches, pallet_timestamp, Timestamp); - add_benchmark!(params, batches, pallet_tips, Tips); - add_benchmark!(params, batches, pallet_treasury, Treasury); - add_benchmark!(params, batches, pallet_utility, Utility); - add_benchmark!(params, batches, pallet_vesting, Vesting); - - if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } - Ok(batches) - } - } -} - -#[cfg(test)] -mod test_fees { - use super::*; - use frame_support::weights::WeightToFeePolynomial; - use sp_runtime::FixedPointNumber; - use frame_support::weights::GetDispatchInfo; - use parity_scale_codec::Encode; - use pallet_transaction_payment::Multiplier; - use separator::Separatable; - - #[test] - fn payout_weight_portion() { - use pallet_staking::WeightInfo; - let payout_weight = - ::WeightInfo::payout_stakers_alive_staked( - MaxNominatorRewardedPerValidator::get(), - ) as f64; - let block_weight = BlockWeights::get().max_block as f64; - - println!( - "a full payout takes {:.2} of the block weight [{} / {}]", - payout_weight / block_weight, - payout_weight, - block_weight - ); - assert!(payout_weight * 2f64 < block_weight); - } - - #[test] - #[ignore] - fn block_cost() { - let max_block_weight = BlockWeights::get().max_block; - let raw_fee = WeightToFee::calc(&max_block_weight); - - println!( - "Full Block weight == {} // WeightToFee(full_block) == {} plank", - max_block_weight, - raw_fee.separated_string(), - ); - } - - #[test] - #[ignore] - fn transfer_cost_min_multiplier() { - let min_multiplier = runtime_common::MinimumMultiplier::get(); - let call = >::transfer_keep_alive(Default::default(), Default::default()); - let info = call.get_dispatch_info(); - // convert to outer call. - let call = Call::Balances(call); - let len = call.using_encoded(|e| e.len()) as u32; - - let mut ext = sp_io::TestExternalities::new_empty(); - let mut test_with_multiplier = |m| { - ext.execute_with(|| { - pallet_transaction_payment::NextFeeMultiplier::::put(m); - let fee = TransactionPayment::compute_fee(len, &info, 0); - println!( - "weight = {:?} // multiplier = {:?} // full transfer fee = {:?}", - info.weight.separated_string(), - pallet_transaction_payment::NextFeeMultiplier::::get(), - fee.separated_string(), - ); - }); - }; - - test_with_multiplier(min_multiplier); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000_000u128)); - test_with_multiplier(Multiplier::saturating_from_rational(1, 1_000_000_000u128)); - } - - #[test] - fn full_block_council_election_cost() { - // the number of voters needed to consume almost a full block in council election, and how - // much it is going to cost. - use pallet_elections_phragmen::WeightInfo; - - // Loser candidate lose a lot of money; sybil attack by candidates is even more expensive, - // and we don't care about it here. For now, we assume no extra candidates, and only - // superfluous voters. - let candidates = DesiredMembers::get() + DesiredRunnersUp::get(); - let mut voters = 1u32; - let weight_with = |v| { - ::WeightInfo::election_phragmen( - candidates, - v, - v * 16, - ) - }; - - while weight_with(voters) <= BlockWeights::get().max_block { - voters += 1; - } - - let cost = voters as Balance * (VotingBondBase::get() + 16 * VotingBondFactor::get()); - let cost_dollars = cost / DOLLARS; - println!( - "can support {} voters in a single block for council elections; total bond {}", - voters, - cost_dollars, - ); - assert!(cost_dollars > 150_000); // DOLLAR ~ new DOT ~ 10e10 - } - - #[test] - fn nominator_limit() { - use pallet_election_provider_multi_phase::WeightInfo; - // starting point of the nominators. - let target_voters: u32 = 50_000; - - // assuming we want around 5k candidates and 1k active validators. (March 31, 2021) - let all_targets: u32 = 5_000; - let desired: u32 = 1_000; - let weight_with = |active| { - ::WeightInfo::submit_unsigned( - active, - all_targets, - active, - desired, - ) - }; - - let mut active = target_voters; - while weight_with(active) <= OffchainSolutionWeightLimit::get() || active == target_voters { - active += 1; - } - - println!("can support {} nominators to yield a weight of {}", active, weight_with(active)); - assert!(active > target_voters, "we need to reevaluate the weight of the election system"); - } -} diff --git a/runtime/polkadot/src/weights/frame_system.rs b/runtime/polkadot/src/weights/frame_system.rs deleted file mode 100644 index e6c489b993ba..000000000000 --- a/runtime/polkadot/src/weights/frame_system.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for frame_system -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=frame_system -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for frame_system. -pub struct WeightInfo(PhantomData); -impl frame_system::WeightInfo for WeightInfo { - fn remark(_b: u32, ) -> Weight { - (990_000 as Weight) - } - fn remark_with_event(b: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) - } - fn set_heap_pages() -> Weight { - (1_353_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_changes_trie_config() -> Weight { - (9_064_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn set_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((546_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((402_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_prefix(p: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((790_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } -} diff --git a/runtime/polkadot/src/weights/mod.rs b/runtime/polkadot/src/weights/mod.rs deleted file mode 100644 index 6f72ddc2d70e..000000000000 --- a/runtime/polkadot/src/weights/mod.rs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (C) 2020 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! A list of the different weight modules for our runtime. - -pub mod frame_system; -pub mod pallet_balances; -pub mod pallet_collective; -pub mod pallet_democracy; -pub mod pallet_elections_phragmen; -pub mod pallet_election_provider_multi_phase; -pub mod pallet_identity; -pub mod pallet_im_online; -pub mod pallet_indices; -pub mod pallet_membership; -pub mod pallet_multisig; -pub mod pallet_proxy; -pub mod pallet_scheduler; -pub mod pallet_session; -pub mod pallet_staking; -pub mod pallet_timestamp; -pub mod pallet_treasury; -pub mod pallet_utility; -pub mod pallet_vesting; -pub mod pallet_bounties; -pub mod pallet_tips; -pub mod runtime_common_claims; diff --git a/runtime/polkadot/src/weights/pallet_balances.rs b/runtime/polkadot/src/weights/pallet_balances.rs deleted file mode 100644 index fd39857ec655..000000000000 --- a/runtime/polkadot/src/weights/pallet_balances.rs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_balances -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_balances -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_balances. -pub struct WeightInfo(PhantomData); -impl pallet_balances::WeightInfo for WeightInfo { - fn transfer() -> Weight { - (68_987_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer_keep_alive() -> Weight { - (50_696_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_creating() -> Weight { - (27_340_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_killing() -> Weight { - (33_128_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (67_909_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn transfer_all() -> Weight { - (63_138_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_bounties.rs b/runtime/polkadot/src/weights/pallet_bounties.rs deleted file mode 100644 index 08a7b17b8801..000000000000 --- a/runtime/polkadot/src/weights/pallet_bounties.rs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_bounties -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_bounties -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_bounties. -pub struct WeightInfo(PhantomData); -impl pallet_bounties::WeightInfo for WeightInfo { - fn propose_bounty(d: u32, ) -> Weight { - (41_122_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn approve_bounty() -> Weight { - (10_042_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn propose_curator() -> Weight { - (7_654_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn unassign_curator() -> Weight { - (50_121_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn accept_curator() -> Weight { - (34_663_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn award_bounty() -> Weight { - (23_054_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn claim_bounty() -> Weight { - (120_265_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(5 as Weight)) - } - fn close_bounty_proposed() -> Weight { - (49_587_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_bounty_active() -> Weight { - (79_774_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn extend_bounty_expiry() -> Weight { - (22_533_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn spend_funds(b: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 14_000 - .saturating_add((57_405_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(b as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight))) - } -} diff --git a/runtime/polkadot/src/weights/pallet_collective.rs b/runtime/polkadot/src/weights/pallet_collective.rs deleted file mode 100644 index 6e41d192c1e7..000000000000 --- a/runtime/polkadot/src/weights/pallet_collective.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_collective -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_collective -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_collective. -pub struct WeightInfo(PhantomData); -impl pallet_collective::WeightInfo for WeightInfo { - fn set_members(m: u32, n: u32, p: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 4_000 - .saturating_add((14_001_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 4_000 - .saturating_add((106_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 4_000 - .saturating_add((19_318_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(p as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } - fn execute(b: u32, m: u32, ) -> Weight { - (20_878_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((83_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn propose_execute(b: u32, m: u32, ) -> Weight { - (25_662_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((162_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - } - fn propose_proposed(b: u32, m: u32, p: u32, ) -> Weight { - (42_102_000 as Weight) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((89_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((364_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn vote(m: u32, ) -> Weight { - (31_866_000 as Weight) - // Standard Error: 0 - .saturating_add((196_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn close_early_disapproved(m: u32, p: u32, ) -> Weight { - (40_751_000 as Weight) - // Standard Error: 0 - .saturating_add((167_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((333_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_early_approved(b: u32, m: u32, p: u32, ) -> Weight { - (56_534_000 as Weight) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((166_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((347_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_disapproved(m: u32, p: u32, ) -> Weight { - (45_673_000 as Weight) - // Standard Error: 0 - .saturating_add((167_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((336_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn close_approved(b: u32, m: u32, p: u32, ) -> Weight { - (61_152_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - // Standard Error: 0 - .saturating_add((167_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 0 - .saturating_add((340_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn disapprove_proposal(p: u32, ) -> Weight { - (25_103_000 as Weight) - // Standard Error: 0 - .saturating_add((346_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_democracy.rs b/runtime/polkadot/src/weights/pallet_democracy.rs deleted file mode 100644 index 6dcdf6a97371..000000000000 --- a/runtime/polkadot/src/weights/pallet_democracy.rs +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_democracy -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_democracy -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_democracy. -pub struct WeightInfo(PhantomData); -impl pallet_democracy::WeightInfo for WeightInfo { - fn propose() -> Weight { - (55_166_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn second(s: u32, ) -> Weight { - (36_768_000 as Weight) - // Standard Error: 0 - .saturating_add((143_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn vote_new(r: u32, ) -> Weight { - (42_144_000 as Weight) - // Standard Error: 0 - .saturating_add((183_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn vote_existing(r: u32, ) -> Weight { - (42_316_000 as Weight) - // Standard Error: 0 - .saturating_add((174_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn emergency_cancel() -> Weight { - (26_501_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn blacklist(p: u32, ) -> Weight { - (73_883_000 as Weight) - // Standard Error: 4_000 - .saturating_add((460_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn external_propose(v: u32, ) -> Weight { - (12_461_000 as Weight) - // Standard Error: 0 - .saturating_add((78_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn external_propose_majority() -> Weight { - (2_393_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn external_propose_default() -> Weight { - (2_401_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn fast_track() -> Weight { - (25_767_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn veto_external(v: u32, ) -> Weight { - (26_834_000 as Weight) - // Standard Error: 0 - .saturating_add((116_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn cancel_proposal(p: u32, ) -> Weight { - (49_339_000 as Weight) - // Standard Error: 0 - .saturating_add((436_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn cancel_referendum() -> Weight { - (15_793_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel_queued(r: u32, ) -> Weight { - (27_553_000 as Weight) - // Standard Error: 1_000 - .saturating_add((1_614_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn on_initialize_base(r: u32, ) -> Weight { - (6_724_000 as Weight) - // Standard Error: 4_000 - .saturating_add((5_014_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - } - fn delegate(r: u32, ) -> Weight { - (50_940_000 as Weight) - // Standard Error: 4_000 - .saturating_add((7_009_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) - } - fn undelegate(r: u32, ) -> Weight { - (22_520_000 as Weight) - // Standard Error: 5_000 - .saturating_add((6_964_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) - } - fn clear_public_proposals() -> Weight { - (2_251_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn note_preimage(b: u32, ) -> Weight { - (40_109_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn note_imminent_preimage(b: u32, ) -> Weight { - (25_678_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn reap_preimage(b: u32, ) -> Weight { - (36_132_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn unlock_remove(r: u32, ) -> Weight { - (36_160_000 as Weight) - // Standard Error: 0 - .saturating_add((51_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn unlock_set(r: u32, ) -> Weight { - (33_706_000 as Weight) - // Standard Error: 0 - .saturating_add((165_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn remove_vote(r: u32, ) -> Weight { - (18_398_000 as Weight) - // Standard Error: 0 - .saturating_add((149_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_other_vote(r: u32, ) -> Weight { - (18_520_000 as Weight) - // Standard Error: 0 - .saturating_add((151_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs b/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs deleted file mode 100644 index 81f768036438..000000000000 --- a/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_election_provider_multi_phase -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_election_provider_multi_phase -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_election_provider_multi_phase. -pub struct WeightInfo(PhantomData); -impl pallet_election_provider_multi_phase::WeightInfo for WeightInfo { - fn on_initialize_nothing() -> Weight { - (23_244_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - } - fn on_initialize_open_signed() -> Weight { - (82_453_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_with_snapshot() -> Weight { - (81_883_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_without_snapshot() -> Weight { - (17_601_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn elect_queued() -> Weight { - (5_408_539_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 15_000 - .saturating_add((3_352_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 52_000 - .saturating_add((150_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 15_000 - .saturating_add((10_531_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 78_000 - .saturating_add((3_302_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn feasibility_check(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 10_000 - .saturating_add((3_365_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 34_000 - .saturating_add((295_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 10_000 - .saturating_add((8_438_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 52_000 - .saturating_add((3_606_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_elections_phragmen.rs b/runtime/polkadot/src/weights/pallet_elections_phragmen.rs deleted file mode 100644 index 52ae5f90b91d..000000000000 --- a/runtime/polkadot/src/weights/pallet_elections_phragmen.rs +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_elections_phragmen -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_elections_phragmen -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_elections_phragmen. -pub struct WeightInfo(PhantomData); -impl pallet_elections_phragmen::WeightInfo for WeightInfo { - fn vote_equal(v: u32, ) -> Weight { - (40_098_000 as Weight) - // Standard Error: 3_000 - .saturating_add((251_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vote_more(v: u32, ) -> Weight { - (62_907_000 as Weight) - // Standard Error: 5_000 - .saturating_add((244_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vote_less(v: u32, ) -> Weight { - (62_646_000 as Weight) - // Standard Error: 5_000 - .saturating_add((275_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_voter() -> Weight { - (57_669_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn submit_candidacy(c: u32, ) -> Weight { - (51_325_000 as Weight) - // Standard Error: 0 - .saturating_add((246_000 as Weight).saturating_mul(c as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn renounce_candidacy_candidate(c: u32, ) -> Weight { - (42_877_000 as Weight) - // Standard Error: 0 - .saturating_add((129_000 as Weight).saturating_mul(c as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn renounce_candidacy_members() -> Weight { - (65_943_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn renounce_candidacy_runners_up() -> Weight { - (45_901_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_member_with_replacement() -> Weight { - (84_434_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(5 as Weight)) - } - fn remove_member_wrong_refund() -> Weight { - (6_294_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn clean_defunct_voters(v: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 34_000 - .saturating_add((106_858_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 32_000 - .saturating_add((212_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) - } - fn election_phragmen(c: u32, v: u32, e: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 2_605_000 - .saturating_add((122_952_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 1_083_000 - .saturating_add((102_007_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 74_000 - .saturating_add((6_719_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) - } -} diff --git a/runtime/polkadot/src/weights/pallet_identity.rs b/runtime/polkadot/src/weights/pallet_identity.rs deleted file mode 100644 index e30e902f7137..000000000000 --- a/runtime/polkadot/src/weights/pallet_identity.rs +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_identity -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_identity -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_identity. -pub struct WeightInfo(PhantomData); -impl pallet_identity::WeightInfo for WeightInfo { - fn add_registrar(r: u32, ) -> Weight { - (20_387_000 as Weight) - // Standard Error: 2_000 - .saturating_add((201_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_identity(r: u32, x: u32, ) -> Weight { - (50_833_000 as Weight) - // Standard Error: 14_000 - .saturating_add((180_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((936_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_subs_new(s: u32, ) -> Weight { - (38_886_000 as Weight) - // Standard Error: 2_000 - .saturating_add((6_241_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn set_subs_old(p: u32, ) -> Weight { - (39_842_000 as Weight) - // Standard Error: 0 - .saturating_add((2_003_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } - fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight { - (48_868_000 as Weight) - // Standard Error: 11_000 - .saturating_add((159_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((2_003_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 1_000 - .saturating_add((597_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn request_judgement(r: u32, x: u32, ) -> Weight { - (52_307_000 as Weight) - // Standard Error: 5_000 - .saturating_add((221_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_168_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel_request(r: u32, x: u32, ) -> Weight { - (47_911_000 as Weight) - // Standard Error: 7_000 - .saturating_add((163_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_130_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fee(r: u32, ) -> Weight { - (7_595_000 as Weight) - // Standard Error: 1_000 - .saturating_add((159_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_account_id(r: u32, ) -> Weight { - (8_265_000 as Weight) - // Standard Error: 1_000 - .saturating_add((161_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fields(r: u32, ) -> Weight { - (7_644_000 as Weight) - // Standard Error: 1_000 - .saturating_add((157_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn provide_judgement(r: u32, x: u32, ) -> Weight { - (33_454_000 as Weight) - // Standard Error: 5_000 - .saturating_add((202_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_143_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight { - (63_116_000 as Weight) - // Standard Error: 4_000 - .saturating_add((54_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((2_003_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn add_sub(s: u32, ) -> Weight { - (52_871_000 as Weight) - // Standard Error: 0 - .saturating_add((141_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn rename_sub(s: u32, ) -> Weight { - (16_359_000 as Weight) - // Standard Error: 0 - .saturating_add((21_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_sub(s: u32, ) -> Weight { - (54_147_000 as Weight) - // Standard Error: 0 - .saturating_add((122_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn quit_sub(s: u32, ) -> Weight { - (33_116_000 as Weight) - // Standard Error: 0 - .saturating_add((122_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_im_online.rs b/runtime/polkadot/src/weights/pallet_im_online.rs deleted file mode 100644 index 803a81972316..000000000000 --- a/runtime/polkadot/src/weights/pallet_im_online.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_im_online -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_im_online -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_im_online. -pub struct WeightInfo(PhantomData); -impl pallet_im_online::WeightInfo for WeightInfo { - fn validate_unsigned_and_then_heartbeat(k: u32, e: u32, ) -> Weight { - (88_108_000 as Weight) - // Standard Error: 0 - .saturating_add((162_000 as Weight).saturating_mul(k as Weight)) - // Standard Error: 2_000 - .saturating_add((314_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_indices.rs b/runtime/polkadot/src/weights/pallet_indices.rs deleted file mode 100644 index 4b799601b1a0..000000000000 --- a/runtime/polkadot/src/weights/pallet_indices.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_indices -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_indices -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_indices. -pub struct WeightInfo(PhantomData); -impl pallet_indices::WeightInfo for WeightInfo { - fn claim() -> Weight { - (38_147_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer() -> Weight { - (46_258_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn free() -> Weight { - (38_012_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (38_762_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn freeze() -> Weight { - (36_160_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_membership.rs b/runtime/polkadot/src/weights/pallet_membership.rs deleted file mode 100644 index b4892d3d66bc..000000000000 --- a/runtime/polkadot/src/weights/pallet_membership.rs +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_membership -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_membership -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_membership. -pub struct WeightInfo(PhantomData); -impl pallet_membership::WeightInfo for WeightInfo { - fn add_member(m: u32, ) -> Weight { - (22_281_000 as Weight) - // Standard Error: 1_000 - .saturating_add((121_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn remove_member(m: u32, ) -> Weight { - (27_105_000 as Weight) - // Standard Error: 0 - .saturating_add((96_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn swap_member(m: u32, ) -> Weight { - (27_225_000 as Weight) - // Standard Error: 0 - .saturating_add((110_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn reset_member(m: u32, ) -> Weight { - (27_835_000 as Weight) - // Standard Error: 0 - .saturating_add((264_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn change_key(m: u32, ) -> Weight { - (28_699_000 as Weight) - // Standard Error: 0 - .saturating_add((108_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn set_prime(m: u32, ) -> Weight { - (6_983_000 as Weight) - // Standard Error: 0 - .saturating_add((78_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn clear_prime(_m: u32, ) -> Weight { - (2_735_000 as Weight) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_multisig.rs b/runtime/polkadot/src/weights/pallet_multisig.rs deleted file mode 100644 index 52d90bc6427f..000000000000 --- a/runtime/polkadot/src/weights/pallet_multisig.rs +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_multisig -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_multisig -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_multisig. -pub struct WeightInfo(PhantomData); -impl pallet_multisig::WeightInfo for WeightInfo { - fn as_multi_threshold_1(_z: u32, ) -> Weight { - (8_469_000 as Weight) - } - fn as_multi_create(s: u32, z: u32, ) -> Weight { - (48_033_000 as Weight) - // Standard Error: 0 - .saturating_add((87_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (53_076_000 as Weight) - // Standard Error: 0 - .saturating_add((91_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (27_924_000 as Weight) - // Standard Error: 0 - .saturating_add((87_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (50_732_000 as Weight) - // Standard Error: 0 - .saturating_add((102_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (64_066_000 as Weight) - // Standard Error: 0 - .saturating_add((196_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn approve_as_multi_create(s: u32, ) -> Weight { - (47_877_000 as Weight) - // Standard Error: 0 - .saturating_add((86_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_approve(s: u32, ) -> Weight { - (27_217_000 as Weight) - // Standard Error: 0 - .saturating_add((87_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_complete(s: u32, ) -> Weight { - (108_186_000 as Weight) - // Standard Error: 0 - .saturating_add((196_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn cancel_as_multi(s: u32, ) -> Weight { - (80_428_000 as Weight) - // Standard Error: 0 - .saturating_add((83_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_proxy.rs b/runtime/polkadot/src/weights/pallet_proxy.rs deleted file mode 100644 index bfb932c3a939..000000000000 --- a/runtime/polkadot/src/weights/pallet_proxy.rs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_proxy -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_proxy -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_proxy. -pub struct WeightInfo(PhantomData); -impl pallet_proxy::WeightInfo for WeightInfo { - fn proxy(p: u32, ) -> Weight { - (21_441_000 as Weight) - // Standard Error: 1_000 - .saturating_add((124_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn proxy_announced(a: u32, p: u32, ) -> Weight { - (50_942_000 as Weight) - // Standard Error: 1_000 - .saturating_add((495_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 2_000 - .saturating_add((100_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_announcement(a: u32, _p: u32, ) -> Weight { - (35_895_000 as Weight) - // Standard Error: 1_000 - .saturating_add((485_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn reject_announcement(a: u32, _p: u32, ) -> Weight { - (35_800_000 as Weight) - // Standard Error: 1_000 - .saturating_add((488_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn announce(a: u32, p: u32, ) -> Weight { - (48_613_000 as Weight) - // Standard Error: 2_000 - .saturating_add((498_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 2_000 - .saturating_add((106_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn add_proxy(p: u32, ) -> Weight { - (34_308_000 as Weight) - // Standard Error: 1_000 - .saturating_add((176_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxy(p: u32, ) -> Weight { - (33_775_000 as Weight) - // Standard Error: 2_000 - .saturating_add((206_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxies(p: u32, ) -> Weight { - (32_306_000 as Weight) - // Standard Error: 1_000 - .saturating_add((130_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn anonymous(p: u32, ) -> Weight { - (45_964_000 as Weight) - // Standard Error: 1_000 - .saturating_add((31_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_anonymous(p: u32, ) -> Weight { - (33_990_000 as Weight) - // Standard Error: 1_000 - .saturating_add((132_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_scheduler.rs b/runtime/polkadot/src/weights/pallet_scheduler.rs deleted file mode 100644 index 17564ec684e4..000000000000 --- a/runtime/polkadot/src/weights/pallet_scheduler.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_scheduler -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_scheduler -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_scheduler. -pub struct WeightInfo(PhantomData); -impl pallet_scheduler::WeightInfo for WeightInfo { - fn schedule(s: u32, ) -> Weight { - (22_755_000 as Weight) - // Standard Error: 0 - .saturating_add((47_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel(s: u32, ) -> Weight { - (22_112_000 as Weight) - // Standard Error: 4_000 - .saturating_add((1_354_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn schedule_named(s: u32, ) -> Weight { - (29_156_000 as Weight) - // Standard Error: 1_000 - .saturating_add((64_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn cancel_named(s: u32, ) -> Weight { - (24_505_000 as Weight) - // Standard Error: 4_000 - .saturating_add((1_376_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_session.rs b/runtime/polkadot/src/weights/pallet_session.rs deleted file mode 100644 index cd2aa1395343..000000000000 --- a/runtime/polkadot/src/weights/pallet_session.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_session -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_session -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_session. -pub struct WeightInfo(PhantomData); -impl pallet_session::WeightInfo for WeightInfo { - fn set_keys() -> Weight { - (68_529_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } - fn purge_keys() -> Weight { - (38_184_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_staking.rs b/runtime/polkadot/src/weights/pallet_staking.rs deleted file mode 100644 index b233c567efe3..000000000000 --- a/runtime/polkadot/src/weights/pallet_staking.rs +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_staking -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_staking -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_staking. -pub struct WeightInfo(PhantomData); -impl pallet_staking::WeightInfo for WeightInfo { - fn bond() -> Weight { - (66_434_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn bond_extra() -> Weight { - (51_531_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn unbond() -> Weight { - (54_336_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_update(s: u32, ) -> Weight { - (47_505_000 as Weight) - // Standard Error: 0 - .saturating_add((24_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_kill(s: u32, ) -> Weight { - (77_865_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_194_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn validate() -> Weight { - (28_555_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn kick(k: u32, ) -> Weight { - (10_886_000 as Weight) - // Standard Error: 6_000 - .saturating_add((15_538_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) - } - fn nominate(n: u32, ) -> Weight { - (34_708_000 as Weight) - // Standard Error: 9_000 - .saturating_add((5_034_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn chill() -> Weight { - (15_837_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - } - fn set_payee() -> Weight { - (10_696_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_controller() -> Weight { - (23_482_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_validator_count() -> Weight { - (1_815_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_no_eras() -> Weight { - (2_048_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era() -> Weight { - (2_052_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era_always() -> Weight { - (2_047_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_invulnerables(v: u32, ) -> Weight { - (1_969_000 as Weight) - // Standard Error: 0 - .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_unstake(s: u32, ) -> Weight { - (54_672_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_189_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn cancel_deferred_slash(s: u32, ) -> Weight { - (3_374_694_000 as Weight) - // Standard Error: 221_000 - .saturating_add((19_788_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn payout_stakers_dead_controller(n: u32, ) -> Weight { - (95_732_000 as Weight) - // Standard Error: 17_000 - .saturating_add((45_189_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) - } - fn payout_stakers_alive_staked(n: u32, ) -> Weight { - (123_745_000 as Weight) - // Standard Error: 22_000 - .saturating_add((58_409_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) - } - fn rebond(l: u32, ) -> Weight { - (44_585_000 as Weight) - // Standard Error: 1_000 - .saturating_add((63_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_history_depth(e: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 69_000 - .saturating_add((31_931_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) - } - fn reap_stash(s: u32, ) -> Weight { - (65_438_000 as Weight) - // Standard Error: 0 - .saturating_add((2_182_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn new_era(v: u32, n: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 786_000 - .saturating_add((286_767_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 39_000 - .saturating_add((46_380_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) - } - fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 93_000 - .saturating_add((23_941_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 93_000 - .saturating_add((26_505_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_172_000 - .saturating_add((25_012_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - } - fn get_npos_targets(v: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 31_000 - .saturating_add((10_079_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) - } - fn update_staking_limits() -> Weight { - (4_524_000 as Weight) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn chill_other() -> Weight { - (30_191_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_timestamp.rs b/runtime/polkadot/src/weights/pallet_timestamp.rs deleted file mode 100644 index 53a369db2f70..000000000000 --- a/runtime/polkadot/src/weights/pallet_timestamp.rs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_timestamp -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_timestamp -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_timestamp. -pub struct WeightInfo(PhantomData); -impl pallet_timestamp::WeightInfo for WeightInfo { - fn set() -> Weight { - (9_868_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_finalize() -> Weight { - (4_337_000 as Weight) - } -} diff --git a/runtime/polkadot/src/weights/pallet_tips.rs b/runtime/polkadot/src/weights/pallet_tips.rs deleted file mode 100644 index 157148b26101..000000000000 --- a/runtime/polkadot/src/weights/pallet_tips.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_tips -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_tips -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_tips. -pub struct WeightInfo(PhantomData); -impl pallet_tips::WeightInfo for WeightInfo { - fn report_awesome(r: u32, ) -> Weight { - (45_075_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn retract_tip() -> Weight { - (42_197_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn tip_new(r: u32, t: u32, ) -> Weight { - (27_673_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((117_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn tip(t: u32, ) -> Weight { - (17_648_000 as Weight) - // Standard Error: 0 - .saturating_add((536_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn close_tip(t: u32, ) -> Weight { - (77_210_000 as Weight) - // Standard Error: 0 - .saturating_add((301_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn slash_tip(t: u32, ) -> Weight { - (22_593_000 as Weight) - // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_treasury.rs b/runtime/polkadot/src/weights/pallet_treasury.rs deleted file mode 100644 index 3b37e873709f..000000000000 --- a/runtime/polkadot/src/weights/pallet_treasury.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_treasury -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_treasury -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_treasury. -pub struct WeightInfo(PhantomData); -impl pallet_treasury::WeightInfo for WeightInfo { - fn propose_spend() -> Weight { - (37_918_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn reject_proposal() -> Weight { - (47_245_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn approve_proposal(p: u32, ) -> Weight { - (11_005_000 as Weight) - // Standard Error: 0 - .saturating_add((35_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_initialize_proposals(p: u32, ) -> Weight { - (38_570_000 as Weight) - // Standard Error: 15_000 - .saturating_add((56_410_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(p as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(p as Weight))) - } -} diff --git a/runtime/polkadot/src/weights/pallet_utility.rs b/runtime/polkadot/src/weights/pallet_utility.rs deleted file mode 100644 index 7c81ce2a7a6e..000000000000 --- a/runtime/polkadot/src/weights/pallet_utility.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_utility -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_utility -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_utility. -pub struct WeightInfo(PhantomData); -impl pallet_utility::WeightInfo for WeightInfo { - fn batch(c: u32, ) -> Weight { - (13_742_000 as Weight) - // Standard Error: 0 - .saturating_add((607_000 as Weight).saturating_mul(c as Weight)) - } - fn as_derivative() -> Weight { - (3_045_000 as Weight) - } - fn batch_all(c: u32, ) -> Weight { - (13_513_000 as Weight) - // Standard Error: 0 - .saturating_add((1_026_000 as Weight).saturating_mul(c as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/pallet_vesting.rs b/runtime/polkadot/src/weights/pallet_vesting.rs deleted file mode 100644 index bfef0b12684d..000000000000 --- a/runtime/polkadot/src/weights/pallet_vesting.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_vesting -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_vesting -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_vesting. -pub struct WeightInfo(PhantomData); -impl pallet_vesting::WeightInfo for WeightInfo { - fn vest_locked(l: u32, ) -> Weight { - (40_549_000 as Weight) - // Standard Error: 7_000 - .saturating_add((162_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn vest_unlocked(l: u32, ) -> Weight { - (43_713_000 as Weight) - // Standard Error: 4_000 - .saturating_add((129_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_locked(l: u32, ) -> Weight { - (40_331_000 as Weight) - // Standard Error: 7_000 - .saturating_add((154_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_unlocked(l: u32, ) -> Weight { - (43_179_000 as Weight) - // Standard Error: 4_000 - .saturating_add((130_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn vested_transfer(l: u32, ) -> Weight { - (92_890_000 as Weight) - // Standard Error: 5_000 - .saturating_add((156_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn force_vested_transfer(l: u32, ) -> Weight { - (92_001_000 as Weight) - // Standard Error: 5_000 - .saturating_add((155_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } -} diff --git a/runtime/polkadot/src/weights/runtime_common_claims.rs b/runtime/polkadot/src/weights/runtime_common_claims.rs deleted file mode 100644 index 3b5047ea9473..000000000000 --- a/runtime/polkadot/src/weights/runtime_common_claims.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::claims -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=polkadot-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::claims -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::claims. -pub struct WeightInfo(PhantomData); -impl runtime_common::claims::WeightInfo for WeightInfo { - fn claim() -> Weight { - (435_155_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn mint_claim() -> Weight { - (11_642_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn claim_attest() -> Weight { - (437_198_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn attest() -> Weight { - (124_628_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } - fn move_claim() -> Weight { - (25_441_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } -} diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml deleted file mode 100644 index c44fd26aa27d..000000000000 --- a/runtime/rococo/Cargo.toml +++ /dev/null @@ -1,182 +0,0 @@ -[package] -name = "rococo-runtime" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -smallvec = "1.6.1" -hex-literal = "0.3.1" -log = { version = "0.4.14", default-features = false } - -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-beefy = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-im-online = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-membership = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking-reward-curve = { package = "pallet-staking-reward-curve", git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-proxy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -polkadot-parachain = { path = "../../parachain", default-features = false } -runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } - -xcm = { package = "xcm", path = "../../xcm", default-features = false } -xcm-executor = { package = "xcm-executor", path = "../../xcm/xcm-executor", default-features = false } -xcm-builder = { package = "xcm-builder", path = "../../xcm/xcm-builder", default-features = false } -pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false } - -# Bridge Dependencies -bp-rococo = { path = "../../bridges/primitives/chain-rococo", default-features = false } -bp-wococo = { path = "../../bridges/primitives/chain-wococo", default-features = false } -pallet-bridge-grandpa = { path = "../../bridges/modules/grandpa", default-features = false } - -max-encoded-len = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = ["std"] -no_std = [] -std = [ - "authority-discovery-primitives/std", - "babe-primitives/std", - "bp-rococo/std", - "bp-wococo/std", - "parity-scale-codec/std", - "frame-executive/std", - "pallet-authority-discovery/std", - "pallet-authorship/std", - "pallet-babe/std", - "beefy-primitives/std", - "pallet-balances/std", - "pallet-bridge-grandpa/std", - "pallet-collective/std", - "pallet-beefy/std", - "pallet-grandpa/std", - "pallet-sudo/std", - "pallet-membership/std", - "pallet-mmr/std", - "pallet-mmr-primitives/std", - "pallet-indices/std", - "pallet-im-online/std", - "pallet-session/std", - "pallet-staking/std", - "pallet-offences/std", - "pallet-timestamp/std", - "pallet-transaction-payment/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "inherents/std", - "frame-support/std", - "polkadot-parachain/std", - "primitives/std", - "runtime-common/std", - "runtime-parachains/std", - "sp-api/std", - "sp-core/std", - "sp-io/std", - "sp-runtime/std", - "sp-session/std", - "sp-staking/std", - "sp-std/std", - "frame-system/std", - "frame-system-rpc-runtime-api/std", - "offchain-primitives/std", - "block-builder-api/std", - "tx-pool-api/std", - "sp-version/std", - "serde_derive", - "serde/std", - "xcm/std", - "xcm-executor/std", - "xcm-builder/std", - "pallet-xcm/std", - "log/std", - "max-encoded-len/std", -] -# When enabled, the runtime api will not be build. -# -# This is required by Cumulus to access certain types of the -# runtime without clashing with the runtime api exported functions -# in WASM. -disable-runtime-api = [] -runtime-benchmarks = [ - "runtime-common/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", - "pallet-babe/runtime-benchmarks", - "pallet-balances/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", - "pallet-grandpa/runtime-benchmarks", - "pallet-im-online/runtime-benchmarks", - "pallet-indices/runtime-benchmarks", - "pallet-staking/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks", - "pallet-xcm/runtime-benchmarks", - "xcm-builder/runtime-benchmarks", -] -try-runtime = [ - "frame-executive/try-runtime", - "frame-support/try-runtime", - "frame-system/try-runtime", - "pallet-authority-discovery/try-runtime", - "pallet-authorship/try-runtime", - "pallet-babe/try-runtime", - "pallet-balances/try-runtime", - "pallet-collective/try-runtime", - "pallet-grandpa/try-runtime", - "pallet-sudo/try-runtime", - "pallet-indices/try-runtime", - "pallet-im-online/try-runtime", - "pallet-membership/try-runtime", - "pallet-session/try-runtime", - "pallet-staking/try-runtime", - "pallet-offences/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-transaction-payment/try-runtime", - "runtime-common/try-runtime", -] diff --git a/runtime/rococo/README.md b/runtime/rococo/README.md deleted file mode 100644 index bc47556792e4..000000000000 --- a/runtime/rococo/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Rococo: v1 - -Rococo is a testnet runtime with no stability guarantees. - -## How to run - -> TODO: figure out how to run this properly. - -### Alice - -`cargo run --release -- --alice --tmp --validator --chain rococo-local` diff --git a/runtime/rococo/build.rs b/runtime/rococo/build.rs deleted file mode 100644 index f287ec0e1eea..000000000000 --- a/runtime/rococo/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .import_memory() - .export_heap_base() - .build() -} diff --git a/runtime/rococo/src/constants.rs b/runtime/rococo/src/constants.rs deleted file mode 100644 index 1264a746f7df..000000000000 --- a/runtime/rococo/src/constants.rs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// Money matters. -pub mod currency { - use primitives::v0::Balance; - - pub const UNITS: Balance = 1_000_000_000_000; - pub const DOLLARS: Balance = UNITS; - pub const CENTS: Balance = DOLLARS / 100; - pub const MILLICENTS: Balance = CENTS / 1_000; - - pub const fn deposit(items: u32, bytes: u32) -> Balance { - items as Balance * 1 * DOLLARS + (bytes as Balance) * 5 * MILLICENTS - } -} - -/// Time and blocks. -pub mod time { - use primitives::v0::{Moment, BlockNumber}; - pub const MILLISECS_PER_BLOCK: Moment = 6000; - pub const SLOT_DURATION: Moment = MILLISECS_PER_BLOCK; - frame_support::parameter_types! { - pub storage EpochDurationInBlocks: BlockNumber = 10 * MINUTES; - } - - // These time units are defined in number of blocks. - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; - - // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. - pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); -} - -/// Fee-related. -pub mod fee { - pub use sp_runtime::Perbill; - use primitives::v0::Balance; - use runtime_common::ExtrinsicBaseWeight; - use frame_support::weights::{ - WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, - }; - use smallvec::smallvec; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); - - /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the - /// node's balance type. - /// - /// This should typically create a mapping between the following ranges: - /// - [0, frame_system::MaximumBlockWeight] - /// - [Balance::min, Balance::max] - /// - /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: - /// - Setting it to `0` will essentially disable the weight fee. - /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. - pub struct WeightToFee; - impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - // in Westend, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: - let p = super::currency::CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } - } -} - -#[cfg(test)] -mod tests { - use frame_support::weights::{WeightToFeePolynomial, DispatchClass}; - use runtime_common::BlockWeights; - use super::fee::WeightToFee; - use super::currency::{CENTS, DOLLARS, MILLICENTS}; - - #[test] - // This function tests that the fee for `MaximumBlockWeight` of weight is correct - fn full_block_fee_is_correct() { - // A full block should cost 16 DOLLARS - println!("Base: {}", BlockWeights::get().get(DispatchClass::Normal).base_extrinsic); - let x = WeightToFee::calc(&BlockWeights::get().max_block); - let y = 16 * DOLLARS; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } - - #[test] - // This function tests that the fee for `ExtrinsicBaseWeight` of weight is correct - fn extrinsic_base_fee_is_correct() { - // `ExtrinsicBaseWeight` should cost 1/10 of a CENT - let base_weight = BlockWeights::get().get(DispatchClass::Normal).base_extrinsic; - println!("Base: {}", base_weight); - let x = WeightToFee::calc(&base_weight); - let y = CENTS / 10; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } -} diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs deleted file mode 100644 index d7da171acdba..000000000000 --- a/runtime/rococo/src/lib.rs +++ /dev/null @@ -1,1321 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Rococo runtime for v1 parachains. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] - -use pallet_transaction_payment::CurrencyAdapter; -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use parity_scale_codec::{Encode, Decode}; -use primitives::v1::{ - AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, Signature, Moment, - GroupRotationInfo, CoreState, Id, ValidationCode, ValidationCodeHash, CandidateEvent, - ValidatorId, ValidatorIndex, CommittedCandidateReceipt, OccupiedCoreAssumption, - PersistedValidationData, InboundDownwardMessage, InboundHrmpMessage, - SessionInfo as SessionInfoData, -}; -use runtime_common::{ - mmr as mmr_common, - SlowAdjustingFeeUpdate, impls::ToAuthor, BlockHashCount, BlockWeights, BlockLength, RocksDbWeight, -}; -use runtime_parachains::{ - self, - runtime_api_impl::v1 as runtime_api_impl, -}; -use frame_support::{ - construct_runtime, parameter_types, - traits::{Filter, KeyOwnerProofSystem, Randomness, All, IsInVec, MaxEncodedLen}, - weights::Weight, - PalletId -}; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - ApplyExtrinsicResult, KeyTypeId, Perbill, - transaction_validity::{TransactionValidity, TransactionSource, TransactionPriority}, - traits::{ - self, Keccak256, BlakeTwo256, Block as BlockT, OpaqueKeys, AccountIdLookup, - Extrinsic as ExtrinsicT, SaturatedConversion, Verify, - }, -}; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; -#[cfg(any(feature = "std", test))] -use sp_version::NativeVersion; -use sp_version::RuntimeVersion; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use pallet_grandpa::{AuthorityId as GrandpaId, fg_primitives}; -use sp_core::{OpaqueMetadata, RuntimeDebug}; -use sp_staking::SessionIndex; -use pallet_session::historical as session_historical; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use pallet_mmr_primitives as mmr; -use frame_system::EnsureRoot; -use runtime_common::{paras_sudo_wrapper, paras_registrar, xcm_sender, auctions, crowdloan, slots}; - -use runtime_parachains::origin as parachains_origin; -use runtime_parachains::configuration as parachains_configuration; -use runtime_parachains::shared as parachains_shared; -use runtime_parachains::inclusion as parachains_inclusion; -use runtime_parachains::paras_inherent as parachains_paras_inherent; -use runtime_parachains::initializer as parachains_initializer; -use runtime_parachains::session_info as parachains_session_info; -use runtime_parachains::paras as parachains_paras; -use runtime_parachains::dmp as parachains_dmp; -use runtime_parachains::ump as parachains_ump; -use runtime_parachains::hrmp as parachains_hrmp; -use runtime_parachains::scheduler as parachains_scheduler; - -pub use pallet_balances::Call as BalancesCall; - -use polkadot_parachain::primitives::Id as ParaId; - -use xcm::v0::{Xcm, MultiLocation, NetworkId, BodyId}; -use xcm_executor::XcmExecutor; -use xcm_builder::{ - AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, - CurrencyAdapter as XcmCurrencyAdapter, ChildParachainAsNative, SignedAccountId32AsNative, - ChildSystemParachainAsSuperuser, LocationInverter, IsConcrete, FixedWeightBounds, - BackingToPlurality, SignedToAccountId32, UsingComponents, -}; -use constants::{time::*, currency::*, fee::*}; -use frame_support::traits::InstanceFilter; - -/// Constant values used within the runtime. -pub mod constants; -mod validator_manager; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -/// Runtime version (Rococo). -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("rococo"), - impl_name: create_runtime_str!("parity-rococo-v1.6"), - authoring_version: 0, - spec_version: 9004, - impl_version: 0, - #[cfg(not(feature = "disable-runtime-api"))] - apis: RUNTIME_API_VERSIONS, - #[cfg(feature = "disable-runtime-api")] - apis: sp_version::create_apis_vec![[]], - transaction_version: 0, -}; - -/// The BABE epoch configuration at genesis. -pub const BABE_GENESIS_EPOCH_CONFIG: babe_primitives::BabeEpochConfiguration = - babe_primitives::BabeEpochConfiguration { - c: PRIMARY_PROBABILITY, - allowed_slots: babe_primitives::AllowedSlots::PrimaryAndSecondaryVRFSlots - }; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -/// The address format for describing accounts. -pub type Address = sp_runtime::MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckMortality, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, -); - -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = frame_executive::Executive< - Runtime, - Block, - frame_system::ChainContext, - Runtime, - AllPallets, - GrandpaStoragePrefixMigration, ->; -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub im_online: ImOnline, - pub para_validator: Initializer, - pub para_assignment: SessionInfo, - pub authority_discovery: AuthorityDiscovery, - pub beefy: Beefy, - } -} - -construct_runtime! { - pub enum Runtime where - Block = Block, - NodeBlock = primitives::v1::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - System: frame_system::{Pallet, Call, Storage, Config, Event}, - - // Must be before session. - Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned}, - - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - - // Consensus support. - Authorship: pallet_authorship::{Pallet, Call, Storage}, - Offences: pallet_offences::{Pallet, Storage, Event}, - Historical: session_historical::{Pallet}, - Session: pallet_session::{Pallet, Call, Storage, Event, Config}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event, ValidateUnsigned}, - ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config}, - AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, - - // Parachains modules. - ParachainsOrigin: parachains_origin::{Pallet, Origin}, - ParachainsConfiguration: parachains_configuration::{Pallet, Call, Storage, Config}, - Shared: parachains_shared::{Pallet, Call, Storage}, - Inclusion: parachains_inclusion::{Pallet, Call, Storage, Event}, - ParasInherent: parachains_paras_inherent::{Pallet, Call, Storage, Inherent}, - Scheduler: parachains_scheduler::{Pallet, Call, Storage}, - Paras: parachains_paras::{Pallet, Call, Storage, Event, Config}, - Initializer: parachains_initializer::{Pallet, Call, Storage}, - Dmp: parachains_dmp::{Pallet, Call, Storage}, - Ump: parachains_ump::{Pallet, Call, Storage, Event}, - Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event, Config}, - SessionInfo: parachains_session_info::{Pallet, Call, Storage}, - - // Parachain Onboarding Pallets - Registrar: paras_registrar::{Pallet, Call, Storage, Event}, - Auctions: auctions::{Pallet, Call, Storage, Event}, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event}, - Slots: slots::{Pallet, Call, Storage, Event}, - ParasSudoWrapper: paras_sudo_wrapper::{Pallet, Call}, - - // Sudo - Sudo: pallet_sudo::{Pallet, Call, Storage, Event, Config}, - - // Bridges support. - Mmr: pallet_mmr::{Pallet, Call, Storage}, - Beefy: pallet_beefy::{Pallet, Config, Storage}, - MmrLeaf: mmr_common::{Pallet, Storage}, - - // It might seem strange that we add both sides of the bridge to the same runtime. We do this because this - // runtime as shared by both the Rococo and Wococo chains. When running as Rococo we only use - // `BridgeWococoGrandpa`, and vice versa. - BridgeRococoGrandpa: pallet_bridge_grandpa::{Pallet, Call, Storage, Config} = 40, - BridgeWococoGrandpa: pallet_bridge_grandpa::::{Pallet, Call, Storage, Config} = 41, - - // Validator Manager pallet. - ValidatorManager: validator_manager::{Pallet, Call, Storage, Event}, - - // A "council" - Collective: pallet_collective::{Pallet, Call, Storage, Origin, Event, Config} = 80, - Membership: pallet_membership::{Pallet, Call, Storage, Event, Config} = 81, - - Utility: pallet_utility::{Pallet, Call, Event} = 90, - Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 91, - - // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, - } -} - -pub struct GrandpaStoragePrefixMigration; -impl frame_support::traits::OnRuntimeUpgrade for GrandpaStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("grandpa is part of pallets in construct_runtime, so it has a name; qed"); - pallet_grandpa::migrations::v3_1::migrate::(name) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("grandpa is part of pallets in construct_runtime, so it has a name; qed"); - pallet_grandpa::migrations::v3_1::pre_migration::(name); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_grandpa::migrations::v3_1::post_migration::(); - Ok(()) - } -} - -pub struct BaseFilter; -impl Filter for BaseFilter { - fn filter(_call: &Call) -> bool { - true - } -} - -parameter_types! { - pub const Version: RuntimeVersion = VERSION; - pub const SS58Prefix: u8 = 42; -} - -impl frame_system::Config for Runtime { - type BaseCallFilter = BaseFilter; - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type DbWeight = RocksDbWeight; - type Origin = Origin; - type Call = Call; - type Index = Nonce; - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = AccountIdLookup; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = Version; - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = SS58Prefix; - type OnSetCode = (); -} - -parameter_types! { - pub const ValidationUpgradeFrequency: BlockNumber = 2 * DAYS; - pub const ValidationUpgradeDelay: BlockNumber = 8 * HOURS; - pub const SlashPeriod: BlockNumber = 7 * DAYS; -} - -/// Submits a transaction with the node's public and signature type. Adheres to the signed extension -/// format of the chain. -impl frame_system::offchain::CreateSignedTransaction for Runtime where - Call: From, -{ - fn create_transaction>( - call: Call, - public: ::Signer, - account: AccountId, - nonce: ::Index, - ) -> Option<(Call, ::SignaturePayload)> { - use sp_runtime::traits::StaticLookup; - // take the biggest period possible. - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - - let current_block = System::block_number() - .saturated_into::() - // The `System::block_number` is initialized with `n+1`, - // so the actual block number is `n`. - .saturating_sub(1); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckMortality::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - let raw_payload = SignedPayload::new(call, extra).map_err(|e| { - log::warn!("Unable to create signed payload: {:?}", e); - }).ok()?; - let signature = raw_payload.using_encoded(|payload| { - C::sign(payload, public) - })?; - let (call, extra, _) = raw_payload.deconstruct(); - let address = ::Lookup::unlookup(account); - Some((call, (address, signature, extra))) - } -} - -impl frame_system::offchain::SigningTypes for Runtime { - type Public = ::Signer; - type Signature = Signature; -} - -/// Special `FullIdentificationOf` implementation that is returning for every input `Some(Default::default())`. -pub struct FullIdentificationOf; -impl sp_runtime::traits::Convert> for FullIdentificationOf { - fn convert(_: AccountId) -> Option<()> { Some(Default::default()) } -} - -impl pallet_session::historical::Config for Runtime { - type FullIdentification = (); - type FullIdentificationOf = FullIdentificationOf; -} - -parameter_types! { - pub SessionDuration: BlockNumber = EpochDurationInBlocks::get() as _; -} - -parameter_types! { - pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); -} - -impl pallet_im_online::Config for Runtime { - type AuthorityId = ImOnlineId; - type Event = Event; - type ValidatorSet = Historical; - type NextSessionRotation = Babe; - type ReportUnresponsiveness = Offences; - type UnsignedPriority = ImOnlineUnsignedPriority; - type WeightInfo = (); -} - -parameter_types! { - pub const ExistentialDeposit: Balance = 1 * CENTS; - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); -} - -impl frame_system::offchain::SendTransactionTypes for Runtime where - Call: From, -{ - type OverarchingCall = Call; - type Extrinsic = UncheckedExtrinsic; -} - -parameter_types! { - pub const QueueSize: usize = 2; - pub const MaxRetries: u32 = 3; -} - -impl pallet_offences::Config for Runtime { - type Event = Event; - type IdentificationTuple = pallet_session::historical::IdentificationTuple; - type OnOffenceHandler = (); -} - -impl pallet_authority_discovery::Config for Runtime {} - -parameter_types! { - pub const MinimumPeriod: u64 = SLOT_DURATION / 2; -} -impl pallet_timestamp::Config for Runtime { - type Moment = u64; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; - type WeightInfo = (); -} - -parameter_types! { - pub const TransactionByteFee: Balance = 10 * MILLICENTS; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = CurrencyAdapter>; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = WeightToFee; - type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; -} - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} - -/// Special `ValidatorIdOf` implementation that is just returning the input as result. -pub struct ValidatorIdOf; -impl sp_runtime::traits::Convert> for ValidatorIdOf { - fn convert(a: AccountId) -> Option { Some(a) } -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = AccountId; - type ValidatorIdOf = ValidatorIdOf; - type ShouldEndSession = Babe; - type NextSessionRotation = Babe; - type SessionManager = pallet_session::historical::NoteHistoricalRoot; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type WeightInfo = (); -} - -parameter_types! { - pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; - pub ReportLongevity: u64 = EpochDurationInBlocks::get() as u64 * 10; -} - -impl pallet_babe::Config for Runtime { - type EpochDuration = EpochDurationInBlocks; - type ExpectedBlockTime = ExpectedBlockTime; - - // session module is the trigger - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - - type KeyOwnerProofSystem = Historical; - - type KeyOwnerProof = >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = - pallet_babe::EquivocationHandler; - - type WeightInfo = (); -} - -parameter_types! { - pub const IndexDeposit: Balance = 1 * DOLLARS; -} - -impl pallet_indices::Config for Runtime { - type AccountIndex = AccountIndex; - type Currency = Balances; - type Deposit = IndexDeposit; - type Event = Event; - type WeightInfo = (); -} - -parameter_types! { - pub const AttestationPeriod: BlockNumber = 50; -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - - type KeyOwnerProofSystem = Historical; - - type KeyOwnerProof = - >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = - pallet_grandpa::EquivocationHandler; - - type WeightInfo = (); -} - -parameter_types! { - pub const UncleGenerations: u32 = 0; -} - -impl pallet_authorship::Config for Runtime { - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = ImOnline; -} - -impl parachains_origin::Config for Runtime {} - -impl parachains_configuration::Config for Runtime {} - -impl parachains_shared::Config for Runtime {} - -/// Special `RewardValidators` that does nothing ;) -pub struct RewardValidators; -impl runtime_parachains::inclusion::RewardValidators for RewardValidators { - fn reward_backing(_: impl IntoIterator) {} - fn reward_bitfields(_: impl IntoIterator) {} -} - -impl parachains_inclusion::Config for Runtime { - type Event = Event; - type RewardValidators = RewardValidators; -} - -impl parachains_paras::Config for Runtime { - type Origin = Origin; - type Event = Event; -} - -parameter_types! { - pub const RocLocation: MultiLocation = MultiLocation::Null; - pub const RococoNetwork: NetworkId = NetworkId::Polkadot; - pub const Ancestry: MultiLocation = MultiLocation::Null; - pub CheckAccount: AccountId = XcmPallet::check_account(); -} - -pub type SovereignAccountOf = ( - ChildParachainConvertsVia, - AccountId32Aliases, -); - -pub type LocalAssetTransactor = - XcmCurrencyAdapter< - // Use this currency: - Balances, - // Use this currency when it is a fungible asset matching the given location or name: - IsConcrete, - // We can convert the MultiLocations with our converter above: - SovereignAccountOf, - // Our chain's account ID type (we can't get away without mentioning it explicitly): - AccountId, - // It's a native asset so we keep track of the teleports to maintain total issuance. - CheckAccount, - >; - -type LocalOriginConverter = ( - SovereignSignedViaLocation, - ChildParachainAsNative, - SignedAccountId32AsNative, - ChildSystemParachainAsSuperuser, -); - -parameter_types! { - pub const BaseXcmWeight: Weight = 100_000; -} - -/// The XCM router. When we want to send an XCM message, we use this type. It amalgamates all of our -/// individual routers. -pub type XcmRouter = ( - // Only one router so far - use DMP to communicate with child parachains. - xcm_sender::ChildParachainRouter, -); - -use xcm::v0::{MultiAsset, MultiAsset::AllConcreteFungible, MultiLocation::{Null, X1}, Junction::Parachain}; -parameter_types! { - pub const RococoForTick: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(100))); - pub const RococoForTrick: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(110))); - pub const RococoForTrack: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(120))); - pub const RococoForStatemint: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(1001))); -} -pub type TrustedTeleporters = ( - xcm_builder::Case, - xcm_builder::Case, - xcm_builder::Case, - xcm_builder::Case, -); - -parameter_types! { - pub AllowUnpaidFrom: Vec = - vec![ - X1(Parachain(100)), - X1(Parachain(110)), - X1(Parachain(120)), - X1(Parachain(1001)) - ]; -} - -use xcm_builder::{TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom}; -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom>, - AllowUnpaidExecutionFrom>, // <- Trusted parachains get free execution -); - -pub struct XcmConfig; -impl xcm_executor::Config for XcmConfig { - type Call = Call; - type XcmSender = XcmRouter; - type AssetTransactor = LocalAssetTransactor; - type OriginConverter = LocalOriginConverter; - type IsReserve = (); - type IsTeleporter = TrustedTeleporters; - type LocationInverter = LocationInverter; - type Barrier = Barrier; - type Weigher = FixedWeightBounds; - type Trader = UsingComponents>; - type ResponseHandler = (); -} - -parameter_types! { - pub const CollectiveBodyId: BodyId = BodyId::Unit; -} - -/// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location -/// of this chain. -pub type LocalOriginToLocation = ( - // We allow an origin from the Collective pallet to be used in XCM as a corresponding Plurality of the - // `Unit` body. - BackingToPlurality, CollectiveBodyId>, - // And a usual Signed origin to be used in XCM as a corresponding AccountId32 - SignedToAccountId32, -); - -pub struct OnlyWithdrawTeleportForAccounts; -impl frame_support::traits::Contains<(MultiLocation, Xcm)> for OnlyWithdrawTeleportForAccounts { - fn contains((ref origin, ref msg): &(MultiLocation, Xcm)) -> bool { - use xcm::v0::{ - Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset}, - MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Plurality}, - }; - match origin { - // Root and collective are allowed to execute anything. - Null | X1(Plurality { .. }) => true, - X1(AccountId32 { .. }) => { - // An account ID trying to send a message. We ensure that it's sensible. - // This checks that it's of the form: - // WithdrawAsset { - // assets: [ ConcreteFungible { id: Null } ], - // effects: [ BuyExecution, InitiateTeleport { - // assets: All, - // dest: Parachain, - // effects: [ BuyExecution, DepositAssets { - // assets: All, - // dest: AccountId32, - // } ] - // } ] - // } - matches!(msg, WithdrawAsset { ref assets, ref effects } - if assets.len() == 1 - && matches!(assets[0], ConcreteFungible { id: Null, .. }) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], InitiateTeleport { ref assets, dest: X1(Parachain(..)), ref effects } - if assets.len() == 1 - && matches!(assets[0], All) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], DepositAsset { ref assets, dest: X1(AccountId32{..}) } - if assets.len() == 1 - && matches!(assets[0], All) - ) - ) - ) - } - // Nobody else is allowed to execute anything. - _ => false, - } - } -} - -impl pallet_xcm::Config for Runtime { - type Event = Event; - type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; - type XcmRouter = XcmRouter; - // Anyone can execute XCM messages locally... - type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin; - // ...but they must match our filter, which requires them to be a simple withdraw + teleport. - type XcmExecuteFilter = OnlyWithdrawTeleportForAccounts; - type XcmExecutor = XcmExecutor; - type XcmTeleportFilter = All<(MultiLocation, Vec)>; - type XcmReserveTransferFilter = All<(MultiLocation, Vec)>; - type Weigher = FixedWeightBounds; -} - -impl parachains_session_info::Config for Runtime {} - -parameter_types! { - pub const FirstMessageFactorPercent: u64 = 100; -} - -impl parachains_ump::Config for Runtime { - type Event = Event; - type UmpSink = crate::parachains_ump::XcmSink, Runtime>; - type FirstMessageFactorPercent = FirstMessageFactorPercent; -} - -impl parachains_dmp::Config for Runtime {} - -impl parachains_hrmp::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; -} - -impl parachains_paras_inherent::Config for Runtime {} - -impl parachains_scheduler::Config for Runtime {} - -impl parachains_initializer::Config for Runtime { - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type ForceOrigin = EnsureRoot; -} - -impl paras_sudo_wrapper::Config for Runtime {} - -parameter_types! { - pub const ParaDeposit: Balance = 5 * DOLLARS; - pub const DataDepositPerByte: Balance = deposit(0, 1); -} - -impl paras_registrar::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type OnSwap = (Crowdloan, Slots); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type WeightInfo = paras_registrar::TestWeightInfo; -} - -/// An insecure randomness beacon that uses the parent block hash as random material. -/// -/// THIS SHOULD ONLY BE USED FOR TESTING PURPOSES. -pub struct ParentHashRandomness; - -impl pallet_beefy::Config for Runtime { - type BeefyId = BeefyId; -} - -impl pallet_mmr::Config for Runtime { - const INDEXING_PREFIX: &'static [u8] = b"mmr"; - type Hashing = Keccak256; - type Hash = ::Output; - type OnNewRoot = mmr_common::DepositBeefyDigest; - type WeightInfo = (); - type LeafData = mmr_common::Pallet; -} - -impl mmr_common::Config for Runtime { - type BeefyAuthorityToMerkleLeaf = mmr_common::UncompressBeefyEcdsaKeys; - type ParachainHeads = Paras; -} - -parameter_types! { - // This is a pretty unscientific cap. - // - // Note that once this is hit the pallet will essentially throttle incoming requests down to one - // call per block. - pub const MaxRequests: u32 = 4 * HOURS as u32; - - // Number of headers to keep. - // - // Assuming the worst case of every header being finalized, we will keep headers at least for a - // week. - pub const HeadersToKeep: u32 = 7 * DAYS as u32; -} - -pub type RococoGrandpaInstance = (); -impl pallet_bridge_grandpa::Config for Runtime { - type BridgedChain = bp_rococo::Rococo; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - - type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; -} - -pub type WococoGrandpaInstance = pallet_bridge_grandpa::Instance1; -impl pallet_bridge_grandpa::Config for Runtime { - type BridgedChain = bp_wococo::Wococo; - type MaxRequests = MaxRequests; - type HeadersToKeep = HeadersToKeep; - - type WeightInfo = pallet_bridge_grandpa::weights::RialtoWeight; -} - -impl Randomness for ParentHashRandomness { - fn random(subject: &[u8]) -> (Hash, BlockNumber) { - ( - (System::parent_hash(), subject).using_encoded(sp_io::hashing::blake2_256).into(), - System::block_number(), - ) - } -} - -parameter_types! { - pub const EndingPeriod: BlockNumber = 1 * HOURS; - pub const SampleLength: BlockNumber = 1; -} - -impl auctions::Config for Runtime { - type Event = Event; - type Leaser = Slots; - type Registrar = Registrar; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = ParentHashRandomness; - type InitiateOrigin = EnsureRoot; - type WeightInfo = auctions::TestWeightInfo; -} - -parameter_types! { - pub const LeasePeriod: BlockNumber = 1 * DAYS; -} - -impl slots::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Registrar = Registrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = slots::TestWeightInfo; -} - -parameter_types! { - pub const CrowdloanId: PalletId = PalletId(*b"py/cfund"); - pub const SubmissionDeposit: Balance = 100 * DOLLARS; - pub const MinContribution: Balance = 1 * DOLLARS; - pub const RemoveKeysLimit: u32 = 500; - // Allow 32 bytes for an additional memo to a crowdloan. - pub const MaxMemoLength: u8 = 32; -} - -impl crowdloan::Config for Runtime { - type Event = Event; - type PalletId = CrowdloanId; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = Registrar; - type Auctioneer = Auctions; - type MaxMemoLength = MaxMemoLength; - type WeightInfo = crowdloan::TestWeightInfo; -} - -impl pallet_sudo::Config for Runtime { - type Event = Event; - type Call = Call; -} - -impl validator_manager::Config for Runtime { - type Event = Event; - type PrivilegedOrigin = EnsureRoot; -} - -impl pallet_utility::Config for Runtime { - type Event = Event; - type Call = Call; - type WeightInfo = (); -} - -parameter_types! { - // One storage item; key size 32, value size 8; . - pub const ProxyDepositBase: Balance = 10; - // Additional storage item size of 33 bytes. - pub const ProxyDepositFactor: Balance = 10; - pub const MaxProxies: u16 = 32; - pub const AnnouncementDepositBase: Balance = 10; - pub const AnnouncementDepositFactor: Balance = 10; - pub const MaxPending: u16 = 32; -} - -/// The type used to represent the kinds of proxying allowed. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen)] -pub enum ProxyType { - Any, - CancelProxy, -} -impl Default for ProxyType { fn default() -> Self { Self::Any } } -impl InstanceFilter for ProxyType { - fn filter(&self, c: &Call) -> bool { - match self { - ProxyType::Any => true, - ProxyType::CancelProxy => matches!(c, - Call::Proxy(pallet_proxy::Call::reject_announcement(..)) - ) - } - } - fn is_superset(&self, o: &Self) -> bool { - match (self, o) { - (ProxyType::Any, _) => true, - _ => false, - } - } -} - -impl pallet_proxy::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ProxyType = ProxyType; - type ProxyDepositBase = ProxyDepositBase; - type ProxyDepositFactor = ProxyDepositFactor; - type MaxProxies = MaxProxies; - type WeightInfo = (); - type MaxPending = MaxPending; - type CallHasher = BlakeTwo256; - type AnnouncementDepositBase = AnnouncementDepositBase; - type AnnouncementDepositFactor = AnnouncementDepositFactor; -} - -parameter_types! { - pub const MotionDuration: BlockNumber = 5; - pub const MaxProposals: u32 = 100; - pub const MaxMembers: u32 = 100; -} - -impl pallet_collective::Config for Runtime { - type Origin = Origin; - type Proposal = Call; - type Event = Event; - type MotionDuration = MotionDuration; - type MaxProposals = MaxProposals; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type MaxMembers = MaxMembers; - type WeightInfo = (); -} - -impl pallet_membership::Config for Runtime { - type Event = Event; - type AddOrigin = EnsureRoot; - type RemoveOrigin = EnsureRoot; - type SwapOrigin = EnsureRoot; - type ResetOrigin = EnsureRoot; - type PrimeOrigin = EnsureRoot; - type MembershipInitialized = Collective; - type MembershipChanged = Collective; - type MaxMembers = MaxMembers; - type WeightInfo = (); -} - -#[cfg(not(feature = "disable-runtime-api"))] -sp_api::impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: inherents::InherentData, - ) -> inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl tx_pool_api::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl primitives::v1::ParachainHost for Runtime { - fn validators() -> Vec { - runtime_api_impl::validators::() - } - - fn validator_groups() -> (Vec>, GroupRotationInfo) { - runtime_api_impl::validator_groups::() - } - - fn availability_cores() -> Vec> { - runtime_api_impl::availability_cores::() - } - - fn persisted_validation_data(para_id: Id, assumption: OccupiedCoreAssumption) - -> Option> { - runtime_api_impl::persisted_validation_data::(para_id, assumption) - } - - fn check_validation_outputs( - para_id: Id, - outputs: primitives::v1::CandidateCommitments, - ) -> bool { - runtime_api_impl::check_validation_outputs::(para_id, outputs) - } - - fn session_index_for_child() -> SessionIndex { - runtime_api_impl::session_index_for_child::() - } - - fn validation_code(para_id: Id, assumption: OccupiedCoreAssumption) - -> Option { - runtime_api_impl::validation_code::(para_id, assumption) - } - - fn candidate_pending_availability(para_id: Id) -> Option> { - runtime_api_impl::candidate_pending_availability::(para_id) - } - - fn candidate_events() -> Vec> { - runtime_api_impl::candidate_events::(|ev| { - match ev { - Event::Inclusion(ev) => { - Some(ev) - } - _ => None, - } - }) - } - - fn session_info(index: SessionIndex) -> Option { - runtime_api_impl::session_info::(index) - } - - fn dmq_contents(recipient: Id) -> Vec> { - runtime_api_impl::dmq_contents::(recipient) - } - - fn inbound_hrmp_channels_contents( - recipient: Id - ) -> BTreeMap>> { - runtime_api_impl::inbound_hrmp_channels_contents::(recipient) - } - - fn validation_code_by_hash(hash: ValidationCodeHash) -> Option { - runtime_api_impl::validation_code_by_hash::(hash) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - sp_runtime::traits::NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - authority_id: fg_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((fg_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(fg_primitives::OpaqueKeyOwnershipProof::new) - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDurationInBlocks::get().into(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } - - fn current_epoch_start() -> babe_primitives::Slot { - Babe::current_epoch_start() - } - - fn current_epoch() -> babe_primitives::Epoch { - Babe::current_epoch() - } - - fn next_epoch() -> babe_primitives::Epoch { - Babe::next_epoch() - } - - fn generate_key_ownership_proof( - _slot: babe_primitives::Slot, - authority_id: babe_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((babe_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(babe_primitives::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: babe_primitives::EquivocationProof<::Header>, - key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Babe::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - } - - impl authority_discovery_primitives::AuthorityDiscoveryApi for Runtime { - fn authorities() -> Vec { - runtime_api_impl::relevant_authority_ids::() - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl beefy_primitives::BeefyApi for Runtime { - fn validator_set() -> beefy_primitives::ValidatorSet { - Beefy::validator_set() - } - } - - impl pallet_mmr_primitives::MmrApi for Runtime { - fn generate_proof(leaf_index: u64) - -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof), mmr::Error> - { - Mmr::generate_proof(leaf_index) - .map(|(leaf, proof)| (mmr::EncodableOpaqueLeaf::from_leaf(&leaf), proof)) - } - - fn verify_proof(leaf: mmr::EncodableOpaqueLeaf, proof: mmr::Proof) - -> Result<(), mmr::Error> - { - pub type Leaf = < - ::LeafData as mmr::LeafDataProvider - >::LeafData; - - let leaf: Leaf = leaf - .into_opaque_leaf() - .try_decode() - .ok_or(mmr::Error::Verify)?; - Mmr::verify_leaf(leaf, proof) - } - - fn verify_proof_stateless( - root: Hash, - leaf: mmr::EncodableOpaqueLeaf, - proof: mmr::Proof - ) -> Result<(), mmr::Error> { - type MmrHashing = ::Hashing; - let node = mmr::DataOrHash::Data(leaf.into_opaque_leaf()); - pallet_mmr::verify_leaf_proof::(root, node, proof) - } - } - - impl bp_rococo::RococoFinalityApi for Runtime { - fn best_finalized() -> (bp_rococo::BlockNumber, bp_rococo::Hash) { - let header = BridgeRococoGrandpa::best_finalized(); - (header.number, header.hash()) - } - - fn is_known_header(hash: bp_rococo::Hash) -> bool { - BridgeRococoGrandpa::is_known_header(hash) - } - } - - impl bp_wococo::WococoFinalityApi for Runtime { - fn best_finalized() -> (bp_wococo::BlockNumber, bp_wococo::Hash) { - let header = BridgeWococoGrandpa::best_finalized(); - (header.number, header.hash()) - } - - fn is_known_header(hash: bp_wococo::Hash) -> bool { - BridgeWococoGrandpa::is_known_header(hash) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Nonce { - System::account_nonce(account) - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } -} diff --git a/runtime/rococo/src/validator_manager.rs b/runtime/rococo/src/validator_manager.rs deleted file mode 100644 index 194dcbe35808..000000000000 --- a/runtime/rococo/src/validator_manager.rs +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! A pallet for managing validators on Rococo. - -use frame_support::{ - decl_event, decl_error, decl_module, decl_storage, - traits::EnsureOrigin, -}; -use sp_staking::SessionIndex; -use sp_std::vec::Vec; - -type Session = pallet_session::Module; - -/// Configuration for the parachain proposer. -pub trait Config: pallet_session::Config { - /// The overreaching event type. - type Event: From> + Into<::Event>; - - /// Privileged origin that can add or remove validators. - type PrivilegedOrigin: EnsureOrigin<::Origin>; -} - -decl_event! { - pub enum Event where ValidatorId = ::ValidatorId { - /// New validators were added to the set. - ValidatorsRegistered(Vec), - /// Validators were removed from the set. - ValidatorsDeregistered(Vec), - } -} - -decl_error! { - pub enum Error for Module {} -} - -decl_storage! { - trait Store for Module as ParachainProposer { - /// Validators that should be retired, because their Parachain was deregistered. - ValidatorsToRetire: Vec; - /// Validators that should be added. - ValidatorsToAdd: Vec; - } -} - -decl_module! { - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; - - fn deposit_event() = default; - - /// Add new validators to the set. - /// - /// The new validators will be active from current session + 2. - #[weight = 100_000] - fn register_validators( - origin, - validators: Vec, - ) { - T::PrivilegedOrigin::ensure_origin(origin)?; - - validators.clone().into_iter().for_each(|v| ValidatorsToAdd::::append(v)); - - Self::deposit_event(RawEvent::ValidatorsRegistered(validators)); - } - - /// Remove validators from the set. - /// - /// The removed validators will be deactivated from current session + 2. - #[weight = 100_000] - fn deregister_validators( - origin, - validators: Vec, - ) { - T::PrivilegedOrigin::ensure_origin(origin)?; - - validators.clone().into_iter().for_each(|v| ValidatorsToRetire::::append(v)); - - Self::deposit_event(RawEvent::ValidatorsDeregistered(validators)); - } - } -} - -impl Module {} - -impl pallet_session::SessionManager for Module { - fn new_session(new_index: SessionIndex) -> Option> { - if new_index <= 1 { - return None; - } - - let mut validators = Session::::validators(); - - ValidatorsToRetire::::take().iter().for_each(|v| { - if let Some(pos) = validators.iter().position(|r| r == v) { - validators.swap_remove(pos); - } - }); - - ValidatorsToAdd::::take().into_iter().for_each(|v| { - if !validators.contains(&v) { - validators.push(v); - } - }); - - Some(validators) - } - - fn end_session(_: SessionIndex) {} - - fn start_session(_start_index: SessionIndex) {} -} - -impl pallet_session::historical::SessionManager for Module { - fn new_session( - new_index: SessionIndex, - ) -> Option> { - >::new_session(new_index) - .map(|r| r.into_iter().map(|v| (v, Default::default())).collect()) - } - - fn start_session(start_index: SessionIndex) { - >::start_session(start_index) - } - - fn end_session(end_index: SessionIndex) { - >::end_session(end_index) - } -} diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml deleted file mode 100644 index 00b9c184bed1..000000000000 --- a/runtime/test-runtime/Cargo.toml +++ /dev/null @@ -1,119 +0,0 @@ -[package] -name = "polkadot-test-runtime" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.14", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -smallvec = "1.6.1" - -authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-nicks = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -polkadot-parachain = { path = "../../parachain", default-features = false } -polkadot-runtime-parachains = { path = "../parachains", default-features = false } - -[dev-dependencies] -hex-literal = "0.3.1" -libsecp256k1 = "0.3.5" -tiny-keccak = "2.0.2" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.61" - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = ["std"] -no_std = [] -only-staking = [] -std = [ - "authority-discovery-primitives/std", - "pallet-authority-discovery/std", - "bitvec/std", - "primitives/std", - "rustc-hex/std", - "parity-scale-codec/std", - "inherents/std", - "sp-core/std", - "polkadot-parachain/std", - "sp-api/std", - "tx-pool-api/std", - "block-builder-api/std", - "offchain-primitives/std", - "sp-std/std", - "sp-io/std", - "frame-support/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-transaction-payment/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "frame-executive/std", - "pallet-grandpa/std", - "pallet-indices/std", - "pallet-nicks/std", - "pallet-offences/std", - "sp-runtime/std", - "sp-staking/std", - "pallet-session/std", - "pallet-staking/std", - "frame-system/std", - "frame-system-rpc-runtime-api/std", - "pallet-timestamp/std", - "sp-version/std", - "pallet-vesting/std", - "serde_derive", - "serde/std", - "pallet-babe/std", - "babe-primitives/std", - "sp-session/std", - "runtime-common/std", - "log/std", - "frame-election-provider-support/std", -] diff --git a/runtime/test-runtime/build.rs b/runtime/test-runtime/build.rs deleted file mode 100644 index a75ebb4edbe1..000000000000 --- a/runtime/test-runtime/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .import_memory() - .export_heap_base() - .build() -} diff --git a/runtime/test-runtime/src/constants.rs b/runtime/test-runtime/src/constants.rs deleted file mode 100644 index 658a4bdca7a0..000000000000 --- a/runtime/test-runtime/src/constants.rs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// Money matters. -pub mod currency { - use primitives::v0::Balance; - - pub const DOTS: Balance = 1_000_000_000_000; - pub const DOLLARS: Balance = DOTS; - pub const CENTS: Balance = DOLLARS / 100; - pub const MILLICENTS: Balance = CENTS / 1_000; -} - -/// Time and blocks. -pub mod time { - use primitives::v0::{Moment, BlockNumber}; - // Testnet - pub const MILLISECS_PER_BLOCK: Moment = 6000; - pub const SLOT_DURATION: Moment = MILLISECS_PER_BLOCK; - // 30 seconds for now - pub const EPOCH_DURATION_IN_SLOTS: BlockNumber = MINUTES / 2; - - // These time units are defined in number of blocks. - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; - - // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. - pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); -} - -/// Fee-related. -pub mod fee { - pub use sp_runtime::Perbill; - use primitives::v0::Balance; - use runtime_common::ExtrinsicBaseWeight; - use frame_support::weights::{ - WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, - }; - use smallvec::smallvec; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); - - /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the - /// node's balance type. - /// - /// This should typically create a mapping between the following ranges: - /// - [0, frame_system::MaximumBlockWeight] - /// - [Balance::min, Balance::max] - /// - /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: - /// - Setting it to `0` will essentially disable the weight fee. - /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. - pub struct WeightToFee; - impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - let p = super::currency::CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } - } -} diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs deleted file mode 100644 index 2646e189d918..000000000000 --- a/runtime/test-runtime/src/lib.rs +++ /dev/null @@ -1,838 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Polkadot runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] - -use pallet_transaction_payment::CurrencyAdapter; -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use parity_scale_codec::Encode; - -use polkadot_runtime_parachains::configuration as parachains_configuration; -use polkadot_runtime_parachains::shared as parachains_shared; -use polkadot_runtime_parachains::inclusion as parachains_inclusion; -use polkadot_runtime_parachains::paras_inherent as parachains_paras_inherent; -use polkadot_runtime_parachains::initializer as parachains_initializer; -use polkadot_runtime_parachains::session_info as parachains_session_info; -use polkadot_runtime_parachains::paras as parachains_paras; -use polkadot_runtime_parachains::dmp as parachains_dmp; -use polkadot_runtime_parachains::ump as parachains_ump; -use polkadot_runtime_parachains::hrmp as parachains_hrmp; -use polkadot_runtime_parachains::scheduler as parachains_scheduler; -use polkadot_runtime_parachains::runtime_api_impl::v1 as runtime_impl; - -use primitives::v1::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CommittedCandidateReceipt, - CoreState, GroupRotationInfo, Hash as HashT, Id as ParaId, Moment, Nonce, OccupiedCoreAssumption, - PersistedValidationData, Signature, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, - InboundDownwardMessage, InboundHrmpMessage, SessionInfo as SessionInfoData, -}; -use runtime_common::{ - claims, SlowAdjustingFeeUpdate, paras_sudo_wrapper, - BlockHashCount, BlockWeights, BlockLength, -}; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - ApplyExtrinsicResult, Perbill, KeyTypeId, - transaction_validity::{TransactionValidity, TransactionSource}, - curve::PiecewiseLinear, - traits::{ - BlakeTwo256, Block as BlockT, StaticLookup, OpaqueKeys, ConvertInto, - Extrinsic as ExtrinsicT, SaturatedConversion, Verify, - }, -}; -use sp_version::RuntimeVersion; -use pallet_grandpa::{AuthorityId as GrandpaId, fg_primitives}; -#[cfg(any(feature = "std", test))] -use sp_version::NativeVersion; -use sp_core::OpaqueMetadata; -use sp_staking::SessionIndex; -use frame_support::{parameter_types, construct_runtime, traits::KeyOwnerProofSystem}; -use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use pallet_session::historical as session_historical; -use polkadot_runtime_parachains::reward_points::RewardValidatorsWithEraPoints; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use pallet_mmr_primitives as mmr; - -#[cfg(feature = "std")] -pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use pallet_timestamp::Call as TimestampCall; -pub use pallet_balances::Call as BalancesCall; -pub use paras_sudo_wrapper::Call as ParasSudoWrapperCall; -pub use pallet_sudo::Call as SudoCall; - -/// Constant values used within the runtime. -pub mod constants; -use constants::{time::*, currency::*, fee::*}; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -/// Runtime version (Test). -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("polkadot-test-runtime"), - impl_name: create_runtime_str!("parity-polkadot-test-runtime"), - authoring_version: 2, - spec_version: 1056, - impl_version: 0, - apis: RUNTIME_API_VERSIONS, - transaction_version: 1, -}; - -/// The BABE epoch configuration at genesis. -pub const BABE_GENESIS_EPOCH_CONFIG: babe_primitives::BabeEpochConfiguration = - babe_primitives::BabeEpochConfiguration { - c: PRIMARY_PROBABILITY, - allowed_slots: babe_primitives::AllowedSlots::PrimaryAndSecondaryVRFSlots - }; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -sp_api::decl_runtime_apis! { - pub trait GetLastTimestamp { - /// Returns the last timestamp of a runtime. - fn get_last_timestamp() -> u64; - } -} - -parameter_types! { - pub const Version: RuntimeVersion = VERSION; - pub const SS58Prefix: u8 = 42; -} - -impl frame_system::Config for Runtime { - type BaseCallFilter = (); - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type DbWeight = (); - type Origin = Origin; - type Call = Call; - type Index = Nonce; - type BlockNumber = BlockNumber; - type Hash = HashT; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = Indices; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type Version = Version; - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = SS58Prefix; - type OnSetCode = (); -} - -impl frame_system::offchain::SendTransactionTypes for Runtime where - Call: From, -{ - type OverarchingCall = Call; - type Extrinsic = UncheckedExtrinsic; -} - -parameter_types! { - pub storage EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS as u64; - pub storage ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; -} - -impl pallet_babe::Config for Runtime { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - - // session module is the trigger - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - - type KeyOwnerProofSystem = (); - - type KeyOwnerProof = >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = (); - - type WeightInfo = (); -} - -parameter_types! { - pub storage IndexDeposit: Balance = 1 * DOLLARS; -} - -impl pallet_indices::Config for Runtime { - type AccountIndex = AccountIndex; - type Currency = Balances; - type Deposit = IndexDeposit; - type Event = Event; - type WeightInfo = (); -} - -parameter_types! { - pub storage ExistentialDeposit: Balance = 1 * CENTS; - pub storage MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); -} - -parameter_types! { - pub storage TransactionByteFee: Balance = 10 * MILLICENTS; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = CurrencyAdapter; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = WeightToFee; - type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; -} - -parameter_types! { - pub storage SlotDuration: u64 = SLOT_DURATION; - pub storage MinimumPeriod: u64 = SlotDuration::get() / 2; -} -impl pallet_timestamp::Config for Runtime { - type Moment = u64; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; - type WeightInfo = (); -} - -parameter_types! { - pub storage UncleGenerations: u32 = 0; -} - -impl pallet_authorship::Config for Runtime { - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = Staking; -} - -parameter_types! { - pub storage Period: BlockNumber = 10 * MINUTES; - pub storage Offset: BlockNumber = 0; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub para_validator: Initializer, - pub para_assignment: SessionInfo, - pub authority_discovery: AuthorityDiscovery, - } -} - -parameter_types! { - pub storage DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = AccountId; - type ValidatorIdOf = pallet_staking::StashOf; - type ShouldEndSession = Babe; - type NextSessionRotation = Babe; - type SessionManager = Staking; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type WeightInfo = (); -} - -impl pallet_session::historical::Config for Runtime { - type FullIdentification = pallet_staking::Exposure; - type FullIdentificationOf = pallet_staking::ExposureOf; -} - -pallet_staking_reward_curve::build! { - const REWARD_CURVE: PiecewiseLinear<'static> = curve!( - min_inflation: 0_025_000, - max_inflation: 0_100_000, - ideal_stake: 0_500_000, - falloff: 0_050_000, - max_piece_count: 40, - test_precision: 0_005_000, - ); -} - -parameter_types! { - // Six sessions in an era (6 hours). - pub storage SessionsPerEra: SessionIndex = 6; - // 28 eras for unbonding (7 days). - pub storage BondingDuration: pallet_staking::EraIndex = 28; - // 27 eras in which slashes can be cancelled (a bit less than 7 days). - pub storage SlashDeferDuration: pallet_staking::EraIndex = 27; - pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; - pub storage MaxNominatorRewardedPerValidator: u32 = 64; -} - -impl frame_election_provider_support::onchain::Config for Runtime { - type AccountId = ::AccountId; - type BlockNumber = ::BlockNumber; - type BlockWeights = (); - type Accuracy = sp_runtime::Perbill; - type DataProvider = Staking; -} - -impl pallet_staking::Config for Runtime { - const MAX_NOMINATIONS: u32 = 16; - type Currency = Balances; - type UnixTime = Timestamp; - type CurrencyToVote = frame_support::traits::U128CurrencyToVote; - type RewardRemainder = (); - type Event = Event; - type Slash = (); - type Reward = (); - type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; - type SlashDeferDuration = SlashDeferDuration; - // A majority of the council can cancel the slash. - type SlashCancelOrigin = frame_system::EnsureNever<()>; - type SessionInterface = Self; - type EraPayout = pallet_staking::ConvertCurve; - type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; - type NextNewSession = Session; - type ElectionProvider = frame_election_provider_support::onchain::OnChainSequentialPhragmen; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen; - type WeightInfo = (); -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - - type KeyOwnerProofSystem = (); - - type KeyOwnerProof = - >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = (); - - type WeightInfo = (); -} - -impl frame_system::offchain::CreateSignedTransaction for Runtime where - Call: From, -{ - fn create_transaction>( - call: Call, - public: ::Signer, - account: AccountId, - nonce: ::Index, - ) -> Option<(Call, ::SignaturePayload)> { - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - - let current_block = System::block_number() - .saturated_into::() - .saturating_sub(1); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckMortality::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - let raw_payload = SignedPayload::new(call, extra).map_err(|e| { - log::warn!("Unable to create signed payload: {:?}", e); - }).ok()?; - let signature = raw_payload.using_encoded(|payload| { - C::sign(payload, public) - })?; - let (call, extra, _) = raw_payload.deconstruct(); - let address = Indices::unlookup(account); - Some((call, (address, signature, extra))) - } -} - -impl frame_system::offchain::SigningTypes for Runtime { - type Public = ::Signer; - type Signature = Signature; -} - -impl pallet_offences::Config for Runtime { - type Event = Event; - type IdentificationTuple = pallet_session::historical::IdentificationTuple; - type OnOffenceHandler = Staking; -} - -impl pallet_authority_discovery::Config for Runtime {} - -parameter_types! { - pub storage LeasePeriod: BlockNumber = 100_000; - pub storage EndingPeriod: BlockNumber = 1000; -} - -parameter_types! { - pub Prefix: &'static [u8] = b"Pay KSMs to the Kusama account:"; -} - -impl claims::Config for Runtime { - type Event = Event; - type VestingSchedule = Vesting; - type Prefix = Prefix; - type MoveClaimOrigin = frame_system::EnsureRoot; - type WeightInfo = claims::TestWeightInfo; -} - -parameter_types! { - pub storage MinVestedTransfer: Balance = 100 * DOLLARS; -} - -impl pallet_vesting::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = ConvertInto; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = (); -} - -impl pallet_sudo::Config for Runtime { - type Event = Event; - type Call = Call; -} - -impl parachains_configuration::Config for Runtime {} - -impl parachains_shared::Config for Runtime {} - -impl parachains_inclusion::Config for Runtime { - type Event = Event; - type RewardValidators = RewardValidatorsWithEraPoints; -} - -impl parachains_paras_inherent::Config for Runtime {} - -impl parachains_initializer::Config for Runtime { - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type ForceOrigin = frame_system::EnsureRoot; -} - -impl parachains_session_info::Config for Runtime {} - -impl parachains_paras::Config for Runtime { - type Origin = Origin; - type Event = Event; -} - -impl parachains_dmp::Config for Runtime {} - -parameter_types! { - pub const FirstMessageFactorPercent: u64 = 100; -} - -impl parachains_ump::Config for Runtime { - type Event = Event; - type UmpSink = (); - type FirstMessageFactorPercent = FirstMessageFactorPercent; -} - -impl parachains_hrmp::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; -} - -impl parachains_scheduler::Config for Runtime {} - -impl paras_sudo_wrapper::Config for Runtime {} - -construct_runtime! { - pub enum Runtime where - Block = Block, - NodeBlock = primitives::v1::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - // Basic stuff; balances is uncallable initially. - System: frame_system::{Pallet, Call, Storage, Config, Event}, - - // Must be before session. - Babe: pallet_babe::{Pallet, Call, Storage, Config}, - - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Indices: pallet_indices::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - - // Consensus support. - Authorship: pallet_authorship::{Pallet, Call, Storage}, - Staking: pallet_staking::{Pallet, Call, Storage, Config, Event}, - Offences: pallet_offences::{Pallet, Storage, Event}, - Historical: session_historical::{Pallet}, - Session: pallet_session::{Pallet, Call, Storage, Event, Config}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config}, - - // Claims. Usable initially. - Claims: claims::{Pallet, Call, Storage, Event, Config, ValidateUnsigned}, - - // Vesting. Usable initially, but removed once all vesting is finished. - Vesting: pallet_vesting::{Pallet, Call, Storage, Event, Config}, - - // Parachains runtime modules - ParachainsConfiguration: parachains_configuration::{Pallet, Call, Storage, Config}, - Inclusion: parachains_inclusion::{Pallet, Call, Storage, Event}, - ParasInherent: parachains_paras_inherent::{Pallet, Call, Storage, Inherent}, - Initializer: parachains_initializer::{Pallet, Call, Storage}, - Paras: parachains_paras::{Pallet, Call, Storage, Origin, Event}, - Scheduler: parachains_scheduler::{Pallet, Call, Storage}, - ParasSudoWrapper: paras_sudo_wrapper::{Pallet, Call}, - SessionInfo: parachains_session_info::{Pallet, Call, Storage}, - Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event}, - Ump: parachains_ump::{Pallet, Call, Storage, Event}, - - Sudo: pallet_sudo::{Pallet, Call, Storage, Config, Event}, - } -} - -/// The address format for describing accounts. -pub type Address = sp_runtime::MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckMortality, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment::, -); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = frame_executive::Executive, Runtime, AllPallets>; -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; - -pub type Hash = ::Hash; -pub type Extrinsic = ::Extrinsic; - -sp_api::impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: inherents::InherentData, - ) -> inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl tx_pool_api::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl authority_discovery_primitives::AuthorityDiscoveryApi for Runtime { - fn authorities() -> Vec { - AuthorityDiscovery::authorities() - } - } - - impl primitives::v1::ParachainHost for Runtime { - fn validators() -> Vec { - runtime_impl::validators::() - } - - fn validator_groups() -> (Vec>, GroupRotationInfo) { - runtime_impl::validator_groups::() - } - - fn availability_cores() -> Vec> { - runtime_impl::availability_cores::() - } - - fn persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option> - { - runtime_impl::persisted_validation_data::(para_id, assumption) - } - - fn check_validation_outputs( - para_id: ParaId, - outputs: primitives::v1::CandidateCommitments, - ) -> bool { - runtime_impl::check_validation_outputs::(para_id, outputs) - } - - fn session_index_for_child() -> SessionIndex { - runtime_impl::session_index_for_child::() - } - - fn validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option - { - runtime_impl::validation_code::(para_id, assumption) - } - - fn candidate_pending_availability(para_id: ParaId) -> Option> { - runtime_impl::candidate_pending_availability::(para_id) - } - - fn candidate_events() -> Vec> { - use core::convert::TryInto; - runtime_impl::candidate_events::(|trait_event| trait_event.try_into().ok()) - } - - fn session_info(index: SessionIndex) -> Option { - runtime_impl::session_info::(index) - } - - fn dmq_contents( - recipient: ParaId, - ) -> Vec> { - runtime_impl::dmq_contents::(recipient) - } - - fn inbound_hrmp_channels_contents( - recipient: ParaId, - ) -> BTreeMap>> { - runtime_impl::inbound_hrmp_channels_contents::(recipient) - } - - fn validation_code_by_hash(hash: ValidationCodeHash) -> Option { - runtime_impl::validation_code_by_hash::(hash) - } - } - - impl beefy_primitives::BeefyApi for Runtime { - fn validator_set() -> beefy_primitives::ValidatorSet { - // dummy implementation due to lack of BEEFY pallet. - beefy_primitives::ValidatorSet { validators: Vec::new(), id: 0 } - } - } - - impl mmr::MmrApi for Runtime { - fn generate_proof(_leaf_index: u64) - -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::GenerateProof) - } - - fn verify_proof(_leaf: mmr::EncodableOpaqueLeaf, _proof: mmr::Proof) - -> Result<(), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - - fn verify_proof_stateless( - _root: Hash, - _leaf: mmr::EncodableOpaqueLeaf, - _proof: mmr::Proof - ) -> Result<(), mmr::Error> { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - _equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - sp_runtime::traits::NumberFor, - >, - _key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - None - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - _authority_id: fg_primitives::AuthorityId, - ) -> Option { - None - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } - - fn current_epoch_start() -> babe_primitives::Slot { - Babe::current_epoch_start() - } - - fn current_epoch() -> babe_primitives::Epoch { - Babe::current_epoch() - } - - fn next_epoch() -> babe_primitives::Epoch { - Babe::next_epoch() - } - - fn generate_key_ownership_proof( - _slot: babe_primitives::Slot, - _authority_id: babe_primitives::AuthorityId, - ) -> Option { - None - } - - fn submit_report_equivocation_unsigned_extrinsic( - _equivocation_proof: babe_primitives::EquivocationProof<::Header>, - _key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - None - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Nonce { - System::account_nonce(account) - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - impl crate::GetLastTimestamp for Runtime { - fn get_last_timestamp() -> u64 { - Timestamp::now() - } - } -} diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml deleted file mode 100644 index a160d2f9b1af..000000000000 --- a/runtime/westend/Cargo.toml +++ /dev/null @@ -1,247 +0,0 @@ -[package] -name = "westend-runtime" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" -build = "build.rs" - -[dependencies] -bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.14", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.123", default-features = false } -serde_derive = { version = "1.0.117", optional = true } -smallvec = "1.6.1" -static_assertions = "1.1.0" - -authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-democracy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-elections-phragmen = { package = "pallet-elections-phragmen", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-identity = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-im-online = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-membership = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-multisig = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-nicks = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-offences = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-proxy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-recovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-scheduler = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-society = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-staking-reward-curve = { package = "pallet-staking-reward-curve", git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false } - -frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-offences-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -pallet-session-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } -hex-literal = { version = "0.3.1", optional = true } - -runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } -primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -polkadot-parachain = { path = "../../parachain", default-features = false } -runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } - -xcm = { package = "xcm", path = "../../xcm", default-features = false } -xcm-executor = { package = "xcm-executor", path = "../../xcm/xcm-executor", default-features = false } -xcm-builder = { package = "xcm-builder", path = "../../xcm/xcm-builder", default-features = false } - -max-encoded-len = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -[dev-dependencies] -hex-literal = "0.3.1" -libsecp256k1 = "0.3.5" -tiny-keccak = "2.0.2" -keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.61" - -[build-dependencies] -substrate-wasm-builder = "3.0.0" - -[features] -default = ["std"] -no_std = [] -only-staking = [] -std = [ - "authority-discovery-primitives/std", - "bitvec/std", - "primitives/std", - "rustc-hex/std", - "parity-scale-codec/std", - "inherents/std", - "sp-core/std", - "polkadot-parachain/std", - "sp-api/std", - "tx-pool-api/std", - "block-builder-api/std", - "offchain-primitives/std", - "sp-std/std", - "sp-io/std", - "frame-support/std", - "pallet-authority-discovery/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-transaction-payment/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-collective/std", - "pallet-elections-phragmen/std", - "pallet-election-provider-multi-phase/std", - "pallet-democracy/std", - "pallet-grandpa/std", - "pallet-identity/std", - "pallet-im-online/std", - "pallet-indices/std", - "pallet-membership/std", - "pallet-mmr-primitives/std", - "beefy-primitives/std", - "pallet-multisig/std", - "pallet-nicks/std", - "pallet-offences/std", - "pallet-proxy/std", - "pallet-recovery/std", - "pallet-scheduler/std", - "pallet-session/std", - "pallet-society/std", - "pallet-staking/std", - "pallet-sudo/std", - "pallet-timestamp/std", - "pallet-treasury/std", - "pallet-utility/std", - "pallet-vesting/std", - "pallet-xcm/std", - "pallet-babe/std", - "frame-executive/std", - "sp-runtime/std", - "sp-staking/std", - "frame-system/std", - "frame-system-rpc-runtime-api/std", - "sp-version/std", - "serde_derive", - "serde/std", - "log/std", - "babe-primitives/std", - "sp-session/std", - "runtime-common/std", - "runtime-parachains/std", - "frame-try-runtime/std", - "sp-npos-elections/std", - "xcm/std", - "xcm-executor/std", - "xcm-builder/std", - "max-encoded-len/std", - "frame-election-provider-support/std", -] -runtime-benchmarks = [ - "runtime-common/runtime-benchmarks", - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", - "pallet-babe/runtime-benchmarks", - "pallet-balances/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", - "pallet-democracy/runtime-benchmarks", - "pallet-elections-phragmen/runtime-benchmarks", - "pallet-election-provider-multi-phase/runtime-benchmarks", - "pallet-grandpa/runtime-benchmarks", - "pallet-identity/runtime-benchmarks", - "pallet-im-online/runtime-benchmarks", - "pallet-indices/runtime-benchmarks", - "pallet-multisig/runtime-benchmarks", - "pallet-proxy/runtime-benchmarks", - "pallet-scheduler/runtime-benchmarks", - "pallet-society/runtime-benchmarks", - "pallet-staking/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks", - "pallet-treasury/runtime-benchmarks", - "pallet-utility/runtime-benchmarks", - "pallet-vesting/runtime-benchmarks", - "pallet-offences-benchmarking", - "pallet-session-benchmarking", - "pallet-xcm/runtime-benchmarks", - "frame-system-benchmarking", - "hex-literal", - "xcm-builder/runtime-benchmarks", - "frame-election-provider-support/runtime-benchmarks", -] -try-runtime = [ - "frame-executive/try-runtime", - "frame-system/try-runtime", - "frame-try-runtime", - "pallet-authorship/try-runtime", - "pallet-authority-discovery/try-runtime", - "pallet-balances/try-runtime", - "pallet-transaction-payment/try-runtime", - "pallet-collective/try-runtime", - "pallet-elections-phragmen/try-runtime", - "pallet-election-provider-multi-phase/try-runtime", - "pallet-democracy/try-runtime", - "pallet-grandpa/try-runtime", - "pallet-identity/try-runtime", - "pallet-im-online/try-runtime", - "pallet-indices/try-runtime", - "pallet-membership/try-runtime", - "pallet-multisig/try-runtime", - "pallet-nicks/try-runtime", - "pallet-offences/try-runtime", - "pallet-proxy/try-runtime", - "pallet-recovery/try-runtime", - "pallet-scheduler/try-runtime", - "pallet-session/try-runtime", - "pallet-society/try-runtime", - "pallet-staking/try-runtime", - "pallet-sudo/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-treasury/try-runtime", - "pallet-utility/try-runtime", - "pallet-vesting/try-runtime", - "pallet-babe/try-runtime", - "runtime-common/try-runtime", -] -# When enabled, the runtime api will not be build. -# -# This is required by Cumulus to access certain types of the -# runtime without clashing with the runtime api exported functions -# in WASM. -disable-runtime-api = [] diff --git a/runtime/westend/build.rs b/runtime/westend/build.rs deleted file mode 100644 index e4a139a06ae1..000000000000 --- a/runtime/westend/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use substrate_wasm_builder::WasmBuilder; - -fn main() { - WasmBuilder::new() - .with_current_project() - .import_memory() - .export_heap_base() - .build() -} diff --git a/runtime/westend/src/constants.rs b/runtime/westend/src/constants.rs deleted file mode 100644 index b5b6b354fcb7..000000000000 --- a/runtime/westend/src/constants.rs +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2019-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -/// Money matters. -pub mod currency { - use primitives::v0::Balance; - - pub const UNITS: Balance = 1_000_000_000_000; - pub const CENTS: Balance = UNITS / 100; - pub const MILLICENTS: Balance = CENTS / 1_000; - pub const GRAND: Balance = CENTS * 100_000; - - pub const fn deposit(items: u32, bytes: u32) -> Balance { - items as Balance * 100 * CENTS + (bytes as Balance) * 5 * MILLICENTS - } -} - -/// Time and blocks. -pub mod time { - use primitives::v0::{Moment, BlockNumber}; - pub const MILLISECS_PER_BLOCK: Moment = 6000; - pub const SLOT_DURATION: Moment = MILLISECS_PER_BLOCK; - pub const EPOCH_DURATION_IN_SLOTS: BlockNumber = 1 * HOURS; - - // These time units are defined in number of blocks. - pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); - pub const HOURS: BlockNumber = MINUTES * 60; - pub const DAYS: BlockNumber = HOURS * 24; - - // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. - pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); -} - -/// Fee-related. -pub mod fee { - pub use sp_runtime::Perbill; - use primitives::v0::Balance; - use runtime_common::ExtrinsicBaseWeight; - use frame_support::weights::{ - WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients, - }; - use smallvec::smallvec; - - /// The block saturation level. Fees will be updates based on this value. - pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); - - /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the - /// node's balance type. - /// - /// This should typically create a mapping between the following ranges: - /// - [0, MAXIMUM_BLOCK_WEIGHT] - /// - [Balance::min, Balance::max] - /// - /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: - /// - Setting it to `0` will essentially disable the weight fee. - /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. - pub struct WeightToFee; - impl WeightToFeePolynomial for WeightToFee { - type Balance = Balance; - fn polynomial() -> WeightToFeeCoefficients { - // in Westend, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT: - let p = super::currency::CENTS; - let q = 10 * Balance::from(ExtrinsicBaseWeight::get()); - smallvec![WeightToFeeCoefficient { - degree: 1, - negative: false, - coeff_frac: Perbill::from_rational(p % q, q), - coeff_integer: p / q, - }] - } - } -} - -#[cfg(test)] -mod tests { - use frame_support::weights::WeightToFeePolynomial; - use runtime_common::{MAXIMUM_BLOCK_WEIGHT, ExtrinsicBaseWeight}; - use super::fee::WeightToFee; - use super::currency::{CENTS, MILLICENTS}; - - #[test] - // This function tests that the fee for `MAXIMUM_BLOCK_WEIGHT` of weight is correct - fn full_block_fee_is_correct() { - // A full block should cost 1,600 CENTS - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&MAXIMUM_BLOCK_WEIGHT); - let y = 16 * 100 * CENTS; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } - - #[test] - // This function tests that the fee for `ExtrinsicBaseWeight` of weight is correct - fn extrinsic_base_fee_is_correct() { - // `ExtrinsicBaseWeight` should cost 1/10 of a CENT - println!("Base: {}", ExtrinsicBaseWeight::get()); - let x = WeightToFee::calc(&ExtrinsicBaseWeight::get()); - let y = CENTS / 10; - assert!(x.max(y) - x.min(y) < MILLICENTS); - } -} diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs deleted file mode 100644 index b3f37a157016..000000000000 --- a/runtime/westend/src/lib.rs +++ /dev/null @@ -1,1467 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Polkadot runtime. This can be compiled with `#[no_std]`, ready for Wasm. - -#![cfg_attr(not(feature = "std"), no_std)] -// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. -#![recursion_limit = "256"] - -use pallet_transaction_payment::CurrencyAdapter; -use sp_std::prelude::*; -use sp_std::collections::btree_map::BTreeMap; -use parity_scale_codec::{Encode, Decode}; -use primitives::v1::{ - AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CommittedCandidateReceipt, - CoreState, GroupRotationInfo, Hash, Id as ParaId, Moment, Nonce, OccupiedCoreAssumption, - PersistedValidationData, Signature, ValidationCode, ValidationCodeHash, ValidatorId, - ValidatorIndex, InboundDownwardMessage, InboundHrmpMessage, SessionInfo, -}; -use runtime_common::{ - paras_sudo_wrapper, paras_registrar, xcm_sender, slots, crowdloan, auctions, - SlowAdjustingFeeUpdate, CurrencyToVote, - impls::ToAuthor, - BlockHashCount, BlockWeights, BlockLength, RocksDbWeight, - OffchainSolutionWeightLimit, OffchainSolutionLengthLimit, -}; - -use runtime_parachains::origin as parachains_origin; -use runtime_parachains::configuration as parachains_configuration; -use runtime_parachains::shared as parachains_shared; -use runtime_parachains::inclusion as parachains_inclusion; -use runtime_parachains::paras_inherent as parachains_paras_inherent; -use runtime_parachains::initializer as parachains_initializer; -use runtime_parachains::session_info as parachains_session_info; -use runtime_parachains::paras as parachains_paras; -use runtime_parachains::dmp as parachains_dmp; -use runtime_parachains::ump as parachains_ump; -use runtime_parachains::hrmp as parachains_hrmp; -use runtime_parachains::scheduler as parachains_scheduler; -use runtime_parachains::reward_points as parachains_reward_points; -use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl; - -use xcm::v0::{MultiLocation::{self, Null, X1}, NetworkId, Xcm, Junction::Parachain}; -use xcm::v0::MultiAsset::{self, AllConcreteFungible}; -use xcm_executor::XcmExecutor; -use xcm_builder::{ - AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter, - ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter, IsConcrete, - FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, - IsChildSystemParachain, UsingComponents, SignedToAccountId32, -}; - -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, - ApplyExtrinsicResult, KeyTypeId, Perbill, curve::PiecewiseLinear, - transaction_validity::{TransactionValidity, TransactionSource, TransactionPriority}, - traits::{ - BlakeTwo256, Block as BlockT, OpaqueKeys, ConvertInto, AccountIdLookup, - Extrinsic as ExtrinsicT, SaturatedConversion, Verify, - }, -}; -#[cfg(feature = "runtime-benchmarks")] -use sp_runtime::RuntimeString; -use sp_version::RuntimeVersion; -use pallet_grandpa::{AuthorityId as GrandpaId, fg_primitives}; -#[cfg(any(feature = "std", test))] -use sp_version::NativeVersion; -use sp_core::OpaqueMetadata; -use sp_staking::SessionIndex; -use frame_support::{ - parameter_types, construct_runtime, RuntimeDebug, PalletId, - traits::{KeyOwnerProofSystem, Filter, InstanceFilter, All, MaxEncodedLen}, - weights::Weight, -}; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; -use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; -use pallet_session::historical as session_historical; -use frame_system::{EnsureRoot}; -use beefy_primitives::crypto::AuthorityId as BeefyId; -use pallet_mmr_primitives as mmr; - -#[cfg(feature = "std")] -pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] -pub use sp_runtime::BuildStorage; -pub use pallet_timestamp::Call as TimestampCall; -pub use pallet_balances::Call as BalancesCall; - -/// Constant values used within the runtime. -pub mod constants; -use constants::{time::*, currency::*, fee::*}; - -// Weights used in the runtime -mod weights; - -#[cfg(test)] -mod tests; - -// Make the WASM binary available. -#[cfg(feature = "std")] -include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); - -/// Runtime version (Westend). -pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("westend"), - impl_name: create_runtime_str!("parity-westend"), - authoring_version: 2, - spec_version: 9070, - impl_version: 0, - #[cfg(not(feature = "disable-runtime-api"))] - apis: RUNTIME_API_VERSIONS, - #[cfg(feature = "disable-runtime-api")] - apis: version::create_apis_vec![[]], - transaction_version: 5, -}; - -/// The BABE epoch configuration at genesis. -pub const BABE_GENESIS_EPOCH_CONFIG: babe_primitives::BabeEpochConfiguration = - babe_primitives::BabeEpochConfiguration { - c: PRIMARY_PROBABILITY, - allowed_slots: babe_primitives::AllowedSlots::PrimaryAndSecondaryVRFSlots - }; - -/// Native version. -#[cfg(any(feature = "std", test))] -pub fn native_version() -> NativeVersion { - NativeVersion { - runtime_version: VERSION, - can_author_with: Default::default(), - } -} - -/// Allow everything. -pub struct BaseFilter; -impl Filter for BaseFilter { - fn filter(_: &Call) -> bool { - true - } -} - -parameter_types! { - pub const Version: RuntimeVersion = VERSION; - pub const SS58Prefix: u8 = 42; -} - -impl frame_system::Config for Runtime { - type BaseCallFilter = BaseFilter; - type BlockWeights = BlockWeights; - type BlockLength = BlockLength; - type Origin = Origin; - type Call = Call; - type Index = Nonce; - type BlockNumber = BlockNumber; - type Hash = Hash; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = AccountIdLookup; - type Header = generic::Header; - type Event = Event; - type BlockHashCount = BlockHashCount; - type DbWeight = RocksDbWeight; - type Version = Version; - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = weights::frame_system::WeightInfo; - type SS58Prefix = SS58Prefix; - type OnSetCode = (); -} - -parameter_types! { - pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * - BlockWeights::get().max_block; - pub const MaxScheduledPerBlock: u32 = 50; -} - -impl pallet_scheduler::Config for Runtime { - type Event = Event; - type Origin = Origin; - type PalletsOrigin = OriginCaller; - type Call = Call; - type MaximumWeight = MaximumSchedulerWeight; - type ScheduleOrigin = EnsureRoot; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = weights::pallet_scheduler::WeightInfo; -} - -parameter_types! { - pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS as u64; - pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; - pub const ReportLongevity: u64 = - BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); -} - -impl pallet_babe::Config for Runtime { - type EpochDuration = EpochDuration; - type ExpectedBlockTime = ExpectedBlockTime; - - // session module is the trigger - type EpochChangeTrigger = pallet_babe::ExternalTrigger; - - type KeyOwnerProofSystem = Historical; - - type KeyOwnerProof = >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = - pallet_babe::EquivocationHandler; - - type WeightInfo = (); -} - -parameter_types! { - pub const IndexDeposit: Balance = 100 * CENTS; -} - -impl pallet_indices::Config for Runtime { - type AccountIndex = AccountIndex; - type Currency = Balances; - type Deposit = IndexDeposit; - type Event = Event; - type WeightInfo = weights::pallet_indices::WeightInfo; -} - -parameter_types! { - pub const ExistentialDeposit: Balance = 1 * CENTS; - pub const MaxLocks: u32 = 50; - pub const MaxReserves: u32 = 50; -} - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type Event = Event; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type MaxLocks = MaxLocks; - type MaxReserves = MaxReserves; - type ReserveIdentifier = [u8; 8]; - type WeightInfo = weights::pallet_balances::WeightInfo; -} - -parameter_types! { - pub const TransactionByteFee: Balance = 10 * MILLICENTS; -} - -impl pallet_transaction_payment::Config for Runtime { - type OnChargeTransaction = CurrencyAdapter>; - type TransactionByteFee = TransactionByteFee; - type WeightToFee = WeightToFee; - type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; -} - -parameter_types! { - pub const MinimumPeriod: u64 = SLOT_DURATION / 2; -} -impl pallet_timestamp::Config for Runtime { - type Moment = u64; - type OnTimestampSet = Babe; - type MinimumPeriod = MinimumPeriod; - type WeightInfo = weights::pallet_timestamp::WeightInfo; -} - -parameter_types! { - pub const UncleGenerations: u32 = 0; -} - -impl pallet_authorship::Config for Runtime { - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; - type UncleGenerations = UncleGenerations; - type FilterUncle = (); - type EventHandler = (Staking, ImOnline); -} - -parameter_types! { - pub const Period: BlockNumber = 10 * MINUTES; - pub const Offset: BlockNumber = 0; -} - -impl_opaque_keys! { - pub struct SessionKeys { - pub grandpa: Grandpa, - pub babe: Babe, - pub im_online: ImOnline, - pub para_validator: ParasInitializer, - pub para_assignment: ParasSessionInfo, - pub authority_discovery: AuthorityDiscovery, - } -} - -parameter_types! { - pub const DisabledValidatorsThreshold: Perbill = Perbill::from_percent(17); -} - -impl pallet_session::Config for Runtime { - type Event = Event; - type ValidatorId = AccountId; - type ValidatorIdOf = pallet_staking::StashOf; - type ShouldEndSession = Babe; - type NextSessionRotation = Babe; - type SessionManager = pallet_session::historical::NoteHistoricalRoot; - type SessionHandler = ::KeyTypeIdProviders; - type Keys = SessionKeys; - type DisabledValidatorsThreshold = DisabledValidatorsThreshold; - type WeightInfo = weights::pallet_session::WeightInfo; -} - -impl pallet_session::historical::Config for Runtime { - type FullIdentification = pallet_staking::Exposure; - type FullIdentificationOf = pallet_staking::ExposureOf; -} - -parameter_types! { - // no signed phase for now, just unsigned. - pub const SignedPhase: u32 = 0; - pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_SLOTS / 4; - - // fallback: run election on-chain. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; - - pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); - - // miner configs - pub const MinerMaxIterations: u32 = 10; - pub OffchainRepeat: BlockNumber = 5; -} - -sp_npos_elections::generate_solution_type!( - #[compact] - pub struct NposCompactSolution16::< - VoterIndex = u32, - TargetIndex = u16, - Accuracy = sp_runtime::PerU16, - >(16) -); - -impl pallet_election_provider_multi_phase::Config for Runtime { - type Event = Event; - type Currency = Balances; - type SignedPhase = SignedPhase; - type UnsignedPhase = UnsignedPhase; - type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; - type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. - type MinerMaxLength = OffchainSolutionLengthLimit; - type OffchainRepeat = OffchainRepeat; - type MinerTxPriority = NposSolutionPriority; - type DataProvider = Staking; - type OnChainAccuracy = Perbill; - type CompactSolution = NposCompactSolution16; - type Fallback = Fallback; - type BenchmarkingConfig = (); - type ForceOrigin = EnsureRoot; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; -} - -pallet_staking_reward_curve::build! { - const REWARD_CURVE: PiecewiseLinear<'static> = curve!( - min_inflation: 0_025_000, - max_inflation: 0_100_000, - ideal_stake: 0_500_000, - falloff: 0_050_000, - max_piece_count: 40, - test_precision: 0_005_000, - ); -} - -parameter_types! { - // Six sessions in an era (6 hours). - pub const SessionsPerEra: SessionIndex = 6; - // 28 eras for unbonding (7 days). - pub const BondingDuration: pallet_staking::EraIndex = 28; - // 27 eras in which slashes can be cancelled (slightly less than 7 days). - pub const SlashDeferDuration: pallet_staking::EraIndex = 27; - pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; - pub const MaxNominatorRewardedPerValidator: u32 = 64; -} - -impl pallet_staking::Config for Runtime { - const MAX_NOMINATIONS: u32 = ::LIMIT as u32; - type Currency = Balances; - type UnixTime = Timestamp; - type CurrencyToVote = CurrencyToVote; - type RewardRemainder = (); - type Event = Event; - type Slash = (); - type Reward = (); - type SessionsPerEra = SessionsPerEra; - type BondingDuration = BondingDuration; - type SlashDeferDuration = SlashDeferDuration; - // A majority of the council can cancel the slash. - type SlashCancelOrigin = EnsureRoot; - type SessionInterface = Self; - type EraPayout = pallet_staking::ConvertCurve; - type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; - type NextNewSession = Session; - type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig - >; - type WeightInfo = weights::pallet_staking::WeightInfo; -} - -parameter_types! { - pub const LaunchPeriod: BlockNumber = 7 * DAYS; - pub const VotingPeriod: BlockNumber = 7 * DAYS; - pub const FastTrackVotingPeriod: BlockNumber = 3 * HOURS; - pub const MinimumDeposit: Balance = 100 * CENTS; - pub const EnactmentPeriod: BlockNumber = 8 * DAYS; - pub const CooloffPeriod: BlockNumber = 7 * DAYS; - // One cent: $10,000 / MB - pub const PreimageByteDeposit: Balance = 10 * MILLICENTS; - pub const InstantAllowed: bool = true; -} - -impl pallet_offences::Config for Runtime { - type Event = Event; - type IdentificationTuple = pallet_session::historical::IdentificationTuple; - type OnOffenceHandler = Staking; -} - -impl pallet_authority_discovery::Config for Runtime {} - -parameter_types! { - pub const NposSolutionPriority: TransactionPriority = TransactionPriority::max_value() / 2; - pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); -} - -impl pallet_im_online::Config for Runtime { - type AuthorityId = ImOnlineId; - type Event = Event; - type ValidatorSet = Historical; - type NextSessionRotation = Babe; - type ReportUnresponsiveness = Offences; - type UnsignedPriority = ImOnlineUnsignedPriority; - type WeightInfo = weights::pallet_im_online::WeightInfo; -} - -impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; - - type KeyOwnerProofSystem = Historical; - - type KeyOwnerProof = - >::Proof; - - type KeyOwnerIdentification = >::IdentificationTuple; - - type HandleEquivocation = - pallet_grandpa::EquivocationHandler; - - type WeightInfo = (); -} - -/// Submits a transaction with the node's public and signature type. Adheres to the signed extension -/// format of the chain. -impl frame_system::offchain::CreateSignedTransaction for Runtime where - Call: From, -{ - fn create_transaction>( - call: Call, - public: ::Signer, - account: AccountId, - nonce: ::Index, - ) -> Option<(Call, ::SignaturePayload)> { - use sp_runtime::traits::StaticLookup; - // take the biggest period possible. - let period = BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - - let current_block = System::block_number() - .saturated_into::() - // The `System::block_number` is initialized with `n+1`, - // so the actual block number is `n`. - .saturating_sub(1); - let tip = 0; - let extra: SignedExtra = ( - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckMortality::::from(generic::Era::mortal(period, current_block)), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - let raw_payload = SignedPayload::new(call, extra).map_err(|e| { - log::warn!("Unable to create signed payload: {:?}", e); - }).ok()?; - let signature = raw_payload.using_encoded(|payload| { - C::sign(payload, public) - })?; - let (call, extra, _) = raw_payload.deconstruct(); - let address = ::Lookup::unlookup(account); - Some((call, (address, signature, extra))) - } -} - -impl frame_system::offchain::SigningTypes for Runtime { - type Public = ::Signer; - type Signature = Signature; -} - -impl frame_system::offchain::SendTransactionTypes for Runtime where - Call: From, -{ - type OverarchingCall = Call; - type Extrinsic = UncheckedExtrinsic; -} - -parameter_types! { - // Minimum 100 bytes/KSM deposited (1 CENT/byte) - pub const BasicDeposit: Balance = 1000 * CENTS; // 258 bytes on-chain - pub const FieldDeposit: Balance = 250 * CENTS; // 66 bytes on-chain - pub const SubAccountDeposit: Balance = 200 * CENTS; // 53 bytes on-chain - pub const MaxSubAccounts: u32 = 100; - pub const MaxAdditionalFields: u32 = 100; - pub const MaxRegistrars: u32 = 20; -} - -impl pallet_identity::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Slashed = (); - type BasicDeposit = BasicDeposit; - type FieldDeposit = FieldDeposit; - type SubAccountDeposit = SubAccountDeposit; - type MaxSubAccounts = MaxSubAccounts; - type MaxAdditionalFields = MaxAdditionalFields; - type MaxRegistrars = MaxRegistrars; - type RegistrarOrigin = frame_system::EnsureRoot; - type ForceOrigin = frame_system::EnsureRoot; - type WeightInfo = weights::pallet_identity::WeightInfo; -} - -impl pallet_utility::Config for Runtime { - type Event = Event; - type Call = Call; - type WeightInfo = weights::pallet_utility::WeightInfo; -} - -parameter_types! { - // One storage item; key size is 32; value is size 4+4+16+32 bytes = 56 bytes. - pub const DepositBase: Balance = deposit(1, 88); - // Additional storage item size of 32 bytes. - pub const DepositFactor: Balance = deposit(0, 32); - pub const MaxSignatories: u16 = 100; -} - -impl pallet_multisig::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type DepositBase = DepositBase; - type DepositFactor = DepositFactor; - type MaxSignatories = MaxSignatories; - type WeightInfo = weights::pallet_multisig::WeightInfo; -} - -parameter_types! { - pub const ConfigDepositBase: Balance = 500 * CENTS; - pub const FriendDepositFactor: Balance = 50 * CENTS; - pub const MaxFriends: u16 = 9; - pub const RecoveryDeposit: Balance = 500 * CENTS; -} - -impl pallet_recovery::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ConfigDepositBase = ConfigDepositBase; - type FriendDepositFactor = FriendDepositFactor; - type MaxFriends = MaxFriends; - type RecoveryDeposit = RecoveryDeposit; -} - -parameter_types! { - pub const MinVestedTransfer: Balance = 100 * CENTS; -} - -impl pallet_vesting::Config for Runtime { - type Event = Event; - type Currency = Balances; - type BlockNumberToBalance = ConvertInto; - type MinVestedTransfer = MinVestedTransfer; - type WeightInfo = weights::pallet_vesting::WeightInfo; -} - -impl pallet_sudo::Config for Runtime { - type Event = Event; - type Call = Call; -} - -parameter_types! { - // One storage item; key size 32, value size 8; . - pub const ProxyDepositBase: Balance = deposit(1, 8); - // Additional storage item size of 33 bytes. - pub const ProxyDepositFactor: Balance = deposit(0, 33); - pub const MaxProxies: u16 = 32; - pub const AnnouncementDepositBase: Balance = deposit(1, 8); - pub const AnnouncementDepositFactor: Balance = deposit(0, 66); - pub const MaxPending: u16 = 32; -} - -/// The type used to represent the kinds of proxying allowed. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen)] -pub enum ProxyType { - Any, - NonTransfer, - Staking, - SudoBalances, - IdentityJudgement, - CancelProxy, -} -impl Default for ProxyType { fn default() -> Self { Self::Any } } -impl InstanceFilter for ProxyType { - fn filter(&self, c: &Call) -> bool { - match self { - ProxyType::Any => true, - ProxyType::NonTransfer => matches!(c, - Call::System(..) | - Call::Babe(..) | - Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | - // Specifically omitting Indices `transfer`, `force_transfer` - // Specifically omitting the entire Balances pallet - Call::Authorship(..) | - Call::Staking(..) | - Call::Session(..) | - Call::Grandpa(..) | - Call::ImOnline(..) | - Call::Utility(..) | - Call::Identity(..) | - Call::Recovery(pallet_recovery::Call::as_recovered(..)) | - Call::Recovery(pallet_recovery::Call::vouch_recovery(..)) | - Call::Recovery(pallet_recovery::Call::claim_recovery(..)) | - Call::Recovery(pallet_recovery::Call::close_recovery(..)) | - Call::Recovery(pallet_recovery::Call::remove_recovery(..)) | - Call::Recovery(pallet_recovery::Call::cancel_recovered(..)) | - // Specifically omitting Recovery `create_recovery`, `initiate_recovery` - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | - // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` - Call::Scheduler(..) | - // Specifically omitting Sudo pallet - Call::Proxy(..) | - Call::Multisig(..) | - Call::Registrar(paras_registrar::Call::register(..)) | - Call::Registrar(paras_registrar::Call::deregister(..)) | - // Specifically omitting Registrar `swap` - Call::Registrar(paras_registrar::Call::reserve(..)) | - Call::Crowdloan(..) | - Call::Slots(..) | - Call::Auctions(..) - // Specifically omitting the entire XCM Pallet - ), - ProxyType::Staking => matches!(c, - Call::Staking(..) | - Call::Session(..) | - Call::Utility(..) - ), - ProxyType::SudoBalances => match c { - Call::Sudo(pallet_sudo::Call::sudo(ref x)) => matches!(x.as_ref(), &Call::Balances(..)), - Call::Utility(..) => true, - _ => false, - }, - ProxyType::IdentityJudgement => matches!(c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | - Call::Utility(..) - ), - ProxyType::CancelProxy => matches!(c, - Call::Proxy(pallet_proxy::Call::reject_announcement(..)) - ) - } - } - fn is_superset(&self, o: &Self) -> bool { - match (self, o) { - (x, y) if x == y => true, - (ProxyType::Any, _) => true, - (_, ProxyType::Any) => false, - (ProxyType::NonTransfer, _) => true, - _ => false, - } - } -} - -impl pallet_proxy::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type ProxyType = ProxyType; - type ProxyDepositBase = ProxyDepositBase; - type ProxyDepositFactor = ProxyDepositFactor; - type MaxProxies = MaxProxies; - type WeightInfo = weights::pallet_proxy::WeightInfo; - type MaxPending = MaxPending; - type CallHasher = BlakeTwo256; - type AnnouncementDepositBase = AnnouncementDepositBase; - type AnnouncementDepositFactor = AnnouncementDepositFactor; -} - -impl parachains_origin::Config for Runtime {} - -impl parachains_configuration::Config for Runtime {} - -impl parachains_shared::Config for Runtime {} - -impl parachains_session_info::Config for Runtime {} - -impl parachains_inclusion::Config for Runtime { - type Event = Event; - type RewardValidators = parachains_reward_points::RewardValidatorsWithEraPoints; -} - -impl parachains_paras::Config for Runtime { - type Origin = Origin; - type Event = Event; -} - -parameter_types! { - pub const FirstMessageFactorPercent: u64 = 100; -} - -impl parachains_ump::Config for Runtime { - type Event = Event; - type UmpSink = crate::parachains_ump::XcmSink, Runtime>; - type FirstMessageFactorPercent = FirstMessageFactorPercent; -} - -impl parachains_dmp::Config for Runtime {} - -impl parachains_hrmp::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; -} - -impl parachains_paras_inherent::Config for Runtime {} - -impl parachains_scheduler::Config for Runtime {} - -impl parachains_initializer::Config for Runtime { - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type ForceOrigin = EnsureRoot; -} - -impl paras_sudo_wrapper::Config for Runtime {} - -parameter_types! { - pub const ParaDeposit: Balance = 2000 * CENTS; - pub const DataDepositPerByte: Balance = deposit(0, 1); -} - -impl paras_registrar::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type OnSwap = (Crowdloan, Slots); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type WeightInfo = weights::runtime_common_paras_registrar::WeightInfo; -} - -parameter_types! { - pub const LeasePeriod: BlockNumber = 28 * DAYS; -} - -impl slots::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Registrar = Registrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = weights::runtime_common_slots::WeightInfo; -} - -parameter_types! { - pub const CrowdloanId: PalletId = PalletId(*b"py/cfund"); - pub const SubmissionDeposit: Balance = 100 * 100 * CENTS; - pub const MinContribution: Balance = 100 * CENTS; - pub const RemoveKeysLimit: u32 = 500; - // Allow 32 bytes for an additional memo to a crowdloan. - pub const MaxMemoLength: u8 = 32; -} - -impl crowdloan::Config for Runtime { - type Event = Event; - type PalletId = CrowdloanId; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = Registrar; - type Auctioneer = Auctions; - type MaxMemoLength = MaxMemoLength; - type WeightInfo = weights::runtime_common_crowdloan::WeightInfo; -} - -parameter_types! { - // The average auction is 7 days long, so this will be 70% for ending period. - // 5 Days = 72000 Blocks @ 6 sec per block - pub const EndingPeriod: BlockNumber = 5 * DAYS; - // ~ 1000 samples per day -> ~ 20 blocks per sample -> 2 minute samples - pub const SampleLength: BlockNumber = 2 * MINUTES; -} - -impl auctions::Config for Runtime { - type Event = Event; - type Leaser = Slots; - type Registrar = Registrar; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type InitiateOrigin = EnsureRoot; - type WeightInfo = weights::runtime_common_auctions::WeightInfo; -} - -parameter_types! { - pub const WndLocation: MultiLocation = MultiLocation::Null; - pub const Ancestry: MultiLocation = MultiLocation::Null; - pub WestendNetwork: NetworkId = NetworkId::Named(b"Westend".to_vec()); - pub CheckAccount: AccountId = XcmPallet::check_account(); -} - -pub type LocationConverter = ( - ChildParachainConvertsVia, - AccountId32Aliases, -); - -pub type LocalAssetTransactor = - XcmCurrencyAdapter< - // Use this currency: - Balances, - // Use this currency when it is a fungible asset matching the given location or name: - IsConcrete, - // We can convert the MultiLocations with our converter above: - LocationConverter, - // Our chain's account ID type (we can't get away without mentioning it explicitly): - AccountId, - // It's a native asset so we keep track of the teleports to maintain total issuance. - CheckAccount, - >; - -type LocalOriginConverter = ( - SovereignSignedViaLocation, - ChildParachainAsNative, - SignedAccountId32AsNative, - ChildSystemParachainAsSuperuser, -); - -parameter_types! { - pub const BaseXcmWeight: Weight = 10_000_000; -} - -/// The XCM router. When we want to send an XCM message, we use this type. It amalgamates all of our -/// individual routers. -pub type XcmRouter = ( - // Only one router so far - use DMP to communicate with child parachains. - xcm_sender::ChildParachainRouter, -); - -parameter_types! { - pub const WestendForWestmint: (MultiAsset, MultiLocation) = - (AllConcreteFungible { id: Null }, X1(Parachain(1000))); -} -pub type TrustedTeleporters = ( - xcm_builder::Case, -); - -/// The barriers one of which must be passed for an XCM message to be executed. -pub type Barrier = ( - // Weight that is paid for may be consumed. - TakeWeightCredit, - // If the message is one that immediately attemps to pay for execution, then allow it. - AllowTopLevelPaidExecutionFrom>, - // Messages coming from system parachains need not pay for execution. - AllowUnpaidExecutionFrom>, -); - -pub struct XcmConfig; -impl xcm_executor::Config for XcmConfig { - type Call = Call; - type XcmSender = XcmRouter; - type AssetTransactor = LocalAssetTransactor; - type OriginConverter = LocalOriginConverter; - type IsReserve = (); - type IsTeleporter = TrustedTeleporters; - type LocationInverter = LocationInverter; - type Barrier = Barrier; - type Weigher = FixedWeightBounds; - type Trader = UsingComponents>; - type ResponseHandler = (); -} - -/// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location -/// of this chain. -pub type LocalOriginToLocation = ( - // And a usual Signed origin to be used in XCM as a corresponding AccountId32 - SignedToAccountId32, -); - -pub struct OnlyWithdrawTeleportForAccounts; -impl frame_support::traits::Contains<(MultiLocation, Xcm)> for OnlyWithdrawTeleportForAccounts { - fn contains((ref origin, ref msg): &(MultiLocation, Xcm)) -> bool { - use xcm::v0::{ - Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset}, - MultiAsset::{All, ConcreteFungible}, Junction::AccountId32, - }; - match origin { - // Root is allowed to execute anything. - Null => true, - X1(AccountId32 { .. }) => { - // An account ID trying to send a message. We ensure that it's sensible. - // This checks that it's of the form: - // WithdrawAsset { - // assets: [ ConcreteFungible { id: Null } ], - // effects: [ BuyExecution, InitiateTeleport { - // assets: All, - // dest: Parachain, - // effects: [ BuyExecution, DepositAssets { - // assets: All, - // dest: AccountId32, - // } ] - // } ] - // } - matches!(msg, WithdrawAsset { ref assets, ref effects } - if assets.len() == 1 - && matches!(assets[0], ConcreteFungible { id: Null, .. }) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], InitiateTeleport { ref assets, dest: X1(Parachain(..)), ref effects } - if assets.len() == 1 - && matches!(assets[0], All) - && effects.len() == 2 - && matches!(effects[0], BuyExecution { .. }) - && matches!(effects[1], DepositAsset { ref assets, dest: X1(AccountId32{..}) } - if assets.len() == 1 - && matches!(assets[0], All) - ) - ) - ) - } - // Nobody else is allowed to execute anything. - _ => false, - } - } -} - -impl pallet_xcm::Config for Runtime { - type Event = Event; - type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; - type XcmRouter = XcmRouter; - // Anyone can execute XCM messages locally... - type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin; - // ...but they must match our filter, which requires them to be a simple withdraw + teleport. - type XcmExecuteFilter = OnlyWithdrawTeleportForAccounts; - type XcmExecutor = XcmExecutor; - type XcmTeleportFilter = All<(MultiLocation, Vec)>; - type XcmReserveTransferFilter = All<(MultiLocation, Vec)>; - type Weigher = FixedWeightBounds; -} - -construct_runtime! { - pub enum Runtime where - Block = Block, - NodeBlock = primitives::v1::Block, - UncheckedExtrinsic = UncheckedExtrinsic - { - // Basic stuff; balances is uncallable initially. - System: frame_system::{Pallet, Call, Storage, Config, Event} = 0, - - // Must be before session. - Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned} = 1, - - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 2, - Indices: pallet_indices::{Pallet, Call, Storage, Config, Event} = 3, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 4, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 26, - - // Consensus support. - Authorship: pallet_authorship::{Pallet, Call, Storage} = 5, - Staking: pallet_staking::{Pallet, Call, Storage, Config, Event} = 6, - Offences: pallet_offences::{Pallet, Storage, Event} = 7, - Historical: session_historical::{Pallet} = 27, - Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 8, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event, ValidateUnsigned} = 10, - ImOnline: pallet_im_online::{Pallet, Call, Storage, Event, ValidateUnsigned, Config} = 11, - AuthorityDiscovery: pallet_authority_discovery::{Pallet, Config} = 12, - - // Utility module. - Utility: pallet_utility::{Pallet, Call, Event} = 16, - - // Less simple identity module. - Identity: pallet_identity::{Pallet, Call, Storage, Event} = 17, - - // Social recovery module. - Recovery: pallet_recovery::{Pallet, Call, Storage, Event} = 18, - - // Vesting. Usable initially, but removed once all vesting is finished. - Vesting: pallet_vesting::{Pallet, Call, Storage, Event, Config} = 19, - - // System scheduler. - Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 20, - - // Sudo. - Sudo: pallet_sudo::{Pallet, Call, Storage, Event, Config} = 21, - - // Proxy module. Late addition. - Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 22, - - // Multisig module. Late addition. - Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 23, - - // Election pallet. Only works with staking, but placed here to maintain indices. - ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 24, - - // Parachains pallets. Start indices at 40 to leave room. - ParachainsOrigin: parachains_origin::{Pallet, Origin} = 41, - ParachainsConfiguration: parachains_configuration::{Pallet, Call, Storage, Config} = 42, - ParasShared: parachains_shared::{Pallet, Call, Storage} = 43, - ParasInclusion: parachains_inclusion::{Pallet, Call, Storage, Event} = 44, - ParasInherent: parachains_paras_inherent::{Pallet, Call, Storage, Inherent} = 45, - ParasScheduler: parachains_scheduler::{Pallet, Call, Storage} = 46, - Paras: parachains_paras::{Pallet, Call, Storage, Event, Config} = 47, - ParasInitializer: parachains_initializer::{Pallet, Call, Storage} = 48, - ParasDmp: parachains_dmp::{Pallet, Call, Storage} = 49, - ParasUmp: parachains_ump::{Pallet, Call, Storage, Event} = 50, - ParasHrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 51, - ParasSessionInfo: parachains_session_info::{Pallet, Call, Storage} = 52, - - // Parachain Onboarding Pallets. Start indices at 60 to leave room. - Registrar: paras_registrar::{Pallet, Call, Storage, Event} = 60, - Slots: slots::{Pallet, Call, Storage, Event} = 61, - ParasSudoWrapper: paras_sudo_wrapper::{Pallet, Call} = 62, - Auctions: auctions::{Pallet, Call, Storage, Event} = 63, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 64, - - // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, - } -} - -/// The address format for describing accounts. -pub type Address = sp_runtime::MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// Block type as expected by this runtime. -pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; -/// BlockId type as expected by this runtime. -pub type BlockId = generic::BlockId; -/// The SignedExtension to the basic transaction logic. -pub type SignedExtra = ( - frame_system::CheckSpecVersion, - frame_system::CheckTxVersion, - frame_system::CheckGenesis, - frame_system::CheckMortality, - frame_system::CheckNonce, - frame_system::CheckWeight, - pallet_transaction_payment::ChargeTransactionPayment, -); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Executive: handles dispatch to the various modules. -pub type Executive = frame_executive::Executive< - Runtime, - Block, - frame_system::ChainContext, - Runtime, - AllPallets, - RemoveCollectiveFlip, ->; -/// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; - -pub struct RemoveCollectiveFlip; -impl frame_support::traits::OnRuntimeUpgrade for RemoveCollectiveFlip { - fn on_runtime_upgrade() -> Weight { - use frame_support::storage::migration; - // Remove the storage value `RandomMaterial` from removed pallet `RandomnessCollectiveFlip` - migration::remove_storage_prefix(b"RandomnessCollectiveFlip", b"RandomMaterial", b""); - ::DbWeight::get().writes(1) - } -} - -#[cfg(not(feature = "disable-runtime-api"))] -sp_api::impl_runtime_apis! { - impl sp_api::Core for Runtime { - fn version() -> RuntimeVersion { - VERSION - } - - fn execute_block(block: Block) { - Executive::execute_block(block); - } - - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } - - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() - } - } - - impl block_builder_api::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } - - fn finalize_block() -> ::Header { - Executive::finalize_block() - } - - fn inherent_extrinsics(data: inherents::InherentData) -> Vec<::Extrinsic> { - data.create_extrinsics() - } - - fn check_inherents( - block: Block, - data: inherents::InherentData, - ) -> inherents::CheckInherentsResult { - data.check_extrinsics(&block) - } - } - - impl tx_pool_api::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx) - } - } - - impl offchain_primitives::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } - - impl primitives::v1::ParachainHost for Runtime { - fn validators() -> Vec { - parachains_runtime_api_impl::validators::() - } - - fn validator_groups() -> (Vec>, GroupRotationInfo) { - parachains_runtime_api_impl::validator_groups::() - } - - fn availability_cores() -> Vec> { - parachains_runtime_api_impl::availability_cores::() - } - - fn persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option> { - parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) - } - - fn check_validation_outputs( - para_id: ParaId, - outputs: primitives::v1::CandidateCommitments, - ) -> bool { - parachains_runtime_api_impl::check_validation_outputs::(para_id, outputs) - } - - fn session_index_for_child() -> SessionIndex { - parachains_runtime_api_impl::session_index_for_child::() - } - - fn validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) - -> Option { - parachains_runtime_api_impl::validation_code::(para_id, assumption) - } - - fn candidate_pending_availability(para_id: ParaId) -> Option> { - parachains_runtime_api_impl::candidate_pending_availability::(para_id) - } - - fn candidate_events() -> Vec> { - parachains_runtime_api_impl::candidate_events::(|ev| { - match ev { - Event::ParasInclusion(ev) => { - Some(ev) - } - _ => None, - } - }) - } - - fn session_info(index: SessionIndex) -> Option { - parachains_runtime_api_impl::session_info::(index) - } - - fn dmq_contents(recipient: ParaId) -> Vec> { - parachains_runtime_api_impl::dmq_contents::(recipient) - } - - fn inbound_hrmp_channels_contents( - recipient: ParaId - ) -> BTreeMap>> { - parachains_runtime_api_impl::inbound_hrmp_channels_contents::(recipient) - } - - fn validation_code_by_hash(hash: ValidationCodeHash) -> Option { - parachains_runtime_api_impl::validation_code_by_hash::(hash) - } - } - - impl beefy_primitives::BeefyApi for Runtime { - fn validator_set() -> beefy_primitives::ValidatorSet { - // dummy implementation due to lack of BEEFY pallet. - beefy_primitives::ValidatorSet { validators: Vec::new(), id: 0 } - } - } - - impl pallet_mmr_primitives::MmrApi for Runtime { - fn generate_proof(_leaf_index: u64) - -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::GenerateProof) - } - - fn verify_proof(_leaf: mmr::EncodableOpaqueLeaf, _proof: mmr::Proof) - -> Result<(), mmr::Error> - { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - - fn verify_proof_stateless( - _root: Hash, - _leaf: mmr::EncodableOpaqueLeaf, - _proof: mmr::Proof - ) -> Result<(), mmr::Error> { - // dummy implementation due to lack of MMR pallet. - Err(mmr::Error::Verify) - } - } - - impl fg_primitives::GrandpaApi for Runtime { - fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { - Grandpa::grandpa_authorities() - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: fg_primitives::EquivocationProof< - ::Hash, - sp_runtime::traits::NumberFor, - >, - key_owner_proof: fg_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Grandpa::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - - fn generate_key_ownership_proof( - _set_id: fg_primitives::SetId, - authority_id: fg_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((fg_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(fg_primitives::OpaqueKeyOwnershipProof::new) - } - } - - impl babe_primitives::BabeApi for Runtime { - fn configuration() -> babe_primitives::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - babe_primitives::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } - - fn current_epoch_start() -> babe_primitives::Slot { - Babe::current_epoch_start() - } - - fn current_epoch() -> babe_primitives::Epoch { - Babe::current_epoch() - } - - fn next_epoch() -> babe_primitives::Epoch { - Babe::next_epoch() - } - - fn generate_key_ownership_proof( - _slot: babe_primitives::Slot, - authority_id: babe_primitives::AuthorityId, - ) -> Option { - use parity_scale_codec::Encode; - - Historical::prove((babe_primitives::KEY_TYPE, authority_id)) - .map(|p| p.encode()) - .map(babe_primitives::OpaqueKeyOwnershipProof::new) - } - - fn submit_report_equivocation_unsigned_extrinsic( - equivocation_proof: babe_primitives::EquivocationProof<::Header>, - key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof, - ) -> Option<()> { - let key_owner_proof = key_owner_proof.decode()?; - - Babe::submit_unsigned_equivocation_report( - equivocation_proof, - key_owner_proof, - ) - } - } - - impl authority_discovery_primitives::AuthorityDiscoveryApi for Runtime { - fn authorities() -> Vec { - parachains_runtime_api_impl::relevant_authority_ids::() - } - } - - impl sp_session::SessionKeys for Runtime { - fn generate_session_keys(seed: Option>) -> Vec { - SessionKeys::generate(seed) - } - - fn decode_session_keys( - encoded: Vec, - ) -> Option, sp_core::crypto::KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } - } - - impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { - fn account_nonce(account: AccountId) -> Nonce { - System::account_nonce(account) - } - } - - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< - Block, - Balance, - > for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - TransactionPayment::query_fee_details(uxt, len) - } - } - - #[cfg(feature = "try-runtime")] - impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { - log::info!("try-runtime::on_runtime_upgrade westend."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) - } - } - - #[cfg(feature = "runtime-benchmarks")] - impl frame_benchmarking::Benchmark for Runtime { - fn dispatch_benchmark( - config: frame_benchmarking::BenchmarkConfig, - ) -> Result, RuntimeString> { - use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; - // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency issues. - // To get around that, we separated the Session benchmarks into its own crate, which is why - // we need these two lines below. - use pallet_session_benchmarking::Pallet as SessionBench; - use pallet_offences_benchmarking::Pallet as OffencesBench; - use frame_system_benchmarking::Pallet as SystemBench; - - impl pallet_session_benchmarking::Config for Runtime {} - impl pallet_offences_benchmarking::Config for Runtime {} - impl frame_system_benchmarking::Config for Runtime {} - - let whitelist: Vec = vec![ - // Block Number - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), - // Total Issuance - hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), - // Execution Phase - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), - // Event Count - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), - // System Events - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), - // Treasury Account - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(), - ]; - - let mut batches = Vec::::new(); - let params = (&config, &whitelist); - - // Polkadot - // NOTE: Make sure to prefix these `runtime_common::` so that path resolves correctly - // in the generated file. - add_benchmark!(params, batches, runtime_common::auctions, Auctions); - add_benchmark!(params, batches, runtime_common::crowdloan, Crowdloan); - add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); - add_benchmark!(params, batches, runtime_common::slots, Slots); - // Substrate - add_benchmark!(params, batches, pallet_balances, Balances); - add_benchmark!(params, batches, pallet_election_provider_multi_phase, ElectionProviderMultiPhase); - add_benchmark!(params, batches, pallet_identity, Identity); - add_benchmark!(params, batches, pallet_im_online, ImOnline); - add_benchmark!(params, batches, pallet_indices, Indices); - add_benchmark!(params, batches, pallet_multisig, Multisig); - add_benchmark!(params, batches, pallet_offences, OffencesBench::); - add_benchmark!(params, batches, pallet_proxy, Proxy); - add_benchmark!(params, batches, pallet_scheduler, Scheduler); - add_benchmark!(params, batches, pallet_session, SessionBench::); - add_benchmark!(params, batches, pallet_staking, Staking); - add_benchmark!(params, batches, frame_system, SystemBench::); - add_benchmark!(params, batches, pallet_timestamp, Timestamp); - add_benchmark!(params, batches, pallet_utility, Utility); - add_benchmark!(params, batches, pallet_vesting, Vesting); - - if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } - Ok(batches) - } - } -} diff --git a/runtime/westend/src/tests.rs b/runtime/westend/src/tests.rs deleted file mode 100644 index 54d49d1c84fa..000000000000 --- a/runtime/westend/src/tests.rs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Tests for the Westend Runtime Configuration - -use crate::*; - -#[test] -fn remove_keys_weight_is_sensible() { - use runtime_common::crowdloan::WeightInfo; - let max_weight = ::WeightInfo::refund(RemoveKeysLimit::get()); - // Max remove keys limit should be no more than half the total block weight. - assert!(max_weight * 2 < BlockWeights::get().max_block); -} - -#[test] -fn sample_size_is_sensible() { - use runtime_common::auctions::WeightInfo; - // Need to clean up all samples at the end of an auction. - let samples: BlockNumber = EndingPeriod::get() / SampleLength::get(); - let max_weight: Weight = RocksDbWeight::get().reads_writes(samples.into(), samples.into()); - // Max sample cleanup should be no more than half the total block weight. - assert!(max_weight * 2 < BlockWeights::get().max_block); - assert!(::WeightInfo::on_initialize() * 2 < BlockWeights::get().max_block); -} diff --git a/runtime/westend/src/weights/frame_system.rs b/runtime/westend/src/weights/frame_system.rs deleted file mode 100644 index 89b3533031b2..000000000000 --- a/runtime/westend/src/weights/frame_system.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for frame_system -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=frame_system -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for frame_system. -pub struct WeightInfo(PhantomData); -impl frame_system::WeightInfo for WeightInfo { - fn remark(_b: u32, ) -> Weight { - (1_238_000 as Weight) - } - fn remark_with_event(b: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) - } - fn set_heap_pages() -> Weight { - (1_689_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_changes_trie_config() -> Weight { - (9_679_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn set_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((532_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_storage(i: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((380_000 as Weight).saturating_mul(i as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) - } - fn kill_prefix(p: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 0 - .saturating_add((789_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } -} diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs deleted file mode 100644 index 0dc5bddb0cea..000000000000 --- a/runtime/westend/src/weights/mod.rs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2020 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! A list of the different weight modules for our runtime. - -pub mod frame_system; -pub mod pallet_balances; -pub mod pallet_election_provider_multi_phase; -pub mod pallet_identity; -pub mod pallet_im_online; -pub mod pallet_indices; -pub mod pallet_multisig; -pub mod pallet_proxy; -pub mod pallet_scheduler; -pub mod pallet_session; -pub mod pallet_staking; -pub mod pallet_timestamp; -pub mod pallet_utility; -pub mod pallet_vesting; -pub mod runtime_common_auctions; -pub mod runtime_common_crowdloan; -pub mod runtime_common_paras_registrar; -pub mod runtime_common_slots; diff --git a/runtime/westend/src/weights/pallet_balances.rs b/runtime/westend/src/weights/pallet_balances.rs deleted file mode 100644 index 1fdbb034d67d..000000000000 --- a/runtime/westend/src/weights/pallet_balances.rs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_balances -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_balances -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_balances. -pub struct WeightInfo(PhantomData); -impl pallet_balances::WeightInfo for WeightInfo { - fn transfer() -> Weight { - (72_675_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer_keep_alive() -> Weight { - (53_454_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_creating() -> Weight { - (28_750_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_balance_killing() -> Weight { - (35_013_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (72_130_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn transfer_all() -> Weight { - (66_281_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs b/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs deleted file mode 100644 index 196c4252aa0a..000000000000 --- a/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_election_provider_multi_phase -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_election_provider_multi_phase -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_election_provider_multi_phase. -pub struct WeightInfo(PhantomData); -impl pallet_election_provider_multi_phase::WeightInfo for WeightInfo { - fn on_initialize_nothing() -> Weight { - (23_792_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - } - fn on_initialize_open_signed() -> Weight { - (86_272_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_with_snapshot() -> Weight { - (85_465_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize_open_unsigned_without_snapshot() -> Weight { - (17_864_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn elect_queued() -> Weight { - (5_511_380_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - } - fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 12_000 - .saturating_add((3_399_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 43_000 - .saturating_add((169_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 12_000 - .saturating_add((10_510_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 64_000 - .saturating_add((3_259_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn feasibility_check(v: u32, t: u32, a: u32, d: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 7_000 - .saturating_add((3_426_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 25_000 - .saturating_add((419_000 as Weight).saturating_mul(t as Weight)) - // Standard Error: 7_000 - .saturating_add((8_695_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 38_000 - .saturating_add((3_731_000 as Weight).saturating_mul(d as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_identity.rs b/runtime/westend/src/weights/pallet_identity.rs deleted file mode 100644 index 229eee38a0cb..000000000000 --- a/runtime/westend/src/weights/pallet_identity.rs +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_identity -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_identity -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_identity. -pub struct WeightInfo(PhantomData); -impl pallet_identity::WeightInfo for WeightInfo { - fn add_registrar(r: u32, ) -> Weight { - (20_868_000 as Weight) - // Standard Error: 2_000 - .saturating_add((228_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_identity(r: u32, x: u32, ) -> Weight { - (50_889_000 as Weight) - // Standard Error: 14_000 - .saturating_add((193_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((934_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_subs_new(s: u32, ) -> Weight { - (39_392_000 as Weight) - // Standard Error: 1_000 - .saturating_add((6_164_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn set_subs_old(p: u32, ) -> Weight { - (40_206_000 as Weight) - // Standard Error: 0 - .saturating_add((2_006_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(p as Weight))) - } - fn clear_identity(r: u32, s: u32, x: u32, ) -> Weight { - (49_355_000 as Weight) - // Standard Error: 10_000 - .saturating_add((89_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((1_997_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 1_000 - .saturating_add((605_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn request_judgement(r: u32, x: u32, ) -> Weight { - (51_505_000 as Weight) - // Standard Error: 10_000 - .saturating_add((290_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((1_159_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel_request(r: u32, x: u32, ) -> Weight { - (48_609_000 as Weight) - // Standard Error: 7_000 - .saturating_add((132_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_000 - .saturating_add((1_141_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fee(r: u32, ) -> Weight { - (7_565_000 as Weight) - // Standard Error: 0 - .saturating_add((190_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_account_id(r: u32, ) -> Weight { - (8_260_000 as Weight) - // Standard Error: 1_000 - .saturating_add((190_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_fields(r: u32, ) -> Weight { - (7_681_000 as Weight) - // Standard Error: 1_000 - .saturating_add((190_000 as Weight).saturating_mul(r as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn provide_judgement(r: u32, x: u32, ) -> Weight { - (33_891_000 as Weight) - // Standard Error: 5_000 - .saturating_add((230_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_139_000 as Weight).saturating_mul(x as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_identity(r: u32, s: u32, _x: u32, ) -> Weight { - (50_289_000 as Weight) - // Standard Error: 6_000 - .saturating_add((63_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 0 - .saturating_add((1_985_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn add_sub(s: u32, ) -> Weight { - (52_741_000 as Weight) - // Standard Error: 0 - .saturating_add((144_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn rename_sub(s: u32, ) -> Weight { - (15_775_000 as Weight) - // Standard Error: 0 - .saturating_add((22_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_sub(s: u32, ) -> Weight { - (54_310_000 as Weight) - // Standard Error: 0 - .saturating_add((126_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn quit_sub(s: u32, ) -> Weight { - (33_162_000 as Weight) - // Standard Error: 0 - .saturating_add((125_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_im_online.rs b/runtime/westend/src/weights/pallet_im_online.rs deleted file mode 100644 index 862f896a5ffb..000000000000 --- a/runtime/westend/src/weights/pallet_im_online.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_im_online -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_im_online -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_im_online. -pub struct WeightInfo(PhantomData); -impl pallet_im_online::WeightInfo for WeightInfo { - fn validate_unsigned_and_then_heartbeat(k: u32, e: u32, ) -> Weight { - (88_602_000 as Weight) - // Standard Error: 0 - .saturating_add((169_000 as Weight).saturating_mul(k as Weight)) - // Standard Error: 1_000 - .saturating_add((325_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_indices.rs b/runtime/westend/src/weights/pallet_indices.rs deleted file mode 100644 index ebab9cdc1950..000000000000 --- a/runtime/westend/src/weights/pallet_indices.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_indices -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_indices -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_indices. -pub struct WeightInfo(PhantomData); -impl pallet_indices::WeightInfo for WeightInfo { - fn claim() -> Weight { - (38_980_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn transfer() -> Weight { - (46_875_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn free() -> Weight { - (38_813_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_transfer() -> Weight { - (38_848_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn freeze() -> Weight { - (36_403_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_multisig.rs b/runtime/westend/src/weights/pallet_multisig.rs deleted file mode 100644 index c79ff762dab1..000000000000 --- a/runtime/westend/src/weights/pallet_multisig.rs +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_multisig -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_multisig -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_multisig. -pub struct WeightInfo(PhantomData); -impl pallet_multisig::WeightInfo for WeightInfo { - fn as_multi_threshold_1(_z: u32, ) -> Weight { - (10_239_000 as Weight) - } - fn as_multi_create(s: u32, z: u32, ) -> Weight { - (50_062_000 as Weight) - // Standard Error: 0 - .saturating_add((88_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (55_485_000 as Weight) - // Standard Error: 0 - .saturating_add((90_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (29_381_000 as Weight) - // Standard Error: 0 - .saturating_add((83_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (53_339_000 as Weight) - // Standard Error: 0 - .saturating_add((100_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (70_481_000 as Weight) - // Standard Error: 0 - .saturating_add((193_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn approve_as_multi_create(s: u32, ) -> Weight { - (49_991_000 as Weight) - // Standard Error: 0 - .saturating_add((86_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_approve(s: u32, ) -> Weight { - (28_369_000 as Weight) - // Standard Error: 0 - .saturating_add((87_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn approve_as_multi_complete(s: u32, ) -> Weight { - (121_416_000 as Weight) - // Standard Error: 0 - .saturating_add((196_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn cancel_as_multi(s: u32, ) -> Weight { - (87_265_000 as Weight) - // Standard Error: 0 - .saturating_add((90_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_proxy.rs b/runtime/westend/src/weights/pallet_proxy.rs deleted file mode 100644 index 3c649859aa49..000000000000 --- a/runtime/westend/src/weights/pallet_proxy.rs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_proxy -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_proxy -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_proxy. -pub struct WeightInfo(PhantomData); -impl pallet_proxy::WeightInfo for WeightInfo { - fn proxy(p: u32, ) -> Weight { - (24_799_000 as Weight) - // Standard Error: 1_000 - .saturating_add((132_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - fn proxy_announced(a: u32, p: u32, ) -> Weight { - (56_202_000 as Weight) - // Standard Error: 6_000 - .saturating_add((502_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 7_000 - .saturating_add((68_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn remove_announcement(a: u32, _p: u32, ) -> Weight { - (37_003_000 as Weight) - // Standard Error: 1_000 - .saturating_add((498_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn reject_announcement(a: u32, _p: u32, ) -> Weight { - (36_932_000 as Weight) - // Standard Error: 1_000 - .saturating_add((499_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn announce(a: u32, p: u32, ) -> Weight { - (50_165_000 as Weight) - // Standard Error: 1_000 - .saturating_add((499_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((118_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn add_proxy(p: u32, ) -> Weight { - (35_416_000 as Weight) - // Standard Error: 1_000 - .saturating_add((191_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxy(p: u32, ) -> Weight { - (35_237_000 as Weight) - // Standard Error: 2_000 - .saturating_add((216_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn remove_proxies(p: u32, ) -> Weight { - (33_872_000 as Weight) - // Standard Error: 1_000 - .saturating_add((134_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn anonymous(p: u32, ) -> Weight { - (47_651_000 as Weight) - // Standard Error: 1_000 - .saturating_add((27_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn kill_anonymous(p: u32, ) -> Weight { - (35_319_000 as Weight) - // Standard Error: 1_000 - .saturating_add((137_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_scheduler.rs b/runtime/westend/src/weights/pallet_scheduler.rs deleted file mode 100644 index 9629137d125f..000000000000 --- a/runtime/westend/src/weights/pallet_scheduler.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_scheduler -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_scheduler -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_scheduler. -pub struct WeightInfo(PhantomData); -impl pallet_scheduler::WeightInfo for WeightInfo { - fn schedule(s: u32, ) -> Weight { - (27_538_000 as Weight) - // Standard Error: 0 - .saturating_add((42_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn cancel(s: u32, ) -> Weight { - (26_898_000 as Weight) - // Standard Error: 14_000 - .saturating_add((3_721_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn schedule_named(s: u32, ) -> Weight { - (33_405_000 as Weight) - // Standard Error: 1_000 - .saturating_add((58_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn cancel_named(s: u32, ) -> Weight { - (28_566_000 as Weight) - // Standard Error: 14_000 - .saturating_add((3_731_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_session.rs b/runtime/westend/src/weights/pallet_session.rs deleted file mode 100644 index 862dff0cc69b..000000000000 --- a/runtime/westend/src/weights/pallet_session.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_session -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_session -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_session. -pub struct WeightInfo(PhantomData); -impl pallet_session::WeightInfo for WeightInfo { - fn set_keys() -> Weight { - (71_267_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } - fn purge_keys() -> Weight { - (39_990_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_staking.rs b/runtime/westend/src/weights/pallet_staking.rs deleted file mode 100644 index af76c64e1889..000000000000 --- a/runtime/westend/src/weights/pallet_staking.rs +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_staking -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_staking -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_staking. -pub struct WeightInfo(PhantomData); -impl pallet_staking::WeightInfo for WeightInfo { - fn bond() -> Weight { - (69_787_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn bond_extra() -> Weight { - (53_774_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn unbond() -> Weight { - (57_805_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_update(s: u32, ) -> Weight { - (49_787_000 as Weight) - // Standard Error: 0 - .saturating_add((23_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn withdraw_unbonded_kill(s: u32, ) -> Weight { - (81_664_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_238_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn validate() -> Weight { - (31_287_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn kick(k: u32, ) -> Weight { - (10_445_000 as Weight) - // Standard Error: 9_000 - .saturating_add((16_845_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) - } - fn nominate(n: u32, ) -> Weight { - (38_344_000 as Weight) - // Standard Error: 15_000 - .saturating_add((5_321_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn chill() -> Weight { - (17_221_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - } - fn set_payee() -> Weight { - (11_371_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_controller() -> Weight { - (25_217_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_validator_count() -> Weight { - (2_092_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_no_eras() -> Weight { - (2_339_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era() -> Weight { - (2_359_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_new_era_always() -> Weight { - (2_324_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn set_invulnerables(v: u32, ) -> Weight { - (2_318_000 as Weight) - // Standard Error: 0 - .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn force_unstake(s: u32, ) -> Weight { - (57_794_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_215_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn cancel_deferred_slash(s: u32, ) -> Weight { - (3_389_533_000 as Weight) - // Standard Error: 221_000 - .saturating_add((19_801_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn payout_stakers_dead_controller(n: u32, ) -> Weight { - (106_909_000 as Weight) - // Standard Error: 39_000 - .saturating_add((47_300_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) - } - fn payout_stakers_alive_staked(n: u32, ) -> Weight { - (132_392_000 as Weight) - // Standard Error: 36_000 - .saturating_add((58_988_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) - } - fn rebond(l: u32, ) -> Weight { - (46_661_000 as Weight) - // Standard Error: 1_000 - .saturating_add((67_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn set_history_depth(e: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 65_000 - .saturating_add((33_444_000 as Weight).saturating_mul(e as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) - } - fn reap_stash(s: u32, ) -> Weight { - (68_870_000 as Weight) - // Standard Error: 0 - .saturating_add((2_211_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) - } - fn new_era(v: u32, n: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 909_000 - .saturating_add((300_182_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 45_000 - .saturating_add((48_335_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) - } - fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 97_000 - .saturating_add((26_275_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 97_000 - .saturating_add((28_529_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_318_000 - .saturating_add((53_298_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) - } - fn get_npos_targets(v: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 32_000 - .saturating_add((10_999_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) - } - fn update_staking_limits() -> Weight { - (4_846_000 as Weight) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn chill_other() -> Weight { - (32_703_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_timestamp.rs b/runtime/westend/src/weights/pallet_timestamp.rs deleted file mode 100644 index 577bcc8f8612..000000000000 --- a/runtime/westend/src/weights/pallet_timestamp.rs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_timestamp -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_timestamp -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_timestamp. -pub struct WeightInfo(PhantomData); -impl pallet_timestamp::WeightInfo for WeightInfo { - fn set() -> Weight { - (9_227_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_finalize() -> Weight { - (4_028_000 as Weight) - } -} diff --git a/runtime/westend/src/weights/pallet_utility.rs b/runtime/westend/src/weights/pallet_utility.rs deleted file mode 100644 index 1471eacbc250..000000000000 --- a/runtime/westend/src/weights/pallet_utility.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_utility -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_utility -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_utility. -pub struct WeightInfo(PhantomData); -impl pallet_utility::WeightInfo for WeightInfo { - fn batch(c: u32, ) -> Weight { - (15_158_000 as Weight) - // Standard Error: 0 - .saturating_add((2_641_000 as Weight).saturating_mul(c as Weight)) - } - fn as_derivative() -> Weight { - (5_540_000 as Weight) - } - fn batch_all(c: u32, ) -> Weight { - (17_590_000 as Weight) - // Standard Error: 0 - .saturating_add((3_269_000 as Weight).saturating_mul(c as Weight)) - } -} diff --git a/runtime/westend/src/weights/pallet_vesting.rs b/runtime/westend/src/weights/pallet_vesting.rs deleted file mode 100644 index c0fa7850babd..000000000000 --- a/runtime/westend/src/weights/pallet_vesting.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for pallet_vesting -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-18, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=pallet_vesting -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for pallet_vesting. -pub struct WeightInfo(PhantomData); -impl pallet_vesting::WeightInfo for WeightInfo { - fn vest_locked(l: u32, ) -> Weight { - (40_663_000 as Weight) - // Standard Error: 20_000 - .saturating_add((232_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn vest_unlocked(l: u32, ) -> Weight { - (44_310_000 as Weight) - // Standard Error: 11_000 - .saturating_add((172_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_locked(l: u32, ) -> Weight { - (40_981_000 as Weight) - // Standard Error: 19_000 - .saturating_add((218_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn vest_other_unlocked(l: u32, ) -> Weight { - (43_731_000 as Weight) - // Standard Error: 16_000 - .saturating_add((194_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn vested_transfer(l: u32, ) -> Weight { - (96_952_000 as Weight) - // Standard Error: 15_000 - .saturating_add((206_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn force_vested_transfer(l: u32, ) -> Weight { - (96_519_000 as Weight) - // Standard Error: 15_000 - .saturating_add((204_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } -} diff --git a/runtime/westend/src/weights/runtime_common_auctions.rs b/runtime/westend/src/weights/runtime_common_auctions.rs deleted file mode 100644 index c4d398faacd3..000000000000 --- a/runtime/westend/src/weights/runtime_common_auctions.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::auctions -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-24, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::auctions -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/runtime_common_auctions.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::auctions. -pub struct WeightInfo(PhantomData); -impl runtime_common::auctions::WeightInfo for WeightInfo { - fn new_auction() -> Weight { - (29_966_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn bid() -> Weight { - (152_563_000 as Weight) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize() -> Weight { - (32_736_787_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3688 as Weight)) - .saturating_add(T::DbWeight::get().writes(3683 as Weight)) - } - fn cancel_auction() -> Weight { - (7_057_595_000 as Weight) - .saturating_add(T::DbWeight::get().reads(73 as Weight)) - .saturating_add(T::DbWeight::get().writes(3673 as Weight)) - } -} diff --git a/runtime/westend/src/weights/runtime_common_crowdloan.rs b/runtime/westend/src/weights/runtime_common_crowdloan.rs deleted file mode 100644 index 060e481ed66e..000000000000 --- a/runtime/westend/src/weights/runtime_common_crowdloan.rs +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::crowdloan -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-24, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::crowdloan -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/runtime_common_crowdloan.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::crowdloan. -pub struct WeightInfo(PhantomData); -impl runtime_common::crowdloan::WeightInfo for WeightInfo { - fn create() -> Weight { - (95_715_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } - fn contribute() -> Weight { - (500_788_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn withdraw() -> Weight { - (127_448_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn refund(k: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 53_000 - .saturating_add((56_113_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(k as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(k as Weight))) - } - fn dissolve() -> Weight { - (71_359_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn edit() -> Weight { - (43_194_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn add_memo() -> Weight { - (65_648_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn poke() -> Weight { - (51_082_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_initialize(n: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 31_000 - .saturating_add((134_501_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) - } -} diff --git a/runtime/westend/src/weights/runtime_common_paras_registrar.rs b/runtime/westend/src/weights/runtime_common_paras_registrar.rs deleted file mode 100644 index 3526923a7d21..000000000000 --- a/runtime/westend/src/weights/runtime_common_paras_registrar.rs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::paras_registrar -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-21, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::paras_registrar -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/runtime_common_paras_registrar.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::paras_registrar. -pub struct WeightInfo(PhantomData); -impl runtime_common::paras_registrar::WeightInfo for WeightInfo { - fn reserve() -> Weight { - (58_328_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn register() -> Weight { - (4_162_851_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn force_register() -> Weight { - (4_141_674_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn deregister() -> Weight { - (91_960_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn swap() -> Weight { - (79_489_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) - } -} diff --git a/runtime/westend/src/weights/runtime_common_slots.rs b/runtime/westend/src/weights/runtime_common_slots.rs deleted file mode 100644 index 4a9f022327e3..000000000000 --- a/runtime/westend/src/weights/runtime_common_slots.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . -//! Autogenerated weights for runtime_common::slots -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-06-25, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=runtime_common::slots -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/runtime_common_slots.rs - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for runtime_common::slots. -pub struct WeightInfo(PhantomData); -impl runtime_common::slots::WeightInfo for WeightInfo { - fn force_lease() -> Weight { - (53_939_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn manage_lease_period_start(c: u32, t: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 37_000 - .saturating_add((19_723_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 37_000 - .saturating_add((42_186_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(t as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(t as Weight))) - } - fn clear_all_leases() -> Weight { - (249_570_000 as Weight) - .saturating_add(T::DbWeight::get().reads(9 as Weight)) - .saturating_add(T::DbWeight::get().writes(9 as Weight)) - } - fn trigger_onboard() -> Weight { - (49_692_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - } -} diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 000000000000..082150daf04e --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,24 @@ +# Basic +hard_tabs = true +max_width = 100 +use_small_heuristics = "Max" +# Imports +imports_granularity = "Crate" +reorder_imports = true +# Consistency +newline_style = "Unix" +# Format comments +comment_width = 100 +wrap_comments = true +# Misc +chain_width = 80 +spaces_around_ranges = false +binop_separator = "Back" +reorder_impl_items = false +match_arm_leading_pipes = "Preserve" +match_arm_blocks = false +match_block_trailing_comma = true +trailing_comma = "Vertical" +trailing_semicolon = false +use_field_init_shorthand = true + diff --git a/bridges/scripts/add_license.sh b/scripts/add_license.sh similarity index 100% rename from bridges/scripts/add_license.sh rename to scripts/add_license.sh diff --git a/scripts/adder-collator.sh b/scripts/adder-collator.sh deleted file mode 100755 index 8f98aba24c62..000000000000 --- a/scripts/adder-collator.sh +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env bash - -# Run a two node local net with adder-collator. - -set -e - -chainspec="rococo-local" - -# disabled until we can actually successfully register the chain with polkadot-js-api -# if ! command -v polkadot-js-api > /dev/null; then -# echo "polkadot-js-api required; try" -# echo " sudo yarn global add @polkadot/api-cli" -# exit 1 -# fi - -PROJECT_ROOT=$(git rev-parse --show-toplevel) -# shellcheck disable=SC1090 -source "$(dirname "$0")"/common.sh - -cd "$PROJECT_ROOT" - -last_modified_rust_file=$( - find . -path ./target -prune -o -type f -name '*.rs' -printf '%T@ %p\n' | - sort -nr | - head -1 | - cut -d' ' -f2- -) - -polkadot="target/release/polkadot" -adder_collator="target/release/adder-collator" - -# ensure the polkadot binary exists and is up to date -if [ ! -x "$polkadot" ] || [ "$polkadot" -ot "$last_modified_rust_file" ]; then - cargo build --release -fi -# likewise for the adder collator -if [ ! -x "$adder_collator" ] || [ "$adder_collator" -ot "$last_modified_rust_file" ]; then - cargo build --release -p test-parachain-adder-collator -fi - -genesis="$(mktemp --directory)" -genesis_state="$genesis/state" -validation_code="$genesis/validation_code" - -"$adder_collator" export-genesis-state > "$genesis_state" -"$adder_collator" export-genesis-wasm > "$validation_code" - - -# setup variables -node_offset=0 -declare -a node_pids -declare -a node_pipes - -# create a sed expression which injects the node name and stream type into each line -function make_sed_expr() { - name="$1" - type="$2" - - printf "s/^/%16s %s: /" "$name" "$type" -} - -# turn a string into a flag -function flagify() { - printf -- '--%s' "$(tr '[:upper:]' '[:lower:]' <<< "$1")" -} - -# start a node and label its output -# -# This function takes a single argument, the node name. -# The name must be one of those which can be passed to the polkadot binary, in un-flagged form, -# one of: -# alice, bob, charlie, dave, eve, ferdie, one, two -function run_node() { - name="$1" - # create a named pipe so we can get the node's PID while also sedding its output - local stdout - local stderr - stdout=$(mktemp --dry-run --tmpdir) - stderr=$(mktemp --dry-run --tmpdir) - mkfifo "$stdout" - mkfifo "$stderr" - node_pipes+=("$stdout") - node_pipes+=("$stderr") - - # compute ports from offset - local port=$((30333+node_offset)) - local rpc_port=$((9933+node_offset)) - local ws_port=$((9944+node_offset)) - local prometheus_port=$((9615+node_offset)) - node_offset=$((node_offset+1)) - - # start the node - "$polkadot" \ - --chain "$chainspec" \ - --tmp \ - --port "$port" \ - --rpc-port "$rpc_port" \ - --ws-port "$ws_port" \ - --prometheus-port "$prometheus_port" \ - --rpc-cors all \ - "$(flagify "$name")" \ - > "$stdout" \ - 2> "$stderr" \ - & - local pid=$! - node_pids+=("$pid") - - # send output from the stdout pipe to stdout, prepending the node name - sed -e "$(make_sed_expr "$name" "OUT")" "$stdout" >&1 & - # send output from the stderr pipe to stderr, prepending the node name - sed -e "$(make_sed_expr "$name" "ERR")" "$stderr" >&2 & -} - -# start an adder collator and label its output -# -# This function takes a single argument, the node name. This affects only the tagging. -function run_adder_collator() { - name="$1" - # create a named pipe so we can get the node's PID while also sedding its output - local stdout - local stderr - stdout=$(mktemp --dry-run --tmpdir) - stderr=$(mktemp --dry-run --tmpdir) - mkfifo "$stdout" - mkfifo "$stderr" - node_pipes+=("$stdout") - node_pipes+=("$stderr") - - # compute ports from offset - local port=$((30333+node_offset)) - local rpc_port=$((9933+node_offset)) - local ws_port=$((9944+node_offset)) - local prometheus_port=$((9615+node_offset)) - node_offset=$((node_offset+1)) - - # start the node - "$adder_collator" \ - --chain "$chainspec" \ - --tmp \ - --port "$port" \ - --rpc-port "$rpc_port" \ - --ws-port "$ws_port" \ - --prometheus-port "$prometheus_port" \ - --rpc-cors all \ - > "$stdout" \ - 2> "$stderr" \ - & - local pid=$! - node_pids+=("$pid") - - # send output from the stdout pipe to stdout, prepending the node name - sed -e "$(make_sed_expr "$name" "OUT")" "$stdout" >&1 & - # send output from the stderr pipe to stderr, prepending the node name - sed -e "$(make_sed_expr "$name" "ERR")" "$stderr" >&2 & -} - - -# clean up the nodes when this script exits -function finish { - for node_pid in "${node_pids[@]}"; do - kill -9 "$node_pid" - done - for node_pipe in "${node_pipes[@]}"; do - rm "$node_pipe" - done - rm -rf "$genesis" -} -trap finish EXIT - -# start the nodes -run_node Alice -run_node Bob -run_adder_collator AdderCollator - -# register the adder collator -# doesn't work yet due to https://github.com/polkadot-js/tools/issues/185 -# polkadot-js-api \ -# --ws ws://localhost:9944 \ -# --sudo \ -# --seed "//Alice" \ -# tx.registrar.registerPara \ -# 100 \ -# '{"scheduling":"Always"}' \ -# "@$validation_code" \ -# "@$genesis_state" - -# now wait; this will exit on its own only if both subprocesses exit -# the practical implication, as both subprocesses are supposed to run forever, is that -# this script will also run forever, until killed, at which point the exit trap should kill -# the subprocesses -wait diff --git a/scripts/build-demos.sh b/scripts/build-demos.sh deleted file mode 100755 index 285da143c17d..000000000000 --- a/scripts/build-demos.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# This script assumes that all pre-requisites are installed. - -set -e - -PROJECT_ROOT=`git rev-parse --show-toplevel` -source `dirname "$0"`/common.sh - -export CARGO_INCREMENTAL=0 - -# Save current directory. -pushd . - -cd $ROOT - -for DEMO in "${DEMOS[@]}" -do - echo "*** Building wasm binaries in $DEMO" - cd "$PROJECT_ROOT/$DEMO" - - ./build.sh - - cd - >> /dev/null -done - -# Restore initial directory. -popd diff --git a/scripts/build-only-wasm.sh b/scripts/build-only-wasm.sh deleted file mode 100755 index b6da3319c821..000000000000 --- a/scripts/build-only-wasm.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env sh - -# Script for building only the WASM binary of the given project. - -set -e - -PROJECT_ROOT=`git rev-parse --show-toplevel` - -if [ "$#" -lt 1 ]; then - echo "You need to pass the name of the crate you want to compile!" - exit 1 -fi - -WASM_BUILDER_RUNNER="$PROJECT_ROOT/target/release/wbuild-runner/$1" - -if [ -z "$2" ]; then - export WASM_TARGET_DIRECTORY=$(pwd) -else - export WASM_TARGET_DIRECTORY=$2 -fi - -if [ -d $WASM_BUILDER_RUNNER ]; then - export DEBUG=false - export OUT_DIR="$PROJECT_ROOT/target/release/build" - cargo run --release --manifest-path="$WASM_BUILDER_RUNNER/Cargo.toml" \ - | grep -vE "cargo:rerun-if-|Executing build command" -else - cargo build --release -p $1 -fi diff --git a/bridges/scripts/ci-cache.sh b/scripts/ci-cache.sh similarity index 100% rename from bridges/scripts/ci-cache.sh rename to scripts/ci-cache.sh diff --git a/scripts/common.sh b/scripts/common.sh deleted file mode 100644 index 56e16bd48121..000000000000 --- a/scripts/common.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -ROOT=`dirname "$0"` - -# A list of directories which contain wasm projects. -SRCS=( - "runtime/wasm" -) - -DEMOS=( - "test-parachains/" -) - -# Make pushd/popd silent. - -pushd () { - command pushd "$@" > /dev/null -} - -popd () { - command popd "$@" > /dev/null -} diff --git a/scripts/common/lib.sh b/scripts/common/lib.sh deleted file mode 100755 index 93e0392b3e29..000000000000 --- a/scripts/common/lib.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/sh - -api_base="https://api.github.com/repos" - -# Function to take 2 git tags/commits and get any lines from commit messages -# that contain something that looks like a PR reference: e.g., (#1234) -sanitised_git_logs(){ - git --no-pager log --pretty=format:"%s" "$1...$2" | - # Only find messages referencing a PR - grep -E '\(#[0-9]+\)' | - # Strip any asterisks - sed 's/^* //g' -} - -# Checks whether a tag on github has been verified -# repo: 'organization/repo' -# tagver: 'v1.2.3' -# Usage: check_tag $repo $tagver -check_tag () { - repo=$1 - tagver=$2 - if [ -n "$GITHUB_RELEASE_TOKEN" ]; then - echo '[+] Fetching tag using privileged token' - tag_out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/git/refs/tags/$tagver") - else - echo '[+] Fetching tag using unprivileged token' - tag_out=$(curl -H "Authorization: token $GITHUB_PR_TOKEN" -s "$api_base/$repo/git/refs/tags/$tagver") - fi - tag_sha=$(echo "$tag_out" | jq -r .object.sha) - object_url=$(echo "$tag_out" | jq -r .object.url) - if [ "$tag_sha" = "null" ]; then - return 2 - fi - echo "[+] Tag object SHA: $tag_sha" - verified_str=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$object_url" | jq -r .verification.verified) - if [ "$verified_str" = "true" ]; then - # Verified, everything is good - return 0 - else - # Not verified. Bad juju. - return 1 - fi -} - -# Checks whether a given PR has a given label. -# repo: 'organization/repo' -# pr_id: 12345 -# label: B1-silent -# Usage: has_label $repo $pr_id $label -has_label(){ - repo="$1" - pr_id="$2" - label="$3" - - # These will exist if the function is called in Gitlab. - # If the function's called in Github, we should have GITHUB_ACCESS_TOKEN set - # already. - if [ -n "$GITHUB_RELEASE_TOKEN" ]; then - GITHUB_TOKEN="$GITHUB_RELEASE_TOKEN" - elif [ -n "$GITHUB_PR_TOKEN" ]; then - GITHUB_TOKEN="$GITHUB_PR_TOKEN" - fi - - out=$(curl -H "Authorization: token $GITHUB_TOKEN" -s "$api_base/$repo/pulls/$pr_id") - [ -n "$(echo "$out" | tr -d '\r\n' | jq ".labels | .[] | select(.name==\"$label\")")" ] -} - -github_label () { - echo - echo "# run github-api job for labeling it ${1}" - curl -sS -X POST \ - -F "token=${CI_JOB_TOKEN}" \ - -F "ref=master" \ - -F "variables[LABEL]=${1}" \ - -F "variables[PRNO]=${CI_COMMIT_REF_NAME}" \ - -F "variables[PROJECT]=paritytech/polkadot" \ - "${GITLAB_API}/projects/${GITHUB_API_PROJECT}/trigger/pipeline" -} - -# Formats a message into a JSON string for posting to Matrix -# message: 'any plaintext message' -# formatted_message: 'optional message formatted in html' -# Usage: structure_message $content $formatted_content (optional) -structure_message() { - if [ -z "$2" ]; then - body=$(jq -Rs --arg body "$1" '{"msgtype": "m.text", $body}' < /dev/null) - else - body=$(jq -Rs --arg body "$1" --arg formatted_body "$2" '{"msgtype": "m.text", $body, "format": "org.matrix.custom.html", $formatted_body}' < /dev/null) - fi - echo "$body" -} - -# Post a message to a matrix room -# body: '{body: "JSON string produced by structure_message"}' -# room_id: !fsfSRjgjBWEWffws:matrix.parity.io -# access_token: see https://matrix.org/docs/guides/client-server-api/ -# Usage: send_message $body (json formatted) $room_id $access_token -send_message() { -curl -XPOST -d "$1" "https://matrix.parity.io/_matrix/client/r0/rooms/$2/send/m.room.message?access_token=$3" -} - -# Pretty-printing functions -boldprint () { printf "|\n| \033[1m%s\033[0m\n|\n" "${@}"; } -boldcat () { printf "|\n"; while read -r l; do printf "| \033[1m%s\033[0m\n" "${l}"; done; printf "|\n" ; } - -skip_if_companion_pr() { - url="https://api.github.com/repos/paritytech/polkadot/pulls/${CI_COMMIT_REF_NAME}" - echo "[+] API URL: $url" - - pr_title=$(curl -sSL -H "Authorization: token ${GITHUB_PR_TOKEN}" "$url" | jq -r .title) - echo "[+] PR title: $pr_title" - - if echo "$pr_title" | grep -qi '^companion'; then - echo "[!] PR is a companion PR. Build is already done in substrate" - exit 0 - else - echo "[+] PR is not a companion PR. Proceeding test" - fi -} - -# Fetches the tag name of the latest release from a repository -# repo: 'organisation/repo' -# Usage: latest_release 'paritytech/polkadot' -latest_release() { - curl -s "$api_base/$1/releases/latest" | jq -r '.tag_name' -} - -# Check for runtime changes between two commits. This is defined as any changes -# to /primitives/src/* and any *production* chains under /runtime -has_runtime_changes() { - from=$1 - to=$2 - - if git diff --name-only "${from}...${to}" \ - | grep -q -e '^runtime/polkadot' -e '^runtime/kusama' -e '^primitives/src/' -e '^runtime/common' - then - return 0 - else - return 1 - fi -} diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile deleted file mode 100644 index 9052892c3f63..000000000000 --- a/scripts/docker/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -FROM debian:buster-slim - -# metadata -ARG VCS_REF -ARG BUILD_DATE -ARG IMAGE_NAME - -LABEL io.parity.image.authors="devops-team@parity.io" \ - io.parity.image.vendor="Parity Technologies" \ - io.parity.image.title="${IMAGE_NAME}" \ - io.parity.image.description="polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ - io.parity.image.revision="${VCS_REF}" \ - io.parity.image.created="${BUILD_DATE}" \ - io.parity.image.documentation="https://github.com/paritytech/polkadot/" - -# show backtraces -ENV RUST_BACKTRACE 1 - -# install tools and dependencies -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - libssl1.1 \ - ca-certificates \ - curl && \ -# apt cleanup - apt-get autoremove -y && \ - apt-get clean && \ - find /var/lib/apt/lists/ -type f -not -name lock -delete; \ -# add user and link ~/.local/share/polkadot to /data - useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ - mkdir -p /data /polkadot/.local/share && \ - chown -R polkadot:polkadot /data && \ - ln -s /data /polkadot/.local/share/polkadot - -# add polkadot binary to docker image -COPY ./polkadot /usr/local/bin - -USER polkadot - -# check if executable works in this container -RUN /usr/local/bin/polkadot --version - -EXPOSE 30333 9933 9944 -VOLUME ["/polkadot"] - -ENTRYPOINT ["/usr/local/bin/polkadot"] diff --git a/scripts/docker/collator.Dockerfile b/scripts/docker/collator.Dockerfile deleted file mode 100644 index 9e25c55df55e..000000000000 --- a/scripts/docker/collator.Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -FROM debian:buster-slim - -# metadata -ARG VCS_REF -ARG BUILD_DATE -ARG IMAGE_NAME - -LABEL io.parity.image.authors="devops-team@parity.io" \ - io.parity.image.vendor="Parity Technologies" \ - io.parity.image.title="${IMAGE_NAME}" \ - io.parity.image.description="polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ - io.parity.image.revision="${VCS_REF}" \ - io.parity.image.created="${BUILD_DATE}" \ - io.parity.image.documentation="https://github.com/paritytech/polkadot/" - -# show backtraces -ENV RUST_BACKTRACE 1 - -# install tools and dependencies -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - libssl1.1 \ - ca-certificates \ - curl && \ -# apt cleanup - apt-get autoremove -y && \ - apt-get clean && \ - find /var/lib/apt/lists/ -type f -not -name lock -delete; \ -# add user and link ~/.local/share/adder-collator to /data - useradd -m -u 1000 -U -s /bin/sh -d /adder-collator adder-collator && \ - mkdir -p /data /adder-collator/.local/share && \ - chown -R adder-collator:adder-collator /data && \ - ln -s /data /adder-collator/.local/share/polkadot - -# add adder-collator binary to docker image -COPY ./adder-collator /usr/local/bin - -USER adder-collator - -# check if executable works in this container -RUN /usr/local/bin/adder-collator --version - -EXPOSE 30333 9933 9944 -VOLUME ["/adder-collator"] - -ENTRYPOINT ["/usr/local/bin/adder-collator"] diff --git a/scripts/docker/release.Dockerfile b/scripts/docker/release.Dockerfile deleted file mode 100644 index 912c5fd4ae02..000000000000 --- a/scripts/docker/release.Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM debian:buster-slim - -# metadata -ARG VCS_REF -ARG BUILD_DATE -ARG POLKADOT_VERSION - -LABEL io.parity.image.authors="devops-team@parity.io" \ - io.parity.image.vendor="Parity Technologies" \ - io.parity.image.title="parity/polkadot" \ - io.parity.image.description="polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ - io.parity.image.revision="${VCS_REF}" \ - io.parity.image.created="${BUILD_DATE}" \ - io.parity.image.documentation="https://github.com/paritytech/polkadot/" - -# show backtraces -ENV RUST_BACKTRACE 1 - -# install tools and dependencies -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - libssl1.1 \ - ca-certificates \ - curl \ - gnupg && \ - useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ - gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798 && \ - gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg && \ - echo 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends polkadot=${POLKADOT_VERSION#?} && \ -# apt cleanup - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* ; \ - mkdir -p /data /polkadot/.local/share && \ - chown -R polkadot:polkadot /data && \ - ln -s /data /polkadot/.local/share/polkadot - -USER polkadot - -# check if executable works in this container -RUN /usr/bin/polkadot --version - -EXPOSE 30333 9933 9944 -VOLUME ["/polkadot"] - -ENTRYPOINT ["/usr/bin/polkadot"] - diff --git a/bridges/scripts/dump-logs.sh b/scripts/dump-logs.sh similarity index 100% rename from bridges/scripts/dump-logs.sh rename to scripts/dump-logs.sh diff --git a/scripts/github/check_labels.sh b/scripts/github/check_labels.sh deleted file mode 100755 index 12f07b3495e3..000000000000 --- a/scripts/github/check_labels.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash - -#shellcheck source=../common/lib.sh -source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/../common/lib.sh" - -repo="$GITHUB_REPOSITORY" -pr="$GITHUB_PR" - -ensure_labels() { - for label in "$@"; do - if has_label "$repo" "$pr" "$label"; then - return 0 - fi - done - return 1 -} - -# Must have one of the following labels -releasenotes_labels=( - 'B0-silent' - 'B1-releasenotes' - 'B7-runtimenoteworthy' -) - -# Must be an ordered list of priorities, lowest first -priority_labels=( - 'C1-low 📌' - 'C3-medium 📣' - 'C7-high ❗️' - 'C9-critical ‼️' -) - -audit_labels=( - 'D1-audited 👍' - 'D2-notlive 💤' - 'D3-trivial 🧸' - 'D5-nicetohaveaudit ⚠️' - 'D9-needsaudit 👮' -) - -echo "[+] Checking release notes (B) labels for $CI_COMMIT_BRANCH" -if ensure_labels "${releasenotes_labels[@]}"; then - echo "[+] Release notes label detected. All is well." -else - echo "[!] Release notes label not detected. Please add one of: ${releasenotes_labels[*]}" - exit 1 -fi - -echo "[+] Checking release priority (C) labels for $CI_COMMIT_BRANCH" -if ensure_labels "${priority_labels[@]}"; then - echo "[+] Release priority label detected. All is well." -else - echo "[!] Release priority label not detected. Please add one of: ${priority_labels[*]}" - exit 1 -fi - -if has_runtime_changes "${BASE_SHA}" "${HEAD_SHA}"; then - echo "[+] Runtime changes detected. Checking audit (D) labels" - if ensure_labels "${audit_labels[@]}"; then - echo "[+] Release audit label detected. All is well." - else - echo "[!] Release audit label not detected. Please add one of: ${audit_labels[*]}" - exit 1 - fi -fi - -# If the priority is anything other than the lowest, we *must not* have a B0-silent -# label -if has_label "$repo" "$GITHUB_PR" 'B0-silent' && - ! has_label "$repo" "$GITHUB_PR" "${priority_labels[0]}"; then - echo "[!] Changes with a priority higher than C1-low *MUST* have a B- label that is not B0-Silent" - exit 1 -fi - -exit 0 diff --git a/scripts/github/generate_release_text.rb b/scripts/github/generate_release_text.rb deleted file mode 100644 index a35154bd1a66..000000000000 --- a/scripts/github/generate_release_text.rb +++ /dev/null @@ -1,118 +0,0 @@ -# frozen_string_literal: true - -require 'base64' -require 'changelogerator' -require 'erb' -require 'git' -require 'json' -require 'octokit' -require 'toml' -require_relative './lib.rb' - -current_ref = ENV['GITHUB_REF'] -token = ENV['GITHUB_TOKEN'] -github_client = Octokit::Client.new( - access_token: token -) - -polkadot_path = ENV['GITHUB_WORKSPACE'] + '/polkadot/' - -# Generate an ERB renderer based on the template .erb file -renderer = ERB.new( - File.read(ENV['GITHUB_WORKSPACE'] + '/polkadot/scripts/github/polkadot_release.erb'), - trim_mode: '<>' -) - -# get ref of last polkadot release -last_ref = 'refs/tags/' + github_client.latest_release(ENV['GITHUB_REPOSITORY']).tag_name - -polkadot_cl = Changelog.new( - 'paritytech/polkadot', last_ref, current_ref, token: token -) - -# Gets the substrate commit hash used for a given polkadot ref -def get_substrate_commit(client, ref) - cargo = TOML::Parser.new( - Base64.decode64( - client.contents( - ENV['GITHUB_REPOSITORY'], - path: 'Cargo.lock', - query: { ref: ref.to_s } - ).content - ) - ).parsed - cargo['package'].find { |p| p['name'] == 'sc-cli' }['source'].split('#').last -end - -substrate_prev_sha = get_substrate_commit(github_client, last_ref) -substrate_cur_sha = get_substrate_commit(github_client, current_ref) - -substrate_cl = Changelog.new( - 'paritytech/substrate', substrate_prev_sha, substrate_cur_sha, - token: token, - prefix: true -) - -# Combine all changes into a single array and filter out companions -all_changes = (polkadot_cl.changes + substrate_cl.changes).reject do |c| - c[:title] =~ /[Cc]ompanion/ -end - -# Set all the variables needed for a release - -misc_changes = Changelog.changes_with_label(all_changes, 'B1-releasenotes') -client_changes = Changelog.changes_with_label(all_changes, 'B5-clientnoteworthy') -runtime_changes = Changelog.changes_with_label(all_changes, 'B7-runtimenoteworthy') - -# Add the audit status for runtime changes -runtime_changes.each do |c| - if c[:labels].any? { |l| l[:name] == 'D1-audited 👍' } - c[:pretty_title] = "✅ `audited` #{c[:pretty_title]}" - next - end - if c[:labels].any? { |l| l[:name] == 'D2-notlive 💤' } - c[:pretty_title] = "✅ `not live` #{c[:pretty_title]}" - next - end - if c[:labels].any? { |l| l[:name] == 'D3-trivial 🧸' } - c[:pretty_title] = "✅ `trivial` #{c[:pretty_title]}" - next - end - if c[:labels].any? { |l| l[:name] == 'D5-nicetohaveaudit ⚠️' } - c[:pretty_title] = "⏳ `pending non-critical audit` #{c[:pretty_title]}" - next - end - if c[:labels].any? { |l| l[:name] == 'D9-needsaudit 👮' } - c[:pretty_title] = "❌ `AWAITING AUDIT` #{c[:pretty_title]}" - next - end - c[:pretty_title] = "⭕️ `unknown audit requirements` #{c[:pretty_title]}" -end - -# The priority of users upgraded is determined by the highest-priority -# *Client* change -release_priority = Changelog.highest_priority_for_changes(client_changes) - -# Pulled from the previous Github step -rustc_stable = ENV['RUSTC_STABLE'] -rustc_nightly = ENV['RUSTC_NIGHTLY'] -polkadot_runtime = get_runtime('polkadot', polkadot_path) -kusama_runtime = get_runtime('kusama', polkadot_path) -westend_runtime = get_runtime('westend', polkadot_path) - -# These json files should have been downloaded as part of the build-runtimes -# github action - -polkadot_json = JSON.parse( - File.read( - "#{ENV['GITHUB_WORKSPACE']}/polkadot-srtool-json/polkadot_srtool_output.json" - ) -) - -kusama_json = JSON.parse( - File.read( - "#{ENV['GITHUB_WORKSPACE']}/kusama-srtool-json/kusama_srtool_output.json" - ) -) - -puts renderer.result diff --git a/scripts/github/lib.rb b/scripts/github/lib.rb deleted file mode 100644 index 35ebd3b6e7a9..000000000000 --- a/scripts/github/lib.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -# A collection of helper functions that might be useful for various scripts - -# Gets the runtime version for a given runtime. -# Optionally accepts a path that is the root of the project which defaults to -# the current working directory -def get_runtime(runtime, path = '.') - File.open(path + "/runtime/#{runtime}/src/lib.rs") do |f| - f.find { |l| l =~ /spec_version/ }.match(/[0-9]+/)[0] - end -end diff --git a/scripts/github/polkadot_release.erb b/scripts/github/polkadot_release.erb deleted file mode 100644 index 2078fa3bb96f..000000000000 --- a/scripts/github/polkadot_release.erb +++ /dev/null @@ -1,42 +0,0 @@ -<%= print release_priority[:text] %> <%= puts " due to changes: *#{Changelog.changes_with_label(all_changes, release_priority[:label]).map(&:pretty_title).join(", ")}*" if release_priority[:priority] > 1 %> - -Native runtimes: - -- Polkadot: **<%= polkadot_runtime %>** -- Kusama: **<%= kusama_runtime %>** -- Westend: **<%= westend_runtime %>** - -This release was tested against the following versions of `rustc`. Other versions may work. - -- <%= rustc_stable %> -- <%= rustc_nightly %> - -WASM runtimes built with [srtool](https://github.com/paritytech/srtool) using `<%= polkadot_json['rustc'] %>`. - -Proposal hashes: -* `polkadot_runtime-v<%= polkadot_runtime %>.compact.wasm - <%= polkadot_json['prop'] %>` -* `kusama_runtime-v<%= kusama_runtime %>.compact.wasm - <%= kusama_json['prop'] %>` - -<% unless misc_changes.empty? %> -## Changes - -<% misc_changes.each do |c| %> -* <%= c[:pretty_title] %> -<% end %> -<% end %> - -<% unless client_changes.empty? %> -## Client - -<% client_changes.each do |c| %> -* <%= c[:pretty_title] %> -<% end %> -<% end %> - -<% unless runtime_changes.empty? %> -## Runtime - -<% runtime_changes.each do |c| %> -* <%= c[:pretty_title] %> -<% end %> -<% end %> diff --git a/scripts/github/run_fuzzer.sh b/scripts/github/run_fuzzer.sh deleted file mode 100755 index b73a83beab91..000000000000 --- a/scripts/github/run_fuzzer.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -timeout --signal INT 5h cargo hfuzz run $1 -status=$? - -if [ $status -ne 124 ]; then - echo "Found a panic!" - # TODO: provide Minimal Reproducible Input - # TODO: message on Matrix - exit 1 -else - echo "Didn't find any problem in 5 hours of fuzzing" -fi diff --git a/scripts/gitlab/check_extrinsics_ordering.sh b/scripts/gitlab/check_extrinsics_ordering.sh deleted file mode 100755 index 8a7385f03f9f..000000000000 --- a/scripts/gitlab/check_extrinsics_ordering.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env bash -set -e - -# Include the common functions library -#shellcheck source=../common/lib.sh -. "$(dirname "${0}")/../common/lib.sh" - -HEAD_BIN=./artifacts/polkadot -HEAD_WS=ws://localhost:9944 -RELEASE_WS=ws://localhost:9945 - -runtimes=( - "westend" - "kusama" - "polkadot" -) - -# First we fetch the latest released binary -latest_release=$(latest_release 'paritytech/polkadot') -RELEASE_BIN="./polkadot-$latest_release" -echo "[+] Fetching binary for Polkadot version $latest_release" -curl -L "https://github.com/paritytech/polkadot/releases/download/$latest_release/polkadot" > "$RELEASE_BIN" || exit 1 -chmod +x "$RELEASE_BIN" - - -for RUNTIME in "${runtimes[@]}"; do - echo "[+] Checking runtime: ${RUNTIME}" - - release_transaction_version=$( - git show "origin/release:runtime/${RUNTIME}/src/lib.rs" | \ - grep 'transaction_version' - ) - - current_transaction_version=$( - grep 'transaction_version' "./runtime/${RUNTIME}/src/lib.rs" - ) - - echo "[+] Release: ${release_transaction_version}" - echo "[+] Ours: ${current_transaction_version}" - - if [ ! "$release_transaction_version" = "$current_transaction_version" ]; then - echo "[+] Transaction version for ${RUNTIME} has been bumped since last release." - exit 0 - fi - - # Start running the nodes in the background - $HEAD_BIN --chain="$RUNTIME-local" --tmp & - $RELEASE_BIN --chain="$RUNTIME-local" --ws-port 9945 --tmp & - jobs - - # Sleep a little to allow the nodes to spin up and start listening - TIMEOUT=5 - for i in $(seq $TIMEOUT); do - sleep 1 - if [ "$(lsof -nP -iTCP -sTCP:LISTEN | grep -c '994[45]')" == 2 ]; then - echo "[+] Both nodes listening" - break - fi - if [ "$i" == $TIMEOUT ]; then - echo "[!] Both nodes not listening after $i seconds. Exiting" - exit 1 - fi - done - sleep 5 - - changed_extrinsics=$( - polkadot-js-metadata-cmp "$RELEASE_WS" "$HEAD_WS" \ - | sed 's/^ \+//g' | grep -e 'idx: [0-9]\+ -> [0-9]\+' || true - ) - - if [ -n "$changed_extrinsics" ]; then - echo "[!] Extrinsics indexing/ordering has changed in the ${RUNTIME} runtime! If this change is intentional, please bump transaction_version in lib.rs. Changed extrinsics:" - echo "$changed_extrinsics" - exit 1 - fi - - echo "[+] No change in extrinsics ordering for the ${RUNTIME} runtime" - jobs -p | xargs kill; sleep 5 -done - -# Sleep a little to let the jobs die properly -sleep 5 diff --git a/scripts/gitlab/check_line_width.sh b/scripts/gitlab/check_line_width.sh deleted file mode 100755 index c31cab446579..000000000000 --- a/scripts/gitlab/check_line_width.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -# -# check if line width of rust source files is not beyond x characters -# -set -e - -BASE_BRANCH="origin/master" -LINE_WIDTH="121" -GOOD_LINE_WIDTH="101" - -git diff --name-only "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- \*.rs | ( while read -r file -do - if [ ! -f "${file}" ]; - then - echo "Skipping removed file." - elif git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" | grep -q "^+.\{${LINE_WIDTH}\}" - then - if [ -z "${FAIL}" ] - then - echo "| warning!" - echo "| Lines should not be longer than 120 characters." - echo "| " - echo "| see more https://wiki.parity.io/Substrate-Style-Guide" - echo "|" - FAIL="true" - fi - echo "| file: ${file}" - git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" \ - | grep -n "^+.\{${LINE_WIDTH}\}" - echo "|" - else - if git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" | grep -q "^+.\{${GOOD_LINE_WIDTH}\}" - then - if [ -z "${FAIL}" ] - then - echo "| warning!" - echo "| Lines should be longer than 100 characters only in exceptional circumstances!" - echo "| " - echo "| see more https://wiki.parity.io/Substrate-Style-Guide" - echo "|" - fi - echo "| file: ${file}" - git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" \ - | grep -n "^+.\{${LINE_WIDTH}\}" - echo "|" - fi - fi -done - -test -z "${FAIL}" -) diff --git a/scripts/gitlab/check_runtime.sh b/scripts/gitlab/check_runtime.sh deleted file mode 100755 index aa9f5813727d..000000000000 --- a/scripts/gitlab/check_runtime.sh +++ /dev/null @@ -1,203 +0,0 @@ -#!/usr/bin/env bash - -# Check for any changes in any runtime directories (e.g., ^runtime/polkadot) as -# well as directories common to all runtimes (e.g., ^runtime/common). If there -# are no changes, check if the Substrate git SHA in Cargo.lock has been -# changed. If so, pull the repo and verify if {spec,impl}_versions have been -# altered since the previous Substrate version used. -# -# If there were changes to any runtimes or common dirs, we iterate over each -# runtime (defined in the $runtimes() array), and check if {spec,impl}_version -# have been changed since the last release. - -set -e # fail on any error - -#Include the common functions library -#shellcheck source=../common/lib.sh -. "$(dirname "${0}")/../common/lib.sh" - -SUBSTRATE_REPO="https://github.com/paritytech/substrate" -SUBSTRATE_REPO_CARGO="git\+${SUBSTRATE_REPO}" -SUBSTRATE_VERSIONS_FILE="bin/node/runtime/src/lib.rs" - -# figure out the latest release tag -boldprint "make sure we have all tags (including those from the release branch)" -git fetch --depth="${GIT_DEPTH:-100}" origin release -git fetch --depth="${GIT_DEPTH:-100}" origin 'refs/tags/*:refs/tags/*' -LATEST_TAG="$(git tag -l | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+-?[0-9]*$' | sort -V | tail -n 1)" -boldprint "latest release tag ${LATEST_TAG}" - -boldprint "latest 10 commits of ${CI_COMMIT_REF_NAME}" -git --no-pager log --graph --oneline --decorate=short -n 10 - -boldprint "make sure the master branch is available in shallow clones" -git fetch --depth="${GIT_DEPTH:-100}" origin master - - -runtimes=( - "kusama" - "polkadot" - "westend" -) - -common_dirs=( - "common" -) - -# Helper function to join elements in an array with a multi-char delimiter -# https://stackoverflow.com/questions/1527049/how-can-i-join-elements-of-an-array-in-bash -function join_by { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } - -boldprint "check if the wasm sources changed since ${LATEST_TAG}" -if ! has_runtime_changes "${LATEST_TAG}" "${CI_COMMIT_SHA}"; then - boldprint "no changes to any runtime source code detected" - # continue checking if Cargo.lock was updated with a new substrate reference - # and if that change includes a {spec|impl}_version update. - - SUBSTRATE_REFS_CHANGED="$( - git diff "refs/tags/${LATEST_TAG}...${CI_COMMIT_SHA}" Cargo.lock \ - | sed -n -r "s~^[\+\-]source = \"${SUBSTRATE_REPO_CARGO}#([a-f0-9]+)\".*$~\1~p" | sort -u | wc -l - )" - - # check Cargo.lock for substrate ref change - case "${SUBSTRATE_REFS_CHANGED}" in - (0) - boldprint "substrate refs not changed in Cargo.lock" - exit 0 - ;; - (2) - boldprint "substrate refs updated since ${LATEST_TAG}" - ;; - (*) - boldprint "check unsupported: more than one commit targeted in repo ${SUBSTRATE_REPO_CARGO}" - exit 1 - esac - - - SUBSTRATE_PREV_REF="$( - git diff "refs/tags/${LATEST_TAG}...${CI_COMMIT_SHA}" Cargo.lock \ - | sed -n -r "s~^\-source = \"${SUBSTRATE_REPO_CARGO}#([a-f0-9]+)\".*$~\1~p" | sort -u | head -n 1 - )" - - SUBSTRATE_NEW_REF="$( - git diff "refs/tags/${LATEST_TAG}...${CI_COMMIT_SHA}" Cargo.lock \ - | sed -n -r "s~^\+source = \"${SUBSTRATE_REPO_CARGO}#([a-f0-9]+)\".*$~\1~p" | sort -u | head -n 1 - )" - - - boldcat < ${add_spec_version} - -EOT - continue - - else - # check for impl_version updates: if only the impl versions changed, we assume - # there is no consensus-critical logic that has changed. - - add_impl_version="$( - git diff refs/tags/"${LATEST_TAG}...${CI_COMMIT_SHA}" "runtime/${RUNTIME}/src/lib.rs" \ - | sed -n -r 's/^\+[[:space:]]+impl_version: +([0-9]+),$/\1/p' - )" - sub_impl_version="$( - git diff refs/tags/"${LATEST_TAG}...${CI_COMMIT_SHA}" "runtime/${RUNTIME}/src/lib.rs" \ - | sed -n -r 's/^\-[[:space:]]+impl_version: +([0-9]+),$/\1/p' - )" - - - # see if the impl version changed - if [ "${add_impl_version}" != "${sub_impl_version}" ] - then - boldcat < ${add_impl_version} - -EOT - continue - fi - - failed_runtime_checks+=("$RUNTIME") - fi -done - -if [ ${#failed_runtime_checks} -gt 0 ]; then - boldcat </dev/null 2>&1 && pwd )/../common/lib.sh" - -time cargo check --features runtime-benchmarks diff --git a/scripts/gitlab/check_web_wasm.sh b/scripts/gitlab/check_web_wasm.sh deleted file mode 100755 index a79bbc063a97..000000000000 --- a/scripts/gitlab/check_web_wasm.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -e - -#shellcheck source=../common/lib.sh -source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/../common/lib.sh" - -time cargo build --locked --target=wasm32-unknown-unknown --manifest-path cli/Cargo.toml --no-default-features --features browser diff --git a/scripts/gitlab/test_deterministic_wasm.sh b/scripts/gitlab/test_deterministic_wasm.sh deleted file mode 100755 index b42923769421..000000000000 --- a/scripts/gitlab/test_deterministic_wasm.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -#shellcheck source=../common/lib.sh -source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/../common/lib.sh" - -# build runtime -WASM_BUILD_NO_COLOR=1 cargo build --verbose --release -p kusama-runtime -p polkadot-runtime -p westend-runtime -# make checksum -sha256sum target/release/wbuild/*-runtime/target/wasm32-unknown-unknown/release/*.wasm > checksum.sha256 -# clean up - FIXME: can we reuse some of the artifacts? -cargo clean -# build again -WASM_BUILD_NO_COLOR=1 cargo build --verbose --release -p kusama-runtime -p polkadot-runtime -p westend-runtime -# confirm checksum -sha256sum -c checksum.sha256 diff --git a/scripts/gitlab/test_linux_stable.sh b/scripts/gitlab/test_linux_stable.sh deleted file mode 100755 index 8ba62ecbbb80..000000000000 --- a/scripts/gitlab/test_linux_stable.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -e - -#shellcheck source=../common/lib.sh -source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/../common/lib.sh" - -time cargo test --workspace --release --verbose --locked --features=runtime-benchmarks diff --git a/scripts/gitlab/trigger_pipeline.sh b/scripts/gitlab/trigger_pipeline.sh deleted file mode 100755 index 04e2954b98d7..000000000000 --- a/scripts/gitlab/trigger_pipeline.sh +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash - -set -eou pipefail - -# This script is to trigger Simnet pipeline. -# See help article for more details. - -SCRIPT_NAME="$0" -SCRIPT_PATH=$(dirname "$0") # relative -SCRIPT_PATH=$(cd "${SCRIPT_PATH}" && pwd) # absolutized and normalized -SIMNET_VERSION="" - -function usage { - cat << EOF -This script is to trigger Simnet pipeline. -It's designed to be launched locally and from CI. -The required argumants for both cases are listed below. - -Usage: ${SCRIPT_NAME} OPTION - -OPTIONS - - -h, --help Print this help message. - - Mandatory in both cases: - - -s, --simnet-version Simnet version to trigger. - E.g.: v4 - - -u, --upstream-project Triggering project. - E.g.: polkadot - - -r, --upstream-ref The branch or tag name for which project is built. - E.g.: master - - -d, --downstream-id Downstream project's ID to trigger. - E.g.: 332 (simnet project id) - - -n, --image-name Name of image to test. - E.g.: docker.io/paritypr/synth-wave - - -i, --image-tag Tag of the image to test. - E.g.: master - - -c, --collator-image-tag Tag of collator image. Image name is hardcoded. - E.g.: master - - Required for local launch: - - -g, --ci-server-fqdn FQDN of your gitlab server. - E.g.: gitlab.parity.io - - -t, --trigger-token Gitlab trigger token. This must be defined in - project -> settings -> CI/CD -> Pipeline triggers - Defaults to CI_JOB_TOKEN - https://stackoverflow.com/questions/42746634/gitlab-trigger-api-returns-404 - - -a, --access-token Gitlab peronal access token or it defaults to - PIPELINE_TOKEN (gitlab variable) - https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html - -EXAMPLES - ${SCRIPT_NAME} -s v4 - ${SCRIPT_NAME} --simnet-version=v4 - - Local test example. You need to set the 2 vars before running: TR_TOKEN and PERS_TOKEN - ${SCRIPT_NAME} --simnet-version=v4 \\ - --upstream-project=polkadot \\ - --upstream-ref=master \\ - --image-name=docker.io/paritypr/synth-wave \\ - --image-tag=master \\ - --collator-image-tag=master \\ - --ci-server-fqdn=gitlab.parity.io \\ - --downstream-id=332 \\ - --trigger-token="\${TR_TOKEN}" \\ - --access-token="\${PERS_TOKEN}" -EOF -} - -function main { - # Main entry point for the script. - parse_args "$@" - check_args - trigger_pipeline - check_pipeline - poll_pipeline -} - -function parse_args { - # shellcheck disable=SC2214 - while getopts c:u:r:i:n:g:t:r:a:s:h-: OPT; do - # support long options: https://stackoverflow.com/a/28466267/519360 - if [ "${OPT}" = "-" ]; then # long option: reformulate OPT and OPTARG - OPT="${OPTARG%%=*}" # extract long option name - OPTARG="${OPTARG#$OPT}" # extract long option argument (may be empty) - OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=` - fi - case "${OPT}" in - h | help ) usage ; exit 0 ;; - s | simnet-version ) needs_arg ; SIMNET_VERSION="${OPTARG}" ;; - u | upstream-project ) needs_arg ; TRGR_PROJECT="${OPTARG}" ;; - r | upstream-ref ) needs_arg ; TRGR_REF="${OPTARG}" ;; - n | image-name ) needs_arg ; IMAGE_NAME="${OPTARG}" ;; - i | image-tag ) needs_arg ; IMAGE_TAG="${OPTARG}" ;; - c | collator-image-tag ) needs_arg ; COLLATOR_IMAGE_TAG="${OPTARG}" ;; - g | ci-server-fqdn ) needs_arg ; CI_SERVER_HOST="${OPTARG}" ;; - d | downstream-id ) needs_arg ; DWNSTRM_ID="${OPTARG}" ;; - t | trigger-token ) needs_arg ; CI_JOB_TOKEN="${OPTARG}" ;; - a | access-token ) needs_arg ; PIPELINE_TOKEN="${OPTARG}" ;; - ??* ) log DIE "Illegal option --${OPT}" ;; # bad long option - ? ) exit 2 ;; # bad short option (error reported via getopts) - esac - done - shift $((OPTIND-1)) # remove parsed options and args from $@ list - -} - -function check_args { - if [[ -z "${SIMNET_VERSION}" ]] ; then - log DIE "Must specify value for mandatory argument -s,--simnet-version - -$(usage)" - fi -} - -function needs_arg { - if [ -z "${OPTARG}" ]; then - log DIE "No arg for --${OPT} option" - fi -} - -function trigger_pipeline { - # API trigger another project's pipeline. - log INFO "Triggering Simnet pipeline." - - curl --silent \ - -X POST \ - -F "token=${CI_JOB_TOKEN}" \ - -F "ref=${SIMNET_VERSION}" \ - -F "variables[TRGR_PROJECT]=${TRGR_PROJECT}" \ - -F "variables[TRGR_REF]=${TRGR_REF}" \ - -F "variables[IMAGE_NAME]=${IMAGE_NAME}" \ - -F "variables[IMAGE_TAG]=${IMAGE_TAG}" \ - -F "variables[COLLATOR_IMAGE_TAG]=${COLLATOR_IMAGE_TAG}" \ - "https://${CI_SERVER_HOST}/api/v4/projects/${DWNSTRM_ID}/trigger/pipeline" | \ - tee pipeline; -} - -function check_pipeline { - PIPELINE_ID=$(jq ".id" pipeline) - PIPELINE_URL=$(jq ".web_url" pipeline) - echo - log INFO "Simnet pipeline ${PIPELINE_URL} was successfully triggered." - log INFO "Now we're polling it to obtain the distinguished status." -} - -function poll_pipeline { - # This is a workaround for a Gitlab bug, waits here until - # https://gitlab.com/gitlab-org/gitlab/-/issues/326137 gets fixed. - # The timeout is 360 curls with 8 sec interval, roughly an hour. - log INFO "Waiting on ${PIPELINE_ID} status..." - -# shellcheck disable=SC2034 - for i in {1..360}; do - STATUS=$(get_status); - log INFO "Triggered pipeline status is ${STATUS}"; - if [[ ${STATUS} =~ ^(pending|running|created)$ ]]; then - echo; - elif [[ ${STATUS} =~ ^(failed|canceled|skipped|manual)$ ]]; then - log DIE "Something's broken in: ${PIPELINE_URL}"; - elif [[ ${STATUS} =~ ^(success)$ ]]; then - log INFO "Look how green it is: ${PIPELINE_URL}" - exit 0 - else - log DIE "Something else has happened in ${PIPELINE_URL}" - fi - sleep 8; - done -} - -function get_status() { - curl --silent \ - --header "PRIVATE-TOKEN: ${PIPELINE_TOKEN}" \ - "https://${CI_SERVER_HOST}/api/v4/projects/${DWNSTRM_ID}/pipelines/${PIPELINE_ID}" | \ - jq --raw-output ".status"; -} - -function log { - local lvl msg fmt - lvl=$1 msg=$2 - fmt='+%Y-%m-%d %H:%M:%S' - lg_date=$(date "${fmt}") - if [[ "${lvl}" = "DIE" ]] ; then - lvl="ERROR" - echo "${lg_date} - ${lvl} - ${msg}" - exit 1 - else - echo "${lg_date} - ${lvl} - ${msg}" - fi -} - -main "$@" diff --git a/scripts/init.sh b/scripts/init.sh deleted file mode 100755 index cf5ecf97926f..000000000000 --- a/scripts/init.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo "*** Initializing WASM build environment" - -if [ -z $CI_PROJECT_NAME ] ; then - rustup update nightly - rustup update stable -fi - -rustup target add wasm32-unknown-unknown --toolchain nightly - -# Install wasm-gc. It's useful for stripping slimming down wasm binaries. -command -v wasm-gc || \ - cargo +nightly install --git https://github.com/alexcrichton/wasm-gc --force diff --git a/scripts/kubernetes/Chart.yaml b/scripts/kubernetes/Chart.yaml deleted file mode 100644 index 91652cef543e..000000000000 --- a/scripts/kubernetes/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: polkadot -version: 0.2 -appVersion: 0.2.0 -description: Polkadot Node Implementation -home: https://polkadot.network/ -icon: https://polkadot.network/favicon.ico -sources: - - https://github.com/paritytech/polkadot/ -maintainers: - - name: Paritytech Devops Team - email: devops-team@parity.io -tillerVersion: ">=2.8.0" diff --git a/scripts/kubernetes/README.md b/scripts/kubernetes/README.md deleted file mode 100644 index 1ae9ff79c05e..000000000000 --- a/scripts/kubernetes/README.md +++ /dev/null @@ -1,47 +0,0 @@ - - -# Polkadot Kubernetes Helm Chart - -This [Helm Chart](https://helm.sh/) can be used for deploying containerized -**Polkadot** to a [Kubernetes](https://kubernetes.io/) cluster. - - -## Prerequisites - -- Tested on Kubernetes 1.10.7-gke.6 - -## Installation - -To install the chart with the release name `my-release` into namespace -`my-namespace` from within this directory: - -```console -$ helm install --namespace my-namespace --name my-release --values values.yaml ./ -``` - -The command deploys Polkadot on the Kubernetes cluster in the configuration -given in `values.yaml`. When the namespace is omitted it'll be installed in -the default one. - - -## Removal of the Chart - -To uninstall/delete the `my-release` deployment: - -```console -$ helm delete --namespace my-namespace my-release -``` - -The command removes all the Kubernetes components associated with the chart and deletes the release. - - -## Upgrading - -Once the chart is installed and a new version should be deployed helm takes -care of this by - -```console -$ helm upgrade --namespace my-namespace --values values.yaml my-release ./ -``` - - diff --git a/scripts/kubernetes/templates/poddisruptionbudget.yaml b/scripts/kubernetes/templates/poddisruptionbudget.yaml deleted file mode 100644 index 56958b1fbafd..000000000000 --- a/scripts/kubernetes/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ .Values.GitlabEnvSlug | default .Values.app }} -spec: - selector: - matchLabels: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - maxUnavailable: 1 - diff --git a/scripts/kubernetes/templates/service.yaml b/scripts/kubernetes/templates/service.yaml deleted file mode 100644 index 01ba9d5a567c..000000000000 --- a/scripts/kubernetes/templates/service.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# see: -# https://kubernetes.io/docs/tutorials/services/ -# https://kubernetes.io/docs/concepts/services-networking/service/ -# headless service for rpc -apiVersion: v1 -kind: Service -metadata: - name: {{ .Values.app }}-rpc -spec: - ports: - - port: 9933 - name: http-rpc - - port: 9944 - name: websocket-rpc - selector: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - sessionAffinity: None - type: ClusterIP - clusterIP: None ---- -{{- if .Values.listen_node_port }} -apiVersion: v1 -kind: Service -metadata: - name: {{ .Values.app }} -spec: - ports: - - port: 30333 - name: p2p - nodePort: 30333 - protocol: TCP - selector: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - sessionAffinity: None - type: NodePort - # don't route exteral traffic to non-local pods - externalTrafficPolicy: Local -{{- else if .Values.validator.keys }} -{{- $root := . -}} -{{- range until (int .Values.nodes.replicas) }} ---- -kind: Service -apiVersion: v1 -metadata: - name: {{ $root.Values.app }}-{{ . }} -spec: - selector: - statefulset.kubernetes.io/pod-name: {{ $root.Values.app }}-{{ . }} - ports: - - port: 30333 - targetPort: 30333 - protocol: TCP -{{- end }} -{{- end }} diff --git a/scripts/kubernetes/templates/serviceaccount.yaml b/scripts/kubernetes/templates/serviceaccount.yaml deleted file mode 100644 index cee891b1fa1e..000000000000 --- a/scripts/kubernetes/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.rbac.enable }} -# service account for polkadot pods themselves -# no permissions for the api are required -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - name: {{ .Values.rbac.name }} -{{- end }} diff --git a/scripts/kubernetes/templates/statefulset.yaml b/scripts/kubernetes/templates/statefulset.yaml deleted file mode 100644 index 2f400bb32eb9..000000000000 --- a/scripts/kubernetes/templates/statefulset.yaml +++ /dev/null @@ -1,139 +0,0 @@ -# https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/ -# https://cloud.google.com/kubernetes-engine/docs/concepts/statefulset -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Values.app }} -spec: - selector: - matchLabels: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - serviceName: {{ .Values.app }} - replicas: {{ .Values.nodes.replicas }} - updateStrategy: - type: RollingUpdate - podManagementPolicy: Parallel - template: - metadata: - labels: - app: {{ .Values.GitlabEnvSlug | default .Values.app }} - spec: - {{- if .Values.rbac.enable }} - serviceAccountName: {{ .Values.rbac.name }} - {{- else }} - serviceAccountName: default - {{- end }} - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: node - operator: In - values: - - {{ .Values.node_group }} - {{- if .Values.listen_node_port }} - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "app" - operator: In - values: - - {{ .Values.app }} - topologyKey: "kubernetes.io/hostname" - {{- end }} - terminationGracePeriodSeconds: 300 - {{- if .Values.validator.keys }} - volumes: - - name: {{ .Values.app }}-validator-secrets - secret: - secretName: {{ .Values.app }}-secrets - initContainers: - - name: prepare-secrets - image: busybox - command: [ "/bin/sh" ] - args: - - -c - - sed -n -r "s/^${POD_NAME}-key ([^ ]+)$/\1/p" /etc/validator/secrets > {{ .Values.image.basepath }}/key; - sed -n -r "s/^${POD_NAME}-node-key ([^ ]+)$/\1/p" /etc/validator/secrets > {{ .Values.image.basepath }}/node-key; - sed -n -r "s/^${POD_NAME}-name ([^ ]+)$/\1/p" /etc/validator/secrets > {{ .Values.image.basepath }}/name; - test -s {{ .Values.image.basepath }}/name || echo "${POD_NAME}" > {{ .Values.image.basepath }}/name - env: - # from (workaround for hostname) - # https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - volumeMounts: - - name: {{ .Values.app }}-validator-secrets - readOnly: true - mountPath: "/etc/validator" - - name: {{ .Values.app }}dir - mountPath: {{ .Values.image.basepath }} - {{- end }} - containers: - - name: {{ .Values.app }} - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - {{- if .Values.resources }} - resources: - requests: - memory: {{ .Values.resources.memory }} - cpu: {{ .Values.resources.cpu }} - {{- end }} - ports: - - containerPort: 30333 - name: p2p - - containerPort: 9933 - name: http-rpc - - containerPort: 9944 - name: websocket-rpc - command: ["/bin/sh"] - args: - - -c - - exec {{ .Values.image.executable }} - --base-path {{ .Values.image.basepath }} - {{- if .Values.validator.keys }} - --validator - --name $(cat {{ .Values.image.basepath }}/name) - --key $(cat {{ .Values.image.basepath }}/key) - --node-key $(cat {{ .Values.image.basepath }}/node-key) - {{- else }} - --name $(POD_NAME) - {{- end }} - {{- range .Values.nodes.args }} {{ . }} {{- end }} - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - volumeMounts: - - name: {{ .Values.app }}dir - mountPath: {{ .Values.image.basepath }} - readinessProbe: - httpGet: - path: /health - port: http-rpc - initialDelaySeconds: 10 - periodSeconds: 10 - livenessProbe: - httpGet: - path: /health - port: http-rpc - initialDelaySeconds: 10 - periodSeconds: 10 - securityContext: - runAsUser: 1000 - fsGroup: 1000 - volumeClaimTemplates: - - metadata: - name: {{ .Values.app }}dir - spec: - accessModes: [ "ReadWriteOnce" ] - storageClassName: ssd - resources: - requests: - storage: 32Gi - diff --git a/scripts/kubernetes/values.yaml b/scripts/kubernetes/values.yaml deleted file mode 100644 index 98b81b0e1df2..000000000000 --- a/scripts/kubernetes/values.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# set tag manually --set image.tag=latest -image: - repository: parity/polkadot - tag: latest - pullPolicy: Always - basepath: /polkadot - executable: /usr/local/bin/polkadot - - -# if set to true a service account for polkadot will be created -rbac: - enable: true - name: polkadot - -# name of the statefulset -app: polkadot -node_group: polkadot -listen_node_port: true - -nodes: - replicas: 2 - args: - - --chain - - alexander - # serve rpc within the local network - # - fenced off the world via firewall - # - used for health checks - - --rpc-external - - --ws-external - # - --log - # - sub-libp2p=trace - - -validator: {} -# providing 'keys' string via --set commandline parameter will run the nodes -# in validator mode (--validator). - -# maybe adopt resource limits here to the nodes of the pool -# resources: -# memory: "5Gi" -# cpu: "1.5" - diff --git a/bridges/scripts/license_header b/scripts/license_header similarity index 100% rename from bridges/scripts/license_header rename to scripts/license_header diff --git a/scripts/packaging/deb-maintainer-scripts/postinst b/scripts/packaging/deb-maintainer-scripts/postinst deleted file mode 100644 index 3ac5cd04c376..000000000000 --- a/scripts/packaging/deb-maintainer-scripts/postinst +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -action="$1" -config_file="/etc/default/polkadot" - -if [ "$action" = "configure" ]; then - # Make user and group - getent group polkadot >/dev/null 2>&1 || addgroup --system polkadot - getent passwd polkadot >/dev/null 2>&1 || - adduser --system --home /home/polkadot --disabled-password \ - --ingroup polkadot polkadot - if [ ! -e "$config_file" ]; then - echo 'POLKADOT_CLI_ARGS=""' > /etc/default/polkadot - fi -fi diff --git a/scripts/packaging/polkadot.service b/scripts/packaging/polkadot.service deleted file mode 100644 index 6d6a9f6f6629..000000000000 --- a/scripts/packaging/polkadot.service +++ /dev/null @@ -1,36 +0,0 @@ -[Unit] -Description=Polkadot Node -After=network.target -Documentation=https://github.com/paritytech/polkadot - -[Service] -EnvironmentFile=-/etc/default/polkadot -ExecStart=/usr/bin/polkadot $POLKADOT_CLI_ARGS -User=polkadot -Group=polkadot -Restart=always -RestartSec=120 -CapabilityBoundingSet= -LockPersonality=true -NoNewPrivileges=true -PrivateDevices=true -PrivateMounts=true -PrivateTmp=true -PrivateUsers=true -ProtectClock=true -ProtectControlGroups=true -ProtectHostname=true -ProtectKernelModules=true -ProtectKernelTunables=true -ProtectSystem=strict -RemoveIPC=true -RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX -RestrictNamespaces=true -RestrictSUIDSGID=true -SystemCallArchitectures=native -SystemCallFilter=@system-service -SystemCallFilter=~@clock @module @mount @reboot @swap @privileged -UMask=0027 - -[Install] -WantedBy=multi-user.target diff --git a/scripts/prepare-test-net.sh b/scripts/prepare-test-net.sh deleted file mode 100755 index 14bbd680d6ef..000000000000 --- a/scripts/prepare-test-net.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash -set -e - -if [ "$#" -ne 1 ]; then - echo "Please provide the number of initial validators!" - exit 1 -fi - -generate_account_id() { - subkey inspect ${3:-} ${4:-} "$SECRET//$1//$2" | grep "Account ID" | awk '{ print $3 }' -} - -generate_address() { - subkey inspect ${3:-} ${4:-} "$SECRET//$1//$2" | grep "SS58 Address" | awk '{ print $3 }' -} - -generate_public_key() { - subkey inspect ${3:-} ${4:-} "$SECRET//$1//$2" | grep "Public" | awk '{ print $4 }' -} - -generate_address_and_public_key() { - ADDRESS=$(generate_address $1 $2 $3) - PUBLIC_KEY=$(generate_public_key $1 $2 $3) - - printf "//$ADDRESS\nhex![\"${PUBLIC_KEY#'0x'}\"].unchecked_into()," -} - -generate_address_and_account_id() { - ACCOUNT=$(generate_account_id $1 $2 $3) - ADDRESS=$(generate_address $1 $2 $3) - if ${4:-false}; then - INTO="unchecked_into" - else - INTO="into" - fi - - printf "//$ADDRESS\nhex![\"${ACCOUNT#'0x'}\"].$INTO()," -} - -V_NUM=$1 - -AUTHORITIES="" - -for i in $(seq 1 $V_NUM); do - AUTHORITIES+="(\n" - AUTHORITIES+="$(generate_address_and_account_id $i stash)\n" - AUTHORITIES+="$(generate_address_and_account_id $i controller)\n" - AUTHORITIES+="$(generate_address_and_account_id $i babe '--scheme sr25519' true)\n" - AUTHORITIES+="$(generate_address_and_account_id $i grandpa '--scheme ed25519' true)\n" - AUTHORITIES+="$(generate_address_and_account_id $i im_online '--scheme sr25519' true)\n" - AUTHORITIES+="$(generate_address_and_account_id $i para_validator '--scheme sr25519' true)\n" - AUTHORITIES+="$(generate_address_and_account_id $i para_assignment '--scheme sr25519' true)\n" - AUTHORITIES+="$(generate_address_and_account_id $i authority_discovery '--scheme sr25519' true)\n" - AUTHORITIES+="$(generate_address_and_public_key $i beefy '--scheme ecdsa' true)\n" - AUTHORITIES+="),\n" -done - -printf "$AUTHORITIES" diff --git a/scripts/release.sh b/scripts/release.sh deleted file mode 100755 index 323fee1af01b..000000000000 --- a/scripts/release.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -set -e - -# This script is to be run when we are happy with a release candidate. -# It accepts a single argument: version, in the format 'v1.2.3' - -version="$1" -if [ -z "$version" ]; then - echo "No version specified, cannot continue" - exit 1 -fi - -if [[ ! "$version" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Version should be in the format v1.2.3" - exit 1 -fi - -echo '[+] Checking out the release branch' -git checkout release -echo '[+] Pulling latest version of the release branch from github' -git pull -echo '[+] Attempting to merge the release-candidate branch to the release branch' -git merge "$version" -echo '[+] Tagging the release' -git tag -s -m "$version" "$version" -echo '[+] Pushing the release branch and tag to Github. A new release will be created shortly' -git push origin release -git push origin "refs/tags/$version" diff --git a/bridges/scripts/send-message-from-millau-rialto.sh b/scripts/send-message-from-millau-rialto.sh similarity index 89% rename from bridges/scripts/send-message-from-millau-rialto.sh rename to scripts/send-message-from-millau-rialto.sh index 10fe24087fa4..d14b08021ee1 100755 --- a/bridges/scripts/send-message-from-millau-rialto.sh +++ b/scripts/send-message-from-millau-rialto.sh @@ -11,7 +11,7 @@ MILLAU_PORT="${RIALTO_PORT:-9945}" case "$1" in remark) RUST_LOG=runtime=trace,substrate-relay=trace,bridge=trace \ - ./target/debug/substrate-relay send-message MillauToRialto \ + ./target/debug/substrate-relay send-message millau-to-rialto \ --source-host localhost \ --source-port $MILLAU_PORT \ --source-signer //Alice \ @@ -22,7 +22,7 @@ case "$1" in ;; transfer) RUST_LOG=runtime=trace,substrate-relay=trace,bridge=trace \ - ./target/debug/substrate-relay send-message MillauToRialto \ + ./target/debug/substrate-relay send-message millau-to-rialto \ --source-host localhost \ --source-port $MILLAU_PORT \ --source-signer //Alice \ diff --git a/bridges/scripts/send-message-from-rialto-millau.sh b/scripts/send-message-from-rialto-millau.sh similarity index 89% rename from bridges/scripts/send-message-from-rialto-millau.sh rename to scripts/send-message-from-rialto-millau.sh index 52d19e3af883..10582aa6b3a7 100755 --- a/bridges/scripts/send-message-from-rialto-millau.sh +++ b/scripts/send-message-from-rialto-millau.sh @@ -11,7 +11,7 @@ RIALTO_PORT="${RIALTO_PORT:-9944}" case "$1" in remark) RUST_LOG=runtime=trace,substrate-relay=trace,bridge=trace \ - ./target/debug/substrate-relay send-message RialtoToMillau \ + ./target/debug/substrate-relay send-message rialto-to-millau \ --source-host localhost \ --source-port $RIALTO_PORT \ --target-signer //Alice \ @@ -22,7 +22,7 @@ case "$1" in ;; transfer) RUST_LOG=runtime=trace,substrate-relay=trace,bridge=trace \ - ./target/debug/substrate-relay send-message RialtoToMillau \ + ./target/debug/substrate-relay send-message rialto-to-millau \ --source-host localhost \ --source-port $RIALTO_PORT \ --target-signer //Alice \ diff --git a/scripts/two-node-local-net.sh b/scripts/two-node-local-net.sh deleted file mode 100755 index 4e3291b015ad..000000000000 --- a/scripts/two-node-local-net.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env bash - -# Run a two node local net. -# Unlike the docker-compose script in the /docker folder, this version builds the nodes based -# on the current state of the code, instead of depending on a published version. - -set -e - -# chainspec defaults to polkadot-local if no arguments are passed to this script; -# if arguments are passed in, the first is the chainspec -chainspec="${1:-polkadot-local}" - -PROJECT_ROOT=$(git rev-parse --show-toplevel) -# shellcheck disable=SC1090 -source "$(dirname "$0")"/common.sh - -cd "$PROJECT_ROOT" - -last_modified_rust_file=$( - find . -path ./target -prune -o -type f -name '*.rs' -printf '%T@ %p\n' | - sort -nr | - head -1 | - cut -d' ' -f2- -) - -polkadot="target/release/polkadot" - -# ensure the polkadot binary exists and is up to date -if [ ! -x "$polkadot" ] || [ "$polkadot" -ot "$last_modified_rust_file" ]; then - cargo build --release -fi - -# setup variables -node_offset=0 -declare -a node_pids -declare -a node_pipes - -# create a sed expression which injects the node name and stream type into each line -function make_sed_expr() { - name="$1" - type="$2" - - printf "s/^/%8s %s: /" "$name" "$type" -} - -# turn a string into a flag -function flagify() { - printf -- '--%s' "$(tr '[:upper:]' '[:lower:]' <<< "$1")" -} - -# start a node and label its output -# -# This function takes a single argument, the node name. -# The name must be one of those which can be passed to the polkadot binary, in un-flagged form, -# one of: -# alice, bob, charlie, dave, eve, ferdie, one, two -function run_node() { - name="$1" - # create a named pipe so we can get the node's PID while also sedding its output - local stdout - local stderr - stdout=$(mktemp --dry-run --tmpdir) - stderr=$(mktemp --dry-run --tmpdir) - mkfifo "$stdout" - mkfifo "$stderr" - node_pipes+=("$stdout") - node_pipes+=("$stderr") - - # compute ports from offset - local port=$((30333+node_offset)) - local rpc_port=$((9933+node_offset)) - local ws_port=$((9944+node_offset)) - node_offset=$((node_offset+1)) - - # start the node - "$polkadot" \ - --chain "$chainspec" \ - --tmp \ - --port "$port" \ - --rpc-port "$rpc_port" \ - --ws-port "$ws_port" \ - --rpc-cors all \ - "$(flagify "$name")" \ - > "$stdout" \ - 2> "$stderr" \ - & - local pid=$! - node_pids+=("$pid") - - # send output from the stdout pipe to stdout, prepending the node name - sed -e "$(make_sed_expr "$name" "OUT")" "$stdout" >&1 & - # send output from the stderr pipe to stderr, prepending the node name - sed -e "$(make_sed_expr "$name" "ERR")" "$stderr" >&2 & -} - - -# clean up the nodes when this script exits -function finish { - for node_pid in "${node_pids[@]}"; do - kill -9 "$node_pid" - done - for node_pipe in "${node_pipes[@]}"; do - rm "$node_pipe" - done -} -trap finish EXIT - -# start the nodes -run_node Alice -run_node Bob - -# now wait; this will exit on its own only if both subprocesses exit -# the practical implication, as both subprocesses are supposed to run forever, is that -# this script will also run forever, until killed, at which point the exit trap should kill -# the subprocesses -wait diff --git a/bridges/scripts/update-weights-setup.sh b/scripts/update-weights-setup.sh similarity index 100% rename from bridges/scripts/update-weights-setup.sh rename to scripts/update-weights-setup.sh diff --git a/scripts/update-weights.sh b/scripts/update-weights.sh new file mode 100755 index 000000000000..5ee7bb9e8d8e --- /dev/null +++ b/scripts/update-weights.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Runtime benchmarks for the `pallet-bridge-messages` and `pallet-bridge-grandpa` pallets. +# +# Run this script from root of the repo. + +set -eux + +time cargo run --release -p rialto-bridge-node --features=runtime-benchmarks -- benchmark \ + --chain=dev \ + --steps=50 \ + --repeat=20 \ + --pallet=pallet_bridge_messages \ + --extrinsic=* \ + --execution=wasm \ + --wasm-execution=Compiled \ + --heap-pages=4096 \ + --output=./modules/messages/src/weights.rs \ + --template=./.maintain/rialto-weight-template.hbs + +time cargo run --release -p rialto-bridge-node --features=runtime-benchmarks -- benchmark \ + --chain=dev \ + --steps=50 \ + --repeat=20 \ + --pallet=pallet_bridge_grandpa \ + --extrinsic=* \ + --execution=wasm \ + --wasm-execution=Compiled \ + --heap-pages=4096 \ + --output=./modules/grandpa/src/weights.rs \ + --template=./.maintain/rialto-weight-template.hbs + +time cargo run --release -p millau-bridge-node --features=runtime-benchmarks -- benchmark \ + --chain=dev \ + --steps=50 \ + --repeat=20 \ + --pallet=pallet_bridge_token_swap \ + --extrinsic=* \ + --execution=wasm \ + --wasm-execution=Compiled \ + --heap-pages=4096 \ + --output=./modules/token-swap/src/weights.rs \ + --template=./.maintain/millau-weight-template.hbs diff --git a/bridges/scripts/update_substrate.sh b/scripts/update_substrate.sh similarity index 100% rename from bridges/scripts/update_substrate.sh rename to scripts/update_substrate.sh diff --git a/src/README.adoc b/src/README.adoc deleted file mode 100644 index 4ec8e18d8afe..000000000000 --- a/src/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Src - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 14d62fbb9ad6..000000000000 --- a/src/main.rs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Polkadot CLI - -#![warn(missing_docs)] - -use color_eyre::eyre; - -fn main() -> eyre::Result<()> { - color_eyre::install()?; - polkadot_cli::run()?; - Ok(()) -} diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml deleted file mode 100644 index 993a709abb1b..000000000000 --- a/statement-table/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "polkadot-statement-table" -version = "0.9.7" -authors = ["Parity Technologies "] -edition = "2018" - -[dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -primitives = { package = "polkadot-primitives", path = "../primitives" } diff --git a/statement-table/README.adoc b/statement-table/README.adoc deleted file mode 100644 index a4da4dee80ff..000000000000 --- a/statement-table/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Statement table - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) diff --git a/statement-table/src/generic.rs b/statement-table/src/generic.rs deleted file mode 100644 index 7f93c26a7bc6..000000000000 --- a/statement-table/src/generic.rs +++ /dev/null @@ -1,951 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The statement table: generic implementation. -//! -//! This stores messages other authorities issue about candidates. -//! -//! These messages are used to create a proposal submitted to a BFT consensus process. -//! -//! Each parachain is associated with a committee of authorities, who issue statements -//! indicating whether the candidate is valid or invalid. Once a threshold of the committee -//! has signed validity statements, the candidate may be marked includable. - -use std::collections::hash_map::{self, Entry, HashMap}; -use std::hash::Hash; -use std::fmt::Debug; - -use primitives::v1::{ValidityAttestation as PrimitiveValidityAttestation, ValidatorSignature}; - -use parity_scale_codec::{Encode, Decode}; - -/// Context for the statement table. -pub trait Context { - /// An authority ID - type AuthorityId: Debug + Hash + Eq + Clone; - /// The digest (hash or other unique attribute) of a candidate. - type Digest: Debug + Hash + Eq + Clone; - /// The group ID type - type GroupId: Debug + Hash + Ord + Eq + Clone; - /// A signature type. - type Signature: Debug + Eq + Clone; - /// Candidate type. In practice this will be a candidate receipt. - type Candidate: Debug + Ord + Eq + Clone; - - /// get the digest of a candidate. - fn candidate_digest(candidate: &Self::Candidate) -> Self::Digest; - - /// get the group of a candidate. - fn candidate_group(candidate: &Self::Candidate) -> Self::GroupId; - - /// Whether a authority is a member of a group. - /// Members are meant to submit candidates and vote on validity. - fn is_member_of(&self, authority: &Self::AuthorityId, group: &Self::GroupId) -> bool; - - /// requisite number of votes for validity from a group. - fn requisite_votes(&self, group: &Self::GroupId) -> usize; -} - -/// Statements circulated among peers. -#[derive(PartialEq, Eq, Debug, Clone, Encode, Decode)] -pub enum Statement { - /// Broadcast by an authority to indicate that this is its candidate for inclusion. - /// - /// Broadcasting two different candidate messages per round is not allowed. - #[codec(index = 1)] - Seconded(Candidate), - /// Broadcast by a authority to attest that the candidate with given digest is valid. - #[codec(index = 2)] - Valid(Digest), -} - -/// A signed statement. -#[derive(PartialEq, Eq, Debug, Clone, Encode, Decode)] -pub struct SignedStatement { - /// The statement. - pub statement: Statement, - /// The signature. - pub signature: Signature, - /// The sender. - pub sender: AuthorityId, -} - -/// Misbehavior: voting more than one way on candidate validity. -/// -/// Since there are three possible ways to vote, a double vote is possible in -/// three possible combinations (unordered) -#[derive(PartialEq, Eq, Debug, Clone)] -pub enum ValidityDoubleVote { - /// Implicit vote by issuing and explicitly voting validity. - IssuedAndValidity((Candidate, Signature), (Digest, Signature)), -} - -impl ValidityDoubleVote { - /// Deconstruct this misbehavior into two `(Statement, Signature)` pairs, erasing the information - /// about precisely what the problem was. - pub fn deconstruct(self) -> ( - (Statement, Signature), - (Statement, Signature), - ) - where - Ctx: Context, - Candidate: Debug + Ord + Eq + Clone, - Digest: Debug + Hash + Eq + Clone, - Signature: Debug + Eq + Clone, - { - match self { - Self::IssuedAndValidity((c, s1), (d, s2)) => { - ((Statement::Seconded(c), s1), (Statement::Valid(d), s2)) - } - } - } -} - -/// Misbehavior: multiple signatures on same statement. -#[derive(PartialEq, Eq, Debug, Clone)] -pub enum DoubleSign { - /// On candidate. - Seconded(Candidate, Signature, Signature), - /// On validity. - Validity(Digest, Signature, Signature), -} - -impl DoubleSign { - /// Deconstruct this misbehavior into a statement with two signatures, erasing the information about - /// precisely where in the process the issue was detected. - pub fn deconstruct(self) -> (Statement, Signature, Signature) { - match self { - Self::Seconded(candidate, a, b) => (Statement::Seconded(candidate), a, b), - Self::Validity(digest, a, b) => (Statement::Valid(digest), a, b), - } - } -} - -/// Misbehavior: declaring multiple candidates. -#[derive(PartialEq, Eq, Debug, Clone)] -pub struct MultipleCandidates { - /// The first candidate seen. - pub first: (Candidate, Signature), - /// The second candidate seen. - pub second: (Candidate, Signature), -} - -/// Misbehavior: submitted statement for wrong group. -#[derive(PartialEq, Eq, Debug, Clone)] -pub struct UnauthorizedStatement { - /// A signed statement which was submitted without proper authority. - pub statement: SignedStatement, -} - -/// Different kinds of misbehavior. All of these kinds of malicious misbehavior -/// are easily provable and extremely disincentivized. -#[derive(PartialEq, Eq, Debug, Clone)] -pub enum Misbehavior { - /// Voted invalid and valid on validity. - ValidityDoubleVote(ValidityDoubleVote), - /// Submitted multiple candidates. - MultipleCandidates(MultipleCandidates), - /// Submitted a message that was unauthorized. - UnauthorizedStatement(UnauthorizedStatement), - /// Submitted two valid signatures for the same message. - DoubleSign(DoubleSign), -} - -/// Type alias for misbehavior corresponding to context type. -pub type MisbehaviorFor = Misbehavior< - ::Candidate, - ::Digest, - ::AuthorityId, - ::Signature, ->; - -// kinds of votes for validity -#[derive(Clone, PartialEq, Eq)] -enum ValidityVote { - // implicit validity vote by issuing - Issued(Signature), - // direct validity vote - Valid(Signature), -} - -/// A summary of import of a statement. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Summary { - /// The digest of the candidate referenced. - pub candidate: Digest, - /// The group that the candidate is in. - pub group_id: Group, - /// How many validity votes are currently witnessed. - pub validity_votes: usize, -} - -/// A validity attestation. -#[derive(Clone, PartialEq, Decode, Encode)] -pub enum ValidityAttestation { - /// implicit validity attestation by issuing. - /// This corresponds to issuance of a `Candidate` statement. - Implicit(Signature), - /// An explicit attestation. This corresponds to issuance of a - /// `Valid` statement. - Explicit(Signature), -} - -impl Into for ValidityAttestation { - fn into(self) -> PrimitiveValidityAttestation { - match self { - Self::Implicit(s) => PrimitiveValidityAttestation::Implicit(s), - Self::Explicit(s) => PrimitiveValidityAttestation::Explicit(s), - } - } -} - -/// An attested-to candidate. -#[derive(Clone, PartialEq, Decode, Encode)] -pub struct AttestedCandidate { - /// The group ID that the candidate is in. - pub group_id: Group, - /// The candidate data. - pub candidate: Candidate, - /// Validity attestations. - pub validity_votes: Vec<(AuthorityId, ValidityAttestation)>, -} - -/// Stores votes and data about a candidate. -pub struct CandidateData { - group_id: Ctx::GroupId, - candidate: Ctx::Candidate, - validity_votes: HashMap>, -} - -impl CandidateData { - /// Yield a full attestation for a candidate. - /// If the candidate can be included, it will return `Some`. - pub fn attested(&self, validity_threshold: usize) - -> Option> - { - let valid_votes = self.validity_votes.len(); - if valid_votes < validity_threshold { - return None; - } - - let validity_votes = self.validity_votes.iter() - .map(|(a, v)| match *v { - ValidityVote::Valid(ref s) => - (a.clone(), ValidityAttestation::Explicit(s.clone())), - ValidityVote::Issued(ref s) => - (a.clone(), ValidityAttestation::Implicit(s.clone())), - }) - .collect(); - - Some(AttestedCandidate { - group_id: self.group_id.clone(), - candidate: self.candidate.clone(), - validity_votes, - }) - } - - fn summary(&self, digest: Ctx::Digest) -> Summary { - Summary { - candidate: digest, - group_id: self.group_id.clone(), - validity_votes: self.validity_votes.len(), - } - } -} - -// authority metadata -struct AuthorityData { - proposal: Option<(Ctx::Digest, Ctx::Signature)>, -} - -impl Default for AuthorityData { - fn default() -> Self { - AuthorityData { - proposal: None, - } - } -} - -/// Type alias for the result of a statement import. -pub type ImportResult = Result< - Option::Digest, ::GroupId>>, - MisbehaviorFor ->; - -/// Stores votes -pub struct Table { - authority_data: HashMap>, - detected_misbehavior: HashMap>>, - candidate_votes: HashMap>, -} - -impl Default for Table { - fn default() -> Self { - Table { - authority_data: HashMap::new(), - detected_misbehavior: HashMap::new(), - candidate_votes: HashMap::new(), - } - } -} - -impl Table { - /// Get the attested candidate for `digest`. - /// - /// Returns `Some(_)` if the candidate exists and is includable. - pub fn attested_candidate(&self, digest: &Ctx::Digest, context: &Ctx) - -> Option> - { - self.candidate_votes.get(digest).and_then(|data| { - let v_threshold = context.requisite_votes(&data.group_id); - data.attested(v_threshold) - }) - } - - /// Import a signed statement. Signatures should be checked for validity, and the - /// sender should be checked to actually be an authority. - /// - /// Validity and invalidity statements are only valid if the corresponding - /// candidate has already been imported. - /// - /// If this returns `None`, the statement was either duplicate or invalid. - pub fn import_statement( - &mut self, - context: &Ctx, - statement: SignedStatement, - ) -> Option> { - let SignedStatement { statement, signature, sender: signer } = statement; - - let res = match statement { - Statement::Seconded(candidate) => self.import_candidate( - context, - signer.clone(), - candidate, - signature - ), - Statement::Valid(digest) => self.validity_vote( - context, - signer.clone(), - digest, - ValidityVote::Valid(signature), - ), - }; - - match res { - Ok(maybe_summary) => maybe_summary, - Err(misbehavior) => { - // all misbehavior in agreement is provable and actively malicious. - // punishments may be cumulative. - self.detected_misbehavior.entry(signer).or_default().push(misbehavior); - None - } - } - } - - /// Get a candidate by digest. - pub fn get_candidate(&self, digest: &Ctx::Digest) -> Option<&Ctx::Candidate> { - self.candidate_votes.get(digest).map(|d| &d.candidate) - } - - /// Access all witnessed misbehavior. - pub fn get_misbehavior(&self) - -> &HashMap>> - { - &self.detected_misbehavior - } - - /// Create a draining iterator of misbehaviors. - /// - /// This consumes all detected misbehaviors, even if the iterator is not completely consumed. - pub fn drain_misbehaviors(&mut self) -> DrainMisbehaviors<'_, Ctx> { - self.detected_misbehavior - .drain() - .into() - } - - fn import_candidate( - &mut self, - context: &Ctx, - authority: Ctx::AuthorityId, - candidate: Ctx::Candidate, - signature: Ctx::Signature, - ) -> ImportResult { - let group = Ctx::candidate_group(&candidate); - if !context.is_member_of(&authority, &group) { - return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - signature, - statement: Statement::Seconded(candidate), - sender: authority, - }, - })); - } - - // check that authority hasn't already specified another candidate. - let digest = Ctx::candidate_digest(&candidate); - - let new_proposal = match self.authority_data.entry(authority.clone()) { - Entry::Occupied(mut occ) => { - // if digest is different, fetch candidate and - // note misbehavior. - let existing = occ.get_mut(); - - if let Some((ref old_digest, ref old_sig)) = existing.proposal { - if old_digest != &digest { - const EXISTENCE_PROOF: &str = - "when proposal first received from authority, candidate \ - votes entry is created. proposal here is `Some`, therefore \ - candidate votes entry exists; qed"; - - let old_candidate = self.candidate_votes.get(old_digest) - .expect(EXISTENCE_PROOF) - .candidate - .clone(); - - return Err(Misbehavior::MultipleCandidates(MultipleCandidates { - first: (old_candidate, old_sig.clone()), - second: (candidate, signature.clone()), - })); - } - - false - } else { - existing.proposal = Some((digest.clone(), signature.clone())); - true - } - } - Entry::Vacant(vacant) => { - vacant.insert(AuthorityData { - proposal: Some((digest.clone(), signature.clone())), - }); - true - } - }; - - // NOTE: altering this code may affect the existence proof above. ensure it remains - // valid. - if new_proposal { - self.candidate_votes.entry(digest.clone()).or_insert_with(move || CandidateData { - group_id: group, - candidate, - validity_votes: HashMap::new(), - }); - } - - self.validity_vote( - context, - authority, - digest, - ValidityVote::Issued(signature), - ) - } - - fn validity_vote( - &mut self, - context: &Ctx, - from: Ctx::AuthorityId, - digest: Ctx::Digest, - vote: ValidityVote, - ) -> ImportResult { - let votes = match self.candidate_votes.get_mut(&digest) { - None => return Ok(None), - Some(votes) => votes, - }; - - // check that this authority actually can vote in this group. - if !context.is_member_of(&from, &votes.group_id) { - let sig = match vote { - ValidityVote::Valid(s) => s, - ValidityVote::Issued(_) => - panic!("implicit issuance vote only cast from `import_candidate` after \ - checking group membership of issuer; qed"), - }; - - return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - signature: sig, - sender: from, - statement: Statement::Valid(digest), - } - })); - } - - // check for double votes. - match votes.validity_votes.entry(from.clone()) { - Entry::Occupied(occ) => { - let make_vdv = |v| Misbehavior::ValidityDoubleVote(v); - let make_ds = |ds| Misbehavior::DoubleSign(ds); - return if occ.get() != &vote { - Err(match (occ.get().clone(), vote) { - // valid vote conflicting with candidate statement - (ValidityVote::Issued(iss), ValidityVote::Valid(good)) | - (ValidityVote::Valid(good), ValidityVote::Issued(iss)) => - make_vdv(ValidityDoubleVote::IssuedAndValidity((votes.candidate.clone(), iss), (digest, good))), - - // two signatures on same candidate - (ValidityVote::Issued(a), ValidityVote::Issued(b)) => - make_ds(DoubleSign::Seconded(votes.candidate.clone(), a, b)), - - // two signatures on same validity vote - (ValidityVote::Valid(a), ValidityVote::Valid(b)) => - make_ds(DoubleSign::Validity(digest, a, b)), - }) - } else { - Ok(None) - } - } - Entry::Vacant(vacant) => { - vacant.insert(vote); - } - } - - Ok(Some(votes.summary(digest))) - } -} - -type Drain<'a, Ctx> = hash_map::Drain<'a, ::AuthorityId, Vec>>; - -struct MisbehaviorForAuthority { - id: Ctx::AuthorityId, - misbehaviors: Vec>, -} - -impl From<(Ctx::AuthorityId, Vec>)> for MisbehaviorForAuthority { - fn from((id, mut misbehaviors): (Ctx::AuthorityId, Vec>)) -> Self { - // we're going to be popping items off this list in the iterator, so reverse it now to - // preserve the original ordering. - misbehaviors.reverse(); - Self { id, misbehaviors } - } -} - -impl Iterator for MisbehaviorForAuthority { - type Item = (Ctx::AuthorityId, MisbehaviorFor); - - fn next(&mut self) -> Option { - self.misbehaviors.pop().map(|misbehavior| (self.id.clone(), misbehavior)) - } -} - -pub struct DrainMisbehaviors<'a, Ctx: Context> { - drain: Drain<'a, Ctx>, - in_progress: Option>, -} - -impl<'a, Ctx: Context> From> for DrainMisbehaviors<'a, Ctx> { - fn from(drain: Drain<'a, Ctx>) -> Self { - Self { - drain, - in_progress: None, - } - } -} - -impl<'a, Ctx: Context> DrainMisbehaviors<'a, Ctx> { - fn maybe_item(&mut self) -> Option<(Ctx::AuthorityId, MisbehaviorFor)> { - self.in_progress.as_mut().and_then(Iterator::next) - } -} - -impl<'a, Ctx: Context> Iterator for DrainMisbehaviors<'a, Ctx> { - type Item = (Ctx::AuthorityId, MisbehaviorFor); - - fn next(&mut self) -> Option { - // Note: this implementation will prematurely return `None` if `self.drain.next()` ever returns a - // tuple whose vector is empty. That will never currently happen, as the only modification - // to the backing map is currently via `drain` and `entry(...).or_default().push(...)`. - // However, future code changes might change that property. - self.maybe_item().or_else(|| { - self.in_progress = self.drain.next().map(Into::into); - self.maybe_item() - }) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use std::collections::HashMap; - - fn create() -> Table { - Table::default() - } - - #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] - struct AuthorityId(usize); - - #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] - struct GroupId(usize); - - // group, body - #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] - struct Candidate(usize, usize); - - #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] - struct Signature(usize); - - #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] - struct Digest(usize); - - #[derive(Debug, PartialEq, Eq)] - struct TestContext { - // v -> parachain group - authorities: HashMap - } - - impl Context for TestContext { - type AuthorityId = AuthorityId; - type Digest = Digest; - type Candidate = Candidate; - type GroupId = GroupId; - type Signature = Signature; - - fn candidate_digest(candidate: &Candidate) -> Digest { - Digest(candidate.1) - } - - fn candidate_group(candidate: &Candidate) -> GroupId { - GroupId(candidate.0) - } - - fn is_member_of( - &self, - authority: &AuthorityId, - group: &GroupId - ) -> bool { - self.authorities.get(authority).map(|v| v == group).unwrap_or(false) - } - - fn requisite_votes(&self, id: &GroupId) -> usize { - let mut total_validity = 0; - - for validity in self.authorities.values() { - if validity == id { total_validity += 1 } - } - - total_validity / 2 + 1 - } - } - - #[test] - fn submitting_two_candidates_is_misbehavior() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map - } - }; - - let mut table = create(); - let statement_a = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - let statement_b = SignedStatement { - statement: Statement::Seconded(Candidate(2, 999)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - table.import_statement(&context, statement_a); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - - table.import_statement(&context, statement_b); - assert_eq!( - table.detected_misbehavior[&AuthorityId(1)][0], - Misbehavior::MultipleCandidates(MultipleCandidates { - first: (Candidate(2, 100), Signature(1)), - second: (Candidate(2, 999), Signature(1)), - }) - ); - } - - #[test] - fn submitting_candidate_from_wrong_group_is_misbehavior() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(3)); - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - table.import_statement(&context, statement); - - assert_eq!( - table.detected_misbehavior[&AuthorityId(1)][0], - Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }, - }) - ); - } - - #[test] - fn unauthorized_votes() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map.insert(AuthorityId(2), GroupId(3)); - map - } - }; - - let mut table = create(); - - let candidate_a = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - let candidate_a_digest = Digest(100); - - table.import_statement(&context, candidate_a); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); - - // authority 2 votes for validity on 1's candidate. - let bad_validity_vote = SignedStatement { - statement: Statement::Valid(candidate_a_digest.clone()), - signature: Signature(2), - sender: AuthorityId(2), - }; - table.import_statement(&context, bad_validity_vote); - - assert_eq!( - table.detected_misbehavior[&AuthorityId(2)][0], - Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - statement: Statement::Valid(candidate_a_digest), - signature: Signature(2), - sender: AuthorityId(2), - }, - }) - ); - } - - #[test] - fn candidate_double_signature_is_misbehavior() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map.insert(AuthorityId(2), GroupId(2)); - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - table.import_statement(&context, statement); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - - let invalid_statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(999), - sender: AuthorityId(1), - }; - - table.import_statement(&context, invalid_statement); - assert!(table.detected_misbehavior.contains_key(&AuthorityId(1))); - } - - #[test] - fn issue_and_vote_is_misbehavior() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - let candidate_digest = Digest(100); - - table.import_statement(&context, statement); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - - let extra_vote = SignedStatement { - statement: Statement::Valid(candidate_digest.clone()), - signature: Signature(1), - sender: AuthorityId(1), - }; - - table.import_statement(&context, extra_vote); - assert_eq!( - table.detected_misbehavior[&AuthorityId(1)][0], - Misbehavior::ValidityDoubleVote(ValidityDoubleVote::IssuedAndValidity( - (Candidate(2, 100), Signature(1)), - (Digest(100), Signature(1)), - )) - ); - } - - #[test] - fn candidate_attested_works() { - let validity_threshold = 6; - - let mut candidate = CandidateData:: { - group_id: GroupId(4), - candidate: Candidate(4, 12345), - validity_votes: HashMap::new(), - }; - - assert!(candidate.attested(validity_threshold).is_none()); - - for i in 0..validity_threshold { - candidate.validity_votes.insert(AuthorityId(i + 100), ValidityVote::Valid(Signature(i + 100))); - } - - assert!(candidate.attested(validity_threshold).is_some()); - - candidate.validity_votes.insert( - AuthorityId(validity_threshold + 100), - ValidityVote::Valid(Signature(validity_threshold + 100)), - ); - - assert!(candidate.attested(validity_threshold).is_some()); - } - - #[test] - fn includability_works() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map.insert(AuthorityId(2), GroupId(2)); - map.insert(AuthorityId(3), GroupId(2)); - map - } - }; - - // have 2/3 validity guarantors note validity. - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - let candidate_digest = Digest(100); - - table.import_statement(&context, statement); - - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - assert!(table.attested_candidate(&candidate_digest, &context).is_none()); - - let vote = SignedStatement { - statement: Statement::Valid(candidate_digest.clone()), - signature: Signature(2), - sender: AuthorityId(2), - }; - - table.import_statement(&context, vote); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); - assert!(table.attested_candidate(&candidate_digest, &context).is_some()); - } - - #[test] - fn candidate_import_gives_summary() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - let summary = table.import_statement(&context, statement) - .expect("candidate import to give summary"); - - assert_eq!(summary.candidate, Digest(100)); - assert_eq!(summary.group_id, GroupId(2)); - assert_eq!(summary.validity_votes, 1); - } - - #[test] - fn candidate_vote_gives_summary() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - map.insert(AuthorityId(1), GroupId(2)); - map.insert(AuthorityId(2), GroupId(2)); - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Seconded(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - let candidate_digest = Digest(100); - - table.import_statement(&context, statement); - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - - let vote = SignedStatement { - statement: Statement::Valid(candidate_digest.clone()), - signature: Signature(2), - sender: AuthorityId(2), - }; - - let summary = table.import_statement(&context, vote) - .expect("candidate vote to give summary"); - - assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); - - assert_eq!(summary.candidate, Digest(100)); - assert_eq!(summary.group_id, GroupId(2)); - assert_eq!(summary.validity_votes, 2); - } -} diff --git a/statement-table/src/lib.rs b/statement-table/src/lib.rs deleted file mode 100644 index 327afb497b80..000000000000 --- a/statement-table/src/lib.rs +++ /dev/null @@ -1,59 +0,0 @@ -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The statement table. -//! -//! This stores messages other authorities issue about candidates. -//! -//! These messages are used to create a proposal submitted to a BFT consensus process. -//! -//! Proposals are formed of sets of candidates which have the requisite number of -//! validity and availability votes. -//! -//! Each parachain is associated with two sets of authorities: those which can -//! propose and attest to validity of candidates, and those who can only attest -//! to availability. - -pub mod generic; - -pub use generic::{Table, Context}; - -/// Concrete instantiations suitable for v1 primitives. -pub mod v1 { - use crate::generic; - use primitives::v1::{ - CandidateHash, Id, CommittedCandidateReceipt, CompactStatement as PrimitiveStatement, - ValidatorSignature, ValidatorIndex, - }; - - /// Statements about candidates on the network. - pub type Statement = generic::Statement; - - /// Signed statements about candidates. - pub type SignedStatement = generic::SignedStatement< - CommittedCandidateReceipt, - CandidateHash, - ValidatorIndex, - ValidatorSignature, - >; - - /// Kinds of misbehavior, along with proof. - pub type Misbehavior = generic::Misbehavior< - CommittedCandidateReceipt, - CandidateHash, - ValidatorIndex, - ValidatorSignature, - >; - - /// A summary of import of a statement. - pub type Summary = generic::Summary; - - impl<'a> From<&'a Statement> for PrimitiveStatement { - fn from(s: &'a Statement) -> PrimitiveStatement { - match *s { - generic::Statement::Valid(s) => PrimitiveStatement::Valid(s), - generic::Statement::Seconded(ref s) => PrimitiveStatement::Seconded(s.hash()), - } - } - } -} diff --git a/tests/common.rs b/tests/common.rs deleted file mode 100644 index 96060bf85d9f..000000000000 --- a/tests/common.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use std::{process::{Child, ExitStatus}, thread, time::Duration}; - -/// Wait for the given `child` the given ammount of `secs`. -/// -/// Returns the `Some(exit status)` or `None` if the process did not finish in the given time. -pub fn wait_for(child: &mut Child, secs: usize) -> Option { - for _ in 0..secs { - match child.try_wait().unwrap() { - Some(status) => return Some(status), - None => thread::sleep(Duration::from_secs(1)), - } - } - eprintln!("Took to long to exit. Killing..."); - let _ = child.kill(); - child.wait().unwrap(); - - None -} diff --git a/tests/invalid_order_arguments.rs b/tests/invalid_order_arguments.rs deleted file mode 100644 index f205e935ab95..000000000000 --- a/tests/invalid_order_arguments.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use assert_cmd::cargo::cargo_bin; -use std::process::Command; -use tempfile::tempdir; - -#[test] -#[cfg(unix)] -fn invalid_order_arguments() { - let tmpdir = tempdir().expect("could not create temp dir"); - - let status = Command::new(cargo_bin("polkadot")) - .args(&["--dev", "invalid_order_arguments", "-d"]) - .arg(tmpdir.path()) - .arg("-y") - .status() - .unwrap(); - assert!(!status.success()); -} diff --git a/tests/purge_chain_works.rs b/tests/purge_chain_works.rs deleted file mode 100644 index dcb5693e09eb..000000000000 --- a/tests/purge_chain_works.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use assert_cmd::cargo::cargo_bin; -use std::{convert::TryInto, process::Command, thread, time::Duration}; -use tempfile::tempdir; - -mod common; - -#[test] -#[cfg(unix)] -fn purge_chain_works() { - use nix::sys::signal::{kill, Signal::SIGINT}; - use nix::unistd::Pid; - - let tmpdir = tempdir().expect("could not create temp dir"); - - let mut cmd = Command::new(cargo_bin("polkadot")) - .args(&["--dev", "-d"]) - .arg(tmpdir.path()) - .spawn() - .unwrap(); - - // Let it produce some blocks. - // poll once per second for faster failure - for _ in 0..30 { - thread::sleep(Duration::from_secs(1)); - assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); - } - - // Stop the process - kill(Pid::from_raw(cmd.id().try_into().unwrap()), SIGINT).unwrap(); - assert!(common::wait_for(&mut cmd, 30).map(|x| x.success()).unwrap_or_default()); - - // Purge chain - let status = Command::new(cargo_bin("polkadot")) - .args(&["purge-chain", "--dev", "-d"]) - .arg(tmpdir.path()) - .arg("-y") - .status() - .unwrap(); - assert!(status.success()); - - // Make sure that the `dev` chain folder exists, but the `db` is deleted. - assert!(tmpdir.path().join("chains/dev/").exists()); - assert!(!tmpdir.path().join("chains/dev/db").exists()); -} diff --git a/tests/running_the_node_and_interrupt.rs b/tests/running_the_node_and_interrupt.rs deleted file mode 100644 index 2e1b9ab6ba4a..000000000000 --- a/tests/running_the_node_and_interrupt.rs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use assert_cmd::cargo::cargo_bin; -use std::{convert::TryInto, process::Command, thread, time::Duration}; -use tempfile::tempdir; - -mod common; - -#[test] -#[cfg(unix)] -fn running_the_node_works_and_can_be_interrupted() { - use nix::sys::signal::{kill, Signal::{self, SIGINT, SIGTERM}}; - use nix::unistd::Pid; - - fn run_command_and_kill(signal: Signal) { - let tmpdir = tempdir().expect("coult not create temp dir"); - - let mut cmd = Command::new(cargo_bin("polkadot")) - .args(&["--dev", "-d"]) - .arg(tmpdir.path()) - .spawn() - .unwrap(); - - thread::sleep(Duration::from_secs(30)); - assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); - kill(Pid::from_raw(cmd.id().try_into().unwrap()), signal).unwrap(); - assert_eq!( - common::wait_for(&mut cmd, 30).map(|x| x.success()), - Some(true), - "the pocess must exit gracefully after signal {}", - signal, - ); - } - - run_command_and_kill(SIGINT); - run_command_and_kill(SIGTERM); -} diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml deleted file mode 100644 index 3080ae157981..000000000000 --- a/xcm/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "xcm" -version = "0.9.7" -authors = ["Parity Technologies x"] -description = "The basic XCM datastructures." -edition = "2018" - -[dependencies] -impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } -derivative = {version = "2.2.0", default-features = false, features = [ "use_core" ] } - -[features] -default = ["std"] -wasm-api = [] -std = [ - "parity-scale-codec/std", -] diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml deleted file mode 100644 index 75d737ed69cd..000000000000 --- a/xcm/pallet-xcm/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -authors = ["Parity Technologies "] -edition = "2018" -name = "pallet-xcm" -version = "0.1.0" - -[dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true, features = ["derive"] } - -sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } -frame-system = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } - -xcm = { path = "..", default-features = false } -xcm-executor = { path = "../xcm-executor", default-features = false } - -[features] -default = ["std"] -std = [ - "codec/std", - "serde", - "sp-std/std", - "sp-runtime/std", - "frame-support/std", - "frame-system/std", - "xcm/std", -] -runtime-benchmarks = [] \ No newline at end of file diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs deleted file mode 100644 index d89356cc02b5..000000000000 --- a/xcm/pallet-xcm/src/lib.rs +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Pallet to handle XCM messages. - -#![cfg_attr(not(feature = "std"), no_std)] - -use sp_std::{prelude::*, marker::PhantomData, convert::TryInto, boxed::Box, vec}; -use codec::{Encode, Decode}; -use xcm::v0::prelude::*; -use xcm_executor::traits::ConvertOrigin; -use sp_runtime::{RuntimeDebug, traits::BadOrigin}; -use frame_support::traits::{EnsureOrigin, OriginTrait, Filter, Get, Contains}; - -pub use pallet::*; -use frame_support::PalletId; - -#[frame_support::pallet] -pub mod pallet { - use super::*; - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use xcm_executor::traits::WeightBounds; - use sp_runtime::traits::AccountIdConversion; - - #[pallet::pallet] - #[pallet::generate_store(pub(super) trait Store)] - pub struct Pallet(_); - - #[pallet::config] - /// The module configuration trait. - pub trait Config: frame_system::Config { - /// The overarching event type. - type Event: From> + IsType<::Event>; - - /// Required origin for sending XCM messages. If successful, the it resolves to `MultiLocation` - /// which exists as an interior location within this chain's XCM context. - type SendXcmOrigin: EnsureOrigin; - - /// The type used to actually dispatch an XCM to its destination. - type XcmRouter: SendXcm; - - /// Required origin for executing XCM messages, including the teleport functionality. If successful, - /// then it resolves to `MultiLocation` which exists as an interior location within this chain's XCM - /// context. - type ExecuteXcmOrigin: EnsureOrigin; - - /// Our XCM filter which messages to be executed using `XcmExecutor` must pass. - type XcmExecuteFilter: Contains<(MultiLocation, Xcm)>; - - /// Something to execute an XCM message. - type XcmExecutor: ExecuteXcm; - - /// Our XCM filter which messages to be teleported using the dedicated extrinsic must pass. - type XcmTeleportFilter: Contains<(MultiLocation, Vec)>; - - /// Our XCM filter which messages to be reserve-transferred using the dedicated extrinsic must pass. - type XcmReserveTransferFilter: Contains<(MultiLocation, Vec)>; - - /// Means of measuring the weight consumed by an XCM message locally. - type Weigher: WeightBounds; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - Attempted(xcm::v0::Outcome), - Sent(MultiLocation, MultiLocation, Xcm<()>), - } - - #[pallet::error] - pub enum Error { - Unreachable, - SendFailure, - /// The message execution fails the filter. - Filtered, - /// The message's weight could not be determined. - UnweighableMessage, - } - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - #[pallet::weight(100_000_000)] - pub fn send(origin: OriginFor, dest: MultiLocation, message: Xcm<()>) -> DispatchResult { - let origin_location = T::SendXcmOrigin::ensure_origin(origin)?; - Self::send_xcm(origin_location.clone(), dest.clone(), message.clone()) - .map_err(|e| match e { - XcmError::CannotReachDestination(..) => Error::::Unreachable, - _ => Error::::SendFailure, - })?; - Self::deposit_event(Event::Sent(origin_location, dest, message)); - Ok(()) - } - - /// Teleport some assets from the local chain to some destination chain. - /// - /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. - /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send - /// from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain. - /// - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be - /// an `AccountId32` value. - /// - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the - /// `dest` side. - /// - `dest_weight`: Equal to the total weight on `dest` of the XCM message - /// `Teleport { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`. - #[pallet::weight({ - let mut message = Xcm::WithdrawAsset { - assets: assets.clone(), - effects: sp_std::vec![ InitiateTeleport { - assets: sp_std::vec![ All ], - dest: dest.clone(), - effects: sp_std::vec![], - } ] - }; - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) - })] - pub fn teleport_assets( - origin: OriginFor, - dest: MultiLocation, - beneficiary: MultiLocation, - assets: Vec, - dest_weight: Weight, - ) -> DispatchResult { - let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; - let value = (origin_location, assets); - ensure!(T::XcmTeleportFilter::contains(&value), Error::::Filtered); - let (origin_location, assets) = value; - let mut message = Xcm::WithdrawAsset { - assets, - effects: vec![ - InitiateTeleport { - assets: vec![ All ], - dest, - effects: vec![ - BuyExecution { - fees: All, - // Zero weight for additional XCM (since there are none to execute) - weight: 0, - debt: dest_weight, - halt_on_error: false, - xcm: vec![], - }, - DepositAsset { assets: vec![ All ], dest: beneficiary }, - ], - }, - ], - }; - let weight = T::Weigher::weight(&mut message) - .map_err(|()| Error::::UnweighableMessage)?; - let outcome = T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); - Self::deposit_event(Event::Attempted(outcome)); - Ok(()) - } - - /// Transfer some assets from the local chain to the sovereign account of a destination chain and forward - /// a notification XCM. - /// - /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. - /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send - /// from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain. - /// - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be - /// an `AccountId32` value. - /// - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the - /// `dest` side. - /// - `dest_weight`: Equal to the total weight on `dest` of the XCM message - /// `ReserveAssetDeposit { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`. - #[pallet::weight({ - let mut message = Xcm::TransferReserveAsset { - assets: assets.clone(), - dest: dest.clone(), - effects: sp_std::vec![], - }; - T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) - })] - pub fn reserve_transfer_assets( - origin: OriginFor, - dest: MultiLocation, - beneficiary: MultiLocation, - assets: Vec, - dest_weight: Weight, - ) -> DispatchResult { - let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; - let value = (origin_location, assets); - ensure!(T::XcmReserveTransferFilter::contains(&value), Error::::Filtered); - let (origin_location, assets) = value; - let mut message = Xcm::TransferReserveAsset { - assets, - dest, - effects: vec![ - BuyExecution { - fees: All, - // Zero weight for additional XCM (since there are none to execute) - weight: 0, - debt: dest_weight, - halt_on_error: false, - xcm: vec![], - }, - DepositAsset { assets: vec![ All ], dest: beneficiary }, - ], - }; - let weight = T::Weigher::weight(&mut message) - .map_err(|()| Error::::UnweighableMessage)?; - let outcome = T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); - Self::deposit_event(Event::Attempted(outcome)); - Ok(()) - } - - /// Execute an XCM message from a local, signed, origin. - /// - /// An event is deposited indicating whether `msg` could be executed completely or only - /// partially. - /// - /// No more than `max_weight` will be used in its attempted execution. If this is less than the - /// maximum amount of weight that the message could take to be executed, then no execution - /// attempt will be made. - /// - /// NOTE: A successful return to this does *not* imply that the `msg` was executed successfully - /// to completion; only that *some* of it was executed. - #[pallet::weight(max_weight.saturating_add(100_000_000u64))] - pub fn execute(origin: OriginFor, message: Box>, max_weight: Weight) - -> DispatchResult - { - let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; - let value = (origin_location, *message); - ensure!(T::XcmExecuteFilter::contains(&value), Error::::Filtered); - let (origin_location, message) = value; - let outcome = T::XcmExecutor::execute_xcm(origin_location, message, max_weight); - Self::deposit_event(Event::Attempted(outcome)); - Ok(()) - } - } - - impl Pallet { - /// Relay an XCM `message` from a given `interior` location in this context to a given `dest` - /// location. A null `dest` is not handled. - pub fn send_xcm(interior: MultiLocation, dest: MultiLocation, message: Xcm<()>) -> Result<(), XcmError> { - let message = match interior { - MultiLocation::Null => message, - who => Xcm::<()>::RelayedFrom { who, message: Box::new(message) }, - }; - T::XcmRouter::send_xcm(dest, message) - } - - pub fn check_account() -> T::AccountId { - const ID: PalletId = PalletId(*b"py/xcmch"); - AccountIdConversion::::into_account(&ID) - } - } - - /// Origin for the parachains module. - #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] - #[pallet::origin] - pub enum Origin { - /// It comes from somewhere in the XCM space. - Xcm(MultiLocation), - } - - impl From for Origin { - fn from(location: MultiLocation) -> Origin { - Origin::Xcm(location) - } - } -} - -/// Ensure that the origin `o` represents a sibling parachain. -/// Returns `Ok` with the parachain ID of the sibling or an `Err` otherwise. -pub fn ensure_xcm(o: OuterOrigin) -> Result - where OuterOrigin: Into> -{ - match o.into() { - Ok(Origin::Xcm(location)) => Ok(location), - _ => Err(BadOrigin), - } -} - -/// Filter for `MultiLocation` to find those which represent a strict majority approval of an identified -/// plurality. -/// -/// May reasonably be used with `EnsureXcm`. -pub struct IsMajorityOfBody(PhantomData<(Prefix, Body)>); -impl, Body: Get> Filter for IsMajorityOfBody { - fn filter(l: &MultiLocation) -> bool { - let maybe_suffix = l.match_and_split(&Prefix::get()); - matches!(maybe_suffix, Some(Plurality { id, part }) if id == &Body::get() && part.is_majority()) - } -} - -/// `EnsureOrigin` implementation succeeding with a `MultiLocation` value to recognize and filter the -/// `Origin::Xcm` item. -pub struct EnsureXcm(PhantomData); -impl, F: Filter> EnsureOrigin for EnsureXcm - where O::PalletsOrigin: From + TryInto -{ - type Success = MultiLocation; - - fn try_origin(outer: O) -> Result { - outer.try_with_caller(|caller| caller.try_into() - .and_then(|Origin::Xcm(location)| - if F::filter(&location) { - Ok(location) - } else { - Err(Origin::Xcm(location).into()) - } - )) - } - - #[cfg(feature = "runtime-benchmarks")] - fn successful_origin() -> O { - O::from(Origin::Xcm(MultiLocation::Null)) - } -} - -/// A simple passthrough where we reuse the `MultiLocation`-typed XCM origin as the inner value of -/// this crate's `Origin::Xcm` value. -pub struct XcmPassthrough(PhantomData); -impl< - Origin: From, -> ConvertOrigin for XcmPassthrough { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Xcm, l) => Ok(crate::Origin::Xcm(l).into()), - (_, origin) => Err(origin), - } - } -} diff --git a/xcm/src/double_encoded.rs b/xcm/src/double_encoded.rs deleted file mode 100644 index 4bd5dc0eb595..000000000000 --- a/xcm/src/double_encoded.rs +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use alloc::vec::Vec; -use parity_scale_codec::{Encode, Decode, DecodeLimit}; - -/// Maximum nesting level for XCM decoding. -pub const MAX_XCM_DECODE_DEPTH: u32 = 8; - -/// Wrapper around the encoded and decoded versions of a value. -/// Caches the decoded value once computed. -#[derive(Encode, Decode)] -#[codec(encode_bound())] -#[codec(decode_bound())] -pub struct DoubleEncoded { - encoded: Vec, - #[codec(skip)] - decoded: Option, -} - -impl Clone for DoubleEncoded { - fn clone(&self) -> Self { Self { encoded: self.encoded.clone(), decoded: None } } -} - -impl PartialEq for DoubleEncoded { - fn eq(&self, other: &Self) -> bool { self.encoded.eq(&other.encoded) } -} -impl Eq for DoubleEncoded {} - -impl core::fmt::Debug for DoubleEncoded { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { self.encoded.fmt(f) } -} - -impl From> for DoubleEncoded { - fn from(encoded: Vec) -> Self { - Self { encoded, decoded: None } - } -} - -impl DoubleEncoded { - pub fn into(self) -> DoubleEncoded { DoubleEncoded::from(self) } - - pub fn from(e: DoubleEncoded) -> Self { - Self { - encoded: e.encoded, - decoded: None, - } - } - - /// Provides an API similar to `AsRef` that provides access to the inner value. - /// `AsRef` implementation would expect an `&Option` return type. - pub fn as_ref(&self) -> Option<&T> { - self.decoded.as_ref() - } -} - -impl DoubleEncoded { - /// Decode the inner encoded value and store it. - /// Returns a reference to the value in case of success and `Err(())` in case the decoding fails. - pub fn ensure_decoded(&mut self) -> Result<&T, ()> { - if self.decoded.is_none() { - self.decoded = T::decode_all_with_depth_limit( - MAX_XCM_DECODE_DEPTH, - &mut &self.encoded[..], - ).ok(); - } - self.decoded.as_ref().ok_or(()) - } - - /// Move the decoded value out or (if not present) decode `encoded`. - pub fn take_decoded(&mut self) -> Result { - self.decoded.take().or_else(|| { - T::decode_all_with_depth_limit( - MAX_XCM_DECODE_DEPTH, - &mut &self.encoded[..], - ).ok() - }).ok_or(()) - } - - /// Provides an API similar to `TryInto` that allows fallible conversion to the inner value type. - /// `TryInto` implementation would collide with std blanket implementation based on `TryFrom`. - pub fn try_into(mut self) -> Result { - self.ensure_decoded()?; - self.decoded.ok_or(()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn ensure_decoded_works() { - let val: u64 = 42; - let mut encoded: DoubleEncoded<_> = Encode::encode(&val).into(); - assert_eq!(encoded.ensure_decoded(), Ok(&val)); - } - - #[test] - fn take_decoded_works() { - let val: u64 = 42; - let mut encoded: DoubleEncoded<_> = Encode::encode(&val).into(); - assert_eq!(encoded.take_decoded(), Ok(val)); - } - - #[test] - fn try_into_works() { - let val: u64 = 42; - let encoded: DoubleEncoded<_> = Encode::encode(&val).into(); - assert_eq!(encoded.try_into(), Ok(val)); - } -} diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs deleted file mode 100644 index 9768be8dacaa..000000000000 --- a/xcm/src/lib.rs +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Cross-Consensus Message format data structures. - -// NOTE, this crate is meant to be used in many different environments, notably wasm, but not -// necessarily related to FRAME or even Substrate. -// -// Hence, `no_std` rather than sp-runtime. -#![no_std] -extern crate alloc; - -use parity_scale_codec::{Encode, Decode}; -use derivative::Derivative; - -pub mod v0; - -mod double_encoded; -pub use double_encoded::DoubleEncoded; - -/// A single XCM message, together with its version code. -#[derive(Derivative, Encode, Decode)] -#[derivative(Clone(bound=""), Eq(bound=""), PartialEq(bound=""), Debug(bound=""))] -#[codec(encode_bound())] -#[codec(decode_bound())] -pub enum VersionedXcm { - V0(v0::Xcm), -} - -pub mod opaque { - pub mod v0 { - // Everything from v0 - pub use crate::v0::*; - // Then override with the opaque types in v0 - pub use crate::v0::opaque::{Xcm, Order}; - } - - /// The basic VersionedXcm type which just uses the `Vec` as an encoded call. - pub type VersionedXcm = super::VersionedXcm<()>; -} - -/// A versioned multi-location, a relative location of a cross-consensus system identifier. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] -pub enum VersionedMultiLocation { - V0(v0::MultiLocation), -} - -/// A versioned multi-asset, an identifier for an asset within a consensus system. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] -pub enum VersionedMultiAsset { - V0(v0::MultiAsset), -} diff --git a/xcm/src/v0/junction.rs b/xcm/src/v0/junction.rs deleted file mode 100644 index 2f3af556b462..000000000000 --- a/xcm/src/v0/junction.rs +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Support datastructures for `MultiLocation`, primarily the `Junction` datatype. - -use alloc::vec::Vec; -use parity_scale_codec::{self, Encode, Decode}; - -/// A global identifier of an account-bearing consensus system. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum NetworkId { - /// Unidentified/any. - Any, - /// Some named network. - Named(Vec), - /// The Polkadot Relay chain - Polkadot, - /// Kusama. - Kusama, -} - -/// An identifier of a pluralistic body. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum BodyId { - /// The only body in its context. - Unit, - /// A named body. - Named(Vec), - /// An indexed body. - // TODO: parity-scale-codec#262: Change to be a tuple. - Index { #[codec(compact)] id: u32 }, - /// The unambiguous executive body (for Polkadot, this would be the Polkadot council). - Executive, - /// The unambiguous technical body (for Polkadot, this would be the Technical Committee). - Technical, - /// The unambiguous legislative body (for Polkadot, this could be considered the opinion of a majority of - /// lock-voters). - Legislative, - /// The unambiguous judicial body (this doesn't exist on Polkadot, but if it were to get a "grand oracle", it - /// may be considered as that). - Judicial, -} - -/// A part of a pluralistic body. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum BodyPart { - /// The body's declaration, under whatever means it decides. - Voice, - /// A given number of members of the body. - Members { #[codec(compact)] count: u32 }, - /// A given number of members of the body, out of some larger caucus. - Fraction { #[codec(compact)] nom: u32, #[codec(compact)] denom: u32 }, - /// No less than the given proportion of members of the body. - AtLeastProportion { #[codec(compact)] nom: u32, #[codec(compact)] denom: u32 }, - /// More than than the given proportion of members of the body. - MoreThanProportion { #[codec(compact)] nom: u32, #[codec(compact)] denom: u32 }, -} - -impl BodyPart { - /// Returns `true` if the part represents a strict majority (> 50%) of the body in question. - pub fn is_majority(&self) -> bool { - match self { - BodyPart::Fraction { nom, denom } if *nom * 2 > *denom => true, - BodyPart::AtLeastProportion { nom, denom } if *nom * 2 > *denom => true, - BodyPart::MoreThanProportion { nom, denom } if *nom * 2 >= *denom => true, - _ => false, - } - } -} - -/// A single item in a path to describe the relative location of a consensus system. -/// -/// Each item assumes a pre-existing location as its context and is defined in terms of it. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum Junction { - /// The consensus system of which the context is a member and state-wise super-set. - /// - /// NOTE: This item is *not* a sub-consensus item: a consensus system may not identify itself trustlessly as - /// a location that includes this junction. - Parent, - /// An indexed parachain belonging to and operated by the context. - /// - /// Generally used when the context is a Polkadot Relay-chain. - Parachain(#[codec(compact)] u32), - /// A 32-byte identifier for an account of a specific network that is respected as a sovereign endpoint within - /// the context. - /// - /// Generally used when the context is a Substrate-based chain. - AccountId32 { network: NetworkId, id: [u8; 32] }, - /// An 8-byte index for an account of a specific network that is respected as a sovereign endpoint within - /// the context. - /// - /// May be used when the context is a Frame-based chain and includes e.g. an indices pallet. - AccountIndex64 { network: NetworkId, #[codec(compact)] index: u64 }, - /// A 20-byte identifier for an account of a specific network that is respected as a sovereign endpoint within - /// the context. - /// - /// May be used when the context is an Ethereum or Bitcoin chain or smart-contract. - AccountKey20 { network: NetworkId, key: [u8; 20] }, - /// An instanced, indexed pallet that forms a constituent part of the context. - /// - /// Generally used when the context is a Frame-based chain. - PalletInstance(u8), - /// A non-descript index within the context location. - /// - /// Usage will vary widely owing to its generality. - /// - /// NOTE: Try to avoid using this and instead use a more specific item. - GeneralIndex { #[codec(compact)] id: u128 }, - /// A nondescript datum acting as a key within the context location. - /// - /// Usage will vary widely owing to its generality. - /// - /// NOTE: Try to avoid using this and instead use a more specific item. - GeneralKey(Vec), - /// The unambiguous child. - /// - /// Not currently used except as a fallback when deriving ancestry. - OnlyChild, - /// A pluralistic body existing within consensus. - /// - /// Typical to be used to represent a governance origin of a chain, but could in principle be used to represent - /// things such as multisigs also. - Plurality { id: BodyId, part: BodyPart }, -} - -impl Junction { - /// Returns true if this junction can be considered an interior part of its context. This is generally `true`, - /// except for the `Parent` item. - pub fn is_interior(&self) -> bool { - match self { - Junction::Parent => false, - - Junction::Parachain(..) - | Junction::AccountId32 { .. } - | Junction::AccountIndex64 { .. } - | Junction::AccountKey20 { .. } - | Junction::PalletInstance { .. } - | Junction::GeneralIndex { .. } - | Junction::GeneralKey(..) - | Junction::OnlyChild - | Junction::Plurality { .. } - => true, - } - } -} diff --git a/xcm/src/v0/mod.rs b/xcm/src/v0/mod.rs deleted file mode 100644 index 368353f2d82a..000000000000 --- a/xcm/src/v0/mod.rs +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Version 0 of the Cross-Consensus Message format data structures. - -use core::{result, convert::TryFrom, fmt::Debug}; -use derivative::Derivative; -use alloc::vec::Vec; -use parity_scale_codec::{self, Encode, Decode}; -use crate::{VersionedMultiAsset, DoubleEncoded, VersionedXcm}; - -mod junction; -mod multi_asset; -mod multi_location; -mod order; -mod traits; -pub use junction::{Junction, NetworkId, BodyId, BodyPart}; -pub use multi_asset::{MultiAsset, AssetInstance}; -pub use multi_location::MultiLocation; -pub use order::Order; -pub use traits::{Error, Result, SendXcm, ExecuteXcm, Outcome}; - -/// A prelude for importing all types typically used when interacting with XCM messages. -pub mod prelude { - pub use super::junction::{Junction::*, NetworkId, BodyId, BodyPart}; - pub use super::multi_asset::{MultiAsset::{self, *}, AssetInstance::{self, *}}; - pub use super::multi_location::MultiLocation::{self, *}; - pub use super::order::Order::{self, *}; - pub use super::traits::{Error as XcmError, Result as XcmResult, SendXcm, ExecuteXcm, Outcome}; - pub use super::{Xcm::{self, *}, OriginKind}; -} - -// TODO: #2841 #XCMENCODE Efficient encodings for Vec, Vec, using initial byte values 128+ to encode -// the number of items in the vector. - -/// Basically just the XCM (more general) version of `ParachainDispatchOrigin`. -#[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug)] -pub enum OriginKind { - /// Origin should just be the native dispatch origin representation for the sender in the - /// local runtime framework. For Cumulus/Frame chains this is the `Parachain` or `Relay` origin - /// if coming from a chain, though there may be others if the `MultiLocation` XCM origin has a - /// primary/native dispatch origin form. - Native, - - /// Origin should just be the standard account-based origin with the sovereign account of - /// the sender. For Cumulus/Frame chains, this is the `Signed` origin. - SovereignAccount, - - /// Origin should be the super-user. For Cumulus/Frame chains, this is the `Root` origin. - /// This will not usually be an available option. - Superuser, - - /// Origin should be interpreted as an XCM native origin and the `MultiLocation` should be - /// encoded directly in the dispatch origin unchanged. For Cumulus/Frame chains, this will be - /// the `pallet_xcm::Origin::Xcm` type. - Xcm, -} - -/// Response data to a query. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] -pub enum Response { - /// Some assets. - Assets(Vec), -} - -/// Cross-Consensus Message: A message from one consensus system to another. -/// -/// Consensus systems that may send and receive messages include blockchains and smart contracts. -/// -/// All messages are delivered from a known *origin*, expressed as a `MultiLocation`. -/// -/// This is the inner XCM format and is version-sensitive. Messages are typically passed using the outer -/// XCM format, known as `VersionedXcm`. -#[derive(Derivative, Encode, Decode)] -#[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] -#[codec(encode_bound())] -#[codec(decode_bound())] -pub enum Xcm { - /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into `holding`. Execute the - /// orders (`effects`). - /// - /// - `assets`: The asset(s) to be withdrawn into holding. - /// - `effects`: The order(s) to execute on the holding account. - /// - /// Kind: *Instruction*. - /// - /// Errors: - #[codec(index = 0)] - WithdrawAsset { assets: Vec, effects: Vec> }, - - /// Asset(s) (`assets`) have been received into the ownership of this system on the `origin` system. - /// - /// Some orders are given (`effects`) which should be executed once the corresponding derivative assets have - /// been placed into `holding`. - /// - /// - `assets`: The asset(s) that are minted into holding. - /// - `effects`: The order(s) to execute on the holding account. - /// - /// Safety: `origin` must be trusted to have received and be storing `assets` such that they may later be - /// withdrawn should this system send a corresponding message. - /// - /// Kind: *Trusted Indication*. - /// - /// Errors: - #[codec(index = 1)] - ReserveAssetDeposit { assets: Vec, effects: Vec> }, - - /// Asset(s) (`assets`) have been destroyed on the `origin` system and equivalent assets should be - /// created on this system. - /// - /// Some orders are given (`effects`) which should be executed once the corresponding derivative assets have - /// been placed into `holding`. - /// - /// - `assets`: The asset(s) that are minted into holding. - /// - `effects`: The order(s) to execute on the holding account. - /// - /// Safety: `origin` must be trusted to have irrevocably destroyed the `assets` prior as a consequence of - /// sending this message. - /// - /// Kind: *Trusted Indication*. - /// - /// Errors: - #[codec(index = 2)] - TeleportAsset { assets: Vec, effects: Vec> }, - - /// Indication of the contents of the holding account corresponding to the `QueryHolding` order of `query_id`. - /// - /// - `query_id`: The identifier of the query that resulted in this message being sent. - /// - `assets`: The message content. - /// - /// Safety: No concerns. - /// - /// Kind: *Information*. - /// - /// Errors: - #[codec(index = 3)] - QueryResponse { #[codec(compact)] query_id: u64, response: Response }, - - /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place equivalent assets under the - /// ownership of `dest` within this consensus system. - /// - /// - `assets`: The asset(s) to be withdrawn. - /// - `dest`: The new owner for the assets. - /// - /// Safety: No concerns. - /// - /// Kind: *Instruction*. - /// - /// Errors: - #[codec(index = 4)] - TransferAsset { assets: Vec, dest: MultiLocation }, - - /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place equivalent assets under the - /// ownership of `dest` within this consensus system. - /// - /// Send an onward XCM message to `dest` of `ReserveAssetDeposit` with the given `effects`. - /// - /// - `assets`: The asset(s) to be withdrawn. - /// - `dest`: The new owner for the assets. - /// - `effects`: The orders that should be contained in the `ReserveAssetDeposit` which is sent onwards to - /// `dest. - /// - /// Safety: No concerns. - /// - /// Kind: *Instruction*. - /// - /// Errors: - #[codec(index = 5)] - TransferReserveAsset { assets: Vec, dest: MultiLocation, effects: Vec> }, - - /// Apply the encoded transaction `call`, whose dispatch-origin should be `origin` as expressed by the kind - /// of origin `origin_type`. - /// - /// - `origin_type`: The means of expressing the message origin as a dispatch origin. - /// - `max_weight`: The weight of `call`; this should be at least the chain's calculated weight and will - /// be used in the weight determination arithmetic. - /// - `call`: The encoded transaction to be applied. - /// - /// Safety: No concerns. - /// - /// Kind: *Instruction*. - /// - /// Errors: - #[codec(index = 6)] - Transact { origin_type: OriginKind, require_weight_at_most: u64, call: DoubleEncoded }, - - /// A message to notify about a new incoming HRMP channel. This message is meant to be sent by the - /// relay-chain to a para. - /// - /// - `sender`: The sender in the to-be opened channel. Also, the initiator of the channel opening. - /// - `max_message_size`: The maximum size of a message proposed by the sender. - /// - `max_capacity`: The maximum number of messages that can be queued in the channel. - /// - /// Safety: The message should originate directly from the relay-chain. - /// - /// Kind: *System Notification* - #[codec(index = 7)] - HrmpNewChannelOpenRequest { - #[codec(compact)] sender: u32, - #[codec(compact)] max_message_size: u32, - #[codec(compact)] max_capacity: u32, - }, - - /// A message to notify about that a previously sent open channel request has been accepted by - /// the recipient. That means that the channel will be opened during the next relay-chain session - /// change. This message is meant to be sent by the relay-chain to a para. - /// - /// Safety: The message should originate directly from the relay-chain. - /// - /// Kind: *System Notification* - /// - /// Errors: - #[codec(index = 8)] - HrmpChannelAccepted { - #[codec(compact)] recipient: u32, - }, - - /// A message to notify that the other party in an open channel decided to close it. In particular, - /// `initiator` is going to close the channel opened from `sender` to the `recipient`. The close - /// will be enacted at the next relay-chain session change. This message is meant to be sent by - /// the relay-chain to a para. - /// - /// Safety: The message should originate directly from the relay-chain. - /// - /// Kind: *System Notification* - /// - /// Errors: - #[codec(index = 9)] - HrmpChannelClosing { - #[codec(compact)] initiator: u32, - #[codec(compact)] sender: u32, - #[codec(compact)] recipient: u32, - }, - - /// A message to indicate that the embedded XCM is actually arriving on behalf of some consensus - /// location within the origin. - /// - /// Safety: `who` must be an interior location of the context. This basically means that no `Parent` - /// junctions are allowed in it. This should be verified at the time of XCM execution. - /// - /// Kind: *Instruction* - /// - /// Errors: - #[codec(index = 10)] - RelayedFrom { - who: MultiLocation, - message: alloc::boxed::Box>, - }, -} - -impl From> for VersionedXcm { - fn from(x: Xcm) -> Self { - VersionedXcm::V0(x) - } -} - -impl TryFrom> for Xcm { - type Error = (); - fn try_from(x: VersionedXcm) -> result::Result { - match x { - VersionedXcm::V0(x) => Ok(x), - } - } -} - -impl Xcm { - pub fn into(self) -> Xcm { Xcm::from(self) } - pub fn from(xcm: Xcm) -> Self { - use Xcm::*; - match xcm { - WithdrawAsset { assets, effects } - => WithdrawAsset { assets, effects: effects.into_iter().map(Order::into).collect() }, - ReserveAssetDeposit { assets, effects } - => ReserveAssetDeposit { assets, effects: effects.into_iter().map(Order::into).collect() }, - TeleportAsset { assets, effects } - => TeleportAsset { assets, effects: effects.into_iter().map(Order::into).collect() }, - QueryResponse { query_id: u64, response } - => QueryResponse { query_id: u64, response }, - TransferAsset { assets, dest } - => TransferAsset { assets, dest }, - TransferReserveAsset { assets, dest, effects } - => TransferReserveAsset { assets, dest, effects }, - HrmpNewChannelOpenRequest { sender, max_message_size, max_capacity} - => HrmpNewChannelOpenRequest { sender, max_message_size, max_capacity}, - HrmpChannelAccepted { recipient} - => HrmpChannelAccepted { recipient}, - HrmpChannelClosing { initiator, sender, recipient} - => HrmpChannelClosing { initiator, sender, recipient}, - Transact { origin_type, require_weight_at_most, call} - => Transact { origin_type, require_weight_at_most, call: call.into() }, - RelayedFrom { who, message } - => RelayedFrom { who, message: alloc::boxed::Box::new((*message).into()) }, - } - } -} - -pub mod opaque { - /// The basic concrete type of `generic::Xcm`, which doesn't make any assumptions about the format of a - /// call other than it is pre-encoded. - pub type Xcm = super::Xcm<()>; - - pub use super::order::opaque::*; -} diff --git a/xcm/src/v0/multi_asset.rs b/xcm/src/v0/multi_asset.rs deleted file mode 100644 index 20032e7169a4..000000000000 --- a/xcm/src/v0/multi_asset.rs +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Cross-Consensus Message format data structures. - -use core::{result, convert::TryFrom}; -use alloc::vec::Vec; - -use parity_scale_codec::{self, Encode, Decode}; -use super::{MultiLocation, VersionedMultiAsset}; - -/// A general identifier for an instance of a non-fungible asset class. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum AssetInstance { - /// Undefined - used if the NFA class has only one instance. - Undefined, - - /// A compact index. Technically this could be greater than u128, but this implementation supports only - /// values up to `2**128 - 1`. - Index { #[codec(compact)] id: u128 }, - - /// A 4-byte fixed-length datum. - Array4([u8; 4]), - - /// An 8-byte fixed-length datum. - Array8([u8; 8]), - - /// A 16-byte fixed-length datum. - Array16([u8; 16]), - - /// A 32-byte fixed-length datum. - Array32([u8; 32]), - - /// An arbitrary piece of data. Use only when necessary. - Blob(Vec), -} - -/// A single general identifier for an asset. -/// -/// Represents both fungible and non-fungible assets. May only be used to represent a single asset class. -/// -/// Wildcards may or may not be allowed by the interpreting context. -/// -/// Assets classes may be identified in one of two ways: either an abstract identifier or a concrete identifier. -/// Implementations may support only one of these. A single asset may be referenced from multiple asset identifiers, -/// though will tend to have only a single *preferred* identifier. -/// -/// ### Abstract identifiers -/// -/// Abstract identifiers are absolute identifiers that represent a notional asset which can exist within multiple -/// consensus systems. These tend to be simpler to deal with since their broad meaning is unchanged regardless stay of -/// the consensus system in which it is interpreted. -/// -/// However, in the attempt to provide uniformity across consensus systems, they may conflate different instantiations -/// of some notional asset (e.g. the reserve asset and a local reserve-backed derivative of it) under the same name, -/// leading to confusion. It also implies that one notional asset is accounted for locally in only one way. This may not -/// be the case, e.g. where there are multiple bridge instances each providing a bridged "BTC" token yet none being -/// fungible between the others. -/// -/// Since they are meant to be absolute and universal, a global registry is needed to ensure that name collisions do not -/// occur. -/// -/// An abstract identifier is represented as a simple variable-size byte string. As of writing, no global registry -/// exists and no proposals have been put forth for asset labeling. -/// -/// ### Concrete identifiers -/// -/// Concrete identifiers are *relative identifiers* that specifically identify a single asset through its location in a -/// consensus system relative to the context interpreting. Use of a `MultiLocation` ensures that similar but non -/// fungible variants of the same underlying asset can be properly distinguished, and obviates the need for any kind of -/// central registry. -/// -/// The limitation is that the asset identifier cannot be trivially copied between consensus systems and must instead be -/// "re-anchored" whenever being moved to a new consensus system, using the two systems' relative paths. -/// -/// Throughout XCM, messages are authored such that *when interpreted from the receiver's point of view* they will have -/// the desired meaning/effect. This means that relative paths should always by constructed to be read from the point of -/// view of the receiving system, *which may be have a completely different meaning in the authoring system*. -/// -/// Concrete identifiers are the preferred way of identifying an asset since they are entirely unambiguous. -/// -/// A concrete identifier is represented by a `MultiLocation`. If a system has an unambiguous primary asset (such as -/// Bitcoin with BTC or Ethereum with ETH), then it will conventionally be identified as the chain itself. Alternative -/// and more specific ways of referring to an asset within a system include: -/// -/// - `/PalletInstance()` for a Frame chain with a single-asset pallet instance (such as an instance of the -/// Balances pallet). -/// - `/PalletInstance()/GeneralIndex()` for a Frame chain with an indexed multi-asset pallet instance -/// (such as an instance of the Assets pallet). -/// - `/AccountId32` for an ERC-20-style single-asset smart-contract on a Frame-based contracts chain. -/// - `/AccountKey20` for an ERC-20-style single-asset smart-contract on an Ethereum-like chain. -/// -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum MultiAsset { - /// No assets. Rarely used. - None, - - /// All assets. Typically used for the subset of assets to be used for an `Order`, and in that context means - /// "all assets currently in holding". - All, - - /// All fungible assets. Typically used for the subset of assets to be used for an `Order`, and in that context - /// means "all fungible assets currently in holding". - AllFungible, - - /// All non-fungible assets. Typically used for the subset of assets to be used for an `Order`, and in that - /// context means "all non-fungible assets currently in holding". - AllNonFungible, - - /// All fungible assets of a given abstract asset `id`entifier. - AllAbstractFungible { id: Vec }, - - /// All non-fungible assets of a given abstract asset `class`. - AllAbstractNonFungible { class: Vec }, - - /// All fungible assets of a given concrete asset `id`entifier. - AllConcreteFungible { id: MultiLocation }, - - /// All non-fungible assets of a given concrete asset `class`. - AllConcreteNonFungible { class: MultiLocation }, - - /// Some specific `amount` of the fungible asset identified by an abstract `id`. - AbstractFungible { id: Vec, #[codec(compact)] amount: u128 }, - - /// Some specific `instance` of the non-fungible asset whose `class` is identified abstractly. - AbstractNonFungible { class: Vec, instance: AssetInstance }, - - /// Some specific `amount` of the fungible asset identified by an concrete `id`. - ConcreteFungible { id: MultiLocation, #[codec(compact)] amount: u128 }, - - /// Some specific `instance` of the non-fungible asset whose `class` is identified concretely. - ConcreteNonFungible { class: MultiLocation, instance: AssetInstance }, -} - -impl MultiAsset { - /// Returns `true` if the `MultiAsset` is a wildcard and can refer to classes of assets, instead of just one. - /// - /// Typically can also be inferred by the name starting with `All`. - pub fn is_wildcard(&self) -> bool { - match self { - MultiAsset::None - | MultiAsset::AbstractFungible {..} - | MultiAsset::AbstractNonFungible {..} - | MultiAsset::ConcreteFungible {..} - | MultiAsset::ConcreteNonFungible {..} - => false, - - MultiAsset::All - | MultiAsset::AllFungible - | MultiAsset::AllNonFungible - | MultiAsset::AllAbstractFungible {..} - | MultiAsset::AllConcreteFungible {..} - | MultiAsset::AllAbstractNonFungible {..} - | MultiAsset::AllConcreteNonFungible {..} - => true, - } - } - - fn is_none(&self) -> bool { - match self { - MultiAsset::None - | MultiAsset::AbstractFungible { amount: 0, .. } - | MultiAsset::ConcreteFungible { amount: 0, .. } - => true, - - _ => false, - } - } - - fn is_fungible(&self) -> bool { - match self { - MultiAsset::All - | MultiAsset::AllFungible - | MultiAsset::AllAbstractFungible {..} - | MultiAsset::AllConcreteFungible {..} - | MultiAsset::AbstractFungible {..} - | MultiAsset::ConcreteFungible {..} - => true, - - _ => false, - } - } - - fn is_non_fungible(&self) -> bool { - match self { - MultiAsset::All - | MultiAsset::AllNonFungible - | MultiAsset::AllAbstractNonFungible {..} - | MultiAsset::AllConcreteNonFungible {..} - | MultiAsset::AbstractNonFungible {..} - | MultiAsset::ConcreteNonFungible {..} - => true, - - _ => false, - } - } - - fn is_concrete_fungible(&self, id: &MultiLocation) -> bool { - match self { - MultiAsset::AllFungible => true, - MultiAsset::AllConcreteFungible { id: i } - | MultiAsset::ConcreteFungible { id: i, .. } - => i == id, - - _ => false, - } - } - - fn is_abstract_fungible(&self, id: &[u8]) -> bool { - match self { - MultiAsset::AllFungible => true, - MultiAsset::AllAbstractFungible { id: i } - | MultiAsset::AbstractFungible { id: i, .. } - => i == id, - _ => false, - } - } - - fn is_concrete_non_fungible(&self, class: &MultiLocation) -> bool { - match self { - MultiAsset::AllNonFungible => true, - MultiAsset::AllConcreteNonFungible { class: i } - | MultiAsset::ConcreteNonFungible { class: i, .. } - => i == class, - _ => false, - } - } - - fn is_abstract_non_fungible(&self, class: &[u8]) -> bool { - match self { - MultiAsset::AllNonFungible => true, - MultiAsset::AllAbstractNonFungible { class: i } - | MultiAsset::AbstractNonFungible { class: i, .. } - => i == class, - _ => false, - } - } - - fn is_all(&self) -> bool { matches!(self, MultiAsset::All) } - - /// Returns true if `self` is a super-set of the given `inner`. - /// - /// Typically, any wildcard is never contained in anything else, and a wildcard can contain any other non-wildcard. - /// For more details, see the implementation and tests. - pub fn contains(&self, inner: &MultiAsset) -> bool { - use MultiAsset::*; - - // Inner cannot be wild - if inner.is_wildcard() { return false } - // Everything contains nothing. - if inner.is_none() { return true } - - // Everything contains anything. - if self.is_all() { return true } - // Nothing contains nothing. - if self.is_none() { return false } - - match self { - // Anything fungible contains "all fungibles" - AllFungible => inner.is_fungible(), - // Anything non-fungible contains "all non-fungibles" - AllNonFungible => inner.is_non_fungible(), - - AllConcreteFungible { id } => inner.is_concrete_fungible(id), - AllAbstractFungible { id } => inner.is_abstract_fungible(id), - AllConcreteNonFungible { class } => inner.is_concrete_non_fungible(class), - AllAbstractNonFungible { class } => inner.is_abstract_non_fungible(class), - - ConcreteFungible { id, amount } => matches!( - inner, - ConcreteFungible { id: inner_id , amount: inner_amount } if inner_id == id && amount >= inner_amount - ), - AbstractFungible { id, amount } => matches!( - inner, - AbstractFungible { id: inner_id , amount: inner_amount } if inner_id == id && amount >= inner_amount - ), - ConcreteNonFungible { .. } => self == inner, - AbstractNonFungible { .. } => self == inner, - _ => false, - } - } - - pub fn reanchor(&mut self, prepend: &MultiLocation) -> Result<(), ()> { - use MultiAsset::*; - match self { - AllConcreteFungible { ref mut id } - | AllConcreteNonFungible { class: ref mut id } - | ConcreteFungible { ref mut id, .. } - | ConcreteNonFungible { class: ref mut id, .. } - => id.prepend_with(prepend.clone()).map_err(|_| ()), - _ => Ok(()), - } - } -} - -impl From for VersionedMultiAsset { - fn from(x: MultiAsset) -> Self { - VersionedMultiAsset::V0(x) - } -} - -impl TryFrom for MultiAsset { - type Error = (); - fn try_from(x: VersionedMultiAsset) -> result::Result { - match x { - VersionedMultiAsset::V0(x) => Ok(x), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn contains_works() { - use alloc::vec; - use MultiAsset::*; - // trivial case: all contains any non-wildcard. - assert!(All.contains(&None)); - assert!(All.contains(&AbstractFungible { id: alloc::vec![99u8], amount: 1 })); - - // trivial case: none contains nothing, except itself. - assert!(None.contains(&None)); - assert!(!None.contains(&AllFungible)); - assert!(!None.contains(&All)); - - // A bit more sneaky: Nothing can contain wildcard, even All ir the thing itself. - assert!(!All.contains(&All)); - assert!(!All.contains(&AllFungible)); - assert!(!AllFungible.contains(&AllFungible)); - assert!(!AllNonFungible.contains(&AllNonFungible)); - - // For fungibles, containing is basically equality, or equal id with higher amount. - assert!( - !AbstractFungible { id: vec![99u8], amount: 99 } - .contains(&AbstractFungible { id: vec![1u8], amount: 99 }) - ); - assert!( - AbstractFungible { id: vec![99u8], amount: 99 } - .contains(&AbstractFungible { id: vec![99u8], amount: 99 }) - ); - assert!( - AbstractFungible { id: vec![99u8], amount: 99 } - .contains(&AbstractFungible { id: vec![99u8], amount: 9 }) - ); - assert!( - !AbstractFungible { id: vec![99u8], amount: 99 } - .contains(&AbstractFungible { id: vec![99u8], amount: 100 }) - ); - - // For non-fungibles, containing is equality. - assert!( - !AbstractNonFungible {class: vec![99u8], instance: AssetInstance::Index { id: 9 } } - .contains(&AbstractNonFungible { class: vec![98u8], instance: AssetInstance::Index { id: 9 } }) - ); - assert!( - !AbstractNonFungible { class: vec![99u8], instance: AssetInstance::Index { id: 8 } } - .contains(&AbstractNonFungible { class: vec![99u8], instance: AssetInstance::Index { id: 9 } }) - ); - assert!( - AbstractNonFungible { class: vec![99u8], instance: AssetInstance::Index { id: 9 } } - .contains(&AbstractNonFungible { class: vec![99u8], instance: AssetInstance::Index { id: 9 } }) - ); - } -} diff --git a/xcm/src/v0/multi_location.rs b/xcm/src/v0/multi_location.rs deleted file mode 100644 index 17df340eca07..000000000000 --- a/xcm/src/v0/multi_location.rs +++ /dev/null @@ -1,684 +0,0 @@ -// Copyright 2020-2021 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Cross-Consensus Message format data structures. - -use core::{result, mem, convert::TryFrom}; - -use parity_scale_codec::{self, Encode, Decode}; -use super::Junction; -use crate::VersionedMultiLocation; - -/// A relative path between state-bearing consensus systems. -/// -/// A location in a consensus system is defined as an *isolatable state machine* held within global consensus. The -/// location in question need not have a sophisticated consensus algorithm of its own; a single account within -/// Ethereum, for example, could be considered a location. -/// -/// A very-much non-exhaustive list of types of location include: -/// - A (normal, layer-1) block chain, e.g. the Bitcoin mainnet or a parachain. -/// - A layer-0 super-chain, e.g. the Polkadot Relay chain. -/// - A layer-2 smart contract, e.g. an ERC-20 on Ethereum. -/// - A logical functional component of a chain, e.g. a single instance of a pallet on a Frame-based Substrate chain. -/// - An account. -/// -/// A `MultiLocation` is a *relative identifier*, meaning that it can only be used to define the relative path -/// between two locations, and cannot generally be used to refer to a location universally. It is comprised of a -/// number of *junctions*, each morphing the previous location, either diving down into one of its internal locations, -/// called a *sub-consensus*, or going up into its parent location. Correct `MultiLocation` values must have all -/// `Parent` junctions as a prefix to all *sub-consensus* junctions. -/// -/// This specific `MultiLocation` implementation uses a Rust `enum` in order to make pattern matching easier. -/// -/// The `MultiLocation` value of `Null` simply refers to the interpreting consensus system. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] -pub enum MultiLocation { - /// The interpreting consensus system. - Null, - /// A relative path comprising 1 junction. - X1(Junction), - /// A relative path comprising 2 junctions. - X2(Junction, Junction), - /// A relative path comprising 3 junctions. - X3(Junction, Junction, Junction), - /// A relative path comprising 4 junctions. - X4(Junction, Junction, Junction, Junction), - /// A relative path comprising 5 junctions. - X5(Junction, Junction, Junction, Junction, Junction), - /// A relative path comprising 6 junctions. - X6(Junction, Junction, Junction, Junction, Junction, Junction), - /// A relative path comprising 7 junctions. - X7(Junction, Junction, Junction, Junction, Junction, Junction, Junction), - /// A relative path comprising 8 junctions. - X8(Junction, Junction, Junction, Junction, Junction, Junction, Junction, Junction), -} - -/// Maximum number of junctions a multilocation can contain. -pub const MAX_MULTILOCATION_LENGTH: usize = 8; - -impl From for MultiLocation { - fn from(x: Junction) -> Self { - MultiLocation::X1(x) - } -} - -impl From<()> for MultiLocation { - fn from(_: ()) -> Self { - MultiLocation::Null - } -} -impl From<(Junction,)> for MultiLocation { - fn from(x: (Junction,)) -> Self { - MultiLocation::X1(x.0) - } -} -impl From<(Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction)) -> Self { - MultiLocation::X2(x.0, x.1) - } -} -impl From<(Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction)) -> Self { - MultiLocation::X3(x.0, x.1, x.2) - } -} -impl From<(Junction, Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction, Junction)) -> Self { - MultiLocation::X4(x.0, x.1, x.2, x.3) - } -} -impl From<(Junction, Junction, Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction, Junction, Junction)) -> Self { - MultiLocation::X5(x.0, x.1, x.2, x.3, x.4) - } -} -impl From<(Junction, Junction, Junction, Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction, Junction, Junction, Junction)) -> Self { - MultiLocation::X6(x.0, x.1, x.2, x.3, x.4, x.5) - } -} -impl From<(Junction, Junction, Junction, Junction, Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction, Junction, Junction, Junction, Junction)) -> Self { - MultiLocation::X7(x.0, x.1, x.2, x.3, x.4, x.5, x.6) - } -} -impl From<(Junction, Junction, Junction, Junction, Junction, Junction, Junction, Junction)> for MultiLocation { - fn from(x: (Junction, Junction, Junction, Junction, Junction, Junction, Junction, Junction)) -> Self { - MultiLocation::X8(x.0, x.1, x.2, x.3, x.4, x.5, x.6, x.7) - } -} - -impl From<[Junction; 0]> for MultiLocation { - fn from(_: [Junction; 0]) -> Self { - MultiLocation::Null - } -} -impl From<[Junction; 1]> for MultiLocation { - fn from(x: [Junction; 1]) -> Self { - let [x0] = x; - MultiLocation::X1(x0) - } -} -impl From<[Junction; 2]> for MultiLocation { - fn from(x: [Junction; 2]) -> Self { - let [x0, x1] = x; - MultiLocation::X2(x0, x1) - } -} -impl From<[Junction; 3]> for MultiLocation { - fn from(x: [Junction; 3]) -> Self { - let [x0, x1, x2] = x; - MultiLocation::X3(x0, x1, x2) - } -} -impl From<[Junction; 4]> for MultiLocation { - fn from(x: [Junction; 4]) -> Self { - let [x0, x1, x2, x3] = x; - MultiLocation::X4(x0, x1, x2, x3) - } -} -impl From<[Junction; 5]> for MultiLocation { - fn from(x: [Junction; 5]) -> Self { - let [x0, x1, x2, x3, x4] = x; - MultiLocation::X5(x0, x1, x2, x3, x4) - } -} -impl From<[Junction; 6]> for MultiLocation { - fn from(x: [Junction; 6]) -> Self { - let [x0, x1, x2, x3, x4, x5] = x; - MultiLocation::X6(x0, x1, x2, x3, x4, x5) - } -} -impl From<[Junction; 7]> for MultiLocation { - fn from(x: [Junction; 7]) -> Self { - let [x0, x1, x2, x3, x4, x5, x6] = x; - MultiLocation::X7(x0, x1, x2, x3, x4, x5, x6) - } -} -impl From<[Junction; 8]> for MultiLocation { - fn from(x: [Junction; 8]) -> Self { - let [x0, x1, x2, x3, x4, x5, x6, x7] = x; - MultiLocation::X8(x0, x1, x2, x3, x4, x5, x6, x7) - } -} - -pub struct MultiLocationIterator(MultiLocation); -impl Iterator for MultiLocationIterator { - type Item = Junction; - fn next(&mut self) -> Option { - self.0.take_first() - } -} - -pub struct MultiLocationReverseIterator(MultiLocation); -impl Iterator for MultiLocationReverseIterator { - type Item = Junction; - fn next(&mut self) -> Option { - self.0.take_last() - } -} - -pub struct MultiLocationRefIterator<'a>(&'a MultiLocation, usize); -impl<'a> Iterator for MultiLocationRefIterator<'a> { - type Item = &'a Junction; - fn next(&mut self) -> Option<&'a Junction> { - let result = self.0.at(self.1); - self.1 += 1; - result - } -} - -pub struct MultiLocationReverseRefIterator<'a>(&'a MultiLocation, usize); -impl<'a> Iterator for MultiLocationReverseRefIterator<'a> { - type Item = &'a Junction; - fn next(&mut self) -> Option<&'a Junction> { - self.1 += 1; - self.0.at(self.0.len().checked_sub(self.1)?) - } -} - -impl MultiLocation { - /// Returns first junction, or `None` if the location is empty. - pub fn first(&self) -> Option<&Junction> { - match &self { - MultiLocation::Null => None, - MultiLocation::X1(ref a) => Some(a), - MultiLocation::X2(ref a, ..) => Some(a), - MultiLocation::X3(ref a, ..) => Some(a), - MultiLocation::X4(ref a, ..) => Some(a), - MultiLocation::X5(ref a, ..) => Some(a), - MultiLocation::X6(ref a, ..) => Some(a), - MultiLocation::X7(ref a, ..) => Some(a), - MultiLocation::X8(ref a, ..) => Some(a), - } - } - - /// Returns last junction, or `None` if the location is empty. - pub fn last(&self) -> Option<&Junction> { - match &self { - MultiLocation::Null => None, - MultiLocation::X1(ref a) => Some(a), - MultiLocation::X2(.., ref a) => Some(a), - MultiLocation::X3(.., ref a) => Some(a), - MultiLocation::X4(.., ref a) => Some(a), - MultiLocation::X5(.., ref a) => Some(a), - MultiLocation::X6(.., ref a) => Some(a), - MultiLocation::X7(.., ref a) => Some(a), - MultiLocation::X8(.., ref a) => Some(a), - } - } - - /// Splits off the first junction, returning the remaining suffix (first item in tuple) and the first element - /// (second item in tuple) or `None` if it was empty. - pub fn split_first(self) -> (MultiLocation, Option) { - match self { - MultiLocation::Null => (MultiLocation::Null, None), - MultiLocation::X1(a) => (MultiLocation::Null, Some(a)), - MultiLocation::X2(a, b) => (MultiLocation::X1(b), Some(a)), - MultiLocation::X3(a, b, c) => (MultiLocation::X2(b, c), Some(a)), - MultiLocation::X4(a, b, c ,d) => (MultiLocation::X3(b, c, d), Some(a)), - MultiLocation::X5(a, b, c ,d, e) => (MultiLocation::X4(b, c, d, e), Some(a)), - MultiLocation::X6(a, b, c ,d, e, f) => (MultiLocation::X5(b, c, d, e, f), Some(a)), - MultiLocation::X7(a, b, c ,d, e, f, g) => (MultiLocation::X6(b, c, d, e, f, g), Some(a)), - MultiLocation::X8(a, b, c ,d, e, f, g, h) => (MultiLocation::X7(b, c, d, e, f, g, h), Some(a)), - } - } - - /// Splits off the last junction, returning the remaining prefix (first item in tuple) and the last element - /// (second item in tuple) or `None` if it was empty. - pub fn split_last(self) -> (MultiLocation, Option) { - match self { - MultiLocation::Null => (MultiLocation::Null, None), - MultiLocation::X1(a) => (MultiLocation::Null, Some(a)), - MultiLocation::X2(a, b) => (MultiLocation::X1(a), Some(b)), - MultiLocation::X3(a, b, c) => (MultiLocation::X2(a, b), Some(c)), - MultiLocation::X4(a, b, c ,d) => (MultiLocation::X3(a, b, c), Some(d)), - MultiLocation::X5(a, b, c, d, e) => (MultiLocation::X4(a, b, c, d), Some(e)), - MultiLocation::X6(a, b, c, d, e, f) => (MultiLocation::X5(a, b, c, d, e), Some(f)), - MultiLocation::X7(a, b, c, d, e, f, g) => (MultiLocation::X6(a, b, c, d, e, f), Some(g)), - MultiLocation::X8(a, b, c, d, e, f, g, h) => (MultiLocation::X7(a, b, c, d, e, f, g), Some(h)), - } - } - - /// Removes the first element from `self`, returning it (or `None` if it was empty). - pub fn take_first(&mut self) -> Option { - let mut d = MultiLocation::Null; - mem::swap(&mut *self, &mut d); - let (tail, head) = d.split_first(); - *self = tail; - head - } - - /// Removes the last element from `self`, returning it (or `None` if it was empty). - pub fn take_last(&mut self) -> Option { - let mut d = MultiLocation::Null; - mem::swap(&mut *self, &mut d); - let (head, tail) = d.split_last(); - *self = head; - tail - } - - /// Consumes `self` and returns a `MultiLocation` suffixed with `new`, or an `Err` with the original value of - /// `self` in case of overflow. - pub fn pushed_with(self, new: Junction) -> result::Result { - Ok(match self { - MultiLocation::Null => MultiLocation::X1(new), - MultiLocation::X1(a) => MultiLocation::X2(a, new), - MultiLocation::X2(a, b) => MultiLocation::X3(a, b, new), - MultiLocation::X3(a, b, c) => MultiLocation::X4(a, b, c, new), - MultiLocation::X4(a, b, c, d) => MultiLocation::X5(a, b, c, d, new), - MultiLocation::X5(a, b, c, d, e) => MultiLocation::X6(a, b, c, d, e, new), - MultiLocation::X6(a, b, c, d, e, f) => MultiLocation::X7(a, b, c, d, e, f, new), - MultiLocation::X7(a, b, c, d, e, f, g) => MultiLocation::X8(a, b, c, d, e, f, g, new), - s => Err(s)?, - }) - } - - /// Consumes `self` and returns a `MultiLocation` prefixed with `new`, or an `Err` with the original value of - /// `self` in case of overflow. - pub fn pushed_front_with(self, new: Junction) -> result::Result { - Ok(match self { - MultiLocation::Null => MultiLocation::X1(new), - MultiLocation::X1(a) => MultiLocation::X2(new, a), - MultiLocation::X2(a, b) => MultiLocation::X3(new, a, b), - MultiLocation::X3(a, b, c) => MultiLocation::X4(new, a, b, c), - MultiLocation::X4(a, b, c, d) => MultiLocation::X5(new, a, b, c, d), - MultiLocation::X5(a, b, c, d, e) => MultiLocation::X6(new, a, b, c, d, e), - MultiLocation::X6(a, b, c, d, e, f) => MultiLocation::X7(new, a, b, c, d, e, f), - MultiLocation::X7(a, b, c, d, e, f, g) => MultiLocation::X8(new, a, b, c, d, e, f, g), - s => Err(s)?, - }) - } - - /// Returns the number of junctions in `self`. - pub fn len(&self) -> usize { - match &self { - MultiLocation::Null => 0, - MultiLocation::X1(..) => 1, - MultiLocation::X2(..) => 2, - MultiLocation::X3(..) => 3, - MultiLocation::X4(..) => 4, - MultiLocation::X5(..) => 5, - MultiLocation::X6(..) => 6, - MultiLocation::X7(..) => 7, - MultiLocation::X8(..) => 8, - } - } - - /// Returns the junction at index `i`, or `None` if the location doesn't contain that many elements. - pub fn at(&self, i: usize) -> Option<&Junction> { - Some(match (i, &self) { - (0, MultiLocation::X1(ref a)) => a, - (0, MultiLocation::X2(ref a, ..)) => a, - (0, MultiLocation::X3(ref a, ..)) => a, - (0, MultiLocation::X4(ref a, ..)) => a, - (0, MultiLocation::X5(ref a, ..)) => a, - (0, MultiLocation::X6(ref a, ..)) => a, - (0, MultiLocation::X7(ref a, ..)) => a, - (0, MultiLocation::X8(ref a, ..)) => a, - (1, MultiLocation::X2(_, ref a)) => a, - (1, MultiLocation::X3(_, ref a, ..)) => a, - (1, MultiLocation::X4(_, ref a, ..)) => a, - (1, MultiLocation::X5(_, ref a, ..)) => a, - (1, MultiLocation::X6(_, ref a, ..)) => a, - (1, MultiLocation::X7(_, ref a, ..)) => a, - (1, MultiLocation::X8(_, ref a, ..)) => a, - (2, MultiLocation::X3(_, _, ref a)) => a, - (2, MultiLocation::X4(_, _, ref a, ..)) => a, - (2, MultiLocation::X5(_, _, ref a, ..)) => a, - (2, MultiLocation::X6(_, _, ref a, ..)) => a, - (2, MultiLocation::X7(_, _, ref a, ..)) => a, - (2, MultiLocation::X8(_, _, ref a, ..)) => a, - (3, MultiLocation::X4(_, _, _, ref a)) => a, - (3, MultiLocation::X5(_, _, _, ref a, ..)) => a, - (3, MultiLocation::X6(_, _, _, ref a, ..)) => a, - (3, MultiLocation::X7(_, _, _, ref a, ..)) => a, - (3, MultiLocation::X8(_, _, _, ref a, ..)) => a, - (4, MultiLocation::X5(_, _, _, _, ref a)) => a, - (4, MultiLocation::X6(_, _, _, _, ref a, ..)) => a, - (4, MultiLocation::X7(_, _, _, _, ref a, ..)) => a, - (4, MultiLocation::X8(_, _, _, _, ref a, ..)) => a, - (5, MultiLocation::X6(_, _, _, _, _, ref a)) => a, - (5, MultiLocation::X7(_, _, _, _, _, ref a, ..)) => a, - (5, MultiLocation::X8(_, _, _, _, _, ref a, ..)) => a, - (6, MultiLocation::X7(_, _, _, _, _, _, ref a)) => a, - (6, MultiLocation::X8(_, _, _, _, _, _, ref a, ..)) => a, - (7, MultiLocation::X8(_, _, _, _, _, _, _, ref a)) => a, - _ => return None, - }) - } - - /// Returns a mutable reference to the junction at index `i`, or `None` if the location doesn't contain that many - /// elements. - pub fn at_mut(&mut self, i: usize) -> Option<&mut Junction> { - Some(match (i, self) { - (0, MultiLocation::X1(ref mut a)) => a, - (0, MultiLocation::X2(ref mut a, ..)) => a, - (0, MultiLocation::X3(ref mut a, ..)) => a, - (0, MultiLocation::X4(ref mut a, ..)) => a, - (0, MultiLocation::X5(ref mut a, ..)) => a, - (0, MultiLocation::X6(ref mut a, ..)) => a, - (0, MultiLocation::X7(ref mut a, ..)) => a, - (0, MultiLocation::X8(ref mut a, ..)) => a, - (1, MultiLocation::X2(_, ref mut a)) => a, - (1, MultiLocation::X3(_, ref mut a, ..)) => a, - (1, MultiLocation::X4(_, ref mut a, ..)) => a, - (1, MultiLocation::X5(_, ref mut a, ..)) => a, - (1, MultiLocation::X6(_, ref mut a, ..)) => a, - (1, MultiLocation::X7(_, ref mut a, ..)) => a, - (1, MultiLocation::X8(_, ref mut a, ..)) => a, - (2, MultiLocation::X3(_, _, ref mut a)) => a, - (2, MultiLocation::X4(_, _, ref mut a, ..)) => a, - (2, MultiLocation::X5(_, _, ref mut a, ..)) => a, - (2, MultiLocation::X6(_, _, ref mut a, ..)) => a, - (2, MultiLocation::X7(_, _, ref mut a, ..)) => a, - (2, MultiLocation::X8(_, _, ref mut a, ..)) => a, - (3, MultiLocation::X4(_, _, _, ref mut a)) => a, - (3, MultiLocation::X5(_, _, _, ref mut a, ..)) => a, - (3, MultiLocation::X6(_, _, _, ref mut a, ..)) => a, - (3, MultiLocation::X7(_, _, _, ref mut a, ..)) => a, - (3, MultiLocation::X8(_, _, _, ref mut a, ..)) => a, - (4, MultiLocation::X5(_, _, _, _, ref mut a)) => a, - (4, MultiLocation::X6(_, _, _, _, ref mut a, ..)) => a, - (4, MultiLocation::X7(_, _, _, _, ref mut a, ..)) => a, - (4, MultiLocation::X8(_, _, _, _, ref mut a, ..)) => a, - (5, MultiLocation::X6(_, _, _, _, _, ref mut a)) => a, - (5, MultiLocation::X7(_, _, _, _, _, ref mut a, ..)) => a, - (5, MultiLocation::X8(_, _, _, _, _, ref mut a, ..)) => a, - (6, MultiLocation::X7(_, _, _, _, _, _, ref mut a)) => a, - (6, MultiLocation::X8(_, _, _, _, _, _, ref mut a, ..)) => a, - (7, MultiLocation::X8(_, _, _, _, _, _, _, ref mut a)) => a, - _ => return None, - }) - } - - /// Returns a reference iterator over the junctions. - pub fn iter(&self) -> MultiLocationRefIterator { - MultiLocationRefIterator(&self, 0) - } - - /// Returns a reference iterator over the junctions in reverse. - pub fn iter_rev(&self) -> MultiLocationReverseRefIterator { - MultiLocationReverseRefIterator(&self, 0) - } - - /// Consumes `self` and returns an iterator over the junctions. - pub fn into_iter(self) -> MultiLocationIterator { - MultiLocationIterator(self) - } - - /// Consumes `self` and returns an iterator over the junctions in reverse. - pub fn into_iter_rev(self) -> MultiLocationReverseIterator { - MultiLocationReverseIterator(self) - } - - /// Ensures that self begins with `prefix` and that it has a single `Junction` item following. - /// If so, returns a reference to this `Junction` item. - /// - /// # Example - /// ```rust - /// # use xcm::v0::{MultiLocation::*, Junction::*}; - /// # fn main() { - /// let mut m = X3(Parent, PalletInstance(3), OnlyChild); - /// assert_eq!(m.match_and_split(&X2(Parent, PalletInstance(3))), Some(&OnlyChild)); - /// assert_eq!(m.match_and_split(&X1(Parent)), None); - /// # } - /// ``` - pub fn match_and_split(&self, prefix: &MultiLocation) -> Option<&Junction> { - if prefix.len() + 1 != self.len() { - return None - } - for i in 0..prefix.len() { - if prefix.at(i) != self.at(i) { - return None - } - } - return self.at(prefix.len()) - } - - /// Mutates `self`, suffixing it with `new`. Returns `Err` in case of overflow. - pub fn push(&mut self, new: Junction) -> result::Result<(), ()> { - let mut n = MultiLocation::Null; - mem::swap(&mut *self, &mut n); - match n.pushed_with(new) { - Ok(result) => { *self = result; Ok(()) } - Err(old) => { *self = old; Err(()) } - } - } - - - /// Mutates `self`, prefixing it with `new`. Returns `Err` in case of overflow. - pub fn push_front(&mut self, new: Junction) -> result::Result<(), ()> { - let mut n = MultiLocation::Null; - mem::swap(&mut *self, &mut n); - match n.pushed_front_with(new) { - Ok(result) => { *self = result; Ok(()) } - Err(old) => { *self = old; Err(()) } - } - } - - /// Returns the number of `Parent` junctions at the beginning of `self`. - pub fn parent_count(&self) -> usize { - use Junction::Parent; - match self { - MultiLocation::X8(Parent, Parent, Parent, Parent, Parent, Parent, Parent, Parent) => 8, - - MultiLocation::X8(Parent, Parent, Parent, Parent, Parent, Parent, Parent, ..) => 7, - MultiLocation::X7(Parent, Parent, Parent, Parent, Parent, Parent, Parent) => 7, - - MultiLocation::X8(Parent, Parent, Parent, Parent, Parent, Parent, ..) => 6, - MultiLocation::X7(Parent, Parent, Parent, Parent, Parent, Parent, ..) => 6, - MultiLocation::X6(Parent, Parent, Parent, Parent, Parent, Parent) => 6, - - MultiLocation::X8(Parent, Parent, Parent, Parent, Parent, ..) => 5, - MultiLocation::X7(Parent, Parent, Parent, Parent, Parent, ..) => 5, - MultiLocation::X6(Parent, Parent, Parent, Parent, Parent, ..) => 5, - MultiLocation::X5(Parent, Parent, Parent, Parent, Parent) => 5, - - MultiLocation::X8(Parent, Parent, Parent, Parent, ..) => 4, - MultiLocation::X7(Parent, Parent, Parent, Parent, ..) => 4, - MultiLocation::X6(Parent, Parent, Parent, Parent, ..) => 4, - MultiLocation::X5(Parent, Parent, Parent, Parent, ..) => 4, - MultiLocation::X4(Parent, Parent, Parent, Parent) => 4, - - MultiLocation::X8(Parent, Parent, Parent, ..) => 3, - MultiLocation::X7(Parent, Parent, Parent, ..) => 3, - MultiLocation::X6(Parent, Parent, Parent, ..) => 3, - MultiLocation::X5(Parent, Parent, Parent, ..) => 3, - MultiLocation::X4(Parent, Parent, Parent, ..) => 3, - MultiLocation::X3(Parent, Parent, Parent) => 3, - - MultiLocation::X8(Parent, Parent, ..) => 2, - MultiLocation::X7(Parent, Parent, ..) => 2, - MultiLocation::X6(Parent, Parent, ..) => 2, - MultiLocation::X5(Parent, Parent, ..) => 2, - MultiLocation::X4(Parent, Parent, ..) => 2, - MultiLocation::X3(Parent, Parent, ..) => 2, - MultiLocation::X2(Parent, Parent) => 2, - - MultiLocation::X8(Parent, ..) => 1, - MultiLocation::X7(Parent, ..) => 1, - MultiLocation::X6(Parent, ..) => 1, - MultiLocation::X5(Parent, ..) => 1, - MultiLocation::X4(Parent, ..) => 1, - MultiLocation::X3(Parent, ..) => 1, - MultiLocation::X2(Parent, ..) => 1, - MultiLocation::X1(Parent) => 1, - _ => 0, - } - } - - /// Mutate `self` so that it is suffixed with `suffix`. The correct normalized form is returned, - /// removing any internal [Non-Parent, `Parent`] combinations. - /// - /// Does not modify `self` and returns `Err` with `suffix` in case of overflow. - /// - /// # Example - /// ```rust - /// # use xcm::v0::{MultiLocation::*, Junction::*}; - /// # fn main() { - /// let mut m = X3(Parent, Parachain(21), OnlyChild); - /// assert_eq!(m.append_with(X2(Parent, PalletInstance(3))), Ok(())); - /// assert_eq!(m, X3(Parent, Parachain(21), PalletInstance(3))); - /// # } - /// ``` - pub fn append_with(&mut self, suffix: MultiLocation) -> Result<(), MultiLocation> { - let mut prefix = suffix; - core::mem::swap(self, &mut prefix); - match self.prepend_with(prefix) { - Ok(()) => Ok(()), - Err(prefix) => { - let mut suffix = prefix; - core::mem::swap(self, &mut suffix); - Err(suffix) - } - } - } - - /// Mutate `self` so that it is prefixed with `prefix`. The correct normalized form is returned, - /// removing any internal [Non-Parent, `Parent`] combinations. - /// - /// Does not modify `self` and returns `Err` with `prefix` in case of overflow. - /// - /// # Example - /// ```rust - /// # use xcm::v0::{MultiLocation::*, Junction::*, NetworkId::Any}; - /// # fn main() { - /// let mut m = X3(Parent, Parent, PalletInstance(3)); - /// assert_eq!(m.prepend_with(X3(Parent, Parachain(21), OnlyChild)), Ok(())); - /// assert_eq!(m, X2(Parent, PalletInstance(3))); - /// # } - /// ``` - pub fn prepend_with(&mut self, prefix: MultiLocation) -> Result<(), MultiLocation> { - let self_parents = self.parent_count(); - let prefix_rest = prefix.len() - prefix.parent_count(); - let skipped = self_parents.min(prefix_rest); - if self.len() + prefix.len() - 2 * skipped > MAX_MULTILOCATION_LENGTH { - return Err(prefix); - } - - let mut prefix = prefix; - while match (prefix.last(), self.first()) { - (Some(x), Some(Junction::Parent)) if x.is_interior() => { - prefix.take_last(); - self.take_first(); - true - } - _ => false, - } {} - - for j in prefix.into_iter_rev() { - self.push_front(j).expect("len + prefix minus 2*skipped is less than max length; qed"); - } - Ok(()) - } - - /// Returns true iff `self` is an interior location. For this it may not contain any `Junction`s - /// for which `Junction::is_interior` returns `false`. This is generally true, except for the - /// `Parent` item. - /// - /// # Example - /// ```rust - /// # use xcm::v0::{MultiLocation::*, Junction::*, NetworkId::Any}; - /// # fn main() { - /// let parent = X1(Parent); - /// assert_eq!(parent.is_interior(), false); - /// let m = X2(PalletInstance(12), AccountIndex64 { network: Any, index: 23 }); - /// assert_eq!(m.is_interior(), true); - /// # } - /// ``` - pub fn is_interior(&self) -> bool { - self.iter().all(Junction::is_interior) - } -} - -impl From for VersionedMultiLocation { - fn from(x: MultiLocation) -> Self { - VersionedMultiLocation::V0(x) - } -} - -impl TryFrom for MultiLocation { - type Error = (); - fn try_from(x: VersionedMultiLocation) -> result::Result { - match x { - VersionedMultiLocation::V0(x) => Ok(x), - } - } -} - -#[cfg(test)] -mod tests { - use super::MultiLocation::*; - use crate::opaque::v0::{Junction::*, NetworkId::Any}; - - #[test] - fn match_and_split_works() { - let m = X3(Parent, Parachain(42), AccountIndex64 { network: Any, index: 23 }); - assert_eq!(m.match_and_split(&X1(Parent)), None); - assert_eq!( - m.match_and_split(&X2(Parent, Parachain(42))), - Some(&AccountIndex64 { network: Any, index: 23 }) - ); - assert_eq!(m.match_and_split(&m), None); - } - - #[test] - fn append_with_works() { - let acc = AccountIndex64 { network: Any, index: 23 }; - let mut m = X2(Parent, Parachain(42)); - assert_eq!(m.append_with(X2(PalletInstance(3), acc.clone())), Ok(())); - assert_eq!(m, X4(Parent, Parachain(42), PalletInstance(3), acc.clone())); - - // cannot append to create overly long multilocation - let acc = AccountIndex64 { network: Any, index: 23 }; - let mut m = X7(Parent, Parent, Parent, Parent, Parent, Parent, Parachain(42)); - let suffix = X2(PalletInstance(3), acc.clone()); - assert_eq!(m.append_with(suffix.clone()), Err(suffix)); - } - - #[test] - fn prepend_with_works() { - let mut m = X3(Parent, Parachain(42), AccountIndex64 { network: Any, index: 23 }); - assert_eq!(m.prepend_with(X2(Parent, OnlyChild)), Ok(())); - assert_eq!(m, X3(Parent, Parachain(42), AccountIndex64 { network: Any, index: 23 })); - - // cannot prepend to create overly long multilocation - let mut m = X7(Parent, Parent, Parent, Parent, Parent, Parent, Parachain(42)); - let prefix = X2(Parent, Parent); - assert_eq!(m.prepend_with(prefix.clone()), Err(prefix)); - } -} diff --git a/xcm/src/v0/order.rs b/xcm/src/v0/order.rs deleted file mode 100644 index a1c8339ecb25..000000000000 --- a/xcm/src/v0/order.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Version 0 of the Cross-Consensus Message format data structures. - -use alloc::vec::Vec; -use derivative::Derivative; -use parity_scale_codec::{self, Encode, Decode}; -use super::{MultiAsset, MultiLocation, Xcm}; - -/// An instruction to be executed on some or all of the assets in holding, used by asset-related XCM messages. -#[derive(Derivative, Encode, Decode)] -#[derivative(Clone(bound=""), Eq(bound=""), PartialEq(bound=""), Debug(bound=""))] -#[codec(encode_bound())] -#[codec(decode_bound())] -pub enum Order { - /// Do nothing. Not generally used. - #[codec(index = 0)] - Null, - - /// Remove the asset(s) (`assets`) from holding and place equivalent assets under the ownership of `dest` within - /// this consensus system. - /// - /// - `assets`: The asset(s) to remove from holding. - /// - `dest`: The new owner for the assets. - /// - /// Errors: - #[codec(index = 1)] - DepositAsset { assets: Vec, dest: MultiLocation }, - - /// Remove the asset(s) (`assets`) from holding and place equivalent assets under the ownership of `dest` within - /// this consensus system. - /// - /// Send an onward XCM message to `dest` of `ReserveAssetDeposit` with the given `effects`. - /// - /// - `assets`: The asset(s) to remove from holding. - /// - `dest`: The new owner for the assets. - /// - `effects`: The orders that should be contained in the `ReserveAssetDeposit` which is sent onwards to - /// `dest. - /// - /// Errors: - #[codec(index = 2)] - DepositReserveAsset { assets: Vec, dest: MultiLocation, effects: Vec> }, - - /// Remove the asset(s) (`give`) from holding and replace them with alternative assets. - /// - /// The minimum amount of assets to be received into holding for the order not to fail may be stated. - /// - /// - `give`: The asset(s) to remove from holding. - /// - `receive`: The minimum amount of assets(s) which `give` should be exchanged for. The meaning of wildcards - /// is undefined and they should be not be used. - /// - /// Errors: - #[codec(index = 3)] - ExchangeAsset { give: Vec, receive: Vec }, - - /// Remove the asset(s) (`assets`) from holding and send a `WithdrawAsset` XCM message to a reserve location. - /// - /// - `assets`: The asset(s) to remove from holding. - /// - `reserve`: A valid location that acts as a reserve for all asset(s) in `assets`. The sovereign account - /// of this consensus system *on the reserve location* will have appropriate assets withdrawn and `effects` will - /// be executed on them. There will typically be only one valid location on any given asset/chain combination. - /// - `effects`: The orders to execute on the assets once withdrawn *on the reserve location*. - /// - /// Errors: - #[codec(index = 4)] - InitiateReserveWithdraw { assets: Vec, reserve: MultiLocation, effects: Vec> }, - - /// Remove the asset(s) (`assets`) from holding and send a `TeleportAsset` XCM message to a destination location. - /// - /// - `assets`: The asset(s) to remove from holding. - /// - `destination`: A valid location that has a bi-lateral teleportation arrangement. - /// - `effects`: The orders to execute on the assets once arrived *on the destination location*. - /// - /// Errors: - #[codec(index = 5)] - InitiateTeleport { assets: Vec, dest: MultiLocation, effects: Vec> }, - - /// Send a `Balances` XCM message with the `assets` value equal to the holding contents, or a portion thereof. - /// - /// - `query_id`: An identifier that will be replicated into the returned XCM message. - /// - `dest`: A valid destination for the returned XCM message. This may be limited to the current origin. - /// - `assets`: A filter for the assets that should be reported back. The assets reported back will be, asset- - /// wise, *the lesser of this value and the holding account*. No wildcards will be used when reporting assets - /// back. - /// - /// Errors: - #[codec(index = 6)] - QueryHolding { #[codec(compact)] query_id: u64, dest: MultiLocation, assets: Vec }, - - /// Pay for the execution of some Xcm with up to `weight` picoseconds of execution time, paying for this with - /// up to `fees` from the holding account. - /// - /// Errors: - #[codec(index = 7)] - BuyExecution { fees: MultiAsset, weight: u64, debt: u64, halt_on_error: bool, xcm: Vec> }, -} - -pub mod opaque { - pub type Order = super::Order<()>; -} - -impl Order { - pub fn into(self) -> Order { Order::from(self) } - pub fn from(order: Order) -> Self { - use Order::*; - match order { - Null => Null, - DepositAsset { assets, dest } - => DepositAsset { assets, dest }, - DepositReserveAsset { assets, dest, effects } - => DepositReserveAsset { assets, dest, effects }, - ExchangeAsset { give, receive } - => ExchangeAsset { give, receive }, - InitiateReserveWithdraw { assets, reserve, effects } - => InitiateReserveWithdraw { assets, reserve, effects }, - InitiateTeleport { assets, dest, effects } - => InitiateTeleport { assets, dest, effects }, - QueryHolding { query_id, dest, assets } - => QueryHolding { query_id, dest, assets }, - BuyExecution { fees, weight, debt, halt_on_error, xcm } => { - let xcm = xcm.into_iter().map(Xcm::from).collect(); - BuyExecution { fees, weight, debt, halt_on_error, xcm } - }, - } - } -} diff --git a/xcm/src/v0/traits.rs b/xcm/src/v0/traits.rs deleted file mode 100644 index 8664484c87ce..000000000000 --- a/xcm/src/v0/traits.rs +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -//! Cross-Consensus Message format data structures. - -use core::result; -use parity_scale_codec::{Encode, Decode}; - -use super::{MultiLocation, Xcm}; - -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] -pub enum Error { - Undefined, - Overflow, - /// The operation is intentionally unsupported. - Unimplemented, - UnhandledXcmVersion, - UnhandledXcmMessage, - UnhandledEffect, - EscalationOfPrivilege, - UntrustedReserveLocation, - UntrustedTeleportLocation, - DestinationBufferOverflow, - /// The message and destination was recognized as being reachable but the operation could not be completed. - /// A human-readable explanation of the specific issue is provided. - SendFailed(#[codec(skip)] &'static str), - /// The message and destination combination was not recognized as being reachable. - CannotReachDestination(MultiLocation, Xcm<()>), - MultiLocationFull, - FailedToDecode, - BadOrigin, - ExceedsMaxMessageSize, - FailedToTransactAsset(#[codec(skip)] &'static str), - /// Execution of the XCM would potentially result in a greater weight used than the pre-specified - /// weight limit. The amount that is potentially required is the parameter. - WeightLimitReached(Weight), - Wildcard, - /// The case where an XCM message has specified a optional weight limit and the weight required for - /// processing is too great. - /// - /// Used by: - /// - `Transact` - TooMuchWeightRequired, - /// The fees specified by the XCM message were not found in the holding account. - /// - /// Used by: - /// - `BuyExecution` - NotHoldingFees, - /// The weight of an XCM message is not computable ahead of execution. This generally means at least part - /// of the message is invalid, which could be due to it containing overly nested structures or an invalid - /// nested data segment (e.g. for the call in `Transact`). - WeightNotComputable, - /// The XCM did not pass the barrier condition for execution. The barrier condition differs on different - /// chains and in different circumstances, but generally it means that the conditions surrounding the message - /// were not such that the chain considers the message worth spending time executing. Since most chains - /// lift the barrier to execution on appropriate payment, presentation of an NFT voucher, or based on the - /// message origin, it means that none of those were the case. - Barrier, - /// Indicates that it is not possible for a location to have an asset be withdrawn or transferred from its - /// ownership. This probably means it doesn't own (enough of) it, but may also indicate that it is under a - /// lock, hold, freeze or is otherwise unavailable. - NotWithdrawable, - /// Indicates that the consensus system cannot deposit an asset under the ownership of a particular location. - LocationCannotHold, - /// The assets given to purchase weight is are insufficient for the weight desired. - TooExpensive, - /// The given asset is not handled. - AssetNotFound, -} - -impl From<()> for Error { - fn from(_: ()) -> Self { - Self::Undefined - } -} - -pub type Result = result::Result<(), Error>; - -/// Local weight type; execution time in picoseconds. -pub type Weight = u64; - -/// Outcome of an XCM execution. -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] -pub enum Outcome { - /// Execution completed successfully; given weight was used. - Complete(Weight), - /// Execution started, but did not complete successfully due to the given error; given weight was used. - Incomplete(Weight, Error), - /// Execution did not start due to the given error. - Error(Error), -} - -impl Outcome { - pub fn ensure_complete(self) -> Result { - match self { - Outcome::Complete(_) => Ok(()), - Outcome::Incomplete(_, e) => Err(e), - Outcome::Error(e) => Err(e), - } - } - pub fn ensure_execution(self) -> result::Result { - match self { - Outcome::Complete(w) => Ok(w), - Outcome::Incomplete(w, _) => Ok(w), - Outcome::Error(e) => Err(e), - } - } - /// How much weight was used by the XCM execution attempt. - pub fn weight_used(&self) -> Weight { - match self { - Outcome::Complete(w) => *w, - Outcome::Incomplete(w, _) => *w, - Outcome::Error(_) => 0, - } - } -} - -/// Type of XCM message executor. -pub trait ExecuteXcm { - /// Execute some XCM `message` from `origin` using no more than `weight_limit` weight. The weight limit is - /// a basic hard-limit and the implementation may place further restrictions or requirements on weight and - /// other aspects. - fn execute_xcm(origin: MultiLocation, message: Xcm, weight_limit: Weight) -> Outcome { - Self::execute_xcm_in_credit(origin, message, weight_limit, 0) - } - - /// Execute some XCM `message` from `origin` using no more than `weight_limit` weight. - /// - /// Some amount of `weight_credit` may be provided which, depending on the implementation, may allow - /// execution without associated payment. - fn execute_xcm_in_credit( - origin: MultiLocation, - message: Xcm, - weight_limit: Weight, - weight_credit: Weight, - ) -> Outcome; -} - -impl ExecuteXcm for () { - fn execute_xcm_in_credit( - _origin: MultiLocation, - _message: Xcm, - _weight_limit: Weight, - _weight_credit: Weight, - ) -> Outcome { - Outcome::Error(Error::Unimplemented) - } -} - -/// Utility for sending an XCM message. -/// -/// These can be amalgamated in tuples to form sophisticated routing systems. In tuple format, each router might return -/// `CannotReachDestination` to pass the execution to the next sender item. Note that each `CannotReachDestination` -/// might alter the destination and the xcm message for to the next router. -/// -/// -/// # Example -/// ```rust -/// # use xcm::v0::{MultiLocation, Xcm, Junction, Error, OriginKind, SendXcm, Result}; -/// # use parity_scale_codec::Encode; -/// -/// /// A sender that only passes the message through and does nothing. -/// struct Sender1; -/// impl SendXcm for Sender1 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { -/// return Err(Error::CannotReachDestination(destination, message)) -/// } -/// } -/// -/// /// A sender that accepts a message that has an X2 junction, otherwise stops the routing. -/// struct Sender2; -/// impl SendXcm for Sender2 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { -/// if let MultiLocation::X2(j1, j2) = destination { -/// Ok(()) -/// } else { -/// Err(Error::Undefined) -/// } -/// } -/// } -/// -/// /// A sender that accepts a message from an X1 parent junction, passing through otherwise. -/// struct Sender3; -/// impl SendXcm for Sender3 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { -/// match destination { -/// MultiLocation::X1(j) if j == Junction::Parent => Ok(()), -/// _ => Err(Error::CannotReachDestination(destination, message)), -/// } -/// } -/// } -/// -/// // A call to send via XCM. We don't really care about this. -/// # fn main() { -/// let call: Vec = ().encode(); -/// let message = Xcm::Transact { origin_type: OriginKind::Superuser, require_weight_at_most: 0, call: call.into() }; -/// let destination = MultiLocation::X1(Junction::Parent); -/// -/// assert!( -/// // Sender2 will block this. -/// <(Sender1, Sender2, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) -/// .is_err() -/// ); -/// -/// assert!( -/// // Sender3 will catch this. -/// <(Sender1, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) -/// .is_ok() -/// ); -/// # } -/// ``` -pub trait SendXcm { - /// Send an XCM `message` to a given `destination`. - /// - /// If it is not a destination which can be reached with this type but possibly could by others, then it *MUST* - /// return `CannotReachDestination`. Any other error will cause the tuple implementation to exit early without - /// trying other type fields. - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl SendXcm for Tuple { - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { - for_tuples!( #( - // we shadow `destination` and `message` in each expansion for the next one. - let (destination, message) = match Tuple::send_xcm(destination, message) { - Err(Error::CannotReachDestination(d, m)) => (d, m), - o @ _ => return o, - }; - )* ); - Err(Error::CannotReachDestination(destination, message)) - } -} diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml deleted file mode 100644 index 1111802aede4..000000000000 --- a/xcm/xcm-builder/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -authors = ["Parity Technologies "] -edition = "2018" -name = "xcm-builder" -description = "Tools & types for building with XCM and its executor." -version = "0.9.7" - -[dependencies] -impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -xcm = { path = "..", default-features = false } -xcm-executor = { path = "../xcm-executor", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } - -# Polkadot dependencies -polkadot-parachain = { path = "../../parachain", default-features = false } - -[features] -default = ["std"] -runtime-benchmarks = [] -std = [ - "parity-scale-codec/std", - "xcm/std", - "xcm-executor/std", - "sp-std/std", - "sp-arithmetic/std", - "sp-io/std", - "sp-runtime/std", - "frame-support/std", - "polkadot-parachain/std", - "pallet-transaction-payment/std", -] diff --git a/xcm/xcm-builder/src/barriers.rs b/xcm/xcm-builder/src/barriers.rs deleted file mode 100644 index ea3d80660940..000000000000 --- a/xcm/xcm-builder/src/barriers.rs +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various implementations for `ShouldExecute`. - -use sp_std::{result::Result, marker::PhantomData}; -use xcm::v0::{Xcm, Order, MultiLocation, Junction}; -use frame_support::{ensure, traits::Contains, weights::Weight}; -use xcm_executor::traits::{OnResponse, ShouldExecute}; -use polkadot_parachain::primitives::IsSystem; - -/// Execution barrier that just takes `shallow_weight` from `weight_credit`. -pub struct TakeWeightCredit; -impl ShouldExecute for TakeWeightCredit { - fn should_execute( - _origin: &MultiLocation, - _top_level: bool, - _message: &Xcm, - shallow_weight: Weight, - weight_credit: &mut Weight, - ) -> Result<(), ()> { - *weight_credit = weight_credit.checked_sub(shallow_weight).ok_or(())?; - Ok(()) - } -} - -/// Allows execution from `origin` if it is contained in `T` (i.e. `T::Contains(origin)`) taking payments into -/// account. -pub struct AllowTopLevelPaidExecutionFrom(PhantomData); -impl> ShouldExecute for AllowTopLevelPaidExecutionFrom { - fn should_execute( - origin: &MultiLocation, - top_level: bool, - message: &Xcm, - shallow_weight: Weight, - _weight_credit: &mut Weight, - ) -> Result<(), ()> { - ensure!(T::contains(origin), ()); - ensure!(top_level, ()); - match message { - Xcm::TeleportAsset { effects, .. } - | Xcm::WithdrawAsset { effects, ..} - | Xcm::ReserveAssetDeposit { effects, ..} - if matches!( - effects.first(), - Some(Order::BuyExecution { debt, ..}) if *debt >= shallow_weight - ) - => Ok(()), - _ => Err(()), - } - } -} - -/// Allows execution from any origin that is contained in `T` (i.e. `T::Contains(origin)`) without any payments. -/// Use only for executions from trusted origin groups. -pub struct AllowUnpaidExecutionFrom(PhantomData); -impl> ShouldExecute for AllowUnpaidExecutionFrom { - fn should_execute( - origin: &MultiLocation, - _top_level: bool, - _message: &Xcm, - _shallow_weight: Weight, - _weight_credit: &mut Weight, - ) -> Result<(), ()> { - ensure!(T::contains(origin), ()); - Ok(()) - } -} - -/// Allows a message only if it is from a system-level child parachain. -pub struct IsChildSystemParachain(PhantomData); -impl< - ParaId: IsSystem + From, -> Contains for IsChildSystemParachain { - fn contains(l: &MultiLocation) -> bool { - matches!(l, MultiLocation::X1(Junction::Parachain(id)) if ParaId::from(*id).is_system()) - } -} - -/// Allows only messages if the generic `ResponseHandler` expects them via `expecting_response`. -pub struct AllowKnownQueryResponses(PhantomData); -impl ShouldExecute for AllowKnownQueryResponses { - fn should_execute( - origin: &MultiLocation, - _top_level: bool, - message: &Xcm, - _shallow_weight: Weight, - _weight_credit: &mut Weight, - ) -> Result<(), ()> { - match message { - Xcm::QueryResponse { query_id, .. } if ResponseHandler::expecting_response(origin, *query_id) - => Ok(()), - _ => Err(()), - } - } -} diff --git a/xcm/xcm-builder/src/currency_adapter.rs b/xcm/xcm-builder/src/currency_adapter.rs deleted file mode 100644 index 9f4b1546afc8..000000000000 --- a/xcm/xcm-builder/src/currency_adapter.rs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Adapters to work with `frame_support::traits::Currency` through XCM. - -use sp_std::{result, convert::TryInto, marker::PhantomData}; -use xcm::v0::{Error as XcmError, Result, MultiAsset, MultiLocation}; -use sp_runtime::traits::{SaturatedConversion, CheckedSub}; -use frame_support::traits::{ExistenceRequirement::AllowDeath, WithdrawReasons, Get}; -use xcm_executor::traits::{MatchesFungible, Convert, TransactAsset}; -use xcm_executor::Assets; - -/// Asset transaction errors. -enum Error { - /// Asset not found. - AssetNotFound, - /// `MultiLocation` to `AccountId` conversion failed. - AccountIdConversionFailed, - /// `u128` amount to currency `Balance` conversion failed. - AmountToBalanceConversionFailed, -} - -impl From for XcmError { - fn from(e: Error) -> Self { - use XcmError::FailedToTransactAsset; - match e { - Error::AssetNotFound => FailedToTransactAsset("AssetNotFound"), - Error::AccountIdConversionFailed => FailedToTransactAsset("AccountIdConversionFailed"), - Error::AmountToBalanceConversionFailed => FailedToTransactAsset("AmountToBalanceConversionFailed"), - } - } -} - -/// Simple adapter to use a currency as asset transactor. This type can be used as `type AssetTransactor` in -/// `xcm::Config`. -/// -/// # Example -/// ``` -/// use frame_support::parameter_types; -/// use xcm::v0::{MultiLocation, Junction}; -/// use xcm_builder::{ParentIsDefault, CurrencyAdapter, IsConcrete}; -/// -/// /// Our chain's account id. -/// type AccountId = sp_runtime::AccountId32; -/// -/// /// Our relay chain's location. -/// parameter_types! { -/// RelayChain: MultiLocation = MultiLocation::X1(Junction::Parent); -/// CheckingAccount: AccountId = Default::default(); -/// } -/// -/// /// Some items that implement `Convert`. Can be more, but for now we just assume we accept -/// /// messages from the parent (relay chain). -/// pub type LocationConvertor = (ParentIsDefault); -/// -/// /// Final currency adapter. This can be used in `xcm::Config` to specify how asset related transactions happen. -/// pub type AssetTransactor = CurrencyAdapter< -/// // Use this balance type: -/// u128, -/// // The matcher: use the currency when the asset is a concrete asset in our relay chain. -/// IsConcrete, -/// // The local convertor: default account of the parent relay chain. -/// LocationConvertor, -/// // Our chain's account ID type. -/// AccountId, -/// // The checking account. Can be any deterministic inaccessible account. -/// CheckingAccount, -/// >; -/// ``` -pub struct CurrencyAdapter( - PhantomData<(Currency, Matcher, AccountIdConverter, AccountId, CheckedAccount)> -); - -impl< - Matcher: MatchesFungible, - AccountIdConverter: Convert, - Currency: frame_support::traits::Currency, - AccountId: Clone, // can't get away without it since Currency is generic over it. - CheckedAccount: Get>, -> TransactAsset for CurrencyAdapter { - fn can_check_in(_origin: &MultiLocation, what: &MultiAsset) -> Result { - // Check we handle this asset. - let amount: Currency::Balance = Matcher::matches_fungible(what) - .ok_or(Error::AssetNotFound)?; - if let Some(checked_account) = CheckedAccount::get() { - let new_balance = Currency::free_balance(&checked_account) - .checked_sub(&amount) - .ok_or(XcmError::NotWithdrawable)?; - Currency::ensure_can_withdraw(&checked_account, amount, WithdrawReasons::TRANSFER, new_balance) - .map_err(|_| XcmError::NotWithdrawable)?; - } - Ok(()) - } - - fn check_in(_origin: &MultiLocation, what: &MultiAsset) { - if let Some(amount) = Matcher::matches_fungible(what) { - if let Some(checked_account) = CheckedAccount::get() { - let ok = Currency::withdraw(&checked_account, amount, WithdrawReasons::TRANSFER, AllowDeath).is_ok(); - debug_assert!(ok, "`can_check_in` must have returned `true` immediately prior; qed"); - } - } - } - - fn check_out(_dest: &MultiLocation, what: &MultiAsset) { - if let Some(amount) = Matcher::matches_fungible(what) { - if let Some(checked_account) = CheckedAccount::get() { - Currency::deposit_creating(&checked_account, amount); - } - } - } - - fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - // Check we handle this asset. - let amount: u128 = Matcher::matches_fungible(&what) - .ok_or(Error::AssetNotFound)? - .saturated_into(); - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| Error::AccountIdConversionFailed)?; - let balance_amount = amount - .try_into() - .map_err(|_| Error::AmountToBalanceConversionFailed)?; - let _imbalance = Currency::deposit_creating(&who, balance_amount); - Ok(()) - } - - fn withdraw_asset( - what: &MultiAsset, - who: &MultiLocation - ) -> result::Result { - // Check we handle this asset. - let amount: u128 = Matcher::matches_fungible(what) - .ok_or(Error::AssetNotFound)? - .saturated_into(); - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| Error::AccountIdConversionFailed)?; - let balance_amount = amount - .try_into() - .map_err(|_| Error::AmountToBalanceConversionFailed)?; - Currency::withdraw(&who, balance_amount, WithdrawReasons::TRANSFER, AllowDeath) - .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; - Ok(what.clone().into()) - } -} diff --git a/xcm/xcm-builder/src/filter_asset_location.rs b/xcm/xcm-builder/src/filter_asset_location.rs deleted file mode 100644 index 31db271e1830..000000000000 --- a/xcm/xcm-builder/src/filter_asset_location.rs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various implementations of `FilterAssetLocation`. - -use sp_std::marker::PhantomData; -use xcm::v0::{MultiAsset, MultiLocation}; -use frame_support::traits::Get; -use xcm_executor::traits::FilterAssetLocation; - -/// Accepts an asset IFF it is a native asset. -pub struct NativeAsset; -impl FilterAssetLocation for NativeAsset { - fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { - matches!(asset, MultiAsset::ConcreteFungible { ref id, .. } if id == origin) - } -} - -/// Accepts an asset if it is contained in the given `T`'s `Get` impl. -pub struct Case(PhantomData); -impl> FilterAssetLocation for Case { - fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { - let (a, o) = T::get(); - a.contains(asset) && &o == origin - } -} diff --git a/xcm/xcm-builder/src/fungibles_adapter.rs b/xcm/xcm-builder/src/fungibles_adapter.rs deleted file mode 100644 index b0a9946c611c..000000000000 --- a/xcm/xcm-builder/src/fungibles_adapter.rs +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Adapters to work with `frame_support::traits::tokens::fungibles` through XCM. - -use sp_std::{prelude::*, result, marker::PhantomData, borrow::Borrow}; -use xcm::v0::{Error as XcmError, Result, MultiAsset, MultiLocation, Junction}; -use frame_support::traits::{Get, tokens::fungibles, Contains}; -use xcm_executor::traits::{TransactAsset, Convert, MatchesFungibles, Error as MatchError}; - -/// Converter struct implementing `AssetIdConversion` converting a numeric asset ID (must be TryFrom/TryInto) into -/// a `GeneralIndex` junction, prefixed by some `MultiLocation` value. The `MultiLocation` value will typically be a -/// `PalletInstance` junction. -pub struct AsPrefixedGeneralIndex(PhantomData<(Prefix, AssetId, ConvertAssetId)>); -impl< - Prefix: Get, - AssetId: Clone, - ConvertAssetId: Convert, -> Convert for AsPrefixedGeneralIndex { - fn convert_ref(id: impl Borrow) -> result::Result { - let prefix = Prefix::get(); - let id = id.borrow(); - if !prefix.iter().enumerate().all(|(index, item)| id.at(index) == Some(item)) { - return Err(()) - } - match id.at(prefix.len()) { - Some(Junction::GeneralIndex { id }) => ConvertAssetId::convert_ref(id), - _ => Err(()), - } - } - fn reverse_ref(what: impl Borrow) -> result::Result { - let mut location = Prefix::get(); - let id = ConvertAssetId::reverse_ref(what)?; - location.push(Junction::GeneralIndex { id }).map_err(|_| ())?; - Ok(location) - } -} - -pub struct ConvertedConcreteAssetId( - PhantomData<(AssetId, Balance, ConvertAssetId, ConvertBalance)> -); -impl< - AssetId: Clone, - Balance: Clone, - ConvertAssetId: Convert, - ConvertBalance: Convert, -> MatchesFungibles for - ConvertedConcreteAssetId -{ - fn matches_fungibles(a: &MultiAsset) -> result::Result<(AssetId, Balance), MatchError> { - let (id, amount) = match a { - MultiAsset::ConcreteFungible { id, amount } => (id, amount), - _ => return Err(MatchError::AssetNotFound), - }; - let what = ConvertAssetId::convert_ref(id).map_err(|_| MatchError::AssetIdConversionFailed)?; - let amount = ConvertBalance::convert_ref(amount).map_err(|_| MatchError::AmountToBalanceConversionFailed)?; - Ok((what, amount)) - } -} - -pub struct ConvertedAbstractAssetId( - PhantomData<(AssetId, Balance, ConvertAssetId, ConvertBalance)> -); -impl< - AssetId: Clone, - Balance: Clone, - ConvertAssetId: Convert, AssetId>, - ConvertBalance: Convert, -> MatchesFungibles for - ConvertedAbstractAssetId -{ - fn matches_fungibles(a: &MultiAsset) -> result::Result<(AssetId, Balance), MatchError> { - let (id, amount) = match a { - MultiAsset::AbstractFungible { id, amount } => (id, amount), - _ => return Err(MatchError::AssetNotFound), - }; - let what = ConvertAssetId::convert_ref(id).map_err(|_| MatchError::AssetIdConversionFailed)?; - let amount = ConvertBalance::convert_ref(amount).map_err(|_| MatchError::AmountToBalanceConversionFailed)?; - Ok((what, amount)) - } -} - -pub struct FungiblesTransferAdapter( - PhantomData<(Assets, Matcher, AccountIdConverter, AccountId)> -); -impl< - Assets: fungibles::Transfer, - Matcher: MatchesFungibles, - AccountIdConverter: Convert, - AccountId: Clone, // can't get away without it since Currency is generic over it. -> TransactAsset for FungiblesTransferAdapter { - fn transfer_asset( - what: &MultiAsset, - from: &MultiLocation, - to: &MultiLocation, - ) -> result::Result { - // Check we handle this asset. - let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let source = AccountIdConverter::convert_ref(from) - .map_err(|()| MatchError::AccountIdConversionFailed)?; - let dest = AccountIdConverter::convert_ref(to) - .map_err(|()| MatchError::AccountIdConversionFailed)?; - Assets::transfer(asset_id, &source, &dest, amount, true) - .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; - Ok(what.clone().into()) - } -} - -pub struct FungiblesMutateAdapter( - PhantomData<(Assets, Matcher, AccountIdConverter, AccountId, CheckAsset, CheckingAccount)> -); -impl< - Assets: fungibles::Mutate, - Matcher: MatchesFungibles, - AccountIdConverter: Convert, - AccountId: Clone, // can't get away without it since Currency is generic over it. - CheckAsset: Contains, - CheckingAccount: Get, -> TransactAsset for FungiblesMutateAdapter { - fn can_check_in(_origin: &MultiLocation, what: &MultiAsset) -> Result { - // Check we handle this asset. - let (asset_id, amount) = Matcher::matches_fungibles(what)?; - if CheckAsset::contains(&asset_id) { - // This is an asset whose teleports we track. - let checking_account = CheckingAccount::get(); - Assets::can_withdraw(asset_id, &checking_account, amount) - .into_result() - .map_err(|_| XcmError::NotWithdrawable)?; - } - Ok(()) - } - - fn check_in(_origin: &MultiLocation, what: &MultiAsset) { - if let Ok((asset_id, amount)) = Matcher::matches_fungibles(what) { - if CheckAsset::contains(&asset_id) { - let checking_account = CheckingAccount::get(); - let ok = Assets::burn_from(asset_id, &checking_account, amount).is_ok(); - debug_assert!(ok, "`can_check_in` must have returned `true` immediately prior; qed"); - } - } - } - - fn check_out(_dest: &MultiLocation, what: &MultiAsset) { - if let Ok((asset_id, amount)) = Matcher::matches_fungibles(what) { - if CheckAsset::contains(&asset_id) { - let checking_account = CheckingAccount::get(); - let ok = Assets::mint_into(asset_id, &checking_account, amount).is_ok(); - debug_assert!(ok, "`mint_into` cannot generally fail; qed"); - } - } - } - - fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - // Check we handle this asset. - let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; - Assets::mint_into(asset_id, &who, amount) - .map_err(|e| XcmError::FailedToTransactAsset(e.into())) - } - - fn withdraw_asset( - what: &MultiAsset, - who: &MultiLocation - ) -> result::Result { - // Check we handle this asset. - let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; - Assets::burn_from(asset_id, &who, amount) - .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; - Ok(what.clone().into()) - } -} - -pub struct FungiblesAdapter( - PhantomData<(Assets, Matcher, AccountIdConverter, AccountId, CheckAsset, CheckingAccount)> -); -impl< - Assets: fungibles::Mutate + fungibles::Transfer, - Matcher: MatchesFungibles, - AccountIdConverter: Convert, - AccountId: Clone, // can't get away without it since Currency is generic over it. - CheckAsset: Contains, - CheckingAccount: Get, -> TransactAsset for FungiblesAdapter { - fn can_check_in(origin: &MultiLocation, what: &MultiAsset) -> Result { - FungiblesMutateAdapter:: - ::can_check_in(origin, what) - } - - fn check_in(origin: &MultiLocation, what: &MultiAsset) { - FungiblesMutateAdapter:: - ::check_in(origin, what) - } - - fn check_out(dest: &MultiLocation, what: &MultiAsset) { - FungiblesMutateAdapter:: - ::check_out(dest, what) - } - - fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - FungiblesMutateAdapter:: - ::deposit_asset(what, who) - } - - fn withdraw_asset( - what: &MultiAsset, - who: &MultiLocation - ) -> result::Result { - FungiblesMutateAdapter:: - ::withdraw_asset(what, who) - } - - fn transfer_asset( - what: &MultiAsset, - from: &MultiLocation, - to: &MultiLocation, - ) -> result::Result { - FungiblesTransferAdapter::::transfer_asset(what, from, to) - } -} diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs deleted file mode 100644 index 534261a9998d..000000000000 --- a/xcm/xcm-builder/src/lib.rs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! # XCM-Builder -//! -//! Types and helpers for *building* XCM configuration. - -#![cfg_attr(not(feature = "std"), no_std)] - -#[cfg(test)] -mod mock; -#[cfg(test)] -mod tests; - -mod location_conversion; -pub use location_conversion::{ - Account32Hash, ParentIsDefault, ChildParachainConvertsVia, SiblingParachainConvertsVia, AccountId32Aliases, - AccountKey20Aliases, LocationInverter, -}; - -mod origin_conversion; -pub use origin_conversion::{ - SovereignSignedViaLocation, ParentAsSuperuser, ChildSystemParachainAsSuperuser, SiblingSystemParachainAsSuperuser, - ChildParachainAsNative, SiblingParachainAsNative, RelayChainAsNative, SignedAccountId32AsNative, - SignedAccountKey20AsNative, EnsureXcmOrigin, SignedToAccountId32, BackingToPlurality, -}; - -mod barriers; -pub use barriers::{ - TakeWeightCredit, AllowUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom, AllowKnownQueryResponses, - IsChildSystemParachain, -}; - -mod currency_adapter; -pub use currency_adapter::CurrencyAdapter; - -mod fungibles_adapter; -pub use fungibles_adapter::{ - AsPrefixedGeneralIndex, ConvertedAbstractAssetId, ConvertedConcreteAssetId, FungiblesAdapter, - FungiblesMutateAdapter, FungiblesTransferAdapter -}; - -mod weight; -pub use weight::{FixedRateOfConcreteFungible, FixedWeightBounds, UsingComponents, TakeRevenue}; - -mod matches_fungible; -pub use matches_fungible::{IsAbstract, IsConcrete}; - -mod filter_asset_location; -pub use filter_asset_location::{Case, NativeAsset}; diff --git a/xcm/xcm-builder/src/location_conversion.rs b/xcm/xcm-builder/src/location_conversion.rs deleted file mode 100644 index cdf0a2bf5171..000000000000 --- a/xcm/xcm-builder/src/location_conversion.rs +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::{marker::PhantomData, borrow::Borrow}; -use sp_io::hashing::blake2_256; -use sp_runtime::traits::AccountIdConversion; -use frame_support::traits::Get; -use parity_scale_codec::Encode; -use xcm::v0::{MultiLocation, NetworkId, Junction}; -use xcm_executor::traits::{InvertLocation, Convert}; - -pub struct Account32Hash(PhantomData<(Network, AccountId)>); -impl< - Network: Get, - AccountId: From<[u8; 32]> + Into<[u8; 32]> + Clone, -> Convert for Account32Hash { - fn convert_ref(location: impl Borrow) -> Result { - Ok(("multiloc", location.borrow()).using_encoded(blake2_256).into()) - } - - fn reverse_ref(_: impl Borrow) -> Result { - Err(()) - } -} - -/// A [`MultiLocation`] consisting of a single `Parent` [`Junction`] will be converted to the -/// default value of `AccountId` (e.g. all zeros for `AccountId32`). -pub struct ParentIsDefault(PhantomData); -impl< - AccountId: Default + Eq + Clone, -> Convert for ParentIsDefault { - fn convert_ref(location: impl Borrow) -> Result { - if let &MultiLocation::X1(Junction::Parent) = location.borrow() { - Ok(AccountId::default()) - } else { - Err(()) - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - if who.borrow() == &AccountId::default() { - Ok(Junction::Parent.into()) - } else { - Err(()) - } - } -} - -pub struct ChildParachainConvertsVia(PhantomData<(ParaId, AccountId)>); -impl< - ParaId: From + Into + AccountIdConversion, - AccountId: Clone, -> Convert for ChildParachainConvertsVia { - fn convert_ref(location: impl Borrow) -> Result { - if let &MultiLocation::X1(Junction::Parachain(id)) = location.borrow() { - Ok(ParaId::from(id).into_account()) - } else { - Err(()) - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - if let Some(id) = ParaId::try_from_account(who.borrow()) { - Ok(Junction::Parachain(id.into()).into()) - } else { - Err(()) - } - } -} - -pub struct SiblingParachainConvertsVia(PhantomData<(ParaId, AccountId)>); -impl< - ParaId: From + Into + AccountIdConversion, - AccountId: Clone, -> Convert for SiblingParachainConvertsVia { - fn convert_ref(location: impl Borrow) -> Result { - if let &MultiLocation::X2(Junction::Parent, Junction::Parachain(id)) = location.borrow() { - Ok(ParaId::from(id).into_account()) - } else { - Err(()) - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - if let Some(id) = ParaId::try_from_account(who.borrow()) { - Ok([Junction::Parent, Junction::Parachain(id.into())].into()) - } else { - Err(()) - } - } -} - -/// Extracts the `AccountId32` from the passed `location` if the network matches. -pub struct AccountId32Aliases(PhantomData<(Network, AccountId)>); -impl< - Network: Get, - AccountId: From<[u8; 32]> + Into<[u8; 32]> + Clone, -> Convert for AccountId32Aliases { - fn convert(location: MultiLocation) -> Result { - let id = match location { - MultiLocation::X1(Junction::AccountId32 { id, network: NetworkId::Any }) => id, - MultiLocation::X1(Junction::AccountId32 { id, network }) if &network == &Network::get() => id, - l => return Err(l), - }; - Ok(id.into()) - } - - fn reverse(who: AccountId) -> Result { - Ok(Junction::AccountId32 { id: who.into(), network: Network::get() }.into()) - } -} - -pub struct AccountKey20Aliases(PhantomData<(Network, AccountId)>); -impl< - Network: Get, - AccountId: From<[u8; 20]> + Into<[u8; 20]> + Clone, -> Convert for AccountKey20Aliases { - fn convert(location: MultiLocation) -> Result { - let key = match location { - MultiLocation::X1(Junction::AccountKey20 { key, network: NetworkId::Any }) => key, - MultiLocation::X1(Junction::AccountKey20 { key, network }) if &network == &Network::get() => key, - l => return Err(l), - }; - Ok(key.into()) - } - - fn reverse(who: AccountId) -> Result { - let j = Junction::AccountKey20 { key: who.into(), network: Network::get() }; - Ok(j.into()) - } -} - -/// Simple location inverter; give it this location's ancestry and it'll figure out the inverted -/// location. -/// -/// # Example -/// ## Network Topology -/// ```txt -/// v Source -/// Relay -> Para 1 -> Account20 -/// -> Para 2 -> Account32 -/// ^ Target -/// ``` -/// ```rust -/// # use frame_support::parameter_types; -/// # use xcm::v0::{MultiLocation::{self, *}, Junction::*, NetworkId::Any}; -/// # use xcm_builder::LocationInverter; -/// # use xcm_executor::traits::InvertLocation; -/// # fn main() { -/// parameter_types!{ -/// pub Ancestry: MultiLocation = X2( -/// Parachain(1), -/// AccountKey20 { network: Any, key: Default::default() }, -/// ); -/// } -/// -/// let input = X4(Parent, Parent, Parachain(2), AccountId32 { network: Any, id: Default::default() }); -/// let inverted = LocationInverter::::invert_location(&input); -/// assert_eq!(inverted, X4( -/// Parent, -/// Parent, -/// Parachain(1), -/// AccountKey20 { network: Any, key: Default::default() }, -/// )); -/// # } -/// ``` -pub struct LocationInverter(PhantomData); -impl> InvertLocation for LocationInverter { - fn invert_location(location: &MultiLocation) -> MultiLocation { - let mut ancestry = Ancestry::get(); - let mut result = location.clone(); - for (i, j) in location.iter_rev() - .map(|j| match j { - Junction::Parent => ancestry.take_first().unwrap_or(Junction::OnlyChild), - _ => Junction::Parent, - }) - .enumerate() - { - *result.at_mut(i).expect("location and result begin equal; same size; qed") = j; - } - result - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use frame_support::parameter_types; - use xcm::v0::{MultiLocation::*, Junction::*, NetworkId::Any}; - - fn account20() -> Junction { - AccountKey20 { network: Any, key: Default::default() } - } - - fn account32() -> Junction { - AccountId32 { network: Any, id: Default::default() } - } - - // Network Topology - // v Source - // Relay -> Para 1 -> SmartContract -> Account - // -> Para 2 -> Account - // ^ Target - // - // Inputs and outputs written as file paths: - // - // input location (source to target): ../../../para_2/account32_default - // ancestry (root to source): para_1/account20_default/account20_default - // => - // output (target to source): ../../para_1/account20_default/account20_default - #[test] - fn inverter_works_in_tree() { - parameter_types!{ - pub Ancestry: MultiLocation = X3(Parachain(1), account20(), account20()); - } - - let input = X5(Parent, Parent, Parent, Parachain(2), account32()); - let inverted = LocationInverter::::invert_location(&input); - assert_eq!(inverted, X5(Parent, Parent, Parachain(1), account20(), account20())); - } - - // Network Topology - // v Source - // Relay -> Para 1 -> SmartContract -> Account - // ^ Target - #[test] - fn inverter_uses_ancestry_as_inverted_location() { - parameter_types!{ - pub Ancestry: MultiLocation = X2(account20(), account20()); - } - - let input = X2(Parent, Parent); - let inverted = LocationInverter::::invert_location(&input); - assert_eq!(inverted, X2(account20(), account20())); - } - - // Network Topology - // v Source - // Relay -> Para 1 -> CollectivePallet -> Plurality - // ^ Target - #[test] - fn inverter_uses_only_child_on_missing_ancestry() { - parameter_types!{ - pub Ancestry: MultiLocation = X1(PalletInstance(5)); - } - - let input = X2(Parent, Parent); - let inverted = LocationInverter::::invert_location(&input); - assert_eq!(inverted, X2(PalletInstance(5), OnlyChild)); - } -} diff --git a/xcm/xcm-builder/src/matches_fungible.rs b/xcm/xcm-builder/src/matches_fungible.rs deleted file mode 100644 index 4d76a49b6bd8..000000000000 --- a/xcm/xcm-builder/src/matches_fungible.rs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various implementations for the `MatchesFungible` trait. - -use sp_std::{marker::PhantomData, convert::TryFrom}; -use sp_runtime::traits::CheckedConversion; -use xcm::v0::{MultiAsset, MultiLocation}; -use frame_support::traits::Get; -use xcm_executor::traits::MatchesFungible; - -/// Converts a `MultiAsset` into balance `B` if it is a concrete fungible with an id equal to that -/// given by `T`'s `Get`. -/// -/// # Example -/// -/// ``` -/// use xcm::v0::{MultiAsset, MultiLocation, Junction}; -/// use xcm_builder::IsConcrete; -/// use xcm_executor::traits::MatchesFungible; -/// -/// frame_support::parameter_types! { -/// pub TargetLocation: MultiLocation = MultiLocation::X1(Junction::Parent); -/// } -/// -/// # fn main() { -/// let id = MultiLocation::X1(Junction::Parent); -/// let asset = MultiAsset::ConcreteFungible { id, amount: 999u128 }; -/// // match `asset` if it is a concrete asset in `TargetLocation`. -/// assert_eq!( as MatchesFungible>::matches_fungible(&asset), Some(999)); -/// # } -/// ``` -pub struct IsConcrete(PhantomData); -impl, B: TryFrom> MatchesFungible for IsConcrete { - fn matches_fungible(a: &MultiAsset) -> Option { - match a { - MultiAsset::ConcreteFungible { id, amount } if id == &T::get() => - CheckedConversion::checked_from(*amount), - _ => None, - } - } -} - -/// Same as [`IsConcrete`] but for a fungible with abstract location. -/// -/// # Example -/// -/// ``` -/// use xcm::v0::{MultiAsset}; -/// use xcm_builder::IsAbstract; -/// use xcm_executor::traits::MatchesFungible; -/// -/// frame_support::parameter_types! { -/// pub TargetLocation: &'static [u8] = &[7u8]; -/// } -/// -/// # fn main() { -/// let asset = MultiAsset::AbstractFungible { id: vec![7u8], amount: 999u128 }; -/// // match `asset` if it is a concrete asset in `TargetLocation`. -/// assert_eq!( as MatchesFungible>::matches_fungible(&asset), Some(999)); -/// # } -/// ``` -pub struct IsAbstract(PhantomData); -impl, B: TryFrom> MatchesFungible for IsAbstract { - fn matches_fungible(a: &MultiAsset) -> Option { - match a { - MultiAsset::AbstractFungible { id, amount } if &id[..] == T::get() => - CheckedConversion::checked_from(*amount), - _ => None, - } - } -} diff --git a/xcm/xcm-builder/src/mock.rs b/xcm/xcm-builder/src/mock.rs deleted file mode 100644 index 56d7d753e49e..000000000000 --- a/xcm/xcm-builder/src/mock.rs +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -pub use sp_std::{fmt::Debug, marker::PhantomData, cell::RefCell}; -pub use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet}; -pub use parity_scale_codec::{Encode, Decode}; -pub use xcm::v0::{ - SendXcm, MultiLocation::*, Junction::*, MultiAsset, Xcm, Order, Result as XcmResult, Error as XcmError, - OriginKind, MultiLocation, Junction, opaque, -}; -pub use frame_support::{ - ensure, parameter_types, - dispatch::{Dispatchable, Parameter, Weight, DispatchError, DispatchResultWithPostInfo, DispatchInfo}, - weights::{PostDispatchInfo, GetDispatchInfo}, - sp_runtime::DispatchErrorWithPostInfo, - traits::{Get, Contains, IsInVec}, -}; -pub use xcm_executor::{ - Assets, Config, traits::{TransactAsset, ConvertOrigin, FilterAssetLocation, InvertLocation, OnResponse} -}; -pub use crate::{ - TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, FixedWeightBounds, - FixedRateOfConcreteFungible, AllowKnownQueryResponses, LocationInverter, -}; - -pub enum TestOrigin { - Root, - Relay, - Signed(u64), - Parachain(u32), -} - -/// A dummy call. -/// -/// Each item contains the amount of weight that it *wants* to consume as the first item, and the actual amount (if -/// different from the former) in the second option. -#[derive(Debug, Encode, Decode, Eq, PartialEq, Clone, Copy)] -pub enum TestCall { - OnlyRoot(Weight, Option), - OnlyParachain(Weight, Option, Option), - OnlySigned(Weight, Option, Option), - Any(Weight, Option), -} -impl Dispatchable for TestCall { - type Origin = TestOrigin; - type Config = (); - type Info = (); - type PostInfo = PostDispatchInfo; - fn dispatch(self, origin: Self::Origin) -> DispatchResultWithPostInfo { - let mut post_info = PostDispatchInfo::default(); - post_info.actual_weight = match self { - TestCall::OnlyRoot(_, maybe_actual) - | TestCall::OnlySigned(_, maybe_actual, _) - | TestCall::OnlyParachain(_, maybe_actual, _) - | TestCall::Any(_, maybe_actual) - => maybe_actual, - }; - if match (&origin, &self) { - (TestOrigin::Parachain(i), TestCall::OnlyParachain(_, _, Some(j))) => i == j, - (TestOrigin::Signed(i), TestCall::OnlySigned(_, _, Some(j))) => i == j, - (TestOrigin::Root, TestCall::OnlyRoot(..)) - | (TestOrigin::Parachain(_), TestCall::OnlyParachain(_, _, None)) - | (TestOrigin::Signed(_), TestCall::OnlySigned(_, _, None)) - | (_, TestCall::Any(..)) - => true, - _ => false, - } { - Ok(post_info) - } else { - Err(DispatchErrorWithPostInfo { error: DispatchError::BadOrigin, post_info }) - } - } -} - -impl GetDispatchInfo for TestCall { - fn get_dispatch_info(&self) -> DispatchInfo { - let weight = *match self { - TestCall::OnlyRoot(estimate, ..) - | TestCall::OnlyParachain(estimate, ..) - | TestCall::OnlySigned(estimate, ..) - | TestCall::Any(estimate, ..) - => estimate, - }; - DispatchInfo { weight, .. Default::default() } - } -} - -thread_local! { - pub static SENT_XCM: RefCell> = RefCell::new(Vec::new()); -} -pub fn sent_xcm() -> Vec<(MultiLocation, opaque::Xcm)> { - SENT_XCM.with(|q| (*q.borrow()).clone()) -} -pub struct TestSendXcm; -impl SendXcm for TestSendXcm { - fn send_xcm(dest: MultiLocation, msg: opaque::Xcm) -> XcmResult { - SENT_XCM.with(|q| q.borrow_mut().push((dest, msg))); - Ok(()) - } -} - -thread_local! { - pub static ASSETS: RefCell> = RefCell::new(BTreeMap::new()); -} -pub fn assets(who: u64) -> Vec { - ASSETS.with(|a| a.borrow().get(&who).map_or(vec![], |a| a.clone().into())) -} -pub fn add_asset(who: u64, what: MultiAsset) { - ASSETS.with(|a| a.borrow_mut() - .entry(who) - .or_insert(Assets::new()) - .saturating_subsume(what) - ); -} - -pub struct TestAssetTransactor; -impl TransactAsset for TestAssetTransactor { - fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result<(), XcmError> { - let who = to_account(who.clone()).map_err(|_| XcmError::LocationCannotHold)?; - add_asset(who, what.clone()); - Ok(()) - } - - fn withdraw_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - let who = to_account(who.clone()).map_err(|_| XcmError::LocationCannotHold)?; - ASSETS.with(|a| a.borrow_mut() - .get_mut(&who) - .ok_or(XcmError::NotWithdrawable)? - .try_take(what.clone()) - .map_err(|()| XcmError::NotWithdrawable) - ) - } -} - - -pub fn to_account(l: MultiLocation) -> Result { - Ok(match l { - // Siblings at 2000+id - X2(Parent, Parachain(id)) => 2000 + id as u64, - // Accounts are their number - X1(AccountIndex64 { index, .. }) => index, - // Children at 1000+id - X1(Parachain(id)) => 1000 + id as u64, - // Self at 3000 - Null => 3000, - // Parent at 3001 - X1(Parent) => 3001, - l => return Err(l), - }) -} - -pub struct TestOriginConverter; -impl ConvertOrigin for TestOriginConverter { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - use OriginKind::*; - match (kind, origin) { - (Superuser, _) => Ok(TestOrigin::Root), - (SovereignAccount, l) => Ok(TestOrigin::Signed(to_account(l)?)), - (Native, X1(Parachain(id))) => Ok(TestOrigin::Parachain(id)), - (Native, X1(Parent)) => Ok(TestOrigin::Relay), - (Native, X1(AccountIndex64 {index, ..})) => Ok(TestOrigin::Signed(index)), - (_, origin) => Err(origin), - } - } -} - -thread_local! { - pub static IS_RESERVE: RefCell>> = RefCell::new(BTreeMap::new()); - pub static IS_TELEPORTER: RefCell>> = RefCell::new(BTreeMap::new()); -} -pub fn add_reserve(from: MultiLocation, asset: MultiAsset) { - IS_RESERVE.with(|r| r.borrow_mut().entry(from).or_default().push(asset)); -} -#[allow(dead_code)] -pub fn add_teleporter(from: MultiLocation, asset: MultiAsset) { - IS_TELEPORTER.with(|r| r.borrow_mut().entry(from).or_default().push(asset)); -} -pub struct TestIsReserve; -impl FilterAssetLocation for TestIsReserve { - fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { - IS_RESERVE.with(|r| r.borrow().get(origin) - .map_or(false, |v| v.iter().any(|a| a.contains(asset))) - ) - } -} -pub struct TestIsTeleporter; -impl FilterAssetLocation for TestIsTeleporter { - fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { - IS_TELEPORTER.with(|r| r.borrow().get(origin) - .map_or(false, |v| v.iter().any(|a| a.contains(asset))) - ) - } -} - -use xcm::v0::Response; -pub enum ResponseSlot { - Expecting(MultiLocation), - Received(Response), -} -thread_local! { - pub static QUERIES: RefCell> = RefCell::new(BTreeMap::new()); -} -pub struct TestResponseHandler; -impl OnResponse for TestResponseHandler { - fn expecting_response(origin: &MultiLocation, query_id: u64) -> bool { - QUERIES.with(|q| match q.borrow().get(&query_id) { - Some(ResponseSlot::Expecting(ref l)) => l == origin, - _ => false, - }) - } - fn on_response(_origin: MultiLocation, query_id: u64, response: xcm::v0::Response) -> Weight { - QUERIES.with(|q| { - q.borrow_mut() - .entry(query_id) - .and_modify(|v| if matches!(*v, ResponseSlot::Expecting(..)) { - *v = ResponseSlot::Received(response); - }); - }); - 10 - } -} -pub fn expect_response(query_id: u64, from: MultiLocation) { - QUERIES.with(|q| q.borrow_mut() - .insert(query_id, ResponseSlot::Expecting(from)) - ); -} -pub fn response(query_id: u64) -> Option { - QUERIES.with(|q| q.borrow() - .get(&query_id) - .and_then(|v| match v { - ResponseSlot::Received(r) => Some(r.clone()), - _ => None, - }) - ) -} - -parameter_types! { - pub TestAncestry: MultiLocation = X1(Parachain(42)); - pub UnitWeightCost: Weight = 10; -} -parameter_types! { - // Nothing is allowed to be paid/unpaid by default. - pub static AllowUnpaidFrom: Vec = vec![]; - pub static AllowPaidFrom: Vec = vec![]; - // 1_000_000_000_000 => 1 unit of asset for 1 unit of Weight. - pub static WeightPrice: (MultiLocation, u128) = (Null, 1_000_000_000_000); -} - -pub type TestBarrier = ( - TakeWeightCredit, - AllowKnownQueryResponses, - AllowTopLevelPaidExecutionFrom>, - AllowUnpaidExecutionFrom>, -); - -pub struct TestConfig; -impl Config for TestConfig { - type Call = TestCall; - type XcmSender = TestSendXcm; - type AssetTransactor = TestAssetTransactor; - type OriginConverter = TestOriginConverter; - type IsReserve = TestIsReserve; - type IsTeleporter = TestIsTeleporter; - type LocationInverter = LocationInverter; - type Barrier = TestBarrier; - type Weigher = FixedWeightBounds; - type Trader = FixedRateOfConcreteFungible; - type ResponseHandler = TestResponseHandler; -} diff --git a/xcm/xcm-builder/src/origin_conversion.rs b/xcm/xcm-builder/src/origin_conversion.rs deleted file mode 100644 index daa51f3ee8e8..000000000000 --- a/xcm/xcm-builder/src/origin_conversion.rs +++ /dev/null @@ -1,257 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various implementations for `ConvertOrigin`. - -use sp_std::{marker::PhantomData, convert::TryInto}; -use xcm::v0::{MultiLocation, OriginKind, NetworkId, Junction, BodyId, BodyPart}; -use xcm_executor::traits::{Convert, ConvertOrigin}; -use frame_support::traits::{EnsureOrigin, Get, OriginTrait, GetBacking}; -use frame_system::RawOrigin as SystemRawOrigin; -use polkadot_parachain::primitives::IsSystem; - -/// Sovereign accounts use the system's `Signed` origin with an account ID derived from the `LocationConverter`. -pub struct SovereignSignedViaLocation( - PhantomData<(LocationConverter, Origin)> -); -impl< - LocationConverter: Convert, - Origin: OriginTrait, -> ConvertOrigin for SovereignSignedViaLocation where Origin::AccountId: Clone { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - if let OriginKind::SovereignAccount = kind { - let location = LocationConverter::convert(origin)?; - Ok(Origin::signed(location).into()) - } else { - Err(origin) - } - } -} - -pub struct ParentAsSuperuser(PhantomData); -impl< - Origin: OriginTrait, -> ConvertOrigin for ParentAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Superuser, MultiLocation::X1(Junction::Parent)) => - Ok(Origin::root()), - (_, origin) => Err(origin), - } - } -} - -pub struct ChildSystemParachainAsSuperuser(PhantomData<(ParaId, Origin)>); -impl< - ParaId: IsSystem + From, - Origin: OriginTrait, -> ConvertOrigin for ChildSystemParachainAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Superuser, MultiLocation::X1(Junction::Parachain(id))) - if ParaId::from(id).is_system() => - Ok(Origin::root()), - (_, origin) => Err(origin), - } - } -} - -pub struct SiblingSystemParachainAsSuperuser(PhantomData<(ParaId, Origin)>); -impl< - ParaId: IsSystem + From, - Origin: OriginTrait -> ConvertOrigin for SiblingSystemParachainAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Superuser, MultiLocation::X2(Junction::Parent, Junction::Parachain(id))) - if ParaId::from(id).is_system() => - Ok(Origin::root()), - (_, origin) => Err(origin), - } - } -} - -pub struct ChildParachainAsNative( - PhantomData<(ParachainOrigin, Origin)> -); -impl< - ParachainOrigin: From, - Origin: From, -> ConvertOrigin for ChildParachainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Native, MultiLocation::X1(Junction::Parachain(id))) - => Ok(Origin::from(ParachainOrigin::from(id))), - (_, origin) => Err(origin), - } - } -} - -pub struct SiblingParachainAsNative( - PhantomData<(ParachainOrigin, Origin)> -); -impl< - ParachainOrigin: From, - Origin: From, -> ConvertOrigin for SiblingParachainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Native, MultiLocation::X2(Junction::Parent, Junction::Parachain(id))) - => Ok(Origin::from(ParachainOrigin::from(id))), - (_, origin) => Err(origin), - } - } -} - -// Our Relay-chain has a native origin given by the `Get`ter. -pub struct RelayChainAsNative( - PhantomData<(RelayOrigin, Origin)> -); -impl< - RelayOrigin: Get, - Origin, -> ConvertOrigin for RelayChainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Native, MultiLocation::X1(Junction::Parent)) => Ok(RelayOrigin::get()), - (_, origin) => Err(origin), - } - } -} - -pub struct SignedAccountId32AsNative( - PhantomData<(Network, Origin)> -); -impl< - Network: Get, - Origin: OriginTrait, -> ConvertOrigin for SignedAccountId32AsNative where - Origin::AccountId: From<[u8; 32]>, -{ - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Native, MultiLocation::X1(Junction::AccountId32 { id, network })) - if matches!(network, NetworkId::Any) || network == Network::get() - => Ok(Origin::signed(id.into())), - (_, origin) => Err(origin), - } - } -} - -pub struct SignedAccountKey20AsNative( - PhantomData<(Network, Origin)> -); -impl< - Network: Get, - Origin: OriginTrait -> ConvertOrigin for SignedAccountKey20AsNative where - Origin::AccountId: From<[u8; 20]>, -{ - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { - (OriginKind::Native, MultiLocation::X1(Junction::AccountKey20 { key, network })) - if matches!(network, NetworkId::Any) || network == Network::get() => - { - Ok(Origin::signed(key.into())) - } - (_, origin) => Err(origin), - } - } -} - -/// EnsureOrigin barrier to convert from dispatch origin to XCM origin, if one exists. -pub struct EnsureXcmOrigin(PhantomData<(Origin, Conversion)>); -impl< - Origin: OriginTrait + Clone, - Conversion: Convert, -> EnsureOrigin for EnsureXcmOrigin where - Origin::PalletsOrigin: PartialEq, -{ - type Success = MultiLocation; - fn try_origin(o: Origin) -> Result { - let o = match Conversion::convert(o) { - Ok(location) => return Ok(location), - Err(o) => o, - }; - // We institute a root fallback so root can always represent the context. This - // guarantees that `successful_origin` will work. - if o.caller() == Origin::root().caller() { - Ok(MultiLocation::Null) - } else { - Err(o) - } - } - - #[cfg(feature = "runtime-benchmarks")] - fn successful_origin() -> Origin { - Origin::root() - } -} - -/// `Convert` implementation to convert from some a `Signed` (system) `Origin` into an `AccountId32`. -/// -/// Typically used when configuring `pallet-xcm` for allowing normal accounts to dispatch an XCM from an `AccountId32` -/// origin. -pub struct SignedToAccountId32( - PhantomData<(Origin, AccountId, Network)> -); -impl< - Origin: OriginTrait + Clone, - AccountId: Into<[u8; 32]>, - Network: Get, -> Convert for SignedToAccountId32 where - Origin::PalletsOrigin: From> + - TryInto, Error=Origin::PalletsOrigin> -{ - fn convert(o: Origin) -> Result { - o.try_with_caller(|caller| match caller.try_into() { - Ok(SystemRawOrigin::Signed(who)) => - Ok(Junction::AccountId32 { network: Network::get(), id: who.into() }.into()), - Ok(other) => Err(other.into()), - Err(other) => Err(other), - }) - } -} - -/// `Convert` implementation to convert from some an origin which implements `Backing` into a corresponding `Plurality` -/// MultiLocation. -/// -/// Typically used when configuring `pallet-xcm` for allowing a collective's Origin to dispatch an XCM from a -/// `Plurality` origin. -pub struct BackingToPlurality( - PhantomData<(Origin, COrigin, Body)> -); -impl< - Origin: OriginTrait + Clone, - COrigin: GetBacking, - Body: Get, -> Convert for BackingToPlurality where - Origin::PalletsOrigin: From + - TryInto -{ - fn convert(o: Origin) -> Result { - o.try_with_caller(|caller| match caller.try_into() { - Ok(co) => match co.get_backing() { - Some(backing) => Ok(Junction::Plurality { - id: Body::get(), - part: BodyPart::Fraction { nom: backing.approvals, denom: backing.eligible }, - }.into()), - None => Err(co.into()), - } - Err(other) => Err(other), - }) - } -} diff --git a/xcm/xcm-builder/src/tests.rs b/xcm/xcm-builder/src/tests.rs deleted file mode 100644 index 0f04b89285d1..000000000000 --- a/xcm/xcm-builder/src/tests.rs +++ /dev/null @@ -1,338 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use super::mock::*; -use {MultiAsset::*, Option::None}; -use xcm::v0::{Order, NetworkId::Any, Outcome, Response, ExecuteXcm}; -use xcm_executor::{XcmExecutor, Config, traits::*}; - -#[test] -fn basic_setup_works() { - add_reserve(X1(Parent), AllConcreteFungible { id: X1(Parent) }); - assert!(::IsReserve::filter_asset_location( - &ConcreteFungible { id: X1(Parent), amount: 100 }, - &X1(Parent), - )); - - assert_eq!(to_account(X1(Parachain(1))), Ok(1001)); - assert_eq!(to_account(X1(Parachain(50))), Ok(1050)); - assert_eq!(to_account(X2(Parent, Parachain(1))), Ok(2001)); - assert_eq!(to_account(X2(Parent, Parachain(50))), Ok(2050)); - assert_eq!(to_account(X1(AccountIndex64{index:1, network:Any})), Ok(1)); - assert_eq!(to_account(X1(AccountIndex64{index:42, network:Any})), Ok(42)); - assert_eq!(to_account(Null), Ok(3000)); -} - -#[test] -fn weigher_should_work() { - let mut message = opaque::Xcm::ReserveAssetDeposit { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - effects: vec![ - Order::BuyExecution { fees: All, weight: 0, debt: 30, halt_on_error: true, xcm: vec![] }, - Order::DepositAsset { assets: vec![All], dest: Null }, - ], - }.into(); - assert_eq!(::Weigher::shallow(&mut message), Ok(30)); -} - -#[test] -fn take_weight_credit_barrier_should_work() { - let mut message = opaque::Xcm::TransferAsset { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - dest: Null, - }; - - let mut weight_credit = 10; - let r = TakeWeightCredit::should_execute( - &X1(Parent), - true, - &mut message, - 10, - &mut weight_credit, - ); - assert_eq!(r, Ok(())); - assert_eq!(weight_credit, 0); - - let r = TakeWeightCredit::should_execute( - &X1(Parent), - true, - &mut message, - 10, - &mut weight_credit, - ); - assert_eq!(r, Err(())); - assert_eq!(weight_credit, 0); -} - -#[test] -fn allow_unpaid_should_work() { - let mut message = opaque::Xcm::TransferAsset { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - dest: Null, - }; - - AllowUnpaidFrom::set(vec![ X1(Parent) ]); - - let r = AllowUnpaidExecutionFrom::>::should_execute( - &X1(Parachain(1)), - true, - &mut message, - 10, - &mut 0, - ); - assert_eq!(r, Err(())); - - let r = AllowUnpaidExecutionFrom::>::should_execute( - &X1(Parent), - true, - &mut message, - 10, - &mut 0, - ); - assert_eq!(r, Ok(())); -} - -#[test] -fn allow_paid_should_work() { - AllowPaidFrom::set(vec![ X1(Parent) ]); - - let mut message = opaque::Xcm::TransferAsset { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - dest: Null, - }; - - let r = AllowTopLevelPaidExecutionFrom::>::should_execute( - &X1(Parachain(1)), - true, - &mut message, - 10, - &mut 0, - ); - assert_eq!(r, Err(())); - - let mut underpaying_message = opaque::Xcm::ReserveAssetDeposit { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - effects: vec![ - Order::BuyExecution { fees: All, weight: 0, debt: 20, halt_on_error: true, xcm: vec![] }, - Order::DepositAsset { assets: vec![All], dest: Null }, - ], - }; - - let r = AllowTopLevelPaidExecutionFrom::>::should_execute( - &X1(Parent), - true, - &mut underpaying_message, - 30, - &mut 0, - ); - assert_eq!(r, Err(())); - - let mut paying_message = opaque::Xcm::ReserveAssetDeposit { - assets: vec![ConcreteFungible { id: X1(Parent), amount: 100 }], - effects: vec![ - Order::BuyExecution { fees: All, weight: 0, debt: 30, halt_on_error: true, xcm: vec![] }, - Order::DepositAsset { assets: vec![All], dest: Null }, - ], - }; - - let r = AllowTopLevelPaidExecutionFrom::>::should_execute( - &X1(Parachain(1)), - true, - &mut paying_message, - 30, - &mut 0, - ); - assert_eq!(r, Err(())); - - let r = AllowTopLevelPaidExecutionFrom::>::should_execute( - &X1(Parent), - true, - &mut paying_message, - 30, - &mut 0, - ); - assert_eq!(r, Ok(())); -} - -#[test] -fn paying_reserve_deposit_should_work() { - AllowPaidFrom::set(vec![ X1(Parent) ]); - add_reserve(X1(Parent), AllConcreteFungible { id: X1(Parent) }); - WeightPrice::set((X1(Parent), 1_000_000_000_000)); - - let origin = X1(Parent); - let message = Xcm::::ReserveAssetDeposit { - assets: vec![ ConcreteFungible { id: X1(Parent), amount: 100 } ], - effects: vec![ - Order::::BuyExecution { fees: All, weight: 0, debt: 30, halt_on_error: true, xcm: vec![] }, - Order::::DepositAsset { assets: vec![ All ], dest: Null }, - ], - }; - let weight_limit = 50; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); - assert_eq!(r, Outcome::Complete(30)); - assert_eq!(assets(3000), vec![ ConcreteFungible { id: X1(Parent), amount: 70 } ]); -} - -#[test] -fn transfer_should_work() { - // we'll let them have message execution for free. - AllowUnpaidFrom::set(vec![ X1(Parachain(1)) ]); - // Child parachain #1 owns 1000 tokens held by us in reserve. - add_asset(1001, ConcreteFungible { id: Null, amount: 1000 }); - // They want to transfer 100 of them to their sibling parachain #2 - let r = XcmExecutor::::execute_xcm( - X1(Parachain(1)), - Xcm::TransferAsset { - assets: vec![ ConcreteFungible { id: Null, amount: 100 } ], - dest: X1(AccountIndex64{index:3, network:Any}), - }, - 50, - ); - assert_eq!(r, Outcome::Complete(10)); - assert_eq!(assets(3), vec![ ConcreteFungible { id: Null, amount: 100 } ]); - assert_eq!(assets(1001), vec![ ConcreteFungible { id: Null, amount: 900 } ]); - assert_eq!(sent_xcm(), vec![]); -} - -#[test] -fn reserve_transfer_should_work() { - AllowUnpaidFrom::set(vec![ X1(Parachain(1)) ]); - // Child parachain #1 owns 1000 tokens held by us in reserve. - add_asset(1001, ConcreteFungible { id: Null, amount: 1000 }); - // The remote account owned by gav. - let three = X1(AccountIndex64{index:3, network:Any}); - - // They want to transfer 100 of our native asset from sovereign account of parachain #1 into #2 - // and let them know to hand it to account #3. - let r = XcmExecutor::::execute_xcm( - X1(Parachain(1)), - Xcm::TransferReserveAsset { - assets: vec![ ConcreteFungible { id: Null, amount: 100 } ], - dest: X1(Parachain(2)), - effects: vec![ Order::DepositAsset { assets: vec![ All ], dest: three.clone() } ], - }, - 50, - ); - assert_eq!(r, Outcome::Complete(10)); - - assert_eq!(assets(1002), vec![ ConcreteFungible { id: Null, amount: 100 } ]); - assert_eq!(sent_xcm(), vec![( - X1(Parachain(2)), - Xcm::ReserveAssetDeposit { - assets: vec![ ConcreteFungible { id: X1(Parent), amount: 100 } ], - effects: vec![ Order::DepositAsset { assets: vec![ All ], dest: three } ], - }) - ]); -} - -#[test] -fn transacting_should_work() { - AllowUnpaidFrom::set(vec![ X1(Parent) ]); - - let origin = X1(Parent); - let message = Xcm::::Transact { - origin_type: OriginKind::Native, - require_weight_at_most: 50, - call: TestCall::Any(50, None).encode().into(), - }; - let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); - assert_eq!(r, Outcome::Complete(60)); -} - -#[test] -fn transacting_should_respect_max_weight_requirement() { - AllowUnpaidFrom::set(vec![ X1(Parent) ]); - - let origin = X1(Parent); - let message = Xcm::::Transact { - origin_type: OriginKind::Native, - require_weight_at_most: 40, - call: TestCall::Any(50, None).encode().into(), - }; - let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); - assert_eq!(r, Outcome::Incomplete(60, XcmError::TooMuchWeightRequired)); -} - -#[test] -fn transacting_should_refund_weight() { - AllowUnpaidFrom::set(vec![ X1(Parent) ]); - - let origin = X1(Parent); - let message = Xcm::::Transact { - origin_type: OriginKind::Native, - require_weight_at_most: 50, - call: TestCall::Any(50, Some(30)).encode().into(), - }; - let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); - assert_eq!(r, Outcome::Complete(40)); -} - -#[test] -fn paid_transacting_should_refund_payment_for_unused_weight() { - let one = X1(AccountIndex64{index:1, network:Any}); - AllowPaidFrom::set(vec![ one.clone() ]); - add_asset(1, ConcreteFungible { id: X1(Parent), amount: 100 }); - WeightPrice::set((X1(Parent), 1_000_000_000_000)); - - let origin = one.clone(); - let message = Xcm::::WithdrawAsset { - assets: vec![ ConcreteFungible { id: X1(Parent), amount: 100 } ], // enough for 100 units of weight. - effects: vec![ - Order::::BuyExecution { fees: All, weight: 70, debt: 30, halt_on_error: true, xcm: vec![ - Xcm::::Transact { - origin_type: OriginKind::Native, - require_weight_at_most: 60, - // call estimated at 70 but only takes 10. - call: TestCall::Any(60, Some(10)).encode().into(), - } - ] }, - Order::::DepositAsset { assets: vec![ All ], dest: one.clone() }, - ], - }; - let weight_limit = 100; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); - assert_eq!(r, Outcome::Complete(50)); - assert_eq!(assets(1), vec![ ConcreteFungible { id: X1(Parent), amount: 50 } ]); -} - -#[test] -fn prepaid_result_of_query_should_get_free_execution() { - let query_id = 33; - let origin = X1(Parent); - // We put this in manually here, but normally this would be done at the point of crafting the message. - expect_response(query_id, origin.clone()); - - let the_response = Response::Assets(vec![ ConcreteFungible { id: X1(Parent), amount: 100 } ]); - let message = Xcm::::QueryResponse { - query_id, - response: the_response.clone(), - }; - let weight_limit = 10; - - // First time the response gets through since we're expecting it... - let r = XcmExecutor::::execute_xcm(origin.clone(), message.clone(), weight_limit); - assert_eq!(r, Outcome::Complete(10)); - assert_eq!(response(query_id).unwrap(), the_response); - - // Second time it doesn't, since we're not. - let r = XcmExecutor::::execute_xcm(origin.clone(), message.clone(), weight_limit); - assert_eq!(r, Outcome::Incomplete(10, XcmError::Barrier)); -} diff --git a/xcm/xcm-builder/src/weight.rs b/xcm/xcm-builder/src/weight.rs deleted file mode 100644 index b627db9c750f..000000000000 --- a/xcm/xcm-builder/src/weight.rs +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::{result::Result, marker::PhantomData, convert::TryInto}; -use parity_scale_codec::Decode; -use xcm::v0::{Xcm, Order, MultiAsset, MultiLocation, Error}; -use sp_runtime::traits::{Zero, Saturating, SaturatedConversion}; -use frame_support::traits::{Get, OnUnbalanced as OnUnbalancedT, tokens::currency::Currency as CurrencyT}; -use frame_support::weights::{Weight, GetDispatchInfo, WeightToFeePolynomial}; -use xcm_executor::{Assets, traits::{WeightBounds, WeightTrader}}; - -pub struct FixedWeightBounds(PhantomData<(T, C)>); -impl, C: Decode + GetDispatchInfo> WeightBounds for FixedWeightBounds { - fn shallow(message: &mut Xcm) -> Result { - Ok(match message { - Xcm::Transact { call, .. } => { - call.ensure_decoded()?.get_dispatch_info().weight.saturating_add(T::get()) - } - Xcm::RelayedFrom { ref mut message, .. } => T::get().saturating_add(Self::shallow(message.as_mut())?), - Xcm::WithdrawAsset { effects, .. } - | Xcm::ReserveAssetDeposit { effects, .. } - | Xcm::TeleportAsset { effects, .. } - => { - let inner: Weight = effects.iter_mut() - .map(|effect| match effect { - Order::BuyExecution { .. } => { - // On success, execution of this will result in more weight being consumed but - // we don't count it here since this is only the *shallow*, non-negotiable weight - // spend and doesn't count weight placed behind a `BuyExecution` since it will not - // be definitely consumed from any existing weight credit if execution of the message - // is attempted. - T::get() - }, - _ => T::get(), - }).sum(); - T::get().saturating_add(inner) - } - _ => T::get(), - }) - } - fn deep(message: &mut Xcm) -> Result { - Ok(match message { - Xcm::RelayedFrom { ref mut message, .. } => Self::deep(message.as_mut())?, - Xcm::WithdrawAsset { effects, .. } - | Xcm::ReserveAssetDeposit { effects, .. } - | Xcm::TeleportAsset { effects, .. } - => { - let mut extra = 0; - for effect in effects.iter_mut() { - match effect { - Order::BuyExecution { xcm, .. } => { - for message in xcm.iter_mut() { - extra.saturating_accrue(Self::shallow(message)?.saturating_add(Self::deep(message)?)); - } - }, - _ => {} - } - } - extra - }, - _ => 0, - }) - } -} - -/// Function trait for handling some revenue. Similar to a negative imbalance (credit) handler, but for a -/// `MultiAsset`. Sensible implementations will deposit the asset in some known treasury or block-author account. -pub trait TakeRevenue { - /// Do something with the given `revenue`, which is a single non-wildcard `MultiAsset`. - fn take_revenue(revenue: MultiAsset); -} - -/// Null implementation just burns the revenue. -impl TakeRevenue for () { - fn take_revenue(_revenue: MultiAsset) {} -} - -/// Simple fee calculator that requires payment in a single concrete fungible at a fixed rate. -/// -/// The constant `Get` type parameter should be the concrete fungible ID and the amount of it required for -/// one second of weight. -pub struct FixedRateOfConcreteFungible< - T: Get<(MultiLocation, u128)>, - R: TakeRevenue, ->(Weight, u128, PhantomData<(T, R)>); -impl, R: TakeRevenue> WeightTrader for FixedRateOfConcreteFungible { - fn new() -> Self { Self(0, 0, PhantomData) } - - fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result { - let (id, units_per_second) = T::get(); - use frame_support::weights::constants::WEIGHT_PER_SECOND; - let amount = units_per_second * (weight as u128) / (WEIGHT_PER_SECOND as u128); - let required = MultiAsset::ConcreteFungible { amount, id }; - let (unused, _) = payment.less(required).map_err(|_| Error::TooExpensive)?; - self.0 = self.0.saturating_add(weight); - self.1 = self.1.saturating_add(amount); - Ok(unused) - } - - fn refund_weight(&mut self, weight: Weight) -> MultiAsset { - let (id, units_per_second) = T::get(); - let weight = weight.min(self.0); - let amount = units_per_second * (weight as u128) / 1_000_000_000_000u128; - self.0 -= weight; - self.1 = self.1.saturating_sub(amount); - let result = MultiAsset::ConcreteFungible { amount, id }; - result - } -} - -impl, R: TakeRevenue> Drop for FixedRateOfConcreteFungible { - fn drop(&mut self) { - let revenue = MultiAsset::ConcreteFungible { amount: self.1, id: T::get().0 }; - R::take_revenue(revenue); - } -} - -/// Weight trader which uses the TransactionPayment pallet to set the right price for weight and then -/// places any weight bought into the right account. -pub struct UsingComponents< - WeightToFee: WeightToFeePolynomial, - AssetId: Get, - AccountId, - Currency: CurrencyT, - OnUnbalanced: OnUnbalancedT, ->(Weight, Currency::Balance, PhantomData<(WeightToFee, AssetId, AccountId, Currency, OnUnbalanced)>); -impl< - WeightToFee: WeightToFeePolynomial, - AssetId: Get, - AccountId, - Currency: CurrencyT, - OnUnbalanced: OnUnbalancedT, -> WeightTrader for UsingComponents { - fn new() -> Self { Self(0, Zero::zero(), PhantomData) } - - fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result { - let amount = WeightToFee::calc(&weight); - let required = MultiAsset::ConcreteFungible { - amount: amount.try_into().map_err(|_| Error::Overflow)?, - id: AssetId::get(), - }; - let (unused, _) = payment.less(required).map_err(|_| Error::TooExpensive)?; - self.0 = self.0.saturating_add(weight); - self.1 = self.1.saturating_add(amount); - Ok(unused) - } - - fn refund_weight(&mut self, weight: Weight) -> MultiAsset { - let weight = weight.min(self.0); - let amount = WeightToFee::calc(&weight); - self.0 -= weight; - self.1 = self.1.saturating_sub(amount); - let result = MultiAsset::ConcreteFungible { - amount: amount.saturated_into(), - id: AssetId::get(), - }; - result - } - -} -impl< - WeightToFee: WeightToFeePolynomial, - AssetId: Get, - AccountId, - Currency: CurrencyT, - OnUnbalanced: OnUnbalancedT, -> Drop for UsingComponents { - fn drop(&mut self) { - OnUnbalanced::on_unbalanced(Currency::issue(self.1)); - } -} diff --git a/xcm/xcm-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml deleted file mode 100644 index 1c8505cb2154..000000000000 --- a/xcm/xcm-executor/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -authors = ["Parity Technologies "] -edition = "2018" -name = "xcm-executor" -description = "An abstract and configurable XCM message executor." -version = "0.9.7" - -[dependencies] -impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } -xcm = { path = "..", default-features = false } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -log = { version = "0.4.14", default-features = false } - -[features] -default = ["std"] -std = [ - "parity-scale-codec/std", - "xcm/std", - "sp-std/std", - "sp-io/std", - "sp-arithmetic/std", - "sp-core/std", - "sp-runtime/std", - "frame-support/std", - "log/std", -] diff --git a/xcm/xcm-executor/src/assets.rs b/xcm/xcm-executor/src/assets.rs deleted file mode 100644 index 69228112fbf7..000000000000 --- a/xcm/xcm-executor/src/assets.rs +++ /dev/null @@ -1,762 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::{prelude::*, mem, collections::{btree_map::BTreeMap, btree_set::BTreeSet}}; -use xcm::v0::{MultiAsset, MultiLocation, AssetInstance}; -use sp_runtime::RuntimeDebug; - -/// Classification of an asset being concrete or abstract. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, RuntimeDebug)] -pub enum AssetId { - Concrete(MultiLocation), - Abstract(Vec), -} - -impl AssetId { - /// Prepend a MultiLocation to a concrete asset, giving it a new root location. - pub fn prepend_location(&mut self, prepend: &MultiLocation) -> Result<(), ()> { - if let AssetId::Concrete(ref mut l) = self { - l.prepend_with(prepend.clone()).map_err(|_| ())?; - } - Ok(()) - } - - /// Use the value of `self` along with an `amount to create the corresponding `MultiAsset` value for a - /// fungible asset. - pub fn into_fungible_multiasset(self, amount: u128) -> MultiAsset { - match self { - AssetId::Concrete(id) => MultiAsset::ConcreteFungible { id, amount }, - AssetId::Abstract(id) => MultiAsset::AbstractFungible { id, amount }, - } - } - - /// Use the value of `self` along with an `instance to create the corresponding `MultiAsset` value for a - /// non-fungible asset. - pub fn into_non_fungible_multiasset(self, instance: AssetInstance) -> MultiAsset { - match self { - AssetId::Concrete(class) => MultiAsset::ConcreteNonFungible { class, instance }, - AssetId::Abstract(class) => MultiAsset::AbstractNonFungible { class, instance }, - } - } -} - -/// List of non-wildcard fungible and non-fungible assets. -#[derive(Default, Clone, RuntimeDebug, Eq, PartialEq)] -pub struct Assets { - /// The fungible assets. - pub fungible: BTreeMap, - - /// The non-fungible assets. - // OPTIMIZE: Consider BTreeMap> - // or even BTreeMap> - pub non_fungible: BTreeSet<(AssetId, AssetInstance)>, -} - -impl From> for Assets { - fn from(assets: Vec) -> Assets { - let mut result = Self::default(); - for asset in assets.into_iter() { - result.saturating_subsume(asset) - } - result - } -} - -impl From for Vec { - fn from(a: Assets) -> Self { - a.into_assets_iter().collect() - } -} - -impl From for Assets { - fn from(asset: MultiAsset) -> Assets { - let mut result = Self::default(); - result.saturating_subsume(asset); - result - } -} - -impl Assets { - /// New value, containing no assets. - pub fn new() -> Self { Self::default() } - - /// An iterator over the fungible assets. - pub fn fungible_assets_iter<'a>(&'a self) -> impl Iterator + 'a { - self.fungible.iter() - .map(|(id, &amount)| match id.clone() { - AssetId::Concrete(id) => MultiAsset::ConcreteFungible { id, amount }, - AssetId::Abstract(id) => MultiAsset::AbstractFungible { id, amount }, - }) - } - - /// An iterator over the non-fungible assets. - pub fn non_fungible_assets_iter<'a>(&'a self) -> impl Iterator + 'a { - self.non_fungible.iter() - .map(|&(ref class, ref instance)| match class.clone() { - AssetId::Concrete(class) => MultiAsset::ConcreteNonFungible { class, instance: instance.clone() }, - AssetId::Abstract(class) => MultiAsset::AbstractNonFungible { class, instance: instance.clone() }, - }) - } - - /// An iterator over all assets. - pub fn into_assets_iter(self) -> impl Iterator { - let fungible = self.fungible.into_iter() - .map(|(id, amount)| match id { - AssetId::Concrete(id) => MultiAsset::ConcreteFungible { id, amount }, - AssetId::Abstract(id) => MultiAsset::AbstractFungible { id, amount }, - }); - let non_fungible = self.non_fungible.into_iter() - .map(|(id, instance)| match id { - AssetId::Concrete(class) => MultiAsset::ConcreteNonFungible { class, instance }, - AssetId::Abstract(class) => MultiAsset::AbstractNonFungible { class, instance }, - }); - fungible.chain(non_fungible) - } - - /// An iterator over all assets. - pub fn assets_iter<'a>(&'a self) -> impl Iterator + 'a { - let fungible = self.fungible_assets_iter(); - let non_fungible = self.non_fungible_assets_iter(); - fungible.chain(non_fungible) - } - - /// Mutate `self` to contain all given `assets`, saturating if necessary. - /// - /// Wildcards in `assets` are ignored. - pub fn saturating_subsume_all(&mut self, assets: Assets) { - // OPTIMIZE: Could be done with a much faster btree entry merge and only sum the entries with the - // same key. - for asset in assets.into_assets_iter() { - self.saturating_subsume(asset) - } - } - - /// Mutate `self` to contain the given `asset`, saturating if necessary. - /// - /// Wildcard values of `asset` do nothing. - pub fn saturating_subsume(&mut self, asset: MultiAsset) { - match asset { - MultiAsset::ConcreteFungible { id, amount } => { - self.saturating_subsume_fungible(AssetId::Concrete(id), amount); - } - MultiAsset::AbstractFungible { id, amount } => { - self.saturating_subsume_fungible(AssetId::Abstract(id), amount); - } - MultiAsset::ConcreteNonFungible { class, instance} => { - self.saturating_subsume_non_fungible(AssetId::Concrete(class), instance); - } - MultiAsset::AbstractNonFungible { class, instance} => { - self.saturating_subsume_non_fungible(AssetId::Abstract(class), instance); - } - _ => (), - } - } - - /// Consumes `self` and returns its original value excluding `asset` iff it contains at least `asset`. - /// - /// Wildcard assets in `self` will result in an error. - /// - /// `asset` may be a wildcard and are evaluated in the context of `self`. - /// - /// Returns `Ok` with the `self` minus `asset` and the non-wildcard equivalence of `asset` taken if `self` - /// contains `asset`, and `Err` with `self` otherwise. - pub fn less(mut self, asset: MultiAsset) -> Result<(Self, Assets), Self> { - match self.try_take(asset) { - Ok(taken) => Ok((self, taken)), - Err(()) => Err(self), - } - } - - /// Mutates `self` to its original value less `asset` and returns `true` iff it contains at least `asset`. - /// - /// Wildcard assets in `self` will result in an error. - /// - /// `asset` may be a wildcard and are evaluated in the context of `self`. - /// - /// Returns `Ok` with the non-wildcard equivalence of `asset` taken and mutates `self` to its value minus - /// `asset` if `self` contains `asset`, and return `Err` otherwise. - pub fn try_take(&mut self, asset: MultiAsset) -> Result { - match asset { - MultiAsset::None => Ok(Assets::new()), - MultiAsset::ConcreteFungible { id, amount } => self.try_take_fungible(AssetId::Concrete(id), amount), - MultiAsset::AbstractFungible { id, amount } => self.try_take_fungible(AssetId::Abstract(id), amount), - MultiAsset::ConcreteNonFungible { class, instance} => self.try_take_non_fungible(AssetId::Concrete(class), instance), - MultiAsset::AbstractNonFungible { class, instance} => self.try_take_non_fungible(AssetId::Abstract(class), instance), - MultiAsset::AllAbstractFungible { id } => Ok(self.take_fungible(&AssetId::Abstract(id))), - MultiAsset::AllConcreteFungible { id } => Ok(self.take_fungible(&AssetId::Concrete(id))), - MultiAsset::AllAbstractNonFungible { class } => Ok(self.take_non_fungible(&AssetId::Abstract(class))), - MultiAsset::AllConcreteNonFungible { class } => Ok(self.take_non_fungible(&AssetId::Concrete(class))), - MultiAsset::AllFungible => { - let mut taken = Assets::new(); - mem::swap(&mut self.fungible, &mut taken.fungible); - Ok(taken) - }, - MultiAsset::AllNonFungible => { - let mut taken = Assets::new(); - mem::swap(&mut self.non_fungible, &mut taken.non_fungible); - Ok(taken) - }, - MultiAsset::All => Ok(self.swapped(Assets::new())), - } - } - - pub fn try_take_fungible(&mut self, id: AssetId, amount: u128) -> Result { - self.try_remove_fungible(&id, amount)?; - Ok(id.into_fungible_multiasset(amount).into()) - } - - pub fn try_take_non_fungible(&mut self, id: AssetId, instance: AssetInstance) -> Result { - let asset_id_instance = (id, instance); - self.try_remove_non_fungible(&asset_id_instance)?; - let (asset_id, instance) = asset_id_instance; - Ok(asset_id.into_non_fungible_multiasset(instance).into()) - } - - pub fn take_fungible(&mut self, id: &AssetId) -> Assets { - let mut taken = Assets::new(); - if let Some((id, amount)) = self.fungible.remove_entry(&id) { - taken.fungible.insert(id, amount); - } - taken - } - - pub fn take_non_fungible(&mut self, id: &AssetId) -> Assets { - let mut taken = Assets::new(); - let non_fungible = mem::replace(&mut self.non_fungible, Default::default()); - non_fungible.into_iter().for_each(|(c, instance)| { - if &c == id { - taken.non_fungible.insert((c, instance)); - } else { - self.non_fungible.insert((c, instance)); - } - }); - taken - } - - pub fn try_remove_fungible(&mut self, id: &AssetId, amount: u128) -> Result<(), ()> { - let self_amount = self.fungible.get_mut(&id).ok_or(())?; - *self_amount = self_amount.checked_sub(amount).ok_or(())?; - Ok(()) - } - - pub fn try_remove_non_fungible(&mut self, class_instance: &(AssetId, AssetInstance)) -> Result<(), ()> { - match self.non_fungible.remove(class_instance) { - true => Ok(()), - false => Err(()), - } - } - - /// Modify `self` to include a new fungible asset by `id` and `amount`, - /// saturating if necessary. - pub fn saturating_subsume_fungible(&mut self, id: AssetId, amount: u128) { - self.fungible - .entry(id) - .and_modify(|e| *e = e.saturating_add(amount)) - .or_insert(amount); - } - - /// Modify `self` to include a new non-fungible asset by `class` and `instance`. - pub fn saturating_subsume_non_fungible(&mut self, class: AssetId, instance: AssetInstance) { - self.non_fungible.insert((class, instance)); - } - - /// Alter any concretely identified assets by prepending the given `MultiLocation`. - /// - /// WARNING: For now we consider this infallible and swallow any errors. It is thus the caller's responsibility to - /// ensure that any internal asset IDs are able to be prepended without overflow. - pub fn prepend_location(&mut self, prepend: &MultiLocation) { - let mut fungible = Default::default(); - mem::swap(&mut self.fungible, &mut fungible); - self.fungible = fungible.into_iter() - .map(|(mut id, amount)| { let _ = id.prepend_location(prepend); (id, amount) }) - .collect(); - let mut non_fungible = Default::default(); - mem::swap(&mut self.non_fungible, &mut non_fungible); - self.non_fungible = non_fungible.into_iter() - .map(|(mut class, inst)| { let _ = class.prepend_location(prepend); (class, inst) }) - .collect(); - } - - /// Return the assets in `self`, but (asset-wise) of no greater value than `assets`. - /// - /// Result is undefined if `assets` includes elements which match to the same asset more than once. - /// - /// Example: - /// - /// ``` - /// use xcm_executor::Assets; - /// use xcm::v0::{MultiAsset, MultiLocation}; - /// let assets_i_have: Assets = vec![ - /// MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount: 100 }, - /// MultiAsset::AbstractFungible { id: vec![0], amount: 100 }, - /// ].into(); - /// let assets_they_want: Assets = vec![ - /// MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount: 200 }, - /// MultiAsset::AbstractFungible { id: vec![0], amount: 50 }, - /// ].into(); - /// - /// let assets_we_can_trade: Assets = assets_i_have.min(assets_they_want.assets_iter()); - /// assert_eq!(assets_we_can_trade.into_assets_iter().collect::>(), vec![ - /// MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount: 100 }, - /// MultiAsset::AbstractFungible { id: vec![0], amount: 50 }, - /// ]); - /// ``` - pub fn min<'a, M, I>(&self, assets: I) -> Self - where - M: 'a + sp_std::borrow::Borrow, - I: IntoIterator, - { - let mut result = Assets::default(); - for asset in assets.into_iter() { - match asset.borrow() { - MultiAsset::None => (), - MultiAsset::All => return self.clone(), - MultiAsset::AllFungible => { - // Replace `result.fungible` with all fungible assets, - // keeping `result.non_fungible` the same. - result = Assets { - fungible: self.fungible.clone(), - non_fungible: result.non_fungible, - } - }, - MultiAsset::AllNonFungible => { - // Replace `result.non_fungible` with all non-fungible assets, - // keeping `result.fungible` the same. - result = Assets { - fungible: result.fungible, - non_fungible: self.non_fungible.clone(), - } - }, - MultiAsset::AllAbstractFungible { id } => { - for asset in self.fungible_assets_iter() { - match &asset { - MultiAsset::AbstractFungible { id: identifier, .. } => { - if id == identifier { result.saturating_subsume(asset) } - }, - _ => (), - } - } - }, - MultiAsset::AllAbstractNonFungible { class } => { - for asset in self.non_fungible_assets_iter() { - match &asset { - MultiAsset::AbstractNonFungible { class: c, .. } => { - if class == c { result.saturating_subsume(asset) } - }, - _ => (), - } - } - } - MultiAsset::AllConcreteFungible { id } => { - for asset in self.fungible_assets_iter() { - match &asset { - MultiAsset::ConcreteFungible { id: identifier, .. } => { - if id == identifier { result.saturating_subsume(asset) } - }, - _ => (), - } - } - }, - MultiAsset::AllConcreteNonFungible { class } => { - for asset in self.non_fungible_assets_iter() { - match &asset { - MultiAsset::ConcreteNonFungible { class: c, .. } => { - if class == c { result.saturating_subsume(asset) } - }, - _ => (), - } - } - } - x @ MultiAsset::ConcreteFungible { .. } | x @ MultiAsset::AbstractFungible { .. } => { - let (id, amount) = match x { - MultiAsset::ConcreteFungible { id, amount } => (AssetId::Concrete(id.clone()), *amount), - MultiAsset::AbstractFungible { id, amount } => (AssetId::Abstract(id.clone()), *amount), - _ => unreachable!(), - }; - if let Some(v) = self.fungible.get(&id) { - result.saturating_subsume_fungible(id, amount.min(*v)); - } - }, - x @ MultiAsset::ConcreteNonFungible { .. } | x @ MultiAsset::AbstractNonFungible { .. } => { - let (class, instance) = match x { - MultiAsset::ConcreteNonFungible { class, instance } => (AssetId::Concrete(class.clone()), instance.clone()), - MultiAsset::AbstractNonFungible { class, instance } => (AssetId::Abstract(class.clone()), instance.clone()), - _ => unreachable!(), - }; - let item = (class, instance); - if self.non_fungible.contains(&item) { - result.non_fungible.insert(item); - } - } - } - } - result - } - - /// Take all possible assets up to `assets` from `self`, mutating `self` and returning the - /// assets taken. - /// - /// Wildcards work. - /// - /// Example: - /// - /// ``` - /// use xcm_executor::Assets; - /// use xcm::v0::{MultiAsset, MultiLocation}; - /// let mut assets_i_have: Assets = vec![ - /// MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount: 100 }, - /// MultiAsset::AbstractFungible { id: vec![0], amount: 100 }, - /// ].into(); - /// let assets_they_want = vec![ - /// MultiAsset::AllAbstractFungible { id: vec![0] }, - /// ]; - /// - /// let assets_they_took: Assets = assets_i_have.saturating_take(assets_they_want); - /// assert_eq!(assets_they_took.into_assets_iter().collect::>(), vec![ - /// MultiAsset::AbstractFungible { id: vec![0], amount: 100 }, - /// ]); - /// assert_eq!(assets_i_have.into_assets_iter().collect::>(), vec![ - /// MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount: 100 }, - /// ]); - /// ``` - pub fn saturating_take(&mut self, assets: I) -> Assets - where - I: IntoIterator, - { - let mut result = Assets::default(); - for asset in assets.into_iter() { - match asset { - MultiAsset::None => (), - MultiAsset::All => return self.swapped(Assets::default()), - MultiAsset::AllFungible => { - // Remove all fungible assets, and copy them into `result`. - let fungible = mem::replace(&mut self.fungible, Default::default()); - fungible.into_iter().for_each(|(id, amount)| { - result.saturating_subsume_fungible(id, amount); - }) - }, - MultiAsset::AllNonFungible => { - // Remove all non-fungible assets, and copy them into `result`. - let non_fungible = mem::replace(&mut self.non_fungible, Default::default()); - non_fungible.into_iter().for_each(|(class, instance)| { - result.saturating_subsume_non_fungible(class, instance); - }); - }, - x @ MultiAsset::AllAbstractFungible { .. } | x @ MultiAsset::AllConcreteFungible { .. } => { - let id = match x { - MultiAsset::AllConcreteFungible { id } => AssetId::Concrete(id), - MultiAsset::AllAbstractFungible { id } => AssetId::Abstract(id), - _ => unreachable!(), - }; - // At the end of this block, we will be left with only the non-matching fungibles. - let mut non_matching_fungibles = BTreeMap::::new(); - let fungible = mem::replace(&mut self.fungible, Default::default()); - fungible.into_iter().for_each(|(iden, amount)| { - if iden == id { - result.saturating_subsume_fungible(iden, amount); - } else { - non_matching_fungibles.insert(iden, amount); - } - }); - self.fungible = non_matching_fungibles; - }, - x @ MultiAsset::AllAbstractNonFungible { .. } | x @ MultiAsset::AllConcreteNonFungible { .. } => { - let class = match x { - MultiAsset::AllConcreteNonFungible { class } => AssetId::Concrete(class), - MultiAsset::AllAbstractNonFungible { class } => AssetId::Abstract(class), - _ => unreachable!(), - }; - // At the end of this block, we will be left with only the non-matching non-fungibles. - let mut non_matching_non_fungibles = BTreeSet::<(AssetId, AssetInstance)>::new(); - let non_fungible = mem::replace(&mut self.non_fungible, Default::default()); - non_fungible.into_iter().for_each(|(c, instance)| { - if class == c { - result.saturating_subsume_non_fungible(c, instance); - } else { - non_matching_non_fungibles.insert((c, instance)); - } - }); - self.non_fungible = non_matching_non_fungibles; - }, - x @ MultiAsset::ConcreteFungible {..} | x @ MultiAsset::AbstractFungible {..} => { - let (id, amount) = match x { - MultiAsset::ConcreteFungible { id, amount } => (AssetId::Concrete(id), amount), - MultiAsset::AbstractFungible { id, amount } => (AssetId::Abstract(id), amount), - _ => unreachable!(), - }; - // remove the maxmimum possible up to id/amount from self, add the removed onto - // result - let maybe_value = self.fungible.get(&id); - if let Some(&e) = maybe_value { - if e > amount { - self.fungible.insert(id.clone(), e - amount); - result.saturating_subsume_fungible(id, amount); - } else { - self.fungible.remove(&id); - result.saturating_subsume_fungible(id, e.clone()); - } - } - } - x @ MultiAsset::ConcreteNonFungible {..} | x @ MultiAsset::AbstractNonFungible {..} => { - let (class, instance) = match x { - MultiAsset::ConcreteNonFungible { class, instance } => (AssetId::Concrete(class), instance), - MultiAsset::AbstractNonFungible { class, instance } => (AssetId::Abstract(class), instance), - _ => unreachable!(), - }; - // remove the maxmimum possible up to id/amount from self, add the removed onto - // result - if let Some(entry) = self.non_fungible.take(&(class, instance)) { - result.non_fungible.insert(entry); - } - } - } - } - result - } - - /// Swaps two mutable Assets, without deinitializing either one. - pub fn swapped(&mut self, mut with: Assets) -> Self { - mem::swap(&mut *self, &mut with); - with - } -} - -#[cfg(test)] -mod tests { - use super::*; - #[allow(non_snake_case)] - fn AF(id: u8, amount: u128) -> MultiAsset { - MultiAsset::AbstractFungible { id: vec![id], amount } - } - #[allow(non_snake_case)] - fn ANF(class: u8, instance_id: u128) -> MultiAsset { - MultiAsset::AbstractNonFungible { class: vec![class], instance: AssetInstance::Index { id: instance_id } } - } - #[allow(non_snake_case)] - fn CF(amount: u128) -> MultiAsset { - MultiAsset::ConcreteFungible { id: MultiLocation::Null, amount } - } - #[allow(non_snake_case)] - fn CNF(instance_id: u128) -> MultiAsset { - MultiAsset::ConcreteNonFungible { class: MultiLocation::Null, instance: AssetInstance::Index { id: instance_id } } - } - - fn test_assets() -> Assets { - let mut assets_vec: Vec = Vec::new(); - assets_vec.push(AF(1, 100)); - assets_vec.push(ANF(2, 200)); - assets_vec.push(CF(300)); - assets_vec.push(CNF(400)); - assets_vec.into() - } - - #[test] - fn into_assets_iter_works() { - let assets = test_assets(); - let mut iter = assets.into_assets_iter(); - // Order defined by implementation: CF, AF, CNF, ANF - assert_eq!(Some(CF(300)), iter.next()); - assert_eq!(Some(AF(1, 100)), iter.next()); - assert_eq!(Some(CNF(400)), iter.next()); - assert_eq!(Some(ANF(2, 200)), iter.next()); - assert_eq!(None, iter.next()); - } - - #[test] - fn assets_into_works() { - let mut assets_vec: Vec = Vec::new(); - assets_vec.push(AF(1, 100)); - assets_vec.push(ANF(2, 200)); - assets_vec.push(CF(300)); - assets_vec.push(CNF(400)); - // Push same group of tokens again - assets_vec.push(AF(1, 100)); - assets_vec.push(ANF(2, 200)); - assets_vec.push(CF(300)); - assets_vec.push(CNF(400)); - - let assets: Assets = assets_vec.into(); - let mut iter = assets.into_assets_iter(); - // Fungibles add - assert_eq!(Some(CF(600)), iter.next()); - assert_eq!(Some(AF(1, 200)), iter.next()); - // Non-fungibles collapse - assert_eq!(Some(CNF(400)), iter.next()); - assert_eq!(Some(ANF(2, 200)), iter.next()); - assert_eq!(None, iter.next()); - } - - #[test] - fn min_all_and_none_works() { - let assets = test_assets(); - let none = vec![MultiAsset::None]; - let all = vec![MultiAsset::All]; - - let none_min = assets.min(none.iter()); - assert_eq!(None, none_min.assets_iter().next()); - let all_min = assets.min(all.iter()); - assert!(all_min.assets_iter().eq(assets.assets_iter())); - } - - #[test] - fn min_all_fungible_and_all_non_fungible_works() { - let assets = test_assets(); - let fungible = vec![MultiAsset::AllFungible]; - let non_fungible = vec![MultiAsset::AllNonFungible]; - - let fungible = assets.min(fungible.iter()); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![CF(300), AF(1, 100)]); - let non_fungible = assets.min(non_fungible.iter()); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, vec![CNF(400), ANF(2, 200)]); - } - - #[test] - fn min_all_abstract_works() { - let assets = test_assets(); - let fungible = vec![MultiAsset::AllAbstractFungible { id: vec![1] }]; - let non_fungible = vec![MultiAsset::AllAbstractNonFungible { class: vec![2] }]; - - let fungible = assets.min(fungible.iter()); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![AF(1, 100)]); - let non_fungible = assets.min(non_fungible.iter()); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, vec![ANF(2, 200)]); - } - - #[test] - fn min_all_concrete_works() { - let assets = test_assets(); - let fungible = vec![MultiAsset::AllConcreteFungible { id: MultiLocation::Null }]; - let non_fungible = vec![MultiAsset::AllConcreteNonFungible { class: MultiLocation::Null }]; - - let fungible = assets.min(fungible.iter()); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![CF(300)]); - let non_fungible = assets.min(non_fungible.iter()); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, vec![CNF(400)]); - } - - #[test] - fn min_basic_works() { - let assets1 = test_assets(); - - let mut assets2_vec: Vec = Vec::new(); - // This is less than 100, so it will decrease to 50 - assets2_vec.push(AF(1, 50)); - // This asset does not exist, so not included - assets2_vec.push(ANF(2, 400)); - // This is more then 300, so it should stay at 300 - assets2_vec.push(CF(600)); - // This asset should be included - assets2_vec.push(CNF(400)); - let assets2: Assets = assets2_vec.into(); - - let assets_min = assets1.min(assets2.assets_iter()); - let assets_min = assets_min.into_assets_iter().collect::>(); - assert_eq!(assets_min, vec![CF(300), AF(1, 50), CNF(400)]); - } - - #[test] - fn saturating_take_all_and_none_works() { - let mut assets = test_assets(); - let none = vec![MultiAsset::None]; - let all = vec![MultiAsset::All]; - - let taken_none = assets.saturating_take(none); - assert_eq!(None, taken_none.assets_iter().next()); - let taken_all = assets.saturating_take(all); - // Everything taken - assert_eq!(None, assets.assets_iter().next()); - let all_iter = taken_all.assets_iter(); - assert!(all_iter.eq(test_assets().assets_iter())); - } - - #[test] - fn saturating_take_all_fungible_and_all_non_fungible_works() { - let mut assets = test_assets(); - let fungible = vec![MultiAsset::AllFungible]; - let non_fungible = vec![MultiAsset::AllNonFungible]; - - let fungible = assets.saturating_take(fungible); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![CF(300), AF(1, 100)]); - let non_fungible = assets.saturating_take(non_fungible); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, [CNF(400), ANF(2, 200)]); - // Assets completely drained - assert_eq!(None, assets.assets_iter().next()); - } - - #[test] - fn saturating_take_all_abstract_works() { - let mut assets = test_assets(); - let fungible = vec![MultiAsset::AllAbstractFungible { id: vec![1] }]; - let non_fungible = vec![MultiAsset::AllAbstractNonFungible { class: vec![2] }]; - - let fungible = assets.saturating_take(fungible); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![AF(1, 100)]); - let non_fungible = assets.saturating_take(non_fungible); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, vec![ANF(2, 200)]); - // Assets drained of abstract - let final_assets = assets.assets_iter().collect::>(); - assert_eq!(final_assets, vec![CF(300), CNF(400)]); - } - - #[test] - fn saturating_take_all_concrete_works() { - let mut assets = test_assets(); - let fungible = vec![MultiAsset::AllConcreteFungible { id: MultiLocation::Null }]; - let non_fungible = vec![MultiAsset::AllConcreteNonFungible { class: MultiLocation::Null }]; - - let fungible = assets.saturating_take(fungible); - let fungible = fungible.assets_iter().collect::>(); - assert_eq!(fungible, vec![CF(300)]); - let non_fungible = assets.saturating_take(non_fungible); - let non_fungible = non_fungible.assets_iter().collect::>(); - assert_eq!(non_fungible, vec![CNF(400)]); - // Assets drained of concrete - let assets = assets.assets_iter().collect::>(); - assert_eq!(assets, vec![AF(1, 100), ANF(2, 200)]); - } - - #[test] - fn saturating_take_basic_works() { - let mut assets1 = test_assets(); - - let mut assets2_vec: Vec = Vec::new(); - // We should take 50 - assets2_vec.push(AF(1, 50)); - // This asset should not be taken - assets2_vec.push(ANF(2, 400)); - // This is more then 300, so it takes everything - assets2_vec.push(CF(600)); - // This asset should be taken - assets2_vec.push(CNF(400)); - - let taken = assets1.saturating_take(assets2_vec); - let taken = taken.into_assets_iter().collect::>(); - assert_eq!(taken, vec![CF(300), AF(1, 50), CNF(400)]); - - let assets = assets1.into_assets_iter().collect::>(); - assert_eq!(assets, vec![AF(1, 50), ANF(2, 200)]); - } -} diff --git a/xcm/xcm-executor/src/config.rs b/xcm/xcm-executor/src/config.rs deleted file mode 100644 index 7fa571177fb8..000000000000 --- a/xcm/xcm-executor/src/config.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use xcm::v0::SendXcm; -use frame_support::dispatch::{Dispatchable, Parameter}; -use frame_support::weights::{PostDispatchInfo, GetDispatchInfo}; -use crate::traits::{ - TransactAsset, ConvertOrigin, FilterAssetLocation, InvertLocation, ShouldExecute, WeightTrader, WeightBounds, - OnResponse, -}; - -/// The trait to parametrize the `XcmExecutor`. -pub trait Config { - /// The outer call dispatch type. - type Call: Parameter + Dispatchable + GetDispatchInfo; - - /// How to send an onward XCM message. - type XcmSender: SendXcm; - - /// How to withdraw and deposit an asset. - type AssetTransactor: TransactAsset; - - /// How to get a call origin from a `OriginKind` value. - type OriginConverter: ConvertOrigin<::Origin>; - - /// Combinations of (Location, Asset) pairs which we unilateral trust as reserves. - type IsReserve: FilterAssetLocation; - - /// Combinations of (Location, Asset) pairs which we bilateral trust as teleporters. - type IsTeleporter: FilterAssetLocation; - - /// Means of inverting a location. - type LocationInverter: InvertLocation; - - /// Whether we should execute the given XCM at all. - type Barrier: ShouldExecute; - - /// The means of determining an XCM message's weight. - type Weigher: WeightBounds; - - /// The means of purchasing weight credit for XCM execution. - type Trader: WeightTrader; - - /// What to do when a response of a query is found. - type ResponseHandler: OnResponse; -} diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs deleted file mode 100644 index e7c90f1edbd9..000000000000 --- a/xcm/xcm-executor/src/lib.rs +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] - -use sp_std::{prelude::*, marker::PhantomData}; -use frame_support::{ - ensure, weights::GetDispatchInfo, - dispatch::{Weight, Dispatchable} -}; -use xcm::v0::{ - ExecuteXcm, SendXcm, Error as XcmError, Outcome, - MultiLocation, MultiAsset, Xcm, Order, Response, -}; - -pub mod traits; -use traits::{ - TransactAsset, ConvertOrigin, FilterAssetLocation, InvertLocation, WeightBounds, WeightTrader, - ShouldExecute, OnResponse -}; - -mod assets; -pub use assets::{Assets, AssetId}; -mod config; -pub use config::Config; - -/// The XCM executor. -pub struct XcmExecutor(PhantomData); - -impl ExecuteXcm for XcmExecutor { - fn execute_xcm_in_credit( - origin: MultiLocation, - message: Xcm, - weight_limit: Weight, - mut weight_credit: Weight, - ) -> Outcome { - // TODO: #2841 #HARDENXCM We should identify recursive bombs here and bail. - let mut message = Xcm::::from(message); - let shallow_weight = match Config::Weigher::shallow(&mut message) { - Ok(x) => x, - Err(()) => return Outcome::Error(XcmError::WeightNotComputable), - }; - let deep_weight = match Config::Weigher::deep(&mut message) { - Ok(x) => x, - Err(()) => return Outcome::Error(XcmError::WeightNotComputable), - }; - let maximum_weight = match shallow_weight.checked_add(deep_weight) { - Some(x) => x, - None => return Outcome::Error(XcmError::Overflow), - }; - if maximum_weight > weight_limit { - return Outcome::Error(XcmError::WeightLimitReached(maximum_weight)); - } - let mut trader = Config::Trader::new(); - let result = Self::do_execute_xcm(origin, true, message, &mut weight_credit, Some(shallow_weight), &mut trader); - drop(trader); - match result { - Ok(surplus) => Outcome::Complete(maximum_weight.saturating_sub(surplus)), - // TODO: #2841 #REALWEIGHT We can do better than returning `maximum_weight` here, and we should otherwise - // we'll needlessly be disregarding block execution time. - Err(e) => Outcome::Incomplete(maximum_weight, e), - } - } -} - -impl XcmExecutor { - fn reanchored(mut assets: Assets, dest: &MultiLocation) -> Vec { - let inv_dest = Config::LocationInverter::invert_location(&dest); - assets.prepend_location(&inv_dest); - assets.into_assets_iter().collect::>() - } - - /// Execute the XCM and return the portion of weight of `shallow_weight + deep_weight` that `message` did not use. - /// - /// NOTE: The amount returned must be less than `shallow_weight + deep_weight` of `message`. - fn do_execute_xcm( - origin: MultiLocation, - top_level: bool, - mut message: Xcm, - weight_credit: &mut Weight, - maybe_shallow_weight: Option, - trader: &mut Config::Trader, - ) -> Result { - // This is the weight of everything that cannot be paid for. This basically means all computation - // except any XCM which is behind an Order::BuyExecution. - let shallow_weight = maybe_shallow_weight - .or_else(|| Config::Weigher::shallow(&mut message).ok()) - .ok_or(XcmError::WeightNotComputable)?; - - Config::Barrier::should_execute(&origin, top_level, &message, shallow_weight, weight_credit) - .map_err(|()| XcmError::Barrier)?; - - // The surplus weight, defined as the amount by which `shallow_weight` plus all nested - // `shallow_weight` values (ensuring no double-counting and also known as `deep_weight`) is an - // over-estimate of the actual weight consumed. - let mut total_surplus: Weight = 0; - - let maybe_holding_effects = match (origin.clone(), message) { - (origin, Xcm::WithdrawAsset { assets, effects }) => { - // Take `assets` from the origin account (on-chain) and place in holding. - let mut holding = Assets::default(); - for asset in assets { - ensure!(!asset.is_wildcard(), XcmError::Wildcard); - let withdrawn = Config::AssetTransactor::withdraw_asset(&asset, &origin)?; - holding.saturating_subsume_all(withdrawn); - } - Some((holding, effects)) - } - (origin, Xcm::ReserveAssetDeposit { assets, effects }) => { - // check whether we trust origin to be our reserve location for this asset. - for asset in assets.iter() { - ensure!(!asset.is_wildcard(), XcmError::Wildcard); - // We only trust the origin to send us assets that they identify as their - // sovereign assets. - ensure!(Config::IsReserve::filter_asset_location(asset, &origin), XcmError::UntrustedReserveLocation); - } - Some((Assets::from(assets), effects)) - } - (origin, Xcm::TransferAsset { assets, dest }) => { - // Take `assets` from the origin account (on-chain) and place into dest account. - for asset in assets { - ensure!(!asset.is_wildcard(), XcmError::Wildcard); - Config::AssetTransactor::teleport_asset(&asset, &origin, &dest)?; - } - None - } - (origin, Xcm::TransferReserveAsset { mut assets, dest, effects }) => { - // Take `assets` from the origin account (on-chain) and place into dest account. - let inv_dest = Config::LocationInverter::invert_location(&dest); - for asset in assets.iter_mut() { - ensure!(!asset.is_wildcard(), XcmError::Wildcard); - Config::AssetTransactor::teleport_asset(&asset, &origin, &dest)?; - asset.reanchor(&inv_dest)?; - } - Config::XcmSender::send_xcm(dest, Xcm::ReserveAssetDeposit { assets, effects })?; - None - } - (origin, Xcm::TeleportAsset { assets, effects }) => { - // check whether we trust origin to teleport this asset to us via config trait. - for asset in assets.iter() { - ensure!(!asset.is_wildcard(), XcmError::Wildcard); - // We only trust the origin to send us assets that they identify as their - // sovereign assets. - ensure!(Config::IsTeleporter::filter_asset_location(asset, &origin), XcmError::UntrustedTeleportLocation); - // We should check that the asset can actually be teleported in (for this to be in error, there - // would need to be an accounting violation by one of the trusted chains, so it's unlikely, but we - // don't want to punish a possibly innocent chain/user). - Config::AssetTransactor::can_check_in(&origin, asset)?; - } - for asset in assets.iter() { - Config::AssetTransactor::check_in(&origin, asset); - } - Some((Assets::from(assets), effects)) - } - (origin, Xcm::Transact { origin_type, require_weight_at_most, mut call }) => { - // We assume that the Relay-chain is allowed to use transact on this parachain. - - // TODO: #2841 #TRANSACTFILTER allow the trait to issue filters for the relay-chain - let message_call = call.take_decoded().map_err(|_| XcmError::FailedToDecode)?; - let dispatch_origin = Config::OriginConverter::convert_origin(origin, origin_type) - .map_err(|_| XcmError::BadOrigin)?; - let weight = message_call.get_dispatch_info().weight; - ensure!(weight <= require_weight_at_most, XcmError::TooMuchWeightRequired); - let actual_weight = match message_call.dispatch(dispatch_origin) { - Ok(post_info) => post_info.actual_weight, - Err(error_and_info) => { - // Not much to do with the result as it is. It's up to the parachain to ensure that the - // message makes sense. - error_and_info.post_info.actual_weight - } - }.unwrap_or(weight); - let surplus = weight.saturating_sub(actual_weight); - // Credit any surplus weight that we bought. This should be safe since it's work we - // didn't realise that we didn't have to do. - // It works because we assume that the `Config::Weigher` will always count the `call`'s - // `get_dispatch_info` weight into its `shallow` estimate. - *weight_credit = weight_credit.saturating_add(surplus); - // Do the same for the total surplus, which is reported to the caller and eventually makes its way - // back up the stack to be subtracted from the deep-weight. - total_surplus = total_surplus.saturating_add(surplus); - // Return the overestimated amount so we can adjust our expectations on how much this entire - // execution has taken. - None - } - (origin, Xcm::QueryResponse { query_id, response }) => { - Config::ResponseHandler::on_response(origin, query_id, response); - None - } - (origin, Xcm::RelayedFrom { who, message }) => { - ensure!(who.is_interior(), XcmError::EscalationOfPrivilege); - let mut origin = origin; - origin.append_with(who).map_err(|_| XcmError::MultiLocationFull)?; - let surplus = Self::do_execute_xcm(origin, top_level, *message, weight_credit, None, trader)?; - total_surplus = total_surplus.saturating_add(surplus); - None - } - _ => Err(XcmError::UnhandledXcmMessage)?, // Unhandled XCM message. - }; - - if let Some((mut holding, effects)) = maybe_holding_effects { - for effect in effects.into_iter() { - total_surplus += Self::execute_effects(&origin, &mut holding, effect, trader)?; - } - } - - Ok(total_surplus) - } - - fn execute_effects( - origin: &MultiLocation, - holding: &mut Assets, - effect: Order, - trader: &mut Config::Trader, - ) -> Result { - let mut total_surplus = 0; - match effect { - Order::DepositAsset { assets, dest } => { - let deposited = holding.saturating_take(assets); - for asset in deposited.into_assets_iter() { - Config::AssetTransactor::deposit_asset(&asset, &dest)?; - } - }, - Order::DepositReserveAsset { assets, dest, effects } => { - let deposited = holding.saturating_take(assets); - for asset in deposited.assets_iter() { - Config::AssetTransactor::deposit_asset(&asset, &dest)?; - } - let assets = Self::reanchored(deposited, &dest); - Config::XcmSender::send_xcm(dest, Xcm::ReserveAssetDeposit { assets, effects })?; - }, - Order::InitiateReserveWithdraw { assets, reserve, effects} => { - let assets = Self::reanchored(holding.saturating_take(assets), &reserve); - Config::XcmSender::send_xcm(reserve, Xcm::WithdrawAsset { assets, effects })?; - } - Order::InitiateTeleport { assets, dest, effects} => { - // We must do this first in order to resolve wildcards. - let assets = holding.saturating_take(assets); - for asset in assets.assets_iter() { - Config::AssetTransactor::check_out(&origin, &asset); - } - let assets = Self::reanchored(assets, &dest); - Config::XcmSender::send_xcm(dest, Xcm::TeleportAsset { assets, effects })?; - } - Order::QueryHolding { query_id, dest, assets } => { - let assets = Self::reanchored(holding.min(assets.iter()), &dest); - Config::XcmSender::send_xcm(dest, Xcm::QueryResponse { query_id, response: Response::Assets(assets) })?; - } - Order::BuyExecution { fees, weight, debt, halt_on_error, xcm } => { - // pay for `weight` using up to `fees` of the holding account. - let purchasing_weight = Weight::from(weight.checked_add(debt).ok_or(XcmError::Overflow)?); - let max_fee = holding.try_take(fees).map_err(|()| XcmError::NotHoldingFees)?; - let unspent = trader.buy_weight(purchasing_weight, max_fee)?; - holding.saturating_subsume_all(unspent); - - let mut remaining_weight = weight; - for message in xcm.into_iter() { - match Self::do_execute_xcm(origin.clone(), false, message, &mut remaining_weight, None, trader) { - Err(e) if halt_on_error => return Err(e), - Err(_) => {} - Ok(surplus) => { total_surplus += surplus } - } - } - holding.saturating_subsume(trader.refund_weight(remaining_weight)); - } - _ => return Err(XcmError::UnhandledEffect)?, - } - Ok(total_surplus) - } -} diff --git a/xcm/xcm-executor/src/traits/conversion.rs b/xcm/xcm-executor/src/traits/conversion.rs deleted file mode 100644 index da39c3cecd39..000000000000 --- a/xcm/xcm-executor/src/traits/conversion.rs +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::{prelude::*, result::Result, borrow::Borrow, convert::TryFrom}; -use parity_scale_codec::{Encode, Decode}; -use xcm::v0::{MultiLocation, OriginKind}; - -/// Generic third-party conversion trait. Use this when you don't want to force the user to use default -/// impls of `From` and `Into` for the types you wish to convert between. -/// -/// One of `convert`/`convert_ref` and `reverse`/`reverse_ref` MUST be implemented. If possible, implement -/// `convert_ref`, since this will never result in a clone. Use `convert` when you definitely need to consume -/// the source value. -/// -/// Can be amalgamated into tuples. If any of the tuple elements converts into `Ok(_)` it short circuits. Otherwise returns -/// the `Err(_)` of the last failing conversion (or `Err(())` for ref conversions). -pub trait Convert { - /// Convert from `value` (of type `A`) into an equivalent value of type `B`, `Err` if not possible. - fn convert(value: A) -> Result { Self::convert_ref(&value).map_err(|_| value) } - fn convert_ref(value: impl Borrow) -> Result { - Self::convert(value.borrow().clone()).map_err(|_| ()) - } - /// Convert from `value` (of type `B`) into an equivalent value of type `A`, `Err` if not possible. - fn reverse(value: B) -> Result { Self::reverse_ref(&value).map_err(|_| value) } - fn reverse_ref(value: impl Borrow) -> Result { - Self::reverse(value.borrow().clone()).map_err(|_| ()) - } -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl Convert for Tuple { - fn convert(value: A) -> Result { - for_tuples!( #( - let value = match Tuple::convert(value) { - Ok(result) => return Ok(result), - Err(v) => v, - }; - )* ); - Err(value) - } - fn reverse(value: B) -> Result { - for_tuples!( #( - let value = match Tuple::reverse(value) { - Ok(result) => return Ok(result), - Err(v) => v, - }; - )* ); - Err(value) - } - fn convert_ref(value: impl Borrow) -> Result { - let value = value.borrow(); - for_tuples!( #( - match Tuple::convert_ref(value) { - Ok(result) => return Ok(result), - Err(_) => (), - } - )* ); - Err(()) - } - fn reverse_ref(value: impl Borrow) -> Result { - let value = value.borrow(); - for_tuples!( #( - match Tuple::reverse_ref(value.clone()) { - Ok(result) => return Ok(result), - Err(_) => (), - } - )* ); - Err(()) - } -} - -/// Simple pass-through which implements `BytesConversion` while not doing any conversion. -pub struct Identity; -impl Convert for Identity { - fn convert(value: T) -> Result { Ok(value) } - fn reverse(value: T) -> Result { Ok(value) } -} - -/// Implementation of `Convert` trait using `TryFrom`. -pub struct JustTry; -impl + Clone, Dest: TryFrom + Clone> Convert for JustTry { - fn convert(value: Source) -> Result { - Dest::try_from(value.clone()).map_err(|_| value) - } - fn reverse(value: Dest) -> Result { - Source::try_from(value.clone()).map_err(|_| value) - } -} - -/// Implementation of `Convert<_, Vec>` using the parity scale codec. -pub struct Encoded; -impl Convert> for Encoded { - fn convert_ref(value: impl Borrow) -> Result, ()> { Ok(value.borrow().encode()) } - fn reverse_ref(bytes: impl Borrow>) -> Result { - T::decode(&mut &bytes.borrow()[..]).map_err(|_| ()) - } -} - -/// Implementation of `Convert, _>` using the parity scale codec. -pub struct Decoded; -impl Convert, T> for Decoded { - fn convert_ref(bytes: impl Borrow>) -> Result { - T::decode(&mut &bytes.borrow()[..]).map_err(|_| ()) - } - fn reverse_ref(value: impl Borrow) -> Result, ()> { Ok(value.borrow().encode()) } -} - -/// A convertor trait for origin types. -/// -/// Can be amalgamated into tuples. If any of the tuple elements returns `Ok(_)`, it short circuits. Else, the `Err(_)` -/// of the last tuple item is returned. Each intermediate `Err(_)` might return a different `origin` of type `Origin` -/// which is passed to the next convert item. -/// -/// ```rust -/// # use xcm::v0::{MultiLocation, Junction, OriginKind}; -/// # use xcm_executor::traits::ConvertOrigin; -/// // A convertor that will bump the para id and pass it to the next one. -/// struct BumpParaId; -/// impl ConvertOrigin for BumpParaId { -/// fn convert_origin(origin: MultiLocation, _: OriginKind) -> Result { -/// match origin { -/// MultiLocation::X1(Junction::Parachain(id)) => { -/// Err(MultiLocation::X1(Junction::Parachain(id + 1))) -/// } -/// _ => unreachable!() -/// } -/// } -/// } -/// -/// struct AcceptPara7; -/// impl ConvertOrigin for AcceptPara7 { -/// fn convert_origin(origin: MultiLocation, _: OriginKind) -> Result { -/// match origin { -/// MultiLocation::X1(Junction::Parachain(id)) if id == 7 => { -/// Ok(7) -/// } -/// _ => Err(origin) -/// } -/// } -/// } -/// # fn main() { -/// let origin = MultiLocation::X1(Junction::Parachain(6)); -/// assert!( -/// <(BumpParaId, AcceptPara7) as ConvertOrigin>::convert_origin(origin, OriginKind::Native) -/// .is_ok() -/// ); -/// # } -/// ``` -pub trait ConvertOrigin { - /// Attempt to convert `origin` to the generic `Origin` whilst consuming it. - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl ConvertOrigin for Tuple { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - for_tuples!( #( - let origin = match Tuple::convert_origin(origin, kind) { - Err(o) => o, - r => return r - }; - )* ); - Err(origin) - } -} - -/// Means of inverting a location: given a location which describes a `target` interpreted from the -/// `source`, this will provide the corresponding location which describes the `source`. -pub trait InvertLocation { - fn invert_location(l: &MultiLocation) -> MultiLocation; -} diff --git a/xcm/xcm-executor/src/traits/filter_asset_location.rs b/xcm/xcm-executor/src/traits/filter_asset_location.rs deleted file mode 100644 index c68fcd6ff79a..000000000000 --- a/xcm/xcm-executor/src/traits/filter_asset_location.rs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use xcm::v0::{MultiAsset, MultiLocation}; - -/// Filters assets/location pairs. -/// -/// Can be amalgamated into tuples. If any item returns `true`, it short-circuits, else `false` is returned. -pub trait FilterAssetLocation { - /// A filter to distinguish between asset/location pairs. - fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl FilterAssetLocation for Tuple { - fn filter_asset_location(what: &MultiAsset, origin: &MultiLocation) -> bool { - for_tuples!( #( - if Tuple::filter_asset_location(what, origin) { return true } - )* ); - false - } -} diff --git a/xcm/xcm-executor/src/traits/matches_fungible.rs b/xcm/xcm-executor/src/traits/matches_fungible.rs deleted file mode 100644 index 70383e93966d..000000000000 --- a/xcm/xcm-executor/src/traits/matches_fungible.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use xcm::v0::MultiAsset; - -pub trait MatchesFungible { - fn matches_fungible(a: &MultiAsset) -> Option; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl MatchesFungible for Tuple { - fn matches_fungible(a: &MultiAsset) -> Option { - for_tuples!( #( - match Tuple::matches_fungible(a) { o @ Some(_) => return o, _ => () } - )* ); - None - } -} diff --git a/xcm/xcm-executor/src/traits/matches_fungibles.rs b/xcm/xcm-executor/src/traits/matches_fungibles.rs deleted file mode 100644 index 75de0ae8be44..000000000000 --- a/xcm/xcm-executor/src/traits/matches_fungibles.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use xcm::v0::{MultiAsset, Error as XcmError}; -use sp_std::result; - -/// Errors associated with [`MatchesFungibles`] operation. -pub enum Error { - /// Asset not found. - AssetNotFound, - /// `MultiLocation` to `AccountId` conversion failed. - AccountIdConversionFailed, - /// `u128` amount to currency `Balance` conversion failed. - AmountToBalanceConversionFailed, - /// `MultiLocation` to `AssetId` conversion failed. - AssetIdConversionFailed, -} - -impl From for XcmError { - fn from(e: Error) -> Self { - use XcmError::FailedToTransactAsset; - match e { - Error::AssetNotFound => FailedToTransactAsset("AssetNotFound"), - Error::AccountIdConversionFailed => FailedToTransactAsset("AccountIdConversionFailed"), - Error::AmountToBalanceConversionFailed => FailedToTransactAsset("AmountToBalanceConversionFailed"), - Error::AssetIdConversionFailed => FailedToTransactAsset("AssetIdConversionFailed"), - } - } -} - -pub trait MatchesFungibles { - fn matches_fungibles(a: &MultiAsset) -> result::Result<(AssetId, Balance), Error>; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl< - AssetId: Clone, - Balance: Clone, -> MatchesFungibles for Tuple { - fn matches_fungibles(a: &MultiAsset) -> result::Result<(AssetId, Balance), Error> { - for_tuples!( #( - match Tuple::matches_fungibles(a) { o @ Ok(_) => return o, _ => () } - )* ); - Err(Error::AssetNotFound) - } -} diff --git a/xcm/xcm-executor/src/traits/mod.rs b/xcm/xcm-executor/src/traits/mod.rs deleted file mode 100644 index 483b8746d722..000000000000 --- a/xcm/xcm-executor/src/traits/mod.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Various traits used in configuring the executor. - -mod conversion; -pub use conversion::{InvertLocation, ConvertOrigin, Convert, JustTry, Identity, Encoded, Decoded}; -mod filter_asset_location; -pub use filter_asset_location::{FilterAssetLocation}; -mod matches_fungible; -pub use matches_fungible::{MatchesFungible}; -mod matches_fungibles; -pub use matches_fungibles::{MatchesFungibles, Error}; -mod on_response; -pub use on_response::OnResponse; -mod should_execute; -pub use should_execute::ShouldExecute; -mod transact_asset; -pub use transact_asset::TransactAsset; -mod weight; -pub use weight::{WeightBounds, WeightTrader}; diff --git a/xcm/xcm-executor/src/traits/on_response.rs b/xcm/xcm-executor/src/traits/on_response.rs deleted file mode 100644 index a90586d27c77..000000000000 --- a/xcm/xcm-executor/src/traits/on_response.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use xcm::v0::{Response, MultiLocation}; -use frame_support::weights::Weight; - -/// Define what needs to be done upon receiving a query response. -pub trait OnResponse { - /// Returns `true` if we are expecting a response from `origin` for query `query_id`. - fn expecting_response(origin: &MultiLocation, query_id: u64) -> bool; - /// Handler for receiving a `response` from `origin` relating to `query_id`. - fn on_response(origin: MultiLocation, query_id: u64, response: Response) -> Weight; -} -impl OnResponse for () { - fn expecting_response(_origin: &MultiLocation, _query_id: u64) -> bool { false } - fn on_response(_origin: MultiLocation, _query_id: u64, _response: Response) -> Weight { 0 } -} diff --git a/xcm/xcm-executor/src/traits/should_execute.rs b/xcm/xcm-executor/src/traits/should_execute.rs deleted file mode 100644 index 15f66d5105ee..000000000000 --- a/xcm/xcm-executor/src/traits/should_execute.rs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::result::Result; -use xcm::v0::{Xcm, MultiLocation}; -use frame_support::weights::Weight; - -/// Trait to determine whether the execution engine should actually execute a given XCM. -/// -/// Can be amalgamated into a tuple to have multiple trials. If any of the tuple elements returns `Ok()`, the -/// execution stops. Else, `Err(_)` is returned if all elements reject the message. -pub trait ShouldExecute { - /// Returns `true` if the given `message` may be executed. - /// - /// - `origin`: The origin (sender) of the message. - /// - `top_level`: `true` indicates the initial XCM coming from the `origin`, `false` indicates an embedded XCM - /// executed internally as part of another message or an `Order`. - /// - `message`: The message itself. - /// - `shallow_weight`: The weight of the non-negotiable execution of the message. This does not include any - /// embedded XCMs sat behind mechanisms like `BuyExecution` which would need to answer for their own weight. - /// - `weight_credit`: The pre-established amount of weight that the system has determined this message may utilise - /// in its execution. Typically non-zero only because of prior fee payment, but could in principle be due to other - /// factors. - fn should_execute( - origin: &MultiLocation, - top_level: bool, - message: &Xcm, - shallow_weight: Weight, - weight_credit: &mut Weight, - ) -> Result<(), ()>; -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl ShouldExecute for Tuple { - fn should_execute( - origin: &MultiLocation, - top_level: bool, - message: &Xcm, - shallow_weight: Weight, - weight_credit: &mut Weight, - ) -> Result<(), ()> { - for_tuples!( #( - match Tuple::should_execute(origin, top_level, message, shallow_weight, weight_credit) { - Ok(()) => return Ok(()), - _ => (), - } - )* ); - Err(()) - } -} diff --git a/xcm/xcm-executor/src/traits/transact_asset.rs b/xcm/xcm-executor/src/traits/transact_asset.rs deleted file mode 100644 index 795bb0f49bd4..000000000000 --- a/xcm/xcm-executor/src/traits/transact_asset.rs +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::result::Result; -use xcm::v0::{Error as XcmError, Result as XcmResult, MultiAsset, MultiLocation}; -use crate::Assets; - -/// Facility for asset transacting. -/// -/// This should work with as many asset/location combinations as possible. Locations to support may include non-account -/// locations such as a `MultiLocation::X1(Junction::Parachain)`. Different chains may handle them in different ways. -/// -/// Can be amalgamated as a tuple of items that implement this trait. In such executions, if any of the transactors -/// returns `Ok(())`, then it will short circuit. Else, execution is passed to the next transactor. -pub trait TransactAsset { - /// Ensure that `check_in` will result in `Ok`. - /// - /// When composed as a tuple, all type-items are called and at least one must result in `Ok`. - fn can_check_in(_origin: &MultiLocation, _what: &MultiAsset) -> XcmResult { - Err(XcmError::Unimplemented) - } - - /// An asset has been teleported in from the given origin. This should do whatever housekeeping is needed. - /// - /// NOTE: This will make only a best-effort at bookkeeping. The caller should ensure that `can_check_in` has - /// returned with `Ok` in order to guarantee that this operation proceeds properly. - /// - /// Implementation note: In general this will do one of two things: On chains where the asset is native, - /// it will reduce the assets from a special "teleported" account so that a) total-issuance is preserved; - /// and b) to ensure that no more assets can be teleported in than were teleported out overall (this should - /// not be needed if the teleporting chains are to be trusted, but better to be safe than sorry). On chains - /// where the asset is not native then it will generally just be a no-op. - /// - /// When composed as a tuple, all type-items are called. It is up to the implementor that there exists no - /// value for `_what` which can cause side-effects for more than one of the type-items. - fn check_in(_origin: &MultiLocation, _what: &MultiAsset) {} - - /// An asset has been teleported out to the given destination. This should do whatever housekeeping is needed. - /// - /// Implementation note: In general this will do one of two things: On chains where the asset is native, - /// it will increase the assets in a special "teleported" account so that a) total-issuance is preserved; and - /// b) to ensure that no more assets can be teleported in than were teleported out overall (this should not - /// be needed if the teleporting chains are to be trusted, but better to be safe than sorry). On chains where - /// the asset is not native then it will generally just be a no-op. - /// - /// When composed as a tuple, all type-items are called. It is up to the implementor that there exists no - /// value for `_what` which can cause side-effects for more than one of the type-items. - fn check_out(_origin: &MultiLocation, _what: &MultiAsset) {} - - /// Deposit the `what` asset into the account of `who`. - /// - /// Implementations should return `XcmError::FailedToTransactAsset` if deposit failed. - fn deposit_asset(_what: &MultiAsset, _who: &MultiLocation) -> XcmResult { - Err(XcmError::Unimplemented) - } - - /// Withdraw the given asset from the consensus system. Return the actual asset(s) withdrawn. In - /// the case of `what` being a wildcard, this may be something more specific. - /// - /// Implementations should return `XcmError::FailedToTransactAsset` if withdraw failed. - fn withdraw_asset(_what: &MultiAsset, _who: &MultiLocation) -> Result { - Err(XcmError::Unimplemented) - } - - /// Move an `asset` `from` one location in `to` another location. - /// - /// Returns `XcmError::FailedToTransactAsset` if transfer failed. - fn transfer_asset(_asset: &MultiAsset, _from: &MultiLocation, _to: &MultiLocation) -> Result { - Err(XcmError::Unimplemented) - } - - /// Move an `asset` `from` one location in `to` another location. - /// - /// Attempts to use `transfer_asset` and if not available then falls back to using a two-part withdraw/deposit. - fn teleport_asset(asset: &MultiAsset, from: &MultiLocation, to: &MultiLocation) -> Result { - match Self::transfer_asset(asset, from, to) { - Err(XcmError::Unimplemented) => { - let assets = Self::withdraw_asset(asset, from)?; - // Not a very forgiving attitude; once we implement roll-backs then it'll be nicer. - Self::deposit_asset(asset, to)?; - Ok(assets) - } - result => result - } - } -} - -#[impl_trait_for_tuples::impl_for_tuples(30)] -impl TransactAsset for Tuple { - fn can_check_in(origin: &MultiLocation, what: &MultiAsset) -> XcmResult { - for_tuples!( #( - match Tuple::can_check_in(origin, what) { - Err(XcmError::AssetNotFound) => (), - r => return r, - } - )* ); - Err(XcmError::AssetNotFound) - } - fn check_in(origin: &MultiLocation, what: &MultiAsset) { - for_tuples!( #( - Tuple::check_in(origin, what); - )* ); - } - fn check_out(dest: &MultiLocation, what: &MultiAsset) { - for_tuples!( #( - Tuple::check_out(dest, what); - )* ); - } - fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> XcmResult { - for_tuples!( #( - match Tuple::deposit_asset(what, who) { o @ Ok(_) => return o, _ => () } - )* ); - Err(XcmError::Unimplemented) - } - fn withdraw_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - for_tuples!( #( - match Tuple::withdraw_asset(what, who) { o @ Ok(_) => return o, _ => () } - )* ); - Err(XcmError::Unimplemented) - } - fn transfer_asset(what: &MultiAsset, from: &MultiLocation, to: &MultiLocation) -> Result { - for_tuples!( #( - match Tuple::transfer_asset(what, from, to) { o @ Ok(_) => return o, _ => () } - )* ); - Err(XcmError::Unimplemented) - } -} diff --git a/xcm/xcm-executor/src/traits/weight.rs b/xcm/xcm-executor/src/traits/weight.rs deleted file mode 100644 index abfd9ee07f14..000000000000 --- a/xcm/xcm-executor/src/traits/weight.rs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use sp_std::result::Result; -use xcm::v0::{Xcm, MultiAsset, MultiLocation, Error}; -use frame_support::weights::Weight; -use crate::Assets; - -/// Determine the weight of an XCM message. -pub trait WeightBounds { - /// Return the minimum amount of weight that an attempted execution of this message would definitely - /// consume. - /// - /// This is useful to gauge how many fees should be paid up front to begin execution of the message. - /// It is not useful for determining whether execution should begin lest it result in surpassing weight - /// limits - in that case `deep` is the function to use. - fn shallow(message: &mut Xcm) -> Result; - - /// Return the deep amount of weight, over `shallow` that complete, successful and worst-case execution of - /// `message` would incur. - /// - /// This is perhaps overly pessimistic for determining how many fees should be paid for up-front since - /// fee payment (or any other way of offsetting the execution costs such as an voucher-style NFT) may - /// happen in stages throughout execution of the XCM. - /// - /// A reminder: if it is possible that `message` may have alternative means of successful completion - /// (perhaps a conditional path), then the *worst case* weight must be reported. - /// - /// This is guaranteed equal to the eventual sum of all `shallow` XCM messages that get executed through - /// any internal effects. Inner XCM messages may be executed by: - /// - Order::BuyExecution - fn deep(message: &mut Xcm) -> Result; - - /// Return the total weight for executing `message`. - fn weight(message: &mut Xcm) -> Result { - Self::shallow(message)?.checked_add(Self::deep(message)?).ok_or(()) - } -} - -/// A means of getting approximate weight consumption for a given destination message executor and a -/// message. -pub trait UniversalWeigher { - /// Get the upper limit of weight required for `dest` to execute `message`. - fn weigh(dest: MultiLocation, message: Xcm<()>) -> Result; -} - -/// Charge for weight in order to execute XCM. -pub trait WeightTrader: Sized { - /// Create a new trader instance. - fn new() -> Self; - - /// Purchase execution weight credit in return for up to a given `fee`. If less of the fee is required - /// then the surplus is returned. If the `fee` cannot be used to pay for the `weight`, then an error is - /// returned. - fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result; - - /// Attempt a refund of `weight` into some asset. The caller does not guarantee that the weight was - /// purchased using `buy_weight`. - /// - /// Default implementation refunds nothing. - fn refund_weight(&mut self, _weight: Weight) -> MultiAsset { MultiAsset::None } -} - -impl WeightTrader for () { - fn new() -> Self { () } - fn buy_weight(&mut self, _: Weight, _: Assets) -> Result { - Err(Error::Unimplemented) - } -}